<?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>222703</bug_id>
          
          <creation_ts>2021-03-03 17:48:38 -0800</creation_ts>
          <short_desc>[Python 3] Update wpt/tools</short_desc>
          <delta_ts>2021-07-05 14:58:10 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>227255</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226703</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226746</see_also>
          <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>222188</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gsnedders</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735624</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-03 17:48:38 -0800</bug_when>
    <thetext>Last update was back in May of 2020.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735632</commentid>
    <comment_count>1</comment_count>
      <attachid>422167</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-03 17:54:01 -0800</bug_when>
    <thetext>Created attachment 422167
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735634</commentid>
    <comment_count>2</comment_count>
      <attachid>422169</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-03 18:00:11 -0800</bug_when>
    <thetext>Created attachment 422169
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735642</commentid>
    <comment_count>3</comment_count>
      <attachid>422172</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-03 19:07:37 -0800</bug_when>
    <thetext>Created attachment 422172
Patch for webkitpy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735643</commentid>
    <comment_count>4</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-03 19:14:14 -0800</bug_when>
    <thetext>I verified that the code in an updated wpt/tools directory runs with Windows + Python 3. There is still an outstanding issue around a config.json for the tests but that problem is in webkitpy not wpt/tools.

I used this commit https://github.com/web-platform-tests/wpt/commit/5c496d309c2d31c9867ef7a5023a6f7021ba0751 from 2020-03-03 which has two fixes for Windows. That or anything later should be fine.

Looks like the EWS can&apos;t handle the patch though. This might have to do with renames since I had to update my git config, diff.renameLimit and merge.renameLimit, to output the patch at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738326</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-10 17:49:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/75293158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774857</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-07-05 14:58:10 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 227255 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422167</attachid>
            <date>2021-03-03 17:54:01 -0800</date>
            <delta_ts>2021-03-03 18:00:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-222703.diff</filename>
            <type>text/plain</type>
            <size>9998898</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzLy5jb3ZlcmFnZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uM2RhMTRhZDNiNzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy8uY292ZXJhZ2VyYwpAQCAtMCwwICsx
LDI5IEBACitbcnVuXQorYnJhbmNoID0gVHJ1ZQorcGFyYWxsZWwgPSBUcnVlCitvbWl0ID0KKyAg
aHRtbDVsaWIvKgorICBweS8qCisgIHB5dGVzdC8qCisgIHB5d2Vic29ja2V0LyoKKyAgc2l4LyoK
KyAgd2ViZHJpdmVyLyoKKyAgKi9zaXRlLXBhY2thZ2VzLyoKKyAgKi9saWJfcHlweS8qCisgIHdw
dC8qCisgIHdwdHJ1bm5lci8qCisgICovdGVzdHMvKgorICBxdWljLyoKKworW3BhdGhzXQoraHRt
bDVsaWIgPQorICBodG1sNWxpYi9odG1sNWxpYgorICAudG94LyoqL3NpdGUtcGFja2FnZXMvaHRt
bDVsaWIKKworcHl0ZXN0ID0KKyAgcHl0ZXN0L19weXRlc3QKKyAgLnRveC8qKi9zaXRlLXBhY2th
Z2VzL19weXRlc3QKKworcHkgPQorICBweS9weQorICAudG94LyoqL3NpdGUtcGFja2FnZXMvcHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvLmdpdGF0dHJpYnV0ZXMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzLy5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDZhMmM4N2E1ZTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy8uZ2l0YXR0cmlidXRlcwpA
QCAtMCwwICsxIEBACitsaW50L3Rlc3RzL2R1bW15LyoqCS10ZXh0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLy5naXRpZ25vcmUg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLy5naXRp
Z25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNTlmOTQ4ZmRi
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxNyBAQAorKiMKKy5jb3ZlcmFn
ZQorLmNvdmVyYWdlLioKK2h0bWxjb3YvCitjb3ZlcmFnZS54bWwKKy5jYWNoZS8KKy5oeXBvdGhl
c2lzLworKi5weVtjb10KKyouc3dbcG9dCisqfgorXCMqCitydW5uZXIvTUFOSUZFU1QuanNvbgor
CisjIFdBVkUKKyF3YXZlL3d3dy9saWIKKyF3YXZlL2V4cG9ydC9saWIKKyF3YXZlL2V4cG9ydC9j
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvTUVUQS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL01FVEEueW1sCmluZGV4IDNlYjg5M2Y0ZTY1Yy4uYmI4ZWQwMzlkYzM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNSArMSw0IEBACiBzdWdnZXN0ZWRfcmV2aWV3ZXJz
OgogICAtIGpncmFoYW0KLSAgLSBIZXhjbGVzCiAgIC0gc3RlcGhlbm1jZ3J1ZXIKICAgLSBMdWtl
WmllbGluc2tpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkKaW5kZXggM2EzZTQ4
N2E4M2RlLi42YjI0MGU1MmIyMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LmtleQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5r
ZXkKQEAgLTEsMzAgKzEsMzAgQEAKIC0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0t
LS0KLU1JSUZIREJPQmdrcWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSVJ1N3Nj
SStWNVpRQ0FnZ0EKLU1Bd0dDQ3FHU0liM0RRSUpCUUF3RkFZSUtvWklodmNOQXdjRUNORHBqbmNv
TWVrMEJJSUV5TmRTRXplR2dGVGMKLTJtZGxqc3BnMjAyOEVGcEQ2d0FLN1hiY29BOFdITjgxcWtK
QTRhNFhRUUZncDRSSUQ3RFFjOTVFTHM0YXdNTHUKLVNrWTE5RjRWRVRyUzBSdmpQWUlRa2NPUU11
UGljVkdybUg5Y0RwdFh2K0lNMjRCdUJYZmo2OTJCMVpOaEU4R2QKLXRIbFJwU2lTZ2E3amExNjM1
bUo0bGNac05KSGlEVnBFSS9hSXkrWHkvRzVoSEZjZytTMjJ3Nzk3dHVLeEcyTVoKLVBHOW1uSTFT
L1BGMUtaYmJKSlplWkUydTYwR3hHUVlpdjNzT1VPZDR0TlpxTUx0Mk56bzBKcmpRSkN3eEZnRksK
LTdFelJyTjQxRzJJdVN1U01Tcm45Q0VBRGJ2QjFoZ0RXRWdjOHRXNGpFMjhkOU5ob2lJK0x3enEz
M1dCTjZ0eUcKLW9KbHkzNnc4SjBWTkJxaHFRU0x6d0FRK0NoVDIvYTU5R0o0UjVMdkZDUDJBeERH
a2FnMWlONUZkUTk2YUlvQ0EKLXpBZXZIdERObUd2ajQ0cXBrQWlSbEFDaUZqWVhLN3ZSOVppQitD
SWhlMGR4bTlrWUNjZTlTMkR1MzU0MWEvL1AKLTJZdGZqU2NWM21tYTIxZSt4VU1QemdOUitwOE85
T1kyRFNNaTNtNTZjWEZmUjVlb0tBRnZCVWFsT0JqSnU5V3AKLWs5ZHBMWmxiRThxQmQ4cGxFam5x
M2llMytEU2tXT2FxOEtJNE9lQmEwWnlFNmtSbkMrMnFZUTJhYWZHcS95NWQKLW84Vi9QOXhwdlpK
ZkgvUXNGcGFRTTlUUDNiaUk4d2ROMXcrdVU1WlgvZzl6cGdrVlNCUjRqVldiam1TZHBjTjgKLUlk
Vk5Jb2hMWkR0U1NHREEreXpHK1QvM3Rsb1M3dUIzZElRZ2pxSU5jSnFwM2w2VzhjaGJqWm9lMldE
QUpINnUKLUYrVnRoQ284MmRUZ0Rwbit5UFdzS05UeUpjOUI0YmJDZ0hrWkNqWDBFTmtzSnQyMk9p
OUJxMit1Q1U5UmRLWjgKLUt4TDM3T2xxQXdMdkRnOFhnVi9veDNsemNNbVNSL1kxeFk1WGRVUzRj
cnNYY1NaTXRha0VIbFl0OVUyczhTc0gKLVdxZGlVcmRUQzdZSkhSZUovRmhvb0VvOVRrNGJmeEp0
U2VPSk12ekhrRTE0alJXL292eTF0WUNweUpJN1ErRHkKLTl6KytoaS9EdU51c1dvSGp3M0tMT3RQ
U1Qyby9ZZHVCUEdCSzg4c1BFVlVJWlhkSi9KTGUxQ1FHYisxSXVLeHcKLVhBRGhOTUlHVzMxaTV1
b2FNN2VWZ1JNNW9aNkZVaEszNTZ2QmdKVnUzOXFTdEJ1YzhkcTE5bHUwaU9mZ3RWV1kKLVdFUWQ3
UHV3Sm5acmNwejZZaVBIVHJ0Q0RBcFBUNTNSbnVZSmdQbERHa1cveVVralprOFF6Y2c0eWVzNHpa
YVQKLVprdHMvQmlHdFE0YmdUa09adHdFOHhDSStOWlRuaFd5SXlNayt1czJmU3ZKSkdFc25CdEo4
UE81WHdvWnZIeFEKLURNUDRNb2FadDEvVFY1VFhNWWVsL3NodnBDV0liS0ZWRzlucGszYm9tQzJB
cFVKYk5scnZPS3J4UzV2YVZkMWkKLWJaWGlnWVpjeW5EWVNzWTRSSThqSzNuU3AydVI4QzRZQ2FC
VTF3czB1ajBaQXZZK1N4dVlTUVRFczFlUWQwcmEKLVFNT2xobVVBeWRIa1Ara1QyelVUWWE0dUZu
MkYvS01oUS9yMm5BdHBnRy93VDZnWWVPejViaThiR2w2K2RmdlUKLTlIVDZKV0ZOT0thRlZUVnZs
dTMyVkdwZTRuYlVzelZRbGdYTHUrMXRITDRLMHlSZ0xMNm5HcExIMzFVNE05WVYKLVQrYUpHakNC
RXNINTZpcE1NeTBLZS9OZkp5ZndHK0hFa2c5RVhLK3JlKzF6c200dldJNUFydTRlQXBOM0ltK04K
LVRuSUU3eTVPWkNRRVlnb2xab3R6dlBvWERBZXNvZlJwdDJSb0FNTklML3BSWlpHS0crNmJvanEw
QUlyS2k2cnAKLTZ5Mm5GM05qU2pHQk04SzJGSXNqMk9SY2hiR3p3M3p1NFFPQnNNZkxPMzIvU2hl
TWhheXRxUFZ0M1Brc3M1eGIKLWl2QkkxRk5WTWNHSllBOVMrNFpGM1E9PQorTUlJRkhEQk9CZ2tx
aGtpRzl3MEJCUTB3UVRBcEJna3Foa2lHOXcwQkJRd3dIQVFJNjY2byt0bUJnWFlDQWdnQQorTUF3
R0NDcUdTSWIzRFFJSkJRQXdGQVlJS29aSWh2Y05Bd2NFQ0lMWmdoMEtwRTlNQklJRXlDZ01DQ0Zr
U2xEbQord1BEcFEwckZDeVF5QWNkUDVITW5MTS9XKzJ6NVRZRHFkaHRMZCtYcUQybEdxcjRsQ2Qz
M0NvRHViUnhab1UvdAorVlEwVHVEUWNmaEN6OEhHNm5YTXBhaTJORHJjNU90MjlmVkZkTUZrazhu
YTE3UmhNS1VjNkdhbi9URGkrRTRpOAorZTJZYWtKNUpnYUJVRkJmL2p5cUpmTHNZSmV6TkZobjUr
bkNzeitLYlpCb2h0MkIrVy9ycS9GQVV6d1BHSitZYworOEoyZ1ZjdVJVY3RYd1M0N3lJOGFrbFho
SWh3bUw4OUlvYWQzcnB5cGVEWDN0dTVUZUcybnYvZDF1VjMvRm5nQworLzE4YjRlSno2ZHBxZFRW
TjVVb2EzTmpIalk4YThtY0J2V0tCTDZtV3kyZFRWbDlXOHdkZ3RWa3ZjMFBzRjNQdQorb0p5NW9l
V2hQNmRTcUF2REhURFhhMzhydDNIOUlSbVRzSVhkMFZWT0loRmpnOHREUVRCUi9DeUpLcDRKTzhP
eQoreS9SR1pzZHFjTzAzdWpvbFdPbERZNFBpOGU3SnBISysxa3loR09UaW1pLzlKdVd0aVNwNDBn
S0R6eWxMMW9hdworaHIxVWFQSGwva0EvZ0pncERCS1QrUFhRdDJHbTlxamU5K0IvVTZ6ajMxYlZk
MHIxUzBxTWxYejgxdC9LK0JjSAordS81TmFac0RYeUU4cnVmeXhBSFBCS1B4WE1aT05HN3k2RWJG
ODY4RUhVckNBS2xFbGZIdFRudlAvazY4VjNlSAorR25WenNJZDhlaXJ6dXRyUmR1Z1BYUzdQZzFV
ajFDTDZHYThpYTlNZkVJYlN4L2cyRlE5U01udXJYVmVXdjFxTQordU1OWmJSWlVra0pEOFQvVnFC
N2V6ckk1NTNpVHFaRkdyNmZRMGR5WEJTMG0xcGhQU2ttUGNxRTQyc1lDSVpjeQorS1pHWWVXUzFM
a0ZSb1R4b0F3UlM4Y2YxNE5qbW9HK0FieTRpeUIzUWlNRE9tc3lsWkRGMHZzWWVVYlVJa3h5egor
R25TbjJMYVZwVDNaZXV6aUxuTm4zSmFlSXk5NDZqRWdaRVR2Q0RydXVyVjVBb0FiOXBYRzJYdXlz
ZXZ4L0F1VgorT3d6ejgyUHFHMzA4a3E2eGhjR05LK3Y5RlJiYWdIYUdaNUVHK2lWVVRqTjM0OE5q
SklyaURWZHJIMDZmQnFlKworVUZEOWZBbk4vS2o0ZElKS1VDdW40VVppejJqSGVObkFta0x3T1pu
L2VUSzFMYlVybVQwSiszZXVwYUY3enp4bworQ2VkbkFSekh2QWlFVkFYOFdkNURhdUlqY3plc2pk
ck85eXM3ZFRNZVpleVY1dC9zOFc2NlRCNnRWRElRd1RJcAorM3NrZGhidzIyekkybGNyRGhaYmJZ
aHdPOVI2ZDRsaUVOVVovVzVJU0xEWG4rdzhrcXFoMXFYb0U4dlIwbHhweQorT3oyN2tnNURCcXlV
Zmx4OTlId0xqOGVwTU5wR3plcE1BZUZYVGQrZ0xGS2s3Z1d0VS81bUpJdFRFZkJ1OElpaAorRlQz
L2Vlc0NseHh6Qm0yTWsxdml2L2lLc3BUSDkyK21LRXoybmc2ak9OV3hIWGtmdXhOV2U0d1grS21P
N3M3UAorcGx6eG5icjJUbE5UZXdidVlxeUtNd2U5S09pWG9zZGZ4VWtKcTZEOFIwYmYrQTY5TS9k
Z2dPN0JWZHhOZkY3MQorK3hkZnFqV2psbC81OGxRMTVLZGx5Y2ZWbFlqNmlEdksxQ2hySzRVSDJt
eUdibWhUaElJdGV6UG04T280aTNJNgoraVBrOG5zL0JxZkZIMnJhRTdjdzdHM1VnNmNFSnJjOE9H
NGMxbWZCdUhQQWVEckNXTnU3dEVxd0tyR0dKVkEzYgorMUdpQm83Mno1WFZPaVA3bGt1NzA4WkVm
cnpoMlVHdVN2eDBnYnBXM2FNRE5uVnEyTzZldUlxdVp1Z2Vld2NrcQorMk94OUMxdkFESUE4dWdS
ZEhiU1ZSUUUzM1lpVTFRUzNNdlE5VFlXL1p2N0J1dWhyZGsyUzFXTFJwa1d3K3FSNgorNjJFRkZB
dzZ3anBLL3ZjaUd1Y3JWOEd5eWJkeFBGcVpQTXRRa2doYU9QVU84NFFzeDJyWlhBUis0L2dadUhH
bQordjJMM3RZU0RFbVErNmtFeW5XdFgvdz09CiAtLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBL
RVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCmluZGV4IGU5YjVmZGE1
NWMzOC4uZmNjOTc3YmUwNTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVt
CkBAIC0xLDE2ICsxLDE2IEBACiAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSkFoekND
UDIrZ0F3SUJBZ0lERGV1Zk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwK
LVlpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlNREV3TVRJd01ETXdORGRhRncweU1URXdNVEl3
TURNd05EZGEKK01JSkFoekNDUDIrZ0F3SUJBZ0lEQmxWRk1BMEdDU3FHU0liM0RRRUJDd1VBTUIw
eEd6QVpCZ05WQkFNTUVuZGwKK1lpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlNVEF4TVRJeE5q
RXpNamhhRncweU1qQXhNVEl4TmpFek1qaGEKIE1CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBa
bTl5YlMxMFpYTjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUIKLUJRQURnZ0VQQURDQ0FRb0NnZ0VC
QU9Ha1Avd0R1WmFCNUYrZHlETkQzeWVnUjArdUEvUHNQektjcEFMd2pyNkcKLUFrRVdTcU9wMUg1
cEx0VjBMK1Z1RkpNN2s5T2hpaHJYOWdRRjNORzJvVmlVbzhGWTB1OTBOUVVPRk9wS2Fpb2wKLXBR
RXRDMG5XN1JKTUU5aTZPcUhwOG9FVkVVbVROM3NnWG5tTHpuTy9FVnBianM3Z0VWOGJkdklVZWcy
MjRJOUQKLUx5N1FjRjkwR0hXSGpwOVNJN0ViT0RoYkU3b0IwN2w1NS9kZFRzakNRRTMyS0FkekxN
THJvd0l2Zk1IdEdJRzcKLURLdEV6TTRtdVhhSEpJbURKZGlYTGR2NjRabGJwd2p3cWhFek5CZGZH
aFBuRXFDcURLMC9HcW41VmZTK1V6Y0QKLS91UXJNV3NvTC9vVXJ3VHp0azJ1SSt6Y0tZQ1hvb0ts
RXZ6QVFtTmxYbWNDQXdFQUFhT0NQYzR3Z2ozS01Bd0cKLUExVWRFd1FGTUFNQkFmOHdIUVlEVlIw
T0JCWUVGSUZ1d0JWQlFIY1BERG9laSsrbHRDTTBLdFFQTUVjR0ExVWQKLUl3UkFNRDZBRklGdXdC
VkJRSGNQRERvZWkrK2x0Q00wS3RRUG9TR2tIekFkTVJzd0dRWURWUVFEREJKM1pXSXQKLWNHeGhk
R1p2Y20wdGRHVnpkSE9DQXczcm56QUxCZ05WSFE4RUJBTUNBZ1F3Z2grYkJnTlZIUjRFZ2grU01J
SWYKK0JRQURnZ0VQQURDQ0FRb0NnZ0VCQUtsQWMrNTJRa0ZHczN4alQwT2lUM3Q3SGFqcUZxZWxO
cDV0b1ZaZkwvU0YKK2NYcXZobGR2V3psS3MzWFc0K09LbkdRUDFuQjdxbVpaOEdqU1kwMk5obzM2
VnErWWR6bUhJSFlQWmNBbGZtTk8KKzZpWS9uY2E3QzlNRUlWSnZ4UXNHL0M1WlVUa0tKOTNpRGVo
R2F5NVlGOHdpSWIrazZjbWFWNWNEcytvQndtd3UKK1gzaHhzRGpPa2xVWUNWWTRXdmQ0ZlUvelIv
TGRJM1FaVEFsTmE0ZUx1N3YvOHowdm84dkc3VDhWUzA5bWM2ZWgKK0JqQjB4MUw3WEU2bis0djNn
R0U4UmJ4ZWFJcFpidjh2VldLMUxMTFEwMWdDT2lORmp1dUQzVmNCcW5aVGJWOS8KK3Y0TXFIclBG
ZlptMU14ZXNCL2t5Yk1UdmU0WTZQalQxVTN6Z0pzclYwVWNDQXdFQUFhT0NQYzR3Z2ozS01Bd0cK
K0ExVWRFd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGTnh0aldMZFZKaklZQmZDMDFHenYzTmJYSkM1
TUVjR0ExVWQKK0l3UkFNRDZBRk54dGpXTGRWSmpJWUJmQzAxR3p2M05iWEpDNW9TR2tIekFkTVJz
d0dRWURWUVFEREJKM1pXSXQKK2NHeGhkR1p2Y20wdGRHVnpkSE9DQXdaVlJUQUxCZ05WSFE4RUJB
TUNBZ1F3Z2grYkJnTlZIUjRFZ2grU01JSWYKIGpxQ0NING93RTRJUmQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0Y0SVZiM0E0TG5kbFlpMXdiR0YwWm05eWJTNTAKIFpYTjBNQmVDRlc5d055NTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQVhnaFZ2Y0RrdWQyVmlMWEJzWVhSbWIzSnQKIExuUmxjM1F3RjRJ
VmIzQTBMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmVDRlc1dmRDMTNaV0l0Y0d4aGRHWnYKQEAg
LTMzNywxMSArMzM3LDExIEBAIGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFzZG1VdE5t
eGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHIKIGNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHkKIGNXaDJNamhoTG5odUxTMXVPR28y
WkhNMU0yeDNkMnR5Y1doMk1qaGhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjAKIGdrVjRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTQKLVlT
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUJW
MEZkZDQKLW1CWWNwZXBJRHN3MFJnOWtWQTF4cnVzdUNCdkpCbUhFQWlCVDBCalB1UHFLbVZuU0hl
S0tOOXlQYitNb1pwVlYKLXA5c1lLMWRzdmc3azdQczluL2tVUjVEYVlYRlMwTDZDMTNhaTliOEtT
WGJmY0lwT1JqN2todHczcTJjN21YQlQKLVdKRzc3M3JsOWQ0SktnelVIeE14T3NzcVdnRnlWREk2
aVZJSUt0d1RjUGdrd2pJa3ptU0RYbXpLRzNVM3krRzEKLXV1c1g4T0lUejJZYm1FL2dQVU5Fd1VV
Yjh3RzJZdlN4bHFsNW9UbHRBbU8wQjdPTEt4VEo2eGI4MC8zTld0MTQKLUExcGU3NDJwN2Z6MkVD
UEJ4L3dIanZiRmYyamtNZ3RSeldLMStBOWFYQUpuWm5aaEtCZlcvTU5QNUo0QWlSblkKLXNzVkUr
cnA4cjhSZEhYZz0KK1lTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSktvWklodmNO
QVFFTEJRQURnZ0VCQUhPR3AySmkKK3hLdnZxTnVjTDJncEZCSXBzVDhhYm1LQkxCbTRMc1NCR0VG
UHkxMmZEenRrV0JWVEVOL1dpeUhSTDkzUFBubjIKK1lGbjMvalN1QWdxMExrU3g4VkIvWG4yQ1pn
WTkrV3pMNCsrR042STZrWUF1dXZHNC9QNml3d0RDd1g3eTJjb0QKK0Q3NUU0V1ZWVGpFc0tHMnZS
aVZXemNjbWcvQlRtdlhRSlU4RFNQaHpQUXRVL0Q4cUhVSWUvTWNIbUVXOXN4cEcKK2t0SlNYcUFl
MFZudndQWGhKL3NjT2l5SmFYdkM4bVJqTTUwblVHbnkwbjlOeXdsdG0zb3hPQVZBWklhaFphN2cK
K0tNblJ5d29qTnFsa2NjWGVIQ2pIMXdYT2h6dXlRWCtNdnZCcXE5Njh0dElWL2hiVVhoK0QvU3U5
TTBxUWNsYkEKKzA5dmRYZWxkK3JTeFA4cz0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2VydHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkODcxOTExNGYxZjIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9SRUFETUUubWQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2Nh
Y2VydC5rZXkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NvbmZpZy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRz
L3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRz
L3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCA5NTdkZmIyMzRmOGIuLmI2OWVkMmE5OTlkNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5r
ZXkKQEAgLTEsMjggKzEsMjggQEAKIC0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQotTUlJRXZn
SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFDcnU4djBINUthMk5Q
RwotV1ZWNVkwaDlFUi85eW5DTExTbXkvakhqY3ZZdHdOcEFmU2dIdW0xQ2JXemU5eUU3Yk5hUTlG
WGJBMzNWM2NuaAotMGd6VXlPSzgxeXhjVTVWa0tweU5KY1lGQi9wak9NQjY2clMyUURSMlBFckpU
ZHVoMXkzc1g2SmJLMWFBUThhYwotU25GWE16MkwyOHN3bVhnbUZZbUN4V0hCOHhWc1BSNXhxSWF2
NWNualF5VmZpN0JsY1pDVWFqRXh2dWdrRXRqdAotY2tTWnpCS215TFlXSWpWY0VJd1VhYXBFeXRz
MW1FSkwycVFIUm9FSFZza293MTJWdVBPYW5JaHBCY21yRElSbAotcG5UaFp1SFpPL2FPZUtXRzlz
S0ZWZkNPUkFVcnUrMy91ZFhSYkJMUUxtcEJaaVdPOEYxRXVMTnFVaHNXeC9iRgotc245NjMwRVBB
Z01CQUFFQ2dnRUFRYWQvTnFwbll2bW9KUGw4T3ZjZy9HZHlvcFVsWjUveGhETzRJT3VQZ0RodAot
ZUNBaEVLdE9JQW96aUI1VXZ5SkIrWkxmeStaTzBsZURXZWp5N05xTURJUDZ1cVZkeExpaHR6aU10
dG13K1FQMgotV2tlbXBOSncvQTdhekpFT2VaWUpRWWZpU3hhTGNHZjQ0MEYyaVU3V3BjUjJydkxO
UTBvU2swTWd0NFJXV1ZWNAotRlU0QTljZ0o0KytLaEF0bEN5c2tERytab0ZFajRPOTNXWHFhTy9v
RjhZLyttakQ3eG9Md201bzhVMUUwMEZaUQotT1FrSjI2b2JMZk9RUmNiczNadExjcXNiWmw0NkR6
bW1HOERkcGRzdDJZOGhrZU1QZkk4M2k0eHUyYjV1ait3TwotU1pxd2NIbzRvUkdFUUVVajRXR25O
OVpqVmE5QVdjRE5BWTYzL0Z2VDBRS0JnUURXT3dmWXpzZEczL1IzVFEwWAotN1ZxN3RnWUxEb1dW
RlJzMk8xdmJFKy8rZjZ6UnlDbzg0SXZLZDRLRkcvbWxjWnI2T2RvNkgySFNuUWlSWDQvdwotTEdq
RytwckFxbDkwSU9EWmxqZ1lYRUt1UWVzZUh6NmhIQUwvazlnS0hTT1NtR213NU1tT3c0VFV1SUkw
K29jKwotNWVBclhqdXU5U1gyQUM5MzVpcjN2WUVRbHdLQmdRRE5ONWp4SE9SR2R0SjkyWXIvcmtW
VVNSaXI1LzdPaEJqegotczJLNjAvaFNIYldmZWptV2dHcHFFRXA5cUhCWXVYR1B1T1JXUi9BMzdx
cDYxdzNIaTMvV3A3bkpjam43c1VRSwotOXBoWjhCbW1XMkZJdkMyMko4dWkzM2ZqWC9WYmJkNGlo
ZEJvbmY2RzlmdnBaMWtrVS9uOGNvM2RSZFFrR056SQotSVE2a0pNVnFTUUtCZ1FDOGhqdzBqbHVO
d24zM0VzWm4vUWR3MHhGa1g0WXNtT05XaVV3ZmNkOHNQcDBPQzdFbgotMjQ4SlFMeUtlUURybUJz
REF6QkpIOTdOSWtZczhFVFIzYkxqRUJ4cFdrVWdBK0w3ZUJlclVGMlp6Z2FqZm1sMgotREJtVFlq
Nm5QOWRUSlc4MUxWRTJvbGJkZi9XTnU3NlRHbVo0bzdld0Vxb3lYeDFtelJXWTZKcVF4d0tCZ1FE
QwotMEovaGJTTUwvYXNQaStCWG54SHoxTHlXSFZRWXF2Q2hFVStOdXNMRythczhyU1JVU3E0NjZD
SS9MaE1STjJLbQotSk1pblcvMmdxM0t0ME5Baytib3ZoZVJxWjRUQittTjA0T3A2bnVOS3VQOGV0
SDNVcWV5NFB0cXFRS05FMjRVQQotVXZZcENxdmhaVTF6SXdoTjQyYXpEL0M2K1pwTmRrakp1QkFW
SlU4LytRS0JnQWdyMzlzNjhadzhlc1B2M0FtUAotN1F4K0Q5aGxlRDA3eG0zaUhEMEVVL1dLM0lX
MlRxVU4yVnBMM2xwa3VjSDNNMHYxZG00OStUM05RdzUyNE5KSwotbmZ5dGdDYStSRVJtbzh0L2Vw
Skc2ZFdaZ2VzVW5paVN2QWNrR3JpWmpjc2dPRXhZeUhlN3Z1MWRIT0xlVTJTLwotTkRLUjdmcmdF
VTdFaUd0TlFFYTh1Y0xECitNSUlFdmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1Nr
QWdFQUFvSUJBUURjd2hkemlFdjJXQWt2CitLL3dwZWNuNUxSQXByYldSamFvdGFjWHZrdG94UzBh
SzJmZjM0d2lWN0dyQnVjeHhVODFpM0xDdWNuZDgyZEdUCis0dkhmelRLS2FiNS8rdnV0MUZOb0c1
QkttR1laQ3BPbzZNWk9XQUpKNHpYWVFCQUVlS3VyU2pnbHpPWFdtalNwCitBRXpNOVRxVUc2Nmxw
b1NLNTh6djdnbmVEYmpEbkpoYktZWlF1ck5PbTNQTE1kMGVwMy95eHF3cVZpYTFuT24rCit4YTRa
b0ZyV3dndVdES3gwOXloQktFVkRIWHRBR2ZacDlFV0FUcXVFc3FGU29lTHF5UUR2ZmU1SGVmaTRk
UG1ZCiszMk9pSkc0QXJTS2VneHlSZWtRWjhFNHgzbW5sdDNwckM2blpGZXhMRzYwVU9peC9BTjNS
aWZwSERleThacS9MCitwR3N5K05UN0FnTUJBQUVDZ2dFQkFKcmtPQTRoQUtOczY2ekVZTjQ5REtD
ZnBLcUpyazdkSmgxTkRNdG1yMTlNCis0TWNGM3IxMzk0c3g0VW5oOG5kRmhHTXNVMjlpODBHUGww
UDdSUmh4WWxmSmtCYzk0NTc0empqS3RqZ1FxL28vCisrSkRZR21QWHptdEhWMzFPbmE1MWVJWHJ3
bStMVDJ4K3NCb3dFckx3RVZUZ0EyOUk0ZENRaWJPQ3dqdWlSeFEvCittbjJBNFE2ME9sbElSQ3dT
RTMvdUE5K21VcGVNcDVqZ0pkK29OM3VUNThUbWUvU1JOWHhPS2dDaWU4V1JVbnVlCitYL2NnaEtZ
U05tQXlEU2tiSjBLWTRvYXZiNVlSS1hOcEF0MmhOVzlKc04wcWQzK2o2SloyMW9kaHlkRGJ0cVNx
CitteGpQVFVGUU5GZUxWdkRUYVJZdyt6SytJL25vWklybFFzUzZKUE5mWGtFQ2dZRUErbTNMOWpM
ZTJsejBTSm1HCitObkZ1WThyd3dZVkptNFRMaGpZRG1kbVliR2NZQ1BvOUNISEtoUjZaWHJtTnp4
Y1h2d2FaazhaVHNwQVoyQnp3CisxQU01Mm1oR1plalI3eVY1RkVDaCtVS3J4L0F1ZCtqbTBXaFB0
d1lqaXh6OElobUdHODFvcll1ZXV4NTBIVWNPCitRL0s1TnFvMWVzQkJDK1g1WWEycmIzalNoR0VD
Z1lFQTRhdFJuNlA1RENqNHVnM1NTbFVOSVMzZEp4YmUzUWhCCitsVGtDdFhVUUMrcCtWSVVJMG1W
azZOZ040ZHJnVmlLT2xoek1LWURNdGlWWTJYTFhRTlZQRUo0bmdNU0MxdXpyCit0R2VmTXVML1dS
cHN5c3h3ak4wYiswZkRWZVh0TTE2Q3RYT3Bxbm9ZaTNYWC9SNmFJcVozelZpL3R0d0VPeTZHCitU
ZGduWk5jSlZ0c0NnWUFXNzB0SXB1d0Y3NUZudkxldjhMOTlZQzZnYW9hTk9hSXlEbXhTQUwyVzMv
SXhrRWxhCitwcUUzZzgvai92WmZ5dXVmMFFqcm9iUTBuRUhocXZUYlZkaE1pbFE0TFJSYzVIK3NQ
U2NZWHVUQWtOeVFtc0hZCisxOGJGS2tqRENzcUVqUFhkUWZpZVBEVXpTZHkwZWJkeXZaMzh4YVhV
TWh0QzdiTGpJVGFjSk9LU3dRS0JnR2xKCisxa1ptYWI4cnFvaWNCRDVjR2trZHJlNGI5SlVwMGZk
K1p1NGtsUDBLUmpERzlRdTg5T3pTU1AvVWNCQ2dCT2l5Cit2T3FzUmxiQmJBZmdWZC9RNWhlNXdu
S0l2UWJyK1RqdGs5QlpLb3YzRVVVNVIxWGhuN21JalBHWjJpYTZkTCtXCitIRllHcTBiK0Qyendo
emVkZFkzZ1YycElrc3pOOHltRXJUU1dRNnc3QW9HQkFJRUNCTXdFM1lMMFRHV1BkVTlBCitSVjNh
NUc5c2x1bnFoVkdRQ3d2QmZXd2o2dElwbGh0T0xBcDR5NDAwREhidzRKd2k1WitoRFF1OVB6TUdo
aHd1CitxWkxNSlpKNEJBVWFWSG9FY3VvMXNhYjI1VUg2YTBwZEdmN0JnQ21qS2pQQUh0dnpNeWZ3
ZktwanU3Wk9icHF4CitZZXQxRE1wdm1QbFgxa1pzRWgwNzJ6QnMKIC0tLS0tRU5EIFBSSVZBVEUg
S0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0u
dGVzdC5wZW0KaW5kZXggNjFkN2U0ZDE4OTI2Li5lNzkzMjNkNjZmZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2Vi
LXBsYXRmb3JtLnRlc3QucGVtCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtCkBAIC0xLDQzICsx
LDQzIEBACiBDZXJ0aWZpY2F0ZToKICAgICBEYXRhOgogICAgICAgICBWZXJzaW9uOiAzICgweDIp
Ci0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDkxMjI4OCAoMHhkZWJhMCkKKyAgICAgICAgU2VyaWFs
IE51bWJlcjogNDE1MDQ2ICgweDY1NTQ2KQogICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBz
aGEyNTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10
ZXN0cwogICAgICAgICBWYWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDEyIDAw
OjMwOjQ3IDIwMjAgR01UCi0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTIgMDA6MzA6NDcg
MjAyMSBHTVQKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEphbiAxMiAxNjoxMzoyOCAyMDIxIEdN
VAorICAgICAgICAgICAgTm90IEFmdGVyIDogSmFuIDEyIDE2OjEzOjI4IDIwMjIgR01UCiAgICAg
ICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CiAgICAgICAgIFN1YmplY3QgUHVibGlj
IEtleSBJbmZvOgogICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRp
b24KICAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDggYml0KQogICAgICAgICAg
ICAgICAgIE1vZHVsdXM6Ci0gICAgICAgICAgICAgICAgICAgIDAwOmFiOmJiOmNiOmY0OjFmOjky
OjlhOmQ4OmQzOmM2OjU5OjU1Ojc5OjYzOgotICAgICAgICAgICAgICAgICAgICA0ODo3ZDoxMTox
ZjpmZDpjYTo3MDo4YjoyZDoyOTpiMjpmZTozMTplMzo3MjoKLSAgICAgICAgICAgICAgICAgICAg
ZjY6MmQ6YzA6ZGE6NDA6N2Q6Mjg6MDc6YmE6NmQ6NDI6NmQ6NmM6ZGU6Zjc6Ci0gICAgICAgICAg
ICAgICAgICAgIDIxOjNiOjZjOmQ2OjkwOmY0OjU1OmRiOjAzOjdkOmQ1OmRkOmM5OmUxOmQyOgot
ICAgICAgICAgICAgICAgICAgICAwYzpkNDpjODplMjpiYzpkNzoyYzo1Yzo1Mzo5NTo2NDoyYTo5
Yzo4ZDoyNToKLSAgICAgICAgICAgICAgICAgICAgYzY6MDU6MDc6ZmE6NjM6Mzg6YzA6N2E6ZWE6
YjQ6YjY6NDA6MzQ6NzY6M2M6Ci0gICAgICAgICAgICAgICAgICAgIDRhOmM5OjRkOmRiOmExOmQ3
OjJkOmVjOjVmOmEyOjViOjJiOjU2OjgwOjQzOgotICAgICAgICAgICAgICAgICAgICBjNjo5Yzo0
YTo3MTo1NzozMzozZDo4YjpkYjpjYjozMDo5OTo3ODoyNjoxNToKLSAgICAgICAgICAgICAgICAg
ICAgODk6ODI6YzU6NjE6YzE6ZjM6MTU6NmM6M2Q6MWU6NzE6YTg6ODY6YWY6ZTU6Ci0gICAgICAg
ICAgICAgICAgICAgIGM5OmUzOjQzOjI1OjVmOjhiOmIwOjY1OjcxOjkwOjk0OjZhOjMxOjMxOmJl
OgotICAgICAgICAgICAgICAgICAgICBlODoyNDoxMjpkODplZDo3Mjo0NDo5OTpjYzoxMjphNjpj
ODpiNjoxNjoyMjoKLSAgICAgICAgICAgICAgICAgICAgMzU6NWM6MTA6OGM6MTQ6Njk6YWE6NDQ6
Y2E6ZGI6MzU6OTg6NDI6NGI6ZGE6Ci0gICAgICAgICAgICAgICAgICAgIGE0OjA3OjQ2OjgxOjA3
OjU2OmM5OjI4OmMzOjVkOjk1OmI4OmYzOjlhOjljOgotICAgICAgICAgICAgICAgICAgICA4ODo2
OTowNTpjOTphYjowYzo4NDo2NTphNjo3NDplMTo2NjplMTpkOTozYjoKLSAgICAgICAgICAgICAg
ICAgICAgZjY6OGU6Nzg6YTU6ODY6ZjY6YzI6ODU6NTU6ZjA6OGU6NDQ6MDU6MmI6YmI6Ci0gICAg
ICAgICAgICAgICAgICAgIGVkOmZmOmI5OmQ1OmQxOjZjOjEyOmQwOjJlOjZhOjQxOjY2OjI1Ojhl
OmYwOgotICAgICAgICAgICAgICAgICAgICA1ZDo0NDpiODpiMzo2YTo1MjoxYjoxNjpjNzpmNjpj
NTpiMjo3Zjo3YTpkZjoKLSAgICAgICAgICAgICAgICAgICAgNDE6MGYKKyAgICAgICAgICAgICAg
ICAgICAgMDA6ZGM6YzI6MTc6NzM6ODg6NGI6ZjY6NTg6MDk6MmY6MmI6ZmM6Mjk6Nzk6CisgICAg
ICAgICAgICAgICAgICAgIGM5OmY5OjJkOjEwOjI5OmFkOmI1OjkxOjhkOmFhOjJkOjY5OmM1OmVm
OjkyOgorICAgICAgICAgICAgICAgICAgICBkYTozMTo0Yjo0Njo4YTpkOTpmNzpmNzplMzowODo5
NTplYzo2YTpjMTpiOToKKyAgICAgICAgICAgICAgICAgICAgY2M6NzE6NTM6Y2Q6NjI6ZGM6YjA6
YWU6NzI6Nzc6N2M6ZDk6ZDE6OTM6ZTI6CisgICAgICAgICAgICAgICAgICAgIGYxOmRmOmNkOjMy
OjhhOjY5OmJlOjdmOmZhOmZiOmFkOmQ0OjUzOjY4OjFiOgorICAgICAgICAgICAgICAgICAgICA5
MDo0YTo5ODo2NjoxOTowYTo5MzphODplODpjNjo0ZTo1ODowMjo0OTplMzoKKyAgICAgICAgICAg
ICAgICAgICAgMzU6ZDg6NDA6MTA6MDQ6Nzg6YWI6YWI6NGE6Mzg6MjU6Y2M6ZTU6ZDY6OWE6Cisg
ICAgICAgICAgICAgICAgICAgIDM0OmE5OjAwOjRjOmNjOmY1OjNhOjk0OjFiOmFlOmE1OmE2Ojg0
OjhhOmU3OgorICAgICAgICAgICAgICAgICAgICBjYzplZjplZTowOTpkZTowZDpiODpjMzo5Yzo5
ODo1YjoyOTo4Njo1MDpiYToKKyAgICAgICAgICAgICAgICAgICAgYjM6NGU6OWI6NzM6Y2I6MzE6
ZGQ6MWU6YTc6N2Y6ZjI6YzY6YWM6MmE6NTY6CisgICAgICAgICAgICAgICAgICAgIDI2OmI1Ojlj
OmU5OmZlOmM1OmFlOjE5OmEwOjVhOmQ2OmMyOjBiOjk2OjBjOgorICAgICAgICAgICAgICAgICAg
ICBhYzo3NDpmNzoyODo0MToyODo0NTo0MzoxZDo3Yjo0MDoxOTpmNjo2OTpmNDoKKyAgICAgICAg
ICAgICAgICAgICAgNDU6ODA6NGU6YWI6ODQ6YjI6YTE6NTI6YTE6ZTI6ZWE6Yzk6MDA6ZWY6N2Q6
CisgICAgICAgICAgICAgICAgICAgIGVlOjQ3Ojc5OmY4OmI4Ojc0OmY5Ojk4OmRmOjYzOmEyOjI0
OjZlOjAwOmFkOgorICAgICAgICAgICAgICAgICAgICAyMjo5ZTo4MzoxYzo5MTo3YTo0NDoxOTpm
MDo0ZTozMTpkZTo2OTplNTpiNzoKKyAgICAgICAgICAgICAgICAgICAgN2E6NmI6MGI6YTk6ZDk6
MTU6ZWM6NGI6MWI6YWQ6MTQ6M2E6MmM6N2Y6MDA6CisgICAgICAgICAgICAgICAgICAgIGRkOmQx
Ojg5OmZhOjQ3OjBkOmVjOmJjOjY2OmFmOmNiOmE0OjZiOjMyOmY4OgorICAgICAgICAgICAgICAg
ICAgICBkNDpmYgogICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKICAg
ICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CiAgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3Ry
YWludHM6IAogICAgICAgICAgICAgICAgIENBOkZBTFNFCiAgICAgICAgICAgICBYNTA5djMgU3Vi
amVjdCBLZXkgSWRlbnRpZmllcjogCi0gICAgICAgICAgICAgICAgOEM6RDQ6NDg6MDE6MUI6RkY6
OUY6NDI6MEQ6ODE6RDI6MDU6MkQ6NDc6Q0E6OEU6RjQ6REI6MTg6MDcKKyAgICAgICAgICAgICAg
ICBDRDpGMTpDODo2MjpEMTpFQzpBNTozRDpFNDoxQTo5MTo3MDpGMTowMjpFNjo2RTpCQzoyRjpF
MjowNQogICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCi0gICAg
ICAgICAgICAgICAga2V5aWQ6ODE6NkU6QzA6MTU6NDE6NDA6Nzc6MEY6MEM6M0E6MUU6OEI6RUY6
QTU6QjQ6MjM6MzQ6MkE6RDQ6MEYKKyAgICAgICAgICAgICAgICBrZXlpZDpEQzo2RDo4RDo2MjpE
RDo1NDo5ODpDODo2MDoxNzpDMjpEMzo1MTpCMzpCRjo3Mzo1Qjo1Qzo5MDpCOQogCiAgICAgICAg
ICAgICBYNTA5djMgS2V5IFVzYWdlOiAKICAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVy
ZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CkBAIC00NiwzMyArNDYsMzMgQEAg
Q2VydGlmaWNhdGU6CiAgICAgICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1l
OiAKICAgICAgICAgICAgICAgICBETlM6d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDI0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Nzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1
OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYw
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQwLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjMud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5NS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM2LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AyNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDk0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMzMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AzMi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDcwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AyNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDUyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wODYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AxNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDgwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AzNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDkyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjIu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUwLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A0Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzAud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQ4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNS5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUzLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wOTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AxOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIxLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDY1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUyLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDg5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDkubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDMwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzgubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AzMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIzLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjAubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUxLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNDEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNDIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ny5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDgubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU2Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5My5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODYubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQ3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODgubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDEwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cy
Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cx
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFk
Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54
bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbHZlLTZsYWQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54
bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4t
LW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0t
bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFo
djI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFo
djI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxh
ZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYy
OGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhq
NmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QKICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgot
ICAgICAgICAgNzk6Y2I6YTE6MTc6MTQ6Zjk6MzQ6OGI6ZjU6ZWY6Y2I6MjE6MjI6NDc6ZGM6YjE6
MzI6MTc6Ci0gICAgICAgICAwZjoxNDpkMzpkNzowMzo3NjpkZjo0MToyMDo4NDo1MDo2MzphMjo3
YzpiNzozMTpmZTphMDoKLSAgICAgICAgIGYyOmM5OjMwOjc5OjJjOjMwOjZiOmY3OmViOjM2OjEz
OmFjOjI3OjVlOjRhOjA2OjQ5OjZjOgotICAgICAgICAgYzI6OWM6ZjY6YjA6NTY6YTk6NmU6MjU6
ZTI6ODI6OTE6ZTk6YWM6M2I6MmQ6OWY6Y2Q6YTQ6Ci0gICAgICAgICBmOTpjMTo3NDo0YzoxNTpi
Nzo2ODplZjowMTo2ZjplMDpmMjo5YjpiZTowYzo0ODo5NjozZjoKLSAgICAgICAgIDZlOjQyOjcx
OmU5OmY3OmQ4OjA4OmJhOjNkOmU2OmFiOmMwOmNmOjQ0OmMwOmE4OmNhOjYyOgotICAgICAgICAg
ODQ6MWM6YzI6NDY6MDI6YjA6Nzc6OTg6MTU6YmE6N2Q6NjA6Yjk6ZTU6ZTk6ZmY6ZDk6Nzg6Ci0g
ICAgICAgICA2MjpjZDo1YjowYTo4ZToyNTpmZTphMzoyNToxMDo4Mzo0ZTo4NDo3NDoyNTo2MTo1
NDozMzoKLSAgICAgICAgIDQ1OmQ0Ojg0OmNiOjc2OjkxOmJiOmFiOjQxOmQ1Ojk4OmIxOjQ0Ojkx
OjRiOmUyOmQyOmE1OgotICAgICAgICAgNzU6MTU6ZmI6NWY6ZDc6NzM6NmQ6NmQ6YzY6NGI6OTc6
NzQ6M2I6MGI6ZjM6ZjE6ZmE6ZGE6Ci0gICAgICAgICAxOTo2ZDo2YjoyNzo3Yzo4ZDpmMTo5OTo4
NjpmMToxMTpiMTo4MToyZjphMDoyYzpmYjpmZToKLSAgICAgICAgIDlkOjY3OmQyOjQ5OjVkOmY1
OjBkOmRiOjAzOjI2OmZjOmMxOjRiOmFiOmRkOjE4OmQ1OjdlOgotICAgICAgICAgN2E6NjQ6NjE6
Njk6M2I6OTA6NGY6MmQ6YWQ6MjE6NDA6MDc6ZDE6NWE6ZjA6MzA6NmE6ZWQ6Ci0gICAgICAgICAw
Yzo4NDo1ODphMTo1NTozYzowMDplMToyMzozZTo2MDpjYjpkNDo1NzoxYTo2OToyZDoyZToKLSAg
ICAgICAgIDU2OjNhOjUxOjE0CisgICAgICAgICAzODphNzplZjplYjo1NTozMDplODo2ZjpiZjo1
MTphOTplYjo1Mjo5YTo2NjplYzozZDoxOToKKyAgICAgICAgIDVkOmY0OjFkOjg0OjE3OmMwOmYy
OjI2OjNlOjJiOjY2OjVkOjdhOmE5OjQ0Ojg2OmMzOmJhOgorICAgICAgICAgZDc6ZjA6OWU6ZTc6
YjI6YjM6MDU6MGM6MjU6ZWY6ZTE6Yjc6OTQ6OGM6NDQ6MWM6ZDI6NTc6CisgICAgICAgICA0Yzoz
MDo1MTo5NjoyOTo5NjoyZTpiMzplMzoxYzpmODo5YzplNjo3ZDo5NjoxNDozZjozZjoKKyAgICAg
ICAgIDNlOmE2Ojk2OjRiOjAxOmRjOmYyOmVkOmJmOmZjOmUzOjY0OjkzOjQ5OjgxOmJlOmM5OmRk
OgorICAgICAgICAgZGQ6MWI6Y2U6ZGE6NzI6NDU6ZDE6MmQ6Y2E6OTk6Y2Q6ZDE6N2Q6Zjk6MTc6
ZTE6ZWU6MTI6CisgICAgICAgICBmNDplZDo3Njo0MTpjYTo2ZjphNTo1Yzo3MjowMDo0YTo4ZDo3
NjpjNToyYjpiNzoxODo3YjoKKyAgICAgICAgIGNlOmU4OmFiOjc2OjlhOjc1OmU5OjFkOjUzOjli
Ojc1OjkzOjZkOjBiOjJlOjQ5OjNmOmJmOgorICAgICAgICAgODQ6MWY6NzE6YmU6NDk6MjM6YWI6
MmM6Zjg6YTY6YTI6Mjg6OTM6ODI6MDQ6NmM6OGU6ODU6CisgICAgICAgICAyMjowZTpiNjo2ZDpj
NToxZTo4MjpkMTowZDpjNjowODo5YTo4NjphMToyOTo1Yzo3OTo1MzoKKyAgICAgICAgIGQzOmFl
OmQ2OmM0OjMzOjRiOmQyOjA0OjVhOmQ5OmEwOmMzOjZkOjI2OmVjOmU4OjM1OjA2OgorICAgICAg
ICAgZTc6ODg6MTI6MDM6N2M6YzU6ODM6MjY6YjI6YjU6MzI6YTM6NDE6NTE6YjQ6OTQ6YjA6ODQ6
CisgICAgICAgICAwZDo0YTowNTo1MjowMjoyOTo0MTo1YjowMzowNDpmMDpjMzplNToyNDplNjo1
YTplZjo3MDoKKyAgICAgICAgIDQ1OjQ1OjU4OjI1OjJiOjVlOmJlOjdkOmNhOjczOjAyOjJiOjFk
OjRmOjNjOjRiOjAwOmY0OgorICAgICAgICAgNjk6NWY6MWE6NmUKIC0tLS0tQkVHSU4gQ0VSVElG
SUNBVEUtLS0tLQotTUlJZ3ZEQ0NINlNnQXdJQkFnSUREZXVnTUEwR0NTcUdTSWIzRFFFQkN3VUFN
QjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1ERXdNVEl3
TURNd05EZGFGdzB5TVRFd01USXdNRE13TkRkYQorTUlJZ3ZEQ0NINlNnQXdJQkFnSURCbFZHTUEw
R0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAorWWkxd2JHRjBabTl5YlMxMFpY
TjBjekFlRncweU1UQXhNVEl4TmpFek1qaGFGdzB5TWpBeE1USXhOakV6TWpoYQogTUJ3eEdqQVlC
Z05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFFRgot
QUFPQ0FROEFNSUlCQ2dLQ0FRRUFxN3ZMOUIrU210alR4bGxWZVdOSWZSRWYvY3B3aXkwcHN2NHg0
M0wyTGNEYQotUUgwb0I3cHRRbTFzM3ZjaE8yeldrUFJWMndOOTFkM0o0ZElNMU1qaXZOY3NYRk9W
WkNxY2pTWEdCUWY2WXpqQQotZXVxMHRrQTBkanhLeVUzYm9kY3Q3RitpV3l0V2dFUEduRXB4VnpN
OWk5dkxNSmw0SmhXSmdzVmh3Zk1WYkQwZQotY2FpR3IrWEo0ME1sWDR1d1pYR1FsR294TWI3b0pC
TFk3WEpFbWN3U3BzaTJGaUkxWEJDTUZHbXFSTXJiTlpoQwotUzlxa0IwYUJCMWJKS01OZGxianpt
cHlJYVFYSnF3eUVaYVowNFdiaDJUdjJqbmlsaHZiQ2hWWHdqa1FGSzd2dAotLzduVjBXd1MwQzVx
UVdZbGp2QmRSTGl6YWxJYkZzZjJ4YkovZXQ5QkR3SURBUUFCbzRJZUJEQ0NIZ0F3Q1FZRAotVlIw
VEJBSXdBREFkQmdOVkhRNEVGZ1FVak5SSUFSdi9uMElOZ2RJRkxVZktqdlRiR0Fjd0h3WURWUjBq
QkJndwotRm9BVWdXN0FGVUZBZHc4TU9oNkw3NlcwSXpRcTFBOHdDd1lEVlIwUEJBUURBZ1hnTUJN
R0ExVWRKUVFNTUFvRworQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzTUlYYzRoTDlsZ0pMeXY4S1huSitT
MFFLYTIxa1kycUxXbkY3NUxhTVV0RworaXRuMzkrTUlsZXhxd2JuTWNWUE5ZdHl3cm5KM2ZOblJr
K0x4MzgweWltbStmL3I3cmRSVGFCdVFTcGhtR1FxVAorcU9qR1RsZ0NTZU0xMkVBUUJIaXJxMG80
SmN6bDFwbzBxUUJNelBVNmxCdXVwYWFFaXVmTTcrNEozZzI0dzV5WQorV3ltR1VMcXpUcHR6eXpI
ZEhxZC84c2FzS2xZbXRaenAvc1d1R2FCYTFzSUxsZ3lzZFBjb1FTaEZReDE3UUJuMgorYWZSRmdF
NnJoTEtoVXFIaTZza0E3MzN1UjNuNHVIVDVtTjlqb2lSdUFLMGlub01ja1hwRUdmQk9NZDVwNWJk
NgorYXd1cDJSWHNTeHV0RkRvc2Z3RGQwWW42Unczc3ZHYXZ5NlJyTXZqVSt3SURBUUFCbzRJZUJE
Q0NIZ0F3Q1FZRAorVlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVemZISVl0SHNwVDNrR3BGdzhRTG1i
cnd2NGdVd0h3WURWUjBqQkJndworRm9BVTNHMk5ZdDFVbU1oZ0Y4TFRVYk8vYzF0Y2tMa3dDd1lE
VlIwUEJBUURBZ1hnTUJNR0ExVWRKUVFNTUFvRwogQ0NzR0FRVUZCd01CTUlJZGp3WURWUjBSQklJ
ZGhqQ0NIWUtDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdgogY0RndWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZXOXdOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBNQogTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hWdmNEUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzV2ZEMxMwpA
QCAtMjMxLDEwICsyMzEsMTAgQEAgTm14aFpDNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0
WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbAogYzNTQ1FYaHVMUzF1T0dvMlpITTFNMngzZDJ0
eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMgogTWpoaExuZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdrVjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NAogYmkwdGJqaHFO
bVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSgot
S29aSWh2Y05BUUVMQlFBRGdnRUJBSG5Mb1JjVStUU0w5ZS9MSVNKSDNMRXlGdzhVMDljRGR0OUJJ
SVJRWTZKOAotdHpIK29QTEpNSGtzTUd2MzZ6WVRyQ2RlU2daSmJNS2M5ckJXcVc0bDRvS1I2YXc3
TFovTnBQbkJkRXdWdDJqdgotQVcvZzhwdStERWlXUDI1Q2NlbjMyQWk2UGVhcndNOUV3S2pLWW9R
Y3drWUNzSGVZRmJwOVlMbmw2Zi9aZUdMTgotV3dxT0pmNmpKUkNEVG9SMEpXRlVNMFhVaE10Mmti
dXJRZFdZc1VTUlMrTFNwWFVWKzEvWGMyMXR4a3VYZERzTAotOC9INjJobHRheWQ4amZHWmh2RVJz
WUV2b0N6Ny9wMW4wa2xkOVEzYkF5Yjh3VXVyM1JqVmZucGtZV2s3a0U4dAotclNGQUI5RmE4REJx
N1F5RVdLRlZQQURoSXo1Z3k5UlhHbWt0TGxZNlVSUT0KK0tvWklodmNOQVFFTEJRQURnZ0VCQURp
bjcrdFZNT2h2djFHcDYxS2FadXc5R1YzMEhZUVh3UEltUGl0bVhYcXAKK1JJYkR1dGZ3bnVleXN3
VU1KZS9odDVTTVJCelNWMHd3VVpZcGxpNno0eHo0bk9aOWxoUS9QejZtbGtzQjNQTHQKK3Yvempa
Sk5KZ2I3SjNkMGJ6dHB5UmRFdHlwbk4wWDM1RitIdUV2VHRka0hLYjZWY2NnQktqWGJGSzdjWWU4
N28KK3EzYWFkZWtkVTV0MWsyMExMa2svdjRRZmNiNUpJNnNzK0thaUtKT0NCR3lPaFNJT3RtM0ZI
b0xSRGNZSW1vYWgKK0tWeDVVOU91MXNRelM5SUVXdG1ndzIwbTdPZzFCdWVJRWdOOHhZTW1zclV5
bzBGUnRKU3doQTFLQlZJQ0tVRmIKK0F3VHd3K1VrNWxydmNFVkZXQ1VyWHI1OXluTUNLeDFQUEVz
QTlHbGZHbTQ9CiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9f
X2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9fX2lu
aXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9h
enVyZS9hZmZlY3RlZF90ZXN0cy55bWwKaW5kZXggNDk0ZmYxZWZhMTljLi45NmFiMmI4Y2M1MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMu
eW1sCkBAIC0xNSw3ICsxNSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmku
eW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFu
aWZlc3QueW1sCi0tIHNjcmlwdDogLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1c2UgLS1uby1mYWls
LW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1hZmZlY3RlZCAke3sg
cGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAkKEJ1aWxkLkFydGlm
YWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdwdHNjcmVlbnNob3Qg
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5zaG90LnR4dCAtLWNo
YW5uZWwgcHJldmlldyBzYWZhcmkKKy0gc2NyaXB0OiAuL3dwdCBydW4gLS15ZXMgLS1uby1wYXVz
ZSAtLW5vLWZhaWwtb24tdW5leHBlY3RlZCAtLW5vLXJlc3RhcnQtb24tdW5leHBlY3RlZCAtLWFm
ZmVjdGVkICR7eyBwYXJhbWV0ZXJzLmFmZmVjdGVkUmFuZ2UgfX0gLS1sb2ctd3B0cmVwb3J0ICQo
QnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfcmVwb3J0Lmpzb24gLS1sb2ctd3B0
c2NyZWVuc2hvdCAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3NjcmVlbnNo
b3QudHh0IC0tY2hhbm5lbCBwcmV2aWV3IC0ta2lsbC1zYWZhcmkgc2FmYXJpCiAgIGRpc3BsYXlO
YW1lOiAnUnVuIHRlc3RzJwogLSB0YXNrOiBQdWJsaXNoQnVpbGRBcnRpZmFjdHNAMQogICBkaXNw
bGF5TmFtZTogJ1B1Ymxpc2ggcmVzdWx0cycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUu
eW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9pbnN0YWxsX2Nocm9tZS55bWwKaW5kZXggZmQ2NTBlODBhYWFkLi45Y2NkYzQ5YmEw
ZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJv
bWUueW1sCkBAIC0yLDggKzIsOSBAQCBzdGVwczoKICMgVGhlIGNvbmZsaWN0aW5nIGdvb2dsZS1j
aHJvbWUgYW5kIGNocm9tZWRyaXZlciBjYXNrcyBhcmUgZmlyc3QgdW5pbnN0YWxsZWQuCiAjIFRo
ZSByYXcgZ29vZ2xlLWNocm9tZS1kZXYgY2FzayBVUkwgaXMgdXNlZCB0byBieXBhc3MgY2FjaGlu
Zy4KIC0gc2NyaXB0OiB8Ci0gICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBicmV3IGNhc2sg
dW5pbnN0YWxsIGdvb2dsZS1jaHJvbWUgfHwgdHJ1ZQotICAgIEhPTUVCUkVXX05PX0FVVE9fVVBE
QVRFPTEgYnJldyBjYXNrIHVuaW5zdGFsbCBjaHJvbWVkcml2ZXIgfHwgdHJ1ZQotICAgIEhPTUVC
UkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcuZ2l0aHVi
dXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFzdGVyL0Nh
c2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisgICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBi
cmV3IHVuaW5zdGFsbCAtLWNhc2sgZ29vZ2xlLWNocm9tZSB8fCB0cnVlCisgICAgSE9NRUJSRVdf
Tk9fQVVUT19VUERBVEU9MSBicmV3IHVuaW5zdGFsbCAtLWNhc2sgY2hyb21lZHJpdmVyIHx8IHRy
dWUKKyAgICBjdXJsIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9o
b21lYnJldy1jYXNrLXZlcnNpb25zL21hc3Rlci9DYXNrcy9nb29nbGUtY2hyb21lLWRldi5yYiA+
IGdvb2dsZS1jaHJvbWUtZGV2LnJiCisgICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBicmV3
IGluc3RhbGwgLS1jYXNrIGdvb2dsZS1jaHJvbWUtZGV2LnJiCiAgIGRpc3BsYXlOYW1lOiAnSW5z
dGFsbCBDaHJvbWUgRGV2JwogICBjb25kaXRpb246IGFuZChzdWNjZWVkZWQoKSwgZXEodmFyaWFi
bGVzWydBZ2VudC5PUyddLCAnRGFyd2luJykpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZmlyZWZv
eC55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL2luc3RhbGxfZmlyZWZveC55bWwKaW5kZXggZGU2ZDAzMzVmMjIxLi43YjhjN2Jl
MDVmZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9maXJlZm94LnltbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxf
ZmlyZWZveC55bWwKQEAgLTEsNiArMSw4IEBACiBzdGVwczoKICMgVGhpcyBpcyBlcXVpdmFsZW50
IHRvIGBIb21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL2ZpcmVmb3gtbmlnaHRseWAsCiAj
IGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5nLgotLSBzY3JpcHQ6IEhP
TUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFzdGVy
L0Nhc2tzL2ZpcmVmb3gtbmlnaHRseS5yYgorLSBzY3JpcHQ6IHwKKyAgICBjdXJsIGh0dHBzOi8v
cmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25z
L21hc3Rlci9DYXNrcy9maXJlZm94LW5pZ2h0bHkucmIgPiBmaXJlZm94LW5pZ2h0bHkucmIKKyAg
ICBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgaW5zdGFsbCAtLWNhc2sgZmlyZWZveC1u
aWdodGx5LnJiCiAgIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBGaXJlZm94IE5pZ2h0bHknCiAgIGNv
bmRpdGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdEYXJ3
aW4nKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3B5dGhv
bi55bWwKaW5kZXggNjU4NTIzOWJjOGNjLi42MjU3MTcyMDIxZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9weXRob24ueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCkBAIC0xLDE1ICsxLDM2
IEBACiBzdGVwczoKIC0gcG93ZXJzaGVsbDogfAotICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291
cmNlIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8yLjcuMTUvcHl0aG9uLTIuNy4x
NS5hbWQ2NC5tc2kgLURlc3RpbmF0aW9uIHB5dGhvbi5tc2kKLSAgICAkaGFzaCA9IChHZXQtRmls
ZUhhc2ggcHl0aG9uLm1zaSkuSGFzaC5Ub0xvd2VyKCkKLSAgICAkZXhwZWN0ZWRIYXNoID0gIjVl
ODVmM2M0YzIwOWRlOTg0ODBhY2JmMmJhMmU3MWE5MDdmZDU1NjdhODM4YWQ0YjY3NDhjNzZkZWIy
ODZhZDciCisgICAgJHB5dGhvblBhdGggPSAnQzpcUHl0aG9uMzgnCisgICAgJHB5dGhvbkluc3Rh
bGxlckxvZ1BhdGggPSAncHl0aG9uX2luc3RhbGxlci5sb2cnCisgICAgJGluc3RhbGxBcmdzID0g
Ii9wYXNzaXZlIC9sb2cgJHB5dGhvbkluc3RhbGxlckxvZ1BhdGggVGFyZ2V0RGlyPSRweXRob25Q
YXRoIgorCisgICAgV3JpdGUtSG9zdCAiRG93bmxvYWRpbmcgcHl0aG9uIGluc3RhbGxlciBleGUi
CisgICAgJGRvd25sb2FkUGF0aCA9ICdweXRob25faW5zdGFsbGVyLmV4ZScKKyAgICBTdGFydC1C
aXRzVHJhbnNmZXIgLVNvdXJjZSBodHRwczovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vMy44
LjUvcHl0aG9uLTMuOC41LWFtZDY0LmV4ZSAgLURlc3RpbmF0aW9uICRkb3dubG9hZFBhdGgKKyAg
ICAkaGFzaCA9IChHZXQtRmlsZUhhc2ggJGRvd25sb2FkUGF0aCkuSGFzaC5Ub0xvd2VyKCkKKyAg
ICAkZXhwZWN0ZWRIYXNoID0gImNkNDI3YzdiMTczMzdkN2MxMzc2MWNhMjA4NzdkMmQ4YmU2NjFi
ZDMwNDE1ZGRjMTcwNzJhMzFhNjVhOTFiNjQiCiAgICAgaWYgKCRoYXNoLkVxdWFscygkZXhwZWN0
ZWRIYXNoKSkgewotICAgICAgV3JpdGUtSG9zdCAicHl0aG9uLm1zaSBoYXNoIHZlcmlmaWVkIgor
ICAgICAgV3JpdGUtSG9zdCAiJGRvd25sb2FkUGF0aCBoYXNoIHZlcmlmaWVkIgogICAgIH0gZWxz
ZSB7Ci0gICAgICBUaHJvdyAicHl0aG9uLm1zaSBoYXNoIG1pc21hdGNoLCBnb3QgJGhhc2gsIGV4
cGVjdGVkICRleHBlY3RlZEhhc2giCisgICAgICBUaHJvdyAiJGRvd25sb2FkUGF0aCBoYXNoIG1p
c21hdGNoLCBnb3QgJGhhc2gsIGV4cGVjdGVkICRleHBlY3RlZEhhc2giCiAgICAgfQotICAgIG1z
aWV4ZWMgL2kgcHl0aG9uLm1zaSBUQVJHRVRESVI9QzpcUHl0aG9uMjcgL3EKLSAgICBXcml0ZS1I
b3N0ICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXUM6XFB5dGhvbjI3IgotICAgIFdyaXRlLUhvc3Qg
IiMjdnNvW3Rhc2sucHJlcGVuZHBhdGhdQzpcUHl0aG9uMjdcU2NyaXB0cyIKKworICAgIGlmIChU
ZXN0LVBhdGggLUxpdGVyYWxQYXRoICRweXRob25QYXRoKSB7CisgICAgICAgIFdyaXRlLUhvc3Qg
IiRweXRob25QYXRoIGFscmVhZHkgZXhpc3RzLCB1bmluc3RhbGwgaXQiCisgICAgICAgICR1bmlu
c3RhbGxBcmdzID0gJGluc3RhbGxBcmdzICsgIiAvdW5pbnN0YWxsIC9xdWlldCIKKyAgICAgICAg
JHAgPSBTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAkZG93bmxvYWRQYXRoIC1WZXJiIFJ1bkFzIC1B
cmd1bWVudExpc3QgJHVuaW5zdGFsbEFyZ3MgLVBhc3NUaHJ1IC1XYWl0CisgICAgICAgIFdyaXRl
LUhvc3QgIlVuaW5zdGFsbCBmaW5pc2hlZC4gRXhpdCBjb2RlIHdhczogJCgkcC5FeGl0Q29kZSki
CisgICAgfQorCisgICAgV3JpdGUtSG9zdCAiUnVubmluZyAkZG93bmxvYWRQYXRoIHdpdGggYXJn
cyAkaW5zdGFsbEFyZ3MiCisgICAgJHAgPSBTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAkZG93bmxv
YWRQYXRoIC1WZXJiIFJ1bkFzIC1Bcmd1bWVudExpc3QgJGluc3RhbGxBcmdzIC1QYXNzVGhydSAt
V2FpdAorICAgIFdyaXRlLUhvc3QgIiRkb3dubG9hZFBhdGggZmluaXNoZWQuIEV4aXQgY29kZSB3
YXM6ICQoJHAuRXhpdENvZGUpIgorCisgICAgV3JpdGUtSG9zdCAiQWRkaW5nIFB5dGhvbiBkaXJz
IHRvIHBhdGgiCisgICAgV3JpdGUtSG9zdCAiIyN2c29bdGFzay5wcmVwZW5kcGF0aF1DOlxQeXRo
b24zOCIKKyAgICBXcml0ZS1Ib3N0ICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXUM6XFB5dGhvbjM4
XFNjcmlwdHMiCisKKyAgICBXcml0ZS1Ib3N0ICJEdW1waW5nIGluc3RhbGwgbG9nIGZpbGU6Igor
ICAgIEdldC1Db250ZW50IC1QYXRoICJweXRob25faW5zdGFsbGVyLmxvZyIKICAgZGlzcGxheU5h
bWU6ICdJbnN0YWxsIFB5dGhvbiAoV2luZG93cyknCiAgIGNvbmRpdGlvbjogYW5kKHN1Y2NlZWRl
ZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dzX05UJykpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2luc3RhbGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IDZjMWI1
NjJkNDExYS4uZDkyOWZmYTRkYTkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbApAQCAtOCw3ICs4LDggQEAgc3RlcHM6CiAgIGNvbmRp
dGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJfZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7
IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3ByZXZpZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwK
LSAgICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgdG9vbHMv
Y2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorICAgICAgc2V0IC1ldXgKKyAg
ICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBpbnN0YWxsIC0tY2FzayB0b29scy9j
aS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCiAgICAgICAjIFdvcmthcm91bmQg
Zm9yIGBzdWRvIHNhZmFyZHJpdmVyIC0tZW5hYmxlYCBub3Qgd29ya2luZyBvbiBDYXRhbGluYToK
ICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVz
LzIxNzUxCiAgICAgICBta2RpciAtcCB+L0xpYnJhcnkvV2ViRHJpdmVyLwpAQCAtMTgsNiArMTks
NyBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgU2FmYXJpIFRlY2hub2xvZ3kg
UHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3N0YWJsZScpIH19Ogog
ICAtIHNjcmlwdDogfAorICAgICAgc2V0IC1ldXgKICAgICAgIHN1ZG8gc2FmYXJpZHJpdmVyIC0t
ZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdlYktpdEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlOYW1lOiAnQ29u
ZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5y
YiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgppbmRleCAxMTVkZDFiOGYyMTAuLmUz
OWJlOTk2ZDk5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgpAQCAtMSwxMCArMSwxMCBAQAogY2Fz
ayAic2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldyIgZG8KICAgaWYgTWFjT1MudmVyc2lvbiA8PSA6
Y2F0YWxpbmEKLSAgICB2ZXJzaW9uICIxMTUsMDAxLTYyNjUxLTIwMjAxMDIyLTZjZDkyZTE4LWJm
YmUtNDhjYy05Mzg1LWQ4NGRhOGYzYzI0YyIKLSAgICBzaGEyNTYgImU0YjI5YWMyYTBkNjBlNDhi
YWU3ZDljNjM1ODUzZmY3ZGFkYzU5YTgyZGQ1M2YzNDBiNjIzZWViNTUzOGY2NTciCisgICAgdmVy
c2lvbiAiMTIxLDA3MS0wOTEyMC0yMDIxMDIyNS1mNDc0Njk1My05ZDRmLTRiM2YtOGM2ZC1jZjNh
YmNhNWE0MjciCisgICAgc2hhMjU2ICJkNzU0OGQ0MmRkNzNjMDFhNjFmYjYxMjYyNGRiNzk1MTdi
YjU5NWNlNGU1Mjk2NzU4ZDUyYTEyYTMwNTExNGM4IgogICBlbHNlCi0gICAgdmVyc2lvbiAiMTE1
LDAwMS02MjY3OS0yMDIwMTAyMi00MmUwZDYzYS01MjdhLTQ1YWYtYmViMS0wMmNkNDA5NWUzNDEi
Ci0gICAgc2hhMjU2ICI4MTUyNzZjYTgxNGU0OWE2YjJlOGViODQyOWQ2ZTY2NDRkZTJkYjg5NTI3
ZmJiY2U4M2NiOWQ2OWY1NDc4M2Y3IgorICAgIHZlcnNpb24gIjEyMSwwNzEtMDkxMDUtMjAyMTAy
MjUtMGI1NzZhOTQtYzdjZC00M2NiLTlkZjItNmUwODE3NmZjNDVhIgorICAgIHNoYTI1NiAiYTVm
YWUwMWQ0YjVjY2NhOTk1MmJhY2NjMGE1Mjc5MWUzMzY2ZGE4ZWUxY2E0NzBkYzFlNzU1NGVhNmIw
ZTg3YyIKICAgZW5kCiAKICAgdXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20v
U1RQLyN7dmVyc2lvbi5hZnRlcl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YzY5MmI1ZTYwNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJl
L1JFQURNRS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jaGVja291dC55bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Ns
ZWFudXBfd2luMTAueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpVGVjaG5vbG9neVByZXZpZXcucGxp
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2Z5aV9ob29rLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jZXJ0cy55bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hy
b21lLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvaW5zdGFsbF9lZGdlLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9maXJlZm94LnltbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9mb250cy55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfcHl0aG9uLnltbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZh
cmkueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFy
aS10ZWNobm9sb2d5LXByZXZpZXcucmIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3N5c3RlbV9pbmZvLnltbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdG94X3B5dGVz
dC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL3VwZGF0ZV9ob3N0cy55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3VwZGF0ZV9tYW5pZmVzdC55bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvY2lfdG9vbHNfdW5pdHRlc3Quc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCmluZGV4IDM2NmRjZjY2
ZGU4OC4uYTRkNWNiYjdkZTFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfdG9v
bHNfdW5pdHRlc3Quc2gKQEAgLTYsOSArNiw5IEBAIFdQVF9ST09UPSRTQ1JJUFRfRElSLy4uLy4u
CiBjZCAkV1BUX1JPT1QKIAogcnVuX2FwcGxpY2FibGVfdG94ICgpIHsKLSAgICAjIGluc3RlYWQg
b2YganVzdCBydW5uaW5nIFRPWEVOViAoZS5nLiwgcHkyNykKKyAgICAjIGluc3RlYWQgb2YganVz
dCBydW5uaW5nIFRPWEVOViAoZS5nLiwgcHkzOCkKICAgICAjIHJ1biBhbGwgZW52aXJvbm1lbnRz
IHRoYXQgc3RhcnQgd2l0aCBUT1hFTlYKLSAgICAjIChlLmcuLCBweTI3LWZpcmVmb3ggYXMgd2Vs
bCBhcyBweTI3KQorICAgICMgKGUuZy4sIHB5MzgtZmlyZWZveCBhcyB3ZWxsIGFzIHB5MzgpCiAg
ICAgbG9jYWwgT0xEX1RPWEVOVj0iJFRPWEVOViIKICAgICB1bnNldCBUT1hFTlYKICAgICBsb2Nh
bCBSVU5fRU5WUz0kKHRveCAtbCB8IGdyZXAgIl4ke09MRF9UT1hFTlZ9XChcLVx8XCRcKSIgfCB0
ciAiXG4iICIsIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRy
dW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gKaW5kZXggMDcwOTI5NWY0YTIwLi45N2FjMTdjZGYyZTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2lu
ZnJhc3RydWN0dXJlLnNoCkBAIC02LDIyICs2LDE4IEBAIFdQVF9ST09UPSRTQ1JJUFRfRElSLy4u
Ly4uCiBjZCAkV1BUX1JPT1QKIAogdGVzdF9pbmZyYXN0cnVjdHVyZSgpIHsKLSAgICBQWTNfRkxB
Rz0iJDIiCi0gICAgVEVSTT1kdW1iIC4vd3B0ICRQWTNfRkxBRyBydW4gLS1sb2ctbWFjaCAtIC0t
eWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01BTklGRVNULmpzb24gLS1tZXRhZGF0YSBpbmZyYXN0cnVj
dHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxsLWZvbnRzIC0taW5zdGFsbC13ZWJkcml2ZXIgJDEgJFBS
T0RVQ1QgaW5mcmFzdHJ1Y3R1cmUvCisgICAgUFkyX0ZMQUc9IiQyIgorICAgIFRFUk09ZHVtYiAu
L3dwdCAkUFkyX0ZMQUcgcnVuIC0tbG9nLW1hY2ggLSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9N
QU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFzdHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFs
bC1mb250cyAtLWluc3RhbGwtd2ViZHJpdmVyICQxICRQUk9EVUNUIGluZnJhc3RydWN0dXJlLwog
fQogCiBtYWluKCkgewotICAgIGlmIFtbICQjIC1lcSAxICYmICIkMSIgPSAiLS1weTMiIF1dOyB0
aGVuCi0gICAgICAgIFBST0RVQ1RTPSggImNocm9tZSIgKQotICAgIGVsc2UKLSAgICAgICAgUFJP
RFVDVFM9KCAiZmlyZWZveCIgImNocm9tZSIgKQotICAgIGZpCisgICAgUFJPRFVDVFM9KCAiZmly
ZWZveCIgImNocm9tZSIgKQogICAgIC4vd3B0IG1hbmlmZXN0IC0tcmVidWlsZCAtcCB+L21ldGEv
TUFOSUZFU1QuanNvbgogICAgIGZvciBQUk9EVUNUIGluICIke1BST0RVQ1RTW0BdfSI7IGRvCiAg
ICAgICAgIGlmIFtbICIkUFJPRFVDVCIgPT0gImNocm9tZSIgXV07IHRoZW4KICAgICAgICAgICAg
IHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0
YWJsZSkgLS1jaGFubmVsIGRldiIgIiQxIgogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0
X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gvZmlyZWZveCIKKyAgICAg
ICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PX4vYnVpbGQvZmlyZWZveC9maXJl
Zm94IiAiJDEiCiAgICAgICAgIGZpCiAgICAgZG9uZQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5
CmluZGV4IDc2MjRlYjBkNTE2Zi4uNDMwYzMyZWM2ZDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2Jz
LnB5CkBAIC00LDcgKzQsNiBAQCBpbXBvcnQgcmUKIGZyb20gLi53cHQudGVzdGZpbGVzIGltcG9y
dCBicmFuY2hfcG9pbnQsIGZpbGVzX2NoYW5nZWQKIAogZnJvbSB0b29scyBpbXBvcnQgbG9jYWxw
YXRocyAgIyBub3FhOiBGNDAxCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIHdwdF9yb290
ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
LCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCiAKQEAgLTEwOSw3ICsxMDgsNyBAQCBkZWYgZ2V0X2pv
YnMocGF0aHMsICoqa3dhcmdzKToKICAgICBpbmNsdWRlcyA9IGt3YXJncy5nZXQoImluY2x1ZGVz
IikKICAgICBpZiBpbmNsdWRlcyBpcyBub3QgTm9uZToKICAgICAgICAgaW5jbHVkZXMgPSBzZXQo
aW5jbHVkZXMpCi0gICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKGpvYl9wYXRoX21hcCk6
CisgICAgZm9yIGtleSwgdmFsdWUgaW4gam9iX3BhdGhfbWFwLml0ZW1zKCk6CiAgICAgICAgIGlm
IGluY2x1ZGVzIGlzIE5vbmUgb3Iga2V5IGluIGluY2x1ZGVzOgogICAgICAgICAgICAgcnVsZXNb
a2V5XSA9IFJ1bGVzZXQodmFsdWUpCiAKQEAgLTEyNCw3ICsxMjMsNyBAQCBkZWYgZ2V0X2pvYnMo
cGF0aHMsICoqa3dhcmdzKToKIAogICAgICMgRGVmYXVsdCBqb2JzIHNodWxkIHJ1biBldmVuIGlm
IHRoZXJlIHdlcmUgbm8gY2hhbmdlcwogICAgIGlmIG5vdCBwYXRoczoKLSAgICAgICAgZm9yIGpv
YiwgcGF0aF9yZSBpbiBpdGVyaXRlbXMoam9iX3BhdGhfbWFwKToKKyAgICAgICAgZm9yIGpvYiwg
cGF0aF9yZSBpbiBqb2JfcGF0aF9tYXAuaXRlbXMoKToKICAgICAgICAgICAgIGlmICIuKiIgaW4g
cGF0aF9yZToKICAgICAgICAgICAgICAgICBqb2JzLmFkZChqb2IpCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJl
dmlldy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvcHJfcHJldmlldy5weQppbmRleCAyMzk2ZTliOGFlZTguLmM2OTMyZGFiMjU1NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmlldy5weQpAQCAtMTIsNyArMTIsNiBAQCBpbXBv
cnQgYXJncGFyc2UKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBv
cnQgc3VicHJvY2VzcwogaW1wb3J0IHRpbWUKIAogaW1wb3J0IHJlcXVlc3RzCkBAIC0yNSw3ICsy
NCw3IEBAIEFQSV9SQVRFX0xJTUlUX1RIUkVTSE9MRCA9IDAuMgogTEFCRUwgPSAnc2FmZSBmb3Ig
cHJldmlldycKICMgVGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBhdHRlbXB0
cyB0byB2ZXJpZnkgdGhhdCBhIHN1Ym1pc3Npb24KICMgcHJldmlldyBpcyBhdmFpbGFibGUgb24g
dGhlIFB1bGwgUmVxdWVzdCBwcmV2aWV3IHNlcnZlcgotUE9MTElOR19QRVJJT0QgPSA1CitQT0xM
SU5HX1BFUklPRCA9IDE1CiAjIFB1bGwgUmVxdWVzdHMgZnJvbSBhdXRob3JzIHdpdGggdGhlIGZv
bGxvd2luZyBhc3NvY2lhdGlvbnMgdG8gdGhlIHByb2plY3QKICMgc2hvdWxkIGF1dG9tYXRpY2Fs
bHkgcmVjZWl2ZSBwcmV2aWV3cwogIwpAQCAtNDQsNyArNDMsNyBAQCBsb2dnaW5nLmJhc2ljQ29u
ZmlnKGxldmVsPWxvZ2dpbmcuSU5GTykKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQogCiBkZWYgZ2hfcmVxdWVzdChtZXRob2RfbmFtZSwgdXJsLCBib2R5PU5vbmUsIG1lZGlh
X3R5cGU9Tm9uZSk6Ci0gICAgZ2l0aHViX3Rva2VuID0gb3MuZW52aXJvblsnREVQTE9ZX1RPS0VO
J10KKyAgICBnaXRodWJfdG9rZW4gPSBvcy5lbnZpcm9uWydHSVRIVUJfVE9LRU4nXQogCiAgICAg
a3dhcmdzID0gewogICAgICAgICAnaGVhZGVycyc6IHsKQEAgLTYzLDEwICs2MiwyMSBAQCBkZWYg
Z2hfcmVxdWVzdChtZXRob2RfbmFtZSwgdXJsLCBib2R5PU5vbmUsIG1lZGlhX3R5cGU9Tm9uZSk6
CiAKICAgICBsb2dnZXIuaW5mbygnUmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICVzJywgcmVzcC5zdGF0
dXNfY29kZSkKIAorICAgICMgSWYgR2l0SHViIHRoaW5rcyB0aGUgZmllbGRzIGFyZSBpbnZhbGlk
LCBpdCB3aWxsIHNlbmQgYSA0MjIgYmFjayBhbmQKKyAgICAjIGluY2x1ZGUgZGVidWdnaW5nIGlu
Zm9ybWF0aW9uIGluIHRoZSBib2R5LiBTZWUKKyAgICAjIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1
Yi5jb20vdjMvI2NsaWVudC1lcnJvcnMKKyAgICBpZiByZXNwLnN0YXR1c19jb2RlID09IDQyMjoK
KyAgICAgICAgbG9nZ2VyLmVycm9yKHJlc3AuanNvbigpKQorCiAgICAgcmVzcC5yYWlzZV9mb3Jf
c3RhdHVzKCkKIAorICAgIGlmIHJlc3Auc3RhdHVzX2NvZGUgPT0gMjA0OgorICAgICAgICByZXR1
cm4gTm9uZQogICAgIHJldHVybiByZXNwLmpzb24oKQogCitjbGFzcyBHaXRIdWJSYXRlTGltaXRF
eGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGRlZiBndWFyZChyZXNvdXJjZSk6CiAg
ICAgJycnRGVjb3JhdGUgYSBgUHJvamVjdGAgaW5zdGFuY2UgbWV0aG9kIHdoaWNoIGludGVyYWN0
cyB3aXRoIHRoZSBHaXRIdWIKICAgICBBUEksIGVuc3VyaW5nIHRoYXQgdGhlIHN1YnNlcXVlbnQg
cmVxdWVzdCB3aWxsIG5vdCBkZXBsZXRlIHRoZSByZWxldmFudApAQCAtOTAsNyArMTAwLDcgQEAg
ZGVmIGd1YXJkKHJlc291cmNlKToKICAgICAgICAgICAgICkKIAogICAgICAgICAgICAgaWYgbGlt
aXQgYW5kIGZsb2F0KHJlbWFpbmluZykgLyBsaW1pdCA8IEFQSV9SQVRFX0xJTUlUX1RIUkVTSE9M
RDoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgcmFp
c2UgR2l0SHViUmF0ZUxpbWl0RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAnRXhpdGlu
ZyB0byBhdm9pZCBHaXRIdWIuY29tIEFQSSByZXF1ZXN0IHRocm90dGxpbmcuJwogICAgICAgICAg
ICAgICAgICkKIApAQCAtMTAzLDU0ICsxMTMsNiBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuX2dpdGh1Yl9wcm9qZWN0ID0g
Z2l0aHViX3Byb2plY3QKIAotICAgIEBndWFyZCgnY29yZScpCi0gICAgZGVmIGdldF9wdWxsX3Jl
cXVlc3Qoc2VsZiwgbnVtYmVyKToKLSAgICAgICAgdXJsID0gJ3t9L3JlcG9zL3t9L3B1bGxzL3t9
Jy5mb3JtYXQoCi0gICAgICAgICAgICBzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJvamVjdCwg
bnVtYmVyCi0gICAgICAgICkKLQotICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgUHVsbCBS
ZXF1ZXN0ICVzJywgbnVtYmVyKQotICAgICAgICByZXR1cm4gZ2hfcmVxdWVzdCgnR0VUJywgdXJs
KQotCi0gICAgQGd1YXJkKCdzZWFyY2gnKQotICAgIGRlZiBnZXRfcHVsbF9yZXF1ZXN0cyhzZWxm
LCB1cGRhdGVkX3NpbmNlKToKLSAgICAgICAgd2luZG93X3N0YXJ0ID0gdGltZS5zdHJmdGltZSgn
JVktJW0tJWRUJUg6JU06JVNaJywgdXBkYXRlZF9zaW5jZSkKLSAgICAgICAgdXJsID0gJ3t9L3Nl
YXJjaC9pc3N1ZXM/cT1yZXBvOnt9K2lzOnByK3VwZGF0ZWQ6Pnt9Jy5mb3JtYXQoCi0gICAgICAg
ICAgICBzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJvamVjdCwgd2luZG93X3N0YXJ0Ci0gICAg
ICAgICkKLQotICAgICAgICBsb2dnZXIuaW5mbygKLSAgICAgICAgICAgICdTZWFyY2hpbmcgZm9y
IFB1bGwgUmVxdWVzdHMgdXBkYXRlZCBzaW5jZSAlcycsIHdpbmRvd19zdGFydAotICAgICAgICAp
Ci0KLSAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKLQotICAgICAgICBsb2dn
ZXIuaW5mbygnRm91bmQgJWQgUHVsbCBSZXF1ZXN0cycsIGxlbihkYXRhWydpdGVtcyddKSkKLQot
ICAgICAgICBpZiBkYXRhWydpbmNvbXBsZXRlX3Jlc3VsdHMnXToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignSW5jb21wbGV0ZSByZXN1bHRzJykKLQotICAgICAgICByZXR1cm4ge3ByWydu
dW1iZXInXTogcHIgZm9yIHByIGluIGRhdGFbJ2l0ZW1zJ119Ci0KLSAgICBkZWYgcHVsbF9yZXF1
ZXN0X2lzX2Zyb21fZm9yayhzZWxmLCBwdWxsX3JlcXVlc3QpOgotICAgICAgICBwcl9udW1iZXIg
PSBwdWxsX3JlcXVlc3RbJ251bWJlciddCi0gICAgICAgIGxvZ2dlci5pbmZvKCdDaGVja2luZyBp
ZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBwcl9udW1iZXIpCi0KLSAgICAgICAg
IyBXZSBtYXkgYWxyZWFkeSBoYXZlIHRoaXMgaW5mb3JtYXRpb247IGlmIHNvIG5vIG5lZWQgdG8g
bWFrZSBhbm90aGVyCi0gICAgICAgICMgQVBJIGNhbGwuCi0gICAgICAgIGlmICdoZWFkJyBub3Qg
aW4gcHVsbF9yZXF1ZXN0OgotICAgICAgICAgICAgcHVsbF9yZXF1ZXN0ID0gc2VsZi5nZXRfcHVs
bF9yZXF1ZXN0KHByX251bWJlcikKLQotICAgICAgICByZXBvX25hbWUgPSBwdWxsX3JlcXVlc3Rb
J2hlYWQnXVsncmVwbyddWydmdWxsX25hbWUnXQotICAgICAgICBpc19mb3JrID0gcmVwb19uYW1l
ICE9IHNlbGYuX2dpdGh1Yl9wcm9qZWN0Ci0KLSAgICAgICAgbG9nZ2VyLmluZm8oCi0gICAgICAg
ICAgICAnUHVsbCByZXF1ZXN0ICVzIGlzIGZyb20gXCclc1wnLiBJcyBhIGZvcms6ICVzJywKLSAg
ICAgICAgICAgIHByX251bWJlciwgcmVwb19uYW1lLCBpc19mb3JrCi0gICAgICAgICkKLQotICAg
ICAgICByZXR1cm4gaXNfZm9yawotCiAgICAgQGd1YXJkKCdjb3JlJykKICAgICBkZWYgY3JlYXRl
X3JlZihzZWxmLCByZWZzcGVjLCByZXZpc2lvbik6CiAgICAgICAgIHVybCA9ICd7fS9yZXBvcy97
fS9naXQvcmVmcycuZm9ybWF0KHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1Yl9wcm9qZWN0KQpAQCAt
MTYyLDYgKzEyNCwyMyBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAgICAgICAgICAgICAnc2hh
JzogcmV2aXNpb24KICAgICAgICAgfSkKIAorICAgIEBndWFyZCgnY29yZScpCisgICAgZGVmIGdl
dF9yZWZfcmV2aXNpb24oc2VsZiwgcmVmc3BlYyk6CisgICAgICAgIHVybCA9ICd7fS9yZXBvcy97
fS9naXQvcmVmcy97fScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5faG9zdCwgc2VsZi5fZ2l0
aHViX3Byb2plY3QsIHJlZnNwZWMKKyAgICAgICAgKQorCisgICAgICAgIGxvZ2dlci5pbmZvKCdG
ZXRjaGluZyByZWYgIiVzIicsIHJlZnNwZWMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
Ym9keSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdS
ZWYgZGF0YTogJXMnLCBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKKyAgICAgICAgICAgIHJl
dHVybiBib2R5WydvYmplY3QnXVsnc2hhJ10KKyAgICAgICAgZXhjZXB0IHJlcXVlc3RzLmV4Y2Vw
dGlvbnMuSFRUUEVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLnJlc3BvbnNlLnN0YXR1c19j
b2RlID09IDQwNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmFp
c2UgZQorCiAgICAgQGd1YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX3JlZihzZWxmLCByZWZz
cGVjLCByZXZpc2lvbik6CiAgICAgICAgIHVybCA9ICd7fS9yZXBvcy97fS9naXQvcmVmcy97fScu
Zm9ybWF0KApAQCAtMTcyLDYgKzE1MSwxNiBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAKICAg
ICAgICAgZ2hfcmVxdWVzdCgnUEFUQ0gnLCB1cmwsIHsnc2hhJzogcmV2aXNpb259KQogCisgICAg
QGd1YXJkKCdjb3JlJykKKyAgICBkZWYgZGVsZXRlX3JlZihzZWxmLCByZWZzcGVjKToKKyAgICAg
ICAgdXJsID0gJ3t9L3JlcG9zL3t9L2dpdC9yZWZzL3t9Jy5mb3JtYXQoCisgICAgICAgICAgICBz
ZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJvamVjdCwgcmVmc3BlYworICAgICAgICApCisKKyAg
ICAgICAgbG9nZ2VyLmluZm8oJ0RlbGV0aW5nIHJlZiAiJXMiJywgcmVmc3BlYykKKworICAgICAg
ICBnaF9yZXF1ZXN0KCdERUxFVEUnLCB1cmwpCisKICAgICBAZ3VhcmQoJ2NvcmUnKQogICAgIGRl
ZiBjcmVhdGVfZGVwbG95bWVudChzZWxmLCBwdWxsX3JlcXVlc3QsIHJldmlzaW9uKToKICAgICAg
ICAgdXJsID0gJ3t9L3JlcG9zL3t9L2RlcGxveW1lbnRzJy5mb3JtYXQoCkBAIC0yMDYsNyArMTk1
LDcgQEAgY2xhc3MgUHJvamVjdChvYmplY3QpOgogICAgICAgICByZXR1cm4gZGVwbG95bWVudHMu
cG9wKCkgaWYgbGVuKGRlcGxveW1lbnRzKSBlbHNlIE5vbmUKIAogICAgIEBndWFyZCgnY29yZScp
Ci0gICAgZGVmIHVwZGF0ZV9kZXBsb3ltZW50KHNlbGYsIHRhcmdldCwgZGVwbG95bWVudCwgc3Rh
dGUsIGRlc2NyaXB0aW9uPScnKToKKyAgICBkZWYgYWRkX2RlcGxveW1lbnRfc3RhdHVzKHNlbGYs
IHRhcmdldCwgZGVwbG95bWVudCwgc3RhdGUsIGRlc2NyaXB0aW9uPScnKToKICAgICAgICAgaWYg
c3RhdGUgaW4gKCdwZW5kaW5nJywgJ3N1Y2Nlc3MnKToKICAgICAgICAgICAgIHByX251bWJlciA9
IGRlcGxveW1lbnRbJ2Vudmlyb25tZW50J11bbGVuKERFUExPWU1FTlRfUFJFRklYKTpdCiAgICAg
ICAgICAgICBlbnZpcm9ubWVudF91cmwgPSAne30ve30nLmZvcm1hdCh0YXJnZXQsIHByX251bWJl
cikKQEAgLTIyMiw3MyArMjExLDYgQEAgY2xhc3MgUHJvamVjdChvYmplY3QpOgogICAgICAgICAg
ICAgJ2Vudmlyb25tZW50X3VybCc6IGVudmlyb25tZW50X3VybAogICAgICAgICB9LCAnYXBwbGlj
YXRpb24vdm5kLmdpdGh1Yi5hbnQtbWFuLXByZXZpZXcranNvbicpCiAKLWNsYXNzIFJlbW90ZShv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnaXRodWJfcHJvamVjdCk6Ci0gICAgICAg
ICMgVGhlIHJlcG9zaXRvcnkgaW4gdGhlIEdpdEh1YiBBY3Rpb25zIGVudmlyb25tZW50IGlzIGNv
bmZpZ3VyZWQgd2l0aAotICAgICAgICAjIGEgcmVtb3RlIHdob3NlIFVSTCB1c2VzIHVuYXV0aGVu
dGljYXRlZCBIVFRQUywgbWFraW5nIGl0IHVuc3VpdGFibGUKLSAgICAgICAgIyBmb3IgcHVzaGlu
ZyBjaGFuZ2VzLgotICAgICAgICBzZWxmLl90b2tlbiA9IG9zLmVudmlyb25bJ0RFUExPWV9UT0tF
TiddCi0KLSAgICBkZWYgX2dpdChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgcmV0dXJuIHN1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0KFsKLSAgICAgICAgICAgICdnaXQnLAotICAgICAgICAgICAgJy1j
JywKLSAgICAgICAgICAgICdjcmVkZW50aWFsLnVzZXJuYW1lPXt9Jy5mb3JtYXQoc2VsZi5fdG9r
ZW4pLAotICAgICAgICAgICAgJy1jJywKLSAgICAgICAgICAgICdjb3JlLmFza1Bhc3M9dHJ1ZScs
Ci0gICAgICAgIF0gKyBjb21tYW5kKQotCi0gICAgZGVmIGdldF9yZXZpc2lvbihzZWxmLCByZWZz
cGVjKToKLSAgICAgICAgb3V0cHV0ID0gc2VsZi5fZ2l0KFsKLSAgICAgICAgICAgICdscy1yZW1v
dGUnLAotICAgICAgICAgICAgJ29yaWdpbicsCi0gICAgICAgICAgICAncmVmcy97fScuZm9ybWF0
KHJlZnNwZWMpCi0gICAgICAgIF0pCi0KLSAgICAgICAgaWYgbm90IG91dHB1dDoKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIG91dHB1dC5kZWNvZGUoJ3V0Zi04Jyku
c3BsaXQoKVswXQotCi0gICAgZGVmIGRlbGV0ZV9yZWYoc2VsZiwgcmVmc3BlYyk6Ci0gICAgICAg
IGZ1bGxfcmVmID0gJ3JlZnMve30nLmZvcm1hdChyZWZzcGVjKQotCi0gICAgICAgIGxvZ2dlci5p
bmZvKCdEZWxldGluZyByZWYgIiVzIicsIHJlZnNwZWMpCi0KLSAgICAgICAgc2VsZi5fZ2l0KFsK
LSAgICAgICAgICAgICdwdXNoJywKLSAgICAgICAgICAgICdvcmlnaW4nLAotICAgICAgICAgICAg
Jy0tZGVsZXRlJywKLSAgICAgICAgICAgIGZ1bGxfcmVmCi0gICAgICAgIF0pCi0KLSAgICBkZWYg
Z2V0X3B1bGxfcmVxdWVzdHNfd2l0aF9vcGVuX3JlZihzZWxmKToKLSAgICAgICAgJycnUmV0dXJu
cyBwdWxsIHJlcXVlc3RzIHRoYXQgaGF2ZSBhbiBvcGVuIHJlZi4KLQotICAgICAgICBUaGlzIGNo
ZWNrcyBmb3IgYWxsIHJlZnMgdGhhdCBtYXRjaCB0aGUgcGF0dGVybiAncmVmcy9wcnMtb3Blbi97
cHJ9JywKLSAgICAgICAgYW5kIHRoZW4gcmV0dXJucyB0aGVtIGFzIGEgbGlzdCBvZiBwdWxsIHJl
cXVlc3QgbnVtYmVycy4gTm90ZSB0aGF0IHRoaXMKLSAgICAgICAgbWV0aG9kIGRvZXMgbm90IHF1
ZXJ5IGdpdGh1YjsgdGhpcyBpcyBvbmx5IHRoZSBvcGVuIHB1bGwgcmVxdWVzdHMgYXMKLSAgICAg
ICAgZmFyIGFzIFdQVCBrbm93cy4KLSAgICAgICAgJycnCi0KLSAgICAgICAgcmVmc3BlYyA9ICdy
ZWZzL3Bycy1vcGVuLyonCi0KLSAgICAgICAgbG9nZ2VyLmluZm8oJ0ZldGNoaW5nIGFsbCByZWYg
bmFtZXMgbWF0Y2hpbmcgIiVzIicsIHJlZnNwZWMpCi0KLSAgICAgICAgb3V0cHV0ID0gc2VsZi5f
Z2l0KFsKLSAgICAgICAgICAgICdscy1yZW1vdGUnLAotICAgICAgICAgICAgJ29yaWdpbicsCi0g
ICAgICAgICAgICByZWZzcGVjLAotICAgICAgICBdKQotCi0gICAgICAgIGlmIG5vdCBvdXRwdXQ6
Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICByZWZfbmFtZXMgPSBbbGluZS5zcGxp
dCgpWzFdIGZvciBsaW5lIGluIG91dHB1dC5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpXQot
ICAgICAgICBsb2dnZXIuaW5mbygnJXMgcmVmIG5hbWVzIGZvdW5kJywgbGVuKHJlZl9uYW1lcykp
Ci0gICAgICAgIHJldHVybiBbaW50KHJlZl9uYW1lLnNwbGl0KCcvJylbMl0pIGZvciByZWZfbmFt
ZSBpbiByZWZfbmFtZXNdCi0KLQogZGVmIGlzX29wZW4ocHVsbF9yZXF1ZXN0KToKICAgICByZXR1
cm4gbm90IHB1bGxfcmVxdWVzdFsnY2xvc2VkX2F0J10KIApAQCAtMzA2LDEzMSArMjI4LDEyOCBA
QCBkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxfcmVxdWVzdCk6CiAgICAgICAg
ICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10gbm90IGluIEFVVE9NQVRJT05f
R0lUSFVCX1VTRVJTIGFuZAogICAgICAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fz
c29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TCiAgICAgICAgICAgICAp
Ci0gICAgICAgICkgYW5kCi0gICAgICAgICMgUXVlcnkgdGhpcyBsYXN0IGFzIGl0IHJlcXVpcmVz
IGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5Ci0gICAgICAgIG5vdCBwcm9qZWN0LnB1bGxfcmVx
dWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1ZXN0KQorICAgICAgICApCiAgICAgKQogCiBkZWYg
aXNfZGVwbG95ZWQoaG9zdCwgZGVwbG95bWVudCk6CiAgICAgd29ya3RyZWVfbmFtZSA9IGRlcGxv
eW1lbnRbJ2Vudmlyb25tZW50J11bbGVuKERFUExPWU1FTlRfUFJFRklYKTpdCi0gICAgcmVzcG9u
c2UgPSByZXF1ZXN0cy5nZXQoCi0gICAgICAgICd7fS8uZ2l0L3dvcmt0cmVlcy97fS9IRUFEJy5m
b3JtYXQoaG9zdCwgd29ya3RyZWVfbmFtZSkKLSAgICApCisgICAgdXJsID0gJ3t9Ly5naXQvd29y
a3RyZWVzL3t9L0hFQUQnLmZvcm1hdChob3N0LCB3b3JrdHJlZV9uYW1lKQorICAgIGxvZ2dlci5p
bmZvKCdJc3N1aW5nIHJlcXVlc3Q6IEdFVCAlcycsIHVybCkKKyAgICByZXNwb25zZSA9IHJlcXVl
c3RzLmdldCh1cmwpCiAKKyAgICBsb2dnZXIuaW5mbygnUmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICVz
JywgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0g
MjAwOgogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGxvZ2dlci5pbmZvKCdSZXNwb25zZSB0
ZXh0OiAlcycsIHJlc3BvbnNlLnRleHQuc3RyaXAoKSkKICAgICByZXR1cm4gcmVzcG9uc2UudGV4
dC5zdHJpcCgpID09IGRlcGxveW1lbnRbJ3NoYSddCiAKLWRlZiBzeW5jaHJvbml6ZShob3N0LCBn
aXRodWJfcHJvamVjdCwgd2luZG93KToKLSAgICAnJydJbnNwZWN0IGFsbCBQdWxsIFJlcXVlc3Rz
IHdoaWNoIGhhdmUgYmVlbiBtb2RpZmllZCBpbiBhIGdpdmVuIHdpbmRvdyBvZgotICAgIHRpbWUu
IEFkZCBvciByZW1vdmUgdGhlICJwcmV2aWV3IiBsYWJlbCBhbmQgdXBkYXRlIG9yIGRlbGV0ZSB0
aGUgcmVsZXZhbnQKLSAgICBnaXQgcmVmcyBhY2NvcmRpbmcgdG8gdGhlIHN0YXR1cyBvZiBlYWNo
IFB1bGwgUmVxdWVzdC4nJycKK2RlZiB1cGRhdGVfbWlycm9yX3JlZnMocHJvamVjdCwgcHVsbF9y
ZXF1ZXN0KToKKyAgICAnJydVcGRhdGUgdGhlIFdQVCByZWZzIHRoYXQgY29udHJvbCBtaXJyb3Jp
bmcgb2YgdGhpcyBwdWxsIHJlcXVlc3QuCiAKLSAgICBwcm9qZWN0ID0gUHJvamVjdChob3N0LCBn
aXRodWJfcHJvamVjdCkKLSAgICByZW1vdGUgPSBSZW1vdGUoZ2l0aHViX3Byb2plY3QpCisgICAg
VHdvIHNldHMgb2YgcmVmcyBhcmUgdXNlZCB0byBjb250cm9sIHdwdHByLmxpdmUncyBtaXJyb3Jp
bmcgb2YgcHVsbAorICAgIHJlcXVlc3RzOgogCi0gICAgcHVsbF9yZXF1ZXN0cyA9IHByb2plY3Qu
Z2V0X3B1bGxfcmVxdWVzdHMoCi0gICAgICAgIHRpbWUuZ210aW1lKHRpbWUudGltZSgpIC0gd2lu
ZG93KQotICAgICkKKyAgICAgICAgMS4gcmVmcy9wcnMtdHJ1c3RlZC1mb3ItcHJldmlldy97bnVt
YmVyfQorICAgICAgICAyLiByZWZzL3Bycy1vcGVuL3tudW1iZXJ9CiAKLSAgICAjIEl0IGlzIHBv
c3NpYmxlIHdlIG1heSBtaXNzIHNvbWUgcHVsbCByZXF1ZXN0cyBpZiB0aGlzIHNjcmlwdCBicmVh
a3Mgb3IgaXMKLSAgICAjIG5vdCBydW4gZm9yIGEgd2hpbGUgYW5kIHRoZSBQUiBmYWxscyBvdXRz
aWRlIHRoZSBjaGVja2VkIHdpbmRvdy4gVG8KLSAgICAjIGVuc3VyZSB0aGF0IGNsb3NlZCBwdWxs
IHJlcXVlc3RzIGFyZSBkZWxldGVkLCBleHRlbmQgdGhlIGxpc3Qgb2YgcHVsbAotICAgICMgcmVx
dWVzdHMgdG8gbG9vayBhdCB3aXRoIGFueSB0aGF0IGhhdmUgYW4gZXhpc3RpbmcgcmVmcy9wcnMt
b3Blbi97cHJ9IHJlZgotICAgICMgaW4gdGhlIHJlcG8uCi0gICAgZXhpc3RpbmdfcHJfbnVtYmVy
cyA9IHJlbW90ZS5nZXRfcHVsbF9yZXF1ZXN0c193aXRoX29wZW5fcmVmKCkKLSAgICBmb3IgcHJf
bnVtYmVyIGluIGV4aXN0aW5nX3ByX251bWJlcnM6Ci0gICAgICAgIGlmIHByX251bWJlciBpbiBw
dWxsX3JlcXVlc3RzOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcHVsbF9yZXF1ZXN0
ID0gcHJvamVjdC5nZXRfcHVsbF9yZXF1ZXN0KHByX251bWJlcikKLSAgICAgICAgcHVsbF9yZXF1
ZXN0c1twdWxsX3JlcXVlc3RbJ251bWJlciddXSA9IHB1bGxfcmVxdWVzdAotCi0gICAgZm9yIHB1
bGxfcmVxdWVzdCBpbiBwdWxsX3JlcXVlc3RzLnZhbHVlcygpOgotICAgICAgICBsb2dnZXIuaW5m
bygnUHJvY2Vzc2luZyBQdWxsIFJlcXVlc3QgIyUobnVtYmVyKWQnLCBwdWxsX3JlcXVlc3QpCi0K
LSAgICAgICAgcmVmc3BlY190cnVzdGVkID0gJ3Bycy10cnVzdGVkLWZvci1wcmV2aWV3L3tudW1i
ZXJ9Jy5mb3JtYXQoCi0gICAgICAgICAgICAqKnB1bGxfcmVxdWVzdAotICAgICAgICApCi0gICAg
ICAgIHJlZnNwZWNfb3BlbiA9ICdwcnMtb3Blbi97bnVtYmVyfScuZm9ybWF0KCoqcHVsbF9yZXF1
ZXN0KQotICAgICAgICByZXZpc2lvbl9sYXRlc3QgPSByZW1vdGUuZ2V0X3JldmlzaW9uKAotICAg
ICAgICAgICAgJ3B1bGwve251bWJlcn0vaGVhZCcuZm9ybWF0KCoqcHVsbF9yZXF1ZXN0KQotICAg
ICAgICApCi0gICAgICAgIHJldmlzaW9uX3RydXN0ZWQgPSByZW1vdGUuZ2V0X3JldmlzaW9uKHJl
ZnNwZWNfdHJ1c3RlZCkKLSAgICAgICAgcmV2aXNpb25fb3BlbiA9IHJlbW90ZS5nZXRfcmV2aXNp
b24ocmVmc3BlY19vcGVuKQorICAgIHdwdHByLmxpdmUgd2lsbCBvbmx5IG1pcnJvciBhIHB1bGwg
cmVxdWVzdCBpZiBib3RoIGV4aXN0IGZvciB0aGUgZ2l2ZW4gcHVsbAorICAgIHJlcXVlc3QgbnVt
YmVyOyBvdGhlcndpc2UgdGhlIHB1bGwgcmVxdWVzdCBpcyBlaXRoZXIgbm90IG9wZW4gb3IgaXMg
bm90CisgICAgdHJ1c3R3b3J0aHkgKGUuZy4gY2FtZSBmcm9tIHNvbWVvbmUgd2hvIGRvZXNuJ3Qg
aGF2ZSBwdXNoIGFjY2VzcyBhbnl3YXkuKQogCi0gICAgICAgIGlmIHNob3VsZF9iZV9taXJyb3Jl
ZChwcm9qZWN0LCBwdWxsX3JlcXVlc3QpOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1B1bGwg
UmVxdWVzdCBzaG91bGQgYmUgbWlycm9yZWQnKQorICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhl
IHJldmlzaW9uIHRoYXQgaXMgYmVpbmcgbWlycm9yZWQsIG9yIE5vbmUgaWYgdGhlCisgICAgcHVs
bCByZXF1ZXN0IHNob3VsZCBub3QgYmUgbWlycm9yZWQuCisgICAgJycnCiAKLSAgICAgICAgICAg
IGlmIHJldmlzaW9uX3RydXN0ZWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcm9qZWN0LmNy
ZWF0ZV9yZWYocmVmc3BlY190cnVzdGVkLCByZXZpc2lvbl9sYXRlc3QpCi0gICAgICAgICAgICBl
bGlmIHJldmlzaW9uX3RydXN0ZWQgIT0gcmV2aXNpb25fbGF0ZXN0OgotICAgICAgICAgICAgICAg
IHByb2plY3QudXBkYXRlX3JlZihyZWZzcGVjX3RydXN0ZWQsIHJldmlzaW9uX2xhdGVzdCkKKyAg
ICByZWZzcGVjX3RydXN0ZWQgPSAncHJzLXRydXN0ZWQtZm9yLXByZXZpZXcve251bWJlcn0nLmZv
cm1hdCgKKyAgICAgICAgKipwdWxsX3JlcXVlc3QKKyAgICApCisgICAgcmVmc3BlY19vcGVuID0g
J3Bycy1vcGVuL3tudW1iZXJ9Jy5mb3JtYXQoKipwdWxsX3JlcXVlc3QpCiAKLSAgICAgICAgICAg
IGlmIHJldmlzaW9uX29wZW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcm9qZWN0LmNyZWF0
ZV9yZWYocmVmc3BlY19vcGVuLCByZXZpc2lvbl9sYXRlc3QpCi0gICAgICAgICAgICBlbGlmIHJl
dmlzaW9uX29wZW4gIT0gcmV2aXNpb25fbGF0ZXN0OgotICAgICAgICAgICAgICAgIHByb2plY3Qu
dXBkYXRlX3JlZihyZWZzcGVjX29wZW4sIHJldmlzaW9uX2xhdGVzdCkKKyAgICByZXZpc2lvbl9s
YXRlc3QgPSBwdWxsX3JlcXVlc3RbJ2hlYWQnXVsnc2hhJ10KKyAgICByZXZpc2lvbl90cnVzdGVk
ID0gcHJvamVjdC5nZXRfcmVmX3JldmlzaW9uKHJlZnNwZWNfdHJ1c3RlZCkKKyAgICByZXZpc2lv
bl9vcGVuID0gcHJvamVjdC5nZXRfcmVmX3JldmlzaW9uKHJlZnNwZWNfb3BlbikKIAotICAgICAg
ICAgICAgaWYgcHJvamVjdC5nZXRfZGVwbG95bWVudChyZXZpc2lvbl9sYXRlc3QpIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgcHJvamVjdC5jcmVhdGVfZGVwbG95bWVudCgKLSAgICAgICAgICAg
ICAgICAgICAgcHVsbF9yZXF1ZXN0LCByZXZpc2lvbl9sYXRlc3QKLSAgICAgICAgICAgICAgICAp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnUHVsbCBSZXF1ZXN0IHNo
b3VsZCBub3QgYmUgbWlycm9yZWQnKQorICAgIGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0
LCBwdWxsX3JlcXVlc3QpOgorICAgICAgICBsb2dnZXIuaW5mbygnUHVsbCBSZXF1ZXN0IHNob3Vs
ZCBiZSBtaXJyb3JlZCcpCiAKLSAgICAgICAgICAgIGlmIG5vdCBoYXNfbWlycm9yaW5nX2xhYmVs
KHB1bGxfcmVxdWVzdCkgYW5kIHJldmlzaW9uX3RydXN0ZWQgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgcmVtb3RlLmRlbGV0ZV9yZWYocmVmc3BlY190cnVzdGVkKQorICAgICAgICBpZiBy
ZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CisgICAgICAgICAgICBwcm9qZWN0LmNyZWF0ZV9yZWYo
cmVmc3BlY190cnVzdGVkLCByZXZpc2lvbl9sYXRlc3QpCisgICAgICAgIGVsaWYgcmV2aXNpb25f
dHJ1c3RlZCAhPSByZXZpc2lvbl9sYXRlc3Q6CisgICAgICAgICAgICBwcm9qZWN0LnVwZGF0ZV9y
ZWYocmVmc3BlY190cnVzdGVkLCByZXZpc2lvbl9sYXRlc3QpCiAKLSAgICAgICAgICAgIGlmIHJl
dmlzaW9uX29wZW4gaXMgbm90IE5vbmUgYW5kIG5vdCBpc19vcGVuKHB1bGxfcmVxdWVzdCk6Ci0g
ICAgICAgICAgICAgICAgcmVtb3RlLmRlbGV0ZV9yZWYocmVmc3BlY19vcGVuKQorICAgICAgICBp
ZiByZXZpc2lvbl9vcGVuIGlzIE5vbmU6CisgICAgICAgICAgICBwcm9qZWN0LmNyZWF0ZV9yZWYo
cmVmc3BlY19vcGVuLCByZXZpc2lvbl9sYXRlc3QpCisgICAgICAgIGVsaWYgcmV2aXNpb25fb3Bl
biAhPSByZXZpc2lvbl9sYXRlc3Q6CisgICAgICAgICAgICBwcm9qZWN0LnVwZGF0ZV9yZWYocmVm
c3BlY19vcGVuLCByZXZpc2lvbl9sYXRlc3QpCiAKLWRlZiBkZXRlY3QoaG9zdCwgZ2l0aHViX3By
b2plY3QsIHRhcmdldCwgdGltZW91dCk6Ci0gICAgJycnTWFuYWdlIHRoZSBzdGF0dXMgb2YgYSBH
aXRIdWIgRGVwbG95bWVudCBieSBwb2xsaW5nIHRoZSBQdWxsIFJlcXVlc3QKLSAgICBwcmV2aWV3
IHdlYnNpdGUgdW50aWwgdGhlIERlcGxveW1lbnQgaXMgY29tcGxldGUgb3IgYSB0aW1lb3V0IGlz
Ci0gICAgcmVhY2hlZC4nJycKKyAgICAgICAgcmV0dXJuIHJldmlzaW9uX2xhdGVzdAogCi0gICAg
cHJvamVjdCA9IFByb2plY3QoaG9zdCwgZ2l0aHViX3Byb2plY3QpCisgICAgbG9nZ2VyLmluZm8o
J1B1bGwgUmVxdWVzdCBzaG91bGQgbm90IGJlIG1pcnJvcmVkJykKIAotICAgIHdpdGggb3Blbihv
cy5lbnZpcm9uWydHSVRIVUJfRVZFTlRfUEFUSCddKSBhcyBoYW5kbGU6Ci0gICAgICAgIGRhdGEg
PSBqc29uLmxvYWRzKGhhbmRsZS5yZWFkKCkpCisgICAgaWYgbm90IGhhc19taXJyb3JpbmdfbGFi
ZWwocHVsbF9yZXF1ZXN0KSBhbmQgcmV2aXNpb25fdHJ1c3RlZCBpcyBub3QgTm9uZToKKyAgICAg
ICAgcHJvamVjdC5kZWxldGVfcmVmKHJlZnNwZWNfdHJ1c3RlZCkKIAotICAgIGxvZ2dlci5pbmZv
KCdFdmVudCBkYXRhOiAlcycsIGpzb24uZHVtcHMoZGF0YSwgaW5kZW50PTIpKQorICAgIGlmIHJl
dmlzaW9uX29wZW4gaXMgbm90IE5vbmUgYW5kIG5vdCBpc19vcGVuKHB1bGxfcmVxdWVzdCk6Cisg
ICAgICAgIHByb2plY3QuZGVsZXRlX3JlZihyZWZzcGVjX29wZW4pCiAKLSAgICBkZXBsb3ltZW50
ID0gZGF0YVsnZGVwbG95bWVudCddCisgICAgIyBObyByZXZpc2lvbiB0byBiZSBkZXBsb3llZCB0
byB3cHRwci5saXZlCisgICAgcmV0dXJuIE5vbmUKIAotICAgIGlmIG5vdCBkZXBsb3ltZW50Wydl
bnZpcm9ubWVudCddLnN0YXJ0c3dpdGgoREVQTE9ZTUVOVF9QUkVGSVgpOgotICAgICAgICBsb2dn
ZXIuaW5mbygKLSAgICAgICAgICAgICdEZXBsb3ltZW50IGVudmlyb25tZW50ICIlcyIgaXMgdW5y
ZWNvZ25pemVkLiBFeGl0aW5nLicsCi0gICAgICAgICAgICBkZXBsb3ltZW50WydlbnZpcm9ubWVu
dCddCi0gICAgICAgICkKK2NsYXNzIERlcGxveW1lbnRGYWlsZWRFeGNlcHRpb24oRXhjZXB0aW9u
KToKKyAgICBwYXNzCisKK2RlZiBkZXBsb3kocHJvamVjdCwgdGFyZ2V0LCBwdWxsX3JlcXVlc3Qs
IHJldmlzaW9uLCB0aW1lb3V0KToKKyAgICAnJydDcmVhdGUgYSBHaXRIdWIgZGVwbG95bWVudCBm
b3IgdGhlIGdpdmVuIHB1bGwgcmVxdWVzdCBhbmQgcmV2aXNpb24uCisKKyAgICBUaGlzIG1ldGhv
ZCBjcmVhdGVzIGEgcGVuZGluZyBHaXRIdWIgZGVwbG95bWVudCwgd2FpdHMgZm9yIHRoZQorICAg
IGNvcnJlc3BvbmRpbmcgcmV2aXNpb24gdG8gYmUgYXZhaWxhYmxlIG9uIHdwdHByLmxpdmUgYW5k
IG1hcmtzIHRoZQorICAgIGRlcGxveW1lbnQgYXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIHJldmlzaW9u
IGRvZXMgbm90IGFwcGVhciBpbiB0aGUgZ2l2ZW4KKyAgICB0aW1lb3V0LCB0aGUgZGVwbG95bWVu
dCBpcyBtYXJrZWQgYXMgZXJyb3JlZCBpbnN0ZWFkLicnJworICAgIGlmIHByb2plY3QuZ2V0X2Rl
cGxveW1lbnQocmV2aXNpb24pIGlzIG5vdCBOb25lOgogICAgICAgICByZXR1cm4KIAorICAgIGRl
cGxveW1lbnQgPSBwcm9qZWN0LmNyZWF0ZV9kZXBsb3ltZW50KHB1bGxfcmVxdWVzdCwgcmV2aXNp
b24pCisKICAgICBtZXNzYWdlID0gJ1dhaXRpbmcgdXAgdG8ge30gc2Vjb25kcyBmb3IgRGVwbG95
bWVudCB7fSB0byBiZSBhdmFpbGFibGUgb24ge30nLmZvcm1hdCgKICAgICAgICAgdGltZW91dCwg
ZGVwbG95bWVudFsnZW52aXJvbm1lbnQnXSwgdGFyZ2V0CiAgICAgKQogICAgIGxvZ2dlci5pbmZv
KG1lc3NhZ2UpCi0gICAgcHJvamVjdC51cGRhdGVfZGVwbG95bWVudCh0YXJnZXQsIGRlcGxveW1l
bnQsICdwZW5kaW5nJywgbWVzc2FnZSkKKyAgICBwcm9qZWN0LmFkZF9kZXBsb3ltZW50X3N0YXR1
cyh0YXJnZXQsIGRlcGxveW1lbnQsICdwZW5kaW5nJywgbWVzc2FnZSkKIAogICAgIHN0YXJ0ID0g
dGltZS50aW1lKCkKLQogICAgIHdoaWxlIG5vdCBpc19kZXBsb3llZCh0YXJnZXQsIGRlcGxveW1l
bnQpOgogICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHN0YXJ0ID4gdGltZW91dDoKICAgICAgICAg
ICAgIG1lc3NhZ2UgPSAnRGVwbG95bWVudCBkaWQgbm90IGJlY29tZSBhdmFpbGFibGUgYWZ0ZXIg
e30gc2Vjb25kcycuZm9ybWF0KHRpbWVvdXQpCi0gICAgICAgICAgICBwcm9qZWN0LnVwZGF0ZV9k
ZXBsb3ltZW50KHRhcmdldCwgZGVwbG95bWVudCwgJ2Vycm9yJywgbWVzc2FnZSkKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbihtZXNzYWdlKQorICAgICAgICAgICAgcHJvamVjdC5hZGRfZGVw
bG95bWVudF9zdGF0dXModGFyZ2V0LCBkZXBsb3ltZW50LCAnZXJyb3InLCBtZXNzYWdlKQorICAg
ICAgICAgICAgcmFpc2UgRGVwbG95bWVudEZhaWxlZEV4Y2VwdGlvbihtZXNzYWdlKQogCiAgICAg
ICAgIHRpbWUuc2xlZXAoUE9MTElOR19QRVJJT0QpCiAKLSAgICByZXN1bHQgPSBwcm9qZWN0LnVw
ZGF0ZV9kZXBsb3ltZW50KHRhcmdldCwgZGVwbG95bWVudCwgJ3N1Y2Nlc3MnKQorICAgIHJlc3Vs
dCA9IHByb2plY3QuYWRkX2RlcGxveW1lbnRfc3RhdHVzKHRhcmdldCwgZGVwbG95bWVudCwgJ3N1
Y2Nlc3MnKQogICAgIGxvZ2dlci5pbmZvKGpzb24uZHVtcHMocmVzdWx0LCBpbmRlbnQ9MikpCiAK
K2RlZiBtYWluKGhvc3QsIGdpdGh1Yl9wcm9qZWN0LCB0YXJnZXQsIHRpbWVvdXQpOgorICAgIHBy
b2plY3QgPSBQcm9qZWN0KGhvc3QsIGdpdGh1Yl9wcm9qZWN0KQorCisgICAgd2l0aCBvcGVuKG9z
LmVudmlyb25bJ0dJVEhVQl9FVkVOVF9QQVRIJ10pIGFzIGhhbmRsZToKKyAgICAgICAgZGF0YSA9
IGpzb24ubG9hZChoYW5kbGUpCisKKyAgICBsb2dnZXIuaW5mbygnRXZlbnQgZGF0YTogJXMnLCBq
c29uLmR1bXBzKGRhdGEsIGluZGVudD0yKSkKKworICAgIHB1bGxfcmVxdWVzdCA9IGRhdGFbJ3B1
bGxfcmVxdWVzdCddCisKKyAgICBsb2dnZXIuaW5mbygnUHJvY2Vzc2luZyBQdWxsIFJlcXVlc3Qg
IyUobnVtYmVyKWQnLCBwdWxsX3JlcXVlc3QpCisKKyAgICByZXZpc2lvbl90b19taXJyb3IgPSB1
cGRhdGVfbWlycm9yX3JlZnMocHJvamVjdCwgcHVsbF9yZXF1ZXN0KQorICAgIGlmIHJldmlzaW9u
X3RvX21pcnJvcjoKKyAgICAgICAgZGVwbG95KHByb2plY3QsIHRhcmdldCwgcHVsbF9yZXF1ZXN0
LCByZXZpc2lvbl90b19taXJyb3IsIHRpbWVvdXQpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCi0gICAgICAgIGRlc2Ny
aXB0aW9uPScnJ1N5bmNocm9uaXplIHRoZSBzdGF0ZSBvZiBhIEdpdEh1Yi5jb20gcHJvamVjdCB3
aXRoIHRoZQotICAgICAgICAgICAgdW5kZXJseWluZyBnaXQgcmVwb3NpdG9yeSBpbiBvcmRlciB0
byBzdXBwb3J0IGEgZXh0ZXJuYWxseS1ob3N0ZWQKLSAgICAgICAgICAgIFB1bGwgUmVxdWVzdCBw
cmV2aWV3IHN5c3RlbS4gQ29tbXVuaWNhdGUgdGhlIHN0YXRlIG9mIHRoYXQgc3lzdGVtCi0gICAg
ICAgICAgICB2aWEgR2l0SHViIERlcGxveW1lbnRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIFB1bGwg
UmVxdWVzdC4nJycKKyAgICAgICAgZGVzY3JpcHRpb249JycnTWlycm9yIGEgcHVsbCByZXF1ZXN0
IHRvIGFuIGV4dGVybmFsbHktaG9zdGVkIHByZXZpZXcKKyAgICAgICAgICAgIHN5c3RlbSwgYW5k
IGNyZWF0ZSBhIEdpdEh1YiBEZXBsb3ltZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVsbAorICAg
ICAgICAgICAgcmVxdWVzdCBwb2ludGluZyBhdCB0aGUgcHJldmlldy4nJycKICAgICApCiAgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgJy0taG9zdCcsIHJlcXVpcmVkPVRydWUsIGhl
bHA9J3RoZSBsb2NhdGlvbiBvZiB0aGUgR2l0SHViIEFQSSBzZXJ2ZXInCkBAIC00NDEsMzYgKzM2
MCwxOSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICBoZWxwPScnJ3RoZSBH
aXRIdWIgb3JnYW5pemF0aW9uIGFuZCBHaXRIdWIgcHJvamVjdCBuYW1lLCBzZXBhcmF0ZWQgYnkK
ICAgICAgICAgICAgIGEgZm9yd2FyZCBzbGFzaCAoZS5nLiAid2ViLXBsYXRmb3JtLXRlc3RzL3dw
dCIpJycnCiAgICAgKQotICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnModGl0
bGU9J3N1YmNvbW1hbmRzJykKLQotICAgIHBhcnNlcl9zeW5jID0gc3VicGFyc2Vycy5hZGRfcGFy
c2VyKAotICAgICAgICAnc3luY2hyb25pemUnLCBoZWxwPXN5bmNocm9uaXplLl9fZG9jX18KLSAg
ICApCi0gICAgcGFyc2VyX3N5bmMuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS13aW5kb3cnLAot
ICAgICAgICB0eXBlPWludCwKLSAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKLSAgICAgICAgaGVscD0n
Jyd0aGUgbnVtYmVyIG9mIHNlY29uZHMgcHJpb3IgdG8gdGhlIGN1cnJlbnQgbW9tZW50IHdpdGhp
biB3aGljaAotICAgICAgICAgICAgdG8gc2VhcmNoIGZvciBHaXRIdWIgUHVsbCBSZXF1ZXN0cy4g
QW55IFB1bGwgUmVxdWVzdHMgdXBkYXRlZCBpbgotICAgICAgICAgICAgdGhpcyB0aW1lIGZyYW1l
IHdpbGwgYmUgY29uc2lkZXJlZCBmb3Igc3luY2hyb25pemF0aW9uLicnJwotICAgICkKLSAgICBw
YXJzZXJfc3luYy5zZXRfZGVmYXVsdHMoZnVuYz1zeW5jaHJvbml6ZSkKLQotICAgIHBhcnNlcl9k
ZXRlY3QgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2RldGVjdCcsIGhlbHA9ZGV0ZWN0Ll9fZG9j
X18pCi0gICAgcGFyc2VyX2RldGVjdC5hZGRfYXJndW1lbnQoCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgKICAgICAgICAgJy0tdGFyZ2V0JywKICAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKICAgICAg
ICAgaGVscD0nJyd0aGUgVVJMIG9mIHRoZSB3ZWJzaXRlIHRvIHdoaWNoIHN1Ym1pc3Npb24gcHJl
dmlld3MgYXJlCiAgICAgICAgICAgICBleHBlY3RlZCB0byBiZWNvbWUgYXZhaWxhYmxlJycnCiAg
ICAgKQotICAgIHBhcnNlcl9kZXRlY3QuYWRkX2FyZ3VtZW50KAorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCiAgICAgICAgICctLXRpbWVvdXQnLAogICAgICAgICB0eXBlPWludCwKICAgICAgICAg
cmVxdWlyZWQ9VHJ1ZSwKICAgICAgICAgaGVscD0nJyd0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8g
d2FpdCBmb3IgYSBzdWJtaXNzaW9uIHByZXZpZXcgdG8KICAgICAgICAgICAgIGJlY29tZSBhdmFp
bGFibGUgYmVmb3JlIHJlcG9ydGluZyBhIEdpdEh1YiBEZXBsb3ltZW50IGZhaWx1cmUnJycKICAg
ICApCi0gICAgcGFyc2VyX2RldGVjdC5zZXRfZGVmYXVsdHMoZnVuYz1kZXRlY3QpCiAKICAgICB2
YWx1ZXMgPSBkaWN0KHZhcnMocGFyc2VyLnBhcnNlX2FyZ3MoKSkpCi0gICAgdmFsdWVzLnBvcCgn
ZnVuYycpKCoqdmFsdWVzKQorICAgIG1haW4oKip2YWx1ZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVu
X3RjLnB5CmluZGV4IDY5YmY3MmZiNzQ1Yi4uYjdlNWQ3MjE0NmFjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3J1bl90Yy5weQpAQCAtMSw0ICsxLDQgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uMwogCiAiIiJXcmFwcGVyIHNjcmlwdCBmb3IgcnVubmluZyBqb2Jz
IGluIFRhc2tjbHVzdGVyCiAKQEAgLTU4LDYgKzU4LDggQEAgZGVmIHJ1bihjbWQsIHJldHVybl9z
dGRvdXQ9RmFsc2UsICoqa3dhcmdzKToKICAgICBwcmludCgiICIuam9pbihjbWQpKQogICAgIGlm
IHJldHVybl9zdGRvdXQ6CiAgICAgICAgIGYgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dAorICAg
ICAgICBpZiAiZW5jb2RpbmciIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAgICBrd2FyZ3NbImVu
Y29kaW5nIl0gPSAidXRmLTgiCiAgICAgZWxzZToKICAgICAgICAgZiA9IHN1YnByb2Nlc3MuY2hl
Y2tfY2FsbAogICAgIHJldHVybiBmKGNtZCwgKiprd2FyZ3MpCkBAIC0xNDYsNyArMTQ4LDcgQEAg
ZGVmIGluc3RhbGxfY2hyb21lKGNoYW5uZWwpOgogCiAgICAgZGVzdCA9IG9zLnBhdGguam9pbigi
L3RtcCIsIGRlYl9hcmNoaXZlKQogICAgIGRlYl91cmwgPSAiaHR0cHM6Ly9kbC5nb29nbGUuY29t
L2xpbnV4L2RpcmVjdC8lcyIgJSBkZWJfYXJjaGl2ZQotICAgIHdpdGggb3BlbihkZXN0LCAidyIp
IGFzIGY6CisgICAgd2l0aCBvcGVuKGRlc3QsICJ3YiIpIGFzIGY6CiAgICAgICAgIGdldF9kb3du
bG9hZF90b19kZXNjcmlwdG9yKGYsIGRlYl91cmwpCiAKICAgICBydW4oWyJzdWRvIiwgImFwdC1n
ZXQiLCAiLXFxeSIsICJ1cGRhdGUiXSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90YXNrY2x1
c3Rlci1ydW4ucHkKaW5kZXggNDlhN2QxNjMzODU2Li4zNTYwMjIwMzRiMTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFz
a2NsdXN0ZXItcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CkBAIC02Miw3ICs2Miw3IEBAIGRl
ZiBtYWluKHByb2R1Y3QsIGNoYW5uZWwsIGNvbW1pdF9yYW5nZSwgd3B0X2FyZ3MpOgogICAgICkK
ICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQogCi0gICAgc3VicHJvY2Vzcy5jYWxsKFsn
cHl0aG9uJywgJy4vd3B0JywgJ21hbmlmZXN0LWRvd25sb2FkJ10pCisgICAgc3VicHJvY2Vzcy5j
YWxsKFsncHl0aG9uMycsICcuL3dwdCcsICdtYW5pZmVzdC1kb3dubG9hZCddKQogCiAgICAgaWYg
Y29tbWl0X3JhbmdlOgogICAgICAgICBsb2dnZXIuaW5mbygKQEAgLTg4LDcgKzg4LDcgQEAgZGVm
IG1haW4ocHJvZHVjdCwgY2hhbm5lbCwgY29tbWl0X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgaWYg
cHJvZHVjdCA9PSAic2Vydm8iIGFuZCAiLS10ZXN0LXR5cGU9d2RzcGVjIiBpbiB3cHRfYXJnczoK
ICAgICAgICAgd3B0X2FyZ3MgPSBbaXRlbSBmb3IgaXRlbSBpbiB3cHRfYXJncyBpZiBub3QgaXRl
bS5zdGFydHN3aXRoKCItLXByb2Nlc3NlcyIpXQogCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwg
Ii4vd3B0IiwgInJ1biJdICsgd3B0X2FyZ3MgKyBbcHJvZHVjdF0KKyAgICBjb21tYW5kID0gWyJw
eXRob24zIiwgIi4vd3B0IiwgInJ1biJdICsgd3B0X2FyZ3MgKyBbcHJvZHVjdF0KIAogICAgIGxv
Z2dlci5pbmZvKCJFeGVjdXRpbmcgY29tbWFuZDogJXMiICUgIiAiLmpvaW4oY29tbWFuZCkpCiAg
ICAgd2l0aCBvcGVuKCIvaG9tZS90ZXN0L2FydGlmYWN0cy9jaGVja3J1bi5tZCIsICJhIikgYXMg
ZjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVh
NS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkK
QEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS90Yy9kZWNpc2lvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkKaW5kZXggZjUyZjViMDkzZjBm
Li5kMTlmZjc2OTJjZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9kZWNpc2lvbi5weQpA
QCAtNyw3ICs3LDYgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0
IE9yZGVyZWREaWN0CiAKIGltcG9ydCB0YXNrY2x1c3RlcgotZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcywgaXRlcnZhbHVlcwogCiBmcm9tIC4gaW1wb3J0IHRhc2tncmFwaAogCkBAIC00OCw3ICs0
Nyw3IEBAIGRlZiBmZXRjaF9ldmVudF9kYXRhKHF1ZXVlKToKIGRlZiBmaWx0ZXJfdHJpZ2dlcnMo
ZXZlbnQsIGFsbF90YXNrcyk6CiAgICAgaXNfcHIsIGJyYW5jaCA9IGdldF90cmlnZ2VycyhldmVu
dCkKICAgICB0cmlnZ2VyZWQgPSBPcmRlcmVkRGljdCgpCi0gICAgZm9yIG5hbWUsIHRhc2sgaW4g
aXRlcml0ZW1zKGFsbF90YXNrcyk6CisgICAgZm9yIG5hbWUsIHRhc2sgaW4gYWxsX3Rhc2tzLml0
ZW1zKCk6CiAgICAgICAgIGlmICJ0cmlnZ2VyIiBpbiB0YXNrOgogICAgICAgICAgICAgaWYgaXNf
cHIgYW5kICJwdWxsLXJlcXVlc3QiIGluIHRhc2tbInRyaWdnZXIiXToKICAgICAgICAgICAgICAg
ICB0cmlnZ2VyZWRbbmFtZV0gPSB0YXNrCkBAIC0xMDQsNyArMTAzLDcgQEAgZGVmIGdldF9leHRy
YV9qb2JzKGV2ZW50KToKIGRlZiBmaWx0ZXJfc2NoZWR1bGVfaWYoZXZlbnQsIHRhc2tzKToKICAg
ICBzY2hlZHVsZWQgPSBPcmRlcmVkRGljdCgpCiAgICAgcnVuX2pvYnMgPSBOb25lCi0gICAgZm9y
IG5hbWUsIHRhc2sgaW4gaXRlcml0ZW1zKHRhc2tzKToKKyAgICBmb3IgbmFtZSwgdGFzayBpbiB0
YXNrcy5pdGVtcygpOgogICAgICAgICBpZiAic2NoZWR1bGUtaWYiIGluIHRhc2s6CiAgICAgICAg
ICAgICBpZiAicnVuLWpvYiIgaW4gdGFza1sic2NoZWR1bGUtaWYiXToKICAgICAgICAgICAgICAg
ICBpZiBydW5fam9icyBpcyBOb25lOgpAQCAtMTM4LDcgKzEzNyw3IEBAIGRlZiBnZXRfZmV0Y2hf
cmV2KGV2ZW50KToKICAgICAgICAgICAgICAgICBpZiBub3Qgb3V0cHV0OgogICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBnZXQgY29tbWl0IGZvciAlcyIgJSByZWYp
CiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2hhID0gb3V0cHV0
LnNwbGl0KClbMF0KKyAgICAgICAgICAgICAgICAgICAgc2hhID0gb3V0cHV0LmRlY29kZSgidXRm
LTgiKS5zcGxpdCgpWzBdCiAgICAgICAgICAgICBydi5hcHBlbmQoc2hhKQogICAgICAgICBydiA9
IHR1cGxlKHJ2KQogICAgIGVsc2U6CkBAIC0yODMsNyArMjgyLDcgQEAgZGVmIGJ1aWxkX3Rhc2tf
Z3JhcGgoZXZlbnQsIGFsbF90YXNrcywgdGFza3MpOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbnZfZXh0cmE9ZW52X2V4dHJhKQogICAgICAgICB0YXNrX2lk
X21hcFt0YXNrX25hbWVdID0gKHRhc2tfaWQsIHRhc2tfZGF0YSkKIAotICAgIGZvciB0YXNrX25h
bWUsIHRhc2sgaW4gaXRlcml0ZW1zKHRhc2tzKToKKyAgICBmb3IgdGFza19uYW1lLCB0YXNrIGlu
IHRhc2tzLml0ZW1zKCk6CiAgICAgICAgIGlmIHRhc2tfbmFtZSA9PSAic2luay10YXNrIjoKICAg
ICAgICAgICAgICMgc2luay10YXNrIHdpbGwgYmUgY3JlYXRlZCBiZWxvdyBhdCB0aGUgZW5kIG9m
IHRoZSBvcmRlcmVkIGRpY3QsCiAgICAgICAgICAgICAjIHNvIHRoYXQgaXQgY2FuIGRlcGVuZCBv
biBhbGwgb3RoZXIgdGFza3MuCkBAIC0zMDksNyArMzA4LDcgQEAgZGVmIGJ1aWxkX3Rhc2tfZ3Jh
cGgoZXZlbnQsIGFsbF90YXNrcywgdGFza3MpOgogCiAKIGRlZiBjcmVhdGVfdGFza3MocXVldWUs
IHRhc2tfaWRfbWFwKToKLSAgICBmb3IgKHRhc2tfaWQsIHRhc2tfZGF0YSkgaW4gaXRlcnZhbHVl
cyh0YXNrX2lkX21hcCk6CisgICAgZm9yICh0YXNrX2lkLCB0YXNrX2RhdGEpIGluIHRhc2tfaWRf
bWFwLnZhbHVlcygpOgogICAgICAgICBxdWV1ZS5jcmVhdGVUYXNrKHRhc2tfaWQsIHRhc2tfZGF0
YSkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tncmFwaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFza2dyYXBoLnB5CmluZGV4IDhjNzhm
N2I1ZGJlNy4uZDVjODg5ZDFmYjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tncmFwaC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tn
cmFwaC5weQpAQCAtNCw5ICs0LDcgQEAgaW1wb3J0IHJlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAogZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQogCi1pbXBvcnQgc2l4CiBp
bXBvcnQgeWFtbAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBoZXJlID0gb3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKQogCkBAIC0yNyw3ICsyNSw3IEBAIGRlZiBsb2FkX3Rhc2tfZmlsZShw
YXRoKToKIAogCiBkZWYgdXBkYXRlX3JlY3Vyc2l2ZShkYXRhLCB1cGRhdGVfZGF0YSk6Ci0gICAg
Zm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHVwZGF0ZV9kYXRhKToKKyAgICBmb3Iga2V5LCB2
YWx1ZSBpbiB1cGRhdGVfZGF0YS5pdGVtcygpOgogICAgICAgICBpZiBrZXkgbm90IGluIGRhdGE6
CiAgICAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZQogICAgICAgICBlbHNlOgpAQCAtOTQsMTMg
KzkyLDEzIEBAIGRlZiByZXBsYWNlX3ZhcnMoaW5wdXRfc3RyaW5nLCB2YXJpYWJsZXMpOgogCiAK
IGRlZiBzdWJfdmFyaWFibGVzKGRhdGEsIHZhcmlhYmxlcyk6Ci0gICAgaWYgaXNpbnN0YW5jZShk
YXRhLCBzaXguc3RyaW5nX3R5cGVzKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6CiAg
ICAgICAgIHJldHVybiByZXBsYWNlX3ZhcnMoZGF0YSwgdmFyaWFibGVzKQogICAgIGlmIGlzaW5z
dGFuY2UoZGF0YSwgbGlzdCk6CiAgICAgICAgIHJldHVybiBbc3ViX3ZhcmlhYmxlcyhpdGVtLCB2
YXJpYWJsZXMpIGZvciBpdGVtIGluIGRhdGFdCiAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBkaWN0
KToKICAgICAgICAgcmV0dXJuIHtrZXk6IHN1Yl92YXJpYWJsZXModmFsdWUsIHZhcmlhYmxlcykK
LSAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoZGF0YSl9CisgICAg
ICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGF0YS5pdGVtcygpfQogICAgIHJldHVybiBk
YXRhCiAKIApAQCAtMTU0LDcgKzE1Miw3IEBAIGRlZiBsb2FkX3Rhc2tzKHRhc2tzX2RhdGEpOgog
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdvdCBkdXBsaWNhdGUgdGFzayBuYW1l
ICVzIiAlIG5ld19uYW1lKQogICAgICAgICAgICAgbWFwX3Jlc29sdmVkX3Rhc2tzW25ld19uYW1l
XSA9IHN1YnN0aXR1dGVfdmFyaWFibGVzKGRhdGEpCiAKLSAgICBmb3IgdGFza19kZWZhdWx0X25h
bWUsIGRhdGEgaW4gaXRlcml0ZW1zKG1hcF9yZXNvbHZlZF90YXNrcyk6CisgICAgZm9yIHRhc2tf
ZGVmYXVsdF9uYW1lLCBkYXRhIGluIG1hcF9yZXNvbHZlZF90YXNrcy5pdGVtcygpOgogICAgICAg
ICB0YXNrID0gcmVzb2x2ZV91c2UoZGF0YSwgdGFza3NfZGF0YVsiY29tcG9uZW50cyJdKQogICAg
ICAgICB0YXNrID0gcmVzb2x2ZV9uYW1lKHRhc2ssIHRhc2tfZGVmYXVsdF9uYW1lKQogICAgICAg
ICB0YXNrcy5leHRlbmQocmVzb2x2ZV9jaHVua3ModGFzaykpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rl
c3QueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS90Yy90YXNrcy90ZXN0LnltbAppbmRleCA1NzhiNzY5NDU1YjIuLjk1MjEyZTk3YmY3OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy90YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC0xMDUsMTEg
KzEwNSw2IEBAIGNvbXBvbmVudHM6CiAKICAgYnJvd3Nlci1zZXJ2bzoge30KIAotICB0b3gtcHl0
aG9uMjoKLSAgICBlbnY6Ci0gICAgICBUT1hFTlY6IHB5MjcKLSAgICAgIFBZX0NPTE9SUzogMAot
CiAgIHRveC1weXRob24zOgogICAgIGVudjoKICAgICAgIFRPWEVOVjogcHkzNgpAQCAtNDAyLDIw
ICszOTcsNiBAQCB0YXNrczoKICAgICAgICAgICAtIHVwZGF0ZV9idWlsdAogICAgICAgY29tbWFu
ZDogIi4vdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaCIKIAotICAtIHRvb2xzLyB1bml0dGVzdHMg
KFB5dGhvbiAyKToKLSAgICAgIHVzZToKLSAgICAgICAgLSB3cHQtYmFzZQotICAgICAgICAtIHRy
aWdnZXItcHIKLSAgICAgICAgLSB0b3gtcHl0aG9uMgotICAgICAgZGVzY3JpcHRpb246ID4tCi0g
ICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDIuNywgZXhj
bHVkaW5nIHdwdHJ1bm5lcgotICAgICAgY29tbWFuZDogLi90b29scy9jaS9jaV90b29sc191bml0
dGVzdC5zaAotICAgICAgZW52OgotICAgICAgICBIWVBPVEhFU0lTX1BST0ZJTEU6IGNpCi0gICAg
ICBzY2hlZHVsZS1pZjoKLSAgICAgICAgcnVuLWpvYjoKLSAgICAgICAgICAtIHRvb2xzX3VuaXR0
ZXN0Ci0KICAgLSB0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KToKICAgICAgIGRlc2NyaXB0
aW9uOiA+LQogICAgICAgICBVbml0IHRlc3RzIGZvciB0b29scyBydW5uaW5nIHVuZGVyIFB5dGhv
biAzLjYsIGV4Y2x1ZGluZyB3cHRydW5uZXIKQEAgLTQ0NywyOCArNDI4LDYgQEAgdGFza3M6CiAg
ICAgICAgIHJ1bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMv
IGludGVncmF0aW9uIHRlc3RzIChQeXRob24gMik6Ci0gICAgICBkZXNjcmlwdGlvbjogPi0KLSAg
ICAgICAgSW50ZWdyYXRpb24gdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDIu
NwotICAgICAgdXNlOgotICAgICAgICAtIHdwdC1iYXNlCi0gICAgICAgIC0gdHJpZ2dlci1wcgot
ICAgICAgICAtIHRveC1weXRob24yCi0gICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3Rvb2xz
X2ludGVncmF0aW9uX3Rlc3Quc2gKLSAgICAgIGluc3RhbGw6Ci0gICAgICAgIC0gbGlibnNzMy10
b29scwotICAgICAgb3B0aW9uczoKLSAgICAgICAgb29tLWtpbGxlcjogdHJ1ZQotICAgICAgICBi
cm93c2VyOgotICAgICAgICAgIC0gZmlyZWZveAotICAgICAgICAgIC0gY2hyb21lCi0gICAgICAg
IGNoYW5uZWw6IGV4cGVyaW1lbnRhbAotICAgICAgICB4dmZiOiB0cnVlCi0gICAgICAgIGhvc3Rz
OiB0cnVlCi0gICAgICBzY2hlZHVsZS1pZjoKLSAgICAgICAgcnVuLWpvYjoKLSAgICAgICAgICAt
IHdwdF9pbnRlZ3JhdGlvbgotCiAgIC0gdG9vbHMvIGludGVncmF0aW9uIHRlc3RzIChQeXRob24g
My42KToKICAgICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBm
b3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42CkBAIC01MTUsMjMgKzQ3NCw2IEBAIHRh
c2tzOgogICAgICAgICBydW4tam9iOgogICAgICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKLSAg
LSByZXNvdXJjZXMvIHRlc3RzIChQeXRob24gMik6Ci0gICAgICBkZXNjcmlwdGlvbjogPi0KLSAg
ICAgICAgVGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiByZXNvdXJj
ZXMvIHVuZGVyIFB5dGhvbiAyLjcKLSAgICAgIHVzZToKLSAgICAgICAgLSB3cHQtYmFzZQotICAg
ICAgICAtIHRyaWdnZXItcHIKLSAgICAgICAgLSB0b3gtcHl0aG9uMgotICAgICAgY29tbWFuZDog
Li90b29scy9jaS9jaV9yZXNvdXJjZXNfdW5pdHRlc3Quc2gKLSAgICAgIG9wdGlvbnM6Ci0gICAg
ICAgIGJyb3dzZXI6Ci0gICAgICAgICAgLSBmaXJlZm94Ci0gICAgICAgIHh2ZmI6IHRydWUKLSAg
ICAgICAgaG9zdHM6IHRydWUKLSAgICAgIHNjaGVkdWxlLWlmOgotICAgICAgICBydW4tam9iOgot
ICAgICAgICAgIC0gcmVzb3VyY2VzX3VuaXR0ZXN0Ci0gIAogICAtIHJlc291cmNlcy8gdGVzdHMg
KFB5dGhvbiAzLjYpOgogICAgICAgZGVzY3JpcHRpb246ID4tCiAgICAgICAgIFRlc3RzIGZvciB0
ZXN0aGFybmVzcy5qcyBhbmQgb3RoZXIgZmlsZXMgaW4gcmVzb3VyY2VzLyB1bmRlciBQeXRob24g
My42CkBAIC01NzIsNyArNTE0LDcgQEAgdGFza3M6CiAgICAgICAgIHJ1bi1qb2I6CiAgICAgICAg
ICAgLSByZXNvdXJjZXNfdW5pdHRlc3QKIAotICAtIGluZnJhc3RydWN0dXJlLyB0ZXN0czoKKyAg
LSBpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5dGhvbiAzKToKICAgICAgIGRlc2NyaXB0aW9uOiA+
LQogICAgICAgICBTbW9rZXRlc3RzIGZvciB3cHRydW5uZXIKICAgICAgIHZhcnM6CkBAIC01ODIs
MzEgKzUyNCw2IEBAIHRhc2tzOgogICAgICAgICAtIHRyaWdnZXItcHIKICAgICAgICAgLSBicm93
c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJh
c3RydWN0dXJlLnNoCi0gICAgICBpbnN0YWxsOgotICAgICAgICAtIGxpYm5zczMtdG9vbHMKLSAg
ICAgICAgLSBsaWJhcHBpbmRpY2F0b3IxCi0gICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgotICAg
ICAgb3B0aW9uczoKLSAgICAgICAgb29tLWtpbGxlcjogdHJ1ZQotICAgICAgICBicm93c2VyOgot
ICAgICAgICAgIC0gZmlyZWZveAotICAgICAgICAgIC0gY2hyb21lCi0gICAgICAgIGNoYW5uZWw6
IGV4cGVyaW1lbnRhbAotICAgICAgICB4dmZiOiB0cnVlCi0gICAgICAgIGhvc3RzOiBmYWxzZQot
ICAgICAgc2NoZWR1bGUtaWY6Ci0gICAgICAgIHJ1bi1qb2I6Ci0gICAgICAgICAgLSB3cHRydW5u
ZXJfaW5mcmFzdHJ1Y3R1cmUKLQotICAtIGluZnJhc3RydWN0dXJlLyB0ZXN0cyAoUHl0aG9uIDMp
OgotICAgICAgZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFNtb2tldGVzdHMgZm9yIHdwdHJ1bm5l
cgotICAgICAgdmFyczoKLSAgICAgICAgY2hhbm5lbDogbmlnaHRseQotICAgICAgdXNlOgotICAg
ICAgICAtIHdwdC1iYXNlCi0gICAgICAgIC0gdHJpZ2dlci1wcgotICAgICAgY29tbWFuZDogLi90
b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2ggLS1weTMKICAgICAgIGluc3Rh
bGw6CiAgICAgICAgIC0gcHl0aG9uMy1waXAKICAgICAgICAgLSBsaWJuc3MzLXRvb2xzCkBAIC02
MTUsNiArNTMyLDcgQEAgdGFza3M6CiAgICAgICBvcHRpb25zOgogICAgICAgICBvb20ta2lsbGVy
OiB0cnVlCiAgICAgICAgIGJyb3dzZXI6CisgICAgICAgICAgLSBmaXJlZm94CiAgICAgICAgICAg
LSBjaHJvbWUKICAgICAgICAgY2hhbm5lbDogZXhwZXJpbWVudGFsCiAgICAgICAgIHh2ZmI6IHRy
dWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvdGFza3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDIzYzI1MWI2OTAuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3RjL3Rhc2tzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy90YXNrcy90ZXN0LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0ZGF0YS93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGMvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkxNmVmZGM5ZTFlYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdGRhdGEvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL2Vwb2No
c19kYWlseV9wdXNoX2V2ZW50Lmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL21hc3Rlcl9wdXNoX2V2ZW50Lmpzb24K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rj
L3Rlc3RkYXRhL3ByX2V2ZW50Lmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL3ByX2V2ZW50X3Rlc3RzX2FmZmVjdGVk
Lmpzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF9kZWNpc2lvbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF9kZWNp
c2lvbi5weQppbmRleCA0MjViNTgyOWVkZDMuLjJmOTAxOGE0ZTBiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
cy90ZXN0X2RlY2lzaW9uLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF9kZWNpc2lvbi5weQpAQCAtMiw3ICsy
LDYgQEAgaW1wb3J0IG1vY2sKIGltcG9ydCBweXRlc3QKIAogZnJvbSB0b29scy5jaS50YyBpbXBv
cnQgZGVjaXNpb24KLWZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogCiBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoInJ1bl9qb2JzLHRhc2tzLGV4cGVjdGVkIiwgWwpAQCAtNDIsNyArNDEsNyBA
QCBkZWYgdGVzdF9leHRyYV9qb2JzX3ByKG1zZywgZXhwZWN0ZWQsIGV2ZW50KToKICAgICAgICAg
IiIiQ29weSBvYmosIGV4Y2VwdCBpZiBpdCdzIGEgc3RyaW5nIHdpdGggdGhlIHZhbHVlIDxtZXNz
YWdlPgogICAgICAgICByZXBsYWNlIGl0IHdpdGggdGhlIHZhbHVlIG9mIHRoZSBtc2cgYXJndW1l
bnQiIiIKICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgotICAgICAgICAgICAgcmV0
dXJuIHtrZXk6IHN1Yih2YWx1ZSkgZm9yIChrZXksIHZhbHVlKSBpbiBpdGVyaXRlbXMob2JqKX0K
KyAgICAgICAgICAgIHJldHVybiB7a2V5OiBzdWIodmFsdWUpIGZvciAoa2V5LCB2YWx1ZSkgaW4g
b2JqLml0ZW1zKCl9CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgogICAgICAg
ICAgICAgcmV0dXJuIFtzdWIodmFsdWUpIGZvciB2YWx1ZSBpbiBvYmpdCiAgICAgICAgIGVsaWYg
b2JqID09ICI8bWVzc2FnZT4iOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
cy90ZXN0X3ZhbGlkLnB5CmluZGV4IDRmNmJjYzJmMGE4ZC4uZDQ4OTIwNWIyNmY0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5CkBAIC0xMzAs
MTcgKzEzMCwxMyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ2xpbnQnXSks
CiAgICAgKCJwcl9ldmVudC5qc29uIiwgVHJ1ZSwgeyIudGFza2NsdXN0ZXIueW1sIiwgIi50cmF2
aXMueW1sIiwgInRvb2xzL2NpL3N0YXJ0LnNoIn0sCiAgICAgIFsnbGludCcsCi0gICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDIpJywKICAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRo
b24gMy42KScsCiAgICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAotICAgICAg
J3Rvb2xzLyBpbnRlZ3JhdGlvbiB0ZXN0cyAoUHl0aG9uIDIpJywKICAgICAgICd0b29scy8gaW50
ZWdyYXRpb24gdGVzdHMgKFB5dGhvbiAzLjYpJywKICAgICAgICd0b29scy8gaW50ZWdyYXRpb24g
dGVzdHMgKFB5dGhvbiAzLjgpJywKLSAgICAgICdyZXNvdXJjZXMvIHRlc3RzIChQeXRob24gMikn
LAogICAgICAgJ3Jlc291cmNlcy8gdGVzdHMgKFB5dGhvbiAzLjYpJywKICAgICAgICdyZXNvdXJj
ZXMvIHRlc3RzIChQeXRob24gMy44KScsCiAgICAgICAnZG93bmxvYWQtZmlyZWZveC1uaWdodGx5
JywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnLAogICAgICAgJ2luZnJhc3RydWN0dXJl
LyB0ZXN0cyAoUHl0aG9uIDMpJywKICAgICAgICdzaW5rLXRhc2snXSksCiAgICAgIyBNb3JlIHRl
c3RzIGFyZSBhZmZlY3RlZCBpbiB0aGUgYWN0dWFsIFBSIGJ1dCBpdCBzaG91bGRuJ3QgYWZmZWN0
IHRoZSBzY2hlZHVsZWQgdGFza3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rl
c3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjE4N2Y2
ZGQ5MzcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X2RlY2lzaW9uLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
cy90ZXN0X3Rhc2tncmFwaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI5MjM0YzZhZDE3ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2Rl
Y2lzaW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kb3dubG9hZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZ2l0aHViX2NoZWNrc19vdXRwdXQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3NpbmtfdGFz
ay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGMvdGFza2dyYXBoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMv
dGVzdF9wcl9wcmV2aWV3LnB5CmluZGV4IGVkNjMxMGMxZWExMi4uYTI2ODM4M2VkMGIxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQpA
QCAtMTQsMTAgKzE0LDExIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRo
cmVhZGluZwogCi1zdWJqZWN0ID0gb3MucGF0aC5qb2luKAotICAgIG9zLnBhdGguZGlybmFtZShv
cy5wYXRoLmFic3BhdGgoX19maWxlX18pKSwgJy4uJywgJ3ByX3ByZXZpZXcucHknCi0pCi10ZXN0
X2hvc3QgPSAnbG9jYWxob3N0Jworc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJykpKQoraW1wb3J0IHBy
X3ByZXZpZXcKKworCitURVNUX0hPU1QgPSAnbG9jYWxob3N0JwogCiAKIGRlZiBzYW1lX21lbWJl
cnMoYSwgYik6CkBAIC04MSw3ICs4MiwxMCBAQCBjbGFzcyBNb2NrSGFuZGxlcihCYXNlSFRUUFJl
cXVlc3RIYW5kbGVyLCBvYmplY3QpOgogICAgICAgICBzZWxmLnNlcnZlci5hY3R1YWxfdHJhZmZp
Yy5hcHBlbmQoKHJlcXVlc3QsIHJlc3BvbnNlKSkKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNl
KHJlc3BvbnNlWzBdKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgc2VsZi53
ZmlsZS53cml0ZShqc29uLmR1bXBzKHJlc3BvbnNlWzFdKS5lbmNvZGUoJ3V0Zi04JykpCisgICAg
ICAgIGlmIHNlbGYuc2VydmVyLnJlcG9uc2VfYm9keV9pc19qc29uOgorICAgICAgICAgICAgc2Vs
Zi53ZmlsZS53cml0ZShqc29uLmR1bXBzKHJlc3BvbnNlWzFdKS5lbmNvZGUoJ3V0Zi04JykpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlWzFdLmVu
Y29kZSgndXRmLTgnKSkKIAogICAgIGRlZiBkb19ERUxFVEUoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLmRvX2FsbCgpCkBAIC0xMDAsMTAgKzEwNCwxMSBAQCBjbGFzcyBNb2NrU2VydmVyKEhU
VFBTZXJ2ZXIsIG9iamVjdCk6CiAgICAgJycnSFRUUCBzZXJ2ZXIgdGhhdCByZXNwb25kcyB0byBh
bGwgcmVxdWVzdHMgd2l0aCBzdGF0dXMgY29kZSAyMDAgYW5kIGJvZHkKICAgICAne30nIHVubGVz
cyBhbiBhbHRlcm5hdGl2ZSBzdGF0dXMgY29kZSBhbmQgYm9keSBhcmUgc3BlY2lmaWVkIGZvciB0
aGUgZ2l2ZW4KICAgICBtZXRob2QgYW5kIHBhdGggaW4gdGhlIGByZXNwb25zZXNgIHBhcmFtZXRl
ci4nJycKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZXhwZWN0ZWRfdHJhZmZpYyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGV4cGVjdGVkX3RyYWZmaWMsIHJlcG9u
c2VfYm9keV9pc19qc29uPVRydWUpOgogICAgICAgICBzdXBlcihNb2NrU2VydmVyLCBzZWxmKS5f
X2luaXRfXyhhZGRyZXNzLCBNb2NrSGFuZGxlcikKICAgICAgICAgc2VsZi5leHBlY3RlZF90cmFm
ZmljID0gZXhwZWN0ZWRfdHJhZmZpYwogICAgICAgICBzZWxmLmFjdHVhbF90cmFmZmljID0gW10K
KyAgICAgICAgc2VsZi5yZXBvbnNlX2JvZHlfaXNfanNvbiA9IHJlcG9uc2VfYm9keV9pc19qc29u
CiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRh
cmdldD1sYW1iZGE6IHNlbGYuc2VydmVfZm9yZXZlcigpKS5zdGFydCgpCkBAIC0xMTUsMjEgKzEy
MCwzMSBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9iamVjdCk6CiAKIGNsYXNzIFJl
cXVlc3RzKG9iamVjdCk6CiAgICAgZ2V0X3JhdGUgPSAoJ0dFVCcsICcvcmF0ZV9saW1pdCcsIHt9
KQotICAgIHNlYXJjaCA9ICgnR0VUJywgJy9zZWFyY2gvaXNzdWVzJywge30pCi0gICAgcHJfZGV0
YWlscyA9ICgnR0VUJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vcHVsbHMvMjMnLCB7fSkK
ICAgICByZWZfY3JlYXRlX29wZW4gPSAoCi0gICAgICAgICdQT1NUJywgJy9yZXBvcy90ZXN0LW9y
Zy90ZXN0LXJlcG8vZ2l0L3JlZnMnLCB7J3JlZic6J3JlZnMvcHJzLW9wZW4vMjMnfQorICAgICAg
ICAnUE9TVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidy
ZWZzL3Bycy1vcGVuLzQ1J30KICAgICApCiAgICAgcmVmX2NyZWF0ZV90cnVzdGVkID0gKAogICAg
ICAgICAnUE9TVCcsCiAgICAgICAgICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZz
JywKLSAgICAgICAgeydyZWYnOidyZWZzL3Bycy10cnVzdGVkLWZvci1wcmV2aWV3LzIzJ30KKyAg
ICAgICAgeydyZWYnOidyZWZzL3Bycy10cnVzdGVkLWZvci1wcmV2aWV3LzQ1J30KKyAgICApCisg
ICAgcmVmX2dldF9vcGVuID0gKAorICAgICAgICAnR0VUJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0
LXJlcG8vZ2l0L3JlZnMvcHJzLW9wZW4vNDUnLCB7fQorICAgICkKKyAgICByZWZfZ2V0X3RydXN0
ZWQgPSAoCisgICAgICAgICdHRVQnLCAnL3JlcG9zL3Rlc3Qtb3JnL3Rlc3QtcmVwby9naXQvcmVm
cy9wcnMtdHJ1c3RlZC1mb3ItcHJldmlldy80NScsIHt9CiAgICAgKQogICAgIHJlZl91cGRhdGVf
b3BlbiA9ICgKLSAgICAgICAgJ1BBVENIJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vZ2l0
L3JlZnMvcHJzLW9wZW4vMjMnLCB7fQorICAgICAgICAnUEFUQ0gnLCAnL3JlcG9zL3Rlc3Qtb3Jn
L3Rlc3QtcmVwby9naXQvcmVmcy9wcnMtb3Blbi80NScsIHt9CiAgICAgKQogICAgIHJlZl91cGRh
dGVfdHJ1c3RlZCA9ICgKLSAgICAgICAgJ1BBVENIJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJl
cG8vZ2l0L3JlZnMvcHJzLXRydXN0ZWQtZm9yLXByZXZpZXcvMjMnLCB7fQorICAgICAgICAnUEFU
Q0gnLCAnL3JlcG9zL3Rlc3Qtb3JnL3Rlc3QtcmVwby9naXQvcmVmcy9wcnMtdHJ1c3RlZC1mb3It
cHJldmlldy80NScsIHt9CisgICAgKQorICAgIHJlZl9kZWxldGVfb3BlbiA9ICgKKyAgICAgICAg
J0RFTEVURScsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzL3Bycy1vcGVuLzQ1
Jywge30KKyAgICApCisgICAgcmVmX2RlbGV0ZV90cnVzdGVkID0gKAorICAgICAgICAnREVMRVRF
JywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vZ2l0L3JlZnMvcHJzLXRydXN0ZWQtZm9yLXBy
ZXZpZXcvNDUnLCB7fQogICAgICkKICAgICBkZXBsb3ltZW50X2dldCA9ICgnR0VUJywgJy9yZXBv
cy90ZXN0LW9yZy90ZXN0LXJlcG8vZGVwbG95bWVudHMnLCB7fSkKICAgICBkZXBsb3ltZW50X2Ny
ZWF0ZSA9ICgnUE9TVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2RlcGxveW1lbnRzJywg
e30pCkBAIC0xNjgsNyArMTgzLDkgQEAgY2xhc3MgUmVzcG9uc2VzKG9iamVjdCk6CiAKIEBjb250
ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgdGVtcF9yZXBvKCk6CisgICAgb3JpZ2luYWxfZGly
ID0gb3MuZ2V0Y3dkKCkKICAgICBkaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICBv
cy5jaGRpcihkaXJlY3RvcnkpCiAKICAgICB0cnk6CiAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tf
Y2FsbChbJ2dpdCcsICdpbml0J10sIGN3ZD1kaXJlY3RvcnkpCkBAIC0xOTIsMTM1ICsyMDksNzcg
QEAgZGVmIHRlbXBfcmVwbygpOgogCiAgICAgICAgIHlpZWxkIGRpcmVjdG9yeQogICAgIGZpbmFs
bHk6CisgICAgICAgIG9zLmNoZGlyKG9yaWdpbmFsX2RpcikKICAgICAgICAgc2h1dGlsLnJtdHJl
ZSgKICAgICAgICAgICAgIGRpcmVjdG9yeSwgaWdub3JlX2Vycm9ycz1GYWxzZSwgb25lcnJvcj1o
YW5kbGVfcmVtb3ZlX3JlYWRvbmx5CiAgICAgICAgICkKIAotZGVmIHN5bmNocm9uaXplKGV4cGVj
dGVkX3RyYWZmaWMsIHJlZnM9e30pOgotICAgIGVudiA9IHsKLSAgICAgICAgJ0RFUExPWV9UT0tF
Tic6ICdjMGZmZWUnCi0gICAgfQotICAgIGVudi51cGRhdGUob3MuZW52aXJvbikKLSAgICBzZXJ2
ZXIgPSBNb2NrU2VydmVyKCh0ZXN0X2hvc3QsIDApLCBleHBlY3RlZF90cmFmZmljKQotICAgIHRl
c3RfcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzc1sxXQotICAgIHJlbW90ZV9yZWZzID0ge30K
LQotICAgIHdpdGggdGVtcF9yZXBvKCkgYXMgbG9jYWxfcmVwbywgdGVtcF9yZXBvKCkgYXMgcmVt
b3RlX3JlcG8sIHNlcnZlcjoKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKAotICAgICAg
ICAgICAgWydnaXQnLCAnY29tbWl0JywgJy0tYWxsb3ctZW1wdHknLCAnLW0nLCAnZmlyc3QnXSwK
LSAgICAgICAgICAgIGN3ZD1yZW1vdGVfcmVwbwotICAgICAgICApCi0gICAgICAgIHN1YnByb2Nl
c3MuY2hlY2tfY2FsbCgKLSAgICAgICAgICAgIFsnZ2l0JywgJ2NvbW1pdCcsICctLWFsbG93LWVt
cHR5JywgJy1tJywgJ3NlY29uZCddLAotICAgICAgICAgICAgY3dkPXJlbW90ZV9yZXBvCi0gICAg
ICAgICkKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKAotICAgICAgICAgICAgWydnaXQn
LCAncmVtb3RlJywgJ2FkZCcsICdvcmlnaW4nLCByZW1vdGVfcmVwb10sIGN3ZD1sb2NhbF9yZXBv
Ci0gICAgICAgICkKK2RlZiB1cGRhdGVfbWlycm9yX3JlZnMocHVsbF9yZXF1ZXN0LCBleHBlY3Rl
ZF90cmFmZmljKToKKyAgICBvcy5lbnZpcm9uWydHSVRIVUJfVE9LRU4nXSA9ICdjMGZmZWUnCiAK
LSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlZnMuaXRlbXMoKToKLSAgICAgICAgICAgIHN1
YnByb2Nlc3MuY2hlY2tfY2FsbCgKLSAgICAgICAgICAgICAgICBbJ2dpdCcsICd1cGRhdGUtcmVm
JywgbmFtZSwgdmFsdWVdLAotICAgICAgICAgICAgICAgIGN3ZD1yZW1vdGVfcmVwbwotICAgICAg
ICAgICAgKQotCi0gICAgICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICBzdWJq
ZWN0LAotICAgICAgICAgICAgICAgICctLWhvc3QnLAotICAgICAgICAgICAgICAgICdodHRwOi8v
e306e30nLmZvcm1hdCh0ZXN0X2hvc3QsIHRlc3RfcG9ydCksCi0gICAgICAgICAgICAgICAgJy0t
Z2l0aHViLXByb2plY3QnLAotICAgICAgICAgICAgICAgICd0ZXN0LW9yZy90ZXN0LXJlcG8nLAot
ICAgICAgICAgICAgICAgICdzeW5jaHJvbml6ZScsCi0gICAgICAgICAgICAgICAgJy0td2luZG93
JywKLSAgICAgICAgICAgICAgICAnMzAwMCcKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBj
d2Q9bG9jYWxfcmVwbywKLSAgICAgICAgICAgIGVudj1lbnYKLSAgICAgICAgKQorICAgIGdpdGh1
Yl9zZXJ2ZXIgPSBNb2NrU2VydmVyKChURVNUX0hPU1QsIDApLCBleHBlY3RlZF90cmFmZmljKQor
ICAgIGdpdGh1Yl9wb3J0ID0gZ2l0aHViX3NlcnZlci5zZXJ2ZXJfYWRkcmVzc1sxXQogCi0gICAg
ICAgIGNoaWxkLmNvbW11bmljYXRlKCkKLSAgICAgICAgbGluZXMgPSBzdWJwcm9jZXNzLmNoZWNr
X291dHB1dCgKLSAgICAgICAgICAgIFsnZ2l0JywgJ2xzLXJlbW90ZScsICdvcmlnaW4nXSwgY3dk
PWxvY2FsX3JlcG8KKyAgICBtZXRob2RfdGhyZXcgPSBGYWxzZQorICAgIHdpdGggdGVtcF9yZXBv
KCksIGdpdGh1Yl9zZXJ2ZXI6CisgICAgICAgIHByb2plY3QgPSBwcl9wcmV2aWV3LlByb2plY3Qo
CisgICAgICAgICAgICAnaHR0cDovL3t9Ont9Jy5mb3JtYXQoVEVTVF9IT1NULCBnaXRodWJfcG9y
dCksCisgICAgICAgICAgICAndGVzdC1vcmcvdGVzdC1yZXBvJywKICAgICAgICAgKQotICAgICAg
ICBmb3IgbGluZSBpbiBsaW5lcy5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKS5zcGxpdCgnXG4nKToK
LSAgICAgICAgICAgIHJldmlzaW9uLCByZWYgPSBsaW5lLnNwbGl0KCkKLQotICAgICAgICAgICAg
aWYgbm90IHJlZiBvciByZWYgaW4gKCdIRUFEJywgJ3JlZnMvaGVhZHMvbWFzdGVyJyk6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJfcHJldmll
dy51cGRhdGVfbWlycm9yX3JlZnMocHJvamVjdCwgcHVsbF9yZXF1ZXN0KQorICAgICAgICBleGNl
cHQgcHJfcHJldmlldy5HaXRIdWJSYXRlTGltaXRFeGNlcHRpb246CisgICAgICAgICAgICBtZXRo
b2RfdGhyZXcgPSBUcnVlCiAKLSAgICAgICAgICAgIHJlbW90ZV9yZWZzW3JlZl0gPSByZXZpc2lv
bgorICAgIHJldHVybiAoCisgICAgICAgIG1ldGhvZF90aHJldywKKyAgICAgICAgZ2l0aHViX3Nl
cnZlci5hY3R1YWxfdHJhZmZpYywKKyAgICApCiAKLSAgICByZXR1cm4gY2hpbGQucmV0dXJuY29k
ZSwgc2VydmVyLmFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcwogCitkZWYgZGVwbG95KHByX251
bSwgcmV2aXNpb24sIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljLCBleHBlY3RlZF9wcmV2aWV3X3Ry
YWZmaWMpOgorICAgIG9zLmVudmlyb25bJ0dJVEhVQl9UT0tFTiddID0gJ2MwZmZlZScKIAotZGVm
IGRldGVjdChldmVudCwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdf
dHJhZmZpYyk6Ci0gICAgZW52ID0gewotICAgICAgICAnREVQTE9ZX1RPS0VOJzogJ2MwZmZlZScK
LSAgICB9Ci0gICAgZW52LnVwZGF0ZShvcy5lbnZpcm9uKQotICAgIGdpdGh1Yl9zZXJ2ZXIgPSBN
b2NrU2VydmVyKCh0ZXN0X2hvc3QsIDApLCBleHBlY3RlZF9naXRodWJfdHJhZmZpYykKKyAgICBn
aXRodWJfc2VydmVyID0gTW9ja1NlcnZlcigoVEVTVF9IT1NULCAwKSwgZXhwZWN0ZWRfZ2l0aHVi
X3RyYWZmaWMpCiAgICAgZ2l0aHViX3BvcnQgPSBnaXRodWJfc2VydmVyLnNlcnZlcl9hZGRyZXNz
WzFdCi0gICAgcHJldmlld19zZXJ2ZXIgPSBNb2NrU2VydmVyKCh0ZXN0X2hvc3QsIDApLCBleHBl
Y3RlZF9wcmV2aWV3X3RyYWZmaWMpCisgICAgcHJldmlld19zZXJ2ZXIgPSBNb2NrU2VydmVyKChU
RVNUX0hPU1QsIDApLCBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMsIHJlcG9uc2VfYm9keV9pc19q
c29uPUZhbHNlKQogICAgIHByZXZpZXdfcG9ydCA9IHByZXZpZXdfc2VydmVyLnNlcnZlcl9hZGRy
ZXNzWzFdCiAKLSAgICB3aXRoIHRlbXBfcmVwbygpIGFzIHJlcG8sIGdpdGh1Yl9zZXJ2ZXIsIHBy
ZXZpZXdfc2VydmVyOgotICAgICAgICBlbnZbJ0dJVEhVQl9FVkVOVF9QQVRIJ10gPSByZXBvICsg
Jy9ldmVudC5qc29uJwotCi0gICAgICAgIHdpdGggb3BlbihlbnZbJ0dJVEhVQl9FVkVOVF9QQVRI
J10sICd3JykgYXMgaGFuZGxlOgotICAgICAgICAgICAgaGFuZGxlLndyaXRlKGpzb24uZHVtcHMo
ZXZlbnQpKQotCi0gICAgICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICBzdWJq
ZWN0LAotICAgICAgICAgICAgICAgICctLWhvc3QnLAotICAgICAgICAgICAgICAgICdodHRwOi8v
e306e30nLmZvcm1hdCh0ZXN0X2hvc3QsIGdpdGh1Yl9wb3J0KSwKLSAgICAgICAgICAgICAgICAn
LS1naXRodWItcHJvamVjdCcsCi0gICAgICAgICAgICAgICAgJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycs
Ci0gICAgICAgICAgICAgICAgJ2RldGVjdCcsCi0gICAgICAgICAgICAgICAgJy0tdGFyZ2V0JywK
LSAgICAgICAgICAgICAgICAnaHR0cDovL3t9Ont9Jy5mb3JtYXQodGVzdF9ob3N0LCBwcmV2aWV3
X3BvcnQpLAotICAgICAgICAgICAgICAgICctLXRpbWVvdXQnLAotICAgICAgICAgICAgICAgICcx
JwotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIGN3ZD1yZXBvLAotICAgICAgICAgICAgZW52
PWVudgorICAgIG1ldGhvZF90aHJldyA9IEZhbHNlCisgICAgd2l0aCBnaXRodWJfc2VydmVyLCBw
cmV2aWV3X3NlcnZlcjoKKyAgICAgICAgcHJvamVjdCA9IHByX3ByZXZpZXcuUHJvamVjdCgKKyAg
ICAgICAgICAgICdodHRwOi8ve306e30nLmZvcm1hdChURVNUX0hPU1QsIGdpdGh1Yl9wb3J0KSwK
KyAgICAgICAgICAgICd0ZXN0LW9yZy90ZXN0LXJlcG8nLAogICAgICAgICApCi0gICAgICAgIGNo
aWxkLmNvbW11bmljYXRlKCkKKyAgICAgICAgdGFyZ2V0ID0gJ2h0dHA6Ly97fTp7fScuZm9ybWF0
KFRFU1RfSE9TVCwgcHJldmlld19wb3J0KQorICAgICAgICBwdWxsX3JlcXVlc3QgPSB7J251bWJl
cic6IHByX251bX0KKyAgICAgICAgdGltZW91dCA9IDEKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcHJfcHJldmlldy5kZXBsb3kocHJvamVjdCwgdGFyZ2V0LCBwdWxsX3JlcXVlc3QsIHJldmlz
aW9uLCB0aW1lb3V0KQorICAgICAgICBleGNlcHQgKHByX3ByZXZpZXcuR2l0SHViUmF0ZUxpbWl0
RXhjZXB0aW9uLCBwcl9wcmV2aWV3LkRlcGxveW1lbnRGYWlsZWRFeGNlcHRpb24pOgorICAgICAg
ICAgICAgbWV0aG9kX3RocmV3ID0gVHJ1ZQogCiAgICAgcmV0dXJuICgKLSAgICAgICAgY2hpbGQu
cmV0dXJuY29kZSwKKyAgICAgICAgbWV0aG9kX3RocmV3LAogICAgICAgICBnaXRodWJfc2VydmVy
LmFjdHVhbF90cmFmZmljLAogICAgICAgICBwcmV2aWV3X3NlcnZlci5hY3R1YWxfdHJhZmZpYwog
ICAgICkKIAotCi1kZWYgdGVzdF9zeW5jaHJvbml6ZV96ZXJvX3Jlc3VsdHMoKToKLSAgICBleHBl
Y3RlZF90cmFmZmljID0gWwotICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5u
b19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKLSAgICAgICAgICAgIDIwMCwK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRlbXMnOiBbXSwKLSAgICAgICAgICAg
ICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAg
KSkKLSAgICBdCi0KLSAgICByZXR1cm5jb2RlLCBhY3R1YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMg
PSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFmZmljKQotCi0gICAgYXNzZXJ0IHJldHVybmNvZGUg
PT0gMAotICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3Ry
YWZmaWMpCi0KLWRlZiB0ZXN0X3N5bmNocm9uaXplX2ZhaWxfc2VhcmNoX3Rocm90dGxlZCgpOgor
ZGVmIHRlc3RfdXBkYXRlX21pcnJvcl9yZWZzX2ZhaWxfcmF0ZV9saW1pdGVkKCk6CisgICAgcHVs
bF9yZXF1ZXN0ID0geworICAgICAgICAnbnVtYmVyJzogNDUsCisgICAgICAgICdoZWFkJzogeydz
aGEnOiAnYWJjMTIzJ30sCisgICAgICAgICdsYWJlbHMnOiBbXSwKKyAgICAgICAgJ3VzZXInOiB7
J2xvZ2luJzogJ3N0ZXBoZW5tY2dydWVyJ30sCisgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24n
OiAnQ09MTEFCT1JBVE9SJywKKyAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgfQogICAg
IGV4cGVjdGVkX3RyYWZmaWMgPSBbCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgKAogICAg
ICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICdyZXNvdXJjZXMn
OiB7Ci0gICAgICAgICAgICAgICAgICAgICdzZWFyY2gnOiB7CisgICAgICAgICAgICAgICAgICAg
ICdjb3JlJzogewogICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmluZyc6IDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAnbGltaXQnOiAxMAogICAgICAgICAgICAgICAgICAgICB9CkBA
IC0zMjksNDUxICsyODgsMjgwIEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX2ZhaWxfc2VhcmNoX3Ro
cm90dGxlZCgpOgogICAgICAgICApKQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCi0KLSAg
ICBhc3NlcnQgcmV0dXJuY29kZSAhPSAwCi0gICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3Rl
ZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKLQotZGVmIHRlc3Rfc3luY2hyb25pemVfZmFpbF9p
bmNvbXBsZXRlX3Jlc3VsdHMoKToKLSAgICBleHBlY3RlZF90cmFmZmljID0gWwotICAgICAgICAo
UmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0
cy5zZWFyY2gsICgKLSAgICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAnaXRlbXMnOiBbXSwKLSAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzog
VHJ1ZQotICAgICAgICAgICAgfQotICAgICAgICApKQotICAgIF0KLQotICAgIHJldHVybmNvZGUs
IGFjdHVhbF90cmFmZmljLCByZW1vdmVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZm
aWMpCisgICAgbWV0aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVm
cygKKyAgICAgICAgcHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAg
YXNzZXJ0IHJldHVybmNvZGUgIT0gMAorICAgIGFzc2VydCBtZXRob2RfdGhyZXcKICAgICBhc3Nl
cnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCiBkZWYg
dGVzdF9zeW5jaHJvbml6ZV9pZ25vcmVfY2xvc2VkKCk6CisgICAgIyBObyBleGlzdGluZyByZWZz
LCBidXQgYSBjbG9zZWQgUFIgZXZlbnQgY29tZXMgaW4uIE5vdGhpbmcgc2hvdWxkIGhhcHBlbi4K
KyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAgICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hl
YWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAn
dXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1ZXInfSwKKyAgICAgICAgJ2F1dGhvcl9hc3Nv
Y2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xvc2VkX2F0JzogJzIwMTktMTAt
MjgnLAorICAgIH0KICAgICBleHBlY3RlZF90cmFmZmljID0gWwogICAgICAgICAoUmVxdWVzdHMu
Z2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gs
ICgKLSAgICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRl
bXMnOiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdu
dW1iZXInOiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiAnMjAxOS0xMC0yOCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5jb21w
bGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSkKKyAgICAgICAg
KFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3RlZCwgKDQwNCwge30pKSwKKyAgICAgICAgKFJlcXVlc3Rz
LmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dl
dF9vcGVuLCAoNDA0LCB7fSkpLAogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFm
ZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0
aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAg
cHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVy
bmNvZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVf
bWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3lu
Y2hyb25pemVfc3luY19jb2xsYWJvcmF0b3IoKToKK2RlZiB0ZXN0X3VwZGF0ZV9taXJyb3JfcmVm
c19jb2xsYWJvcmF0b3IoKToKKyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAgICdudW1iZXIn
OiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAgICAgJ2xhYmVs
cyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1ZXInfSwKKyAg
ICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xv
c2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVz
dHMucmVmX2dldF90cnVzdGVkLCAoNDA0LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfZ2V0X29wZW4s
ICg0MDQsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xp
bWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAot
ICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAg
IChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVl
c3RzLnNlYXJjaCwgKAotICAgICAgICAgICAgMjAwLAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2xhYmVscyc6
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5j
b21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCi0gICAg
ICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICdoZWFkJzogewotICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICApKSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAg
ICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAo
UmVxdWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpLAotICAgICAgICAoUmVxdWVz
dHMuZGVwbG95bWVudF9nZXQsICgyMDAsIHt9KSksCi0gICAgICAgIChSZXF1ZXN0cy5kZXBsb3lt
ZW50X2NyZWF0ZSwgKDIwMCwge30pKQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAg
bWV0aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYywgPSB1cGRhdGVfbWlycm9yX3JlZnMoCisgICAg
ICAgIHB1bGxfcmVxdWVzdCwgZXhwZWN0ZWRfdHJhZmZpYworICAgICkKIAotICAgIGFzc2VydCBy
ZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgbm90IG1ldGhvZF90aHJldwogICAgIGFzc2VydCBz
YW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCiAKLWRlZiB0ZXN0
X3N5bmNocm9uaXplX2lnbm9yZV9jb2xsYWJvcmF0b3JfYm90KCk6CitkZWYgdGVzdF91cGRhdGVf
bWlycm9yX3JlZnNfaWdub3JlX2NvbGxhYm9yYXRvcl9ib3QoKToKKyAgICBwdWxsX3JlcXVlc3Qg
PSB7CisgICAgICAgICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMx
MjMnfSwKKyAgICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAn
Y2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6
ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAg
ZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCi0gICAgICAgICAgICAy
MDAsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzogW10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnY2xvc2VkX2F0JzogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeyds
b2dpbic6ICdjaHJvbWl1bS13cHQtZXhwb3J0LWJvdCd9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InCi0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jl
c3VsdHMnOiBGYWxzZQotICAgICAgICAgICAgfQotICAgICAgICApKQotICAgIF0KLQotICAgIHJl
dHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVj
dGVkX3RyYWZmaWMpCi0KLSAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCi0gICAgYXNzZXJ0IHNh
bWVfbWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKLQotZGVmIHRlc3Rf
c3luY2hyb25pemVfaWdub3JlX3VudHJ1c3RlZF9jb250cmlidXRvcigpOgotICAgIGV4cGVjdGVk
X3RyYWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5yZWZfZ2V0X3RydXN0ZWQsICg0MDQsIHt9
KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAg
ICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAotICAgICAgICAgICAgMjAwLAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xhYmVscyc6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09OVFJJQlVU
T1InCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQotICAgICAgICAgICAgfQotICAgICAg
ICApKQorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF9vcGVuLCAoNDA0LCB7fSkpLAogICAgIF0K
IAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9u
aXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9
IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAgcHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFm
ZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFzc2VydCBub3Qg
bWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBh
Y3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3B1bGxfcmVxdWVz
dF9mcm9tX2ZvcmsoKToKK2RlZiB0ZXN0X3VwZGF0ZV9taXJyb3JfcmVmc19pZ25vcmVfdW50cnVz
dGVkX2NvbnRyaWJ1dG9yKCk6CisgICAgcHVsbF9yZXF1ZXN0ID0geworICAgICAgICAnbnVtYmVy
JzogNDUsCisgICAgICAgICdoZWFkJzogeydzaGEnOiAnYWJjMTIzJ30sCisgICAgICAgICdsYWJl
bHMnOiBbXSwKKyAgICAgICAgJ3VzZXInOiB7J2xvZ2luJzogJ3N0ZXBoZW5tY2dydWVyJ30sCisg
ICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09OVFJJQlVUT1InLAorICAgICAgICAnY2xv
c2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVz
dHMucmVmX2dldF90cnVzdGVkLCAoNDA0LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKLSAg
ICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRlbXMnOiBb
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXIn
OiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAg
J3VzZXInOiB7J2xvZ2luJzogJ2dyYWNlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXV0
aG9yX2Fzc29jaWF0aW9uJzogJ0NPTExBQk9SQVRPUicKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6
IEZhbHNlCi0gICAgICAgICAgICB9Ci0gICAgICAgICkpLAotICAgICAgICAoUmVxdWVzdHMucHJf
ZGV0YWlscywgKDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaGVhZCc6IHsK
LSAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAn
ZnVsbF9uYW1lJzogJ3NvbWUtb3RoZXItb3JnL3Rlc3QtcmVwbycKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCisgICAg
ICAgIChSZXF1ZXN0cy5yZWZfZ2V0X29wZW4sICg0MDQsIHt9KSksCiAgICAgXQogCi0gICAgcmV0
dXJuY29kZSwgYWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhwZWN0
ZWRfdHJhZmZpYykKKyAgICBtZXRob2RfdGhyZXcsIGFjdHVhbF90cmFmZmljID0gdXBkYXRlX21p
cnJvcl9yZWZzKAorICAgICAgICBwdWxsX3JlcXVlc3QsIGV4cGVjdGVkX3RyYWZmaWMKKyAgICAp
CiAKLSAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IG5vdCBtZXRob2RfdGhy
ZXcKICAgICBhc3NlcnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFm
ZmljKQogCi1kZWYgdGVzdF9zeW5jaHJvbml6ZV9zeW5jX3RydXN0ZWRfY29udHJpYnV0b3IoKToK
K2RlZiB0ZXN0X3VwZGF0ZV9taXJyb3JfcmVmc190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CisgICAg
cHVsbF9yZXF1ZXN0ID0geworICAgICAgICAnbnVtYmVyJzogNDUsCisgICAgICAgICdoZWFkJzog
eydzaGEnOiAnYWJjMTIzJ30sCisgICAgICAgICMgdXNlciBoZXJlIGlzIGEgY29udHJpYnV0b3Ig
KHVudHJ1c3RlZCksIGJ1dCB0aGUgaXNzdWUKKyAgICAgICAgIyBoYXMgYmVlbiBsYWJlbGxlZCBh
cyBzYWZlLgorICAgICAgICAnbGFiZWxzJzogW3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31d
LAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnSGV4Y2xlcyd9LAorICAgICAgICAnYXV0aG9y
X2Fzc29jaWF0aW9uJzogJ0NPTlRSSUJVVE9SJywKKyAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUs
CisgICAgfQogICAgIGV4cGVjdGVkX3RyYWZmaWMgPSBbCiAgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9nZXRfdHJ1
c3RlZCwgKDQwNCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMu
bm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF9vcGVuLCAoNDA0LCB7fSkpLAog
ICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAg
IChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVl
c3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgK
LSAgICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRlbXMn
OiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdudW1i
ZXInOiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlciBoZXJlIGlzIGEgY29udHJp
YnV0b3IgKHVudHJ1c3RlZCksIGJ1dCB0aGUgaXNzdWUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICMgaGFzIGJlZW4gbGFiZWxsZWQgYXMgc2FmZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICds
YWJlbHMnOiBbeyduYW1lJzogJ3NhZmUgZm9yIHByZXZpZXcnfV0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICd1c2Vy
Jzogeydsb2dpbic6ICdIZXhjbGVzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXV0aG9y
X2Fzc29jaWF0aW9uJzogJ0NPTlRSSUJVVE9SJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFs
c2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCi0gICAgICAgIChSZXF1ZXN0cy5wcl9kZXRh
aWxzLCAoMjAwLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdoZWFkJzogewotICAg
ICAgICAgICAgICAgICAgICAncmVwbyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmdWxs
X25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICApKSwKICAgICAgICAgKFJlcXVl
c3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV90
cnVzdGVkLCAoMjAwLCB7fSkpLAotICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgy
MDAsIFtdKSksCi0gICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2NyZWF0ZSwgKDIwMCwge30p
KQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9
IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0aG9kX3RocmV3LCBhY3R1YWxf
dHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAgcHVsbF9yZXF1ZXN0LCBleHBl
Y3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFz
c2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3RlZF90
cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAogZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY19ib3Rf
d2l0aF9sYWJlbCgpOgorICAgIHB1bGxfcmVxdWVzdCA9IHsKKyAgICAgICAgJ251bWJlcic6IDQ1
LAorICAgICAgICAnaGVhZCc6IHsnc2hhJzogJ2FiYzEyMyd9LAorICAgICAgICAjIHVzZXIgaGVy
ZSBpcyBhIGJvdCB3aGljaCBpcyBub3JtYWxseSBub3QgbWlycm9yZWQsCisgICAgICAgICMgYnV0
IHRoZSBpc3N1ZSBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgorICAgICAgICAnbGFiZWxzJzog
W3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAndXNlcic6IHsnbG9naW4n
OiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlv
bic6ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICB9CiAg
ICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNw
b25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF90cnVzdGVkLCAoNDA0
LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCks
CisgICAgICAgIChSZXF1ZXN0cy5yZWZfZ2V0X29wZW4sICg0MDQsIHt9KSksCiAgICAgICAgIChS
ZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3Rz
LmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVz
cG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAotICAgICAgICAg
ICAgMjAwLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMgbm9y
bWFsbHkgbm90IG1pcnJvcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGlz
c3VlIGhhcyBiZWVuIGxhYmVsbGVkIGFzIHNhZmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAn
bGFiZWxzJzogW3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAotICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNl
cic6IHsnbG9naW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5jb21w
bGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCi0gICAgICAg
IChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICdoZWFkJzogewotICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAp
KSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAgICAg
ICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVx
dWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpLAotICAgICAgICAoUmVxdWVzdHMu
ZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCi0gICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50
X2NyZWF0ZSwgKDIwMCwge30pKQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFm
ZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0
aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAg
cHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVy
bmNvZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVf
bWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3lu
Y2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgorZGVmIHRlc3RfdXBkYXRlX21pcnJvcl9y
ZWZzX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKKyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAg
ICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAg
ICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1
ZXInfSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAg
ICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsK
ICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAg
ICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1
ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLmdl
dF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUs
IFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9u
c2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKKyAgICAgICAg
KFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3RlZCwgKAorICAgICAgICAgICAgMjAwLAogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xhYmVscyc6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6
IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2Un
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFC
T1JBVE9SJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKKyAgICAgICAgICAgICAgICAn
b2JqZWN0JzogeydzaGEnOiAnZGVmMjM0J30sCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAot
ICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgKFJlcXVlc3RzLmdl
dF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF9v
cGVuLCAoCisgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
J2hlYWQnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdyZXBvJzogewotICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCi0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJ29iamVjdCc6IHsn
c2hhJzogJ2RlZjIzNCd9LAogICAgICAgICAgICAgfQogICAgICAgICApKSwKLSAgICAgICAgKFJl
cXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRl
X29wZW4sICgyMDAsIHt9KSksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2Vz
Lm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl91cGRhdGVfdHJ1c3RlZCwgKDIwMCwg
e30pKSwKLSAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCiAg
ICAgXQotICAgIHJlZnMgPSB7Ci0gICAgICAgICdyZWZzL3B1bGwvMjMvaGVhZCc6ICdIRUFEJywK
LSAgICAgICAgJ3JlZnMvcHJzLW9wZW4vMjMnOiAnSEVBRH4nLAotICAgICAgICAncmVmcy9wcnMt
dHJ1c3RlZC1mb3ItcHJldmlldy8yMyc6ICdIRUFEficKLSAgICB9CiAKLSAgICByZXR1cm5jb2Rl
LCBhY3R1YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMgPSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFm
ZmljLCByZWZzKQorICAgIG1ldGhvZF90aHJldywgYWN0dWFsX3RyYWZmaWMgPSB1cGRhdGVfbWly
cm9yX3JlZnMoCisgICAgICAgIHB1bGxfcmVxdWVzdCwgZXhwZWN0ZWRfdHJhZmZpYworICAgICkK
IAotICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgbm90IG1ldGhvZF90aHJl
dwogICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZm
aWMpCiAKIGRlZiB0ZXN0X3N5bmNocm9uaXplX3VwZGF0ZV9tZW1iZXIoKToKKyAgICBwdWxsX3Jl
cXVlc3QgPSB7CisgICAgICAgICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6
ICdhYmMxMjMnfSwKKyAgICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnamdyYWhhbSd9LAorICAgICAgICAnYXV0aG9yX2Fzc29jaWF0aW9uJzogJ01FTUJFUics
CisgICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAorICAgIH0KICAgICBleHBlY3RlZF90cmFmZmlj
ID0gWwogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0g
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKDIw
MCwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3RlZCwgKAorICAgICAgICAgICAgMjAw
LAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2xhYmVscyc6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAg
J2Nsb3NlZF9hdCc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRp
b24nOiAnTUVNQkVSJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKKyAgICAgICAgICAg
ICAgICAnb2JqZWN0JzogeydzaGEnOiAnZGVmMjM0J30sCiAgICAgICAgICAgICB9CiAgICAgICAg
ICkpLAotICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgKFJlcXVl
c3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVm
X2dldF9vcGVuLCAoCisgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgJ2hlYWQnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdyZXBvJzogewotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCi0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJ29iamVj
dCc6IHsnc2hhJzogJ2RlZjIzNCd9LAogICAgICAgICAgICAgfQogICAgICAgICApKSwKLSAgICAg
ICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbeydzb21lJzogJ2RlcGxveW1lbnQn
fV0pKSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAog
ICAgICAgICAoUmVxdWVzdHMucmVmX3VwZGF0ZV9vcGVuLCAoMjAwLCB7fSkpLAorICAgICAgICAo
UmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0
cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSkKICAgICBdCi0gICAgcmVmcyA9IHsKLSAg
ICAgICAgJ3JlZnMvcHVsbC8yMy9oZWFkJzogJ0hFQUQnLAotICAgICAgICAncmVmcy9wcnMtb3Bl
bi8yMyc6ICdIRUFEficsCi0gICAgICAgICdyZWZzL3Bycy10cnVzdGVkLWZvci1wcmV2aWV3LzIz
JzogJ0hFQUR+JwotICAgIH0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1v
dGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMsIHJlZnMpCisgICAgbWV0aG9k
X3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAgcHVs
bF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNv
ZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVfbWVt
YmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3luY2hy
b25pemVfZGVsZXRlX2NvbGxhYm9yYXRvcigpOgotICAgIGV4cGVjdGVkX3RyYWZmaWMgPSBbCi0g
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAg
KFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAn
aXRlbXMnOiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdudW1iZXInOiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiAnMjAxOS0xMC0zMCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5j
b21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSkKLSAgICBd
Ci0gICAgcmVmcyA9IHsKLSAgICAgICAgJ3JlZnMvcHVsbC8yMy9oZWFkJzogJ0hFQUQnLAotICAg
ICAgICAncmVmcy9wcnMtb3Blbi8yMyc6ICdIRUFEficsCi0gICAgICAgICdyZWZzL3Bycy10cnVz
dGVkLWZvci1wcmV2aWV3LzIzJzogJ0hFQUR+JworZGVmIHRlc3RfdXBkYXRlX21pcnJvcl9yZWZz
X2RlbGV0ZV9jb2xsYWJvcmF0b3IoKToKKyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAgICdu
dW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAgICAg
J2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1ZXIn
fSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAgICAg
ICAnY2xvc2VkX2F0JzogMjAxOS0xMC0zMCwKICAgICB9Ci0KLSAgICByZXR1cm5jb2RlLCBhY3R1
YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMgPSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFmZmljLCBy
ZWZzKQotCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAotICAgIGFzc2VydCBzYW1lX21lbWJl
cnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCi0gICAgYXNzZXJ0IGxpc3QocmVt
b3RlX3JlZnMpID09IFsncmVmcy9wdWxsLzIzL2hlYWQnXQotCi0KLWRlZiB0ZXN0X3N5bmNocm9u
aXplX2RlbGV0ZV9vbGRfcHIoKToKLSAgICAjIE5vIHB1bGwgcmVxdWVzdHMgZnJvbSB0aGUgc2Vh
cmNoLCBidXQgb25lIG91dHN0YW5kaW5nIGNsb3NlZCBQUi4KICAgICBleHBlY3RlZF90cmFmZmlj
ID0gWwogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0g
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAg
KFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3Rl
ZCwgKAorICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdp
dGVtcyc6IFtdLAotICAgICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQor
ICAgICAgICAgICAgICAgICdvYmplY3QnOiB7J3NoYSc6ICdkZWYyMzQnfSwKICAgICAgICAgICAg
IH0KICAgICAgICAgKSksCi0gICAgICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAorICAg
ICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChS
ZXF1ZXN0cy5yZWZfZ2V0X29wZW4sICgKKyAgICAgICAgICAgIDIwMCwKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCi0gICAgICAgICAgICAgICAgJ2xhYmVscyc6
IFtdLAotICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiAnMjAxOS0xMC0yOCcsCi0gICAgICAg
ICAgICAgICAgJ2hlYWQnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdyZXBvJzogewotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCi0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJ29i
amVjdCc6IHsnc2hhJzogJ2RlZjIzNCd9LAogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAg
ICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAo
UmVxdWVzdHMucmVmX2RlbGV0ZV90cnVzdGVkLCAoMjA0LCBOb25lKSksCisgICAgICAgIChSZXF1
ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnJl
Zl9kZWxldGVfb3BlbiwgKDIwNCwgTm9uZSkpLAogICAgIF0KLSAgICByZWZzID0gewotICAgICAg
ICAncmVmcy9wdWxsLzIzL2hlYWQnOiAnSEVBRCcsCi0gICAgICAgICdyZWZzL3Bycy1vcGVuLzIz
JzogJ0hFQUR+JywKLSAgICAgICAgJ3JlZnMvcHJzLXRydXN0ZWQtZm9yLXByZXZpZXcvMjMnOiAn
SEVBRH4nCi0gICAgfQogCi0gICAgcmV0dXJuY29kZSwgYWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9y
ZWZzID0gc3luY2hyb25pemUoZXhwZWN0ZWRfdHJhZmZpYywgcmVmcykKLQotICAgIGFzc2VydCBy
ZXR1cm5jb2RlID09IDAKLSAgICBhc3NlcnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMs
IGFjdHVhbF90cmFmZmljKQotICAgIGFzc2VydCBsaXN0KHJlbW90ZV9yZWZzKSA9PSBbJ3JlZnMv
cHVsbC8yMy9oZWFkJ10KLQotCi1kZWYgdGVzdF9kZXRlY3RfaWdub3JlX3Vua25vd25fZW52KCk6
Ci0gICAgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMgPSBbXQotICAgIGV4cGVjdGVkX3ByZXZpZXdf
dHJhZmZpYyA9IFtdCi0gICAgZXZlbnQgPSB7Ci0gICAgICAgICdkZXBsb3ltZW50JzogewotICAg
ICAgICAgICAgJ2lkJzogMjQ2MDEsCi0gICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnZ2hvc3Rz
JywKLSAgICAgICAgICAgICdzaGEnOiAnMzIzMicKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybmNvZGUsIGFjdHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdfdHJhZmZpYyA9
IGRldGVjdCgKLSAgICAgICAgZXZlbnQsIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljLCBleHBlY3Rl
ZF9wcmV2aWV3X3RyYWZmaWMKKyAgICBtZXRob2RfdGhyZXcsIGFjdHVhbF90cmFmZmljID0gdXBk
YXRlX21pcnJvcl9yZWZzKAorICAgICAgICBwdWxsX3JlcXVlc3QsIGV4cGVjdGVkX3RyYWZmaWMK
ICAgICApCiAKLSAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCi0gICAgYXNzZXJ0IGxlbihhY3R1
YWxfZ2l0aHViX3RyYWZmaWMpID09IDAKLSAgICBhc3NlcnQgbGVuKGFjdHVhbF9wcmV2aWV3X3Ry
YWZmaWMpID09IDAKKyAgICBhc3NlcnQgbm90IG1ldGhvZF90aHJldworICAgIGFzc2VydCBzYW1l
X21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCiAKLWRlZiB0ZXN0X2Rl
dGVjdF9mYWlsX3NlYXJjaF90aHJvdHRsZWQoKToKK2RlZiB0ZXN0X2RlcGxveV9mYWlsX3JhdGVf
bGltaXRlZCgpOgogICAgIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljID0gWwogICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsICgKICAgICAgICAgICAgIDIwMCwKQEAgLTc4OCw5OSArNTc2LDEwNyBA
QCBkZWYgdGVzdF9kZXRlY3RfZmFpbF9zZWFyY2hfdGhyb3R0bGVkKCk6CiAgICAgICAgICkpCiAg
ICAgXQogICAgIGV4cGVjdGVkX3ByZXZpZXdfdHJhZmZpYyA9IFtdCi0gICAgZXZlbnQgPSB7Ci0g
ICAgICAgICdkZXBsb3ltZW50JzogewotICAgICAgICAgICAgJ2lkJzogMjQ2MDEsCi0gICAgICAg
ICAgICAnZW52aXJvbm1lbnQnOiAnd3B0LXByZXZpZXctNDUnLAotICAgICAgICAgICAgJ3NoYSc6
ICczMjMyJwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmV0dXJuY29kZSwgYWN0dWFsX2dpdGh1
Yl90cmFmZmljLCBhY3R1YWxfcHJldmlld190cmFmZmljID0gZGV0ZWN0KAotICAgICAgICBldmVu
dCwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdfdHJhZmZpYworICAg
IHByX251bSA9IDQ1CisgICAgcmV2aXNpb24gPSAiYWJjZGVmMTIzIgorICAgIG1ldGhvZF90aHJl
dywgYWN0dWFsX2dpdGh1Yl90cmFmZmljLCBhY3R1YWxfcHJldmlld190cmFmZmljID0gZGVwbG95
KAorICAgICAgICBwcl9udW0sIHJldmlzaW9uLCBleHBlY3RlZF9naXRodWJfdHJhZmZpYywgZXhw
ZWN0ZWRfcHJldmlld190cmFmZmljCiAgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0g
MQorICAgIGFzc2VydCBtZXRob2RfdGhyZXcKICAgICBhc3NlcnQgYWN0dWFsX2dpdGh1Yl90cmFm
ZmljID09IGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljCiAgICAgYXNzZXJ0IGFjdHVhbF9wcmV2aWV3
X3RyYWZmaWMgPT0gZXhwZWN0ZWRfcHJldmlld190cmFmZmljCiAKLWRlZiB0ZXN0X2RldGVjdF9z
dWNjZXNzKCk6CitkZWYgdGVzdF9kZXBsb3lfc3VjY2VzcygpOgorICAgIHByX251bSA9IDQ1Cisg
ICAgcmV2aXNpb24gPSAnYWJjZGVmMTIzJworCiAgICAgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMg
PSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAg
ICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAorICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5k
ZXBsb3ltZW50X2NyZWF0ZSwgKDIwMCwgeworICAgICAgICAgICAgJ2lkJzogMjQ2MDEsCisgICAg
ICAgICAgICAnc2hhJzogcmV2aXNpb24sCisgICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnd3B0
LXByZXZpZXctNDUnLAorICAgICAgICB9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfc3RhdHVz
X2NyZWF0ZV9wZW5kaW5nLCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUs
IFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X3N0YXR1
c19jcmVhdGVfc3VjY2VzcywgKDIwMCwge30pKQogICAgIF0KICAgICBleHBlY3RlZF9wcmV2aWV3
X3RyYWZmaWMgPSBbCi0gICAgICAgIChSZXF1ZXN0cy5wcmV2aWV3LCAoMjAwLCAzMjMyKSkKKyAg
ICAgICAgKFJlcXVlc3RzLnByZXZpZXcsICgyMDAsIHJldmlzaW9uKSkKICAgICBdCi0gICAgZXZl
bnQgPSB7Ci0gICAgICAgICdkZXBsb3ltZW50JzogewotICAgICAgICAgICAgJ2lkJzogMjQ2MDEs
Ci0gICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnd3B0LXByZXZpZXctNDUnLAotICAgICAgICAg
ICAgJ3NoYSc6ICczMjMyJwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmV0dXJuY29kZSwgYWN0
dWFsX2dpdGh1Yl90cmFmZmljLCBhY3R1YWxfcHJldmlld190cmFmZmljID0gZGV0ZWN0KAotICAg
ICAgICBldmVudCwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdfdHJh
ZmZpYworICAgIG1ldGhvZF90aHJldywgYWN0dWFsX2dpdGh1Yl90cmFmZmljLCBhY3R1YWxfcHJl
dmlld190cmFmZmljID0gZGVwbG95KAorICAgICAgICBwcl9udW0sIHJldmlzaW9uLCBleHBlY3Rl
ZF9naXRodWJfdHJhZmZpYywgZXhwZWN0ZWRfcHJldmlld190cmFmZmljCiAgICAgKQogCi0gICAg
YXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAg
YXNzZXJ0IGFjdHVhbF9naXRodWJfdHJhZmZpYyA9PSBleHBlY3RlZF9naXRodWJfdHJhZmZpYwog
ICAgIGFzc2VydCBhY3R1YWxfcHJldmlld190cmFmZmljID09IGV4cGVjdGVkX3ByZXZpZXdfdHJh
ZmZpYwogCi1kZWYgdGVzdF9kZXRlY3RfdGltZW91dF9taXNzaW5nKCk6CitkZWYgdGVzdF9kZXBs
b3lfdGltZW91dF9taXNzaW5nKCk6CisgICAgcHJfbnVtID0gNDUKKyAgICByZXZpc2lvbiA9ICdh
YmNkZWYxMjMnCisKICAgICBleHBlY3RlZF9naXRodWJfdHJhZmZpYyA9IFsKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMu
ZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfY3JlYXRl
LCAoMjAwLCB7CisgICAgICAgICAgICAnaWQnOiAyNDYwMSwKKyAgICAgICAgICAgICdzaGEnOiBy
ZXZpc2lvbiwKKyAgICAgICAgICAgICdlbnZpcm9ubWVudCc6ICd3cHQtcHJldmlldy00NScsCisg
ICAgICAgIH0pKSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGlt
aXQpLAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9zdGF0dXNfY3JlYXRlX3BlbmRpbmcs
ICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xp
bWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfc3RhdHVzX2NyZWF0ZV9lcnJvciwg
KDIwMCwge30pKQogICAgIF0KICAgICBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMgPSBbCi0gICAg
ICAgIChSZXF1ZXN0cy5wcmV2aWV3LCAoNDA0LCB7fSkpCisgICAgICAgIChSZXF1ZXN0cy5wcmV2
aWV3LCAoNDA0LCAiIikpCiAgICAgXQotICAgIGV2ZW50ID0gewotICAgICAgICAnZGVwbG95bWVu
dCc6IHsKLSAgICAgICAgICAgICdpZCc6IDI0NjAxLAotICAgICAgICAgICAgJ2Vudmlyb25tZW50
JzogJ3dwdC1wcmV2aWV3LTQ1JywKLSAgICAgICAgICAgICdzaGEnOiAnMzIzMicKLSAgICAgICAg
fQotICAgIH0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFs
X3ByZXZpZXdfdHJhZmZpYyA9IGRldGVjdCgKLSAgICAgICAgZXZlbnQsIGV4cGVjdGVkX2dpdGh1
Yl90cmFmZmljLCBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMKKyAgICBtZXRob2RfdGhyZXcsIGFj
dHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdfdHJhZmZpYyA9IGRlcGxveSgKKyAg
ICAgICAgcHJfbnVtLCByZXZpc2lvbiwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVk
X3ByZXZpZXdfdHJhZmZpYwogICAgICkKIAotICAgIGFzc2VydCByZXR1cm5jb2RlID09IDEKKyAg
ICBhc3NlcnQgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IGV4cGVjdGVkX2dpdGh1Yl90cmFmZmlj
ID09IGFjdHVhbF9naXRodWJfdHJhZmZpYwogICAgIHBpbmdfY291bnQgPSBsZW4oYWN0dWFsX3By
ZXZpZXdfdHJhZmZpYykKICAgICBhc3NlcnQgcGluZ19jb3VudCA+IDAKICAgICBhc3NlcnQgYWN0
dWFsX3ByZXZpZXdfdHJhZmZpYyA9PSBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMgKiBwaW5nX2Nv
dW50CiAKLWRlZiB0ZXN0X2RldGVjdF90aW1lb3V0X3dyb25nX3JldmlzaW9uKCk6CitkZWYgdGVz
dF9kZXBsb3lfdGltZW91dF93cm9uZ19yZXZpc2lvbigpOgorICAgIHByX251bSA9IDQ1CisgICAg
cmV2aXNpb24gPSAnYWJjZGVmMTIzJworCiAgICAgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMgPSBb
CisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAg
ICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAorICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5kZXBs
b3ltZW50X2NyZWF0ZSwgKDIwMCwgeworICAgICAgICAgICAgJ2lkJzogMjQ2MDEsCisgICAgICAg
ICAgICAnc2hhJzogcmV2aXNpb24sCisgICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnd3B0LXBy
ZXZpZXctNDUnLAorICAgICAgICB9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVz
cG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfc3RhdHVzX2Ny
ZWF0ZV9wZW5kaW5nLCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X3N0YXR1c19j
cmVhdGVfZXJyb3IsICgyMDAsIHt9KSkKICAgICBdCiAgICAgZXhwZWN0ZWRfcHJldmlld190cmFm
ZmljID0gWwotICAgICAgICAoUmVxdWVzdHMucHJldmlldywgKDIwMCwgMTIzNCkpCisgICAgICAg
ICMgd3B0cHIubGl2ZSBoYXMgdGhlIHdyb25nIHJldmlzaW9uIGRlcGxveWVkCisgICAgICAgIChS
ZXF1ZXN0cy5wcmV2aWV3LCAoMjAwLCAnZ2hpamtsNDU2JykpCiAgICAgXQotICAgIGV2ZW50ID0g
ewotICAgICAgICAnZGVwbG95bWVudCc6IHsKLSAgICAgICAgICAgICdpZCc6IDI0NjAxLAotICAg
ICAgICAgICAgJ2Vudmlyb25tZW50JzogJ3dwdC1wcmV2aWV3LTQ1JywKLSAgICAgICAgICAgICdz
aGEnOiAnMzIzMicKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF9n
aXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdfdHJhZmZpYyA9IGRldGVjdCgKLSAgICAgICAg
ZXZlbnQsIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljLCBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMK
KyAgICBtZXRob2RfdGhyZXcsIGFjdHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdf
dHJhZmZpYyA9IGRlcGxveSgKKyAgICAgICAgcHJfbnVtLCByZXZpc2lvbiwgZXhwZWN0ZWRfZ2l0
aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdfdHJhZmZpYwogICAgICkKIAotICAgIGFzc2Vy
dCByZXR1cm5jb2RlID09IDEKKyAgICBhc3NlcnQgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IGV4
cGVjdGVkX2dpdGh1Yl90cmFmZmljID09IGFjdHVhbF9naXRodWJfdHJhZmZpYwogICAgIHBpbmdf
Y291bnQgPSBsZW4oYWN0dWFsX3ByZXZpZXdfdHJhZmZpYykKICAgICBhc3NlcnQgcGluZ19jb3Vu
dCA+IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2U5MDY5ZWRjNjguLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS90ZXN0cy90ZXN0X2pvYnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQw
MGE1NzM2ZmM2My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9yZXNvdXJj
ZXNfdW5pdHRlc3Quc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX2ludGVncmF0aW9uX3Rlc3Quc2gKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0
LnNoCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NvbW1hbmRzLmpzb24KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2Vwb2Noc191cGRhdGUu
c2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2pvYnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL21ha2VfaG9zdHNfZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZlc3RfYnVpbGQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3JlZ2Vu
X2NlcnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9ydW5fdGMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvd2Vic2l0ZV9idWlsZC5zaApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS93ZWJzaXRlX2J1aWxkLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoCmluZGV4IGY2YjI2MzEwYWFiYy4uZmMy
NTVhZTgzZjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3dlYnNpdGVfYnVpbGQuc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoCkBA
IC0xNCw3ICsxNCw3IEBAIHJlbW90ZV91cmw9aHR0cHM6Ly8ke0RFUExPWV9UT0tFTn1AZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0LmdpdAogCiBmdW5jdGlvbiBqc29uX3Byb3BlcnR5
IHsKICAgY2F0ICR7MX0gfCBcCi0gICAgcHl0aG9uIC1jICJpbXBvcnQganNvbiwgc3lzOyBwcmlu
dCBqc29uLmxvYWQoc3lzLnN0ZGluKS5nZXQoXCIkezJ9XCIsIFwiXCIpIgorICAgIHB5dGhvbiAt
YyAiaW1wb3J0IGpzb24sIHN5czsgcHJpbnQoanNvbi5sb2FkKHN5cy5zdGRpbikuZ2V0KFwiJHsy
fVwiLCBcIlwiKSkiCiB9CiAKIGZ1bmN0aW9uIGlzX3B1bGxfcmVxdWVzdCB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci8uYmFzaHJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvLmJhc2hyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmJiZTAzYzQ4OWFhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyLy5iYXNocmMKQEAgLTAsMCArMSw0
IEBACitmdW5jdGlvbiB4dmZiX3N0YXJ0KCkgeworICAgIEdFT01FVFJZPSIkU0NSRUVOX1dJRFRI
IiJ4IiIkU0NSRUVOX0hFSUdIVCIieCIiJFNDUkVFTl9ERVBUSCIKKyAgICB4dmZiLXJ1biAtLXNl
cnZlci1hcmdzPSItc2NyZWVuIDAgJEdFT01FVFJZIC1hYyArZXh0ZW5zaW9uIFJBTkRSIiAkQAor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9kb2NrZXIvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1
YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvX19pbml0X18u
cHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBz
ZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlvbi9Eb2NrZXJmaWxlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlv
bi9Eb2NrZXJmaWxlCmluZGV4IGUwMWY5OGU0ZDRkZi4uMDFlYTBiZDk1YmY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9kb2N1bWVudGF0aW9uL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlvbi9Eb2NrZXJmaWxl
CkBAIC0xLDMgKzEsMyBAQAotRlJPTSBweXRob246Mi1zdHJldGNoCitGUk9NIHB5dGhvbjozLjgt
YnVzdGVyCiAKLVJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLS15ZXMgZ2l0
CitSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC0teWVzIGdpdCB2aXJ0dWFs
ZW52CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2RvY2tlci9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRh
dGlvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyNGIy
ZjQwOWFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2RvY3VtZW50YXRpb24vRG9j
a2VyZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQppbmRleCA2ZDM1
ZDRjMzgyNjMuLmMwNTkzN2I3M2RjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJv
bnRlbmQucHkKQEAgLTUsOCArNSw2IEBAIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGlt
cG9ydCBzeXMKIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwotCiBoZXJlID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiB3cHRfcm9vdCA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyLCBvcy5wYXJkaXIpKQogCkBAIC0zNyw3
ICszNSw3IEBAIGRlZiB3YWxrX3lhbWwocm9vdCwgdGFyZ2V0KToKICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodmFsdWUsIChkaWN0LCBsaXN0KSk6CiAgICAgICAgICAgICAgICAgcnYuZXh0ZW5k
KHdhbGtfeWFtbCh2YWx1ZSwgdGFyZ2V0KSkKICAgICBlbGlmIGlzaW5zdGFuY2Uocm9vdCwgZGlj
dCk6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhyb290KToKKyAgICAgICAg
Zm9yIGtleSwgdmFsdWUgaW4gcm9vdC5pdGVtcygpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZSh2YWx1ZSwgKGRpY3QsIGxpc3QpKToKICAgICAgICAgICAgICAgICBydi5leHRlbmQod2Fsa195
YW1sKHZhbHVlLCB0YXJnZXQpKQogICAgICAgICAgICAgZWxpZiBrZXkgPT0gdGFyZ2V0OgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9kb2NrZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTExY2JmYmI5MGQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxl
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2Nr
ZXIvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9kb2NrZXIvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9yZXRyeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvZG9ja2VyL3NlY2NvbXAuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3N0YXJ0LnNoCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvZ2l0aWdub3JlL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weQpAQCAtMSAr
MCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlz
IGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2dpdGlnbm9yZS9naXRpZ25vcmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHkKaW5kZXggMmEyNzYxNTE4
NjYzLi41MDBmZTc4MzViZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9n
aXRpZ25vcmUucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCBvcwogaW1wb3J0
IGl0ZXJ0b29scwotZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9iaW5hcnksIGl0ZXJ2YWx1ZXMsIGl0
ZXJpdGVtcworZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9iaW5hcnkKIGZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IGRlZmF1bHRkaWN0CiAKIE1ZUFkgPSBGYWxzZQpAQCAtMTU1LDcgKzE1NSwxMCBAQCBj
bGFzcyBQYXRoRmlsdGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYubGl0ZXJhbHNfZGlyID0gZGVm
YXVsdGRpY3QoZGljdCkgICMgdHlwZTogRGljdFtPcHRpb25hbFtieXRlc10sIERpY3RbYnl0ZXMs
IExpc3RbVHVwbGVbYm9vbCwgUGF0dGVybltieXRlc11dXV1dCiAgICAgICAgIHNlbGYucGF0dGVy
bnNfZmlsZSA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbVHVwbGVbYm9vbCwgUGF0dGVybltieXRl
c11dLCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bYnl0ZXNdXV1dXQogICAgICAgICBzZWxmLnBh
dHRlcm5zX2RpciA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbVHVwbGVbYm9vbCwgUGF0dGVyblti
eXRlc11dLCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bYnl0ZXNdXV1dXQotICAgICAgICBzZWxm
LmNhY2hlID0gY2FjaGUgb3Ige30gICMgdHlwZTogTXV0YWJsZU1hcHBpbmdbYnl0ZXMsIGJvb2xd
CisKKyAgICAgICAgaWYgY2FjaGUgaXMgTm9uZToKKyAgICAgICAgICAgIGNhY2hlID0ge30KKyAg
ICAgICAgc2VsZi5jYWNoZSA9IGNhY2hlICAjIHR5cGU6IE11dGFibGVNYXBwaW5nW2J5dGVzLCBi
b29sXQogCiAgICAgICAgIGlmIGV4dHJhcyBpcyBOb25lOgogICAgICAgICAgICAgZXh0cmFzID0g
W10KQEAgLTE5MSwxMyArMTk0LDEzIEBAIGNsYXNzIFBhdGhGaWx0ZXIob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBydWxlID0gY2FzdChUdXBsZVtib29sLCBQYXR0ZXJuW2J5dGVzXV0sIHJ1bGUp
CiAgICAgICAgICAgICBpZiBub3QgZGlyX29ubHk6CiAgICAgICAgICAgICAgICAgcnVsZXNfaXRl
ciA9IGl0ZXJ0b29scy5jaGFpbigKLSAgICAgICAgICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWlu
KCooaXRlcml0ZW1zKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXMoc2VsZi5saXRlcmFsc19k
aXIpKSksCi0gICAgICAgICAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbigqKGl0ZXJpdGVtcyhp
dGVtKSBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKHNlbGYubGl0ZXJhbHNfZmlsZSkpKSwKKyAgICAg
ICAgICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWluKCooaXRlbS5pdGVtcygpIGZvciBpdGVtIGlu
IHNlbGYubGl0ZXJhbHNfZGlyLnZhbHVlcygpKSksCisgICAgICAgICAgICAgICAgICAgIGl0ZXJ0
b29scy5jaGFpbigqKGl0ZW0uaXRlbXMoKSBmb3IgaXRlbSBpbiBzZWxmLmxpdGVyYWxzX2ZpbGUu
dmFsdWVzKCkpKSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXR0ZXJuc19kaXIsCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybnNfZmlsZSkgICMgdHlwZTogSXRlcmFibGVbVHVw
bGVbQW55LCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bYnl0ZXNdXV1dXQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICBydWxlc19pdGVyID0gaXRlcnRvb2xzLmNoYWluKAotICAg
ICAgICAgICAgICAgICAgICBpdGVydG9vbHMuY2hhaW4oKihpdGVyaXRlbXMoaXRlbSkgZm9yIGl0
ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLmxpdGVyYWxzX2RpcikpKSwKKyAgICAgICAgICAgICAgICAg
ICAgaXRlcnRvb2xzLmNoYWluKCooaXRlbS5pdGVtcygpIGZvciBpdGVtIGluIHNlbGYubGl0ZXJh
bHNfZGlyLnZhbHVlcygpKSksCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybnNfZGly
KQogCiAgICAgICAgICAgICBmb3IgcnVsZXMgaW4gcnVsZXNfaXRlcjoKQEAgLTI0Niw3ICsyNDks
NyBAQCBjbGFzcyBQYXRoRmlsdGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5jYWNoZVtwYXRoXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXQuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgICAgICAgICBmb3IgcnVsZV9kaXIgaW4gW05vbmUsIGRpcnBhdGhdOgorICAgICAgICAg
ICAgICAgICAgICBmb3IgcnVsZV9kaXIgaW4gW05vbmUsIGRpcnBhdGggaWYgZGlycGF0aCAhPSBi
Ii4iIGVsc2UgYiIiXToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gbGl0ZXJh
bHMuZ2V0KHJ1bGVfZGlyLCBlbXB0eSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
bHVkZSA9IGxpdGVyYWxzW3J1bGVfZGlyXVtuYW1lXQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBhbnkocnVsZS5tYXRjaChuYW1lIGlmIG5hbWVfb25seSBlbHNlIHBhdGgpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL19faW5pdF9fLnB5Cmlu
ZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2lu
aXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0
cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjMmI4MDQwMmNmZmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdu
b3JlL3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdGVzdF9naXRpZ25vcmUucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Z2l0aWdub3JlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNmNWNjZTI4ZmY3OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkK
aW5kZXggMzgyMjVlYzk1ODg2Li5kOGZiOWZjMzVlZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9s
aW50LnB5CkBAIC0xNCw2ICsxNCw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogCiBm
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSB1cmxsaWIucGFyc2UgaW1w
b3J0IHVybHNwbGl0LCB1cmxqb2luCiAKIGZyb20gLiBpbXBvcnQgZm5tYXRjaAogZnJvbSAuIGlt
cG9ydCBydWxlcwpAQCAtMjQsOSArMjUsNyBAQCBmcm9tIC4ud3B0IGltcG9ydCB0ZXN0ZmlsZXMK
IGZyb20gLi5tYW5pZmVzdC52Y3MgaW1wb3J0IHdhbGsKIAogZnJvbSAuLm1hbmlmZXN0LnNvdXJj
ZWZpbGUgaW1wb3J0IFNvdXJjZUZpbGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFj
ZV9jaGFycywgZ2V0X2FueV92YXJpYW50cwotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBl
bnN1cmVfYmluYXJ5LCBlbnN1cmVfdGV4dCwgaXRlcml0ZW1zLCBpdGVydmFsdWVzLCB3aXRoX21l
dGFjbGFzcwotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucGFyc2UgaW1wb3J0IHVybHNwbGl0LCB1cmxqb2luCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJl
X2JpbmFyeSwgZW5zdXJlX3RleHQKIAogTVlQWSA9IEZhbHNlCiBpZiBNWVBZOgpAQCAtMzI1LDcg
KzMyNCw3IEBAIGRlZiBjaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlKHJlcG9fcm9vdCwgcGF0aHMp
OgogCiAgICAgZXJyb3JzID0gW10KIAotICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gaXRlcml0
ZW1zKHRlc3RfZmlsZXMpOgorICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gdGVzdF9maWxlcy5p
dGVtcygpOgogICAgICAgICBpZiBsZW4oY29sbGlkaW5nKSA+IDE6CiAgICAgICAgICAgICBpZiBu
b3QgX2FsbF9maWxlc19lcXVhbChbb3MucGF0aC5qb2luKHJlcG9fcm9vdCwgeCkgZm9yIHggaW4g
Y29sbGlkaW5nXSk6CiAgICAgICAgICAgICAgICAgIyBPbmx5IGNvbXB1dGUgYnlfc3BlYyBpZiB0
aGVyZSBhcmUgcHJpbWEtZmFjaWUgY29sbGlzaW9ucyBiZWNhdXNlIG9mIGNvc3QKQEAgLTM0Miw3
ICszNDEsNyBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhz
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnlfc3BlY1tzcGVjXS5hZGQocGF0aCkKIAotICAgICAgICAgICAgICAgIGZvciBz
cGVjLCBzcGVjX3BhdGhzIGluIGl0ZXJpdGVtcyhieV9zcGVjKToKKyAgICAgICAgICAgICAgICBm
b3Igc3BlYywgc3BlY19wYXRocyBpbiBieV9zcGVjLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBfYWxsX2ZpbGVzX2VxdWFsKFtvcy5wYXRoLmpvaW4ocmVwb19yb290LCB4KSBm
b3IgeCBpbiBzcGVjX3BhdGhzXSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBz
cGVjX3BhdGhzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQxID0gKG5hbWUs
IHNwZWMsICIsICIuam9pbihzb3J0ZWQoc3BlY19wYXRocykpKQpAQCAtMzUxLDcgKzM1MCw3IEBA
IGRlZiBjaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlKHJlcG9fcm9vdCwgcGF0aHMpOgogCiAgICAg
Zm9yIHJ1bGVfY2xhc3MsIGQgaW4gWyhydWxlcy5DU1NDb2xsaWRpbmdSZWZOYW1lLCByZWZfZmls
ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZXMuQ1NTQ29sbGlkaW5nU3VwcG9y
dE5hbWUsIHN1cHBvcnRfZmlsZXMpXToKLSAgICAgICAgZm9yIG5hbWUsIGNvbGxpZGluZyBpbiBp
dGVyaXRlbXMoZCk6CisgICAgICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gZC5pdGVtcygpOgog
ICAgICAgICAgICAgaWYgbGVuKGNvbGxpZGluZykgPiAxOgogICAgICAgICAgICAgICAgIGlmIG5v
dCBfYWxsX2ZpbGVzX2VxdWFsKFtvcy5wYXRoLmpvaW4ocmVwb19yb290LCB4KSBmb3IgeCBpbiBj
b2xsaWRpbmddKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dDIgPSAobmFtZSwgIiwgIi5q
b2luKHNvcnRlZChjb2xsaWRpbmcpKSkKQEAgLTQ1MSw3ICs0NTAsNyBAQCBkZWYgZmlsdGVyX2ln
bm9yZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9ycyk6CiAgICAgICAgICMgd2hpY2ggZXhwbGFpbnMg
aG93IHRvIGZpeCBpdCBjb3JyZWN0bHkgYW5kIHNob3VsZG4ndCBiZSBza2lwcGVkLgogICAgICAg
ICBpZiBlcnJvcl90eXBlIGluIGRhdGEgYW5kIGVycm9yX3R5cGUgIT0gIklHTk9SRUQgUEFUSCI6
CiAgICAgICAgICAgICB3bF9maWxlcyA9IGRhdGFbZXJyb3JfdHlwZV0KLSAgICAgICAgICAgIGZv
ciBmaWxlX21hdGNoLCBhbGxvd2VkX2xpbmVzIGluIGl0ZXJpdGVtcyh3bF9maWxlcyk6CisgICAg
ICAgICAgICBmb3IgZmlsZV9tYXRjaCwgYWxsb3dlZF9saW5lcyBpbiB3bF9maWxlcy5pdGVtcygp
OgogICAgICAgICAgICAgICAgIGlmIE5vbmUgaW4gYWxsb3dlZF9saW5lcyBvciBsaW5lIGluIGFs
bG93ZWRfbGluZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaGNhc2Uo
bm9ybXBhdGgsIGZpbGVfbWF0Y2gpOgogICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFtp
XSA9IFRydWUKQEAgLTUwNyw2ICs1MDYsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9fcm9vdCwg
cGF0aCwgZik6CiAgICAgICAgIGlmIChzb3VyY2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQK
ICAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKICAgICAg
ICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3RlbnRhdGl2ZSBhbmQKKyAgICAgICAgICAg
IG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX2NyYXNodGVzdCBhbmQKICAgICAgICAgICAgIG5vdCBz
b3VyY2VfZmlsZS5zcGVjX2xpbmtzKToKICAgICAgICAgICAgIHJldHVybiBbcnVsZXMuTWlzc2lu
Z0xpbmsuZXJyb3IocGF0aCldCiAKQEAgLTY1NSw5ICs2NTUsMTkgQEAgZGVmIGNoZWNrX3BhcnNl
ZChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICAgICBpZiBpbmNvcnJlY3RfcGF0aCgidGVzdGRy
aXZlci12ZW5kb3IuanMiLCBzcmMpOgogICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5U
ZXN0ZHJpdmVyVmVuZG9yUGF0aC5lcnJvcihwYXRoKSkKIAorICAgICAgICBzY3JpcHRfcGF0aCA9
IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2NyaXB0X3BhdGggPSB1cmxzcGxpdCh1
cmxqb2luKHNvdXJjZV9maWxlLnVybCwgc3JjKSkucGF0aAorICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKKyAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIHRoZSBjb250ZW50cyBvZiBzcmMg
aXNuJ3Qgc29tZXRoaW5nIHRoYXQgbG9va3MgbGlrZSBhIFVSTCB0byBQeXRob24KKyAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgaWYgKHNjcmlwdF9wYXRoID09ICIvY29tbW9uL3JlZnRlc3Qtd2Fp
dC5qcyIgYW5kCisgICAgICAgICAgICAicmVmdGVzdC13YWl0IiBub3QgaW4gc291cmNlX2ZpbGUu
cm9vdC5hdHRyaWIuZ2V0KCJjbGFzcyIsICIiKS5zcGxpdCgpKToKKyAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQocnVsZXMuTWlzc2luZ1JlZnRlc3RXYWl0LmVycm9yKHBhdGgpKQorCiAgICAgcmV0
dXJuIGVycm9ycwogCi1jbGFzcyBBU1RDaGVjayh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkp
OgorY2xhc3MgQVNUQ2hlY2sobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICBAYWJjLmFic3Ry
YWN0cHJvcGVydHkKICAgICBkZWYgcnVsZShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBU
eXBlW3J1bGVzLlJ1bGVdCkBAIC03MzAsNyArNzQwLDcgQEAgZGVmIGNoZWNrX3NjcmlwdF9tZXRh
ZGF0YShyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgIGRvbmUgPSBGYWxzZQogICAgIGVycm9ycyA9
IFtdCiAgICAgZm9yIGlkeCwgbGluZSBpbiBlbnVtZXJhdGUoZik6Ci0gICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKGxpbmUsIGJpbmFyeV90eXBlKSwgbGluZQorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShsaW5lLCBieXRlcyksIGxpbmUKIAogICAgICAgICBtID0gbWV0YV9yZS5tYXRjaChsaW5l
KQogICAgICAgICBpZiBtOgpAQCAtOTY0LDcgKzk3NCw3IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6
CiAKIGRlZiBtYWluKCoqa3dhcmdzX3N0cik6CiAgICAgIyB0eXBlOiAoKipBbnkpIC0+IGludAot
ICAgIGt3YXJncyA9IHtlbnN1cmVfdGV4dChrZXkpOiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBp
dGVyaXRlbXMoa3dhcmdzX3N0cil9CisgICAga3dhcmdzID0ge2Vuc3VyZV90ZXh0KGtleSk6IHZh
bHVlIGZvciBrZXksIHZhbHVlIGluIGt3YXJnc19zdHIuaXRlbXMoKX0KIAogICAgIGFzc2VydCBs
b2dnZXIgaXMgbm90IE5vbmUKICAgICBpZiBrd2FyZ3MuZ2V0KCJqc29uIikgYW5kIGt3YXJncy5n
ZXQoIm1hcmtkb3duIik6CkBAIC0xMDkyLDcgKzExMDIsNyBAQCBkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1Ob25lLCBnaXRodWJfY2hlY2tzX291
dHB1dAogICAgIGlmIGVycm9yX2NvdW50IGFuZCBnaXRodWJfY2hlY2tzX291dHB1dHRlcjoKICAg
ICAgICAgZ2l0aHViX2NoZWNrc19vdXRwdXR0ZXIub3V0cHV0KCJgYGAiKQogCi0gICAgcmV0dXJu
IHN1bShpdGVydmFsdWVzKGVycm9yX2NvdW50KSkKKyAgICByZXR1cm4gc3VtKGVycm9yX2NvdW50
LnZhbHVlcygpKQogCiAKIHBhdGhfbGludHMgPSBbY2hlY2tfZmlsZV90eXBlLCBjaGVja19wYXRo
X2xlbmd0aCwgY2hlY2tfd29ya2VyX2NvbGxpc2lvbiwgY2hlY2tfYWhlbV9jb3B5LApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3J1bGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5CmluZGV4IGY2ZTIzYWVmNThhZC4uZTliYjMwYjU5Y2ZmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvcnVsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3J1bGVzLnB5CkBAIC01LDggKzUsNiBAQCBpbXBvcnQgaW5z
cGVjdAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIAotaW1wb3J0IHNpeAotCiBNWVBZID0gRmFsc2UK
IGlmIE1ZUFk6CiAgICAgIyBNWVBZIGlzIHNldCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHku
CkBAIC0xOSw3ICsxNyw3IEBAIGRlZiBjb2xsYXBzZSh0ZXh0KToKICAgICByZXR1cm4gaW5zcGVj
dC5jbGVhbmRvYyhzdHIodGV4dCkpLnJlcGxhY2UoIlxuIiwgIiAiKQogCiAKLWNsYXNzIFJ1bGUo
c2l4LndpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CitjbGFzcyBSdWxlKG1ldGFjbGFzcz1h
YmMuQUJDTWV0YSk6CiAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CiAgICAgZGVmIG5hbWUoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dApAQCAtMTk3LDYgKzE5NSwxNCBAQCBjbGFz
cyBNdWx0aXBsZVRlc3RoYXJuZXNzKFJ1bGUpOgogICAgICIiIgogCiAKK2NsYXNzIE1pc3NpbmdS
ZWZ0ZXN0V2FpdChSdWxlKToKKyAgICBuYW1lID0gIk1JU1NJTkctUkVGVEVTVFdBSVQiCisgICAg
ZGVzY3JpcHRpb24gPSAiTWlzc2luZyBgY2xhc3M9cmVmdGVzdC13YWl0YCIKKyAgICB0b19maXgg
PSAiIiIKKyAgICAgICAgZW5zdXJlIHRlc3RzIHRoYXQgaW5jbHVkZSByZWZ0ZXN0LXdhaXQuanMg
YWxzbyB1c2UgY2xhc3M9cmVmdGVzdC13YWl0IG9uIHRoZSByb290IGVsZW1lbnQuCisgICAgIiIi
CisKKwogY2xhc3MgTWlzc2luZ1Rlc3RoYXJuZXNzUmVwb3J0KFJ1bGUpOgogICAgIG5hbWUgPSAi
TUlTU0lORy1URVNUSEFSTkVTU1JFUE9SVCIKICAgICBkZXNjcmlwdGlvbiA9ICJNaXNzaW5nIGA8
c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+YCIKQEAgLTM1OSw3
ICszNjUsNyBAQCBjbGFzcyBUZW50YXRpdmVEaXJlY3RvcnlOYW1lKFJ1bGUpOgogICAgIHRvX2Zp
eCA9ICJyZW5hbWUgZGlyZWN0b3J5IHRvIGJlIGNhbGxlZCAndGVudGF0aXZlJyIKIAogCi1jbGFz
cyBSZWdleHAoc2l4LndpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CitjbGFzcyBSZWdleHAo
bWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgICBk
ZWYgcGF0dGVybihzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBieXRlcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4u
ZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL19faW5p
dF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24g
dG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2UucHkKaW5kZXggMzYw
ZjEzY2UyOTM1Li4zNmMxNjY3NmQ1MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9iYXNlLnB5CkBAIC0xLDExICsxLDEwIEBACiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNv
ZGVfbGl0ZXJhbHMKIAotZnJvbSBzaXggaW1wb3J0IGludGVnZXJfdHlwZXMsIHRleHRfdHlwZQog
CiBkZWYgY2hlY2tfZXJyb3JzKGVycm9ycyk6CiAgICAgZm9yIGUgaW4gZXJyb3JzOgogICAgICAg
ICBlcnJvcl90eXBlLCBkZXNjcmlwdGlvbiwgcGF0aCwgbGluZV9udW1iZXIgPSBlCi0gICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKGVycm9yX3R5cGUsIHRleHRfdHlwZSkKLSAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UoZGVzY3JpcHRpb24sIHRleHRfdHlwZSkKLSAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocGF0aCwgdGV4dF90eXBlKQotICAgICAgICBhc3NlcnQgbGluZV9udW1iZXIgaXMgTm9u
ZSBvciBpc2luc3RhbmNlKGxpbmVfbnVtYmVyLCBpbnRlZ2VyX3R5cGVzKQorICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShlcnJvcl90eXBlLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNl
KGRlc2NyaXB0aW9uLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHBhdGgsIHN0cikK
KyAgICAgICAgYXNzZXJ0IGxpbmVfbnVtYmVyIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShsaW5lX251
bWJlciwgaW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLXJlZi5odG1sCnNpbWlsYXJpdHkg
aW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1leHBlY3Rl
ZC5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1yZWYuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sCnNpbWlsYXJpdHkgaW5k
ZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS1leHBl
Y3RlZC5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS1yZWYu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQv
dG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3Vw
cG9ydC90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODFkYmEzNDRjYmFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L21hdGNoL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwx
NyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9y
dC90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRj
aC9zdXBwb3J0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNo
L3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBm
YjM1MjNlZTIyNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC9zdXBwb3J0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGNiMGYyOTMzOS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9tYXRjaC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2NmYTZkZGMwYjUxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL21hdGNoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJlZi5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAw
JQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtZXhwZWN0
ZWQuaHRtbApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJl
Zi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3N1
cHBvcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNo
L3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1
MjM0NjQwZWEzYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9u
b3QtbWF0Y2gvc3VwcG9ydC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvc3VwcG9y
dC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gv
dG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNo
L3Rvb2xzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGZh
NzgxODk4OWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90
LW1hdGNoL3Rvb2xzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRiYzNiYTBjYjYuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL3JlbGF0aXZlLXRlc3RoYXJuZXNzLWludGVyYWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvcmVsYXRpdmUtdGVzdGhhcm5lc3MtaW50ZXJhY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE1MGVmOTgzYTkzOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9yZWxhdGl2ZS10ZXN0aGFybmVzcy1pbnRl
cmFjdC5odG1sCkBAIC0wLDAgKzEsNSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bGluayByZWw9aGVs
cCBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMi92aXN1ZnguaHRtbCNvdmVyZmxvdy1j
bGlwcGluZyI+Cis8bWV0YSBuYW1lPWZsYWdzIGNvbnRlbnQ9aW50ZXJhY3Q+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODJhNDYwZjJjYy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvc2VsZWN0b3JzL2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvc3VwcG9ydC90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjM0NjQ5YTQ5Y2FiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC90
b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNDNkNGE1NDU0ZC4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvdG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhk
YjZiODg3ODMyYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90
b29scy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRk
MzI1MWUzNTRjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9hLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvcmVsYXRpdmUtdGVzdGhh
cm5lc3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1yZWYuaHRtbApz
aW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9y
ZWxhdGl2ZS1leHBlY3RlZC5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jl
bGF0aXZlLXJlZi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42YTgwYzFmMjBkZGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsg
cmVsPSJtYXRjaCIgaHJlZj0ic2FtZV9maWxlX3BhdGguaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvcmVmL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ0ZGE1OWE5MmNiLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L3JlZi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIz
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhp
c3RlbnRfcmVsYXRpdmUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcm9vdF9yZWxhdGl2
ZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVsYXRpdmUuaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYv
c2FtZV9maWxlX2VtcHR5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMjk5MWQ5YmU2Yy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvYS5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIy
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZDY2OWU2NTNiZi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvYS54aHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL3JlbGF0aXZlLXRlc3RoYXJuZXNzLW1hbnVhbC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL3JlbGF0aXZlLXRlc3RoYXJuZXNzLW1hbnVhbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTU2OTNiOTkwYzFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL3JlbGF0aXZlLXRlc3RoYXJuZXNzLW1hbnVhbC5o
dG1sCkBAIC0wLDAgKzEsMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzRkMTY3MzBmNzAuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYWJvdXRfYmxhbmsuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9r
ZW4uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2RlcGVu
ZGVuY3kuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50Lmlnbm9yZQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9va2F5Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRz
LnB5CmluZGV4IGJlOTU4OTBkNmZiMy4uZDg5Mjg2NmZlZDcyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVz
dF9maWxlX2xpbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKQEAgLTEsMTAgKzEs
OCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KIGZyb20gLi5s
aW50IGltcG9ydCBjaGVja19maWxlX2NvbnRlbnRzCiBmcm9tIC5iYXNlIGltcG9ydCBjaGVja19l
cnJvcnMKK2ltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc2l4CiAK
IElOVEVSRVNUSU5HX0ZJTEVfTkFNRVMgPSB7CiAgICAgInB5dGhvbiI6IFsKQEAgLTI2LDcgKzI0
LDcgQEAgSU5URVJFU1RJTkdfRklMRV9OQU1FUyA9IHsKIAogZGVmIGNoZWNrX3dpdGhfZmlsZXMo
aW5wdXRfYnl0ZXMpOgogICAgIHJldHVybiB7Ci0gICAgICAgIGZpbGVuYW1lOiAoY2hlY2tfZmls
ZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlucHV0X2J5dGVzKSksIGtpbmQp
CisgICAgICAgIGZpbGVuYW1lOiAoY2hlY2tfZmlsZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIGlv
LkJ5dGVzSU8oaW5wdXRfYnl0ZXMpKSwga2luZCkKICAgICAgICAgZm9yIChmaWxlbmFtZSwga2lu
ZCkgaW4KICAgICAgICAgKAogICAgICAgICAgICAgKG9zLnBhdGguam9pbigiaHRtbCIsIGZpbGVu
YW1lKSwga2luZCkKQEAgLTY2MCwyOCArNjU4LDYgQEAgZGVmIHRlc3RfbGF0ZV90aW1lb3V0KCk6
CiAgICAgICAgICAgICBdCiAKIAotIyBOb3RlOiBUaGlzIHRlc3QgY2hlY2tzIHRoZSBwcmludCAq
c3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBweXRob24gMykuCi0jICAgICAgIFRo
ZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVzdF9wcmludF9mdW5jdGlvbiBiZWxv
dy4KLUBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3QgcGFyc2UgcHJp
bnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKLWRlZiB0ZXN0X3ByaW50X3N0YXRlbWVudCgp
OgotICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6XG4gIHByaW50
ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQotCi0gICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywg
a2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgotICAgICAgICBjaGVja19lcnJvcnMoZXJyb3Jz
KQotCi0gICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6Ci0gICAgICAgICAgICBhc3NlcnQgZXJy
b3JzID09IFsKLSAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJBIHNlcnZlci1z
aWRlIHB5dGhvbiBzdXBwb3J0IGZpbGUgY29udGFpbnMgYSBgcHJpbnRgIHN0YXRlbWVudCIsIGZp
bGVuYW1lLCAyKSwKLSAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJBIHNlcnZl
ci1zaWRlIHB5dGhvbiBzdXBwb3J0IGZpbGUgY29udGFpbnMgYSBgcHJpbnRgIHN0YXRlbWVudCIs
IGZpbGVuYW1lLCAzKSwKLSAgICAgICAgICAgIF0KLSAgICAgICAgZWxpZiBraW5kID09ICJ3ZWIt
c3RyaWN0IjoKLSAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWwotICAgICAgICAgICAgICAg
ICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUp
LAotICAgICAgICAgICAgXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGVycm9y
cyA9PSBbXQotCi0KIGRlZiB0ZXN0X3ByaW50X2Z1bmN0aW9uKCk6CiAgICAgZXJyb3JfbWFwID0g
Y2hlY2tfd2l0aF9maWxlcyhiImRlZiBmb28oKTpcbiAgcHJpbnQoJ2Z1bmN0aW9uJylcbiIpCiAK
QEAgLTc2MCw3ICs3MzYsNyBAQCBkZWYgZmlmdGgoKToKIGRlZiB0ZXN0X29wZW5fbW9kZSgpOgog
ICAgIGZvciBtZXRob2QgaW4gWyJvcGVuIiwgImZpbGUiXToKICAgICAgICAgY29kZSA9IG9wZW5f
bW9kZV9jb2RlLmZvcm1hdChtZXRob2QpLmVuY29kZSgidXRmLTgiKQotICAgICAgICBlcnJvcnMg
PSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAidGVzdC5weSIsIHNpeC5CeXRlc0lPKGNvZGUpKQor
ICAgICAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAidGVzdC5weSIsIGlvLkJ5
dGVzSU8oY29kZSkpCiAgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCiAKICAgICAgICAgbWVz
c2FnZSA9ICgiRmlsZSBvcGVuZWQgd2l0aG91dCBwcm92aWRpbmcgYW4gZXhwbGljaXQgbW9kZSAo
bm90ZTogIiArCkBAIC03NzksNyArNzU1LDcgQEAgZGVmIHRlc3Rfb3Blbl9tb2RlKCk6CiAgICAg
ICAgICgiY3NzL2Jhci5odG1sIiwgVHJ1ZSksCiAgICAgXSkKIGRlZiB0ZXN0X2Nzc19zdXBwb3J0
X2ZpbGUoZmlsZW5hbWUsIGV4cGVjdF9lcnJvcik6Ci0gICAgZXJyb3JzID0gY2hlY2tfZmlsZV9j
b250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGIiIikpCisgICAgZXJyb3JzID0gY2hl
Y2tfZmlsZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIGlvLkJ5dGVzSU8oYiIiKSkKICAgICBjaGVj
a19lcnJvcnMoZXJyb3JzKQogCiAgICAgaWYgZXhwZWN0X2Vycm9yOgpAQCAtODAwLDcgKzc3Niw3
IEBAIGRlZiB0ZXN0X2Nzc19taXNzaW5nX2ZpbGVfaW5fY3NzKCk6CiA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8L2h0bWw+CiAiIiIKLSAg
ICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAiY3NzL2Zvby9iYXIuaHRtbCIsIHNp
eC5CeXRlc0lPKGNvZGUpKQorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJj
c3MvZm9vL2Jhci5odG1sIiwgaW8uQnl0ZXNJTyhjb2RlKSkKICAgICBjaGVja19lcnJvcnMoZXJy
b3JzKQogCiAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCkBAIC04MTIsNyArNzg4LDcgQEAgZGVmIHRl
c3RfY3NzX21pc3NpbmdfZmlsZV9pbl9jc3MoKToKIAogCiBkZWYgdGVzdF9jc3NfbWlzc2luZ19m
aWxlX21hbnVhbCgpOgotICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJjc3Mv
Zm9vL2Jhci1tYW51YWwuaHRtbCIsIHNpeC5CeXRlc0lPKGIiIikpCisgICAgZXJyb3JzID0gY2hl
Y2tfZmlsZV9jb250ZW50cygiIiwgImNzcy9mb28vYmFyLW1hbnVhbC5odG1sIiwgaW8uQnl0ZXNJ
TyhiIiIpKQogICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCiAKICAgICBhc3NlcnQgZXJyb3JzID09
IFsKQEAgLTgzMyw3ICs4MDksNyBAQCBkZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX3RlbnRhdGl2
ZSgpOgogCiAgICAgIyBUaGUgdGVudGF0aXZlIGZsYWcgY292ZXJzIHRlc3RzIHRoYXQgbWFrZSBh
c3NlcnRpb25zICdub3QgeWV0IHJlcXVpcmVkIGJ5CiAgICAgIyBhbnkgc3BlY2lmaWNhdGlvbics
IHNvIHRoZXkgbmVlZCBub3QgaGF2ZSBhIHNwZWNpZmljYXRpb24gbGluay4KLSAgICBlcnJvcnMg
PSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAiY3NzL2Zvby9iYXIudGVudGF0aXZlLmh0bWwiLCBz
aXguQnl0ZXNJTyhjb2RlKSkKKyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAi
Y3NzL2Zvby9iYXIudGVudGF0aXZlLmh0bWwiLCBpby5CeXRlc0lPKGNvZGUpKQogICAgIGFzc2Vy
dCBub3QgZXJyb3JzCiAKIApAQCAtODYxLDcgKzgzNyw3IEBAIGRlZiB0ZXN0X2Nzc19taXNzaW5n
X2ZpbGVfdGVudGF0aXZlKCk6CiAgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWJhclxuIiIiLCAo
MSwgIlVOS05PV04tVElNRU9VVC1NRVRBREFUQSIpKSwKIF0pCiBkZWYgdGVzdF9zY3JpcHRfbWV0
YWRhdGEoZmlsZW5hbWUsIGlucHV0LCBlcnJvcik6Ci0gICAgZXJyb3JzID0gY2hlY2tfZmlsZV9j
b250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlucHV0KSkKKyAgICBlcnJvcnMgPSBj
aGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFtZSwgaW8uQnl0ZXNJTyhpbnB1dCkpCiAgICAg
Y2hlY2tfZXJyb3JzKGVycm9ycykKIAogICAgIGlmIGVycm9yIGlzIG5vdCBOb25lOgpAQCAtOTAy
LDcgKzg3OCw3IEBAIGRlZiB0ZXN0X3NjcmlwdF9tZXRhZGF0YShmaWxlbmFtZSwgaW5wdXQsIGVy
cm9yKToKIGRlZiB0ZXN0X3NjcmlwdF9nbG9iYWxzX21ldGFkYXRhKGdsb2JhbHMsIGVycm9yKToK
ICAgICBmaWxlbmFtZSA9ICJmb28uYW55LmpzIgogICAgIGlucHV0ID0gYiIiIi8vIE1FVEE6IGds
b2JhbD0lc1xuIiIiICUgZ2xvYmFscwotICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMo
IiIsIGZpbGVuYW1lLCBzaXguQnl0ZXNJTyhpbnB1dCkpCisgICAgZXJyb3JzID0gY2hlY2tfZmls
ZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIGlvLkJ5dGVzSU8oaW5wdXQpKQogICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCiAKICAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKQEAgLTkzMyw3ICs5MDks
NyBAQCBkZWYgdGVzdF9zY3JpcHRfZ2xvYmFsc19tZXRhZGF0YShnbG9iYWxzLCBlcnJvcik6CiBd
KQogZGVmIHRlc3RfcHl0aG9uX21ldGFkYXRhKGlucHV0LCBlcnJvcik6CiAgICAgZmlsZW5hbWUg
PSAidGVzdC5weSIKLSAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFt
ZSwgc2l4LkJ5dGVzSU8oaW5wdXQpKQorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMo
IiIsIGZpbGVuYW1lLCBpby5CeXRlc0lPKGlucHV0KSkKICAgICBjaGVja19lcnJvcnMoZXJyb3Jz
KQogCiAgICAgaWYgZXJyb3IgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCA1NWRiYmU5MmRmYzMuLmU4OTQ5OWZlOWJlNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CkBAIC0x
LDEwICsxLDggQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCitp
bXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCiBpbXBvcnQgbW9jawotaW1wb3J0IHNp
eAogCiBmcm9tIC4uLmxvY2FscGF0aHMgaW1wb3J0IHJlcG9fcm9vdAogZnJvbSAuLiBpbXBvcnQg
bGludCBhcyBsaW50X21vZApAQCAtNTQsNyArNTIsNyBAQCBkZWYgdGVzdF9maWx0ZXJfaWdub3Jl
bGlzdF9lcnJvcnMoKToKIAogCiBkZWYgdGVzdF9wYXJzZV9pZ25vcmVsaXN0KCk6Ci0gICAgaW5w
dXRfYnVmZmVyID0gc2l4LlN0cmluZ0lPKCIiIgorICAgIGlucHV0X2J1ZmZlciA9IGlvLlN0cmlu
Z0lPKCIiIgogIyBDb21tZW50CiBDUiBBVCBFT0w6IHN2Zy9pbXBvcnQvKgogQ1IgQVQgRU9MOiBz
dHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDY3YjUxODlmYmUxMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9wYXRoX2xpbnRzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZWFjNThkNGVkNy4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2ZubWF0Y2gucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxl
cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IDUxYWVjZWE3NzEyYS4uMWNi
NmY1YjM3MjQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CkBAIC0xMCwxMSArMTAs
MTUgQEAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHki
LCAiYXRvbWljd3JpdGVzIikpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUs
ICJ0aGlyZF9wYXJ0eSIsICJhdHRycyIsICJzcmMiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImZ1bmNzaWdzIikpCiBzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJodG1sNWxpYiIpKQorc3lz
LnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiemlwcCIp
KQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAi
bW9yZS1pdGVydG9vbHMiKSkKLXN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwg
InRoaXJkX3BhcnR5IiwgInBsdWdneSIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAicGFja2FnaW5nIikpCitzeXMucGF0aC5pbnNlcnQoMCwg
b3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJwYXRobGliMiIpKQorc3lzLnBhdGgu
aW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAicGx1Z2d5IiwgInNy
YyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHki
LCAicHkiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3Bh
cnR5IiwgInB5dGVzdCIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAi
dGhpcmRfcGFydHkiLCAicHl0ZXN0IiwgInNyYyIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBh
dGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl0ZXN0LWFzeW5jaW8iKSkKIHN5cy5wYXRo
Lmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgInNpeCIpKQogc3lz
LnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAid2ViZW5j
b2RpbmdzIikpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9w
YXJ0eSIsICJoMiIpKQpAQCAtMjIsNiArMjYsMTAgQEAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBh
dGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiaHBhY2siKSkKIHN5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImh5cGVyZnJhbWUiKSkKIHN5cy5w
YXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImNlcnRpZmki
KSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5Iiwg
Imh5cGVyIikpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9w
YXJ0eSIsICJ3ZWJzb2NrZXRzIiwgInNyYyIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGgu
am9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiaW5pY29uZmlnIiwgInNyYyIpKQoraWYgc3lzLnZl
cnNpb25faW5mbyA8ICgzLCA4KToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJpbXBvcnRsaWJfbWV0YWRhdGEiKSkKIHN5cy5wYXRoLmlu
c2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgIndlYmRyaXZlciIpKQogc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihoZXJlLCAid3B0cnVubmVyIikpCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1M
UGFyc2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9YTUxQYXJzZXIucHkKaW5kZXggODBhYTNiNWI5MjBiLi40NWE4YTU0MDI5
Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5CkBAIC02
LDggKzYsNiBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSB4bWwu
cGFyc2VycyBpbXBvcnQgZXhwYXQKIGltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgZXRy
ZWUgICMgbm9xYTogTjgxMwogCi1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCi0KIE1ZUFkgPSBG
YWxzZQogaWYgTVlQWToKICAgICAjIE1ZUFkgaXMgc2V0IHRvIFRydWUgd2hlbiBydW4gdW5kZXIg
TXlweS4KQEAgLTgzLDcgKzgxLDcgQEAgY2xhc3MgWE1MUGFyc2VyKG9iamVjdCk6CiAKICAgICBk
ZWYgX3N0YXJ0KHNlbGYsIHRhZywgYXR0cmliX2luKToKICAgICAgICAgIyB0eXBlOiAoVGV4dCwg
TGlzdFtzdHJdKSAtPiBldHJlZS5FbGVtZW50Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHRh
ZywgdGV4dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0YWcsIHN0cikKICAgICAg
ICAgc2VsZi5fZmVkX2RhdGEgPSBOb25lCiAgICAgICAgIHRhZyA9IF9maXhuYW1lKHRhZykKICAg
ICAgICAgYXR0cmliID0gT3JkZXJlZERpY3QoKSAgIyB0eXBlOiBEaWN0W1VuaW9uW2J5dGVzLCBU
ZXh0XSwgVW5pb25bYnl0ZXMsIFRleHRdXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC9jYXRhbG9nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3ZDEzOTExYzBhN2IuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFs
b2cveGh0bWwuZHRkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9n
L3hodG1sLmR0ZAppbmRleCA4MDQyMzQ4MGJjNTkuLjQzMDdiMWMyYzQzMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9jYXRhbG9nL3hodG1sLmR0ZAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkCkBAIC0xLDIxMjUg
KzEsMjEyNSBAQAotPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgotPCEtLUVOVElUWSBOZXdMaW5l
ICImI3hBOyItLT4KLTwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgotPCEtLUVOVElUWSBxdW90
ICImI3gyMjsiLS0+Ci08IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4KLTwhLS1FTlRJVFkgbnVt
ICImI3gyMzsiLS0+Ci08IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0tPgotPCEtLUVOVElUWSBw
ZXJjbnQgIiYjeDI1OyItLT4KLTwhLS1FTlRJVFkgYW1wICImI3gyNjsjeDI2OyItLT4KLTwhLS1F
TlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KLTwhLS1FTlRJVFkgYXBvcyAiJiN4Mjc7Ii0tPgot
PCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Ci08IS0tRU5USVRZIHJwYXIgIiYjeDI5OyItLT4K
LTwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Ci08IS0tRU5USVRZIG1pZGFzdCAiJiN4MkE7Ii0t
PgotPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Ci08IS0tRU5USVRZIGNvbW1hICImI3gyQzsi
LS0+Ci08IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgotPCEtLUVOVElUWSBzb2wgIiYjeDJG
OyItLT4KLTwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KLTwhLS1FTlRJVFkgc2VtaSAiJiN4
M0I7Ii0tPgotPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Ci08IS0tRU5USVRZIExUICIm
I3gyNjsjeDNDOyItLT4KLTwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyItLT4K
LTwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Ci08IS0tRU5USVRZIGJuZSAiJiN4M0Q7JiN4
MjBFNTsiLS0+Ci08IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Ci08IS0tRU5USVRZIEdUICImI3gz
RTsiLS0+Ci08IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBx
dWVzdCAiJiN4M0Y7Ii0tPgotPCEtLUVOVElUWSBjb21tYXQgIiYjeDQwOyItLT4KLTwhLS1FTlRJ
VFkgbHNxYiAiJiN4NUI7Ii0tPgotPCEtLUVOVElUWSBsYnJhY2sgIiYjeDVCOyItLT4KLTwhLS1F
TlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgotPCEtLUVOVElUWSByc3FiICImI3g1RDsiLS0+Ci08IS0t
RU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgotPCEtLUVOVElUWSBIYXQgIiYjeDVFOyItLT4KLTwh
LS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Ci08IS0tRU5USVRZIFVuZGVyQmFyICImI3g1Rjsi
LS0+Ci08IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Ci08IS0tRU5USVRZIERpYWNyaXRpY2Fs
R3JhdmUgIiYjeDYwOyItLT4KLTwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyItLT4KLTwh
LS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgotPCEtLUVOVElUWSBsYnJhY2UgIiYjeDdCOyItLT4K
LTwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Ci08IS0tRU5USVRZIHZlcnQgIiYjeDdDOyIt
LT4KLTwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Ci08IS0tRU5USVRZIHJjdWIg
IiYjeDdEOyItLT4KLTwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+Ci08IS0tRU5USVRZIG5i
c3AgIiYjeEEwOyItLT4KLTwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ii0tPgot
PCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgotPCEtLUVOVElUWSBjZW50ICImI3hBMjsiLS0+
Ci08IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Ci08IS0tRU5USVRZIGN1cnJlbiAiJiN4QTQ7
Ii0tPgotPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KLTwhLS1FTlRJVFkgYnJ2YmFyICImI3hB
NjsiLS0+Ci08IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KLTwhLS1FTlRJVFkgRG90ICImI3hB
ODsiLS0+Ci08IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVEb3Qg
IiYjeEE4OyItLT4KLTwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Ci08IS0tRU5USVRZIGNvcHkg
IiYjeEE5OyItLT4KLTwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgotPCEtLUVOVElUWSBvcmRm
ICImI3hBQTsiLS0+Ci08IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+Ci08IS0tRU5USVRZIG5v
dCAiJiN4QUM7Ii0tPgotPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4KLTwhLS1FTlRJVFkgcmVn
ICImI3hBRTsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsiLS0+Ci08IS0tRU5USVRZ
IFJFRyAiJiN4QUU7Ii0tPgotPCEtLUVOVElUWSBtYWNyICImI3hBRjsiLS0+Ci08IS0tRU5USVRZ
IHN0cm5zICImI3hBRjsiLS0+Ci08IS0tRU5USVRZIGRlZyAiJiN4QjA7Ii0tPgotPCEtLUVOVElU
WSBwbHVzbW4gIiYjeEIxOyItLT4KLTwhLS1FTlRJVFkgcG0gIiYjeEIxOyItLT4KLTwhLS1FTlRJ
VFkgUGx1c01pbnVzICImI3hCMTsiLS0+Ci08IS0tRU5USVRZIHN1cDIgIiYjeEIyOyItLT4KLTwh
LS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgotPCEtLUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ii0tPgot
PCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Ci08IS0tRU5USVRZIG1pY3Jv
ICImI3hCNTsiLS0+Ci08IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4KLTwhLS1FTlRJVFkgbWlk
ZG90ICImI3hCNzsiLS0+Ci08IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ii0tPgotPCEtLUVO
VElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KLTwhLS1FTlRJVFkgY2VkaWwgIiYjeEI4OyItLT4K
LTwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgotPCEtLUVOVElUWSBzdXAxICImI3hCOTsi
LS0+Ci08IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KLTwhLS1FTlRJVFkgcmFxdW8gIiYjeEJC
OyItLT4KLTwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Ci08IS0tRU5USVRZIGZyYWMxMiAi
JiN4QkQ7Ii0tPgotPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Ci08IS0tRU5USVRZIGZyYWMz
NCAiJiN4QkU7Ii0tPgotPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyItLT4KLTwhLS1FTlRJVFkg
QWdyYXZlICImI3hDMDsiLS0+Ci08IS0tRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ii0tPgotPCEtLUVO
VElUWSBBY2lyYyAiJiN4QzI7Ii0tPgotPCEtLUVOVElUWSBBdGlsZGUgIiYjeEMzOyItLT4KLTwh
LS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgotPCEtLUVOVElUWSBBcmluZyAiJiN4QzU7Ii0tPgot
PCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgotPCEtLUVOVElUWSBBRWxpZyAiJiN4QzY7Ii0t
PgotPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KLTwhLS1FTlRJVFkgRWdyYXZlICImI3hD
ODsiLS0+Ci08IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgotPCEtLUVOVElUWSBFY2lyYyAi
JiN4Q0E7Ii0tPgotPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Ci08IS0tRU5USVRZIElncmF2
ZSAiJiN4Q0M7Ii0tPgotPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyItLT4KLTwhLS1FTlRJVFkg
SWNpcmMgIiYjeENFOyItLT4KLTwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7Ii0tPgotPCEtLUVOVElU
WSBFVEggIiYjeEQwOyItLT4KLTwhLS1FTlRJVFkgTnRpbGRlICImI3hEMTsiLS0+Ci08IS0tRU5U
SVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgotPCEtLUVOVElUWSBPYWN1dGUgIiYjeEQzOyItLT4KLTwh
LS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KLTwhLS1FTlRJVFkgT3RpbGRlICImI3hENTsiLS0+
Ci08IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KLTwhLS1FTlRJVFkgdGltZXMgIiYjeEQ3OyIt
LT4KLTwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Ci08IS0tRU5USVRZIFVncmF2ZSAiJiN4
RDk7Ii0tPgotPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KLTwhLS1FTlRJVFkgVWNpcmMg
IiYjeERCOyItLT4KLTwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgotPCEtLUVOVElUWSBZYWN1
dGUgIiYjeEREOyItLT4KLTwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyItLT4KLTwhLS1FTlRJVFkg
c3psaWcgIiYjeERGOyItLT4KLTwhLS1FTlRJVFkgYWdyYXZlICImI3hFMDsiLS0+Ci08IS0tRU5U
SVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgotPCEtLUVOVElUWSBhY2lyYyAiJiN4RTI7Ii0tPgotPCEt
LUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KLTwhLS1FTlRJVFkgYXVtbCAiJiN4RTQ7Ii0tPgot
PCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgotPCEtLUVOVElUWSBhZWxpZyAiJiN4RTY7Ii0t
PgotPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KLTwhLS1FTlRJVFkgZWdyYXZlICImI3hF
ODsiLS0+Ci08IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgotPCEtLUVOVElUWSBlY2lyYyAi
JiN4RUE7Ii0tPgotPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Ci08IS0tRU5USVRZIGlncmF2
ZSAiJiN4RUM7Ii0tPgotPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyItLT4KLTwhLS1FTlRJVFkg
aWNpcmMgIiYjeEVFOyItLT4KLTwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7Ii0tPgotPCEtLUVOVElU
WSBldGggIiYjeEYwOyItLT4KLTwhLS1FTlRJVFkgbnRpbGRlICImI3hGMTsiLS0+Ci08IS0tRU5U
SVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgotPCEtLUVOVElUWSBvYWN1dGUgIiYjeEYzOyItLT4KLTwh
LS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KLTwhLS1FTlRJVFkgb3RpbGRlICImI3hGNTsiLS0+
Ci08IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KLTwhLS1FTlRJVFkgZGl2aWRlICImI3hGNzsi
LS0+Ci08IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgotPCEtLUVOVElUWSBvc2xhc2ggIiYjeEY4
OyItLT4KLTwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Ci08IS0tRU5USVRZIHVhY3V0ZSAi
JiN4RkE7Ii0tPgotPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgotPCEtLUVOVElUWSB1dW1s
ICImI3hGQzsiLS0+Ci08IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0tPgotPCEtLUVOVElUWSB0
aG9ybiAiJiN4RkU7Ii0tPgotPCEtLUVOVElUWSB5dW1sICImI3hGRjsiLS0+Ci08IS0tRU5USVRZ
IEFtYWNyICImI3gxMDA7Ii0tPgotPCEtLUVOVElUWSBhbWFjciAiJiN4MTAxOyItLT4KLTwhLS1F
TlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgotPCEtLUVOVElUWSBhYnJldmUgIiYjeDEwMzsiLS0+
Ci08IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgotPCEtLUVOVElUWSBhb2dvbiAiJiN4MTA1
OyItLT4KLTwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgotPCEtLUVOVElUWSBjYWN1dGUg
IiYjeDEwNzsiLS0+Ci08IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0tPgotPCEtLUVOVElUWSBj
Y2lyYyAiJiN4MTA5OyItLT4KLTwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBBOyItLT4KLTwhLS1FTlRJ
VFkgY2RvdCAiJiN4MTBCOyItLT4KLTwhLS1FTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ii0tPgotPCEt
LUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Ci08IS0tRU5USVRZIERjYXJvbiAiJiN4MTBFOyIt
LT4KLTwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgotPCEtLUVOVElUWSBEc3Ryb2sgIiYj
eDExMDsiLS0+Ci08IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4KLTwhLS1FTlRJVFkgRW1h
Y3IgIiYjeDExMjsiLS0+Ci08IS0tRU5USVRZIGVtYWNyICImI3gxMTM7Ii0tPgotPCEtLUVOVElU
WSBFZG90ICImI3gxMTY7Ii0tPgotPCEtLUVOVElUWSBlZG90ICImI3gxMTc7Ii0tPgotPCEtLUVO
VElUWSBFb2dvbiAiJiN4MTE4OyItLT4KLTwhLS1FTlRJVFkgZW9nb24gIiYjeDExOTsiLS0+Ci08
IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KLTwhLS1FTlRJVFkgZWNhcm9uICImI3gxMUI7
Ii0tPgotPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KLTwhLS1FTlRJVFkgZ2NpcmMgIiYj
eDExRDsiLS0+Ci08IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4KLTwhLS1FTlRJVFkgZ2Jy
ZXZlICImI3gxMUY7Ii0tPgotPCEtLUVOVElUWSBHZG90ICImI3gxMjA7Ii0tPgotPCEtLUVOVElU
WSBnZG90ICImI3gxMjE7Ii0tPgotPCEtLUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiLS0+Ci08IS0t
RU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgotPCEtLUVOVElUWSBoY2lyYyAiJiN4MTI1OyItLT4K
LTwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgotPCEtLUVOVElUWSBoc3Ryb2sgIiYjeDEy
NzsiLS0+Ci08IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KLTwhLS1FTlRJVFkgaXRpbGRl
ICImI3gxMjk7Ii0tPgotPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyItLT4KLTwhLS1FTlRJVFkg
aW1hY3IgIiYjeDEyQjsiLS0+Ci08IS0tRU5USVRZIElvZ29uICImI3gxMkU7Ii0tPgotPCEtLUVO
VElUWSBpb2dvbiAiJiN4MTJGOyItLT4KLTwhLS1FTlRJVFkgSWRvdCAiJiN4MTMwOyItLT4KLTwh
LS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Ci08IS0tRU5USVRZIGlub2RvdCAiJiN4MTMxOyIt
LT4KLTwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Ci08IS0tRU5USVRZIGlqbGlnICImI3gx
MzM7Ii0tPgotPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KLTwhLS1FTlRJVFkgamNpcmMg
IiYjeDEzNTsiLS0+Ci08IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyItLT4KLTwhLS1FTlRJVFkg
a2NlZGlsICImI3gxMzc7Ii0tPgotPCEtLUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiLS0+Ci08IS0t
RU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KLTwhLS1FTlRJVFkgbGFjdXRlICImI3gxM0E7Ii0t
PgotPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Ci08IS0tRU5USVRZIGxjZWRpbCAiJiN4
MTNDOyItLT4KLTwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgotPCEtLUVOVElUWSBsY2Fy
b24gIiYjeDEzRTsiLS0+Ci08IS0tRU5USVRZIExtaWRvdCAiJiN4MTNGOyItLT4KLTwhLS1FTlRJ
VFkgbG1pZG90ICImI3gxNDA7Ii0tPgotPCEtLUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiLS0+Ci08
IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KLTwhLS1FTlRJVFkgTmFjdXRlICImI3gxNDM7
Ii0tPgotPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Ci08IS0tRU5USVRZIE5jZWRpbCAi
JiN4MTQ1OyItLT4KLTwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0tPgotPCEtLUVOVElUWSBO
Y2Fyb24gIiYjeDE0NzsiLS0+Ci08IS0tRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyItLT4KLTwhLS1F
TlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Ci08IS0tRU5USVRZIEVORyAiJiN4MTRBOyItLT4KLTwh
LS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgotPCEtLUVOVElUWSBPbWFjciAiJiN4MTRDOyItLT4K
LTwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Ci08IS0tRU5USVRZIE9kYmxhYyAiJiN4MTUw
OyItLT4KLTwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgotPCEtLUVOVElUWSBPRWxpZyAi
JiN4MTUyOyItLT4KLTwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+Ci08IS0tRU5USVRZIFJh
Y3V0ZSAiJiN4MTU0OyItLT4KLTwhLS1FTlRJVFkgcmFjdXRlICImI3gxNTU7Ii0tPgotPCEtLUVO
VElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Ci08IS0tRU5USVRZIHJjZWRpbCAiJiN4MTU3OyItLT4K
LTwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgotPCEtLUVOVElUWSByY2Fyb24gIiYjeDE1
OTsiLS0+Ci08IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KLTwhLS1FTlRJVFkgc2FjdXRl
ICImI3gxNUI7Ii0tPgotPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyItLT4KLTwhLS1FTlRJVFkg
c2NpcmMgIiYjeDE1RDsiLS0+Ci08IS0tRU5USVRZIFNjZWRpbCAiJiN4MTVFOyItLT4KLTwhLS1F
TlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgotPCEtLUVOVElUWSBTY2Fyb24gIiYjeDE2MDsiLS0+
Ci08IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KLTwhLS1FTlRJVFkgVGNlZGlsICImI3gx
NjI7Ii0tPgotPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Ci08IS0tRU5USVRZIFRjYXJv
biAiJiN4MTY0OyItLT4KLTwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7Ii0tPgotPCEtLUVOVElU
WSBUc3Ryb2sgIiYjeDE2NjsiLS0+Ci08IS0tRU5USVRZIHRzdHJvayAiJiN4MTY3OyItLT4KLTwh
LS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgotPCEtLUVOVElUWSB1dGlsZGUgIiYjeDE2OTsi
LS0+Ci08IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgotPCEtLUVOVElUWSB1bWFjciAiJiN4
MTZCOyItLT4KLTwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgotPCEtLUVOVElUWSB1YnJl
dmUgIiYjeDE2RDsiLS0+Ci08IS0tRU5USVRZIFVyaW5nICImI3gxNkU7Ii0tPgotPCEtLUVOVElU
WSB1cmluZyAiJiN4MTZGOyItLT4KLTwhLS1FTlRJVFkgVWRibGFjICImI3gxNzA7Ii0tPgotPCEt
LUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Ci08IS0tRU5USVRZIFVvZ29uICImI3gxNzI7Ii0t
PgotPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KLTwhLS1FTlRJVFkgV2NpcmMgIiYjeDE3
NDsiLS0+Ci08IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgotPCEtLUVOVElUWSBZY2lyYyAi
JiN4MTc2OyItLT4KLTwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+Ci08IS0tRU5USVRZIFl1
bWwgIiYjeDE3ODsiLS0+Ci08IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5OyItLT4KLTwhLS1FTlRJ
VFkgemFjdXRlICImI3gxN0E7Ii0tPgotPCEtLUVOVElUWSBaZG90ICImI3gxN0I7Ii0tPgotPCEt
LUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgotPCEtLUVOVElUWSBaY2Fyb24gIiYjeDE3RDsiLS0+
Ci08IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KLTwhLS1FTlRJVFkgZm5vZiAiJiN4MTky
OyItLT4KLTwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Ci08IS0tRU5USVRZIGdhY3V0ZSAi
JiN4MUY1OyItLT4KLTwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+Ci08IS0tRU5USVRZIGNp
cmMgIiYjeDJDNjsiLS0+Ci08IS0tRU5USVRZIGNhcm9uICImI3gyQzc7Ii0tPgotPCEtLUVOVElU
WSBIYWNlayAiJiN4MkM3OyItLT4KLTwhLS1FTlRJVFkgYnJldmUgIiYjeDJEODsiLS0+Ci08IS0t
RU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgotPCEtLUVOVElUWSBkb3QgIiYjeDJEOTsiLS0+Ci08
IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgotPCEtLUVOVElUWSByaW5nICIm
I3gyREE7Ii0tPgotPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgotPCEtLUVOVElUWSB0aWxk
ZSAiJiN4MkRDOyItLT4KLTwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyItLT4K
LTwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Ci08IS0tRU5USVRZIERpYWNyaXRpY2FsRG91
YmxlQWN1dGUgIiYjeDJERDsiLS0+Ci08IS0tRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyItLT4K
LTwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Ci08IS0tRU5USVRZIEJldGEgIiYjeDM5Mjsi
LS0+Ci08IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgotPCEtLUVOVElUWSBEZWx0YSAiJiN4
Mzk0OyItLT4KLTwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4KLTwhLS1FTlRJVFkgWmV0
YSAiJiN4Mzk2OyItLT4KLTwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0tPgotPCEtLUVOVElUWSBU
aGV0YSAiJiN4Mzk4OyItLT4KLTwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5OyItLT4KLTwhLS1FTlRJ
VFkgS2FwcGEgIiYjeDM5QTsiLS0+Ci08IS0tRU5USVRZIExhbWJkYSAiJiN4MzlCOyItLT4KLTwh
LS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Ci08IS0tRU5USVRZIE51ICImI3gzOUQ7Ii0tPgotPCEt
LUVOVElUWSBYaSAiJiN4MzlFOyItLT4KLTwhLS1FTlRJVFkgT21pY3JvbiAiJiN4MzlGOyItLT4K
LTwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Ci08IS0tRU5USVRZIFJobyAiJiN4M0ExOyItLT4K
LTwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Ci08IS0tRU5USVRZIFRhdSAiJiN4M0E0OyIt
LT4KLTwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KLTwhLS1FTlRJVFkgUGhpICImI3gz
QTY7Ii0tPgotPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Ci08IS0tRU5USVRZIFBzaSAiJiN4
M0E4OyItLT4KLTwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Ci08IS0tRU5USVRZIG9obSAi
JiN4M0E5OyItLT4KLTwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+Ci08IS0tRU5USVRZIGJl
dGEgIiYjeDNCMjsiLS0+Ci08IS0tRU5USVRZIGdhbW1hICImI3gzQjM7Ii0tPgotPCEtLUVOVElU
WSBkZWx0YSAiJiN4M0I0OyItLT4KLTwhLS1FTlRJVFkgZXBzaSAiJiN4M0I1OyItLT4KLTwhLS1F
TlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KLTwhLS1FTlRJVFkgemV0YSAiJiN4M0I2OyItLT4K
LTwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgotPCEtLUVOVElUWSB0aGV0YSAiJiN4M0I4OyIt
LT4KLTwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KLTwhLS1FTlRJVFkga2FwcGEgIiYjeDNC
QTsiLS0+Ci08IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KLTwhLS1FTlRJVFkgbXUgIiYj
eDNCQzsiLS0+Ci08IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgotPCEtLUVOVElUWSB4aSAiJiN4
M0JFOyItLT4KLTwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4KLTwhLS1FTlRJVFkgcGkg
IiYjeDNDMDsiLS0+Ci08IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4KLTwhLS1FTlRJVFkgc2ln
bWF2ICImI3gzQzI7Ii0tPgotPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyItLT4KLTwhLS1F
TlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgotPCEtLUVOVElUWSBzaWdtYSAiJiN4M0MzOyItLT4K
LTwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgotPCEtLUVOVElUWSB1cHNpICImI3gzQzU7Ii0t
PgotPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgotPCEtLUVOVElUWSBwaGkgIiYjeDND
NjsiLS0+Ci08IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KLTwhLS1FTlRJVFkgcHNpICImI3gz
Qzg7Ii0tPgotPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KLTwhLS1FTlRJVFkgdGhldGF2
ICImI3gzRDE7Ii0tPgotPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyItLT4KLTwhLS1FTlRJ
VFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Ci08IS0tRU5USVRZIFVwc2kgIiYjeDNEMjsiLS0+Ci08
IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgotPCEtLUVOVElUWSBzdHJhaWdodHBoaSAiJiN4
M0Q1OyItLT4KLTwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KLTwhLS1FTlRJVFkgdmFycGhp
ICImI3gzRDU7Ii0tPgotPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+Ci08IS0tRU5USVRZIHZh
cnBpICImI3gzRDY7Ii0tPgotPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiLS0+Ci08IS0tRU5U
SVRZIGdhbW1hZCAiJiN4M0REOyItLT4KLTwhLS1FTlRJVFkgZGlnYW1tYSAiJiN4M0REOyItLT4K
LTwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgotPCEtLUVOVElUWSB2YXJrYXBwYSAiJiN4
M0YwOyItLT4KLTwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KLTwhLS1FTlRJVFkgdmFycmhv
ICImI3gzRjE7Ii0tPgotPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyItLT4KLTwhLS1FTlRJVFkg
c3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgotPCEtLUVOVElUWSB2YXJlcHNpbG9uICImI3gz
RjU7Ii0tPgotPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KLTwhLS1FTlRJVFkgYmFja2Vw
c2lsb24gIiYjeDNGNjsiLS0+Ci08IS0tRU5USVRZIElPY3kgIiYjeDQwMTsiLS0+Ci08IS0tRU5U
SVRZIERKY3kgIiYjeDQwMjsiLS0+Ci08IS0tRU5USVRZIEdKY3kgIiYjeDQwMzsiLS0+Ci08IS0t
RU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgotPCEtLUVOVElUWSBEU2N5ICImI3g0MDU7Ii0tPgot
PCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KLTwhLS1FTlRJVFkgWUljeSAiJiN4NDA3OyIt
LT4KLTwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgotPCEtLUVOVElUWSBMSmN5ICImI3g0
MDk7Ii0tPgotPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgotPCEtLUVOVElUWSBUU0hjeSAi
JiN4NDBCOyItLT4KLTwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4KLTwhLS1FTlRJVFkgVWJy
Y3kgIiYjeDQwRTsiLS0+Ci08IS0tRU5USVRZIERaY3kgIiYjeDQwRjsiLS0+Ci08IS0tRU5USVRZ
IEFjeSAiJiN4NDEwOyItLT4KLTwhLS1FTlRJVFkgQmN5ICImI3g0MTE7Ii0tPgotPCEtLUVOVElU
WSBWY3kgIiYjeDQxMjsiLS0+Ci08IS0tRU5USVRZIEdjeSAiJiN4NDEzOyItLT4KLTwhLS1FTlRJ
VFkgRGN5ICImI3g0MTQ7Ii0tPgotPCEtLUVOVElUWSBJRWN5ICImI3g0MTU7Ii0tPgotPCEtLUVO
VElUWSBaSGN5ICImI3g0MTY7Ii0tPgotPCEtLUVOVElUWSBaY3kgIiYjeDQxNzsiLS0+Ci08IS0t
RU5USVRZIEljeSAiJiN4NDE4OyItLT4KLTwhLS1FTlRJVFkgSmN5ICImI3g0MTk7Ii0tPgotPCEt
LUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Ci08IS0tRU5USVRZIExjeSAiJiN4NDFCOyItLT4KLTwh
LS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgotPCEtLUVOVElUWSBOY3kgIiYjeDQxRDsiLS0+Ci08
IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KLTwhLS1FTlRJVFkgUGN5ICImI3g0MUY7Ii0tPgot
PCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Ci08IS0tRU5USVRZIFNjeSAiJiN4NDIxOyItLT4K
LTwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgotPCEtLUVOVElUWSBVY3kgIiYjeDQyMzsiLS0+
Ci08IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KLTwhLS1FTlRJVFkgS0hjeSAiJiN4NDI1OyIt
LT4KLTwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KLTwhLS1FTlRJVFkgQ0hjeSAiJiN4NDI3
OyItLT4KLTwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KLTwhLS1FTlRJVFkgU0hDSGN5ICIm
I3g0Mjk7Ii0tPgotPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+Ci08IS0tRU5USVRZIFlj
eSAiJiN4NDJCOyItLT4KLTwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7Ii0tPgotPCEtLUVOVElU
WSBFY3kgIiYjeDQyRDsiLS0+Ci08IS0tRU5USVRZIFlVY3kgIiYjeDQyRTsiLS0+Ci08IS0tRU5U
SVRZIFlBY3kgIiYjeDQyRjsiLS0+Ci08IS0tRU5USVRZIGFjeSAiJiN4NDMwOyItLT4KLTwhLS1F
TlRJVFkgYmN5ICImI3g0MzE7Ii0tPgotPCEtLUVOVElUWSB2Y3kgIiYjeDQzMjsiLS0+Ci08IS0t
RU5USVRZIGdjeSAiJiN4NDMzOyItLT4KLTwhLS1FTlRJVFkgZGN5ICImI3g0MzQ7Ii0tPgotPCEt
LUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgotPCEtLUVOVElUWSB6aGN5ICImI3g0MzY7Ii0tPgot
PCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Ci08IS0tRU5USVRZIGljeSAiJiN4NDM4OyItLT4K
LTwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgotPCEtLUVOVElUWSBrY3kgIiYjeDQzQTsiLS0+
Ci08IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KLTwhLS1FTlRJVFkgbWN5ICImI3g0M0M7Ii0t
PgotPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Ci08IS0tRU5USVRZIG9jeSAiJiN4NDNFOyIt
LT4KLTwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgotPCEtLUVOVElUWSByY3kgIiYjeDQ0MDsi
LS0+Ci08IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KLTwhLS1FTlRJVFkgdGN5ICImI3g0NDI7
Ii0tPgotPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Ci08IS0tRU5USVRZIGZjeSAiJiN4NDQ0
OyItLT4KLTwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KLTwhLS1FTlRJVFkgdHNjeSAiJiN4
NDQ2OyItLT4KLTwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KLTwhLS1FTlRJVFkgc2hjeSAi
JiN4NDQ4OyItLT4KLTwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0tPgotPCEtLUVOVElUWSBo
YXJkY3kgIiYjeDQ0QTsiLS0+Ci08IS0tRU5USVRZIHljeSAiJiN4NDRCOyItLT4KLTwhLS1FTlRJ
VFkgc29mdGN5ICImI3g0NEM7Ii0tPgotPCEtLUVOVElUWSBlY3kgIiYjeDQ0RDsiLS0+Ci08IS0t
RU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Ci08IS0tRU5USVRZIHlhY3kgIiYjeDQ0RjsiLS0+Ci08
IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Ci08IS0tRU5USVRZIGRqY3kgIiYjeDQ1MjsiLS0+
Ci08IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Ci08IS0tRU5USVRZIGp1a2N5ICImI3g0NTQ7
Ii0tPgotPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgotPCEtLUVOVElUWSBpdWtjeSAiJiN4
NDU2OyItLT4KLTwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KLTwhLS1FTlRJVFkganNlcmN5
ICImI3g0NTg7Ii0tPgotPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0tPgotPCEtLUVOVElUWSBu
amN5ICImI3g0NUE7Ii0tPgotPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVCOyItLT4KLTwhLS1FTlRJ
VFkga2pjeSAiJiN4NDVDOyItLT4KLTwhLS1FTlRJVFkgdWJyY3kgIiYjeDQ1RTsiLS0+Ci08IS0t
RU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Ci08IS0tRU5USVRZIGVuc3AgIiYjeDIwMDI7Ii0tPgot
PCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KLTwhLS1FTlRJVFkgZW1zcDEzICImI3gyMDA0
OyItLT4KLTwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KLTwhLS1FTlRJVFkgbnVtc3Ag
IiYjeDIwMDc7Ii0tPgotPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ii0tPgotPCEtLUVOVElU
WSB0aGluc3AgIiYjeDIwMDk7Ii0tPgotPCEtLUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ii0t
PgotPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgotPCEtLUVOVElUWSBWZXJ5VGhpblNw
YWNlICImI3gyMDBBOyItLT4KLTwhLS1FTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ii0t
PgotPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgotPCEtLUVO
VElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Ci08IS0tRU5USVRZIE5lZ2F0aXZl
TWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgotPCEtLUVOVElUWSBOZWdhdGl2ZVRoaWNrU3BhY2Ug
IiYjeDIwMEI7Ii0tPgotPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyItLT4KLTwhLS1FTlRJVFkg
endqICImI3gyMDBEOyItLT4KLTwhLS1FTlRJVFkgbHJtICImI3gyMDBFOyItLT4KLTwhLS1FTlRJ
VFkgcmxtICImI3gyMDBGOyItLT4KLTwhLS1FTlRJVFkgaHlwaGVuICImI3gyMDEwOyItLT4KLTwh
LS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Ci08IS0tRU5USVRZIG5kYXNoICImI3gyMDEzOyIt
LT4KLTwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgotPCEtLUVOVElUWSBob3JiYXIgIiYj
eDIwMTU7Ii0tPgotPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0tPgotPCEtLUVOVElUWSBW
ZXJ0ICImI3gyMDE2OyItLT4KLTwhLS1FTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ii0tPgotPCEtLUVO
VElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Ci08IS0tRU5USVRZIHJzcXVvICImI3gy
MDE5OyItLT4KLTwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4KLTwhLS1FTlRJVFkgQ2xv
c2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KLTwhLS1FTlRJVFkgbHNxdW9yICImI3gyMDFBOyIt
LT4KLTwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgotPCEtLUVOVElUWSBsZHF1byAiJiN4
MjAxQzsiLS0+Ci08IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyItLT4K
LTwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgotPCEtLUVOVElUWSByZHF1b3IgIiYjeDIw
MUQ7Ii0tPgotPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ii0tPgot
PCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgotPCEtLUVOVElUWSBiZHF1byAiJiN4MjAx
RTsiLS0+Ci08IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Ci08IS0tRU5USVRZIERhZ2dl
ciAiJiN4MjAyMTsiLS0+Ci08IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ii0tPgotPCEtLUVO
VElUWSBidWxsICImI3gyMDIyOyItLT4KLTwhLS1FTlRJVFkgYnVsbGV0ICImI3gyMDIyOyItLT4K
LTwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Ci08IS0tRU5USVRZIGhlbGxpcCAiJiN4MjAy
NjsiLS0+Ci08IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgotPCEtLUVOVElUWSBwZXJtaWwg
IiYjeDIwMzA7Ii0tPgotPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyItLT4KLTwhLS1FTlRJ
VFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgotPCEtLUVOVElUWSBQcmltZSAiJiN4MjAzMzsiLS0+Ci08
IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Ci08IS0tRU5USVRZIGJwcmltZSAiJiN4MjAz
NTsiLS0+Ci08IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+Ci08IS0tRU5USVRZIGxz
YXF1byAiJiN4MjAzOTsiLS0+Ci08IS0tRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiLS0+Ci08IS0t
RU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KLTwhLS1FTlRJVFkgT3ZlckJhciAiJiN4MjAzRTsi
LS0+Ci08IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KLTwhLS1FTlRJVFkgaHlidWxsICIm
I3gyMDQzOyItLT4KLTwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0tPgotPCEtLUVOVElUWSBi
c2VtaSAiJiN4MjA0RjsiLS0+Ci08IS0tRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiLS0+Ci08IS0t
RU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KLTwhLS1FTlRJVFkgVGhpY2tTcGFjZSAi
JiN4MjA1RjsmI3gyMDBBOyItLT4KLTwhLS1FTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiLS0+Ci08
IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgotPCEtLUVOVElUWSBhZiAiJiN4
MjA2MTsiLS0+Ci08IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyItLT4KLTwhLS1F
TlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgotPCEtLUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4MjA2
MzsiLS0+Ci08IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KLTwhLS1FTlRJVFkgZXVybyAiJiN4
MjBBQzsiLS0+Ci08IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgotPCEtLUVOVElUWSBUcmlw
bGVEb3QgIiYjeDIwREI7Ii0tPgotPCEtLUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ii0tPgotPCEt
LUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KLTwhLS1FTlRJVFkgY29tcGxleGVzICImI3gyMTAy
OyItLT4KLTwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KLTwhLS1FTlRJVFkgZ3NjciAi
JiN4MjEwQTsiLS0+Ci08IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiLS0+Ci08IS0tRU5USVRZ
IEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Ci08IS0tRU5USVRZIEhzY3IgIiYjeDIxMEI7Ii0t
PgotPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgotPCEtLUVOVElUWSBQb2luY2FyZXBsYW5l
ICImI3gyMTBDOyItLT4KLTwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ii0tPgotPCEt
LUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KLTwhLS1FTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsi
LS0+Ci08IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Ci08IS0tRU5USVRZIGhiYXIgIiYj
eDIxMEY7Ii0tPgotPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0tPgotPCEtLUVOVElUWSBo
c2xhc2ggIiYjeDIxMEY7Ii0tPgotPCEtLUVOVElUWSBJc2NyICImI3gyMTEwOyItLT4KLTwhLS1F
TlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgotPCEtLUVOVElUWSBpbWFnZSAiJiN4MjExMTsi
LS0+Ci08IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KLTwhLS1FTlRJVFkgaW1hZ3BhcnQgIiYj
eDIxMTE7Ii0tPgotPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgotPCEtLUVOVElUWSBMc2Ny
ICImI3gyMTEyOyItLT4KLTwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEyOyItLT4KLTwhLS1FTlRJ
VFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Ci08IS0tRU5USVRZIGVsbCAiJiN4MjExMzsiLS0+
Ci08IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgotPCEtLUVOVElUWSBuYXR1cmFscyAiJiN4
MjExNTsiLS0+Ci08IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+Ci08IS0tRU5USVRZIGNv
cHlzciAiJiN4MjExNzsiLS0+Ci08IS0tRU5USVRZIHdlaWVycCAiJiN4MjExODsiLS0+Ci08IS0t
RU5USVRZIHdwICImI3gyMTE4OyItLT4KLTwhLS1FTlRJVFkgUG9wZiAiJiN4MjExOTsiLS0+Ci08
IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Ci08IS0tRU5USVRZIHJhdGlvbmFscyAiJiN4
MjExQTsiLS0+Ci08IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgotPCEtLUVOVElUWSBSc2Ny
ICImI3gyMTFCOyItLT4KLTwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiLS0+Ci08IS0tRU5U
SVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgotPCEtLUVOVElUWSBSZSAiJiN4MjExQzsiLS0+Ci08IS0t
RU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KLTwhLS1FTlRJVFkgUmZyICImI3gyMTFDOyIt
LT4KLTwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgotPCEtLUVOVElUWSBSb3BmICImI3gy
MTFEOyItLT4KLTwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgotPCEtLUVOVElUWSB0cmFkZSAi
JiN4MjEyMjsiLS0+Ci08IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyItLT4KLTwhLS1FTlRJVFkg
aW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgotPCEtLUVOVElUWSBab3BmICImI3gyMTI0OyItLT4KLTwh
LS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KLTwhLS1FTlRJVFkgWmZyICImI3gyMTI4OyItLT4K
LTwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KLTwhLS1FTlRJVFkgaWlvdGEgIiYjeDIx
Mjk7Ii0tPgotPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgotPCEtLUVOVElUWSBCZXJu
b3VsbGlzICImI3gyMTJDOyItLT4KLTwhLS1FTlRJVFkgQnNjciAiJiN4MjEyQzsiLS0+Ci08IS0t
RU5USVRZIENmciAiJiN4MjEyRDsiLS0+Ci08IS0tRU5USVRZIENheWxleXMgIiYjeDIxMkQ7Ii0t
PgotPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KLTwhLS1FTlRJVFkgRXNjciAiJiN4MjEz
MDsiLS0+Ci08IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyItLT4KLTwhLS1FTlRJVFkg
RnNjciAiJiN4MjEzMTsiLS0+Ci08IS0tRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ii0tPgot
PCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgotPCEtLUVOVElUWSBNZWxsaW50cmYgIiYj
eDIxMzM7Ii0tPgotPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4KLTwhLS1FTlRJVFkgb3Jk
ZXIgIiYjeDIxMzQ7Ii0tPgotPCEtLUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyItLT4KLTwhLS1F
TlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Ci08IS0tRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7Ii0t
PgotPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Ci08IS0tRU5USVRZIGJldGggIiYjeDIx
MzY7Ii0tPgotPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Ci08IS0tRU5USVRZIGRhbGV0
aCAiJiN4MjEzODsiLS0+Ci08IS0tRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1
OyItLT4KLTwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgotPCEtLUVOVElUWSBEaWZmZXJlbnRp
YWxEICImI3gyMTQ2OyItLT4KLTwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7Ii0tPgotPCEtLUVOVElU
WSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgotPCEtLUVOVElUWSBleHBvbmVudGlhbGUgIiYj
eDIxNDc7Ii0tPgotPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Ci08IS0tRU5USVRZIEltYWdp
bmFyeUkgIiYjeDIxNDg7Ii0tPgotPCEtLUVOVElUWSBpaSAiJiN4MjE0ODsiLS0+Ci08IS0tRU5U
SVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Ci08IS0tRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsiLS0+
Ci08IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Ci08IS0tRU5USVRZIGZyYWMyNSAiJiN4
MjE1NjsiLS0+Ci08IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+Ci08IS0tRU5USVRZIGZy
YWM0NSAiJiN4MjE1ODsiLS0+Ci08IS0tRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiLS0+Ci08IS0t
RU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Ci08IS0tRU5USVRZIGZyYWMxOCAiJiN4MjE1Qjsi
LS0+Ci08IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Ci08IS0tRU5USVRZIGZyYWM1OCAi
JiN4MjE1RDsiLS0+Ci08IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiLS0+Ci08IS0tRU5USVRZ
IGxhcnIgIiYjeDIxOTA7Ii0tPgotPCEtLUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ii0tPgot
PCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgotPCEtLUVOVElUWSBzbGFyciAiJiN4
MjE5MDsiLS0+Ci08IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyItLT4KLTwhLS1F
TlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Ci08IS0tRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ii0t
PgotPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KLTwhLS1FTlRJVFkgU2hvcnRVcEFy
cm93ICImI3gyMTkxOyItLT4KLTwhLS1FTlRJVFkgcmFyciAiJiN4MjE5MjsiLS0+Ci08IS0tRU5U
SVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgotPCEtLUVOVElUWSBSaWdodEFycm93ICImI3gy
MTkyOyItLT4KLTwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgotPCEtLUVOVElUWSBTaG9y
dFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgotPCEtLUVOVElUWSBkYXJyICImI3gyMTkzOyItLT4K
LTwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KLTwhLS1FTlRJVFkgRG93bkFycm93
ICImI3gyMTkzOyItLT4KLTwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ii0tPgot
PCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KLTwhLS1FTlRJVFkgbGVmdHJpZ2h0YXJyb3cg
IiYjeDIxOTQ7Ii0tPgotPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiLS0+Ci08
IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgotPCEtLUVOVElUWSB1cGRvd25hcnJvdyAiJiN4
MjE5NTsiLS0+Ci08IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyItLT4KLTwhLS1FTlRJ
VFkgbndhcnIgIiYjeDIxOTY7Ii0tPgotPCEtLUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4MjE5
NjsiLS0+Ci08IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgotPCEtLUVOVElUWSBuZWFy
ciAiJiN4MjE5NzsiLS0+Ci08IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5NzsiLS0+
Ci08IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgotPCEtLUVOVElUWSBzZWFyciAiJiN4
MjE5ODsiLS0+Ci08IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0tPgotPCEtLUVOVElUWSBM
b3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgotPCEtLUVOVElUWSBzd2FyciAiJiN4MjE5OTsi
LS0+Ci08IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgotPCEtLUVOVElUWSBMb3dlckxl
ZnRBcnJvdyAiJiN4MjE5OTsiLS0+Ci08IS0tRU5USVRZIG5sYXJyICImI3gyMTlBOyItLT4KLTwh
LS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Ci08IS0tRU5USVRZIG5yYXJyICImI3gy
MTlCOyItLT4KLTwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ii0tPgotPCEtLUVOVElU
WSByYXJydyAiJiN4MjE5RDsiLS0+Ci08IS0tRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjE5
RDsiLS0+Ci08IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ii0tPgotPCEtLUVOVElU
WSBMYXJyICImI3gyMTlFOyItLT4KLTwhLS1FTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4MjE5
RTsiLS0+Ci08IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgotPCEtLUVOVElUWSBSYXJyICIm
I3gyMUEwOyItLT4KLTwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ii0tPgot
PCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KLTwhLS1FTlRJVFkgbGFycnRsICImI3gyMUEy
OyItLT4KLTwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiLS0+Ci08IS0tRU5USVRZ
IHJhcnJ0bCAiJiN4MjFBMzsiLS0+Ci08IS0tRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gyMUEz
OyItLT4KLTwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyItLT4KLTwhLS1FTlRJVFkg
bWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Ci08IS0tRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIxQTU7
Ii0tPgotPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Ci08IS0tRU5USVRZIG1hcCAi
JiN4MjFBNjsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ii0tPgotPCEt
LUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgotPCEtLUVOVElUWSBEb3duVGVlQXJyb3cgIiYj
eDIxQTc7Ii0tPgotPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyItLT4KLTwhLS1FTlRJ
VFkgbGFycmhrICImI3gyMUE5OyItLT4KLTwhLS1FTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFB
OTsiLS0+Ci08IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Ci08IS0tRU5USVRZIGhvb2ty
aWdodGFycm93ICImI3gyMUFBOyItLT4KLTwhLS1FTlRJVFkgbGFycmxwICImI3gyMUFCOyItLT4K
LTwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Ci08IS0tRU5USVRZIHJhcnJs
cCAiJiN4MjFBQzsiLS0+Ci08IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyItLT4K
LTwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgotPCEtLUVOVElUWSBsZWZ0cmlnaHRzcXVp
Z2Fycm93ICImI3gyMUFEOyItLT4KLTwhLS1FTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ii0tPgotPCEt
LUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgotPCEtLUVOVElUWSBsc2ggIiYj
eDIxQjA7Ii0tPgotPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgotPCEtLUVOVElUWSByc2gg
IiYjeDIxQjE7Ii0tPgotPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0tPgotPCEtLUVOVElUWSBs
ZHNoICImI3gyMUIyOyItLT4KLTwhLS1FTlRJVFkgcmRzaCAiJiN4MjFCMzsiLS0+Ci08IS0tRU5U
SVRZIGNyYXJyICImI3gyMUI1OyItLT4KLTwhLS1FTlRJVFkgY3VsYXJyICImI3gyMUI2OyItLT4K
LTwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgotPCEtLUVOVElUWSBjdXJh
cnIgIiYjeDIxQjc7Ii0tPgotPCEtLUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7Ii0t
PgotPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWFycm93
bGVmdCAiJiN4MjFCQTsiLS0+Ci08IS0tRU5USVRZIG9yYXJyICImI3gyMUJCOyItLT4KLTwhLS1F
TlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Ci08IS0tRU5USVRZIGxoYXJ1ICIm
I3gyMUJDOyItLT4KLTwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiLS0+Ci08IS0tRU5U
SVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgotPCEtLUVOVElUWSBsaGFyZCAiJiN4MjFC
RDsiLS0+Ci08IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiLS0+Ci08IS0tRU5U
SVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KLTwhLS1FTlRJVFkgdWhhcnIgIiYjeDIx
QkU7Ii0tPgotPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiLS0+Ci08IS0tRU5U
SVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgotPCEtLUVOVElUWSB1aGFybCAiJiN4MjFC
RjsiLS0+Ci08IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ii0tPgotPCEtLUVOVElU
WSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgotPCEtLUVOVElUWSByaGFydSAiJiN4MjFDMDsi
LS0+Ci08IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4KLTwhLS1FTlRJVFkgcmln
aHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgotPCEtLUVOVElUWSByaGFyZCAiJiN4MjFDMTsiLS0+
Ci08IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0tPgotPCEtLUVOVElUWSBE
b3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgotPCEtLUVOVElUWSBkaGFyciAiJiN4MjFDMjsi
LS0+Ci08IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiLS0+Ci08IS0tRU5USVRZ
IGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgotPCEtLUVOVElUWSBkaGFybCAiJiN4MjFD
MzsiLS0+Ci08IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyItLT4KLTwhLS1FTlRJ
VFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KLTwhLS1FTlRJVFkgcmxhcnIgIiYjeDIx
QzQ7Ii0tPgotPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ii0tPgotPCEtLUVO
VElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KLTwhLS1FTlRJVFkgdWRhcnIg
IiYjeDIxQzU7Ii0tPgotPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyItLT4K
LTwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgotPCEtLUVOVElUWSBsZWZ0cmlnaHRhcnJv
d3MgIiYjeDIxQzY7Ii0tPgotPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2
OyItLT4KLTwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgotPCEtLUVOVElUWSBsZWZ0bGVm
dGFycm93cyAiJiN4MjFDNzsiLS0+Ci08IS0tRU5USVRZIHV1YXJyICImI3gyMUM4OyItLT4KLTwh
LS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Ci08IS0tRU5USVRZIHJyYXJyICImI3gy
MUM5OyItLT4KLTwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiLS0+Ci08IS0t
RU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KLTwhLS1FTlRJVFkgZG93bmRvd25hcnJvd3MgIiYj
eDIxQ0E7Ii0tPgotPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+Ci08IS0tRU5USVRZIFJl
dmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Ci08IS0tRU5USVRZIGxlZnRyaWdodGhhcnBv
b25zICImI3gyMUNCOyItLT4KLTwhLS1FTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ii0tPgotPCEtLUVO
VElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Ci08IS0tRU5USVRZIEVxdWlsaWJy
aXVtICImI3gyMUNDOyItLT4KLTwhLS1FTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ii0tPgotPCEtLUVO
VElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KLTwhLS1FTlRJVFkgbmhBcnIgIiYjeDIxQ0U7
Ii0tPgotPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ii0tPgotPCEtLUVOVElU
WSBuckFyciAiJiN4MjFDRjsiLS0+Ci08IS0tRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNGOyIt
LT4KLTwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Ci08IS0tRU5USVRZIExlZnRhcnJvdyAi
JiN4MjFEMDsiLS0+Ci08IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiLS0+Ci08
IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgotPCEtLUVOVElUWSBVcGFycm93ICImI3gyMUQx
OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiLS0+Ci08IS0tRU5USVRZ
IHJBcnIgIiYjeDIxRDI7Ii0tPgotPCEtLUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyItLT4K
LTwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVJpZ2h0
QXJyb3cgIiYjeDIxRDI7Ii0tPgotPCEtLUVOVElUWSBkQXJyICImI3gyMUQzOyItLT4KLTwhLS1F
TlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KLTwhLS1FTlRJVFkgRG91YmxlRG93bkFycm93
ICImI3gyMUQzOyItLT4KLTwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsiLS0+Ci08IS0tRU5USVRZ
IExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlTGVmdFJpZ2h0
QXJyb3cgIiYjeDIxRDQ7Ii0tPgotPCEtLUVOVElUWSBpZmYgIiYjeDIxRDQ7Ii0tPgotPCEtLUVO
VElUWSB2QXJyICImI3gyMUQ1OyItLT4KLTwhLS1FTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7
Ii0tPgotPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiLS0+Ci08IS0tRU5U
SVRZIG53QXJyICImI3gyMUQ2OyItLT4KLTwhLS1FTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ii0tPgot
PCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Ci08IS0tRU5USVRZIHN3QXJyICImI3gyMUQ5
OyItLT4KLTwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgotPCEtLUVOVElUWSBMbGVmdGFy
cm93ICImI3gyMURBOyItLT4KLTwhLS1FTlRJVFkgckFhcnIgIiYjeDIxREI7Ii0tPgotPCEtLUVO
VElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Ci08IS0tRU5USVRZIHppZ3JhcnIgIiYjeDIx
REQ7Ii0tPgotPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Ci08IS0tRU5USVRZIExlZnRB
cnJvd0JhciAiJiN4MjFFNDsiLS0+Ci08IS0tRU5USVRZIHJhcnJiICImI3gyMUU1OyItLT4KLTwh
LS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Ci08IS0tRU5USVRZIGR1YXJyICIm
I3gyMUY1OyItLT4KLTwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiLS0+Ci08
IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KLTwhLS1FTlRJVFkgcm9hcnIgIiYjeDIxRkU7
Ii0tPgotPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Ci08IS0tRU5USVRZIGZvcmFsbCAi
JiN4MjIwMDsiLS0+Ci08IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiLS0+Ci08IS0tRU5USVRZ
IGNvbXAgIiYjeDIyMDE7Ii0tPgotPCEtLUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyItLT4K
LTwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Ci08IS0tRU5USVRZIFBhcnRpYWxEICImI3gy
MjAyOyItLT4KLTwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgotPCEtLUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ii0tPgot
PCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgotPCEtLUVOVElUWSBOb3RFeGlzdHMgIiYj
eDIyMDQ7Ii0tPgotPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyItLT4KLTwhLS1FTlRJVFkg
ZW1wdHkgIiYjeDIyMDU7Ii0tPgotPCEtLUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiLS0+Ci08
IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Ci08IS0tRU5USVRZIHZhcm5vdGhpbmcgIiYj
eDIyMDU7Ii0tPgotPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+Ci08IS0tRU5USVRZIERl
bCAiJiN4MjIwNzsiLS0+Ci08IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7Ii0tPgotPCEtLUVOVElU
WSBpc2ludiAiJiN4MjIwODsiLS0+Ci08IS0tRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ii0tPgot
PCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Ci08IS0tRU5USVRZIG5vdGluICImI3gyMjA5OyIt
LT4KLTwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Ci08IS0tRU5USVRZIG5vdGlu
dmEgIiYjeDIyMDk7Ii0tPgotPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7Ii0tPgotPCEtLUVOVElU
WSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Ci08IS0tRU5USVRZIG5pICImI3gyMjBCOyIt
LT4KLTwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgotPCEtLUVOVElUWSBub3RuaSAi
JiN4MjIwQzsiLS0+Ci08IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ii0tPgotPCEtLUVOVElU
WSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Ci08IS0tRU5USVRZIHByb2QgIiYjeDIy
MEY7Ii0tPgotPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4KLTwhLS1FTlRJVFkgY29w
cm9kICImI3gyMjEwOyItLT4KLTwhLS1FTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyItLT4KLTwh
LS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KLTwhLS1FTlRJVFkgU3VtICImI3gyMjExOyItLT4K
LTwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgotPCEtLUVOVElUWSBtbnBsdXMgIiYjeDIy
MTM7Ii0tPgotPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Ci08IS0tRU5USVRZIE1pbnVzUGx1
cyAiJiN4MjIxMzsiLS0+Ci08IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiLS0+Ci08IS0tRU5U
SVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgotPCEtLUVOVElUWSBzZXRtbiAiJiN4MjIxNjsiLS0+
Ci08IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KLTwhLS1FTlRJVFkgQmFja3NsYXNo
ICImI3gyMjE2OyItLT4KLTwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2OyItLT4KLTwhLS1FTlRJ
VFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Ci08IS0tRU5USVRZIGxvd2FzdCAiJiN4MjIx
NzsiLS0+Ci08IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Ci08IS0tRU5USVRZIFNtYWxs
Q2lyY2xlICImI3gyMjE4OyItLT4KLTwhLS1FTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ii0tPgotPCEt
LUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KLTwhLS1FTlRJVFkgcHJvcCAiJiN4MjIxRDsiLS0+
Ci08IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Ci08IS0tRU5USVRZIFByb3BvcnRpb25h
bCAiJiN4MjIxRDsiLS0+Ci08IS0tRU5USVRZIHZwcm9wICImI3gyMjFEOyItLT4KLTwhLS1FTlRJ
VFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KLTwhLS1FTlRJVFkgaW5maW4gIiYjeDIyMUU7Ii0t
PgotPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Ci08IS0tRU5USVRZIGFuZyAiJiN4MjIy
MDsiLS0+Ci08IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KLTwhLS1FTlRJVFkgbmFuZyAi
JiN4MjIyMDsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgYW5nbXNkICImI3gyMjIxOyItLT4KLTwh
LS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Ci08IS0tRU5USVRZIGFuZ3NwaCAi
JiN4MjIyMjsiLS0+Ci08IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+Ci08IS0tRU5USVRZIFZl
cnRpY2FsQmFyICImI3gyMjIzOyItLT4KLTwhLS1FTlRJVFkgc21pZCAiJiN4MjIyMzsiLS0+Ci08
IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KLTwhLS1FTlRJVFkgbm1pZCAiJiN4MjIy
NDsiLS0+Ci08IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyItLT4KLTwhLS1FTlRJ
VFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgotPCEtLUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7Ii0t
PgotPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgotPCEtLUVOVElUWSBwYXJhbGxlbCAiJiN4
MjIyNTsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyItLT4KLTwh
LS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Ci08IS0tRU5USVRZIHNob3J0cGFyYWxsZWwgIiYj
eDIyMjU7Ii0tPgotPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgbnBh
cmFsbGVsICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYj
eDIyMjY7Ii0tPgotPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+Ci08IS0tRU5USVRZIG5z
aG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgYW5kICImI3gyMjI3OyItLT4K
LTwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgotPCEtLUVOVElUWSBvciAiJiN4MjIyODsi
LS0+Ci08IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Ci08IS0tRU5USVRZIGNhcCAiJiN4MjIy
OTsiLS0+Ci08IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZ
IGN1cCAiJiN4MjIyQTsiLS0+Ci08IS0tRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsiLS0+
Ci08IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Ci08IS0tRU5USVRZIEludGVncmFsICImI3gy
MjJCOyItLT4KLTwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KLTwhLS1FTlRJVFkgdGludCAi
JiN4MjIyRDsiLS0+Ci08IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyItLT4KLTwhLS1FTlRJVFkg
Y29uaW50ICImI3gyMjJFOyItLT4KLTwhLS1FTlRJVFkgb2ludCAiJiN4MjIyRTsiLS0+Ci08IS0t
RU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Ci08IS0tRU5USVRZIENvbmludCAi
JiN4MjIyRjsiLS0+Ci08IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRjsi
LS0+Ci08IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgotPCEtLUVOVElUWSBjd2ludCAi
JiN4MjIzMTsiLS0+Ci08IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyItLT4KLTwhLS1FTlRJ
VFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4KLTwhLS1FTlRJVFkgYXdj
b25pbnQgIiYjeDIyMzM7Ii0tPgotPCEtLUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91cklu
dGVncmFsICImI3gyMjMzOyItLT4KLTwhLS1FTlRJVFkgdGhlcmU0ICImI3gyMjM0OyItLT4KLTwh
LS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KLTwhLS1FTlRJVFkgVGhlcmVmb3JlICIm
I3gyMjM0OyItLT4KLTwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyItLT4KLTwhLS1FTlRJVFkg
YmVjYXVzZSAiJiN4MjIzNTsiLS0+Ci08IS0tRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ii0tPgot
PCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Ci08IS0tRU5USVRZIENvbG9uICImI3gyMjM3
OyItLT4KLTwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+Ci08IS0tRU5USVRZIG1p
bnVzZCAiJiN4MjIzODsiLS0+Ci08IS0tRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyItLT4KLTwh
LS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgotPCEtLUVOVElUWSBob210aHQgIiYjeDIyM0I7
Ii0tPgotPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgotPCEtLUVOVElUWSBUaWxkZSAiJiN4
MjIzQzsiLS0+Ci08IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+Ci08IS0tRU5USVRZIHRo
aWNrc2ltICImI3gyMjNDOyItLT4KLTwhLS1FTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBEMjsi
LS0+Ci08IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgotPCEtLUVOVElUWSBiYWNrc2ltICIm
I3gyMjNEOyItLT4KLTwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ii0tPgotPCEtLUVO
VElUWSBhYyAiJiN4MjIzRTsiLS0+Ci08IS0tRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiLS0+Ci08
IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgotPCEtLUVOVElUWSBhY2QgIiYjeDIy
M0Y7Ii0tPgotPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgotPCEtLUVOVElUWSBWZXJ0
aWNhbFRpbGRlICImI3gyMjQwOyItLT4KLTwhLS1FTlRJVFkgd3IgIiYjeDIyNDA7Ii0tPgotPCEt
LUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KLTwhLS1FTlRJVFkgTm90VGlsZGUgIiYjeDIyNDE7
Ii0tPgotPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KLTwhLS1FTlRJVFkgRXF1YWxUaWxk
ZSAiJiN4MjI0MjsiLS0+Ci08IS0tRU5USVRZIGVxc2ltICImI3gyMjQyOyItLT4KLTwhLS1FTlRJ
VFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuZXNpbSAi
JiN4MjI0MjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBzaW1lICImI3gyMjQzOyItLT4KLTwhLS1F
TlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Ci08IS0tRU5USVRZIHNpbWVxICImI3gyMjQz
OyItLT4KLTwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgotPCEtLUVOVElUWSBuc2ltZXEg
IiYjeDIyNDQ7Ii0tPgotPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyItLT4KLTwh
LS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Ci08IS0tRU5USVRZIFRpbGRlRnVsbEVxdWFsICIm
I3gyMjQ1OyItLT4KLTwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0tPgotPCEtLUVOVElUWSBu
Y29uZyAiJiN4MjI0NzsiLS0+Ci08IS0tRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3
OyItLT4KLTwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElUWSBhcCAiJiN4
MjI0ODsiLS0+Ci08IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElU
WSBhcHByb3ggIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElUWSB0aGthcCAiJiN4MjI0ODsiLS0+Ci08
IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KLTwhLS1FTlRJVFkgbmFwICImI3gy
MjQ5OyItLT4KLTwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiLS0+Ci08IS0tRU5U
SVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgotPCEtLUVOVElUWSBhcGUgIiYjeDIyNEE7Ii0tPgot
PCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Ci08IS0tRU5USVRZIGFwaWQgIiYjeDIy
NEI7Ii0tPgotPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ii0tPgotPCEtLUVOVElU
WSBiY29uZyAiJiN4MjI0QzsiLS0+Ci08IS0tRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyItLT4K
LTwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Ci08IS0tRU5USVRZIEN1cENhcCAiJiN4
MjI0RDsiLS0+Ci08IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiLS0+Ci08IS0tRU5U
SVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgotPCEtLUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIyNEU7
Ii0tPgotPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgotPCEtLUVOVElUWSBOb3RIdW1w
RG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmJ1bXAgIiYjeDIyNEU7
JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0tPgotPCEtLUVOVElUWSBI
dW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgotPCEtLUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ii0tPgot
PCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgTm90SHVt
cEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGVzZG90ICImI3gyMjUwOyIt
LT4KLTwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgotPCEtLUVOVElUWSBkb3RlcSAi
JiN4MjI1MDsiLS0+Ci08IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiLS0+Ci08IS0t
RU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgotPCEtLUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1MTsi
LS0+Ci08IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KLTwhLS1FTlRJVFkgZmFsbGluZ2Rv
dHNlcSAiJiN4MjI1MjsiLS0+Ci08IS0tRU5USVRZIGVyRG90ICImI3gyMjUzOyItLT4KLTwhLS1F
TlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KLTwhLS1FTlRJVFkgY29sb25lICImI3gy
MjU0OyItLT4KLTwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+Ci08IS0tRU5USVRZIEFz
c2lnbiAiJiN4MjI1NDsiLS0+Ci08IS0tRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiLS0+Ci08IS0t
RU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgotPCEtLUVOVElUWSBlY2lyICImI3gyMjU2OyIt
LT4KLTwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KLTwhLS1FTlRJVFkgY2lyZSAiJiN4
MjI1NzsiLS0+Ci08IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+Ci08IS0tRU5USVRZIHdl
ZGdlcSAiJiN4MjI1OTsiLS0+Ci08IS0tRU5USVRZIHZlZWVxICImI3gyMjVBOyItLT4KLTwhLS1F
TlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1Qzsi
LS0+Ci08IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Ci08IS0tRU5USVRZIHF1ZXN0ZXEg
IiYjeDIyNUY7Ii0tPgotPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+Ci08IS0tRU5USVRZIE5v
dEVxdWFsICImI3gyMjYwOyItLT4KLTwhLS1FTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ii0tPgotPCEt
LUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgotPCEtLUVOVElUWSBibmVxdWl2ICImI3gy
MjYxOyYjeDIwRTU7Ii0tPgotPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ii0tPgotPCEtLUVO
VElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgotPCEtLUVOVElUWSBsZSAiJiN4MjI2NDsi
LS0+Ci08IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Ci08IS0tRU5USVRZIG52bGUgIiYjeDIy
NjQ7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIGdlICImI3gyMjY1OyItLT4KLTwhLS1FTlRJVFkg
R3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KLTwhLS1FTlRJVFkgZ2VxICImI3gyMjY1OyItLT4K
LTwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgbEUgIiYj
eDIyNjY7Ii0tPgotPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyItLT4KLTwhLS1F
TlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Ci08IS0tRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gzMzg7
Ii0tPgotPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBn
RSAiJiN4MjI2NzsiLS0+Ci08IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7Ii0t
PgotPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KLTwhLS1FTlRJVFkgbmdFICImI3gyMjY3
OyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiLS0+Ci08IS0t
RU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgbG5FICImI3gyMjY4OyItLT4KLTwhLS1FTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ii0tPgotPCEt
LUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBsdmVydG5lcXEg
IiYjeDIyNjg7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIGduRSAiJiN4MjI2OTsiLS0+Ci08IS0t
RU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KLTwhLS1FTlRJVFkgZ3ZuRSAiJiN4MjI2OTsmI3hG
RTAwOyItLT4KLTwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ii0tPgotPCEt
LUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Ci08IS0tRU5USVRZIE5lc3RlZExlc3NMZXNzICImI3gy
MjZBOyItLT4KLTwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgotPCEtLUVOVElUWSBuTHR2ICIm
I3gyMjZBOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYjeDMz
ODsiLS0+Ci08IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkg
R3QgIiYjeDIyNkI7Ii0tPgotPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MjI2
QjsiLS0+Ci08IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KLTwhLS1FTlRJVFkgbkd0diAiJiN4
MjI2QjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2Qjsm
I3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiLS0+Ci08IS0tRU5U
SVRZIHR3aXh0ICImI3gyMjZDOyItLT4KLTwhLS1FTlRJVFkgYmV0d2VlbiAiJiN4MjI2QzsiLS0+
Ci08IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Ci08IS0tRU5USVRZIG5sdCAiJiN4
MjI2RTsiLS0+Ci08IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0tPgotPCEtLUVOVElUWSBu
bGVzcyAiJiN4MjI2RTsiLS0+Ci08IS0tRU5USVRZIG5ndCAiJiN4MjI2RjsiLS0+Ci08IS0tRU5U
SVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgotPCEtLUVOVElUWSBuZ3RyICImI3gyMjZGOyIt
LT4KLTwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KLTwhLS1FTlRJVFkgTm90TGVzc0VxdWFs
ICImI3gyMjcwOyItLT4KLTwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsiLS0+Ci08IS0tRU5USVRZ
IG5nZSAiJiN4MjI3MTsiLS0+Ci08IS0tRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3MTsi
LS0+Ci08IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgotPCEtLUVOVElUWSBsc2ltICImI3gy
MjcyOyItLT4KLTwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyItLT4KLTwhLS1FTlRJVFkg
bGVzc3NpbSAiJiN4MjI3MjsiLS0+Ci08IS0tRU5USVRZIGdzaW0gIiYjeDIyNzM7Ii0tPgotPCEt
LUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyVGlsZGUgIiYj
eDIyNzM7Ii0tPgotPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+Ci08IS0tRU5USVRZIE5v
dExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Ci08IS0tRU5USVRZIG5nc2ltICImI3gyMjc1OyItLT4K
LTwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4KLTwhLS1FTlRJVFkgbGcg
IiYjeDIyNzY7Ii0tPgotPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyItLT4KLTwhLS1FTlRJ
VFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgotPCEtLUVOVElUWSBnbCAiJiN4MjI3NzsiLS0+
Ci08IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyTGVz
cyAiJiN4MjI3NzsiLS0+Ci08IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7Ii0tPgotPCEtLUVOVElU
WSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Ci08IS0tRU5USVRZIG50Z2wgIiYjeDIyNzk7
Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiLS0+Ci08IS0tRU5USVRZ
IHByICImI3gyMjdBOyItLT4KLTwhLS1FTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ii0tPgotPCEt
LUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KLTwhLS1FTlRJVFkgc2MgIiYjeDIyN0I7Ii0tPgot
PCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Ci08IS0tRU5USVRZIHN1Y2MgIiYjeDIy
N0I7Ii0tPgotPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Ci08IS0tRU5USVRZIFByZWNl
ZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Ci08IS0tRU5USVRZIHByZWNjdXJseWVxICImI3gy
MjdDOyItLT4KLTwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgotPCEtLUVOVElUWSBTdWNj
ZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgotPCEtLUVOVElUWSBzdWNjY3VybHllcSAiJiN4
MjI3RDsiLS0+Ci08IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4KLTwhLS1FTlRJVFkgcHJl
Y3NpbSAiJiN4MjI3RTsiLS0+Ci08IS0tRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7Ii0t
PgotPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Ci08IS0tRU5USVRZIHN1Y2NzaW0gIiYj
eDIyN0Y7Ii0tPgotPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyItLT4KLTwhLS1F
TlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBu
cHIgIiYjeDIyODA7Ii0tPgotPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4MDsiLS0+Ci08IS0tRU5U
SVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KLTwhLS1FTlRJVFkgbnNjICImI3gyMjgxOyIt
LT4KLTwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgotPCEtLUVOVElUWSBOb3RTdWNjZWVk
cyAiJiN4MjI4MTsiLS0+Ci08IS0tRU5USVRZIHN1YiAiJiN4MjI4MjsiLS0+Ci08IS0tRU5USVRZ
IHN1YnNldCAiJiN4MjI4MjsiLS0+Ci08IS0tRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIwRDI7
Ii0tPgotPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElU
WSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIHN1cCAiJiN4MjI4
MzsiLS0+Ci08IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Ci08IS0tRU5USVRZIFN1cGVy
c2V0ICImI3gyMjgzOyItLT4KLTwhLS1FTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsiLS0+
Ci08IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIE5v
dFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBuc3ViICImI3gyMjg0
OyItLT4KLTwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Ci08IS0tRU5USVRZIHN1YmUgIiYj
eDIyODY7Ii0tPgotPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiLS0+Ci08IS0tRU5U
SVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KLTwhLS1FTlRJVFkgc3VwZSAiJiN4MjI4NzsiLS0+
Ci08IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KLTwhLS1FTlRJVFkgU3VwZXJzZXRF
cXVhbCAiJiN4MjI4NzsiLS0+Ci08IS0tRU5USVRZIG5zdWJlICImI3gyMjg4OyItLT4KLTwhLS1F
TlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KLTwhLS1FTlRJVFkgTm90U3Vic2V0RXF1YWwg
IiYjeDIyODg7Ii0tPgotPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiLS0+Ci08IS0tRU5USVRZ
IG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Ci08IS0tRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYj
eDIyODk7Ii0tPgotPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+Ci08IS0tRU5USVRZIHN1
YnNldG5lcSAiJiN4MjI4QTsiLS0+Ci08IS0tRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAw
OyItLT4KLTwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ii0tPgotPCEt
LUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Ci08IS0tRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4
QjsiLS0+Ci08IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KLTwhLS1FTlRJ
VFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBjdXBkb3Qg
IiYjeDIyOEQ7Ii0tPgotPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiLS0+Ci08IS0tRU5USVRZ
IFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Ci08IS0tRU5USVRZIHNxc3ViICImI3gyMjhGOyItLT4K
LTwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KLTwhLS1FTlRJVFkgc3FzdWJz
ZXQgIiYjeDIyOEY7Ii0tPgotPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgotPCEtLUVOVElUWSBTcXVh
cmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Ci08IS0tRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyIt
LT4KLTwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyItLT4KLTwh
LS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KLTwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0RXF1
YWwgIiYjeDIyOTE7Ii0tPgotPCEtLUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyItLT4KLTwh
LS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KLTwhLS1FTlRJVFkgU3F1YXJlU3VwZXJzZXRF
cXVhbCAiJiN4MjI5MjsiLS0+Ci08IS0tRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ii0tPgot
PCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Ci08IS0tRU5USVRZIFNxdWFyZUludGVyc2Vj
dGlvbiAiJiN4MjI5MzsiLS0+Ci08IS0tRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAwOyIt
LT4KLTwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgotPCEtLUVOVElUWSBTcXVhcmVVbmlv
biAiJiN4MjI5NDsiLS0+Ci08IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyItLT4K
LTwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgotPCEtLUVOVElUWSBDaXJjbGVQbHVzICIm
I3gyMjk1OyItLT4KLTwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyItLT4KLTwhLS1FTlRJVFkg
Q2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgotPCEtLUVOVElUWSBvdGltZXMgIiYjeDIyOTc7Ii0t
PgotPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Ci08IS0tRU5USVRZIG9zb2wg
IiYjeDIyOTg7Ii0tPgotPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyItLT4KLTwhLS1FTlRJVFkg
Q2lyY2xlRG90ICImI3gyMjk5OyItLT4KLTwhLS1FTlRJVFkgb2NpciAiJiN4MjI5QTsiLS0+Ci08
IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KLTwhLS1FTlRJVFkgb2FzdCAiJiN4
MjI5QjsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ii0tPgotPCEtLUVOVElU
WSBvZGFzaCAiJiN4MjI5RDsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlEOyIt
LT4KLTwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgotPCEtLUVOVElUWSBib3hwbHVzICIm
I3gyMjlFOyItLT4KLTwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyItLT4KLTwhLS1FTlRJVFkg
Ym94bWludXMgIiYjeDIyOUY7Ii0tPgotPCEtLUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ii0tPgot
PCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Ci08IS0tRU5USVRZIHNkb3RiICImI3gy
MkExOyItLT4KLTwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyItLT4KLTwhLS1FTlRJVFkg
dmRhc2ggIiYjeDIyQTI7Ii0tPgotPCEtLUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiLS0+Ci08
IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KLTwhLS1FTlRJVFkgTGVmdFRlZSAiJiN4MjJB
MzsiLS0+Ci08IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Ci08IS0tRU5USVRZIERvd25UZWUg
IiYjeDIyQTQ7Ii0tPgotPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ii0tPgotPCEtLUVOVElU
WSBib3QgIiYjeDIyQTU7Ii0tPgotPCEtLUVOVElUWSBwZXJwICImI3gyMkE1OyItLT4KLTwhLS1F
TlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgotPCEtLUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7Ii0t
PgotPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVJpZ2h0
VGVlICImI3gyMkE4OyItLT4KLTwhLS1FTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ii0tPgotPCEtLUVO
VElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgotPCEtLUVOVElUWSBWRGFzaCAiJiN4MjJBQjsiLS0+
Ci08IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Ci08IS0tRU5USVRZIG52RGFzaCAiJiN4
MjJBRDsiLS0+Ci08IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+Ci08IS0tRU5USVRZIG5W
RGFzaCAiJiN4MjJBRjsiLS0+Ci08IS0tRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiLS0+Ci08IS0t
RU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KLTwhLS1FTlRJVFkgdmFydHJpYW5nbGVsZWZ0ICIm
I3gyMkIyOyItLT4KLTwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyItLT4KLTwhLS1F
TlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgotPCEtLUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0ICIm
I3gyMkIzOyItLT4KLTwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiLS0+Ci08IS0t
RU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KLTwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ZXEgIiYj
eDIyQjQ7Ii0tPgotPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiLS0+Ci08
IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIHJ0cmll
ICImI3gyMkI1OyItLT4KLTwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyItLT4K
LTwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyItLT4KLTwhLS1FTlRJVFkg
bnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgb3JpZ29mICImI3gyMkI2
OyItLT4KLTwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Ci08IS0tRU5USVRZIG11bWFwICIm
I3gyMkI4OyItLT4KLTwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ii0tPgotPCEtLUVOVElU
WSBoZXJjb24gIiYjeDIyQjk7Ii0tPgotPCEtLUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ii0tPgot
PCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Ci08IS0tRU5USVRZIHZlZWJhciAiJiN4
MjJCQjsiLS0+Ci08IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+Ci08IS0tRU5USVRZIGFu
Z3J0dmIgIiYjeDIyQkU7Ii0tPgotPCEtLUVOVElUWSBscnRyaSAiJiN4MjJCRjsiLS0+Ci08IS0t
RU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Ci08IS0tRU5USVRZIFdlZGdlICImI3gyMkMwOyIt
LT4KLTwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgotPCEtLUVOVElUWSB4dmVlICIm
I3gyMkMxOyItLT4KLTwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4KLTwhLS1FTlRJVFkgYmln
dmVlICImI3gyMkMxOyItLT4KLTwhLS1FTlRJVFkgeGNhcCAiJiN4MjJDMjsiLS0+Ci08IS0tRU5U
SVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Ci08IS0tRU5USVRZIGJpZ2NhcCAiJiN4MjJD
MjsiLS0+Ci08IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgotPCEtLUVOVElUWSBVbmlvbiAi
JiN4MjJDMzsiLS0+Ci08IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiLS0+Ci08IS0tRU5USVRZ
IGRpYW0gIiYjeDIyQzQ7Ii0tPgotPCEtLUVOVElUWSBkaWFtb25kICImI3gyMkM0OyItLT4KLTwh
LS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Ci08IS0tRU5USVRZIHNkb3QgIiYjeDIyQzU7
Ii0tPgotPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgotPCEtLUVOVElUWSBTdGFyICIm
I3gyMkM2OyItLT4KLTwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyItLT4KLTwhLS1FTlRJVFkg
ZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Ci08IS0tRU5USVRZIGJvd3RpZSAiJiN4MjJDODsi
LS0+Ci08IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Ci08IS0tRU5USVRZIHJ0aW1lcyAi
JiN4MjJDQTsiLS0+Ci08IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiLS0+Ci08IS0tRU5USVRZ
IGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KLTwhLS1FTlRJVFkgcnRocmVlICImI3gyMkND
OyItLT4KLTwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyItLT4KLTwhLS1FTlRJ
VFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgotPCEtLUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ii0t
PgotPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Ci08IS0tRU5USVRZIGN1cmx5dmVlICIm
I3gyMkNFOyItLT4KLTwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0tPgotPCEtLUVOVElUWSBj
dXJseXdlZGdlICImI3gyMkNGOyItLT4KLTwhLS1FTlRJVFkgU3ViICImI3gyMkQwOyItLT4KLTwh
LS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KLTwhLS1FTlRJVFkgU3VwICImI3gyMkQxOyIt
LT4KLTwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KLTwhLS1FTlRJVFkgQ2FwICImI3gy
MkQyOyItLT4KLTwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KLTwhLS1FTlRJVFkgZm9yayAi
JiN4MjJENDsiLS0+Ci08IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiLS0+Ci08IS0tRU5U
SVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgotPCEtLUVOVElUWSBsdGRvdCAiJiN4MjJENjsiLS0+Ci08
IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgotPCEtLUVOVElUWSBndGRvdCAiJiN4MjJE
NzsiLS0+Ci08IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Ci08IS0tRU5USVRZIExsICIm
I3gyMkQ4OyItLT4KLTwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiLS0+Ci08IS0tRU5U
SVRZIEdnICImI3gyMkQ5OyItLT4KLTwhLS1FTlRJVFkgZ2dnICImI3gyMkQ5OyItLT4KLTwhLS1F
TlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGxlZyAiJiN4MjJEQTsi
LS0+Ci08IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ii0tPgotPCEtLUVOVElU
WSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgotPCEtLUVOVElUWSBsZXNnICImI3gyMkRBOyYjeEZF
MDA7Ii0tPgotPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgotPCEtLUVOVElUWSBndHJlcWxl
c3MgIiYjeDIyREI7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRCOyIt
LT4KLTwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgY3Vl
cHIgIiYjeDIyREU7Ii0tPgotPCEtLUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiLS0+Ci08
IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KLTwhLS1FTlRJVFkgY3VybHllcXN1Y2MgIiYj
eDIyREY7Ii0tPgotPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0tPgotPCEtLUVOVElUWSBO
b3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgotPCEtLUVOVElUWSBuc2NjdWUgIiYj
eDIyRTE7Ii0tPgotPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7Ii0t
PgotPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KLTwhLS1FTlRJVFkgTm90U3F1YXJl
U3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgotPCEtLUVOVElUWSBuc3FzdXBlICImI3gyMkUzOyIt
LT4KLTwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiLS0+Ci08IS0t
RU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KLTwhLS1FTlRJVFkgZ25zaW0gIiYjeDIyRTc7Ii0t
PgotPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgotPCEtLUVOVElUWSBwcmVjbnNpbSAi
JiN4MjJFODsiLS0+Ci08IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiLS0+Ci08IS0tRU5USVRZ
IHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KLTwhLS1FTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ii0tPgot
PCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KLTwhLS1FTlRJVFkgTm90TGVm
dFRyaWFuZ2xlICImI3gyMkVBOyItLT4KLTwhLS1FTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ii0tPgot
PCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Ci08IS0tRU5USVRZIE5vdFJp
Z2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgotPCEtLUVOVElUWSBubHRyaWUgIiYjeDIyRUM7Ii0t
PgotPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0tPgotPCEtLUVOVElUWSBO
b3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Ci08IS0tRU5USVRZIG5ydHJpZSAiJiN4
MjJFRDsiLS0+Ci08IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ii0tPgotPCEt
LUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0tPgotPCEtLUVOVElUWSB2
ZWxsaXAgIiYjeDIyRUU7Ii0tPgotPCEtLUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiLS0+Ci08IS0t
RU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KLTwhLS1FTlRJVFkgZHRkb3QgIiYjeDIyRjE7Ii0t
PgotPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Ci08IS0tRU5USVRZIGlzaW5zdiAiJiN4
MjJGMzsiLS0+Ci08IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4KLTwhLS1FTlRJVFkgaXNp
bmRvdCAiJiN4MjJGNTsiLS0+Ci08IS0tRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsi
LS0+Ci08IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgotPCEtLUVOVElUWSBub3RpbnZi
ICImI3gyMkY3OyItLT4KLTwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ii0tPgotPCEtLUVOVElU
WSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmlzZCAiJiN4MjJGQTsi
LS0+Ci08IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgotPCEtLUVOVElUWSBuaXMgIiYjeDIy
RkM7Ii0tPgotPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4KLTwhLS1FTlRJVFkgbm90
bml2YiAiJiN4MjJGRTsiLS0+Ci08IS0tRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiLS0+Ci08IS0t
RU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KLTwhLS1FTlRJVFkgQmFyd2VkICImI3gyMzA2
OyItLT4KLTwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ii0tPgotPCEtLUVOVElU
WSBsY2VpbCAiJiN4MjMwODsiLS0+Ci08IS0tRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyIt
LT4KLTwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgotPCEtLUVOVElUWSBSaWdodENlaWxp
bmcgIiYjeDIzMDk7Ii0tPgotPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ii0tPgotPCEtLUVO
VElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgotPCEtLUVOVElUWSByZmxvb3IgIiYjeDIzMEI7
Ii0tPgotPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4KLTwhLS1FTlRJVFkgZHJj
cm9wICImI3gyMzBDOyItLT4KLTwhLS1FTlRJVFkgZGxjcm9wICImI3gyMzBEOyItLT4KLTwhLS1F
TlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KLTwhLS1FTlRJVFkgdWxjcm9wICImI3gyMzBGOyIt
LT4KLTwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Ci08IS0tRU5USVRZIHByb2ZsaW5lICIm
I3gyMzEyOyItLT4KLTwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ii0tPgotPCEtLUVOVElU
WSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgotPCEtLUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ii0tPgot
PCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgotPCEtLUVOVElUWSB1bGNvcm5lciAiJiN4
MjMxQzsiLS0+Ci08IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+Ci08IS0tRU5USVRZIHVy
Y29ybmVyICImI3gyMzFEOyItLT4KLTwhLS1FTlRJVFkgZGxjb3JuICImI3gyMzFFOyItLT4KLTwh
LS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgotPCEtLUVOVElUWSBkcmNvcm4gIiYjeDIz
MUY7Ii0tPgotPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+Ci08IS0tRU5USVRZIGZy
b3duICImI3gyMzIyOyItLT4KLTwhLS1FTlRJVFkgc2Zyb3duICImI3gyMzIyOyItLT4KLTwhLS1F
TlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgotPCEtLUVOVElUWSBzc21pbGUgIiYjeDIzMjM7Ii0t
PgotPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgotPCEtLUVOVElUWSBwcm9mYWxhciAi
JiN4MjMyRTsiLS0+Ci08IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiLS0+Ci08IS0tRU5USVRZ
IG92YmFyICImI3gyMzNEOyItLT4KLTwhLS1FTlRJVFkgc29sYmFyICImI3gyMzNGOyItLT4KLTwh
LS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Ci08IS0tRU5USVRZIGxtb3VzdCAiJiN4MjNC
MDsiLS0+Ci08IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0tPgotPCEtLUVOVElUWSBy
bW91c3QgIiYjeDIzQjE7Ii0tPgotPCEtLUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyItLT4K
LTwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Ci08IS0tRU5USVRZIE92ZXJCcmFja2V0ICIm
I3gyM0I0OyItLT4KLTwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+Ci08IS0tRU5USVRZIFVu
ZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Ci08IS0tRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyIt
LT4KLTwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyItLT4KLTwhLS1FTlRJVFkg
VW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Ci08IS0tRU5USVRZIE92ZXJCcmFjZSAiJiN4
MjNERTsiLS0+Ci08IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ii0tPgotPCEtLUVOVElU
WSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Ci08IS0tRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyIt
LT4KLTwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgotPCEtLUVOVElUWSBvUyAiJiN4MjRD
ODsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4KLTwhLS1FTlRJVFkgYm94
aCAiJiN4MjUwMDsiLS0+Ci08IS0tRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyItLT4K
LTwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Ci08IS0tRU5USVRZIGJveGRyICImI3gyNTBD
OyItLT4KLTwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgotPCEtLUVOVElUWSBib3h1ciAi
JiN4MjUxNDsiLS0+Ci08IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyItLT4KLTwhLS1FTlRJVFkg
Ym94dnIgIiYjeDI1MUM7Ii0tPgotPCEtLUVOVElUWSBib3h2bCAiJiN4MjUyNDsiLS0+Ci08IS0t
RU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KLTwhLS1FTlRJVFkgYm94aHUgIiYjeDI1MzQ7Ii0t
PgotPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Ci08IS0tRU5USVRZIGJveEggIiYjeDI1
NTA7Ii0tPgotPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KLTwhLS1FTlRJVFkgYm94ZFIg
IiYjeDI1NTI7Ii0tPgotPCEtLUVOVElUWSBib3hEciAiJiN4MjU1MzsiLS0+Ci08IS0tRU5USVRZ
IGJveERSICImI3gyNTU0OyItLT4KLTwhLS1FTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ii0tPgotPCEt
LUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Ci08IS0tRU5USVRZIGJveERMICImI3gyNTU3OyIt
LT4KLTwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgotPCEtLUVOVElUWSBib3hVciAiJiN4
MjU1OTsiLS0+Ci08IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4KLTwhLS1FTlRJVFkgYm94
dUwgIiYjeDI1NUI7Ii0tPgotPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1QzsiLS0+Ci08IS0tRU5U
SVRZIGJveFVMICImI3gyNTVEOyItLT4KLTwhLS1FTlRJVFkgYm94dlIgIiYjeDI1NUU7Ii0tPgot
PCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Ci08IS0tRU5USVRZIGJveFZSICImI3gyNTYw
OyItLT4KLTwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgotPCEtLUVOVElUWSBib3hWbCAi
JiN4MjU2MjsiLS0+Ci08IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyItLT4KLTwhLS1FTlRJVFkg
Ym94SGQgIiYjeDI1NjQ7Ii0tPgotPCEtLUVOVElUWSBib3hoRCAiJiN4MjU2NTsiLS0+Ci08IS0t
RU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KLTwhLS1FTlRJVFkgYm94SHUgIiYjeDI1Njc7Ii0t
PgotPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Ci08IS0tRU5USVRZIGJveEhVICImI3gy
NTY5OyItLT4KLTwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgotPCEtLUVOVElUWSBib3hW
aCAiJiN4MjU2QjsiLS0+Ci08IS0tRU5USVRZIGJveFZIICImI3gyNTZDOyItLT4KLTwhLS1FTlRJ
VFkgdWhibGsgIiYjeDI1ODA7Ii0tPgotPCEtLUVOVElUWSBsaGJsayAiJiN4MjU4NDsiLS0+Ci08
IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KLTwhLS1FTlRJVFkgYmxrMTQgIiYjeDI1OTE7
Ii0tPgotPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Ci08IS0tRU5USVRZIGJsazM0ICIm
I3gyNTkzOyItLT4KLTwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4KLTwhLS1FTlRJVFkgc3F1
YXJlICImI3gyNUExOyItLT4KLTwhLS1FTlRJVFkgU3F1YXJlICImI3gyNUExOyItLT4KLTwhLS1F
TlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Ci08IS0tRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsiLS0+
Ci08IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KLTwhLS1FTlRJVFkgRmlsbGVk
VmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KLTwhLS1FTlRJVFkgRW1wdHlWZXJ5U21hbGxT
cXVhcmUgIiYjeDI1QUI7Ii0tPgotPCEtLUVOVElUWSByZWN0ICImI3gyNUFEOyItLT4KLTwhLS1F
TlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KLTwhLS1FTlRJVFkgZmx0bnMgIiYjeDI1QjE7Ii0t
PgotPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Ci08IS0tRU5USVRZIGJpZ3RyaWFuZ2xl
dXAgIiYjeDI1QjM7Ii0tPgotPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiLS0+Ci08IS0tRU5U
SVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgotPCEtLUVOVElUWSB1dHJpICImI3gyNUI1
OyItLT4KLTwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgotPCEtLUVOVElUWSBydHJp
ZiAiJiN4MjVCODsiLS0+Ci08IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsi
LS0+Ci08IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgotPCEtLUVOVElUWSB0cmlhbmdsZXJp
Z2h0ICImI3gyNUI5OyItLT4KLTwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ii0tPgotPCEtLUVO
VElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgotPCEtLUVOVElUWSBkdHJpZiAiJiN4
MjVCRTsiLS0+Ci08IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyItLT4KLTwh
LS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlZG93biAiJiN4
MjVCRjsiLS0+Ci08IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4KLTwhLS1FTlRJVFkgYmxh
Y2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgotPCEtLUVOVElUWSBsdHJpICImI3gyNUMzOyIt
LT4KLTwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4KLTwhLS1FTlRJVFkgbG96
ICImI3gyNUNBOyItLT4KLTwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiLS0+Ci08IS0tRU5U
SVRZIGNpciAiJiN4MjVDQjsiLS0+Ci08IS0tRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiLS0+Ci08
IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KLTwhLS1FTlRJVFkgYmlnY2lyYyAiJiN4MjVF
RjsiLS0+Ci08IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KLTwhLS1FTlRJVFkgdXJ0cmkg
IiYjeDI1Rjk7Ii0tPgotPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiLS0+Ci08IS0tRU5USVRZ
IEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgotPCEtLUVOVElUWSBGaWxsZWRTbWFsbFNx
dWFyZSAiJiN4MjVGQzsiLS0+Ci08IS0tRU5USVRZIHN0YXJmICImI3gyNjA1OyItLT4KLTwhLS1F
TlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Ci08IS0tRU5USVRZIHN0YXIgIiYjeDI2MDY7Ii0t
PgotPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Ci08IS0tRU5USVRZIGZlbWFsZSAiJiN4
MjY0MDsiLS0+Ci08IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgotPCEtLUVOVElUWSBzcGFk
ZXMgIiYjeDI2NjA7Ii0tPgotPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ii0tPgotPCEt
LUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Ci08IS0tRU5USVRZIGNsdWJzdWl0ICImI3gyNjYz
OyItLT4KLTwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KLTwhLS1FTlRJVFkgaGVhcnRz
dWl0ICImI3gyNjY1OyItLT4KLTwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ii0tPgotPCEtLUVO
VElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Ci08IS0tRU5USVRZIHN1bmcgIiYjeDI2NkE7
Ii0tPgotPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KLTwhLS1FTlRJVFkgbmF0dXIgIiYj
eDI2NkU7Ii0tPgotPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyItLT4KLTwhLS1FTlRJVFkg
c2hhcnAgIiYjeDI2NkY7Ii0tPgotPCEtLUVOVElUWSBjaGVjayAiJiN4MjcxMzsiLS0+Ci08IS0t
RU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Ci08IS0tRU5USVRZIGNyb3NzICImI3gyNzE3
OyItLT4KLTwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Ci08IS0tRU5USVRZIG1hbHRlc2Ug
IiYjeDI3MjA7Ii0tPgotPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyItLT4KLTwhLS1FTlRJVFkg
VmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgotPCEtLUVOVElUWSBsYmJyayAiJiN4Mjc3
MjsiLS0+Ci08IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KLTwhLS1FTlRJVFkgYnNvbGhz
dWIgIiYjeDI3Qzg7Ii0tPgotPCEtLUVOVElUWSBzdXBoc29sICImI3gyN0M5OyItLT4KLTwhLS1F
TlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgotPCEtLUVOVElUWSBMZWZ0RG91YmxlQnJhY2tldCAi
JiN4MjdFNjsiLS0+Ci08IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyItLT4KLTwhLS1FTlRJVFkg
UmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KLTwhLS1FTlRJVFkgbGFuZyAiJiN4MjdF
ODsiLS0+Ci08IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ii0tPgotPCEtLUVO
VElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgotPCEtLUVOVElUWSByYW5nICImI3gyN0U5OyItLT4K
LTwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0tPgotPCEtLUVOVElUWSBy
YW5nbGUgIiYjeDI3RTk7Ii0tPgotPCEtLUVOVElUWSBMYW5nICImI3gyN0VBOyItLT4KLTwhLS1F
TlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Ci08IS0tRU5USVRZIGxvYW5nICImI3gyN0VDOyItLT4K
LTwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgotPCEtLUVOVElUWSB4bGFyciAiJiN4MjdG
NTsiLS0+Ci08IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ii0tPgotPCEtLUVOVElU
WSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KLTwhLS1FTlRJVFkgeHJhcnIgIiYjeDI3RjY7
Ii0tPgotPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiLS0+Ci08IS0tRU5USVRZ
IExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KLTwhLS1FTlRJVFkgeGhhcnIgIiYjeDI3Rjc7
Ii0tPgotPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ii0tPgotPCEtLUVO
VElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgotPCEtLUVOVElUWSB4bEFyciAi
JiN4MjdGODsiLS0+Ci08IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ii0tPgotPCEt
LUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4KLTwhLS1FTlRJVFkgeHJB
cnIgIiYjeDI3Rjk7Ii0tPgotPCEtLUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsiLS0+
Ci08IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyItLT4KLTwhLS1FTlRJ
VFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgotPCEtLUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYj
eDI3RkE7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3RkE7
Ii0tPgotPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KLTwhLS1FTlRJVFkgbG9uZ21hcHN0
byAiJiN4MjdGQzsiLS0+Ci08IS0tRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyItLT4KLTwhLS1F
TlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KLTwhLS1FTlRJVFkgbnZyQXJyICImI3gyOTAzOyIt
LT4KLTwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KLTwhLS1FTlRJVFkgTWFwICImI3gy
OTA1OyItLT4KLTwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgotPCEtLUVOVElUWSByYmFy
ciAiJiN4MjkwRDsiLS0+Ci08IS0tRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiLS0+Ci08IS0tRU5U
SVRZIGxCYXJyICImI3gyOTBFOyItLT4KLTwhLS1FTlRJVFkgckJhcnIgIiYjeDI5MEY7Ii0tPgot
PCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KLTwhLS1FTlRJVFkgUkJhcnIgIiYjeDI5
MTA7Ii0tPgotPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+Ci08IS0tRU5USVRZIERE
b3RyYWhkICImI3gyOTExOyItLT4KLTwhLS1FTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiLS0+
Ci08IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Ci08IS0tRU5USVRZIFJhcnJ0
bCAiJiN4MjkxNjsiLS0+Ci08IS0tRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiLS0+Ci08IS0tRU5U
SVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Ci08IS0tRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsiLS0+
Ci08IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Ci08IS0tRU5USVRZIGxhcnJmcyAiJiN4
MjkxRDsiLS0+Ci08IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+Ci08IS0tRU5USVRZIGxh
cnJiZnMgIiYjeDI5MUY7Ii0tPgotPCEtLUVOVElUWSByYXJyYmZzICImI3gyOTIwOyItLT4KLTwh
LS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KLTwhLS1FTlRJVFkgbmVhcmhrICImI3gyOTI0
OyItLT4KLTwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KLTwhLS1FTlRJVFkgaGtzZWFy
b3cgIiYjeDI5MjU7Ii0tPgotPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ii0tPgotPCEtLUVO
VElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Ci08IS0tRU5USVRZIG53bmVhciAiJiN4MjkyNzsi
LS0+Ci08IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Ci08IS0tRU5USVRZIHRvZWEgIiYj
eDI5Mjg7Ii0tPgotPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0tPgotPCEtLUVOVElUWSB0
b3NhICImI3gyOTI5OyItLT4KLTwhLS1FTlRJVFkgc3dud2FyICImI3gyOTJBOyItLT4KLTwhLS1F
TlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgotPCEtLUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+Ci08IS0tRU5USVRZIGxk
Y2EgIiYjeDI5MzY7Ii0tPgotPCEtLUVOVElUWSByZGNhICImI3gyOTM3OyItLT4KLTwhLS1FTlRJ
VFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Ci08IS0tRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsiLS0+
Ci08IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgotPCEtLUVOVElUWSBjdWxhcnJwICIm
I3gyOTNEOyItLT4KLTwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyItLT4KLTwhLS1FTlRJVFkg
aGFycmNpciAiJiN4Mjk0ODsiLS0+Ci08IS0tRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyItLT4K
LTwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgotPCEtLUVOVElUWSBsZHJ1c2hhciAi
JiN4Mjk0QjsiLS0+Ci08IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiLS0+Ci08
IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4KLTwhLS1FTlRJVFkgRG93
bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Ci08IS0tRU5USVRZIExlZnRVcERvd25WZWN0
b3IgIiYjeDI5NTE7Ii0tPgotPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyItLT4K
LTwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgotPCEtLUVOVElUWSBSaWdo
dFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KLTwhLS1FTlRJVFkgUmlnaHREb3duVmVjdG9yQmFy
ICImI3gyOTU1OyItLT4KLTwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ii0t
PgotPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ii0tPgotPCEtLUVOVElU
WSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgotPCEtLUVOVElUWSBMZWZ0RG93blZlY3Rv
ckJhciAiJiN4Mjk1OTsiLS0+Ci08IS0tRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7Ii0t
PgotPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+Ci08IS0tRU5USVRZIFJp
Z2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgotPCEtLUVOVElUWSBSaWdodERvd25UZWVWZWN0
b3IgIiYjeDI5NUQ7Ii0tPgotPCEtLUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1RTsi
LS0+Ci08IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiLS0+Ci08IS0tRU5U
SVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Ci08IS0tRU5USVRZIExlZnREb3duVGVl
VmVjdG9yICImI3gyOTYxOyItLT4KLTwhLS1FTlRJVFkgbEhhciAiJiN4Mjk2MjsiLS0+Ci08IS0t
RU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgotPCEtLUVOVElUWSBySGFyICImI3gyOTY0OyItLT4K
LTwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Ci08IS0tRU5USVRZIGx1cnVoYXIgIiYjeDI5
NjY7Ii0tPgotPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4KLTwhLS1FTlRJVFkgcnVs
dWhhciAiJiN4Mjk2ODsiLS0+Ci08IS0tRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ii0tPgotPCEt
LUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgotPCEtLUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7
Ii0tPgotPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgotPCEtLUVOVElUWSBscmhhcmQg
IiYjeDI5NkQ7Ii0tPgotPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiLS0+Ci08IS0tRU5USVRZ
IFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgotPCEtLUVOVElUWSBkdWhhciAiJiN4Mjk2Rjsi
LS0+Ci08IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyItLT4KLTwhLS1F
TlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KLTwhLS1FTlRJVFkgZXJhcnIgIiYjeDI5
NzE7Ii0tPgotPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4KLTwhLS1FTlRJVFkgbGFy
cnNpbSAiJiN4Mjk3MzsiLS0+Ci08IS0tRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ii0tPgotPCEt
LUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgotPCEtLUVOVElUWSBsdGxhcnIgIiYjeDI5NzY7
Ii0tPgotPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgotPCEtLUVOVElUWSBzdWJyYXJy
ICImI3gyOTc5OyItLT4KLTwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiLS0+Ci08IS0tRU5U
SVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Ci08IS0tRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiLS0+
Ci08IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Ci08IS0tRU5USVRZIGRmaXNodCAiJiN4
Mjk3RjsiLS0+Ci08IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4KLTwhLS1FTlRJVFkgcm9w
YXIgIiYjeDI5ODY7Ii0tPgotPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiLS0+Ci08IS0tRU5U
SVRZIHJicmtlICImI3gyOThDOyItLT4KLTwhLS1FTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsiLS0+
Ci08IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgotPCEtLUVOVElUWSBsYnJrc2xkICIm
I3gyOThGOyItLT4KLTwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiLS0+Ci08IS0tRU5USVRZ
IGxhbmdkICImI3gyOTkxOyItLT4KLTwhLS1FTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ii0tPgotPCEt
LUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgotPCEtLUVOVElUWSBycGFyZ3QgIiYjeDI5OTQ7
Ii0tPgotPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgotPCEtLUVOVElUWSBsdHJQYXIg
IiYjeDI5OTY7Ii0tPgotPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlBOyItLT4KLTwhLS1FTlRJ
VFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KLTwhLS1FTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7Ii0t
PgotPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KLTwhLS1FTlRJVFkgcmFuZ2UgIiYjeDI5
QTU7Ii0tPgotPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4KLTwhLS1FTlRJVFkgdXdh
bmdsZSAiJiN4MjlBNzsiLS0+Ci08IS0tRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyItLT4KLTwh
LS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2RhYyAiJiN4
MjlBQTsiLS0+Ci08IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyItLT4KLTwhLS1FTlRJVFkg
YW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsiLS0+
Ci08IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KLTwhLS1FTlRJVFkgYW5nbXNkYWgg
IiYjeDI5QUY7Ii0tPgotPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyItLT4KLTwhLS1FTlRJ
VFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Ci08IS0tRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7Ii0t
PgotPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Ci08IS0tRU5USVRZIGxhZW1wdHl2
ICImI3gyOUI0OyItLT4KLTwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ii0tPgotPCEtLUVOVElU
WSBvbWlkICImI3gyOUI2OyItLT4KLTwhLS1FTlRJVFkgb3BhciAiJiN4MjlCNzsiLS0+Ci08IS0t
RU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KLTwhLS1FTlRJVFkgb2xjcm9zcyAiJiN4MjlCQjsi
LS0+Ci08IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Ci08IS0tRU5USVRZIG9sY2lyICIm
I3gyOUJFOyItLT4KLTwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0tPgotPCEtLUVOVElUWSBv
bHQgIiYjeDI5QzA7Ii0tPgotPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7Ii0tPgotPCEtLUVOVElU
WSBjaXJzY2lyICImI3gyOUMyOyItLT4KLTwhLS1FTlRJVFkgY2lyRSAiJiN4MjlDMzsiLS0+Ci08
IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgotPCEtLUVOVElUWSBic29sYiAiJiN4MjlDNTsi
LS0+Ci08IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Ci08IS0tRU5USVRZIHRyaXNiICIm
I3gyOUNEOyItLT4KLTwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ii0tPgotPCEtLUVOVElU
WSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgotPCEtLUVOVElUWSBOb3RMZWZ0VHJpYW5n
bGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUJhciAi
JiN4MjlEMDsiLS0+Ci08IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4KLTwhLS1FTlRJVFkgaW5m
aW50aWUgIiYjeDI5REQ7Ii0tPgotPCEtLUVOVElUWSBudmluZmluICImI3gyOURFOyItLT4KLTwh
LS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KLTwhLS1FTlRJVFkgc21lcGFyc2wgIiYjeDI5
RTQ7Ii0tPgotPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+Ci08IS0tRU5USVRZIGxv
emYgIiYjeDI5RUI7Ii0tPgotPCEtLUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ii0tPgot
PCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Ci08IS0tRU5USVRZIGRzb2wgIiYj
eDI5RjY7Ii0tPgotPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+Ci08IS0tRU5USVRZIGJp
Z29kb3QgIiYjeDJBMDA7Ii0tPgotPCEtLUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ii0tPgotPCEt
LUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Ci08IS0tRU5USVRZIHhvdGltZSAiJiN4MkEw
MjsiLS0+Ci08IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+Ci08IS0tRU5USVRZIHh1
cGx1cyAiJiN4MkEwNDsiLS0+Ci08IS0tRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyItLT4KLTwh
LS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KLTwhLS1FTlRJVFkgYmlnc3FjdXAgIiYjeDJB
MDY7Ii0tPgotPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KLTwhLS1FTlRJVFkgaWlpaW50
ICImI3gyQTBDOyItLT4KLTwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ii0tPgotPCEtLUVO
VElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Ci08IS0tRU5USVRZIGF3aW50ICImI3gyQTExOyIt
LT4KLTwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgotPCEtLUVOVElUWSBzY3BvbGlu
dCAiJiN4MkExMzsiLS0+Ci08IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ii0tPgotPCEtLUVO
VElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Ci08IS0tRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7
Ii0tPgotPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Ci08IS0tRU5USVRZIHBsdXNj
aXIgIiYjeDJBMjI7Ii0tPgotPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiLS0+Ci08IS0t
RU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgotPCEtLUVOVElUWSBwbHVzZHUgIiYjeDJBMjU7
Ii0tPgotPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KLTwhLS1FTlRJVFkgcGx1c3R3
byAiJiN4MkEyNzsiLS0+Ci08IS0tRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiLS0+Ci08IS0tRU5U
SVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgotPCEtLUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7Ii0t
PgotPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgotPCEtLUVOVElUWSBDcm9zcyAiJiN4
MkEyRjsiLS0+Ci08IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+Ci08IS0tRU5USVRZIHRp
bWVzYmFyICImI3gyQTMxOyItLT4KLTwhLS1FTlRJVFkgc21hc2hwICImI3gyQTMzOyItLT4KLTwh
LS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Ci08IS0tRU5USVRZIHJvdGltZXMgIiYjeDJB
MzU7Ii0tPgotPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+Ci08IS0tRU5USVRZIE90
aW1lcyAiJiN4MkEzNzsiLS0+Ci08IS0tRU5USVRZIG9kaXYgIiYjeDJBMzg7Ii0tPgotPCEtLUVO
VElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KLTwhLS1FTlRJVFkgdHJpbWludXMgIiYjeDJBM0E7
Ii0tPgotPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KLTwhLS1FTlRJVFkgaXByb2Qg
IiYjeDJBM0M7Ii0tPgotPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyItLT4KLTwhLS1FTlRJ
VFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgotPCEtLUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ii0tPgot
PCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KLTwhLS1FTlRJVFkgbmNhcCAiJiN4MkE0Mzsi
LS0+Ci08IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Ci08IS0tRU5USVRZIGN1cG9yICIm
I3gyQTQ1OyItLT4KLTwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyItLT4KLTwhLS1FTlRJVFkg
Y2FwY3VwICImI3gyQTQ3OyItLT4KLTwhLS1FTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ii0tPgot
PCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Ci08IS0tRU5USVRZIGN1cGN1cCAiJiN4
MkE0QTsiLS0+Ci08IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+Ci08IS0tRU5USVRZIGNj
dXBzICImI3gyQTRDOyItLT4KLTwhLS1FTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ii0tPgotPCEtLUVO
VElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KLTwhLS1FTlRJVFkgQW5kICImI3gyQTUzOyItLT4K
LTwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgotPCEtLUVOVElUWSBhbmRhbmQgIiYjeDJBNTU7
Ii0tPgotPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KLTwhLS1FTlRJVFkgb3JzbG9wZSAi
JiN4MkE1NzsiLS0+Ci08IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyItLT4KLTwhLS1FTlRJ
VFkgYW5kdiAiJiN4MkE1QTsiLS0+Ci08IS0tRU5USVRZIG9ydiAiJiN4MkE1QjsiLS0+Ci08IS0t
RU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgotPCEtLUVOVElUWSBvcmQgIiYjeDJBNUQ7Ii0tPgot
PCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgotPCEtLUVOVElUWSBzZG90ZSAiJiN4MkE2
NjsiLS0+Ci08IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Ci08IS0tRU5USVRZIGNvbmdk
b3QgIiYjeDJBNkQ7Ii0tPgotPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7Ii0t
PgotPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgotPCEtLUVOVElUWSBhcGFjaXIgIiYj
eDJBNkY7Ii0tPgotPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgotPCEtLUVOVElUWSBuYXBF
ICImI3gyQTcwOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGVwbHVzICImI3gyQTcxOyItLT4KLTwh
LS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgotPCEtLUVOVElUWSBFc2ltICImI3gyQTczOyIt
LT4KLTwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KLTwhLS1FTlRJVFkgRXF1YWwgIiYj
eDJBNzU7Ii0tPgotPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+Ci08IS0tRU5USVRZIGRk
b3RzZXEgIiYjeDJBNzc7Ii0tPgotPCEtLUVOVElUWSBlcXVpdkREICImI3gyQTc4OyItLT4KLTwh
LS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgotPCEtLUVOVElUWSBndGNpciAiJiN4MkE3QTsi
LS0+Ci08IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgotPCEtLUVOVElUWSBndHF1ZXN0
ICImI3gyQTdDOyItLT4KLTwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyItLT4KLTwhLS1FTlRJVFkg
TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgotPCEtLUVOVElUWSBsZXFzbGFudCAiJiN4MkE3
RDsiLS0+Ci08IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkg
Tm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmxlcXNs
YW50ICImI3gyQTdEOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGdlcyAiJiN4MkE3RTsiLS0+Ci08
IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4KLTwhLS1FTlRJVFkgZ2Vx
c2xhbnQgIiYjeDJBN0U7Ii0tPgotPCEtLUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiLS0+
Ci08IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiLS0+Ci08
IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBsZXNk
b3QgIiYjeDJBN0Y7Ii0tPgotPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ii0tPgotPCEtLUVO
VElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KLTwhLS1FTlRJVFkgZ2VzZG90byAiJiN4MkE4Mjsi
LS0+Ci08IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KLTwhLS1FTlRJVFkgZ2VzZG90
b2wgIiYjeDJBODQ7Ii0tPgotPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7Ii0tPgotPCEtLUVOVElU
WSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KLTwhLS1FTlRJVFkgZ2FwICImI3gyQTg2OyItLT4K
LTwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KLTwhLS1FTlRJVFkgbG5lICImI3gy
QTg3OyItLT4KLTwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Ci08IS0tRU5USVRZIGduZSAi
JiN4MkE4ODsiLS0+Ci08IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0tPgotPCEtLUVOVElUWSBs
bmFwICImI3gyQTg5OyItLT4KLTwhLS1FTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ii0tPgotPCEt
LUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KLTwhLS1FTlRJVFkgZ25hcHByb3ggIiYjeDJBOEE7
Ii0tPgotPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgotPCEtLUVOVElUWSBsZXNzZXFxZ3Ry
ICImI3gyQThCOyItLT4KLTwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyItLT4KLTwhLS1FTlRJVFkg
Z3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Ci08IS0tRU5USVRZIGxzaW1lICImI3gyQThEOyItLT4K
LTwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgotPCEtLUVOVElUWSBsc2ltZyAiJiN4MkE4
RjsiLS0+Ci08IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KLTwhLS1FTlRJVFkgbGdFICIm
I3gyQTkxOyItLT4KLTwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4KLTwhLS1FTlRJVFkgbGVz
Z2VzICImI3gyQTkzOyItLT4KLTwhLS1FTlRJVFkgZ2VzbGVzICImI3gyQTk0OyItLT4KLTwhLS1F
TlRJVFkgZWxzICImI3gyQTk1OyItLT4KLTwhLS1FTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJBOTU7
Ii0tPgotPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgotPCEtLUVOVElUWSBlcXNsYW50Z3Ry
ICImI3gyQTk2OyItLT4KLTwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3OyItLT4KLTwhLS1FTlRJ
VFkgZWdzZG90ICImI3gyQTk4OyItLT4KLTwhLS1FTlRJVFkgZWwgIiYjeDJBOTk7Ii0tPgotPCEt
LUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Ci08IS0tRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ii0tPgot
PCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KLTwhLS1FTlRJVFkgc2ltbEUgIiYjeDJBOUY7
Ii0tPgotPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Ci08IS0tRU5USVRZIExlc3NMZXNz
ICImI3gyQUExOyItLT4KLTwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ii0tPgotPCEtLUVO
VElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ii0tPgotPCEtLUVO
VElUWSBnbGogIiYjeDJBQTQ7Ii0tPgotPCEtLUVOVElUWSBnbGEgIiYjeDJBQTU7Ii0tPgotPCEt
LUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KLTwhLS1FTlRJVFkgZ3RjYyAiJiN4MkFBNzsiLS0+
Ci08IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KLTwhLS1FTlRJVFkgZ2VzY2MgIiYjeDJB
QTk7Ii0tPgotPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgotPCEtLUVOVElUWSBsYXQgIiYj
eDJBQUI7Ii0tPgotPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4KLTwhLS1FTlRJVFkgc210
ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ii0tPgot
PCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgYnVtcEUg
IiYjeDJBQUU7Ii0tPgotPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0tPgotPCEtLUVOVElUWSBw
cmVjZXEgIiYjeDJBQUY7Ii0tPgotPCEtLUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFGOyIt
LT4KLTwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBucHJl
Y2VxICImI3gyQUFGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIE5vdFByZWNlZGVzRXF1YWwgIiYj
eDJBQUY7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgc2NlICImI3gyQUIwOyItLT4KLTwhLS1FTlRJ
VFkgc3VjY2VxICImI3gyQUIwOyItLT4KLTwhLS1FTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4MkFC
MDsiLS0+Ci08IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkg
bnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RTdWNjZWVkc0VxdWFs
ICImI3gyQUIwOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIHByRSAiJiN4MkFCMzsiLS0+Ci08IS0t
RU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Ci08IS0tRU5USVRZIHBybkUgIiYjeDJBQjU7Ii0tPgot
PCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Ci08IS0tRU5USVRZIHNjbkUgIiYjeDJB
QjY7Ii0tPgotPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+Ci08IS0tRU5USVRZIHBy
YXAgIiYjeDJBQjc7Ii0tPgotPCEtLUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyItLT4KLTwh
LS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Ci08IS0tRU5USVRZIHN1Y2NhcHByb3ggIiYjeDJB
Qjg7Ii0tPgotPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Ci08IS0tRU5USVRZIHByZWNu
YXBwcm94ICImI3gyQUI5OyItLT4KLTwhLS1FTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ii0tPgotPCEt
LUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Ci08IS0tRU5USVRZIFByICImI3gyQUJC
OyItLT4KLTwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgotPCEtLUVOVElUWSBzdWJkb3QgIiYj
eDJBQkQ7Ii0tPgotPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0tPgotPCEtLUVOVElUWSBz
dWJwbHVzICImI3gyQUJGOyItLT4KLTwhLS1FTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiLS0+Ci08
IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgotPCEtLUVOVElUWSBzdXBtdWx0ICImI3gy
QUMyOyItLT4KLTwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+Ci08IS0tRU5USVRZIHN1
cGVkb3QgIiYjeDJBQzQ7Ii0tPgotPCEtLUVOVElUWSBzdWJFICImI3gyQUM1OyItLT4KLTwhLS1F
TlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KLTwhLS1FTlRJVFkgbnN1YkUgIiYjeDJBQzU7
JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ii0tPgot
PCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KLTwhLS1FTlRJVFkgc3Vwc2V0ZXFxICImI3gy
QUM2OyItLT4KLTwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBzdWJzaW0gIiYj
eDJBQzc7Ii0tPgotPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0tPgotPCEtLUVOVElUWSBz
dWJuRSAiJiN4MkFDQjsiLS0+Ci08IS0tRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ii0tPgot
PCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIHZhcnN1
YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIHN1cG5FICImI3gyQUND
OyItLT4KLTwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+Ci08IS0tRU5USVRZIHZz
dXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxcSAiJiN4
MkFDQzsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgY3N1YiAiJiN4MkFDRjsiLS0+Ci08IS0tRU5U
SVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgotPCEtLUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiLS0+Ci08
IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KLTwhLS1FTlRJVFkgc3Vic3VwICImI3gyQUQz
OyItLT4KLTwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KLTwhLS1FTlRJVFkgc3Vic3Vi
ICImI3gyQUQ1OyItLT4KLTwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyItLT4KLTwhLS1FTlRJ
VFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Ci08IS0tRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7Ii0t
PgotPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Ci08IS0tRU5USVRZIHRvcGZvcmsgIiYj
eDJBREE7Ii0tPgotPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4KLTwhLS1FTlRJVFkgRGFz
aHYgIiYjeDJBRTQ7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyItLT4K
LTwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KLTwhLS1FTlRJVFkgQmFydiAiJiN4MkFF
NzsiLS0+Ci08IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgotPCEtLUVOVElUWSB2QmFydiAi
JiN4MkFFOTsiLS0+Ci08IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0tPgotPCEtLUVOVElUWSBO
b3QgIiYjeDJBRUM7Ii0tPgotPCEtLUVOVElUWSBiTm90ICImI3gyQUVEOyItLT4KLTwhLS1FTlRJ
VFkgcm5taWQgIiYjeDJBRUU7Ii0tPgotPCEtLUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ii0tPgot
PCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgotPCEtLUVOVElUWSB0b3BjaXIgIiYjeDJB
RjE7Ii0tPgotPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Ci08IS0tRU5USVRZIHBhcnNp
bSAiJiN4MkFGMzsiLS0+Ci08IS0tRU5USVRZIHBhcnNsICImI3gyQUZEOyItLT4KLTwhLS1FTlRJ
VFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgotPCEtLUVOVElUWSBmZmxpZyAiJiN4RkIw
MDsiLS0+Ci08IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KLTwhLS1FTlRJVFkgZmxsaWcg
IiYjeEZCMDI7Ii0tPgotPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ii0tPgotPCEtLUVOVElU
WSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgotPCEtLUVOVElUWSBBc2NyICImI3gxRDQ5QzsiLS0+Ci08
IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KLTwhLS1FTlRJVFkgRHNjciAiJiN4MUQ0OUY7
Ii0tPgotPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Ci08IS0tRU5USVRZIEpzY3IgIiYj
eDFENEE1OyItLT4KLTwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0tPgotPCEtLUVOVElUWSBO
c2NyICImI3gxRDRBOTsiLS0+Ci08IS0tRU5USVRZIE9zY3IgIiYjeDFENEFBOyItLT4KLTwhLS1F
TlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgotPCEtLUVOVElUWSBRc2NyICImI3gxRDRBQzsiLS0+
Ci08IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KLTwhLS1FTlRJVFkgVHNjciAiJiN4MUQ0
QUY7Ii0tPgotPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Ci08IS0tRU5USVRZIFZzY3Ig
IiYjeDFENEIxOyItLT4KLTwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ii0tPgotPCEtLUVOVElU
WSBYc2NyICImI3gxRDRCMzsiLS0+Ci08IS0tRU5USVRZIFlzY3IgIiYjeDFENEI0OyItLT4KLTwh
LS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgotPCEtLUVOVElUWSBhc2NyICImI3gxRDRCNjsi
LS0+Ci08IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KLTwhLS1FTlRJVFkgY3NjciAiJiN4
MUQ0Qjg7Ii0tPgotPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+Ci08IS0tRU5USVRZIGZz
Y3IgIiYjeDFENEJCOyItLT4KLTwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ii0tPgotPCEtLUVO
VElUWSBpc2NyICImI3gxRDRCRTsiLS0+Ci08IS0tRU5USVRZIGpzY3IgIiYjeDFENEJGOyItLT4K
LTwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgotPCEtLUVOVElUWSBsc2NyICImI3gxRDRD
MTsiLS0+Ci08IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KLTwhLS1FTlRJVFkgbnNjciAi
JiN4MUQ0QzM7Ii0tPgotPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsiLS0+Ci08IS0tRU5USVRZ
IHFzY3IgIiYjeDFENEM2OyItLT4KLTwhLS1FTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ii0tPgotPCEt
LUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Ci08IS0tRU5USVRZIHRzY3IgIiYjeDFENEM5OyIt
LT4KLTwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgotPCEtLUVOVElUWSB2c2NyICImI3gx
RDRDQjsiLS0+Ci08IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4KLTwhLS1FTlRJVFkgeHNj
ciAiJiN4MUQ0Q0Q7Ii0tPgotPCEtLUVOVElUWSB5c2NyICImI3gxRDRDRTsiLS0+Ci08IS0tRU5U
SVRZIHpzY3IgIiYjeDFENENGOyItLT4KLTwhLS1FTlRJVFkgQWZyICImI3gxRDUwNDsiLS0+Ci08
IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgotPCEtLUVOVElUWSBEZnIgIiYjeDFENTA3OyIt
LT4KLTwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Ci08IS0tRU5USVRZIEZmciAiJiN4MUQ1
MDk7Ii0tPgotPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KLTwhLS1FTlRJVFkgSmZyICIm
I3gxRDUwRDsiLS0+Ci08IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0tPgotPCEtLUVOVElUWSBM
ZnIgIiYjeDFENTBGOyItLT4KLTwhLS1FTlRJVFkgTWZyICImI3gxRDUxMDsiLS0+Ci08IS0tRU5U
SVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgotPCEtLUVOVElUWSBPZnIgIiYjeDFENTEyOyItLT4KLTwh
LS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Ci08IS0tRU5USVRZIFFmciAiJiN4MUQ1MTQ7Ii0t
PgotPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KLTwhLS1FTlRJVFkgVGZyICImI3gxRDUx
NzsiLS0+Ci08IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgotPCEtLUVOVElUWSBWZnIgIiYj
eDFENTE5OyItLT4KLTwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+Ci08IS0tRU5USVRZIFhm
ciAiJiN4MUQ1MUI7Ii0tPgotPCEtLUVOVElUWSBZZnIgIiYjeDFENTFDOyItLT4KLTwhLS1FTlRJ
VFkgYWZyICImI3gxRDUxRTsiLS0+Ci08IS0tRU5USVRZIGJmciAiJiN4MUQ1MUY7Ii0tPgotPCEt
LUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KLTwhLS1FTlRJVFkgZGZyICImI3gxRDUyMTsiLS0+
Ci08IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgotPCEtLUVOVElUWSBmZnIgIiYjeDFENTIz
OyItLT4KLTwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Ci08IS0tRU5USVRZIGhmciAiJiN4
MUQ1MjU7Ii0tPgotPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4KLTwhLS1FTlRJVFkgamZy
ICImI3gxRDUyNzsiLS0+Ci08IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ii0tPgotPCEtLUVOVElU
WSBsZnIgIiYjeDFENTI5OyItLT4KLTwhLS1FTlRJVFkgbWZyICImI3gxRDUyQTsiLS0+Ci08IS0t
RU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgotPCEtLUVOVElUWSBvZnIgIiYjeDFENTJDOyItLT4K
LTwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Ci08IS0tRU5USVRZIHFmciAiJiN4MUQ1MkU7
Ii0tPgotPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KLTwhLS1FTlRJVFkgc2ZyICImI3gx
RDUzMDsiLS0+Ci08IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgotPCEtLUVOVElUWSB1ZnIg
IiYjeDFENTMyOyItLT4KLTwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsiLS0+Ci08IS0tRU5USVRZ
IHdmciAiJiN4MUQ1MzQ7Ii0tPgotPCEtLUVOVElUWSB4ZnIgIiYjeDFENTM1OyItLT4KLTwhLS1F
TlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Ci08IS0tRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ii0tPgot
PCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Ci08IS0tRU5USVRZIEJvcGYgIiYjeDFENTM5
OyItLT4KLTwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgotPCEtLUVOVElUWSBFb3BmICIm
I3gxRDUzQzsiLS0+Ci08IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyItLT4KLTwhLS1FTlRJVFkg
R29wZiAiJiN4MUQ1M0U7Ii0tPgotPCEtLUVOVElUWSBJb3BmICImI3gxRDU0MDsiLS0+Ci08IS0t
RU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KLTwhLS1FTlRJVFkgS29wZiAiJiN4MUQ1NDI7Ii0t
PgotPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Ci08IS0tRU5USVRZIE1vcGYgIiYjeDFE
NTQ0OyItLT4KLTwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgotPCEtLUVOVElUWSBTb3Bm
ICImI3gxRDU0QTsiLS0+Ci08IS0tRU5USVRZIFRvcGYgIiYjeDFENTRCOyItLT4KLTwhLS1FTlRJ
VFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgotPCEtLUVOVElUWSBWb3BmICImI3gxRDU0RDsiLS0+Ci08
IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KLTwhLS1FTlRJVFkgWG9wZiAiJiN4MUQ1NEY7
Ii0tPgotPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Ci08IS0tRU5USVRZIGFvcGYgIiYj
eDFENTUyOyItLT4KLTwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0tPgotPCEtLUVOVElUWSBj
b3BmICImI3gxRDU1NDsiLS0+Ci08IS0tRU5USVRZIGRvcGYgIiYjeDFENTU1OyItLT4KLTwhLS1F
TlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgotPCEtLUVOVElUWSBmb3BmICImI3gxRDU1NzsiLS0+
Ci08IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KLTwhLS1FTlRJVFkgaG9wZiAiJiN4MUQ1
NTk7Ii0tPgotPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Ci08IS0tRU5USVRZIGpvcGYg
IiYjeDFENTVCOyItLT4KLTwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7Ii0tPgotPCEtLUVOVElU
WSBsb3BmICImI3gxRDU1RDsiLS0+Ci08IS0tRU5USVRZIG1vcGYgIiYjeDFENTVFOyItLT4KLTwh
LS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgotPCEtLUVOVElUWSBvb3BmICImI3gxRDU2MDsi
LS0+Ci08IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KLTwhLS1FTlRJVFkgcW9wZiAiJiN4
MUQ1NjI7Ii0tPgotPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+Ci08IS0tRU5USVRZIHNv
cGYgIiYjeDFENTY0OyItLT4KLTwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ii0tPgotPCEtLUVO
VElUWSB1b3BmICImI3gxRDU2NjsiLS0+Ci08IS0tRU5USVRZIHZvcGYgIiYjeDFENTY3OyItLT4K
LTwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgotPCEtLUVOVElUWSB4b3BmICImI3gxRDU2
OTsiLS0+Ci08IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KLTwhLS1FTlRJVFkgem9wZiAi
JiN4MUQ1NkI7Ii0tPgorPCFFTlRJVFkgVGFiICImI3g5OyI+Cis8IUVOVElUWSBOZXdMaW5lICIm
I3hBOyI+Cis8IUVOVElUWSBleGNsICImI3gyMTsiPgorPCFFTlRJVFkgcXVvdCAiJiN4MjI7Ij4K
KzwhRU5USVRZIFFVT1QgIiYjeDIyOyI+Cis8IUVOVElUWSBudW0gIiYjeDIzOyI+Cis8IUVOVElU
WSBkb2xsYXIgIiYjeDI0OyI+Cis8IUVOVElUWSBwZXJjbnQgIiYjeDI1OyI+Cis8IUVOVElUWSBh
bXAgIiYjeDI2OyN4MjY7Ij4KKzwhRU5USVRZIEFNUCAiJiN4MjY7I3gyNjsiPgorPCFFTlRJVFkg
YXBvcyAiJiN4Mjc7Ij4KKzwhRU5USVRZIGxwYXIgIiYjeDI4OyI+Cis8IUVOVElUWSBycGFyICIm
I3gyOTsiPgorPCFFTlRJVFkgYXN0ICImI3gyQTsiPgorPCFFTlRJVFkgbWlkYXN0ICImI3gyQTsi
PgorPCFFTlRJVFkgcGx1cyAiJiN4MkI7Ij4KKzwhRU5USVRZIGNvbW1hICImI3gyQzsiPgorPCFF
TlRJVFkgcGVyaW9kICImI3gyRTsiPgorPCFFTlRJVFkgc29sICImI3gyRjsiPgorPCFFTlRJVFkg
Y29sb24gIiYjeDNBOyI+Cis8IUVOVElUWSBzZW1pICImI3gzQjsiPgorPCFFTlRJVFkgbHQgIiYj
eDI2OyN4M0M7Ij4KKzwhRU5USVRZIExUICImI3gyNjsjeDNDOyI+Cis8IUVOVElUWSBudmx0ICIm
I3gyNjsjeDNDOyYjeDIwRDI7Ij4KKzwhRU5USVRZIGVxdWFscyAiJiN4M0Q7Ij4KKzwhRU5USVRZ
IGJuZSAiJiN4M0Q7JiN4MjBFNTsiPgorPCFFTlRJVFkgZ3QgIiYjeDNFOyI+Cis8IUVOVElUWSBH
VCAiJiN4M0U7Ij4KKzwhRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ij4KKzwhRU5USVRZIHF1
ZXN0ICImI3gzRjsiPgorPCFFTlRJVFkgY29tbWF0ICImI3g0MDsiPgorPCFFTlRJVFkgbHNxYiAi
JiN4NUI7Ij4KKzwhRU5USVRZIGxicmFjayAiJiN4NUI7Ij4KKzwhRU5USVRZIGJzb2wgIiYjeDVD
OyI+Cis8IUVOVElUWSByc3FiICImI3g1RDsiPgorPCFFTlRJVFkgcmJyYWNrICImI3g1RDsiPgor
PCFFTlRJVFkgSGF0ICImI3g1RTsiPgorPCFFTlRJVFkgbG93YmFyICImI3g1RjsiPgorPCFFTlRJ
VFkgVW5kZXJCYXIgIiYjeDVGOyI+Cis8IUVOVElUWSBncmF2ZSAiJiN4NjA7Ij4KKzwhRU5USVRZ
IERpYWNyaXRpY2FsR3JhdmUgIiYjeDYwOyI+Cis8IUVOVElUWSBmamxpZyAiJiN4NjY7JiN4NkE7
Ij4KKzwhRU5USVRZIGxjdWIgIiYjeDdCOyI+Cis8IUVOVElUWSBsYnJhY2UgIiYjeDdCOyI+Cis8
IUVOVElUWSB2ZXJiYXIgIiYjeDdDOyI+Cis8IUVOVElUWSB2ZXJ0ICImI3g3QzsiPgorPCFFTlRJ
VFkgVmVydGljYWxMaW5lICImI3g3QzsiPgorPCFFTlRJVFkgcmN1YiAiJiN4N0Q7Ij4KKzwhRU5U
SVRZIHJicmFjZSAiJiN4N0Q7Ij4KKzwhRU5USVRZIG5ic3AgIiYjeEEwOyI+Cis8IUVOVElUWSBO
b25CcmVha2luZ1NwYWNlICImI3hBMDsiPgorPCFFTlRJVFkgaWV4Y2wgIiYjeEExOyI+Cis8IUVO
VElUWSBjZW50ICImI3hBMjsiPgorPCFFTlRJVFkgcG91bmQgIiYjeEEzOyI+Cis8IUVOVElUWSBj
dXJyZW4gIiYjeEE0OyI+Cis8IUVOVElUWSB5ZW4gIiYjeEE1OyI+Cis8IUVOVElUWSBicnZiYXIg
IiYjeEE2OyI+Cis8IUVOVElUWSBzZWN0ICImI3hBNzsiPgorPCFFTlRJVFkgRG90ICImI3hBODsi
PgorPCFFTlRJVFkgZGllICImI3hBODsiPgorPCFFTlRJVFkgRG91YmxlRG90ICImI3hBODsiPgor
PCFFTlRJVFkgdW1sICImI3hBODsiPgorPCFFTlRJVFkgY29weSAiJiN4QTk7Ij4KKzwhRU5USVRZ
IENPUFkgIiYjeEE5OyI+Cis8IUVOVElUWSBvcmRmICImI3hBQTsiPgorPCFFTlRJVFkgbGFxdW8g
IiYjeEFCOyI+Cis8IUVOVElUWSBub3QgIiYjeEFDOyI+Cis8IUVOVElUWSBzaHkgIiYjeEFEOyI+
Cis8IUVOVElUWSByZWcgIiYjeEFFOyI+Cis8IUVOVElUWSBjaXJjbGVkUiAiJiN4QUU7Ij4KKzwh
RU5USVRZIFJFRyAiJiN4QUU7Ij4KKzwhRU5USVRZIG1hY3IgIiYjeEFGOyI+Cis8IUVOVElUWSBz
dHJucyAiJiN4QUY7Ij4KKzwhRU5USVRZIGRlZyAiJiN4QjA7Ij4KKzwhRU5USVRZIHBsdXNtbiAi
JiN4QjE7Ij4KKzwhRU5USVRZIHBtICImI3hCMTsiPgorPCFFTlRJVFkgUGx1c01pbnVzICImI3hC
MTsiPgorPCFFTlRJVFkgc3VwMiAiJiN4QjI7Ij4KKzwhRU5USVRZIHN1cDMgIiYjeEIzOyI+Cis8
IUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ij4KKzwhRU5USVRZIERpYWNyaXRpY2FsQWN1dGUgIiYjeEI0
OyI+Cis8IUVOVElUWSBtaWNybyAiJiN4QjU7Ij4KKzwhRU5USVRZIHBhcmEgIiYjeEI2OyI+Cis8
IUVOVElUWSBtaWRkb3QgIiYjeEI3OyI+Cis8IUVOVElUWSBjZW50ZXJkb3QgIiYjeEI3OyI+Cis8
IUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyI+Cis8IUVOVElUWSBjZWRpbCAiJiN4Qjg7Ij4KKzwh
RU5USVRZIENlZGlsbGEgIiYjeEI4OyI+Cis8IUVOVElUWSBzdXAxICImI3hCOTsiPgorPCFFTlRJ
VFkgb3JkbSAiJiN4QkE7Ij4KKzwhRU5USVRZIHJhcXVvICImI3hCQjsiPgorPCFFTlRJVFkgZnJh
YzE0ICImI3hCQzsiPgorPCFFTlRJVFkgZnJhYzEyICImI3hCRDsiPgorPCFFTlRJVFkgaGFsZiAi
JiN4QkQ7Ij4KKzwhRU5USVRZIGZyYWMzNCAiJiN4QkU7Ij4KKzwhRU5USVRZIGlxdWVzdCAiJiN4
QkY7Ij4KKzwhRU5USVRZIEFncmF2ZSAiJiN4QzA7Ij4KKzwhRU5USVRZIEFhY3V0ZSAiJiN4QzE7
Ij4KKzwhRU5USVRZIEFjaXJjICImI3hDMjsiPgorPCFFTlRJVFkgQXRpbGRlICImI3hDMzsiPgor
PCFFTlRJVFkgQXVtbCAiJiN4QzQ7Ij4KKzwhRU5USVRZIEFyaW5nICImI3hDNTsiPgorPCFFTlRJ
VFkgYW5nc3QgIiYjeEM1OyI+Cis8IUVOVElUWSBBRWxpZyAiJiN4QzY7Ij4KKzwhRU5USVRZIENj
ZWRpbCAiJiN4Qzc7Ij4KKzwhRU5USVRZIEVncmF2ZSAiJiN4Qzg7Ij4KKzwhRU5USVRZIEVhY3V0
ZSAiJiN4Qzk7Ij4KKzwhRU5USVRZIEVjaXJjICImI3hDQTsiPgorPCFFTlRJVFkgRXVtbCAiJiN4
Q0I7Ij4KKzwhRU5USVRZIElncmF2ZSAiJiN4Q0M7Ij4KKzwhRU5USVRZIElhY3V0ZSAiJiN4Q0Q7
Ij4KKzwhRU5USVRZIEljaXJjICImI3hDRTsiPgorPCFFTlRJVFkgSXVtbCAiJiN4Q0Y7Ij4KKzwh
RU5USVRZIEVUSCAiJiN4RDA7Ij4KKzwhRU5USVRZIE50aWxkZSAiJiN4RDE7Ij4KKzwhRU5USVRZ
IE9ncmF2ZSAiJiN4RDI7Ij4KKzwhRU5USVRZIE9hY3V0ZSAiJiN4RDM7Ij4KKzwhRU5USVRZIE9j
aXJjICImI3hENDsiPgorPCFFTlRJVFkgT3RpbGRlICImI3hENTsiPgorPCFFTlRJVFkgT3VtbCAi
JiN4RDY7Ij4KKzwhRU5USVRZIHRpbWVzICImI3hENzsiPgorPCFFTlRJVFkgT3NsYXNoICImI3hE
ODsiPgorPCFFTlRJVFkgVWdyYXZlICImI3hEOTsiPgorPCFFTlRJVFkgVWFjdXRlICImI3hEQTsi
PgorPCFFTlRJVFkgVWNpcmMgIiYjeERCOyI+Cis8IUVOVElUWSBVdW1sICImI3hEQzsiPgorPCFF
TlRJVFkgWWFjdXRlICImI3hERDsiPgorPCFFTlRJVFkgVEhPUk4gIiYjeERFOyI+Cis8IUVOVElU
WSBzemxpZyAiJiN4REY7Ij4KKzwhRU5USVRZIGFncmF2ZSAiJiN4RTA7Ij4KKzwhRU5USVRZIGFh
Y3V0ZSAiJiN4RTE7Ij4KKzwhRU5USVRZIGFjaXJjICImI3hFMjsiPgorPCFFTlRJVFkgYXRpbGRl
ICImI3hFMzsiPgorPCFFTlRJVFkgYXVtbCAiJiN4RTQ7Ij4KKzwhRU5USVRZIGFyaW5nICImI3hF
NTsiPgorPCFFTlRJVFkgYWVsaWcgIiYjeEU2OyI+Cis8IUVOVElUWSBjY2VkaWwgIiYjeEU3OyI+
Cis8IUVOVElUWSBlZ3JhdmUgIiYjeEU4OyI+Cis8IUVOVElUWSBlYWN1dGUgIiYjeEU5OyI+Cis8
IUVOVElUWSBlY2lyYyAiJiN4RUE7Ij4KKzwhRU5USVRZIGV1bWwgIiYjeEVCOyI+Cis8IUVOVElU
WSBpZ3JhdmUgIiYjeEVDOyI+Cis8IUVOVElUWSBpYWN1dGUgIiYjeEVEOyI+Cis8IUVOVElUWSBp
Y2lyYyAiJiN4RUU7Ij4KKzwhRU5USVRZIGl1bWwgIiYjeEVGOyI+Cis8IUVOVElUWSBldGggIiYj
eEYwOyI+Cis8IUVOVElUWSBudGlsZGUgIiYjeEYxOyI+Cis8IUVOVElUWSBvZ3JhdmUgIiYjeEYy
OyI+Cis8IUVOVElUWSBvYWN1dGUgIiYjeEYzOyI+Cis8IUVOVElUWSBvY2lyYyAiJiN4RjQ7Ij4K
KzwhRU5USVRZIG90aWxkZSAiJiN4RjU7Ij4KKzwhRU5USVRZIG91bWwgIiYjeEY2OyI+Cis8IUVO
VElUWSBkaXZpZGUgIiYjeEY3OyI+Cis8IUVOVElUWSBkaXYgIiYjeEY3OyI+Cis8IUVOVElUWSBv
c2xhc2ggIiYjeEY4OyI+Cis8IUVOVElUWSB1Z3JhdmUgIiYjeEY5OyI+Cis8IUVOVElUWSB1YWN1
dGUgIiYjeEZBOyI+Cis8IUVOVElUWSB1Y2lyYyAiJiN4RkI7Ij4KKzwhRU5USVRZIHV1bWwgIiYj
eEZDOyI+Cis8IUVOVElUWSB5YWN1dGUgIiYjeEZEOyI+Cis8IUVOVElUWSB0aG9ybiAiJiN4RkU7
Ij4KKzwhRU5USVRZIHl1bWwgIiYjeEZGOyI+Cis8IUVOVElUWSBBbWFjciAiJiN4MTAwOyI+Cis8
IUVOVElUWSBhbWFjciAiJiN4MTAxOyI+Cis8IUVOVElUWSBBYnJldmUgIiYjeDEwMjsiPgorPCFF
TlRJVFkgYWJyZXZlICImI3gxMDM7Ij4KKzwhRU5USVRZIEFvZ29uICImI3gxMDQ7Ij4KKzwhRU5U
SVRZIGFvZ29uICImI3gxMDU7Ij4KKzwhRU5USVRZIENhY3V0ZSAiJiN4MTA2OyI+Cis8IUVOVElU
WSBjYWN1dGUgIiYjeDEwNzsiPgorPCFFTlRJVFkgQ2NpcmMgIiYjeDEwODsiPgorPCFFTlRJVFkg
Y2NpcmMgIiYjeDEwOTsiPgorPCFFTlRJVFkgQ2RvdCAiJiN4MTBBOyI+Cis8IUVOVElUWSBjZG90
ICImI3gxMEI7Ij4KKzwhRU5USVRZIENjYXJvbiAiJiN4MTBDOyI+Cis8IUVOVElUWSBjY2Fyb24g
IiYjeDEwRDsiPgorPCFFTlRJVFkgRGNhcm9uICImI3gxMEU7Ij4KKzwhRU5USVRZIGRjYXJvbiAi
JiN4MTBGOyI+Cis8IUVOVElUWSBEc3Ryb2sgIiYjeDExMDsiPgorPCFFTlRJVFkgZHN0cm9rICIm
I3gxMTE7Ij4KKzwhRU5USVRZIEVtYWNyICImI3gxMTI7Ij4KKzwhRU5USVRZIGVtYWNyICImI3gx
MTM7Ij4KKzwhRU5USVRZIEVkb3QgIiYjeDExNjsiPgorPCFFTlRJVFkgZWRvdCAiJiN4MTE3OyI+
Cis8IUVOVElUWSBFb2dvbiAiJiN4MTE4OyI+Cis8IUVOVElUWSBlb2dvbiAiJiN4MTE5OyI+Cis8
IUVOVElUWSBFY2Fyb24gIiYjeDExQTsiPgorPCFFTlRJVFkgZWNhcm9uICImI3gxMUI7Ij4KKzwh
RU5USVRZIEdjaXJjICImI3gxMUM7Ij4KKzwhRU5USVRZIGdjaXJjICImI3gxMUQ7Ij4KKzwhRU5U
SVRZIEdicmV2ZSAiJiN4MTFFOyI+Cis8IUVOVElUWSBnYnJldmUgIiYjeDExRjsiPgorPCFFTlRJ
VFkgR2RvdCAiJiN4MTIwOyI+Cis8IUVOVElUWSBnZG90ICImI3gxMjE7Ij4KKzwhRU5USVRZIEdj
ZWRpbCAiJiN4MTIyOyI+Cis8IUVOVElUWSBIY2lyYyAiJiN4MTI0OyI+Cis8IUVOVElUWSBoY2ly
YyAiJiN4MTI1OyI+Cis8IUVOVElUWSBIc3Ryb2sgIiYjeDEyNjsiPgorPCFFTlRJVFkgaHN0cm9r
ICImI3gxMjc7Ij4KKzwhRU5USVRZIEl0aWxkZSAiJiN4MTI4OyI+Cis8IUVOVElUWSBpdGlsZGUg
IiYjeDEyOTsiPgorPCFFTlRJVFkgSW1hY3IgIiYjeDEyQTsiPgorPCFFTlRJVFkgaW1hY3IgIiYj
eDEyQjsiPgorPCFFTlRJVFkgSW9nb24gIiYjeDEyRTsiPgorPCFFTlRJVFkgaW9nb24gIiYjeDEy
RjsiPgorPCFFTlRJVFkgSWRvdCAiJiN4MTMwOyI+Cis8IUVOVElUWSBpbWF0aCAiJiN4MTMxOyI+
Cis8IUVOVElUWSBpbm9kb3QgIiYjeDEzMTsiPgorPCFFTlRJVFkgSUpsaWcgIiYjeDEzMjsiPgor
PCFFTlRJVFkgaWpsaWcgIiYjeDEzMzsiPgorPCFFTlRJVFkgSmNpcmMgIiYjeDEzNDsiPgorPCFF
TlRJVFkgamNpcmMgIiYjeDEzNTsiPgorPCFFTlRJVFkgS2NlZGlsICImI3gxMzY7Ij4KKzwhRU5U
SVRZIGtjZWRpbCAiJiN4MTM3OyI+Cis8IUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiPgorPCFFTlRJ
VFkgTGFjdXRlICImI3gxMzk7Ij4KKzwhRU5USVRZIGxhY3V0ZSAiJiN4MTNBOyI+Cis8IUVOVElU
WSBMY2VkaWwgIiYjeDEzQjsiPgorPCFFTlRJVFkgbGNlZGlsICImI3gxM0M7Ij4KKzwhRU5USVRZ
IExjYXJvbiAiJiN4MTNEOyI+Cis8IUVOVElUWSBsY2Fyb24gIiYjeDEzRTsiPgorPCFFTlRJVFkg
TG1pZG90ICImI3gxM0Y7Ij4KKzwhRU5USVRZIGxtaWRvdCAiJiN4MTQwOyI+Cis8IUVOVElUWSBM
c3Ryb2sgIiYjeDE0MTsiPgorPCFFTlRJVFkgbHN0cm9rICImI3gxNDI7Ij4KKzwhRU5USVRZIE5h
Y3V0ZSAiJiN4MTQzOyI+Cis8IUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiPgorPCFFTlRJVFkgTmNl
ZGlsICImI3gxNDU7Ij4KKzwhRU5USVRZIG5jZWRpbCAiJiN4MTQ2OyI+Cis8IUVOVElUWSBOY2Fy
b24gIiYjeDE0NzsiPgorPCFFTlRJVFkgbmNhcm9uICImI3gxNDg7Ij4KKzwhRU5USVRZIG5hcG9z
ICImI3gxNDk7Ij4KKzwhRU5USVRZIEVORyAiJiN4MTRBOyI+Cis8IUVOVElUWSBlbmcgIiYjeDE0
QjsiPgorPCFFTlRJVFkgT21hY3IgIiYjeDE0QzsiPgorPCFFTlRJVFkgb21hY3IgIiYjeDE0RDsi
PgorPCFFTlRJVFkgT2RibGFjICImI3gxNTA7Ij4KKzwhRU5USVRZIG9kYmxhYyAiJiN4MTUxOyI+
Cis8IUVOVElUWSBPRWxpZyAiJiN4MTUyOyI+Cis8IUVOVElUWSBvZWxpZyAiJiN4MTUzOyI+Cis8
IUVOVElUWSBSYWN1dGUgIiYjeDE1NDsiPgorPCFFTlRJVFkgcmFjdXRlICImI3gxNTU7Ij4KKzwh
RU5USVRZIFJjZWRpbCAiJiN4MTU2OyI+Cis8IUVOVElUWSByY2VkaWwgIiYjeDE1NzsiPgorPCFF
TlRJVFkgUmNhcm9uICImI3gxNTg7Ij4KKzwhRU5USVRZIHJjYXJvbiAiJiN4MTU5OyI+Cis8IUVO
VElUWSBTYWN1dGUgIiYjeDE1QTsiPgorPCFFTlRJVFkgc2FjdXRlICImI3gxNUI7Ij4KKzwhRU5U
SVRZIFNjaXJjICImI3gxNUM7Ij4KKzwhRU5USVRZIHNjaXJjICImI3gxNUQ7Ij4KKzwhRU5USVRZ
IFNjZWRpbCAiJiN4MTVFOyI+Cis8IUVOVElUWSBzY2VkaWwgIiYjeDE1RjsiPgorPCFFTlRJVFkg
U2Nhcm9uICImI3gxNjA7Ij4KKzwhRU5USVRZIHNjYXJvbiAiJiN4MTYxOyI+Cis8IUVOVElUWSBU
Y2VkaWwgIiYjeDE2MjsiPgorPCFFTlRJVFkgdGNlZGlsICImI3gxNjM7Ij4KKzwhRU5USVRZIFRj
YXJvbiAiJiN4MTY0OyI+Cis8IUVOVElUWSB0Y2Fyb24gIiYjeDE2NTsiPgorPCFFTlRJVFkgVHN0
cm9rICImI3gxNjY7Ij4KKzwhRU5USVRZIHRzdHJvayAiJiN4MTY3OyI+Cis8IUVOVElUWSBVdGls
ZGUgIiYjeDE2ODsiPgorPCFFTlRJVFkgdXRpbGRlICImI3gxNjk7Ij4KKzwhRU5USVRZIFVtYWNy
ICImI3gxNkE7Ij4KKzwhRU5USVRZIHVtYWNyICImI3gxNkI7Ij4KKzwhRU5USVRZIFVicmV2ZSAi
JiN4MTZDOyI+Cis8IUVOVElUWSB1YnJldmUgIiYjeDE2RDsiPgorPCFFTlRJVFkgVXJpbmcgIiYj
eDE2RTsiPgorPCFFTlRJVFkgdXJpbmcgIiYjeDE2RjsiPgorPCFFTlRJVFkgVWRibGFjICImI3gx
NzA7Ij4KKzwhRU5USVRZIHVkYmxhYyAiJiN4MTcxOyI+Cis8IUVOVElUWSBVb2dvbiAiJiN4MTcy
OyI+Cis8IUVOVElUWSB1b2dvbiAiJiN4MTczOyI+Cis8IUVOVElUWSBXY2lyYyAiJiN4MTc0OyI+
Cis8IUVOVElUWSB3Y2lyYyAiJiN4MTc1OyI+Cis8IUVOVElUWSBZY2lyYyAiJiN4MTc2OyI+Cis8
IUVOVElUWSB5Y2lyYyAiJiN4MTc3OyI+Cis8IUVOVElUWSBZdW1sICImI3gxNzg7Ij4KKzwhRU5U
SVRZIFphY3V0ZSAiJiN4MTc5OyI+Cis8IUVOVElUWSB6YWN1dGUgIiYjeDE3QTsiPgorPCFFTlRJ
VFkgWmRvdCAiJiN4MTdCOyI+Cis8IUVOVElUWSB6ZG90ICImI3gxN0M7Ij4KKzwhRU5USVRZIFpj
YXJvbiAiJiN4MTdEOyI+Cis8IUVOVElUWSB6Y2Fyb24gIiYjeDE3RTsiPgorPCFFTlRJVFkgZm5v
ZiAiJiN4MTkyOyI+Cis8IUVOVElUWSBpbXBlZCAiJiN4MUI1OyI+Cis8IUVOVElUWSBnYWN1dGUg
IiYjeDFGNTsiPgorPCFFTlRJVFkgam1hdGggIiYjeDIzNzsiPgorPCFFTlRJVFkgY2lyYyAiJiN4
MkM2OyI+Cis8IUVOVElUWSBjYXJvbiAiJiN4MkM3OyI+Cis8IUVOVElUWSBIYWNlayAiJiN4MkM3
OyI+Cis8IUVOVElUWSBicmV2ZSAiJiN4MkQ4OyI+Cis8IUVOVElUWSBCcmV2ZSAiJiN4MkQ4OyI+
Cis8IUVOVElUWSBkb3QgIiYjeDJEOTsiPgorPCFFTlRJVFkgRGlhY3JpdGljYWxEb3QgIiYjeDJE
OTsiPgorPCFFTlRJVFkgcmluZyAiJiN4MkRBOyI+Cis8IUVOVElUWSBvZ29uICImI3gyREI7Ij4K
KzwhRU5USVRZIHRpbGRlICImI3gyREM7Ij4KKzwhRU5USVRZIERpYWNyaXRpY2FsVGlsZGUgIiYj
eDJEQzsiPgorPCFFTlRJVFkgZGJsYWMgIiYjeDJERDsiPgorPCFFTlRJVFkgRGlhY3JpdGljYWxE
b3VibGVBY3V0ZSAiJiN4MkREOyI+Cis8IUVOVElUWSBEb3duQnJldmUgIiYjeDMxMTsiPgorPCFF
TlRJVFkgQWxwaGEgIiYjeDM5MTsiPgorPCFFTlRJVFkgQmV0YSAiJiN4MzkyOyI+Cis8IUVOVElU
WSBHYW1tYSAiJiN4MzkzOyI+Cis8IUVOVElUWSBEZWx0YSAiJiN4Mzk0OyI+Cis8IUVOVElUWSBF
cHNpbG9uICImI3gzOTU7Ij4KKzwhRU5USVRZIFpldGEgIiYjeDM5NjsiPgorPCFFTlRJVFkgRXRh
ICImI3gzOTc7Ij4KKzwhRU5USVRZIFRoZXRhICImI3gzOTg7Ij4KKzwhRU5USVRZIElvdGEgIiYj
eDM5OTsiPgorPCFFTlRJVFkgS2FwcGEgIiYjeDM5QTsiPgorPCFFTlRJVFkgTGFtYmRhICImI3gz
OUI7Ij4KKzwhRU5USVRZIE11ICImI3gzOUM7Ij4KKzwhRU5USVRZIE51ICImI3gzOUQ7Ij4KKzwh
RU5USVRZIFhpICImI3gzOUU7Ij4KKzwhRU5USVRZIE9taWNyb24gIiYjeDM5RjsiPgorPCFFTlRJ
VFkgUGkgIiYjeDNBMDsiPgorPCFFTlRJVFkgUmhvICImI3gzQTE7Ij4KKzwhRU5USVRZIFNpZ21h
ICImI3gzQTM7Ij4KKzwhRU5USVRZIFRhdSAiJiN4M0E0OyI+Cis8IUVOVElUWSBVcHNpbG9uICIm
I3gzQTU7Ij4KKzwhRU5USVRZIFBoaSAiJiN4M0E2OyI+Cis8IUVOVElUWSBDaGkgIiYjeDNBNzsi
PgorPCFFTlRJVFkgUHNpICImI3gzQTg7Ij4KKzwhRU5USVRZIE9tZWdhICImI3gzQTk7Ij4KKzwh
RU5USVRZIG9obSAiJiN4M0E5OyI+Cis8IUVOVElUWSBhbHBoYSAiJiN4M0IxOyI+Cis8IUVOVElU
WSBiZXRhICImI3gzQjI7Ij4KKzwhRU5USVRZIGdhbW1hICImI3gzQjM7Ij4KKzwhRU5USVRZIGRl
bHRhICImI3gzQjQ7Ij4KKzwhRU5USVRZIGVwc2kgIiYjeDNCNTsiPgorPCFFTlRJVFkgZXBzaWxv
biAiJiN4M0I1OyI+Cis8IUVOVElUWSB6ZXRhICImI3gzQjY7Ij4KKzwhRU5USVRZIGV0YSAiJiN4
M0I3OyI+Cis8IUVOVElUWSB0aGV0YSAiJiN4M0I4OyI+Cis8IUVOVElUWSBpb3RhICImI3gzQjk7
Ij4KKzwhRU5USVRZIGthcHBhICImI3gzQkE7Ij4KKzwhRU5USVRZIGxhbWJkYSAiJiN4M0JCOyI+
Cis8IUVOVElUWSBtdSAiJiN4M0JDOyI+Cis8IUVOVElUWSBudSAiJiN4M0JEOyI+Cis8IUVOVElU
WSB4aSAiJiN4M0JFOyI+Cis8IUVOVElUWSBvbWljcm9uICImI3gzQkY7Ij4KKzwhRU5USVRZIHBp
ICImI3gzQzA7Ij4KKzwhRU5USVRZIHJobyAiJiN4M0MxOyI+Cis8IUVOVElUWSBzaWdtYXYgIiYj
eDNDMjsiPgorPCFFTlRJVFkgdmFyc2lnbWEgIiYjeDNDMjsiPgorPCFFTlRJVFkgc2lnbWFmICIm
I3gzQzI7Ij4KKzwhRU5USVRZIHNpZ21hICImI3gzQzM7Ij4KKzwhRU5USVRZIHRhdSAiJiN4M0M0
OyI+Cis8IUVOVElUWSB1cHNpICImI3gzQzU7Ij4KKzwhRU5USVRZIHVwc2lsb24gIiYjeDNDNTsi
PgorPCFFTlRJVFkgcGhpICImI3gzQzY7Ij4KKzwhRU5USVRZIGNoaSAiJiN4M0M3OyI+Cis8IUVO
VElUWSBwc2kgIiYjeDNDODsiPgorPCFFTlRJVFkgb21lZ2EgIiYjeDNDOTsiPgorPCFFTlRJVFkg
dGhldGF2ICImI3gzRDE7Ij4KKzwhRU5USVRZIHZhcnRoZXRhICImI3gzRDE7Ij4KKzwhRU5USVRZ
IHRoZXRhc3ltICImI3gzRDE7Ij4KKzwhRU5USVRZIFVwc2kgIiYjeDNEMjsiPgorPCFFTlRJVFkg
dXBzaWggIiYjeDNEMjsiPgorPCFFTlRJVFkgc3RyYWlnaHRwaGkgIiYjeDNENTsiPgorPCFFTlRJ
VFkgcGhpdiAiJiN4M0Q1OyI+Cis8IUVOVElUWSB2YXJwaGkgIiYjeDNENTsiPgorPCFFTlRJVFkg
cGl2ICImI3gzRDY7Ij4KKzwhRU5USVRZIHZhcnBpICImI3gzRDY7Ij4KKzwhRU5USVRZIEdhbW1h
ZCAiJiN4M0RDOyI+Cis8IUVOVElUWSBnYW1tYWQgIiYjeDNERDsiPgorPCFFTlRJVFkgZGlnYW1t
YSAiJiN4M0REOyI+Cis8IUVOVElUWSBrYXBwYXYgIiYjeDNGMDsiPgorPCFFTlRJVFkgdmFya2Fw
cGEgIiYjeDNGMDsiPgorPCFFTlRJVFkgcmhvdiAiJiN4M0YxOyI+Cis8IUVOVElUWSB2YXJyaG8g
IiYjeDNGMTsiPgorPCFFTlRJVFkgZXBzaXYgIiYjeDNGNTsiPgorPCFFTlRJVFkgc3RyYWlnaHRl
cHNpbG9uICImI3gzRjU7Ij4KKzwhRU5USVRZIHZhcmVwc2lsb24gIiYjeDNGNTsiPgorPCFFTlRJ
VFkgYmVwc2kgIiYjeDNGNjsiPgorPCFFTlRJVFkgYmFja2Vwc2lsb24gIiYjeDNGNjsiPgorPCFF
TlRJVFkgSU9jeSAiJiN4NDAxOyI+Cis8IUVOVElUWSBESmN5ICImI3g0MDI7Ij4KKzwhRU5USVRZ
IEdKY3kgIiYjeDQwMzsiPgorPCFFTlRJVFkgSnVrY3kgIiYjeDQwNDsiPgorPCFFTlRJVFkgRFNj
eSAiJiN4NDA1OyI+Cis8IUVOVElUWSBJdWtjeSAiJiN4NDA2OyI+Cis8IUVOVElUWSBZSWN5ICIm
I3g0MDc7Ij4KKzwhRU5USVRZIEpzZXJjeSAiJiN4NDA4OyI+Cis8IUVOVElUWSBMSmN5ICImI3g0
MDk7Ij4KKzwhRU5USVRZIE5KY3kgIiYjeDQwQTsiPgorPCFFTlRJVFkgVFNIY3kgIiYjeDQwQjsi
PgorPCFFTlRJVFkgS0pjeSAiJiN4NDBDOyI+Cis8IUVOVElUWSBVYnJjeSAiJiN4NDBFOyI+Cis8
IUVOVElUWSBEWmN5ICImI3g0MEY7Ij4KKzwhRU5USVRZIEFjeSAiJiN4NDEwOyI+Cis8IUVOVElU
WSBCY3kgIiYjeDQxMTsiPgorPCFFTlRJVFkgVmN5ICImI3g0MTI7Ij4KKzwhRU5USVRZIEdjeSAi
JiN4NDEzOyI+Cis8IUVOVElUWSBEY3kgIiYjeDQxNDsiPgorPCFFTlRJVFkgSUVjeSAiJiN4NDE1
OyI+Cis8IUVOVElUWSBaSGN5ICImI3g0MTY7Ij4KKzwhRU5USVRZIFpjeSAiJiN4NDE3OyI+Cis8
IUVOVElUWSBJY3kgIiYjeDQxODsiPgorPCFFTlRJVFkgSmN5ICImI3g0MTk7Ij4KKzwhRU5USVRZ
IEtjeSAiJiN4NDFBOyI+Cis8IUVOVElUWSBMY3kgIiYjeDQxQjsiPgorPCFFTlRJVFkgTWN5ICIm
I3g0MUM7Ij4KKzwhRU5USVRZIE5jeSAiJiN4NDFEOyI+Cis8IUVOVElUWSBPY3kgIiYjeDQxRTsi
PgorPCFFTlRJVFkgUGN5ICImI3g0MUY7Ij4KKzwhRU5USVRZIFJjeSAiJiN4NDIwOyI+Cis8IUVO
VElUWSBTY3kgIiYjeDQyMTsiPgorPCFFTlRJVFkgVGN5ICImI3g0MjI7Ij4KKzwhRU5USVRZIFVj
eSAiJiN4NDIzOyI+Cis8IUVOVElUWSBGY3kgIiYjeDQyNDsiPgorPCFFTlRJVFkgS0hjeSAiJiN4
NDI1OyI+Cis8IUVOVElUWSBUU2N5ICImI3g0MjY7Ij4KKzwhRU5USVRZIENIY3kgIiYjeDQyNzsi
PgorPCFFTlRJVFkgU0hjeSAiJiN4NDI4OyI+Cis8IUVOVElUWSBTSENIY3kgIiYjeDQyOTsiPgor
PCFFTlRJVFkgSEFSRGN5ICImI3g0MkE7Ij4KKzwhRU5USVRZIFljeSAiJiN4NDJCOyI+Cis8IUVO
VElUWSBTT0ZUY3kgIiYjeDQyQzsiPgorPCFFTlRJVFkgRWN5ICImI3g0MkQ7Ij4KKzwhRU5USVRZ
IFlVY3kgIiYjeDQyRTsiPgorPCFFTlRJVFkgWUFjeSAiJiN4NDJGOyI+Cis8IUVOVElUWSBhY3kg
IiYjeDQzMDsiPgorPCFFTlRJVFkgYmN5ICImI3g0MzE7Ij4KKzwhRU5USVRZIHZjeSAiJiN4NDMy
OyI+Cis8IUVOVElUWSBnY3kgIiYjeDQzMzsiPgorPCFFTlRJVFkgZGN5ICImI3g0MzQ7Ij4KKzwh
RU5USVRZIGllY3kgIiYjeDQzNTsiPgorPCFFTlRJVFkgemhjeSAiJiN4NDM2OyI+Cis8IUVOVElU
WSB6Y3kgIiYjeDQzNzsiPgorPCFFTlRJVFkgaWN5ICImI3g0Mzg7Ij4KKzwhRU5USVRZIGpjeSAi
JiN4NDM5OyI+Cis8IUVOVElUWSBrY3kgIiYjeDQzQTsiPgorPCFFTlRJVFkgbGN5ICImI3g0M0I7
Ij4KKzwhRU5USVRZIG1jeSAiJiN4NDNDOyI+Cis8IUVOVElUWSBuY3kgIiYjeDQzRDsiPgorPCFF
TlRJVFkgb2N5ICImI3g0M0U7Ij4KKzwhRU5USVRZIHBjeSAiJiN4NDNGOyI+Cis8IUVOVElUWSBy
Y3kgIiYjeDQ0MDsiPgorPCFFTlRJVFkgc2N5ICImI3g0NDE7Ij4KKzwhRU5USVRZIHRjeSAiJiN4
NDQyOyI+Cis8IUVOVElUWSB1Y3kgIiYjeDQ0MzsiPgorPCFFTlRJVFkgZmN5ICImI3g0NDQ7Ij4K
KzwhRU5USVRZIGtoY3kgIiYjeDQ0NTsiPgorPCFFTlRJVFkgdHNjeSAiJiN4NDQ2OyI+Cis8IUVO
VElUWSBjaGN5ICImI3g0NDc7Ij4KKzwhRU5USVRZIHNoY3kgIiYjeDQ0ODsiPgorPCFFTlRJVFkg
c2hjaGN5ICImI3g0NDk7Ij4KKzwhRU5USVRZIGhhcmRjeSAiJiN4NDRBOyI+Cis8IUVOVElUWSB5
Y3kgIiYjeDQ0QjsiPgorPCFFTlRJVFkgc29mdGN5ICImI3g0NEM7Ij4KKzwhRU5USVRZIGVjeSAi
JiN4NDREOyI+Cis8IUVOVElUWSB5dWN5ICImI3g0NEU7Ij4KKzwhRU5USVRZIHlhY3kgIiYjeDQ0
RjsiPgorPCFFTlRJVFkgaW9jeSAiJiN4NDUxOyI+Cis8IUVOVElUWSBkamN5ICImI3g0NTI7Ij4K
KzwhRU5USVRZIGdqY3kgIiYjeDQ1MzsiPgorPCFFTlRJVFkganVrY3kgIiYjeDQ1NDsiPgorPCFF
TlRJVFkgZHNjeSAiJiN4NDU1OyI+Cis8IUVOVElUWSBpdWtjeSAiJiN4NDU2OyI+Cis8IUVOVElU
WSB5aWN5ICImI3g0NTc7Ij4KKzwhRU5USVRZIGpzZXJjeSAiJiN4NDU4OyI+Cis8IUVOVElUWSBs
amN5ICImI3g0NTk7Ij4KKzwhRU5USVRZIG5qY3kgIiYjeDQ1QTsiPgorPCFFTlRJVFkgdHNoY3kg
IiYjeDQ1QjsiPgorPCFFTlRJVFkga2pjeSAiJiN4NDVDOyI+Cis8IUVOVElUWSB1YnJjeSAiJiN4
NDVFOyI+Cis8IUVOVElUWSBkemN5ICImI3g0NUY7Ij4KKzwhRU5USVRZIGVuc3AgIiYjeDIwMDI7
Ij4KKzwhRU5USVRZIGVtc3AgIiYjeDIwMDM7Ij4KKzwhRU5USVRZIGVtc3AxMyAiJiN4MjAwNDsi
PgorPCFFTlRJVFkgZW1zcDE0ICImI3gyMDA1OyI+Cis8IUVOVElUWSBudW1zcCAiJiN4MjAwNzsi
PgorPCFFTlRJVFkgcHVuY3NwICImI3gyMDA4OyI+Cis8IUVOVElUWSB0aGluc3AgIiYjeDIwMDk7
Ij4KKzwhRU5USVRZIFRoaW5TcGFjZSAiJiN4MjAwOTsiPgorPCFFTlRJVFkgaGFpcnNwICImI3gy
MDBBOyI+Cis8IUVOVElUWSBWZXJ5VGhpblNwYWNlICImI3gyMDBBOyI+Cis8IUVOVElUWSBaZXJv
V2lkdGhTcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJVFkgTmVnYXRpdmVWZXJ5VGhpblNwYWNlICIm
I3gyMDBCOyI+Cis8IUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJ
VFkgTmVnYXRpdmVNZWRpdW1TcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJVFkgTmVnYXRpdmVUaGlj
a1NwYWNlICImI3gyMDBCOyI+Cis8IUVOVElUWSB6d25qICImI3gyMDBDOyI+Cis8IUVOVElUWSB6
d2ogIiYjeDIwMEQ7Ij4KKzwhRU5USVRZIGxybSAiJiN4MjAwRTsiPgorPCFFTlRJVFkgcmxtICIm
I3gyMDBGOyI+Cis8IUVOVElUWSBoeXBoZW4gIiYjeDIwMTA7Ij4KKzwhRU5USVRZIGRhc2ggIiYj
eDIwMTA7Ij4KKzwhRU5USVRZIG5kYXNoICImI3gyMDEzOyI+Cis8IUVOVElUWSBtZGFzaCAiJiN4
MjAxNDsiPgorPCFFTlRJVFkgaG9yYmFyICImI3gyMDE1OyI+Cis8IUVOVElUWSBWZXJiYXIgIiYj
eDIwMTY7Ij4KKzwhRU5USVRZIFZlcnQgIiYjeDIwMTY7Ij4KKzwhRU5USVRZIGxzcXVvICImI3gy
MDE4OyI+Cis8IUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiPgorPCFFTlRJVFkgcnNx
dW8gIiYjeDIwMTk7Ij4KKzwhRU5USVRZIHJzcXVvciAiJiN4MjAxOTsiPgorPCFFTlRJVFkgQ2xv
c2VDdXJseVF1b3RlICImI3gyMDE5OyI+Cis8IUVOVElUWSBsc3F1b3IgIiYjeDIwMUE7Ij4KKzwh
RU5USVRZIHNicXVvICImI3gyMDFBOyI+Cis8IUVOVElUWSBsZHF1byAiJiN4MjAxQzsiPgorPCFF
TlRJVFkgT3BlbkN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUM7Ij4KKzwhRU5USVRZIHJkcXVvICIm
I3gyMDFEOyI+Cis8IUVOVElUWSByZHF1b3IgIiYjeDIwMUQ7Ij4KKzwhRU5USVRZIENsb3NlQ3Vy
bHlEb3VibGVRdW90ZSAiJiN4MjAxRDsiPgorPCFFTlRJVFkgbGRxdW9yICImI3gyMDFFOyI+Cis8
IUVOVElUWSBiZHF1byAiJiN4MjAxRTsiPgorPCFFTlRJVFkgZGFnZ2VyICImI3gyMDIwOyI+Cis8
IUVOVElUWSBEYWdnZXIgIiYjeDIwMjE7Ij4KKzwhRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ij4K
KzwhRU5USVRZIGJ1bGwgIiYjeDIwMjI7Ij4KKzwhRU5USVRZIGJ1bGxldCAiJiN4MjAyMjsiPgor
PCFFTlRJVFkgbmxkciAiJiN4MjAyNTsiPgorPCFFTlRJVFkgaGVsbGlwICImI3gyMDI2OyI+Cis8
IUVOVElUWSBtbGRyICImI3gyMDI2OyI+Cis8IUVOVElUWSBwZXJtaWwgIiYjeDIwMzA7Ij4KKzwh
RU5USVRZIHBlcnRlbmsgIiYjeDIwMzE7Ij4KKzwhRU5USVRZIHByaW1lICImI3gyMDMyOyI+Cis8
IUVOVElUWSBQcmltZSAiJiN4MjAzMzsiPgorPCFFTlRJVFkgdHByaW1lICImI3gyMDM0OyI+Cis8
IUVOVElUWSBicHJpbWUgIiYjeDIwMzU7Ij4KKzwhRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsi
PgorPCFFTlRJVFkgbHNhcXVvICImI3gyMDM5OyI+Cis8IUVOVElUWSByc2FxdW8gIiYjeDIwM0E7
Ij4KKzwhRU5USVRZIG9saW5lICImI3gyMDNFOyI+Cis8IUVOVElUWSBPdmVyQmFyICImI3gyMDNF
OyI+Cis8IUVOVElUWSBjYXJldCAiJiN4MjA0MTsiPgorPCFFTlRJVFkgaHlidWxsICImI3gyMDQz
OyI+Cis8IUVOVElUWSBmcmFzbCAiJiN4MjA0NDsiPgorPCFFTlRJVFkgYnNlbWkgIiYjeDIwNEY7
Ij4KKzwhRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiPgorPCFFTlRJVFkgTWVkaXVtU3BhY2UgIiYj
eDIwNUY7Ij4KKzwhRU5USVRZIFRoaWNrU3BhY2UgIiYjeDIwNUY7JiN4MjAwQTsiPgorPCFFTlRJ
VFkgTm9CcmVhayAiJiN4MjA2MDsiPgorPCFFTlRJVFkgQXBwbHlGdW5jdGlvbiAiJiN4MjA2MTsi
PgorPCFFTlRJVFkgYWYgIiYjeDIwNjE7Ij4KKzwhRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gy
MDYyOyI+Cis8IUVOVElUWSBpdCAiJiN4MjA2MjsiPgorPCFFTlRJVFkgSW52aXNpYmxlQ29tbWEg
IiYjeDIwNjM7Ij4KKzwhRU5USVRZIGljICImI3gyMDYzOyI+Cis8IUVOVElUWSBldXJvICImI3gy
MEFDOyI+Cis8IUVOVElUWSB0ZG90ICImI3gyMERCOyI+Cis8IUVOVElUWSBUcmlwbGVEb3QgIiYj
eDIwREI7Ij4KKzwhRU5USVRZIERvdERvdCAiJiN4MjBEQzsiPgorPCFFTlRJVFkgQ29wZiAiJiN4
MjEwMjsiPgorPCFFTlRJVFkgY29tcGxleGVzICImI3gyMTAyOyI+Cis8IUVOVElUWSBpbmNhcmUg
IiYjeDIxMDU7Ij4KKzwhRU5USVRZIGdzY3IgIiYjeDIxMEE7Ij4KKzwhRU5USVRZIGhhbWlsdCAi
JiN4MjEwQjsiPgorPCFFTlRJVFkgSGlsYmVydFNwYWNlICImI3gyMTBCOyI+Cis8IUVOVElUWSBI
c2NyICImI3gyMTBCOyI+Cis8IUVOVElUWSBIZnIgIiYjeDIxMEM7Ij4KKzwhRU5USVRZIFBvaW5j
YXJlcGxhbmUgIiYjeDIxMEM7Ij4KKzwhRU5USVRZIHF1YXRlcm5pb25zICImI3gyMTBEOyI+Cis8
IUVOVElUWSBIb3BmICImI3gyMTBEOyI+Cis8IUVOVElUWSBwbGFuY2toICImI3gyMTBFOyI+Cis8
IUVOVElUWSBwbGFuY2sgIiYjeDIxMEY7Ij4KKzwhRU5USVRZIGhiYXIgIiYjeDIxMEY7Ij4KKzwh
RU5USVRZIHBsYW5rdiAiJiN4MjEwRjsiPgorPCFFTlRJVFkgaHNsYXNoICImI3gyMTBGOyI+Cis8
IUVOVElUWSBJc2NyICImI3gyMTEwOyI+Cis8IUVOVElUWSBpbWFnbGluZSAiJiN4MjExMDsiPgor
PCFFTlRJVFkgaW1hZ2UgIiYjeDIxMTE7Ij4KKzwhRU5USVRZIEltICImI3gyMTExOyI+Cis8IUVO
VElUWSBpbWFncGFydCAiJiN4MjExMTsiPgorPCFFTlRJVFkgSWZyICImI3gyMTExOyI+Cis8IUVO
VElUWSBMc2NyICImI3gyMTEyOyI+Cis8IUVOVElUWSBsYWdyYW4gIiYjeDIxMTI7Ij4KKzwhRU5U
SVRZIExhcGxhY2V0cmYgIiYjeDIxMTI7Ij4KKzwhRU5USVRZIGVsbCAiJiN4MjExMzsiPgorPCFF
TlRJVFkgTm9wZiAiJiN4MjExNTsiPgorPCFFTlRJVFkgbmF0dXJhbHMgIiYjeDIxMTU7Ij4KKzwh
RU5USVRZIG51bWVybyAiJiN4MjExNjsiPgorPCFFTlRJVFkgY29weXNyICImI3gyMTE3OyI+Cis8
IUVOVElUWSB3ZWllcnAgIiYjeDIxMTg7Ij4KKzwhRU5USVRZIHdwICImI3gyMTE4OyI+Cis8IUVO
VElUWSBQb3BmICImI3gyMTE5OyI+Cis8IUVOVElUWSBwcmltZXMgIiYjeDIxMTk7Ij4KKzwhRU5U
SVRZIHJhdGlvbmFscyAiJiN4MjExQTsiPgorPCFFTlRJVFkgUW9wZiAiJiN4MjExQTsiPgorPCFF
TlRJVFkgUnNjciAiJiN4MjExQjsiPgorPCFFTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiPgorPCFF
TlRJVFkgcmVhbCAiJiN4MjExQzsiPgorPCFFTlRJVFkgUmUgIiYjeDIxMUM7Ij4KKzwhRU5USVRZ
IHJlYWxwYXJ0ICImI3gyMTFDOyI+Cis8IUVOVElUWSBSZnIgIiYjeDIxMUM7Ij4KKzwhRU5USVRZ
IHJlYWxzICImI3gyMTFEOyI+Cis8IUVOVElUWSBSb3BmICImI3gyMTFEOyI+Cis8IUVOVElUWSBy
eCAiJiN4MjExRTsiPgorPCFFTlRJVFkgdHJhZGUgIiYjeDIxMjI7Ij4KKzwhRU5USVRZIFRSQURF
ICImI3gyMTIyOyI+Cis8IUVOVElUWSBpbnRlZ2VycyAiJiN4MjEyNDsiPgorPCFFTlRJVFkgWm9w
ZiAiJiN4MjEyNDsiPgorPCFFTlRJVFkgbWhvICImI3gyMTI3OyI+Cis8IUVOVElUWSBaZnIgIiYj
eDIxMjg7Ij4KKzwhRU5USVRZIHplZXRyZiAiJiN4MjEyODsiPgorPCFFTlRJVFkgaWlvdGEgIiYj
eDIxMjk7Ij4KKzwhRU5USVRZIGJlcm5vdSAiJiN4MjEyQzsiPgorPCFFTlRJVFkgQmVybm91bGxp
cyAiJiN4MjEyQzsiPgorPCFFTlRJVFkgQnNjciAiJiN4MjEyQzsiPgorPCFFTlRJVFkgQ2ZyICIm
I3gyMTJEOyI+Cis8IUVOVElUWSBDYXlsZXlzICImI3gyMTJEOyI+Cis8IUVOVElUWSBlc2NyICIm
I3gyMTJGOyI+Cis8IUVOVElUWSBFc2NyICImI3gyMTMwOyI+Cis8IUVOVElUWSBleHBlY3RhdGlv
biAiJiN4MjEzMDsiPgorPCFFTlRJVFkgRnNjciAiJiN4MjEzMTsiPgorPCFFTlRJVFkgRm91cmll
cnRyZiAiJiN4MjEzMTsiPgorPCFFTlRJVFkgcGhtbWF0ICImI3gyMTMzOyI+Cis8IUVOVElUWSBN
ZWxsaW50cmYgIiYjeDIxMzM7Ij4KKzwhRU5USVRZIE1zY3IgIiYjeDIxMzM7Ij4KKzwhRU5USVRZ
IG9yZGVyICImI3gyMTM0OyI+Cis8IUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyI+Cis8IUVOVElU
WSBvc2NyICImI3gyMTM0OyI+Cis8IUVOVElUWSBhbGVmc3ltICImI3gyMTM1OyI+Cis8IUVOVElU
WSBhbGVwaCAiJiN4MjEzNTsiPgorPCFFTlRJVFkgYmV0aCAiJiN4MjEzNjsiPgorPCFFTlRJVFkg
Z2ltZWwgIiYjeDIxMzc7Ij4KKzwhRU5USVRZIGRhbGV0aCAiJiN4MjEzODsiPgorPCFFTlRJVFkg
Q2FwaXRhbERpZmZlcmVudGlhbEQgIiYjeDIxNDU7Ij4KKzwhRU5USVRZIEREICImI3gyMTQ1OyI+
Cis8IUVOVElUWSBEaWZmZXJlbnRpYWxEICImI3gyMTQ2OyI+Cis8IUVOVElUWSBkZCAiJiN4MjE0
NjsiPgorPCFFTlRJVFkgRXhwb25lbnRpYWxFICImI3gyMTQ3OyI+Cis8IUVOVElUWSBleHBvbmVu
dGlhbGUgIiYjeDIxNDc7Ij4KKzwhRU5USVRZIGVlICImI3gyMTQ3OyI+Cis8IUVOVElUWSBJbWFn
aW5hcnlJICImI3gyMTQ4OyI+Cis8IUVOVElUWSBpaSAiJiN4MjE0ODsiPgorPCFFTlRJVFkgZnJh
YzEzICImI3gyMTUzOyI+Cis8IUVOVElUWSBmcmFjMjMgIiYjeDIxNTQ7Ij4KKzwhRU5USVRZIGZy
YWMxNSAiJiN4MjE1NTsiPgorPCFFTlRJVFkgZnJhYzI1ICImI3gyMTU2OyI+Cis8IUVOVElUWSBm
cmFjMzUgIiYjeDIxNTc7Ij4KKzwhRU5USVRZIGZyYWM0NSAiJiN4MjE1ODsiPgorPCFFTlRJVFkg
ZnJhYzE2ICImI3gyMTU5OyI+Cis8IUVOVElUWSBmcmFjNTYgIiYjeDIxNUE7Ij4KKzwhRU5USVRZ
IGZyYWMxOCAiJiN4MjE1QjsiPgorPCFFTlRJVFkgZnJhYzM4ICImI3gyMTVDOyI+Cis8IUVOVElU
WSBmcmFjNTggIiYjeDIxNUQ7Ij4KKzwhRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiPgorPCFFTlRJ
VFkgbGFyciAiJiN4MjE5MDsiPgorPCFFTlRJVFkgbGVmdGFycm93ICImI3gyMTkwOyI+Cis8IUVO
VElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KKzwhRU5USVRZIHNsYXJyICImI3gyMTkwOyI+Cis8
IUVOVElUWSBTaG9ydExlZnRBcnJvdyAiJiN4MjE5MDsiPgorPCFFTlRJVFkgdWFyciAiJiN4MjE5
MTsiPgorPCFFTlRJVFkgdXBhcnJvdyAiJiN4MjE5MTsiPgorPCFFTlRJVFkgVXBBcnJvdyAiJiN4
MjE5MTsiPgorPCFFTlRJVFkgU2hvcnRVcEFycm93ICImI3gyMTkxOyI+Cis8IUVOVElUWSByYXJy
ICImI3gyMTkyOyI+Cis8IUVOVElUWSByaWdodGFycm93ICImI3gyMTkyOyI+Cis8IUVOVElUWSBS
aWdodEFycm93ICImI3gyMTkyOyI+Cis8IUVOVElUWSBzcmFyciAiJiN4MjE5MjsiPgorPCFFTlRJ
VFkgU2hvcnRSaWdodEFycm93ICImI3gyMTkyOyI+Cis8IUVOVElUWSBkYXJyICImI3gyMTkzOyI+
Cis8IUVOVElUWSBkb3duYXJyb3cgIiYjeDIxOTM7Ij4KKzwhRU5USVRZIERvd25BcnJvdyAiJiN4
MjE5MzsiPgorPCFFTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ij4KKzwhRU5USVRZIGhh
cnIgIiYjeDIxOTQ7Ij4KKzwhRU5USVRZIGxlZnRyaWdodGFycm93ICImI3gyMTk0OyI+Cis8IUVO
VElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiPgorPCFFTlRJVFkgdmFyciAiJiN4MjE5NTsi
PgorPCFFTlRJVFkgdXBkb3duYXJyb3cgIiYjeDIxOTU7Ij4KKzwhRU5USVRZIFVwRG93bkFycm93
ICImI3gyMTk1OyI+Cis8IUVOVElUWSBud2FyciAiJiN4MjE5NjsiPgorPCFFTlRJVFkgVXBwZXJM
ZWZ0QXJyb3cgIiYjeDIxOTY7Ij4KKzwhRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ij4KKzwhRU5U
SVRZIG5lYXJyICImI3gyMTk3OyI+Cis8IUVOVElUWSBVcHBlclJpZ2h0QXJyb3cgIiYjeDIxOTc7
Ij4KKzwhRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ij4KKzwhRU5USVRZIHNlYXJyICImI3gyMTk4
OyI+Cis8IUVOVElUWSBzZWFycm93ICImI3gyMTk4OyI+Cis8IUVOVElUWSBMb3dlclJpZ2h0QXJy
b3cgIiYjeDIxOTg7Ij4KKzwhRU5USVRZIHN3YXJyICImI3gyMTk5OyI+Cis8IUVOVElUWSBzd2Fy
cm93ICImI3gyMTk5OyI+Cis8IUVOVElUWSBMb3dlckxlZnRBcnJvdyAiJiN4MjE5OTsiPgorPCFF
TlRJVFkgbmxhcnIgIiYjeDIxOUE7Ij4KKzwhRU5USVRZIG5sZWZ0YXJyb3cgIiYjeDIxOUE7Ij4K
KzwhRU5USVRZIG5yYXJyICImI3gyMTlCOyI+Cis8IUVOVElUWSBucmlnaHRhcnJvdyAiJiN4MjE5
QjsiPgorPCFFTlRJVFkgcmFycncgIiYjeDIxOUQ7Ij4KKzwhRU5USVRZIHJpZ2h0c3F1aWdhcnJv
dyAiJiN4MjE5RDsiPgorPCFFTlRJVFkgbnJhcnJ3ICImI3gyMTlEOyYjeDMzODsiPgorPCFFTlRJ
VFkgTGFyciAiJiN4MjE5RTsiPgorPCFFTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4MjE5RTsi
PgorPCFFTlRJVFkgVWFyciAiJiN4MjE5RjsiPgorPCFFTlRJVFkgUmFyciAiJiN4MjFBMDsiPgor
PCFFTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ij4KKzwhRU5USVRZIERhcnIgIiYj
eDIxQTE7Ij4KKzwhRU5USVRZIGxhcnJ0bCAiJiN4MjFBMjsiPgorPCFFTlRJVFkgbGVmdGFycm93
dGFpbCAiJiN4MjFBMjsiPgorPCFFTlRJVFkgcmFycnRsICImI3gyMUEzOyI+Cis8IUVOVElUWSBy
aWdodGFycm93dGFpbCAiJiN4MjFBMzsiPgorPCFFTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0
OyI+Cis8IUVOVElUWSBtYXBzdG9sZWZ0ICImI3gyMUE0OyI+Cis8IUVOVElUWSBVcFRlZUFycm93
ICImI3gyMUE1OyI+Cis8IUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiPgorPCFFTlRJVFkgbWFw
ICImI3gyMUE2OyI+Cis8IUVOVElUWSBSaWdodFRlZUFycm93ICImI3gyMUE2OyI+Cis8IUVOVElU
WSBtYXBzdG8gIiYjeDIxQTY7Ij4KKzwhRU5USVRZIERvd25UZWVBcnJvdyAiJiN4MjFBNzsiPgor
PCFFTlRJVFkgbWFwc3RvZG93biAiJiN4MjFBNzsiPgorPCFFTlRJVFkgbGFycmhrICImI3gyMUE5
OyI+Cis8IUVOVElUWSBob29rbGVmdGFycm93ICImI3gyMUE5OyI+Cis8IUVOVElUWSByYXJyaGsg
IiYjeDIxQUE7Ij4KKzwhRU5USVRZIGhvb2tyaWdodGFycm93ICImI3gyMUFBOyI+Cis8IUVOVElU
WSBsYXJybHAgIiYjeDIxQUI7Ij4KKzwhRU5USVRZIGxvb3BhcnJvd2xlZnQgIiYjeDIxQUI7Ij4K
KzwhRU5USVRZIHJhcnJscCAiJiN4MjFBQzsiPgorPCFFTlRJVFkgbG9vcGFycm93cmlnaHQgIiYj
eDIxQUM7Ij4KKzwhRU5USVRZIGhhcnJ3ICImI3gyMUFEOyI+Cis8IUVOVElUWSBsZWZ0cmlnaHRz
cXVpZ2Fycm93ICImI3gyMUFEOyI+Cis8IUVOVElUWSBuaGFyciAiJiN4MjFBRTsiPgorPCFFTlRJ
VFkgbmxlZnRyaWdodGFycm93ICImI3gyMUFFOyI+Cis8IUVOVElUWSBsc2ggIiYjeDIxQjA7Ij4K
KzwhRU5USVRZIExzaCAiJiN4MjFCMDsiPgorPCFFTlRJVFkgcnNoICImI3gyMUIxOyI+Cis8IUVO
VElUWSBSc2ggIiYjeDIxQjE7Ij4KKzwhRU5USVRZIGxkc2ggIiYjeDIxQjI7Ij4KKzwhRU5USVRZ
IHJkc2ggIiYjeDIxQjM7Ij4KKzwhRU5USVRZIGNyYXJyICImI3gyMUI1OyI+Cis8IUVOVElUWSBj
dWxhcnIgIiYjeDIxQjY7Ij4KKzwhRU5USVRZIGN1cnZlYXJyb3dsZWZ0ICImI3gyMUI2OyI+Cis8
IUVOVElUWSBjdXJhcnIgIiYjeDIxQjc7Ij4KKzwhRU5USVRZIGN1cnZlYXJyb3dyaWdodCAiJiN4
MjFCNzsiPgorPCFFTlRJVFkgb2xhcnIgIiYjeDIxQkE7Ij4KKzwhRU5USVRZIGNpcmNsZWFycm93
bGVmdCAiJiN4MjFCQTsiPgorPCFFTlRJVFkgb3JhcnIgIiYjeDIxQkI7Ij4KKzwhRU5USVRZIGNp
cmNsZWFycm93cmlnaHQgIiYjeDIxQkI7Ij4KKzwhRU5USVRZIGxoYXJ1ICImI3gyMUJDOyI+Cis8
IUVOVElUWSBMZWZ0VmVjdG9yICImI3gyMUJDOyI+Cis8IUVOVElUWSBsZWZ0aGFycG9vbnVwICIm
I3gyMUJDOyI+Cis8IUVOVElUWSBsaGFyZCAiJiN4MjFCRDsiPgorPCFFTlRJVFkgbGVmdGhhcnBv
b25kb3duICImI3gyMUJEOyI+Cis8IUVOVElUWSBEb3duTGVmdFZlY3RvciAiJiN4MjFCRDsiPgor
PCFFTlRJVFkgdWhhcnIgIiYjeDIxQkU7Ij4KKzwhRU5USVRZIHVwaGFycG9vbnJpZ2h0ICImI3gy
MUJFOyI+Cis8IUVOVElUWSBSaWdodFVwVmVjdG9yICImI3gyMUJFOyI+Cis8IUVOVElUWSB1aGFy
bCAiJiN4MjFCRjsiPgorPCFFTlRJVFkgdXBoYXJwb29ubGVmdCAiJiN4MjFCRjsiPgorPCFFTlRJ
VFkgTGVmdFVwVmVjdG9yICImI3gyMUJGOyI+Cis8IUVOVElUWSByaGFydSAiJiN4MjFDMDsiPgor
PCFFTlRJVFkgUmlnaHRWZWN0b3IgIiYjeDIxQzA7Ij4KKzwhRU5USVRZIHJpZ2h0aGFycG9vbnVw
ICImI3gyMUMwOyI+Cis8IUVOVElUWSByaGFyZCAiJiN4MjFDMTsiPgorPCFFTlRJVFkgcmlnaHRo
YXJwb29uZG93biAiJiN4MjFDMTsiPgorPCFFTlRJVFkgRG93blJpZ2h0VmVjdG9yICImI3gyMUMx
OyI+Cis8IUVOVElUWSBkaGFyciAiJiN4MjFDMjsiPgorPCFFTlRJVFkgUmlnaHREb3duVmVjdG9y
ICImI3gyMUMyOyI+Cis8IUVOVElUWSBkb3duaGFycG9vbnJpZ2h0ICImI3gyMUMyOyI+Cis8IUVO
VElUWSBkaGFybCAiJiN4MjFDMzsiPgorPCFFTlRJVFkgTGVmdERvd25WZWN0b3IgIiYjeDIxQzM7
Ij4KKzwhRU5USVRZIGRvd25oYXJwb29ubGVmdCAiJiN4MjFDMzsiPgorPCFFTlRJVFkgcmxhcnIg
IiYjeDIxQzQ7Ij4KKzwhRU5USVRZIHJpZ2h0bGVmdGFycm93cyAiJiN4MjFDNDsiPgorPCFFTlRJ
VFkgUmlnaHRBcnJvd0xlZnRBcnJvdyAiJiN4MjFDNDsiPgorPCFFTlRJVFkgdWRhcnIgIiYjeDIx
QzU7Ij4KKzwhRU5USVRZIFVwQXJyb3dEb3duQXJyb3cgIiYjeDIxQzU7Ij4KKzwhRU5USVRZIGxy
YXJyICImI3gyMUM2OyI+Cis8IUVOVElUWSBsZWZ0cmlnaHRhcnJvd3MgIiYjeDIxQzY7Ij4KKzwh
RU5USVRZIExlZnRBcnJvd1JpZ2h0QXJyb3cgIiYjeDIxQzY7Ij4KKzwhRU5USVRZIGxsYXJyICIm
I3gyMUM3OyI+Cis8IUVOVElUWSBsZWZ0bGVmdGFycm93cyAiJiN4MjFDNzsiPgorPCFFTlRJVFkg
dXVhcnIgIiYjeDIxQzg7Ij4KKzwhRU5USVRZIHVwdXBhcnJvd3MgIiYjeDIxQzg7Ij4KKzwhRU5U
SVRZIHJyYXJyICImI3gyMUM5OyI+Cis8IUVOVElUWSByaWdodHJpZ2h0YXJyb3dzICImI3gyMUM5
OyI+Cis8IUVOVElUWSBkZGFyciAiJiN4MjFDQTsiPgorPCFFTlRJVFkgZG93bmRvd25hcnJvd3Mg
IiYjeDIxQ0E7Ij4KKzwhRU5USVRZIGxyaGFyICImI3gyMUNCOyI+Cis8IUVOVElUWSBSZXZlcnNl
RXF1aWxpYnJpdW0gIiYjeDIxQ0I7Ij4KKzwhRU5USVRZIGxlZnRyaWdodGhhcnBvb25zICImI3gy
MUNCOyI+Cis8IUVOVElUWSBybGhhciAiJiN4MjFDQzsiPgorPCFFTlRJVFkgcmlnaHRsZWZ0aGFy
cG9vbnMgIiYjeDIxQ0M7Ij4KKzwhRU5USVRZIEVxdWlsaWJyaXVtICImI3gyMUNDOyI+Cis8IUVO
VElUWSBubEFyciAiJiN4MjFDRDsiPgorPCFFTlRJVFkgbkxlZnRhcnJvdyAiJiN4MjFDRDsiPgor
PCFFTlRJVFkgbmhBcnIgIiYjeDIxQ0U7Ij4KKzwhRU5USVRZIG5MZWZ0cmlnaHRhcnJvdyAiJiN4
MjFDRTsiPgorPCFFTlRJVFkgbnJBcnIgIiYjeDIxQ0Y7Ij4KKzwhRU5USVRZIG5SaWdodGFycm93
ICImI3gyMUNGOyI+Cis8IUVOVElUWSBsQXJyICImI3gyMUQwOyI+Cis8IUVOVElUWSBMZWZ0YXJy
b3cgIiYjeDIxRDA7Ij4KKzwhRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiPgorPCFF
TlRJVFkgdUFyciAiJiN4MjFEMTsiPgorPCFFTlRJVFkgVXBhcnJvdyAiJiN4MjFEMTsiPgorPCFF
TlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiPgorPCFFTlRJVFkgckFyciAiJiN4MjFEMjsi
PgorPCFFTlRJVFkgUmlnaHRhcnJvdyAiJiN4MjFEMjsiPgorPCFFTlRJVFkgSW1wbGllcyAiJiN4
MjFEMjsiPgorPCFFTlRJVFkgRG91YmxlUmlnaHRBcnJvdyAiJiN4MjFEMjsiPgorPCFFTlRJVFkg
ZEFyciAiJiN4MjFEMzsiPgorPCFFTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyI+Cis8IUVOVElU
WSBEb3VibGVEb3duQXJyb3cgIiYjeDIxRDM7Ij4KKzwhRU5USVRZIGhBcnIgIiYjeDIxRDQ7Ij4K
KzwhRU5USVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyI+Cis8IUVOVElUWSBEb3VibGVMZWZ0
UmlnaHRBcnJvdyAiJiN4MjFENDsiPgorPCFFTlRJVFkgaWZmICImI3gyMUQ0OyI+Cis8IUVOVElU
WSB2QXJyICImI3gyMUQ1OyI+Cis8IUVOVElUWSBVcGRvd25hcnJvdyAiJiN4MjFENTsiPgorPCFF
TlRJVFkgRG91YmxlVXBEb3duQXJyb3cgIiYjeDIxRDU7Ij4KKzwhRU5USVRZIG53QXJyICImI3gy
MUQ2OyI+Cis8IUVOVElUWSBuZUFyciAiJiN4MjFENzsiPgorPCFFTlRJVFkgc2VBcnIgIiYjeDIx
RDg7Ij4KKzwhRU5USVRZIHN3QXJyICImI3gyMUQ5OyI+Cis8IUVOVElUWSBsQWFyciAiJiN4MjFE
QTsiPgorPCFFTlRJVFkgTGxlZnRhcnJvdyAiJiN4MjFEQTsiPgorPCFFTlRJVFkgckFhcnIgIiYj
eDIxREI7Ij4KKzwhRU5USVRZIFJyaWdodGFycm93ICImI3gyMURCOyI+Cis8IUVOVElUWSB6aWdy
YXJyICImI3gyMUREOyI+Cis8IUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiPgorPCFFTlRJVFkgTGVm
dEFycm93QmFyICImI3gyMUU0OyI+Cis8IUVOVElUWSByYXJyYiAiJiN4MjFFNTsiPgorPCFFTlRJ
VFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiPgorPCFFTlRJVFkgZHVhcnIgIiYjeDIxRjU7Ij4K
KzwhRU5USVRZIERvd25BcnJvd1VwQXJyb3cgIiYjeDIxRjU7Ij4KKzwhRU5USVRZIGxvYXJyICIm
I3gyMUZEOyI+Cis8IUVOVElUWSByb2FyciAiJiN4MjFGRTsiPgorPCFFTlRJVFkgaG9hcnIgIiYj
eDIxRkY7Ij4KKzwhRU5USVRZIGZvcmFsbCAiJiN4MjIwMDsiPgorPCFFTlRJVFkgRm9yQWxsICIm
I3gyMjAwOyI+Cis8IUVOVElUWSBjb21wICImI3gyMjAxOyI+Cis8IUVOVElUWSBjb21wbGVtZW50
ICImI3gyMjAxOyI+Cis8IUVOVElUWSBwYXJ0ICImI3gyMjAyOyI+Cis8IUVOVElUWSBQYXJ0aWFs
RCAiJiN4MjIwMjsiPgorPCFFTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyI+Cis8IUVOVElU
WSBleGlzdCAiJiN4MjIwMzsiPgorPCFFTlRJVFkgRXhpc3RzICImI3gyMjAzOyI+Cis8IUVOVElU
WSBuZXhpc3QgIiYjeDIyMDQ7Ij4KKzwhRU5USVRZIE5vdEV4aXN0cyAiJiN4MjIwNDsiPgorPCFF
TlRJVFkgbmV4aXN0cyAiJiN4MjIwNDsiPgorPCFFTlRJVFkgZW1wdHkgIiYjeDIyMDU7Ij4KKzwh
RU5USVRZIGVtcHR5c2V0ICImI3gyMjA1OyI+Cis8IUVOVElUWSBlbXB0eXYgIiYjeDIyMDU7Ij4K
KzwhRU5USVRZIHZhcm5vdGhpbmcgIiYjeDIyMDU7Ij4KKzwhRU5USVRZIG5hYmxhICImI3gyMjA3
OyI+Cis8IUVOVElUWSBEZWwgIiYjeDIyMDc7Ij4KKzwhRU5USVRZIGlzaW4gIiYjeDIyMDg7Ij4K
KzwhRU5USVRZIGlzaW52ICImI3gyMjA4OyI+Cis8IUVOVElUWSBFbGVtZW50ICImI3gyMjA4OyI+
Cis8IUVOVElUWSBpbiAiJiN4MjIwODsiPgorPCFFTlRJVFkgbm90aW4gIiYjeDIyMDk7Ij4KKzwh
RU5USVRZIE5vdEVsZW1lbnQgIiYjeDIyMDk7Ij4KKzwhRU5USVRZIG5vdGludmEgIiYjeDIyMDk7
Ij4KKzwhRU5USVRZIG5pdiAiJiN4MjIwQjsiPgorPCFFTlRJVFkgUmV2ZXJzZUVsZW1lbnQgIiYj
eDIyMEI7Ij4KKzwhRU5USVRZIG5pICImI3gyMjBCOyI+Cis8IUVOVElUWSBTdWNoVGhhdCAiJiN4
MjIwQjsiPgorPCFFTlRJVFkgbm90bmkgIiYjeDIyMEM7Ij4KKzwhRU5USVRZIG5vdG5pdmEgIiYj
eDIyMEM7Ij4KKzwhRU5USVRZIE5vdFJldmVyc2VFbGVtZW50ICImI3gyMjBDOyI+Cis8IUVOVElU
WSBwcm9kICImI3gyMjBGOyI+Cis8IUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyI+Cis8IUVOVElU
WSBjb3Byb2QgIiYjeDIyMTA7Ij4KKzwhRU5USVRZIENvcHJvZHVjdCAiJiN4MjIxMDsiPgorPCFF
TlRJVFkgc3VtICImI3gyMjExOyI+Cis8IUVOVElUWSBTdW0gIiYjeDIyMTE7Ij4KKzwhRU5USVRZ
IG1pbnVzICImI3gyMjEyOyI+Cis8IUVOVElUWSBtbnBsdXMgIiYjeDIyMTM7Ij4KKzwhRU5USVRZ
IG1wICImI3gyMjEzOyI+Cis8IUVOVElUWSBNaW51c1BsdXMgIiYjeDIyMTM7Ij4KKzwhRU5USVRZ
IHBsdXNkbyAiJiN4MjIxNDsiPgorPCFFTlRJVFkgZG90cGx1cyAiJiN4MjIxNDsiPgorPCFFTlRJ
VFkgc2V0bW4gIiYjeDIyMTY7Ij4KKzwhRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyI+Cis8IUVO
VElUWSBCYWNrc2xhc2ggIiYjeDIyMTY7Ij4KKzwhRU5USVRZIHNzZXRtbiAiJiN4MjIxNjsiPgor
PCFFTlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiPgorPCFFTlRJVFkgbG93YXN0ICImI3gy
MjE3OyI+Cis8IUVOVElUWSBjb21wZm4gIiYjeDIyMTg7Ij4KKzwhRU5USVRZIFNtYWxsQ2lyY2xl
ICImI3gyMjE4OyI+Cis8IUVOVElUWSByYWRpYyAiJiN4MjIxQTsiPgorPCFFTlRJVFkgU3FydCAi
JiN4MjIxQTsiPgorPCFFTlRJVFkgcHJvcCAiJiN4MjIxRDsiPgorPCFFTlRJVFkgcHJvcHRvICIm
I3gyMjFEOyI+Cis8IUVOVElUWSBQcm9wb3J0aW9uYWwgIiYjeDIyMUQ7Ij4KKzwhRU5USVRZIHZw
cm9wICImI3gyMjFEOyI+Cis8IUVOVElUWSB2YXJwcm9wdG8gIiYjeDIyMUQ7Ij4KKzwhRU5USVRZ
IGluZmluICImI3gyMjFFOyI+Cis8IUVOVElUWSBhbmdydCAiJiN4MjIxRjsiPgorPCFFTlRJVFkg
YW5nICImI3gyMjIwOyI+Cis8IUVOVElUWSBhbmdsZSAiJiN4MjIyMDsiPgorPCFFTlRJVFkgbmFu
ZyAiJiN4MjIyMDsmI3gyMEQyOyI+Cis8IUVOVElUWSBhbmdtc2QgIiYjeDIyMjE7Ij4KKzwhRU5U
SVRZIG1lYXN1cmVkYW5nbGUgIiYjeDIyMjE7Ij4KKzwhRU5USVRZIGFuZ3NwaCAiJiN4MjIyMjsi
PgorPCFFTlRJVFkgbWlkICImI3gyMjIzOyI+Cis8IUVOVElUWSBWZXJ0aWNhbEJhciAiJiN4MjIy
MzsiPgorPCFFTlRJVFkgc21pZCAiJiN4MjIyMzsiPgorPCFFTlRJVFkgc2hvcnRtaWQgIiYjeDIy
MjM7Ij4KKzwhRU5USVRZIG5taWQgIiYjeDIyMjQ7Ij4KKzwhRU5USVRZIE5vdFZlcnRpY2FsQmFy
ICImI3gyMjI0OyI+Cis8IUVOVElUWSBuc21pZCAiJiN4MjIyNDsiPgorPCFFTlRJVFkgbnNob3J0
bWlkICImI3gyMjI0OyI+Cis8IUVOVElUWSBwYXIgIiYjeDIyMjU7Ij4KKzwhRU5USVRZIHBhcmFs
bGVsICImI3gyMjI1OyI+Cis8IUVOVElUWSBEb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNTsiPgor
PCFFTlRJVFkgc3BhciAiJiN4MjIyNTsiPgorPCFFTlRJVFkgc2hvcnRwYXJhbGxlbCAiJiN4MjIy
NTsiPgorPCFFTlRJVFkgbnBhciAiJiN4MjIyNjsiPgorPCFFTlRJVFkgbnBhcmFsbGVsICImI3gy
MjI2OyI+Cis8IUVOVElUWSBOb3REb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNjsiPgorPCFFTlRJ
VFkgbnNwYXIgIiYjeDIyMjY7Ij4KKzwhRU5USVRZIG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyI+
Cis8IUVOVElUWSBhbmQgIiYjeDIyMjc7Ij4KKzwhRU5USVRZIHdlZGdlICImI3gyMjI3OyI+Cis8
IUVOVElUWSBvciAiJiN4MjIyODsiPgorPCFFTlRJVFkgdmVlICImI3gyMjI4OyI+Cis8IUVOVElU
WSBjYXAgIiYjeDIyMjk7Ij4KKzwhRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiPgorPCFF
TlRJVFkgY3VwICImI3gyMjJBOyI+Cis8IUVOVElUWSBjdXBzICImI3gyMjJBOyYjeEZFMDA7Ij4K
KzwhRU5USVRZIGludCAiJiN4MjIyQjsiPgorPCFFTlRJVFkgSW50ZWdyYWwgIiYjeDIyMkI7Ij4K
KzwhRU5USVRZIEludCAiJiN4MjIyQzsiPgorPCFFTlRJVFkgdGludCAiJiN4MjIyRDsiPgorPCFF
TlRJVFkgaWlpbnQgIiYjeDIyMkQ7Ij4KKzwhRU5USVRZIGNvbmludCAiJiN4MjIyRTsiPgorPCFF
TlRJVFkgb2ludCAiJiN4MjIyRTsiPgorPCFFTlRJVFkgQ29udG91ckludGVncmFsICImI3gyMjJF
OyI+Cis8IUVOVElUWSBDb25pbnQgIiYjeDIyMkY7Ij4KKzwhRU5USVRZIERvdWJsZUNvbnRvdXJJ
bnRlZ3JhbCAiJiN4MjIyRjsiPgorPCFFTlRJVFkgQ2NvbmludCAiJiN4MjIzMDsiPgorPCFFTlRJ
VFkgY3dpbnQgIiYjeDIyMzE7Ij4KKzwhRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyI+Cis8IUVO
VElUWSBDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgIiYjeDIyMzI7Ij4KKzwhRU5USVRZIGF3Y29u
aW50ICImI3gyMjMzOyI+Cis8IUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFs
ICImI3gyMjMzOyI+Cis8IUVOVElUWSB0aGVyZTQgIiYjeDIyMzQ7Ij4KKzwhRU5USVRZIHRoZXJl
Zm9yZSAiJiN4MjIzNDsiPgorPCFFTlRJVFkgVGhlcmVmb3JlICImI3gyMjM0OyI+Cis8IUVOVElU
WSBiZWNhdXMgIiYjeDIyMzU7Ij4KKzwhRU5USVRZIGJlY2F1c2UgIiYjeDIyMzU7Ij4KKzwhRU5U
SVRZIEJlY2F1c2UgIiYjeDIyMzU7Ij4KKzwhRU5USVRZIHJhdGlvICImI3gyMjM2OyI+Cis8IUVO
VElUWSBDb2xvbiAiJiN4MjIzNzsiPgorPCFFTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiPgor
PCFFTlRJVFkgbWludXNkICImI3gyMjM4OyI+Cis8IUVOVElUWSBkb3RtaW51cyAiJiN4MjIzODsi
PgorPCFFTlRJVFkgbUREb3QgIiYjeDIyM0E7Ij4KKzwhRU5USVRZIGhvbXRodCAiJiN4MjIzQjsi
PgorPCFFTlRJVFkgc2ltICImI3gyMjNDOyI+Cis8IUVOVElUWSBUaWxkZSAiJiN4MjIzQzsiPgor
PCFFTlRJVFkgdGhrc2ltICImI3gyMjNDOyI+Cis8IUVOVElUWSB0aGlja3NpbSAiJiN4MjIzQzsi
PgorPCFFTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBEMjsiPgorPCFFTlRJVFkgYnNpbSAiJiN4
MjIzRDsiPgorPCFFTlRJVFkgYmFja3NpbSAiJiN4MjIzRDsiPgorPCFFTlRJVFkgcmFjZSAiJiN4
MjIzRDsmI3gzMzE7Ij4KKzwhRU5USVRZIGFjICImI3gyMjNFOyI+Cis8IUVOVElUWSBtc3Rwb3Mg
IiYjeDIyM0U7Ij4KKzwhRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ij4KKzwhRU5USVRZIGFj
ZCAiJiN4MjIzRjsiPgorPCFFTlRJVFkgd3JlYXRoICImI3gyMjQwOyI+Cis8IUVOVElUWSBWZXJ0
aWNhbFRpbGRlICImI3gyMjQwOyI+Cis8IUVOVElUWSB3ciAiJiN4MjI0MDsiPgorPCFFTlRJVFkg
bnNpbSAiJiN4MjI0MTsiPgorPCFFTlRJVFkgTm90VGlsZGUgIiYjeDIyNDE7Ij4KKzwhRU5USVRZ
IGVzaW0gIiYjeDIyNDI7Ij4KKzwhRU5USVRZIEVxdWFsVGlsZGUgIiYjeDIyNDI7Ij4KKzwhRU5U
SVRZIGVxc2ltICImI3gyMjQyOyI+Cis8IUVOVElUWSBOb3RFcXVhbFRpbGRlICImI3gyMjQyOyYj
eDMzODsiPgorPCFFTlRJVFkgbmVzaW0gIiYjeDIyNDI7JiN4MzM4OyI+Cis8IUVOVElUWSBzaW1l
ICImI3gyMjQzOyI+Cis8IUVOVElUWSBUaWxkZUVxdWFsICImI3gyMjQzOyI+Cis8IUVOVElUWSBz
aW1lcSAiJiN4MjI0MzsiPgorPCFFTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ij4KKzwhRU5USVRZIG5z
aW1lcSAiJiN4MjI0NDsiPgorPCFFTlRJVFkgTm90VGlsZGVFcXVhbCAiJiN4MjI0NDsiPgorPCFF
TlRJVFkgY29uZyAiJiN4MjI0NTsiPgorPCFFTlRJVFkgVGlsZGVGdWxsRXF1YWwgIiYjeDIyNDU7
Ij4KKzwhRU5USVRZIHNpbW5lICImI3gyMjQ2OyI+Cis8IUVOVElUWSBuY29uZyAiJiN4MjI0Nzsi
PgorPCFFTlRJVFkgTm90VGlsZGVGdWxsRXF1YWwgIiYjeDIyNDc7Ij4KKzwhRU5USVRZIGFzeW1w
ICImI3gyMjQ4OyI+Cis8IUVOVElUWSBhcCAiJiN4MjI0ODsiPgorPCFFTlRJVFkgVGlsZGVUaWxk
ZSAiJiN4MjI0ODsiPgorPCFFTlRJVFkgYXBwcm94ICImI3gyMjQ4OyI+Cis8IUVOVElUWSB0aGth
cCAiJiN4MjI0ODsiPgorPCFFTlRJVFkgdGhpY2thcHByb3ggIiYjeDIyNDg7Ij4KKzwhRU5USVRZ
IG5hcCAiJiN4MjI0OTsiPgorPCFFTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiPgorPCFF
TlRJVFkgbmFwcHJveCAiJiN4MjI0OTsiPgorPCFFTlRJVFkgYXBlICImI3gyMjRBOyI+Cis8IUVO
VElUWSBhcHByb3hlcSAiJiN4MjI0QTsiPgorPCFFTlRJVFkgYXBpZCAiJiN4MjI0QjsiPgorPCFF
TlRJVFkgbmFwaWQgIiYjeDIyNEI7JiN4MzM4OyI+Cis8IUVOVElUWSBiY29uZyAiJiN4MjI0Qzsi
PgorPCFFTlRJVFkgYmFja2NvbmcgIiYjeDIyNEM7Ij4KKzwhRU5USVRZIGFzeW1wZXEgIiYjeDIy
NEQ7Ij4KKzwhRU5USVRZIEN1cENhcCAiJiN4MjI0RDsiPgorPCFFTlRJVFkgbnZhcCAiJiN4MjI0
RDsmI3gyMEQyOyI+Cis8IUVOVElUWSBidW1wICImI3gyMjRFOyI+Cis8IUVOVElUWSBIdW1wRG93
bkh1bXAgIiYjeDIyNEU7Ij4KKzwhRU5USVRZIEJ1bXBlcSAiJiN4MjI0RTsiPgorPCFFTlRJVFkg
Tm90SHVtcERvd25IdW1wICImI3gyMjRFOyYjeDMzODsiPgorPCFFTlRJVFkgbmJ1bXAgIiYjeDIy
NEU7JiN4MzM4OyI+Cis8IUVOVElUWSBidW1wZSAiJiN4MjI0RjsiPgorPCFFTlRJVFkgSHVtcEVx
dWFsICImI3gyMjRGOyI+Cis8IUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ij4KKzwhRU5USVRZIG5i
dW1wZSAiJiN4MjI0RjsmI3gzMzg7Ij4KKzwhRU5USVRZIE5vdEh1bXBFcXVhbCAiJiN4MjI0Rjsm
I3gzMzg7Ij4KKzwhRU5USVRZIGVzZG90ICImI3gyMjUwOyI+Cis8IUVOVElUWSBEb3RFcXVhbCAi
JiN4MjI1MDsiPgorPCFFTlRJVFkgZG90ZXEgIiYjeDIyNTA7Ij4KKzwhRU5USVRZIG5lZG90ICIm
I3gyMjUwOyYjeDMzODsiPgorPCFFTlRJVFkgZURvdCAiJiN4MjI1MTsiPgorPCFFTlRJVFkgZG90
ZXFkb3QgIiYjeDIyNTE7Ij4KKzwhRU5USVRZIGVmRG90ICImI3gyMjUyOyI+Cis8IUVOVElUWSBm
YWxsaW5nZG90c2VxICImI3gyMjUyOyI+Cis8IUVOVElUWSBlckRvdCAiJiN4MjI1MzsiPgorPCFF
TlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyI+Cis8IUVOVElUWSBjb2xvbmUgIiYjeDIyNTQ7
Ij4KKzwhRU5USVRZIGNvbG9uZXEgIiYjeDIyNTQ7Ij4KKzwhRU5USVRZIEFzc2lnbiAiJiN4MjI1
NDsiPgorPCFFTlRJVFkgZWNvbG9uICImI3gyMjU1OyI+Cis8IUVOVElUWSBlcWNvbG9uICImI3gy
MjU1OyI+Cis8IUVOVElUWSBlY2lyICImI3gyMjU2OyI+Cis8IUVOVElUWSBlcWNpcmMgIiYjeDIy
NTY7Ij4KKzwhRU5USVRZIGNpcmUgIiYjeDIyNTc7Ij4KKzwhRU5USVRZIGNpcmNlcSAiJiN4MjI1
NzsiPgorPCFFTlRJVFkgd2VkZ2VxICImI3gyMjU5OyI+Cis8IUVOVElUWSB2ZWVlcSAiJiN4MjI1
QTsiPgorPCFFTlRJVFkgdHJpZSAiJiN4MjI1QzsiPgorPCFFTlRJVFkgdHJpYW5nbGVxICImI3gy
MjVDOyI+Cis8IUVOVElUWSBlcXVlc3QgIiYjeDIyNUY7Ij4KKzwhRU5USVRZIHF1ZXN0ZXEgIiYj
eDIyNUY7Ij4KKzwhRU5USVRZIG5lICImI3gyMjYwOyI+Cis8IUVOVElUWSBOb3RFcXVhbCAiJiN4
MjI2MDsiPgorPCFFTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ij4KKzwhRU5USVRZIENvbmdydWVudCAi
JiN4MjI2MTsiPgorPCFFTlRJVFkgYm5lcXVpdiAiJiN4MjI2MTsmI3gyMEU1OyI+Cis8IUVOVElU
WSBuZXF1aXYgIiYjeDIyNjI7Ij4KKzwhRU5USVRZIE5vdENvbmdydWVudCAiJiN4MjI2MjsiPgor
PCFFTlRJVFkgbGUgIiYjeDIyNjQ7Ij4KKzwhRU5USVRZIGxlcSAiJiN4MjI2NDsiPgorPCFFTlRJ
VFkgbnZsZSAiJiN4MjI2NDsmI3gyMEQyOyI+Cis8IUVOVElUWSBnZSAiJiN4MjI2NTsiPgorPCFF
TlRJVFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyI+Cis8IUVOVElUWSBnZXEgIiYjeDIyNjU7Ij4K
KzwhRU5USVRZIG52Z2UgIiYjeDIyNjU7JiN4MjBEMjsiPgorPCFFTlRJVFkgbEUgIiYjeDIyNjY7
Ij4KKzwhRU5USVRZIExlc3NGdWxsRXF1YWwgIiYjeDIyNjY7Ij4KKzwhRU5USVRZIGxlcXEgIiYj
eDIyNjY7Ij4KKzwhRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gzMzg7Ij4KKzwhRU5USVRZIG5sZXFx
ICImI3gyMjY2OyYjeDMzODsiPgorPCFFTlRJVFkgZ0UgIiYjeDIyNjc7Ij4KKzwhRU5USVRZIEdy
ZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7Ij4KKzwhRU5USVRZIGdlcXEgIiYjeDIyNjc7Ij4KKzwh
RU5USVRZIG5nRSAiJiN4MjI2NzsmI3gzMzg7Ij4KKzwhRU5USVRZIG5nZXFxICImI3gyMjY3OyYj
eDMzODsiPgorPCFFTlRJVFkgTm90R3JlYXRlckZ1bGxFcXVhbCAiJiN4MjI2NzsmI3gzMzg7Ij4K
KzwhRU5USVRZIGxuRSAiJiN4MjI2ODsiPgorPCFFTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ij4KKzwh
RU5USVRZIGx2bkUgIiYjeDIyNjg7JiN4RkUwMDsiPgorPCFFTlRJVFkgbHZlcnRuZXFxICImI3gy
MjY4OyYjeEZFMDA7Ij4KKzwhRU5USVRZIGduRSAiJiN4MjI2OTsiPgorPCFFTlRJVFkgZ25lcXEg
IiYjeDIyNjk7Ij4KKzwhRU5USVRZIGd2bkUgIiYjeDIyNjk7JiN4RkUwMDsiPgorPCFFTlRJVFkg
Z3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ij4KKzwhRU5USVRZIEx0ICImI3gyMjZBOyI+Cis8
IUVOVElUWSBOZXN0ZWRMZXNzTGVzcyAiJiN4MjI2QTsiPgorPCFFTlRJVFkgbGwgIiYjeDIyNkE7
Ij4KKzwhRU5USVRZIG5MdHYgIiYjeDIyNkE7JiN4MzM4OyI+Cis8IUVOVElUWSBOb3RMZXNzTGVz
cyAiJiN4MjI2QTsmI3gzMzg7Ij4KKzwhRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyI+Cis8
IUVOVElUWSBHdCAiJiN4MjI2QjsiPgorPCFFTlRJVFkgTmVzdGVkR3JlYXRlckdyZWF0ZXIgIiYj
eDIyNkI7Ij4KKzwhRU5USVRZIGdnICImI3gyMjZCOyI+Cis8IUVOVElUWSBuR3R2ICImI3gyMjZC
OyYjeDMzODsiPgorPCFFTlRJVFkgTm90R3JlYXRlckdyZWF0ZXIgIiYjeDIyNkI7JiN4MzM4OyI+
Cis8IUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiPgorPCFFTlRJVFkgdHdpeHQgIiYjeDIy
NkM7Ij4KKzwhRU5USVRZIGJldHdlZW4gIiYjeDIyNkM7Ij4KKzwhRU5USVRZIE5vdEN1cENhcCAi
JiN4MjI2RDsiPgorPCFFTlRJVFkgbmx0ICImI3gyMjZFOyI+Cis8IUVOVElUWSBOb3RMZXNzICIm
I3gyMjZFOyI+Cis8IUVOVElUWSBubGVzcyAiJiN4MjI2RTsiPgorPCFFTlRJVFkgbmd0ICImI3gy
MjZGOyI+Cis8IUVOVElUWSBOb3RHcmVhdGVyICImI3gyMjZGOyI+Cis8IUVOVElUWSBuZ3RyICIm
I3gyMjZGOyI+Cis8IUVOVElUWSBubGUgIiYjeDIyNzA7Ij4KKzwhRU5USVRZIE5vdExlc3NFcXVh
bCAiJiN4MjI3MDsiPgorPCFFTlRJVFkgbmxlcSAiJiN4MjI3MDsiPgorPCFFTlRJVFkgbmdlICIm
I3gyMjcxOyI+Cis8IUVOVElUWSBOb3RHcmVhdGVyRXF1YWwgIiYjeDIyNzE7Ij4KKzwhRU5USVRZ
IG5nZXEgIiYjeDIyNzE7Ij4KKzwhRU5USVRZIGxzaW0gIiYjeDIyNzI7Ij4KKzwhRU5USVRZIExl
c3NUaWxkZSAiJiN4MjI3MjsiPgorPCFFTlRJVFkgbGVzc3NpbSAiJiN4MjI3MjsiPgorPCFFTlRJ
VFkgZ3NpbSAiJiN4MjI3MzsiPgorPCFFTlRJVFkgZ3Ryc2ltICImI3gyMjczOyI+Cis8IUVOVElU
WSBHcmVhdGVyVGlsZGUgIiYjeDIyNzM7Ij4KKzwhRU5USVRZIG5sc2ltICImI3gyMjc0OyI+Cis8
IUVOVElUWSBOb3RMZXNzVGlsZGUgIiYjeDIyNzQ7Ij4KKzwhRU5USVRZIG5nc2ltICImI3gyMjc1
OyI+Cis8IUVOVElUWSBOb3RHcmVhdGVyVGlsZGUgIiYjeDIyNzU7Ij4KKzwhRU5USVRZIGxnICIm
I3gyMjc2OyI+Cis8IUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyI+Cis8IUVOVElUWSBMZXNzR3Jl
YXRlciAiJiN4MjI3NjsiPgorPCFFTlRJVFkgZ2wgIiYjeDIyNzc7Ij4KKzwhRU5USVRZIGd0cmxl
c3MgIiYjeDIyNzc7Ij4KKzwhRU5USVRZIEdyZWF0ZXJMZXNzICImI3gyMjc3OyI+Cis8IUVOVElU
WSBudGxnICImI3gyMjc4OyI+Cis8IUVOVElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiPgor
PCFFTlRJVFkgbnRnbCAiJiN4MjI3OTsiPgorPCFFTlRJVFkgTm90R3JlYXRlckxlc3MgIiYjeDIy
Nzk7Ij4KKzwhRU5USVRZIHByICImI3gyMjdBOyI+Cis8IUVOVElUWSBQcmVjZWRlcyAiJiN4MjI3
QTsiPgorPCFFTlRJVFkgcHJlYyAiJiN4MjI3QTsiPgorPCFFTlRJVFkgc2MgIiYjeDIyN0I7Ij4K
KzwhRU5USVRZIFN1Y2NlZWRzICImI3gyMjdCOyI+Cis8IUVOVElUWSBzdWNjICImI3gyMjdCOyI+
Cis8IUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiPgorPCFFTlRJVFkgUHJlY2VkZXNTbGFudEVxdWFs
ICImI3gyMjdDOyI+Cis8IUVOVElUWSBwcmVjY3VybHllcSAiJiN4MjI3QzsiPgorPCFFTlRJVFkg
c2NjdWUgIiYjeDIyN0Q7Ij4KKzwhRU5USVRZIFN1Y2NlZWRzU2xhbnRFcXVhbCAiJiN4MjI3RDsi
PgorPCFFTlRJVFkgc3VjY2N1cmx5ZXEgIiYjeDIyN0Q7Ij4KKzwhRU5USVRZIHByc2ltICImI3gy
MjdFOyI+Cis8IUVOVElUWSBwcmVjc2ltICImI3gyMjdFOyI+Cis8IUVOVElUWSBQcmVjZWRlc1Rp
bGRlICImI3gyMjdFOyI+Cis8IUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiPgorPCFFTlRJVFkgc3Vj
Y3NpbSAiJiN4MjI3RjsiPgorPCFFTlRJVFkgU3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsiPgorPCFF
TlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ij4KKzwhRU5USVRZIG5wciAi
JiN4MjI4MDsiPgorPCFFTlRJVFkgbnByZWMgIiYjeDIyODA7Ij4KKzwhRU5USVRZIE5vdFByZWNl
ZGVzICImI3gyMjgwOyI+Cis8IUVOVElUWSBuc2MgIiYjeDIyODE7Ij4KKzwhRU5USVRZIG5zdWNj
ICImI3gyMjgxOyI+Cis8IUVOVElUWSBOb3RTdWNjZWVkcyAiJiN4MjI4MTsiPgorPCFFTlRJVFkg
c3ViICImI3gyMjgyOyI+Cis8IUVOVElUWSBzdWJzZXQgIiYjeDIyODI7Ij4KKzwhRU5USVRZIHZu
c3ViICImI3gyMjgyOyYjeDIwRDI7Ij4KKzwhRU5USVRZIG5zdWJzZXQgIiYjeDIyODI7JiN4MjBE
MjsiPgorPCFFTlRJVFkgTm90U3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ij4KKzwhRU5USVRZIHN1
cCAiJiN4MjI4MzsiPgorPCFFTlRJVFkgc3Vwc2V0ICImI3gyMjgzOyI+Cis8IUVOVElUWSBTdXBl
cnNldCAiJiN4MjI4MzsiPgorPCFFTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsiPgorPCFF
TlRJVFkgbnN1cHNldCAiJiN4MjI4MzsmI3gyMEQyOyI+Cis8IUVOVElUWSBOb3RTdXBlcnNldCAi
JiN4MjI4MzsmI3gyMEQyOyI+Cis8IUVOVElUWSBuc3ViICImI3gyMjg0OyI+Cis8IUVOVElUWSBu
c3VwICImI3gyMjg1OyI+Cis8IUVOVElUWSBzdWJlICImI3gyMjg2OyI+Cis8IUVOVElUWSBTdWJz
ZXRFcXVhbCAiJiN4MjI4NjsiPgorPCFFTlRJVFkgc3Vic2V0ZXEgIiYjeDIyODY7Ij4KKzwhRU5U
SVRZIHN1cGUgIiYjeDIyODc7Ij4KKzwhRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyI+Cis8IUVO
VElUWSBTdXBlcnNldEVxdWFsICImI3gyMjg3OyI+Cis8IUVOVElUWSBuc3ViZSAiJiN4MjI4ODsi
PgorPCFFTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyI+Cis8IUVOVElUWSBOb3RTdWJzZXRFcXVh
bCAiJiN4MjI4ODsiPgorPCFFTlRJVFkgbnN1cGUgIiYjeDIyODk7Ij4KKzwhRU5USVRZIG5zdXBz
ZXRlcSAiJiN4MjI4OTsiPgorPCFFTlRJVFkgTm90U3VwZXJzZXRFcXVhbCAiJiN4MjI4OTsiPgor
PCFFTlRJVFkgc3VibmUgIiYjeDIyOEE7Ij4KKzwhRU5USVRZIHN1YnNldG5lcSAiJiN4MjI4QTsi
PgorPCFFTlRJVFkgdnN1Ym5lICImI3gyMjhBOyYjeEZFMDA7Ij4KKzwhRU5USVRZIHZhcnN1YnNl
dG5lcSAiJiN4MjI4QTsmI3hGRTAwOyI+Cis8IUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiPgorPCFF
TlRJVFkgc3Vwc2V0bmVxICImI3gyMjhCOyI+Cis8IUVOVElUWSB2c3VwbmUgIiYjeDIyOEI7JiN4
RkUwMDsiPgorPCFFTlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ij4KKzwhRU5U
SVRZIGN1cGRvdCAiJiN4MjI4RDsiPgorPCFFTlRJVFkgdXBsdXMgIiYjeDIyOEU7Ij4KKzwhRU5U
SVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiPgorPCFFTlRJVFkgc3FzdWIgIiYjeDIyOEY7Ij4KKzwh
RU5USVRZIFNxdWFyZVN1YnNldCAiJiN4MjI4RjsiPgorPCFFTlRJVFkgc3FzdWJzZXQgIiYjeDIy
OEY7Ij4KKzwhRU5USVRZIE5vdFNxdWFyZVN1YnNldCAiJiN4MjI4RjsmI3gzMzg7Ij4KKzwhRU5U
SVRZIHNxc3VwICImI3gyMjkwOyI+Cis8IUVOVElUWSBTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsi
PgorPCFFTlRJVFkgc3FzdXBzZXQgIiYjeDIyOTA7Ij4KKzwhRU5USVRZIE5vdFNxdWFyZVN1cGVy
c2V0ICImI3gyMjkwOyYjeDMzODsiPgorPCFFTlRJVFkgc3FzdWJlICImI3gyMjkxOyI+Cis8IUVO
VElUWSBTcXVhcmVTdWJzZXRFcXVhbCAiJiN4MjI5MTsiPgorPCFFTlRJVFkgc3FzdWJzZXRlcSAi
JiN4MjI5MTsiPgorPCFFTlRJVFkgc3FzdXBlICImI3gyMjkyOyI+Cis8IUVOVElUWSBTcXVhcmVT
dXBlcnNldEVxdWFsICImI3gyMjkyOyI+Cis8IUVOVElUWSBzcXN1cHNldGVxICImI3gyMjkyOyI+
Cis8IUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiPgorPCFFTlRJVFkgU3F1YXJlSW50ZXJzZWN0aW9u
ICImI3gyMjkzOyI+Cis8IUVOVElUWSBzcWNhcHMgIiYjeDIyOTM7JiN4RkUwMDsiPgorPCFFTlRJ
VFkgc3FjdXAgIiYjeDIyOTQ7Ij4KKzwhRU5USVRZIFNxdWFyZVVuaW9uICImI3gyMjk0OyI+Cis8
IUVOVElUWSBzcWN1cHMgIiYjeDIyOTQ7JiN4RkUwMDsiPgorPCFFTlRJVFkgb3BsdXMgIiYjeDIy
OTU7Ij4KKzwhRU5USVRZIENpcmNsZVBsdXMgIiYjeDIyOTU7Ij4KKzwhRU5USVRZIG9taW51cyAi
JiN4MjI5NjsiPgorPCFFTlRJVFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ij4KKzwhRU5USVRZIG90
aW1lcyAiJiN4MjI5NzsiPgorPCFFTlRJVFkgQ2lyY2xlVGltZXMgIiYjeDIyOTc7Ij4KKzwhRU5U
SVRZIG9zb2wgIiYjeDIyOTg7Ij4KKzwhRU5USVRZIG9kb3QgIiYjeDIyOTk7Ij4KKzwhRU5USVRZ
IENpcmNsZURvdCAiJiN4MjI5OTsiPgorPCFFTlRJVFkgb2NpciAiJiN4MjI5QTsiPgorPCFFTlRJ
VFkgY2lyY2xlZGNpcmMgIiYjeDIyOUE7Ij4KKzwhRU5USVRZIG9hc3QgIiYjeDIyOUI7Ij4KKzwh
RU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ij4KKzwhRU5USVRZIG9kYXNoICImI3gyMjlEOyI+
Cis8IUVOVElUWSBjaXJjbGVkZGFzaCAiJiN4MjI5RDsiPgorPCFFTlRJVFkgcGx1c2IgIiYjeDIy
OUU7Ij4KKzwhRU5USVRZIGJveHBsdXMgIiYjeDIyOUU7Ij4KKzwhRU5USVRZIG1pbnVzYiAiJiN4
MjI5RjsiPgorPCFFTlRJVFkgYm94bWludXMgIiYjeDIyOUY7Ij4KKzwhRU5USVRZIHRpbWVzYiAi
JiN4MjJBMDsiPgorPCFFTlRJVFkgYm94dGltZXMgIiYjeDIyQTA7Ij4KKzwhRU5USVRZIHNkb3Ri
ICImI3gyMkExOyI+Cis8IUVOVElUWSBkb3RzcXVhcmUgIiYjeDIyQTE7Ij4KKzwhRU5USVRZIHZk
YXNoICImI3gyMkEyOyI+Cis8IUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiPgorPCFFTlRJVFkg
ZGFzaHYgIiYjeDIyQTM7Ij4KKzwhRU5USVRZIExlZnRUZWUgIiYjeDIyQTM7Ij4KKzwhRU5USVRZ
IHRvcCAiJiN4MjJBNDsiPgorPCFFTlRJVFkgRG93blRlZSAiJiN4MjJBNDsiPgorPCFFTlRJVFkg
Ym90dG9tICImI3gyMkE1OyI+Cis8IUVOVElUWSBib3QgIiYjeDIyQTU7Ij4KKzwhRU5USVRZIHBl
cnAgIiYjeDIyQTU7Ij4KKzwhRU5USVRZIFVwVGVlICImI3gyMkE1OyI+Cis8IUVOVElUWSBtb2Rl
bHMgIiYjeDIyQTc7Ij4KKzwhRU5USVRZIHZEYXNoICImI3gyMkE4OyI+Cis8IUVOVElUWSBEb3Vi
bGVSaWdodFRlZSAiJiN4MjJBODsiPgorPCFFTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ij4KKzwhRU5U
SVRZIFZ2ZGFzaCAiJiN4MjJBQTsiPgorPCFFTlRJVFkgVkRhc2ggIiYjeDIyQUI7Ij4KKzwhRU5U
SVRZIG52ZGFzaCAiJiN4MjJBQzsiPgorPCFFTlRJVFkgbnZEYXNoICImI3gyMkFEOyI+Cis8IUVO
VElUWSBuVmRhc2ggIiYjeDIyQUU7Ij4KKzwhRU5USVRZIG5WRGFzaCAiJiN4MjJBRjsiPgorPCFF
TlRJVFkgcHJ1cmVsICImI3gyMkIwOyI+Cis8IUVOVElUWSB2bHRyaSAiJiN4MjJCMjsiPgorPCFF
TlRJVFkgdmFydHJpYW5nbGVsZWZ0ICImI3gyMkIyOyI+Cis8IUVOVElUWSBMZWZ0VHJpYW5nbGUg
IiYjeDIyQjI7Ij4KKzwhRU5USVRZIHZydHJpICImI3gyMkIzOyI+Cis8IUVOVElUWSB2YXJ0cmlh
bmdsZXJpZ2h0ICImI3gyMkIzOyI+Cis8IUVOVElUWSBSaWdodFRyaWFuZ2xlICImI3gyMkIzOyI+
Cis8IUVOVElUWSBsdHJpZSAiJiN4MjJCNDsiPgorPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ZXEgIiYj
eDIyQjQ7Ij4KKzwhRU5USVRZIExlZnRUcmlhbmdsZUVxdWFsICImI3gyMkI0OyI+Cis8IUVOVElU
WSBudmx0cmllICImI3gyMkI0OyYjeDIwRDI7Ij4KKzwhRU5USVRZIHJ0cmllICImI3gyMkI1OyI+
Cis8IUVOVElUWSB0cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyQjU7Ij4KKzwhRU5USVRZIFJpZ2h0VHJp
YW5nbGVFcXVhbCAiJiN4MjJCNTsiPgorPCFFTlRJVFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQy
OyI+Cis8IUVOVElUWSBvcmlnb2YgIiYjeDIyQjY7Ij4KKzwhRU5USVRZIGltb2YgIiYjeDIyQjc7
Ij4KKzwhRU5USVRZIG11bWFwICImI3gyMkI4OyI+Cis8IUVOVElUWSBtdWx0aW1hcCAiJiN4MjJC
ODsiPgorPCFFTlRJVFkgaGVyY29uICImI3gyMkI5OyI+Cis8IUVOVElUWSBpbnRjYWwgIiYjeDIy
QkE7Ij4KKzwhRU5USVRZIGludGVyY2FsICImI3gyMkJBOyI+Cis8IUVOVElUWSB2ZWViYXIgIiYj
eDIyQkI7Ij4KKzwhRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiPgorPCFFTlRJVFkgYW5ncnR2YiAi
JiN4MjJCRTsiPgorPCFFTlRJVFkgbHJ0cmkgIiYjeDIyQkY7Ij4KKzwhRU5USVRZIHh3ZWRnZSAi
JiN4MjJDMDsiPgorPCFFTlRJVFkgV2VkZ2UgIiYjeDIyQzA7Ij4KKzwhRU5USVRZIGJpZ3dlZGdl
ICImI3gyMkMwOyI+Cis8IUVOVElUWSB4dmVlICImI3gyMkMxOyI+Cis8IUVOVElUWSBWZWUgIiYj
eDIyQzE7Ij4KKzwhRU5USVRZIGJpZ3ZlZSAiJiN4MjJDMTsiPgorPCFFTlRJVFkgeGNhcCAiJiN4
MjJDMjsiPgorPCFFTlRJVFkgSW50ZXJzZWN0aW9uICImI3gyMkMyOyI+Cis8IUVOVElUWSBiaWdj
YXAgIiYjeDIyQzI7Ij4KKzwhRU5USVRZIHhjdXAgIiYjeDIyQzM7Ij4KKzwhRU5USVRZIFVuaW9u
ICImI3gyMkMzOyI+Cis8IUVOVElUWSBiaWdjdXAgIiYjeDIyQzM7Ij4KKzwhRU5USVRZIGRpYW0g
IiYjeDIyQzQ7Ij4KKzwhRU5USVRZIGRpYW1vbmQgIiYjeDIyQzQ7Ij4KKzwhRU5USVRZIERpYW1v
bmQgIiYjeDIyQzQ7Ij4KKzwhRU5USVRZIHNkb3QgIiYjeDIyQzU7Ij4KKzwhRU5USVRZIHNzdGFy
ZiAiJiN4MjJDNjsiPgorPCFFTlRJVFkgU3RhciAiJiN4MjJDNjsiPgorPCFFTlRJVFkgZGl2b254
ICImI3gyMkM3OyI+Cis8IUVOVElUWSBkaXZpZGVvbnRpbWVzICImI3gyMkM3OyI+Cis8IUVOVElU
WSBib3d0aWUgIiYjeDIyQzg7Ij4KKzwhRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiPgorPCFFTlRJ
VFkgcnRpbWVzICImI3gyMkNBOyI+Cis8IUVOVElUWSBsdGhyZWUgIiYjeDIyQ0I7Ij4KKzwhRU5U
SVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyI+Cis8IUVOVElUWSBydGhyZWUgIiYjeDIyQ0M7
Ij4KKzwhRU5USVRZIHJpZ2h0dGhyZWV0aW1lcyAiJiN4MjJDQzsiPgorPCFFTlRJVFkgYnNpbWUg
IiYjeDIyQ0Q7Ij4KKzwhRU5USVRZIGJhY2tzaW1lcSAiJiN4MjJDRDsiPgorPCFFTlRJVFkgY3V2
ZWUgIiYjeDIyQ0U7Ij4KKzwhRU5USVRZIGN1cmx5dmVlICImI3gyMkNFOyI+Cis8IUVOVElUWSBj
dXdlZCAiJiN4MjJDRjsiPgorPCFFTlRJVFkgY3VybHl3ZWRnZSAiJiN4MjJDRjsiPgorPCFFTlRJ
VFkgU3ViICImI3gyMkQwOyI+Cis8IUVOVElUWSBTdWJzZXQgIiYjeDIyRDA7Ij4KKzwhRU5USVRZ
IFN1cCAiJiN4MjJEMTsiPgorPCFFTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyI+Cis8IUVOVElUWSBD
YXAgIiYjeDIyRDI7Ij4KKzwhRU5USVRZIEN1cCAiJiN4MjJEMzsiPgorPCFFTlRJVFkgZm9yayAi
JiN4MjJENDsiPgorPCFFTlRJVFkgcGl0Y2hmb3JrICImI3gyMkQ0OyI+Cis8IUVOVElUWSBlcGFy
ICImI3gyMkQ1OyI+Cis8IUVOVElUWSBsdGRvdCAiJiN4MjJENjsiPgorPCFFTlRJVFkgbGVzc2Rv
dCAiJiN4MjJENjsiPgorPCFFTlRJVFkgZ3Rkb3QgIiYjeDIyRDc7Ij4KKzwhRU5USVRZIGd0cmRv
dCAiJiN4MjJENzsiPgorPCFFTlRJVFkgTGwgIiYjeDIyRDg7Ij4KKzwhRU5USVRZIG5MbCAiJiN4
MjJEODsmI3gzMzg7Ij4KKzwhRU5USVRZIEdnICImI3gyMkQ5OyI+Cis8IUVOVElUWSBnZ2cgIiYj
eDIyRDk7Ij4KKzwhRU5USVRZIG5HZyAiJiN4MjJEOTsmI3gzMzg7Ij4KKzwhRU5USVRZIGxlZyAi
JiN4MjJEQTsiPgorPCFFTlRJVFkgTGVzc0VxdWFsR3JlYXRlciAiJiN4MjJEQTsiPgorPCFFTlRJ
VFkgbGVzc2VxZ3RyICImI3gyMkRBOyI+Cis8IUVOVElUWSBsZXNnICImI3gyMkRBOyYjeEZFMDA7
Ij4KKzwhRU5USVRZIGdlbCAiJiN4MjJEQjsiPgorPCFFTlRJVFkgZ3RyZXFsZXNzICImI3gyMkRC
OyI+Cis8IUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRCOyI+Cis8IUVOVElUWSBnZXNs
ICImI3gyMkRCOyYjeEZFMDA7Ij4KKzwhRU5USVRZIGN1ZXByICImI3gyMkRFOyI+Cis8IUVOVElU
WSBjdXJseWVxcHJlYyAiJiN4MjJERTsiPgorPCFFTlRJVFkgY3Vlc2MgIiYjeDIyREY7Ij4KKzwh
RU5USVRZIGN1cmx5ZXFzdWNjICImI3gyMkRGOyI+Cis8IUVOVElUWSBucHJjdWUgIiYjeDIyRTA7
Ij4KKzwhRU5USVRZIE5vdFByZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjJFMDsiPgorPCFFTlRJVFkg
bnNjY3VlICImI3gyMkUxOyI+Cis8IUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIy
RTE7Ij4KKzwhRU5USVRZIG5zcXN1YmUgIiYjeDIyRTI7Ij4KKzwhRU5USVRZIE5vdFNxdWFyZVN1
YnNldEVxdWFsICImI3gyMkUyOyI+Cis8IUVOVElUWSBuc3FzdXBlICImI3gyMkUzOyI+Cis8IUVO
VElUWSBOb3RTcXVhcmVTdXBlcnNldEVxdWFsICImI3gyMkUzOyI+Cis8IUVOVElUWSBsbnNpbSAi
JiN4MjJFNjsiPgorPCFFTlRJVFkgZ25zaW0gIiYjeDIyRTc7Ij4KKzwhRU5USVRZIHBybnNpbSAi
JiN4MjJFODsiPgorPCFFTlRJVFkgcHJlY25zaW0gIiYjeDIyRTg7Ij4KKzwhRU5USVRZIHNjbnNp
bSAiJiN4MjJFOTsiPgorPCFFTlRJVFkgc3VjY25zaW0gIiYjeDIyRTk7Ij4KKzwhRU5USVRZIG5s
dHJpICImI3gyMkVBOyI+Cis8IUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyI+Cis8IUVO
VElUWSBOb3RMZWZ0VHJpYW5nbGUgIiYjeDIyRUE7Ij4KKzwhRU5USVRZIG5ydHJpICImI3gyMkVC
OyI+Cis8IUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiPgorPCFFTlRJVFkgTm90Umln
aHRUcmlhbmdsZSAiJiN4MjJFQjsiPgorPCFFTlRJVFkgbmx0cmllICImI3gyMkVDOyI+Cis8IUVO
VElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ij4KKzwhRU5USVRZIE5vdExlZnRUcmlhbmds
ZUVxdWFsICImI3gyMkVDOyI+Cis8IUVOVElUWSBucnRyaWUgIiYjeDIyRUQ7Ij4KKzwhRU5USVRZ
IG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ij4KKzwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVF
cXVhbCAiJiN4MjJFRDsiPgorPCFFTlRJVFkgdmVsbGlwICImI3gyMkVFOyI+Cis8IUVOVElUWSBj
dGRvdCAiJiN4MjJFRjsiPgorPCFFTlRJVFkgdXRkb3QgIiYjeDIyRjA7Ij4KKzwhRU5USVRZIGR0
ZG90ICImI3gyMkYxOyI+Cis8IUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiPgorPCFFTlRJVFkgaXNp
bnN2ICImI3gyMkYzOyI+Cis8IUVOVElUWSBpc2lucyAiJiN4MjJGNDsiPgorPCFFTlRJVFkgaXNp
bmRvdCAiJiN4MjJGNTsiPgorPCFFTlRJVFkgbm90aW5kb3QgIiYjeDIyRjU7JiN4MzM4OyI+Cis8
IUVOVElUWSBub3RpbnZjICImI3gyMkY2OyI+Cis8IUVOVElUWSBub3RpbnZiICImI3gyMkY3OyI+
Cis8IUVOVElUWSBpc2luRSAiJiN4MjJGOTsiPgorPCFFTlRJVFkgbm90aW5FICImI3gyMkY5OyYj
eDMzODsiPgorPCFFTlRJVFkgbmlzZCAiJiN4MjJGQTsiPgorPCFFTlRJVFkgeG5pcyAiJiN4MjJG
QjsiPgorPCFFTlRJVFkgbmlzICImI3gyMkZDOyI+Cis8IUVOVElUWSBub3RuaXZjICImI3gyMkZE
OyI+Cis8IUVOVElUWSBub3RuaXZiICImI3gyMkZFOyI+Cis8IUVOVElUWSBiYXJ3ZWQgIiYjeDIz
MDU7Ij4KKzwhRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyI+Cis8IUVOVElUWSBCYXJ3ZWQgIiYj
eDIzMDY7Ij4KKzwhRU5USVRZIGRvdWJsZWJhcndlZGdlICImI3gyMzA2OyI+Cis8IUVOVElUWSBs
Y2VpbCAiJiN4MjMwODsiPgorPCFFTlRJVFkgTGVmdENlaWxpbmcgIiYjeDIzMDg7Ij4KKzwhRU5U
SVRZIHJjZWlsICImI3gyMzA5OyI+Cis8IUVOVElUWSBSaWdodENlaWxpbmcgIiYjeDIzMDk7Ij4K
KzwhRU5USVRZIGxmbG9vciAiJiN4MjMwQTsiPgorPCFFTlRJVFkgTGVmdEZsb29yICImI3gyMzBB
OyI+Cis8IUVOVElUWSByZmxvb3IgIiYjeDIzMEI7Ij4KKzwhRU5USVRZIFJpZ2h0Rmxvb3IgIiYj
eDIzMEI7Ij4KKzwhRU5USVRZIGRyY3JvcCAiJiN4MjMwQzsiPgorPCFFTlRJVFkgZGxjcm9wICIm
I3gyMzBEOyI+Cis8IUVOVElUWSB1cmNyb3AgIiYjeDIzMEU7Ij4KKzwhRU5USVRZIHVsY3JvcCAi
JiN4MjMwRjsiPgorPCFFTlRJVFkgYm5vdCAiJiN4MjMxMDsiPgorPCFFTlRJVFkgcHJvZmxpbmUg
IiYjeDIzMTI7Ij4KKzwhRU5USVRZIHByb2ZzdXJmICImI3gyMzEzOyI+Cis8IUVOVElUWSB0ZWxy
ZWMgIiYjeDIzMTU7Ij4KKzwhRU5USVRZIHRhcmdldCAiJiN4MjMxNjsiPgorPCFFTlRJVFkgdWxj
b3JuICImI3gyMzFDOyI+Cis8IUVOVElUWSB1bGNvcm5lciAiJiN4MjMxQzsiPgorPCFFTlRJVFkg
dXJjb3JuICImI3gyMzFEOyI+Cis8IUVOVElUWSB1cmNvcm5lciAiJiN4MjMxRDsiPgorPCFFTlRJ
VFkgZGxjb3JuICImI3gyMzFFOyI+Cis8IUVOVElUWSBsbGNvcm5lciAiJiN4MjMxRTsiPgorPCFF
TlRJVFkgZHJjb3JuICImI3gyMzFGOyI+Cis8IUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiPgor
PCFFTlRJVFkgZnJvd24gIiYjeDIzMjI7Ij4KKzwhRU5USVRZIHNmcm93biAiJiN4MjMyMjsiPgor
PCFFTlRJVFkgc21pbGUgIiYjeDIzMjM7Ij4KKzwhRU5USVRZIHNzbWlsZSAiJiN4MjMyMzsiPgor
PCFFTlRJVFkgY3lsY3R5ICImI3gyMzJEOyI+Cis8IUVOVElUWSBwcm9mYWxhciAiJiN4MjMyRTsi
PgorPCFFTlRJVFkgdG9wYm90ICImI3gyMzM2OyI+Cis8IUVOVElUWSBvdmJhciAiJiN4MjMzRDsi
PgorPCFFTlRJVFkgc29sYmFyICImI3gyMzNGOyI+Cis8IUVOVElUWSBhbmd6YXJyICImI3gyMzdD
OyI+Cis8IUVOVElUWSBsbW91c3QgIiYjeDIzQjA7Ij4KKzwhRU5USVRZIGxtb3VzdGFjaGUgIiYj
eDIzQjA7Ij4KKzwhRU5USVRZIHJtb3VzdCAiJiN4MjNCMTsiPgorPCFFTlRJVFkgcm1vdXN0YWNo
ZSAiJiN4MjNCMTsiPgorPCFFTlRJVFkgdGJyayAiJiN4MjNCNDsiPgorPCFFTlRJVFkgT3ZlckJy
YWNrZXQgIiYjeDIzQjQ7Ij4KKzwhRU5USVRZIGJicmsgIiYjeDIzQjU7Ij4KKzwhRU5USVRZIFVu
ZGVyQnJhY2tldCAiJiN4MjNCNTsiPgorPCFFTlRJVFkgYmJya3RicmsgIiYjeDIzQjY7Ij4KKzwh
RU5USVRZIE92ZXJQYXJlbnRoZXNpcyAiJiN4MjNEQzsiPgorPCFFTlRJVFkgVW5kZXJQYXJlbnRo
ZXNpcyAiJiN4MjNERDsiPgorPCFFTlRJVFkgT3ZlckJyYWNlICImI3gyM0RFOyI+Cis8IUVOVElU
WSBVbmRlckJyYWNlICImI3gyM0RGOyI+Cis8IUVOVElUWSB0cnBleml1bSAiJiN4MjNFMjsiPgor
PCFFTlRJVFkgZWxpbnRlcnMgIiYjeDIzRTc7Ij4KKzwhRU5USVRZIGJsYW5rICImI3gyNDIzOyI+
Cis8IUVOVElUWSBvUyAiJiN4MjRDODsiPgorPCFFTlRJVFkgY2lyY2xlZFMgIiYjeDI0Qzg7Ij4K
KzwhRU5USVRZIGJveGggIiYjeDI1MDA7Ij4KKzwhRU5USVRZIEhvcml6b250YWxMaW5lICImI3gy
NTAwOyI+Cis8IUVOVElUWSBib3h2ICImI3gyNTAyOyI+Cis8IUVOVElUWSBib3hkciAiJiN4MjUw
QzsiPgorPCFFTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ij4KKzwhRU5USVRZIGJveHVyICImI3gyNTE0
OyI+Cis8IUVOVElUWSBib3h1bCAiJiN4MjUxODsiPgorPCFFTlRJVFkgYm94dnIgIiYjeDI1MUM7
Ij4KKzwhRU5USVRZIGJveHZsICImI3gyNTI0OyI+Cis8IUVOVElUWSBib3hoZCAiJiN4MjUyQzsi
PgorPCFFTlRJVFkgYm94aHUgIiYjeDI1MzQ7Ij4KKzwhRU5USVRZIGJveHZoICImI3gyNTNDOyI+
Cis8IUVOVElUWSBib3hIICImI3gyNTUwOyI+Cis8IUVOVElUWSBib3hWICImI3gyNTUxOyI+Cis8
IUVOVElUWSBib3hkUiAiJiN4MjU1MjsiPgorPCFFTlRJVFkgYm94RHIgIiYjeDI1NTM7Ij4KKzwh
RU5USVRZIGJveERSICImI3gyNTU0OyI+Cis8IUVOVElUWSBib3hkTCAiJiN4MjU1NTsiPgorPCFF
TlRJVFkgYm94RGwgIiYjeDI1NTY7Ij4KKzwhRU5USVRZIGJveERMICImI3gyNTU3OyI+Cis8IUVO
VElUWSBib3h1UiAiJiN4MjU1ODsiPgorPCFFTlRJVFkgYm94VXIgIiYjeDI1NTk7Ij4KKzwhRU5U
SVRZIGJveFVSICImI3gyNTVBOyI+Cis8IUVOVElUWSBib3h1TCAiJiN4MjU1QjsiPgorPCFFTlRJ
VFkgYm94VWwgIiYjeDI1NUM7Ij4KKzwhRU5USVRZIGJveFVMICImI3gyNTVEOyI+Cis8IUVOVElU
WSBib3h2UiAiJiN4MjU1RTsiPgorPCFFTlRJVFkgYm94VnIgIiYjeDI1NUY7Ij4KKzwhRU5USVRZ
IGJveFZSICImI3gyNTYwOyI+Cis8IUVOVElUWSBib3h2TCAiJiN4MjU2MTsiPgorPCFFTlRJVFkg
Ym94VmwgIiYjeDI1NjI7Ij4KKzwhRU5USVRZIGJveFZMICImI3gyNTYzOyI+Cis8IUVOVElUWSBi
b3hIZCAiJiN4MjU2NDsiPgorPCFFTlRJVFkgYm94aEQgIiYjeDI1NjU7Ij4KKzwhRU5USVRZIGJv
eEhEICImI3gyNTY2OyI+Cis8IUVOVElUWSBib3hIdSAiJiN4MjU2NzsiPgorPCFFTlRJVFkgYm94
aFUgIiYjeDI1Njg7Ij4KKzwhRU5USVRZIGJveEhVICImI3gyNTY5OyI+Cis8IUVOVElUWSBib3h2
SCAiJiN4MjU2QTsiPgorPCFFTlRJVFkgYm94VmggIiYjeDI1NkI7Ij4KKzwhRU5USVRZIGJveFZI
ICImI3gyNTZDOyI+Cis8IUVOVElUWSB1aGJsayAiJiN4MjU4MDsiPgorPCFFTlRJVFkgbGhibGsg
IiYjeDI1ODQ7Ij4KKzwhRU5USVRZIGJsb2NrICImI3gyNTg4OyI+Cis8IUVOVElUWSBibGsxNCAi
JiN4MjU5MTsiPgorPCFFTlRJVFkgYmxrMTIgIiYjeDI1OTI7Ij4KKzwhRU5USVRZIGJsazM0ICIm
I3gyNTkzOyI+Cis8IUVOVElUWSBzcXUgIiYjeDI1QTE7Ij4KKzwhRU5USVRZIHNxdWFyZSAiJiN4
MjVBMTsiPgorPCFFTlRJVFkgU3F1YXJlICImI3gyNUExOyI+Cis8IUVOVElUWSBzcXVmICImI3gy
NUFBOyI+Cis8IUVOVElUWSBzcXVhcmYgIiYjeDI1QUE7Ij4KKzwhRU5USVRZIGJsYWNrc3F1YXJl
ICImI3gyNUFBOyI+Cis8IUVOVElUWSBGaWxsZWRWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUE7Ij4K
KzwhRU5USVRZIEVtcHR5VmVyeVNtYWxsU3F1YXJlICImI3gyNUFCOyI+Cis8IUVOVElUWSByZWN0
ICImI3gyNUFEOyI+Cis8IUVOVElUWSBtYXJrZXIgIiYjeDI1QUU7Ij4KKzwhRU5USVRZIGZsdG5z
ICImI3gyNUIxOyI+Cis8IUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiPgorPCFFTlRJVFkgYmlndHJp
YW5nbGV1cCAiJiN4MjVCMzsiPgorPCFFTlRJVFkgdXRyaWYgIiYjeDI1QjQ7Ij4KKzwhRU5USVRZ
IGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ij4KKzwhRU5USVRZIHV0cmkgIiYjeDI1QjU7Ij4KKzwh
RU5USVRZIHRyaWFuZ2xlICImI3gyNUI1OyI+Cis8IUVOVElUWSBydHJpZiAiJiN4MjVCODsiPgor
PCFFTlRJVFkgYmxhY2t0cmlhbmdsZXJpZ2h0ICImI3gyNUI4OyI+Cis8IUVOVElUWSBydHJpICIm
I3gyNUI5OyI+Cis8IUVOVElUWSB0cmlhbmdsZXJpZ2h0ICImI3gyNUI5OyI+Cis8IUVOVElUWSB4
ZHRyaSAiJiN4MjVCRDsiPgorPCFFTlRJVFkgYmlndHJpYW5nbGVkb3duICImI3gyNUJEOyI+Cis8
IUVOVElUWSBkdHJpZiAiJiN4MjVCRTsiPgorPCFFTlRJVFkgYmxhY2t0cmlhbmdsZWRvd24gIiYj
eDI1QkU7Ij4KKzwhRU5USVRZIGR0cmkgIiYjeDI1QkY7Ij4KKzwhRU5USVRZIHRyaWFuZ2xlZG93
biAiJiN4MjVCRjsiPgorPCFFTlRJVFkgbHRyaWYgIiYjeDI1QzI7Ij4KKzwhRU5USVRZIGJsYWNr
dHJpYW5nbGVsZWZ0ICImI3gyNUMyOyI+Cis8IUVOVElUWSBsdHJpICImI3gyNUMzOyI+Cis8IUVO
VElUWSB0cmlhbmdsZWxlZnQgIiYjeDI1QzM7Ij4KKzwhRU5USVRZIGxveiAiJiN4MjVDQTsiPgor
PCFFTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiPgorPCFFTlRJVFkgY2lyICImI3gyNUNCOyI+Cis8
IUVOVElUWSB0cmlkb3QgIiYjeDI1RUM7Ij4KKzwhRU5USVRZIHhjaXJjICImI3gyNUVGOyI+Cis8
IUVOVElUWSBiaWdjaXJjICImI3gyNUVGOyI+Cis8IUVOVElUWSB1bHRyaSAiJiN4MjVGODsiPgor
PCFFTlRJVFkgdXJ0cmkgIiYjeDI1Rjk7Ij4KKzwhRU5USVRZIGxsdHJpICImI3gyNUZBOyI+Cis8
IUVOVElUWSBFbXB0eVNtYWxsU3F1YXJlICImI3gyNUZCOyI+Cis8IUVOVElUWSBGaWxsZWRTbWFs
bFNxdWFyZSAiJiN4MjVGQzsiPgorPCFFTlRJVFkgc3RhcmYgIiYjeDI2MDU7Ij4KKzwhRU5USVRZ
IGJpZ3N0YXIgIiYjeDI2MDU7Ij4KKzwhRU5USVRZIHN0YXIgIiYjeDI2MDY7Ij4KKzwhRU5USVRZ
IHBob25lICImI3gyNjBFOyI+Cis8IUVOVElUWSBmZW1hbGUgIiYjeDI2NDA7Ij4KKzwhRU5USVRZ
IG1hbGUgIiYjeDI2NDI7Ij4KKzwhRU5USVRZIHNwYWRlcyAiJiN4MjY2MDsiPgorPCFFTlRJVFkg
c3BhZGVzdWl0ICImI3gyNjYwOyI+Cis8IUVOVElUWSBjbHVicyAiJiN4MjY2MzsiPgorPCFFTlRJ
VFkgY2x1YnN1aXQgIiYjeDI2NjM7Ij4KKzwhRU5USVRZIGhlYXJ0cyAiJiN4MjY2NTsiPgorPCFF
TlRJVFkgaGVhcnRzdWl0ICImI3gyNjY1OyI+Cis8IUVOVElUWSBkaWFtcyAiJiN4MjY2NjsiPgor
PCFFTlRJVFkgZGlhbW9uZHN1aXQgIiYjeDI2NjY7Ij4KKzwhRU5USVRZIHN1bmcgIiYjeDI2NkE7
Ij4KKzwhRU5USVRZIGZsYXQgIiYjeDI2NkQ7Ij4KKzwhRU5USVRZIG5hdHVyICImI3gyNjZFOyI+
Cis8IUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyI+Cis8IUVOVElUWSBzaGFycCAiJiN4MjY2Rjsi
PgorPCFFTlRJVFkgY2hlY2sgIiYjeDI3MTM7Ij4KKzwhRU5USVRZIGNoZWNrbWFyayAiJiN4Mjcx
MzsiPgorPCFFTlRJVFkgY3Jvc3MgIiYjeDI3MTc7Ij4KKzwhRU5USVRZIG1hbHQgIiYjeDI3MjA7
Ij4KKzwhRU5USVRZIG1hbHRlc2UgIiYjeDI3MjA7Ij4KKzwhRU5USVRZIHNleHQgIiYjeDI3MzY7
Ij4KKzwhRU5USVRZIFZlcnRpY2FsU2VwYXJhdG9yICImI3gyNzU4OyI+Cis8IUVOVElUWSBsYmJy
ayAiJiN4Mjc3MjsiPgorPCFFTlRJVFkgcmJicmsgIiYjeDI3NzM7Ij4KKzwhRU5USVRZIGJzb2xo
c3ViICImI3gyN0M4OyI+Cis8IUVOVElUWSBzdXBoc29sICImI3gyN0M5OyI+Cis8IUVOVElUWSBs
b2JyayAiJiN4MjdFNjsiPgorPCFFTlRJVFkgTGVmdERvdWJsZUJyYWNrZXQgIiYjeDI3RTY7Ij4K
KzwhRU5USVRZIHJvYnJrICImI3gyN0U3OyI+Cis8IUVOVElUWSBSaWdodERvdWJsZUJyYWNrZXQg
IiYjeDI3RTc7Ij4KKzwhRU5USVRZIGxhbmcgIiYjeDI3RTg7Ij4KKzwhRU5USVRZIExlZnRBbmds
ZUJyYWNrZXQgIiYjeDI3RTg7Ij4KKzwhRU5USVRZIGxhbmdsZSAiJiN4MjdFODsiPgorPCFFTlRJ
VFkgcmFuZyAiJiN4MjdFOTsiPgorPCFFTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7
Ij4KKzwhRU5USVRZIHJhbmdsZSAiJiN4MjdFOTsiPgorPCFFTlRJVFkgTGFuZyAiJiN4MjdFQTsi
PgorPCFFTlRJVFkgUmFuZyAiJiN4MjdFQjsiPgorPCFFTlRJVFkgbG9hbmcgIiYjeDI3RUM7Ij4K
KzwhRU5USVRZIHJvYW5nICImI3gyN0VEOyI+Cis8IUVOVElUWSB4bGFyciAiJiN4MjdGNTsiPgor
PCFFTlRJVFkgbG9uZ2xlZnRhcnJvdyAiJiN4MjdGNTsiPgorPCFFTlRJVFkgTG9uZ0xlZnRBcnJv
dyAiJiN4MjdGNTsiPgorPCFFTlRJVFkgeHJhcnIgIiYjeDI3RjY7Ij4KKzwhRU5USVRZIGxvbmdy
aWdodGFycm93ICImI3gyN0Y2OyI+Cis8IUVOVElUWSBMb25nUmlnaHRBcnJvdyAiJiN4MjdGNjsi
PgorPCFFTlRJVFkgeGhhcnIgIiYjeDI3Rjc7Ij4KKzwhRU5USVRZIGxvbmdsZWZ0cmlnaHRhcnJv
dyAiJiN4MjdGNzsiPgorPCFFTlRJVFkgTG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0Y3OyI+Cis8
IUVOVElUWSB4bEFyciAiJiN4MjdGODsiPgorPCFFTlRJVFkgTG9uZ2xlZnRhcnJvdyAiJiN4MjdG
ODsiPgorPCFFTlRJVFkgRG91YmxlTG9uZ0xlZnRBcnJvdyAiJiN4MjdGODsiPgorPCFFTlRJVFkg
eHJBcnIgIiYjeDI3Rjk7Ij4KKzwhRU5USVRZIExvbmdyaWdodGFycm93ICImI3gyN0Y5OyI+Cis8
IUVOVElUWSBEb3VibGVMb25nUmlnaHRBcnJvdyAiJiN4MjdGOTsiPgorPCFFTlRJVFkgeGhBcnIg
IiYjeDI3RkE7Ij4KKzwhRU5USVRZIExvbmdsZWZ0cmlnaHRhcnJvdyAiJiN4MjdGQTsiPgorPCFF
TlRJVFkgRG91YmxlTG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0ZBOyI+Cis8IUVOVElUWSB4bWFw
ICImI3gyN0ZDOyI+Cis8IUVOVElUWSBsb25nbWFwc3RvICImI3gyN0ZDOyI+Cis8IUVOVElUWSBk
emlncmFyciAiJiN4MjdGRjsiPgorPCFFTlRJVFkgbnZsQXJyICImI3gyOTAyOyI+Cis8IUVOVElU
WSBudnJBcnIgIiYjeDI5MDM7Ij4KKzwhRU5USVRZIG52SGFyciAiJiN4MjkwNDsiPgorPCFFTlRJ
VFkgTWFwICImI3gyOTA1OyI+Cis8IUVOVElUWSBsYmFyciAiJiN4MjkwQzsiPgorPCFFTlRJVFkg
cmJhcnIgIiYjeDI5MEQ7Ij4KKzwhRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiPgorPCFFTlRJVFkg
bEJhcnIgIiYjeDI5MEU7Ij4KKzwhRU5USVRZIHJCYXJyICImI3gyOTBGOyI+Cis8IUVOVElUWSBk
Ymthcm93ICImI3gyOTBGOyI+Cis8IUVOVElUWSBSQmFyciAiJiN4MjkxMDsiPgorPCFFTlRJVFkg
ZHJia2Fyb3cgIiYjeDI5MTA7Ij4KKzwhRU5USVRZIEREb3RyYWhkICImI3gyOTExOyI+Cis8IUVO
VElUWSBVcEFycm93QmFyICImI3gyOTEyOyI+Cis8IUVOVElUWSBEb3duQXJyb3dCYXIgIiYjeDI5
MTM7Ij4KKzwhRU5USVRZIFJhcnJ0bCAiJiN4MjkxNjsiPgorPCFFTlRJVFkgbGF0YWlsICImI3gy
OTE5OyI+Cis8IUVOVElUWSByYXRhaWwgIiYjeDI5MUE7Ij4KKzwhRU5USVRZIGxBdGFpbCAiJiN4
MjkxQjsiPgorPCFFTlRJVFkgckF0YWlsICImI3gyOTFDOyI+Cis8IUVOVElUWSBsYXJyZnMgIiYj
eDI5MUQ7Ij4KKzwhRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiPgorPCFFTlRJVFkgbGFycmJmcyAi
JiN4MjkxRjsiPgorPCFFTlRJVFkgcmFycmJmcyAiJiN4MjkyMDsiPgorPCFFTlRJVFkgbndhcmhr
ICImI3gyOTIzOyI+Cis8IUVOVElUWSBuZWFyaGsgIiYjeDI5MjQ7Ij4KKzwhRU5USVRZIHNlYXJo
ayAiJiN4MjkyNTsiPgorPCFFTlRJVFkgaGtzZWFyb3cgIiYjeDI5MjU7Ij4KKzwhRU5USVRZIHN3
YXJoayAiJiN4MjkyNjsiPgorPCFFTlRJVFkgaGtzd2Fyb3cgIiYjeDI5MjY7Ij4KKzwhRU5USVRZ
IG53bmVhciAiJiN4MjkyNzsiPgorPCFFTlRJVFkgbmVzZWFyICImI3gyOTI4OyI+Cis8IUVOVElU
WSB0b2VhICImI3gyOTI4OyI+Cis8IUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ij4KKzwhRU5USVRZ
IHRvc2EgIiYjeDI5Mjk7Ij4KKzwhRU5USVRZIHN3bndhciAiJiN4MjkyQTsiPgorPCFFTlRJVFkg
cmFycmMgIiYjeDI5MzM7Ij4KKzwhRU5USVRZIG5yYXJyYyAiJiN4MjkzMzsmI3gzMzg7Ij4KKzwh
RU5USVRZIGN1ZGFycnIgIiYjeDI5MzU7Ij4KKzwhRU5USVRZIGxkY2EgIiYjeDI5MzY7Ij4KKzwh
RU5USVRZIHJkY2EgIiYjeDI5Mzc7Ij4KKzwhRU5USVRZIGN1ZGFycmwgIiYjeDI5Mzg7Ij4KKzwh
RU5USVRZIGxhcnJwbCAiJiN4MjkzOTsiPgorPCFFTlRJVFkgY3VyYXJybSAiJiN4MjkzQzsiPgor
PCFFTlRJVFkgY3VsYXJycCAiJiN4MjkzRDsiPgorPCFFTlRJVFkgcmFycnBsICImI3gyOTQ1OyI+
Cis8IUVOVElUWSBoYXJyY2lyICImI3gyOTQ4OyI+Cis8IUVOVElUWSBVYXJyb2NpciAiJiN4Mjk0
OTsiPgorPCFFTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ij4KKzwhRU5USVRZIGxkcnVzaGFyICIm
I3gyOTRCOyI+Cis8IUVOVElUWSBMZWZ0UmlnaHRWZWN0b3IgIiYjeDI5NEU7Ij4KKzwhRU5USVRZ
IFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyI+Cis8IUVOVElUWSBEb3duTGVmdFJpZ2h0VmVj
dG9yICImI3gyOTUwOyI+Cis8IUVOVElUWSBMZWZ0VXBEb3duVmVjdG9yICImI3gyOTUxOyI+Cis8
IUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyI+Cis8IUVOVElUWSBSaWdodFZlY3RvckJh
ciAiJiN4Mjk1MzsiPgorPCFFTlRJVFkgUmlnaHRVcFZlY3RvckJhciAiJiN4Mjk1NDsiPgorPCFF
TlRJVFkgUmlnaHREb3duVmVjdG9yQmFyICImI3gyOTU1OyI+Cis8IUVOVElUWSBEb3duTGVmdFZl
Y3RvckJhciAiJiN4Mjk1NjsiPgorPCFFTlRJVFkgRG93blJpZ2h0VmVjdG9yQmFyICImI3gyOTU3
OyI+Cis8IUVOVElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ij4KKzwhRU5USVRZIExlZnRE
b3duVmVjdG9yQmFyICImI3gyOTU5OyI+Cis8IUVOVElUWSBMZWZ0VGVlVmVjdG9yICImI3gyOTVB
OyI+Cis8IUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiPgorPCFFTlRJVFkgUmlnaHRV
cFRlZVZlY3RvciAiJiN4Mjk1QzsiPgorPCFFTlRJVFkgUmlnaHREb3duVGVlVmVjdG9yICImI3gy
OTVEOyI+Cis8IUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1RTsiPgorPCFFTlRJVFkg
RG93blJpZ2h0VGVlVmVjdG9yICImI3gyOTVGOyI+Cis8IUVOVElUWSBMZWZ0VXBUZWVWZWN0b3Ig
IiYjeDI5NjA7Ij4KKzwhRU5USVRZIExlZnREb3duVGVlVmVjdG9yICImI3gyOTYxOyI+Cis8IUVO
VElUWSBsSGFyICImI3gyOTYyOyI+Cis8IUVOVElUWSB1SGFyICImI3gyOTYzOyI+Cis8IUVOVElU
WSBySGFyICImI3gyOTY0OyI+Cis8IUVOVElUWSBkSGFyICImI3gyOTY1OyI+Cis8IUVOVElUWSBs
dXJ1aGFyICImI3gyOTY2OyI+Cis8IUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyI+Cis8IUVOVElU
WSBydWx1aGFyICImI3gyOTY4OyI+Cis8IUVOVElUWSByZGxkaGFyICImI3gyOTY5OyI+Cis8IUVO
VElUWSBsaGFydWwgIiYjeDI5NkE7Ij4KKzwhRU5USVRZIGxsaGFyZCAiJiN4Mjk2QjsiPgorPCFF
TlRJVFkgcmhhcnVsICImI3gyOTZDOyI+Cis8IUVOVElUWSBscmhhcmQgIiYjeDI5NkQ7Ij4KKzwh
RU5USVRZIHVkaGFyICImI3gyOTZFOyI+Cis8IUVOVElUWSBVcEVxdWlsaWJyaXVtICImI3gyOTZF
OyI+Cis8IUVOVElUWSBkdWhhciAiJiN4Mjk2RjsiPgorPCFFTlRJVFkgUmV2ZXJzZVVwRXF1aWxp
YnJpdW0gIiYjeDI5NkY7Ij4KKzwhRU5USVRZIFJvdW5kSW1wbGllcyAiJiN4Mjk3MDsiPgorPCFF
TlRJVFkgZXJhcnIgIiYjeDI5NzE7Ij4KKzwhRU5USVRZIHNpbXJhcnIgIiYjeDI5NzI7Ij4KKzwh
RU5USVRZIGxhcnJzaW0gIiYjeDI5NzM7Ij4KKzwhRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ij4K
KzwhRU5USVRZIHJhcnJhcCAiJiN4Mjk3NTsiPgorPCFFTlRJVFkgbHRsYXJyICImI3gyOTc2OyI+
Cis8IUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ij4KKzwhRU5USVRZIHN1YnJhcnIgIiYjeDI5Nzk7
Ij4KKzwhRU5USVRZIHN1cGxhcnIgIiYjeDI5N0I7Ij4KKzwhRU5USVRZIGxmaXNodCAiJiN4Mjk3
QzsiPgorPCFFTlRJVFkgcmZpc2h0ICImI3gyOTdEOyI+Cis8IUVOVElUWSB1ZmlzaHQgIiYjeDI5
N0U7Ij4KKzwhRU5USVRZIGRmaXNodCAiJiN4Mjk3RjsiPgorPCFFTlRJVFkgbG9wYXIgIiYjeDI5
ODU7Ij4KKzwhRU5USVRZIHJvcGFyICImI3gyOTg2OyI+Cis8IUVOVElUWSBsYnJrZSAiJiN4Mjk4
QjsiPgorPCFFTlRJVFkgcmJya2UgIiYjeDI5OEM7Ij4KKzwhRU5USVRZIGxicmtzbHUgIiYjeDI5
OEQ7Ij4KKzwhRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ij4KKzwhRU5USVRZIGxicmtzbGQgIiYj
eDI5OEY7Ij4KKzwhRU5USVRZIHJicmtzbHUgIiYjeDI5OTA7Ij4KKzwhRU5USVRZIGxhbmdkICIm
I3gyOTkxOyI+Cis8IUVOVElUWSByYW5nZCAiJiN4Mjk5MjsiPgorPCFFTlRJVFkgbHBhcmx0ICIm
I3gyOTkzOyI+Cis8IUVOVElUWSBycGFyZ3QgIiYjeDI5OTQ7Ij4KKzwhRU5USVRZIGd0bFBhciAi
JiN4Mjk5NTsiPgorPCFFTlRJVFkgbHRyUGFyICImI3gyOTk2OyI+Cis8IUVOVElUWSB2emlnemFn
ICImI3gyOTlBOyI+Cis8IUVOVElUWSB2YW5ncnQgIiYjeDI5OUM7Ij4KKzwhRU5USVRZIGFuZ3J0
dmJkICImI3gyOTlEOyI+Cis8IUVOVElUWSBhbmdlICImI3gyOUE0OyI+Cis8IUVOVElUWSByYW5n
ZSAiJiN4MjlBNTsiPgorPCFFTlRJVFkgZHdhbmdsZSAiJiN4MjlBNjsiPgorPCFFTlRJVFkgdXdh
bmdsZSAiJiN4MjlBNzsiPgorPCFFTlRJVFkgYW5nbXNkYWEgIiYjeDI5QTg7Ij4KKzwhRU5USVRZ
IGFuZ21zZGFiICImI3gyOUE5OyI+Cis8IUVOVElUWSBhbmdtc2RhYyAiJiN4MjlBQTsiPgorPCFF
TlRJVFkgYW5nbXNkYWQgIiYjeDI5QUI7Ij4KKzwhRU5USVRZIGFuZ21zZGFlICImI3gyOUFDOyI+
Cis8IUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsiPgorPCFFTlRJVFkgYW5nbXNkYWcgIiYjeDI5
QUU7Ij4KKzwhRU5USVRZIGFuZ21zZGFoICImI3gyOUFGOyI+Cis8IUVOVElUWSBiZW1wdHl2ICIm
I3gyOUIwOyI+Cis8IUVOVElUWSBkZW1wdHl2ICImI3gyOUIxOyI+Cis8IUVOVElUWSBjZW1wdHl2
ICImI3gyOUIyOyI+Cis8IUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiPgorPCFFTlRJVFkgbGFl
bXB0eXYgIiYjeDI5QjQ7Ij4KKzwhRU5USVRZIG9oYmFyICImI3gyOUI1OyI+Cis8IUVOVElUWSBv
bWlkICImI3gyOUI2OyI+Cis8IUVOVElUWSBvcGFyICImI3gyOUI3OyI+Cis8IUVOVElUWSBvcGVy
cCAiJiN4MjlCOTsiPgorPCFFTlRJVFkgb2xjcm9zcyAiJiN4MjlCQjsiPgorPCFFTlRJVFkgb2Rz
b2xkICImI3gyOUJDOyI+Cis8IUVOVElUWSBvbGNpciAiJiN4MjlCRTsiPgorPCFFTlRJVFkgb2Zj
aXIgIiYjeDI5QkY7Ij4KKzwhRU5USVRZIG9sdCAiJiN4MjlDMDsiPgorPCFFTlRJVFkgb2d0ICIm
I3gyOUMxOyI+Cis8IUVOVElUWSBjaXJzY2lyICImI3gyOUMyOyI+Cis8IUVOVElUWSBjaXJFICIm
I3gyOUMzOyI+Cis8IUVOVElUWSBzb2xiICImI3gyOUM0OyI+Cis8IUVOVElUWSBic29sYiAiJiN4
MjlDNTsiPgorPCFFTlRJVFkgYm94Ym94ICImI3gyOUM5OyI+Cis8IUVOVElUWSB0cmlzYiAiJiN4
MjlDRDsiPgorPCFFTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ij4KKzwhRU5USVRZIExlZnRUcmlh
bmdsZUJhciAiJiN4MjlDRjsiPgorPCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlQmFyICImI3gyOUNG
OyYjeDMzODsiPgorPCFFTlRJVFkgUmlnaHRUcmlhbmdsZUJhciAiJiN4MjlEMDsiPgorPCFFTlRJ
VFkgTm90UmlnaHRUcmlhbmdsZUJhciAiJiN4MjlEMDsmI3gzMzg7Ij4KKzwhRU5USVRZIGlpbmZp
biAiJiN4MjlEQzsiPgorPCFFTlRJVFkgaW5maW50aWUgIiYjeDI5REQ7Ij4KKzwhRU5USVRZIG52
aW5maW4gIiYjeDI5REU7Ij4KKzwhRU5USVRZIGVwYXJzbCAiJiN4MjlFMzsiPgorPCFFTlRJVFkg
c21lcGFyc2wgIiYjeDI5RTQ7Ij4KKzwhRU5USVRZIGVxdnBhcnNsICImI3gyOUU1OyI+Cis8IUVO
VElUWSBsb3pmICImI3gyOUVCOyI+Cis8IUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ij4K
KzwhRU5USVRZIFJ1bGVEZWxheWVkICImI3gyOUY0OyI+Cis8IUVOVElUWSBkc29sICImI3gyOUY2
OyI+Cis8IUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiPgorPCFFTlRJVFkgYmlnb2RvdCAiJiN4MkEw
MDsiPgorPCFFTlRJVFkgeG9wbHVzICImI3gyQTAxOyI+Cis8IUVOVElUWSBiaWdvcGx1cyAiJiN4
MkEwMTsiPgorPCFFTlRJVFkgeG90aW1lICImI3gyQTAyOyI+Cis8IUVOVElUWSBiaWdvdGltZXMg
IiYjeDJBMDI7Ij4KKzwhRU5USVRZIHh1cGx1cyAiJiN4MkEwNDsiPgorPCFFTlRJVFkgYmlndXBs
dXMgIiYjeDJBMDQ7Ij4KKzwhRU5USVRZIHhzcWN1cCAiJiN4MkEwNjsiPgorPCFFTlRJVFkgYmln
c3FjdXAgIiYjeDJBMDY7Ij4KKzwhRU5USVRZIHFpbnQgIiYjeDJBMEM7Ij4KKzwhRU5USVRZIGlp
aWludCAiJiN4MkEwQzsiPgorPCFFTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ij4KKzwhRU5USVRZ
IGNpcmZuaW50ICImI3gyQTEwOyI+Cis8IUVOVElUWSBhd2ludCAiJiN4MkExMTsiPgorPCFFTlRJ
VFkgcnBwb2xpbnQgIiYjeDJBMTI7Ij4KKzwhRU5USVRZIHNjcG9saW50ICImI3gyQTEzOyI+Cis8
IUVOVElUWSBucG9saW50ICImI3gyQTE0OyI+Cis8IUVOVElUWSBwb2ludGludCAiJiN4MkExNTsi
PgorPCFFTlRJVFkgcXVhdGludCAiJiN4MkExNjsiPgorPCFFTlRJVFkgaW50bGFyaGsgIiYjeDJB
MTc7Ij4KKzwhRU5USVRZIHBsdXNjaXIgIiYjeDJBMjI7Ij4KKzwhRU5USVRZIHBsdXNhY2lyICIm
I3gyQTIzOyI+Cis8IUVOVElUWSBzaW1wbHVzICImI3gyQTI0OyI+Cis8IUVOVElUWSBwbHVzZHUg
IiYjeDJBMjU7Ij4KKzwhRU5USVRZIHBsdXNzaW0gIiYjeDJBMjY7Ij4KKzwhRU5USVRZIHBsdXN0
d28gIiYjeDJBMjc7Ij4KKzwhRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiPgorPCFFTlRJVFkgbWlu
dXNkdSAiJiN4MkEyQTsiPgorPCFFTlRJVFkgbG9wbHVzICImI3gyQTJEOyI+Cis8IUVOVElUWSBy
b3BsdXMgIiYjeDJBMkU7Ij4KKzwhRU5USVRZIENyb3NzICImI3gyQTJGOyI+Cis8IUVOVElUWSB0
aW1lc2QgIiYjeDJBMzA7Ij4KKzwhRU5USVRZIHRpbWVzYmFyICImI3gyQTMxOyI+Cis8IUVOVElU
WSBzbWFzaHAgIiYjeDJBMzM7Ij4KKzwhRU5USVRZIGxvdGltZXMgIiYjeDJBMzQ7Ij4KKzwhRU5U
SVRZIHJvdGltZXMgIiYjeDJBMzU7Ij4KKzwhRU5USVRZIG90aW1lc2FzICImI3gyQTM2OyI+Cis8
IUVOVElUWSBPdGltZXMgIiYjeDJBMzc7Ij4KKzwhRU5USVRZIG9kaXYgIiYjeDJBMzg7Ij4KKzwh
RU5USVRZIHRyaXBsdXMgIiYjeDJBMzk7Ij4KKzwhRU5USVRZIHRyaW1pbnVzICImI3gyQTNBOyI+
Cis8IUVOVElUWSB0cml0aW1lICImI3gyQTNCOyI+Cis8IUVOVElUWSBpcHJvZCAiJiN4MkEzQzsi
PgorPCFFTlRJVFkgaW50cHJvZCAiJiN4MkEzQzsiPgorPCFFTlRJVFkgYW1hbGcgIiYjeDJBM0Y7
Ij4KKzwhRU5USVRZIGNhcGRvdCAiJiN4MkE0MDsiPgorPCFFTlRJVFkgbmN1cCAiJiN4MkE0Mjsi
PgorPCFFTlRJVFkgbmNhcCAiJiN4MkE0MzsiPgorPCFFTlRJVFkgY2FwYW5kICImI3gyQTQ0OyI+
Cis8IUVOVElUWSBjdXBvciAiJiN4MkE0NTsiPgorPCFFTlRJVFkgY3VwY2FwICImI3gyQTQ2OyI+
Cis8IUVOVElUWSBjYXBjdXAgIiYjeDJBNDc7Ij4KKzwhRU5USVRZIGN1cGJyY2FwICImI3gyQTQ4
OyI+Cis8IUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiPgorPCFFTlRJVFkgY3VwY3VwICImI3gy
QTRBOyI+Cis8IUVOVElUWSBjYXBjYXAgIiYjeDJBNEI7Ij4KKzwhRU5USVRZIGNjdXBzICImI3gy
QTRDOyI+Cis8IUVOVElUWSBjY2FwcyAiJiN4MkE0RDsiPgorPCFFTlRJVFkgY2N1cHNzbSAiJiN4
MkE1MDsiPgorPCFFTlRJVFkgQW5kICImI3gyQTUzOyI+Cis8IUVOVElUWSBPciAiJiN4MkE1NDsi
PgorPCFFTlRJVFkgYW5kYW5kICImI3gyQTU1OyI+Cis8IUVOVElUWSBvcm9yICImI3gyQTU2OyI+
Cis8IUVOVElUWSBvcnNsb3BlICImI3gyQTU3OyI+Cis8IUVOVElUWSBhbmRzbG9wZSAiJiN4MkE1
ODsiPgorPCFFTlRJVFkgYW5kdiAiJiN4MkE1QTsiPgorPCFFTlRJVFkgb3J2ICImI3gyQTVCOyI+
Cis8IUVOVElUWSBhbmRkICImI3gyQTVDOyI+Cis8IUVOVElUWSBvcmQgIiYjeDJBNUQ7Ij4KKzwh
RU5USVRZIHdlZGJhciAiJiN4MkE1RjsiPgorPCFFTlRJVFkgc2RvdGUgIiYjeDJBNjY7Ij4KKzwh
RU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiPgorPCFFTlRJVFkgY29uZ2RvdCAiJiN4MkE2RDsiPgor
PCFFTlRJVFkgbmNvbmdkb3QgIiYjeDJBNkQ7JiN4MzM4OyI+Cis8IUVOVElUWSBlYXN0ZXIgIiYj
eDJBNkU7Ij4KKzwhRU5USVRZIGFwYWNpciAiJiN4MkE2RjsiPgorPCFFTlRJVFkgYXBFICImI3gy
QTcwOyI+Cis8IUVOVElUWSBuYXBFICImI3gyQTcwOyYjeDMzODsiPgorPCFFTlRJVFkgZXBsdXMg
IiYjeDJBNzE7Ij4KKzwhRU5USVRZIHBsdXNlICImI3gyQTcyOyI+Cis8IUVOVElUWSBFc2ltICIm
I3gyQTczOyI+Cis8IUVOVElUWSBDb2xvbmUgIiYjeDJBNzQ7Ij4KKzwhRU5USVRZIEVxdWFsICIm
I3gyQTc1OyI+Cis8IUVOVElUWSBlRERvdCAiJiN4MkE3NzsiPgorPCFFTlRJVFkgZGRvdHNlcSAi
JiN4MkE3NzsiPgorPCFFTlRJVFkgZXF1aXZERCAiJiN4MkE3ODsiPgorPCFFTlRJVFkgbHRjaXIg
IiYjeDJBNzk7Ij4KKzwhRU5USVRZIGd0Y2lyICImI3gyQTdBOyI+Cis8IUVOVElUWSBsdHF1ZXN0
ICImI3gyQTdCOyI+Cis8IUVOVElUWSBndHF1ZXN0ICImI3gyQTdDOyI+Cis8IUVOVElUWSBsZXMg
IiYjeDJBN0Q7Ij4KKzwhRU5USVRZIExlc3NTbGFudEVxdWFsICImI3gyQTdEOyI+Cis8IUVOVElU
WSBsZXFzbGFudCAiJiN4MkE3RDsiPgorPCFFTlRJVFkgbmxlcyAiJiN4MkE3RDsmI3gzMzg7Ij4K
KzwhRU5USVRZIE5vdExlc3NTbGFudEVxdWFsICImI3gyQTdEOyYjeDMzODsiPgorPCFFTlRJVFkg
bmxlcXNsYW50ICImI3gyQTdEOyYjeDMzODsiPgorPCFFTlRJVFkgZ2VzICImI3gyQTdFOyI+Cis8
IUVOVElUWSBHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsiPgorPCFFTlRJVFkgZ2Vxc2xhbnQg
IiYjeDJBN0U7Ij4KKzwhRU5USVRZIG5nZXMgIiYjeDJBN0U7JiN4MzM4OyI+Cis8IUVOVElUWSBO
b3RHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsmI3gzMzg7Ij4KKzwhRU5USVRZIG5nZXFzbGFu
dCAiJiN4MkE3RTsmI3gzMzg7Ij4KKzwhRU5USVRZIGxlc2RvdCAiJiN4MkE3RjsiPgorPCFFTlRJ
VFkgZ2VzZG90ICImI3gyQTgwOyI+Cis8IUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyI+Cis8IUVO
VElUWSBnZXNkb3RvICImI3gyQTgyOyI+Cis8IUVOVElUWSBsZXNkb3RvciAiJiN4MkE4MzsiPgor
PCFFTlRJVFkgZ2VzZG90b2wgIiYjeDJBODQ7Ij4KKzwhRU5USVRZIGxhcCAiJiN4MkE4NTsiPgor
PCFFTlRJVFkgbGVzc2FwcHJveCAiJiN4MkE4NTsiPgorPCFFTlRJVFkgZ2FwICImI3gyQTg2OyI+
Cis8IUVOVElUWSBndHJhcHByb3ggIiYjeDJBODY7Ij4KKzwhRU5USVRZIGxuZSAiJiN4MkE4Nzsi
PgorPCFFTlRJVFkgbG5lcSAiJiN4MkE4NzsiPgorPCFFTlRJVFkgZ25lICImI3gyQTg4OyI+Cis8
IUVOVElUWSBnbmVxICImI3gyQTg4OyI+Cis8IUVOVElUWSBsbmFwICImI3gyQTg5OyI+Cis8IUVO
VElUWSBsbmFwcHJveCAiJiN4MkE4OTsiPgorPCFFTlRJVFkgZ25hcCAiJiN4MkE4QTsiPgorPCFF
TlRJVFkgZ25hcHByb3ggIiYjeDJBOEE7Ij4KKzwhRU5USVRZIGxFZyAiJiN4MkE4QjsiPgorPCFF
TlRJVFkgbGVzc2VxcWd0ciAiJiN4MkE4QjsiPgorPCFFTlRJVFkgZ0VsICImI3gyQThDOyI+Cis8
IUVOVElUWSBndHJlcXFsZXNzICImI3gyQThDOyI+Cis8IUVOVElUWSBsc2ltZSAiJiN4MkE4RDsi
PgorPCFFTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ij4KKzwhRU5USVRZIGxzaW1nICImI3gyQThGOyI+
Cis8IUVOVElUWSBnc2ltbCAiJiN4MkE5MDsiPgorPCFFTlRJVFkgbGdFICImI3gyQTkxOyI+Cis8
IUVOVElUWSBnbEUgIiYjeDJBOTI7Ij4KKzwhRU5USVRZIGxlc2dlcyAiJiN4MkE5MzsiPgorPCFF
TlRJVFkgZ2VzbGVzICImI3gyQTk0OyI+Cis8IUVOVElUWSBlbHMgIiYjeDJBOTU7Ij4KKzwhRU5U
SVRZIGVxc2xhbnRsZXNzICImI3gyQTk1OyI+Cis8IUVOVElUWSBlZ3MgIiYjeDJBOTY7Ij4KKzwh
RU5USVRZIGVxc2xhbnRndHIgIiYjeDJBOTY7Ij4KKzwhRU5USVRZIGVsc2RvdCAiJiN4MkE5Nzsi
PgorPCFFTlRJVFkgZWdzZG90ICImI3gyQTk4OyI+Cis8IUVOVElUWSBlbCAiJiN4MkE5OTsiPgor
PCFFTlRJVFkgZWcgIiYjeDJBOUE7Ij4KKzwhRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ij4KKzwhRU5U
SVRZIHNpbWcgIiYjeDJBOUU7Ij4KKzwhRU5USVRZIHNpbWxFICImI3gyQTlGOyI+Cis8IUVOVElU
WSBzaW1nRSAiJiN4MkFBMDsiPgorPCFFTlRJVFkgTGVzc0xlc3MgIiYjeDJBQTE7Ij4KKzwhRU5U
SVRZIE5vdE5lc3RlZExlc3NMZXNzICImI3gyQUExOyYjeDMzODsiPgorPCFFTlRJVFkgR3JlYXRl
ckdyZWF0ZXIgIiYjeDJBQTI7Ij4KKzwhRU5USVRZIE5vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyICIm
I3gyQUEyOyYjeDMzODsiPgorPCFFTlRJVFkgZ2xqICImI3gyQUE0OyI+Cis8IUVOVElUWSBnbGEg
IiYjeDJBQTU7Ij4KKzwhRU5USVRZIGx0Y2MgIiYjeDJBQTY7Ij4KKzwhRU5USVRZIGd0Y2MgIiYj
eDJBQTc7Ij4KKzwhRU5USVRZIGxlc2NjICImI3gyQUE4OyI+Cis8IUVOVElUWSBnZXNjYyAiJiN4
MkFBOTsiPgorPCFFTlRJVFkgc210ICImI3gyQUFBOyI+Cis8IUVOVElUWSBsYXQgIiYjeDJBQUI7
Ij4KKzwhRU5USVRZIHNtdGUgIiYjeDJBQUM7Ij4KKzwhRU5USVRZIHNtdGVzICImI3gyQUFDOyYj
eEZFMDA7Ij4KKzwhRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ij4KKzwhRU5USVRZIGxhdGVzICImI3gy
QUFEOyYjeEZFMDA7Ij4KKzwhRU5USVRZIGJ1bXBFICImI3gyQUFFOyI+Cis8IUVOVElUWSBwcmUg
IiYjeDJBQUY7Ij4KKzwhRU5USVRZIHByZWNlcSAiJiN4MkFBRjsiPgorPCFFTlRJVFkgUHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsiPgorPCFFTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ij4KKzwh
RU5USVRZIG5wcmVjZXEgIiYjeDJBQUY7JiN4MzM4OyI+Cis8IUVOVElUWSBOb3RQcmVjZWRlc0Vx
dWFsICImI3gyQUFGOyYjeDMzODsiPgorPCFFTlRJVFkgc2NlICImI3gyQUIwOyI+Cis8IUVOVElU
WSBzdWNjZXEgIiYjeDJBQjA7Ij4KKzwhRU5USVRZIFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7Ij4K
KzwhRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyI+Cis8IUVOVElUWSBuc3VjY2VxICImI3gy
QUIwOyYjeDMzODsiPgorPCFFTlRJVFkgTm90U3VjY2VlZHNFcXVhbCAiJiN4MkFCMDsmI3gzMzg7
Ij4KKzwhRU5USVRZIHByRSAiJiN4MkFCMzsiPgorPCFFTlRJVFkgc2NFICImI3gyQUI0OyI+Cis8
IUVOVElUWSBwcm5FICImI3gyQUI1OyI+Cis8IUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiPgor
PCFFTlRJVFkgc2NuRSAiJiN4MkFCNjsiPgorPCFFTlRJVFkgc3VjY25lcXEgIiYjeDJBQjY7Ij4K
KzwhRU5USVRZIHByYXAgIiYjeDJBQjc7Ij4KKzwhRU5USVRZIHByZWNhcHByb3ggIiYjeDJBQjc7
Ij4KKzwhRU5USVRZIHNjYXAgIiYjeDJBQjg7Ij4KKzwhRU5USVRZIHN1Y2NhcHByb3ggIiYjeDJB
Qjg7Ij4KKzwhRU5USVRZIHBybmFwICImI3gyQUI5OyI+Cis8IUVOVElUWSBwcmVjbmFwcHJveCAi
JiN4MkFCOTsiPgorPCFFTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ij4KKzwhRU5USVRZIHN1Y2NuYXBw
cm94ICImI3gyQUJBOyI+Cis8IUVOVElUWSBQciAiJiN4MkFCQjsiPgorPCFFTlRJVFkgU2MgIiYj
eDJBQkM7Ij4KKzwhRU5USVRZIHN1YmRvdCAiJiN4MkFCRDsiPgorPCFFTlRJVFkgc3VwZG90ICIm
I3gyQUJFOyI+Cis8IUVOVElUWSBzdWJwbHVzICImI3gyQUJGOyI+Cis8IUVOVElUWSBzdXBwbHVz
ICImI3gyQUMwOyI+Cis8IUVOVElUWSBzdWJtdWx0ICImI3gyQUMxOyI+Cis8IUVOVElUWSBzdXBt
dWx0ICImI3gyQUMyOyI+Cis8IUVOVElUWSBzdWJlZG90ICImI3gyQUMzOyI+Cis8IUVOVElUWSBz
dXBlZG90ICImI3gyQUM0OyI+Cis8IUVOVElUWSBzdWJFICImI3gyQUM1OyI+Cis8IUVOVElUWSBz
dWJzZXRlcXEgIiYjeDJBQzU7Ij4KKzwhRU5USVRZIG5zdWJFICImI3gyQUM1OyYjeDMzODsiPgor
PCFFTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ij4KKzwhRU5USVRZIHN1cEUgIiYj
eDJBQzY7Ij4KKzwhRU5USVRZIHN1cHNldGVxcSAiJiN4MkFDNjsiPgorPCFFTlRJVFkgbnN1cEUg
IiYjeDJBQzY7JiN4MzM4OyI+Cis8IUVOVElUWSBuc3Vwc2V0ZXFxICImI3gyQUM2OyYjeDMzODsi
PgorPCFFTlRJVFkgc3Vic2ltICImI3gyQUM3OyI+Cis8IUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7
Ij4KKzwhRU5USVRZIHN1Ym5FICImI3gyQUNCOyI+Cis8IUVOVElUWSBzdWJzZXRuZXFxICImI3gy
QUNCOyI+Cis8IUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiPgorPCFFTlRJVFkgdmFy
c3Vic2V0bmVxcSAiJiN4MkFDQjsmI3hGRTAwOyI+Cis8IUVOVElUWSBzdXBuRSAiJiN4MkFDQzsi
PgorPCFFTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiPgorPCFFTlRJVFkgdnN1cG5FICImI3gy
QUNDOyYjeEZFMDA7Ij4KKzwhRU5USVRZIHZhcnN1cHNldG5lcXEgIiYjeDJBQ0M7JiN4RkUwMDsi
PgorPCFFTlRJVFkgY3N1YiAiJiN4MkFDRjsiPgorPCFFTlRJVFkgY3N1cCAiJiN4MkFEMDsiPgor
PCFFTlRJVFkgY3N1YmUgIiYjeDJBRDE7Ij4KKzwhRU5USVRZIGNzdXBlICImI3gyQUQyOyI+Cis8
IUVOVElUWSBzdWJzdXAgIiYjeDJBRDM7Ij4KKzwhRU5USVRZIHN1cHN1YiAiJiN4MkFENDsiPgor
PCFFTlRJVFkgc3Vic3ViICImI3gyQUQ1OyI+Cis8IUVOVElUWSBzdXBzdXAgIiYjeDJBRDY7Ij4K
KzwhRU5USVRZIHN1cGhzdWIgIiYjeDJBRDc7Ij4KKzwhRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7
Ij4KKzwhRU5USVRZIGZvcmt2ICImI3gyQUQ5OyI+Cis8IUVOVElUWSB0b3Bmb3JrICImI3gyQURB
OyI+Cis8IUVOVElUWSBtbGNwICImI3gyQURCOyI+Cis8IUVOVElUWSBEYXNodiAiJiN4MkFFNDsi
PgorPCFFTlRJVFkgRG91YmxlTGVmdFRlZSAiJiN4MkFFNDsiPgorPCFFTlRJVFkgVmRhc2hsICIm
I3gyQUU2OyI+Cis8IUVOVElUWSBCYXJ2ICImI3gyQUU3OyI+Cis8IUVOVElUWSB2QmFyICImI3gy
QUU4OyI+Cis8IUVOVElUWSB2QmFydiAiJiN4MkFFOTsiPgorPCFFTlRJVFkgVmJhciAiJiN4MkFF
QjsiPgorPCFFTlRJVFkgTm90ICImI3gyQUVDOyI+Cis8IUVOVElUWSBiTm90ICImI3gyQUVEOyI+
Cis8IUVOVElUWSBybm1pZCAiJiN4MkFFRTsiPgorPCFFTlRJVFkgY2lybWlkICImI3gyQUVGOyI+
Cis8IUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ij4KKzwhRU5USVRZIHRvcGNpciAiJiN4MkFGMTsi
PgorPCFFTlRJVFkgbmhwYXIgIiYjeDJBRjI7Ij4KKzwhRU5USVRZIHBhcnNpbSAiJiN4MkFGMzsi
PgorPCFFTlRJVFkgcGFyc2wgIiYjeDJBRkQ7Ij4KKzwhRU5USVRZIG5wYXJzbCAiJiN4MkFGRDsm
I3gyMEU1OyI+Cis8IUVOVElUWSBmZmxpZyAiJiN4RkIwMDsiPgorPCFFTlRJVFkgZmlsaWcgIiYj
eEZCMDE7Ij4KKzwhRU5USVRZIGZsbGlnICImI3hGQjAyOyI+Cis8IUVOVElUWSBmZmlsaWcgIiYj
eEZCMDM7Ij4KKzwhRU5USVRZIGZmbGxpZyAiJiN4RkIwNDsiPgorPCFFTlRJVFkgQXNjciAiJiN4
MUQ0OUM7Ij4KKzwhRU5USVRZIENzY3IgIiYjeDFENDlFOyI+Cis8IUVOVElUWSBEc2NyICImI3gx
RDQ5RjsiPgorPCFFTlRJVFkgR3NjciAiJiN4MUQ0QTI7Ij4KKzwhRU5USVRZIEpzY3IgIiYjeDFE
NEE1OyI+Cis8IUVOVElUWSBLc2NyICImI3gxRDRBNjsiPgorPCFFTlRJVFkgTnNjciAiJiN4MUQ0
QTk7Ij4KKzwhRU5USVRZIE9zY3IgIiYjeDFENEFBOyI+Cis8IUVOVElUWSBQc2NyICImI3gxRDRB
QjsiPgorPCFFTlRJVFkgUXNjciAiJiN4MUQ0QUM7Ij4KKzwhRU5USVRZIFNzY3IgIiYjeDFENEFF
OyI+Cis8IUVOVElUWSBUc2NyICImI3gxRDRBRjsiPgorPCFFTlRJVFkgVXNjciAiJiN4MUQ0QjA7
Ij4KKzwhRU5USVRZIFZzY3IgIiYjeDFENEIxOyI+Cis8IUVOVElUWSBXc2NyICImI3gxRDRCMjsi
PgorPCFFTlRJVFkgWHNjciAiJiN4MUQ0QjM7Ij4KKzwhRU5USVRZIFlzY3IgIiYjeDFENEI0OyI+
Cis8IUVOVElUWSBac2NyICImI3gxRDRCNTsiPgorPCFFTlRJVFkgYXNjciAiJiN4MUQ0QjY7Ij4K
KzwhRU5USVRZIGJzY3IgIiYjeDFENEI3OyI+Cis8IUVOVElUWSBjc2NyICImI3gxRDRCODsiPgor
PCFFTlRJVFkgZHNjciAiJiN4MUQ0Qjk7Ij4KKzwhRU5USVRZIGZzY3IgIiYjeDFENEJCOyI+Cis8
IUVOVElUWSBoc2NyICImI3gxRDRCRDsiPgorPCFFTlRJVFkgaXNjciAiJiN4MUQ0QkU7Ij4KKzwh
RU5USVRZIGpzY3IgIiYjeDFENEJGOyI+Cis8IUVOVElUWSBrc2NyICImI3gxRDRDMDsiPgorPCFF
TlRJVFkgbHNjciAiJiN4MUQ0QzE7Ij4KKzwhRU5USVRZIG1zY3IgIiYjeDFENEMyOyI+Cis8IUVO
VElUWSBuc2NyICImI3gxRDRDMzsiPgorPCFFTlRJVFkgcHNjciAiJiN4MUQ0QzU7Ij4KKzwhRU5U
SVRZIHFzY3IgIiYjeDFENEM2OyI+Cis8IUVOVElUWSByc2NyICImI3gxRDRDNzsiPgorPCFFTlRJ
VFkgc3NjciAiJiN4MUQ0Qzg7Ij4KKzwhRU5USVRZIHRzY3IgIiYjeDFENEM5OyI+Cis8IUVOVElU
WSB1c2NyICImI3gxRDRDQTsiPgorPCFFTlRJVFkgdnNjciAiJiN4MUQ0Q0I7Ij4KKzwhRU5USVRZ
IHdzY3IgIiYjeDFENENDOyI+Cis8IUVOVElUWSB4c2NyICImI3gxRDRDRDsiPgorPCFFTlRJVFkg
eXNjciAiJiN4MUQ0Q0U7Ij4KKzwhRU5USVRZIHpzY3IgIiYjeDFENENGOyI+Cis8IUVOVElUWSBB
ZnIgIiYjeDFENTA0OyI+Cis8IUVOVElUWSBCZnIgIiYjeDFENTA1OyI+Cis8IUVOVElUWSBEZnIg
IiYjeDFENTA3OyI+Cis8IUVOVElUWSBFZnIgIiYjeDFENTA4OyI+Cis8IUVOVElUWSBGZnIgIiYj
eDFENTA5OyI+Cis8IUVOVElUWSBHZnIgIiYjeDFENTBBOyI+Cis8IUVOVElUWSBKZnIgIiYjeDFE
NTBEOyI+Cis8IUVOVElUWSBLZnIgIiYjeDFENTBFOyI+Cis8IUVOVElUWSBMZnIgIiYjeDFENTBG
OyI+Cis8IUVOVElUWSBNZnIgIiYjeDFENTEwOyI+Cis8IUVOVElUWSBOZnIgIiYjeDFENTExOyI+
Cis8IUVOVElUWSBPZnIgIiYjeDFENTEyOyI+Cis8IUVOVElUWSBQZnIgIiYjeDFENTEzOyI+Cis8
IUVOVElUWSBRZnIgIiYjeDFENTE0OyI+Cis8IUVOVElUWSBTZnIgIiYjeDFENTE2OyI+Cis8IUVO
VElUWSBUZnIgIiYjeDFENTE3OyI+Cis8IUVOVElUWSBVZnIgIiYjeDFENTE4OyI+Cis8IUVOVElU
WSBWZnIgIiYjeDFENTE5OyI+Cis8IUVOVElUWSBXZnIgIiYjeDFENTFBOyI+Cis8IUVOVElUWSBY
ZnIgIiYjeDFENTFCOyI+Cis8IUVOVElUWSBZZnIgIiYjeDFENTFDOyI+Cis8IUVOVElUWSBhZnIg
IiYjeDFENTFFOyI+Cis8IUVOVElUWSBiZnIgIiYjeDFENTFGOyI+Cis8IUVOVElUWSBjZnIgIiYj
eDFENTIwOyI+Cis8IUVOVElUWSBkZnIgIiYjeDFENTIxOyI+Cis8IUVOVElUWSBlZnIgIiYjeDFE
NTIyOyI+Cis8IUVOVElUWSBmZnIgIiYjeDFENTIzOyI+Cis8IUVOVElUWSBnZnIgIiYjeDFENTI0
OyI+Cis8IUVOVElUWSBoZnIgIiYjeDFENTI1OyI+Cis8IUVOVElUWSBpZnIgIiYjeDFENTI2OyI+
Cis8IUVOVElUWSBqZnIgIiYjeDFENTI3OyI+Cis8IUVOVElUWSBrZnIgIiYjeDFENTI4OyI+Cis8
IUVOVElUWSBsZnIgIiYjeDFENTI5OyI+Cis8IUVOVElUWSBtZnIgIiYjeDFENTJBOyI+Cis8IUVO
VElUWSBuZnIgIiYjeDFENTJCOyI+Cis8IUVOVElUWSBvZnIgIiYjeDFENTJDOyI+Cis8IUVOVElU
WSBwZnIgIiYjeDFENTJEOyI+Cis8IUVOVElUWSBxZnIgIiYjeDFENTJFOyI+Cis8IUVOVElUWSBy
ZnIgIiYjeDFENTJGOyI+Cis8IUVOVElUWSBzZnIgIiYjeDFENTMwOyI+Cis8IUVOVElUWSB0ZnIg
IiYjeDFENTMxOyI+Cis8IUVOVElUWSB1ZnIgIiYjeDFENTMyOyI+Cis8IUVOVElUWSB2ZnIgIiYj
eDFENTMzOyI+Cis8IUVOVElUWSB3ZnIgIiYjeDFENTM0OyI+Cis8IUVOVElUWSB4ZnIgIiYjeDFE
NTM1OyI+Cis8IUVOVElUWSB5ZnIgIiYjeDFENTM2OyI+Cis8IUVOVElUWSB6ZnIgIiYjeDFENTM3
OyI+Cis8IUVOVElUWSBBb3BmICImI3gxRDUzODsiPgorPCFFTlRJVFkgQm9wZiAiJiN4MUQ1Mzk7
Ij4KKzwhRU5USVRZIERvcGYgIiYjeDFENTNCOyI+Cis8IUVOVElUWSBFb3BmICImI3gxRDUzQzsi
PgorPCFFTlRJVFkgRm9wZiAiJiN4MUQ1M0Q7Ij4KKzwhRU5USVRZIEdvcGYgIiYjeDFENTNFOyI+
Cis8IUVOVElUWSBJb3BmICImI3gxRDU0MDsiPgorPCFFTlRJVFkgSm9wZiAiJiN4MUQ1NDE7Ij4K
KzwhRU5USVRZIEtvcGYgIiYjeDFENTQyOyI+Cis8IUVOVElUWSBMb3BmICImI3gxRDU0MzsiPgor
PCFFTlRJVFkgTW9wZiAiJiN4MUQ1NDQ7Ij4KKzwhRU5USVRZIE9vcGYgIiYjeDFENTQ2OyI+Cis8
IUVOVElUWSBTb3BmICImI3gxRDU0QTsiPgorPCFFTlRJVFkgVG9wZiAiJiN4MUQ1NEI7Ij4KKzwh
RU5USVRZIFVvcGYgIiYjeDFENTRDOyI+Cis8IUVOVElUWSBWb3BmICImI3gxRDU0RDsiPgorPCFF
TlRJVFkgV29wZiAiJiN4MUQ1NEU7Ij4KKzwhRU5USVRZIFhvcGYgIiYjeDFENTRGOyI+Cis8IUVO
VElUWSBZb3BmICImI3gxRDU1MDsiPgorPCFFTlRJVFkgYW9wZiAiJiN4MUQ1NTI7Ij4KKzwhRU5U
SVRZIGJvcGYgIiYjeDFENTUzOyI+Cis8IUVOVElUWSBjb3BmICImI3gxRDU1NDsiPgorPCFFTlRJ
VFkgZG9wZiAiJiN4MUQ1NTU7Ij4KKzwhRU5USVRZIGVvcGYgIiYjeDFENTU2OyI+Cis8IUVOVElU
WSBmb3BmICImI3gxRDU1NzsiPgorPCFFTlRJVFkgZ29wZiAiJiN4MUQ1NTg7Ij4KKzwhRU5USVRZ
IGhvcGYgIiYjeDFENTU5OyI+Cis8IUVOVElUWSBpb3BmICImI3gxRDU1QTsiPgorPCFFTlRJVFkg
am9wZiAiJiN4MUQ1NUI7Ij4KKzwhRU5USVRZIGtvcGYgIiYjeDFENTVDOyI+Cis8IUVOVElUWSBs
b3BmICImI3gxRDU1RDsiPgorPCFFTlRJVFkgbW9wZiAiJiN4MUQ1NUU7Ij4KKzwhRU5USVRZIG5v
cGYgIiYjeDFENTVGOyI+Cis8IUVOVElUWSBvb3BmICImI3gxRDU2MDsiPgorPCFFTlRJVFkgcG9w
ZiAiJiN4MUQ1NjE7Ij4KKzwhRU5USVRZIHFvcGYgIiYjeDFENTYyOyI+Cis8IUVOVElUWSByb3Bm
ICImI3gxRDU2MzsiPgorPCFFTlRJVFkgc29wZiAiJiN4MUQ1NjQ7Ij4KKzwhRU5USVRZIHRvcGYg
IiYjeDFENTY1OyI+Cis8IUVOVElUWSB1b3BmICImI3gxRDU2NjsiPgorPCFFTlRJVFkgdm9wZiAi
JiN4MUQ1Njc7Ij4KKzwhRU5USVRZIHdvcGYgIiYjeDFENTY4OyI+Cis8IUVOVElUWSB4b3BmICIm
I3gxRDU2OTsiPgorPCFFTlRJVFkgeW9wZiAiJiN4MUQ1NkE7Ij4KKzwhRU5USVRZIHpvcGYgIiYj
eDFENTZCOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weQppbmRl
eCA5ZDc2MzE4MWQ4MmQuLjg4ZDQ3OGZlMGVmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L2Rvd25sb2FkLnB5CkBAIC03LDggKzcsNyBAQCBpbXBvcnQganNvbgogaW1wb3J0IGlv
CiBpbXBvcnQgb3MKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKLQot
ZnJvbSBzaXgubW92ZXMudXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Zyb20gdXJsbGli
LnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KIAogdHJ5OgogICAgIGltcG9ydCB6c3RhbmRhcmQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCA5YTQzYTY4ZjFmYmMuLjRiOTcz
ZDUzOTlhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQpAQCAtMSw3ICsx
LDYgQEAKIGltcG9ydCBvcy5wYXRoCiBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKLWZy
b20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIHdpdGhfbWV0YWNsYXNzCi1mcm9tIHNpeC5tb3Zlcy51
cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHBhcnNlCitmcm9tIHVybGxpYi5wYXJzZSBp
bXBvcnQgdXJsam9pbiwgdXJscGFyc2UsIHBhcnNlX3FzCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0
YSwgYWJzdHJhY3Rwcm9wZXJ0eQogCiBmcm9tIC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aApAQCAt
NDIsNyArNDEsNyBAQCBjbGFzcyBNYW5pZmVzdEl0ZW1NZXRhKEFCQ01ldGEpOgogICAgICAgICBy
ZXR1cm4gcnYgICMgdHlwZTogaWdub3JlCiAKIAotY2xhc3MgTWFuaWZlc3RJdGVtKHdpdGhfbWV0
YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKK2NsYXNzIE1hbmlmZXN0SXRlbShtZXRhY2xhc3M9
TWFuaWZlc3RJdGVtTWV0YSk6CiAgICAgX19zbG90c19fID0gKCJfdGVzdHNfcm9vdCIsICJwYXRo
IikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCBwYXRoKToKQEAgLTEwNCw3
ICsxMDMsNyBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0od2l0aF9tZXRhY2xhc3MoTWFuaWZlc3RJdGVt
TWV0YSkpOgogCiAKIGNsYXNzIFVSTE1hbmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgotICAgIF9f
c2xvdHNfXyA9ICgidXJsX2Jhc2UiLCAiX3VybCIsICJfZXh0cmFzIikKKyAgICBfX3Nsb3RzX18g
PSAoInVybF9iYXNlIiwgIl91cmwiLCAiX2V4dHJhcyIsICJfZmxhZ3MiKQogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgIHRlc3RzX3Jvb3QsICAjIHR5cGU6IFRleHQK
QEAgLTEyMCw2ICsxMTksOSBAQCBjbGFzcyBVUkxNYW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToK
ICAgICAgICAgYXNzZXJ0IHVybCBpcyBOb25lIG9yIHVybFswXSAhPSAiLyIKICAgICAgICAgc2Vs
Zi5fdXJsID0gdXJsCiAgICAgICAgIHNlbGYuX2V4dHJhcyA9IGV4dHJhcworICAgICAgICBwYXJz
ZWRfdXJsID0gdXJscGFyc2Uoc2VsZi51cmwpCisgICAgICAgIHNlbGYuX2ZsYWdzID0gKHNldChw
YXJzZWRfdXJsLnBhdGgucnNwbGl0KCIvIiwgMSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkgfAorICAg
ICAgICAgICAgICAgICAgICAgICBzZXQocGFyc2VfcXMocGFyc2VkX3VybC5xdWVyeSkuZ2V0KCJ3
cHRfZmxhZ3MiLCBbXSkpKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlkKHNlbGYpOgpAQCAt
MTM4LDIyICsxNDAsMTkgQEAgY2xhc3MgVVJMTWFuaWZlc3RJdGVtKE1hbmlmZXN0SXRlbSk6CiAg
ICAgQHByb3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+
IGJvb2wKLSAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICJodHRwcyIgaW4g
ZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisgICAgICAgIHJldHVybiAiaHR0cHMi
IGluIHNlbGYuX2ZsYWdzIG9yICJzZXJ2aWNld29ya2VyIiBpbiBzZWxmLl9mbGFncwogCiAgICAg
QHByb3BlcnR5CiAgICAgZGVmIGgyKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wK
LSAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwg
MSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICJoMiIgaW4gZmxhZ3MKKyAg
ICAgICAgcmV0dXJuICJoMiIgaW4gc2VsZi5fZmxhZ3MKIAogICAgIEBwcm9wZXJ0eQogICAgIGRl
ZiBzdWJkb21haW4oc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICBm
bGFncyA9IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxp
dCgiLiIpWzE6LTFdKQogICAgICAgICAjIE5vdGU6IHRoaXMgaXMgY3VycmVudGx5IGhhcmQtY29k
ZWQgdG8gY2hlY2sgZm9yIGB3d3dgLCByYXRoZXIgdGhhbgogICAgICAgICAjIGFsbCBwb3NzaWJs
ZSB2YWxpZCBzdWJkb21haW5zLiBJdCBjYW4gYmUgZXh0ZW5kZWQgaWYgbmVlZGVkLgotICAgICAg
ICByZXR1cm4gInd3dyIgaW4gZmxhZ3MKKyAgICAgICAgcmV0dXJuICJ3d3ciIGluIHNlbGYuX2Zs
YWdzCiAKICAgICBkZWYgdG9fanNvbihzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBs
ZVtPcHRpb25hbFtUZXh0XSwgRGljdFtBbnksIEFueV1dCkBAIC0yODksNyArMjg4LDcgQEAgY2xh
c3MgUmVmVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICBpZiBzZWxmLmRwaSBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgIGV4dHJhc1siZHBpIl0gPSBzZWxmLmRwaQogICAgICAgICBpZiBz
ZWxmLmZ1enp5OgotICAgICAgICAgICAgZXh0cmFzWyJmdXp6eSJdID0gbGlzdChpdGVyaXRlbXMo
c2VsZi5mdXp6eSkpCisgICAgICAgICAgICBleHRyYXNbImZ1enp5Il0gPSBsaXN0KHNlbGYuZnV6
enkuaXRlbXMoKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvanNvbmxpYi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvanNvbmxpYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjQ5ZWFmMDJlODAwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvanNv
bmxpYi5weQpAQCAtMCwwICsxLDEzOSBAQAoraW1wb3J0IHJlCitpbXBvcnQganNvbgorCisKK01Z
UFkgPSBGYWxzZQoraWYgTVlQWToKKyAgICAjIE1ZUFkgaXMgc2V0IHRvIFRydWUgd2hlbiBydW4g
dW5kZXIgTXlweS4KKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBBbnlTdHIsIENhbGxhYmxl
LCBEaWN0LCBJTywgVGV4dAorCisKK19fYWxsX18gPSBbImxvYWQiLCAiZHVtcF9sb2NhbCIsICJk
dW1wX2xvY2FsIiwgImR1bXBfZGlzdCIsICJkdW1wc19kaXN0Il0KKworCit0cnk6CisgICAgaW1w
b3J0IHVqc29uCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaGFzX3Vqc29uID0gRmFsc2UKK2Vs
c2U6CisgICAgaGFzX3Vqc29uID0gVHJ1ZQorCisjCisjIGxvYWQKKyMKKworaWYgaGFzX3Vqc29u
OgorICAgIGxvYWQgPSB1anNvbi5sb2FkICAjIHR5cGU6IENhbGxhYmxlW1tJT1tBbnlTdHJdXSwg
QW55XQorCitlbHNlOgorICAgIGxvYWQgPSBqc29uLmxvYWQKKworCisjCisjIGxvYWRzCisjCisK
K2lmIGhhc191anNvbjoKKyAgICBsb2FkcyA9IHVqc29uLmxvYWRzICAjIHR5cGU6IENhbGxhYmxl
W1tBbnlTdHJdLCBBbnldCisKK2Vsc2U6CisgICAgbG9hZHMgPSBqc29uLmxvYWRzCisKKworIwor
IyBkdW1wL2R1bXBzX2xvY2FsIG9wdGlvbnMgZm9yIHNvbWUgbGlicmFyaWVzCisjCitfdWpzb25f
ZHVtcF9sb2NhbF9rd2FyZ3MgPSB7CisgICAgJ2Vuc3VyZV9hc2NpaSc6IEZhbHNlLAorICAgICdl
c2NhcGVfZm9yd2FyZF9zbGFzaGVzJzogRmFsc2UsCisgICAgJ2luZGVudCc6IDEsCisgICAgJ3Jl
amVjdF9ieXRlcyc6IFRydWUsCit9ICAjIHR5cGU6IERpY3Rbc3RyLCBBbnldCisKKworX2pzb25f
ZHVtcF9sb2NhbF9rd2FyZ3MgPSB7CisgICAgJ2Vuc3VyZV9hc2NpaSc6IEZhbHNlLAorICAgICdp
bmRlbnQnOiAxLAorICAgICdzZXBhcmF0b3JzJzogKCcsJywgJzogJyksCit9ICAjIHR5cGU6IERp
Y3Rbc3RyLCBBbnldCisKKworIworIyBkdW1wX2xvY2FsIChmb3IgbG9jYWwsIG5vbi1kaXN0cmli
dXRlZCB1c2FnZSBvZiBKU09OKQorIworCitpZiBoYXNfdWpzb246CisgICAgZGVmIGR1bXBfbG9j
YWwob2JqLCBmcCk6CisgICAgICAgICMgdHlwZTogKEFueSwgSU9bc3RyXSkgLT4gTm9uZQorICAg
ICAgICByZXR1cm4gdWpzb24uZHVtcChvYmosIGZwLCAqKl91anNvbl9kdW1wX2xvY2FsX2t3YXJn
cykKKworZWxzZToKKyAgICBkZWYgZHVtcF9sb2NhbChvYmosIGZwKToKKyAgICAgICAgIyB0eXBl
OiAoQW55LCBJT1tzdHJdKSAtPiBOb25lCisgICAgICAgIHJldHVybiBqc29uLmR1bXAob2JqLCBm
cCwgKipfanNvbl9kdW1wX2xvY2FsX2t3YXJncykKKworCisjCisjIGR1bXBzX2xvY2FsIChmb3Ig
bG9jYWwsIG5vbi1kaXN0cmlidXRlZCB1c2FnZSBvZiBKU09OKQorIworCitpZiBoYXNfdWpzb246
CisgICAgZGVmIGR1bXBzX2xvY2FsKG9iaik6CisgICAgICAgICMgdHlwZTogKEFueSkgLT4gVGV4
dAorICAgICAgICByZXR1cm4gdWpzb24uZHVtcHMob2JqLCAqKl91anNvbl9kdW1wX2xvY2FsX2t3
YXJncykKKworZWxzZToKKyAgICBkZWYgZHVtcHNfbG9jYWwob2JqKToKKyAgICAgICAgIyB0eXBl
OiAoQW55KSAtPiBUZXh0CisgICAgICAgIHJldHVybiBqc29uLmR1bXBzKG9iaiwgKipfanNvbl9k
dW1wX2xvY2FsX2t3YXJncykKKworCisjCisjIGR1bXAvZHVtcHNfZGlzdCAoZm9yIGRpc3RyaWJ1
dGVkIHVzYWdlIG9mIEpTT04gd2hlcmUgZmlsZXMgc2hvdWxkIHNhZmVseSByb3VuZHRyaXApCisj
CisKK191anNvbl9kdW1wX2Rpc3Rfa3dhcmdzID0geworICAgICdzb3J0X2tleXMnOiBUcnVlLAor
ICAgICdpbmRlbnQnOiAxLAorICAgICdyZWplY3RfYnl0ZXMnOiBUcnVlLAorfSAgIyB0eXBlOiBE
aWN0W3N0ciwgQW55XQorCisKK19qc29uX2R1bXBfZGlzdF9rd2FyZ3MgPSB7CisgICAgJ3NvcnRf
a2V5cyc6IFRydWUsCisgICAgJ2luZGVudCc6IDEsCisgICAgJ3NlcGFyYXRvcnMnOiAoJywnLCAn
OiAnKSwKK30gICMgdHlwZTogRGljdFtzdHIsIEFueV0KKworCitpZiBoYXNfdWpzb246CisgICAg
aWYgdWpzb24uZHVtcHMoW10sIGluZGVudD0xKSA9PSAiW10iOgorICAgICAgICAjIG9wdGltaXN0
aWNhbGx5IHNlZSBpZiBodHRwczovL2dpdGh1Yi5jb20vdWx0cmFqc29uL3VsdHJhanNvbi9pc3N1
ZXMvNDI5IGlzIGZpeGVkCisgICAgICAgIGRlZiBfdWpzb25fZml4dXAocyk6CisgICAgICAgICAg
ICAjIHR5cGU6IChzdHIpIC0+IHN0cgorICAgICAgICAgICAgcmV0dXJuIHMKKyAgICBlbHNlOgor
ICAgICAgICBfdWpzb25fZml4dXBfcmUgPSByZS5jb21waWxlKHIiKFtcW3tdKVtcblx4MjBdKyhb
fVxdXSkiKQorCisgICAgICAgIGRlZiBfdWpzb25fZml4dXAocyk6CisgICAgICAgICAgICAjIHR5
cGU6IChzdHIpIC0+IHN0cgorICAgICAgICAgICAgcmV0dXJuIF91anNvbl9maXh1cF9yZS5zdWIo
CisgICAgICAgICAgICAgICAgbGFtYmRhIG06IG0uZ3JvdXAoMSkgKyBtLmdyb3VwKDIpLAorICAg
ICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICkKKworICAgIGRlZiBkdW1wX2Rpc3Qob2JqLCBm
cCk6CisgICAgICAgICMgdHlwZTogKEFueSwgSU9bc3RyXSkgLT4gTm9uZQorICAgICAgICBmcC53
cml0ZShfdWpzb25fZml4dXAodWpzb24uZHVtcHMob2JqLCAqKl91anNvbl9kdW1wX2Rpc3Rfa3dh
cmdzKSkpCisKKyAgICBkZWYgZHVtcHNfZGlzdChvYmopOgorICAgICAgICAjIHR5cGU6IChBbnkp
IC0+IFRleHQKKyAgICAgICAgcmV0dXJuIF91anNvbl9maXh1cCh1anNvbi5kdW1wcyhvYmosICoq
X3Vqc29uX2R1bXBfZGlzdF9rd2FyZ3MpKQorZWxzZToKKyAgICBkZWYgZHVtcF9kaXN0KG9iaiwg
ZnApOgorICAgICAgICAjIHR5cGU6IChBbnksIElPW3N0cl0pIC0+IE5vbmUKKyAgICAgICAganNv
bi5kdW1wKG9iaiwgZnAsICoqX2pzb25fZHVtcF9kaXN0X2t3YXJncykKKworICAgIGRlZiBkdW1w
c19kaXN0KG9iaik6CisgICAgICAgICMgdHlwZTogKEFueSkgLT4gVGV4dAorICAgICAgICByZXR1
cm4ganNvbi5kdW1wcyhvYmosICoqX2pzb25fZHVtcF9kaXN0X2t3YXJncykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvbG9nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9sb2cucHkKaW5kZXggOWUyYWQ3NDA4MWU0Li42NTUxYzJiNWY3Y2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvbG9nLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbG9nLnB5CkBAIC0xLDE1ICsxLDEwIEBACiBpbXBv
cnQgbG9nZ2luZwotaW1wb3J0IHN5cwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigibWFu
aWZlc3QiKQogCi1kZWYgc2V0dXAoKToKK2RlZiBlbmFibGVfZGVidWdfbG9nZ2luZygpOgogICAg
ICMgdHlwZTogKCkgLT4gTm9uZQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQot
ICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKLSAgICBmb3Jt
YXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcihsb2dnaW5nLkJBU0lDX0ZPUk1BVCwgTm9uZSkKLSAg
ICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIo
aGFuZGxlcikKIAogZGVmIGdldF9sb2dnZXIoKToKICAgICAjIHR5cGU6ICgpIC0+IGxvZ2dpbmcu
TG9nZ2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCA0
NDljZDI0NWFjYmMuLjlmMWU5MDJkMzFhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L21hbmlmZXN0LnB5CkBAIC0xLDE4ICsxLDEyIEBACiBpbXBvcnQgaW8KLWltcG9ydCBpdGVy
dG9vbHMKLWltcG9ydCBqc29uCiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGZyb20gYXRvbWljd3Jp
dGVzIGltcG9ydCBhdG9taWNfd3JpdGUKIGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKIGZyb20g
bXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQb29sLCBjcHVfY291bnQKLWZyb20gc2l4IGltcG9ydCAo
Ci0gICAgUFkzLAotICAgIGVuc3VyZV90ZXh0LAotICAgIGl0ZXJpdGVtcywKLSAgICBpdGVydmFs
dWVzLAotICAgIHN0cmluZ190eXBlcywKLSkKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfdGV4dAog
Citmcm9tIC4gaW1wb3J0IGpzb25saWIKIGZyb20gLiBpbXBvcnQgdmNzCiBmcm9tIC5pdGVtIGlt
cG9ydCAoQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwKICAgICAgICAgICAgICAgICAgICBDcmFzaFRl
c3QsCkBAIC00NSwxMSArMzksNiBAQCBpZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBU
eXBlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKLXRyeToKLSAgICBpbXBvcnQgdWpz
b24KLSAgICBmYXN0X2pzb24gPSB1anNvbgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZhc3Rf
anNvbiA9IGpzb24gICMgdHlwZTogaWdub3JlCiAKIENVUlJFTlRfVkVSU0lPTiA9IDggICMgdHlw
ZTogaW50CiAKQEAgLTk3LDcgKzg2LDcgQEAgY2xhc3MgTWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0
YVR5cGUpOgogICAgICAgICAiIiJEaWN0aW9uYXJ5IHN1YmNsYXNzIGNvbnRhaW5pbmcgYSBUeXBl
RGF0YSBpbnN0YW5jZSBmb3IgZWFjaCB0ZXN0IHR5cGUsCiAgICAgICAgIGtleWVkIGJ5IHR5cGUg
bmFtZSIiIgogICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gRmFsc2UgICMgdHlwZTogYm9vbAot
ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoaXRlbV9jbGFzc2VzKToKKyAgICAg
ICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbV9jbGFzc2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBz
ZWxmW2tleV0gPSBUeXBlRGF0YShtYW5pZmVzdCwgdmFsdWUpCiAgICAgICAgIHNlbGYuaW5pdGlh
bGl6ZWQgPSBUcnVlCiAgICAgICAgIHNlbGYuanNvbl9vYmogPSBOb25lICAjIHR5cGU6IE5vbmUK
QEAgLTExMyw3ICsxMDIsNyBAQCBjbGFzcyBNYW5pZmVzdERhdGEoTWFuaWZlc3REYXRhVHlwZSk6
CiAgICAgICAgICIiIkdldCBhIGxpc3Qgb2YgYWxsIHBhdGhzIGNvbnRhaW5pbmcgdGVzdCBpdGVt
cwogICAgICAgICB3aXRob3V0IGFjdHVhbGx5IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIi
CiAgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCi0gICAgICAgIGZvciBpdGVt
X2RhdGEgaW4gaXRlcnZhbHVlcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW1fZGF0YSBpbiBzZWxm
LnZhbHVlcygpOgogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbV9kYXRhOgogICAgICAgICAg
ICAgICAgIHJ2LmFkZChvcy5wYXRoLnNlcC5qb2luKGl0ZW0pKQogICAgICAgICByZXR1cm4gcnYK
QEAgLTEyMSw3ICsxMTAsNyBAQCBjbGFzcyBNYW5pZmVzdERhdGEoTWFuaWZlc3REYXRhVHlwZSk6
CiAgICAgZGVmIHR5cGVfYnlfcGF0aChzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0
W1R1cGxlW1RleHQsIC4uLl0sIFRleHRdCiAgICAgICAgIHJ2ID0ge30KLSAgICAgICAgZm9yIGl0
ZW1fdHlwZSwgaXRlbV9kYXRhIGluIGl0ZXJpdGVtcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW1f
dHlwZSwgaXRlbV9kYXRhIGluIHNlbGYuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBpdGVtIGlu
IGl0ZW1fZGF0YToKICAgICAgICAgICAgICAgICBydltpdGVtXSA9IGl0ZW1fdHlwZQogICAgICAg
ICByZXR1cm4gcnYKQEAgLTE2Myw3ICsxNTIsNyBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgog
ICAgICAgICB0cGF0aF9sZW4gPSBsZW4odHBhdGgpCiAKICAgICAgICAgZm9yIHR5cGVfdGVzdHMg
aW4gc2VsZi5fZGF0YS52YWx1ZXMoKToKLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiBp
dGVyaXRlbXModHlwZV90ZXN0cyk6CisgICAgICAgICAgICBmb3IgcGF0aCwgdGVzdHMgaW4gdHlw
ZV90ZXN0cy5pdGVtcygpOgogICAgICAgICAgICAgICAgIGlmIHBhdGhbOnRwYXRoX2xlbl0gPT0g
dHBhdGg6CiAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAg
ICAgICAgICAgICAgICAgeWllbGQgdGVzdApAQCAtMTc4LDYgKzE2Nyw4IEBAIGNsYXNzIE1hbmlm
ZXN0KG9iamVjdCk6CiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRoZSBjYXNlIHdlIGFyZSBub3Qg
dXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4gaXRlbSBmcm9tCiAgICAgICAg
IHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVmdW5jdCBlbnRyaWVzIGZyb20g
dGhlIG1hbmlmZXN0LiIiIgogCisgICAgICAgIGxvZ2dlciA9IGdldF9sb2dnZXIoKQorCiAgICAg
ICAgIGNoYW5nZWQgPSBGYWxzZQogCiAgICAgICAgICMgQ3JlYXRlIGxvY2FsIHZhcmlhYmxlIHJl
ZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZvaWQgdGhlCkBAIC0yMjYsMzUgKzIxNyw1
MiBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICB0b191cGRh
dGUuYXBwZW5kKHNvdXJjZV9maWxlKQogCiAgICAgICAgIGlmIHRvX3VwZGF0ZToKKyAgICAgICAg
ICAgIGxvZ2dlci5kZWJ1ZygiQ29tcHV0aW5nIG1hbmlmZXN0IHVwZGF0ZSBmb3IgJXMgaXRlbXMi
ICUgbGVuKHRvX3VwZGF0ZSkpCiAgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQogCisKKyAgICAg
ICAgIyAyNSBpdGVtcyB3YXMgZGVyaXZlZCBleHBlcmltZW50YWxseSAoMjAyMC0wMSkgdG8gYmUg
YXBwcm94aW1hdGVseSB0aGUKKyAgICAgICAgIyBwb2ludCBhdCB3aGljaCBpdCBpcyBxdWlja2Vy
IHRvIGNyZWF0ZSBhIFBvb2wgYW5kIHBhcmFsbGVsaXplIHVwZGF0ZS4KKyAgICAgICAgcG9vbCA9
IE5vbmUKICAgICAgICAgaWYgcGFyYWxsZWwgYW5kIGxlbih0b191cGRhdGUpID4gMjUgYW5kIGNw
dV9jb3VudCgpID4gMToKLSAgICAgICAgICAgICMgMjUgZGVyaXZlZCBleHBlcmltZW50YWxseSAo
MjAyMC0wMSkgdG8gYmUgYXBwcm94aW1hdGVseQotICAgICAgICAgICAgIyB0aGUgcG9pbnQgYXQg
d2hpY2ggaXQgaXMgcXVpY2tlciB0byBjcmVhdGUgUG9vbCBhbmQKLSAgICAgICAgICAgICMgcGFy
YWxsZWxpemUgdGhpcwotICAgICAgICAgICAgcG9vbCA9IFBvb2woKQorICAgICAgICAgICAgIyBP
biBQeXRob24gMyBvbiBXaW5kb3dzLCB1c2luZyA+PSBNQVhJTVVNX1dBSVRfT0JKRUNUUyBwcm9j
ZXNzZXMKKyAgICAgICAgICAgICMgY2F1c2VzIGEgY3Jhc2ggaW4gdGhlIG11bHRpcHJvY2Vzc2lu
ZyBtb2R1bGUuIFdoaWxzdCB0aGlzIGVudW0KKyAgICAgICAgICAgICMgY2FuIHRlY2huaWNhbGx5
IGhhdmUgYW55IHZhbHVlLCBpdCBpcyB1c3VhbGx5IDY0LiBGb3Igc2FmZXR5LAorICAgICAgICAg
ICAgIyByZXN0cmljdCBtYW5pZmVzdCByZWdlbmVyYXRpb24gdG8gNDggcHJvY2Vzc2VzIG9uIFdp
bmRvd3MuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIFNlZSBodHRwczovL2J1Z3MucHl0
aG9uLm9yZy9pc3N1ZTI2OTAzIGFuZCBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTQwMjYz
CisgICAgICAgICAgICBwcm9jZXNzZXMgPSBjcHVfY291bnQoKQorICAgICAgICAgICAgaWYgc3lz
LnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIHByb2Nlc3NlcyA+IDQ4OgorICAgICAgICAgICAgICAg
IHByb2Nlc3NlcyA9IDQ4CisgICAgICAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXMpCiAKICAg
ICAgICAgICAgICMgY2h1bmtzaXplIHNldCA+IDEgd2hlbiBtb3JlIHRoYW4gMTAwMDAgdGVzdHMs
IGJlY2F1c2UKICAgICAgICAgICAgICMgY2h1bmtpbmcgaXMgYSBuZXQtZ2FpbiBvbmNlIHdlIGdl
dCB0byB2ZXJ5IGxhcmdlIG51bWJlcnMKICAgICAgICAgICAgICMgb2YgaXRlbXMgKGFnYWluLCBl
eHBlcmltZW50YWxseSwgMjAyMC0wMSkKKyAgICAgICAgICAgIGNodW5rc2l6ZSA9IG1heCgxLCBs
ZW4odG9fdXBkYXRlKSAvLyAxMDAwMCkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiRG9pbmcg
YSBtdWx0aXByb2Nlc3NlZCB1cGRhdGUuIENQVSBjb3VudDogJXMsICIKKyAgICAgICAgICAgICAg
ICAicHJvY2Vzc2VzOiAlcywgY2h1bmtzaXplOiAlcyIgJSAoY3B1X2NvdW50KCksIHByb2Nlc3Nl
cywgY2h1bmtzaXplKSkKICAgICAgICAgICAgIHJlc3VsdHMgPSBwb29sLmltYXBfdW5vcmRlcmVk
KGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b191cGRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaHVua3NpemU9bWF4KDEsIGxlbih0b191cGRhdGUpIC8vIDEwMDAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzaXplPWNodW5rc2l6ZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgIyB0eXBlOiBJdGVy
YXRvcltUdXBsZVtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4
dF1dCi0gICAgICAgIGVsaWYgUFkzOgotICAgICAgICAgICAgcmVzdWx0cyA9IG1hcChjb21wdXRl
X21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZXN1bHRzID0gaXRlcnRvb2xzLmltYXAoY29tcHV0ZV9tYW5pZmVzdF9pdGVtcywgdG9fdXBkYXRl
KQorICAgICAgICAgICAgcmVzdWx0cyA9IG1hcChjb21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191
cGRhdGUpCiAKICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgogICAgICAgICAgICAgcmVs
X3BhdGhfcGFydHMsIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0
CiAgICAgICAgICAgICBkYXRhW25ld190eXBlXVtyZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9p
dGVtcwogICAgICAgICAgICAgZGF0YVtuZXdfdHlwZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9
IGZpbGVfaGFzaAogCisgICAgICAgICMgTWFrZSBzdXJlIHRvIHRlcm1pbmF0ZSB0aGUgUG9vbCwg
dG8gYXZvaWQgaGFuZ3Mgb24gUHl0aG9uIDMuCisgICAgICAgICMgaHR0cHM6Ly9kb2NzLnB5dGhv
bi5vcmcvMy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5odG1sI211bHRpcHJvY2Vzc2luZy5wb29s
LlBvb2wKKyAgICAgICAgaWYgcG9vbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBvb2wudGVy
bWluYXRlKCkKKwogICAgICAgICBpZiByZW1haW5pbmdfbWFuaWZlc3RfcGF0aHM6CiAgICAgICAg
ICAgICBjaGFuZ2VkID0gVHJ1ZQogICAgICAgICAgICAgZm9yIHJlbF9wYXRoX3BhcnRzIGluIHJl
bWFpbmluZ19tYW5pZmVzdF9wYXRoczoKLSAgICAgICAgICAgICAgICBmb3IgdGVzdF9kYXRhIGlu
IGl0ZXJ2YWx1ZXMoZGF0YSk6CisgICAgICAgICAgICAgICAgZm9yIHRlc3RfZGF0YSBpbiBkYXRh
LnZhbHVlcygpOgogICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0aF9wYXJ0cyBpbiB0ZXN0
X2RhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRoX3Bh
cnRzXQogCkBAIC0yNzQsNyArMjgyLDcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAg
ICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAgICAgICAgIHRlc3RfdHlwZTogdHlw
ZV9wYXRocy50b19qc29uKCkKLSAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMg
aW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0aHMKKyAgICAgICAgICAgIGZvciB0
ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gc2VsZi5fZGF0YS5pdGVtcygpIGlmIHR5cGVfcGF0aHMK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKQEAgLTMwOCw3ICszMTYs
NyBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihvYmos
ICJpdGVtcyIpOgogICAgICAgICAgICAgcmFpc2UgTWFuaWZlc3RFcnJvcgogCi0gICAgICAgIGZv
ciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gaXRlcml0ZW1zKG9ialsiaXRlbXMiXSk6CisgICAg
ICAgIGZvciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gb2JqWyJpdGVtcyJdLml0ZW1zKCk6CiAg
ICAgICAgICAgICBpZiB0ZXN0X3R5cGUgbm90IGluIGl0ZW1fY2xhc3NlczoKICAgICAgICAgICAg
ICAgICByYWlzZSBNYW5pZmVzdEVycm9yCiAKQEAgLTM0MSwxMiArMzQ5LDEyIEBAIGRlZiBfbG9h
ZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgICAgICAgIGFsbG93X2NhY2hlZD1UcnVlICAj
IHR5cGU6IGJvb2wKICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gT3B0aW9uYWxb
TWFuaWZlc3RdCi0gICAgbWFuaWZlc3RfcGF0aCA9IChtYW5pZmVzdCBpZiBpc2luc3RhbmNlKG1h
bmlmZXN0LCBzdHJpbmdfdHlwZXMpCisgICAgbWFuaWZlc3RfcGF0aCA9IChtYW5pZmVzdCBpZiBp
c2luc3RhbmNlKG1hbmlmZXN0LCBzdHIpCiAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1hbmlm
ZXN0Lm5hbWUpCiAgICAgaWYgYWxsb3dfY2FjaGVkIGFuZCBtYW5pZmVzdF9wYXRoIGluIF9fbG9h
ZF9jYWNoZToKICAgICAgICAgcmV0dXJuIF9fbG9hZF9jYWNoZVttYW5pZmVzdF9wYXRoXQogCi0g
ICAgaWYgaXNpbnN0YW5jZShtYW5pZmVzdCwgc3RyaW5nX3R5cGVzKToKKyAgICBpZiBpc2luc3Rh
bmNlKG1hbmlmZXN0LCBzdHIpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6
CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIk9wZW5pbmcgbWFuaWZlc3QgYXQgJXMiICUgbWFu
aWZlc3QpCiAgICAgICAgIGVsc2U6CkBAIC0zNTQsNyArMzYyLDcgQEAgZGVmIF9sb2FkKGxvZ2dl
ciwgICMgdHlwZTogTG9nZ2VyCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggaW8ub3Bl
bihtYW5pZmVzdCwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICAgICAg
IHJ2ID0gTWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFzdF9qc29uLmxvYWQoZiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAganNvbmxpYi5sb2FkKGYpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzPXR5cGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZV9vd25zX29iaj1UcnVlKQogICAgICAgICBleGNl
cHQgSU9FcnJvcjoKQEAgLTM2NCw3ICszNzIsNyBAQCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBl
OiBMb2dnZXIKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgZWxzZToKICAgICAgICAgcnYg
PSBNYW5pZmVzdC5mcm9tX2pzb24odGVzdHNfcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFzdF9qc29uLmxvYWQobWFuaWZlc3QpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqc29ubGliLmxvYWQobWFuaWZlc3QpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlcz10eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbGVlX293bnNfb2JqPVRydWUpCiAKQEAgLTQ0OSw2ICs0NTcsNyBAQCBkZWYgX2xvYWRfYW5k
X3VwZGF0ZSh0ZXN0c19yb290LCAgIyB0eXBlOiBUZXh0CiAgICAgICAgIHVwZGF0ZSA9IFRydWUK
IAogICAgIGlmIHJlYnVpbGQgb3IgdXBkYXRlOgorICAgICAgICBsb2dnZXIuaW5mbygiVXBkYXRp
bmcgbWFuaWZlc3QiKQogICAgICAgICBmb3IgcmV0cnkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAgICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBt
YW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVfcm9vdCwKQEAgLTQ3Niw2ICs0ODUsNSBAQCBk
ZWYgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgpOgogICAgIHdpdGggYXRvbWljX3dyaXRl
KG1hbmlmZXN0X3BhdGgsIG92ZXJ3cml0ZT1UcnVlKSBhcyBmOgogICAgICAgICAjIFVzZSAnLCcg
aW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50IHRyYWlsaW5n
CiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvanNv
bi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihjYWxs
ZXJfb3duc19vYmo9VHJ1ZSksIGYsCi0gICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1ZSwg
aW5kZW50PTEsIHNlcGFyYXRvcnM9KCcsJywgJzogJykpCisgICAgICAgIGpzb25saWIuZHVtcF9k
aXN0KG1hbmlmZXN0LnRvX2pzb24oY2FsbGVyX293bnNfb2JqPVRydWUpLCBmKQogICAgICAgICBm
LndyaXRlKCJcbiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUu
cHkKaW5kZXggNmU5MGFjMDU0NzVmLi4zNGU2NzllYjhiNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNl
ZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKQEAgLTMsOCArMyw3IEBAIGltcG9ydCByZQog
aW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBpbyBpbXBvcnQg
Qnl0ZXNJTwotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIHRleHRfdHlw
ZQotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCitmcm9tIHVybGxp
Yi5wYXJzZSBpbXBvcnQgdXJsam9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKIE1Z
UFkgPSBGYWxzZQpAQCAtNzQsNyArNzMsNyBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwg
cmVnZXhwKToKICAgICAgICAgICAgICAgIHZhbHVlLgogICAgICIiIgogICAgIGZvciBsaW5lIGlu
IGY6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIGJpbmFyeV90eXBlKSwgbGluZQor
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lLCBieXRlcyksIGxpbmUKICAgICAgICAgbSA9
IHJlZ2V4cC5tYXRjaChsaW5lKQogICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgIGJyZWFr
CkBAIC04NSw5ICs4NCwxMyBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhwKToK
IF9hbnlfdmFyaWFudHMgPSB7CiAgICAgIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnkuaHRtbCJ9
LAogICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAorICAgICJzZXJ2
aWNld29ya2VyLW1vZHVsZSI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKICAgICAic2hhcmVkd29y
a2VyIjoge30sCisgICAgInNoYXJlZHdvcmtlci1tb2R1bGUiOiB7fSwKICAgICAiZGVkaWNhdGVk
d29ya2VyIjogeyJzdWZmaXgiOiAiLmFueS53b3JrZXIuaHRtbCJ9LAorICAgICJkZWRpY2F0ZWR3
b3JrZXItbW9kdWxlIjogeyJzdWZmaXgiOiAiLmFueS53b3JrZXItbW9kdWxlLmh0bWwifSwKICAg
ICAid29ya2VyIjogeyJsb25naGFuZCI6IHsiZGVkaWNhdGVkd29ya2VyIiwgInNoYXJlZHdvcmtl
ciIsICJzZXJ2aWNld29ya2VyIn19LAorICAgICJ3b3JrZXItbW9kdWxlIjoge30sCiAgICAgImpz
c2hlbGwiOiB7InN1ZmZpeCI6ICIuYW55LmpzIn0sCiB9ICAjIHR5cGU6IERpY3RbVGV4dCwgRGlj
dFtUZXh0LCBBbnldXQogCkBAIC05Nyw3ICsxMDAsNyBAQCBkZWYgZ2V0X2FueV92YXJpYW50cyhp
dGVtKToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChzdHJpbmdzKSBk
ZWZpbmVkIGJ5IHRoZSBnaXZlbiBrZXl3b3JkLgogICAgICIiIgotICAgIGFzc2VydCBpc2luc3Rh
bmNlKGl0ZW0sIHRleHRfdHlwZSksIGl0ZW0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCBz
dHIpLCBpdGVtCiAKICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50cy5nZXQoaXRlbSwgTm9uZSkK
ICAgICBpZiB2YXJpYW50IGlzIE5vbmU6CkBAIC0xMTksNyArMTIyLDcgQEAgZGVmIHBhcnNlX3Zh
cmlhbnRzKHZhbHVlKToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChz
dHJpbmdzKSBkZWZpbmVkIGJ5IGEgY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgotICAg
IGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBp
c2luc3RhbmNlKHZhbHVlLCBzdHIpLCB2YWx1ZQogCiAgICAgaWYgdmFsdWUgPT0gIiI6CiAgICAg
ICAgIHJldHVybiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKQpAQCAtMTM4LDcgKzE0MSw3IEBA
IGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgogICAgIHZhcmlhbnQgaXMgaW50ZW5kZWQgdG8g
cnVuIGluIGEgSlMgc2hlbGwsIGZvciB0aGUgdmFyaWFudHMgZGVmaW5lZCBieSB0aGUKICAgICBn
aXZlbiBjb21tYS1zZXBhcmF0ZWQgdmFsdWUuCiAgICAgIiIiCi0gICAgYXNzZXJ0IGlzaW5zdGFu
Y2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUs
IHN0ciksIHZhbHVlCiAKICAgICBydiA9IHNldCgpCiAKQEAgLTE2NywyNyArMTcwLDI3IEBAIGRl
ZiBnbG9iYWxfdmFyaWFudF91cmwodXJsLCBzdWZmaXgpOgogCiAKIGRlZiBfcGFyc2VfaHRtbChm
KToKLSAgICAjIHR5cGU6IChCaW5hcnlJTykgLT4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUKKyAg
ICAjIHR5cGU6IChCaW5hcnlJTykgLT4gRWxlbWVudFRyZWUuRWxlbWVudAogICAgIGRvYyA9IGh0
bWw1bGliLnBhcnNlKGYsIHRyZWVidWlsZGVyPSJldHJlZSIsIHVzZUNoYXJkZXQ9RmFsc2UpCiAg
ICAgaWYgTVlQWToKLSAgICAgICAgcmV0dXJuIGNhc3QoRWxlbWVudFRyZWUuRWxlbWVudFRyZWUs
IGRvYykKKyAgICAgICAgcmV0dXJuIGNhc3QoRWxlbWVudFRyZWUuRWxlbWVudCwgZG9jKQogICAg
IHJldHVybiBkb2MKIAogZGVmIF9wYXJzZV94bWwoZik6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8p
IC0+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlCisgICAgIyB0eXBlOiAoQmluYXJ5SU8pIC0+IEVs
ZW1lbnRUcmVlLkVsZW1lbnQKICAgICB0cnk6CiAgICAgICAgICMgcmFpc2VzIFZhbHVlRXJyb3Ig
d2l0aCBhbiB1bnN1cHBvcnRlZCBlbmNvZGluZywKICAgICAgICAgIyBQYXJzZUVycm9yIHdoZW4g
dGhlcmUncyBhbiB1bmRlZmluZWQgZW50aXR5Ci0gICAgICAgIHJldHVybiBFbGVtZW50VHJlZS5w
YXJzZShmKQorICAgICAgICByZXR1cm4gRWxlbWVudFRyZWUucGFyc2UoZikuZ2V0cm9vdCgpCiAg
ICAgZXhjZXB0IChWYWx1ZUVycm9yLCBFbGVtZW50VHJlZS5QYXJzZUVycm9yKToKICAgICAgICAg
Zi5zZWVrKDApCi0gICAgICAgIHJldHVybiBFbGVtZW50VHJlZS5wYXJzZShmLCBYTUxQYXJzZXIu
WE1MUGFyc2VyKCkpICAjIHR5cGU6IGlnbm9yZQorICAgICAgICByZXR1cm4gRWxlbWVudFRyZWUu
cGFyc2UoZiwgWE1MUGFyc2VyLlhNTFBhcnNlcigpKS5nZXRyb290KCkgICMgdHlwZTogaWdub3Jl
CiAKIAogY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgIHBhcnNlcnMgPSB7dSJodG1sIjpf
cGFyc2VfaHRtbCwKICAgICAgICAgICAgICAgIHUieGh0bWwiOl9wYXJzZV94bWwsCi0gICAgICAg
ICAgICAgICB1InN2ZyI6X3BhcnNlX3htbH0gICMgdHlwZTogRGljdFtUZXh0LCBDYWxsYWJsZVtb
QmluYXJ5SU9dLCBFbGVtZW50VHJlZS5FbGVtZW50VHJlZV1dCisgICAgICAgICAgICAgICB1InN2
ZyI6X3BhcnNlX3htbH0gICMgdHlwZTogRGljdFtUZXh0LCBDYWxsYWJsZVtbQmluYXJ5SU9dLCBF
bGVtZW50VHJlZS5FbGVtZW50XV0KIAogICAgIHJvb3RfZGlyX25vbl90ZXN0ID0ge3UiY29tbW9u
In0KIApAQCAtMjQzLDcgKzI0Niw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAg
ICAgICBpZiAiX19jYWNoZWRfcHJvcGVydGllc19fIiBpbiBydjoKICAgICAgICAgICAgIGNhY2hl
ZF9wcm9wZXJ0aWVzID0gcnZbIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyJdCi0gICAgICAgICAgICBy
diA9IHtrZXk6dmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHJ2KSBpZiBrZXkgbm90
IGluIGNhY2hlZF9wcm9wZXJ0aWVzfQorICAgICAgICAgICAgcnYgPSB7a2V5OnZhbHVlIGZvciBr
ZXksIHZhbHVlIGluIHJ2Lml0ZW1zKCkgaWYga2V5IG5vdCBpbiBjYWNoZWRfcHJvcGVydGllc30K
ICAgICAgICAgICAgIGRlbCBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KICAgICAgICAgcmV0
dXJuIHJ2CiAKQEAgLTMwNCw3ICszMDcsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgY29udGVudCA9IGYucmVhZCgpCiAKICAgICAgICAgICAgIGRhdGEgPSBi
IiIuam9pbigoYiJibG9iICIsIGIiJWQiICUgbGVuKGNvbnRlbnQpLCBiIlwwIiwgY29udGVudCkp
Ci0gICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4dF90eXBlKGhhc2hsaWIuc2hhMShkYXRhKS5o
ZXhkaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBzdHIoaGFzaGxpYi5zaGExKGRh
dGEpLmhleGRpZ2VzdCgpKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCiAKQEAgLTQ0Nyw3
ICs0NTAsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3Bl
cnR5CiAgICAgZGVmIHJvb3Qoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxb
VW5pb25bRWxlbWVudFRyZWUuRWxlbWVudCwgRWxlbWVudFRyZWUuRWxlbWVudFRyZWVdXQorICAg
ICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0VsZW1lbnRUcmVlLkVsZW1lbnRdCiAgICAgICAg
ICIiIlJldHVybiBhbiBFbGVtZW50VHJlZSBFbGVtZW50IGZvciB0aGUgcm9vdCBub2RlIG9mIHRo
ZSBmaWxlIGlmIGl0IGNvbnRhaW5zCiAgICAgICAgIG1hcmt1cCwgb3IgTm9uZSBpZiBpdCBkb2Vz
IG5vdCIiIgogICAgICAgICBpZiBub3Qgc2VsZi5tYXJrdXBfdHlwZToKQEAgLTQ2MSwxMiArNDY0
LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbjoKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgIGlmIGhhc2F0dHIo
dHJlZSwgImdldHJvb3QiKToKLSAgICAgICAgICAgIHJvb3QgPSB0cmVlLmdldHJvb3QoKSAgIyB0
eXBlOiBVbmlvbltFbGVtZW50VHJlZS5FbGVtZW50LCBFbGVtZW50VHJlZS5FbGVtZW50VHJlZV0K
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJvb3QgPSB0cmVlCi0KLSAgICAgICAgcmV0dXJu
IHJvb3QKKyAgICAgICAgcmV0dXJuIHRyZWUKIAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBk
ZWYgdGltZW91dF9ub2RlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHBhdGhzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90
ZXN0cGF0aHMucHkKaW5kZXggMjE5Nzc5MmNkNjRlLi42OTAyZjBjMDYzMzYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvdGVzdHBhdGhzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHBhdGhzLnB5CkBAIC0zLDggKzMsNiBAQCBpbXBv
cnQganNvbgogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAog
Ci1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCi0KIGZyb20gLm1hbmlmZXN0IGltcG9ydCBsb2Fk
X2FuZF91cGRhdGUsIE1hbmlmZXN0CiBmcm9tIC5sb2cgaW1wb3J0IGdldF9sb2dnZXIKIApAQCAt
MTAyLDcgKzEwMCw3IEBAIGRlZiB3cml0ZV9vdXRwdXQocGF0aF9pZF9tYXAsIGFzX2pzb24pOgog
ICAgIGlmIGFzX2pzb246CiAgICAgICAgIHByaW50KGpzb24uZHVtcHMocGF0aF9pZF9tYXApKQog
ICAgIGVsc2U6Ci0gICAgICAgIGZvciBwYXRoLCB0ZXN0X2lkcyBpbiBzb3J0ZWQoaXRlcml0ZW1z
KHBhdGhfaWRfbWFwKSk6CisgICAgICAgIGZvciBwYXRoLCB0ZXN0X2lkcyBpbiBzb3J0ZWQocGF0
aF9pZF9tYXAuaXRlbXMoKSk6CiAgICAgICAgICAgICBwcmludChwYXRoKQogICAgICAgICAgICAg
Zm9yIHRlc3RfaWQgaW4gc29ydGVkKHRlc3RfaWRzKToKICAgICAgICAgICAgICAgICBwcmludCgi
ICAiICsgdGVzdF9pZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAs
MCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBk
aXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC90ZXN0cy90ZXN0X2l0ZW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQppbmRleCA0
ZjJmYzhmMDNmMmQuLmRkMWM0ZTIwMDRkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X2l0ZW0u
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC90ZXN0cy90ZXN0X2l0ZW0ucHkKQEAgLTEzNCwzICsxMzQsMjUgQEAgZGVmIHRl
c3RfaXRlbV90eXBlcygpOgogICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZW1fdHlwZXMuaXRlbXMo
KToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoa2V5LCBzdHIpCiAgICAgICAgIGFzc2VydCBu
b3QgaW5zcGVjdC5pc2Fic3RyYWN0KHZhbHVlKQorCisKK2RlZiB0ZXN0X3dwdF9mbGFncygpOgor
ICAgIG0xID0gSGFybmVzc1Rlc3QoIi9mb28iLCAiYmFyIiwgIi8iLCAiYmFyIiArICI/d3B0X2Zs
YWdzPXd3dyIpCisgICAgYXNzZXJ0IG0xLnN1YmRvbWFpbiBpcyBUcnVlCisgICAgYXNzZXJ0IG0x
Lmh0dHBzIGlzIEZhbHNlCisgICAgYXNzZXJ0IG0xLmgyIGlzIEZhbHNlCisKKyAgICBtMiA9IEhh
cm5lc3NUZXN0KCIvZm9vIiwgImJhciIsICIvIiwgImJhciIgKyAiP3dwdF9mbGFncz1odHRwcyIp
CisgICAgYXNzZXJ0IG0yLnN1YmRvbWFpbiBpcyBGYWxzZQorICAgIGFzc2VydCBtMi5odHRwcyBp
cyBUcnVlCisgICAgYXNzZXJ0IG0yLmgyIGlzIEZhbHNlCisKKyAgICBtMyA9IEhhcm5lc3NUZXN0
KCIvZm9vIiwgImJhciIsICIvIiwgImJhciIgKyAiP3dwdF9mbGFncz1oMiIpCisgICAgYXNzZXJ0
IG0zLnN1YmRvbWFpbiBpcyBGYWxzZQorICAgIGFzc2VydCBtMy5odHRwcyBpcyBGYWxzZQorICAg
IGFzc2VydCBtMy5oMiBpcyBUcnVlCisKKyAgICBtNCA9IEhhcm5lc3NUZXN0KCIvZm9vIiwgImJh
ciIsICIvIiwgImJhciIgKyAiP3dwdF9mbGFncz1odHRwcyZ3cHRfZmxhZ3M9d3d3IikKKyAgICBh
c3NlcnQgbTQuc3ViZG9tYWluIGlzIFRydWUKKyAgICBhc3NlcnQgbTQuaHR0cHMgaXMgVHJ1ZQor
ICAgIGFzc2VydCBtNC5oMiBpcyBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlm
ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5CmluZGV4IDI2YThmZGMxNzYzMy4uNjU0
MDcwZmU0ZGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90
ZXN0cy90ZXN0X21hbmlmZXN0LnB5CkBAIC01LDggKzUsNiBAQCBpbXBvcnQgbW9jawogaW1wb3J0
IGh5cG90aGVzaXMgYXMgaAogaW1wb3J0IGh5cG90aGVzaXMuc3RyYXRlZ2llcyBhcyBocwogCi1m
cm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCi0KIGZyb20gLi4gaW1wb3J0IG1hbmlmZXN0LCBzb3Vy
Y2VmaWxlLCBpdGVtLCB1dGlscwogCiBNWVBZID0gRmFsc2UKQEAgLTk0LDExICs5MiwxMSBAQCBk
ZWYgbWFuaWZlc3RfdHJlZShkcmF3KToKIAogICAgIHJlZnRlc3RfdXJscyA9IFtdCiAgICAgb3V0
cHV0ID0gW10KLSAgICBzdGFjayA9IFsoKGssKSwgdikgZm9yIGssIHYgaW4gaXRlcml0ZW1zKGdl
bmVyYXRlZF9yb290KV0KKyAgICBzdGFjayA9IFsoKGssKSwgdikgZm9yIGssIHYgaW4gZ2VuZXJh
dGVkX3Jvb3QuaXRlbXMoKV0KICAgICB3aGlsZSBzdGFjazoKICAgICAgICAgcGF0aCwgbm9kZSA9
IHN0YWNrLnBvcCgpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6Ci0gICAgICAg
ICAgICBzdGFjay5leHRlbmQoKHBhdGggKyAoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMo
bm9kZSkpCisgICAgICAgICAgICBzdGFjay5leHRlbmQoKHBhdGggKyAoaywpLCB2KSBmb3Igaywg
diBpbiBub2RlLml0ZW1zKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZWxfcGF0aCA9
IG9zLnBhdGguc2VwLmpvaW4ocGF0aCkKICAgICAgICAgICAgIG5vZGUucmVsX3BhdGggPSByZWxf
cGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rl
c3Rfc291cmNlZmlsZS5weQppbmRleCBjYzk3NjE5YmI1NzEuLmVmNzU0Y2RiMGY1NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJj
ZWZpbGUucHkKQEAgLTIsNyArMiw3IEBAIGltcG9ydCBvcwogCiBpbXBvcnQgcHl0ZXN0CiAKLWZy
b20gc2l4IGltcG9ydCBCeXRlc0lPCitmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIC4uLmxp
bnQubGludCBpbXBvcnQgY2hlY2tfZ2xvYmFsX21ldGFkYXRhCiBmcm9tIC4uc291cmNlZmlsZSBp
bXBvcnQgU291cmNlRmlsZSwgcmVhZF9zY3JpcHRfbWV0YWRhdGEsIGpzX21ldGFfcmUsIHB5dGhv
bl9tZXRhX3JlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWU1Mzk5ZjQ4
MmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVz
dHMvdGVzdF9YTUxQYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVz
dF9tYW5pZmVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0
X3V0aWxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90eXBlZGF0YS5weQppbmRl
eCAwMWJiODI3MDVmODQuLjE3NDAwOGVhZTgxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90eXBlZGF0YS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0xLDUgKzEsNCBAQAotZnJvbSBzaXggaW1wb3J0IGl0ZXJ2
YWx1ZXMsIGl0ZXJpdGVtcwotZnJvbSBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjIGltcG9ydCBN
dXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5n
CiAKIAogTVlQWSA9IEZhbHNlCkBAIC0xODEsNyArMTgwLDcgQEAgY2xhc3MgVHlwZURhdGEoVHlw
ZURhdGFUeXBlKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc2V0KToKICAgICAgICAg
ICAgICAgICBjb3VudCArPSAxCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0
YWNrLmV4dGVuZChpdGVydmFsdWVzKHYpKQorICAgICAgICAgICAgICAgIHN0YWNrLmV4dGVuZCh2
LnZhbHVlcygpKQogCiAgICAgICAgIHN0YWNrID0gW3NlbGYuX2pzb25fZGF0YV0KICAgICAgICAg
d2hpbGUgc3RhY2s6CkBAIC0xODksNyArMTg4LDcgQEAgY2xhc3MgVHlwZURhdGEoVHlwZURhdGFU
eXBlKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgbGlzdCk6CiAgICAgICAgICAgICAg
ICAgY291bnQgKz0gMQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdGFjay5l
eHRlbmQoaXRlcnZhbHVlcyh2KSkKKyAgICAgICAgICAgICAgICBzdGFjay5leHRlbmQodi52YWx1
ZXMoKSkKIAogICAgICAgICByZXR1cm4gY291bnQKIApAQCAtMjcwLDcgKzI2OSw3IEBAIGNsYXNz
IFR5cGVEYXRhKFR5cGVEYXRhVHlwZSk6CiAgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBq
c29uX3J2LCB0dXBsZSgpKV0gICMgdHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERp
Y3RbVGV4dCwgQW55XSwgVHVwbGVbVGV4dCwgLi4uXV1dCiAgICAgICAgIHdoaWxlIHN0YWNrOgog
ICAgICAgICAgICAgZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBv
cCgpCi0gICAgICAgICAgICBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAg
ICAgICAgIGZvciBrLCB2IGluIGRhdGFfbm9kZS5pdGVtcygpOgogICAgICAgICAgICAgICAgIGZ1
bGxfa2V5ID0gcGFyX2Z1bGxfa2V5ICsgKGssKQogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uodiwgc2V0KToKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGsgbm90IGluIGpzb25fbm9k
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQppbmRleCAyOTY1MzNhNmJh
YmYuLmE4NmVmN2M4YWEyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUu
cHkKQEAgLTQsNyArNCw3IEBAIGltcG9ydCBvcwogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0CiBm
cm9tIC4gaW1wb3J0IHZjcwotZnJvbSAubG9nIGltcG9ydCBnZXRfbG9nZ2VyCitmcm9tIC5sb2cg
aW1wb3J0IGdldF9sb2dnZXIsIGVuYWJsZV9kZWJ1Z19sb2dnaW5nCiBmcm9tIC5kb3dubG9hZCBp
bXBvcnQgZG93bmxvYWRfZnJvbV9naXRodWIKIAogaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykKQEAgLTY0LDYgKzY0LDkgQEAgZGVmIGFic19wYXRoKHBhdGgpOgogZGVmIGNyZWF0ZV9w
YXJzZXIoKToKICAgICAjIHR5cGU6ICgpIC0+IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyCiAgICAg
cGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBkZXN0PSJ2ZXJib3NlIiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0iVHVybiBvbiB2ZXJib3Nl
IGxvZ2dpbmciKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItcCIsICItLXBh
dGgiLCB0eXBlPWFic19wYXRoLCBoZWxwPSJQYXRoIHRvIG1hbmlmZXN0IGZpbGUuIikKICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KApAQCAtOTAsNiArOTMsOCBAQCBkZWYgcnVuKCphcmdzLCAqKmt3
YXJncyk6CiAgICAgIyB0eXBlOiAoKkFueSwgKipBbnkpIC0+IE5vbmUKICAgICBpZiBrd2FyZ3Nb
InBhdGgiXSBpcyBOb25lOgogICAgICAgICBrd2FyZ3NbInBhdGgiXSA9IG9zLnBhdGguam9pbihr
d2FyZ3NbInRlc3RzX3Jvb3QiXSwgIk1BTklGRVNULmpzb24iKQorICAgIGlmIGt3YXJnc1sidmVy
Ym9zZSJdOgorICAgICAgICBlbmFibGVfZGVidWdfbG9nZ2luZygpCiAgICAgdXBkYXRlX2Zyb21f
Y2xpKCoqa3dhcmdzKQogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC92Y3MucHkKaW5kZXgg
MzQ0NTc1Mjc2YjQyLi42NWJhMzA4ZWEyNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dmNzLnB5CkBAIC0xLDEyICsxLDEwIEBACiBpbXBvcnQgYWJjCi1pbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc3RhdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gY29s
bGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZwogCi1mcm9tIHNpeCBpbXBvcnQgd2l0
aF9tZXRhY2xhc3MsIFBZMgotZnJvbSBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjIGltcG9ydCBN
dXRhYmxlTWFwcGluZwotCitmcm9tIC4gaW1wb3J0IGpzb25saWIKIGZyb20gLnV0aWxzIGltcG9y
dCBnaXQKIAogIyBDYW5ub3QgZG8gYGZyb20gLi5naXRpZ25vcmUgaW1wb3J0IGdpdGlnbm9yZWAg
YmVjYXVzZQpAQCAtMTksMTAgKzE3LDExIEBAIGlmIE1ZUFk6CiAgICAgIyBNWVBZIGlzIHNldCB0
byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IERpY3Qs
IE9wdGlvbmFsLCBMaXN0LCBTZXQsIFRleHQsIEl0ZXJhYmxlLCBBbnksIFR1cGxlLCBJdGVyYXRv
cgogICAgIGZyb20gLm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdCAgIyBjeWNsaWMgaW1wb3J0IHVu
ZGVyIE1ZUFkgZ3VhcmQKLSAgICBpZiBQWTI6Ci0gICAgICAgIHN0YXRfcmVzdWx0ID0gQW55Ci0g
ICAgZWxzZToKLSAgICAgICAgc3RhdF9yZXN1bHQgPSBvcy5zdGF0X3Jlc3VsdAorICAgIHN0YXRf
cmVzdWx0ID0gb3Muc3RhdF9yZXN1bHQKKworICAgIEdpdElnbm9yZUNhY2hlVHlwZSA9IE11dGFi
bGVNYXBwaW5nW2J5dGVzLCBib29sXQorZWxzZToKKyAgICBHaXRJZ25vcmVDYWNoZVR5cGUgPSBN
dXRhYmxlTWFwcGluZwogCiAKIGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFu
aWZlc3RfcGF0aCwgY2FjaGVfcm9vdCwKQEAgLTEyOCw3ICsxMjcsNyBAQCBjbGFzcyBGaWxlU3lz
dGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgY2FjaGUuZHVtcCgpCiAKIAotY2xhc3MgQ2Fj
aGVGaWxlKHdpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CitjbGFzcyBDYWNoZUZpbGUobWV0
YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgY2FjaGVfcm9vdCwg
dGVzdHNfcm9vdCwgcmVidWlsZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKFRleHQsIFRleHQs
IGJvb2wpIC0+IE5vbmUKICAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdApAQCAt
MTQ4LDcgKzE0Nyw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgogICAgICAgICBpZiBub3Qgc2VsZi5tb2RpZmllZDoKICAgICAgICAgICAgIHJldHVybgog
ICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBqc29u
LmR1bXAoc2VsZi5kYXRhLCBmLCBpbmRlbnQ9MSkKKyAgICAgICAgICAgIGpzb25saWIuZHVtcF9s
b2NhbChzZWxmLmRhdGEsIGYpCiAKICAgICBkZWYgbG9hZChzZWxmLCByZWJ1aWxkPUZhbHNlKToK
ICAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCkBAIC0xNTcsNyArMTU2
LDcgQEAgY2xhc3MgQ2FjaGVGaWxlKHdpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CiAgICAg
ICAgICAgICBpZiBub3QgcmVidWlsZDoKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5w
YXRoLCAncicpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEgPSBqc29ubGliLmxvYWQoZikKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgZGF0YSA9
IHNlbGYuY2hlY2tfdmFsaWQoZGF0YSkKQEAgLTIyMCw4ICsyMTksOCBAQCBjbGFzcyBNdGltZUNh
Y2hlKENhY2hlRmlsZSk6CiAgICAgICAgIHN1cGVyKE10aW1lQ2FjaGUsIHNlbGYpLmR1bXAoKQog
CiAKLWNsYXNzIEdpdElnbm9yZUNhY2hlKENhY2hlRmlsZSwgTXV0YWJsZU1hcHBpbmcpOiAgIyB0
eXBlOiBpZ25vcmUKLSAgICBmaWxlX25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCitjbGFzcyBHaXRJ
Z25vcmVDYWNoZShDYWNoZUZpbGUsIEdpdElnbm9yZUNhY2hlVHlwZSk6CisgICAgZmlsZV9uYW1l
ID0gImdpdGlnbm9yZTIuanNvbiIKIAogICAgIGRlZiBjaGVja192YWxpZChzZWxmLCBkYXRhKToK
ICAgICAgICAgIyB0eXBlOiAoRGljdFtBbnksIEFueV0pIC0+IERpY3RbQW55LCBBbnldCkBAIC0y
MzUsMjcgKzIzNCwzNSBAQCBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVN
YXBwaW5nKTogICMgdHlwZTogaWdub3JlCiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtl
eSk6CiAgICAgICAgICMgdHlwZTogKEFueSkgLT4gYm9vbAorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBrZXkgPSBrZXkuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYu
ZGF0YQogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgICMgdHlwZTog
KFRleHQpIC0+IGJvb2wKLSAgICAgICAgdiA9IHNlbGYuZGF0YVtrZXldCisgICAgICAgICMgdHlw
ZTogKGJ5dGVzKSAtPiBib29sCisgICAgICAgIHJlYWxfa2V5ID0ga2V5LmRlY29kZSgidXRmLTgi
KQorICAgICAgICB2ID0gc2VsZi5kYXRhW3JlYWxfa2V5XQogICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZSh2LCBib29sKQogICAgICAgICByZXR1cm4gdgogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNl
bGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0LCBib29sKSAtPiBOb25lCi0g
ICAgICAgIGlmIHNlbGYuZGF0YS5nZXQoa2V5KSAhPSB2YWx1ZToKKyAgICAgICAgIyB0eXBlOiAo
Ynl0ZXMsIGJvb2wpIC0+IE5vbmUKKyAgICAgICAgcmVhbF9rZXkgPSBrZXkuZGVjb2RlKCJ1dGYt
OCIpCisgICAgICAgIGlmIHNlbGYuZGF0YS5nZXQocmVhbF9rZXkpICE9IHZhbHVlOgogICAgICAg
ICAgICAgc2VsZi5tb2RpZmllZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0g
dmFsdWUKKyAgICAgICAgICAgIHNlbGYuZGF0YVtyZWFsX2tleV0gPSB2YWx1ZQogCiAgICAgZGVm
IF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUK
LSAgICAgICAgZGVsIHNlbGYuZGF0YVtrZXldCisgICAgICAgICMgdHlwZTogKGJ5dGVzKSAtPiBO
b25lCisgICAgICAgIHJlYWxfa2V5ID0ga2V5LmRlY29kZSgidXRmLTgiKQorICAgICAgICBkZWwg
c2VsZi5kYXRhW3JlYWxfa2V5XQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAj
IHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1RleHRdCi0gICAgICAgIHJldHVybiBpdGVyKHNlbGYuZGF0
YSkKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltieXRlc10KKyAgICAgICAgcmV0dXJu
IChrZXkuZW5jb2RlKCJ1dGYtOCIpIGZvciBrZXkgaW4gc2VsZi5kYXRhKQogCiAgICAgZGVmIF9f
bGVuX18oc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gaW50CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzg4ZmJiMTFlZDlkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvY29tbWFuZHMuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L2xvZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rw
YXRocy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zj
cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9teXB5LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKaW5kZXggYjk0M2I2ZDA4OWE0Li40ZDM1MjMwMmQ4MGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbXlweS5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9teXB5LmluaQpAQCAtMjIsNiArMjIsOSBAQCBpZ25vcmVfbWlzc2luZ19p
bXBvcnRzID0gVHJ1ZQogW215cHktcHl0ZXN0LipdCiBpZ25vcmVfbWlzc2luZ19pbXBvcnRzID0g
VHJ1ZQogCitbbXlweS11anNvbi4qXQoraWdub3JlX21pc3NpbmdfaW1wb3J0cyA9IFRydWUKKwog
W215cHktenN0YW5kYXJkLipdCiBpZ25vcmVfbWlzc2luZ19pbXBvcnRzID0gVHJ1ZQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZDZjZWI2ZmVhNGIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaQorKysgL2Rldi9udWxs
CkBAIC0xLDI5ICswLDAgQEAKLVtmbGFrZThdCi1zZWxlY3QgPSBFLFcsRixOCi0jIEUxMjg6IGNv
bnRpbnVhdGlvbiBsaW5lIHVuZGVyLWluZGVudGVkIGZvciB2aXN1YWwgaW5kZW50Ci0jIEUxMjk6
IHZpc3VhbGx5IGluZGVudGVkIGxpbmUgd2l0aCBzYW1lIGluZGVudCBhcyBuZXh0IGxvZ2ljYWwg
bGluZQotIyBFMjI2OiBtaXNzaW5nIHdoaXRlc3BhY2UgYXJvdW5kIGFyaXRobWV0aWMgb3BlcmF0
b3IKLSMgRTIzMTogbWlzc2luZyB3aGl0ZXNwYWNlIGFmdGVyIOKAmCzigJksIOKAmDvigJksIG9y
IOKAmDrigJkKLSMgRTI1MTogdW5leHBlY3RlZCBzcGFjZXMgYXJvdW5kIGtleXdvcmQgLyBwYXJh
bWV0ZXIgZXF1YWxzCi0jIEUyNjU6IGJsb2NrIGNvbW1lbnQgc2hvdWxkIHN0YXJ0IHdpdGgg4oCY
IyDigJgKLSMgRTMwMjogZXhwZWN0ZWQgMiBibGFuayBsaW5lcywgZm91bmQgMAotIyBFMzAzOiB0
b28gbWFueSBibGFuayBsaW5lcyAoMykKLSMgRTMwNTogZXhwZWN0ZWQgMiBibGFuayBsaW5lcyBh
ZnRlciBlbmQgb2YgZnVuY3Rpb24gb3IgY2xhc3MKLSMgRTQwMjogbW9kdWxlIGxldmVsIGltcG9y
dCBub3QgYXQgdG9wIG9mIGZpbGUKLSMgRTczMTogZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBleHBy
ZXNzaW9uLCB1c2UgYSBkZWYKLSMgVzUwNDogbGluZSBicmVhayBhZnRlciBiaW5hcnkgb3BlcmF0
b3IKLSMgVzYwMTogLmhhc19rZXkoKSBpcyBkZXByZWNhdGVkLCB1c2Ug4oCYaW7igJkKLSMgVzYw
NTogaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UKLSMgVzYwNjogJ2FzeW5jJyBhbmQgJ2F3YWl0JyBh
cmUgcmVzZXJ2ZWQga2V5d29yZHMgc3RhcnRpbmcgd2l0aCBQeXRob24gMy43Ci0jIE44MDE6IGNs
YXNzIG5hbWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlv
biBuYW1lIHNob3VsZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24g
c2hvdWxkIGJlIGxvd2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUy
NjUsRTMwMixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwMSxXNjA1LFc2MDYsTjgwMSxOODAy
LE44MDYKLWV4Y2x1ZGUgPQotICAgIC50b3gsCi0gICAgcHl3ZWJzb2NrZXQsCi0gICAgcXVpYywK
LSAgICB0aGlyZF9wYXJ0eSwKLSAgICB3cHRzZXJ2ZS9kb2NzL2NvbmYucHksCi0gICAgd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkKLW1heC1saW5lLWxlbmd0aCA9
IDE0MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTMtZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkKaW5kZXggMTRjYzFkYzZmNmE3Li5m
OGQ0Nzc2ZWY2NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpAQCAtMTIsMTYg
KzEyLDE2IEBAIHNlbGVjdCA9IEUsVyxGLE4KICMgRTQwMjogbW9kdWxlIGxldmVsIGltcG9ydCBu
b3QgYXQgdG9wIG9mIGZpbGUKICMgRTczMTogZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBleHByZXNz
aW9uLCB1c2UgYSBkZWYKICMgVzUwNDogbGluZSBicmVhayBhZnRlciBiaW5hcnkgb3BlcmF0b3IK
KyMgVzYwMTogLmhhc19rZXkoKSBpcyBkZXByZWNhdGVkLCB1c2Ug4oCYaW7igJkKICMgVzYwNTog
aW52YWxpZCBlc2NhcGUgc2VxdWVuY2UKICMgTjgwMTogY2xhc3MgbmFtZXMgc2hvdWxkIHVzZSBD
YXBXb3JkcyBjb252ZW50aW9uCiAjIE44MDI6IGZ1bmN0aW9uIG5hbWUgc2hvdWxkIGJlIGxvd2Vy
Y2FzZQogIyBOODA2OiB2YXJpYWJsZSBpbiBmdW5jdGlvbiBzaG91bGQgYmUgbG93ZXJjYXNlCi1p
Z25vcmUgPSBFMTI4LEUxMjksRTIyNixFMjMxLEUyNTEsRTI2NSxFMzAyLEUzMDMsRTMwNSxFNDAy
LEU3MzEsVzUwNCxXNjA1LE44MDEsTjgwMixOODA2CitpZ25vcmUgPSBFMTI4LEUxMjksRTIyNixF
MjMxLEUyNTEsRTI2NSxFMzAyLEUzMDMsRTMwNSxFNDAyLEU3MzEsVzUwNCxXNjAxLFc2MDUsTjgw
MSxOODAyLE44MDYKIGV4Y2x1ZGUgPQogICAgIC50b3gsCiAgICAgcHl3ZWJzb2NrZXQsCiAgICAg
dGhpcmRfcGFydHksCi0gICAgd3B0cnVubmVyLAogICAgIHdwdHNlcnZlL2RvY3MvY29uZi5weSwK
ICAgICB3cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvaW52YWxpZC5weQogbWF4LWxp
bmUtbGVuZ3RoID0gMTQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L0NPTlRSSUJVVElORyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvQ09O
VFJJQlVUSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDE1ZjVkMDExZjMuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L0NPTlRSSUJVVElORworKysgL2Rldi9udWxsCkBAIC0xLDEx
ICswLDAgQEAKLUZvciBpbnN0cnVjdGlvbnMgZm9yIGNvbnRyaWJ1dGluZyBjb2RlLCBwbGVhc2Ug
cmVhZDoKLWh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHl3ZWJzb2NrZXQvd2lraS9Db2RlUmV2
aWV3SW5zdHJ1Y3Rpb24KLQotWW91IG11c3QgY29tcGxldGUgdGhlIEluZGl2aWR1YWwgQ29udHJp
YnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQuCi1odHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5j
b20vYWJvdXQvZ29vZ2xlLWluZGl2aWR1YWwKLVlvdSBjYW4gZG8gdGhpcyBvbmxpbmUsIGFuZCBp
dCBvbmx5IHRha2VzIGEgbWludXRlLgotCi1JZiB5b3UgYXJlIGNvbnRyaWJ1dGluZyBvbiBiZWhh
bGYgb2YgYSBjb3Jwb3JhdGlvbiwgeW91IG11c3QgZmlsbCBvdXQgdGhlCi1Db3Jwb3JhdGUgQ29u
dHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQKLWh0dHBzOi8vY2xhLmRldmVsb3BlcnMuZ29vZ2xl
LmNvbS9hYm91dC9nb29nbGUtY29ycG9yYXRlCi1hbmQgc2VuZCBpdCB0byB1cyBhcyBkZXNjcmli
ZWQgb24gdGhhdCBwYWdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9MSUNFTlNF
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODlkMDJlNGNkMDkuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L01BTklGRVNULmluIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9NQU5J
RkVTVC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkyNTY4ODJjNTZmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9NQU5JRkVTVC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAs
MCBAQAotaW5jbHVkZSBDT1BZSU5HCi1pbmNsdWRlIE1BTklGRVNULmluCi1pbmNsdWRlIFJFQURN
RQotcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5Ci1yZWN1cnNpdmUtaW5jbHVkZSBtb2Rf
cHl3ZWJzb2NrZXQgKi5weQotcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L1JFQURNRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjOGM3NThmNWVlZjQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JFQURNRQorKysgL2Rldi9u
dWxsCkBAIC0xLDE3ICswLDAgQEAKLUlOU1RBTEwKLQotVG8gaW5zdGFsbCB0aGlzIHBhY2thZ2Ug
dG8gdGhlIHN5c3RlbSwgcnVuIHRoaXM6Ci0kIHB5dGhvbiBzZXR1cC5weSBidWlsZAotJCBzdWRv
IHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCi0KLVRvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEg
bm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6Ci0kIHB5dGhvbiBzZXR1cC5weSBidWlsZAot
JCBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIKLQotTEFVTkNICi0KLVRvIHVzZSBweXdl
YnNvY2tldCBhcyBBcGFjaGUgbW9kdWxlLCBydW4gdGhpcyB0byByZWFkIHRoZSBkb2N1bWVudDoK
LSQgcHlkb2MgbW9kX3B5d2Vic29ja2V0Ci0KLVRvIHVzZSBweXdlYnNvY2tldCBhcyBzdGFuZGFs
b25lIHNlcnZlciwgcnVuIHRoaXMgdG8gcmVhZCB0aGUgZG9jdW1lbnQ6Ci0kIHB5ZG9jIG1vZF9w
eXdlYnNvY2tldC5zdGFuZGFsb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JFQURNRS5tZCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
UkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZThlOTEwYTg0ZWYuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JFQURNRS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAs
MCBAQAotCi0jIHB5d2Vic29ja2V0ICMKLQotVGhlIHB5d2Vic29ja2V0IHByb2plY3QgYWltcyB0
byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0
NTUpIHN0YW5kYWxvbmUgc2VydmVyIGFuZCBhIFdlYlNvY2tldCBleHRlbnNpb24gZm9yIFtBcGFj
aGUgSFRUUCBTZXJ2ZXJdKGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy8pLCBtb2RcX3B5d2Vic29j
a2V0LgotCi1weXdlYnNvY2tldCBpcyBpbnRlbmRlZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBl
cmltZW50YWwqKiBwdXJwb3Nlcy4KLQotUGxlYXNlIHNlZSBbV2lraV0oLi4vLi4vd2lraSkgZm9y
IG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwODAyM2ExZmU5MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhh
bmRzaGFrZQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
LSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigKLSAgICAgICAgIkFi
b3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UiKQotCi0KLWRlZiB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Fib3J0X3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9hYm9ydF93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYmYwMDVmNmEz
Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9hYm9ydF93c2gucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9u
KAotICAgICAgICAiQWJvcnRlZCBpbiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2FycmF5YnVmZmVyX2Jl
bmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjljZDdlMWVlNjUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzQgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1B
bGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQot
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlv
bi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxo
dG1sPgotPGhlYWQ+Ci08dGl0bGU+QXJyYXlCdWZmZXIgYmVuY2htYXJrPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgUFJJTlRfU0laRSA9IHRy
dWU7Ci0KLS8vIEluaXRpYWwgc2l6ZSBvZiBhcnJheXMuCi12YXIgU1RBUlRfU0laRSA9IDEwICog
MTAyNDsKLS8vIFN0b3BzIGJlbmNobWFyayB3aGVuIHRoZSBzaXplIG9mIGFuIGFycmF5IGV4Y2Vl
ZHMgdGhpcyB0aHJlc2hvbGQuCi12YXIgU1RPUF9USFJFU0hPTEQgPSAxMDAwMDAgKiAxMDI0Owot
Ly8gSWYgdGhlIHNpemUgb2YgZWFjaCBhcnJheSBpcyBzbWFsbCwgd3JpdGUvcmVhZCB0aGUgYXJy
YXkgbXVsdGlwbGUgdGltZXMKLS8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hlcyB0aGlz
IHRocmVzaG9sZC4KLXZhciBNSU5fVE9UQUwgPSAxMDAwMDAgKiAxMDI0OwotdmFyIE1VTFRJUExJ
RVJTID0gWzUsIDJdOwotCi0vLyBSZXBlYXQgYmVuY2htYXJrIGZvciBzZXZlcmFsIHRpbWVzIHRv
IG1lYXN1cmUgcGVyZm9ybWFuY2Ugb2Ygb3B0aW1pemVkCi0vLyAoc3VjaCBhcyBKSVQpIHJ1bi4K
LXZhciBSRVBFQVRfRk9SX1dBUk1VUCA9IDM7Ci0KLWZ1bmN0aW9uIHdyaXRlQmVuY2htYXJrKHNp
emUsIG1pblRvdGFsKSB7Ci0gIHZhciB0b3RhbFNpemUgPSAwOwotICB3aGlsZSAodG90YWxTaXpl
IDwgbWluVG90YWwpIHsKLSAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6
ZSk7Ci0KLSAgICAvLyBXcml0ZSAnYSdzLgotICAgIGZpbGxBcnJheUJ1ZmZlcihhcnJheUJ1ZmZl
ciwgMHg2MSk7Ci0KLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAgfQotICByZXR1cm4gdG90YWxT
aXplOwotfQotCi1mdW5jdGlvbiByZWFkQmVuY2htYXJrKHNpemUsIG1pblRvdGFsKSB7Ci0gIHZh
ciB0b3RhbFNpemUgPSAwOwotICB3aGlsZSAodG90YWxTaXplIDwgbWluVG90YWwpIHsKLSAgICB2
YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAgICBpZiAoIXZlcmlm
eUFycmF5QnVmZmVyKGFycmF5QnVmZmVyLCAweDAwKSkgewotICAgICAgcXVldWVMb2coJ1Zlcmlm
aWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICB0b3RhbFNp
emUgKz0gc2l6ZTsKLSAgfQotICByZXR1cm4gdG90YWxTaXplOwotfQotCi1mdW5jdGlvbiBydW5C
ZW5jaG1hcmsoYmVuY2htYXJrRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICBzdG9wVGhyZXNob2xkLAotICAgICAgICAgICAgICAgICAg
ICAgIG1pblRvdGFsLAotICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXJzLAotICAgICAg
ICAgICAgICAgICAgICAgIG11bHRpcGxpZXJJbmRleCkgewotICB3aGlsZSAoc2l6ZSA8PSBzdG9w
VGhyZXNob2xkKSB7Ci0gICAgdmFyIG1heFNwZWVkID0gMDsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgUkVQRUFUX0ZPUl9XQVJNVVA7ICsraSkgewotICAgICAgdmFyIHN0YXJ0VGltZUluTXMg
PSBnZXRUaW1lU3RhbXAoKTsKLQotICAgICAgdmFyIHRvdGFsU2l6ZSA9IGJlbmNobWFya0Z1bmN0
aW9uKHNpemUsIG1pblRvdGFsKTsKLQotICAgICAgbWF4U3BlZWQgPSBNYXRoLm1heChtYXhTcGVl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6
ZSwgc3RhcnRUaW1lSW5NcykpOwotICAgIH0KLSAgICBxdWV1ZUxvZyhmb3JtYXRSZXN1bHRJbktp
QihzaXplLCBtYXhTcGVlZCwgUFJJTlRfU0laRSkpOwotCi0gICAgc2l6ZSAqPSBtdWx0aXBsaWVy
c1ttdWx0aXBsaWVySW5kZXhdOwotICAgIG11bHRpcGxpZXJJbmRleCA9IChtdWx0aXBsaWVySW5k
ZXggKyAxKSAlIG11bHRpcGxpZXJzLmxlbmd0aDsKLSAgfQotfQotCi1mdW5jdGlvbiBydW5CZW5j
aG1hcmtzKCkgewotICBxdWV1ZUxvZygnTWVzc2FnZSBzaXplIGluIEtpQiwgU3BlZWQgaW4ga0Iv
cycpOwotCi0gIHF1ZXVlTG9nKCdXcml0ZSBiZW5jaG1hcmsnKTsKLSAgcnVuQmVuY2htYXJrKAot
ICAgICAgd3JpdGVCZW5jaG1hcmssIFNUQVJUX1NJWkUsIFNUT1BfVEhSRVNIT0xELCBNSU5fVE9U
QUwsIE1VTFRJUExJRVJTLCAwKTsKLSAgcXVldWVMb2coJ0ZpbmlzaGVkJyk7Ci0KLSAgcXVldWVM
b2coJ1JlYWQgYmVuY2htYXJrJyk7Ci0gIHJ1bkJlbmNobWFyaygKLSAgICAgIHJlYWRCZW5jaG1h
cmssIFNUQVJUX1NJWkUsIFNUT1BfVEhSRVNIT0xELCBNSU5fVE9UQUwsIE1VTFRJUExJRVJTLCAw
KTsKLSAgYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIGxv
Z0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBxdWV1ZUxvZyh3aW5k
b3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKLQotICBhZGRUb0xvZygnU3Rh
cnRlZC4uLicpOwotCi0gIHNldFRpbWVvdXQocnVuQmVuY2htYXJrcywgMCk7Ci19Ci0KLTwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotPHRleHRhcmVhCi0gICAgaWQ9
ImxvZyIgcm93cz0iNTAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaF93c2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L2V4YW1wbGUvYmVuY2hfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MDY3Y2E3ZDg5NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2hfd3No
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiQSBzaW1wbGUgbG9hZCB0ZXN0ZXIgZm9yIFdlYlNvY2tldCBjbGllbnRzLgotCi1BIGNsaWVu
dCBwcm9ncmFtIHNlbmRzIGEgbWVzc2FnZSBmb3JtYXR0ZWQgYXMgIjx0aW1lPiA8Y291bnQ+IDxt
ZXNzYWdlPiIgdG8KLXRoaXMgaGFuZGxlci4gVGhpcyBoYW5kbGVyIHN0YXJ0cyBzZW5kaW5nIHRv
dGFsIDxjb3VudD4gV2ViU29ja2V0IG1lc3NhZ2VzCi1jb250YWluaW5nIDxtZXNzYWdlPiBldmVy
eSA8dGltZT4gc2Vjb25kcy4gPHRpbWU+IGNhbiBiZSBhIGZsb2F0aW5nIHBvaW50Ci12YWx1ZS4g
PGNvdW50PiBtdXN0IGJlIGFuIGludGVnZXIgdmFsdWUuCi0iIiIKLQotCi1pbXBvcnQgdGltZQot
Ci0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNz
ICAjIEFsd2F5cyBhY2NlcHQuCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKLSAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAg
ICBwYXJ0cyA9IGxpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbihwYXJ0cykgIT0gMzoKLSAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHBhcmFtZXRlciBmb3JtYXQnKQotICAgIHdhaXQgPSBm
bG9hdChwYXJ0c1swXSkKLSAgICBjb3VudCA9IGludChwYXJ0c1sxXSkKLSAgICBtZXNzYWdlID0g
cGFydHNbMl0KLSAgICBmb3IgaSBpbiB4cmFuZ2UoY291bnQpOgotICAgICAgICByZXF1ZXN0Lndz
X3N0cmVhbS5zZW5kX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgdGltZS5zbGVlcCh3YWl0KQot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFy
ay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhOTIzODYzYTk5NTYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
YmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotPCEtLQotQ29w
eXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1T
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0
IGJlbmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiZW5jaG1hcmsu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rp
b24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52
YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAot
ICAgIG51bVNvY2tldHM6IGdldEludEZyb21JbnB1dCgnbnVtc29ja2V0cycpLAotICAgIC8vIElu
aXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5w
dXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9t
SW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNpemU6IGdldEludEZyb21J
bnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUg
b2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6IGdl
dEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIC8vIElmIHRoZSBzaXplIG9mIGVh
Y2ggbWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9yZWNlaXZlIG11bHRpcGxlIG1lc3NhZ2VzCi0gICAg
Ly8gdW50aWwgdGhlIHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotICAgIG1p
blRvdGFsOiBnZXRJbnRGcm9tSW5wdXQoJ21pbnRvdGFsJyksCi0gICAgbXVsdGlwbGllcnM6IGdl
dEZsb2F0QXJyYXlGcm9tSW5wdXQoJ211bHRpcGxpZXJzJyksCi0gICAgdmVyaWZ5RGF0YTogZ2V0
Qm9vbEZyb21DaGVja0JveCgndmVyaWZ5ZGF0YScpLAotICAgIGFkZFRvTG9nOiBhZGRUb0xvZywK
LSAgICBhZGRUb1N1bW1hcnk6IGFkZFRvU3VtbWFyeSwKLSAgICBtZWFzdXJlVmFsdWU6IG1lYXN1
cmVWYWx1ZSwKLSAgICBub3RpZnlBYm9ydDogbm90aWZ5QWJvcnQKLSAgfTsKLX0KLQotZnVuY3Rp
b24gb25TZW5kQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRv
QWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdzZW5kQmVuY2ht
YXJrJyk7Ci19Ci0KLWZ1bmN0aW9uIG9uUmVjZWl2ZUJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZp
ZyA9IGdldENvbmZpZygpOwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3go
J3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvbkJhdGNoQmVu
Y2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRvQWN0aW9uKGNvbmZp
ZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdiYXRjaEJlbmNobWFyaycpOwotfQot
Ci1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLSAgZG9B
Y3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ3N0b3AnKTsKLX0K
LQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cn
KTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1bW1hcnknKTsK
LQotICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonID8g
J3dzczovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVmYXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5k
b3cubG9jYXRpb24uaG9zdCArICcvYmVuY2htYXJrX2hlbHBlcic7Ci0KLSAgYWRkcmVzc0JveC52
YWx1ZSA9IGRlZmF1bHRBZGRyZXNzOwotCi0gIGFkZFRvTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNl
ckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1bW1hcnkod2luZG93Lm5hdmlnYXRvci51
c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93
KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOwotICB9Ci0K
LSAgaW5pdFdvcmtlcignV2ViU29ja2V0JywgJycpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxkaXYgaWQ9ImJlbmNobWFya19kaXYiPgotICB1cmwg
PGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+Ci0gIDxpbnB1dCB0eXBl
PSJidXR0b24iIHZhbHVlPSJzZW5kIiBvbmNsaWNrPSJvblNlbmRCZW5jaG1hcmsoKSI+Ci0gIDxp
bnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJyZWNlaXZlIiBvbmNsaWNrPSJvblJlY2VpdmVCZW5j
aG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJiYXRjaCIgb25jbGljaz0i
b25CYXRjaEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InN0b3Ai
IG9uY2xpY2s9Im9uU3RvcCgpIj4KLQotICA8YnIvPgotCi0gIDxpbnB1dCB0eXBlPSJjaGVja2Jv
eCIgaWQ9InByaW50c2l6ZSIgY2hlY2tlZD4KLSAgPGxhYmVsIGZvcj0icHJpbnRzaXplIj5Qcmlu
dCBzaXplIGFuZCB0aW1lIHBlciBtZXNzYWdlPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNr
Ym94IiBpZD0idmVyaWZ5ZGF0YSIgY2hlY2tlZD4KLSAgPGxhYmVsIGZvcj0idmVyaWZ5ZGF0YSI+
VmVyaWZ5IGRhdGE8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ3b3JrZXIi
PgotICA8bGFiZWwgZm9yPSJ3b3JrZXIiPlJ1biBvbiB3b3JrZXI8L2xhYmVsPgotCi0gIDxici8+
Ci0KLSAgUGFyYW1ldGVyczoKLQotICA8YnIvPgotCi0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAg
ICA8dGQ+TnVtIHNvY2tldHM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bnVtc29ja2V0cyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8
dGQ+TnVtYmVyIG9mIGl0ZXJhdGlvbnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0ibnVtaXRlcmF0aW9ucyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+
Ci0gICAgICA8dGQ+TnVtYmVyIG9mIHdhcm0tdXAgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+
PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW13YXJtdXBpdGVyYXRpb25zIiB2YWx1ZT0iMCI+PC90
ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdGFydCBzaXplPC90ZD4KLSAgICAg
IDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0YXJ0c2l6ZSIgdmFsdWU9IjEwMjQwIj48L3Rk
PgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0b3AgdGhyZXNob2xkPC90ZD4KLSAg
ICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0b3B0aHJlc2hvbGQiIHZhbHVlPSIxMDI0
MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TWluaW11bSB0b3Rh
bDwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtaW50b3RhbCIgdmFsdWU9
IjEwMjQwMDAwMCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5NdWx0aXBs
aWVyczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtdWx0aXBsaWVycyIg
dmFsdWU9IjUsIDIiPjwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgotCi08ZGl2
IGlkPSJsb2dfZGl2Ij4KLSAgPHRleHRhcmVhCi0gICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5
bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJz
dW1tYXJ5X2RpdiI+Ci0gIFN1bW1hcnkKLSAgPHRleHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2
PgotCi1Ob3RlOiBFZmZlY3Qgb2YgUlRUIGlzIG5vdCBlbGltaW5hdGVkLgotCi08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2htYXJrLmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU2NDM1ZDFk
MGRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5qcworKysgL2Rl
di9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29w
ZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi1pZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1
bmRlZmluZWQiKSB7Ci0gIC8vIFJ1bm5pbmcgb24gYSB3b3JrZXIKLSAgaW1wb3J0U2NyaXB0cygn
dXRpbC5qcycsICd1dGlsX3dvcmtlci5qcycpOwotfQotCi0vLyBOYW1lc3BhY2UgZm9yIGhvbGRp
bmcgZ2xvYmFscy4KLXZhciBiZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07Ci0KLXZhciBz
b2NrZXRzID0gW107Ci12YXIgbnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKLQotdmFyIHRpbWVy
SUQgPSBudWxsOwotCi1mdW5jdGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgewotICBzb2NrZXQu
b25vcGVuID0gbnVsbDsKLSAgc29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7Ci0gIHNvY2tldC5vbmVy
cm9yID0gbnVsbDsKLSAgc29ja2V0Lm9uY2xvc2UgPSBudWxsOwotICBzb2NrZXQuY2xvc2UoKTsK
LX0KLQotZnVuY3Rpb24gZGVzdHJveUFsbFNvY2tldHMoKSB7Ci0gIGZvciAodmFyIGkgPSAwOyBp
IDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7
Ci0gIH0KLSAgc29ja2V0cyA9IFtdOwotfQotCi1mdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChz
aXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIHZhciB0b3Rh
bFNpemUgPSAwOwotICB2YXIgdG90YWxSZXBsaWVkID0gMDsKLQotICB2YXIgb25NZXNzYWdlSGFu
ZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQo
Y29uZmlnLCBldmVudC5kYXRhLCBzaXplKSkgewotICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsK
LSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6
ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChj
b25maWcsIHNpemUsIGJlbmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCi0gICAgICAg
IGlzV2FybVVwKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH07Ci0KLSAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFyIHNvY2tldCA9IHNv
Y2tldHNbaV07Ci0gICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7Ci0gIH0K
LQotICB2YXIgZGF0YUFycmF5ID0gW107Ci0KLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5t
aW5Ub3RhbCkgewotICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAg
ICBmaWxsQXJyYXlCdWZmZXIoYnVmZmVyLCAweDYxKTsKLQotICAgIGRhdGFBcnJheS5wdXNoKGJ1
ZmZlcik7Ci0gICAgdG90YWxTaXplICs9IHNpemU7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gIHRvdGFsU2l6ZSA9IDA7Ci0KLSAgdmFyIHNv
Y2tldEluZGV4ID0gMDsKLSAgdmFyIGRhdGFJbmRleCA9IDA7Ci0gIHdoaWxlICh0b3RhbFNpemUg
PCBjb25maWcubWluVG90YWwpIHsKLSAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOwotICAgIGNv
bW1hbmQucHVzaChjb25maWcudmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7Ci0gICAgc29ja2V0c1tz
b2NrZXRJbmRleF0uc2VuZChjb21tYW5kLmpvaW4oJyAnKSk7Ci0gICAgc29ja2V0c1tzb2NrZXRJ
bmRleF0uc2VuZChkYXRhQXJyYXlbZGF0YUluZGV4XSk7Ci0gICAgc29ja2V0SW5kZXggPSAoc29j
a2V0SW5kZXggKyAxKSAlIHNvY2tldHMubGVuZ3RoOwotCi0gICAgdG90YWxTaXplICs9IHNpemU7
Ci0gICAgKytkYXRhSW5kZXg7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0
ZXAoc2l6ZSwgY29uZmlnLCBpc1dhcm1VcCkgewotICB0aW1lcklEID0gbnVsbDsKLQotICB2YXIg
dG90YWxTaXplID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0KLSAgdmFyIG9uTWVzc2Fn
ZUhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkgewotICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZl
bnQuZGF0YS5ieXRlTGVuZ3RoOwotICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKLSAg
ICAgIGNvbmZpZy5hZGRUb0xvZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQg
JyArCi0gICAgICAgICAgYnl0ZXNSZWNlaXZlZCArICdCJyk7Ci0gICAgICBkZXN0cm95QWxsU29j
a2V0cygpOwotICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVu
dC5kYXRhLCAweDYxKSkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmlj
YXRpb24gZmFpbGVkJyk7Ci0gICAgICBkZXN0cm95QWxsU29ja2V0cygpOwotICAgICAgY29uZmln
Lm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVk
ICs9IGJ5dGVzUmVjZWl2ZWQ7Ci0KLSAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7
Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZp
Zywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKLSAgICAgICAgaXNX
YXJtVXApOwotCi0gICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNvY2tldHMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgc29ja2V0ID0gc29ja2V0
c1tpXTsKLSAgICBzb2NrZXQuYmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7Ci0gICAgc29ja2V0
Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gIHZhciBzb2NrZXRJbmRleCA9IDA7Ci0gIHdo
aWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwpIHsKLSAgICBzb2NrZXRzW3NvY2tldElu
ZGV4XS5zZW5kKCdyZWNlaXZlICcgKyBzaXplKTsKLSAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJ
bmRleCArIDEpICUgc29ja2V0cy5sZW5ndGg7Ci0KLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAg
fQotfQotCi1mdW5jdGlvbiBjcmVhdGVTb2NrZXQoY29uZmlnKSB7Ci0gIC8vIFRPRE8odHlvc2hp
bm8pOiBBZGQgVENQIHdhcm0gdXAuCi0gIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOwotCi0g
IGNvbmZpZy5hZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsKTsKLQotICB2YXIgc29ja2V0ID0gbmV3
IFdlYlNvY2tldCh1cmwpOwotICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICBjb25maWcuYWRkVG9Mb2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRp
bmcuJyk7Ci0gIH07Ci0gIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgY29uZmln
LmFkZFRvTG9nKCdFcnJvcicpOwotICB9OwotICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdDbG9zZWQnKTsKLSAgICBjb25maWcubm90aWZ5
QWJvcnQoKTsKLSAgfTsKLSAgcmV0dXJuIHNvY2tldDsKLX0KLQotZnVuY3Rpb24gc3RhcnRCZW5j
aG1hcmsoY29uZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFNv
Y2tldHMoKTsKLQotICBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwotCi0gIGZvciAodmFyIGkg
PSAwOyBpIDwgY29uZmlnLm51bVNvY2tldHM7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBjcmVh
dGVTb2NrZXQoY29uZmlnKTsKLSAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICBjb25maWcuYWRkVG9Mb2coJ09wZW5lZCcpOwotCi0gICAgICArK251bUVzdGFibGlzaGVkU29j
a2V0czsKLQotICAgICAgaWYgKG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0
aCkgewotICAgICAgICBydW5OZXh0VGFzayhjb25maWcpOwotICAgICAgfQotICAgIH07Ci0gICAg
c29ja2V0cy5wdXNoKHNvY2tldCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5n
KGNvbmZpZykgewotICByZXR1cm4gJyhXZWJTb2NrZXQnICsKLSAgICAnLCAnICsgKHR5cGVvZiBp
bXBvcnRTY3JpcHRzICE9PSAidW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCi0gICAg
JywgbnVtU29ja2V0cz0nICsgY29uZmlnLm51bVNvY2tldHMgKwotICAgICcsIG51bUl0ZXJhdGlv
bnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25m
aWcudmVyaWZ5RGF0YSArCi0gICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCi0g
ICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMg
KwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNv
bmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhidWls
ZExlZ2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VE
YXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOwotICBhZGRSZXN1
bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJp
bmcoY29uZmlnKSk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOwot
ICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKwot
ICAgICAgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25maWcp
OwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKCkgewotICBkZXN0cm95QWxsU29ja2V0cygpOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0NGFkMGJmZWVmYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2ht
YXJrX2hlbHBlcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0jIENvcHly
aWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJIYW5kbGVyIGZvciBiZW5jaG1hcmsuaHRtbC4iIiIKLQotCi1kZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgIyBUdXJuIG9mZiBj
b21wcmVzc2lvbi4KLSAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KLQot
Ci1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIGRhdGEgPSAnJwot
Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgY29tbWFuZCA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJl
Y2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIGNvbW1hbmQgaXMgTm9uZToKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1hbmQsIHVuaWNvZGUpOgot
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6JyArIGNv
bW1hbmQpCi0gICAgICAgIGNvbW1hbmRzID0gY29tbWFuZC5zcGxpdCgnICcpCi0gICAgICAgIGlm
IGxlbihjb21tYW5kcykgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFs
aWQgY29tbWFuZCBkYXRhOiAnICsgY29tbWFuZCkKLQotICAgICAgICBpZiBjb21tYW5kc1swXSA9
PSAncmVjZWl2ZSc6Ci0gICAgICAgICAgICBpZiBsZW4oY29tbWFuZHMpICE9IDI6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdJbGxl
Z2FsIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHNlbmQgY29tbWFuZCcgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZCkKLSAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0p
Ci0KLSAgICAgICAgICAgICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KLSAgICAgICAgICAgIGlm
IGxlbihkYXRhKSAhPSBzaXplOgotICAgICAgICAgICAgICAgIGRhdGEgPSAnYScgKiBzaXplCi0g
ICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoZGF0YSwgYmluYXJ5PVRy
dWUpCi0gICAgICAgIGVsaWYgY29tbWFuZHNbMF0gPT0gJ3NlbmQnOgotICAgICAgICAgICAgaWYg
bGVuKGNvbW1hbmRzKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBy
ZWNlaXZlIGNvbW1hbmQnICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0gICAg
ICAgICAgICB2ZXJpZnlfZGF0YSA9IGNvbW1hbmRzWzFdID09ICcxJwotCi0gICAgICAgICAgICBk
YXRhID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgIGlm
IGRhdGEgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2Fk
IG5vdCByZWNlaXZlZCcpCi0gICAgICAgICAgICBzaXplID0gbGVuKGRhdGEpCi0KLSAgICAgICAg
ICAgIGlmIHZlcmlmeV9kYXRhOgotICAgICAgICAgICAgICAgIGlmIGRhdGEgIT0gJ2EnICogc2l6
ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmlj
YXRpb24gZmFpbGVkJykKLQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKHN0cihzaXplKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0ludmFsaWQgY29tbWFuZDogJyArIGNvbW1hbmRzWzBdKQotCi0KLSMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Nsb3NlX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9jbG9zZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YjA4Mzg0MDgx
Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9jbG9zZV93c2gucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN0cnVjdAot
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgc3RyZWFtCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5y
ZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBsaW5lIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgY29kZSwgcmVhc29uID0gbGluZS5zcGxpdCgnICcsIDEpCi0gICAgICAg
IGlmIGNvZGUgaXMgTm9uZSBvciByZWFzb24gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGludChjb2RlKSwgcmVh
c29uKQotICAgICAgICAjIGNsb3NlX2Nvbm5lY3Rpb24oKSBpbml0aWF0ZXMgY2xvc2luZyBoYW5k
c2hha2UuIEl0IHZhbGlkYXRlcyBjb2RlCi0gICAgICAgICMgYW5kIHJlYXNvbi4gSWYgeW91IHdh
bnQgdG8gc2VuZCBhIGJyb2tlbiBjbG9zZSBmcmFtZSBmb3IgYSB0ZXN0LAotICAgICAgICAjIGZv
bGxvd2luZyBjb2RlIHdpbGwgYmUgdXNlZnVsLgotICAgICAgICAjID4gZGF0YSA9IHN0cnVjdC5w
YWNrKCchSCcsIGludChjb2RlKSkgKyByZWFzb24uZW5jb2RlKCdVVEYtOCcpCi0gICAgICAgICMg
PiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRh
KSkKLSAgICAgICAgIyA+ICMgU3VwcHJlc3MgdG8gcmUtcmVzcG9uZCBjbGllbnQgcmVzcG9uZGlu
ZyBjbG9zZSBmcmFtZS4KLSAgICAgICAgIyA+IHJhaXNlIEV4Y2VwdGlvbigiY3VzdG9taXplZCBz
ZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICMgU2ltcGx5IGVjaG8gYSBj
bG9zZSBzdGF0dXMgY29kZQotICAgIGNvZGUsIHJlYXNvbiA9IHJlcXVlc3Qud3NfY2xvc2VfY29k
ZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KLQotICAgICMgcHl3ZWJzb2NrZXQgc2V0cyBwc2V1
ZG8gY29kZSBmb3IgcmVjZWl2aW5nIGFuIGVtcHR5IGJvZHkgY2xvc2UgZnJhbWUuCi0gICAgaWYg
Y29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRDoKLSAgICAgICAgY29kZSA9
IE5vbmUKLSAgICAgICAgcmVhc29uID0gJycKLSAgICByZXR1cm4gY29kZSwgcmVhc29uCi0KLQot
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY29uc29sZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2NvbnNvbGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2NkNmQ4ZjgwNjc2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2NvbnNvbGUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMxNyArMCwwIEBACi08IS0tCi1Db3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0tLT4KLQotPCEtLQotQSBzaW1wbGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2Nr
ZXQgc2VydmVyLgotCi1UeXBlIGFuIGFkZHJlc3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5k
IGNsaWNrIGNvbm5lY3QgdG8gZXN0YWJsaXNoCi1XZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBt
ZXNzYWdlIGludG8gdGhlIGJvdHRvbSB0ZXh0IGlucHV0IGFuZCBjbGljayBzZW5kCi10byBzZW5k
IHRoZSBtZXNzYWdlLiBSZWNlaXZlZC9zZW50IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRl
IHdpbGwgYmUgc2hvd24KLW9uIHRoZSBtaWRkbGUgdGV4dGFyZWEuCi0tLT4KLQotPGh0bWw+Ci08
aGVhZD4KLTx0aXRsZT5XZWJTb2NrZXQgY29uc29sZTwvdGl0bGU+Ci08c2NyaXB0PgotdmFyIHNv
Y2tldCA9IG51bGw7Ci0KLXZhciBzaG93VGltZVN0YW1wID0gZmFsc2U7Ci0KLXZhciBhZGRyZXNz
Qm94ID0gbnVsbDsKLXZhciBwcm90b2NvbHNCb3ggPSBudWxsOwotdmFyIGxvZ0JveCA9IG51bGw7
Ci12YXIgbWVzc2FnZUJveCA9IG51bGw7Ci12YXIgZmlsZUJveCA9IG51bGw7Ci12YXIgY29kZUJv
eCA9IG51bGw7Ci12YXIgcmVhc29uQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0VGltZVN0YW1w
KCkgewotICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRv
TG9nKGxvZykgewotICBpZiAoc2hvd1RpbWVTdGFtcCkgewotICAgIGxvZ0JveC52YWx1ZSArPSAn
WycgKyBnZXRUaW1lU3RhbXAoKSArICddICc7Ci0gIH0KLSAgbG9nQm94LnZhbHVlICs9IGxvZyAr
ICdcbicKLSAgLy8gTGFyZ2UgZW5vdWdoIHRvIGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3Nh
Z2UuCi0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBzZXRiaW5h
cnl0eXBlKGJpbmFyeVR5cGUpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90
IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIHNvY2tldC5iaW5hcnlUeXBlID0g
YmluYXJ5VHlwZTsKLSAgYWRkVG9Mb2coJ1NldCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBl
KTsKLX0KLQotZnVuY3Rpb24gc2VuZCgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xv
ZygnTm90IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIHNvY2tldC5zZW5kKG1l
c3NhZ2VCb3gudmFsdWUpOwotICBhZGRUb0xvZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7Ci0g
IG1lc3NhZ2VCb3gudmFsdWUgPSAnJzsKLX0KLQotZnVuY3Rpb24gc2VuZGZpbGUoKSB7Ci0gIGlm
ICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICB2YXIgZmlsZXMgPSBmaWxlQm94LmZpbGVzOwotCi0gIGlmIChmaWxlcy5sZW5n
dGggPT0gMCkgewotICAgIGFkZFRvTG9nKCdGaWxlIG5vdCBzZWxlY3RlZCcpOwotICAgIHJldHVy
bjsKLSAgfQotCi0gIHNvY2tldC5zZW5kKGZpbGVzWzBdKTsKLSAgYWRkVG9Mb2coJz4gU2VuZCAn
ICsgZmlsZXNbMF0ubmFtZSk7Ci19Ci0KLWZ1bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29s
c1RleHQpIHsKLSAgdmFyIHByb3RvY29scyA9IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKLSAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b2NvbHMubGVuZ3RoOyArK2kpIHsKLSAgICBwcm90b2Nv
bHNbaV0gPSBwcm90b2NvbHNbaV0udHJpbSgpOwotICB9Ci0KLSAgaWYgKHByb3RvY29scy5sZW5n
dGggPT0gMCkgewotICAgIC8vIERvbid0IHBhc3MuCi0gICAgcHJvdG9jb2xzID0gbnVsbDsKLSAg
fSBlbHNlIGlmIChwcm90b2NvbHMubGVuZ3RoID09IDEpIHsKLSAgICBpZiAocHJvdG9jb2xzWzBd
Lmxlbmd0aCA9PSAwKSB7Ci0gICAgICAvLyBEb24ndCBwYXNzLgotICAgICAgcHJvdG9jb2xzID0g
bnVsbDsKLSAgICB9IGVsc2UgewotICAgICAgLy8gUGFzcyBhcyBhIHN0cmluZy4KLSAgICAgIHBy
b3RvY29scyA9IHByb3RvY29sc1swXTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcHJvdG9jb2xz
OwotfQotCi1mdW5jdGlvbiBjb25uZWN0KCkgewotICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1
ZTsKLSAgdmFyIHByb3RvY29scyA9IHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7
Ci0KLSAgaWYgKCdXZWJTb2NrZXQnIGluIHdpbmRvdykgewotICAgIGlmIChwcm90b2NvbHMpIHsK
LSAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbHMpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7Ci0gICAgfQotICB9IGVsc2Ug
ewotICAgIHJldHVybjsKLSAgfQotCi0gIHNvY2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgdmFyIGV4dHJhSW5mbyA9IFtdOwotICAgIGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYm
IHNvY2tldC5wcm90b2NvbCkgewotICAgICAgZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyAr
IHNvY2tldC5wcm90b2NvbCk7Ci0gICAgfQotICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tl
dCkgJiYgc29ja2V0LmV4dGVuc2lvbnMpIHsKLSAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNp
b25zID0gJyArIHNvY2tldC5leHRlbnNpb25zKTsKLSAgICB9Ci0KLSAgICB2YXIgbG9nTWVzc2Fn
ZSA9ICdPcGVuZWQnOwotICAgIGlmIChleHRyYUluZm8ubGVuZ3RoID4gMCkgewotICAgICAgbG9n
TWVzc2FnZSArPSAnICgnICsgZXh0cmFJbmZvLmpvaW4oJywgJykgKyAnKSc7Ci0gICAgfQotICAg
IGFkZFRvTG9nKGxvZ01lc3NhZ2UpOwotICB9OwotICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgaWYgKCgnQXJyYXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50
LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHsKLSAgICAgIGFkZFRvTG9nKCc8IFJlY2Vp
dmVkIGFuIEFycmF5QnVmZmVyIG9mICcgKyBldmVudC5kYXRhLmJ5dGVMZW5ndGggKwotICAgICAg
ICAgICAgICAgJyBieXRlcycpCi0gICAgfSBlbHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYg
KGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBCbG9iKSkgewotICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2
ZWQgYSBCbG9iIG9mICcgKyBldmVudC5kYXRhLnNpemUgKyAnIGJ5dGVzJykKLSAgICB9IGVsc2Ug
ewotICAgICAgYWRkVG9Mb2coJzwgJyArIGV2ZW50LmRhdGEpOwotICAgIH0KLSAgfTsKLSAgc29j
a2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7Ci0gICAgYWRkVG9Mb2coJ0Vycm9yJyk7Ci0gIH07
Ci0gIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgdmFyIGxvZ01lc3Nh
Z2UgPSAnQ2xvc2VkICgnOwotICAgIGlmICgoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Ns
b3NlRXZlbnQnIGluIHdpbmRvdykgJiYKLSAgICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VF
dmVudCkpIHsKLSAgICAgIGxvZ01lc3NhZ2UgKz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0Ns
ZWFuOwotICAgICAgLy8gY29kZSBhbmQgcmVhc29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCi0gICAg
ICAvLyBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCi0g
ICAgICBpZiAoJ2NvZGUnIGluIGV2ZW50KSB7Ci0gICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29k
ZSA9ICcgKyBldmVudC5jb2RlOwotICAgICAgfQotICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50
KSB7Ci0gICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsK
LSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBp
cyBub3QgYXZhaWxhYmxlJzsKLSAgICB9Ci0gICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7
Ci0gIH07Ci0KLSAgaWYgKHByb3RvY29scykgewotICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1
cmwgKyAnIChwcm90b2NvbHMgPSAnICsgcHJvdG9jb2xzICsgJyknKTsKLSAgfSBlbHNlIHsKLSAg
ICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjbG9zZVNv
Y2tldCgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcp
OwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52
YWx1ZSkgewotICAgIHNvY2tldC5jbG9zZShjb2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUp
OwotICB9IGVsc2UgewotICAgIHNvY2tldC5jbG9zZSgpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBy
aW50U3RhdGUoKSB7Ci0gIGlmICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0
ZWQnKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBhZGRUb0xvZygKLSAgICAgICd1cmwgPSAnICsg
c29ja2V0LnVybCArCi0gICAgICAnLCByZWFkeVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRl
ICsKLSAgICAgICcsIGJ1ZmZlcmVkQW1vdW50ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7
Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24u
cHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7Ci0gIHZhciBkZWZhdWx0
QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKLQotICBh
ZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKLSAgcHJvdG9j
b2xzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3RvY29scycpOwotICBsb2dCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0gIG1lc3NhZ2VCb3ggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpOwotICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ZpbGUnKTsKLSAgY29kZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2RlJyk7Ci0gIHJlYXNvbkJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsK
LQotICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7Ci0KLSAgaWYgKCEoJ1dlYlNv
Y2tldCcgaW4gd2luZG93KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWls
YWJsZScpOwotICB9Ci19Ci08L3NjcmlwdD4KLTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci1mb3Jt
IHsKLSAgbWFyZ2luOiAwcHg7Ci19Ci0KLSNjb25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2Rp
diwgI3NlbmRmaWxlX2RpdiwgI2Nsb3NlX2RpdiwgI3ByaW50c3RhdGVfZGl2IHsKLSAgcGFkZGlu
ZzogNXB4OwotICBtYXJnaW46IDVweDsKLSAgYm9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4
OwotICBib3JkZXItc3R5bGU6IHNvbGlkOwotICBib3JkZXItY29sb3I6IHNpbHZlcjsKLX0KLTwv
c3R5bGU+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxkaXY+Ci0KLTxkaXYg
aWQ9ImNvbm5lY3RfZGl2Ij4KLSAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgp
OyByZXR1cm4gZmFsc2U7Ij4KLSAgICB1cmwgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNz
IiBzaXplPSI0MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgot
ICAgIDxici8+Ci0gICAgcHJvdG9jb2xzIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xz
IiBzaXplPSIyMCI+Ci0gIDwvZm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4KLSAg
PHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJl
YT4KLSAgPGJyLz4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IgotICAgICAgICAgbmFtZT0ic2hv
d3RpbWVzdGFtcCIKLSAgICAgICAgIHZhbHVlPSJzaG93dGltZXN0YW1wIgotICAgICAgICAgb25j
bGljaz0ic2hvd1RpbWVTdGFtcCA9IHRoaXMuY2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCi08L2Rp
dj4KLQotPGRpdiBpZD0ic2VuZF9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJz
ZW5kKCk7IHJldHVybiBmYWxzZTsiPgotICAgIGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJt
ZXNzYWdlIiBzaXplPSI0MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQi
PgotICA8L2Zvcm0+Ci08L2Rpdj4KLQotPGRpdiBpZD0ic2VuZGZpbGVfZGl2Ij4KLSAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZGZpbGUoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAgPGlu
cHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBzaXplPSI0MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1
Ym1pdCIgdmFsdWU9InNlbmQgZmlsZSI+Ci0gIDwvZm9ybT4KLQotICBTZXQgYmluYXJ5VHlwZQot
ICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgotICAgICAg
ICAgdmFsdWU9ImJsb2IiCi0gICAgICAgICBvbmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJyki
IGNoZWNrZWQ+YmxvYgotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJiaW5h
cnl0eXBlIgotICAgICAgICAgdmFsdWU9ImFycmF5YnVmZmVyIgotICAgICAgICAgb25jbGljaz0i
c2V0YmluYXJ5dHlwZSgnYXJyYXlidWZmZXInKSI+YXJyYXlidWZmZXIKLTwvZGl2PgotCi08ZGl2
IGlkPSJjbG9zZV9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tl
dCgpOyByZXR1cm4gZmFsc2U7Ij4KLSAgICBjb2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29k
ZSIgc2l6ZT0iMTAiPgotICAgIHJlYXNvbiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIg
c2l6ZT0iMjAiPgotICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+Ci0gIDwv
Zm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJwcmludHN0YXRlX2RpdiI+Ci0gIDxpbnB1dCB0eXBl
PSJidXR0b24iIHZhbHVlPSJwcmludCBzdGF0ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Ci08
L2Rpdj4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhh
bXBsZS9jb29raWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Nvb2tpZV93c2gucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMzI3MTUyZTcwMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS9jb29raWVfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotIyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMgaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLQotaW1w
b3J0IHVybHBhcnNlCi0KLQotZGVmIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCB2YWx1ZSk6Ci0g
ICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgoJ1NldC1Db29raWUnLCB2YWx1ZSkpCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIGNvbXBv
bmVudHMgPSB1cmxwYXJzZS51cmxwYXJzZShyZXF1ZXN0LnVyaSkKLSAgICBjb21tYW5kID0gY29t
cG9uZW50c1s0XQotCi0gICAgT05FX0RBWV9MSUZFID0gJ01heC1BZ2U9ODY0MDAnCi0KLSAgICBp
ZiBjb21tYW5kID09ICdzZXQnOgotICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJzsg
Jy5qb2luKFsnZm9vPWJhcicsIE9ORV9EQVlfTElGRV0pKQotICAgIGVsaWYgY29tbWFuZCA9PSAn
c2V0X2h0dHBvbmx5JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsCi0gICAgICAg
ICAgICAnOyAnLmpvaW4oWydodHRwT25seUZvbz1iYXInLCBPTkVfREFZX0xJRkUsICdodHRwT25s
eSddKSkKLSAgICBlbGlmIGNvbW1hbmQgPT0gJ2NsZWFyJzoKLSAgICAgICAgX2FkZF9zZXRfY29v
a2llKHJlcXVlc3QsICdmb289MDsgTWF4LUFnZT0wJykKLSAgICAgICAgX2FkZF9zZXRfY29va2ll
KHJlcXVlc3QsICdodHRwT25seUZvbz0wOyBNYXgtQWdlPTAnKQotCi0KLWRlZiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2VjaG9fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWM3NDBlNzA1OGIuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTI5ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiU2lt
cGxlIFdlYlNvY2tldCBjbGllbnQgbmFtZWQgZWNob19jbGllbnQganVzdCBiZWNhdXNlIG9mIGhp
c3RvcmljYWwgcmVhc29uLgotCi1tb2RfcHl3ZWJzb2NrZXQgZGlyZWN0b3J5IG11c3QgYmUgaW4g
UFlUSE9OUEFUSC4KLQotRXhhbXBsZSBVc2FnZToKLQotIyBzZXJ2ZXIgc2V0dXAKLSAlIGNkICRw
eXdlYnNvY2tldAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBweXRob24gLi9tb2RfcHl3ZWJzb2Nr
ZXQvc3RhbmRhbG9uZS5weSAtcCA4ODgwIFwKLSAgICAtZCAkY3dkL3NyYy9leGFtcGxlCi0KLSMg
cnVuIGNsaWVudAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBweXRob24gLi9zcmMvZXhhbXBsZS9l
Y2hvX2NsaWVudC5weSAtcCA4ODgwIFwKLSAgICAgLXMgbG9jYWxob3N0IFwKLSAgICAgLW8gaHR0
cDovL2xvY2FsaG9zdCAtciAvZWNobyAtbSB0ZXN0Ci0KLW9yCi0KLSMgcnVuIGVjaG8gY2xpZW50
IHRvIHRlc3QgSUVURiBIeUJpIDAwIHByb3RvY29sCi0gcnVuIHdpdGggLS1wcm90b2NvbC12ZXJz
aW9uPWh5YmkwMAotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0K
LQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGNvZGVjcwotaW1wb3J0IGxvZ2dpbmcKLWZyb20gb3B0
cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBv
cnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5z
aW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgX1Blck1lc3NhZ2VE
ZWZsYXRlRnJhbWVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBfcGFy
c2Vfd2luZG93X2JpdHMKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFt
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20g
bW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1fVElNRU9VVF9TRUMgPSAxMAotX1VOREVGSU5FRF9Q
T1JUID0gLTEKLQotX1VQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1f
VVBHUkFERV9IRUFERVJfSElYSUU3NSA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotCi0jIFNwZWNpYWwgbWVz
c2FnZSB0aGF0IHRlbGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFr
ZQotX0dPT0RCWUVfTUVTU0FHRSA9ICdHb29kYnllJwotCi1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJ
MTMgPSAnaHliaTEzJwotX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4ID0gJ2h5YmkwOCcKLV9QUk9U
T0NPTF9WRVJTSU9OX0hZQkkwMCA9ICdoeWJpMDAnCi1fUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1
ID0gJ2hpeGllNzUnCi0KLSMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1f
VExTX0JZX1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9w
ZW5zc2wnCi0KLSMgVmFsdWVzIHVzZWQgYnkgdGhlIC0tdGxzLXZlcnNpb24gZmxhZy4KLV9UTFNf
VkVSU0lPTl9TU0wyMyA9ICdzc2wyMycKLV9UTFNfVkVSU0lPTl9TU0wzID0gJ3NzbDMnCi1fVExT
X1ZFUlNJT05fVExTMSA9ICd0bHMxJwotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4
Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWRlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2Up
OgotICAgIHJldHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBf
b3JpZ2luX2hlYWRlcihoZWFkZXIsIG9yaWdpbik6Ci0gICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRp
b24gb2YgdGhlIHN0cmluZyAiT3JpZ2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKLSAg
ICAjIGFuZCB0aGUgL29yaWdpbi8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2Us
IHRvIC9maWVsZHMvLgotICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4u
bG93ZXIoKSkKLQotCi1kZWYgX2Zvcm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUp
OgotICAgICMgNC4xIDkuIExldCAvaG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KLSAgICAj
IDQuMSAxMC4gQXBwZW5kIHRoZSAvaG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dl
cmNhc2UsIHRvCi0gICAgIyAvaG9zdHBvcnQvCi0gICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkK
LSAgICAjIDQuMSAxMS4gSWYgL3NlY3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgw
LCBvciBpZiAvc2VjdXJlLwotICAgICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0
aGVuIGFwcGVuZCBhIFUrMDAzQSBDT0xPTiBjaGFyYWN0ZXIKLSAgICAjICg6KSBmb2xsb3dlZCBi
eSB0aGUgdmFsdWUgb2YgL3BvcnQvLCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAot
ICAgICMgdG8gL2hvc3Rwb3J0LwotICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21t
b24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQpIG9yCi0gICAgICAgIChzZWN1cmUgYW5kIHBvcnQg
IT0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCkpOgotICAgICAgICBob3N0
cG9ydCArPSAnOicgKyBzdHIocG9ydCkKLSAgICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0
aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIwIFNQQUNFCi0gICAgIyBjaGFyYWN0ZXIsIGFuZCAv
aG9zdHBvcnQvLCB0byAvZmllbGRzLy4KLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKGNvbW1v
bi5IT1NUX0hFQURFUiwgaG9zdHBvcnQpCi0KLQotZGVmIF9yZWNlaXZlX2J5dGVzKHNvY2tldCwg
bGVuZ3RoKToKLSAgICBieXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hp
bGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihy
ZW1haW5pbmcpCi0gICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKLSAgICAgICAgICAgIHJh
aXNlIElPRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSBy
ZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCi0gICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQg
JWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCi0gICAgICAgICAgICAgICAg
KGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKLSAgICAgICAgYnl0ZXMuYXBwZW5kKHJlY2Vp
dmVkX2J5dGVzKQotICAgICAgICByZW1haW5pbmcgLT0gbGVuKHJlY2VpdmVkX2J5dGVzKQotICAg
IHJldHVybiAnJy5qb2luKGJ5dGVzKQotCi0KLWRlZiBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmll
bGRzLCBuYW1lKToKLSAgICAiIiJHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIHNwZWNpZmll
ZCBieSBuYW1lIGZyb20gZmllbGRzLgotCi0gICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoYXQg
dGhlcmUncyBvbmx5IG9uZSBoZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKLSAgICBpbiBm
aWVsZHMuIE90aGVyd2lzZSwgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgotICAgICIi
IgotCi0gICAgdmFsdWVzID0gZmllbGRzLmdldChuYW1lLmxvd2VyKCkpCi0gICAgaWYgdmFsdWVz
IGlzIE5vbmUgb3IgbGVuKHZhbHVlcykgPT0gMDoKLSAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNo
YWtlRXJyb3IoCi0gICAgICAgICAgICAnJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUs
IHZhbHVlcykpCi0gICAgaWYgbGVuKHZhbHVlcykgPiAxOgotICAgICAgICByYWlzZSBDbGllbnRI
YW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICdNdWx0aXBsZSAlcyBoZWFkZXJzIGZvdW5kOiAl
cicgJSAobmFtZSwgdmFsdWVzKSkKLSAgICByZXR1cm4gdmFsdWVzWzBdCi0KLQotZGVmIF92YWxp
ZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF92YWx1ZSwgY2FzZV9zZW5zaXRpdmU9RmFsc2UpOgotICAgICIi
IkdldHMgYW5kIHZhbGlkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBzcGVjaWZpZWQgYnkg
bmFtZSBmcm9tCi0gICAgZmllbGRzLgotCi0gICAgSWYgZXhwZWN0ZWRfdmFsdWUgaXMgc3BlY2lm
aWVkLCBjb21wYXJlcyBleHBlY3RlZCB2YWx1ZSBhbmQgYWN0dWFsIHZhbHVlCi0gICAgYW5kIHJh
aXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvciBvbiBmYWlsdXJlLiBZb3UgY2FuIHNwZWNpZnkg
Y2FzZQotICAgIHNlbnNpdGl2ZW5lc3MgaW4gdGhpcyBjb21wYXJpc29uIGJ5IGNhc2Vfc2Vuc2l0
aXZlIHBhcmFtZXRlci4gVGhpcyBmdW5jdGlvbgotICAgIGV4cGVjdHMgdGhhdCB0aGVyZSdzIG9u
bHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBpbiBmaWVsZHMuCi0gICAgT3Ro
ZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3IuCi0gICAgIiIiCi0KLSAgICB2
YWx1ZSA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsIG5hbWUpCi0KLSAgICBpZiAoKGNh
c2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZSAhPSBleHBlY3RlZF92YWx1ZSkgb3IKLSAgICAgICAgKG5v
dCBjYXNlX3NlbnNpdGl2ZSBhbmQgdmFsdWUubG93ZXIoKSAhPSBleHBlY3RlZF92YWx1ZS5sb3dl
cigpKSk6Ci0gICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAg
J0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFs
KScgJQotICAgICAgICAgICAgKG5hbWUsIGV4cGVjdGVkX3ZhbHVlLCB2YWx1ZSkpCi0KLQotY2xh
c3MgX1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rp
b24uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwKLSAgICAgICAgICAgICAgICAgcmF3X3Nv
Y2tldCwgdGxzX21vZHVsZSwgdGxzX3ZlcnNpb24sIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uKToK
LSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAg
ICAgICAgaWYgdGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAg
ICAgIGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVSU0lPTl9TU0wyMzoKLSAgICAgICAgICAgICAg
ICB2ZXJzaW9uID0gc3NsLlBST1RPQ09MX1NTTHYyMwotICAgICAgICAgICAgZWxpZiB0bHNfdmVy
c2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3Ns
LlBST1RPQ09MX1NTTHYzCi0gICAgICAgICAgICBlbGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVS
U0lPTl9UTFMxOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzc2wuUFJPVE9DT0xfVExTdjEK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAg
ICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgLS10bHMtdmVyc2lvbiBmbGFnOiAlcicgJSB0bHNf
dmVyc2lvbikKLQotICAgICAgICAgICAgaWYgZGlzYWJsZV90bHNfY29tcHJlc3Npb246Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJy0tZGlz
YWJsZS10bHMtY29tcHJlc3Npb24gaXMgbm90IGF2YWlsYWJsZSBmb3Igc3NsICcKLSAgICAgICAg
ICAgICAgICAgICAgJ21vZHVsZScpCi0KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBz
c2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCwgc3NsX3ZlcnNpb249dmVyc2lvbikKLQotICAgICAg
ICAgICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiB3cmFwX3Nv
Y2tldCBjYWxsLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oIkNpcGhlcjogJXMiLCBz
ZWxmLl90bHNfc29ja2V0LmNpcGhlcigpKQotICAgICAgICBlbGlmIHRsc19tb2R1bGUgPT0gX1RM
U19CWV9QWU9QRU5TU0w6Ci0gICAgICAgICAgICBpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJ
T05fU1NMMjM6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYyM19N
RVRIT0QKLSAgICAgICAgICAgIGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9OX1NTTDM6
Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYzX01FVEhPRAotICAg
ICAgICAgICAgZWxpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fVExTMToKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gT3BlblNTTC5TU0wuVExTdjFfTUVUSE9ECi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdJbnZhbGlkIC0tdGxzLXZlcnNpb24gZmxhZzogJXInICUgdGxzX3ZlcnNpb24pCi0KLSAg
ICAgICAgICAgIGNvbnRleHQgPSBPcGVuU1NMLlNTTC5Db250ZXh0KHZlcnNpb24pCi0KLSAgICAg
ICAgICAgIGlmIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uOgotICAgICAgICAgICAgICAgICMgT1Bf
Tk9fQ09NUFJFU1NJT04gaXMgbm90IGRlZmluZWQgaW4gT3BlblNTTCBtb2R1bGUuCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRfb3B0aW9ucygweDAwMDIwMDAwKQotCi0gICAgICAgICAgICBz
ZWxmLl90bHNfc29ja2V0ID0gT3BlblNTTC5TU0wuQ29ubmVjdGlvbihjb250ZXh0LCByYXdfc29j
a2V0KQotICAgICAgICAgICAgIyBDbGllbnQgbW9kZS4KLSAgICAgICAgICAgIHNlbGYuX3Rsc19z
b2NrZXQuc2V0X2Nvbm5lY3Rfc3RhdGUoKQotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldC5z
ZXRibG9ja2luZyhUcnVlKQotCi0gICAgICAgICAgICAjIERvIGhhbmRzaGFrZSBub3cgKG5vdCBu
ZWNlc3NhcnkpLgotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldC5kb19oYW5kc2hha2UoKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm8gVExTIHN1cHBv
cnQgbW9kdWxlIGlzIGF2YWlsYWJsZScpCi0KLSAgICBkZWYgc2VuZChzZWxmLCBkYXRhKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQud3JpdGUoZGF0YSkKLQotICAgIGRlZiBzZW5k
YWxsKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5zZW5kYWxs
KGRhdGEpCi0KLSAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3Rsc19zb2NrZXQucmVhZChzaXplKQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgZ2V0cGVlcm5hbWUo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LmdldHBlZXJuYW1lKCkKLQot
Ci1jbGFzcyBDbGllbnRIYW5kc2hha2VCYXNlKG9iamVjdCk6Ci0gICAgIiIiQSBiYXNlIGNsYXNz
IGZvciBXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29ycyBmb3IgZWFjaAotICAg
IHByb3RvY29sIHZlcnNpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0g
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAg
ZGVmIF9yZWFkX2ZpZWxkcyhzZWxmKToKLSAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBi
ZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgICAgICBm
aWVsZHMgPSB7fQotICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCi0gICAgICAgICAgICAj
IDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cwotICAg
ICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgICAgICB2YWx1ZSA9ICcnCi0gICAgICAgICAgICAj
IDQuMSAzNC4gcmVhZCAvbmFtZS8KLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9yZWFkX25hbWUo
KQotICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKLSAgICAgICAgICAgICMgVE9ETyh0eW9z
aGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAg
ICAgICAgICAgY2ggPSBzZWxmLl9za2lwX3NwYWNlcygpCi0gICAgICAgICAgICAjIDQuMSAzNi4g
cmVhZCAvdmFsdWUvCi0gICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX3JlYWRfdmFsdWUoY2gpCi0g
ICAgICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAg
ICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGlm
IGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICdoZWFkZXIg
JXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCi0gICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5k
IGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAg
ICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAv
bmFtZS8gYnl0ZQotICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhl
IHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKLSAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50
ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAg
ICAgICAjIHN0cmVhbS4KLSAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5h
cHBlbmQodmFsdWUpCi0gICAgICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQi
IHN0ZXAgYWJvdmUKLSAgICAgICAgcmV0dXJuIGZpZWxkcwotCi0gICAgZGVmIF9yZWFkX25hbWUo
c2VsZik6Ci0gICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlz
Ci0gICAgICAgIG5hbWUgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyA0
LjEgMzQuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAgICAgICAgY2ggPSBfcmVj
ZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAg
IyAweDBECi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsaWYgY2gg
PT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVh
ZGVyIG5hbWUgJXInICUgbmFtZSkKLSAgICAgICAgICAgIGVsaWYgY2ggPT0gJzonOiAgIyAweDNB
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKLSAgICAgICAgICAgIGVsaWYgY2ggPj0gJ0En
IGFuZCBjaCA8PSAnWic6ICAjIFJhbmdlIDB4MzEgdG8gMHg1QQotICAgICAgICAgICAgICAgIGNo
ID0gY2hyKG9yZChjaCkgKyAweDIwKQotICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSArPSBjaAotCi0gICAgZGVmIF9za2lw
X3NwYWNlcyhzZWxmKToKLSAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNl
cnZlcgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRl
cyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBjaCA9PSAnICc6ICAjIDB4MjAKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmV0dXJuIGNoCi0KLSAgICBkZWYg
X3JlYWRfdmFsdWUoc2VsZiwgY2gpOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUg
ZW1wdHkgYnl0ZSBhcnJheXMKLSAgICAgICAgdmFsdWUgPSAnJwotICAgICAgICAjIDQuMSAzNi4g
cmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIuCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAg
ICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0g
ICAgICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
TEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicgJSB2YWx1ZSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgdmFsdWUgKz0gY2gKLSAgICAgICAgICAgIGNoID0gX3JlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotCi0KLWRlZiBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0
ZV9mcmFtZXIoZXh0ZW5zaW9uX3Jlc3BvbnNlKToKLSAgICAiIiJWYWxpZGF0ZSB0aGUgcmVzcG9u
c2UgYW5kIHJldHVybiBhIGZyYW1lciBvYmplY3QgdXNpbmcgdGhlIHBhcmFtZXRlcnMgaW4KLSAg
ICB0aGUgcmVzcG9uc2UuIFRoaXMgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHRoZSBzZXJ2ZXJfLiog
cGFyYW1ldGVycy4KLSAgICAiIiIKLQotICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25l
Ci0gICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBOb25lCi0KLSAgICBjbGllbnRfbWF4
X3dpbmRvd19iaXRzX25hbWUgPSAoCi0gICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICAgICAgX0NMSUVOVF9NQVhfV0lORE9XX0JJ
VFNfUEFSQU0pCi0gICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSA9ICgKLSAgICAg
ICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAg
ICAgICAgICBfQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCi0KLSAgICAjIFdlIGRp
ZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgotICAgICMgSGFuZGxlIHRob3NlIHBh
cmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCi0KLSAgICBmb3Ig
cGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9wYXJhbWV0
ZXJzKCk6Ci0gICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3dfYml0c19u
YW1lOgotICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBmb3VuZCcgJSBjbGllbnRfbWF4X3dpbmRvd19iaXRz
X25hbWUpCi0KLSAgICAgICAgICAgIHBhcnNlZF92YWx1ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhw
YXJhbV92YWx1ZSkKLSAgICAgICAgICAgIGlmIHBhcnNlZF92YWx1ZSBpcyBOb25lOgotICAgICAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICAg
ICAgICAgJ0JhZCAlczogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChjbGllbnRfbWF4
X3dpbmRvd19iaXRzX25hbWUsIHBhcmFtX3ZhbHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9tYXhf
d2luZG93X2JpdHMgPSBwYXJzZWRfdmFsdWUKLSAgICAgICAgZWxpZiBwYXJhbV9uYW1lID09IGNs
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWU6Ci0gICAgICAgICAgICBpZiBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3ZlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGll
bnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBm
b3VuZCcgJSBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lKQotCi0gICAgICAgICAgICBp
ZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRI
YW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6IEhhcyB2YWx1
ZSAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyX25hbWUsIHBhcmFtX3ZhbHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyID0gVHJ1ZQotCi0gICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgTm9u
ZToKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotCi0gICAgcmV0
dXJuIF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcihjbGllbnRfbWF4X3dpbmRvd19iaXRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLQotY2xhc3MgQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yKENsaWVudEhhbmRzaGFrZUJh
c2UpOgotICAgICIiIldlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yCi0g
ICAgZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlci4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgotICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKLQotICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
LQotICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcg
aGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgotCi0gICAgICAgIFJhaXNlczoKLSAg
ICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAg
ICAiIiIKLQotICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mg
b3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2xpbmUpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVl
c3RfbGluZSkKLQotICAgICAgICBmaWVsZHMgPSBbXQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9m
b3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0
LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMudXNlX3RscykpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVB
REVSKQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5vcmlnaW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnByb3RvY29sX3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4Ogot
ICAgICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoCi0gICAgICAgICAg
ICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgZmllbGRzLmFwcGVuZChfb3JpZ2luX2hlYWRlcihjb21tb24uT1JJR0lOX0hF
QURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMub3JpZ2luKSkKLQotICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2
KQotICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJyVzOiAlciAoJXMpJywKLSAg
ICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCi0gICAgICAgICAgICBz
ZWxmLl9rZXksCi0gICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQotICAgICAg
ICBmaWVsZHMuYXBwZW5kKAotICAgICAgICAgICAgJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNf
V0VCU09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleSkpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy52ZXJzaW9uX2hlYWRlciA+IDA6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczog
JWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudmVyc2lvbl9o
ZWFkZXIpKQotICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMucHJvdG9jb2xfdmVyc2lvbiA9PSBf
UFJPVE9DT0xfVkVSU0lPTl9IWUJJMDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczog
JWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQkkwOCkp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAl
IChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLQot
ICAgICAgICBleHRlbnNpb25zX3RvX3JlcXVlc3QgPSBbXQotCi0gICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04pKQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNl
X3Blcm1lc3NhZ2VfZGVmbGF0ZToKLSAgICAgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OKQotICAgICAgICAgICAgIyBBY2NlcHQgdGhlIGNsaWVudF9tYXhfd2lu
ZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZhdWx0LgotICAgICAgICAgICAgZXh0
ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9DTElF
TlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAgICBOb25lKQotICAg
ICAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAg
ICAgaWYgbGVuKGV4dGVuc2lvbnNfdG9fcmVxdWVzdCkgIT0gMDoKLSAgICAgICAgICAgIGZpZWxk
cy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgJyVzOiAlc1xyXG4nICUKLSAgICAgICAgICAgICAg
ICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAg
ICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhleHRlbnNpb25zX3RvX3JlcXVlc3QpKSkKLQot
ICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwoZmllbGQpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQotCi0g
ICAgICAgIHN0YXR1c19saW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAg
IGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgc3RhdHVz
X2xpbmUgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAg
YnJlYWsKLQotICAgICAgICBtID0gcmUubWF0Y2goJ0hUVFAvXFxkK1xcLlxcZCsgKFxcZFxcZFxc
ZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCi0gICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAg
ICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdXcm9uZyBz
dGF0dXMgbGluZSBmb3JtYXQ6ICVyJyAlIHN0YXR1c19saW5lKQotICAgICAgICBzdGF0dXNfY29k
ZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgaWYgc3RhdHVzX2NvZGUgIT0gJzEwMSc6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1VuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgJXMgd2l0aCBm
b2xsb3dpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJzOiAlcics
IHN0YXR1c19jb2RlLCBzZWxmLl9yZWFkX2ZpZWxkcygpKQotICAgICAgICAgICAgcmFpc2UgQ2xp
ZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3RhdHVz
IGNvZGUgMTAxIGJ1dCBmb3VuZCAlcicgJSBzdGF0dXNfY29kZSkKLQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlY2VpdmVkIHZhbGlkIFN0YXR1cy1MaW5lJykKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIGhlYWRlcnMgdW50aWwgd2Ugc2VlIGFuIGVtcHR5
IGxpbmUnKQotCi0gICAgICAgIGZpZWxkcyA9IHNlbGYuX3JlYWRfZmllbGRzKCkKLQotICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggIT0g
J1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZh
bHVlICVyIGZvciBoZWFkZXIgJwotICAgICAgICAgICAgICAgICduYW1lICVyJyAlIChjaCwgdmFs
dWUsIG5hbWUpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgYW4gZW1w
dHkgbGluZScpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VydmVyXCdzIG9wZW5pbmcg
aGFuZHNoYWtlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAgIF92YWxpZGF0ZV9tYW5k
YXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLAotICAgICAgICAgICAgY29tbW9uLlVQ
R1JBREVfSEVBREVSLAotICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUs
Ci0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cigKLSAgICAgICAgICAgIGZpZWxkcywKLSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hF
QURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSwKLSAgICAg
ICAgICAgIEZhbHNlKQotCi0gICAgICAgIGFjY2VwdCA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcigK
LSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUikK
LQotICAgICAgICAjIFZhbGlkYXRlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJpbmFyeV9h
Y2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJv
cjoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCi0gICAgICAgICAgICAgICAgKGNvbW1v
bi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCkpCi0KLSAgICAgICAgaWYgbGVu
KGJpbmFyeV9hY2NlcHQpICE9IDIwOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtl
RXJyb3IoCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFsdWUgb2YgJXMgaXMgbm90IDIwLWJ5
dGUgbG9uZycgJQotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9I
RUFERVIpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1Jlc3Bv
bnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywKLSAgICAgICAgICAgIGFjY2VwdCwgdXRpbC5o
ZXhpZnkoYmluYXJ5X2FjY2VwdCkpCi0KLSAgICAgICAgYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCA9
IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICAgICAgc2VsZi5fa2V5ICsgY29tbW9uLldFQlNPQ0tF
VF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0
LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCByZXNwb25zZSBmb3IgY2hhbGxlbmdlOiAl
ciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkX2FjY2VwdCwgdXRpbC5oZXhpZnkoYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgaWYgYWNjZXB0ICE9IGV4cGVjdGVkX2FjY2Vw
dDoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAg
ICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVkOiAlcyknICUKLSAgICAgICAgICAg
ICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0LCBleHBlY3Rl
ZF9hY2NlcHQpKQotCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQgPSBGYWxzZQotICAg
ICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBGYWxzZQotCi0gICAgICAgIGV4dGVu
c2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX0VYVEVOU0lPTlNfSEVBREVSLmxvd2VyKCkpCi0gICAgICAgIGFjY2VwdGVkX2V4dGVuc2lv
bnMgPSBbXQotICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZSBhbmQgbGVu
KGV4dGVuc2lvbnNfaGVhZGVyKSAhPSAwOgotICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9u
cyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKGV4dGVuc2lvbnNfaGVhZGVyWzBdKQotCi0gICAg
ICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgdGhlIG5ldyBzdHlsZSBwZXJmcmFtZSBjb21wcmVz
c2lvbiBleHRlbnNpb24uCi0gICAgICAgIGZvciBleHRlbnNpb24gaW4gYWNjZXB0ZWRfZXh0ZW5z
aW9uczoKLSAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lID0gZXh0ZW5zaW9uLm5hbWUoKQotICAg
ICAgICAgICAgaWYgKGV4dGVuc2lvbl9uYW1lID09IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTiBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRlZmxhdGVfZnJhbWUpOgot
ICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lv
bikKLSAgICAgICAgICAgICAgICB1bnVzZWRfZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29y
LmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
ZGVmbGF0ZV9mcmFtZSA9IHByb2Nlc3NvcgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBlbGlmIChleHRlbnNpb25fbmFtZSA9PSBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRF
X0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Blcm1l
c3NhZ2VfZGVmbGF0ZSk6Ci0gICAgICAgICAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlX2FjY2Vw
dGVkID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgZnJhbWVyID0gX2dldF9wZXJtZXNzYWdlX2Rl
ZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICBmcmFtZXIuc2V0X2NvbXBy
ZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAnVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUgZXh0ZW5zaW9uX25hbWUpCi0KLSAgICAg
ICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBhbmQgbm90IGRlZmxhdGVfZnJhbWVf
YWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAg
ICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2ZXIgcmVqZWN0ZWQgaXQnICUK
LSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLSAgICAg
ICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSBhbmQKLSAgICAgICAg
ICAgIG5vdCBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2Ug
Q2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgJXMs
IGJ1dCB0aGUgc2VydmVyIHJlamVjdGVkIGl0JyAlCi0gICAgICAgICAgICAgICAgICAgIGNvbW1v
bi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotCi0gICAgICAgICMgVE9ETyh0eW9zaGlu
byk6IEhhbmRsZSBTZWMtV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgICMgVE9ETyh0eW9zaGlu
byk6IEhhbmRsZSBDb29raWUsIGV0Yy4KLQotCi1jbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNz
b3JIeWJpMDAoQ2xpZW50SGFuZHNoYWtlQmFzZSk6Ci0gICAgIiIiV2ViU29ja2V0IG9wZW5pbmcg
aGFuZHNoYWtlIHByb2Nlc3NvciBmb3IKLSAgICBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0
cHJvdG9jb2wtMDAgKGVxdWl2YWxlbnQgdG8KLSAgICBkcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRw
cm90b2NvbC03NikuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBv
cHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwLCBz
ZWxmKS5fX2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0
ZV9mcmFtZSBvcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZs
YXRlKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0h5QmkgMDAgZG9lc25cJ3Qgc3Vw
cG9ydCBleHRlbnNpb25zLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZGVmIGhh
bmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybXMgb3BlbmluZyBoYW5kc2hha2Ugb24g
dGhlIHNwZWNpZmllZCBzb2NrZXQuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQ2xp
ZW50SGFuZHNoYWtlRXJyb3I6IGhhbmRzaGFrZSBmYWlsZWQuCi0gICAgICAgICIiIgotCi0gICAg
ICAgICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAgICBzZWxmLl9zb2NrZXQuc2Vu
ZGFsbChfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkpCi0gICAgICAg
ICMgNC4xIDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0IG9mIHN0cmluZ3MuCi0gICAg
ICAgIGZpZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0aGUgc3RyaW5nICJVcGdyYWRl
OiBXZWJTb2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURF
X0hFQURFUl9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQgdGhlIHN0cmluZyAiQ29ubmVj
dGlvbjogVXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5F
Q1RJT05fSEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQgSG9zdDogZmllbGQgdG8gL2Zp
ZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLSAg
ICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5vcmlnaW46Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5k
c2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnU3BlY2lmeSB0aGUgb3JpZ2luIG9mIHRoZSBj
b25uZWN0aW9uIGJ5IC0tb3JpZ2luIGZsYWcnKQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmln
aW5faGVhZGVyKGNvbW1vbi5PUklHSU5fSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgIyBUT0RPOiA0LjEg
MTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAg
ICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8gL2ZpZWxkcy8uCi0KLSAgICAg
ICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxuPiB0byAvZmllbGRzLy4KLSAg
ICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRf
a2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIxOiAlZCcsIHNlbGYuX251
bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNf
V0VCU09DS0VUX0tFWTFfSEVBREVSLCBrZXkxKSkKLSAgICAgICAgc2VsZi5fbnVtYmVyMiwga2V5
MiA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdOdW1iZXIyOiAlZCcsIHNlbGYuX251bWJlcjIpCi0gICAgICAgIGZpZWxkcy5h
cHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWTJfSEVBREVSLCBr
ZXkyKSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogMFxyXG4nICUgY29tbW9uLlNFQ19X
RUJTT0NLRVRfRFJBRlRfSEVBREVSKQotCi0gICAgICAgICMgNC4xIDI0LiBGb3IgZWFjaCBzdHJp
bmcgaW4gL2ZpZWxkcy8sIGluIGEgcmFuZG9tIG9yZGVyOiBzZW5kIHRoZQotICAgICAgICAjIHN0
cmluZywgZW5jb2RlZCBhcyBVVEYtOCwgZm9sbG93ZWQgYnkgYSBVVEYtOCBlbmNvZGVkIFUrMDAw
RCBDQVJSSUFHRQotICAgICAgICAjIFJFVFVSTiBVKzAwMEEgTElORSBGRUVEIGNoYXJhY3RlciBw
YWlyIChDUkxGKS4KLSAgICAgICAgcmFuZG9tLnNodWZmbGUoZmllbGRzKQotICAgICAgICBmb3Ig
ZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQp
Ci0gICAgICAgICMgNC4xIDI1LiBzZW5kIGEgVVRGLTgtZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0Ug
UkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQKLSAgICAgICAgIyBjaGFyYWN0ZXIgcGFpciAoQ1JMRiku
Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLSAgICAgICAgIyA0LjEgMjYu
IGxldCAva2V5My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiBlaWdodCByYW5kb20gYnl0ZXMg
KG9yCi0gICAgICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRvbSA2NCBiaXQgaW50ZWdlciBlbmNv
ZGVkIGluIGEgYmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAgIHNlbGYuX2tleTMgPSBzZWxmLl9n
ZW5lcmF0ZV9rZXkzKCkKLSAgICAgICAgIyA0LjEgMjcuIHNlbmQgL2tleTMvIHRvIHRoZSBzZXJ2
ZXIuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2tleTMpCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdLZXkzOiAlciAoJXMpJywgc2VsZi5fa2V5
MywgdXRpbC5oZXhpZnkoc2VsZi5fa2V5MykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J1NlbnQgaGFuZHNoYWtlJykKLQotICAgICAgICAjIDQuMSAyOC4gUmVhZCBieXRlcyBmcm9tIHRo
ZSBzZXJ2ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICMgY2xvc2VzLCBv
ciBhIDB4MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0aGVzZSBieXRlcywgaW5jbHVk
aW5nCi0gICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAgIGZpZWxkID0gJycKLSAgICAg
ICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29j
a2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09ICdc
bic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBpZiAvZmllbGQvIGlzIG5vdCBh
dCBsZWFzdCBzZXZlbiBieXRlcyBsb25nLCBvciBpZiB0aGUgbGFzdAotICAgICAgICAjIHR3byBi
eXRlcyBhcmVuJ3QgMHgwRCBhbmQgMHgwQSByZXNwZWN0aXZlbHksIG9yIGlmIGl0IGRvZXMgbm90
Ci0gICAgICAgICMgY29udGFpbiBhdCBsZWFzdCB0d28gMHgyMCBieXRlcywgdGhlbiBmYWlsIHRo
ZSBXZWJTb2NrZXQgY29ubmVjdGlvbgotICAgICAgICAjIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4K
LSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVuZHN3aXRoKCdcclxuJyk6
Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignV3Jvbmcgc3RhdHVzIGxp
bmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2goJ1teIF0qIChbXiBdKikgLion
LCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50
SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ05vIEhUVFAgc3RhdHVzIGNvZGUgZm91
bmQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICAjIDQuMSAyOS4gbGV0IC9j
b2RlLyBiZSB0aGUgc3Vic3RyaW5nIG9mIC9maWVsZC8gdGhhdCBzdGFydHMgZnJvbSB0aGUKLSAg
ICAgICAgIyBieXRlIGFmdGVyIHRoZSBmaXJzdCAweDIwIGJ5dGUsIGFuZCBlbmRzIHdpdGggdGhl
IGJ5dGUgYmVmb3JlIHRoZQotICAgICAgICAjIHNlY29uZCAweDIwIGJ5dGUuCi0gICAgICAgIGNv
ZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICMgNC4xIDMwLiBpZiAvY29kZS8gaXMgbm90IHRocmVl
IGJ5dGVzIGxvbmcsIG9yIGlmIGFueSBvZiB0aGUgYnl0ZXMgaW4KLSAgICAgICAgIyAvY29kZS8g
YXJlIG5vdCBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDkwLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tl
dAotICAgICAgICAjIGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBp
ZiBub3QgcmUubWF0Y2goJ1swLTldWzAtOV1bMC05XScsIGNvZGUpOgotICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVzIGNv
ZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAgICAg
ICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgICMgNC4xIDMxLiBpZiAvY29kZS8sIGludGVy
cHJldGVkIGFzIFVURi04LCBpcyAiMTAxIiwgdGhlbiBtb3ZlIHRvIHRoZQotICAgICAgICAjIG5l
eHQgc3RlcC4KLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoKLSAgICAgICAgICAgIHJhaXNlIENs
aWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1
cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcKLSAgICAgICAgICAgICAg
ICAnJXInICUgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0LjEgMzItMzkuIHJlYWQgZmllbGRz
IGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gc2VsZi5fcmVhZF9maWVsZHMoKQotICAg
ICAgICAjIDQuMSA0MC4gX0ZpZWxkcyBwcm9jZXNzaW5nXwotICAgICAgICAjIHJlYWQgYSBieXRl
IGZyb20gc2VydmVyCi0gICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBDbGll
bnRIYW5kc2hha2VFcnJvcignRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyJyAlIGNoKQotICAgICAg
ICAjIDQuMSA0MS4gY2hlY2sgL2ZpZWxkcy8KLSAgICAgICAgIyBUT0RPKHVrYWkpOiBwcm90b2Nv
bAotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMgInVwZ3JhZGUiCi0gICAgICAgICMg
IGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhhY3RseSBlcXVhbCB0byB0aGUgc3RyaW5nICJXZWJTb2Nr
ZXQiLAotICAgICAgICAjICB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoCi0g
ICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsCi0g
ICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJRTc1LAotICAgICAg
ICAgICAgVHJ1ZSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBuYW1lIGlzICJjb25uZWN0aW9u
IgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2Us
IGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRvIHRoZSBzdHJpbmcgInVwZ3JhZGUi
LCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZAotICAgICAgICAjICBhYm9y
dCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoCi0gICAg
ICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIsCi0g
ICAgICAgICAgICBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUsCi0gICAgICAgICAgICBG
YWxzZSkKLQotICAgICAgICBvcmlnaW4gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAg
ICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIpCi0KLSAgICAg
ICAgbG9jYXRpb24gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMs
IGNvbW1vbi5TRUNfV0VCU09DS0VUX0xPQ0FUSU9OX0hFQURFUikKLQotICAgICAgICAjIFRPRE8o
dWthaSk6IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwgLi4KLQotICAgICAgICAjIDQu
MSA0Mi4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIC9udW1iZXJfMS8s
Ci0gICAgICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgL251
bWJlcl8yLywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdl
ciwgYW5kIHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRoZQotICAgICAgICAjIG9yZGVy
IHRoZXkgd2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBjaGFsbGVuZ2UgPSBzdHJ1Y3Qu
cGFjaygnIUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBh
Y2soJyFJJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxlbmdlICs9IHNlbGYuX2tleTMK
LQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxlbmdlOiAl
ciAoJXMpJywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVuZ2UpKQotCi0gICAgICAgICMg
NC4xIDQzLiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdlcnByaW50IG9mIC9jaGFsbGVu
Z2UvIGFzIGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQgc3RyaW5nLgotICAgICAgICBl
eHBlY3RlZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQgY2hhbGxlbmdlIHJlc3BvbnNl
OiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGlsLmhleGlmeShleHBlY3RlZCkp
Ci0KLSAgICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIu
Ci0gICAgICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMuCi0gICAgICAgIHJlcGx5ID0g
X3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxNikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAotICAgICAgICAgICAgJ0FjdHVhbCBjaGFsbGVuZ2UgcmVzcG9uc2U6ICVyICglcyknLCBy
ZXBseSwgdXRpbC5oZXhpZnkocmVwbHkpKQotCi0gICAgICAgICMgNC4xIDQ1LiBpZiAvcmVwbHkv
IGRvZXMgbm90IGV4YWN0bHkgZXF1YWwgL2V4cGVjdGVkLywgdGhlbiBmYWlsCi0gICAgICAgICMg
dGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAg
aWYgZXhwZWN0ZWQgIT0gcmVwbHk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcigKLSAgICAgICAgICAgICAgICAnQmFkIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKGV4cGVj
dGVkKSAhPSAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZCwgcmVwbHkp
KQotICAgICAgICAjIDQuMSA0Ni4gVGhlICpXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxp
c2hlZCouCi0KLSAgICBkZWYgX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KHNlbGYpOgotICAg
ICAgICAjIDQuMSAxNi4gbGV0IC9zcGFjZXNfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDEg
dG8gMTIgaW5jbHVzaXZlLgotICAgICAgICBzcGFjZXMgPSByYW5kb20ucmFuZGludCgxLCAxMikK
LSAgICAgICAgIyA0LjEgMTcuIGxldCAvbWF4X24vIGJlIHRoZSBsYXJnZXN0IGludGVnZXIgbm90
IGdyZWF0ZXIgdGhhbgotICAgICAgICAjICA0LDI5NCw5NjcsMjk1IGRpdmlkZWQgYnkgL3NwYWNl
c19uLy4KLSAgICAgICAgbWF4bnVtID0gNDI5NDk2NzI5NSAvIHNwYWNlcwotICAgICAgICAjIDQu
MSAxOC4gbGV0IC9udW1iZXJfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gL21heF9u
LwotICAgICAgICAjIGluY2x1c2l2ZS4KLSAgICAgICAgbnVtYmVyID0gcmFuZG9tLnJhbmRpbnQo
MCwgbWF4bnVtKQotICAgICAgICAjIDQuMSAxOS4gbGV0IC9wcm9kdWN0X24vIGJlIHRoZSByZXN1
bHQgb2YgbXVsdGlwbHlpbmcgL251bWJlcl9uLyBhbmQKLSAgICAgICAgIyAvc3BhY2VzX24vIHRv
Z2V0aGVyLgotICAgICAgICBwcm9kdWN0ID0gbnVtYmVyICogc3BhY2VzCi0gICAgICAgICMgNC4x
IDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIC9wcm9kdWN0X24vLCBl
eHByZXNzZWQKLSAgICAgICAgIyBpbiBiYXNlIHRlbiB1c2luZyB0aGUgbnVtZXJhbHMgaW4gdGhl
IHJhbmdlIFUrMDAzMCBESUdJVCBaRVJPICgwKSB0bwotICAgICAgICAjIFUrMDAzOSBESUdJVCBO
SU5FICg5KS4KLSAgICAgICAga2V5ID0gc3RyKHByb2R1Y3QpCi0gICAgICAgICMgNC4xIDIxLiBp
bnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3ZWx2ZSByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZQot
ICAgICAgICAjIHJhbmdlIFUrMDAyMSB0byBVKzAwMkYgYW5kIFUrMDAzQSB0byBVKzAwN0UgaW50
byAva2V5X24vIGF0IHJhbmRvbQotICAgICAgICAjIHBvc2l0aW9ucy4KLSAgICAgICAgYXZhaWxh
YmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwgMHgyZiArIDEpICsgcmFuZ2UoMHgzYSwgMHg3ZSArIDEp
Ci0gICAgICAgIG4gPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAgICAgICAgZm9yIF8gaW4geHJh
bmdlKG4pOgotICAgICAgICAgICAgY2ggPSByYW5kb20uY2hvaWNlKGF2YWlsYWJsZV9jaGFycykK
LSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDAsIGxlbihrZXkpKQotICAgICAgICAg
ICAga2V5ID0ga2V5WzA6cG9zXSArIGNocihjaCkgKyBrZXlbcG9zOl0KLSAgICAgICAgIyA0LjEg
MjIuIGluc2VydCAvc3BhY2VzX24vIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXJzIGludG8gL2tleV9u
LyBhdAotICAgICAgICAjIHJhbmRvbSBwb3NpdGlvbnMgb3RoZXIgdGhhbiBzdGFydCBvciBlbmQg
b2YgdGhlIHN0cmluZy4KLSAgICAgICAgZm9yIF8gaW4geHJhbmdlKHNwYWNlcyk6Ci0gICAgICAg
ICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5KSAtIDEpCi0gICAgICAgICAgICBr
ZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCi0gICAgICAgIHJldHVybiBudW1iZXIs
IGtleQotCi0gICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYpOgotICAgICAgICAjIDQuMSAyNi4g
bGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAo
b3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29k
ZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocihy
YW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFuZ2UoOCldKQotCi0KLWNsYXNzIENs
aWVudENvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJBIHdyYXBwZXIgZm9yIHNvY2tldCBvYmpl
Y3QgdG8gcHJvdmlkZSB0aGUgbXBfY29ubiBpbnRlcmZhY2UuCi0gICAgbW9kX3B5d2Vic29ja2V0
IGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gYmUgd29ya2luZyBvbiBBcGFjaGUgbW9kX3B5dGhvbidz
Ci0gICAgbXBfY29ubiBvYmplY3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
c29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICBkZWYgd3JpdGUo
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGRhdGEpCi0KLSAgICBk
ZWYgcmVhZChzZWxmLCBuKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2tldC5yZWN2KG4pCi0K
LSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc29j
a2V0LmdldHBlZXJuYW1lKCkKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVf
YWRkcikKLQotCi1jbGFzcyBDbGllbnRSZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVy
IGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBhYmxlIHRvIHBhc3MgYSBzb2NrZXQgb2JqZWN0IHRvCi0g
ICAgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbXBfcmVxdWVzdCBvYmplY3QuCi0gICAgIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0g
dXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IENsaWVudENvbm5lY3Rpb24oc29ja2V0KQot
Ci0KLWRlZiBfaW1wb3J0X3NzbCgpOgotICAgIGdsb2JhbCBzc2wKLSAgICB0cnk6Ci0gICAgICAg
IGltcG9ydCBzc2wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfaW1wb3J0X3B5b3BlbnNzbCgpOgotICAg
IGdsb2JhbCBPcGVuU1NMCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgT3BlblNTTC5TU0wKLSAg
ICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVy
biBGYWxzZQotCi0KLWNsYXNzIEVjaG9DbGllbnQob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQg
ZWNobyBjbGllbnQuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAg
ICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUK
LQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQot
ICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIlJ1biB0aGUgY2xpZW50LgotCi0gICAgICAg
IFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3NhZ2UgYW5kIHJlY2Vpdmlu
ZyBpdHMgZWNoby4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0
LnNvY2tldCgpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0KHNlbGYuX29wdGlvbnMu
c29ja2V0X3RpbWVvdXQpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5j
b25uZWN0KChzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpKQotICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCA9IF9U
TFNTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy50bHNfbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnRsc192ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLmRpc2FibGVfdGxzX2NvbXByZXNzaW9uKQotCi0gICAgICAgICAgICB2ZXJzaW9uID0gc2Vs
Zi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uCi0KLSAgICAgICAgICAgIGlmICh2ZXJzaW9uID09
IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCBvcgotICAgICAgICAgICAgICAgIHZlcnNpb24gPT0g
X1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzKToKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hh
a2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3NvY2tldCwgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIGVsaWYgdmVyc2lvbiA9PSBfUFJP
VE9DT0xfVkVSU0lPTl9IWUJJMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlID0g
Q2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwKAotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9zb2NrZXQsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tcHJv
dG9jb2wtdmVyc2lvbiBmbGFnOiAlcicgJSB2ZXJzaW9uKQotCi0gICAgICAgICAgICBzZWxmLl9o
YW5kc2hha2UuaGFuZHNoYWtlKCkKLQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nv
bm5lY3Rpb24gZXN0YWJsaXNoZWQnKQotCi0gICAgICAgICAgICByZXF1ZXN0ID0gQ2xpZW50UmVx
dWVzdChzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgICAgIHZlcnNpb25fbWFwID0gewotICAgICAg
ICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwODogY29tbW9uLlZFUlNJT05fSFlCSTA4
LAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkxMzogY29tbW9uLlZFUlNJ
T05fSFlCSTEzLAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMDogY29t
bW9uLlZFUlNJT05fSFlCSTAwfQotICAgICAgICAgICAgcmVxdWVzdC53c192ZXJzaW9uID0gdmVy
c2lvbl9tYXBbdmVyc2lvbl0KLQotICAgICAgICAgICAgaWYgKHZlcnNpb24gPT0gX1BST1RPQ09M
X1ZFUlNJT05fSFlCSTA4IG9yCi0gICAgICAgICAgICAgICAgdmVyc2lvbiA9PSBfUFJPVE9DT0xf
VkVSU0lPTl9IWUJJMTMpOgotICAgICAgICAgICAgICAgIHN0cmVhbV9vcHRpb24gPSBTdHJlYW1P
cHRpb25zKCkKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLm1hc2tfc2VuZCA9IFRydWUK
LSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLnVubWFza19yZWNlaXZlID0gRmFsc2UKLQot
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBpcyBub3QgRmFs
c2U6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX29wdGlvbnMuZGVmbGF0
ZV9mcmFtZQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlv
bnMoc3RyZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNl
X3Blcm1lc3NhZ2VfZGVmbGF0ZSBpcyBub3QgRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZy
YW1lciA9IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZQotICAgICAgICAgICAg
ICAgICAgICBmcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbikKLQotICAg
ICAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9u
KQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBTdHJlYW1IaXhpZTc1KHJlcXVlc3QsIFRy
dWUpCi0KLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29wdGlvbnMubWVzc2FnZS5zcGxp
dCgnLCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSkK
LSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHByaW50KCdTZW5kOiAlcycgJSBsaW5lKQotICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdl
KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcmludCgnUmVjdjogJXMnICUgcmVjZWl2ZWQpCi0gICAgICAg
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnRXJy
b3I6ICVzJyAlIGUpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgICAgIHNl
bGYuX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKHNl
bGYpOgotICAgICAgICAiIiJQZXJmb3JtIGNsb3NpbmcgaGFuZHNoYWtlIHVzaW5nIHRoZSBzcGVj
aWZpZWQgY2xvc2luZyBmcmFtZS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm1lc3Nh
Z2Uuc3BsaXQoJywnKVstMV0gPT0gX0dPT0RCWUVfTUVTU0FHRToKLSAgICAgICAgICAgICMgcmVx
dWVzdGVkIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UsIHNvCi0gICAgICAgICAg
ICAjIGV4cGVjdGluZyBjbG9zaW5nIGhhbmRzaGFrZSBtZXNzYWdlIGZyb20gc2VydmVyLgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1dhaXQgZm9yIHNlcnZlci1pbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3N0cmVhbS5yZWNl
aXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAg
ICAgICAgIHByaW50KCdSZWN2IGNsb3NlJykKLSAgICAgICAgICAgICAgICBwcmludCgnU2VuZCBh
Y2snKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAotICAgICAgICAgICAgICAg
ICAgICAnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQgYWNrJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2UnKQotICAgICAgICBzZWxm
Ll9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdT
ZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgcHJpbnQoJ1JlY3YgYWNrJykKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCi0KLQotZGVmIG1haW4oKToKLSAg
ICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcigndXRmLTgnKShzeXMuc3Rkb3V0KQotCi0g
ICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKLSAgICAjIFdlIGFjY2VwdCAtLWNvbW1hbmRfbGlu
ZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBzYW1lIGFzIEdvb2dsZQotICAgICMgZ2Zs
YWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1hbmQtbGluZS1mbGFnIHN0eWxlIGZsYWdz
LgotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNlcnZlci1ob3N0JywgJy0tc2VydmVy
X2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9ob3N0JywgdHlwZT0n
c3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLCBoZWxw
PSdzZXJ2ZXIgaG9zdCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tc2VydmVyLXBv
cnQnLCAnLS1zZXJ2ZXJfcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVy
X3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X1VOREVG
SU5FRF9QT1JULCBoZWxwPSdzZXJ2ZXIgcG9ydCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1v
JywgJy0tb3JpZ2luJywgZGVzdD0nb3JpZ2luJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J29yaWdpbicpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1yJywgJy0tcmVzb3VyY2UnLCBkZXN0PSdyZXNvdXJjZScsIHR5cGU9J3N0cmluZycs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nL2VjaG8nLCBoZWxwPSdyZXNvdXJjZSBw
YXRoJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS1tZXNzYWdlJywgZGVzdD0nbWVz
c2FnZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ2NvbW1h
LXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4nICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3ZlcmJvc2UnLCBhY3Rpb249J3N0b3Jl
X2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhlbHA9J3N1cHBy
ZXNzIG1lc3NhZ2VzJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10bHMnLCBkZXN0
PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pLiBCeSBkZWZhdWx0LCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgJ2l0IGxvb2tzIGZvciBzc2wgYW5kIHB5T3BlblNTTCBtb2R1bGUg
YW5kIHVzZXMgZm91bmQgJwotICAgICAgICAgICAgICAgICAgICAgICdvbmUuIFVzZSAtLXRscy1t
b2R1bGUgb3B0aW9uIHRvIHNwZWNpZnkgd2hpY2ggbW9kdWxlICcKLSAgICAgICAgICAgICAgICAg
ICAgICAndG8gdXNlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9kdWxlJywgJy0t
dGxzX21vZHVsZScsIGRlc3Q9J3Rsc19tb2R1bGUnLAotICAgICAgICAgICAgICAgICAgICAgIHR5
cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bX1RMU19CWV9TVEFO
REFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZC4gJwotICAgICAgICAgICAg
ICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZCcgJQot
ICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19CWV9Q
WU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy12ZXJzaW9uJywgJy0tdGxz
X3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Rsc192ZXJzaW9uJywKLSAg
ICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PV9UTFNfVkVSU0lPTl9T
U0wyMywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMvU1NMIHZlcnNpb24gdG8gdXNl
LiBPbmUgb2YgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfVExTX1ZFUlNJT05fU1NMMjMg
KyAnXCcgKFNTTCB2ZXJzaW9uIDIgb3IgMyksIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAg
X1RMU19WRVJTSU9OX1NTTDMgKyAnXCcgKFNTTCB2ZXJzaW9uIDMpLCBcJycgKwotICAgICAgICAg
ICAgICAgICAgICAgIF9UTFNfVkVSU0lPTl9UTFMxICsgJ1wnIChUTFMgdmVyc2lvbiAxKScpCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzYWJsZS10bHMtY29tcHJlc3Npb24nLCAnLS1kaXNh
YmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGlzYWJs
ZV90bHNfY29tcHJlc3Npb24nLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVf
dHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nRGlzYWJs
ZSBUTFMgY29tcHJlc3Npb24uIEF2YWlsYWJsZSBvbmx5IHdoZW4gJwotICAgICAgICAgICAgICAg
ICAgICAgICdweU9wZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLWsnLCAnLS1zb2NrZXQtdGltZW91dCcsICctLXNvY2tldF90aW1lb3V0JywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9
X1RJTUVPVVRfU0VDLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RpbWVvdXQoc2VjKSBm
b3Igc29ja2V0cycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZHJhZnQ3NScsIGRlc3Q9J2Ry
YWZ0NzUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1
bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nT2Jzb2xldGUgb3B0aW9uLiBE
b25cJ3QgdXNlIHRoaXMuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1wcm90b2NvbC12ZXJz
aW9uJywgJy0tcHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywg
ZGVmYXVsdD1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMsCi0gICAgICAgICAgICAgICAgICAgICAg
aGVscD0nV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gdG8gdXNlLiBPbmUgb2YgXCcnICsKLSAg
ICAgICAgICAgICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgKyAnXCcsIFwnJyAr
Ci0gICAgICAgICAgICAgICAgICAgICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4ICsgJ1wnLCBc
JycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMCArICdc
JycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdmVyc2lvbi1oZWFkZXInLCAnLS12ZXJzaW9u
X2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyc2lvbl9oZWFkZXInLAot
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1bHQ9LTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBTZWMtV2ViU29ja2V0LVZlcnNpb24gaGVhZGVyIHZh
bHVlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZsYXRlLWZyYW1lJywgJy0tZGVmbGF0
ZV9mcmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGVmbGF0ZV9mcmFtZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhlIGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdXNlLXBlcm1lc3NhZ2UtZGVmbGF0ZScs
ICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0n
c3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0n
VXNlIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLicpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tbG9nLWxldmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAg
ICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9y
JywgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGxldmVsLicp
Ci0KLSAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0g
ICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLmdldExldmVsTmFtZShvcHRpb25z
LmxvZ19sZXZlbC51cHBlcigpKSkKLQotICAgIGlmIG9wdGlvbnMuZHJhZnQ3NToKLSAgICAgICAg
bG9nZ2luZy5jcml0aWNhbCgnLS1kcmFmdDc1IG9wdGlvbiBpcyBvYnNvbGV0ZS4nKQotICAgICAg
ICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uID09IF9QUk9U
T0NPTF9WRVJTSU9OX0hJWElFNzU6Ci0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCi0gICAgICAg
ICAgICAnVmFsdWUgJXMgaXMgb2Jzb2xldGUgZm9yIC0tcHJvdG9jb2xfdmVyc2lvbiBvcHRpb25z
JyAlCi0gICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1KQotICAgICAgICBzeXMu
ZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBvcHRpb25zLnRs
c19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6Ci0gICAgICAg
ICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEUKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKLSAgICAgICAg
ICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRs
c19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVi
dWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUyBz
dXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAgICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19C
WV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9zc2woKToKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFi
bGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYgb3B0aW9ucy50
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgbm90IF9pbXBv
cnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgncHlPcGVu
U1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnSW52YWxpZCAt
LXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYg
KG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb24gYW5kCi0gICAgICAgICAgICBvcHRpb25z
LnRsc19tb2R1bGUgIT0gX1RMU19CWV9QWU9QRU5TU0wpOgotICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgnWW91IGNhbiBkaXNhYmxlIFRMUyBjb21wcmVzc2lvbiBvbmx5IHdoZW4gJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAncHlPcGVuU1NMIG1vZHVsZSBpcyB1c2VkLicpCi0g
ICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxz
X21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VzZSAt
LXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgx
KQotCi0gICAgICAgIGlmIG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb246Ci0gICAgICAg
ICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS1kaXNhYmxlLXRscy1jb21wcmVzc2lvbiBvbmx5
IHRvZ2V0aGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggLS11c2UtdGxz
IG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgRGVmYXVsdCBwb3J0
IG51bWJlciBkZXBlbmRzIG9uIHdoZXRoZXIgVExTIGlzIHVzZWQuCi0gICAgaWYgb3B0aW9ucy5z
ZXJ2ZXJfcG9ydCA9PSBfVU5ERUZJTkVEX1BPUlQ6Ci0gICAgICAgIGlmIG9wdGlvbnMudXNlX3Rs
czoKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1NFQ1VSRV9QT1JUCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcHRpb25zLnNl
cnZlcl9wb3J0ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCi0KLSAgICAjIG9wdHBh
cnNlIGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQgdmFsdWVzLgotICAg
ICMgU2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgotICAgIGlmIG5vdCBvcHRpb25zLm1lc3NhZ2U6
Ci0gICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2NzJjJyAgICMgIkph
cGFuIiBpbiBKYXBhbmVzZQotCi0gICAgRWNob0NsaWVudChvcHRpb25zKS5ydW4oKQotCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvZWNob19ub2V4dF93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFk
ZjUxNTEyMjcxMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX25vZXh0X3dz
aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTMsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LV9HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9ucyBoZWFkZXIgdmFsdWUgaXMgcGFyc2VkIGludG8KLSAgICByZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zLiBweXdlYnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgotICAgIHByb2Nl
c3NvcnMgdXNpbmcgaXQgYmVmb3JlIGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBs
b29rcyBhdCBpdAotICAgIGFmdGVyIHRoZSBjYWxsLgotCi0gICAgVG8gcmVqZWN0IHJlcXVlc3Rl
ZCBleHRlbnNpb25zLCBjbGVhciB0aGUgcHJvY2Vzc29yIGxpc3QuCi0gICAgIiIiCi0KLSAgICBy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KLQotCi1kZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHku
IiIiCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0u
cmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6Ci0gICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQotICAg
ICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgotICAgICAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9t
ZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODY0NmMzMmNlYjUuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NCAr
MCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1fR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnll
JwotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICAj
IFRoaXMgZXhhbXBsZSBoYW5kbGVyIGFjY2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5fY2hl
Y2tfd3NoLnB5IGZvciBob3cKLSAgICAjIHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0ZWQg
c2NyaXB0cyBiYXNlZCBvbiBvcmlnaW4gdmFsdWUuCi0KLSAgICBwYXNzICAjIEFsd2F5cyBhY2Nl
cHQuCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGls
ZSBUcnVlOgotICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdl
KCkKLSAgICAgICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfR09PREJZRV9NRVNTQUdFOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJp
bmFyeT1UcnVlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2V2ZW50c291cmNlLmNnaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZGRmMjM3Y2Y3ZC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIENH
SSBzY3JpcHQgZ2VuZXJhdGVzIHRleHQvZXZlbnQtc3RyZWFtIHR5cGUgZGF0YSBzdHJlYW0gZm9y
IHRlc3RpbmcKLXRoZSBTZXJ2ZXItU2VudCBFdmVudHMuCi0KLUl0IHdpbGwgb25seSB3b3JrIGNv
cnJlY3RseSB3aXRoIEhUVFAgc2VydmVycyB0aGF0IGRvIG5vdCBidWZmZXIgdGhlIG91dHB1dCBv
ZgotQ0dJIHNjcmlwdHMuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotCi1zeXMu
c3Rkb3V0LndyaXRlKCdDb250ZW50LXR5cGU6IHRleHQvZXZlbnQtc3RyZWFtXHJcblxyXG4nKQot
Ci1pZCA9IDAKLQotd2hpbGUgVHJ1ZToKLSAgc3lzLnN0ZG91dC53cml0ZSgnZGF0YTogSGVsbG9c
clxuaWQ6ICVkXHJcblxyXG4nICUgaWQpCi0gIHN5cy5zdGRvdXQuZmx1c2goKQotCi0gIGlkID0g
aWQgKyAxCi0KLSAgdGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2V2ZW50
c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZlbnRzb3VyY2UuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTU5OGE4ODA3ZDFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2V2ZW50c291cmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08
IS0tCi1Db3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0K
LVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0o
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPCEtLQotU2ltcGxlIGV4YW1wbGUgb2Yg
dGhlIFNlcnZlci1TZW50IEV2ZW50cwotaHR0cDovL2Rldi53My5vcmcvaHRtbDUvZXZlbnRzb3Vy
Y2UvCi0KLUZvciBjb21wYXJpc29uIHdpdGggdGhlIFdlYlNvY2tldCBQcm90b2NvbCAmIEFQSS4K
LQotUnVuIHRoZSBweXdlYnNvY2tldCB3aXRoIHRoZSAtLWNnaV9wYXRoIHBhcmFtZXRlci4KLS0t
PgotCi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlNlcnZlci1TZW50IEV2ZW50cyBFeGFtcGxlPC90
aXRsZT4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRTb3VyY2UgPSBudWxsOwotCi1mdW5jdGlvbiBhZGRU
b0xvZyhkYXRhKSB7Ci0gIGxvZ0JveC52YWx1ZSArPSBkYXRhICsgJ1xuJzsKLSAgbG9nQm94LnNj
cm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIGxvZ0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBldmVudFNvdXJjZSAgPSBuZXcgRXZl
bnRTb3VyY2UoJy9ldmVudHNvdXJjZS5jZ2knKTsKLSAgZXZlbnRTb3VyY2Uub25vcGVuID0gZnVu
Y3Rpb24oKSB7Ci0gICAgYWRkVG9Mb2coJ29ub3BlbiAocmVhZHlTdGF0ZSA9ICcgKyBldmVudFNv
dXJjZS5yZWFkeVN0YXRlICsgJyknKTsKLSAgfQotICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKGV2ZW50LmRhdGEpOwotICB9Ci0gIGV2ZW50
U291cmNlLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKCdvbmVycm9y
IChyZWFkeVN0YXRlID0gJyArIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgKyAnKScpOwotICB9Ci19
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLTx0ZXh0YXJlYSBp
ZD0ibG9nIiByb3dzPSIxMCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08cCBzdHls
ZT0iZm9udC1zaXplOiBzbWFsbCI+Ci0gIE1ha2Ugc3VyZSB0aGF0IHB5d2Vic29ja2V0IGlzIHJ1
biB3aXRoIC0tY2dpX3BhdGggcGFyYW1ldGVyLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2ZldGNoX2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTA1
ZWI2N2E1NTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJr
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIw
MTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLWxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5j
b20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0tLT4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+
RmV0Y2ggQVBJIGJlbmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJm
ZXRjaF9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0g
bnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVy
bDogYWRkcmVzc0JveC52YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3go
J3ByaW50c2l6ZScpLAotICAgIG51bUZldGNoZXM6IGdldEludEZyb21JbnB1dCgnbnVtRmV0Y2hl
cycpLAotICAgIC8vIEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25z
OiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRp
b25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNp
emU6IGdldEludEZyb21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJr
IHdoZW4gdGhlIHNpemUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0
b3BUaHJlc2hvbGQ6IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIG11bHRp
cGxpZXJzOiBnZXRGbG9hdEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAotICAgIHZlcmlm
eURhdGE6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKSwKLSAgICBhZGRUb0xvZzog
YWRkVG9Mb2csCi0gICAgYWRkVG9TdW1tYXJ5OiBhZGRUb1N1bW1hcnksCi0gICAgbWVhc3VyZVZh
bHVlOiBtZWFzdXJlVmFsdWUsCi0gICAgbm90aWZ5QWJvcnQ6IG5vdGlmeUFib3J0Ci0gIH07Ci19
Ci0KLWZ1bmN0aW9uIG9uU2VuZEJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZp
ZygpOwotICBjb25maWcuZGF0YVR5cGUgPSBnZXRTdHJpbmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBl
cmFkaW8nKTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXIn
KSwgJ3NlbmRCZW5jaG1hcmsnKTsKLX0KLQotZnVuY3Rpb24gb25SZWNlaXZlQmVuY2htYXJrKCkg
ewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlwZSA9IGdldFN0
cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotICBkb0FjdGlvbihjb25maWcsIGdl
dEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFyaycpOwotfQotCi1m
dW5jdGlvbiBvbkJhdGNoQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7
Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdiYXRj
aEJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBjb25maWcgPSBn
ZXRDb25maWcoKTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3Jr
ZXInKSwgJ3N0b3AnKTsKLX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N1bW1hcnknKTsKLQotICAvLyBTcGVjaWFsIGFkZHJlc3Mgb2YgcHl3ZWJzb2NrZXQg
Zm9yIFhIUi9GZXRjaCBBUEkgYmVuY2htYXJrLgotICBhZGRyZXNzQm94LnZhbHVlID0gJy8wNzNi
ZTAwMWUxMDk1MDY5MmNjYmYzYTJhZDIxYzI0NSc7Ci0KLSAgYWRkVG9Mb2cod2luZG93Lm5hdmln
YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0gIGFkZFRvU3VtbWFyeSh3aW5kb3cubmF2
aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKLQotICBpbml0V29ya2VyKCdmZXRjaCcs
ICcnKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08
Zm9ybSBpZD0iYmVuY2htYXJrX2Zvcm0iPgotICB1cmwgcHJlZml4IDxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i
c2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9u
IiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5w
dXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmso
KSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3Ao
KSI+Ci0KLSAgPGJyLz4KLQotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUi
IGNoZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBw
ZXIgbWVzc2FnZTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRh
dGEiIGNoZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJl
bD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0i
d29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJlbD4KLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6
Ci0KLSAgPGJyLz4KLQotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiBm
ZXRjaCgpIHJlcXVlc3RzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51
bUZldGNoZXMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRk
Pk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIg
aWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgot
ICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3RkPgotICAgICAgPHRkPjxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIgdmFsdWU9IjAiPjwvdGQ+
Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RhcnQgc2l6ZTwvdGQ+Ci0gICAgICA8
dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVlPSIxMDI0MCI+PC90ZD4K
LSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9wIHRocmVzaG9sZDwvdGQ+Ci0gICAg
ICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xkIiB2YWx1ZT0iMTAyNDAw
MDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11bHRpcGxpZXJzPC90
ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxpZXJzIiB2YWx1ZT0i
NSwgMiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotCi0gIFNldCBkYXRhIHR5cGUKLSAg
PGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRpbyIKLSAgICAg
ICAgIGlkPSJkYXRhdHlwZXJhZGlvdGV4dCIKLSAgICAgICAgIHZhbHVlPSJ0ZXh0IgotICAgICAg
ICAgY2hlY2tlZD48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvdGV4dCI+dGV4dDwvbGFiZWw+Ci0g
IDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8iCi0gICAg
ICAgICBpZD0iZGF0YXR5cGVyYWRpb2Jsb2IiCi0gICAgICAgICB2YWx1ZT0iYmxvYiIKLSAgICAg
ICAgID48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvYmxvYiI+YmxvYjwvbGFiZWw+Ci0gIDxpbnB1
dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8iCi0gICAgICAgICBp
ZD0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVyIgotICAgICAgICAgdmFsdWU9ImFycmF5YnVmZmVy
IgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9hcnJheWJ1ZmZlciI+YXJyYXli
dWZmZXI8L2xhYmVsPgotPC9mb3JtPgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4KLSAgPHRleHRhcmVh
Ci0gICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48
L3RleHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJzdW1tYXJ5X2RpdiI+Ci0gIFN1bW1hcnkKLSAg
PHRleHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAw
JSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2PgotCi08ZGl2IGlkPSJub3RlX2RpdiI+Ci0g
IE5vdGU6Ci0gIDx1bD4KLSAgICA8bGk+RWZmZWN0IG9mIFJUVCBhbmQgdGltZSBzcGVudCBmb3Ig
QXJyYXlCdWZmZXIgY3JlYXRpb24gaW4gcmVjZWl2ZSBiZW5jaG1hcmtzIGFyZSBub3QgZWxpbWlu
YXRlZC48L2xpPgotICAgIDxsaT5UaGUgU3RkZGV2IGNvbHVtbiBzaG93cyBOYU4gd2hlbiB0aGUg
bnVtYmVyIG9mIGl0ZXJhdGlvbnMgaXMgc2V0IHRvIDEuPC9saT4KLSAgPC91bD4KLTwvZGl2Pgot
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2ht
YXJrLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTM5NTIxOTBhOGUwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2ZldGNoX2JlbmNobWFyay5qcworKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBs
aWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0
dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi12
YXIgaXNXb3JrZXIgPSB0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gInVuZGVmaW5lZCI7Ci0KLWlm
IChpc1dvcmtlcikgewotICAvLyBSdW5uaW5nIG9uIGEgd29ya2VyCi0gIGltcG9ydFNjcmlwdHMo
J3V0aWwuanMnLCAndXRpbF93b3JrZXIuanMnKTsKLX0KLQotLy8gTmFtZXNwYWNlIGZvciBob2xk
aW5nIGdsb2JhbHMuCi12YXIgYmVuY2htYXJrID0ge307Ci1iZW5jaG1hcmsuc3RhcnRUaW1lSW5N
cyA9IDA7Ci0KLXZhciB0aW1lcklEID0gbnVsbDsKLQotZnVuY3Rpb24gc2VuZEJlbmNobWFya1N0
ZXAoc2l6ZSwgY29uZmlnLCBpc1dhcm1VcCkgewotICB0aW1lcklEID0gbnVsbDsKLSAgYmVuY2ht
YXJrLnN0YXJ0VGltZUluTXMgPSBudWxsOwotCi0gIC8vIFByZXBhcmUgZGF0YS4KLSAgdmFyIGRh
dGFBcnJheSA9IFtdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZpZy5udW1GZXRjaGVzOyAr
K2kpIHsKLSAgICB2YXIgZGF0YSA9IG51bGw7Ci0gICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAn
YXJyYXlidWZmZXInIHx8Ci0gICAgICAgIGNvbmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAg
ICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAgICAgIGZpbGxBcnJheUJ1ZmZl
cihkYXRhLCAweDYxKTsKLQotICAgICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsK
LSAgICAgICAgZGF0YSA9IG5ldyBCbG9iKFtkYXRhXSk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgIGRhdGEgPSByZXBlYXRTdHJpbmcoJ2EnLCBzaXplKTsKLSAgICB9Ci0KLSAgICBkYXRh
QXJyYXkucHVzaChkYXRhKTsKLSAgfQotCi0gIC8vIFN0YXJ0IHRpbWUgbWVhc3VyaW5nLgotICBi
ZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gIC8vIFN0YXJ0IGZl
dGNoLgotICB2YXIgcHJvbWlzZXMgPSBbXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcu
bnVtRmV0Y2hlczsgKytpKSB7Ci0gICAgdmFyIGRhdGEgPSBkYXRhQXJyYXlbaV07Ci0gICAgdmFy
IHByb21pc2UgPSBmZXRjaChjb25maWcucHJlZml4VXJsICsgJ19zZW5kJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHttZXRob2Q6ICdQT1NUJywgYm9keTogZGF0YX0pCi0gICAgICAgIC50aGVu
KGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT0g
MjAwKSB7Ci0gICAgICAgICAgICBjb25maWcuYWRkVG9Mb2coJ0ZhaWxlZCAoc3RhdHVzPScgKyBy
ZXNwb25zZS5zdGF0dXMgKyAnKScpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIENoZWNrIGFuZCB3YXJuIGlmIHByb3h5IGlz
IGVuYWJsZWQuCi0gICAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdWaWEnKSAhPT0g
bnVsbCkgewotICAgICAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdXQVJOSU5HOiBwcm94eSBzZWVt
cyBlbmFibGVkLicpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoY29uZmlnLnZlcmlmeURh
dGEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkKLSAgICAgICAgICAgICAg
ICAudGhlbihmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICBpZiAoIXZlcmlmeUFj
a25vd2xlZGdlbWVudChjb25maWcsIHRleHQsIHNpemUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgcHJvbWlzZXMucHVzaChw
cm9taXNlKTsKLSAgfQotCi0gIC8vIEZpbmlzaCBhbmQgcmVwb3J0IHRpbWUgbWVhc3VyaW5nLgot
ICBQcm9taXNlLmFsbChwcm9taXNlcykKLSAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPT0gbnVsbCkgewotICAgICAgICAgIGNvbmZp
Zy5hZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0Jyk7Ci0gICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0
KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsCi0gICAgICAgICAgc2l6ZSAq
IGNvbmZpZy5udW1GZXRjaGVzLCBpc1dhcm1VcCk7Ci0gICAgICAgIHJ1bk5leHRUYXNrKGNvbmZp
Zyk7Ci0gICAgICB9KQotICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgY29uZmln
LmFkZFRvTG9nKCJFUlJPUjogIiArIGUpOwotICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsK
LSAgICAgIH0pOwotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJrU3RlcChzaXplLCBjb25m
aWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotICBiZW5jaG1hcmsuc3RhcnRUaW1l
SW5NcyA9IG51bGw7Ci0KLSAgLy8gU3RhcnQgdGltZSBtZWFzdXJpbmcuCi0gIGJlbmNobWFyay5z
dGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgLy8gU3RhcnQgZmV0Y2guCi0gIHZh
ciBwcm9taXNlcyA9IFtdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZpZy5udW1GZXRjaGVz
OyArK2kpIHsKLSAgICB2YXIgcmVxdWVzdDsKLSAgICBpZiAoY29uZmlnLm1ldGhvZEFuZENhY2hl
ID09PSAnR0VULU5PQ0FDSEUnKSB7Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoY29uZmln
LnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRub2NhY2hlPycgKyBzaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHttZXRob2Q6ICdHRVQnfSk7Ci0gICAgfSBlbHNlIGlmIChjb25maWcu
bWV0aG9kQW5kQ2FjaGUgPT09ICdHRVQtQ0FDSEUnKSB7Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJl
cXVlc3QoY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRjYWNoZT8nICsgc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7bWV0aG9kOiAnR0VUJ30pOwotICAgIH0gZWxzZSB7
Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge21ldGhvZDogJ1BPU1QnLCBib2R5OiBz
aXplICsgJyBub25lJ30pOwotICAgIH0KLSAgICB2YXIgcHJvbWlzZSA9IGZldGNoKHJlcXVlc3Qp
Ci0gICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgaWYgKHJlc3Bv
bnNlLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnRmFpbGVk
IChzdGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdCgpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBDaGVjayBhbmQgd2FybiBp
ZiBwcm94eSBpcyBlbmFibGVkLgotICAgICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzLmdldCgn
VmlhJykgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnV0FSTklORzog
cHJveHkgc2VlbXMgZW5hYmxlZC4nKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGNvbmZp
Zy5kYXRhVHlwZSA9PT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgICAgICAgcmV0dXJuIHJlc3Bv
bnNlLmFycmF5QnVmZmVyKCkKLSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihhcnJheUJ1
ZmZlcikgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIFthcnJheUJ1ZmZlci5ieXRlTGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAoIWNvbmZpZy52ZXJpZnlEYXRhIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHg2
MSkpXTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5k
YXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCkK
LSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihibG9iKSB7Ci0gICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJpZnlCbG9iKGNvbmZpZywgYmxvYiwgMHg2MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbihyZWNlaXZlZFNpemUsIHZlcmlmaWNhdGlvblJlc3VsdCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbcmVjZWl2ZWRTaXplLCB2ZXJp
ZmljYXRpb25SZXN1bHRdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZShbYmxvYi5zaXplLCB0cnVlXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKQotICAgICAgICAgICAgICAgIC50aGVu
KGZ1bmN0aW9uKHRleHQpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBbdGV4dC5sZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICghY29uZmlnLnZlcmlmeURhdGEgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHQgPT0gcmVwZWF0U3RyaW5nKCdhJywgdGV4dC5sZW5n
dGgpKV07Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfQotICAgICAgICB9KQotICAg
ICAgICAudGhlbihmdW5jdGlvbihyZWNlaXZlZFNpemVBbmRWZXJpZmljYXRpb25SZXN1bHQpIHsK
LSAgICAgICAgICB2YXIgcmVjZWl2ZWRTaXplID0gcmVjZWl2ZWRTaXplQW5kVmVyaWZpY2F0aW9u
UmVzdWx0WzBdOwotICAgICAgICAgIHZhciB2ZXJpZmljYXRpb25SZXN1bHQgPSByZWNlaXZlZFNp
emVBbmRWZXJpZmljYXRpb25SZXN1bHRbMV07Ci0gICAgICAgICAgaWYgKHJlY2VpdmVkU2l6ZSAh
PT0gc2l6ZSkgewotICAgICAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdFeHBlY3RlZCAnICsgc2l6
ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0IgYnV0IHJlY2VpdmVkICcgKyByZWNl
aXZlZFNpemUgKyAnQicpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIGlmICghdmVyaWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICAg
ICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTsKLSAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAgICAgIH0KLSAgICAgICAg
fSk7Ci0gICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTsKLSAgfQotCi0gIC8vIEZpbmlzaCBhbmQg
cmVwb3J0IHRpbWUgbWVhc3VyaW5nLgotICBQcm9taXNlLmFsbChwcm9taXNlcykKLSAgICAgIC50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPT0g
bnVsbCkgewotICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0
Jyk7Ci0gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGlt
ZUluTXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplICogY29uZmlnLm51bUZl
dGNoZXMsIGlzV2FybVVwKTsKLSAgICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgICAgIH0p
Ci0gICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgewotICAgICAgICBjb25maWcuYWRkVG9Mb2coIkVS
Uk9SOiAiICsgZSk7Ci0gICAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgfSk7Ci19
Ci0KLQotZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewotICByZXR1cm4gJygnICsg
Y29uZmlnLmRhdGFUeXBlICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0
YSArCi0gICAgJywgJyArIChpc1dvcmtlciA/ICdXb3JrZXInIDogJ01haW4nKSArCi0gICAgJywg
bnVtRmV0Y2hlcz0nICsgY29uZmlnLm51bUZldGNoZXMgKwotICAgICcsIG51bUl0ZXJhdGlvbnM9
JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAnLCBudW1XYXJtVXBJdGVyYXRpb25zPScg
KyBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucyArCi0gICAgJyknOwotfQotCi1mdW5jdGlvbiBz
dGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0KHRpbWVySUQpOwotCi0gIHJ1
bk5leHRUYXNrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGJhdGNoQmVuY2htYXJrKG9yaWdpbmFs
Q29uZmlnKSB7Ci0gIG9yaWdpbmFsQ29uZmlnLmFkZFRvTG9nKCdCYXRjaCBiZW5jaG1hcmsnKTsK
LQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0KLSAgdmFyIGRhdGFUeXBl
cyA9IFsndGV4dCcsICdibG9iJywgJ2FycmF5YnVmZmVyJ107Ci0gIHZhciBzdGVwRnVuY3MgPSBb
c2VuZEJlbmNobWFya1N0ZXAsIHJlY2VpdmVCZW5jaG1hcmtTdGVwXTsKLSAgdmFyIG5hbWVzID0g
WydTZW5kJywgJ1JlY2VpdmUnXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwRnVuY3MubGVu
Z3RoOyArK2kpIHsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFUeXBlcy5sZW5ndGg7ICsr
aikgewotICAgICAgdmFyIGNvbmZpZyA9IGNsb25lQ29uZmlnKG9yaWdpbmFsQ29uZmlnKTsKLSAg
ICAgIGNvbmZpZy5kYXRhVHlwZSA9IGRhdGFUeXBlc1tqXTsKLSAgICAgIGFkZFRhc2tzKGNvbmZp
Zywgc3RlcEZ1bmNzW2ldKTsKLSAgICAgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAot
ICAgICAgICAgIG5hbWVzW2ldICsgJyBiZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25m
aWcpKTsKLSAgICB9Ci0gIH0KLQotICBzdGFydEJlbmNobWFyayhjb25maWcpOwotfQotCi1mdW5j
dGlvbiBjbGVhbnVwKCkgewotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX3BlcmZv
cm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfcGVyZm9ybWFuY2Vf
dGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyZGYyZTdk
ZjRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX3BlcmZvcm1hbmNlX3Rl
c3RfaWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZl
dGNoX2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvaGFuZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjNGMwOWFhMDA5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLSMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUsIHVzZWQgYnkgc3RhbmRhbG9uZS5w
eSAtbSBvcHRpb24uCi0jIEEgbGluZSBzdGFydGluZyB3aXRoICcjJyBpcyBhIGNvbW1lbnQgbGlu
ZS4KLSMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlhc19yZXNvdXJjZV9wYXRoJyBhbmQgJ2V4
aXN0aW5nX3Jlc291cmNlX3BhdGgnCi0jIHNlcGFyYXRlZCBieSBzcGFjZXMuCi0jIEFsaWFzaW5n
IGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhlIGJvdHRvbSBvZiB0aGUgbGluZSwgYW5k
Ci0jICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0IGV4aXN0IGJlZm9yZSBpdCBpcyBhbGlh
c2VkLgotIyBGb3IgZXhhbXBsZSwKLSMgIC8gL2VjaG8KLSMgbWVhbnMgdGhhdCBhIHJlcXVlc3Qg
dG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVycyBmb3IgJy9lY2hvJy4KLS8gL2VjaG8K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2hzdHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2hz
dHNfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODYxOTQ2OTIxYWYuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaHN0c193c2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVu
ZCgKLSAgICAgICAgKCdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5JywgJ21heC1hZ2U9ODY0MDAn
KSkKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVl
c3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8nLCBiaW5hcnk9RmFsc2UpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZmU1ODFiNTRhNjQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAg
QEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1
dGlsCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAg
IHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJh
aXNlIG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdJbnRlbnRpb25hbCcpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlMDU3NjdhYjkzMmYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvb3JpZ2luX2NoZWNrX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0jIFRoaXMgZXhhbXBsZSBpcyBkZXJpdmVkIGZyb20gdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5LgotCi0KLWRlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0LndzX29yaWdpbiA9PSAn
aHR0cDovL2V4YW1wbGUuY29tJzoKLSAgICAgICAgcmV0dXJuCi0gICAgcmFpc2UgVmFsdWVFcnJv
cignVW5hY2NlcHRhYmxlIG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4pCi0KLQotZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9y
bWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhh
ZWRlOTdhMTQzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3BlcmZvcm1hbmNlX3Rl
c3RfaWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJl
bmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
cGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVz
dF9pZnJhbWUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWIyNWJkMWZmZC4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5q
cworKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLWZ1bmN0aW9uIHBlcmZUZXN0QWRkVG9M
b2codGV4dCkgewotICBwYXJlbnQucG9zdE1lc3NhZ2Uoeydjb21tYW5kJzogJ2xvZycsICd2YWx1
ZSc6IHRleHR9LCAnKicpOwotfQotCi1mdW5jdGlvbiBwZXJmVGVzdEFkZFRvU3VtbWFyeSh0ZXh0
KSB7Ci19Ci0KLWZ1bmN0aW9uIHBlcmZUZXN0TWVhc3VyZVZhbHVlKHZhbHVlKSB7Ci0gIHBhcmVu
dC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbWVhc3VyZVZhbHVlJywgJ3ZhbHVlJzogdmFsdWV9
LCAnKicpOwotfQotCi1mdW5jdGlvbiBwZXJmVGVzdE5vdGlmeUFib3J0KCkgewotICBwYXJlbnQu
cG9zdE1lc3NhZ2Uoeydjb21tYW5kJzogJ25vdGlmeUFib3J0J30sICcqJyk7Ci19Ci0KLWZ1bmN0
aW9uIGdldENvbmZpZ0ZvclBlcmZvcm1hbmNlVGVzdChjb25uZWN0aW9uVHlwZSwgZGF0YVR5cGUs
IGFzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeURhdGEs
IG51bUl0ZXJhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt
V2FybVVwSXRlcmF0aW9ucykgewotICB2YXIgcHJlZml4VXJsOwotICBpZiAoY29ubmVjdGlvblR5
cGUgPT09ICdXZWJTb2NrZXQnKSB7Ci0gICAgcHJlZml4VXJsID0gJ3dzOi8vJyArIGxvY2F0aW9u
Lmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInOwotICB9IGVsc2UgewotICAgIC8vIFhIUiBvciBm
ZXRjaAotICAgIHByZWZpeFVybCA9ICdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QgKyAnLzA3M2Jl
MDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1JzsKLSAgfQotCi0gIHJldHVybiB7Ci0gICAgcHJl
Zml4VXJsOiBwcmVmaXhVcmwsCi0gICAgcHJpbnRTaXplOiB0cnVlLAotICAgIG51bVhIUnM6IDEs
Ci0gICAgbnVtRmV0Y2hlczogMSwKLSAgICBudW1Tb2NrZXRzOiAxLAotICAgIC8vICsgMSBpcyBm
b3IgYSB3YXJtdXAgaXRlcmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgotICAgIG51
bUl0ZXJhdGlvbnM6IG51bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKLSAg
ICBudW1XYXJtVXBJdGVyYXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAotICAgIG1pblRvdGFs
OiAxMDI0MDAwMCwKLSAgICBzdGFydFNpemU6IDEwMjQwMDAwLAotICAgIHN0b3BUaHJlc2hvbGQ6
IDEwMjQwMDAwLAotICAgIG11bHRpcGxpZXJzOiBbMl0sCi0gICAgdmVyaWZ5RGF0YTogdmVyaWZ5
RGF0YSwKLSAgICBkYXRhVHlwZTogZGF0YVR5cGUsCi0gICAgYXN5bmM6IGFzeW5jLAotICAgIGFk
ZFRvTG9nOiBwZXJmVGVzdEFkZFRvTG9nLAotICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRU
b1N1bW1hcnksCi0gICAgbWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKLSAgICBu
b3RpZnlBYm9ydDogcGVyZlRlc3ROb3RpZnlBYm9ydAotICB9OwotfQotCi12YXIgZGF0YTsKLW9u
bWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKLSAgdmFyIGFjdGlvbjsKLSAgaWYgKG1lc3Nh
Z2UuZGF0YS5jb21tYW5kID09PSAnc3RhcnQnKSB7Ci0gICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsK
LSAgICBpbml0V29ya2VyKGRhdGEuY29ubmVjdGlvblR5cGUsICdodHRwOi8vJyArIGxvY2F0aW9u
Lmhvc3QpOwotICAgIGFjdGlvbiA9IGRhdGEuYmVuY2htYXJrTmFtZTsKLSAgfSBlbHNlIHsKLSAg
ICBhY3Rpb24gPSAnc3RvcCc7Ci0gIH0KLQotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnRm9yUGVy
Zm9ybWFuY2VUZXN0KGRhdGEuY29ubmVjdGlvblR5cGUsIGRhdGEuZGF0YVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hc3luYywgZGF0YS52ZXJp
ZnlEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bnVtSXRlcmF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOwotICBkb0FjdGlvbihjb25maWcsIGRhdGEuaXNX
b3JrZXIsIGFjdGlvbik7Ci19OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3B5d2Vic29ja2V0
LmNvbmYgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzM1ZDEzMGE1Yzg0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L3B5d2Vic29ja2V0LmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIwotIyBTYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhcGFjaGUyCi0j
Ci1Mb2dMZXZlbCBkZWJ1ZwotPElmTW9kdWxlIHB5dGhvbl9tb2R1bGU+Ci0gIFB5dGhvblBhdGgg
InN5cy5wYXRoK1snL21vZF9weXdlYnNvY2tldCddIgotICBQeXRob25PcHRpb24gbW9kX3B5d2Vi
c29ja2V0LmhhbmRsZXJfcm9vdCAvdmFyL3d3dwotICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29j
a2V0LmhhbmRsZXJfc2NhbiAvdmFyL3d3dy93cwotICAjUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNv
Y2tldC5hbGxvd19kcmFmdDc1IE9uCi0gIDxMb2NhdGlvbiAvd3M+Ci0gICAgUHl0aG9uSGVhZGVy
UGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICA8L0xv
Y2F0aW9uPgotPC9JZk1vZHVsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9zcGVjaWFsX2hl
YWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVhNTA4MGYxZjFhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBA
QAotIyEvdXNyL2Jpbi9weXRob24KLQotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZQotIyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZ
SU5HIGZpbGUgb3IgYXQKLSMgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3Vy
Y2UvbGljZW5zZXMvYnNkCi0KLSIiIkNHSSBzY3JpcHQgc2FtcGxlIGZvciB0ZXN0aW5nIGVmZmVj
dCBvZiBIVFRQIGhlYWRlcnMgb24gdGhlIG9yaWdpbiBwYWdlLgotCi1Ob3RlIHRoYXQgQ0dJIHNj
cmlwdHMgZG9uJ3Qgd29yayBvbiB0aGUgc3RhbmRhbG9uZSBweXdlYnNvY2tldCBydW5uaW5nIGlu
IFRMUwotbW9kZS4KLSIiIgotCi0KLXByaW50ICIiIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sCi1D
b250ZW50LVNlY3VyaXR5LVBvbGljeTogY29ubmVjdC1zcmMgc2VsZgotCi08aHRtbD4KLTxoZWFk
PgotPHRpdGxlPjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci12YXIgc29ja2V0
ID0gbmV3IFdlYlNvY2tldCgid3M6Ly9leGFtcGxlLmNvbSIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+IiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhh
bXBsZS91dGlsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWMwMDA3YjFlZGQu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDMyNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9yIGJvdGgg
bWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCi0KLXZhciByZXN1bHRzID0ge307Ci0KLWZ1bmN0aW9u
IGdldFRpbWVTdGFtcCgpIHsKLSAgcmV0dXJuIERhdGUubm93KCk7Ci19Ci0KLWZ1bmN0aW9uIGZv
cm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGltZVBlck1l
c3NhZ2VJbk1zLAotICAgIHNwZWVkLCBwcmludFNpemUpIHsKLSAgaWYgKHByaW50U2l6ZSkgewot
ICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKLSAgICAgICAgJ1x0JyArIHRpbWVQZXJNZXNzYWdl
SW5Ncy50b0ZpeGVkKDMpICsKLSAgICAgICAgKHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5NcyA9PSAt
MSA/Ci0gICAgICAgICAgICAnJyA6Ci0gICAgICAgICAgICAnXHQnICsgc3RkZGV2VGltZVBlck1l
c3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKLSAgICAgICAgJ1x0JyArIHNwZWVkLnRvRml4ZWQoMyk7
Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5nKCk7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKLSAgcmVzdWx0cyA9IHt9OwotfQotCi1mdW5jdGlv
biByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvU3VtbWFyeSgKLSAg
ICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRldiB0aW1lW21zXVx0U3BlZWRb
S0Ivc10nKTsKLSAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7Ci0gICAgdmFyIGF2ZXJhZ2VU
aW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90IC8gcmVzdWx0c1tzaXplXS5u
OwotICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCBhdmVyYWdlVGltZVBl
ck1lc3NhZ2VJbk1zKTsKLSAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlv
bgotICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBNYXRoLnNxcnQoCi0gICAgICAg
IChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0ubiAtCi0gICAgICAgICAgICBh
dmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcykgKgot
ICAgICAgICByZXN1bHRzW3NpemVdLm4gLwotICAgICAgICAocmVzdWx0c1tzaXplXS5uIC0gMSkp
OwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0SW5LaUIoCi0gICAgICAgIHNp
emUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5Ncywg
c3BlZWQsCi0gICAgICAgIHRydWUpKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjYWxjdWxhdGVTcGVl
ZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgewotICByZXR1cm4gTWF0aC5yb3VuZChzaXplIC8g
dGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKLX0KLQotZnVuY3Rpb24gY2FsY3VsYXRlQW5k
TG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAotICAgIGlz
V2FybVVwKSB7Ci0gIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGltZVN0YW1wKCkgLSBzdGFydFRp
bWVJbk1zOwotICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXplLCB0aW1l
U3BlbnRJbk1zKTsKLSAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9IHRpbWVTcGVudEluTXMgLyAo
dG90YWxTaXplIC8gc2l6ZSk7Ci0gIGlmICghaXNXYXJtVXApIHsKLSAgICBjb25maWcubWVhc3Vy
ZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7Ci0gICAgaWYgKCFyZXN1bHRzW3NpemVdKSB7Ci0g
ICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9OwotICAgIH0K
LSAgICByZXN1bHRzW3NpemVdLm4gKys7Ci0gICAgcmVzdWx0c1tzaXplXS5zdW1fdCArPSB0aW1l
UGVyTWVzc2FnZUluTXM7Ci0gICAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0gdGltZVBlck1lc3Nh
Z2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOwotICB9Ci0gIGNvbmZpZy5hZGRUb0xvZyhmb3Jt
YXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIC0xLCBzcGVlZCwKLSAgICAg
IGNvbmZpZy5wcmludFNpemUpKTsKLX0KLQotZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0ciwgY291
bnQpIHsKLSAgdmFyIGRhdGEgPSAnJzsKLSAgdmFyIGV4cENodW5rID0gc3RyOwotICB2YXIgcmVt
YWluID0gY291bnQ7Ci0gIHdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKHJlbWFpbiAlIDIpIHsKLSAg
ICAgIGRhdGEgKz0gZXhwQ2h1bms7Ci0gICAgICByZW1haW4gPSAocmVtYWluIC0gMSkgLyAyOwot
ICAgIH0gZWxzZSB7Ci0gICAgICByZW1haW4gLz0gMjsKLSAgICB9Ci0KLSAgICBpZiAocmVtYWlu
ID09IDApCi0gICAgICBicmVhazsKLQotICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBleHBDaHVu
azsKLSAgfQotICByZXR1cm4gZGF0YTsKLX0KLQotZnVuY3Rpb24gZmlsbEFycmF5QnVmZmVyKGJ1
ZmZlciwgYykgewotICB2YXIgaTsKLQotICB2YXIgdTMyQ29udGVudCA9IGMgKiAweDAxMDEwMTAx
OwotCi0gIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3RoIC8gNCk7
Ci0gIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxvY2tzKTsK
LSAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9tZS4gRG9uJ3QgdXNlIGl0IGZv
ciBsb29wIGNvbmRpdGlvbi4KLSAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytpKSB7Ci0g
ICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7Ci0gIH0KLQotICAvLyBGcmFjdGlvbgotICB2YXIg
dThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAqIDQ7Ci0gIHZhciB1OFZp
ZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tzKTsKLSAg
Zm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKLSAgICB1OFZpZXdbaV0gPSBjOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZlciwgZXhwZWN0ZWRDaGFyKSB7
Ci0gIHZhciBpOwotCi0gIHZhciBleHBlY3RlZFUzMlZhbHVlID0gZXhwZWN0ZWRDaGFyICogMHgw
MTAxMDEwMTsKLQotICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0ZUxlbmd0
aCAvIDQpOwotICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAsIHUzMkJs
b2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkgewotICAgIGlmICh1MzJW
aWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gIH0KLQotICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAq
IDQ7Ci0gIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQs
IHU4QmxvY2tzKTsKLSAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKLSAgICBpZiAo
dThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlCbG9iKGNvbmZpZywg
YmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKLSAgdmFyIHJlYWRlciA9IG5ldyBG
aWxlUmVhZGVyKGJsb2IpOwotICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewotICAgIGNv
bmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJlYWRlci5lcnJvci5tZXNzYWdl
KTsKLSAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7Ci0gIH0KLSAgcmVhZGVyLm9u
bG9hZGVuZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciByZXN1bHQgPSB2ZXJpZnlBcnJheUJ1ZmZl
cihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOwotICAgIGRvbmVDYWxsYmFjayhibG9iLnNp
emUsIHJlc3VsdCk7Ci0gIH0KLSAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpOwotfQot
Ci1mdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBtZXNzYWdlLCBzaXplKSB7
Ci0gIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgewotICAgIGNvbmZpZy5hZGRUb0xv
ZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdlKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLSAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1lc3NhZ2UpOwotICBpZiAoaXNO
YU4ocGFyc2VkQWNrKSkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sgdmFsdWU6
ICcgKyBtZXNzYWdlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKHBhcnNlZEFjayAh
PSBzaXplKSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKAotICAgICAgICAnRXhwZWN0ZWQgYWNrIGZv
ciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcgKyBwYXJzZWRBY2sgKwotICAg
ICAgICAnQicpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHJldHVybiB0cnVlOwotfQot
Ci1mdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKLSAgdmFyIG5ld09iaiA9IHt9OwotICBmb3Ig
KGtleSBpbiBvYmopIHsKLSAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldOwotICB9Ci0gIHJldHVy
biBuZXdPYmo7Ci19Ci0KLXZhciB0YXNrcyA9IFtdOwotCi1mdW5jdGlvbiBydW5OZXh0VGFzayhj
b25maWcpIHsKLSAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOwotICBpZiAodGFzayA9PSB1bmRl
ZmluZWQpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7Ci0gICAgY2xlYW51cCgp
OwotICAgIHJldHVybjsKLSAgfQotICB0aW1lcklEID0gc2V0VGltZW91dCh0YXNrLCAwKTsKLX0K
LQotZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7Ci0gIHZhciBsZWdlbmQgPSAn
JwotICBpZiAoY29uZmlnLnByaW50U2l6ZSkKLSAgICBsZWdlbmQgPSAnTWVzc2FnZSBzaXplIGlu
IEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOwotICBsZWdlbmQgKz0gJ1NwZWVkIGluIGtCL3Mn
OwotICByZXR1cm4gbGVnZW5kOwotfQotCi1mdW5jdGlvbiBhZGRUYXNrcyhjb25maWcsIHN0ZXBG
dW5jKSB7Ci0gIGZvciAodmFyIGkgPSAwOwotICAgICAgaSA8IGNvbmZpZy5udW1XYXJtVXBJdGVy
YXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgewotICAgIHZhciBtdWx0aXBsaWVy
SW5kZXggPSAwOwotICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwotICAgICAg
ICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKLSAgICAgICAgICsrbXVsdGlwbGllcklu
ZGV4KSB7Ci0gICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCi0gICAgICAgICAgbnVsbCwK
LSAgICAgICAgICBzaXplLAotICAgICAgICAgIGNvbmZpZywKLSAgICAgICAgICBpIDwgY29uZmln
Lm51bVdhcm1VcEl0ZXJhdGlvbnMpOwotICAgICAgdGFza3MucHVzaCh0YXNrKTsKLSAgICAgIHZh
ciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWwotICAgICAgICBtdWx0aXBsaWVySW5k
ZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKLSAgICAgIGlmIChtdWx0aXBsaWVyIDw9
IDEpIHsKLSAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIG11bHRpcGxpZXIgJyArIG11
bHRpcGxpZXIpOwotICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOwotICAgICAgfQotICAgICAgc2l6ZSA9IE1h
dGguY2VpbChzaXplICogbXVsdGlwbGllcik7Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIGFk
ZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgewotICB0YXNrcy5wdXNoKGZ1bmN0
aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAgICAgIGNvbmZpZy5hZGRUb1N1bW1hcnko
dGl0bGUpOwotICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKLSAgICAgIGNsZWFyQXZl
cmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0pOwotfQotCi1mdW5j
dGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgewotICBjb25maWcuYWRkVG9Mb2coJ1NlbmQgYmVu
Y2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsK
LQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZp
Zywgc2VuZEJlbmNobWFya1N0ZXApOwotICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywg
J1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVu
Y2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKSB7
Ci0gIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRv
TG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFy
QXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJrU3RlcCk7
Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAotICAgICAgJ1JlY2VpdmUgQmVuY2ht
YXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZp
Zyk7Ci19Ci0KLWZ1bmN0aW9uIHN0b3AoY29uZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklE
KTsKLSAgdGltZXJJRCA9IG51bGw7Ci0gIHRhc2tzID0gW107Ci0gIGNvbmZpZy5hZGRUb0xvZygn
U3RvcHBlZCcpOwotICBjbGVhbnVwKCk7Ci19Ci0KLXZhciB3b3JrZXI7Ci0KLWZ1bmN0aW9uIGlu
aXRXb3JrZXIoY29ubmVjdGlvblR5cGUsIG9yaWdpbikgewotICB2YXIgc2NyaXB0UGF0aCA9Ci0g
ICAgY29ubmVjdGlvblR5cGUgPT09ICdXZWJTb2NrZXQnID8gJy9iZW5jaG1hcmsuanMnIDoKLSAg
ICBjb25uZWN0aW9uVHlwZSA9PT0gJ1hIUicgPyAnL3hocl9iZW5jaG1hcmsuanMnIDoKLSAgICAn
L2ZldGNoX2JlbmNobWFyay5qcyc7IC8vIGNvbm5lY3Rpb25UeXBlID09PSAnZmV0Y2gnCi0gIHdv
cmtlciA9IG5ldyBXb3JrZXIob3JpZ2luICsgc2NyaXB0UGF0aCk7Ci19Ci0KLWZ1bmN0aW9uIGRv
QWN0aW9uKGNvbmZpZywgaXNXaW5kb3dUb1dvcmtlciwgYWN0aW9uKSB7Ci0gIGlmIChpc1dpbmRv
d1RvV29ya2VyKSB7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGFkZFRvTG9nLCBh
ZGRUb1N1bW1hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVWYWx1
ZSwgbm90aWZ5QWJvcnQsIG1lc3NhZ2UpIHsKLSAgICAgIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9
PT0gJ2FkZFRvTG9nJykKLSAgICAgICAgYWRkVG9Mb2cobWVzc2FnZS5kYXRhLmRhdGEpOwotICAg
ICAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdhZGRUb1N1bW1hcnknKQotICAgICAg
ICBhZGRUb1N1bW1hcnkobWVzc2FnZS5kYXRhLmRhdGEpOwotICAgICAgZWxzZSBpZiAobWVzc2Fn
ZS5kYXRhLnR5cGUgPT09ICdtZWFzdXJlVmFsdWUnKQotICAgICAgICBtZWFzdXJlVmFsdWUobWVz
c2FnZS5kYXRhLmRhdGEpOwotICAgICAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdu
b3RpZnlBYm9ydCcpCi0gICAgICAgIG5vdGlmeUFib3J0KCk7Ci0gICAgfS5iaW5kKHVuZGVmaW5l
ZCwgY29uZmlnLmFkZFRvTG9nLCBjb25maWcuYWRkVG9TdW1tYXJ5LAotICAgICAgICAgICBjb25m
aWcubWVhc3VyZVZhbHVlLCBjb25maWcubm90aWZ5QWJvcnQpOwotICAgIGNvbmZpZy5hZGRUb0xv
ZyA9IHVuZGVmaW5lZDsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gdW5kZWZpbmVkOwotICAg
IGNvbmZpZy5tZWFzdXJlVmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAgY29uZmlnLm5vdGlmeUFib3J0
ID0gdW5kZWZpbmVkOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogYWN0aW9uLCBjb25m
aWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAgIGlmIChhY3Rpb24gPT09ICdzZW5kQmVuY2ht
YXJrJykKLSAgICAgIHNlbmRCZW5jaG1hcmsoY29uZmlnKTsKLSAgICBlbHNlIGlmIChhY3Rpb24g
PT09ICdyZWNlaXZlQmVuY2htYXJrJykKLSAgICAgIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKTsK
LSAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdiYXRjaEJlbmNobWFyaycpCi0gICAgICBiYXRjaEJl
bmNobWFyayhjb25maWcpOwotICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3N0b3AnKQotICAgICAg
c3RvcChjb25maWcpOwotICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbF9tYWlu
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL3V0aWxfbWFpbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDcxZWQ2M2ZiNWQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWxf
bWFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJz
Lmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLS8vIFV0aWxpdGllcyBmb3Ig
ZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgbWFpbiB0aHJlYWQgb25seSkuCi0KLXZhciBs
b2dCb3ggPSBudWxsOwotdmFyIHF1ZXVlZExvZyA9ICcnOwotCi12YXIgc3VtbWFyeUJveCA9IG51
bGw7Ci0KLWZ1bmN0aW9uIHF1ZXVlTG9nKGxvZykgewotICBxdWV1ZWRMb2cgKz0gbG9nICsgJ1xu
JzsKLX0KLQotZnVuY3Rpb24gYWRkVG9Mb2cobG9nKSB7Ci0gIGxvZ0JveC52YWx1ZSArPSBxdWV1
ZWRMb2c7Ci0gIHF1ZXVlZExvZyA9ICcnOwotICBsb2dCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsK
LSAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRvU3VtbWFy
eShsb2cpIHsKLSAgc3VtbWFyeUJveC52YWx1ZSArPSBsb2cgKyAnXG4nOwotICBzdW1tYXJ5Qm94
LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLS8vIHZhbHVlOiBleGVjdXRpb24gdGltZSBpbiBt
aWxsaXNlY29uZHMuCi0vLyBjb25maWcubWVhc3VyZVZhbHVlIGlzIGludGVuZGVkIHRvIGJlIHVz
ZWQgaW4gUGVyZm9ybWFuY2UgVGVzdHMuCi0vLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZv
cm1hbmNlVGVzdC4KLWZ1bmN0aW9uIG1lYXN1cmVWYWx1ZSh2YWx1ZSkgewotfQotCi0vLyBjb25m
aWcubm90aWZ5QWJvcnQgaXMgY2FsbGVkIHdoZW4gdGhlIGJlbmNobWFyayBmYWlsZWQgYW5kIGFi
b3J0ZWQsIGFuZAotLy8gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBQZXJmb3JtYW5jZSBUZXN0cy4K
LS8vIERvIG5vdGhpbmcgaGVyZSBpbiBub24tUGVyZm9ybWFuY2VUZXN0LgotZnVuY3Rpb24gbm90
aWZ5QWJvcnQoKSB7Ci19Ci0KLWZ1bmN0aW9uIGdldEludEZyb21JbnB1dChpZCkgewotICByZXR1
cm4gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlKTsKLX0KLQotZnVu
Y3Rpb24gZ2V0U3RyaW5nRnJvbVJhZGlvQm94KG5hbWUpIHsKLSAgdmFyIGxpc3QgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYmVuY2htYXJrX2Zvcm0nKVtuYW1lXTsKLSAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQotICAgIGlmIChsaXN0Lml0ZW0oaSkuY2hlY2tlZCkK
LSAgICAgIHJldHVybiBsaXN0Lml0ZW0oaSkudmFsdWU7Ci0gIHJldHVybiB1bmRlZmluZWQ7Ci19
Ci1mdW5jdGlvbiBnZXRCb29sRnJvbUNoZWNrQm94KGlkKSB7Ci0gIHJldHVybiBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZCkuY2hlY2tlZDsKLX0KLQotZnVuY3Rpb24gZ2V0SW50QXJyYXlGcm9t
SW5wdXQoaWQpIHsKLSAgdmFyIHN0ckFycmF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQp
LnZhbHVlLnNwbGl0KCcsJyk7Ci0gIHJldHVybiBzdHJBcnJheS5tYXAoZnVuY3Rpb24oc3RyKSB7
IHJldHVybiBwYXJzZUludChzdHIsIDEwKTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIGdldEZsb2F0QXJy
YXlGcm9tSW5wdXQoaWQpIHsKLSAgdmFyIHN0ckFycmF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoaWQpLnZhbHVlLnNwbGl0KCcsJyk7Ci0gIHJldHVybiBzdHJBcnJheS5tYXAocGFyc2VGbG9h
dCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbF93b3JrZXIuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvdXRpbF93b3JrZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZGNm
NDQxNzI5OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91dGlsX3dvcmtlci5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5j
b20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBh
cHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2VyIHRocmVhZHMgb25seSkuCi0KLW9ubWVzc2FnZSA9
IGZ1bmN0aW9uIChtZXNzYWdlKSB7Ci0gIHZhciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmln
OwotICBjb25maWcuYWRkVG9Mb2cgPSBmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICBwb3N0TWVzc2Fn
ZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTogdGV4dH0pOyB9OwotICBjb25maWcuYWRkVG9TdW1t
YXJ5ID0gZnVuY3Rpb24odGV4dCkgewotICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1
bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Ci0gIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlv
bih2YWx1ZSkgewotICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRh
OiB2YWx1ZX0pOyB9OwotICBjb25maWcubm90aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1l
c3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9KTsgfTsKLQotICBkb0FjdGlvbihjb25maWcsIGZh
bHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Ci19OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwZjkzYjhiNjk1NWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9h
Ym9ydF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvYmVuY2hfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVy
X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9jbG9zZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY29uc29s
ZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2Nvb2tpZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19j
bGllbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
ZWNob193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZlbnRzb3VyY2UuY2dpCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2V2ZW50c291cmNlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJrLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJrLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX3BlcmZv
cm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2hzdHNfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dz
aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3Bl
cmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVz
dF9pZnJhbWUuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWwuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvdXRpbF9tYWluLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWxfd29ya2VyLmpzCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3hocl9iZW5jaG1hcmsuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL3hocl9ldmVudF9sb2dnZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfcGVy
Zm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9i
ZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMGQyMGM5Y2NiNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAs
MCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2Vy
dmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08
dGl0bGU+WE1MSHR0cFJlcXVlc3QgYmVuY2htYXJrPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJ1dGls
X21haW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Inhocl9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRy
ZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAg
IHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9t
Q2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAgIG51bVhIUnM6IGdldEludEZyb21JbnB1dCgnbnVt
WEhScycpLAotICAgIGFzeW5jOiBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycpLAotICAgIC8v
IEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9t
SW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRG
cm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNpemU6IGdldEludEZy
b21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNp
emUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6
IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIG11bHRpcGxpZXJzOiBnZXRG
bG9hdEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAotICAgIHZlcmlmeURhdGE6IGdldEJv
b2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKSwKLSAgICBtZXRob2RBbmRDYWNoZTogZ2V0U3Ry
aW5nRnJvbVJhZGlvQm94KCdtZXRob2RhbmRjYWNoZScpLAotICAgIGFkZFRvTG9nOiBhZGRUb0xv
ZywKLSAgICBhZGRUb1N1bW1hcnk6IGFkZFRvU3VtbWFyeSwKLSAgICBtZWFzdXJlVmFsdWU6IG1l
YXN1cmVWYWx1ZSwKLSAgICBub3RpZnlBYm9ydDogbm90aWZ5QWJvcnQKLSAgfTsKLX0KLQotZnVu
Y3Rpb24gb25TZW5kQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0g
IGNvbmZpZy5kYXRhVHlwZSA9IGdldFN0cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycp
OwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAnc2Vu
ZEJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvblJlY2VpdmVCZW5jaG1hcmsoKSB7Ci0gIHZh
ciBjb25maWcgPSBnZXRDb25maWcoKTsKLSAgY29uZmlnLmRhdGFUeXBlID0gZ2V0U3RyaW5nRnJv
bVJhZGlvQm94KCdkYXRhdHlwZXJhZGlvJyk7Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZy
b21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZlQmVuY2htYXJrJyk7Ci19Ci0KLWZ1bmN0aW9u
IG9uQmF0Y2hCZW5jaG1hcmsoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLSAgZG9B
Y3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ2JhdGNoQmVuY2ht
YXJrJyk7Ci19Ci0KLWZ1bmN0aW9uIG9uU3RvcCgpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZp
ZygpOwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAn
c3RvcCcpOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewotICBhZGRyZXNzQm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xvZycpOwotCi0gIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3VtbWFyeScpOwotCi0gIC8vIFNwZWNpYWwgYWRkcmVzcyBvZiBweXdlYnNvY2tldCBmb3IgWEhS
IGJlbmNobWFyay4KLSAgYWRkcmVzc0JveC52YWx1ZSA9ICcvMDczYmUwMDFlMTA5NTA2OTJjY2Jm
M2EyYWQyMWMyNDUnOwotCi0gIGFkZFRvTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRv
TG93ZXJDYXNlKCkpOwotICBhZGRUb1N1bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQu
dG9Mb3dlckNhc2UoKSk7Ci0KLSAgaW5pdFdvcmtlcignWEhSJywgJycpOwotfQotPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxmb3JtIGlkPSJiZW5jaG1hcmtf
Zm9ybSI+Ci0gIHVybCBwcmVmaXggPGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXpl
PSI0MCI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzZW5kIiBvbmNsaWNrPSJvblNl
bmRCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJyZWNlaXZlIiBv
bmNsaWNrPSJvblJlY2VpdmVCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZh
bHVlPSJiYXRjaCIgb25jbGljaz0ib25CYXRjaEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9
ImJ1dHRvbiIgdmFsdWU9InN0b3AiIG9uY2xpY2s9Im9uU3RvcCgpIj4KLQotICA8YnIvPgotCi0g
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InByaW50c2l6ZSIgY2hlY2tlZD4KLSAgPGxhYmVs
IGZvcj0icHJpbnRzaXplIj5QcmludCBzaXplIGFuZCB0aW1lIHBlciBtZXNzYWdlPC9sYWJlbD4K
LSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idmVyaWZ5ZGF0YSIgY2hlY2tlZD4KLSAgPGxh
YmVsIGZvcj0idmVyaWZ5ZGF0YSI+VmVyaWZ5IGRhdGE8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0i
Y2hlY2tib3giIGlkPSJ3b3JrZXIiPgotICA8bGFiZWwgZm9yPSJ3b3JrZXIiPlJ1biBvbiB3b3Jr
ZXI8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJhc3luYyIgY2hlY2tlZD4K
LSAgPGxhYmVsIGZvcj0iYXN5bmMiPkFzeW5jPC9sYWJlbD48YnI+Ci0gIChSZWNlaXZlICZhbXA7
JmFtcDsgTm9uLVdvcmtlciAmYW1wOyZhbXA7IFN5bmMgaXMgbm90IHN1cHBvcnRlZCBieSBzcGVj
KQotCi0gIDxici8+Ci0KLSAgUGFyYW1ldGVyczoKLQotICA8YnIvPgotCi0gIDx0YWJsZT4KLSAg
ICA8dHI+Ci0gICAgICA8dGQ+TnVtIFhIUnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0ibnVtWEhScyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0g
ICAgICA8dGQ+TnVtYmVyIG9mIGl0ZXJhdGlvbnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0ibnVtaXRlcmF0aW9ucyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAg
ICA8dHI+Ci0gICAgICA8dGQ+TnVtYmVyIG9mIHdhcm0tdXAgaXRlcmF0aW9uczwvdGQ+Ci0gICAg
ICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW13YXJtdXBpdGVyYXRpb25zIiB2YWx1ZT0i
MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdGFydCBzaXplPC90ZD4K
LSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0YXJ0c2l6ZSIgdmFsdWU9IjEwMjQw
Ij48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0b3AgdGhyZXNob2xkPC90
ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0b3B0aHJlc2hvbGQiIHZhbHVl
PSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TXVsdGlw
bGllcnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibXVsdGlwbGllcnMi
IHZhbHVlPSI1LCAyIj48L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0KLSAgU2V0IGRhdGEg
dHlwZQotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJkYXRhdHlwZXJhZGlv
IgotICAgICAgICAgaWQ9ImRhdGF0eXBlcmFkaW90ZXh0IgotICAgICAgICAgdmFsdWU9InRleHQi
Ci0gICAgICAgICBjaGVja2VkPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW90ZXh0Ij50ZXh0PC9s
YWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRp
byIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYmxvYiIKLSAgICAgICAgIHZhbHVlPSJibG9i
IgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9ibG9iIj5ibG9iPC9sYWJlbD4K
LSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRpbyIKLSAg
ICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYXJyYXlidWZmZXIiCi0gICAgICAgICB2YWx1ZT0iYXJy
YXlidWZmZXIiCi0gICAgICAgICA+PGxhYmVsIGZvcj0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVy
Ij5hcnJheWJ1ZmZlcjwvbGFiZWw+Ci0KLSAgPGJyPgotICBTZXQgSFRUUCBtZXRob2QgYW5kIGNh
Y2hlIGNvbnRyb2wKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0ibWV0aG9k
YW5kY2FjaGUiCi0gICAgICAgICBpZD0ibWV0aG9kYW5kY2FjaGVQT1NUIgotICAgICAgICAgdmFs
dWU9IlBPU1QiCi0gICAgICAgICBjaGVja2VkPjxsYWJlbCBmb3I9Im1ldGhvZGFuZGNhY2hlUE9T
VCI+UE9TVCAoTm8gQ2FjaGUpPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAg
ICAgbmFtZT0ibWV0aG9kYW5kY2FjaGUiCi0gICAgICAgICBpZD0ibWV0aG9kYW5kY2FjaGVHRVRO
T0NBQ0hFIgotICAgICAgICAgdmFsdWU9IkdFVC1OT0NBQ0hFIgotICAgICAgICAgPjxsYWJlbCBm
b3I9Im1ldGhvZGFuZGNhY2hlR0VUTk9DQUNIRSI+R0VUIChObyBDYWNoZSk8L2xhYmVsPgotICA8
aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJtZXRob2RhbmRjYWNoZSIKLSAgICAg
ICAgIGlkPSJtZXRob2RhbmRjYWNoZUdFVENBQ0hFIgotICAgICAgICAgdmFsdWU9IkdFVC1DQUNI
RSIKLSAgICAgICAgID48bGFiZWwgZm9yPSJtZXRob2RhbmRjYWNoZUdFVENBQ0hFIj5HRVQgKENh
Y2hlKTwvbGFiZWw+Ci0gIDxicj4KLSAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogODAlIj4oQ2Fj
aGUgY29udHJvbDogcmVjZWl2ZSBvbmx5LiBDYWNoZSBpcyB2YWxpZCBmb3IgMTAgc2Vjb25kcy4g
VGhpcyBjb25maWcgY29udHJvbHMgQ2FjaGUtY29udHJvbCBIVFRQIHJlc3BvbnNlIGhlYWRlci4g
QnJvd3NlcnMgbWlnaHQgbm90IGNhY2hlIGRhdGEgZS5nLiB3aGVuIGl0IGlzIGxhcmdlKTwvc3Bh
bj4KLTwvZm9ybT4KLQotPGRpdiBpZD0ibG9nX2RpdiI+Ci0gIDx0ZXh0YXJlYQotICAgICAgaWQ9
ImxvZyIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
LTwvZGl2PgotPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgotICBTdW1tYXJ5Ci0gIDx0ZXh0YXJlYQot
ICAgICAgaWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5
PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLQotPGRpdiBpZD0ibm90ZV9kaXYiPgotICBOb3RlOgotICA8
dWw+Ci0gICAgPGxpPkVmZmVjdCBvZiBSVFQgYW5kIHRpbWUgc3BlbnQgZm9yIEFycmF5QnVmZmVy
IGNyZWF0aW9uIGluIHJlY2VpdmUgYmVuY2htYXJrcyBhcmUgbm90IGVsaW1pbmF0ZWQuPC9saT4K
LSAgICA8bGk+VGhlIFN0ZGRldiBjb2x1bW4gc2hvd3MgTmFOIHdoZW4gdGhlIG51bWJlciBvZiBp
dGVyYXRpb25zIGlzIHNldCB0byAxLjwvbGk+Ci0gIDwvdWw+Ci08L2Rpdj4KLQotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1hcmsuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L2V4YW1wbGUveGhyX2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTRhOTdlOGZiODNlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1h
cmsuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTQg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotLy8gbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0vLyBodHRwczovL2RldmVsb3BlcnMu
Z29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQotdmFyIGlzV29ya2VyID0gdHlw
ZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiOwotCi1pZiAoaXNXb3JrZXIpIHsKLSAg
Ly8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRzKCd1dGlsLmpzJywgJ3V0aWxf
d29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9sZGluZyBnbG9iYWxzLgotdmFy
IGJlbmNobWFyayA9IHt9OwotYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSAwOwotCi12YXIgeGhy
cyA9IFtdOwotCi12YXIgdGltZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lBbGxYSFJz
KCkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB4aHJz
W2ldLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0gICAgLy8gQWJvcnQgWEhScyBpZiB0aGV5
IGFyZSBub3QgeWV0IERPTkUgc3RhdGUuCi0gICAgLy8gQ2FsbGluZyBhYm9ydCgpIGhlcmUgKGku
ZS4gaW4gb25yZWFkeXN0YXRlY2hhbmdlIGhhbmRsZXIpIAotICAgIC8vIGNhdXNlcyAiTmV0d29y
a0Vycm9yIiBtZXNzYWdlcyBpbiBEZXZUb29scyBpbiBzeW5jIG1vZGUsCi0gICAgLy8gZXZlbiBp
ZiBpdCBpcyBhZnRlciB0cmFuc2l0aW9uIHRvIERPTkUgc3RhdGUuCi0gICAgaWYgKHhocnNbaV0u
cmVhZHlTdGF0ZSAhPSBYTUxIdHRwUmVxdWVzdC5ET05FKQotICAgICAgeGhyc1tpXS5hYm9ydCgp
OwotICB9Ci0gIHhocnMgPSBbXTsKLSAgLy8gZ2MoKSBtaWdodCBiZSBuZWVkZWQgZm9yIENocm9t
ZS9CbG9iCi19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZpZywgaXNX
YXJtVXApIHsKLSAgdGltZXJJRCA9IG51bGw7Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PSBudWxsOwotICB2YXIgdG90YWxTaXplID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0K
LSAgdmFyIG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYg
KHRoaXMucmVhZHlTdGF0ZSAhPSB0aGlzLkRPTkUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAodGhpcy5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0Zh
aWxlZCAoc3RhdHVzPScgKyB0aGlzLnN0YXR1cyArICcpJyk7Ci0gICAgICBkZXN0cm95QWxsWEhS
cygpOwotICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmCi0gICAgICAgICF2ZXJpZnlBY2tub3dsZWRn
ZW1lbnQoY29uZmlnLCB0aGlzLnJlc3BvbnNlLCBzaXplKSkgewotICAgICAgZGVzdHJveUFsbFhI
UnMoKTsKLSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRv
dGFsU2l6ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChiZW5jaG1hcmsuc3Rh
cnRUaW1lSW5NcyA9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ3N0YXJ0VGltZUlu
TXMgbm90IHNldCcpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENoZWNrIGFuZCB3YXJu
IGlmIHByb3h5IGlzIGVuYWJsZWQuCi0gICAgaWYgKHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoJ1Zp
YScpICE9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1dBUk5JTkc6IHByb3h5IHNl
ZW1zIGVuYWJsZWQuJyk7Ci0gICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZp
Zywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKLSAgICAgICAgaXNX
YXJtVXApOwotCi0gICAgZGVzdHJveUFsbFhIUnMoKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZp
Zyk7Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtWEhSczsgKytpKSB7
Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyOwotICAgIHhocnMucHVzaCh4aHIp
OwotICB9Ci0KLSAgdmFyIGRhdGFBcnJheSA9IFtdOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwg
eGhycy5sZW5ndGg7ICsraSkgewotICAgIHZhciBkYXRhID0gbnVsbDsKLSAgICBpZiAoY29uZmln
LmRhdGFUeXBlID09ICdhcnJheWJ1ZmZlcicgfHwKLSAgICAgICAgY29uZmlnLmRhdGFUeXBlID09
ICdibG9iJykgewotICAgICAgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgICAg
ZmlsbEFycmF5QnVmZmVyKGRhdGEsIDB4NjEpOwotCi0gICAgICBpZiAoY29uZmlnLmRhdGFUeXBl
ID09ICdibG9iJykgewotICAgICAgICBkYXRhID0gbmV3IEJsb2IoW2RhdGFdKTsKLSAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgZGF0YSA9IHJlcGVhdFN0cmluZygnYScsIHNpemUpOwotICAg
IH0KLQotICAgIGRhdGFBcnJheS5wdXNoKGRhdGEpOwotICB9Ci0KLQotICBiZW5jaG1hcmsuc3Rh
cnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotICB0b3RhbFNpemUgPSBzaXplICogeGhycy5s
ZW5ndGg7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAg
dmFyIGRhdGEgPSBkYXRhQXJyYXlbaV07Ci0gICAgdmFyIHhociA9IHhocnNbaV07Ci0gICAgeGhy
Lm9wZW4oJ1BPU1QnLCBjb25maWcucHJlZml4VXJsICsgJ19zZW5kJywgY29uZmlnLmFzeW5jKTsK
LSAgICB4aHIuc2VuZChkYXRhKTsKLSAgfQotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJr
U3RlcChzaXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIGJl
bmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVsbDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZh
ciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZhciBjaGVja1Jlc3VsdEFuZENvbnRpbnVlID0gZnVu
Y3Rpb24gKGJ5dGVzUmVjZWl2ZWQsIHZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgIGlmICghdmVy
aWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlm
aWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICBjb25maWcu
bm90aWZ5QWJvcnQoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b3RhbFJlcGxpZWQg
Kz0gYnl0ZXNSZWNlaXZlZDsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PT0gbnVsbCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdzdGFydFRpbWVJbk1zIG5vdCBzZXQn
KTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmln
LCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAotICAgICAgICBpc1dh
cm1VcCk7Ci0KLSAgICBkZXN0cm95QWxsWEhScygpOwotCi0gICAgcnVuTmV4dFRhc2soY29uZmln
KTsKLSAgfQotCi0gIHZhciBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKCkg
ewotICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT0gdGhpcy5ET05FKSB7Ci0gICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKHRoaXMuc3RhdHVzICE9IDIwMCkgewotICAgICAgY29uZmlnLmFk
ZFRvTG9nKCdGYWlsZWQgKHN0YXR1cz0nICsgdGhpcy5zdGF0dXMgKyAnKScpOwotICAgICAgZGVz
dHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIENoZWNrIGFuZCB3YXJuIGlmIHByb3h5IGlzIGVuYWJsZWQuCi0g
ICAgaWYgKHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoJ1ZpYScpICE9PSBudWxsKSB7Ci0gICAgICBj
b25maWcuYWRkVG9Mb2coJ1dBUk5JTkc6IHByb3h5IHNlZW1zIGVuYWJsZWQuJyk7Ci0gICAgfQot
Ci0gICAgdmFyIGJ5dGVzUmVjZWl2ZWQgPSAtMTsKLSAgICBpZiAodGhpcy5yZXNwb25zZVR5cGUg
PT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2Uu
Ynl0ZUxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVzcG9uc2VUeXBlID09ICdibG9iJykg
ewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2Uuc2l6ZTsKLSAgICB9IGVsc2Ug
ewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2UubGVuZ3RoOwotICAgIH0KLSAg
ICBpZiAoYnl0ZXNSZWNlaXZlZCAhPSBzaXplKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0V4
cGVjdGVkICcgKyBzaXplICsKLSAgICAgICAgICAnQiBidXQgcmVjZWl2ZWQgJyArIGJ5dGVzUmVj
ZWl2ZWQgKyAnQicpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh0aGlzLnJlc3BvbnNl
VHlwZSA9PSAnYXJyYXlidWZmZXInKSB7Ci0gICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKGJ5
dGVzUmVjZWl2ZWQsCi0gICAgICAgICAgIWNvbmZpZy52ZXJpZnlEYXRhIHx8IHZlcmlmeUFycmF5
QnVmZmVyKHRoaXMucmVzcG9uc2UsIDB4NjEpKTsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVzcG9u
c2VUeXBlID09ICdibG9iJykgewotICAgICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhKQotICAgICAg
ICB2ZXJpZnlCbG9iKGNvbmZpZywgdGhpcy5yZXNwb25zZSwgMHg2MSwgY2hlY2tSZXN1bHRBbmRD
b250aW51ZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGNoZWNrUmVzdWx0QW5kQ29udGludWUoYnl0
ZXNSZWNlaXZlZCwgdHJ1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNoZWNrUmVzdWx0QW5kQ29u
dGludWUoCi0gICAgICAgICAgYnl0ZXNSZWNlaXZlZCwKLSAgICAgICAgICAhY29uZmlnLnZlcmlm
eURhdGEgfHwKLSAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZSA9PSByZXBlYXRTdHJpbmcoJ2En
LCB0aGlzLnJlc3BvbnNlLmxlbmd0aCkpOwotICAgIH0KLSAgfTsKLQotICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvbmZpZy5udW1YSFJzOyArK2kpIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVhZHlTdGF0ZUNoYW5n
ZUhhbmRsZXI7Ci0gICAgeGhycy5wdXNoKHhocik7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotICB0b3RhbFNpemUgPSBzaXplICogeGhycy5sZW5n
dGg7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFy
IHhociA9IHhocnNbaV07Ci0gICAgaWYgKGNvbmZpZy5tZXRob2RBbmRDYWNoZSA9PT0gJ0dFVC1O
T0NBQ0hFJykgewotICAgICAgeGhyLm9wZW4oJ0dFVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAnX3Jl
Y2VpdmVfZ2V0bm9jYWNoZT8nICsgc2l6ZSwKLSAgICAgICAgICBjb25maWcuYXN5bmMpOwotICAg
ICAgeGhyLnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTsKLSAgICAgIHhoci5zZW5kKCk7
Ci0gICAgfSBlbHNlIGlmIChjb25maWcubWV0aG9kQW5kQ2FjaGUgPT09ICdHRVQtQ0FDSEUnKSB7
Ci0gICAgICB4aHIub3BlbignR0VUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRj
YWNoZT8nICsgc2l6ZSwKLSAgICAgICAgICBjb25maWcuYXN5bmMpOwotICAgICAgeGhyLnJlc3Bv
bnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTsKLSAgICAgIHhoci5zZW5kKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZScs
IGNvbmZpZy5hc3luYyk7Ci0gICAgICB4aHIucmVzcG9uc2VUeXBlID0gY29uZmlnLmRhdGFUeXBl
OwotICAgICAgeGhyLnNlbmQoc2l6ZSArICcgbm9uZScpOwotICAgIH0KLSAgfQotfQotCi0KLWZ1
bmN0aW9uIGdldENvbmZpZ1N0cmluZyhjb25maWcpIHsKLSAgcmV0dXJuICcoJyArIGNvbmZpZy5k
YXRhVHlwZSArCi0gICAgJywgdmVyaWZ5RGF0YT0nICsgY29uZmlnLnZlcmlmeURhdGEgKwotICAg
ICcsICcgKyAoaXNXb3JrZXIgPyAnV29ya2VyJyA6ICdNYWluJykgKwotICAgICcsICcgKyAoY29u
ZmlnLmFzeW5jID8gJ0FzeW5jJyA6ICdTeW5jJykgKwotICAgICcsIG51bVhIUnM9JyArIGNvbmZp
Zy5udW1YSFJzICsKLSAgICAnLCBudW1JdGVyYXRpb25zPScgKyBjb25maWcubnVtSXRlcmF0aW9u
cyArCi0gICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJh
dGlvbnMgKwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7
Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFhIUnMoKTsKLQotICBydW5O
ZXh0VGFzayhjb25maWcpOwotfQotCi1mdW5jdGlvbiBiYXRjaEJlbmNobWFyayhvcmlnaW5hbENv
bmZpZykgewotICBvcmlnaW5hbENvbmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0K
LSAgdGFza3MgPSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotCi0gIHZhciBkYXRhVHlwZXMg
PSBbJ3RleHQnLCAnYmxvYicsICdhcnJheWJ1ZmZlciddOwotICB2YXIgc3RlcEZ1bmNzID0gW3Nl
bmRCZW5jaG1hcmtTdGVwLCByZWNlaXZlQmVuY2htYXJrU3RlcF07Ci0gIHZhciBuYW1lcyA9IFsn
U2VuZCcsICdSZWNlaXZlJ107Ci0gIHZhciBhc3luYyA9IFt0cnVlLCBmYWxzZV07Ci0gIGZvciAo
dmFyIGkgPSAwOyBpIDwgc3RlcEZ1bmNzLmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9
IDA7IGogPCBkYXRhVHlwZXMubGVuZ3RoOyArK2opIHsKLSAgICAgIGZvciAodmFyIGsgPSAwOyBr
IDwgYXN5bmMubGVuZ3RoOyArK2spIHsKLSAgICAgICAgdmFyIGNvbmZpZyA9IGNsb25lQ29uZmln
KG9yaWdpbmFsQ29uZmlnKTsKLSAgICAgICAgY29uZmlnLmRhdGFUeXBlID0gZGF0YVR5cGVzW2pd
OwotICAgICAgICBjb25maWcuYXN5bmMgPSBhc3luY1trXTsKLQotICAgICAgICAvLyBSZWNlaXZl
ICYmIE5vbi1Xb3JrZXIgJiYgU3luYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzcGVjCi0gICAg
ICAgIGlmIChzdGVwRnVuY3NbaV0gPT09IHJlY2VpdmVCZW5jaG1hcmtTdGVwICYmICFpc1dvcmtl
ciAmJgotICAgICAgICAgICAgIWNvbmZpZy5hc3luYykKLSAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBhZGRUYXNrcyhjb25maWcsIHN0ZXBGdW5jc1tpXSk7Ci0gICAgICAgIGFkZFJlc3Vs
dFJlcG9ydGluZ1Rhc2soY29uZmlnLAotICAgICAgICAgICAgbmFtZXNbaV0gKyAnIGJlbmNobWFy
ayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0g
IHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXAoKSB7Ci19CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3hocl9ldmVudF9sb2dnZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTBkYjBmYmVjNDk0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9ldmVudF9s
b2dnZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi08IS0tCi1Db3B5cmln
aHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi1Vc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci1odHRwczovL2RldmVsb3BlcnMuZ29v
Z2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLS0tPgotCi08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPlhIUiBldmVudCBsb2dnZXI8L3RpdGxlPgotPHNjcmlwdCBzcmM9InV0aWxfbWFpbi5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotdmFyIGV2ZW50cyA9IFtdOwotdmFyIHN0YXJ0VGltZSA9
IDA7Ci0KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgZXZlbnRzID0gW107Ci0gIHN0YXJ0VGltZSA9IERh
dGUubm93KCk7Ci0KLSAgZnVuY3Rpb24gcHVzaFRvTG9nKHR5cGUpIHsKLSAgICB2YXIgdGltZSA9
IERhdGUubm93KCk7Ci0gICAgaWYgKGV2ZW50cy5sZW5ndGggIT0gMCAmJiB0eXBlID09PSBldmVu
dHNbZXZlbnRzLmxlbmd0aCAtIDFdLnR5cGUpIHsKLSAgICAgIGV2ZW50c1tldmVudHMubGVuZ3Ro
IC0gMV0uY291bnQgKz0gMTsKLSAgICAgIGV2ZW50c1tldmVudHMubGVuZ3RoIC0gMV0ubGFzdCA9
IHRpbWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGV2ZW50cy5wdXNoKHt0eXBlOiB0eXBlLCBjb3Vu
dDogMSwgZmlyc3Q6IHRpbWUsIGxhc3Q6IHRpbWV9KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NFdmVudER1
bXAoZSkgewotICAgIHJldHVybiAnKCcgKyBlLmxlbmd0aENvbXB1dGFibGUgKyAnLCAnICsgZS5s
b2FkZWQgKyAnLCAnICsgZS50b3RhbCArICcpJzsKLSAgfQotCi0gIHZhciBkdW1wUHJvZ3Jlc3NF
dmVudCA9IGdldEJvb2xGcm9tQ2hlY2tCb3goJ2R1bXBwcm9ncmVzc2V2ZW50Jyk7Ci0KLSAgZnVu
Y3Rpb24gbG9nKGUpIHsKLSAgICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAodHlwZSA9PT0g
J3JlYWR5c3RhdGVjaGFuZ2UnKSB7Ci0gICAgICB0eXBlICs9IGUudGFyZ2V0LnJlYWR5U3RhdGU7
Ci0gICAgfQotICAgIGlmIChkdW1wUHJvZ3Jlc3NFdmVudCAmJiAoZSBpbnN0YW5jZW9mIFByb2dy
ZXNzRXZlbnQpKSB7Ci0gICAgICB0eXBlICs9IGdldFByb2dyZXNzRXZlbnREdW1wKGUpOwotICAg
IH0KLSAgICBwdXNoVG9Mb2codHlwZSk7Ci0gIH07Ci0KLSAgZnVuY3Rpb24gbG9nVXBsb2FkKGUp
IHsKLSAgICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAoZHVtcFByb2dyZXNzRXZlbnQgJiYg
KGUgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSkgewotICAgICAgdHlwZSArPSBnZXRQcm9ncmVz
c0V2ZW50RHVtcChlKTsKLSAgICB9Ci0gICAgcHVzaFRvTG9nKCd1cGxvYWQnICsgdHlwZSk7Ci0g
IH0KLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgndXBsb2FkJykpIHsKLSAgICB2YXIgdXBs
b2FkID0geGhyLnVwbG9hZDsKLSAgICB1cGxvYWQub25sb2Fkc3RhcnQgPSBsb2dVcGxvYWQ7Ci0g
ICAgdXBsb2FkLm9ucHJvZ3Jlc3MgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uYWJvcnQgPSBs
b2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uZXJyb3IgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9u
bG9hZCA9IGxvZ1VwbG9hZDsKLSAgICB1cGxvYWQub250aW1lb3V0ID0gbG9nVXBsb2FkOwotICAg
IHVwbG9hZC5vbmxvYWRlbmQgPSBsb2dVcGxvYWQ7Ci0gIH0KLQotICB4aHIub25yZWFkeXN0YXRl
Y2hhbmdlID0gbG9nOwotICB4aHIub25sb2Fkc3RhcnQgPSBsb2c7Ci0gIHhoci5vbnByb2dyZXNz
ID0gbG9nOwotICB4aHIub25hYm9ydCA9IGxvZzsKLSAgeGhyLm9uZXJyb3IgPSBsb2c7Ci0gIHho
ci5vbmxvYWQgPSBsb2c7Ci0gIHhoci5vbnRpbWVvdXQgPSBsb2c7Ci0gIHhoci5vbmxvYWRlbmQg
PSBsb2c7Ci0KLSAgeGhyLm9wZW4oJ1BPU1QnLCAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFk
MjFjMjQ1X3JlY2VpdmUnLAotICAgICAgICAgICBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycp
KTsKLSAgdmFyIHNpemUgPSBnZXRJbnRGcm9tSW5wdXQoJ3NpemUnKTsKLSAgdmFyIGNodW5rZWRN
b2RlID0gJ25vbmUnOwotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnY2h1bmtlZHJlc3BvbnNl
JykpIHsKLSAgICBjaHVua2VkTW9kZSA9ICdjaHVua2VkJzsKLSAgfQotICB4aHIuc2VuZChzaXpl
ICsgJyAnICsgY2h1bmtlZE1vZGUpOwotfQotCi1mdW5jdGlvbiBwcmludCgpIHsKLSAgdmFyIHJl
c3VsdCA9ICcnOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7ICsraSkgewot
ICAgIHZhciBldmVudCA9IGV2ZW50c1tpXTsKLSAgICB2YXIgbGluZSA9ICcnOwotICAgIGxpbmUg
Kz0gKGV2ZW50LmZpcnN0IC0gc3RhcnRUaW1lKSArICJtcyI7Ci0gICAgaWYgKGV2ZW50LmNvdW50
ID4gMSkKLSAgICAgIGxpbmUgKz0gIi0iICsgKGV2ZW50Lmxhc3QgLSBzdGFydFRpbWUpICsgIm1z
IjsKLSAgICBlbHNlCi0gICAgICBsaW5lICs9ICIgICAgICAgICI7Ci0gICAgd2hpbGUobGluZS5s
ZW5ndGggPCAxNSkKLSAgICAgIGxpbmUgKz0gIiAiOwotICAgIGxpbmUgKz0gIjogIiArIGV2ZW50
LnR5cGUgKyAnICogJyArIGV2ZW50LmNvdW50ICsgJ1xuJzsKLSAgICByZXN1bHQgKz0gbGluZTsK
LSAgfQotICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudmFsdWUgPSByZXN1bHQ7Ci19
Ci08L3NjcmlwdD4KLQotPGJvZHk+Ci0gIDx0ZXh0YXJlYSBpZD0ibG9nIiByb3dzPSIxMCIgY29s
cz0iNzAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci0gIDxici8+Ci0gIFNpemU6IDxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0ic2l6ZSIgdmFsdWU9IjY1NTM2Ij48YnIvPgotICA8aW5wdXQgdHlwZT0iY2hl
Y2tib3giIGlkPSJjaHVua2VkcmVzcG9uc2UiPgotICA8bGFiZWwgZm9yPSJjaHVua2VkcmVzcG9u
c2UiPlVzZSBDaHVua2VkIFQtRSBmb3IgcmVzcG9uc2U8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9InVwbG9hZCI+Ci0gIDxsYWJlbCBmb3I9InVwbG9hZCI+VXBsb2Fk
IHByb2dyZXNzPC9sYWJlbD48YnIvPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJkdW1w
cHJvZ3Jlc3NldmVudCI+Ci0gIDxsYWJlbCBmb3I9ImR1bXBwcm9ncmVzc2V2ZW50Ij4KLSAgICBE
dW1wIGxlbmd0aENvbXB1dGFibGUvbG9hZGVkL3RvdGFsPC9sYWJlbD48YnIvPgotICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJhc3luYyIgY2hlY2tlZD4KLSAgPGxhYmVsIGZvcj0iYXN5bmMi
PkFzeW5jPC9sYWJlbD48YnIvPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJydW4o
KSIgdmFsdWU9IlJ1biBYSFIiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJwcmlu
dCgpIiB2YWx1ZT0iUHJpbnQgbG9nIj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS94aHJfcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS94aHJfcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWIwMmM5ZWE1NmY2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3ho
cl9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJ4aHJfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOTMzYTIy
MDQ1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IldlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlci4KLQotbW9kX3B5d2Vi
c29ja2V0IGlzIGEgV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVyCi1p
bnRlbmRlZCBmb3IgdGVzdGluZyBvciBleHBlcmltZW50YWwgcHVycG9zZXMuIG1vZF9weXRob24g
aXMgcmVxdWlyZWQuCi0KLQotSW5zdGFsbGF0aW9uCi09PT09PT09PT09PT0KLQotMC4gUHJlcGFy
ZSBhbiBBcGFjaGUgSFRUUCBTZXJ2ZXIgZm9yIHdoaWNoIG1vZF9weXRob24gaXMgZW5hYmxlZC4K
LQotMS4gU3BlY2lmeSB0aGUgZm9sbG93aW5nIEFwYWNoZSBIVFRQIFNlcnZlciBkaXJlY3RpdmVz
IHRvIHN1aXQgeW91cgotICAgY29uZmlndXJhdGlvbi4KLQotICAgSWYgbW9kX3B5d2Vic29ja2V0
IGlzIG5vdCBpbiB0aGUgUHl0aG9uIHBhdGgsIHNwZWNpZnkgdGhlIGZvbGxvd2luZy4KLSAgIDx3
ZWJzb2NrX2xpYj4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSBtb2RfcHl3ZWJzb2NrZXQgaXMgaW5z
dGFsbGVkLgotCi0gICAgICAgUHl0aG9uUGF0aCAic3lzLnBhdGgrWyc8d2Vic29ja19saWI+J10i
Ci0KLSAgIEFsd2F5cyBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcuIDx3ZWJzb2NrX2hhbmRsZXJzPiBp
cyB0aGUgZGlyZWN0b3J5IHdoZXJlCi0gICB1c2VyLXdyaXR0ZW4gV2ViU29ja2V0IGhhbmRsZXJz
IGFyZSBwbGFjZWQuCi0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRs
ZXJfcm9vdCA8d2Vic29ja19oYW5kbGVycz4KLSAgICAgICBQeXRob25IZWFkZXJQYXJzZXJIYW5k
bGVyIG1vZF9weXdlYnNvY2tldC5oZWFkZXJwYXJzZXJoYW5kbGVyCi0KLSAgIFRvIGxpbWl0IHRo
ZSBzZWFyY2ggZm9yIFdlYlNvY2tldCBoYW5kbGVycyB0byBhIGRpcmVjdG9yeSA8c2Nhbl9kaXI+
Ci0gICB1bmRlciA8d2Vic29ja19oYW5kbGVycz4sIGNvbmZpZ3VyZSBhcyBmb2xsb3dzOgotCi0g
ICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gPHNjYW5fZGly
PgotCi0gICA8c2Nhbl9kaXI+IGlzIHVzZWZ1bCBpbiBzYXZpbmcgc2NhbiB0aW1lIHdoZW4gPHdl
YnNvY2tfaGFuZGxlcnM+Ci0gICBjb250YWlucyBtYW55IG5vbi1XZWJTb2NrZXQgaGFuZGxlciBm
aWxlcy4KLQotICAgSWYgeW91IHdhbnQgdG8gYWxsb3cgaGFuZGxlcnMgd2hvc2UgY2Fub25pY2Fs
IHBhdGggaXMgbm90IHVuZGVyIHRoZSByb290Ci0gICBkaXJlY3RvcnkgKGkuZS4gc3ltYm9saWMg
bGluayBpcyBpbiByb290IGRpcmVjdG9yeSBidXQgaXRzIHRhcmdldCBpcyBub3QpLAotICAgY29u
ZmlndXJlIGFzIGZvbGxvd3M6Ci0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0
LmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIgT24KLQotICAgRXhhbXBsZSBzbmlwcGV0
IG9mIGh0dHBkLmNvbmY6Ci0gICAobW9kX3B5d2Vic29ja2V0IGlzIGluIC93ZWJzb2NrX2xpYiwg
V2ViU29ja2V0IGhhbmRsZXJzIGFyZSBpbgotICAgL3dlYnNvY2tfaGFuZGxlcnMsIHBvcnQgaXMg
ODAgZm9yIHdzLCA0NDMgZm9yIHdzcy4pCi0KLSAgICAgICA8SWZNb2R1bGUgcHl0aG9uX21vZHVs
ZT4KLSAgICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1snL3dlYnNvY2tfbGliJ10iCi0gICAg
ICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfcm9vdCAvd2Vic29ja19o
YW5kbGVycwotICAgICAgICAgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2Nr
ZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICAgICAgIDwvSWZNb2R1bGU+Ci0KLTIuIFR1bmUgQXBh
Y2hlIHBhcmFtZXRlcnMgZm9yIHNlcnZpbmcgV2ViU29ja2V0LiBXZSdkIGxpa2UgdG8gbm90ZSB0
aGF0IGF0Ci0gICBsZWFzdCBUaW1lT3V0IGRpcmVjdGl2ZSBmcm9tIGNvcmUgZmVhdHVyZXMgYW5k
IFJlcXVlc3RSZWFkVGltZW91dAotICAgZGlyZWN0aXZlIGZyb20gbW9kX3JlcXRpbWVvdXQgc2hv
dWxkIGJlIG1vZGlmaWVkIG5vdCB0byBraWxsIGNvbm5lY3Rpb25zCi0gICBpbiBvbmx5IGEgZmV3
IHNlY29uZHMgb2YgaWRsZSB0aW1lLgotCi0zLiBWZXJpZnkgaW5zdGFsbGF0aW9uLiBZb3UgY2Fu
IHVzZSBleGFtcGxlL2NvbnNvbGUuaHRtbCB0byBwb2tlIHRoZSBzZXJ2ZXIuCi0KLQotV3JpdGlu
ZyBXZWJTb2NrZXQgaGFuZGxlcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVdoZW4g
YSBXZWJTb2NrZXQgcmVxdWVzdCBjb21lcyBpbiwgdGhlIHJlc291cmNlIG5hbWUKLXNwZWNpZmll
ZCBpbiB0aGUgaGFuZHNoYWtlIGlzIGNvbnNpZGVyZWQgYXMgaWYgaXQgaXMgYSBmaWxlIHBhdGgg
dW5kZXIKLTx3ZWJzb2NrX2hhbmRsZXJzPiBhbmQgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgotPHdl
YnNvY2tfaGFuZGxlcnM+LzxyZXNvdXJjZV9uYW1lPl93c2gucHkgaXMgaW52b2tlZC4KLQotRm9y
IGV4YW1wbGUsIGlmIHRoZSByZXNvdXJjZSBuYW1lIGlzIC9leGFtcGxlL2NoYXQsIHRoZSBoYW5k
bGVyIGRlZmluZWQgaW4KLTx3ZWJzb2NrX2hhbmRsZXJzPi9leGFtcGxlL2NoYXRfd3NoLnB5IGlz
IGludm9rZWQuCi0KLUEgV2ViU29ja2V0IGhhbmRsZXIgaXMgY29tcG9zZWQgb2YgdGhlIGZvbGxv
d2luZyB0aHJlZSBmdW5jdGlvbnM6Ci0KLSAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KQotICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIHdl
Yl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi13aGVyZToKLSAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLXdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGhhbmRzaGFrZSBhZnRlciB0aGUKLWhlYWRlcnMg
YXJlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgYW5kIFdlYlNvY2tldCBwcm9wZXJ0aWVzICh3c19sb2Nh
dGlvbiwKLXdzX29yaWdpbiwgYW5kIHdzX3Jlc291cmNlKSBhcmUgYWRkZWQgdG8gcmVxdWVzdC4g
QSBoYW5kbGVyCi1jYW4gcmVqZWN0IHRoZSByZXF1ZXN0IGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9u
LgotCi1BIHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhhdCB5
b3UgY2FuIHVzZSBkdXJpbmcgdGhlCi1leHRyYSBoYW5kc2hha2UgKHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKToKLS0gd3NfcmVzb3VyY2UKLS0gd3Nfb3JpZ2luCi0tIHdzX3ZlcnNpb24K
LS0gd3NfbG9jYXRpb24gKEh5QmkgMDAgb25seSkKLS0gd3NfZXh0ZW5zaW9ucyAoSHlCaSAwNiBh
bmQgbGF0ZXIpCi0tIHdzX2RlZmxhdGUgKEh5QmkgMDYgYW5kIGxhdGVyKQotLSB3c19wcm90b2Nv
bAotLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIChIeUJpIDA2IGFuZCBsYXRlcikKLQotVGhlIGxh
c3QgdHdvIGFyZSBhIGJpdCB0cmlja3kuIFNlZSB0aGUgbmV4dCBzdWJzZWN0aW9uLgotCi0KLVN1
YnByb3RvY29sIE5lZ290aWF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Gb3IgSHlC
aSAwNiBhbmQgbGF0ZXIsIHdzX3Byb3RvY29sIGlzIGFsd2F5cyBzZXQgdG8gTm9uZSB3aGVuCi13
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQuIElmIHdzX3JlcXVlc3RlZF9w
cm90b2NvbHMgaXMgbm90Ci1Ob25lLCB5b3UgbXVzdCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZy
b20gdGhpcyBsaXN0IGFuZCBzZXQgaXQgdG8KLXdzX3Byb3RvY29sLgotCi1Gb3IgSHlCaSAwMCwg
d2hlbiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQsCi13c19wcm90b2Nv
bCBpcyBzZXQgdG8gdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBjbGllbnQgaW4KLVNlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wgaGVhZGVyIG9yIE5vbmUgaWYKLXN1Y2ggaGVhZGVyIHdhcyBub3QgZm91bmQg
aW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QuIEZpbmlzaCBleHRyYQotaGFuZHNoYWtl
IHdpdGggd3NfcHJvdG9jb2wgdW50b3VjaGVkIHRvIGFjY2VwdCB0aGUgcmVxdWVzdCBzdWJwcm90
b2NvbC4KLVRoZW4sIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVhZGVyIHdpbGwgYmUgc2VudCB0
bwotdGhlIGNsaWVudCBpbiByZXNwb25zZSB3aXRoIHRoZSBzYW1lIHZhbHVlIGFzIHJlcXVlc3Rl
ZC4gUmFpc2UgYW4gZXhjZXB0aW9uCi1pbiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSB0
byByZWplY3QgdGhlIHJlcXVlc3RlZCBzdWJwcm90b2NvbC4KLQotCi1EYXRhIFRyYW5zZmVyCi0t
LS0tLS0tLS0tLS0tCi0KLXdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBpcyBjYWxsZWQgYWZ0ZXIg
dGhlIGhhbmRzaGFrZSBjb21wbGV0ZWQKLXN1Y2Nlc3NmdWxseS4gQSBoYW5kbGVyIGNhbiByZWNl
aXZlL3NlbmQgbWVzc2FnZXMgZnJvbS90byB0aGUgY2xpZW50Ci11c2luZyByZXF1ZXN0LiBtb2Rf
cHl3ZWJzb2NrZXQubXNndXRpbCBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0aWVzCi1mb3IgZGF0YSB0
cmFuc2Zlci4KLQotWW91IGNhbiByZWNlaXZlIGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0
YXRlbWVudC4KLQotICAgIG1lc3NhZ2UgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3Nh
Z2UoKQotCi1UaGlzIGNhbGwgYmxvY2tzIHVudGlsIGFueSBjb21wbGV0ZSB0ZXh0IGZyYW1lIGFy
cml2ZXMsIGFuZCB0aGUgcGF5bG9hZCBkYXRhCi1vZiB0aGUgaW5jb21pbmcgZnJhbWUgd2lsbCBi
ZSBzdG9yZWQgaW50byBtZXNzYWdlLiBXaGVuIHlvdSdyZSB1c2luZyBJRVRGCi1IeUJpIDAwIG9y
IGxhdGVyIHByb3RvY29sLCByZWNlaXZlX21lc3NhZ2UoKSB3aWxsIHJldHVybiBOb25lIG9uIHJl
Y2VpdmluZwotY2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZS4gV2hlbiBhbnkgZXJy
b3Igb2NjdXJzLCByZWNlaXZlX21lc3NhZ2UoKQotd2lsbCByYWlzZSBzb21lIGV4Y2VwdGlvbi4K
LQotWW91IGNhbiBzZW5kIGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudC4KLQot
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShtZXNzYWdlKQotCi0KLUNsb3Npbmcg
Q29ubmVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUV4ZWN1dGluZyB0aGUgZm9sbG93aW5n
IHN0YXRlbWVudCBvciBqdXN0IHJldHVybi1pbmcgZnJvbQotd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhIGNhdXNlIGNvbm5lY3Rpb24gY2xvc2UuCi0KLSAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9z
ZV9jb25uZWN0aW9uKCkKLQotY2xvc2VfY29ubmVjdGlvbiB3aWxsIHdhaXQKLWZvciBjbG9zaW5n
IGhhbmRzaGFrZSBhY2tub3dsZWRnZW1lbnQgY29taW5nIGZyb20gdGhlIGNsaWVudC4gV2hlbiBp
dAotY291bGRuJ3QgcmVjZWl2ZSBhIHZhbGlkIGFja25vd2xlZGdlbWVudCwgcmFpc2VzIGFuIGV4
Y2VwdGlvbi4KLQotd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlIGlzIGNhbGxl
ZCBhZnRlciB0aGUgc2VydmVyIHJlY2VpdmVzCi1pbmNvbWluZyBjbG9zaW5nIGZyYW1lIGZyb20g
dGhlIGNsaWVudCBwZWVyIGltbWVkaWF0ZWx5LiBZb3UgY2FuIHNwZWNpZnkKLWNvZGUgYW5kIHJl
YXNvbiBieSByZXR1cm4gdmFsdWVzLiBUaGV5IGFyZSBzZW50IGFzIGEgb3V0Z29pbmcgY2xvc2lu
ZyBmcmFtZQotZnJvbSB0aGUgc2VydmVyLiBBIHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93
aW5nIHByb3BlcnRpZXMgdGhhdCB5b3UgY2FuCi11c2UgaW4gd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlLgotLSB3c19jbG9zZV9jb2RlCi0tIHdzX2Nsb3NlX3JlYXNvbgotCi0K
LVRocmVhZGluZwotLS0tLS0tLS0tCi0KLUEgV2ViU29ja2V0IGhhbmRsZXIgbXVzdCBiZSB0aHJl
YWQtc2FmZSBpZiB0aGUgc2VydmVyIChBcGFjaGUgb3IKLXN0YW5kYWxvbmUucHkpIGlzIGNvbmZp
Z3VyZWQgdG8gdXNlIHRocmVhZHMuCi0KLQotQ29uZmlndXJpbmcgV2ViU29ja2V0IEV4dGVuc2lv
biBQcm9jZXNzb3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotU2VlIGV4dGVuc2lvbnMucHkgZm9yIHN1cHBvcnRlZCBXZWJTb2NrZXQgZXh0ZW5zaW9ucy4g
Tm90ZSB0aGF0IHRoZXkgYXJlCi11bnN0YWJsZSBhbmQgdGhlaXIgQVBJcyBhcmUgc3ViamVjdCB0
byBjaGFuZ2Ugc3Vic3RhbnRpYWxseS4KLQotQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlc2UgZXh0
ZW5zaW9uIHByb2Nlc3NpbmcgcmVsYXRlZCBhdHRyaWJ1dGVzLgotCi0tIHdzX3JlcXVlc3RlZF9l
eHRlbnNpb25zOgotCi0gIEEgbGlzdCBvZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3Rh
bmNlcyByZXByZXNlbnRpbmcgZXh0ZW5zaW9uCi0gIHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSB0
aGUgY2xpZW50IGluIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgWW91IHNob3Vs
ZG4ndCBtb2RpZnkgaXQgbWFudWFsbHkuCi0KLS0gd3NfZXh0ZW5zaW9uczoKLQotICBBIGxpc3Qg
b2YgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVu
c2lvbgotICBwYXJhbWV0ZXJzIHRvIHNlbmQgYmFjayB0byB0aGUgY2xpZW50IGluIHRoZSBzZXJ2
ZXIncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgWW91IHNob3VsZG4ndCB0b3VjaCBpdCBkaXJlY3Rs
eS4gSW5zdGVhZCwgY2FsbCBtZXRob2RzIG9uIGV4dGVuc2lvbgotICBwcm9jZXNzb3JzLgotCi0t
IHdzX2V4dGVuc2lvbl9wcm9jZXNzb3JzOgotCi0gIEEgbGlzdCBvZiBsb2FkZWQgZXh0ZW5zaW9u
IHByb2Nlc3NvcnMuIEZpbmQgdGhlIHByb2Nlc3NvciBmb3IgdGhlCi0gIGV4dGVuc2lvbiB5b3Ug
d2FudCB0byBjb25maWd1cmUgZnJvbSBpdCwgYW5kIGNhbGwgaXRzIG1ldGhvZHMuCi0iIiIKLQot
Ci0jIHZpOnN0cz00IHN3PTQgZXQgdHc9NzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L19zdHJlYW1fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhMTI1NGFlNmQwLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTgxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkJhc2Ugc3RyZWFt
IGNsYXNzLgotIiIiCi0KLQotIyBOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBh
cmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKLSMgbW9kX3B5dGhvbiBkb2N1bWVu
dCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KLSMgaGFu
ZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1w
bGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBk
b24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVzCi0jIHdyaXRpbmcvcmVhZGluZy4KLQotCi1pbXBv
cnQgc29ja2V0Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotIyBFeGNl
cHRpb25zCi0KLQotY2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9u
KToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlv
biBpcyB0ZXJtaW5hdGVkCi0gICAgdW5leHBlY3RlZGx5LgotICAgICIiIgotCi0gICAgcGFzcwot
Ci0KLWNsYXNzIEludmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNl
aXZlZCBhbiBpbnZhbGlkIGZyYW1lIHdlCi0gICAgY2Fubm90IHBhcnNlLgotICAgICIiIgotCi0g
ICAgcGFzcwotCi0KLWNsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAg
ICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMg
Y2FsbGVkIG9uCi0gICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21l
c3NhZ2UoKSBpcyBjYWxsZWQgb24KLSAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgot
ICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24o
RXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdl
IHJlY2VpdmUgYSBmcmFtZSB3aXRoIGZsYWcsIG9wY29kZQotICAgIHdlIGNhbm5vdCBoYW5kbGUu
IEhhbmRsZXJzIGNhbiBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCi0g
ICAgY2FsbCByZWNlaXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRo
ZSBuZXh0IGZyYW1lLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEludmFsaWRVVEY4
RXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlz
ZWQgd2hlbiB3ZSByZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAotICAgIGNvbnRhaW5zIGludmFs
aWQgVVRGLTggc3RyaW5ncy4KLSAgICAiIiIKLQotICAgIHBhc3MKLQotCi1jbGFzcyBTdHJlYW1C
YXNlKG9iamVjdCk6Ci0gICAgIiIiQmFzZSBzdHJlYW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0
LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotCi0gICAgZGVm
IF9yZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJlYWRzIGxlbmd0aCBieXRlcyBmcm9t
IGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55IGV4Y2VwdGlvbiwKLSAgICAgICAgcHJl
cGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGFuZCByYWlzZSBh
Z2Fpbi4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIK
LQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZWFkX2J5dGVzID0gc2VsZi5fcmVxdWVzdC5j
b25uZWN0aW9uLnJlYWQobGVuZ3RoKQotICAgICAgICAgICAgaWYgbm90IHJlYWRfYnl0ZXM6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIFBlZXIgKCVyKSBjbG9z
ZWQgY29ubmVjdGlvbicgJQotICAgICAgICAgICAgICAgICAgICAobGVuZ3RoLCAoc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCkpKQotICAgICAgICAgICAgcmV0dXJuIHJlYWRf
Ynl0ZXMKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgotICAgICAgICAgICAgIyBD
YXRjaCBhIHNvY2tldC5lcnJvci4gQmVjYXVzZSBpdCdzIG5vdCBhIGNoaWxkIGNsYXNzIG9mIHRo
ZQotICAgICAgICAgICAgIyBJT0Vycm9yIHByaW9yIHRvIFB5dGhvbiAyLjYsIHdlIGNhbm5vdCBv
bWl0IHRoaXMgZXhjZXB0IGNsYXVzZS4KLSAgICAgICAgICAgICMgVXNlICVzIHJhdGhlciB0aGFu
ICVyIGZvciB0aGUgZXhjZXB0aW9uIHRvIHVzZSBodW1hbiBmcmllbmRseQotICAgICAgICAgICAg
IyBmb3JtYXQuCi0gICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBzb2NrZXQuZXJy
b3IgKCVzKSBvY2N1cnJlZCcgJQotICAgICAgICAgICAgICAgIChsZW5ndGgsIGUpKQotICAgICAg
ICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgIyBBbHNvIGNhdGNoIGFuIElPRXJy
b3IgYmVjYXVzZSBtb2RfcHl0aG9uIHRocm93cyBpdC4KLSAgICAgICAgICAgIHJhaXNlIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQg
Ynl0ZSBmYWlsZWQuIElPRXJyb3IgKCVzKSBvY2N1cnJlZCcgJQotICAgICAgICAgICAgICAgIChs
ZW5ndGgsIGUpKQotCi0gICAgZGVmIF93cml0ZShzZWxmLCBieXRlc190b193cml0ZSk6Ci0gICAg
ICAgICIiIldyaXRlcyBnaXZlbiBieXRlcyB0byBjb25uZWN0aW9uLiBJbiBjYXNlIHdlIGNhdGNo
IGFueSBleGNlcHRpb24sCi0gICAgICAgIHByZXBlbmRzIHJlbW90ZSBhZGRyZXNzIHRvIHRoZSBl
eGNlcHRpb24gbWVzc2FnZSBhbmQgcmFpc2UgYWdhaW4uCi0gICAgICAgICIiIgotCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShieXRlc190
b193cml0ZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgdXRp
bC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFp
bGVkIHRvIHNlbmQgbWVzc2FnZSB0byAlcjogJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1vdGVfYWRkciwpLAotICAgICAgICAgICAg
ICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiByZWNlaXZlX2J5dGVzKHNl
bGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJlY2VpdmVzIG11bHRpcGxlIGJ5dGVzLiBSZXRyaWVz
IHJlYWQgd2hlbiB3ZSBjb3VsZG4ndCByZWNlaXZlIHRoZQotICAgICAgICBzcGVjaWZpZWQgYW1v
dW50LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVk
RXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIHJlYWRfYnl0ZXMgPSBbXQotICAgICAgICB3aGlsZSBsZW5ndGggPiAwOgotICAg
ICAgICAgICAgbmV3X3JlYWRfYnl0ZXMgPSBzZWxmLl9yZWFkKGxlbmd0aCkKLSAgICAgICAgICAg
IHJlYWRfYnl0ZXMuYXBwZW5kKG5ld19yZWFkX2J5dGVzKQotICAgICAgICAgICAgbGVuZ3RoIC09
IGxlbihuZXdfcmVhZF9ieXRlcykKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVhZF9ieXRlcykK
LQotICAgIGRlZiBfcmVhZF91bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKLSAgICAgICAgIiIiUmVh
ZHMgYnl0ZXMgdW50aWwgd2UgZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBu
b3QKLSAgICAgICAgY29udGFpbiBkZWxpbV9jaGFyLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBl
bXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJlYWRfYnl0ZXMgPSBbXQotICAg
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCi0gICAgICAg
ICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
ICAgICByZWFkX2J5dGVzLmFwcGVuZChjaCkKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVhZF9i
eXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L19zdHJlYW1faGl4aWU3NS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1f
aGl4aWU3NS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRjZjViMzFiYTBmLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1LnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IlRoaXMgZmlsZSBwcm92aWRlcyBhIGNsYXNzIGZvciBwYXJzaW5nL2J1aWxkaW5nIGZyYW1lcyBv
ZiB0aGUgV2ViU29ja2V0Ci1wcm90b2NvbCB2ZXJzaW9uIEh5QmkgMDAgYW5kIEhpeGllIDc1Lgot
Ci1TcGVjaWZpY2F0aW9uOgotLSBIeUJpIDAwIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMAotLSBIaXhpZSA3NSBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbC03NQot
IiIiCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRF
eGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IFN0cmVhbUJhc2UKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwK
LQotCi1jbGFzcyBTdHJlYW1IaXhpZTc1KFN0cmVhbUJhc2UpOgotICAgICIiIkEgY2xhc3MgZm9y
IHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lv
bgotICAgIEh5QmkgMDAgYW5kIEhpeGllIDc1LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QsIGVuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZT1GYWxzZSk6Ci0gICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
cmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgZW5hYmxlX2Nsb3Npbmdf
aGFuZHNoYWtlOiB0byBsZXQgU3RyZWFtSGl4aWU3NSBwZXJmb3JtIGNsb3NpbmcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlIGFzIHNwZWNpZmllZCBpbiBI
eUJpIDAwLCBzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBv
cHRpb24gdG8gVHJ1ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgU3RyZWFtQmFzZS5fX2luaXRf
XyhzZWxmLCByZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX2VuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZSA9
IGVuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50
X3Rlcm1pbmF0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5h
dGVkID0gRmFsc2UKLQotICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRy
dWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgICIiIlNlbmQgbWVzc2FnZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgbWVzc2FnZTogdW5pY29kZSBzdHJpbmcgdG8gc2VuZC4KLSAgICAg
ICAgICAgIGJpbmFyeTogbm90IHVzZWQgaW4gaGl4aWU3NS4KLQotICAgICAgICBSYWlzZXM6Ci0g
ICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgc2VydmVy
LXRlcm1pbmF0ZWQKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLgotICAgICAgICAiIiIKLQot
ICAgICAgICBpZiBub3QgZW5kOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdTdHJlYW1IaXhpZTc1IGRvZXNuXCd0IHN1cHBvcnQgc2Vu
ZF9tZXNzYWdlIHdpdGggZW5kPUZhbHNlJykKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1N0cmVh
bUhpeGllNzUgZG9lc25cJ3Qgc3VwcG9ydCBzZW5kX21lc3NhZ2Ugd2l0aCBiaW5hcnk9VHJ1ZScp
Ci0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAg
ICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVz
dGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtlJykK
LQotICAgICAgICBzZWxmLl93cml0ZSgnJy5qb2luKFsnXHgwMCcsIG1lc3NhZ2UuZW5jb2RlKCd1
dGYtOCcpLCAnXHhmZiddKSkKLQotICAgIGRlZiBfcmVhZF9wYXlsb2FkX2xlbmd0aF9oaXhpZTc1
KHNlbGYpOgotICAgICAgICAiIiJSZWFkcyBhIGxlbmd0aCBoZWFkZXIgaW4gYSBIaXhpZTc1IHZl
cnNpb24gZnJhbWUgd2l0aCBsZW5ndGguCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAg
Q29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0
cmluZy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgbGVuZ3RoID0gMAotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgYl9zdHIgPSBzZWxmLl9yZWFkKDEpCi0gICAgICAgICAgICBiID0g
b3JkKGJfc3RyKQotICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoICogMTI4ICsgKGIgJiAweDdm
KQotICAgICAgICAgICAgaWYgKGIgJiAweDgwKSA9PSAwOgotICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgIHJldHVybiBsZW5ndGgKLQotICAgIGRlZiByZWNlaXZlX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5
bG9hZCBhbiB1bmljb2RlIHN0cmluZy4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAg
cGF5bG9hZCB1bmljb2RlIHN0cmluZyBpbiBhIFdlYlNvY2tldCBmcmFtZS4KLQotICAgICAgICBS
YWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiBy
ZWFkIHJldHVybnMgZW1wdHkKLSAgICAgICAgICAgICAgICBzdHJpbmcuCi0gICAgICAgICAgICBC
YWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgY2xpZW50LXRlcm1pbmF0ZWQK
LSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBz
ZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgcmVjZWl2ZV9tZXNz
YWdlIGFmdGVyIHJlY2VpdmluZyBhIGNsb3NpbmcgJwotICAgICAgICAgICAgICAgICdoYW5kc2hh
a2UnKQotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAjIFJlYWQgMSBieXRlLgot
ICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBibG9jayBpZiBubyBieXRlcyBhcmUgYXZh
aWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91dCBk
aXJlY3RpdmUgb2YgQXBhY2hlLgotICAgICAgICAgICAgZnJhbWVfdHlwZV9zdHIgPSBzZWxmLnJl
Y2VpdmVfYnl0ZXMoMSkKLSAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBvcmQoZnJhbWVfdHlwZV9z
dHIpCi0gICAgICAgICAgICBpZiAoZnJhbWVfdHlwZSAmIDB4ODApID09IDB4ODA6Ci0gICAgICAg
ICAgICAgICAgIyBUaGUgcGF5bG9hZCBsZW5ndGggaXMgc3BlY2lmaWVkIGluIHRoZSBmcmFtZS4K
LSAgICAgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQuCi0gICAgICAgICAgICAgICAgbGVu
Z3RoID0gc2VsZi5fcmVhZF9wYXlsb2FkX2xlbmd0aF9oaXhpZTc1KCkKLSAgICAgICAgICAgICAg
ICBpZiBsZW5ndGggPiAwOgotICAgICAgICAgICAgICAgICAgICBfID0gc2VsZi5yZWNlaXZlX2J5
dGVzKGxlbmd0aCkKLSAgICAgICAgICAgICAgICAjIDUuMyAzLiAxMi4gaWYgL3R5cGUvIGlzIDB4
RkYgYW5kIC9sZW5ndGgvIGlzIDAsIHRoZW4gc2V0IHRoZQotICAgICAgICAgICAgICAgICMgL2Ns
aWVudCB0ZXJtaW5hdGVkLyBmbGFnIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlOgotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSAweEZG
IGFuZCBsZW5ndGggPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGll
bnRfdGVybWluYXRlZCA9IFRydWUKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9y
IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2hhbmRzaGFrZScpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdSZWNlaXZlZCBjbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLQotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAg
J1NlbnQgYWNrIGZvciBjbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgIyBUaGUgcGF5bG9hZCBpcyBkZWxpbWl0ZWQgd2l0aCBceGZmLgotICAgICAgICAgICAg
ICAgIGJ5dGVzID0gc2VsZi5fcmVhZF91bnRpbCgnXHhmZicpCi0gICAgICAgICAgICAgICAgIyBU
aGUgV2ViU29ja2V0IHByb3RvY29sIHNlY3Rpb24gNC40IHNwZWNpZmllcyB0aGF0IGludmFsaWQK
LSAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIFUrZmZm
ZCBSRVBMQUNFTUVOVAotICAgICAgICAgICAgICAgICMgQ0hBUkFDVEVSLgotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgPSBieXRlcy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKQotICAgICAgICAg
ICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gMHgwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAjIERpc2NhcmQgZGF0YSBvZiBvdGhlciB0eXBlcy4K
LQotICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgaWYgbm90
IHNlbGYuX2VuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnQ2xvc2luZyBoYW5kc2hha2UgaXMg
bm90IHN1cHBvcnRlZCBpbiBIaXhpZSA3NSBwcm90b2NvbCcpCi0KLSAgICAgICAgc2VsZi5fcmVx
dWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKLQotICAgICAgICAjIDUuMyB0aGUgc2VydmVy
IG1heSBkZWNpZGUgdG8gdGVybWluYXRlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBieQotICAg
ICAgICAjIHJ1bm5pbmcgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAjIDEu
IHNlbmQgYSAweEZGIGJ5dGUgYW5kIGEgMHgwMCBieXRlIHRvIHRoZSBjbGllbnQgdG8gaW5kaWNh
dGUgdGhlCi0gICAgICAgICMgc3RhcnQgb2YgdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgotICAgICAg
ICBzZWxmLl93cml0ZSgnXHhmZlx4MDAnKQotCi0gICAgZGVmIGNsb3NlX2Nvbm5lY3Rpb24oc2Vs
ZiwgdW51c2VkX2NvZGU9JycsIHVudXNlZF9yZWFzb249JycpOgotICAgICAgICAiIiJDbG9zZXMg
YSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBD
b25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiBjbG9zaW5nIGhhbmRzaGFrZSB3YXMK
LSAgICAgICAgICAgICAgICBub3Qgc3VjY2Vzc2Z1bGwuCi0gICAgICAgICIiIgotCi0gICAgICAg
IGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBjbG9zZV9jb25uZWN0aW9u
IGJ1dCBzZXJ2ZXIgaXMgYWxyZWFkeSB0ZXJtaW5hdGVkJykKLSAgICAgICAgICAgIHJldHVybgot
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9lbmFibGVfY2xvc2luZ19oYW5kc2hha2U6Ci0gICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdDb25uZWN0aW9uIGNsb3NlZCcpCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdTZW50IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2Un
KQotCi0gICAgICAgICMgVE9ETyh1a2FpKTogMi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJt
aW5hdGVkLyBmbGFnIGhhcyBiZWVuIHNldCwKLSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1k
ZWZpbmVkIHRpbWVvdXQgZXhwaXJlcy4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdl
IGV4cGVjdCByZWNlaXZpbmcgY2xvc2luZyBoYW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwot
ICAgICAgICAjIG91dCBjbG9zaW5nIGhhbmRzaGFrZSwgYW5kIGlmIHdlIGNvdWxkbid0IHJlY2Vp
dmUgbm9uLWhhbmRzaGFrZQotICAgICAgICAjIGZyYW1lLCB3ZSB0YWtlIGl0IGFzIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uLgotICAgICAgICBtZXNzYWdlID0gc2VsZi5yZWNlaXZlX21l
c3NhZ2UoKQotICAgICAgICBpZiBtZXNzYWdlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFp
c2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0RpZG5c
J3QgcmVjZWl2ZSB2YWxpZCBhY2sgZm9yIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgIyBU
T0RPOiAzLiBjbG9zZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uCi0gICAgICAgICMgbm90ZTog
bW9kX3B5dGhvbiBDb25uZWN0aW9uIChtcF9jb25uKSBkb2Vzbid0IGhhdmUgY2xvc2UgbWV0aG9k
LgotCi0gICAgZGVmIHNlbmRfcGluZyhzZWxmLCBib2R5KToKLSAgICAgICAgcmFpc2UgQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgJ1N0cmVhbUhpeGllNzUgZG9lc25cJ3Qgc3Vw
cG9ydCBzZW5kX3BpbmcnKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
X3N0cmVhbV9oeWJpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MThlOGZmYTM5
NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5Ymku
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiVGhpcyBmaWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBh
cnNpbmcvYnVpbGRpbmcgZnJhbWVzCi1vZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1
NSkuCi0KLVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1
Ci0iIiIKLQotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHRpbWUKLQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZy
b20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1w
b3J0IEludmFsaWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9i
YXNlIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9iYXNlIGltcG9ydCBTdHJlYW1CYXNlCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLQotCi1fTk9PUF9NQVNLRVIg
PSB1dGlsLk5vb3BNYXNrZXIoKQotCi0KLWNsYXNzIEZyYW1lKG9iamVjdCk6Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgZmluPTEsIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTAsCi0gICAgICAgICAg
ICAgICAgIG9wY29kZT1Ob25lLCBwYXlsb2FkPScnKToKLSAgICAgICAgc2VsZi5maW4gPSBmaW4K
LSAgICAgICAgc2VsZi5yc3YxID0gcnN2MQotICAgICAgICBzZWxmLnJzdjIgPSByc3YyCi0gICAg
ICAgIHNlbGYucnN2MyA9IHJzdjMKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUKLSAgICAg
ICAgc2VsZi5wYXlsb2FkID0gcGF5bG9hZAotCi0KLSMgSGVscGVyIGZ1bmN0aW9ucyBtYWRlIHB1
YmxpYyB0byBiZSB1c2VkIGZvciB3cml0aW5nIHVuaXR0ZXN0cyBmb3IgV2ViU29ja2V0Ci0jIGNs
aWVudHMuCi0KLQotZGVmIGNyZWF0ZV9sZW5ndGhfaGVhZGVyKGxlbmd0aCwgbWFzayk6Ci0gICAg
IiIiQ3JlYXRlcyBhIGxlbmd0aCBoZWFkZXIuCi0KLSAgICBBcmdzOgotICAgICAgICBsZW5ndGg6
IEZyYW1lIGxlbmd0aC4gTXVzdCBiZSBsZXNzIHRoYW4gMl42My4KLSAgICAgICAgbWFzazogTWFz
ayBiaXQuIE11c3QgYmUgYm9vbGVhbi4KLQotICAgIFJhaXNlczoKLSAgICAgICAgVmFsdWVFcnJv
cjogd2hlbiBiYWQgZGF0YSBpcyBnaXZlbi4KLSAgICAiIiIKLQotICAgIGlmIG1hc2s6Ci0gICAg
ICAgIG1hc2tfYml0ID0gMSA8PCA3Ci0gICAgZWxzZToKLSAgICAgICAgbWFza19iaXQgPSAwCi0K
LSAgICBpZiBsZW5ndGggPCAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZW5ndGggbXVz
dCBiZSBub24gbmVnYXRpdmUgaW50ZWdlcicpCi0gICAgZWxpZiBsZW5ndGggPD0gMTI1OgotICAg
ICAgICByZXR1cm4gY2hyKG1hc2tfYml0IHwgbGVuZ3RoKQotICAgIGVsaWYgbGVuZ3RoIDwgKDEg
PDwgMTYpOgotICAgICAgICByZXR1cm4gY2hyKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNr
KCchSCcsIGxlbmd0aCkKLSAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0
dXJuIGNocihtYXNrX2JpdCB8IDEyNykgKyBzdHJ1Y3QucGFjaygnIVEnLCBsZW5ndGgpCi0gICAg
ZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBpcyB0b28gYmlnIGZvciBv
bmUgZnJhbWUnKQotCi0KLWRlZiBjcmVhdGVfaGVhZGVyKG9wY29kZSwgcGF5bG9hZF9sZW5ndGgs
IGZpbiwgcnN2MSwgcnN2MiwgcnN2MywgbWFzayk6Ci0gICAgIiIiQ3JlYXRlcyBhIGZyYW1lIGhl
YWRlci4KLQotICAgIFJhaXNlczoKLSAgICAgICAgRXhjZXB0aW9uOiB3aGVuIGJhZCBkYXRhIGlz
IGdpdmVuLgotICAgICIiIgotCi0gICAgaWYgb3Bjb2RlIDwgMCBvciAweGYgPCBvcGNvZGU6Ci0g
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ09wY29kZSBvdXQgb2YgcmFuZ2UnKQotCi0gICAgaWYg
cGF5bG9hZF9sZW5ndGggPCAwIG9yICgxIDw8IDYzKSA8PSBwYXlsb2FkX2xlbmd0aDoKLSAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigncGF5bG9hZF9sZW5ndGggb3V0IG9mIHJhbmdlJykKLQotICAg
IGlmIChmaW4gfCByc3YxIHwgcnN2MiB8IHJzdjMpICYgfjE6Ci0gICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0ZJTiBiaXQgYW5kIFJlc2VydmVkIGJpdCBwYXJhbWV0ZXIgbXVzdCBiZSAwIG9yIDEn
KQotCi0gICAgaGVhZGVyID0gJycKLQotICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQotICAg
ICAgICAgICAgICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkK
LSAgICAgICAgICAgICAgICAgIHwgb3Bjb2RlKQotICAgIGhlYWRlciArPSBjaHIoZmlyc3RfYnl0
ZSkKLSAgICBoZWFkZXIgKz0gY3JlYXRlX2xlbmd0aF9oZWFkZXIocGF5bG9hZF9sZW5ndGgsIG1h
c2spCi0KLSAgICByZXR1cm4gaGVhZGVyCi0KLQotZGVmIF9idWlsZF9mcmFtZShoZWFkZXIsIGJv
ZHksIG1hc2spOgotICAgIGlmIG5vdCBtYXNrOgotICAgICAgICByZXR1cm4gaGVhZGVyICsgYm9k
eQotCi0gICAgbWFza2luZ19ub25jZSA9IG9zLnVyYW5kb20oNCkKLSAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKG1hc2tpbmdfbm9uY2UpCi0KLSAgICByZXR1cm4gaGVhZGVyICsg
bWFza2luZ19ub25jZSArIG1hc2tlci5tYXNrKGJvZHkpCi0KLQotZGVmIF9maWx0ZXJfYW5kX2Zv
cm1hdF9mcmFtZV9vYmplY3QoZnJhbWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgotICAgIGZvciBm
cmFtZV9maWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKLSAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRl
cihmcmFtZSkKLQotICAgIGhlYWRlciA9IGNyZWF0ZV9oZWFkZXIoCi0gICAgICAgIGZyYW1lLm9w
Y29kZSwgbGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4sCi0gICAgICAgIGZyYW1lLnJzdjEs
IGZyYW1lLnJzdjIsIGZyYW1lLnJzdjMsIG1hc2spCi0gICAgcmV0dXJuIF9idWlsZF9mcmFtZSho
ZWFkZXIsIGZyYW1lLnBheWxvYWQsIG1hc2spCi0KLQotZGVmIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
Ci0gICAgbWVzc2FnZSwgb3Bjb2RlPWNvbW1vbi5PUENPREVfQklOQVJZLCBmaW49MSwgbWFzaz1G
YWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkg
ZnJhbWUgd2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKLQotICAgIGZyYW1lID0g
RnJhbWUoZmluPWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQotICAgIHJldHVy
biBfZmlsdGVyX2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0
ZXJzKQotCi0KLWRlZiBjcmVhdGVfdGV4dF9mcmFtZSgKLSAgICBtZXNzYWdlLCBvcGNvZGU9Y29t
bW9uLk9QQ09ERV9URVhULCBmaW49MSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0g
ICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0IGZyYW1lIHdpdGggbm8gZXh0ZW5zaW9uLCByZXNl
cnZlZCBiaXQuIiIiCi0KLSAgICBlbmNvZGVkX21lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRm
LTgnKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKGVuY29kZWRfbWVzc2FnZSwgb3Bj
b2RlLCBmaW4sIG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZmls
dGVycykKLQotCi1kZWYgcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcywgbG9nZ2VyPU5vbmUsCi0g
ICAgICAgICAgICAgICAgd3NfdmVyc2lvbj1jb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCwKLSAg
ICAgICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1UcnVlKToKLSAgICAiIiJQYXJzZXMgYSBmcmFt
ZS4gUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgZWFjaCBoZWFkZXIgZmllbGQgYW5kCi0gICAg
cGF5bG9hZC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlY2VpdmVfYnl0ZXM6IGEgZnVuY3Rpb24g
dGhhdCByZWFkcyBmcmFtZSBkYXRhIGZyb20gYSBzdHJlYW0gb3IKLSAgICAgICAgICAgIHNvbWV0
aGluZyBzaW1pbGFyLiBUaGUgZnVuY3Rpb24gdGFrZXMgbGVuZ3RoIG9mIHRoZSBieXRlcyB0byBi
ZQotICAgICAgICAgICAgcmVhZC4gVGhlIGZ1bmN0aW9uIG11c3QgcmFpc2UgQ29ubmVjdGlvblRl
cm1pbmF0ZWRFeGNlcHRpb24gaWYKLSAgICAgICAgICAgIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0
YSB0byBiZSByZWFkLgotICAgICAgICBsb2dnZXI6IGEgbG9nZ2luZyBvYmplY3QuCi0gICAgICAg
IHdzX3ZlcnNpb246IHRoZSB2ZXJzaW9uIG9mIFdlYlNvY2tldCBwcm90b2NvbC4KLSAgICAgICAg
dW5tYXNrX3JlY2VpdmU6IHVubWFzayByZWNlaXZlZCBmcmFtZXMuIFdoZW4gcmVjZWl2ZWQgdW5t
YXNrZWQKLSAgICAgICAgICAgIGZyYW1lLCByYWlzZXMgSW52YWxpZEZyYW1lRXhjZXB0aW9uLgot
Ci0gICAgUmFpc2VzOgotICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hl
biByZWNlaXZlX2J5dGVzIHJhaXNlcyBpdC4KLSAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9u
OiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCi0gICAgIiIiCi0KLSAgICBp
ZiBub3QgbG9nZ2VyOgotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0KLSAg
ICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSB0aGUgZmlyc3QgMiBv
Y3RldHMgb2YgYSBmcmFtZScpCi0KLSAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoMikKLQot
ICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5dGUg
Pj4gNykgJiAxCi0gICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIgPSAo
Zmlyc3RfYnl0ZSA+PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0g
ICAgb3Bjb2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQocmVj
ZWl2ZWRbMV0pCi0gICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXlsb2Fk
X2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9H
TEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9JXMsIFJT
VjM9JXMsIG9wY29kZT0lcywgJwotICAgICAgICAgICAgICAgJ01hc2s9JXMsIFBheWxvYWRfbGVu
Z3RoPSVzJywKLSAgICAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBt
YXNrLCBwYXlsb2FkX2xlbmd0aCkKLQotICAgIGlmIChtYXNrID09IDEpICE9IHVubWFza19yZWNl
aXZlOgotICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAn
TWFzayBiaXQgb24gdGhlIHJlY2VpdmVkIGZyYW1lIGRpZFwnbnQgbWF0Y2ggbWFza2luZyAnCi0g
ICAgICAgICAgICAnY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZWQgZnJhbWVzJykKLQotICAgICMg
VGhlIEh5QmkgYW5kIGxhdGVyIHNwZWNzIGRpc2FsbG93IHB1dHRpbmcgYSB2YWx1ZSBpbiAweDAt
MHhGRkZGCi0gICAgIyBpbnRvIHRoZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZp
ZWxkIChvciAweDAtMHhGRCBpbgotICAgICMgMi1vY3RldCBmaWVsZCkuCi0gICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gVHJ1ZQotICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDEKLSAgICBp
ZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjc6Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgOC1vY3RldCBleHRlbmRlZCBw
YXlsb2FkIGxlbmd0aCcpCi0KLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNl
aXZlX2J5dGVzKDgpCi0gICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKLSAg
ICAgICAgICAgICchUScsIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoKVswXQotICAgICAgICBpZiBw
YXlsb2FkX2xlbmd0aCA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXh0ZW5kZWQgcGF5bG9hZCBs
ZW5ndGggPj0gMl42MycpCi0gICAgICAgIGlmIHdzX3ZlcnNpb24gPj0gMTMgYW5kIHBheWxvYWRf
bGVuZ3RoIDwgMHgxMDAwMDoKLSAgICAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZh
bHNlCi0gICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSA4Ci0KLSAgICAgICAgbG9n
Z2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAnRGVjb2Rl
ZF9wYXlsb2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQotICAgIGVsaWYgcGF5bG9hZF9s
ZW5ndGggPT0gMTI2OgotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAot
ICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDItb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5n
dGgnKQotCi0gICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcygy
KQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAgICAn
IUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgaWYgd3NfdmVyc2lvbiA+
PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6Ci0gICAgICAgICAgICB2YWxpZF9sZW5ndGhf
ZW5jb2RpbmcgPSBGYWxzZQotICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMgot
Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAg
ICAgICAgJ0RlY29kZWRfcGF5bG9hZF9sZW5ndGg9JXMnLCBwYXlsb2FkX2xlbmd0aCkKLQotICAg
IGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6Ci0gICAgICAgIGxvZ2dlci53YXJuaW5nKAot
ICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBtaW5p
bWFsIG51bWJlciBvZiAnCi0gICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNpbmcg
JWQgYnl0ZXMpJywKLSAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoLAotICAgICAgICAgICAgbGVu
Z3RoX2VuY29kaW5nX2J5dGVzKQotCi0gICAgaWYgbWFzayA9PSAxOgotICAgICAgICBsb2dnZXIu
bG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSBtYXNrJykKLQotICAgICAgICBtYXNr
aW5nX25vbmNlID0gcmVjZWl2ZV9ieXRlcyg0KQotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVh
dGVkWG9yTWFza2VyKG1hc2tpbmdfbm9uY2UpCi0KLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ01hc2s9JXInLCBtYXNraW5nX25vbmNlKQotICAgIGVsc2U6Ci0gICAg
ICAgIG1hc2tlciA9IF9OT09QX01BU0tFUgotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVW
RUxfRklORSwgJ1JlY2VpdmUgcGF5bG9hZCBkYXRhJykKLSAgICBpZiBsb2dnZXIuaXNFbmFibGVk
Rm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgcmVjZWl2ZV9zdGFydCA9IHRpbWUu
dGltZSgpCi0KLSAgICByYXdfcGF5bG9hZF9ieXRlcyA9IHJlY2VpdmVfYnl0ZXMocGF5bG9hZF9s
ZW5ndGgpCi0KLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5F
KToKLSAgICAgICAgbG9nZ2VyLmxvZygKLSAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAotICAgICAgICAgICAgJ0RvbmUgcmVjZWl2aW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywK
LSAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2ZV9zdGFy
dCkgLyAxMDAwIC8gMTAwMCkKLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
VW5tYXNrIHBheWxvYWQgZGF0YScpCi0KLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1v
bi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1lKCkKLQot
ICAgIHVubWFza2VkX2J5dGVzID0gbWFza2VyLm1hc2socmF3X3BheWxvYWRfYnl0ZXMpCi0KLSAg
ICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAg
bG9nZ2VyLmxvZygKLSAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAg
ICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKLSAgICAgICAgICAg
IHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gdW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAx
MDAwKQotCi0gICAgcmV0dXJuIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2
MiwgcnN2MwotCi0KLWNsYXNzIEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIob2JqZWN0KToKLSAgICAi
IiJBIHN0YXRlZnVsIGNsYXNzIHRvIHNlbmQgYSBtZXNzYWdlIGFzIGZyYWdtZW50cy4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNrLCBmcmFtZV9maWx0ZXJzPVtdLCBlbmNvZGVfdXRm
OD1UcnVlKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4iIiIKLQotICAgICAg
ICBzZWxmLl9tYXNrID0gbWFzawotICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzID0gZnJhbWVf
ZmlsdGVycwotICAgICAgICAjIFRoaXMgaXMgZm9yIHNraXBwaW5nIFVURi04IGVuY29kaW5nIHdo
ZW4gYnVpbGRpbmcgdGV4dCB0eXBlIGZyYW1lcwotICAgICAgICAjIGZyb20gY29tcHJlc3NlZCBk
YXRhLgotICAgICAgICBzZWxmLl9lbmNvZGVfdXRmOCA9IGVuY29kZV91dGY4Ci0KLSAgICAgICAg
c2VsZi5fc3RhcnRlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBIb2xkIG9wY29kZSBvZiB0aGUgZmly
c3QgZnJhbWUgaW4gbWVzc2FnZXMgdG8gdmVyaWZ5IHR5cGVzIG9mIG90aGVyCi0gICAgICAgICMg
ZnJhbWVzIGluIHRoZSBtZXNzYWdlIGFyZSBhbGwgdGhlIHNhbWUuCi0gICAgICAgIHNlbGYuX29w
Y29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAotCi0gICAgZGVmIGJ1aWxkKHNlbGYsIHBheWxvYWRf
ZGF0YSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBmcmFt
ZV90eXBlID0gY29tbW9uLk9QQ09ERV9CSU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGZyYW1lX3R5cGUgPSBjb21tb24uT1BDT0RFX1RFWFQKLSAgICAgICAgaWYgc2VsZi5fc3RhcnRl
ZDoKLSAgICAgICAgICAgIGlmIHNlbGYuX29wY29kZSAhPSBmcmFtZV90eXBlOgotICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiBm
cmFtZXMgZm9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBt
ZXNzYWdlJykKLSAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9O
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCi0gICAgICAg
ICAgICBzZWxmLl9vcGNvZGUgPSBmcmFtZV90eXBlCi0KLSAgICAgICAgaWYgZW5kOgotICAgICAg
ICAgICAgc2VsZi5fc3RhcnRlZCA9IEZhbHNlCi0gICAgICAgICAgICBmaW4gPSAxCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gVHJ1ZQotICAgICAgICAgICAgZmlu
ID0gMAotCi0gICAgICAgIGlmIGJpbmFyeSBvciBub3Qgc2VsZi5fZW5jb2RlX3V0Zjg6Ci0gICAg
ICAgICAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAgICAgICAgICAgICBwYXls
b2FkX2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLCBzZWxmLl9mcmFtZV9maWx0ZXJzKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKAotICAg
ICAgICAgICAgICAgIHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssIHNlbGYu
X2ZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIF9jcmVhdGVfY29udHJvbF9mcmFtZShvcGNvZGUsIGJv
ZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgotICAgIGZyYW1lID0gRnJhbWUob3Bjb2RlPW9wY29k
ZSwgcGF5bG9hZD1ib2R5KQotCi0gICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJz
OgotICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgaWYgbGVuKGZyYW1l
LnBheWxvYWQpID4gMTI1OgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0g
ICAgICAgICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVzdCBiZSAx
MjUgYnl0ZXMgb3IgbGVzcycpCi0KLSAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKAotICAgICAg
ICBmcmFtZS5vcGNvZGUsIGxlbihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAotICAgICAgICBm
cmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzLCBtYXNrKQotICAgIHJldHVybiBfYnVp
bGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXlsb2FkLCBtYXNrKQotCi0KLWRlZiBjcmVhdGVfcGlu
Z19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUElORywgYm9keSwgbWFzaywgZnJh
bWVfZmlsdGVycykKLQotCi1kZWYgY3JlYXRlX3BvbmdfZnJhbWUoYm9keSwgbWFzaz1GYWxzZSwg
ZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVfY29udHJvbF9mcmFtZShjb21t
b24uT1BDT0RFX1BPTkcsIGJvZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNyZWF0
ZV9jbG9zZV9mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICBy
ZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1lKAotICAgICAgICBjb21tb24uT1BDT0RFX0NMT1NF
LCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBjcmVhdGVfY2xvc2luZ19oYW5k
c2hha2VfYm9keShjb2RlLCByZWFzb24pOgotICAgIGJvZHkgPSAnJwotICAgIGlmIGNvZGUgaXMg
bm90IE5vbmU6Ci0gICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVf
TUFYIG9yCi0gICAgICAgICAgICBjb2RlIDwgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6
Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlz
IG91dCBvZiByYW5nZScpCi0gICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfTk9fU1RB
VFVTX1JFQ0VJVkVEIG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfQUJOT1JN
QUxfQ0xPU1VSRSBvcgotICAgICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX1RMU19IQU5E
U0hBS0UpOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMg
Y29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJwotICAgICAgICAgICAgICAgICdjb2RlJykKLSAgICAg
ICAgZW5jb2RlZF9yZWFzb24gPSByZWFzb24uZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGJvZHkg
PSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIGVuY29kZWRfcmVhc29uCi0gICAgcmV0dXJuIGJv
ZHkKLQotCi1jbGFzcyBTdHJlYW1PcHRpb25zKG9iamVjdCk6Ci0gICAgIiIiSG9sZHMgb3B0aW9u
IHZhbHVlcyB0byBjb25maWd1cmUgU3RyZWFtIG9iamVjdHMuIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZik6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgU3RyZWFtT3B0aW9ucy4iIiIKLQotICAg
ICAgICAjIEZpbHRlcnMgYXBwbGllZCB0byBmcmFtZXMuCi0gICAgICAgIHNlbGYub3V0Z29pbmdf
ZnJhbWVfZmlsdGVycyA9IFtdCi0gICAgICAgIHNlbGYuaW5jb21pbmdfZnJhbWVfZmlsdGVycyA9
IFtdCi0KLSAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gbWVzc2FnZXMuIENvbnRyb2wgZnJh
bWVzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlbS4KLSAgICAgICAgc2VsZi5vdXRnb2luZ19tZXNz
YWdlX2ZpbHRlcnMgPSBbXQotICAgICAgICBzZWxmLmluY29taW5nX21lc3NhZ2VfZmlsdGVycyA9
IFtdCi0KLSAgICAgICAgc2VsZi5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBUcnVlCi0g
ICAgICAgIHNlbGYubWFza19zZW5kID0gRmFsc2UKLSAgICAgICAgc2VsZi51bm1hc2tfcmVjZWl2
ZSA9IFRydWUKLQotCi1jbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBm
b3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbAotICAg
IChSRkMgNjQ1NSkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwg
b3B0aW9ucyk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgU3RyZWFtQmFzZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotCi0gICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRf
dGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0
ZWQgPSBGYWxzZQotCi0gICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBmcmFnbWVudHMu
Ci0gICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgICMgSG9sZHMg
dGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCi0gICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IE5vbmUKLQotICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVudGVkRnJhbWVC
dWlsZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNlbGYuX29wdGlv
bnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5j
b2RlX3RleHRfbWVzc2FnZV90b191dGY4KQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUgPSBk
ZXF1ZSgpCi0KLSAgICBkZWYgX3JlY2VpdmVfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlJlY2Vp
dmVzIGEgZnJhbWUgYW5kIHJldHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRh
aW5pbmcKLSAgICAgICAgZWFjaCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4K
LQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkKLSAgICAgICAgICAgICAgICBzdHJpbmcuCi0g
ICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5z
IGludmFsaWQgZGF0YS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVz
KGxlbmd0aCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlX2J5dGVzKGxlbmd0aCkK
LQotICAgICAgICByZXR1cm4gcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcz1fcmVjZWl2ZV9ieXRl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1zZWxmLl9sb2dnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICB3c192ZXJzaW9uPXNlbGYuX3JlcXVlc3Qud3NfdmVyc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubWFza19yZWNlaXZlPXNlbGYuX29wdGlv
bnMudW5tYXNrX3JlY2VpdmUpCi0KLSAgICBkZWYgX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2Jq
ZWN0KHNlbGYpOgotICAgICAgICBvcGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJz
djIsIHJzdjMgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lKCkKLQotICAgICAgICByZXR1cm4gRnJhbWUo
ZmluPWZpbiwgcnN2MT1yc3YxLCByc3YyPXJzdjIsIHJzdjM9cnN2MywKLSAgICAgICAgICAgICAg
ICAgICAgIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9dW5tYXNrZWRfYnl0ZXMpCi0KLSAgICBkZWYg
cmVjZWl2ZV9maWx0ZXJlZF9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgYSBmcmFt
ZSBhbmQgYXBwbGllcyBmcmFtZSBmaWx0ZXJzIGFuZCBtZXNzYWdlIGZpbHRlcnMuCi0gICAgICAg
IFRoZSBmcmFtZSB0byBiZSByZWNlaXZlZCBtdXN0IHNhdGlzZnkgZm9sbG93aW5nIGNvbmRpdGlv
bnM6Ci0gICAgICAgIC0gVGhlIGZyYW1lIGlzIG5vdCBmcmFnbWVudGVkLgotICAgICAgICAtIFRo
ZSBvcGNvZGUgb2YgdGhlIGZyYW1lIGlzIFRFWFQgb3IgQklOQVJZLgotCi0gICAgICAgIERPIE5P
VCBVU0UgdGhpcyBtZXRob2QgZXhjZXB0IGZvciB0ZXN0aW5nIHB1cnBvc2UuCi0gICAgICAgICIi
IgotCi0gICAgICAgIGZyYW1lID0gc2VsZi5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3Qo
KQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZy
YW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZWdtZW50ZWQgZnJhbWVzIG11c3Qgbm90
IGJlIHJlY2VpdmVkIHZpYSAnCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVfZmlsdGVyZWRfZnJh
bWUoKScpCi0gICAgICAgIGlmIChmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9URVhUIGFu
ZAotICAgICAgICAgICAgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQklOQVJZKToKLSAg
ICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
Q29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKLSAgICAgICAgICAgICAg
ICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKLQotICAgICAgICBmb3IgZnJhbWVfZmlsdGVy
IGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKLSAgICAgICAgICAgIGZy
YW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0gICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBz
ZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKLSAgICAgICAgICAgIGZyYW1l
LnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAg
cmV0dXJuIGZyYW1lCi0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1U
cnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICAiIiJTZW5kIG1lc3NhZ2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29kZSBvciBiaW5hcnkgaW4g
c3RyIHRvIHNlbmQuCi0gICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVzc2FnZSBhcyBiaW5hcnkg
ZnJhbWUuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCi0gICAgICAgICAgICAgICAg
Y29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVzc2FnZSB0eXBlIG9yCi0g
ICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAg
aWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHNlbmRfbWVz
c2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtlJykKLQotICAgICAgICBp
ZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICBy
YWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ01lc3NhZ2UgZm9y
IGJpbmFyeSBmcmFtZSBtdXN0IGJlIGluc3RhbmNlIG9mIHN0cicpCi0KLSAgICAgICAgZm9yIG1l
c3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzOgot
ICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlLCBlbmQs
IGJpbmFyeSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFNldCB0aGlzIHRvIGFueSBw
b3NpdGl2ZSBpbnRlZ2VyIHRvIGxpbWl0IG1heGltdW0gc2l6ZSBvZiBkYXRhIGluCi0gICAgICAg
ICAgICAjIHBheWxvYWQgZGF0YSBvZiBlYWNoIGZyYW1lLgotICAgICAgICAgICAgTUFYX1BBWUxP
QURfREFUQV9TSVpFID0gLTEKLQotICAgICAgICAgICAgaWYgTUFYX1BBWUxPQURfREFUQV9TSVpF
IDw9IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoc2VsZi5fd3JpdGVyLmJ1aWxkKG1l
c3NhZ2UsIGVuZCwgYmluYXJ5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAg
ICAgYnl0ZXNfd3JpdHRlbiA9IDAKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAg
ICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gZW5kCi0gICAgICAgICAgICAgICAgYnl0ZXNfdG9f
d3JpdGUgPSBsZW4obWVzc2FnZSkgLSBieXRlc193cml0dGVuCi0gICAgICAgICAgICAgICAgaWYg
KE1BWF9QQVlMT0FEX0RBVEFfU0laRSA+IDAgYW5kCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVz
X3RvX3dyaXRlID4gTUFYX1BBWUxPQURfREFUQV9TSVpFKToKLSAgICAgICAgICAgICAgICAgICAg
ZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9f
d3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRBX1NJWkUKLQotICAgICAgICAgICAgICAgIGZyYW1lID0g
c2VsZi5fd3JpdGVyLmJ1aWxkKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dy
aXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5dGVzX3RvX3dyaXRlXSwKLSAgICAgICAgICAgICAgICAg
ICAgZW5kX2Zvcl90aGlzX2ZyYW1lLAotICAgICAgICAgICAgICAgICAgICBiaW5hcnkpCi0gICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICAgICAgICAgICAgICBieXRlc193
cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCi0KLSAgICAgICAgICAgICAgICAjIFRoaXMgaWYgbXVz
dCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28gdGhhdAotICAgICAg
ICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCi0gICAgICAgICAgICAgICAg
aWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBC
YWRPcGVyYXRpb25FeGNlcHRpb24oZSkKLQotICAgIGRlZiBfZ2V0X21lc3NhZ2VfZnJvbV9mcmFt
ZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZyb20gZnJhbWUuIElm
IHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKLSAgICAgICAgZnJhbWVzIGFu
ZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUsIHRoaXMgbWV0aG9k
Ci0gICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5l
ZCB3aGVuIHRoZSBsYXN0Ci0gICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMgcGFzc2VkIHRvIHRo
aXMgbWV0aG9kLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4
Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdtZW50YXRpb24KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRh
LgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09E
RV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVjZWl2ZWRfZnJhZ21l
bnRzOgotICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1Jl
Y2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1lIGJ1dCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRlZCcpCi0KLSAgICAg
ICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAjIEVuZCBvZiBmcmFnbWVudGF0
aW9uIGZyYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVu
ZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJy5qb2luKHNlbGYu
X3JlY2VpdmVkX2ZyYWdtZW50cykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFn
bWVudHMgPSBbXQotICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9yZWNlaXZlZF9mcmFnbWVudHM6Ci0gICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gdW5mcmFnbWVudGVkIGZyYW1lIHdpdGhvdXQgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1pbmF0aW5nIGV4aXN0aW5nIGZyYWdtZW50YXRp
b24nKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdOZXcgZnJhZ21l
bnRhdGlvbiBzdGFydGVkIHdpdGhvdXQgdGVybWluYXRpbmcgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2V4aXN0aW5nIGZyYWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBpZiBmcmFtZS5m
aW46Ci0gICAgICAgICAgICAgICAgIyBVbmZyYWdtZW50ZWQgZnJhbWUKLQotICAgICAgICAgICAg
ICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAg
IHJldHVybiBmcmFtZS5wYXlsb2FkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICMgU3RhcnQgb2YgZnJhZ21lbnRhdGlvbiBmcmFtZQotCi0gICAgICAgICAgICAgICAgaWYgY29t
bW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdD
b250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkJykKLQotICAgICAgICAgICAgICAg
IHNlbGYuX29yaWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHNl
bGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgICBtZXNzYWdlOiBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIFJh
aXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgbWVzc2Fn
ZSBpcyBpbnZhbGlkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVu
dF90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgICAgICMgU3RhdHVzIGNvZGUgaXMgb3B0aW9uYWwu
IFdlIGNhbiBoYXZlIHN0YXR1cyByZWFzb24gb25seSBpZiB3ZQotICAgICAgICAjIGhhdmUgc3Rh
dHVzIGNvZGUuIFN0YXR1cyByZWFzb24gY2FuIGJlIGVtcHR5IHN0cmluZy4gU28sCi0gICAgICAg
ICMgYWxsb3dlZCBjYXNlcyBhcmUKLSAgICAgICAgIyAtIG5vIGFwcGxpY2F0aW9uIGRhdGE6IG5v
IGNvZGUgbm8gcmVhc29uCi0gICAgICAgICMgLSAyIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6
IGhhcyBjb2RlIGJ1dCBubyByZWFzb24KLSAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBh
cHBsaWNhdGlvbiBkYXRhOiBib3RoIGNvZGUgYW5kIHJlYXNvbgotICAgICAgICBpZiBsZW4obWVz
c2FnZSkgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xv
c2UgZnJhbWUgKGVtcHR5IGJvZHkpJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xv
c2VfY29kZSA9ICgKLSAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNF
SVZFRCkKLSAgICAgICAgZWxpZiBsZW4obWVzc2FnZSkgPT0gMToKLSAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWYgYSBjbG9zZSBmcmFt
ZSBoYXMgc3RhdHVzIGNvZGUsIHRoZSBsZW5ndGggb2YgJwotICAgICAgICAgICAgICAgICdzdGF0
dXMgY29kZSBtdXN0IGJlIDIgb2N0ZXQnKQotICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAy
OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gc3RydWN0LnVucGFj
aygKLSAgICAgICAgICAgICAgICAnIUgnLCBtZXNzYWdlWzA6Ml0pWzBdCi0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IG1lc3NhZ2VbMjpdLmRlY29kZSgKLSAgICAg
ICAgICAgICAgICAndXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChjb2RlPSVkLCBy
ZWFzb249JXIpJywKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUs
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24pCi0KLSAgICAg
ICAgIyBBcyB3ZSd2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRhdGEgaXMgY29t
aW5nIG92ZXIgdGhlCi0gICAgICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVseSBjbG9zZSB0
aGUgc29ja2V0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQKLSAgICAgICAgIyBSU1Qgc2VuZGluZy4K
LQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9y
IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1JlY2VpdmVkIGNs
aWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGNvZGUgPSBjb21t
b24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgIGlm
IGhhc2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19kaXNwYXRjaGVyJyk6Ci0gICAgICAgICAgICBkaXNw
YXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlzcGF0Y2hlcgotICAgICAgICAgICAgY29kZSwgcmVh
c29uID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAotICAgICAgICAgICAg
ICAgIHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICAgICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNv
biBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci53YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAnSGFuZGxlciBzcGVjaWZpZWQg
cmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKLSAgICAgICAgICAgICAgICByZWFzb24g
PSAnJwotICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVh
c29uID0gJycKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFz
b24pCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY2tub3dsZWRn
ZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcKLSAgICAgICAgICAg
ICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKLQotICAgIGRlZiBfcHJvY2Vz
c19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwaW5n
IG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBpbmcgbWVz
c2FnZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9
IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCi0gICAgICAgICAgICBpZiBoYW5kbGVyOgot
ICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAg
ICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuX3NlbmRfcG9uZyhtZXNzYWdlKQotCi0gICAgZGVm
IF9wcm9jZXNzX3BvbmdfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vz
c2VzIHBvbmcgbWVzc2FnZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTog
cG9uZyBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBB
ZGQgcGluZyB0aW1lb3V0IGhhbmRsaW5nLgotCi0gICAgICAgIGluZmxpZ2h0X3BpbmdzID0gZGVx
dWUoKQotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfYm9keSA9IHNlbGYuX3BpbmdfcXVldWUucG9wbGVmdCgpCi0gICAgICAg
ICAgICAgICAgaWYgZXhwZWN0ZWRfYm9keSA9PSBtZXNzYWdlOgotICAgICAgICAgICAgICAgICAg
ICAjIGluZmxpZ2h0X3BpbmdzIGNvbnRhaW5zIHBpbmdzIGlnbm9yZWQgYnkgdGhlCi0gICAgICAg
ICAgICAgICAgICAgICMgb3RoZXIgcGVlci4gSnVzdCBmb3JnZXQgdGhlbS4KLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1Bp
bmcgJXIgaXMgYWNrZWQgKCVkIHBpbmdzIHdlcmUgaWdub3JlZCknLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfYm9keSwgbGVuKGluZmxpZ2h0X3BpbmdzKSkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICBpbmZsaWdodF9waW5ncy5hcHBlbmQoZXhwZWN0ZWRfYm9keSkKLSAgICAgICAgICAgIGV4Y2Vw
dCBJbmRleEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgIyBUaGUgcmVjZWl2ZWQgcG9uZyB3
YXMgdW5zb2xpY2l0ZWQgcG9uZy4gS2VlcCB0aGUKLSAgICAgICAgICAgICAgICAjIHBpbmcgcXVl
dWUgYXMgaXMuCi0gICAgICAgICAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGluZmxpZ2h0X3Bp
bmdzCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhIHVuc29s
aWNpdGVkIHBvbmcnKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcG9uZ19oYW5kbGVyCi0gICAgICAg
ICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwg
bWVzc2FnZSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJSZWNl
aXZlIGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGlu
Ci0gICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgotCi0gICAgICAgIFJldHVybnM6
Ci0gICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCi0gICAgICAgICAgICAtIGFz
IHVuaWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQotICAgICAgICAgICAgLSBh
cyBzdHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCi0gICAgICAgICAgICBvciBO
b25lIGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgUmFpc2VzOgotICAg
ICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10
ZXJtaW5hdGVkCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAg
ICAgICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hl
biB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAotICAgICAgICAgICAgICAgIGRhdGEuCi0gICAg
ICAgICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFt
ZSBoYXMKLSAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlv
dSBjYW4gaWdub3JlIHRoaXMKLSAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVl
IHJlY2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2Fn
ZSBhZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKLSAgICAgICAgICAgICAgICAnaGFuZHNoYWtl
JykKLQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2ls
bCBibG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0
IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91dCBkaXJlY3RpdmUgb2YgQXBhY2hlLgotCi0gICAgICAg
ICAgICBmcmFtZSA9IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLQotICAg
ICAgICAgICAgIyBDaGVjayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBj
b250cm9sIGZyYW1lcwotICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0
aGUgZnJhbWUuCi0gICAgICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUjc2VjdGlvbi01LjUKLSAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJv
bF9vcGNvZGUoZnJhbWUub3Bjb2RlKSBhbmQKLSAgICAgICAgICAgICAgICBsZW4oZnJhbWUucGF5
bG9hZCkgPiAxMjUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgJ1BheWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJh
bWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAgICAgICAgICAgJ2xlc3MnKQot
Ci0gICAgICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdf
ZnJhbWVfZmlsdGVyczoKLSAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1l
KQotCi0gICAgICAgICAgICBpZiBmcmFtZS5yc3YxIG9yIGZyYW1lLnJzdjIgb3IgZnJhbWUucnN2
MzoKLSAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgZmxhZyBpcyBzZXQgKHJzdiA9ICVkJWQlZCkn
ICUKLSAgICAgICAgICAgICAgICAgICAgKGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJz
djMpKQotCi0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fZ2V0X21lc3NhZ2VfZnJvbV9mcmFt
ZShmcmFtZSkKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAg
ICBjb250aW51ZQotCi0gICAgICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0
aW9ucy5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9
IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9v
cmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9URVhUOgotICAgICAgICAgICAgICAgICMg
VGhlIFdlYlNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlk
Ci0gICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXJzIG11c3QgYmUgcmVwbGFjZWQgd2l0aCBVK2Zm
ZmQgUkVQTEFDRU1FTlQKLSAgICAgICAgICAgICAgICAjIENIQVJBQ1RFUi4KLSAgICAgICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlLmRlY29kZSgndXRm
LTgnKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZToKLSAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24oZSkKLSAgICAgICAg
ICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZOgot
ICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29y
aWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgICAgIHNl
bGYuX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24u
T1BDT0RFX1BJTkc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19waW5nX21lc3NhZ2Uo
bWVzc2FnZSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1v
bi5PUENPREVfUE9ORzoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3BvbmdfbWVzc2Fn
ZShtZXNzYWdlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBVbnN1
cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlICVkIGlz
IG5vdCBzdXBwb3J0ZWQnICUgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlKQotCi0gICAgZGVmIF9zZW5k
X2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIGJvZHkgPSBj
cmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keShjb2RlLCByZWFzb24pCi0gICAgICAgIGZyYW1l
ID0gY3JlYXRlX2Nsb3NlX2ZyYW1lKAotICAgICAgICAgICAgYm9keSwgbWFzaz1zZWxmLl9vcHRp
b25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnM9c2VsZi5fb3B0aW9ucy5v
dXRnb2luZ19mcmFtZV9maWx0ZXJzKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rl
cm1pbmF0ZWQgPSBUcnVlCi0KLSAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYg
Y2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUs
IHJlYXNvbj0nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3Jlc3BvbnNlPVRydWUp
OgotICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gTm90ZSB0aGF0IHRo
aXMgbWV0aG9kIGJsb2NrcyB1bnRpbAotICAgICAgICBpdCByZWNlaXZlcyBhY2tub3dsZWRnZW1l
bnQgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBjb2RlOiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJhbWUuIElmIGNvZGUgaXMgTm9uZSwgYSBj
bG9zZQotICAgICAgICAgICAgICAgIGZyYW1lIHdpdGggZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQu
Ci0gICAgICAgICAgICByZWFzb246IHN0cmluZyByZXByZXNlbnRpbmcgY2xvc2UgcmVhc29uLgot
ICAgICAgICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3aGVuIGNhbGxlciB3YW50IHRvIHdhaXQg
dGhlIHJlc3BvbnNlLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25F
eGNlcHRpb246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmllZCB3aXRoIGNvZGUgTm9uZQotICAgICAg
ICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBib3RoIHN0ciBhbmQgdW5pY29k
ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWlu
YXRlZDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAn
UmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0
ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBj
bG9zZSBmcmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9zZV9tZXNzYWdlKCkuCi0gICAgICAgICMg
X3Byb2Nlc3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0ZWx5IGFja25vd2xlZGdlcyB0byB0aGUK
LSAgICAgICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNl
cnZlcl90ZXJtaW5hdGVkIHRvCi0gICAgICAgICMgVHJ1ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3Vt
ZSB0aGF0IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNsb3NlCi0gICAgICAgICMgZnJhbWUuIFdl
J3JlIGluaXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFrZS4KLQotICAgICAgICBpZiBjb2RlIGlz
IE5vbmU6Ci0gICAgICAgICAgICBpZiByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24p
ID4gMDoKLSAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVzdCBub3QgYmUgc3BlY2lmaWVkIGlmIGNv
ZGUgaXMgTm9uZScpCi0gICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29uLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5j
ZShyZWFzb24sIHVuaWNvZGUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIHN0ciBvciB1bmljb2RlJykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3Npbmdf
aGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ0luaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVy
KScsCi0gICAgICAgICAgICBjb2RlLCByZWFzb24pCi0KLSAgICAgICAgaWYgKGNvZGUgPT0gY29t
bW9uLlNUQVRVU19HT0lOR19BV0FZIG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFU
VVNfUFJPVE9DT0xfRVJST1IpIG9yIG5vdCB3YWl0X3Jlc3BvbnNlOgotICAgICAgICAgICAgIyBJ
dCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBpZiB0aGUgcmVh
c29uIGlzCi0gICAgICAgICAgICAjIHByb3RvY29sIGVycm9yIG9yIHRoYXQgdGhlIHNlcnZlciBp
cyBnb2luZyBhd2F5LiBGb3Igc29tZSBvZgotICAgICAgICAgICAgIyBvdGhlciByZWFzb25zLCBp
dCBtaWdodCBub3QgbWFrZSBzZW5zZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lLAotICAgICAg
ICAgICAgIyBidXQgaXQncyBub3QgY2xlYXIsIHlldC4KLSAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgICMgVE9ETyh1a2FpKTogMi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJtaW5hdGVk
LyBmbGFnIGhhcyBiZWVuIHNldCwKLSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1kZWZpbmVk
IHRpbWVvdXQgZXhwaXJlcy4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdlIGV4cGVj
dCByZWNlaXZpbmcgY2xvc2luZyBoYW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwotICAgICAg
ICAjIG91dCBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2
ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdE
aWRuXCd0IHJlY2VpdmUgdmFsaWQgYWNrIGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAg
ICMgVE9ETzogMy4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICAjIG5v
dGU6IG1vZF9weXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1l
dGhvZC4KLQotICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGZyYW1l
ID0gY3JlYXRlX3BpbmdfZnJhbWUoCi0gICAgICAgICAgICBib2R5LAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5tYXNrX3NlbmQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5n
X2ZyYW1lX2ZpbHRlcnMpCi0gICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgICAgIHNl
bGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBi
b2R5KToKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZSgKLSAgICAgICAgICAgIGJv
ZHksCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLSAgICAgICAgc2VsZi5fd3JpdGUo
ZnJhbWUpCi0KLSAgICBkZWYgZ2V0X2xhc3RfcmVjZWl2ZWRfb3Bjb2RlKHNlbGYpOgotICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBvcGNvZGUgb2YgdGhlIFdlYlNvY2tldCBtZXNzYWdlIHdoaWNoIHRo
ZSBsYXN0IHJlY2VpdmVkCi0gICAgICAgIGZyYW1lIGJlbG9uZ3MgdG8uIFRoZSByZXR1cm4gdmFs
dWUgaXMgdmFsaWQgaWZmIGltbWVkaWF0ZWx5IGFmdGVyCi0gICAgICAgIHJlY2VpdmVfbWVzc2Fn
ZSBjYWxsLgotICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC9jb21tb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9jb21tb24ucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNzNkNjY1NjBkNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCww
IEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgbXVzdCBub3QgZGVwZW5kIG9u
IGFueSBtb2R1bGUgc3BlY2lmaWMgdG8gdGhlIFdlYlNvY2tldCBwcm90b2NvbC4KLSIiIgotCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotIyBBZGRp
dGlvbmFsIGxvZyBsZXZlbCBkZWZpbml0aW9ucy4KLUxPR0xFVkVMX0ZJTkUgPSA5Ci0KLSMgQ29u
c3RhbnRzIGluZGljYXRpbmcgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24uCi1WRVJTSU9OX0hJ
WElFNzUgPSAtMQotVkVSU0lPTl9IWUJJMDAgPSAwCi1WRVJTSU9OX0hZQkkwMSA9IDEKLVZFUlNJ
T05fSFlCSTAyID0gMgotVkVSU0lPTl9IWUJJMDMgPSAyCi1WRVJTSU9OX0hZQkkwNCA9IDQKLVZF
UlNJT05fSFlCSTA1ID0gNQotVkVSU0lPTl9IWUJJMDYgPSA2Ci1WRVJTSU9OX0hZQkkwNyA9IDcK
LVZFUlNJT05fSFlCSTA4ID0gOAotVkVSU0lPTl9IWUJJMDkgPSA4Ci1WRVJTSU9OX0hZQkkxMCA9
IDgKLVZFUlNJT05fSFlCSTExID0gOAotVkVSU0lPTl9IWUJJMTIgPSA4Ci1WRVJTSU9OX0hZQkkx
MyA9IDEzCi1WRVJTSU9OX0hZQkkxNCA9IDEzCi1WRVJTSU9OX0hZQkkxNSA9IDEzCi1WRVJTSU9O
X0hZQkkxNiA9IDEzCi1WRVJTSU9OX0hZQkkxNyA9IDEzCi0KLSMgQ29uc3RhbnRzIGluZGljYXRp
bmcgV2ViU29ja2V0IHByb3RvY29sIGxhdGVzdCB2ZXJzaW9uLgotVkVSU0lPTl9IWUJJX0xBVEVT
VCA9IFZFUlNJT05fSFlCSTEzCi0KLSMgUG9ydCBudW1iZXJzCi1ERUZBVUxUX1dFQl9TT0NLRVRf
UE9SVCA9IDgwCi1ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0NDMKLQotIyBTY2hl
bWVzCi1XRUJfU09DS0VUX1NDSEVNRSA9ICd3cycKLVdFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSA9
ICd3c3MnCi0KLSMgRnJhbWUgb3Bjb2RlcyBkZWZpbmVkIGluIHRoZSBzcGVjLgotT1BDT0RFX0NP
TlRJTlVBVElPTiA9IDB4MAotT1BDT0RFX1RFWFQgPSAweDEKLU9QQ09ERV9CSU5BUlkgPSAweDIK
LU9QQ09ERV9DTE9TRSA9IDB4OAotT1BDT0RFX1BJTkcgPSAweDkKLU9QQ09ERV9QT05HID0gMHhh
Ci0KLSMgVVVJRHMgdXNlZCBieSBIeUJpIDA0IGFuZCBsYXRlciBvcGVuaW5nIGhhbmRzaGFrZSBh
bmQgZnJhbWUgbWFza2luZy4KLVdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9ICcyNThFQUZBNS1FOTE0
LTQ3REEtOTVDQS1DNUFCMERDODVCMTEnCi0KLSMgT3BlbmluZyBoYW5kc2hha2UgaGVhZGVyIG5h
bWVzIGFuZCBleHBlY3RlZCB2YWx1ZXMuCi1VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlJwotV0VC
U09DS0VUX1VQR1JBREVfVFlQRSA9ICd3ZWJzb2NrZXQnCi1XRUJTT0NLRVRfVVBHUkFERV9UWVBF
X0hJWElFNzUgPSAnV2ViU29ja2V0JwotQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbicK
LVVQR1JBREVfQ09OTkVDVElPTl9UWVBFID0gJ1VwZ3JhZGUnCi1IT1NUX0hFQURFUiA9ICdIb3N0
JwotT1JJR0lOX0hFQURFUiA9ICdPcmlnaW4nCi1TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIg
PSAnU2VjLVdlYlNvY2tldC1PcmlnaW4nCi1TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIgPSAnU2Vj
LVdlYlNvY2tldC1LZXknCi1TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIgPSAnU2VjLVdlYlNv
Y2tldC1BY2NlcHQnCi1TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSID0gJ1NlYy1XZWJTb2Nr
ZXQtVmVyc2lvbicKLVNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSID0gJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wnCi1TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSID0gJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucycKLVNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSID0gJ1NlYy1XZWJT
b2NrZXQtRHJhZnQnCi1TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQt
S2V5MScKLVNFQ19XRUJTT0NLRVRfS0VZMl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1LZXkyJwot
U0VDX1dFQlNPQ0tFVF9MT0NBVElPTl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbicK
LQotIyBFeHRlbnNpb25zCi1ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICdkZWZsYXRlLWZyYW1l
JwotUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxhdGUnCi1Y
X1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1kZWZsYXRlLWZyYW1l
JwotTVVYX0VYVEVOU0lPTiA9ICdtdXhfRE9fTk9UX1VTRScKLQotIyBTdGF0dXMgY29kZXMKLSMg
Q29kZSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVELCBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRSwg
YW5kCi0jIFNUQVRVU19UTFNfSEFORFNIQUtFIGFyZSBwc2V1ZG8gY29kZXMgdG8gaW5kaWNhdGUg
c3BlY2lmaWMgZXJyb3IgY2FzZXMuCi0jIENvdWxkIG5vdCBiZSB1c2VkIGZvciBjb2RlcyBpbiBh
Y3R1YWwgY2xvc2luZyBmcmFtZXMuCi0jIEFwcGxpY2F0aW9uIGxldmVsIGVycm9ycyBtdXN0IHVz
ZSBjb2RlcyBpbiB0aGUgcmFuZ2UKLSMgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFIHRvIFNU
QVRVU19VU0VSX1BSSVZBVEVfTUFYLiBUaGUgY29kZXMgaW4gdGhlCi0jIHJhbmdlIFNUQVRVU19V
U0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCBhcmUgbWFu
YWdlZAotIyBieSBJQU5BLiBVc3VhbGx5IGFwcGxpY2F0aW9uIG11c3QgZGVmaW5lIHVzZXIgcHJv
dG9jb2wgbGV2ZWwgZXJyb3JzIGluIHRoZQotIyByYW5nZSBTVEFUVVNfVVNFUl9QUklWQVRFX0JB
U0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguCi1TVEFUVVNfTk9STUFMX0NMT1NVUkUgPSAx
MDAwCi1TVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKLVNUQVRVU19QUk9UT0NPTF9FUlJPUiA9IDEw
MDIKLVNUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAwMwotU1RBVFVTX05PX1NUQVRVU19SRUNF
SVZFRCA9IDEwMDUKLVNUQVRVU19BQk5PUk1BTF9DTE9TVVJFID0gMTAwNgotU1RBVFVTX0lOVkFM
SURfRlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNwotU1RBVFVTX1BPTElDWV9WSU9MQVRJT04gPSAx
MDA4Ci1TVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQotU1RBVFVTX01BTkRBVE9SWV9FWFRF
TlNJT04gPSAxMDEwCi1TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IgPSAxMDExCi1TVEFU
VVNfVExTX0hBTkRTSEFLRSA9IDEwMTUKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfQkFTRSA9IDMw
MDAKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfTUFYID0gMzk5OQotU1RBVFVTX1VTRVJfUFJJVkFU
RV9CQVNFID0gNDAwMAotU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggPSA0OTk5Ci0jIEZvbGxvd2lu
ZyBkZWZpbml0aW9ucyBhcmUgYWxpYXNlcyB0byBrZWVwIGNvbXBhdGliaWxpdHkuIEFwcGxpY2F0
aW9ucyBtdXN0Ci0jIG5vdCB1c2UgdGhlc2Ugb2Jzb2xldGVkIGRlZmluaXRpb25zIGFueW1vcmUu
Ci1TVEFUVVNfTk9STUFMID0gU1RBVFVTX05PUk1BTF9DTE9TVVJFCi1TVEFUVVNfVU5TVVBQT1JU
RUQgPSBTVEFUVVNfVU5TVVBQT1JURURfREFUQQotU1RBVFVTX0NPREVfTk9UX0FWQUlMQUJMRSA9
IFNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQKLVNUQVRVU19BQk5PUk1BTF9DTE9TRSA9IFNUQVRV
U19BQk5PUk1BTF9DTE9TVVJFCi1TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEID0gU1RBVFVT
X0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBCi1TVEFUVVNfTUFOREFUT1JZX0VYVCA9IFNUQVRV
U19NQU5EQVRPUllfRVhURU5TSU9OCi0KLSMgSFRUUCBzdGF0dXMgY29kZXMKLUhUVFBfU1RBVFVT
X0JBRF9SRVFVRVNUID0gNDAwCi1IVFRQX1NUQVRVU19GT1JCSURERU4gPSA0MDMKLUhUVFBfU1RB
VFVTX05PVF9GT1VORCA9IDQwNAotCi0KLWRlZiBpc19jb250cm9sX29wY29kZShvcGNvZGUpOgot
ICAgIHJldHVybiAob3Bjb2RlID4+IDMpID09IDEKLQotCi1jbGFzcyBFeHRlbnNpb25QYXJhbWV0
ZXIob2JqZWN0KToKLQotICAgICIiIlRoaXMgaXMgZXhjaGFuZ2VkIG9uIGV4dGVuc2lvbiBuZWdv
dGlhdGlvbiBpbiBvcGVuaW5nIGhhbmRzaGFrZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lKToKLSAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLSAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBtb3JlIGVmZmljaWVudCBvbmUgc3Vj
aAotICAgICAgICAjIGFzIGRpY3Qgd2hlbiB0aGUgc3BlYyBjaGFuZ2VzIHRvIHNheSBsaWtlCi0g
ICAgICAgICMgLSBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSB1bmlxdWUKLSAgICAgICAgIyAtIFRo
ZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIG5vdCBzaWduaWZpY2FudAotICAgICAgICBzZWxmLl9w
YXJhbWV0ZXJzID0gW10KLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4g
dGhlIGV4dGVuc2lvbiBuYW1lLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQotCi0gICAg
ZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICAiIiJBZGQgYSBw
YXJhbWV0ZXIuIiIiCi0gICAgICAgIHNlbGYuX3BhcmFtZXRlcnMuYXBwZW5kKChuYW1lLCB2YWx1
ZSkpCi0KLSAgICBkZWYgZ2V0X3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgcGFyYW1ldGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKLQotICAg
IGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5h
bWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIiIgotICAgICAgICByZXR1cm4gW25hbWUgZm9yIG5hbWUs
IHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQotCi0gICAgZGVmIGhhc19wYXJhbWV0
ZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlRlc3QgaWYgYSBwYXJhbWV0ZXIgZXhpc3RzLiIi
IgotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVy
czoKLSAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFtZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBnZXRfcGFyYW1ldGVy
X3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJHZXQgdGhlIHZhbHVlIG9mIGEgc3BlY2lm
aWMgcGFyYW1ldGVyLiIiIgotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4g
c2VsZi5fcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFtZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKLQotCi1jbGFzcyBFeHRlbnNpb25QYXJz
aW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0KLSAgICAiIiJFeGNlcHRpb24gdG8gaGFuZGxlIGVy
cm9ycyBpbiBleHRlbnNpb24gcGFyc2luZy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu
YW1lKToKLSAgICAgICAgc3VwZXIoRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgc2VsZikuX19p
bml0X18obmFtZSkKLQotCi1kZWYgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0ZSwgZGVmaW5p
dGlvbik6Ci0gICAgcGFyYW1fbmFtZSA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihz
dGF0ZSkKLQotICAgIGlmIHBhcmFtX25hbWUgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgRXh0ZW5z
aW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgcGFyYW1ldGVyIG5hbWUgZm91bmQnKQotCi0g
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgaWYgbm90IGh0
dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc9Jyk6Ci0gICAgICAgIGRlZmlu
aXRpb24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBOb25lKQotICAgICAgICByZXR1cm4KLQot
ICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKLQotICAgICMgVE9ETyh0
eW9zaGlubyk6IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQgcGFyc2VkIHBhcmFtX3ZhbHVlIGlz
IHRva2VuCi0gICAgcGFyYW1fdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW5f
b3JfcXVvdGVkX3N0cmluZyhzdGF0ZSkKLSAgICBpZiBwYXJhbV92YWx1ZSBpcyBOb25lOgotICAg
ICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAotICAgICAgICAgICAgJ05vIHZh
bGlkIHBhcmFtZXRlciB2YWx1ZSBmb3VuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mICcKLSAg
ICAgICAgICAgICdwYXJhbWV0ZXIgJXInICUgcGFyYW1fbmFtZSkKLQotICAgIGRlZmluaXRpb24u
YWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSkKLQotCi1kZWYgX3BhcnNlX2V4
dGVuc2lvbihzdGF0ZSk6Ci0gICAgZXh0ZW5zaW9uX3Rva2VuID0gaHR0cF9oZWFkZXJfdXRpbC5j
b25zdW1lX3Rva2VuKHN0YXRlKQotICAgIGlmIGV4dGVuc2lvbl90b2tlbiBpcyBOb25lOgotICAg
ICAgICByZXR1cm4gTm9uZQotCi0gICAgZXh0ZW5zaW9uID0gRXh0ZW5zaW9uUGFyYW1ldGVyKGV4
dGVuc2lvbl90b2tlbikKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJzsnKToKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIF9wYXJzZV9leHRlbnNpb25fcGFyYW0oc3RhdGUsIGV4dGVuc2lvbikKLSAg
ICAgICAgZXhjZXB0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAg
IHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxl
ZCB0byBwYXJzZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUKLSAgICAgICAgICAgICAgICAoZXh0
ZW5zaW9uX3Rva2VuLCBlKSkKLQotICAgIHJldHVybiBleHRlbnNpb24KLQotCi1kZWYgcGFyc2Vf
ZXh0ZW5zaW9ucyhkYXRhKToKLSAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIHZhbHVlLgotCi0gICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5zaW9uUGFyYW1ldGVy
IG9iamVjdHMuCi0gICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQuCi0gICAgIiIiCi0g
ICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQotCi0gICAgZXh0
ZW5zaW9uX2xpc3QgPSBbXQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGV4dGVuc2lvbiA9IF9w
YXJzZV9leHRlbnNpb24oc3RhdGUpCi0gICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlmIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGJyZWFrCi0KLSAg
ICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6
Ci0gICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjog
JwotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJQotICAg
ICAgICAgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkpCi0KLSAgICAgICAgaHR0
cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgaWYgbGVuKGV4dGVuc2lv
bl9saXN0KSA9PSAwOgotICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAot
ICAgICAgICAgICAgJ05vIHZhbGlkIGV4dGVuc2lvbiBlbnRyeSBmb3VuZCcpCi0KLSAgICByZXR1
cm4gZXh0ZW5zaW9uX2xpc3QKLQotCi1kZWYgZm9ybWF0X2V4dGVuc2lvbihleHRlbnNpb24pOgot
ICAgICIiIkZvcm1hdCBhbiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0LiIiIgotICAgIGZvcm1h
dHRlZF9wYXJhbXMgPSBbZXh0ZW5zaW9uLm5hbWUoKV0KLSAgICBmb3IgcGFyYW1fbmFtZSwgcGFy
YW1fdmFsdWUgaW4gZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgIGlmIHBhcmFt
X3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICBmb3JtYXR0ZWRfcGFyYW1zLmFwcGVuZChwYXJh
bV9uYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcXVvdGVkX3ZhbHVlID0gaHR0cF9o
ZWFkZXJfdXRpbC5xdW90ZV9pZl9uZWNlc3NhcnkocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICBm
b3JtYXR0ZWRfcGFyYW1zLmFwcGVuZCgnJXM9JXMnICUgKHBhcmFtX25hbWUsIHF1b3RlZF92YWx1
ZSkpCi0gICAgcmV0dXJuICc7ICcuam9pbihmb3JtYXR0ZWRfcGFyYW1zKQotCi0KLWRlZiBmb3Jt
YXRfZXh0ZW5zaW9ucyhleHRlbnNpb25fbGlzdCk6Ci0gICAgIiIiRm9ybWF0IGEgbGlzdCBvZiBF
eHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4iIiIKLSAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xp
c3QgPSBbXQotICAgIGZvciBleHRlbnNpb24gaW4gZXh0ZW5zaW9uX2xpc3Q6Ci0gICAgICAgIGZv
cm1hdHRlZF9leHRlbnNpb25fbGlzdC5hcHBlbmQoZm9ybWF0X2V4dGVuc2lvbihleHRlbnNpb24p
KQotICAgIHJldHVybiAnLCAnLmpvaW4oZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0KQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0
Y2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjU5MWZlOGI5ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOTMgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRGlzcGF0Y2ggV2ViU29ja2V0IHJlcXVlc3QuCi0iIiIK
LQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRz
aGFrZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtdXgKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1NPVVJDRV9QQVRIX1BBVFRFUk4g
PSByZS5jb21waWxlKHInKD9pKV93c2hcLnB5JCcpCi1fU09VUkNFX1NVRkZJWCA9ICdfd3NoLnB5
JwotX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUgPSAnd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UnCi1fVFJBTlNGRVJfREFUQV9IQU5ETEVSX05BTUUgPSAnd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhJwotX1BBU1NJVkVfQ0xPU0lOR19IQU5EU0hBS0VfSEFORExFUl9OQU1FID0g
KAotICAgICd3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UnKQotCi0KLWNsYXNz
IERpc3BhdGNoRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIGluIGRpc3Bh
dGNoaW5nIFdlYlNvY2tldCByZXF1ZXN0LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfTk9UX0ZPVU5EKToKLSAgICAgICAgc3VwZXIo
RGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCi0gICAgICAgIHNlbGYuc3Rh
dHVzID0gc3RhdHVzCi0KLQotZGVmIF9kZWZhdWx0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Vf
aGFuZGxlcihyZXF1ZXN0KToKLSAgICAiIiJEZWZhdWx0IHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgotCi0gICAgcmV0dXJuIGNvbW1vbi5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsICcnCi0KLQotZGVmIF9ub3JtYWxpemVfcGF0aChwYXRoKToKLSAgICAiIiJO
b3JtYWxpemUgcGF0aC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHBhdGg6IHRoZSBwYXRoIHRvIG5v
cm1hbGl6ZS4KLQotICAgIFBhdGggaXMgY29udmVydGVkIHRvIHRoZSBhYnNvbHV0ZSBwYXRoLgot
ICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVyICdcXCcgb3IgJy8nIGFzIHRoZSBzZXBh
cmF0b3IuCi0gICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBhbHdheXMgdXNlcyAnLycgcmVnYXJkbGVz
cyBvZiB0aGUgcGxhdGZvcm0uCi0gICAgIiIiCi0KLSAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdc
XCcsIG9zLnBhdGguc2VwKQotICAgIHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCi0gICAg
cGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgcmV0dXJuIHBhdGgKLQotCi1kZWYg
X2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihiYXNlX2Rpcik6Ci0gICAgIiIiUmV0
dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIHBhdGggb2YgYSBXZWJTb2NrZXQgaGFu
ZGxlciBzb3VyY2UKLSAgICBmaWxlIHRvIGEgcmVzb3VyY2Ugc3RyaW5nIGJ5IHJlbW92aW5nIHRo
ZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBmcm9tCi0gICAgaXRzIGhlYWQsIHJlbW92aW5n
IF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRhaWwsIGFuZCByZXBsYWNpbmcgcGF0aAotICAgIHNl
cGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCi0KLSAgICBBcmdzOgotICAgICAgICBiYXNlX2Rpcjog
dGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgYmFzZV9kaXIg
PSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIpCi0KLSAgICBiYXNlX2xlbiA9IGxlbihiYXNlX2Rp
cikKLSAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklYKQotCi0gICAgZGVmIGNvbnZl
cnRlcihwYXRoKToKLSAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoX1NPVVJDRV9TVUZGSVgp
OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBfbm9ybWFsaXplX3BhdGggbXVz
dCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29sdmluZyBzeW1saW5rIGJyZWFrcwotICAgICAgICAj
IGZvbGxvd2luZyBwYXRoIGNoZWNrLgotICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdcXCcs
ICcvJykKLSAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChiYXNlX2Rpcik6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gcGF0aFtiYXNlX2xlbjotc3VmZml4X2xl
bl0KLQotICAgIHJldHVybiBjb252ZXJ0ZXIKLQotCi1kZWYgX2VudW1lcmF0ZV9oYW5kbGVyX2Zp
bGVfcGF0aHMoZGlyZWN0b3J5KToKLSAgICAiIiJSZXR1cm5zIGEgZ2VuZXJhdG9yIHRoYXQgZW51
bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBzb3VyY2UgZmlsZSBuYW1lcwotICAgIGluIHRoZSBn
aXZlbiBkaXJlY3RvcnkuCi0gICAgIiIiCi0KLSAgICBmb3Igcm9vdCwgdW51c2VkX2RpcnMsIGZp
bGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKLSAgICAgICAgZm9yIGJhc2UgaW4gZmlsZXM6Ci0g
ICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGJhc2UpCi0gICAgICAgICAgICBp
ZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFyY2gocGF0aCk6Ci0gICAgICAgICAgICAgICAgeWll
bGQgcGF0aAotCi0KLWNsYXNzIF9IYW5kbGVyU3VpdGUob2JqZWN0KToKLSAgICAiIiJBIGhhbmRs
ZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRvX2V4
dHJhX2hhbmRzaGFrZSwgdHJhbnNmZXJfZGF0YSwKLSAgICAgICAgICAgICAgICAgcGFzc2l2ZV9j
bG9zaW5nX2hhbmRzaGFrZSk6Ci0gICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlID0gZG9f
ZXh0cmFfaGFuZHNoYWtlCi0gICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YSA9IHRyYW5zZmVyX2Rh
dGEKLSAgICAgICAgc2VsZi5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlID0gcGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZQotCi0KLWRlZiBfc291cmNlX2hhbmRsZXJfZmlsZShoYW5kbGVyX2RlZmlu
aXRpb24pOgotICAgICIiIlNvdXJjZSBhIGhhbmRsZXIgZGVmaW5pdGlvbiBzdHJpbmcuCi0KLSAg
ICBBcmdzOgotICAgICAgICBoYW5kbGVyX2RlZmluaXRpb246IGEgc3RyaW5nIGNvbnRhaW5pbmcg
UHl0aG9uIHN0YXRlbWVudHMgdGhhdCBkZWZpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVyIGZ1bmN0aW9ucy4KLSAgICAiIiIKLQotICAgIGdsb2JhbF9kaWMgPSB7fQotICAg
IHRyeToKLSAgICAgICAgZXhlYyhoYW5kbGVyX2RlZmluaXRpb24sIGdsb2JhbF9kaWMpCi0gICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ0Vycm9y
IGluIHNvdXJjaW5nIGhhbmRsZXI6JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0gICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9o
YW5kbGVyID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZV9oYW5kbGVyID0gX2V4dHJhY3RfaGFuZGxlcigKLSAgICAgICAgICAgIGdsb2JhbF9kaWMsIF9Q
QVNTSVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSkKLSAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSAoCi0gICAg
ICAgICAgICBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIpCi0gICAg
cmV0dXJuIF9IYW5kbGVyU3VpdGUoCi0gICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUpLAotICAgICAgICBfZXh0cmFjdF9o
YW5kbGVyKGdsb2JhbF9kaWMsIF9UUkFOU0ZFUl9EQVRBX0hBTkRMRVJfTkFNRSksCi0gICAgICAg
IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKLQotCi1kZWYgX2V4dHJhY3RfaGFu
ZGxlcihkaWMsIG5hbWUpOgotICAgICIiIkV4dHJhY3RzIGEgY2FsbGFibGUgd2l0aCB0aGUgc3Bl
Y2lmaWVkIG5hbWUgZnJvbSB0aGUgZ2l2ZW4gZGljdGlvbmFyeQotICAgIGRpYy4KLSAgICAiIiIK
LQotICAgIGlmIG5hbWUgbm90IGluIGRpYzoKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oJyVzIGlzIG5vdCBkZWZpbmVkLicgJSBuYW1lKQotICAgIGhhbmRsZXIgPSBkaWNbbmFtZV0K
LSAgICBpZiBub3QgY2FsbGFibGUoaGFuZGxlcik6Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXhj
ZXB0aW9uKCclcyBpcyBub3QgY2FsbGFibGUuJyAlIG5hbWUpCi0gICAgcmV0dXJuIGhhbmRsZXIK
LQotCi1jbGFzcyBEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiRGlzcGF0Y2hlcyBXZWJTb2Nr
ZXQgcmVxdWVzdHMuCi0KLSAgICBUaGlzIGNsYXNzIG1haW50YWlucyBhIG1hcCBmcm9tIHJlc291
cmNlIG5hbWUgdG8gaGFuZGxlcnMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oCi0gICAg
ICAgIHNlbGYsIHJvb3RfZGlyLCBzY2FuX2Rpcj1Ob25lLAotICAgICAgICBhbGxvd19oYW5kbGVy
c19vdXRzaWRlX3Jvb3RfZGlyPVRydWUpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFu
Y2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJvb3RfZGlyOiBUaGUgZGlyZWN0b3J5
IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKLSAgICAgICAgICAgICAgICAgICAg
ICBwbGFjZWQuCi0gICAgICAgICAgICBzY2FuX2RpcjogVGhlIGRpcmVjdG9yeSB3aGVyZSBoYW5k
bGVyIGRlZmluaXRpb24gZmlsZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoZWQu
IHNjYW5fZGlyIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgcm9vdF9kaXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgaW5jbHVkaW5nIHJvb3RfZGlyIGl0c2VsZi4gIElmIHNjYW5fZGlyIGlzIE5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgcm9vdF9kaXIgaXMgdXNlZCBhcyBzY2FuX2Rpci4g
c2Nhbl9kaXIgY2FuIGJlIHVzZWZ1bAotICAgICAgICAgICAgICAgICAgICAgIGluIHNhdmluZyBz
Y2FuIHRpbWUgd2hlbiByb290X2RpciBjb250YWlucyBtYW55Ci0gICAgICAgICAgICAgICAgICAg
ICAgc3ViZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jv
b3RfZGlyOiBTY2FucyBoYW5kbGVyIGZpbGVzIGV2ZW4gaWYgdGhlaXIKLSAgICAgICAgICAgICAg
ICAgICAgICBjYW5vbmljYWwgcGF0aCBpcyBub3QgdW5kZXIgcm9vdF9kaXIuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQot
Ci0gICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwID0ge30KLSAgICAgICAgc2VsZi5fc291
cmNlX3dhcm5pbmdzID0gW10KLSAgICAgICAgaWYgc2Nhbl9kaXIgaXMgTm9uZToKLSAgICAgICAg
ICAgIHNjYW5fZGlyID0gcm9vdF9kaXIKLSAgICAgICAgaWYgbm90IG9zLnBhdGgucmVhbHBhdGgo
c2Nhbl9kaXIpLnN0YXJ0c3dpdGgoCi0gICAgICAgICAgICAgICAgb3MucGF0aC5yZWFscGF0aChy
b290X2RpcikpOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ3NjYW5fZGly
OiVzIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Jvb3RfZGlyOiVzLicgJSAoc2Nhbl9kaXIsIHJvb3RfZGlyKSkKLSAgICAg
ICAgc2VsZi5fc291cmNlX2hhbmRsZXJfZmlsZXNfaW5fZGlyKAotICAgICAgICAgICAgcm9vdF9k
aXIsIHNjYW5fZGlyLCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQotCi0gICAgZGVm
IGFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsaWFzX3Jlc291cmNlX3BhdGgsIGV4aXN0aW5nX3Jlc291cmNlX3BhdGgpOgotICAg
ICAgICAiIiJBZGQgcmVzb3VyY2UgcGF0aCBhbGlhcy4KLQotICAgICAgICBPbmNlIGFkZGVkLCBy
ZXF1ZXN0IHRvIGFsaWFzX3Jlc291cmNlX3BhdGggd291bGQgYmUgaGFuZGxlZCBieQotICAgICAg
ICBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIGV4aXN0aW5nX3Jlc291cmNlX3BhdGguCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGFsaWFzX3Jlc291cmNlX3BhdGg6IGFsaWFzIHJlc291cmNl
IHBhdGgKLSAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291cmNlX3BhdGg6IGV4aXN0aW5nIHJlc291
cmNlIHBhdGgKLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXJf
c3VpdGUgPSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcFtleGlzdGluZ19yZXNvdXJjZV9wYXRoXQot
ICAgICAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXBbYWxpYXNfcmVzb3VyY2VfcGF0aF0g
PSBoYW5kbGVyX3N1aXRlCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJh
aXNlIERpc3BhdGNoRXhjZXB0aW9uKCdObyBoYW5kbGVyIGZvcjogJXInICUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291cmNlX3BhdGgpCi0KLSAgICBk
ZWYgc291cmNlX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gd2FybmluZ3MgaW4g
c291cmNpbmcgaGFuZGxlcnMuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3NvdXJjZV93YXJu
aW5ncwotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCByZXF1ZXN0KToKLSAgICAg
ICAgIiIiRG8gZXh0cmEgY2hlY2tpbmcgaW4gV2ViU29ja2V0IGhhbmRzaGFrZS4KLQotICAgICAg
ICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3QudXJpIGFuZCBjYWxsIGl0cwotICAg
ICAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBmdW5jdGlvbi4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi0gICAgICAg
IFJhaXNlczoKLSAgICAgICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2Fz
IG5vdCBmb3VuZAotICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2Vy
IGhhbmRsZXIgYWJvcnQgY29ubmVjdGlvbgotICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0aW9u
OiB3aGVuIG9wZW5pbmcgaGFuZHNoYWtlIGZhaWxlZAotICAgICAgICAiIiIKLQotICAgICAgICBo
YW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291cmNl
KQotICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBE
aXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UpCi0gICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8gPSBoYW5kbGVyX3N1aXRlLmRvX2V4dHJh
X2hhbmRzaGFrZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkb19leHRyYV9oYW5kc2hha2Vf
KHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgIyBSZS1yYWlzZSB0byB0ZWxsIHRoZSBjYWxsZXIgb2YgdGhp
cyBmdW5jdGlvbiB0byBmaW5pc2ggdGhpcwotICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhv
dXQgc2VuZGluZyBhbnkgZXJyb3IuCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVz
JywgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3Rv
X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9y
ICVzOiAnICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ET19FWFRSQV9IQU5EU0hB
S0VfSEFORExFUl9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpLAotICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UgaGFu
ZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVO
KQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkxl
dCBhIGhhbmRsZXIgdHJhbnNmZXJfZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KLQotICAg
ICAgICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNh
bGwgaXRzCi0gICAgICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRs
ZXIgd2FzIG5vdCBmb3VuZAotICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hl
biB1c2VyIGhhbmRsZXIgYWJvcnQgY29ubmVjdGlvbgotICAgICAgICAiIiIKLQotICAgICAgICAj
IFRPRE8odHlvc2hpbm8pOiBUZXJtaW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBw
b3NzaWJsZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbXV4LnVzZV9tdXgocmVxdWVz
dCk6Ci0gICAgICAgICAgICAgICAgbXV4LnN0YXJ0KHJlcXVlc3QsIHNlbGYpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVy
X3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgaWYgaGFuZGxlcl9z
dWl0ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlv
bignTm8gaGFuZGxlciBmb3I6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgdHJhbnNm
ZXJfZGF0YV8gPSBoYW5kbGVyX3N1aXRlLnRyYW5zZmVyX2RhdGEKLSAgICAgICAgICAgICAgICB0
cmFuc2Zlcl9kYXRhXyhyZXF1ZXN0KQotCi0gICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2
ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKCkKLSAgICAgICAgIyBDYXRjaCBub24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUg
aGFuZGxlciBkaWRuJ3QgaGFuZGxlLgotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRC
eVVzZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMn
LCB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgICAgICAjIEludmFsaWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNh
dWdodCBiZWZvcmUKLSAgICAgICAgICAgICMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24g
dGhhdCBjYXRjaGVzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KLSAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2Vf
Y29ubmVjdGlvbihjb21tb24uU1RBVFVTX1BST1RPQ09MX0VSUk9SKQotICAgICAgICBleGNlcHQg
bXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQotICAgICAgICBl
eGNlcHQgc3RyZWFtLkludmFsaWRVVEY4RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZS
QU1FX1BBWUxPQURfREFUQSkKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMn
LCBlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAjIEFueSBv
dGhlciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGNhbGxlciBvZiB0aGlzCi0gICAg
ICAgICAgICAjIGZ1bmN0aW9uLgotICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9f
ZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczog
JyAlICgKLSAgICAgICAgICAgICAgICAgICAgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FLCBy
ZXF1ZXN0LndzX3Jlc291cmNlKSwKLSAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFp
c2UKLQotICAgIGRlZiBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgot
ICAgICAgICAiIiJQcmVwYXJlIGNvZGUgYW5kIHJlYXNvbiBmb3IgcmVzcG9uZGluZyBjbGllbnQg
aW5pdGlhdGVkIGNsb3NpbmcKLSAgICAgICAgaGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAg
ICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jl
c291cmNlKQotICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gX2RlZmF1bHRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyKHJlcXVlc3Qp
Ci0gICAgICAgIHJldHVybiBoYW5kbGVyX3N1aXRlLnBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uo
cmVxdWVzdCkKLQotICAgIGRlZiBnZXRfaGFuZGxlcl9zdWl0ZShzZWxmLCByZXNvdXJjZSk6Ci0g
ICAgICAgICIiIlJldHJpZXZlcyB0d28gaGFuZGxlcnMgKG9uZSBmb3IgZXh0cmEgaGFuZHNoYWtl
IHByb2Nlc3NpbmcsIGFuZCBvbmUKLSAgICAgICAgZm9yIGRhdGEgdHJhbnNmZXIpIGZvciB0aGUg
Z2l2ZW4gcmVxdWVzdCBhcyBhIEhhbmRsZXJTdWl0ZSBvYmplY3QuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIGZyYWdtZW50ID0gTm9uZQotICAgICAgICBpZiAnIycgaW4gcmVzb3VyY2U6Ci0gICAg
ICAgICAgICByZXNvdXJjZSwgZnJhZ21lbnQgPSByZXNvdXJjZS5zcGxpdCgnIycsIDEpCi0gICAg
ICAgIGlmICc/JyBpbiByZXNvdXJjZToKLSAgICAgICAgICAgIHJlc291cmNlID0gcmVzb3VyY2Uu
c3BsaXQoJz8nLCAxKVswXQotICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5faGFuZGxlcl9z
dWl0ZV9tYXAuZ2V0KHJlc291cmNlKQotICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGFuZCBmcmFn
bWVudDoKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdGcmFnbWVudCBpZGVu
dGlmaWVycyBNVVNUIE5PVCBiZSB1c2VkIG9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdXZWJTb2NrZXQgVVJJcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCi0gICAgICAgIHJldHVybiBo
YW5kbGVyX3N1aXRlCi0KLSAgICBkZWYgX3NvdXJjZV9oYW5kbGVyX2ZpbGVzX2luX2RpcigKLSAg
ICAgICAgc2VsZiwgcm9vdF9kaXIsIHNjYW5fZGlyLCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jv
b3RfZGlyKToKLSAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMg
aW4gdGhlIHNjYW5fZGlyIGRpcmVjdG9yeS4KLQotICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBp
cyBkZXRlcm1pbmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgotICAgICAgICAiIiIKLQotICAgICAg
ICAjIFdlIGJ1aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3VtaW5n
IHRoYXQgdGhlcmUncwotICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0byBz
Y2FuX2RpciBhbmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5Ci0gICAgICAgICMgY29tcGFyaW5nIHJl
YWxwYXRoIG9mIHRoZW0uCi0KLSAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0aC4g
U2VlCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
NjAzCi0KLSAgICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0
ZXIocm9vdF9kaXIpCi0gICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHNj
YW5fZGlyKQotICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290X2Rp
cikKLSAgICAgICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoc2Nh
bl9yZWFscGF0aCk6Ci0gICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNpZGVf
cm9vdF9kaXIgYW5kCi0gICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBhdGgp
LnN0YXJ0c3dpdGgocm9vdF9yZWFscGF0aCkpKToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBpcyBu
b3QgdW5kZXIgcm9vdCBkaXJlY3RvcnknICUKLSAgICAgICAgICAgICAgICAgICAgcGF0aCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IGhhbmRsZXJfc3VpdGUgPSBfc291cmNlX2hhbmRsZXJfZmlsZShvcGVuKHBhdGgpLnJlYWQoKSkK
LSAgICAgICAgICAgIGV4Y2VwdCBEaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBlbmQoJyVzOiAlcycgJSAocGF0aCwgZSkpCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlc291cmNlID0gY29udmVydChw
YXRoKQotICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICdQYXRoIHRvIHJlc291cmNl
IGNvbnZlcnNpb24gb24gJXMgZmFpbGVkJyAlIHBhdGgpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2NvbnZlcnQocGF0aCldID0gaGFu
ZGxlcl9zdWl0ZQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lv
bnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYmU3NDlmZmY1OS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw3NTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwK
LWZyb20gbW9kX3B5d2Vic29ja2V0Lmh0dHBfaGVhZGVyX3V0aWwgaW1wb3J0IHF1b3RlX2lmX25l
Y2Vzc2FyeQotCi0KLSMgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHNlcnZlciBzaWRlIGV4dGVuc2lv
biBwcm9jZXNzb3IgY2xhc3Nlcy4KLV9hdmFpbGFibGVfcHJvY2Vzc29ycyA9IHt9Ci1fY29tcHJl
c3Npb25fZXh0ZW5zaW9uX25hbWVzID0gW10KLQotCi1jbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJ
bnRlcmZhY2Uob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQot
Ci0gICAgZGVmIHJlcXVlc3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0Ci0K
LSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBjaGVj
a19jb25zaXN0ZW5jeV93aXRoX290aGVyX3Byb2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRfYWN0aXZlKHNlbGYsIGFjdGl2ZSk6Ci0gICAgICAg
IHNlbGYuX2FjdGl2ZSA9IGFjdGl2ZQotCi0gICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2FjdGl2ZQotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
X2ludGVybmFsKHNlbGYpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9leHRl
bnNpb25fcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9hY3RpdmU6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0V4dGVuc2lvbiAlcyBpcyBkZWFjdGl2YXRlZCcs
IHNlbGYubmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25z
ZSA9IHNlbGYuX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoKQotICAgICAgICBpZiBy
ZXNwb25zZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVy
bmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHVw
X3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5f
YWN0aXZlOgotICAgICAgICAgICAgc2VsZi5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwo
c3RyZWFtX29wdGlvbnMpCi0KLQotZGVmIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8o
Ci0gICAgICAgIGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdl
X3JhdGlvKToKLSAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0g
ICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAgICBpZiBvcmlnaW5hbF9ieXRlcyAhPSAwOgotICAg
ICAgICByYXRpbyA9IGZsb2F0KGZpbHRlcmVkX2J5dGVzKSAvIG9yaWdpbmFsX2J5dGVzCi0KLSAg
ICBsb2dnZXIuZGVidWcoJ091dGdvaW5nIGNvbXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTog
JWYpJyAlCi0gICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfbG9n
X2luY29taW5nX2NvbXByZXNzaW9uX3JhdGlvKAotICAgICAgICBsb2dnZXIsIHJlY2VpdmVkX2J5
dGVzLCBmaWx0ZXJlZF9ieXRlcywgYXZlcmFnZV9yYXRpbyk6Ci0gICAgIyBQcmludCBpbmYgd2hl
biByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgotICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCi0gICAg
aWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKLSAgICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9i
eXRlcykgLyBmaWx0ZXJlZF9ieXRlcwotCi0gICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21w
cmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQotICAgICAgICAgICAgKHJhdGlvLCBh
dmVyYWdlX3JhdGlvKSkKLQotCi1kZWYgX3BhcnNlX3dpbmRvd19iaXRzKGJpdHMpOgotICAgICIi
IlJldHVybiBwYXJzZWQgaW50ZWdlciB2YWx1ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBjb25mb3Jt
cyB0byB0aGUKLSAgICBncmFtbWFyIG9mIHRoZSB3aW5kb3cgYml0cyBleHRlbnNpb24gcGFyYW1l
dGVycy4KLSAgICAiIiIKLQotICAgIGlmIGJpdHMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQnKQotCi0gICAgIyBGb3Igbm9uIGludGVnZXIgdmFs
dWVzIHN1Y2ggYXMgIjEwLjAiLCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLgotICAgIGludF9i
aXRzID0gaW50KGJpdHMpCi0KLSAgICAjIEZpcnN0IGNvbmRpdGlvbiBpcyB0byBkcm9wIGxlYWRp
bmcgemVybyBjYXNlIGUuZy4gIjA4Ii4KLSAgICBpZiBiaXRzICE9IHN0cihpbnRfYml0cykgb3Ig
aW50X2JpdHMgPCA4IG9yIGludF9iaXRzID4gMTU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ludmFsaWQgdmFsdWU6ICVyJyAlIGJpdHMpCi0KLSAgICByZXR1cm4gaW50X2JpdHMKLQotCi1j
bGFzcyBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcihvYmplY3QpOgotICAgICIiIlN0b3JlcyB0b3Rh
bCBieXRlcyBvZiBvcmlnaW5hbCBhbmQgcmVzdWx0IGRhdGEsIGFuZCBjYWxjdWxhdGVzIGF2ZXJh
Z2UKLSAgICByZXN1bHQgLyBvcmlnaW5hbCByYXRpby4KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgPSAwCi0gICAg
ICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKLQotICAgIGRlZiBhZGRfb3JpZ2luYWxf
Ynl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyAr
PSB2YWx1ZQotCi0gICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAg
ICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUKLQotICAgIGRlZiBnZXRfYXZlcmFn
ZV9yYXRpbyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0g
MDoKLSAgICAgICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzKSAv
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdpbmYnKQotCi0KLWNsYXNzIERlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgot
ICAgICIiImRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmlj
YXRpb246Ci0gICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdHlvc2hpbm8taHli
aS13ZWJzb2NrZXQtcGVyZnJhbWUtZGVmbGF0ZQotICAgICIiIgotCi0gICAgX1dJTkRPV19CSVRT
X1BBUkFNID0gJ21heF93aW5kb3dfYml0cycKLSAgICBfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJB
TSA9ICdub19jb250ZXh0X3Rha2VvdmVyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVl
c3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwg
cmVxdWVzdCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCi0KLSAgICAgICAgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAg
IHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotICAgICAgICBzZWxm
Ll9iZmluYWwgPSBGYWxzZQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAo
VG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAg
IyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhp
cyBmaWx0ZXIpCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRv
ciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAg
ICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAg
ICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5n
IHRoaXMgZmlsdGVyKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1
bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgbmFtZShzZWxmKToK
LSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTgotCi0gICAgZGVm
IF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAgICAjIEFueSB1
bmtub3duIHBhcmFtZXRlciB3aWxsIGJlIGp1c3QgaWdub3JlZC4KLQotICAgICAgICB3aW5kb3df
Yml0cyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYu
X1dJTkRPV19CSVRTX1BBUkFNKToKLSAgICAgICAgICAgIHdpbmRvd19iaXRzID0gc2VsZi5fcmVx
dWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19C
SVRTX1BBUkFNKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpbmRvd19iaXRz
ID0gX3BhcnNlX3dpbmRvd19iaXRzKHdpbmRvd19iaXRzKQotICAgICAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIG5v
X2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAg
ICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKQotICAgICAgICBpZiAobm9fY29u
dGV4dF90YWtlb3ZlciBhbmQKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRl
cl92YWx1ZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYu
X3JmYzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCi0gICAgICAgICAgICB3
aW5kb3dfYml0cywgbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgICAgICBzZWxmLl9yZmMxOTc5
X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9jb21w
cmVzc19vdXRnb2luZyA9IFRydWUKLQotICAgICAgICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCi0KLSAgICAgICAgaWYgc2VsZi5fcmVz
cG9uc2Vfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXNwb25zZS5hZGRf
cGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNLCBzdHIo
c2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMpKQotICAgICAgICBpZiBzZWxmLl9yZXNwb25zZV9u
b19jb250ZXh0X3Rha2VvdmVyOgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigK
LSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQot
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFbmFibGUgJXMgZXh0
ZW5zaW9uICgnCi0gICAgICAgICAgICAncmVxdWVzdDogd2luZG93X2JpdHM9JXM7IG5vX2NvbnRl
eHRfdGFrZW92ZXI9JXIsICcKLSAgICAgICAgICAgICdyZXNwb25zZTogd2luZG93X3diaXRzPSVz
OyBub19jb250ZXh0X3Rha2VvdmVyPSVyKScgJQotICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3Qu
bmFtZSgpLAotICAgICAgICAgICAgIHdpbmRvd19iaXRzLAotICAgICAgICAgICAgIG5vX2NvbnRl
eHRfdGFrZW92ZXIsCi0gICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMsCi0g
ICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcikpCi0KLSAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVy
bmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLQotICAgICAgICBjbGFzcyBfT3V0Z29pbmdGaWx0
ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0KLSAgICAgICAgICAgIGRlZiBm
aWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudC5fb3V0Z29p
bmdfZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZpbHRlcihvYmplY3Qp
OgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxm
LCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9pbmNvbWluZ19maWx0ZXIo
ZnJhbWUpCi0KLSAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5h
cHBlbmQoCi0gICAgICAgICAgICBfT3V0Z29pbmdGaWx0ZXIoc2VsZikpCi0gICAgICAgIHN0cmVh
bV9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuaW5zZXJ0KAotICAgICAgICAgICAgMCwg
X0luY29taW5nRmlsdGVyKHNlbGYpKQotCi0gICAgZGVmIHNldF9yZXNwb25zZV93aW5kb3dfYml0
cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzID0gdmFs
dWUKLQotICAgIGRlZiBzZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1
ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQot
Ci0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9iZmluYWwg
PSB2YWx1ZQotCi0gICAgZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAg
ICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVlCi0KLSAgICBkZWYgZGlzYWJsZV9v
dXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29p
bmcgPSBGYWxzZQotCi0gICAgZGVmIF9vdXRnb2luZ19maWx0ZXIoc2VsZiwgZnJhbWUpOgotICAg
ICAgICAiIiJUcmFuc2Zvcm0gb3V0Z29pbmcgZnJhbWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQg
b25seSBieQotICAgICAgICBhbiBfT3V0Z29pbmdGaWx0ZXIgaW5zdGFuY2UuCi0gICAgICAgICIi
IgotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQot
ICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdp
bmFsX2J5dGVzKAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKLQotICAg
ICAgICBpZiAobm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nIG9yCi0gICAgICAgICAgICBjb21t
b24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSk6Ci0gICAgICAgICAgICBzZWxmLl9v
dXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAg
ICAgICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQotICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIuZmlsdGVy
KAotICAgICAgICAgICAgZnJhbWUucGF5bG9hZCwgYmZpbmFsPXNlbGYuX2JmaW5hbCkKLSAgICAg
ICAgZnJhbWUucnN2MSA9IDEKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4o
ZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxj
dWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9h
ZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxv
YWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAg
ICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVy
YWdlX3JhdGlvKCkpCi0KLSAgICBkZWYgX2luY29taW5nX2ZpbHRlcihzZWxmLCBmcmFtZSk6Ci0g
ICAgICAgICIiIlRyYW5zZm9ybSBpbmNvbWluZyBmcmFtZXMuIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCBvbmx5IGJ5Ci0gICAgICAgIGFuIF9JbmNvbWluZ0ZpbHRlciBpbnN0YW5jZS4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQp
Ci0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVz
dWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSkKLQotICAg
ICAgICBpZiBmcmFtZS5yc3YxICE9IDEgb3IgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1l
Lm9wY29kZSk6Ci0gICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1
bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgICAgICAgICByZWNlaXZlZF9w
YXlsb2FkX3NpemUpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5wYXlsb2Fk
ID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAg
ZnJhbWUucnN2MSA9IDAKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJh
bWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2Fk
X3NpemUpCi0KLSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9h
ZF9zaXplLAotICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAg
ICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJh
Z2VfcmF0aW8oKSkKLQotCi1fYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLkRFRkxBVEVfRlJB
TUVfRVhURU5TSU9OXSA9ICgKLSAgICBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi1f
Y29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uREVGTEFURV9GUkFNRV9F
WFRFTlNJT04pCi0KLV9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uWF9XRUJLSVRfREVGTEFU
RV9GUkFNRV9FWFRFTlNJT05dID0gKAotICAgIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cikKLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKGNvbW1vbi5YX1dFQktJVF9E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiInBlcm1l
c3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24gcHJvY2Vzc29yLgotCi0gICAgU3BlY2lmaWNhdGlvbjoK
LSAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh5YmktcGVybWVzc2Fn
ZS1jb21wcmVzc2lvbi0wOAotICAgICIiIgotCi0gICAgX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNf
UEFSQU0gPSAnc2VydmVyX21heF93aW5kb3dfYml0cycKLSAgICBfU0VSVkVSX05PX0NPTlRFWFRf
VEFLRU9WRVJfUEFSQU0gPSAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInCi0gICAgX0NMSUVO
VF9NQVhfV0lORE9XX0JJVFNfUEFSQU0gPSAnY2xpZW50X21heF93aW5kb3dfYml0cycKLSAgICBf
Q0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0gPSAnY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXInCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNv
bnN0cnVjdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4iIiIKLQotICAgICAg
ICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAg
IHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKLQotICAgIGRlZiBuYW1l
KHNlbGYpOgotICAgICAgICAjIFRoaXMgbWV0aG9kIHJldHVybnMgImRlZmxhdGUiIChub3QgInBl
cm1lc3NhZ2UtZGVmbGF0ZSIpIGZvcgotICAgICAgICAjIGNvbXBhdGliaWxpdHkuCi0gICAgICAg
IHJldHVybiAnZGVmbGF0ZScKLQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRl
cm5hbChzZWxmKToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1l
dGVyX25hbWVzKCk6Ci0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbc2VsZi5fU0VSVkVSX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNXToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Vua25vd24gcGFyYW1ldGVyOiAlcicsIG5hbWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
ID0gTm9uZQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fU0VS
VkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSk6Ci0gICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2lu
ZG93X2JpdHMoCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCi0g
ICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCi0KLSAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1
ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSkKLSAgICAgICAgaWYgKHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIGFu
ZAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAg
ICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3Qg
Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFtZXRlciBtdXN0
IG5vdCBoYXZlIGEgdmFsdWU6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICAgICAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBjbGll
bnQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsaWVudCBjYW4KLSAgICAgICAgIyBhY2NlcHQgY2xp
ZW50X21heF93aW5kb3dfYml0cyBmcm9tIGEgc2VydmVyIG9yIG5vdC4KLSAgICAgICAgY2xpZW50
X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0g
ICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICBp
ZiAoY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHMgYW5kCi0gICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5U
X01BWF9XSU5ET1dfQklUU19QQVJBTSkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCclcyBwYXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2U6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFY
X1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVu
dF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAg
ICAgICBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyID0gdXRpbC5fUkZDMTk3OURlZmxhdGVyKAotICAg
ICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLSAgICAgICAgIyBOb3RlIHRoYXQgd2UgcHJlcGFyZSBmb3IgaW5jb21pbmcgbWVzc2Fn
ZXMgY29tcHJlc3NlZCB3aXRoIHdpbmRvdwotICAgICAgICAjIGJpdHMgdXB0byAxNSByZWdhcmRs
ZXNzIG9mIHRoZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIHZhbHVlIHRvIGJlCi0gICAgICAgICMg
c2VudCB0byB0aGUgY2xpZW50LgotICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRp
bC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9mcmFtZXIgPSBfUGVyTWVzc2Fn
ZURlZmxhdGVGcmFtZXIoCi0gICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLCBzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9iZmluYWwo
RmFsc2UpCi0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxl
ZChUcnVlKQotCi0gICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihz
ZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAg
ICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAg
ICAgICAgIHN0cihzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKSkKLQotICAgICAgICBpZiBzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlcjoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIo
Ci0gICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0s
IE5vbmUpCi0KLSAgICAgICAgaWYgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2Jp
dHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgY2xpZW50X2NsaWVudF9tYXhfd2lu
ZG93X2JpdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm9jZXNzb3Ig
aXMgY29uZmlndXJlZCB0byB1c2UgJXMgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RoZSBjbGllbnQgY2Fubm90IGFjY2VwdCBpdCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJB
TSwKLSAgICAgICAgICAgICAgICBzdHIoc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93
X2JpdHMpKQotCi0gICAgICAgIGlmIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgot
ICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxm
Ll9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAg
ICAgICAgICAgJ3JlcXVlc3Q6IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9JXM7ICcKLSAgICAgICAg
ICAgICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcj0lciwgJwotICAgICAgICAgICAgJ3Jlc3Bv
bnNlOiBjbGllbnRfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAgICAgICAnY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXI9JXIpJyAlCi0gICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1l
KCksCi0gICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKLSAgICAgICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29u
dGV4dF90YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3Nl
dHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAg
ICAgc2VsZi5fZnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0g
ICAgZGVmIHNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKHNlbGYsIHZhbHVlKToKLSAgICAgICAg
IiIiSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAg
ICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFu
ZHNoYWtlIHJlc3BvbnNlLAotICAgICAgICBidXQgZG9lc24ndCByZWR1Y2UgdGhlIExaNzcgc2xp
ZGluZyB3aW5kb3cgc2l6ZSBvZiBpdHMgaW5mbGF0ZXIuCi0gICAgICAgIEkuZS4sIHlvdSBjYW4g
dXNlIHRoaXMgZm9yIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QKLSAg
ICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvZiB0aGlzIGNsYXNzLgotCi0gICAgICAgIElmIHRo
aXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCB3aXRoIFRydWUgYW5kIGFuIG9mZmVyIHdpdGhvdXQg
dGhlCi0gICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBp
cyByZWNlaXZlZCwKLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWRl
ZmxhdGUgZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGRlY2xpbmVzIHRoZSBy
ZXF1ZXN0LgotICAgICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtY29tcHJl
c3MgZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGFjY2VwdHMgdGhlIHJlcXVl
c3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzID0gdmFsdWUKLQotICAgIGRlZiBzZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQs
IHRoaXMgY2xhc3MgYWRkcyB0aGUKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIg
ZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlCi0gICAgICAgIHJlc3BvbnNlLCBi
dXQgZG9lc24ndCByZXNldCBpbmZsYXRlciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2Fu
Ci0gICAgICAgIHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQg
Y2Fubm90IHJlZHVjZSBtZW1vcnkKLSAgICAgICAgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1
ZQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9mcmFt
ZXIuc2V0X2JmaW5hbCh2YWx1ZSkKLQotICAgIGRlZiBlbmFibGVfb3V0Z29pbmdfY29tcHJlc3Np
b24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5h
YmxlZChUcnVlKQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6
Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxz
ZSkKLQotCi1jbGFzcyBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIob2JqZWN0KToKLSAgICAiIiJB
IGZyYW1lciBmb3IgZXh0ZW5zaW9ucyB3aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4i
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVm
bGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9
IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19i
aXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3
OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCi0KLSAgICAgICAgc2VsZi5fYmZp
bmFsID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0g
RmFsc2UKLQotICAgICAgICAjIFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNv
bXByZXNzaW9uIGlzIG9uZ29pbmcuCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBG
YWxzZQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29p
bmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFs
IGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0g
ICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdl
UmF0aW9DYWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAg
KFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAg
KFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVy
KQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZl
cmFnZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6
Ci0gICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NvbXByZXNzX291
dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRn
b2luZ19lbmFibGVkID0gdmFsdWUKLQotICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgotICAgICAgICBpZiBub3QgZGVjb21wcmVzczoK
LSAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9z
aXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9f
Y2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3Bh
eWxvYWRfc2l6ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5m
aWx0ZXIobWVzc2FnZSkKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVz
c2FnZSkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFk
ZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUp
Ci0KLSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXpl
LAotICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0
aW8oKSkKLQotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX291dGdv
aW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBub3Qg
YmluYXJ5OgotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0K
LSAgICAgICAgaWYgbm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxl
bihtZXNzYWdlKQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0
b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXpl
KQotCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAg
ICAgICAgICAgIG1lc3NhZ2UsIGVuZD1lbmQsIGJmaW5hbD1zZWxmLl9iZmluYWwpCi0KLSAgICAg
ICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAg
ICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29t
cHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAg
ICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9w
YXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRp
b19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICAgICAgaWYgbm90IHNlbGYu
X2NvbXByZXNzX29uZ29pbmc6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0
ZXIuc2V0X2NvbXByZXNzaW9uX2JpdCgpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcg
PSBub3QgZW5kCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5j
b21pbmdfZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFtZS5yc3YxID09IDEgYW5k
IG5vdCBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAg
IHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKCkK
LSAgICAgICAgICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdf
ZnJhbWUoc2VsZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6Ci0gICAgICAgIGlmIChub3QgY29t
cHJlc3Npb25fYml0IG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJh
bWUub3Bjb2RlKSk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5yc3YxID0g
MQotCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToK
LSAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0cmVhbU9w
dGlvbnMuIiIiCi0KLSAgICAgICAgY2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3Qp
OgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxm
LCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ01l
c3NhZ2VGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotCi0gICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKLQotICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQotCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Ci0K
LSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudCA9IHBhcmVudAotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVz
c2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChz
ZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQot
Ci0gICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLCBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQotICAgICAgICAgICAgICAgIHNlbGYu
X3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0Zy
YW1lRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJl
bnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotCi0gICAgICAgICAg
ICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQu
X3Byb2Nlc3NfaW5jb21pbmdfZnJhbWUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdf
ZnJhbWVfZmlsdGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5f
aW5jb21pbmdfZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAg
ICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAg
ICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
LmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5faW5jb21p
bmdfZnJhbWVfZmlsdGVyKQotCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21l
c3NhZ2VfdG9fdXRmOCA9IEZhbHNlCi0KLQotX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5Q
RVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OXSA9ICgKLSAgICAgICAgUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0jIFRPRE8odHlvc2hpbm8pOiBSZW9yZ2FuaXplIGNsYXNz
IG5hbWVzLgotX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoJ2RlZmxhdGUnKQot
Ci0KLWNsYXNzIE11eEV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZh
Y2UpOgotICAgICIiIldlYlNvY2tldCBtdWx0aXBsZXhpbmcgZXh0ZW5zaW9uIHByb2Nlc3Nvci4i
IiIKLQotICAgIF9RVU9UQV9QQVJBTSA9ICdxdW90YScKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXF1ZXN0KToKLSAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5pdF9f
KHNlbGYsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuX3F1b3RhID0gMAotICAgICAgICBzZWxmLl9l
eHRlbnNpb25zID0gW10KLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gY29t
bW9uLk1VWF9FWFRFTlNJT04KLQotICAgIGRlZiBjaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVy
X3Byb2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0gICAgICAgIGJlZm9yZV9tdXggPSBUcnVl
Ci0gICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yczoKLSAgICAgICAgICAgIG5hbWUg
PSBwcm9jZXNzb3IubmFtZSgpCi0gICAgICAgICAgICBpZiBuYW1lID09IHNlbGYubmFtZSgpOgot
ICAgICAgICAgICAgICAgIGJlZm9yZV9tdXggPSBGYWxzZQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBiZWZvcmVfbXV4OgotICAgICAgICAgICAg
ICAgICMgTXV4IGV4dGVuc2lvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciBleHRlbnNpb25zCi0gICAg
ICAgICAgICAgICAgIyB0aGF0IGRlcGVuZCBvbiBmcmFtZSBib3VuZGFyeSwgZXh0ZW5zaW9uIGRh
dGEgZmllbGQsIG9yIGFueQotICAgICAgICAgICAgICAgICMgcmVzZXJ2ZWQgYml0cyB3aGljaCBh
cmUgYXR0cmlidXRlZCB0byBlYWNoIGZyYW1lLgotICAgICAgICAgICAgICAgIGlmIChuYW1lID09
IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAgICAgICAgICBu
YW1lID09IGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTik6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgTXV4IGV4dGVuc2lv
biBzaG91bGQgbm90IGJlIGFwcGxpZWQgYmVmb3JlIGFueSBoaXN0b3J5LWJhc2VkCi0gICAgICAg
ICAgICAgICAgIyBjb21wcmVzc2lvbiBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgaWYgKG5h
bWUgPT0gJ2RlZmxhdGUnIG9yCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPT0gY29tbW9uLkRF
RkxBVEVfRlJBTUVfRVhURU5TSU9OIG9yCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPT0gY29t
bW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5zZXRfYWN0aXZlKEZhbHNlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLQot
ICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKLSAgICAgICAg
c2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAgICAgcXVvdGEgPSBzZWxmLl9yZXF1ZXN0LmdldF9w
YXJhbWV0ZXJfdmFsdWUoc2VsZi5fUVVPVEFfUEFSQU0pCi0gICAgICAgIGlmIHF1b3RhIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHF1b3RhID0gaW50KHF1
b3RhKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgcXVvdGEgPCAwIG9yIHF1b3RhID49IDIgKiog
MzI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHNlbGYuX3F1b3Rh
ID0gcXVvdGEKLQotICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0gICAgICAgIHJldHVybiBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKQotCi0gICAgZGVm
IF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRfcXVvdGEoc2VsZiwgcXVvdGEpOgotICAgICAgICBz
ZWxmLl9xdW90YSA9IHF1b3RhCi0KLSAgICBkZWYgcXVvdGEoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9xdW90YQotCi0gICAgZGVmIHNldF9leHRlbnNpb25zKHNlbGYsIGV4dGVuc2lvbnMp
OgotICAgICAgICBzZWxmLl9leHRlbnNpb25zID0gZXh0ZW5zaW9ucwotCi0gICAgZGVmIGV4dGVu
c2lvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9leHRlbnNpb25zCi0KLQotX2F2YWls
YWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lvblByb2Nl
c3NvcgotCi0KLWRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCk6
Ci0gICAgIiIiR2l2ZW4gYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIHJlcHJlc2VudGluZyBhbiBleHRl
bnNpb24gb2ZmZXIgcmVjZWl2ZWQKLSAgICBmcm9tIGEgY2xpZW50LCBjb25maWd1cmVzIGFuZCBy
ZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgZXh0ZW5zaW9uIHBy
b2Nlc3NvciBjbGFzcy4KLSAgICAiIiIKLQotICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9hdmFpbGFi
bGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQotICAgIGlmIHByb2Nl
c3Nvcl9jbGFzcyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBwcm9j
ZXNzb3JfY2xhc3MoZXh0ZW5zaW9uX3JlcXVlc3QpCi0KLQotZGVmIGlzX2NvbXByZXNzaW9uX2V4
dGVuc2lvbihleHRlbnNpb25fbmFtZSk6Ci0gICAgcmV0dXJuIGV4dGVuc2lvbl9uYW1lIGluIF9j
b21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3
ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRk
YWFkMjdmNTNjNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3Rf
bWFza2luZy5pCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSVtb2R1bGUgZmFzdF9tYXNraW5nCi0K
LSVpbmNsdWRlICJjc3RyaW5nLmkiCi0KLSV7Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2lmZGVm
IF9fU1NFMl9fCi0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jZW5kaWYKLSV9Ci0KLSVhcHBseSAo
Y2hhciAqU1RSSU5HLCBpbnQgTEVOR1RIKSB7Ci0gICAgKGNvbnN0IGNoYXIqIHBheWxvYWQsIGlu
dCBwYXlsb2FkX2xlbmd0aCksCi0gICAgKGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5LCBpbnQgbWFz
a2luZ19rZXlfbGVuZ3RoKSB9OwotJWNzdHJpbmdfb3V0cHV0X2FsbG9jYXRlX3NpemUoCi0gICAg
Y2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoLCBkZWxldGUgW10gKiQxKTsKLQotJWlu
bGluZSAlewotCi12b2lkIG1hc2soCi0gICAgY29uc3QgY2hhciogcGF5bG9hZCwgaW50IHBheWxv
YWRfbGVuZ3RoLAotICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5LCBpbnQgbWFza2luZ19rZXlf
bGVuZ3RoLAotICAgIGludCBtYXNraW5nX2tleV9pbmRleCwKLSAgICBjaGFyKiogcmVzdWx0LCBp
bnQqIHJlc3VsdF9sZW5ndGgpIHsKLSAgKnJlc3VsdCA9IG5ldyBjaGFyW3BheWxvYWRfbGVuZ3Ro
XTsKLSAgKnJlc3VsdF9sZW5ndGggPSBwYXlsb2FkX2xlbmd0aDsKLSAgbWVtY3B5KCpyZXN1bHQs
IHBheWxvYWQsIHBheWxvYWRfbGVuZ3RoKTsKLQotICBjaGFyKiBjdXJzb3IgPSAqcmVzdWx0Owot
ICBjaGFyKiBjdXJzb3JfZW5kID0gKnJlc3VsdCArICpyZXN1bHRfbGVuZ3RoOwotCi0jaWZkZWYg
X19TU0UyX18KLSAgd2hpbGUgKChjdXJzb3IgPCBjdXJzb3JfZW5kKSAmJgotICAgICAgICAgKHJl
aW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihjdXJzb3IpICYgMHhmKSkgewotICAgICpjdXJzb3IgXj0g
bWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdOwotICAgICsrY3Vyc29yOwotICAgIG1hc2tp
bmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tleV9sZW5n
dGg7Ci0gIH0KLSAgaWYgKGN1cnNvciA9PSBjdXJzb3JfZW5kKSB7Ci0gICAgcmV0dXJuOwotICB9
Ci0KLSAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKLSAgX19tMTI4aSBtYXNraW5nX2tleV9i
bG9jazsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQmxvY2tTaXplOyArK2kpIHsKLSAgICAqKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZtYXNraW5nX2tleV9ibG9jaykgKyBpKSA9Ci0gICAgICAg
IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9
IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOwotICB9Ci0KLSAg
d2hpbGUgKGN1cnNvciArIGtCbG9ja1NpemUgPD0gY3Vyc29yX2VuZCkgewotICAgIF9fbTEyOGkg
cGF5bG9hZF9ibG9jayA9Ci0gICAgICAgIF9tbV9sb2FkX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8
X19tMTI4aSo+KGN1cnNvcikpOwotICAgIF9tbV9zdHJlYW1fc2kxMjgocmVpbnRlcnByZXRfY2Fz
dDxfX20xMjhpKj4oY3Vyc29yKSwKLSAgICAgICAgICAgICAgICAgICAgIF9tbV94b3Jfc2kxMjgo
cGF5bG9hZF9ibG9jaywgbWFza2luZ19rZXlfYmxvY2spKTsKLSAgICBjdXJzb3IgKz0ga0Jsb2Nr
U2l6ZTsKLSAgfQotI2VuZGlmCi0KLSAgd2hpbGUgKGN1cnNvciA8IGN1cnNvcl9lbmQpIHsKLSAg
ICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICArK2N1cnNv
cjsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFz
a2luZ19rZXlfbGVuZ3RoOwotICB9Ci19Ci0KLSV9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5k
c2hha2UvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNzI2M2E2
OWZlOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9f
X2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0jIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yLiBUaGlzIGNs
YXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUKLW9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvcnMg
Zm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1bnRpbCBhIGNvbm5lY3Rpb24gaXMKLXN1Y2Nlc3Nm
dWxseSBlc3RhYmxpc2hlZC4KLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBp
bXBvcnQgaHliaTAwCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkK
LSMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIEhhbmRzaGFrZUV4Y2VwdGlvbiwgYW5k
IFZlcnNpb25FeGNlcHRpb24KLSMgc3ltYm9sIGZyb20gdGhpcyBtb2R1bGUuCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhj
ZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNp
b25FeGNlcHRpb24KLQotCi1fTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0K
LQotZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9RmFs
c2UsIHN0cmljdD1GYWxzZSk6Ci0gICAgIiIiUGVyZm9ybXMgV2ViU29ja2V0IGhhbmRzaGFrZS4K
LQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAg
ICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAg
IGFsbG93RHJhZnQ3NTogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9yZWQuCi0gICAgICAgIHN0cmlj
dDogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9yZWQuCi0KLSAgICBIYW5kc2hha2VyIHdpbGwgYWRk
IGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5nCi0gICAgaGFuZHNo
YWtlLgotICAgICIiIgotCi0gICAgX0xPR0dFUi5kZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFu
ZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVlc3QudXJpKQotICAgICMgVG8gcHJpbnQgbWltZXRv
b2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUtbGluZSBzdHJpbmcsIHdlIGNvbnZlcnRzCi0gICAg
IyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0LiBXaXRob3V0IGNvbnZlcnNpb24sIGlmIHdlIHVz
ZSAlciwgaXQganVzdAotICAgICMgcHJpbnRzIHRoZSB0eXBlIGFuZCBhZGRyZXNzLCBhbmQgaWYg
d2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9yaWdpbmFsCi0gICAgIyBoZWFkZXIgc3RyaW5nIGFz
IG11bHRpcGxlIGxpbmVzLgotICAgICMKLSAgICAjIEJvdGggbWltZXRvb2xzLk1lc3NhZ2UgYW5k
IE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9uIGNhbiBiZQotICAgICMgY29udmVydGVkIHRvIGRp
Y3QuCi0gICAgIwotICAgICMgbWltZXRvb2xzLk1lc3NhZ2UuX19zdHJfXyByZXR1cm5zIHRoZSBv
cmlnaW5hbCBoZWFkZXIgc3RyaW5nLgotICAgICMgZGljdChtaW1ldG9vbHMuTWVzc2FnZSBvYmpl
Y3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhlYWRlciBuYW1lcyB0bwotICAgICMgaGVhZGVyIHZh
bHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRvZXNuJ3QgaGF2ZSBzdWNoIF9fc3RyX18gYnV0IGp1
c3QKLSAgICAjIF9fcmVwcl9fIHdoaWNoIGZvcm1hdHMgaXRzZWxmIGFzIHdlbGwgYXMgZGljdGlv
bmFyeSBvYmplY3QuCi0gICAgX0xPR0dFUi5kZWJ1ZygKLSAgICAgICAgJ0NsaWVudFwncyBvcGVu
aW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcicsIGRpY3QocmVxdWVzdC5oZWFkZXJzX2luKSkKLQot
ICAgIGhhbmRzaGFrZXJzID0gW10KLSAgICBoYW5kc2hha2Vycy5hcHBlbmQoCi0gICAgICAgICgn
UkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotICAgIGhh
bmRzaGFrZXJzLmFwcGVuZCgKLSAgICAgICAgKCdIeUJpIDAwJywgaHliaTAwLkhhbmRzaGFrZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotCi0gICAgZm9yIG5hbWUsIGhhbmRzaGFrZXIgaW4gaGFu
ZHNoYWtlcnM6Ci0gICAgICAgIF9MT0dHRVIuZGVidWcoJ1RyeWluZyBwcm90b2NvbCB2ZXJzaW9u
ICVzJywgbmFtZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UoKQotICAgICAgICAgICAgX0xPR0dFUi5pbmZvKCdFc3RhYmxpc2hlZCAoJXMgcHJvdG9j
b2wpJywgbmFtZSkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBleGNlcHQgSGFuZHNoYWtl
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBfTE9HR0VSLmRlYnVnKAotICAgICAgICAgICAg
ICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3BlbmluZyBoYW5kc2hha2UgYXMgJXMgcHJvdG9jb2w6
ICVyJywKLSAgICAgICAgICAgICAgICBuYW1lLCBlKQotICAgICAgICAgICAgaWYgZS5zdGF0dXM6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgZQotICAgICAgICBleGNlcHQgQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0IFZlcnNpb25F
eGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICAjIFRPRE8odG95b3NoaW0p
OiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFsbCBoYW5kc2hha2VycyBmYWlsLgotICAg
IHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgJ0ZhaWxlZCB0byBjb21wbGV0ZSBv
cGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJsZSBwcm90b2NvbHMnLAotICAgICAgICBz
dGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotCi0KLSMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYWYwNTI0MmJmY2QuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODIg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiQ29tbW9uIGZ1bmN0aW9ucyBhbmQgZXhj
ZXB0aW9ucyB1c2VkIGJ5IFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZQotcHJvY2Vzc29ycy4K
LSIiIgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotY2xhc3MgQWJvcnRlZEJ5VXNl
ckV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRpbmcgYSBj
b25uZWN0aW9uIGludGVudGlvbmFsbHkuCi0KLSAgICBJZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlz
ZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCi0gICAgd2ls
bCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIgd2ls
bCBiZSBpbnZva2VkLgotCi0gICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRyYW5z
ZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAotICAgIGJlIGNsb3NlZCB3aXRo
b3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChTKSBoYW5k
bGVyCi0gICAgd2lsbCBiZSBpbnZva2VkLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNz
IEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdp
bGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZwotICAg
IFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lLCBzdGF0dXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhhbmRzaGFrZUV4Y2Vw
dGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKLSAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0dXMK
LQotCi1jbGFzcyBWZXJzaW9uRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNl
cHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBhIHZlcnNpb24gb2YgY2xpZW50IHJlcXVlc3QgZG9l
cyBub3QKLSAgICBtYXRjaCB3aXRoIHZlcnNpb24gdGhlIHNlcnZlciBzdXBwb3J0cy4KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9Jycp
OgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uOiBhIHN0ciBvYmplY3QgdG8gc2hvdyBzdXBwb3J0
ZWQgaHliaSB2ZXJzaW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAn
OCwgMTMnKQotICAgICAgICAiIiIKLSAgICAgICAgc3VwZXIoVmVyc2lvbkV4Y2VwdGlvbiwgc2Vs
ZikuX19pbml0X18obmFtZSkKLSAgICAgICAgc2VsZi5zdXBwb3J0ZWRfdmVyc2lvbnMgPSBzdXBw
b3J0ZWRfdmVyc2lvbnMKLQotCi1kZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUpOgotICAg
IGlmIGlzX3NlY3VyZToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
U0VDVVJFX1BPUlQKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VC
X1NPQ0tFVF9QT1JUCi0KLQotZGVmIHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKToK
LSAgICAiIiJWYWxpZGF0ZSBhIHZhbHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZp
ZWxkLgotCi0gICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2YgUkZD
IDY0NTUuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3VicHJvdG9jb2w6Ci0gICAgICAgIHJhaXNl
IEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScpCi0K
LSAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgotICAgIHN0YXRl
ID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCi0gICAgdG9rZW4g
PSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgcmVzdCA9IGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkKLSAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwgfHN1
YnByb3RvY29sfCBpcyBub3Qgb25lIHRva2VuIG9yIGludmFsaWQuIElmCi0gICAgIyB8cmVzdHwg
aXMgTm9uZSwgfHRva2VufCBtdXN0IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3RvY29sfCBp
cwotICAgICMgY29uY2F0ZW5hdGlvbiBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5vdCBO
b25lLgotICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignSW52YWxpZCBub24tdG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lOiAlcicgJSByZXN0KQotCi0KLWRlZiBw
YXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KToKLSAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRlcnNf
aW5bY29tbW9uLkhPU1RfSEVBREVSXS5zcGxpdCgnOicsIDEpCi0gICAgaWYgbGVuKGZpZWxkcykg
PT0gMToKLSAgICAgICAgcmV0dXJuIGZpZWxkc1swXSwgZ2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0
LmlzX2h0dHBzKCkpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQoZmll
bGRzWzFdKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgIHJhaXNlIEhhbmRz
aGFrZUV4Y2VwdGlvbignSW52YWxpZCBwb3J0IG51bWJlciBmb3JtYXQ6ICVyJyAlIGUpCi0KLQot
ZGVmIGZvcm1hdF9oZWFkZXIobmFtZSwgdmFsdWUpOgotICAgIHJldHVybiAnJXM6ICVzXHJcbicg
JSAobmFtZSwgdmFsdWUpCi0KLQotZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSk6Ci0gICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKLSAgICBpZiB2YWx1
ZSBpcyBOb25lOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBp
cyBub3QgZGVmaW5lZCcgJSBrZXkpCi0gICAgcmV0dXJuIHZhbHVlCi0KLQotZGVmIHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0
dXM9Tm9uZSk6Ci0gICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkp
Ci0KLSAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6Ci0gICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdFeHBlY3RlZCAlciBm
b3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKLSAgICAgICAg
ICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksIHN0YXR1cz1mYWlsX3N0YXR1cykKLQot
Ci1kZWYgY2hlY2tfcmVxdWVzdF9saW5lKHJlcXVlc3QpOgotICAgICMgNS4xIDEuIFRoZSB0aHJl
ZSBjaGFyYWN0ZXIgVVRGLTggc3RyaW5nICJHRVQiLgotICAgICMgNS4xIDIuIEEgVVRGLTgtZW5j
b2RlZCBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyICgweDIwIGJ5dGUpLgotICAgIGlmIHJlcXVlc3Qu
bWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ01ldGhv
ZCBpcyBub3QgR0VUOiAlcicgJSByZXF1ZXN0Lm1ldGhvZCkKLQotICAgIGlmIHJlcXVlc3QucHJv
dG9jb2wgIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdW
ZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCi0KLQotZGVmIHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6
Ci0gICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQg
cmV0dXJucyBwYXJzZWQgZWxlbWVudHMKLSAgICBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KLQotICAg
IExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgotICAgICIiIgotCi0gICAgc3RhdGUgPSBo
dHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQotCi0gICAgdG9rZW5fbGlzdCA9IFtd
Ci0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV90b2tlbihzdGF0ZSkKLSAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKLQotICAgICAgICBodHRwX2hlYWRlcl91dGls
LmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVr
KHN0YXRlKSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgaHR0
cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToKLSAgICAgICAgICAgIHJh
aXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21t
YSBidXQgZm91bmQgJXInICUgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAg
ICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4odG9r
ZW5fbGlzdCkgPT0gMDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdObyB2YWxp
ZCB0b2tlbiBmb3VuZCcpCi0KLSAgICByZXR1cm4gdG9rZW5fbGlzdAotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5Ymku
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmRiZjI1YTFkY2NhLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MjAg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBv
cGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIChS
RkMgNjQ1NSkuCi0KLVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM2NDU1Ci0iIiIKLQotCi0jIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSBpcyB1c2Vk
IGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaCBtb2RfcHl0aG9uCi0jIGRvY3VtZW50IHNheXMg
dGhhdCBpdCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24gaGFuZGxlcnMuCi0jIFVu
Zm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsIHJlcXVl
c3Qud3JpdGUgaXMgbm90Ci0jIHN1aXRhYmxlIGJlY2F1c2UgaXQgZG9lc24ndCBhbGxvdyBkaXJl
Y3QgcmF3IGJ5dGVzIHdyaXRpbmcuCi0KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGdldF9leHRlbnNpb25f
cHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBpc19jb21w
cmVzc2lvbl9leHRlbnNpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgY2hlY2tfcmVxdWVzdF9saW5lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QKLWZyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hl
YWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0
ZV9zdWJwcm90b2NvbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBWZXJzaW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0
cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLSMgVXNlZCB0byB2YWxpZGF0ZSB0
aGUgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4gUkZDIDQ2
NDgKLSMgZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIgcmlnaHQg
YmVmb3JlID09IG11c3QgYmUgYW55IG9mCi0jIEEsIFEsIGcgYW5kIHcuCi1fU0VDX1dFQlNPQ0tF
VF9LRVlfUkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109PSQnKQot
Ci0jIERlZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCi1fVkVSU0lP
Tl9MQVRFU1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotX1ZFUlNJT05fTEFURVNUX1NU
UklORyA9IHN0cihfVkVSU0lPTl9MQVRFU1QpCi1fU1VQUE9SVEVEX1ZFUlNJT05TID0gWwotICAg
IF9WRVJTSU9OX0xBVEVTVCwKLV0KLQotCi1kZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToKLSAgICAi
IiJDb21wdXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBmcm9t
IHZhbHVlIG9mIHRoZQotICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KLSAgICAiIiIKLQot
ICAgIGFjY2VwdF9iaW5hcnkgPSB1dGlsLnNoYTFfaGFzaCgKLSAgICAgICAga2V5ICsgY29tbW9u
LldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICBhY2NlcHQgPSBiYXNlNjQuYjY0
ZW5jb2RlKGFjY2VwdF9iaW5hcnkpCi0KLSAgICByZXR1cm4gKGFjY2VwdCwgYWNjZXB0X2JpbmFy
eSkKLQotCi1jbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcik6Ci0gICAgICAgICIi
IkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVx
dWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0
Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0KLSAgICAgICAgSGFuZHNoYWtlciB3aWxsIGFk
ZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgZHVyaW5nIGhhbmRzaGFrZS4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fZGlz
cGF0Y2hlciA9IGRpc3BhdGNoZXIKLQotICAgIGRlZiBfdmFsaWRhdGVfY29ubmVjdGlvbl9oZWFk
ZXIoc2VsZik6Ci0gICAgICAgIGNvbm5lY3Rpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUikKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBjb25uZWN0aW9uX3Rva2VucyA9IHBhcnNlX3Rva2VuX2xp
c3QoY29ubmVjdGlvbikKLSAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdG
YWlsZWQgdG8gcGFyc2UgJXM6ICVzJyAlIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGUpKQot
Ci0gICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBGYWxzZQotICAgICAgICBmb3IgdG9rZW4g
aW4gY29ubmVjdGlvbl90b2tlbnM6Ci0gICAgICAgICAgICBpZiB0b2tlbi5sb3dlcigpID09IGNv
bW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRS5sb3dlcigpOgotICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25faXNfdmFsaWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
aWYgbm90IGNvbm5lY3Rpb25faXNfdmFsaWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJyVzIGhlYWRlciBkb2VzblwndCBjb250YWluICIl
cyInICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24u
VVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQotCi0gICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToK
LSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gTm9uZQotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IE5vbmUKLQotICAgICAgICAjIFBhcnNpbmcuCi0K
LSAgICAgICAgY2hlY2tfcmVxdWVzdF9saW5lKHNlbGYuX3JlcXVlc3QpCi0KLSAgICAgICAgdmFs
aWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsCi0gICAg
ICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09D
S0VUX1VQR1JBREVfVFlQRSkKLQotICAgICAgICBzZWxmLl92YWxpZGF0ZV9jb25uZWN0aW9uX2hl
YWRlcigpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVl
c3QudXJpCi0KLSAgICAgICAgdW51c2VkX2hvc3QgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxm
Ll9yZXF1ZXN0LCBjb21tb24uSE9TVF9IRUFERVIpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53
c192ZXJzaW9uID0gc2VsZi5fY2hlY2tfdmVyc2lvbigpCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5fZ2V0X29yaWdpbigpCi0gICAgICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2wo
KQotICAgICAgICAgICAgc2VsZi5fcGFyc2VfZXh0ZW5zaW9ucygpCi0KLSAgICAgICAgICAgICMg
S2V5IHZhbGlkYXRpb24sIHJlc3BvbnNlIGdlbmVyYXRpb24uCi0KLSAgICAgICAgICAgIGtleSA9
IHNlbGYuX2dldF9rZXkoKQotICAgICAgICAgICAgKGFjY2VwdCwgYWNjZXB0X2JpbmFyeSkgPSBj
b21wdXRlX2FjY2VwdChrZXkpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAg
ICAgICAgICAgICAgJyVzOiAlciAoJXMpJywKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9BQ0NFUFRfSEVBREVSLAotICAgICAgICAgICAgICAgIGFjY2VwdCwKLSAgICAgICAg
ICAgICAgICB1dGlsLmhleGlmeShhY2NlcHRfYmluYXJ5KSkKLQotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdQcm90b2NvbCB2ZXJzaW9uIGlzIFJGQyA2NDU1JykKLQotICAgICAgICAg
ICAgIyBTZXR1cCBleHRlbnNpb24gcHJvY2Vzc29ycy4KLQotICAgICAgICAgICAgcHJvY2Vzc29y
cyA9IFtdCi0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNp
b25zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGZvciBleHRlbnNpb25fcmVxdWVzdCBp
biBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzb3IgPSBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVz
dCkKLSAgICAgICAgICAgICAgICAgICAgIyBVbmtub3duIGV4dGVuc2lvbiByZXF1ZXN0cyBhcmUg
anVzdCBpZ25vcmVkLgotICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3Ip
Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gcHJv
Y2Vzc29ycwotCi0gICAgICAgICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVycy4gVGhlIGV4dHJh
IGhhbmRzaGFrZSBoYW5kbGVyIG1heSBhZGQgaGVhZGVyCi0gICAgICAgICAgICAjIGRhdGEgYXMg
bmFtZS92YWx1ZSBwYWlycyB0byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0IGFwcGVuZHMKLSAg
ICAgICAgICAgICMgdGhlbSB0byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4KLSAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVycyA9IFtdCi0KLSAgICAgICAgICAgICMgRXh0cmEg
aGFuZHNoYWtlIGhhbmRsZXIgbWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29ycy4KLSAgICAgICAg
ICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCi0g
ICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nv
ciBpcyBub3QgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykKLQotICAgICAgICAgICAgIyBBc2sgZWFjaCBw
cm9jZXNzb3IgaWYgdGhlcmUgYXJlIGV4dGVuc2lvbnMgb24gdGhlIHJlcXVlc3Qgd2hpY2gKLSAg
ICAgICAgICAgICMgY2Fubm90IGNvLWV4aXN0LiBXaGVuIHByb2Nlc3NvciBkZWNpZGVkIG90aGVy
IHByb2Nlc3NvcnMgY2Fubm90Ci0gICAgICAgICAgICAjIGNvLWV4aXN0IHdpdGggaXQsIHRoZSBw
cm9jZXNzb3IgbWFya3MgdGhlbSAob3IgaXRzZWxmKSBhcwotICAgICAgICAgICAgIyAiaW5hY3Rp
dmUiLiBUaGUgZmlyc3QgZXh0ZW5zaW9uIHByb2Nlc3NvciBoYXMgdGhlIHJpZ2h0IHRvCi0gICAg
ICAgICAgICAjIG1ha2UgdGhlIGZpbmFsIGNhbGwuCi0gICAgICAgICAgICBmb3IgcHJvY2Vzc29y
IGluIHJldmVyc2VkKHByb2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5p
c19hY3RpdmUoKToKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLmNoZWNrX2NvbnNpc3Rl
bmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycygKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nl
c3NvcnMpCi0gICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6
IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc29ycykKLQotICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0KLSAg
ICAgICAgICAgICMgV2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBvZiBtdXggZXh0ZW5zaW9u
IGhlcmUuCi0gICAgICAgICAgICAjIElmIG11eCBleHRlbnNpb24gZXhpc3RzOgotICAgICAgICAg
ICAgIyAtIFJlbW92ZSBwcm9jZXNzb3JzIG9mIGV4dGVuc2lvbnMgZm9yIGxvZ2ljYWwgY2hhbm5l
bCwKLSAgICAgICAgICAgICMgICB3aGljaCBhcmUgcHJvY2Vzc29ycyBsb2NhdGVkIGJlZm9yZSB0
aGUgbXV4IHByb2Nlc3NvcgotICAgICAgICAgICAgIyAtIFBhc3MgZXh0ZW5zaW9uIHJlcXVlc3Rz
IGZvciBsb2dpY2FsIGNoYW5uZWwgdG8gbXV4IHByb2Nlc3NvcgotICAgICAgICAgICAgIyAtIEF0
dGFjaCB0aGUgbXV4IHByb2Nlc3NvciB0byB0aGUgcmVxdWVzdC4gSXQgd2lsbCBiZSByZWZlcnJl
ZAotICAgICAgICAgICAgIyAgIGJ5IGRpc3BhdGNoZXIgdG8gc2VlIHdoZXRoZXIgdGhlIGRpc3Bh
dGNoZXIgc2hvdWxkIHVzZSBtdXgKLSAgICAgICAgICAgICMgICBoYW5kbGVyIG9yIG5vdC4KLSAg
ICAgICAgICAgIG11eF9pbmRleCA9IC0xCi0gICAgICAgICAgICBmb3IgaSwgcHJvY2Vzc29yIGlu
IGVudW1lcmF0ZShwcm9jZXNzb3JzKToKLSAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IubmFt
ZSgpID09IGNvbW1vbi5NVVhfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgICAgICBtdXhfaW5k
ZXggPSBpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBtdXhfaW5k
ZXggPj0gMDoKLSAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyA9IFtd
Ci0gICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzWzptdXhfaW5kZXhd
OgotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucy5hcHBlbmQo
cHJvY2Vzc29yLnJlcXVlc3QoKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldF9h
Y3RpdmUoRmFsc2UpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29y
ID0gcHJvY2Vzc29yc1ttdXhfaW5kZXhdCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5t
dXhfcHJvY2Vzc29yLnNldF9leHRlbnNpb25zKAotICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
X2NoYW5uZWxfZXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVy
KGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMpCi0KLSAgICAgICAgICAgIHN0cmVhbV9v
cHRpb25zID0gU3RyZWFtT3B0aW9ucygpCi0KLSAgICAgICAgICAgIGZvciBpbmRleCwgcHJvY2Vz
c29yIGluIGVudW1lcmF0ZShwcm9jZXNzb3JzKToKLSAgICAgICAgICAgICAgICBpZiBub3QgcHJv
Y2Vzc29yLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAg
ICAgICAgICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25f
cmVzcG9uc2UoKQotICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBpcyBOb25l
OgotICAgICAgICAgICAgICAgICAgICAjIFJlamVjdGVkLgotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotCi0gICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0
ZW5zaW9uX3Jlc3BvbnNlKQotCi0gICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVh
bV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzX2Nv
bXByZXNzaW9uX2V4dGVuc2lvbihwcm9jZXNzb3IubmFtZSgpKToKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICMgSW5hY3RpdmF0ZSBhbGwgb2YgdGhlIGZv
bGxvd2luZyBjb21wcmVzc2lvbiBleHRlbnNpb25zLgotICAgICAgICAgICAgICAgIGZvciBqIGlu
IHhyYW5nZShpbmRleCArIDEsIGxlbihwcm9jZXNzb3JzKSk6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbihwcm9jZXNzb3JzW2pdLm5hbWUoKSk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFsc2UpCi0KLSAg
ICAgICAgICAgIGlmIGxlbihhY2NlcHRlZF9leHRlbnNpb25zKSA+IDA6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5zaW9ucwotICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0V4
dGVuc2lvbnMgYWNjZXB0ZWQ6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIubmFtZSwgYWNjZXB0ZWRfZXh0ZW5zaW9ucykpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyA9IE5v
bmUKLQotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxmLl9jcmVhdGVf
c3RyZWFtKHN0cmVhbV9vcHRpb25zKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9fZXh0cmFf
aGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQgdG8gd3NfcHJv
dG9jb2wnKQotICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYuX3JlcXVl
c3Qud3NfcHJvdG9jb2wpCi0KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAgICAgICAgICdTdWJwcm90b2NvbCBhY2NlcHRlZDogJXInLAotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnd3NfcHJvdG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhlIGNsaWVu
dCBkaWRuXCd0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBzdWJwcm90
b2NvbCcpCi0KLSAgICAgICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKGFjY2VwdCkKLSAgICAg
ICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYgbm90IGUu
c3RhdHVzOgotICAgICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJhZCByZXF1ZXN0IGJ5
IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24uSFRUUF9TVEFUVVNf
QkFEX1JFUVVFU1QKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgIGRlZiBfZ2V0X29yaWdpbihz
ZWxmKToKLSAgICAgICAgb3JpZ2luX2hlYWRlciA9IGNvbW1vbi5PUklHSU5fSEVBREVSCi0gICAg
ICAgIG9yaWdpbiA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQob3JpZ2luX2hlYWRlcikK
LSAgICAgICAgaWYgb3JpZ2luIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ0NsaWVudCByZXF1ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2luIGhlYWRlcicpCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gb3JpZ2luCi0KLSAgICBkZWYgX2NoZWNrX3ZlcnNp
b24oc2VsZik6Ci0gICAgICAgIHZlcnNpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9y
ZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpCi0gICAgICAgIGlmIHZlcnNpb24gPT0gX1ZFUlNJ
T05fTEFURVNUX1NUUklORzoKLSAgICAgICAgICAgIHJldHVybiBfVkVSU0lPTl9MQVRFU1QKLQot
ICAgICAgICBpZiB2ZXJzaW9uLmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSB2ZXJzaW9ucyAoJXIp
IGFyZSBub3QgYWxsb3dlZCBmb3IgaGVhZGVyICVzJyAlCi0gICAgICAgICAgICAgICAgKHZlcnNp
b24sIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSKSwKLSAgICAgICAgICAgICAg
ICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICByYWlzZSBW
ZXJzaW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9y
IGhlYWRlciAlcycgJQotICAgICAgICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNfV0VCU09DS0VU
X1ZFUlNJT05fSEVBREVSKSwKLSAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz0nLCAnLmpv
aW4obWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQotCi0gICAgZGVmIF9zZXRfcHJvdG9j
b2woc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0KLSAg
ICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAg
ICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKLQotICAgICAg
ICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rva2VuX2xp
c3QoCi0gICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQotCi0gICAgZGVmIF9w
YXJzZV9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9IHNlbGYu
X3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUikKLSAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVhZGVyOgot
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9IE5vbmUK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygK
LSAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKLSAgICAgICAgZXhjZXB0IGNvbW1v
bi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMtV2Vi
U29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAotICAgICAg
ICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFtZSwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKLQotICAgIGRlZiBfdmFs
aWRhdGVfa2V5KHNlbGYsIGtleSk6Ci0gICAgICAgIGlmIGtleS5maW5kKCcsJykgPj0gMDoKLSAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignUmVxdWVzdCBoYXMgbXVsdGlwbGUg
JXMgaGVhZGVyIGxpbmVzIG9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXIgXCcsXCc6ICVyJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIs
IGtleSkpCi0KLSAgICAgICAgIyBWYWxpZGF0ZQotICAgICAgICBrZXlfaXNfdmFsaWQgPSBGYWxz
ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFZhbGlkYXRlIGtleSBieSBxdWljayByZWdl
eCBtYXRjaCBiZWZvcmUgcGFyc2luZyBieSBiYXNlNjQKLSAgICAgICAgICAgICMgbW9kdWxlLiBC
ZWNhdXNlIGJhc2U2NCBtb2R1bGUgc2tpcHMgaW52YWxpZCBjaGFyYWN0ZXJzLCB3ZSBoYXZlCi0g
ICAgICAgICAgICAjIHRvIGRvIHRoaXMgaW4gYWR2YW5jZSB0byBtYWtlIHRoaXMgc2VydmVyIHN0
cmljdGx5IHJlamVjdCBpbGxlZ2FsCi0gICAgICAgICAgICAjIGtleXMuCi0gICAgICAgICAgICBp
ZiBfU0VDX1dFQlNPQ0tFVF9LRVlfUkVHRVgubWF0Y2goa2V5KToKLSAgICAgICAgICAgICAgICBk
ZWNvZGVkX2tleSA9IGJhc2U2NC5iNjRkZWNvZGUoa2V5KQotICAgICAgICAgICAgICAgIGlmIGxl
bihkZWNvZGVkX2tleSkgPT0gMTY6Ci0gICAgICAgICAgICAgICAgICAgIGtleV9pc192YWxpZCA9
IFRydWUKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAgICAgICAgICAgcGFzcwot
Ci0gICAgICAgIGlmIG5vdCBrZXlfaXNfdmFsaWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAl
czogJXInICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURF
Uiwga2V5KSkKLQotICAgICAgICByZXR1cm4gZGVjb2RlZF9rZXkKLQotICAgIGRlZiBfZ2V0X2tl
eShzZWxmKToKLSAgICAgICAga2V5ID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LCBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSKQotCi0gICAg
ICAgIGRlY29kZWRfa2V5ID0gc2VsZi5fdmFsaWRhdGVfa2V5KGtleSkKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnJXM6ICVyICglcyknLAotICAgICAgICAgICAg
Y29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwKLSAgICAgICAgICAgIGtleSwKLSAgICAg
ICAgICAgIHV0aWwuaGV4aWZ5KGRlY29kZWRfa2V5KSkKLQotICAgICAgICByZXR1cm4ga2V5Ci0K
LSAgICBkZWYgX2NyZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX29wdGlvbnMpOgotICAgICAgICBy
ZXR1cm4gU3RyZWFtKHNlbGYuX3JlcXVlc3QsIHN0cmVhbV9vcHRpb25zKQotCi0gICAgZGVmIF9j
cmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKHNlbGYsIGFjY2VwdCk6Ci0gICAgICAgIHJlc3BvbnNl
ID0gW10KLQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcg
UHJvdG9jb2xzXHJcbicpCi0KLSAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycwotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURF
X0hFQURFUiwgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpKQotICAgICAgICByZXNwb25z
ZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hF
QURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKLSAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9B
Q0NFUFRfSEVBREVSLCBhY2NlcHQpKQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3Rv
Y29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFk
ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVS
LAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQotICAgICAgICBp
ZiAoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAg
ICAgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6Ci0gICAgICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uU0VD
X1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwKLSAgICAgICAgICAgICAgICBjb21tb24uZm9y
bWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSkpCi0KLSAgICAgICAg
IyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0Ci0gICAgICAgIGZvciBuYW1lLCB2
YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6Ci0gICAgICAgICAgICByZXNwb25z
ZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkpCi0KLSAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKCdcclxuJykKLQotICAgICAgICByZXR1cm4gJycuam9pbihyZXNwb25zZSkKLQotICAg
IGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgcmF3X3Jlc3BvbnNl
ID0gc2VsZi5fY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZShhY2NlcHQpCi0gICAgICAgIHNlbGYu
X3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdfcmVzcG9uc2UpCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4NzU3NzE3YTYzOWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkz
ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRlcyB0aGUg
b3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0Ci1wcm90b2NvbCB2
ZXJzaW9uIEh5QmkgMDAuCi0KLVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9kcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDAKLSIiIgotCi0KLSMg
Tm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1
bGUsIGV2ZW4gdGhvdWdoCi0jIG1vZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0IHRoZXkgc2hv
dWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uCi0jIGhhbmRsZXJzLiBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLAotIyByZXF1ZXN0LndyaXRl
L3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJh
dyBieXRlcwotIyB3cml0aW5nL3JlYWRpbmcuCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBy
ZQotaW1wb3J0IHN0cnVjdAotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1ZXN0X2xpbmUKLWZyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9ybWF0X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBnZXRfZGVmYXVsdF9wb3J0Ci1mcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGdldF9tYW5kYXRvcnlfaGVhZGVyCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX2hvc3RfaGVh
ZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIKLQotCi1fTUFOREFUT1JZX0hFQURFUlMgPSBbCi0gICAgIyBrZXks
IGV4cGVjdGVkIHZhbHVlIG9yIE5vbmUKLSAgICBbY29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21t
b24uV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJRTc1XSwKLSAgICBbY29tbW9uLkNPTk5FQ1RJ
T05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEVdLAotXQotCi0KLWRlZiBf
dmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgotICAgICIiIkNoZWNrcyBpZiBjaGFy
YWN0ZXJzIGluIHN1YnByb3RvY29sIGFyZSBpbiByYW5nZSBiZXR3ZWVuIFUrMDAyMCBhbmQKLSAg
ICBVKzAwN0UuIEEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmllbGQgbmVl
ZCB0byBzYXRpc2Z5IHRoaXMKLSAgICByZXF1aXJlbWVudC4KLQotICAgIFNlZSB0aGUgU2VjdGlv
biA0LjEuIE9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBzcGVjLgotICAgICIiIgotCi0gICAgaWYg
bm90IHN1YnByb3RvY29sOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFs
aWQgc3VicHJvdG9jb2wgbmFtZTogZW1wdHknKQotCi0gICAgIyBQYXJhbWV0ZXIgc2hvdWxkIGJl
IGluIHRoZSByYW5nZSBVKzAwMjAgdG8gVSswMDdFLgotICAgIGZvciBjIGluIHN1YnByb3RvY29s
OgotICAgICAgICBpZiBub3QgMHgyMCA8PSBvcmQoYykgPD0gMHg3ZToKLSAgICAgICAgICAgIHJh
aXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWxsZWdhbCBjaGFyYWN0
ZXIgaW4gc3VicHJvdG9jb2wgbmFtZTogJXInICUgYykKLQotCi1kZWYgX2NoZWNrX2hlYWRlcl9s
aW5lcyhyZXF1ZXN0LCBtYW5kYXRvcnlfaGVhZGVycyk6Ci0gICAgY2hlY2tfcmVxdWVzdF9saW5l
KHJlcXVlc3QpCi0KLSAgICAjIFRoZSBleHBlY3RlZCBmaWVsZCBuYW1lcywgYW5kIHRoZSBtZWFu
aW5nIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgICAjIHZhbHVlcywgYXJlIGFzIGZvbGxvd3Mu
Ci0gICAgIyAgfFVwZ3JhZGV8IGFuZCB8Q29ubmVjdGlvbnwKLSAgICBmb3Iga2V5LCBleHBlY3Rl
ZF92YWx1ZSBpbiBtYW5kYXRvcnlfaGVhZGVyczoKLSAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5
X2hlYWRlcihyZXF1ZXN0LCBrZXksIGV4cGVjdGVkX3ZhbHVlKQotCi0KLWRlZiBfYnVpbGRfbG9j
YXRpb24ocmVxdWVzdCk6Ci0gICAgIiIiQnVpbGQgV2ViU29ja2V0IGxvY2F0aW9uIGZvciByZXF1
ZXN0LiIiIgotCi0gICAgbG9jYXRpb25fcGFydHMgPSBbXQotICAgIGlmIHJlcXVlc3QuaXNfaHR0
cHMoKToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGNvbW1vbi5XRUJfU09DS0VUX1NF
Q1VSRV9TQ0hFTUUpCi0gICAgZWxzZToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGNv
bW1vbi5XRUJfU09DS0VUX1NDSEVNRSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzovLycp
Ci0gICAgaG9zdCwgcG9ydCA9IHBhcnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpCi0gICAgY29ubmVj
dGlvbl9wb3J0ID0gcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHJbMV0KLSAgICBpZiBwb3J0
ICE9IGNvbm5lY3Rpb25fcG9ydDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdI
ZWFkZXIvY29ubmVjdGlvbiBwb3J0IG1pc21hdGNoOiAlZC8lZCcgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHBvcnQsIGNvbm5lY3Rpb25fcG9ydCkpCi0gICAgbG9jYXRpb25f
cGFydHMuYXBwZW5kKGhvc3QpCi0gICAgaWYgKHBvcnQgIT0gZ2V0X2RlZmF1bHRfcG9ydChyZXF1
ZXN0LmlzX2h0dHBzKCkpKToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKCc6JykKLSAg
ICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHN0cihwb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0
cy5hcHBlbmQocmVxdWVzdC51bnBhcnNlZF91cmkpCi0gICAgcmV0dXJuICcnLmpvaW4obG9jYXRp
b25fcGFydHMpCi0KLQotY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgotICAgICIiIk9wZW5pbmcg
aGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEh5
QmkgMDAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0
Y2hlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAg
ZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0KLSAgICAgICAg
SGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgaW4gcGVy
Zm9ybWluZwotICAgICAgICBoYW5kc2hha2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX3Jl
cXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyCi0K
LSAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQZXJmb3JtIFdlYlNvY2tl
dCBIYW5kc2hha2UuCi0KLSAgICAgICAgT24gX3JlcXVlc3QsIHdlIHNldAotICAgICAgICAgICAg
d3NfcmVzb3VyY2UsIHdzX3Byb3RvY29sLCB3c19sb2NhdGlvbiwgd3Nfb3JpZ2luLCB3c19jaGFs
bGVuZ2UsCi0gICAgICAgICAgICB3c19jaGFsbGVuZ2VfbWQ1OiBXZWJTb2NrZXQgaGFuZHNoYWtl
IGluZm9ybWF0aW9uLgotICAgICAgICAgICAgd3Nfc3RyZWFtOiBGcmFtZSBnZW5lcmF0aW9uL3Bh
cnNpbmcgY2xhc3MuCi0gICAgICAgICAgICB3c192ZXJzaW9uOiBQcm90b2NvbCB2ZXJzaW9uLgot
Ci0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBh
bnkgZXJyb3IgaGFwcGVuZWQgaW4gcGFyc2luZyB0aGUgb3BlbmluZwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kc2hha2UgcmVxdWVzdC4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgIyA1LjEgUmVhZGluZyB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCi0gICAgICAg
ICMgZGlzcGF0Y2hlciBzZXRzIGl0IGluIHNlbGYuX3JlcXVlc3QuCi0gICAgICAgIF9jaGVja19o
ZWFkZXJfbGluZXMoc2VsZi5fcmVxdWVzdCwgX01BTkRBVE9SWV9IRUFERVJTKQotICAgICAgICBz
ZWxmLl9zZXRfcmVzb3VyY2UoKQotICAgICAgICBzZWxmLl9zZXRfc3VicHJvdG9jb2woKQotICAg
ICAgICBzZWxmLl9zZXRfbG9jYXRpb24oKQotICAgICAgICBzZWxmLl9zZXRfb3JpZ2luKCkKLSAg
ICAgICAgc2VsZi5fc2V0X2NoYWxsZW5nZV9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuX3NldF9w
cm90b2NvbF92ZXJzaW9uKCkKLQotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyLmRvX2V4dHJhX2hh
bmRzaGFrZShzZWxmLl9yZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKCkK
LQotICAgIGRlZiBfc2V0X3Jlc291cmNlKHNlbGYpOgotICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X3Jlc291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKLQotICAgIGRlZiBfc2V0X3N1YnByb3RvY29s
KHNlbGYpOgotICAgICAgICAjIHxTZWMtV2ViU29ja2V0LVByb3RvY29sfAotICAgICAgICBzdWJw
cm90b2NvbCA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCi0gICAgICAgICAgICBjb21t
b24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIpCi0gICAgICAgIGlmIHN1YnByb3RvY29s
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3Rv
Y29sKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0gc3VicHJvdG9jb2wKLQot
ICAgIGRlZiBfc2V0X2xvY2F0aW9uKHNlbGYpOgotICAgICAgICAjIHxIb3N0fAotICAgICAgICBo
b3N0ID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChjb21tb24uSE9TVF9IRUFERVIpCi0g
ICAgICAgIGlmIGhvc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X2xvY2F0aW9uID0gX2J1aWxkX2xvY2F0aW9uKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICMgVE9E
Tyh1a2FpKTogY2hlY2sgaG9zdCBpcyB0aGlzIGhvc3QuCi0KLSAgICBkZWYgX3NldF9vcmlnaW4o
c2VsZik6Ci0gICAgICAgICMgfE9yaWdpbnwKLSAgICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVz
dC5oZWFkZXJzX2luLmdldChjb21tb24uT1JJR0lOX0hFQURFUikKLSAgICAgICAgaWYgb3JpZ2lu
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmln
aW4KLQotICAgIGRlZiBfc2V0X3Byb3RvY29sX3ZlcnNpb24oc2VsZik6Ci0gICAgICAgICMgfFNl
Yy1XZWJTb2NrZXQtRHJhZnR8Ci0gICAgICAgIGRyYWZ0ID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJz
X2luLmdldChjb21tb24uU0VDX1dFQlNPQ0tFVF9EUkFGVF9IRUFERVIpCi0gICAgICAgIGlmIGRy
YWZ0IGlzIG5vdCBOb25lIGFuZCBkcmFmdCAhPSAnMCc6Ci0gICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFeGNlcHRpb24oJ0lsbGVnYWwgdmFsdWUgZm9yICVzOiAlcycgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9EUkFGVF9IRUFE
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWZ0KSkKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgSHlCaSAwMCcpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQkkwMAot
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IFN0cmVhbUhpeGllNzUoc2VsZi5fcmVx
dWVzdCwgVHJ1ZSkKLQotICAgIGRlZiBfc2V0X2NoYWxsZW5nZV9yZXNwb25zZShzZWxmKToKLSAg
ICAgICAgIyA1LjIgNC04LgotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2NoYWxsZW5nZSA9IHNl
bGYuX2dldF9jaGFsbGVuZ2UoKQotICAgICAgICAjIDUuMiA5LiBsZXQgL3Jlc3BvbnNlLyBiZSB0
aGUgTUQ1IGZpbnRlcnByaW50IG9mIC9jaGFsbGVuZ2UvCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfY2hhbGxlbmdlX21kNSA9IHV0aWwubWQ1X2hhc2goCi0gICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2NoYWxsZW5nZSkuZGlnZXN0KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgJ0NoYWxsZW5nZTogJXIgKCVzKScsCi0gICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2NoYWxsZW5nZSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KHNlbGYuX3JlcXVlc3Qu
d3NfY2hhbGxlbmdlKSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAg
J0NoYWxsZW5nZSByZXNwb25zZTogJXIgKCVzKScsCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX2NoYWxsZW5nZV9tZDUsCi0gICAgICAgICAgICB1dGlsLmhleGlmeShzZWxmLl9yZXF1ZXN0
LndzX2NoYWxsZW5nZV9tZDUpKQotCi0gICAgZGVmIF9nZXRfa2V5X3ZhbHVlKHNlbGYsIGtleV9m
aWVsZCk6Ci0gICAgICAgIGtleV92YWx1ZSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3Jl
cXVlc3QsIGtleV9maWVsZCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzOiAlcics
IGtleV9maWVsZCwga2V5X3ZhbHVlKQotCi0gICAgICAgICMgNS4yIDQuIGxldCAva2V5LW51bWJl
cl9uLyBiZSB0aGUgZGlnaXRzIChjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQotICAgICAgICAjIFUr
MDAzMCBESUdJVCBaRVJPICgwKSB0byBVKzAwMzkgRElHSVQgTklORSAoOSkpIGluIC9rZXlfbi8s
Ci0gICAgICAgICMgaW50ZXJwcmV0ZWQgYXMgYSBiYXNlIHRlbiBpbnRlZ2VyLCBpZ25vcmluZyBh
bGwgb3RoZXIgY2hhcmFjdGVycwotICAgICAgICAjIGluIC9rZXlfbi8uCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGtleV9udW1iZXIgPSBpbnQocmUuc3ViKCJcXEQiLCAiIiwga2V5X3ZhbHVl
KSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KCclcyBmaWVsZCBjb250YWlucyBubyBkaWdpdCcgJSBrZXlfZmllbGQpCi0gICAgICAgICMgNS4y
IDUuIGxldCAvc3BhY2VzX24vIGJlIHRoZSBudW1iZXIgb2YgVSswMDIwIFNQQUNFIGNoYXJhY3Rl
cnMKLSAgICAgICAgIyBpbiAva2V5X24vLgotICAgICAgICBzcGFjZXMgPSByZS5zdWJuKCIgIiwg
IiIsIGtleV92YWx1ZSlbMV0KLSAgICAgICAgaWYgc3BhY2VzID09IDA6Ci0gICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJyVzIGZpZWxkIGNvbnRhaW5zIG5vIHNwYWNlJyAlIGtl
eV9maWVsZCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnJXM6
IEtleS1udW1iZXIgaXMgJWQgYW5kIG51bWJlciBvZiBzcGFjZXMgaXMgJWQnLAotICAgICAgICAg
ICAga2V5X2ZpZWxkLCBrZXlfbnVtYmVyLCBzcGFjZXMpCi0KLSAgICAgICAgIyA1LjIgNi4gaWYg
L2tleS1udW1iZXJfbi8gaXMgbm90IGFuIGludGVncmFsIG11bHRpcGxlIG9mIC9zcGFjZXNfbi8K
LSAgICAgICAgIyB0aGVuIGFib3J0IHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KLSAgICAgICAg
aWYga2V5X251bWJlciAlIHNwYWNlcyAhPSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICclczogS2V5LW51bWJlciAoJWQpIGlzIG5vdCBh
biBpbnRlZ3JhbCBtdWx0aXBsZSBvZiBzcGFjZXMgJwotICAgICAgICAgICAgICAgICcoJWQpJyAl
IChrZXlfZmllbGQsIGtleV9udW1iZXIsIHNwYWNlcykpCi0gICAgICAgICMgNS4yIDcuIGxldCAv
cGFydF9uLyBiZSAva2V5LW51bWJlcl9uLyBkaXZpZGVkIGJ5IC9zcGFjZXNfbi8uCi0gICAgICAg
IHBhcnQgPSBrZXlfbnVtYmVyIC8gc3BhY2VzCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
JXM6IFBhcnQgaXMgJWQnLCBrZXlfZmllbGQsIHBhcnQpCi0gICAgICAgIHJldHVybiBwYXJ0Ci0K
LSAgICBkZWYgX2dldF9jaGFsbGVuZ2Uoc2VsZik6Ci0gICAgICAgICMgNS4yIDQtNy4KLSAgICAg
ICAga2V5MSA9IHNlbGYuX2dldF9rZXlfdmFsdWUoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMV9I
RUFERVIpCi0gICAgICAgIGtleTIgPSBzZWxmLl9nZXRfa2V5X3ZhbHVlKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWTJfSEVBREVSKQotICAgICAgICAjIDUuMiA4LiBsZXQgL2NoYWxsZW5nZS8gYmUg
dGhlIGNvbmNhdGVuYXRpb24gb2YgL3BhcnRfMS8sCi0gICAgICAgIGNoYWxsZW5nZSA9ICcnCi0g
ICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1Y3QucGFjaygnIUknLCBrZXkxKSAgIyBuZXR3b3JrIGJ5
dGVvcmRlciBpbnQKLSAgICAgICAgY2hhbGxlbmdlICs9IHN0cnVjdC5wYWNrKCchSScsIGtleTIp
ICAjIG5ldHdvcmsgYnl0ZW9yZGVyIGludAotICAgICAgICBjaGFsbGVuZ2UgKz0gc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLnJlYWQoOCkKLSAgICAgICAgcmV0dXJuIGNoYWxsZW5nZQotCi0gICAg
ZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAg
ICAgICMgNS4yIDEwLiBzZW5kIHRoZSBmb2xsb3dpbmcgbGluZS4KLSAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKCdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nKQot
Ci0gICAgICAgICMgNS4yIDExLiBzZW5kIHRoZSBmb2xsb3dpbmcgZmllbGRzIHRvIHRoZSBjbGll
bnQuCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAg
Y29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJ
RTc1KSkKLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAg
ICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQ
RSkpCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAg
Y29tbW9uLlNFQ19XRUJTT0NLRVRfTE9DQVRJT05fSEVBREVSLCBzZWxmLl9yZXF1ZXN0LndzX2xv
Y2F0aW9uKSkKLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAg
ICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9PUklHSU5fSEVBREVSLCBzZWxmLl9yZXF1ZXN0Lndz
X29yaWdpbikpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2w6Ci0gICAgICAg
ICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgICAgICBjb21t
b24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgICMgNS4yIDEyLiBzZW5kIHR3byBieXRlcyAw
eDBEIDB4MEEuCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnXHJcbicpCi0gICAgICAgICMgNS4y
IDEzLiBzZW5kIC9yZXNwb25zZS8KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHNlbGYuX3JlcXVl
c3Qud3NfY2hhbGxlbmdlX21kNSkKLQotICAgICAgICByYXdfcmVzcG9uc2UgPSAnJy5qb2luKHJl
c3BvbnNlKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUocmF3X3Jlc3Bv
bnNlKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2VydmVyXCdzIG9wZW5pbmcg
aGFuZHNoYWtlOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByYXdfcmVzcG9uc2Up
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1N2E0OGM2
MjdiYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9oeWJpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA2ZTc2Mzg1OTc5OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwy
NTcgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiUHl0aG9uSGVhZGVyUGFyc2VySGFu
ZGxlciBmb3IgbW9kX3B5d2Vic29ja2V0LgotCi1BcGFjaGUgSFRUUCBTZXJ2ZXIgYW5kIG1vZF9w
eXRob24gbXVzdCBiZSBjb25maWd1cmVkIHN1Y2ggdGhhdCB0aGlzCi1mdW5jdGlvbiBpcyBjYWxs
ZWQgdG8gaGFuZGxlIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcK
LQotZnJvbSBtb2RfcHl0aG9uIGltcG9ydCBhcGFjaGUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotCi0KLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgcm9v
dCBkaXJlY3RvcnkuCi1fUFlPUFRfSEFORExFUl9ST09UID0gJ21vZF9weXdlYnNvY2tldC5oYW5k
bGVyX3Jvb3QnCi0KLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgc2NhbiBk
aXJlY3RvcnkuCi0jIFRoaXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciB0aGUgcm9vdCBkaXJl
Y3RvcnkuCi0jIFRoZSBkZWZhdWx0IGlzIHRoZSByb290IGRpcmVjdG9yeS4KLV9QWU9QVF9IQU5E
TEVSX1NDQU4gPSAnbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfc2NhbicKLQotIyBQeXRob25PcHRp
b24gdG8gYWxsb3cgaGFuZGxlcnMgd2hvc2UgY2Fub25pY2FsIHBhdGggaXMKLSMgbm90IHVuZGVy
IHRoZSByb290IGRpcmVjdG9yeS4gSXQncyBkaXNhbGxvd2VkIGJ5IGRlZmF1bHQuCi0jIFNldCB0
aGlzIG9wdGlvbiB3aXRoIHZhbHVlIG9mICd5ZXMnIHRvIGFsbG93LgotX1BZT1BUX0FMTE9XX0hB
TkRMRVJTX09VVFNJREVfUk9PVCA9ICgKLSAgICAnbW9kX3B5d2Vic29ja2V0LmFsbG93X2hhbmRs
ZXJzX291dHNpZGVfcm9vdF9kaXInKQotIyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVhbmlu
Z3MuICdZZXMnIGFuZCAnTm8nIGFyZSBhbGxvd2VkIGp1c3QgZm9yCi0jIGNvbXBhdGliaWxpdHku
Ci1fUFlPUFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9ST09UX0RFRklOSVRJT04gPSB7Ci0gICAg
J29mZic6IEZhbHNlLCAnbm8nOiBGYWxzZSwgJ29uJzogVHJ1ZSwgJ3llcyc6IFRydWV9Ci0KLSMg
KE9ic29sZXRlIG9wdGlvbi4gSWdub3JlZC4pCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRv
IGFsbG93IGhhbmRzaGFrZSBkZWZpbmVkIGluIEhpeGllIDc1IHZlcnNpb24KLSMgcHJvdG9jb2wu
IFRoZSBkZWZhdWx0IGlzIE5vbmUgKE9mZikKLV9QWU9QVF9BTExPV19EUkFGVDc1ID0gJ21vZF9w
eXdlYnNvY2tldC5hbGxvd19kcmFmdDc1JwotIyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVh
bmluZ3MuCi1fUFlPUFRfQUxMT1dfRFJBRlQ3NV9ERUZJTklUSU9OID0geydvZmYnOiBGYWxzZSwg
J29uJzogVHJ1ZX0KLQotCi1jbGFzcyBBcGFjaGVMb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6
Ci0KLSAgICAiIiJXcmFwcGVyIGxvZ2dpbmcuSGFuZGxlciB0byBlbWl0IGxvZyBtZXNzYWdlIHRv
IGFwYWNoZSdzIGVycm9yLmxvZy4iIiIKLQotICAgIF9MRVZFTFMgPSB7Ci0gICAgICAgIGxvZ2dp
bmcuREVCVUc6IGFwYWNoZS5BUExPR19ERUJVRywKLSAgICAgICAgbG9nZ2luZy5JTkZPOiBhcGFj
aGUuQVBMT0dfSU5GTywKLSAgICAgICAgbG9nZ2luZy5XQVJOSU5HOiBhcGFjaGUuQVBMT0dfV0FS
TklORywKLSAgICAgICAgbG9nZ2luZy5FUlJPUjogYXBhY2hlLkFQTE9HX0VSUiwKLSAgICAgICAg
bG9nZ2luZy5DUklUSUNBTDogYXBhY2hlLkFQTE9HX0NSSVQsCi0gICAgICAgIH0KLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0PU5vbmUpOgotICAgICAgICBsb2dnaW5nLkhhbmRsZXIu
X19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nX2Vycm9yID0gYXBhY2hlLmxvZ19lcnJv
cgotICAgICAgICBpZiByZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fbG9n
X2Vycm9yID0gcmVxdWVzdC5sb2dfZXJyb3IKLQotICAgICAgICAjIFRpbWUgYW5kIGxldmVsIHdp
bGwgYmUgcHJpbnRlZCBieSBBcGFjaGUuCi0gICAgICAgIHNlbGYuX2Zvcm1hdHRlciA9IGxvZ2dp
bmcuRm9ybWF0dGVyKCclKG5hbWUpczogJShtZXNzYWdlKXMnKQotCi0gICAgZGVmIGVtaXQoc2Vs
ZiwgcmVjb3JkKToKLSAgICAgICAgYXBhY2hlX2xldmVsID0gYXBhY2hlLkFQTE9HX0RFQlVHCi0g
ICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIGluIEFwYWNoZUxvZ0hhbmRsZXIuX0xFVkVMUzoKLSAg
ICAgICAgICAgIGFwYWNoZV9sZXZlbCA9IEFwYWNoZUxvZ0hhbmRsZXIuX0xFVkVMU1tyZWNvcmQu
bGV2ZWxub10KLQotICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXR0ZXIuZm9ybWF0KHJlY29yZCkK
LQotICAgICAgICAjICJzZXJ2ZXIiIHBhcmFtZXRlciBtdXN0IGJlIHBhc3NlZCB0byBoYXZlICJs
ZXZlbCIgcGFyYW1ldGVyIHdvcmsuCi0gICAgICAgICMgSWYgb25seSAibGV2ZWwiIHBhcmFtZXRl
ciBpcyBwYXNzZWQsIG5vdGhpbmcgc2hvd3MgdXAgb24gQXBhY2hlJ3MKLSAgICAgICAgIyBsb2cu
IEhvd2V2ZXIsIGF0IHRoaXMgcG9pbnQsIHdlIGNhbm5vdCBnZXQgdGhlIHNlcnZlciBvYmplY3Qg
b2YgdGhlCi0gICAgICAgICMgdmlydHVhbCBob3N0IHdoaWNoIHdpbGwgcHJvY2VzcyBXZWJTb2Nr
ZXQgcmVxdWVzdHMuIFRoZSBvbmx5IHNlcnZlcgotICAgICAgICAjIG9iamVjdCB3ZSBjYW4gZ2V0
IGhlcmUgaXMgYXBhY2hlLm1haW5fc2VydmVyLiBCdXQgV2hlcmV2ZXIgKHNlcnZlcgotICAgICAg
ICAjIGNvbmZpZ3VyYXRpb24gY29udGV4dCBvciB2aXJ0dWFsIGhvc3QgY29udGV4dCkgd2UgcHV0
Ci0gICAgICAgICMgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBkaXJlY3RpdmUsIGFwYWNoZS5t
YWluX3NlcnZlciBqdXN0IHBvaW50cwotICAgICAgICAjIHRoZSBtYWluIHNlcnZlciBpbnN0YW5j
ZSAobm90IGFueSBvZiB2aXJ0dWFsIHNlcnZlciBpbnN0YW5jZSkuIFRoZW4sCi0gICAgICAgICMg
QXBhY2hlIGZvbGxvd3MgTG9nTGV2ZWwgZGlyZWN0aXZlIGluIHRoZSBzZXJ2ZXIgY29uZmlndXJh
dGlvbiBjb250ZXh0Ci0gICAgICAgICMgdG8gZmlsdGVyIGxvZ3MuIFNvLCB3ZSBuZWVkIHRvIHNw
ZWNpZnkgTG9nTGV2ZWwgaW4gdGhlIHNlcnZlcgotICAgICAgICAjIGNvbmZpZ3VyYXRpb24gY29u
dGV4dC4gRXZlbiBpZiB3ZSBzcGVjaWZ5ICJMb2dMZXZlbCBkZWJ1ZyIgaW4gdGhlCi0gICAgICAg
ICMgdmlydHVhbCBob3N0IGNvbnRleHQgd2hpY2ggYWN0dWFsbHkgaGFuZGxlcyBXZWJTb2NrZXQg
Y29ubmVjdGlvbnMsCi0gICAgICAgICMgREVCVUcgbGV2ZWwgbG9ncyBuZXZlciBzaG93IHVwIHVu
bGVzcyAiTG9nTGV2ZWwgZGVidWciIGlzIHNwZWNpZmllZAotICAgICAgICAjIGluIHRoZSBzZXJ2
ZXIgY29uZmlndXJhdGlvbiBjb250ZXh0LgotICAgICAgICAjCi0gICAgICAgICMgVE9ETyh0eW9z
aGlubyk6IFByb3ZpZGUgbG9nZ2luZyBtZXRob2RzIG9uIHJlcXVlc3Qgb2JqZWN0LiBXaGVuCi0g
ICAgICAgICMgcmVxdWVzdCBpcyBtcF9yZXF1ZXN0IG9iamVjdCAod2hlbiB1c2VkIHRvZ2V0aGVy
IHdpdGggQXBhY2hlKSwgdGhlCi0gICAgICAgICMgbWV0aG9kcyBjYWxsIHJlcXVlc3QubG9nX2Vy
cm9yIGluZGlyZWN0bHkuIFdoZW4gcmVxdWVzdCBpcwotICAgICAgICAjIF9TdGFuZGFsb25lUmVx
dWVzdCwgdGhlIG1ldGhvZHMgY2FsbCBQeXRob24ncyBsb2dnaW5nIGZhY2lsaXR5IHdoaWNoCi0g
ICAgICAgICMgd2UgY3JlYXRlIGluIHN0YW5kYWxvbmUucHkuCi0gICAgICAgIHNlbGYuX2xvZ19l
cnJvcihtc2csIGFwYWNoZV9sZXZlbCwgYXBhY2hlLm1haW5fc2VydmVyKQotCi0KLWRlZiBfY29u
ZmlndXJlX2xvZ2dpbmcoKToKLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAg
IyBMb2dzIGFyZSBmaWx0ZXJlZCBieSBBcGFjaGUgYmFzZWQgb24gTG9nTGV2ZWwgZGlyZWN0aXZl
IGluIEFwYWNoZQotICAgICMgY29uZmlndXJhdGlvbiBmaWxlLiBXZSBtdXN0IGp1c3QgcGFzcyBs
b2dzIGZvciBhbGwgbGV2ZWxzIHRvCi0gICAgIyBBcGFjaGVMb2dIYW5kbGVyLgotICAgIGxvZ2dl
ci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKEFwYWNoZUxv
Z0hhbmRsZXIoKSkKLQotCi1fY29uZmlndXJlX2xvZ2dpbmcoKQotCi1fTE9HR0VSID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIF9wYXJzZV9vcHRpb24obmFtZSwgdmFsdWUs
IGRlZmluaXRpb24pOgotICAgICIiIlJldHVybiB0aGUgbWVhbmluZyBvZiBhIG9wdGlvbiB2YWx1
ZS4iIiIKLSAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
IG1lYW5pbmcgPSBkZWZpbml0aW9uLmdldCh2YWx1ZS5sb3dlcigpKQotICAgIGlmIG1lYW5pbmcg
aXMgTm9uZToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIHZhbHVlIGZvciBQeXRo
b25PcHRpb24gJXM6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUp
KQotICAgIHJldHVybiBtZWFuaW5nCi0KLQotZGVmIF9jcmVhdGVfZGlzcGF0Y2hlcigpOgotICAg
ICIiIkluaXRpYWxpemUgYSBkaXNwYXRjaC5EaXNwYXRjaGVyLiIiIgotICAgIF9MT0dHRVIuaW5m
bygnSW5pdGlhbGl6aW5nIERpc3BhdGNoZXInKQotCi0gICAgb3B0aW9ucyA9IGFwYWNoZS5tYWlu
X3NlcnZlci5nZXRfb3B0aW9ucygpCi0KLSAgICBoYW5kbGVyX3Jvb3QgPSBvcHRpb25zLmdldChf
UFlPUFRfSEFORExFUl9ST09ULCBOb25lKQotICAgIGlmIG5vdCBoYW5kbGVyX3Jvb3Q6Ci0gICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignUHl0aG9uT3B0aW9uICVzIGlzIG5vdCBkZWZpbmVkJyAlIF9Q
WU9QVF9IQU5ETEVSX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0df
RVJSKQotCi0gICAgaGFuZGxlcl9zY2FuID0gb3B0aW9ucy5nZXQoX1BZT1BUX0hBTkRMRVJfU0NB
TiwgaGFuZGxlcl9yb290KQotCi0gICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290ID0gX3Bh
cnNlX29wdGlvbigKLSAgICAgICAgX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCwK
LSAgICAgICAgb3B0aW9ucy5nZXQoX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCks
Ci0gICAgICAgIF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1RfREVGSU5JVElPTikK
LQotICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAotICAgICAgICBoYW5kbGVy
X3Jvb3QsIGhhbmRsZXJfc2NhbiwgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290KQotCi0gICAg
Zm9yIHdhcm5pbmcgaW4gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKToKLSAgICAgICAgYXBh
Y2hlLmxvZ19lcnJvcigKLSAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IFdhcm5pbmcgaW4g
c291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcsCi0gICAgICAgICAgICBhcGFjaGUuQVBMT0df
V0FSTklORykKLQotICAgIHJldHVybiBkaXNwYXRjaGVyCi0KLQotIyBJbml0aWFsaXplCi1fZGlz
cGF0Y2hlciA9IF9jcmVhdGVfZGlzcGF0Y2hlcigpCi0KLQotZGVmIGhlYWRlcnBhcnNlcmhhbmRs
ZXIocmVxdWVzdCk6Ci0gICAgIiIiSGFuZGxlIHJlcXVlc3QuCi0KLSAgICBBcmdzOgotICAgICAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIG5h
bWVkIGhlYWRlcnBhcnNlcmhhbmRsZXIgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdAotICAgIG5h
bWUgZm9yIGEgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlci4KLSAgICAiIiIKLSAgICBoYW5kc2hh
a2VfaXNfZG9uZSA9IEZhbHNlCi0gICAgdHJ5OgotICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1
bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAgICAjIHdl
IGRvbid0IGhhdmUgcmVxdWVzdCBoYW5kbGVycy4KLSAgICAgICAgaWYgbm90IF9kaXNwYXRjaGVy
LmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3QudXJpKToKLSAgICAgICAgICAgIHJlcXVlc3QubG9n
X2Vycm9yKAotICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IE5vIGhhbmRsZXIgZm9y
IHJlc291cmNlOiAlcicgJSByZXF1ZXN0LnVyaSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBM
T0dfSU5GTykKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAg
ICdtb2RfcHl3ZWJzb2NrZXQ6IEZhbGxiYWNrIHRvIEFwYWNoZScsIGFwYWNoZS5BUExPR19JTkZP
KQotICAgICAgICAgICAgcmV0dXJuIGFwYWNoZS5ERUNMSU5FRAotICAgIGV4Y2VwdCBkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKLSAg
ICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IERpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVz
JyAlIGUsCi0gICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAgaWYgbm90IGhh
bmRzaGFrZV9pc19kb25lOgotICAgICAgICAgICAgcmV0dXJuIGUuc3RhdHVzCi0KLSAgICB0cnk6
Ci0gICAgICAgIGFsbG93X2RyYWZ0NzUgPSBfcGFyc2Vfb3B0aW9uKAotICAgICAgICAgICAgX1BZ
T1BUX0FMTE9XX0RSQUZUNzUsCi0gICAgICAgICAgICBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29w
dGlvbnMoKS5nZXQoX1BZT1BUX0FMTE9XX0RSQUZUNzUpLAotICAgICAgICAgICAgX1BZT1BUX0FM
TE9XX0RSQUZUNzVfREVGSU5JVElPTikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5k
c2hha2UuZG9faGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHJlcXVlc3QsIF9kaXNwYXRjaGVy
LCBhbGxvd0RyYWZ0NzU9YWxsb3dfZHJhZnQ3NSkKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5W
ZXJzaW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKLSAg
ICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBIYW5kc2hha2UgZmFpbGVkIGZvciB2ZXJz
aW9uIGVycm9yOiAlcycgJSBlLAotICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19JTkZPKQot
ICAgICAgICAgICAgcmVxdWVzdC5lcnJfaGVhZGVyc19vdXQuYWRkKGNvbW1vbi5TRUNfV0VCU09D
S0VUX1ZFUlNJT05fSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGUuc3VwcG9ydGVkX3ZlcnNpb25zKQotICAgICAgICAgICAgcmV0dXJuIGFwYWNoZS5IVFRQ
X0JBRF9SRVFVRVNUCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9u
IGFzIGU6Ci0gICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mvd3NzIGZhaWxlZC4KLSAgICAg
ICAgICAgICMgU2VuZCBodHRwIHJlc3BvbnNlIHdpdGggZXJyb3Igc3RhdHVzLgotICAgICAgICAg
ICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDog
SGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJyb3I6ICVzJyAlIGUsCi0gICAgICAgICAgICAgICAgYXBh
Y2hlLkFQTE9HX0lORk8pCi0gICAgICAgICAgICByZXR1cm4gZS5zdGF0dXMKLQotICAgICAgICBo
YW5kc2hha2VfaXNfZG9uZSA9IFRydWUKLSAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IF9k
aXNwYXRjaGVyCi0gICAgICAgIF9kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAg
ICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
cmVxdWVzdC5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDogQWJvcnRlZDogJXMnICUgZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uIGNhbiBhbHNvIGJlIHRo
cm93biBpZiBzb21ldGhpbmcgaXMgd3JvbmcgaW4KLSAgICAgICAgIyBweXdlYnNvY2tldCBjb2Rl
LiBJdCdzIGNhdWdodCBoZXJlLCB0aGVuLgotCi0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdt
b2RfcHl3ZWJzb2NrZXQ6IEV4Y2VwdGlvbiBvY2N1cnJlZDogJXNcbiVzJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIChlLCB1dGlsLmdldF9zdGFja190cmFjZSgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0VSUikKLSAgICAgICAgIyBVbmtub3duIGV4Y2Vw
dGlvbnMgYmVmb3JlIGhhbmRzaGFrZSBtZWFuIEFwYWNoZSBtdXN0IGhhbmRsZSBpdHMKLSAgICAg
ICAgIyByZXF1ZXN0IHdpdGggYW5vdGhlciBoYW5kbGVyLgotICAgICAgICBpZiBub3QgaGFuZHNo
YWtlX2lzX2RvbmU6Ci0gICAgICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0gICAgIyBT
ZXQgYXNzYmFja3dhcmRzIHRvIHN1cHByZXNzIHJlc3BvbnNlIGhlYWRlciBnZW5lcmF0aW9uIGJ5
IEFwYWNoZS4KLSAgICByZXF1ZXN0LmFzc2JhY2t3YXJkcyA9IDEKLSAgICByZXR1cm4gYXBhY2hl
LkRPTkUgICMgUmV0dXJuIERPTkUgc3VjaCB0aGF0IG5vIG90aGVyIGhhbmRsZXJzIGFyZSBpbnZv
a2VkLgotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVh
ZGVyX3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMDU4NGM1ZGFjOC4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiVXRpbGl0aWVzIGZvciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGhlYWRlcnMgdGhhdCBmb2xs
b3cgdGhlIGdyYW1tYXIgZGVmaW5lZAotaW4gSFRUUCBSRkMgaHR0cDovL3d3dy5pZXRmLm9yZy9y
ZmMvcmZjMjYxNi50eHQuCi0iIiIKLQotCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCi0K
LQotX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/PXt9IFx0JwotCi0KLWRlZiBfaXNfY2hh
cihjKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQg
aW4gSFRUUCBSRkMuIiIiCi0KLSAgICByZXR1cm4gb3JkKGMpIDw9IDEyNwotCi0KLWRlZiBfaXNf
Y3RsKGMpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVk
IGluIEhUVFAgUkZDLiIiIgotCi0gICAgcmV0dXJuIG9yZChjKSA8PSAzMSBvciBvcmQoYykgPT0g
MTI3Ci0KLQotY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLSAgICAgICAgc2VsZi5oZWFk
ID0gMAotCi0KLWRlZiBwZWVrKHN0YXRlLCBwb3M9MCk6Ci0gICAgIiIiUGVla3MgdGhlIGNoYXJh
Y3RlciBhdCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgotCi0gICAgaWYgc3RhdGUuaGVh
ZCArIHBvcyA+PSBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBy
ZXR1cm4gc3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQotCi0KLWRlZiBjb25zdW1lKHN0YXRl
LCBhbW91bnQ9MSk6Ci0gICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBm
cm9tIHRoZSBoZWFkIGFuZCByZXR1cm5zIHRoZQotICAgIGNvbnN1bWVkIGJ5dGVzLiBJZiB0aGVy
ZSdzIG5vdCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBOb25lLgotICAgICIiIgot
Ci0gICAgaWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5kYXRhKToKLSAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3RhdGUuaGVhZDpzdGF0ZS5o
ZWFkICsgYW1vdW50XQotICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFkICsgYW1vdW50Ci0gICAg
cmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb25zdW1lX3N0cmluZyhzdGF0ZSwgZXhwZWN0ZWQpOgot
ICAgICIiIkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3RlZCBzdHJpbmcsIGNvbnN1
bWVzIHRoZSBzdHJpbmcgZnJvbQotICAgIHRoZSBoZWFkLiBSZXR1cm5zIFRydWUgaWYgY29uc3Vt
ZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKLSAgICBGYWxzZS4KLSAgICAiIiIK
LQotICAgIHBvcyA9IDAKLQotICAgIGZvciBjIGluIGV4cGVjdGVkOgotICAgICAgICBpZiBjICE9
IHBlZWsoc3RhdGUsIHBvcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcG9z
ICs9IDEKLQotICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSBMV1MgZnJvbSB0aGUgaGVh
ZC4gUmV0dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCi0gICAgT3RoZXJ3aXNlLCBy
ZXR1cm5zIEZhbHNlLgotCi0gICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8IEhUICkKLSAgICAiIiIK
LQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0KLSAgICBjb25zdW1lX3N0cmluZyhz
dGF0ZSwgJ1xyXG4nKQotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
YyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyA9PSAnICcgb3IgYyA9PSAnXHQnOgot
ICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHBvcyA9
PSAwOgotICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBjb25zdW1lX2x3c2VzKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyAqTFdTIGZyb20gdGhlIGhl
YWQuIiIiCi0KLSAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgICAgIHBhc3MKLQot
Ci1kZWYgY29uc3VtZV90b2tlbihzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBmcm9t
IHRoZSBoZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5vIHRva2VuCi0gICAgd2Fz
IGZvdW5kLgotICAgICIiIgotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAg
ICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyBpcyBOb25lIG9yIGMgaW4gX1NF
UEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICBp
ZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICBy
ZXR1cm4gY29uc3VtZShzdGF0ZSwgcG9zKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9z
ICs9IDEKLQotCi1kZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKToKLSAg
ICAiIiJDb25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywgYW5kIHJldHVybnMgdGhl
IHRva2VuIG9yIHVucXVvdGVkCi0gICAgc3RyaW5nLiBJZiBubyB0b2tlbiBvciBxdW90ZWQtc3Ry
aW5nIHdhcyBmb3VuZCwgcmV0dXJucyBOb25lLgotICAgICIiIgotCi0gICAgb3JpZ2luYWxfaGVh
ZCA9IHN0YXRlLmhlYWQKLQotICAgIGlmIG5vdCBjb25zdW1lX3N0cmluZyhzdGF0ZSwgJyInKToK
LSAgICAgICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICByZXN1bHQgPSBbXQot
Ci0gICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKLQotICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgIGlmIG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVfbHdzKHN0YXRlKToKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQotICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICBjID0gY29uc3VtZShzdGF0ZSkKLSAgICAgICAgaWYgYyBpcyBOb25lOgotICAgICAgICAg
ICAgIyBxdW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRvdWJsZSBxdW90YXRpb24K
LSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoKLSAgICAgICAgICAgIGV4
cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfaXNfY2hhcihjKToKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1b3RlZC1wYWlyCi0gICAg
ICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKLSAgICAgICAgICAgIGV4cGVjdF9x
dW90ZWRfcGFpciA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICciJzoKLSAgICAgICAgICAgIHJl
dHVybiAnJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZWxpZiBfaXNfY3RsKGMpOgotICAgICAgICAg
ICAgIyBJbnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQKLSAgICAgICAgICAgIHN0
YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQotCi0KLWRlZiBxdW90ZV9pZl9u
ZWNlc3Nhcnkocyk6Ci0gICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJpbmcgaW50byBxdW90ZWQt
c3RyaW5nLiIiIgotCi0gICAgcXVvdGUgPSBGYWxzZQotICAgIGlmIHMgPT0gJyc6Ci0gICAgICAg
IHJldHVybiAnIiInCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBjIGluIHM6Ci0gICAgICAg
IGlmIGMgPT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lz
X2NoYXIoYyk6Ci0gICAgICAgICAgICBxdW90ZSA9IFRydWUKLQotICAgICAgICBpZiBjID09ICci
JyBvciBfaXNfY3RsKGMpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnICsgYykKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykKLQotICAgIGlmIHF1b3Rl
OgotICAgICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsgJyInCi0gICAgZWxzZToK
LSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0KLWRlZiBwYXJzZV91cmkodXJpKToK
LSAgICAiIiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9zdCwgcG9ydCBhbmQgcmVz
b3VyY2UuIiIiCi0KLSAgICBwYXJzZWQgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJpKQotICAg
IGlmIHBhcnNlZC5zY2hlbWUgIT0gJ3dzcycgYW5kIHBhcnNlZC5zY2hlbWUgIT0gJ3dzJzoKLSAg
ICAgICAgIyB8dXJpfCBtdXN0IGJlIGEgcmVsYXRpdmUgVVJJLgotICAgICAgICAjIFRPRE8odG95
b3NoaW0pOiBTaG91bGQgdmFsaWRhdGUgfHVyaXwuCi0gICAgICAgIHJldHVybiBOb25lLCBOb25l
LCB1cmkKLQotICAgIGlmIHBhcnNlZC5ob3N0bmFtZSBpcyBOb25lOgotICAgICAgICByZXR1cm4g
Tm9uZSwgTm9uZSwgTm9uZQotCi0gICAgcG9ydCA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIHBv
cnQgPSBwYXJzZWQucG9ydAotICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICMg
cG9ydCBwcm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBwb3J0IGRlc2Ny
aXB0aW9uIGxpa2UKLSAgICAgICAgIyAnd3M6Ly9ob3N0Oi9wYXRoJy4KLSAgICAgICAgcmV0dXJu
IE5vbmUsIE5vbmUsIE5vbmUKLQotICAgIGlmIHBvcnQgaXMgTm9uZToKLSAgICAgICAgaWYgcGFy
c2VkLnNjaGVtZSA9PSAnd3MnOgotICAgICAgICAgICAgcG9ydCA9IDgwCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBwb3J0ID0gNDQzCi0KLSAgICBwYXRoID0gcGFyc2VkLnBhdGgKLSAgICBp
ZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCArPSAnLycKLSAgICBpZiBwYXJzZWQucXVlcnk6Ci0g
ICAgICAgIHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Ci0gICAgaWYgcGFyc2VkLmZyYWdtZW50
OgotICAgICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFnbWVudAotCi0gICAgcmV0dXJuIHBh
cnNlZC5ob3N0bmFtZSwgcG9ydCwgcGF0aAotCi0KLXRyeToKLSAgICB1cmxsaWIucGFyc2UudXNl
c19uZXRsb2MuaW5kZXgoJ3dzJykKLWV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgIyB1cmxw
YXJzZSBpbiBQeXRob24yLjUuMSBkb2Vzbid0IGhhdmUgJ3dzJyBhbmQgJ3dzcycgZW50cmllcy4K
LSAgICB1cmxsaWIucGFyc2UudXNlc19uZXRsb2MuYXBwZW5kKCd3cycpCi0gICAgdXJsbGliLnBh
cnNlLnVzZXNfbmV0bG9jLmFwcGVuZCgnd3NzJykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM3YWZjYzE1N2VkNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L21lbW9yaXppbmdmaWxlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiTWVtb3JpemluZyBmaWxlLgotCi1BIG1lbW9yaXppbmcgZmls
ZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotIiIi
Ci0KLQotY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKLQotICAgICIiIk1lbW9yaXppbmdG
aWxlIHdyYXBzIGEgZmlsZSBhbmQgbWVtb3JpemVzIGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCi0K
LSAgICBOb3RlIHRoYXQgZGF0YSByZWFkIGJ5IG90aGVyIG1ldGhvZHMgYXJlIG5vdCBtZW1vcml6
ZWQuIFRoaXMgYmVoYXZpb3IKLSAgICBpcyBnb29kIGVub3VnaCBmb3IgbWVtb3JpemluZyBsaW5l
cyBTaW1wbGVIVFRQU2VydmVyIHJlYWRzIGJlZm9yZQotICAgIHRoZSBjb250cm9sIHJlYWNoZXMg
V2ViU29ja2V0UmVxdWVzdEhhbmRsZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZmlsZV8sIG1heF9tZW1vcml6ZWRfbGluZXM9MHg3RkZGRkZGRik6Ci0gICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZmlsZV86
IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgotICAgICAgICAgICAgbWF4X21lbW9yaXplZF9saW5l
czogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgotICAgICAgICAgICAg
ICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXplZC4KLSAg
ICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5fZmlsZSA9IGZpbGVfCi0gICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9IFtdCi0g
ICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xpbmVzCi0g
ICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGlu
ZSA9IE5vbmUKLQotICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAg
ICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KLQotICAgICAgICBSZXR1cm5zIHRoZSB2YWx1
ZSBvdmVycmlkZGVuIGJ5IHRoaXMgY2xhc3MgZm9yIHNvbWUgYXR0cmlidXRlcywKLSAgICAgICAg
YW5kIGZvcndhcmRzIHRoZSBjYWxsIHRvIF9maWxlIGZvciB0aGUgb3RoZXIgYXR0cmlidXRlcy4K
LSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5hbWUgaW4gKCdfZmlsZScsICdfbWVtb3JpemVkX2xp
bmVzJywgJ19tYXhfbWVtb3JpemVkX2xpbmVzJywKLSAgICAgICAgICAgICAgICAgICAgJ19idWZm
ZXJlZCcsICdfYnVmZmVyZWRfbGluZScsICdyZWFkbGluZScsCi0gICAgICAgICAgICAgICAgICAg
ICdnZXRfbWVtb3JpemVkX2xpbmVzJyk6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0
YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUuX19nZXRh
dHRyaWJ1dGVfXyhuYW1lKQotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAg
ICAgICAiIiJPdmVycmlkZSBmaWxlLnJlYWRsaW5lIGFuZCBtZW1vcml6ZSB0aGUgbGluZSByZWFk
LgotCi0gICAgICAgIE5vdGUgdGhhdCBldmVuIGlmIHNpemUgaXMgc3BlY2lmaWVkIGFuZCBzbWFs
bGVyIHRoYW4gYWN0dWFsIHNpemUsCi0gICAgICAgIHRoZSB3aG9sZSBsaW5lIHdpbGwgYmUgcmVh
ZCBvdXQgZnJvbSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0IGJ5Ci0gICAgICAgIHN1YnNlcXVlbnQg
cmVhZGxpbmUgY2FsbHMuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9idWZmZXJlZDoK
LSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJlZF9saW5lCi0gICAgICAgICAgICBzZWxm
Ll9idWZmZXJlZCA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gc2Vs
Zi5fZmlsZS5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBsaW5lIGFuZCBsZW4oc2VsZi5fbWVt
b3JpemVkX2xpbmVzKSA8IHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXM6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICBpZiBzaXplID49
IDAgYW5kIHNpemUgPCBsZW4obGluZSk6Ci0gICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IFRy
dWUKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUgPSBsaW5lW3NpemU6XQotICAgICAg
ICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCi0gICAgICAgIHJldHVybiBsaW5lCi0KLSAgICBkZWYg
Z2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0IGxpbmVzIG1lbW9yaXpl
ZCBzbyBmYXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9tZW1vcml6ZWRfbGluZXMKLQotCi0j
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0
aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYzZjNWIxZGJjZTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9tc2d1dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIk1lc3NhZ2UgcmVsYXRlZCB1dGlsaXRpZXMuCi0KLU5vdGU6
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBl
dmVuIHRob3VnaAotbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUg
dXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KLWhhbmRsZXJzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZl
IG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLAotcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBu
b3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcKLWJ5dGVzIHdy
aXRpbmcvcmVhZGluZy4KLSIiIgotCi0KLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBxdWV1ZQotaW1w
b3J0IHRocmVhZGluZwotCi0KLSMgRXhwb3J0IEV4Y2VwdGlvbiBzeW1ib2xzIGZyb20gbXNndXRp
bCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVkRnJh
bWVFeGNlcHRpb24KLQotCi0jIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2Vi
U29ja2V0IG1lc3NhZ2VzLgotZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6Ci0gICAgIiIi
Q2xvc2UgY29ubmVjdGlvbi4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRo
b24gcmVxdWVzdC4KLSAgICAiIiIKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0
aW9uKCkKLQotCi1kZWYgc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRy
dWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBt
ZXNzYWdlKS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVz
dC4KLSAgICAgICAgcGF5bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBz
ZW5kLgotICAgICAgICBlbmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KLSAgICAgICAg
ICAgICBGYWxzZSB0byBzZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0
IGlzIHRvIGJlCi0gICAgICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRf
bWVzc2FnZSBjYWxsIHdpdGggZW5kPVRydWUuCi0gICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2Fk
X2RhdGEgYXMgYmluYXJ5IGZyYW1lKHMpLgotICAgIFJhaXNlczoKLSAgICAgICAgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uOiB3aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCi0gICAgIiIiCi0g
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5h
cnkpCi0KLQotZGVmIHJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKLSAgICAiIiJSZWNlaXZlIGEg
V2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCi0gICAg
dW5pY29kZSBvciBhIGJpbmFyeSBpbiBzdHIuCi0KLSAgICBBcmdzOgotICAgICAgICByZXF1ZXN0
OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgUmFpc2VzOgotICAgICAgICBJbnZhbGlkRnJhbWVF
eGNlcHRpb246ICAgICB3aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCi0gICAgICAgIFVu
c3VwcG9ydGVkRnJhbWVFeGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJh
bWUgZS5nLiBzb21lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2Vy
dmVkIGJpdCBpcyBzZXQgYnV0IG5vIGV4dGVuc2lvbiBjYW4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjb2duaXplIGl0LgotICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlv
bjogICAgICB3aGVuIGNsaWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KLSAg
ICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24g
aXMgY2xvc2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRs
eS4KLSAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFk
eSB0ZXJtaW5hdGVkLgotICAgICIiIgotICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNl
aXZlX21lc3NhZ2UoKQotCi0KLWRlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keT0nJyk6Ci0gICAg
cmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKGJvZHkpCi0KLQotY2xhc3MgTWVzc2FnZVJlY2Vp
dmVyKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2Fn
ZXMgZnJvbSB0aGUgY2xpZW50LgotCi0gICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlz
IHRvIHJlY2VpdmUgbWVzc2FnZXM6IGJsb2NraW5nLAotICAgIG5vbi1ibG9ja2luZywgYW5kIHZp
YSBjYWxsYmFjay4gQ2FsbGJhY2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCi0KLSAgICBO
b3RlOiBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNl
cnZlciBmb3Igd3NzCi0gICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJh
aXNlcyBhIGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKLSAgICBpcyBhY2Nlc3NlZCBmcm9tIG11
bHRpcGxlIHRocmVhZHMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVz
dCwgb25tZXNzYWdlPU5vbmUpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4K
LSAgICAgICAgICAgIG9ubWVzc2FnZTogYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhIG1l
c3NhZ2UgaXMgcmVjZWl2ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSBOb25lLiBJ
ZiBub3QgTm9uZSwgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbgotICAgICAgICAgICAgICAgICAg
ICAgICBhbm90aGVyIHRocmVhZC4gSW4gdGhhdCBjYXNlLCBNZXNzYWdlUmVjZWl2ZXIucmVjZWl2
ZQotICAgICAgICAgICAgICAgICAgICAgICBhbmQgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmVfbm93
YWl0IGFyZSB1c2VsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhleSB3aWxs
IG5ldmVyIHJldHVybiBhbnkgbWVzc2FnZXMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRocmVh
ZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVl
c3QKLSAgICAgICAgc2VsZi5fcXVldWUgPSBxdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuX29u
bWVzc2FnZSA9IG9ubWVzc2FnZQotICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IEZhbHNl
Ci0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAgICAgIHNlbGYuc3RhcnQoKQotCi0g
ICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNl
bGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlX21l
c3NhZ2Uoc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vbm1lc3NhZ2U6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29ubWVzc2FnZShtZXNzYWdlKQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChtZXNzYWdl
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2xvc2VfY29ubmVjdGlvbihzZWxmLl9y
ZXF1ZXN0KQotCi0gICAgZGVmIHJlY2VpdmUoc2VsZik6Ci0gICAgICAgICIiIiBSZWNlaXZlIGEg
bWVzc2FnZSBmcm9tIHRoZSBjaGFubmVsLCBibG9ja2luZy4KLQotICAgICAgICBSZXR1cm5zOgot
ICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nLgotICAgICAgICAiIiIKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3F1ZXVlLmdldCgpCi0KLSAgICBkZWYgcmVjZWl2ZV9ub3dhaXQo
c2VsZik6Ci0gICAgICAgICIiIiBSZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBjaGFubmVsLCBu
b24tYmxvY2tpbmcuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG1lc3NhZ2UgYXMg
YSB1bmljb2RlIHN0cmluZyBpZiBhdmFpbGFibGUuIE5vbmUgb3RoZXJ3aXNlLgotICAgICAgICAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3F1ZXVlLmdldF9u
b3dhaXQoKQotICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6Ci0gICAgICAgICAgICBtZXNzYWdl
ID0gTm9uZQotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIHN0b3Aoc2VsZik6Ci0g
ICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgotCi0gICAgICAgIFRoZSBp
bnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2Uu
Ci0gICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBp
cyBubyBjbGVhbiB3YXkKLSAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1
bm5pbmcgdGhyZWFkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQg
PSBUcnVlCi0KLQotY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAi
IiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCi0KLSAgICBUaGlzIGNs
YXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNl
bmQKLSAgICBtZXNzYWdlcy4KLQotICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1
c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKLSAgICBiZWNhdXNlIHB5T3Bl
blNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tl
dAotICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGlu
c3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9u
IHJlcXVlc3QuCi0gICAgICAgICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX3F1
ZXVlID0gcXVldWUuUXVldWUoKQotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotICAgICAg
ICBzZWxmLnN0YXJ0KCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6
Ci0gICAgICAgICAgICBtZXNzYWdlLCBjb25kaXRpb24gPSBzZWxmLl9xdWV1ZS5nZXQoKQotICAg
ICAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgc2VuZF9tZXNzYWdlKHNl
bGYuX3JlcXVlc3QsIG1lc3NhZ2UpCi0gICAgICAgICAgICBjb25kaXRpb24ubm90aWZ5KCkKLSAg
ICAgICAgICAgIGNvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBzZW5kKHNlbGYsIG1lc3Nh
Z2UpOgotICAgICAgICAiIiJTZW5kIGEgbWVzc2FnZSwgYmxvY2tpbmcuIiIiCi0KLSAgICAgICAg
Y29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIGNvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgc2VsZi5fcXVldWUucHV0KChtZXNzYWdlLCBjb25kaXRpb24pKQotICAg
ICAgICBjb25kaXRpb24ud2FpdCgpCi0KLSAgICBkZWYgc2VuZF9ub3dhaXQoc2VsZiwgbWVzc2Fn
ZSk6Ci0gICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBub24tYmxvY2tpbmcuIiIiCi0KLSAgICAg
ICAgc2VsZi5fcXVldWUucHV0KChtZXNzYWdlLCB0aHJlYWRpbmcuQ29uZGl0aW9uKCkpKQotCi0K
LSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXV4
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OTRmOGExNDY0NWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC9tdXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODg1ICswLDAgQEAKLSMgQ29weXJpZ2h0
IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCBoZWxwZXIgZnVuY3Rp
b25zIGZvciBtdWx0aXBsZXhpbmcgZXh0ZW5zaW9uLgotCi1TcGVjaWZpY2F0aW9uOgotaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXdlYnNvY2tldC1tdWx0aXBsZXhp
bmctMDYKLSIiIgotCi0KLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGNvcHkKLWltcG9ydCBl
bWFpbAotaW1wb3J0IGVtYWlsLnBhcnNlcgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCi1p
bXBvcnQgc3RydWN0Ci1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZh
bGlkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgRnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgU3RyZWFt
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlvbnMK
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2JpbmFyeV9m
cmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfY2xv
c2luZ19oYW5kc2hha2VfYm9keQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGlt
cG9ydCBjcmVhdGVfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1w
b3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5
YmkgaW1wb3J0IHBhcnNlX2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1w
b3J0IGh5YmkKLQotCi1fQ09OVFJPTF9DSEFOTkVMX0lEID0gMAotX0RFRkFVTFRfQ0hBTk5FTF9J
RCA9IDEKLQotX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA9IDAKLV9NVVhfT1BDT0RF
X0FERF9DSEFOTkVMX1JFU1BPTlNFID0gMQotX01VWF9PUENPREVfRkxPV19DT05UUk9MID0gMgot
X01VWF9PUENPREVfRFJPUF9DSEFOTkVMID0gMwotX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xP
VCA9IDQKLQotX01BWF9DSEFOTkVMX0lEID0gMiAqKiAyOSAtIDEKLQotX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMgPSA2NAotX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCA9IDggKiAx
MDI0Ci0KLV9IQU5EU0hBS0VfRU5DT0RJTkdfSURFTlRJVFkgPSAwCi1fSEFORFNIQUtFX0VOQ09E
SU5HX0RFTFRBID0gMQotCi0jIFdlIG5lZWQgb25seSB0aGVzZSBzdGF0dXMgY29kZSBmb3Igbm93
LgotX0hUVFBfQkFEX1JFU1BPTlNFX01FU1NBR0VTID0gewotICAgIGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVDogJ0JhZCBSZXF1ZXN0JywKLX0KLQotIyBEcm9wQ2hhbm5lbCByZWFzb24g
Y29kZQotIyBUT0RPKGJhc2hpKTogRGVmaW5lIGFsbCByZWFzb24gY29kZSBkZWZpbmVkIGluIC0w
NSBkcmFmdC4KLV9EUk9QX0NPREVfTk9STUFMX0NMT1NVUkUgPSAxMDAwCi0KLV9EUk9QX0NPREVf
SU5WQUxJRF9FTkNBUFNVTEFUSU5HX01FU1NBR0UgPSAyMDAxCi1fRFJPUF9DT0RFX0NIQU5ORUxf
SURfVFJVTkNBVEVEID0gMjAwMgotX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJV
TkNBVEVEID0gMjAwMwotX0RST1BfQ09ERV9VTktOT1dOX01VWF9PUENPREUgPSAyMDA0Ci1fRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0sgPSAyMDA1Ci1fRFJPUF9DT0RFX0NIQU5O
RUxfQUxSRUFEWV9FWElTVFMgPSAyMDA2Ci1fRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklP
TEFUSU9OID0gMjAwNwotX0RST1BfQ09ERV9VTktOT1dOX1JFUVVFU1RfRU5DT0RJTkcgPSAyMDEw
Ci0KLV9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9MQVRJT04gPSAzMDA1Ci1fRFJPUF9DT0RFX1NF
TkRfUVVPVEFfT1ZFUkZMT1cgPSAzMDA2Ci1fRFJPUF9DT0RFX0FDS05PV0xFREdFRCA9IDMwMDgK
LV9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04gPSAzMDA5Ci0KLQotY2xhc3MgTXV4VW5leHBl
Y3RlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotCi0gICAgIiIiRXhjZXB0aW9uIGluIGhhbmRsaW5n
IG11bHRpcGxleGluZyBleHRlbnNpb24uIiIiCi0KLSAgICBwYXNzCi0KLQotIyBUZW1wb3JhcnkK
LWNsYXNzIE11eE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0KLSAgICAiIiJS
YWlzZWQgd2hlbiBhIGZsb3cgZW50ZXJzIHVuaW1wbGVtZW50ZWQgY29kZSBwYXRoLiIiIgotCi0g
ICAgcGFzcwotCi0KLWNsYXNzIExvZ2ljYWxDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uKEV4Y2Vw
dGlvbik6Ci0KLSAgICAiIiJSYWlzZWQgd2hlbiBsb2dpY2FsIGNvbm5lY3Rpb24gaXMgZ3JhY2Vm
dWxseSBjbG9zZWQuIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgUGh5c2ljYWxDb25uZWN0aW9u
RXJyb3IoRXhjZXB0aW9uKToKLQotICAgICIiIlJhaXNlZCB3aGVuIHRoZXJlIGlzIGEgcGh5c2lj
YWwgY29ubmVjdGlvbiBlcnJvci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkcm9wX2Nv
ZGUsIG1lc3NhZ2U9JycpOgotICAgICAgICBzdXBlcihQaHlzaWNhbENvbm5lY3Rpb25FcnJvciwg
c2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY29kZT0lZCwgbWVzc2FnZT0lcicgJSAoZHJv
cF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBkcm9wX2NvZGUKLSAg
ICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0KLWNsYXNzIExvZ2ljYWxDaGFubmVsRXJy
b3IoRXhjZXB0aW9uKToKLQotICAgICIiIlJhaXNlZCB3aGVuIHRoZXJlIGlzIGEgbG9naWNhbCBj
aGFubmVsIGVycm9yLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWxfaWQsIGRy
b3BfY29kZSwgbWVzc2FnZT0nJyk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGhlIGVycm9yIHdp
dGggYSBzdGF0dXMgbWVzc2FnZS4iIiIKLSAgICAgICAgc3VwZXIoTG9naWNhbENoYW5uZWxFcnJv
ciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY2hhbm5lbF9pZD0lZCwgY29kZT0lZCwg
bWVzc2FnZT0lcicgJSAoCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgZHJvcF9jb2RlLCBt
ZXNzYWdlKSkKLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBz
ZWxmLmRyb3BfY29kZSA9IGRyb3BfY29kZQotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdl
Ci0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVs
X2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5v
dCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiog
NzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAy
ICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5l
bF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIo
MHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0
LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAq
KiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFu
bmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFy
Z2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBy
ZXR1cm4gY3JlYXRlX2xlbmd0aF9oZWFkZXIobnVtYmVyLCBGYWxzZSkKLQotCi1kZWYgX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkLCBlbmNvZGVkX2hhbmRzaGFrZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPUZhbHNl
KToKLSAgICBpZiBlbmNvZGluZyAhPSAwIGFuZCBlbmNvZGluZyAhPSAxOgotICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVuY29kaW5nICVkJyAlIGVuY29kaW5nKQotCi0gICAgZmly
c3RfYnl0ZSA9ICgoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0UgPDwgNSkgfAotICAg
ICAgICAgICAgICAgICAgKHJlamVjdGVkIDw8IDQpIHwgZW5jb2RpbmcpCi0gICAgYmxvY2sgPSAo
Y2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5l
bF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKGxlbihlbmNvZGVkX2hhbmRzaGFr
ZSkpICsKLSAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSkKLSAgICByZXR1cm4gYmxvY2sK
LQotCi1kZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNz
YWdlPScnKToKLSAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBjb2RlIGlzIE5vbmU6Ci0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgbWVzc2FnZSBp
cyBzcGVjaWZpZWQnKQotCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCA8PCA1Ci0gICAgYmxvY2sgPSBjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5uZWxfaWQo
Y2hhbm5lbF9pZCkKLSAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAgICAgIGJsb2NrICs9IF9lbmNv
ZGVfbnVtYmVyKDApICAjIFJlYXNvbiBzaXplCi0gICAgZWxzZToKLSAgICAgICAgcmVhc29uID0g
c3RydWN0LnBhY2soJyFIJywgY29kZSkgKyBtZXNzYWdlCi0gICAgICAgIHJlYXNvbl9zaXplID0g
X2VuY29kZV9udW1iZXIobGVuKHJlYXNvbikpCi0gICAgICAgIGJsb2NrICs9IHJlYXNvbl9zaXpl
ICsgcmVhc29uCi0KLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9mbG93X2NvbnRy
b2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpOgotICAgIGZpcnN0X2J5dGUgPSBfTVVY
X09QQ09ERV9GTE9XX0NPTlRST0wgPDwgNQotICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSAr
Ci0gICAgICAgICAgICAgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsKLSAgICAgICAg
ICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5pc2hlZF9xdW90YSkpCi0gICAgcmV0dXJuIGJsb2Nr
Ci0KLQotZGVmIF9jcmVhdGVfbmV3X2NoYW5uZWxfc2xvdChzbG90cywgc2VuZF9xdW90YSk6Ci0g
ICAgaWYgc2xvdHMgPCAwIG9yIHNlbmRfcXVvdGEgPCAwOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdzbG90cyBhbmQgc2VuZF9xdW90YSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4nKQotICAgIGZp
cnN0X2J5dGUgPSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UIDw8IDUKLSAgICBibG9jayA9
IChjaHIoZmlyc3RfYnl0ZSkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHNsb3RzKSAr
Ci0gICAgICAgICAgICAgX2VuY29kZV9udW1iZXIoc2VuZF9xdW90YSkpCi0gICAgcmV0dXJuIGJs
b2NrCi0KLQotZGVmIF9jcmVhdGVfZmFsbGJhY2tfbmV3X2NoYW5uZWxfc2xvdCgpOgotICAgIGZp
cnN0X2J5dGUgPSAoX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVCA8PCA1KSB8IDEgICMgU2V0
IHRoZSBGIGZsYWcKLSAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX251bWJl
cigwKSArIF9lbmNvZGVfbnVtYmVyKDApKQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBfcGFy
c2VfcmVxdWVzdF90ZXh0KHJlcXVlc3RfdGV4dCk6Ci0gICAgcmVxdWVzdF9saW5lLCBoZWFkZXJf
bGluZXMgPSByZXF1ZXN0X3RleHQuc3BsaXQoJ1xyXG4nLCAxKQotCi0gICAgd29yZHMgPSByZXF1
ZXN0X2xpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbih3b3JkcykgIT0gMzoKLSAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQmFkIFJlcXVlc3QtTGluZSBzeW50YXggJXInICUgcmVxdWVzdF9saW5l
KQotICAgIFtjb21tYW5kLCBwYXRoLCB2ZXJzaW9uXSA9IHdvcmRzCi0gICAgaWYgdmVyc2lvbiAh
PSAnSFRUUC8xLjEnOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgcmVxdWVzdCB2ZXJz
aW9uICVyJyAlIHZlcnNpb24pCi0KLSAgICAjIGVtYWlsLnBhcnNlci5QYXJzZXIoKSBwYXJzZXMg
UkZDIDI4MjIgKFJGQyA4MjIpIHN0eWxlIGhlYWRlcnMuCi0gICAgIyBSRkMgNjQ1NSByZWZlcnMg
UkZDIDI2MTYgZm9yIGhhbmRzaGFrZSBwYXJzaW5nLCBhbmQgUkZDIDI2MTYgcmVmZXJzCi0gICAg
IyBSRkMgODIyLgotICAgIGhlYWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKCkucGFyc2VzdHIo
aGVhZGVyX2xpbmVzKQotICAgIHJldHVybiBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uLCBoZWFkZXJz
Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jayhvYmplY3QpOgotCi0gICAgIiIiQSBzdHJ1Y3R1cmUg
dGhhdCBob2xkcyBwYXJzaW5nIHJlc3VsdCBvZiBtdWx0aXBsZXhpbmcgY29udHJvbCBibG9jay4K
LQotICAgIENvbnRyb2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxsIGJlIGFkZGVkIGJ5
IF9NdXhGcmFtZVBheWxvYWRQYXJzZXIuCi0gICAgKGUuZy4gZW5jb2RlZF9oYW5kc2hha2Ugd2ls
bCBiZSBhZGRlZCBmb3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCi0gICAgQWRkQ2hhbm5lbFJlc3Bv
bnNlKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29kZSk6Ci0gICAgICAg
IHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0KLQotY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihv
YmplY3QpOgotCi0gICAgIiIiQSBjbGFzcyB0aGF0IHBhcnNlcyBtdWx0aXBsZXhlZCBmcmFtZSBw
YXlsb2FkLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBz
ZWxmLl9kYXRhID0gcGF5bG9hZAotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gMAotICAg
ICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgIGRl
ZiByZWFkX2NoYW5uZWxfaWQoc2VsZik6Ci0gICAgICAgICIiIlJlYWQgY2hhbm5lbCBpZC4KLQot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBWYWx1ZUVycm9yOiB3aGVuIHRoZSBwYXlsb2Fk
IGRvZXNuJ3QgY29udGFpbgotICAgICAgICAgICAgICAgIHZhbGlkIGNoYW5uZWwgaWQuCi0gICAg
ICAgICIiIgotICAgICAgICByZW1haW5pbmdfbGVuZ3RoID0gbGVuKHNlbGYuX2RhdGEpIC0gc2Vs
Zi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBwb3MgPSBzZWxmLl9yZWFkX3Bvc2l0aW9uCi0gICAg
ICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotCi0gICAgICAgIGNoYW5uZWxfaWQgPSBv
cmQoc2VsZi5fZGF0YVtwb3NdKQotICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDEKLSAgICAg
ICAgaWYgY2hhbm5lbF9pZCAmIDB4ZTAgPT0gMHhlMDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmlu
Z19sZW5ndGggPCA0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQg
Y2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVjdC51bnBh
Y2soJyFMJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rh
dGFbcG9zOnBvcys0XSlbMF0gJiAweDFmZmZmZmZmCi0gICAgICAgICAgICBjaGFubmVsX2lkX2xl
bmd0aCA9IDQKLSAgICAgICAgZWxpZiBjaGFubmVsX2lkICYgMHhjMCA9PSAweGMwOgotICAgICAg
ICAgICAgaWYgcmVtYWluaW5nX2xlbmd0aCA8IDM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgICAgICBjaGFubmVs
X2lkID0gKCgoY2hhbm5lbF9pZCAmIDB4MWYpIDw8IDE2KSArCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdC51bnBhY2soJyFIJywgc2VsZi5fZGF0YVtwb3MrMTpwb3MrM10pWzBdKQot
ICAgICAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAzCi0gICAgICAgIGVsaWYgY2hhbm5lbF9p
ZCAmIDB4ODAgPT0gMHg4MDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPCAyOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3Jt
YXQnKQotICAgICAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVjdC51bnBhY2soJyFIJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFbcG9zOnBvcysyXSlb
MF0gJiAweDNmZmYKLSAgICAgICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gMgotICAgICAgICBz
ZWxmLl9yZWFkX3Bvc2l0aW9uICs9IGNoYW5uZWxfaWRfbGVuZ3RoCi0KLSAgICAgICAgcmV0dXJu
IGNoYW5uZWxfaWQKLQotICAgIGRlZiByZWFkX2lubmVyX2ZyYW1lKHNlbGYpOgotICAgICAgICAi
IiJSZWFkIGFuIGlubmVyIGZyYW1lLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yOiB3aGVuIHRoZSBpbm5lciBmcmFtZSBpcyBpbnZhbGlkLgot
ICAgICAgICAiIiIKLSAgICAgICAgaWYgbGVuKHNlbGYuX2RhdGEpID09IHNlbGYuX3JlYWRfcG9z
aXRpb246Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAg
ICAgICAgICAgICBfRFJPUF9DT0RFX0VOQ0FQU1VMQVRFRF9GUkFNRV9JU19UUlVOQ0FURUQpCi0K
LSAgICAgICAgYml0cyA9IG9yZChzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb25dKQotICAg
ICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAgICAgZmluID0gKGJpdHMgJiAweDgw
KSA9PSAweDgwCi0gICAgICAgIHJzdjEgPSAoYml0cyAmIDB4NDApID09IDB4NDAKLSAgICAgICAg
cnN2MiA9IChiaXRzICYgMHgyMCkgPT0gMHgyMAotICAgICAgICByc3YzID0gKGJpdHMgJiAweDEw
KSA9PSAweDEwCi0gICAgICAgIG9wY29kZSA9IGJpdHMgJiAweGYKLSAgICAgICAgcGF5bG9hZCA9
IHNlbGYucmVtYWluaW5nX2RhdGEoKQotICAgICAgICAjIENvbnN1bWUgcmVzdCBvZiB0aGUgbWVz
c2FnZSB3aGljaCBpcyBwYXlsb2FkIGRhdGEgb2YgdGhlIG9yaWdpbmFsCi0gICAgICAgICMgZnJh
bWUuCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gPSBsZW4oc2VsZi5fZGF0YSkKLSAgICAg
ICAgcmV0dXJuIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBwYXlsb2FkCi0KLSAgICBk
ZWYgX3JlYWRfbnVtYmVyKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9yZWFkX3Bvc2l0aW9uICsg
MSA+IGxlbihzZWxmLl9kYXRhKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAg
ICAgICAgICAgICAgJ0Nhbm5vdCByZWFkIHRoZSBmaXJzdCBieXRlIG9mIG51bWJlciBmaWVsZCcp
Ci0KLSAgICAgICAgbnVtYmVyID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3NpdGlvbl0p
Ci0gICAgICAgIGlmIG51bWJlciAmIDB4ODAgPT0gMHg4MDoKLSAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ1RoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiB0
aGUgZmlyc3QgYnl0ZSBvZiBudW1iZXIgc2hvdWxkICcKLSAgICAgICAgICAgICAgICAnYmUgdW5z
ZXQnKQotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAgICAgcG9zID0gc2Vs
Zi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBpZiBudW1iZXIgPT0gMTI3OgotICAgICAgICAgICAg
aWYgcG9zICsgOCA+IGxlbihzZWxmLl9kYXRhKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdJbnZhbGlkIG51bWJlciBmaWVsZCcpCi0gICAgICAgICAgICBzZWxmLl9yZWFkX3Bv
c2l0aW9uICs9IDgKLSAgICAgICAgICAgIG51bWJlciA9IHN0cnVjdC51bnBhY2soJyFRJywgc2Vs
Zi5fZGF0YVtwb3M6cG9zKzhdKVswXQotICAgICAgICAgICAgaWYgbnVtYmVyID4gMHg3RkZGRkZG
RkZGRkZGRkZGOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0VuY29kZWQgbnVt
YmVyKCVkKSA+PSAyXjYzJyAlIG51bWJlcikKLSAgICAgICAgICAgIGlmIG51bWJlciA8PSAweEZG
RkY6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAg
ICAgJyVkIHNob3VsZCBub3QgYmUgZW5jb2RlZCBieSA5IGJ5dGVzIGVuY29kaW5nJyAlIG51bWJl
cikKLSAgICAgICAgICAgIHJldHVybiBudW1iZXIKLSAgICAgICAgaWYgbnVtYmVyID09IDEyNjoK
LSAgICAgICAgICAgIGlmIHBvcyArIDIgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQotICAgICAgICAgICAg
c2VsZi5fcmVhZF9wb3NpdGlvbiArPSAyCi0gICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3QudW5w
YWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zOnBvcysyXSlbMF0KLSAgICAgICAgICAgIGlmIG51bWJl
ciA8PSAxMjU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgJyVkIHNob3VsZCBub3QgYmUgZW5jb2RlZCBieSAzIGJ5dGVzIGVuY29kaW5nJyAl
IG51bWJlcikKLSAgICAgICAgcmV0dXJuIG51bWJlcgotCi0gICAgZGVmIF9yZWFkX3NpemVfYW5k
X2NvbnRlbnRzKHNlbGYpOgotICAgICAgICAiIiJSZWFkIGRhdGEgdGhhdCBjb25zaXN0cyBvZiB0
aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgY29udGVudHMgZW5j
b2RlZCB0aGUgc2FtZSB3YXkgYXMgcGF5bG9hZCBsZW5ndGgKLSAgICAgICAgICAgICAgb2YgdGhl
IFdlYlNvY2tldCBQcm90b2NvbCB3aXRoIDEgYml0IHBhZGRpbmcgYXQgdGhlIGhlYWQuCi0gICAg
ICAgICAgICAtIHRoZSBjb250ZW50cy4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNpemUgPSBzZWxmLl9yZWFkX251bWJlcigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHIoZSkpCi0gICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9z
aXRpb24KLSAgICAgICAgaWYgcG9zICsgc2l6ZSA+IGxlbihzZWxmLl9kYXRhKToKLSAgICAgICAg
ICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9Q
X0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnQ2Fubm90
IHJlYWQgJWQgYnl0ZXMgZGF0YScgJSBzaXplKQotCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zaXRp
b24gKz0gc2l6ZQotICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVtwb3M6cG9zK3NpemVdCi0KLSAg
ICBkZWYgX3JlYWRfYWRkX2NoYW5uZWxfcmVxdWVzdChzZWxmLCBmaXJzdF9ieXRlLCBjb250cm9s
X2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSAoZmlyc3RfYnl0ZSA+PiAyKSAmIDB4NwotICAg
ICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9M
X0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBiaXRzIG11c3QgYmUgdW5zZXQnKQot
Ci0gICAgICAgICMgSW52YWxpZCBlbmNvZGluZyB3aWxsIGJlIGhhbmRsZWQgYnkgTXV4SGFuZGxl
ci4KLSAgICAgICAgZW5jb2RpbmcgPSBmaXJzdF9ieXRlICYgMHgzCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGNvbnRyb2xfYmxvY2suY2hhbm5lbF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lk
KCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9D
SykKLSAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGVuY29kaW5nCi0gICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCi0gICAgICAg
IGNvbnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBlbmNvZGVkX2hhbmRzaGFrZQotICAg
ICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2FkZF9jaGFubmVsX3Jl
c3BvbnNlKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZl
ZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHgzCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0g
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAg
ICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAg
J1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgY29udHJvbF9ibG9jay5h
Y2NlcHRlZCA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBjb250cm9sX2Jsb2NrLmVu
Y29kaW5nID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250
cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4
Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIGNv
bnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBzZWxmLl9yZWFkX3NpemVfYW5kX2NvbnRl
bnRzKCkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xfYmxvY2sKLQotICAgIGRlZiBfcmVhZF9mbG93
X2NvbnRyb2woc2VsZiwgZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2Vy
dmVkID0gZmlyc3RfYnl0ZSAmIDB4MWYKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAg
ICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9E
Uk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVz
ZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBj
b250cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAg
ICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFkX251bWJlcigpCi0gICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENv
bm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZSkpCi0KLSAgICAgICAg
cmV0dXJuIGNvbnRyb2xfYmxvY2sKLQotICAgIGRlZiBfcmVhZF9kcm9wX2NoYW5uZWwoc2VsZiwg
Zmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0
ZSAmIDB4MWYKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJ
RF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0
IGJlIHVuc2V0JykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLmNo
YW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIHJlYXNvbiA9IHNlbGYu
X3JlYWRfc2l6ZV9hbmRfY29udGVudHMoKQotICAgICAgICBpZiBsZW4ocmVhc29uKSA9PSAwOgot
ICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAgICAgICBj
b250cm9sX2Jsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgIGVsaWYgbGVuKHJlYXNvbikg
Pj0gMjoKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9jb2RlID0gc3RydWN0LnVucGFj
aygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX21l
c3NhZ2UgPSByZWFzb25bMjpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBQaHlz
aWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURf
TVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIERyb3BDaGFubmVs
IHRoYXQgY29uYWlucyBvbmx5IDEtYnl0ZSByZWFzb24nKQotICAgICAgICByZXR1cm4gY29udHJv
bF9ibG9jawotCi0gICAgZGVmIF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZiwgZmlyc3RfYnl0
ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAmIDB4MWUK
LSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29u
bmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09O
VFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0
JykKLSAgICAgICAgY29udHJvbF9ibG9jay5mYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9yZWFkX251
bWJlcigpCi0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFk
X251bWJlcigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBy
YWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRS
T0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
ZSkpCi0gICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYgcmVhZF9jb250cm9s
X2Jsb2NrcyhzZWxmKToKLSAgICAgICAgIiIiUmVhZCBjb250cm9sIGJsb2NrKHMpLgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3I6IHdoZW4gdGhl
IHBheWxvYWQgY29udGFpbnMgaW52YWxpZCBjb250cm9sCi0gICAgICAgICAgICAgICBibG9jayhz
KS4KLSAgICAgICAgICAgU3RvcEl0ZXJhdGlvbjogd2hlbiBubyBjb250cm9sIGJsb2NrcyBsZWZ0
LgotICAgICAgICAiIiIKLSAgICAgICAgd2hpbGUgc2VsZi5fcmVhZF9wb3NpdGlvbiA8IGxlbihz
ZWxmLl9kYXRhKToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUgPSBvcmQoc2VsZi5fZGF0YVtzZWxm
Ll9yZWFkX3Bvc2l0aW9uXSkKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMQot
ICAgICAgICAgICAgb3Bjb2RlID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAweDcKLSAgICAgICAgICAg
IGNvbnRyb2xfYmxvY2sgPSBfQ29udHJvbEJsb2NrKG9wY29kZT1vcGNvZGUpCi0gICAgICAgICAg
ICBpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVDoKLSAgICAgICAg
ICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2FkZF9jaGFubmVsX3JlcXVlc3QoZmlyc3RfYnl0ZSwg
Y29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FE
RF9DSEFOTkVMX1JFU1BPTlNFOgotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfYWRk
X2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NP
TlRST0w6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9mbG93X2NvbnRyb2woZmly
c3RfYnl0ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTDoKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2Ry
b3BfY2hhbm5lbChmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxpZiBv
cGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAgICAgICAgICAgICB5
aWVsZCBzZWxmLl9yZWFkX25ld19jaGFubmVsX3Nsb3QoZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9j
aykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25u
ZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfVU5LTk9XTl9NVVhf
T1BDT0RFLAotICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCBvcGNvZGUgJWQnICUgb3Bjb2Rl
KQotCi0gICAgICAgIGFzc2VydCBzZWxmLl9yZWFkX3Bvc2l0aW9uID09IGxlbihzZWxmLl9kYXRh
KQotICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0KLSAgICBkZWYgcmVtYWluaW5nX2RhdGEo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiByZW1haW5pbmcgZGF0YS4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3NpdGlvbjpdCi0KLQotY2xhc3MgX0xvZ2ljYWxS
ZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWxfaWQsIGNvbW1hbmQsIHBhdGgsIHByb3Rv
Y29sLCBoZWFkZXJzLAotICAgICAgICAgICAgICAgICBjb25uZWN0aW9uKToKLSAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFu
bmVsX2lkOiB0aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAg
ICAgY29tbWFuZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCi0gICAgICAgICAgICBwYXRoOiBIVFRQ
IHJlcXVlc3QgcGF0aC4KLSAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVycy4KLSAgICAg
ICAgICAgIGNvbm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4KLSAgICAgICAg
IiIiCi0gICAgICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgc2VsZi5t
ZXRob2QgPSBjb21tYW5kCi0gICAgICAgIHNlbGYudXJpID0gcGF0aAotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLSAgICAgICAgc2VsZi5oZWFkZXJzX2luID0gaGVhZGVycwotICAg
ICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0gICAgICAgIHNlbGYuc2VydmVyX3Rl
cm1pbmF0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmNsaWVudF90ZXJtaW5hdGVkID0gRmFsc2UK
LQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19o
dHRwcygpLgotCi0gICAgICAgIFJldHVybnMgRmFsc2UgYmVjYXVzZSB0aGlzIG1ldGhvZCBpcyB1
c2VkIG9ubHkgYnkgb2xkIHByb3RvY29scwotICAgICAgICAoaGl4aWUgYW5kIGh5YmkwMCkuCi0g
ICAgICAgICIiIgotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBfTG9naWNhbENvbm5l
Y3Rpb24ob2JqZWN0KToKLQotICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIG1wX2Nvbm4uIiIiCi0K
LSAgICAjIEZvciBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnQgb2Ygc2V0X3JlYWRfc3RhdGUoKS4K
LSAgICBTVEFURV9BQ1RJVkUgPSAxCi0gICAgU1RBVEVfR1JBQ0VGVUxMWV9DTE9TRUQgPSAyCi0g
ICAgU1RBVEVfVEVSTUlOQVRFRCA9IDMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtdXhfaGFu
ZGxlciwgY2hhbm5lbF9pZCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgbXV4X2hhbmRsZXI6IF9NdXhIYW5kbGVyIGluc3Rh
bmNlLgotICAgICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbCBpZCBvZiB0aGlzIGNvbm5lY3Rp
b24uCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9oYW5kbGVy
Ci0gICAgICAgIHNlbGYuX2NoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAgIHNlbGYuX2lu
Y29taW5nX2RhdGEgPSAnJwotCi0gICAgICAgICMgLSBQcm90ZWN0cyBfd2FpdGluZ193cml0ZV9j
b21wbGV0aW9uCi0gICAgICAgICMgLSBTaWduYWxzIHRoZSB0aHJlYWQgd2FpdGluZyBmb3IgY29t
cGxldGlvbiBvZiB3cml0ZSBieSBtdXggaGFuZGxlcgotICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAgICAgc2VsZi5fd2FpdGluZ193cml0
ZV9jb21wbGV0aW9uID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbiA9IHRo
cmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBzZWxmLl9yZWFkX3N0YXRlID0gc2VsZi5TVEFU
RV9BQ1RJVkUKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAgICAgICAgIiIiR2V0
dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYu
X211eF9oYW5kbGVyLnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X2xvY2FsX2FkZHIoKQotICAgIGxv
Y2FsX2FkZHIgPSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRfcmVtb3Rl
X2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9h
ZGRyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfY29ubmVj
dGlvbi5nZXRfcmVtb3RlX2FkZHIoKQotICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3Jl
bW90ZV9hZGRyKQotCi0gICAgZGVmIGdldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAgICAg
ICIiIkdldCBtZW1vcml6ZWQgbGluZXMuIE5vdCBzdXBwb3J0ZWQuIiIiCi0gICAgICAgIHJhaXNl
IE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oJ19Mb2dpY2FsQ29ubmVjdGlvbiBkb2VzIG5vdCBzdXBw
b3J0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X21lbW9yaXpl
ZF9saW5lcycpCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIldyaXRl
IGRhdGEuIG11eF9oYW5kbGVyIHNlbmRzIGRhdGEgYXN5bmNocm9ub3VzbHkuCi0KLSAgICAgICAg
VGhlIGNhbGxlciB3aWxsIGJlIHN1c3BlbmRlZCB1bnRpbCB3cml0ZSBkb25lLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgICBkYXRhOiBkYXRhIHRvIGJlIHdyaXR0ZW4uCi0KLSAgICAgICAg
UmFpc2VzOgotICAgICAgICAgICAgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbjogd2hlbiBjYWxsZWQg
YmVmb3JlIGZpbmlzaGluZyB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICB3cml0ZS4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlv
bjoKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGFscmVhZHkgd2FpdGluZyB0
aGUgY29tcGxldGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICdvZiB3cml0ZScgJSBzZWxmLl9j
aGFubmVsX2lkKQotCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24g
PSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2RhdGEoc2VsZi5fY2hh
bm5lbF9pZCwgZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi53YWl0KCkK
LSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB3b2tl
IHVwIGJ5IG9uX3dyaXRlcl9kb25lLgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHdyaXRlX2NvbnRyb2xfZGF0
YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGUgZGF0YSB2aWEgdGhlIGNvbnRyb2wgY2hh
bm5lbC4KLQotICAgICAgICBEb24ndCB3YWl0IGZpbmlzaGluZyB3cml0ZSBiZWNhdXNlIHRoaXMg
bWV0aG9kIGNhbiBiZSBjYWxsZWQgYnkKLSAgICAgICAgbXV4IGRpc3BhdGNoZXIuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGRhdGE6IGRhdGEgdG8gYmUgd3JpdHRlbi4KLSAgICAgICAg
IiIiCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLnNlbmRfY29udHJvbF9kYXRhKGRhdGEpCi0K
LSAgICBkZWYgb25fd3JpdGVfZGF0YV9kb25lKHNlbGYpOgotICAgICAgICAiIiJDYWxsZWQgd2hl
biBzZW5kaW5nIGRhdGEgaXMgY29tcGxldGVkLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVu
ZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIGNhbGwgb2Yg
b25fd3JpdGVfZGF0YV9kb25lIGZvciBsb2dpY2FsICcKLSAgICAgICAgICAgICAgICAgICAgJ2Nv
bm5lY3Rpb24gJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHNlbGYuX3dhaXRp
bmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRl
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBvbl93cml0ZXJfZG9uZShzZWxmKToKLSAg
ICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSBtdXggaGFuZGxlciB3aGVuIHRoZSB3cml0ZXIgdGhyZWFk
IGhhcyBmaW5pc2hlZC4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fd3JpdGVf
Y29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgc2VsZi5fd2FpdGluZ193cml0ZV9jb21w
bGV0aW9uID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5ub3RpZnko
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0gICAgZGVmIGFwcGVuZF9mcmFtZV9kYXRhKHNlbGYsIGZyYW1lX2RhdGEpOgot
ICAgICAgICAiIiJBcHBlbmQgaW5jb21pbmcgZnJhbWUgZGF0YS4KLQotICAgICAgICBDYWxsZWQg
d2hlbiBtdXhfaGFuZGxlciBkaXNwYXRjaGVzIGZyYW1lIGRhdGEgdG8gdGhlIGNvcnJlc3BvbmRp
bmcKLSAgICAgICAgYXBwbGljYXRpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZy
YW1lX2RhdGE6IGluY29taW5nIGZyYW1lIGRhdGEuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
Ll9yZWFkX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfZGF0YSAr
PSBmcmFtZV9kYXRhCi0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAg
ICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHJlYWQoc2VsZiwg
bGVuZ3RoKToKLSAgICAgICAgIiIiUmVhZCBkYXRhLgotCi0gICAgICAgIEJsb2NrcyB1bnRpbCBl
bm91Z2ggZGF0YSBoYXMgYXJyaXZlZCB2aWEgcGh5c2ljYWwgY29ubmVjdGlvbi4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgICAgbGVuZ3RoOiBsZW5ndGggb2YgZGF0YSB0byBiZSByZWFkLgot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2Vw
dGlvbjogd2hlbiBjbG9zaW5nIGhhbmRzaGFrZSBmb3IgdGhpcwotICAgICAgICAgICAgICAgIGxv
Z2ljYWwgY2hhbm5lbCBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIGhhcwotICAg
ICAgICAgICAgICAgIGNsb3NlZCwgb3IgYW4gZXJyb3IgaXMgY2F1c2VkIG9uIHRoZSByZWFkZXIg
dGhyZWFkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWly
ZSgpCi0gICAgICAgIHdoaWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfQUNUSVZF
IGFuZAotICAgICAgICAgICAgICAgbGVuKHNlbGYuX2luY29taW5nX2RhdGEpIDwgbGVuZ3RoKToK
LSAgICAgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5TVEFURV9HUkFDRUZVTExZ
X0NMT1NFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hhbm5lbCAlZCBoYXMgY2xv
c2VkLicgJSBzZWxmLl9jaGFubmVsX2lkKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9yZWFkX3N0
YXRlID09IHNlbGYuU1RBVEVfVEVSTUlOQVRFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25u
ZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2Vpdmlu
ZyAlZCBieXRlIGZhaWxlZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xvc2VkJyAlCi0gICAgICAg
ICAgICAgICAgICAgIChsZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQotCi0gICAgICAgICAgICB2
YWx1ZSA9IHNlbGYuX2luY29taW5nX2RhdGFbOmxlbmd0aF0KLSAgICAgICAgICAgIHNlbGYuX2lu
Y29taW5nX2RhdGEgPSBzZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpdCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAg
ICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShzZWxmLCBuZXdfc3RhdGUp
OgotICAgICAgICAiIiJTZXQgdGhlIHN0YXRlIG9mIHRoaXMgY29ubmVjdGlvbi4KLQotICAgICAg
ICBDYWxsZWQgd2hlbiBhbiBldmVudCBmb3IgdGhpcyBjb25uZWN0aW9uIGhhcyBvY2N1cnJlZC4K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG5ld19zdGF0ZTogc3RhdGUgdG8gYmUgc2V0LiBu
ZXdfc3RhdGUgbXVzdCBiZSBvbmUgb2YgZm9sbG93aW5nczoKLSAgICAgICAgICAgIC0gU1RBVEVf
R1JBQ0VGVUxMWV9DTE9TRUQ6IHdoZW4gY2xvc2luZyBoYW5kc2hha2UgZm9yIHRoaXMKLSAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uIGhhcyBiZWVuIHJlY2VpdmVkLgotICAgICAgICAgICAgLSBT
VEFURV9URVJNSU5BVEVEOiB3aGVuIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIGhhcyBjbG9zZWQg
b3IKLSAgICAgICAgICAgICAgICBEcm9wQ2hhbm5lbCBvZiB0aGlzIGNvbm5lY3Rpb24gaGFzIHJl
Y2VpdmVkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWly
ZSgpCi0gICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3RhdGUKLSAgICAgICAgc2VsZi5f
cmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVs
ZWFzZSgpCi0KLQotY2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3QpOgotCi0gICAgIiIiSG9sZCB0
aGUgcmVzdWx0IG9mIF9Jbm5lck1lc3NhZ2VCdWlsZGVyLmJ1aWxkKCkuIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgb3Bjb2RlLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBv
cGNvZGUKLSAgICAgICAgc2VsZi5wYXlsb2FkID0gcGF5bG9hZAotCi0KLWNsYXNzIF9Jbm5lck1l
c3NhZ2VCdWlsZGVyKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0byBidWlsZCBhbiBfSW5uZXJN
ZXNzYWdlLgotCi0gICAgQSBjbGFzcyB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIGlubmVyIG1l
c3NhZ2UgZnJhZ21lbnRhdGlvbiBhbmQKLSAgICBidWlsZHMgYSBtZXNzYWdlIGZyb20gZnJhZ21l
bnRlZCBpbm5lciBmcmFtZShzKS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRp
bmdfY29udHJvbF9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9
IE5vbmUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cyA9IFtdCi0gICAg
ICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZmlyc3QKLQotICAgIGRlZiBf
aGFuZGxlX2ZpcnN0KHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNv
bW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1l
RXhjZXB0aW9uKCdTZW5kaW5nIGludmFsaWQgY29udGludWF0aW9uIG9wY29kZScpCi0KLSAgICAg
ICAgaWYgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woZnJhbWUpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY2Vzc19maXJzdF9mcmFn
bWVudGVkX21lc3NhZ2UoZnJhbWUpCi0KLSAgICBkZWYgX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRl
ZF9jb250cm9sKHNlbGYsIGZyYW1lKToKLSAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBm
cmFtZS5vcGNvZGUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cy5hcHBl
bmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoKLSAgICAgICAgICAg
IHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9jb250cm9sCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9m
cmFnbWVudGVkX2NvbnRyb2woKQotCi0gICAgZGVmIF9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRf
bWVzc2FnZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gZnJh
bWUub3Bjb2RlCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMuYXBwZW5k
KGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFtZS5maW46Ci0gICAgICAgICAgICBz
ZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZyYWdtZW50ZWRfbWVzc2FnZQotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJh
Z21lbnRlZF9tZXNzYWdlKCkKLQotICAgIGRlZiBfaGFuZGxlX2ZyYWdtZW50ZWRfY29udHJvbChz
ZWxmLCBmcmFtZSk6Ci0gICAgICAgIGlmIGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RFX0NP
TlRJTlVBVElPTjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnU2VuZGluZyBpbnZhbGlkIG9wY29kZSAlZCB3aGlsZSBzZW5kaW5nIGZy
YWdtZW50ZWQgY29udHJvbCAnCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnICUgZnJhbWUub3Bj
b2RlKQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21lbnRzLmFwcGVuZChmcmFt
ZS5wYXlsb2FkKQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9jb250cm9s
KCkKLQotICAgIGRlZiBfcmVhc3NlbWJsZV9mcmFnbWVudGVkX2NvbnRyb2woc2VsZik6Ci0gICAg
ICAgIG9wY29kZSA9IHNlbGYuX2NvbnRyb2xfb3Bjb2RlCi0gICAgICAgIHBheWxvYWQgPSAnJy5q
b2luKHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMpCi0gICAgICAgIHNlbGYuX2NvbnRy
b2xfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21lbnRz
ID0gW10KLSAgICAgICAgaWYgc2VsZi5fbWVzc2FnZV9vcGNvZGUgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZyYWdtZW50ZWRfbWVz
c2FnZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNl
bGYuX2hhbmRsZV9maXJzdAotICAgICAgICByZXR1cm4gX0lubmVyTWVzc2FnZShvcGNvZGUsIHBh
eWxvYWQpCi0KLSAgICBkZWYgX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZiwgZnJhbWUp
OgotICAgICAgICAjIFNlbmRlciBjYW4gaW50ZXJsZWF2ZSBhIGNvbnRyb2wgbWVzc2FnZSB3aGls
ZSBzZW5kaW5nIGZyYWdtZW50ZWQKLSAgICAgICAgIyBtZXNzYWdlcy4KLSAgICAgICAgaWYgY29t
bW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9jb250cm9sX29wY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhV
bmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnU2hvdWxkIG5vdCByZWFj
aCBoZXJlKEJ1ZyBpbiBidWlsZGVyKScpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY2Vz
c19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woZnJhbWUpCi0KLSAgICAgICAgaWYgZnJhbWUub3Bj
b2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2UgSW52
YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZW5kaW5nIGludmFsaWQgb3Bj
b2RlICVkIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZCBtZXNzYWdlJyAlCi0gICAgICAgICAgICAg
ICAgZnJhbWUub3Bjb2RlKQotICAgICAgICBzZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRz
LmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJhZ21l
bnRlZF9tZXNzYWdlKCkKLQotICAgIGRlZiBfcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2Uo
c2VsZik6Ci0gICAgICAgIG9wY29kZSA9IHNlbGYuX21lc3NhZ2Vfb3Bjb2RlCi0gICAgICAgIHBh
eWxvYWQgPSAnJy5qb2luKHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMpCi0gICAgICAg
IHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX21lc3Nh
Z2VfZnJhZ21lbnRzID0gW10KLSAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hh
bmRsZV9maXJzdAotICAgICAgICByZXR1cm4gX0lubmVyTWVzc2FnZShvcGNvZGUsIHBheWxvYWQp
Ci0KLSAgICBkZWYgYnVpbGQoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJCdWlsZCBhbiBpbm5l
ciBtZXNzYWdlLgotCi0gICAgICAgIFJldHVybnMgYW4gX0lubmVyTWVzc2FnZSBpbnN0YW5jZSB3
aGVuIHRoZSBnaXZlbiBmcmFtZSBpcyB0aGUgbGFzdAotICAgICAgICBmcmFnbWVudGVkIGZyYW1l
LiBSZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBm
cmFtZTogYW4gaW5uZXIgZnJhbWUuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFs
aWRGcmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZlZCBpbnZhbGlkIG9wY29kZS4gKGUuZy4KLSAg
ICAgICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNvbnRpbnVhdGlvbiBkYXRhIG9wY29kZSBidXQg
dGhlIGZpbiBmbGFnIG9mCi0gICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIGlubmVyIGZyYW1l
IHdhcyBub3Qgc2V0LikKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9mcmFtZV9o
YW5kbGVyKGZyYW1lKQotCi0KLWNsYXNzIF9Mb2dpY2FsU3RyZWFtKFN0cmVhbSk6Ci0KLSAgICAi
IiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4KLQotICAgIFRoaXMgY2xhc3MgaW50ZXJwcmV0cyBt
dWx0aXBsZXhlZCBXZWJTb2NrZXQgZnJhbWVzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QsIHN0cmVhbV9vcHRpb25zLCBzZW5kX3F1b3RhLCByZWNlaXZlX3F1b3Rh
KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0g
ICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2UuCi0gICAgICAgICAg
ICBzdHJlYW1fb3B0aW9uczogU3RyZWFtT3B0aW9ucyBpbnN0YW5jZS4KLSAgICAgICAgICAgIHNl
bmRfcXVvdGE6IEluaXRpYWwgc2VuZCBxdW90YS4KLSAgICAgICAgICAgIHJlY2VpdmVfcXVvdGE6
IEluaXRpYWwgcmVjZWl2ZSBxdW90YS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgUGh5c2ljYWwg
c3RyZWFtIGlzIHJlc3BvbnNpYmxlIGZvciBtYXNraW5nLgotICAgICAgICBzdHJlYW1fb3B0aW9u
cy51bm1hc2tfcmVjZWl2ZSA9IEZhbHNlCi0gICAgICAgIFN0cmVhbS5fX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NlZCA9IEZh
bHNlCi0gICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgICMgLSBQ
cm90ZWN0cyBfc2VuZF9jbG9zZWQgYW5kIF9zZW5kX3F1b3RhCi0gICAgICAgICMgLSBTaWduYWxz
IHRoZSB0aHJlYWQgd2FpdGluZyBmb3Igc2VuZCBxdW90YSByZXBsZW5pc2hlZAotICAgICAgICBz
ZWxmLl9zZW5kX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQotCi0gICAgICAgICMg
VGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhbWUgaW4gbWVzc2FnZXMuCi0gICAgICAgIHNlbGYu
X21lc3NhZ2Vfb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgICMgVHJ1ZSB3aGVu
IHRoZSBsYXN0IG1lc3NhZ2Ugd2FzIGZyYWdtZW50ZWQuCi0gICAgICAgIHNlbGYuX2xhc3RfbWVz
c2FnZV93YXNfZnJhZ21lbnRlZCA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90
YSA9IHJlY2VpdmVfcXVvdGEKLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBo
b3JlID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgpCi0KLSAgICAgICAgc2VsZi5faW5uZXJfbWVzc2Fn
ZV9idWlsZGVyID0gX0lubmVyTWVzc2FnZUJ1aWxkZXIoKQotCi0gICAgZGVmIF9jcmVhdGVfaW5u
ZXJfZnJhbWUoc2VsZiwgb3Bjb2RlLCBwYXlsb2FkLCBlbmQ9VHJ1ZSk6Ci0gICAgICAgIGZyYW1l
ID0gRnJhbWUoZmluPWVuZCwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1wYXlsb2FkKQotICAgICAg
ICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVy
czoKLSAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICAgICAgaWYg
bGVuKHBheWxvYWQpICE9IGxlbihmcmFtZS5wYXlsb2FkKToKLSAgICAgICAgICAgIHJhaXNlIE11
eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011eCBleHRlbnNpb24gbXVz
dCBub3QgYmUgdXNlZCBhZnRlciBleHRlbnNpb25zIHdoaWNoIGNoYW5nZSAnCi0gICAgICAgICAg
ICAgICAgJyBmcmFtZSBib3VuZGFyeScpCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9ICgoZnJhbWUu
ZmluIDw8IDcpIHwgKGZyYW1lLnJzdjEgPDwgNikgfAotICAgICAgICAgICAgICAgICAgICAgIChm
cmFtZS5yc3YyIDw8IDUpIHwgKGZyYW1lLnJzdjMgPDwgNCkgfCBmcmFtZS5vcGNvZGUpCi0gICAg
ICAgIHJldHVybiBjaHIoZmlyc3RfYnl0ZSkgKyBmcmFtZS5wYXlsb2FkCi0KLSAgICBkZWYgX3dy
aXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUpOgotICAgICAg
ICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2FkKQotICAgICAgICB3cml0ZV9wb3NpdGlvbiA9
IDAKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEFuIGlubmVyIGZyYW1lIHdpbGwgYmUg
ZnJhZ21lbnRlZCBpZiB0aGVyZSBpcyBubyBlbm91Z2ggc2VuZAotICAgICAgICAgICAgIyBxdW90
YS4gVGhpcyBzZW1hcGhvcmUgZW5zdXJlcyB0aGF0IGZyYWdtZW50ZWQgaW5uZXIgZnJhbWVzIGFy
ZQotICAgICAgICAgICAgIyBzZW50IGluIG9yZGVyIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0g
ICAgICAgICAgICAjIE5vdGUgdGhhdCBmcmFtZXMgdGhhdCBjb21lIGZyb20gb3RoZXIgbG9naWNh
bCBjaGFubmVscyBvcgotICAgICAgICAgICAgIyBtdWx0aXBsZXhpbmcgY29udHJvbCBibG9ja3Mg
Y2FuIGJlIGluc2VydGVkIGJldHdlZW4gZnJhZ21lbnRlZAotICAgICAgICAgICAgIyBpbm5lciBm
cmFtZXMgb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9p
bm5lcl9mcmFtZV9zZW1hcGhvcmUuYWNxdWlyZSgpCi0KLSAgICAgICAgICAgICMgQ29uc3VtZSBh
biBvY3RldCBxdW90YSB3aGVuIHRoaXMgaXMgdGhlIGZpcnN0IGZyYWdtZW50ZWQgZnJhbWUuCi0g
ICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9zZW5kX2Ns
b3NlZCkgYW5kIHNlbGYuX3NlbmRfcXVvdGEgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NlbmRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3NlbmRfY2xvc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMb2dpY2FsIGNvbm5l
Y3Rpb24gJWQgaXMgY2xvc2VkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC5jaGFubmVsX2lkKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVv
dGEgLT0gMQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgICAgICB3aGlsZSB3cml0ZV9w
b3NpdGlvbiA8IHBheWxvYWRfbGVuZ3RoOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VuZF9jbG9zZWQpIGFuZCBzZWxmLl9zZW5kX3F1b3Rh
ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ05vIHF1b3RhLiBXYWl0aW5nIEZsb3dDb250cm9sIG1l
c3NhZ2UgZm9yICVkLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLndhaXQoKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlbmRfY2xvc2VkOgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdMb2dpY2FsIGNvbm5lY3Rpb24gJWQgaXMgY2xvc2Vk
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0Ll9jaGFubmVsX2lk
KQotCi0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IHBheWxvYWRfbGVuZ3RoIC0gd3Jp
dGVfcG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgd3JpdGVfbGVuZ3RoID0gbWluKHNlbGYu
X3NlbmRfcXVvdGEsIHJlbWFpbmluZykKLSAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWVf
ZW5kID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGFuZAotICAgICAgICAgICAgICAg
ICAgICAgICAgKHdyaXRlX3Bvc2l0aW9uICsgd3JpdGVfbGVuZ3RoID09IHBheWxvYWRfbGVuZ3Ro
KSkKLQotICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYuX2NyZWF0ZV9pbm5l
cl9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBheWxvYWRbd3JpdGVfcG9zaXRpb246d3JpdGVfcG9zaXRpb24rd3JpdGVfbGVu
Z3RoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lX2VuZCkKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSAtPSB3cml0ZV9sZW5ndGgKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb25zdW1lZCBxdW90YT0lZCwgcmVtYWluaW5n
PSVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3JpdGVfbGVu
Z3RoLCBzZWxmLl9zZW5kX3F1b3RhKSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAg
ICAgICAgICMgV3JpdGluZyBkYXRhIHdpbGwgYmxvY2sgdGhlIHdvcmtlciBzbyB3ZSBuZWVkIHRv
IHJlbGVhc2UKLSAgICAgICAgICAgICAgICAjIF9zZW5kX2NvbmRpdGlvbiBiZWZvcmUgd3JpdGlu
Zy4KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgaW5uZXIgZnJh
bWU6ICVyJyAlIGlubmVyX2ZyYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi53cml0ZShpbm5lcl9mcmFtZSkKLSAgICAgICAgICAgICAgICB3cml0ZV9wb3NpdGlv
biArPSB3cml0ZV9sZW5ndGgKLQotICAgICAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENP
REVfQ09OVElOVUFUSU9OCi0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihlKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlLnJlbGVhc2UoKQot
Ci0gICAgZGVmIHJlcGxlbmlzaF9zZW5kX3F1b3RhKHNlbGYsIHNlbmRfcXVvdGEpOgotICAgICAg
ICAiIiJSZXBsZW5pc2ggc2VuZCBxdW90YS4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
c2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBzZWxmLl9zZW5k
X3F1b3RhICsgc2VuZF9xdW90YSA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX3F1b3RhID0gMAotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFu
bmVsRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwg
X0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9x
dW90YSArPSBzZW5kX3F1b3RhCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcGxl
bmlzaGVkIHNlbmQgcXVvdGEgZm9yIGNoYW5uZWwgaWQgJWQ6ICVkJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgc2VsZi5fc2VuZF9x
dW90YSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi5ub3RpZnkoKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgY29uc3VtZV9yZWNlaXZlX3F1b3RhKHNlbGYsIGFtb3VudCk6Ci0gICAgICAgICIi
IkNvbnN1bWUgcmVjZWl2ZSBxdW90YS4gUmV0dXJucyBGYWxzZSBvbiBmYWlsdXJlLiIiIgotICAg
ICAgICBpZiBzZWxmLl9yZWNlaXZlX3F1b3RhIDwgYW1vdW50OgotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdWaW9sYXRlIHF1b3RhIG9uIGNoYW5uZWwgaWQgJWQ6ICVkIDwgJWQnICUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhLCBh
bW91bnQpKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHNlbGYuX3JlY2VpdmVf
cXVvdGEgLT0gYW1vdW50Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgc2VuZF9tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICAiIiJP
dmVycmlkZSBTdHJlYW0uc2VuZF9tZXNzYWdlLiIiIgotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRp
bmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGlmIGJpbmFyeSBhbmQgaXNp
bnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZyYW1lIG11
c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAg
ICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgICAgICBtZXNzYWdlID0gbWVz
c2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2Vs
Zi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBtZXNzYWdl
ID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAg
IGlmIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZDoKLSAgICAgICAgICAgIGlmIG9w
Y29kZSAhPSBzZWxmLl9tZXNzYWdlX29wY29kZToKLSAgICAgICAgICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXMgZm9yIHRoZSBz
YW1lIG1lc3NhZ2UnKQotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5V
QVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0g
b3Bjb2RlCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWUob3Bjb2RlLCBtZXNzYWdl
LCBlbmQpCi0gICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZCA9IG5vdCBl
bmQKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUg
U3RyZWFtLl9yZWNlaXZlX2ZyYW1lLgotCi0gICAgICAgIEluIGFkZGl0aW9uIHRvIGNhbGwgU3Ry
ZWFtLl9yZWNlaXZlX2ZyYW1lLCB0aGlzIG1ldGhvZCBhZGRzIHRoZSBhbW91bnQKLSAgICAgICAg
b2YgcGF5bG9hZCB0byByZWNlaXZpbmcgcXVvdGEgYW5kIHNlbmRzIEZsb3dDb250cm9sIHRvIHRo
ZSBjbGllbnQuCi0gICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgaGVyZSBiZWNhdXNlIFN0cmVhbS5y
ZWNlaXZlX21lc3NhZ2UoKSBoYW5kbGVzCi0gICAgICAgIGNvbnRyb2wgZnJhbWVzIGludGVybmFs
bHkuCi0gICAgICAgICIiIgotICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2
MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShzZWxmKQotICAgICAgICBhbW91bnQgPSBs
ZW4ocGF5bG9hZCkKLSAgICAgICAgIyBSZXBsZW5pc2ggZXh0cmEgb25lIG9jdGV0IHdoZW4gcmVj
ZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgotICAgICAgICBpZiBvcGNvZGUgIT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBhbW91bnQgKz0gMQotICAg
ICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3VudAotICAgICAgICBmcmFtZV9kYXRhID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50KQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1NlbmRpbmcgZmxvdyBjb250cm9sIGZvciAlZCwgcmVwbGVuaXNoZWQ9JWQn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQs
IGFtb3VudCkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZV9jb250cm9s
X2RhdGEoZnJhbWVfZGF0YSkKLSAgICAgICAgcmV0dXJuIG9wY29kZSwgcGF5bG9hZCwgZmluLCBy
c3YxLCByc3YyLCByc3YzCi0KLSAgICBkZWYgX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUoc2VsZiwg
ZnJhbWUpOgotICAgICAgICAiIiJPdmVycmlkZSBTdHJlYW0uX2dldF9tZXNzYWdlX2Zyb21fZnJh
bWUuIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlubmVyX21lc3NhZ2UgPSBzZWxmLl9p
bm5lcl9tZXNzYWdlX2J1aWxkZXIuYnVpbGQoZnJhbWUpCi0gICAgICAgIGV4Y2VwdCBJbnZhbGlk
RnJhbWVFeGNlcHRpb246Ci0gICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAot
ICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgX0RST1BfQ09ERV9CQURf
RlJBR01FTlRBVElPTikKLQotICAgICAgICBpZiBpbm5lcl9tZXNzYWdlIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBpbm5l
cl9tZXNzYWdlLm9wY29kZQotICAgICAgICByZXR1cm4gaW5uZXJfbWVzc2FnZS5wYXlsb2FkCi0K
LSAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBTdHJl
YW0ucmVjZWl2ZV9tZXNzYWdlLiIiIgotICAgICAgICAjIEp1c3QgY2FsbCBTdHJlYW0ucmVjZWl2
ZV9tZXNzYWdlKCksIGJ1dCBjYXRjaAotICAgICAgICAjIExvZ2ljYWxDb25uZWN0aW9uQ2xvc2Vk
RXhjZXB0aW9uLCB3aGljaCBpcyByYWlzZWQgd2hlbiB0aGUgbG9naWNhbAotICAgICAgICAjIGNv
bm5lY3Rpb24gaGFzIGNsb3NlZCBncmFjZWZ1bGx5LgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICByZXR1cm4gU3RyZWFtLnJlY2VpdmVfbWVzc2FnZShzZWxmKQotICAgICAgICBleGNlcHQgTG9n
aWNhbENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBf
c2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgotICAgICAgICAiIiJP
dmVycmlkZSBTdHJlYW0uX3NlbmRfY2xvc2luZ19oYW5kc2hha2UuIiIiCi0gICAgICAgIGJvZHkg
PSBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keShjb2RlLCByZWFzb24pCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGluZyBjbG9zaW5nIGhhbmRzaGFrZSBmb3IgJWQ6ICglciwg
JXIpJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFubmVs
X2lkLCBjb2RlLCByZWFzb24pKQotICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZShjb21t
b24uT1BDT0RFX0NMT1NFLCBib2R5LCBlbmQ9VHJ1ZSkKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHNlbmRfcGluZyhzZWxmLCBib2R5
PScnKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRfcGluZy4iIiIKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBpbmcgb24gbG9naWNhbCBjaGFubmVsICVkOiAl
cicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9p
ZCwgYm9keSkpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVf
UElORywgYm9keSwgZW5kPVRydWUpCi0KLSAgICAgICAgc2VsZi5fcGluZ19xdWV1ZS5hcHBlbmQo
Ym9keSkKLQotICAgIGRlZiBfc2VuZF9wb25nKHNlbGYsIGJvZHkpOgotICAgICAgICAiIiJPdmVy
cmlkZSBTdHJlYW0uX3NlbmRfcG9uZy4iIiIKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZW5kaW5nIHBvbmcgb24gbG9naWNhbCBjaGFubmVsICVkOiAlcicgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgYm9keSkpCi0gICAgICAgIHNl
bGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgZW5kPVRydWUp
Ci0KLSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIFN0cmVhbS5jbG9z
ZV9jb25uZWN0aW9uLiIiIgotICAgICAgICAjIFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbG9zaW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHN0
b3Bfc2VuZGluZyhzZWxmKToKLSAgICAgICAgIiIiU3RvcCBhY2NlcHRpbmcgbmV3IHNlbmQgb3Bl
cmF0aW9uIChfd3JpdGVfaW5uZXJfZnJhbWUpLiIiIgotICAgICAgICBzZWxmLl9zZW5kX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCi0gICAgICAg
IHNlbGYuX3NlbmRfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0KLWNsYXNzIF9PdXRnb2luZ0RhdGEob2JqZWN0KToKLQotICAgICIi
IlNpbXBsZSBkYXRhL2NoYW5uZWwgY29udGFpbmVyLgotCi0gICAgQSBzdHJ1Y3R1cmUgdGhhdCBo
b2xkcyBkYXRhIHRvIGJlIHNlbnQgdmlhIHBoeXNpY2FsIGNvbm5lY3Rpb24gYW5kCi0gICAgb3Jp
Z2luIG9mIHRoZSBkYXRhLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5u
ZWxfaWQsIGRhdGEpOgotICAgICAgICBzZWxmLmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAg
ICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotCi1jbGFzcyBfUGh5c2ljYWxDb25uZWN0aW9uV3JpdGVy
KHRocmVhZGluZy5UaHJlYWQpOgotCi0gICAgIiIiQSB0aHJlYWQgdGhhdCBpcyByZXNwb25zaWJs
ZSBmb3Igd3JpdGluZyBkYXRhIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICBUT0RPKGJh
c2hpKTogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRocmVhZC1zYWZldHkgcHJvYmxlbSB3aGVuIHRo
ZSByZWFkZXIKLSAgICB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBzYW1lIHNvY2tldCBhdCBh
IHRpbWUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgot
ICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5k
bGVyID0gbXV4X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgICAg
ICAjIFdoZW4gc2V0LCBtYWtlIHRoaXMgdGhyZWFkIHN0b3AgYWNjZXB0aW5nIG5ldyBkYXRhLCBm
bHVzaCBwZW5kaW5nCi0gICAgICAgICMgZGF0YSBhbmQgZXhpdC4KLSAgICAgICAgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICAjIFRoZSBjbG9zZSBjb2RlIG9mIHRoZSBwaHlz
aWNhbCBjb25uZWN0aW9uLgotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY29tbW9uLlNUQVRV
U19OT1JNQUxfQ0xPU1VSRQotICAgICAgICAjIERlcXVlIGZvciBwYXNzaW5nIHdyaXRlIGRhdGEu
IEl0J3MgcHJvdGVjdGVkIGJ5IF9kZXF1ZV9jb25kaXRpb24KLSAgICAgICAgIyB1bnRpbCBfc3Rv
cF9yZXF1ZXN0ZWQgaXMgc2V0LgotICAgICAgICBzZWxmLl9kZXF1ZSA9IGNvbGxlY3Rpb25zLmRl
cXVlKCkKLSAgICAgICAgIyAtIFByb3RlY3RzIF9kZXF1ZSwgX3N0b3BfcmVxdWVzdGVkIGFuZCBf
Y2xvc2VfY29kZQotICAgICAgICAjIC0gU2lnbmFscyB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoZW0g
dG8gYmUgYXZhaWxhYmxlCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbiA9IHRocmVhZGlu
Zy5Db25kaXRpb24oKQotCi0gICAgZGVmIHB1dF9vdXRnb2luZ19kYXRhKHNlbGYsIGRhdGEpOgot
ICAgICAgICAiIiJQdXQgb3V0Z29pbmcgZGF0YS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgZGF0YTogX091dGdvaW5nRGF0YSBpbnN0YW5jZS4KLSAgICAgICAgUmFpc2VzOgotICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHRoZSB0aHJlYWQgaGFzIGJlZW4gcmVx
dWVzdGVkIHRvCi0gICAgICAgICAgICAgICAgdGVybWluYXRlLgotICAgICAgICAiIiIKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotICAg
ICAgICAgICAgaWYgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
QmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdDYW5ub3Qgd3JpdGUgZGF0YSBhbnltb3JlJykKLQotICAg
ICAgICAgICAgc2VsZi5fZGVxdWUuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9kZXF1
ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYu
X2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBfd3JpdGVfZGF0YShzZWxmLCBv
dXRnb2luZ19kYXRhKToKLSAgICAgICAgbWVzc2FnZSA9IChfZW5jb2RlX2NoYW5uZWxfaWQob3V0
Z29pbmdfZGF0YS5jaGFubmVsX2lkKSArCi0gICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfZGF0
YS5kYXRhKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlz
aWNhbF9zdHJlYW0uc2VuZF9tZXNzYWdlKAotICAgICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2Fn
ZSwgZW5kPVRydWUsIGJpbmFyeT1UcnVlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6
Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcgJQotICAgICAgICAgICAg
ICAgIChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCks
IGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IEl0IHdvdWxk
IGJlIGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMKLSAgICAgICAgIyBjb250
cm9sIGRhdGEgYXMgd2VsbC4KLSAgICAgICAgaWYgb3V0Z29pbmdfZGF0YS5jaGFubmVsX2lkICE9
IF9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3Rp
Znlfd3JpdGVfZGF0YV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCkKLQotICAgIGRlZiBy
dW4oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoK
LSAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEgPSBzZWxmLl9kZXF1ZS5w
b3BsZWZ0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNl
KCkKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG91dGdvaW5nX2RhdGEpCi0gICAg
ICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotCi0gICAgICAgICAg
ICAjIEZsdXNoIGRlcXVlLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBBdCB0aGlzIHBv
aW50LCBzZWxmLl9kZXF1ZV9jb25kaXRpb24gaXMgYWx3YXlzIGFjcXVpcmVkLgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9kZXF1ZSkgPiAwOgotICAg
ICAgICAgICAgICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVxdWUucG9wbGVmdCgpCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29pbmdfZGF0YSkKLSAgICAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0gICAgICAgICAgICAjIENsb3NlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCB3YWl0IHRoZSByZXNwb25zZSBo
ZXJlLiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSByZWFkCi0gICAgICAgICAgICAgICAgIyBieSB0aGUg
cmVhZGVyIHRocmVhZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNh
bF9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xv
c2VfY29kZSwgd2FpdF9yZXNwb25zZT1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKLSAgICAgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gY2xvc2UgdGhlIHBoeXNpY2FsIGNv
bm5lY3Rpb246ICVyJyAlIGUpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV93cml0ZXJfZG9uZSgpCi0K
LSAgICBkZWYgc3RvcChzZWxmLCBjbG9zZV9jb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NV
UkUpOgotICAgICAgICAiIiJTdG9wIHRoZSB3cml0ZXIgdGhyZWFkLiIiIgotICAgICAgICBzZWxm
Ll9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVk
ID0gVHJ1ZQotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY2xvc2VfY29kZQotICAgICAgICBz
ZWxmLl9kZXF1ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0KLWNsYXNzIF9QaHlzaWNhbENvbm5lY3Rpb25SZWFkZXIodGhyZWFk
aW5nLlRocmVhZCk6Ci0KLSAgICAiIiJBIHRocmVhZCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBy
ZWFkaW5nIGRhdGEgZnJvbSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIG11eF9oYW5kbGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGlu
c3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhh
bmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9f
aW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9oYW5kbGVyCi0gICAgICAg
IHNlbGYuc2V0RGFlbW9uKFRydWUpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBoeXNpY2FsX3N0cmVh
bSA9IHNlbGYuX211eF9oYW5kbGVyLnBoeXNpY2FsX3N0cmVhbQotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSBwaHlzaWNhbF9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgICAg
ICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
ICAgICAgICAgIyBCZWxvdyBoYXBwZW5zIG9ubHkgd2hlbiBhIGRhdGEgbWVzc2FnZSBpcyByZWNl
aXZlZC4KLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBwaHlzaWNhbF9zdHJlYW0uZ2V0X2xhc3Rf
cmVjZWl2ZWRfb3Bjb2RlKCkKLSAgICAgICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9Q
Q09ERV9CSU5BUlk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLmZhaWxf
cGh5c2ljYWxfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVf
SU5WQUxJRF9FTkNBUFNVTEFUSU5HX01FU1NBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
UmVjZWl2ZWQgYSB0ZXh0IG1lc3NhZ2Ugb24gcGh5c2ljYWwgY29ubmVjdGlvbicpCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uVGVybWlu
YXRlZEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
JXMnLCBlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5kaXNwYXRjaF9tZXNzYWdlKG1lc3NhZ2UpCi0g
ICAgICAgICAgICBleGNlcHQgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IgYXMgZToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24oCi0gICAg
ICAgICAgICAgICAgICAgIGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCi0gICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBMb2dpY2FsQ2hhbm5lbEVycm9yIGFzIGU6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9sb2dpY2FsX2NoYW5uZWwoCi0gICAg
ICAgICAgICAgICAgICAgIGUuY2hhbm5lbF9pZCwgZS5kcm9wX2NvZGUsIGUubWVzc2FnZSkKLSAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgICAgICAgICBicmVh
awotCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQot
Y2xhc3MgX1dvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKLQotICAgICIiIkEgdGhyZWFkIHRoYXQg
aXMgcmVzcG9uc2libGUgZm9yIHJ1bm5pbmcgdGhlIGNvcnJlc3BvbmRpbmcgYXBwbGljYXRpb24K
LSAgICBoYW5kbGVyLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG11eF9oYW5k
bGVyLCByZXF1ZXN0KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2Uu
Ci0gICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2UuCi0gICAgICAg
ICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNl
bGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlciA9IG11eF9oYW5kbGVyCi0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0
Ci0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0xvZ2ljYWwgY2hhbm5lbCB3b3JrZXIgc3RhcnRlZC4g
KGlkPSVkKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE5vbi1jcml0aWNhbCBleGNlcHRp
b25zIHdpbGwgYmUgaGFuZGxlZCBieSBkaXNwYXRjaGVyLgotICAgICAgICAgICAgc2VsZi5fbXV4
X2hhbmRsZXIuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHNlbGYuX3JlcXVlc3QpCi0gICAgICAg
IGV4Y2VwdCBMb2dpY2FsQ2hhbm5lbEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLl9tdXhf
aGFuZGxlci5mYWlsX2xvZ2ljYWxfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBlLmNoYW5uZWxf
aWQsIGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd29ya2VyX2RvbmUoc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkKQotCi0KLWNsYXNzIF9NdXhIYW5kc2hha2VyKGh5YmkuSGFuZHNoYWtlcik6Ci0KLSAg
ICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIG11bHRpcGxleGluZy4iIiIKLQot
ICAgIF9EVU1NWV9XRUJTT0NLRVRfS0VZID0gJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzZW5kX3F1b3RhLCBy
ZWNlaXZlX3F1b3RhKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2Uu
Ci0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIGluc3RhbmNlIChkaXNwYXRjaC5E
aXNwYXRjaGVyKS4KLSAgICAgICAgICAgIHNlbmRfcXVvdGE6IEluaXRpYWwgc2VuZCBxdW90YS4K
LSAgICAgICAgICAgIHJlY2VpdmVfcXVvdGE6IEluaXRpYWwgcmVjZWl2ZSBxdW90YS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGh5YmkuSGFuZHNoYWtlci5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBk
aXNwYXRjaGVyKQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAg
ICBzZWxmLl9yZWNlaXZlX3F1b3RhID0gcmVjZWl2ZV9xdW90YQotCi0gICAgICAgICMgQXBwZW5k
IGhlYWRlcnMgd2hpY2ggc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBoYW5kc2hha2UgZmllbGQg
b2YKLSAgICAgICAgIyBBZGRDaGFubmVsUmVxdWVzdC4KLSAgICAgICAgIyBUT0RPKGJhc2hpKTog
TWFrZSBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiB3aGVuCi0gICAgICAg
ICMgICAgIHRoZXNlIGhlYWRlcnMgYXJlIGluY2x1ZGVkIGFscmVhZHkuCi0gICAgICAgIHJlcXVl
c3QuaGVhZGVyc19pbltjb21tb24uVVBHUkFERV9IRUFERVJdID0gKAotICAgICAgICAgICAgY29t
bW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCi0gICAgICAgIHJlcXVlc3QuaGVhZGVyc19pbltj
b21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBzdHIo
Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QpKQotICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5b
Y29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBzZWxmLl9E
VU1NWV9XRUJTT0NLRVRfS0VZKQotCi0gICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9vcHRpb25zKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5IYW5kc2hha2VyLl9jcmVhdGVf
c3RyZWFtLiIiIgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIGxvZ2ljYWwg
c3RyZWFtIGZvciAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC5jaGFubmVsX2lkKQotICAgICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCi0gICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90YSwKLSAgICAg
ICAgICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2Vf
cmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5fY3JlYXRl
X2hhbmRzaGFrZV9yZXNwb25zZS4iIiIKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAgICAg
IHJlc3BvbnNlLmFwcGVuZCgnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJykK
LQotICAgICAgICAjIFVwZ3JhZGUgYW5kIFNlYy1XZWJTb2NrZXQtQWNjZXB0IHNob3VsZCBiZSBl
eGNsdWRlZC4KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAlICgKLSAgICAg
ICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElP
Tl9UWVBFKSkKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCi0gICAgICAg
ICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSLAotICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQotICAgICAgICBpZiAoc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgbGVuKHNlbGYu
X3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBl
bmQoJyVzOiAlc1xyXG4nICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VU
X0VYVEVOU0lPTlNfSEVBREVSLAotICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5z
aW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKLSAgICAgICAgcmVzcG9uc2UuYXBw
ZW5kKCdcclxuJykKLQotICAgICAgICByZXR1cm4gJycuam9pbihyZXNwb25zZSkKLQotICAgIGRl
ZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHli
aS5IYW5kc2hha2VyLl9zZW5kX2hhbmRzaGFrZS4iIiIKLSAgICAgICAgIyBEb24ndCBzZW5kIGhh
bmRzaGFrZSByZXNwb25zZSBmb3IgdGhlIGRlZmF1bHQgY2hhbm5lbAotICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LmNoYW5uZWxfaWQgPT0gX0RFRkFVTFRfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIGhhbmRzaGFrZV9yZXNwb25zZSA9IHNlbGYuX2NyZWF0ZV9oYW5k
c2hha2VfcmVzcG9uc2UoYWNjZXB0KQotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9hZGRf
Y2hhbm5lbF9yZXNwb25zZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LmNoYW5uZWxfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlX3Jlc3BvbnNl
KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgaGFuZHNoYWtlIHJlc3BvbnNl
IGZvciAlZDogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0
LmNoYW5uZWxfaWQsIGZyYW1lX2RhdGEpKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLQotY2xhc3MgX0xvZ2ljYWxDaGFu
bmVsRGF0YShvYmplY3QpOgotCi0gICAgIiIiQSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyBpbmZvcm1h
dGlvbiBhYm91dCBsb2dpY2FsIGNoYW5uZWwuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cmVxdWVzdCwgd29ya2VyKToKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAg
ICBzZWxmLndvcmtlciA9IHdvcmtlcgotICAgICAgICBzZWxmLmRyb3BfY29kZSA9IF9EUk9QX0NP
REVfTk9STUFMX0NMT1NVUkUKLSAgICAgICAgc2VsZi5kcm9wX21lc3NhZ2UgPSAnJwotCi0KLWNs
YXNzIF9IYW5kc2hha2VEZWx0YUJhc2Uob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIHRoYXQgaG9s
ZHMgaW5mb3JtYXRpb24gZm9yIGRlbHRhLWVuY29kZWQgaGFuZHNoYWtlLiIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhlYWRlcnMpOgotICAgICAgICBzZWxmLl9oZWFkZXJzID0gaGVhZGVy
cwotCi0gICAgZGVmIGNyZWF0ZV9oZWFkZXJzKHNlbGYsIGRlbHRhPU5vbmUpOgotICAgICAgICAi
IiJDcmVhdGVzIHJlcXVlc3QgaGVhZGVycyBmb3IgYW4gQWRkQ2hhbm5lbFJlcXVlc3QgdGhhdCBo
YXMKLSAgICAgICAgZGVsdGEtZW5jb2RlZCBoYW5kc2hha2UuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIGRlbHRhOiBoZWFkZXJzIHNob3VsZCBiZSBvdmVycmlkZGVuLgotICAgICAgICAi
IiIKLQotICAgICAgICBoZWFkZXJzID0gY29weS5jb3B5KHNlbGYuX2hlYWRlcnMpCi0gICAgICAg
IGlmIGRlbHRhOgotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGVsdGEuaXRlbXMoKToK
LSAgICAgICAgICAgICAgICAjIFRoZSBzcGVjIHJlcXVpcmVzIHRoYXQgYSBoZWFkZXIgd2l0aCBh
biBlbXB0eSB2YWx1ZSBpcwotICAgICAgICAgICAgICAgICMgcmVtb3ZlZCBmcm9tIHRoZSBkZWx0
YSBiYXNlLgotICAgICAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMCBhbmQgaGVhZGVycy5o
YXNfa2V5KGtleSk6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBoZWFkZXJzW2tleV0KLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1
ZQotICAgICAgICByZXR1cm4gaGVhZGVycwotCi0KLWNsYXNzIF9NdXhIYW5kbGVyKG9iamVjdCk6
Ci0gICAgIiIiTXVsdGlwbGV4aW5nIGhhbmRsZXIuIFdoZW4gYSBoYW5kbGVyIHN0YXJ0cywgaXQg
bGF1bmNoZXMgdGhyZWUKLSAgICB0aHJlYWRzOyB0aGUgcmVhZGVyIHRocmVhZCwgdGhlIHdyaXRl
ciB0aHJlYWQsIGFuZCBhIHdvcmtlciB0aHJlYWQuCi0KLSAgICBUaGUgcmVhZGVyIHRocmVhZCBy
ZWFkcyBkYXRhIGZyb20gdGhlIHBoeXNpY2FsIHN0cmVhbSwgaS5lLiwgdGhlCi0gICAgd3Nfc3Ry
ZWFtIG9iamVjdCBvZiB0aGUgdW5kZXJseWluZyB3ZWJzb2NrZXQgY29ubmVjdGlvbi4gVGhlIHJl
YWRlcgotICAgIHRocmVhZCBpbnRlcnByZXRzIG11bHRpcGxleGVkIGZyYW1lcyBhbmQgZGlzcGF0
Y2hlcyB0aGVtIHRvIGxvZ2ljYWwKLSAgICBjaGFubmVscy4gTWV0aG9kcyBvZiB0aGlzIGNsYXNz
IGFyZSBtb3N0bHkgY2FsbGVkIGJ5IHRoZSByZWFkZXIgdGhyZWFkLgotCi0gICAgVGhlIHdyaXRl
ciB0aHJlYWQgc2VuZHMgbXVsdGlwbGV4ZWQgZnJhbWVzIHdoaWNoIGFyZSBjcmVhdGVkIGJ5Ci0g
ICAgbG9naWNhbCBjaGFubmVscyB2aWEgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICBU
aGUgd29ya2VyIHRocmVhZCBsYXVuY2hlZCBhdCB0aGUgc3RhcnRpbmcgcG9pbnQgaGFuZGxlcyB0
aGUKLSAgICAiSW1wbGljaXRseSBPcGVuZWQgQ29ubmVjdGlvbiIuIElmIG11bHRpcGxleGluZyBo
YW5kbGVyIHJlY2VpdmVzCi0gICAgYW4gQWRkQ2hhbm5lbFJlcXVlc3QgYW5kIGFjY2VwdHMgaXQs
IHRoZSBoYW5kbGVyIHdpbGwgbGF1bmNoIGEgbmV3IHdvcmtlcgotICAgIHRocmVhZCBhbmQgZGlz
cGF0Y2ggdGhlIHJlcXVlc3QgdG8gaXQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFu
Y2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVx
dWVzdCBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6
IERpc3BhdGNoZXIgaW5zdGFuY2UgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgotICAgICAgICAiIiIK
LQotICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYu
ZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLSAgICAgICAgc2VsZi5waHlzaWNhbF9jb25uZWN0aW9u
ID0gcmVxdWVzdC5jb25uZWN0aW9uCi0gICAgICAgIHNlbGYucGh5c2ljYWxfc3RyZWFtID0gcmVx
dWVzdC53c19zdHJlYW0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9n
Z2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMgPSB7fQotICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQot
ICAgICAgICAjIEhvbGRzIGNsaWVudCdzIGluaXRpYWwgcXVvdGEKLSAgICAgICAgc2VsZi5fY2hh
bm5lbF9zbG90cyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtl
X2Jhc2UgPSBOb25lCi0gICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9
IEZhbHNlCi0gICAgICAgIHNlbGYuX3JlYWRlciA9IE5vbmUKLSAgICAgICAgc2VsZi5fd3JpdGVy
ID0gTm9uZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICAiIiJTdGFydHMgdGhlIGhh
bmRsZXIuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgTXV4VW5leHBlY3RlZEV4Y2Vw
dGlvbjogd2hlbiB0aGUgaGFuZGxlciBhbHJlYWR5IHN0YXJ0ZWQsIG9yIHdoZW4KLSAgICAgICAg
ICAgICAgICBvcGVuaW5nIGhhbmRzaGFrZSBvZiB0aGUgZGVmYXVsdCBjaGFubmVsIGZhaWxzLgot
ICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkZXIgb3Igc2VsZi5fd3JpdGVyOgot
ICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbignTXV4SGFuZGxlciBhbHJl
YWR5IHN0YXJ0ZWQnKQotCi0gICAgICAgIHNlbGYuX3JlYWRlciA9IF9QaHlzaWNhbENvbm5lY3Rp
b25SZWFkZXIoc2VsZikKLSAgICAgICAgc2VsZi5fd3JpdGVyID0gX1BoeXNpY2FsQ29ubmVjdGlv
bldyaXRlcihzZWxmKQotICAgICAgICBzZWxmLl9yZWFkZXIuc3RhcnQoKQotICAgICAgICBzZWxm
Ll93cml0ZXIuc3RhcnQoKQotCi0gICAgICAgICMgQ3JlYXRlICJJbXBsaWNpdGx5IE9wZW5lZCBD
b25uZWN0aW9uIi4KLSAgICAgICAgbG9naWNhbF9jb25uZWN0aW9uID0gX0xvZ2ljYWxDb25uZWN0
aW9uKHNlbGYsIF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0gICAgICAgIGhlYWRlcnMgPSBjb3B5LmNv
cHkoc2VsZi5vcmlnaW5hbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAgICAgICMgQWRkIGV4dGVu
c2lvbnMgZm9yIGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAgICAgaGVhZGVyc1tjb21tb24uU0VDX1dF
QlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBjb21tb24uZm9ybWF0
X2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9yZXF1ZXN0Lm11eF9w
cm9jZXNzb3IuZXh0ZW5zaW9ucygpKSkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2UgPSBf
SGFuZHNoYWtlRGVsdGFCYXNlKGhlYWRlcnMpCi0gICAgICAgIGxvZ2ljYWxfcmVxdWVzdCA9IF9M
b2dpY2FsUmVxdWVzdCgKLSAgICAgICAgICAgIF9ERUZBVUxUX0NIQU5ORUxfSUQsCi0gICAgICAg
ICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QubWV0aG9kLAotICAgICAgICAgICAgc2VsZi5vcmln
aW5hbF9yZXF1ZXN0LnVyaSwKLSAgICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5wcm90
b2NvbCwKLSAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlLmNyZWF0ZV9oZWFkZXJzKCks
Ci0gICAgICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24pCi0gICAgICAgICMgQ2xpZW50J3Mgc2Vu
ZCBxdW90YSBmb3IgdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNvbm5lY3Rpb24gaXMgemVybywKLSAg
ICAgICAgIyBidXQgd2Ugd2lsbCBzZW5kIEZsb3dDb250cm9sIGxhdGVyIHNvIHNldCB0aGUgaW5p
dGlhbCBxdW90YSB0bwotICAgICAgICAjIF9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQuCi0gICAg
ICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMuYXBwZW5kKF9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQp
Ci0gICAgICAgIHNlbmRfcXVvdGEgPSBzZWxmLm9yaWdpbmFsX3JlcXVlc3QubXV4X3Byb2Nlc3Nv
ci5xdW90YSgpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9kb19oYW5kc2hha2VfZm9yX2xvZ2ljYWxf
cmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdCwgc2VuZF9xdW90YT1zZW5kX3F1
b3RhKToKLSAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ0ZhaWxlZCBoYW5kc2hha2Ugb24gdGhlIGRlZmF1bHQgY2hhbm5lbCBpZCcpCi0g
ICAgICAgIHNlbGYuX2FkZF9sb2dpY2FsX2NoYW5uZWwobG9naWNhbF9yZXF1ZXN0KQotCi0gICAg
ICAgICMgU2VuZCBGbG93Q29udHJvbCBmb3IgdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNvbm5lY3Rp
b24uCi0gICAgICAgIGZyYW1lX2RhdGEgPSBfY3JlYXRlX2Zsb3dfY29udHJvbChfREVGQVVMVF9D
SEFOTkVMX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lO
SVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLSAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgYWRkX2NoYW5uZWxf
c2xvdHMoc2VsZiwgc2xvdHMsIHNlbmRfcXVvdGEpOgotICAgICAgICAiIiJBZGRzIGNoYW5uZWwg
c2xvdHMuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHNsb3RzOiBudW1iZXIgb2Ygc2xv
dHMgdG8gYmUgYWRkZWQuCi0gICAgICAgICAgICBzZW5kX3F1b3RhOiBpbml0aWFsIHNlbmQgcXVv
dGEgZm9yIHNsb3RzLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3Rz
LmV4dGVuZChbc2VuZF9xdW90YV0gKiBzbG90cykKLSAgICAgICAgIyBTZW5kIE5ld0NoYW5uZWxT
bG90IHRvIGNsaWVudC4KLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfbmV3X2NoYW5uZWxf
c2xvdChzbG90cywgc2VuZF9xdW90YSkKLSAgICAgICAgc2VsZi5zZW5kX2NvbnRyb2xfZGF0YShm
cmFtZV9kYXRhKQotCi0gICAgZGVmIHdhaXRfdW50aWxfZG9uZShzZWxmLCB0aW1lb3V0PU5vbmUp
OgotICAgICAgICAiIiJXYWl0cyB1bnRpbCBhbGwgd29ya2VycyBhcmUgZG9uZS4gUmV0dXJucyBG
YWxzZSB3aGVuIHRpbWVvdXQgaGFzCi0gICAgICAgIG9jY3VycmVkLiBSZXR1cm5zIFRydWUgb24g
c3VjY2Vzcy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGltZW91dDogdGltZW91dCBp
biBzZWMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBsZW4oc2Vs
Zi5fbG9naWNhbF9jaGFubmVscykgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnV2FpdGluZyB3b3JrZXJzKCVkKS4uLicgJQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZW4oc2VsZi5fbG9naWNhbF9jaGFubmVscykpCi0gICAgICAgICAgICAgICAg
c2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkID0gRmFsc2UKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi53YWl0KHRpbWVvdXQpCi0gICAgICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZDoKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXYWl0aW5nIHdvcmtlcihzKSB0aW1l
ZCBvdXQnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2Uo
KQotCi0gICAgICAgICMgRmx1c2ggcGVuZGluZyBvdXRnb2luZyBkYXRhCi0gICAgICAgIHNlbGYu
X3dyaXRlci5zdG9wKCkKLSAgICAgICAgc2VsZi5fd3JpdGVyLmpvaW4oKQotCi0gICAgICAgIHJl
dHVybiBUcnVlCi0KLSAgICBkZWYgbm90aWZ5X3dyaXRlX2RhdGFfZG9uZShzZWxmLCBjaGFubmVs
X2lkKToKLSAgICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSB3cml0ZXIgdGhyZWFkIHdoZW4gYSB3cml0
ZSBvcGVyYXRpb24gaGFzIGRvbmUuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ6IG9iamVjdGl2ZSBjaGFubmVsIGlkLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkK
LSAgICAgICAgICAgIGlmIGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAg
ICAgICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5u
ZWxfaWRdCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5v
bl93cml0ZV9kYXRhX2RvbmUoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1NlZW1zIHRoYXQgbG9naWNhbCBjaGFubmVsIGZvciAlZCBoYXMg
Z29uZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjaGFubmVsX2lkKQot
ICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25k
aXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgc2VuZF9jb250cm9sX2RhdGEoc2VsZiwgZGF0YSk6
Ci0gICAgICAgICIiIlNlbmRzIGRhdGEgdmlhIHRoZSBjb250cm9sIGNoYW5uZWwuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGRhdGE6IGRhdGEgdG8gYmUgc2VudC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5fd3JpdGVyLnB1dF9vdXRnb2luZ19kYXRhKF9PdXRnb2luZ0RhdGEo
Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZD1fQ09OVFJPTF9DSEFOTkVMX0lELCBkYXRhPWRh
dGEpKQotCi0gICAgZGVmIHNlbmRfZGF0YShzZWxmLCBjaGFubmVsX2lkLCBkYXRhKToKLSAgICAg
ICAgIiIiU2VuZHMgZGF0YSB2aWEgZ2l2ZW4gbG9naWNhbCBjaGFubmVsLiBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgYnkKLSAgICAgICAgd29ya2VyIHRocmVhZHMuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ6IG9iamVjdGl2ZSBjaGFubmVsIGlkLgotICAgICAgICAgICAg
ZGF0YTogZGF0YSB0byBiZSBzZW50LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl93cml0
ZXIucHV0X291dGdvaW5nX2RhdGEoX091dGdvaW5nRGF0YSgKLSAgICAgICAgICAgICAgICBjaGFu
bmVsX2lkPWNoYW5uZWxfaWQsIGRhdGE9ZGF0YSkpCi0KLSAgICBkZWYgX3NlbmRfZHJvcF9jaGFu
bmVsKHNlbGYsIGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6Ci0gICAgICAgIGZy
YW1lX2RhdGEgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNzYWdl
KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnU2VuZGluZyBkcm9w
IGNoYW5uZWwgZm9yIGNoYW5uZWwgaWQgJWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5z
ZW5kX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0gICAgZGVmIF9zZW5kX2Vycm9yX2FkZF9j
aGFubmVsX3Jlc3BvbnNlKHNlbGYsIGNoYW5uZWxfaWQsIHN0YXR1cz1Ob25lKToKLSAgICAgICAg
aWYgc3RhdHVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0dXMgPSBjb21tb24uSFRUUF9TVEFU
VVNfQkFEX1JFUVVFU1QKLQotICAgICAgICBpZiBzdGF0dXMgaW4gX0hUVFBfQkFEX1JFU1BPTlNF
X01FU1NBR0VTOgotICAgICAgICAgICAgbWVzc2FnZSA9IF9IVFRQX0JBRF9SRVNQT05TRV9NRVNT
QUdFU1tzdGF0dXNdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ1Jlc3BvbnNlIG1lc3NhZ2UgZm9yICVkIGlzIG5vdCBmb3VuZCcgJSBzdGF0dXMpCi0gICAg
ICAgICAgICBtZXNzYWdlID0gJz8/PycKLQotICAgICAgICByZXNwb25zZSA9ICdIVFRQLzEuMSAl
ZCAlc1xyXG5cclxuJyAlIChzdGF0dXMsIG1lc3NhZ2UpCi0gICAgICAgIGZyYW1lX2RhdGEgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxfaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPXJlc3Bv
bnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmNvZGluZz0wLCByZWplY3RlZD1UcnVlKQotICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9kYXRh
KGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9sb2dpY2FsX3JlcXVlc3Qoc2VsZiwgYmxv
Y2spOgotICAgICAgICBpZiBibG9jay5jaGFubmVsX2lkID09IF9DT05UUk9MX0NIQU5ORUxfSUQ6
Ci0gICAgICAgICAgICAjIFRPRE8oYmFzaGkpOiBSYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
ciB3aXRoIGNvZGUgMjAwNgotICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIE11eFVuZXhwZWN0ZWRF
eGNlcHRpb24uCi0gICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICdSZWNlaXZlZCB0aGUgY29udHJvbCBjaGFubmVsIGlkICgwKSBhcyBvYmpl
Y3RpdmUgY2hhbm5lbCAnCi0gICAgICAgICAgICAgICAgJ2lkIGZvciBBZGRDaGFubmVsJykKLQot
ICAgICAgICBpZiBibG9jay5lbmNvZGluZyA+IF9IQU5EU0hBS0VfRU5DT0RJTkdfREVMVEE6Ci0g
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAg
ICBfRFJPUF9DT0RFX1VOS05PV05fUkVRVUVTVF9FTkNPRElORykKLQotICAgICAgICBtZXRob2Qs
IHBhdGgsIHZlcnNpb24sIGhlYWRlcnMgPSBfcGFyc2VfcmVxdWVzdF90ZXh0KAotICAgICAgICAg
ICAgYmxvY2suZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIGlmIGJsb2NrLmVuY29kaW5nID09
IF9IQU5EU0hBS0VfRU5DT0RJTkdfREVMVEE6Ci0gICAgICAgICAgICBoZWFkZXJzID0gc2VsZi5f
aGFuZHNoYWtlX2Jhc2UuY3JlYXRlX2hlYWRlcnMoaGVhZGVycykKLQotICAgICAgICBjb25uZWN0
aW9uID0gX0xvZ2ljYWxDb25uZWN0aW9uKHNlbGYsIGJsb2NrLmNoYW5uZWxfaWQpCi0gICAgICAg
IHJlcXVlc3QgPSBfTG9naWNhbFJlcXVlc3QoYmxvY2suY2hhbm5lbF9pZCwgbWV0aG9kLCBwYXRo
LCB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsIGNv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybiByZXF1ZXN0Ci0KLSAgICBkZWYgX2RvX2hhbmRzaGFr
ZV9mb3JfbG9naWNhbF9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIHNlbmRfcXVvdGE9MCk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJlY2VpdmVfcXVvdGEgPSBzZWxmLl9jaGFubmVsX3Nsb3Rz
LnBvcGxlZnQoKQotICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgIHJhaXNl
IExvZ2ljYWxDaGFubmVsRXJyb3IoCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jaGFubmVsX2lk
LCBfRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklPTEFUSU9OKQotCi0gICAgICAgIGhhbmRz
aGFrZXIgPSBfTXV4SGFuZHNoYWtlcihyZXF1ZXN0LCBzZWxmLmRpc3BhdGNoZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3F1b3RhLCByZWNlaXZlX3F1b3RhKQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAg
ICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3Jf
YWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jaGFubmVsX2lk
LCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uIGFz
IGU6Ci0gICAgICAgICAgICAjIFRPRE8oYmFzaGkpOiBTaG91bGQgd2UgX0ZhaWwgdGhlIExvZ2lj
YWwgQ2hhbm5lbF8gd2l0aCAzMDAxCi0gICAgICAgICAgICAjIGluc3RlYWQ/Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJv
cl9hZGRfY2hhbm5lbF9yZXNwb25zZShyZXF1ZXN0LmNoYW5uZWxfaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1lLnN0YXR1cykKLSAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRC
eVVzZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCclcycs
IGUpCi0gICAgICAgICAgICBzZWxmLl9zZW5kX2Vycm9yX2FkZF9jaGFubmVsX3Jlc3BvbnNlKHJl
cXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJl
dHVybiBUcnVlCi0KLSAgICBkZWYgX2FkZF9sb2dpY2FsX2NoYW5uZWwoc2VsZiwgbG9naWNhbF9y
ZXF1ZXN0KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBsb2dpY2FsX3JlcXVlc3QuY2hh
bm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ2hhbm5lbCBpZCAlZCBhbHJlYWR5IGV4aXN0cycgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAg
ICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RTLAotICAgICAgICAgICAg
ICAgICAgICAnQ2hhbm5lbCBpZCAlZCBhbHJlYWR5IGV4aXN0cycgJQotICAgICAgICAgICAgICAg
ICAgICBsb2dpY2FsX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHdvcmtlciA9IF9X
b3JrZXIoc2VsZiwgbG9naWNhbF9yZXF1ZXN0KQotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0g
X0xvZ2ljYWxDaGFubmVsRGF0YShsb2dpY2FsX3JlcXVlc3QsIHdvcmtlcikKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbbG9naWNhbF9yZXF1ZXN0LmNoYW5uZWxfaWRdID0gY2hh
bm5lbF9kYXRhCi0gICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgX3Byb2Nlc3NfYWRkX2NoYW5uZWxfcmVxdWVzdChzZWxmLCBibG9jayk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdCA9IHNlbGYuX2NyZWF0ZV9sb2dp
Y2FsX3JlcXVlc3QoYmxvY2spCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbG9naWNhbCByZXF1
ZXN0OiAlcicgJSBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9y
ZXNwb25zZSgKLSAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBzdGF0dXM9Y29tbW9u
LkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlm
IHNlbGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KGxvZ2ljYWxfcmVxdWVzdCk6
Ci0gICAgICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VOQ09ESU5HX0lE
RU5USVRZOgotICAgICAgICAgICAgICAgICMgVXBkYXRlIGhhbmRzaGFrZSBiYXNlLgotICAgICAg
ICAgICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGlzIGlzIHRoZSByaWdodCBwbGFj
ZSB0byB1cGRhdGUKLSAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBiYXNlLgotICAgICAgICAg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFzZSgKLSAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAgICAgICAgICBz
ZWxmLl9hZGRfbG9naWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAg
ICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19C
QURfUkVRVUVTVCkKLQotICAgIGRlZiBfcHJvY2Vzc19mbG93X2NvbnRyb2woc2VsZiwgYmxvY2sp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVsX2lkIGluIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAg
ICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2NrLmNoYW5uZWxfaWRd
Ci0gICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0ucmVwbGVuaXNoX3Nl
bmRfcXVvdGEoCi0gICAgICAgICAgICAgICAgYmxvY2suc2VuZF9xdW90YSkKLSAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVh
c2UoKQotCi0gICAgZGVmIF9wcm9jZXNzX2Ryb3BfY2hhbm5lbChzZWxmLCBibG9jayk6Ci0gICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdEcm9wQ2hhbm5lbCByZWNlaXZl
ZCBmb3IgJWQ6IGNvZGU9JXIsIHJlYXNvbj0lcicgJQotICAgICAgICAgICAgKGJsb2NrLmNoYW5u
ZWxfaWQsIGJsb2NrLmRyb3BfY29kZSwgYmxvY2suZHJvcF9tZXNzYWdlKSkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgp
Ci0gICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5lbF9kYXRh
ID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAgICAgICAgICAg
Y2hhbm5lbF9kYXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VECi0KLSAgICAg
ICAgICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAgY2hhbm5lbF9k
YXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICBf
TG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgIGNoYW5uZWxf
ZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgX3Byb2Nlc3NfY29udHJvbF9ibG9ja3Moc2VsZiwgcGFyc2VyKToKLSAgICAgICAg
Zm9yIGNvbnRyb2xfYmxvY2sgaW4gcGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKToKLSAgICAg
ICAgICAgIG9wY29kZSA9IGNvbnRyb2xfYmxvY2sub3Bjb2RlCi0gICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ2NvbnRyb2wgYmxvY2sgcmVjZWl2ZWQsIG9wY29kZTogJWQnICUgb3Bjb2Rl
KQotICAgICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVF
U1Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KGNv
bnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05U
Uk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgQWRkQ2hhbm5lbFJlc3Bv
bnNlJykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJP
TDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Zsb3dfY29udHJvbChjb250cm9sX2Js
b2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
OgotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfZHJvcF9jaGFubmVsKGNvbnRyb2xfYmxv
Y2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9T
TE9UOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAg
ICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0g
ICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBOZXdDaGFubmVsU2xvdCcpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZSAlcicgJSBvcGNvZGUpCi0KLSAg
ICBkZWYgX3Byb2Nlc3NfbG9naWNhbF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBwYXJzZXIpOgot
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgZnJhbWUuIGNoYW5uZWwgaWQ9
JWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5l
bF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICMgV2UgbXVz
dCBpZ25vcmUgdGhlIG1lc3NhZ2UgZm9yIGFuIGluYWN0aXZlIGNoYW5uZWwuCi0gICAgICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzW2NoYW5uZWxfaWRdCi0gICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9w
Y29kZSwgcGF5bG9hZCA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAgICAgIGNv
bnN1bWluZ19ieXRlID0gbGVuKHBheWxvYWQpCi0gICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29t
bW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUg
Kz0gMQotICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5j
b25zdW1lX3JlY2VpdmVfcXVvdGEoCi0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUpOgot
ICAgICAgICAgICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xvc2UgbG9naWNh
bCBjaGFubmVsLgotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVsRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9M
QVRJT04pCi0gICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBh
eWxvYWQpLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2s9RmFsc2UpCi0gICAgICAgICAgICBmcmFtZV9kYXRhID0gaGVhZGVyICsg
cGF5bG9hZAotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5hcHBl
bmRfZnJhbWVfZGF0YShmcmFtZV9kYXRhKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgZGlz
cGF0Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiRGlzcGF0Y2hlcyBtZXNz
YWdlLiBUaGUgcmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMgZW5jYXBzdWxh
dGVkIGZyYW1lLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcjogaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKLSAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uIGxldmVsIGVycm9ycy4KLSAgICAgICAgICAgIExvZ2ljYWxDaGFubmVsRXJy
b3I6IGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAg
ICAgIGxldmVsIGVycm9ycy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcGFyc2VyID0gX011eEZy
YW1lUGF5bG9hZFBhcnNlcihtZXNzYWdlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGFu
bmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0NIQU5ORUxfSURfVFJVTkNBVEVEKQotICAgICAgICBpZiBjaGFubmVsX2lkID09IF9D
T05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2NvbnRyb2xfYmxv
Y2tzKHBhcnNlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkLCBwYXJzZXIpCi0KLSAgICBkZWYgbm90aWZ5X3dvcmtlcl9k
b25lKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICAiIiJDYWxsZWQgd2hlbiBhIHdvcmtlciBo
YXMgZmluaXNoZWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ6IGNo
YW5uZWwgaWQgY29ycmVzcG9uZGVkIHdpdGggdGhlIHdvcmtlci4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXb3JrZXIgZm9yIGNoYW5uZWwgaWQgJWQgdGVybWlu
YXRlZCcgJSBjaGFubmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBjaGFu
bmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
TXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0NoYW5uZWwgaWQg
JWQgbm90IGZvdW5kJyAlIGNoYW5uZWxfaWQpCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzLnBvcChjaGFubmVsX2lkKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkID0gVHJ1ZQotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ubm90aWZ5KCkKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAg
ICAgIGlmIG5vdCBjaGFubmVsX2RhdGEucmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAg
ICAgICAgIHNlbGYuX3NlbmRfZHJvcF9jaGFubmVsKAotICAgICAgICAgICAgICAgIGNoYW5uZWxf
aWQsIGNvZGU9Y2hhbm5lbF9kYXRhLmRyb3BfY29kZSwKLSAgICAgICAgICAgICAgICBtZXNzYWdl
PWNoYW5uZWxfZGF0YS5kcm9wX21lc3NhZ2UpCi0KLSAgICBkZWYgbm90aWZ5X3JlYWRlcl9kb25l
KHNlbGYpOgotICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIHJlYWRlciB0
aHJlYWQgd2hlbiB0aGUgcmVhZGVyIGhhcwotICAgICAgICBmaW5pc2hlZC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1Rlcm1pYXRpbmcg
YWxsIGxvZ2ljYWwgY29ubmVjdGlvbnMgd2FpdGluZyBmb3IgaW5jb21pbmcgZGF0YSAnCi0gICAg
ICAgICAgICAnLi4uJykKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgIGZvciBjaGFubmVsX2RhdGEgaW4gc2VsZi5fbG9naWNhbF9jaGFu
bmVscy52YWx1ZXMoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGFubmVs
X2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKAotICAgICAgICAgICAgICAg
ICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIG5vdGlmeV93cml0ZXJfZG9uZShzZWxmKToKLSAgICAg
ICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSB3cml0ZXIgdGhyZWFkIHdoZW4gdGhl
IHdyaXRlciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJtaWF0aW5nIGFsbCBsb2dpY2FsIGNv
bm5lY3Rpb25zIHdhaXRpbmcgZm9yIHdyaXRlICcKLSAgICAgICAgICAgICdjb21wbGV0aW9uIC4u
LicpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMudmFsdWVz
KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVl
c3QuY29ubmVjdGlvbi5vbl93cml0ZXJfZG9uZSgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2suZm9ybWF0
X2V4YygpKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNl
KCkKLQotICAgIGRlZiBmYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24oc2VsZiwgY29kZSwgbWVzc2Fn
ZSk6Ci0gICAgICAgICIiIkZhaWwgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIGNvZGU6IGRyb3AgcmVhc29uIGNvZGUuCi0gICAgICAgICAgICBt
ZXNzYWdlOiBkcm9wIG1lc3NhZ2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnRmFpbGluZyB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4uLicpCi0gICAgICAgIHNl
bGYuX3NlbmRfZHJvcF9jaGFubmVsKF9DT05UUk9MX0NIQU5ORUxfSUQsIGNvZGUsIG1lc3NhZ2Up
Ci0gICAgICAgIHNlbGYuX3dyaXRlci5zdG9wKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9J
TlRfRVJST1IpCi0KLSAgICBkZWYgZmFpbF9sb2dpY2FsX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9p
ZCwgY29kZSwgbWVzc2FnZSk6Ci0gICAgICAgICIiIkZhaWwgYSBsb2dpY2FsIGNoYW5uZWwuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ6IGNoYW5uZWwgaWQuCi0gICAg
ICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAgICAgICAgbWVzc2FnZTogZHJv
cCBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Zh
aWxpbmcgbG9naWNhbCBjaGFubmVsICVkLi4uJyAlIGNoYW5uZWxfaWQpCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAg
ICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5l
bF9pZF0KLSAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBsb2dpY2FsIGNoYW5uZWwuIG5vdGlm
eV93b3JrZXJfZG9uZSgpIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAjIGNhbGxlZCBsYXRlciBh
bmQgaXQgd2lsbCBzZW5kIERyb3BDaGFubmVsLgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0
YS5kcm9wX2NvZGUgPSBjb2RlCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLmRyb3BfbWVz
c2FnZSA9IG1lc3NhZ2UKLQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNv
bm5lY3Rpb24uc2V0X3JlYWRfc3RhdGUoCi0gICAgICAgICAgICAgICAgICAgIF9Mb2dpY2FsQ29u
bmVjdGlvbi5TVEFURV9URVJNSU5BVEVEKQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5y
ZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNz
YWdlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24ucmVsZWFzZSgpCi0KLQotZGVmIHVzZV9tdXgocmVxdWVzdCk6Ci0gICAgcmV0
dXJuIGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9jZXNzb3InKSBhbmQgKAotICAgICAgICByZXF1
ZXN0Lm11eF9wcm9jZXNzb3IuaXNfYWN0aXZlKCkpCi0KLQotZGVmIHN0YXJ0KHJlcXVlc3QsIGRp
c3BhdGNoZXIpOgotICAgIG11eF9oYW5kbGVyID0gX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICBtdXhfaGFuZGxlci5hZGRfY2hh
bm5lbF9zbG90cyhfSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAg
bXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
Yzg3ODYwNjQ4ODkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIwOCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlN0YW5kYWxvbmUgV2ViU29ja2V0
IHNlcnZlci4KLQotVXNlIHRoaXMgZmlsZSB0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aG91dCBB
cGFjaGUgSFRUUCBTZXJ2ZXIuCi0KLQotQkFTSUMgVVNBR0UKLT09PT09PT09PT09Ci0KLUdvIHRv
IHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4KLQotICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+XQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tfaGFuZGxlcnM+XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQotCi08d3NfcG9ydD4g
aXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlvbi4KLQotPGRvY3Vt
ZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVz
LgotCi08d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KLUlmIG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290
PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRfXy5weSAob3IKLXJ1biAkIHB5ZG9jIG1vZF9weXdl
YnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBXZWJTb2NrZXQgaGFuZGxlcnMuCi0KLUZvciBtb3Jl
IGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywgcnVuCi0KLSAgJCBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCi0KLW9yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBt
ZXRob2QgYmVsb3cuCi0KLUZvciB0cm91YmxlIHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVs
IGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KLQotCi1UUlkgREVNTwotPT09PT09PT0KLQotR28gdG8g
dGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRv
IHNldCB0aGUKLWRvY3VtZW50IHJvb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1w
bGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2UgdGhpczoKLQotICAkIGNkIHNyYwotICAkIFBZVEhP
TlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQot
Ci10byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwg
b24gcG9ydCA4MC4gT3BlbgotaHR0cDovL2xvY2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRo
ZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21ldGhpbmcgaW50bwotdGhlIHRleHQgYm94IG5leHQg
dG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGljayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhp
bmcKLWlzIHdvcmtpbmcsIHlvdSdsbCBzZWUgdGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBi
eSB0aGUgc2VydmVyLgotCi0KLVVTSU5HIFRMUwotPT09PT09PT09Ci0KLVRvIHJ1biB0aGUgc3Rh
bmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3VwcG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQg
LWMKLW9wdGlvbnMuIFdoZW4gVExTIGlzIGVuYWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBh
Y2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24uCi0KLU5vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUg
aXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKLVRMUyBjb25u
ZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgot
Ci1FeGFtcGxlOgotCi0gICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3Rh
bmRhbG9uZS5weSBcCi0gICAgICAgIC1kIGV4YW1wbGUgXAotICAgICAgICAtcCAxMDQ0MyBcCi0g
ICAgICAgIC10IFwKLSAgICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIFwKLSAgICAgICAg
LWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVs
YXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCi11c2lu
ZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotVVNJTkcgQ0xJ
RU5UIEFVVEhFTlRJQ0FUSU9OCi09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVG8gcnVu
IHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRoIFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3Vw
cG9ydCwgcnVuIGl0IHdpdGgKLS0tdGxzLWNsaWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Eg
b3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVzIHJlcXVpcmVkIGZvcgotVExTIHN1cHBvcnQuCi0K
LUV4YW1wbGU6Ci0KLSAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0NDMgLXQgXAotICAgICAgICAtYyAuLi90ZXN0L2Nl
cnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotICAgICAgICAtLXRscy1jbGll
bnQtYXV0aCBcCi0gICAgICAgIC0tdGxzLWNsaWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBl
bQotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGll
bnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCi1yZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9v
dCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotQ09ORklHVVJBVElPTiBGSUxFCi09PT09PT09
PT09PT09PT09PT0KLQotWW91IGNhbiBhbHNvIHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFu
ZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUgcGF0aCB0bwotdGhlIGNvbmZpZ3VyYXRpb24gZmls
ZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFzZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQot
Zm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxp
YnJhcnkuIE5hbWUgb2YgZWFjaAotZW50cnkgbXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3Vt
ZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBsZXZlbCB0byBkZWJ1ZywKLWFkZCB0aGUgZm9sbG93
aW5nIGxpbmU6Ci0KLWxvZ19sZXZlbD1kZWJ1ZwotCi1Gb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0
IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29tZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgotLS10bHMg
b3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lOgotCi10bHM9VHJ1ZQotCi1Ob3RlIHRoYXQg
dGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlmIHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZh
bHVlIHBhcnQgaXMKLWZha2UuCi0KLVdoZW4gYm90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBh
bmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50cnkgYXJlIHNldCBmb3IKLXRoZSBzYW1lIGNvbmZp
Z3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQgbGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBp
biB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZS4KLQotCi1USFJFQURJTkcKLT09PT09PT09PQotCi1U
aGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20gc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLiBI
ZW5jZSBhIHRocmVhZCBpcwotdXNlZCBmb3IgZWFjaCByZXF1ZXN0LgotCi0KLVNFQ1VSSVRZIFdB
Uk5JTkcKLT09PT09PT09PT09PT09PT0KLQotVGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENH
SUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4KLUl0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRo
b24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFtcy4gSXQgc2hvdWxkIG5vdCBiZQotdXNlZCBvdXRz
aWRlIGEgZmlyZXdhbGwuCi0iIiIKLQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQU2Vy
dmVyCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgQ0dJSFRUUFNlcnZlcgotZnJvbSBzaXgubW92ZXMg
aW1wb3J0IFNpbXBsZUhUVFBTZXJ2ZXIKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBzb2NrZXRzZXJ2
ZXIKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBjb25maWdwYXJzZXIKLWltcG9ydCBiYXNlNjQKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudAotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBs
b2dnaW5nLmhhbmRsZXJzCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1p
bXBvcnQgc2VsZWN0Ci1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5n
Ci1pbXBvcnQgdGltZQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgotCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlz
cGF0Y2gKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgbWVtb3JpemluZ2ZpbGUKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1m
cm9tIG1vZF9weXdlYnNvY2tldC54aHJfYmVuY2htYXJrX2hhbmRsZXIgaW1wb3J0IFhIUkJlbmNo
bWFya0hhbmRsZXIKLQotCi1fREVGQVVMVF9MT0dfTUFYX0JZVEVTID0gMTAyNCAqIDI1NgotX0RF
RkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUKLQotX0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpF
ID0gMTI4Ci0KLSMgMTAyNCBpcyBwcmFjdGljYWxseSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBX
ZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgotX01BWF9NRU1PUklaRURfTElORVMgPSAxMDI0Ci0K
LSMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZX1NUQU5EQVJE
X01PRFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wnCi0KLQotY2xh
c3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9iamVjdCk6Ci0gICAgIiIiTWltaWMgbW9kX3B5dGhv
biBtcF9jb25uLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlcik6
Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGluc3Rh
bmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1
ZXN0X2hhbmRsZXIKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLQotICAgICAgICByZXR1cm4g
KHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKLSAgICBsb2NhbF9h
ZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRy
KHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4K
LQotICAgICAgICBTZXR0aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJl
Y2F1c2UgdGhlIHJlcXVlc3QKLSAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0
IHRoZXJlLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50
X2FkZHJlc3MKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQot
ICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiTWltaWMgbXBfY29ubi53cml0
ZSgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIud2ZpbGUud3Jp
dGUoZGF0YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk1pbWlj
IG1wX2Nvbm4ucmVhZCgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIucmZpbGUucmVhZChsZW5ndGgpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxm
KToKLSAgICAgICAgIiIiR2V0IG1lbW9yaXplZCBsaW5lcy4iIiIKLQotICAgICAgICByZXR1cm4g
c2VsZi5fcmVxdWVzdF9oYW5kbGVyLnJmaWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQotCi0KLWNs
YXNzIF9TdGFuZGFsb25lUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1pbWljIG1vZF9weXRob24g
cmVxdWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVz
ZV90bHMpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxl
ciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0g
cmVxdWVzdF9oYW5kbGVyCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29u
bmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCi0gICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxz
Ci0gICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCi0KLSAg
ICBkZWYgZ2V0X3VyaShzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3Qu
dXJpLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBS
ZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQotICAgICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1
cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9uCi0gICAgICAgIHJl
dHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRlciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBi
ZWhhdmlvciBpcwotICAgICAgICBrZXB0IGZvciBjb21wYXRpYmlsaXR5LgotICAgICAgICAiIiIK
LQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1cmkgPSBw
cm9wZXJ0eShnZXRfdXJpKQotCi0gICAgZGVmIGdldF91bnBhcnNlZF91cmkoc2VsZik6Ci0gICAg
ICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVucGFyc2VkX3VyaS4iIiIKLQotICAgICAg
ICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1bnBhcnNlZF91cmkgPSBw
cm9wZXJ0eShnZXRfdW5wYXJzZWRfdXJpKQotCi0gICAgZGVmIGdldF9tZXRob2Qoc2VsZik6Ci0g
ICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIKLQotICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKLSAgICBtZXRob2QgPSBwcm9wZXJ0
eShnZXRfbWV0aG9kKQotCi0gICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKLSAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIHJlcXVlc3QucHJvdG9jb2wuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNl
bGYuX3JlcXVlc3RfaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24KLSAgICBwcm90b2NvbCA9IHByb3Bl
cnR5KGdldF9wcm90b2NvbCkKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIi
TWltaWMgcmVxdWVzdC5pc19odHRwcygpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl91c2Vf
dGxzCi0KLQotZGVmIF9pbXBvcnRfc3NsKCk6Ci0gICAgZ2xvYmFsIHNzbAotICAgIHRyeToKLSAg
ICAgICAgaW1wb3J0IHNzbAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9pbXBvcnRfcHlvcGVuc3NsKCk6
Ci0gICAgZ2xvYmFsIE9wZW5TU0wKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBPcGVuU1NMLlNT
TAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAg
cmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uKG9iamVjdCk6
Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0aW9uIHRvCi0g
ICAgLSBwcm92aWRlIG1ha2VmaWxlIG1ldGhvZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo
ZSBjbGFzcwotICAgIC0gdHdlYWsgc2h1dGRvd24gbWV0aG9kIHNpbmNlIE9wZW5TU0wuU1NMLkNv
bm5lY3Rpb24uc2h1dGRvd24gZG9lc24ndAotICAgICAgYWNjZXB0IHRoZSAiaG93IiBhcmd1bWVu
dC4KLSAgICAtIGNvbnZlcnQgU3lzQ2FsbEVycm9yIGV4Y2VwdGlvbnMgdGhhdCBpdHMgcmVjdiBt
ZXRob2QgbWF5IHJhaXNlIGludG8gYQotICAgICAgcmV0dXJuIHZhbHVlIG9mICcnLCBtZWFuaW5n
IEVPRi4gV2UgY2Fubm90IG92ZXJ3cml0ZSB0aGUgcmVjdiBtZXRob2Qgb24KLSAgICAgIHNlbGYu
X2Nvbm5lY3Rpb24gc2luY2UgaXQncyBpbW11dGFibGUuCi0gICAgIiIiCi0KLSAgICBfT1ZFUlJJ
RERFTl9BVFRSSUJVVEVTID0gWydfY29ubmVjdGlvbicsICdtYWtlZmlsZScsICdzaHV0ZG93bics
ICdyZWN2J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uKToKLSAgICAgICAg
c2VsZi5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLQotICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9f
KHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluIF9TdGFuZGFsb25lU1NMQ29ubmVjdGlv
bi5fT1ZFUlJJRERFTl9BVFRSSUJVVEVTOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dl
dGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9u
Ll9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1l
LCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9P
VkVSUklEREVOX0FUVFJJQlVURVM6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0
cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5f
X3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKLQotICAgIGRlZiBtYWtlZmlsZShzZWxmLCBtb2RlPSdy
JywgYnVmc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzb2NrZXQuX2ZpbGVvYmplY3Qoc2VsZiwg
bW9kZSwgYnVmc2l6ZSkKLQotICAgIGRlZiBzaHV0ZG93bihzZWxmLCB1bnVzZWRfaG93KToKLSAg
ICAgICAgc2VsZi5fY29ubmVjdGlvbi5zaHV0ZG93bigpCi0KLSAgICBkZWYgcmVjdihzZWxmLCBi
dWZzaXplLCBmbGFncz0wKToKLSAgICAgICAgaWYgZmxhZ3MgIT0gMDoKLSAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ05vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkJykKLQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5yZWN2KGJ1ZnNpemUpCi0g
ICAgICAgIGV4Y2VwdCBPcGVuU1NMLlNTTC5TeXNDYWxsRXJyb3IgYXMgZToKLSAgICAgICAgICAg
IGlmIGUuYXJnc1swXSA9PSAtMToKLSAgICAgICAgICAgICAgICAjIFN1cHByZXNzICJ1bmV4cGVj
dGVkIEVPRiIgZXhjZXB0aW9uLiBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQKLSAgICAgICAgICAg
ICAgICAjIGZvciBTU0xfZ2V0X2Vycm9yLgotICAgICAgICAgICAgICAgIHJldHVybiAnJwotICAg
ICAgICAgICAgcmFpc2UKLQotCi1kZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNv
Y2tfaGFuZGxlcnNfbWFwX2ZpbGUpOgotICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3
ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KLQotICAgIEFyZ3M6Ci0gICAg
ICAgIGRpc3BhdGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKLSAgICAgICAgd2Vi
c29ja19oYW5kbGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQotICAgICIiIgotCi0gICAgZnAg
PSBvcGVuKHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpCi0gICAgdHJ5OgotICAgICAgICBmb3Ig
bGluZSBpbiBmcDoKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gJyMnIG9yIGxpbmUuaXNzcGFj
ZSgpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gcmUubWF0Y2go
cicoXFMrKVxzKyhcUyspJywgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAg
ICAgICAgIGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5l
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAgICAg
ICAgICAgbS5ncm91cCgxKSwgbS5ncm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Io
c3RyKGUpKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGZwLmNsb3NlKCkKLQotCi1jbGFzcyBXZWJT
b2NrZXRTZXJ2ZXIoc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5I
VFRQU2VydmVyKToKLSAgICAiIiJIVFRQU2VydmVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQu
IiIiCi0KLSAgICAjIE92ZXJyaWRlcyBzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4uZGFlbW9u
X3RocmVhZHMKLSAgICBkYWVtb25fdGhyZWFkcyA9IFRydWUKLSAgICAjIE92ZXJyaWRlcyBCYXNl
SFRUUFNlcnZlci5IVFRQU2VydmVyLmFsbG93X3JldXNlX2FkZHJlc3MKLSAgICBhbGxvd19yZXVz
ZV9hZGRyZXNzID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAg
ICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fIHRvIHNldCBT
U0wgZW5hYmxlZAotICAgICAgICBzb2NrZXQgb2JqZWN0IHRvIHNlbGYuc29ja2V0IGJlZm9yZSBz
ZXJ2ZXJfYmluZCBhbmQgc2VydmVyX2FjdGl2YXRlLAotICAgICAgICBpZiBuZWNlc3NhcnkuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJlcXVlc3Qg
aGFuZGxlcnMgdG8gc2F2ZSB0aW1lIGZvcgotICAgICAgICAjIGluc3RhbnRpYXRpb24uICBEaXNw
YXRjaGVyIGNhbiBiZSBzaGFyZWQgYmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KLSAgICAgICAg
b3B0aW9ucy5kaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcigKLSAgICAgICAgICAgIG9w
dGlvbnMud2Vic29ja19oYW5kbGVycywKLSAgICAgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIsCi0g
ICAgICAgICAgICBvcHRpb25zLmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0gICAg
ICAgIGlmIG9wdGlvbnMud2Vic29ja19oYW5kbGVyc19tYXBfZmlsZToKLSAgICAgICAgICAgIF9h
bGlhc19oYW5kbGVycyhvcHRpb25zLmRpc3BhdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQotICAgICAgICB3YXJuaW5n
cyA9IG9wdGlvbnMuZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICBpZiB3YXJu
aW5nczoKLSAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAgICAgICAg
ICAgIGxvZ2dpbmcud2FybmluZygnV2FybmluZyBpbiBzb3VyY2UgbG9hZGluZzogJXMnICUgd2Fy
bmluZykKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2Vs
ZikKLQotICAgICAgICBzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSA9IG9wdGlvbnMucmVxdWVzdF9x
dWV1ZV9zaXplCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24gPSB0aHJlYWRpbmcuRXZl
bnQoKQotICAgICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IEZhbHNlCi0KLSAgICAgICAgc29ja2V0
c2VydmVyLkJhc2VTZXJ2ZXIuX19pbml0X18oCi0gICAgICAgICAgICBzZWxmLCAob3B0aW9ucy5z
ZXJ2ZXJfaG9zdCwgb3B0aW9ucy5wb3J0KSwgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIpCi0KLSAg
ICAgICAgIyBFeHBvc2UgdGhlIG9wdGlvbnMgb2JqZWN0IHRvIGFsbG93IGhhbmRsZXIgb2JqZWN0
cyBhY2Nlc3MgaXQuIFdlIG5hbWUKLSAgICAgICAgIyBpdCB3aXRoIHdlYnNvY2tldF8gcHJlZml4
IHRvIGF2b2lkIGNvbmZsaWN0LgotICAgICAgICBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9u
cyA9IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9jcmVhdGVfc29ja2V0cygpCi0gICAgICAgIHNl
bGYuc2VydmVyX2JpbmQoKQotICAgICAgICBzZWxmLnNlcnZlcl9hY3RpdmF0ZSgpCi0KLSAgICBk
ZWYgX2NyZWF0ZV9zb2NrZXRzKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLCBzZWxm
LnNlcnZlcl9wb3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzcwotICAgICAgICBzZWxmLl9zb2NrZXRz
ID0gW10KLSAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX25hbWU6Ci0gICAgICAgICAgICAjIE9u
IHBsYXRmb3JtcyB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBJUHY2LCB0aGUgZmlyc3QgYmluZCBmYWls
cy4KLSAgICAgICAgICAgICMgT24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSVB2NgotICAgICAg
ICAgICAgIyAtIElmIGl0IGJpbmRzIGJvdGggSVB2NCBhbmQgSVB2NiBvbiBjYWxsIHdpdGggQUZf
SU5FVDYsIHRoZQotICAgICAgICAgICAgIyAgIGZpcnN0IGJpbmQgc3VjY2VlZHMgYW5kIHRoZSBz
ZWNvbmQgZmFpbHMgKHdlJ2xsIHNlZSAnQWRkcmVzcwotICAgICAgICAgICAgIyAgIGFscmVhZHkg
aW4gdXNlJyBlcnJvcikuCi0gICAgICAgICAgICAjIC0gSWYgaXQgYmluZHMgb25seSBJUHY2IG9u
IGNhbGwgd2l0aCBBRl9JTkVUNiwgYm90aCBjYWxsIGFyZQotICAgICAgICAgICAgIyAgIGV4cGVj
dGVkIHRvIHN1Y2NlZWQgdG8gbGlzdGVuIGJvdGggcHJvdG9jb2wuCi0gICAgICAgICAgICBhZGRy
aW5mb19hcnJheSA9IFsKLSAgICAgICAgICAgICAgICAoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQu
U09DS19TVFJFQU0sICcnLCAnJywgJycpLAotICAgICAgICAgICAgICAgIChzb2NrZXQuQUZfSU5F
VCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycsICcnKV0KLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0LmdldGFkZHJpbmZvKHNlbGYuc2VydmVyX25h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc29ja2V0LkFGX1VOU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RPX1RDUCkKLSAgICAgICAg
Zm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICBmYW1p
bHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9IGFkZHJpbmZvCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc29ja2V0XyA9IHNvY2tldC5zb2NrZXQoZmFt
aWx5LCBzb2NrdHlwZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2Vs
Zi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25z
LnVzZV90bHM6Ci0gICAgICAgICAgICAgICAgIyBGb3IgdGhlIGNhc2Ugb2YgX0hBU19PUEVOX1NT
TCwgd2UgZG8gd3JhcHBlciBzZXR1cCBhZnRlcgotICAgICAgICAgICAgICAgICMgYWNjZXB0Lgot
ICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9T
VEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRs
c19jbGllbnRfYXV0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25z
LnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VS
VF9SRVFVSVJFRAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgICAgICAgICBz
b2NrZXRfID0gc3NsLndyYXBfc29ja2V0KHNvY2tldF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBrZXlmaWxlPXNlcnZlcl9vcHRpb25zLnByaXZhdGVfa2V5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgY2VydGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY2FfY2VydHM9c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jYSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jbGllbnRfY2VydF8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHNl
bGYuX3NvY2tldHMuYXBwZW5kKChzb2NrZXRfLCBhZGRyaW5mbykpCi0KLSAgICBkZWYgc2VydmVy
X2JpbmQoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIu
c2VydmVyX2JpbmQgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMgYmluZC4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgZmFpbGVkX3NvY2tldHMgPSBbXQotCi0gICAgICAgIGZvciBz
b2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5m
byA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdCaW5kIG9uOiAl
cicsIGFkZHJpbmZvKQotICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19yZXVzZV9hZGRyZXNzOgot
ICAgICAgICAgICAgICAgIHNvY2tldF8uc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29j
a2V0LlNPX1JFVVNFQUREUiwgMSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBz
b2NrZXRfLmJpbmQoc2VsZi5zZXJ2ZXJfYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBm
YWlsdXJlOiAlcicsIGUpCi0gICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0gICAgICAg
ICAgICAgICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCi0gICAgICAgICAgICBp
ZiBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdID09IDA6Ci0gICAgICAgICAgICAgICAgIyBUaGUgb3Bl
cmF0aW5nIHN5c3RlbSBhc3NpZ25zIHRoZSBhY3R1YWwgcG9ydCBudW1iZXIgZm9yIHBvcnQKLSAg
ICAgICAgICAgICAgICAjIG51bWJlciAwLiBUaGlzIGNhc2UsIHRoZSBzZWNvbmQgYW5kIGxhdGVy
IHNvY2tldHMgc2hvdWxkIHVzZQotICAgICAgICAgICAgICAgICMgdGhlIHNhbWUgcG9ydCBudW1i
ZXIuIEFsc28gc2VsZi5zZXJ2ZXJfcG9ydCBpcyByZXdyaXR0ZW4KLSAgICAgICAgICAgICAgICAj
IGJlY2F1c2UgaXQgaXMgZXhwb3J0ZWQsIGFuZCB3aWxsIGJlIHVzZWQgYnkgZXh0ZXJuYWwgY29k
ZS4KLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9hZGRyZXNzID0gKAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLCBzb2NrZXRfLmdldHNvY2tuYW1lKClbMV0pCi0gICAg
ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbMV0KLSAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUG9ydCAlciBpcyBhc3NpZ25lZCcsIHNl
bGYuc2VydmVyX3BvcnQpCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tl
dHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAg
ZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgc29ja2V0c2Vy
dmVyLlRDUFNlcnZlci5zZXJ2ZXJfYWN0aXZhdGUgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAg
IHNvY2tldHMgbGlzdGVuLgotICAgICAgICAiIiIKLQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9
IFtdCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAg
ICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJ0xpc3RlbiBvbjogJXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBzb2NrZXRfLmxpc3RlbihzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSkKLSAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCi0gICAgICAgICAgICAgICAgc29j
a2V0Xy5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tl
dGluZm8pCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6Ci0gICAg
ICAgICAgICBzZWxmLl9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAgICAgIGlmIGxl
bihzZWxmLl9zb2NrZXRzKSA9PSAwOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2Fs
KAotICAgICAgICAgICAgICAgICdObyBzb2NrZXRzIGFjdGl2YXRlZC4gVXNlIGluZm8gbG9nIGxl
dmVsIHRvIHNlZSB0aGUgcmVhc29uLicpCi0KLSAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgot
ICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9jbG9zZSB0
byBlbmFibGUgbXVsdGlwbGUKLSAgICAgICAgc29ja2V0cyBjbG9zZS4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNv
Y2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmlu
Zm8oJ0Nsb3NlIG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgp
Ci0KLSAgICBkZWYgZmlsZW5vKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2
ZXIuVENQU2VydmVyLmZpbGVuby4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuY3JpdGljYWwo
J05vdCBzdXBwb3J0ZWQ6IGZpbGVubycpCi0gICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXRzWzBd
WzBdLmZpbGVubygpCi0KLSAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVu
dF9hZGRyZXNzKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgc29ja2V0c2VydmVyLmhhbmRsZV9lcnJv
ci4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZXJyb3IoCi0gICAgICAgICAgICAnRXhjZXB0
aW9uIGluIHByb2Nlc3NpbmcgcmVxdWVzdCBmcm9tOiAlclxuJXMnLAotICAgICAgICAgICAgY2xp
ZW50X2FkZHJlc3MsCi0gICAgICAgICAgICB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgICAg
ICAjIE5vdGU6IGNsaWVudF9hZGRyZXNzIGlzIGEgdHVwbGUuCi0KLSAgICBkZWYgZ2V0X3JlcXVl
c3Qoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFRDUFNlcnZlci5nZXRfcmVxdWVzdCB0byB3
cmFwIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24KLSAgICAgICAgb2JqZWN0IHdpdGggX1N0YW5kYWxv
bmVTU0xDb25uZWN0aW9uIHRvIHByb3ZpZGUgbWFrZWZpbGUgbWV0aG9kLiBXZQotICAgICAgICBj
YW5ub3Qgc3Vic3RpdHV0ZSBPcGVuU1NMLlNTTC5Db25uZWN0aW9uLm1ha2VmaWxlIHNpbmNlIGl0
J3MgcmVhZG9ubHkKLSAgICAgICAgYXR0cmlidXRlLgotICAgICAgICAiIiIKLQotICAgICAgICBh
Y2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKLQot
ICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0g
ICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVzZV90bHM6Ci0gICAgICAgICAgICBpZiBzZXJ2ZXJf
b3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfU1RBTkRBUkRfTU9EVUxFOgotICAgICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmRvX2hhbmRz
aGFrZSgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVyJywgZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmFpc2UKLQotICAgICAgICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4gSGFu
ZHNoYWtlIGlzIGRvbmUgb24gYWNjZXB0LgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2lwaGVyOiAlcycsIGFjY2VwdGVkX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5nZXRwZWVyY2VydCgpKQotICAg
ICAgICAgICAgZWxpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVO
U1NMOgotICAgICAgICAgICAgICAgICMgV2UgY2Fubm90IHByaW50IHRoZSBjaXBoZXIgaW4gdXNl
LiBweU9wZW5TU0wgZG9lc24ndCBwcm92aWRlCi0gICAgICAgICAgICAgICAgIyBhbnkgbWV0aG9k
IHRvIGZldGNoIHRoYXQuCi0KLSAgICAgICAgICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5Db250
ZXh0KE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QpCi0gICAgICAgICAgICAgICAgY3R4LnVzZV9w
cml2YXRla2V5X2ZpbGUoc2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXkpCi0gICAgICAgICAgICAg
ICAgY3R4LnVzZV9jZXJ0aWZpY2F0ZV9maWxlKHNlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRlKQot
Ci0gICAgICAgICAgICAgICAgZGVmIGRlZmF1bHRfY2FsbGJhY2soY29ubiwgY2VydCwgZXJybnVt
LCBlcnJkZXB0aCwgb2spOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2sgPT0gMQotCi0g
ICAgICAgICAgICAgICAgIyBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQgZm9yIFNTTF9DVFhfc2V0
X3ZlcmlmeS4KLSAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2F1
dGg6Ci0gICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlID0gT3BlblNTTC5TU0wuVkVSSUZZ
X1BFRVIKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9vcHRpb25zLnRsc19jbGll
bnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlIHw9
IE9wZW5TU0wuU1NMLlZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVAotICAgICAgICAgICAgICAg
ICAgICBjdHguc2V0X3ZlcmlmeSh2ZXJpZnlfbW9kZSwgZGVmYXVsdF9jYWxsYmFjaykKLSAgICAg
ICAgICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzZXJ2ZXJfb3B0aW9ucy50
bHNfY2xpZW50X2NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vbmUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY3R4
LnNldF92ZXJpZnkoT3BlblNTTC5TU0wuVkVSSUZZX05PTkUsIGRlZmF1bHRfY2FsbGJhY2spCi0K
LSAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBPcGVuU1NMLlNTTC5Db25uZWN0aW9u
KGN0eCwgYWNjZXB0ZWRfc29ja2V0KQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5z
ZXRfYWNjZXB0X3N0YXRlKCkKLQotICAgICAgICAgICAgICAgICMgQ29udmVydCBTU0wgcmVsYXRl
ZCBlcnJvciBpbnRvIHNvY2tldC5lcnJvciBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBTb2Nr
ZXRTZXJ2ZXIgaWdub3JlcyB0aGVtIGFuZCBrZWVwcyBydW5uaW5nLgotICAgICAgICAgICAgICAg
ICMKLSAgICAgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBDb252ZXJ0IGFsbCBraW5kcyBv
ZiBlcnJvcnMuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBhY2Nl
cHRlZF9zb2NrZXQuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT3BlblNT
TC5TU0wuRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgIyBTZXQgZXJybm8gcGFydCB0
byAxIChTU0xfRVJST1JfU1NMKSBsaWtlIHRoZSBzc2wgbW9kdWxlCi0gICAgICAgICAgICAgICAg
ICAgICMgZG9lcy4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcics
IGUpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcigxLCAnJXInICUgZSkK
LSAgICAgICAgICAgICAgICBjZXJ0ID0gYWNjZXB0ZWRfc29ja2V0LmdldF9wZWVyX2NlcnRpZmlj
YXRlKCkKLSAgICAgICAgICAgICAgICBpZiBjZXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0IHN1YmplY3Q6ICVyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQuZ2V0X3N1YmplY3QoKS5n
ZXRfY29tcG9uZW50cygpKQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IF9TdGFu
ZGFsb25lU1NMQ29ubmVjdGlvbihhY2NlcHRlZF9zb2NrZXQpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBp
cyBhdmFpbGFibGUnKQotCi0gICAgICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9h
ZGRyZXNzCi0KLSAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6
Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2
ZXIuIiIiCi0KLSAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBUcnVlCi0gICAgICAgIHNlbGYu
X193c19pc19zaHV0X2Rvd24uY2xlYXIoKQotICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYu
aGFuZGxlX3JlcXVlc3QKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hhbmRsZV9yZXF1ZXN0
X25vYmxvY2snKToKLSAgICAgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5faGFuZGxlX3Jl
cXVlc3Rfbm9ibG9jawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndh
cm5pbmcoJ0ZhbGxiYWNrIHRvIGJsb2NraW5nIHJlcXVlc3QgaGFuZGxlcicpCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuX193c19zZXJ2aW5nOgotICAgICAgICAgICAgICAg
IHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KAotICAgICAgICAgICAgICAgICAgICBbc29ja2V0X1sw
XSBmb3Igc29ja2V0XyBpbiBzZWxmLl9zb2NrZXRzXSwKLSAgICAgICAgICAgICAgICAgICAgW10s
IFtdLCBwb2xsX2ludGVydmFsKQotICAgICAgICAgICAgICAgIGZvciBzb2NrZXRfIGluIHI6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0XwotICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVfcmVxdWVzdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25l
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLnNl
dCgpCi0KLSAgICBkZWYgc2h1dGRvd24oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tl
dHNlcnZlci5CYXNlU2VydmVyLnNodXRkb3duLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2
aW5nID0gRmFsc2UKLSAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi53YWl0KCkKLQotCi1j
bGFzcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0
SGFuZGxlcik6Ci0gICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBX
ZWJTb2NrZXQuIiIiCi0KLSAgICAjIFVzZSBodHRwX2NsaWVudC5IVFRQTWVzc2FnZSBpbnN0ZWFk
IG9mIG1pbWV0b29scy5NZXNzYWdlLgotICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHBfY2xpZW50LkhU
VFBNZXNzYWdlCi0KLSAgICBwcm90b2NvbF92ZXJzaW9uID0gIkhUVFAvMS4xIgotCi0gICAgZGVm
IHNldHVwKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVx
dWVzdEhhbmRsZXIuc2V0dXAgdG8gd3JhcCByZmlsZQotICAgICAgICB3aXRoIE1lbW9yaXppbmdG
aWxlLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJ5IEJhc2VSZXF1ZXN0
SGFuZGxlcidzIGNvbnN0cnVjdG9yCi0gICAgICAgIGJlZm9yZSBjYWxsaW5nIEJhc2VIVFRQUmVx
dWVzdEhhbmRsZXIuaGFuZGxlLgotICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRs
ZSB3aWxsIGNhbGwKLSAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3Jl
cXVlc3QgYW5kIGl0IHdpbGwgY2FsbAotICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5w
YXJzZV9yZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICAjIENhbGwgc3VwZXJjbGFzcydz
IHNldHVwIHRvIHByZXBhcmUgcmZpbGUsIHdmaWxlLCBldGMuIFNlZSBzZXR1cAotICAgICAgICAj
IGRlZmluaXRpb24gb24gdGhlIHJvb3QgY2xhc3Mgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RI
YW5kbGVyIHRvCi0gICAgICAgICMgdW5kZXJzdGFuZCB3aGF0IHRoaXMgZG9lcy4KLSAgICAgICAg
Q0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuc2V0dXAoc2VsZikKLQotICAgICAg
ICBzZWxmLnJmaWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCi0gICAgICAgICAg
ICBzZWxmLnJmaWxlLAotICAgICAgICAgICAgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9S
SVpFRF9MSU5FUykKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRk
cmVzcywgc2VydmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9n
Z2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2Vy
dmVyX29wdGlvbnMKLQotICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhh
bmRsZXIuY2dpX2RpcmVjdG9yaWVzLgotICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNl
bGYuX29wdGlvbnMuY2dpX2RpcmVjdG9yaWVzCi0gICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVx
dWVzdEhhbmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCi0gICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmlz
X2V4ZWN1dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCi0KLSAgICAg
ICAgIyBUaGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KLSAg
ICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oCi0gICAg
ICAgICAgICBzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VydmVyKQotCi0gICAgZGVm
IHBhcnNlX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVy
LkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KLQotICAgICAgICBSZXR1cm4g
VHJ1ZSB0byBjb250aW51ZSBwcm9jZXNzaW5nIGZvciBIVFRQKFMpLCBGYWxzZSBvdGhlcndpc2Uu
Ci0KLSAgICAgICAgU2VlIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0
IG1ldGhvZCB3aGljaCBjYWxscwotICAgICAgICB0aGlzIG1ldGhvZCB0byB1bmRlcnN0YW5kIGhv
dyB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgIyBXZSBob29rIHBhcnNlX3JlcXVlc3QgbWV0aG9kLCBidXQgYWxzbyBjYWxsIHRoZSBvcmln
aW5hbAotICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0IHNpbmNl
IHdoZW4gd2UgcmV0dXJuIEZhbHNlLAotICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5o
YW5kbGVfb25lX3JlcXVlc3QgY29udGludWVzIHByb2Nlc3NpbmcgYW5kCi0gICAgICAgICMgaXQg
bmVlZHMgdmFyaWFibGVzIHNldCBieSBDR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVz
dC4KLSAgICAgICAgIwotICAgICAgICAjIFZhcmlhYmxlcyBzZXQgYnkgdGhpcyBtZXRob2Qgd2ls
bCBiZSBhbHNvIHVzZWQgYnkgV2ViU29ja2V0IHJlcXVlc3QKLSAgICAgICAgIyBoYW5kbGluZyAo
c2VsZi5wYXRoLCBzZWxmLmNvbW1hbmQsIHNlbGYucmVxdWVzdGxpbmUsIGV0Yy4gU2VlIGFsc28K
LSAgICAgICAgIyBob3cgX1N0YW5kYWxvbmVSZXF1ZXN0J3MgbWVtYmVycyBhcmUgaW1wbGVtZW50
ZWQgdXNpbmcgdGhlc2UKLSAgICAgICAgIyBhdHRyaWJ1dGVzKS4KLSAgICAgICAgaWYgbm90IENH
SUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qoc2VsZik6Ci0g
ICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gIkNP
Tk5FQ1QiOgotICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCwgIkNvbm5lY3RlZCIp
Ci0gICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb25uZWN0aW9uIiwgImtlZXAtYWxpdmUi
KQotICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCi0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9iYXNpY19hdXRoOgotICAgICAgICAg
ICAgYXV0aCA9IHNlbGYuaGVhZGVycy5nZXRoZWFkZXIoJ0F1dGhvcml6YXRpb24nKQotICAgICAg
ICAgICAgaWYgYXV0aCAhPSBzZWxmLl9vcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbDoKLSAg
ICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNDAxKQotICAgICAgICAgICAgICAgIHNl
bGYuc2VuZF9oZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGUnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0Jhc2ljIHJlYWxtPSJQeXdlYnNvY2tldCInKQotICAgICAgICAgICAgICAg
IHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdS
ZXF1ZXN0IGJhc2ljIGF1dGhlbnRpY2F0aW9uJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICAjIFNwZWNpYWwgcGF0aHMgZm9yIFhNTEh0dHBSZXF1ZXN0IGJlbmNobWFy
awotICAgICAgICB4aHJfYmVuY2htYXJrX2hlbHBlcl9wcmVmaXggPSAnLzA3M2JlMDAxZTEwOTUw
NjkyY2NiZjNhMmFkMjFjMjQ1JwotICAgICAgICBwYXJzZWRfcGF0aCA9IHVybGxpYi5wYXJzZS51
cmxzcGxpdChzZWxmLnBhdGgpCi0gICAgICAgIGlmIHBhcnNlZF9wYXRoLnBhdGggPT0gKHhocl9i
ZW5jaG1hcmtfaGVscGVyX3ByZWZpeCArICdfc2VuZCcpOgotICAgICAgICAgICAgeGhyX2JlbmNo
bWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxm
LmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJfYmVuY2ht
YXJrX2hhbmRsZXIuZG9fc2VuZCgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAg
aWYgcGFyc2VkX3BhdGgucGF0aCA9PSAoeGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ICsgJ19y
ZWNlaXZlJyk6Ci0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIgPSBYSFJCZW5jaG1h
cmtIYW5kbGVyKAotICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVycywgc2VsZi5yZmlsZSwgc2Vs
Zi53ZmlsZSkKLSAgICAgICAgICAgIHhocl9iZW5jaG1hcmtfaGFuZGxlci5kb19yZWNlaXZlX2Fu
ZF9wYXJzZSgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcGFyc2VkX3Bh
dGgucGF0aCA9PSAoeGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ19yZWNlaXZlX2dldG5vY2FjaGUnKToKLSAgICAgICAgICAgIHho
cl9iZW5jaG1hcmtfaGFuZGxlciA9IFhIUkJlbmNobWFya0hhbmRsZXIoCi0gICAgICAgICAgICAg
ICAgc2VsZi5oZWFkZXJzLCBzZWxmLnJmaWxlLCBzZWxmLndmaWxlKQotICAgICAgICAgICAgeGhy
X2JlbmNobWFya19oYW5kbGVyLmRvX3JlY2VpdmUoCi0gICAgICAgICAgICAgICAgaW50KHBhcnNl
ZF9wYXRoLnF1ZXJ5KSwgRmFsc2UsIEZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgIGlmIHBhcnNlZF9wYXRoLnBhdGggPT0gKHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZp
eCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfcmVjZWl2ZV9nZXRjYWNoZScp
OgotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxl
cigKLSAgICAgICAgICAgICAgICBzZWxmLmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUp
Ci0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIuZG9fcmVjZWl2ZSgKLSAgICAgICAg
ICAgICAgICBpbnQocGFyc2VkX3BhdGgucXVlcnkpLCBGYWxzZSwgVHJ1ZSkKLSAgICAgICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFk
ZXJfdXRpbC5wYXJzZV91cmkoc2VsZi5wYXRoKQotICAgICAgICBpZiByZXNvdXJjZSBpcyBOb25l
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ludmFsaWQgVVJJOiAlcicsIHNlbGYu
cGF0aCkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQ
UmVxdWVzdEhhbmRsZXInKQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VydmVy
X29wdGlvbnMgPSBzZWxmLnNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAg
aWYgaG9zdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHZhbGlkYXRpb25faG9zdCA9IHNlcnZl
cl9vcHRpb25zLnZhbGlkYXRpb25faG9zdAotICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9ob3N0
IGlzIG5vdCBOb25lIGFuZCBob3N0ICE9IHZhbGlkYXRpb25faG9zdDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBob3N0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25fcG9ydAot
ICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBwb3J0ICE9IHZh
bGlkYXRpb25fcG9ydDoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxp
ZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9u
X3BvcnQpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENH
SUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAg
ICAgc2VsZi5wYXRoID0gcmVzb3VyY2UKLQotICAgICAgICByZXF1ZXN0ID0gX1N0YW5kYWxvbmVS
ZXF1ZXN0KHNlbGYsIHNlbGYuX29wdGlvbnMudXNlX3RscykKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBh
dGhzIGZvciB3aGljaAotICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFuZGxl
cnMuCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLmdldF9oYW5k
bGVyX3N1aXRlKHNlbGYucGF0aCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J05vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5wYXRoKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdG
YWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlCi0gICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Rpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6
ICVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihlLnN0YXR1cykKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICMgSWYgYW55IEV4Y2VwdGlvbnMgd2l0aG91dCBl
eGNlcHQgY2xhdXNlIHNldHVwIChpbmNsdWRpbmcKLSAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlv
bikgaXMgcmFpc2VkIGJlbG93IHRoaXMgcG9pbnQsIGl0IHdpbGwgYmUgY2F1Z2h0Ci0gICAgICAg
ICMgYW5kIGxvZ2dlZCBieSBXZWJTb2NrZXRTZXJ2ZXIuCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5kb19oYW5kc2hha2UoCi0gICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuZGlzcGF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgYWxsb3dEcmFmdDc1PXNlbGYuX29w
dGlvbnMuYWxsb3dfZHJhZnQ3NSwKLSAgICAgICAgICAgICAgICAgICAgc3RyaWN0PXNlbGYuX29w
dGlvbnMuc3RyaWN0KQotICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBm
YWlsZWQgZm9yIHZlcnNpb24gZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNl
bmRfcmVzcG9uc2UoY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAg
ICAgIHNlbGYuc2VuZF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN1cHBvcnRlZF92ZXJzaW9ucykK
LSAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9u
IGFzIGU6Ci0gICAgICAgICAgICAgICAgIyBIYW5kc2hha2UgZm9yIHdzKHMpIGZhaWxlZC4KLSAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJy
b3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoZS5zdGF0dXMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIHJlcXVlc3QuX2Rpc3Bh
dGNoZXIgPSBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIKLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBoYW5k
c2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJ0Fib3J0ZWQ6ICVzJywgZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBk
ZWYgbG9nX3JlcXVlc3Qoc2VsZiwgY29kZT0nLScsIHNpemU9Jy0nKToKLSAgICAgICAgIiIiT3Zl
cnJpZGUgQmFzZUhUVFBTZXJ2ZXIubG9nX3JlcXVlc3QuIiIiCi0KLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJyIlcyIgJXMgJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJl
cXVlc3RsaW5lLCBzdHIoY29kZSksIHN0cihzaXplKSkKLQotICAgIGRlZiBsb2dfZXJyb3Ioc2Vs
ZiwgKmFyZ3MpOgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfZXJyb3Iu
IiIiCi0KLSAgICAgICAgIyBEZXNwaXRlIHRoZSBuYW1lLCB0aGlzIG1ldGhvZCBpcyBmb3Igd2Fy
bmluZ3MgdGhhbiBmb3IgZXJyb3JzLgotICAgICAgICAjIEZvciBleGFtcGxlLCBIVFRQIHN0YXR1
cyBjb2RlIGlzIGxvZ2dlZCBieSB0aGlzIG1ldGhvZC4KLSAgICAgICAgc2VsZi5fbG9nZ2VyLndh
cm5pbmcoJyVzIC0gJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZHJl
c3Nfc3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gJSBhcmdz
WzE6XSkKLQotICAgIGRlZiBpc19jZ2koc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2hldGhlciBz
ZWxmLnBhdGggY29ycmVzcG9uZHMgdG8gYSBDR0kgc2NyaXB0LgotCi0gICAgICAgIEFkZCBleHRy
YSBjaGVjayB0aGF0IHNlbGYucGF0aCBkb2Vzbid0IGNvbnRhaW5zIC4uCi0gICAgICAgIEFsc28g
Y2hlY2sgaWYgdGhlIGZpbGUgaXMgYSBleGVjdXRhYmxlIGZpbGUgb3Igbm90LgotICAgICAgICBJ
ZiB0aGUgZmlsZSBpcyBub3QgZXhlY3V0YWJsZSwgaXQgaXMgaGFuZGxlZCBhcyBzdGF0aWMgZmls
ZSBvciBkaXIKLSAgICAgICAgcmF0aGVyIHRoYW4gYSBDR0kgc2NyaXB0LgotICAgICAgICAiIiIK
LQotICAgICAgICBpZiBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5pc19jZ2ko
c2VsZik6Ci0gICAgICAgICAgICBpZiAnLi4nIGluIHNlbGYucGF0aDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICMgc3RyaXAgcXVlcnkgcGFyYW1ldGVyIGZyb20g
cmVxdWVzdCBwYXRoCi0gICAgICAgICAgICByZXNvdXJjZV9uYW1lID0gc2VsZi5wYXRoLnNwbGl0
KCc/JywgMilbMF0KLSAgICAgICAgICAgICMgY29udmVydCByZXNvdXJjZV9uYW1lIGludG8gcmVh
bCBwYXRoIG5hbWUgaW4gZmlsZXN5c3RlbS4KLSAgICAgICAgICAgIHNjcmlwdGZpbGUgPSBzZWxm
LnRyYW5zbGF0ZV9wYXRoKHJlc291cmNlX25hbWUpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0
aC5pc2ZpbGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5pc19leGVjdXRhYmxlKHNjcmlwdGZpbGUpOgotICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLQotZGVmIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3MoYyk6Ci0gICAgcmV0dXJu
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4lcycgJSAoYy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkK
LQotCi1kZWYgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpOgotICAgIGxvZ2dpbmcuYWRkTGV2
ZWxOYW1lKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRklORScpCi0KLSAgICBsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcigpCi0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1l
KG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQotICAgIGlmIG9wdGlvbnMubG9nX2ZpbGU6Ci0g
ICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCi0g
ICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dfZmlsZSwgJ2EnLCBvcHRpb25zLmxvZ19tYXgsIG9w
dGlvbnMubG9nX2NvdW50KQotICAgIGVsc2U6Ci0gICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0
cmVhbUhhbmRsZXIoKQotICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAgICAg
ICAgICAgJ1slKGFzY3RpbWUpc10gWyUobGV2ZWxuYW1lKXNdICUobmFtZSlzOiAlKG1lc3NhZ2Up
cycpCi0gICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGxvZ2dlci5hZGRI
YW5kbGVyKGhhbmRsZXIpCi0KLSAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lID0gbG9nZ2luZy5n
ZXRMZXZlbE5hbWUoCi0gICAgICAgIG9wdGlvbnMuZGVmbGF0ZV9sb2dfbGV2ZWwudXBwZXIoKSkK
LSAgICBfZ2V0X2xvZ2dlcl9mcm9tX2NsYXNzKHV0aWwuX0RlZmxhdGVyKS5zZXRMZXZlbCgKLSAg
ICAgICAgZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKLSAgICBfZ2V0X2xvZ2dlcl9mcm9tX2NsYXNz
KHV0aWwuX0luZmxhdGVyKS5zZXRMZXZlbCgKLSAgICAgICAgZGVmbGF0ZV9sb2dfbGV2ZWxfbmFt
ZSkKLQotCi1kZWYgX2J1aWxkX29wdGlvbl9wYXJzZXIoKToKLSAgICBwYXJzZXIgPSBvcHRwYXJz
ZS5PcHRpb25QYXJzZXIoKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tY29uZmlnJywgZGVz
dD0nY29uZmlnX2ZpbGUnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1
cmF0aW9uIGZpbGUuIFNlZSB0aGUgZmlsZSBjb21tZW50ICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZSBmb3JtYXQnKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLUgnLCAnLS1zZXJ2ZXItaG9zdCcsICctLXNlcnZlcl9ob3N0JywKLSAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD0nJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5h
bWUgdG8gbGlzdGVuIHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLVYnLCAnLS12YWxpZGF0
aW9uLWhvc3QnLCAnLS12YWxpZGF0aW9uX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3ZhbGlkYXRpb25faG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBob3N0bmFtZSB0byB2YWxpZGF0
ZSBpbiBhYnNvbHV0ZSBwYXRoLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcG9y
dCcsIGRlc3Q9J3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9Y29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J3BvcnQgdG8gbGlzdGVuIHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLVAnLCAn
LS12YWxpZGF0aW9uLXBvcnQnLCAnLS12YWxpZGF0aW9uX3BvcnQnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZl
ciBwb3J0IHRvIHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLXcnLCAnLS13ZWJzb2NrLWhhbmRsZXJzJywgJy0td2Vic29ja19oYW5kbGVycycsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19oYW5kbGVycycsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1Ro
ZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxlciBmaWxlcy4gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdJZiB0aGUgcGF0aCBpcyByZWxhdGl2ZSwgLS1kb2N1bWVudC1y
b290IGlzIHVzZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcyB0aGUgYmFzZS4n
KSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1m
aWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxl
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxl
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgaGVscD0oJ1dlYlNvY2tldCBoYW5kbGVycyBtYXAgZmlsZS4gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdFYWNoIGxpbmUgY29uc2lzdHMgb2YgYWxpYXNfcmVzb3VyY2VfcGF0
aCBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdGluZ19yZXNvdXJjZV9w
YXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycs
ICctLXNjYW4tZGlyJywgJy0tc2Nhbl9kaXInLCBkZXN0PSdzY2FuX2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdN
dXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIC0td2Vic29jay1oYW5kbGVycy4gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdPbmx5IGhhbmRsZXJzIHVuZGVyIHRoaXMgZGlyZWN0b3J5IGFy
ZSBzY2FubmVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIHJlZ2lzdGVyZWQg
dG8gdGhlIHNlcnZlci4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VmdWwgZm9y
IHNhdmluZyBzY2FuIHRpbWUgd2hlbiB0aGUgaGFuZGxlciAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Jvb3QgZGlyZWN0b3J5IGNvbnRhaW5zIGxvdHMgb2YgZmlsZXMgdGhhdCBhcmUg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgaGFuZGxlciBmaWxlIG9yIGFyZSBo
YW5kbGVyIGZpbGVzIGJ1dCB5b3UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb25c
J3Qgd2FudCB0aGVtIHRvIGJlIHJlZ2lzdGVyZWQuICcpKQotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctLWFsbG93LWhhbmRsZXJzLW91dHNpZGUtcm9vdC1kaXInLAotICAgICAgICAgICAgICAgICAg
ICAgICctLWFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2FsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAotICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnU2NhbnMgV2ViU29j
a2V0IGhhbmRsZXJzIGV2ZW4gaWYgdGhlaXIgY2Fub25pY2FsICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncGF0aCBpcyBub3QgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLicpKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctZCcsICctLWRvY3VtZW50LXJvb3QnLCAnLS1kb2N1bWVudF9y
b290JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywgZGVmYXVs
dD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nRG9jdW1lbnQgcm9vdCBkaXJlY3Rv
cnkuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXgnLCAnLS1jZ2ktcGF0aHMnLCAnLS1jZ2lf
cGF0aHMnLCBkZXN0PSdjZ2lfcGF0aHMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnQ0dJIHBhdGhzIHJlbGF0aXZlIHRv
IGRvY3VtZW50X3Jvb3QuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb21tYS1zZXBh
cmF0ZWQuIChlLmcgLXggL2NnaSwvaHRiaW4pICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRmlsZXMgdW5kZXIgZG9jdW1lbnRfcm9vdC9jZ2lfcGF0aCBhcmUgaGFuZGxlZCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIENHSSBwcm9ncmFtcy4gTXVzdCBiZSBleGVjdXRh
YmxlLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90
bHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
RmFsc2UsIGhlbHA9J3VzZSBUTFMgKHdzczovLyknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LXRscy1tb2R1bGUnLCAnLS10bHNfbW9kdWxlJywgZGVzdD0ndGxzX21vZHVsZScsCi0gICAgICAg
ICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9p
Y2VzID0gW19UTFNfQllfU1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgaGVscD0nVXNlIHNzbCBtb2R1bGUgaWYgIiVzIiBpcyBzcGVjaWZp
ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAnVXNlIHB5T3BlblNTTCBtb2R1bGUgaWYgIiVz
IiBpcyBzcGVjaWZpZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAoX1RMU19CWV9TVEFOREFS
RF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWsn
LCAnLS1wcml2YXRlLWtleScsICctLXByaXZhdGVfa2V5JywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdwcml2YXRlX2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywg
aGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWMn
LCAnLS1jZXJ0aWZpY2F0ZScsIGRlc3Q9J2NlcnRpZmljYXRlJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScnLCBoZWxwPSdUTFMgY2VydGlmaWNhdGUgZmlsZS4nKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtYXV0aCcsIGRlc3Q9J3Rsc19jbGllbnRfYXV0aCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSZXF1ZXN0cyBUTFMgY2xpZW50IGF1dGgg
b24gZXZlcnkgY29ubmVjdGlvbi4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGll
bnQtY2VydC1vcHRpb25hbCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVu
dF9jZXJ0X29wdGlvbmFsJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3Ry
dWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBj
bGllbnQgY2VydGlmaWNhdGUgb3B0aW9uYWwgZXZlbiB0aG91Z2ggJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdUTFMgY2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10bHMtY2xpZW50LWNhJywgZGVzdD0ndGxzX2NsaWVudF9jYScsIGRlZmF1
bHQ9JycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NwZWNpZmllcyBhIHBlbSBmaWxl
IHdoaWNoIGNvbnRhaW5zIGEgc2V0IG9mICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Y29uY2F0ZW5hdGVkIENBIGNlcnRpZmljYXRlcyB3aGljaCBhcmUgdXNlZCB0byAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3ZhbGlkYXRlIGNlcnRpZmljYXRlcyBwYXNzZWQgZnJvbSBj
bGllbnRzJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0aCcsIGRlc3Q9J3Vz
ZV9iYXNpY19hdXRoJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1JlcXVpcmVzIEJh
c2ljIGF1dGhlbnRpY2F0aW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0
aC1jcmVkZW50aWFsJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdiYXNpY19hdXRoX2Ny
ZWRlbnRpYWwnLCBkZWZhdWx0PSd0ZXN0OnRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J1NwZWNpZmllcyB0aGUgY3JlZGVudGlhbCBvZiBiYXNpYyBhdXRoZW50aWNhdGlvbiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgJ2J5IHVzZXJuYW1lOnBhc3N3b3JkIHBhaXIgKGUuZy4gdGVz
dDp0ZXN0KS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsICctLWxvZy1maWxlJywgJy0t
bG9nX2ZpbGUnLCBkZXN0PSdsb2dfZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nJywgaGVscD0nTG9nIGZpbGUuJykKLSAgICAjIEN1c3RvbSBsb2cgbGV2ZWw6Ci0gICAgIyAt
IEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFjaCBmcmFtZSBwcm9jZXNzaW5nIHN0ZXAKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9p
Y2UnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dh
cm4nLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydmaW5lJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAn
ZXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddLAotICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWRlZmxhdGUtbG9nLWxldmVsJywgJy0tZGVmbGF0ZV9sb2dfbGV2ZWwnLAotICAgICAg
ICAgICAgICAgICAgICAgIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nZGVmbGF0ZV9sb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAg
ICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3In
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIu
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1z
ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2lu
X3NlYycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2
YWxfaW5fc2VjJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLCBkZWZhdWx0PS0x
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdJZiBwb3NpdGl2ZSBpbnRlZ2VyIGlzIHNw
ZWNpZmllZCwgcnVuIGEgdGhyZWFkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9u
aXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwZXJpb2RpY2FsbHkgaW4gdGhlIHNwZWNpZmllZCBpbnRldmFsIGlu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Vjb25kLiBJZiBub24tcG9zaXRpdmUg
aW50ZWdlciBpcyBzcGVjaWZpZWQsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlz
YWJsZSB0aGUgdGhyZWFkIG1vbml0b3IuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9n
LW1heCcsICctLWxvZ19tYXgnLCBkZXN0PSdsb2dfbWF4JywgdHlwZT0naW50JywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19NQVhfQllURVMsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nTG9nIG1heGltdW0gYnl0ZXMnKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWxvZy1jb3VudCcsICctLWxvZ19jb3VudCcsIGRlc3Q9J2xvZ19jb3VudCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywgZGVmYXVsdD1fREVGQVVMVF9MT0dfQkFDS1VQ
X0NPVU5ULAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBiYWNrdXAgY291bnQnKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWFsbG93LWRyYWZ0NzUnLCBkZXN0PSdhbGxvd19kcmFm
dDc1JywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J09ic29sZXRlIG9wdGlvbi4gSWdu
b3JlZC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0cmljdCcsIGRlc3Q9J3N0cmljdCcs
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxz
ZSwgaGVscD0nT2Jzb2xldGUgb3B0aW9uLiBJZ25vcmVkLicpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1xJywgJy0tcXVldWUnLCBkZXN0PSdyZXF1ZXN0X3F1ZXVlX3NpemUnLCB0eXBlPSdpbnQn
LAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9T
SVpFLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6ZScpCi0K
LSAgICByZXR1cm4gcGFyc2VyCi0KLQotY2xhc3MgVGhyZWFkTW9uaXRvcih0aHJlYWRpbmcuVGhy
ZWFkKToKLSAgICBkYWVtb24gPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW50ZXJ2
YWxfaW5fc2VjKToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1l
PSdUaHJlYWRNb25pdG9yJykKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFz
c19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9pbnRlcnZhbF9pbl9zZWMgPSBpbnRlcnZh
bF9pbl9zZWMKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICAgICB0aHJlYWRfbmFtZV9saXN0ID0gW10KLSAgICAgICAgICAgIGZvciB0aHJlYWQgaW4g
dGhyZWFkaW5nLmVudW1lcmF0ZSgpOgotICAgICAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3Qu
YXBwZW5kKHRocmVhZC5uYW1lKQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAg
ICAgICAgICAgICAgIiVkIGFjdGl2ZSB0aHJlYWRzOiAlcyIsCi0gICAgICAgICAgICAgICAgdGhy
ZWFkaW5nLmFjdGl2ZV9jb3VudCgpLAotICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRf
bmFtZV9saXN0KSkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2Vj
KQotCi0KLWRlZiBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3MpOgotICAgIHBhcnNlciA9IF9i
dWlsZF9vcHRpb25fcGFyc2VyKCkKLQotICAgICMgRmlyc3QsIHBhcnNlIG9wdGlvbnMgd2l0aG91
dCBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9h
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzKQotICAgIGlmIHRlbXBvcmFyeV9hcmdz
OgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgJ1VucmVjb2duaXplZCBw
b3NpdGlvbmFsIGFyZ3VtZW50czogJXInLCB0ZW1wb3JhcnlfYXJncykKLSAgICAgICAgc3lzLmV4
aXQoMSkKLQotICAgIGlmIHRlbXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBjb25maWdfZnAgPSBvcGVuKHRlbXBvcmFyeV9vcHRpb25zLmNvbmZp
Z19maWxlLCAncicpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBs
b2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gb3BlbiBjb25maWd1
cmF0aW9uIGZpbGUgJXI6ICVyJywKLSAgICAgICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5j
b25maWdfZmlsZSwKLSAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkK
LQotICAgICAgICBjb25maWdfcGFyc2VyID0gY29uZmlncGFyc2VyLlNhZmVDb25maWdQYXJzZXIo
KQotICAgICAgICBjb25maWdfcGFyc2VyLnJlYWRmcChjb25maWdfZnApCi0gICAgICAgIGNvbmZp
Z19mcC5jbG9zZSgpCi0KLSAgICAgICAgYXJnc19mcm9tX2NvbmZpZyA9IFtdCi0gICAgICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBjb25maWdfcGFyc2VyLml0ZW1zKCdweXdlYnNvY2tldCcpOgotICAg
ICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQoJy0tJyArIG5hbWUpCi0gICAgICAgICAg
ICBhcmdzX2Zyb21fY29uZmlnLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgaWYgYXJncyBpcyBOb25l
OgotICAgICAgICAgICAgYXJncyA9IGFyZ3NfZnJvbV9jb25maWcKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21fY29uZmlnICsgYXJncwotICAgICAgICByZXR1cm4g
cGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB0
ZW1wb3Jhcnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MKLQotCi1kZWYgX21haW4oYXJncz1Ob25l
KToKLSAgICAiIiJZb3UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHlvdXIgb3duIHByb2dy
YW0sIGJ1dCBwbGVhc2Ugbm90ZSB0aGF0Ci0gICAgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzaWRl
LWVmZmVjdHMgdGhhdCBtaWdodCBhZmZlY3QgeW91ciBwcm9ncmFtLiBGb3IKLSAgICBleGFtcGxl
LCB1dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4gdXNlIGluIHRoaXMgbWV0aG9kIHJlcGxhY2VzIGlt
cGxlbWVudGF0aW9uCi0gICAgb2Ygb3MucG9wZW4zLgotICAgICIiIgotCi0gICAgb3B0aW9ucywg
YXJncyA9IF9wYXJzZV9hcmdzX2FuZF9jb25maWcoYXJncz1hcmdzKQotCi0gICAgb3MuY2hkaXIo
b3B0aW9ucy5kb2N1bWVudF9yb290KQotCi0gICAgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMp
Ci0KLSAgICBpZiBvcHRpb25zLmFsbG93X2RyYWZ0NzU6Ci0gICAgICAgIGxvZ2dpbmcud2Fybmlu
ZygnLS1hbGxvd19kcmFmdDc1IG9wdGlvbiBpcyBvYnNvbGV0ZS4nKQotCi0gICAgaWYgb3B0aW9u
cy5zdHJpY3Q6Ci0gICAgICAgIGxvZ2dpbmcud2FybmluZygnLS1zdHJpY3Qgb3B0aW9uIGlzIG9i
c29sZXRlLicpCi0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1cCBpbml0aWFsaXphdGlv
biBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUgc29tZQotICAgICMgb2YgY29kZSBoZXJlIHRv
IFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0dGVyLgotICAgIG9wdGlv
bnMuY2dpX2RpcmVjdG9yaWVzID0gW10KLSAgICBvcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9k
ID0gTm9uZQotICAgIGlmIG9wdGlvbnMuY2dpX3BhdGhzOgotICAgICAgICBvcHRpb25zLmNnaV9k
aXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykKLSAgICAgICAgaWYgc3lz
LnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6Ci0gICAgICAgICAgICBjeWd3aW5fcGF0
aCA9IE5vbmUKLSAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwgaXQgaXMgZXhwZWN0ZWQg
dGhhdCBDWUdXSU5fUEFUSAotICAgICAgICAgICAgIyBpcyBzZXQgdG8gYSBkaXJlY3Rvcnkgb2Yg
Y3lnd2luIGJpbmFyaWVzLgotICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Vic29ja2V0X3Nl
cnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCi0gICAgICAgICAgICAjIGZ1
bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgotICAgICAgICAgICAgaWYgJ0NZR1dJ
Tl9QQVRIJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3Mu
ZW52aXJvblsnQ1lHV0lOX1BBVEgnXQotICAgICAgICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jf
d2luKGN5Z3dpbl9wYXRoKQotCi0gICAgICAgICAgICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0
cGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2Ny
aXB0cGF0aCwgY3lnd2luX3BhdGgpCi0KLSAgICAgICAgICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJs
ZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAg
ICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBv
cnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9T
VEFOREFSRF9NT0RVTEUKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wg
bW9kdWxlJykKLSAgICAgICAgICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAg
ICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZGVidWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAg
ICAgICAgICAgICAgJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxl
LicpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRs
c19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3Qg
X2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9k
dWxlIGlzIG5vdCBhdmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAg
ICAgIGVsaWYgb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAg
ICAgICAgaWYgbm90IF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2lu
Zy5jcml0aWNhbCgncHlPcGVuU1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAg
ICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgnSW52YWxpZCAtLXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0
KDEpCi0KLSAgICAgICAgaWYgbm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlvbnMu
Y2VydGlmaWNhdGU6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAg
ICAgICAgICAnVG8gdXNlIFRMUywgc3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlmaWNhdGUu
JykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYgKG9wdGlvbnMudGxzX2Ns
aWVudF9jZXJ0X29wdGlvbmFsIGFuZAotICAgICAgICAgICAgbm90IG9wdGlvbnMudGxzX2NsaWVu
dF9hdXRoKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNh
dGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
c3BlY2lmeSB0bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwnKQotICAgICAgICAgICAgc3lzLmV4aXQo
MSkKLSAgICBlbHNlOgotICAgICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS10bHMtbW9kdWxlIG9wdGlvbiBv
bmx5IHRvZ2V0aGVyIHdpdGggJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2Ut
dGxzIG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRp
b25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBt
dXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAg
c3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25h
bDoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9y
IGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAg
IGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgotICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0
aW9ucy53ZWJzb2NrX2hhbmRsZXJzCi0KLSAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19hdXRoOgot
ICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsgYmFzZTY0
LmI2NGVuY29kZSgKLSAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsKQot
Ci0gICAgdHJ5OgotICAgICAgICBpZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2lu
X3NlYyA+IDA6Ci0gICAgICAgICAgICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cgdGhl
IHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyBmb3IKLSAgICAgICAgICAgICMgZGVidWdnaW5nLgot
ICAgICAgICAgICAgVGhyZWFkTW9uaXRvcihvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFs
X2luX3NlYykuc3RhcnQoKQotCi0gICAgICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRp
b25zKQotICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IGUpCi0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ21vZF9weXdlYnNvY2tldDogJXMnICUgdXRp
bC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIF9tYWluKHN5cy5hcmd2WzE6XSkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTdkMzEzNmFjOWI0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
c3RyZWFtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotIiIiVGhpcyBmaWxlIGV4cG9ydHMgcHVibGljIHN5bWJvbHMuIiIiCi0KLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQg
SW52YWxpZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1faGl4aWU3NSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBGcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9oeWJpIGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotCi0jIFRoZXNlIG1ldGhvZHMgYXJlIGludGVuZGVkIHRv
IGJlIHVzZWQgYnkgV2ViU29ja2V0IGNsaWVudCBkZXZlbG9wZXJzIHRvIGhhdmUKLSMgdGhlaXIg
aW1wbGVtZW50YXRpb25zIHJlY2VpdmUgYnJva2VuIGRhdGEgaW4gdGVzdHMuCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zZV9mcmFtZQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfaGVhZGVyCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9waW5nX2ZyYW1l
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9wb25nX2Zy
YW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5h
cnlfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRl
X3RleHRfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3Jl
YXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzgyODRjZDA3NDQuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNDI0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCB1
dGlsaXRpZXMuIiIiCi0KLQotaW1wb3J0IGFycmF5Ci1pbXBvcnQgZXJybm8KLQotIyBJbXBvcnQg
aGFzaCBjbGFzc2VzIGZyb20gYSBtb2R1bGUgYXZhaWxhYmxlIGFuZCByZWNvbW1lbmRlZCBmb3Ig
ZWFjaCBQeXRob24KLSMgdmVyc2lvbiBhbmQgcmUtZXhwb3J0IHRob3NlIHN5bWJvbC4gVXNlIHNo
YSBhbmQgbWQ1IG1vZHVsZSBpbiBQeXRob24gMi40LCBhbmQKLSMgaGFzaGxpYiBtb2R1bGUgaW4g
UHl0aG9uIDIuNi4KLXRyeToKLSAgICBpbXBvcnQgaGFzaGxpYgotICAgIG1kNV9oYXNoID0gaGFz
aGxpYi5tZDUKLSAgICBzaGExX2hhc2ggPSBoYXNobGliLnNoYTEKLWV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICBpbXBvcnQgbWQ1Ci0gICAgaW1wb3J0IHNoYQotICAgIG1kNV9oYXNoID0gbWQ1Lm1k
NQotICAgIHNoYTFfaGFzaCA9IHNoYS5zaGEKLQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IFN0cmlu
Z0lPCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQK
LWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB6bGliCi0KLXRyeToKLSAgICBmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgZmFzdF9tYXNraW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFz
cwotCi0KLWRlZiBnZXRfc3RhY2tfdHJhY2UoKToKLSAgICAiIiJHZXQgdGhlIGN1cnJlbnQgc3Rh
Y2sgdHJhY2UgYXMgc3RyaW5nLgotCi0gICAgVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBQeXRo
b24gMi4zLgotICAgIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gd2Ugb25seSBzdXBwb3J0IFB5dGhv
biAyLjQgYW5kIGFib3ZlLgotICAgICAgICAgIFVzZSB0cmFjZWJhY2suZm9ybWF0X2V4YyBpbnN0
ZWFkLgotICAgICIiIgotICAgIG91dCA9IFN0cmluZ0lPKCkKLSAgICB0cmFjZWJhY2sucHJpbnRf
ZXhjKGZpbGU9b3V0KQotICAgIHJldHVybiBvdXQuZ2V0dmFsdWUoKQotCi0KLWRlZiBwcmVwZW5k
X21lc3NhZ2VfdG9fZXhjZXB0aW9uKG1lc3NhZ2UsIGV4Yyk6Ci0gICAgIiIiUHJlcGVuZCBtZXNz
YWdlIHRvIHRoZSBleGNlcHRpb24uIiIiCi0gICAgZXhjLmFyZ3MgPSAobWVzc2FnZSArIHN0cihl
eGMpLCkKLSAgICByZXR1cm4KLQotCi1kZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3ln
d2luX3BhdGgpOgotICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4z
MiBweXRob24gdG8gcnVuIGN5Z3dpbiBwcm9ncmFtCi0gICAgKGUuZy4gcGVybCkuICBOb3RlIHRo
YXQgaXQgZG9lc24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKLSAgICB3aGlj
aCBpcyB0eXBpY2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4u
Ci0gICAgRm9yIFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3ln
d2luIGJpbmFyaWVzLgotCi0gICAgQXJnczoKLSAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQg
bGluZQotICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnks
IG9yIE5vbmUKLSAgICBSZXR1cm5zOgotICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBs
aW5lLgotICAgICIiIgotICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKLSAgICAgICAgcmV0dXJuIGlu
dGVycAotICAgIG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCi0g
ICAgaWYgbToKLSAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3Vw
KDEpKQotICAgICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQotICAgIHJldHVybiBpbnRlcnAK
LQotCi1kZWYgZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUp
OgotICAgIHIiIiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlw
dC4KLQotICAgIEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9u
IGlzIHVzZWQsIGUuZy4gaW4gV2ViS2l0LAotICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVy
bCAtd1QgaGVsbG8ucGwiLgotICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4g
Q2hyb21pdW0sIGl0IGNvdWxkbid0LiAgU28sIGZpeAotICAgICIvdXNyL2Jpbi9wZXJsIiB0byAi
PGN5Z3dpbl9wYXRoPlxwZXJsLmV4ZSIuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0X3BhdGg6
IHBhdGhuYW1lIG9mIHRoZSBzY3JpcHQKLSAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFt
ZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoKLSAgICAgICMhLWludGVy
cHJldGVyIGNvbW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgotICAg
ICIiIgotICAgIGZwID0gb3BlbihzY3JpcHRfcGF0aCkKLSAgICBsaW5lID0gZnAucmVhZGxpbmUo
KQotICAgIGZwLmNsb3NlKCkKLSAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQotICAg
IGlmIG06Ci0gICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3ln
d2luX3BhdGgpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihj
eWd3aW5fcGF0aCk6Ci0gICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24g
V2luZG93cy4KLQotICAgIEFyZ3M6Ci0gICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dp
biBiaW5hcnkgaWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQotICAgICAgICAgICAgICAg
ICAgICB0cmFuc2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KLSAgICAi
IiIKLSAgICBfX29yaWdfcG9wZW4zID0gb3MucG9wZW4zCi0KLSAgICBkZWYgX193cmFwX3BvcGVu
MyhjbWQsIG1vZGU9J3QnLCBidWZzaXplPS0xKToKLSAgICAgICAgY21kbGluZSA9IGNtZC5zcGxp
dCgnICcpCi0gICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0sIGN5
Z3dpbl9wYXRoKQotICAgICAgICBpZiBpbnRlcnA6Ci0gICAgICAgICAgICBjbWQgPSBpbnRlcnAg
KyAnICcgKyBjbWQKLSAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBidWZz
aXplKQotCi0gICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMwotCi0KLWRlZiBoZXhpZnkocyk6
Ci0gICAgcmV0dXJuICcgJy5qb2luKG1hcChsYW1iZGEgeDogJyUwMngnICUgb3JkKHgpLCBzKSkK
LQotCi1kZWYgZ2V0X2NsYXNzX2xvZ2dlcihvKToKLSAgICAiIiJSZXR1cm4gdGhlIGxvZ2dpbmcg
Y2xhc3MgaW5mb3JtYXRpb24uIiIiCi0gICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKAotICAg
ICAgICAnJXMuJXMnICUgKG8uX19jbGFzc19fLl9fbW9kdWxlX18sIG8uX19jbGFzc19fLl9fbmFt
ZV9fKSkKLQotCi1jbGFzcyBOb29wTWFza2VyKG9iamVjdCk6Ci0gICAgIiIiQSBOb09wIG1hc2tp
bmcgb2JqZWN0LgotCi0gICAgVGhpcyBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIFJlcGVhdGVk
WG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKLSAgICB0aGUgc3RyaW5nIHBhc3NlZCBpbiB3aXRo
b3V0IG1ha2luZyBhbnkgY2hhbmdlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICAiIiJOb09wLiIiIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbWFzayhzZWxm
LCBzKToKLSAgICAgICAgIiIiTm9PcC4iIiIKLSAgICAgICAgcmV0dXJuIHMKLQotCi1jbGFzcyBS
ZXBlYXRlZFhvck1hc2tlcihvYmplY3QpOgotCi0gICAgIiIiQSBtYXNraW5nIG9iamVjdCB0aGF0
IGFwcGxpZXMgWE9SIG9uIHRoZSBzdHJpbmcuCi0KLSAgICBBcHBsaWVzIFhPUiBvbiB0aGUgc3Ry
aW5nIGdpdmVuIHRvIG1hc2sgbWV0aG9kIHdpdGggdGhlIG1hc2tpbmcgYnl0ZXMKLSAgICBnaXZl
biB0byB0aGUgY29uc3RydWN0b3IgcmVwZWF0ZWRseS4gVGhpcyBvYmplY3QgcmVtZW1iZXJzIHRo
ZSBwb3NpdGlvbgotICAgIGluIHRoZSBtYXNraW5nIGJ5dGVzIHRoZSBsYXN0IG1hc2sgbWV0aG9k
IGNhbGwgZW5kZWQgYW5kIHJlc3VtZXMgZnJvbQotICAgIHRoYXQgcG9pbnQgb24gdGhlIG5leHQg
bWFzayBtZXRob2QgY2FsbC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNr
aW5nX2tleSk6Ci0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5ID0gbWFza2luZ19rZXkKLSAgICAg
ICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSAwCi0KLSAgICBkZWYgX21hc2tfdXNpbmdfc3dp
ZyhzZWxmLCBzKToKLSAgICAgICAgIiIiUGVyZm9ybSB0aGUgbWFzayB2aWEgU1dJRy4iIiIKLSAg
ICAgICAgbWFza2VkX2RhdGEgPSBmYXN0X21hc2tpbmcubWFzaygKLSAgICAgICAgICAgICAgICBz
LCBzZWxmLl9tYXNraW5nX2tleSwgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgpCi0gICAgICAgIHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4ID0gKAotICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5n
X2tleV9pbmRleCArIGxlbihzKSkgJSBsZW4oc2VsZi5fbWFza2luZ19rZXkpKQotICAgICAgICBy
ZXR1cm4gbWFza2VkX2RhdGEKLQotICAgIGRlZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToK
LSAgICAgICAgIiIiUGVyZm9ybSB0aGUgbWFzayB2aWEgcHl0aG9uLiIiIgotICAgICAgICByZXN1
bHQgPSBhcnJheS5hcnJheSgnQicpCi0gICAgICAgIHJlc3VsdC5mcm9tc3RyaW5nKHMpCi0KLSAg
ICAgICAgIyBVc2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNv
c3QgdG8gYWNjZXNzCi0gICAgICAgICMgYXR0cmlidXRlcwotICAgICAgICBtYXNraW5nX2tleSA9
IG1hcChvcmQsIHNlbGYuX21hc2tpbmdfa2V5KQotICAgICAgICBtYXNraW5nX2tleV9zaXplID0g
bGVuKG1hc2tpbmdfa2V5KQotICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IHNlbGYuX21hc2tp
bmdfa2V5X2luZGV4Ci0KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAg
ICAgICAgICAgIHJlc3VsdFtpXSBePSBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF0KLSAg
ICAgICAgICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBt
YXNraW5nX2tleV9zaXplCi0KLSAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSBtYXNr
aW5nX2tleV9pbmRleAotCi0gICAgICAgIHJldHVybiByZXN1bHQudG9zdHJpbmcoKQotCi0gICAg
aWYgJ2Zhc3RfbWFza2luZycgaW4gZ2xvYmFscygpOgotICAgICAgICBtYXNrID0gX21hc2tfdXNp
bmdfc3dpZwotICAgIGVsc2U6Ci0gICAgICAgIG1hc2sgPSBfbWFza191c2luZ19hcnJheQotCi0K
LSMgQnkgbWFraW5nIHdiaXRzIG9wdGlvbiBuZWdhdGl2ZSwgd2UgY2FuIHN1cHByZXNzIENNRi9G
TEcgKDIgb2N0ZXQpIGFuZAotIyBBRExFUjMyICg0IG9jdGV0KSBmaWVsZHMgb2YgemxpYiBzbyB0
aGF0IHdlIGNhbiB1c2UgemxpYiBtb2R1bGUganVzdCBhcwotIyBkZWZsYXRlIGxpYnJhcnkuIERJ
Q1RJRCB3b24ndCBiZSBhZGRlZCBhcyBmYXIgYXMgd2UgZG9uJ3Qgc2V0IGRpY3Rpb25hcnkuCi0j
IExaNzcgd2luZG93IG9mIDMySyB3aWxsIGJlIHVzZWQgZm9yIGJvdGggY29tcHJlc3Npb24gYW5k
IGRlY29tcHJlc3Npb24uCi0jIEZvciBkZWNvbXByZXNzaW9uLCB3ZSBjYW4ganVzdCB1c2UgMzJL
IHRvIGNvdmVyIGFueSB3aW5kb3dzIHNpemUuIEZvcgotIyBjb21wcmVzc2lvbiwgd2UgdXNlIDMy
SyBzbyByZWNlaXZlcnMgbXVzdCB1c2UgMzJLLgotIwotIyBDb21wcmVzc2lvbiBsZXZlbCBpcyBa
X0RFRkFVTFRfQ09NUFJFU1NJT04uIFdlIGRvbid0IGhhdmUgdG8gbWF0Y2ggbGV2ZWwKLSMgdG8g
ZGVjb2RlLgotIwotIyBTZWUgemNvbmYuaCwgZGVmbGF0ZS5jYywgaW5mbGF0ZS5jYyBvZiB6bGli
IGxpYnJhcnksIGFuZCB6bGlibW9kdWxlLmMgb2YKLSMgUHl0aG9uLiBTZWUgYWxzbyBSRkMxOTUw
IChaTElCIDMuMykuCi0KLQotY2xhc3MgX0RlZmxhdGVyKG9iamVjdCk6Ci0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgd2luZG93X2JpdHMpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSBnZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsIC13aW5kb3dfYml0cykKLQotICAgIGRlZiBjb21wcmVzcyhzZWxmLCBieXRlcyk6Ci0gICAg
ICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRf
Ynl0ZXMpCi0gICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVzCi0KLSAgICBkZWYgY29tcHJl
c3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyA9IHNl
bGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQotICAgICAgICBjb21wcmVzc2VkX2J5dGVzICs9
IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykKLSAgICAg
ICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKLQotICAgIGRlZiBjb21wcmVzc19hbmRfZmluaXNo
KHNlbGYsIGJ5dGVzKToKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNz
LmNvbXByZXNzKGJ5dGVzKQotICAgICAgICBjb21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29t
cHJlc3MgaW5wdXQgJXInLCBieXRlcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21w
cmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQotICAgICAgICByZXR1cm4gY29tcHJl
c3NlZF9ieXRlcwotCi0KLWNsYXNzIF9JbmZsYXRlcihvYmplY3QpOgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHdpbmRvd19iaXRzKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl93aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzCi0K
LSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9ICcnCi0KLSAgICAgICAgc2VsZi5yZXNldCgpCi0K
LSAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgbm90IChzaXplID09
IC0xIG9yIHNpemUgPiAwKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc2l6ZSBtdXN0
IGJlIC0xIG9yIHBvc2l0aXZlJykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgaWYgc2l6ZSA9PSAtMToKLSAgICAgICAgICAgICAgICBkYXRh
ICs9IHNlbGYuX2RlY29tcHJlc3MuZGVjb21wcmVzcyhzZWxmLl91bmNvbnN1bWVkKQotICAgICAg
ICAgICAgICAgICMgU2VlIFB5dGhvbiBidWcgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEy
MDUwIHRvCi0gICAgICAgICAgICAgICAgIyB1bmRlcnN0YW5kIHdoeSB0aGUgc2FtZSBjb2RlIGNh
bm5vdCBiZSB1c2VkIGZvciB1cGRhdGluZwotICAgICAgICAgICAgICAgICMgc2VsZi5fdW5jb25z
dW1lZCBmb3IgaGVyZSBhbmQgZWxzZSBibG9jay4KLSAgICAgICAgICAgICAgICBzZWxmLl91bmNv
bnN1bWVkID0gJycKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBz
ZWxmLl9kZWNvbXByZXNzLmRlY29tcHJlc3MoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Vu
Y29uc3VtZWQsIHNpemUgLSBsZW4oZGF0YSkpCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25z
dW1lZCA9IHNlbGYuX2RlY29tcHJlc3MudW5jb25zdW1lZF90YWlsCi0gICAgICAgICAgICBpZiBz
ZWxmLl9kZWNvbXByZXNzLnVudXNlZF9kYXRhOgotICAgICAgICAgICAgICAgICMgRW5jb3VudGVy
ZWQgYSBsYXN0IGJsb2NrIChpLmUuIGEgYmxvY2sgd2l0aCBCRklOQUwgPSAxKSBhbmQKLSAgICAg
ICAgICAgICAgICAjIGZvdW5kIGEgbmV3IHN0cmVhbSAodW51c2VkX2RhdGEpLiBXZSBjYW5ub3Qg
dXNlIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgIyB6bGliLkRlY29tcHJlc3Mgb2JqZWN0IGZv
ciB0aGUgbmV3IHN0cmVhbS4gQ3JlYXRlIGEgbmV3Ci0gICAgICAgICAgICAgICAgIyBEZWNvbXBy
ZXNzIG9iamVjdCB0byBkZWNvbXByZXNzIHRoZSBuZXcgb25lLgotICAgICAgICAgICAgICAgICMK
LSAgICAgICAgICAgICAgICAjIEl0J3MgZmluZSB0byBpZ25vcmUgdW5jb25zdW1lZF90YWlsIGlm
IHVudXNlZF9kYXRhIGlzIG5vdAotICAgICAgICAgICAgICAgICMgZW1wdHkuCi0gICAgICAgICAg
ICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IHNlbGYuX2RlY29tcHJlc3MudW51c2VkX2RhdGEKLSAg
ICAgICAgICAgICAgICBzZWxmLnJlc2V0KCkKLSAgICAgICAgICAgICAgICBpZiBzaXplID49IDAg
YW5kIGxlbihkYXRhKSA9PSBzaXplOgotICAgICAgICAgICAgICAgICAgICAjIGRhdGEgaXMgZmls
bGVkLiBEb24ndCBjYWxsIGRlY29tcHJlc3MgYWdhaW4uCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBSZS1pbnZv
a2UgRGVjb21wcmVzcy5kZWNvbXByZXNzIHRvIHRyeSB0byBkZWNvbXByZXNzIGFsbAotICAgICAg
ICAgICAgICAgICAgICAjIGF2YWlsYWJsZSBieXRlcyBiZWZvcmUgaW52b2tpbmcgcmVhZCB3aGlj
aCBibG9ja3MgdW50aWwKLSAgICAgICAgICAgICAgICAgICAgIyBhbnkgbmV3IGJ5dGUgaXMgYXZh
aWxhYmxlLgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAjIEhlcmUsIHNpbmNlIHVudXNlZF9kYXRhIGlzIGVtcHR5LCBldmVu
IGlmIHVuY29uc3VtZWRfdGFpbCBpcwotICAgICAgICAgICAgICAgICMgbm90IGVtcHR5LCBieXRl
cyBvZiByZXF1ZXN0ZWQgbGVuZ3RoIGFyZSBhbHJlYWR5IGluIGRhdGEuIFdlCi0gICAgICAgICAg
ICAgICAgIyBkb24ndCBoYXZlIHRvICJjb250aW51ZSIgaGVyZS4KLSAgICAgICAgICAgICAgICBi
cmVhawotCi0gICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J0RlY29tcHJlc3NlZCAlcicsIGRhdGEpCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYg
YXBwZW5kKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FwcGVuZGVk
ICVyJywgZGF0YSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICBkZWYg
cmVzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVzZXQnKQotICAgICAg
ICBzZWxmLl9kZWNvbXByZXNzID0gemxpYi5kZWNvbXByZXNzb2JqKC1zZWxmLl93aW5kb3dfYml0
cykKLQotCi0jIENvbXByZXNzZXMvZGVjb21wcmVzc2VzIGdpdmVuIG9jdGV0cyB1c2luZyB0aGUg
bWV0aG9kIGludHJvZHVjZWQgaW4gUkZDMTk3OS4KLQotCi1jbGFzcyBfUkZDMTk3OURlZmxhdGVy
KG9iamVjdCk6Ci0gICAgIiIiQSBjb21wcmVzc29yIGNsYXNzIHRoYXQgYXBwbGllcyBERUZMQVRF
IHRvIGdpdmVuIGJ5dGUgc2VxdWVuY2UgYW5kCi0gICAgZmx1c2hlcyB1c2luZyB0aGUgYWxnb3Jp
dGhtIGRlc2NyaWJlZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIuMS4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cywgbm9fY29udGV4dF90YWtlb3Zlcik6Ci0g
ICAgICAgIHNlbGYuX2RlZmxhdGVyID0gTm9uZQotICAgICAgICBpZiB3aW5kb3dfYml0cyBpcyBO
b25lOgotICAgICAgICAgICAgd2luZG93X2JpdHMgPSB6bGliLk1BWF9XQklUUwotICAgICAgICBz
ZWxmLl93aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzCi0gICAgICAgIHNlbGYuX25vX2NvbnRleHRf
dGFrZW92ZXIgPSBub19jb250ZXh0X3Rha2VvdmVyCi0KLSAgICBkZWYgZmlsdGVyKHNlbGYsIGJ5
dGVzLCBlbmQ9VHJ1ZSwgYmZpbmFsPUZhbHNlKToKLSAgICAgICAgaWYgc2VsZi5fZGVmbGF0ZXIg
aXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHNlbGYuX3dp
bmRvd19iaXRzKQotCi0gICAgICAgIGlmIGJmaW5hbDoKLSAgICAgICAgICAgIHJlc3VsdCA9IHNl
bGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goYnl0ZXMpCi0gICAgICAgICAgICAjIEFk
ZCBhIHBhZGRpbmcgYmxvY2sgd2l0aCBCRklOQUwgPSAwIGFuZCBCVFlQRSA9IDAuCi0gICAgICAg
ICAgICByZXN1bHQgPSByZXN1bHQgKyBjaHIoMCkKLSAgICAgICAgICAgIHNlbGYuX2RlZmxhdGVy
ID0gTm9uZQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgICAgIHJlc3VsdCA9IHNl
bGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykKLSAgICAgICAgaWYgZW5kOgot
ICAgICAgICAgICAgIyBTdHJpcCBsYXN0IDQgb2N0ZXRzIHdoaWNoIGlzIExFTiBhbmQgTkxFTiBm
aWVsZCBvZiBhCi0gICAgICAgICAgICAjIG5vbi1jb21wcmVzc2VkIGJsb2NrIGFkZGVkIGZvciBa
X1NZTkNfRkxVU0guCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOi00XQotCi0gICAgICAg
IGlmIHNlbGYuX25vX2NvbnRleHRfdGFrZW92ZXIgYW5kIGVuZDoKLSAgICAgICAgICAgIHNlbGYu
X2RlZmxhdGVyID0gTm9uZQotCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi1jbGFzcyBfUkZD
MTk3OUluZmxhdGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkZWNvbXByZXNzb3IgY2xhc3MgYSBsYSBS
RkMxOTc5LgotCi0gICAgQSBkZWNvbXByZXNzb3IgY2xhc3MgZm9yIGJ5dGUgc2VxdWVuY2UgY29t
cHJlc3NlZCBhbmQgZmx1c2hlZCBmb2xsb3dpbmcKLSAgICB0aGUgYWxnb3JpdGhtIGRlc2NyaWJl
ZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIuMS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB3aW5kb3dfYml0cz16bGliLk1BWF9XQklUUyk6Ci0gICAgICAgIHNlbGYuX2luZmxh
dGVyID0gX0luZmxhdGVyKHdpbmRvd19iaXRzKQotCi0gICAgZGVmIGZpbHRlcihzZWxmLCBieXRl
cyk6Ci0gICAgICAgICMgUmVzdG9yZSBzdHJpcHBlZCBMRU4gYW5kIE5MRU4gZmllbGQgb2YgYSBu
b24tY29tcHJlc3NlZCBibG9jayBhZGRlZAotICAgICAgICAjIGZvciBaX1NZTkNfRkxVU0guCi0g
ICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChieXRlcyArICdceDAwXHgwMFx4ZmZceGZmJykK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2luZmxhdGVyLmRlY29tcHJlc3MoLTEpCi0KLQotY2xhc3Mg
RGVmbGF0ZVNvY2tldChvYmplY3QpOgotICAgICIiIkEgd3JhcHBlciBjbGFzcyBmb3Igc29ja2V0
IG9iamVjdCB0byBpbnRlcmNlcHQgc2VuZCBhbmQgcmVjdiB0byBwZXJmb3JtCi0gICAgZGVmbGF0
ZSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiB0cmFuc3BhcmVudGx5LgotICAgICIiIgot
Ci0gICAgIyBTaXplIG9mIHRoZSBidWZmZXIgcGFzc2VkIHRvIHJlY3YgdG8gcmVjZWl2ZSBjb21w
cmVzc2VkIGRhdGEuCi0gICAgX1JFQ1ZfU0laRSA9IDQwOTYKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBzb2NrZXQpOgotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICBz
ZWxmLl9sb2dnZXIgPSBnZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fZGVm
bGF0ZXIgPSBfRGVmbGF0ZXIoemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIHNlbGYuX2luZmxhdGVy
ID0gX0luZmxhdGVyKHpsaWIuTUFYX1dCSVRTKQotCi0gICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZSk6
Ci0gICAgICAgICIiIlJlY2VpdmVzIGRhdGEgZnJvbSB0aGUgc29ja2V0IHNwZWNpZmllZCBvbiB0
aGUgY29uc3RydWN0aW9uIHVwCi0gICAgICAgIHRvIHRoZSBzcGVjaWZpZWQgc2l6ZS4gT25jZSBh
bnkgZGF0YSBpcyBhdmFpbGFibGUsIHJldHVybnMgaXQgZXZlbgotICAgICAgICBpZiBpdCdzIHNt
YWxsZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHNpemUuCi0gICAgICAgICIiIgotCi0gICAgICAgICMg
VE9ETyh0eW9zaGlubyk6IEFsbG93IGNhbGwgd2l0aCBzaXplPTAuIEl0IHNob3VsZCBibG9jayB1
bnRpbCBhbnkKLSAgICAgICAgIyBkZWNvbXByZXNzZWQgZGF0YSBpcyBhdmFpbGFibGUuCi0gICAg
ICAgIGlmIHNpemUgPD0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm9uLXBvc2l0
aXZlIHNpemUgcGFzc2VkJykKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGRhdGEg
PSBzZWxmLl9pbmZsYXRlci5kZWNvbXByZXNzKHNpemUpCi0gICAgICAgICAgICBpZiBsZW4oZGF0
YSkgIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgICAgICAgICByZWFk
X2RhdGEgPSBzZWxmLl9zb2NrZXQucmVjdihEZWZsYXRlU29ja2V0Ll9SRUNWX1NJWkUpCi0gICAg
ICAgICAgICBpZiBub3QgcmVhZF9kYXRhOgotICAgICAgICAgICAgICAgIHJldHVybiAnJwotICAg
ICAgICAgICAgc2VsZi5faW5mbGF0ZXIuYXBwZW5kKHJlYWRfZGF0YSkKLQotICAgIGRlZiBzZW5k
YWxsKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5zZW5kKGJ5dGVzKQotCi0gICAgZGVmIHNl
bmQoc2VsZiwgYnl0ZXMpOgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9kZWZs
YXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpKQotICAgICAgICByZXR1cm4gbGVuKGJ5dGVz
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMyM2E1ZDI4Yjc1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L19zdHJlYW1faGl4aWU3NS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1f
aHliaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2Rpc3BhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVh
ZGVyX3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tdXgu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFya19oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQveGhyX2JlbmNobWFya19oYW5kbGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0M2E1YjA0OTIyMGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC94aHJfYmVuY2htYXJrX2hhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotIyBs
aWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMgaHR0
cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLQot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1jbGFzcyBYSFJCZW5jaG1hcmtI
YW5kbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlYWRlcnMsIHJmaWxlLCB3
ZmlsZSk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxm
KQotCi0gICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKLSAgICAgICAgc2VsZi5yZmlsZSA9
IHJmaWxlCi0gICAgICAgIHNlbGYud2ZpbGUgPSB3ZmlsZQotCi0gICAgZGVmIGRvX3NlbmQoc2Vs
Zik6Ci0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFkZXIo
J0NvbnRlbnQtTGVuZ3RoJykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1ZXN0
ZWQgdG8gcmVjZWl2ZSAlcyBieXRlcycsIGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIFJFQ0VJ
VkVfQkxPQ0tfU0laRSA9IDEwMjQgKiAxMDI0Ci0KLSAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZSA9
IGNvbnRlbnRfbGVuZ3RoCi0gICAgICAgIHdoaWxlIGJ5dGVzX3RvX3JlY2VpdmUgPiAwOgotICAg
ICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPSBieXRlc190b19yZWNlaXZl
Ci0gICAgICAgICAgICBpZiBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCA+IFJFQ0VJVkVf
QkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9v
cCA9IFJFQ0VJVkVfQkxPQ0tfU0laRQotICAgICAgICAgICAgcmVjZWl2ZWRfZGF0YSA9IHNlbGYu
cmZpbGUucmVhZChieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAgIGlm
IHJlY2VpdmVkX2RhdGEgIT0gKCdhJyAqIGJ5dGVzX3RvX3JlY2VpdmVfaW5fdGhpc19sb29wKToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3QgYm9keSB2ZXJpZmlj
YXRpb24gZmFpbGVkJykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGJ5dGVz
X3RvX3JlY2VpdmUgLT0gbGVuKHJlY2VpdmVkX2RhdGEpCi0gICAgICAgIGlmIGJ5dGVzX3RvX3Jl
Y2VpdmUgPCAwOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCAlZCBt
b3JlIGJ5dGVzIHRoYW4gZXhwZWN0ZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoLWJ5dGVzX3RvX3JlY2VpdmUpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBS
ZXR1cm4gdGhlIG51bWJlciBvZiByZWNlaXZlZCBieXRlcyBiYWNrIHRvIHRoZSBjbGllbnQuCi0g
ICAgICAgIHJlc3BvbnNlX2JvZHkgPSAnJWQnICUgY29udGVudF9sZW5ndGgKLSAgICAgICAgc2Vs
Zi53ZmlsZS53cml0ZSgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAg
ICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKlxyXG4nCi0gICAgICAgICAgICAn
Q29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuJwotICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3Ro
OiAlZFxyXG4nCi0gICAgICAgICAgICAnXHJcbiVzJyAlIChsZW4ocmVzcG9uc2VfYm9keSksIHJl
c3BvbnNlX2JvZHkpKQotICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAgIGRlZiBkb19y
ZWNlaXZlX2FuZF9wYXJzZShzZWxmKToKLSAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoc2Vs
Zi5oZWFkZXJzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSkKLSAgICAgICAgcmVxdWVzdF9i
b2R5ID0gc2VsZi5yZmlsZS5yZWFkKGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIHJlcXVlc3Rf
YXJyYXkgPSByZXF1ZXN0X2JvZHkuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4ocmVxdWVzdF9h
cnJheSkgPCAyOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdNYWxmb3JtZWQgcmVx
dWVzdCBib2R5OiAlcicsIHJlcXVlc3RfYm9keSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICMgUGFyc2UgdGhlIHNpemUgcGFyYW1ldGVyLgotICAgICAgICBieXRlc190b19zZW5kID0g
cmVxdWVzdF9hcnJheVswXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlc190b19zZW5k
ID0gaW50KGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0g
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ01hbGZvcm1lZCBzaXplIHBhcmFtZXRlcjog
JXInLCBieXRlc190b19zZW5kKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBQYXJz
ZSB0aGUgdHJhbnNmZXIgZW5jb2RpbmcgcGFyYW1ldGVyLgotICAgICAgICBjaHVua2VkX21vZGUg
PSBGYWxzZQotICAgICAgICBtb2RlX3BhcmFtZXRlciA9IHJlcXVlc3RfYXJyYXlbMV0KLSAgICAg
ICAgaWYgbW9kZV9wYXJhbWV0ZXIgPT0gJ2NodW5rZWQnOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZXF1ZXN0ZWQgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZycpCi0gICAgICAg
ICAgICBjaHVua2VkX21vZGUgPSBUcnVlCi0gICAgICAgIGVsaWYgbW9kZV9wYXJhbWV0ZXIgIT0g
J25vbmUnOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdJbnZhbGlkIG1vZGUgcGFy
YW1ldGVyOiAlcicsIG1vZGVfcGFyYW1ldGVyKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgc2VsZi5kb19yZWNlaXZlKGJ5dGVzX3RvX3NlbmQsIGNodW5rZWRfbW9kZSwgRmFsc2UpCi0K
LSAgICBkZWYgZG9fcmVjZWl2ZShzZWxmLCBieXRlc190b19zZW5kLCBjaHVua2VkX21vZGUsIGVu
YWJsZV9jYWNoZSk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdS
ZXF1ZXN0ZWQgdG8gc2VuZCAlcyBieXRlcyAoY2h1bmtlZDogJXMsIGNhY2hlOiAlcyknLAotICAg
ICAgICAgICAgYnl0ZXNfdG9fc2VuZCwgY2h1bmtlZF9tb2RlLCBlbmFibGVfY2FjaGUpCi0gICAg
ICAgICMgV3JpdGUgYSBoZWFkZXIKLSAgICAgICAgcmVzcG9uc2VfaGVhZGVyID0gKAotICAgICAg
ICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCi0gICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luOiAqXHJcbicKLSAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbVxyXG4nKQotICAgICAgICBpZiBlbmFibGVfY2FjaGU6Ci0gICAgICAg
ICAgICByZXNwb25zZV9oZWFkZXIgKz0gJ0NhY2hlLUNvbnRyb2w6IHByaXZhdGUsIG1heC1hZ2U9
MTBcclxuJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzcG9uc2VfaGVhZGVyICs9IFwK
LSAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0
LXJldmFsaWRhdGVcclxuJwotICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAgICBy
ZXNwb25zZV9oZWFkZXIgKz0gJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXNwb25zZV9oZWFkZXIgKz0gKAotICAgICAgICAg
ICAgICAgICdDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbicgJSBieXRlc190b19zZW5kKQotICAg
ICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlX2hlYWRlcikKLSAgICAgICAgc2VsZi53Zmls
ZS5mbHVzaCgpCi0KLSAgICAgICAgIyBXcml0ZSBhIGJvZHkKLSAgICAgICAgU0VORF9CTE9DS19T
SVpFID0gMTAyNCAqIDEwMjQKLQotICAgICAgICB3aGlsZSBieXRlc190b19zZW5kID4gMDoKLSAg
ICAgICAgICAgIGJ5dGVzX3RvX3NlbmRfaW5fdGhpc19sb29wID0gYnl0ZXNfdG9fc2VuZAotICAg
ICAgICAgICAgaWYgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPiBTRU5EX0JMT0NLX1NJWkU6
Ci0gICAgICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPSBTRU5EX0JMT0NL
X1NJWkUKLQotICAgICAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgotICAgICAgICAgICAgICAgIHNl
bGYud2ZpbGUud3JpdGUoJyV4XHJcbicgJSBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcCkKLSAg
ICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJ2EnICogYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xv
b3ApCi0gICAgICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi53
ZmlsZS53cml0ZSgnXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAg
ICAgICAgICAgYnl0ZXNfdG9fc2VuZCAtPSBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcAotCi0g
ICAgICAgIGlmIGNodW5rZWRfbW9kZToKLSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJzBc
clxuXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NldHVwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5MzVkNmIxMDU4OTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NldHVwLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNzQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJTZXQgdXAgc2NyaXB0IGZvciBtb2RfcHl3ZWJzb2NrZXQuCi0iIiIK
LQotCi1mcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9uCi1pbXBvcnQg
c3lzCi0KLQotX1BBQ0tBR0VfTkFNRSA9ICdtb2RfcHl3ZWJzb2NrZXQnCi0KLSMgQnVpbGQgYW5k
IHVzZSBhIEMrKyBleHRlbnNpb24gZm9yIGZhc3RlciBtYXNraW5nLiBTV0lHIGlzIHJlcXVpcmVk
LgotX1VTRV9GQVNUX01BU0tJTkcgPSBGYWxzZQotCi1pZiBzeXMudmVyc2lvbiA8ICcyLjMnOgot
ICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICclcyByZXF1aXJlcyBQeXRob24gMi4zIG9yIGxhdGVy
LicgJSBfUEFDS0FHRV9OQU1FCi0gICAgc3lzLmV4aXQoMSkKLQotaWYgX1VTRV9GQVNUX01BU0tJ
Tkc6Ci0gICAgc2V0dXAoZXh0X21vZHVsZXM9WwotICAgICAgICAgICAgICAgICAgRXh0ZW5zaW9u
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0L19mYXN0X21hc2tp
bmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbJ21vZF9weXdlYnNvY2tldC9mYXN0X21h
c2tpbmcuaSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lnX29wdHM9WyctYysrJ10p
XSkKLQotc2V0dXAoYXV0aG9yPSdZdXpvIEZ1amlzaGltYScsCi0gICAgICBhdXRob3JfZW1haWw9
J3l1em9AY2hyb21pdW0ub3JnJywKLSAgICAgIGRlc2NyaXB0aW9uPSdXZWJTb2NrZXQgZXh0ZW5z
aW9uIGZvciBBcGFjaGUgSFRUUCBTZXJ2ZXIuJywKLSAgICAgIGxvbmdfZGVzY3JpcHRpb249KAot
ICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0IGlzIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBl
eHRlbnNpb24gZm9yICcKLSAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgKFJG
QyA2NDU1KS4gJwotICAgICAgICAgICAgICAnU2VlIG1vZF9weXdlYnNvY2tldC9fX2luaXRfXy5w
eSBmb3IgbW9yZSBkZXRhaWwuJyksCi0gICAgICBsaWNlbnNlPSdTZWUgTElDRU5TRScsCi0gICAg
ICBuYW1lPV9QQUNLQUdFX05BTUUsCi0gICAgICBwYWNrYWdlcz1bX1BBQ0tBR0VfTkFNRSwgX1BB
Q0tBR0VfTkFNRSArICcuaGFuZHNoYWtlJ10sCi0gICAgICB1cmw9J2h0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9weXdlYnNvY2tldC8nLAotICAgICAgIyBTZWUgdGhlIHNvdXJjZSBvZiBkaXN0dXRp
bHMudmVyc2lvbiwgZGlzdHV0aWxzLnZlcnNpb25wcmVkaWNhdGUgYW5kCi0gICAgICAjIGRpc3R1
dGlscy5kaXN0IHRvIHVuZGVyc3RhbmQgaG93IHRvIG5hbWUgdmVyc2lvbiBudW1iZXJzLgotICAg
ICAgdmVyc2lvbj0nMC43LjknLAotICAgICAgKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvQ09QWUlORyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NPUFlJTkcKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk4OWQwMmU0Y2QwOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL01BTklG
RVNULmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTI1Njg4MmM1NmYuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9NQU5JRkVTVC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDYg
KzAsMCBAQAotaW5jbHVkZSBDT1BZSU5HCi1pbmNsdWRlIE1BTklGRVNULmluCi1pbmNsdWRlIFJF
QURNRQotcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5Ci1yZWN1cnNpdmUtaW5jbHVkZSBt
b2RfcHl3ZWJzb2NrZXQgKi5weQotcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9SRUFETUUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM4Yzc1OGY1ZWVmNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL1JF
QURNRQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUlOU1RBTEwKLQotVG8gaW5zdGFs
bCB0aGlzIHBhY2thZ2UgdG8gdGhlIHN5c3RlbSwgcnVuIHRoaXM6Ci0kIHB5dGhvbiBzZXR1cC5w
eSBidWlsZAotJCBzdWRvIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCi0KLVRvIGluc3RhbGwgdGhp
cyBwYWNrYWdlIGFzIGEgbm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6Ci0kIHB5dGhvbiBz
ZXR1cC5weSBidWlsZAotJCBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIKLQotTEFVTkNI
Ci0KLVRvIHVzZSBweXdlYnNvY2tldCBhcyBBcGFjaGUgbW9kdWxlLCBydW4gdGhpcyB0byByZWFk
IHRoZSBkb2N1bWVudDoKLSQgcHlkb2MgbW9kX3B5d2Vic29ja2V0Ci0KLVRvIHVzZSBweXdlYnNv
Y2tldCBhcyBzdGFuZGFsb25lIHNlcnZlciwgcnVuIHRoaXMgdG8gcmVhZCB0aGUgZG9jdW1lbnQ6
Ci0kIHB5ZG9jIG1vZF9weXdlYnNvY2tldC5zdGFuZGFsb25lCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Fib3J0
X2hhbmRzaGFrZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwODAyM2Ex
ZmU5MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtl
X3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIs
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLQotCi1kZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFi
b3J0ZWRCeVVzZXJFeGNlcHRpb24oCi0gICAgICAgICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHBhc3MKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvYWJvcnRfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF93c2gucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYmYwMDVmNmEzNy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDMgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGhhbmRzaGFrZQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigKLSAgICAgICAg
IkFib3J0ZWQgaW4gd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIikKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjljZDdlMWVlNjUuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTM0ICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgot
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0K
LSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRp
b24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08
aHRtbD4KLTxoZWFkPgotPHRpdGxlPkFycmF5QnVmZmVyIGJlbmNobWFyazwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotdmFyIFBSSU5UX1NJWkUgPSB0
cnVlOwotCi0vLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgotdmFyIFNUQVJUX1NJWkUgPSAxMCAq
IDEwMjQ7Ci0vLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBhbiBhcnJheSBleGNl
ZWRzIHRoaXMgdGhyZXNob2xkLgotdmFyIFNUT1BfVEhSRVNIT0xEID0gMTAwMDAwICogMTAyNDsK
LS8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21hbGwsIHdyaXRlL3JlYWQgdGhlIGFy
cmF5IG11bHRpcGxlIHRpbWVzCi0vLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJlYWNoZXMgdGhp
cyB0aHJlc2hvbGQuCi12YXIgTUlOX1RPVEFMID0gMTAwMDAwICogMTAyNDsKLXZhciBNVUxUSVBM
SUVSUyA9IFs1LCAyXTsKLQotLy8gUmVwZWF0IGJlbmNobWFyayBmb3Igc2V2ZXJhbCB0aW1lcyB0
byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAotLy8gKHN1Y2ggYXMgSklUKSBydW4u
Ci12YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOwotCi1mdW5jdGlvbiB3cml0ZUJlbmNobWFyayhz
aXplLCBtaW5Ub3RhbCkgewotICB2YXIgdG90YWxTaXplID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6
ZSA8IG1pblRvdGFsKSB7Ci0gICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNp
emUpOwotCi0gICAgLy8gV3JpdGUgJ2Ency4KLSAgICBmaWxsQXJyYXlCdWZmZXIoYXJyYXlCdWZm
ZXIsIDB4NjEpOwotCi0gICAgdG90YWxTaXplICs9IHNpemU7Ci0gIH0KLSAgcmV0dXJuIHRvdGFs
U2l6ZTsKLX0KLQotZnVuY3Rpb24gcmVhZEJlbmNobWFyayhzaXplLCBtaW5Ub3RhbCkgewotICB2
YXIgdG90YWxTaXplID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7Ci0gICAg
dmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOwotCi0gICAgaWYgKCF2ZXJp
ZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsKLSAgICAgIHF1ZXVlTG9nKCdWZXJp
ZmljYXRpb24gZmFpbGVkJyk7Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgdG90YWxT
aXplICs9IHNpemU7Ci0gIH0KLSAgcmV0dXJuIHRvdGFsU2l6ZTsKLX0KLQotZnVuY3Rpb24gcnVu
QmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIHNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9sZCwKLSAgICAgICAgICAgICAgICAg
ICAgICBtaW5Ub3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVycywKLSAgICAg
ICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsKLSAgd2hpbGUgKHNpemUgPD0gc3Rv
cFRocmVzaG9sZCkgewotICAgIHZhciBtYXhTcGVlZCA9IDA7Ci0KLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKLSAgICAgIHZhciBzdGFydFRpbWVJbk1z
ID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgICAgIHZhciB0b3RhbFNpemUgPSBiZW5jaG1hcmtGdW5j
dGlvbihzaXplLCBtaW5Ub3RhbCk7Ci0KLSAgICAgIG1heFNwZWVkID0gTWF0aC5tYXgobWF4U3Bl
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVNwZWVkSW5LQih0b3RhbFNp
emUsIHN0YXJ0VGltZUluTXMpKTsKLSAgICB9Ci0gICAgcXVldWVMb2coZm9ybWF0UmVzdWx0SW5L
aUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKLQotICAgIHNpemUgKj0gbXVsdGlwbGll
cnNbbXVsdGlwbGllckluZGV4XTsKLSAgICBtdWx0aXBsaWVySW5kZXggPSAobXVsdGlwbGllcklu
ZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVuQmVu
Y2htYXJrcygpIHsKLSAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFNwZWVkIGluIGtC
L3MnKTsKLQotICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJrJyk7Ci0gIHJ1bkJlbmNobWFyaygK
LSAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RP
VEFMLCBNVUxUSVBMSUVSUywgMCk7Ci0gIHF1ZXVlTG9nKCdGaW5pc2hlZCcpOwotCi0gIHF1ZXVl
TG9nKCdSZWFkIGJlbmNobWFyaycpOwotICBydW5CZW5jaG1hcmsoCi0gICAgICByZWFkQmVuY2ht
YXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywg
MCk7Ci0gIGFkZFRvTG9nKCdGaW5pc2hlZCcpOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewotICBs
b2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgcXVldWVMb2cod2lu
ZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgYWRkVG9Mb2coJ1N0
YXJ0ZWQuLi4nKTsKLQotICBzZXRUaW1lb3V0KHJ1bkJlbmNobWFya3MsIDApOwotfQotCi08L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLTx0ZXh0YXJlYQotICAgIGlk
PSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNoX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2hfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MDY3Y2E3ZDg5NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2JlbmNoX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIkEgc2ltcGxlIGxvYWQgdGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50
cy4KLQotQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBhIG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGlt
ZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCi10aGlzIGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFy
dHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNvY2tldCBtZXNzYWdlcwotY29udGFpbmluZyA8
bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMuIDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBw
b2ludAotdmFsdWUuIDxjb3VudD4gbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlLgotIiIiCi0KLQot
aW1wb3J0IHRpbWUKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6Ci0gICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVf
bWVzc2FnZSgpCi0gICAgcGFydHMgPSBsaW5lLnNwbGl0KCcgJykKLSAgICBpZiBsZW4ocGFydHMp
ICE9IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBwYXJhbWV0ZXIgZm9ybWF0JykK
LSAgICB3YWl0ID0gZmxvYXQocGFydHNbMF0pCi0gICAgY291bnQgPSBpbnQocGFydHNbMV0pCi0g
ICAgbWVzc2FnZSA9IHBhcnRzWzJdCi0gICAgZm9yIGkgaW4geHJhbmdlKGNvdW50KToKLSAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHRpbWUu
c2xlZXAod2FpdCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUvYmVuY2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTIxODE3M2EwZjEuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMjAzICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08aHRtbD4K
LTxoZWFkPgotPHRpdGxlPldlYlNvY2tldCBiZW5jaG1hcms8L3RpdGxlPgotPHNjcmlwdCBzcmM9
InV0aWxfbWFpbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgYWRk
cmVzc0JveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGdldENvbmZpZygpIHsKLSAgcmV0dXJuIHsKLSAg
ICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFsdWUsCi0gICAgcHJpbnRTaXplOiBnZXRCb29sRnJv
bUNoZWNrQm94KCdwcmludHNpemUnKSwKLSAgICBudW1Tb2NrZXRzOiBnZXRJbnRGcm9tSW5wdXQo
J251bXNvY2tldHMnKSwKLSAgICAvLyBJbml0aWFsIHNpemUgb2YgbWVzc2FnZXMuCi0gICAgbnVt
SXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW1pdGVyYXRpb25zJyksCi0gICAgbnVtV2Fy
bVVwSXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW13YXJtdXBpdGVyYXRpb25zJyksCi0g
ICAgc3RhcnRTaXplOiBnZXRJbnRGcm9tSW5wdXQoJ3N0YXJ0c2l6ZScpLAotICAgIC8vIFN0b3Bz
IGJlbmNobWFyayB3aGVuIHRoZSBzaXplIG9mIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRocmVzaG9s
ZC4KLSAgICBzdG9wVGhyZXNob2xkOiBnZXRJbnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hvbGQnKSwK
LSAgICAvLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIG1lc3NhZ2UgaXMgc21hbGwsIHNlbmQvcmVjZWl2
ZSBtdWx0aXBsZSBtZXNzYWdlcwotICAgIC8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hl
cyB0aGlzIHRocmVzaG9sZC4KLSAgICBtaW5Ub3RhbDogZ2V0SW50RnJvbUlucHV0KCdtaW50b3Rh
bCcpLAotICAgIG11bHRpcGxpZXJzOiBnZXRJbnRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGllcnMn
KSwKLSAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJykKLSAg
fTsKLX0KLQotdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ2JlbmNobWFyay5qcycpOwotd29ya2Vy
Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZTsKLQotZnVuY3Rpb24gb25TZW5kQmVuY2htYXJrKCkgewot
ICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0KLSAgaWYgKGdldEJvb2xGcm9tQ2hlY2tCb3go
J3dvcmtlcicpKSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAnc2VuZEJlbmNobWFy
aycsIGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nID0g
YWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAgICBj
b25maWcubWVhc3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwotICAgIHNlbmRCZW5jaG1hcmsoY29u
ZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBvblJlY2VpdmVCZW5jaG1hcmsoKSB7Ci0gIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2Vy
JykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdyZWNlaXZlQmVuY2htYXJrJywg
Y29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRU
b0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZp
Zy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgcmVjZWl2ZUJlbmNobWFyayhjb25m
aWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7Ci0gIHZhciBjb25m
aWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJykp
IHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdiYXRjaEJlbmNobWFyaycsIGNvbmZp
ZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nID0gYWRkVG9Mb2c7
Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAgICBjb25maWcubWVh
c3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwotICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0g
IH0KLX0KLQotZnVuY3Rpb24gb25TdG9wKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7
Ci0KLSAgaWYgKGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpKSB7Ci0gICAgd29ya2VyLnBv
c3RNZXNzYWdlKHt0eXBlOiAnc3RvcCcsIGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0g
ICAgY29uZmlnLmFkZFRvTG9nID0gYWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9
IGFkZFRvU3VtbWFyeTsKLSAgICBjb25maWcubWVhc3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwot
ICAgIHN0b3AoY29uZmlnKTsKLSAgfQotfQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0Jv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3N1bW1hcnknKTsKLQotICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9u
LnByb3RvY29sID09ICdodHRwczonID8gJ3dzczovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVmYXVs
dEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvYmVuY2htYXJrX2hl
bHBlcic7Ci0KLSAgYWRkcmVzc0JveC52YWx1ZSA9IGRlZmF1bHRBZGRyZXNzOwotCi0gIGFkZFRv
TG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1
bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgaWYg
KCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMg
bm90IGF2YWlsYWJsZScpOwotICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0iaW5pdCgpIj4KLQotPGRpdiBpZD0iYmVuY2htYXJrX2RpdiI+Ci0gIHVybCA8aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9IjQwIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIg
dmFsdWU9InNlbmQiIG9uY2xpY2s9Im9uU2VuZEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9
ImJ1dHRvbiIgdmFsdWU9InJlY2VpdmUiIG9uY2xpY2s9Im9uUmVjZWl2ZUJlbmNobWFyaygpIj4K
LSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImJhdGNoIiBvbmNsaWNrPSJvbkJhdGNoQmVu
Y2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic3RvcCIgb25jbGljaz0i
b25TdG9wKCkiPgotCi0gIDxici8+Ci0KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJp
bnRzaXplIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJwcmludHNpemUiPlByaW50IHNpemUgYW5k
IHRpbWUgcGVyIG1lc3NhZ2U8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ2
ZXJpZnlkYXRhIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJ2ZXJpZnlkYXRhIj5WZXJpZnkgZGF0
YTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IndvcmtlciI+Ci0gIDxsYWJl
bCBmb3I9IndvcmtlciI+UnVuIG9uIHdvcmtlcjwvbGFiZWw+Ci0KLSAgPGJyLz4KLQotICBQYXJh
bWV0ZXJzOgotCi0gIDxici8+Ci0KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZD5OdW0g
c29ja2V0czwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW1zb2NrZXRz
IiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5OdW1iZXIg
b2YgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW1p
dGVyYXRpb25zIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0
ZD5OdW1iZXIgb2Ygd2FybS11cCBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXdhcm11cGl0ZXJhdGlvbnMiIHZhbHVlPSIwIj48L3RkPgotICAgIDwv
dHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0YXJ0IHNpemU8L3RkPgotICAgICAgPHRkPjxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnRzaXplIiB2YWx1ZT0iMTAyNDAiPjwvdGQ+Ci0gICAgPC90
cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RvcCB0aHJlc2hvbGQ8L3RkPgotICAgICAgPHRkPjxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RvcHRocmVzaG9sZCIgdmFsdWU9IjEwMjQwMDAwMCI+PC90
ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5NaW5pbXVtIHRvdGFsPC90ZD4KLSAg
ICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1pbnRvdGFsIiB2YWx1ZT0iMTAyNDAwMDAw
Ij48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11bHRpcGxpZXJzPC90ZD4K
LSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxpZXJzIiB2YWx1ZT0iNSwg
MiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+Ci0KLTxkaXYgaWQ9ImxvZ19k
aXYiPgotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJsb2ciIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6
IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLTxkaXYgaWQ9InN1bW1hcnlfZGl2
Ij4KLSAgU3VtbWFyeQotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJzdW1tYXJ5IiByb3dzPSIyMCIg
c3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci0KLU5vdGU6
IEVmZmVjdCBvZiBSVFQgaXMgbm90IGVsaW1pbmF0ZWQuCi0KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9iZW5jaG1hcmsuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNDdhZTllMTNk
ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20v
b3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLWlmICh0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0g
InVuZGVmaW5lZCIpIHsKLSAgLy8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRz
KCd1dGlsLmpzJywgJ3V0aWxfd29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9s
ZGluZyBnbG9iYWxzLgotdmFyIGJlbmNobWFyayA9IHtzdGFydFRpbWVJbk1zOiAwfTsKLQotdmFy
IHNvY2tldHMgPSBbXTsKLXZhciBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwotCi12YXIgdGlt
ZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lTb2NrZXQoc29ja2V0KSB7Ci0gIHNvY2tl
dC5vbm9wZW4gPSBudWxsOwotICBzb2NrZXQub25tZXNzYWdlID0gbnVsbDsKLSAgc29ja2V0Lm9u
ZXJyb3IgPSBudWxsOwotICBzb2NrZXQub25jbG9zZSA9IG51bGw7Ci0gIHNvY2tldC5jbG9zZSgp
OwotfQotCi1mdW5jdGlvbiBkZXN0cm95QWxsU29ja2V0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7Ci0gICAgZGVzdHJveVNvY2tldChzb2NrZXRzW2ld
KTsKLSAgfQotICBzb2NrZXRzID0gW107Ci19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVw
KHNpemUsIGNvbmZpZykgewotICB0aW1lcklEID0gbnVsbDsKLQotICB2YXIgdG90YWxTaXplID0g
MDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0KLSAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGlmICghdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywg
ZXZlbnQuZGF0YSwgc2l6ZSkpIHsKLSAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci0gICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVkICs9IHNpemU7Ci0KLSAgICBpZiAodG90
YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2Fs
Y3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMs
IHRvdGFsU2l6ZSk7Ci0KLSAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9OwotCi0gIGZvciAo
dmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBz
b2NrZXRzW2ldOwotICAgIHNvY2tldC5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2VIYW5kbGVyOwotICB9
Ci0KLSAgdmFyIGRhdGFBcnJheSA9IFtdOwotCi0gIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcu
bWluVG90YWwpIHsKLSAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOwotCi0g
ICAgZmlsbEFycmF5QnVmZmVyKGJ1ZmZlciwgMHg2MSk7Ci0KLSAgICBkYXRhQXJyYXkucHVzaChi
dWZmZXIpOwotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci0KLSAgYmVuY2htYXJrLnN0YXJ0
VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsKLQotICB0b3RhbFNpemUgPSAwOwotCi0gIHZhciBz
b2NrZXRJbmRleCA9IDA7Ci0gIHZhciBkYXRhSW5kZXggPSAwOwotICB3aGlsZSAodG90YWxTaXpl
IDwgY29uZmlnLm1pblRvdGFsKSB7Ci0gICAgdmFyIGNvbW1hbmQgPSBbJ3NlbmQnXTsKLSAgICBj
b21tYW5kLnB1c2goY29uZmlnLnZlcmlmeURhdGEgPyAnMScgOiAnMCcpOwotICAgIHNvY2tldHNb
c29ja2V0SW5kZXhdLnNlbmQoY29tbWFuZC5qb2luKCcgJykpOwotICAgIHNvY2tldHNbc29ja2V0
SW5kZXhdLnNlbmQoZGF0YUFycmF5W2RhdGFJbmRleF0pOwotICAgIHNvY2tldEluZGV4ID0gKHNv
Y2tldEluZGV4ICsgMSkgJSBzb2NrZXRzLmxlbmd0aDsKLQotICAgIHRvdGFsU2l6ZSArPSBzaXpl
OwotICAgICsrZGF0YUluZGV4OwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmtT
dGVwKHNpemUsIGNvbmZpZykgewotICB0aW1lcklEID0gbnVsbDsKLQotICB2YXIgdG90YWxTaXpl
ID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0KLSAgdmFyIG9uTWVzc2FnZUhhbmRsZXIg
PSBmdW5jdGlvbihldmVudCkgewotICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0YS5i
eXRlTGVuZ3RoOwotICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKLSAgICAgIGNvbmZp
Zy5hZGRUb0xvZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCi0gICAg
ICAgICAgYnl0ZXNSZWNlaXZlZCArICdCJyk7Ci0gICAgICBkZXN0cm95QWxsU29ja2V0cygpOwot
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChjb25maWcudmVyaWZ5RGF0YSAmJiAhdmVy
aWZ5QXJyYXlCdWZmZXIoZXZlbnQuZGF0YSwgMHg2MSkpIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xv
ZygnUmVzcG9uc2UgdmVyaWZpY2F0aW9uIGZhaWxlZCcpOwotICAgICAgZGVzdHJveUFsbFNvY2tl
dHMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b3RhbFJlcGxpZWQgKz0gYnl0ZXNS
ZWNlaXZlZDsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsKLSAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBi
ZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplKTsKLQotICAgIHJ1bk5leHRUYXNrKGNv
bmZpZyk7Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytp
KSB7Ci0gICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07Ci0gICAgc29ja2V0LmJpbmFyeVR5cGUg
PSAnYXJyYXlidWZmZXInOwotICAgIHNvY2tldC5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2VIYW5kbGVy
OwotICB9Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsKLQot
ICB2YXIgc29ja2V0SW5kZXggPSAwOwotICB3aGlsZSAodG90YWxTaXplIDwgY29uZmlnLm1pblRv
dGFsKSB7Ci0gICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZCgncmVjZWl2ZSAnICsgc2l6ZSk7
Ci0gICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNvY2tldHMubGVuZ3RoOwot
Ci0gICAgdG90YWxTaXplICs9IHNpemU7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY3JlYXRlU29ja2V0
KGNvbmZpZykgewotICAvLyBUT0RPKHR5b3NoaW5vKTogQWRkIFRDUCB3YXJtIHVwLgotICB2YXIg
dXJsID0gY29uZmlnLnByZWZpeFVybDsKLQotICBjb25maWcuYWRkVG9Mb2coJ0Nvbm5lY3QgJyAr
IHVybCk7Ci0KLSAgdmFyIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTsKLSAgc29ja2V0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdVbmV4cGVj
dGVkIG1lc3NhZ2UgcmVjZWl2ZWQuIEFib3J0aW5nLicpOwotICB9OwotICBzb2NrZXQub25lcnJv
ciA9IGZ1bmN0aW9uKCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnRXJyb3InKTsKLSAgfTsKLSAg
c29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygn
Q2xvc2VkJyk7Ci0gIH07Ci0gIHJldHVybiBzb2NrZXQ7Ci19Ci0KLXZhciB0YXNrcyA9IFtdOwot
Ci1mdW5jdGlvbiBzdGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0KHRpbWVy
SUQpOwotICBkZXN0cm95QWxsU29ja2V0cygpOwotCi0gIG51bUVzdGFibGlzaGVkU29ja2V0cyA9
IDA7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtU29ja2V0czsgKytpKSB7Ci0g
ICAgdmFyIHNvY2tldCA9IGNyZWF0ZVNvY2tldChjb25maWcpOwotICAgIHNvY2tldC5vbm9wZW4g
PSBmdW5jdGlvbigpIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygnT3BlbmVkJyk7Ci0KLSAgICAg
ICsrbnVtRXN0YWJsaXNoZWRTb2NrZXRzOwotCi0gICAgICBpZiAobnVtRXN0YWJsaXNoZWRTb2Nr
ZXRzID09IHNvY2tldHMubGVuZ3RoKSB7Ci0gICAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0g
ICAgICB9Ci0gICAgfTsKLSAgICBzb2NrZXRzLnB1c2goc29ja2V0KTsKLSAgfQotfQotCi1mdW5j
dGlvbiBydW5OZXh0VGFzayhjb25maWcpIHsKLSAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOwot
ICBpZiAodGFzayA9PSB1bmRlZmluZWQpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVk
Jyk7Ci0gICAgZGVzdHJveUFsbFNvY2tldHMoKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgdGltZXJJ
RCA9IHNldFRpbWVvdXQodGFzaywgMCk7Ci19Ci0KLWZ1bmN0aW9uIGJ1aWxkTGVnZW5kU3RyaW5n
KGNvbmZpZykgewotICB2YXIgbGVnZW5kID0gJycKLSAgaWYgKGNvbmZpZy5wcmludFNpemUpCi0g
ICAgbGVnZW5kID0gJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFRpbWUvbWVzc2FnZSBpbiBtcywgJzsK
LSAgbGVnZW5kICs9ICdTcGVlZCBpbiBrQi9zJzsKLSAgcmV0dXJuIGxlZ2VuZDsKLX0KLQotZnVu
Y3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewotICByZXR1cm4gJyhXZWJTb2NrZXQnICsK
LSAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAidW5kZWZpbmVkIiA/ICdXb3Jr
ZXInIDogJ01haW4nKSArCi0gICAgJywgbnVtU29ja2V0cz0nICsgY29uZmlnLm51bVNvY2tldHMg
KwotICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAn
LCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCi0gICAgJywgbWluVG90YWw9JyAr
IGNvbmZpZy5taW5Ub3RhbCArCi0gICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmln
Lm51bVdhcm1VcEl0ZXJhdGlvbnMgKwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gYWRkVGFza3Mo
Y29uZmlnLCBzdGVwRnVuYykgewotICBmb3IgKHZhciBpID0gMDsKLSAgICAgIGkgPCBjb25maWcu
bnVtV2FybVVwSXRlcmF0aW9ucyArIGNvbmZpZy5udW1JdGVyYXRpb25zOyArK2kpIHsKLSAgICAv
LyBJZ25vcmUgdGhlIGZpcnN0IHxjb25maWcubnVtV2FybVVwSXRlcmF0aW9uc3wgaXRlcmF0aW9u
cy4KLSAgICBpZiAoaSA9PSBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucykKLSAgICAgIGFkZFJl
c3VsdENsZWFyaW5nVGFzayhjb25maWcpOwotCi0gICAgdmFyIG11bHRpcGxpZXJJbmRleCA9IDA7
Ci0gICAgZm9yICh2YXIgc2l6ZSA9IGNvbmZpZy5zdGFydFNpemU7Ci0gICAgICAgICBzaXplIDw9
IGNvbmZpZy5zdG9wVGhyZXNob2xkOwotICAgICAgICAgKyttdWx0aXBsaWVySW5kZXgpIHsKLSAg
ICAgIHZhciB0YXNrID0gc3RlcEZ1bmMuYmluZCgKLSAgICAgICAgICBudWxsLAotICAgICAgICAg
IHNpemUsCi0gICAgICAgICAgY29uZmlnKTsKLSAgICAgIHRhc2tzLnB1c2godGFzayk7Ci0gICAg
ICBzaXplICo9IGNvbmZpZy5tdWx0aXBsaWVyc1sKLSAgICAgICAgICBtdWx0aXBsaWVySW5kZXgg
JSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24g
YWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsIHRpdGxlKSB7Ci0gIHRhc2tzLnB1c2goZnVu
Y3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxsOwotICAgICAgY29uZmlnLmFkZFRvU3VtbWFy
eSh0aXRsZSk7Ci0gICAgICByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpOwotICAgICAgY2xlYXJB
dmVyYWdlRGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfSk7Ci19Ci0KLWZ1
bmN0aW9uIGFkZFJlc3VsdENsZWFyaW5nVGFzayhjb25maWcpIHsKLSAgdGFza3MucHVzaChmdW5j
dGlvbigpewotICAgICAgdGltZXJJRCA9IG51bGw7Ci0gICAgICBjbGVhckF2ZXJhZ2VEYXRhKCk7
Ci0gICAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9KTsKLX0KLQotZnVuY3Rpb24gc2VuZEJl
bmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdTZW5kIGJlbmNobWFyaycpOwot
ICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSk7Ci0KLSAgdGFza3Mg
PSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRUYXNrcyhjb25maWcsIHNlbmRCZW5j
aG1hcmtTdGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsICdTZW5kIEJlbmNo
bWFyayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25m
aWcpOwotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJrKGNvbmZpZykgewotICBjb25maWcu
YWRkVG9Mb2coJ1JlY2VpdmUgYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhidWlsZExl
Z2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRh
KCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOwotICBhZGRSZXN1
bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywKLSAgICAgICdSZWNlaXZlIEJlbmNobWFyayAnICsgZ2V0
Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25maWcpOwotfQotCi1m
dW5jdGlvbiBiYXRjaEJlbmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdCYXRj
aCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZp
ZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3Mo
Y29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29u
ZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgYWRk
VGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGlu
Z1Rhc2soY29uZmlnLCAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArCi0gICAgICBnZXRDb25maWdTdHJp
bmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIHN0
b3AoY29uZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgdGltZXJJRCA9IG51bGw7
Ci0gIGNvbmZpZy5hZGRUb0xvZygnU3RvcHBlZCcpOwotICBkZXN0cm95QWxsU29ja2V0cygpOwot
fQotCi1vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgewotICB2YXIgY29uZmlnID0gbWVz
c2FnZS5kYXRhLmNvbmZpZzsKLSAgY29uZmlnLmFkZFRvTG9nID0gd29ya2VyQWRkVG9Mb2c7Ci0g
IGNvbmZpZy5hZGRUb1N1bW1hcnkgPSB3b3JrZXJBZGRUb1N1bW1hcnk7Ci0gIGNvbmZpZy5tZWFz
dXJlVmFsdWUgPSB3b3JrZXJNZWFzdXJlVmFsdWU7Ci0gIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9
PT0gJ3NlbmRCZW5jaG1hcmsnKQotICAgIHNlbmRCZW5jaG1hcmsoY29uZmlnKTsKLSAgZWxzZSBp
ZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdyZWNlaXZlQmVuY2htYXJrJykKLSAgICByZWNlaXZl
QmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYmF0
Y2hCZW5jaG1hcmsnKQotICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1l
c3NhZ2UuZGF0YS50eXBlID09PSAnc3RvcCcpCi0gICAgc3RvcChjb25maWcpOwotfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NGFkMGJmZWVmYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxl
L2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiSGFuZGxlciBmb3IgYmVuY2htYXJrLmh0bWwuIiIiCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICMgVHVy
biBvZmYgY29tcHJlc3Npb24uCi0gICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBkYXRh
ID0gJycKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGNvbW1hbmQgPSByZXF1ZXN0LndzX3N0
cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBjb21tYW5kIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21tYW5kLCB1bmlj
b2RlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkYXRh
OicgKyBjb21tYW5kKQotICAgICAgICBjb21tYW5kcyA9IGNvbW1hbmQuc3BsaXQoJyAnKQotICAg
ICAgICBpZiBsZW4oY29tbWFuZHMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdJbnZhbGlkIGNvbW1hbmQgZGF0YTogJyArIGNvbW1hbmQpCi0KLSAgICAgICAgaWYgY29tbWFu
ZHNbMF0gPT0gJ3JlY2VpdmUnOgotICAgICAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSAhPSAyOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNvbW1hbmQnICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0gICAgICAgICAgICBzaXplID0gaW50KGNvbW1h
bmRzWzFdKQotCi0gICAgICAgICAgICAjIFJldXNlIGRhdGEgaWYgcG9zc2libGUuCi0gICAgICAg
ICAgICBpZiBsZW4oZGF0YSkgIT0gc2l6ZToKLSAgICAgICAgICAgICAgICBkYXRhID0gJ2EnICog
c2l6ZQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJp
bmFyeT1UcnVlKQotICAgICAgICBlbGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKLSAgICAgICAg
ICAgIGlmIGxlbihjb21tYW5kcykgIT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0lsbGVnYWwgbnVtYmVyIG9mIGFyZ3VtZW50
cyBmb3IgcmVjZWl2ZSBjb21tYW5kJyArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
KQotICAgICAgICAgICAgdmVyaWZ5X2RhdGEgPSBjb21tYW5kc1sxXSA9PSAnMScKLQotICAgICAg
ICAgICAgZGF0YSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAg
ICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
UGF5bG9hZCBub3QgcmVjZWl2ZWQnKQotICAgICAgICAgICAgc2l6ZSA9IGxlbihkYXRhKQotCi0g
ICAgICAgICAgICBpZiB2ZXJpZnlfZGF0YToKLSAgICAgICAgICAgICAgICBpZiBkYXRhICE9ICdh
JyAqIHNpemU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQg
dmVyaWZpY2F0aW9uIGZhaWxlZCcpCi0KLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNl
bmRfbWVzc2FnZShzdHIoc2l6ZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQ6ICcgKyBjb21tYW5kc1swXSkKLQotCi0jIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY2xvc2Vfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS9jbG9zZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI2YjA4Mzg0MDgxMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY2xv
c2Vfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCBzdHJ1Y3QKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQotCi0KLWRlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBpcyBO
b25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNvZGUsIHJlYXNvbiA9IGxpbmUuc3Bs
aXQoJyAnLCAxKQotICAgICAgICBpZiBjb2RlIGlzIE5vbmUgb3IgcmVhc29uIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVj
dGlvbihpbnQoY29kZSksIHJlYXNvbikKLSAgICAgICAgIyBjbG9zZV9jb25uZWN0aW9uKCkgaW5p
dGlhdGVzIGNsb3NpbmcgaGFuZHNoYWtlLiBJdCB2YWxpZGF0ZXMgY29kZQotICAgICAgICAjIGFu
ZCByZWFzb24uIElmIHlvdSB3YW50IHRvIHNlbmQgYSBicm9rZW4gY2xvc2UgZnJhbWUgZm9yIGEg
dGVzdCwKLSAgICAgICAgIyBmb2xsb3dpbmcgY29kZSB3aWxsIGJlIHVzZWZ1bC4KLSAgICAgICAg
IyA+IGRhdGEgPSBzdHJ1Y3QucGFjaygnIUgnLCBpbnQoY29kZSkpICsgcmVhc29uLmVuY29kZSgn
VVRGLTgnKQotICAgICAgICAjID4gcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVh
dGVfY2xvc2VfZnJhbWUoZGF0YSkpCi0gICAgICAgICMgPiAjIFN1cHByZXNzIHRvIHJlLXJlc3Bv
bmQgY2xpZW50IHJlc3BvbmRpbmcgY2xvc2UgZnJhbWUuCi0gICAgICAgICMgPiByYWlzZSBFeGNl
cHRpb24oImN1c3RvbWl6ZWQgc2VydmVyIGluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSIpCi0K
LQotZGVmIHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAg
ICAjIFNpbXBseSBlY2hvIGEgY2xvc2Ugc3RhdHVzIGNvZGUKLSAgICBjb2RlLCByZWFzb24gPSBy
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCi0KLSAgICAjIHB5
d2Vic29ja2V0IHNldHMgcHNldWRvIGNvZGUgZm9yIHJlY2VpdmluZyBhbiBlbXB0eSBib2R5IGNs
b3NlIGZyYW1lLgotICAgIGlmIGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNfUkVDRUlW
RUQ6Ci0gICAgICAgIGNvZGUgPSBOb25lCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgcmV0dXJu
IGNvZGUsIHJlYXNvbgotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvZXhhbXBsZS9jb25zb2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2NvbnNvbGUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NkNmQ4ZjgwNjc2Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb25zb2xlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MTcgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRz
IHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTwhLS0KLUEgc2lt
cGxlIGNvbnNvbGUgZm9yIHRlc3RpbmcgV2ViU29ja2V0IHNlcnZlci4KLQotVHlwZSBhbiBhZGRy
ZXNzIGludG8gdGhlIHRvcCB0ZXh0IGlucHV0IGFuZCBjbGljayBjb25uZWN0IHRvIGVzdGFibGlz
aAotV2ViU29ja2V0LiBUaGVuLCB0eXBlIHNvbWUgbWVzc2FnZSBpbnRvIHRoZSBib3R0b20gdGV4
dCBpbnB1dCBhbmQgY2xpY2sgc2VuZAotdG8gc2VuZCB0aGUgbWVzc2FnZS4gUmVjZWl2ZWQvc2Vu
dCBtZXNzYWdlcyBhbmQgY29ubmVjdGlvbiBzdGF0ZSB3aWxsIGJlIHNob3duCi1vbiB0aGUgbWlk
ZGxlIHRleHRhcmVhLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0IGNv
bnNvbGU8L3RpdGxlPgotPHNjcmlwdD4KLXZhciBzb2NrZXQgPSBudWxsOwotCi12YXIgc2hvd1Rp
bWVTdGFtcCA9IGZhbHNlOwotCi12YXIgYWRkcmVzc0JveCA9IG51bGw7Ci12YXIgcHJvdG9jb2xz
Qm94ID0gbnVsbDsKLXZhciBsb2dCb3ggPSBudWxsOwotdmFyIG1lc3NhZ2VCb3ggPSBudWxsOwot
dmFyIGZpbGVCb3ggPSBudWxsOwotdmFyIGNvZGVCb3ggPSBudWxsOwotdmFyIHJlYXNvbkJveCA9
IG51bGw7Ci0KLWZ1bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKLSAgcmV0dXJuIG5ldyBEYXRlKCku
Z2V0VGltZSgpOwotfQotCi1mdW5jdGlvbiBhZGRUb0xvZyhsb2cpIHsKLSAgaWYgKHNob3dUaW1l
U3RhbXApIHsKLSAgICBsb2dCb3gudmFsdWUgKz0gJ1snICsgZ2V0VGltZVN0YW1wKCkgKyAnXSAn
OwotICB9Ci0gIGxvZ0JveC52YWx1ZSArPSBsb2cgKyAnXG4nCi0gIC8vIExhcmdlIGVub3VnaCB0
byBrZWVwIHNob3dpbmcgdGhlIGxhdGVzdCBtZXNzYWdlLgotICBsb2dCb3guc2Nyb2xsVG9wID0g
MTAwMDAwMDsKLX0KLQotZnVuY3Rpb24gc2V0YmluYXJ5dHlwZShiaW5hcnlUeXBlKSB7Ci0gIGlm
ICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICBzb2NrZXQuYmluYXJ5VHlwZSA9IGJpbmFyeVR5cGU7Ci0gIGFkZFRvTG9nKCdT
ZXQgYmluYXJ5VHlwZSB0byAnICsgYmluYXJ5VHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIHNlbmQoKSB7
Ci0gIGlmICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBzb2NrZXQuc2VuZChtZXNzYWdlQm94LnZhbHVlKTsKLSAgYWRkVG9M
b2coJz4gJyArIG1lc3NhZ2VCb3gudmFsdWUpOwotICBtZXNzYWdlQm94LnZhbHVlID0gJyc7Ci19
Ci0KLWZ1bmN0aW9uIHNlbmRmaWxlKCkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9n
KCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgdmFyIGZpbGVzID0gZmls
ZUJveC5maWxlczsKLQotICBpZiAoZmlsZXMubGVuZ3RoID09IDApIHsKLSAgICBhZGRUb0xvZygn
RmlsZSBub3Qgc2VsZWN0ZWQnKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBzb2NrZXQuc2VuZChm
aWxlc1swXSk7Ci0gIGFkZFRvTG9nKCc+IFNlbmQgJyArIGZpbGVzWzBdLm5hbWUpOwotfQotCi1m
dW5jdGlvbiBwYXJzZVByb3RvY29scyhwcm90b2NvbHNUZXh0KSB7Ci0gIHZhciBwcm90b2NvbHMg
PSBwcm90b2NvbHNUZXh0LnNwbGl0KCcsJyk7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvdG9j
b2xzLmxlbmd0aDsgKytpKSB7Ci0gICAgcHJvdG9jb2xzW2ldID0gcHJvdG9jb2xzW2ldLnRyaW0o
KTsKLSAgfQotCi0gIGlmIChwcm90b2NvbHMubGVuZ3RoID09IDApIHsKLSAgICAvLyBEb24ndCBw
YXNzLgotICAgIHByb3RvY29scyA9IG51bGw7Ci0gIH0gZWxzZSBpZiAocHJvdG9jb2xzLmxlbmd0
aCA9PSAxKSB7Ci0gICAgaWYgKHByb3RvY29sc1swXS5sZW5ndGggPT0gMCkgewotICAgICAgLy8g
RG9uJ3QgcGFzcy4KLSAgICAgIHByb3RvY29scyA9IG51bGw7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IC8vIFBhc3MgYXMgYSBzdHJpbmcuCi0gICAgICBwcm90b2NvbHMgPSBwcm90b2NvbHNbMF07Ci0g
ICAgfQotICB9Ci0KLSAgcmV0dXJuIHByb3RvY29sczsKLX0KLQotZnVuY3Rpb24gY29ubmVjdCgp
IHsKLSAgdmFyIHVybCA9IGFkZHJlc3NCb3gudmFsdWU7Ci0gIHZhciBwcm90b2NvbHMgPSBwYXJz
ZVByb3RvY29scyhwcm90b2NvbHNCb3gudmFsdWUpOwotCi0gIGlmICgnV2ViU29ja2V0JyBpbiB3
aW5kb3cpIHsKLSAgICBpZiAocHJvdG9jb2xzKSB7Ci0gICAgICBzb2NrZXQgPSBuZXcgV2ViU29j
a2V0KHVybCwgcHJvdG9jb2xzKTsKLSAgICB9IGVsc2UgewotICAgICAgc29ja2V0ID0gbmV3IFdl
YlNvY2tldCh1cmwpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICByZXR1cm47Ci0gIH0KLQotICBz
b2NrZXQub25vcGVuID0gZnVuY3Rpb24gKCkgewotICAgIHZhciBleHRyYUluZm8gPSBbXTsKLSAg
ICBpZiAoKCdwcm90b2NvbCcgaW4gc29ja2V0KSAmJiBzb2NrZXQucHJvdG9jb2wpIHsKLSAgICAg
IGV4dHJhSW5mby5wdXNoKCdwcm90b2NvbCA9ICcgKyBzb2NrZXQucHJvdG9jb2wpOwotICAgIH0K
LSAgICBpZiAoKCdleHRlbnNpb25zJyBpbiBzb2NrZXQpICYmIHNvY2tldC5leHRlbnNpb25zKSB7
Ci0gICAgICBleHRyYUluZm8ucHVzaCgnZXh0ZW5zaW9ucyA9ICcgKyBzb2NrZXQuZXh0ZW5zaW9u
cyk7Ci0gICAgfQotCi0gICAgdmFyIGxvZ01lc3NhZ2UgPSAnT3BlbmVkJzsKLSAgICBpZiAoZXh0
cmFJbmZvLmxlbmd0aCA+IDApIHsKLSAgICAgIGxvZ01lc3NhZ2UgKz0gJyAoJyArIGV4dHJhSW5m
by5qb2luKCcsICcpICsgJyknOwotICAgIH0KLSAgICBhZGRUb0xvZyhsb2dNZXNzYWdlKTsKLSAg
fTsKLSAgc29ja2V0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgewotICAgIGlmICgoJ0Fy
cmF5QnVmZmVyJyBpbiB3aW5kb3cpICYmIChldmVudC5kYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZm
ZXIpKSB7Ci0gICAgICBhZGRUb0xvZygnPCBSZWNlaXZlZCBhbiBBcnJheUJ1ZmZlciBvZiAnICsg
ZXZlbnQuZGF0YS5ieXRlTGVuZ3RoICsKLSAgICAgICAgICAgICAgICcgYnl0ZXMnKQotICAgIH0g
ZWxzZSBpZiAoKCdCbG9iJyBpbiB3aW5kb3cpICYmIChldmVudC5kYXRhIGluc3RhbmNlb2YgQmxv
YikpIHsKLSAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGEgQmxvYiBvZiAnICsgZXZlbnQuZGF0
YS5zaXplICsgJyBieXRlcycpCi0gICAgfSBlbHNlIHsKLSAgICAgIGFkZFRvTG9nKCc8ICcgKyBl
dmVudC5kYXRhKTsKLSAgICB9Ci0gIH07Ci0gIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24gKCkg
ewotICAgIGFkZFRvTG9nKCdFcnJvcicpOwotICB9OwotICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0
aW9uIChldmVudCkgewotICAgIHZhciBsb2dNZXNzYWdlID0gJ0Nsb3NlZCAoJzsKLSAgICBpZiAo
KGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgJiYgKCdDbG9zZUV2ZW50JyBpbiB3aW5kb3cpICYmCi0g
ICAgICAgIChldmVudCBpbnN0YW5jZW9mIENsb3NlRXZlbnQpKSB7Ci0gICAgICBsb2dNZXNzYWdl
ICs9ICd3YXNDbGVhbiA9ICcgKyBldmVudC53YXNDbGVhbjsKLSAgICAgIC8vIGNvZGUgYW5kIHJl
YXNvbiBhcmUgcHJlc2VudCBvbmx5IGZvcgotICAgICAgLy8gZHJhZnQtaWV0Zi1oeWJpLXRoZXdl
YnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgotICAgICAgaWYgKCdjb2RlJyBpbiBldmVudCkg
ewotICAgICAgICBsb2dNZXNzYWdlICs9ICcsIGNvZGUgPSAnICsgZXZlbnQuY29kZTsKLSAgICAg
IH0KLSAgICAgIGlmICgncmVhc29uJyBpbiBldmVudCkgewotICAgICAgICBsb2dNZXNzYWdlICs9
ICcsIHJlYXNvbiA9ICcgKyBldmVudC5yZWFzb247Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIGxvZ01lc3NhZ2UgKz0gJ0Nsb3NlRXZlbnQgaXMgbm90IGF2YWlsYWJsZSc7Ci0gICAgfQot
ICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UgKyAnKScpOwotICB9OwotCi0gIGlmIChwcm90b2NvbHMp
IHsKLSAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsICsgJyAocHJvdG9jb2xzID0gJyArIHBy
b3RvY29scyArICcpJyk7Ci0gIH0gZWxzZSB7Ci0gICAgYWRkVG9Mb2coJ0Nvbm5lY3QgJyArIHVy
bCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2xvc2VTb2NrZXQoKSB7Ci0gIGlmICghc29ja2V0KSB7
Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBp
ZiAoY29kZUJveC52YWx1ZSB8fCByZWFzb25Cb3gudmFsdWUpIHsKLSAgICBzb2NrZXQuY2xvc2Uo
Y29kZUJveC52YWx1ZSwgcmVhc29uQm94LnZhbHVlKTsKLSAgfSBlbHNlIHsKLSAgICBzb2NrZXQu
Y2xvc2UoKTsKLSAgfQotfQotCi1mdW5jdGlvbiBwcmludFN0YXRlKCkgewotICBpZiAoIXNvY2tl
dCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgYWRkVG9Mb2coCi0gICAgICAndXJsID0gJyArIHNvY2tldC51cmwgKwotICAgICAgJywgcmVh
ZHlTdGF0ZSA9ICcgKyBzb2NrZXQucmVhZHlTdGF0ZSArCi0gICAgICAnLCBidWZmZXJlZEFtb3Vu
dCA9ICcgKyBzb2NrZXQuYnVmZmVyZWRBbW91bnQpOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewot
ICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonID8gJ3dz
czovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVmYXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5kb3cu
bG9jYXRpb24uaG9zdCArICcvZWNobyc7Ci0KLSAgYWRkcmVzc0JveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIHByb3RvY29sc0JveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwcm90b2NvbHMnKTsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZycpOwotICBtZXNzYWdlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2Un
KTsKLSAgZmlsZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlJyk7Ci0gIGNvZGVC
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpOwotICByZWFzb25Cb3ggPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVhc29uJyk7Ci0KLSAgYWRkcmVzc0JveC52YWx1ZSA9IGRl
ZmF1bHRBZGRyZXNzOwotCi0gIGlmICghKCdXZWJTb2NrZXQnIGluIHdpbmRvdykpIHsKLSAgICBh
ZGRUb0xvZygnV2ViU29ja2V0IGlzIG5vdCBhdmFpbGFibGUnKTsKLSAgfQotfQotPC9zY3JpcHQ+
Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotZm9ybSB7Ci0gIG1hcmdpbjogMHB4OwotfQotCi0j
Y29ubmVjdF9kaXYsICNsb2dfZGl2LCAjc2VuZF9kaXYsICNzZW5kZmlsZV9kaXYsICNjbG9zZV9k
aXYsICNwcmludHN0YXRlX2RpdiB7Ci0gIHBhZGRpbmc6IDVweDsKLSAgbWFyZ2luOiA1cHg7Ci0g
IGJvcmRlci13aWR0aDogMHB4IDBweCAwcHggMTBweDsKLSAgYm9yZGVyLXN0eWxlOiBzb2xpZDsK
LSAgYm9yZGVyLWNvbG9yOiBzaWx2ZXI7Ci19Ci08L3N0eWxlPgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJpbml0KCkiPgotCi08ZGl2PgotCi08ZGl2IGlkPSJjb25uZWN0X2RpdiI+Ci0gIDxmb3Jt
IGFjdGlvbj0iIyIgb25zdWJtaXQ9ImNvbm5lY3QoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAgdXJs
IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgotICAgIDxpbnB1dCB0
eXBlPSJzdWJtaXQiIHZhbHVlPSJjb25uZWN0Ij4KLSAgICA8YnIvPgotICAgIHByb3RvY29scyA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InByb3RvY29scyIgc2l6ZT0iMjAiPgotICA8L2Zvcm0+Ci08
L2Rpdj4KLQotPGRpdiBpZD0ibG9nX2RpdiI+Ci0gIDx0ZXh0YXJlYSBpZD0ibG9nIiByb3dzPSIx
MCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci0gIDxici8+Ci0gIDxpbnB1dCB0eXBl
PSJjaGVja2JveCIKLSAgICAgICAgIG5hbWU9InNob3d0aW1lc3RhbXAiCi0gICAgICAgICB2YWx1
ZT0ic2hvd3RpbWVzdGFtcCIKLSAgICAgICAgIG9uY2xpY2s9InNob3dUaW1lU3RhbXAgPSB0aGlz
LmNoZWNrZWQiPlNob3cgdGltZSBzdGFtcAotPC9kaXY+Ci0KLTxkaXYgaWQ9InNlbmRfZGl2Ij4K
LSAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZCgpOyByZXR1cm4gZmFsc2U7Ij4KLSAg
ICBkYXRhIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWVzc2FnZSIgc2l6ZT0iNDAiPgotICAgIDxp
bnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzZW5kIj4KLSAgPC9mb3JtPgotPC9kaXY+Ci0KLTxk
aXYgaWQ9InNlbmRmaWxlX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9InNlbmRm
aWxlKCk7IHJldHVybiBmYWxzZTsiPgotICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmlsZSIg
c2l6ZT0iNDAiPgotICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzZW5kIGZpbGUiPgot
ICA8L2Zvcm0+Ci0KLSAgU2V0IGJpbmFyeVR5cGUKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAg
ICAgICAgbmFtZT0iYmluYXJ5dHlwZSIKLSAgICAgICAgIHZhbHVlPSJibG9iIgotICAgICAgICAg
b25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYmxvYicpIiBjaGVja2VkPmJsb2IKLSAgPGlucHV0IHR5
cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iYmluYXJ5dHlwZSIKLSAgICAgICAgIHZhbHVlPSJh
cnJheWJ1ZmZlciIKLSAgICAgICAgIG9uY2xpY2s9InNldGJpbmFyeXR5cGUoJ2FycmF5YnVmZmVy
JykiPmFycmF5YnVmZmVyCi08L2Rpdj4KLQotPGRpdiBpZD0iY2xvc2VfZGl2Ij4KLSAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0iY2xvc2VTb2NrZXQoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAg
Y29kZSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvZGUiIHNpemU9IjEwIj4KLSAgICByZWFzb24g
PGlucHV0IHR5cGU9InRleHQiIGlkPSJyZWFzb24iIHNpemU9IjIwIj4KLSAgICA8aW5wdXQgdHlw
ZT0ic3VibWl0IiB2YWx1ZT0iY2xvc2UiPgotICA8L2Zvcm0+Ci08L2Rpdj4KLQotPGRpdiBpZD0i
cHJpbnRzdGF0ZV9kaXYiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icHJpbnQgc3Rh
dGUiIG9uY2xpY2s9InByaW50U3RhdGUoKTsiPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Nvb2tpZV93c2gucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9leGFtcGxlL2Nvb2tpZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhiMzI3MTUyZTcwMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY29v
a2llX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMgQ29weXJpZ2h0IDIw
MTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5n
b29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0KLWltcG9ydCB1cmxwYXJzZQot
Ci0KLWRlZiBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgdmFsdWUpOgotICAgIHJlcXVlc3QuZXh0
cmFfaGVhZGVycy5hcHBlbmQoKCdTZXQtQ29va2llJywgdmFsdWUpKQotCi0KLWRlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBjb21wb25lbnRzID0gdXJscGFy
c2UudXJscGFyc2UocmVxdWVzdC51cmkpCi0gICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KLQot
ICAgIE9ORV9EQVlfTElGRSA9ICdNYXgtQWdlPTg2NDAwJwotCi0gICAgaWYgY29tbWFuZCA9PSAn
c2V0JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1i
YXInLCBPTkVfREFZX0xJRkVdKSkKLSAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6
Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LAotICAgICAgICAgICAgJzsgJy5qb2lu
KFsnaHR0cE9ubHlGb289YmFyJywgT05FX0RBWV9MSUZFLCAnaHR0cE9ubHknXSkpCi0gICAgZWxp
ZiBjb21tYW5kID09ICdjbGVhcic6Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAn
Zm9vPTA7IE1heC1BZ2U9MCcpCi0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnaHR0
cE9ubHlGb289MDsgTWF4LUFnZT0wJykKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNob19j
bGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fY2xpZW50LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5NDNjZTY0ZThiODguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2VjaG9fY2xpZW50LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEyOCArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlNpbXBs
ZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVjYXVzZSBvZiBoaXN0
b3JpY2FsIHJlYXNvbi4KLQotbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBtdXN0IGJlIGluIFBZ
VEhPTlBBVEguCi0KLUV4YW1wbGUgVXNhZ2U6Ci0KLSMgc2VydmVyIHNldHVwCi0gJSBjZCAkcHl3
ZWJzb2NrZXQKLSAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCi0gICAgLWQgJGN3ZC9zcmMvZXhhbXBsZQotCi0jIHJ1
biBjbGllbnQKLSAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3JjL2V4YW1wbGUvZWNo
b19jbGllbnQucHkgLXAgODg4MCBcCi0gICAgIC1zIGxvY2FsaG9zdCBcCi0gICAgIC1vIGh0dHA6
Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAotCi1vcgotCi0jIHJ1biBlY2hvIGNsaWVudCB0
byB0ZXN0IElFVEYgSHlCaSAwMCBwcm90b2NvbAotIHJ1biB3aXRoIC0tcHJvdG9jb2wtdmVyc2lv
bj1oeWJpMDAKLSIiIgotCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBjb2RlY3MKLWltcG9ydCBs
b2dnaW5nCi1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLWltcG9ydCBvcwotaW1w
b3J0IHJhbmRvbQotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1pbXBv
cnQgc3lzCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5z
aW9ucyBpbXBvcnQgX3BhcnNlX3dpbmRvd19iaXRzCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJl
YW0gaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJl
YW1IaXhpZTc1Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlv
bnMKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1RJTUVPVVRfU0VDID0g
MTAKLV9VTkRFRklORURfUE9SVCA9IC0xCi0KLV9VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlOiB3
ZWJzb2NrZXRcclxuJwotX1VQR1JBREVfSEVBREVSX0hJWElFNzUgPSAnVXBncmFkZTogV2ViU29j
a2V0XHJcbicKLV9DT05ORUNUSU9OX0hFQURFUiA9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
LQotIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQg
Y2xvc2luZyBoYW5kc2hha2UKLV9HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKLQotX1BST1RP
Q09MX1ZFUlNJT05fSFlCSTEzID0gJ2h5YmkxMycKLV9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCA9
ICdoeWJpMDgnCi1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDAgPSAnaHliaTAwJwotX1BST1RPQ09M
X1ZFUlNJT05fSElYSUU3NSA9ICdoaXhpZTc1JwotCi0jIENvbnN0YW50cyBmb3IgdGhlIC0tdGxz
X21vZHVsZSBmbGFnLgotX1RMU19CWV9TVEFOREFSRF9NT0RVTEUgPSAnc3NsJwotX1RMU19CWV9Q
WU9QRU5TU0wgPSAncHlvcGVuc3NsJwotCi0jIFZhbHVlcyB1c2VkIGJ5IHRoZSAtLXRscy12ZXJz
aW9uIGZsYWcuCi1fVExTX1ZFUlNJT05fU1NMMjMgPSAnc3NsMjMnCi1fVExTX1ZFUlNJT05fU1NM
MyA9ICdzc2wzJwotX1RMU19WRVJTSU9OX1RMUzEgPSAndGxzMScKLQotCi1jbGFzcyBDbGllbnRI
YW5kc2hha2VFcnJvcihFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgX2J1aWxkX21ldGhv
ZF9saW5lKHJlc291cmNlKToKLSAgICByZXR1cm4gJ0dFVCAlcyBIVFRQLzEuMVxyXG4nICUgcmVz
b3VyY2UKLQotCi1kZWYgX29yaWdpbl9oZWFkZXIoaGVhZGVyLCBvcmlnaW4pOgotICAgICMgNC4x
IDEzLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIk9yaWdpbjoiLCBhIFUrMDAyMCBTUEFD
RSBjaGFyYWN0ZXIsCi0gICAgIyBhbmQgdGhlIC9vcmlnaW4vIHZhbHVlLCBjb252ZXJ0ZWQgdG8g
QVNDSUkgbG93ZXJjYXNlLCB0byAvZmllbGRzLy4KLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUg
KGhlYWRlciwgb3JpZ2luLmxvd2VyKCkpCi0KLQotZGVmIF9mb3JtYXRfaG9zdF9oZWFkZXIoaG9z
dCwgcG9ydCwgc2VjdXJlKToKLSAgICAjIDQuMSA5LiBMZXQgL2hvc3Rwb3J0LyBiZSBhbiBlbXB0
eSBzdHJpbmcuCi0gICAgIyA0LjEgMTAuIEFwcGVuZCB0aGUgL2hvc3QvIHZhbHVlLCBjb252ZXJ0
ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0bwotICAgICMgL2hvc3Rwb3J0LwotICAgIGhvc3Rwb3J0
ID0gaG9zdC5sb3dlcigpCi0gICAgIyA0LjEgMTEuIElmIC9zZWN1cmUvIGlzIGZhbHNlLCBhbmQg
L3BvcnQvIGlzIG5vdCA4MCwgb3IgaWYgL3NlY3VyZS8KLSAgICAjIGlzIHRydWUsIGFuZCAvcG9y
dC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBVKzAwM0EgQ09MT04gY2hhcmFjdGVyCi0gICAg
IyAoOikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIC9wb3J0LywgZXhwcmVzc2VkIGFzIGEgYmFz
ZS10ZW4gaW50ZWdlciwKLSAgICAjIHRvIC9ob3N0cG9ydC8KLSAgICBpZiAoKG5vdCBzZWN1cmUg
YW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUKSBvcgotICAgICAgICAo
c2VjdXJlIGFuZCBwb3J0ICE9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQp
KToKLSAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3RyKHBvcnQpCi0gICAgIyA0LjEgMTIuIGNv
bmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoiLCBhIFUrMDAyMCBTUEFDRQotICAgICMg
Y2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICclczog
JXNcclxuJyAlIChjb21tb24uSE9TVF9IRUFERVIsIGhvc3Rwb3J0KQotCi0KLWRlZiBfcmVjZWl2
ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6Ci0gICAgYnl0ZXMgPSBbXQotICAgIHJlbWFpbmluZyA9
IGxlbmd0aAotICAgIHdoaWxlIHJlbWFpbmluZyA+IDA6Ci0gICAgICAgIHJlY2VpdmVkX2J5dGVz
ID0gc29ja2V0LnJlY3YocmVtYWluaW5nKQotICAgICAgICBpZiBub3QgcmVjZWl2ZWRfYnl0ZXM6
Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKAotICAgICAgICAgICAgICAgICdDb25uZWN0aW9u
IGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAgICAgICAgICAg
ICAgICcocmVxdWVzdGVkICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQot
ICAgICAgICAgICAgICAgIChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0gICAgICAgIGJ5
dGVzLmFwcGVuZChyZWNlaXZlZF9ieXRlcykKLSAgICAgICAgcmVtYWluaW5nIC09IGxlbihyZWNl
aXZlZF9ieXRlcykKLSAgICByZXR1cm4gJycuam9pbihieXRlcykKLQotCi1kZWYgX2dldF9tYW5k
YXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSk6Ci0gICAgIiIiR2V0cyB0aGUgdmFsdWUgb2YgdGhl
IGhlYWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tIGZpZWxkcy4KLQotICAgIFRoaXMgZnVuY3Rp
b24gZXhwZWN0cyB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmll
ZCBuYW1lCi0gICAgaW4gZmllbGRzLiBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hh
a2VFcnJvci4KLSAgICAiIiIKLQotICAgIHZhbHVlcyA9IGZpZWxkcy5nZXQobmFtZS5sb3dlcigp
KQotICAgIGlmIHZhbHVlcyBpcyBOb25lIG9yIGxlbih2YWx1ZXMpID09IDA6Ci0gICAgICAgIHJh
aXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgJyVzIGhlYWRlciBub3QgZm91
bmQ6ICVyJyAlIChuYW1lLCB2YWx1ZXMpKQotICAgIGlmIGxlbih2YWx1ZXMpID4gMToKLSAgICAg
ICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAnTXVsdGlwbGUgJXMg
aGVhZGVycyBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCi0gICAgcmV0dXJuIHZhbHVlc1sw
XQotCi0KLWRlZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsIG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdmFsdWUsIGNhc2Vfc2Vuc2l0aXZl
PUZhbHNlKToKLSAgICAiIiJHZXRzIGFuZCB2YWxpZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBoZWFk
ZXIgc3BlY2lmaWVkIGJ5IG5hbWUgZnJvbQotICAgIGZpZWxkcy4KLQotICAgIElmIGV4cGVjdGVk
X3ZhbHVlIGlzIHNwZWNpZmllZCwgY29tcGFyZXMgZXhwZWN0ZWQgdmFsdWUgYW5kIGFjdHVhbCB2
YWx1ZQotICAgIGFuZCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3Igb24gZmFpbHVyZS4g
WW91IGNhbiBzcGVjaWZ5IGNhc2UKLSAgICBzZW5zaXRpdmVuZXNzIGluIHRoaXMgY29tcGFyaXNv
biBieSBjYXNlX3NlbnNpdGl2ZSBwYXJhbWV0ZXIuIFRoaXMgZnVuY3Rpb24KLSAgICBleHBlY3Rz
IHRoYXQgdGhlcmUncyBvbmx5IG9uZSBoZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgaW4g
ZmllbGRzLgotICAgIE90aGVyd2lzZSwgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgot
ICAgICIiIgotCi0gICAgdmFsdWUgPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBuYW1l
KQotCi0gICAgaWYgKChjYXNlX3NlbnNpdGl2ZSBhbmQgdmFsdWUgIT0gZXhwZWN0ZWRfdmFsdWUp
IG9yCi0gICAgICAgIChub3QgY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlLmxvd2VyKCkgIT0gZXhw
ZWN0ZWRfdmFsdWUubG93ZXIoKSkpOgotICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJv
cigKLSAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyIChleHBlY3Rl
ZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgIChuYW1lLCBleHBlY3RlZF92YWx1ZSwg
dmFsdWUpKQotCi0KLWNsYXNzIF9UTFNTb2NrZXQob2JqZWN0KToKLSAgICAiIiJXcmFwcGVyIGZv
ciBhIFRMUyBjb25uZWN0aW9uLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsCi0gICAgICAg
ICAgICAgICAgIHJhd19zb2NrZXQsIHRsc19tb2R1bGUsIHRsc192ZXJzaW9uLCBkaXNhYmxlX3Rs
c19jb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xv
Z2dlcihzZWxmKQotCi0gICAgICAgIGlmIHRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9N
T0RVTEU6Ci0gICAgICAgICAgICBpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMjM6
Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNzbC5QUk9UT0NPTF9TU0x2MjMKLSAgICAgICAg
ICAgIGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9OX1NTTDM6Ci0gICAgICAgICAgICAg
ICAgdmVyc2lvbiA9IHNzbC5QUk9UT0NPTF9TU0x2MwotICAgICAgICAgICAgZWxpZiB0bHNfdmVy
c2lvbiA9PSBfVExTX1ZFUlNJT05fVExTMToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3Ns
LlBST1RPQ09MX1RMU3YxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tdGxzLXZlcnNpb24g
ZmxhZzogJXInICUgdGxzX3ZlcnNpb24pCi0KLSAgICAgICAgICAgIGlmIGRpc2FibGVfdGxzX2Nv
bXByZXNzaW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAg
ICAgICAgICAgICctLWRpc2FibGUtdGxzLWNvbXByZXNzaW9uIGlzIG5vdCBhdmFpbGFibGUgZm9y
IHNzbCAnCi0gICAgICAgICAgICAgICAgICAgICdtb2R1bGUnKQotCi0gICAgICAgICAgICBzZWxm
Ll90bHNfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHJhd19zb2NrZXQsIHNzbF92ZXJzaW9uPXZl
cnNpb24pCi0KLSAgICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4gSGFuZHNoYWtlIGlz
IGRvbmUgb24gd3JhcF9zb2NrZXQgY2FsbC4KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCJDaXBoZXI6ICVzIiwgc2VsZi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAgZWxpZiB0
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgdGxzX3ZlcnNp
b24gPT0gX1RMU19WRVJTSU9OX1NTTDIzOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBPcGVu
U1NMLlNTTC5TU0x2MjNfTUVUSE9ECi0gICAgICAgICAgICBlbGlmIHRsc192ZXJzaW9uID09IF9U
TFNfVkVSU0lPTl9TU0wzOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBPcGVuU1NMLlNTTC5T
U0x2M19NRVRIT0QKLSAgICAgICAgICAgIGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9O
X1RMUzE6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlRMU3YxX01FVEhP
RAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAot
ICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCAtLXRscy12ZXJzaW9uIGZsYWc6ICVyJyAlIHRs
c192ZXJzaW9uKQotCi0gICAgICAgICAgICBjb250ZXh0ID0gT3BlblNTTC5TU0wuQ29udGV4dCh2
ZXJzaW9uKQotCi0gICAgICAgICAgICBpZiBkaXNhYmxlX3Rsc19jb21wcmVzc2lvbjoKLSAgICAg
ICAgICAgICAgICAjIE9QX05PX0NPTVBSRVNTSU9OIGlzIG5vdCBkZWZpbmVkIGluIE9wZW5TU0wg
bW9kdWxlLgotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X29wdGlvbnMoMHgwMDAyMDAwMCkK
LQotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldCA9IE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24o
Y29udGV4dCwgcmF3X3NvY2tldCkKLSAgICAgICAgICAgICMgQ2xpZW50IG1vZGUuCi0gICAgICAg
ICAgICBzZWxmLl90bHNfc29ja2V0LnNldF9jb25uZWN0X3N0YXRlKCkKLSAgICAgICAgICAgIHNl
bGYuX3Rsc19zb2NrZXQuc2V0YmxvY2tpbmcoVHJ1ZSkKLQotICAgICAgICAgICAgIyBEbyBoYW5k
c2hha2Ugbm93IChub3QgbmVjZXNzYXJ5KS4KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQu
ZG9faGFuZHNoYWtlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBpcyBhdmFpbGFibGUnKQotCi0gICAgZGVmIHNlbmQo
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LndyaXRlKGRhdGEp
Ci0KLSAgICBkZWYgc2VuZGFsbChzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rs
c19zb2NrZXQuc2VuZGFsbChkYXRhKQotCi0gICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZT0tMSk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnJlYWQoc2l6ZSkKLQotICAgIGRlZiBjbG9z
ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuY2xvc2UoKQotCi0gICAg
ZGVmIGdldHBlZXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5n
ZXRwZWVybmFtZSgpCi0KLQotY2xhc3MgQ2xpZW50SGFuZHNoYWtlQmFzZShvYmplY3QpOgotICAg
ICIiIkEgYmFzZSBjbGFzcyBmb3IgV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nv
cnMgZm9yIGVhY2gKLSAgICBwcm90b2NvbCB2ZXJzaW9uLgotICAgICIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dn
ZXIoc2VsZikKLQotICAgIGRlZiBfcmVhZF9maWVsZHMoc2VsZik6Ci0gICAgICAgICMgNC4xIDMy
LiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBl
bXB0eS4KLSAgICAgICAgZmllbGRzID0ge30KLSAgICAgICAgd2hpbGUgVHJ1ZTogICMgIkZpZWxk
IgotICAgICAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUgZW1wdHkg
Ynl0ZSBhcnJheXMKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICAgICAgdmFsdWUgPSAn
JwotICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25hbWUvCi0gICAgICAgICAgICBuYW1lID0g
c2VsZi5fcmVhZF9uYW1lKCkKLSAgICAgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2VzCi0gICAgICAg
ICAgICAjIFRPRE8odHlvc2hpbm8pOiBTa2lwIG9ubHkgb25lIHNwYWNlIGFzIGRlc2NyaWJlZCBp
biB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNoID0gc2VsZi5fc2tpcF9zcGFjZXMoKQotICAgICAg
ICAgICAgIyA0LjEgMzYuIHJlYWQgL3ZhbHVlLwotICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9y
ZWFkX3ZhbHVlKGNoKQotICAgICAgICAgICAgIyA0LjEgMzcuIHJlYWQgYSBieXRlIGZyb20gdGhl
IHNlcnZlcgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEp
Ci0gICAgICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdFeHBlY3RlZCBM
RiBidXQgZm91bmQgJXIgd2hpbGUgcmVhZGluZyB2YWx1ZSAlciBmb3IgJwotICAgICAgICAgICAg
ICAgICAgICAnaGVhZGVyICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCAlciBoZWFkZXInLCBuYW1lKQotICAgICAgICAgICAg
IyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0IGhhcyB0
aGUgbmFtZQotICAgICAgICAgICAgIyBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGlu
dGVycHJldGluZyB0aGUgL25hbWUvIGJ5dGUKLSAgICAgICAgICAgICMgYXJyYXkgYXMgYSBVVEYt
OCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3RyaW5nCi0gICAgICAgICAgICAj
IG9idGFpbmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRG
LTggYnl0ZQotICAgICAgICAgICAgIyBzdHJlYW0uCi0gICAgICAgICAgICBmaWVsZHMuc2V0ZGVm
YXVsdChuYW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgIyA0LjEgMzkuIHJldHVy
biB0byB0aGUgIkZpZWxkIiBzdGVwIGFib3ZlCi0gICAgICAgIHJldHVybiBmaWVsZHMKLQotICAg
IGRlZiBfcmVhZF9uYW1lKHNlbGYpOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBl
bXB0eSBieXRlIGFycmF5cwotICAgICAgICBuYW1lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAg
ICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAg
aWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlzZSBD
bGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYg
d2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAgICAgICAgICBlbGlmIGNo
ID09ICc6JzogICMgMHgzQQotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCi0gICAgICAgICAg
ICBlbGlmIGNoID49ICdBJyBhbmQgY2ggPD0gJ1onOiAgIyBSYW5nZSAweDMxIHRvIDB4NUEKLSAg
ICAgICAgICAgICAgICBjaCA9IGNocihvcmQoY2gpICsgMHgyMCkKLSAgICAgICAgICAgICAgICBu
YW1lICs9IGNoCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gK
LQotICAgIGRlZiBfc2tpcF9zcGFjZXMoc2VsZik6Ci0gICAgICAgICMgNC4xIDM1LiByZWFkIGEg
Ynl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNo
ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgY2ggPT0g
JyAnOiAgIyAweDIwCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVy
biBjaAotCi0gICAgZGVmIF9yZWFkX3ZhbHVlKHNlbGYsIGNoKToKLSAgICAgICAgIyA0LjEgMzMu
IGxldCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgICAgIHZhbHVlID0gJycKLSAg
ICAgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgaWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAgICAgICAgICAg
IHJldHVybiB2YWx1ZQotICAgICAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAg
ICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCi0gICAgICAg
ICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLQotCi1kZWYgX2dldF9w
ZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6Ci0gICAgIiIiVmFs
aWRhdGUgdGhlIHJlc3BvbnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBw
YXJhbWV0ZXJzIGluCi0gICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2Vw
dCB0aGUgc2VydmVyXy4qIHBhcmFtZXRlcnMuCi0gICAgIiIiCi0KLSAgICBjbGllbnRfbWF4X3dp
bmRvd19iaXRzID0gTm9uZQotICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQot
Ci0gICAgY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lID0gKAotICAgICAgICAgICAgUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCi0gICAgICAgICAgICAgICAgICAgIF9DTElF
TlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
X25hbWUgPSAoCi0gICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
ci4KLSAgICAgICAgICAgICAgICAgICAgX0NMSUVOVF9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KQotCi0gICAgIyBXZSBkaWRuJ3Qgc2VuZCBhbnkgc2VydmVyXy4qIHBhcmFtZXRlci4KLSAgICAj
IEhhbmRsZSB0aG9zZSBwYXJhbWV0ZXJzIGFzIGludmFsaWQgaWYgZm91bmQgaW4gdGhlIHJlc3Bv
bnNlLgotCi0gICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbl9yZXNw
b25zZS5nZXRfcGFyYW1ldGVycygpOgotICAgICAgICBpZiBwYXJhbV9uYW1lID09IGNsaWVudF9t
YXhfd2luZG93X2JpdHNfbmFtZToKLSAgICAgICAgICAgIGlmIGNsaWVudF9tYXhfd2luZG93X2Jp
dHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGlwbGUgJXMgZm91bmQnICUgY2xpZW50
X21heF93aW5kb3dfYml0c19uYW1lKQotCi0gICAgICAgICAgICBwYXJzZWRfdmFsdWUgPSBfcGFy
c2Vfd2luZG93X2JpdHMocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICBpZiBwYXJzZWRfdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAoY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCi0gICAgICAg
ICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzID0gcGFyc2VkX3ZhbHVlCi0gICAgICAgIGVsaWYg
cGFyYW1fbmFtZSA9PSBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgotICAgICAgICAg
ICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnTXVsdGlwbGUgJXMgZm91bmQnICUgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSkK
LQotICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAn
QmFkICVzOiBIYXMgdmFsdWUgJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lLCBwYXJhbV92YWx1ZSkpCi0gICAgICAgICAgICBjbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciA9IFRydWUKLQotICAgIGlmIGNsaWVudF9ub19jb250ZXh0
X3Rha2VvdmVyIGlzIE5vbmU6Ci0gICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0g
RmFsc2UKLQotICAgIHJldHVybiBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIoY2xpZW50X21heF93
aW5kb3dfYml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyKQotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZVByb2Nlc3NvcihD
bGllbnRIYW5kc2hha2VCYXNlKToKLSAgICAiIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2Ug
cHJvY2Vzc29yIGZvcgotICAgIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0w
NiBhbmQgbGF0ZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBv
cHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yLCBzZWxmKS5f
X2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQ
ZXJmb3JtcyBvcGVuaW5nIGhhbmRzaGFrZSBvbiB0aGUgc3BlY2lmaWVkIHNvY2tldC4KLQotICAg
ICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDbGllbnRIYW5kc2hha2VFcnJvcjogaGFuZHNoYWtl
IGZhaWxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX2J1aWxkX21l
dGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIFJlcXVlc3QtTGluZTogJXInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9saW5lKQotICAgICAgICBzZWxmLl9zb2Nr
ZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUpCi0KLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAg
ZmllbGRzLmFwcGVuZChfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQs
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQotICAgICAgICBmaWVsZHMuYXBw
ZW5kKF9VUEdSQURFX0hFQURFUikKLSAgICAgICAgZmllbGRzLmFwcGVuZChfQ09OTkVDVElPTl9I
RUFERVIpCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMub3JpZ2luIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uID09IF9QUk9UT0NPTF9W
RVJTSU9OX0hZQkkwODoKLSAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVh
ZGVyKAotICAgICAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9PUklHSU5fSEVB
REVSLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIo
Y29tbW9uLk9SSUdJTl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0KLSAgICAgICAgb3JpZ2luYWxfa2V5
ID0gb3MudXJhbmRvbSgxNikKLSAgICAgICAgc2VsZi5fa2V5ID0gYmFzZTY0LmI2NGVuY29kZShv
cmlnaW5hbF9rZXkpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICcl
czogJXIgKCVzKScsCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVS
LAotICAgICAgICAgICAgc2VsZi5fa2V5LAotICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2lu
YWxfa2V5KSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgKLSAgICAgICAgICAgICclczogJXNcclxu
JyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBzZWxmLl9rZXkpKQotCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudmVyc2lvbl9oZWFkZXIgPiAwOgotICAgICAgICAgICAgZmll
bGRzLmFwcGVuZCgnJXM6ICVkXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9I
RUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnZlcnNpb25faGVhZGVyKSkKLSAgICAgICAgZWxpZiBzZWxmLl9vcHRpb25zLnByb3Rv
Y29sX3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4OgotICAgICAgICAgICAgZmll
bGRzLmFwcGVuZCgnJXM6ICVkXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9I
RUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24u
VkVSU0lPTl9IWUJJMDgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmllbGRzLmFwcGVu
ZCgnJXM6ICVkXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uVkVSU0lPTl9I
WUJJX0xBVEVTVCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0gW10KLQotICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmRlZmxhdGVfZnJhbWU6Ci0gICAgICAgICAgICBleHRlbnNp
b25zX3RvX3JlcXVlc3QuYXBwZW5kKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKSkKLQotICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6Ci0gICAgICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgICAgICBjb21t
b24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgICAgICMgQWNjZXB0IHRo
ZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIgYnkgZGVmYXVsdC4K
LSAgICAgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKAotICAgICAgICAgICAgICAgICAg
ICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAgICAgICAgICAg
ICAgICAgTm9uZSkKLSAgICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5hcHBlbmQoZXh0
ZW5zaW9uKQotCi0gICAgICAgIGlmIGxlbihleHRlbnNpb25zX3RvX3JlcXVlc3QpICE9IDA6Ci0g
ICAgICAgICAgICBmaWVsZHMuYXBwZW5kKAotICAgICAgICAgICAgICAgICclczogJXNcclxuJyAl
Ci0gICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVS
LAotICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190
b19yZXF1ZXN0KSkpCi0KLSAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoKLSAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkKQotCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5k
YWxsKCdcclxuJykKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgY2xpZW50XCdz
IG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIFN0
YXR1cy1MaW5lJykKLQotICAgICAgICBzdGF0dXNfbGluZSA9ICcnCi0gICAgICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAg
ICAgICAgICAgIHN0YXR1c19saW5lICs9IGNoCi0gICAgICAgICAgICBpZiBjaCA9PSAnXG4nOgot
ICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgbSA9IHJlLm1hdGNoKCdIVFRQL1xcZCtc
LlxcZCsgKFxcZFxcZFxcZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCi0gICAgICAgIGlmIG0gaXMg
Tm9uZToKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAg
ICAgICAgICdXcm9uZyBzdGF0dXMgbGluZSBmb3JtYXQ6ICVyJyAlIHN0YXR1c19saW5lKQotICAg
ICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgaWYgc3RhdHVzX2NvZGUgIT0g
JzEwMSc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1VuZXhwZWN0ZWQgc3RhdHVz
IGNvZGUgJXMgd2l0aCBmb2xsb3dpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdoZWFkZXJzOiAlcicsIHN0YXR1c19jb2RlLCBzZWxmLl9yZWFkX2ZpZWxkcygpKQotICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVj
dGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAlcicgJSBzdGF0dXNfY29kZSkKLQot
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIHZhbGlkIFN0YXR1cy1MaW5lJykK
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIGhlYWRlcnMgdW50aWwg
d2Ugc2VlIGFuIGVtcHR5IGxpbmUnKQotCi0gICAgICAgIGZpZWxkcyA9IHNlbGYuX3JlYWRfZmll
bGRzKCkKLQotICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAg
ICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciBoZWFkZXIgJwotICAgICAgICAgICAgICAgICduYW1l
ICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
UmVjZWl2ZWQgYW4gZW1wdHkgbGluZScpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2Vy
dmVyXCdzIG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAg
IF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLAotICAgICAg
ICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLAotICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tF
VF9VUEdSQURFX1RZUEUsCi0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBfdmFsaWRhdGVf
bWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywKLSAgICAgICAgICAgIGNvbW1v
bi5DT05ORUNUSU9OX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJ
T05fVFlQRSwKLSAgICAgICAgICAgIEZhbHNlKQotCi0gICAgICAgIGFjY2VwdCA9IF9nZXRfbWFu
ZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJTT0NLRVRf
QUNDRVBUX0hFQURFUikKLQotICAgICAgICAjIFZhbGlkYXRlCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAg
ZXhjZXB0IFR5cGVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKAot
ICAgICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCi0gICAg
ICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCkp
Ci0KLSAgICAgICAgaWYgbGVuKGJpbmFyeV9hY2NlcHQpICE9IDIwOgotICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFsdWUg
b2YgJXMgaXMgbm90IDIwLWJ5dGUgbG9uZycgJQotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX0FDQ0VQVF9IRUFERVIpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgJ1Jlc3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywKLSAgICAgICAg
ICAgIGFjY2VwdCwgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCi0KLSAgICAgICAgYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCA9IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICAgICAgc2VsZi5fa2V5
ICsgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICAgICAgZXhwZWN0
ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KQotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCByZXNwb25z
ZSBmb3IgY2hhbGxlbmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkX2FjY2VwdCwg
dXRpbC5oZXhpZnkoYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgaWYgYWNjZXB0
ICE9IGV4cGVjdGVkX2FjY2VwdDoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAotICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVkOiAl
cyknICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURF
UiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQotCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfYWNj
ZXB0ZWQgPSBGYWxzZQotICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBGYWxz
ZQotCi0gICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgKLSAgICAgICAgICAg
IGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLmxvd2VyKCkpCi0gICAgICAg
IGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBbXQotICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRlciBp
cyBub3QgTm9uZSBhbmQgbGVuKGV4dGVuc2lvbnNfaGVhZGVyKSAhPSAwOgotICAgICAgICAgICAg
YWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKGV4dGVuc2lvbnNf
aGVhZGVyWzBdKQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgdGhlIG5ldyBzdHls
ZSBwZXJmcmFtZSBjb21wcmVzc2lvbiBleHRlbnNpb24uCi0gICAgICAgIGZvciBleHRlbnNpb24g
aW4gYWNjZXB0ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lID0gZXh0
ZW5zaW9uLm5hbWUoKQotICAgICAgICAgICAgaWYgKGV4dGVuc2lvbl9uYW1lID09IGNvbW1vbi5E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LmRlZmxhdGVfZnJhbWUpOgotICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQg
PSBUcnVlCi0gICAgICAgICAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9u
UHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICB1bnVzZWRfZXh0ZW5zaW9uX3Jl
c3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSA9IHByb2Nlc3NvcgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIChleHRlbnNpb25fbmFtZSA9PSBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6Ci0gICAgICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgZnJhbWVyID0g
X2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAg
ICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLSAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUgZXh0ZW5z
aW9uX25hbWUpCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBhbmQg
bm90IGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2
ZXIgcmVqZWN0ZWQgaXQnICUKLSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9F
WFRFTlNJT04pCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVm
bGF0ZSBhbmQKLSAgICAgICAgICAgIG5vdCBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQpOgot
ICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdSZXF1ZXN0ZWQgJXMsIGJ1dCB0aGUgc2VydmVyIHJlamVjdGVkIGl0JyAlCi0gICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotCi0gICAg
ICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29ja2V0LVByb3RvY29sCi0gICAg
ICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0Yy4KLQotCi1jbGFzcyBDbGll
bnRIYW5kc2hha2VQcm9jZXNzb3JIeWJpMDAoQ2xpZW50SGFuZHNoYWtlQmFzZSk6Ci0gICAgIiIi
V2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IKLSAgICBkcmFmdC1pZXRm
LWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDAgKGVxdWl2YWxlbnQgdG8KLSAgICBkcmFmdC1o
aXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbC03NikuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgc29ja2V0LCBvcHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtl
UHJvY2Vzc29ySHliaTAwLCBzZWxmKS5fX2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0
ID0gc29ja2V0Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgKHNl
bGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBvcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0h5
QmkgMDAgZG9lc25cJ3Qgc3VwcG9ydCBleHRlbnNpb25zLicpCi0gICAgICAgICAgICBzeXMuZXhp
dCgxKQotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybXMgb3Bl
bmluZyBoYW5kc2hha2Ugb24gdGhlIHNwZWNpZmllZCBzb2NrZXQuCi0KLSAgICAgICAgUmFpc2Vz
OgotICAgICAgICAgICAgQ2xpZW50SGFuZHNoYWtlRXJyb3I6IGhhbmRzaGFrZSBmYWlsZWQuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAg
ICBzZWxmLl9zb2NrZXQuc2VuZGFsbChfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5y
ZXNvdXJjZSkpCi0gICAgICAgICMgNC4xIDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0
IG9mIHN0cmluZ3MuCi0gICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0
aGUgc3RyaW5nICJVcGdyYWRlOiBXZWJTb2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVs
ZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUl9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQg
dGhlIHN0cmluZyAiQ29ubmVjdGlvbjogVXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZp
ZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQg
SG9zdDogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9o
b3N0X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy51c2VfdGxzKSkKLSAgICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9m
aWVsZHMvLgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5vcmlnaW46Ci0gICAgICAgICAg
ICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnU3BlY2lmeSB0
aGUgb3JpZ2luIG9mIHRoZSBjb25uZWN0aW9uIGJ5IC0tb3JpZ2luIGZsYWcnKQotICAgICAgICBm
aWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKGNvbW1vbi5PUklHSU5fSEVBREVSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAg
ICAgICAgIyBUT0RPOiA0LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRv
IC9maWVsZHMvLgotICAgICAgICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8g
L2ZpZWxkcy8uCi0KLSAgICAgICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxu
PiB0byAvZmllbGRzLy4KLSAgICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVy
YXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1i
ZXIxOiAlZCcsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xy
XG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSLCBrZXkxKSkKLSAgICAgICAg
c2VsZi5fbnVtYmVyMiwga2V5MiA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkK
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIyOiAlZCcsIHNlbGYuX251bWJlcjIp
Ci0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09D
S0VUX0tFWTJfSEVBREVSLCBrZXkyKSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogMFxy
XG4nICUgY29tbW9uLlNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSKQotCi0gICAgICAgICMgNC4x
IDI0LiBGb3IgZWFjaCBzdHJpbmcgaW4gL2ZpZWxkcy8sIGluIGEgcmFuZG9tIG9yZGVyOiBzZW5k
IHRoZQotICAgICAgICAjIHN0cmluZywgZW5jb2RlZCBhcyBVVEYtOCwgZm9sbG93ZWQgYnkgYSBV
VEYtOCBlbmNvZGVkIFUrMDAwRCBDQVJSSUFHRQotICAgICAgICAjIFJFVFVSTiBVKzAwMEEgTElO
RSBGRUVEIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgcmFuZG9tLnNodWZmbGUoZmll
bGRzKQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoZmllbGQpCi0gICAgICAgICMgNC4xIDI1LiBzZW5kIGEgVVRGLTgtZW5jb2Rl
ZCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQKLSAgICAgICAgIyBjaGFy
YWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykK
LSAgICAgICAgIyA0LjEgMjYuIGxldCAva2V5My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiBl
aWdodCByYW5kb20gYnl0ZXMgKG9yCi0gICAgICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRvbSA2
NCBiaXQgaW50ZWdlciBlbmNvZGVkIGluIGEgYmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAgIHNl
bGYuX2tleTMgPSBzZWxmLl9nZW5lcmF0ZV9rZXkzKCkKLSAgICAgICAgIyA0LjEgMjcuIHNlbmQg
L2tleTMvIHRvIHRoZSBzZXJ2ZXIuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYu
X2tleTMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdLZXkzOiAl
ciAoJXMpJywgc2VsZi5fa2V5MywgdXRpbC5oZXhpZnkoc2VsZi5fa2V5MykpCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgaGFuZHNoYWtlJykKLQotICAgICAgICAjIDQuMSAyOC4g
UmVhZCBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0g
ICAgICAgICMgY2xvc2VzLCBvciBhIDB4MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0
aGVzZSBieXRlcywgaW5jbHVkaW5nCi0gICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAg
IGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAg
ICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBp
ZiAvZmllbGQvIGlzIG5vdCBhdCBsZWFzdCBzZXZlbiBieXRlcyBsb25nLCBvciBpZiB0aGUgbGFz
dAotICAgICAgICAjIHR3byBieXRlcyBhcmVuJ3QgMHgwRCBhbmQgMHgwQSByZXNwZWN0aXZlbHks
IG9yIGlmIGl0IGRvZXMgbm90Ci0gICAgICAgICMgY29udGFpbiBhdCBsZWFzdCB0d28gMHgyMCBi
eXRlcywgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbgotICAgICAgICAjIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxk
LmVuZHN3aXRoKCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJv
cignV3Jvbmcgc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2go
J1teIF0qIChbXiBdKikgLionLCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ05vIEhU
VFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAg
ICAjIDQuMSAyOS4gbGV0IC9jb2RlLyBiZSB0aGUgc3Vic3RyaW5nIG9mIC9maWVsZC8gdGhhdCBz
dGFydHMgZnJvbSB0aGUKLSAgICAgICAgIyBieXRlIGFmdGVyIHRoZSBmaXJzdCAweDIwIGJ5dGUs
IGFuZCBlbmRzIHdpdGggdGhlIGJ5dGUgYmVmb3JlIHRoZQotICAgICAgICAjIHNlY29uZCAweDIw
IGJ5dGUuCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICMgNC4xIDMwLiBpZiAv
Y29kZS8gaXMgbm90IHRocmVlIGJ5dGVzIGxvbmcsIG9yIGlmIGFueSBvZiB0aGUgYnl0ZXMgaW4K
LSAgICAgICAgIyAvY29kZS8gYXJlIG5vdCBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDkwLCB0aGVu
IGZhaWwgdGhlIFdlYlNvY2tldAotICAgICAgICAjIGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgICAgICBpZiBub3QgcmUubWF0Y2goJ1swLTldWzAtOV1bMC05XScsIGNvZGUp
OgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAg
ICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5l
OiAlcicgJQotICAgICAgICAgICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgICMgNC4xIDMx
LiBpZiAvY29kZS8sIGludGVycHJldGVkIGFzIFVURi04LCBpcyAiMTAxIiwgdGhlbiBtb3ZlIHRv
IHRoZQotICAgICAgICAjIG5leHQgc3RlcC4KLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoKLSAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdF
eHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6
ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0LjEg
MzItMzkuIHJlYWQgZmllbGRzIGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gc2VsZi5f
cmVhZF9maWVsZHMoKQotICAgICAgICAjIDQuMSA0MC4gX0ZpZWxkcyBwcm9jZXNzaW5nXwotICAg
ICAgICAjIHJlYWQgYSBieXRlIGZyb20gc2VydmVyCi0gICAgICAgIGNoID0gX3JlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignRXhwZWN0ZWQgTEYgYnV0IGZvdW5k
ICVyJyAlIGNoKQotICAgICAgICAjIDQuMSA0MS4gY2hlY2sgL2ZpZWxkcy8KLSAgICAgICAgIyBU
T0RPKHVrYWkpOiBwcm90b2NvbAotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMgInVw
Z3JhZGUiCi0gICAgICAgICMgIGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhhY3RseSBlcXVhbCB0byB0
aGUgc3RyaW5nICJXZWJTb2NrZXQiLAotICAgICAgICAjICB0aGVuIGZhaWwgdGhlIFdlYlNvY2tl
dCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21h
bmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24u
VVBHUkFERV9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQ
RV9ISVhJRTc1LAotICAgICAgICAgICAgVHJ1ZSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBu
YW1lIGlzICJjb25uZWN0aW9uIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0
byBBU0NJSSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRvIHRo
ZSBzdHJpbmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFu
ZAotICAgICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRh
dG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uQ09O
TkVDVElPTl9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZ
UEUsCi0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBvcmlnaW4gPSBfZ2V0X21hbmRhdG9y
eV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJ
Tl9IRUFERVIpCi0KLSAgICAgICAgbG9jYXRpb24gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0g
ICAgICAgICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX0xPQ0FUSU9OX0hFQURFUikK
LQotICAgICAgICAjIFRPRE8odWthaSk6IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwg
Li4KLQotICAgICAgICAjIDQuMSA0Mi4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0
aW9uIG9mIC9udW1iZXJfMS8sCi0gICAgICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAz
MiBiaXQgaW50ZWdlciwgL251bWJlcl8yLywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVu
ZGlhbiAzMiBiaXQgaW50ZWdlciwgYW5kIHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRo
ZQotICAgICAgICAjIG9yZGVyIHRoZXkgd2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBj
aGFsbGVuZ2UgPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFs
bGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxl
bmdlICs9IHNlbGYuX2tleTMKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVu
Z2UpKQotCi0gICAgICAgICMgNC4xIDQzLiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdl
cnByaW50IG9mIC9jaGFsbGVuZ2UvIGFzIGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQg
c3RyaW5nLgotICAgICAgICBleHBlY3RlZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdl
c3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQg
Y2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGls
LmhleGlmeShleHBlY3RlZCkpCi0KLSAgICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRl
cyBmcm9tIHRoZSBzZXJ2ZXIuCi0gICAgICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMu
Ci0gICAgICAgIHJlcGx5ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxNikKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0FjdHVhbCBjaGFsbGVuZ2UgcmVz
cG9uc2U6ICVyICglcyknLCByZXBseSwgdXRpbC5oZXhpZnkocmVwbHkpKQotCi0gICAgICAgICMg
NC4xIDQ1LiBpZiAvcmVwbHkvIGRvZXMgbm90IGV4YWN0bHkgZXF1YWwgL2V4cGVjdGVkLywgdGhl
biBmYWlsCi0gICAgICAgICMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgZXhwZWN0ZWQgIT0gcmVwbHk6Ci0gICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnQmFkIGNoYWxsZW5nZSBy
ZXNwb25zZTogJXIgKGV4cGVjdGVkKSAhPSAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAg
IChleHBlY3RlZCwgcmVwbHkpKQotICAgICAgICAjIDQuMSA0Ni4gVGhlICpXZWJTb2NrZXQgY29u
bmVjdGlvbiBpcyBlc3RhYmxpc2hlZCouCi0KLSAgICBkZWYgX2dlbmVyYXRlX3NlY193ZWJzb2Nr
ZXRfa2V5KHNlbGYpOgotICAgICAgICAjIDQuMSAxNi4gbGV0IC9zcGFjZXNfbi8gYmUgYSByYW5k
b20gaW50ZWdlciBmcm9tIDEgdG8gMTIgaW5jbHVzaXZlLgotICAgICAgICBzcGFjZXMgPSByYW5k
b20ucmFuZGludCgxLCAxMikKLSAgICAgICAgIyA0LjEgMTcuIGxldCAvbWF4X24vIGJlIHRoZSBs
YXJnZXN0IGludGVnZXIgbm90IGdyZWF0ZXIgdGhhbgotICAgICAgICAjICA0LDI5NCw5NjcsMjk1
IGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgbWF4bnVtID0gNDI5NDk2NzI5NSAvIHNw
YWNlcwotICAgICAgICAjIDQuMSAxOC4gbGV0IC9udW1iZXJfbi8gYmUgYSByYW5kb20gaW50ZWdl
ciBmcm9tIDAgdG8gL21heF9uLwotICAgICAgICAjIGluY2x1c2l2ZS4KLSAgICAgICAgbnVtYmVy
ID0gcmFuZG9tLnJhbmRpbnQoMCwgbWF4bnVtKQotICAgICAgICAjIDQuMSAxOS4gbGV0IC9wcm9k
dWN0X24vIGJlIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgL251bWJlcl9uLyBhbmQKLSAgICAg
ICAgIyAvc3BhY2VzX24vIHRvZ2V0aGVyLgotICAgICAgICBwcm9kdWN0ID0gbnVtYmVyICogc3Bh
Y2VzCi0gICAgICAgICMgNC4xIDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0cmluZyBjb25zaXN0aW5n
IG9mIC9wcm9kdWN0X24vLCBleHByZXNzZWQKLSAgICAgICAgIyBpbiBiYXNlIHRlbiB1c2luZyB0
aGUgbnVtZXJhbHMgaW4gdGhlIHJhbmdlIFUrMDAzMCBESUdJVCBaRVJPICgwKSB0bwotICAgICAg
ICAjIFUrMDAzOSBESUdJVCBOSU5FICg5KS4KLSAgICAgICAga2V5ID0gc3RyKHByb2R1Y3QpCi0g
ICAgICAgICMgNC4xIDIxLiBpbnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3ZWx2ZSByYW5kb20gY2hh
cmFjdGVycyBmcm9tIHRoZQotICAgICAgICAjIHJhbmdlIFUrMDAyMSB0byBVKzAwMkYgYW5kIFUr
MDAzQSB0byBVKzAwN0UgaW50byAva2V5X24vIGF0IHJhbmRvbQotICAgICAgICAjIHBvc2l0aW9u
cy4KLSAgICAgICAgYXZhaWxhYmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwgMHgyZiArIDEpICsgcmFu
Z2UoMHgzYSwgMHg3ZSArIDEpCi0gICAgICAgIG4gPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAg
ICAgICAgZm9yIF8gaW4geHJhbmdlKG4pOgotICAgICAgICAgICAgY2ggPSByYW5kb20uY2hvaWNl
KGF2YWlsYWJsZV9jaGFycykKLSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDAsIGxl
bihrZXkpKQotICAgICAgICAgICAga2V5ID0ga2V5WzA6cG9zXSArIGNocihjaCkgKyBrZXlbcG9z
Ol0KLSAgICAgICAgIyA0LjEgMjIuIGluc2VydCAvc3BhY2VzX24vIFUrMDAyMCBTUEFDRSBjaGFy
YWN0ZXJzIGludG8gL2tleV9uLyBhdAotICAgICAgICAjIHJhbmRvbSBwb3NpdGlvbnMgb3RoZXIg
dGhhbiBzdGFydCBvciBlbmQgb2YgdGhlIHN0cmluZy4KLSAgICAgICAgZm9yIF8gaW4geHJhbmdl
KHNwYWNlcyk6Ci0gICAgICAgICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5KSAt
IDEpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCi0gICAg
ICAgIHJldHVybiBudW1iZXIsIGtleQotCi0gICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYpOgot
ICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVp
Z2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0
IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAgcmV0
dXJuICcnLmpvaW4oW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFuZ2Uo
OCldKQotCi0KLWNsYXNzIENsaWVudENvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJBIHdyYXBw
ZXIgZm9yIHNvY2tldCBvYmplY3QgdG8gcHJvdmlkZSB0aGUgbXBfY29ubiBpbnRlcmZhY2UuCi0g
ICAgbW9kX3B5d2Vic29ja2V0IGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gYmUgd29ya2luZyBvbiBB
cGFjaGUgbW9kX3B5dGhvbidzCi0gICAgbXBfY29ubiBvYmplY3QuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0
Ci0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5k
YWxsKGRhdGEpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBuKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3NvY2tldC5yZWN2KG4pCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fc29ja2V0LmdldHBlZXJuYW1lKCkKLSAgICByZW1vdGVfYWRkciA9IHBy
b3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQotCi1jbGFzcyBDbGllbnRSZXF1ZXN0KG9iamVjdCk6
Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBhYmxlIHRvIHBhc3MgYSBz
b2NrZXQgb2JqZWN0IHRvCi0gICAgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbXBfcmVxdWVzdCBv
YmplY3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAg
c2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IENsaWVudENv
bm5lY3Rpb24oc29ja2V0KQotCi0KLWRlZiBfaW1wb3J0X3NzbCgpOgotICAgIGdsb2JhbCBzc2wK
LSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBl
eGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfaW1wb3J0
X3B5b3BlbnNzbCgpOgotICAgIGdsb2JhbCBPcGVuU1NMCi0gICAgdHJ5OgotICAgICAgICBpbXBv
cnQgT3BlblNTTC5TU0wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0RXJy
b3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIEVjaG9DbGllbnQob2JqZWN0KToK
LSAgICAiIiJXZWJTb2NrZXQgZWNobyBjbGllbnQuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNl
bGYuX3NvY2tldCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFz
c19sb2dnZXIoc2VsZikKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIlJ1biB0aGUg
Y2xpZW50LgotCi0gICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1l
c3NhZ2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2Vs
Zi5fc29ja2V0ID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1l
b3V0KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHNlbGYuX3NvY2tldC5jb25uZWN0KChzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQp
KQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgICAg
IHNlbGYuX3NvY2tldCA9IF9UTFNTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nv
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50bHNfbW9kdWxlLAotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRsc192ZXJzaW9uLAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLmRpc2FibGVfdGxzX2NvbXByZXNzaW9uKQotCi0gICAgICAg
ICAgICB2ZXJzaW9uID0gc2VsZi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uCi0KLSAgICAgICAg
ICAgIGlmICh2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCBvcgotICAgICAgICAg
ICAgICAgIHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzKToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9oYW5kc2hha2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIGVs
aWYgdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDA6Ci0gICAgICAgICAgICAgICAg
c2VsZi5faGFuZHNoYWtlID0gQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwKAotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdJbnZhbGlkIC0tcHJvdG9jb2wtdmVyc2lvbiBmbGFnOiAlcicgJSB2ZXJzaW9uKQotCi0g
ICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKLQotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQotCi0gICAgICAgICAgICBy
ZXF1ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgICAgIHZlcnNp
b25fbWFwID0gewotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwODogY29t
bW9uLlZFUlNJT05fSFlCSTA4LAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZ
QkkxMzogY29tbW9uLlZFUlNJT05fSFlCSTEzLAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9W
RVJTSU9OX0hZQkkwMDogY29tbW9uLlZFUlNJT05fSFlCSTAwfQotICAgICAgICAgICAgcmVxdWVz
dC53c192ZXJzaW9uID0gdmVyc2lvbl9tYXBbdmVyc2lvbl0KLQotICAgICAgICAgICAgaWYgKHZl
cnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4IG9yCi0gICAgICAgICAgICAgICAgdmVy
c2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMpOgotICAgICAgICAgICAgICAgIHN0cmVh
bV9vcHRpb24gPSBTdHJlYW1PcHRpb25zKCkKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9u
Lm1hc2tfc2VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLnVubWFza19y
ZWNlaXZlID0gRmFsc2UKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0
ZV9mcmFtZSBpcyBub3QgRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciA9IHNl
bGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSBpcyBub3QgRmFsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIGZyYW1lciA9IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVm
bGF0ZQotICAgICAgICAgICAgICAgICAgICBmcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0cmVhbShyZXF1
ZXN0LCBzdHJlYW1fb3B0aW9uKQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9UT0NP
TF9WRVJTSU9OX0hZQkkwMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBTdHJlYW1I
aXhpZTc1KHJlcXVlc3QsIFRydWUpCi0KLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29w
dGlvbnMubWVzc2FnZS5zcGxpdCgnLCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5z
ZW5kX21lc3NhZ2UobGluZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJv
c2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdTZW5kOiAlcycgJSBsaW5lCi0gICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX3N0cmVh
bS5yZWNlaXZlX21lc3NhZ2UoKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdSZWN2OiAlcycgJSBy
ZWNlaXZlZAotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ICdFcnJvcjogJXMnICUgZQotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0g
ICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQotCi0gICAgZGVmIF9kb19jbG9zaW5n
X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5nIGhhbmRzaGFrZSB1
c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09IF9HT09EQllFX01FU1NBR0U6Ci0gICAg
ICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlLCBz
bwotICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2UgbWVzc2FnZSBmcm9t
IHNlcnZlci4KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdXYWl0IGZvciBzZXJ2ZXIt
aW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxm
Ll9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICBwcmludCAnUmVjdiBjbG9zZScKLSAgICAgICAgICAgICAgICBw
cmludCAnU2VuZCBhY2snCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZSBhbmQgc2VudCBhY2sn
KQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBwcmludCAnU2VuZCBjbG9zZScKLSAg
ICAgICAgc2VsZi5fc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnU2VudCBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgIHByaW50ICdSZWN2IGFj
aycKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCi0KLQotZGVmIG1h
aW4oKToKLSAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcigndXRmLTgnKShzeXMuc3Rk
b3V0KQotCi0gICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKLSAgICAjIFdlIGFjY2VwdCAtLWNv
bW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBzYW1lIGFzIEdvb2dsZQot
ICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1hbmQtbGluZS1mbGFnIHN0
eWxlIGZsYWdzLgotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNlcnZlci1ob3N0Jywg
Jy0tc2VydmVyX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9ob3N0
JywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhv
c3QnLCBoZWxwPSdzZXJ2ZXIgaG9zdCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0t
c2VydmVyLXBvcnQnLCAnLS1zZXJ2ZXJfcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nc2VydmVyX3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9X1VOREVGSU5FRF9QT1JULCBoZWxwPSdzZXJ2ZXIgcG9ydCcpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1vJywgJy0tb3JpZ2luJywgZGVzdD0nb3JpZ2luJywgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J29yaWdpbicpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1yJywgJy0tcmVzb3VyY2UnLCBkZXN0PSdyZXNvdXJjZScsIHR5cGU9
J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nL2VjaG8nLCBoZWxwPSdy
ZXNvdXJjZSBwYXRoJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS1tZXNzYWdlJywg
ZGVzdD0nbWVzc2FnZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0oJ2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kLiAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZl
ci4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3ZlcmJvc2UnLCBhY3Rp
b249J3N0b3JlX2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhl
bHA9J3N1cHByZXNzIG1lc3NhZ2VzJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10
bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pLiBCeSBkZWZhdWx0
LCAnCi0gICAgICAgICAgICAgICAgICAgICAgJ2l0IGxvb2tzIGZvciBzc2wgYW5kIHB5T3BlblNT
TCBtb2R1bGUgYW5kIHVzZXMgZm91bmQgJwotICAgICAgICAgICAgICAgICAgICAgICdvbmUuIFVz
ZSAtLXRscy1tb2R1bGUgb3B0aW9uIHRvIHNwZWNpZnkgd2hpY2ggbW9kdWxlICcKLSAgICAgICAg
ICAgICAgICAgICAgICAndG8gdXNlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9k
dWxlJywgJy0tdGxzX21vZHVsZScsIGRlc3Q9J3Rsc19tb2R1bGUnLAotICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bX1RM
U19CWV9TVEFOREFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZC4gJwotICAg
ICAgICAgICAgICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNp
ZmllZCcgJQotICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwg
X1RMU19CWV9QWU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy12ZXJzaW9u
JywgJy0tdGxzX3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Rsc192ZXJz
aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PV9UTFNf
VkVSU0lPTl9TU0wyMywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMvU1NMIHZlcnNp
b24gdG8gdXNlLiBPbmUgb2YgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfVExTX1ZFUlNJ
T05fU1NMMjMgKyAnXCcgKFNTTCB2ZXJzaW9uIDIgb3IgMyksIFwnJyArCi0gICAgICAgICAgICAg
ICAgICAgICAgX1RMU19WRVJTSU9OX1NTTDMgKyAnXCcgKFNTTCB2ZXJzaW9uIDMpLCBcJycgKwot
ICAgICAgICAgICAgICAgICAgICAgIF9UTFNfVkVSU0lPTl9UTFMxICsgJ1wnIChUTFMgdmVyc2lv
biAxKScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzYWJsZS10bHMtY29tcHJlc3Npb24n
LCAnLS1kaXNhYmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nZGlzYWJsZV90bHNfY29tcHJlc3Npb24nLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nRGlzYWJsZSBUTFMgY29tcHJlc3Npb24uIEF2YWlsYWJsZSBvbmx5IHdoZW4gJwotICAgICAg
ICAgICAgICAgICAgICAgICdweU9wZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLWsnLCAnLS1zb2NrZXQtdGltZW91dCcsICctLXNvY2tldF90aW1lb3V0JywK
LSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsIHR5cGU9J2ludCcs
IGRlZmF1bHQ9X1RJTUVPVVRfU0VDLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RpbWVv
dXQoc2VjKSBmb3Igc29ja2V0cycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZHJhZnQ3NScs
IGRlc3Q9J2RyYWZ0NzUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nT2Jzb2xldGUg
b3B0aW9uLiBEb25cJ3QgdXNlIHRoaXMuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1wcm90
b2NvbC12ZXJzaW9uJywgJy0tcHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ncHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0n
c3RyaW5nJywgZGVmYXVsdD1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gdG8gdXNlLiBPbmUgb2Yg
XCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgKyAn
XCcsIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4
ICsgJ1wnLCBcJycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZ
QkkwMCArICdcJycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdmVyc2lvbi1oZWFkZXInLCAn
LS12ZXJzaW9uX2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyc2lvbl9o
ZWFkZXInLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1bHQ9LTEsCi0g
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBTZWMtV2ViU29ja2V0LVZlcnNpb24g
aGVhZGVyIHZhbHVlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZsYXRlLWZyYW1lJywg
Jy0tZGVmbGF0ZV9mcmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGVmbGF0ZV9m
cmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhlIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdXNlLXBlcm1lc3NhZ2Ut
ZGVmbGF0ZScsICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nVXNlIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLicpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNl
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJu
JywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJu
JywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9n
IGxldmVsLicpCi0KLSAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoKQotCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLmdldExldmVsTmFt
ZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkKLQotICAgIGlmIG9wdGlvbnMuZHJhZnQ3NToK
LSAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnLS1kcmFmdDc1IG9wdGlvbiBpcyBvYnNvbGV0ZS4n
KQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9u
ID09IF9QUk9UT0NPTF9WRVJTSU9OX0hJWElFNzU6Ci0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
Ci0gICAgICAgICAgICAnVmFsdWUgJXMgaXMgb2Jzb2xldGUgZm9yIC0tcHJvdG9jb2xfdmVyc2lv
biBvcHRpb25zJyAlCi0gICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1KQotICAg
ICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBv
cHRpb25zLnRsc19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6
Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9N
T0RVTEUKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykK
LSAgICAgICAgICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBv
cHRpb25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxv
Z2dpbmcuZGVidWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAg
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUg
PT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9z
c2woKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5v
dCBhdmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYg
b3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYg
bm90IF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNh
bCgncHlPcGVuU1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBz
eXMuZXhpdCgxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgn
SW52YWxpZCAtLXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAg
ICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb24gYW5kCi0gICAgICAgICAg
ICBvcHRpb25zLnRsc19tb2R1bGUgIT0gX1RMU19CWV9QWU9QRU5TU0wpOgotICAgICAgICAgICAg
bG9nZ2luZy5jcml0aWNhbCgnWW91IGNhbiBkaXNhYmxlIFRMUyBjb21wcmVzc2lvbiBvbmx5IHdo
ZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlPcGVuU1NMIG1vZHVsZSBpcyB1
c2VkLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIG9w
dGlvbnMudGxzX21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGlj
YWwoJ1VzZSAtLXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBz
eXMuZXhpdCgxKQotCi0gICAgICAgIGlmIG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb246
Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS1kaXNhYmxlLXRscy1jb21wcmVz
c2lvbiBvbmx5IHRvZ2V0aGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGgg
LS11c2UtdGxzIG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgRGVm
YXVsdCBwb3J0IG51bWJlciBkZXBlbmRzIG9uIHdoZXRoZXIgVExTIGlzIHVzZWQuCi0gICAgaWYg
b3B0aW9ucy5zZXJ2ZXJfcG9ydCA9PSBfVU5ERUZJTkVEX1BPUlQ6Ci0gICAgICAgIGlmIG9wdGlv
bnMudXNlX3RsczoKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVG
QVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBv
cHRpb25zLnNlcnZlcl9wb3J0ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCi0KLSAg
ICAjIG9wdHBhcnNlIGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQgdmFs
dWVzLgotICAgICMgU2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgotICAgIGlmIG5vdCBvcHRpb25z
Lm1lc3NhZ2U6Ci0gICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2NzJj
JyAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQotCi0gICAgRWNob0NsaWVudChvcHRpb25zKS5ydW4o
KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fbm9leHRfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWRmNTE1MTIyNzExLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
ZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAK
LSMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0KLV9HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCi0KLQot
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICIiIlJlY2Vp
dmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUgaXMgcGFyc2VkIGludG8K
LSAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zLiBweXdlYnNvY2tldCBjcmVhdGVz
IGV4dGVuc2lvbgotICAgIHByb2Nlc3NvcnMgdXNpbmcgaXQgYmVmb3JlIGRvX2V4dHJhX2hhbmRz
aGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBpdAotICAgIGFmdGVyIHRoZSBjYWxsLgotCi0g
ICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNpb25zLCBjbGVhciB0aGUgcHJvY2Vzc29yIGxp
c3QuCi0gICAgIiIiCi0KLSAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10K
LQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgICIiIkVjaG8u
IFNhbWUgYXMgZWNob193c2gucHkuIiIiCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5l
ID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBp
cyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwg
dW5pY29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGlu
ZSwgYmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdF
OgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQotCi0KLSMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX3dzaC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvZWNob193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4NjQ2YzMyY2ViNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNo
b193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEx
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi1fR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnllJwotCi0KLWRlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICAjIFRoaXMgZXhhbXBsZSBoYW5kbGVyIGFj
Y2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5fY2hlY2tfd3NoLnB5IGZvciBob3cKLSAgICAj
IHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0ZWQgc2NyaXB0cyBiYXNlZCBvbiBvcmlnaW4g
dmFsdWUuCi0KLSAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQuCi0KLQotZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBpcyBO
b25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5p
Y29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwg
YmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgot
ICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmNnaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWRkZGYyMzdjZjdkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9ldmVudHNvdXJjZS5jZ2kKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIS91c3Iv
YmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIENHSSBzY3JpcHQgZ2Vu
ZXJhdGVzIHRleHQvZXZlbnQtc3RyZWFtIHR5cGUgZGF0YSBzdHJlYW0gZm9yIHRlc3RpbmcKLXRo
ZSBTZXJ2ZXItU2VudCBFdmVudHMuCi0KLUl0IHdpbGwgb25seSB3b3JrIGNvcnJlY3RseSB3aXRo
IEhUVFAgc2VydmVycyB0aGF0IGRvIG5vdCBidWZmZXIgdGhlIG91dHB1dCBvZgotQ0dJIHNjcmlw
dHMuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotCi1zeXMuc3Rkb3V0LndyaXRl
KCdDb250ZW50LXR5cGU6IHRleHQvZXZlbnQtc3RyZWFtXHJcblxyXG4nKQotCi1pZCA9IDAKLQot
d2hpbGUgVHJ1ZToKLSAgc3lzLnN0ZG91dC53cml0ZSgnZGF0YTogSGVsbG9cclxuaWQ6ICVkXHJc
blxyXG4nICUgaWQpCi0gIHN5cy5zdGRvdXQuZmx1c2goKQotCi0gIGlkID0gaWQgKyAxCi0KLSAg
dGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNTk4YTg4MDdkMWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL2V2ZW50c291cmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08
IS0tCi1Db3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0K
LVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0o
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPCEtLQotU2ltcGxlIGV4YW1wbGUgb2Yg
dGhlIFNlcnZlci1TZW50IEV2ZW50cwotaHR0cDovL2Rldi53My5vcmcvaHRtbDUvZXZlbnRzb3Vy
Y2UvCi0KLUZvciBjb21wYXJpc29uIHdpdGggdGhlIFdlYlNvY2tldCBQcm90b2NvbCAmIEFQSS4K
LQotUnVuIHRoZSBweXdlYnNvY2tldCB3aXRoIHRoZSAtLWNnaV9wYXRoIHBhcmFtZXRlci4KLS0t
PgotCi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlNlcnZlci1TZW50IEV2ZW50cyBFeGFtcGxlPC90
aXRsZT4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRTb3VyY2UgPSBudWxsOwotCi1mdW5jdGlvbiBhZGRU
b0xvZyhkYXRhKSB7Ci0gIGxvZ0JveC52YWx1ZSArPSBkYXRhICsgJ1xuJzsKLSAgbG9nQm94LnNj
cm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIGxvZ0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBldmVudFNvdXJjZSAgPSBuZXcgRXZl
bnRTb3VyY2UoJy9ldmVudHNvdXJjZS5jZ2knKTsKLSAgZXZlbnRTb3VyY2Uub25vcGVuID0gZnVu
Y3Rpb24oKSB7Ci0gICAgYWRkVG9Mb2coJ29ub3BlbiAocmVhZHlTdGF0ZSA9ICcgKyBldmVudFNv
dXJjZS5yZWFkeVN0YXRlICsgJyknKTsKLSAgfQotICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKGV2ZW50LmRhdGEpOwotICB9Ci0gIGV2ZW50
U291cmNlLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKCdvbmVycm9y
IChyZWFkeVN0YXRlID0gJyArIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgKyAnKScpOwotICB9Ci19
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLTx0ZXh0YXJlYSBp
ZD0ibG9nIiByb3dzPSIxMCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08cCBzdHls
ZT0iZm9udC1zaXplOiBzbWFsbCI+Ci0gIE1ha2Ugc3VyZSB0aGF0IHB5d2Vic29ja2V0IGlzIHJ1
biB3aXRoIC0tY2dpX3BhdGggcGFyYW1ldGVyLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2hhbmRsZXJfbWFwLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjNGMw
OWFhMDA5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9oYW5kbGVyX21hcC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHdlYnNvY2tldCBoYW5kbGVyIG1h
cCBmaWxlLCB1c2VkIGJ5IHN0YW5kYWxvbmUucHkgLW0gb3B0aW9uLgotIyBBIGxpbmUgc3RhcnRp
bmcgd2l0aCAnIycgaXMgYSBjb21tZW50IGxpbmUuCi0jIEVhY2ggbGluZSBjb25zaXN0cyBvZiAn
YWxpYXNfcmVzb3VyY2VfcGF0aCcgYW5kICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJwotIyBzZXBh
cmF0ZWQgYnkgc3BhY2VzLgotIyBBbGlhc2luZyBpcyBwcm9jZXNzZWQgZnJvbSB0aGUgdG9wIHRv
IHRoZSBib3R0b20gb2YgdGhlIGxpbmUsIGFuZAotIyAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCcg
bXVzdCBleGlzdCBiZWZvcmUgaXQgaXMgYWxpYXNlZC4KLSMgRm9yIGV4YW1wbGUsCi0jICAvIC9l
Y2hvCi0jIG1lYW5zIHRoYXQgYSByZXF1ZXN0IHRvICcvJyB3aWxsIGJlIGhhbmRsZWQgYnkgaGFu
ZGxlcnMgZm9yICcvZWNobycuCi0vIC9lY2hvCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUvaHN0c193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2hzdHNfd3NoLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlODYxOTQ2OTIxYWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL2hzdHNfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoCi0gICAgICAgICgnU3Ry
aWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAwJykpCi0KLQotZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5k
X21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9pbnRlcm5hbF9lcnJvcl93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmU1ODFiNTRhNjQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9pbnRlcm5hbF9lcnJvcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0j
IENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAot
Ci0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNz
Ci0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBt
c2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50aW9uYWwnKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlMDU3NjdhYjkzMmYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCww
IEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGV4YW1wbGUgaXMgZGVyaXZlZCBmcm9tIHRl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weS4KLQotCi1kZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC53c19vcmln
aW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6Ci0gICAgICAgIHJldHVybgotICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qud3Nfb3JpZ2luKQot
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVz
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCBy
ZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvcHl3
ZWJzb2NrZXQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1ZDEzMGE1Yzg0
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9weXdlYnNvY2tldC5jb25mCisr
KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMKLSMgU2Ft
cGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgYXBhY2hlMgotIwotTG9nTGV2ZWwgZGVidWcKLTxJ
Zk1vZHVsZSBweXRob25fbW9kdWxlPgotICBQeXRob25QYXRoICJzeXMucGF0aCtbJy9tb2RfcHl3
ZWJzb2NrZXQnXSIKLSAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3Qg
L3Zhci93d3cKLSAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gL3Zh
ci93d3cvd3MKLSAgI1B5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuYWxsb3dfZHJhZnQ3NSBP
bgotICA8TG9jYXRpb24gL3dzPgotICAgIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgbW9kX3B5
d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIKLSAgPC9Mb2NhdGlvbj4KLTwvSWZNb2R1bGU+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVhNTA4MGYxZjFhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
c3BlY2lhbF9oZWFkZXJzLmNnaQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMhL3Vz
ci9iaW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxl
IG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vu
c2VzL2JzZAotCi0iIiJDR0kgc2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRU
UCBoZWFkZXJzIG9uIHRoZSBvcmlnaW4gcGFnZS4KLQotTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRv
bid0IHdvcmsgb24gdGhlIHN0YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKLW1v
ZGUuCi0iIiIKLQotCi1wcmludCAiIiJDb250ZW50LXR5cGU6IHRleHQvaHRtbAotQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3k6IGNvbm5lY3Qtc3JjIHNlbGYKLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRs
ZT48L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotdmFyIHNvY2tldCA9IG5ldyBX
ZWJTb2NrZXQoIndzOi8vZXhhbXBsZS5jb20iKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PiIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsLmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhh
bXBsZS91dGlsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWNhZDQ5NzVlZTAu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWwuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxNzcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciBi
b3RoIG1haW4gYW5kIHdvcmtlciB0aHJlYWQpLgotCi12YXIgcmVzdWx0cyA9IHt9OwotCi1mdW5j
dGlvbiBnZXRUaW1lU3RhbXAoKSB7Ci0gIHJldHVybiBEYXRlLm5vdygpOwotfQotCi1mdW5jdGlv
biBmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQ
ZXJNZXNzYWdlSW5NcywKLSAgICBzcGVlZCwgcHJpbnRTaXplKSB7Ci0gIGlmIChwcmludFNpemUp
IHsKLSAgICByZXR1cm4gKHNpemUgLyAxMDI0KSArCi0gICAgICAgICdcdCcgKyB0aW1lUGVyTWVz
c2FnZUluTXMudG9GaXhlZCgzKSArCi0gICAgICAgIChzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMg
PT0gLTEgPwotICAgICAgICAgICAgJycgOgotICAgICAgICAgICAgJ1x0JyArIHN0ZGRldlRpbWVQ
ZXJNZXNzYWdlSW5Ncy50b0ZpeGVkKDMpKSArCi0gICAgICAgICdcdCcgKyBzcGVlZC50b0ZpeGVk
KDMpOwotICB9IGVsc2UgewotICAgIHJldHVybiBzcGVlZC50b1N0cmluZygpOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGNsZWFyQXZlcmFnZURhdGEoKSB7Ci0gIHJlc3VsdHMgPSB7fTsKLX0KLQotZnVu
Y3Rpb24gcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb1N1bW1hcnko
Ci0gICAgICAnU2l6ZVtLaUJdXHRBdmVyYWdlIHRpbWVbbXNdXHRTdGRkZXYgdGltZVttc11cdFNw
ZWVkW0tCL3NdJyk7Ci0gIGZvciAodmFyIHNpemUgaW4gcmVzdWx0cykgewotICAgIHZhciBhdmVy
YWdlVGltZVBlck1lc3NhZ2VJbk1zID0gcmVzdWx0c1tzaXplXS5zdW1fdCAvIHJlc3VsdHNbc2l6
ZV0ubjsKLSAgICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0Ioc2l6ZSwgYXZlcmFnZVRp
bWVQZXJNZXNzYWdlSW5Ncyk7Ci0gICAgLy8gQ2FsY3VsYXRlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24KLSAgICB2YXIgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zID0gTWF0aC5zcXJ0KAotICAg
ICAgICAocmVzdWx0c1tzaXplXS5zdW1fdDIgLyByZXN1bHRzW3NpemVdLm4gLQotICAgICAgICAg
ICAgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcyAqIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMp
ICoKLSAgICAgICAgcmVzdWx0c1tzaXplXS5uIC8KLSAgICAgICAgKHJlc3VsdHNbc2l6ZV0ubiAt
IDEpKTsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5KGZvcm1hdFJlc3VsdEluS2lCKAotICAgICAg
ICBzaXplLCBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1lUGVyTWVzc2FnZUlu
TXMsIHNwZWVkLAotICAgICAgICB0cnVlKSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2FsY3VsYXRl
U3BlZWRJbktCKHNpemUsIHRpbWVTcGVudEluTXMpIHsKLSAgcmV0dXJuIE1hdGgucm91bmQoc2l6
ZSAvIHRpbWVTcGVudEluTXMgKiAxMDAwKSAvIDEwMDA7Ci19Ci0KLWZ1bmN0aW9uIGNhbGN1bGF0
ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIHN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSkgewot
ICB2YXIgdGltZVNwZW50SW5NcyA9IGdldFRpbWVTdGFtcCgpIC0gc3RhcnRUaW1lSW5NczsKLSAg
dmFyIHNwZWVkID0gY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6ZSwgdGltZVNwZW50SW5Ncyk7
Ci0gIHZhciB0aW1lUGVyTWVzc2FnZUluTXMgPSB0aW1lU3BlbnRJbk1zIC8gKHRvdGFsU2l6ZSAv
IHNpemUpOwotICBpZiAoIXJlc3VsdHNbc2l6ZV0pIHsKLSAgICByZXN1bHRzW3NpemVdID0ge246
IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9OwotICB9Ci0gIGNvbmZpZy5tZWFzdXJlVmFsdWUodGlt
ZVBlck1lc3NhZ2VJbk1zKTsKLSAgcmVzdWx0c1tzaXplXS5uICsrOwotICByZXN1bHRzW3NpemVd
LnN1bV90ICs9IHRpbWVQZXJNZXNzYWdlSW5NczsKLSAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0g
dGltZVBlck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOwotICBjb25maWcuYWRkVG9M
b2coZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgdGltZVBlck1lc3NhZ2VJbk1zLCAtMSwgc3BlZWQs
Ci0gICAgICBjb25maWcucHJpbnRTaXplKSk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGxBcnJheUJ1ZmZl
cihidWZmZXIsIGMpIHsKLSAgdmFyIGk7Ci0KLSAgdmFyIHUzMkNvbnRlbnQgPSBjICogMHgwMTAx
MDEwMTsKLQotICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0ZUxlbmd0aCAv
IDQpOwotICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAsIHUzMkJsb2Nr
cyk7Ci0gIC8vIGxlbmd0aCBhdHRyaWJ1dGUgaXMgc2xvdyBvbiBDaHJvbWUuIERvbid0IHVzZSBp
dCBmb3IgbG9vcCBjb25kaXRpb24uCi0gIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkg
ewotICAgIHUzMlZpZXdbaV0gPSB1MzJDb250ZW50OwotICB9Ci0KLSAgLy8gRnJhY3Rpb24KLSAg
dmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9ja3MgKiA0OwotICB2YXIg
dThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3MgKiA0LCB1OEJsb2Nrcyk7
Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7Ci0gICAgdThWaWV3W2ldID0gYzsK
LSAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlBcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVjdGVkQ2hh
cikgewotICB2YXIgaTsKLQotICB2YXIgZXhwZWN0ZWRVMzJWYWx1ZSA9IGV4cGVjdGVkQ2hhciAq
IDB4MDEwMTAxMDE7Ci0KLSAgdmFyIHUzMkJsb2NrcyA9IE1hdGguZmxvb3IoYnVmZmVyLmJ5dGVM
ZW5ndGggLyA0KTsKLSAgdmFyIHUzMlZpZXcgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyLCAwLCB1
MzJCbG9ja3MpOwotICBmb3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kpIHsKLSAgICBpZiAo
dTMyVmlld1tpXSAhPSBleHBlY3RlZFUzMlZhbHVlKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICB9Ci0KLSAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9j
a3MgKiA0OwotICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3Mg
KiA0LCB1OEJsb2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7Ci0gICAg
aWYgKHU4Vmlld1tpXSAhPSBleHBlY3RlZENoYXIpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5QmxvYihjb25m
aWcsIGJsb2IsIGV4cGVjdGVkQ2hhciwgZG9uZUNhbGxiYWNrKSB7Ci0gIHZhciByZWFkZXIgPSBu
ZXcgRmlsZVJlYWRlcihibG9iKTsKLSAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAg
ICBjb25maWcuYWRkVG9Mb2coJ0ZpbGVSZWFkZXIgRXJyb3I6ICcgKyByZWFkZXIuZXJyb3IubWVz
c2FnZSk7Ci0gICAgZG9uZUNhbGxiYWNrKGJsb2Iuc2l6ZSwgZmFsc2UpOwotICB9Ci0gIHJlYWRl
ci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVzdWx0ID0gdmVyaWZ5QXJyYXlC
dWZmZXIocmVhZGVyLnJlc3VsdCwgZXhwZWN0ZWRDaGFyKTsKLSAgICBkb25lQ2FsbGJhY2soYmxv
Yi5zaXplLCByZXN1bHQpOwotICB9Ci0gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTsK
LX0KLQotZnVuY3Rpb24gdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywgbWVzc2FnZSwgc2l6
ZSkgewotICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIHsKLSAgICBjb25maWcuYWRk
VG9Mb2coJ0ludmFsaWQgYWNrIHR5cGU6ICcgKyB0eXBlb2YgbWVzc2FnZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0gIHZhciBwYXJzZWRBY2sgPSBwYXJzZUludChtZXNzYWdlKTsKLSAgaWYg
KGlzTmFOKHBhcnNlZEFjaykpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ludmFsaWQgYWNrIHZh
bHVlOiAnICsgbWVzc2FnZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGlmIChwYXJzZWRB
Y2sgIT0gc2l6ZSkgewotICAgIGNvbmZpZy5hZGRUb0xvZygKLSAgICAgICAgJ0V4cGVjdGVkIGFj
ayBmb3IgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgb25lIGZvciAnICsgcGFyc2VkQWNrICsK
LSAgICAgICAgJ0InKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsK
LX0KLQotZnVuY3Rpb24gY2xvbmVDb25maWcob2JqKSB7Ci0gIHZhciBuZXdPYmogPSB7fTsKLSAg
Zm9yIChrZXkgaW4gb2JqKSB7Ci0gICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsKLSAgfQotICBy
ZXR1cm4gbmV3T2JqOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX21haW4u
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWxfbWFpbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjAzZDFjMmJkYzQ2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS91dGlsX21haW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2
ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0vLyBVdGlsaXRp
ZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgot
Ci12YXIgbG9nQm94ID0gbnVsbDsKLXZhciBxdWV1ZWRMb2cgPSAnJzsKLQotdmFyIHN1bW1hcnlC
b3ggPSBudWxsOwotCi1mdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKLSAgcXVldWVkTG9nICs9IGxv
ZyArICdcbic7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRvTG9nKGxvZykgewotICBsb2dCb3gudmFsdWUg
Kz0gcXVldWVkTG9nOwotICBxdWV1ZWRMb2cgPSAnJzsKLSAgbG9nQm94LnZhbHVlICs9IGxvZyAr
ICdcbic7Ci0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBhZGRU
b1N1bW1hcnkobG9nKSB7Ci0gIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKLSAgc3Vt
bWFyeUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi0vLyB2YWx1ZTogZXhlY3V0aW9uIHRp
bWUgaW4gbWlsbGlzZWNvbmRzLgotLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0
byBiZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgotLy8gRG8gbm90aGluZyBoZXJlIGluIG5v
bi1QZXJmb3JtYW5jZVRlc3QuCi1mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKLX0KLQot
ZnVuY3Rpb24gZ2V0SW50RnJvbUlucHV0KGlkKSB7Ci0gIHJldHVybiBwYXJzZUludChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWUpOwotfQotCi1mdW5jdGlvbiBnZXRTdHJpbmdGcm9t
UmFkaW9Cb3gobmFtZSkgewotICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
ZW5jaG1hcmtfZm9ybScpW25hbWVdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3Ro
OyArK2kpCi0gICAgaWYgKGxpc3QuaXRlbShpKS5jaGVja2VkKQotICAgICAgcmV0dXJuIGxpc3Qu
aXRlbShpKS52YWx1ZTsKLSAgcmV0dXJuIHVuZGVmaW5lZDsKLX0KLWZ1bmN0aW9uIGdldEJvb2xG
cm9tQ2hlY2tCb3goaWQpIHsKLSAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5j
aGVja2VkOwotfQotCi1mdW5jdGlvbiBnZXRJbnRBcnJheUZyb21JbnB1dChpZCkgewotICB2YXIg
c3RyQXJyYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWUuc3BsaXQoJywnKTsK
LSAgcmV0dXJuIHN0ckFycmF5Lm1hcChmdW5jdGlvbihzdHIpIHsgcmV0dXJuIHBhcnNlSW50KHN0
ciwgMTApOyB9KTsKLX0KLQotZnVuY3Rpb24gb25NZXNzYWdlKG1lc3NhZ2UpIHsKLSAgaWYgKG1l
c3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9Mb2cnKQotICAgIGFkZFRvTG9nKG1lc3NhZ2UuZGF0
YS5kYXRhKTsKLSAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdhZGRUb1N1bW1hcnkn
KQotICAgIGFkZFRvU3VtbWFyeShtZXNzYWdlLmRhdGEuZGF0YSk7Ci0gIGVsc2UgaWYgKG1lc3Nh
Z2UuZGF0YS50eXBlID09PSAnbWVhc3VyZVZhbHVlJykKLSAgICBtZWFzdXJlVmFsdWUobWVzc2Fn
ZS5kYXRhLmRhdGEpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtl
ci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI2NGY3ODI5ZDUyZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvdXRpbF93b3JrZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBz
Oi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0vLyBV
dGlsaXRpZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIHdvcmtlciB0aHJlYWRz
IG9ubHkpLgotCi1mdW5jdGlvbiB3b3JrZXJBZGRUb0xvZyh0ZXh0KSB7Ci0gIHBvc3RNZXNzYWdl
KHt0eXBlOiAnYWRkVG9Mb2cnLCBkYXRhOiB0ZXh0fSk7Ci19Ci0KLWZ1bmN0aW9uIHdvcmtlckFk
ZFRvU3VtbWFyeSh0ZXh0KSB7Ci0gIHBvc3RNZXNzYWdlKHt0eXBlOiAnYWRkVG9TdW1tYXJ5Jywg
ZGF0YTogdGV4dH0pOwotfQotCi1mdW5jdGlvbiB3b3JrZXJNZWFzdXJlVmFsdWUodmFsdWUpIHsK
LSAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMWY3
OTliYzQxYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Fib3J0X3dzaC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2JlbmNoX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2ht
YXJrX2hlbHBlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Nsb3NlX3dzaC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvY29uc29sZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb29raWVfd3NoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNo
b19ub2V4dF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fd3NoLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
ZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
aHN0c193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvcHl3
ZWJzb2NrZXQuY29uZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvdXRpbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbF9tYWluLmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2Jl
bmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpzCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUveGhyX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJr
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NjIyOTc3NWY1YS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNobWFyay5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMjIyICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5j
LgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6
Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmli
dXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1E
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgot
Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlhNTEh0dHBSZXF1ZXN0IGJlbmNobWFyazwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1dGls
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ4aHJfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci12YXIgYWRkcmVzc0JveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGdldENvbmZpZygp
IHsKLSAgcmV0dXJuIHsKLSAgICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFsdWUsCi0gICAgcHJp
bnRTaXplOiBnZXRCb29sRnJvbUNoZWNrQm94KCdwcmludHNpemUnKSwKLSAgICBudW1YSFJzOiBn
ZXRJbnRGcm9tSW5wdXQoJ251bVhIUnMnKSwKLSAgICBhc3luYzogZ2V0Qm9vbEZyb21DaGVja0Jv
eCgnYXN5bmMnKSwKLSAgICAvLyBJbml0aWFsIHNpemUgb2YgbWVzc2FnZXMuCi0gICAgbnVtSXRl
cmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW1pdGVyYXRpb25zJyksCi0gICAgbnVtV2FybVVw
SXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW13YXJtdXBpdGVyYXRpb25zJyksCi0gICAg
c3RhcnRTaXplOiBnZXRJbnRGcm9tSW5wdXQoJ3N0YXJ0c2l6ZScpLAotICAgIC8vIFN0b3BzIGJl
bmNobWFyayB3aGVuIHRoZSBzaXplIG9mIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4K
LSAgICBzdG9wVGhyZXNob2xkOiBnZXRJbnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hvbGQnKSwKLSAg
ICAvLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIG1lc3NhZ2UgaXMgc21hbGwsIHNlbmQvcmVjZWl2ZSBt
dWx0aXBsZSBtZXNzYWdlcwotICAgIC8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hlcyB0
aGlzIHRocmVzaG9sZC4KLSAgICAvLyBtaW5Ub3RhbDogZ2V0SW50RnJvbUlucHV0KCdtaW50b3Rh
bCcpLAotICAgIC8vIG1pblRvdGFsIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gWEhSIGJlbmNo
bWFyawotICAgIG11bHRpcGxpZXJzOiBnZXRJbnRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGllcnMn
KSwKLSAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJykKLSAg
fTsKLX0KLQotdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3hocl9iZW5jaG1hcmsuanMnKTsKLXdv
cmtlci5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2U7Ci0KLWZ1bmN0aW9uIG9uU2VuZEJlbmNobWFyaygp
IHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotICBjb25maWcuZGF0YVR5cGUgPSBnZXRT
dHJpbmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBlcmFkaW8nKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21D
aGVja0JveCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdzZW5k
QmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRk
VG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5
OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgc2VuZEJlbmNo
bWFyayhjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uUmVjZWl2ZUJlbmNobWFyaygpIHsK
LSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotICBjb25maWcuZGF0YVR5cGUgPSBnZXRTdHJp
bmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBlcmFkaW8nKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVj
a0JveCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdyZWNlaXZl
QmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRk
VG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5
OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgcmVjZWl2ZUJl
bmNobWFyayhjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7
Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0Jv
eCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdiYXRjaEJlbmNo
bWFyaycsIGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9n
ID0gYWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAg
ICBjb25maWcubWVhc3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwotICAgIGJhdGNoQmVuY2htYXJr
KGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25TdG9wKCkgewotICB2YXIgY29uZmlnID0g
Z2V0Q29uZmlnKCk7Ci0KLSAgaWYgKGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpKSB7Ci0g
ICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAnc3RvcCcsIGNvbmZpZzogY29uZmlnfSk7Ci0g
IH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nID0gYWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFk
ZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAgICBjb25maWcubWVhc3VyZVZhbHVlID0gbWVh
c3VyZVZhbHVlOwotICAgIHN0b3AoY29uZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBpbml0KCkg
ewotICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKLSAg
bG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwotCi0gIHN1bW1hcnlCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOwotCi0gIC8vIFNwZWNpYWwgYWRk
cmVzcyBvZiBweXdlYnNvY2tldCBmb3IgWEhSIGJlbmNobWFyay4KLSAgYWRkcmVzc0JveC52YWx1
ZSA9ICcvMDczYmUwMDFlMTA5NTA2OTJjY2JmM2EyYWQyMWMyNDUnOwotCi0gIGFkZFRvTG9nKHdp
bmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1bW1hcnko
d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci19Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLQotPGZvcm0gaWQ9ImJlbmNobWFya19m
b3JtIj4KLSAgdXJsIHByZWZpeCA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9
IjQwIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InNlbmQiIG9uY2xpY2s9Im9uU2Vu
ZEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InJlY2VpdmUiIG9u
Y2xpY2s9Im9uUmVjZWl2ZUJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFs
dWU9ImJhdGNoIiBvbmNsaWNrPSJvbkJhdGNoQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0i
YnV0dG9uIiB2YWx1ZT0ic3RvcCIgb25jbGljaz0ib25TdG9wKCkiPgotCi0gIDxici8+Ci0KLSAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJpbnRzaXplIiBjaGVja2VkPgotICA8bGFiZWwg
Zm9yPSJwcmludHNpemUiPlByaW50IHNpemUgYW5kIHRpbWUgcGVyIG1lc3NhZ2U8L2xhYmVsPgot
ICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ2ZXJpZnlkYXRhIiBjaGVja2VkPgotICA8bGFi
ZWwgZm9yPSJ2ZXJpZnlkYXRhIj5WZXJpZnkgZGF0YTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJj
aGVja2JveCIgaWQ9IndvcmtlciI+Ci0gIDxsYWJlbCBmb3I9IndvcmtlciI+UnVuIG9uIHdvcmtl
cjwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgot
ICA8bGFiZWwgZm9yPSJhc3luYyI+QXN5bmM8L2xhYmVsPjxicj4KLSAgKFJlY2VpdmUgJmFtcDsm
YW1wOyBOb24tV29ya2VyICZhbXA7JmFtcDsgU3luYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNwZWMp
Ci0KLSAgPGJyLz4KLQotICBQYXJhbWV0ZXJzOgotCi0gIDxici8+Ci0KLSAgPHRhYmxlPgotICAg
IDx0cj4KLSAgICAgIDx0ZD5OdW0gWEhSczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRl
eHQiIGlkPSJudW1YSFJzIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAg
ICAgIDx0ZD5OdW1iZXIgb2YgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9
InRleHQiIGlkPSJudW1pdGVyYXRpb25zIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAg
IDx0cj4KLSAgICAgIDx0ZD5OdW1iZXIgb2Ygd2FybS11cCBpdGVyYXRpb25zPC90ZD4KLSAgICAg
IDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bXdhcm11cGl0ZXJhdGlvbnMiIHZhbHVlPSIw
Ij48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0YXJ0IHNpemU8L3RkPgot
ICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnRzaXplIiB2YWx1ZT0iMTAyNDAi
PjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RvcCB0aHJlc2hvbGQ8L3Rk
PgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RvcHRocmVzaG9sZCIgdmFsdWU9
IjEwMjQwMDAwMCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5NaW5pbXVt
IHRvdGFsPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1pbnRvdGFsIiB2
YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11
bHRpcGxpZXJzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxp
ZXJzIiB2YWx1ZT0iNSwgMiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotCi0gIFNldCBk
YXRhIHR5cGUKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVy
YWRpbyIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvdGV4dCIKLSAgICAgICAgIHZhbHVlPSJ0
ZXh0IgotICAgICAgICAgY2hlY2tlZD48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvdGV4dCI+dGV4
dDwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBl
cmFkaW8iCi0gICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb2Jsb2IiCi0gICAgICAgICB2YWx1ZT0i
YmxvYiIKLSAgICAgICAgID48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvYmxvYiI+YmxvYjwvbGFi
ZWw+Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8i
Ci0gICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVyIgotICAgICAgICAgdmFsdWU9
ImFycmF5YnVmZmVyIgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9hcnJheWJ1
ZmZlciI+YXJyYXlidWZmZXI8L2xhYmVsPgotPC9mb3JtPgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4K
LSAgPHRleHRhcmVhCi0gICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAl
IiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJzdW1tYXJ5X2RpdiI+Ci0g
IFN1bW1hcnkKLSAgPHRleHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIgcm93cz0iMjAiIHN0eWxl
PSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2PgotCi1Ob3RlOiBFZmZl
Y3Qgb2YgUlRUIGFuZCB0aW1lIHNwZW50IGZvciBBcnJheUJ1ZmZlciBjcmVhdGlvbiBpbiByZWNl
aXZlIGJlbmNobWFya3MgYXJlIG5vdCBlbGltaW5hdGVkLgotCi08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3hocl9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL3hocl9iZW5jaG1hcmsuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIz
M2M3Y2IzOGM0OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNo
bWFyay5qcworKysgL2Rldi9udWxsCkBAIC0xLDM4OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAx
NCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2ZWxvcGVy
cy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi12YXIgaXNXb3JrZXIgPSB0
eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gInVuZGVmaW5lZCI7Ci0KLWlmIChpc1dvcmtlcikgewot
ICAvLyBSdW5uaW5nIG9uIGEgd29ya2VyCi0gIGltcG9ydFNjcmlwdHMoJ3V0aWwuanMnLCAndXRp
bF93b3JrZXIuanMnKTsKLX0KLQotLy8gTmFtZXNwYWNlIGZvciBob2xkaW5nIGdsb2JhbHMuCi12
YXIgYmVuY2htYXJrID0ge307Ci1iZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IDA7Ci0KLXZhciB4
aHJzID0gW107Ci0KLXZhciB0aW1lcklEID0gbnVsbDsKLQotZnVuY3Rpb24gZGVzdHJveUFsbFhI
UnMoKSB7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgeGhycy5sZW5ndGg7ICsraSkgewotICAgIHho
cnNbaV0ub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDsKLSAgICAvLyBBYm9ydCBYSFJzIGlmIHRo
ZXkgYXJlIG5vdCB5ZXQgRE9ORSBzdGF0ZS4KLSAgICAvLyBDYWxsaW5nIGFib3J0KCkgaGVyZSAo
aS5lLiBpbiBvbnJlYWR5c3RhdGVjaGFuZ2UgaGFuZGxlcikgCi0gICAgLy8gY2F1c2VzICJOZXR3
b3JrRXJyb3IiIG1lc3NhZ2VzIGluIERldlRvb2xzIGluIHN5bmMgbW9kZSwKLSAgICAvLyBldmVu
IGlmIGl0IGlzIGFmdGVyIHRyYW5zaXRpb24gdG8gRE9ORSBzdGF0ZS4KLSAgICBpZiAoeGhyc1tp
XS5yZWFkeVN0YXRlICE9IFhNTEh0dHBSZXF1ZXN0LkRPTkUpCi0gICAgICB4aHJzW2ldLmFib3J0
KCk7Ci0gIH0KLSAgeGhycyA9IFtdOwotICAvLyBnYygpIG1pZ2h0IGJlIG5lZWRlZCBmb3IgQ2hy
b21lL0Jsb2IKLX0KLQotZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0ciwgY291bnQpIHsKLSAgdmFy
IGRhdGEgPSAnJzsKLSAgdmFyIGV4cENodW5rID0gc3RyOwotICB2YXIgcmVtYWluID0gY291bnQ7
Ci0gIHdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKHJlbWFpbiAlIDIpIHsKLSAgICAgIGRhdGEgKz0g
ZXhwQ2h1bms7Ci0gICAgICByZW1haW4gPSAocmVtYWluIC0gMSkgLyAyOwotICAgIH0gZWxzZSB7
Ci0gICAgICByZW1haW4gLz0gMjsKLSAgICB9Ci0KLSAgICBpZiAocmVtYWluID09IDApCi0gICAg
ICBicmVhazsKLQotICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBleHBDaHVuazsKLSAgfQotICBy
ZXR1cm4gZGF0YTsKLX0KLQotZnVuY3Rpb24gc2VuZEJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmln
KSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVs
bDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZh
ciBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh0aGlz
LnJlYWR5U3RhdGUgIT0gdGhpcy5ET05FKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKHRoaXMuc3RhdHVzICE9IDIwMCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdGYWlsZWQg
KHN0YXR1cz0nICsgdGhpcy5zdGF0dXMgKyAnKScpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY29uZmlnLnZlcmlmeURhdGEgJiYKLSAg
ICAgICAgIXZlcmlmeUFja25vd2xlZGdlbWVudChjb25maWcsIHRoaXMucmVzcG9uc2UsIHNpemUp
KSB7Ci0gICAgICBkZXN0cm95QWxsWEhScygpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6
ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChiZW5jaG1hcmsuc3RhcnRUaW1l
SW5NcyA9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ3N0YXJ0VGltZUluTXMgbm90
IHNldCcpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcywgdG90YWxTaXplKTsKLQotICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0KLSAgICBydW5O
ZXh0VGFzayhjb25maWcpOwotICB9OwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLm51
bVhIUnM7ICsraSkgewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4
aHIub25yZWFkeXN0YXRlY2hhbmdlID0gb25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxlcjsKLSAgICB4
aHJzLnB1c2goeGhyKTsKLSAgfQotCi0gIHZhciBkYXRhQXJyYXkgPSBbXTsKLQotICBmb3IgKHZh
ciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgZGF0YSA9IG51bGw7Ci0g
ICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAnYXJyYXlidWZmZXInIHx8Ci0gICAgICAgIGNvbmZp
Zy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2l6
ZSk7Ci0KLSAgICAgIGZpbGxBcnJheUJ1ZmZlcihkYXRhLCAweDYxKTsKLQotICAgICAgaWYgKGNv
bmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgICAgZGF0YSA9IG5ldyBCbG9iKFtkYXRh
XSk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRhdGEgPSByZXBlYXRTdHJpbmcoJ2En
LCBzaXplKTsKLSAgICB9Ci0KLSAgICBkYXRhQXJyYXkucHVzaChkYXRhKTsKLSAgfQotCi0KLSAg
YmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsKLSAgdG90YWxTaXplID0g
c2l6ZSAqIHhocnMubGVuZ3RoOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwgeGhycy5sZW5ndGg7
ICsraSkgewotICAgIHZhciBkYXRhID0gZGF0YUFycmF5W2ldOwotICAgIHZhciB4aHIgPSB4aHJz
W2ldOwotICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfc2VuZCcsIGNv
bmZpZy5hc3luYyk7Ci0gICAgeGhyLnNlbmQoZGF0YSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcmVj
ZWl2ZUJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0g
IGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVsbDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0g
IHZhciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZhciBjaGVja1Jlc3VsdEFuZENvbnRpbnVlID0g
ZnVuY3Rpb24gKGJ5dGVzUmVjZWl2ZWQsIHZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgIGlmICgh
dmVyaWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZl
cmlmaWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7Ci0KLSAgICBp
ZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGJlbmNobWFyay5zdGFydFRpbWVJbk1zID09IG51bGwpIHsKLSAgICAgIGNvbmZpZy5h
ZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0Jyk7Ci0gICAgICBkZXN0cm95QWxsWEhScygp
OwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25m
aWcsIHNpemUsIGJlbmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUpOwotCi0gICAgZGVz
dHJveUFsbFhIUnMoKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0KLQotICB2YXIg
b25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKLSAgICBpZiAodGhpcy5y
ZWFkeVN0YXRlICE9IHRoaXMuRE9ORSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICh0aGlzLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygnRmFpbGVkIChz
dGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0g
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGJ5dGVzUmVjZWl2ZWQgPSAtMTsKLSAgICBp
ZiAodGhpcy5yZXNwb25zZVR5cGUgPT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgYnl0ZXNSZWNl
aXZlZCA9IHRoaXMucmVzcG9uc2UuYnl0ZUxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVz
cG9uc2VUeXBlID09ICdibG9iJykgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9u
c2Uuc2l6ZTsKLSAgICB9IGVsc2UgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9u
c2UubGVuZ3RoOwotICAgIH0KLSAgICBpZiAoYnl0ZXNSZWNlaXZlZCAhPSBzaXplKSB7Ci0gICAg
ICBjb25maWcuYWRkVG9Mb2coJ0V4cGVjdGVkICcgKyBzaXplICsKLSAgICAgICAgICAnQiBidXQg
cmVjZWl2ZWQgJyArIGJ5dGVzUmVjZWl2ZWQgKyAnQicpOwotICAgICAgZGVzdHJveUFsbFhIUnMo
KTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy5yZXNwb25zZVR5cGUgPT0g
J2FycmF5YnVmZmVyJykgewotICAgICAgY2hlY2tSZXN1bHRBbmRDb250aW51ZShieXRlc1JlY2Vp
dmVkLAotICAgICAgICAgICFjb25maWcudmVyaWZ5RGF0YSB8fCB2ZXJpZnlBcnJheUJ1ZmZlcih0
aGlzLnJlc3BvbnNlLCAweDYxKSk7Ci0gICAgfSBlbHNlIGlmICh0aGlzLnJlc3BvbnNlVHlwZSA9
PSAnYmxvYicpIHsKLSAgICAgIGlmIChjb25maWcudmVyaWZ5RGF0YSkKLSAgICAgICAgdmVyaWZ5
QmxvYihjb25maWcsIHRoaXMucmVzcG9uc2UsIDB4NjEsIGNoZWNrUmVzdWx0QW5kQ29udGludWUp
OwotICAgICAgZWxzZQotICAgICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKGJ5dGVzUmVjZWl2
ZWQsIHRydWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKAot
ICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQsCi0gICAgICAgICAgIWNvbmZpZy52ZXJpZnlEYXRhIHx8
Ci0gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2UgPT0gcmVwZWF0U3RyaW5nKCdhJywgdGhpcy5y
ZXNwb25zZS5sZW5ndGgpKTsKLSAgICB9Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b25maWcubnVtWEhSczsgKytpKSB7Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OwotICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVy
OwotICAgIHhocnMucHVzaCh4aHIpOwotICB9Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PSBnZXRUaW1lU3RhbXAoKTsKLSAgdG90YWxTaXplID0gc2l6ZSAqIHhocnMubGVuZ3RoOwotCi0g
IGZvciAodmFyIGkgPSAwOyBpIDwgeGhycy5sZW5ndGg7ICsraSkgewotICAgIHZhciB4aHIgPSB4
aHJzW2ldOwotICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2
ZScsIGNvbmZpZy5hc3luYyk7Ci0gICAgeGhyLnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlw
ZTsKLSAgICB4aHIuc2VuZChzaXplICsgJyBub25lJyk7Ci0gIH0KLX0KLQotCi1mdW5jdGlvbiBn
ZXRDb25maWdTdHJpbmcoY29uZmlnKSB7Ci0gIHJldHVybiAnKCcgKyBjb25maWcuZGF0YVR5cGUg
KwotICAgICcsIHZlcmlmeURhdGE9JyArIGNvbmZpZy52ZXJpZnlEYXRhICsKLSAgICAnLCAnICsg
KGlzV29ya2VyID8gJ1dvcmtlcicgOiAnTWFpbicpICsKLSAgICAnLCAnICsgKGNvbmZpZy5hc3lu
YyA/ICdBc3luYycgOiAnU3luYycpICsKLSAgICAnLCBudW1YSFJzPScgKyBjb25maWcubnVtWEhS
cyArCi0gICAgJywgbnVtSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bUl0ZXJhdGlvbnMgKwotICAg
ICcsIG51bVdhcm1VcEl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsK
LSAgICAnKSc7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0QmVuY2htYXJrKGNvbmZpZykgewotICBjbGVh
clRpbWVvdXQodGltZXJJRCk7Ci0gIGRlc3Ryb3lBbGxYSFJzKCk7Ci0KLSAgcnVuTmV4dFRhc2so
Y29uZmlnKTsKLX0KLQotLy8gVE9ETyhoaXJvc2hpZ2UpOiB0aGUgZm9sbG93aW5nIGNvZGUgaXMg
dGhlIHNhbWUgYXMgYmVuY2htYXJrLmh0bWwKLS8vIGFuZCBzb21lIG9mIHRoZW0gc2hvdWxkIGJl
IG1lcmdlZCBpbnRvIGUuZy4gdXRpbC5qcwotCi12YXIgdGFza3MgPSBbXTsKLQotZnVuY3Rpb24g
cnVuTmV4dFRhc2soY29uZmlnKSB7Ci0gIHZhciB0YXNrID0gdGFza3Muc2hpZnQoKTsKLSAgaWYg
KHRhc2sgPT0gdW5kZWZpbmVkKSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdGaW5pc2hlZCcpOwot
ICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHRpbWVySUQgPSBzZXRU
aW1lb3V0KHRhc2ssIDApOwotfQotCi1mdW5jdGlvbiBidWlsZExlZ2VuZFN0cmluZyhjb25maWcp
IHsKLSAgdmFyIGxlZ2VuZCA9ICcnCi0gIGlmIChjb25maWcucHJpbnRTaXplKQotICAgIGxlZ2Vu
ZCA9ICdNZXNzYWdlIHNpemUgaW4gS2lCLCBUaW1lL21lc3NhZ2UgaW4gbXMsICc7Ci0gIGxlZ2Vu
ZCArPSAnU3BlZWQgaW4ga0Ivcyc7Ci0gIHJldHVybiBsZWdlbmQ7Ci19Ci0KLWZ1bmN0aW9uIGFk
ZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmMpIHsKLSAgZm9yICh2YXIgaSA9IDA7Ci0gICAgICBpIDwg
Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKyBjb25maWcubnVtSXRlcmF0aW9uczsgKytpKSB7
Ci0gICAgLy8gSWdub3JlIHRoZSBmaXJzdCB8Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnN8IGl0
ZXJhdGlvbnMuCi0gICAgaWYgKGkgPT0gY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpCi0gICAg
ICBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmlnKTsKLQotICAgIHZhciBtdWx0aXBsaWVySW5k
ZXggPSAwOwotICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwotICAgICAgICAg
c2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKLSAgICAgICAgICsrbXVsdGlwbGllckluZGV4
KSB7Ci0gICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCi0gICAgICAgICAgbnVsbCwKLSAg
ICAgICAgICBzaXplLAotICAgICAgICAgIGNvbmZpZyk7Ci0gICAgICB0YXNrcy5wdXNoKHRhc2sp
OwotICAgICAgc2l6ZSAqPSBjb25maWcubXVsdGlwbGllcnNbCi0gICAgICAgICAgbXVsdGlwbGll
ckluZGV4ICUgY29uZmlnLm11bHRpcGxpZXJzLmxlbmd0aF07Ci0gICAgfQotICB9Ci19Ci0KLWZ1
bmN0aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgewotICB0YXNrcy5w
dXNoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAgICAgIGNvbmZpZy5hZGRU
b1N1bW1hcnkodGl0bGUpOwotICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKLSAgICAg
IGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0pOwot
fQotCi1mdW5jdGlvbiBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmlnKSB7Ci0gIHRhc2tzLnB1
c2goZnVuY3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxsOwotICAgICAgY2xlYXJBdmVyYWdl
RGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfSk7Ci19Ci0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmsoY29u
ZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb0xvZygnU2VuZCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFk
ZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNs
ZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3MoY29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7
Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdl
dENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQot
ZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdS
ZWNlaXZlIGJlbmNobWFyaycpOwotICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmco
Y29uZmlnKSk7Ci0KLSAgdGFza3MgPSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRU
YXNrcyhjb25maWcsIHJlY2VpdmVCZW5jaG1hcmtTdGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5n
VGFzayhjb25maWcsCi0gICAgICAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmlu
Zyhjb25maWcpKTsKLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gYmF0
Y2hCZW5jaG1hcmsob3JpZ2luYWxDb25maWcpIHsKLSAgb3JpZ2luYWxDb25maWcuYWRkVG9Mb2co
J0JhdGNoIGJlbmNobWFyaycpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEo
KTsKLQotICB2YXIgZGF0YVR5cGVzID0gWyd0ZXh0JywgJ2Jsb2InLCAnYXJyYXlidWZmZXInXTsK
LSAgdmFyIHN0ZXBGdW5jcyA9IFtzZW5kQmVuY2htYXJrU3RlcCwgcmVjZWl2ZUJlbmNobWFya1N0
ZXBdOwotICB2YXIgbmFtZXMgPSBbJ1NlbmQnLCAnUmVjZWl2ZSddOwotICB2YXIgYXN5bmMgPSBb
dHJ1ZSwgZmFsc2VdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ZXBGdW5jcy5sZW5ndGg7ICsr
aSkgewotICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGF0YVR5cGVzLmxlbmd0aDsgKytqKSB7Ci0g
ICAgICBmb3IgKHZhciBrID0gMDsgayA8IGFzeW5jLmxlbmd0aDsgKytrKSB7Ci0gICAgICAgIHZh
ciBjb25maWcgPSBjbG9uZUNvbmZpZyhvcmlnaW5hbENvbmZpZyk7Ci0gICAgICAgIGNvbmZpZy5k
YXRhVHlwZSA9IGRhdGFUeXBlc1tqXTsKLSAgICAgICAgY29uZmlnLmFzeW5jID0gYXN5bmNba107
Ci0KLSAgICAgICAgLy8gUmVjZWl2ZSAmJiBOb24tV29ya2VyICYmIFN5bmMgaXMgbm90IHN1cHBv
cnRlZCBieSB0aGUgc3BlYwotICAgICAgICBpZiAoc3RlcEZ1bmNzW2ldID09PSByZWNlaXZlQmVu
Y2htYXJrU3RlcCAmJiAhaXNXb3JrZXIgJiYKLSAgICAgICAgICAgICFjb25maWcuYXN5bmMpCi0g
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYWRkVGFza3MoY29uZmlnLCBzdGVwRnVuY3Nb
aV0pOwotICAgICAgICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywKLSAgICAgICAgICAg
IG5hbWVzW2ldICsgJyBiZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICBzdGFydEJlbmNobWFyayhjb25maWcpOwotfQotCi0KLWZ1
bmN0aW9uIHN0b3AoY29uZmlnKSB7Ci0gIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gIGNsZWFyVGltZW91
dCh0aW1lcklEKTsKLSAgdGltZXJJRCA9IG51bGw7Ci0gIGNvbmZpZy5hZGRUb0xvZygnU3RvcHBl
ZCcpOwotfQotCi1vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgewotICB2YXIgY29uZmln
ID0gbWVzc2FnZS5kYXRhLmNvbmZpZzsKLSAgY29uZmlnLmFkZFRvTG9nID0gd29ya2VyQWRkVG9M
b2c7Ci0gIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSB3b3JrZXJBZGRUb1N1bW1hcnk7Ci0gIGNvbmZp
Zy5tZWFzdXJlVmFsdWUgPSB3b3JrZXJNZWFzdXJlVmFsdWU7Ci0gIGlmIChtZXNzYWdlLmRhdGEu
dHlwZSA9PT0gJ3NlbmRCZW5jaG1hcmsnKQotICAgIHNlbmRCZW5jaG1hcmsoY29uZmlnKTsKLSAg
ZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdyZWNlaXZlQmVuY2htYXJrJykKLSAgICBy
ZWNlaXZlQmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09
PSAnYmF0Y2hCZW5jaG1hcmsnKQotICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2Ug
aWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnc3RvcCcpCi0gICAgc3RvcChjb25maWcpOwotfTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY5ODM1NTNiOGFjOC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAK
LTwhLS0KLUNvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi1saWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLWh0dHBzOi8v
ZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotLS0+Ci0KLTxo
dG1sPgotPGhlYWQ+Ci08dGl0bGU+WEhSIGV2ZW50IGxvZ2dlcjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRzID0gW107Ci0K
LWZ1bmN0aW9uIHJ1bigpIHsKLSAgZXZlbnRzID0gW107Ci0KLSAgZnVuY3Rpb24gcHVzaFRvTG9n
KHR5cGUpIHsKLSAgICBpZiAoZXZlbnRzLmxlbmd0aCAhPSAwICYmIHR5cGUgPT09IGV2ZW50c1tl
dmVudHMubGVuZ3RoIC0gMV0udHlwZSkgewotICAgICAgZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAx
XS5jb3VudCArPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICBldmVudHMucHVzaCh7dHlwZTogdHlw
ZSwgY291bnQ6IDF9KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Ci0KLSAgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NFdmVudER1bXAoZSkgewotICAgIHJldHVy
biAnKCcgKyBlLmxlbmd0aENvbXB1dGFibGUgKyAnLCAnICsgZS5sb2FkZWQgKyAnLCAnICsgZS50
b3RhbCArICcpJzsKLSAgfQotCi0gIHZhciBkdW1wUHJvZ3Jlc3NFdmVudCA9IGdldEJvb2xGcm9t
Q2hlY2tCb3goJ2R1bXBwcm9ncmVzc2V2ZW50Jyk7Ci0KLSAgZnVuY3Rpb24gbG9nKGUpIHsKLSAg
ICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAodHlwZSA9PT0gJ3JlYWR5c3RhdGVjaGFuZ2Un
KSB7Ci0gICAgICB0eXBlICs9IGUudGFyZ2V0LnJlYWR5U3RhdGU7Ci0gICAgfQotICAgIGlmIChk
dW1wUHJvZ3Jlc3NFdmVudCAmJiAoZSBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7Ci0gICAg
ICB0eXBlICs9IGdldFByb2dyZXNzRXZlbnREdW1wKGUpOwotICAgIH0KLSAgICBwdXNoVG9Mb2co
dHlwZSk7Ci0gIH07Ci0KLSAgZnVuY3Rpb24gbG9nVXBsb2FkKGUpIHsKLSAgICB2YXIgdHlwZSA9
IGUudHlwZTsKLSAgICBpZiAoZHVtcFByb2dyZXNzRXZlbnQgJiYgKGUgaW5zdGFuY2VvZiBQcm9n
cmVzc0V2ZW50KSkgewotICAgICAgdHlwZSArPSBnZXRQcm9ncmVzc0V2ZW50RHVtcChlKTsKLSAg
ICB9Ci0gICAgcHVzaFRvTG9nKCd1cGxvYWQnICsgdHlwZSk7Ci0gIH0KLQotICBpZiAoZ2V0Qm9v
bEZyb21DaGVja0JveCgndXBsb2FkJykpIHsKLSAgICB2YXIgdXBsb2FkID0geGhyLnVwbG9hZDsK
LSAgICB1cGxvYWQub25sb2Fkc3RhcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ucHJvZ3Jl
c3MgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uYWJvcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBs
b2FkLm9uZXJyb3IgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ubG9hZCA9IGxvZ1VwbG9hZDsK
LSAgICB1cGxvYWQub250aW1lb3V0ID0gbG9nVXBsb2FkOwotICAgIHVwbG9hZC5vbmxvYWRlbmQg
PSBsb2dVcGxvYWQ7Ci0gIH0KLQotICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbG9nOwotICB4
aHIub25sb2Fkc3RhcnQgPSBsb2c7Ci0gIHhoci5vbnByb2dyZXNzID0gbG9nOwotICB4aHIub25h
Ym9ydCA9IGxvZzsKLSAgeGhyLm9uZXJyb3IgPSBsb2c7Ci0gIHhoci5vbmxvYWQgPSBsb2c7Ci0g
IHhoci5vbnRpbWVvdXQgPSBsb2c7Ci0gIHhoci5vbmxvYWRlbmQgPSBsb2c7Ci0KLSAgeGhyLm9w
ZW4oJ1BPU1QnLCAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1X3JlY2VpdmUnLAot
ICAgICAgICAgICBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycpKTsKLSAgdmFyIHNpemUgPSBn
ZXRJbnRGcm9tSW5wdXQoJ3NpemUnKTsKLSAgdmFyIGNodW5rZWRNb2RlID0gJ25vbmUnOwotICBp
ZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnY2h1bmtlZHJlc3BvbnNlJykpIHsKLSAgICBjaHVua2Vk
TW9kZSA9ICdjaHVua2VkJzsKLSAgfQotICB4aHIuc2VuZChzaXplICsgJyAnICsgY2h1bmtlZE1v
ZGUpOwotfQotCi1mdW5jdGlvbiBwcmludCgpIHsKLSAgdmFyIHJlc3VsdCA9ICcnOwotICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBldmVudCA9IGV2
ZW50c1tpXTsKLSAgICByZXN1bHQgKz0gZXZlbnQudHlwZSArICcgKiAnICsgZXZlbnQuY291bnQg
KyAnXG4nOwotICB9Ci0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS52YWx1ZSA9IHJl
c3VsdDsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT4KLSAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9
IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLSAgPGJyLz4KLSAgU2l6ZTogPGlu
cHV0IHR5cGU9InRleHQiIGlkPSJzaXplIiB2YWx1ZT0iNjU1MzYiPjxici8+Ci0gIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9ImNodW5rZWRyZXNwb25zZSI+Ci0gIDxsYWJlbCBmb3I9ImNodW5r
ZWRyZXNwb25zZSI+VXNlIENodW5rZWQgVC1FIGZvciByZXNwb25zZTwvbGFiZWw+PGJyLz4KLSAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idXBsb2FkIj4KLSAgPGxhYmVsIGZvcj0idXBsb2Fk
Ij5VcGxvYWQgcHJvZ3Jlc3M8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIg
aWQ9ImR1bXBwcm9ncmVzc2V2ZW50Ij4KLSAgPGxhYmVsIGZvcj0iZHVtcHByb2dyZXNzZXZlbnQi
PgotICAgIER1bXAgbGVuZ3RoQ29tcHV0YWJsZS9sb2FkZWQvdG90YWw8L2xhYmVsPjxici8+Ci0g
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgotICA8bGFiZWwgZm9y
PSJhc3luYyI+QXN5bmM8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9InJ1bigpIiB2YWx1ZT0iUnVuIFhIUiI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9InByaW50KCkiIHZhbHVlPSJQcmludCBsb2ciPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
MDkzM2EyMjA0NTEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQv
X19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVyLgot
Ci1tb2RfcHl3ZWJzb2NrZXQgaXMgYSBXZWJTb2NrZXQgZXh0ZW5zaW9uIGZvciBBcGFjaGUgSFRU
UCBTZXJ2ZXIKLWludGVuZGVkIGZvciB0ZXN0aW5nIG9yIGV4cGVyaW1lbnRhbCBwdXJwb3Nlcy4g
bW9kX3B5dGhvbiBpcyByZXF1aXJlZC4KLQotCi1JbnN0YWxsYXRpb24KLT09PT09PT09PT09PQot
Ci0wLiBQcmVwYXJlIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBmb3Igd2hpY2ggbW9kX3B5dGhvbiBp
cyBlbmFibGVkLgotCi0xLiBTcGVjaWZ5IHRoZSBmb2xsb3dpbmcgQXBhY2hlIEhUVFAgU2VydmVy
IGRpcmVjdGl2ZXMgdG8gc3VpdCB5b3VyCi0gICBjb25maWd1cmF0aW9uLgotCi0gICBJZiBtb2Rf
cHl3ZWJzb2NrZXQgaXMgbm90IGluIHRoZSBQeXRob24gcGF0aCwgc3BlY2lmeSB0aGUgZm9sbG93
aW5nLgotICAgPHdlYnNvY2tfbGliPiBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIG1vZF9weXdlYnNv
Y2tldCBpcyBpbnN0YWxsZWQuCi0KLSAgICAgICBQeXRob25QYXRoICJzeXMucGF0aCtbJzx3ZWJz
b2NrX2xpYj4nXSIKLQotICAgQWx3YXlzIHNwZWNpZnkgdGhlIGZvbGxvd2luZy4gPHdlYnNvY2tf
aGFuZGxlcnM+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUKLSAgIHVzZXItd3JpdHRlbiBXZWJTb2Nr
ZXQgaGFuZGxlcnMgYXJlIHBsYWNlZC4KLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJz
b2NrZXQuaGFuZGxlcl9yb290IDx3ZWJzb2NrX2hhbmRsZXJzPgotICAgICAgIFB5dGhvbkhlYWRl
clBhcnNlckhhbmRsZXIgbW9kX3B5d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIKLQotICAg
VG8gbGltaXQgdGhlIHNlYXJjaCBmb3IgV2ViU29ja2V0IGhhbmRsZXJzIHRvIGEgZGlyZWN0b3J5
IDxzY2FuX2Rpcj4KLSAgIHVuZGVyIDx3ZWJzb2NrX2hhbmRsZXJzPiwgY29uZmlndXJlIGFzIGZv
bGxvd3M6Ci0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfc2Nh
biA8c2Nhbl9kaXI+Ci0KLSAgIDxzY2FuX2Rpcj4gaXMgdXNlZnVsIGluIHNhdmluZyBzY2FuIHRp
bWUgd2hlbiA8d2Vic29ja19oYW5kbGVycz4KLSAgIGNvbnRhaW5zIG1hbnkgbm9uLVdlYlNvY2tl
dCBoYW5kbGVyIGZpbGVzLgotCi0gICBJZiB5b3Ugd2FudCB0byBhbGxvdyBoYW5kbGVycyB3aG9z
ZSBjYW5vbmljYWwgcGF0aCBpcyBub3QgdW5kZXIgdGhlIHJvb3QKLSAgIGRpcmVjdG9yeSAoaS5l
LiBzeW1ib2xpYyBsaW5rIGlzIGluIHJvb3QgZGlyZWN0b3J5IGJ1dCBpdHMgdGFyZ2V0IGlzIG5v
dCksCi0gICBjb25maWd1cmUgYXMgZm9sbG93czoKLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2Rf
cHl3ZWJzb2NrZXQuYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpciBPbgotCi0gICBFeGFt
cGxlIHNuaXBwZXQgb2YgaHR0cGQuY29uZjoKLSAgIChtb2RfcHl3ZWJzb2NrZXQgaXMgaW4gL3dl
YnNvY2tfbGliLCBXZWJTb2NrZXQgaGFuZGxlcnMgYXJlIGluCi0gICAvd2Vic29ja19oYW5kbGVy
cywgcG9ydCBpcyA4MCBmb3Igd3MsIDQ0MyBmb3Igd3NzLikKLQotICAgICAgIDxJZk1vZHVsZSBw
eXRob25fbW9kdWxlPgotICAgICAgICAgUHl0aG9uUGF0aCAic3lzLnBhdGgrWycvd2Vic29ja19s
aWInXSIKLSAgICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290
IC93ZWJzb2NrX2hhbmRsZXJzCi0gICAgICAgICBQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVyIG1v
ZF9weXdlYnNvY2tldC5oZWFkZXJwYXJzZXJoYW5kbGVyCi0gICAgICAgPC9JZk1vZHVsZT4KLQot
Mi4gVHVuZSBBcGFjaGUgcGFyYW1ldGVycyBmb3Igc2VydmluZyBXZWJTb2NrZXQuIFdlJ2QgbGlr
ZSB0byBub3RlIHRoYXQgYXQKLSAgIGxlYXN0IFRpbWVPdXQgZGlyZWN0aXZlIGZyb20gY29yZSBm
ZWF0dXJlcyBhbmQgUmVxdWVzdFJlYWRUaW1lb3V0Ci0gICBkaXJlY3RpdmUgZnJvbSBtb2RfcmVx
dGltZW91dCBzaG91bGQgYmUgbW9kaWZpZWQgbm90IHRvIGtpbGwgY29ubmVjdGlvbnMKLSAgIGlu
IG9ubHkgYSBmZXcgc2Vjb25kcyBvZiBpZGxlIHRpbWUuCi0KLTMuIFZlcmlmeSBpbnN0YWxsYXRp
b24uIFlvdSBjYW4gdXNlIGV4YW1wbGUvY29uc29sZS5odG1sIHRvIHBva2UgdGhlIHNlcnZlci4K
LQotCi1Xcml0aW5nIFdlYlNvY2tldCBoYW5kbGVycwotPT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotV2hlbiBhIFdlYlNvY2tldCByZXF1ZXN0IGNvbWVzIGluLCB0aGUgcmVzb3VyY2UgbmFt
ZQotc3BlY2lmaWVkIGluIHRoZSBoYW5kc2hha2UgaXMgY29uc2lkZXJlZCBhcyBpZiBpdCBpcyBh
IGZpbGUgcGF0aCB1bmRlcgotPHdlYnNvY2tfaGFuZGxlcnM+IGFuZCB0aGUgaGFuZGxlciBkZWZp
bmVkIGluCi08d2Vic29ja19oYW5kbGVycz4vPHJlc291cmNlX25hbWU+X3dzaC5weSBpcyBpbnZv
a2VkLgotCi1Gb3IgZXhhbXBsZSwgaWYgdGhlIHJlc291cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hh
dCwgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgotPHdlYnNvY2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hh
dF93c2gucHkgaXMgaW52b2tlZC4KLQotQSBXZWJTb2NrZXQgaGFuZGxlciBpcyBjb21wb3NlZCBv
ZiB0aGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9uczoKLQotICAgIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0gICAgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpCi0gICAgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpCi0K
LXdoZXJlOgotICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmluZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRo
ZQotaGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBhbmQgV2ViU29ja2V0IHByb3BlcnRp
ZXMgKHdzX2xvY2F0aW9uLAotd3Nfb3JpZ2luLCBhbmQgd3NfcmVzb3VyY2UpIGFyZSBhZGRlZCB0
byByZXF1ZXN0LiBBIGhhbmRsZXIKLWNhbiByZWplY3QgdGhlIHJlcXVlc3QgYnkgcmFpc2luZyBh
biBleGNlcHRpb24uCi0KLUEgcmVxdWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllcyB0aGF0IHlvdSBjYW4gdXNlIGR1cmluZyB0aGUKLWV4dHJhIGhhbmRzaGFrZSAod2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UpOgotLSB3c19yZXNvdXJjZQotLSB3c19vcmlnaW4KLS0g
d3NfdmVyc2lvbgotLSB3c19sb2NhdGlvbiAoSHlCaSAwMCBvbmx5KQotLSB3c19leHRlbnNpb25z
IChIeUJpIDA2IGFuZCBsYXRlcikKLS0gd3NfZGVmbGF0ZSAoSHlCaSAwNiBhbmQgbGF0ZXIpCi0t
IHdzX3Byb3RvY29sCi0tIHdzX3JlcXVlc3RlZF9wcm90b2NvbHMgKEh5QmkgMDYgYW5kIGxhdGVy
KQotCi1UaGUgbGFzdCB0d28gYXJlIGEgYml0IHRyaWNreS4gU2VlIHRoZSBuZXh0IHN1YnNlY3Rp
b24uCi0KLQotU3VicHJvdG9jb2wgTmVnb3RpYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLUZvciBIeUJpIDA2IGFuZCBsYXRlciwgd3NfcHJvdG9jb2wgaXMgYWx3YXlzIHNldCB0byBO
b25lIHdoZW4KLXdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZC4gSWYgd3Nf
cmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKLU5vbmUsIHlvdSBtdXN0IGNob29zZSBvbmUgc3Vi
cHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBpdCB0bwotd3NfcHJvdG9jb2wuCi0KLUZv
ciBIeUJpIDAwLCB3aGVuIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZCwK
LXdzX3Byb3RvY29sIGlzIHNldCB0byB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIGNsaWVudCBpbgot
U2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgb3IgTm9uZSBpZgotc3VjaCBoZWFkZXIgd2Fz
IG5vdCBmb3VuZCBpbiB0aGUgb3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdC4gRmluaXNoIGV4dHJh
Ci1oYW5kc2hha2Ugd2l0aCB3c19wcm90b2NvbCB1bnRvdWNoZWQgdG8gYWNjZXB0IHRoZSByZXF1
ZXN0IHN1YnByb3RvY29sLgotVGhlbiwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgd2ls
bCBiZSBzZW50IHRvCi10aGUgY2xpZW50IGluIHJlc3BvbnNlIHdpdGggdGhlIHNhbWUgdmFsdWUg
YXMgcmVxdWVzdGVkLiBSYWlzZSBhbiBleGNlcHRpb24KLWluIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdGVkIHN1YnByb3RvY29sLgotCi0KLURhdGEg
VHJhbnNmZXIKLS0tLS0tLS0tLS0tLS0KLQotd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlzIGNh
bGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAotc3VjY2Vzc2Z1bGx5LiBBIGhhbmRs
ZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBjbGllbnQKLXVzaW5nIHJl
cXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMK
LWZvciBkYXRhIHRyYW5zZmVyLgotCi1Zb3UgY2FuIHJlY2VpdmUgYSBtZXNzYWdlIGJ5IHRoZSBm
b2xsb3dpbmcgc3RhdGVtZW50LgotCi0gICAgbWVzc2FnZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJl
Y2VpdmVfbWVzc2FnZSgpCi0KLVRoaXMgY2FsbCBibG9ja3MgdW50aWwgYW55IGNvbXBsZXRlIHRl
eHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXlsb2FkIGRhdGEKLW9mIHRoZSBpbmNvbWluZyBm
cmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3NhZ2UuIFdoZW4geW91J3JlIHVzaW5nIElFVEYK
LUh5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJlY2VpdmVfbWVzc2FnZSgpIHdpbGwgcmV0dXJu
IE5vbmUgb24gcmVjZWl2aW5nCi1jbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlLiBX
aGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVfbWVzc2FnZSgpCi13aWxsIHJhaXNlIHNvbWUg
ZXhjZXB0aW9uLgotCi1Zb3UgY2FuIHNlbmQgYSBtZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3Rh
dGVtZW50LgotCi0gICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCi0K
LQotQ2xvc2luZyBDb25uZWN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRXhlY3V0aW5nIHRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3QgcmV0dXJuLWluZyBmcm9tCi13ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlvbiBjbG9zZS4KLQotICAgIHJlcXVlc3Qud3Nf
c3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotCi1jbG9zZV9jb25uZWN0aW9uIHdpbGwgd2FpdAot
Zm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xlZGdlbWVudCBjb21pbmcgZnJvbSB0aGUgY2xp
ZW50LiBXaGVuIGl0Ci1jb3VsZG4ndCByZWNlaXZlIGEgdmFsaWQgYWNrbm93bGVkZ2VtZW50LCBy
YWlzZXMgYW4gZXhjZXB0aW9uLgotCi13ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hh
a2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIgcmVjZWl2ZXMKLWluY29taW5nIGNsb3Npbmcg
ZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1tZWRpYXRlbHkuIFlvdSBjYW4gc3BlY2lmeQot
Y29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1ZXMuIFRoZXkgYXJlIHNlbnQgYXMgYSBvdXRn
b2luZyBjbG9zaW5nIGZyYW1lCi1mcm9tIHRoZSBzZXJ2ZXIuIEEgcmVxdWVzdCBvYmplY3QgaGFz
IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4KLXVzZSBpbiB3ZWJfc29ja2V0
X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCi0tIHdzX2Nsb3NlX2NvZGUKLS0gd3NfY2xvc2Vf
cmVhc29uCi0KLQotVGhyZWFkaW5nCi0tLS0tLS0tLS0KLQotQSBXZWJTb2NrZXQgaGFuZGxlciBt
dXN0IGJlIHRocmVhZC1zYWZlIGlmIHRoZSBzZXJ2ZXIgKEFwYWNoZSBvcgotc3RhbmRhbG9uZS5w
eSkgaXMgY29uZmlndXJlZCB0byB1c2UgdGhyZWFkcy4KLQotCi1Db25maWd1cmluZyBXZWJTb2Nr
ZXQgRXh0ZW5zaW9uIFByb2Nlc3NvcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1TZWUgZXh0ZW5zaW9ucy5weSBmb3Igc3VwcG9ydGVkIFdlYlNvY2tldCBl
eHRlbnNpb25zLiBOb3RlIHRoYXQgdGhleSBhcmUKLXVuc3RhYmxlIGFuZCB0aGVpciBBUElzIGFy
ZSBzdWJqZWN0IHRvIGNoYW5nZSBzdWJzdGFudGlhbGx5LgotCi1BIHJlcXVlc3Qgb2JqZWN0IGhh
cyB0aGVzZSBleHRlbnNpb24gcHJvY2Vzc2luZyByZWxhdGVkIGF0dHJpYnV0ZXMuCi0KLS0gd3Nf
cmVxdWVzdGVkX2V4dGVuc2lvbnM6Ci0KLSAgQSBsaXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBleHRlbnNpb24KLSAgcGFyYW1ldGVycyByZWNl
aXZlZCBmcm9tIHRoZSBjbGllbnQgaW4gdGhlIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtlLgot
ICBZb3Ugc2hvdWxkbid0IG1vZGlmeSBpdCBtYW51YWxseS4KLQotLSB3c19leHRlbnNpb25zOgot
Ci0gIEEgbGlzdCBvZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3RhbmNlcyByZXByZXNl
bnRpbmcgZXh0ZW5zaW9uCi0gIHBhcmFtZXRlcnMgdG8gc2VuZCBiYWNrIHRvIHRoZSBjbGllbnQg
aW4gdGhlIHNlcnZlcidzIG9wZW5pbmcgaGFuZHNoYWtlLgotICBZb3Ugc2hvdWxkbid0IHRvdWNo
IGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCBjYWxsIG1ldGhvZHMgb24gZXh0ZW5zaW9uCi0gIHByb2Nl
c3NvcnMuCi0KLS0gd3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6Ci0KLSAgQSBsaXN0IG9mIGxvYWRl
ZCBleHRlbnNpb24gcHJvY2Vzc29ycy4gRmluZCB0aGUgcHJvY2Vzc29yIGZvciB0aGUKLSAgZXh0
ZW5zaW9uIHlvdSB3YW50IHRvIGNvbmZpZ3VyZSBmcm9tIGl0LCBhbmQgY2FsbCBpdHMgbWV0aG9k
cy4KLSIiIgotCi0KLSMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9fc3RyZWFtX2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMzU2
NjZiYmIxZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9fc3Ry
ZWFtX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiQmFzZSBzdHJlYW0gY2xhc3MuCi0iIiIKLQotCi0jIE5vdGU6IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3Vn
aAotIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9u
bHkgaW4gY29ubmVjdGlvbgotIyBoYW5kbGVycy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBv
dGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKLSMgcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBub3Qg
c3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMKLSMgd3Jp
dGluZy9yZWFkaW5nLgotCi0KLWltcG9ydCBzb2NrZXQKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHV0aWwKLQotCi0jIEV4Y2VwdGlvbnMKLQotCi1jbGFzcyBDb25uZWN0aW9uVGVybWlu
YXRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUg
cmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzIHRlcm1pbmF0ZWQKLSAgICB1bmV4cGVjdGVkbHku
Ci0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgSW52YWxpZEZyYW1lRXhjZXB0aW9uKENv
bm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxs
IGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmVkIGFuIGludmFsaWQgZnJhbWUgd2UKLSAgICBjYW5u
b3QgcGFyc2UuCi0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQg
d2hlbiBzZW5kX21lc3NhZ2UoKSBpcyBjYWxsZWQgb24KLSAgICBzZXJ2ZXItdGVybWluYXRlZCBj
b25uZWN0aW9uIG9yIHJlY2VpdmVfbWVzc2FnZSgpIGlzIGNhbGxlZCBvbgotICAgIGNsaWVudC10
ZXJtaW5hdGVkIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9u
IHdpbGwgYmUgcmFpc2VkIHdoZW4gd2UgcmVjZWl2ZSBhIGZyYW1lIHdpdGggZmxhZywgb3Bjb2Rl
Ci0gICAgd2UgY2Fubm90IGhhbmRsZS4gSGFuZGxlcnMgY2FuIGp1c3QgY2F0Y2ggYW5kIGlnbm9y
ZSB0aGlzIGV4Y2VwdGlvbiBhbmQKLSAgICBjYWxsIHJlY2VpdmVfbWVzc2FnZSgpIGFnYWluIHRv
IGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIG5leHQgZnJhbWUuCi0gICAgIiIiCi0KLSAgICBwYXNz
Ci0KLQotY2xhc3MgSW52YWxpZFVURjhFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlz
IGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSB0ZXh0IGZyYW1lIHdo
aWNoCi0gICAgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzdHJpbmdzLgotICAgICIiIgotCi0gICAg
cGFzcwotCi0KLWNsYXNzIFN0cmVhbUJhc2Uob2JqZWN0KToKLSAgICAiIiJCYXNlIHN0cmVhbSBj
bGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1
ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xv
Z2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX3JlcXVl
c3QgPSByZXF1ZXN0Ci0KLSAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIi
UmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkg
ZXhjZXB0aW9uLAotICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0
aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAg
ICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0
eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlYWRf
Ynl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCi0gICAgICAgICAg
ICBpZiBub3QgcmVhZF9ieXRlczoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVy
bWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRl
IGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCi0gICAgICAgICAgICAgICAg
ICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsKSkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVhZF9ieXRlcwotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9y
LCBlOgotICAgICAgICAgICAgIyBDYXRjaCBhIHNvY2tldC5lcnJvci4gQmVjYXVzZSBpdCdzIG5v
dCBhIGNoaWxkIGNsYXNzIG9mIHRoZQotICAgICAgICAgICAgIyBJT0Vycm9yIHByaW9yIHRvIFB5
dGhvbiAyLjYsIHdlIGNhbm5vdCBvbWl0IHRoaXMgZXhjZXB0IGNsYXVzZS4KLSAgICAgICAgICAg
ICMgVXNlICVzIHJhdGhlciB0aGFuICVyIGZvciB0aGUgZXhjZXB0aW9uIHRvIHVzZSBodW1hbiBm
cmllbmRseQotICAgICAgICAgICAgIyBmb3JtYXQuCi0gICAgICAgICAgICByYWlzZSBDb25uZWN0
aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5
dGUgZmFpbGVkLiBzb2NrZXQuZXJyb3IgKCVzKSBvY2N1cnJlZCcgJQotICAgICAgICAgICAgICAg
IChsZW5ndGgsIGUpKQotICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgICAgICAgICMg
QWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJlY2F1c2UgbW9kX3B5dGhvbiB0aHJvd3MgaXQuCi0gICAg
ICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBJT0Vycm9yICglcykgb2NjdXJyZWQnICUK
LSAgICAgICAgICAgICAgICAobGVuZ3RoLCBlKSkKLQotICAgIGRlZiBfd3JpdGUoc2VsZiwgYnl0
ZXNfdG9fd3JpdGUpOgotICAgICAgICAiIiJXcml0ZXMgZ2l2ZW4gYnl0ZXMgdG8gY29ubmVjdGlv
bi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAotICAgICAgICBwcmVwZW5kcyByZW1v
dGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgotICAg
ICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3JpdGUpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICdGYWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvICVyOiAnICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRy
LCksCi0gICAgICAgICAgICAgICAgICAgIGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgZGVm
IHJlY2VpdmVfYnl0ZXMoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgbXVsdGlw
bGUgYnl0ZXMuIFJldHJpZXMgcmVhZCB3aGVuIHdlIGNvdWxkbid0IHJlY2VpdmUgdGhlCi0gICAg
ICAgIHNwZWNpZmllZCBhbW91bnQuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmlu
Zy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVhZF9ieXRlcyA9IFtdCi0gICAgICAgIHdoaWxl
IGxlbmd0aCA+IDA6Ci0gICAgICAgICAgICBuZXdfcmVhZF9ieXRlcyA9IHNlbGYuX3JlYWQobGVu
Z3RoKQotICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQobmV3X3JlYWRfYnl0ZXMpCi0gICAg
ICAgICAgICBsZW5ndGggLT0gbGVuKG5ld19yZWFkX2J5dGVzKQotICAgICAgICByZXR1cm4gJycu
am9pbihyZWFkX2J5dGVzKQotCi0gICAgZGVmIF9yZWFkX3VudGlsKHNlbGYsIGRlbGltX2NoYXIp
OgotICAgICAgICAiIiJSZWFkcyBieXRlcyB1bnRpbCB3ZSBlbmNvdW50ZXIgZGVsaW1fY2hhci4g
VGhlIHJlc3VsdCB3aWxsIG5vdAotICAgICAgICBjb250YWluIGRlbGltX2NoYXIuCi0KLSAgICAg
ICAgUmFpc2VzOgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdo
ZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVh
ZF9ieXRlcyA9IFtdCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHNlbGYu
X3JlYWQoMSkKLSAgICAgICAgICAgIGlmIGNoID09IGRlbGltX2NoYXI6Ci0gICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBwZW5kKGNoKQotICAgICAgICByZXR1
cm4gJycuam9pbihyZWFkX2J5dGVzKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk0Y2Y1YjMxYmEwZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIGEgY2xhc3Mg
Zm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZl
cnNpb24gSHlCaSAwMCBhbmQgSGl4aWUgNzUuCi0KLVNwZWNpZmljYXRpb246Ci0tIEh5QmkgMDAg
aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHBy
b3RvY29sLTAwCi0tIEhpeGllIDc1IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWhp
eGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc1Ci0iIiIKLQotCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNl
IGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgU3RyZWFtQmFzZQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLWNsYXNzIFN0cmVhbUhpeGllNzUoU3Ry
ZWFtQmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2Yg
dGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uCi0gICAgSHlCaSAwMCBhbmQgSGl4aWUgNzUu
Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZW5hYmxlX2Nsb3Np
bmdfaGFuZHNoYWtlPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
Ci0gICAgICAgICAgICBlbmFibGVfY2xvc2luZ19oYW5kc2hha2U6IHRvIGxldCBTdHJlYW1IaXhp
ZTc1IHBlcmZvcm0gY2xvc2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kc2hha2UgYXMgc3BlY2lmaWVkIGluIEh5QmkgMDAsIHNldAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG9wdGlvbiB0byBUcnVlLgotICAgICAgICAiIiIK
LQotICAgICAgICBTdHJlYW1CYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2Vs
Zi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlID0gZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlCi0K
LSAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBGYWxzZQotCi0gICAgZGVmIHNlbmRf
bWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAg
IiIiU2VuZCBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtZXNzYWdlOiB1
bmljb2RlIHN0cmluZyB0byBzZW5kLgotICAgICAgICAgICAgYmluYXJ5OiBub3QgdXNlZCBpbiBo
aXhpZTc1LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbjogd2hlbiBjYWxsZWQgb24gYSBzZXJ2ZXItdGVybWluYXRlZAotICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBlbmQ6Ci0gICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1N0cmVh
bUhpeGllNzUgZG9lc25cJ3Qgc3VwcG9ydCBzZW5kX21lc3NhZ2Ugd2l0aCBlbmQ9RmFsc2UnKQot
Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNl
bmRfbWVzc2FnZSB3aXRoIGJpbmFyeT1UcnVlJykKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRp
bmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIHNlbGYuX3dyaXRlKCcnLmpv
aW4oWydceDAwJywgbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JyksICdceGZmJ10pKQotCi0gICAgZGVm
IF9yZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoc2VsZik6Ci0gICAgICAgICIiIlJlYWRzIGEg
bGVuZ3RoIGhlYWRlciBpbiBhIEhpeGllNzUgdmVyc2lvbiBmcmFtZSB3aXRoIGxlbmd0aC4KLQot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
bjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIKLQotICAgICAg
ICBsZW5ndGggPSAwCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBiX3N0ciA9IHNl
bGYuX3JlYWQoMSkKLSAgICAgICAgICAgIGIgPSBvcmQoYl9zdHIpCi0gICAgICAgICAgICBsZW5n
dGggPSBsZW5ndGggKiAxMjggKyAoYiAmIDB4N2YpCi0gICAgICAgICAgICBpZiAoYiAmIDB4ODAp
ID09IDA6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGxlbmd0aAotCi0g
ICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIFdlYlNv
Y2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFuIHVuaWNvZGUgc3RyaW5nLgotCi0g
ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBwYXlsb2FkIHVuaWNvZGUgc3RyaW5nIGluIGEg
V2ViU29ja2V0IGZyYW1lLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAgICAg
ICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBj
YWxsZWQgb24gYSBjbGllbnQtdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0
ZWQ6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1JlcXVlc3RlZCByZWNlaXZlX21lc3NhZ2UgYWZ0ZXIgcmVjZWl2aW5nIGEgY2xvc2lu
ZyAnCi0gICAgICAgICAgICAgICAgJ2hhbmRzaGFrZScpCi0KLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgICMgUmVhZCAxIGJ5dGUuCi0gICAgICAgICAgICAjIG1wX2Nvbm4ucmVhZCB3
aWxsIGJsb2NrIGlmIG5vIGJ5dGVzIGFyZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAjIFRpbWVv
dXQgaXMgY29udHJvbGxlZCBieSBUaW1lT3V0IGRpcmVjdGl2ZSBvZiBBcGFjaGUuCi0gICAgICAg
ICAgICBmcmFtZV90eXBlX3N0ciA9IHNlbGYucmVjZWl2ZV9ieXRlcygxKQotICAgICAgICAgICAg
ZnJhbWVfdHlwZSA9IG9yZChmcmFtZV90eXBlX3N0cikKLSAgICAgICAgICAgIGlmIChmcmFtZV90
eXBlICYgMHg4MCkgPT0gMHg4MDoKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGxlbmd0
aCBpcyBzcGVjaWZpZWQgaW4gdGhlIGZyYW1lLgotICAgICAgICAgICAgICAgICMgUmVhZCBhbmQg
ZGlzY2FyZC4KLSAgICAgICAgICAgICAgICBsZW5ndGggPSBzZWxmLl9yZWFkX3BheWxvYWRfbGVu
Z3RoX2hpeGllNzUoKQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA+IDA6Ci0gICAgICAgICAg
ICAgICAgICAgIF8gPSBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQotICAgICAgICAgICAgICAg
ICMgNS4zIDMuIDEyLiBpZiAvdHlwZS8gaXMgMHhGRiBhbmQgL2xlbmd0aC8gaXMgMCwgdGhlbiBz
ZXQgdGhlCi0gICAgICAgICAgICAgICAgIyAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9lbmFibGVfY2xv
c2luZ19oYW5kc2hha2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
ICAgICAgICBpZiBmcmFtZV90eXBlID09IDB4RkYgYW5kIGxlbmd0aCA9PSAwOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0
ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRf
Y2xvc2luZ19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoCi0gICAgICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVudC1pbml0aWF0
ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGlzIGRlbGlt
aXRlZCB3aXRoIFx4ZmYuCi0gICAgICAgICAgICAgICAgYnl0ZXMgPSBzZWxmLl9yZWFkX3VudGls
KCdceGZmJykKLSAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgc2VjdGlv
biA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAotICAgICAgICAgICAgICAgICMgY2hhcmFjdGVy
cyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VNRU5UCi0gICAgICAgICAgICAg
ICAgIyBDSEFSQUNURVIuCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGJ5dGVzLmRlY29kZSgn
dXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSAweDAw
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotICAgICAgICAgICAgICAgICMg
RGlzY2FyZCBkYXRhIG9mIG90aGVyIHR5cGVzLgotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFu
ZHNoYWtlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNo
YWtlOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdDbG9zaW5nIGhhbmRzaGFrZSBpcyBub3Qgc3VwcG9ydGVkIGluIEhpeGllIDc1IHBy
b3RvY29sJykKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1
ZQotCi0gICAgICAgICMgNS4zIHRoZSBzZXJ2ZXIgbWF5IGRlY2lkZSB0byB0ZXJtaW5hdGUgdGhl
IFdlYlNvY2tldCBjb25uZWN0aW9uIGJ5Ci0gICAgICAgICMgcnVubmluZyB0aHJvdWdoIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICMgMS4gc2VuZCBhIDB4RkYgYnl0ZSBhbmQgYSAweDAw
IGJ5dGUgdG8gdGhlIGNsaWVudCB0byBpbmRpY2F0ZSB0aGUKLSAgICAgICAgIyBzdGFydCBvZiB0
aGUgY2xvc2luZyBoYW5kc2hha2UuCi0gICAgICAgIHNlbGYuX3dyaXRlKCdceGZmXHgwMCcpCi0K
LSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCB1bnVzZWRfY29kZT0nJywgdW51c2VkX3Jl
YXNvbj0nJyk6Ci0gICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBjb25uZWN0aW9uLgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
OiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIHdhcwotICAgICAgICAgICAgICAgIG5vdCBzdWNjZXNz
ZnVsbC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVy
bWluYXRlZDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1p
bmF0ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2VuYWJs
ZV9jbG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rl
cm1pbmF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Nvbm5lY3Rp
b24gY2xvc2VkJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3NlbmRfY2xv
c2luZ19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2VydmVy
LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgIyBUT0RPKHVrYWkpOiAy
LiB3YWl0IHVudGlsIHRoZSAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0LAot
ICAgICAgICAjIG9yIHVudGlsIGEgc2VydmVyLWRlZmluZWQgdGltZW91dCBleHBpcmVzLgotICAg
ICAgICAjCi0gICAgICAgICMgRm9yIG5vdywgd2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5nIGhh
bmRzaGFrZSByaWdodCBhZnRlciBzZW5kaW5nCi0gICAgICAgICMgb3V0IGNsb3NpbmcgaGFuZHNo
YWtlLCBhbmQgaWYgd2UgY291bGRuJ3QgcmVjZWl2ZSBub24taGFuZHNoYWtlCi0gICAgICAgICMg
ZnJhbWUsIHdlIHRha2UgaXQgYXMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24uCi0gICAg
ICAgIG1lc3NhZ2UgPSBzZWxmLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIG1lc3NhZ2Ug
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xv
c2luZyBoYW5kc2hha2UnKQotICAgICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQg
Y29ubmVjdGlvbi4KLSAgICAgICAgIyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nv
bm4pIGRvZXNuJ3QgaGF2ZSBjbG9zZSBtZXRob2QuCi0KLSAgICBkZWYgc2VuZF9waW5nKHNlbGYs
IGJvZHkpOgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAg
ICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNlbmRfcGluZycpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVh
bV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThhNDllM2MzZGM5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQorKysgL2Rldi9udWxs
CkBAIC0xLDg4NyArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJv
dmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgcGFyc2luZy9idWlsZGluZyBm
cmFtZXMKLW9mIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4KLQotU3BlY2lmaWNh
dGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKLSIiIgotCi0KLWZyb20g
Y29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBv
cnQgc3RydWN0Ci1pbXBvcnQgdGltZQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRp
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1l
RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFs
aWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IFN0cmVhbUJhc2UKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotCi0KLV9OT09QX01BU0tFUiA9IHV0aWwuTm9vcE1hc2tl
cigpCi0KLQotY2xhc3MgRnJhbWUob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aW49MSwgcnN2MT0wLCByc3YyPTAsIHJzdjM9MCwKLSAgICAgICAgICAgICAgICAgb3Bjb2RlPU5v
bmUsIHBheWxvYWQ9JycpOgotICAgICAgICBzZWxmLmZpbiA9IGZpbgotICAgICAgICBzZWxmLnJz
djEgPSByc3YxCi0gICAgICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAgICAgc2VsZi5yc3YzID0g
cnN2MwotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxvYWQg
PSBwYXlsb2FkCi0KLQotIyBIZWxwZXIgZnVuY3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQg
Zm9yIHdyaXRpbmcgdW5pdHRlc3RzIGZvciBXZWJTb2NrZXQKLSMgY2xpZW50cy4KLQotCi1kZWYg
Y3JlYXRlX2xlbmd0aF9oZWFkZXIobGVuZ3RoLCBtYXNrKToKLSAgICAiIiJDcmVhdGVzIGEgbGVu
Z3RoIGhlYWRlci4KLQotICAgIEFyZ3M6Ci0gICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBN
dXN0IGJlIGxlc3MgdGhhbiAyXjYzLgotICAgICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBi
b29sZWFuLgotCi0gICAgUmFpc2VzOgotICAgICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRh
IGlzIGdpdmVuLgotICAgICIiIgotCi0gICAgaWYgbWFzazoKLSAgICAgICAgbWFza19iaXQgPSAx
IDw8IDcKLSAgICBlbHNlOgotICAgICAgICBtYXNrX2JpdCA9IDAKLQotICAgIGlmIGxlbmd0aCA8
IDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2
ZSBpbnRlZ2VyJykKLSAgICBlbGlmIGxlbmd0aCA8PSAxMjU6Ci0gICAgICAgIHJldHVybiBjaHIo
bWFza19iaXQgfCBsZW5ndGgpCi0gICAgZWxpZiBsZW5ndGggPCAoMSA8PCAxNik6Ci0gICAgICAg
IHJldHVybiBjaHIobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soJyFIJywgbGVuZ3RoKQot
ICAgIGVsaWYgbGVuZ3RoIDwgKDEgPDwgNjMpOgotICAgICAgICByZXR1cm4gY2hyKG1hc2tfYml0
IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKLSAgICBlbHNlOgotICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9yIG9uZSBmcmFtZScpCi0KLQot
ZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCwgZmluLCByc3YxLCByc3Yy
LCByc3YzLCBtYXNrKToKLSAgICAiIiJDcmVhdGVzIGEgZnJhbWUgaGVhZGVyLgotCi0gICAgUmFp
c2VzOgotICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEgaXMgZ2l2ZW4uCi0gICAgIiIi
Ci0KLSAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToKLSAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCi0KLSAgICBpZiBwYXlsb2FkX2xlbmd0aCA8
IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQotCi0gICAgaWYgKGZpbiB8IHJzdjEg
fCByc3YyIHwgcnN2MykgJiB+MToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRklOIGJpdCBh
bmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3IgMScpCi0KLSAgICBoZWFkZXIg
PSAnJwotCi0gICAgZmlyc3RfYnl0ZSA9ICgoZmluIDw8IDcpCi0gICAgICAgICAgICAgICAgICB8
IChyc3YxIDw8IDYpIHwgKHJzdjIgPDwgNSkgfCAocnN2MyA8PCA0KQotICAgICAgICAgICAgICAg
ICAgfCBvcGNvZGUpCi0gICAgaGVhZGVyICs9IGNocihmaXJzdF9ieXRlKQotICAgIGhlYWRlciAr
PSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXlsb2FkX2xlbmd0aCwgbWFzaykKLQotICAgIHJldHVy
biBoZWFkZXIKLQotCi1kZWYgX2J1aWxkX2ZyYW1lKGhlYWRlciwgYm9keSwgbWFzayk6Ci0gICAg
aWYgbm90IG1hc2s6Ci0gICAgICAgIHJldHVybiBoZWFkZXIgKyBib2R5Ci0KLSAgICBtYXNraW5n
X25vbmNlID0gb3MudXJhbmRvbSg0KQotICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIobWFza2luZ19ub25jZSkKLQotICAgIHJldHVybiBoZWFkZXIgKyBtYXNraW5nX25vbmNlICsg
bWFza2VyLm1hc2soYm9keSkKLQotCi1kZWYgX2ZpbHRlcl9hbmRfZm9ybWF0X2ZyYW1lX29iamVj
dChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycyk6Ci0gICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBm
cmFtZV9maWx0ZXJzOgotICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAg
aGVhZGVyID0gY3JlYXRlX2hlYWRlcigKLSAgICAgICAgZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUu
cGF5bG9hZCksIGZyYW1lLmZpbiwKLSAgICAgICAgZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJh
bWUucnN2MywgbWFzaykKLSAgICByZXR1cm4gX2J1aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5
bG9hZCwgbWFzaykKLQotCi1kZWYgY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICBtZXNzYWdlLCBv
cGNvZGU9Y29tbW9uLk9QQ09ERV9CSU5BUlksIGZpbj0xLCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0
ZXJzPVtdKToKLSAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIGJpbmFyeSBmcmFtZSB3aXRoIG5vIGV4
dGVuc2lvbiwgcmVzZXJ2ZWQgYml0LiIiIgotCi0gICAgZnJhbWUgPSBGcmFtZShmaW49ZmluLCBv
cGNvZGU9b3Bjb2RlLCBwYXlsb2FkPW1lc3NhZ2UpCi0gICAgcmV0dXJuIF9maWx0ZXJfYW5kX2Zv
cm1hdF9mcmFtZV9vYmplY3QoZnJhbWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNy
ZWF0ZV90ZXh0X2ZyYW1lKAotICAgIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQs
IGZpbj0xLCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICAiIiJDcmVhdGVzIGEg
c2ltcGxlIHRleHQgZnJhbWUgd2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKLQot
ICAgIGVuY29kZWRfbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0gICAgcmV0dXJu
IGNyZWF0ZV9iaW5hcnlfZnJhbWUoZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBw
YXJzZV9mcmFtZShyZWNlaXZlX2J5dGVzLCBsb2dnZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICB3
c192ZXJzaW9uPWNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULAotICAgICAgICAgICAgICAgIHVu
bWFza19yZWNlaXZlPVRydWUpOgotICAgICIiIlBhcnNlcyBhIGZyYW1lLiBSZXR1cm5zIGEgdHVw
bGUgY29udGFpbmluZyBlYWNoIGhlYWRlciBmaWVsZCBhbmQKLSAgICBwYXlsb2FkLgotCi0gICAg
QXJnczoKLSAgICAgICAgcmVjZWl2ZV9ieXRlczogYSBmdW5jdGlvbiB0aGF0IHJlYWRzIGZyYW1l
IGRhdGEgZnJvbSBhIHN0cmVhbSBvcgotICAgICAgICAgICAgc29tZXRoaW5nIHNpbWlsYXIuIFRo
ZSBmdW5jdGlvbiB0YWtlcyBsZW5ndGggb2YgdGhlIGJ5dGVzIHRvIGJlCi0gICAgICAgICAgICBy
ZWFkLiBUaGUgZnVuY3Rpb24gbXVzdCByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
biBpZgotICAgICAgICAgICAgdGhlcmUgaXMgbm90IGVub3VnaCBkYXRhIHRvIGJlIHJlYWQuCi0g
ICAgICAgIGxvZ2dlcjogYSBsb2dnaW5nIG9iamVjdC4KLSAgICAgICAgd3NfdmVyc2lvbjogdGhl
IHZlcnNpb24gb2YgV2ViU29ja2V0IHByb3RvY29sLgotICAgICAgICB1bm1hc2tfcmVjZWl2ZTog
dW5tYXNrIHJlY2VpdmVkIGZyYW1lcy4gV2hlbiByZWNlaXZlZCB1bm1hc2tlZAotICAgICAgICAg
ICAgZnJhbWUsIHJhaXNlcyBJbnZhbGlkRnJhbWVFeGNlcHRpb24uCi0KLSAgICBSYWlzZXM6Ci0g
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlY2VpdmVfYnl0ZXMg
cmFpc2VzIGl0LgotICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1l
IGNvbnRhaW5zIGludmFsaWQgZGF0YS4KLSAgICAiIiIKLQotICAgIGlmIG5vdCBsb2dnZXI6Ci0g
ICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLQotICAgIGxvZ2dlci5sb2coY29t
bW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIHRoZSBmaXJzdCAyIG9jdGV0cyBvZiBhIGZyYW1l
JykKLQotICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcygyKQotCi0gICAgZmlyc3RfYnl0ZSA9
IG9yZChyZWNlaXZlZFswXSkKLSAgICBmaW4gPSAoZmlyc3RfYnl0ZSA+PiA3KSAmIDEKLSAgICBy
c3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCi0gICAgcnN2MiA9IChmaXJzdF9ieXRlID4+IDUp
ICYgMQotICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLSAgICBvcGNvZGUgPSBmaXJz
dF9ieXRlICYgMHhmCi0KLSAgICBzZWNvbmRfYnl0ZSA9IG9yZChyZWNlaXZlZFsxXSkKLSAgICBt
YXNrID0gKHNlY29uZF9ieXRlID4+IDcpICYgMQotICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25k
X2J5dGUgJiAweDdmCi0KLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAg
ICAgICAgICAgICAgJ0ZJTj0lcywgUlNWMT0lcywgUlNWMj0lcywgUlNWMz0lcywgb3Bjb2RlPSVz
LCAnCi0gICAgICAgICAgICAgICAnTWFzaz0lcywgUGF5bG9hZF9sZW5ndGg9JXMnLAotICAgICAg
ICAgICAgICAgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIG1hc2ssIHBheWxvYWRfbGVu
Z3RoKQotCi0gICAgaWYgKG1hc2sgPT0gMSkgIT0gdW5tYXNrX3JlY2VpdmU6Ci0gICAgICAgIHJh
aXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdNYXNrIGJpdCBvbiB0aGUg
cmVjZWl2ZWQgZnJhbWUgZGlkXCdudCBtYXRjaCBtYXNraW5nICcKLSAgICAgICAgICAgICdjb25m
aWd1cmF0aW9uIGZvciByZWNlaXZlZCBmcmFtZXMnKQotCi0gICAgIyBUaGUgSHlCaSBhbmQgbGF0
ZXIgc3BlY3MgZGlzYWxsb3cgcHV0dGluZyBhIHZhbHVlIGluIDB4MC0weEZGRkYKLSAgICAjIGlu
dG8gdGhlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQgKG9yIDB4MC0weEZE
IGluCi0gICAgIyAyLW9jdGV0IGZpZWxkKS4KLSAgICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBU
cnVlCi0gICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMQotICAgIGlmIHBheWxvYWRfbGVuZ3Ro
ID09IDEyNzoKLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykK
LQotICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoOCkKLSAg
ICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFRJywg
ZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4g
MHg3RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdFeHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykK
LSAgICAgICAgaWYgd3NfdmVyc2lvbiA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAw
OgotICAgICAgICAgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gRmFsc2UKLSAgICAgICAgICAg
IGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDgKLQotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5M
T0dMRVZFTF9GSU5FLAotICAgICAgICAgICAgICAgICAgICdEZWNvZGVkX3BheWxvYWRfbGVuZ3Ro
PSVzJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6Ci0g
ICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAg
ICAgJ1JlY2VpdmUgMi1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCcpCi0KLSAgICAgICAg
ZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKDIpCi0gICAgICAgIHBheWxv
YWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKLSAgICAgICAgICAgICchSCcsIGV4dGVuZGVkX3Bh
eWxvYWRfbGVuZ3RoKVswXQotICAgICAgICBpZiB3c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2Fk
X2xlbmd0aCA8IDEyNjoKLSAgICAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNl
Ci0gICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAyCi0KLSAgICAgICAgbG9nZ2Vy
LmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAnRGVjb2RlZF9w
YXlsb2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQotCi0gICAgaWYgbm90IHZhbGlkX2xl
bmd0aF9lbmNvZGluZzoKLSAgICAgICAgbG9nZ2VyLndhcm5pbmcoCi0gICAgICAgICAgICAnUGF5
bG9hZCBsZW5ndGggaXMgbm90IGVuY29kZWQgdXNpbmcgdGhlIG1pbmltYWwgbnVtYmVyIG9mICcK
LSAgICAgICAgICAgICdieXRlcyAoJWQgaXMgZW5jb2RlZCB1c2luZyAlZCBieXRlcyknLAotICAg
ICAgICAgICAgcGF5bG9hZF9sZW5ndGgsCi0gICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0
ZXMpCi0KLSAgICBpZiBtYXNrID09IDE6Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQotCi0gICAgICAgIG1hc2tpbmdfbm9uY2UgPSByZWNl
aXZlX2J5dGVzKDQpCi0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFz
a2luZ19ub25jZSkKLQotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
TWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCi0gICAgZWxzZToKLSAgICAgICAgbWFza2VyID0gX05P
T1BfTUFTS0VSCi0KLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2
ZSBwYXlsb2FkIGRhdGEnKQotICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xF
VkVMX0ZJTkUpOgotICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKLQotICAgIHJh
d19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKLQotICAgIGlm
IGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgotICAgICAgICBsb2dn
ZXIubG9nKAotICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAn
RG9uZSByZWNlaXZpbmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAotICAgICAgICAgICAgcGF5
bG9hZF9sZW5ndGggLyAodGltZS50aW1lKCkgLSByZWNlaXZlX3N0YXJ0KSAvIDEwMDAgLyAxMDAw
KQotICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdVbm1hc2sgcGF5bG9hZCBk
YXRhJykKLQotICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUp
OgotICAgICAgICB1bm1hc2tfc3RhcnQgPSB0aW1lLnRpbWUoKQotCi0gICAgdW5tYXNrZWRfYnl0
ZXMgPSBtYXNrZXIubWFzayhyYXdfcGF5bG9hZF9ieXRlcykKLQotICAgIGlmIGxvZ2dlci5pc0Vu
YWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgotICAgICAgICBsb2dnZXIubG9nKAotICAg
ICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAnRG9uZSB1bm1hc2tp
bmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAotICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgg
LyAodGltZS50aW1lKCkgLSB1bm1hc2tfc3RhcnQpIC8gMTAwMCAvIDEwMDApCi0KLSAgICByZXR1
cm4gb3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzCi0KLQotY2xh
c3MgRnJhZ21lbnRlZEZyYW1lQnVpbGRlcihvYmplY3QpOgotICAgICIiIkEgc3RhdGVmdWwgY2xh
c3MgdG8gc2VuZCBhIG1lc3NhZ2UgYXMgZnJhZ21lbnRzLiIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIG1hc2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgotICAgICAg
ICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgotCi0gICAgICAgIHNlbGYuX21hc2sgPSBt
YXNrCi0gICAgICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCi0gICAgICAg
ICMgVGhpcyBpcyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0ZXh0
IHR5cGUgZnJhbWVzCi0gICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCi0gICAgICAgIHNl
bGYuX2VuY29kZV91dGY4ID0gZW5jb2RlX3V0ZjgKLQotICAgICAgICBzZWxmLl9zdGFydGVkID0g
RmFsc2UKLQotICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBtZXNz
YWdlcyB0byB2ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKLSAgICAgICAgIyBmcmFtZXMgaW4gdGhlIG1l
c3NhZ2UgYXJlIGFsbCB0aGUgc2FtZS4KLSAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9uLk9Q
Q09ERV9URVhUCi0KLSAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFy
eSk6Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24u
T1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNv
bW1vbi5PUENPREVfVEVYVAotICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgotICAgICAgICAgICAg
aWYgc2VsZi5fb3Bjb2RlICE9IGZyYW1lX3R5cGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignTWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQotICAgICAg
ICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKLSAgICAgICAgICAgIHNlbGYuX29wY29k
ZSA9IGZyYW1lX3R5cGUKLQotICAgICAgICBpZiBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9zdGFy
dGVkID0gRmFsc2UKLSAgICAgICAgICAgIGZpbiA9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuX3N0YXJ0ZWQgPSBUcnVlCi0gICAgICAgICAgICBmaW4gPSAwCi0KLSAgICAgICAg
aWYgYmluYXJ5IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKLSAgICAgICAgICAgIHJldHVybiBj
cmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgICAgICAgICAgICAgIHBheWxvYWRfZGF0YSwgb3Bjb2Rl
LCBmaW4sIHNlbGYuX21hc2ssIHNlbGYuX2ZyYW1lX2ZpbHRlcnMpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByZXR1cm4gY3JlYXRlX3RleHRfZnJhbWUoCi0gICAgICAgICAgICAgICAgcGF5
bG9hZF9kYXRhLCBvcGNvZGUsIGZpbiwgc2VsZi5fbWFzaywgc2VsZi5fZnJhbWVfZmlsdGVycykK
LQotCi1kZWYgX2NyZWF0ZV9jb250cm9sX2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVf
ZmlsdGVycyk6Ci0gICAgZnJhbWUgPSBGcmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkp
Ci0KLSAgICBmb3IgZnJhbWVfZmlsdGVyIGluIGZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgIGZyYW1l
X2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6
Ci0gICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICdQYXls
b2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNz
JykKLQotICAgIGhlYWRlciA9IGNyZWF0ZV9oZWFkZXIoCi0gICAgICAgIGZyYW1lLm9wY29kZSwg
bGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4sCi0gICAgICAgIGZyYW1lLnJzdjEsIGZyYW1l
LnJzdjIsIGZyYW1lLnJzdjMsIG1hc2spCi0gICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIs
IGZyYW1lLnBheWxvYWQsIG1hc2spCi0KLQotZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1h
c2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgotICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xf
ZnJhbWUoY29tbW9uLk9QQ09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0K
LWRlZiBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtd
KToKLSAgICByZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywg
Ym9keSwgbWFzaywgZnJhbWVfZmlsdGVycykKLQotCi1kZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJv
ZHksIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgotICAgIHJldHVybiBfY3JlYXRlX2Nv
bnRyb2xfZnJhbWUoCi0gICAgICAgIGNvbW1vbi5PUENPREVfQ0xPU0UsIGJvZHksIG1hc2ssIGZy
YW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5KGNvZGUs
IHJlYXNvbik6Ci0gICAgYm9keSA9ICcnCi0gICAgaWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAg
ICAgaWYgKGNvZGUgPiBjb21tb24uU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggb3IKLSAgICAgICAg
ICAgIGNvZGUgPCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKToKLSAgICAgICAgICAgIHJh
aXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUgaXMgb3V0IG9mIHJhbmdlJykK
LSAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgb3IK
LSAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19BQk5PUk1BTF9DTE9TVVJFIG9yCi0g
ICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfVExTX0hBTkRTSEFLRSk6Ci0gICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIHJlc2VydmVk
IHBzZXVkbyAnCi0gICAgICAgICAgICAgICAgJ2NvZGUnKQotICAgICAgICBlbmNvZGVkX3JlYXNv
biA9IHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCch
SCcsIGNvZGUpICsgZW5jb2RlZF9yZWFzb24KLSAgICByZXR1cm4gYm9keQotCi0KLWNsYXNzIFN0
cmVhbU9wdGlvbnMob2JqZWN0KToKLSAgICAiIiJIb2xkcyBvcHRpb24gdmFsdWVzIHRvIGNvbmZp
Z3VyZSBTdHJlYW0gb2JqZWN0cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgIiIiQ29uc3RydWN0cyBTdHJlYW1PcHRpb25zLiIiIgotCi0gICAgICAgICMgRmlsdGVycyBh
cHBsaWVkIHRvIGZyYW1lcy4KLSAgICAgICAgc2VsZi5vdXRnb2luZ19mcmFtZV9maWx0ZXJzID0g
W10KLSAgICAgICAgc2VsZi5pbmNvbWluZ19mcmFtZV9maWx0ZXJzID0gW10KLQotICAgICAgICAj
IEZpbHRlcnMgYXBwbGllZCB0byBtZXNzYWdlcy4gQ29udHJvbCBmcmFtZXMgYXJlIG5vdCBhZmZl
Y3RlZCBieSB0aGVtLgotICAgICAgICBzZWxmLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycyA9IFtd
Ci0gICAgICAgIHNlbGYuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KLQotICAgICAgICBz
ZWxmLmVuY29kZV90ZXh0X21lc3NhZ2VfdG9fdXRmOCA9IFRydWUKLSAgICAgICAgc2VsZi5tYXNr
X3NlbmQgPSBGYWxzZQotICAgICAgICBzZWxmLnVubWFza19yZWNlaXZlID0gVHJ1ZQotCi0KLWNs
YXNzIFN0cmVhbShTdHJlYW1CYXNlKToKLSAgICAiIiJBIGNsYXNzIGZvciBwYXJzaW5nL2J1aWxk
aW5nIGZyYW1lcyBvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sCi0gICAgKFJGQyA2NDU1KS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvcHRpb25zKToKLSAgICAg
ICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBT
dHJlYW1CYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gRmFs
c2UKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IEZhbHNlCi0KLSAg
ICAgICAgIyBIb2xkcyBib2R5IG9mIHJlY2VpdmVkIGZyYWdtZW50cy4KLSAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KLSAgICAgICAgIyBIb2xkcyB0aGUgb3Bjb2RlIG9mIHRo
ZSBmaXJzdCBmcmFnbWVudC4KLSAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gTm9uZQot
Ci0gICAgICAgIHNlbGYuX3dyaXRlciA9IEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIoCi0gICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwgc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFt
ZV9maWx0ZXJzLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdl
X3RvX3V0ZjgpCi0KLSAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGRlcXVlKCkKLQotICAgIGRl
ZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgYSBmcmFtZSBhbmQg
cmV0dXJuIGRhdGEgaW4gdGhlIGZyYW1lIGFzIGEgdHVwbGUgY29udGFpbmluZwotICAgICAgICBl
YWNoIGhlYWRlciBmaWVsZCBhbmQgcGF5bG9hZCBzZXBhcmF0ZWx5LgotCi0gICAgICAgIFJhaXNl
czoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQg
cmV0dXJucyBlbXB0eQotICAgICAgICAgICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEludmFs
aWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgot
ICAgICAgICAiIiIKLQotICAgICAgICBkZWYgX3JlY2VpdmVfYnl0ZXMobGVuZ3RoKToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQotCi0gICAgICAgIHJldHVy
biBwYXJzZV9mcmFtZShyZWNlaXZlX2J5dGVzPV9yZWNlaXZlX2J5dGVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZ2VyPXNlbGYuX2xvZ2dlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdzX3ZlcnNpb249c2VsZi5fcmVxdWVzdC53c192ZXJzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5tYXNrX3JlY2VpdmU9c2VsZi5fb3B0aW9ucy51bm1hc2tfcmVjZWl2
ZSkKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3Qoc2VsZik6Ci0gICAg
ICAgIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IHNlbGYu
X3JlY2VpdmVfZnJhbWUoKQotCi0gICAgICAgIHJldHVybiBGcmFtZShmaW49ZmluLCByc3YxPXJz
djEsIHJzdjI9cnN2MiwgcnN2Mz1yc3YzLAotICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPW9w
Y29kZSwgcGF5bG9hZD11bm1hc2tlZF9ieXRlcykKLQotICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVk
X2ZyYW1lKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZy
YW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVycy4KLSAgICAgICAgVGhlIGZyYW1lIHRvIGJl
IHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAgICAgICAgLSBU
aGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCi0gICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUg
ZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCi0KLSAgICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhv
ZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZnJh
bWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCi0gICAgICAgIGlmIG5v
dCBmcmFtZS5maW46Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlh
ICcKLSAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKLSAgICAgICAg
aWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RFX1RFWFQgYW5kCi0gICAgICAgICAgICBm
cmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9CSU5BUlkpOgotICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdDb250cm9sIGZyYW1lcyBt
dXN0IG5vdCBiZSByZWNlaXZlZCB2aWEgJwotICAgICAgICAgICAgICAgICdyZWNlaXZlX2ZpbHRl
cmVkX2ZyYW1lKCknKQotCi0gICAgICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9u
cy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgotICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRl
cihmcmFtZSkKLSAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5j
b21pbmdfbWVzc2FnZV9maWx0ZXJzOgotICAgICAgICAgICAgZnJhbWUucGF5bG9hZCA9IG1lc3Nh
Z2VfZmlsdGVyLmZpbHRlcihmcmFtZS5wYXlsb2FkKQotICAgICAgICByZXR1cm4gZnJhbWUKLQot
ICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1GYWxz
ZSk6Ci0gICAgICAgICIiIlNlbmQgbWVzc2FnZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgbWVzc2FnZTogdGV4dCBpbiB1bmljb2RlIG9yIGJpbmFyeSBpbiBzdHIgdG8gc2VuZC4KLSAg
ICAgICAgICAgIGJpbmFyeTogc2VuZCBtZXNzYWdlIGFzIGJpbmFyeSBmcmFtZS4KLQotICAgICAg
ICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVk
IG9uIGEgc2VydmVyLXRlcm1pbmF0ZWQKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uIG9yIGNh
bGxlZCB3aXRoIGluY29uc2lzdGVudCBtZXNzYWdlIHR5cGUgb3IKLSAgICAgICAgICAgICAgICBi
aW5hcnkgcGFyYW1ldGVyLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRp
bmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGlmIGJpbmFyeSBhbmQgaXNp
bnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZyYW1lIG11
c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4g
c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBtZXNz
YWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIg
dG8gbGltaXQgbWF4aW11bSBzaXplIG9mIGRhdGEgaW4KLSAgICAgICAgICAgICMgcGF5bG9hZCBk
YXRhIG9mIGVhY2ggZnJhbWUuCi0gICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAt
MQotCi0gICAgICAgICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKLSAgICAgICAg
ICAgICAgICBzZWxmLl93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5h
cnkpKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBieXRlc193cml0dGVu
ID0gMAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBlbmRfZm9yX3Ro
aXNfZnJhbWUgPSBlbmQKLSAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNz
YWdlKSAtIGJ5dGVzX3dyaXR0ZW4KLSAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFU
QV9TSVpFID4gMCBhbmQKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPiBNQVhf
UEFZTE9BRF9EQVRBX1NJWkUpOgotICAgICAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNfZnJh
bWUgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IE1BWF9QQVlM
T0FEX0RBVEFfU0laRQotCi0gICAgICAgICAgICAgICAgZnJhbWUgPSBzZWxmLl93cml0ZXIuYnVp
bGQoCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VbYnl0ZXNfd3JpdHRlbjpieXRlc193cml0
dGVuICsgYnl0ZXNfdG9fd3JpdGVdLAotICAgICAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNf
ZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgIGJpbmFyeSkKLSAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShmcmFtZSkKLQotICAgICAgICAgICAgICAgIGJ5dGVzX3dyaXR0ZW4gKz0gYnl0ZXNf
dG9fd3JpdGUKLQotICAgICAgICAgICAgICAgICMgVGhpcyBpZiBtdXN0IGJlIHBsYWNlZCBoZXJl
ICh0aGUgZW5kIG9mIHdoaWxlIGJsb2NrKSBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBhdCBs
ZWFzdCBvbmUgZnJhbWUgaXMgc2VudC4KLSAgICAgICAgICAgICAgICBpZiBsZW4obWVzc2FnZSkg
PD0gYnl0ZXNfd3JpdHRlbjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhj
ZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRp
b24oZSkKLQotICAgIGRlZiBfZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6Ci0g
ICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZyb20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNv
bXBvc2VkIG9mIGZyYWdtZW50ZWQKLSAgICAgICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90
IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUsIHRoaXMgbWV0aG9kCi0gICAgICAgIHJldHVybnMg
Tm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0Ci0g
ICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMgcGFzc2VkIHRvIHRoaXMgbWV0aG9kLgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUg
ZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdtZW50YXRpb24KLSAgICAgICAgICAgICAgICBjb250
ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgotICAgICAgICAiIiIKLQot
ICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0g
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgotICAgICAgICAgICAg
ICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1l
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRp
b24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgJ25v
dCBzdGFydGVkJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVj
ZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1lIGJ1dCAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRlZCcpCi0KLSAgICAgICAgICAgIGlmIGZyYW1lLmZp
bjoKLSAgICAgICAgICAgICAgICAjIEVuZCBvZiBmcmFnbWVudGF0aW9uIGZyYW1lCi0gICAgICAg
ICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJy5qb2luKHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50
cykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMgPSBbXQotICAgICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRf
ZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLl9yZWNlaXZlZF9mcmFnbWVu
dHM6Ci0gICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVj
ZWl2ZWQgYW4gdW5mcmFnbWVudGVkIGZyYW1lIHdpdGhvdXQgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlcm1pbmF0aW5nIGV4aXN0aW5nIGZyYWdtZW50YXRpb24nKQotICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICdOZXcgZnJhZ21lbnRhdGlvbiBzdGFydGVkIHdp
dGhvdXQgdGVybWluYXRpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nIGZy
YWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBpZiBmcmFtZS5maW46Ci0gICAgICAgICAgICAg
ICAgIyBVbmZyYWdtZW50ZWQgZnJhbWUKLQotICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZS5wYXls
b2FkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZnJhZ21l
bnRhdGlvbiBmcmFtZQotCi0gICAgICAgICAgICAgICAgaWYgY29tbW9uLmlzX2NvbnRyb2xfb3Bj
b2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFt
ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9sIGZyYW1lcyBtdXN0
IG5vdCBiZSBmcmFnbWVudGVkJykKLQotICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX29w
Y29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdt
ZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
Ci0gICAgZGVmIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAg
ICIiIlByb2Nlc3NlcyBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBtZXNzYWdlOiBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAg
IEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgbWVzc2FnZSBpcyBpbnZhbGlkLgotICAg
ICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gVHJ1
ZQotCi0gICAgICAgICMgU3RhdHVzIGNvZGUgaXMgb3B0aW9uYWwuIFdlIGNhbiBoYXZlIHN0YXR1
cyByZWFzb24gb25seSBpZiB3ZQotICAgICAgICAjIGhhdmUgc3RhdHVzIGNvZGUuIFN0YXR1cyBy
ZWFzb24gY2FuIGJlIGVtcHR5IHN0cmluZy4gU28sCi0gICAgICAgICMgYWxsb3dlZCBjYXNlcyBh
cmUKLSAgICAgICAgIyAtIG5vIGFwcGxpY2F0aW9uIGRhdGE6IG5vIGNvZGUgbm8gcmVhc29uCi0g
ICAgICAgICMgLSAyIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGhhcyBjb2RlIGJ1dCBubyBy
ZWFzb24KLSAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRhOiBi
b3RoIGNvZGUgYW5kIHJlYXNvbgotICAgICAgICBpZiBsZW4obWVzc2FnZSkgPT0gMDoKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJhbWUgKGVtcHR5IGJv
ZHkpJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSA9ICgKLSAgICAg
ICAgICAgICAgICBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCkKLSAgICAgICAgZWxp
ZiBsZW4obWVzc2FnZSkgPT0gMToKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnSWYgYSBjbG9zZSBmcmFtZSBoYXMgc3RhdHVzIGNvZGUs
IHRoZSBsZW5ndGggb2YgJwotICAgICAgICAgICAgICAgICdzdGF0dXMgY29kZSBtdXN0IGJlIDIg
b2N0ZXQnKQotICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAyOgotICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gc3RydWN0LnVucGFjaygKLSAgICAgICAgICAgICAg
ICAnIUgnLCBtZXNzYWdlWzA6Ml0pWzBdCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Ns
b3NlX3JlYXNvbiA9IG1lc3NhZ2VbMjpdLmRlY29kZSgKLSAgICAgICAgICAgICAgICAndXRmLTgn
LCAncmVwbGFjZScpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAgICAgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChjb2RlPSVkLCByZWFzb249JXIpJywKLSAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUsCi0gICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24pCi0KLSAgICAgICAgIyBBcyB3ZSd2ZSByZWNl
aXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRhdGEgaXMgY29taW5nIG92ZXIgdGhlCi0gICAg
ICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVseSBjbG9zZSB0aGUgc29ja2V0IHdpdGhvdXQg
d29ycnlpbmcgYWJvdXQKLSAgICAgICAgIyBSU1Qgc2VuZGluZy4KLQotICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9yIHNlcnZlci1pbml0aWF0ZWQg
Y2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9D
TE9TVVJFCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcmVx
dWVzdCwgJ19kaXNwYXRjaGVyJyk6Ci0gICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fcmVx
dWVzdC5fZGlzcGF0Y2hlcgotICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qp
Ci0gICAgICAgICAgICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQg
bGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAot
ICAgICAgICAgICAgICAgICAgICAnSGFuZGxlciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29k
ZSBiZWluZyBOb25lJykKLSAgICAgICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICAgICAg
aWYgcmVhc29uIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVhc29uID0gJycKLSAgICAgICAg
c2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24pCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hh
a2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcKLSAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29u
PSVyKScsIGNvZGUsIHJlYXNvbikKLQotICAgIGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBpbmcgbWVzc2FnZS4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25f
cGluZ19oYW5kbGVyCi0gICAgICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhh
bmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yLCBlOgotICAgICAgICAgICAgcGFzcwotICAgICAg
ICBzZWxmLl9zZW5kX3BvbmcobWVzc2FnZSkKLQotICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBvbmcgbWVzc2FnZS4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5k
bGluZy4KLQotICAgICAgICBpbmZsaWdodF9waW5ncyA9IGRlcXVlKCkKLQotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkg
PSBzZWxmLl9waW5nX3F1ZXVlLnBvcGxlZnQoKQotICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVk
X2JvZHkgPT0gbWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBj
b250YWlucyBwaW5ncyBpZ25vcmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAjIG90aGVy
IHBlZXIuIEp1c3QgZm9yZ2V0IHRoZW0uCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgICAgICdQaW5nICVyIGlzIGFja2VkICglZCBw
aW5ncyB3ZXJlIGlnbm9yZWQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Jv
ZHksIGxlbihpbmZsaWdodF9waW5ncykpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBw
ZW5kKGV4cGVjdGVkX2JvZHkpCi0gICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvciwgZToKLSAg
ICAgICAgICAgICAgICAjIFRoZSByZWNlaXZlZCBwb25nIHdhcyB1bnNvbGljaXRlZCBwb25nLiBL
ZWVwIHRoZQotICAgICAgICAgICAgICAgICMgcGluZyBxdWV1ZSBhcyBpcy4KLSAgICAgICAgICAg
ICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRfcGluZ3MKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgdW5zb2xpY2l0ZWQgcG9uZycpCi0gICAgICAg
ICAgICAgICAgYnJlYWsKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gc2Vs
Zi5fcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIKLSAgICAgICAgICAgIGlmIGhhbmRsZXI6Ci0gICAg
ICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQotICAgICAgICBleGNl
cHQgQXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgcmVjZWl2
ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1lIGFu
ZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCi0gICAgICAgIHVuaWNvZGUgb3IgYSBi
aW5hcnkgaW4gc3RyLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBwYXlsb2FkIGRh
dGEgb2YgdGhlIGZyYW1lCi0gICAgICAgICAgICAtIGFzIHVuaWNvZGUgaW5zdGFuY2UgaWYgcmVj
ZWl2ZWQgdGV4dCBmcmFtZQotICAgICAgICAgICAgLSBhcyBzdHIgaW5zdGFuY2UgaWYgcmVjZWl2
ZWQgYmluYXJ5IGZyYW1lCi0gICAgICAgICAgICBvciBOb25lIGlmZiByZWNlaXZlZCBjbG9zaW5n
IGhhbmRzaGFrZS4KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJtaW5hdGVkCi0gICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
OiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAgICAgICAgICAgIHN0cmluZy4KLSAgICAg
ICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29udGFpbnMgaW52
YWxpZAotICAgICAgICAgICAgICAgIGRhdGEuCi0gICAgICAgICAgICBVbnN1cHBvcnRlZEZyYW1l
RXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBoYXMKLSAgICAgICAgICAgICAgICBm
bGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBjYW4gaWdub3JlIHRoaXMKLSAgICAg
ICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJlY2VpdmluZyB0aGUgbmV4dCBmcmFt
ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWlu
YXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBhZnRlciByZWNlaXZpbmcgYSBjbG9z
aW5nICcKLSAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLQotICAgICAgICB3aGlsZSBUcnVl
OgotICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBibG9jayBpZiBubyBieXRlcyBhcmUg
YXZhaWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91
dCBkaXJlY3RpdmUgb2YgQXBhY2hlLgotCi0gICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3JlY2Vp
dmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLQotICAgICAgICAgICAgIyBDaGVjayB0aGUgY29u
c3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9sIGZyYW1lcwotICAgICAgICAg
ICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJhbWUuCi0gICAgICAgICAgICAj
IFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjUK
LSAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSBh
bmQKLSAgICAgICAgICAgICAgICBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjUpOgotICAgICAgICAg
ICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
J1BheWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9y
ICcKLSAgICAgICAgICAgICAgICAgICAgJ2xlc3MnKQotCi0gICAgICAgICAgICBmb3IgZnJhbWVf
ZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKLSAgICAgICAg
ICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgICAgICAgICBpZiBmcmFt
ZS5yc3YxIG9yIGZyYW1lLnJzdjIgb3IgZnJhbWUucnN2MzoKLSAgICAgICAgICAgICAgICByYWlz
ZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnVW5zdXBw
b3J0ZWQgZmxhZyBpcyBzZXQgKHJzdiA9ICVkJWQlZCknICUKLSAgICAgICAgICAgICAgICAgICAg
KGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJzdjMpKQotCi0gICAgICAgICAgICBtZXNz
YWdlID0gc2VsZi5fZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShmcmFtZSkKLSAgICAgICAgICAgIGlm
IG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAg
ICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19tZXNzYWdlX2Zp
bHRlcnM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlciht
ZXNzYWdlKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9u
Lk9QQ09ERV9URVhUOgotICAgICAgICAgICAgICAgICMgVGhlIFdlYlNvY2tldCBwcm90b2NvbCBz
ZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlkCi0gICAgICAgICAgICAgICAgIyBjaGFy
YWN0ZXJzIG11c3QgYmUgcmVwbGFjZWQgd2l0aCBVK2ZmZmQgUkVQTEFDRU1FTlQKLSAgICAgICAg
ICAgICAgICAjIENIQVJBQ1RFUi4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtZXNzYWdlLmRlY29kZSgndXRmLTgnKQotICAgICAgICAgICAgICAgIGV4
Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRVVEY4RXhjZXB0aW9uKGUpCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29w
Y29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICByZXR1cm4gbWVz
c2FnZQotICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9Q
Q09ERV9DTE9TRToKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uo
bWVzc2FnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgZWxpZiBz
ZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9QSU5HOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICBlbGlm
IHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BPTkc6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgJ09wY29kZSAlZCBpcyBub3Qgc3VwcG9ydGVkJyAlIHNlbGYuX29y
aWdpbmFsX29wY29kZSkKLQotICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBj
b2RlLCByZWFzb24pOgotICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2Jv
ZHkoY29kZSwgcmVhc29uKQotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKLSAg
ICAgICAgICAgIGJvZHksIG1hc2s9c2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCi0gICAgICAgICAg
ICBmcmFtZV9maWx0ZXJzPXNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLQot
ICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgICAg
IHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgZGVmIGNsb3NlX2Nvbm5lY3Rpb24oc2VsZiwgY29k
ZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgd2FpdF9yZXNwb25zZT1UcnVlKToKLSAgICAgICAgIiIiQ2xvc2VzIGEgV2Vi
U29ja2V0IGNvbm5lY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNvZGU6IFN0
YXR1cyBjb2RlIGZvciBjbG9zZSBmcmFtZS4gSWYgY29kZSBpcyBOb25lLCBhIGNsb3NlCi0gICAg
ICAgICAgICAgICAgZnJhbWUgd2l0aCBlbXB0eSBib2R5IHdpbGwgYmUgc2VudC4KLSAgICAgICAg
ICAgIHJlYXNvbjogc3RyaW5nIHJlcHJlc2VudGluZyBjbG9zZSByZWFzb24uCi0gICAgICAgICAg
ICB3YWl0X3Jlc3BvbnNlOiBUcnVlIHdoZW4gY2FsbGVyIHdhbnQgdG8gd2FpdCB0aGUgcmVzcG9u
c2UuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjog
d2hlbiByZWFzb24gaXMgc3BlY2lmaWVkIHdpdGggY29kZSBOb25lCi0gICAgICAgICAgICBvciBy
ZWFzb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGJvdGggc3RyIGFuZCB1bmljb2RlLgotICAgICAg
ICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQg
Y2xvc2VfY29ubmVjdGlvbiBidXQgc2VydmVyIGlzIGFscmVhZHkgdGVybWluYXRlZCcpCi0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBp
ZiByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKLSAgICAgICAgICAgICAg
ICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdjbG9z
ZSByZWFzb24gbXVzdCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCi0gICAgICAg
ICAgICByZWFzb24gPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UocmVhc29uLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5jZShyZWFzb24sIHVuaWNvZGUpOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvciB1bmlj
b2RlJykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNv
bikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0luaXRpYXRlZCBj
bG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCi0gICAgICAgICAgICBjb2Rl
LCByZWFzb24pCi0KLSAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19HT0lOR19BV0FZ
IG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfUFJPVE9DT0xfRVJST1IpIG9y
IG5vdCB3YWl0X3Jlc3BvbnNlOgotICAgICAgICAgICAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBpZiB0aGUgcmVhc29uIGlzCi0gICAgICAgICAgICAj
IHByb3RvY29sIGVycm9yIG9yIHRoYXQgdGhlIHNlcnZlciBpcyBnb2luZyBhd2F5LiBGb3Igc29t
ZSBvZgotICAgICAgICAgICAgIyBvdGhlciByZWFzb25zLCBpdCBtaWdodCBub3QgbWFrZSBzZW5z
ZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lLAotICAgICAgICAgICAgIyBidXQgaXQncyBub3Qg
Y2xlYXIsIHlldC4KLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgVE9ETyh1a2FpKTog
Mi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJtaW5hdGVkLyBmbGFnIGhhcyBiZWVuIHNldCwK
LSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1kZWZpbmVkIHRpbWVvdXQgZXhwaXJlcy4KLSAg
ICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdlIGV4cGVjdCByZWNlaXZpbmcgY2xvc2luZyBo
YW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwotICAgICAgICAjIG91dCBjbG9zaW5nIGhhbmRz
aGFrZS4KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAg
aWYgbWVzc2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJt
aW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdEaWRuXCd0IHJlY2VpdmUgdmFsaWQg
YWNrIGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgICMgVE9ETzogMy4gY2xvc2UgdGhl
IFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICAjIG5vdGU6IG1vZF9weXRob24gQ29ubmVj
dGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4KLQotICAgIGRlZiBzZW5k
X3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGZyYW1lID0gY3JlYXRlX3BpbmdfZnJhbWUo
Ci0gICAgICAgICAgICBib2R5LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQs
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCi0gICAg
ICAgIHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5k
KGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgZnJhbWUg
PSBjcmVhdGVfcG9uZ19mcmFtZSgKLSAgICAgICAgICAgIGJvZHksCi0gICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3V0Z29pbmdf
ZnJhbWVfZmlsdGVycykKLSAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYgZ2V0
X2xhc3RfcmVjZWl2ZWRfb3Bjb2RlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBvcGNv
ZGUgb2YgdGhlIFdlYlNvY2tldCBtZXNzYWdlIHdoaWNoIHRoZSBsYXN0IHJlY2VpdmVkCi0gICAg
ICAgIGZyYW1lIGJlbG9uZ3MgdG8uIFRoZSByZXR1cm4gdmFsdWUgaXMgdmFsaWQgaWZmIGltbWVk
aWF0ZWx5IGFmdGVyCi0gICAgICAgIHJlY2VpdmVfbWVzc2FnZSBjYWxsLgotICAgICAgICAiIiIK
LQotICAgICAgICByZXR1cm4gc2VsZi5fb3JpZ2luYWxfb3Bjb2RlCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmZjMmVhZDY0ODFiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBACi0jIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgbXVzdCBub3QgZGVwZW5kIG9uIGFueSBtb2R1
bGUgc3BlY2lmaWMgdG8gdGhlIFdlYlNvY2tldCBwcm90b2NvbC4KLSIiIgotCi0KLWZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotIyBBZGRpdGlvbmFsIGxv
ZyBsZXZlbCBkZWZpbml0aW9ucy4KLUxPR0xFVkVMX0ZJTkUgPSA5Ci0KLSMgQ29uc3RhbnRzIGlu
ZGljYXRpbmcgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24uCi1WRVJTSU9OX0hJWElFNzUgPSAt
MQotVkVSU0lPTl9IWUJJMDAgPSAwCi1WRVJTSU9OX0hZQkkwMSA9IDEKLVZFUlNJT05fSFlCSTAy
ID0gMgotVkVSU0lPTl9IWUJJMDMgPSAyCi1WRVJTSU9OX0hZQkkwNCA9IDQKLVZFUlNJT05fSFlC
STA1ID0gNQotVkVSU0lPTl9IWUJJMDYgPSA2Ci1WRVJTSU9OX0hZQkkwNyA9IDcKLVZFUlNJT05f
SFlCSTA4ID0gOAotVkVSU0lPTl9IWUJJMDkgPSA4Ci1WRVJTSU9OX0hZQkkxMCA9IDgKLVZFUlNJ
T05fSFlCSTExID0gOAotVkVSU0lPTl9IWUJJMTIgPSA4Ci1WRVJTSU9OX0hZQkkxMyA9IDEzCi1W
RVJTSU9OX0hZQkkxNCA9IDEzCi1WRVJTSU9OX0hZQkkxNSA9IDEzCi1WRVJTSU9OX0hZQkkxNiA9
IDEzCi1WRVJTSU9OX0hZQkkxNyA9IDEzCi0KLSMgQ29uc3RhbnRzIGluZGljYXRpbmcgV2ViU29j
a2V0IHByb3RvY29sIGxhdGVzdCB2ZXJzaW9uLgotVkVSU0lPTl9IWUJJX0xBVEVTVCA9IFZFUlNJ
T05fSFlCSTEzCi0KLSMgUG9ydCBudW1iZXJzCi1ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCA9IDgw
Ci1ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0NDMKLQotIyBTY2hlbWVzCi1XRUJf
U09DS0VUX1NDSEVNRSA9ICd3cycKLVdFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSA9ICd3c3MnCi0K
LSMgRnJhbWUgb3Bjb2RlcyBkZWZpbmVkIGluIHRoZSBzcGVjLgotT1BDT0RFX0NPTlRJTlVBVElP
TiA9IDB4MAotT1BDT0RFX1RFWFQgPSAweDEKLU9QQ09ERV9CSU5BUlkgPSAweDIKLU9QQ09ERV9D
TE9TRSA9IDB4OAotT1BDT0RFX1BJTkcgPSAweDkKLU9QQ09ERV9QT05HID0gMHhhCi0KLSMgVVVJ
RHMgdXNlZCBieSBIeUJpIDA0IGFuZCBsYXRlciBvcGVuaW5nIGhhbmRzaGFrZSBhbmQgZnJhbWUg
bWFza2luZy4KLVdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9ICcyNThFQUZBNS1FOTE0LTQ3REEtOTVD
QS1DNUFCMERDODVCMTEnCi0KLSMgT3BlbmluZyBoYW5kc2hha2UgaGVhZGVyIG5hbWVzIGFuZCBl
eHBlY3RlZCB2YWx1ZXMuCi1VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlJwotV0VCU09DS0VUX1VQ
R1JBREVfVFlQRSA9ICd3ZWJzb2NrZXQnCi1XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUg
PSAnV2ViU29ja2V0JwotQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbicKLVVQR1JBREVf
Q09OTkVDVElPTl9UWVBFID0gJ1VwZ3JhZGUnCi1IT1NUX0hFQURFUiA9ICdIb3N0JwotT1JJR0lO
X0hFQURFUiA9ICdPcmlnaW4nCi1TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIgPSAnU2VjLVdl
YlNvY2tldC1PcmlnaW4nCi1TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIgPSAnU2VjLVdlYlNvY2tl
dC1LZXknCi1TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1BY2Nl
cHQnCi1TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtVmVyc2lv
bicKLVNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtUHJvdG9j
b2wnCi1TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9ucycKLVNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtRHJh
ZnQnCi1TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5MScKLVNF
Q19XRUJTT0NLRVRfS0VZMl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1LZXkyJwotU0VDX1dFQlNP
Q0tFVF9MT0NBVElPTl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbicKLQotIyBFeHRl
bnNpb25zCi1ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICdkZWZsYXRlLWZyYW1lJwotUEVSTUVT
U0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1jb21wcmVzcycKLVBFUk1F
U1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZsYXRlJwotWF9XRUJLSVRf
REVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAneC13ZWJraXQtZGVmbGF0ZS1mcmFtZScKLVhfV0VC
S0lUX1BFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3gtd2Via2l0LXBlcm1lc3Nh
Z2UtY29tcHJlc3MnCi1NVVhfRVhURU5TSU9OID0gJ211eF9ET19OT1RfVVNFJwotCi0jIFN0YXR1
cyBjb2RlcwotIyBDb2RlIFNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQsIFNUQVRVU19BQk5PUk1B
TF9DTE9TVVJFLCBhbmQKLSMgU1RBVFVTX1RMU19IQU5EU0hBS0UgYXJlIHBzZXVkbyBjb2RlcyB0
byBpbmRpY2F0ZSBzcGVjaWZpYyBlcnJvciBjYXNlcy4KLSMgQ291bGQgbm90IGJlIHVzZWQgZm9y
IGNvZGVzIGluIGFjdHVhbCBjbG9zaW5nIGZyYW1lcy4KLSMgQXBwbGljYXRpb24gbGV2ZWwgZXJy
b3JzIG11c3QgdXNlIGNvZGVzIGluIHRoZSByYW5nZQotIyBTVEFUVVNfVVNFUl9SRUdJU1RFUkVE
X0JBU0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguIFRoZSBjb2RlcyBpbiB0aGUKLSMgcmFu
Z2UgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFIHRvIFNUQVRVU19VU0VSX1JFR0lTVEVSRURf
TUFYIGFyZSBtYW5hZ2VkCi0jIGJ5IElBTkEuIFVzdWFsbHkgYXBwbGljYXRpb24gbXVzdCBkZWZp
bmUgdXNlciBwcm90b2NvbCBsZXZlbCBlcnJvcnMgaW4gdGhlCi0jIHJhbmdlIFNUQVRVU19VU0VS
X1BSSVZBVEVfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01BWC4KLVNUQVRVU19OT1JNQUxf
Q0xPU1VSRSA9IDEwMDAKLVNUQVRVU19HT0lOR19BV0FZID0gMTAwMQotU1RBVFVTX1BST1RPQ09M
X0VSUk9SID0gMTAwMgotU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEgPSAxMDAzCi1TVEFUVVNfTk9f
U1RBVFVTX1JFQ0VJVkVEID0gMTAwNQotU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgPSAxMDA2Ci1T
VEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEgPSAxMDA3Ci1TVEFUVVNfUE9MSUNZX1ZJ
T0xBVElPTiA9IDEwMDgKLVNUQVRVU19NRVNTQUdFX1RPT19CSUcgPSAxMDA5Ci1TVEFUVVNfTUFO
REFUT1JZX0VYVEVOU0lPTiA9IDEwMTAKLVNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiA9
IDEwMTEKLVNUQVRVU19UTFNfSEFORFNIQUtFID0gMTAxNQotU1RBVFVTX1VTRVJfUkVHSVNURVJF
RF9CQVNFID0gMzAwMAotU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9NQVggPSAzOTk5Ci1TVEFUVVNf
VVNFUl9QUklWQVRFX0JBU0UgPSA0MDAwCi1TVEFUVVNfVVNFUl9QUklWQVRFX01BWCA9IDQ5OTkK
LSMgRm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBhbGlhc2VzIHRvIGtlZXAgY29tcGF0aWJpbGl0
eS4gQXBwbGljYXRpb25zIG11c3QKLSMgbm90IHVzZSB0aGVzZSBvYnNvbGV0ZWQgZGVmaW5pdGlv
bnMgYW55bW9yZS4KLVNUQVRVU19OT1JNQUwgPSBTVEFUVVNfTk9STUFMX0NMT1NVUkUKLVNUQVRV
U19VTlNVUFBPUlRFRCA9IFNUQVRVU19VTlNVUFBPUlRFRF9EQVRBCi1TVEFUVVNfQ09ERV9OT1Rf
QVZBSUxBQkxFID0gU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAotU1RBVFVTX0FCTk9STUFMX0NM
T1NFID0gU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUKLVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxP
QUQgPSBTVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEKLVNUQVRVU19NQU5EQVRPUllf
RVhUID0gU1RBVFVTX01BTkRBVE9SWV9FWFRFTlNJT04KLQotIyBIVFRQIHN0YXR1cyBjb2Rlcwot
SFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QgPSA0MDAKLUhUVFBfU1RBVFVTX0ZPUkJJRERFTiA9IDQw
MwotSFRUUF9TVEFUVVNfTk9UX0ZPVU5EID0gNDA0Ci0KLQotZGVmIGlzX2NvbnRyb2xfb3Bjb2Rl
KG9wY29kZSk6Ci0gICAgcmV0dXJuIChvcGNvZGUgPj4gMykgPT0gMQotCi0KLWNsYXNzIEV4dGVu
c2lvblBhcmFtZXRlcihvYmplY3QpOgotICAgICIiIkhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGFu
IGV4dGVuc2lvbiB3aGljaCBpcyBleGNoYW5nZWQgb24gZXh0ZW5zaW9uCi0gICAgbmVnb3RpYXRp
b24gaW4gb3BlbmluZyBoYW5kc2hha2UuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgICMgVE9ETyh0eW9z
aGlubyk6IENoYW5nZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gbW9yZSBlZmZpY2llbnQgb25lIHN1
Y2gKLSAgICAgICAgIyBhcyBkaWN0IHdoZW4gdGhlIHNwZWMgY2hhbmdlcyB0byBzYXkgbGlrZQot
ICAgICAgICAjIC0gUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgdW5pcXVlCi0gICAgICAgICMgLSBU
aGUgb3JkZXIgb2YgcGFyYW1ldGVycyBpcyBub3Qgc2lnbmlmaWNhbnQKLSAgICAgICAgc2VsZi5f
cGFyYW1ldGVycyA9IFtdCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX25hbWUKLQotICAgIGRlZiBhZGRfcGFyYW1ldGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAg
ICAgICAgc2VsZi5fcGFyYW1ldGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKLQotICAgIGRlZiBn
ZXRfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKLQot
ICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gW25hbWUg
Zm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQotCi0gICAgZGVmIGhh
c19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92
YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzOgotICAgICAgICAgICAgaWYgcGFyYW1fbmFtZSA9PSBu
YW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZGVmIGdldF9wYXJhbWV0ZXJfdmFsdWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZvciBw
YXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzOgotICAgICAgICAgICAg
aWYgcGFyYW1fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbV92YWx1
ZQotCi0KLWNsYXNzIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHN1cGVyKEV4dGVuc2lvblBhcnNpbmdF
eGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCi0KLQotZGVmIF9wYXJzZV9leHRlbnNpb25f
cGFyYW0oc3RhdGUsIGRlZmluaXRpb24pOgotICAgIHBhcmFtX25hbWUgPSBodHRwX2hlYWRlcl91
dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICBpZiBwYXJhbV9uYW1lIGlzIE5vbmU6Ci0g
ICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oJ05vIHZhbGlkIHBhcmFtZXRl
ciBuYW1lIGZvdW5kJykKLQotICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0
ZSkKLQotICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAn
PScpOgotICAgICAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0ZXIocGFyYW1fbmFtZSwgTm9uZSkK
LSAgICAgICAgcmV0dXJuCi0KLSAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3Rh
dGUpCi0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgY29kZSB0byB2YWxpZGF0ZSB0aGF0IHBh
cnNlZCBwYXJhbV92YWx1ZSBpcyB0b2tlbgotICAgIHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFkZXJf
dXRpbC5jb25zdW1lX3Rva2VuX29yX3F1b3RlZF9zdHJpbmcoc3RhdGUpCi0gICAgaWYgcGFyYW1f
dmFsdWUgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigK
LSAgICAgICAgICAgICdObyB2YWxpZCBwYXJhbWV0ZXIgdmFsdWUgZm91bmQgb24gdGhlIHJpZ2h0
LWhhbmQgc2lkZSBvZiAnCi0gICAgICAgICAgICAncGFyYW1ldGVyICVyJyAlIHBhcmFtX25hbWUp
Ci0KLSAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0ZXIocGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUp
Ci0KLQotZGVmIF9wYXJzZV9leHRlbnNpb24oc3RhdGUpOgotICAgIGV4dGVuc2lvbl90b2tlbiA9
IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKLSAgICBpZiBleHRlbnNpb25f
dG9rZW4gaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGV4dGVuc2lvbiA9IEV4
dGVuc2lvblBhcmFtZXRlcihleHRlbnNpb25fdG9rZW4pCi0KLSAgICB3aGlsZSBUcnVlOgotICAg
ICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAgaWYg
bm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc7Jyk6Ci0gICAgICAg
ICAgICBicmVhawotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0
ZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKHN0
YXRlLCBleHRlbnNpb24pCi0gICAgICAgIGV4Y2VwdCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJQotICAg
ICAgICAgICAgICAgIChleHRlbnNpb25fdG9rZW4sIGUpKQotCi0gICAgcmV0dXJuIGV4dGVuc2lv
bgotCi0KLWRlZiBwYXJzZV9leHRlbnNpb25zKGRhdGEpOgotICAgICIiIlBhcnNlcyBTZWMtV2Vi
U29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIHZhbHVlIHJldHVybnMgYSBsaXN0IG9mCi0gICAgRXh0
ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMuCi0KLSAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUgdHJp
bW1lZC4KLSAgICAiIiIKLQotICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3Rh
dGUoZGF0YSkKLQotICAgIGV4dGVuc2lvbl9saXN0ID0gW10KLSAgICB3aGlsZSBUcnVlOgotICAg
ICAgICBleHRlbnNpb24gPSBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKQotICAgICAgICBpZiBleHRl
bnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBleHRlbnNpb25fbGlzdC5hcHBlbmQoZXh0
ZW5zaW9uKQotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkK
LQotICAgICAgICBpZiBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpIGlzIE5vbmU6Ci0gICAg
ICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
c3RyaW5nKHN0YXRlLCAnLCcpOgotICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQt
RXh0ZW5zaW9ucyBoZWFkZXI6ICcKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBi
dXQgZm91bmQgJXInICUKLSAgICAgICAgICAgICAgICBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3Rh
dGUpKQotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKLQot
ICAgIGlmIGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKLSAgICAgICAgcmFpc2UgRXh0ZW5zaW9u
UGFyc2luZ0V4Y2VwdGlvbigKLSAgICAgICAgICAgICdObyB2YWxpZCBleHRlbnNpb24gZW50cnkg
Zm91bmQnKQotCi0gICAgcmV0dXJuIGV4dGVuc2lvbl9saXN0Ci0KLQotZGVmIGZvcm1hdF9leHRl
bnNpb24oZXh0ZW5zaW9uKToKLSAgICAiIiJGb3JtYXRzIGFuIEV4dGVuc2lvblBhcmFtZXRlciBv
YmplY3QuIiIiCi0KLSAgICBmb3JtYXR0ZWRfcGFyYW1zID0gW2V4dGVuc2lvbi5uYW1lKCldCi0g
ICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVy
cygpOgotICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgZm9ybWF0
dGVkX3BhcmFtcy5hcHBlbmQocGFyYW1fbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHF1b3RlZF92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFt
X3ZhbHVlKQotICAgICAgICAgICAgZm9ybWF0dGVkX3BhcmFtcy5hcHBlbmQoJyVzPSVzJyAlIChw
YXJhbV9uYW1lLCBxdW90ZWRfdmFsdWUpKQotICAgIHJldHVybiAnOyAnLmpvaW4oZm9ybWF0dGVk
X3BhcmFtcykKLQotCi1kZWYgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uX2xpc3QpOgotICAg
ICIiIkZvcm1hdHMgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgotCi0g
ICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0ID0gW10KLSAgICBmb3IgZXh0ZW5zaW9uIGluIGV4
dGVuc2lvbl9saXN0OgotICAgICAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGZv
cm1hdF9leHRlbnNpb24oZXh0ZW5zaW9uKSkKLSAgICByZXR1cm4gJywgJy5qb2luKGZvcm1hdHRl
ZF9leHRlbnNpb25fbGlzdCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9kaXNwYXRjaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjOTFlMGM5
MGU3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNo
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LSIiIkRpc3BhdGNoIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtc2d1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4Ci1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotCi0KLV9TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29tcGlsZShyJyg/aSlf
d3NoXC5weSQnKQotX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKLV9ET19FWFRSQV9IQU5EU0hB
S0VfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlJwotX1RSQU5T
RkVSX0RBVEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YScKLV9QQVNT
SVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9ICgKLSAgICAnd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlJykKLQotCi1jbGFzcyBEaXNwYXRjaEV4Y2VwdGlvbihF
eGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRjaGluZyBXZWJTb2NrZXQgcmVx
dWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9Y29tbW9uLkhU
VFBfU1RBVFVTX05PVF9GT1VORCk6Ci0gICAgICAgIHN1cGVyKERpc3BhdGNoRXhjZXB0aW9uLCBz
ZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWRl
ZiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVxdWVzdCk6Ci0g
ICAgIiIiRGVmYXVsdCB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UgaGFuZGxl
ci4iIiIKLQotICAgIHJldHVybiBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCAnJwotCi0K
LWRlZiBfbm9ybWFsaXplX3BhdGgocGF0aCk6Ci0gICAgIiIiTm9ybWFsaXplIHBhdGguCi0KLSAg
ICBBcmdzOgotICAgICAgICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUuCi0KLSAgICBQYXRo
IGlzIGNvbnZlcnRlZCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KLSAgICBUaGUgaW5wdXQgcGF0aCBj
YW4gdXNlIGVpdGhlciAnXFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgotICAgIFRoZSBub3Jt
YWxpemVkIHBhdGggYWx3YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgot
ICAgICIiIgotCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5wYXRoLnNlcCkKLSAg
ICBwYXRoID0gb3MucGF0aC5yZWFscGF0aChwYXRoKQotICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uo
J1xcJywgJy8nKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVmIF9jcmVhdGVfcGF0aF90b19yZXNv
dXJjZV9jb252ZXJ0ZXIoYmFzZV9kaXIpOgotICAgICIiIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0
IGNvbnZlcnRzIHRoZSBwYXRoIG9mIGEgV2ViU29ja2V0IGhhbmRsZXIgc291cmNlCi0gICAgZmls
ZSB0byBhIHJlc291cmNlIHN0cmluZyBieSByZW1vdmluZyB0aGUgcGF0aCB0byB0aGUgYmFzZSBk
aXJlY3RvcnkgZnJvbQotICAgIGl0cyBoZWFkLCByZW1vdmluZyBfU09VUkNFX1NVRkZJWCBmcm9t
IGl0cyB0YWlsLCBhbmQgcmVwbGFjaW5nIHBhdGgKLSAgICBzZXBhcmF0b3JzIGluIGl0IHdpdGgg
Jy8nLgotCi0gICAgQXJnczoKLSAgICAgICAgYmFzZV9kaXI6IHRoZSBwYXRoIHRvIHRoZSBiYXNl
IGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIGJhc2VfZGlyID0gX25vcm1hbGl6ZV9wYXRoKGJh
c2VfZGlyKQotCi0gICAgYmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCi0gICAgc3VmZml4X2xlbiA9
IGxlbihfU09VUkNFX1NVRkZJWCkKLQotICAgIGRlZiBjb252ZXJ0ZXIocGF0aCk6Ci0gICAgICAg
IGlmIG5vdCBwYXRoLmVuZHN3aXRoKF9TT1VSQ0VfU1VGRklYKToKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgICMgX25vcm1hbGl6ZV9wYXRoIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVz
ZSByZXNvbHZpbmcgc3ltbGluayBicmVha3MKLSAgICAgICAgIyBmb2xsb3dpbmcgcGF0aCBjaGVj
ay4KLSAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgICAgIGlmIG5v
dCBwYXRoLnN0YXJ0c3dpdGgoYmFzZV9kaXIpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgcmV0dXJuIHBhdGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCi0KLSAgICByZXR1cm4gY29u
dmVydGVyCi0KLQotZGVmIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKGRpcmVjdG9yeSk6
Ci0gICAgIiIiUmV0dXJucyBhIGdlbmVyYXRvciB0aGF0IGVudW1lcmF0ZXMgV2ViU29ja2V0IEhh
bmRsZXIgc291cmNlIGZpbGUgbmFtZXMKLSAgICBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgotICAg
ICIiIgotCi0gICAgZm9yIHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVj
dG9yeSk6Ci0gICAgICAgIGZvciBiYXNlIGluIGZpbGVzOgotICAgICAgICAgICAgcGF0aCA9IG9z
LnBhdGguam9pbihyb290LCBiYXNlKQotICAgICAgICAgICAgaWYgX1NPVVJDRV9QQVRIX1BBVFRF
Uk4uc2VhcmNoKHBhdGgpOgotICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKLQotCi1jbGFzcyBf
SGFuZGxlclN1aXRlKG9iamVjdCk6Ci0gICAgIiIiQSBoYW5kbGVyIHN1aXRlIGhvbGRlciBjbGFz
cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5z
ZmVyX2RhdGEsCi0gICAgICAgICAgICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgot
ICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQotICAg
ICAgICBzZWxmLnRyYW5zZmVyX2RhdGEgPSB0cmFuc2Zlcl9kYXRhCi0gICAgICAgIHNlbGYucGFz
c2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKLQotCi1k
ZWYgX3NvdXJjZV9oYW5kbGVyX2ZpbGUoaGFuZGxlcl9kZWZpbml0aW9uKToKLSAgICAiIiJTb3Vy
Y2UgYSBoYW5kbGVyIGRlZmluaXRpb24gc3RyaW5nLgotCi0gICAgQXJnczoKLSAgICAgICAgaGFu
ZGxlcl9kZWZpbml0aW9uOiBhIHN0cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRo
YXQgZGVmaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMu
Ci0gICAgIiIiCi0KLSAgICBnbG9iYWxfZGljID0ge30KLSAgICB0cnk6Ci0gICAgICAgIGV4ZWMg
aGFuZGxlcl9kZWZpbml0aW9uIGluIGdsb2JhbF9kaWMKLSAgICBleGNlcHQgRXhjZXB0aW9uOgot
ICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFuZGxl
cjonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5nZXRfc3RhY2tfdHJh
Y2UoKSkKLSAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCi0gICAg
dHJ5OgotICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0cmFj
dF9oYW5kbGVyKAotICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19IQU5E
U0hBS0VfSEFORExFUl9OQU1FKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHBhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKLSAgICAgICAgICAgIF9kZWZhdWx0X3Bh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKLSAgICByZXR1cm4gX0hhbmRsZXJTdWl0
ZSgKLSAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFORFNI
QUtFX0hBTkRMRVJfTkFNRSksCi0gICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2RpYywg
X1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKLSAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZV9oYW5kbGVyKQotCi0KLWRlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6Ci0g
ICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRo
ZSBnaXZlbiBkaWN0aW9uYXJ5Ci0gICAgZGljLgotICAgICIiIgotCi0gICAgaWYgbmFtZSBub3Qg
aW4gZGljOgotICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRlZmlu
ZWQuJyAlIG5hbWUpCi0gICAgaGFuZGxlciA9IGRpY1tuYW1lXQotICAgIGlmIG5vdCBjYWxsYWJs
ZShoYW5kbGVyKToKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5vdCBj
YWxsYWJsZS4nICUgbmFtZSkKLSAgICByZXR1cm4gaGFuZGxlcgotCi0KLWNsYXNzIERpc3BhdGNo
ZXIob2JqZWN0KToKLSAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KLQotICAg
IFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5kbGVy
cy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwgcm9vdF9kaXIs
IHNjYW5fZGlyPU5vbmUsCi0gICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9
VHJ1ZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgcm9vdF9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZp
bml0aW9uIGZpbGVzIGFyZQotICAgICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KLSAgICAgICAg
ICAgIHNjYW5fZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxl
cyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBh
IGRpcmVjdG9yeSB1bmRlciByb290X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRp
bmcgcm9vdF9kaXIgaXRzZWxmLiAgSWYgc2Nhbl9kaXIgaXMgTm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICByb290X2RpciBpcyB1c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNl
ZnVsCi0gICAgICAgICAgICAgICAgICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3Rf
ZGlyIGNvbnRhaW5zIG1hbnkKLSAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4K
LSAgICAgICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRs
ZXIgZmlsZXMgZXZlbiBpZiB0aGVpcgotICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBw
YXRoIGlzIG5vdCB1bmRlciByb290X2Rpci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5faGFu
ZGxlcl9zdWl0ZV9tYXAgPSB7fQotICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQot
ICAgICAgICBpZiBzY2FuX2RpciBpcyBOb25lOgotICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290
X2RpcgotICAgICAgICBpZiBub3Qgb3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0
aCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6Ci0gICAgICAg
ICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVj
dG9yeSB1bmRlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9k
aXI6JXMuJyAlIChzY2FuX2Rpciwgcm9vdF9kaXIpKQotICAgICAgICBzZWxmLl9zb3VyY2VfaGFu
ZGxlcl9maWxlc19pbl9kaXIoCi0gICAgICAgICAgICByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0KLSAgICBkZWYgYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfcmVzb3Vy
Y2VfcGF0aCwgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCk6Ci0gICAgICAgICIiIkFkZCByZXNvdXJj
ZSBwYXRoIGFsaWFzLgotCi0gICAgICAgIE9uY2UgYWRkZWQsIHJlcXVlc3QgdG8gYWxpYXNfcmVz
b3VyY2VfcGF0aCB3b3VsZCBiZSBoYW5kbGVkIGJ5Ci0gICAgICAgIGhhbmRsZXIgcmVnaXN0ZXJl
ZCBmb3IgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgYWxpYXNfcmVzb3VyY2VfcGF0aDogYWxpYXMgcmVzb3VyY2UgcGF0aAotICAgICAgICAgICAg
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aDogZXhpc3RpbmcgcmVzb3VyY2UgcGF0aAotICAgICAgICAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuX2hhbmRs
ZXJfc3VpdGVfbWFwW2V4aXN0aW5nX3Jlc291cmNlX3BhdGhdCi0gICAgICAgICAgICBzZWxmLl9o
YW5kbGVyX3N1aXRlX21hcFthbGlhc19yZXNvdXJjZV9wYXRoXSA9IGhhbmRsZXJfc3VpdGUKLSAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCkKLQotICAgIGRlZiBzb3VyY2Vfd2FybmluZ3Mo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiB3YXJuaW5ncyBpbiBzb3VyY2luZyBoYW5kbGVycy4i
IiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fc291cmNlX3dhcm5pbmdzCi0KLSAgICBkZWYgZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJEbyBleHRyYSBjaGVj
a2luZyBpbiBXZWJTb2NrZXQgaGFuZHNoYWtlLgotCi0gICAgICAgIFNlbGVjdCBhIGhhbmRsZXIg
YmFzZWQgb24gcmVxdWVzdC51cmkgYW5kIGNhbGwgaXRzCi0gICAgICAgIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIGZ1bmN0aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgRGlzcGF0Y2hFeGNlcHRpb246IHdoZW4gaGFuZGxlciB3YXMgbm90IGZvdW5kCi0gICAgICAg
ICAgICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uOiB3aGVuIHVzZXIgaGFuZGxlciBhYm9ydCBjb25u
ZWN0aW9uCi0gICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb246IHdoZW4gb3BlbmluZyBoYW5k
c2hha2UgZmFpbGVkCi0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxm
LmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRs
ZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdO
byBoYW5kbGVyIGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAgICAgZG9fZXh0
cmFfaGFuZHNoYWtlXyA9IGhhbmRsZXJfc3VpdGUuZG9fZXh0cmFfaGFuZHNoYWtlCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8ocmVxdWVzdCkKLSAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
IyBSZS1yYWlzZSB0byB0ZWxsIHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBmaW5pc2gg
dGhpcwotICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhbnkgZXJyb3Iu
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdXRpbC5nZXRfc3RhY2tfdHJh
Y2UoKSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlICgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKSwKLSAgICAgICAgICAg
ICAgICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlIGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRp
b24oZSwgY29tbW9uLkhUVFBfU1RBVFVTX0ZPUkJJRERFTikKLQotICAgIGRlZiB0cmFuc2Zlcl9k
YXRhKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJMZXQgYSBoYW5kbGVyIHRyYW5zZmVyX2Rh
dGEgd2l0aCBhIFdlYlNvY2tldCBjbGllbnQuCi0KLSAgICAgICAgU2VsZWN0IGEgaGFuZGxlciBi
YXNlZCBvbiByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxsIGl0cwotICAgICAgICB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEgZnVuY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAg
ICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQKLSAgICAg
ICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFib3J0IGNv
bm5lY3Rpb24KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogVGVybWlu
YXRlIHVuZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYgcG9zc2libGUuCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGlmIG11eC51c2VfbXV4KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIG11
eC5zdGFydChyZXF1ZXN0LCBzZWxmKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291
cmNlKQotICAgICAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X3Jlc291cmNlKQotICAgICAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0
ZS50cmFuc2Zlcl9kYXRhCi0gICAgICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkK
LQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAgICMg
Q2F0Y2ggbm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRsZXIgZGlkbid0IGhhbmRsZS4K
LSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgbXNndXRpbC5CYWRPcGVyYXRpb25F
eGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAg
ICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKLSAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBJbnZh
bGlkRnJhbWVFeGNlcHRpb24gbXVzdCBiZSBjYXVnaHQgYmVmb3JlCi0gICAgICAgICAgICAjIENv
bm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIHRoYXQgY2F0Y2hlcyBJbnZhbGlkRnJhbWVFeGNl
cHRpb24uCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2Vw
dGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1VO
U1VQUE9SVEVEX0RBVEEpCi0gICAgICAgIGV4Y2VwdCBzdHJlYW0uSW52YWxpZFVURjhFeGNlcHRp
b24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAg
Y29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKLSAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgICMgQW55IG90aGVyIGV4Y2VwdGlvbnMgYXJlIGZvcndhcmRlZCB0byB0aGUg
Y2FsbGVyIG9mIHRoaXMKLSAgICAgICAgICAgICMgZnVuY3Rpb24uCi0gICAgICAgICAgICB1dGls
LnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJyVzIHJhaXNl
ZCBleGNlcHRpb24gZm9yICVzOiAnICUgKAotICAgICAgICAgICAgICAgICAgICBfVFJBTlNGRVJf
REFUQV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3NfcmVzb3VyY2UpLAotICAgICAgICAgICAgICAg
IGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hh
a2Uoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZv
ciByZXNwb25kaW5nIGNsaWVudCBpbml0aWF0ZWQgY2xvc2luZwotICAgICAgICBoYW5kc2hha2Uu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVy
X3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMg
Tm9uZToKLSAgICAgICAgICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNo
YWtlX2hhbmRsZXIocmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2
ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi0gICAgZGVmIGdldF9oYW5kbGVyX3N1aXRl
KHNlbGYsIHJlc291cmNlKToKLSAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25l
IGZvciBleHRyYSBoYW5kc2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQotICAgICAgICBmb3IgZGF0
YSB0cmFuc2ZlcikgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVj
dC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZnJhZ21lbnQgPSBOb25lCi0gICAgICAgIGlmICcj
JyBpbiByZXNvdXJjZToKLSAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNl
LnNwbGl0KCcjJywgMSkKLSAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgotICAgICAgICAgICAg
cmVzb3VyY2UgPSByZXNvdXJjZS5zcGxpdCgnPycsIDEpWzBdCi0gICAgICAgIGhhbmRsZXJfc3Vp
dGUgPSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCi0gICAgICAgIGlmIGhh
bmRsZXJfc3VpdGUgYW5kIGZyYWdtZW50OgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dlYlNvY2tldCBVUklzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKLQotICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKAotICAgICAgICBzZWxmLCByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpOgotICAgICAgICAiIiJTb3VyY2UgYWxsIHRoZSBo
YW5kbGVyIHNvdXJjZSBmaWxlcyBpbiB0aGUgc2Nhbl9kaXIgZGlyZWN0b3J5LgotCi0gICAgICAg
IFRoZSByZXNvdXJjZSBwYXRoIGlzIGRldGVybWluZWQgcmVsYXRpdmUgdG8gcm9vdF9kaXIuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgV2UgYnVpbGQgYSBtYXAgZnJvbSByZXNvdXJjZSB0byBo
YW5kbGVyIGNvZGUgYXNzdW1pbmcgdGhhdCB0aGVyZSdzCi0gICAgICAgICMgb25seSBvbmUgcGF0
aCBmcm9tIHJvb3RfZGlyIHRvIHNjYW5fZGlyIGFuZCBpdCBjYW4gYmUgb2J0YWluZWQgYnkKLSAg
ICAgICAgIyBjb21wYXJpbmcgcmVhbHBhdGggb2YgdGhlbS4KLQotICAgICAgICAjIEhlcmUgd2Ug
Y2Fubm90IHVzZSBhYnNwYXRoLiBTZWUKLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MDMKLQotICAgICAgICBjb252ZXJ0ID0gX2NyZWF0ZV9wYXRo
X3RvX3Jlc291cmNlX2NvbnZlcnRlcihyb290X2RpcikKLSAgICAgICAgc2Nhbl9yZWFscGF0aCA9
IG9zLnBhdGgucmVhbHBhdGgoc2Nhbl9kaXIpCi0gICAgICAgIHJvb3RfcmVhbHBhdGggPSBvcy5w
YXRoLnJlYWxwYXRoKHJvb3RfZGlyKQotICAgICAgICBmb3IgcGF0aCBpbiBfZW51bWVyYXRlX2hh
bmRsZXJfZmlsZV9wYXRocyhzY2FuX3JlYWxwYXRoKToKLSAgICAgICAgICAgIGlmIChub3QgYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpciBhbmQKLSAgICAgICAgICAgICAgICAobm90IG9z
LnBhdGgucmVhbHBhdGgocGF0aCkuc3RhcnRzd2l0aChyb290X3JlYWxwYXRoKSkpOgotICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0Nhbm9u
aWNhbCBwYXRoIG9mICVzIGlzIG5vdCB1bmRlciByb290IGRpcmVjdG9yeScgJQotICAgICAgICAg
ICAgICAgICAgICBwYXRoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IF9zb3VyY2VfaGFuZGxlcl9maWxl
KG9wZW4ocGF0aCkucmVhZCgpKQotICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBlbmQoJyVzOiAl
cycgJSAocGF0aCwgZSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJl
c291cmNlID0gY29udmVydChwYXRoKQotICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAg
ICdQYXRoIHRvIHJlc291cmNlIGNvbnZlcnNpb24gb24gJXMgZmFpbGVkJyAlIHBhdGgpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2Nv
bnZlcnQocGF0aCldID0gaGFuZGxlcl9zdWl0ZQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDlhOWZkY2Y5NDc5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4ODUgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0Lmh0dHBf
aGVhZGVyX3V0aWwgaW1wb3J0IHF1b3RlX2lmX25lY2Vzc2FyeQotCi0KLSMgVGhlIGxpc3Qgb2Yg
YXZhaWxhYmxlIHNlcnZlciBzaWRlIGV4dGVuc2lvbiBwcm9jZXNzb3IgY2xhc3Nlcy4KLV9hdmFp
bGFibGVfcHJvY2Vzc29ycyA9IHt9Ci1fY29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzID0gW10K
LQotCi1jbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QK
LSAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0Ci0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBjaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVyX3By
b2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRf
YWN0aXZlKHNlbGYsIGFjdGl2ZSk6Ci0gICAgICAgIHNlbGYuX2FjdGl2ZSA9IGFjdGl2ZQotCi0g
ICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2FjdGl2ZQotCi0g
ICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6Ci0gICAg
ICAgIGlmIG5vdCBzZWxmLl9hY3RpdmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J0V4dGVuc2lvbiAlcyBpcyBkZWFjdGl2YXRlZCcsIHNlbGYubmFtZSgpKQotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYuX2dldF9leHRlbnNpb25fcmVz
cG9uc2VfaW50ZXJuYWwoKQotICAgICAgICBpZiByZXNwb25zZSBpcyBOb25lOgotICAgICAgICAg
ICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBk
ZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToK
LSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVh
bV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5fYWN0aXZlOgotICAgICAgICAgICAgc2VsZi5f
c2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc3RyZWFtX29wdGlvbnMpCi0KLQotZGVmIF9s
b2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgIGxvZ2dlciwgb3JpZ2luYWxf
Ynl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdlX3JhdGlvKToKLSAgICAjIFByaW50IGluZiB3
aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0gICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAg
ICBpZiBvcmlnaW5hbF9ieXRlcyAhPSAwOgotICAgICAgICByYXRpbyA9IGZsb2F0KGZpbHRlcmVk
X2J5dGVzKSAvIG9yaWdpbmFsX2J5dGVzCi0KLSAgICBsb2dnZXIuZGVidWcoJ091dGdvaW5nIGNv
bXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTogJWYpJyAlCi0gICAgICAgICAgICAocmF0aW8s
IGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfbG9nX2luY29taW5nX2NvbXByZXNzaW9uX3JhdGlv
KAotICAgICAgICBsb2dnZXIsIHJlY2VpdmVkX2J5dGVzLCBmaWx0ZXJlZF9ieXRlcywgYXZlcmFn
ZV9yYXRpbyk6Ci0gICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgot
ICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCi0gICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKLSAg
ICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcwotCi0g
ICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6
ICVmKScgJQotICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3JhdGlvKSkKLQotCi1kZWYgX3Bh
cnNlX3dpbmRvd19iaXRzKGJpdHMpOgotICAgICIiIlJldHVybiBwYXJzZWQgaW50ZWdlciB2YWx1
ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBjb25mb3JtcyB0byB0aGUKLSAgICBncmFtbWFyIG9mIHRo
ZSB3aW5kb3cgYml0cyBleHRlbnNpb24gcGFyYW1ldGVycy4KLSAgICAiIiIKLQotICAgIGlmIGJp
dHMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQn
KQotCi0gICAgIyBGb3Igbm9uIGludGVnZXIgdmFsdWVzIHN1Y2ggYXMgIjEwLjAiLCBWYWx1ZUVy
cm9yIHdpbGwgYmUgcmFpc2VkLgotICAgIGludF9iaXRzID0gaW50KGJpdHMpCi0KLSAgICAjIEZp
cnN0IGNvbmRpdGlvbiBpcyB0byBkcm9wIGxlYWRpbmcgemVybyBjYXNlIGUuZy4gIjA4Ii4KLSAg
ICBpZiBiaXRzICE9IHN0cihpbnRfYml0cykgb3IgaW50X2JpdHMgPCA4IG9yIGludF9iaXRzID4g
MTU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsdWU6ICVyJyAlIGJpdHMp
Ci0KLSAgICByZXR1cm4gaW50X2JpdHMKLQotCi1jbGFzcyBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRv
cihvYmplY3QpOgotICAgICIiIlN0b3JlcyB0b3RhbCBieXRlcyBvZiBvcmlnaW5hbCBhbmQgcmVz
dWx0IGRhdGEsIGFuZCBjYWxjdWxhdGVzIGF2ZXJhZ2UKLSAgICByZXN1bHQgLyBvcmlnaW5hbCBy
YXRpby4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5f
dG90YWxfb3JpZ2luYWxfYnl0ZXMgPSAwCi0gICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRl
cyA9IDAKLQotICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAg
ICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQotCi0gICAgZGVmIGFkZF9yZXN1
bHRfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMg
Kz0gdmFsdWUKLQotICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiAoZmxv
YXQoc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzKSAvCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3RvdGFsX29yaWdpbmFsX2J5dGVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IGZsb2F0KCdpbmYnKQotCi0KLWNsYXNzIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiImRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvZHJhZnQtdHlvc2hpbm8taHliaS13ZWJzb2NrZXQtcGVyZnJhbWUtZGVmbGF0
ZQotICAgICIiIgotCi0gICAgX1dJTkRPV19CSVRTX1BBUkFNID0gJ21heF93aW5kb3dfYml0cycK
LSAgICBfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdub19jb250ZXh0X3Rha2VvdmVyJwot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9j
ZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVzcG9u
c2Vfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRf
dGFrZW92ZXIgPSBGYWxzZQotICAgICAgICBzZWxmLl9iZmluYWwgPSBGYWxzZQotCi0gICAgICAg
ICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxp
ZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8g
dGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0gICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9y
KCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJl
Y2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5n
IGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQotICAgICAgICBzZWxm
Ll9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3Vs
YXRvcigpCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZM
QVRFX0ZSQU1FX0VYVEVOU0lPTgotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2lu
dGVybmFsKHNlbGYpOgotICAgICAgICAjIEFueSB1bmtub3duIHBhcmFtZXRlciB3aWxsIGJlIGp1
c3QgaWdub3JlZC4KLQotICAgICAgICB3aW5kb3dfYml0cyA9IE5vbmUKLSAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNKToKLSAgICAg
ICAgICAgIHdpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAot
ICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIHdpbmRvd19iaXRzID0gX3BhcnNlX3dpbmRvd19iaXRzKHdpbmRv
d19iaXRzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBub19jb250ZXh0X3Rha2VvdmVyID0gc2VsZi5fcmVx
dWVzdC5oYXNfcGFyYW1ldGVyKAotICAgICAgICAgICAgc2VsZi5fTk9fQ09OVEVYVF9UQUtFT1ZF
Ul9QQVJBTSkKLSAgICAgICAgaWYgKG5vX2NvbnRleHRfdGFrZW92ZXIgYW5kCi0gICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyID0gdXRpbC5fUkZD
MTk3OURlZmxhdGVyKAotICAgICAgICAgICAgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVlCi0KLSAgICAg
ICAgcmVzcG9uc2UgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKHNlbGYuX3JlcXVlc3QubmFt
ZSgpKQotCi0gICAgICAgIGlmIHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBz
ZWxmLl9XSU5ET1dfQklUU19QQVJBTSwgc3RyKHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzKSkK
LSAgICAgICAgaWYgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcjoKLSAgICAgICAg
ICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5fTk9fQ09O
VEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
Ci0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAgICAgICAgICAgJ3JlcXVl
c3Q6IHdpbmRvd19iaXRzPSVzOyBub19jb250ZXh0X3Rha2VvdmVyPSVyLCAnCi0gICAgICAgICAg
ICAncmVzcG9uc2U6IHdpbmRvd193Yml0cz0lczsgbm9fY29udGV4dF90YWtlb3Zlcj0lciknICUK
LSAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0Lm5hbWUoKSwKLSAgICAgICAgICAgICB3aW5kb3df
Yml0cywKLSAgICAgICAgICAgICBub19jb250ZXh0X3Rha2VvdmVyLAotICAgICAgICAgICAgIHNl
bGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzLAotICAgICAgICAgICAgIHNlbGYuX3Jlc3BvbnNlX25v
X2NvbnRleHRfdGFrZW92ZXIpKQotCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVm
IF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0K
LSAgICAgICAgY2xhc3MgX091dGdvaW5nRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9
IHBhcmVudAotCi0gICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wYXJlbnQuX291dGdvaW5nX2ZpbHRlcihmcmFtZSkKLQotICAgICAgICBj
bGFzcyBfSW5jb21pbmdGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0K
LSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHNl
bGYuX3BhcmVudC5faW5jb21pbmdfZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIHN0cmVhbV9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgX091dGdvaW5n
RmlsdGVyKHNlbGYpKQotICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0
ZXJzLmluc2VydCgKLSAgICAgICAgICAgIDAsIF9JbmNvbWluZ0ZpbHRlcihzZWxmKSkKLQotICAg
IGRlZiBzZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxm
Ll9yZXNwb25zZV93aW5kb3dfYml0cyA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X3Jlc3BvbnNlX25v
X2NvbnRleHRfdGFrZW92ZXIoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9yZXNwb25zZV9u
b19jb250ZXh0X3Rha2VvdmVyID0gdmFsdWUKLQotICAgIGRlZiBzZXRfYmZpbmFsKHNlbGYsIHZh
bHVlKToKLSAgICAgICAgc2VsZi5fYmZpbmFsID0gdmFsdWUKLQotICAgIGRlZiBlbmFibGVfb3V0
Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5n
ID0gVHJ1ZQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0g
ICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nID0gRmFsc2UKLQotICAgIGRlZiBfb3V0Z29p
bmdfZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgIiIiVHJhbnNmb3JtIG91dGdvaW5nIGZy
YW1lcy4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9ubHkgYnkKLSAgICAgICAgYW4gX091dGdvaW5n
RmlsdGVyIGluc3RhbmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBvcmlnaW5hbF9wYXlsb2Fk
X3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBv
cmlnaW5hbF9wYXlsb2FkX3NpemUpCi0KLSAgICAgICAgaWYgKG5vdCBzZWxmLl9jb21wcmVzc19v
dXRnb2luZyBvcgotICAgICAgICAgICAgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9w
Y29kZSkpOgotICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmFkZF9yZXN1bHRfYnl0ZXMoCi0gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxv
YWRfc2l6ZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZyYW1lLnBheWxvYWQgPSBz
ZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAgICAgICAgICAgIGZyYW1lLnBheWxvYWQs
IGJmaW5hbD1zZWxmLl9iZmluYWwpCi0gICAgICAgIGZyYW1lLnJzdjEgPSAxCi0KLSAgICAgICAg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYu
X291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAg
ICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBfbG9nX291dGdv
aW5nX2NvbXByZXNzaW9uX3JhdGlvKAotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlciwKLSAg
ICAgICAgICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJh
Z2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQotCi0gICAgZGVmIF9pbmNv
bWluZ19maWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJUcmFuc2Zvcm0gaW5jb21pbmcg
ZnJhbWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBieQotICAgICAgICBhbiBfSW5jb21p
bmdGaWx0ZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJlY2VpdmVkX3BheWxv
YWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAgICBy
ZWNlaXZlZF9wYXlsb2FkX3NpemUpCi0KLSAgICAgICAgaWYgZnJhbWUucnN2MSAhPSAxIG9yIGNv
bW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgotICAgICAgICAgICAgc2VsZi5f
aW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAg
ICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQotICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIuZmls
dGVyKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX2lu
Y29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfb3JpZ2luYWxfYnl0ZXMoCi0gICAg
ICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfaW5jb21p
bmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAg
ICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLQotX2F2YWlsYWJsZV9w
cm9jZXNzb3JzW2NvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTl0gPSAoCi0gICAgRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5h
cHBlbmQoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotCi1fYXZhaWxhYmxlX3Byb2Nl
c3NvcnNbY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OXSA9ICgKLSAgICBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Npb25fZXh0ZW5zaW9uX25h
bWVzLmFwcGVuZChjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLQot
ZGVmIF9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoZGF0YSk6Ci0gICAgIiIiUGFyc2VzIHRoZSB2
YWx1ZSBvZiAibWV0aG9kIiBleHRlbnNpb24gcGFyYW1ldGVyLiIiIgotCi0gICAgcmV0dXJuIGNv
bW1vbi5wYXJzZV9leHRlbnNpb25zKGRhdGEpCi0KLQotZGVmIF9jcmVhdGVfYWNjZXB0ZWRfbWV0
aG9kX2Rlc2MobWV0aG9kX25hbWUsIG1ldGhvZF9wYXJhbXMpOgotICAgICIiIkNyZWF0ZXMgYWNj
ZXB0ZWQtbWV0aG9kLWRlc2MgZnJvbSBnaXZlbiBtZXRob2QgbmFtZSBhbmQgcGFyYW1ldGVycyIi
IgotCi0gICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihtZXRob2RfbmFt
ZSkKLSAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbWV0aG9kX3BhcmFtczoKLSAgICAgICAgZXh0ZW5z
aW9uLmFkZF9wYXJhbWV0ZXIobmFtZSwgdmFsdWUpCi0gICAgcmV0dXJuIGNvbW1vbi5mb3JtYXRf
ZXh0ZW5zaW9uKGV4dGVuc2lvbikKLQotCi1jbGFzcyBDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nl
c3NvckJhc2UoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKLSAgICAiIiJCYXNlIGNsYXNz
IGZvciBwZXJmcmFtZS1jb21wcmVzcyBhbmQgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24u
IiIiCi0KLSAgICBfTUVUSE9EX1BBUkFNID0gJ21ldGhvZCcKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXF1ZXN0KToKLSAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5p
dF9fKHNlbGYsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSA9IE5v
bmUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yID0gTm9uZQotICAgICAgICBz
ZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vayA9IE5vbmUKLQotICAgIGRlZiBuYW1lKHNl
bGYpOgotICAgICAgICByZXR1cm4gJycKLQotICAgIGRlZiBfbG9va3VwX2NvbXByZXNzaW9uX3By
b2Nlc3NvcihzZWxmLCBtZXRob2RfZGVzYyk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBk
ZWYgX2dldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgICIi
Ikxvb2tzIHVwIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzb3IgYmFzZWQgb24gdGhlIHNlbGYuX3Jl
cXVlc3QgYW5kCi0gICAgICAgICAgIHJldHVybnMgdGhlIGNvbXByZXNzaW9uIHByb2Nlc3Nvcidz
IHJlc3BvbnNlLgotICAgICAgICAiIiIKLQotICAgICAgICBtZXRob2RfbGlzdCA9IHNlbGYuX3Jl
cXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZShzZWxmLl9NRVRIT0RfUEFSQU0pCi0gICAgICAgIGlm
IG1ldGhvZF9saXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBt
ZXRob2RzID0gX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZChtZXRob2RfbGlzdCkKLSAgICAgICAg
aWYgbWV0aG9kcyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgY29t
cmVzc2lvbl9wcm9jZXNzb3IgPSBOb25lCi0gICAgICAgICMgVGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24gdHJpZXMgb25seSB0aGUgZmlyc3QgbWV0aG9kIHRoYXQgbWF0Y2hlcwotICAgICAgICAj
IHN1cHBvcnRlZCBhbGdvcml0aG0uIEZvbGxvd2luZyBtZXRob2RzIGFyZW4ndCB0cmllZCBldmVu
IGlmIHRoZQotICAgICAgICAjIGZpcnN0IG9uZSBpcyByZWplY3RlZC4KLSAgICAgICAgIyBUT0RP
KGJhc2hpKTogTmVlZCB0byBjbGFyaWZ5IHRoaXMgYmVoYXZpb3IuCi0gICAgICAgIGZvciBtZXRo
b2RfZGVzYyBpbiBtZXRob2RzOgotICAgICAgICAgICAgY29tcHJlc3Npb25fcHJvY2Vzc29yID0g
c2VsZi5fbG9va3VwX2NvbXByZXNzaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBtZXRo
b2RfZGVzYykKLSAgICAgICAgICAgIGlmIGNvbXByZXNzaW9uX3Byb2Nlc3NvciBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSA9IG1ldGhv
ZF9kZXNjLm5hbWUoKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGNvbXByZXNz
aW9uX3Byb2Nlc3NvciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAg
ICBpZiBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vazoKLSAgICAgICAgICAgIHNlbGYu
X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rKGNvbXByZXNzaW9uX3Byb2Nlc3NvcikKLQotICAg
ICAgICBwcm9jZXNzb3JfcmVzcG9uc2UgPSBjb21wcmVzc2lvbl9wcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIGlmIHByb2Nlc3Nvcl9yZXNwb25zZSBpcyBOb25lOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vz
c29yID0gY29tcHJlc3Npb25fcHJvY2Vzc29yCi0gICAgICAgIHJldHVybiBwcm9jZXNzb3JfcmVz
cG9uc2UKLQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToK
LSAgICAgICAgcHJvY2Vzc29yX3Jlc3BvbnNlID0gc2VsZi5fZ2V0X2NvbXByZXNzaW9uX3Byb2Nl
c3Nvcl9yZXNwb25zZSgpCi0gICAgICAgIGlmIHByb2Nlc3Nvcl9yZXNwb25zZSBpcyBOb25lOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25zZSA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCi0gICAgICAgIGFjY2VwdGVkX21l
dGhvZF9kZXNjID0gX2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVzYygKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fbWV0aG9kX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvcl9yZXNwb25zZS5nZXRfcGFy
YW1ldGVycygpKQotICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX01FVEhPRF9Q
QVJBTSwgYWNjZXB0ZWRfbWV0aG9kX2Rlc2MpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygK
LSAgICAgICAgICAgICdFbmFibGUgJXMgZXh0ZW5zaW9uIChtZXRob2Q6ICVzKScgJQotICAgICAg
ICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgpLCBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFt
ZSkpCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0
aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIGlmIHNlbGYuX2Nv
bXByZXNzaW9uX3Byb2Nlc3NvciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1f
b3B0aW9ucykKLQotICAgIGRlZiBzZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2soc2VsZiwg
aG9vayk6Ci0gICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rID0gaG9vawot
Ci0gICAgZGVmIGdldF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0
ZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIi
InBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24gcHJvY2Vzc29yLiBJdCdzIGFsc28gdXNlZCBm
b3IKLSAgICBwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbiB3aGVuIHRoZSBkZWZsYXRlIG1l
dGhvZCBpcyBjaG9zZW4uCi0KLSAgICBTcGVjaWZpY2F0aW9uOgotICAgIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4Ci0g
ICAgIiIiCi0KLSAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJwotICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKLSAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJwotICAgIF9DTElFTlRfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkcmFmdDA4PVRydWUpOgotICAgICAgICAiIiJDb25zdHJ1
Y3QgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IKLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgZHJhZnQwODogRm9sbG93IHRoZSBjb25zdHJhaW50cyBvbiB0aGUgcGFyYW1l
dGVycyB0aGF0IHdlcmUgbm90Ci0gICAgICAgICAgICAgICAgc3BlY2lmaWVkIGZvciBwZXJtZXNz
YWdlLWNvbXByZXNzIGJ1dCBhcmUgc3BlY2lmaWVkIGZvcgotICAgICAgICAgICAgICAgIHBlcm1l
c3NhZ2UtZGVmbGF0ZSBhcyBvbgotICAgICAgICAgICAgICAgIGRyYWZ0LWlldGYtaHliaS1wZXJt
ZXNzYWdlLWNvbXByZXNzaW9uLTA4LgotICAgICAgICAiIiIKLQotICAgICAgICBFeHRlbnNpb25Q
cm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcHJl
ZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX2NsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9kcmFmdDA4ID0g
ZHJhZnQwOAotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnZGVmbGF0ZScK
LQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKLSAgICAg
ICAgaWYgc2VsZi5fZHJhZnQwODoKLSAgICAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuX3JlcXVl
c3QuZ2V0X3BhcmFtZXRlcl9uYW1lcygpOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGlu
IFtzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklU
U19QQVJBTV06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVW5rbm93
biBwYXJhbWV0ZXI6ICVyJywgbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQW55IHVua25vd24gcGFyYW1ldGVyIHdpbGwg
YmUganVzdCBpZ25vcmVkLgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHNlcnZlcl9tYXhf
d2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRl
cihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKToKLSAgICAgICAgICAgIHNlcnZl
cl9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cyA9
IF9wYXJzZV93aW5kb3dfYml0cygKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BB
UkFNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIgPSBz
ZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9f
Q09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKLSAgICAgICAgaWYgKHNlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVl
KAotICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFt
ZXRlciBtdXN0IG5vdCBoYXZlIGEgdmFsdWU6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZy
b20gYSBjbGllbnQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsaWVudCBjYW4KLSAgICAgICAgIyBh
Y2NlcHQgY2xpZW50X21heF93aW5kb3dfYml0cyBmcm9tIGEgc2VydmVyIG9yIG5vdC4KLSAgICAg
ICAgY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJh
bWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQot
ICAgICAgICBpZiAoc2VsZi5fZHJhZnQwOCBhbmQKLSAgICAgICAgICAgIGNsaWVudF9jbGllbnRf
bWF4X3dpbmRvd19iaXRzIGFuZAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1l
dGVyX3ZhbHVlKAotICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNf
UEFSQU0pIGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMg
cGFyYW1ldGVyIG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnY2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJB
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2xpZW50X21heF93aW5k
b3dfYml0cykKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3
OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIHNlcnZlcl9t
YXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgICAgICMg
Tm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2VzIGNvbXByZXNzZWQgd2l0
aCB3aW5kb3cKLSAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVzcyBvZiB0aGUgY2xpZW50
X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQotICAgICAgICAjIHNlbnQgdG8gdGhlIGNsaWVu
dC4KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRl
cigpCi0KLSAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKAot
ICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIpCi0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKEZhbHNlKQotICAgICAgICBz
ZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLQotICAgICAg
ICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1l
KCkpCi0KLSAgICAgICAgaWYgc2VydmVyX21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5f
U0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAgICAgICAgICAgICBzdHIoc2VydmVy
X21heF93aW5kb3dfYml0cykpCi0KLSAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92
ZXI6Ci0gICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKAotICAgICAgICAgICAgICAg
IHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQotCi0gICAgICAg
IGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgaWYgc2VsZi5fZHJhZnQwOCBhbmQgbm90IGNsaWVudF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUHJvY2Vzc29y
IGlzIGNvbmZpZ3VyZWQgdG8gdXNlICVzIGJ1dCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0aGUgY2xpZW50IGNhbm5vdCBhY2NlcHQgaXQnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQot
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICByZXNwb25zZS5hZGRfcGFy
YW1ldGVyKAotICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFS
QU0sCi0gICAgICAgICAgICAgICAgc3RyKHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRv
d19iaXRzKSkKLQotICAgICAgICBpZiBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcjoK
LSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKLSAg
ICAgICAgICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAg
ICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKLSAgICAgICAgICAgICdyZXNw
b25zZTogY2xpZW50X21heF93aW5kb3dfYml0cz0lczsgJwotICAgICAgICAgICAgJ2NsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyPSVyKScgJQotICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFt
ZSgpLAotICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAg
c2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCi0gICAgICAgICAgICAgc2VsZi5fcHJlZmVycmVk
X2NsaWVudF9tYXhfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIpKQotCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIF9z
ZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAg
ICAgIHNlbGYuX2ZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9ucykKLQot
ICAgIGRlZiBzZXRfY2xpZW50X21heF93aW5kb3dfYml0cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAg
ICIiIklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQotICAg
ICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIgdG8gdGhlIGhh
bmRzaGFrZSByZXNwb25zZSwKLSAgICAgICAgYnV0IGRvZXNuJ3QgcmVkdWNlIHRoZSBMWjc3IHNs
aWRpbmcgd2luZG93IHNpemUgb2YgaXRzIGluZmxhdGVyLgotICAgICAgICBJLmUuLCB5b3UgY2Fu
IHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQgY2Fubm90Ci0g
ICAgICAgIHJlZHVjZSBtZW1vcnkgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLQotICAgICAgICBJZiB0
aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgd2l0aCBUcnVlIGFuZCBhbiBvZmZlciB3aXRob3V0
IHRoZQotICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIg
aXMgcmVjZWl2ZWQsCi0gICAgICAgIC0gKFdoZW4gcHJvY2Vzc2luZyB0aGUgcGVybWVzc2FnZS1k
ZWZsYXRlIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKLSAgICAgICAgICBkZWNsaW5lcyB0aGUg
cmVxdWVzdC4KLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWNvbXBy
ZXNzIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKLSAgICAgICAgICBhY2NlcHRzIHRoZSByZXF1
ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21heF93
aW5kb3dfYml0cyA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyKHNlbGYsIHZhbHVlKToKLSAgICAgICAgIiIiSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVk
LCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
IGV4dGVuc2lvbiBwYXJhbWV0ZXIgdG8gdGhlIGhhbmRzaGFrZQotICAgICAgICByZXNwb25zZSwg
YnV0IGRvZXNuJ3QgcmVzZXQgaW5mbGF0ZXIgZm9yIGVhY2ggbWVzc2FnZS4gSS5lLiwgeW91IGNh
bgotICAgICAgICB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQgaW1wbGVtZW50YXRpb24gYnV0
IGNhbm5vdCByZWR1Y2UgbWVtb3J5Ci0gICAgICAgIHVzYWdlIG9mIHRoaXMgY2xhc3MuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gdmFs
dWUKLQotICAgIGRlZiBzZXRfYmZpbmFsKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9iZmluYWwodmFsdWUpCi0KLSAgICBkZWYgZW5hYmxlX291dGdvaW5nX2NvbXByZXNz
aW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2Vu
YWJsZWQoVHJ1ZSkKLQotICAgIGRlZiBkaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKHNlbGYp
OgotICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoRmFs
c2UpCi0KLQotY2xhc3MgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKG9iamVjdCk6Ci0gICAgIiIi
QSBmcmFtZXIgZm9yIGV4dGVuc2lvbnMgd2l0aCBwZXItbWVzc2FnZSBERUZMQVRFIGZlYXR1cmUu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGVmbGF0ZV9tYXhfd2luZG93X2JpdHMsIGRl
ZmxhdGVfbm9fY29udGV4dF90YWtlb3Zlcik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIg
PSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCi0gICAgICAgICAgICBkZWZsYXRlX21heF93aW5kb3df
Yml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgICAgIHNlbGYuX3JmYzE5
NzlfaW5mbGF0ZXIgPSB1dGlsLl9SRkMxOTc5SW5mbGF0ZXIoKQotCi0gICAgICAgIHNlbGYuX2Jm
aW5hbCA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9
IEZhbHNlCi0KLSAgICAgICAgIyBUcnVlIGlmIGEgbWVzc2FnZSBpcyBmcmFnbWVudGVkIGFuZCBj
b21wcmVzc2lvbiBpcyBvbmdvaW5nLgotICAgICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5nID0g
RmFsc2UKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAgKFRvdGFsIG91dGdv
aW5nIGJ5dGVzIHN1cHBsaWVkIHRvIHRoaXMgZmlsdGVyKSAvCi0gICAgICAgICMgICAgIChUb3Rh
bCBieXRlcyBzZW50IHRvIHRoZSBuZXR3b3JrIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQot
ICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFn
ZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICAgICAgIyBDYWxjdWxhdGVzCi0gICAgICAgICMgICAg
IChUb3RhbCBieXRlcyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrKSAvCi0gICAgICAgICMgICAg
IChUb3RhbCBpbmNvbWluZyBieXRlcyBvYnRhaW5lZCBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRl
cikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2
ZXJhZ2VSYXRpb0NhbGN1bGF0b3IoKQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUp
OgotICAgICAgICBzZWxmLl9iZmluYWwgPSB2YWx1ZQotCi0gICAgZGVmIHNldF9jb21wcmVzc19v
dXRnb2luZ19lbmFibGVkKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0
Z29pbmdfZW5hYmxlZCA9IHZhbHVlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlLCBkZWNvbXByZXNzKToKLSAgICAgICAgaWYgbm90IGRlY29tcHJlc3M6
Ci0gICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgICAgIHJlY2VpdmVkX3BheWxvYWRf
c2l6ZSA9IGxlbihtZXNzYWdlKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlv
X2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAgICByZWNlaXZlZF9w
YXlsb2FkX3NpemUpCi0KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIu
ZmlsdGVyKG1lc3NhZ2UpCi0KLSAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1l
c3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5h
ZGRfb3JpZ2luYWxfYnl0ZXMoCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXpl
KQotCi0gICAgICAgIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6
ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAg
ICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3Jh
dGlvKCkpCi0KLSAgICAgICAgcmV0dXJuIG1lc3NhZ2UKLQotICAgIGRlZiBfcHJvY2Vzc19vdXRn
b2luZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KToKLSAgICAgICAgaWYgbm90
IGJpbmFyeToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQot
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkOgotICAgICAg
ICAgICAgcmV0dXJuIG1lc3NhZ2UKLQotICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBs
ZW4obWVzc2FnZSkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6
ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIoCi0g
ICAgICAgICAgICBtZXNzYWdlLCBlbmQ9ZW5kLCBiZmluYWw9c2VsZi5fYmZpbmFsKQotCi0gICAg
ICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQotICAgICAgICBzZWxmLl9v
dXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBfbG9nX291dGdvaW5nX2Nv
bXByZXNzaW9uX3JhdGlvKAotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlciwKLSAgICAgICAg
ICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRf
cGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0
aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQotCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll9jb21wcmVzc19vbmdvaW5nOgotICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQotICAgICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5n
ID0gbm90IGVuZAotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX2lu
Y29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUucnN2MSA9PSAxIGFu
ZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAg
ICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlci5kZWNvbXByZXNzX25leHRfbWVzc2FnZSgp
Ci0gICAgICAgICAgICBmcmFtZS5yc3YxID0gMAotCi0gICAgZGVmIF9wcm9jZXNzX291dGdvaW5n
X2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVzc2lvbl9iaXQpOgotICAgICAgICBpZiAobm90IGNv
bXByZXNzaW9uX2JpdCBvcgotICAgICAgICAgICAgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZy
YW1lLm9wY29kZSkpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZnJhbWUucnN2MSA9
IDEKLQotICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6
Ci0gICAgICAgICIiIkNyZWF0ZXMgZmlsdGVycyBhbmQgc2V0cyB0aGVtIHRvIHRoZSBTdHJlYW1P
cHRpb25zLiIiIgotCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2JqZWN0
KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2Vs
ZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX3BhcmVudC5fcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKAotICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlLCBlbmQsIGJpbmFyeSkKLQotICAgICAgICBjbGFzcyBfSW5jb21pbmdN
ZXNzYWdlRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
YXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotICAgICAgICAg
ICAgICAgIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gRmFsc2UKLQotICAgICAgICAg
ICAgZGVmIGRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKHNlbGYpOgotICAgICAgICAgICAgICAgIHNl
bGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gVHJ1ZQotCi0gICAgICAgICAgICBkZWYgZmls
dGVyKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9wYXJl
bnQuX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSwgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UpCi0gICAgICAgICAgICAgICAgc2VsZi5f
ZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBt
ZXNzYWdlCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfbWVzc2FnZV9maWx0ZXIgPSBfT3V0Z29p
bmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmls
dGVyID0gX0luY29taW5nTWVzc2FnZUZpbHRlcihzZWxmKQotICAgICAgICBzdHJlYW1fb3B0aW9u
cy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5fb3V0
Z29pbmdfbWVzc2FnZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5nX21l
c3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdl
X2ZpbHRlcikKLQotICAgICAgICBjbGFzcyBfT3V0Z29pbmdGcmFtZUZpbHRlcihvYmplY3QpOgot
Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJl
c3Npb25fYml0ID0gRmFsc2UKLQotICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQo
c2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUK
LQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKAotICAgICAgICAgICAgICAgICAg
ICBmcmFtZSwgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCkKLSAgICAgICAgICAgICAgICBzZWxm
Ll9zZXRfY29tcHJlc3Npb25fYml0ID0gRmFsc2UKLQotICAgICAgICBjbGFzcyBfSW5jb21pbmdG
cmFtZUZpbHRlcihvYmplY3QpOgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy
ZW50KToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAg
ICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50
Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZyYW1lKQotCi0gICAgICAgIHNlbGYuX291dGdvaW5n
X2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1lRmlsdGVyKHNlbGYpCi0gICAgICAgIHNlbGYu
X2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNvbWluZ0ZyYW1lRmlsdGVyKHNlbGYpCi0gICAg
ICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAg
ICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyKQotICAgICAgICBzdHJlYW1fb3B0aW9u
cy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29t
aW5nX2ZyYW1lX2ZpbHRlcikKLQotICAgICAgICBzdHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9t
ZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQotCi0KLV9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0gPSAoCi0gICAgICAgIFBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQotIyBUT0RPKHR5b3NoaW5vKTogUmVvcmdhbml6ZSBjbGFz
cyBuYW1lcy4KLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKCdkZWZsYXRlJykK
LQotCi1jbGFzcyBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgQ29t
cHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKToKLSAgICAiIiJwZXJtZXNzYWdlLWNvbXBy
ZXNzIGV4dGVuc2lvbiBwcm9jZXNzb3IuCi0KLSAgICBTcGVjaWZpY2F0aW9uOgotICAgIGh0dHA6
Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNz
aW9uCi0gICAgIiIiCi0KLSAgICBfREVGTEFURV9NRVRIT0QgPSAnZGVmbGF0ZScKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgQ29tcHJlc3Npb25FeHRlbnNpb25Q
cm9jZXNzb3JCYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICBkZWYgbmFtZShzZWxm
KToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lP
TgotCi0gICAgZGVmIF9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKHNlbGYsIG1ldGhvZF9k
ZXNjKToKLSAgICAgICAgaWYgbWV0aG9kX2Rlc2MubmFtZSgpID09IHNlbGYuX0RFRkxBVEVfTUVU
SE9EOgotICAgICAgICAgICAgcmV0dXJuIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yKG1ldGhvZF9kZXNjLCBGYWxzZSkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi1fYXZhaWxh
YmxlX3Byb2Nlc3NvcnNbY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OXSA9
ICgKLSAgICBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Np
b25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9F
WFRFTlNJT04pCi0KLQotY2xhc3MgTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nl
c3NvckludGVyZmFjZSk6Ci0gICAgIiIiV2ViU29ja2V0IG11bHRpcGxleGluZyBleHRlbnNpb24g
cHJvY2Vzc29yLiIiIgotCi0gICAgX1FVT1RBX1BBUkFNID0gJ3F1b3RhJwotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZh
Y2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5fcXVvdGEgPSAwCi0gICAg
ICAgIHNlbGYuX2V4dGVuc2lvbnMgPSBbXQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAg
IHJldHVybiBjb21tb24uTVVYX0VYVEVOU0lPTgotCi0gICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5
X3dpdGhfb3RoZXJfcHJvY2Vzc29ycyhzZWxmLCBwcm9jZXNzb3JzKToKLSAgICAgICAgYmVmb3Jl
X211eCA9IFRydWUKLSAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzOgotICAgICAg
ICAgICAgbmFtZSA9IHByb2Nlc3Nvci5uYW1lKCkKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gc2Vs
Zi5uYW1lKCk6Ci0gICAgICAgICAgICAgICAgYmVmb3JlX211eCA9IEZhbHNlCi0gICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6
Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGJlZm9yZV9tdXg6Ci0g
ICAgICAgICAgICAgICAgIyBNdXggZXh0ZW5zaW9uIGNhbm5vdCBiZSB1c2VkIGFmdGVyIGV4dGVu
c2lvbnMKLSAgICAgICAgICAgICAgICAjIHRoYXQgZGVwZW5kIG9uIGZyYW1lIGJvdW5kYXJ5LCBl
eHRlbnNpb24gZGF0YSBmaWVsZCwgb3IgYW55Ci0gICAgICAgICAgICAgICAgIyByZXNlcnZlZCBi
aXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGVkIHRvIGVhY2ggZnJhbWUuCi0gICAgICAgICAgICAgICAg
aWYgKG5hbWUgPT0gY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OIG9yCi0gICAgICAgICAg
ICAgICAgICAgIG5hbWUgPT0gY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9O
KToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRfYWN0aXZlKEZhbHNlKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBN
dXggZXh0ZW5zaW9uIHNob3VsZCBub3QgYmUgYXBwbGllZCBiZWZvcmUgYW55IGhpc3RvcnktYmFz
ZWQKLSAgICAgICAgICAgICAgICAjIGNvbXByZXNzaW9uIGV4dGVuc2lvbi4KLSAgICAgICAgICAg
ICAgICBpZiAobmFtZSA9PSBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04gb3IKLSAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRF
TlNJT04gb3IKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uUEVSTUVTU0FHRV9D
T01QUkVTU0lPTl9FWFRFTlNJT04gb3IKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21t
b24uWF9XRUJLSVRfUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNldF9hY3RpdmUoRmFsc2UpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybgotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgot
ICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQotICAgICAgICBxdW90YSA9IHNlbGYuX3JlcXVl
c3QuZ2V0X3BhcmFtZXRlcl92YWx1ZShzZWxmLl9RVU9UQV9QQVJBTSkKLSAgICAgICAgaWYgcXVv
dGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcXVvdGEg
PSBpbnQocXVvdGEpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgcXVvdGEgPCAwIG9yIHF1b3RhID49
IDIgKiogMzI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHNlbGYu
X3F1b3RhID0gcXVvdGEKLQotICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0gICAgICAgIHJl
dHVybiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKQotCi0g
ICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9u
cyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRfcXVvdGEoc2VsZiwgcXVvdGEpOgotICAg
ICAgICBzZWxmLl9xdW90YSA9IHF1b3RhCi0KLSAgICBkZWYgcXVvdGEoc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9xdW90YQotCi0gICAgZGVmIHNldF9leHRlbnNpb25zKHNlbGYsIGV4dGVu
c2lvbnMpOgotICAgICAgICBzZWxmLl9leHRlbnNpb25zID0gZXh0ZW5zaW9ucwotCi0gICAgZGVm
IGV4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9leHRlbnNpb25zCi0KLQot
X2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lv
blByb2Nlc3NvcgotCi0KLWRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVx
dWVzdCk6Ci0gICAgIiIiR2l2ZW4gYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIHJlcHJlc2VudGluZyBh
biBleHRlbnNpb24gb2ZmZXIgcmVjZWl2ZWQKLSAgICBmcm9tIGEgY2xpZW50LCBjb25maWd1cmVz
IGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgZXh0ZW5z
aW9uIHByb2Nlc3NvciBjbGFzcy4KLSAgICAiIiIKLQotICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9h
dmFpbGFibGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQotICAgIGlm
IHByb2Nlc3Nvcl9jbGFzcyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVy
biBwcm9jZXNzb3JfY2xhc3MoZXh0ZW5zaW9uX3JlcXVlc3QpCi0KLQotZGVmIGlzX2NvbXByZXNz
aW9uX2V4dGVuc2lvbihleHRlbnNpb25fbmFtZSk6Ci0gICAgcmV0dXJuIGV4dGVuc2lvbl9uYW1l
IGluIF9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGRhYWQyN2Y1M2M0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSVtb2R1
bGUgZmFzdF9tYXNraW5nCi0KLSVpbmNsdWRlICJjc3RyaW5nLmkiCi0KLSV7Ci0jaW5jbHVkZSA8
Y3N0cmluZz4KLQotI2lmZGVmIF9fU1NFMl9fCi0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jZW5k
aWYKLSV9Ci0KLSVhcHBseSAoY2hhciAqU1RSSU5HLCBpbnQgTEVOR1RIKSB7Ci0gICAgKGNvbnN0
IGNoYXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCksCi0gICAgKGNvbnN0IGNoYXIqIG1h
c2tpbmdfa2V5LCBpbnQgbWFza2luZ19rZXlfbGVuZ3RoKSB9OwotJWNzdHJpbmdfb3V0cHV0X2Fs
bG9jYXRlX3NpemUoCi0gICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoLCBkZWxl
dGUgW10gKiQxKTsKLQotJWlubGluZSAlewotCi12b2lkIG1hc2soCi0gICAgY29uc3QgY2hhciog
cGF5bG9hZCwgaW50IHBheWxvYWRfbGVuZ3RoLAotICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5
LCBpbnQgbWFza2luZ19rZXlfbGVuZ3RoLAotICAgIGludCBtYXNraW5nX2tleV9pbmRleCwKLSAg
ICBjaGFyKiogcmVzdWx0LCBpbnQqIHJlc3VsdF9sZW5ndGgpIHsKLSAgKnJlc3VsdCA9IG5ldyBj
aGFyW3BheWxvYWRfbGVuZ3RoXTsKLSAgKnJlc3VsdF9sZW5ndGggPSBwYXlsb2FkX2xlbmd0aDsK
LSAgbWVtY3B5KCpyZXN1bHQsIHBheWxvYWQsIHBheWxvYWRfbGVuZ3RoKTsKLQotICBjaGFyKiBj
dXJzb3IgPSAqcmVzdWx0OwotICBjaGFyKiBjdXJzb3JfZW5kID0gKnJlc3VsdCArICpyZXN1bHRf
bGVuZ3RoOwotCi0jaWZkZWYgX19TU0UyX18KLSAgd2hpbGUgKChjdXJzb3IgPCBjdXJzb3JfZW5k
KSAmJgotICAgICAgICAgKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihjdXJzb3IpICYgMHhmKSkg
ewotICAgICpjdXJzb3IgXj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdOwotICAgICsr
Y3Vyc29yOwotICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkg
JSBtYXNraW5nX2tleV9sZW5ndGg7Ci0gIH0KLSAgaWYgKGN1cnNvciA9PSBjdXJzb3JfZW5kKSB7
Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKLSAgX19t
MTI4aSBtYXNraW5nX2tleV9ibG9jazsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQmxvY2tTaXpl
OyArK2kpIHsKLSAgICAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZtYXNraW5nX2tleV9ibG9j
aykgKyBpKSA9Ci0gICAgICAgIG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICBt
YXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlf
bGVuZ3RoOwotICB9Ci0KLSAgd2hpbGUgKGN1cnNvciArIGtCbG9ja1NpemUgPD0gY3Vyc29yX2Vu
ZCkgewotICAgIF9fbTEyOGkgcGF5bG9hZF9ibG9jayA9Ci0gICAgICAgIF9tbV9sb2FkX3NpMTI4
KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvcikpOwotICAgIF9tbV9zdHJlYW1fc2kx
MjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oY3Vyc29yKSwKLSAgICAgICAgICAgICAgICAg
ICAgIF9tbV94b3Jfc2kxMjgocGF5bG9hZF9ibG9jaywgbWFza2luZ19rZXlfYmxvY2spKTsKLSAg
ICBjdXJzb3IgKz0ga0Jsb2NrU2l6ZTsKLSAgfQotI2VuZGlmCi0KLSAgd2hpbGUgKGN1cnNvciA8
IGN1cnNvcl9lbmQpIHsKLSAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2lu
ZGV4XTsKLSAgICArK2N1cnNvcjsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tl
eV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOwotICB9Ci19Ci0KLSV9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTk0ZjZiMzk1YWUyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBA
IC0xLDExMCArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgb3Blbmlu
ZyBoYW5kc2hha2UgcHJvY2Vzc29yLiBUaGlzIGNsYXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUK
LW9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvcnMgZm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1
bnRpbCBhIGNvbm5lY3Rpb24gaXMKLXN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4KLSIiIgotCi0K
LWltcG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZy
b20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTAwCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkKLSMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNl
cHRpb24sIEhhbmRzaGFrZUV4Y2VwdGlvbiwgYW5kIFZlcnNpb25FeGNlcHRpb24KLSMgc3ltYm9s
IGZyb20gdGhpcyBtb2R1bGUuCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2Ug
aW1wb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLQotCi1fTE9HR0VSID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0
LCBkaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9RmFsc2UsIHN0cmljdD1GYWxzZSk6Ci0gICAgIiIi
UGVyZm9ybXMgV2ViU29ja2V0IGhhbmRzaGFrZS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVl
c3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAo
ZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAgIGFsbG93RHJhZnQ3NTogb2Jzb2xldGUgYXJn
dW1lbnQuIGlnbm9yZWQuCi0gICAgICAgIHN0cmljdDogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9y
ZWQuCi0KLSAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNv
dXJjZSBpbiBwZXJmb3JtaW5nCi0gICAgaGFuZHNoYWtlLgotICAgICIiIgotCi0gICAgX0xPR0dF
Ui5kZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVl
c3QudXJpKQotICAgICMgVG8gcHJpbnQgbWltZXRvb2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUt
bGluZSBzdHJpbmcsIHdlIGNvbnZlcnRzCi0gICAgIyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0
LiBXaXRob3V0IGNvbnZlcnNpb24sIGlmIHdlIHVzZSAlciwgaXQganVzdAotICAgICMgcHJpbnRz
IHRoZSB0eXBlIGFuZCBhZGRyZXNzLCBhbmQgaWYgd2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9y
aWdpbmFsCi0gICAgIyBoZWFkZXIgc3RyaW5nIGFzIG11bHRpcGxlIGxpbmVzLgotICAgICMKLSAg
ICAjIEJvdGggbWltZXRvb2xzLk1lc3NhZ2UgYW5kIE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9u
IGNhbiBiZQotICAgICMgY29udmVydGVkIHRvIGRpY3QuCi0gICAgIwotICAgICMgbWltZXRvb2xz
Lk1lc3NhZ2UuX19zdHJfXyByZXR1cm5zIHRoZSBvcmlnaW5hbCBoZWFkZXIgc3RyaW5nLgotICAg
ICMgZGljdChtaW1ldG9vbHMuTWVzc2FnZSBvYmplY3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhl
YWRlciBuYW1lcyB0bwotICAgICMgaGVhZGVyIHZhbHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRv
ZXNuJ3QgaGF2ZSBzdWNoIF9fc3RyX18gYnV0IGp1c3QKLSAgICAjIF9fcmVwcl9fIHdoaWNoIGZv
cm1hdHMgaXRzZWxmIGFzIHdlbGwgYXMgZGljdGlvbmFyeSBvYmplY3QuCi0gICAgX0xPR0dFUi5k
ZWJ1ZygKLSAgICAgICAgJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcics
IGRpY3QocmVxdWVzdC5oZWFkZXJzX2luKSkKLQotICAgIGhhbmRzaGFrZXJzID0gW10KLSAgICBo
YW5kc2hha2Vycy5hcHBlbmQoCi0gICAgICAgICgnUkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgKLSAgICAgICAg
KCdIeUJpIDAwJywgaHliaTAwLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotCi0g
ICAgZm9yIG5hbWUsIGhhbmRzaGFrZXIgaW4gaGFuZHNoYWtlcnM6Ci0gICAgICAgIF9MT0dHRVIu
ZGVidWcoJ1RyeWluZyBwcm90b2NvbCB2ZXJzaW9uICVzJywgbmFtZSkKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgX0xPR0dF
Ui5pbmZvKCdFc3RhYmxpc2hlZCAoJXMgcHJvdG9jb2wpJywgbmFtZSkKLSAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
X0xPR0dFUi5kZWJ1ZygKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5p
bmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcicsCi0gICAgICAgICAgICAgICAgbmFtZSwg
ZSkKLSAgICAgICAgICAgIGlmIGUuc3RhdHVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAg
ICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICByYWlz
ZQotICAgICAgICBleGNlcHQgVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJhaXNl
Ci0KLSAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFs
bCBoYW5kc2hha2VycyBmYWlsLgotICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAg
ICAgJ0ZhaWxlZCB0byBjb21wbGV0ZSBvcGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJs
ZSBwcm90b2NvbHMnLAotICAgICAgICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFV
RVNUKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTNhNTg0
YjdiMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiQ29tbW9uIGZ1bmN0aW9ucyBhbmQgZXhjZXB0aW9ucyB1c2VkIGJ5IFdlYlNv
Y2tldCBvcGVuaW5nIGhhbmRzaGFrZQotcHJvY2Vzc29ycy4KLSIiIgotCi0KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRw
X2hlYWRlcl91dGlsCi0KLQotY2xhc3MgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24p
OgotICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRpbmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFs
bHkuCi0KLSAgICBJZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNo
YWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCi0gICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90
aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIgd2lsbCBiZSBpbnZva2VkLgotCi0gICAg
SWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhl
IGNvbm5lY3Rpb24gd2lsbAotICAgIGJlIGNsb3NlZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtl
LiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChTKSBoYW5kbGVyCi0gICAgd2lsbCBiZSBpbnZv
a2VkLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihF
eGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4g
ZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZwotICAgIFdlYlNvY2tldCBpbml0aWFsIGhh
bmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9
Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhhbmRzaGFrZUV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18o
bmFtZSkKLSAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0dXMKLQotCi1jbGFzcyBWZXJzaW9uRXhj
ZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQg
d2hlbiBhIHZlcnNpb24gb2YgY2xpZW50IHJlcXVlc3QgZG9lcyBub3QKLSAgICBtYXRjaCB3aXRo
IHZlcnNpb24gdGhlIHNlcnZlciBzdXBwb3J0cy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9JycpOgotICAgICAgICAiIiJDb25zdHJ1
Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9uOiBhIHN0ciBvYmplY3QgdG8gc2hvdyBzdXBwb3J0ZWQgaHliaSB2ZXJzaW9ucy4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAnOCwgMTMnKQotICAgICAgICAiIiIK
LSAgICAgICAgc3VwZXIoVmVyc2lvbkV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKLSAg
ICAgICAgc2VsZi5zdXBwb3J0ZWRfdmVyc2lvbnMgPSBzdXBwb3J0ZWRfdmVyc2lvbnMKLQotCi1k
ZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUpOgotICAgIGlmIGlzX3NlY3VyZToKLSAgICAg
ICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQKLSAgICBlbHNl
OgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCi0KLQotZGVm
IHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKToKLSAgICAiIiJWYWxpZGF0ZSBhIHZh
bHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZpZWxkLgotCi0gICAgU2VlIHRoZSBT
ZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2YgUkZDIDY0NTUuCi0gICAgIiIiCi0KLSAg
ICBpZiBub3Qgc3VicHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbign
SW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScpCi0KLSAgICAjIFBhcmFtZXRlciBzaG91
bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgotICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5Q
YXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCi0gICAgdG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNv
bnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgcmVzdCA9IGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0
ZSkKLSAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwgfHN1YnByb3RvY29sfCBpcyBub3Qgb25l
IHRva2VuIG9yIGludmFsaWQuIElmCi0gICAgIyB8cmVzdHwgaXMgTm9uZSwgfHRva2VufCBtdXN0
IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3RvY29sfCBpcwotICAgICMgY29uY2F0ZW5hdGlv
biBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5vdCBOb25lLgotICAgIGlmIHJlc3QgaXMg
bm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBub24t
dG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICduYW1lOiAlcicgJSByZXN0KQotCi0KLWRlZiBwYXJzZV9ob3N0X2hlYWRlcihyZXF1
ZXN0KToKLSAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLkhPU1RfSEVBREVS
XS5zcGxpdCgnOicsIDEpCi0gICAgaWYgbGVuKGZpZWxkcykgPT0gMToKLSAgICAgICAgcmV0dXJu
IGZpZWxkc1swXSwgZ2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0LmlzX2h0dHBzKCkpCi0gICAgdHJ5
OgotICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQoZmllbGRzWzFdKQotICAgIGV4Y2VwdCBW
YWx1ZUVycm9yLCBlOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQg
cG9ydCBudW1iZXIgZm9ybWF0OiAlcicgJSBlKQotCi0KLWRlZiBmb3JtYXRfaGVhZGVyKG5hbWUs
IHZhbHVlKToKLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKG5hbWUsIHZhbHVlKQotCi0KLWRl
ZiBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkpOgotICAgIHZhbHVlID0gcmVxdWVz
dC5oZWFkZXJzX2luLmdldChrZXkpCi0gICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdIZWFkZXIgJXMgaXMgbm90IGRlZmluZWQnICUga2V5KQot
ICAgIHJldHVybiB2YWx1ZQotCi0KLWRlZiB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKHJlcXVl
c3QsIGtleSwgZXhwZWN0ZWRfdmFsdWUsIGZhaWxfc3RhdHVzPU5vbmUpOgotICAgIHZhbHVlID0g
Z2V0X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5KQotCi0gICAgaWYgdmFsdWUubG93ZXIo
KSAhPSBleHBlY3RlZF92YWx1ZS5sb3dlcigpOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNl
cHRpb24oCi0gICAgICAgICAgICAnRXhwZWN0ZWQgJXIgZm9yIGhlYWRlciAlcyBidXQgZm91bmQg
JXIgKGNhc2UtaW5zZW5zaXRpdmUpJyAlCi0gICAgICAgICAgICAoZXhwZWN0ZWRfdmFsdWUsIGtl
eSwgdmFsdWUpLCBzdGF0dXM9ZmFpbF9zdGF0dXMpCi0KLQotZGVmIGNoZWNrX3JlcXVlc3RfbGlu
ZShyZXF1ZXN0KToKLSAgICAjIDUuMSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmlu
ZyAiR0VUIi4KLSAgICAjIDUuMSAyLiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJh
Y3RlciAoMHgyMCBieXRlKS4KLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAg
ICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdNZXRob2QgaXMgbm90IEdFVDogJXInICUgcmVx
dWVzdC5tZXRob2QpCi0KLSAgICBpZiByZXF1ZXN0LnByb3RvY29sICE9ICdIVFRQLzEuMSc6Ci0g
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignVmVyc2lvbiBpcyBub3QgSFRUUC8xLjE6
ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnByb3RvY29s
KQotCi0KLWRlZiBwYXJzZV90b2tlbl9saXN0KGRhdGEpOgotICAgICIiIlBhcnNlcyBhIGhlYWRl
ciB2YWx1ZSB3aGljaCBmb2xsb3dzIDEjdG9rZW4gYW5kIHJldHVybnMgcGFyc2VkIGVsZW1lbnRz
Ci0gICAgYXMgYSBsaXN0IG9mIHN0cmluZ3MuCi0KLSAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUg
dHJpbW1lZC4KLSAgICAiIiIKLQotICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5n
U3RhdGUoZGF0YSkKLQotICAgIHRva2VuX2xpc3QgPSBbXQotCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgdG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAg
ICAgIGlmIHRva2VuIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdG9rZW5fbGlzdC5hcHBlbmQo
dG9rZW4pCi0KLSAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQot
Ci0gICAgICAgIGlmIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKLSAgICAg
ICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9z
dHJpbmcoc3RhdGUsICcsJyk6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIGEgY29tbWEgYnV0IGZvdW5kICVyJyAlIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkpCi0KLSAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25z
dW1lX2x3c2VzKHN0YXRlKQotCi0gICAgaWYgbGVuKHRva2VuX2xpc3QpID09IDA6Ci0gICAgICAg
IHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignTm8gdmFsaWQgdG9rZW4gZm91bmQnKQotCi0gICAg
cmV0dXJuIHRva2VuX2xpc3QKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWFkMTBlYTM3MjgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L2hhbmRzaGFrZS9oeWJpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIwICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRlcyB0aGUgb3BlbmluZyBoYW5k
c2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0Ci1wcm90b2NvbCAoUkZDIDY0NTUpLgot
Ci1TcGVjaWZpY2F0aW9uOgotaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQotIiIi
Ci0KLQotIyBOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgaXMgdXNlZCBpbiB0aGlzIG1v
ZHVsZSwgZXZlbiB0aG91Z2ggbW9kX3B5dGhvbgotIyBkb2N1bWVudCBzYXlzIHRoYXQgaXQgc2hv
dWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uIGhhbmRsZXJzLgotIyBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLCByZXF1ZXN0LndyaXRlIGlz
IG5vdAotIyBzdWl0YWJsZSBiZWNhdXNlIGl0IGRvZXNuJ3QgYWxsb3cgZGlyZWN0IHJhdyBieXRl
cyB3cml0aW5nLgotCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MK
LWltcG9ydCByZQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nvcgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgaXNfY29tcHJlc3Npb25fZXh0
ZW5zaW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGNoZWNr
X3JlcXVlc3RfbGluZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBmb3JtYXRfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IGdldF9tYW5kYXRvcnlfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV90b2tlbl9saXN0Ci1mcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIKLWZyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJvdG9j
b2wKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4
Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KLWZyb20g
bW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi0jIFVzZWQgdG8gdmFsaWRhdGUgdGhlIHZhbHVlIGlu
IHRoZSBTZWMtV2ViU29ja2V0LUtleSBoZWFkZXIgc3RyaWN0bHkuIFJGQyA0NjQ4Ci0jIGRpc2Fs
bG93cyBub24temVybyBwYWRkaW5nLCBzbyB0aGUgY2hhcmFjdGVyIHJpZ2h0IGJlZm9yZSA9PSBt
dXN0IGJlIGFueSBvZgotIyBBLCBRLCBnIGFuZCB3LgotX1NFQ19XRUJTT0NLRVRfS0VZX1JFR0VY
ID0gcmUuY29tcGlsZSgnXlsrLzAtOUEtWmEtel17MjF9W0FRZ3ddPT0kJykKLQotIyBEZWZpbmlu
ZyBhbGlhc2VzIGZvciB2YWx1ZXMgdXNlZCBmcmVxdWVudGx5LgotX1ZFUlNJT05fTEFURVNUID0g
Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKLV9WRVJTSU9OX0xBVEVTVF9TVFJJTkcgPSBzdHIo
X1ZFUlNJT05fTEFURVNUKQotX1NVUFBPUlRFRF9WRVJTSU9OUyA9IFsKLSAgICBfVkVSU0lPTl9M
QVRFU1QsCi1dCi0KLQotZGVmIGNvbXB1dGVfYWNjZXB0KGtleSk6Ci0gICAgIiIiQ29tcHV0ZXMg
dmFsdWUgZm9yIHRoZSBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIgZnJvbSB2YWx1ZSBvZiB0
aGUKLSAgICBTZWMtV2ViU29ja2V0LUtleSBoZWFkZXIuCi0gICAgIiIiCi0KLSAgICBhY2NlcHRf
YmluYXJ5ID0gdXRpbC5zaGExX2hhc2goCi0gICAgICAgIGtleSArIGNvbW1vbi5XRUJTT0NLRVRf
QUNDRVBUX1VVSUQpLmRpZ2VzdCgpCi0gICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2Nl
cHRfYmluYXJ5KQotCi0gICAgcmV0dXJuIChhY2NlcHQsIGFjY2VwdF9iaW5hcnkpCi0KLQotY2xh
c3MgSGFuZHNoYWtlcihvYmplY3QpOgotICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nv
ciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNoZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3Qg
YW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9w
eXRob24gcmVxdWVzdC4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgKGRpc3Bh
dGNoLkRpc3BhdGNoZXIpLgotCi0gICAgICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRl
cyBzdWNoIGFzIHdzX3Jlc291cmNlIGR1cmluZyBoYW5kc2hha2UuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBk
aXNwYXRjaGVyCi0KLSAgICBkZWYgX3ZhbGlkYXRlX2Nvbm5lY3Rpb25faGVhZGVyKHNlbGYpOgot
ICAgICAgICBjb25uZWN0aW9uID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LCBjb21tb24uQ09OTkVDVElPTl9IRUFERVIpCi0KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMgPSBwYXJzZV90b2tlbl9saXN0KGNvbm5lY3Rp
b24pCi0gICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJz
ZSAlczogJXMnICUgKGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgZSkpCi0KLSAgICAgICAgY29u
bmVjdGlvbl9pc192YWxpZCA9IEZhbHNlCi0gICAgICAgIGZvciB0b2tlbiBpbiBjb25uZWN0aW9u
X3Rva2VuczoKLSAgICAgICAgICAgIGlmIHRva2VuLmxvd2VyKCkgPT0gY29tbW9uLlVQR1JBREVf
Q09OTkVDVElPTl9UWVBFLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pc192
YWxpZCA9IFRydWUKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3QgY29ubmVj
dGlvbl9pc192YWxpZDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnJXMgaGVhZGVyIGRvZXNuXCd0IGNvbnRhaW4gIiVzIicgJQotICAgICAg
ICAgICAgICAgIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5F
Q1RJT05fVFlQRSkpCi0KLSAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2xvc2VfcmVhc29uID0gTm9uZQotCi0gICAgICAgICMgUGFyc2luZy4KLQotICAgICAgICBjaGVj
a19yZXF1ZXN0X2xpbmUoc2VsZi5fcmVxdWVzdCkKLQotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRv
cnlfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCwKLSAgICAgICAgICAgIGNvbW1v
bi5VUEdSQURFX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9U
WVBFKQotCi0gICAgICAgIHNlbGYuX3ZhbGlkYXRlX2Nvbm5lY3Rpb25faGVhZGVyKCkKLQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3Jlc291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKLQotICAg
ICAgICB1bnVzZWRfaG9zdCA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsIGNv
bW1vbi5IT1NUX0hFQURFUikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24gPSBz
ZWxmLl9jaGVja192ZXJzaW9uKCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9n
ZXRfb3JpZ2luKCkKLSAgICAgICAgICAgIHNlbGYuX3NldF9wcm90b2NvbCgpCi0gICAgICAgICAg
ICBzZWxmLl9wYXJzZV9leHRlbnNpb25zKCkKLQotICAgICAgICAgICAgIyBLZXkgdmFsaWRhdGlv
biwgcmVzcG9uc2UgZ2VuZXJhdGlvbi4KLQotICAgICAgICAgICAga2V5ID0gc2VsZi5fZ2V0X2tl
eSgpCi0gICAgICAgICAgICAoYWNjZXB0LCBhY2NlcHRfYmluYXJ5KSA9IGNvbXB1dGVfYWNjZXB0
KGtleSkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAn
JXM6ICVyICglcyknLAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQ
VF9IRUFERVIsCi0gICAgICAgICAgICAgICAgYWNjZXB0LAotICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGFjY2VwdF9iaW5hcnkpKQotCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQotCi0gICAgICAgICAgICAjIFNldHVwIGV4
dGVuc2lvbiBwcm9jZXNzb3JzLgotCi0gICAgICAgICAgICBwcm9jZXNzb3JzID0gW10KLSAgICAg
ICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9yZXF1ZXN0IGluIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nv
ciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KQotICAgICAgICAg
ICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVlc3RzIGFyZSBqdXN0IGlnbm9yZWQu
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHByb2Nlc3NvcikKLSAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBwcm9jZXNzb3JzCi0KLSAg
ICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBUaGUgZXh0cmEgaGFuZHNoYWtlIGhh
bmRsZXIgbWF5IGFkZCBoZWFkZXIKLSAgICAgICAgICAgICMgZGF0YSBhcyBuYW1lL3ZhbHVlIHBh
aXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBwZW5kcwotICAgICAgICAgICAgIyB0
aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgotICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC5leHRyYV9oZWFkZXJzID0gW10KLQotICAgICAgICAgICAgIyBFeHRyYSBoYW5kc2hha2UgaGFu
ZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgotICAgICAgICAgICAgc2VsZi5fZGlz
cGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgICAgIHBy
b2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nlc3NvcjogcHJvY2Vzc29yIGlzIG5vdCBOb25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVu
c2lvbl9wcm9jZXNzb3JzKQotCi0gICAgICAgICAgICAjIEFzayBlYWNoIHByb2Nlc3NvciBpZiB0
aGVyZSBhcmUgZXh0ZW5zaW9ucyBvbiB0aGUgcmVxdWVzdCB3aGljaAotICAgICAgICAgICAgIyBj
YW5ub3QgY28tZXhpc3QuIFdoZW4gcHJvY2Vzc29yIGRlY2lkZWQgb3RoZXIgcHJvY2Vzc29ycyBj
YW5ub3QKLSAgICAgICAgICAgICMgY28tZXhpc3Qgd2l0aCBpdCwgdGhlIHByb2Nlc3NvciBtYXJr
cyB0aGVtIChvciBpdHNlbGYpIGFzCi0gICAgICAgICAgICAjICJpbmFjdGl2ZSIuIFRoZSBmaXJz
dCBleHRlbnNpb24gcHJvY2Vzc29yIGhhcyB0aGUgcmlnaHQgdG8KLSAgICAgICAgICAgICMgbWFr
ZSB0aGUgZmluYWwgY2FsbC4KLSAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcmV2ZXJzZWQo
cHJvY2Vzc29ycyk6Ci0gICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgot
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhl
cl9wcm9jZXNzb3JzKAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykKLSAgICAg
ICAgICAgIHByb2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nlc3NvcjogcHJvY2Vzc29yLmlz
X2FjdGl2ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQot
Ci0gICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KLQotICAgICAgICAgICAgIyBX
ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IG9mIG11eCBleHRlbnNpb24gaGVyZS4KLSAgICAg
ICAgICAgICMgSWYgbXV4IGV4dGVuc2lvbiBleGlzdHM6Ci0gICAgICAgICAgICAjIC0gUmVtb3Zl
IHByb2Nlc3NvcnMgb2YgZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLAotICAgICAgICAg
ICAgIyAgIHdoaWNoIGFyZSBwcm9jZXNzb3JzIGxvY2F0ZWQgYmVmb3JlIHRoZSBtdXggcHJvY2Vz
c29yCi0gICAgICAgICAgICAjIC0gUGFzcyBleHRlbnNpb24gcmVxdWVzdHMgZm9yIGxvZ2ljYWwg
Y2hhbm5lbCB0byBtdXggcHJvY2Vzc29yCi0gICAgICAgICAgICAjIC0gQXR0YWNoIHRoZSBtdXgg
cHJvY2Vzc29yIHRvIHRoZSByZXF1ZXN0LiBJdCB3aWxsIGJlIHJlZmVycmVkCi0gICAgICAgICAg
ICAjICAgYnkgZGlzcGF0Y2hlciB0byBzZWUgd2hldGhlciB0aGUgZGlzcGF0Y2hlciBzaG91bGQg
dXNlIG11eAotICAgICAgICAgICAgIyAgIGhhbmRsZXIgb3Igbm90LgotICAgICAgICAgICAgbXV4
X2luZGV4ID0gLTEKLSAgICAgICAgICAgIGZvciBpLCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHBy
b2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5uYW1lKCkgPT0gY29tbW9u
Lk1VWF9FWFRFTlNJT046Ci0gICAgICAgICAgICAgICAgICAgIG11eF9pbmRleCA9IGkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG11eF9pbmRleCA+PSAwOgotICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zID0gW10KLSAgICAgICAgICAg
ICAgICBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnNbOm11eF9pbmRleF06Ci0gICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zLmFwcGVuZChwcm9jZXNzb3IucmVx
dWVzdCgpKQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0X2FjdGl2ZShGYWxzZSkK
LSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lm11eF9wcm9jZXNzb3IgPSBwcm9jZXNzb3Jz
W211eF9pbmRleF0KLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lm11eF9wcm9jZXNzb3Iu
c2V0X2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRl
bnNpb25zKQotICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nl
c3NvcjogcHJvY2Vzc29yLmlzX2FjdGl2ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29ycykKLQotICAgICAgICAgICAgc3RyZWFtX29wdGlvbnMgPSBTdHJl
YW1PcHRpb25zKCkKLQotICAgICAgICAgICAgZm9yIGluZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVy
YXRlKHByb2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0
aXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBl
eHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgICMgUmVqZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAg
ICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25fcmVzcG9u
c2UpCi0KLSAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbnMpCi0KLSAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29tcHJlc3Npb25fZXh0
ZW5zaW9uKHByb2Nlc3Nvci5uYW1lKCkpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgICAgICAgICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbXBy
ZXNzaW9uIGV4dGVuc2lvbnMuCi0gICAgICAgICAgICAgICAgZm9yIGogaW4geHJhbmdlKGluZGV4
ICsgMSwgbGVuKHByb2Nlc3NvcnMpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNfY29tcHJl
c3Npb25fZXh0ZW5zaW9uKHByb2Nlc3NvcnNbal0ubmFtZSgpKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkKLQotICAgICAgICAgICAgaWYg
bGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25zCi0gICAgICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAnRXh0ZW5zaW9ucyBhY2Nl
cHRlZDogJXInLAotICAgICAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlci5uYW1lLCBhY2NlcHRlZF9leHRlbnNpb25zKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gTm9uZQotCi0gICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3RyZWFt
X29wdGlvbnMpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3By
b3RvY29scyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3Byb3RvY29sIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb19leHRyYV9oYW5kc2hha2UgbXVz
dCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZyb20gJwotICAgICAgICAgICAgICAgICAgICAgICAg
J3dzX3JlcXVlc3RlZF9wcm90b2NvbHMgYW5kIHNldCBpdCB0byB3c19wcm90b2NvbCcpCi0gICAg
ICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZi5fcmVxdWVzdC53c19wcm90b2Nv
bCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAgICAgJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xpZW50IGRpZG5cJ3QgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnByb3RvY29sJykKLQotICAg
ICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQotICAgICAgICBleGNlcHQgSGFu
ZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgbm90IGUuc3RhdHVzOgotICAgICAg
ICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJhZCByZXF1ZXN0IGJ5IGRlZmF1bHQuCi0gICAg
ICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QKLSAg
ICAgICAgICAgIHJhaXNlIGUKLQotICAgIGRlZiBfZ2V0X29yaWdpbihzZWxmKToKLSAgICAgICAg
b3JpZ2luX2hlYWRlciA9IGNvbW1vbi5PUklHSU5fSEVBREVSCi0gICAgICAgIG9yaWdpbiA9IHNl
bGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQob3JpZ2luX2hlYWRlcikKLSAgICAgICAgaWYgb3Jp
Z2luIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCByZXF1
ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2luIGhlYWRlcicpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3Nfb3JpZ2luID0gb3JpZ2luCi0KLSAgICBkZWYgX2NoZWNrX3ZlcnNpb24oc2VsZik6Ci0gICAg
ICAgIHZlcnNpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVS
U0lPTl9IRUFERVIpCi0gICAgICAgIGlmIHZlcnNpb24gPT0gX1ZFUlNJT05fTEFURVNUX1NUUklO
RzoKLSAgICAgICAgICAgIHJldHVybiBfVkVSU0lPTl9MQVRFU1QKLQotICAgICAgICBpZiB2ZXJz
aW9uLmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSB2ZXJzaW9ucyAoJXIpIGFyZSBub3QgYWxsb3dl
ZCBmb3IgaGVhZGVyICVzJyAlCi0gICAgICAgICAgICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1ZFUlNJT05fSEVBREVSKSwKLSAgICAgICAgICAgICAgICBzdGF0dXM9Y29tbW9u
LkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICByYWlzZSBWZXJzaW9uRXhjZXB0aW9u
KAotICAgICAgICAgICAgJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9yIGhlYWRlciAlcycgJQot
ICAgICAgICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVS
KSwKLSAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz0nLCAnLmpvaW4obWFwKHN0ciwgX1NV
UFBPUlRFRF9WRVJTSU9OUykpKQotCi0gICAgZGVmIF9zZXRfcHJvdG9jb2woc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0KLSAgICAgICAgcHJvdG9jb2xf
aGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1v
bi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKLQotICAgICAgICBpZiBwcm90b2NvbF9o
ZWFkZXIgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3By
b3RvY29scyA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rva2VuX2xpc3QoCi0gICAgICAgICAg
ICBwcm90b2NvbF9oZWFkZXIpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3VicHJvdG9j
b2xzIHJlcXVlc3RlZDogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQotCi0gICAgZGVmIF9wYXJzZV9leHRlbnNpb25z
KHNlbGYpOgotICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9IHNlbGYuX3JlcXVlc3QuaGVhZGVy
c19pbi5nZXQoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hF
QURFUikKLSAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVhZGVyOgotICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9IE5vbmUKLSAgICAgICAgICAgIHJl
dHVybgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVz
dGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAg
ICBleHRlbnNpb25zX2hlYWRlcikKLSAgICAgICAgZXhjZXB0IGNvbW1vbi5FeHRlbnNpb25QYXJz
aW5nRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25z
IGhlYWRlcjogJXInICUgZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnRXh0ZW5zaW9ucyByZXF1ZXN0ZWQ6ICVyJywKLSAgICAgICAgICAgIG1hcChjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyLm5hbWUsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucykpCi0KLSAgICBkZWYgX3ZhbGlkYXRlX2tleShzZWxmLCBr
ZXkpOgotICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6Ci0gICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBsaW5lcyBv
ciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGlsbGVn
YWwgY2hhcmFjdGVyIFwnLFwnOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQotCi0gICAgICAg
ICMgVmFsaWRhdGUKLSAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVmb3JlIHBh
cnNpbmcgYnkgYmFzZTY0Ci0gICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNlNjQgbW9k
dWxlIHNraXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQotICAgICAgICAgICAgIyB0byBk
byB0aGlzIGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWplY3QgaWxs
ZWdhbAotICAgICAgICAgICAgIyBrZXlzLgotICAgICAgICAgICAgaWYgX1NFQ19XRUJTT0NLRVRf
S0VZX1JFR0VYLm1hdGNoKGtleSk6Ci0gICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkgPSBiYXNl
NjQuYjY0ZGVjb2RlKGtleSkKLSAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9rZXkpID09
IDE2OgotICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCi0gICAgICAgIGV4
Y2VwdCBUeXBlRXJyb3IsIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgaWYgbm90IGtl
eV9pc192YWxpZDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlcicgJQotICAgICAgICAg
ICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQotCi0gICAgICAg
IHJldHVybiBkZWNvZGVkX2tleQotCi0gICAgZGVmIF9nZXRfa2V5KHNlbGYpOgotICAgICAgICBr
ZXkgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIGNv
bW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCi0KLSAgICAgICAgZGVjb2RlZF9rZXkgPSBz
ZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAg
ICAgICAgICAgICclczogJXIgKCVzKScsCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tF
VF9LRVlfSEVBREVSLAotICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgdXRpbC5oZXhpZnko
ZGVjb2RlZF9rZXkpKQotCi0gICAgICAgIHJldHVybiBrZXkKLQotICAgIGRlZiBfY3JlYXRlX3N0
cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIHJldHVybiBTdHJlYW0oc2VsZi5f
cmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2VfcmVz
cG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJykKLQot
ICAgICAgICAjIFdlYlNvY2tldCBoZWFkZXJzCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3Jt
YXRfaGVhZGVyKAotICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21tb24uV0VC
U09DS0VUX1VQR1JBREVfVFlQRSkpCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVh
ZGVyKAotICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFE
RV9DT05ORUNUSU9OX1RZUEUpKQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRl
cigKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2Vw
dCkpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgICAg
ICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlmIChzZWxmLl9yZXF1ZXN0Lndz
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICBsZW4oc2VsZi5fcmVxdWVz
dC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3Jt
YXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lP
TlNfSEVBREVSLAotICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhzZWxm
Ll9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKLQotICAgICAgICAjIEhlYWRlcnMgbm90IHNwZWNp
ZmljIGZvciBXZWJTb2NrZXQKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX3JlcXVl
c3QuZXh0cmFfaGVhZGVyczoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVh
ZGVyKG5hbWUsIHZhbHVlKSkKLQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ1xyXG4nKQotCi0g
ICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNlKQotCi0gICAgZGVmIF9zZW5kX2hhbmRzaGFr
ZShzZWxmLCBhY2NlcHQpOgotICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFu
ZHNoYWtlX3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlKHJhd19yZXNwb25zZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW50IHNl
cnZlclwncyBvcGVuaW5nIGhhbmRzaGFrZTogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmF3X3Jlc3BvbnNlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODc1NzcxN2E2MzliLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBvcGVuaW5n
IGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZlcnNpb24g
SHlCaSAwMC4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMAotIiIiCi0KLQotIyBOb3RlOiBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZl
biB0aG91Z2gKLSMgbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUg
dXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KLSMgaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhh
dmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBh
cmUgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVz
Ci0jIHdyaXRpbmcvcmVhZGluZy4KLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBv
cnQgc3RydWN0Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9k
X3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IGNoZWNrX3JlcXVlc3RfbGluZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBmb3JtYXRfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UuX2Jhc2UgaW1wb3J0IGdldF9kZWZhdWx0X3BvcnQKLWZyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfaG9zdF9oZWFkZXIKLWZy
b20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcgotCi0KLV9NQU5EQVRPUllfSEVBREVSUyA9IFsKLSAgICAjIGtleSwgZXhwZWN0
ZWQgdmFsdWUgb3IgTm9uZQotICAgIFtjb21tb24uVVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJT
T0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzVdLAotICAgIFtjb21tb24uQ09OTkVDVElPTl9IRUFE
RVIsIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRV0sCi1dCi0KLQotZGVmIF92YWxpZGF0
ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCk6Ci0gICAgIiIiQ2hlY2tzIGlmIGNoYXJhY3RlcnMg
aW4gc3VicHJvdG9jb2wgYXJlIGluIHJhbmdlIGJldHdlZW4gVSswMDIwIGFuZAotICAgIFUrMDA3
RS4gQSB2YWx1ZSBpbiB0aGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBmaWVsZCBuZWVkIHRvIHNh
dGlzZnkgdGhpcwotICAgIHJlcXVpcmVtZW50LgotCi0gICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4g
T3BlbmluZyBoYW5kc2hha2Ugb2YgdGhlIHNwZWMuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3Vi
cHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJw
cm90b2NvbCBuYW1lOiBlbXB0eScpCi0KLSAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgaW4gdGhl
IHJhbmdlIFUrMDAyMCB0byBVKzAwN0UuCi0gICAgZm9yIGMgaW4gc3VicHJvdG9jb2w6Ci0gICAg
ICAgIGlmIG5vdCAweDIwIDw9IG9yZChjKSA8PSAweDdlOgotICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbGxlZ2FsIGNoYXJhY3RlciBpbiBz
dWJwcm90b2NvbCBuYW1lOiAlcicgJSBjKQotCi0KLWRlZiBfY2hlY2tfaGVhZGVyX2xpbmVzKHJl
cXVlc3QsIG1hbmRhdG9yeV9oZWFkZXJzKToKLSAgICBjaGVja19yZXF1ZXN0X2xpbmUocmVxdWVz
dCkKLQotICAgICMgVGhlIGV4cGVjdGVkIGZpZWxkIG5hbWVzLCBhbmQgdGhlIG1lYW5pbmcgb2Yg
dGhlaXIgY29ycmVzcG9uZGluZwotICAgICMgdmFsdWVzLCBhcmUgYXMgZm9sbG93cy4KLSAgICAj
ICB8VXBncmFkZXwgYW5kIHxDb25uZWN0aW9ufAotICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVl
IGluIG1hbmRhdG9yeV9oZWFkZXJzOgotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVy
KHJlcXVlc3QsIGtleSwgZXhwZWN0ZWRfdmFsdWUpCi0KLQotZGVmIF9idWlsZF9sb2NhdGlvbihy
ZXF1ZXN0KToKLSAgICAiIiJCdWlsZCBXZWJTb2NrZXQgbG9jYXRpb24gZm9yIHJlcXVlc3QuIiIi
Ci0KLSAgICBsb2NhdGlvbl9wYXJ0cyA9IFtdCi0gICAgaWYgcmVxdWVzdC5pc19odHRwcygpOgot
ICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NLRVRfU0VDVVJFX1ND
SEVNRSkKLSAgICBlbHNlOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldF
Ql9TT0NLRVRfU0NIRU1FKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAgICBo
b3N0LCBwb3J0ID0gcGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCkKLSAgICBjb25uZWN0aW9uX3Bv
cnQgPSByZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkclsxXQotICAgIGlmIHBvcnQgIT0gY29u
bmVjdGlvbl9wb3J0OgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlci9j
b25uZWN0aW9uIHBvcnQgbWlzbWF0Y2g6ICVkLyVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocG9ydCwgY29ubmVjdGlvbl9wb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5h
cHBlbmQoaG9zdCkKLSAgICBpZiAocG9ydCAhPSBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNf
aHR0cHMoKSkpOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzonKQotICAgICAgICBs
b2NhdGlvbl9wYXJ0cy5hcHBlbmQoc3RyKHBvcnQpKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVu
ZChyZXF1ZXN0LnVucGFyc2VkX3VyaSkKLSAgICByZXR1cm4gJycuam9pbihsb2NhdGlvbl9wYXJ0
cykKLQotCi1jbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToK
LSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRj
aGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KLQotICAgICAgICBIYW5kc2hh
a2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5n
Ci0gICAgICAgIGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9
IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLQotICAgIGRl
ZiBkb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm0gV2ViU29ja2V0IEhhbmRz
aGFrZS4KLQotICAgICAgICBPbiBfcmVxdWVzdCwgd2Ugc2V0Ci0gICAgICAgICAgICB3c19yZXNv
dXJjZSwgd3NfcHJvdG9jb2wsIHdzX2xvY2F0aW9uLCB3c19vcmlnaW4sIHdzX2NoYWxsZW5nZSwK
LSAgICAgICAgICAgIHdzX2NoYWxsZW5nZV9tZDU6IFdlYlNvY2tldCBoYW5kc2hha2UgaW5mb3Jt
YXRpb24uCi0gICAgICAgICAgICB3c19zdHJlYW06IEZyYW1lIGdlbmVyYXRpb24vcGFyc2luZyBj
bGFzcy4KLSAgICAgICAgICAgIHdzX3ZlcnNpb246IFByb3RvY29sIHZlcnNpb24uCi0KLSAgICAg
ICAgUmFpc2VzOgotICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0aW9uOiB3aGVuIGFueSBlcnJv
ciBoYXBwZW5lZCBpbiBwYXJzaW5nIHRoZSBvcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhhbmRzaGFrZSByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICAjIDUu
MSBSZWFkaW5nIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgIyBkaXNw
YXRjaGVyIHNldHMgaXQgaW4gc2VsZi5fcmVxdWVzdC4KLSAgICAgICAgX2NoZWNrX2hlYWRlcl9s
aW5lcyhzZWxmLl9yZXF1ZXN0LCBfTUFOREFUT1JZX0hFQURFUlMpCi0gICAgICAgIHNlbGYuX3Nl
dF9yZXNvdXJjZSgpCi0gICAgICAgIHNlbGYuX3NldF9zdWJwcm90b2NvbCgpCi0gICAgICAgIHNl
bGYuX3NldF9sb2NhdGlvbigpCi0gICAgICAgIHNlbGYuX3NldF9vcmlnaW4oKQotICAgICAgICBz
ZWxmLl9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29s
X3ZlcnNpb24oKQotCi0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtl
KHNlbGYuX3JlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoKQotCi0gICAg
ZGVmIF9zZXRfcmVzb3VyY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVzb3Vy
Y2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQotCi0gICAgZGVmIF9zZXRfc3VicHJvdG9jb2woc2VsZik6
Ci0gICAgICAgICMgfFNlYy1XZWJTb2NrZXQtUHJvdG9jb2x8Ci0gICAgICAgIHN1YnByb3RvY29s
ID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKLSAgICAgICAgaWYgc3VicHJvdG9jb2wgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBzdWJwcm90b2NvbAotCi0gICAgZGVm
IF9zZXRfbG9jYXRpb24oc2VsZik6Ci0gICAgICAgICMgfEhvc3R8Ci0gICAgICAgIGhvc3QgPSBz
ZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5IT1NUX0hFQURFUikKLSAgICAgICAg
aWYgaG9zdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRp
b24gPSBfYnVpbGRfbG9jYXRpb24oc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgIyBUT0RPKHVrYWkp
OiBjaGVjayBob3N0IGlzIHRoaXMgaG9zdC4KLQotICAgIGRlZiBfc2V0X29yaWdpbihzZWxmKToK
LSAgICAgICAgIyB8T3JpZ2lufAotICAgICAgICBvcmlnaW4gPSBzZWxmLl9yZXF1ZXN0LmhlYWRl
cnNfaW4uZ2V0KGNvbW1vbi5PUklHSU5fSEVBREVSKQotICAgICAgICBpZiBvcmlnaW4gaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9IG9yaWdpbgotCi0g
ICAgZGVmIF9zZXRfcHJvdG9jb2xfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIyB8U2VjLVdlYlNv
Y2tldC1EcmFmdHwKLSAgICAgICAgZHJhZnQgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0
KGNvbW1vbi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUikKLSAgICAgICAgaWYgZHJhZnQgaXMg
bm90IE5vbmUgYW5kIGRyYWZ0ICE9ICcwJzoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignSWxsZWdhbCB2YWx1ZSBmb3IgJXM6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnQpKQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnUHJvdG9jb2wgdmVyc2lvbiBpcyBIeUJpIDAwJykKLSAgICAgICAg
c2VsZi5fcmVxdWVzdC53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSTAwCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Qud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShzZWxmLl9yZXF1ZXN0LCBU
cnVlKQotCi0gICAgZGVmIF9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICAj
IDUuMiA0LTguCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlID0gc2VsZi5fZ2V0
X2NoYWxsZW5nZSgpCi0gICAgICAgICMgNS4yIDkuIGxldCAvcmVzcG9uc2UvIGJlIHRoZSBNRDUg
ZmludGVycHJpbnQgb2YgL2NoYWxsZW5nZS8KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFs
bGVuZ2VfbWQ1ID0gdXRpbC5tZDVfaGFzaCgKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2hhbGxlbmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2hhbGxlbmdlLAotICAgICAgICAgICAgdXRpbC5oZXhpZnkoc2VsZi5fcmVxdWVzdC53c19jaGFs
bGVuZ2UpKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxl
bmdlIHJlc3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hh
bGxlbmdlX21kNSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KHNlbGYuX3JlcXVlc3Qud3NfY2hh
bGxlbmdlX21kNSkpCi0KLSAgICBkZWYgX2dldF9rZXlfdmFsdWUoc2VsZiwga2V5X2ZpZWxkKToK
LSAgICAgICAga2V5X3ZhbHVlID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwg
a2V5X2ZpZWxkKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyJywga2V5X2Zp
ZWxkLCBrZXlfdmFsdWUpCi0KLSAgICAgICAgIyA1LjIgNC4gbGV0IC9rZXktbnVtYmVyX24vIGJl
IHRoZSBkaWdpdHMgKGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCi0gICAgICAgICMgVSswMDMwIERJ
R0lUIFpFUk8gKDApIHRvIFUrMDAzOSBESUdJVCBOSU5FICg5KSkgaW4gL2tleV9uLywKLSAgICAg
ICAgIyBpbnRlcnByZXRlZCBhcyBhIGJhc2UgdGVuIGludGVnZXIsIGlnbm9yaW5nIGFsbCBvdGhl
ciBjaGFyYWN0ZXJzCi0gICAgICAgICMgaW4gL2tleV9uLy4KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAga2V5X251bWJlciA9IGludChyZS5zdWIoIlxcRCIsICIiLCBrZXlfdmFsdWUpKQotICAg
ICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJyVzIGZp
ZWxkIGNvbnRhaW5zIG5vIGRpZ2l0JyAlIGtleV9maWVsZCkKLSAgICAgICAgIyA1LjIgNS4gbGV0
IC9zcGFjZXNfbi8gYmUgdGhlIG51bWJlciBvZiBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVycwotICAg
ICAgICAjIGluIC9rZXlfbi8uCi0gICAgICAgIHNwYWNlcyA9IHJlLnN1Ym4oIiAiLCAiIiwga2V5
X3ZhbHVlKVsxXQotICAgICAgICBpZiBzcGFjZXMgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbignJXMgZmllbGQgY29udGFpbnMgbm8gc3BhY2UnICUga2V5X2ZpZWxk
KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICclczogS2V5LW51
bWJlciBpcyAlZCBhbmQgbnVtYmVyIG9mIHNwYWNlcyBpcyAlZCcsCi0gICAgICAgICAgICBrZXlf
ZmllbGQsIGtleV9udW1iZXIsIHNwYWNlcykKLQotICAgICAgICAjIDUuMiA2LiBpZiAva2V5LW51
bWJlcl9uLyBpcyBub3QgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgL3NwYWNlc19uLwotICAgICAg
ICAjIHRoZW4gYWJvcnQgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICBpZiBrZXlf
bnVtYmVyICUgc3BhY2VzICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJyVzOiBLZXktbnVtYmVyICglZCkgaXMgbm90IGFuIGludGVn
cmFsIG11bHRpcGxlIG9mIHNwYWNlcyAnCi0gICAgICAgICAgICAgICAgJyglZCknICUgKGtleV9m
aWVsZCwga2V5X251bWJlciwgc3BhY2VzKSkKLSAgICAgICAgIyA1LjIgNy4gbGV0IC9wYXJ0X24v
IGJlIC9rZXktbnVtYmVyX24vIGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgcGFydCA9
IGtleV9udW1iZXIgLyBzcGFjZXMKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogUGFy
dCBpcyAlZCcsIGtleV9maWVsZCwgcGFydCkKLSAgICAgICAgcmV0dXJuIHBhcnQKLQotICAgIGRl
ZiBfZ2V0X2NoYWxsZW5nZShzZWxmKToKLSAgICAgICAgIyA1LjIgNC03LgotICAgICAgICBrZXkx
ID0gc2VsZi5fZ2V0X2tleV92YWx1ZShjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVkxX0hFQURFUikK
LSAgICAgICAga2V5MiA9IHNlbGYuX2dldF9rZXlfdmFsdWUoY29tbW9uLlNFQ19XRUJTT0NLRVRf
S0VZMl9IRUFERVIpCi0gICAgICAgICMgNS4yIDguIGxldCAvY2hhbGxlbmdlLyBiZSB0aGUgY29u
Y2F0ZW5hdGlvbiBvZiAvcGFydF8xLywKLSAgICAgICAgY2hhbGxlbmdlID0gJycKLSAgICAgICAg
Y2hhbGxlbmdlICs9IHN0cnVjdC5wYWNrKCchSScsIGtleTEpICAjIG5ldHdvcmsgYnl0ZW9yZGVy
IGludAotICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywga2V5MikgICMgbmV0
d29yayBieXRlb3JkZXIgaW50Ci0gICAgICAgIGNoYWxsZW5nZSArPSBzZWxmLl9yZXF1ZXN0LmNv
bm5lY3Rpb24ucmVhZCg4KQotICAgICAgICByZXR1cm4gY2hhbGxlbmdlCi0KLSAgICBkZWYgX3Nl
bmRfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IFtdCi0KLSAgICAgICAgIyA1
LjIgMTAuIHNlbmQgdGhlIGZvbGxvd2luZyBsaW5lLgotICAgICAgICByZXNwb25zZS5hcHBlbmQo
J0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicpCi0KLSAgICAg
ICAgIyA1LjIgMTEuIHNlbmQgdGhlIGZvbGxvd2luZyBmaWVsZHMgdG8gdGhlIGNsaWVudC4KLSAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24u
VVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUpKQot
ICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1v
bi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKLSAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9MT0NBVElPTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24p
KQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNv
bW1vbi5TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2lu
KSkKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbDoKLSAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX3Byb3RvY29sKSkKLSAgICAgICAgIyA1LjIgMTIuIHNlbmQgdHdvIGJ5dGVzIDB4MEQgMHgw
QS4KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdcclxuJykKLSAgICAgICAgIyA1LjIgMTMuIHNl
bmQgL3Jlc3BvbnNlLwotICAgICAgICByZXNwb25zZS5hcHBlbmQoc2VsZi5fcmVxdWVzdC53c19j
aGFsbGVuZ2VfbWQ1KQotCi0gICAgICAgIHJhd19yZXNwb25zZSA9ICcnLmpvaW4ocmVzcG9uc2Up
Ci0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdfcmVzcG9uc2UpCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hh
a2U6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKLQotCi0j
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTBkZDc1
NGE0OTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3
ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL2h5YmkwMC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hl
YWRlcnBhcnNlcmhhbmRsZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFy
c2VyaGFuZGxlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI0NDQyMWNmNzli
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNl
cmhhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBmb3IgbW9kX3B5d2Vic29ja2V0
LgotCi1BcGFjaGUgSFRUUCBTZXJ2ZXIgYW5kIG1vZF9weXRob24gbXVzdCBiZSBjb25maWd1cmVk
IHN1Y2ggdGhhdCB0aGlzCi1mdW5jdGlvbiBpcyBjYWxsZWQgdG8gaGFuZGxlIFdlYlNvY2tldCBy
ZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcKLQotZnJvbSBtb2RfcHl0aG9uIGltcG9y
dCBhcGFjaGUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
aGFuZHNoYWtlCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLSMgUHl0aG9u
T3B0aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgcm9vdCBkaXJlY3RvcnkuCi1fUFlPUFRfSEFO
RExFUl9ST09UID0gJ21vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QnCi0KLSMgUHl0aG9uT3B0
aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgc2NhbiBkaXJlY3RvcnkuCi0jIFRoaXMgbXVzdCBi
ZSBhIGRpcmVjdG9yeSB1bmRlciB0aGUgcm9vdCBkaXJlY3RvcnkuCi0jIFRoZSBkZWZhdWx0IGlz
IHRoZSByb290IGRpcmVjdG9yeS4KLV9QWU9QVF9IQU5ETEVSX1NDQU4gPSAnbW9kX3B5d2Vic29j
a2V0LmhhbmRsZXJfc2NhbicKLQotIyBQeXRob25PcHRpb24gdG8gYWxsb3cgaGFuZGxlcnMgd2hv
c2UgY2Fub25pY2FsIHBhdGggaXMKLSMgbm90IHVuZGVyIHRoZSByb290IGRpcmVjdG9yeS4gSXQn
cyBkaXNhbGxvd2VkIGJ5IGRlZmF1bHQuCi0jIFNldCB0aGlzIG9wdGlvbiB3aXRoIHZhbHVlIG9m
ICd5ZXMnIHRvIGFsbG93LgotX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCA9ICgK
LSAgICAnbW9kX3B5d2Vic29ja2V0LmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInKQot
IyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVhbmluZ3MuICdZZXMnIGFuZCAnTm8nIGFyZSBh
bGxvd2VkIGp1c3QgZm9yCi0jIGNvbXBhdGliaWxpdHkuCi1fUFlPUFRfQUxMT1dfSEFORExFUlNf
T1VUU0lERV9ST09UX0RFRklOSVRJT04gPSB7Ci0gICAgJ29mZic6IEZhbHNlLCAnbm8nOiBGYWxz
ZSwgJ29uJzogVHJ1ZSwgJ3llcyc6IFRydWV9Ci0KLSMgKE9ic29sZXRlIG9wdGlvbi4gSWdub3Jl
ZC4pCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRvIGFsbG93IGhhbmRzaGFrZSBkZWZpbmVk
IGluIEhpeGllIDc1IHZlcnNpb24KLSMgcHJvdG9jb2wuIFRoZSBkZWZhdWx0IGlzIE5vbmUgKE9m
ZikKLV9QWU9QVF9BTExPV19EUkFGVDc1ID0gJ21vZF9weXdlYnNvY2tldC5hbGxvd19kcmFmdDc1
JwotIyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVhbmluZ3MuCi1fUFlPUFRfQUxMT1dfRFJB
RlQ3NV9ERUZJTklUSU9OID0geydvZmYnOiBGYWxzZSwgJ29uJzogVHJ1ZX0KLQotCi1jbGFzcyBB
cGFjaGVMb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6Ci0gICAgIiIiV3JhcHBlciBsb2dnaW5n
LkhhbmRsZXIgdG8gZW1pdCBsb2cgbWVzc2FnZSB0byBhcGFjaGUncyBlcnJvci5sb2cuIiIiCi0K
LSAgICBfTEVWRUxTID0gewotICAgICAgICBsb2dnaW5nLkRFQlVHOiBhcGFjaGUuQVBMT0dfREVC
VUcsCi0gICAgICAgIGxvZ2dpbmcuSU5GTzogYXBhY2hlLkFQTE9HX0lORk8sCi0gICAgICAgIGxv
Z2dpbmcuV0FSTklORzogYXBhY2hlLkFQTE9HX1dBUk5JTkcsCi0gICAgICAgIGxvZ2dpbmcuRVJS
T1I6IGFwYWNoZS5BUExPR19FUlIsCi0gICAgICAgIGxvZ2dpbmcuQ1JJVElDQUw6IGFwYWNoZS5B
UExPR19DUklULAotICAgICAgICB9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdD1O
b25lKToKLSAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNl
bGYuX2xvZ19lcnJvciA9IGFwYWNoZS5sb2dfZXJyb3IKLSAgICAgICAgaWYgcmVxdWVzdCBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ19lcnJvciA9IHJlcXVlc3QubG9nX2Vycm9y
Ci0KLSAgICAgICAgIyBUaW1lIGFuZCBsZXZlbCB3aWxsIGJlIHByaW50ZWQgYnkgQXBhY2hlLgot
ICAgICAgICBzZWxmLl9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcignJShuYW1lKXM6ICUo
bWVzc2FnZSlzJykKLQotICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6Ci0gICAgICAgIGFwYWNo
ZV9sZXZlbCA9IGFwYWNoZS5BUExPR19ERUJVRwotICAgICAgICBpZiByZWNvcmQubGV2ZWxubyBp
biBBcGFjaGVMb2dIYW5kbGVyLl9MRVZFTFM6Ci0gICAgICAgICAgICBhcGFjaGVfbGV2ZWwgPSBB
cGFjaGVMb2dIYW5kbGVyLl9MRVZFTFNbcmVjb3JkLmxldmVsbm9dCi0KLSAgICAgICAgbXNnID0g
c2VsZi5fZm9ybWF0dGVyLmZvcm1hdChyZWNvcmQpCi0KLSAgICAgICAgIyAic2VydmVyIiBwYXJh
bWV0ZXIgbXVzdCBiZSBwYXNzZWQgdG8gaGF2ZSAibGV2ZWwiIHBhcmFtZXRlciB3b3JrLgotICAg
ICAgICAjIElmIG9ubHkgImxldmVsIiBwYXJhbWV0ZXIgaXMgcGFzc2VkLCBub3RoaW5nIHNob3dz
IHVwIG9uIEFwYWNoZSdzCi0gICAgICAgICMgbG9nLiBIb3dldmVyLCBhdCB0aGlzIHBvaW50LCB3
ZSBjYW5ub3QgZ2V0IHRoZSBzZXJ2ZXIgb2JqZWN0IG9mIHRoZQotICAgICAgICAjIHZpcnR1YWwg
aG9zdCB3aGljaCB3aWxsIHByb2Nlc3MgV2ViU29ja2V0IHJlcXVlc3RzLiBUaGUgb25seSBzZXJ2
ZXIKLSAgICAgICAgIyBvYmplY3Qgd2UgY2FuIGdldCBoZXJlIGlzIGFwYWNoZS5tYWluX3NlcnZl
ci4gQnV0IFdoZXJldmVyIChzZXJ2ZXIKLSAgICAgICAgIyBjb25maWd1cmF0aW9uIGNvbnRleHQg
b3IgdmlydHVhbCBob3N0IGNvbnRleHQpIHdlIHB1dAotICAgICAgICAjIFB5dGhvbkhlYWRlclBh
cnNlckhhbmRsZXIgZGlyZWN0aXZlLCBhcGFjaGUubWFpbl9zZXJ2ZXIganVzdCBwb2ludHMKLSAg
ICAgICAgIyB0aGUgbWFpbiBzZXJ2ZXIgaW5zdGFuY2UgKG5vdCBhbnkgb2YgdmlydHVhbCBzZXJ2
ZXIgaW5zdGFuY2UpLiBUaGVuLAotICAgICAgICAjIEFwYWNoZSBmb2xsb3dzIExvZ0xldmVsIGRp
cmVjdGl2ZSBpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gY29udGV4dAotICAgICAgICAjIHRv
IGZpbHRlciBsb2dzLiBTbywgd2UgbmVlZCB0byBzcGVjaWZ5IExvZ0xldmVsIGluIHRoZSBzZXJ2
ZXIKLSAgICAgICAgIyBjb25maWd1cmF0aW9uIGNvbnRleHQuIEV2ZW4gaWYgd2Ugc3BlY2lmeSAi
TG9nTGV2ZWwgZGVidWciIGluIHRoZQotICAgICAgICAjIHZpcnR1YWwgaG9zdCBjb250ZXh0IHdo
aWNoIGFjdHVhbGx5IGhhbmRsZXMgV2ViU29ja2V0IGNvbm5lY3Rpb25zLAotICAgICAgICAjIERF
QlVHIGxldmVsIGxvZ3MgbmV2ZXIgc2hvdyB1cCB1bmxlc3MgIkxvZ0xldmVsIGRlYnVnIiBpcyBz
cGVjaWZpZWQKLSAgICAgICAgIyBpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gY29udGV4dC4K
LSAgICAgICAgIwotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBQcm92aWRlIGxvZ2dpbmcgbWV0
aG9kcyBvbiByZXF1ZXN0IG9iamVjdC4gV2hlbgotICAgICAgICAjIHJlcXVlc3QgaXMgbXBfcmVx
dWVzdCBvYmplY3QgKHdoZW4gdXNlZCB0b2dldGhlciB3aXRoIEFwYWNoZSksIHRoZQotICAgICAg
ICAjIG1ldGhvZHMgY2FsbCByZXF1ZXN0LmxvZ19lcnJvciBpbmRpcmVjdGx5LiBXaGVuIHJlcXVl
c3QgaXMKLSAgICAgICAgIyBfU3RhbmRhbG9uZVJlcXVlc3QsIHRoZSBtZXRob2RzIGNhbGwgUHl0
aG9uJ3MgbG9nZ2luZyBmYWNpbGl0eSB3aGljaAotICAgICAgICAjIHdlIGNyZWF0ZSBpbiBzdGFu
ZGFsb25lLnB5LgotICAgICAgICBzZWxmLl9sb2dfZXJyb3IobXNnLCBhcGFjaGVfbGV2ZWwsIGFw
YWNoZS5tYWluX3NlcnZlcikKLQotCi1kZWYgX2NvbmZpZ3VyZV9sb2dnaW5nKCk6Ci0gICAgbG9n
Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgICMgTG9ncyBhcmUgZmlsdGVyZWQgYnkgQXBh
Y2hlIGJhc2VkIG9uIExvZ0xldmVsIGRpcmVjdGl2ZSBpbiBBcGFjaGUKLSAgICAjIGNvbmZpZ3Vy
YXRpb24gZmlsZS4gV2UgbXVzdCBqdXN0IHBhc3MgbG9ncyBmb3IgYWxsIGxldmVscyB0bwotICAg
ICMgQXBhY2hlTG9nSGFuZGxlci4KLSAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykK
LSAgICBsb2dnZXIuYWRkSGFuZGxlcihBcGFjaGVMb2dIYW5kbGVyKCkpCi0KLQotX2NvbmZpZ3Vy
ZV9sb2dnaW5nKCkKLQotX0xPR0dFUiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0K
LWRlZiBfcGFyc2Vfb3B0aW9uKG5hbWUsIHZhbHVlLCBkZWZpbml0aW9uKToKLSAgICBpZiB2YWx1
ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIG1lYW5pbmcgPSBkZWZpbml0
aW9uLmdldCh2YWx1ZS5sb3dlcigpKQotICAgIGlmIG1lYW5pbmcgaXMgTm9uZToKLSAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIHZhbHVlIGZvciBQeXRob25PcHRpb24gJXM6ICVyJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUpKQotICAgIHJldHVybiBtZWFu
aW5nCi0KLQotZGVmIF9jcmVhdGVfZGlzcGF0Y2hlcigpOgotICAgIF9MT0dHRVIuaW5mbygnSW5p
dGlhbGl6aW5nIERpc3BhdGNoZXInKQotCi0gICAgb3B0aW9ucyA9IGFwYWNoZS5tYWluX3NlcnZl
ci5nZXRfb3B0aW9ucygpCi0KLSAgICBoYW5kbGVyX3Jvb3QgPSBvcHRpb25zLmdldChfUFlPUFRf
SEFORExFUl9ST09ULCBOb25lKQotICAgIGlmIG5vdCBoYW5kbGVyX3Jvb3Q6Ci0gICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignUHl0aG9uT3B0aW9uICVzIGlzIG5vdCBkZWZpbmVkJyAlIF9QWU9QVF9I
QU5ETEVSX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfRVJSKQot
Ci0gICAgaGFuZGxlcl9zY2FuID0gb3B0aW9ucy5nZXQoX1BZT1BUX0hBTkRMRVJfU0NBTiwgaGFu
ZGxlcl9yb290KQotCi0gICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290ID0gX3BhcnNlX29w
dGlvbigKLSAgICAgICAgX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCwKLSAgICAg
ICAgb3B0aW9ucy5nZXQoX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCksCi0gICAg
ICAgIF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1RfREVGSU5JVElPTikKLQotICAg
IGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAotICAgICAgICBoYW5kbGVyX3Jvb3Qs
IGhhbmRsZXJfc2NhbiwgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290KQotCi0gICAgZm9yIHdh
cm5pbmcgaW4gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKToKLSAgICAgICAgYXBhY2hlLmxv
Z19lcnJvcigKLSAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IFdhcm5pbmcgaW4gc291cmNl
IGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcsCi0gICAgICAgICAgICBhcGFjaGUuQVBMT0dfV0FSTklO
RykKLQotICAgIHJldHVybiBkaXNwYXRjaGVyCi0KLQotIyBJbml0aWFsaXplCi1fZGlzcGF0Y2hl
ciA9IF9jcmVhdGVfZGlzcGF0Y2hlcigpCi0KLQotZGVmIGhlYWRlcnBhcnNlcmhhbmRsZXIocmVx
dWVzdCk6Ci0gICAgIiIiSGFuZGxlIHJlcXVlc3QuCi0KLSAgICBBcmdzOgotICAgICAgICByZXF1
ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIG5hbWVkIGhl
YWRlcnBhcnNlcmhhbmRsZXIgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdAotICAgIG5hbWUgZm9y
IGEgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlci4KLSAgICAiIiIKLQotICAgIGhhbmRzaGFrZV9p
c19kb25lID0gRmFsc2UKLSAgICB0cnk6Ci0gICAgICAgICMgRmFsbGJhY2sgdG8gZGVmYXVsdCBo
dHRwIGhhbmRsZXIgZm9yIHJlcXVlc3QgcGF0aHMgZm9yIHdoaWNoCi0gICAgICAgICMgd2UgZG9u
J3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgotICAgICAgICBpZiBub3QgX2Rpc3BhdGNoZXIuZ2V0
X2hhbmRsZXJfc3VpdGUocmVxdWVzdC51cmkpOgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJy
b3IoCi0gICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogTm8gaGFuZGxlciBmb3IgcmVz
b3VyY2U6ICVyJyAlIHJlcXVlc3QudXJpLAotICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19J
TkZPKQotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAgICAgJ21v
ZF9weXdlYnNvY2tldDogRmFsbGJhY2sgdG8gQXBhY2hlJywgYXBhY2hlLkFQTE9HX0lORk8pCi0g
ICAgICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0gICAgZXhjZXB0IGRpc3BhdGNoLkRp
c3BhdGNoRXhjZXB0aW9uLCBlOgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKLSAgICAgICAg
ICAgICdtb2RfcHl3ZWJzb2NrZXQ6IERpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVzJyAlIGUs
Ci0gICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAgaWYgbm90IGhhbmRzaGFr
ZV9pc19kb25lOgotICAgICAgICAgICAgcmV0dXJuIGUuc3RhdHVzCi0KLSAgICB0cnk6Ci0gICAg
ICAgIGFsbG93X2RyYWZ0NzUgPSBfcGFyc2Vfb3B0aW9uKAotICAgICAgICAgICAgX1BZT1BUX0FM
TE9XX0RSQUZUNzUsCi0gICAgICAgICAgICBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29wdGlvbnMo
KS5nZXQoX1BZT1BUX0FMTE9XX0RSQUZUNzUpLAotICAgICAgICAgICAgX1BZT1BUX0FMTE9XX0RS
QUZUNzVfREVGSU5JVElPTikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kc2hha2Uu
ZG9faGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHJlcXVlc3QsIF9kaXNwYXRjaGVyLCBhbGxv
d0RyYWZ0NzU9YWxsb3dfZHJhZnQ3NSkKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9u
RXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAg
ICAgICAgJ21vZF9weXdlYnNvY2tldDogSGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJv
cjogJXMnICUgZSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAg
ICAgIHJlcXVlc3QuZXJyX2hlYWRlcnNfb3V0LmFkZChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN1
cHBvcnRlZF92ZXJzaW9ucykKLSAgICAgICAgICAgIHJldHVybiBhcGFjaGUuSFRUUF9CQURfUkVR
VUVTVAotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiwgZToKLSAg
ICAgICAgICAgICMgSGFuZHNoYWtlIGZvciB3cy93c3MgZmFpbGVkLgotICAgICAgICAgICAgIyBT
ZW5kIGh0dHAgcmVzcG9uc2Ugd2l0aCBlcnJvciBzdGF0dXMuCi0gICAgICAgICAgICByZXF1ZXN0
LmxvZ19lcnJvcigKLSAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBIYW5kc2hha2Ug
ZmFpbGVkIGZvciBlcnJvcjogJXMnICUgZSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0df
SU5GTykKLSAgICAgICAgICAgIHJldHVybiBlLnN0YXR1cwotCi0gICAgICAgIGhhbmRzaGFrZV9p
c19kb25lID0gVHJ1ZQotICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gX2Rpc3BhdGNoZXIK
LSAgICAgICAgX2Rpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIGV4Y2VwdCBo
YW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwgZToKLSAgICAgICAgcmVxdWVzdC5sb2df
ZXJyb3IoJ21vZF9weXdlYnNvY2tldDogQWJvcnRlZDogJXMnICUgZSwgYXBhY2hlLkFQTE9HX0lO
Rk8pCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlv
biBjYW4gYWxzbyBiZSB0aHJvd24gaWYgc29tZXRoaW5nIGlzIHdyb25nIGluCi0gICAgICAgICMg
cHl3ZWJzb2NrZXQgY29kZS4gSXQncyBjYXVnaHQgaGVyZSwgdGhlbi4KLQotICAgICAgICByZXF1
ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiBFeGNlcHRpb24gb2NjdXJyZWQ6ICVzXG4l
cycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgdXRpbC5nZXRfc3RhY2tfdHJhY2Uo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19FUlIpCi0gICAgICAg
ICMgVW5rbm93biBleGNlcHRpb25zIGJlZm9yZSBoYW5kc2hha2UgbWVhbiBBcGFjaGUgbXVzdCBo
YW5kbGUgaXRzCi0gICAgICAgICMgcmVxdWVzdCB3aXRoIGFub3RoZXIgaGFuZGxlci4KLSAgICAg
ICAgaWYgbm90IGhhbmRzaGFrZV9pc19kb25lOgotICAgICAgICAgICAgcmV0dXJuIGFwYWNoZS5E
RUNMSU5FRAotICAgICMgU2V0IGFzc2JhY2t3YXJkcyB0byBzdXBwcmVzcyByZXNwb25zZSBoZWFk
ZXIgZ2VuZXJhdGlvbiBieSBBcGFjaGUuCi0gICAgcmVxdWVzdC5hc3NiYWNrd2FyZHMgPSAxCi0g
ICAgcmV0dXJuIGFwYWNoZS5ET05FICAjIFJldHVybiBET05FIHN1Y2ggdGhhdCBubyBvdGhlciBo
YW5kbGVycyBhcmUgaW52b2tlZC4KLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
bW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI3NzQ2NTM5MzI4NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYzICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlV0aWxpdGllcyBmb3IgcGFyc2luZyBhbmQg
Zm9ybWF0dGluZyBoZWFkZXJzIHRoYXQgZm9sbG93IHRoZSBncmFtbWFyIGRlZmluZWQKLWluIEhU
VFAgUkZDIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0LgotIiIiCi0KLQotaW1w
b3J0IHVybHBhcnNlCi0KLQotX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/PXt9IFx0Jwot
Ci0KLWRlZiBfaXNfY2hhcihjKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ0hB
UiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCi0KLSAgICByZXR1cm4gb3JkKGMpIDw9IDEy
NwotCi0KLWRlZiBfaXNfY3RsKGMpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBD
VEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgotCi0gICAgcmV0dXJuIG9yZChjKSA8PSAz
MSBvciBvcmQoYykgPT0gMTI3Ci0KLQotY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVjdCk6Ci0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLSAg
ICAgICAgc2VsZi5oZWFkID0gMAotCi0KLWRlZiBwZWVrKHN0YXRlLCBwb3M9MCk6Ci0gICAgIiIi
UGVla3MgdGhlIGNoYXJhY3RlciBhdCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgotCi0g
ICAgaWYgc3RhdGUuaGVhZCArIHBvcyA+PSBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVy
biBOb25lCi0KLSAgICByZXR1cm4gc3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQotCi0KLWRl
ZiBjb25zdW1lKHN0YXRlLCBhbW91bnQ9MSk6Ci0gICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFt
b3VudCBvZiBieXRlcyBmcm9tIHRoZSBoZWFkIGFuZCByZXR1cm5zIHRoZQotICAgIGNvbnN1bWVk
IGJ5dGVzLiBJZiB0aGVyZSdzIG5vdCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBO
b25lLgotICAgICIiIgotCi0gICAgaWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5k
YXRhKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3Rh
dGUuaGVhZDpzdGF0ZS5oZWFkICsgYW1vdW50XQotICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFk
ICsgYW1vdW50Ci0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb25zdW1lX3N0cmluZyhzdGF0
ZSwgZXhwZWN0ZWQpOgotICAgICIiIkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3Rl
ZCBzdHJpbmcsIGNvbnN1bWVzIHRoZSBzdHJpbmcgZnJvbQotICAgIHRoZSBoZWFkLiBSZXR1cm5z
IFRydWUgaWYgY29uc3VtZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKLSAgICBG
YWxzZS4KLSAgICAiIiIKLQotICAgIHBvcyA9IDAKLQotICAgIGZvciBjIGluIGV4cGVjdGVkOgot
ICAgICAgICBpZiBjICE9IHBlZWsoc3RhdGUsIHBvcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgcG9zICs9IDEKLQotICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICByZXR1
cm4gVHJ1ZQotCi0KLWRlZiBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSBM
V1MgZnJvbSB0aGUgaGVhZC4gUmV0dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCi0g
ICAgT3RoZXJ3aXNlLCByZXR1cm5zIEZhbHNlLgotCi0gICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8
IEhUICkKLSAgICAiIiIKLQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0KLSAgICBj
b25zdW1lX3N0cmluZyhzdGF0ZSwgJ1xyXG4nKQotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUg
VHJ1ZToKLSAgICAgICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyA9PSAnICcg
b3IgYyA9PSAnXHQnOgotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGlmIHBvcyA9PSAwOgotICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5h
bF9oZWFkCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICAgICAgICAgICAgICByZXR1
cm4gVHJ1ZQotCi0KLWRlZiBjb25zdW1lX2x3c2VzKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyAq
TFdTIGZyb20gdGhlIGhlYWQuIiIiCi0KLSAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0g
ICAgICAgIHBhc3MKLQotCi1kZWYgY29uc3VtZV90b2tlbihzdGF0ZSk6Ci0gICAgIiIiQ29uc3Vt
ZXMgYSB0b2tlbiBmcm9tIHRoZSBoZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5v
IHRva2VuCi0gICAgd2FzIGZvdW5kLgotICAgICIiIgotCi0gICAgcG9zID0gMAotCi0gICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyBpcyBO
b25lIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6
Ci0gICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
Ci0gICAgICAgICAgICByZXR1cm4gY29uc3VtZShzdGF0ZSwgcG9zKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcG9zICs9IDEKLQotCi1kZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3Ry
aW5nKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywg
YW5kIHJldHVybnMgdGhlIHRva2VuIG9yIHVucXVvdGVkCi0gICAgc3RyaW5nLiBJZiBubyB0b2tl
biBvciBxdW90ZWQtc3RyaW5nIHdhcyBmb3VuZCwgcmV0dXJucyBOb25lLgotICAgICIiIgotCi0g
ICAgb3JpZ2luYWxfaGVhZCA9IHN0YXRlLmhlYWQKLQotICAgIGlmIG5vdCBjb25zdW1lX3N0cmlu
ZyhzdGF0ZSwgJyInKToKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAg
ICByZXN1bHQgPSBbXQotCi0gICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKLQotICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgIGlmIG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVf
bHdzKHN0YXRlKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQotICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICBjID0gY29uc3VtZShzdGF0ZSkKLSAgICAgICAgaWYgYyBpcyBO
b25lOgotICAgICAgICAgICAgIyBxdW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRv
dWJsZSBxdW90YXRpb24KLSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoK
LSAgICAgICAgICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCi0gICAgICAgICAgICBpZiBf
aXNfY2hhcihjKToKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1
b3RlZC1wYWlyCi0gICAgICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKLSAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKLSAgICAg
ICAgICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICciJzoK
LSAgICAgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZWxpZiBfaXNfY3Rs
KGMpOgotICAgICAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQK
LSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQotCi0K
LWRlZiBxdW90ZV9pZl9uZWNlc3Nhcnkocyk6Ci0gICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJp
bmcgaW50byBxdW90ZWQtc3RyaW5nLiIiIgotCi0gICAgcXVvdGUgPSBGYWxzZQotICAgIGlmIHMg
PT0gJyc6Ci0gICAgICAgIHJldHVybiAnIiInCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBj
IGluIHM6Ci0gICAgICAgIGlmIGMgPT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0
bChjKSBvciBub3QgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICBxdW90ZSA9IFRydWUKLQotICAg
ICAgICBpZiBjID09ICciJyBvciBfaXNfY3RsKGMpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnXFwnICsgYykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykK
LQotICAgIGlmIHF1b3RlOgotICAgICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsg
JyInCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0KLWRlZiBw
YXJzZV91cmkodXJpKToKLSAgICAiIiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9z
dCwgcG9ydCBhbmQgcmVzb3VyY2UuIiIiCi0KLSAgICBwYXJzZWQgPSB1cmxwYXJzZS51cmxzcGxp
dCh1cmkpCi0gICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3NzJyBhbmQgcGFyc2VkLnNjaGVtZSAh
PSAnd3MnOgotICAgICAgICAjIHx1cml8IG11c3QgYmUgYSByZWxhdGl2ZSBVUkkuCi0gICAgICAg
ICMgVE9ETyh0b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8dXJpfC4KLSAgICAgICAgcmV0dXJu
IE5vbmUsIE5vbmUsIHVyaQotCi0gICAgaWYgcGFyc2VkLmhvc3RuYW1lIGlzIE5vbmU6Ci0gICAg
ICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCi0KLSAgICBwb3J0ID0gTm9uZQotICAgIHRyeToK
LSAgICAgICAgcG9ydCA9IHBhcnNlZC5wb3J0Ci0gICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0g
ICAgICAgICMgcG9ydCBwcm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBw
b3J0IGRlc2NyaXB0aW9uIGxpa2UKLSAgICAgICAgIyAnd3M6Ly9ob3N0Oi9wYXRoJy4KLSAgICAg
ICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKLQotICAgIGlmIHBvcnQgaXMgTm9uZToKLSAgICAg
ICAgaWYgcGFyc2VkLnNjaGVtZSA9PSAnd3MnOgotICAgICAgICAgICAgcG9ydCA9IDgwCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3J0ID0gNDQzCi0KLSAgICBwYXRoID0gcGFyc2VkLnBh
dGgKLSAgICBpZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCArPSAnLycKLSAgICBpZiBwYXJzZWQu
cXVlcnk6Ci0gICAgICAgIHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Ci0gICAgaWYgcGFyc2Vk
LmZyYWdtZW50OgotICAgICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFnbWVudAotCi0gICAg
cmV0dXJuIHBhcnNlZC5ob3N0bmFtZSwgcG9ydCwgcGF0aAotCi0KLXRyeToKLSAgICB1cmxwYXJz
ZS51c2VzX25ldGxvYy5pbmRleCgnd3MnKQotZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgIyB1
cmxwYXJzZSBpbiBQeXRob24yLjUuMSBkb2Vzbid0IGhhdmUgJ3dzJyBhbmQgJ3dzcycgZW50cmll
cy4KLSAgICB1cmxwYXJzZS51c2VzX25ldGxvYy5hcHBlbmQoJ3dzJykKLSAgICB1cmxwYXJzZS51
c2VzX25ldGxvYy5hcHBlbmQoJ3dzcycpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRkNGNkOTU4NTk1YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTWVt
b3JpemluZyBmaWxlLgotCi1BIG1lbW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9y
aXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotIiIiCi0KLQotaW1wb3J0IHN5cwotCi0KLWNs
YXNzIE1lbW9yaXppbmdGaWxlKG9iamVjdCk6Ci0gICAgIiIiTWVtb3JpemluZ0ZpbGUgd3JhcHMg
YSBmaWxlIGFuZCBtZW1vcml6ZXMgbGluZXMgcmVhZCBieSByZWFkbGluZS4KLQotICAgIE5vdGUg
dGhhdCBkYXRhIHJlYWQgYnkgb3RoZXIgbWV0aG9kcyBhcmUgbm90IG1lbW9yaXplZC4gVGhpcyBi
ZWhhdmlvcgotICAgIGlzIGdvb2QgZW5vdWdoIGZvciBtZW1vcml6aW5nIGxpbmVzIFNpbXBsZUhU
VFBTZXJ2ZXIgcmVhZHMgYmVmb3JlCi0gICAgdGhlIGNvbnRyb2wgcmVhY2hlcyBXZWJTb2NrZXRS
ZXF1ZXN0SGFuZGxlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlXywg
bWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4aW50KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFu
IGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmaWxlXzogdGhlIGZpbGUg
b2JqZWN0IHRvIHdyYXAuCi0gICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVzOiB0aGUgbWF4
aW11bSBudW1iZXIgb2YgbGluZXMgdG8gbWVtb3JpemUuCi0gICAgICAgICAgICAgICAgT25seSB0
aGUgZmlyc3QgbWF4X21lbW9yaXplZF9saW5lcyBhcmUgbWVtb3JpemVkLgotICAgICAgICAgICAg
ICAgIERlZmF1bHQ6IHN5cy5tYXhpbnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2Zp
bGUgPSBmaWxlXwotICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMgPSBbXQotICAgICAgICBz
ZWxmLl9tYXhfbWVtb3JpemVkX2xpbmVzID0gbWF4X21lbW9yaXplZF9saW5lcwotICAgICAgICBz
ZWxmLl9idWZmZXJlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUgPSBOb25l
Ci0KLSAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgaWYgbmFt
ZSBpbiAoJ19maWxlJywgJ19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMn
LAotICAgICAgICAgICAgICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3Jl
YWRsaW5lJywKLSAgICAgICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKLSAg
ICAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQotICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCi0KLSAgICBkZWYg
cmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxp
bmUgYW5kIG1lbW9yaXplIHRoZSBsaW5lIHJlYWQuCi0KLSAgICAgICAgTm90ZSB0aGF0IGV2ZW4g
aWYgc2l6ZSBpcyBzcGVjaWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKLSAgICAg
ICAgdGhlIHdob2xlIGxpbmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBv
YmplY3QgYnkKLSAgICAgICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgaWYgc2VsZi5fYnVmZmVyZWQ6Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5f
YnVmZmVyZWRfbGluZQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWQgPSBGYWxzZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKQotICAgICAg
ICAgICAgaWYgbGluZSBhbmQgbGVuKHNlbGYuX21lbW9yaXplZF9saW5lcykgPCBzZWxmLl9tYXhf
bWVtb3JpemVkX2xpbmVzOgotICAgICAgICAgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcy5h
cHBlbmQobGluZSkKLSAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBzaXplIDwgbGVuKGxpbmUpOgot
ICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9idWZm
ZXJlZF9saW5lID0gbGluZVtzaXplOl0KLSAgICAgICAgICAgIHJldHVybiBsaW5lWzpzaXplXQot
ICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVmIGdldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6
Ci0gICAgICAgICIiIkdldCBsaW5lcyBtZW1vcml6ZWQgc28gZmFyLiIiIgotICAgICAgICByZXR1
cm4gc2VsZi5fbWVtb3JpemVkX2xpbmVzCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzFh
MDExNGI0YmMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXNn
dXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEx
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi0iIiJNZXNzYWdlIHJlbGF0ZWQgdXRpbGl0aWVzLgotCi1Ob3RlOiByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKLW1v
ZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0IHRoZXkgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBj
b25uZWN0aW9uCi1oYW5kbGVycy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRp
b25zLiBGb3IgZXhhbXBsZSwKLXJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1aXRhYmxlIGJl
Y2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3Ci1ieXRlcyB3cml0aW5nL3JlYWRpbmcu
Ci0iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLQotCi0jIEV4cG9ydCBF
eGNlcHRpb24gc3ltYm9scyBmcm9tIG1zZ3V0aWwgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkK
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQg
SW52YWxpZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi0KLQotIyBBbiBBUEkgZm9y
IGhhbmRsZXIgdG8gc2VuZC9yZWNlaXZlIFdlYlNvY2tldCBtZXNzYWdlcy4KLWRlZiBjbG9zZV9j
b25uZWN0aW9uKHJlcXVlc3QpOgotICAgICIiIkNsb3NlIGNvbm5lY3Rpb24uCi0KLSAgICBBcmdz
OgotICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgIiIiCi0gICAgcmVx
dWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0KLQotZGVmIHNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCBwYXlsb2FkX2RhdGEsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICIiIlNl
bmQgYSBtZXNzYWdlIChvciBwYXJ0IG9mIGEgbWVzc2FnZSkuCi0KLSAgICBBcmdzOgotICAgICAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgIHBheWxvYWRfZGF0YTogdW5p
Y29kZSB0ZXh0IG9yIHN0ciBiaW5hcnkgdG8gc2VuZC4KLSAgICAgICAgZW5kOiBUcnVlIHRvIHRl
cm1pbmF0ZSBhIG1lc3NhZ2UuCi0gICAgICAgICAgICAgRmFsc2UgdG8gc2VuZCBwYXlsb2FkX2Rh
dGEgYXMgcGFydCBvZiBhIG1lc3NhZ2UgdGhhdCBpcyB0byBiZQotICAgICAgICAgICAgIHRlcm1p
bmF0ZWQgYnkgbmV4dCBvciBsYXRlciBzZW5kX21lc3NhZ2UgY2FsbCB3aXRoIGVuZD1UcnVlLgot
ICAgICAgICBiaW5hcnk6IHNlbmQgcGF5bG9hZF9kYXRhIGFzIGJpbmFyeSBmcmFtZShzKS4KLSAg
ICBSYWlzZXM6Ci0gICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBzZXJ2ZXIgYWxy
ZWFkeSB0ZXJtaW5hdGVkLgotICAgICIiIgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVz
c2FnZShwYXlsb2FkX2RhdGEsIGVuZCwgYmluYXJ5KQotCi0KLWRlZiByZWNlaXZlX21lc3NhZ2Uo
cmVxdWVzdCk6Ci0gICAgIiIiUmVjZWl2ZSBhIFdlYlNvY2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0
cyBwYXlsb2FkIGFzIGEgdGV4dCBpbgotICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgot
Ci0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgIFJh
aXNlczoKLSAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgc2Vu
ZCBpbnZhbGlkIGZyYW1lLgotICAgICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVu
IGNsaWVudCBzZW5kIHVuc3VwcG9ydGVkIGZyYW1lIGUuZy4gc29tZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZiByZXNlcnZlZCBiaXQgaXMgc2V0IGJ1dCBubyBleHRlbnNp
b24gY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBpdC4K
LSAgICAgICAgSW52YWxpZFVURjhFeGNlcHRpb246ICAgICAgd2hlbiBjbGllbnQgc2VuZCBhIHRl
eHQgZnJhbWUgY29udGFpbmluZyBhbnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW52YWxpZCBVVEYtOCBzdHJpbmcuCi0gICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhj
ZXB0aW9uOiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkbHkuCi0gICAgICAgIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbjogICAgIHdoZW4gY2xpZW50IGFscmVhZHkgdGVybWluYXRlZC4KLSAgICAiIiIKLSAgICBy
ZXR1cm4gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLQotCi1kZWYgc2VuZF9w
aW5nKHJlcXVlc3QsIGJvZHk9JycpOgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZyhi
b2R5KQotCi0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAi
IiJUaGlzIGNsYXNzIHJlY2VpdmVzIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudC4KLQotICAgIFRo
aXMgY2xhc3MgcHJvdmlkZXMgdGhyZWUgd2F5cyB0byByZWNlaXZlIG1lc3NhZ2VzOiBibG9ja2lu
ZywKLSAgICBub24tYmxvY2tpbmcsIGFuZCB2aWEgY2FsbGJhY2suIENhbGxiYWNrIGhhcyB0aGUg
aGlnaGVzdCBwcmVjZWRlbmNlLgotCi0gICAgTm90ZTogVGhpcyBjbGFzcyBzaG91bGQgbm90IGJl
IHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcwotICAgIGJlY2F1c2UgcHlP
cGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBlcnJvciBpZiB0aGUgc29j
a2V0Ci0gICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToKLSAgICAgICAg
IiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBvbm1lc3NhZ2U6IGEgZnVu
Y3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgotICAgICAgICAg
ICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5jdGlvbiBpcyBj
YWxsZWQgb24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQuIEluIHRoYXQg
Y2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgYW5k
IE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcwotICAgICAgICAgICAg
ICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1lc3NhZ2VzLgot
ICAgICAgICAiIiIKLQotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX3F1ZXVlID0gUXVl
dWUuUXVldWUoKQotICAgICAgICBzZWxmLl9vbm1lc3NhZ2UgPSBvbm1lc3NhZ2UKLSAgICAgICAg
c2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVl
KQotICAgICAgICBzZWxmLnN0YXJ0KCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gcmVjZWl2ZV9tZXNzYWdlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAg
ICAgICAgICAgaWYgc2VsZi5fb25tZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
bm1lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9xdWV1ZS5wdXQobWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgIGNsb3NlX2Nvbm5lY3Rpb24oc2VsZi5fcmVxdWVzdCkKLQotICAgIGRlZiByZWNlaXZlKHNl
bGYpOgotICAgICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgYmxv
Y2tpbmcuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG1lc3NhZ2UgYXMgYSB1bmlj
b2RlIHN0cmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9xdWV1ZS5nZXQo
KQotCi0gICAgZGVmIHJlY2VpdmVfbm93YWl0KHNlbGYpOgotICAgICAgICAiIiIgUmVjZWl2ZSBh
IG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgbm9uLWJsb2NraW5nLgotCi0gICAgICAgIFJldHVy
bnM6Ci0gICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcgaWYgYXZhaWxhYmxl
LiBOb25lIG90aGVyd2lzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IG1lc3NhZ2UgPSBzZWxmLl9xdWV1ZS5nZXRfbm93YWl0KCkKLSAgICAgICAgZXhjZXB0IFF1ZXVl
LkVtcHR5OgotICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKLSAgICAgICAgcmV0dXJuIG1lc3Nh
Z2UKLQotICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICAiIiJSZXF1ZXN0IHRvIHN0b3AgdGhp
cyBpbnN0YW5jZS4KLQotICAgICAgICBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBzdG9wcGVkIGFmdGVy
IHJlY2VpdmluZyB0aGUgbmV4dCBtZXNzYWdlLgotICAgICAgICBUaGlzIG1ldGhvZCBtYXkgbm90
IGJlIHZlcnkgdXNlZnVsLCBidXQgdGhlcmUgaXMgbm8gY2xlYW4gd2F5Ci0gICAgICAgIGluIFB5
dGhvbiB0byBmb3JjZWZ1bGx5IHN0b3AgYSBydW5uaW5nIHRocmVhZC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0KLWNsYXNzIE1lc3NhZ2VTZW5k
ZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyBzZW5kcyBtZXNzYWdlcyB0
byB0aGUgY2xpZW50LgotCi0gICAgVGhpcyBjbGFzcyBwcm92aWRlcyBib3RoIHN5bmNocm9ub3Vz
IGFuZCBhc3luY2hyb25vdXMgd2F5cyB0byBzZW5kCi0gICAgbWVzc2FnZXMuCi0KLSAgICBOb3Rl
OiBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZl
ciBmb3Igd3NzCi0gICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNl
cyBhIGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKLSAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRp
cGxlIHRocmVhZHMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6
Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLSAgICAg
ICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9yZXF1ZXN0
ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICBkZWYgcnVu
KHNlbGYpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbWVzc2FnZSwgY29uZGl0
aW9uID0gc2VsZi5fcXVldWUuZ2V0KCkKLSAgICAgICAgICAgIGNvbmRpdGlvbi5hY3F1aXJlKCkK
LSAgICAgICAgICAgIHNlbmRfbWVzc2FnZShzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQotICAgICAg
ICAgICAgY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBjb25kaXRpb24ucmVsZWFzZSgp
Ci0KLSAgICBkZWYgc2VuZChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiU2VuZCBhIG1lc3Nh
Z2UsIGJsb2NraW5nLiIiIgotCi0gICAgICAgIGNvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRp
b24oKQotICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3F1ZXVlLnB1
dCgobWVzc2FnZSwgY29uZGl0aW9uKSkKLSAgICAgICAgY29uZGl0aW9uLndhaXQoKQotCi0gICAg
ZGVmIHNlbmRfbm93YWl0KHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAiIiJTZW5kIGEgbWVzc2Fn
ZSwgbm9uLWJsb2NraW5nLiIiIgotCi0gICAgICAgIHNlbGYuX3F1ZXVlLnB1dCgobWVzc2FnZSwg
dGhyZWFkaW5nLkNvbmRpdGlvbigpKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9tdXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJz
b2NrZXQvbXV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjMzNDY4NWIzMTEu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTg4OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlz
IGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGV4
aW5nIGV4dGVuc2lvbi4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL2RyYWZ0LWlldGYtaHliaS13ZWJzb2NrZXQtbXVsdGlwbGV4aW5nLTA2Ci0iIiIKLQotCi1p
bXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBjb3B5Ci1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFp
bC5wYXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IHN0cnVjdAotaW1w
b3J0IHRocmVhZGluZwotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0
Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9u
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IEZyYW1lCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJhbWUKLWZyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2Jv
ZHkKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2hlYWRl
cgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfbGVuZ3Ro
X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9m
cmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBoeWJpCi0KLQotX0NP
TlRST0xfQ0hBTk5FTF9JRCA9IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BD
T0RFX0FERF9DSEFOTkVMX1JFUVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQ
T05TRSA9IDEKLV9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1Bf
Q0hBTk5FTCA9IDMKLV9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLV9NQVhfQ0hB
Tk5FTF9JRCA9IDIgKiogMjkgLSAxCi0KLV9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RT
ID0gNjQKLV9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQgPSA4ICogMTAyNAotCi1fSEFORFNIQUtF
X0VOQ09ESU5HX0lERU5USVRZID0gMAotX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQSA9IDEKLQot
IyBXZSBuZWVkIG9ubHkgdGhlc2Ugc3RhdHVzIGNvZGUgZm9yIG5vdy4KLV9IVFRQX0JBRF9SRVNQ
T05TRV9NRVNTQUdFUyA9IHsKLSAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1Q6ICdC
YWQgUmVxdWVzdCcsCi19Ci0KLSMgRHJvcENoYW5uZWwgcmVhc29uIGNvZGUKLSMgVE9ETyhiYXNo
aSk6IERlZmluZSBhbGwgcmVhc29uIGNvZGUgZGVmaW5lZCBpbiAtMDUgZHJhZnQuCi1fRFJPUF9D
T0RFX05PUk1BTF9DTE9TVVJFID0gMTAwMAotCi1fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxB
VElOR19NRVNTQUdFID0gMjAwMQotX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCA9IDIw
MDIKLV9EUk9QX0NPREVfRU5DQVBTVUxBVEVEX0ZSQU1FX0lTX1RSVU5DQVRFRCA9IDIwMDMKLV9E
Uk9QX0NPREVfVU5LTk9XTl9NVVhfT1BDT0RFID0gMjAwNAotX0RST1BfQ09ERV9JTlZBTElEX01V
WF9DT05UUk9MX0JMT0NLID0gMjAwNQotX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RT
ID0gMjAwNgotX0RST1BfQ09ERV9ORVdfQ0hBTk5FTF9TTE9UX1ZJT0xBVElPTiA9IDIwMDcKLV9E
Uk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HID0gMjAxMAotCi1fRFJPUF9DT0RFX1NF
TkRfUVVPVEFfVklPTEFUSU9OID0gMzAwNQotX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9X
ID0gMzAwNgotX0RST1BfQ09ERV9BQ0tOT1dMRURHRUQgPSAzMDA4Ci1fRFJPUF9DT0RFX0JBRF9G
UkFHTUVOVEFUSU9OID0gMzAwOQotCi0KLWNsYXNzIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oRXhj
ZXB0aW9uKToKLSAgICAiIiJFeGNlcHRpb24gaW4gaGFuZGxpbmcgbXVsdGlwbGV4aW5nIGV4dGVu
c2lvbi4iIiIKLSAgICBwYXNzCi0KLQotIyBUZW1wb3JhcnkKLWNsYXNzIE11eE5vdEltcGxlbWVu
dGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gYSBmbG93IGVudGVy
cyB1bmltcGxlbWVudGVkIGNvZGUgcGF0aC4iIiIKLSAgICBwYXNzCi0KLQotY2xhc3MgTG9naWNh
bENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hl
biBsb2dpY2FsIGNvbm5lY3Rpb24gaXMgZ3JhY2VmdWxseSBjbG9zZWQuIiIiCi0gICAgcGFzcwot
Ci0KLWNsYXNzIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFp
c2VkIHdoZW4gdGhlcmUgaXMgYSBwaHlzaWNhbCBjb25uZWN0aW9uIGVycm9yLiIiIgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBkcm9wX2NvZGUsIG1lc3NhZ2U9JycpOgotICAgICAgICBzdXBlcihQ
aHlzaWNhbENvbm5lY3Rpb25FcnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY29k
ZT0lZCwgbWVzc2FnZT0lcicgJSAoZHJvcF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5k
cm9wX2NvZGUgPSBkcm9wX2NvZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0K
LWNsYXNzIExvZ2ljYWxDaGFubmVsRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hl
biB0aGVyZSBpcyBhIGxvZ2ljYWwgY2hhbm5lbCBlcnJvci4iIiIKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY2hhbm5lbF9pZCwgZHJvcF9jb2RlLCBtZXNzYWdlPScnKToKLSAgICAgICAgc3VwZXIo
TG9naWNhbENoYW5uZWxFcnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY2hhbm5l
bF9pZD0lZCwgY29kZT0lZCwgbWVzc2FnZT0lcicgJSAoCi0gICAgICAgICAgICAgICAgY2hhbm5l
bF9pZCwgZHJvcF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hh
bm5lbF9pZAotICAgICAgICBzZWxmLmRyb3BfY29kZSA9IGRyb3BfY29kZQotICAgICAgICBzZWxm
Lm1lc3NhZ2UgPSBtZXNzYWdlCi0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lk
KToKLSAgICBpZiBjaGFubmVsX2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hh
bm5lbCBpZCAlZCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYg
Y2hhbm5lbF9pZCA8IDIgKiogNzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAg
IGlmIGNoYW5uZWxfaWQgPCAyICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFI
JywgMHg4MDAwICsgY2hhbm5lbF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAg
ICAgICAgZmlyc3QgPSBjaHIoMHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0
dXJuIGZpcnN0ICsgc3RydWN0LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBp
ZiBjaGFubmVsX2lkIDwgMiAqKiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcs
IDB4ZTAwMDAwMDAgKyBjaGFubmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5l
bCBpZCAlZCBpcyB0b28gbGFyZ2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1i
ZXIobnVtYmVyKToKLSAgICByZXR1cm4gY3JlYXRlX2xlbmd0aF9oZWFkZXIobnVtYmVyLCBGYWxz
ZSkKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkLCBlbmNv
ZGVkX2hhbmRzaGFrZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5n
PTAsIHJlamVjdGVkPUZhbHNlKToKLSAgICBpZiBlbmNvZGluZyAhPSAwIGFuZCBlbmNvZGluZyAh
PSAxOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVuY29kaW5nICVkJyAlIGVu
Y29kaW5nKQotCi0gICAgZmlyc3RfYnl0ZSA9ICgoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVT
UE9OU0UgPDwgNSkgfAotICAgICAgICAgICAgICAgICAgKHJlamVjdGVkIDw8IDQpIHwgZW5jb2Rp
bmcpCi0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2Rl
X2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKGxl
bihlbmNvZGVkX2hhbmRzaGFrZSkpICsKLSAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSkK
LSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9p
ZCwgY29kZT1Ob25lLCBtZXNzYWdlPScnKToKLSAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBj
b2RlIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVj
aWZpZWQgaWYgbWVzc2FnZSBpcyBzcGVjaWZpZWQnKQotCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTCA8PCA1Ci0gICAgYmxvY2sgPSBjaHIoZmlyc3RfYnl0ZSkgKyBf
ZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkKLSAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAg
ICAgIGJsb2NrICs9IF9lbmNvZGVfbnVtYmVyKDApICMgUmVhc29uIHNpemUKLSAgICBlbHNlOgot
ICAgICAgICByZWFzb24gPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIG1lc3NhZ2UKLSAgICAg
ICAgcmVhc29uX3NpemUgPSBfZW5jb2RlX251bWJlcihsZW4ocmVhc29uKSkKLSAgICAgICAgYmxv
Y2sgKz0gcmVhc29uX3NpemUgKyByZWFzb24KLQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBf
Y3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAg
Zmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1Ci0gICAgYmxvY2sgPSAo
Y2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5l
bF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkK
LSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3Rz
LCBzZW5kX3F1b3RhKToKLSAgICBpZiBzbG90cyA8IDAgb3Igc2VuZF9xdW90YSA8IDA6Ci0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Nsb3RzIGFuZCBzZW5kX3F1b3RhIG11c3QgYmUgbm9uLW5l
Z2F0aXZlLicpCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Qg
PDwgNQotICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSArCi0gICAgICAgICAgICAgX2VuY29k
ZV9udW1iZXIoc2xvdHMpICsKLSAgICAgICAgICAgICBfZW5jb2RlX251bWJlcihzZW5kX3F1b3Rh
KSkKLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9mYWxsYmFja19uZXdfY2hhbm5l
bF9zbG90KCk6Ci0gICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9U
IDw8IDUpIHwgMSAjIFNldCB0aGUgRiBmbGFnCi0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUp
ICsgX2VuY29kZV9udW1iZXIoMCkgKyBfZW5jb2RlX251bWJlcigwKSkKLSAgICByZXR1cm4gYmxv
Y2sKLQotCi1kZWYgX3BhcnNlX3JlcXVlc3RfdGV4dChyZXF1ZXN0X3RleHQpOgotICAgIHJlcXVl
c3RfbGluZSwgaGVhZGVyX2xpbmVzID0gcmVxdWVzdF90ZXh0LnNwbGl0KCdcclxuJywgMSkKLQot
ICAgIHdvcmRzID0gcmVxdWVzdF9saW5lLnNwbGl0KCcgJykKLSAgICBpZiBsZW4od29yZHMpICE9
IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBSZXF1ZXN0LUxpbmUgc3ludGF4ICVy
JyAlIHJlcXVlc3RfbGluZSkKLSAgICBbY29tbWFuZCwgcGF0aCwgdmVyc2lvbl0gPSB3b3Jkcwot
ICAgIGlmIHZlcnNpb24gIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
QmFkIHJlcXVlc3QgdmVyc2lvbiAlcicgJSB2ZXJzaW9uKQotCi0gICAgIyBlbWFpbC5wYXJzZXIu
UGFyc2VyKCkgcGFyc2VzIFJGQyAyODIyIChSRkMgODIyKSBzdHlsZSBoZWFkZXJzLgotICAgICMg
UkZDIDY0NTUgcmVmZXJzIFJGQyAyNjE2IGZvciBoYW5kc2hha2UgcGFyc2luZywgYW5kIFJGQyAy
NjE2IHJlZmVycwotICAgICMgUkZDIDgyMi4KLSAgICBoZWFkZXJzID0gZW1haWwucGFyc2VyLlBh
cnNlcigpLnBhcnNlc3RyKGhlYWRlcl9saW5lcykKLSAgICByZXR1cm4gY29tbWFuZCwgcGF0aCwg
dmVyc2lvbiwgaGVhZGVycwotCi0KLWNsYXNzIF9Db250cm9sQmxvY2sob2JqZWN0KToKLSAgICAi
IiJBIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHBhcnNpbmcgcmVzdWx0IG9mIG11bHRpcGxleGluZyBj
b250cm9sIGJsb2NrLgotICAgIENvbnRyb2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxs
IGJlIGFkZGVkIGJ5IF9NdXhGcmFtZVBheWxvYWRQYXJzZXIuCi0gICAgKGUuZy4gZW5jb2RlZF9o
YW5kc2hha2Ugd2lsbCBiZSBhZGRlZCBmb3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCi0gICAgQWRk
Q2hhbm5lbFJlc3BvbnNlKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29k
ZSk6Ci0gICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0KLQotY2xhc3MgX011eEZyYW1lUGF5
bG9hZFBhcnNlcihvYmplY3QpOgotICAgICIiIkEgY2xhc3MgdGhhdCBwYXJzZXMgbXVsdGlwbGV4
ZWQgZnJhbWUgcGF5bG9hZC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXlsb2FkKToK
LSAgICAgICAgc2VsZi5fZGF0YSA9IHBheWxvYWQKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlv
biA9IDAKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYp
Ci0KLSAgICBkZWYgcmVhZF9jaGFubmVsX2lkKHNlbGYpOgotICAgICAgICAiIiJSZWFkcyBjaGFu
bmVsIGlkLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIFZhbHVlRXJyb3I6IHdoZW4g
dGhlIHBheWxvYWQgZG9lc24ndCBjb250YWluCi0gICAgICAgICAgICAgICAgdmFsaWQgY2hhbm5l
bCBpZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IGxlbihzZWxm
Ll9kYXRhKSAtIHNlbGYuX3JlYWRfcG9zaXRpb24KLSAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9w
b3NpdGlvbgotICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoID09IDA6Ci0gICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLQotICAgICAgICBj
aGFubmVsX2lkID0gb3JkKHNlbGYuX2RhdGFbcG9zXSkKLSAgICAgICAgY2hhbm5lbF9pZF9sZW5n
dGggPSAxCi0gICAgICAgIGlmIGNoYW5uZWxfaWQgJiAweGUwID09IDB4ZTA6Ci0gICAgICAgICAg
ICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgNDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQg
PSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrNF0pWzBdICYgMHgxZmZmZmZmZgotICAgICAgICAgICAg
Y2hhbm5lbF9pZF9sZW5ndGggPSA0Ci0gICAgICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0g
MHhjMDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPCAzOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAg
ICAgICAgY2hhbm5lbF9pZCA9ICgoKGNoYW5uZWxfaWQgJiAweDFmKSA8PCAxNikgKwotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QudW5wYWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zKzE6
cG9zKzNdKVswXSkKLSAgICAgICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gMwotICAgICAgICBl
bGlmIGNoYW5uZWxfaWQgJiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICBpZiByZW1haW5pbmdf
bGVuZ3RoIDwgMjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNo
YW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNr
KCchSCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRh
W3Bvczpwb3MrMl0pWzBdICYgMHgzZmZmCi0gICAgICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9
IDIKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSBjaGFubmVsX2lkX2xlbmd0aAotCi0g
ICAgICAgIHJldHVybiBjaGFubmVsX2lkCi0KLSAgICBkZWYgcmVhZF9pbm5lcl9mcmFtZShzZWxm
KToKLSAgICAgICAgIiIiUmVhZHMgYW4gaW5uZXIgZnJhbWUuCi0KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICAgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3I6IHdoZW4gdGhlIGlubmVyIGZyYW1l
IGlzIGludmFsaWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIGxlbihzZWxmLl9kYXRhKSA9
PSBzZWxmLl9yZWFkX3Bvc2l0aW9uOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVf
SVNfVFJVTkNBVEVEKQotCi0gICAgICAgIGJpdHMgPSBvcmQoc2VsZi5fZGF0YVtzZWxmLl9yZWFk
X3Bvc2l0aW9uXSkKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIGZp
biA9IChiaXRzICYgMHg4MCkgPT0gMHg4MAotICAgICAgICByc3YxID0gKGJpdHMgJiAweDQwKSA9
PSAweDQwCi0gICAgICAgIHJzdjIgPSAoYml0cyAmIDB4MjApID09IDB4MjAKLSAgICAgICAgcnN2
MyA9IChiaXRzICYgMHgxMCkgPT0gMHgxMAotICAgICAgICBvcGNvZGUgPSBiaXRzICYgMHhmCi0g
ICAgICAgIHBheWxvYWQgPSBzZWxmLnJlbWFpbmluZ19kYXRhKCkKLSAgICAgICAgIyBDb25zdW1l
IHJlc3Qgb2YgdGhlIG1lc3NhZ2Ugd2hpY2ggaXMgcGF5bG9hZCBkYXRhIG9mIHRoZSBvcmlnaW5h
bAotICAgICAgICAjIGZyYW1lLgotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gbGVuKHNl
bGYuX2RhdGEpCi0gICAgICAgIHJldHVybiBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwg
cGF5bG9hZAotCi0gICAgZGVmIF9yZWFkX251bWJlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5f
cmVhZF9wb3NpdGlvbiArIDEgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICdDYW5ub3QgcmVhZCB0aGUgZmlyc3QgYnl0ZSBv
ZiBudW1iZXIgZmllbGQnKQotCi0gICAgICAgIG51bWJlciA9IG9yZChzZWxmLl9kYXRhW3NlbGYu
X3JlYWRfcG9zaXRpb25dKQotICAgICAgICBpZiBudW1iZXIgJiAweDgwID09IDB4ODA6Ci0gICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICdUaGUgbW9zdCBzaWdu
aWZpY2FudCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgb2YgbnVtYmVyIHNob3VsZCAnCi0gICAgICAg
ICAgICAgICAgJ2JlIHVuc2V0JykKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0g
ICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9zaXRpb24KLSAgICAgICAgaWYgbnVtYmVyID09IDEy
NzoKLSAgICAgICAgICAgIGlmIHBvcyArIDggPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQotICAgICAgICAg
ICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSA4Ci0gICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3Qu
dW5wYWNrKCchUScsIHNlbGYuX2RhdGFbcG9zOnBvcys4XSlbMF0KLSAgICAgICAgICAgIGlmIG51
bWJlciA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdFbmNvZGVkIG51bWJlciglZCkgPj0gMl42MycgJSBudW1iZXIpCi0gICAgICAgICAgICBp
ZiBudW1iZXIgPD0gMHhGRkZGOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgOSBieXRlcyBl
bmNvZGluZycgJSBudW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gbnVtYmVyCi0gICAgICAgIGlm
IG51bWJlciA9PSAxMjY6Ci0gICAgICAgICAgICBpZiBwb3MgKyAyID4gbGVuKHNlbGYuX2RhdGEp
OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgbnVtYmVyIGZpZWxk
JykKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMgotICAgICAgICAgICAgbnVt
YmVyID0gc3RydWN0LnVucGFjaygnIUgnLCBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdCi0gICAg
ICAgICAgICBpZiBudW1iZXIgPD0gMTI1OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgMyBi
eXRlcyBlbmNvZGluZycgJSBudW1iZXIpCi0gICAgICAgIHJldHVybiBudW1iZXIKLQotICAgIGRl
ZiBfcmVhZF9zaXplX2FuZF9jb250ZW50cyhzZWxmKToKLSAgICAgICAgIiIiUmVhZHMgZGF0YSB0
aGF0IGNvbnNpc3RzIG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIHRoZSBzaXplIG9mIHRo
ZSBjb250ZW50cyBlbmNvZGVkIHRoZSBzYW1lIHdheSBhcyBwYXlsb2FkIGxlbmd0aAotICAgICAg
ICAgICAgICBvZiB0aGUgV2ViU29ja2V0IFByb3RvY29sIHdpdGggMSBiaXQgcGFkZGluZyBhdCB0
aGUgaGVhZC4KLSAgICAgICAgICAgIC0gdGhlIGNvbnRlbnRzLgotICAgICAgICAiIiIKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzaXplID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVj
dGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLSAgICAgICAgcG9zID0g
c2VsZi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBpZiBwb3MgKyBzaXplID4gbGVuKHNlbGYuX2Rh
dGEpOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAg
ICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAg
ICAgICAgICdDYW5ub3QgcmVhZCAlZCBieXRlcyBkYXRhJyAlIHNpemUpCi0KLSAgICAgICAgc2Vs
Zi5fcmVhZF9wb3NpdGlvbiArPSBzaXplCi0gICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3Bvczpw
b3Mrc2l6ZV0KLQotICAgIGRlZiBfcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGZpcnN0
X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IChmaXJzdF9ieXRlID4+
IDIpICYgMHg3Ci0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQ
aHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFM
SURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVz
dCBiZSB1bnNldCcpCi0KLSAgICAgICAgIyBJbnZhbGlkIGVuY29kaW5nIHdpbGwgYmUgaGFuZGxl
ZCBieSBNdXhIYW5kbGVyLgotICAgICAgICBlbmNvZGluZyA9IGZpcnN0X2J5dGUgJiAweDMKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5y
ZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAg
ICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhf
Q09OVFJPTF9CTE9DSykKLSAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGVuY29kaW5n
Ci0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50
cygpCi0gICAgICAgIGNvbnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBlbmNvZGVkX2hh
bmRzaGFrZQotICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2Fk
ZF9jaGFubmVsX3Jlc3BvbnNlKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAg
ICAgICByZXNlcnZlZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHgzCi0gICAgICAgIGlmIHJlc2Vy
dmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAg
ICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAg
ICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgY29u
dHJvbF9ibG9jay5hY2NlcHRlZCA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBjb250
cm9sX2Jsb2NrLmVuY29kaW5nID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBjb250cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgp
Ci0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2lj
YWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLKQot
ICAgICAgICBjb250cm9sX2Jsb2NrLmVuY29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXpl
X2FuZF9jb250ZW50cygpCi0gICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYg
X3JlYWRfZmxvd19jb250cm9sKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAg
ICAgICByZXNlcnZlZCA9IGZpcnN0X2J5dGUgJiAweDFmCi0gICAgICAgIGlmIHJlc2VydmVkICE9
IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAg
ICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAg
ICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQo
KQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1i
ZXIoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9D
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLQot
ICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2Ryb3BfY2hhbm5l
bChzZWxmLCBmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSBm
aXJzdF9ieXRlICYgMHgxZgotICAgICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAg
cmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09E
RV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBi
aXRzIG11c3QgYmUgdW5zZXQnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xf
YmxvY2suY2hhbm5lbF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
cihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIHJlYXNvbiA9
IHNlbGYuX3JlYWRfc2l6ZV9hbmRfY29udGVudHMoKQotICAgICAgICBpZiBsZW4ocmVhc29uKSA9
PSAwOgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAg
ICAgICBjb250cm9sX2Jsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgIGVsaWYgbGVuKHJl
YXNvbikgPj0gMjoKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9jb2RlID0gc3RydWN0
LnVucGFjaygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5k
cm9wX21lc3NhZ2UgPSByZWFzb25bMjpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlz
ZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lO
VkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIERyb3BD
aGFubmVsIHRoYXQgY29uYWlucyBvbmx5IDEtYnl0ZSByZWFzb24nKQotICAgICAgICByZXR1cm4g
Y29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZiwgZmly
c3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAm
IDB4MWUKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9N
VVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJl
IHVuc2V0JykKLSAgICAgICAgY29udHJvbF9ibG9jay5mYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAx
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9y
ZWFkX251bWJlcigpCi0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxm
Ll9yZWFkX251bWJlcigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAg
ICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9D
T05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyKGUpKQotICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIHJlYWRfY29u
dHJvbF9ibG9ja3Moc2VsZik6Ci0gICAgICAgICIiIlJlYWRzIGNvbnRyb2wgYmxvY2socykuCi0K
LSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcjogd2hl
biB0aGUgcGF5bG9hZCBjb250YWlucyBpbnZhbGlkIGNvbnRyb2wKLSAgICAgICAgICAgICAgIGJs
b2NrKHMpLgotICAgICAgICAgICBTdG9wSXRlcmF0aW9uOiB3aGVuIG5vIGNvbnRyb2wgYmxvY2tz
IGxlZnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfcG9zaXRpb24g
PCBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHNlbGYuX2Rh
dGFbc2VsZi5fcmVhZF9wb3NpdGlvbl0pCi0gICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9u
ICs9IDEKLSAgICAgICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAg
ICAgICAgICBjb250cm9sX2Jsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGU9b3Bjb2RlKQotICAg
ICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6Ci0g
ICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KGZpcnN0
X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9y
ZWFkX2FkZF9jaGFubmVsX3Jlc3BvbnNlKAotICAgICAgICAgICAgICAgICAgICBmaXJzdF9ieXRl
LCBjb250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVf
RkxPV19DT05UUk9MOgotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfZmxvd19jb250
cm9sKGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9
PSBfTVVYX09QQ09ERV9EUk9QX0NIQU5ORUw6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5f
cmVhZF9kcm9wX2NoYW5uZWwoZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAg
IGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAg
ICAgICAgeWllbGQgc2VsZi5fcmVhZF9uZXdfY2hhbm5lbF9zbG90KGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX1VOS05P
V05fTVVYX09QQ09ERSwKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgb3Bjb2RlICVkJyAl
IG9wY29kZSkKLQotICAgICAgICBhc3NlcnQgc2VsZi5fcmVhZF9wb3NpdGlvbiA9PSBsZW4oc2Vs
Zi5fZGF0YSkKLSAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIHJlbWFpbmlu
Z19kYXRhKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHJlbWFpbmluZyBkYXRhLiIiIgotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb246XQotCi0KLWNsYXNz
IF9Mb2dpY2FsUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIHJlcXVl
c3QuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwgY29tbWFuZCwgcGF0
aCwgcHJvdG9jb2wsIGhlYWRlcnMsCi0gICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pOgotICAg
ICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICBjaGFubmVsX2lkOiB0aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgot
ICAgICAgICAgICAgY29tbWFuZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCi0gICAgICAgICAgICBw
YXRoOiBIVFRQIHJlcXVlc3QgcGF0aC4KLSAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVy
cy4KLSAgICAgICAgICAgIGNvbm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAg
ICAgICBzZWxmLm1ldGhvZCA9IGNvbW1hbmQKLSAgICAgICAgc2VsZi51cmkgPSBwYXRoCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBo
ZWFkZXJzCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAgc2Vs
Zi5zZXJ2ZXJfdGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY2xpZW50X3Rlcm1pbmF0
ZWQgPSBGYWxzZQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJNaW1pY3Mg
cmVxdWVzdC5pc19odHRwcygpLiBSZXR1cm5zIEZhbHNlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMK
LSAgICAgICAgdXNlZCBvbmx5IGJ5IG9sZCBwcm90b2NvbHMgKGhpeGllIGFuZCBoeWJpMDApLgot
ICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBfTG9naWNhbENv
bm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgot
Ci0gICAgIyBGb3IgZGV0YWlscywgc2VlIHRoZSBjb21tZW50IG9mIHNldF9yZWFkX3N0YXRlKCku
Ci0gICAgU1RBVEVfQUNUSVZFID0gMQotICAgIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEID0gMgot
ICAgIFNUQVRFX1RFUk1JTkFURUQgPSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hh
bmRsZXIsIGNoYW5uZWxfaWQpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5z
dGFuY2UuCi0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIG9mIHRoaXMgY29ubmVj
dGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFu
ZGxlcgotICAgICAgICBzZWxmLl9jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxm
Ll9pbmNvbWluZ19kYXRhID0gJycKLQotICAgICAgICAjIC0gUHJvdGVjdHMgX3dhaXRpbmdfd3Jp
dGVfY29tcGxldGlvbgotICAgICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9y
IGNvbXBsZXRpb24gb2Ygd3JpdGUgYnkgbXV4IGhhbmRsZXIKLSAgICAgICAgc2VsZi5fd3JpdGVf
Y29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIHNlbGYuX3dhaXRpbmdf
d3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24g
PSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAgICAgc2VsZi5fcmVhZF9zdGF0ZSA9IHNlbGYu
U1RBVEVfQUNUSVZFCi0KLSAgICBkZWYgZ2V0X2xvY2FsX2FkZHIoc2VsZik6Ci0gICAgICAgICIi
IkdldHRlciB0byBtaW1pYyBtcF9jb25uLmxvY2FsX2FkZHIuIiIiCi0KLSAgICAgICAgcmV0dXJu
IHNlbGYuX211eF9oYW5kbGVyLnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X2xvY2FsX2FkZHIoKQot
ICAgIGxvY2FsX2FkZHIgPSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRf
cmVtb3RlX2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJl
bW90ZV9hZGRyLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNh
bF9jb25uZWN0aW9uLmdldF9yZW1vdGVfYWRkcigpCi0gICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0
eShnZXRfcmVtb3RlX2FkZHIpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToK
LSAgICAgICAgIiIiR2V0cyBtZW1vcml6ZWQgbGluZXMuIE5vdCBzdXBwb3J0ZWQuIiIiCi0KLSAg
ICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbignX0xvZ2ljYWxDb25uZWN0aW9uIGRv
ZXMgbm90IHN1cHBvcnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn
ZXRfbWVtb3JpemVkX2xpbmVzJykKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAg
ICAgIiIiV3JpdGVzIGRhdGEuIG11eF9oYW5kbGVyIHNlbmRzIGRhdGEgYXN5bmNocm9ub3VzbHku
IFRoZSBjYWxsZXIgd2lsbAotICAgICAgICBiZSBzdXNwZW5kZWQgdW50aWwgd3JpdGUgZG9uZS4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgot
Ci0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdo
ZW4gY2FsbGVkIGJlZm9yZSBmaW5pc2hpbmcgdGhlIHByZXZpb3VzCi0gICAgICAgICAgICAgICAg
d3JpdGUuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dy
aXRlX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3dhaXRpbmdfd3Jp
dGVfY29tcGxldGlvbjoKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGFscmVh
ZHkgd2FpdGluZyB0aGUgY29tcGxldGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICdvZiB3cml0
ZScgJSBzZWxmLl9jaGFubmVsX2lkKQotCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRl
X2NvbXBsZXRpb24gPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2Rh
dGEoc2VsZi5fY2hhbm5lbF9pZCwgZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRp
dGlvbi53YWl0KCkKLSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2Vw
dGlvbiBpZiB3b2tlIHVwIGJ5IG9uX3dyaXRlcl9kb25lLgotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHdyaXRl
X2NvbnRyb2xfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGVzIGRhdGEgdmlhIHRo
ZSBjb250cm9sIGNoYW5uZWwuIERvbid0IHdhaXQgZmluaXNoaW5nIHdyaXRlCi0gICAgICAgIGJl
Y2F1c2UgdGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBieSBtdXggZGlzcGF0Y2hlci4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotICAgICAg
ICAiIiIKLQotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2NvbnRyb2xfZGF0YShkYXRh
KQotCi0gICAgZGVmIG9uX3dyaXRlX2RhdGFfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVk
IHdoZW4gc2VuZGluZyBkYXRhIGlzIGNvbXBsZXRlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNl
IE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIGNh
bGwgb2Ygb25fd3JpdGVfZGF0YV9kb25lIGZvciBsb2dpY2FsICcKLSAgICAgICAgICAgICAgICAg
ICAgJ2Nvbm5lY3Rpb24gJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHNlbGYu
X3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYu
X3dyaXRlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBvbl93cml0ZXJfZG9uZShzZWxm
KToKLSAgICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSBtdXggaGFuZGxlciB3aGVuIHRoZSB3cml0ZXIg
dGhyZWFkIGhhcyBmaW5pc2hlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxm
Ll93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dy
aXRlX2NvbXBsZXRpb24gPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9u
Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24ucmVsZWFzZSgpCi0KLQotICAgIGRlZiBhcHBlbmRfZnJhbWVfZGF0YShzZWxmLCBmcmFt
ZV9kYXRhKToKLSAgICAgICAgIiIiQXBwZW5kcyBpbmNvbWluZyBmcmFtZSBkYXRhLiBDYWxsZWQg
d2hlbiBtdXhfaGFuZGxlciBkaXNwYXRjaGVzCi0gICAgICAgIGZyYW1lIGRhdGEgdG8gdGhlIGNv
cnJlc3BvbmRpbmcgYXBwbGljYXRpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZy
YW1lX2RhdGE6IGluY29taW5nIGZyYW1lIGRhdGEuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNl
bGYuX3JlYWRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRh
ICs9IGZyYW1lX2RhdGEKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAg
ICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgcmVhZChzZWxm
LCBsZW5ndGgpOgotICAgICAgICAiIiJSZWFkcyBkYXRhLiBCbG9ja3MgdW50aWwgZW5vdWdoIGRh
dGEgaGFzIGFycml2ZWQgdmlhIHBoeXNpY2FsCi0gICAgICAgIGNvbm5lY3Rpb24uCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEgdG8gYmUgcmVhZC4K
LSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRFeGNl
cHRpb246IHdoZW4gY2xvc2luZyBoYW5kc2hha2UgZm9yIHRoaXMKLSAgICAgICAgICAgICAgICBs
b2dpY2FsIGNoYW5uZWwgaGFzIGJlZW4gcmVjZWl2ZWQuCi0gICAgICAgICAgICBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMKLSAg
ICAgICAgICAgICAgICBjbG9zZWQsIG9yIGFuIGVycm9yIGlzIGNhdXNlZCBvbiB0aGUgcmVhZGVy
IHRocmVhZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNx
dWlyZSgpCi0gICAgICAgIHdoaWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfQUNU
SVZFIGFuZAotICAgICAgICAgICAgICAgbGVuKHNlbGYuX2luY29taW5nX2RhdGEpIDwgbGVuZ3Ro
KToKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5TVEFURV9HUkFDRUZV
TExZX0NMT1NFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29ubmVjdGlvbkNsb3Nl
ZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hhbm5lbCAlZCBoYXMg
Y2xvc2VkLicgJSBzZWxmLl9jaGFubmVsX2lkKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9yZWFk
X3N0YXRlID09IHNlbGYuU1RBVEVfVEVSTUlOQVRFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBD
b25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2Vp
dmluZyAlZCBieXRlIGZhaWxlZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xvc2VkJyAlCi0gICAg
ICAgICAgICAgICAgICAgIChsZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQotCi0gICAgICAgICAg
ICB2YWx1ZSA9IHNlbGYuX2luY29taW5nX2RhdGFbOmxlbmd0aF0KLSAgICAgICAgICAgIHNlbGYu
X2luY29taW5nX2RhdGEgPSBzZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpdCi0gICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAg
ICAgICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShzZWxmLCBuZXdfc3Rh
dGUpOgotICAgICAgICAiIiJTZXRzIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24uIENhbGxl
ZCB3aGVuIGFuIGV2ZW50IGZvciB0aGlzCi0gICAgICAgIGNvbm5lY3Rpb24gaGFzIG9jY3VycmVk
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBuZXdfc3RhdGU6IHN0YXRlIHRvIGJlIHNl
dC4gbmV3X3N0YXRlIG11c3QgYmUgb25lIG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIFNU
QVRFX0dSQUNFRlVMTFlfQ0xPU0VEOiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIGZvciB0aGlzCi0g
ICAgICAgICAgICAgICAgY29ubmVjdGlvbiBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAg
IC0gU1RBVEVfVEVSTUlOQVRFRDogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMgY2xv
c2VkIG9yCi0gICAgICAgICAgICAgICAgRHJvcENoYW5uZWwgb2YgdGhpcyBjb25uZWN0aW9uIGhh
cyByZWNlaXZlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3RhdGUKLSAgICAgICAg
c2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRp
b24ucmVsZWFzZSgpCi0KLQotY2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3QpOgotICAgICIiIkhv
bGRzIHRoZSByZXN1bHQgb2YgX0lubmVyTWVzc2FnZUJ1aWxkZXIuYnVpbGQoKS4KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxm
Lm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCi0KLQotY2xh
c3MgX0lubmVyTWVzc2FnZUJ1aWxkZXIob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIHRoYXQgaG9s
ZHMgdGhlIGNvbnRleHQgb2YgaW5uZXIgbWVzc2FnZSBmcmFnbWVudGF0aW9uIGFuZAotICAgIGJ1
aWxkcyBhIG1lc3NhZ2UgZnJvbSBmcmFnbWVudGVkIGlubmVyIGZyYW1lKHMpLgotICAgICIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9
IE5vbmUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cyA9IFtdCi0gICAg
ICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX21l
c3NhZ2VfZnJhZ21lbnRzID0gW10KLSAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYu
X2hhbmRsZV9maXJzdAotCi0gICAgZGVmIF9oYW5kbGVfZmlyc3Qoc2VsZiwgZnJhbWUpOgotICAg
ICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAg
ICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBjb250
aW51YXRpb24gb3Bjb2RlJykKLQotICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUo
ZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2Zy
YWdtZW50ZWRfY29udHJvbChmcmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfbWVzc2FnZShmcmFtZSkKLQotICAgIGRl
ZiBfcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJhbWUpOgotICAgICAg
ICBzZWxmLl9jb250cm9sX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICBzZWxmLl9wZW5k
aW5nX2NvbnRyb2xfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICBpZiBu
b3QgZnJhbWUuZmluOgotICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hh
bmRsZV9mcmFnbWVudGVkX2NvbnRyb2wKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAg
IHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgpCi0KLSAgICBkZWYg
X3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1lKToKLSAgICAgICAg
c2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKLSAgICAgICAgc2VsZi5fcGVuZGlu
Z19tZXNzYWdlX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgaWYgbm90
IGZyYW1lLmZpbjoKLSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5k
bGVfZnJhZ21lbnRlZF9tZXNzYWdlCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9o
YW5kbGVfZnJhZ21lbnRlZF9jb250cm9sKHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUu
b3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZW5kaW5nIGludmFsaWQg
b3Bjb2RlICVkIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZCBjb250cm9sICcKLSAgICAgICAgICAg
ICAgICAnbWVzc2FnZScgJSBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfY29u
dHJvbF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFt
ZS5maW46Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVh
c3NlbWJsZV9mcmFnbWVudGVkX2NvbnRyb2woKQotCi0gICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdt
ZW50ZWRfY29udHJvbChzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5fY29udHJvbF9vcGNv
ZGUKLSAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdt
ZW50cykKLSAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYu
X3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMgPSBbXQotICAgICAgICBpZiBzZWxmLl9tZXNzYWdl
X29wY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBz
ZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9tZXNzYWdlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVy
biBfSW5uZXJNZXNzYWdlKG9wY29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBfaGFuZGxlX2ZyYWdt
ZW50ZWRfbWVzc2FnZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgICMgU2VuZGVyIGNhbiBpbnRlcmxl
YXZlIGEgY29udHJvbCBtZXNzYWdlIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZAotICAgICAgICAj
IG1lc3NhZ2VzLgotICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bj
b2RlKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbnRyb2xfb3Bjb2RlIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICdTaG91bGQgbm90IHJlYWNoIGhlcmUoQnVnIGluIGJ1aWxkZXIpJykKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChmcmFt
ZSkKLQotICAgICAgICBpZiBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJ
T046Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1NlbmRpbmcgaW52YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGluZyBmcmFnbWVudGVk
IG1lc3NhZ2UnICUKLSAgICAgICAgICAgICAgICBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYu
X3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAg
IGlmIG5vdCBmcmFtZS5maW46Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1
cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9yZWFz
c2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5f
bWVzc2FnZV9vcGNvZGUKLSAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19t
ZXNzYWdlX2ZyYWdtZW50cykKLSAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBOb25lCi0g
ICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxm
Ll9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVybiBfSW5u
ZXJNZXNzYWdlKG9wY29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBidWlsZChzZWxmLCBmcmFtZSk6
Ci0gICAgICAgICIiIkJ1aWxkIGFuIGlubmVyIG1lc3NhZ2UuIFJldHVybnMgYW4gX0lubmVyTWVz
c2FnZSBpbnN0YW5jZSB3aGVuCi0gICAgICAgIHRoZSBnaXZlbiBmcmFtZSBpcyB0aGUgbGFzdCBm
cmFnbWVudGVkIGZyYW1lLiBSZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICBmcmFtZTogYW4gaW5uZXIgZnJhbWUuCi0gICAgICAgIFJhaXNlczoKLSAg
ICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZlZCBpbnZhbGlkIG9w
Y29kZS4gKGUuZy4KLSAgICAgICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNvbnRpbnVhdGlvbiBk
YXRhIG9wY29kZSBidXQgdGhlIGZpbiBmbGFnIG9mCi0gICAgICAgICAgICAgICAgdGhlIHByZXZp
b3VzIGlubmVyIGZyYW1lIHdhcyBub3Qgc2V0LikKLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmV0
dXJuIHNlbGYuX2ZyYW1lX2hhbmRsZXIoZnJhbWUpCi0KLQotY2xhc3MgX0xvZ2ljYWxTdHJlYW0o
U3RyZWFtKToKLSAgICAiIiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4gVGhpcyBjbGFzcyBpbnRl
cnByZXRzIG11bHRpcGxleGVkIFdlYlNvY2tldAotICAgIGZyYW1lcy4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VuZF9xdW90YSwg
cmVjZWl2ZV9xdW90YSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5j
ZS4KLSAgICAgICAgICAgIHN0cmVhbV9vcHRpb25zOiBTdHJlYW1PcHRpb25zIGluc3RhbmNlLgot
ICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgotICAgICAgICAgICAg
cmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgotICAgICAgICAiIiIKLQotICAg
ICAgICAjIFBoeXNpY2FsIHN0cmVhbSBpcyByZXNwb25zaWJsZSBmb3IgbWFza2luZy4KLSAgICAg
ICAgc3RyZWFtX29wdGlvbnMudW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotICAgICAgICBTdHJlYW0u
X19pbml0X18oc2VsZiwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICAgICAgc2VsZi5f
c2VuZF9jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9xdW90
YQotICAgICAgICAjIC0gUHJvdGVjdHMgX3NlbmRfY2xvc2VkIGFuZCBfc2VuZF9xdW90YQotICAg
ICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgcmVwbGVu
aXNoZWQKLSAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9u
KCkKLQotICAgICAgICAjIFRoZSBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1lc3NhZ2Vz
LgotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAotICAg
ICAgICAjIFRydWUgd2hlbiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBmcmFnbWVudGVkLgotICAgICAg
ICBzZWxmLl9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgICAgIHNl
bGYuX3JlY2VpdmVfcXVvdGEgPSByZWNlaXZlX3F1b3RhCi0gICAgICAgIHNlbGYuX3dyaXRlX2lu
bmVyX2ZyYW1lX3NlbWFwaG9yZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoKQotCi0gICAgICAgIHNl
bGYuX2lubmVyX21lc3NhZ2VfYnVpbGRlciA9IF9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkKLQotICAg
IGRlZiBfY3JlYXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUp
OgotICAgICAgICBmcmFtZSA9IEZyYW1lKGZpbj1lbmQsIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9
cGF5bG9hZCkKLSAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLm91dGdv
aW5nX2ZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1l
KQotCi0gICAgICAgIGlmIGxlbihwYXlsb2FkKSAhPSBsZW4oZnJhbWUucGF5bG9hZCk6Ci0gICAg
ICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdN
dXggZXh0ZW5zaW9uIG11c3Qgbm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucyB3aGljaCBjaGFu
Z2UgJwotICAgICAgICAgICAgICAgICcgZnJhbWUgYm91bmRhcnknKQotCi0gICAgICAgIGZpcnN0
X2J5dGUgPSAoKGZyYW1lLmZpbiA8PCA3KSB8IChmcmFtZS5yc3YxIDw8IDYpIHwKLSAgICAgICAg
ICAgICAgICAgICAgICAoZnJhbWUucnN2MiA8PCA1KSB8IChmcmFtZS5yc3YzIDw8IDQpIHwgZnJh
bWUub3Bjb2RlKQotICAgICAgICByZXR1cm4gY2hyKGZpcnN0X2J5dGUpICsgZnJhbWUucGF5bG9h
ZAotCi0gICAgZGVmIF93cml0ZV9pbm5lcl9mcmFtZShzZWxmLCBvcGNvZGUsIHBheWxvYWQsIGVu
ZD1UcnVlKToKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKLSAgICAgICAg
d3JpdGVfcG9zaXRpb24gPSAwCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBBbiBpbm5l
ciBmcmFtZSB3aWxsIGJlIGZyYWdtZW50ZWQgaWYgdGhlcmUgaXMgbm8gZW5vdWdoIHNlbmQKLSAg
ICAgICAgICAgICMgcXVvdGEuIFRoaXMgc2VtYXBob3JlIGVuc3VyZXMgdGhhdCBmcmFnbWVudGVk
IGlubmVyIGZyYW1lcyBhcmUKLSAgICAgICAgICAgICMgc2VudCBpbiBvcmRlciBvbiB0aGUgbG9n
aWNhbCBjaGFubmVsLgotICAgICAgICAgICAgIyBOb3RlIHRoYXQgZnJhbWVzIHRoYXQgY29tZSBm
cm9tIG90aGVyIGxvZ2ljYWwgY2hhbm5lbHMgb3IKLSAgICAgICAgICAgICMgbXVsdGlwbGV4aW5n
IGNvbnRyb2wgYmxvY2tzIGNhbiBiZSBpbnNlcnRlZCBiZXR3ZWVuIGZyYWdtZW50ZWQKLSAgICAg
ICAgICAgICMgaW5uZXIgZnJhbWVzIG9uIHRoZSBwaHlzaWNhbCBjaGFubmVsLgotICAgICAgICAg
ICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlLmFjcXVpcmUoKQotCi0gICAgICAg
ICAgICAjIENvbnN1bWUgYW4gb2N0ZXQgcXVvdGEgd2hlbiB0aGlzIGlzIHRoZSBmaXJzdCBmcmFn
bWVudGVkIGZyYW1lLgotICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09O
VElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChu
b3Qgc2VsZi5fc2VuZF9jbG9zZWQpIGFuZCBzZWxmLl9zZW5kX3F1b3RhID09IDA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX3F1b3RhIC09IDEKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAg
ICAgd2hpbGUgd3JpdGVfcG9zaXRpb24gPCBwYXlsb2FkX2xlbmd0aDoKLSAgICAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUo
KQotICAgICAgICAgICAgICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlbmRfY2xvc2VkKSBhbmQg
c2VsZi5fc2VuZF9xdW90YSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBxdW90YS4gV2FpdGlu
ZyBGbG93Q29udHJvbCBtZXNzYWdlIGZvciAlZC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0
aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVx
dWVzdC5fY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBwYXls
b2FkX2xlbmd0aCAtIHdyaXRlX3Bvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xl
bmd0aCA9IG1pbihzZWxmLl9zZW5kX3F1b3RhLCByZW1haW5pbmcpCi0gICAgICAgICAgICAgICAg
ICAgIGlubmVyX2ZyYW1lX2VuZCA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBhbmQK
LSAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZV9wb3NpdGlvbiArIHdyaXRlX2xlbmd0aCA9
PSBwYXlsb2FkX2xlbmd0aCkpCi0KLSAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWUgPSBz
ZWxmLl9jcmVhdGVfaW5uZXJfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkW3dyaXRlX3Bvc2l0aW9uOndyaXRlX3Bv
c2l0aW9uK3dyaXRlX2xlbmd0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFt
ZV9lbmQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgLT0gd3JpdGVfbGVu
Z3RoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29uc3VtZWQgcXVv
dGE9JWQsIHJlbWFpbmluZz0lZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHdyaXRlX2xlbmd0aCwgc2VsZi5fc2VuZF9xdW90YSkpCi0gICAgICAgICAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFz
ZSgpCi0KLSAgICAgICAgICAgICAgICAjIFdyaXRpbmcgZGF0YSB3aWxsIGJsb2NrIHRoZSB3b3Jr
ZXIgc28gd2UgbmVlZCB0byByZWxlYXNlCi0gICAgICAgICAgICAgICAgIyBfc2VuZF9jb25kaXRp
b24gYmVmb3JlIHdyaXRpbmcuCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZW5kaW5nIGlubmVyIGZyYW1lOiAlcicgJSBpbm5lcl9mcmFtZSkKLSAgICAgICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaW5uZXJfZnJhbWUpCi0gICAgICAgICAgICAg
ICAgd3JpdGVfcG9zaXRpb24gKz0gd3JpdGVfbGVuZ3RoCi0KLSAgICAgICAgICAgICAgICBvcGNv
ZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTgotCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKGUpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZV9zZW1hcGhv
cmUucmVsZWFzZSgpCi0KLSAgICBkZWYgcmVwbGVuaXNoX3NlbmRfcXVvdGEoc2VsZiwgc2VuZF9x
dW90YSk6Ci0gICAgICAgICIiIlJlcGxlbmlzaCBzZW5kIHF1b3RhLiIiIgotCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAg
ICAgaWYgc2VsZi5fc2VuZF9xdW90YSArIHNlbmRfcXVvdGEgPiAweDdGRkZGRkZGRkZGRkZGRkY6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IDAKLSAgICAgICAgICAgICAgICBy
YWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9PVkVSRkxPVykKLSAgICAgICAg
ICAgIHNlbGYuX3NlbmRfcXVvdGEgKz0gc2VuZF9xdW90YQotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZXBsZW5pc2hlZCBzZW5kIHF1b3RhIGZvciBjaGFubmVsIGlkICVkOiAlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxf
aWQsIHNlbGYuX3NlbmRfcXVvdGEpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIGNvbnN1bWVfcmVjZWl2ZV9xdW90YShzZWxmLCBhbW91
bnQpOgotICAgICAgICAiIiJDb25zdW1lcyByZWNlaXZlIHF1b3RhLiBSZXR1cm5zIEZhbHNlIG9u
IGZhaWx1cmUuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVjZWl2ZV9xdW90YSA8IGFtb3VudDoK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVmlvbGF0ZSBxdW90YSBvbiBjaGFubmVs
IGlkICVkOiAlZCA8ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu
X3JlcXVlc3QuY2hhbm5lbF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcmVjZWl2ZV9xdW90YSwgYW1vdW50KSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhIC09IGFtb3VudAotICAgICAgICByZXR1cm4gVHJ1ZQot
Ci0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZh
bHNlKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRfbWVzc2FnZS4iIiIKLQotICAg
ICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFp
c2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2Vu
ZF9tZXNzYWdlIGFmdGVyIHNlbmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAg
ICAgIGlmIGJpbmFyeSBhbmQgaXNpbnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAg
ICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2Fn
ZSBmb3IgYmluYXJ5IGZyYW1lIG11c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBp
ZiBiaW5hcnk6Ci0gICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJTkFSWQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAg
ICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICBmb3Ig
bWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6
Ci0gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVu
ZCwgYmluYXJ5KQotCi0gICAgICAgIGlmIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRl
ZDoKLSAgICAgICAgICAgIGlmIG9wY29kZSAhPSBzZWxmLl9tZXNzYWdlX29wY29kZToKLSAgICAg
ICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ01lc3NhZ2UgdHlwZXMgYXJl
IGRpZmZlcmVudCBpbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdmcmFtZXMgZm9yIHRoZSBzYW1lIG1lc3NhZ2UnKQotICAgICAgICAgICAgb3Bjb2RlID0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
bGYuX21lc3NhZ2Vfb3Bjb2RlID0gb3Bjb2RlCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJf
ZnJhbWUob3Bjb2RlLCBtZXNzYWdlLCBlbmQpCi0gICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93
YXNfZnJhZ21lbnRlZCA9IG5vdCBlbmQKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToK
LSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZS4KLQotICAgICAgICBJ
biBhZGRpdGlvbiB0byBjYWxsIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSwgdGhpcyBtZXRob2QgYWRk
cyB0aGUgYW1vdW50Ci0gICAgICAgIG9mIHBheWxvYWQgdG8gcmVjZWl2aW5nIHF1b3RhIGFuZCBz
ZW5kcyBGbG93Q29udHJvbCB0byB0aGUgY2xpZW50LgotICAgICAgICBXZSBuZWVkIHRvIGRvIGl0
IGhlcmUgYmVjYXVzZSBTdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkgaGFuZGxlcwotICAgICAgICBj
b250cm9sIGZyYW1lcyBpbnRlcm5hbGx5LgotICAgICAgICAiIiIKLQotICAgICAgICBvcGNvZGUs
IHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShz
ZWxmKQotICAgICAgICBhbW91bnQgPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgIyBSZXBsZW5pc2gg
ZXh0cmEgb25lIG9jdGV0IHdoZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1l
LgotICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAg
ICAgICAgICBhbW91bnQgKz0gMQotICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3Vu
dAotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVz
dC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW1vdW50KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgZmxvdyBjb250cm9s
IGZvciAlZCwgcmVwbGVuaXNoZWQ9JWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGFtb3VudCkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLSAgICAgICAgcmV0dXJu
IG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3YxLCByc3YyLCByc3YzCi0KLSAgICBkZWYgX2dldF9t
ZXNzYWdlX2Zyb21fZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJPdmVycmlkZXMgU3Ry
ZWFtLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBpbm5lcl9tZXNzYWdlID0gc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVy
LmJ1aWxkKGZyYW1lKQotICAgICAgICBleGNlcHQgSW52YWxpZEZyYW1lRXhjZXB0aW9uOgotICAg
ICAgICAgICAgcmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04pCi0KLSAg
ICAgICAgaWYgaW5uZXJfbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gaW5uZXJfbWVzc2FnZS5vcGNvZGUKLSAg
ICAgICAgcmV0dXJuIGlubmVyX21lc3NhZ2UucGF5bG9hZAotCi0gICAgZGVmIHJlY2VpdmVfbWVz
c2FnZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2Uu
IiIiCi0KLSAgICAgICAgIyBKdXN0IGNhbGwgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpLCBidXQg
Y2F0Y2gKLSAgICAgICAgIyBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbiwgd2hpY2gg
aXMgcmFpc2VkIHdoZW4gdGhlIGxvZ2ljYWwKLSAgICAgICAgIyBjb25uZWN0aW9uIGhhcyBjbG9z
ZWQgZ3JhY2VmdWxseS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5y
ZWNlaXZlX21lc3NhZ2Uoc2VsZikKLSAgICAgICAgZXhjZXB0IExvZ2ljYWxDb25uZWN0aW9uQ2xv
c2VkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUp
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNo
YWtlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uX3Nl
bmRfY2xvc2luZ19oYW5kc2hha2UuIiIiCi0KLSAgICAgICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5n
X2hhbmRzaGFrZV9ib2R5KGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdTZW5kaW5nIGNsb3NpbmcgaGFuZHNoYWtlIGZvciAlZDogKCVyLCAlciknICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGNvZGUsIHJlYXNv
bikpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfQ0xPU0Us
IGJvZHksIGVuZD1UcnVlKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0
ZWQgPSBUcnVlCi0KLSAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHk9JycpOgotICAgICAgICAi
IiJPdmVycmlkZXMgU3RyZWFtLnNlbmRfcGluZyIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnU2VuZGluZyBwaW5nIG9uIGxvZ2ljYWwgY2hhbm5lbCAlZDogJXInICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQotICAg
ICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIGVu
ZD1UcnVlKQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBk
ZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5f
c2VuZF9wb25nIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBvbmcg
b24gbG9naWNhbCBjaGFubmVsICVkOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgYm9keSkpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lu
bmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgZW5kPVRydWUpCi0KLSAgICBkZWYg
Y2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUs
IHJlYXNvbj0nJyk6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uY2xvc2VfY29ubmVjdGlv
bi4iIiIKLQotICAgICAgICAjIFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDbG9zaW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHN0b3Bfc2VuZGlu
ZyhzZWxmKToKLSAgICAgICAgIiIiU3RvcHMgYWNjZXB0aW5nIG5ldyBzZW5kIG9wZXJhdGlvbiAo
X3dyaXRlX2lubmVyX2ZyYW1lKS4iIiIKLQotICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5h
Y3F1aXJlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCi0gICAgICAgIHNlbGYu
X3NlbmRfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0KLWNsYXNzIF9PdXRnb2luZ0RhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVj
dHVyZSB0aGF0IGhvbGRzIGRhdGEgdG8gYmUgc2VudCB2aWEgcGh5c2ljYWwgY29ubmVjdGlvbiBh
bmQKLSAgICBvcmlnaW4gb2YgdGhlIGRhdGEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY2hhbm5lbF9pZCwgZGF0YSk6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5u
ZWxfaWQKLSAgICAgICAgc2VsZi5kYXRhID0gZGF0YQotCi0KLWNsYXNzIF9QaHlzaWNhbENvbm5l
Y3Rpb25Xcml0ZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiQSB0aHJlYWQgdGhhdCBpcyBy
ZXNwb25zaWJsZSBmb3Igd3JpdGluZyBkYXRhIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAg
ICBUT0RPKGJhc2hpKTogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRocmVhZC1zYWZldHkgcHJvYmxl
bSB3aGVuIHRoZSByZWFkZXIKLSAgICB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBzYW1lIHNv
Y2tldCBhdCBhIHRpbWUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hh
bmRsZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNl
bGYuX211eF9oYW5kbGVyID0gbXV4X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1
ZSkKLQotICAgICAgICAjIFdoZW4gc2V0LCBtYWtlIHRoaXMgdGhyZWFkIHN0b3AgYWNjZXB0aW5n
IG5ldyBkYXRhLCBmbHVzaCBwZW5kaW5nCi0gICAgICAgICMgZGF0YSBhbmQgZXhpdC4KLSAgICAg
ICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICAjIFRoZSBjbG9zZSBjb2Rl
IG9mIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0g
Y29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRQotICAgICAgICAjIERlcXVlIGZvciBwYXNzaW5n
IHdyaXRlIGRhdGEuIEl0J3MgcHJvdGVjdGVkIGJ5IF9kZXF1ZV9jb25kaXRpb24KLSAgICAgICAg
IyB1bnRpbCBfc3RvcF9yZXF1ZXN0ZWQgaXMgc2V0LgotICAgICAgICBzZWxmLl9kZXF1ZSA9IGNv
bGxlY3Rpb25zLmRlcXVlKCkKLSAgICAgICAgIyAtIFByb3RlY3RzIF9kZXF1ZSwgX3N0b3BfcmVx
dWVzdGVkIGFuZCBfY2xvc2VfY29kZQotICAgICAgICAjIC0gU2lnbmFscyB0aHJlYWRzIHdhaXRp
bmcgZm9yIHRoZW0gdG8gYmUgYXZhaWxhYmxlCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlv
biA9IHRocmVhZGluZy5Db25kaXRpb24oKQotCi0gICAgZGVmIHB1dF9vdXRnb2luZ19kYXRhKHNl
bGYsIGRhdGEpOgotICAgICAgICAiIiJQdXRzIG91dGdvaW5nIGRhdGEuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIGRhdGE6IF9PdXRnb2luZ0RhdGEgaW5zdGFuY2UuCi0KLSAgICAgICAg
UmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHRoZSB0aHJl
YWQgaGFzIGJlZW4gcmVxdWVzdGVkIHRvCi0gICAgICAgICAgICAgICAgdGVybWluYXRlLgotICAg
ICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRp
b24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAg
ICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSBkYXRh
IGFueW1vcmUnKQotCi0gICAgICAgICAgICBzZWxmLl9kZXF1ZS5hcHBlbmQoZGF0YSkKLSAgICAg
ICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF93
cml0ZV9kYXRhKHNlbGYsIG91dGdvaW5nX2RhdGEpOgotICAgICAgICBtZXNzYWdlID0gKF9lbmNv
ZGVfY2hhbm5lbF9pZChvdXRnb2luZ19kYXRhLmNoYW5uZWxfaWQpICsKLSAgICAgICAgICAgICAg
ICAgICBvdXRnb2luZ19kYXRhLmRhdGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X211eF9oYW5kbGVyLnBoeXNpY2FsX3N0cmVhbS5zZW5kX21lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgbWVzc2FnZT1tZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PVRydWUpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcg
JQotICAgICAgICAgICAgICAgIChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9u
LnJlbW90ZV9hZGRyLCksIGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgVE9ETyhi
YXNoaSk6IEl0IHdvdWxkIGJlIGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMK
LSAgICAgICAgIyBjb250cm9sIGRhdGEgYXMgd2VsbC4KLSAgICAgICAgaWYgb3V0Z29pbmdfZGF0
YS5jaGFubmVsX2lkICE9IF9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlci5ub3RpZnlfd3JpdGVfZGF0YV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9p
ZCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X2RlcXVlX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9z
dG9wX3JlcXVlc3RlZDoKLSAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEg
PSBzZWxmLl9kZXF1ZS5wb3BsZWZ0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2Nv
bmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG91dGdv
aW5nX2RhdGEpCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUo
KQotCi0gICAgICAgICAgICAjIEZsdXNoIGRlcXVlLgotICAgICAgICAgICAgIwotICAgICAgICAg
ICAgIyBBdCB0aGlzIHBvaW50LCBzZWxmLl9kZXF1ZV9jb25kaXRpb24gaXMgYWx3YXlzIGFjcXVp
cmVkLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9k
ZXF1ZSkgPiAwOgotICAgICAgICAgICAgICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVx
dWUucG9wbGVmdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29p
bmdfZGF0YSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVx
dWVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgICAgICAjIENsb3NlIHBoeXNpY2FsIGNv
bm5lY3Rpb24uCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCB3YWl0
IHRoZSByZXNwb25zZSBoZXJlLiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSByZWFkCi0gICAgICAgICAg
ICAgICAgIyBieSB0aGUgcmVhZGVyIHRocmVhZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhf
aGFuZGxlci5waHlzaWNhbF9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY2xvc2VfY29kZSwgd2FpdF9yZXNwb25zZT1GYWxzZSkKLSAgICAgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3Nh
Z2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNsb3NlIHRo
ZSBwaHlzaWNhbCBjb25uZWN0aW9uOiAlcicgJSBlKQotICAgICAgICAgICAgICAgIHJhaXNlCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd3Jp
dGVyX2RvbmUoKQotCi0gICAgZGVmIHN0b3Aoc2VsZiwgY2xvc2VfY29kZT1jb21tb24uU1RBVFVT
X05PUk1BTF9DTE9TVVJFKToKLSAgICAgICAgIiIiU3RvcHMgdGhlIHdyaXRlciB0aHJlYWQuIiIi
Ci0KLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxm
Ll9zdG9wX3JlcXVlc3RlZCA9IFRydWUKLSAgICAgICAgc2VsZi5fY2xvc2VfY29kZSA9IGNsb3Nl
X2NvZGUKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNl
bGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotCi1jbGFzcyBfUGh5c2ljYWxDb25uZWN0
aW9uUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIkEgdGhyZWFkIHRoYXQgaXMgcmVz
cG9uc2libGUgZm9yIHJlYWRpbmcgZGF0YSBmcm9tIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgotICAgICAgICAiIiJD
b25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhf
aGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRo
cmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRp
bC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyID0gbXV4
X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgIGRlZiBydW4oc2Vs
Zik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgcGh5c2ljYWxfc3RyZWFtID0gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtCi0g
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IHBoeXNpY2FsX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2Uo
KQotICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgICAgICAjIEJlbG93IGhhcHBlbnMgb25seSB3aGVuIGEgZGF0
YSBtZXNzYWdlIGlzIHJlY2VpdmVkLgotICAgICAgICAgICAgICAgIG9wY29kZSA9IHBoeXNpY2Fs
X3N0cmVhbS5nZXRfbGFzdF9yZWNlaXZlZF9vcGNvZGUoKQotICAgICAgICAgICAgICAgIGlmIG9w
Y29kZSAhPSBjb21tb24uT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
bXV4X2hhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAgICAgX0RST1BfQ09ERV9JTlZBTElEX0VOQ0FQU1VMQVRJTkdfTUVTU0FHRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhIHRleHQgbWVzc2FnZSBvbiBwaHlzaWNhbCBjb25u
ZWN0aW9uJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgZXhjZXB0
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5kaXNwYXRjaF9tZXNz
YWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICBleGNlcHQgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Is
IGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25u
ZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICBlLmRyb3BfY29kZSwgZS5tZXNzYWdlKQotICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgTG9naWNhbENoYW5uZWxFcnJv
ciwgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX2xvZ2ljYWxfY2hh
bm5lbCgKLSAgICAgICAgICAgICAgICAgICAgZS5jaGFubmVsX2lkLCBlLmRyb3BfY29kZSwgZS5t
ZXNzYWdlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgICAg
ICAgICBicmVhawotCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9u
ZSgpCi0KLQotY2xhc3MgX1dvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJBIHRocmVh
ZCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBydW5uaW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxp
Y2F0aW9uCi0gICAgaGFuZGxlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBt
dXhfaGFuZGxlciwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2Uu
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBp
bnN0YW5jZS4KLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQot
ICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAg
ICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxmLl9yZXF1ZXN0
ID0gcmVxdWVzdAotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotCi0gICAgZGVmIHJ1bihz
ZWxmKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdMb2dpY2FsIGNoYW5uZWwgd29ya2Vy
IHN0YXJ0ZWQuIChpZD0lZCknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBOb24tY3JpdGlj
YWwgZXhjZXB0aW9ucyB3aWxsIGJlIGhhbmRsZWQgYnkgZGlzcGF0Y2hlci4KLSAgICAgICAgICAg
IHNlbGYuX211eF9oYW5kbGVyLmRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShzZWxmLl9yZXF1ZXN0
KQotICAgICAgICBleGNlcHQgTG9naWNhbENoYW5uZWxFcnJvciwgZToKLSAgICAgICAgICAgIHNl
bGYuX211eF9oYW5kbGVyLmZhaWxfbG9naWNhbF9jaGFubmVsKAotICAgICAgICAgICAgICAgIGUu
Y2hhbm5lbF9pZCwgZS5kcm9wX2NvZGUsIGUubWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV93b3JrZXJfZG9uZShzZWxmLl9yZXF1
ZXN0LmNoYW5uZWxfaWQpCi0KLQotY2xhc3MgX011eEhhbmRzaGFrZXIoaHliaS5IYW5kc2hha2Vy
KToKLSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIG11bHRpcGxleGluZy4i
IiIKLQotICAgIF9EVU1NWV9XRUJTT0NLRVRfS0VZID0gJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9
PScKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzZW5kX3F1
b3RhLCByZWNlaXZlX3F1b3RhKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0
YW5jZS4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgaW5zdGFuY2UgKGRpc3Bh
dGNoLkRpc3BhdGNoZXIpLgotICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1
b3RhLgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgot
ICAgICAgICAiIiIKLQotICAgICAgICBoeWJpLkhhbmRzaGFrZXIuX19pbml0X18oc2VsZiwgcmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEK
LSAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSA9IHJlY2VpdmVfcXVvdGEKLQotICAgICAgICAj
IEFwcGVuZCBoZWFkZXJzIHdoaWNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gaGFuZHNoYWtl
IGZpZWxkIG9mCi0gICAgICAgICMgQWRkQ2hhbm5lbFJlcXVlc3QuCi0gICAgICAgICMgVE9ETyhi
YXNoaSk6IE1ha2Ugc3VyZSB3aGV0aGVyIHdlIHNob3VsZCByYWlzZSBleGNlcHRpb24gd2hlbgot
ICAgICAgICAjICAgICB0aGVzZSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBhbHJlYWR5LgotICAgICAg
ICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLlVQR1JBREVfSEVBREVSXSA9ICgKLSAgICAgICAg
ICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFKQotICAgICAgICByZXF1ZXN0LmhlYWRl
cnNfaW5bY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVJdID0gKAotICAgICAgICAg
ICAgc3RyKGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLSAgICAgICAgcmVxdWVzdC5oZWFk
ZXJzX2luW2NvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVJdID0gKAotICAgICAgICAgICAg
c2VsZi5fRFVNTVlfV0VCU09DS0VUX0tFWSkKLQotICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxm
LCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGh5YmkuSGFuZHNoYWtlci5f
Y3JlYXRlX3N0cmVhbS4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NyZWF0aW5n
IGxvZ2ljYWwgc3RyZWFtIGZvciAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCi0g
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90
YSwKLSAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9o
YW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHli
aS5fY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZS4iIiIKLQotICAgICAgICByZXNwb25zZSA9IFtd
Ci0KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3Rv
Y29sc1xyXG4nKQotCi0gICAgICAgICMgVXBncmFkZSBhbmQgU2VjLVdlYlNvY2tldC1BY2NlcHQg
c2hvdWxkIGJlIGV4Y2x1ZGVkLgotICAgICAgICByZXNwb25zZS5hcHBlbmQoJyVzOiAlc1xyXG4n
ICUgKAotICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFE
RV9DT05ORUNUSU9OX1RZUEUpKQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29s
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAl
ICgKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIs
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlm
IChzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAg
ICBsZW4oc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAgICAgY29tbW9uLmZv
cm1hdF9leHRlbnNpb25zKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykpKQotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoJ1xyXG4nKQotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNl
KQotCi0gICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQpOgotICAgICAgICAiIiJP
dmVycmlkZSBoeWJpLkhhbmRzaGFrZXIuX3NlbmRfaGFuZHNoYWtlLiIiIgotCi0gICAgICAgICMg
RG9uJ3Qgc2VuZCBoYW5kc2hha2UgcmVzcG9uc2UgZm9yIHRoZSBkZWZhdWx0IGNoYW5uZWwKLSAg
ICAgICAgaWYgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkID09IF9ERUZBVUxUX0NIQU5ORUxfSUQ6
Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBoYW5kc2hha2VfcmVzcG9uc2UgPSBzZWxm
Ll9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgZnJhbWVfZGF0YSA9
IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRz
aGFrZV9yZXNwb25zZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGhhbmRz
aGFrZSByZXNwb25zZSBmb3IgJWQ6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLCBmcmFtZV9kYXRhKSkKLSAgICAgICAgc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLndyaXRlX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0KLWNsYXNz
IF9Mb2dpY2FsQ2hhbm5lbERhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhv
bGRzIGluZm9ybWF0aW9uIGFib3V0IGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCB3b3JrZXIpOgotICAgICAgICBzZWxmLnJlcXVlc3Qg
PSByZXF1ZXN0Ci0gICAgICAgIHNlbGYud29ya2VyID0gd29ya2VyCi0gICAgICAgIHNlbGYuZHJv
cF9jb2RlID0gX0RST1BfQ09ERV9OT1JNQUxfQ0xPU1VSRQotICAgICAgICBzZWxmLmRyb3BfbWVz
c2FnZSA9ICcnCi0KLQotY2xhc3MgX0hhbmRzaGFrZURlbHRhQmFzZShvYmplY3QpOgotICAgICIi
IkEgY2xhc3MgdGhhdCBob2xkcyBpbmZvcm1hdGlvbiBmb3IgZGVsdGEtZW5jb2RlZCBoYW5kc2hh
a2UuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVycyk6Ci0gICAgICAgIHNlbGYu
X2hlYWRlcnMgPSBoZWFkZXJzCi0KLSAgICBkZWYgY3JlYXRlX2hlYWRlcnMoc2VsZiwgZGVsdGE9
Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZXMgcmVxdWVzdCBoZWFkZXJzIGZvciBhbiBBZGRDaGFu
bmVsUmVxdWVzdCB0aGF0IGhhcwotICAgICAgICBkZWx0YS1lbmNvZGVkIGhhbmRzaGFrZS4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGVsdGE6IGhlYWRlcnMgc2hvdWxkIGJlIG92ZXJy
aWRkZW4uCi0gICAgICAgICIiIgotCi0gICAgICAgIGhlYWRlcnMgPSBjb3B5LmNvcHkoc2VsZi5f
aGVhZGVycykKLSAgICAgICAgaWYgZGVsdGE6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBp
biBkZWx0YS5pdGVtcygpOgotICAgICAgICAgICAgICAgICMgVGhlIHNwZWMgcmVxdWlyZXMgdGhh
dCBhIGhlYWRlciB3aXRoIGFuIGVtcHR5IHZhbHVlIGlzCi0gICAgICAgICAgICAgICAgIyByZW1v
dmVkIGZyb20gdGhlIGRlbHRhIGJhc2UuCi0gICAgICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9
PSAwIGFuZCBoZWFkZXJzLmhhc19rZXkoa2V5KToKLSAgICAgICAgICAgICAgICAgICAgZGVsIGhl
YWRlcnNba2V5XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhl
YWRlcnNba2V5XSA9IHZhbHVlCi0gICAgICAgIHJldHVybiBoZWFkZXJzCi0KLQotY2xhc3MgX011
eEhhbmRsZXIob2JqZWN0KToKLSAgICAiIiJNdWx0aXBsZXhpbmcgaGFuZGxlci4gV2hlbiBhIGhh
bmRsZXIgc3RhcnRzLCBpdCBsYXVuY2hlcyB0aHJlZQotICAgIHRocmVhZHM7IHRoZSByZWFkZXIg
dGhyZWFkLCB0aGUgd3JpdGVyIHRocmVhZCwgYW5kIGEgd29ya2VyIHRocmVhZC4KLQotICAgIFRo
ZSByZWFkZXIgdGhyZWFkIHJlYWRzIGRhdGEgZnJvbSB0aGUgcGh5c2ljYWwgc3RyZWFtLCBpLmUu
LCB0aGUKLSAgICB3c19zdHJlYW0gb2JqZWN0IG9mIHRoZSB1bmRlcmx5aW5nIHdlYnNvY2tldCBj
b25uZWN0aW9uLiBUaGUgcmVhZGVyCi0gICAgdGhyZWFkIGludGVycHJldHMgbXVsdGlwbGV4ZWQg
ZnJhbWVzIGFuZCBkaXNwYXRjaGVzIHRoZW0gdG8gbG9naWNhbAotICAgIGNoYW5uZWxzLiBNZXRo
b2RzIG9mIHRoaXMgY2xhc3MgYXJlIG1vc3RseSBjYWxsZWQgYnkgdGhlIHJlYWRlciB0aHJlYWQu
Ci0KLSAgICBUaGUgd3JpdGVyIHRocmVhZCBzZW5kcyBtdWx0aXBsZXhlZCBmcmFtZXMgd2hpY2gg
YXJlIGNyZWF0ZWQgYnkKLSAgICBsb2dpY2FsIGNoYW5uZWxzIHZpYSB0aGUgcGh5c2ljYWwgY29u
bmVjdGlvbi4KLQotICAgIFRoZSB3b3JrZXIgdGhyZWFkIGxhdW5jaGVkIGF0IHRoZSBzdGFydGlu
ZyBwb2ludCBoYW5kbGVzIHRoZQotICAgICJJbXBsaWNpdGx5IE9wZW5lZCBDb25uZWN0aW9uIi4g
SWYgbXVsdGlwbGV4aW5nIGhhbmRsZXIgcmVjZWl2ZXMKLSAgICBhbiBBZGRDaGFubmVsUmVxdWVz
dCBhbmQgYWNjZXB0cyBpdCwgdGhlIGhhbmRsZXIgd2lsbCBsYXVuY2ggYSBuZXcgd29ya2VyCi0g
ICAgdGhyZWFkIGFuZCBkaXNwYXRjaCB0aGUgcmVxdWVzdCB0byBpdC4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29u
c3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVz
dDogbW9kX3B5dGhvbiByZXF1ZXN0IG9mIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAg
ICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciBpbnN0YW5jZSAoZGlzcGF0Y2guRGlzcGF0Y2hl
cikuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdCA9IHJlcXVl
c3QKLSAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotICAgICAgICBzZWxmLnBo
eXNpY2FsX2Nvbm5lY3Rpb24gPSByZXF1ZXN0LmNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5waHlz
aWNhbF9zdHJlYW0gPSByZXF1ZXN0LndzX3N0cmVhbQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1
dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
cyA9IHt9Ci0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhyZWFk
aW5nLkNvbmRpdGlvbigpCi0gICAgICAgICMgSG9sZHMgY2xpZW50J3MgaW5pdGlhbCBxdW90YQot
ICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3RzID0gY29sbGVjdGlvbnMuZGVxdWUoKQotICAgICAg
ICBzZWxmLl9oYW5kc2hha2VfYmFzZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fd29ya2VyX2RvbmVf
bm90aWZ5X3JlY2VpdmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVhZGVyID0gTm9uZQotICAg
ICAgICBzZWxmLl93cml0ZXIgPSBOb25lCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAg
ICIiIlN0YXJ0cyB0aGUgaGFuZGxlci4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBN
dXhVbmV4cGVjdGVkRXhjZXB0aW9uOiB3aGVuIHRoZSBoYW5kbGVyIGFscmVhZHkgc3RhcnRlZCwg
b3Igd2hlbgotICAgICAgICAgICAgICAgIG9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBkZWZhdWx0
IGNoYW5uZWwgZmFpbHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRlciBv
ciBzZWxmLl93cml0ZXI6Ci0gICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9u
KCdNdXhIYW5kbGVyIGFscmVhZHkgc3RhcnRlZCcpCi0KLSAgICAgICAgc2VsZi5fcmVhZGVyID0g
X1BoeXNpY2FsQ29ubmVjdGlvblJlYWRlcihzZWxmKQotICAgICAgICBzZWxmLl93cml0ZXIgPSBf
UGh5c2ljYWxDb25uZWN0aW9uV3JpdGVyKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlYWRlci5zdGFy
dCgpCi0gICAgICAgIHNlbGYuX3dyaXRlci5zdGFydCgpCi0KLSAgICAgICAgIyBDcmVhdGUgIklt
cGxpY2l0bHkgT3BlbmVkIENvbm5lY3Rpb24iLgotICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24g
PSBfTG9naWNhbENvbm5lY3Rpb24oc2VsZiwgX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLSAgICAgICAg
aGVhZGVycyA9IGNvcHkuY29weShzZWxmLm9yaWdpbmFsX3JlcXVlc3QuaGVhZGVyc19pbikKLSAg
ICAgICAgIyBBZGQgZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBoZWFk
ZXJzW2NvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSXSA9ICgKLSAgICAgICAg
ICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICBzZWxmLm9yaWdp
bmFsX3JlcXVlc3QubXV4X3Byb2Nlc3Nvci5leHRlbnNpb25zKCkpKQotICAgICAgICBzZWxmLl9o
YW5kc2hha2VfYmFzZSA9IF9IYW5kc2hha2VEZWx0YUJhc2UoaGVhZGVycykKLSAgICAgICAgbG9n
aWNhbF9yZXF1ZXN0ID0gX0xvZ2ljYWxSZXF1ZXN0KAotICAgICAgICAgICAgX0RFRkFVTFRfQ0hB
Tk5FTF9JRCwKLSAgICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tZXRob2QsCi0gICAg
ICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QudXJpLAotICAgICAgICAgICAgc2VsZi5vcmln
aW5hbF9yZXF1ZXN0LnByb3RvY29sLAotICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2Uu
Y3JlYXRlX2hlYWRlcnMoKSwKLSAgICAgICAgICAgIGxvZ2ljYWxfY29ubmVjdGlvbikKLSAgICAg
ICAgIyBDbGllbnQncyBzZW5kIHF1b3RhIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29ubmVj
dGlvbiBpcyB6ZXJvLAotICAgICAgICAjIGJ1dCB3ZSB3aWxsIHNlbmQgRmxvd0NvbnRyb2wgbGF0
ZXIgc28gc2V0IHRoZSBpbml0aWFsIHF1b3RhIHRvCi0gICAgICAgICMgX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVC4KLSAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cy5hcHBlbmQoX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLSAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYub3JpZ2luYWxfcmVx
dWVzdC5tdXhfcHJvY2Vzc29yLnF1b3RhKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX2RvX2hhbmRz
aGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LCBz
ZW5kX3F1b3RhPXNlbmRfcXVvdGEpOgotICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIGhhbmRzaGFrZSBvbiB0aGUgZGVmYXVs
dCBjaGFubmVsIGlkJykKLSAgICAgICAgc2VsZi5fYWRkX2xvZ2ljYWxfY2hhbm5lbChsb2dpY2Fs
X3JlcXVlc3QpCi0KLSAgICAgICAgIyBTZW5kIEZsb3dDb250cm9sIGZvciB0aGUgaW1wbGljaXRs
eSBvcGVuZWQgY29ubmVjdGlvbi4KLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZmxvd19j
b250cm9sKF9ERUZBVUxUX0NIQU5ORUxfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICBsb2dpY2Fs
X3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAg
IGRlZiBhZGRfY2hhbm5lbF9zbG90cyhzZWxmLCBzbG90cywgc2VuZF9xdW90YSk6Ci0gICAgICAg
ICIiIkFkZHMgY2hhbm5lbCBzbG90cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgc2xv
dHM6IG51bWJlciBvZiBzbG90cyB0byBiZSBhZGRlZC4KLSAgICAgICAgICAgIHNlbmRfcXVvdGE6
IGluaXRpYWwgc2VuZCBxdW90YSBmb3Igc2xvdHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNl
bGYuX2NoYW5uZWxfc2xvdHMuZXh0ZW5kKFtzZW5kX3F1b3RhXSAqIHNsb3RzKQotICAgICAgICAj
IFNlbmQgTmV3Q2hhbm5lbFNsb3QgdG8gY2xpZW50LgotICAgICAgICBmcmFtZV9kYXRhID0gX2Ny
ZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1b3RhKQotICAgICAgICBzZWxmLnNl
bmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgd2FpdF91bnRpbF9kb25lKHNl
bGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICIiIldhaXRzIHVudGlsIGFsbCB3b3JrZXJzIGFy
ZSBkb25lLiBSZXR1cm5zIEZhbHNlIHdoZW4gdGltZW91dCBoYXMKLSAgICAgICAgb2NjdXJyZWQu
IFJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0
aW1lb3V0OiB0aW1lb3V0IGluIHNlYy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHdoaWxlIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSA+IDA6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXYWl0aW5nIHdvcmtlcnMoJWQpLi4uJyAlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSkK
LSAgICAgICAgICAgICAgICBzZWxmLl93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQgPSBGYWxz
ZQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLndhaXQo
dGltZW91dCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5
X3JlY2VpdmVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRp
bmcgd29ya2VyKHMpIHRpbWVkIG91dCcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19j
b25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgIyBGbHVzaCBwZW5kaW5nIG91dGdvaW5nIGRh
dGEKLSAgICAgICAgc2VsZi5fd3JpdGVyLnN0b3AoKQotICAgICAgICBzZWxmLl93cml0ZXIuam9p
bigpCi0KLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBub3RpZnlfd3JpdGVfZGF0YV9k
b25lKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHdyaXRlciB0
aHJlYWQgd2hlbiBhIHdyaXRlIG9wZXJhdGlvbiBoYXMgZG9uZS4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwgaWQuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVx
dWVzdC5jb25uZWN0aW9uLm9uX3dyaXRlX2RhdGFfZG9uZSgpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VlbXMgdGhhdCBsb2dpY2FsIGNo
YW5uZWwgZm9yICVkIGhhcyBnb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAlIGNoYW5uZWxfaWQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBzZW5kX2NvbnRyb2xf
ZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiU2VuZHMgZGF0YSB2aWEgdGhlIGNvbnRyb2wg
Y2hhbm5lbC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSBz
ZW50LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl93cml0ZXIucHV0X291dGdvaW5nX2Rh
dGEoX091dGdvaW5nRGF0YSgKLSAgICAgICAgICAgICAgICBjaGFubmVsX2lkPV9DT05UUk9MX0NI
QU5ORUxfSUQsIGRhdGE9ZGF0YSkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIGNoYW5uZWxf
aWQsIGRhdGEpOgotICAgICAgICAiIiJTZW5kcyBkYXRhIHZpYSBnaXZlbiBsb2dpY2FsIGNoYW5u
ZWwuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieQotICAgICAgICB3b3JrZXIgdGhyZWFkcy4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwg
aWQuCi0gICAgICAgICAgICBkYXRhOiBkYXRhIHRvIGJlIHNlbnQuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHNlbGYuX3dyaXRlci5wdXRfb3V0Z29pbmdfZGF0YShfT3V0Z29pbmdEYXRhKAotICAg
ICAgICAgICAgICAgIGNoYW5uZWxfaWQ9Y2hhbm5lbF9pZCwgZGF0YT1kYXRhKSkKLQotICAgIGRl
ZiBfc2VuZF9kcm9wX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdl
PScnKToKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxf
aWQsIGNvZGUsIG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAg
ICAgICdTZW5kaW5nIGRyb3AgY2hhbm5lbCBmb3IgY2hhbm5lbCBpZCAlZCcgJSBjaGFubmVsX2lk
KQotICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYg
X3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2Uoc2VsZiwgY2hhbm5lbF9pZCwgc3RhdHVz
PU5vbmUpOgotICAgICAgICBpZiBzdGF0dXMgaXMgTm9uZToKLSAgICAgICAgICAgIHN0YXR1cyA9
IGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVAotCi0gICAgICAgIGlmIHN0YXR1cyBpbiBf
SFRUUF9CQURfUkVTUE9OU0VfTUVTU0FHRVM6Ci0gICAgICAgICAgICBtZXNzYWdlID0gX0hUVFBf
QkFEX1JFU1BPTlNFX01FU1NBR0VTW3N0YXR1c10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVzcG9uc2UgbWVzc2FnZSBmb3IgJWQgaXMgbm90IGZvdW5k
JyAlIHN0YXR1cykKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnPz8/JwotCi0gICAgICAgIHJlc3Bv
bnNlID0gJ0hUVFAvMS4xICVkICVzXHJcblxyXG4nICUgKHN0YXR1cywgbWVzc2FnZSkKLSAgICAg
ICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoY2hhbm5lbF9pZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2U9cmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYu
c2VuZF9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAgIGRlZiBfY3JlYXRlX2xvZ2ljYWxf
cmVxdWVzdChzZWxmLCBibG9jayk6Ci0gICAgICAgIGlmIGJsb2NrLmNoYW5uZWxfaWQgPT0gX0NP
TlRST0xfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAgICMgVE9ETyhiYXNoaSk6IFJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yIHdpdGggY29kZSAyMDA2Ci0gICAgICAgICAgICAjIGluc3RlYWQg
b2YgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbi4KLSAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0
ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIHRoZSBjb250cm9sIGNoYW5u
ZWwgaWQgKDApIGFzIG9iamVjdGl2ZSBjaGFubmVsICcKLSAgICAgICAgICAgICAgICAnaWQgZm9y
IEFkZENoYW5uZWwnKQotCi0gICAgICAgIGlmIGJsb2NrLmVuY29kaW5nID4gX0hBTkRTSEFLRV9F
TkNPRElOR19ERUxUQToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HKQot
Ci0gICAgICAgIG1ldGhvZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVycyA9IF9wYXJzZV9yZXF1ZXN0
X3RleHQoCi0gICAgICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgaWYg
YmxvY2suZW5jb2RpbmcgPT0gX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQToKLSAgICAgICAgICAg
IGhlYWRlcnMgPSBzZWxmLl9oYW5kc2hha2VfYmFzZS5jcmVhdGVfaGVhZGVycyhoZWFkZXJzKQot
Ci0gICAgICAgIGNvbm5lY3Rpb24gPSBfTG9naWNhbENvbm5lY3Rpb24oc2VsZiwgYmxvY2suY2hh
bm5lbF9pZCkKLSAgICAgICAgcmVxdWVzdCA9IF9Mb2dpY2FsUmVxdWVzdChibG9jay5jaGFubmVs
X2lkLCBtZXRob2QsIHBhdGgsIHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycywgY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIHJlcXVlc3QKLQotICAg
IGRlZiBfZG9faGFuZHNoYWtlX2Zvcl9sb2dpY2FsX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgc2Vu
ZF9xdW90YT0wKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YSA9IHNl
bGYuX2NoYW5uZWxfc2xvdHMucG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgot
ICAgICAgICAgICAgcmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfTkVXX0NIQU5ORUxfU0xPVF9WSU9MQVRJT04p
Ci0KLSAgICAgICAgaGFuZHNoYWtlciA9IF9NdXhIYW5kc2hha2VyKHJlcXVlc3QsIHNlbGYuZGlz
cGF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGEs
IHJlY2VpdmVfcXVvdGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0aW9uLCBl
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNl
bGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgcmVx
dWVzdC5jaGFubmVsX2lkLCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQot
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNo
YWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBUT0RPKGJhc2hpKTogU2hvdWxkIHdlIF9G
YWlsIHRoZSBMb2dpY2FsIENoYW5uZWxfIHdpdGggMzAwMQotICAgICAgICAgICAgIyBpbnN0ZWFk
PwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNl
bGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UocmVxdWVzdC5jaGFubmVsX2lkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9
ZS5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZXhjZXB0IGhhbmRz
aGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxf
cmVzcG9uc2UocmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0K
LSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfYWRkX2xvZ2ljYWxfY2hhbm5lbChzZWxm
LCBsb2dpY2FsX3JlcXVlc3QpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIGxvZ2ljYWxf
cmVxdWVzdC5jaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFu
bmVsX2lkKQotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAot
ICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0NIQU5ORUxfQUxSRUFEWV9FWElTVFMsCi0g
ICAgICAgICAgICAgICAgICAgICdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlCi0gICAg
ICAgICAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAg
d29ya2VyID0gX1dvcmtlcihzZWxmLCBsb2dpY2FsX3JlcXVlc3QpCi0gICAgICAgICAgICBjaGFu
bmVsX2RhdGEgPSBfTG9naWNhbENoYW5uZWxEYXRhKGxvZ2ljYWxfcmVxdWVzdCwgd29ya2VyKQot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tsb2dpY2FsX3JlcXVlc3QuY2hhbm5l
bF9pZF0gPSBjaGFubmVsX2RhdGEKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgIGRlZiBfcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGJs
b2NrKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gc2VsZi5f
Y3JlYXRlX2xvZ2ljYWxfcmVxdWVzdChibG9jaykKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3Is
IGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbG9n
aWNhbCByZXF1ZXN0OiAlcicgJSBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRf
Y2hhbm5lbF9yZXNwb25zZSgKLSAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBzdGF0
dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIGlmIHNlbGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KGxvZ2ljYWxf
cmVxdWVzdCk6Ci0gICAgICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VO
Q09ESU5HX0lERU5USVRZOgotICAgICAgICAgICAgICAgICMgVXBkYXRlIGhhbmRzaGFrZSBiYXNl
LgotICAgICAgICAgICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBy
aWdodCBwbGFjZSB0byB1cGRhdGUKLSAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBiYXNlLgot
ICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFz
ZSgKLSAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAg
ICAgICAgICBzZWxmLl9hZGRfbG9naWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9u
c2UoCi0gICAgICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQ
X1NUQVRVU19CQURfUkVRVUVTVCkKLQotICAgIGRlZiBfcHJvY2Vzc19mbG93X2NvbnRyb2woc2Vs
ZiwgYmxvY2spOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVs
X2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2NrLmNo
YW5uZWxfaWRdCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0ucmVw
bGVuaXNoX3NlbmRfcXVvdGEoCi0gICAgICAgICAgICAgICAgYmxvY2suc2VuZF9xdW90YSkKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF9wcm9jZXNzX2Ryb3BfY2hhbm5lbChzZWxmLCBibG9j
ayk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdEcm9wQ2hhbm5l
bCByZWNlaXZlZCBmb3IgJWQ6IGNvZGU9JXIsIHJlYXNvbj0lcicgJQotICAgICAgICAgICAgKGJs
b2NrLmNoYW5uZWxfaWQsIGJsb2NrLmRyb3BfY29kZSwgYmxvY2suZHJvcF9tZXNzYWdlKSkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hh
bm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAg
ICAgICAgICAgY2hhbm5lbF9kYXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VE
Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAg
Y2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAg
ICAgICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAg
IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVs
ZWFzZSgpCi0KLSAgICBkZWYgX3Byb2Nlc3NfY29udHJvbF9ibG9ja3Moc2VsZiwgcGFyc2VyKToK
LSAgICAgICAgZm9yIGNvbnRyb2xfYmxvY2sgaW4gcGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3Mo
KToKLSAgICAgICAgICAgIG9wY29kZSA9IGNvbnRyb2xfYmxvY2sub3Bjb2RlCi0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ2NvbnRyb2wgYmxvY2sgcmVjZWl2ZWQsIG9wY29kZTogJWQn
ICUgb3Bjb2RlKQotICAgICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFO
TkVMX1JFUVVFU1Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19hZGRfY2hhbm5lbF9y
ZXF1ZXN0KGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNh
bENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElE
X01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgQWRkQ2hh
bm5lbFJlc3BvbnNlJykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZM
T1dfQ09OVFJPTDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Zsb3dfY29udHJvbChj
b250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJP
UF9DSEFOTkVMOgotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfZHJvcF9jaGFubmVsKGNv
bnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdf
Q0hBTk5FTF9TTE9UOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVy
cm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xf
QkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBOZXdDaGFubmVsU2xvdCcpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZSAlcicgJSBvcGNv
ZGUpCi0KLSAgICBkZWYgX3Byb2Nlc3NfbG9naWNhbF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBw
YXJzZXIpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgZnJhbWUuIGNo
YW5uZWwgaWQ9JWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBu
b3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAg
ICMgV2UgbXVzdCBpZ25vcmUgdGhlIG1lc3NhZ2UgZm9yIGFuIGluYWN0aXZlIGNoYW5uZWwuCi0g
ICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdCi0gICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIs
IHJzdjMsIG9wY29kZSwgcGF5bG9hZCA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAg
ICAgICAgIGNvbnN1bWluZ19ieXRlID0gbGVuKHBheWxvYWQpCi0gICAgICAgICAgICBpZiBvcGNv
ZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgY29uc3Vt
aW5nX2J5dGUgKz0gMQotICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfZGF0YS5yZXF1ZXN0Lndz
X3N0cmVhbS5jb25zdW1lX3JlY2VpdmVfcXVvdGEoCi0gICAgICAgICAgICAgICAgY29uc3VtaW5n
X2J5dGUpOgotICAgICAgICAgICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xv
c2UgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVs
RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9R
VU9UQV9WSU9MQVRJT04pCi0gICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29k
ZSwgbGVuKHBheWxvYWQpLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hc2s9RmFsc2UpCi0gICAgICAgICAgICBmcmFtZV9kYXRhID0g
aGVhZGVyICsgcGF5bG9hZAotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVj
dGlvbi5hcHBlbmRfZnJhbWVfZGF0YShmcmFtZV9kYXRhKQotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAg
ICBkZWYgZGlzcGF0Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiRGlzcGF0
Y2hlcyBtZXNzYWdlLiBUaGUgcmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMg
ZW5jYXBzdWxhdGVkIGZyYW1lLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNh
bENvbm5lY3Rpb25FcnJvcjogaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKLSAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uIGxldmVsIGVycm9ycy4KLSAgICAgICAgICAgIExvZ2ljYWxD
aGFubmVsRXJyb3I6IGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAotICAg
ICAgICAgICAgICAgIGxldmVsIGVycm9ycy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcGFyc2Vy
ID0gX011eEZyYW1lUGF5bG9hZFBhcnNlcihtZXNzYWdlKQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJy
b3IoX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCkKLSAgICAgICAgaWYgY2hhbm5lbF9p
ZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19jb250
cm9sX2Jsb2NrcyhwYXJzZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcm9j
ZXNzX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZCwgcGFyc2VyKQotCi0gICAgZGVmIG5vdGlmeV93
b3JrZXJfZG9uZShzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB3
b3JrZXIgaGFzIGZpbmlzaGVkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVs
X2lkOiBjaGFubmVsIGlkIGNvcnJlc3BvbmRlZCB3aXRoIHRoZSB3b3JrZXIuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnV29ya2VyIGZvciBjaGFubmVsIGlkICVk
IHRlcm1pbmF0ZWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBu
b3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAg
IHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdDaGFu
bmVsIGlkICVkIG5vdCBmb3VuZCcgJSBjaGFubmVsX2lkKQotICAgICAgICAgICAgY2hhbm5lbF9k
YXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVscy5wb3AoY2hhbm5lbF9pZCkKLSAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9IFRy
dWUKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgp
Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkK
LQotICAgICAgICBpZiBub3QgY2hhbm5lbF9kYXRhLnJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6
Ci0gICAgICAgICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBj
aGFubmVsX2lkLCBjb2RlPWNoYW5uZWxfZGF0YS5kcm9wX2NvZGUsCi0gICAgICAgICAgICAgICAg
bWVzc2FnZT1jaGFubmVsX2RhdGEuZHJvcF9tZXNzYWdlKQotCi0gICAgZGVmIG5vdGlmeV9yZWFk
ZXJfZG9uZShzZWxmKToKLSAgICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBy
ZWFkZXIgdGhyZWFkIHdoZW4gdGhlIHJlYWRlciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJt
aWF0aW5nIGFsbCBsb2dpY2FsIGNvbm5lY3Rpb25zIHdhaXRpbmcgZm9yIGluY29taW5nIGRhdGEg
JwotICAgICAgICAgICAgJy4uLicpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHMudmFsdWVzKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
Y2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgX0xvZ2ljYWxDb25uZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCi0gICAgICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
Zyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBub3RpZnlfd3JpdGVyX2RvbmUoc2VsZik6
Ci0gICAgICAgICIiIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgd3JpdGVyIHRocmVhZCB3
aGVuIHRoZSB3cml0ZXIgaGFzCi0gICAgICAgIGZpbmlzaGVkLgotICAgICAgICAiIiIKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnVGVybWlhdGluZyBhbGwgbG9n
aWNhbCBjb25uZWN0aW9ucyB3YWl0aW5nIGZvciB3cml0ZSAnCi0gICAgICAgICAgICAnY29tcGxl
dGlvbiAuLi4nKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgZm9yIGNoYW5uZWxfZGF0YSBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
LnZhbHVlcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0
YS5yZXF1ZXN0LmNvbm5lY3Rpb24ub25fd3JpdGVyX2RvbmUoKQotICAgICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNr
LmZvcm1hdF9leGMoKSkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24u
cmVsZWFzZSgpCi0KLSAgICBkZWYgZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKHNlbGYsIGNvZGUs
IG1lc3NhZ2UpOgotICAgICAgICAiIiJGYWlsIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAg
ICAgICAgbWVzc2FnZTogZHJvcCBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0ZhaWxpbmcgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uLi4nKQotICAg
ICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbChfQ09OVFJPTF9DSEFOTkVMX0lELCBjb2RlLCBt
ZXNzYWdlKQotICAgICAgICBzZWxmLl93cml0ZXIuc3RvcChjb21tb24uU1RBVFVTX0lOVEVSTkFM
X0VORFBPSU5UX0VSUk9SKQotCi0gICAgZGVmIGZhaWxfbG9naWNhbF9jaGFubmVsKHNlbGYsIGNo
YW5uZWxfaWQsIGNvZGUsIG1lc3NhZ2UpOgotICAgICAgICAiIiJGYWlsIGEgbG9naWNhbCBjaGFu
bmVsLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlk
LgotICAgICAgICAgICAgY29kZTogZHJvcCByZWFzb24gY29kZS4KLSAgICAgICAgICAgIG1lc3Nh
Z2U6IGRyb3AgbWVzc2FnZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdGYWlsaW5nIGxvZ2ljYWwgY2hhbm5lbCAlZC4uLicgJSBjaGFubmVsX2lkKQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgICAgIGlmIGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVs
czoKLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
W2NoYW5uZWxfaWRdCi0gICAgICAgICAgICAgICAgIyBDbG9zZSB0aGUgbG9naWNhbCBjaGFubmVs
LiBub3RpZnlfd29ya2VyX2RvbmUoKSB3aWxsIGJlCi0gICAgICAgICAgICAgICAgIyBjYWxsZWQg
bGF0ZXIgYW5kIGl0IHdpbGwgc2VuZCBEcm9wQ2hhbm5lbC4KLSAgICAgICAgICAgICAgICBjaGFu
bmVsX2RhdGEuZHJvcF9jb2RlID0gY29kZQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5k
cm9wX21lc3NhZ2UgPSBtZXNzYWdlCi0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVx
dWVzdC5jb25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKAotICAgICAgICAgICAgICAgICAgICBfTG9n
aWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgICAgICBjaGFubmVs
X2RhdGEucmVxdWVzdC53c19zdHJlYW0uc3RvcF9zZW5kaW5nKCkKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29k
ZSwgbWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0KLWRlZiB1c2VfbXV4KHJlcXVlc3QpOgot
ICAgIHJldHVybiBoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykgYW5kICgKLSAgICAg
ICAgcmVxdWVzdC5tdXhfcHJvY2Vzc29yLmlzX2FjdGl2ZSgpKQotCi0KLWRlZiBzdGFydChyZXF1
ZXN0LCBkaXNwYXRjaGVyKToKLSAgICBtdXhfaGFuZGxlciA9IF9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMoX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkK
LQotICAgIG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSgpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyNGMyOTllYWYzZGYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOTMgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJT
dGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCi0KLVVzZSB0aGlzIGZpbGUgdG8gbGF1bmNoIHB5
d2Vic29ja2V0IHdpdGhvdXQgQXBhY2hlIEhUVFAgU2VydmVyLgotCi0KLUJBU0lDIFVTQUdFCi09
PT09PT09PT09PQotCi1HbyB0byB0aGUgc3JjIGRpcmVjdG9yeSBhbmQgcnVuCi0KLSAgJCBweXRo
b24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgWy1wIDx3c19wb3J0Pl0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy13IDx3ZWJzb2NrX2hhbmRsZXJzPl0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy1kIDxkb2N1bWVudF9y
b290Pl0KLQotPHdzX3BvcnQ+IGlzIHRoZSBwb3J0IG51bWJlciB0byB1c2UgZm9yIHdzOi8vIGNv
bm5lY3Rpb24uCi0KLTxkb2N1bWVudF9yb290PiBpcyB0aGUgcGF0aCB0byB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgSFRNTCBmaWxlcy4KLQotPHdlYnNvY2tfaGFuZGxlcnM+IGlzIHRoZSBwYXRoIHRv
IHRoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxlcnMuCi1JZiBub3Qgc3BlY2lm
aWVkLCA8ZG9jdW1lbnRfcm9vdD4gd2lsbCBiZSB1c2VkLiBTZWUgX19pbml0X18ucHkgKG9yCi1y
dW4gJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQpIGZvciBob3cgdG8gd3JpdGUgV2ViU29ja2V0IGhh
bmRsZXJzLgotCi1Gb3IgbW9yZSBkZXRhaWwgYW5kIG90aGVyIG9wdGlvbnMsIHJ1bgotCi0gICQg
cHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC0taGVscAotCi1vciBzZWUgX2J1
aWxkX29wdGlvbl9wYXJzZXIgbWV0aG9kIGJlbG93LgotCi1Gb3IgdHJvdWJsZSBzaG9vdGluZywg
YWRkaW5nICItLWxvZ19sZXZlbCBkZWJ1ZyIgbWlnaHQgaGVscCB5b3UuCi0KLQotVFJZIERFTU8K
LT09PT09PT09Ci0KLUdvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4gc3RhbmRhbG9uZS5w
eSB3aXRoIC1kIG9wdGlvbiB0byBzZXQgdGhlCi1kb2N1bWVudCByb290IHRvIHRoZSBkaXJlY3Rv
cnkgY29udGFpbmluZyBleGFtcGxlIEhUTUxzIGFuZCBoYW5kbGVycyBsaWtlIHRoaXM6Ci0KLSAg
JCBjZCBzcmMKLSAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFs
b25lLnB5IC1kIGV4YW1wbGUKLQotdG8gbGF1bmNoIHB5d2Vic29ja2V0IHdpdGggdGhlIHNhbXBs
ZSBoYW5kbGVyIGFuZCBodG1sIG9uIHBvcnQgODAuIE9wZW4KLWh0dHA6Ly9sb2NhbGhvc3QvY29u
c29sZS5odG1sLCBjbGljayB0aGUgY29ubmVjdCBidXR0b24sIHR5cGUgc29tZXRoaW5nIGludG8K
LXRoZSB0ZXh0IGJveCBuZXh0IHRvIHRoZSBzZW5kIGJ1dHRvbiBhbmQgY2xpY2sgdGhlIHNlbmQg
YnV0dG9uLiBJZiBldmVyeXRoaW5nCi1pcyB3b3JraW5nLCB5b3UnbGwgc2VlIHRoZSBtZXNzYWdl
IHlvdSB0eXBlZCBlY2hvZWQgYnkgdGhlIHNlcnZlci4KLQotCi1VU0lORyBUTFMKLT09PT09PT09
PQotCi1UbyBydW4gdGhlIHN0YW5kYWxvbmUgc2VydmVyIHdpdGggVExTIHN1cHBvcnQsIHJ1biBp
dCB3aXRoIC10LCAtaywgYW5kIC1jCi1vcHRpb25zLiBXaGVuIFRMUyBpcyBlbmFibGVkLCB0aGUg
c3RhbmRhbG9uZSBzZXJ2ZXIgYWNjZXB0cyBvbmx5IFRMUyBjb25uZWN0aW9uLgotCi1Ob3RlIHRo
YXQgd2hlbiBzc2wgbW9kdWxlIGlzIHVzZWQgYW5kIHRoZSBrZXkvY2VydCBsb2NhdGlvbiBpcyBp
bmNvcnJlY3QsCi1UTFMgY29ubmVjdGlvbiBzaWxlbnRseSBmYWlscyB3aGlsZSBweU9wZW5TU0wg
ZmFpbHMgb24gc3RhcnR1cC4KLQotRXhhbXBsZToKLQotICAkIFBZVEhPTlBBVEg9LiBweXRob24g
bW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgXAotICAgICAgICAtZCBleGFtcGxlIFwKLSAg
ICAgICAgLXAgMTA0NDMgXAotICAgICAgICAtdCBcCi0gICAgICAgIC1jIC4uL3Rlc3QvY2VydC9j
ZXJ0LnBlbSBcCi0gICAgICAgIC1rIC4uL3Rlc3QvY2VydC9rZXkucGVtIFwKLQotTm90ZSB0aGF0
IHdoZW4gcGFzc2luZyBhIHJlbGF0aXZlIHBhdGggdG8gLWMgYW5kIC1rIG9wdGlvbiwgaXQgd2ls
bCBiZSByZXNvbHZlZAotdXNpbmcgdGhlIGRvY3VtZW50IHJvb3QgZGlyZWN0b3J5IGFzIHRoZSBi
YXNlLgotCi0KLVVTSU5HIENMSUVOVCBBVVRIRU5USUNBVElPTgotPT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0KLVRvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgY2xpZW50
IGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQsIHJ1biBpdCB3aXRoCi0tLXRscy1jbGllbnQtYXV0aCBh
bmQgLS10bHMtY2xpZW50LWNhIG9wdGlvbnMgaW4gYWRkaXRpb24gdG8gb25lcyByZXF1aXJlZCBm
b3IKLVRMUyBzdXBwb3J0LgotCi1FeGFtcGxlOgotCi0gICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBt
b2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtZCBleGFtcGxlIC1wIDEwNDQzIC10IFwKLSAg
ICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIC1rIC4uL3Rlc3QvY2VydC9rZXkucGVtIFwK
LSAgICAgICAgLS10bHMtY2xpZW50LWF1dGggXAotICAgICAgICAtLXRscy1jbGllbnQtY2E9Li4v
dGVzdC9jZXJ0L2NhY2VydC5wZW0KLQotTm90ZSB0aGF0IHdoZW4gcGFzc2luZyBhIHJlbGF0aXZl
IHBhdGggdG8gLS10bHMtY2xpZW50LWNhIG9wdGlvbiwgaXQgd2lsbCBiZQotcmVzb2x2ZWQgdXNp
bmcgdGhlIGRvY3VtZW50IHJvb3QgZGlyZWN0b3J5IGFzIHRoZSBiYXNlLgotCi0KLUNPTkZJR1VS
QVRJT04gRklMRQotPT09PT09PT09PT09PT09PT09Ci0KLVlvdSBjYW4gYWxzbyB3cml0ZSBhIGNv
bmZpZ3VyYXRpb24gZmlsZSBhbmQgdXNlIGl0IGJ5IHNwZWNpZnlpbmcgdGhlIHBhdGggdG8KLXRo
ZSBjb25maWd1cmF0aW9uIGZpbGUgYnkgLS1jb25maWcgb3B0aW9uLiBQbGVhc2Ugd3JpdGUgYSBj
b25maWd1cmF0aW9uIGZpbGUKLWZvbGxvd2luZyB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgUHl0
aG9uIENvbmZpZ1BhcnNlciBsaWJyYXJ5LiBOYW1lIG9mIGVhY2gKLWVudHJ5IG11c3QgYmUgdGhl
IGxvbmcgdmVyc2lvbiBhcmd1bWVudCBuYW1lLiBFLmcuIHRvIHNldCBsb2cgbGV2ZWwgdG8gZGVi
dWcsCi1hZGQgdGhlIGZvbGxvd2luZyBsaW5lOgotCi1sb2dfbGV2ZWw9ZGVidWcKLQotRm9yIG9w
dGlvbnMgd2hpY2ggZG9lc24ndCB0YWtlIHZhbHVlLCBwbGVhc2UgYWRkIHNvbWUgZmFrZSB2YWx1
ZS4gRS5nLiBmb3IKLS0tdGxzIG9wdGlvbiwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZToKLQotdGxz
PVRydWUKLQotTm90ZSB0aGF0IHRscyB3aWxsIGJlIGVuYWJsZWQgZXZlbiBpZiB5b3Ugd3JpdGUg
dGxzPUZhbHNlIGFzIHRoZSB2YWx1ZSBwYXJ0IGlzCi1mYWtlLgotCi1XaGVuIGJvdGggYSBjb21t
YW5kIGxpbmUgYXJndW1lbnQgYW5kIGEgY29uZmlndXJhdGlvbiBmaWxlIGVudHJ5IGFyZSBzZXQg
Zm9yCi10aGUgc2FtZSBjb25maWd1cmF0aW9uIGl0ZW0sIHRoZSBjb21tYW5kIGxpbmUgdmFsdWUg
d2lsbCBvdmVycmlkZSBvbmUgaW4gdGhlCi1jb25maWd1cmF0aW9uIGZpbGUuCi0KLQotVEhSRUFE
SU5HCi09PT09PT09PT0KLQotVGhpcyBzZXJ2ZXIgaXMgZGVyaXZlZCBmcm9tIFNvY2tldFNlcnZl
ci5UaHJlYWRpbmdNaXhJbi4gSGVuY2UgYSB0aHJlYWQgaXMKLXVzZWQgZm9yIGVhY2ggcmVxdWVz
dC4KLQotCi1TRUNVUklUWSBXQVJOSU5HCi09PT09PT09PT09PT09PT09Ci0KLVRoaXMgdXNlcyBD
R0lIVFRQU2VydmVyIGFuZCBDR0lIVFRQU2VydmVyIGlzIG5vdCBzZWN1cmUuCi1JdCBtYXkgZXhl
Y3V0ZSBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgb3IgZXh0ZXJuYWwgcHJvZ3JhbXMuIEl0IHNob3Vs
ZCBub3QgYmUKLXVzZWQgb3V0c2lkZSBhIGZpcmV3YWxsLgotIiIiCi0KLWltcG9ydCBCYXNlSFRU
UFNlcnZlcgotaW1wb3J0IENHSUhUVFBTZXJ2ZXIKLWltcG9ydCBTaW1wbGVIVFRQU2VydmVyCi1p
bXBvcnQgU29ja2V0U2VydmVyCi1pbXBvcnQgQ29uZmlnUGFyc2VyCi1pbXBvcnQgYmFzZTY0Ci1p
bXBvcnQgaHR0cGxpYgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBsb2dnaW5nLmhhbmRsZXJzCi1p
bXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2VsZWN0Ci1pbXBv
cnQgc29ja2V0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdGltZQotCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgZGlzcGF0Y2gKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi1mcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCB1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldC54aHJfYmVuY2htYXJrX2hhbmRsZXIgaW1wb3J0
IFhIUkJlbmNobWFya0hhbmRsZXIKLQotCi1fREVGQVVMVF9MT0dfTUFYX0JZVEVTID0gMTAyNCAq
IDI1NgotX0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUKLQotX0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFID0gMTI4Ci0KLSMgMTAyNCBpcyBwcmFjdGljYWxseSBsYXJnZSBlbm91Z2ggdG8g
Y29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgotX01BWF9NRU1PUklaRURfTElORVMg
PSAxMDI0Ci0KLSMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZ
X1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wn
Ci0KLQotY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9iamVjdCk6Ci0gICAgIiIiTWltaWMg
bW9kX3B5dGhvbiBtcF9jb25uLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Rf
aGFuZGxlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5k
bGVyIGluc3RhbmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIgPSByZXF1ZXN0X2hhbmRsZXIKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAg
ICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLQotICAgICAg
ICByZXR1cm4gKHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKLSAg
ICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3Jl
bW90ZV9hZGRyKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1v
dGVfYWRkci4KLQotICAgICAgICBTZXR0aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24n
dCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKLSAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlh
bGl6ZWQgeWV0IHRoZXJlLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIuY2xpZW50X2FkZHJlc3MKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVf
YWRkcikKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiTWltaWMgbXBf
Y29ubi53cml0ZSgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIu
d2ZpbGUud3JpdGUoZGF0YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAg
ICIiIk1pbWljIG1wX2Nvbm4ucmVhZCgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1
ZXN0X2hhbmRsZXIucmZpbGUucmVhZChsZW5ndGgpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9s
aW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0IG1lbW9yaXplZCBsaW5lcy4iIiIKLQotICAgICAg
ICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnJmaWxlLmdldF9tZW1vcml6ZWRfbGluZXMo
KQotCi0KLWNsYXNzIF9TdGFuZGFsb25lUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1pbWljIG1v
ZF9weXRob24gcmVxdWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hh
bmRsZXIsIHVzZV90bHMpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1
ZXN0SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdF9o
YW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFu
ZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCi0gICAgICAgIHNlbGYuX3VzZV90bHMg
PSB1c2VfdGxzCi0gICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IHJlcXVlc3RfaGFuZGxlci5oZWFk
ZXJzCi0KLSAgICBkZWYgZ2V0X3VyaShzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWlj
IHJlcXVlc3QudXJpLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJhdyBkYXRh
IGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQotICAgICAgICBSZXF1ZXN0LUxpbmUsIHdo
aWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9uCi0g
ICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRlciBwYXJzaW5nIHRoZSByYXcgZGF0
YS4gVGhpcyBiZWhhdmlvciBpcwotICAgICAgICBrZXB0IGZvciBjb21wYXRpYmlsaXR5LgotICAg
ICAgICAiIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAg
ICB1cmkgPSBwcm9wZXJ0eShnZXRfdXJpKQotCi0gICAgZGVmIGdldF91bnBhcnNlZF91cmkoc2Vs
Zik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVucGFyc2VkX3VyaS4iIiIK
LQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1bnBhcnNl
ZF91cmkgPSBwcm9wZXJ0eShnZXRfdW5wYXJzZWRfdXJpKQotCi0gICAgZGVmIGdldF9tZXRob2Qo
c2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIKLQot
ICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKLSAgICBtZXRob2Qg
PSBwcm9wZXJ0eShnZXRfbWV0aG9kKQotCi0gICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKLSAg
ICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QucHJvdG9jb2wuIiIiCi0KLSAgICAgICAg
cmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24KLSAgICBwcm90b2Nv
bCA9IHByb3BlcnR5KGdldF9wcm90b2NvbCkKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAg
ICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19odHRwcygpLiIiIgotCi0gICAgICAgIHJldHVybiBz
ZWxmLl91c2VfdGxzCi0KLQotZGVmIF9pbXBvcnRfc3NsKCk6Ci0gICAgZ2xvYmFsIHNzbAotICAg
IHRyeToKLSAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9pbXBvcnRfcHlv
cGVuc3NsKCk6Ci0gICAgZ2xvYmFsIE9wZW5TU0wKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBP
cGVuU1NMLlNTTAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
LSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9u
KG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0
aW9uIHRvCi0gICAgLSBwcm92aWRlIG1ha2VmaWxlIG1ldGhvZCB3aGljaCBpcyBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBjbGFzcwotICAgIC0gdHdlYWsgc2h1dGRvd24gbWV0aG9kIHNpbmNlIE9wZW5T
U0wuU1NMLkNvbm5lY3Rpb24uc2h1dGRvd24gZG9lc24ndAotICAgICAgYWNjZXB0IHRoZSAiaG93
IiBhcmd1bWVudC4KLSAgICAtIGNvbnZlcnQgU3lzQ2FsbEVycm9yIGV4Y2VwdGlvbnMgdGhhdCBp
dHMgcmVjdiBtZXRob2QgbWF5IHJhaXNlIGludG8gYQotICAgICAgcmV0dXJuIHZhbHVlIG9mICcn
LCBtZWFuaW5nIEVPRi4gV2UgY2Fubm90IG92ZXJ3cml0ZSB0aGUgcmVjdiBtZXRob2Qgb24KLSAg
ICAgIHNlbGYuX2Nvbm5lY3Rpb24gc2luY2UgaXQncyBpbW11dGFibGUuCi0gICAgIiIiCi0KLSAg
ICBfT1ZFUlJJRERFTl9BVFRSSUJVVEVTID0gWydfY29ubmVjdGlvbicsICdtYWtlZmlsZScsICdz
aHV0ZG93bicsICdyZWN2J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uKToK
LSAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLQotICAgIGRlZiBfX2dldGF0
dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluIF9TdGFuZGFsb25lU1NM
Q29ubmVjdGlvbi5fT1ZFUlJJRERFTl9BVFRSSUJVVEVTOgotICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9j
b25uZWN0aW9uLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhz
ZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25u
ZWN0aW9uLl9PVkVSUklEREVOX0FUVFJJQlVURVM6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0
Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotICAgICAgICByZXR1cm4gc2VsZi5fY29u
bmVjdGlvbi5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKLQotICAgIGRlZiBtYWtlZmlsZShzZWxm
LCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzb2NrZXQuX2ZpbGVvYmpl
Y3Qoc2VsZiwgbW9kZSwgYnVmc2l6ZSkKLQotICAgIGRlZiBzaHV0ZG93bihzZWxmLCB1bnVzZWRf
aG93KToKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5zaHV0ZG93bigpCi0KLSAgICBkZWYgcmVj
dihzZWxmLCBidWZzaXplLCBmbGFncz0wKToKLSAgICAgICAgaWYgZmxhZ3MgIT0gMDoKLSAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkJykKLQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5yZWN2KGJ1
ZnNpemUpCi0gICAgICAgIGV4Y2VwdCBPcGVuU1NMLlNTTC5TeXNDYWxsRXJyb3IsIChlcnIsIG1l
c3NhZ2UpOgotICAgICAgICAgICAgaWYgZXJyID09IC0xOgotICAgICAgICAgICAgICAgICMgU3Vw
cHJlc3MgInVuZXhwZWN0ZWQgRU9GIiBleGNlcHRpb24uIFNlZSB0aGUgT3BlblNTTCBkb2N1bWVu
dAotICAgICAgICAgICAgICAgICMgZm9yIFNTTF9nZXRfZXJyb3IuCi0gICAgICAgICAgICAgICAg
cmV0dXJuICcnCi0gICAgICAgICAgICByYWlzZQotCi0KLWRlZiBfYWxpYXNfaGFuZGxlcnMoZGlz
cGF0Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6Ci0gICAgIiIiU2V0IGFsaWFzZXMg
c3BlY2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBpbiBkaXNwYXRjaGVyLgotCi0g
ICAgQXJnczoKLSAgICAgICAgZGlzcGF0Y2hlcjogZGlzcGF0Y2guRGlzcGF0Y2hlciBpbnN0YW5j
ZQotICAgICAgICB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGU6IGFsaWFzIG1hcCBmaWxlCi0gICAg
IiIiCi0KLSAgICBmcCA9IG9wZW4od2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSkKLSAgICB0cnk6
Ci0gICAgICAgIGZvciBsaW5lIGluIGZwOgotICAgICAgICAgICAgaWYgbGluZVswXSA9PSAnIycg
b3IgbGluZS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IG0gPSByZS5tYXRjaCgnKFxTKylccysoXFMrKScsIGxpbmUpCi0gICAgICAgICAgICBpZiBub3Qg
bToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAg
ZmlsZTonICsgbGluZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMoCi0g
ICAgICAgICAgICAgICAgICAgIG0uZ3JvdXAoMSksIG0uZ3JvdXAoMikpCi0gICAgICAgICAgICBl
eGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcihzdHIoZSkpCi0gICAgZmluYWxseToKLSAgICAgICAgZnAuY2xvc2UoKQotCi0K
LWNsYXNzIFdlYlNvY2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VI
VFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgotICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9y
IFdlYlNvY2tldC4iIiIKLQotICAgICMgT3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdN
aXhJbi5kYWVtb25fdGhyZWFkcwotICAgIGRhZW1vbl90aHJlYWRzID0gVHJ1ZQotICAgICMgT3Zl
cnJpZGVzIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcwotICAg
IGFsbG93X3JldXNlX2FkZHJlc3MgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0
aW9ucyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0
X18gdG8gc2V0IFNTTCBlbmFibGVkCi0gICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2Nr
ZXQgYmVmb3JlIHNlcnZlcl9iaW5kIGFuZCBzZXJ2ZXJfYWN0aXZhdGUsCi0gICAgICAgIGlmIG5l
Y2Vzc2FyeS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1v
bmcgcmVxdWVzdCBoYW5kbGVycyB0byBzYXZlIHRpbWUgZm9yCi0gICAgICAgICMgaW5zdGFudGlh
dGlvbi4gIERpc3BhdGNoZXIgY2FuIGJlIHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZl
LgotICAgICAgICBvcHRpb25zLmRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAotICAg
ICAgICAgICAgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzLAotICAgICAgICAgICAgb3B0aW9ucy5z
Y2FuX2RpciwKLSAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290
X2RpcikKLSAgICAgICAgaWYgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlOgotICAg
ICAgICAgICAgX2FsaWFzX2hhbmRsZXJzKG9wdGlvbnMuZGlzcGF0Y2hlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpCi0gICAg
ICAgIHdhcm5pbmdzID0gb3B0aW9ucy5kaXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpCi0gICAg
ICAgIGlmIHdhcm5pbmdzOgotICAgICAgICAgICAgZm9yIHdhcm5pbmcgaW4gd2FybmluZ3M6Ci0g
ICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdXYXJuaW5nIGluIHNvdXJjZSBsb2FkaW5n
OiAlcycgJSB3YXJuaW5nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYucmVxdWVzdF9xdWV1ZV9zaXplID0gb3B0aW9u
cy5yZXF1ZXN0X3F1ZXVlX3NpemUKLSAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93biA9IHRo
cmVhZGluZy5FdmVudCgpCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gRmFsc2UKLQotICAg
ICAgICBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5fX2luaXRfXygKLSAgICAgICAgICAgIHNlbGYs
IChvcHRpb25zLnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLCBXZWJTb2NrZXRSZXF1ZXN0SGFu
ZGxlcikKLQotICAgICAgICAjIEV4cG9zZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFu
ZGxlciBvYmplY3RzIGFjY2VzcyBpdC4gV2UgbmFtZQotICAgICAgICAjIGl0IHdpdGggd2Vic29j
a2V0XyBwcmVmaXggdG8gYXZvaWQgY29uZmxpY3QuCi0gICAgICAgIHNlbGYud2Vic29ja2V0X3Nl
cnZlcl9vcHRpb25zID0gb3B0aW9ucwotCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkK
LSAgICAgICAgc2VsZi5zZXJ2ZXJfYmluZCgpCi0gICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRl
KCkKLQotICAgIGRlZiBfY3JlYXRlX3NvY2tldHMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVy
X25hbWUsIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzCi0gICAgICAgIHNl
bGYuX3NvY2tldHMgPSBbXQotICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKLSAgICAg
ICAgICAgICMgT24gcGxhdGZvcm1zIHRoYXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJz
dCBiaW5kIGZhaWxzLgotICAgICAgICAgICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJ
UHY2Ci0gICAgICAgICAgICAjIC0gSWYgaXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNh
bGwgd2l0aCBBRl9JTkVUNiwgdGhlCi0gICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVk
cyBhbmQgdGhlIHNlY29uZCBmYWlscyAod2UnbGwgc2VlICdBZGRyZXNzCi0gICAgICAgICAgICAj
ICAgYWxyZWFkeSBpbiB1c2UnIGVycm9yKS4KLSAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBv
bmx5IElQdjYgb24gY2FsbCB3aXRoIEFGX0lORVQ2LCBib3RoIGNhbGwgYXJlCi0gICAgICAgICAg
ICAjICAgZXhwZWN0ZWQgdG8gc3VjY2VlZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KLSAgICAg
ICAgICAgIGFkZHJpbmZvX2FycmF5ID0gWwotICAgICAgICAgICAgICAgIChzb2NrZXQuQUZfSU5F
VDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLCAnJyksCi0gICAgICAgICAgICAgICAgKHNv
Y2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0sICcnLCAnJywgJycpXQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgYWRkcmluZm9fYXJyYXkgPSBzb2NrZXQuZ2V0YWRkcmluZm8oc2Vs
Zi5zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb2NrZXQuQUZfVU5TUEVDLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfU1RSRUFNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQ
KQotICAgICAgICBmb3IgYWRkcmluZm8gaW4gYWRkcmluZm9fYXJyYXk6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygnQ3JlYXRlIHNvY2tldCBvbjogJXInLCBhZGRyaW5mbykKLSAgICAg
ICAgICAgIGZhbWlseSwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNvY2thZGRyID0gYWRk
cmluZm8KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb2NrZXRfID0gc29ja2V0
LnNvY2tldChmYW1pbHksIHNvY2t0eXBlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg
ZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAl
cicsIGUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHNlcnZlcl9vcHRp
b25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgICAgIGlmIHNlcnZl
cl9vcHRpb25zLnVzZV90bHM6Ci0gICAgICAgICAgICAgICAgIyBGb3IgdGhlIGNhc2Ugb2YgX0hB
U19PUEVOX1NTTCwgd2UgZG8gd3JhcHBlciBzZXR1cCBhZnRlcgotICAgICAgICAgICAgICAgICMg
YWNjZXB0LgotICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0g
X1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9v
cHRpb25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlcnZl
cl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8g
PSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAg
ICAgICAgICBzb2NrZXRfID0gc3NsLndyYXBfc29ja2V0KHNvY2tldF8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBrZXlmaWxlPXNlcnZlcl9vcHRpb25zLnByaXZhdGVfa2V5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9j
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jbGllbnRfY2VydF8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAg
ICAgICAgIHNlbGYuX3NvY2tldHMuYXBwZW5kKChzb2NrZXRfLCBhZGRyaW5mbykpCi0KLSAgICBk
ZWYgc2VydmVyX2JpbmQoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5U
Q1BTZXJ2ZXIuc2VydmVyX2JpbmQgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMg
YmluZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmFpbGVkX3NvY2tldHMgPSBbXQotCi0gICAg
ICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRf
LCBhZGRyaW5mbyA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdC
aW5kIG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19yZXVzZV9h
ZGRyZXNzOgotICAgICAgICAgICAgICAgIHNvY2tldF8uc2V0c29ja29wdChzb2NrZXQuU09MX1NP
Q0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBzb2NrZXRfLmJpbmQoc2VsZi5zZXJ2ZXJfYWRkcmVzcykKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1Nr
aXAgYnkgZmFpbHVyZTogJXInLCBlKQotICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQot
ICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQotICAgICAg
ICAgICAgaWYgc2VsZi5zZXJ2ZXJfYWRkcmVzc1sxXSA9PSAwOgotICAgICAgICAgICAgICAgICMg
VGhlIG9wZXJhdGluZyBzeXN0ZW0gYXNzaWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBw
b3J0Ci0gICAgICAgICAgICAgICAgIyBudW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFu
ZCBsYXRlciBzb2NrZXRzIHNob3VsZCB1c2UKLSAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBv
cnQgbnVtYmVyLiBBbHNvIHNlbGYuc2VydmVyX3BvcnQgaXMgcmV3cml0dGVuCi0gICAgICAgICAg
ICAgICAgIyBiZWNhdXNlIGl0IGlzIGV4cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVy
bmFsIGNvZGUuCi0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9ICgKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSwgc29ja2V0Xy5nZXRzb2NrbmFtZSgpWzFd
KQotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNz
WzFdCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMgYXNzaWdu
ZWQnLCBzZWxmLnNlcnZlcl9wb3J0KQotCi0gICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxl
ZF9zb2NrZXRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykK
LQotICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNv
Y2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0aXBsZQot
ICAgICAgICBzb2NrZXRzIGxpc3Rlbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmFpbGVkX3Nv
Y2tldHMgPSBbXQotCi0gICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0g
ICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1ZXVlX3Np
emUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKLSAgICAgICAgICAgICAg
ICBzb2NrZXRfLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBmYWlsZWRfc29ja2V0cy5hcHBlbmQo
c29ja2V0aW5mbykKLQotICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBmYWlsZWRfc29ja2V0czoK
LSAgICAgICAgICAgIHNlbGYuX3NvY2tldHMucmVtb3ZlKHNvY2tldGluZm8pCi0KLSAgICAgICAg
aWYgbGVuKHNlbGYuX3NvY2tldHMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuY3Jp
dGljYWwoCi0gICAgICAgICAgICAgICAgJ05vIHNvY2tldHMgYWN0aXZhdGVkLiBVc2UgaW5mbyBs
b2cgbGV2ZWwgdG8gc2VlIHRoZSByZWFzb24uJykKLQotICAgIGRlZiBzZXJ2ZXJfY2xvc2Uoc2Vs
Zik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2Ns
b3NlIHRvIGVuYWJsZSBtdWx0aXBsZQotICAgICAgICBzb2NrZXRzIGNsb3NlLgotICAgICAgICAi
IiIKLQotICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxmLl9zb2NrZXRzOgotICAgICAgICAg
ICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCi0gICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnQ2xvc2Ugb246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICBzb2NrZXRfLmNs
b3NlKCkKLQotICAgIGRlZiBmaWxlbm8oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tl
dFNlcnZlci5UQ1BTZXJ2ZXIuZmlsZW5vLiIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5jcml0
aWNhbCgnTm90IHN1cHBvcnRlZDogZmlsZW5vJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2tl
dHNbMF1bMF0uZmlsZW5vKCkKLQotICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwg
Y2xpZW50X2FkZHJlc3MpOgotICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuaGFuZGxl
X2Vycm9yLiIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5lcnJvcigKLSAgICAgICAgICAgICdF
eGNlcHRpb24gaW4gcHJvY2Vzc2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCi0gICAgICAgICAg
ICBjbGllbnRfYWRkcmVzcywKLSAgICAgICAgICAgIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0g
ICAgICAgICMgTm90ZTogY2xpZW50X2FkZHJlc3MgaXMgYSB0dXBsZS4KLQotICAgIGRlZiBnZXRf
cmVxdWVzdChzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgVENQU2VydmVyLmdldF9yZXF1ZXN0
IHRvIHdyYXAgT3BlblNTTC5TU0wuQ29ubmVjdGlvbgotICAgICAgICBvYmplY3Qgd2l0aCBfU3Rh
bmRhbG9uZVNTTENvbm5lY3Rpb24gdG8gcHJvdmlkZSBtYWtlZmlsZSBtZXRob2QuIFdlCi0gICAg
ICAgIGNhbm5vdCBzdWJzdGl0dXRlIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24ubWFrZWZpbGUgc2lu
Y2UgaXQncyByZWFkb25seQotICAgICAgICBhdHRyaWJ1dGUuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLnNvY2tldC5hY2NlcHQo
KQotCi0gICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlv
bnMKLSAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNlX3RsczoKLSAgICAgICAgICAgIGlmIHNl
cnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yLCBlOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVyJywgZSkKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UKLQotICAgICAgICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4g
SGFuZHNoYWtlIGlzIGRvbmUgb24gYWNjZXB0LgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnQ2lwaGVyOiAlcycsIGFjY2VwdGVkX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5nZXRwZWVyY2VydCgpKQot
ICAgICAgICAgICAgZWxpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlP
UEVOU1NMOgotICAgICAgICAgICAgICAgICMgV2UgY2Fubm90IHByaW50IHRoZSBjaXBoZXIgaW4g
dXNlLiBweU9wZW5TU0wgZG9lc24ndCBwcm92aWRlCi0gICAgICAgICAgICAgICAgIyBhbnkgbWV0
aG9kIHRvIGZldGNoIHRoYXQuCi0KLSAgICAgICAgICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5D
b250ZXh0KE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QpCi0gICAgICAgICAgICAgICAgY3R4LnVz
ZV9wcml2YXRla2V5X2ZpbGUoc2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXkpCi0gICAgICAgICAg
ICAgICAgY3R4LnVzZV9jZXJ0aWZpY2F0ZV9maWxlKHNlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRl
KQotCi0gICAgICAgICAgICAgICAgZGVmIGRlZmF1bHRfY2FsbGJhY2soY29ubiwgY2VydCwgZXJy
bnVtLCBlcnJkZXB0aCwgb2spOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2sgPT0gMQot
Ci0gICAgICAgICAgICAgICAgIyBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQgZm9yIFNTTF9DVFhf
c2V0X3ZlcmlmeS4KLSAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50
X2F1dGg6Ci0gICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlID0gT3BlblNTTC5TU0wuVkVS
SUZZX1BFRVIKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9vcHRpb25zLnRsc19j
bGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2Rl
IHw9IE9wZW5TU0wuU1NMLlZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVAotICAgICAgICAgICAg
ICAgICAgICBjdHguc2V0X3ZlcmlmeSh2ZXJpZnlfbW9kZSwgZGVmYXVsdF9jYWxsYmFjaykKLSAg
ICAgICAgICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzZXJ2ZXJfb3B0aW9u
cy50bHNfY2xpZW50X2NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
Y3R4LnNldF92ZXJpZnkoT3BlblNTTC5TU0wuVkVSSUZZX05PTkUsIGRlZmF1bHRfY2FsbGJhY2sp
Ci0KLSAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBPcGVuU1NMLlNTTC5Db25uZWN0
aW9uKGN0eCwgYWNjZXB0ZWRfc29ja2V0KQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tl
dC5zZXRfYWNjZXB0X3N0YXRlKCkKLQotICAgICAgICAgICAgICAgICMgQ29udmVydCBTU0wgcmVs
YXRlZCBlcnJvciBpbnRvIHNvY2tldC5lcnJvciBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBT
b2NrZXRTZXJ2ZXIgaWdub3JlcyB0aGVtIGFuZCBrZWVwcyBydW5uaW5nLgotICAgICAgICAgICAg
ICAgICMKLSAgICAgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBDb252ZXJ0IGFsbCBraW5k
cyBvZiBlcnJvcnMuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBh
Y2NlcHRlZF9zb2NrZXQuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT3Bl
blNTTC5TU0wuRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgICMgU2V0IGVycm5vIHBhcnQg
dG8gMSAoU1NMX0VSUk9SX1NTTCkgbGlrZSB0aGUgc3NsIG1vZHVsZQotICAgICAgICAgICAgICAg
ICAgICAjIGRvZXMuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXIn
LCBlKQotICAgICAgICAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoMSwgJyVyJyAlIGUp
Ci0gICAgICAgICAgICAgICAgY2VydCA9IGFjY2VwdGVkX3NvY2tldC5nZXRfcGVlcl9jZXJ0aWZp
Y2F0ZSgpCi0gICAgICAgICAgICAgICAgaWYgY2VydCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQgY2VydCBzdWJqZWN0OiAlcicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0LmdldF9zdWJqZWN0KCku
Z2V0X2NvbXBvbmVudHMoKSkKLSAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBfU3Rh
bmRhbG9uZVNTTENvbm5lY3Rpb24oYWNjZXB0ZWRfc29ja2V0KQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdObyBUTFMgc3VwcG9ydCBtb2R1bGUg
aXMgYXZhaWxhYmxlJykKLQotICAgICAgICByZXR1cm4gYWNjZXB0ZWRfc29ja2V0LCBjbGllbnRf
YWRkcmVzcwotCi0gICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZiwgcG9sbF9pbnRlcnZhbD0wLjUp
OgotICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5zZXJ2ZV9mb3Jl
dmVyLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gVHJ1ZQotICAgICAgICBzZWxm
Ll9fd3NfaXNfc2h1dF9kb3duLmNsZWFyKCkKLSAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxm
LmhhbmRsZV9yZXF1ZXN0Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19oYW5kbGVfcmVxdWVz
dF9ub2Jsb2NrJyk6Ci0gICAgICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYuX2hhbmRsZV9y
ZXF1ZXN0X25vYmxvY2sKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53
YXJuaW5nKCdGYWxsYmFjayB0byBibG9ja2luZyByZXF1ZXN0IGhhbmRsZXInKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICB3aGlsZSBzZWxmLl9fd3Nfc2VydmluZzoKLSAgICAgICAgICAgICAg
ICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdCgKLSAgICAgICAgICAgICAgICAgICAgW3NvY2tldF9b
MF0gZm9yIHNvY2tldF8gaW4gc2VsZi5fc29ja2V0c10sCi0gICAgICAgICAgICAgICAgICAgIFtd
LCBbXSwgcG9sbF9pbnRlcnZhbCkKLSAgICAgICAgICAgICAgICBmb3Igc29ja2V0XyBpbiByOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldF8KLSAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9u
ZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi5z
ZXQoKQotCi0gICAgZGVmIHNodXRkb3duKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBTb2Nr
ZXRTZXJ2ZXIuQmFzZVNlcnZlci5zaHV0ZG93bi4iIiIKLQotICAgICAgICBzZWxmLl9fd3Nfc2Vy
dmluZyA9IEZhbHNlCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24ud2FpdCgpCi0KLQot
Y2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIoQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVz
dEhhbmRsZXIpOgotICAgICIiIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciBzcGVjaWFsaXplZCBmb3Ig
V2ViU29ja2V0LiIiIgotCi0gICAgIyBVc2UgaHR0cGxpYi5IVFRQTWVzc2FnZSBpbnN0ZWFkIG9m
IG1pbWV0b29scy5NZXNzYWdlLgotICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHBsaWIuSFRUUE1lc3Nh
Z2UKLQotICAgIHByb3RvY29sX3ZlcnNpb24gPSAiSFRUUC8xLjEiCi0KLSAgICBkZWYgc2V0dXAo
c2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5TdHJlYW1SZXF1ZXN0SGFu
ZGxlci5zZXR1cCB0byB3cmFwIHJmaWxlCi0gICAgICAgIHdpdGggTWVtb3JpemluZ0ZpbGUuCi0K
LSAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYnkgQmFzZVJlcXVlc3RIYW5kbGVy
J3MgY29uc3RydWN0b3IKLSAgICAgICAgYmVmb3JlIGNhbGxpbmcgQmFzZUhUVFBSZXF1ZXN0SGFu
ZGxlci5oYW5kbGUuCi0gICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlIHdpbGwg
Y2FsbAotICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBh
bmQgaXQgd2lsbCBjYWxsCi0gICAgICAgIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLnBhcnNlX3Jl
cXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQ2FsbCBzdXBlcmNsYXNzJ3Mgc2V0dXAg
dG8gcHJlcGFyZSByZmlsZSwgd2ZpbGUsIGV0Yy4gU2VlIHNldHVwCi0gICAgICAgICMgZGVmaW5p
dGlvbiBvbiB0aGUgcm9vdCBjbGFzcyBTb2NrZXRTZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIg
dG8KLSAgICAgICAgIyB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkb2VzLgotICAgICAgICBDR0lIVFRQ
U2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5zZXR1cChzZWxmKQotCi0gICAgICAgIHNlbGYu
cmZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZSgKLSAgICAgICAgICAgIHNlbGYu
cmZpbGUsCi0gICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVzPV9NQVhfTUVNT1JJWkVEX0xJ
TkVTKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBz
ZXJ2ZXIpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2Vs
ZikKLQotICAgICAgICBzZWxmLl9vcHRpb25zID0gc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0
aW9ucwotCi0gICAgICAgICMgT3ZlcnJpZGVzIENHSUhUVFBTZXJ2ZXJSZXF1ZXN0SGFuZGxlci5j
Z2lfZGlyZWN0b3JpZXMuCi0gICAgICAgIHNlbGYuY2dpX2RpcmVjdG9yaWVzID0gc2VsZi5fb3B0
aW9ucy5jZ2lfZGlyZWN0b3JpZXMKLSAgICAgICAgIyBSZXBsYWNlIENHSUhUVFBSZXF1ZXN0SGFu
ZGxlci5pc19leGVjdXRhYmxlIG1ldGhvZC4KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5pc19l
eGVjdXRhYmxlX21ldGhvZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuaXNfZXhlY3V0
YWJsZSA9IHNlbGYuX29wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QKLQotICAgICAgICAjIFRo
aXMgYWN0dWFsbHkgY2FsbHMgQmFzZVJlcXVlc3RIYW5kbGVyLl9faW5pdF9fLgotICAgICAgICBD
R0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5fX2luaXRfXygKLSAgICAgICAgICAg
IHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCi0KLSAgICBkZWYgcGFyc2Vf
cmVxdWVzdChzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2ZXIuQmFzZUhU
VFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgotCi0gICAgICAgIFJldHVybiBUcnVlIHRv
IGNvbnRpbnVlIHByb2Nlc3NpbmcgZm9yIEhUVFAoUyksIEZhbHNlIG90aGVyd2lzZS4KLQotICAg
ICAgICBTZWUgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgbWV0aG9k
IHdoaWNoIGNhbGxzCi0gICAgICAgIHRoaXMgbWV0aG9kIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBy
ZXR1cm4gdmFsdWUgd2lsbCBiZSBoYW5kbGVkLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFdl
IGhvb2sgcGFyc2VfcmVxdWVzdCBtZXRob2QsIGJ1dCBhbHNvIGNhbGwgdGhlIG9yaWdpbmFsCi0g
ICAgICAgICMgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qgc2luY2Ugd2hlbiB3
ZSByZXR1cm4gRmFsc2UsCi0gICAgICAgICMgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9v
bmVfcmVxdWVzdCBjb250aW51ZXMgcHJvY2Vzc2luZyBhbmQKLSAgICAgICAgIyBpdCBuZWVkcyB2
YXJpYWJsZXMgc2V0IGJ5IENHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgotICAg
ICAgICAjCi0gICAgICAgICMgVmFyaWFibGVzIHNldCBieSB0aGlzIG1ldGhvZCB3aWxsIGJlIGFs
c28gdXNlZCBieSBXZWJTb2NrZXQgcmVxdWVzdAotICAgICAgICAjIGhhbmRsaW5nIChzZWxmLnBh
dGgsIHNlbGYuY29tbWFuZCwgc2VsZi5yZXF1ZXN0bGluZSwgZXRjLiBTZWUgYWxzbwotICAgICAg
ICAjIGhvdyBfU3RhbmRhbG9uZVJlcXVlc3QncyBtZW1iZXJzIGFyZSBpbXBsZW1lbnRlZCB1c2lu
ZyB0aGVzZQotICAgICAgICAjIGF0dHJpYnV0ZXMpLgotICAgICAgICBpZiBub3QgQ0dJSFRUUFNl
cnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdChzZWxmKToKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuY29tbWFuZCA9PSAiQ09OTkVDVCI6
Ci0gICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiQ29ubmVjdGVkIikKLSAgICAg
ICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbm5lY3Rpb24iLCAia2VlcC1hbGl2ZSIpCi0gICAg
ICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Jhc2ljX2F1dGg6Ci0gICAgICAgICAgICBhdXRo
ID0gc2VsZi5oZWFkZXJzLmdldGhlYWRlcignQXV0aG9yaXphdGlvbicpCi0gICAgICAgICAgICBp
ZiBhdXRoICE9IHNlbGYuX29wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsOgotICAgICAgICAg
ICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSg0MDEpCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5k
X2hlYWRlcignV1dXLUF1dGhlbnRpY2F0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnQmFzaWMgcmVhbG09IlB5d2Vic29ja2V0IicpCi0gICAgICAgICAgICAgICAgc2VsZi5l
bmRfaGVhZGVycygpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlcXVlc3Qg
YmFzaWMgYXV0aGVudGljYXRpb24nKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmko
c2VsZi5wYXRoKQotCi0gICAgICAgICMgU3BlY2lhbCBwYXRocyBmb3IgWE1MSHR0cFJlcXVlc3Qg
YmVuY2htYXJrCi0gICAgICAgIHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZpeCA9ICcvMDczYmUw
MDFlMTA5NTA2OTJjY2JmM2EyYWQyMWMyNDUnCi0gICAgICAgIGlmIHJlc291cmNlID09ICh4aHJf
YmVuY2htYXJrX2hlbHBlcl9wcmVmaXggKyAnX3NlbmQnKToKLSAgICAgICAgICAgIHhocl9iZW5j
aG1hcmtfaGFuZGxlciA9IFhIUkJlbmNobWFya0hhbmRsZXIoCi0gICAgICAgICAgICAgICAgc2Vs
Zi5oZWFkZXJzLCBzZWxmLnJmaWxlLCBzZWxmLndmaWxlKQotICAgICAgICAgICAgeGhyX2JlbmNo
bWFya19oYW5kbGVyLmRvX3NlbmQoKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAg
IGlmIHJlc291cmNlID09ICh4aHJfYmVuY2htYXJrX2hlbHBlcl9wcmVmaXggKyAnX3JlY2VpdmUn
KToKLSAgICAgICAgICAgIHhocl9iZW5jaG1hcmtfaGFuZGxlciA9IFhIUkJlbmNobWFya0hhbmRs
ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5oZWFkZXJzLCBzZWxmLnJmaWxlLCBzZWxmLndmaWxl
KQotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyLmRvX3JlY2VpdmUoKQotICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdJbnZhbGlkIFVSSTogJXInLCBzZWxmLnBhdGgpCi0g
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sgdG8gQ0dJSFRUUFJlcXVlc3RI
YW5kbGVyJykKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHNlcnZlcl9vcHRpb25z
ID0gc2VsZi5zZXJ2ZXIud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0gICAgICAgIGlmIGhvc3Qg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QgPSBzZXJ2ZXJfb3B0aW9u
cy52YWxpZGF0aW9uX2hvc3QKLSAgICAgICAgICAgIGlmIHZhbGlkYXRpb25faG9zdCBpcyBub3Qg
Tm9uZSBhbmQgaG9zdCAhPSB2YWxpZGF0aW9uX2hvc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0ludmFsaWQgaG9zdDogJXIgKGV4cGVjdGVkOiAlciknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdGlvbl9ob3N0KQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCi0gICAgICAgIGlmIHBvcnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB2
YWxpZGF0aW9uX3BvcnQgPSBzZXJ2ZXJfb3B0aW9ucy52YWxpZGF0aW9uX3BvcnQKLSAgICAgICAg
ICAgIGlmIHZhbGlkYXRpb25fcG9ydCBpcyBub3QgTm9uZSBhbmQgcG9ydCAhPSB2YWxpZGF0aW9u
X3BvcnQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ludmFsaWQgcG9ydDog
JXIgKGV4cGVjdGVkOiAlciknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVx
dWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHNlbGYu
cGF0aCA9IHJlc291cmNlCi0KLSAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChz
ZWxmLCBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
IyBGYWxsYmFjayB0byBkZWZhdWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Ig
d2hpY2gKLSAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgotICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0
ZShzZWxmLnBhdGgpOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5k
bGVyIGZvciByZXNvdXJjZTogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucGF0aCkKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sg
dG8gQ0dJSFRUUFJlcXVlc3RIYW5kbGVyJykKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQot
ICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMnLCBlKQot
ICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0KLSAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3aXRob3V0IGV4Y2VwdCBjbGF1
c2Ugc2V0dXAgKGluY2x1ZGluZwotICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uKSBpcyByYWlz
ZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQKLSAgICAgICAgIyBhbmQgbG9n
Z2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZSgKLSAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5kaXNwYXRj
aGVyLAotICAgICAgICAgICAgICAgICAgICBhbGxvd0RyYWZ0NzU9c2VsZi5fb3B0aW9ucy5hbGxv
d19kcmFmdDc1LAotICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9c2VsZi5fb3B0aW9ucy5zdHJp
Y3QpCi0gICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZlcnNpb25FeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIHZl
cnNpb24gZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Uo
Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgICAgIHNlbGYuc2Vu
ZF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlLnN1cHBvcnRlZF92ZXJzaW9ucykKLSAgICAgICAgICAg
ICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAg
ICAgICAgICAgICMgSGFuZHNoYWtlIGZvciB3cyhzKSBmYWlsZWQuCi0gICAgICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCi0g
ICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gc2VsZi5f
b3B0aW9ucy5kaXNwYXRjaGVyCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIu
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRC
eVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRl
ZDogJXMnLCBlKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBsb2dfcmVxdWVzdChz
ZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNl
cnZlci5sb2dfcmVxdWVzdC4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAl
cyAlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUsIHN0cihj
b2RlKSwgc3RyKHNpemUpKQotCi0gICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6Ci0gICAg
ICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKLQotICAgICAgICAj
IERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBl
cnJvcnMuCi0gICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2Vk
IGJ5IHRoaXMgbWV0aG9kLgotICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnJXMgLSAlcycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1swXSAlIGFyZ3NbMTpdKQotCi0gICAgZGVm
IGlzX2NnaShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNw
b25kcyB0byBhIENHSSBzY3JpcHQuCi0KLSAgICAgICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2Vs
Zi5wYXRoIGRvZXNuJ3QgY29udGFpbnMgLi4KLSAgICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmls
ZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBvciBub3QuCi0gICAgICAgIElmIHRoZSBmaWxlIGlzIG5v
dCBleGVjdXRhYmxlLCBpdCBpcyBoYW5kbGVkIGFzIHN0YXRpYyBmaWxlIG9yIGRpcgotICAgICAg
ICByYXRoZXIgdGhhbiBhIENHSSBzY3JpcHQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIENH
SUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmlzX2NnaShzZWxmKToKLSAgICAgICAg
ICAgIGlmICcuLicgaW4gc2VsZi5wYXRoOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQot
ICAgICAgICAgICAgIyBzdHJpcCBxdWVyeSBwYXJhbWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKLSAg
ICAgICAgICAgIHJlc291cmNlX25hbWUgPSBzZWxmLnBhdGguc3BsaXQoJz8nLCAyKVswXQotICAg
ICAgICAgICAgIyBjb252ZXJ0IHJlc291cmNlX25hbWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBm
aWxlc3lzdGVtLgotICAgICAgICAgICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgo
cmVzb3VyY2VfbmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRm
aWxlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1k
ZWYgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyhjKToKLSAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dn
ZXIoJyVzLiVzJyAlIChjLl9fbW9kdWxlX18sIGMuX19uYW1lX18pKQotCi0KLWRlZiBfY29uZmln
dXJlX2xvZ2dpbmcob3B0aW9ucyk6Ci0gICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxP
R0xFVkVMX0ZJTkUsICdGSU5FJykKLQotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkK
LSAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2
ZWwudXBwZXIoKSkpCi0gICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKLSAgICAgICAgaGFuZGxlciA9
IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcigKLSAgICAgICAgICAgICAgICBv
cHRpb25zLmxvZ19maWxlLCAnYScsIG9wdGlvbnMubG9nX21heCwgb3B0aW9ucy5sb2dfY291bnQp
Ci0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCi0g
ICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoCi0gICAgICAgICAgICAnWyUoYXNjdGlt
ZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1lKXM6ICUobWVzc2FnZSlzJykKLSAgICBoYW5kbGVy
LnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikK
LQotICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5nLmdldExldmVsTmFtZSgKLSAg
ICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigpKQotICAgIF9nZXRfbG9nZ2Vy
X2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKAotICAgICAgICBkZWZsYXRlX2xv
Z19sZXZlbF9uYW1lKQotICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fSW5mbGF0ZXIp
LnNldExldmVsKAotICAgICAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lKQotCi0KLWRlZiBfYnVp
bGRfb3B0aW9uX3BhcnNlcigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
Ci0KLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLCBkZXN0PSdjb25maWdfZmlsZScs
IHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdQYXRoIHRvIGNvbmZpZ3VyYXRpb24gZmlsZS4gU2Vl
IHRoZSBmaWxlIGNvbW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCB0aGUg
dG9wIG9mIHRoaXMgZmlsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdmaWxlIGZvcm1hdCcpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctSCcs
ICctLXNlcnZlci1ob3N0JywgJy0tc2VydmVyX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3NlcnZlcl9ob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAot
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBob3N0bmFtZSB0byBsaXN0ZW4gdG8n
KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctVicsICctLXZhbGlkYXRpb24taG9zdCcsICctLXZh
bGlkYXRpb25faG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmFsaWRhdGlvbl9o
b3N0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIHZhbGlkYXRlIGluIGFic29sdXRlIHBh
dGguJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wb3J0JywgZGVzdD0ncG9ydCcs
IHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVM
VF9XRUJfU09DS0VUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBs
aXN0ZW4gdG8nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctUCcsICctLXZhbGlkYXRpb24tcG9y
dCcsICctLXZhbGlkYXRpb25fcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmFs
aWRhdGlvbl9wb3J0JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFsaWRh
dGUgaW4gYWJzb2x1dGUgcGF0aC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsICctLXdl
YnNvY2staGFuZGxlcnMnLCAnLS13ZWJzb2NrX2hhbmRsZXJzJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIHJvb3QgZGlyZWN0b3J5
IG9mIFdlYlNvY2tldCBoYW5kbGVyIGZpbGVzLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0lmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLCAtLWRvY3VtZW50LXJvb3QgaXMgdXNlZCAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIHRoZSBiYXNlLicpKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctbScsICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAotICAgICAgICAg
ICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnV2Vi
U29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRoIGFuZCAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFyYXRlZCBi
eSBzcGFjZXMuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc2Nhbi1kaXInLCAn
LS1zY2FuX2RpcicsIGRlc3Q9J3NjYW5fZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ011c3QgYmUgYSBkaXJlY3Rv
cnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBkaXJlY3RvcnkgYXJlIHNjYW5uZWQgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgcmVnaXN0ZXJlZCB0byB0aGUgc2VydmVyLiAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBmb3Igc2F2aW5nIHNjYW4gdGlt
ZSB3aGVuIHRoZSBoYW5kbGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdCBk
aXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxlcyB0aGF0IGFyZSAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZpbGUgb3IgYXJlIGhhbmRsZXIgZmlsZXMgYnV0
IHlvdSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvblwndCB3YW50IHRoZW0gdG8g
YmUgcmVnaXN0ZXJlZC4gJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYWxsb3ctaGFuZGxl
cnMtb3V0c2lkZS1yb290LWRpcicsCi0gICAgICAgICAgICAgICAgICAgICAgJy0tYWxsb3dfaGFu
ZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0
aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTY2FucyBXZWJTb2NrZXQgaGFuZGxlcnMgZXZl
biBpZiB0aGVpciBjYW5vbmljYWwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRo
IGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1kJywgJy0tZG9jdW1lbnQtcm9vdCcsICctLWRvY3VtZW50X3Jvb3QnLAotICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J2RvY3VtZW50X3Jvb3QnLCBkZWZhdWx0PScuJywKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdEb2N1bWVudCByb290IGRpcmVjdG9yeS4nKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCcteCcsICctLWNnaS1wYXRocycsICctLWNnaV9wYXRocycsIGRlc3Q9J2Nn
aV9wYXRocycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAv
Y2dpLC9odGJpbikgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBk
b2N1bWVudF9yb290L2NnaV9wYXRoIGFyZSBoYW5kbGVkICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXMgQ0dJIHByb2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy10JywgJy0tdGxzJywgZGVzdD0ndXNlX3RscycsIGFjdGlvbj0nc3Rv
cmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0ndXNl
IFRMUyAod3NzOi8vKScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLW1vZHVsZScsICct
LXRsc19tb2R1bGUnLCBkZXN0PSd0bHNfbW9kdWxlJywKLSAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXMgPSBbX1RMU19CWV9T
VEFOREFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZC4gJwotICAgICAgICAg
ICAgICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZCcg
JQotICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19C
WV9QWU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsICctLXByaXZhdGUta2V5
JywgJy0tcHJpdmF0ZV9rZXknLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ByaXZhdGVf
a2V5JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdUTFMgcHJpdmF0
ZSBrZXkgZmlsZS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYycsICctLWNlcnRpZmljYXRl
JywgZGVzdD0nY2VydGlmaWNhdGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jycs
IGhlbHA9J1RMUyBjZXJ0aWZpY2F0ZSBmaWxlLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0t
dGxzLWNsaWVudC1hdXRoJywgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKLSAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1JlcXVlc3RzIFRMUyBjbGllbnQgYXV0aCBvbiBldmVyeSBjb25uZWN0
aW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLWNsaWVudC1jZXJ0LW9wdGlvbmFs
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwn
LAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ01ha2VzIGNsaWVudCBjZXJ0aWZpY2F0
ZSBvcHRpb25hbCBldmVuIHRob3VnaCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RM
UyBjbGllbnQgYXV0aCBpcyBlbmFibGVkLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRs
cy1jbGllbnQtY2EnLCBkZXN0PSd0bHNfY2xpZW50X2NhJywgZGVmYXVsdD0nJywKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnU3BlY2lmaWVzIGEgcGVtIGZpbGUgd2hpY2ggY29udGFpbnMg
YSBzZXQgb2YgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRlbmF0ZWQgQ0Eg
Y2VydGlmaWNhdGVzIHdoaWNoIGFyZSB1c2VkIHRvICcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndmFsaWRhdGUgY2VydGlmaWNhdGVzIHBhc3NlZCBmcm9tIGNsaWVudHMnKSkKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLS1iYXNpYy1hdXRoJywgZGVzdD0ndXNlX2Jhc2ljX2F1dGgnLAot
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRp
b24uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAot
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsIGRlZmF1
bHQ9J3Rlc3Q6dGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmaWVzIHRo
ZSBjcmVkZW50aWFsIG9mIGJhc2ljIGF1dGhlbnRpY2F0aW9uICcKLSAgICAgICAgICAgICAgICAg
ICAgICAnYnkgdXNlcm5hbWU6cGFzc3dvcmQgcGFpciAoZS5nLiB0ZXN0OnRlc3QpLicpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1sJywgJy0tbG9nLWZpbGUnLCAnLS1sb2dfZmlsZScsIGRlc3Q9
J2xvZ19maWxlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdMb2cg
ZmlsZS4nKQotICAgICMgQ3VzdG9tIGxvZyBsZXZlbDoKLSAgICAjIC0gRklORTogUHJpbnRzIHN0
YXR1cyBvZiBlYWNoIGZyYW1lIHByb2Nlc3Npbmcgc3RlcAotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctLWxvZy1sZXZlbCcsICctLWxvZ19sZXZlbCcsIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0nbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybicsCi0gICAgICAgICAg
ICAgICAgICAgICAgY2hvaWNlcz1bJ2ZpbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nTG9nIGxldmVsLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGVmbGF0ZS1s
b2ctbGV2ZWwnLCAnLS1kZWZsYXRlX2xvZ19sZXZlbCcsCi0gICAgICAgICAgICAgICAgICAgICAg
dHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdkZWZsYXRlX2xvZ19s
ZXZlbCcsIGRlZmF1bHQ9J3dhcm4nLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9Wydk
ZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nTG9nIGxldmVsIGZvciBfRGVmbGF0ZXIgYW5kIF9JbmZsYXRlci4nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXRocmVhZC1tb25pdG9yLWludGVydmFsLWluLXNlYycsCi0gICAgICAgICAg
ICAgICAgICAgICAgJy0tdGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSd0aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMnLAotICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1bHQ9LTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ0lmIHBvc2l0aXZlIGludGVnZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0
aHJlYWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25pdG9yIHRvIHNob3cgdGhl
IHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3BlcmlvZGljYWxseSBpbiB0aGUgc3BlY2lmaWVkIGludGV2YWwgaW4gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdzZWNvbmQuIElmIG5vbi1wb3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNp
ZmllZCwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlIHRoZSB0aHJlYWQg
bW9uaXRvci4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbWF4JywgJy0tbG9nX21h
eCcsIGRlc3Q9J2xvZ19tYXgnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9X0RFRkFVTFRfTE9HX01BWF9CWVRFUywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdMb2cgbWF4aW11bSBieXRlcycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50
JywgJy0tbG9nX2NvdW50JywgZGVzdD0nbG9nX2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAg
ICB0eXBlPSdpbnQnLCBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tYWxsb3ctZHJhZnQ3NScsIGRlc3Q9J2FsbG93X2RyYWZ0NzUnLAotICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nT2Jzb2xldGUgb3B0aW9uLiBJZ25vcmVkLicpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy0tc3RyaWN0JywgZGVzdD0nc3RyaWN0JywgYWN0aW9uPSdzdG9yZV90
cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSdPYnNvbGV0
ZSBvcHRpb24uIElnbm9yZWQuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWV1
ZScsIGRlc3Q9J3JlcXVlc3RfcXVldWVfc2l6ZScsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9SRVFVRVNUX1FVRVVFX1NJWkUsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0ncmVxdWVzdCBxdWV1ZSBzaXplJykKLQotICAgIHJldHVybiBwYXJz
ZXIKLQotCi1jbGFzcyBUaHJlYWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgotICAgIGRhZW1v
biA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgotICAg
ICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3In
KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQot
Ci0gICAgICAgIHNlbGYuX2ludGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYwotCi0gICAg
ZGVmIHJ1bihzZWxmKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRocmVhZF9u
YW1lX2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVy
YXRlKCk6Ci0gICAgICAgICAgICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5h
bWUpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygKLSAgICAgICAgICAgICAgICAiJWQg
YWN0aXZlIHRocmVhZHM6ICVzIiwKLSAgICAgICAgICAgICAgICB0aHJlYWRpbmcuYWN0aXZlX2Nv
dW50KCksCi0gICAgICAgICAgICAgICAgJywgJy5qb2luKHRocmVhZF9uYW1lX2xpc3QpKQotICAg
ICAgICAgICAgdGltZS5zbGVlcChzZWxmLl9pbnRlcnZhbF9pbl9zZWMpCi0KLQotZGVmIF9wYXJz
ZV9hcmdzX2FuZF9jb25maWcoYXJncyk6Ci0gICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJz
ZXIoKQotCi0gICAgIyBGaXJzdCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24g
ZmlsZS4KLSAgICB0ZW1wb3Jhcnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFy
c2VfYXJncyhhcmdzPWFyZ3MpCi0gICAgaWYgdGVtcG9yYXJ5X2FyZ3M6Ci0gICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoCi0gICAgICAgICAgICAnVW5yZWNvZ25pemVkIHBvc2l0aW9uYWwgYXJndW1l
bnRzOiAlcicsIHRlbXBvcmFyeV9hcmdzKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYg
dGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IGNvbmZpZ19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdyJykKLSAg
ICAgICAgZXhjZXB0IElPRXJyb3IsIGU6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAot
ICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gb3BlbiBjb25maWd1cmF0aW9uIGZpbGUgJXI6ICVy
JywKLSAgICAgICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwKLSAgICAg
ICAgICAgICAgICBlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBjb25maWdf
cGFyc2VyID0gQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoKQotICAgICAgICBjb25maWdf
cGFyc2VyLnJlYWRmcChjb25maWdfZnApCi0gICAgICAgIGNvbmZpZ19mcC5jbG9zZSgpCi0KLSAg
ICAgICAgYXJnc19mcm9tX2NvbmZpZyA9IFtdCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBj
b25maWdfcGFyc2VyLml0ZW1zKCdweXdlYnNvY2tldCcpOgotICAgICAgICAgICAgYXJnc19mcm9t
X2NvbmZpZy5hcHBlbmQoJy0tJyArIG5hbWUpCi0gICAgICAgICAgICBhcmdzX2Zyb21fY29uZmln
LmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgaWYgYXJncyBpcyBOb25lOgotICAgICAgICAgICAgYXJn
cyA9IGFyZ3NfZnJvbV9jb25maWcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZ3MgPSBh
cmdzX2Zyb21fY29uZmlnICsgYXJncwotICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJncz1hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB0ZW1wb3Jhcnlfb3B0aW9ucywg
dGVtcG9yYXJ5X2FyZ3MKLQotCi1kZWYgX21haW4oYXJncz1Ob25lKToKLSAgICAiIiJZb3UgY2Fu
IGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHlvdXIgb3duIHByb2dyYW0sIGJ1dCBwbGVhc2Ugbm90
ZSB0aGF0Ci0gICAgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzaWRlLWVmZmVjdHMgdGhhdCBtaWdo
dCBhZmZlY3QgeW91ciBwcm9ncmFtLiBGb3IKLSAgICBleGFtcGxlLCB1dGlsLndyYXBfcG9wZW4z
X2Zvcl93aW4gdXNlIGluIHRoaXMgbWV0aG9kIHJlcGxhY2VzIGltcGxlbWVudGF0aW9uCi0gICAg
b2Ygb3MucG9wZW4zLgotICAgICIiIgotCi0gICAgb3B0aW9ucywgYXJncyA9IF9wYXJzZV9hcmdz
X2FuZF9jb25maWcoYXJncz1hcmdzKQotCi0gICAgb3MuY2hkaXIob3B0aW9ucy5kb2N1bWVudF9y
b290KQotCi0gICAgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCi0KLSAgICBpZiBvcHRpb25z
LmFsbG93X2RyYWZ0NzU6Ci0gICAgICAgIGxvZ2dpbmcud2FybmluZygnLS1hbGxvd19kcmFmdDc1
IG9wdGlvbiBpcyBvYnNvbGV0ZS4nKQotCi0gICAgaWYgb3B0aW9ucy5zdHJpY3Q6Ci0gICAgICAg
IGxvZ2dpbmcud2FybmluZygnLS1zdHJpY3Qgb3B0aW9uIGlzIG9ic29sZXRlLicpCi0KLSAgICAj
IFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2
YWx1ZXMuIE1vdmUgc29tZQotICAgICMgb2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RI
YW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0dGVyLgotICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVz
ID0gW10KLSAgICBvcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kID0gTm9uZQotICAgIGlmIG9w
dGlvbnMuY2dpX3BhdGhzOgotICAgICAgICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlv
bnMuY2dpX3BhdGhzLnNwbGl0KCcsJykKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3ln
d2luJywgJ3dpbjMyJyk6Ci0gICAgICAgICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKLSAgICAgICAg
ICAgICMgRm9yIFdpbjMyIFB5dGhvbiwgaXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAot
ICAgICAgICAgICAgIyBpcyBzZXQgdG8gYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgot
ICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1
bSBzZXRzIENZR1dJTl9QQVRIIHRvCi0gICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9w
YXJ0eS9jeWd3aW4vYmluLgotICAgICAgICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZp
cm9uOgotICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BB
VEgnXQotICAgICAgICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQot
Ci0gICAgICAgICAgICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0cGF0aCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3Bh
dGgpCi0KLSAgICAgICAgICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNr
X3NjcmlwdAotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBvcHRpb25zLnRs
c19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6Ci0gICAgICAg
ICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEUKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKLSAgICAgICAg
ICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRs
c19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVi
dWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUyBz
dXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAgICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19C
WV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9zc2woKToKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFi
bGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYgb3B0aW9ucy50
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgbm90IF9pbXBv
cnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgncHlPcGVu
U1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnSW52YWxpZCAt
LXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYg
bm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlvbnMuY2VydGlmaWNhdGU6Ci0gICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAnVG8gdXNlIFRM
Uywgc3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlmaWNhdGUuJykKLSAgICAgICAgICAgIHN5
cy5leGl0KDEpCi0KLSAgICAgICAgaWYgKG9wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFs
IGFuZAotICAgICAgICAgICAgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKLSAgICAgICAg
ICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJs
ZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50
X2NlcnRfb3B0aW9uYWwnKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBlbHNlOgotICAg
ICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsb2dn
aW5nLmNyaXRpY2FsKCdVc2UgLS10bHMtbW9kdWxlIG9wdGlvbiBvbmx5IHRvZ2V0aGVyIHdpdGgg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2UtdGxzIG9wdGlvbi4nKQotICAg
ICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfYXV0
aDoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9y
IGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAg
ICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNh
dGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIG5vdCBvcHRpb25zLnNj
YW5fZGlyOgotICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRs
ZXJzCi0KLSAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19hdXRoOgotICAgICAgICBvcHRpb25zLmJh
c2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsgYmFzZTY0LmI2NGVuY29kZSgKLSAgICAg
ICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsKQotCi0gICAgdHJ5OgotICAgICAg
ICBpZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYyA+IDA6Ci0gICAgICAg
ICAgICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIg
dGhyZWFkcyBmb3IKLSAgICAgICAgICAgICMgZGVidWdnaW5nLgotICAgICAgICAgICAgVGhyZWFk
TW9uaXRvcihvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYykuc3RhcnQoKQot
Ci0gICAgICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRpb25zKQotICAgICAgICBzZXJ2
ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgbG9n
Z2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAlcycgJSBlKQotICAgICAgICBsb2dnaW5n
LmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
ICBfbWFpbihzeXMuYXJndlsxOl0pCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L3N0cmVhbS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRjNTMzMjc5
NzQ5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IlRoaXMgZmlsZSBleHBvcnRzIHB1YmxpYyBzeW1ib2xzLgotIiIiCi0KLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRF
eGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IEludmFsaWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1faGl4aWU3NSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9oeWJpIGltcG9ydCBGcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9o
eWJpIGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgU3RyZWFtT3B0aW9ucwotCi0jIFRoZXNlIG1ldGhvZHMgYXJlIGludGVuZGVkIHRvIGJlIHVz
ZWQgYnkgV2ViU29ja2V0IGNsaWVudCBkZXZlbG9wZXJzIHRvIGhhdmUKLSMgdGhlaXIgaW1wbGVt
ZW50YXRpb25zIHJlY2VpdmUgYnJva2VuIGRhdGEgaW4gdGVzdHMuCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zZV9mcmFtZQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfaGVhZGVyCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9waW5nX2ZyYW1lCi1mcm9t
IG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9wb25nX2ZyYW1lCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJh
bWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX3RleHRf
ZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Ns
b3NpbmdfaGFuZHNoYWtlX2JvZHkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMjRhZTM5NDJkNy4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsNDE2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNv
Y2tldCB1dGlsaXRpZXMuCi0iIiIKLQotCi1pbXBvcnQgYXJyYXkKLWltcG9ydCBlcnJubwotCi0j
IEltcG9ydCBoYXNoIGNsYXNzZXMgZnJvbSBhIG1vZHVsZSBhdmFpbGFibGUgYW5kIHJlY29tbWVu
ZGVkIGZvciBlYWNoIFB5dGhvbgotIyB2ZXJzaW9uIGFuZCByZS1leHBvcnQgdGhvc2Ugc3ltYm9s
LiBVc2Ugc2hhIGFuZCBtZDUgbW9kdWxlIGluIFB5dGhvbiAyLjQsIGFuZAotIyBoYXNobGliIG1v
ZHVsZSBpbiBQeXRob24gMi42LgotdHJ5OgotICAgIGltcG9ydCBoYXNobGliCi0gICAgbWQ1X2hh
c2ggPSBoYXNobGliLm1kNQotICAgIHNoYTFfaGFzaCA9IGhhc2hsaWIuc2hhMQotZXhjZXB0IElt
cG9ydEVycm9yOgotICAgIGltcG9ydCBtZDUKLSAgICBpbXBvcnQgc2hhCi0gICAgbWQ1X2hhc2gg
PSBtZDUubWQ1Ci0gICAgc2hhMV9oYXNoID0gc2hhLnNoYQotCi1pbXBvcnQgU3RyaW5nSU8KLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0
IHRyYWNlYmFjawotaW1wb3J0IHpsaWIKLQotdHJ5OgotICAgIGZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBmYXN0X21hc2tpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLQot
ZGVmIGdldF9zdGFja190cmFjZSgpOgotICAgICIiIkdldCB0aGUgY3VycmVudCBzdGFjayB0cmFj
ZSBhcyBzdHJpbmcuCi0KLSAgICBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IFB5dGhvbiAyLjMu
Ci0gICAgVE9ETzogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBvbmx5IHN1cHBvcnQgUHl0aG9uIDIuNCBh
bmQgYWJvdmUuCi0gICAgICAgICAgVXNlIHRyYWNlYmFjay5mb3JtYXRfZXhjIGluc3RlYWQuCi0g
ICAgIiIiCi0KLSAgICBvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgdHJhY2ViYWNrLnBy
aW50X2V4YyhmaWxlPW91dCkKLSAgICByZXR1cm4gb3V0LmdldHZhbHVlKCkKLQotCi1kZWYgcHJl
cGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihtZXNzYWdlLCBleGMpOgotICAgICIiIlByZXBlbmQg
bWVzc2FnZSB0byB0aGUgZXhjZXB0aW9uLiIiIgotCi0gICAgZXhjLmFyZ3MgPSAobWVzc2FnZSAr
IHN0cihleGMpLCkKLSAgICByZXR1cm4KLQotCi1kZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVy
cCwgY3lnd2luX3BhdGgpOgotICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZv
ciBXaW4zMiBweXRob24gdG8gcnVuIGN5Z3dpbiBwcm9ncmFtCi0gICAgKGUuZy4gcGVybCkuICBO
b3RlIHRoYXQgaXQgZG9lc24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKLSAg
ICB3aGljaCBpcyB0eXBpY2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdy
aXR0ZW4uCi0gICAgRm9yIFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkg
b2YgY3lnd2luIGJpbmFyaWVzLgotCi0gICAgQXJnczoKLSAgICAgIGludGVycDogaW50ZXJwIGNv
bW1hbmQgbGluZQotICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBi
aW5hcnksIG9yIE5vbmUKLSAgICBSZXR1cm5zOgotICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29t
bWFuZCBsaW5lLgotICAgICIiIgotICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKLSAgICAgICAgcmV0
dXJuIGludGVycAotICAgIG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRl
cnApCi0gICAgaWYgbToKLSAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBt
Lmdyb3VwKDEpKQotICAgICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQotICAgIHJldHVybiBp
bnRlcnAKLQotCi1kZWYgZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRo
PU5vbmUpOgotICAgICIiIkdldHMgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhl
IHNjcmlwdC4KLQotICAgIEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4g
UHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gV2ViS2l0LAotICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9i
aW4vcGVybCAtd1QgaGVsbG8ucGwiLgotICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUu
Zy4gaW4gQ2hyb21pdW0sIGl0IGNvdWxkbid0LiAgU28sIGZpeAotICAgICIvdXNyL2Jpbi9wZXJs
IiB0byAiPGN5Z3dpbl9wYXRoPlxwZXJsLmV4ZSIuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0
X3BhdGg6IHBhdGhuYW1lIG9mIHRoZSBzY3JpcHQKLSAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3Rv
cnkgbmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoKLSAgICAgICMh
LWludGVycHJldGVyIGNvbW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0
LgotICAgICIiIgotICAgIGZwID0gb3BlbihzY3JpcHRfcGF0aCkKLSAgICBsaW5lID0gZnAucmVh
ZGxpbmUoKQotICAgIGZwLmNsb3NlKCkKLSAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5l
KQotICAgIGlmIG06Ci0gICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgx
KSwgY3lnd2luX3BhdGgpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgd3JhcF9wb3BlbjNfZm9y
X3dpbihjeWd3aW5fcGF0aCk6Ci0gICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3Jp
cHQgb24gV2luZG93cy4KLQotICAgIEFyZ3M6Ci0gICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9y
IGN5Z3dpbiBiaW5hcnkgaWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQotICAgICAgICAg
ICAgICAgICAgICB0cmFuc2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4K
LSAgICAiIiIKLQotICAgIF9fb3JpZ19wb3BlbjMgPSBvcy5wb3BlbjMKLQotICAgIGRlZiBfX3dy
YXBfcG9wZW4zKGNtZCwgbW9kZT0ndCcsIGJ1ZnNpemU9LTEpOgotICAgICAgICBjbWRsaW5lID0g
Y21kLnNwbGl0KCcgJykKLSAgICAgICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9pbnRlcnAoY21kbGlu
ZVswXSwgY3lnd2luX3BhdGgpCi0gICAgICAgIGlmIGludGVycDoKLSAgICAgICAgICAgIGNtZCA9
IGludGVycCArICcgJyArIGNtZAotICAgICAgICByZXR1cm4gX19vcmlnX3BvcGVuMyhjbWQsIG1v
ZGUsIGJ1ZnNpemUpCi0KLSAgICBvcy5wb3BlbjMgPSBfX3dyYXBfcG9wZW4zCi0KLQotZGVmIGhl
eGlmeShzKToKLSAgICByZXR1cm4gJyAnLmpvaW4obWFwKGxhbWJkYSB4OiAnJTAyeCcgJSBvcmQo
eCksIHMpKQotCi0KLWRlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgotICAgIHJldHVybiBsb2dnaW5n
LmdldExvZ2dlcigKLSAgICAgICAgJyVzLiVzJyAlIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBv
Ll9fY2xhc3NfXy5fX25hbWVfXykpCi0KLQotY2xhc3MgTm9vcE1hc2tlcihvYmplY3QpOgotICAg
ICIiIkEgbWFza2luZyBvYmplY3QgdGhhdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIFJlcGVh
dGVkWG9yTWFza2VyIGJ1dAotICAgIGp1c3QgcmV0dXJucyB0aGUgc3RyaW5nIHBhc3NlZCBpbiB3
aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbWFzayhzZWxmLCBzKToKLSAgICAgICAgcmV0
dXJuIHMKLQotCi1jbGFzcyBSZXBlYXRlZFhvck1hc2tlcihvYmplY3QpOgotICAgICIiIkEgbWFz
a2luZyBvYmplY3QgdGhhdCBhcHBsaWVzIFhPUiBvbiB0aGUgc3RyaW5nIGdpdmVuIHRvIG1hc2sg
bWV0aG9kCi0gICAgd2l0aCB0aGUgbWFza2luZyBieXRlcyBnaXZlbiB0byB0aGUgY29uc3RydWN0
b3IgcmVwZWF0ZWRseS4gVGhpcyBvYmplY3QKLSAgICByZW1lbWJlcnMgdGhlIHBvc2l0aW9uIGlu
IHRoZSBtYXNraW5nIGJ5dGVzIHRoZSBsYXN0IG1hc2sgbWV0aG9kIGNhbGwKLSAgICBlbmRlZCBh
bmQgcmVzdW1lcyBmcm9tIHRoYXQgcG9pbnQgb24gdGhlIG5leHQgbWFzayBtZXRob2QgY2FsbC4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNraW5nX2tleSk6Ci0gICAgICAg
IHNlbGYuX21hc2tpbmdfa2V5ID0gbWFza2luZ19rZXkKLSAgICAgICAgc2VsZi5fbWFza2luZ19r
ZXlfaW5kZXggPSAwCi0KLSAgICBkZWYgX21hc2tfdXNpbmdfc3dpZyhzZWxmLCBzKToKLSAgICAg
ICAgbWFza2VkX2RhdGEgPSBmYXN0X21hc2tpbmcubWFzaygKLSAgICAgICAgICAgICAgICBzLCBz
ZWxmLl9tYXNraW5nX2tleSwgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgpCi0gICAgICAgIHNlbGYu
X21hc2tpbmdfa2V5X2luZGV4ID0gKAotICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5nX2tl
eV9pbmRleCArIGxlbihzKSkgJSBsZW4oc2VsZi5fbWFza2luZ19rZXkpKQotICAgICAgICByZXR1
cm4gbWFza2VkX2RhdGEKLQotICAgIGRlZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToKLSAg
ICAgICAgcmVzdWx0ID0gYXJyYXkuYXJyYXkoJ0InKQotICAgICAgICByZXN1bHQuZnJvbXN0cmlu
ZyhzKQotCi0gICAgICAgICMgVXNlIHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWlu
YXRlIHRoZSBjb3N0IHRvIGFjY2VzcwotICAgICAgICAjIGF0dHJpYnV0ZXMKLSAgICAgICAgbWFz
a2luZ19rZXkgPSBtYXAob3JkLCBzZWxmLl9tYXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19r
ZXlfc2l6ZSA9IGxlbihtYXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSBz
ZWxmLl9tYXNraW5nX2tleV9pbmRleAotCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocmVz
dWx0KSk6Ci0gICAgICAgICAgICByZXN1bHRbaV0gXj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlf
aW5kZXhdCi0gICAgICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRl
eCArIDEpICUgbWFza2luZ19rZXlfc2l6ZQotCi0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2lu
ZGV4ID0gbWFza2luZ19rZXlfaW5kZXgKLQotICAgICAgICByZXR1cm4gcmVzdWx0LnRvc3RyaW5n
KCkKLQotICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKLSAgICAgICAgbWFzayA9
IF9tYXNrX3VzaW5nX3N3aWcKLSAgICBlbHNlOgotICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdf
YXJyYXkKLQotCi0jIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBw
cmVzcyBDTUYvRkxHICgyIG9jdGV0KSBhbmQKLSMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9m
IHpsaWIgc28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKLSMgZGVmbGF0ZSBs
aWJyYXJ5LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0
aW9uYXJ5LgotIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXBy
ZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgotIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1
c3QgdXNlIDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKLSMgY29tcHJlc3Npb24s
IHdlIHVzZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KLSMKLSMgQ29tcHJlc3Npb24g
bGV2ZWwgaXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxl
dmVsCi0jIHRvIGRlY29kZS4KLSMKLSMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUu
Y2Mgb2YgemxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCi0jIFB5dGhvbi4gU2VlIGFs
c28gUkZDMTk1MCAoWkxJQiAzLjMpLgotCi0KLWNsYXNzIF9EZWZsYXRlcihvYmplY3QpOgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzKToKLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxp
Yi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6
bGliLkRFRkxBVEVELCAtd2luZG93X2JpdHMpCi0KLSAgICBkZWYgY29tcHJlc3Moc2VsZiwgYnl0
ZXMpOgotICAgICAgICBjb21wcmVzc2VkX2J5dGVzID0gc2VsZi5fY29tcHJlc3MuY29tcHJlc3Mo
Ynl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBi
eXRlcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBj
b21wcmVzc2VkX2J5dGVzKQotICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcwotCi0gICAg
ZGVmIGNvbXByZXNzX2FuZF9mbHVzaChzZWxmLCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRf
Ynl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3Nl
ZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQotICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRfYnl0
ZXMpCi0gICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVzCi0KLSAgICBkZWYgY29tcHJlc3Nf
YW5kX2ZpbmlzaChzZWxmLCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxm
Ll9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBz
ZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykKLSAgICAgICAgcmV0
dXJuIGNvbXByZXNzZWRfYnl0ZXMKLQotCi1jbGFzcyBfSW5mbGF0ZXIob2JqZWN0KToKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9
IGdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5k
b3dfYml0cwotCi0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSAnJwotCi0gICAgICAgIHNlbGYu
cmVzZXQoKQotCi0gICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgc2l6ZSk6Ci0gICAgICAgIGlmIG5v
dCAoc2l6ZSA9PSAtMSBvciBzaXplID4gMCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J3NpemUgbXVzdCBiZSAtMSBvciBwb3NpdGl2ZScpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAg
ICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIHNpemUgPT0gLTE6Ci0gICAgICAgICAg
ICAgICAgZGF0YSArPSBzZWxmLl9kZWNvbXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1l
ZCkKLSAgICAgICAgICAgICAgICAjIFNlZSBQeXRob24gYnVnIGh0dHA6Ly9idWdzLnB5dGhvbi5v
cmcvaXNzdWUxMjA1MCB0bwotICAgICAgICAgICAgICAgICMgdW5kZXJzdGFuZCB3aHkgdGhlIHNh
bWUgY29kZSBjYW5ub3QgYmUgdXNlZCBmb3IgdXBkYXRpbmcKLSAgICAgICAgICAgICAgICAjIHNl
bGYuX3VuY29uc3VtZWQgZm9yIGhlcmUgYW5kIGVsc2UgYmxvY2suCi0gICAgICAgICAgICAgICAg
c2VsZi5fdW5jb25zdW1lZCA9ICcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl91bmNvbnN1bWVkLCBzaXplIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgICAgIHNl
bGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbAotICAgICAg
ICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRfZGF0YToKLSAgICAgICAgICAgICAgICAj
IEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGggQkZJTkFMID0gMSkg
YW5kCi0gICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVudXNlZF9kYXRhKS4g
V2UgY2Fubm90IHVzZSB0aGUgc2FtZQotICAgICAgICAgICAgICAgICMgemxpYi5EZWNvbXByZXNz
IG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldwotICAgICAgICAgICAgICAg
ICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9uZS4KLSAgICAgICAg
ICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdub3JlIHVuY29uc3Vt
ZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKLSAgICAgICAgICAgICAgICAjIGVtcHR5Lgot
ICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVudXNl
ZF9kYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5yZXNldCgpCi0gICAgICAgICAgICAgICAgaWYg
c2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgIyBk
YXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgotICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
ICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8gZGVjb21wcmVzcyBh
bGwKLSAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVmb3JlIGludm9raW5n
IHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCi0gICAgICAgICAgICAgICAgICAgICMgYW55IG5ldyBi
eXRlIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVzZWRfZGF0YSBpcyBl
bXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMKLSAgICAgICAgICAgICAgICAjIG5vdCBl
bXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBpbiBkYXRhLiBXZQot
ICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhlcmUuCi0gICAgICAg
ICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRhKQotICAgICAgICByZXR1cm4gZGF0YQot
Ci0gICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdBcHBlbmRlZCAlcicsIGRhdGEpCi0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgKz0gZGF0YQot
Ci0gICAgZGVmIHJlc2V0KHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jlc2V0
JykKLSAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVzc29iaigtc2VsZi5f
d2luZG93X2JpdHMpCi0KLQotIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBnaXZlbiBvY3RldHMg
dXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCi0KLQotY2xhc3MgX1JGQzE5
NzlEZWZsYXRlcihvYmplY3QpOgotICAgICIiIkEgY29tcHJlc3NvciBjbGFzcyB0aGF0IGFwcGxp
ZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNlIGFuZAotICAgIGZsdXNoZXMgdXNpbmcg
dGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFr
ZW92ZXIpOgotICAgICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgaWYgd2luZG93
X2JpdHMgaXMgTm9uZToKLSAgICAgICAgICAgIHdpbmRvd19iaXRzID0gemxpYi5NQVhfV0JJVFMK
LSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5kb3dfYml0cwotICAgICAgICBzZWxmLl9u
b19jb250ZXh0X3Rha2VvdmVyID0gbm9fY29udGV4dF90YWtlb3ZlcgotCi0gICAgZGVmIGZpbHRl
cihzZWxmLCBieXRlcywgZW5kPVRydWUsIGJmaW5hbD1GYWxzZSk6Ci0gICAgICAgIGlmIHNlbGYu
X2RlZmxhdGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRl
cihzZWxmLl93aW5kb3dfYml0cykKLQotICAgICAgICBpZiBiZmluYWw6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmluaXNoKGJ5dGVzKQotICAgICAg
ICAgICAgIyBBZGQgYSBwYWRkaW5nIGJsb2NrIHdpdGggQkZJTkFMID0gMCBhbmQgQlRZUEUgPSAw
LgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgY2hyKDApCi0gICAgICAgICAgICBzZWxm
Ll9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpCi0gICAgICAg
IGlmIGVuZDoKLSAgICAgICAgICAgICMgU3RyaXAgbGFzdCA0IG9jdGV0cyB3aGljaCBpcyBMRU4g
YW5kIE5MRU4gZmllbGQgb2YgYQotICAgICAgICAgICAgIyBub24tY29tcHJlc3NlZCBibG9jayBh
ZGRlZCBmb3IgWl9TWU5DX0ZMVVNILgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotNF0K
LQotICAgICAgICBpZiBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZCBlbmQ6Ci0gICAgICAg
ICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLQot
Y2xhc3MgX1JGQzE5NzlJbmZsYXRlcihvYmplY3QpOgotICAgICIiIkEgZGVjb21wcmVzc29yIGNs
YXNzIGZvciBieXRlIHNlcXVlbmNlIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQgZm9sbG93aW5nCi0g
ICAgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0g
ICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHM9emxpYi5NQVhfV0JJ
VFMpOgotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih3aW5kb3dfYml0cykKLQot
ICAgIGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMpOgotICAgICAgICAjIFJlc3RvcmUgc3RyaXBwZWQg
TEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQKLSAgICAg
ICAgIyBmb3IgWl9TWU5DX0ZMVVNILgotICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQoYnl0
ZXMgKyAnXHgwMFx4MDBceGZmXHhmZicpCi0gICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5k
ZWNvbXByZXNzKC0xKQotCi0KLWNsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKLSAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJl
Y3YgdG8gcGVyZm9ybQotICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24g
dHJhbnNwYXJlbnRseS4KLSAgICAiIiIKLQotICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3Nl
ZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgotICAgIF9SRUNWX1NJWkUgPSA0
MDk2Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQotCi0gICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRT
KQotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKLQot
ICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgotICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20g
dGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAotICAgICAgICB0byB0
aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0
IGV2ZW4KLSAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgot
ICAgICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGgg
c2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55Ci0gICAgICAgICMgZGVjb21wcmVzc2Vk
IGRhdGEgaXMgYXZhaWxhYmxlLgotICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCi0gICAgICAgIHdoaWxl
IFRydWU6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXpl
KQotICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGEKLQotICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0
ZVNvY2tldC5fUkVDVl9TSVpFKQotICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChy
ZWFkX2RhdGEpCi0KLSAgICBkZWYgc2VuZGFsbChzZWxmLCBieXRlcyk6Ci0gICAgICAgIHNlbGYu
c2VuZChieXRlcykKLQotICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKSkK
LSAgICAgICAgcmV0dXJuIGxlbihieXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTc5ZGYzNTk5OGQxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9f
c3RyZWFtX2hpeGllNzUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJp
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9kaXNwYXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9leHRlbnNp
b25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC9tZW1vcml6aW5nZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L211eC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9zdGFuZGFsb25lLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC94aHJfYmVuY2htYXJrX2hhbmRsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY3MzVjN2UyYTNkYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC94aHJfYmVuY2htYXJrX2hhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQot
IyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMg
aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0K
LQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1jbGFzcyBYSFJCZW5jaG1h
cmtIYW5kbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlYWRlcnMsIHJmaWxl
LCB3ZmlsZSk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQotCi0gICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKLSAgICAgICAgc2VsZi5yZmls
ZSA9IHJmaWxlCi0gICAgICAgIHNlbGYud2ZpbGUgPSB3ZmlsZQotCi0gICAgZGVmIGRvX3NlbmQo
c2VsZik6Ci0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFk
ZXIoJ0NvbnRlbnQtTGVuZ3RoJykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1
ZXN0ZWQgdG8gcmVjZWl2ZSAlcyBieXRlcycsIGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIFJF
Q0VJVkVfQkxPQ0tfU0laRSA9IDEwMjQgKiAxMDI0Ci0KLSAgICAgICAgYnl0ZXNfdG9fcmVjZWl2
ZSA9IGNvbnRlbnRfbGVuZ3RoCi0gICAgICAgIHdoaWxlIGJ5dGVzX3RvX3JlY2VpdmUgPiAwOgot
ICAgICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPSBieXRlc190b19yZWNl
aXZlCi0gICAgICAgICAgICBpZiBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCA+IFJFQ0VJ
VkVfQkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190b19yZWNlaXZlX2luX3RoaXNf
bG9vcCA9IFJFQ0VJVkVfQkxPQ0tfU0laRQotICAgICAgICAgICAgcmVjZWl2ZWRfZGF0YSA9IHNl
bGYucmZpbGUucmVhZChieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAg
IGlmIHJlY2VpdmVkX2RhdGEgIT0gKCdhJyAqIGJ5dGVzX3RvX3JlY2VpdmVfaW5fdGhpc19sb29w
KToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3QgYm9keSB2ZXJp
ZmljYXRpb24gZmFpbGVkJykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGJ5
dGVzX3RvX3JlY2VpdmUgLT0gbGVuKHJlY2VpdmVkX2RhdGEpCi0gICAgICAgIGlmIGJ5dGVzX3Rv
X3JlY2VpdmUgPCAwOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCAl
ZCBtb3JlIGJ5dGVzIHRoYW4gZXhwZWN0ZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoLWJ5dGVzX3RvX3JlY2VpdmUpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAg
IyBSZXR1cm4gdGhlIG51bWJlciBvZiByZWNlaXZlZCBieXRlcyBiYWNrIHRvIHRoZSBjbGllbnQu
Ci0gICAgICAgIHJlc3BvbnNlX2JvZHkgPSAnJWQnICUgY29udGVudF9sZW5ndGgKLSAgICAgICAg
c2VsZi53ZmlsZS53cml0ZSgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAg
ICAgICAgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcbicKLSAgICAgICAgICAgICdDb250
ZW50LUxlbmd0aDogJWRcclxuJwotICAgICAgICAgICAgJ1xyXG4lcycgJSAobGVuKHJlc3BvbnNl
X2JvZHkpLCByZXNwb25zZV9ib2R5KSkKLSAgICAgICAgc2VsZi53ZmlsZS5mbHVzaCgpCi0KLSAg
ICBkZWYgZG9fcmVjZWl2ZShzZWxmKToKLSAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoc2Vs
Zi5oZWFkZXJzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSkKLSAgICAgICAgcmVxdWVzdF9i
b2R5ID0gc2VsZi5yZmlsZS5yZWFkKGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIHJlcXVlc3Rf
YXJyYXkgPSByZXF1ZXN0X2JvZHkuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4ocmVxdWVzdF9h
cnJheSkgPCAyOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdNYWxmb3JtZWQgcmVx
dWVzdCBib2R5OiAlcicsIHJlcXVlc3RfYm9keSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICMgUGFyc2UgdGhlIHNpemUgcGFyYW1ldGVyLgotICAgICAgICBieXRlc190b19zZW5kID0g
cmVxdWVzdF9hcnJheVswXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlc190b19zZW5k
ID0gaW50KGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdNYWxmb3JtZWQgc2l6ZSBwYXJhbWV0ZXI6ICVy
JywgYnl0ZXNfdG9fc2VuZCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ1JlcXVlc3RlZCB0byBzZW5kICVzIGJ5dGVzJywgYnl0ZXNfdG9fc2VuZCkKLQot
ICAgICAgICAjIFBhcnNlIHRoZSB0cmFuc2ZlciBlbmNvZGluZyBwYXJhbWV0ZXIuCi0gICAgICAg
IGNodW5rZWRfbW9kZSA9IEZhbHNlCi0gICAgICAgIG1vZGVfcGFyYW1ldGVyID0gcmVxdWVzdF9h
cnJheVsxXQotICAgICAgICBpZiBtb2RlX3BhcmFtZXRlciA9PSAnY2h1bmtlZCc6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3RlZCBjaHVua2VkIHRyYW5zZmVyIGVuY29k
aW5nJykKLSAgICAgICAgICAgIGNodW5rZWRfbW9kZSA9IFRydWUKLSAgICAgICAgZWxpZiBtb2Rl
X3BhcmFtZXRlciAhPSAnbm9uZSc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0lu
dmFsaWQgbW9kZSBwYXJhbWV0ZXI6ICVyJywgbW9kZV9wYXJhbWV0ZXIpCi0gICAgICAgICAgICBy
ZXR1cm4KLQotICAgICAgICAjIFdyaXRlIGEgaGVhZGVyCi0gICAgICAgIHJlc3BvbnNlX2hlYWRl
ciA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAgICAgICAgJ0Nv
bnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXHJcbicpCi0gICAgICAgIGlmIGNo
dW5rZWRfbW9kZToKLSAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRlciArPSAnVHJhbnNmZXItRW5j
b2Rpbmc6IGNodW5rZWRcclxuXHJcbicKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3Bv
bnNlX2hlYWRlciArPSAoCi0gICAgICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiAlZFxyXG5c
clxuJyAlIGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIHNlbGYud2ZpbGUud3JpdGUocmVzcG9uc2Vf
aGVhZGVyKQotICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAgICAgICAjIFdyaXRlIGEg
Ym9keQotICAgICAgICBTRU5EX0JMT0NLX1NJWkUgPSAxMDI0ICogMTAyNAotCi0gICAgICAgIHdo
aWxlIGJ5dGVzX3RvX3NlbmQgPiAwOgotICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9pbl90aGlz
X2xvb3AgPSBieXRlc190b19zZW5kCi0gICAgICAgICAgICBpZiBieXRlc190b19zZW5kX2luX3Ro
aXNfbG9vcCA+IFNFTkRfQkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190b19zZW5k
X2luX3RoaXNfbG9vcCA9IFNFTkRfQkxPQ0tfU0laRQotCi0gICAgICAgICAgICBpZiBjaHVua2Vk
X21vZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgnJXhcclxuJyAlIGJ5dGVz
X3RvX3NlbmRfaW5fdGhpc19sb29wKQotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgnYScg
KiBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAgIGlmIGNodW5rZWRfbW9k
ZToKLSAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKCdcclxuJykKLSAgICAgICAgICAg
IHNlbGYud2ZpbGUuZmx1c2goKQotCi0gICAgICAgICAgICBieXRlc190b19zZW5kIC09IGJ5dGVz
X3RvX3NlbmRfaW5fdGhpc19sb29wCi0KLSAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgotICAgICAg
ICAgICAgc2VsZi53ZmlsZS53cml0ZSgnMFxyXG5cclxuJykKLSAgICAgICAgICAgIHNlbGYud2Zp
bGUuZmx1c2goKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9zZXR1
cC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRhOGRiM2UxMTFiLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvc2V0dXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlNl
dCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4KLSIiIgotCi0KLWZyb20gZGlzdHV0aWxz
LmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KLWltcG9ydCBzeXMKLQotCi1fUEFDS0FHRV9O
QU1FID0gJ21vZF9weXdlYnNvY2tldCcKLQotIyBCdWlsZCBhbmQgdXNlIGEgQysrIGV4dGVuc2lv
biBmb3IgZmFzdGVyIG1hc2tpbmcuIFNXSUcgaXMgcmVxdWlyZWQuCi1fVVNFX0ZBU1RfTUFTS0lO
RyA9IEZhbHNlCi0KLWlmIHN5cy52ZXJzaW9uIDwgJzIuMyc6Ci0gICAgcHJpbnQgPj4gc3lzLnN0
ZGVyciwgJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUK
LSAgICBzeXMuZXhpdCgxKQotCi1pZiBfVVNFX0ZBU1RfTUFTS0lORzoKLSAgICBzZXR1cChleHRf
bW9kdWxlcz1bCi0gICAgICAgICAgICAgICAgICBFeHRlbnNpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQvX2Zhc3RfbWFza2luZycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aWdfb3B0cz1bJy1jKysnXSldKQotCi1zZXR1cChhdXRob3I9
J1l1em8gRnVqaXNoaW1hJywKLSAgICAgIGF1dGhvcl9lbWFpbD0neXV6b0BjaHJvbWl1bS5vcmcn
LAotICAgICAgZGVzY3JpcHRpb249J1dlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQ
IFNlcnZlci4nLAotICAgICAgbG9uZ19kZXNjcmlwdGlvbj0oCi0gICAgICAgICAgICAgICdtb2Rf
cHl3ZWJzb2NrZXQgaXMgYW4gQXBhY2hlIEhUVFAgU2VydmVyIGV4dGVuc2lvbiBmb3IgJwotICAg
ICAgICAgICAgICAndGhlIFdlYlNvY2tldCBQcm90b2NvbCAoUkZDIDY0NTUpLiAnCi0gICAgICAg
ICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGZvciBtb3JlIGRldGFpbC4n
KSwKLSAgICAgIGxpY2Vuc2U9J1NlZSBDT1BZSU5HJywKLSAgICAgIG5hbWU9X1BBQ0tBR0VfTkFN
RSwKLSAgICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9OQU1FICsgJy5oYW5k
c2hha2UnXSwKLSAgICAgIHVybD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5d2Vic29ja2V0
LycsCi0gICAgICAjIFNlZSB0aGUgc291cmNlIG9mIGRpc3R1dGlscy52ZXJzaW9uLCBkaXN0dXRp
bHMudmVyc2lvbnByZWRpY2F0ZSBhbmQKLSAgICAgICMgZGlzdHV0aWxzLmRpc3QgdG8gdW5kZXJz
dGFuZCBob3cgdG8gbmFtZSB2ZXJzaW9uIG51bWJlcnMuCi0gICAgICB2ZXJzaW9uPScwLjcuOScs
Ci0gICAgICApCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTY4MzRiODI4NWE1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBt
b2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NhY2VydC5wZW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYWRhZTEyMWJkZC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jYWNlcnQucGVtCisrKyAvZGV2L251bGwKQEAgLTEsMTcg
KzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDdkRDQ0FpV2dBd0lCQWdJ
SkFLcVZnaGtHRjFyU01BMEdDU3FHU0liM0RRRUJCUVVBTUVreEN6QUpCZ05WCi1CQVlUQWtwUU1R
NHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXhGREFTCi1C
Z05WQkFNVEMzQjVkMlZpYzI5amEyVjBNQjRYRFRFeU1EWXdOakEzTWpRek0xb1hEVE01TVRBeU16
QTNNalF6Ci1NMW93U1RFTE1Ba0dBMVVFQmhNQ1NsQXhEakFNQmdOVkJBZ1RCVlJ2YTNsdk1SUXdF
Z1lEVlFRS0V3dHdlWGRsCi1Zbk52WTJ0bGRERVVNQklHQTFVRUF4TUxjSGwzWldKemIyTnJaWFF3
Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFECi1nWTBBTUlHSkFvR0JBS29TRVcyYmlReFZyTU1LZG4v
OFBKekRZaVNYRFBSOVdRYkxSUlExR201amtDWWlhaFhXCi11MkNiVFRoZlBQZmkyTkhBM0krSGxU
N2dPOXlSN1JWVXZONklTVXpHd1hERXE0ZjRVTnF0UU9oUWFxcUsrQ1o5Ci1MTy9CaE8vWVlmTnJi
U1BsWXpIVUthVDllc2U3eE85VnpWS0xXK3FVZjJNamg0LytTenhCRE5QN0FnTUJBQUdqCi1nYXN3
Z2Fnd0hRWURWUjBPQkJZRUZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpNSGtHQTFVZEl3UnlN
SENBCi1GT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMrK2J6b1Uya1N6QkpNUXN3Q1FZRFZRUUdFd0pL
VURFT01Bd0dBMVVFCi1DQk1GVkc5cmVXOHhGREFTQmdOVkJBb1RDM0I1ZDJWaWMyOWphMlYwTVJR
d0VnWURWUVFERXd0d2VYZGxZbk52Ci1ZMnRsZElJSkFLcVZnaGtHRjFyU01Bd0dBMVVkRXdRRk1B
TUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnWUVBCi1nc01JMVdFWXFOdy9qaFVJZHJUQmNDeEow
WDZoSnZBOXppS0FOVm0xUnMrNFAzWURBcmtROGJDcjZ4WStLdzdzCi1acDB5RTdkTThHTWRpK0RV
NmhMM3QzRTVlTWtUUzF5WnI5V0NLNGYyUkxvK2V0OThzZWxaeWRwSGVtRjNESkozCi1nQWo4U3g0
TEJhRzhDYi9XbkVNUHYzTXhHM2ZCRTVmYXZGNlY0alUwN2hRPQotLS0tLS1FTkQgQ0VSVElGSUNB
VEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NlcnQucGVtIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9jZXJ0L2NlcnQucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTM3
OWE3MmIwZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2VydC5wZW0K
KysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1DZXJ0aWZpY2F0ZToKLSAgICBEYXRhOgot
ICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDEgKDB4MSkK
LSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAg
ICAgIElzc3VlcjogQz1KUCwgU1Q9VG9reW8sIE89cHl3ZWJzb2NrZXQsIENOPXB5d2Vic29ja2V0
Ci0gICAgICAgIFZhbGlkaXR5Ci0gICAgICAgICAgICBOb3QgQmVmb3JlOiBKdW4gIDYgMDc6MjU6
MDggMjAxMiBHTVQKLSAgICAgICAgICAgIE5vdCBBZnRlciA6IE9jdCAyMyAwNzoyNTowOCAyMDM5
IEdNVAotICAgICAgICBTdWJqZWN0OiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049
cHl3ZWJzb2NrZXQKLSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86Ci0gICAgICAgICAg
ICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgotICAgICAgICAgICAgUlNBIFB1
YmxpYyBLZXk6ICgxMDI0IGJpdCkKLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6
Ci0gICAgICAgICAgICAgICAgICAgIDAwOmRlOjEwOmNlOjNhOjVhOjA0OmE0OjFjOjI5OjkzOjVj
OjIzOjgyOjFhOgotICAgICAgICAgICAgICAgICAgICBmMjowNjowMTplNjoyYjphNDowZjpkZDo3
Nzo0OTo3Njo4OTowMzphMjoyMToKLSAgICAgICAgICAgICAgICAgICAgZGU6MDQ6NzU6YzY6ZTI6
ZGQ6ZmI6MzU6Mjc6M2E6YTI6OTI6OGU6MTI6NjI6Ci0gICAgICAgICAgICAgICAgICAgIDJiOjNl
OjFmOmY0Ojc4OmRmOmI2Ojk0OmNiOjI3OmQ2OmNiOmQ2OjM3OmQ3OgotICAgICAgICAgICAgICAg
ICAgICA1YzowODpmMDowOTozZTpjOTpjZToyNDoyZDowMDpjOTpkZjo0YTplMDo5OToKLSAgICAg
ICAgICAgICAgICAgICAgZTU6ZmI6MjM6YTk6ZTI6ZDY6Yzk6M2Q6OTY6ZmE6MDE6ODg6ZGU6NWE6
ODk6Ci0gICAgICAgICAgICAgICAgICAgIGIwOmNmOjAzOjY3OjZmOjA0Ojg2OjFkOmVmOjYyOjFj
OjU1OmE5OjA3OjlhOgotICAgICAgICAgICAgICAgICAgICAyZTo2NjoyYTo3Mzo1Yjo0Yzo2Mjow
MzpmOTo4Mjo4MzpkYjo2ODpiZjpiODoKLSAgICAgICAgICAgICAgICAgICAgNGI6MGI6OGI6OTM6
MTE6Yjg6NTQ6NzM6N2IKLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEp
Ci0gICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENv
bnN0cmFpbnRzOiAKLSAgICAgICAgICAgICAgICBDQTpGQUxTRQotICAgICAgICAgICAgTmV0c2Nh
cGUgQ2VydCBUeXBlOiAKLSAgICAgICAgICAgICAgICBTU0wgU2VydmVyCi0gICAgICAgICAgICBO
ZXRzY2FwZSBDb21tZW50OiAKLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0
aWZpY2F0ZQotICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAotICAg
ICAgICAgICAgICAgIDgyOkExOjczOjhCOjE2OjBDOjdDOkU0OkQzOjQ2Ojk1OjEzOjk1OjFBOjMy
OkMxOjg0OkU5OjA2OjAwCi0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlm
aWVyOiAKLSAgICAgICAgICAgICAgICBrZXlpZDpFQjoxNjo3NzoxMDo5MjpCQjoyODo3MDo2OTo5
Nzo5QTo2RjpBMDo2ODo0RToxQTozNzpGQjpFNjpGMwotCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRo
bTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIDZiOmIzOjQ2OjI5OjAyOmRmOmIwOmM4
OjhlOmM0OmQ3OjdmOmEwOjFlOjBkOjFhOmViOjJmOgotICAgICAgICBkZjpkMTo0ODo1NzozNjo1
Zjo5NTo4YzoxYjpmMDo1MTpkNjo1MjplNzo4ZDo4NDozYjo5ZjoKLSAgICAgICAgZDg6ZWQ6MjI6
OWM6YWE6YmQ6ZWU6OWI6OTA6MWQ6ODQ6YTM6NGM6MGI6Y2I6ZWI6NjQ6NzM6Ci0gICAgICAgIGJh
OmY3OjE1OmNlOmRhOjVmOmRiOjhiOjE1OjA3OmE2OjI4OjdmOmI5OjhjOjExOjliOjY0OgotICAg
ICAgICBkMzpmMTpiZTo1Mjo0ZjpjMzpkODo1ODpmZTpkZTo1Njo2Mzo2MzozYjo1MTplZDphNzo4
MToKLSAgICAgICAgZjk6MDU6NTE6NzA6NjM6MzI6MDk6MGU6OTQ6N2U6MDU6ZmU6YTE6NTY6MTg6
MzQ6OTg6ZDU6Ci0gICAgICAgIDk5OjFlOjRlOjI3OjM4Ojg5OjkwOjZhOmU1OmNlOjYwOjM1OjAx
OmY1OmRlOjM0OjYwOmIxOgotICAgICAgICBjYjphZQotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCi1NSUlDbURDQ0FnR2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCSk1Rc3dDUVlE
VlFRR0V3SktVREVPCi1NQXdHQTFVRUNCTUZWRzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5
amEyVjBNUlF3RWdZRFZRUURFd3R3Ci1lWGRsWW5OdlkydGxkREFlRncweE1qQTJNRFl3TnpJMU1E
aGFGdzB6T1RFd01qTXdOekkxTURoYU1Fa3hDekFKCi1CZ05WQkFZVEFrcFFNUTR3REFZRFZRUUlF
d1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldKemIyTnJaWFF4Ci1GREFTQmdOVkJBTVRDM0I1
ZDJWaWMyOWphMlYwTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCCi1nUURlRU00
NldnU2tIQ21UWENPQ0d2SUdBZVlycEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxSnpxaWtvNFNZaXMr
Ci1IL1I0MzdhVXl5Zld5OVkzMTF3SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CaU41
YWliRFBBMmR2Ci1CSVlkNzJJY1Zha0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3
SURBUUFCbzRHUE1JR01NQWtHCi1BMVVkRXdRQ01BQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnWkFN
Q3dHQ1dDR1NBR0crRUlCRFFRZkZoMVBjR1Z1Ci1VMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pw
WTJGMFpUQWRCZ05WSFE0RUZnUVVncUZ6aXhZTWZPVFRScFVUCi1sUm95d1lUcEJnQXdId1lEVlIw
akJCZ3dGb0FVNnhaM0VKSzdLSEJwbDVwdm9HaE9HamY3NXZNd0RRWUpLb1pJCi1odmNOQVFFRkJR
QURnWUVBYTdOR0tRTGZzTWlPeE5kL29CNE5HdXN2MzlGSVZ6WmZsWXdiOEZIV1V1ZU5oRHVmCi0y
TzBpbktxOTdwdVFIWVNqVEF2TDYyUnp1dmNWenRwZjI0c1ZCNllvZjdtTUVadGswL0crVWsvRDJG
aiszbFpqCi1ZenRSN2FlQitRVlJjR015Q1E2VWZnWCtvVllZTkpqVm1SNU9KemlKa0dybHptQTFB
ZlhlTkdDeHk2ND0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2xpZW50
X2NlcnQucDEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGUxMzk5Mjc5ODIuLjAw
MDAwMDAwMDAwMApCaW5hcnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2xpZW50X2NlcnQu
cDEyIGFuZCAvZGV2L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQv
a2V5LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9rZXkucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmYWU4NTgzMThmMjkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L2NlcnQva2V5LnBlbQorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS0tLS0tQkVHSU4g
UlNBIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUNYZ0lCQUFLQmdRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJ
R0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczEKLUp6cWlrbzRTWWlzK0gvUjQzN2FVeXlmV3k5
WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0IKLWlONWFpYkRQQTJkdkJJWWQ3
MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUIKLUFvR0JBSXVD
dVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4VGxkYWZhNlh2YXdFWVVUUDBTNzd2LzFsbGcxWXYK
LVVJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMvWjNlMWZzb3Q1dERZc3pHZTgvR2tzdDRvYVJlU294
dkJVYTZXWHAKLVFTbzdZRkNhanVIdEUrVy9nekYrVUhiZHp6WElEalFaMzE0TE5GNXQrNFVuc0VQ
QkFrRUErZ2lySW1xV29NMnQKLTNVUjhmOG9la0VSd3NtRU1mOURINVlwSDRjdlVudkkra3dlc0Mv
cjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EKLW9nQU0rNE5YNFFKQkFPTmRTeFNheTIyZWdUR05v
SWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0YmxNSlE1T3EKLVFkT0dBaDduVlFqcFBMUTVEN0NC
VkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQeWxHM3VyY0MybWZReEJra1cKLVpDVmlCTlA1OEd3
SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0OVVObXFjME4wZnBlMmZBZWhqM1VFQ1FRQ20KLUZI
L0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6M2Nia0I0QjNGY2hEbGVJVUR3TW9WRjBNVzliSTUv
NTRtVjEKLVFEazF0VUtvcnR4dlFaSmFBRDRCQWtFQWhHT0hRcVBkNmJCQm9GQnZwYUx6UEpNeHdM
S3JCK1d0a3EvUWxDNzIKLUNsUmlNbjJnOFNBTGlJTDNCRGdHWEtjS0UvV3k3am8vYWYvSkN6US9j
UHF0L0E9PQotLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JkNzAzZDgyMWVhLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NhY2Vy
dC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQv
Y2xpZW50X2NlcnQucDEyCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2tleS5wZW0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jbGll
bnRfZm9yX3Rlc3RpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZjgwNWVl
OTRlNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5n
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBm
b3IgdGVzdGluZy4KLQotVGhpcyBtb2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBl
cmZvcm1pbmcgaGFuZHNoYWtlLCBmcmFtZQotc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2Nr
ZXQgY2xpZW50LgotCi1UaGlzIGlzIGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBL
ZWVwIHRoaXMgY29kZSBpbmRlcGVuZGVudCBmcm9tCi1tb2RfcHl3ZWJzb2NrZXQuIERvbid0IGlt
cG9ydCBlLmcuIFN0cmVhbSBjbGFzcyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKLXRlc3Rpbmcu
IFVzaW5nIHV0aWwuaGV4aWZ5LCBldGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29s
IHByb2Nlc3NpbmcKLWlzIGFsbG93ZWQuCi0KLU5vdGU6Ci1UaGlzIGNvZGUgaXMgZmFyIGZyb20g
cm9idXN0LCBlLmcuLCB3ZSBjdXQgY29ybmVycyBpbiBoYW5kc2hha2UuCi0iIiIKLQotCi1pbXBv
cnQgYmFzZTY0Ci1pbXBvcnQgZXJybm8KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9y
dCByYW5kb20KLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN0cnVjdAotaW1wb3J0
IHRpbWUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1ERUZBVUxUX1BPUlQgPSA4MAotREVGQVVMVF9TRUNV
UkVfUE9SVCA9IDQ0MwotCi0jIE9wY29kZXMgaW50cm9kdWNlZCBpbiBJRVRGIEh5QmkgMDEgZm9y
IHRoZSBuZXcgZnJhbWluZyBmb3JtYXQKLU9QQ09ERV9DT05USU5VQVRJT04gPSAweDAKLU9QQ09E
RV9DTE9TRSA9IDB4OAotT1BDT0RFX1BJTkcgPSAweDkKLU9QQ09ERV9QT05HID0gMHhhCi1PUENP
REVfVEVYVCA9IDB4MQotT1BDT0RFX0JJTkFSWSA9IDB4MgotCi0jIFN0cmluZ3MgdXNlZCBmb3Ig
aGFuZHNoYWtlCi1fVVBHUkFERV9IRUFERVIgPSAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKLV9V
UEdSQURFX0hFQURFUl9ISVhJRTc1ID0gJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi1fQ09OTkVD
VElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0KLVdFQlNPQ0tFVF9BQ0NF
UFRfVVVJRCA9ICcyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEnCi0KLSMgU3Rh
dHVzIGNvZGVzCi1TVEFUVVNfTk9STUFMX0NMT1NVUkUgPSAxMDAwCi1TVEFUVVNfR09JTkdfQVdB
WSA9IDEwMDEKLVNUQVRVU19QUk9UT0NPTF9FUlJPUiA9IDEwMDIKLVNUQVRVU19VTlNVUFBPUlRF
RF9EQVRBID0gMTAwMwotU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCA9IDEwMDUKLVNUQVRVU19B
Qk5PUk1BTF9DTE9TVVJFID0gMTAwNgotU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRB
ID0gMTAwNwotU1RBVFVTX1BPTElDWV9WSU9MQVRJT04gPSAxMDA4Ci1TVEFUVVNfTUVTU0FHRV9U
T09fQklHID0gMTAwOQotU1RBVFVTX01BTkRBVE9SWV9FWFQgPSAxMDEwCi1TVEFUVVNfSU5URVJO
QUxfRU5EUE9JTlRfRVJST1IgPSAxMDExCi1TVEFUVVNfVExTX0hBTkRTSEFLRSA9IDEwMTUKLQot
IyBFeHRlbnNpb24gdG9rZW5zCi1fREVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAnZGVmbGF0ZS1m
cmFtZScKLSMgVE9ETyhiYXNoaSk6IFVwZGF0ZSBhZnRlciBtdXggaW1wbGVtZW50YXRpb24gZmlu
aXNoZWQuCi1fTVVYX0VYVEVOU0lPTiA9ICdtdXhfRE9fTk9UX1VTRScKLV9QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtZGVmbGF0ZScKLQotZGVmIF9tZXRob2RfbGlu
ZShyZXNvdXJjZSk6Ci0gICAgcmV0dXJuICdHRVQgJXMgSFRUUC8xLjFcclxuJyAlIHJlc291cmNl
Ci0KLQotZGVmIF9zZWNfb3JpZ2luX2hlYWRlcihvcmlnaW4pOgotICAgIHJldHVybiAnU2VjLVdl
YlNvY2tldC1PcmlnaW46ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBfb3JpZ2lu
X2hlYWRlcihvcmlnaW4pOgotICAgICMgNC4xIDEzLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJp
bmcgIk9yaWdpbjoiLCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsCi0gICAgIyBhbmQgdGhlIC9v
cmlnaW4vIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0byAvZmllbGRzLy4K
LSAgICByZXR1cm4gJ09yaWdpbjogJXNcclxuJyAlIG9yaWdpbi5sb3dlcigpCi0KLQotZGVmIF9m
b3JtYXRfaG9zdF9oZWFkZXIoaG9zdCwgcG9ydCwgc2VjdXJlKToKLSAgICAjIDQuMSA5LiBMZXQg
L2hvc3Rwb3J0LyBiZSBhbiBlbXB0eSBzdHJpbmcuCi0gICAgIyA0LjEgMTAuIEFwcGVuZCB0aGUg
L2hvc3QvIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0bwotICAgICMgL2hv
c3Rwb3J0LwotICAgIGhvc3Rwb3J0ID0gaG9zdC5sb3dlcigpCi0gICAgIyA0LjEgMTEuIElmIC9z
ZWN1cmUvIGlzIGZhbHNlLCBhbmQgL3BvcnQvIGlzIG5vdCA4MCwgb3IgaWYgL3NlY3VyZS8KLSAg
ICAjIGlzIHRydWUsIGFuZCAvcG9ydC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBVKzAwM0Eg
Q09MT04gY2hhcmFjdGVyCi0gICAgIyAoOikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIC9wb3J0
LywgZXhwcmVzc2VkIGFzIGEgYmFzZS10ZW4gaW50ZWdlciwKLSAgICAjIHRvIC9ob3N0cG9ydC8K
LSAgICBpZiAoKG5vdCBzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVMVF9QT1JUKSBvcgotICAgICAg
ICAoc2VjdXJlIGFuZCBwb3J0ICE9IERFRkFVTFRfU0VDVVJFX1BPUlQpKToKLSAgICAgICAgaG9z
dHBvcnQgKz0gJzonICsgc3RyKHBvcnQpCi0gICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2Yg
dGhlIHN0cmluZyAiSG9zdDoiLCBhIFUrMDAyMCBTUEFDRQotICAgICMgY2hhcmFjdGVyLCBhbmQg
L2hvc3Rwb3J0LywgdG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICdIb3N0OiAlc1xyXG4nICUgaG9z
dHBvcnQKLQotCi0jIFRPRE8odHlvc2hpbm8pOiBEZWZpbmUgYSBiYXNlIGNsYXNzIGFuZCBtb3Zl
IHRoZXNlIHNoYXJlZCBtZXRob2RzIHRvIHRoYXQuCi0KLQotZGVmIHJlY2VpdmVfYnl0ZXMoc29j
a2V0LCBsZW5ndGgpOgotICAgIHJlY2VpdmVkX2J5dGVzID0gW10KLSAgICByZW1haW5pbmcgPSBs
ZW5ndGgKLSAgICB3aGlsZSByZW1haW5pbmcgPiAwOgotICAgICAgICBuZXdfcmVjZWl2ZWRfYnl0
ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCi0gICAgICAgIGlmIG5vdCBuZXdfcmVjZWl2ZWRf
Ynl0ZXM6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0Nv
bm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCi0gICAg
ICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0
ZXMpJyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKLSAg
ICAgICAgcmVjZWl2ZWRfYnl0ZXMuYXBwZW5kKG5ld19yZWNlaXZlZF9ieXRlcykKLSAgICAgICAg
cmVtYWluaW5nIC09IGxlbihuZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgcmV0dXJuICcnLmpvaW4o
cmVjZWl2ZWRfYnl0ZXMpCi0KLQotIyBUT0RPKHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRI
YW5kc2hha2UgY2xhc3MgZGl2ZXJ0cyB0aGVzZSBtZXRob2RzLiBXZQotIyBzaG91bGQgbW92ZSB0
byBIVFRQIHBhcnNlciBhcyBzcGVjaWZpZWQgaW4gUkZDIDY0NTUuIEZvciBIeUJpIDAwIGFuZAot
IyBIaXhpZSA3NSwgcGFjayB0aGVzZSBtZXRob2RzIGFzIHNvbWUgcGFyc2VyIGNsYXNzLgotCi0K
LWRlZiBfcmVhZF9maWVsZHMoc29ja2V0KToKLSAgICAjIDQuMSAzMi4gbGV0IC9maWVsZHMvIGJl
IGEgbGlzdCBvZiBuYW1lLXZhbHVlIHBhaXJzLCBpbml0aWFsbHkgZW1wdHkuCi0gICAgZmllbGRz
ID0ge30KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQg
L3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cwotICAgICAgICBuYW1lID0gJycKLSAgICAgICAg
dmFsdWUgPSAnJwotICAgICAgICAjIDQuMSAzNC4gcmVhZCAvbmFtZS8KLSAgICAgICAgbmFtZSA9
IF9yZWFkX25hbWUoc29ja2V0KQotICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAg
ICBicmVhawotICAgICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKLSAgICAgICAgIyBUT0RPKHR5
b3NoaW5vKTogU2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCi0g
ICAgICAgIGNoID0gX3NraXBfc3BhY2VzKHNvY2tldCkKLSAgICAgICAgIyA0LjEgMzYuIHJlYWQg
L3ZhbHVlLwotICAgICAgICB2YWx1ZSA9IF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gpCi0gICAgICAg
ICMgNC4xIDM3LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNl
aXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBMRiBi
dXQgZm91bmQgJXIgd2hpbGUgcmVhZGluZyB2YWx1ZSAlciBmb3IgaGVhZGVyICcKLSAgICAgICAg
ICAgICAgICAnJXInICUgKGNoLCBuYW1lLCB2YWx1ZSkpCi0gICAgICAgICMgNC4xIDM4LiBhcHBl
bmQgYW4gZW50cnkgdG8gdGhlIC9maWVsZHMvIGxpc3QgdGhhdCBoYXMgdGhlIG5hbWUKLSAgICAg
ICAgIyBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGludGVycHJldGluZyB0aGUgL25h
bWUvIGJ5dGUKLSAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhlIHZhbHVl
IGdpdmVuIGJ5IHRoZSBzdHJpbmcKLSAgICAgICAgIyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcg
dGhlIC92YWx1ZS8gYnl0ZSBhcnJheSBhcyBhIFVURi04IGJ5dGUKLSAgICAgICAgIyBzdHJlYW0u
Ci0gICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5hcHBlbmQodmFsdWUpCi0gICAg
ICAgICMgNC4xIDM5LiByZXR1cm4gdG8gdGhlICJGaWVsZCIgc3RlcCBhYm92ZQotICAgIHJldHVy
biBmaWVsZHMKLQotCi1kZWYgX3JlYWRfbmFtZShzb2NrZXQpOgotICAgICMgNC4xIDMzLiBsZXQg
L25hbWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgbmFtZSA9ICcnCi0gICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgIyA0LjEgMzQuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAg
ICBjaCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKQotICAgICAgICBpZiBjaCA9PSAnXHInOiAg
IyAweDBECi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGNoID09ICdcbic6
ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
VW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKLSAgICAg
ICAgZWxpZiBjaCA9PSAnOic6ICAjIDB4M0EKLSAgICAgICAgICAgIHJldHVybiBuYW1lCi0gICAg
ICAgIGVsaWYgY2ggPj0gJ0EnIGFuZCBjaCA8PSAnWic6ICAjIHJhbmdlIDB4MzEgdG8gMHg1QQot
ICAgICAgICAgICAgY2ggPSBjaHIob3JkKGNoKSArIDB4MjApCi0gICAgICAgICAgICBuYW1lICs9
IGNoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lICs9IGNoCi0KLQotZGVmIF9za2lw
X3NwYWNlcyhzb2NrZXQpOgotICAgICMgNC4xIDM1LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2
ZXIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAx
KQotICAgICAgICBpZiBjaCA9PSAnICc6ICAjIDB4MjAKLSAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgIHJldHVybiBjaAotCi0KLWRlZiBfcmVhZF92YWx1ZShzb2NrZXQsIGNoKToKLSAgICAj
IDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKLSAgICB2YWx1ZSA9ICcn
Ci0gICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgotICAgIHdoaWxlIFRydWU6
Ci0gICAgICAgIGlmIGNoID09ICdccic6ICAjIDB4MEQKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZQotICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVh
ZGVyIHZhbHVlICVyJyAlIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdmFsdWUg
Kz0gY2gKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLQotCi1kZWYgcmVh
ZF9mcmFtZV9oZWFkZXIoc29ja2V0KToKLSAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc29j
a2V0LCAyKQotCi0gICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlZFswXSkKLSAgICBmaW4gPSAo
Zmlyc3RfYnl0ZSA+PiA3KSAmIDEKLSAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCi0g
ICAgcnN2MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQotICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+
PiA0KSAmIDEKLSAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0KLSAgICBzZWNvbmRfYnl0
ZSA9IG9yZChyZWNlaXZlZFsxXSkKLSAgICBtYXNrID0gKHNlY29uZF9ieXRlID4+IDcpICYgMQot
ICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25kX2J5dGUgJiAweDdmCi0KLSAgICBpZiBtYXNrICE9
IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICdNYXNrIGJpdCBtdXN0
IGJlIDAgZm9yIGZyYW1lcyBjb21pbmcgZnJvbSBzZXJ2ZXInKQotCi0gICAgaWYgcGF5bG9hZF9s
ZW5ndGggPT0gMTI3OgotICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVf
Ynl0ZXMoc29ja2V0LCA4KQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2so
Ci0gICAgICAgICAgICAnIVEnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAg
aWYgcGF5bG9hZF9sZW5ndGggPiAweDdGRkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ0V4dGVuZGVkIHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQotICAgIGVsaWYg
cGF5bG9hZF9sZW5ndGggPT0gMTI2OgotICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9
IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAyKQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVj
dC51bnBhY2soCi0gICAgICAgICAgICAnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0K
LQotICAgIHJldHVybiBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZF9sZW5n
dGgKLQotCi1jbGFzcyBfVExTU29ja2V0KG9iamVjdCk6Ci0gICAgIiIiV3JhcHBlciBmb3IgYSBU
TFMgY29ubmVjdGlvbi4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXdfc29ja2V0KToK
LSAgICAgICAgc2VsZi5fc3NsID0gc29ja2V0LnNzbChyYXdfc29ja2V0KQotCi0gICAgZGVmIHNl
bmQoc2VsZiwgYnl0ZXMpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLndyaXRlKGJ5dGVzKQot
Ci0gICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zc2wu
cmVhZChzaXplKQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAjIE5vdGhpbmcgdG8g
ZG8uCi0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBIdHRwU3RhdHVzRXhjZXB0aW9uKEV4Y2VwdGlv
bik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB1bmV4cGVjdGVk
IGh0dHAgc3RhdHVzIGNvZGUgd2FzCi0gICAgcmVjZWl2ZWQgYXMgYSByZXN1bHQgb2YgaGFuZHNo
YWtlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cyk6Ci0g
ICAgICAgIHN1cGVyKEh0dHBTdGF0dXNFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCi0g
ICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCi0KLQotY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtl
KG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2Vi
U29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICBkZWYgaGFuZHNo
YWtlKHNlbGYsIHNvY2tldCk6Ci0gICAgICAgICIiIkhhbmRzaGFrZSBXZWJTb2NrZXQuCi0KLSAg
ICAgICAgUmFpc2VzOgotICAgICAgICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2UgZmFpbGVkLgot
ICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICBy
ZXF1ZXN0X2xpbmUgPSBfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxpbmU6ICVy
JywgcmVxdWVzdF9saW5lKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1ZXN0X2xp
bmUpCi0KLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFE
RV9IRUFERVIpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQotCi0g
ICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZl
cl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLQotICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQo
X3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5v
cmlnaW4pKQotCi0gICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5kb20oMTYpCi0gICAgICAg
IGtleSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXk6ICVzICglcyknLCBrZXks
IHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tleSkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1X
ZWJTb2NrZXQtS2V5OiAlc1xyXG4nICUga2V5KQotCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1Nl
Yy1XZWJTb2NrZXQtVmVyc2lvbjogJWRcclxuJyAlIHNlbGYuX29wdGlvbnMudmVyc2lvbikKLQot
ICAgICAgICAjIFNldHRpbmcgdXAgZXh0ZW5zaW9ucy4KLSAgICAgICAgaWYgbGVuKHNlbGYuX29w
dGlvbnMuZXh0ZW5zaW9ucykgPiAwOgotICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdl
YlNvY2tldC1FeHRlbnNpb25zOiAlc1xyXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
JywgJy5qb2luKHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCi0KLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRz
KQotCi0gICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2Nr
ZXQuc2VuZGFsbChmaWVsZCkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQot
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVl
c3QnKQotCi0gICAgICAgIGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
ICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBmaWVs
ZCArPSBjaAotICAgICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBicmVh
awotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVzcG9u
c2UtTGluZTogJXInLCBmaWVsZCkKLQotICAgICAgICBpZiBsZW4oZmllbGQpIDwgNyBvciBub3Qg
ZmllbGQuZW5kc3dpdGgoJ1xyXG4nKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignV3Jv
bmcgc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2goJ1teIF0q
IChbXiBdKikgLionLCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdObyBIVFRQIHN0YXR1cyBjb2RlIGZv
dW5kIGluIHN0YXR1cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgY29kZSA9IG0uZ3JvdXAo
MSkKLSAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdbMC05XVswLTldWzAtOV0nLCBjb2RlKToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSFRUUCBzdGF0dXMg
Y29kZSAlciBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0gICAgICAg
ICAgICAgICAgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoKLSAgICAg
ICAgICAgIHJhaXNlIEh0dHBTdGF0dXNFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0V4cGVj
dGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAlciBpbiBzdGF0dXMgbGluZTogJwot
ICAgICAgICAgICAgICAgICclcicgJSAoY29kZSwgZmllbGQpLCBpbnQoY29kZSkpCi0gICAgICAg
IGZpZWxkcyA9IF9yZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCi0gICAgICAgIGNoID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRXhwZWN0ZWQgTEYgYnV0IGZvdW5kOiAlcicg
JSBjaCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIHJl
c3BvbnNlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAgICMgQ2hlY2sgL2ZpZWxkcy8K
LSAgICAgICAgaWYgbGVuKGZpZWxkc1sndXBncmFkZSddKSAhPSAxOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBVcGdyYWRlIGhlYWRlcnMg
Zm91bmQ6ICVzJyAlIGZpZWxkc1sndXBncmFkZSddKQotICAgICAgICBpZiBsZW4oZmllbGRzWydj
b25uZWN0aW9uJ10pICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ011bHRpcGxlIENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUgZmllbGRz
Wydjb25uZWN0aW9uJ10pCi0gICAgICAgIGlmIGZpZWxkc1sndXBncmFkZSddWzBdICE9ICd3ZWJz
b2NrZXQnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdV
bmV4cGVjdGVkIFVwZ3JhZGUgaGVhZGVyIHZhbHVlOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXVsw
XSkKLSAgICAgICAgaWYgZmllbGRzWydjb25uZWN0aW9uJ11bMF0ubG93ZXIoKSAhPSAndXBncmFk
ZSc6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhw
ZWN0ZWQgQ29ubmVjdGlvbiBoZWFkZXIgdmFsdWU6ICVzJyAlCi0gICAgICAgICAgICAgICAgZmll
bGRzWydjb25uZWN0aW9uJ11bMF0pCi0KLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNv
Y2tldC1hY2NlcHQnXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnTXVsdGlwbGUgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVycyBmb3VuZDog
JXMnICUKLSAgICAgICAgICAgICAgICBmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pCi0K
LSAgICAgICAgYWNjZXB0ID0gZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddWzBdCi0KLSAg
ICAgICAgIyBWYWxpZGF0ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjY2Vw
dCA9IGJhc2U2NC5iNjRkZWNvZGUoYWNjZXB0KQotICAgICAgICBleGNlcHQgVHlwZUVycm9yLCBl
OgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICcgKyBhY2Nl
cHQpCi0KLSAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoKLSAgICAgICAgICAg
IHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1
ZSBvZiBTZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25nJykKLQotICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFjY2VwdDogJXIgKCVz
KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQsIHV0aWwuaGV4aWZ5KGRlY29k
ZWRfYWNjZXB0KSkKLQotICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2NlcHQgPSB1dGlsLnNo
YTFfaGFzaCgKLSAgICAgICAgICAgIGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0
KCkKLSAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBT
ZWMtV2ViU29ja2V0LUFjY2VwdDogJXIgKCVzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF9hY2NlcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlm
eShvcmlnaW5hbF9leHBlY3RlZF9hY2NlcHQpKQotCi0gICAgICAgIGlmIGFjY2VwdCAhPSBleHBl
Y3RlZF9hY2NlcHQ6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ0ludmFsaWQgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyOiAlciAoZXhwZWN0ZWQpICE9
ICVyICcKLSAgICAgICAgICAgICAgICAnKGFjdHVhbCknICUgKGFjY2VwdCwgZXhwZWN0ZWRfYWNj
ZXB0KSkKLQotICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVsZHMuZ2V0KCdz
ZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMnKQotICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0g
W10KLSAgICAgICAgaWYgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAot
ICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkK
LQotICAgICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhl
cmUgaXMgYW55IHVucmVjb2duaXplZAotICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9u
cyB3ZSBkaWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCi0gICAgICAgICMgZXh0ZW5zaW9u
cyB3ZSByZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwg
YmUKLSAgICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgotICAgICAgICBkZWZs
YXRlX2ZyYW1lX2FjY2VwdGVkID0gRmFsc2UKLSAgICAgICAgbXV4X2FjY2VwdGVkID0gRmFsc2UK
LSAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgotICAgICAgICAg
ICAgaWYgZXh0ZW5zaW9uLm5hbWUoKSA9PSBfREVGTEFURV9GUkFNRV9FWFRFTlNJT046Ci0gICAg
ICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAg
ICAgICAgICAgICAgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IFRydWUKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX01VWF9F
WFRFTlNJT046Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfbXV4OgotICAg
ICAgICAgICAgICAgICAgICBtdXhfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBleHRlbnNpb24ubmFtZSgpID09IF9QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRp
b25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZQotICAgICAgICAgICAgICAgIGlmIGNoZWNrZXI6
Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrZXIoZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQotCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlIGV4dGVuc2lvbi5u
YW1lKCkpCi0KLSAgICAgICAgIyBMZXQgYWxsIGV4dGVuc2lvbnMgY2hlY2sgdGhlIHJlc3BvbnNl
IGZvciBleHRlbnNpb24gcmVxdWVzdC4KLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy51c2Vf
ZGVmbGF0ZV9mcmFtZSBhbmQKLSAgICAgICAgICAgIG5vdCBkZWZsYXRlX2ZyYW1lX2FjY2VwdGVk
KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgZXh0ZW5zaW9uIG5vdCBhY2NlcHRl
ZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lP
TikKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9tdXggYW5kIG5vdCBtdXhfYWNjZXB0
ZWQ6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIGV4dGVuc2lvbiBub3QgYWNjZXB0
ZWQnICUgX01VWF9FWFRFTlNJT04pCi0KLQotY2xhc3MgV2ViU29ja2V0SHliaTAwSGFuZHNoYWtl
KG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2Vi
U29ja2V0IHByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBvcHRpb25zLCBkcmFmdF9maWVsZCk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9
IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBv
cHRpb25zCi0gICAgICAgIHNlbGYuX2RyYWZ0X2ZpZWxkID0gZHJhZnRfZmllbGQKLQotICAgIGRl
ZiBoYW5kc2hha2Uoc2VsZiwgc29ja2V0KToKLSAgICAgICAgIiIiSGFuZHNoYWtlIFdlYlNvY2tl
dC4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBFeGNlcHRpb246IGhhbmRzaGFrZSBm
YWlsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAotCi0g
ICAgICAgICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAgICByZXF1ZXN0X2xpbmUg
PSBfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxpbmU6ICVyJywgcmVxdWVzdF9s
aW5lKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUpCi0gICAgICAg
ICMgNC4xIDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0IG9mIHN0cmluZ3MuCi0gICAg
ICAgIGZpZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0aGUgc3RyaW5nICJVcGdyYWRl
OiBXZWJTb2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURF
X0hFQURFUl9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQgdGhlIHN0cmluZyAiQ29ubmVj
dGlvbjogVXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5F
Q1RJT05fSEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQgSG9zdDogZmllbGQgdG8gL2Zp
ZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLSAg
ICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBm
aWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAg
ICAgIyBUT0RPOiA0LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRvIC9m
aWVsZHMvLgotICAgICAgICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8gL2Zp
ZWxkcy8uCi0KLSAgICAgICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxuPiB0
byAvZmllbGRzLy4KLSAgICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVyYXRl
X3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIx
OiAlZCcsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2Nr
ZXQtS2V5MTogJXNcclxuJyAlIGtleTEpCi0gICAgICAgIHNlbGYuX251bWJlcjIsIGtleTIgPSBz
ZWxmLl9nZW5lcmF0ZV9zZWNfd2Vic29ja2V0X2tleSgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnTnVtYmVyMjogJWQnLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBmaWVsZHMuYXBwZW5k
KCdTZWMtV2ViU29ja2V0LUtleTI6ICVzXHJcbicgJSBrZXkyKQotCi0gICAgICAgIGZpZWxkcy5h
cHBlbmQoJ1NlYy1XZWJTb2NrZXQtRHJhZnQ6ICVzXHJcbicgJSBzZWxmLl9kcmFmdF9maWVsZCkK
LQotICAgICAgICAjIDQuMSAyNC4gRm9yIGVhY2ggc3RyaW5nIGluIC9maWVsZHMvLCBpbiBhIHJh
bmRvbSBvcmRlcjogc2VuZCB0aGUKLSAgICAgICAgIyBzdHJpbmcsIGVuY29kZWQgYXMgVVRGLTgs
IGZvbGxvd2VkIGJ5IGEgVVRGLTggZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0UKLSAgICAgICAgIyBS
RVRVUk4gVSswMDBBIExJTkUgRkVFRCBjaGFyYWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAgIHJh
bmRvbS5zaHVmZmxlKGZpZWxkcykKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5p
bmcgaGFuZHNoYWtlIHJlcXVlc3QgaGVhZGVyczogJXInLCBmaWVsZHMpCi0gICAgICAgIGZvciBm
aWVsZCBpbiBmaWVsZHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmaWVsZCkK
LQotICAgICAgICAjIDQuMSAyNS4gc2VuZCBhIFVURi04LWVuY29kZWQgVSswMDBEIENBUlJJQUdF
IFJFVFVSTiBVKzAwMEEgTElORSBGRUVECi0gICAgICAgICMgY2hhcmFjdGVyIHBhaXIgKENSTEYp
LgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbCgnXHJcbicpCi0gICAgICAgICMgNC4xIDI2
LiBsZXQgL2tleTMvIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVz
IChvcgotICAgICAgICAjIGVxdWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5j
b2RlZCBpbiBhIGJpZy1lbmRpYW4gb3JkZXIpLgotICAgICAgICBzZWxmLl9rZXkzID0gc2VsZi5f
Z2VuZXJhdGVfa2V5MygpCi0gICAgICAgICMgNC4xIDI3LiBzZW5kIC9rZXkzLyB0byB0aGUgc2Vy
dmVyLgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9rZXkzKQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnS2V5MzogJXIgKCVzKScsIHNlbGYuX2tl
eTMsIHV0aWwuaGV4aWZ5KHNlbGYuX2tleTMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdTZW50IG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QnKQotCi0gICAgICAgICMgNC4xIDI4LiBS
ZWFkIGJ5dGVzIGZyb20gdGhlIHNlcnZlciB1bnRpbCBlaXRoZXIgdGhlIGNvbm5lY3Rpb24KLSAg
ICAgICAgIyBjbG9zZXMsIG9yIGEgMHgwQSBieXRlIGlzIHJlYWQuIGxldCAvZmllbGQvIGJlIHRo
ZXNlIGJ5dGVzLCBpbmNsdWRpbmcKLSAgICAgICAgIyB0aGUgMHgwQSBieXRlcy4KLSAgICAgICAg
ZmllbGQgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSByZWNlaXZl
X2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGZpZWxkICs9IGNoCi0gICAgICAg
ICAgICBpZiBjaCA9PSAnXG4nOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXNwb25zZS1MaW5lOiAlcicsIGZp
ZWxkKQotCi0gICAgICAgICMgaWYgL2ZpZWxkLyBpcyBub3QgYXQgbGVhc3Qgc2V2ZW4gYnl0ZXMg
bG9uZywgb3IgaWYgdGhlIGxhc3QKLSAgICAgICAgIyB0d28gYnl0ZXMgYXJlbid0IDB4MEQgYW5k
IDB4MEEgcmVzcGVjdGl2ZWx5LCBvciBpZiBpdCBkb2VzIG5vdAotICAgICAgICAjIGNvbnRhaW4g
YXQgbGVhc3QgdHdvIDB4MjAgYnl0ZXMsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rp
b24KLSAgICAgICAgIyBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGxlbihmaWVs
ZCkgPCA3IG9yIG5vdCBmaWVsZC5lbmRzd2l0aCgnXHJcbicpOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdXcm9uZyBzdGF0dXMgbGluZTogJXInICUgZmllbGQpCi0gICAgICAgIG0gPSBy
ZS5tYXRjaCgnW14gXSogKFteIF0qKSAuKicsIGZpZWxkKQotICAgICAgICBpZiBtIGlzIE5vbmU6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxp
bmU6ICVyJyAlIGZpZWxkKQotICAgICAgICAjIDQuMSAyOS4gbGV0IC9jb2RlLyBiZSB0aGUgc3Vi
c3RyaW5nIG9mIC9maWVsZC8gdGhhdCBzdGFydHMgZnJvbSB0aGUKLSAgICAgICAgIyBieXRlIGFm
dGVyIHRoZSBmaXJzdCAweDIwIGJ5dGUsIGFuZCBlbmRzIHdpdGggdGhlIGJ5dGUgYmVmb3JlIHRo
ZQotICAgICAgICAjIHNlY29uZCAweDIwIGJ5dGUuCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEp
Ci0gICAgICAgICMgNC4xIDMwLiBpZiAvY29kZS8gaXMgbm90IHRocmVlIGJ5dGVzIGxvbmcsIG9y
IGlmIGFueSBvZiB0aGUgYnl0ZXMgaW4KLSAgICAgICAgIyAvY29kZS8gYXJlIG5vdCBpbiB0aGUg
cmFuZ2UgMHgzMCB0byAweDkwLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldAotICAgICAgICAjIGNv
bm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBub3QgcmUubWF0Y2go
J1swLTldWzAtOV1bMC05XScsIGNvZGUpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdIVFRQIHN0YXR1cyBjb2RlICVyIGlzIG5vdCB0aHJlZSBkaWdpdCBp
biBzdGF0dXMgbGluZTogJXInICUKLSAgICAgICAgICAgICAgICAoY29kZSwgZmllbGQpKQotICAg
ICAgICAjIDQuMSAzMS4gaWYgL2NvZGUvLCBpbnRlcnByZXRlZCBhcyBVVEYtOCwgaXMgIjEwMSIs
IHRoZW4gbW92ZSB0byB0aGUKLSAgICAgICAgIyBuZXh0IHN0ZXAuCi0gICAgICAgIGlmIGNvZGUg
IT0gJzEwMSc6Ci0gICAgICAgICAgICByYWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4g
c3RhdHVzIGxpbmU6ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSwgaW50
KGNvZGUpKQotICAgICAgICAjIDQuMSAzMi0zOS4gcmVhZCBmaWVsZHMgaW50byAvZmllbGRzLwot
ICAgICAgICBmaWVsZHMgPSBfcmVhZF9maWVsZHMoc2VsZi5fc29ja2V0KQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVzcG9uc2UgaGVhZGVyczogJXIn
LCBmaWVsZHMpCi0KLSAgICAgICAgIyA0LjEgNDAuIF9GaWVsZHMgcHJvY2Vzc2luZ18KLSAgICAg
ICAgIyByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlcgotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMo
c2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlcicgJSBjaCkKLSAg
ICAgICAgIyA0LjEgNDEuIGNoZWNrIC9maWVsZHMvCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3Vw
Z3JhZGUnXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVsZHNbJ3VwZ3Jh
ZGUnXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlvbiddKSAhPSAxOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBDb25uZWN0
aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVjdGlvbiddKQotICAgICAgICBp
ZiBsZW4oZmllbGRzWydzZWMtd2Vic29ja2V0LW9yaWdpbiddKSAhPSAxOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBTZWMtV2ViU29ja2V0
LU9yaWdpbiBoZWFkZXJzIGZvdW5kOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snc2Vj
LXNlYnNvY2tldC1vcmlnaW4nXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tl
dC1sb2NhdGlvbiddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdNdWx0aXBsZSBTZWMtV2ViU29ja2V0LUxvY2F0aW9uIGhlYWRlcnMgZm91bmQ6
ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydzZWMtc2Vic29ja2V0LWxvY2F0aW9uJ10p
Ci0gICAgICAgICMgVE9ETyh1a2FpKTogcHJvdG9jb2wKLSAgICAgICAgIyBpZiB0aGUgZW50cnkn
cyBuYW1lIGlzICJ1cGdyYWRlIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUgaXMgbm90IGV4YWN0
bHkgZXF1YWwgdG8gdGhlIHN0cmluZyAiV2ViU29ja2V0IiwKLSAgICAgICAgIyAgdGhlbiBmYWls
IHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAg
IGlmIGZpZWxkc1sndXBncmFkZSddWzBdICE9ICdXZWJTb2NrZXQnOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIFVwZ3JhZGUgaGVhZGVy
IHZhbHVlOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXVswXSkKLSAgICAgICAgIyBpZiB0aGUgZW50
cnkncyBuYW1lIGlzICJjb25uZWN0aW9uIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZl
cnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMg
IHRvIHRoZSBzdHJpbmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0
aW9uIGFuZAotICAgICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgZmllbGRz
Wydjb25uZWN0aW9uJ11bMF0ubG93ZXIoKSAhPSAndXBncmFkZSc6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgQ29ubmVjdGlvbiBoZWFk
ZXIgdmFsdWU6ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydjb25uZWN0aW9uJ11bMF0p
Ci0gICAgICAgICMgVE9ETyh1a2FpKTogY2hlY2sgb3JpZ2luLCBsb2NhdGlvbiwgY29va2llLCAu
LgotCi0gICAgICAgICMgNC4xIDQyLiBsZXQgL2NoYWxsZW5nZS8gYmUgdGhlIGNvbmNhdGVuYXRp
b24gb2YgL251bWJlcl8xLywKLSAgICAgICAgIyBleHByZXNzZWQgYXMgYSBiaWcgZW5kaWFuIDMy
IGJpdCBpbnRlZ2VyLCAvbnVtYmVyXzIvLCBleHByZXNzZWQKLSAgICAgICAgIyBhcyBiaWcgZW5k
aWFuIDMyIGJpdCBpbnRlZ2VyLCBhbmQgdGhlIGVpZ2h0IGJ5dGVzIG9mIC9rZXlfMy8gaW4gdGhl
Ci0gICAgICAgICMgb3JkZXIgdGhleSB3ZXJlIHNlbnQgb24gdGhlIHdpcmUuCi0gICAgICAgIGNo
YWxsZW5nZSA9IHN0cnVjdC5wYWNrKCchSScsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGNoYWxs
ZW5nZSArPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIyKQotICAgICAgICBjaGFsbGVu
Z2UgKz0gc2VsZi5fa2V5MwotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAg
ICAgICdDaGFsbGVuZ2U6ICVyICglcyknLCBjaGFsbGVuZ2UsIHV0aWwuaGV4aWZ5KGNoYWxsZW5n
ZSkpCi0KLSAgICAgICAgIyA0LjEgNDMuIGxldCAvZXhwZWN0ZWQvIGJlIHRoZSBNRDUgZmluZ2Vy
cHJpbnQgb2YgL2NoYWxsZW5nZS8gYXMgYQotICAgICAgICAjIGJpZy1lbmRpYW4gMTI4IGJpdCBz
dHJpbmcuCi0gICAgICAgIGV4cGVjdGVkID0gdXRpbC5tZDVfaGFzaChjaGFsbGVuZ2UpLmRpZ2Vz
dCgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCBj
aGFsbGVuZ2UgcmVzcG9uc2U6ICVyICglcyknLAotICAgICAgICAgICAgZXhwZWN0ZWQsIHV0aWwu
aGV4aWZ5KGV4cGVjdGVkKSkKLQotICAgICAgICAjIDQuMSA0NC4gcmVhZCBzaXh0ZWVuIGJ5dGVz
IGZyb20gdGhlIHNlcnZlci4KLSAgICAgICAgIyBsZXQgL3JlcGx5LyBiZSB0aG9zZSBieXRlcy4K
LSAgICAgICAgcmVwbHkgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMTYpCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY3R1YWwgY2hhbGxlbmdlIHJlc3Bv
bnNlOiAlciAoJXMpJywgcmVwbHksIHV0aWwuaGV4aWZ5KHJlcGx5KSkKLQotICAgICAgICAjIDQu
MSA0NS4gaWYgL3JlcGx5LyBkb2VzIG5vdCBleGFjdGx5IGVxdWFsIC9leHBlY3RlZC8sIHRoZW4g
ZmFpbAotICAgICAgICAjIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCi0gICAgICAgIGlmIGV4cGVjdGVkICE9IHJlcGx5OgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdCYWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAo
ZXhwZWN0ZWQpICE9ICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKGV4cGVjdGVkLCBy
ZXBseSkpCi0gICAgICAgICMgNC4xIDQ2LiBUaGUgKldlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVz
dGFibGlzaGVkKi4KLQotICAgIGRlZiBfZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoc2VsZik6
Ci0gICAgICAgICMgNC4xIDE2LiBsZXQgL3NwYWNlc19uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZy
b20gMSB0byAxMiBpbmNsdXNpdmUuCi0gICAgICAgIHNwYWNlcyA9IHJhbmRvbS5yYW5kaW50KDEs
IDEyKQotICAgICAgICAjIDQuMSAxNy4gbGV0IC9tYXhfbi8gYmUgdGhlIGxhcmdlc3QgaW50ZWdl
ciBub3QgZ3JlYXRlciB0aGFuCi0gICAgICAgICMgIDQsMjk0LDk2NywyOTUgZGl2aWRlZCBieSAv
c3BhY2VzX24vLgotICAgICAgICBtYXhudW0gPSA0Mjk0OTY3Mjk1IC8gc3BhY2VzCi0gICAgICAg
ICMgNC4xIDE4LiBsZXQgL251bWJlcl9uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byAv
bWF4X24vCi0gICAgICAgICMgaW5jbHVzaXZlLgotICAgICAgICBudW1iZXIgPSByYW5kb20ucmFu
ZGludCgwLCBtYXhudW0pCi0gICAgICAgICMgNC4xIDE5LiBsZXQgL3Byb2R1Y3Rfbi8gYmUgdGhl
IHJlc3VsdCBvZiBtdWx0aXBseWluZyAvbnVtYmVyX24vIGFuZAotICAgICAgICAjIC9zcGFjZXNf
bi8gdG9nZXRoZXIuCi0gICAgICAgIHByb2R1Y3QgPSBudW1iZXIgKiBzcGFjZXMKLSAgICAgICAg
IyA0LjEgMjAuIGxldCAva2V5X24vIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgL3Byb2R1Y3Rf
bi8sIGV4cHJlc3NlZAotICAgICAgICAjIGluIGJhc2UgdGVuIHVzaW5nIHRoZSBudW1lcmFscyBp
biB0aGUgcmFuZ2UgVSswMDMwIERJR0lUIFpFUk8gKDApIHRvCi0gICAgICAgICMgVSswMDM5IERJ
R0lUIE5JTkUgKDkpLgotICAgICAgICBrZXkgPSBzdHIocHJvZHVjdCkKLSAgICAgICAgIyA0LjEg
MjEuIGluc2VydCBiZXR3ZWVuIG9uZSBhbmQgdHdlbHZlIHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20g
dGhlCi0gICAgICAgICMgcmFuZ2UgVSswMDIxIHRvIFUrMDAyRiBhbmQgVSswMDNBIHRvIFUrMDA3
RSBpbnRvIC9rZXlfbi8gYXQgcmFuZG9tCi0gICAgICAgICMgcG9zaXRpb25zLgotICAgICAgICBh
dmFpbGFibGVfY2hhcnMgPSByYW5nZSgweDIxLCAweDJmICsgMSkgKyByYW5nZSgweDNhLCAweDdl
ICsgMSkKLSAgICAgICAgbiA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAgICBmb3IgXyBp
biB4cmFuZ2Uobik6Ci0gICAgICAgICAgICBjaCA9IHJhbmRvbS5jaG9pY2UoYXZhaWxhYmxlX2No
YXJzKQotICAgICAgICAgICAgcG9zID0gcmFuZG9tLnJhbmRpbnQoMCwgbGVuKGtleSkpCi0gICAg
ICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsgY2hyKGNoKSArIGtleVtwb3M6XQotICAgICAgICAj
IDQuMSAyMi4gaW5zZXJ0IC9zcGFjZXNfbi8gVSswMDIwIFNQQUNFIGNoYXJhY3RlcnMgaW50byAv
a2V5X24vIGF0Ci0gICAgICAgICMgcmFuZG9tIHBvc2l0aW9ucyBvdGhlciB0aGFuIHN0YXJ0IG9y
IGVuZCBvZiB0aGUgc3RyaW5nLgotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uoc3BhY2VzKToKLSAg
ICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDEsIGxlbihrZXkpIC0gMSkKLSAgICAgICAg
ICAgIGtleSA9IGtleVswOnBvc10gKyAnICcgKyBrZXlbcG9zOl0KLSAgICAgICAgcmV0dXJuIG51
bWJlciwga2V5Ci0KLSAgICBkZWYgX2dlbmVyYXRlX2tleTMoc2VsZik6Ci0gICAgICAgICMgNC4x
IDI2LiBsZXQgL2tleTMvIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5
dGVzIChvcgotICAgICAgICAjIGVxdWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIg
ZW5jb2RlZCBpbiBhIGJpZy1lbmRpYW4gb3JkZXIpLgotICAgICAgICByZXR1cm4gJycuam9pbihb
Y2hyKHJhbmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBfIGluIHhyYW5nZSg4KV0pCi0KLQotY2xh
c3MgV2ViU29ja2V0SGl4aWU3NUhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBo
YW5kc2hha2UgcHJvY2Vzc29yIGZvciBJRVRGIEhpeGllIDc1LiIiIgotCi0gICAgX0VYUEVDVEVE
X1JFU1BPTlNFID0gKAotICAgICAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wg
SGFuZHNoYWtlXHJcbicgKwotICAgICAgICBfVVBHUkFERV9IRUFERVJfSElYSUU3NSArCi0gICAg
ICAgIF9DT05ORUNUSU9OX0hFQURFUikKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25z
KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0K
LSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgIGRlZiBfc2tpcF9oZWFkZXJz
KHNlbGYpOgotICAgICAgICB0ZXJtaW5hdG9yID0gJ1xyXG5cclxuJwotICAgICAgICBwb3MgPSAw
Ci0gICAgICAgIHdoaWxlIHBvcyA8IGxlbih0ZXJtaW5hdG9yKToKLSAgICAgICAgICAgIHJlY2Vp
dmVkID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiByZWNl
aXZlZCA9PSB0ZXJtaW5hdG9yW3Bvc106Ci0gICAgICAgICAgICAgICAgcG9zICs9IDEKLSAgICAg
ICAgICAgIGVsaWYgcmVjZWl2ZWQgPT0gdGVybWluYXRvclswXToKLSAgICAgICAgICAgICAgICBw
b3MgPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBvcyA9IDAKLQotICAg
IGRlZiBoYW5kc2hha2Uoc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0Ci0KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwocmVxdWVzdF9saW5lKQotCi0gICAgICAgIGhlYWRlcnMgPSBfVVBHUkFERV9IRUFERVJf
SElYSUU3NSArIF9DT05ORUNUSU9OX0hFQURFUgotICAgICAgICBoZWFkZXJzICs9IF9mb3JtYXRf
aG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMudXNlX3RscykKLSAgICAgICAgaGVhZGVycyArPSBfb3JpZ2luX2hlYWRlcihzZWxmLl9v
cHRpb25zLm9yaWdpbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRz
aGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgaGVhZGVycykKLSAgICAgICAgc2VsZi5fc29ja2V0
LnNlbmRhbGwoaGVhZGVycykKLQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbCgnXHJcbicp
Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hha2UgcmVx
dWVzdCcpCi0KLSAgICAgICAgZm9yIGV4cGVjdGVkX2NoYXIgaW4gV2ViU29ja2V0SGl4aWU3NUhh
bmRzaGFrZS5fRVhQRUNURURfUkVTUE9OU0U6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHJlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgZXhwZWN0ZWRfY2hhciAh
PSByZWNlaXZlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0hhbmRzaGFrZSBm
YWlsdXJlJykKLSAgICAgICAgIyBXZSBjdXQgY29ybmVycyBhbmQgc2tpcCBvdGhlciBoZWFkZXJz
LgotICAgICAgICBzZWxmLl9za2lwX2hlYWRlcnMoKQotCi0KLWNsYXNzIFdlYlNvY2tldFN0cmVh
bShvYmplY3QpOgotICAgICIiIkZyYW1lIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90
b2NvbCAoUkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tldCwgaGFu
ZHNoYWtlKToKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFuZHNoYWtlCi0gICAgICAgIHNl
bGYuX3NvY2tldCA9IHNvY2tldAotCi0gICAgICAgICMgRmlsdGVycyBhcHBsaWVkIHRvIGFwcGxp
Y2F0aW9uIGRhdGEgcGFydCBvZiBkYXRhIGZyYW1lcy4KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdf
ZnJhbWVfZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIg
PSBOb25lCi0KLSAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlLl9vcHRpb25zLnVzZV9kZWZsYXRl
X2ZyYW1lOgotICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyID0gKAotICAg
ICAgICAgICAgICAgIHV0aWwuX1JGQzE5NzlEZWZsYXRlcihOb25lLCBGYWxzZSkpCi0gICAgICAg
ICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgPSB1dGlsLl9SRkMxOTc5SW5mbGF0ZXIo
KQotCi0gICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgZGVmIF9tYXNrX2h5
Ymkoc2VsZiwgcyk6Ci0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IG9zLnVyYW5kb20gZG9lcyBv
cGVuL3JlYWQvY2xvc2UgZm9yIGV2ZXJ5IGNhbGwuIElmCi0gICAgICAgICMgcGVyZm9ybWFuY2Ug
bWF0dGVycywgY2hhbmdlIHRoaXMgdG8gc29tZSBsaWJyYXJ5IGNhbGwgdGhhdCBnZW5lcmF0ZXMK
LSAgICAgICAgIyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvIHJhbmRvbSBudW1iZXIg
c2VxdWVuY2UuCi0gICAgICAgIG1hc2tpbmdfbm9uY2UgPSBvcy51cmFuZG9tKDQpCi0gICAgICAg
IHJlc3VsdCA9IFttYXNraW5nX25vbmNlXQotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgZm9y
IGMgaW4gczoKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hyKG9yZChjKSBeIG9yZChtYXNr
aW5nX25vbmNlW2NvdW50XSkpKQotICAgICAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGxl
bihtYXNraW5nX25vbmNlKQotICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCi0KLSAgICBk
ZWYgc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKLSAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoaGVhZGVyICsgc2VsZi5fbWFza19oeWJpKGJvZHkp
KQotCi0gICAgZGVmIHNlbmRfZGF0YShzZWxmLCBwYXlsb2FkLCBmcmFtZV90eXBlLCBlbmQ9VHJ1
ZSwgbWFzaz1UcnVlLAotICAgICAgICAgICAgICAgICAgcnN2MT0wLCByc3YyPTAsIHJzdjM9MCk6
Ci0gICAgICAgIGlmIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIHBheWxvYWQgPSBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHBh
eWxvYWQpCi0KLSAgICAgICAgaWYgc2VsZi5fZnJhZ21lbnRlZDoKLSAgICAgICAgICAgIG9wY29k
ZSA9IE9QQ09ERV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wY29k
ZSA9IGZyYW1lX3R5cGUKLQotICAgICAgICBpZiBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9mcmFn
bWVudGVkID0gRmFsc2UKLSAgICAgICAgICAgIGZpbiA9IDEKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBUcnVlCi0gICAgICAgICAgICBmaW4gPSAwCi0KLSAg
ICAgICAgaWYgc2VsZi5faGFuZHNoYWtlLl9vcHRpb25zLnVzZV9kZWZsYXRlX2ZyYW1lOgotICAg
ICAgICAgICAgcnN2MSA9IDEKLQotICAgICAgICBpZiBtYXNrOgotICAgICAgICAgICAgbWFza19i
aXQgPSAxIDw8IDcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hc2tfYml0ID0gMAotCi0g
ICAgICAgIGhlYWRlciA9IGNocihmaW4gPDwgNyB8IHJzdjEgPDwgNiB8IHJzdjIgPDwgNSB8IHJz
djMgPDwgNCB8IG9wY29kZSkKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkK
LSAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPD0gMTI1OgotICAgICAgICAgICAgaGVhZGVyICs9
IGNocihtYXNrX2JpdCB8IHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBlbGlmIHBheWxvYWRfbGVu
Z3RoIDwgMSA8PCAxNjoKLSAgICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCAxMjYp
ICsgc3RydWN0LnBhY2soJyFIJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsaWYgcGF5bG9h
ZF9sZW5ndGggPCAxIDw8IDYzOgotICAgICAgICAgICAgaGVhZGVyICs9IGNocihtYXNrX2JpdCB8
IDEyNykgKyBzdHJ1Y3QucGFjaygnIVEnLCBwYXlsb2FkX2xlbmd0aCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVG9vIGxvbmcgcGF5bG9hZCAoJWQgYnl0ZSkn
ICUgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBwYXlsb2Fk
ID0gc2VsZi5fbWFza19oeWJpKHBheWxvYWQpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxs
KGhlYWRlciArIHBheWxvYWQpCi0KLSAgICBkZWYgc2VuZF9iaW5hcnkoc2VsZiwgcGF5bG9hZCwg
ZW5kPVRydWUsIG1hc2s9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2VuZF9kYXRhKHBheWxvYWQsIE9Q
Q09ERV9CSU5BUlksIGVuZCwgbWFzaykKLQotICAgIGRlZiBzZW5kX3RleHQoc2VsZiwgcGF5bG9h
ZCwgZW5kPVRydWUsIG1hc2s9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2VuZF9kYXRhKHBheWxvYWQu
ZW5jb2RlKCd1dGYtOCcpLCBPUENPREVfVEVYVCwgZW5kLCBtYXNrKQotCi0gICAgZGVmIF9hc3Nl
cnRfcmVjZWl2ZV9kYXRhKHNlbGYsIHBheWxvYWQsIG9wY29kZSwgZmluLCByc3YxLCByc3YyLCBy
c3YzKToKLSAgICAgICAgKGFjdHVhbF9maW4sIGFjdHVhbF9yc3YxLCBhY3R1YWxfcnN2MiwgYWN0
dWFsX3JzdjMsIGFjdHVhbF9vcGNvZGUsCi0gICAgICAgICBwYXlsb2FkX2xlbmd0aCkgPSByZWFk
X2ZyYW1lX2hlYWRlcihzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgaWYgYWN0dWFsX29wY29kZSAh
PSBvcGNvZGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J1VuZXhwZWN0ZWQgb3Bjb2RlOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAg
ICAgICAgICAgICAgKG9wY29kZSwgYWN0dWFsX29wY29kZSkpCi0KLSAgICAgICAgaWYgYWN0dWFs
X2ZpbiAhPSBmaW46Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ1VuZXhwZWN0ZWQgZmluOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAg
ICAgICAgICAgICAgKGZpbiwgYWN0dWFsX2ZpbikpCi0KLSAgICAgICAgaWYgcnN2MSBpcyBOb25l
OgotICAgICAgICAgICAgcnN2MSA9IDAKLSAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZS5f
b3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgICAgICByc3YxID0gMQotCi0g
ICAgICAgIGlmIHJzdjIgaXMgTm9uZToKLSAgICAgICAgICAgIHJzdjIgPSAwCi0KLSAgICAgICAg
aWYgcnN2MyBpcyBOb25lOgotICAgICAgICAgICAgcnN2MyA9IDAKLQotICAgICAgICBpZiBhY3R1
YWxfcnN2MSAhPSByc3YxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUK
LSAgICAgICAgICAgICAgICAocnN2MSwgYWN0dWFsX3JzdjEpKQotCi0gICAgICAgIGlmIGFjdHVh
bF9yc3YyICE9IHJzdjI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQot
ICAgICAgICAgICAgICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCi0KLSAgICAgICAgaWYgYWN0dWFs
X3JzdjMgIT0gcnN2MzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnVW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0g
ICAgICAgICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKLQotICAgICAgICByZWNlaXZlZCA9
IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICBp
ZiBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBy
ZWNlaXZlZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocmVjZWl2ZWQpCi0K
LSAgICAgICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5bG9hZCBsZW5n
dGg6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAobGVu
KHBheWxvYWQpLCBsZW4ocmVjZWl2ZWQpKSkKLQotICAgICAgICBpZiBwYXlsb2FkICE9IHJlY2Vp
dmVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4
cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAg
ICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWQpKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Jp
bmFyeShzZWxmLCBwYXlsb2FkLCBvcGNvZGU9T1BDT0RFX0JJTkFSWSwgZmluPTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsIHJzdjI9Tm9uZSwgcnN2Mz1Ob25lKToK
LSAgICAgICAgc2VsZi5fYXNzZXJ0X3JlY2VpdmVfZGF0YShwYXlsb2FkLCBvcGNvZGUsIGZpbiwg
cnN2MSwgcnN2MiwgcnN2MykKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsIHBh
eWxvYWQsIG9wY29kZT1PUENPREVfVEVYVCwgZmluPTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnN2MT1Ob25lLCByc3YyPU5vbmUsIHJzdjM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Fz
c2VydF9yZWNlaXZlX2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCBy
c3YxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjIsIHJzdjMpCi0KLSAg
ICBkZWYgX2J1aWxkX2Nsb3NlX2ZyYW1lKHNlbGYsIGNvZGUsIHJlYXNvbiwgbWFzayk6Ci0gICAg
ICAgIGZyYW1lID0gY2hyKDEgPDwgNyB8IE9QQ09ERV9DTE9TRSkKLQotICAgICAgICBpZiBjb2Rl
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUp
ICsgcmVhc29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYm9k
eSA9ICcnCi0gICAgICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBmcmFtZSArPSBjaHIoMSA8PCA3
IHwgbGVuKGJvZHkpKSArIHNlbGYuX21hc2tfaHliaShib2R5KQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgZnJhbWUgKz0gY2hyKGxlbihib2R5KSkgKyBib2R5Ci0gICAgICAgIHJldHVybiBm
cmFtZQotCi0gICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAg
c2VsZi5fc29ja2V0LnNlbmRhbGwoCi0gICAgICAgICAgICBzZWxmLl9idWlsZF9jbG9zZV9mcmFt
ZShjb2RlLCByZWFzb24sIFRydWUpKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNl
bGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gc2VsZi5fYnVpbGRf
Y2xvc2VfZnJhbWUoY29kZSwgcmVhc29uLCBGYWxzZSkKLSAgICAgICAgYWN0dWFsX2ZyYW1lID0g
cmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihleHBlY3RlZF9mcmFtZSkpCi0gICAgICAg
IGlmIGFjdHVhbF9mcmFtZSAhPSBleHBlY3RlZF9mcmFtZToKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBjbG9zZSBmcmFtZTogJXIgKGV4
cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZF9mcmFt
ZSwgYWN0dWFsX2ZyYW1lKSkKLQotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IaXhpZTc1KG9iamVj
dCk6Ci0gICAgIiIiRnJhbWUgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZl
cnNpb24gSGl4aWUgNzUgYW5kIEh5QmkgMDAuCi0gICAgIiIiCi0KLSAgICBfQ0xPU0VfRlJBTUUg
PSAnXHhmZlx4MDAnCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCB1bnVzZWRfaGFu
ZHNoYWtlKToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICBkZWYgc2VuZF9m
cmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKLSAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmRhbGwoaGVhZGVyICsgYm9keSkKLQotICAgIGRlZiBzZW5kX2RhdGEoc2Vs
ZiwgcGF5bG9hZCwgdW51c2VkX2ZyYW1lX3R5cGVtLCB1bnVzZWRfZW5kLCB1bnVzZWRfbWFzayk6
Ci0gICAgICAgIGZyYW1lID0gJycuam9pbihbJ1x4MDAnLCBwYXlsb2FkLCAnXHhmZiddKQotICAg
ICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmcmFtZSkKLQotICAgIGRlZiBzZW5kX2JpbmFyeShz
ZWxmLCB1bnVzZWRfcGF5bG9hZCwgdW51c2VkX2VuZCwgdW51c2VkX21hc2spOgotICAgICAgICBw
YXNzCi0KLSAgICBkZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxvYWQsIHVudXNlZF9lbmQsIHVudXNl
ZF9tYXNrKToKLSAgICAgICAgZW5jb2RlZF9wYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ3V0Zi04
JykKLSAgICAgICAgZnJhbWUgPSAnJy5qb2luKFsnXHgwMCcsIGVuY29kZWRfcGF5bG9hZCwgJ1x4
ZmYnXSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZnJhbWUpCi0KLSAgICBkZWYgYXNz
ZXJ0X3JlY2VpdmVfYmluYXJ5KHNlbGYsIHBheWxvYWQsIG9wY29kZT1PUENPREVfQklOQVJZLCBm
aW49MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MCwgcnN2Mj0wLCByc3Yz
PTApOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0JpbmFyeSBmcmFtZSBpcyBub3Qgc3VwcG9y
dGVkIGluIGhpeGllNzUnKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwgcGF5
bG9hZCk6Ci0gICAgICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEp
Ci0KLSAgICAgICAgaWYgcmVjZWl2ZWQgIT0gJ1x4MDAnOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGZyYW1lIHR5cGU6ICVkIChleHBl
Y3RlZCkgdnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAoMCwgb3JkKHJlY2VpdmVk
KSkpCi0KLSAgICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgbGVu
KHBheWxvYWQpICsgMSkKLSAgICAgICAgaWYgcmVjZWl2ZWRbLTFdICE9ICdceGZmJzoKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVGVybWluYXRpb24gZXhw
ZWN0ZWQ6IDB4ZmYgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAg
IHJlY2VpdmVkKQotCi0gICAgICAgIGlmIHJlY2VpdmVkWzA6LTFdICE9IHBheWxvYWQ6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5
bG9hZDogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChw
YXlsb2FkLCByZWNlaXZlZFswOi0xXSkpCi0KLSAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjb2Rl
LCByZWFzb24pOgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9DTE9TRV9GUkFN
RSkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCB1bnVzZWRfY29kZSwgdW51
c2VkX3JlYXNvbik6Ci0gICAgICAgIGNsb3NpbmcgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tl
dCwgbGVuKHNlbGYuX0NMT1NFX0ZSQU1FKSkKLSAgICAgICAgaWYgY2xvc2luZyAhPSBzZWxmLl9D
TE9TRV9GUkFNRToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkblwndCByZWNlaXZl
IGNsb3NpbmcgaGFuZHNoYWtlJykKLQotCi1jbGFzcyBDbGllbnRPcHRpb25zKG9iamVjdCk6Ci0g
ICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIENsaWVudCBvYmplY3Qu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYudmVyc2lvbiA9IDEz
Ci0gICAgICAgIHNlbGYuc2VydmVyX2hvc3QgPSAnJwotICAgICAgICBzZWxmLm9yaWdpbiA9ICcn
Ci0gICAgICAgIHNlbGYucmVzb3VyY2UgPSAnJwotICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0g
LTEKLSAgICAgICAgc2VsZi5zb2NrZXRfdGltZW91dCA9IDEwMDAKLSAgICAgICAgc2VsZi51c2Vf
dGxzID0gRmFsc2UKLSAgICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KLSAgICAgICAgIyBFbmFi
bGUgZGVmbGF0ZS1hcHBsaWNhdGlvbi1kYXRhLgotICAgICAgICBzZWxmLnVzZV9kZWZsYXRlX2Zy
YW1lID0gRmFsc2UKLSAgICAgICAgIyBFbmFibGUgbXV4Ci0gICAgICAgIHNlbGYudXNlX211eCA9
IEZhbHNlCi0KLSAgICBkZWYgZW5hYmxlX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAgIHNl
bGYudXNlX2RlZmxhdGVfZnJhbWUgPSBUcnVlCi0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBl
bmQoX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotCi0gICAgZGVmIGVuYWJsZV9tdXgoc2VsZik6
Ci0gICAgICAgIHNlbGYudXNlX211eCA9IFRydWUKLSAgICAgICAgc2VsZi5leHRlbnNpb25zLmFw
cGVuZChfTVVYX0VYVEVOU0lPTikKLQotCi1kZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9yZXRyeSho
b3N0LCBwb3J0LCB0aW1lb3V0LCB1c2VfdGxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0cnk9MTAsIHNsZWVwX3NlYz0wLjEpOgotICAgIHJldHJ5X2NvdW50ID0gMAotICAgIHdo
aWxlIHJldHJ5X2NvdW50IDwgcmV0cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHMgPSBz
b2NrZXQuc29ja2V0KCkKLSAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAg
ICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgIGlmIHVzZV90bHM6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIF9UTFNTb2NrZXQocykKLSAgICAgICAgICAgIHJldHVybiBz
Ci0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5v
ICE9IGVycm5vLkVDT05OUkVGVVNFRDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXRyeV9jb3VudCA9IHJldHJ5X2NvdW50ICsgMQot
ICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoc2xlZXBfc2VjKQotCi0gICAgcmV0dXJuIE5vbmUK
LQotCi1jbGFzcyBDbGllbnQob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQgY2xpZW50LiIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIGhhbmRzaGFrZSwgc3RyZWFtX2NsYXNz
KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0K
LSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fc29ja2V0ID0g
Tm9uZQotCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IGhhbmRzaGFrZQotICAgICAgICBzZWxm
Ll9zdHJlYW1fY2xhc3MgPSBzdHJlYW1fY2xhc3MKLQotICAgIGRlZiBjb25uZWN0KHNlbGYpOgot
ICAgICAgICBzZWxmLl9zb2NrZXQgPSBjb25uZWN0X3NvY2tldF93aXRoX3JldHJ5KAotICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNv
Y2tldF90aW1lb3V0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykKLQot
ICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNlbGYuX3NvY2tldCkKLQotICAgICAg
ICBzZWxmLl9zdHJlYW0gPSBzZWxmLl9zdHJlYW1fY2xhc3Moc2VsZi5fc29ja2V0LCBzZWxmLl9o
YW5kc2hha2UpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJs
aXNoZWQnKQotCi0gICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKHNlbGYsIGhl
YWRlciwgYm9keSk6Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2ZyYW1lX29mX2FyYml0cmFy
eV9ieXRlcyhoZWFkZXIsIGJvZHkpCi0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UsIHJhdz1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgIG1hc2s9VHJ1ZSk6Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS5zZW5kX2JpbmFyeShtZXNzYWdlLCBlbmQsIG1hc2spCi0gICAgICAgIGVsaWYgcmF3Ogot
ICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfZGF0YShtZXNzYWdlLCBPUENPREVfVEVYVCwg
ZW5kLCBtYXNrKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRf
dGV4dChtZXNzYWdlLCBlbmQsIG1hc2spCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmUoc2VsZiwg
cGF5bG9hZCwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeShwYXlsb2FkKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX3RleHQocGF5bG9hZCkK
LQotICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGU9U1RBVFVTX05PUk1BTF9DTE9TVVJFLCBy
ZWFzb249JycpOgotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9jbG9zZShjb2RlLCByZWFzb24p
Ci0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9STUFM
X0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVjZWl2
ZV9jbG9zZShjb2RlLCByZWFzb24pCi0KLSAgICBkZWYgY2xvc2Vfc29ja2V0KHNlbGYpOgotICAg
ICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQotCi0gICAgZGVmIGFzc2VydF9jb25uZWN0aW9uX2Ns
b3NlZChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhZF9kYXRhID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICBpZiBzdHIoZSkuZmluZCgKLSAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBj
bG9zZWQgYmVmb3JlIHJlY2VpdmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcpID09IDA6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXJyb3Jf
bnVtYmVyLCBtZXNzYWdlID0gZQotICAgICAgICAgICAgICAgIGZvciBlcnJvcl9uYW1lIGluIFsn
RUNPTk5SRVNFVCcsICdXU0FFQ09OTlJFU0VUJ106Ci0gICAgICAgICAgICAgICAgICAgIGlmIChl
cnJvcl9uYW1lIGluIGRpcihlcnJubykgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cl9udW1iZXIgPT0gZ2V0YXR0cihlcnJubywgZXJyb3JfbmFtZSkpOgotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgZQotICAgICAgICAgICAgcmFpc2UgZQotCi0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ29u
bmVjdGlvbiBpcyBub3QgY2xvc2VkIChSZWFkOiAlciknICUgcmVhZF9kYXRhKQotCi0KLWRlZiBj
cmVhdGVfY2xpZW50KG9wdGlvbnMpOgotICAgIHJldHVybiBDbGllbnQoCi0gICAgICAgIG9wdGlv
bnMsIFdlYlNvY2tldEhhbmRzaGFrZShvcHRpb25zKSwgV2ViU29ja2V0U3RyZWFtKQotCi0KLWRl
ZiBjcmVhdGVfY2xpZW50X2h5YmkwMChvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAg
ICAgICBvcHRpb25zLAotICAgICAgICBXZWJTb2NrZXRIeWJpMDBIYW5kc2hha2Uob3B0aW9ucywg
JzAnKSwKLSAgICAgICAgV2ViU29ja2V0U3RyZWFtSGl4aWU3NSkKLQotCi1kZWYgY3JlYXRlX2Ns
aWVudF9oaXhpZTc1KG9wdGlvbnMpOgotICAgIHJldHVybiBDbGllbnQoCi0gICAgICAgIG9wdGlv
bnMsIFdlYlNvY2tldEhpeGllNzVIYW5kc2hha2Uob3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbUhp
eGllNzUpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L2VuZHRvZW5kX3dpdGhfZXh0ZXJuYWxfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9lbmR0b2Vu
ZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDdmODZmZGI0MTYzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9lbmR0b2VuZF93
aXRoX2V4dGVybmFsX3NlcnZlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdCBmb3Ig
ZW5kLXRvLWVuZCB3aXRoIGV4dGVybmFsIHNlcnZlci4KLQotVGhpcyB0ZXN0IGlzIG5vdCBydW4g
YnkgcnVuX2FsbC5weSBiZWNhdXNlIGl0IHJlcXVpcmVzIHNvbWUgcHJlcGFyYXRpb25zLgotSWYg
eW91IHdvdWxkIGxpa2UgdG8gcnVuIHRoaXMgdGVzdCBjb3JyZWN0bHksIGxhdW5jaCBBcGFjaGUg
d2l0aCBtb2RfcHl0aG9uCi1hbmQgbW9kX3B5d2Vic29ja2V0IG1hbnVhbGx5LiBJbiBhZGRpdGlv
biwgeW91IHNob3VsZCBwYXNzIGFsbG93X2RyYWZ0NzUgb3B0aW9uCi1hbmQgZXhhbXBsZSBwYXRo
IGFzIGhhbmRsZXJfc2NhbiBvcHRpb24gYW5kIEFwYWNoZSdzIERvY3VtZW50Um9vdC4KLSIiIgot
Ci0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHN5cwotaW1wb3J0IHRlc3QudGVzdF9lbmR0b2Vu
ZAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKLQot
Ci1jbGFzcyBFbmRUb0VuZFRlc3RXaXRoRXh0ZXJuYWxTZXJ2ZXIodGVzdC50ZXN0X2VuZHRvZW5k
LkVuZFRvRW5kVGVzdCk6Ci0gICAgcGFzcwotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1wJywgJy0tcG9ydCcsIGRlc3Q9J3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JULAotICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J2V4dGVybmFsIHRlc3Qgc2VydmVyIHBvcnQuJykKLSAgICAob3B0aW9u
cywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICB0ZXN0LnRlc3RfZW5kdG9lbmQu
X3VzZV9leHRlcm5hbF9zZXJ2ZXIgPSBUcnVlCi0gICAgdGVzdC50ZXN0X2VuZHRvZW5kLl9leHRl
cm5hbF9zZXJ2ZXJfcG9ydCA9IG9wdGlvbnMucG9ydAotCi0gICAgdW5pdHRlc3QubWFpbihhcmd2
PVtzeXMuYXJndlswXV0pCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L21vY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L21vY2sucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZiZmZjYWM0OGRjNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvbW9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi0jIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotCi0iIiJNb2NrcyBmb3IgdGVzdGluZy4KLSIiIgotCi0KLWltcG9ydCBRdWV1ZQot
aW1wb3J0IHRocmVhZGluZwotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLQotCi1jbGFz
cyBfTW9ja0Nvbm5CYXNlKG9iamVjdCk6Ci0gICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3Ig
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBj
aGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gYSAobW9jaykgbXBfY29ubi4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YSA9IFtdCi0gICAg
ICAgIHNlbGYucmVtb3RlX2FkZHIgPSAnZmFrZV9hZGRyZXNzJwotCi0gICAgZGVmIHdyaXRlKHNl
bGYsIGRhdGEpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25u
LndyaXRlLiIiIgotCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEuYXBwZW5kKGRhdGEpCi0KLSAg
ICBkZWYgd3JpdHRlbl9kYXRhKHNlbGYpOgotICAgICAgICAiIiJHZXQgYnl0ZXMgd3JpdHRlbiB0
byB0aGlzIG1vY2suIiIiCi0KLSAgICAgICAgcmV0dXJuICcnLmpvaW4oc2VsZi5fd3JpdGVfZGF0
YSkKLQotCi1jbGFzcyBNb2NrQ29ubihfTW9ja0Nvbm5CYXNlKToKLSAgICAiIiJNb2NrIGZvciBt
b2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgotCi0gICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNw
ZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKLSAgICB3
ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZWFkX2RhdGEpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGlu
c3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZWFkX2RhdGE6IGJ5dGVzIHRo
YXQgc2hvdWxkIGJlIHJldHVybmVkIHdoZW4gcmVhZCogbWV0aG9kcyBhcmUKLSAgICAgICAgICAg
IGNhbGxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgX01vY2tDb25uQmFzZS5fX2luaXRfXyhz
ZWxmKQotICAgICAgICBzZWxmLl9yZWFkX2RhdGEgPSByZWFkX2RhdGEKLSAgICAgICAgc2VsZi5f
cmVhZF9wb3MgPSAwCi0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJy
aWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZGxpbmUuIiIiCi0KLSAgICAgICAgaWYg
c2VsZi5fcmVhZF9wb3MgPj0gbGVuKHNlbGYuX3JlYWRfZGF0YSk6Ci0gICAgICAgICAgICByZXR1
cm4gJycKLSAgICAgICAgZW5kX2luZGV4ID0gc2VsZi5fcmVhZF9kYXRhLmZpbmQoJ1xuJywgc2Vs
Zi5fcmVhZF9wb3MpICsgMQotICAgICAgICBpZiBub3QgZW5kX2luZGV4OgotICAgICAgICAgICAg
ZW5kX2luZGV4ID0gbGVuKHNlbGYuX3JlYWRfZGF0YSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
YWRfdXBfdG8oZW5kX2luZGV4KQotCi0gICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAg
ICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgotCi0gICAg
ICAgIGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgotICAgICAgICAg
ICAgcmV0dXJuICcnCi0gICAgICAgIGVuZF9pbmRleCA9IG1pbihsZW4oc2VsZi5fcmVhZF9kYXRh
KSwgc2VsZi5fcmVhZF9wb3MgKyBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3Vw
X3RvKGVuZF9pbmRleCkKLQotICAgIGRlZiBfcmVhZF91cF90byhzZWxmLCBlbmRfaW5kZXgpOgot
ICAgICAgICBsaW5lID0gc2VsZi5fcmVhZF9kYXRhW3NlbGYuX3JlYWRfcG9zOmVuZF9pbmRleF0K
LSAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSBlbmRfaW5kZXgKLSAgICAgICAgcmV0dXJuIGxpbmUK
LQotCi1jbGFzcyBNb2NrQmxvY2tpbmdDb25uKF9Nb2NrQ29ubkJhc2UpOgotICAgICIiIkJsb2Nr
aW5nIG1vY2sgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCi0KLSAgICBUaGlzIGVuYWJs
ZXMgdGVzdHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBiZSByZWFkIGZyb20gYSAobW9jaykgbXBf
Y29ubiBhcwotICAgIHdlbGwgYXMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGl0LgotICAg
IENhbGxlcnMgb2YgcmVhZCogbWV0aG9kcyB3aWxsIGJsb2NrIGlmIHRoZXJlIGlzIG5vIGJ5dGVz
IGF2YWlsYWJsZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
X01vY2tDb25uQmFzZS5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVl
LlF1ZXVlKCkKLQotICAgIGRlZiByZWFkbGluZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUg
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKLSAgICAgICAgbGluZSA9ICcn
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjID0gc2VsZi5fcXVldWUuZ2V0KCkK
LSAgICAgICAgICAgIGxpbmUgKz0gYwotICAgICAgICAgICAgaWYgYyA9PSAnXG4nOgotICAgICAg
ICAgICAgICAgIHJldHVybiBsaW5lCi0KLSAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgotICAg
ICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCi0KLSAg
ICAgICAgZGF0YSA9ICcnCi0gICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKLSAg
ICAgICAgICAgIGRhdGEgKz0gc2VsZi5fcXVldWUuZ2V0KCkKLSAgICAgICAgcmV0dXJuIGRhdGEK
LQotICAgIGRlZiBwdXRfYnl0ZXMoc2VsZiwgYnl0ZXMpOgotICAgICAgICAiIiJQdXQgYnl0ZXMg
dG8gYmUgcmVhZCBmcm9tIHRoaXMgbW9jay4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
Ynl0ZXM6IGJ5dGVzIHRvIGJlIHJlYWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGZvciBieXRl
IGluIGJ5dGVzOgotICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGJ5dGUpCi0KLQotY2xhc3Mg
TW9ja1RhYmxlKGRpY3QpOgotICAgICIiIk1vY2sgdGFibGUuCi0KLSAgICBUaGlzIG1pbWljcyBt
b2RfcHl0aG9uIG1wX3RhYmxlLiBOb3RlIHRoYXQgb25seSB0aGUgbWV0aG9kcyB1c2VkIGJ5Ci0g
ICAgdGVzdHMgYXJlIG92ZXJyaWRkZW4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY29weV9mcm9tPXt9KToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShjb3B5X2Zyb20sIGRpY3Qp
OgotICAgICAgICAgICAgY29weV9mcm9tID0gY29weV9mcm9tLml0ZW1zKCkKLSAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gY29weV9mcm9tOgotICAgICAgICAgICAgc2VsZi5fX3NldGl0ZW1fXyhr
ZXksIHZhbHVlKQotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIHJl
dHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fZ2V0aXRlbV9fKGtleS5sb3dlcigpKQotCi0g
ICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBzdXBlcihNb2Nr
VGFibGUsIHNlbGYpLl9fc2V0aXRlbV9fKGtleS5sb3dlcigpLCB2YWx1ZSkKLQotICAgIGRlZiBn
ZXQoc2VsZiwga2V5LCBkZWZfdmFsdWU9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzdXBlcihNb2Nr
VGFibGUsIHNlbGYpLmdldChrZXkubG93ZXIoKSwgZGVmX3ZhbHVlKQotCi0KLWNsYXNzIE1vY2tS
ZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiTW9jayByZXF1ZXN0LgotCi0gICAgVGhpcyBtaW1pY3Mg
bW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVy
aT1Ob25lLCBoZWFkZXJzX2luPXt9LCBjb25uZWN0aW9uPU5vbmUsIG1ldGhvZD0nR0VUJywKLSAg
ICAgICAgICAgICAgICAgcHJvdG9jb2w9J0hUVFAvMS4xJywgaXNfaHR0cHM9RmFsc2UpOgotICAg
ICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJndW1lbnRzOgotICAg
ICAgICAgICAgdXJpOiBVUkkgb2YgdGhlIHJlcXVlc3QuCi0gICAgICAgICAgICBoZWFkZXJzX2lu
OiBSZXF1ZXN0IGhlYWRlcnMuCi0gICAgICAgICAgICBjb25uZWN0aW9uOiBDb25uZWN0aW9uIHVz
ZWQgZm9yIHRoZSByZXF1ZXN0LgotICAgICAgICAgICAgbWV0aG9kOiByZXF1ZXN0IG1ldGhvZC4K
LSAgICAgICAgICAgIGlzX2h0dHBzOiBXaGV0aGVyIHRoaXMgcmVxdWVzdCBpcyBvdmVyIFNTTC4K
LQotICAgICAgICBTZWUgdGhlIGRvY3VtZW50IG9mIG1vZF9weXRob24gUmVxdWVzdCBmb3IgZGV0
YWlscy4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYudXJpID0gdXJpCi0gICAgICAgIHNlbGYu
dW5wYXJzZWRfdXJpID0gdXJpCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24K
LSAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCi0gICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IE1vY2tUYWJsZShoZWFkZXJzX2luKQot
ICAgICAgICAjIHNlbGYuaXNfaHR0cHNfIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgZnJvbSB0ZXN0
cy4gIFRvIGF2b2lkIG5hbWUKLSAgICAgICAgIyBjb25mbGljdCB3aXRoIHNlbGYuaXNfaHR0cHMo
KSwgaXQgaXMgbmFtZWQgYXMgc3VjaC4KLSAgICAgICAgc2VsZi5pc19odHRwc18gPSBpc19odHRw
cwotICAgICAgICBzZWxmLndzX3N0cmVhbSA9IFN0cmVhbUhpeGllNzUoc2VsZiwgVHJ1ZSkKLSAg
ICAgICAgc2VsZi53c19jbG9zZV9jb2RlID0gTm9uZQotICAgICAgICBzZWxmLndzX2Nsb3NlX3Jl
YXNvbiA9IE5vbmUKLSAgICAgICAgc2VsZi53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlC
STAwCi0gICAgICAgIHNlbGYud3NfZGVmbGF0ZSA9IEZhbHNlCi0KLSAgICBkZWYgaXNfaHR0cHMo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoaXMgcmVxdWVzdCBpcyBvdmVyIFNT
TC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuaXNfaHR0cHNfCi0KLQotY2xhc3MgTW9ja0Rpc3Bh
dGNoZXIob2JqZWN0KToKLSAgICAiIiJNb2NrIGZvciBkaXNwYXRjaC5EaXNwYXRjaGVyLiIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFr
ZV9jYWxsZWQgPSBGYWxzZQotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25u
X2NvbnRleHQpOgotICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZV9jYWxsZWQgPSBUcnVl
Ci0KLSAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAgICBw
YXNzCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L211
eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L211eF9jbGllbnRfZm9yX3Rl
c3RpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNTQzNWE4Y2MwZS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQor
KysgL2Rldi9udWxsCkBAIC0xLDY5MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMK
LSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVz
dGluZyBtdXggZXh0ZW5zaW9uLgotCi1UaGlzIGNvZGUgc2hvdWxkIGJlIGluZGVwZW5kZW50IGZy
b20gbW9kX3B5d2Vic29ja2V0LiBTZWUgdGhlIGNvbW1lbnQgb2YKLWNsaWVudF9mb3JfdGVzdGlu
Zy5weS4KLQotTk9URTogVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCBsaWtlIGNsaWVudF9m
b3JfdGVzdGluZy5weS4KLSIiIgotCi0KLQotaW1wb3J0IFF1ZXVlCi1pbXBvcnQgYmFzZTY0Ci1p
bXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBlbWFpbAotaW1wb3J0IGVtYWlsLnBhcnNlcgotaW1w
b3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCi1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9y
dCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aHJlYWRpbmcKLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3Rp
bmcKLQotCi1fQ09OVFJPTF9DSEFOTkVMX0lEID0gMAotX0RFRkFVTFRfQ0hBTk5FTF9JRCA9IDEK
LQotX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA9IDAKLV9NVVhfT1BDT0RFX0FERF9D
SEFOTkVMX1JFU1BPTlNFID0gMQotX01VWF9PUENPREVfRkxPV19DT05UUk9MID0gMgotX01VWF9P
UENPREVfRFJPUF9DSEFOTkVMID0gMwotX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVCA9IDQK
LQotCi1jbGFzcyBfQ29udHJvbEJsb2NrOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcGNvZGUp
OgotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotCi0KLWRlZiBfcGFyc2VfaGFuZHNoYWtl
X3Jlc3BvbnNlKHJlc3BvbnNlKToKLSAgICBzdGF0dXNfbGluZSwgaGVhZGVyX2xpbmVzID0gcmVz
cG9uc2Uuc3BsaXQoJ1xyXG4nLCAxKQotCi0gICAgd29yZHMgPSBzdGF0dXNfbGluZS5zcGxpdCgn
ICcpCi0gICAgaWYgbGVuKHdvcmRzKSA8IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Jh
ZCBTdGF0dXMtTGluZSBzeW50YXggJXInICUgc3RhdHVzX2xpbmUpCi0gICAgW3ZlcnNpb24sIHJl
c3BvbnNlX2NvZGVdID0gd29yZHNbOjJdCi0gICAgaWYgdmVyc2lvbiAhPSAnSFRUUC8xLjEnOgot
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgcmVzcG9uc2UgdmVyc2lvbiAlcicgJSB2ZXJz
aW9uKQotCi0gICAgaWYgcmVzcG9uc2VfY29kZSAhPSAnMTAxJzoKLSAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignQmFkIHJlc3BvbnNlIGNvZGUgJXIgJyAlIHJlc3BvbnNlX2NvZGUpCi0gICAgaGVh
ZGVycyA9IGVtYWlsLnBhcnNlci5QYXJzZXIoKS5wYXJzZXN0cihoZWFkZXJfbGluZXMpCi0gICAg
cmV0dXJuIGhlYWRlcnMKLQotCi1kZWYgX3BhcnNlX2NoYW5uZWxfaWQoZGF0YSwgb2Zmc2V0PTAp
OgotICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAgIHJlbWFpbmluZyA9IGxlbmd0aCAtIG9mZnNl
dAotCi0gICAgaWYgcmVtYWluaW5nIDw9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm8g
Y2hhbm5lbCBpZCBmb3VuZCcpCi0KLSAgICBjaGFubmVsX2lkID0gb3JkKGRhdGFbb2Zmc2V0XSkK
LSAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDEKLSAgICBpZiBjaGFubmVsX2lkICYgMHhlMCA9PSAw
eGUwOgotICAgICAgICBpZiByZW1haW5pbmcgPCA0OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9IHN0
cnVjdC51bnBhY2soJyFMJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YVtvZmZzZXQ6b2Zmc2V0KzRdKVswXSAmIDB4MWZmZmZmZmYKLSAgICAgICAgY2hhbm5lbF9pZF9s
ZW5ndGggPSA0Ci0gICAgZWxpZiBjaGFubmVsX2lkICYgMHhjMCA9PSAweGMwOgotICAgICAgICBp
ZiByZW1haW5pbmcgPCAzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGNo
YW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9ICgoKGNoYW5uZWxfaWQgJiAw
eDFmKSA8PCAxNikgKwotICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC51bnBhY2soJyFIJywg
ZGF0YVtvZmZzZXQrMTpvZmZzZXQrM10pWzBdKQotICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9
IDMKLSAgICBlbGlmIGNoYW5uZWxfaWQgJiAweDgwID09IDB4ODA6Ci0gICAgICAgIGlmIHJlbWFp
bmluZyA8IDI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgY2hhbm5lbCBp
ZCBmb3JtYXQnKQotICAgICAgICBjaGFubmVsX2lkID0gc3RydWN0LnVucGFjaygnIUgnLCBkYXRh
W29mZnNldDpvZmZzZXQrMl0pWzBdICYgMHgzZmZmCi0gICAgICAgIGNoYW5uZWxfaWRfbGVuZ3Ro
ID0gMgotCi0gICAgcmV0dXJuIGNoYW5uZWxfaWQsIGNoYW5uZWxfaWRfbGVuZ3RoCi0KLQotZGVm
IF9wYXJzZV9udW1iZXIoZGF0YSwgb2Zmc2V0PTApOgotICAgIGZpcnN0X2J5dGUgPSBvcmQoZGF0
YVtvZmZzZXRdKQotICAgIGlmIChmaXJzdF9ieXRlICYgMHg4MCkgIT0gMDoKLSAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdUaGUgTVNCIG9mIG51bWJlciBmaWVsZCBtdXN0IGJlIHVuc2V0JykKLSAg
ICBmaXJzdF9ieXRlID0gZmlyc3RfYnl0ZSAmIDB4N2YKLSAgICBpZiBmaXJzdF9ieXRlID09IDEy
NzoKLSAgICAgICAgaWYgb2Zmc2V0ICsgOSA+IGxlbihkYXRhKToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignSW52YWxpZCBudW1iZXInKQotICAgICAgICByZXR1cm4gc3RydWN0LnVucGFj
aygnIVEnLCBkYXRhW29mZnNldCsxOm9mZnNldCs5XSlbMF0sIDkKLSAgICBpZiBmaXJzdF9ieXRl
ID09IDEyNjoKLSAgICAgICAgaWYgb2Zmc2V0ICsgMyA+IGxlbihkYXRhKToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBudW1iZXInKQotICAgICAgICByZXR1cm4gc3RydWN0
LnVucGFjaygnIUgnLCBkYXRhW29mZnNldCsxOm9mZnNldCszXSlbMF0sIDMKLSAgICByZXR1cm4g
Zmlyc3RfYnl0ZSwgMQotCi0KLWRlZiBfcGFyc2Vfc2l6ZV9hbmRfY29udGVudHMoZGF0YSwgb2Zm
c2V0PTApOgotICAgIHNpemUsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRhdGEsIG9mZnNldCkK
LSAgICBzdGFydF9wb3NpdGlvbiA9IG9mZnNldCArIGFkdmFuY2UKLSAgICBlbmRfcG9zaXRpb24g
PSBzdGFydF9wb3NpdGlvbiArIHNpemUKLSAgICBpZiBsZW4oZGF0YSkgPCBlbmRfcG9zaXRpb246
Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBzaXplIG9mIGNvbnRyb2wgYmxvY2sg
KCVkIDwgJWQpJyAlICgKLSAgICAgICAgICAgICAgICBsZW4oZGF0YSksIGVuZF9wb3NpdGlvbikp
Ci0gICAgcmV0dXJuIGRhdGFbc3RhcnRfcG9zaXRpb246ZW5kX3Bvc2l0aW9uXSwgc2l6ZSArIGFk
dmFuY2UKLQotCi1kZWYgX3BhcnNlX2NvbnRyb2xfYmxvY2tzKGRhdGEpOgotICAgIGJsb2NrcyA9
IFtdCi0gICAgbGVuZ3RoID0gbGVuKGRhdGEpCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgcG9z
IDwgbGVuZ3RoOgotICAgICAgICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbcG9zXSkKLSAgICAgICAg
cG9zICs9IDEKLSAgICAgICAgb3Bjb2RlID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAweDcKLSAgICAg
ICAgYmxvY2sgPSBfQ29udHJvbEJsb2NrKG9wY29kZSkKLQotICAgICAgICAjIFRPRE8oYmFzaGkp
OiBTdXBwb3J0IG1vcmUgb3Bjb2RlCi0gICAgICAgIGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9B
RERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgIGJsb2NrLmVuY29kZSA9IGZpcnN0X2J5
dGUgJiAzCi0gICAgICAgICAgICBibG9jay5yZWplY3RlZCA9IChmaXJzdF9ieXRlID4+IDQpICYg
MQotCi0gICAgICAgICAgICBjaGFubmVsX2lkLCBhZHZhbmNlID0gX3BhcnNlX2NoYW5uZWxfaWQo
ZGF0YSwgcG9zKQotICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAg
ICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0KLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
LCBhZHZhbmNlID0gX3BhcnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIHBvcykKLSAgICAgICAg
ICAgIGJsb2NrLmVuY29kZWRfaGFuZHNoYWtlID0gZW5jb2RlZF9oYW5kc2hha2UKLSAgICAgICAg
ICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2NrKQotICAg
ICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9EUk9QX0NIQU5ORUw6Ci0gICAgICAgICAg
ICBibG9jay5tdXhfZXJyb3IgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLQotICAgICAgICAgICAg
Y2hhbm5lbF9pZCwgYWR2YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lkKGRhdGEsIHBvcykKLSAgICAg
ICAgICAgIGJsb2NrLmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAgICAgICBwb3MgKz0g
YWR2YW5jZQotCi0gICAgICAgICAgICByZWFzb24sIGFkdmFuY2UgPSBfcGFyc2Vfc2l6ZV9hbmRf
Y29udGVudHMoZGF0YSwgcG9zKQotICAgICAgICAgICAgaWYgbGVuKHJlYXNvbikgPT0gMDoKLSAg
ICAgICAgICAgICAgICBibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAgICAgICAgICAgYmxv
Y2suZHJvcF9tZXNzYWdlID0gJycKLSAgICAgICAgICAgIGVsaWYgbGVuKHJlYXNvbikgPj0gMjoK
LSAgICAgICAgICAgICAgICBibG9jay5kcm9wX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIHJl
YXNvbls6Ml0pWzBdCi0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9tZXNzYWdlID0gcmVhc29u
WzI6XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0ludmFsaWQgRHJvcENoYW5uZWwnKQotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAg
ICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxvY2spCi0gICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhf
T1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGFkdmFuY2UgPSBf
cGFyc2VfY2hhbm5lbF9pZChkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5jaGFubmVsX2lk
ID0gY2hhbm5lbF9pZAotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIHNl
bmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRhdGEsIHBvcykKLSAgICAgICAgICAg
IGJsb2NrLnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5j
ZQotICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxpZiBvcGNvZGUg
PT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAgICAgICAgIGZhbGxiYWNrID0g
Zmlyc3RfYnl0ZSAmIDEKLSAgICAgICAgICAgIHNsb3RzLCBhZHZhbmNlID0gX3BhcnNlX251bWJl
cihkYXRhLCBwb3MpCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotICAgICAgICAgICAgc2Vu
ZF9xdW90YSwgYWR2YW5jZSA9IF9wYXJzZV9udW1iZXIoZGF0YSwgcG9zKQotICAgICAgICAgICAg
cG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIGlmIGZhbGxiYWNrID09IDEgYW5kIChzbG90cyAh
PSAwIG9yIHNlbmRfcXVvdGEgIT0gMCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdzbG90cyBhbmQgc2VuZF9xdW90YSBtdXN0IGJlIHplcm8gaWYgRiBiaXQgJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaXMgc2V0JykKLSAgICAgICAgICAgIGJsb2NrLmZhbGxi
YWNrID0gZmFsbGJhY2sKLSAgICAgICAgICAgIGJsb2NrLnNsb3RzID0gc2xvdHMKLSAgICAgICAg
ICAgIGJsb2NrLnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgICAgICBibG9ja3MuYXBw
ZW5kKGJsb2NrKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdVbnN1cHBvcnRlZCBtdXggb3Bjb2RlICVkIHJlY2VpdmVkJyAlIG9w
Y29kZSkKLQotICAgIHJldHVybiBibG9ja3MKLQotCi1kZWYgX2VuY29kZV9jaGFubmVsX2lkKGNo
YW5uZWxfaWQpOgotICAgIGlmIGNoYW5uZWxfaWQgPCAwOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdDaGFubmVsIGlkICVkIG11c3Qgbm90IGJlIG5lZ2F0aXZlJyAlIGNoYW5uZWxfaWQpCi0K
LSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiA3OgotICAgICAgICByZXR1cm4gY2hyKGNoYW5uZWxf
aWQpCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogMTQ6Ci0gICAgICAgIHJldHVybiBzdHJ1Y3Qu
cGFjaygnIUgnLCAweDgwMDAgKyBjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoq
IDIxOgotICAgICAgICBmaXJzdCA9IGNocigweGMwICsgKGNoYW5uZWxfaWQgPj4gMTYpKQotICAg
ICAgICByZXR1cm4gZmlyc3QgKyBzdHJ1Y3QucGFjaygnIUgnLCBjaGFubmVsX2lkICYgMHhmZmZm
KQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDI5OgotICAgICAgICByZXR1cm4gc3RydWN0LnBh
Y2soJyFMJywgMHhlMDAwMDAwMCArIGNoYW5uZWxfaWQpCi0KLSAgICByYWlzZSBWYWx1ZUVycm9y
KCdDaGFubmVsIGlkICVkIGlzIHRvbyBsYXJnZScgJSBjaGFubmVsX2lkKQotCi0KLWRlZiBfZW5j
b2RlX251bWJlcihudW1iZXIpOgotICAgIGlmIG51bWJlciA8PSAxMjU6Ci0gICAgICAgIHJldHVy
biBjaHIobnVtYmVyKQotICAgIGVsaWYgbnVtYmVyIDwgKDEgPDwgMTYpOgotICAgICAgICByZXR1
cm4gY2hyKDB4N2UpICsgc3RydWN0LnBhY2soJyFIJywgbnVtYmVyKQotICAgIGVsaWYgbnVtYmVy
IDwgKDEgPDwgNjMpOgotICAgICAgICByZXR1cm4gY2hyKDB4N2YpICsgc3RydWN0LnBhY2soJyFR
JywgbnVtYmVyKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBu
dW1iZXInKQotCi0KLWRlZiBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3QoY2hhbm5lbF9pZCwg
ZW5jb2RlZF9oYW5kc2hha2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29k
aW5nPTApOgotICAgIGxlbmd0aCA9IGxlbihlbmNvZGVkX2hhbmRzaGFrZSkKLSAgICBoYW5kc2hh
a2VfbGVuZ3RoID0gX2VuY29kZV9udW1iZXIobGVuZ3RoKQotCi0gICAgZmlyc3RfYnl0ZSA9IChf
TVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNUIDw8IDUpIHwgZW5jb2RpbmcKLSAgICByZXR1
cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCi0g
ICAgICAgICAgICBoYW5kc2hha2VfbGVuZ3RoICsgZW5jb2RlZF9oYW5kc2hha2UpCi0KLQotZGVm
IF9jcmVhdGVfZmxvd19jb250cm9sKGNoYW5uZWxfaWQsIHJlcGxlbmlzaGVkX3F1b3RhKToKLSAg
ICBmaXJzdF9ieXRlID0gKF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1KQotICAgIHJldHVy
biAoY2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsKLSAg
ICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkKLQotCi1jbGFzcyBf
TXV4UmVhZGVyVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIk11eCByZWFkZXIgdGhy
ZWFkLgotCi0gICAgUmVhZHMgZnJhbWVzIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgbXV4IGNsaWVu
dC4gVGhpcyB0aHJlYWQgYWNjZXNzZXMKLSAgICBwcml2YXRlIGZ1bmN0aW9ucy92YXJpYWJsZXMg
b2YgdGhlIG11eCBjbGllbnQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4
KToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxm
LnNldERhZW1vbihUcnVlKQotICAgICAgICBzZWxmLl9tdXggPSBtdXgKLSAgICAgICAgc2VsZi5f
c3RvcF9yZXF1ZXN0ZWQgPSBGYWxzZQotCi0gICAgZGVmIF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIGZpcnN0X29wY29kZSA9IE5vbmUKLSAgICAgICAgcGVuZGluZ19wYXlsb2FkID0g
W10KLSAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAg
ZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoID0gKAotICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5yZWFkX2ZyYW1lX2hlYWRlcihzZWxmLl9tdXgu
X3NvY2tldCkpCi0KLSAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9vcGNvZGU6Ci0gICAgICAgICAg
ICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVDoKLSAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhIHRleHQgbWVzc2FnZSBv
biBwaHlzaWNhbCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29ubmVj
dGlvbicpCi0gICAgICAgICAgICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1JlY2VpdmVkIGFuIGludGVybWVkaWF0ZSBmcmFtZSBidXQgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2ZyYWdtZW50YXRpb24gd2FzIG5vdCBzdGFydGVkJykKLSAgICAg
ICAgICAgICAgICBpZiAob3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQklOQVJZ
IG9yCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BD
T0RFX1BPTkcgb3IKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVz
dGluZy5PUENPREVfUE9ORyBvcgotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gY2xpZW50
X2Zvcl90ZXN0aW5nLk9QQ09ERV9DTE9TRSk6Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0X29w
Y29kZSA9IG9wY29kZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2ZWQgYW4gdW5kZWZpbmVkIG9wY29kZSBmcmFtZTogJWQn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSkKLQotICAgICAg
ICAgICAgZWxpZiBvcGNvZGUgIT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9DT05USU5VQVRJ
T046Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhIG5ldyBvcGNv
ZGUgYmVmb3JlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1pbmF0aW5n
IGZyYWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBwYXlsb2FkID0gY2xpZW50X2Zvcl90ZXN0
aW5nLnJlY2VpdmVfYnl0ZXMoCi0gICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9zb2NrZXQsIHBh
eWxvYWRfbGVuZ3RoKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9tdXguX2luY29taW5nX2ZyYW1l
X2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fbXV4
Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHBheWxvYWQpCi0KLSAgICAgICAgICAgIHBl
bmRpbmdfcGF5bG9hZC5hcHBlbmQocGF5bG9hZCkKLQotICAgICAgICAgICAgaWYgZmluOgotICAg
ICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0g
ICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotCi0gICAgICAgIG1lc3NhZ2UgPSAnJy5qb2lu
KHBlbmRpbmdfcGF5bG9hZCkKLSAgICAgICAgcmV0dXJuIGZpcnN0X29wY29kZSwgbWVzc2FnZQot
Ci0gICAgZGVmIHJlcXVlc3Rfc3RvcChzZWxmKToKLSAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0
ZWQgPSBUcnVlCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICAgICAgIyBvcGNv
ZGUgaXMgT1BDT0RFX0JJTkFSWSBvciBjb250cm9sIG9wY29kZXMgd2hlbiBhIG1lc3NhZ2UKLSAg
ICAgICAgICAgICAgICAjIGlzIHN1Y2Nlc2Z1bGx5IHJlY2VpdmVkLgotICAgICAgICAgICAgICAg
IG9wY29kZSwgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IG9wY29kZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAg
ICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQklOQVJZOgotICAg
ICAgICAgICAgICAgICAgICBjaGFubmVsX2lkLCBhZHZhbmNlID0gX3BhcnNlX2NoYW5uZWxfaWQo
bWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9kaXNwYXRjaF9mcmFtZShj
aGFubmVsX2lkLCBtZXNzYWdlW2FkdmFuY2U6XSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9tdXguX3Byb2Nlc3NfY29udHJvbF9tZXNzYWdlKG9wY29k
ZSwgbWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX211eC5fbm90
aWZ5X3JlYWRlcl9kb25lKCkKLQotCi1jbGFzcyBfSW5uZXJGcmFtZShvYmplY3QpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZCk6
Ci0gICAgICAgIHNlbGYuZmluID0gZmluCi0gICAgICAgIHNlbGYucnN2MSA9IHJzdjEKLSAgICAg
ICAgc2VsZi5yc3YyID0gcnN2MgotICAgICAgICBzZWxmLnJzdjMgPSByc3YzCi0gICAgICAgIHNl
bGYub3Bjb2RlID0gb3Bjb2RlCi0gICAgICAgIHNlbGYucGF5bG9hZCA9IHBheWxvYWQKLQotCi1j
bGFzcyBfTG9naWNhbENoYW5uZWxEYXRhKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBzZWxmLnF1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBzZWxmLnNlbmRf
cXVvdGEgPSAwCi0gICAgICAgIHNlbGYucmVjZWl2ZV9xdW90YSA9IDAKLQotCi1jbGFzcyBNdXhD
bGllbnQob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQgbXV4IGNsaWVudC4KLQotICAgIE5vdGUg
dGhhdCB0aGlzIGNsYXNzIGlzIE5PVCB0aHJlYWQtc2FmZS4gRG8gbm90IGFjY2VzcyBhbiBpbnN0
YW5jZSBvZiB0aGlzCi0gICAgY2xhc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGF0IGEgc2FtZSB0
aW1lLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9vcHRpb25zLmVuYWJsZV9tdXgo
KQotICAgICAgICBzZWxmLl9zdHJlYW0gPSBOb25lCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5v
bmUKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gY2xpZW50X2Zvcl90ZXN0aW5nLldlYlNvY2tl
dEhhbmRzaGFrZShzZWxmLl9vcHRpb25zKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9m
aWx0ZXIgPSBOb25lCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IE5vbmUK
LQotICAgICAgICBzZWxmLl9pc19hY3RpdmUgPSBGYWxzZQotICAgICAgICBzZWxmLl9yZWFkX3Ro
cmVhZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3NfY29uZGl0aW9uID0gdGhy
ZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzID0gW10KLSAg
ICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKLSAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCk7
Ci0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMgPSB7fQotICAgICAgICBzZWxmLl90aW1l
b3V0ID0gMgotICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50ID0g
Tm9uZQotICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX21lc3NhZ2UgPSBO
b25lCi0KLSAgICBkZWYgX3BhcnNlX2lubmVyX2ZyYW1lKHNlbGYsIGRhdGEpOgotICAgICAgICBp
ZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBl
bmNhcHN1bGF0ZWQgZnJhbWUgcmVjZWl2ZWQnKQotCi0gICAgICAgIGZpcnN0X2J5dGUgPSBvcmQo
ZGF0YVswXSkKLSAgICAgICAgZmluID0gKGZpcnN0X2J5dGUgPDwgNykgJiAxCi0gICAgICAgIHJz
djEgPSAoZmlyc3RfYnl0ZSA8PCA2KSAmIDEKLSAgICAgICAgcnN2MiA9IChmaXJzdF9ieXRlIDw8
IDUpICYgMQotICAgICAgICByc3YzID0gKGZpcnN0X2J5dGUgPDwgNCkgJiAxCi0gICAgICAgIG9w
Y29kZSA9IGZpcnN0X2J5dGUgJiAweGYKLQotICAgICAgICBpZiBzZWxmLl9vdXRnb2luZ19mcmFt
ZV9maWx0ZXI6Ci0gICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyLmZpbHRlcigKLSAgICAgICAgICAgICAgICBkYXRhWzE6XSkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHBheWxvYWQgPSBkYXRhWzE6XQotCi0gICAgICAgIHJldHVybiBfSW5uZXJGcmFt
ZShmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBfcHJv
Y2Vzc19tdXhfY29udHJvbF9ibG9ja3Moc2VsZik6Ci0gICAgICAgIGZvciBibG9jayBpbiBzZWxm
Ll9jb250cm9sX2Jsb2NrczoKLSAgICAgICAgICAgIGlmIGJsb2NrLm9wY29kZSA9PSBfTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICAjIEFkZENoYW5uZWxS
ZXNwb25zZSB3aWxsIGJlIGhhbmRsZWQgaW4gYWRkX2NoYW5uZWwoKS4KLSAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVf
RkxPV19DT05UUk9MOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAg
ICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgZmxvdyBj
b250cm9sIHJlY2VpdmVkIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NoYW5uZWwgaWQgJWQnICUgYmxvY2suY2hhbm5lbF9pZCkKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXS5zZW5kX3F1b3Rh
ICs9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnNlbmRfcXVvdGEpCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgpCi0g
ICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICBlbGlmIGJsb2NrLm9w
Y29kZSA9PSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UOgotICAgICAgICAgICAgICAgIHNl
bGYuX2NoYW5uZWxfc2xvdHMuZXh0ZW5kKFtibG9jay5zZW5kX3F1b3RhXSAqIGJsb2NrLnNsb3Rz
KQotCi0gICAgZGVmIF9kaXNwYXRjaF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBwYXlsb2FkKToK
LSAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5h
Y3F1aXJlKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2NrcyArPSBfcGFyc2Vf
Y29udHJvbF9ibG9ja3MocGF5bG9hZCkKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX211
eF9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3Nf
Y29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAg
IHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBp
biBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1JlY2VpdmVkIGxvZ2ljYWwgZnJhbWUgb24gY2hhbm5lbCBpZCAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQsIHdoaWNoIGlzIG5vdCBlc3RhYmxpc2hlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCkKLQotICAg
ICAgICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5fcGFyc2VfaW5uZXJfZnJhbWUocGF5bG9h
ZCkKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnJl
Y2VpdmVfcXVvdGEgLT0gKAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGlubmVyX2ZyYW1l
LnBheWxvYWQpKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hh
bm5lbF9pZF0ucmVjZWl2ZV9xdW90YSA8IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignVGhlIHNlcnZlciB2aW9sYXRlcyBxdW90YSBvbiAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY2hhbm5lbCBpZCAlZCcgJSBjaGFubmVsX2lkKQotICAgICAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2Nv
bmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hh
bm5lbF9pZF0ucXVldWUucHV0KGlubmVyX2ZyYW1lKQotCi0gICAgZGVmIF9wcm9jZXNzX2NvbnRy
b2xfbWVzc2FnZShzZWxmLCBvcGNvZGUsIG1lc3NhZ2UpOgotICAgICAgICAjIFBpbmcvUG9uZyBh
cmUgbm90IHN1cHBvcnRlZC4KLSAgICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGlu
Zy5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Ns
b3NlX21lc3NhZ2UgPSBtZXNzYWdlCi0gICAgICAgICAgICBpZiBzZWxmLl9pc19hY3RpdmU6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfY2xvc2UoCi0gICAgICAgICAgICAgICAg
ICAgIGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29u
PScnKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfdGhyZWFkLnJlcXVlc3Rfc3RvcCgpCi0K
LSAgICAgICAgICAgIGlmIHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQ6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudC5zZXQo
KQotCi0gICAgZGVmIF9ub3RpZnlfcmVhZGVyX2RvbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnUmVhZCB0aHJlYWQgdGVybWluYXRlZC4nKQotICAgICAgICBzZWxmLmNsb3Nl
X3NvY2tldCgpCi0KLSAgICBkZWYgX2Fzc2VydF9jaGFubmVsX3Nsb3RfYXZhaWxhYmxlKHNlbGYp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRp
b24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBsZW4oc2VsZi5fY2hhbm5lbF9zbG90cykgPT0g
MDoKLSAgICAgICAgICAgICAgICAjIFdhaXQgb25jZQotICAgICAgICAgICAgICAgIHNlbGYuX2Nv
bnRyb2xfYmxvY2tzX2NvbmRpdGlvbi53YWl0KHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgICAgICBpZiBsZW4oc2VsZi5fY2hhbm5lbF9zbG90cykgPT0gMDoKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJlY2VpdmUgTmV3Q2hhbm5lbFNs
b3QnKQotCi0gICAgZGVmIF9hc3NlcnRfc2VuZF9xdW90YV9hdmFpbGFibGUoc2VsZiwgY2hhbm5l
bF9pZCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNf
Y29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5fbG9naWNhbF9jaGFubmVs
c1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhID09IDA6Ci0gICAgICAgICAgICAgICAgIyBXYWl0IG9u
Y2UKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi53YWl0
KHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgIGlmIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9PSAwOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmVjZWl2ZSBGbG93Q29udHJvbCBmb3Ig
Y2hhbm5lbCBpZCAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQp
Ci0KLSAgICBkZWYgY29ubmVjdChzZWxmKToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gY2xpZW50
X2Zvcl90ZXN0aW5nLmNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoCi0gICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVv
dXQsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKQotCi0gICAgICAgIHNl
bGYuX2hhbmRzaGFrZS5oYW5kc2hha2Uoc2VsZi5fc29ja2V0KQotICAgICAgICBzZWxmLl9zdHJl
YW0gPSBjbGllbnRfZm9yX3Rlc3RpbmcuV2ViU29ja2V0U3RyZWFtKAotICAgICAgICAgICAgc2Vs
Zi5fc29ja2V0LCBzZWxmLl9oYW5kc2hha2UpCi0KLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFu
bmVsc1tfREVGQVVMVF9DSEFOTkVMX0lEXSA9IF9Mb2dpY2FsQ2hhbm5lbERhdGEoKQotCi0gICAg
ICAgIHNlbGYuX3JlYWRfdGhyZWFkID0gX011eFJlYWRlclRocmVhZChzZWxmKQotICAgICAgICBz
ZWxmLl9yZWFkX3RocmVhZC5zdGFydCgpCi0KLSAgICAgICAgc2VsZi5fYXNzZXJ0X2NoYW5uZWxf
c2xvdF9hdmFpbGFibGUoKQotICAgICAgICBzZWxmLl9hc3NlcnRfc2VuZF9xdW90YV9hdmFpbGFi
bGUoX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLQotICAgICAgICBzZWxmLl9pc19hY3RpdmUgPSBUcnVl
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKLQot
ICAgIGRlZiBhZGRfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkLCBvcHRpb25zKToKLSAgICAgICAg
aWYgbm90IHNlbGYuX2lzX2FjdGl2ZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTXV4
IGNsaWVudCBpcyBub3QgYWN0aXZlJykKLQotICAgICAgICBpZiBjaGFubmVsX2lkIGluIHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0NoYW5uZWwg
aWQgJWQgYWxyZWFkeSBleGlzdHMnICUgY2hhbm5lbF9pZCkKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZW5kX3F1b3RhID0gc2VsZi5fY2hhbm5lbF9zbG90cy5wb3BsZWZ0KCkKLSAgICAg
ICAgZXhjZXB0IEluZGV4RXJyb3IsIGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05v
IGNoYW5uZWwgc2xvdHM6ICVyJyAlIGUpCi0KLSAgICAgICAgIyBDcmVhdGUgQWRkQ2hhbm5lbCBy
ZXF1ZXN0Ci0gICAgICAgIHJlcXVlc3RfbGluZSA9ICdHRVQgJXMgSFRUUC8xLjFcclxuJyAlIG9w
dGlvbnMucmVzb3VyY2UKLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAgaWYgb3B0aW9ucy5z
ZXJ2ZXJfcG9ydCA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuREVGQVVMVF9QT1JUOgotICAgICAgICAg
ICAgZmllbGRzLmFwcGVuZCgnSG9zdDogJXNcclxuJyAlIG9wdGlvbnMuc2VydmVyX2hvc3QubG93
ZXIoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ0hvc3Q6ICVz
OiVkXHJcbicgJSAob3B0aW9ucy5zZXJ2ZXJfaG9zdC5sb3dlcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNlcnZlcl9wb3J0KSkKLSAg
ICAgICAgZmllbGRzLmFwcGVuZCgnT3JpZ2luOiAlc1xyXG4nICUgb3B0aW9ucy5vcmlnaW4ubG93
ZXIoKSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nKQot
Ci0gICAgICAgIGlmIGxlbihvcHRpb25zLmV4dGVuc2lvbnMpID4gMDoKLSAgICAgICAgICAgIGZp
ZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogJXNcclxuJyAlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICcsICcuam9pbihvcHRpb25zLmV4dGVuc2lvbnMpKQotCi0gICAg
ICAgIGhhbmRzaGFrZSA9IHJlcXVlc3RfbGluZSArICcnLmpvaW4oZmllbGRzKSArICdcclxuJwot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
KAotICAgICAgICAgICAgY2hhbm5lbF9pZCwgaGFuZHNoYWtlKQotICAgICAgICBwYXlsb2FkID0g
X2VuY29kZV9jaGFubmVsX2lkKF9DT05UUk9MX0NIQU5ORUxfSUQpICsgYWRkX2NoYW5uZWxfcmVx
dWVzdAotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5bG9hZCkKLQotICAgICAg
ICAjIFdhaXQgQWRkQ2hhbm5lbFJlc3BvbnNlCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
V2FpdGluZyBBZGRDaGFubmVsUmVzcG9uc2UgZm9yIHRoZSByZXF1ZXN0Li4uJykKLSAgICAgICAg
cmVzcG9uc2UgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xf
YmxvY2tzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICAgICAgICAgZm9yIGJsb2NrIGluIHNlbGYuX2NvbnRyb2xfYmxvY2tzOgotICAgICAgICAg
ICAgICAgICAgICBpZiBibG9jay5vcGNvZGUgIT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVT
UE9OU0U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAg
ICAgICBpZiBibG9jay5jaGFubmVsX2lkID09IGNoYW5uZWxfaWQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IGJsb2NrCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9j
b250cm9sX2Jsb2Nrcy5yZW1vdmUocmVzcG9uc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhawotICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlOgotICAgICAgICAgICAgICAgICAgICBi
cmVhawotICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi53YWl0
KHNlbGYuX3RpbWVvdXQpCi0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2FjdGl2ZToK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdBZGRDaGFubmVsUmVxdWVzdCB0
aW1lZCBvdXQnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29udHJvbF9i
bG9ja3NfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgICMgVmFsaWRhdGUgQWRkQ2hhbm5l
bFJlc3BvbnNlCi0gICAgICAgIGlmIHJlc3BvbnNlLnJlamVjdGVkOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdUaGUgc2VydmVyIHJlamVjdGVkIEFkZENoYW5uZWxSZXF1ZXN0JykKLQot
ICAgICAgICBmaWVsZHMgPSBfcGFyc2VfaGFuZHNoYWtlX3Jlc3BvbnNlKHJlc3BvbnNlLmVuY29k
ZWRfaGFuZHNoYWtlKQotCi0gICAgICAgICMgU2hvdWxkIHdlIHJlamVjdCB3aGVuIFVwZ3JhZGUs
IENvbm5lY3Rpb24sIG9yIFNlYy1XZWJTb2NrZXQtQWNjZXB0Ci0gICAgICAgICMgaGVhZGVycyBl
eGlzdD8KLQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJl
KCkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXSA9IF9Mb2dpY2Fs
Q2hhbm5lbERhdGEoKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRd
LnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNf
Y29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnTG9naWNh
bCBjaGFubmVsICVkIGVzdGFibGlzaGVkJyAlIGNoYW5uZWxfaWQpCi0KLSAgICBkZWYgX2NoZWNr
X2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgIGlm
IG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011eCBj
bGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAgICAgaWYgbm90IGNoYW5uZWxfaWQgaW4gc2Vs
Zi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTG9naWNh
bCBjaGFubmVsICVkIGlzIG5vdCBlc3RhYmxpc2hlZC4nKQotCi0gICAgZGVmIGRyb3BfY2hhbm5l
bChzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgIyBUT0RPKGJhc2hpKTogSW1wbGVtZW50Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBzZW5kX2Zsb3dfY29udHJvbChzZWxmLCBjaGFubmVsX2lk
LCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5l
bF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpCi0gICAgICAgIHBheWxv
YWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBmbG93X2NvbnRy
b2wKLSAgICAgICAgIyBSZXBsZW5pc2ggcmVjZWl2ZSBxdW90YQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0ucmVjZWl2ZV9xdW90YSAr
PSAoCi0gICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGEpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkK
LSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KHBheWxvYWQpCi0KLSAgICBkZWYgc2Vu
ZF9tZXNzYWdlKHNlbGYsIGNoYW5uZWxfaWQsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFs
c2UpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5u
ZWxfaWQpCi0KLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgZmlyc3RfYnl0ZSA9IChl
bmQgPDwgNykgfCBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgZmlyc3RfYnl0ZSA9IChlbmQgPDwgNykgfCBjbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRm
LTgnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNf
Y29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5fbG9naWNhbF9jaGFubmVs
c1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhIDwgbGVuKG1lc3NhZ2UpOgotICAgICAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignU2VuZCBxdW90YSB2aW9sYXRpb246ICVkIDwgJWQnICUgKAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5z
ZW5kX3F1b3RhLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG1lc3NhZ2UpKSkKLQotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhIC09
IGxlbihtZXNzYWdlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgIHBheWxvYWQgPSBfZW5jb2Rl
X2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKyBjaHIoZmlyc3RfYnl0ZSkgKyBtZXNzYWdlCi0gICAg
ICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFyeShwYXlsb2FkKQotCi0gICAgZGVmIGFzc2VydF9y
ZWNlaXZlKHNlbGYsIGNoYW5uZWxfaWQsIHBheWxvYWQsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAg
IHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNbY2hhbm5lbF9pZF0ucXVldWUuZ2V0KAotICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5f
dGltZW91dCkKLSAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5LCBlOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdDYW5ub3QgcmVjZWl2ZSBtZXNzYWdlIGZyb20gY2hhbm5lbCBpZCAlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQpCi0KLSAgICAgICAgaWYg
YmluYXJ5OgotICAgICAgICAgICAgb3Bjb2RlID0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9C
SU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wY29kZSA9IGNsaWVudF9mb3JfdGVz
dGluZy5PUENPREVfVEVYVAotCi0gICAgICAgIGlmIGlubmVyX2ZyYW1lLm9wY29kZSAhPSBvcGNv
ZGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgb3Bjb2RlIHJlY2Vp
dmVkICglciAhPSAlciknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWRf
b3Bjb2RlLCBpbm5lcl9mcmFtZS5vcGNvZGUpKQotCi0gICAgICAgIGlmIGlubmVyX2ZyYW1lLnBh
eWxvYWQgIT0gcGF5bG9hZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3Rl
ZCBwYXlsb2FkIHJlY2VpdmVkJykKLQotICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNoYW5uZWxf
aWQsIGNvZGU9Tm9uZSwgcmVhc29uPScnKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNhbF9j
aGFubmVsX2lzX29wZW5lZChjaGFubmVsX2lkKQotCi0gICAgICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFzb24u
ZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBib2R5ID0gJycKLQot
ICAgICAgICBmaXJzdF9ieXRlID0gKDEgPDwgNykgfCBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X0NMT1NFCi0gICAgICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkg
KyBjaHIoZmlyc3RfYnl0ZSkgKyBib2R5Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFy
eShwYXlsb2FkKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNoYW5uZWxf
aWQpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5u
ZWxfaWQpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5uZXJfZnJhbWUgPSBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLmdldCgKLSAgICAgICAgICAgICAgICB0
aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eSwgZToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2VpdmUgbWVzc2FnZSBmcm9tIGNo
YW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lkKQot
ICAgICAgICBpZiBpbm5lcl9mcmFtZS5vcGNvZGUgIT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9DTE9TRToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkblwndCByZWNlaXZlIGNs
b3NlIGZyYW1lJykKLQotICAgIGRlZiBzZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2Uoc2Vs
ZiwgY29kZT1Ob25lLCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0
aW9uX2Nsb3NlX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgc2VsZi5fc3RyZWFt
LnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAgIyBUaGlzIG1ldGhvZCBjYW4gYmUgdXNl
ZCBvbmx5IGFmdGVyIGNhbGxpbmcKLSAgICAjIHNlbmRfcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9z
ZSgpLgotICAgIGRlZiBhc3NlcnRfcGh5c2ljYWxfY29ubmVjdGlvbl9yZWNlaXZlX2Nsb3NlKAot
ICAgICAgICBzZWxmLCBjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfTk9STUFMX0NMT1NV
UkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgIHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2Vf
ZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGlmIChub3Qgc2VsZi5f
cGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudC5pc1NldCgpIG9yCi0gICAgICAgICAgICBu
b3Qgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlKToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignRGlkblwndCByZWNlaXZlIGNsb3NpbmcgaGFuZHNoYWtlJykKLQot
ICAgIGRlZiBjbG9zZV9zb2NrZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2lzX2FjdGl2ZSA9IEZh
bHNlCi0gICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3J1bl9hbGwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3J1bl9hbGwucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgwYTVkODdkODM4Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvcnVuX2FsbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiUnVuIGFsbCB0ZXN0cyBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLVRoaXMgc3VpdGUgaXMgZXhwZWN0ZWQgdG8gYmUgcnVu
IHVuZGVyIHB5d2Vic29ja2V0J3Mgc3JjIGRpcmVjdG9yeSwgaS5lLiB0aGUKLWRpcmVjdG9yeSBj
b250YWluaW5nIG1vZF9weXdlYnNvY2tldCwgdGVzdCwgZXRjLgotCi1UbyBjaGFuZ2UgbG9nZ2lu
IGxldmVsLCBwbGVhc2Ugc3BlY2lmeSAtLWxvZy1sZXZlbCBvcHRpb24uCi0gICAgcHl0aG9uIHRl
c3QvcnVuX3Rlc3QucHkgLS1sb2ctbGV2ZWwgZGVidWcKLQotVG8gcGFzcyBhbnkgb3B0aW9uIHRv
IHVuaXR0ZXN0IG1vZHVsZSwgcGxlYXNlIHNwZWNpZnkgb3B0aW9ucyBhZnRlciAnLS0nLiBGb3IK
LWV4YW1wbGUsIHJ1biB0aGlzIGZvciBtYWtpbmcgdGhlIHRlc3QgcnVubmVyIHZlcmJvc2UuCi0g
ICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkgLS1sb2ctbGV2ZWwgZGVidWcgLS0gLXYKLSIiIgot
Ci0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJl
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1fVEVTVF9NT0RVTEVfUEFUVEVSTiA9
IHJlLmNvbXBpbGUocideKHRlc3RfLispXC5weSQnKQotCi0KLWRlZiBfbGlzdF90ZXN0X21vZHVs
ZXMoZGlyZWN0b3J5KToKLSAgICBtb2R1bGVfbmFtZXMgPSBbXQotICAgIGZvciBmaWxlbmFtZSBp
biBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6Ci0gICAgICAgIG1hdGNoID0gX1RFU1RfTU9EVUxFX1BB
VFRFUk4uc2VhcmNoKGZpbGVuYW1lKQotICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIG1v
ZHVsZV9uYW1lcy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkpCi0gICAgcmV0dXJuIG1vZHVsZV9uYW1l
cwotCi0KLWRlZiBfc3VpdGUoKToKLSAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkK
LSAgICByZXR1cm4gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcygKLSAgICAgICAgICAgIF9saXN0
X3Rlc3RfbW9kdWxlcyhvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICcu
JykpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLCAn
LS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dhcm5pbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGNo
b2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyaXRpY2FsJ10pCi0gICAgb3B0aW9ucywgYXJn
cyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAotICAgICAg
ICAgICAgbGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIo
KSksCi0gICAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKXMgJShhc2N0aW1lKXMgJwotICAg
ICAgICAgICAgICAgICAgICclKGZpbGVuYW1lKXM6JShsaW5lbm8pZF0gJwotICAgICAgICAgICAg
ICAgICAgICclKG1lc3NhZ2UpcycsCi0gICAgICAgICAgICBkYXRlZm10PSclSDolTTolUycpCi0g
ICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nX3N1aXRlJywgYXJndj1bc3lzLmFyZ3ZbMF1d
ICsgYXJncykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3Qvc2V0X3N5c19wYXRoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9zZXRfc3lzX3BhdGgucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYzZkYjllYTRkMy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiQ29uZmlndXJhdGlvbiBmb3IgdGVzdGluZy4K
LQotVGVzdCBmaWxlcyBzaG91bGQgaW1wb3J0IHRoaXMgbW9kdWxlIGJlZm9yZSBtb2RfcHl3ZWJz
b2NrZXQuCi0iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIEFkZCB0aGUgcGFy
ZW50IGRpcmVjdG9yeSB0byBzeXMucGF0aCB0byBlbmFibGUgaW1wb3J0aW5nIG1vZF9weXdlYnNv
Y2tldC4KLXN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2Zp
bGVfXylbMF0sICcuLicpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2Rpc3BhdGNo
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2EzZDRmM2FlMWQuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwyODggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJUZXN0cyBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgotCi0KLWltcG9ydCBvcwot
aW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRo
IHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgZGlzcGF0Y2gKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UK
LWZyb20gdGVzdCBpbXBvcnQgbW9jawotCi0KLV9URVNUX0hBTkRMRVJTX0RJUiA9IG9zLnBhdGgu
am9pbigKLSAgICAgICAgb3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScsICdo
YW5kbGVycycpCi0KLV9URVNUX0hBTkRMRVJTX1NVQl9ESVIgPSBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJykKLQotCi1jbGFzcyBEaXNwYXRjaGVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgotCi0g
ICAgZGVmIHRlc3Rfbm9ybWFsaXplX3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwob3MucGF0aC5hYnNwYXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnL2EvYicpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywg
Jy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgo
J1xcYVxcYicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnL2Ev
YicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRj
aC5fbm9ybWFsaXplX3BhdGgoJy9hL2MvLi4vYicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG9zLnBhdGguYWJzcGF0aCgnYWJjJykucmVwbGFjZSgnXFwnLCAnLycpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnYWJjJykpCi0KLSAgICBkZWYg
dGVzdF9jb252ZXJ0ZXIoc2VsZik6Ci0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVh
dGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJy9hL2InKQotICAgICAgICAjIFB5dGhvbiBi
dWlsdCBieSBNU0MgaW5zZXJ0cyBhIGRyaXZlIG5hbWUgbGlrZSAnQzpcJyB2aWEgcmVhbHBhdGgo
KS4KLSAgICAgICAgIyBDb252ZXJ0ZXIgR2VuZXJhdG9yIGV4cGFuZHMgcHJvdmlkZWQgcGF0aCB1
c2luZyByZWFscGF0aCgpIGFuZCB1c2VzCi0gICAgICAgICMgdGhlIHBhdGggaW5jbHVkaW5nIGEg
ZHJpdmUgbmFtZSB0byB2ZXJpZnkgdGhlIHByZWZpeC4KLSAgICAgICAgb3Nfcm9vdCA9IG9zLnBh
dGgucmVhbHBhdGgoJy8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRl
cihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
Yy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2MvaF93c2gucHknKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaC5weScpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGNvbnZlcnRlcignYS9iL2hfd3NoLnB5JykpCi0K
LSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2Nv
bnZlcnRlcignYS9iJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIo
ZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKAotICAgICAgICAgICAgJ2EvYi9oX3dzaC5weScpKSkK
LQotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2Vf
Y29udmVydGVyKCcvYS9iLy8vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252
ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnL2gnLCBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKAotICAgICAgICAgICAg
Jy9hL2IvLi4vYi9oX3dzaC5weScpKSkKLQotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5f
Y3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKAotICAgICAgICAgICAgJy9hLy4uL2Ev
Yi8uLi9iLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jv
b3QgKyAnYS9iL2hfd3NoLnB5JykpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2Ny
ZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihyJ1xhXGInKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgcidhXGJcaF93c2gucHknKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYS9iL2hf
d3NoLnB5JykpCi0KLSAgICBkZWYgdGVzdF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKHNl
bGYpOgotICAgICAgICBwYXRocyA9IGxpc3QoCi0gICAgICAgICAgICBkaXNwYXRjaC5fZW51bWVy
YXRlX2hhbmRsZXJfZmlsZV9wYXRocyhfVEVTVF9IQU5ETEVSU19ESVIpKQotICAgICAgICBwYXRo
cy5zb3J0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBsZW4ocGF0aHMpKQotICAgICAg
ICBleHBlY3RlZF9wYXRocyA9IFsKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnYWJvcnRfYnlfdXNlcl93c2gucHknKSwKLSAgICAgICAgICAgICAgICBv
cy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3NoLnB5JyksCi0gICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ29yaWdpbl9jaGVja193
c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElS
LCAnc3ViJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbl9pbl90cmFu
c2Zlcl93c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExF
UlNfRElSLCAnc3ViJywgJ25vbl9jYWxsYWJsZV93c2gucHknKSwKLSAgICAgICAgICAgICAgICBv
cy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAot
ICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkn
KSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gu
cHknKSwKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGlu
IHppcChleHBlY3RlZF9wYXRocywgcGF0aHMpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgYWN0dWFsKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX2hhbmRsZXJfZmlsZShz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBkaXNwYXRjaC5E
aXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoRXhj
ZXB0aW9uLCBkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSwgJ2RlZicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24s
IGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnMS8wJykKLSAgICAgICAgc2VsZi5mYWls
VW5sZXNzKGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlKAotICAgICAgICAgICAgICAgICdk
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6cGFzc1xuJwotICAgICAg
ICAgICAgICAgICdkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOnBhc3Ncbicp
KQotCi0gICAgZGVmIHRlc3Rfc291cmNlX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICBkaXNwYXRj
aGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAg
ICAgIHdhcm5pbmdzID0gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICB3YXJu
aW5ncy5zb3J0KCkKLSAgICAgICAgZXhwZWN0ZWRfd2FybmluZ3MgPSBbCi0gICAgICAgICAgICAg
ICAgKG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBf
VEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSkgKwotICAgICAgICAgICAgICAgICAn
OiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKLSAgICAg
ICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAg
ICAgICAgIF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5Jykp
ICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMg
bm90IGNhbGxhYmxlLicpLAotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBh
dGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywg
J3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JykpICsKLSAgICAgICAgICAgICAgICAgJzogd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAg
ICAgICAgKG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAg
ICBfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLCAnd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScp
KSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBpcyBub3Qg
ZGVmaW5lZC4nKSwKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDQsIGxlbih3YXJuaW5ncykpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChl
eHBlY3RlZF93YXJuaW5ncywgd2FybmluZ3MpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRlZiB0ZXN0X2RvX2V4dHJhX2hhbmRzaGFrZShz
ZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFO
RExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0g
ICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKLSAgICAgICAgcmVx
dWVzdC53c19vcmlnaW4gPSAnaHR0cDovL2V4YW1wbGUuY29tJwotICAgICAgICBkaXNwYXRjaGVy
LmRvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KSAgIyBNdXN0IG5vdCByYWlzZSBleGNlcHRpb24u
Ci0KLSAgICAgICAgcmVxdWVzdC53c19vcmlnaW4gPSAnaHR0cDovL2JhZC5leGFtcGxlLmNvbScK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnQ291bGQgbm90IGNhdGNoIEhhbmRzaGFr
ZUV4Y2VwdGlvbiB3aXRoIDQwMyBzdGF0dXMnKQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkhh
bmRzaGFrZUV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQwMywg
ZS5zdGF0dXMpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxm
LmZhaWwoJ1VuZXhwZWN0ZWQgZXhjZXB0aW9uOiAlcicgJSBlKQotCi0gICAgZGVmIHRlc3RfYWJv
cnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2gu
RGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIHJlcXVlc3QgPSBt
b2NrLk1vY2tSZXF1ZXN0KCkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvYWJvcnRf
YnlfdXNlcicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkFib3J0ZWRCeVVz
ZXJFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0
cmFfaGFuZHNoYWtlLCByZXF1ZXN0KQotCi0gICAgZGVmIHRlc3RfdHJhbnNmZXJfZGF0YShzZWxm
KToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExF
UlNfRElSLCBOb25lKQotCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5l
Y3Rpb249bW9jay5Nb2NrQ29ubignXHhmZlx4MDAnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNv
dXJjZSA9ICcvb3JpZ2luX2NoZWNrJwotICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3Ax
JwotICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5f
Y2hlY2ssIHAxJwotICAgICAgICAgICAgICAgICAgICAgICAgICdceGZmXHgwMCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29u
bignXHhmZlx4MDAnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWlu
JwotICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQotICAgICAgICBkaXNwYXRjaGVy
LnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3ViL3Bs
YWluX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4sIE5vbmUnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9j
a1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCdceGZmXHgwMCcpKQotICAgICAgICBy
ZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4/JwotICAgICAgICByZXF1ZXN0LndzX3By
b3RvY29sID0gTm9uZQotICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9y
IC9zdWIvcGxhaW4/LCBOb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICdceGZmXHgwMCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpKQotCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9j
ay5Nb2NrQ29ubignXHhmZlx4MDAnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcv
c3ViL3BsYWluP3E9dicKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKLSAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluP3E9diwgTm9u
ZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0
ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxlcihzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9
IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICBm
b3IgcmVzb3VyY2UgaW4gWycvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICcvc3ViL25vX3dzaF9hdF90aGVfZW5kJywgJy9kb2VzL25vdC9leGlz
dCddOgotICAgICAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1t
b2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSByZXNv
dXJjZQotICAgICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMicKLSAgICAgICAgICAg
IHRyeToKLSAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkK
LSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQotICAgICAgICAgICAgZXhjZXB0IGRpc3BhdGNo
LkRpc3BhdGNoRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyhz
dHIoZSkuZmluZCgnTm8gaGFuZGxlcicpICE9IC0xKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbjoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQotCi0gICAgZGVmIHRlc3RfdHJhbnNm
ZXJfZGF0YV9oYW5kbGVyX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRp
c3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJycpKQotICAg
ICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJwot
ICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AzJwotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgICAgIHNlbGYu
ZmFpbCgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLmZh
aWxVbmxlc3Moc3RyKGUpLmZpbmQoJ0ludGVudGlvbmFsJykgIT0gLTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZXhjZXB0aW9uOiAlcycgJSBlKQotCi0gICAgZGVm
IHRlc3RfYWJvcnRfdHJhbnNmZXJfZGF0YShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRp
c3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAn
L2Fib3J0X2J5X3VzZXInCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9y
dGVkQnlVc2VyRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVy
LnRyYW5zZmVyX2RhdGEsIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9zY2FuX2RpcihzZWxmKToK
LSAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBO
b25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRl
X21hcCkpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5f
aGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAg
ICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXAp
Ci0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApCi0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXIoc2VsZik6Ci0gICAgICAgIGRp
c3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgX1RFU1RfSEFORExF
UlNfU1VCX0RJUikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxJZignL29yaWdpbl9jaGVjaycgaW4gZGlz
cC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAg
ICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9t
YXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCi0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9vdChzZWxmKToK
LSAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfU1VCX0RJ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfU1VC
X0RJUikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0
ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxJZignL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbElmKCcvc3ViL2V4Y2VwdGlvbl9pbl90
cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbElm
KCcvc3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5m
YWlsVW5sZXNzKCcvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRl
X21hcCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKCcvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJf
c3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9kaXJfbXVzdF91bmRlcl9yb290KHNlbGYp
OgotICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaGVyKCdhL2InLCAnYS9iL2MnKSAgIyBPSwotICAg
ICAgICBkaXNwYXRjaC5EaXNwYXRjaGVyKCdhL2IvLy8nLCAnYS9iJykgICMgT0sKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIsICdhL2IvYycsICdhL2InKQotCi0g
ICAgZGVmIHRlc3RfcmVzb3VyY2VfcGF0aF9hbGlhcyhzZWxmKToKLSAgICAgICAgZGlzcCA9IGRp
c3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICBkaXNw
LmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKCcvJywgJy9vcmlnaW5fY2hlY2snKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDUsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCi0gICAgICAg
IHNlbGYuZmFpbFVubGVzcygnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9t
YXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlv
bl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYu
ZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAg
ICAgIHNlbGYuZmFpbFVubGVzcygnLycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzLCAnL2FsaWFz
JywgJy9ub3QtZXhpc3QnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5p
dHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZW5kdG9lbmQucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNWNmNjE1NzM5MS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDc1MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIs
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0KLSIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25l
LnB5IGJ5IGRlZmF1bHQuIFlvdQotY2FuIGFsc28gdGVzdCBtb2RfcHl3ZWJzb2NrZXQgaG9zdGVk
IG9uIGFuIEFwYWNoZSBzZXJ2ZXIgYnkgc2V0dGluZwotX3VzZV9leHRlcm5hbF9zZXJ2ZXIgdG8g
VHJ1ZSBhbmQgbW9kaWZ5aW5nIF9leHRlcm5hbF9zZXJ2ZXJfcG9ydCB0byBwb2ludCB0bwotdGhl
IHBvcnQgb24gd2hpY2ggdGhlIEFwYWNoZSBzZXJ2ZXIgaXMgcnVubmluZy4KLSIiIgotCi0KLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzb2NrZXQKLWlt
cG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0
Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2Rf
cHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIHRlc3QgaW1wb3J0IGNsaWVudF9mb3JfdGVzdGlu
ZwotZnJvbSB0ZXN0IGltcG9ydCBtdXhfY2xpZW50X2Zvcl90ZXN0aW5nCi0KLQotIyBTcGVjaWFs
IG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xvc2luZyBoYW5k
c2hha2UKLV9HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKLQotX1NFUlZFUl9XQVJNVVBfSU5f
U0VDID0gMC4yCi0KLSMgSWYgeW91IHdhbnQgdG8gdXNlIGV4dGVybmFsIHNlcnZlciB0byBydW4g
ZW5kIHRvIGVuZCB0ZXN0cywgc2V0IGZvbGxvd2luZwotIyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4K
LV91c2VfZXh0ZXJuYWxfc2VydmVyID0gRmFsc2UKLV9leHRlcm5hbF9zZXJ2ZXJfcG9ydCA9IDAK
LQotCi0jIFRlc3QgYm9keSBmdW5jdGlvbnMKLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmUoY2xp
ZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0
ZXN0JykKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rlc3QnKQotICAgIGNsaWVudC5zZW5k
X21lc3NhZ2UoJ2hlbGxvd29ybGQnKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgnaGVsbG93
b3JsZCcpCi0KLSAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNl
aXZlX2Nsb3NlKCkKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0K
LWRlZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9iaW5hcnkoY2xpZW50KToKLSAgICBjbGll
bnQuY29ubmVjdCgpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdiaW5hcnknLCBiaW5hcnk9
VHJ1ZSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQot
ICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ1x4MDBceDgwXHhmZVx4ZmZceDAwXHg4MCcsIGJpbmFy
eT1UcnVlKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgnXHgwMFx4ODBceGZlXHhmZlx4MDBc
eDgwJywgYmluYXJ5PVRydWUpCi0KLSAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgY2xpZW50
LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9j
bG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKGNsaWVu
dCk6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVz
dCcpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0JykKLQotICAgIGNsaWVudC5zZW5k
X21lc3NhZ2UoX0dPT0RCWUVfTUVTU0FHRSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoX0dP
T0RCWUVfTUVTU0FHRSkKLQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0gICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQotCi0gICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3Nl
ZCgpCi0KLQotZGVmIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbihj
bGllbnQsIGNvZGUsIHJlYXNvbik6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50
LnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9z
ZShjb2RlLCByZWFzb24pCi0KLSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkK
LQotCi1kZWYgX3VubWFza2VkX2ZyYW1lX2NoZWNrX3Byb2NlZHVyZShjbGllbnQpOgotICAgIGNs
aWVudC5jb25uZWN0KCkKLQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rlc3QnLCBtYXNrPUZh
bHNlKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjbGllbnRfZm9yX3Rlc3Rpbmcu
U1RBVFVTX1BST1RPQ09MX0VSUk9SLCAnJykKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlv
bl9jbG9zZWQoKQotCi0KLWRlZiBfbXV4X2VjaG9fY2hlY2tfcHJvY2VkdXJlKG11eF9jbGllbnQp
OgotICAgIG11eF9jbGllbnQuY29ubmVjdCgpCi0gICAgbXV4X2NsaWVudC5zZW5kX2Zsb3dfY29u
dHJvbCgxLCAxMDI0KQotCi0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMgPSBjbGllbnRfZm9y
X3Rlc3RpbmcuQ2xpZW50T3B0aW9ucygpCi0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMuc2Vy
dmVyX2hvc3QgPSAnbG9jYWxob3N0JwotICAgIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zLnNlcnZl
cl9wb3J0ID0gODAKLSAgICBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDov
L2xvY2FsaG9zdCcKLSAgICBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNo
bycKLSAgICBtdXhfY2xpZW50LmFkZF9jaGFubmVsKDIsIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25z
KQotICAgIG11eF9jbGllbnQuc2VuZF9mbG93X2NvbnRyb2woMiwgMTAyNCkKLQotICAgIG11eF9j
bGllbnQuc2VuZF9tZXNzYWdlKDIsICd0ZXN0JykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNl
aXZlKDIsICd0ZXN0JykKLQotICAgIG11eF9jbGllbnQuYWRkX2NoYW5uZWwoMywgbG9naWNhbF9j
aGFubmVsX29wdGlvbnMpCi0gICAgbXV4X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgzLCAxMDI0
KQotCi0gICAgbXV4X2NsaWVudC5zZW5kX21lc3NhZ2UoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xp
ZW50LnNlbmRfbWVzc2FnZSgzLCAnd29ybGQnKQotICAgIG11eF9jbGllbnQuYXNzZXJ0X3JlY2Vp
dmUoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDMsICd3b3JsZCcp
Ci0KLSAgICAjIERvbid0IHNlbmQgY2xvc2UgbWVzc2FnZSBvbiBjaGFubmVsIGlkIDEgc28gdGhh
dCBzZXJ2ZXItaW5pdGlhdGVkCi0gICAgIyBjbG9zaW5nIGhhbmRzaGFrZSB3b24ndCBvY2N1ci4K
LSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2UoMikKLSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2Uo
MykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKDIpCi0gICAgbXV4X2NsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgzKQotCi0gICAgbXV4X2NsaWVudC5zZW5kX3BoeXNpY2Fs
X2Nvbm5lY3Rpb25fY2xvc2UoKQotICAgIG11eF9jbGllbnQuYXNzZXJ0X3BoeXNpY2FsX2Nvbm5l
Y3Rpb25fcmVjZWl2ZV9jbG9zZSgpCi0KLQotY2xhc3MgRW5kVG9FbmRUZXN0QmFzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgIiIiQmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB0aGF0
IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCi0gICAgc2VydmVyIGFzIGEgc2VwYXJhdGUg
cHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUgY2xpZW50X2Zvcl90ZXN0aW5nCi0gICAg
bW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBiZWhhdmVzIGNvcnJlY3RseSBieSBleGNo
YW5naW5nIG9wZW5pbmcKLSAgICBoYW5kc2hha2UgYW5kIGZyYW1lcyBvdmVyIGEgVENQIGNvbm5l
Y3Rpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2Vy
dmVyX3N0ZGVyciA9IE5vbmUKLSAgICAgICAgc2VsZi50b3BfZGlyID0gb3MucGF0aC5qb2luKG9z
LnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLi4nKQotICAgICAgICBvcy5wdXRlbnYoJ1BZVEhP
TlBBVEgnLCBvcy5wYXRoLnBhdGhzZXAuam9pbihzeXMucGF0aCkpCi0gICAgICAgIHNlbGYuc3Rh
bmRhbG9uZV9jb21tYW5kID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgc2VsZi50b3BfZGly
LCAnbW9kX3B5d2Vic29ja2V0JywgJ3N0YW5kYWxvbmUucHknKQotICAgICAgICBzZWxmLmRvY3Vt
ZW50X3Jvb3QgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScpCi0gICAgICAg
IHMgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgcy5iaW5kKCgnbG9jYWxob3N0JywgMCkpCi0g
ICAgICAgIChfLCBzZWxmLnRlc3RfcG9ydCkgPSBzLmdldHNvY2tuYW1lKCkKLSAgICAgICAgcy5j
bG9zZSgpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGNsaWVudF9mb3JfdGVzdGluZy5DbGll
bnRPcHRpb25zKCkKLSAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCA9ICdsb2NhbGhv
c3QnCi0gICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luID0gJ2h0dHA6Ly9sb2NhbGhvc3QnCi0g
ICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2VjaG8nCi0KLSAgICAgICAgIyBUT0RP
KHRveW9zaGltKTogRWxpbWluYXRlIGxhdW5jaGluZyBhIHN0YW5kYWxvbmUgc2VydmVyIG9uIHVz
aW5nCi0gICAgICAgICMgZXh0ZXJuYWwgc2VydmVyLgotCi0gICAgICAgIGlmIF91c2VfZXh0ZXJu
YWxfc2VydmVyOgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IF9leHRl
cm5hbF9zZXJ2ZXJfcG9ydAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfcG9ydCA9IHNlbGYudGVzdF9wb3J0Ci0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBV
c2UgdGVhckRvd24gdG8ga2lsbCB0aGUgc2VydmVyLgotCi0gICAgZGVmIF9ydW5fcHl0aG9uX2Nv
bW1hbmQoc2VsZiwgY29tbWFuZGxpbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSk6Ci0gICAg
ICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZV0gKyBjb21tYW5kbGlu
ZSwgY2xvc2VfZmRzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91
dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIpCi0KLSAgICBkZWYgX3J1bl9zZXJ2ZXIoc2VsZik6Ci0g
ICAgICAgIGFyZ3MgPSBbc2VsZi5zdGFuZGFsb25lX2NvbW1hbmQsCi0gICAgICAgICAgICAgICAg
Jy1IJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAgJy1WJywgJ2xvY2FsaG9zdCcsCi0g
ICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYudGVzdF9wb3J0KSwKLSAgICAgICAgICAgICAg
ICAnLVAnLCBzdHIoc2VsZi50ZXN0X3BvcnQpLAotICAgICAgICAgICAgICAgICctZCcsIHNlbGYu
ZG9jdW1lbnRfcm9vdF0KLQotICAgICAgICAjIEluaGVyaXQgdGhlIGxldmVsIHNldCB0byB0aGUg
cm9vdCBsb2dnZXIgYnkgdGVzdCBydW5uZXIuCi0gICAgICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoKQotICAgICAgICBsb2dfbGV2ZWwgPSByb290X2xvZ2dlci5nZXRFZmZlY3Rp
dmVMZXZlbCgpCi0gICAgICAgIGlmIGxvZ19sZXZlbCAhPSBsb2dnaW5nLk5PVFNFVDoKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCctLWxvZy1sZXZlbCcpCi0gICAgICAgICAgICBhcmdzLmFwcGVu
ZChsb2dnaW5nLmdldExldmVsTmFtZShsb2dfbGV2ZWwpLmxvd2VyKCkpCi0KLSAgICAgICAgcmV0
dXJuIHNlbGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zZWxmLnNlcnZlcl9zdGRlcnIpCi0KLSAgICBkZWYg
X2tpbGxfcHJvY2VzcyhzZWxmLCBwaWQpOgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCd3
aW4zMicsICdjeWd3aW4nKToKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbCgKLSAgICAgICAg
ICAgICAgICAoJ3Rhc2traWxsLmV4ZScsICcvZicsICcvcGlkJywgc3RyKHBpZCkpLCBjbG9zZV9m
ZHM9VHJ1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwu
U0lHS0lMTCkKLQotCi1jbGFzcyBFbmRUb0VuZEh5QmlUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgot
ICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxm
KQotCi0gICAgZGVmIF9ydW5fdGVzdF93aXRoX2NsaWVudF9vcHRpb25zKHNlbGYsIHRlc3RfZnVu
Y3Rpb24sIG9wdGlvbnMpOgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogYWRkIHNvbWUgbG9naWMg
dG8gcG9sbCB0aGUgc2VydmVyIHVudGlsIGl0Ci0gICAgICAgICAgICAjIGJlY29tZXMgcmVhZHkK
LSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAg
ICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQot
ICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0
KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2
ZXIucGlkKQotCi0gICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAg
ICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxm
Ll9vcHRpb25zKQotCi0gICAgZGVmIF9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KHNlbGYsIHRlc3Rf
ZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5hYmxlX2RlZmxhdGVfZnJhbWUoKQotICAgICAgICAg
ICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9u
cykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3Nv
Y2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Mo
c2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAg
ICAgICAgICAgc2VsZiwgb2ZmZXIsIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pOgot
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMuZXh0ZW5zaW9ucyArPSBvZmZlcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUgPSByZXNwb25zZV9jaGVja2VyCi0gICAgICAgICAg
ICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25z
KQotCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQot
Ci0gICAgICAgICAgICAgICAgaWYgdGVzdF9mdW5jdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0KLSAgICAgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX2Ns
b3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbiwgY29kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29u
KToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAg
ICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25z
KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50
LCBjb2RlLCByZWFzb24pCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNs
aWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5f
a2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBkZWYgX3J1bl9odHRwX2ZhbGxiYWNrX3Rl
c3Qoc2VsZiwgb3B0aW9ucywgc3RhdHVzKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3Nl
cnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJN
VVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3Jl
YXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNs
aWVudC5jb25uZWN0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRj
aCBIdHRwU3RhdHVzRXhjZXB0aW9uJykKLSAgICAgICAgICAgIGV4Y2VwdCBjbGllbnRfZm9yX3Rl
c3RpbmcuSHR0cFN0YXR1c0V4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl
OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ2F0Y2ggdW5leHBlY3RlZCBleGNlcHRpb24n
KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29j
a2V0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2Vzcyhz
ZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9ydW5fbXV4X3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6
Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAg
Y2xpZW50ID0gbXV4X2NsaWVudF9mb3JfdGVzdGluZy5NdXhDbGllbnQoc2VsZi5fb3B0aW9ucykK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkK
LSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tl
dCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2Vy
dmVyLnBpZCkKLQotICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90
ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fYmluYXJ5KHNl
bGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9i
aW5hcnkpCi0KLSAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxmKToKLSAgICAgICAg
c2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKLQotICAg
IGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChf
dW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQotCi0gICAgZGVmIHRlc3RfZWNob19kZWZs
YXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KF9l
Y2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fZGVmbGF0ZV9mcmFtZV9z
ZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl9kZWZsYXRlX2ZyYW1lX3Rlc3Qo
Ci0gICAgICAgICAgICBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKQotCi0gICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRo
ZSBzcGVjLgotICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9ICdceGYyXHg0OFx4Y2RceGM5
XHhjOVx4MDdceDAwJwotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAg
ICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBj
bGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9
MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAg
ICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9j
aGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVz
c2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9y
dW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdl
LWRlZmxhdGUnXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAg
ICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90d29fZnJhbWVzKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQp
OgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAg
ICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJc
eDQ4XHhjZCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
VEVYVCwKLSAgICAgICAgICAgICAgICAgICAgZW5kPUZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAg
ICAgICAgICAgICAgICdceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0u
YXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNk
XHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAg
ICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9y
ZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIp
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBh
cmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1l
dGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCi0gICAg
ICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0
aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2Vz
KHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAg
IyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNsaWVudC5fc3Ry
ZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5
XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDAwXHgxMVx4MDBc
eDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4
Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAg
ICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAg
ICAgICAgICAgICAnXHhmMlx4MDBceDExXHgwMFx4MDAnLAotICAgICAgICAgICAgICAgICAgICBv
cGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2No
ZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNz
YWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1
bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZSddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAg
ICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZs
YXRlX3R3b19tc2dzX3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBk
ZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxl
cyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAg
ICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAg
ICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgK
LSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDAwXHgxMVx4MDBceDAwJywKLSAgICAgICAgICAg
ICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAg
ICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9i
aW5hcnkoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAw
JywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
VEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9z
dHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4
NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGll
bnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkK
LQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFz
c2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJh
bWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbKCdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1
bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInXSwKLSAgICAgICAgICAgICAgICBy
ZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBk
ZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV9wcmVmZXJlbmNlKHNlbGYpOgotICAgICAg
ICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFt
cGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4
NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRf
ZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAg
ICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAg
ICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9i
aW5hcnkoCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAg
ICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQot
ICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYg
cmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUnXSwKLSAgICAgICAgICAgICAgICBy
ZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBk
ZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6Ci0g
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9ICdc
eGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJwotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0u
c2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAg
ICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNl
aXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAg
ICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9z
ZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAg
IGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdl
dF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90
ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dp
bmRvd19iaXRzPTEwOyAnCi0gICAgICAgICAgICAgICAgICdzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAg
ICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRl
X3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNw
b25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQotCi0gICAgICAgIHNl
bGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1l
c3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAwJ10sCi0gICAgICAg
ICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9u
KQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF9iYWRfc2VydmVy
X21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50
KToKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFy
YW1ldGVyKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBhY2NlcHRh
bmNlIG9mIHBlcm1lc3NhZ2UtZGVmbGF0ZScpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKLSAgICAgICAgICAgICAgICByZXNwb25z
ZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVz
dF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX3VuZGVmaW5lZF9wYXJhbWV0ZXIoc2VsZik6
Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQu
c2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQot
Ci0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxh
dGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAg
ICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgZm9vPWJhciddLAotICAgICAgICAgICAg
ICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQot
ICAgIGRlZiB0ZXN0X2VjaG9fY2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb24oc2VsZik6Ci0gICAg
ICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJwotICAgICAgICBzZWxmLl9ydW5f
Y2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKLSAgICAgICAgICAgIF9lY2hvX2NoZWNr
X3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgMzMzMywgJ3N1bnN1bnN1bnN1bicpCi0K
LSAgICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfZW1wdHlfYm9keShzZWxmKToKLSAgICAgICAg
c2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvY2xvc2UnCi0gICAgICAgIHNlbGYuX3J1bl9jbG9z
ZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KAotICAgICAgICAgICAgX2VjaG9fY2hlY2tfcHJv
Y2VkdXJlX3dpdGhfY29kZV9hbmRfcmVhc29uLCBOb25lLCAnJykKLQotICAgIGRlZiB0ZXN0X211
eF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fbXV4X3Rlc3QoX211eF9lY2hvX2NoZWNr
X3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX3Byb3RvY29sX2Vycm9yKHNlbGYp
OgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3
aXRoIHByb3RvY29sIGVycm9yIHN0YXR1cwotICAgICAgICBjb2RlIHdoZW4gdGhlIGNsaWVudCBz
ZW5kcyBkYXRhIHdpdGggc29tZSBwcm90b2NvbCBlcnJvci4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0
KCkKLQotICAgICAgICAgICAgIyBJbnRlcm1lZGlhdGUgZnJhbWUgd2l0aG91dCBhbnkgcHJlY2Vk
aW5nIHN0YXJ0IG9mIGZyYWdtZW50YXRpb24KLSAgICAgICAgICAgICMgZnJhbWUuCi0gICAgICAg
ICAgICBjbGllbnQuc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoJ1x4ODBceDgwJywgJycp
Ci0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCi0gICAgICAgICAgICAg
ICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9UT0NPTF9FUlJPUikKLQotICAgICAgICBz
ZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5z
dXBwb3J0ZWRfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIHNlcnZlciBz
ZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBwb3J0ZWQgb3BlcmF0aW9uCi0gICAgICAgIHN0
YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBkYXRhIGFza2luZyBzb21lIG9wZXJhdGlv
biB0aGF0IGlzCi0gICAgICAgIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNs
aWVudC5jb25uZWN0KCkKLQotICAgICAgICAgICAgIyBUZXh0IGZyYW1lIHdpdGggUlNWMyBiaXQg
cmFpc2VkLgotICAgICAgICAgICAgY2xpZW50LnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVz
KCdceDkxXHg4MCcsICcnKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3Nl
KAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfVU5TVVBQT1JURURf
REFUQSkKLQotICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVm
IHRlc3RfY2xvc2Vfb25faW52YWxpZF9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgdGhh
dCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnZhbGlkIGZyYW1lIHBheWxv
YWQKLSAgICAgICAgZGF0YSBzdGF0dXMgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgYW4gaW52
YWxpZCBmcmFtZSBsaWtlIGNvbnRhaW5pbmcKLSAgICAgICAgaW52YWxpZCBVVEYtOCBjaGFyYWN0
ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0g
ICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICAgICAgICAgICMgVGV4dCBmcmFtZSB3
aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgotICAgICAgICAgICAgY2xpZW50LnNlbmRfbWVzc2Fn
ZSgnXHg4MCcsIHJhdz1UcnVlKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfSU5WQUxJRF9G
UkFNRV9QQVlMT0FEX0RBVEEpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlv
bikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX2ludGVybmFsX2VuZHBvaW50X2Vycm9yKHNlbGYp
OgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3
aXRoIGludGVybmFsIGVuZHBvaW50Ci0gICAgICAgIGVycm9yIHN0YXR1cyBjb2RlIHdoZW4gdGhl
IGhhbmRsZXIgZG9lcyBiYWQgb3BlcmF0aW9uLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxm
Ll9vcHRpb25zLnJlc291cmNlID0gJy9pbnRlcm5hbF9lcnJvcicKLQotICAgICAgICBkZWYgdGVz
dF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotICAgICAg
ICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVu
dF9mb3JfdGVzdGluZy5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IpCi0KLSAgICAgICAg
c2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgICMgVE9ETyh0b3lvc2hpbSk6IEFk
ZCB0ZXN0cyB0byB2ZXJpZnkgaW52YWxpZCBhYnNvbHV0ZSB1cmkgaGFuZGxpbmcgbGlrZQotICAg
ICMgaG9zdCB1bm1hdGNoLCBwb3J0IHVubWF0Y2ggYW5kIGludmFsaWQgcG9ydCBkZXNjcmlwdGlv
biAoJzonIHdpdGhvdXQgcG9ydAotICAgICMgbnVtYmVyKS4KLQotICAgIGRlZiB0ZXN0X2Fic29s
dXRlX3VyaShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgYWJzb2x1dGUgdXJpIHJlcXVlc3QuIiIi
Ci0KLSAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgb3B0aW9ucy5yZXNv
dXJjZSA9ICd3czovL2xvY2FsaG9zdDolZC9lY2hvJyAlIG9wdGlvbnMuc2VydmVyX3BvcnQKLSAg
ICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhfZWNob19jaGVja19wcm9j
ZWR1cmUsIG9wdGlvbnMpCi0KLSAgICBkZWYgdGVzdF9vcmlnaW5fY2hlY2soc2VsZik6Ci0gICAg
ICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gb3JpZ2luIGNoZWNrIGZhaWwuIiIiCi0KLSAg
ICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgb3B0aW9ucy5yZXNvdXJjZSA9
ICcvb3JpZ2luX2NoZWNrJwotICAgICAgICAjIFNlcnZlciBzaG93cyB3YXJuaW5nIG1lc3NhZ2Ug
Zm9yIGh0dHAgNDAzIGZhbGxiYWNrLiBUaGlzIHdhcm5pbmcKLSAgICAgICAgIyBtZXNzYWdlIGlz
IGNvbmZ1c2luZy4gRm9sbG93aW5nIHBpcGUgZGlzcG9zZXMgd2FybmluZyBtZXNzYWdlcy4KLSAg
ICAgICAgc2VsZi5zZXJ2ZXJfc3RkZXJyID0gc3VicHJvY2Vzcy5QSVBFCi0gICAgICAgIHNlbGYu
X3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAzKQotCi0gICAgZGVmIHRlc3RfdmVy
c2lvbl9jaGVjayhzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgaHR0cCBmYWxsYmFjayBvbiB2ZXJz
aW9uIGNoZWNrIGZhaWwuIiIiCi0KLSAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAg
ICAgICAgb3B0aW9ucy52ZXJzaW9uID0gOTkKLSAgICAgICAgc2VsZi5fcnVuX2h0dHBfZmFsbGJh
Y2tfdGVzdChvcHRpb25zLCA0MDApCi0KLQotY2xhc3MgRW5kVG9FbmRIeUJpMDBUZXN0KEVuZFRv
RW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgRW5kVG9FbmRUZXN0
QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9u
KToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAg
ICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudF9oeWJpMDAoc2VsZi5f
b3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9u
KGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNs
b3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3By
b2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6Ci0gICAgICAgIHNl
bGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9f
c2VydmVyX2Nsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9nb29kYnllKQotCi0KLWNsYXNzIEVuZFRvRW5kVGVzdFdpdGhFY2hvQ2xp
ZW50KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgRW5k
VG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9jaGVja19leGFtcGxlX2VjaG9f
Y2xpZW50X3Jlc3VsdCgKLSAgICAgICAgc2VsZiwgZXhwZWN0ZWQsIHN0ZG91dGRhdGEsIHN0ZGVy
cmRhdGEpOgotICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRmLTgiKQotICAg
ICAgICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1VuZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBjbGllbnQ6ICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0dWFsKSkKLSAgICAgICAgaWYgc3Rk
ZXJyZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkKLQotICAgIGRlZiB0ZXN0X2V4YW1w
bGVfZWNob19jbGllbnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIGVjaG9fY2xp
ZW50LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2VydmVyLiIiIgotCi0gICAgICAgIHNl
cnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1l
LnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50X2NvbW1h
bmQgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgc2VsZi50b3BfZGlyLCAnZXhhbXBs
ZScsICdlY2hvX2NsaWVudC5weScpCi0KLSAgICAgICAgICAgICMgRXhwZWN0ZWQgb3V0cHV0IGZv
ciB0aGUgZGVmYXVsdCBtZXNzYWdlcy4KLSAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24g
PSAoJ1NlbmQ6IEhlbGxvXG4nICdSZWN2OiBIZWxsb1xuJwotICAgICAgICAgICAgICAgIHUnU2Vu
ZDogXHU2NWU1XHU2NzJjXG4nIHUnUmVjdjogXHU2NWU1XHU2NzJjXG4nCi0gICAgICAgICAgICAg
ICAgJ1NlbmQgY2xvc2VcbicgJ1JlY3YgYWNrXG4nKQotCi0gICAgICAgICAgICBhcmdzID0gW2Ns
aWVudF9jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAnLXAnLCBzdHIoc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfcG9ydCldCi0gICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2Nv
bW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHN0ZG91dGRh
dGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgc2VsZi5f
Y2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRfZXhwZWN0YXRpb24sIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpCi0KLSAgICAgICAgICAg
ICMgUHJvY2VzcyBhIGJpZyBtZXNzYWdlIGZvciB3aGljaCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0
aCBpcyB1c2VkLgotICAgICAgICAgICAgIyBUbyBoYW5kbGUgZXh0ZW5kZWQgcGF5bG9hZCBsZW5n
dGgsIHdzX3ZlcnNpb24gYXR0cmlidXRlIHdpbGwgYmUKLSAgICAgICAgICAgICMgYWNjZXNzZWQu
IFRoaXMgdGVzdCBjaGVja3MgdGhhdCB3c192ZXJzaW9uIGlzIGNvcnJlY3RseSBzZXQuCi0gICAg
ICAgICAgICBiaWdfbWVzc2FnZSA9ICdhJyAqIDEwMjQKLSAgICAgICAgICAgIGFyZ3MgPSBbY2xp
ZW50X2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICctcCcsIHN0cihzZWxmLl9vcHRpb25z
LnNlcnZlcl9wb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgJy1tJywgYmlnX21lc3NhZ2VdCi0g
ICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBj
bGllbnQuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAoJ1NlbmQ6ICVzXG5S
ZWN2OiAlc1xuU2VuZCBjbG9zZVxuUmVjdiBhY2tcbicgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgKGJpZ19tZXNzYWdlLCBiaWdfbWVzc2FnZSkpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19l
eGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAgICAgICAgICAgICAgICBleHBlY3RlZCwgc3Rk
b3V0ZGF0YSwgc3RkZXJyZGF0YSkKLQotICAgICAgICAgICAgIyBUZXN0IHRoZSBwZXJtZXNzYWdl
LWRlZmxhdGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgYXJncyA9IFtjbGllbnRfY29tbWFuZCwK
LSAgICAgICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQp
LAotICAgICAgICAgICAgICAgICAgICAnLS11c2VfcGVybWVzc2FnZV9kZWZsYXRlJ10KLSAgICAg
ICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLCBzdGRvdXQ9c3Vi
cHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSA9IGNsaWVu
dC5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xp
ZW50X3Jlc3VsdCgKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RhdGlvbiwgc3Rk
b3V0ZGF0YSwgc3RkZXJyZGF0YSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYu
X2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9l
eHRlbnNpb25zLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzhiMTI2MmQ4OWIu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQorKysg
L2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBleHRlbnNpb25zIG1vZHVsZS4iIiIKLQot
Ci1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB6bGliCi0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMg
VXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgZXh0ZW5zaW9ucwotCi0KLWNsYXNzIEV4dGVuc2lvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBub24tY2xhc3MgbWV0aG9kcyBpbiBleHRlbnNpb25z
LnB5IiIiCi0KLSAgICBkZWYgdGVzdF9wYXJzZV93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2Jp
dHMsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnZm9vYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcgOCAnKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5k
b3dfYml0cywgJ2E4YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4
dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMDAwMDAnKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDA4
JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcweDgnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOS41JykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMs
ICc4LjAnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHRlbnNpb25zLl9wYXJzZV93aW5k
b3dfYml0cywgJzgnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZXh0ZW5zaW9ucy5fcGFyc2Vf
d2luZG93X2JpdHMsICcxNScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICctOCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNl
X3dpbmRvd19iaXRzLCAnNycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcxNicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNl
X3dpbmRvd19iaXRzLCAnMTAwMDAwMDAnKQotCi0KLWNsYXNzIENvbXByZXNzaW9uTWV0aG9kUGFy
YW1ldGVyUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBm
b3IgX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZCB3aGljaCBwYXJzZXMgdGhlIGNvbXByZXNzaW9u
Ci0gICAgbWV0aG9kIGRlc2NyaXB0aW9uIHVzZWQgYnkgcGVyZnJhbWUtY29tcHJlc3Npb24gYW5k
IHBlcm1lc3NhZ2UtY29tcHJlc3Npb24KLSAgICBleHRlbnNpb24gaW4gdGhlaXIgIm1ldGhvZCIg
ZXh0ZW5zaW9uIHBhcmFtZXRlci4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X3BhcnNlX21ldGhv
ZF9zaW1wbGUoc2VsZik6Ci0gICAgICAgIG1ldGhvZF9saXN0ID0gZXh0ZW5zaW9ucy5fcGFyc2Vf
Y29tcHJlc3Npb25fbWV0aG9kKCdmb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihtZXRob2RfbGlzdCkpCi0gICAgICAgIG1ldGhvZCA9IG1ldGhvZF9saXN0WzBdCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsIG1ldGhvZC5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMCwgbGVuKG1ldGhvZC5nZXRfcGFyYW1ldGVycygpKSkKLQotICAgIGRlZiB0ZXN0
X3BhcnNlX21ldGhvZF93aXRoX3BhcmFtZXRlcihzZWxmKToKLSAgICAgICAgbWV0aG9kX2xpc3Qg
PSBleHRlbnNpb25zLl9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoJ2ZvbzsgeDsgeT0xMCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1ldGhvZF9saXN0KSkKLSAgICAgICAgbWV0
aG9kID0gbWV0aG9kX2xpc3RbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbWV0
aG9kLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obWV0aG9kLmdldF9w
YXJhbWV0ZXJzKCkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kLmhhc19wYXJhbWV0
ZXIoJ3gnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtZXRob2QuZ2V0X3BhcmFt
ZXRlcl92YWx1ZSgneCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kLmhhc19wYXJh
bWV0ZXIoJ3knKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTAnLCBtZXRob2QuZ2V0X3Bh
cmFtZXRlcl92YWx1ZSgneScpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX3dpdGhfcXVv
dGVkX3BhcmFtZXRlcihzZWxmKToKLSAgICAgICAgbWV0aG9kX2xpc3QgPSBleHRlbnNpb25zLl9w
YXJzZV9jb21wcmVzc2lvbl9tZXRob2QoCi0gICAgICAgICAgICAnZm9vOyB4PSJIZWxsbyBXb3Js
ZCI7IHk9MTAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXRob2RfbGlzdCkp
Ci0gICAgICAgIG1ldGhvZCA9IG1ldGhvZF9saXN0WzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2ZvbycsIG1ldGhvZC5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVu
KG1ldGhvZC5nZXRfcGFyYW1ldGVycygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGhv
ZC5oYXNfcGFyYW1ldGVyKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdv
cmxkJywgbWV0aG9kLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ3gnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1ldGhvZC5oYXNfcGFyYW1ldGVyKCd5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJzEwJywgbWV0aG9kLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ3knKSkKLQotICAgIGRlZiB0ZXN0
X3BhcnNlX21ldGhvZF9tdWx0aXBsZShzZWxmKToKLSAgICAgICAgbWV0aG9kX2xpc3QgPSBleHRl
bnNpb25zLl9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoJ2ZvbywgYmFyJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsZW4obWV0aG9kX2xpc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdmb28nLCBtZXRob2RfbGlzdFswXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMCwgbGVuKG1ldGhvZF9saXN0WzBdLmdldF9wYXJhbWV0ZXJzKCkpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdiYXInLCBtZXRob2RfbGlzdFsxXS5uYW1lKCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMCwgbGVuKG1ldGhvZF9saXN0WzFdLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0g
ICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX211bHRpcGxlX21ldGhvZHNfd2l0aF9xdW90ZWRfcGFy
YW1ldGVyKHNlbGYpOgotICAgICAgICBtZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2Nv
bXByZXNzaW9uX21ldGhvZCgKLSAgICAgICAgICAgICdmb287IHg9IkhlbGxvIFdvcmxkIiwgYmFy
OyB5PTEwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obWV0aG9kX2xpc3QpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCBtZXRob2RfbGlzdFswXS5uYW1lKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1ldGhvZF9saXN0WzBdLmdldF9wYXJhbWV0
ZXJzKCkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kX2xpc3RbMF0uaGFzX3BhcmFt
ZXRlcigneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX2xpc3RbMF0uZ2V0X3BhcmFtZXRlcl92YWx1ZSgn
eCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYXInLCBtZXRob2RfbGlzdFsxXS5uYW1l
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1ldGhvZF9saXN0WzFdLmdldF9w
YXJhbWV0ZXJzKCkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kX2xpc3RbMV0uaGFz
X3BhcmFtZXRlcigneScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxMCcsIG1ldGhvZF9s
aXN0WzFdLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ3knKSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9t
ZXRob2RfZGVzY19zaW1wbGUoc2VsZik6Ci0gICAgICAgIHBhcmFtcyA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoJ2ZvbycpCi0gICAgICAgIGRlc2MgPSBleHRlbnNpb25zLl9jcmVhdGVfYWNj
ZXB0ZWRfbWV0aG9kX2Rlc2MoJ2ZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldF9wYXJhbWV0ZXJzKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsIGRlc2MpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfbWV0
aG9kX2Rlc2Nfd2l0aF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBwYXJhbXMgPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKCdmb28nKQotICAgICAgICBwYXJhbXMuYWRkX3BhcmFtZXRlcign
eCcsICdIZWxsbywgV29ybGQnKQotICAgICAgICBwYXJhbXMuYWRkX3BhcmFtZXRlcigneScsICcx
MCcpCi0gICAgICAgIGRlc2MgPSBleHRlbnNpb25zLl9jcmVhdGVfYWNjZXB0ZWRfbWV0aG9kX2Rl
c2MoJ2ZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldF9wYXJhbWV0ZXJzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2ZvbzsgeD0iSGVsbG8sIFdvcmxkIjsgeT0xMCcsIGRlc2MpCi0KLQotY2xhc3MgRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9u
UHJvY2Vzc29yIHBhcnNlcyBnaXZlbgotICAgIGV4dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5
LgotICAgICIiIgotCi0gICAgZGVmIHRlc3RfcmVnaXN0cnkoc2VsZik6Ci0gICAgICAgIHByb2Nl
c3NvciA9IGV4dGVuc2lvbnMuZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IoCi0gICAgICAgICAgICAg
ICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcignZGVmbGF0ZS1mcmFtZScpKQotICAgICAgICBz
ZWxmLmFzc2VydElzSW5zdGFuY2UocHJvY2Vzc29yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi0KLSAgICAg
ICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAg
ICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCd4LXdlYmtpdC1kZWZsYXRlLWZy
YW1lJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3IsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblBy
b2Nlc3NvcikKLQotICAgIGRlZiB0ZXN0X21pbmltYWxfb2ZmZXIoc2VsZik6Ci0gICAgICAgIHBy
b2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAg
ICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpKQot
Ci0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJmcmFtZS1kZWZsYXRlJywgcmVzcG9uc2UubmFt
ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1l
dGVycygpKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuTUFYX1dCSVRTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93
X2JpdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxh
dGVyLl9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhf
d2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzEwJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5z
aW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAg
IHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdwZXJmcmFtZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKSkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0
ZXIuX3dpbmRvd19iaXRzKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2Vf
bWF4X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICcwJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkp
Ci0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0X3ZhbHVl
KHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdw
ZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ21heF93
aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2Vy
dElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRl
c3Rfb2ZmZXJfd2l0aF9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0
ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAg
ICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQot
ICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxh
dGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9j
ZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICBkZWYg
dGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXJfd2l0aF92YWx1ZShzZWxmKToKLSAg
ICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVm
bGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2Vv
dmVyJywgJ2Zvb2JhcicpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0ZUZy
YW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rf
b2ZmZXJfd2l0aF91bmtub3duX3BhcmFtZXRlcihzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAgIHBh
cmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0g
ZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0g
ICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJmcmFtZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVy
cygpKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvclBhcnNp
bmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2lu
ZyB0aGF0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIHBhcnNlcwotICAgIGdp
dmVuIGV4dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5LgotICAgICIiIgotCi0gICAgZGVmIHRl
c3RfcmVnaXN0cnkoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuZ2V0X2V4
dGVuc2lvbl9wcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5j
ZShwcm9jZXNzb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAgZGVmIHRlc3RfbWluaW1h
bF9vZmZlcihzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJv
Y2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoemxpYi5NQVhfV0JJVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKLSAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAg
ICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1k
ZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2lu
ZG93X2JpdHMnLCAnMTAnKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3Nh
Z2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25z
ZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRv
d19iaXRzKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2VfbWF4X3dpbmRv
d19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignc2VydmVyX21heF93aW5kb3dfYml0cycsICcwJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRf
dmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVy
KCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxm
KToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVz
c2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9u
cy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcics
IE5vbmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVy
cygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0
ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2Nv
bnRleHRfdGFrZW92ZXJfd2l0aF92YWx1ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFy
YW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgJ2Zvb2Jh
cicpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93
aXRoX3Vua25vd25fcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0
ZXIuYWRkX3BhcmFtZXRlcignZm9vJywgJ2JhcicpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVu
c2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkpCi0KLQotY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JCdWlsZGlu
Z1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5n
IHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgYnVpbGRzCi0gICAgYSBy
ZXNwb25zZSBiYXNlZCBvbiBzcGVjaWZpZWQgb3B0aW9ucyBjb3JyZWN0bHkuCi0gICAgIiIiCi0K
LSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAg
ICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZs
YXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93
X2JpdHMnLCBOb25lKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLSAgICAgICAgcHJvY2Vzc29yLnNl
dF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDEwKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vz
c29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdw
ZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWygnY2xpZW50X21heF93aW5kb3dfYml0cycsICcxMCcpXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgZGVmIHRlc3RfcmVz
cG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHNfd2l0aG91dF9jbGllbnRfcGVybWlzc2lvbihzZWxm
KToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQotICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2lu
ZG93X2JpdHMoMTApCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3BvbnNlKQotCi0gICAg
ZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF90cnVlX2Zvcl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYp
OgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVy
bWVzc2FnZS1kZWZsYXRlJykpCi0KLSAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29u
dGV4dF90YWtlb3ZlcihUcnVlKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdl
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygn
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKV0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgIGRlZiB0ZXN0X3Jlc3BvbnNl
X3dpdGhfZmFsc2VfZm9yX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6Ci0gICAgICAgIHByb2Nl
c3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0g
ICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUn
KSkKLQotICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKEZh
bHNlKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNw
b25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdl
dF9wYXJhbWV0ZXJzKCkpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblBy
b2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3JlZ2lzdHJ5KHNl
bGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25fcHJvY2Vz
c29yKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3Nh
Z2UtY29tcHJlc3MnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuUGVyTWVzc2FnZUNvbXBy
ZXNzRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
ICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3OGFjMDVlNTg3Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDE4OCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBoYW5kc2hha2UuX2Jhc2UgbW9kdWxlLiIiIgotCi0K
LWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0
aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJhbWV0ZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0
LmNvbW1vbiBpbXBvcnQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuY29tbW9uIGltcG9ydCBmb3JtYXRfZXh0ZW5zaW9ucwotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuY29tbW9uIGltcG9ydCBwYXJzZV9leHRlbnNpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9zdWJwcm90b2NvbAotCi0KLWNs
YXNzIFZhbGlkYXRlU3VicHJvdG9jb2xUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJB
IHVuaXR0ZXN0IGZvciB2YWxpZGF0ZV9zdWJwcm90b2NvbCBtZXRob2QuIiIiCi0KLSAgICBkZWYg
dGVzdF92YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmKToKLSAgICAgICAgIyBTaG91bGQgc3VjY2Vl
ZC4KLSAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZScpCi0gICAgICAgIHZhbGlk
YXRlX3N1YnByb3RvY29sKCdTYW1wbGUnKQotICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCgn
c2FtcGxlXHg3ZXByb3RvY29sJykKLQotICAgICAgICAjIFNob3VsZCBmYWlsLgotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NhbXBsZVx4MDlwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRh
dGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJv
dG9jb2wnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAnc2FtcGxlXHgyMHByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4
N2Zwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICB1J1x1NjVlNVx1NjcyYycpCi0KLQotX1RFU1RfVE9LRU5fRVhURU5TSU9O
X0RBVEEgPSBbCi0gICAgKCdmb28nLCBbKCdmb28nLCBbXSldKSwKLSAgICAoJ2ZvbzsgYmFyJywg
WygnZm9vJywgWygnYmFyJywgTm9uZSldKV0pLAotICAgICgnZm9vOyBiYXI9YmF6JywgWygnZm9v
JywgWygnYmFyJywgJ2JheicpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPWJhejsgY2FyPWNkcicsIFso
J2ZvbycsIFsoJ2JhcicsICdiYXonKSwgKCdjYXInLCAnY2RyJyldKV0pLAotICAgICgnZm9vOyBi
YXI9YmF6LCBjYXI7IGNkcicsCi0gICAgIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pLCAoJ2Nh
cicsIFsoJ2NkcicsIE5vbmUpXSldKSwKLSAgICAoJ2EsIGIsIGMsIGQnLAotICAgICBbKCdhJywg
W10pLCAoJ2InLCBbXSksICgnYycsIFtdKSwgKCdkJywgW10pXSksCi0gICAgXQotCi0KLV9URVNU
X1FVT1RFRF9FWFRFTlNJT05fREFUQSA9IFsKLSAgICAoJ2ZvbzsgYmFyPSIiJywgWygnZm9vJywg
WygnYmFyJywgJycpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSIgYmF6ICInLCBbKCdmb28nLCBbKCdi
YXInLCAnIGJheiAnKV0pXSksCi0gICAgKCdmb287IGJhcj0iLGJhejsiJywgWygnZm9vJywgWygn
YmFyJywgJyxiYXo7JyldKV0pLAotICAgICgnZm9vOyBiYXI9IlxcXHJcXFxuYmF6IicsIFsoJ2Zv
bycsIFsoJ2JhcicsICdcclxuYmF6JyldKV0pLAotICAgICgnZm9vOyBiYXI9IlxcImJheiInLCBb
KCdmb28nLCBbKCdiYXInLCAnImJheicpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSJceGJiYmF6Iics
IFsoJ2ZvbycsIFsoJ2JhcicsICdceGJiYmF6JyldKV0pLAotICAgIF0KLQotCi1fVEVTVF9SRURV
TkRBTlRfVE9LRU5fRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgKCdmb28gXHQgJywgWygnZm9vJywg
W10pXSksCi0gICAgKCdmb287IFxyXG4gYmFyJywgWygnZm9vJywgWygnYmFyJywgTm9uZSldKV0p
LAotICAgICgnZm9vOyBiYXI9XHJcbiBcclxuIGJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXon
KV0pXSksCi0gICAgKCdmb28gO2JhciA9IGJheiAnLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6Jyld
KV0pLAotICAgICgnZm9vLGJhciwsYmF6JywgWygnZm9vJywgW10pLCAoJ2JhcicsIFtdKSwgKCdi
YXonLCBbXSldKSwKLSAgICBdCi0KLQotX1RFU1RfUkVEVU5EQU5UX1FVT1RFRF9FWFRFTlNJT05f
REFUQSA9IFsKLSAgICAoJ2ZvbzsgYmFyPSJcclxuIFxyXG4gYmF6IicsIFsoJ2ZvbycsIFsoJ2Jh
cicsICcgIGJheicpXSldKSwKLSAgICBdCi0KLQotY2xhc3MgRXh0ZW5zaW9uc1BhcnNlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIF92ZXJpZnlfZXh0ZW5zaW9uX2xpc3Qoc2Vs
ZiwgZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QpOgotICAgICAgICAiIiJWZXJpZmllcyB0aGF0
IEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzIGluIGFjdHVhbF9saXN0IGhhdmUgdGhlCi0gICAg
ICAgIHNhbWUgbWVtYmVycyBhcyBleHRlbnNpb24gZGVmaW5pdGlvbnMgaW4gZXhwZWN0ZWRfbGlz
dC4gRXh0ZW5zaW9uCi0gICAgICAgIGRlZmluaXRpb24gdXNlZCBpbiB0aGlzIHRlc3QgaXMgYSBw
YWlyIG9mIGFuIGV4dGVuc2lvbiBuYW1lIGFuZCBhCi0gICAgICAgIHBhcmFtZXRlciBkaWN0aW9u
YXJ5LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3Rl
ZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKLSAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwg
aW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAgICAgICAgIChuYW1lLCBw
YXJhbWV0ZXJzKSA9IGV4cGVjdGVkCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUs
IGFjdHVhbC5fbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1ldGVycywg
YWN0dWFsLl9wYXJhbWV0ZXJzKQotCi0gICAgZGVmIHRlc3RfcGFyc2Uoc2VsZik6Ci0gICAgICAg
IGZvciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9uIGluIF9URVNUX1RPS0VOX0VYVEVOU0lP
Tl9EQVRBOgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9saXN0KAotICAgICAg
ICAgICAgICAgIGRlZmluaXRpb24sIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykp
Ci0KLSAgICBkZWYgdGVzdF9wYXJzZV9xdW90ZWRfZGF0YShzZWxmKToKLSAgICAgICAgZm9yIGZv
cm1hdHRlZF9zdHJpbmcsIGRlZmluaXRpb24gaW4gX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRB
OgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9saXN0KAotICAgICAgICAgICAg
ICAgIGRlZmluaXRpb24sIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCi0KLSAg
ICBkZWYgdGVzdF9wYXJzZV9yZWR1bmRhbnRfZGF0YShzZWxmKToKLSAgICAgICAgZm9yIChmb3Jt
YXR0ZWRfc3RyaW5nLAotICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFO
VF9UT0tFTl9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNp
b25fbGlzdCgKLSAgICAgICAgICAgICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25zKGZv
cm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVkdW5kYW50X3F1b3RlZF9k
YXRhKHNlbGYpOgotICAgICAgICBmb3IgKGZvcm1hdHRlZF9zdHJpbmcsCi0gICAgICAgICAgICAg
ZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5EQU5UX1FVT1RFRF9FWFRFTlNJT05fREFUQToKLSAg
ICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlzdCgKLSAgICAgICAgICAgICAgICBk
ZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVm
IHRlc3RfcGFyc2VfYmFkX2RhdGEoc2VsZik6Ci0gICAgICAgIF9URVNUX0JBRF9FWFRFTlNJT05f
REFUQSA9IFsKLSAgICAgICAgICAgICgnZm9vOyA7ICcpLAotICAgICAgICAgICAgKCdmb287IGEg
YScpLAotICAgICAgICAgICAgKCdmb28gZm9vJyksCi0gICAgICAgICAgICAoJywsLCcpLAotICAg
ICAgICAgICAgKCdmb287IGJhcj0nKSwKLSAgICAgICAgICAgICgnZm9vOyBiYXI9ImhvZ2UnKSwK
LSAgICAgICAgICAgICgnZm9vOyBiYXI9ImFcciInKSwKLSAgICAgICAgICAgICgnZm9vOyBiYXI9
IlxcXHhmZiInKSwKLSAgICAgICAgICAgICgnZm9vOyBiYXI9XHJhJyksCi0gICAgICAgICAgICBd
Ci0KLSAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcgaW4gX1RFU1RfQkFEX0VYVEVOU0lPTl9E
QVRBOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICAgICAgRXh0
ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucywgZm9ybWF0dGVkX3N0cmlu
ZykKLQotCi1jbGFzcyBGb3JtYXRFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0K
LSAgICBkZWYgdGVzdF9mb3JtYXRfZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAgICAgZm9yIGZvcm1h
dHRlZF9zdHJpbmcsIGRlZmluaXRpb25zIGluIF9URVNUX1RPS0VOX0VYVEVOU0lPTl9EQVRBOgot
ICAgICAgICAgICAgZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgICAgICBmb3IgZGVmaW5pdGlvbiBp
biBkZWZpbml0aW9uczoKLSAgICAgICAgICAgICAgICAobmFtZSwgcGFyYW1ldGVycykgPSBkZWZp
bml0aW9uCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gRXh0ZW5zaW9uUGFyYW1ldGVyKG5h
bWUpCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVycwot
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbikKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVkX3N0cmluZywgZm9y
bWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9ucykpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdF9oYW5kc2hha2VfaHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4
NzEzODIzMGIzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFr
ZV9oeWJpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGhhbmRzaGFrZSBt
b2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMg
VXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNo
YWtlLl9iYXNlIGltcG9ydCBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBWZXJzaW9uRXhjZXB0aW9uCi1mcm9t
IG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQgSGFuZHNoYWtlcgotCi1pbXBv
cnQgbW9jawotCi0KLWNsYXNzIFJlcXVlc3REZWZpbml0aW9uKG9iamVjdCk6Ci0gICAgIiIiQSBj
bGFzcyBmb3IgaG9sZGluZyBkYXRhIGZvciBjb25zdHJ1Y3Rpbmcgb3BlbmluZyBoYW5kc2hha2Ug
c3RyaW5ncyBmb3IKLSAgICB0ZXN0aW5nIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3Iu
Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMp
OgotICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAotICAgICAgICBzZWxmLnVyaSA9IHVyaQot
ICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCi0KLQotZGVmIF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpOgotICAgIHJldHVybiBSZXF1ZXN0RGVmaW5pdGlvbigKLSAgICAgICAgJ0dFVCcs
ICcvZGVtbycsCi0gICAgICAgIHsnSG9zdCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAotICAgICAg
ICAgJ1VwZ3JhZGUnOiAnd2Vic29ja2V0JywKLSAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3Jh
ZGUnLAotICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5JzogJ2RHaGxJSE5oYlhCc1pTQnViMjVq
WlE9PScsCi0gICAgICAgICAnU2VjLVdlYlNvY2tldC1WZXJzaW9uJzogJzEzJywKLSAgICAgICAg
ICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJ30pCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVz
dChyZXF1ZXN0X2RlZik6Ci0gICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oJycpCi0gICAgcmV0dXJu
IG1vY2suTW9ja1JlcXVlc3QoCi0gICAgICAgIG1ldGhvZD1yZXF1ZXN0X2RlZi5tZXRob2QsCi0g
ICAgICAgIHVyaT1yZXF1ZXN0X2RlZi51cmksCi0gICAgICAgIGhlYWRlcnNfaW49cmVxdWVzdF9k
ZWYuaGVhZGVycywKLSAgICAgICAgY29ubmVjdGlvbj1jb25uKQotCi0KLWRlZiBfY3JlYXRlX2hh
bmRzaGFrZXIocmVxdWVzdCk6Ci0gICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwg
bW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgIHJldHVybiBoYW5kc2hha2VyCi0KLQotY2xhc3Mg
U3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToKLSAgICAiIiJBIGRpc3BhdGNo
ZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRoZSBpLXRoIHN1YnByb3RvY29s
Ci0gICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wgd2hlcmUgaSBpcyBnaXZlbiBv
biBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKLSAgICBhcmd1bWVudC4gSWYgaW5kZXggaXMgbmVnYXRp
dmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJvdG9jb2wuCi0gICAgIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgsIGRlZmF1bHRfdmFsdWU9Tm9uZSk6Ci0gICAg
ICAgIHNlbGYuaW5kZXggPSBpbmRleAotICAgICAgICBzZWxmLmRlZmF1bHRfdmFsdWUgPSBkZWZh
dWx0X3ZhbHVlCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4
dCk6Ci0gICAgICAgIGlmIHNlbGYuaW5kZXggPj0gMDoKLSAgICAgICAgICAgIGNvbm5fY29udGV4
dC53c19wcm90b2NvbCA9IGNvbm5fY29udGV4dC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzWwotICAg
ICAgICAgICAgICAgIHNlbGYuaW5kZXhdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25u
X2NvbnRleHQud3NfcHJvdG9jb2wgPSBzZWxmLmRlZmF1bHRfdmFsdWUKLQotICAgIGRlZiB0cmFu
c2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBI
YW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWNsYXNz
IEFib3J0aW5nRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVz
dGluZy4gVGhpcyBkaXNwYXRjaGVyIHJhaXNlcyBhbiBleGNlcHRpb24gaW4KLSAgICBkb19leHRy
YV9oYW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0LgotICAgICIiIgotCi0gICAgZGVmIGRv
X2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAgICByYWlzZSBIYW5k
c2hha2VBYm9ydGVkRXhjZXB0aW9uKCdBbiBleGNlcHRpb24gdG8gcmVqZWN0IHRoZSByZXF1ZXN0
JykKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAg
IHBhc3MKLQotCi1jbGFzcyBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIi
IkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRjaGVyIHJhaXNlcyBhbgotICAg
IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gaW4gZG9fZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0
aGUgcmVxdWVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwg
Y29ubl9jb250ZXh0KToKLSAgICAgICAgcmFpc2UgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQW4g
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCi0KLSAgICBkZWYgdHJhbnNmZXJfZGF0YShz
ZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAgICBwYXNzCi0KLQotX0VYUEVDVEVEX1JFU1BPTlNF
ID0gKAotICAgICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCi0gICAgJ1Vw
Z3JhZGU6IHdlYnNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAg
ICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG5c
clxuJykKLQotCi1jbGFzcyBIYW5kc2hha2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
IiIiQSB1bml0dGVzdCBmb3IgZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTA2
IGFuZCBsYXRlcgotICAgIGhhbmRzaGFrZSBwcm9jZXNzb3IuCi0gICAgIiIiCi0KLSAgICBkZWYg
dGVzdF9kb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBtb2Nr
Lk1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZV9jYWxsZWQp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQ
T05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNpb25zKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNp
b24pCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYp
OgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAg
ICAgICMgQWRkIGhlYWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNo
YWtlLgotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScK
LSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXknXSA9ICcnCi0KLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtl
ciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNU
RURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRl
ZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2NhcGl0YWxpemVkX3ZhbHVlKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVl
c3RfZGVmLmhlYWRlcnNbJ3VwZ3JhZGUnXSA9ICdXRUJTT0NLRVQnCi0KLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9j
cmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFr
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVT
UE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1
ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVm
LmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdVUEdSQURFJwotCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRl
X2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgX0VYUEVDVEVEX1JFU1BPTlNF
LCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9kb19o
YW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVlcyhzZWxmKToKLSAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0
X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwga2VlcC1hbGl2ZSwgLCAnCi0K
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAg
aGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAg
ICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
LQotICAgIGRlZiB0ZXN0X2Fib3J0aW5nX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgaGFuZHNo
YWtlciA9IEhhbmRzaGFrZXIoCi0gICAgICAgICAgICBfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkpLAotICAgICAgICAgICAgQWJvcnRpbmdEaXNwYXRjaGVyKCkpCi0g
ICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNlcyBhbiBleGNlcHRpb24uIENoZWNrIHRo
YXQgaXQncyBub3QgY2F1Z2h0IGJ5Ci0gICAgICAgICMgZG9faGFuZHNoYWtlLgotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sKHNl
bGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdj
aGF0LCBzdXBlcmNoYXQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1
ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgU3VicHJv
dG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoMCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNo
YWtlKCkKLQotICAgICAgICBFWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAgICAgICdIVFRQ
LzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCi0gICAgICAgICAgICAnVXBncmFkZTog
d2Vic29ja2V0XHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksr
eE9vPVxyXG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG5c
clxuJykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtl
X3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25zZShzZWxmKToKLSAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcigKLSAgICAgICAgICAgIHJlcXVlc3QsIFN1YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRj
aGVyKC0xLCAnZm9vYmFyJykpCi0gICAgICAgICMgTm8gcmVxdWVzdCBoYXMgYmVlbiBtYWRlIGJ1
dCB3c19wcm90b2NvbCBpcyBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlvbgotICAgICAgICAjIG11c3Qg
YmUgcmFpc2VkLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24s
IGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dp
dGhfcHJvdG9jb2xfbm9fcHJvdG9jb2xfc2VsZWN0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0
X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCi0KLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICAjIHdzX3Byb3Rv
Y29sIGlzIG5vdCBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlvbiBtdXN0IGJlIHJhaXNlZC4KLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2V4dGVuc2lvbnMoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAo
Ci0gICAgICAgICAgICAncGVybWVzc2FnZS1jb21wcmVzczsgbWV0aG9kPWRlZmxhdGUsIHVua25v
d24nKQotCi0gICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICAgICAgICAgJ0hUVFAv
MS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKLSAgICAgICAgICAgICdVcGdyYWRlOiB3
ZWJzb2NrZXRcclxuJwotICAgICAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAg
ICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4
T289XHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6IHBlcm1lc3Nh
Z2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlXHJcbicKLSAgICAgICAgICAgICdcclxuJykKLQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBo
YW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNQ
T05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBleHRlbnNp
b24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ21l
dGhvZCddLCBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9uYW1lcygpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdkZWZsYXRlJywgZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ21ldGhv
ZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVTU0FH
RV9DT01QUkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0KLSAgICBkZWYgdGVzdF9kb19o
YW5kc2hha2Vfd2l0aF9wZXJtZXNzYWdlX2NvbXByZXNzKHNlbGYpOgotICAgICAgICByZXF1ZXN0
X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAgJ3Blcm1l
c3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlJykKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFu
ZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5T
SU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXS5u
YW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5z
aW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNT
QUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLQotICAgIGRlZiB0ZXN0X2Rv
X2hhbmRzaGFrZV93aXRoX3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICByZXF1ZXN0
X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAgJ3Blcm1l
c3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlLCAsICcKLSAgICAgICAgICAgICd1bmtub3du
OyBlICAgPSAgICAibWNeMiI7IG1hPSJcclxuICAgICAgXFxccmYgICI7IHB2PW5ydCcpCi0KLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qu
d3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMpKQotICAgICAgICBmaXJzdF9leHRlbnNpb24gPSByZXF1
ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3Blcm1lc3NhZ2UtY29tcHJlc3MnLCBmaXJzdF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFsnbWV0aG9kJ10sIGZpcnN0X2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVy
X25hbWVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpcnN0X2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdtZXRo
b2QnKSkKLSAgICAgICAgc2Vjb25kX2V4dGVuc2lvbiA9IHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4
dGVuc2lvbnNbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndW5rbm93bicsIHNlY29uZF9l
eHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
WydlJywgJ21hJywgJ3B2J10sIHNlY29uZF9leHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9uYW1lcygp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtY14yJywgc2Vjb25kX2V4dGVuc2lvbi5nZXRf
cGFyYW1ldGVyX3ZhbHVlKCdlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyBccmYgJywg
c2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdtYScpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCducnQnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J3B2JykpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9vcHRpb25hbF9oZWFkZXJz
KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0VtcHR5VmFsdWUnXSA9ICcnCi0gICAgICAg
IHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0FLZXknXSA9ICdBVmFsdWUnCi0KLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9j
cmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFr
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnQVZhbHVlJywgcmVx
dWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICAnJywgcmVxdWVzdC5oZWFkZXJzX2luWydFbXB0eVZhbHVlJ10pCi0KLSAgICBkZWYg
dGVzdF9hYm9ydF9leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBI
YW5kc2hha2VyKAotICAgICAgICAgICAgX2NyZWF0ZV9yZXF1ZXN0KF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpKSwKLSAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKCkpCi0gICAg
ICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNlcyBhbiBBYm9ydGVkQnlVc2VyRXhjZXB0aW9u
LiBDaGVjayB0aGF0IGl0J3MKLSAgICAgICAgIyBub3QgY2F1Z2h0IGJ5IGRvX2hhbmRzaGFrZS4K
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdXhf
YW5kX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zJ10gPSAoJyVzLCAlcycgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9u
Lk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhU
RU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
LSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICMgbXV4IHNob3VsZCBiZSByZWpl
Y3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNp
b25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uREVGTEFURV9GUkFNRV9FWFRF
TlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25zWzBd
Lm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9F
WFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLkRF
RkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
d3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9jZXNzb3InKSkKLQotICAgIGRlZiB0ZXN0X2Rv
X2hhbmRzaGFrZV93aXRoX2RlZmxhdGVfZnJhbWVfYW5kX211eChzZWxmKToKLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgnJXMsICVzJyAlICgKLSAg
ICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAg
ICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04pKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hh
a2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAg
IyBtdXggc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBmaXJzdF9leHRlbnNpb24gPSByZXF1
ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uREVG
TEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfZXh0
ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53
c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eCcpKQotCi0gICAgZGVmIHRlc3RfZG9faGFu
ZHNoYWtlX3dpdGhfcGVybWVzc2FnZV9jb21wcmVzc19hbmRfbXV4KHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3Rf
ZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAg
JyVzOyBtZXRob2Q9ZGVmbGF0ZSwgJXMnICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICBjb21tb24uTVVY
X0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAg
ICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC53c19leHRlbnNpb25zWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBs
ZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFt
ZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihyZXF1ZXN0LCAnbXV4X3Byb2Nl
c3NvcicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVxdWVzdC5tdXhfcHJvY2Vzc29yLmlz
X2FjdGl2ZSgpKQotICAgICAgICBtdXhfZXh0ZW5zaW9ucyA9IHJlcXVlc3QubXV4X3Byb2Nlc3Nv
ci5leHRlbnNpb25zKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obXV4X2V4dGVu
c2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBS
RVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtdXhfZXh0ZW5zaW9u
c1swXS5uYW1lKCkpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdXhfYW5kX3Bl
cm1lc3NhZ2VfY29tcHJlc3Moc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAnJXMsICVzOyBtZXRob2Q9ZGVmbGF0
ZScgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKSkKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtl
ciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCi0gICAgICAgICMgbXV4IHNob3VsZCBiZSByZWplY3RlZC4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgZmly
c3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpcnN0X2V4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VY
VEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9w
cm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHJl
cXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0KLSAgICBkZWYgdGVzdF9iYWRfcmVxdWVzdHMoc2Vs
Zik6Ci0gICAgICAgIGJhZF9jYXNlcyA9IFsKLSAgICAgICAgICAgICgnSFRUUCByZXF1ZXN0JywK
LSAgICAgICAgICAgICBSZXF1ZXN0RGVmaW5pdGlvbigKLSAgICAgICAgICAgICAgICAgJ0dFVCcs
ICcvZGVtbycsCi0gICAgICAgICAgICAgICAgIHsnSG9zdCc6ICd3d3cuZ29vZ2xlLmNvbScsCi0g
ICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6Ci0gICAgICAgICAgICAgICAgICAgICAgJ01v
emlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7JwotICAgICAgICAg
ICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMpIEdlY2tvLzIwMDkwODI0IEZpcmVmb3gv
My41LjMnCi0gICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdUQkEnLAotICAgICAgICAgICAg
ICAgICAgJ0FjY2VwdCc6Ci0gICAgICAgICAgICAgICAgICAgICAgJ3RleHQvaHRtbCxhcHBsaWNh
dGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcKLSAgICAgICAgICAgICAgICAg
ICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAn
ZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdn
emlwLGRlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JzogJ0lTTy04
ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAgICAgICAgICAnS2VlcC1BbGl2
ZSc6ICczMDAnLAotICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAna2VlcC1hbGl2ZSd9
KSwgTm9uZSwgVHJ1ZSldCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAnUE9TVCcKLSAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVl
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KLSAgICAgICAgYmFkX2Nhc2Vz
LmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKLQotICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIGRl
bCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVu
ZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKLQotICAgICAg
ICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVl
c3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQnCi0gICAgICAgIGJhZF9j
YXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUpKQot
Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAg
ICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQotICAgICAgICBiYWRfY2Fz
ZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUp
KQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ0Rvd25ncmFkZScKLSAg
ICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24nLCByZXF1ZXN0X2RlZiwg
Tm9uZSwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVz
dF9kZWYoKQotICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1L
ZXknXQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0LUtl
eScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2Ny
ZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2Vj
LVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1alpR
PT1nYXJiYWdlJykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJTb2Nr
ZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydT
ZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAnYScKLSAgICAgICAgYmFk
X2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKGRl
Y29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCi0gICAgICAgICAgICAgcmVxdWVz
dF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQotICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciByaWdodCBiZWZvcmUg
PT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KLSAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdBUUlEQkFVR0J3Z0pD
Z3NNRFE0UEVDPT0nKQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAotICAgICAgICAgICAgKCdX
cm9uZyBTZWMtV2ViU29ja2V0LUtleSAocGFkZGluZyBiaXRzIGFyZSBub3QgemVybyknLAotICAg
ICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVm
ID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVy
c1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1
YjI1alpRPT0sZEdobElITmhiWEJzWlNCdWIyNWpaUT09JykKLSAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKG11bHRpcGxlIHZh
bHVlcyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgZGVsIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddCi0gICAgICAgIGJhZF9j
YXNlcy5hcHBlbmQoKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVm
LCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKLQotICAgICAgICByZXF1
ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVm
LmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddID0gJzMnCi0gICAgICAgIGJhZF9jYXNl
cy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24nLCByZXF1ZXN0X2RlZiwgTm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQotCi0gICAgICAgIHJlcXVlc3Rf
ZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAnMTMsIDEzJwotICAgICAgICBiYWRfY2Fz
ZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9uIChtdWx0aXBsZSB2YWx1ZXMp
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0K
LSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnaWxsZWdh
bFx4MDlwcm90b2NvbCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ0lsbGVnYWwgU2VjLVdl
YlNvY2tldC1Qcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGVm
LCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCddID0gJycKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ0VtcHR5IFNlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAw
LCBUcnVlKSkKLQotICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9kZWYsIGV4cGVjdGVk
X3N0YXR1cywKLSAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikgaW4gYmFk
X2Nhc2VzOgotICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2Rl
ZikKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9j
a0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBleGNlcHRp
b24gdGhyb3duIGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCi0gICAgICAgICAgICBleGNl
cHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV4cGVjdGVkX3N0YXR1cywgZS5zdGF0dXMpCi0gICAgICAgICAgICBleGNlcHQgVmVy
c2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4cGVj
dF9oYW5kc2hha2VfZXhjZXB0aW9uKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
ICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkwMC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dF9oYW5kc2hha2VfaHliaTAwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2Y5
ZjI3Y2EyZDkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtl
X2h5YmkwMC5weQorKysgL2Rldi9udWxsCkBAIC0xLDUxNiArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBoYW5kc2hha2Uu
aHliaTAwIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNf
cGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUu
Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtl
RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaTAwIGltcG9ydCBI
YW5kc2hha2VyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaTAwIGltcG9ydCBf
dmFsaWRhdGVfc3VicHJvdG9jb2wKLWZyb20gdGVzdCBpbXBvcnQgbW9jawotCi0KLV9URVNUX0tF
WTEgPSAnNCBAMSAgNDY1NDZ4VyUwbCAxIDUnCi1fVEVTVF9LRVkyID0gJzEyOTk4IDUgWTMgMSAg
LlAwMCcKLV9URVNUX0tFWTMgPSAnXm46ZHNbNFUnCi1fVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0Ug
PSAnOGpLU1wneTpHKkNvLFd4YS0nCi0KLQotX0dPT0RfUkVRVUVTVCA9ICgKLSAgICA4MCwKLSAg
ICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5j
b20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgJ1NlYy1XZWJT
b2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29s
JzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdT
ZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAnT3JpZ2luJzogJ2h0dHA6
Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi1fR09PRF9SRVFVRVNU
X0NBUElUQUxJWkVEX0hFQURFUl9WQUxVRVMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAg
Jy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAg
J0Nvbm5lY3Rpb24nOiAnVVBHUkFERScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBf
VEVTVF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAot
ICAgICAgICAnVXBncmFkZSc6ICdXRUJTT0NLRVQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1L
ZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20n
LAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVRVUVTVF9DQVNFX01JWEVEX0hF
QURFUl9OQU1FUyA9ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsK
LSAgICAgICAgJ2hPc1QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnY09uTmVDdElvTic6ICdV
cGdyYWRlJywKLSAgICAgICAgJ3NFYy13RWJzT2NLZVQta0V5Mic6IF9URVNUX0tFWTIsCi0gICAg
ICAgICdzRWMtd0Vic09jS2VULXBSb1RvQ29MJzogJ3NhbXBsZScsCi0gICAgICAgICd1UGdSYURl
JzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdzRWMtd0Vic09jS2VULWtFeTEnOiBfVEVTVF9LRVkx
LAotICAgICAgICAnb1JpR2lOJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBf
VEVTVF9LRVkzKQotCi1fR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQgPSAoCi0gICAgJ0hUVFAv
MS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1X
ZWJTb2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCi0gICAgJ1NlYy1X
ZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdTZWMtV2ViU29j
a2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0gICAgX1RFU1RfQ0hBTExF
TkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVNQT05TRV9TRUNVUkUgPSAoCi0gICAgJ0hUVFAvMS4x
IDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2Vi
U29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtTG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2Vi
U29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tl
dC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NIQUxMRU5H
RV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9OT05ERUZBVUxUX1BPUlQgPSAoCi0gICAgODA4
MSwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ0hvc3QnOiAnZXhh
bXBsZS5jb206ODA4MScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAg
ICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywK
LSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmln
aW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9H
T09EX1JFU1BPTlNFX05PTkRFRkFVTFRfUE9SVCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNv
Y2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxu
JwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2Nh
dGlvbjogd3M6Ly9leGFtcGxlLmNvbTo4MDgxL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0
LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90
b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NIQUxMRU5HRV9SRVNQ
T05TRSkKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFX05PTkRFRiA9ICgKLSAgICAnSFRUUC8xLjEg
MTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJT
b2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNv
Y2tldC1Mb2NhdGlvbjogd3NzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAgICAnU2Vj
LVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFM
TEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFUVVFU1RfTk9fUFJPVE9DT0wgPSAoCi0gICAgODAs
Ci0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1w
bGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMt
V2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2Nr
ZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAg
J09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykK
LQotX0dPT0RfUkVTUE9OU0VfTk9fUFJPVE9DT0wgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBXZWJT
b2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJc
bicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtTG9j
YXRpb246IHdzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtT3Jp
Z2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdcclxuJyArCi0gICAgX1RFU1RfQ0hB
TExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX1dJVEhfT1BUSU9OQUxfSEVBREVSUyA9
ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ0hv
c3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdFbXB0eVZh
bHVlJzogJycsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0g
ICAgICAgICdBS2V5JzogJ0FWYWx1ZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcs
Ci0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAnT3Jp
Z2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi0j
IFRPRE8odHlvc2hpbm8pOiBJbmNsdWRlIFxyIFxuIGluIGtleTMsIGNoYWxsZW5nZSByZXNwb25z
ZS4KLQotX0dPT0RfUkVRVUVTVF9XSVRIX05PTlBSSU5UQUJMRV9LRVkgPSAoCi0gICAgODAsCi0g
ICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUu
Y29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2Vi
U29ja2V0LUtleTInOiAneSAgUjIgNDggUTFPNCAgZXxCVjMgaTUgMSAgdS0gNjUnLAotICAgICAg
ICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAnVXBncmFkZSc6
ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogJzM2IDcgICA3NCBp
ICA5MiAyXCdtIDkgMEcnLAotICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScs
Ci0gICAgfSwKLSAgICAnJy5qb2luKG1hcChjaHIsIFsweDAxLCAweGQxLCAweGRkLCAweDNiLCAw
eGQxLCAweDU2LCAweDYzLCAweGZmXSkpKQotCi1fR09PRF9SRVNQT05TRV9XSVRIX05PTlBSSU5U
QUJMRV9LRVkgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNo
YWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjog
VXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5j
b20vZGVtb1xyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5j
b21cclxuJwotICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdc
clxuJyArCi0gICAgJycuam9pbihtYXAoY2hyLCBbMHgwYiwgMHg5OSwgMHhmYSwgMHg1NSwgMHhi
ZCwgMHgwMSwgMHgyMywgMHg3YiwKLSAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGEyLCAw
eGYxLCAweGQwLCAweDg3LCAweDhhLCAweGVlLCAweGViXSkpKQotCi1fR09PRF9SRVFVRVNUX1dJ
VEhfUVVFUllfUEFSVCA9ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8/ZT1tYzIn
LAotICAgIHsKLSAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVj
dGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tF
WTIsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAg
ICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBf
VEVTVF9LRVkxLAotICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAg
fSwKLSAgICBfVEVTVF9LRVkzKQotCi1fR09PRF9SRVNQT05TRV9XSVRIX1FVRVJZX1BBUlQgPSAo
Ci0gICAgJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAg
ICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
Ci0gICAgJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb20vZGVtbz9lPW1j
MlxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxu
JwotICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyAr
Ci0gICAgX1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNFKQotCi1fQkFEX1JFUVVFU1RTID0gKAotICAg
ICggICMgSFRUUCByZXF1ZXN0Ci0gICAgICAgIDgwLAotICAgICAgICAnR0VUJywKLSAgICAgICAg
Jy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAgJ0hvc3QnOiAnd3d3Lmdvb2dsZS5jb20n
LAotICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsg
SW50ZWwgTWFjIE9TIFggMTAuNTsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7
IHJ2OjEuOS4xLjMpIEdlY2tvLzIwMDkwODI0IEZpcmVmb3gvMy41LjMnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICcgR1RCNiBHVEJBJywKLSAgICAgICAgICAgICdBY2NlcHQnOiAndGV4dC9o
dG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksJwotICAgICAg
ICAgICAgICAgICAgICAgICcqLyo7cT0wLjgnLAotICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFn
ZSc6ICdlbi11cyxlbjtxPTAuNScsCi0gICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6
aXAsZGVmbGF0ZScsCi0gICAgICAgICAgICAnQWNjZXB0LUNoYXJzZXQnOiAnSVNPLTg4NTktMSx1
dGYtODtxPTAuNywqO3E9MC43JywKLSAgICAgICAgICAgICdLZWVwLUFsaXZlJzogJzMwMCcsCi0g
ICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdrZWVwLWFsaXZlJywKLSAgICAgICAgfSksCi0gICAg
KCAgIyBXcm9uZyBtZXRob2QKLSAgICAgICAgODAsCi0gICAgICAgICdQT1NUJywKLSAgICAgICAg
Jy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAot
ICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVBy
b3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAot
ICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAg
ICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9U
RVNUX0tFWTMpLAotICAgICggICMgTWlzc2luZyBVcGdyYWRlCi0gICAgICAgIDgwLAotICAgICAg
ICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAgJ0hvc3Qn
OiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0g
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAg
ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDov
L2V4YW1wbGUuY29tJywKLSAgICAgICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAg
IyBXcm9uZyBVcGdyYWRlCi0gICAgICAgIDgwLAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9k
ZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAg
ICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNv
Y2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3Rv
Y29sJzogJ3NhbXBsZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdOb25XZWJTb2NrZXQnLAot
ICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAg
ICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9U
RVNUX0tFWTMpLAotICAgICggICMgRW1wdHkgV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgIDgw
LAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAg
ICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBn
cmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJycsCi0gICAgICAgICAgICAnVXBn
cmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9U
RVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0g
ICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAgICggICMgV3JvbmcgcG9ydCBudW1i
ZXIgZm9ybWF0Ci0gICAgICAgIDgwLAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywK
LSAgICAgICAgewotICAgICAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb206MHg1MCcsCi0gICAg
ICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9j
b2wnOiAnc2FtcGxlJywKLSAgICAgICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAg
ICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdP
cmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAgICAgfSwKLSAgICAgICAgX1RFU1Rf
S0VZMyksCi0gICAgKCAgIyBIZWFkZXIvY29ubmVjdGlvbiBwb3J0IG1pc21hdGNoCi0gICAgICAg
IDgwODAsCi0gICAgICAgICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAg
ICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6
ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVky
LAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAg
ICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tl
dC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1w
bGUuY29tJywKLSAgICAgICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAgIyBJbGxl
Z2FsIFdlYlNvY2tldC1Qcm90b2NvbAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAg
ICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29t
JywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tl
dC1Qcm90b2NvbCc6ICdpbGxlZ2FsXHgwOXByb3RvY29sJywKLSAgICAgICAgICAgICdVcGdyYWRl
JzogJ1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1Rf
S0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAg
ICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0pCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdChy
ZXF1ZXN0X2RlZik6Ci0gICAgZGF0YSA9ICcnCi0gICAgaWYgbGVuKHJlcXVlc3RfZGVmKSA+IDQ6
Ci0gICAgICAgIGRhdGEgPSByZXF1ZXN0X2RlZls0XQotICAgIGNvbm4gPSBtb2NrLk1vY2tDb25u
KGRhdGEpCi0gICAgY29ubi5sb2NhbF9hZGRyID0gKCcwLjAuMC4wJywgcmVxdWVzdF9kZWZbMF0p
Ci0gICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoCi0gICAgICAgIG1ldGhvZD1yZXF1ZXN0X2Rl
ZlsxXSwKLSAgICAgICAgdXJpPXJlcXVlc3RfZGVmWzJdLAotICAgICAgICBoZWFkZXJzX2luPXJl
cXVlc3RfZGVmWzNdLAotICAgICAgICBjb25uZWN0aW9uPWNvbm4pCi0KLQotZGVmIF9jcmVhdGVf
Z2V0X21lbW9yaXplZF9saW5lcyhsaW5lcyk6Ci0gICAgIiIiQ3JlYXRlcyBhIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nLiIiIgotCi0gICAgZGVmIGdldF9tZW1vcml6ZWRf
bGluZXMoKToKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0gICAgcmV0dXJuIGdldF9tZW1vcml6ZWRf
bGluZXMKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0c193aXRoX2xpbmVzKHJlcXVlc3RfbGluZXNf
c2V0KToKLSAgICByZXF1ZXN0cyA9IFtdCi0gICAgZm9yIGxpbmVzIGluIHJlcXVlc3RfbGluZXNf
c2V0OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1QpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfbWVtb3JpemVkX2xpbmVzID0gX2NyZWF0ZV9n
ZXRfbWVtb3JpemVkX2xpbmVzKAotICAgICAgICAgICAgICAgIGxpbmVzKQotICAgICAgICByZXF1
ZXN0cy5hcHBlbmQocmVxdWVzdCkKLSAgICByZXR1cm4gcmVxdWVzdHMKLQotCi1jbGFzcyBIeUJp
MDBIYW5kc2hha2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9nb29k
X3JlcXVlc3RfZGVmYXVsdF9wb3J0KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KF9HT09EX1JFUVVFU1QpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJl
cXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX0RFRkFVTFRf
UE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9kZW1vJywgcmVxdWVzdC53c19y
ZXNvdXJjZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tJywg
cmVxdWVzdC53c19vcmlnaW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3dzOi8vZXhhbXBs
ZS5jb20vZGVtbycsIHJlcXVlc3Qud3NfbG9jYXRpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3Jl
cXVlc3RfY2FwaXRhbGl6ZWRfaGVhZGVyX3ZhbHVlcyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX0NBUElUQUxJWkVEX0hFQURFUl9WQUxVRVMp
Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3Bh
dGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX0RFRkFVTFRfUE9SVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYg
dGVzdF9nb29kX3JlcXVlc3RfY2FzZV9taXhlZF9oZWFkZXJfbmFtZXMoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9DQVNFX01JWEVEX0hFQURF
Ul9OQU1FUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5N
b2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JULAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQot
ICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9zZWN1cmVfZGVmYXVsdF9wb3J0KHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1QpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5sb2NhbF9hZGRyID0gKCcwLjAuMC4wJywgNDQzKQotICAgICAgICBy
ZXF1ZXN0LmlzX2h0dHBzXyA9IFRydWUKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIo
cmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfU0VDVVJF
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90
b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9ub25kZWZhdWx0X3BvcnQoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9OT05ERUZB
VUxUX1BPUlQpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVy
KCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChfR09PRF9SRVNQT05TRV9OT05ERUZBVUxUX1BPUlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRl
c3RfZ29vZF9yZXF1ZXN0X3NlY3VyZV9ub25fZGVmYXVsdF9wb3J0KHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUKQot
ICAgICAgICByZXF1ZXN0LmlzX2h0dHBzXyA9IFRydWUKLSAgICAgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9O
U0VfU0VDVVJFX05PTkRFRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScs
IHJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3RfZGVmYXVs
dF9ub19wcm90b2NvbChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChf
R09PRF9SRVFVRVNUX05PX1BST1RPQ09MKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9OT19Q
Uk9UT0NPTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19w
cm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9vcHRpb25hbF9oZWFkZXJzKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfV0lU
SF9PUFRJT05BTF9IRUFERVJTKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1
ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNo
YWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVZhbHVlJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bJ0FLZXknXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5b
J0VtcHR5VmFsdWUnXSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF93aXRoX25vbnByaW50
YWJsZV9rZXkoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0Rf
UkVRVUVTVF9XSVRIX05PTlBSSU5UQUJMRV9LRVkpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNF
X1dJVEhfTk9OUFJJTlRBQkxFX0tFWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Nh
bXBsZScsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rf
d2l0aF9xdWVyeV9wYXJ0KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KF9HT09EX1JFUVVFU1RfV0lUSF9RVUVSWV9QQVJUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05T
RV9XSVRIX1FVRVJZX1BBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3czovL2V4
YW1wbGUuY29tL2RlbW8/ZT1tYzInLCByZXF1ZXN0LndzX2xvY2F0aW9uKQotCi0gICAgZGVmIHRl
c3RfYmFkX3JlcXVlc3RzKHNlbGYpOgotICAgICAgICBmb3IgcmVxdWVzdCBpbiBtYXAoX2NyZWF0
ZV9yZXF1ZXN0LCBfQkFEX1JFUVVFU1RTKToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5kc2hha2Up
Ci0KLQotY2xhc3MgSHlCaTAwVmFsaWRhdGVTdWJwcm90b2NvbFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiB0ZXN0X3ZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYpOgotICAgICAgICAj
IHNob3VsZCBzdWNjZWVkLgotICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZScp
Ci0gICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCgnU2FtcGxlJykKLSAgICAgICAgX3ZhbGlk
YXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDdlcHJvdG9jb2wnKQotICAgICAgICBfdmFsaWRhdGVf
c3VicHJvdG9jb2woJ3NhbXBsZVx4MjBwcm90b2NvbCcpCi0KLSAgICAgICAgIyBzaG91bGQgZmFp
bC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNl
cHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2NvbCcpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAnc2FtcGxlXHg3ZnByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNo
YWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJv
dG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICB1J1x1NjVlNVx1NjcyYycpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQzNmRjNTdjMzczMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJU
ZXN0cyBmb3IgaHR0cF9oZWFkZXJfdXRpbCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0
Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotY2xh
c3MgVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIGh0
dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVf
dXJpKHNlbGYpOgotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0
aWwucGFyc2VfdXJpKCcvd3MvdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvd3MvdGVzdCcsIHJlc291cmNlKQotCi0gICAgZGVmIHRlc3RfcGFyc2Vf
YWJzb2x1dGVfdXJpKHNlbGYpOgotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBf
aGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgw
L3dzL3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwMDgwLCBwb3J0KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcvd3MvdGVzdCcsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291
cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCi0gICAgICAgICAgICAnd3M6Ly9leGFt
cGxlLmNvbS93cy90ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20n
LCBob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvd3MvdGVzdCcsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQs
IHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCi0gICAgICAgICAgICAnd3Nz
Oi8vZXhhbXBsZS5jb20vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20n
LCBob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQ0MywgcG9ydCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnLycsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291
cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCi0gICAgICAgICAgICAnd3M6Ly9leGFt
cGxlLmNvbTo4MDgwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBo
b3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgwODAsIHBvcnQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX2ludmFsaWRf
dXJpKHNlbGYpOgotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0
aWwucGFyc2VfdXJpKCd3czovLy8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJl
c291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRp
bC5wYXJzZV91cmkoJ3dzOi8vbG9jYWxob3N0OicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVzb3VyY2UpCi0KLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hl
YWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly9sb2NhbGhvc3Q6L3dzJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90
ZXN0X21lbW9yaXppbmdmaWxlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjFi
OGVlZjQzMzcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbWVtb3Jpemlu
Z2ZpbGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgbWVtb3JpemluZ2Zp
bGUgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWlt
cG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJz
b2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2Zp
bGUKLQotCi1jbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0
dGVzdCBmb3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxlLiIiIgotCi0gICAgZGVmIGNoZWNrKHNlbGYs
IG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVkX2xpc3QpOgotICAgICAgICBmb3Ig
dW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKLSAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZS5y
ZWFkbGluZSgpCi0gICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1v
cml6ZWRfbGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0
KSwgbGVuKGFjdHVhbF9saXN0KSkKLSAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlw
KGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRlZiBjaGVja193aXRoX3NpemUoc2VsZiwgbWVt
b3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xpc3QpOgotICAgICAgICByZWFkX2xp
c3QgPSBbXQotICAgICAgICByZWFkX2xpbmUgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAg
ICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZShyZWFkX3NpemUpCi0gICAg
ICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKLSAgICAgICAgICAgIGlmIGxpbmVfbGVuZ3Ro
ID09IDA6Ci0gICAgICAgICAgICAgICAgaWYgcmVhZF9saW5lICE9ICcnOgotICAgICAgICAgICAg
ICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKLSAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKLSAgICAgICAgICAgIGlmIGxpbmVbbGlu
ZV9sZW5ndGggLSAxXSA9PSAnXG4nOgotICAgICAgICAgICAgICAgIHJlYWRfbGlzdC5hcHBlbmQo
cmVhZF9saW5lKQotICAgICAgICAgICAgICAgIHJlYWRfbGluZSA9ICcnCi0gICAgICAgIGFjdHVh
bF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihyZWFkX2xpc3Qp
KQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVhZCBpbiB6aXAoZXhwZWN0ZWRfbGlz
dCwgYWN0dWFsX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWFkX2xpc3QpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0
dWFsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVhZCkKLQotICAg
IGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAgICAgIG1lbW9yaXppbmdf
ZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAot
ICAgICAgICAgICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKLSAgICAgICAgc2VsZi5j
aGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJywgJ1dlbGNvbWUn
XSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfbGltaXRfbWVtb3JpemVkX2xp
bmVzKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1v
cml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAgICAgICAnSGVsbG9cbldv
cmxkXG5XZWxjb21lJyksIDIpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAz
LCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQotCi0gICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9s
aW5lc19lbXB0eV9maWxlKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6
aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAgICAg
ICAnJykpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAxMCwgW10pCi0KLSAg
ICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX3dpdGhfc2l6ZShzZWxmKToKLSAgICAgICAg
Zm9yIHNpemUgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbWVtb3JpemluZ19maWxlID0g
bWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0gICAgICAg
ICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScpKQotICAgICAgICAgICAgc2VsZi5jaGVj
a193aXRoX3NpemUobWVtb3JpemluZ19maWxlLCBzaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWydIZWxsb1xuJywgJ1dvcmxkXG4nLCAnV2VsY29tZSddKQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21vY2sucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfbW9jay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RjMjNh
NzNkOGZiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21vY2sucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgbW9jayBtb2R1bGUuIiIiCi0KLQotaW1w
b3J0IFF1ZXVlCi1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNl
dF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBt
b2R1bGUuCi0KLWZyb20gdGVzdCBpbXBvcnQgbW9jawotCi0KLWNsYXNzIE1vY2tDb25uVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgTW9ja0Nvbm4gY2xhc3Mu
IiIiCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1v
Y2tDb25uKCdBQkNcclxuREVGR1xyXG5cclxuSElKSycpCi0KLSAgICBkZWYgdGVzdF9yZWFkbGlu
ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbicsIHNlbGYuX2Nvbm4u
cmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnREVGR1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hJSksnLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4u
cmVhZGxpbmUoKSkKLQotICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdFRkdcclxuXHJcbkhJJywgc2VsZi5fY29ubi5yZWFkKDkpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCi0KLSAgICBkZWYgdGVzdF9yZWFk
X2FuZF9yZWFkbGluZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbkQn
LCBzZWxmLl9jb25uLnJlYWQoNikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VGR1xyXG4n
LCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xyXG5I
SUpLJywgc2VsZi5fY29ubi5yZWFkKDkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBz
ZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0KLSAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKLSAgICAg
ICAgc2VsZi5fY29ubi53cml0ZSgnSGVsbG9cclxuJykKLSAgICAgICAgc2VsZi5fY29ubi53cml0
ZSgnV29ybGRcclxuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9cclxuV29ybGRc
clxuJywgc2VsZi5fY29ubi53cml0dGVuX2RhdGEoKSkKLQotCi1jbGFzcyBNb2NrQmxvY2tpbmdD
b25uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgTW9ja0Js
b2NraW5nQ29ubiBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6Ci0gICAgICAg
ICIiIlRlc3RzIHRoYXQgZGF0YSBwdXQgdG8gTW9ja0Jsb2NraW5nQ29ubiBieSBwdXRfYnl0ZXMg
bWV0aG9kIGNhbiBiZQotICAgICAgICByZWFkIGZyb20gaXQuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIGNsYXNzIExpbmVSZWFkZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgICAgICAgICAiIiJB
IHRlc3QgY2xhc3MgdGhhdCBsYXVuY2hlcyBhIHRocmVhZCwgY2FsbHMgcmVhZGxpbmUgb24gdGhl
Ci0gICAgICAgICAgICBzcGVjaWZpZWQgY29ubiByZXBlYXRlZGx5IGFuZCBwdXRzIHRoZSByZWFk
IGRhdGEgdG8gdGhlIHNwZWNpZmllZAotICAgICAgICAgICAgcXVldWUuCi0gICAgICAgICAgICAi
IiIKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4sIHF1ZXVlKToKLSAgICAg
ICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcXVldWUgPSBxdWV1ZQotICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm4gPSBjb25u
Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgICAgICAgICBz
ZWxmLnN0YXJ0KCkKLQotICAgICAgICAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgICAgICAg
ICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29ubi5yZWFk
bGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChkYXRhKQotCi0gICAg
ICAgIGNvbm4gPSBtb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKQotICAgICAgICBxdWV1ZSA9IFF1ZXVl
LlF1ZXVlKCkKLSAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBxdWV1ZSkKLSAgICAg
ICAgc2VsZi5mYWlsVW5sZXNzKHF1ZXVlLmVtcHR5KCkpCi0gICAgICAgIGNvbm4ucHV0X2J5dGVz
KCdGb28gYmFyXHJcbicpCi0gICAgICAgIHJlYWQgPSBxdWV1ZS5nZXQoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdGb28gYmFyXHJcbicsIHJlYWQpCi0KLQotY2xhc3MgTW9ja1RhYmxlVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgTW9ja1RhYmxlIGNs
YXNzLiIiIgotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGljdChzZWxmKToKLSAgICAgICAg
dGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6ICdWYWx1ZSd9KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21f
bGlzdChzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShbKCdLZXknLCAnVmFs
dWUnKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVkn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAg
ICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2Nr
Lk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1Zh
bHVlJywgdGFibGVbJ2tleSddKQotCi0gICAgZGVmIHRlc3Rfc2V0X2FuZF9nZXQoc2VsZik6Ci0g
ICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIHRhYmxlLmdldCgnS2V5JykpCi0gICAgICAgIHRhYmxlWydLZXknXSA9ICdWYWx1ZScK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tleScpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgna2V5JykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsnS2V5J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdW
YWx1ZScsIHRhYmxlWydLRVknXSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXNndXRpbC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZlZGNmOTJmNjFmLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21zZ3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzU2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotIiIiVGVzdHMgZm9yIG1zZ3V0aWwgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBhcnJheQot
aW1wb3J0IFF1ZXVlCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgdW5pdHRl
c3QKLWltcG9ydCB6bGliCi0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRo
IHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVu
c2lvbnMgaW1wb3J0IFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
c3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0g
aW1wb3J0IFN0cmVhbU9wdGlvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1m
cm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi0jIFdlIHVzZSBvbmUgZml4ZWQgbm9uY2UgZm9yIHRl
c3RpbmcgaW5zdGVhZCBvZiBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgUFJORy4KLV9NQVNLSU5H
X05PTkNFID0gJ0FCQ0QnCi0KLQotZGVmIF9tYXNrX2h5YmkoZnJhbWUpOgotICAgIGZyYW1lX2tl
eSA9IG1hcChvcmQsIF9NQVNLSU5HX05PTkNFKQotICAgIGZyYW1lX2tleV9sZW4gPSBsZW4oZnJh
bWVfa2V5KQotICAgIHJlc3VsdCA9IGFycmF5LmFycmF5KCdCJykKLSAgICByZXN1bHQuZnJvbXN0
cmluZyhmcmFtZSkKLSAgICBjb3VudCA9IDAKLSAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKHJlc3Vs
dCkpOgotICAgICAgICByZXN1bHRbaV0gXj0gZnJhbWVfa2V5W2NvdW50XQotICAgICAgICBjb3Vu
dCA9IChjb3VudCArIDEpICUgZnJhbWVfa2V5X2xlbgotICAgIHJldHVybiBfTUFTS0lOR19OT05D
RSArIHJlc3VsdC50b3N0cmluZygpCi0KLQotZGVmIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNz
b3IocHJvY2Vzc29yLCByZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgcmVzcG9uc2UgPSBw
cm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgaWYgcmVzcG9uc2UgaXMgbm90
IE5vbmU6Ci0gICAgICAgIHByb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0
aW9ucykKLSAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycy5hcHBlbmQocHJv
Y2Vzc29yKQotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICBy
ZWFkX2RhdGEsCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1Ob25lLAotICAgICAgICBw
ZXJtZXNzYWdlX2NvbXByZXNzaW9uX3JlcXVlc3Q9Tm9uZSwKLSAgICAgICAgcGVybWVzc2FnZV9k
ZWZsYXRlX3JlcXVlc3Q9Tm9uZSk6Ci0gICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0
aW9uPW1vY2suTW9ja0Nvbm4oJycuam9pbihyZWFkX2RhdGEpKSkKLSAgICByZXEud3NfdmVyc2lv
biA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCi0gICAgcmVxLndzX2V4dGVuc2lvbl9wcm9j
ZXNzb3JzID0gW10KLQotICAgIHByb2Nlc3NvciA9IE5vbmUKLSAgICBpZiBkZWZsYXRlX2ZyYW1l
X3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4
dGVuc2lvblByb2Nlc3NvcihkZWZsYXRlX2ZyYW1lX3JlcXVlc3QpCi0gICAgZWxpZiBwZXJtZXNz
YWdlX2NvbXByZXNzaW9uX3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nlc3NvciA9
IFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBw
ZXJtZXNzYWdlX2NvbXByZXNzaW9uX3JlcXVlc3QpCi0gICAgZWxpZiBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdCBpcyBub3QgTm9uZToKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURl
ZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3QpCi0KLSAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAg
IGlmIHByb2Nlc3NvciBpcyBub3QgTm9uZToKLSAgICAgICAgX2luc3RhbGxfZXh0ZW5zaW9uX3By
b2Nlc3Nvcihwcm9jZXNzb3IsIHJlcSwgc3RyZWFtX29wdGlvbnMpCi0gICAgcmVxLndzX3N0cmVh
bSA9IFN0cmVhbShyZXEsIHN0cmVhbV9vcHRpb25zKQotCi0gICAgcmV0dXJuIHJlcQotCi0KLWRl
ZiBfY3JlYXRlX3JlcXVlc3QoKmZyYW1lcyk6Ci0gICAgIiIiQ3JlYXRlcyBNb2NrUmVxdWVzdCB1
c2luZyBkYXRhIGdpdmVuIGFzIGZyYW1lcy4KLQotICAgIGZyYW1lcyB3aWxsIGJlIHJldHVybmVk
IG9uIGNhbGxpbmcgcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQoKSB3aGVyZSByZXF1ZXN0Ci0gICAg
aXMgTW9ja1JlcXVlc3QgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4KLSAgICAiIiIKLQotICAg
IHJlYWRfZGF0YSA9IFtdCi0gICAgZm9yIChoZWFkZXIsIGJvZHkpIGluIGZyYW1lczoKLSAgICAg
ICAgcmVhZF9kYXRhLmFwcGVuZChoZWFkZXIgKyBfbWFza19oeWJpKGJvZHkpKQotCi0gICAgcmV0
dXJuIF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhKQotCi0KLWRlZiBfY3Jl
YXRlX2Jsb2NraW5nX3JlcXVlc3QoKToKLSAgICAiIiJDcmVhdGVzIE1vY2tSZXF1ZXN0LgotCi0g
ICAgRGF0YSB3cml0dGVuIHRvIGEgTW9ja1JlcXVlc3QgY2FuIGJlIHJlYWQgb3V0IGJ5IGNhbGxp
bmcKLSAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkuCi0gICAgIiIiCi0KLSAg
ICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQmxvY2tpbmdDb25u
KCkpCi0gICAgcmVxLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotICAg
IHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygpCi0gICAgcmVxLndzX3N0cmVhbSA9IFN0
cmVhbShyZXEsIHN0cmVhbV9vcHRpb25zKQotICAgIHJldHVybiByZXEKLQotCi1kZWYgX2NyZWF0
ZV9yZXF1ZXN0X2hpeGllNzUocmVhZF9kYXRhPScnKToKLSAgICByZXEgPSBtb2NrLk1vY2tSZXF1
ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihyZWFkX2RhdGEpKQotICAgIHJlcS53c19zdHJl
YW0gPSBTdHJlYW1IaXhpZTc1KHJlcSkKLSAgICByZXR1cm4gcmVxCi0KLQotZGVmIF9jcmVhdGVf
YmxvY2tpbmdfcmVxdWVzdF9oaXhpZTc1KCk6Ci0gICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChj
b25uZWN0aW9uPW1vY2suTW9ja0Jsb2NraW5nQ29ubigpKQotICAgIHJlcS53c19zdHJlYW0gPSBT
dHJlYW1IaXhpZTc1KHJlcSkKLSAgICByZXR1cm4gcmVxCi0KLQotY2xhc3MgQmFzaWNNZXNzYWdl
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQmFzaWMgdGVzdHMgZm9yIFN0cmVhbS4i
IiIKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1SGVsbG8nLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcGF5bG9hZCA9ICdhJyAq
IDEyNQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnXHg4MVx4N2QnICsgcGF5bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lZGl1bV9t
ZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI2Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHg3ZVx4MDBceDdl
JyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHBheWxvYWQgPSAnYScgKiAoKDEgPDwgMTYpIC0g
MSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1x4ODFceDdlXHhmZlx4ZmYnICsgcGF5bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2xh
cmdlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9t
ZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFc
eDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnICsgcGF5bG9hZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAg
ICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
IHUnXHU2NWU1JykKLSAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5NyxhNSBpbiBV
VEYtOAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwM1x4ZTZceDk3XHhhNScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50cyhzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICdIZWxsbycsIEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnICcsIEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnV29ybGQnLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
JyEnLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAxXHgwNUhlbGxvXHgwMFx4
MDEgXHgwMFx4MDVXb3JsZFx4ODBceDAxIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFn
bWVudHNfaW1tZWRpYXRlX3plcm9fdGVybWluYXRpb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnSGVsbG8gV29ybGQhJywgRmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsICcnLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAxXHgwY0hlbGxv
IFdvcmxkIVx4ODBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4
ODFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODYnLCAnV29ybGQhJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
KHJlcXVlc3QpKQotCi0gICAgICAgIHBheWxvYWQgPSAnYScgKiAxMjUKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODFceGZkJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0K
LSAgICBkZWYgdGVzdF9yZWNlaXZlX21lZGl1bV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXls
b2FkID0gJ2EnICogMTI2Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgx
XHhmZVx4MDBceDdlJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9h
ZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgcGF5bG9hZCA9
ICdhJyAqICgoMSA8PCAxNikgLSAxKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KCgnXHg4MVx4ZmVceGZmXHhmZicsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRl
c3RfcmVjZWl2ZV9sYXJnZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICog
KDEgPDwgMTYpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAg
ICAoJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnLCBwYXlsb2FkKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3Vz
aW5nX21pbmltYWxfbnVtYmVyX29mX2J5dGVzKHNlbGYpOgotICAgICAgICAjIExvZyB3YXJuaW5n
IG9uIHJlY2VpdmluZyBiYWQgcGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQot
ICAgICAgICAjIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5n
LgotCi0gICAgICAgIHBheWxvYWQgPSAnYScKLSAgICAgICAgIyAxIGJ5dGUgY2FuIGJlIHJlcHJl
c2VudGVkIHdpdGhvdXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQuCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODFceGZmXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnLCBwYXlsb2FkKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV91bmljb2RlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ODMnLCAnXHhlNlx4OWNceGFjJykpCi0gICAgICAgICMg
VSs2NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0g
ICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2RlKHNlbGYpOgotICAg
ICAgICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgxXHg4MicsICdceDgwXHg4MScpKQotICAgICAgICAj
IEludmFsaWQgY2hhcmFjdGVycyBzaG91bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFVURjhFeGNlcHRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHMoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4
MDFceDg1JywgJ0hlbGxvJyksCi0gICAgICAgICAgICAoJ1x4MDBceDgxJywgJyAnKSwKLSAgICAg
ICAgICAgICgnXHgwMFx4ODUnLCAnV29ybGQnKSwKLSAgICAgICAgICAgICgnXHg4MFx4ODEnLCAn
IScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRz
X3VuaWNvZGUoc2VsZik6Ci0gICAgICAgICMgVVRGLTggZW5jb2RlcyBVKzZmMjIgaW50byBlNmJj
YTIgYW5kIFUrNWI1NyBpbnRvIGU1YWQ5Ny4KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgKLSAgICAgICAgICAgICgnXHgwMVx4ODInLCAnXHhlNlx4YmMnKSwKLSAgICAgICAgICAg
ICgnXHgwMFx4ODInLCAnXHhhMlx4ZTUnKSwKLSAgICAgICAgICAgICgnXHg4MFx4ODInLCAnXHhh
ZFx4OTcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1NmYyMlx1NWI1NycsIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFn
bWVudHNfaW1tZWRpYXRlX3plcm9fdGVybWluYXRpb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDhjJywgJ0hlbGxvIFdvcmxk
IScpLCAoJ1x4ODBceDgwJywgJycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBX
b3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRzX2R1cGxpY2F0ZV9zdGFydChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHgwMVx4ODUnLCAnSGVsbG8nKSwg
KCdceDAxXHg4NScsICdXb3JsZCcpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGls
LkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0K
LSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19pbnRlcm1lZGlhdGVfYnV0X25vdF9zdGFy
dGVkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHgwMFx4ODUn
LCAnSGVsbG8nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJh
bWVFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KQotCi0gICAgZGVmIHRl
c3RfcmVjZWl2ZV9mcmFnbWVudHNfZW5kX2J1dF9ub3Rfc3RhcnRlZChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODBceDg1JywgJ0hlbGxvJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9k
aXNjYXJkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAg
ICAgICAgKCdceDhmXHg4NicsICdJR05PUkUnKSwgKCdceDgxXHg4NScsICdIZWxsbycpLAotICAg
ICAgICAgICAgKCdceDhmXHg4OScsICdESVNSRUdBUkQnKSwgKCdceDgxXHg4NicsICdXb3JsZCEn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhj
ZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYg
dGVzdF9yZWNlaXZlX2Nsb3NlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KAotICAgICAgICAgICAgKCdceDg4XHg4YScsIHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsg
J0dvb2QgYnllJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgcmVx
dWVzdC53c19jbG9zZV9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdHb29kIGJ5ZScs
IHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9sb25nZXN0X2Ns
b3NlKHNlbGYpOgotICAgICAgICByZWFzb24gPSAnYScgKiAxMjMKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4OFx4ZmQnLAotICAgICAgICAgICAg
IHN0cnVjdC5wYWNrKCchSCcsIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpICsgcmVhc29u
KSkKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RB
VFVTX05PUk1BTF9DTE9TVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYXNvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3Nl
X2NvZGUsIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVxdWVzdC53c19jbG9zZV9yZWFzb24sIHJlYXNvbikKLQotICAgIGRlZiB0ZXN0X3Nl
bmRfY2xvc2VfdG9vX2xvbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAnYScgKiAxMjQpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Nsb3NlX2lu
Y29uc2lzdGVudF9jb2RlX2FuZF9yZWFzb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQotICAgICAgICAjIHJlYXNvbiBwYXJhbWV0ZXIgbXVzdCBub3QgYmUgc3Bl
Y2lmaWVkIHdoZW4gY29kZSBpcyBOb25lLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1
dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtLmNsb3NlX2Nvbm5lY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
d3Nfc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYScpCi0KLSAgICBkZWYgdGVzdF9zZW5kX3Bpbmcoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfcGlu
ZyhyZXF1ZXN0LCAnSGVsbG8gV29ybGQhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4
OVx4MGNIZWxsbyBXb3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5n
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNn
dXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ2EnICogMTI1KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdceDg5XHg3ZCcgKyAnYScgKiAxMjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5n
X3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScgKiAx
MjYpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Bpbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3Rz
IHJlY2VpdmluZyBhIHBpbmcgY29udHJvbCBmcmFtZS4iIiIKLQotICAgICAgICBkZWYgaGFuZGxl
cihyZXF1ZXN0LCBtZXNzYWdlKToKLSAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQot
Ci0gICAgICAgICMgU3RyZWFtIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9u
ZyB3aXRob3V0IGFueSBhY3Rpb24KLSAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4OVx4ODUn
LCAnSGVsbG8nKSwgKCdceDgxXHg4NScsICdXb3JsZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceDhhXHgwNUhlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4OVx4ODUnLCAnSGVsbG8nKSwgKCdc
eDgxXHg4NScsICdXb3JsZCcpKQotICAgICAgICByZXF1ZXN0Lm9uX3BpbmdfaGFuZGxlciA9IGhh
bmRsZXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVk
KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9sb25nZXN0X3Bpbmcoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceGZkJywgJ2EnICog
MTI1KSwgKCdceDgxXHg4NScsICdXb3JsZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdX
b3JsZCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdceDhhXHg3ZCcgKyAnYScgKiAxMjUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVj
ZWl2ZV9waW5nX3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KCgnXHg4OVx4ZmVceDAwXHg3ZScsICdhJyAqIDEyNikpCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfcG9uZyhzZWxmKToKLSAgICAgICAg
IiIiVGVzdHMgcmVjZWl2aW5nIGEgcG9uZyBjb250cm9sIGZyYW1lLiIiIgotCi0gICAgICAgIGRl
ZiBoYW5kbGVyKHJlcXVlc3QsIG1lc3NhZ2UpOgotICAgICAgICAgICAgcmVxdWVzdC5jYWxsZWQg
PSBUcnVlCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAg
ICgnXHg4YVx4ODUnLCAnSGVsbG8nKSwgKCdceDgxXHg4NScsICdXb3JsZCcpKQotICAgICAgICBy
ZXF1ZXN0Lm9uX3BvbmdfaGFuZGxlciA9IGhhbmRsZXIKLSAgICAgICAgbXNndXRpbC5zZW5kX3Bp
bmcocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4OVx4MDVI
ZWxsbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQotICAgICAgICAjIFZhbGlkIHBvbmcgaXMgcmVjZWl2ZWQsIGJ1dCByZWNlaXZl
X21lc3NhZ2Ugd29uJ3QgcmV0dXJuIGZvciBpdC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
V29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgIyBDaGVj
ayB0aGF0IG5vdGhpbmcgd2FzIHdyaXR0ZW4gYWZ0ZXIgcmVjZWl2ZV9tZXNzYWdlIGNhbGwuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODlceDA1SGVsbG8nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmVxdWVzdC5jYWxsZWQpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Vu
c29saWNpdGVkX3Bvbmcoc2VsZik6Ci0gICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxv
d2VkIGZyb20gSHlCaSAwNy4KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAg
ICAgICAgICAgICgnXHg4YVx4ODUnLCAnSGVsbG8nKSwgKCdceDgxXHg4NScsICdXb3JsZCcpKQot
ICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KQotCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyks
ICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVz
dCwgJ0p1bWJvJykKLSAgICAgICAgIyBCb2R5IG1pc21hdGNoLgotICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KQotCi0gICAgZGVmIHRlc3RfcGluZ19jYW5ub3RfYmVfZnJh
Z21lbnRlZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4MDlc
eDg1JywgJ0hlbGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxp
ZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRl
ZiB0ZXN0X3Bpbmdfd2l0aF90b29fbG9uZ19wYXlsb2FkKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4OVx4ZmVceDAxXHgwMCcsICdhJyAqIDI1NikpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotCi1jbGFzcyBEZWZsYXRlRnJhbWVUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3IgY2hlY2tpbmcgZGVmbGF0ZS1mcmFt
ZSBleHRlbnNpb24uIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZB
VUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAg
ICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9G
UkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9y
YXdkYXRhKAotICAgICAgICAgICAgJycsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24p
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgZXhwZWN0
ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygn
SGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxs
b1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVs
bG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJl
c3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBleHBlY3Rl
ZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCAr
PSBjb21wcmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9t
ZXNzYWdlX2JmaW5hbChzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgJycsIGRlZmxh
dGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEs
IGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgZGVmbGF0ZV9m
cmFtZV9wcm9jZXNzb3IgPSByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdCi0gICAg
ICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yLnNldF9iZmluYWwoVHJ1ZSkKLSAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0KLSAg
ICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG8gKyBjaHIoMCkKLSAgICAgICAg
ZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhw
ZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21w
cmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRF
RkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21w
cmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21w
cmVzc2VkX3dvcmxkICsgY2hyKDApCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVu
KGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfY29tcF9iaXQoc2Vs
Zik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHps
aWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMp
Ci0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgJycsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1l
eHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihyZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9wcm9jZXNzb3IgPSBy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9t
ZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29y
LmRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5l
bmFibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nKQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBj
b21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBl
Y3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCi0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODFceDA1SGVs
bG8nCi0KLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygn
SGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gPSBjb21wcmVz
c2VkXzJuZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNv
bXByZXNzZWRfMm5kX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkXzJuZF9o
ZWxsbwotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9ub19jb250
ZXh0X3Rha2VvdmVyX3BhcmFtZXRlcihzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNv
bXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIu
REVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAg
ICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
ICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBp
biB4cmFuZ2UoMyk6Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
SGVsbG8nKQotCi0gICAgICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNvbXByZXNz
KCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfbWVzc2FnZSArPSBjb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJlc3Nl
ZF9tZXNzYWdlWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgPSAnXHhjMSVjJyAlIGxlbihjb21wcmVz
c2VkX21lc3NhZ2UpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfbWVzc2FnZQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBleHBlY3RlZCArIGV4cGVjdGVk
ICsgZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRl
ZiB0ZXN0X2JhZF9yZXF1ZXN0X3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRo
YXQgaWYgdGhlcmUncyBhbnl0aGluZyB3cm9uZyB3aXRoIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9u
Ci0gICAgICAgIHJlcXVlc3QsIGRlZmxhdGUtZnJhbWUgaXMgcmVqZWN0ZWQuCi0gICAgICAgICIi
IgotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICAjIG1heF93aW5kb3dfYml0cyBsZXNz
IHRoYW4gOCBpcyBpbGxlZ2FsLgotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignbWF4
X3dpbmRvd19iaXRzJywgJzcnKQotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRl
bnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAgICAgICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJ
T04pCi0gICAgICAgICMgbWF4X3dpbmRvd19iaXRzIGdyZWF0ZXIgdGhhbiAxNSBpcyBpbGxlZ2Fs
LgotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzE2
JykKLSAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4
dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICAjIE5v
biBpbnRlZ2VyIG1heF93aW5kb3dfYml0cyBpcyBpbGxlZ2FsLgotICAgICAgICBleHRlbnNpb24u
YWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJ2Zvb2JhcicpCi0gICAgICAgIHByb2Nl
c3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2Uo
KSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1v
bi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBub19jb250ZXh0X3Rha2VvdmVy
IG11c3Qgbm90IGhhdmUgYW55IHZhbHVlLgotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRl
cignbm9fY29udGV4dF90YWtlb3ZlcicsICdmb29iYXInKQotICAgICAgICBwcm9jZXNzb3IgPSBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAg
ICBkZWYgdGVzdF9yZXNwb25zZV9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lP
TikKLSAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4
dGVuc2lvbikKLSAgICAgICAgcHJvY2Vzc29yLnNldF9yZXNwb25zZV93aW5kb3dfYml0cyg4KQot
ICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ21heF93aW5kb3df
Yml0cycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc4JywgcmVzcG9uc2UuZ2V0X3BhcmFt
ZXRlcl92YWx1ZSgnbWF4X3dpbmRvd19iaXRzJykpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0g
ICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNp
b24pCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcihU
cnVlKQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ25vX2Nv
bnRleHRfdGFrZW92ZXInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAotICAgICAgICAgICAg
cmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbm9fY29udGV4dF90YWtlb3ZlcicpIGlzIE5v
bmUpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGNvbXBy
ZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZGF0YSA9
ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxs
bycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzot
NF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAw
eDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAg
ICAgICBjb21wcmVzc2VkX3dlYnNvY2tldCA9IGNvbXByZXNzLmNvbXByZXNzKCdXZWJTb2NrZXQn
KQotICAgICAgICBjb21wcmVzc2VkX3dlYnNvY2tldCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
RklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX3dlYnNvY2tldCArPSAnXHgwMCcKLSAgICAgICAg
ZGF0YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF93ZWJzb2NrZXQpIHwgMHg4MCkKLSAg
ICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd2Vic29ja2V0KQotCi0gICAgICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNv
bXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZGF0
YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQotICAgICAgICBk
YXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF93b3JsZCkKLQotICAgICAgICAjIENsb3NlIGZy
YW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2so
JyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRh
dGEsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dlYlNvY2tldCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJl
cXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21l
c3NhZ2VfY2xpZW50X3VzaW5nX3NtYWxsZXJfd2luZG93KHNlbGYpOgotICAgICAgICAiIiJUZXN0
IHRoYXQgZnJhbWVzIGNvbWluZyBmcm9tIGEgY2xpZW50IHdoaWNoIGlzIHVzaW5nIHNtYWxsZXIg
d2luZG93Ci0gICAgICAgIHNpemUgdGhhdCB0aGUgc2VydmVyIGFyZSBjb3JyZWN0bHkgcmVjZWl2
ZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgVXNpbmcgdGhlIHNtYWxsZXN0IHdpbmRvdyBi
aXRzIG9mIDggZm9yIGdlbmVyYXRpbmcgaW5wdXQgZnJhbWVzLgotICAgICAgICBjb21wcmVzcyA9
IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lP
TiwgemxpYi5ERUZMQVRFRCwgLTgpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgIyBV
c2UgYSBmcmFtZSB3aG9zZSBjb250ZW50IGlzIGJpZ2dlciB0aGFuIHRoZSBjbGllbnRzJyBERUZM
QVRFIHdpbmRvdwotICAgICAgICAjIHNpemUgYmVmb3JlIGNvbXByZXNzaW9uLiBUaGUgY29udGVu
dCBtYWlubHkgY29uc2lzdHMgb2YgJ2EnIGJ1dAotICAgICAgICAjIHJlcGV0aXRpb24gb2YgJ2In
IGlzIHB1dCBhdCB0aGUgaGVhZCBhbmQgdGFpbCBzbyB0aGF0IGlmIHRoZSB3aW5kb3cKLSAgICAg
ICAgIyBzaXplIGlzIGJpZywgdGhlIGhlYWQgaXMgYmFjay1yZWZlcmVuY2VkIGJ1dCBpZiBzbWFs
bCwgbm90LgotICAgICAgICBwYXlsb2FkID0gJ2InICogNjQgKyAnYScgKiAxMDI0ICsgJ2InICog
NjQKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKHBheWxvYWQp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0K
LSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgw
KQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAg
ICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymko
c3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5T
SU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAg
ICAgICAgICAgIGRhdGEsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9jb21wX2JpdChz
ZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAg
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklU
UykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9
IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihj
b21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21w
cmVzc2VkX2hlbGxvKQotCi0gICAgICAgIGRhdGEgKz0gJ1x4ODFceDg1JyArIF9tYXNrX2h5Ymko
J0hlbGxvJykKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFY
X1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3MuY29tcHJl
c3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29t
cHJlc3NlZF8ybmRfaGVsbG9bOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihj
b21wcmVzc2VkXzJuZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5Ymko
Y29tcHJlc3NlZF8ybmRfaGVsbG8pCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwg
ZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgZm9yIGkgaW4geHJhbmdl
KDMpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV92YXJp
b3VzX2J0eXBlKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0g
ICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXps
aWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzEl
YycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFz
a19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQg
PSBjb21wcmVzcy5jb21wcmVzcygnV2ViU29ja2V0JykKLSAgICAgICAgY29tcHJlc3NlZF93ZWJz
b2NrZXQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3Nl
ZF93ZWJzb2NrZXQgKz0gJ1x4MDAnCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNv
bXByZXNzZWRfd2Vic29ja2V0KSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShj
b21wcmVzc2VkX3dlYnNvY2tldCkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3Nv
YmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVz
cy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNz
LmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29t
cHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXBy
ZXNzZWRfd29ybGQpIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNz
ZWRfd29ybGQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4
XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykK
LQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9
ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXZWJTb2Nr
ZXQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgIiIiVGVzdHMgZm9yIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uIiIiCi0KLSAg
ICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1v
bi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0Vf
REVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJv
bV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6
LTRdCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykK
LSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAg
ICBkZWYgdGVzdF9zZW5kX2VtcHR5X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhh
dCBhbiBlbXB0eSBtZXNzYWdlIGlzIGNvbXByZXNzZWQgY29ycmVjdGx5LiIiIgotCi0gICAgICAg
IGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAg
Y29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNz
YWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0KLSAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJycpCi0KLSAgICAgICAgIyBQYXlsb2FkIGluIGJpbmFyeTogMGIwMDAw
MDAxMCAwYjAwMDAwMDAwCi0gICAgICAgICMgRnJvbSBMU0IsCi0gICAgICAgICMgLSAxIGJpdCBv
ZiBCRklOQUwgKDApCi0gICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKDAxIHRoYXQgbWVhbnMg
Zml4ZWQgSHVmZm1hbikKLSAgICAgICAgIyAtIDcgYml0cyBvZiB0aGUgZmlyc3QgY29kZSAoMDAw
MDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0aGUKLSAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykK
LSAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5BTCAoMCkKLSAgICAgICAgIyAtIDIgYml0cyBvZiBC
VFlQRSAobm8gY29tcHJlc3Npb24pCi0gICAgICAgICMgLSAzIGJpdHMgb2YgcGFkZGluZwotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGMxXHgwMlx4MDJceDAwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYg
dGVzdF9zZW5kX21lc3NhZ2Vfd2l0aF9udWxsX2NoYXJhY3RlcihzZWxmKToKLSAgICAgICAgIiIi
VGVzdCB0aGF0IGEgc2ltcGxlIHBheWxvYWQgKG9uZSBudWxsKSBpcyBmcmFtZWQgY29ycmVjdGx5
LiIiIgotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAg
ICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0KLSAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1x4MDAnKQotCi0gICAgICAgICMgUGF5bG9h
ZCBpbiBiaW5hcnk6IDBiMDExMDAwMTAgMGIwMDAwMDAwMCAwYjAwMDAwMDAwCi0gICAgICAgICMg
RnJvbSBMU0IsCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAgICMgLSAy
IGJpdHMgb2YgQlRZUEUgKDAxIHRoYXQgbWVhbnMgZml4ZWQgSHVmZm1hbikKLSAgICAgICAgIyAt
IDggYml0cyBvZiB0aGUgZmlyc3QgY29kZSAoMDAxMTAwMDAgdGhhdCBpcyB0aGUgY29kZSBmb3Ig
dGhlIGxpdGVyYWwKLSAgICAgICAgIyAgIGFscGhhYmV0IDB4MDApCi0gICAgICAgICMgLSA3IGJp
dHMgb2YgdGhlIHNlY29uZCBjb2RlICgwMDAwMDAwIHRoYXQgaXMgdGhlIGNvZGUgZm9yIHRoZQot
ICAgICAgICAjICAgZW5kLW9mLWJsb2NrKQotICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgw
KQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFIChubyBjb21wcmVzc2lvbikKLSAgICAgICAg
IyAtIDIgYml0cyBvZiBwYWRkaW5nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4YzFceDAz
XHg2Mlx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX3R3b19tZXNzYWdlcyhzZWxm
KToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAg
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAg
JycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIu
REVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0KLSAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAg
ICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAg
ZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQg
PSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9
IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX3dv
cmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMn
ICUgbGVuKGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRf
d29ybGQKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21l
bnRlZChzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRl
cigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAg
ICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQotICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5ZScsIGVuZD1GYWxzZSkK
LSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0g
ICAgICAgIGV4cGVjdGVkID0gJ1x4NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAg
ICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotICAgICAgICBjb21wcmVzc2VkX2dvb2Ri
eWUgPSBjb21wcmVzcy5jb21wcmVzcygnR29vZGJ5ZScpCi0gICAgICAgIGNvbXByZXNzZWRfZ29v
ZGJ5ZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgZXhwZWN0
ZWQgKz0gJ1x4MDAlYycgJSBsZW4oY29tcHJlc3NlZF9nb29kYnllKQotICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2dvb2RieWUKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXBy
ZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJl
c3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBj
b21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4o
Y29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRlZF9lbXB0
eV9maXJzdF9mcmFtZShzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VY
VEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEo
Ci0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lv
bikKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxzZSkK
LSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCcnKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAg
ICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4
cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNv
bXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfZW1wdHkg
PSBjb21wcmVzc2VkX2VtcHR5WzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBs
ZW4oY29tcHJlc3NlZF9lbXB0eSkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9lbXB0
eQotICAgICAgICBwcmludCAnJXInICUgZXhwZWN0ZWQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFtZShzZWxmKToKLSAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAg
ICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgJycsIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQotICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnJykKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIu
REVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4NDEl
YycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3Nl
ZF9oZWxsbwotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3MuY29tcHJlc3MoJycp
Ci0gICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0K
LSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKLSAg
ICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9lbXB0eQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBk
ZWYgdGVzdF9zZW5kX21lc3NhZ2VfdXNpbmdfc21hbGxfd2luZG93KHNlbGYpOgotICAgICAgICBj
b21tb25fcGFydCA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLSAgICAgICAgdGVzdF9t
ZXNzYWdlID0gY29tbW9uX3BhcnQgKyAnLScgKiAzMDAwMCArIGNvbW1vbl9wYXJ0Ci0KLSAgICAg
ICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAg
ICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnOCcpCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkKLQotICAgICAgICBleHBlY3RlZF93
ZWJzb2NrZXRfaGVhZGVyX3NpemUgPSAyCi0gICAgICAgIGV4cGVjdGVkX3dlYnNvY2tldF9wYXls
b2FkX3NpemUgPSA5MQotCi0gICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3dlYnNv
Y2tldF9oZWFkZXJfc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfd2Vi
c29ja2V0X3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oYWN0dWFs
X2ZyYW1lKSkKLSAgICAgICAgYWN0dWFsX2hlYWRlciA9IGFjdHVhbF9mcmFtZVswOmV4cGVjdGVk
X3dlYnNvY2tldF9oZWFkZXJfc2l6ZV0KLSAgICAgICAgYWN0dWFsX3BheWxvYWQgPSBhY3R1YWxf
ZnJhbWVbZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplOl0KLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgICAgICdceGMxJWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0
X3BheWxvYWRfc2l6ZSwgYWN0dWFsX2hlYWRlcikKLSAgICAgICAgZGVjb21wcmVzcyA9IHpsaWIu
ZGVjb21wcmVzc29iaigtOCkKLSAgICAgICAgZGVjb21wcmVzc2VkX21lc3NhZ2UgPSBkZWNvbXBy
ZXNzLmRlY29tcHJlc3MoCi0gICAgICAgICAgICAgICAgYWN0dWFsX3BheWxvYWQgKyAnXHgwMFx4
MDBceGZmXHhmZicpCi0gICAgICAgIGRlY29tcHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3Mu
Zmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVz
c2VkX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKGRlY29tcHJlc3Mu
dW51c2VkX2RhdGEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNz
LnVuY29uc3VtZWRfdGFpbCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfbm9fY29udGV4
dF90YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVG
TEFURV9FWFRFTlNJT04pCi0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIGZvciBpIGluIHhyYW5nZSgzKToKLSAgICAg
ICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkK
LSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1U
cnVlKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFY
X1dCSVRTKQotCi0gICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxv
JykKLSAgICAgICAgZmlyc3RfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4NDElYycgJSBsZW4oZmlyc3RfaGVsbG8pCi0gICAg
ICAgIGV4cGVjdGVkICs9IGZpcnN0X2hlbGxvCi0gICAgICAgIHNlY29uZF9oZWxsbyA9IGNvbXBy
ZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIHNlY29uZF9oZWxsbyArPSBjb21wcmVzcy5m
bHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgc2Vjb25kX2hlbGxvID0gc2Vjb25kX2hl
bGxvWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oc2Vjb25kX2hlbGxv
KQotICAgICAgICBleHBlY3RlZCArPSBzZWNvbmRfaGVsbG8KLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICAgICAgICAgIGV4cGVjdGVkICsgZXhwZWN0ZWQgKyBleHBlY3RlZCwK
LSAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAg
ICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRlZF9iZmluYWwoc2VsZik6Ci0gICAgICAg
IGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAg
Y29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNz
YWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5zZXRfYmZpbmFsKFRydWUpCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJywgZW5kPVRydWUpCi0KLSAgICAg
ICAgZXhwZWN0ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigK
LSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAt
emxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21w
cmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hl
bGxvICsgY2hyKDApCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDQxJWMnICUgbGVuKGNvbXByZXNz
ZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBj
b21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29t
cHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBj
b21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBl
Y3RlZCArPSAnXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVj
ZWl2ZV9tZXNzYWdlX2RlZmxhdGUoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21w
cmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRF
RkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSA9ICdceGMxJWMnICUgKGxlbihj
b21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21w
cmVzc2VkX2hlbGxvKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAn
XHg4OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5
ZScpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAg
ICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAg
ICAgZGF0YSwgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfcmFuZG9tX3NlY3Rp
b24oc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhhdCBhIGNvbXByZXNzZWQgbWVzc2FnZSBmcmFn
bWVudGVkIGludG8gbG90cyBvZiBjaHVua3MgaXMKLSAgICAgICAgY29ycmVjdGx5IHJlY2VpdmVk
LgotICAgICAgICAiIiIKLQotICAgICAgICByYW5kb20uc2VlZChhPTApCi0gICAgICAgIHBheWxv
YWQgPSAnJy5qb2luKAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBm
b3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxB
VEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXBy
ZXNzLmNvbXByZXNzKHBheWxvYWQpCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ID0gY29tcHJlc3NlZF9wYXlsb2FkWzotNF0KLQotICAgICAgICAjIEZyYWdtZW50IHRoZSBjb21w
cmVzc2VkIHBheWxvYWQgaW50byBsb3RzIG9mIGZyYW1lcy4KLSAgICAgICAgYnl0ZXNfY2h1bmtl
ZCA9IDAKLSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIGZyYW1lX2NvdW50ID0gMAotCi0gICAg
ICAgIGNodW5rX3NpemVzID0gW10KLQotICAgICAgICB3aGlsZSBieXRlc19jaHVua2VkIDwgbGVu
KGNvbXByZXNzZWRfcGF5bG9hZCk6Ci0gICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0Ci0gICAg
ICAgICAgICAjIC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJlIGVxdWFsIG9yIGxlc3MgdGhhbiAx
MjUgc28gdGhhdCB3ZSBjYW4KLSAgICAgICAgICAgICMgICB1c2UgMSBvY3RldCBsZW5ndGggaGVh
ZGVyIGZvcm1hdCBmb3IgYWxsIGZyYW1lcy4KLSAgICAgICAgICAgICMgLSBhdCBsZWFzdCAxMCBj
aHVua3MgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRp
bnQoCi0gICAgICAgICAgICAgICAgMSwgbWluKDEyNSwKLSAgICAgICAgICAgICAgICAgICAgICAg
bGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLyAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVu
KGNvbXByZXNzZWRfcGF5bG9hZCkgLSBieXRlc19jaHVua2VkKSkKLSAgICAgICAgICAgIGNodW5r
X3NpemVzLmFwcGVuZChjaHVua19zaXplKQotICAgICAgICAgICAgY2h1bmsgPSBjb21wcmVzc2Vk
X3BheWxvYWRbCi0gICAgICAgICAgICAgICAgYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsg
Y2h1bmtfc2l6ZV0KLSAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQgKz0gY2h1bmtfc2l6ZQotCi0g
ICAgICAgICAgICBmaXJzdF9vY3RldCA9IDB4MDAKLSAgICAgICAgICAgIGlmIGxlbihkYXRhKSA9
PSAwOgotICAgICAgICAgICAgICAgIGZpcnN0X29jdGV0ID0gZmlyc3Rfb2N0ZXQgfCAweDQyCi0g
ICAgICAgICAgICBpZiBieXRlc19jaHVua2VkID09IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgot
ICAgICAgICAgICAgICAgIGZpcnN0X29jdGV0ID0gZmlyc3Rfb2N0ZXQgfCAweDgwCi0KLSAgICAg
ICAgICAgIGRhdGEgKz0gJyVjJWMnICUgKGZpcnN0X29jdGV0LCBjaHVua19zaXplIHwgMHg4MCkK
LSAgICAgICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjaHVuaykKLQotICAgICAgICAgICAgZnJh
bWVfY291bnQgKz0gMQotCi0gICAgICAgIHByaW50ICJDaHVuayBzaXplczogJXIiICUgY2h1bmtf
c2l6ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKLQot
ICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNr
X2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0
ZXN0X3JlY2VpdmVfdHdvX21lc3NhZ2VzKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIu
Y29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBkYXRhID0gJycKLQot
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvV2ViU29j
a2V0JykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
U1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9b
Oi00XQotICAgICAgICBzcGxpdF9wb3NpdGlvbiA9IGxlbihjb21wcmVzc2VkX2hlbGxvKSAvIDIK
LSAgICAgICAgZGF0YSArPSAnXHg0MSVjJyAlIChzcGxpdF9wb3NpdGlvbiB8IDB4ODApCi0gICAg
ICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hlbGxvWzpzcGxpdF9wb3NpdGlvbl0p
Ci0KLSAgICAgICAgZGF0YSArPSAnXHg4MCVjJyAlICgobGVuKGNvbXByZXNzZWRfaGVsbG8pIC0g
c3BsaXRfcG9zaXRpb24pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXBy
ZXNzZWRfaGVsbG9bc3BsaXRfcG9zaXRpb246XSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIu
Y29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkX3dv
cmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3Js
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMn
ICUgKGxlbihjb21wcmVzc2VkX3dvcmxkKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tf
aHliaShjb21wcmVzc2VkX3dvcmxkKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAg
ZGF0YSArPSAnXHg4OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSAr
ICdHb29kIGJ5ZScpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lP
TikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAg
ICAgICAgICAgICAgZGF0YSwgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsb1dlYlNvY2tldCcsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX21lc3NhZ2VfbWl4ZWRfYnR5cGUoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhh
dCBhIG1lc3NhZ2UgY29tcHJlc3NlZCB1c2luZyBsb3RzIG9mIERFRkxBVEUgYmxvY2tzIHdpdGgK
LSAgICAgICAgdmFyaW91cyBmbHVzaCBtb2RlIGlzIGNvcnJlY3RseSByZWNlaXZlZC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAgICAgICBwYXlsb2FkID0gJycu
am9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4g
eHJhbmdlKDEwMDApXSkKLQotICAgICAgICBjb21wcmVzcyA9IE5vbmUKLQotICAgICAgICAjIEZy
YWdtZW50IHRoZSBjb21wcmVzc2VkIHBheWxvYWQgaW50byBsb3RzIG9mIGZyYW1lcy4KLSAgICAg
ICAgYnl0ZXNfY2h1bmtlZCA9IDAKLSAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkID0gJycKLQot
ICAgICAgICBjaHVua19zaXplcyA9IFtdCi0gICAgICAgIG1ldGhvZHMgPSBbXQotICAgICAgICBz
eW5jX3VzZWQgPSBGYWxzZQotICAgICAgICBmaW5pc2hfdXNlZCA9IEZhbHNlCi0KLSAgICAgICAg
d2hpbGUgYnl0ZXNfY2h1bmtlZCA8IGxlbihwYXlsb2FkKToKLSAgICAgICAgICAgICMgTWFrZSBz
dXJlIGF0IGxlYXN0IDEwIGNodW5rcyBhcmUgY3JlYXRlZC4KLSAgICAgICAgICAgIGNodW5rX3Np
emUgPSByYW5kb20ucmFuZGludCgKLSAgICAgICAgICAgICAgICAxLCBtaW4oMTAwLCBsZW4ocGF5
bG9hZCkgLSBieXRlc19jaHVua2VkKSkKLSAgICAgICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChj
aHVua19zaXplKQotICAgICAgICAgICAgY2h1bmsgPSBwYXlsb2FkW2J5dGVzX2NodW5rZWQ6Ynl0
ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCi0KLSAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQgKz0g
Y2h1bmtfc2l6ZQotCi0gICAgICAgICAgICBpZiBjb21wcmVzcyBpcyBOb25lOgotICAgICAgICAg
ICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICAgICAg
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sCi0gICAgICAgICAgICAgICAgICAgIHpsaWIuREVG
TEFURUQsCi0gICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICAg
ICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4ocGF5bG9hZCk6Ci0gICAgICAgICAgICAgICAgY29t
cHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNodW5rKQotICAgICAgICAgICAg
ICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVT
SCkKLSAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxv
YWRbOi00XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtZXRob2QgPSByYW5k
b20ucmFuZGludCgwLCAxKQotICAgICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1ldGhvZCkK
LSAgICAgICAgICAgICAgICBpZiBtZXRob2QgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgY29t
cHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNodW5rKQotICAgICAgICAgICAg
ICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCi0gICAgICAgICAgICAgICAgICAgIHN5bmNfdXNlZCA9IFRydWUKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29t
cHJlc3MuY29tcHJlc3MoY2h1bmspCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5
bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICAgICAgICAgICAg
ICBjb21wcmVzcyA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoX3VzZWQgPSBUcnVl
Ci0KLSAgICAgICAgcHJpbnQgIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcwotICAgICAg
ICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVzKSA+IDEwKQotICAgICAgICBwcmludCAi
TWV0aG9kczogJXIiICUgbWV0aG9kcwotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3luY191c2Vk
KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluaXNoX3VzZWQpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKDEyNSA8IGxlbihjb21wcmVzc2VkX3BheWxvYWQpKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUobGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgPCA2NTUzNikKLSAgICAgICAgZGF0YSA9
ICdceGMyXHhmZScgKyBzdHJ1Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkK
LSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKLQotICAgICAg
ICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymko
c3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICBjb21tb24uUEVSTUVT
U0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotCi1jbGFzcyBQZXJNZXNz
YWdlQ29tcHJlc3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3IgY2hl
Y2tpbmcgcGVybWVzc2FnZS1jb21wcmVzc2lvbiBleHRlbnNpb24uIiIiCi0KLSAgICBkZWYgdGVz
dF9kZWZsYXRlX3Jlc3BvbnNlX3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICBjb21tb24uUEVSTUVTU0FH
RV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVy
KCdtZXRob2QnLCAnZGVmbGF0ZScpCi0gICAgICAgIHByb2Nlc3NvciA9IFBlck1lc3NhZ2VDb21w
cmVzc0V4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHJlc3BvbnNlID0gcHJv
Y2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1l
dGVyX3ZhbHVlKCdtZXRob2QnKSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05f
RVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignbWV0aG9kJywgJ2Rl
ZmxhdGUnKQotICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Q
cm9jZXNzb3IoZXh0ZW5zaW9uKQotCi0gICAgICAgIGRlZiBfY29tcHJlc3Npb25fcHJvY2Vzc29y
X2hvb2soY29tcHJlc3Npb25fcHJvY2Vzc29yKToKLSAgICAgICAgICAgIGNvbXByZXNzaW9uX3By
b2Nlc3Nvci5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cyg4KQotICAgICAgICAgICAgY29tcHJl
c3Npb25fcHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihUcnVlKQotICAg
ICAgICBwcm9jZXNzb3Iuc2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rKAotICAgICAgICAg
ICAgX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rKQotICAgICAgICByZXNwb25zZSA9IHByb2Nl
c3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgICdkZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTg7IGNsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyJywKLSAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJf
dmFsdWUoJ21ldGhvZCcpKQotCi0KLWNsYXNzIE1lc3NhZ2VUZXN0SGl4aWU3NSh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGRyYWZ0LWhpeGllLXRoZXdlYnNvY2tldHByb3Rv
Y29sLTc2IHN0cmVhbSBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZShzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCkKLSAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHgwMEhlbGxvXHhmZicsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV91bmljb2RlKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCB1J1x1NjVlNScpCi0gICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQg
YXMgZTYsOTcsYTUgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFx4ZTZc
eDk3XHhhNVx4ZmYnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZShzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDAwSGVsbG9ceGZm
XHgwMFdvcmxkIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdX
b3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0
X3JlY2VpdmVfbWVzc2FnZV91bmljb2RlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2hpeGllNzUoJ1x4MDBceGU2XHg5Y1x4YWNceGZmJykKLSAgICAgICAgIyBVKzY3
MmMgaXMgZW5jb2RlZCBhcyBlNiw5YyxhYyBpbiBVVEYtOAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHUnXHU2NzJjJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBk
ZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZXJyb25lb3VzX3VuaWNvZGUoc2VsZik6Ci0gICAgICAg
ICMgXHg4MCBhbmQgXHg4MSBhcmUgaW52YWxpZCBhcyBVVEYtOC4KLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDAwXHg4MFx4ODFceGZmJykKLSAgICAgICAgIyBJ
bnZhbGlkIGNoYXJhY3RlcnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgKLSAgICAgICAgIyBVK2Zm
ZmQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdWZm
ZmRcdWZmZmQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0
ZXN0X3JlY2VpdmVfbWVzc2FnZV9kaXNjYXJkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2hpeGllNzUoJ1x4ODBceDA2SUdOT1JFXHgwMEhlbGxvXHhmZicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdceDAxRElTUkVHQVJEXHhmZlx4
MDBXb3JsZCFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29y
bGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLQotY2xhc3MgTWVzc2Fn
ZVJlY2VpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVh
bSBjbGFzcyB1c2luZyBNZXNzYWdlUmVjZWl2ZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9xdWV1ZShz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAg
ICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlY2VpdmVyLnJlY2VpdmVfbm93YWl0KCkpCi0KLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygnXHg4MVx4ODYnICsgX21hc2tfaHli
aSgnSGVsbG8hJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIHJlY2VpdmVy
LnJlY2VpdmUoKSkKLQotICAgIGRlZiB0ZXN0X29ubWVzc2FnZShzZWxmKToKLSAgICAgICAgb25t
ZXNzYWdlX3F1ZXVlID0gUXVldWUuUXVldWUoKQotCi0gICAgICAgIGRlZiBvbm1lc3NhZ2VfaGFu
ZGxlcihtZXNzYWdlKToKLSAgICAgICAgICAgIG9ubWVzc2FnZV9xdWV1ZS5wdXQobWVzc2FnZSkK
LQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKLSAgICAgICAg
cmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0LCBvbm1lc3NhZ2VfaGFu
ZGxlcikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKCdceDgxXHg4Nicg
KyBfbWFza19oeWJpKCdIZWxsbyEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8h
Jywgb25tZXNzYWdlX3F1ZXVlLmdldCgpKQotCi0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlckhpeGll
NzVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyB0aGUgU3RyZWFtSGl4aWU3
NSBjbGFzcyB1c2luZyBNZXNzYWdlUmVjZWl2ZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9xdWV1ZShz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9oaXhpZTc1
KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQo
KSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKCdceDAwSGVsbG8hXHhm
ZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIHJlY2VpdmVyLnJlY2VpdmUo
KSkKLQotICAgIGRlZiB0ZXN0X29ubWVzc2FnZShzZWxmKToKLSAgICAgICAgb25tZXNzYWdlX3F1
ZXVlID0gUXVldWUuUXVldWUoKQotCi0gICAgICAgIGRlZiBvbm1lc3NhZ2VfaGFuZGxlcihtZXNz
YWdlKToKLSAgICAgICAgICAgIG9ubWVzc2FnZV9xdWV1ZS5wdXQobWVzc2FnZSkKLQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICBy
ZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5k
bGVyKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4MDBIZWxsbyFc
eGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8hJywgb25tZXNzYWdlX3F1ZXVl
LmdldCgpKQotCi0KLWNsYXNzIE1lc3NhZ2VTZW5kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICAiIiJUZXN0cyB0aGUgU3RyZWFtIGNsYXNzIHVzaW5nIE1lc3NhZ2VTZW5kZXIuIiIiCi0K
LSAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9j
a2luZ19yZXF1ZXN0KCkKLSAgICAgICAgc2VuZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVyKHJl
cXVlc3QpCi0KLSAgICAgICAgc2VuZGVyLnNlbmQoJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHg4MVx4MDVXb3JsZCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNlbGYpOgotICAgICAgICAjIFVzZSBhIHF1
ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5IE1lc3NhZ2VTZW5kZXIuCi0gICAgICAg
ICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpIGNhbm5vdCBiZSB1c2VkIGhlcmUg
YmVjYXVzZQotICAgICAgICAjIE1lc3NhZ2VTZW5kZXIgcnVucyBpbiBhIHNlcGFyYXRlIHRocmVh
ZC4KLSAgICAgICAgc2VuZF9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgd3Jp
dGUoYnl0ZXMpOgotICAgICAgICAgICAgc2VuZF9xdWV1ZS5wdXQoYnl0ZXMpCi0KLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSA9IHdyaXRlCi0KLSAgICAgICAgc2VuZGVyID0gbXNndXRpbC5NZXNzYWdl
U2VuZGVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdIZWxsbycpCi0g
ICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnV29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdceDgxXHgwNUhlbGxvJywgc2VuZF9xdWV1ZS5nZXQoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHg4MVx4MDVXb3JsZCcsIHNlbmRfcXVldWUuZ2V0KCkpCi0KLQotY2xhc3MgTWVz
c2FnZVNlbmRlckhpeGllNzVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyB0
aGUgU3RyZWFtSGl4aWU3NSBjbGFzcyB1c2luZyBNZXNzYWdlU2VuZGVyLiIiIgotCi0gICAgZGVm
IHRlc3Rfc2VuZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVx
dWVzdF9oaXhpZTc1KCkKLSAgICAgICAgc2VuZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVyKHJl
cXVlc3QpCi0KLSAgICAgICAgc2VuZGVyLnNlbmQoJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNlbGYpOgotICAgICAgICAjIFVzZSBhIHF1
ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5IE1lc3NhZ2VTZW5kZXIuCi0gICAgICAg
ICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpIGNhbm5vdCBiZSB1c2VkIGhlcmUg
YmVjYXVzZQotICAgICAgICAjIE1lc3NhZ2VTZW5kZXIgcnVucyBpbiBhIHNlcGFyYXRlIHRocmVh
ZC4KLSAgICAgICAgc2VuZF9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgd3Jp
dGUoYnl0ZXMpOgotICAgICAgICAgICAgc2VuZF9xdWV1ZS5wdXQoYnl0ZXMpCi0KLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9oaXhpZTc1KCkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXRlID0gd3JpdGUKLQotICAgICAgICBzZW5kZXIgPSBtc2d1dGls
Lk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ0hl
bGxvJykKLSAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdXb3JsZCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYnLCBzZW5kX3F1ZXVlLmdldCgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceDAwV29ybGRceGZmJywgc2VuZF9xdWV1ZS5nZXQoKSkKLQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X211eC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdF9tdXgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0
NTk4OTQ0ZTA4Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tdXgucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwyMDg5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgot
IwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG11eCBtb2R1bGUuIiIiCi0KLWlt
cG9ydCBRdWV1ZQotaW1wb3J0IGNvcHkKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UK
LWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRpbWUK
LWltcG9ydCB6bGliCi0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRv
IGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4Ci1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0
aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVk
RnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQg
RnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgU3RyZWFtCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlvbnMKLWZy
b20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2JpbmFyeV9mcmFt
ZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfY2xvc2Vf
ZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Ns
b3NpbmdfaGFuZHNoYWtlX2JvZHkKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBp
bXBvcnQgcGFyc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0
IE11eEV4dGVuc2lvblByb2Nlc3NvcgotCi0KLWltcG9ydCBtb2NrCi0KLQotX1RFU1RfSEVBREVS
UyA9IHsnSG9zdCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgICAgICAnVXBn
cmFkZSc6ICd3ZWJzb2NrZXQnLAotICAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdy
YWRlJywKLSAgICAgICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5JzogJ2RHaGxJSE5oYlhC
c1pTQnViMjVqWlE9PScsCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24n
OiAnMTMnLAotICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbSd9
Ci0KLQotY2xhc3MgX091dGdvaW5nQ2hhbm5lbERhdGEob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQotICAgICAgICBzZWxmLmNvbnRy
b2xfbWVzc2FnZXMgPSBbXQotCi0gICAgICAgIHNlbGYuYnVpbGRlciA9IG11eC5fSW5uZXJNZXNz
YWdlQnVpbGRlcigpCi0KLWNsYXNzIF9Nb2NrTXV4Q29ubmVjdGlvbihtb2NrLk1vY2tCbG9ja2lu
Z0Nvbm4pOgotICAgICIiIk1vY2sgY2xhc3Mgb2YgbW9kX3B5dGhvbiBjb25uZWN0aW9uIGZvciBt
dXguIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIG1vY2suTW9ja0Jsb2Nr
aW5nQ29ubi5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2NrcyA9IFtd
Ci0gICAgICAgIHNlbGYuX2NoYW5uZWxfZGF0YSA9IHt9Ci0KLSAgICAgICAgc2VsZi5fY3VycmVu
dF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRzID0gW10KLQot
ICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZV9jb2RlID0gTm9uZQotCi0gICAgZGVmIHdyaXRlKHNl
bGYsIGRhdGEpOgotICAgICAgICAiIiJPdmVycmlkZSBNb2NrQmxvY2tpbmdDb25uLndyaXRlLiIi
IgotCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfZGF0YSA9IGRhdGEKLSAgICAgICAgc2VsZi5fcG9z
aXRpb24gPSAwCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVzKGxlbmd0aCk6Ci0gICAgICAg
ICAgICBpZiBzZWxmLl9wb3NpdGlvbiArIGxlbmd0aCA+IGxlbihzZWxmLl9jdXJyZW50X2RhdGEp
OgotICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHJlY2VpdmUgJWQgYnl0ZXMgZnJvbSBlbmNh
cHN1bGF0ZWQgJwotICAgICAgICAgICAgICAgICAgICAnZnJhbWUnICUgbGVuZ3RoKQotICAgICAg
ICAgICAgZGF0YSA9IHNlbGYuX2N1cnJlbnRfZGF0YVtzZWxmLl9wb3NpdGlvbjpzZWxmLl9wb3Np
dGlvbitsZW5ndGhdCi0gICAgICAgICAgICBzZWxmLl9wb3NpdGlvbiArPSBsZW5ndGgKLSAgICAg
ICAgICAgIHJldHVybiBkYXRhCi0KLSAgICAgICAgIyBQYXJzZSBwaHlzaWNhbCBmcmFtZXMgYW5k
IGFzc2VtYmxlIGEgbWVzc2FnZSBpZiB0aGUgbWVzc2FnZSBpcwotICAgICAgICAjIGZyYWdtZW50
ZWQuCi0gICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3YxLCByc3YyLCByc3YzID0gKAot
ICAgICAgICAgICAgcGFyc2VfZnJhbWUoX3JlY2VpdmVfYnl0ZXMsIHVubWFza19yZWNlaXZlPUZh
bHNlKSkKLQotICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyYWdtZW50cy5hcHBlbmQocGF5bG9hZCkK
LQotICAgICAgICBpZiBzZWxmLl9jdXJyZW50X29wY29kZSBpcyBOb25lOgotICAgICAgICAgICAg
aWYgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignU2VuZGluZyBpbnZhbGlkIGNvbnRpbnVhdGlvbiBvcGNvZGUnKQot
ICAgICAgICAgICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAg
ICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBvcGNvZGUgJWQn
ICUgb3Bjb2RlKQotICAgICAgICBpZiBub3QgZmluOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAg
ICAgICAgaW5uZXJfZnJhbWVfZGF0YSA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19mcmFnbWVudHMp
Ci0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRzID0gW10KLSAgICAgICAgc2VsZi5fY3Vy
cmVudF9vcGNvZGUgPSBOb25lCi0KLSAgICAgICAgIyBIYW5kbGUgYSBjb250cm9sIG1lc3NhZ2Ug
b24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQg
b3RoZXIgb3Bjb2RlcyBpZiBuZWVkZWQuCi0gICAgICAgIGlmIG9wY29kZSA9PSBjb21tb24uT1BD
T0RFX0NMT1NFOgotICAgICAgICAgICAgaWYgbGVuKHBheWxvYWQpID49IDI6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2VfY29kZSA9IHN0cnVjdC51bnBhY2soJyFIJywgcGF5bG9h
ZFs6Ml0pWzBdCi0gICAgICAgICAgICBjbG9zZV9ib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNo
YWtlX2JvZHkoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwg
JycpCi0gICAgICAgICAgICBjbG9zZV9mcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZShjbG9zZV9i
b2R5LCBtYXNrPVRydWUpCi0gICAgICAgICAgICBzZWxmLnB1dF9ieXRlcyhjbG9zZV9mcmFtZSkK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgUGFyc2UgdGhlIHBheWxvYWQgb2YgdGhl
IG1lc3NhZ2Ugb24gcGh5c2ljYWwgY2hhbm5lbC4KLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhG
cmFtZVBheWxvYWRQYXJzZXIoaW5uZXJfZnJhbWVfZGF0YSkKLSAgICAgICAgY2hhbm5lbF9pZCA9
IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBpZiBjaGFubmVsX2lkID09IG11eC5f
Q09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3MuZXh0
ZW5kKGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkpCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9jaGFubmVsX2RhdGE6Ci0g
ICAgICAgICAgICBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0gPSBfT3V0Z29pbmdDaGFu
bmVsRGF0YSgpCi0gICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFu
bmVsX2lkXQotCi0gICAgICAgICMgUGFyc2UgbG9naWNhbCBmcmFtZXMgYW5kIGFzc2VtYmxlIGFu
IGlubmVyIChsb2dpY2FsKSBtZXNzYWdlLgotICAgICAgICAoaW5uZXJfZmluLCBpbm5lcl9yc3Yx
LCBpbm5lcl9yc3YyLCBpbm5lcl9yc3YzLCBpbm5lcl9vcGNvZGUsCi0gICAgICAgICBpbm5lcl9w
YXlsb2FkKSA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAgaW5uZXJfZnJhbWUg
PSBGcmFtZShpbm5lcl9maW4sIGlubmVyX3JzdjEsIGlubmVyX3JzdjIsIGlubmVyX3JzdjMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfb3Bjb2RlLCBpbm5lcl9wYXlsb2FkKQot
ICAgICAgICBtZXNzYWdlID0gY2hhbm5lbF9kYXRhLmJ1aWxkZXIuYnVpbGQoaW5uZXJfZnJhbWUp
Ci0gICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIGlmIChtZXNzYWdlLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX1RFWFQgb3IKLSAgICAgICAg
ICAgIG1lc3NhZ2Uub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZKToKLSAgICAgICAgICAg
IGNoYW5uZWxfZGF0YS5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZS5wYXlsb2FkKQotCi0gICAgICAg
ICAgICBzZWxmLm9uX2RhdGFfbWVzc2FnZShtZXNzYWdlLnBheWxvYWQpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBjaGFubmVsX2RhdGEuY29udHJvbF9tZXNzYWdlcy5hcHBlbmQoCi0gICAg
ICAgICAgICAgICAgeydvcGNvZGUnOiBtZXNzYWdlLm9wY29kZSwKLSAgICAgICAgICAgICAgICAg
J21lc3NhZ2UnOiBtZXNzYWdlLnBheWxvYWR9KQotCi0gICAgZGVmIG9uX2RhdGFfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF93cml0dGVuX2NvbnRy
b2xfYmxvY2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fY29udHJvbF9ibG9ja3MKLQot
ICAgIGRlZiBnZXRfd3JpdHRlbl9tZXNzYWdlcyhzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVsX2lkXS5tZXNzYWdlcwotCi0gICAgZGVm
IGdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0uY29udHJvbF9tZXNzYWdlcwot
Ci0KLWNsYXNzIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24oX01vY2tNdXhDb25uZWN0aW9uKToKLSAg
ICAiIiJTcGVjaWNpYWxpemVkIHZlcnNpb24gb2YgX01vY2tNdXhDb25uZWN0aW9uLiBJdHMgd3Jp
dGUoKSBtZXRob2QgcmFpc2VzCi0gICAgYW4gZXhjZXB0aW9uIGZvciB0ZXN0aW5nIHdoZW4gYSBk
YXRhIG1lc3NhZ2UgaXMgd3JpdHRlbi4KLSAgICAiIiIKLQotICAgIGRlZiBvbl9kYXRhX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIHRvIHJhaXNlIGFuIGV4Y2Vw
dGlvbi4iIiIKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIGZhaWx1cmUn
KQotCi0KLWNsYXNzIF9DaGFubmVsRXZlbnQob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0
aGF0IHJlY29yZHMgY2hhbm5lbCBldmVudHMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6
Ci0gICAgICAgIHNlbGYucmVxdWVzdCA9IE5vbmUKLSAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtd
Ci0gICAgICAgIHNlbGYuZXhjZXB0aW9uID0gTm9uZQotICAgICAgICBzZWxmLmNsaWVudF9pbml0
aWF0ZWRfY2xvc2luZyA9IEZhbHNlCi0KLQotY2xhc3MgX011eE1vY2tEaXNwYXRjaGVyKG9iamVj
dCk6Ci0gICAgIiIiTW9jayBjbGFzcyBvZiBkaXNwYXRjaC5EaXNwYXRjaGVyIGZvciBtdXguIiIi
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHMg
PSB7fQotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCByZXF1ZXN0KToKLSAgICAg
ICAgaWYgcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IHJlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29s
c1swXQotCi0gICAgZGVmIF9kb19lY2hvKHNlbGYsIHJlcXVlc3QsIGNoYW5uZWxfZXZlbnRzKToK
LSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSByZXF1ZXN0LndzX3N0
cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYgbWVzc2FnZSA9PSBOb25lOgot
ICAgICAgICAgICAgICAgIGNoYW5uZWxfZXZlbnRzLmNsaWVudF9pbml0aWF0ZWRfY2xvc2luZyA9
IFRydWUKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgPT0g
J0dvb2RieWUnOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5lbF9l
dmVudHMubWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCi0gICAgICAgICAgICAjIGVjaG8gYmFjawot
ICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCi0KLSAg
ICBkZWYgX2RvX3Bpbmcoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9ldmVudHMpOgotICAgICAgICBy
ZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLQotICAgIGRlZiBfZG9fcGluZ193
aGlsZV9oZWxsb193b3JsZChzZWxmLCByZXF1ZXN0LCBjaGFubmVsX2V2ZW50cyk6Ci0gICAgICAg
IHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8gJywgZW5kPUZhbHNlKQotICAg
ICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLSAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdXb3JsZCEnLCBlbmQ9VHJ1ZSkKLQotICAgIGRlZiBf
ZG9fdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9ldmVu
dHMpOgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ0hlbGxvICcsIGVu
ZD1GYWxzZSkKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKCdQaW5nIScpCi0g
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUG9uZyEnKQotICAgICAgICByZXF1
ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ1dvcmxkIScsIGVuZD1UcnVlKQotCi0gICAgZGVm
IHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9ldmVu
dHNbcmVxdWVzdC5jaGFubmVsX2lkXSA9IF9DaGFubmVsRXZlbnQoKQotICAgICAgICBzZWxmLmNo
YW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0ucmVxdWVzdCA9IHJlcXVlc3QKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAjIE5vdGU6IG1vcmUgaGFuZGxlciB3aWxsIGJlIGFkZGVk
LgotICAgICAgICAgICAgaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgoJ2VjaG8nKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9kb19lY2hvKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0pCi0gICAgICAgICAg
ICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCdwaW5nJyk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fZG9fcGluZyhyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j
aGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAgICAgZWxpZiByZXF1
ZXN0LnVyaS5lbmRzd2l0aCgndHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQnKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9kb190d29fcGluZ193aGlsZV9oZWxsb193b3JsZCgKLSAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdCwgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRd
KQotICAgICAgICAgICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgncGluZ193aGlsZV9oZWxs
b193b3JsZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX3Bpbmdfd2hpbGVfaGVsbG9fd29y
bGQoCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVx
dWVzdC5jaGFubmVsX2lkXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQ2Fubm90IGhhbmRsZSBwYXRoICVyJyAlIHJlcXVlc3QucGF0aCkKLSAg
ICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotICAgICAgICBleGNlcHQg
Q29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLmNoYW5u
ZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0uZXhjZXB0aW9uID0gZQotICAgICAgICBleGNl
cHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0
LmNoYW5uZWxfaWRdLmV4Y2VwdGlvbiA9IGUKLSAgICAgICAgICAgIHJhaXNlCi0KLQotZGVmIF9j
cmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249Tm9uZSwgbG9naWNhbF9jaGFubmVsX2V4dGVu
c2lvbnM9Tm9uZSk6Ci0gICAgaWYgY29ubmVjdGlvbiBpcyBOb25lOgotICAgICAgICBjb25uZWN0
aW9uID0gX01vY2tNdXhDb25uZWN0aW9uKCkKLQotICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1
ZXN0KHVyaT0nL2VjaG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNf
aW49X1RFU1RfSEVBREVSUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uPWNvbm5lY3Rpb24pCi0gICAgcmVxdWVzdC53c19zdHJlYW0gPSBTdHJlYW0ocmVxdWVzdCwg
b3B0aW9ucz1TdHJlYW1PcHRpb25zKCkpCi0gICAgcmVxdWVzdC5tdXhfcHJvY2Vzc29yID0gTXV4
RXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNv
bW1vbi5NVVhfRVhURU5TSU9OKSkKLSAgICBpZiBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyBp
cyBub3QgTm9uZToKLSAgICAgICAgcmVxdWVzdC5tdXhfcHJvY2Vzc29yLnNldF9leHRlbnNpb25z
KGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zKQotICAgIHJlcXVlc3QubXV4X3Byb2Nlc3Nvci5z
ZXRfcXVvdGEoOCAqIDEwMjQpCi0gICAgcmV0dXJuIHJlcXVlc3QKLQotCi1kZWYgX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKGNoYW5uZWxfaWQsIGVuY29kaW5nLCBlbmNvZGVkX2hh
bmRzaGFrZSk6Ci0gICAgIyBBbGxvdyBpbnZhbGlkIGVuY29kaW5nIGZvciB0ZXN0aW5nLgotICAg
IGZpcnN0X2J5dGUgPSAoKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNUIDw8IDUp
IHwgZW5jb2RpbmcpCi0gICAgcGF5bG9hZCA9IChjaHIoZmlyc3RfYnl0ZSkgKwotICAgICAgICAg
ICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCi0gICAgICAgICAgICAg
ICBtdXguX2VuY29kZV9udW1iZXIobGVuKGVuY29kZWRfaGFuZHNoYWtlKSkgKwotICAgICAgICAg
ICAgICAgZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
Ci0gICAgICAgIChtdXguX2VuY29kZV9jaGFubmVsX2lkKG11eC5fQ09OVFJPTF9DSEFOTkVMX0lE
KSArIHBheWxvYWQpLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfZHJvcF9jaGFubmVsX2Zy
YW1lKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6Ci0gICAgcGF5bG9hZCA9IG11
eC5fY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNzYWdlKQotICAgIHJl
dHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgICAgICAobXV4Ll9lbmNvZGVfY2hhbm5lbF9p
ZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBwYXlsb2FkKSwgbWFzaz1UcnVlKQotCi0KLWRl
ZiBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90
YSk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCBy
ZXBsZW5pc2hlZF9xdW90YSkKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAg
ICAgKG11eC5fZW5jb2RlX2NoYW5uZWxfaWQobXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgcGF5
bG9hZCksIG1hc2s9VHJ1ZSkKLQotCi1kZWYgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQsIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RFX0JJTkFSWSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmluPVRydWUsIHJzdjE9RmFsc2UsIHJzdjI9RmFsc2UsIHJzdjM9RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9VHJ1ZSk6Ci0gICAgYml0cyA9IGNocigo
ZmluIDw8IDcpIHwgKHJzdjEgPDwgNikgfCAocnN2MiA8PCA1KSB8IChyc3YzIDw8IDQpIHwgb3Bj
b2RlKQotICAgIHBheWxvYWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsg
Yml0cyArIG1lc3NhZ2UKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZShwYXlsb2FkLCBt
YXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nLCBl
eHRlbnNpb25zPU5vbmUpOgotICAgIGhlYWRlcnMgPSAoCi0gICAgICAgICdHRVQgJXMgSFRUUC8x
LjFcclxuJwotICAgICAgICAnSG9zdDogc2VydmVyLmV4YW1wbGUuY29tXHJcbicKLSAgICAgICAg
J0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBs
ZS5jb21cclxuJykgJSBwYXRoCi0gICAgaWYgZXh0ZW5zaW9uczoKLSAgICAgICAgaGVhZGVycyAr
PSAnJXM6ICVzJyAlICgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lP
TlNfSEVBREVSLCBleHRlbnNpb25zKQotICAgIHJldHVybiBoZWFkZXJzCi0KLQotY2xhc3MgTXV4
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgbXV4IG1vZHVs
ZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxfaWRfZGVjb2RlKHNlbGYpOgotICAgICAgICBk
YXRhID0gJ1x4MDBceDAxXHhiZlx4ZmZceGRmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmJwotICAg
ICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBj
aGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMCwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2No
YW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGNoYW5uZWxfaWQpCi0gICAg
ICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgyICoqIDE0IC0gMSwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5lbF9pZCA9
IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgKiog
MjEgLSAxLCBjaGFubmVsX2lkKQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hh
bm5lbF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAqKiAyOSAtIDEsIGNoYW5uZWxf
aWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBwYXJzZXIuX3JlYWRfcG9z
aXRpb24pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX2VuY29kZShzZWxmKToKLSAgICAgICAg
ZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFu
bmVsX2lkKDIgKiogMTQgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGJmXHhmZics
IGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiog
MTQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4YzBAXHgwMCcsIGVuY29kZWQpCi0gICAg
ICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMjEgLSAxKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceGRmXHhmZlx4ZmYnLCBlbmNvZGVkKQotICAgICAgICBlbmNv
ZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoqIDIxKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdceGUwIFx4MDBceDAwJywgZW5jb2RlZCkKLSAgICAgICAgZW5jb2RlZCA9IG11eC5f
ZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyOSAtIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1x4ZmZceGZmXHhmZlx4ZmYnLCBlbmNvZGVkKQotICAgICAgICAjIGNoYW5uZWxfaWQgaXMgdG9v
IGxhcmdlCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIG11eC5fZW5jb2RlX2NoYW5uZWxfaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIDIgKiogMjkpCi0KLSAgICBkZWYgdGVzdF9yZWFkX211bHRpcGxlX2NvbnRyb2xf
YmxvY2tzKHNlbGYpOgotICAgICAgICAjIFVzZSBBZGRDaGFubmVsUmVxdWVzdCBiZWNhdXNlIGl0
IGNhbiBjb250YWluIGFyYml0cmFyeSBsZW5ndGggb2YgZGF0YQotICAgICAgICBkYXRhID0gKCdc
eDAwXHgwMVx4MDFhJwotICAgICAgICAgICAgICAgICdceDAwXHgwMlx4N2QlcycKLSAgICAgICAg
ICAgICAgICAnXHgwMFx4MDNceDdlXHhmZlx4ZmYlcycKLSAgICAgICAgICAgICAgICAnXHgwMFx4
MDRceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAlcycpICUgKAotICAgICAgICAg
ICAgJ2EnICogMHg3ZCwgJ2InICogMHhmZmZmLCAnYycgKiAweDEwMDAwKQotICAgICAgICBwYXJz
ZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBs
aXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoNCwgbGVuKGJsb2NrcykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9P
UENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNULCBibG9j
a3NbMV0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGJsb2Nrc1sxXS5jaGFu
bmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4N2QsIGxlbihibG9ja3NbMV0uZW5j
b2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BD
T0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nrc1syXS5vcGNvZGUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMywgYmxvY2tzWzJdLmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMHhmZmZmLCBsZW4oYmxvY2tzWzJdLmVuY29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNULCBi
bG9ja3NbM10ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGJsb2Nrc1szXS5j
aGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4MTAwMDAsIGxlbihibG9ja3Nb
M10uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRh
dGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYgdGVzdF9yZWFkX2FkZF9jaGFu
bmVsX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHgwMFx4MDFceDAxYScKLSAgICAg
ICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxv
Y2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNULCBibG9ja3NbMF0u
b3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGJsb2Nrc1swXS5jaGFubmVsX2lk
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3NbMF0uZW5jb2RlZF9oYW5k
c2hha2UpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9kcm9wX2NoYW5uZWwoc2VsZik6Ci0gICAgICAg
IGRhdGEgPSAnXHg2MFx4MDFceDAwJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5
bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRy
b2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGJsb2NrcykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxfaWQpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCwgYmxvY2tzWzBd
Lm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBibG9ja3NbMF0uZHJvcF9j
b2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihibG9ja3NbMF0uZHJvcF9tZXNz
YWdlKSkKLQotICAgICAgICBkYXRhID0gJ1x4NjBceDAyXHgwOVx4MDNceGU4U3VjY2VzcycKLSAg
ICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAg
YmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIs
IGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVY
X09QQ09ERV9EUk9QX0NIQU5ORUwsIGJsb2Nrc1swXS5vcGNvZGUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMTAwMCwgYmxvY2tzWzBdLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnU3VjY2VzcycsIGJsb2Nrc1swXS5kcm9wX21lc3NhZ2UpCi0KLSAgICAgICAgIyBSZWFz
b24gaXMgdG9vIHNob3J0LgotICAgICAgICBkYXRhID0gJ1x4NjBceDAxXHgwMVx4MDAnCi0gICAg
ICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5lY3Rpb25FcnJvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkp
KQotCi0gICAgZGVmIHRlc3RfcmVhZF9mbG93X2NvbnRyb2woc2VsZik6Ci0gICAgICAgIGRhdGEg
PSAnXHg0MFx4MDFceDAyJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBh
cnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxv
Y2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGJsb2NrcykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCwgYmxvY2tzWzBdLm9wY29k
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBibG9ja3NbMF0uc2VuZF9xdW90YSkKLQot
ICAgIGRlZiB0ZXN0X3JlYWRfbmV3X2NoYW5uZWxfc2xvdChzZWxmKToKLSAgICAgICAgZGF0YSA9
ICdceDgwXHgwMVx4MDJceDAyXHgwMycKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBh
eWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgIyBUT0RPKGJhc2hpKTogSW1wbGVtZW50Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5lY3Rpb25FcnJvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxv
Y2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlkX251bWJlcl9maWVsZF9pbl9jb250
cm9sX2Jsb2NrKHNlbGYpOgotICAgICAgICAjIE5vIG51bWJlciBmaWVsZC4KLSAgICAgICAgZGF0
YSA9ICcnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1i
ZXIpCi0KLSAgICAgICAgIyBUaGUgbGFzdCB0d28gYnl0ZXMgYXJlIG1pc3NpbmcuCi0gICAgICAg
IGRhdGEgPSAnXHg3ZScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJz
ZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9y
ZWFkX251bWJlcikKLQotICAgICAgICAjIE1pc3NpbmcgdGhlIGxhc3Qgb25lIGJ5dGUuCi0gICAg
ICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDAnCi0gICAgICAgIHBh
cnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBU
aGUgbGVuZ3RoIG9mIG51bWJlciBmaWVsZCBpcyB0b28gbGFyZ2UuCi0gICAgICAgIGRhdGEgPSAn
XHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmJwotICAgICAgICBwYXJzZXIgPSBt
dXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0gICAgICAgICMgVGhlIG1zYiBv
ZiB0aGUgZmlyc3QgYnl0ZSBpcyBzZXQuCi0gICAgICAgIGRhdGEgPSAnXHg4MCcKLSAgICAgICAg
cGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAj
IFVzaW5nIDMgYnl0ZXMgZW5jb2RpbmcgZm9yIDEyNS4KLSAgICAgICAgZGF0YSA9ICdceDdlXHgw
MFx4N2QnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1i
ZXIpCi0KLSAgICAgICAgIyBVc2luZyA5IGJ5dGVzIGVuY29kaW5nIGZvciAweGZmZmYKLSAgICAg
ICAgZGF0YSA9ICdceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHhmZlx4ZmYnCi0gICAgICAg
IHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICBkZWYg
dGVzdF9yZWFkX2ludmFsaWRfc2l6ZV9hbmRfY29udGVudHMoc2VsZik6Ci0gICAgICAgICMgT25s
eSBjb250YWluIG51bWJlciBmaWVsZC4KLSAgICAgICAgZGF0YSA9ICdceDAxJwotICAgICAgICBw
YXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlci5fcmVhZF9zaXplX2FuZF9jb250ZW50cykKLQotICAgIGRlZiB0ZXN0
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxmKToKLSAgICAgICAgZGF0YSA9IG11eC5f
Y3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxfaWQ9MSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPSdGb29C
YXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5j
b2Rpbmc9MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlamVjdGVkPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDIwXHgwMVx4MDZG
b29CYXInLCBkYXRhKQotCi0gICAgICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXNwb25zZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT0nSGVsbG8nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9MSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdGVkPVRydWUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MzFceDAyXHgwNUhlbGxvJywgZGF0YSkKLQotICAgIGRl
ZiB0ZXN0X2NyZWF0ZV9kcm9wX2NoYW5uZWwoc2VsZik6Ci0gICAgICAgIGRhdGEgPSBtdXguX2Ny
ZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdceDYwXHgwMVx4MDAnLCBkYXRhKQotCi0gICAgICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9kcm9w
X2NoYW5uZWwoY2hhbm5lbF9pZD0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvZGU9MjAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlPSdlcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4NjBceDAxXHgw
N1x4MDdceGQwZXJyb3InLCBkYXRhKQotCi0gICAgICAgICMgcmVhc29uIG11c3QgYmUgZW1wdHkg
aWYgY29kZSBpcyBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fY3JlYXRlX2Ryb3BfY2hhbm5lbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgMSwgTm9uZSwgJ0Zvb0JhcicpCi0KLSAgICBkZWYgdGVzdF9w
YXJzZV9yZXF1ZXN0X3RleHQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfdGV4dCA9IF9jcmVhdGVf
cmVxdWVzdF9oZWFkZXIoKQotICAgICAgICBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uLCBoZWFkZXJz
ID0gbXV4Ll9wYXJzZV9yZXF1ZXN0X3RleHQocmVxdWVzdF90ZXh0KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdHRVQnLCBjb21tYW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZWNo
bycsIHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hUVFAvMS4xJywgdmVyc2lvbikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oaGVhZGVycykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3NlcnZlci5leGFtcGxlLmNvbScsIGhlYWRlcnNbJ0hvc3QnXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tJywgaGVhZGVyc1snT3JpZ2lu
J10pCi0KLQotY2xhc3MgTXV4SGFuZGxlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAg
ZGVmIHRlc3RfYWRkX2NoYW5uZWwoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21v
Y2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQot
ICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVy
KQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9j
aGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9D
TElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVh
ZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVf
YWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5j
b2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtl
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVl
c3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUo
Y2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9j
cmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9y
ZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAg
Y2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9
ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
YWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zs
b3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEs
IG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3Nh
Z2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRp
bF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5uZWwgMgotICAgICAgICBtZXNzYWdlcyA9IHJl
cXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgQ2hhbm5lbCAzCi0gICAgICAgIG1lc3NhZ2Vz
ID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDMpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAgICAgY29udHJvbF9ibG9ja3MgPSByZXF1ZXN0
LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAjIFRoZXJl
IHNob3VsZCBiZSA4IGNvbnRyb2wgYmxvY2tzOgotICAgICAgICAjICAgLSAxIE5ld0NoYW5uZWxT
bG90Ci0gICAgICAgICMgICAtIDIgQWRkQ2hhbm5lbFJlc3BvbnNlcyBmb3IgY2hhbm5lbCBpZCAy
IGFuZCAzCi0gICAgICAgICMgICAtIDYgRmxvd0NvbnRyb2xzIGZvciBjaGFubmVsIGlkIDEgKGlu
aXRpYWxpemUpLCAnSGVsbG8nLCAnV29ybGQnLAotICAgICAgICAjICAgICBhbmQgMyAnR29vZGJ5
ZSdzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOSwgbGVuKGNvbnRyb2xfYmxvY2tzKSkKLQot
ICAgIGRlZiB0ZXN0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fd3JpdGVfZmFpbHVyZShzZWxmKToKLSAg
ICAgICAgIyBVc2UgX0ZhaWxPbldyaXRlQ29ubmVjdGlvbi4KLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249X0ZhaWxPbldyaXRlQ29ubmVjdGlvbigpKQot
Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhf
aGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBt
dXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBMZXQgdGhlIHdvcmtlciBlY2hvIGJhY2sg
J0hlbGxvJy4gSXQgY2F1c2VzIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24KLSAgICAgICAgIyByYWlz
aW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9
J0hlbGxvJykpCi0KLSAgICAgICAgIyBMZXQgdGhlIHdvcmtlciBleGl0LiBUaGlzIHdpbGwgYmUg
dW5uZWNlc3Nhcnkgd2hlbgotICAgICAgICAjIF9Mb2dpY2FsQ29ubmVjdGlvbi53cml0ZSgpIGlz
IGNoYW5nZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmCi0gICAgICAgICMgd29rZSB1cCBieSBv
bl93cml0ZXJfZG9uZS4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLQotICAgICAgICAjIEFsbCB0aHJlYWRzIHNob3VsZCBiZSBkb25lLgotICAgICAg
ICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9Mikp
Ci0KLSAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3Bh
dGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBk
aXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgbXV4X2hh
bmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NM
T1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVf
cmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0
ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5l
bF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2Rl
ZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2No
YW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIE9uIHJlY2VpdmluZyB0aGlzICdIZWxsbycsIHRo
ZSBzZXJ2ZXIgdHJpZXMgdG8gZWNobyBiYWNrICdIZWxsbycsCi0gICAgICAgICMgYnV0IGl0IHdp
bGwgYmUgYmxvY2tlZCBzaW5jZSB0aGVyZSdzIG5vIHNlbmQgcXVvdGEgYXZhaWxhYmxlIGZvciB0
aGUKLSAgICAgICAgIyBjaGFubmVsIDIuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMgV2FpdCB1bnRpbCB0aGUgd29ya2VyIGlzIGJs
b2NrZWQgZHVlIHRvIHNlbmQgcXVvdGEgc2hvcnRhZ2UuCi0gICAgICAgIHRpbWUuc2xlZXAoMSkK
LQotICAgICAgICAjIENsb3NlIHRoZSBjaGFubmVsIDIuIFRoZSB3b3JrZXIgc2hvdWxkIGJlIG5v
dGlmaWVkIG9mIHRoZSBlbmQgb2YKLSAgICAgICAgIyB3cml0ZXIgdGhyZWFkIGFuZCBzdG9wIHdh
aXRpbmcgZm9yIHNlbmQgcXVvdGEgdG8gYmUgcmVwbGVuaXNoZWQuCi0gICAgICAgIGRyb3BfY2hh
bm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQ9MikKLQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGRyb3BfY2hhbm5lbCkKLQotICAgICAgICAj
IE1ha2Ugc3VyZSB0aGUgY2hhbm5lbCAxIGlzIGFsc28gY2xvc2VkLgotICAgICAgICBkcm9wX2No
YW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTEpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFubmVsKQotCi0gICAgICAgICMg
QWxsIHRocmVhZHMgc2hvdWxkIGJlIGRvbmUuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhf
aGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgIGRlZiB0ZXN0X2FkZF9j
aGFubmVsX2RlbHRhX2VuY29kaW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9t
b2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkK
LSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hl
cikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRf
Y2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1Jf
Q0xJRU5UKQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG5cclxuJwot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hh
bmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19j
b250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
WydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAg
ICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hh
bm5lbF9kZWx0YV9lbmNvZGluZ19vdmVycmlkZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0
Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRp
c3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RT
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVP
VEFfRk9SX0NMSUVOVCkKLQotICAgICAgICAjIE92ZXJyaWRlIFNlYy1XZWJTb2NrZXQtUHJvdG9j
b2wuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRUUC8xLjFcclxuJwotICAgICAgICAg
ICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxuJwotICAgICAgICAgICAg
ICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5n
PTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVz
c2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVu
X21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNzYWdlc1swXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgneC1mb28nLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bh
dGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0
ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2FmdGVyX2lkZW50aXR5KHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBt
dXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5O
RUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wg
aXMgZGlmZmVyZW50IGZyb20gY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UKLSAgICAgICAgIyBv
ZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAgICAgICAgIyBUT0RPKGJhc2hpKTogUmVtb3Zl
IFVwZ3JhZGUsIENvbm5lY3Rpb24sIFNlYy1XZWJTb2NrZXQtS2V5IGFuZAotICAgICAgICAjIFNl
Yy1XZWJTb2NrZXQtVmVyc2lvbi4KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSAoCi0gICAg
ICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAgICAgICAgICdIb3N0OiBzZXJ2
ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6
IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAg
ICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgICAgICAgICAnXHJc
bicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3Jl
cXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAg
ICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAg
IGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVu
aXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93
X2NvbnRyb2wpCi0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcblxyXG4n
Ci0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVl
c3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5nPTEsIGVuY29kZWRf
aGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFk
ZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93
X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdl
PSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdHb29k
YnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxf
ZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRpc3BhdGNo
ZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
WydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sz
XS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVsIDIKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxs
bycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENoYW5uZWwgMwotICAgICAgICBtZXNzYWdlcyA9
IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygzKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgSGFuZHNoYWtlIGJhc2Ugc2hvdWxkIGJl
IHVwZGF0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAneC1mb28n
LAotICAgICAgICAgICAgbXV4X2hhbmRsZXIuX2hhbmRzaGFrZV9iYXNlLl9oZWFkZXJzWydTZWMt
V2ViU29ja2V0LVByb3RvY29sJ10pCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9y
ZW1vdmVfaGVhZGVyKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVl
c3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAg
bXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAg
ICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9z
bG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQot
ICAgICAgICAjIE92ZXJyaWRlIGhhbmRzaGFrZSBkZWx0YSBiYXNlLgotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9ICgKLSAgICAgICAgICAgICdHRVQgL2VjaG8gSFRUUC8xLjFcclxuJwotICAg
ICAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxlLmNvbVxyXG4nCi0gICAgICAgICAgICAnU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxuJwotICAgICAgICAgICAgJ0Nvbm5lY3Rpb246
IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
bicKLSAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFu
ZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVs
X3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFJlbW92ZSBTZWMtV2Vi
U29ja2V0LVByb3RvY29sIGhlYWRlci4KLSAgICAgICAgZGVsdGEgPSAoJ0dFVCAvZWNobyBIVFRQ
LzEuMVxyXG4nCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOicKLSAg
ICAgICAgICAgICAgICAgJ1xyXG4nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2Ny
ZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0z
LCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3df
Y29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRf
cXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRy
b2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdXb3JsZCcpKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MywgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSht
dXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFtdLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50
c1syXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ1dvcmxkJ10sIGRpc3Bh
dGNoZXIuY2hhbm5lbF9ldmVudHNbM10ubWVzc2FnZXMpCi0gICAgICAgICMgQ2hhbm5lbCAyCi0g
ICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2Vz
KDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNzYWdlc1swXSkKLSAgICAgICAgIyBDaGFubmVs
IDMKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVz
c2FnZXMoMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1lc3NhZ2VzWzBdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ3gtZm9vJywKLSAgICAgICAgICAgIGRpc3BhdGNo
ZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90b2NvbCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBkaXNwYXRjaGVyLmNo
YW5uZWxfZXZlbnRzWzNdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9hZGRf
Y2hhbm5lbF9kZWx0YV9lbmNvZGluZ19wZXJtZXNzYWdlX2NvbXByZXNzKHNlbGYpOgotICAgICAg
ICAjIEVuYWJsZSBwZXJtZXNzYWdlIGNvbXByZXNzIGV4dGVuc2lvbiBvbiB0aGUgaW1wbGljaXRs
eSBvcGVuZWQgY2hhbm5lbC4KLSAgICAgICAgZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRl
bnNpb25zKAotICAgICAgICAgICAgJyVzOyBtZXRob2Q9ZGVmbGF0ZScgJSBjb21tb24uUEVSTUVT
U0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21v
Y2tfcmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zPWV4dGVu
c2lvbnMpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAg
ICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAg
ICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVs
X3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQp
Ci0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcblxyXG4nCi0gICAgICAg
IGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtl
PWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVs
X3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBTZW5kIGNvbXByZXNz
ZWQgJ0hlbGxvJyBvbiBsb2dpY2FsIGNoYW5uZWwgMSBhbmQgMi4KLSAgICAgICAgY29tcHJlc3Mg
PSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVs
bG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MSwgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnN2MT1UcnVlKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAot
ICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0n
R29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5
ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2Rv
bmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlz
cGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXMpCi0g
ICAgICAgICMgV3JpdHRlbiAnSGVsbG8ncyBzaG91bGQgYmUgY29tcHJlc3NlZC4KLSAgICAgICAg
bWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbXByZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBdKQotICAgICAgICBtZXNzYWdl
cyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tcHJlc3NlZF9oZWxsbywgbWVzc2FnZXNbMF0pCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hh
bm5lbF9kZWx0YV9lbmNvZGluZ19yZW1vdmVfZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAgICAgIyBF
bmFibGUgcGVybWVzc2FnZSBjb21wcmVzcyBleHRlbnNpb24gb24gdGhlIGltcGxpY2l0bHkgb3Bl
bmVkIGNoYW5uZWwuCi0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9u
cygKLSAgICAgICAgICAgICclczsgbWV0aG9kPWRlZmxhdGUnICUgY29tbW9uLlBFUk1FU1NBR0Vf
Q09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3Jl
cXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucz1leHRlbnNpb25z
KQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4
X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
bXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90
cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0g
ICAgICAgICMgUmVtb3ZlIHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0ZW5zaW9uLgotICAgICAgICBk
ZWx0YSA9ICgnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAgICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9uczpcclxuJwotICAgICAgICAgICAgICAgICAnXHJcbicpCi0gICAg
ICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJh
bWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNo
YWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFu
bmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRy
b2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBTZW5kIGNvbXBy
ZXNzZWQgbWVzc2FnZSBvbiBsb2dpY2FsIGNoYW5uZWwgMi4gVGhlIG1lc3NhZ2Ugc2hvdWxkCi0g
ICAgICAgICMgYmUgcmVqZWN0ZWQgKHNpbmNlIHJzdjEgaXMgc2V0KS4KLSAgICAgICAgY29tcHJl
c3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJF
U1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPVRydWUpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0x
LCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5k
bGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9
IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01V
WF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJP
UF9DT0RFX05PUk1BTF9DTE9TVVJFLCBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAgICAjIFVu
c3VwcG9ydGVkRnJhbWVFeGNlcHRpb24gc2hvdWxkIGJlIHJhaXNlZCBvbiBsb2dpY2FsIGNoYW5u
ZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZGlzcGF0Y2hlci5jaGFu
bmVsX2V2ZW50c1syXS5leGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24pKQotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5u
ZWxfaW52YWxpZF9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9j
a19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0g
ICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2No
YW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFk
ZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNv
ZGluZz0zLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2Up
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVz
dCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAg
IGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tz
KCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5O
RUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfVU5LTk9XTl9SRVFV
RVNUX0VOQ09ESU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9w
X2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9pbmNvbXBs
ZXRlX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1
ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAg
IG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAg
ICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxf
c2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkK
LQotICAgICAgICBpbmNvbXBsZXRlX2VuY29kZWRfaGFuZHNoYWtlID0gJ0dFVCAvZWNobyBIVFRQ
LzEuMScKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxf
cmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAg
ICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWluY29tcGxldGVfZW5jb2RlZF9oYW5kc2hha2Up
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVz
dCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGlt
ZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoMSBpbiBkaXNwYXRjaGVyLmNoYW5u
ZWxfZXZlbnRzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IDIgaW4gZGlzcGF0Y2hlci5j
aGFubmVsX2V2ZW50cykKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2R1cGxpY2F0ZV9jaGFu
bmVsX2lkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQot
ICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hh
bmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4
X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyht
dXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNo
bycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3Jl
cXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAg
ICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAg
IGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycp
Ci0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVl
c3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQot
ICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAg
aWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2Nv
ZGUpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2Ryb3BfY2hhbm5lbChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9N
dXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVy
KHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAg
ICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9D
SEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXgu
X0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9
IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5l
bF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBfY3JlYXRl
X2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFubmVsKQotCi0gICAgICAgICMgVGVybWluYXRlIGltcGxp
Y2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNz
YWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndh
aXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGV4Y2VwdGlvbiA9IGRpc3BhdGNo
ZXIuY2hhbm5lbF9ldmVudHNbMl0uZXhjZXB0aW9uCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShl
eGNlcHRpb24uX19jbGFzc19fID09IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKQotCi0g
ICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nX2ZyYW1lKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFu
ZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xP
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9R
VU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9y
ZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVk
X2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHBpbmdfZnJhbWUg
PSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvIFdvcmxkIScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVf
UElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nX2ZyYW1lKQot
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQot
Ci0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRy
b2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BP
TkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVs
bG8gV29ybGQhJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2Vp
dmVfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2Nr
X3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikK
LSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hh
bm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJ
RU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRl
cihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2Fk
ZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29k
aW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0
KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBhIHBpbmcgd2l0aCBtZXNz
YWdlICdIZWxsbyB3b3JsZCEnIGluIHR3byBmcmFnbWVudGVkIGZyYW1lcy4KLSAgICAgICAgcGlu
Z19mcmFtZTEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BD
T0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZ19mcmFt
ZTEpCi0gICAgICAgIHBpbmdfZnJhbWUyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhwaW5nX2ZyYW1lMikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVz
c2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53
YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3Qu
Y29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05HLCBtZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1lc3NhZ2VzWzBdWydtZXNz
YWdlJ10pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50ZWRfcGluZ193aGlsZV9yZWNl
aXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVy
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5h
ZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9G
T1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0
X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIs
IGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRz
aGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTkpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBhIGZyYWdtZW50
ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAgICAgaGVsbG8gPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
aGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFnbWVudGVkIGZy
YW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAgIyBmcmFnbWVudGVkIHBpbmcuCi0g
ICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0gICAgICAgIHBpbmcyID0gX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAgICAjIFNlbmQgdGhlIGxhc3QgZnJh
Z21lbnRlZCBmcmFtZSBvZiB0aGUgbWVzc2FnZS4KLSAgICAgICAgd29ybGQgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKHdvcmxkKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdl
PSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRf
dW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25u
ZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
WydIZWxsbyBXb3JsZCEnXSwgbWVzc2FnZXMpCi0gICAgICAgIGNvbnRyb2xfbWVzc2FnZXMgPSBy
ZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgY29udHJvbF9tZXNzYWdlc1sw
XVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgY29udHJvbF9t
ZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV90d29fcGluZ193
aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0
ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19j
b250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjUpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBh
IGZyYWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAgICAgaGVsbG8gPSBf
Y3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFn
bWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAgIyBmcmFnbWVudGVk
IHBpbmcgYW5kIGEgbm9uLWZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGluZzEgPSBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhwaW5nMSkKLSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
PSduZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENP
REVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBp
bmcyKQotICAgICAgICBwaW5nMyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BvbmchJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzMpCi0KLSAgICAgICAg
IyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UuCi0gICAgICAg
IHdvcmxkID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nV29ybGQhJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyh3b3JsZCkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNz
YWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAgICAgICBj
b250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
bWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcs
IGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcsIGNvbnRyb2xfbWVzc2FnZXNbMV1bJ29wY29k
ZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRyb2xfbWVzc2FnZXNb
MV1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV93aGlsZV9yZWNl
aXZpbmdfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9t
b2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkK
LSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hl
cikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRf
Y2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1Jf
Q0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hl
YWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRl
X2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVu
Y29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFr
ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1
ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE5KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFnbWVudGVkIHBp
bmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGknLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0KLSAgICAgICAgIyBC
ZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFnbWVudGVkIHBpbmcsIHNlbmQgYSBtZXNzYWdlLgot
ICAgICAgICAjIFRoZSBsb2dpY2FsIGNoYW5uZWwgKDIpIHNob3VsZCBiZSBkcm9wcGVkLgotICAg
ICAgICBtZXNzYWdlID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyB3b3JsZCEn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKG1lc3NhZ2UpCi0KLSAgICAgICAgIyBT
ZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UuCi0gICAgICAgIHBp
bmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9w
X2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rp
b24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUg
PT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAgIyBObyBtZXNzYWdlIHNob3Vs
ZCBiZSBzZW50IG9uIGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJy
b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9tZXNzYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAg
ICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09G
X0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
ID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFkZF9jaGFu
bmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAg
ICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxm
LmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAg
ICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUElORywg
bWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScs
IG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9zZW5kX2ZyYWdtZW50ZWRf
cGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAg
ICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5k
bGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9o
YW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4
Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAg
ICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL3Bpbmcn
KQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1
ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAg
ICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAj
IFJlcGxlbmlzaCAzIGJ5dGVzLiBUaGlzIGlzbid0IGVub3VnaCB0byBzZW5kIHRoZSB3aG9sZSBw
aW5nIGZyYW1lCi0gICAgICAgICMgYmVjYXVzZSB0aGUgZnJhbWUgd2lsbCBoYXZlIDUgYnl0ZXMg
bWVzc2FnZSgnUGluZyEnKS4gVGhlIGZyYW1lCi0gICAgICAgICMgc2hvdWxkIGJlIGZyYWdtZW50
ZWQuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBXYWl0IHVudGlsIHRoZSB3b3JrZXIg
aXMgYmxvY2tlZCBkdWUgdG8gc2VuZCBxdW90YSBzaG9ydGFnZS4KLSAgICAgICAgdGltZS5zbGVl
cCgxKQotCi0gICAgICAgICMgUmVwbGVuaXNoIHJlbWFpbmluZyAyICsgMSBieXRlcyAoaW5jbHVk
aW5nIGV4dHJhIGNvc3QpLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3Nh
Z2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIG1lc3NhZ2VzWzBd
WydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBtZXNzYWdlc1sw
XVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFnbWVudGVkX3Bpbmdfd2hpbGVf
c2VuZGluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNo
ZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNw
YXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVy
LmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RB
X0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVl
c3RfaGVhZGVyKAotICAgICAgICAgICAgcGF0aD0nL3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQnKQot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIEFw
cGxpY2F0aW9uIHdpbGwgc2VuZDoKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnSGVsbG8gJyB3
aXRoIGZpbj0wCi0gICAgICAgICMgLSBwaW5nIHdpdGggJ1BpbmchJyBtZXNzYWdlCi0gICAgICAg
ICMgLSB0ZXh0IG1lc3NhZ2UgJ1dvcmxkIScgd2l0aCBmaW49MQotICAgICAgICAjIFJlcGxlbmlz
aCAoNiArIDEpICsgKDIgKyAxKSBieXRlcyBzbyB0aGF0IHRoZSBwaW5nIHdpbGwgYmUKLSAgICAg
ICAgIyBmcmFnbWVudGVkIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgIGZsb3dfY29u
dHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVv
dGE9MTApCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9s
KQotCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIFJlcGxlbmlzaCByZW1haW5p
bmcgMyArIDYgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9OSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
bXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2Fn
ZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykKLSAgICAgICAgY29u
dHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21l
c3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QSU5HLCBj
b250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
UGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX2ZyYWdtZW50ZWRfdHdvX3Bpbmdfd2hpbGVfc2VuZGluZ19mcmFnbWVudGVkX21lc3NhZ2Uo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5J
VElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5j
b2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKAotICAgICAgICAgICAgcGF0
aD0nL3R3b19waW5nX3doaWxlX2hlbGxvX3dvcmxkJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVx
dWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNo
YW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVu
Y29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFk
ZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBBcHBsaWNhdGlvbiB3aWxsIHNlbmQ6Ci0g
ICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ0hlbGxvICcgd2l0aCBmaW49MAotICAgICAgICAjIC0g
cGluZyB3aXRoICdQaW5nIScgbWVzc2FnZQotICAgICAgICAjIC0gcGluZyB3aXRoICdQb25nIScg
bWVzc2FnZQotICAgICAgICAjIC0gdGV4dCBtZXNzYWdlICdXb3JsZCEnIHdpdGggZmluPTEKLSAg
ICAgICAgIyBSZXBsZW5pc2ggKDYgKyAxKSArICgyICsgMSkgYnl0ZXMgc28gdGhhdCB0aGUgZmly
c3QgcGluZyB3aWxsIGJlCi0gICAgICAgICMgZnJhZ21lbnRlZCBvbiB0aGUgbG9naWNhbCBjaGFu
bmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEwKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICB0aW1lLnNsZWVwKDEpCi0KLSAgICAg
ICAgIyBSZXBsZW5pc2ggcmVtYWluaW5nIDMgKyAoNSArIDEpICsgNiBieXRlcy4gVGhlIHNlY29u
ZCBwaW5nIHdvbid0Ci0gICAgICAgICMgYmUgZnJhZ21lbnRlZCBvbiB0aGUgbG9naWNhbCBjaGFu
bmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE1KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVl
c3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAgICAgICBjb250cm9sX21lc3Nh
Z2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVz
c2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIGNv
bnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMV1bJ29wY29kZSddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRyb2xfbWVzc2FnZXNbMV1bJ21lc3NhZ2Un
XSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZHJvcF9jaGFubmVsKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAg
ICMgRHJvcENoYW5uZWwgZm9yIGNoYW5uZWwgaWQgMSB3aGljaCBkb2Vzbid0IGhhdmUgcmVhc29u
LgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBceDYwXHgwMVx4MDAn
LCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBi
IGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2Nrcygp
Ci0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0FDS05PV0xFREdFRCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotCi0gICAgZGVm
IHRlc3RfdHdvX2Zsb3dfY29udHJvbChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
bW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigp
Ci0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNo
ZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRk
X2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9S
X0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9o
ZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBl
bmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hh
a2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVx
dWVzdCkKLQotICAgICAgICAjIFJlcGxlbmlzaCA1IGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRy
b2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3Rh
PTUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQot
Ci0gICAgICAgICMgU2VuZCAxMCBieXRlcy4gVGhlIHNlcnZlciB3aWxsIHRyeSBlY2hvIGJhY2sg
MTAgYnl0ZXMuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAg
ICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsb1dv
cmxkJykpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggNSArIDEgKHBlci1tZXNzYWdlIGV4dHJhIGNv
c3QpIGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWydIZWxsb1dvcmxkJ10sIG1lc3NhZ2VzKQotICAgICAgICByZWNlaXZlZF9mbG93X2Nv
bnRyb2xzID0gWwotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0
X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4
Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCBhbmQgYi5jaGFubmVsX2lkID09IDJdCi0gICAgICAg
ICMgUmVwbGVuaXNobWVudCBmb3IgJ0hlbGxvV29ybGQnICsgMQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDExLCByZWNlaXZlZF9mbG93X2NvbnRyb2xzWzBdLnNlbmRfcXVvdGEpCi0gICAgICAg
ICMgUmVwbGVuaXNobWVudCBmb3IgJ0dvb2RieWUnICsgMQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDgsIHJlY2VpdmVkX2Zsb3dfY29udHJvbHNbMV0uc2VuZF9xdW90YSkKLQotICAgIGRlZiB0
ZXN0X25vX3NlbmRfcXVvdGFfb25fc2VydmVyKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRj
aGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlz
cGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxl
ci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9U
QV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1
ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxs
b1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAg
ICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2Ri
eWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBzZWMgc28gdGhhdCB0aGUgc2VydmVy
IGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdIZWxsb1dvcmxkJy4KLSAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0xKSkK
LQotICAgICAgICAjIE5vIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgb24gY2hhbm5lbCAyLgotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfbm9fc2VuZF9xdW90YV9vbl9zZXJ2ZXJf
Zm9yX3Blcm1lc3NhZ2VfZXh0cmFfY29zdChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hl
cigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3Bh
dGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVz
dF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2Ny
ZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0y
LCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5k
c2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxf
cmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgIyBSZXBsZW5pc2ggb25seSBsZW4oJ1dvcmxk
JykgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgICMgU2VydmVyIHNob3VsZCBub3Qg
Y2FsbGJhY2sgZm9yIHRoaXMgbWVzc2FnZS4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIs
IG1lc3NhZ2U9J1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3Nh
Z2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBzZWMgc28gdGhhdCB0
aGUgc2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdXb3JsZCcuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9
MSkpCi0KLSAgICAgICAgIyBPbmx5IG9uZSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IG9uIGNoYW5u
ZWwgMi4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5f
bWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIG1lc3NhZ2Vz
KQotCi0gICAgZGVmIHRlc3RfcXVvdGFfdmlvbGF0aW9uX2J5X2NsaWVudChzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9
IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5k
bGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9P
Rl9DSEFOTkVMX1NMT1RTLCAwKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0
ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdl
PSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9
J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91
bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgY29udHJvbF9ibG9ja3MgPSByZXF1ZXN0
LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDUsIGxlbihjb250cm9sX2Jsb2NrcykpCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9
IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIGNvbnRyb2xfYmxvY2tzCi0gICAgICAgICAg
ICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAgICBkZWYg
dGVzdF9jb25zdW1lX3F1b3RhX2VtcHR5X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgICMgQ2xp
ZW50IGhhcyAxIGJ5dGUgcXVvdGEuCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Ns
b3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywgMSkKLQotICAgICAgICBl
bmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93
X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVk
X3F1b3RhPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250
cm9sKQotICAgICAgICAjIFNlbmQgYW4gZW1wdHkgbWVzc2FnZS4gUHl3ZWJzb2NrZXQgYWx3YXlz
IHJlcGxlbmlzaGVzIDEgYnl0ZSBxdW90YQotICAgICAgICAjIGZvciBlbXB0eSBtZXNzYWdlCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPScnKSkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICAjIFRoaXMgbWVz
c2FnZSB2aW9sYXRlcyBxdW90YSBvbiBjaGFubmVsIGlkIDIuCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgbGVuKGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXMp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzJdLm1lc3NhZ2VzWzBdKQotCi0gICAgICAgIHJlY2VpdmVkX2Zsb3dfY29udHJvbHMgPSBbCi0g
ICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250
cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVf
RkxPV19DT05UUk9MIGFuZCBiLmNoYW5uZWxfaWQgPT0gMl0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgxLCBsZW4ocmVjZWl2ZWRfZmxvd19jb250cm9scykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1swXS5zZW5kX3F1b3RhKQotCi0gICAgICAg
IGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29u
bmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9w
Y29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9jb25zdW1l
X3F1b3RhX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hl
cigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3Bh
dGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgIyBDbGllbnQgaGFz
IGxlbignSGVsbG8nKSArIGxlbignR29vZGJ5ZScpICsgMiBieXRlcyBxdW90YS4KLSAgICAgICAg
bXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFO
TkVMX1NMT1RTLCAxNCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVx
dWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0g
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9p
ZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9o
YW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5u
ZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJv
bF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwgbWVzc2FnZT0nSGUnLCBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCkpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdsbG8nLCBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pKQotCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBtZXNzYWdlcykKLQotICAgIGRl
ZiB0ZXN0X2ZyYWdtZW50ZWRfY29udHJvbF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0
ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIHRvdGFsIDYgYnl0ZXMgaW4g
MyBGbG93Q29udHJvbHMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0y
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQot
ICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdl
PSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRf
dW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25u
ZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBtZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0g
ICAgZGVmIHRlc3RfY2hhbm5lbF9zbG90X3Zpb2xhdGlvbl9ieV9jbGllbnQoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9JTklUSUFMX1FVT1RB
X0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVl
c3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFu
ZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVs
X3JlcXVlc3QpCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBUaGlzIHJlcXVlc3Qgc2hvdWxkIGJl
IHJlamVjdGVkLgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9o
ZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBl
bmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hh
a2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVx
dWVzdCkKLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUo
Y2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Mywg
bWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAg
ICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29v
ZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGls
X2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkaXNwYXRj
aGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzLmhhc19rZXkoMykp
Ci0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJl
cXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAg
ICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDMsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklPTEFUSU9OLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAgICBk
ZWYgdGVzdF9xdW90YV9vdmVyZmxvd19ieV9jbGllbnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQp
Ci0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBh
dGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2No
YW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9
MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0g
ICAgICAgICMgUmVwbGVuaXNoIDB4N0ZGRkZGRkZGRkZGRkZGRiBieXRlcyB0d2ljZS4KLSAgICAg
ICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0weDdGRkZGRkZG
RkZGRkZGRkYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250
cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkK
LQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91
dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3Ig
YiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAg
ICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAgICBk
ZWYgdGVzdF9pbnZhbGlkX2VuY2Fwc3VsYXRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAg
IGZpcnN0X2J5dGUgPSAobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QgPDwgNSkK
LSAgICAgICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICAgICAgbXV4
Ll9lbmNvZGVfY2hhbm5lbF9pZCgxKSArCi0gICAgICAgICAgICAgICAgIG11eC5fZW5jb2RlX251
bWJlcigwKSkKLSAgICAgICAgcGF5bG9hZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQobXV4Ll9D
T05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAgICAgICAgdGV4dF9mcmFtZSA9IGNyZWF0ZV9i
aW5hcnlfZnJhbWUocGF5bG9hZCwgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHRleHRfZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAg
IGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29u
bmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9w
Y29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG11eC5fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElOR19NRVNTQUdFLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2Nv
ZGUpCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX3RydW5jYXRlZChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9N
dXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVy
KHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLQotICAg
ICAgICAjIFRoZSBsYXN0IGJ5dGUgb2YgdGhlIGNoYW5uZWwgaWQgaXMgbWlzc2luZy4KLSAgICAg
ICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDgwJywgbWFzaz1UcnVlKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAg
ICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNv
bm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5v
cGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9zZV9jb2RlKQotCi0g
ICAgZGVmIHRlc3RfaW5uZXJfZnJhbWVfdHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMg
SnVzdCBjb250YWluIGNoYW5uZWwgaWQgMS4KLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5
X2ZyYW1lKCdceDAxJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAot
ICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29u
dHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RF
X0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9F
TkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVELAotICAgICAgICAgICAgICAgICAgICAgICAg
IGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9u
LlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF91
bmtub3duX211eF9vcGNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tf
cmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAg
ICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQot
ICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBVbmRlZmluZWQgb3Bjb2Rl
IDUKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAwXHhhMCcsIG1hc2s9
VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZSkKLQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9
MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIg
aW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAg
ICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfVU5LTk9XTl9NVVhfT1BDT0RFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3Nl
X2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX211eF9jb250cm9sX2Jsb2NrKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotCi0gICAgICAgICMgRHJvcENoYW5uZWwgY29udGFpbnMgMSBieXRlIHJlYXNvbgotICAgICAg
ICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBceDYwXHgwMFx4MDFceDAwJywgbWFz
az1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91
dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3Ig
YiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAg
ICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9M
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lO
VF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2Vy
dmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9wZXJtZXNzYWdlX2NvbXByZXNzKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNw
YXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXgu
X011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3Rh
cnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxf
TlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgRW5hYmxl
IHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0ZW5zaW9uIG9uIGxvZ2ljYWwgY2hhbm5lbCAyLgotICAg
ICAgICBleHRlbnNpb25zID0gJyVzOyBtZXRob2Q9ZGVmbGF0ZScgJSAoCi0gICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zPWV4
dGVuc2lvbnMpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFu
bmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAs
Ci0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0g
ICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2VkICdIZWxsbycgdHdp
Y2UuCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHps
aWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykK
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzEgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29tcHJlc3NlZF9oZWxsbzFbOi00
XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxv
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPVRydWUpKQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8yICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQot
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzZWRfaGVsbG8yWzotNF0KLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbzIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVlKSkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFsnSGVsbG8nLCAnSGVsbG8nXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAgICAjIFdyaXR0
ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAgICAgIG1lc3NhZ2VzID0gcmVx
dWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMiwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21w
cmVzc2VkX2hlbGxvMSwgbWVzc2FnZXNbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
cHJlc3NlZF9oZWxsbzIsIG1lc3NhZ2VzWzFdKQotCi0KLSAgICBkZWYgdGVzdF9wZXJtZXNzYWdl
X2NvbXByZXNzX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9ucyA9
IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAgJyVzOyBtZXRob2Q9ZGVmbGF0
ZScgJSBjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5l
bF9leHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9T
TE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgIyBTZW5kIGNvbXByZXNzZWQgJ0hlbGxvSGVs
bG9IZWxsbycgYXMgZnJhZ21lbnRlZCBtZXNzYWdlLgotICAgICAgICBjb21wcmVzcyA9IHpsaWIu
Y29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0g
Y29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvSGVsbG9IZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLQotICAgICAgICBtID0gbGVuKGNv
bXByZXNzZWRfaGVsbG8pIC8gMgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG9bOm1d
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSwgcnN2MT1UcnVl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X1RFWFQpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAg
ICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG9bbTpdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLCByc3YxPUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElP
TikpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkK
LQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvSGVsbG9IZWxsbydd
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0u
bWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX21lc3NhZ2VzKDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2Vz
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvLCBtZXNzYWdlc1sw
XSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfYmFkX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0
Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9N
dXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05V
TUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBh
ZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAot
ICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFt
ZSB3aXRoIGZpbj1GYWxzZSwgYW5kIHRoZW4gc2VuZCBhIGZyYW1lIHdpdGgKLSAgICAgICAgIyBv
cGNvZGU9VEVYVCAobm90IENPTlRJTlVBVElPTikuIExvZ2ljYWwgY2hhbm5lbCAyIHNob3VsZCBi
ZSBkcm9wcGVkLgotICAgICAgICBmcmFtZTEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0n
SGVsbG8gJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24u
T1BDT0RFX1RFWFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUx
KQotICAgICAgICBmcmFtZTIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nV29ybGQhJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVY
VCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZTIpCi0KLSAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hv
JykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVx
dWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MywgZW5jb2Rpbmc9MCwKLSAgICAg
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAg
IyBTZW5kIGEgZnJhbWUgd2l0aCBvcGNvZGU9Q09OVElOVUFUSU9OIHdpdGhvdXQgYSBwcmVjZWRp
bmcgZnJhbWUKLSAgICAgICAgIyB0aGUgZmluIG9mIHdoaWNoIGlzIG5vdCBzZXQuIExvZ2ljYWwg
Y2hhbm5lbCAzIHNob3VsZCBiZSBkcm9wcGVkLgotICAgICAgICBmcmFtZTMgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nSGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUzKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTQsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgU2VuZCBhIGZyYW1lIHdpdGggb3Bj
b2RlPVBJTkcgYW5kIGZpbj1GYWxzZSwgYW5kIHRoZW4gc2VuZCBhIGZyYW1lCi0gICAgICAgICMg
d2l0aCBvcGNvZGU9VEVYVCAobm90IENPTlRJTlVBVElPTikuIExvZ2ljYWwgY2hhbm5lbCA0IHNo
b3VsZCBiZQotICAgICAgICAjIGRyb3BwZWQuCi0gICAgICAgIGZyYW1lNCA9IF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlPSdQaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZnJhbWU0KQotICAgICAgICBmcmFtZTUgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD00LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZT0nSGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlu
PVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29t
bW9uLk9QQ09ERV9URVhUKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZy
YW1lNSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAg
ICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScp
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUo
dGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWxzID0gWwotICAgICAgICAgICAgYiBm
b3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQot
ICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTF0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oZHJvcF9jaGFubmVscykpCi0gICAgICAg
IGZvciBkIGluIGRyb3BfY2hhbm5lbHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11
eC5fRFJPUF9DT0RFX0JBRF9GUkFHTUVOVEFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkLmRyb3BfY29kZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVu
aXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW0ucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYWNmZWIwNDhkMy4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW0ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NyAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IlRlc3RzIGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBv
cnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29j
a2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQotCi0KLWNsYXNzIFN0cmVhbVRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCi0K
LSAgICBkZWYgdGVzdF9jcmVhdGVfaGVhZGVyKHNlbGYpOgotICAgICAgICAjIG1vcmUsIHJzdjEs
IC4uLiwgcnN2NCBhcmUgYWxsIHRydWUKLSAgICAgICAgaGVhZGVyID0gc3RyZWFtLmNyZWF0ZV9o
ZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCAxLCAxLCAxLCAxLCAxLCAxKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceGYxXHg4MScsIGhlYWRlcikKLQotICAgICAgICAjIE1heGltdW0gcGF5
bG9hZCBzaXplCi0gICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKAotICAgICAg
ICAgICAgY29tbW9uLk9QQ09ERV9URVhULCAoMSA8PCA2MykgLSAxLCAwLCAwLCAwLCAwLCAwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAxXHg3Zlx4N2ZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmJywgaGVhZGVyKQotCi0gICAgICAgICMgSW52YWxpZCBvcGNvZGUgMHgxMAotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJlYW0uY3JlYXRlX2hlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx
MCwgMCwgMCwgMCwgMCwgMCwgMCkKLQotICAgICAgICAjIEludmFsaWQgdmFsdWUgMHhmIHBhc3Nl
ZCB0byBtb3JlIHBhcmFtZXRlcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0uY3JlYXRlX2hlYWRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbW9uLk9QQ09ERV9URVhULCAwLCAweGYsIDAsIDAsIDAs
IDApCi0KLSAgICAgICAgIyBUb28gbG9uZyBwYXlsb2FkX2xlbmd0aAotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0u
Y3JlYXRlX2hlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLk9QQ09ERV9U
RVhULCAxIDw8IDYzLCAwLCAwLCAwLCAwLCAwKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNh
OWFjNzEzMGI3My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1f
aGl4aWU3NS5weQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1
bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBk
YXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20gdGVzdC50ZXN0
X21zZ3V0aWwgaW1wb3J0IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1Ci0KLQotY2xhc3MgU3RyZWFt
SGl4aWU3NVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIFN0
cmVhbUhpeGllNzUgY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9wYXlsb2FkX2xlbmd0aChzZWxm
KToKLSAgICAgICAgZm9yIGxlbmd0aCwgYnl0ZXMgaW4gKCgwLCAnXHgwMCcpLCAoMHg3ZiwgJ1x4
N2YnKSwgKDB4ODAsICdceDgxXHgwMCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KDB4MTIzNCwgJ1x4ODBceGE0XHgzNCcpKToKLSAgICAgICAgICAgIHRlc3Rfc3RyZWFtID0gU3Ry
ZWFtSGl4aWU3NShfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NShieXRlcykpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGxlbmd0aCwgdGVzdF9zdHJlYW0uX3Jl
YWRfcGF5bG9hZF9sZW5ndGhfaGl4aWU3NSgpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF91dGls
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGY0YWIwNTk2NTIuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDIwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEs
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0KLSIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCBy
YW5kb20KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRo
ICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1fVEVTVF9EQVRBX0RJUiA9IG9z
LnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJykKLQotCi1j
bGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Ig
dXRpbCBtb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9nZXRfc3RhY2tfdHJhY2Uoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ05vbmVcbicsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGEgPSAxIC8gMCAgIyBJbnRlbnRpb25hbGx5IHJh
aXNlIGV4Y2VwdGlvbi4KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHRy
YWNlID0gdXRpbC5nZXRfc3RhY2tfdHJhY2UoKQotICAgICAgICAgICAgc2VsZi5mYWlsVW5sZXNz
KHRyYWNlLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQotICAgICAgICAgICAgc2VsZi5mYWlsVW5s
ZXNzKHRyYWNlLmZpbmQoJ1plcm9EaXZpc2lvbkVycm9yJykgIT0gLTEpCi0KLSAgICBkZWYgdGVz
dF9wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICBleGMgPSBFeGNl
cHRpb24oJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBzdHIoZXhj
KSkKLSAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKCdIZWxsbyAnLCBl
eGMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkJywgc3RyKGV4YykpCi0K
LSAgICBkZWYgdGVzdF9nZXRfc2NyaXB0X2ludGVycChzZWxmKToKLSAgICAgICAgY3lnd2luX3Bh
dGggPSAnYzpcXGN5Z3dpblxcYmluJwotICAgICAgICBjeWd3aW5fcGVybCA9IG9zLnBhdGguam9p
bihjeWd3aW5fcGF0aCwgJ3BlcmwnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHV0
aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFU
QV9ESVIsICdSRUFETUUnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdXRpbC5n
ZXRfc2NyaXB0X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJ
UiwgJ1JFQURNRScpLCBjeWd3aW5fcGF0aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy91
c3IvYmluL3BlcmwgLXdUJywgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgKLSAgICAgICAgICAgIG9z
LnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBsJykpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGN5Z3dpbl9wZXJsICsgJyAtd1QnLCB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKAot
ICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSwgY3ln
d2luX3BhdGgpKQotCi0gICAgZGVmIHRlc3RfaGV4aWZ5KHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAwOSAwZCAwYSAwMCBmZicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoJ2F6QVowOSBcdFxyXG5ceDAwXHhmZicpKQot
Ci0KLWNsYXNzIFJlcGVhdGVkWG9yTWFza2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
IiIiQSB1bml0dGVzdCBmb3IgUmVwZWF0ZWRYb3JNYXNrZXIgY2xhc3MuIiIiCi0KLSAgICBkZWYg
dGVzdF9tYXNrKHNlbGYpOgotICAgICAgICAjIFNhbXBsZSBpbnB1dCBlNiw5NyxhNSBpcyBVKzY1
ZTUgaW4gVVRGLTgKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHhm
Zlx4ZmZceGZmXHhmZicpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5N1x4
YTUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDE5XHg2OFx4NWEnLCByZXN1bHQpCi0K
LSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHgwMFx4MDBceDAwXHgw
MCcpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5N1x4YTUnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceGU2XHg5N1x4YTUnLCByZXN1bHQpCi0KLSAgICAgICAgbWFz
a2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHhlNlx4OTdceGE1XHgyMCcpCi0gICAgICAg
IHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5N1x4YTUnKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdceDAwXHgwMFx4MDAnLCByZXN1bHQpCi0KLSAgICBkZWYgdGVzdF9tYXNrX3R3aWNl
KHNlbGYpOgotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKCdceDAwXHg3
Zlx4ZmZceDIwJykKLSAgICAgICAgIyBtYXNrWzBdLCBtYXNrWzFdLCAuLi4gd2lsbCBiZSB1c2Vk
LgotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHgwMFx4MDBceDAwXHgwMFx4MDAnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwXHg3Zlx4ZmZceDIwXHgwMCcsIHJlc3VsdCkK
LSAgICAgICAgIyBtYXNrWzJdLCBtYXNrWzBdLCAuLi4gd2lsbCBiZSB1c2VkIGZvciB0aGUgbmV4
dCBjYWxsLgotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHgwMFx4MDBceDAwXHgwMFx4
MDAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDdmXHhmZlx4MjBceDAwXHg3ZicsIHJl
c3VsdCkKLQotICAgIGRlZiB0ZXN0X21hc2tfbGFyZ2VfZGF0YShzZWxmKToKLSAgICAgICAgbWFz
a2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignbUFTaycpCi0gICAgICAgIG9yaWdpbmFsID0g
Jycuam9pbihbY2hyKGkgJSAyNTYpIGZvciBpIGluIHhyYW5nZSgxMDAwKV0pCi0gICAgICAgIHJl
c3VsdCA9IG1hc2tlci5tYXNrKG9yaWdpbmFsKQotICAgICAgICBleHBlY3RlZCA9ICcnLmpvaW4o
Ci0gICAgICAgICAgICAgICAgW2NocigoaSAlIDI1NikgXiBvcmQoJ21BU2snW2kgJSA0XSkpIGZv
ciBpIGluIHhyYW5nZSgxMDAwKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQs
IHJlc3VsdCkKLQotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKCdNYVNr
JykKLSAgICAgICAgZmlyc3RfcGFydCA9ICdUaGUgV2ViU29ja2V0IFByb3RvY29sIGVuYWJsZXMg
dHdvLXdheSBjb21tdW5pY2F0aW9uLicKLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soZmly
c3RfcGFydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAnXHgx
OVx0NktceDFhXHgwNDE4Ilx4MDI4XHgwZTlBXHgwM1x4MTkiXHgxNTxceDA4Ilxyc1x4MGUjJwot
ICAgICAgICAgICAgICAgICdceDAwMVx4MDcoXHgxMnNceDFmOlx4MGV+XHgxYyxceDE4c1x4MDgi
XHgwYz5ceDFlI1x4MDgwXG45JwotICAgICAgICAgICAgICAgICdceDA4PFx4MDVjJywKLSAgICAg
ICAgICAgICAgICByZXN1bHQpCi0gICAgICAgIHNlY29uZF9wYXJ0ID0gJ0l0IGhhcyB0d28gcGFy
dHM6IGEgaGFuZHNoYWtlIGFuZCB0aGUgZGF0YSB0cmFuc2Zlci4nCi0gICAgICAgIHJlc3VsdCA9
IG1hc2tlci5tYXNrKHNlY29uZF9wYXJ0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgICAgICIoJ0slXHgwMCBLOVx4MTY8Sz1ceDAwIVx4MWY+W3Ncbm1cdDJceDA1KVx4
MTI7XG4mXHgwNHNcbiMiCi0gICAgICAgICAgICAgICAgIlx4MDVzXHgxZiVceDA0c1x4MGYsXHgx
NTJLOVx4MTMyXHgwNT5ceDA3Nlx4MTljIiwKLSAgICAgICAgICAgICAgICByZXN1bHQpCi0KLQot
ZGVmIGdldF9yYW5kb21fc2VjdGlvbihzb3VyY2UsIG1pbl9udW1fY2h1bmtzKToKLSAgICBjaHVu
a3MgPSBbXQotICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0KLSAgICB3aGlsZSBieXRlc19jaHVua2Vk
IDwgbGVuKHNvdXJjZSk6Ci0gICAgICAgIGNodW5rX3NpemUgPSByYW5kb20ucmFuZGludCgKLSAg
ICAgICAgICAgIDEsCi0gICAgICAgICAgICBtaW4obGVuKHNvdXJjZSkgLyBtaW5fbnVtX2NodW5r
cywgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2VkKSkKLSAgICAgICAgY2h1bmsgPSBzb3VyY2Vb
Ynl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsgY2h1bmtfc2l6ZV0KLSAgICAgICAgY2h1bmtz
LmFwcGVuZChjaHVuaykKLSAgICAgICAgYnl0ZXNfY2h1bmtlZCArPSBjaHVua19zaXplCi0KLSAg
ICByZXR1cm4gY2h1bmtzCi0KLQotY2xhc3MgSW5mbGF0ZXJEZWZsYXRlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIF9JbmZsYXRlciBhbmQgX0RlZmxhdGVy
IGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfaW5mbGF0ZV9kZWZsYXRlX2RlZmF1bHQoc2VsZik6
Ci0gICAgICAgIGlucHV0ID0gYidoZWxsbycgKyAnLScgKiAzMDAwMCArIGInaGVsbG8nCi0gICAg
ICAgIGluZmxhdGVyMTUgPSB1dGlsLl9JbmZsYXRlcigxNSkKLSAgICAgICAgZGVmbGF0ZXIxNSA9
IHV0aWwuX0RlZmxhdGVyKDE1KQotICAgICAgICBpbmZsYXRlcjggPSB1dGlsLl9JbmZsYXRlcig4
KQotICAgICAgICBkZWZsYXRlcjggPSB1dGlsLl9EZWZsYXRlcig4KQotCi0gICAgICAgIGNvbXBy
ZXNzZWQxNSA9IGRlZmxhdGVyMTUuY29tcHJlc3NfYW5kX2ZpbmlzaChpbnB1dCkKLSAgICAgICAg
Y29tcHJlc3NlZDggPSBkZWZsYXRlcjguY29tcHJlc3NfYW5kX2ZpbmlzaChpbnB1dCkKLQotICAg
ICAgICBpbmZsYXRlcjE1LmFwcGVuZChjb21wcmVzc2VkMTUpCi0gICAgICAgIGluZmxhdGVyOC5h
cHBlbmQoY29tcHJlc3NlZDgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb21wcmVz
c2VkMTUsIGNvbXByZXNzZWQ4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBpbmZs
YXRlcjE1LmRlY29tcHJlc3MoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBp
bmZsYXRlcjguZGVjb21wcmVzcygtMSkpCi0KLSAgICBkZWYgdGVzdF9yYW5kb21fc2VjdGlvbihz
ZWxmKToKLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAgICAgICBzb3VyY2UgPSAnJy5qb2lu
KAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiB4cmFu
Z2UoMTAwICogMTAyNCldKQotCi0gICAgICAgIGNodW5rZWRfaW5wdXQgPSBnZXRfcmFuZG9tX3Nl
Y3Rpb24oc291cmNlLCAxMCkKLSAgICAgICAgcHJpbnQgIklucHV0IGNodW5rIHNpemVzOiAlciIg
JSBbbGVuKGMpIGZvciBjIGluIGNodW5rZWRfaW5wdXRdCi0KLSAgICAgICAgZGVmbGF0ZXIgPSB1
dGlsLl9EZWZsYXRlcigxNSkKLSAgICAgICAgY29tcHJlc3NlZCA9IFtdCi0gICAgICAgIGZvciBj
aHVuayBpbiBjaHVua2VkX2lucHV0OgotICAgICAgICAgICAgY29tcHJlc3NlZC5hcHBlbmQoZGVm
bGF0ZXIuY29tcHJlc3MoY2h1bmspKQotICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRl
ci5jb21wcmVzc19hbmRfZmluaXNoKCcnKSkKLQotICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9u
ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAgIHByaW50ICgiRXhwZWN0
YXRpb24gY2h1bmsgc2l6ZXM6ICVyIiAlCi0gICAgICAgICAgICAgICBbbGVuKGMpIGZvciBjIGlu
IGNodW5rZWRfZXhwZWN0YXRpb25dKQotCi0gICAgICAgIGluZmxhdGVyID0gdXRpbC5fSW5mbGF0
ZXIoMTUpCi0gICAgICAgIGluZmxhdGVyLmFwcGVuZCgnJy5qb2luKGNvbXByZXNzZWQpKQotICAg
ICAgICBmb3IgY2h1bmsgaW4gY2h1bmtlZF9leHBlY3RhdGlvbjoKLSAgICAgICAgICAgIGRlY29t
cHJlc3NlZCA9IGluZmxhdGVyLmRlY29tcHJlc3MobGVuKGNodW5rKSkKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY2h1bmssIGRlY29tcHJlc3NlZCkKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcnLCBpbmZsYXRlci5kZWNvbXByZXNzKC0xKSkKLQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9SRUFETUUgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RkYXRhL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAwMWFhNTU5
NWNkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9SRUFETUUKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UZXN0IGRhdGEgZGlyZWN0b3J5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY3Zjk5MzBmNzgyLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLQotCi1kZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVz
ZXJFeGNlcHRpb24oImFib3J0IGZvciB0ZXN0IikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0
aW9uKCJhYm9ydCBmb3IgdGVzdCIpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTM5ZmExNzZjYy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWRlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0LndzX29y
aWdpbiA9PSAnaHR0cDovL2V4YW1wbGUuY29tJzoKLSAgICAgICAgcmV0dXJuCi0gICAgcmFpc2Ug
VmFsdWVFcnJvcignVW5hY2NlcHRhYmxlIG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4p
Ci0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAlcywg
JXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2Us
IHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5z
ZmVyX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlv
bl9pbl90cmFuc2Zlcl93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODJk
MDIzMWVmMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJFeGNlcHRpb24gaW4gd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKCkuCi0iIiIKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2Rh
dGEocmVxdWVzdCk6Ci0gICAgcmFpc2UgRXhjZXB0aW9uKCdJbnRlbnRpb25hbCBFeGNlcHRpb24g
Zm9yICVzLCAlcycgJQotICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwg
cmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5k
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2U3YmUxODAyZTMuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRf
dGhlX2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0KLSIiIkNvcnJlY3Qgc2lnbmF0dXJlcywgd3JvbmcgZmlsZSBuYW1lLgotIiIiCi0KLQot
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQot
Ci1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMg
Y2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCBy
ZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjM1MmViNGNhMjMuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVf
d3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwg
R29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LQotIiIiTm9uLWNhbGxhYmxlIGhhbmRsZXJzLgotIiIiCi0KLQotd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UgPSBUcnVlCi13ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgPSAxCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi9wbGFpbl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi9wbGFpbl93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiM2ZmNjkzMDI1
Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L3BsYWluX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLSMgQ29weXJpZ2h0
IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAg
ICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAl
cywgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3Vy
Y2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkM2YyZTg1OTEwLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19o
YW5kc2hha2Vfc2lnX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2YmY2NTliYzlhZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldyb25nIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlIHNpZ25hdHVyZS4KLSIiIgotCi0KLWRlZiBub193ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUo
Ci0gICAgICAgICAgICAnc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBm
b3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193
c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZTJlNTUwNzk0Yi4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3Ry
YW5zZmVyX3NpZ193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jIENvcHly
aWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJXcm9uZyB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEoKSBzaWduYXR1
cmUuCi0iIiIKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
Ci0gICAgcGFzcwotCi0KLWRlZiBub193ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAotICAgICAgICAgICAgJ3N1Yi93cm9uZ190
cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAo
cmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwMjhhZTQ3NzZjLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0
ZGF0YS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNTMxZjkxMzQxZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL1JF
QURNRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZTcy
NDBkYTI4OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L19f
aW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L2VuZHRvZW5kX3dpdGhfZXh0ZXJuYWxfc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9t
b2NrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC9tdXhfY2xpZW50X2Zvcl90ZXN0aW5nLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9ydW5fYWxsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9zZXRfc3lzX3BhdGgucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZW5kdG9lbmQu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dF9oYW5kc2hha2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkwMC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dF9odHRwX2hlYWRlcl91dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21vY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXNn
dXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tdXgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rf
c3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3N0cmVhbV9oaXhpZTc1LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0X3V0aWwucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDdkMzJhNmI2YmJiZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvQ09QWUlO
RwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvUkVBRE1FCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvc2V0
dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9fX2lu
aXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY4MzRiODI4NWE1Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhp
cyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2FjZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L2NhY2Vy
dC5wZW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYWRhZTEyMWJkZC4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L2NhY2VydC5wZW0KKysrIC9kZXYvbnVsbApAQCAt
MSwxNyArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUN2RENDQWlXZ0F3
SUJBZ0lKQUtxVmdoa0dGMXJTTUEwR0NTcUdTSWIzRFFFQkJRVUFNRWt4Q3pBSkJnTlYKLUJBWVRB
a3BRTVE0d0RBWURWUVFJRXdWVWIydDViekVVTUJJR0ExVUVDaE1MY0hsM1pXSnpiMk5yWlhReEZE
QVMKLUJnTlZCQU1UQzNCNWQyVmljMjlqYTJWME1CNFhEVEV5TURZd05qQTNNalF6TTFvWERUTTVN
VEF5TXpBM01qUXoKLU0xb3dTVEVMTUFrR0ExVUVCaE1DU2xBeERqQU1CZ05WQkFnVEJWUnZhM2x2
TVJRd0VnWURWUVFLRXd0d2VYZGwKLVluTnZZMnRsZERFVU1CSUdBMVVFQXhNTGNIbDNaV0p6YjJO
clpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQUQKLWdZMEFNSUdKQW9HQkFLb1NFVzJiaVF4VnJN
TUtkbi84UEp6RFlpU1hEUFI5V1FiTFJSUTFHbTVqa0NZaWFoWFcKLXUyQ2JUVGhmUFBmaTJOSEEz
SStIbFQ3Z085eVI3UlZVdk42SVNVekd3WERFcTRmNFVOcXRRT2hRYXFxSytDWjkKLUxPL0JoTy9Z
WWZOcmJTUGxZekhVS2FUOWVzZTd4TzlWelZLTFcrcVVmMk1qaDQvK1N6eEJETlA3QWdNQkFBR2oK
LWdhc3dnYWd3SFFZRFZSME9CQllFRk9zV2R4Q1N1eWh3YVplYWI2Qm9UaG8zKytiek1Ia0dBMVVk
SXdSeU1IQ0EKLUZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpvVTJrU3pCSk1Rc3dDUVlEVlFR
R0V3SktVREVPTUF3R0ExVUUKLUNCTUZWRzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5amEy
VjBNUlF3RWdZRFZRUURFd3R3ZVhkbFluTnYKLVkydGxkSUlKQUtxVmdoa0dGMXJTTUF3R0ExVWRF
d1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdZRUEKLWdzTUkxV0VZcU53L2poVUlkclRC
Y0N4SjBYNmhKdkE5emlLQU5WbTFScys0UDNZREFya1E4YkNyNnhZK0t3N3MKLVpwMHlFN2RNOEdN
ZGkrRFU2aEwzdDNFNWVNa1RTMXlacjlXQ0s0ZjJSTG8rZXQ5OHNlbFp5ZHBIZW1GM0RKSjMKLWdB
ajhTeDRMQmFHOENiL1duRU1QdjNNeEczZkJFNWZhdkY2VjRqVTA3aFE9Ci0tLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jZXJ0LnBlbSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC9jZXJ0L2NlcnQucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTM3OWE3
MmIwZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jZXJ0LnBlbQorKysgL2Rl
di9udWxsCkBAIC0xLDYxICswLDAgQEAKLUNlcnRpZmljYXRlOgotICAgIERhdGE6Ci0gICAgICAg
IFZlcnNpb246IDMgKDB4MikKLSAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQotICAgICAg
ICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgSXNz
dWVyOiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKLSAgICAg
ICAgVmFsaWRpdHkKLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEy
IEdNVAotICAgICAgICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCi0g
ICAgICAgIFN1YmplY3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNv
Y2tldAotICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKLSAgICAgICAgICAgIFB1Ymxp
YyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCi0gICAgICAgICAgICBSU0EgUHVibGljIEtl
eTogKDEwMjQgYml0KQotICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKLSAgICAg
ICAgICAgICAgICAgICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6
MWE6Ci0gICAgICAgICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2
Ojg5OjAzOmEyOjIxOgotICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjoz
NToyNzozYTphMjo5Mjo4ZToxMjo2MjoKLSAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6
Nzg6ZGY6YjY6OTQ6Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6Ci0gICAgICAgICAgICAgICAgICAgIDVj
OjA4OmYwOjA5OjNlOmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgotICAgICAgICAgICAg
ICAgICAgICBlNTpmYjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKLSAg
ICAgICAgICAgICAgICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6
MDc6OWE6Ci0gICAgICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5Ojgy
OjgzOmRiOjY4OmJmOmI4OgotICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1
NDo3Mzo3YgotICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKLSAgICAg
ICAgWDUwOXYzIGV4dGVuc2lvbnM6Ci0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWlu
dHM6IAotICAgICAgICAgICAgICAgIENBOkZBTFNFCi0gICAgICAgICAgICBOZXRzY2FwZSBDZXJ0
IFR5cGU6IAotICAgICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKLSAgICAgICAgICAgIE5ldHNjYXBl
IENvbW1lbnQ6IAotICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl
Ci0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCi0gICAgICAgICAg
ICAgICAgODI6QTE6NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6
RTk6MDY6MDAKLSAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAot
ICAgICAgICAgICAgICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZG
OkEwOjY4OjRFOjFBOjM3OkZCOkU2OkYzCi0KLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEx
V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6
ZDc6N2Y6YTA6MWU6MGQ6MWE6ZWI6MmY6Ci0gICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1Ojhj
OjFiOmYwOjUxOmQ2OjUyOmU3OjhkOjg0OjNiOjlmOgotICAgICAgICBkODplZDoyMjo5YzphYTpi
ZDplZTo5Yjo5MDoxZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKLSAgICAgICAgYmE6Zjc6MTU6
Y2U6ZGE6NWY6ZGI6OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6Ci0gICAgICAgIGQz
OmYxOmJlOjUyOjRmOmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgotICAg
ICAgICBmOTowNTo1MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpk
NToKLSAgICAgICAgOTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6
MzQ6NjA6YjE6Ci0gICAgICAgIGNiOmFlCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1J
SUNtRENDQWdHZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdK
S1VERU8KLU1Bd0dBMVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1S
UXdFZ1lEVlFRREV3dHcKLWVYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpP
VEV3TWpNd056STFNRGhhTUVreEN6QUoKLUJnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1
YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXgKLUZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5
amEyVjBNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKLWdRRGVFTTQ2V2dTa0hD
bVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKLUgvUjQz
N2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEy
ZHYKLUJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJv
NEdQTUlHTU1Ba0cKLUExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NH
U0FHRytFSUJEUVFmRmgxUGNHVnUKLVUxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRB
ZEJnTlZIUTRFRmdRVWdxRnppeFlNZk9UVFJwVVQKLWxSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0Zv
QVU2eFozRUpLN0tIQnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKLWh2Y05BUUVGQlFBRGdZRUFh
N05HS1FMZnNNaU94TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKLTJPMGluS3E5
N3B1UUhZU2pUQXZMNjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoK
LVl6dFI3YWVCK1FWUmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4
eTY0PQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2Nl
cnQvY2xpZW50X2NlcnQucDEyIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2xpZW50X2NlcnQucDEyCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGUxMzk5Mjc5ODIuLjAwMDAwMDAwMDAwMApCaW5h
cnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIgYW5kIC9kZXYvbnVsbCBk
aWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L2tleS5wZW0gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2Vy
dC9rZXkucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWU4NTgzMThmMjkuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9rZXkucGVtCisrKyAvZGV2L251bGwKQEAg
LTEsMTUgKzAsMCBAQAotLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQotTUlJQ1hnSUJB
QUtCZ1FEZUVNNDZXZ1NrSENtVFhDT0NHdklHQWVZcnBBL2RkMGwyaVFPaUlkNEVkY2JpM2ZzMQot
SnpxaWtvNFNZaXMrSC9SNDM3YVV5eWZXeTlZMzExd0k4QWsreWM0a0xRREozMHJnbWVYN0k2bmkx
c2s5bHZvQgotaU41YWliRFBBMmR2QklZZDcySWNWYWtIbWk1bUtuTmJUR0lEK1lLRDIyaS91RXNM
aTVNUnVGUnpld0lEQVFBQgotQW9HQkFJdUN1VjFWY25iN3JtOEN3dGdaUDVYZ21ZOHZTanhUbGRh
ZmE2WHZhd0VZVVRQMFM3N3YvMWxsZzFZdgotVUlWK0krUFFnRzlvVm9ZT2wyMkxvaW1IUy9aM2Ux
ZnNvdDV0RFlzekdlOC9Ha3N0NG9hUmVTb3h2QlVhNldYcAotUVNvN1lGQ2FqdUh0RStXL2d6RitV
SGJkenpYSURqUVozMTRMTkY1dCs0VW5zRVBCQWtFQStnaXJJbXFXb00ydAotM1VSOGY4b2VrRVJ3
c21FTWY5REg1WXBINGN2VW52SStrd2VzQy9yMlU4U2hvKytmeUVNVU5tN2FJWEdxTkxnYQotb2dB
TSs0Tlg0UUpCQU9OZFN4U2F5MjJlZ1RHTm9JaExuZGxqV2t1T3QvOUZXajJrbGYvNFF4RDRibE1K
UTVPcQotUWRPR0FoN25WUWpwUExRNUQ3Q0JWQUtwR00yQ0QrUUpCdHNDUUVQMmt6MzVweFB5bEcz
dXJjQzJtZlF4QmtrVwotWkNWaUJOUDU4R3dKMGJPYXVUT1NCRXdGWFd1THFUdzhhRHd4TDQ5VU5t
cWMwTjBmcGUyZkFlaGozVUVDUVFDbQotRkgvRGpVOEx3N3liZGRqTnRtNlhYUHVZTmFneHozY2Jr
QjRCM0ZjaERsZUlVRHdNb1ZGME1XOWJJNS81NG1WMQotUURrMXRVS29ydHh2UVpKYUFENEJBa0VB
aEdPSFFxUGQ2YkJCb0ZCdnBhTHpQSk14d0xLckIrV3RrcS9RbEM3MgotQ2xSaU1uMmc4U0FMaUlM
M0JEZ0dYS2NLRS9XeTdqby9hZi9KQ3pRL2NQcXQvQT09Ci0tLS0tLUVORCBSU0EgUFJJVkFURSBL
RVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDgxMjQxNmI4NmI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
Y2VydC9jYWNlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2Vy
dC9jbGllbnRfY2VydC5wMTIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9rZXkucGVtCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NsaWVudF9mb3JfdGVz
dGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkMTg1NzEyZWVhLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDExMDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcuCi0K
LVRoaXMgbW9kdWxlIGNvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBwZXJmb3JtaW5nIGhhbmRz
aGFrZSwgZnJhbWUKLXNlbmRpbmcvcmVjZWl2aW5nIGFzIGEgV2ViU29ja2V0IGNsaWVudC4KLQot
VGhpcyBpcyBjb2RlIGZvciB0ZXN0aW5nIG1vZF9weXdlYnNvY2tldC4gS2VlcCB0aGlzIGNvZGUg
aW5kZXBlbmRlbnQgZnJvbQotbW9kX3B5d2Vic29ja2V0LiBEb24ndCBpbXBvcnQgZS5nLiBTdHJl
YW0gY2xhc3MgZm9yIGdlbmVyYXRpbmcgZnJhbWUgZm9yCi10ZXN0aW5nLiBVc2luZyB1dGlsLmhl
eGlmeSwgZXRjLiB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBwcm90b2NvbCBwcm9jZXNzaW5nCi1p
cyBhbGxvd2VkLgotCi1Ob3RlOgotVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCwgZS5nLiwg
d2UgY3V0IGNvcm5lcnMgaW4gaGFuZHNoYWtlLgotIiIiCi0KLQotaW1wb3J0IGJhc2U2NAotaW1w
b3J0IGVycm5vCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBv
cnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aW1lCi0KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCB1dGlsCi0KLQotREVGQVVMVF9QT1JUID0gODAKLURFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMK
LQotIyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1p
bmcgZm9ybWF0Ci1PUENPREVfQ09OVElOVUFUSU9OID0gMHgwCi1PUENPREVfQ0xPU0UgPSAweDgK
LU9QQ09ERV9QSU5HID0gMHg5Ci1PUENPREVfUE9ORyA9IDB4YQotT1BDT0RFX1RFWFQgPSAweDEK
LU9QQ09ERV9CSU5BUlkgPSAweDIKLQotIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQotX1VQ
R1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9IRUFERVJf
SElYSUU3NSA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0g
J0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotCi1XRUJTT0NLRVRfQUNDRVBUX1VVSUQgPSAnMjU4
RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJwotCi0jIFN0YXR1cyBjb2RlcwotU1RB
VFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAotU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCi1TVEFU
VVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCi1TVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEwMDMK
LVNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1Ci1TVEFUVVNfQUJOT1JNQUxfQ0xPU1VS
RSA9IDEwMDYKLVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKLVNUQVRV
U19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAotU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEwMDkK
LVNUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAotU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VS
Uk9SID0gMTAxMQotU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1Ci0KLSMgRXh0ZW5zaW9uIHRv
a2VucwotX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUtZnJhbWUnCi0jIFRPRE8o
YmFzaGkpOiBVcGRhdGUgYWZ0ZXIgbXV4IGltcGxlbWVudGF0aW9uIGZpbmlzaGVkLgotX01VWF9F
WFRFTlNJT04gPSAnbXV4X0RPX05PVF9VU0UnCi1fUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lP
TiA9ICdwZXJtZXNzYWdlLWRlZmxhdGUnCi0KLWRlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgot
ICAgIHJldHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBfc2Vj
X29yaWdpbl9oZWFkZXIob3JpZ2luKToKLSAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2lu
OiAlc1xyXG4nICUgb3JpZ2luLmxvd2VyKCkKLQotCi1kZWYgX29yaWdpbl9oZWFkZXIob3JpZ2lu
KToKLSAgICAjIDQuMSAxMy4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46Iiwg
YSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyLAotICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwg
Y29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICdP
cmlnaW46ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBfZm9ybWF0X2hvc3RfaGVh
ZGVyKGhvc3QsIHBvcnQsIHNlY3VyZSk6Ci0gICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUg
YW4gZW1wdHkgc3RyaW5nLgotICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwg
Y29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8KLSAgICAjIC9ob3N0cG9ydC8KLSAgICBo
b3N0cG9ydCA9IGhvc3QubG93ZXIoKQotICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxz
ZSwgYW5kIC9wb3J0LyBpcyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCi0gICAgIyBpcyB0cnVlLCBh
bmQgL3BvcnQvIGlzIG5vdCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3Rl
cgotICAgICMgKDopIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBh
cyBhIGJhc2UtdGVuIGludGVnZXIsCi0gICAgIyB0byAvaG9zdHBvcnQvCi0gICAgaWYgKChub3Qg
c2VjdXJlIGFuZCBwb3J0ICE9IERFRkFVTFRfUE9SVCkgb3IKLSAgICAgICAgKHNlY3VyZSBhbmQg
cG9ydCAhPSBERUZBVUxUX1NFQ1VSRV9QT1JUKSk6Ci0gICAgICAgIGhvc3Rwb3J0ICs9ICc6JyAr
IHN0cihwb3J0KQotICAgICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIkhv
c3Q6IiwgYSBVKzAwMjAgU1BBQ0UKLSAgICAjIGNoYXJhY3RlciwgYW5kIC9ob3N0cG9ydC8sIHRv
IC9maWVsZHMvLgotICAgIHJldHVybiAnSG9zdDogJXNcclxuJyAlIGhvc3Rwb3J0Ci0KLQotIyBU
T0RPKHR5b3NoaW5vKTogRGVmaW5lIGEgYmFzZSBjbGFzcyBhbmQgbW92ZSB0aGVzZSBzaGFyZWQg
bWV0aG9kcyB0byB0aGF0LgotCi0KLWRlZiByZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVuZ3RoKToK
LSAgICByZWNlaXZlZF9ieXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hp
bGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgbmV3X3JlY2VpdmVkX2J5dGVzID0gc29ja2V0LnJl
Y3YocmVtYWluaW5nKQotICAgICAgICBpZiBub3QgbmV3X3JlY2VpdmVkX2J5dGVzOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdDb25uZWN0aW9uIGNsb3Nl
ZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAgICAgICAgICAgICAgICco
cmVxdWVzdGVkICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQotICAgICAg
ICAgICAgICAgIChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0gICAgICAgIHJlY2VpdmVk
X2J5dGVzLmFwcGVuZChuZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgICAgIHJlbWFpbmluZyAtPSBs
ZW4obmV3X3JlY2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKHJlY2VpdmVkX2J5dGVz
KQotCi0KLSMgVE9ETyh0eW9zaGlubyk6IE5vdyB0aGUgV2ViU29ja2V0SGFuZHNoYWtlIGNsYXNz
IGRpdmVydHMgdGhlc2UgbWV0aG9kcy4gV2UKLSMgc2hvdWxkIG1vdmUgdG8gSFRUUCBwYXJzZXIg
YXMgc3BlY2lmaWVkIGluIFJGQyA2NDU1LiBGb3IgSHlCaSAwMCBhbmQKLSMgSGl4aWUgNzUsIHBh
Y2sgdGhlc2UgbWV0aG9kcyBhcyBzb21lIHBhcnNlciBjbGFzcy4KLQotCi1kZWYgX3JlYWRfZmll
bGRzKHNvY2tldCk6Ci0gICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFt
ZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgIGZpZWxkcyA9IHt9Ci0gICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUgZW1w
dHkgYnl0ZSBhcnJheXMKLSAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIHZhbHVlID0gJycKLSAg
ICAgICAgIyA0LjEgMzQuIHJlYWQgL25hbWUvCi0gICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNv
Y2tldCkKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgIyA0LjEgMzUuIHJlYWQgc3BhY2VzCi0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAg
b25seSBvbmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAgICAgICBjaCA9IF9z
a2lwX3NwYWNlcyhzb2NrZXQpCi0gICAgICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KLSAgICAg
ICAgdmFsdWUgPSBfcmVhZF92YWx1ZShzb2NrZXQsIGNoKQotICAgICAgICAjIDQuMSAzNy4gcmVh
ZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2Nr
ZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyIHdo
aWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCi0gICAgICAgICAgICAgICAgJyVyJyAl
IChjaCwgbmFtZSwgdmFsdWUpKQotICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRv
IHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAgICMgZ2l2ZW4gYnkg
dGhlIHN0cmluZyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9uYW1lLyBieXRlCi0gICAg
ICAgICMgYXJyYXkgYXMgYSBVVEYtOCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUg
c3RyaW5nCi0gICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5
dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAgICMgc3RyZWFtLgotICAgICAgICBmaWVs
ZHMuc2V0ZGVmYXVsdChuYW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAgICAgICAjIDQuMSAzOS4g
cmV0dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICByZXR1cm4gZmllbGRzCi0KLQot
ZGVmIF9yZWFkX25hbWUoc29ja2V0KToKLSAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0
eSBieXRlIGFycmF5cwotICAgIG5hbWUgPSAnJwotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICMg
NC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNlaXZl
X2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYg
d2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAgICAgIGVsaWYgY2ggPT0g
JzonOiAgIyAweDNBCi0gICAgICAgICAgICByZXR1cm4gbmFtZQotICAgICAgICBlbGlmIGNoID49
ICdBJyBhbmQgY2ggPD0gJ1onOiAgIyByYW5nZSAweDMxIHRvIDB4NUEKLSAgICAgICAgICAgIGNo
ID0gY2hyKG9yZChjaCkgKyAweDIwKQotICAgICAgICAgICAgbmFtZSArPSBjaAotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgbmFtZSArPSBjaAotCi0KLWRlZiBfc2tpcF9zcGFjZXMoc29ja2V0
KToKLSAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgd2hpbGUg
VHJ1ZToKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYg
Y2ggPT0gJyAnOiAgIyAweDIwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICByZXR1cm4g
Y2gKLQotCi1kZWYgX3JlYWRfdmFsdWUoc29ja2V0LCBjaCk6Ci0gICAgIyA0LjEgMzMuIGxldCAv
dmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgdmFsdWUgPSAnJwotICAgICMgNC4xIDM2
LiByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpZiBj
aCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAgICAgZWxp
ZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicg
JSB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlICs9IGNoCi0gICAgICAg
IGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0KLQotZGVmIHJlYWRfZnJhbWVfaGVhZGVy
KHNvY2tldCk6Ci0gICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMikKLQotICAg
IGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5dGUgPj4g
NykgJiAxCi0gICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIgPSAoZmly
c3RfYnl0ZSA+PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0gICAg
b3Bjb2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2
ZWRbMV0pCi0gICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXlsb2FkX2xl
bmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgotCi0gICAgaWYgbWFzayAhPSAwOgotICAgICAgICBy
YWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAnTWFzayBiaXQgbXVzdCBiZSAwIGZvciBmcmFt
ZXMgY29taW5nIGZyb20gc2VydmVyJykKLQotICAgIGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNzoK
LSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwg
OCkKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAg
JyFRJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHBheWxvYWRfbGVu
Z3RoID4gMHg3RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdF
eHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKLSAgICBlbGlmIHBheWxvYWRfbGVuZ3Ro
ID09IDEyNjoKLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVz
KHNvY2tldCwgMikKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAg
ICAgICAgICAgJyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0KLSAgICByZXR1cm4g
ZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCi0KLQotY2xhc3Mg
X1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24u
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6Ci0gICAgICAgIHNlbGYu
X3NzbCA9IHNvY2tldC5zc2wocmF3X3NvY2tldCkKLQotICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVz
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykKLQotICAgIGRlZiByZWN2
KHNlbGYsIHNpemU9LTEpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLnJlYWQoc2l6ZSkKLQot
ICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgotICAgICAgICBw
YXNzCi0KLQotY2xhc3MgSHR0cFN0YXR1c0V4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRo
aXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdW5leHBlY3RlZCBodHRwIHN0YXR1cyBj
b2RlIHdhcwotICAgIHJlY2VpdmVkIGFzIGEgcmVzdWx0IG9mIGhhbmRzaGFrZS4KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXMpOgotICAgICAgICBzdXBlcihI
dHRwU3RhdHVzRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0
YXR1cyA9IHN0YXR1cwotCi0KLWNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZShvYmplY3QpOgotICAg
ICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2Nv
bCAoUkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAg
ICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAg
ICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2Nr
ZXQpOgotICAgICAgICAiIiJIYW5kc2hha2UgV2ViU29ja2V0LgotCi0gICAgICAgIFJhaXNlczoK
LSAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAgcmVxdWVzdF9saW5lID0g
X21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGlu
ZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lKQotCi0gICAgICAg
IGZpZWxkcyA9IFtdCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSKQotICAg
ICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLQotICAgICAgICBmaWVsZHMu
YXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNl
cnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy52ZXJzaW9uID09IDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9zZWNfb3JpZ2luX2hl
YWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBm
aWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLQotICAg
ICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBrZXkgPSBiYXNlNjQu
YjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5LCB1dGlsLmhleGlmeShv
cmlnaW5hbF9rZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUtleTog
JXNcclxuJyAlIGtleSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LVZl
cnNpb246ICVkXHJcbicgJSBzZWxmLl9vcHRpb25zLnZlcnNpb24pCi0KLSAgICAgICAgIyBTZXR0
aW5nIHVwIGV4dGVuc2lvbnMuCi0gICAgICAgIGlmIGxlbihzZWxmLl9vcHRpb25zLmV4dGVuc2lv
bnMpID4gMDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9uczogJXNcclxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihzZWxm
Ll9vcHRpb25zLmV4dGVuc2lvbnMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3Bl
bmluZyBoYW5kc2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxkcykKLQotICAgICAgICBm
b3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmll
bGQpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKLQotICAgICAg
ICBmaWVsZCA9ICcnCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHJlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAg
ICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlc3BvbnNlLUxpbmU6ICVyJywg
ZmllbGQpCi0KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVuZHN3aXRo
KCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5l
OiAlcicgJSBmaWVsZCkKLSAgICAgICAgbSA9IHJlLm1hdGNoKCdbXiBdKiAoW14gXSopIC4qJywg
ZmllbGQpCi0gICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBzdGF0dXMg
bGluZTogJXInICUgZmllbGQpCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgIGlm
IG5vdCByZS5tYXRjaCgnWzAtOV1bMC05XVswLTldJywgY29kZSk6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90
IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAgICAgICAgICAgIChjb2Rl
LCBmaWVsZCkpCi0gICAgICAgIGlmIGNvZGUgIT0gJzEwMSc6Ci0gICAgICAgICAgICByYWlzZSBI
dHRwU3RhdHVzRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1
cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcKLSAgICAgICAgICAgICAg
ICAnJXInICUgKGNvZGUsIGZpZWxkKSwgaW50KGNvZGUpKQotICAgICAgICBmaWVsZHMgPSBfcmVh
ZF9maWVsZHMoc2VsZi5fc29ja2V0KQotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5f
c29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFkZXJz
OiAlcicsIGZpZWxkcykKLQotICAgICAgICAjIENoZWNrIC9maWVsZHMvCi0gICAgICAgIGlmIGxl
bihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJSBm
aWVsZHNbJ3VwZ3JhZGUnXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlvbiddKSAh
PSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0
aXBsZSBDb25uZWN0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVjdGlvbidd
KQotICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnd2Vic29ja2V0JzoKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBVcGdy
YWRlIGhlYWRlciB2YWx1ZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ11bMF0pCi0gICAgICAgIGlm
IGZpZWxkc1snY29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIENvbm5lY3Rp
b24gaGVhZGVyIHZhbHVlOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlv
biddWzBdKQotCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10p
ICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011
bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVzJyAlCi0gICAgICAg
ICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddKQotCi0gICAgICAgIGFjY2Vw
dCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQnXVswXQotCi0gICAgICAgICMgVmFsaWRh
dGUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVjb2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0
ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAgICAgICAg
ICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbGxlZ2FsIHZh
bHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICcgKyBhY2NlcHQpCi0KLSAgICAg
ICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRz
aGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBvZiBTZWMtV2Vi
U29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25nJykKLQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFjY2VwdDogJXIgKCVzKScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY2NlcHQsIHV0aWwuaGV4aWZ5KGRlY29kZWRfYWNjZXB0KSkK
LQotICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2NlcHQgPSB1dGlsLnNoYTFfaGFzaCgKLSAg
ICAgICAgICAgIGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICAgICAg
ZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBTZWMtV2ViU29ja2V0
LUFjY2VwdDogJXIgKCVzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9h
Y2NlcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpKQotCi0gICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9hY2NlcHQ6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ludmFsaWQg
U2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyOiAlciAoZXhwZWN0ZWQpICE9ICVyICcKLSAgICAg
ICAgICAgICAgICAnKGFjdHVhbCknICUgKGFjY2VwdCwgZXhwZWN0ZWRfYWNjZXB0KSkKLQotICAg
ICAgICBzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVsZHMuZ2V0KCdzZWMtd2Vic29ja2V0
LWV4dGVuc2lvbnMnKQotICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KLSAgICAgICAg
aWYgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYWNj
ZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAg
ICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkKLQotICAgICAgICAj
IFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYW55IHVu
cmVjb2duaXplZAotICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9ucyB3ZSBkaWRuJ3Qg
cmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCi0gICAgICAgICMgZXh0ZW5zaW9ucyB3ZSByZXF1ZXN0
LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwgYmUKLSAgICAgICAg
IyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgotICAgICAgICBkZWZsYXRlX2ZyYW1lX2Fj
Y2VwdGVkID0gRmFsc2UKLSAgICAgICAgbXV4X2FjY2VwdGVkID0gRmFsc2UKLSAgICAgICAgZm9y
IGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgaWYgZXh0ZW5z
aW9uLm5hbWUoKSA9PSBfREVGTEFURV9GUkFNRV9FWFRFTlNJT046Ci0gICAgICAgICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgICAgICAgICAg
ZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX01VWF9FWFRFTlNJT046Ci0g
ICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfbXV4OgotICAgICAgICAgICAgICAg
ICAgICBtdXhfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICBpZiBleHRlbnNpb24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OOgotICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNoZWNrX3Bl
cm1lc3NhZ2VfZGVmbGF0ZQotICAgICAgICAgICAgICAgIGlmIGNoZWNrZXI6Ci0gICAgICAgICAg
ICAgICAgICAgIGNoZWNrZXIoZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQotCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlY2Vp
dmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlIGV4dGVuc2lvbi5uYW1lKCkpCi0KLSAg
ICAgICAgIyBMZXQgYWxsIGV4dGVuc2lvbnMgY2hlY2sgdGhlIHJlc3BvbnNlIGZvciBleHRlbnNp
b24gcmVxdWVzdC4KLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFt
ZSBhbmQKLSAgICAgICAgICAgIG5vdCBkZWZsYXRlX2ZyYW1lX2FjY2VwdGVkKToKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgZXh0ZW5zaW9uIG5vdCBhY2NlcHRlZCcgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9tdXggYW5kIG5vdCBtdXhfYWNjZXB0ZWQ6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJyVzIGV4dGVuc2lvbiBub3QgYWNjZXB0ZWQnICUgX01VWF9F
WFRFTlNJT04pCi0KLQotY2xhc3MgV2ViU29ja2V0SHliaTAwSGFuZHNoYWtlKG9iamVjdCk6Ci0g
ICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3Rv
Y29sIHZlcnNpb24gSHlCaSAwMC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBv
cHRpb25zLCBkcmFmdF9maWVsZCk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2Ns
YXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAg
ICAgIHNlbGYuX2RyYWZ0X2ZpZWxkID0gZHJhZnRfZmllbGQKLQotICAgIGRlZiBoYW5kc2hha2Uo
c2VsZiwgc29ja2V0KToKLSAgICAgICAgIiIiSGFuZHNoYWtlIFdlYlNvY2tldC4KLQotICAgICAg
ICBSYWlzZXM6Ci0gICAgICAgICAgICBFeGNlcHRpb246IGhhbmRzaGFrZSBmYWlsZWQuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAotCi0gICAgICAgICMgNC4x
IDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAgICByZXF1ZXN0X2xpbmUgPSBfbWV0aG9kX2xp
bmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdP
cGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxpbmU6ICVyJywgcmVxdWVzdF9saW5lKQotICAgICAg
ICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUpCi0gICAgICAgICMgNC4xIDYuIExl
dCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0IG9mIHN0cmluZ3MuCi0gICAgICAgIGZpZWxkcyA9
IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0aGUgc3RyaW5nICJVcGdyYWRlOiBXZWJTb2NrZXQi
IHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUl9ISVhJ
RTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQgdGhlIHN0cmluZyAiQ29ubmVjdGlvbjogVXBncmFk
ZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVS
KQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQgSG9zdDogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAg
ICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9w
b3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLSAgICAgICAgIyA0LjEg
MTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5k
KF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgIyBUT0RPOiA0
LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRvIC9maWVsZHMvLgotICAg
ICAgICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8gL2ZpZWxkcy8uCi0KLSAg
ICAgICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxuPiB0byAvZmllbGRzLy4K
LSAgICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2Nr
ZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIxOiAlZCcsIHNlbGYu
X251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtS2V5MTogJXNc
clxuJyAlIGtleTEpCi0gICAgICAgIHNlbGYuX251bWJlcjIsIGtleTIgPSBzZWxmLl9nZW5lcmF0
ZV9zZWNfd2Vic29ja2V0X2tleSgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnTnVtYmVy
MjogJWQnLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29j
a2V0LUtleTI6ICVzXHJcbicgJSBrZXkyKQotCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1X
ZWJTb2NrZXQtRHJhZnQ6ICVzXHJcbicgJSBzZWxmLl9kcmFmdF9maWVsZCkKLQotICAgICAgICAj
IDQuMSAyNC4gRm9yIGVhY2ggc3RyaW5nIGluIC9maWVsZHMvLCBpbiBhIHJhbmRvbSBvcmRlcjog
c2VuZCB0aGUKLSAgICAgICAgIyBzdHJpbmcsIGVuY29kZWQgYXMgVVRGLTgsIGZvbGxvd2VkIGJ5
IGEgVVRGLTggZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0UKLSAgICAgICAgIyBSRVRVUk4gVSswMDBB
IExJTkUgRkVFRCBjaGFyYWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAgIHJhbmRvbS5zaHVmZmxl
KGZpZWxkcykKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtl
IHJlcXVlc3QgaGVhZGVyczogJXInLCBmaWVsZHMpCi0gICAgICAgIGZvciBmaWVsZCBpbiBmaWVs
ZHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmaWVsZCkKLQotICAgICAgICAj
IDQuMSAyNS4gc2VuZCBhIFVURi04LWVuY29kZWQgVSswMDBEIENBUlJJQUdFIFJFVFVSTiBVKzAw
MEEgTElORSBGRUVECi0gICAgICAgICMgY2hhcmFjdGVyIHBhaXIgKENSTEYpLgotICAgICAgICBz
ZWxmLl9zb2NrZXQuc2VuZGFsbCgnXHJcbicpCi0gICAgICAgICMgNC4xIDI2LiBsZXQgL2tleTMv
IGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChvcgotICAgICAg
ICAjIGVxdWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2RlZCBpbiBhIGJp
Zy1lbmRpYW4gb3JkZXIpLgotICAgICAgICBzZWxmLl9rZXkzID0gc2VsZi5fZ2VuZXJhdGVfa2V5
MygpCi0gICAgICAgICMgNC4xIDI3LiBzZW5kIC9rZXkzLyB0byB0aGUgc2VydmVyLgotICAgICAg
ICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9rZXkzKQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAnS2V5MzogJXIgKCVzKScsIHNlbGYuX2tleTMsIHV0aWwuaGV4
aWZ5KHNlbGYuX2tleTMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IG9wZW5p
bmcgaGFuZHNoYWtlIHJlcXVlc3QnKQotCi0gICAgICAgICMgNC4xIDI4LiBSZWFkIGJ5dGVzIGZy
b20gdGhlIHNlcnZlciB1bnRpbCBlaXRoZXIgdGhlIGNvbm5lY3Rpb24KLSAgICAgICAgIyBjbG9z
ZXMsIG9yIGEgMHgwQSBieXRlIGlzIHJlYWQuIGxldCAvZmllbGQvIGJlIHRoZXNlIGJ5dGVzLCBp
bmNsdWRpbmcKLSAgICAgICAgIyB0aGUgMHgwQSBieXRlcy4KLSAgICAgICAgZmllbGQgPSAnJwot
ICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNlbGYu
X3NvY2tldCwgMSkKLSAgICAgICAgICAgIGZpZWxkICs9IGNoCi0gICAgICAgICAgICBpZiBjaCA9
PSAnXG4nOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXNwb25zZS1MaW5lOiAlcicsIGZpZWxkKQotCi0gICAg
ICAgICMgaWYgL2ZpZWxkLyBpcyBub3QgYXQgbGVhc3Qgc2V2ZW4gYnl0ZXMgbG9uZywgb3IgaWYg
dGhlIGxhc3QKLSAgICAgICAgIyB0d28gYnl0ZXMgYXJlbid0IDB4MEQgYW5kIDB4MEEgcmVzcGVj
dGl2ZWx5LCBvciBpZiBpdCBkb2VzIG5vdAotICAgICAgICAjIGNvbnRhaW4gYXQgbGVhc3QgdHdv
IDB4MjAgYnl0ZXMsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24KLSAgICAgICAg
IyBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGxlbihmaWVsZCkgPCA3IG9yIG5v
dCBmaWVsZC5lbmRzd2l0aCgnXHJcbicpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdX
cm9uZyBzdGF0dXMgbGluZTogJXInICUgZmllbGQpCi0gICAgICAgIG0gPSByZS5tYXRjaCgnW14g
XSogKFteIF0qKSAuKicsIGZpZWxkKQotICAgICAgICBpZiBtIGlzIE5vbmU6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ05vIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlIGZp
ZWxkKQotICAgICAgICAjIDQuMSAyOS4gbGV0IC9jb2RlLyBiZSB0aGUgc3Vic3RyaW5nIG9mIC9m
aWVsZC8gdGhhdCBzdGFydHMgZnJvbSB0aGUKLSAgICAgICAgIyBieXRlIGFmdGVyIHRoZSBmaXJz
dCAweDIwIGJ5dGUsIGFuZCBlbmRzIHdpdGggdGhlIGJ5dGUgYmVmb3JlIHRoZQotICAgICAgICAj
IHNlY29uZCAweDIwIGJ5dGUuCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICMg
NC4xIDMwLiBpZiAvY29kZS8gaXMgbm90IHRocmVlIGJ5dGVzIGxvbmcsIG9yIGlmIGFueSBvZiB0
aGUgYnl0ZXMgaW4KLSAgICAgICAgIyAvY29kZS8gYXJlIG5vdCBpbiB0aGUgcmFuZ2UgMHgzMCB0
byAweDkwLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldAotICAgICAgICAjIGNvbm5lY3Rpb24gYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBub3QgcmUubWF0Y2goJ1swLTldWzAtOV1b
MC05XScsIGNvZGUpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdIVFRQIHN0YXR1cyBjb2RlICVyIGlzIG5vdCB0aHJlZSBkaWdpdCBpbiBzdGF0dXMgbGlu
ZTogJXInICUKLSAgICAgICAgICAgICAgICAoY29kZSwgZmllbGQpKQotICAgICAgICAjIDQuMSAz
MS4gaWYgL2NvZGUvLCBpbnRlcnByZXRlZCBhcyBVVEYtOCwgaXMgIjEwMSIsIHRoZW4gbW92ZSB0
byB0aGUKLSAgICAgICAgIyBuZXh0IHN0ZXAuCi0gICAgICAgIGlmIGNvZGUgIT0gJzEwMSc6Ci0g
ICAgICAgICAgICByYWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdF
eHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6
ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSwgaW50KGNvZGUpKQotICAg
ICAgICAjIDQuMSAzMi0zOS4gcmVhZCBmaWVsZHMgaW50byAvZmllbGRzLwotICAgICAgICBmaWVs
ZHMgPSBfcmVhZF9maWVsZHMoc2VsZi5fc29ja2V0KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVzcG9uc2UgaGVhZGVyczogJXInLCBmaWVsZHMpCi0K
LSAgICAgICAgIyA0LjEgNDAuIF9GaWVsZHMgcHJvY2Vzc2luZ18KLSAgICAgICAgIyByZWFkIGEg
Ynl0ZSBmcm9tIHNlcnZlcgotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0
LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlcicgJSBjaCkKLSAgICAgICAgIyA0LjEg
NDEuIGNoZWNrIC9maWVsZHMvCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0g
MToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlw
bGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXSkKLSAgICAg
ICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlvbiddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBDb25uZWN0aW9uIGhlYWRlcnMg
Zm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVjdGlvbiddKQotICAgICAgICBpZiBsZW4oZmllbGRz
WydzZWMtd2Vic29ja2V0LW9yaWdpbiddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBTZWMtV2ViU29ja2V0LU9yaWdpbiBoZWFk
ZXJzIGZvdW5kOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snc2VjLXNlYnNvY2tldC1v
cmlnaW4nXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1sb2NhdGlvbidd
KSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdN
dWx0aXBsZSBTZWMtV2ViU29ja2V0LUxvY2F0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlCi0gICAg
ICAgICAgICAgICAgZmllbGRzWydzZWMtc2Vic29ja2V0LWxvY2F0aW9uJ10pCi0gICAgICAgICMg
VE9ETyh1a2FpKTogcHJvdG9jb2wKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBuYW1lIGlzICJ1
cGdyYWRlIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUgaXMgbm90IGV4YWN0bHkgZXF1YWwgdG8g
dGhlIHN0cmluZyAiV2ViU29ja2V0IiwKLSAgICAgICAgIyAgdGhlbiBmYWlsIHRoZSBXZWJTb2Nr
ZXQgY29ubmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGZpZWxkc1sn
dXBncmFkZSddWzBdICE9ICdXZWJTb2NrZXQnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIFVwZ3JhZGUgaGVhZGVyIHZhbHVlOiAlcycg
JSBmaWVsZHNbJ3VwZ3JhZGUnXVswXSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBuYW1lIGlz
ICJjb25uZWN0aW9uIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJ
SSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRvIHRoZSBzdHJp
bmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZAotICAg
ICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgZmllbGRzWydjb25uZWN0aW9u
J11bMF0ubG93ZXIoKSAhPSAndXBncmFkZSc6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgQ29ubmVjdGlvbiBoZWFkZXIgdmFsdWU6ICVz
JyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydjb25uZWN0aW9uJ11bMF0pCi0gICAgICAgICMg
VE9ETyh1a2FpKTogY2hlY2sgb3JpZ2luLCBsb2NhdGlvbiwgY29va2llLCAuLgotCi0gICAgICAg
ICMgNC4xIDQyLiBsZXQgL2NoYWxsZW5nZS8gYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YgL251bWJl
cl8xLywKLSAgICAgICAgIyBleHByZXNzZWQgYXMgYSBiaWcgZW5kaWFuIDMyIGJpdCBpbnRlZ2Vy
LCAvbnVtYmVyXzIvLCBleHByZXNzZWQKLSAgICAgICAgIyBhcyBiaWcgZW5kaWFuIDMyIGJpdCBp
bnRlZ2VyLCBhbmQgdGhlIGVpZ2h0IGJ5dGVzIG9mIC9rZXlfMy8gaW4gdGhlCi0gICAgICAgICMg
b3JkZXIgdGhleSB3ZXJlIHNlbnQgb24gdGhlIHdpcmUuCi0gICAgICAgIGNoYWxsZW5nZSA9IHN0
cnVjdC5wYWNrKCchSScsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1
Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIyKQotICAgICAgICBjaGFsbGVuZ2UgKz0gc2VsZi5f
a2V5MwotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdDaGFsbGVu
Z2U6ICVyICglcyknLCBjaGFsbGVuZ2UsIHV0aWwuaGV4aWZ5KGNoYWxsZW5nZSkpCi0KLSAgICAg
ICAgIyA0LjEgNDMuIGxldCAvZXhwZWN0ZWQvIGJlIHRoZSBNRDUgZmluZ2VycHJpbnQgb2YgL2No
YWxsZW5nZS8gYXMgYQotICAgICAgICAjIGJpZy1lbmRpYW4gMTI4IGJpdCBzdHJpbmcuCi0gICAg
ICAgIGV4cGVjdGVkID0gdXRpbC5tZDVfaGFzaChjaGFsbGVuZ2UpLmRpZ2VzdCgpCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCBjaGFsbGVuZ2UgcmVz
cG9uc2U6ICVyICglcyknLAotICAgICAgICAgICAgZXhwZWN0ZWQsIHV0aWwuaGV4aWZ5KGV4cGVj
dGVkKSkKLQotICAgICAgICAjIDQuMSA0NC4gcmVhZCBzaXh0ZWVuIGJ5dGVzIGZyb20gdGhlIHNl
cnZlci4KLSAgICAgICAgIyBsZXQgL3JlcGx5LyBiZSB0aG9zZSBieXRlcy4KLSAgICAgICAgcmVw
bHkgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMTYpCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdBY3R1YWwgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoJXMp
JywgcmVwbHksIHV0aWwuaGV4aWZ5KHJlcGx5KSkKLQotICAgICAgICAjIDQuMSA0NS4gaWYgL3Jl
cGx5LyBkb2VzIG5vdCBleGFjdGx5IGVxdWFsIC9leHBlY3RlZC8sIHRoZW4gZmFpbAotICAgICAg
ICAjIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAg
ICAgIGlmIGV4cGVjdGVkICE9IHJlcGx5OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdCYWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoZXhwZWN0ZWQpICE9
ICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKGV4cGVjdGVkLCByZXBseSkpCi0gICAg
ICAgICMgNC4xIDQ2LiBUaGUgKldlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkKi4K
LQotICAgIGRlZiBfZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoc2VsZik6Ci0gICAgICAgICMg
NC4xIDE2LiBsZXQgL3NwYWNlc19uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMSB0byAxMiBp
bmNsdXNpdmUuCi0gICAgICAgIHNwYWNlcyA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAg
ICAjIDQuMSAxNy4gbGV0IC9tYXhfbi8gYmUgdGhlIGxhcmdlc3QgaW50ZWdlciBub3QgZ3JlYXRl
ciB0aGFuCi0gICAgICAgICMgIDQsMjk0LDk2NywyOTUgZGl2aWRlZCBieSAvc3BhY2VzX24vLgot
ICAgICAgICBtYXhudW0gPSA0Mjk0OTY3Mjk1IC8gc3BhY2VzCi0gICAgICAgICMgNC4xIDE4LiBs
ZXQgL251bWJlcl9uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byAvbWF4X24vCi0gICAg
ICAgICMgaW5jbHVzaXZlLgotICAgICAgICBudW1iZXIgPSByYW5kb20ucmFuZGludCgwLCBtYXhu
dW0pCi0gICAgICAgICMgNC4xIDE5LiBsZXQgL3Byb2R1Y3Rfbi8gYmUgdGhlIHJlc3VsdCBvZiBt
dWx0aXBseWluZyAvbnVtYmVyX24vIGFuZAotICAgICAgICAjIC9zcGFjZXNfbi8gdG9nZXRoZXIu
Ci0gICAgICAgIHByb2R1Y3QgPSBudW1iZXIgKiBzcGFjZXMKLSAgICAgICAgIyA0LjEgMjAuIGxl
dCAva2V5X24vIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgL3Byb2R1Y3Rfbi8sIGV4cHJlc3Nl
ZAotICAgICAgICAjIGluIGJhc2UgdGVuIHVzaW5nIHRoZSBudW1lcmFscyBpbiB0aGUgcmFuZ2Ug
VSswMDMwIERJR0lUIFpFUk8gKDApIHRvCi0gICAgICAgICMgVSswMDM5IERJR0lUIE5JTkUgKDkp
LgotICAgICAgICBrZXkgPSBzdHIocHJvZHVjdCkKLSAgICAgICAgIyA0LjEgMjEuIGluc2VydCBi
ZXR3ZWVuIG9uZSBhbmQgdHdlbHZlIHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhlCi0gICAgICAg
ICMgcmFuZ2UgVSswMDIxIHRvIFUrMDAyRiBhbmQgVSswMDNBIHRvIFUrMDA3RSBpbnRvIC9rZXlf
bi8gYXQgcmFuZG9tCi0gICAgICAgICMgcG9zaXRpb25zLgotICAgICAgICBhdmFpbGFibGVfY2hh
cnMgPSByYW5nZSgweDIxLCAweDJmICsgMSkgKyByYW5nZSgweDNhLCAweDdlICsgMSkKLSAgICAg
ICAgbiA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uobik6
Ci0gICAgICAgICAgICBjaCA9IHJhbmRvbS5jaG9pY2UoYXZhaWxhYmxlX2NoYXJzKQotICAgICAg
ICAgICAgcG9zID0gcmFuZG9tLnJhbmRpbnQoMCwgbGVuKGtleSkpCi0gICAgICAgICAgICBrZXkg
PSBrZXlbMDpwb3NdICsgY2hyKGNoKSArIGtleVtwb3M6XQotICAgICAgICAjIDQuMSAyMi4gaW5z
ZXJ0IC9zcGFjZXNfbi8gVSswMDIwIFNQQUNFIGNoYXJhY3RlcnMgaW50byAva2V5X24vIGF0Ci0g
ICAgICAgICMgcmFuZG9tIHBvc2l0aW9ucyBvdGhlciB0aGFuIHN0YXJ0IG9yIGVuZCBvZiB0aGUg
c3RyaW5nLgotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uoc3BhY2VzKToKLSAgICAgICAgICAgIHBv
cyA9IHJhbmRvbS5yYW5kaW50KDEsIGxlbihrZXkpIC0gMSkKLSAgICAgICAgICAgIGtleSA9IGtl
eVswOnBvc10gKyAnICcgKyBrZXlbcG9zOl0KLSAgICAgICAgcmV0dXJuIG51bWJlciwga2V5Ci0K
LSAgICBkZWYgX2dlbmVyYXRlX2tleTMoc2VsZik6Ci0gICAgICAgICMgNC4xIDI2LiBsZXQgL2tl
eTMvIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChvcgotICAg
ICAgICAjIGVxdWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2RlZCBpbiBh
IGJpZy1lbmRpYW4gb3JkZXIpLgotICAgICAgICByZXR1cm4gJycuam9pbihbY2hyKHJhbmRvbS5y
YW5kaW50KDAsIDI1NSkpIGZvciBfIGluIHhyYW5nZSg4KV0pCi0KLQotY2xhc3MgV2ViU29ja2V0
SGl4aWU3NUhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciBJRVRGIEhpeGllIDc1LiIiIgotCi0gICAgX0VYUEVDVEVEX1JFU1BPTlNFID0g
KAotICAgICAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJc
bicgKwotICAgICAgICBfVVBHUkFERV9IRUFERVJfSElYSUU3NSArCi0gICAgICAgIF9DT05ORUNU
SU9OX0hFQURFUikKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAg
c2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgIGRlZiBfc2tpcF9oZWFkZXJzKHNlbGYpOgotICAg
ICAgICB0ZXJtaW5hdG9yID0gJ1xyXG5cclxuJwotICAgICAgICBwb3MgPSAwCi0gICAgICAgIHdo
aWxlIHBvcyA8IGxlbih0ZXJtaW5hdG9yKToKLSAgICAgICAgICAgIHJlY2VpdmVkID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiByZWNlaXZlZCA9PSB0ZXJt
aW5hdG9yW3Bvc106Ci0gICAgICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgICAgIGVsaWYg
cmVjZWl2ZWQgPT0gdGVybWluYXRvclswXToKLSAgICAgICAgICAgICAgICBwb3MgPSAxCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBvcyA9IDAKLQotICAgIGRlZiBoYW5kc2hh
a2Uoc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAg
ICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5l
OiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVz
dF9saW5lKQotCi0gICAgICAgIGhlYWRlcnMgPSBfVVBHUkFERV9IRUFERVJfSElYSUU3NSArIF9D
T05ORUNUSU9OX0hFQURFUgotICAgICAgICBoZWFkZXJzICs9IF9mb3JtYXRfaG9zdF9oZWFkZXIo
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Rs
cykKLSAgICAgICAgaGVhZGVycyArPSBfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdp
bikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0
IGhlYWRlcnM6ICVyJywgaGVhZGVycykKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoaGVh
ZGVycykKLQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbCgnXHJcbicpCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCcpCi0KLSAg
ICAgICAgZm9yIGV4cGVjdGVkX2NoYXIgaW4gV2ViU29ja2V0SGl4aWU3NUhhbmRzaGFrZS5fRVhQ
RUNURURfUkVTUE9OU0U6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2Vs
Zi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgZXhwZWN0ZWRfY2hhciAhPSByZWNlaXZlZDoK
LSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0hhbmRzaGFrZSBmYWlsdXJlJykKLSAg
ICAgICAgIyBXZSBjdXQgY29ybmVycyBhbmQgc2tpcCBvdGhlciBoZWFkZXJzLgotICAgICAgICBz
ZWxmLl9za2lwX2hlYWRlcnMoKQotCi0KLWNsYXNzIFdlYlNvY2tldFN0cmVhbShvYmplY3QpOgot
ICAgICIiIkZyYW1lIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0
NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tldCwgaGFuZHNoYWtlKToKLSAg
ICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFuZHNoYWtlCi0gICAgICAgIHNlbGYuX3NvY2tldCA9
IHNvY2tldAotCi0gICAgICAgICMgRmlsdGVycyBhcHBsaWVkIHRvIGFwcGxpY2F0aW9uIGRhdGEg
cGFydCBvZiBkYXRhIGZyYW1lcy4KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVy
ID0gTm9uZQotICAgICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgPSBOb25lCi0KLSAg
ICAgICAgaWYgc2VsZi5faGFuZHNoYWtlLl9vcHRpb25zLnVzZV9kZWZsYXRlX2ZyYW1lOgotICAg
ICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyID0gKAotICAgICAgICAgICAgICAg
IHV0aWwuX1JGQzE5NzlEZWZsYXRlcihOb25lLCBGYWxzZSkpCi0gICAgICAgICAgICBzZWxmLl9p
bmNvbWluZ19mcmFtZV9maWx0ZXIgPSB1dGlsLl9SRkMxOTc5SW5mbGF0ZXIoKQotCi0gICAgICAg
IHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgZGVmIF9tYXNrX2h5Ymkoc2VsZiwgcyk6
Ci0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IG9zLnVyYW5kb20gZG9lcyBvcGVuL3JlYWQvY2xv
c2UgZm9yIGV2ZXJ5IGNhbGwuIElmCi0gICAgICAgICMgcGVyZm9ybWFuY2UgbWF0dGVycywgY2hh
bmdlIHRoaXMgdG8gc29tZSBsaWJyYXJ5IGNhbGwgdGhhdCBnZW5lcmF0ZXMKLSAgICAgICAgIyBj
cnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvIHJhbmRvbSBudW1iZXIgc2VxdWVuY2UuCi0g
ICAgICAgIG1hc2tpbmdfbm9uY2UgPSBvcy51cmFuZG9tKDQpCi0gICAgICAgIHJlc3VsdCA9IFtt
YXNraW5nX25vbmNlXQotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgZm9yIGMgaW4gczoKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hyKG9yZChjKSBeIG9yZChtYXNraW5nX25vbmNlW2Nv
dW50XSkpKQotICAgICAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGxlbihtYXNraW5nX25v
bmNlKQotICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCi0KLSAgICBkZWYgc2VuZF9mcmFt
ZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKLSAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoaGVhZGVyICsgc2VsZi5fbWFza19oeWJpKGJvZHkpKQotCi0gICAgZGVm
IHNlbmRfZGF0YShzZWxmLCBwYXlsb2FkLCBmcmFtZV90eXBlLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVl
LAotICAgICAgICAgICAgICAgICAgcnN2MT0wLCByc3YyPTAsIHJzdjM9MCk6Ci0gICAgICAgIGlm
IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHBh
eWxvYWQgPSBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHBheWxvYWQpCi0KLSAg
ICAgICAgaWYgc2VsZi5fZnJhZ21lbnRlZDoKLSAgICAgICAgICAgIG9wY29kZSA9IE9QQ09ERV9D
T05USU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wY29kZSA9IGZyYW1lX3R5
cGUKLQotICAgICAgICBpZiBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFs
c2UKLSAgICAgICAgICAgIGZpbiA9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYu
X2ZyYWdtZW50ZWQgPSBUcnVlCi0gICAgICAgICAgICBmaW4gPSAwCi0KLSAgICAgICAgaWYgc2Vs
Zi5faGFuZHNoYWtlLl9vcHRpb25zLnVzZV9kZWZsYXRlX2ZyYW1lOgotICAgICAgICAgICAgcnN2
MSA9IDEKLQotICAgICAgICBpZiBtYXNrOgotICAgICAgICAgICAgbWFza19iaXQgPSAxIDw8IDcK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hc2tfYml0ID0gMAotCi0gICAgICAgIGhlYWRl
ciA9IGNocihmaW4gPDwgNyB8IHJzdjEgPDwgNiB8IHJzdjIgPDwgNSB8IHJzdjMgPDwgNCB8IG9w
Y29kZSkKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgaWYg
cGF5bG9hZF9sZW5ndGggPD0gMTI1OgotICAgICAgICAgICAgaGVhZGVyICs9IGNocihtYXNrX2Jp
dCB8IHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBlbGlmIHBheWxvYWRfbGVuZ3RoIDwgMSA8PCAx
NjoKLSAgICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBh
Y2soJyFIJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPCAx
IDw8IDYzOgotICAgICAgICAgICAgaGVhZGVyICs9IGNocihtYXNrX2JpdCB8IDEyNykgKyBzdHJ1
Y3QucGFjaygnIVEnLCBwYXlsb2FkX2xlbmd0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignVG9vIGxvbmcgcGF5bG9hZCAoJWQgYnl0ZSknICUgcGF5bG9hZF9s
ZW5ndGgpCi0gICAgICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fbWFz
a19oeWJpKHBheWxvYWQpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlciArIHBh
eWxvYWQpCi0KLSAgICBkZWYgc2VuZF9iaW5hcnkoc2VsZiwgcGF5bG9hZCwgZW5kPVRydWUsIG1h
c2s9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2VuZF9kYXRhKHBheWxvYWQsIE9QQ09ERV9CSU5BUlks
IGVuZCwgbWFzaykKLQotICAgIGRlZiBzZW5kX3RleHQoc2VsZiwgcGF5bG9hZCwgZW5kPVRydWUs
IG1hc2s9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2VuZF9kYXRhKHBheWxvYWQuZW5jb2RlKCd1dGYt
OCcpLCBPUENPREVfVEVYVCwgZW5kLCBtYXNrKQotCi0gICAgZGVmIF9hc3NlcnRfcmVjZWl2ZV9k
YXRhKHNlbGYsIHBheWxvYWQsIG9wY29kZSwgZmluLCByc3YxLCByc3YyLCByc3YzKToKLSAgICAg
ICAgKGFjdHVhbF9maW4sIGFjdHVhbF9yc3YxLCBhY3R1YWxfcnN2MiwgYWN0dWFsX3JzdjMsIGFj
dHVhbF9vcGNvZGUsCi0gICAgICAgICBwYXlsb2FkX2xlbmd0aCkgPSByZWFkX2ZyYW1lX2hlYWRl
cihzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgaWYgYWN0dWFsX29wY29kZSAhPSBvcGNvZGU6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
b3Bjb2RlOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAg
KG9wY29kZSwgYWN0dWFsX29wY29kZSkpCi0KLSAgICAgICAgaWYgYWN0dWFsX2ZpbiAhPSBmaW46
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0
ZWQgZmluOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAg
KGZpbiwgYWN0dWFsX2ZpbikpCi0KLSAgICAgICAgaWYgcnN2MSBpcyBOb25lOgotICAgICAgICAg
ICAgcnN2MSA9IDAKLSAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZS5fb3B0aW9ucy51c2Vf
ZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgICAgICByc3YxID0gMQotCi0gICAgICAgIGlmIHJz
djIgaXMgTm9uZToKLSAgICAgICAgICAgIHJzdjIgPSAwCi0KLSAgICAgICAgaWYgcnN2MyBpcyBO
b25lOgotICAgICAgICAgICAgcnN2MyA9IDAKLQotICAgICAgICBpZiBhY3R1YWxfcnN2MSAhPSBy
c3YxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4
cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAg
ICAgICAocnN2MSwgYWN0dWFsX3JzdjEpKQotCi0gICAgICAgIGlmIGFjdHVhbF9yc3YyICE9IHJz
djI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhw
ZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAg
ICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCi0KLSAgICAgICAgaWYgYWN0dWFsX3JzdjMgIT0gcnN2
MzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBl
Y3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAg
ICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKLQotICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICBpZiBzZWxmLl9pbmNv
bWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHNl
bGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocmVjZWl2ZWQpCi0KLSAgICAgICAgaWYg
bGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5bG9hZCBsZW5ndGg6ICVkIChleHBl
Y3RlZCkgdnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAobGVuKHBheWxvYWQpLCBs
ZW4ocmVjZWl2ZWQpKSkKLQotICAgICAgICBpZiBwYXlsb2FkICE9IHJlY2VpdmVkOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHBheWxv
YWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAocGF5
bG9hZCwgcmVjZWl2ZWQpKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2JpbmFyeShzZWxmLCBw
YXlsb2FkLCBvcGNvZGU9T1BDT0RFX0JJTkFSWSwgZmluPTEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByc3YxPU5vbmUsIHJzdjI9Tm9uZSwgcnN2Mz1Ob25lKToKLSAgICAgICAgc2Vs
Zi5fYXNzZXJ0X3JlY2VpdmVfZGF0YShwYXlsb2FkLCBvcGNvZGUsIGZpbiwgcnN2MSwgcnN2Miwg
cnN2MykKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsIHBheWxvYWQsIG9wY29k
ZT1PUENPREVfVEVYVCwgZmluPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1O
b25lLCByc3YyPU5vbmUsIHJzdjM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZl
X2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjIsIHJzdjMpCi0KLSAgICBkZWYgX2J1aWxk
X2Nsb3NlX2ZyYW1lKHNlbGYsIGNvZGUsIHJlYXNvbiwgbWFzayk6Ci0gICAgICAgIGZyYW1lID0g
Y2hyKDEgPDwgNyB8IE9QQ09ERV9DTE9TRSkKLQotICAgICAgICBpZiBjb2RlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgcmVhc29uLmVu
Y29kZSgndXRmLTgnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYm9keSA9ICcnCi0gICAg
ICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBmcmFtZSArPSBjaHIoMSA8PCA3IHwgbGVuKGJvZHkp
KSArIHNlbGYuX21hc2tfaHliaShib2R5KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJh
bWUgKz0gY2hyKGxlbihib2R5KSkgKyBib2R5Ci0gICAgICAgIHJldHVybiBmcmFtZQotCi0gICAg
ZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgc2VsZi5fc29ja2V0
LnNlbmRhbGwoCi0gICAgICAgICAgICBzZWxmLl9idWlsZF9jbG9zZV9mcmFtZShjb2RlLCByZWFz
b24sIFRydWUpKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNvZGUsIHJl
YXNvbik6Ci0gICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gc2VsZi5fYnVpbGRfY2xvc2VfZnJhbWUo
Y29kZSwgcmVhc29uLCBGYWxzZSkKLSAgICAgICAgYWN0dWFsX2ZyYW1lID0gcmVjZWl2ZV9ieXRl
cyhzZWxmLl9zb2NrZXQsIGxlbihleHBlY3RlZF9mcmFtZSkpCi0gICAgICAgIGlmIGFjdHVhbF9m
cmFtZSAhPSBleHBlY3RlZF9mcmFtZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnVW5leHBlY3RlZCBjbG9zZSBmcmFtZTogJXIgKGV4cGVjdGVkKSB2cyAl
ciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZF9mcmFtZSwgYWN0dWFsX2Zy
YW1lKSkKLQotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IaXhpZTc1KG9iamVjdCk6Ci0gICAgIiIi
RnJhbWUgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gSGl4aWUg
NzUgYW5kIEh5QmkgMDAuCi0gICAgIiIiCi0KLSAgICBfQ0xPU0VfRlJBTUUgPSAnXHhmZlx4MDAn
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCB1bnVzZWRfaGFuZHNoYWtlKToKLSAg
ICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICBkZWYgc2VuZF9mcmFtZV9vZl9hcmJp
dHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKLSAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwoaGVhZGVyICsgYm9keSkKLQotICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgcGF5bG9hZCwg
dW51c2VkX2ZyYW1lX3R5cGVtLCB1bnVzZWRfZW5kLCB1bnVzZWRfbWFzayk6Ci0gICAgICAgIGZy
YW1lID0gJycuam9pbihbJ1x4MDAnLCBwYXlsb2FkLCAnXHhmZiddKQotICAgICAgICBzZWxmLl9z
b2NrZXQuc2VuZGFsbChmcmFtZSkKLQotICAgIGRlZiBzZW5kX2JpbmFyeShzZWxmLCB1bnVzZWRf
cGF5bG9hZCwgdW51c2VkX2VuZCwgdW51c2VkX21hc2spOgotICAgICAgICBwYXNzCi0KLSAgICBk
ZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxvYWQsIHVudXNlZF9lbmQsIHVudXNlZF9tYXNrKToKLSAg
ICAgICAgZW5jb2RlZF9wYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAg
ZnJhbWUgPSAnJy5qb2luKFsnXHgwMCcsIGVuY29kZWRfcGF5bG9hZCwgJ1x4ZmYnXSkKLSAgICAg
ICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZnJhbWUpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVf
YmluYXJ5KHNlbGYsIHBheWxvYWQsIG9wY29kZT1PUENPREVfQklOQVJZLCBmaW49MSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTApOgotICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0JpbmFyeSBmcmFtZSBpcyBub3Qgc3VwcG9ydGVkIGluIGhpeGll
NzUnKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwgcGF5bG9hZCk6Ci0gICAg
ICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0KLSAgICAgICAg
aWYgcmVjZWl2ZWQgIT0gJ1x4MDAnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICdVbmV4cGVjdGVkIGZyYW1lIHR5cGU6ICVkIChleHBlY3RlZCkgdnMgJWQg
KGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAoMCwgb3JkKHJlY2VpdmVkKSkpCi0KLSAgICAg
ICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgbGVuKHBheWxvYWQpICsg
MSkKLSAgICAgICAgaWYgcmVjZWl2ZWRbLTFdICE9ICdceGZmJzoKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVGVybWluYXRpb24gZXhwZWN0ZWQ6IDB4ZmYg
KGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIHJlY2VpdmVkKQot
Ci0gICAgICAgIGlmIHJlY2VpdmVkWzA6LTFdICE9IHBheWxvYWQ6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5bG9hZDogJXIgKGV4
cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChwYXlsb2FkLCByZWNl
aXZlZFswOi0xXSkpCi0KLSAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjb2RlLCByZWFzb24pOgot
ICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9DTE9TRV9GUkFNRSkKLQotICAgIGRl
ZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCB1bnVzZWRfY29kZSwgdW51c2VkX3JlYXNvbik6
Ci0gICAgICAgIGNsb3NpbmcgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgbGVuKHNlbGYu
X0NMT1NFX0ZSQU1FKSkKLSAgICAgICAgaWYgY2xvc2luZyAhPSBzZWxmLl9DTE9TRV9GUkFNRToK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkblwndCByZWNlaXZlIGNsb3NpbmcgaGFu
ZHNoYWtlJykKLQotCi1jbGFzcyBDbGllbnRPcHRpb25zKG9iamVjdCk6Ci0gICAgIiIiSG9sZHMg
b3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIENsaWVudCBvYmplY3QuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCi0gICAgICAgIHNl
bGYuc2VydmVyX2hvc3QgPSAnJwotICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCi0gICAgICAgIHNl
bGYucmVzb3VyY2UgPSAnJwotICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEKLSAgICAgICAg
c2VsZi5zb2NrZXRfdGltZW91dCA9IDEwMDAKLSAgICAgICAgc2VsZi51c2VfdGxzID0gRmFsc2UK
LSAgICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KLSAgICAgICAgIyBFbmFibGUgZGVmbGF0ZS1h
cHBsaWNhdGlvbi1kYXRhLgotICAgICAgICBzZWxmLnVzZV9kZWZsYXRlX2ZyYW1lID0gRmFsc2UK
LSAgICAgICAgIyBFbmFibGUgbXV4Ci0gICAgICAgIHNlbGYudXNlX211eCA9IEZhbHNlCi0KLSAg
ICBkZWYgZW5hYmxlX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAgIHNlbGYudXNlX2RlZmxh
dGVfZnJhbWUgPSBUcnVlCi0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBlbmQoX0RFRkxBVEVf
RlJBTUVfRVhURU5TSU9OKQotCi0gICAgZGVmIGVuYWJsZV9tdXgoc2VsZik6Ci0gICAgICAgIHNl
bGYudXNlX211eCA9IFRydWUKLSAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChfTVVYX0VY
VEVOU0lPTikKLQotCi1kZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9yZXRyeShob3N0LCBwb3J0LCB0
aW1lb3V0LCB1c2VfdGxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnk9MTAs
IHNsZWVwX3NlYz0wLjEpOgotICAgIHJldHJ5X2NvdW50ID0gMAotICAgIHdoaWxlIHJldHJ5X2Nv
dW50IDwgcmV0cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0
KCkKLSAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAgcy5jb25u
ZWN0KChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgIGlmIHVzZV90bHM6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIF9UTFNTb2NrZXQocykKLSAgICAgICAgICAgIHJldHVybiBzCi0gICAgICAgIGV4
Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8u
RUNPTk5SRUZVU0VEOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJldHJ5X2NvdW50ID0gcmV0cnlfY291bnQgKyAxCi0gICAgICAgICAg
ICAgICAgdGltZS5zbGVlcChzbGVlcF9zZWMpCi0KLSAgICByZXR1cm4gTm9uZQotCi0KLWNsYXNz
IENsaWVudChvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBjbGllbnQuIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgb3B0aW9ucywgaGFuZHNoYWtlLCBzdHJlYW1fY2xhc3MpOgotICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9zb2NrZXQgPSBOb25lCi0KLSAg
ICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFuZHNoYWtlCi0gICAgICAgIHNlbGYuX3N0cmVhbV9j
bGFzcyA9IHN0cmVhbV9jbGFzcwotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHNl
bGYuX3NvY2tldCA9IGNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoCi0gICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVv
dXQsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKQotCi0gICAgICAgIHNl
bGYuX2hhbmRzaGFrZS5oYW5kc2hha2Uoc2VsZi5fc29ja2V0KQotCi0gICAgICAgIHNlbGYuX3N0
cmVhbSA9IHNlbGYuX3N0cmVhbV9jbGFzcyhzZWxmLl9zb2NrZXQsIHNlbGYuX2hhbmRzaGFrZSkK
LQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpCi0K
LSAgICBkZWYgc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5
KToKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKGhl
YWRlciwgYm9keSkKLQotICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRy
dWUsIGJpbmFyeT1GYWxzZSwgcmF3PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgbWFzaz1U
cnVlKToKLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRf
YmluYXJ5KG1lc3NhZ2UsIGVuZCwgbWFzaykKLSAgICAgICAgZWxpZiByYXc6Ci0gICAgICAgICAg
ICBzZWxmLl9zdHJlYW0uc2VuZF9kYXRhKG1lc3NhZ2UsIE9QQ09ERV9URVhULCBlbmQsIG1hc2sp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF90ZXh0KG1lc3Nh
Z2UsIGVuZCwgbWFzaykKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZShzZWxmLCBwYXlsb2FkLCBi
aW5hcnk9RmFsc2UpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBzZWxmLl9zdHJl
YW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHBheWxvYWQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfdGV4dChwYXlsb2FkKQotCi0gICAgZGVm
IHNlbmRfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6
Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLQotICAgIGRl
ZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwg
cmVhc29uPScnKToKLSAgICAgICAgc2VsZi5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNv
ZGUsIHJlYXNvbikKLQotICAgIGRlZiBjbG9zZV9zb2NrZXQoc2VsZik6Ci0gICAgICAgIHNlbGYu
X3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKHNlbGYp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZWFkX2RhdGEgPSByZWNlaXZlX2J5dGVzKHNl
bGYuX3NvY2tldCwgMSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAg
ICAgaWYgc3RyKGUpLmZpbmQoCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJl
Zm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnKSA9PSAwOgotICAgICAgICAgICAgICAg
IHJldHVybgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwg
bWVzc2FnZSA9IGUKLSAgICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVT
RVQnLCAnV1NBRUNPTk5SRVNFVCddOgotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFt
ZSBpbiBkaXIoZXJybm8pIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbnVtYmVy
ID09IGdldGF0dHIoZXJybm8sIGVycm9yX25hbWUpKToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybgotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAg
ICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nvbm5lY3Rpb24g
aXMgbm90IGNsb3NlZCAoUmVhZDogJXIpJyAlIHJlYWRfZGF0YSkKLQotCi1kZWYgY3JlYXRlX2Ns
aWVudChvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25zLCBXZWJT
b2NrZXRIYW5kc2hha2Uob3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbSkKLQotCi1kZWYgY3JlYXRl
X2NsaWVudF9oeWJpMDAob3B0aW9ucyk6Ci0gICAgcmV0dXJuIENsaWVudCgKLSAgICAgICAgb3B0
aW9ucywKLSAgICAgICAgV2ViU29ja2V0SHliaTAwSGFuZHNoYWtlKG9wdGlvbnMsICcwJyksCi0g
ICAgICAgIFdlYlNvY2tldFN0cmVhbUhpeGllNzUpCi0KLQotZGVmIGNyZWF0ZV9jbGllbnRfaGl4
aWU3NShvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25zLCBXZWJT
b2NrZXRIaXhpZTc1SGFuZHNoYWtlKG9wdGlvbnMpLCBXZWJTb2NrZXRTdHJlYW1IaXhpZTc1KQot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2VuZHRvZW5kX3dp
dGhfZXh0ZXJuYWxfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2VuZHRvZW5kX3dpdGhfZXh0ZXJuYWxf
c2VydmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2Y4NmZkYjQxNjMuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvZW5kdG9lbmRfd2l0aF9leHRlcm5hbF9zZXJ2ZXIu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3QgZm9yIGVuZC10by1lbmQgd2l0aCBleHRl
cm5hbCBzZXJ2ZXIuCi0KLVRoaXMgdGVzdCBpcyBub3QgcnVuIGJ5IHJ1bl9hbGwucHkgYmVjYXVz
ZSBpdCByZXF1aXJlcyBzb21lIHByZXBhcmF0aW9ucy4KLUlmIHlvdSB3b3VsZCBsaWtlIHRvIHJ1
biB0aGlzIHRlc3QgY29ycmVjdGx5LCBsYXVuY2ggQXBhY2hlIHdpdGggbW9kX3B5dGhvbgotYW5k
IG1vZF9weXdlYnNvY2tldCBtYW51YWxseS4gSW4gYWRkaXRpb24sIHlvdSBzaG91bGQgcGFzcyBh
bGxvd19kcmFmdDc1IG9wdGlvbgotYW5kIGV4YW1wbGUgcGF0aCBhcyBoYW5kbGVyX3NjYW4gb3B0
aW9uIGFuZCBBcGFjaGUncyBEb2N1bWVudFJvb3QuCi0iIiIKLQotCi1pbXBvcnQgb3B0cGFyc2UK
LWltcG9ydCBzeXMKLWltcG9ydCB0ZXN0LnRlc3RfZW5kdG9lbmQKLWltcG9ydCB1bml0dGVzdAot
Ci0KLV9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCA9IDgwCi0KLQotY2xhc3MgRW5kVG9FbmRUZXN0
V2l0aEV4dGVybmFsU2VydmVyKHRlc3QudGVzdF9lbmR0b2VuZC5FbmRUb0VuZFRlc3QpOgotICAg
IHBhc3MKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwYXJzZXIgPSBvcHRwYXJz
ZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBvcnQnLCBk
ZXN0PSdwb3J0JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9E
RUZBVUxUX1dFQl9TT0NLRVRfUE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdleHRl
cm5hbCB0ZXN0IHNlcnZlciBwb3J0LicpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBh
cnNlX2FyZ3MoKQotCi0gICAgdGVzdC50ZXN0X2VuZHRvZW5kLl91c2VfZXh0ZXJuYWxfc2VydmVy
ID0gVHJ1ZQotICAgIHRlc3QudGVzdF9lbmR0b2VuZC5fZXh0ZXJuYWxfc2VydmVyX3BvcnQgPSBv
cHRpb25zLnBvcnQKLQotICAgIHVuaXR0ZXN0Lm1haW4oYXJndj1bc3lzLmFyZ3ZbMF1dKQotCi0K
LSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvbW9jay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmZmNhYzQ4ZGM0
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwyMjEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTW9ja3MgZm9yIHRlc3Rpbmcu
Ci0iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1IaXhpZTc1Ci0KLQotY2xhc3MgX01vY2tDb25uQmFzZShvYmplY3QpOgotICAgICIi
IkJhc2UgY2xhc3Mgb2YgbW9ja3MgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCi0KLSAg
ICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGEgKG1vY2sp
IG1wX2Nvbm4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNl
bGYuX3dyaXRlX2RhdGEgPSBbXQotICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gJ2Zha2VfYWRk
cmVzcycKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiT3ZlcnJpZGUg
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi53cml0ZS4iIiIKLQotICAgICAgICBzZWxmLl93cml0
ZV9kYXRhLmFwcGVuZChkYXRhKQotCi0gICAgZGVmIHdyaXR0ZW5fZGF0YShzZWxmKToKLSAgICAg
ICAgIiIiR2V0IGJ5dGVzIHdyaXR0ZW4gdG8gdGhpcyBtb2NrLiIiIgotCi0gICAgICAgIHJldHVy
biAnJy5qb2luKHNlbGYuX3dyaXRlX2RhdGEpCi0KLQotY2xhc3MgTW9ja0Nvbm4oX01vY2tDb25u
QmFzZSk6Ci0gICAgIiIiTW9jayBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KLQotICAg
IFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBh
IChtb2NrKSBtcF9jb25uIGFzCi0gICAgd2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4g
dG8gaXQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZF9kYXRhKToKLSAg
ICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQq
IG1ldGhvZHMgYXJlCi0gICAgICAgICAgICBjYWxsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAg
IF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0g
cmVhZF9kYXRhCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gMAotCi0gICAgZGVmIHJlYWRsaW5l
KHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJl
YWRsaW5lLiIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFk
X2RhdGEpOgotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIGVuZF9pbmRleCA9IHNlbGYu
X3JlYWRfZGF0YS5maW5kKCdcbicsIHNlbGYuX3JlYWRfcG9zKSArIDEKLSAgICAgICAgaWYgbm90
IGVuZF9pbmRleDoKLSAgICAgICAgICAgIGVuZF9pbmRleCA9IGxlbihzZWxmLl9yZWFkX2RhdGEp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VwX3RvKGVuZF9pbmRleCkKLQotICAgIGRlZiBy
ZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hl
Lm1wX2Nvbm4ucmVhZC4iIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2Vs
Zi5fcmVhZF9kYXRhKToKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbmRfaW5kZXgg
PSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSksIHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQotICAg
ICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90byhlbmRfaW5kZXgpCi0KLSAgICBkZWYgX3JlYWRf
dXBfdG8oc2VsZiwgZW5kX2luZGV4KToKLSAgICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtz
ZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2lu
ZGV4Ci0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9j
a0Nvbm5CYXNlKToKLSAgICAiIiJCbG9ja2luZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5t
cF9jb25uLgotCi0gICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQg
YmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKLSAgICB3ZWxsIGFzIHRvIGNoZWNrIHdo
YXQgaXMgd3JpdHRlbiB0byBpdC4KLSAgICBDYWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBi
bG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBhdmFpbGFibGUuCi0gICAgIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZik6Ci0gICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAg
ICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAgICBkZWYgcmVhZGxpbmUoc2Vs
Zik6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZGxp
bmUuIiIiCi0gICAgICAgIGxpbmUgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAg
ICAgYyA9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgICAgICBsaW5lICs9IGMKLSAgICAgICAg
ICAgIGlmIGMgPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVm
IHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFj
aGUubXBfY29ubi5yZWFkLiIiIgotCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmb3IgdW51
c2VkIGluIHJhbmdlKGxlbmd0aCk6Ci0gICAgICAgICAgICBkYXRhICs9IHNlbGYuX3F1ZXVlLmdl
dCgpCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgcHV0X2J5dGVzKHNlbGYsIGJ5dGVz
KToKLSAgICAgICAgIiIiUHV0IGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSB0aGlzIG1vY2suCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIGJ5dGVzOiBieXRlcyB0byBiZSByZWFkLgotICAgICAg
ICAiIiIKLQotICAgICAgICBmb3IgYnl0ZSBpbiBieXRlczoKLSAgICAgICAgICAgIHNlbGYuX3F1
ZXVlLnB1dChieXRlKQotCi0KLWNsYXNzIE1vY2tUYWJsZShkaWN0KToKLSAgICAiIiJNb2NrIHRh
YmxlLgotCi0gICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiBtcF90YWJsZS4gTm90ZSB0aGF0IG9u
bHkgdGhlIG1ldGhvZHMgdXNlZCBieQotICAgIHRlc3RzIGFyZSBvdmVycmlkZGVuLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvcHlfZnJvbT17fSk6Ci0gICAgICAgIGlmIGlz
aW5zdGFuY2UoY29weV9mcm9tLCBkaWN0KToKLSAgICAgICAgICAgIGNvcHlfZnJvbSA9IGNvcHlf
ZnJvbS5pdGVtcygpCi0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvcHlfZnJvbToKLSAgICAg
ICAgICAgIHNlbGYuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKLQotICAgIGRlZiBfX2dldGl0ZW1f
XyhzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX2dl
dGl0ZW1fXyhrZXkubG93ZXIoKSkKLQotICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZh
bHVlKToKLSAgICAgICAgc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX3NldGl0ZW1fXyhrZXkubG93
ZXIoKSwgdmFsdWUpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmX3ZhbHVlPU5vbmUpOgot
ICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5nZXQoa2V5Lmxvd2VyKCksIGRl
Zl92YWx1ZSkKLQotCi1jbGFzcyBNb2NrUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1vY2sgcmVx
dWVzdC4KLQotICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAiIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmk9Tm9uZSwgaGVhZGVyc19pbj17fSwgY29ubmVjdGlv
bj1Ob25lLCBtZXRob2Q9J0dFVCcsCi0gICAgICAgICAgICAgICAgIHByb3RvY29sPSdIVFRQLzEu
MScsIGlzX2h0dHBzPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgot
Ci0gICAgICAgIEFyZ3VtZW50czoKLSAgICAgICAgICAgIHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0
LgotICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVzdCBoZWFkZXJzLgotICAgICAgICAgICAg
Y29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0aGUgcmVxdWVzdC4KLSAgICAgICAgICAg
IG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCi0gICAgICAgICAgICBpc19odHRwczogV2hldGhlciB0
aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCi0KLSAgICAgICAgU2VlIHRoZSBkb2N1bWVudCBvZiBt
b2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
LnVyaSA9IHVyaQotICAgICAgICBzZWxmLnVucGFyc2VkX3VyaSA9IHVyaQotICAgICAgICBzZWxm
LmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0gICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCi0g
ICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4g
PSBNb2NrVGFibGUoaGVhZGVyc19pbikKLSAgICAgICAgIyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0
byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBhdm9pZCBuYW1lCi0gICAgICAgICMgY29u
ZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlzIG5hbWVkIGFzIHN1Y2guCi0gICAgICAg
IHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKLSAgICAgICAgc2VsZi53c19zdHJlYW0gPSBTdHJl
YW1IaXhpZTc1KHNlbGYsIFRydWUpCi0gICAgICAgIHNlbGYud3NfY2xvc2VfY29kZSA9IE5vbmUK
LSAgICAgICAgc2VsZi53c19jbG9zZV9yZWFzb24gPSBOb25lCi0gICAgICAgIHNlbGYud3NfdmVy
c2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQkkwMAotICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBG
YWxzZQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhl
ciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmlzX2h0
dHBzXwotCi0KLWNsYXNzIE1vY2tEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9jayBmb3Ig
ZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc2VsZi5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVkID0gRmFsc2UKLQotICAgIGRlZiBkb19l
eHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgc2VsZi5kb19leHRy
YV9oYW5kc2hha2VfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwg
Y29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L211eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
bXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzA0ZTdmYzk1ZDNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L211eF9jbGllbnRfZm9y
X3Rlc3RpbmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgY2xpZW50IHV0
aWxpdHkgZm9yIHRlc3RpbmcgbXV4IGV4dGVuc2lvbi4KLQotVGhpcyBjb2RlIHNob3VsZCBiZSBp
bmRlcGVuZGVudCBmcm9tIG1vZF9weXdlYnNvY2tldC4gU2VlIHRoZSBjb21tZW50IG9mCi1jbGll
bnRfZm9yX3Rlc3RpbmcucHkuCi0KLU5PVEU6IFRoaXMgY29kZSBpcyBmYXIgZnJvbSByb2J1c3Qg
bGlrZSBjbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0iIiIKLQotCi0KLWltcG9ydCBRdWV1ZQotaW1w
b3J0IGJhc2U2NAotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFp
bC5wYXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IG9zCi1pbXBvcnQg
cmFuZG9tCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgdGhyZWFkaW5nCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLWZyb20gdGVzdCBpbXBvcnQgY2xp
ZW50X2Zvcl90ZXN0aW5nCi0KLQotX0NPTlRST0xfQ0hBTk5FTF9JRCA9IDAKLV9ERUZBVUxUX0NI
QU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QgPSAwCi1fTVVY
X09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA9IDEKLV9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJP
TCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMKLV9NVVhfT1BDT0RFX05FV19DSEFO
TkVMX1NMT1QgPSA0Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jazoKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgb3Bjb2RlKToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUKLQotCi1kZWYgX3Bh
cnNlX2hhbmRzaGFrZV9yZXNwb25zZShyZXNwb25zZSk6Ci0gICAgc3RhdHVzX2xpbmUsIGhlYWRl
cl9saW5lcyA9IHJlc3BvbnNlLnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdvcmRzID0gc3RhdHVz
X2xpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbih3b3JkcykgPCAzOgotICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdCYWQgU3RhdHVzLUxpbmUgc3ludGF4ICVyJyAlIHN0YXR1c19saW5lKQotICAg
IFt2ZXJzaW9uLCByZXNwb25zZV9jb2RlXSA9IHdvcmRzWzoyXQotICAgIGlmIHZlcnNpb24gIT0g
J0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlc3BvbnNlIHZlcnNp
b24gJXInICUgdmVyc2lvbikKLQotICAgIGlmIHJlc3BvbnNlX2NvZGUgIT0gJzEwMSc6Ci0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCByZXNwb25zZSBjb2RlICVyICcgJSByZXNwb25zZV9j
b2RlKQotICAgIGhlYWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKCkucGFyc2VzdHIoaGVhZGVy
X2xpbmVzKQotICAgIHJldHVybiBoZWFkZXJzCi0KLQotZGVmIF9wYXJzZV9jaGFubmVsX2lkKGRh
dGEsIG9mZnNldD0wKToKLSAgICBsZW5ndGggPSBsZW4oZGF0YSkKLSAgICByZW1haW5pbmcgPSBs
ZW5ndGggLSBvZmZzZXQKLQotICAgIGlmIHJlbWFpbmluZyA8PSAwOgotICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ05vIGNoYW5uZWwgaWQgZm91bmQnKQotCi0gICAgY2hhbm5lbF9pZCA9IG9yZChk
YXRhW29mZnNldF0pCi0gICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAgaWYgY2hhbm5lbF9p
ZCAmIDB4ZTAgPT0gMHhlMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgNDoKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgIGNo
YW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFbb2Zmc2V0Om9mZnNldCs0XSlbMF0gJiAweDFmZmZmZmZmCi0gICAgICAg
IGNoYW5uZWxfaWRfbGVuZ3RoID0gNAotICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0gMHhj
MDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgMzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgIGNoYW5uZWxfaWQgPSAoKChj
aGFubmVsX2lkICYgMHgxZikgPDwgMTYpICsKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qu
dW5wYWNrKCchSCcsIGRhdGFbb2Zmc2V0KzE6b2Zmc2V0KzNdKVswXSkKLSAgICAgICAgY2hhbm5l
bF9pZF9sZW5ndGggPSAzCi0gICAgZWxpZiBjaGFubmVsX2lkICYgMHg4MCA9PSAweDgwOgotICAg
ICAgICBpZiByZW1haW5pbmcgPCAyOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZh
bGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVjdC51bnBh
Y2soJyFIJywgZGF0YVtvZmZzZXQ6b2Zmc2V0KzJdKVswXSAmIDB4M2ZmZgotICAgICAgICBjaGFu
bmVsX2lkX2xlbmd0aCA9IDIKLQotICAgIHJldHVybiBjaGFubmVsX2lkLCBjaGFubmVsX2lkX2xl
bmd0aAotCi0KLWRlZiBfcGFyc2VfbnVtYmVyKGRhdGEsIG9mZnNldD0wKToKLSAgICBmaXJzdF9i
eXRlID0gb3JkKGRhdGFbb2Zmc2V0XSkKLSAgICBpZiAoZmlyc3RfYnl0ZSAmIDB4ODApICE9IDA6
Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIE1TQiBvZiBudW1iZXIgZmllbGQgbXVzdCBi
ZSB1bnNldCcpCi0gICAgZmlyc3RfYnl0ZSA9IGZpcnN0X2J5dGUgJiAweDdmCi0gICAgaWYgZmly
c3RfYnl0ZSA9PSAxMjc6Ci0gICAgICAgIGlmIG9mZnNldCArIDkgPiBsZW4oZGF0YSk6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAgICAgICAgcmV0dXJu
IHN0cnVjdC51bnBhY2soJyFRJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrOV0pWzBdLCA5Ci0gICAg
aWYgZmlyc3RfYnl0ZSA9PSAxMjY6Ci0gICAgICAgIGlmIG9mZnNldCArIDMgPiBsZW4oZGF0YSk6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAgICAgICAg
cmV0dXJuIHN0cnVjdC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrM10pWzBdLCAz
Ci0gICAgcmV0dXJuIGZpcnN0X2J5dGUsIDEKLQotCi1kZWYgX3BhcnNlX3NpemVfYW5kX2NvbnRl
bnRzKGRhdGEsIG9mZnNldD0wKToKLSAgICBzaXplLCBhZHZhbmNlID0gX3BhcnNlX251bWJlcihk
YXRhLCBvZmZzZXQpCi0gICAgc3RhcnRfcG9zaXRpb24gPSBvZmZzZXQgKyBhZHZhbmNlCi0gICAg
ZW5kX3Bvc2l0aW9uID0gc3RhcnRfcG9zaXRpb24gKyBzaXplCi0gICAgaWYgbGVuKGRhdGEpIDwg
ZW5kX3Bvc2l0aW9uOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgc2l6ZSBvZiBj
b250cm9sIGJsb2NrICglZCA8ICVkKScgJSAoCi0gICAgICAgICAgICAgICAgbGVuKGRhdGEpLCBl
bmRfcG9zaXRpb24pKQotICAgIHJldHVybiBkYXRhW3N0YXJ0X3Bvc2l0aW9uOmVuZF9wb3NpdGlv
bl0sIHNpemUgKyBhZHZhbmNlCi0KLQotZGVmIF9wYXJzZV9jb250cm9sX2Jsb2NrcyhkYXRhKToK
LSAgICBibG9ja3MgPSBbXQotICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAgIHBvcyA9IDAKLQot
ICAgIHdoaWxlIHBvcyA8IGxlbmd0aDoKLSAgICAgICAgZmlyc3RfYnl0ZSA9IG9yZChkYXRhW3Bv
c10pCi0gICAgICAgIHBvcyArPSAxCi0gICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUp
ICYgMHg3Ci0gICAgICAgIGJsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGUpCi0KLSAgICAgICAg
IyBUT0RPKGJhc2hpKTogU3VwcG9ydCBtb3JlIG9wY29kZQotICAgICAgICBpZiBvcGNvZGUgPT0g
X01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICBibG9jay5lbmNv
ZGUgPSBmaXJzdF9ieXRlICYgMwotICAgICAgICAgICAgYmxvY2sucmVqZWN0ZWQgPSAoZmlyc3Rf
Ynl0ZSA+PiA0KSAmIDEKLQotICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9IF9wYXJz
ZV9jaGFubmVsX2lkKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGJsb2NrLmNoYW5uZWxfaWQgPSBj
aGFubmVsX2lkCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotCi0gICAgICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZSwgYWR2YW5jZSA9IF9wYXJzZV9zaXplX2FuZF9jb250ZW50cyhkYXRhLCBw
b3MpCi0gICAgICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSA9IGVuY29kZWRfaGFuZHNo
YWtlCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotICAgICAgICAgICAgYmxvY2tzLmFwcGVu
ZChibG9jaykKLSAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
OgotICAgICAgICAgICAgYmxvY2subXV4X2Vycm9yID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0K
LSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGFkdmFuY2UgPSBfcGFyc2VfY2hhbm5lbF9pZChkYXRh
LCBwb3MpCi0gICAgICAgICAgICBibG9jay5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAg
ICAgICAgcG9zICs9IGFkdmFuY2UKLQotICAgICAgICAgICAgcmVhc29uLCBhZHZhbmNlID0gX3Bh
cnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGlmIGxlbihyZWFz
b24pID09IDA6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0gTm9uZQotICAgICAg
ICAgICAgICAgIGJsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgICAgICBlbGlmIGxlbihy
ZWFzb24pID49IDI6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0gc3RydWN0LnVu
cGFjaygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgICAgIGJsb2NrLmRyb3BfbWVz
c2FnZSA9IHJlYXNvblsyOl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdJbnZhbGlkIERyb3BDaGFubmVsJykKLSAgICAgICAgICAgIHBvcyArPSBh
ZHZhbmNlCi0gICAgICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2NrKQotICAgICAgICBlbGlmIG9w
Y29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NPTlRST0w6Ci0gICAgICAgICAgICBjaGFubmVsX2lk
LCBhZHZhbmNlID0gX3BhcnNlX2NoYW5uZWxfaWQoZGF0YSwgcG9zKQotICAgICAgICAgICAgYmxv
Y2suY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0g
ICAgICAgICAgICBzZW5kX3F1b3RhLCBhZHZhbmNlID0gX3BhcnNlX251bWJlcihkYXRhLCBwb3Mp
Ci0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAgICAg
cG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxvY2spCi0gICAgICAg
IGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAg
ICBmYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgICAgICBzbG90cywgYWR2YW5jZSA9
IF9wYXJzZV9udW1iZXIoZGF0YSwgcG9zKQotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAg
ICAgICAgICAgIHNlbmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRhdGEsIHBvcykK
LSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBpZiBmYWxsYmFjayA9PSAx
IGFuZCAoc2xvdHMgIT0gMCBvciBzZW5kX3F1b3RhICE9IDApOgotICAgICAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignc2xvdHMgYW5kIHNlbmRfcXVvdGEgbXVzdCBiZSB6ZXJvIGlmIEYgYml0
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIHNldCcpCi0gICAgICAgICAg
ICBibG9jay5mYWxsYmFjayA9IGZhbGxiYWNrCi0gICAgICAgICAgICBibG9jay5zbG90cyA9IHNs
b3RzCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAg
ICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgbXV4IG9wY29kZSAlZCBy
ZWNlaXZlZCcgJSBvcGNvZGUpCi0KLSAgICByZXR1cm4gYmxvY2tzCi0KLQotZGVmIF9lbmNvZGVf
Y2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVsX2lkIDwgMDoKLSAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScgJSBj
aGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogNzoKLSAgICAgICAgcmV0dXJu
IGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDE0OgotICAgICAgICBy
ZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5lbF9pZCkKLSAgICBpZiBjaGFu
bmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIoMHhjMCArIChjaGFubmVsX2lk
ID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0LnBhY2soJyFIJywgY2hhbm5l
bF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyOToKLSAgICAgICAgcmV0
dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFubmVsX2lkKQotCi0gICAgcmFp
c2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFyZ2UnICUgY2hhbm5lbF9pZCkK
LQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBpZiBudW1iZXIgPD0gMTI1Ogot
ICAgICAgICByZXR1cm4gY2hyKG51bWJlcikKLSAgICBlbGlmIG51bWJlciA8ICgxIDw8IDE2KToK
LSAgICAgICAgcmV0dXJuIGNocigweDdlKSArIHN0cnVjdC5wYWNrKCchSCcsIG51bWJlcikKLSAg
ICBlbGlmIG51bWJlciA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0dXJuIGNocigweDdmKSArIHN0
cnVjdC5wYWNrKCchUScsIG51bWJlcikKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0ludmFsaWQgbnVtYmVyJykKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
KGNoYW5uZWxfaWQsIGVuY29kZWRfaGFuZHNoYWtlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmNvZGluZz0wKToKLSAgICBsZW5ndGggPSBsZW4oZW5jb2RlZF9oYW5kc2hha2Up
Ci0gICAgaGFuZHNoYWtlX2xlbmd0aCA9IF9lbmNvZGVfbnVtYmVyKGxlbmd0aCkKLQotICAgIGZp
cnN0X2J5dGUgPSAoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA8PCA1KSB8IGVuY29k
aW5nCi0gICAgcmV0dXJuIChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5uZWxfaWQoY2hh
bm5lbF9pZCkgKwotICAgICAgICAgICAgaGFuZHNoYWtlX2xlbmd0aCArIGVuY29kZWRfaGFuZHNo
YWtlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hl
ZF9xdW90YSk6Ci0gICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9GTE9XX0NPTlRST0wgPDwg
NSkKLSAgICByZXR1cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFu
bmVsX2lkKSArCi0gICAgICAgICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5pc2hlZF9xdW90YSkp
Ci0KLQotY2xhc3MgX011eFJlYWRlclRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJN
dXggcmVhZGVyIHRocmVhZC4KLQotICAgIFJlYWRzIGZyYW1lcyBhbmQgcGFzc2VzIHRoZW0gdG8g
dGhlIG11eCBjbGllbnQuIFRoaXMgdGhyZWFkIGFjY2Vzc2VzCi0gICAgcHJpdmF0ZSBmdW5jdGlv
bnMvdmFyaWFibGVzIG9mIHRoZSBtdXggY2xpZW50LgotICAgICIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIG11eCk6Ci0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikK
LSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5fbXV4ID0gbXV4Ci0g
ICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLQotICAgIGRlZiBfcmVjZWl2ZV9t
ZXNzYWdlKHNlbGYpOgotICAgICAgICBmaXJzdF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHBlbmRp
bmdfcGF5bG9hZCA9IFtdCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoK
LSAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBwYXlsb2FkX2xlbmd0
aCA9ICgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcucmVhZF9mcmFtZV9oZWFk
ZXIoc2VsZi5fbXV4Ll9zb2NrZXQpKQotCi0gICAgICAgICAgICBpZiBub3QgZmlyc3Rfb3Bjb2Rl
OgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X1RFWFQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2ZWQgYSB0
ZXh0IG1lc3NhZ2Ugb24gcGh5c2ljYWwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Nvbm5lY3Rpb24nKQotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUgYnV0ICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFnbWVudGF0aW9uIHdhcyBub3Qgc3Rh
cnRlZCcpCi0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3Rpbmcu
T1BDT0RFX0JJTkFSWSBvcgotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gY2xpZW50X2Zv
cl90ZXN0aW5nLk9QQ09ERV9QT05HIG9yCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBj
bGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1BPTkcgb3IKLSAgICAgICAgICAgICAgICAgICAgb3Bj
b2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0UpOgotICAgICAgICAgICAgICAg
ICAgICBmaXJzdF9vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVkIGFuIHVuZGVmaW5lZCBvcGNv
ZGUgZnJhbWU6ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNv
ZGUpCi0KLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlICE9IGNsaWVudF9mb3JfdGVzdGluZy5PUENP
REVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2
ZWQgYSBuZXcgb3Bjb2RlIGJlZm9yZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXJtaW5hdGluZyBmcmFnbWVudGF0aW9uJykKLQotICAgICAgICAgICAgcGF5bG9hZCA9IGNs
aWVudF9mb3JfdGVzdGluZy5yZWNlaXZlX2J5dGVzKAotICAgICAgICAgICAgICAgIHNlbGYuX211
eC5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICAgICAgaWYgc2VsZi5fbXV4Ll9p
bmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcGF5bG9h
ZCA9IHNlbGYuX211eC5faW5jb21pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihwYXlsb2FkKQotCi0g
ICAgICAgICAgICBwZW5kaW5nX3BheWxvYWQuYXBwZW5kKHBheWxvYWQpCi0KLSAgICAgICAgICAg
IGlmIGZpbjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIHNlbGYuX3N0b3Bf
cmVxdWVzdGVkOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLQotICAgICAgICBtZXNz
YWdlID0gJycuam9pbihwZW5kaW5nX3BheWxvYWQpCi0gICAgICAgIHJldHVybiBmaXJzdF9vcGNv
ZGUsIG1lc3NhZ2UKLQotICAgIGRlZiByZXF1ZXN0X3N0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYu
X3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAg
ICAgICAgICMgb3Bjb2RlIGlzIE9QQ09ERV9CSU5BUlkgb3IgY29udHJvbCBvcGNvZGVzIHdoZW4g
YSBtZXNzYWdlCi0gICAgICAgICAgICAgICAgIyBpcyBzdWNjZXNmdWxseSByZWNlaXZlZC4KLSAg
ICAgICAgICAgICAgICBvcGNvZGUsIG1lc3NhZ2UgPSBzZWxmLl9yZWNlaXZlX21lc3NhZ2UoKQot
ICAgICAgICAgICAgICAgIGlmIG5vdCBvcGNvZGU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
bgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9IF9wYXJz
ZV9jaGFubmVsX2lkKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX211eC5fZGlz
cGF0Y2hfZnJhbWUoY2hhbm5lbF9pZCwgbWVzc2FnZVthZHZhbmNlOl0pCi0gICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9wcm9jZXNzX2NvbnRyb2xf
bWVzc2FnZShvcGNvZGUsIG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBz
ZWxmLl9tdXguX25vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xhc3MgX0lubmVyRnJhbWUob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNv
ZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxmLmZpbiA9IGZpbgotICAgICAgICBzZWxmLnJzdjEg
PSByc3YxCi0gICAgICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAgICAgc2VsZi5yc3YzID0gcnN2
MwotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxvYWQgPSBw
YXlsb2FkCi0KLQotY2xhc3MgX0xvZ2ljYWxDaGFubmVsRGF0YShvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAg
ICAgc2VsZi5zZW5kX3F1b3RhID0gMAotICAgICAgICBzZWxmLnJlY2VpdmVfcXVvdGEgPSAwCi0K
LQotY2xhc3MgTXV4Q2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0IG11eCBjbGllbnQu
Ci0KLSAgICBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcyBOT1QgdGhyZWFkLXNhZmUuIERvIG5vdCBh
Y2Nlc3MgYW4gaW5zdGFuY2Ugb2YgdGhpcwotICAgIGNsYXNzIGZyb20gbXVsdGlwbGUgdGhyZWFk
cyBhdCBhIHNhbWUgdGltZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRp
b25zKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYp
Ci0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fb3B0aW9u
cy5lbmFibGVfbXV4KCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0gTm9uZQotICAgICAgICBzZWxm
Ll9zb2NrZXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IGNsaWVudF9mb3JfdGVz
dGluZy5XZWJTb2NrZXRIYW5kc2hha2Uoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc2VsZi5faW5j
b21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9m
aWx0ZXIgPSBOb25lCi0KLSAgICAgICAgc2VsZi5faXNfYWN0aXZlID0gRmFsc2UKLSAgICAgICAg
c2VsZi5fcmVhZF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2Nv
bmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBzZWxmLl9jb250cm9sX2Js
b2NrcyA9IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMgPSBjb2xsZWN0aW9ucy5kZXF1
ZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhyZWFkaW5n
LkNvbmRpdGlvbigpOwotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzID0ge30KLSAgICAg
ICAgc2VsZi5fdGltZW91dCA9IDIKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9j
bG9zZV9ldmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9z
ZV9tZXNzYWdlID0gTm9uZQotCi0gICAgZGVmIF9wYXJzZV9pbm5lcl9mcmFtZShzZWxmLCBkYXRh
KToKLSAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0ludmFsaWQgZW5jYXBzdWxhdGVkIGZyYW1lIHJlY2VpdmVkJykKLQotICAgICAgICBmaXJz
dF9ieXRlID0gb3JkKGRhdGFbMF0pCi0gICAgICAgIGZpbiA9IChmaXJzdF9ieXRlIDw8IDcpICYg
MQotICAgICAgICByc3YxID0gKGZpcnN0X2J5dGUgPDwgNikgJiAxCi0gICAgICAgIHJzdjIgPSAo
Zmlyc3RfYnl0ZSA8PCA1KSAmIDEKLSAgICAgICAgcnN2MyA9IChmaXJzdF9ieXRlIDw8IDQpICYg
MQotICAgICAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0KLSAgICAgICAgaWYgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyOgotICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX291dGdv
aW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIoCi0gICAgICAgICAgICAgICAgZGF0YVsxOl0pCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXlsb2FkID0gZGF0YVsxOl0KLQotICAgICAgICByZXR1
cm4gX0lubmVyRnJhbWUoZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWQpCi0K
LSAgICBkZWYgX3Byb2Nlc3NfbXV4X2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICBmb3Ig
YmxvY2sgaW4gc2VsZi5fY29udHJvbF9ibG9ja3M6Ci0gICAgICAgICAgICBpZiBibG9jay5vcGNv
ZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICAgICAg
IyBBZGRDaGFubmVsUmVzcG9uc2Ugd2lsbCBiZSBoYW5kbGVkIGluIGFkZF9jaGFubmVsKCkuCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgYmxvY2sub3Bjb2RlID09
IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJ
bnZhbGlkIGZsb3cgY29udHJvbCByZWNlaXZlZCBmb3IgJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdjaGFubmVsIGlkICVkJyAlIGJsb2NrLmNoYW5uZWxfaWQpCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbYmxvY2suY2hhbm5lbF9p
ZF0uc2VuZF9xdW90YSArPSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5zZW5kX3F1
b3RhKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlv
bi5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotICAgICAgICAgICAg
ZWxpZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3RzLmV4dGVuZChbYmxvY2suc2VuZF9xdW90YV0g
KiBibG9jay5zbG90cykKLQotICAgIGRlZiBfZGlzcGF0Y2hfZnJhbWUoc2VsZiwgY2hhbm5lbF9p
ZCwgcGF5bG9hZCk6Ci0gICAgICAgIGlmIGNoYW5uZWxfaWQgPT0gX0NPTlRST0xfQ0hBTk5FTF9J
RDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nr
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9j
a3MgKz0gX3BhcnNlX2NvbnRyb2xfYmxvY2tzKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fcHJvY2Vzc19tdXhfY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgICAgIHNlbGYuX2Nv
bnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ucmVsZWFzZSgpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90
IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBsb2dpY2FsIGZyYW1lIG9uIGNoYW5uZWwgaWQg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLCB3aGljaCBpcyBub3Qg
ZXN0YWJsaXNoZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5u
ZWxfaWQpCi0KLSAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYuX3BhcnNlX2lubmVy
X2ZyYW1lKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tj
aGFubmVsX2lkXS5yZWNlaXZlX3F1b3RhIC09ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
bihpbm5lcl9mcmFtZS5wYXlsb2FkKSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzW2NoYW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgPCAwOgotICAgICAgICAgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ1RoZSBzZXJ2ZXIgdmlvbGF0ZXMgcXVvdGEgb24gJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5uZWwgaWQgJWQnICUgY2hhbm5l
bF9pZCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLnB1dChpbm5lcl9mcmFtZSkKLQotICAgIGRlZiBf
cHJvY2Vzc19jb250cm9sX21lc3NhZ2Uoc2VsZiwgb3Bjb2RlLCBtZXNzYWdlKToKLSAgICAgICAg
IyBQaW5nL1BvbmcgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAgIGlmIG9wY29kZSA9PSBjbGll
bnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgc2VsZi5fcGh5c2ljYWxf
Y29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICAgICAgaWYgc2VsZi5f
aXNfYWN0aXZlOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKAotICAg
ICAgICAgICAgICAgICAgICBjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfTk9STUFMX0NM
T1NVUkUsIHJlYXNvbj0nJykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3RocmVhZC5yZXF1
ZXN0X3N0b3AoKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Ns
b3NlX2V2ZW50OgotICAgICAgICAgICAgICAgIHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xv
c2VfZXZlbnQuc2V0KCkKLQotICAgIGRlZiBfbm90aWZ5X3JlYWRlcl9kb25lKHNlbGYpOgotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlYWQgdGhyZWFkIHRlcm1pbmF0ZWQuJykKLSAgICAg
ICAgc2VsZi5jbG9zZV9zb2NrZXQoKQotCi0gICAgZGVmIF9hc3NlcnRfY2hhbm5lbF9zbG90X2F2
YWlsYWJsZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fY29udHJvbF9i
bG9ja3NfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2NoYW5u
ZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICAgICAgIyBXYWl0IG9uY2UKLSAgICAgICAgICAg
ICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2FpdCh0aW1lb3V0PXNlbGYuX3Rp
bWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nr
c19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgaWYgbGVuKHNlbGYuX2NoYW5uZWxfc2xv
dHMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZhaWxlZCB0byByZWNlaXZl
IE5ld0NoYW5uZWxTbG90JykKLQotICAgIGRlZiBfYXNzZXJ0X3NlbmRfcXVvdGFfYXZhaWxhYmxl
KHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2xv
Z2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9PSAwOgotICAgICAgICAgICAg
ICAgICMgV2FpdCBvbmNlCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19j
b25kaXRpb24ud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQot
ICAgICAgICBpZiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnNlbmRfcXVvdGEg
PT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJlY2VpdmUgRmxv
d0NvbnRyb2wgZm9yIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFubmVsX2lkKQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Nv
Y2tldCA9IGNsaWVudF9mb3JfdGVzdGluZy5jb25uZWN0X3NvY2tldF93aXRoX3JldHJ5KAotICAg
ICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnNvY2tldF90aW1lb3V0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykK
LQotICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNlbGYuX3NvY2tldCkKLSAgICAg
ICAgc2VsZi5fc3RyZWFtID0gY2xpZW50X2Zvcl90ZXN0aW5nLldlYlNvY2tldFN0cmVhbSgKLSAg
ICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQotCi0gICAgICAgIHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHNbX0RFRkFVTFRfQ0hBTk5FTF9JRF0gPSBfTG9naWNhbENoYW5uZWxE
YXRhKCkKLQotICAgICAgICBzZWxmLl9yZWFkX3RocmVhZCA9IF9NdXhSZWFkZXJUaHJlYWQoc2Vs
ZikKLSAgICAgICAgc2VsZi5fcmVhZF90aHJlYWQuc3RhcnQoKQotCi0gICAgICAgIHNlbGYuX2Fz
c2VydF9jaGFubmVsX3Nsb3RfYXZhaWxhYmxlKCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3NlbmRf
cXVvdGFfYXZhaWxhYmxlKF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0KLSAgICAgICAgc2VsZi5faXNf
YWN0aXZlID0gVHJ1ZQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3Rh
Ymxpc2hlZCcpCi0KLSAgICBkZWYgYWRkX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCwgb3B0aW9u
cyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ011eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAgICAgaWYgY2hhbm5l
bF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlIGNoYW5uZWxfaWQpCi0KLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYuX2NoYW5uZWxfc2xvdHMucG9w
bGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ05vIGNoYW5uZWwgc2xvdHM6ICVyJyAlIGUpCi0KLSAgICAgICAgIyBDcmVh
dGUgQWRkQ2hhbm5lbCByZXF1ZXN0Ci0gICAgICAgIHJlcXVlc3RfbGluZSA9ICdHRVQgJXMgSFRU
UC8xLjFcclxuJyAlIG9wdGlvbnMucmVzb3VyY2UKLSAgICAgICAgZmllbGRzID0gW10KLSAgICAg
ICAgaWYgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuREVGQVVMVF9Q
T1JUOgotICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnSG9zdDogJXNcclxuJyAlIG9wdGlvbnMu
c2VydmVyX2hvc3QubG93ZXIoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpZWxkcy5h
cHBlbmQoJ0hvc3Q6ICVzOiVkXHJcbicgJSAob3B0aW9ucy5zZXJ2ZXJfaG9zdC5sb3dlcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNl
cnZlcl9wb3J0KSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnT3JpZ2luOiAlc1xyXG4nICUgb3B0
aW9ucy5vcmlnaW4ubG93ZXIoKSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnQ29ubmVjdGlvbjog
VXBncmFkZVxyXG4nKQotCi0gICAgICAgIGlmIGxlbihvcHRpb25zLmV4dGVuc2lvbnMpID4gMDoK
LSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogJXNc
clxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihvcHRpb25zLmV4dGVu
c2lvbnMpKQotCi0gICAgICAgIGhhbmRzaGFrZSA9IHJlcXVlc3RfbGluZSArICcnLmpvaW4oZmll
bGRzKSArICdcclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRf
Y2hhbm5lbF9yZXF1ZXN0KAotICAgICAgICAgICAgY2hhbm5lbF9pZCwgaGFuZHNoYWtlKQotICAg
ICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKF9DT05UUk9MX0NIQU5ORUxfSUQpICsg
YWRkX2NoYW5uZWxfcmVxdWVzdAotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5
bG9hZCkKLQotICAgICAgICAjIFdhaXQgQWRkQ2hhbm5lbFJlc3BvbnNlCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnV2FpdGluZyBBZGRDaGFubmVsUmVzcG9uc2UgZm9yIHRoZSByZXF1ZXN0
Li4uJykKLSAgICAgICAgcmVzcG9uc2UgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgZm9yIGJsb2NrIGluIHNlbGYuX2NvbnRyb2xfYmxv
Y2tzOgotICAgICAgICAgICAgICAgICAgICBpZiBibG9jay5vcGNvZGUgIT0gX01VWF9PUENPREVf
QUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgICAgICAgICBpZiBibG9jay5jaGFubmVsX2lkID09IGNoYW5uZWxfaWQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGJsb2NrCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrcy5yZW1vdmUocmVzcG9uc2UpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlOgotICAgICAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tz
X2NvbmRpdGlvbi53YWl0KHNlbGYuX3RpbWVvdXQpCi0gICAgICAgICAgICAgICAgaWYgbm90IHNl
bGYuX2lzX2FjdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdBZGRD
aGFubmVsUmVxdWVzdCB0aW1lZCBvdXQnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAg
c2VsZi5fY29udHJvbF9ibG9ja3NfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgICMgVmFs
aWRhdGUgQWRkQ2hhbm5lbFJlc3BvbnNlCi0gICAgICAgIGlmIHJlc3BvbnNlLnJlamVjdGVkOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUaGUgc2VydmVyIHJlamVjdGVkIEFkZENoYW5u
ZWxSZXF1ZXN0JykKLQotICAgICAgICBmaWVsZHMgPSBfcGFyc2VfaGFuZHNoYWtlX3Jlc3BvbnNl
KHJlc3BvbnNlLmVuY29kZWRfaGFuZHNoYWtlKQotCi0gICAgICAgICMgU2hvdWxkIHdlIHJlamVj
dCB3aGVuIFVwZ3JhZGUsIENvbm5lY3Rpb24sIG9yIFNlYy1XZWJTb2NrZXQtQWNjZXB0Ci0gICAg
ICAgICMgaGVhZGVycyBleGlzdD8KLQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2Nv
bmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVs
X2lkXSA9IF9Mb2dpY2FsQ2hhbm5lbERhdGEoKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzW2NoYW5uZWxfaWRdLnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgIHNlbGYuX2xv
Z2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnTG9naWNhbCBjaGFubmVsICVkIGVzdGFibGlzaGVkJyAlIGNoYW5uZWxfaWQpCi0K
LSAgICBkZWYgX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoc2VsZiwgY2hhbm5lbF9p
ZCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ011eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAgICAgaWYgbm90IGNo
YW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignTG9naWNhbCBjaGFubmVsICVkIGlzIG5vdCBlc3RhYmxpc2hlZC4nKQotCi0gICAg
ZGVmIGRyb3BfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgIyBUT0RPKGJhc2hp
KTogSW1wbGVtZW50Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZW5kX2Zsb3dfY29udHJvbChz
ZWxmLCBjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgICAgIHNlbGYuX2NoZWNr
X2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLSAgICAgICAgZmxvd19jb250
cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEp
Ci0gICAgICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NPTlRST0xfQ0hBTk5FTF9J
RCkgKyBmbG93X2NvbnRyb2wKLSAgICAgICAgIyBSZXBsZW5pc2ggcmVjZWl2ZSBxdW90YQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5h
Y3F1aXJlKCkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0u
cmVjZWl2ZV9xdW90YSArPSAoCi0gICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGEpCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5yZWxlYXNlKCkKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KHBheWxvYWQp
Ci0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIGNoYW5uZWxfaWQsIG1lc3NhZ2UsIGVuZD1U
cnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxf
aXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAg
Zmlyc3RfYnl0ZSA9IChlbmQgPDwgNykgfCBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFS
WQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmlyc3RfYnl0ZSA9IChlbmQgPDwgNykgfCBj
bGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNz
YWdlLmVuY29kZSgndXRmLTgnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhIDwgbGVuKG1lc3NhZ2UpOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2VuZCBxdW90YSB2aW9sYXRpb246ICVk
IDwgJWQnICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG1l
c3NhZ2UpKSkKLQotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lk
XS5zZW5kX3F1b3RhIC09IGxlbihtZXNzYWdlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgIHBh
eWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKyBjaHIoZmlyc3RfYnl0ZSkg
KyBtZXNzYWdlCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFyeShwYXlsb2FkKQotCi0g
ICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYsIGNoYW5uZWxfaWQsIHBheWxvYWQsIGJpbmFyeT1G
YWxzZSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hh
bm5lbF9pZCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0ucXVldWUuZ2V0KAotICAgICAgICAgICAgICAg
IHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5IGFzIGU6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nhbm5vdCByZWNlaXZlIG1lc3NhZ2UgZnJv
bSBjaGFubmVsIGlkICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9p
ZCkKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBvcGNvZGUgPSBjbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Bjb2Rl
ID0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUCi0KLSAgICAgICAgaWYgaW5uZXJfZnJh
bWUub3Bjb2RlICE9IG9wY29kZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBvcGNvZGUgcmVjZWl2ZWQgKCVyICE9ICVyKScgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChleHBlY3RlZF9vcGNvZGUsIGlubmVyX2ZyYW1lLm9wY29kZSkpCi0KLSAgICAgICAg
aWYgaW5uZXJfZnJhbWUucGF5bG9hZCAhPSBwYXlsb2FkOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdVbmV4cGVjdGVkIHBheWxvYWQgcmVjZWl2ZWQnKQotCi0gICAgZGVmIHNlbmRfY2xv
c2Uoc2VsZiwgY2hhbm5lbF9pZCwgY29kZT1Ob25lLCByZWFzb249JycpOgotICAgICAgICBzZWxm
Ll9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAgICAgICAg
aWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgn
LCBjb2RlKSArIHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGJvZHkgPSAnJwotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAoMSA8PCA3KSB8IGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfQ0xPU0UKLSAgICAgICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5l
bF9pZChjaGFubmVsX2lkKSArIGNocihmaXJzdF9ieXRlKSArIGJvZHkKLSAgICAgICAgc2VsZi5f
c3RyZWFtLnNlbmRfYmluYXJ5KHBheWxvYWQpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xv
c2Uoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5l
bF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbm5l
cl9mcmFtZSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0ucXVldWUuZ2V0KAot
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZXhjZXB0IFF1
ZXVlLkVtcHR5IGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nhbm5vdCByZWNl
aXZlIG1lc3NhZ2UgZnJvbSBjaGFubmVsIGlkICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbm5lbF9pZCkKLSAgICAgICAgaWYgaW5uZXJfZnJhbWUub3Bjb2RlICE9IGNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0RpZG5cJ3QgcmVjZWl2ZSBjbG9zZSBmcmFtZScpCi0KLSAgICBkZWYgc2VuZF9waHlzaWNhbF9j
b25uZWN0aW9uX2Nsb3NlKHNlbGYsIGNvZGU9Tm9uZSwgcmVhc29uPScnKToKLSAgICAgICAgc2Vs
Zi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCi0g
ICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLQotICAgICMgVGhp
cyBtZXRob2QgY2FuIGJlIHVzZWQgb25seSBhZnRlciBjYWxsaW5nCi0gICAgIyBzZW5kX3BoeXNp
Y2FsX2Nvbm5lY3Rpb25fY2xvc2UoKS4KLSAgICBkZWYgYXNzZXJ0X3BoeXNpY2FsX2Nvbm5lY3Rp
b25fcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgc2VsZiwgY29kZT1jbGllbnRfZm9yX3Rlc3Rpbmcu
U1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9waHlzaWNh
bF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50LndhaXQodGltZW91dD1zZWxmLl90aW1lb3V0KQotICAg
ICAgICBpZiAobm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQuaXNTZXQo
KSBvcgotICAgICAgICAgICAgbm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfbWVz
c2FnZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9z
aW5nIGhhbmRzaGFrZScpCi0KLSAgICBkZWYgY2xvc2Vfc29ja2V0KHNlbGYpOgotICAgICAgICBz
ZWxmLl9pc19hY3RpdmUgPSBGYWxzZQotICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3J1bl9hbGwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBhNWQ4N2Q4MzgyLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3J1bl9hbGwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlJ1biBhbGwg
dGVzdHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotCi1UaGlzIHN1aXRlIGlzIGV4cGVjdGVkIHRv
IGJlIHJ1biB1bmRlciBweXdlYnNvY2tldCdzIHNyYyBkaXJlY3RvcnksIGkuZS4gdGhlCi1kaXJl
Y3RvcnkgY29udGFpbmluZyBtb2RfcHl3ZWJzb2NrZXQsIHRlc3QsIGV0Yy4KLQotVG8gY2hhbmdl
IGxvZ2dpbiBsZXZlbCwgcGxlYXNlIHNwZWNpZnkgLS1sb2ctbGV2ZWwgb3B0aW9uLgotICAgIHB5
dGhvbiB0ZXN0L3J1bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVnCi0KLVRvIHBhc3MgYW55IG9w
dGlvbiB0byB1bml0dGVzdCBtb2R1bGUsIHBsZWFzZSBzcGVjaWZ5IG9wdGlvbnMgYWZ0ZXIgJy0t
Jy4gRm9yCi1leGFtcGxlLCBydW4gdGhpcyBmb3IgbWFraW5nIHRoZSB0ZXN0IHJ1bm5lciB2ZXJi
b3NlLgotICAgIHB5dGhvbiB0ZXN0L3J1bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVnIC0tIC12
Ci0iIiIKLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWlt
cG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX1RFU1RfTU9EVUxFX1BB
VFRFUk4gPSByZS5jb21waWxlKHInXih0ZXN0Xy4rKVwucHkkJykKLQotCi1kZWYgX2xpc3RfdGVz
dF9tb2R1bGVzKGRpcmVjdG9yeSk6Ci0gICAgbW9kdWxlX25hbWVzID0gW10KLSAgICBmb3IgZmls
ZW5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgotICAgICAgICBtYXRjaCA9IF9URVNUX01P
RFVMRV9QQVRURVJOLnNlYXJjaChmaWxlbmFtZSkKLSAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAg
ICAgICBtb2R1bGVfbmFtZXMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQotICAgIHJldHVybiBtb2R1
bGVfbmFtZXMKLQotCi1kZWYgX3N1aXRlKCk6Ci0gICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExv
YWRlcigpCi0gICAgcmV0dXJuIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoCi0gICAgICAgICAg
ICBfbGlzdF90ZXN0X21vZHVsZXMob3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18p
WzBdLCAnLicpKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHBhcnNlciA9
IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxl
dmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuaW5nJywKLSAgICAgICAgICAgICAgICAg
ICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3In
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddKQotICAgIG9wdGlv
bnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZygK
LSAgICAgICAgICAgIGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVs
LnVwcGVyKCkpLAotICAgICAgICAgICAgZm9ybWF0PSclKGxldmVsbmFtZSlzICUoYXNjdGltZSlz
ICcKLSAgICAgICAgICAgICAgICAgICAnJShmaWxlbmFtZSlzOiUobGluZW5vKWRdICcKLSAgICAg
ICAgICAgICAgICAgICAnJShtZXNzYWdlKXMnLAotICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06
JVMnKQotICAgIHVuaXR0ZXN0Lm1haW4oZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5h
cmd2WzBdXSArIGFyZ3MpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3Qvc2V0X3N5c19wYXRoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3NldF9zeXNfcGF0aC5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjNmRiOWVhNGQzLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3NldF9zeXNfcGF0aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK
LSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvbmZpZ3VyYXRpb24gZm9yIHRlc3RpbmcuCi0KLVRl
c3QgZmlsZXMgc2hvdWxkIGltcG9ydCB0aGlzIG1vZHVsZSBiZWZvcmUgbW9kX3B5d2Vic29ja2V0
LgotIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLQotIyBBZGQgdGhlIHBhcmVudCBk
aXJlY3RvcnkgdG8gc3lzLnBhdGggdG8gZW5hYmxlIGltcG9ydGluZyBtb2RfcHl3ZWJzb2NrZXQu
Ci1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18p
WzBdLCAnLi4nKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNmQ2MDU2MDljOC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMg
Zm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAot
Ci1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5
d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNo
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIHRlc3QgaW1wb3J0
IG1vY2sKLQotCi1fVEVTVF9IQU5ETEVSU19ESVIgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9z
LnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnLCAnaGFuZGxlcnMnKQotCi1fVEVT
VF9IQU5ETEVSU19TVUJfRElSID0gb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1
YicpCi0KLQotY2xhc3MgRGlzcGF0Y2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIi
IkEgdW5pdHRlc3QgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X25vcm1h
bGl6ZV9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0
aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBk
aXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdcXGFcXGInKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcs
ICcvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRo
KCcvYS9jLy4uL2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgo
J2FiYycpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
YXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQotCi0gICAgZGVmIHRlc3RfY29udmVydGVyKHNl
bGYpOgotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3Vy
Y2VfY29udmVydGVyKCcvYS9iJykKLSAgICAgICAgIyBQeXRob24gYnVpbHQgYnkgTVNDIGluc2Vy
dHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCkuCi0gICAgICAgICMgQ29u
dmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNpbmcgcmVhbHBhdGgoKSBh
bmQgdXNlcwotICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRyaXZlIG5hbWUgdG8gdmVy
aWZ5IHRoZSBwcmVmaXguCi0gICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKCcvJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2Iv
aF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2MvaCcsIGNvbnZlcnRlcihv
c19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRl
ciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJ2EvYicpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9ub3JtYWxp
emVfcGF0aCgKLSAgICAgICAgICAgICdhL2IvaF93c2gucHknKSkpCi0KLSAgICAgICAgY29udmVy
dGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8v
LycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAn
YS9iL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVy
KGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgKLSAgICAgICAgICAgICcvYS9iLy4uL2IvaF93c2gu
cHknKSkpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jl
c291cmNlX2NvbnZlcnRlcigKLSAgICAgICAgICAgICcvYS8uLi9hL2IvLi4vYi8nKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5w
eScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNv
dXJjZV9jb252ZXJ0ZXIocidcYVxiJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBj
b252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyByJ2EvYi9oX3dzaC5weScpKQotCi0gICAg
ZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmlsZV9wYXRocyhzZWxmKToKLSAgICAgICAgcGF0
aHMgPSBsaXN0KAotICAgICAgICAgICAgZGlzcGF0Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVf
cGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKLSAgICAgICAgcGF0aHMuc29ydCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhzKSkKLSAgICAgICAgZXhwZWN0ZWRfcGF0aHMg
PSBbCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2Fi
b3J0X2J5X3VzZXJfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNU
X0hBTkRMRVJTX0RJUiwgJ2JsYW5rX3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9zLnBhdGgu
am9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3NoLnB5JyksCi0gICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5JyksCi0g
ICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdu
b25fY2FsbGFibGVfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNU
X0hBTkRMRVJTX0RJUiwgJ3N1YicsICdwbGFpbl93c2gucHknKSwKLSAgICAgICAgICAgICAgICBv
cy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCi0gICAgICAgICAgICAg
ICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5JyksCi0gICAgICAgICAg
ICAgICAgXQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfcGF0
aHMsIHBhdGhzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVh
bCkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9oYW5kbGVyX2ZpbGUoc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24s
IGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoCi0gICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2gu
X3NvdXJjZV9oYW5kbGVyX2ZpbGUsICdkZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygK
LSAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBkaXNwYXRjaC5fc291cmNl
X2hhbmRsZXJfZmlsZSwgJzEvMCcpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwYXRjaC5f
c291cmNlX2hhbmRsZXJfZmlsZSgKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOnBhc3NcbicKLSAgICAgICAgICAgICAgICAnZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KTpwYXNzXG4nKSkKLQotICAgIGRlZiB0ZXN0
X3NvdXJjZV93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICB3YXJuaW5ncyA9IGRp
c3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgd2FybmluZ3Muc29ydCgpCi0gICAg
ICAgIGV4cGVjdGVkX3dhcm5pbmdzID0gWwotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxw
YXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfRElS
LCAnYmxhbmtfd3NoLnB5JykpICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgKG9zLnBh
dGgucmVhbHBhdGgob3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5E
TEVSU19ESVIsICdzdWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScpKSArCi0gICAgICAgICAgICAg
ICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBjYWxsYWJsZS4nKSwK
LSAgICAgICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oCi0gICAgICAg
ICAgICAgICAgICAgIF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICd3cm9uZ19oYW5kc2hha2Vf
c2lnX3dzaC5weScpKSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJl
YWxwYXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNf
RElSLCAnc3ViJywgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSkgKwotICAgICAgICAgICAg
ICAgICAnOiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgbm90IGRlZmluZWQuJyksCi0gICAg
ICAgICAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg0LCBsZW4od2FybmluZ3Mp
KQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfd2FybmluZ3Ms
IHdhcm5pbmdzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBhY3R1
YWwpCi0KLSAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGRp
c3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkK
LSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0Lndz
X3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCi0gICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0g
J2h0dHA6Ly9leGFtcGxlLmNvbScKLSAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgotCi0gICAgICAgIHJlcXVl
c3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0gICAgICAg
ICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNlcHRpb24gd2l0aCA0
MDMgc3RhdHVzJykKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQwMywgZS5zdGF0dXMpCi0gICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBl
Y3RlZCBleGNlcHRpb246ICVyJyAlIGUpCi0KLSAgICBkZWYgdGVzdF9hYm9ydF9leHRyYV9oYW5k
c2hha2Uoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9U
RVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVl
c3QoKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9hYm9ydF9ieV91c2VyJwotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Us
IHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhKHNlbGYpOgotICAgICAgICBk
aXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUp
Ci0KLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1v
Y2tDb25uKCdceGZmXHgwMCcpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmln
aW5fY2hlY2snCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDEnCi0gICAgICAgIGRp
c3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgL29yaWdpbl9jaGVjaywgcDEnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcmVxdWVz
dCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCdceGZmXHgwMCcp
KQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCi0gICAgICAgIHJl
cXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0
YShyZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlz
IGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
XHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25u
ZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVz
b3VyY2UgPSAnL3N1Yi9wbGFpbj8nCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
Ci0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj8s
IE5vbmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAg
ICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCdc
eGZmXHgwMCcpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4/cT12
JwotICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQotICAgICAgICBkaXNwYXRjaGVy
LnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3ViL3Bs
YWluX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/cT12LCBOb25lJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICdceGZmXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfdHJhbnNmZXJf
ZGF0YV9ub19oYW5kbGVyKHNlbGYpOgotICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlz
cGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIGZvciByZXNvdXJjZSBp
biBbJy9ibGFuaycsICcvc3ViL25vbl9jYWxsYWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQnLCAnL2RvZXMvbm90L2V4aXN0J106Ci0gICAgICAg
ICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4o
JycpKQotICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9IHJlc291cmNlCi0gICAgICAg
ICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJwotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICAgICAg
ICAgIHNlbGYuZmFpbCgpCi0gICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3Moc3RyKGUpLmZpbmQo
J05vIGhhbmRsZXInKSAhPSAtMSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAg
ICAgICAgICAgICAgc2VsZi5mYWlsKCkKLQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfaGFu
ZGxlcl9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNw
YXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2su
TW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSA9ICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicKLSAgICAgICAgcmVx
dWVzdC53c19wcm90b2NvbCA9ICdwMycKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxmLmZhaWwoKQotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3Mo
c3RyKGUpLmZpbmQoJ0ludGVudGlvbmFsJykgIT0gLTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1VuZXhwZWN0ZWQgZXhjZXB0aW9uOiAlcycgJSBlKQotCi0gICAgZGVmIHRlc3RfYWJv
cnRfdHJhbnNmZXJfZGF0YShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gbW9j
ay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5
X3VzZXInCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVy
X2RhdGEsIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9zY2FuX2RpcihzZWxmKToKLSAgICAgICAg
ZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCi0g
ICAgICAgIHNlbGYuZmFpbFVubGVzcygnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAgICcvc3ViL2V4
Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAg
IHNlbGYuZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXAp
Ci0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXIoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNw
YXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgX1RFU1RfSEFORExFUlNfU1VCX0RJ
UikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9t
YXApKQotICAgICAgICBzZWxmLmZhaWxJZignL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAgICcvc3Vi
L2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAg
ICAgIHNlbGYuZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9t
YXApCi0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9vdChzZWxmKToKLSAgICAgICAg
ZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfU1VCX0RJUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfU1VCX0RJUikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApKQot
ICAgICAgICBzZWxmLmZhaWxJZignL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0
ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbElmKCcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcicg
aW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbElmKCcvc3ViL3Bs
YWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNz
KCcvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAg
ICAgICAgc2VsZi5mYWlsVW5sZXNzKCcvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFw
KQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9kaXJfbXVzdF91bmRlcl9yb290KHNlbGYpOgotICAgICAg
ICBkaXNwYXRjaC5EaXNwYXRjaGVyKCdhL2InLCAnYS9iL2MnKSAgIyBPSwotICAgICAgICBkaXNw
YXRjaC5EaXNwYXRjaGVyKCdhL2IvLy8nLCAnYS9iJykgICMgT0sKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIsICdhL2IvYycsICdhL2InKQotCi0gICAgZGVmIHRl
c3RfcmVzb3VyY2VfcGF0aF9hbGlhcyhzZWxmKToKLSAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICBkaXNwLmFkZF9yZXNv
dXJjZV9wYXRoX2FsaWFzKCcvJywgJy9vcmlnaW5fY2hlY2snKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDUsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCi0gICAgICAgIHNlbGYuZmFp
bFVubGVzcygnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAg
ICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFu
c2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVz
cygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYu
ZmFpbFVubGVzcygnLycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzLCAnL2FsaWFzJywgJy9ub3Qt
ZXhpc3QnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFp
bigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9l
bmR0b2VuZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2VuZHRvZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzNjgwZWMyZWJhNjcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF9lbmR0b2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkVuZC10by1lbmQgdGVz
dHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5IGJ5IGRlZmF1bHQuIFlvdQot
Y2FuIGFsc28gdGVzdCBtb2RfcHl3ZWJzb2NrZXQgaG9zdGVkIG9uIGFuIEFwYWNoZSBzZXJ2ZXIg
Ynkgc2V0dGluZwotX3VzZV9leHRlcm5hbF9zZXJ2ZXIgdG8gVHJ1ZSBhbmQgbW9kaWZ5aW5nIF9l
eHRlcm5hbF9zZXJ2ZXJfcG9ydCB0byBwb2ludCB0bwotdGhlIHBvcnQgb24gd2hpY2ggdGhlIEFw
YWNoZSBzZXJ2ZXIgaXMgcnVubmluZy4KLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3MKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBv
cnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3Bh
dGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgot
Ci1mcm9tIHRlc3QgaW1wb3J0IGNsaWVudF9mb3JfdGVzdGluZwotZnJvbSB0ZXN0IGltcG9ydCBt
dXhfY2xpZW50X2Zvcl90ZXN0aW5nCi0KLQotIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0
aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xvc2luZyBoYW5kc2hha2UKLV9HT09EQllFX01FU1NB
R0UgPSAnR29vZGJ5ZScKLQotX1NFUlZFUl9XQVJNVVBfSU5fU0VDID0gMC4yCi0KLSMgSWYgeW91
IHdhbnQgdG8gdXNlIGV4dGVybmFsIHNlcnZlciB0byBydW4gZW5kIHRvIGVuZCB0ZXN0cywgc2V0
IGZvbGxvd2luZwotIyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4KLV91c2VfZXh0ZXJuYWxfc2VydmVy
ID0gRmFsc2UKLV9leHRlcm5hbF9zZXJ2ZXJfcG9ydCA9IDAKLQotCi0jIFRlc3QgYm9keSBmdW5j
dGlvbnMKLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmUoY2xpZW50KToKLSAgICBjbGllbnQuY29u
bmVjdCgpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKLSAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoJ3Rlc3QnKQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ2hlbGxvd29ybGQn
KQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgnaGVsbG93b3JsZCcpCi0KLSAgICBjbGllbnQu
c2VuZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgIGNs
aWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19wcm9j
ZWR1cmVfd2l0aF9iaW5hcnkoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICBj
bGllbnQuc2VuZF9tZXNzYWdlKCdiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKLSAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5zZW5kX21lc3Nh
Z2UoJ1x4MDBceDgwXHhmZVx4ZmZceDAwXHg4MCcsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZSgnXHgwMFx4ODBceGZlXHhmZlx4MDBceDgwJywgYmluYXJ5PVRydWUpCi0K
LSAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3Nl
KCkKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNo
b19jaGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKGNsaWVudCk6Ci0gICAgY2xpZW50LmNvbm5l
Y3QoKQotCi0gICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCi0gICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlKCd0ZXN0JykKLQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoX0dPT0RCWUVfTUVT
U0FHRSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoX0dPT0RCWUVfTUVTU0FHRSkKLQotICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoKQot
Ci0gICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCi0KLQotZGVmIF9lY2hvX2No
ZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbihjbGllbnQsIGNvZGUsIHJlYXNvbik6
Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoY29kZSwgcmVh
c29uKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjb2RlLCByZWFzb24pCi0KLSAg
ICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX3VubWFza2VkX2Zy
YW1lX2NoZWNrX3Byb2NlZHVyZShjbGllbnQpOgotICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAg
IGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rlc3QnLCBtYXNrPUZhbHNlKQotICAgIGNsaWVudC5hc3Nl
cnRfcmVjZWl2ZV9jbG9zZShjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1BST1RPQ09MX0VSUk9S
LCAnJykKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBf
bXV4X2VjaG9fY2hlY2tfcHJvY2VkdXJlKG11eF9jbGllbnQpOgotICAgIG11eF9jbGllbnQuY29u
bmVjdCgpCi0gICAgbXV4X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgxLCAxMDI0KQotCi0gICAg
bG9naWNhbF9jaGFubmVsX29wdGlvbnMgPSBjbGllbnRfZm9yX3Rlc3RpbmcuQ2xpZW50T3B0aW9u
cygpCi0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMuc2VydmVyX2hvc3QgPSAnbG9jYWxob3N0
JwotICAgIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zLnNlcnZlcl9wb3J0ID0gODAKLSAgICBsb2dp
Y2FsX2NoYW5uZWxfb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKLSAgICBsb2dp
Y2FsX2NoYW5uZWxfb3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKLSAgICBtdXhfY2xpZW50LmFk
ZF9jaGFubmVsKDIsIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zKQotICAgIG11eF9jbGllbnQuc2Vu
ZF9mbG93X2NvbnRyb2woMiwgMTAyNCkKLQotICAgIG11eF9jbGllbnQuc2VuZF9tZXNzYWdlKDIs
ICd0ZXN0JykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDIsICd0ZXN0JykKLQotICAg
IG11eF9jbGllbnQuYWRkX2NoYW5uZWwoMywgbG9naWNhbF9jaGFubmVsX29wdGlvbnMpCi0gICAg
bXV4X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgzLCAxMDI0KQotCi0gICAgbXV4X2NsaWVudC5z
ZW5kX21lc3NhZ2UoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xpZW50LnNlbmRfbWVzc2FnZSgzLCAn
d29ybGQnKQotICAgIG11eF9jbGllbnQuYXNzZXJ0X3JlY2VpdmUoMiwgJ2hlbGxvJykKLSAgICBt
dXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDMsICd3b3JsZCcpCi0KLSAgICAjIERvbid0IHNlbmQg
Y2xvc2UgbWVzc2FnZSBvbiBjaGFubmVsIGlkIDEgc28gdGhhdCBzZXJ2ZXItaW5pdGlhdGVkCi0g
ICAgIyBjbG9zaW5nIGhhbmRzaGFrZSB3b24ndCBvY2N1ci4KLSAgICBtdXhfY2xpZW50LnNlbmRf
Y2xvc2UoMikKLSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2UoMykKLSAgICBtdXhfY2xpZW50LmFz
c2VydF9yZWNlaXZlX2Nsb3NlKDIpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9z
ZSgzKQotCi0gICAgbXV4X2NsaWVudC5zZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2UoKQot
ICAgIG11eF9jbGllbnQuYXNzZXJ0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgp
Ci0KLQotY2xhc3MgRW5kVG9FbmRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIi
QmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBz
dGFuZGFsb25lCi0gICAgc2VydmVyIGFzIGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBp
dCB1c2luZyB0aGUgY2xpZW50X2Zvcl90ZXN0aW5nCi0gICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYg
dGhlIHNlcnZlciBiZWhhdmVzIGNvcnJlY3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKLSAgICBo
YW5kc2hha2UgYW5kIGZyYW1lcyBvdmVyIGEgVENQIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAg
ICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IE5vbmUKLSAg
ICAgICAgc2VsZi50b3BfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18p
WzBdLCAnLi4nKQotICAgICAgICBvcy5wdXRlbnYoJ1BZVEhPTlBBVEgnLCBvcy5wYXRoLnBhdGhz
ZXAuam9pbihzeXMucGF0aCkpCi0gICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kID0gb3Mu
cGF0aC5qb2luKAotICAgICAgICAgICAgc2VsZi50b3BfZGlyLCAnbW9kX3B5d2Vic29ja2V0Jywg
J3N0YW5kYWxvbmUucHknKQotICAgICAgICBzZWxmLmRvY3VtZW50X3Jvb3QgPSBvcy5wYXRoLmpv
aW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScpCi0gICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkK
LSAgICAgICAgcy5iaW5kKCgnbG9jYWxob3N0JywgMCkpCi0gICAgICAgIChfLCBzZWxmLnRlc3Rf
cG9ydCkgPSBzLmdldHNvY2tuYW1lKCkKLSAgICAgICAgcy5jbG9zZSgpCi0KLSAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IGNsaWVudF9mb3JfdGVzdGluZy5DbGllbnRPcHRpb25zKCkKLSAgICAgICAg
c2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCA9ICdsb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29w
dGlvbnMub3JpZ2luID0gJ2h0dHA6Ly9sb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UgPSAnL2VjaG8nCi0KLSAgICAgICAgIyBUT0RPKHRveW9zaGltKTogRWxpbWluYXRl
IGxhdW5jaGluZyBhIHN0YW5kYWxvbmUgc2VydmVyIG9uIHVzaW5nCi0gICAgICAgICMgZXh0ZXJu
YWwgc2VydmVyLgotCi0gICAgICAgIGlmIF91c2VfZXh0ZXJuYWxfc2VydmVyOgotICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IF9leHRlcm5hbF9zZXJ2ZXJfcG9ydAotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IHNlbGYu
dGVzdF9wb3J0Ci0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBVc2UgdGVhckRvd24gdG8ga2lsbCB0
aGUgc2VydmVyLgotCi0gICAgZGVmIF9ydW5fcHl0aG9uX2NvbW1hbmQoc2VsZiwgY29tbWFuZGxp
bmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzdWJwcm9jZXNz
LlBvcGVuKFtzeXMuZXhlY3V0YWJsZV0gKyBjb21tYW5kbGluZSwgY2xvc2VfZmRzPVRydWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQsIHN0ZGVycj1zdGRl
cnIpCi0KLSAgICBkZWYgX3J1bl9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBbc2VsZi5z
dGFuZGFsb25lX2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgJy1IJywgJ2xvY2FsaG9zdCcsCi0g
ICAgICAgICAgICAgICAgJy1WJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAgJy1wJywg
c3RyKHNlbGYudGVzdF9wb3J0KSwKLSAgICAgICAgICAgICAgICAnLVAnLCBzdHIoc2VsZi50ZXN0
X3BvcnQpLAotICAgICAgICAgICAgICAgICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdF0KLQotICAg
ICAgICAjIEluaGVyaXQgdGhlIGxldmVsIHNldCB0byB0aGUgcm9vdCBsb2dnZXIgYnkgdGVzdCBy
dW5uZXIuCi0gICAgICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgICAg
ICBsb2dfbGV2ZWwgPSByb290X2xvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpCi0gICAgICAgIGlm
IGxvZ19sZXZlbCAhPSBsb2dnaW5nLk5PVFNFVDoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWxvZy1sZXZlbCcpCi0gICAgICAgICAgICBhcmdzLmFwcGVuZChsb2dnaW5nLmdldExldmVsTmFt
ZShsb2dfbGV2ZWwpLmxvd2VyKCkpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9weXRob25f
Y29tbWFuZChhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZGVycj1zZWxmLnNlcnZlcl9zdGRlcnIpCi0KLSAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBw
aWQpOgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4nKToKLSAg
ICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbCgKLSAgICAgICAgICAgICAgICAoJ3Rhc2traWxsLmV4
ZScsICcvZicsICcvcGlkJywgc3RyKHBpZCkpLCBjbG9zZV9mZHM9VHJ1ZSkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKLQotCi1jbGFzcyBF
bmRUb0VuZEh5QmlUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToK
LSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9ydW5fdGVz
dF93aXRoX2NsaWVudF9vcHRpb25zKHNlbGYsIHRlc3RfZnVuY3Rpb24sIG9wdGlvbnMpOgotICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgIyBUT0RPKHR5b3NoaW5vKTogYWRkIHNvbWUgbG9naWMgdG8gcG9sbCB0aGUgc2VydmVyIHVu
dGlsIGl0Ci0gICAgICAgICAgICAjIGJlY29tZXMgcmVhZHkKLSAgICAgICAgICAgIHRpbWUuc2xl
ZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRf
Zm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQotICAgICAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9y
dW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0
aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25zKQotCi0gICAgZGVm
IF9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGlt
ZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuZW5hYmxlX2RlZmxhdGVfZnJhbWUoKQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zv
cl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRl
ZiBfcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgc2VsZiwgb2ZmZXIs
IHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBzZWxm
Ll9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VS
VkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9u
cyArPSBvZmZlcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2Rl
ZmxhdGUgPSByZXNwb25zZV9jaGVja2VyCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9y
X3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25zKQotCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAgICAgaWYg
dGVzdF9mdW5jdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9mdW5j
dGlvbihjbGllbnQpCi0KLSAgICAgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25f
Y2xvc2VkKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNs
b3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3By
b2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVh
c29uX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbiwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKToKLSAgICAgICAgc2VydmVyID0g
c2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAo
X1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9y
X3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25zKQotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50LCBjb2RlLCByZWFzb24pCi0gICAg
ICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQot
ICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5w
aWQpCi0KLSAgICBkZWYgX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qoc2VsZiwgb3B0aW9ucywgc3Rh
dHVzKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAg
ICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLSAgICAg
ICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIdHRwU3RhdHVzRXhjZXB0aW9u
JykKLSAgICAgICAgICAgIGV4Y2VwdCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1c0V4Y2Vw
dGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBlLnN0
YXR1cykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmZhaWwoJ0NhdGNoIHVuZXhwZWN0ZWQgZXhjZXB0aW9uJykKLSAgICAgICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAg
IGRlZiBfcnVuX211eF90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIg
PSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVl
cChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIGNsaWVudCA9IG11eF9jbGll
bnRfZm9yX3Rlc3RpbmcuTXV4Q2xpZW50KHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0gICAgICAgICAgICBmaW5h
bGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5h
bGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBk
ZWYgdGVzdF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19w
cm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2JpbmFyeShzZWxmKToKLSAgICAgICAgc2Vs
Zi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5KQotCi0gICAgZGVm
IHRlc3RfZWNob19zZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0KF9l
Y2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUpCi0KLSAgICBkZWYgdGVzdF91bm1hc2tl
ZF9mcmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX3VubWFza2VkX2ZyYW1lX2No
ZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fZGVmbGF0ZV9mcmFtZShzZWxmKToK
LSAgICAgICAgc2VsZi5fcnVuX2RlZmxhdGVfZnJhbWVfdGVzdChfZWNob19jaGVja19wcm9jZWR1
cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2RlZmxhdGVfZnJhbWVfc2VydmVyX2Nsb3NlKHNlbGYp
OgotICAgICAgICBzZWxmLl9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KAotICAgICAgICAgICAgX2Vj
aG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVy
bWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQp
OgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKLSAg
ICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBj
bGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAg
IGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAg
ICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9y
ZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIp
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBh
cmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1l
dGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCi0gICAg
ICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0
aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX2ZyYW1lcyhz
ZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMg
RnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2QnLAotICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAg
ICAgICAgICAgIGVuZD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAgICAg
ICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICAnXHhj
OVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfVEVYVCkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2Jp
bmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAn
LAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9U
RVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5z
ZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0K
LSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVy
cygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAg
ICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAotICAgICAgICAgICAgICAgIHJlc3Bv
bnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0
ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tZXNzYWdlcyhzZWxmKToKLSAgICAgICAg
ZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBs
ZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0g
ICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAg
ICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEo
Ci0gICAgICAgICAgICAgICAgICAgICdceGYyXHgwMFx4MTFceDAwXHgwMCcsCi0gICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAg
ICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
YmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgw
MCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJc
eDAwXHgxMVx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAg
ICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFy
YW1ldGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBwYXJhbWV0
ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZs
YXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwKLSAgICAg
ICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rp
b24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29fbXNnc19zZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24o
Y2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0g
ICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAg
ICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEp
Ci0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAg
ICAgICdceGYyXHgwMFx4MTFceDAwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAg
ICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAg
ICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAg
ICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAg
ICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNl
aXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgw
N1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNs
aWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9z
ZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFt
ZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWygnc2VydmVyX25vX2NvbnRleHRf
dGFrZW92ZXInLCBOb25lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0
ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZs
YXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwK
LSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJt
ZXNzYWdlX2RlZmxhdGVfcHJlZmVyZW5jZShzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rp
b24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMu
Ci0gICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgw
N1x4MDAnCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAg
ICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAg
ICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9
Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3Yx
PTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIo
cGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
W10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJt
ZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScsICdkZWZsYXRlLWZyYW1lJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwK
LSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJt
ZXNzYWdlX2RlZmxhdGVfd2l0aF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9m
dW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUg
c3BlYy4KLSAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNkXHhjOVx4
YzlceDA3XHgwMCcKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEp
Ci0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAg
IHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAg
Y2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hl
Y2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhbKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzEwJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQot
Ci0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAg
ICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0xMDsgJwot
ICAgICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInXSwKLSAgICAgICAg
ICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24p
Ci0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJf
bWF4X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQp
OgotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFz
c2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJh
bWV0ZXIpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFu
Y2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRlJykKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2Fn
ZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IHNl
cnZlcl9tYXhfd2luZG93X2JpdHM9MzAwMDAwMCddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNl
X2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0
X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMo
c2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBj
bGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdl
LWRlZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgK
LSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3df
Yml0cz0zMDAwMDAwJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAg
ICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdl
X2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBkZWYgdGVz
dF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAg
ICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVz
cG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdV
bmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRlJykKLQotICAgICAgICBz
ZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJt
ZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVj
a2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hv
X2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAgICAgICBzZWxmLl9vcHRpb25z
LnJlc291cmNlID0gJy9jbG9zZScKLSAgICAgICAgc2VsZi5fcnVuX2Nsb3NlX3dpdGhfY29kZV9h
bmRfcmVhc29uX3Rlc3QoCi0gICAgICAgICAgICBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9j
b2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQotCi0gICAgZGVmIHRlc3RfZWNo
b19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6Ci0gICAgICAgIHNlbGYuX29wdGlvbnMucmVz
b3VyY2UgPSAnL2Nsb3NlJwotICAgICAgICBzZWxmLl9ydW5fY2xvc2Vfd2l0aF9jb2RlX2FuZF9y
ZWFzb25fdGVzdCgKLSAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVf
YW5kX3JlYXNvbiwgTm9uZSwgJycpCi0KLSAgICBkZWYgdGVzdF9tdXhfZWNobyhzZWxmKToKLSAg
ICAgICAgc2VsZi5fcnVuX211eF90ZXN0KF9tdXhfZWNob19jaGVja19wcm9jZWR1cmUpCi0KLSAg
ICBkZWYgdGVzdF9jbG9zZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKLSAgICAgICAgIiIiVGVz
dHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2NvbCBlcnJv
ciBzdGF0dXMKLSAgICAgICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3aXRoIHNv
bWUgcHJvdG9jb2wgZXJyb3IuCi0gICAgICAgICIiIgotCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICAgICAgICAg
ICMgSW50ZXJtZWRpYXRlIGZyYW1lIHdpdGhvdXQgYW55IHByZWNlZGluZyBzdGFydCBvZiBmcmFn
bWVudGF0aW9uCi0gICAgICAgICAgICAjIGZyYW1lLgotICAgICAgICAgICAgY2xpZW50LnNlbmRf
ZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKCdceDgwXHg4MCcsICcnKQotICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVz
dGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVz
dF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX3Vuc3VwcG9ydGVkX2ZyYW1lKHNl
bGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFt
ZSB3aXRoIHVuc3VwcG9ydGVkIG9wZXJhdGlvbgotICAgICAgICBzdGF0dXMgY29kZSB3aGVuIHRo
ZSBjbGllbnQgc2VuZHMgZGF0YSBhc2tpbmcgc29tZSBvcGVyYXRpb24gdGhhdCBpcwotICAgICAg
ICBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0K
LSAgICAgICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KLSAgICAgICAg
ICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcygnXHg5MVx4ODAnLCAnJykK
LSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEpCi0KLSAgICAgICAg
c2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX2lu
dmFsaWRfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5k
cyBhIGNsb3NlIGZyYW1lIHdpdGggaW52YWxpZCBmcmFtZSBwYXlsb2FkCi0gICAgICAgIGRhdGEg
c3RhdHVzIGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGFuIGludmFsaWQgZnJhbWUgbGlrZSBj
b250YWluaW5nCi0gICAgICAgIGludmFsaWQgVVRGLTggY2hhcmFjdGVyLgotICAgICAgICAiIiIK
LQotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50
LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAjIFRleHQgZnJhbWUgd2l0aCBpbnZhbGlkIFVURi04
IHN0cmluZy4KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ1x4ODAnLCByYXc9VHJ1
ZSkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgICAg
ICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRB
KQotCi0gICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVz
dF9jbG9zZV9vbl9pbnRlcm5hbF9lbmRwb2ludF9lcnJvcihzZWxmKToKLSAgICAgICAgIiIiVGVz
dHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5hbCBlbmRw
b2ludAotICAgICAgICBlcnJvciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRvZXMgYmFk
IG9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJj
ZSA9ICcvaW50ZXJuYWxfZXJyb3InCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50
KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLSAgICAgICAgICAgIGNsaWVudC5hc3Nl
cnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RB
VFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQotCi0gICAgICAgIHNlbGYuX3J1bl90ZXN0KHRl
c3RfZnVuY3Rpb24pCi0KLSAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8gdmVyaWZ5
IGludmFsaWQgYWJzb2x1dGUgdXJpIGhhbmRsaW5nIGxpa2UKLSAgICAjIGhvc3QgdW5tYXRjaCwg
cG9ydCB1bm1hdGNoIGFuZCBpbnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRob3V0IHBv
cnQKLSAgICAjIG51bWJlcikuCi0KLSAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2VsZik6Ci0g
ICAgICAgICIiIlRlc3RzIGFic29sdXRlIHVyaSByZXF1ZXN0LiIiIgotCi0gICAgICAgIG9wdGlv
bnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6Ly9sb2Nh
bGhvc3Q6JWQvZWNobycgJSBvcHRpb25zLnNlcnZlcl9wb3J0Ci0gICAgICAgIHNlbGYuX3J1bl90
ZXN0X3dpdGhfY2xpZW50X29wdGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRpb25zKQot
Ci0gICAgZGVmIHRlc3Rfb3JpZ2luX2NoZWNrKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyBodHRw
IGZhbGxiYWNrIG9uIG9yaWdpbiBjaGVjayBmYWlsLiIiIgotCi0gICAgICAgIG9wdGlvbnMgPSBz
ZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycK
LSAgICAgICAgIyBTZXJ2ZXIgc2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQwMyBmYWxs
YmFjay4gVGhpcyB3YXJuaW5nCi0gICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcuIEZvbGxv
d2luZyBwaXBlIGRpc3Bvc2VzIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAgICAgIHNlbGYuc2VydmVy
X3N0ZGVyciA9IHN1YnByb2Nlc3MuUElQRQotICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFj
a190ZXN0KG9wdGlvbnMsIDQwMykKLQotICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2soc2VsZik6
Ci0gICAgICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBmYWlsLiIi
IgotCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMudmVy
c2lvbiA9IDk5Ci0gICAgICAgIHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywg
NDAwKQotCi0KLWNsYXNzIEVuZFRvRW5kSHlCaTAwVGVzdChFbmRUb0VuZFRlc3RCYXNlKToKLSAg
ICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikK
LQotICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6Ci0gICAgICAgIHNlcnZl
ciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnNs
ZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50
X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnRfaHliaTAwKHNlbGYuX29wdGlvbnMpCi0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0gICAgICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQp
Ci0KLSAgICBkZWYgdGVzdF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNo
b19jaGVja19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxm
KToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29v
ZGJ5ZSkKLQotCi1jbGFzcyBFbmRUb0VuZFRlc3RXaXRoRWNob0NsaWVudChFbmRUb0VuZFRlc3RC
YXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0
VXAoc2VsZikKLQotICAgIGRlZiBfY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoCi0g
ICAgICAgIHNlbGYsIGV4cGVjdGVkLCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKToKLSAgICAgICAg
YWN0dWFsID0gc3Rkb3V0ZGF0YS5kZWNvZGUoInV0Zi04IikKLSAgICAgICAgaWYgYWN0dWFsICE9
IGV4cGVjdGVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJlc3Vs
dCBvbiBleGFtcGxlIGVjaG8gY2xpZW50OiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZXhwZWN0ZWQsIGFjdHVhbCkpCi0gICAgICAgIGlmIHN0ZGVycmRhdGEgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgZXJyb3IgbWVzc2Fn
ZSBvbiBleGFtcGxlIGVjaG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGllbnQ6
ICVyJyAlIHN0ZGVycmRhdGEpCi0KLSAgICBkZWYgdGVzdF9leGFtcGxlX2VjaG9fY2xpZW50KHNl
bGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBlY2hvX2NsaWVudC5weSBleGFtcGxlIGNh
biB0YWxrIHdpdGggdGhlIHNlcnZlci4iIiIKLQotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5f
c2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dB
Uk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIGNsaWVudF9jb21tYW5kID0gb3MucGF0aC5qb2lu
KAotICAgICAgICAgICAgICAgIHNlbGYudG9wX2RpciwgJ2V4YW1wbGUnLCAnZWNob19jbGllbnQu
cHknKQotCi0gICAgICAgICAgICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVz
c2FnZXMuCi0gICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKCdTZW5kOiBIZWxsb1xu
JyAnUmVjdjogSGVsbG9cbicKLSAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xu
JyB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJwotICAgICAgICAgICAgICAgICdTZW5kIGNsb3NlXG4n
ICdSZWN2IGFja1xuJykKLQotICAgICAgICAgICAgYXJncyA9IFtjbGllbnRfY29tbWFuZCwKLSAg
ICAgICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpXQot
ICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0g
Y2xpZW50LmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNo
b19jbGllbnRfcmVzdWx0KAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9u
LCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQotCi0gICAgICAgICAgICAjIFByb2Nlc3MgYSBiaWcg
bWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggaXMgdXNlZC4KLSAgICAg
ICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoLCB3c192ZXJzaW9uIGF0
dHJpYnV0ZSB3aWxsIGJlCi0gICAgICAgICAgICAjIGFjY2Vzc2VkLiBUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkgc2V0LgotICAgICAgICAgICAgYmlnX21lc3Nh
Z2UgPSAnYScgKiAxMDI0Ci0gICAgICAgICAgICBhcmdzID0gW2NsaWVudF9jb21tYW5kLAotICAg
ICAgICAgICAgICAgICAgICAnLXAnLCBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCksCi0g
ICAgICAgICAgICAgICAgICAgICctbScsIGJpZ19tZXNzYWdlXQotICAgICAgICAgICAgY2xpZW50
ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUp
Ci0gICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xpZW50LmNvbW11bmljYXRl
KCkKLSAgICAgICAgICAgIGV4cGVjdGVkID0gKCdTZW5kOiAlc1xuUmVjdjogJXNcblNlbmQgY2xv
c2VcblJlY3YgYWNrXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChiaWdfbWVzc2FnZSwg
YmlnX21lc3NhZ2UpKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVu
dF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQsIHN0ZG91dGRhdGEsIHN0ZGVycmRh
dGEpCi0KLSAgICAgICAgICAgICMgVGVzdCB0aGUgcGVybWVzc2FnZS1kZWZsYXRlIGV4dGVuc2lv
bi4KLSAgICAgICAgICAgIGFyZ3MgPSBbY2xpZW50X2NvbW1hbmQsCi0gICAgICAgICAgICAgICAg
ICAgICctcCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwKLSAgICAgICAgICAgICAg
ICAgICAgJy0tdXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSddCi0gICAgICAgICAgICBjbGllbnQgPSBz
ZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAg
ICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQot
ICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoCi0gICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24sIHN0ZG91dGRhdGEsIHN0ZGVycmRh
dGEpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2Vy
dmVyLnBpZCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1h
aW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
ZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk0YTQzODQ3OTJiZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBm
b3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgemxp
YgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9k
X3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1v
bgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGV4dGVuc2lvbnMKLQotCi1jbGFzcyBFeHRl
bnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Igbm9u
LWNsYXNzIG1ldGhvZHMgaW4gZXh0ZW5zaW9ucy5weSIiIgotCi0gICAgZGVmIHRlc3RfcGFyc2Vf
d2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
IGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2Jh
cicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3Bh
cnNlX3dpbmRvd19iaXRzLCAnIDggJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywg
JzAwMDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9u
cy5fcGFyc2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykKLQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5k
b3dfYml0cywgJzkuNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4
dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKLQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19i
aXRzLCAnLTgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNp
b25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19i
aXRzLCAnMTYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgICAgICBW
YWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzEwMDAwMDAwJykKLQot
Ci1jbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3JQYXJzaW5nVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBEZWZsYXRl
RnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IgcGFyc2VzIGdpdmVuCi0gICAgZXh0ZW5zaW9uIHBhcmFt
ZXRlciBjb3JyZWN0bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToK
LSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigK
LSAgICAgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdkZWZsYXRlLWZyYW1l
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcikKLQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25fcHJv
Y2Vzc29yKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3gtd2Vi
a2l0LWRlZmxhdGUtZnJhbWUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nl
c3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuRGVmbGF0ZUZy
YW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAgZGVmIHRlc3RfbWluaW1hbF9vZmZlcihzZWxm
KToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFt
ZS1kZWZsYXRlJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUn
LCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3Bv
bnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5N
QVhfV0JJVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9yZmMxOTc5X2Rl
ZmxhdGVyLl93aW5kb3dfYml0cykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNzb3Iu
X3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICBkZWYgdGVzdF9v
ZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFt
ZXRlci5hZGRfcGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMnLCAnMTAnKQotICAgICAgICBwcm9j
ZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0
ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCByZXNwb25z
ZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5f
cmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRo
X291dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBw
YXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAgICAgICBw
cm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJh
bWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNp
b25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRz
X3dpdGhvdXRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3Bh
cmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkp
Ci0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6Ci0g
ICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRl
ZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbm9fY29udGV4dF90YWtl
b3ZlcicsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0ZUZyYW1l
RXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nl
c3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
cGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3Zl
cikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3Zh
bHVlKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ25v
X2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5z
aW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0K
LSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25fcGFyYW1ldGVyKHNlbGYpOgotICAgICAg
ICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRl
JykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2ZvbycsICdiYXInKQotICAgICAg
ICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihw
YXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCBy
ZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9u
UHJvY2Vzc29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRl
c3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Ig
cGFyc2VzCi0gICAgZ2l2ZW4gZXh0ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0bHkuCi0gICAgIiIi
Ci0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0KLSAgICBk
ZWYgdGVzdF9taW5pbWFsX29mZmVyKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0KLSAgICAgICAg
cmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRzKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9f
Y29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19i
aXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcign
c2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVu
c2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0g
ICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1l
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93aW5kb3dfYml0cycs
ICcxMCcpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVy
cygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5fcmZjMTk3OV9k
ZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX291dF9vZl9y
YW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRl
ci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAgICAgICBw
cm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29y
KHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhfd2luZG93
X2JpdHNfd2l0aG91dF92YWx1ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4
dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVy
LmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCBOb25lKQotICAgICAgICBw
cm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29y
KHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19jb250ZXh0
X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBwcm9jZXNz
b3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFt
ZXRlcikKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVz
cG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9ub19jb250
ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5f
cmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29m
ZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNlbGYpOgotICAgICAgICBw
YXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUn
KQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNz
YWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRl
ZiB0ZXN0X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIHBhcmFt
ZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0g
ICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykKLSAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvcihw
YXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRl
bnNpb25fcmVzcG9uc2UoKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblBy
b2Nlc3NvckJ1aWxkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVz
dCBmb3IgY2hlY2tpbmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvciBi
dWlsZHMKLSAgICBhIHJlc3BvbnNlIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIGNvcnJlY3Rs
eS4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4X3dpbmRvd19iaXRz
KHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdw
ZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignY2xp
ZW50X21heF93aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lv
bnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotICAgICAg
ICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTApCi0KLSAgICAgICAgcmVz
cG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgJzEwJyldLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAg
ICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0X2NsaWVudF9w
ZXJtaXNzaW9uKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3Nh
Z2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0gICAgICAgIHByb2Nlc3Nvci5zZXRf
Y2xpZW50X21heF93aW5kb3dfYml0cygxMCkKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nv
ci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVz
cG9uc2UpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX3RydWVfZm9yX25vX2NvbnRleHRf
dGFrZW92ZXIoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2Fn
ZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLQotICAgICAgICBwcm9jZXNzb3Iuc2V0
X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBw
cm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgZGVm
IHRlc3RfcmVzcG9uc2Vfd2l0aF9mYWxzZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToK
LSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScpKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIoRmFsc2UpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBs
ZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3OGFjMDVlNTg3Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTg4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUuIiIiCi0KLQotaW1w
b3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRv
IGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldC5j
b21tb24gaW1wb3J0IEV4dGVuc2lvblBhcmFtZXRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuY29t
bW9uIGltcG9ydCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5jb21tb24gaW1wb3J0IGZvcm1hdF9leHRlbnNpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tldC5j
b21tb24gaW1wb3J0IHBhcnNlX2V4dGVuc2lvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29sCi0KLQotY2xhc3Mg
VmFsaWRhdGVTdWJwcm90b2NvbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5p
dHRlc3QgZm9yIHZhbGlkYXRlX3N1YnByb3RvY29sIG1ldGhvZC4iIiIKLQotICAgIGRlZiB0ZXN0
X3ZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYpOgotICAgICAgICAjIFNob3VsZCBzdWNjZWVkLgot
ICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlJykKLSAgICAgICAgdmFsaWRhdGVf
c3VicHJvdG9jb2woJ1NhbXBsZScpCi0gICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1w
bGVceDdlcHJvdG9jb2wnKQotCi0gICAgICAgICMgU2hvdWxkIGZhaWwuCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcnKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9z
dWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2Nv
bCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHg3ZnBy
b3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHUnXHU2NWU1XHU2NzJjJykKLQotCi1fVEVTVF9UT0tFTl9FWFRFTlNJT05fREFU
QSA9IFsKLSAgICAoJ2ZvbycsIFsoJ2ZvbycsIFtdKV0pLAotICAgICgnZm9vOyBiYXInLCBbKCdm
b28nLCBbKCdiYXInLCBOb25lKV0pXSksCi0gICAgKCdmb287IGJhcj1iYXonLCBbKCdmb28nLCBb
KCdiYXInLCAnYmF6JyldKV0pLAotICAgICgnZm9vOyBiYXI9YmF6OyBjYXI9Y2RyJywgWygnZm9v
JywgWygnYmFyJywgJ2JheicpLCAoJ2NhcicsICdjZHInKV0pXSksCi0gICAgKCdmb287IGJhcj1i
YXosIGNhcjsgY2RyJywKLSAgICAgWygnZm9vJywgWygnYmFyJywgJ2JheicpXSksICgnY2FyJywg
WygnY2RyJywgTm9uZSldKV0pLAotICAgICgnYSwgYiwgYywgZCcsCi0gICAgIFsoJ2EnLCBbXSks
ICgnYicsIFtdKSwgKCdjJywgW10pLCAoJ2QnLCBbXSldKSwKLSAgICBdCi0KLQotX1RFU1RfUVVP
VEVEX0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgnZm9vOyBiYXI9IiInLCBbKCdmb28nLCBbKCdi
YXInLCAnJyldKV0pLAotICAgICgnZm9vOyBiYXI9IiBiYXogIicsIFsoJ2ZvbycsIFsoJ2Jhcics
ICcgYmF6ICcpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSIsYmF6OyInLCBbKCdmb28nLCBbKCdiYXIn
LCAnLGJhejsnKV0pXSksCi0gICAgKCdmb287IGJhcj0iXFxcclxcXG5iYXoiJywgWygnZm9vJywg
WygnYmFyJywgJ1xyXG5iYXonKV0pXSksCi0gICAgKCdmb287IGJhcj0iXFwiYmF6IicsIFsoJ2Zv
bycsIFsoJ2JhcicsICciYmF6JyldKV0pLAotICAgICgnZm9vOyBiYXI9Ilx4YmJiYXoiJywgWygn
Zm9vJywgWygnYmFyJywgJ1x4YmJiYXonKV0pXSksCi0gICAgXQotCi0KLV9URVNUX1JFRFVOREFO
VF9UT0tFTl9FWFRFTlNJT05fREFUQSA9IFsKLSAgICAoJ2ZvbyBcdCAnLCBbKCdmb28nLCBbXSld
KSwKLSAgICAoJ2ZvbzsgXHJcbiBiYXInLCBbKCdmb28nLCBbKCdiYXInLCBOb25lKV0pXSksCi0g
ICAgKCdmb287IGJhcj1cclxuIFxyXG4gYmF6JywgWygnZm9vJywgWygnYmFyJywgJ2JheicpXSld
KSwKLSAgICAoJ2ZvbyA7YmFyID0gYmF6ICcsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSks
Ci0gICAgKCdmb28sYmFyLCxiYXonLCBbKCdmb28nLCBbXSksICgnYmFyJywgW10pLCAoJ2Jheics
IFtdKV0pLAotICAgIF0KLQotCi1fVEVTVF9SRURVTkRBTlRfUVVPVEVEX0VYVEVOU0lPTl9EQVRB
ID0gWwotICAgICgnZm9vOyBiYXI9IlxyXG4gXHJcbiBiYXoiJywgWygnZm9vJywgWygnYmFyJywg
JyAgYmF6JyldKV0pLAotICAgIF0KLQotCi1jbGFzcyBFeHRlbnNpb25zUGFyc2VyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgX3ZlcmlmeV9leHRlbnNpb25fbGlzdChzZWxmLCBl
eHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICIiIlZlcmlmaWVzIHRoYXQgRXh0
ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMgaW4gYWN0dWFsX2xpc3QgaGF2ZSB0aGUKLSAgICAgICAg
c2FtZSBtZW1iZXJzIGFzIGV4dGVuc2lvbiBkZWZpbml0aW9ucyBpbiBleHBlY3RlZF9saXN0LiBF
eHRlbnNpb24KLSAgICAgICAgZGVmaW5pdGlvbiB1c2VkIGluIHRoaXMgdGVzdCBpcyBhIHBhaXIg
b2YgYW4gZXh0ZW5zaW9uIG5hbWUgYW5kIGEKLSAgICAgICAgcGFyYW1ldGVyIGRpY3Rpb25hcnku
Ci0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xp
c3QpLCBsZW4oYWN0dWFsX2xpc3QpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6
aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QpOgotICAgICAgICAgICAgKG5hbWUsIHBhcmFt
ZXRlcnMpID0gZXhwZWN0ZWQKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgYWN0
dWFsLl9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbWV0ZXJzLCBhY3R1
YWwuX3BhcmFtZXRlcnMpCi0KLSAgICBkZWYgdGVzdF9wYXJzZShzZWxmKToKLSAgICAgICAgZm9y
IGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRpb24gaW4gX1RFU1RfVE9LRU5fRVhURU5TSU9OX0RB
VEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAg
ICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQot
ICAgIGRlZiB0ZXN0X3BhcnNlX3F1b3RlZF9kYXRhKHNlbGYpOgotICAgICAgICBmb3IgZm9ybWF0
dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEE6Ci0g
ICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAgICAgICAg
ZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQotICAgIGRl
ZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgotICAgICAgICBmb3IgKGZvcm1hdHRl
ZF9zdHJpbmcsCi0gICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5EQU5UX1RP
S0VOX0VYVEVOU0lPTl9EQVRBOgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9s
aXN0KAotICAgICAgICAgICAgICAgIGRlZmluaXRpb24sIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0
dGVkX3N0cmluZykpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZWR1bmRhbnRfcXVvdGVkX2RhdGEo
c2VsZik6Ci0gICAgICAgIGZvciAoZm9ybWF0dGVkX3N0cmluZywKLSAgICAgICAgICAgICBkZWZp
bml0aW9uKSBpbiBfVEVTVF9SRURVTkRBTlRfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgotICAgICAg
ICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9saXN0KAotICAgICAgICAgICAgICAgIGRlZmlu
aXRpb24sIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCi0KLSAgICBkZWYgdGVz
dF9wYXJzZV9iYWRfZGF0YShzZWxmKToKLSAgICAgICAgX1RFU1RfQkFEX0VYVEVOU0lPTl9EQVRB
ID0gWwotICAgICAgICAgICAgKCdmb287IDsgJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYSBhJyks
Ci0gICAgICAgICAgICAoJ2ZvbyBmb28nKSwKLSAgICAgICAgICAgICgnLCwsJyksCi0gICAgICAg
ICAgICAoJ2ZvbzsgYmFyPScpLAotICAgICAgICAgICAgKCdmb287IGJhcj0iaG9nZScpLAotICAg
ICAgICAgICAgKCdmb287IGJhcj0iYVxyIicpLAotICAgICAgICAgICAgKCdmb287IGJhcj0iXFxc
eGZmIicpLAotICAgICAgICAgICAgKCdmb287IGJhcj1ccmEnKSwKLSAgICAgICAgICAgIF0KLQot
ICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEE6
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgICAgICBFeHRlbnNp
b25QYXJzaW5nRXhjZXB0aW9uLCBwYXJzZV9leHRlbnNpb25zLCBmb3JtYXR0ZWRfc3RyaW5nKQot
Ci0KLWNsYXNzIEZvcm1hdEV4dGVuc2lvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAg
IGRlZiB0ZXN0X2Zvcm1hdF9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICBmb3IgZm9ybWF0dGVk
X3N0cmluZywgZGVmaW5pdGlvbnMgaW4gX1RFU1RfVE9LRU5fRVhURU5TSU9OX0RBVEE6Ci0gICAg
ICAgICAgICBleHRlbnNpb25zID0gW10KLSAgICAgICAgICAgIGZvciBkZWZpbml0aW9uIGluIGRl
ZmluaXRpb25zOgotICAgICAgICAgICAgICAgIChuYW1lLCBwYXJhbWV0ZXJzKSA9IGRlZmluaXRp
b24KLSAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBFeHRlbnNpb25QYXJhbWV0ZXIobmFtZSkK
LSAgICAgICAgICAgICAgICBleHRlbnNpb24uX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCi0gICAg
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfc3RyaW5nLCBmb3JtYXRf
ZXh0ZW5zaW9ucyhleHRlbnNpb25zKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9oYW5kc2hh
a2VfaHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhYWY2NDBhNTg4Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4iIiIKLQotCi1p
bXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGgg
dG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0
IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5f
YmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5k
c2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5oeWJpIGltcG9ydCBIYW5kc2hha2VyCi0KLWltcG9ydCBtb2NrCi0KLQotY2xh
c3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIGZvciBob2xkaW5n
IGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJpbmdzIGZvcgotICAg
IHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2QsIHVyaSwgaGVhZGVycyk6Ci0gICAgICAgIHNlbGYu
bWV0aG9kID0gbWV0aG9kCi0gICAgICAgIHNlbGYudXJpID0gdXJpCi0gICAgICAgIHNlbGYuaGVh
ZGVycyA9IGhlYWRlcnMKLQotCi1kZWYgX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCk6Ci0gICAg
cmV0dXJuIFJlcXVlc3REZWZpbml0aW9uKAotICAgICAgICAnR0VUJywgJy9kZW1vJywKLSAgICAg
ICAgeydIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCi0gICAgICAgICAnVXBncmFkZSc6ICd3
ZWJzb2NrZXQnLAotICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAn
U2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09JywKLSAgICAgICAg
ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAotICAgICAgICAgJ09yaWdpbic6ICdodHRw
Oi8vZXhhbXBsZS5jb20nfSkKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKToK
LSAgICBjb25uID0gbW9jay5Nb2NrQ29ubignJykKLSAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVz
dCgKLSAgICAgICAgbWV0aG9kPXJlcXVlc3RfZGVmLm1ldGhvZCwKLSAgICAgICAgdXJpPXJlcXVl
c3RfZGVmLnVyaSwKLSAgICAgICAgaGVhZGVyc19pbj1yZXF1ZXN0X2RlZi5oZWFkZXJzLAotICAg
ICAgICBjb25uZWN0aW9uPWNvbm4pCi0KLQotZGVmIF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0
KToKLSAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRj
aGVyKCkpCi0gICAgcmV0dXJuIGhhbmRzaGFrZXIKLQotCi1jbGFzcyBTdWJwcm90b2NvbENob29z
aW5nRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4g
VGhpcyBkaXNwYXRjaGVyIHNldHMgdGhlIGktdGggc3VicHJvdG9jb2wKLSAgICBvZiByZXF1ZXN0
ZWQgb25lcyB0byB3c19wcm90b2NvbCB3aGVyZSBpIGlzIGdpdmVuIG9uIGNvbnN0cnVjdGlvbiBh
cyBpbmRleAotICAgIGFyZ3VtZW50LiBJZiBpbmRleCBpcyBuZWdhdGl2ZSwgZGVmYXVsdF92YWx1
ZSB3aWxsIGJlIHNldCB0byB3c19wcm90b2NvbC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBpbmRleCwgZGVmYXVsdF92YWx1ZT1Ob25lKToKLSAgICAgICAgc2VsZi5pbmRleCA9
IGluZGV4Ci0gICAgICAgIHNlbGYuZGVmYXVsdF92YWx1ZSA9IGRlZmF1bHRfdmFsdWUKLQotICAg
IGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgaWYg
c2VsZi5pbmRleCA+PSAwOgotICAgICAgICAgICAgY29ubl9jb250ZXh0LndzX3Byb3RvY29sID0g
Y29ubl9jb250ZXh0LndzX3JlcXVlc3RlZF9wcm90b2NvbHNbCi0gICAgICAgICAgICAgICAgc2Vs
Zi5pbmRleF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbm5fY29udGV4dC53c19wcm90
b2NvbCA9IHNlbGYuZGVmYXVsdF92YWx1ZQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwg
Y29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIEhhbmRzaGFrZUFib3J0ZWRF
eGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLQotY2xhc3MgQWJvcnRpbmdEaXNwYXRj
aGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3Bh
dGNoZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpbgotICAgIGRvX2V4dHJhX2hhbmRzaGFrZSB0byBy
ZWplY3QgdGhlIHJlcXVlc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtl
KHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUFib3J0ZWRFeGNl
cHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWplY3QgdGhlIHJlcXVlc3QnKQotCi0gICAgZGVmIHRy
YW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNz
IEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkaXNwYXRjaGVyIGZv
ciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuCi0gICAgQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0LgotICAg
ICIiIgotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRleHQpOgot
ICAgICAgICByYWlzZSBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCdBbiBBYm9ydGVkQnlVc2VyRXhj
ZXB0aW9uIHRvIHJlamVjdCB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZXF1ZXN0JykKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4
dCk6Ci0gICAgICAgIHBhc3MKLQotCi1fRVhQRUNURURfUkVTUE9OU0UgPSAoCi0gICAgJ0hUVFAv
MS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKLSAgICAnVXBncmFkZTogd2Vic29ja2V0
XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQt
QWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289XHJcblxyXG4nKQotCi0KLWNsYXNz
IEhhbmRzaGFrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZv
ciBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCi0gICAg
aGFuZHNoYWtlIHByb2Nlc3Nvci4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFr
ZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKSkKLSAgICAgICAgZGlzcGF0Y2hlciA9IG1vY2suTW9ja0Rpc3BhdGNoZXIo
KQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQot
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCkKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9kZW1v
JywgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDov
L2V4YW1wbGUuY29tJywgcmVxdWVzdC53c19vcmlnaW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgcmVxdWVzdC53c19wcm90b2NvbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCByZXF1ZXN0LndzX2V4dGVuc2lvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsIHJlcXVlc3Qud3NfdmVyc2lvbikKLQotICAgIGRlZiB0
ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2V4dHJhX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgIyBBZGQgaGVhZGVy
cyBub3QgcmVsYXRlZCB0byBXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UuCi0gICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ0Zvb0tleSddID0gJ0JhclZhbHVlJwotICAgICAgICByZXF1ZXN0
X2RlZi5oZWFkZXJzWydFbXB0eUtleSddID0gJycKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5k
c2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNo
YWtlX3dpdGhfY2FwaXRhbGl6ZWRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
dXBncmFkZSddID0gJ1dFQlNPQ0tFVCcKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2Vy
KHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVj
dGlvbiddID0gJ1VQR1JBREUnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChy
ZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1
ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX211
bHRpcGxlX2Nvbm5lY3Rpb25fdmFsdWVzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nv
bm5lY3Rpb24nXSA9ICdVcGdyYWRlLCBrZWVwLWFsaXZlLCAsICcKLQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2Ny
ZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQ
T05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rf
YWJvcnRpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cigKLSAgICAgICAgICAgIF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYo
KSksCi0gICAgICAgICAgICBBYm9ydGluZ0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgIyBkb19leHRy
YV9oYW5kc2hha2UgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gQ2hlY2sgdGhhdCBpdCdzIG5vdCBjYXVn
aHQgYnkKLSAgICAgICAgIyBkb19oYW5kc2hha2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEhhbmRzaGFrZUFib3J0ZWRFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0g
ICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHJl
cXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9k
ZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2NoYXQsIHN1cGVyY2hhdCcK
LQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAg
ICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBTdWJwcm90b2NvbENob29zaW5nRGlz
cGF0Y2hlcigwKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotCi0gICAgICAg
IEVYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICAgICAgICAgJ0hUVFAvMS4xIDEwMSBTd2l0Y2hp
bmcgUHJvdG9jb2xzXHJcbicKLSAgICAgICAgICAgICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJwot
ICAgICAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289XHJcbicKLSAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBjaGF0XHJcblxyXG4nKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY2hhdCcsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2VfcHJvdG9jb2xfbm90X2lu
X3JlcXVlc3RfYnV0X2luX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKAotICAgICAg
ICAgICAgcmVxdWVzdCwgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoLTEsICdmb29iYXIn
KSkKLSAgICAgICAgIyBObyByZXF1ZXN0IGhhcyBiZWVuIG1hZGUgYnV0IHdzX3Byb3RvY29sIGlz
IHNldC4gSGFuZHNoYWtlRXhjZXB0aW9uCi0gICAgICAgICMgbXVzdCBiZSByYWlzZWQuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbF9ub19w
cm90b2NvbF9zZWxlY3Rpb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbCddID0gJ2NoYXQsIHN1cGVyY2hhdCcKLQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0
ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgICMgd3NfcHJvdG9jb2wgaXMgbm90IHNldC4g
SGFuZHNoYWtlRXhjZXB0aW9uIG11c3QgYmUgcmFpc2VkLgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0gICAg
ZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKLSAgICAgICAgICAgICdw
ZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJykKLQotICAgICAg
ICBFWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAxMDEgU3dpdGNo
aW5nIFByb3RvY29sc1xyXG4nCi0gICAgICAgICAgICAnVXBncmFkZTogd2Vic29ja2V0XHJcbicK
LSAgICAgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdTZWMt
V2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCi0gICAg
ICAgICAgICAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAnCi0gICAgICAgICAgICAgICAgJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXJcclxuJwotICAgICAg
ICAgICAgJ1xyXG4nKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
LSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykp
Ci0gICAgICAgIGV4dGVuc2lvbiA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl92YWx1ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJl
cXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRo
X3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZSwg
LCAnCi0gICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJcbiAgICAg
IFxcXHJmICAiOyBwdj1ucnQnKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVx
dWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKLSAgICAg
ICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1swXQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBmaXJzdF9leHRl
bnNpb24ubmFtZSgpKQotICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1
ZXN0ZWRfZXh0ZW5zaW9uc1sxXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd1bmtub3duJywg
c2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICBbJ2UnLCAnbWEnLCAncHYnXSwgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVy
X25hbWVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21jXjInLCBzZWNvbmRfZXh0ZW5z
aW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
IFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ21hJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29uZF9leHRlbnNpb24uZ2V0X3BhcmFtZXRl
cl92YWx1ZSgncHYnKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX29wdGlvbmFs
X2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlWYWx1ZSddID0gJycK
LSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtleSddID0gJ0FWYWx1ZScKLQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hh
a2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICdBVmFs
dWUnLCByZXF1ZXN0LmhlYWRlcnNfaW5bJ0FLZXknXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgICcnLCByZXF1ZXN0LmhlYWRlcnNfaW5bJ0VtcHR5VmFsdWUnXSkKLQot
ICAgIGRlZiB0ZXN0X2Fib3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgaGFuZHNo
YWtlciA9IEhhbmRzaGFrZXIoCi0gICAgICAgICAgICBfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkpLAotICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckRpc3BhdGNoZXIo
KSkKLSAgICAgICAgIyBkb19leHRyYV9oYW5kc2hha2UgcmFpc2VzIGFuIEFib3J0ZWRCeVVzZXJF
eGNlcHRpb24uIENoZWNrIHRoYXQgaXQncwotICAgICAgICAjIG5vdCBjYXVnaHQgYnkgZG9faGFu
ZHNoYWtlLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBYm9ydGVkQnlVc2VyRXhjZXB0aW9u
LCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX211eF9hbmRfZGVmbGF0ZV9mcmFtZShzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydT
ZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgnJXMsICVzJyAlICgKLSAgICAgICAgICAgICAg
ICBjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9G
UkFNRV9FWFRFTlNJT04pKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVl
c3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3Qp
Ci0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgIyBtdXggc2hvdWxk
IGJlIHJlamVjdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0Lndz
X2V4dGVuc2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5ERUZMQVRFX0ZS
QU1FX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVu
c2lvbnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
b24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoaGFzYXR0cihyZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpKQotCi0gICAgZGVm
IHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfZGVmbGF0ZV9mcmFtZV9hbmRfbXV4KHNlbGYpOgotICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKCclcywgJXMn
ICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiwKLSAg
ICAgICAgICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRl
X2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
ICAgICAgICAjIG11eCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIGZpcnN0X2V4dGVuc2lv
biA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBm
aXJzdF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihyZXF1ZXN0LCAnbXV4JykpCi0KLSAgICBkZWYgdGVz
dF9kb19oYW5kc2hha2Vfd2l0aF9wZXJtZXNzYWdlX2RlZmxhdGVfYW5kX211eChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBy
ZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKLSAgICAg
ICAgICAgICclcywgJXMnICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgIGNvbW1vbi5NVVhfRVhURU5TSU9OKSkK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAg
aGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVx
dWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uTVVY
X0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lv
bnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0Lndz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVmbGF0
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vz
c29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRF
TlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJv
Y2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHJlcXVl
c3QsICdtdXhfcHJvY2Vzc29yJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1ZXN0Lm11
eF9wcm9jZXNzb3IuaXNfYWN0aXZlKCkpCi0gICAgICAgIG11eF9leHRlbnNpb25zID0gcmVxdWVz
dC5tdXhfcHJvY2Vzc29yLmV4dGVuc2lvbnMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IGxlbihtdXhfZXh0ZW5zaW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgbXV4
X2V4dGVuc2lvbnNbMF0ubmFtZSgpKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhf
bXV4X2FuZF9wZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAnJXMsICVzJyAlICgK
LSAgICAgICAgICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRl
X2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
ICAgICAgICAjIG11eCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIGZpcnN0X2V4dGVuc2lv
biA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpcnN0X2V4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwg
bGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0KLSAgICBkZWYgdGVzdF9iYWRf
cmVxdWVzdHMoc2VsZik6Ci0gICAgICAgIGJhZF9jYXNlcyA9IFsKLSAgICAgICAgICAgICgnSFRU
UCByZXF1ZXN0JywKLSAgICAgICAgICAgICBSZXF1ZXN0RGVmaW5pdGlvbigKLSAgICAgICAgICAg
ICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgICAgICAgICAgIHsnSG9zdCc6ICd3d3cuZ29v
Z2xlLmNvbScsCi0gICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7
JwotICAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMpIEdlY2tvLzIwMDkw
ODI0IEZpcmVmb3gvMy41LjMnCi0gICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdUQkEnLAot
ICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6Ci0gICAgICAgICAgICAgICAgICAgICAgJ3RleHQv
aHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcKLSAgICAg
ICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICAgICAgICdBY2NlcHQt
TGFuZ3VhZ2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1F
bmNvZGluZyc6ICdnemlwLGRlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1DaGFy
c2V0JzogJ0lTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAgICAgICAg
ICAnS2VlcC1BbGl2ZSc6ICczMDAnLAotICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAn
a2VlcC1hbGl2ZSd9KSwgTm9uZSwgVHJ1ZSldCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3Jl
YXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAnUE9T
VCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3RfZGVm
LCBOb25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KLSAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KLSAgICAgICAgYmFk
X2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVl
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQnCi0g
ICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYsIE5v
bmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3Rf
ZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQotICAg
ICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYs
IE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ0Rv
d25ncmFkZScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24nLCBy
ZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRl
X2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2Vj
LVdlYlNvY2tldC1LZXknXQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMt
V2ViU29ja2V0LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVl
c3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdkR2hsSUhOaGJY
QnNaU0J1YjI1alpRPT1nYXJiYWdlJykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25n
IFNlYy1XZWJTb2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAnYScK
LSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNv
Y2tldC1LZXkgKGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCi0gICAgICAg
ICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciBy
aWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KLSAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdB
UUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0nKQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAotICAg
ICAgICAgICAgKCdXcm9uZyBTZWMtV2ViU29ja2V0LUtleSAocGFkZGluZyBiaXRzIGFyZSBub3Qg
emVybyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT0sZEdobElITmhiWEJzWlNCdWIyNWpaUT09JykKLSAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkg
KG11bHRpcGxlIHZhbHVlcyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUp
KQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAg
ICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddCi0g
ICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbics
IHJlcXVlc3RfZGVmLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKLQot
ICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAg
IHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddID0gJzMnCi0gICAg
ICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24nLCByZXF1
ZXN0X2RlZiwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQotCi0gICAg
ICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAnMTMsIDEzJwotICAg
ICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9uIChtdWx0
aXBsZSB2YWx1ZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQw
MCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9k
ZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29s
J10gPSAnaWxsZWdhbFx4MDlwcm90b2NvbCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ0ls
bGVnYWwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdl
YlNvY2tldC1Qcm90b2NvbCddID0gJycKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ0VtcHR5
IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9k
ZWYsIGV4cGVjdGVkX3N0YXR1cywKLSAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2Vw
dGlvbikgaW4gYmFkX2Nhc2VzOgotICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dChyZXF1ZXN0X2RlZikKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVl
c3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWls
KCdObyBleGNlcHRpb24gdGhyb3duIGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCi0gICAg
ICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGV4cGVjdF9oYW5kc2hha2VfZXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKLSAgICAgICAg
ICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkwMC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDczZjlmMjdjYTJkOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRz
aGFrZV9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MTYgKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNo
YWtlLmh5YmkwMCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRf
c3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9k
dWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRz
aGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkwMCBpbXBv
cnQgSGFuZHNoYWtlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkwMCBpbXBv
cnQgX3ZhbGlkYXRlX3N1YnByb3RvY29sCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1fVEVT
VF9LRVkxID0gJzQgQDEgIDQ2NTQ2eFclMGwgMSA1JwotX1RFU1RfS0VZMiA9ICcxMjk5OCA1IFkz
IDEgIC5QMDAnCi1fVEVTVF9LRVkzID0gJ15uOmRzWzRVJwotX1RFU1RfQ0hBTExFTkdFX1JFU1BP
TlNFID0gJzhqS1NcJ3k6RypDbyxXeGEtJwotCi0KLV9HT09EX1JFUVVFU1QgPSAoCi0gICAgODAs
Ci0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1w
bGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMt
V2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAg
ICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdo
dHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVR
VUVTVF9DQVBJVEFMSVpFRF9IRUFERVJfVkFMVUVTID0gKAotICAgIDgwLAotICAgICdHRVQnLAot
ICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAg
ICAgICdDb25uZWN0aW9uJzogJ1VQR1JBREUnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXky
JzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxl
JywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV0VCU09DS0VUJywKLSAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUu
Y29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFUVVFU1RfQ0FTRV9NSVhF
RF9IRUFERVJfTkFNRVMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAg
ICB7Ci0gICAgICAgICdoT3NUJzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ2NPbk5lQ3RJb04n
OiAnVXBncmFkZScsCi0gICAgICAgICdzRWMtd0Vic09jS2VULWtFeTInOiBfVEVTVF9LRVkyLAot
ICAgICAgICAnc0VjLXdFYnNPY0tlVC1wUm9Ub0NvTCc6ICdzYW1wbGUnLAotICAgICAgICAndVBn
UmFEZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1rRXkxJzogX1RFU1Rf
S0VZMSwKLSAgICAgICAgJ29SaUdpTic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0g
ICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JUID0gKAotICAgICdI
VFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3Jh
ZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdT
ZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdT
ZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnU2VjLVdl
YlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NI
QUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFID0gKAotICAgICdIVFRQ
LzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6
IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMt
V2ViU29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAnU2Vj
LVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFM
TEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUID0gKAotICAg
IDgwODEsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0Jzog
J2V4YW1wbGUuY29tOjgwODEnLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdTZWMtV2Vi
U29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tl
dCcsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAn
T3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQot
Ci1fR09PRF9SRVNQT05TRV9OT05ERUZBVUxUX1BPUlQgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBX
ZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0
XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQt
TG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNv
Y2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0Vf
UkVTUE9OU0UpCi0KLV9HT09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYgPSAoCi0gICAgJ0hUVFAv
MS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1X
ZWJTb2NrZXQtTG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4nCi0gICAg
J1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdTZWMt
V2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0gICAgX1RFU1Rf
Q0hBTExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX05PX1BST1RPQ09MID0gKAotICAg
IDgwLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdl
eGFtcGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAn
U2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2Vi
U29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAg
ICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tF
WTMpCi0KLV9HT09EX1JFU1BPTlNFX05PX1BST1RPQ09MID0gKAotICAgICdIVFRQLzEuMSAxMDEg
V2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0
LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0
LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNU
X0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hFQURF
UlMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAg
ICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScs
Ci0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnRW1w
dHlWYWx1ZSc6ICcnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUn
LAotICAgICAgICAnQUtleSc6ICdBVmFsdWUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2Nr
ZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAg
J09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykK
LQotIyBUT0RPKHR5b3NoaW5vKTogSW5jbHVkZSBcciBcbiBpbiBrZXkzLCBjaGFsbGVuZ2UgcmVz
cG9uc2UuCi0KLV9HT09EX1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZID0gKAotICAgIDgw
LAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFt
cGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2Vj
LVdlYlNvY2tldC1LZXkyJzogJ3kgIFIyIDQ4IFExTzQgIGV8QlYzIGk1IDEgIHUtIDY1JywKLSAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3Jh
ZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6ICczNiA3ICAg
NzQgaSAgOTIgMlwnbSA5IDBHJywKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5j
b20nLAotICAgIH0sCi0gICAgJycuam9pbihtYXAoY2hyLCBbMHgwMSwgMHhkMSwgMHhkZCwgMHgz
YiwgMHhkMSwgMHg1NiwgMHg2MywgMHhmZl0pKSkKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9OT05Q
UklOVEFCTEVfS0VZID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhh
bmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rp
b246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1w
bGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1w
bGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAg
ICAnXHJcbicgKwotICAgICcnLmpvaW4obWFwKGNociwgWzB4MGIsIDB4OTksIDB4ZmEsIDB4NTUs
IDB4YmQsIDB4MDEsIDB4MjMsIDB4N2IsCi0gICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhh
MiwgMHhmMSwgMHhkMCwgMHg4NywgMHg4YSwgMHhlZSwgMHhlYl0pKSkKLQotX0dPT0RfUkVRVUVT
VF9XSVRIX1FVRVJZX1BBUlQgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vP2U9
bWMyJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nv
bm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVT
VF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAg
ICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkx
JzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAot
ICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9RVUVSWV9QQVJU
ID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4n
Ci0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVc
clxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW8/
ZT1tYzJcclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29t
XHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJc
bicgKwotICAgIF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0JBRF9SRVFVRVNUUyA9ICgK
LSAgICAoICAjIEhUVFAgcmVxdWVzdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAg
ICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ3d3dy5nb29nbGUu
Y29tJywKLSAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7
IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVu
LVVTOyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4zJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAnIEdUQjYgR1RCQScsCi0gICAgICAgICAgICAnQWNjZXB0JzogJ3Rl
eHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcKLSAg
ICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICdBY2NlcHQtTGFu
Z3VhZ2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6
ICdnemlwLGRlZmxhdGUnLAotICAgICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JzogJ0lTTy04ODU5
LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAgICAnS2VlcC1BbGl2ZSc6ICczMDAn
LAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAna2VlcC1hbGl2ZScsCi0gICAgICAgIH0pLAot
ICAgICggICMgV3JvbmcgbWV0aG9kCi0gICAgICAgIDgwLAotICAgICAgICAnUE9TVCcsCi0gICAg
ICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29t
JywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tl
dC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0
JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAg
ICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAg
ICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIE1pc3NpbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAg
ICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdI
b3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUn
LAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAg
ICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0
dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAg
ICggICMgV3JvbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAg
ICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywK
LSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Q
cm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnTm9uV2ViU29ja2V0
JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAg
ICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAg
ICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIEVtcHR5IFdlYlNvY2tldC1Qcm90b2NvbAotICAgICAg
ICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzog
J1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIs
Ci0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICcnLAotICAgICAgICAgICAg
J1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEn
OiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20n
LAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIFdyb25nIHBvcnQg
bnVtYmVyIGZvcm1hdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVt
bycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tOjB4NTAnLAot
ICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVBy
b3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAot
ICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAg
ICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9U
RVNUX0tFWTMpLAotICAgICggICMgSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaAotICAg
ICAgICA4MDgwLAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewot
ICAgICAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rp
b24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1Rf
S0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0g
ICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJT
b2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9l
eGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAgICggICMg
SWxsZWdhbCBXZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAot
ICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxl
LmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAg
ICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJT
b2NrZXQtUHJvdG9jb2wnOiAnaWxsZWdhbFx4MDlwcm90b2NvbCcsCi0gICAgICAgICAgICAnVXBn
cmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9U
RVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0g
ICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotKQotCi0KLWRlZiBfY3JlYXRlX3JlcXVl
c3QocmVxdWVzdF9kZWYpOgotICAgIGRhdGEgPSAnJwotICAgIGlmIGxlbihyZXF1ZXN0X2RlZikg
PiA0OgotICAgICAgICBkYXRhID0gcmVxdWVzdF9kZWZbNF0KLSAgICBjb25uID0gbW9jay5Nb2Nr
Q29ubihkYXRhKQotICAgIGNvbm4ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIHJlcXVlc3RfZGVm
WzBdKQotICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KAotICAgICAgICBtZXRob2Q9cmVxdWVz
dF9kZWZbMV0sCi0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZlsyXSwKLSAgICAgICAgaGVhZGVyc19p
bj1yZXF1ZXN0X2RlZlszXSwKLSAgICAgICAgY29ubmVjdGlvbj1jb25uKQotCi0KLWRlZiBfY3Jl
YXRlX2dldF9tZW1vcml6ZWRfbGluZXMobGluZXMpOgotICAgICIiIkNyZWF0ZXMgYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgdGhlIGdpdmVuIHN0cmluZy4iIiIKLQotICAgIGRlZiBnZXRfbWVtb3Jp
emVkX2xpbmVzKCk6Ci0gICAgICAgIHJldHVybiBsaW5lcwotICAgIHJldHVybiBnZXRfbWVtb3Jp
emVkX2xpbmVzCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhyZXF1ZXN0X2xp
bmVzX3NldCk6Ci0gICAgcmVxdWVzdHMgPSBbXQotICAgIGZvciBsaW5lcyBpbiByZXF1ZXN0X2xp
bmVzX3NldDoKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNU
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcyA9IF9jcmVh
dGVfZ2V0X21lbW9yaXplZF9saW5lcygKLSAgICAgICAgICAgICAgICBsaW5lcykKLSAgICAgICAg
cmVxdWVzdHMuYXBwZW5kKHJlcXVlc3QpCi0gICAgcmV0dXJuIHJlcXVlc3RzCi0KLQotY2xhc3Mg
SHlCaTAwSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3Rf
Z29vZF9yZXF1ZXN0X2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZB
VUxUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qu
d3NfcmVzb3VyY2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNv
bScsIHJlcXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3czovL2V4
YW1wbGUuY29tL2RlbW8nLCByZXF1ZXN0LndzX2xvY2F0aW9uKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29v
ZF9yZXF1ZXN0X2NhcGl0YWxpemVkX2hlYWRlcl92YWx1ZXMoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9DQVBJVEFMSVpFRF9IRUFERVJfVkFM
VUVTKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tE
aXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAg
ZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2Nhc2VfbWl4ZWRfaGVhZGVyX25hbWVzKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfQ0FTRV9NSVhFRF9I
RUFERVJfTkFNRVMpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX0RFRkFVTFRfUE9SVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
Ci0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX2RlZmF1bHRfcG9ydChzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIDQ0MykKLSAgICAg
ICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hh
a2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5k
b19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1NF
Q1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3Nf
cHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfbm9uZGVmYXVsdF9wb3J0KHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9O
REVGQVVMVF9QT1JUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0
Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JULAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRl
ZiB0ZXN0X2dvb2RfcmVxdWVzdF9zZWN1cmVfbm9uX2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX05PTkRFRkFVTFRfUE9S
VCkKLSAgICAgICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIg
PSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFu
ZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JF
U1BPTlNFX1NFQ1VSRV9OT05ERUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1w
bGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2Rl
ZmF1bHRfbm9fcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoX0dPT0RfUkVRVUVTVF9OT19QUk9UT0NPTCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRz
aGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0Vf
Tk9fUFJPVE9DT0wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfb3B0aW9uYWxfaGVhZGVy
cyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNU
X1dJVEhfT1BUSU9OQUxfSEVBREVSUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIo
cmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FWYWx1ZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJz
X2luWydFbXB0eVZhbHVlJ10pCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfd2l0aF9ub25w
cmludGFibGVfa2V5KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9H
T09EX1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZKQotICAgICAgICBoYW5kc2hha2VyID0g
SGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRz
aGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQ
T05TRV9XSVRIX05PTlBSSU5UQUJMRV9LRVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1
ZXN0X3dpdGhfcXVlcnlfcGFydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChfR09PRF9SRVFVRVNUX1dJVEhfUVVFUllfUEFSVCkKLSAgICAgICAgaGFuZHNoYWtlciA9
IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVT
UE9OU0VfV0lUSF9RVUVSWV9QQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd3M6
Ly9leGFtcGxlLmNvbS9kZW1vP2U9bWMyJywgcmVxdWVzdC53c19sb2NhdGlvbikKLQotICAgIGRl
ZiB0ZXN0X2JhZF9yZXF1ZXN0cyhzZWxmKToKLSAgICAgICAgZm9yIHJlcXVlc3QgaW4gbWFwKF9j
cmVhdGVfcmVxdWVzdCwgX0JBRF9SRVFVRVNUUyk6Ci0gICAgICAgICAgICBoYW5kc2hha2VyID0g
SGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNo
YWtlKQotCi0KLWNsYXNzIEh5QmkwMFZhbGlkYXRlU3VicHJvdG9jb2xUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKLSAgICBkZWYgdGVzdF92YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmKToKLSAgICAg
ICAgIyBzaG91bGQgc3VjY2VlZC4KLSAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1w
bGUnKQotICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScpCi0gICAgICAgIF92
YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlXHg3ZXByb3RvY29sJykKLSAgICAgICAgX3ZhbGlk
YXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDIwcHJvdG9jb2wnKQotCi0gICAgICAgICMgc2hvdWxk
IGZhaWwuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtl
RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9j
b2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJvdG9jb2wnKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3NhbXBsZVx4N2Zwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhh
bmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1
YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFwYW5l
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDM2ZGM1N2MzNzMxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rl
c3RfaHR0cF9oZWFkZXJfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9y
IGh0dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAotCi0KLWNsYXNzIFVuaXRU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBodHRwX2hlYWRl
cl91dGlsIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlbGF0aXZlX3VyaShzZWxm
KToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaSgnL3dzL3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGhvc3QpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX2Fic29sdXRl
X3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgKLSAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDoxMDA4MC93cy90ZXN0
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbG9jYWxob3N0JywgaG9zdCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxMDA4MCwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
L3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0
dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb20v
d3MvdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MCwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJj
ZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzczovL2V4YW1w
bGUuY29tLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0NDMsIHBvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy8nLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0
dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206
ODA4MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MDgwLCBwb3J0KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcvJywgcmVzb3VyY2UpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxm
KToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaSgnd3M6Ly8vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkK
LQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKCd3czovL2xvY2FsaG9zdDonKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJl
c291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRp
bC5wYXJzZV91cmkoJ3dzOi8vbG9jYWxob3N0Oi93cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgcmVzb3VyY2UpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1
bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbWVtb3JpemluZ2Zp
bGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMWI4ZWVmNDMzNy4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTA0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1lbW9yaXppbmdmaWxlIG1vZHVsZS4iIiIKLQotCi1p
bXBvcnQgU3RyaW5nSU8KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAj
IFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1lbW9yaXppbmdmaWxlCi0KLQotY2xhc3MgVXRpbFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIG1lbW9yaXppbmdm
aWxlIG1vZHVsZS4iIiIKLQotICAgIGRlZiBjaGVjayhzZWxmLCBtZW1vcml6aW5nX2ZpbGUsIG51
bV9yZWFkLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgZm9yIHVudXNlZCBpbiByYW5nZShudW1f
cmVhZCk6Ci0gICAgICAgICAgICBtZW1vcml6aW5nX2ZpbGUucmVhZGxpbmUoKQotICAgICAgICBh
Y3R1YWxfbGlzdCA9IG1lbW9yaXppbmdfZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkp
Ci0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1
YWxfbGlzdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwp
Ci0KLSAgICBkZWYgY2hlY2tfd2l0aF9zaXplKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgcmVhZF9z
aXplLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgcmVhZF9saXN0ID0gW10KLSAgICAgICAgcmVh
ZF9saW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGxpbmUgPSBtZW1v
cml6aW5nX2ZpbGUucmVhZGxpbmUocmVhZF9zaXplKQotICAgICAgICAgICAgbGluZV9sZW5ndGgg
PSBsZW4obGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lX2xlbmd0aCA8PSBy
ZWFkX3NpemUpCi0gICAgICAgICAgICBpZiBsaW5lX2xlbmd0aCA9PSAwOgotICAgICAgICAgICAg
ICAgIGlmIHJlYWRfbGluZSAhPSAnJzoKLSAgICAgICAgICAgICAgICAgICAgcmVhZF9saXN0LmFw
cGVuZChyZWFkX2xpbmUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJlYWRf
bGluZSArPSBsaW5lCi0gICAgICAgICAgICBpZiBsaW5lW2xpbmVfbGVuZ3RoIC0gMV0gPT0gJ1xu
JzoKLSAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKLSAgICAgICAg
ICAgICAgICByZWFkX2xpbmUgPSAnJwotICAgICAgICBhY3R1YWxfbGlzdCA9IG1lbW9yaXppbmdf
ZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4ocmVhZF9saXN0KSkKLSAgICAgICAgZm9yIGV4cGVj
dGVkLCBhY3R1YWwsIHJlYWQgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9saXN0KToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlYWQpCi0KLSAgICBkZWYgdGVzdF9nZXRfbWVtb3Jp
emVkX2xpbmVzKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmls
ZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAgICAgICAnSGVs
bG9cbldvcmxkXG5XZWxjb21lJykpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxl
LCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRcbicsICdXZWxjb21lJ10pCi0KLSAgICBkZWYgdGVzdF9n
ZXRfbWVtb3JpemVkX2xpbmVzX2xpbWl0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAg
bWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8u
U3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScpLCAyKQot
ICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMywgWydIZWxsb1xuJywgJ1dvcmxk
XG4nXSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfZW1wdHlfZmlsZShzZWxm
KToKLSAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0Zp
bGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJycpKQotICAgICAgICBzZWxm
LmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQotCi0gICAgZGVmIHRlc3RfZ2V0X21lbW9y
aXplZF9saW5lc193aXRoX3NpemUoc2VsZik6Ci0gICAgICAgIGZvciBzaXplIGluIHJhbmdlKDEs
IDEwKToKLSAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9y
aXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAotICAgICAgICAgICAgICAgICdIZWxsb1xuV29y
bGRcbldlbGNvbWUnKSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfd2l0aF9zaXplKG1lbW9yaXpp
bmdfZmlsZSwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnSGVsbG9c
bicsICdXb3JsZFxuJywgJ1dlbGNvbWUnXSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X21vY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGMyM2E3M2Q4ZmIuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9tb2NrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9y
IG1vY2sgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IHRocmVhZGluZwotaW1w
b3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRv
IGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sK
LQotCi1jbGFzcyBNb2NrQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5p
dHRlc3QgZm9yIE1vY2tDb25uIGNsYXNzLiIiIgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLl9jb25uID0gbW9jay5Nb2NrQ29ubignQUJDXHJcbkRFRkdcclxuXHJcbkhJSksn
KQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ0FCQ1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0RFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdISUpLJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0KLSAgICBkZWYgdGVzdF9yZWFk
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBQkNcclxuRCcsIHNlbGYuX2Nvbm4u
cmVhZCg2KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRUZHXHJcblxyXG5ISScsIHNlbGYu
X2Nvbm4ucmVhZCg5KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSksnLCBzZWxmLl9jb25u
LnJlYWQoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWQo
MTApKQotCi0gICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdcclxuSElKSycsIHNlbGYuX2Nvbm4ucmVhZCg5KSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0gICAgZGVm
IHRlc3Rfd3JpdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ0hlbGxvXHJcbicp
Ci0gICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ1dvcmxkXHJcbicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0hlbGxvXHJcbldvcmxkXHJcbicsIHNlbGYuX2Nvbm4ud3JpdHRlbl9kYXRhKCkp
Ci0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tCbG9ja2luZ0Nvbm4gY2xhc3MuIiIiCi0KLSAgICBkZWYg
dGVzdF9yZWFkKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IGRhdGEgcHV0IHRvIE1vY2tC
bG9ja2luZ0Nvbm4gYnkgcHV0X2J5dGVzIG1ldGhvZCBjYW4gYmUKLSAgICAgICAgcmVhZCBmcm9t
IGl0LgotICAgICAgICAiIiIKLQotICAgICAgICBjbGFzcyBMaW5lUmVhZGVyKHRocmVhZGluZy5U
aHJlYWQpOgotICAgICAgICAgICAgIiIiQSB0ZXN0IGNsYXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJl
YWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRoZQotICAgICAgICAgICAgc3BlY2lmaWVkIGNvbm4gcmVw
ZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVhZCBkYXRhIHRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAg
ICAgIHF1ZXVlLgotICAgICAgICAgICAgIiIiCi0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjb25uLCBxdWV1ZSk6Ci0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2lu
aXRfXyhzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKLSAgICAgICAg
ICAgICAgICBzZWxmLl9jb25uID0gY29ubgotICAgICAgICAgICAgICAgIHNlbGYuc2V0RGFlbW9u
KFRydWUpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICAgICAgICAgIGRlZiBy
dW4oc2VsZik6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YSA9IHNlbGYuX2Nvbm4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWV1ZS5wdXQoZGF0YSkKLQotICAgICAgICBjb25uID0gbW9jay5Nb2NrQmxvY2tpbmdDb25u
KCkKLSAgICAgICAgcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHJlYWRlciA9IExpbmVS
ZWFkZXIoY29ubiwgcXVldWUpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhxdWV1ZS5lbXB0eSgp
KQotICAgICAgICBjb25uLnB1dF9ieXRlcygnRm9vIGJhclxyXG4nKQotICAgICAgICByZWFkID0g
cXVldWUuZ2V0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm9vIGJhclxyXG4nLCByZWFk
KQotCi0KLWNsYXNzIE1vY2tUYWJsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEg
dW5pdHRlc3QgZm9yIE1vY2tUYWJsZSBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9m
cm9tX2RpY3Qoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoeydLZXknOiAn
VmFsdWUnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tF
WScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLQot
ICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2xpc3Qoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9j
ay5Nb2NrVGFibGUoWygnS2V5JywgJ1ZhbHVlJyldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1Zh
bHVlJywgdGFibGVbJ2tleSddKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fdHVwbGUoc2Vs
Zik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoKCgnS2V5JywgJ1ZhbHVlJyksKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLQotICAgIGRlZiB0
ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQotICAgICAg
ICB0YWJsZVsnS2V5J10gPSAnVmFsdWUnCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVl
JywgdGFibGUuZ2V0KCdLZXknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0
YWJsZS5nZXQoJ2tleScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxl
LmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tl
eSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsnS0VZJ10pCi0KLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvdGVzdF9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzQ3MzVj
NjMwNDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTM0NyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKLWZyb20g
X19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLQotCi1pbXBvcnQgYXJyYXkKLWltcG9y
dCBRdWV1ZQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHVuaXR0ZXN0Ci1p
bXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBs
b2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25z
IGltcG9ydCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBv
cnQgSW52YWxpZFVURjhFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBv
cnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGll
NzUKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gdGVzdCBpbXBvcnQgbW9jawotCi0K
LSMgV2UgdXNlIG9uZSBmaXhlZCBub25jZSBmb3IgdGVzdGluZyBpbnN0ZWFkIG9mIGNyeXB0b2dy
YXBoaWNhbGx5IHNlY3VyZSBQUk5HLgotX01BU0tJTkdfTk9OQ0UgPSAnQUJDRCcKLQotCi1kZWYg
X21hc2tfaHliaShmcmFtZSk6Ci0gICAgZnJhbWVfa2V5ID0gbWFwKG9yZCwgX01BU0tJTkdfTk9O
Q0UpCi0gICAgZnJhbWVfa2V5X2xlbiA9IGxlbihmcmFtZV9rZXkpCi0gICAgcmVzdWx0ID0gYXJy
YXkuYXJyYXkoJ0InKQotICAgIHJlc3VsdC5mcm9tc3RyaW5nKGZyYW1lKQotICAgIGNvdW50ID0g
MAotICAgIGZvciBpIGluIHhyYW5nZShsZW4ocmVzdWx0KSk6Ci0gICAgICAgIHJlc3VsdFtpXSBe
PSBmcmFtZV9rZXlbY291bnRdCi0gICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBmcmFtZV9r
ZXlfbGVuCi0gICAgcmV0dXJuIF9NQVNLSU5HX05PTkNFICsgcmVzdWx0LnRvc3RyaW5nKCkKLQot
Ci1kZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcXVlc3QsIHN0
cmVhbV9vcHRpb25zKToKLSAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jl
c3BvbnNlKCkKLSAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKLSAgICAgICAgcHJvY2Vzc29y
LnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotICAgICAgICByZXF1ZXN0Lndz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCi0KLQotZGVmIF9jcmVhdGVf
cmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgIHJlYWRfZGF0YSwKLSAgICAgICAgZGVmbGF0
ZV9mcmFtZV9yZXF1ZXN0PU5vbmUsCi0gICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PU5vbmUpOgotICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tD
b25uKCcnLmpvaW4ocmVhZF9kYXRhKSkpCi0gICAgcmVxLndzX3ZlcnNpb24gPSBjb21tb24uVkVS
U0lPTl9IWUJJX0xBVEVTVAotICAgIHJlcS53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdCi0K
LSAgICBwcm9jZXNzb3IgPSBOb25lCi0gICAgaWYgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0IGlzIG5v
dCBOb25lOgotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNz
b3IoZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0KQotICAgIGVsaWYgcGVybWVzc2FnZV9kZWZsYXRlX3Jl
cXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nlc3NvciA9IFBlck1lc3NhZ2VEZWZsYXRl
RXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0KQotCi0gICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKLSAgICBpZiBw
cm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNz
b3IocHJvY2Vzc29yLCByZXEsIHN0cmVhbV9vcHRpb25zKQotICAgIHJlcS53c19zdHJlYW0gPSBT
dHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLQotICAgIHJldHVybiByZXEKLQotCi1kZWYgX2Ny
ZWF0ZV9yZXF1ZXN0KCpmcmFtZXMpOgotICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcg
ZGF0YSBnaXZlbiBhcyBmcmFtZXMuCi0KLSAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBj
YWxsaW5nIHJlcXVlc3QuY29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAotICAgIGlzIE1v
Y2tSZXF1ZXN0IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gICAgIiIiCi0KLSAgICByZWFk
X2RhdGEgPSBbXQotICAgIGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6Ci0gICAgICAgIHJl
YWRfZGF0YS5hcHBlbmQoaGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKLQotICAgIHJldHVybiBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKHJlYWRfZGF0YSkKLQotCi1kZWYgX2NyZWF0ZV9i
bG9ja2luZ19yZXF1ZXN0KCk6Ci0gICAgIiIiQ3JlYXRlcyBNb2NrUmVxdWVzdC4KLQotICAgIERh
dGEgd3JpdHRlbiB0byBhIE1vY2tSZXF1ZXN0IGNhbiBiZSByZWFkIG91dCBieSBjYWxsaW5nCi0g
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpLgotICAgICIiIgotCi0gICAgcmVx
ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Jsb2NraW5nQ29ubigpKQot
ICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKLSAgICBzdHJl
YW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW0o
cmVxLCBzdHJlYW1fb3B0aW9ucykKLSAgICByZXR1cm4gcmVxCi0KLQotZGVmIF9jcmVhdGVfcmVx
dWVzdF9oaXhpZTc1KHJlYWRfZGF0YT0nJyk6Ci0gICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChj
b25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKLSAgICByZXEud3Nfc3RyZWFtID0g
U3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWRlZiBfY3JlYXRlX2Jsb2Nr
aW5nX3JlcXVlc3RfaGl4aWU3NSgpOgotICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVj
dGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKLSAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFt
SGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWNsYXNzIEJhc2ljTWVzc2FnZVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0uIiIiCi0K
LSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVs
bG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNUhlbGxvJywgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHBheWxvYWQgPSAnYScgKiAxMjUK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4
ODFceDdkJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZWRpdW1fbWVzc2Fn
ZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
cGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4N2VceDAwXHg3ZScgKyBw
YXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAtIDEpCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgx
XHg3ZVx4ZmZceGZmJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9sYXJnZV9t
ZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICogKDEgPDwgMTYpCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHg3Zlx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJyArIHBheWxvYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB1J1x1
NjVlNScpCi0gICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQgYXMgZTYsOTcsYTUgaW4gVVRGLTgK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDNceGU2XHg5N1x4YTUnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQot
ICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCAnSGVsbG8nLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJyAnLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dv
cmxkJywgRmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICchJywg
VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4MDVIZWxsb1x4MDBceDAxIFx4
MDBceDA1V29ybGRceDgwXHgwMSEnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRz
X2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hl
bGxvIFdvcmxkIScsIEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4MGNIZWxsbyBXb3Js
ZCFceDgwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDgxXHg4
NScsICdIZWxsbycpLCAoJ1x4ODFceDg2JywgJ1dvcmxkIScpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI1Ci0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QoKCdceDgxXHhmZCcsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV9tZWRpdW1fbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9
ICdhJyAqIDEyNgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ZmVc
eDAwXHg3ZScsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHBheWxvYWQgPSAnYScg
KiAoKDEgPDwgMTYpIC0gMSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4
ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXls
b2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqICgxIDw8
IDE2KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdc
eDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJywgcGF5bG9hZCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2xlbmd0aF9ub3RfZW5jb2RlZF91c2luZ19t
aW5pbWFsX251bWJlcl9vZl9ieXRlcyhzZWxmKToKLSAgICAgICAgIyBMb2cgd2FybmluZyBvbiBy
ZWNlaXZpbmcgYmFkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIHRoYXQgZG9lc24ndCB1c2UKLSAgICAg
ICAgIyBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBidXQgY29udGludWUgcHJvY2Vzc2luZy4KLQot
ICAgICAgICBwYXlsb2FkID0gJ2EnCi0gICAgICAgICMgMSBieXRlIGNhbiBiZSByZXByZXNlbnRl
ZCB3aXRob3V0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDgxXHhmZlx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceDAxJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgoJ1x4ODFceDgzJywgJ1x4ZTZceDljXHhhYycpKQotICAgICAgICAjIFUrNjcy
YyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKLSAgICAgICAg
IyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlkIGFzIFVURi04LgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ODInLCAnXHg4MFx4ODEnKSkKLSAgICAgICAgIyBJbnZh
bGlkIGNoYXJhY3RlcnMgc2hvdWxkIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRVVEY4RXhjZXB0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDAxXHg4
NScsICdIZWxsbycpLAotICAgICAgICAgICAgKCdceDAwXHg4MScsICcgJyksCi0gICAgICAgICAg
ICAoJ1x4MDBceDg1JywgJ1dvcmxkJyksCi0gICAgICAgICAgICAoJ1x4ODBceDgxJywgJyEnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQhJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c191bmlj
b2RlKHNlbGYpOgotICAgICAgICAjIFVURi04IGVuY29kZXMgVSs2ZjIyIGludG8gZTZiY2EyIGFu
ZCBVKzViNTcgaW50byBlNWFkOTcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
Ci0gICAgICAgICAgICAoJ1x4MDFceDgyJywgJ1x4ZTZceGJjJyksCi0gICAgICAgICAgICAoJ1x4
MDBceDgyJywgJ1x4YTJceGU1JyksCi0gICAgICAgICAgICAoJ1x4ODBceDgyJywgJ1x4YWRceDk3
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTZmMjJcdTViNTcnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRz
X2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDAxXHg4YycsICdIZWxsbyBXb3JsZCEnKSwg
KCdceDgwXHg4MCcsICcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQh
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX2ZyYWdtZW50c19kdXBsaWNhdGVfc3RhcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDg1JywgJ0hlbGxvJyksICgnXHgw
MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZh
bGlkRnJhbWVFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3RhcnRlZChz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4MDBceDg1JywgJ0hl
bGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhj
ZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfZnJhZ21lbnRzX2VuZF9idXRfbm90X3N0YXJ0ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgwXHg4NScsICdIZWxsbycpKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2Fy
ZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAg
ICgnXHg4Zlx4ODYnLCAnSUdOT1JFJyksICgnXHg4MVx4ODUnLCAnSGVsbG8nKSwKLSAgICAgICAg
ICAgICgnXHg4Zlx4ODknLCAnRElTUkVHQVJEJyksICgnXHg4MVx4ODYnLCAnV29ybGQhJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJl
cXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dv
cmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3Rf
cmVjZWl2ZV9jbG9zZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgK
LSAgICAgICAgICAgICgnXHg4OFx4OGEnLCBzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29k
IGJ5ZScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwMDAsIHJlcXVlc3Qu
d3NfY2xvc2VfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnR29vZCBieWUnLCByZXF1
ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9jbG9zZShz
ZWxmKToKLSAgICAgICAgcmVhc29uID0gJ2EnICogMTIzCi0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODhceGZkJywKLSAgICAgICAgICAgICBzdHJ1
Y3QucGFjaygnIUgnLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKSArIHJlYXNvbikpCi0g
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19O
T1JNQUxfQ0xPU1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWFzb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC53c19jbG9zZV9jb2Rl
LCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uLCByZWFzb24pCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Ns
b3NlX3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkK
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2EnICogMTI0KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV9pbmNvbnNp
c3RlbnRfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KCkKLSAgICAgICAgIyByZWFzb24gcGFyYW1ldGVyIG11c3Qgbm90IGJlIHNwZWNpZmll
ZCB3aGVuIGNvZGUgaXMgTm9uZS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5C
YWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbS5j
bG9zZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2EnKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVx
dWVzdCwgJ0hlbGxvIFdvcmxkIScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODlceDBj
SGVsbG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2xvbmdlc3RfcGluZyhzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwu
c2VuZF9waW5nKHJlcXVlc3QsICdhJyAqIDEyNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
XHg4OVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfcGluZ190b29f
bG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnNlbmRfcGluZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnICogMTI2KQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyByZWNl
aXZpbmcgYSBwaW5nIGNvbnRyb2wgZnJhbWUuIiIiCi0KLSAgICAgICAgZGVmIGhhbmRsZXIocmVx
dWVzdCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LmNhbGxlZCA9IFRydWUKLQotICAg
ICAgICAjIFN0cmVhbSBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgdG8gcGluZyB3aXRoIHBvbmcgd2l0
aG91dCBhbnkgYWN0aW9uCi0gICAgICAgICMgYnkgYXBwbGljYXRpb24gbGF5ZXIuCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1JywgJ0hl
bGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
V29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnXHg4YVx4MDVIZWxsbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4
ODUnLCAnV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hhbmRsZXIgPSBoYW5kbGVy
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1ZXN0LmNhbGxlZCkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDg5XHhmZCcsICdhJyAqIDEyNSks
ICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQn
LCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHg4YVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVf
cGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
J1x4ODlceGZlXHgwMFx4N2UnLCAnYScgKiAxMjYpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Bvbmcoc2VsZik6Ci0gICAgICAgICIiIlRl
c3RzIHJlY2VpdmluZyBhIHBvbmcgY29udHJvbCBmcmFtZS4iIiIKLQotICAgICAgICBkZWYgaGFu
ZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKLSAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1
ZQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4
OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgcmVxdWVz
dC5vbl9wb25nX2hhbmRsZXIgPSBoYW5kbGVyCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJl
cXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODlceDA1SGVsbG8n
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKLSAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBidXQgcmVjZWl2ZV9tZXNz
YWdlIHdvbid0IHJldHVybiBmb3IgaXQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxk
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgICMgQ2hlY2sgdGhh
dCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2FnZSBjYWxsLgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceDg5XHgwNUhlbGxvJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV91bnNvbGlj
aXRlZF9wb25nKHNlbGYpOgotICAgICAgICAjIFVuc29saWNpdGVkIHBvbmcgaXMgYWxsb3dlZCBm
cm9tIEh5QmkgMDcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAg
ICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAg
ICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDhhXHg4NScsICdIZWxsbycpLCAoJ1x4
ODFceDg1JywgJ1dvcmxkJykpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdK
dW1ibycpCi0gICAgICAgICMgQm9keSBtaXNtYXRjaC4KLSAgICAgICAgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3BpbmdfY2Fubm90X2JlX2ZyYWdtZW50
ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDA5XHg4NScs
ICdIZWxsbycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFt
ZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVz
dF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMVx4MDAnLCAnYScgKiAyNTYpKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QpCi0KLQotY2xhc3MgRGVmbGF0ZUZyYW1lVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGNoZWNraW5nIGRlZmxhdGUtZnJhbWUgZXh0
ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBj
b21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9D
T01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVf
RVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0
YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBtc2d1
dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQotCi0gICAgICAgIGV4cGVjdGVkID0g
JycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxv
JykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lO
Q19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00
XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQot
ICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0KLSAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRf
d29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXBy
ZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0g
J1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29t
cHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2Fn
ZV9iZmluYWwoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2Zy
YW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4o
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVf
cHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAgICAgICBk
ZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5zZXRfYmZpbmFsKFRydWUpCi0gICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgZXhwZWN0ZWQgPSAnJwotCi0gICAgICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvICsgY2hyKDApCi0gICAgICAgIGV4cGVj
dGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVk
ICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3Nv
YmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3Mu
Y29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5m
bHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3Nl
ZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21w
cmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2NvbXBfYml0KHNlbGYpOgot
ICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0g
ICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxB
VEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5z
aW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNp
b25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yID0gcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5kaXNh
YmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9wcm9jZXNzb3IuZW5hYmxl
X291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVx
dWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0KLSAgICAgICAgY29tcHJl
c3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZXhwZWN0ZWQg
Kz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0g
Y29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgxXHgwNUhlbGxvJwot
Ci0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxv
JykKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3NlZF8y
bmRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVz
c2VkXzJuZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF8ybmRfaGVsbG8K
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfbm9fY29udGV4dF90
YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxB
VEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIGV4
dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAn
JywgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgZm9yIGkgaW4geHJh
bmdlKDMpOgotICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxv
JykKLQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzZWRfbWVz
c2FnZVs6LTRdCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9t
ZXNzYWdlKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX21lc3NhZ2UKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZXhwZWN0ZWQgKyBleHBlY3RlZCArIGV4
cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVz
dF9iYWRfcmVxdWVzdF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IGlm
IHRoZXJlJ3MgYW55dGhpbmcgd3Jvbmcgd2l0aCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbgotICAg
ICAgICByZXF1ZXN0LCBkZWZsYXRlLWZyYW1lIGlzIHJlamVjdGVkLgotICAgICAgICAiIiIKLQot
ICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZM
QVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBtYXhfd2luZG93X2JpdHMgbGVzcyB0aGFu
IDggaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5k
b3dfYml0cycsICc3JykKLSAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9u
UHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQot
ICAgICAgICAjIG1heF93aW5kb3dfYml0cyBncmVhdGVyIHRoYW4gMTUgaXMgaWxsZWdhbC4KLSAg
ICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICcxNicpCi0g
ICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNp
b24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcHJvY2Vzc29yLmdldF9leHRlbnNp
b25fcmVzcG9uc2UoKSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBOb24gaW50
ZWdlciBtYXhfd2luZG93X2JpdHMgaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9w
YXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICdmb29iYXInKQotICAgICAgICBwcm9jZXNzb3Ig
PSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0K
LSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVG
TEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgICMgbm9fY29udGV4dF90YWtlb3ZlciBtdXN0
IG5vdCBoYXZlIGFueSB2YWx1ZS4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ25v
X2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVm
IHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0g
ICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNp
b24pCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMoOCkKLSAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOCcsIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJf
dmFsdWUoJ21heF93aW5kb3dfYml0cycpKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAg
ICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQot
ICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkK
LSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdub19jb250ZXh0
X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAgIHJlc3Bv
bnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ25vX2NvbnRleHRfdGFrZW92ZXInKSBpcyBOb25lKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9
IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lP
TiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGRhdGEgPSAnJwot
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQot
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0g
ICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwgMHg4MCkK
LSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAgICAgICAg
Y29tcHJlc3NlZF93ZWJzb2NrZXQgPSBjb21wcmVzcy5jb21wcmVzcygnV2ViU29ja2V0JykKLSAg
ICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklT
SCkKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gJ1x4MDAnCi0gICAgICAgIGRhdGEg
Kz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd2Vic29ja2V0KSB8IDB4ODApCi0gICAgICAg
IGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dlYnNvY2tldCkKLQotICAgICAgICBjb21w
cmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXBy
ZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVz
c2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBj
b21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGRhdGEgKz0g
J1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4MCkKLSAgICAgICAgZGF0YSAr
PSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQot
ICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcs
IDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBk
ZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdXZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdl
X2NsaWVudF91c2luZ19zbWFsbGVyX3dpbmRvdyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0
IGZyYW1lcyBjb21pbmcgZnJvbSBhIGNsaWVudCB3aGljaCBpcyB1c2luZyBzbWFsbGVyIHdpbmRv
dwotICAgICAgICBzaXplIHRoYXQgdGhlIHNlcnZlciBhcmUgY29ycmVjdGx5IHJlY2VpdmVkLgot
ICAgICAgICAiIiIKLQotICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cgYml0cyBv
ZiA4IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KLSAgICAgICAgY29tcHJlc3MgPSB6bGli
LmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHps
aWIuREVGTEFURUQsIC04KQotCi0gICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgICMgVXNlIGEg
ZnJhbWUgd2hvc2UgY29udGVudCBpcyBiaWdnZXIgdGhhbiB0aGUgY2xpZW50cycgREVGTEFURSB3
aW5kb3cKLSAgICAgICAgIyBzaXplIGJlZm9yZSBjb21wcmVzc2lvbi4gVGhlIGNvbnRlbnQgbWFp
bmx5IGNvbnNpc3RzIG9mICdhJyBidXQKLSAgICAgICAgIyByZXBldGl0aW9uIG9mICdiJyBpcyBw
dXQgYXQgdGhlIGhlYWQgYW5kIHRhaWwgc28gdGhhdCBpZiB0aGUgd2luZG93Ci0gICAgICAgICMg
c2l6ZSBpcyBiaWcsIHRoZSBoZWFkIGlzIGJhY2stcmVmZXJlbmNlZCBidXQgaWYgc21hbGwsIG5v
dC4KLSAgICAgICAgcGF5bG9hZCA9ICdiJyAqIDY0ICsgJ2EnICogMTAyNCArICdiJyAqIDY0Ci0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2FkKQotICAg
ICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAg
ICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwgMHg4MCkKLSAg
ICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAgICAgICAgIyBD
bG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVj
dC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAg
ICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2Uo
cmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfY29tcF9iaXQoc2VsZik6
Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIu
Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0K
LSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNz
LmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21w
cmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJl
c3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3Nl
ZF9oZWxsbykKLQotICAgICAgICBkYXRhICs9ICdceDgxXHg4NScgKyBfbWFza19oeWJpKCdIZWxs
bycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAg
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklU
UykKLQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdI
ZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNvbXByZXNz
ZWRfMm5kX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJl
c3NlZF8ybmRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXBy
ZXNzZWRfMm5kX2hlbGxvKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEsIGRlZmxh
dGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIGZvciBpIGluIHhyYW5nZSgzKToK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdmFyaW91c19i
dHlwZShzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1B
WF9XQklUUykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyAr
PSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUg
KGxlbihjb21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHli
aShjb21wcmVzc2VkX2hlbGxvKQotCi0gICAgICAgIGNvbXByZXNzZWRfd2Vic29ja2V0ID0gY29t
cHJlc3MuY29tcHJlc3MoJ1dlYlNvY2tldCcpCi0gICAgICAgIGNvbXByZXNzZWRfd2Vic29ja2V0
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd2Vi
c29ja2V0ICs9ICdceDAwJwotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21wcmVz
c2VkX3dlYnNvY2tldCkgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJl
c3NlZF93ZWJzb2NrZXQpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAot
ICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16
bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29t
cHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNz
ZWRfd29ybGRbOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2Vk
X3dvcmxkKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dv
cmxkKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAnXHg4OFx4OGEn
ICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScpCi0KLSAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFU
RV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJv
bV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVu
c2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV2ViU29ja2V0Jywg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
LQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVm
IHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignc2VydmVy
X25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNz
YWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHJlc3BvbnNl
ID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoCi0gICAgICAgICAgICByZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlcicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
Tm9uZSwgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXInKSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KAotICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAg
ICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgTm9u
ZSkKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IoZXh0ZW5zaW9uKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93aW5kb3df
Yml0cyg4KQotICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
KFRydWUpCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJzgnLCByZXNwb25z
ZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAgIHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ2Ns
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1
ZSgnY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVz
c2FnZShzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRl
cigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAg
ICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBjb21w
cmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRf
Q09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZXhwZWN0
ZWQgPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCAr
PSBjb21wcmVzc2VkX2hlbGxvCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZW1w
dHlfbWVzc2FnZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IGFuIGVtcHR5IG1lc3NhZ2Ug
aXMgY29tcHJlc3NlZCBjb3JyZWN0bHkuIiIiCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKLQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJykK
LQotICAgICAgICAjIFBheWxvYWQgaW4gYmluYXJ5OiAwYjAwMDAwMDAwCi0gICAgICAgICMgRnJv
bSBMU0IsCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAgICMgLSAyIGJp
dHMgb2YgQlRZUEUgKG5vIGNvbXByZXNzaW9uKQotICAgICAgICAjIC0gNSBiaXRzIG9mIHBhZGRp
bmcKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhjMVx4MDFceDAwJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBk
ZWYgdGVzdF9zZW5kX21lc3NhZ2Vfd2l0aF9udWxsX2NoYXJhY3RlcihzZWxmKToKLSAgICAgICAg
IiIiVGVzdCB0aGF0IGEgc2ltcGxlIHBheWxvYWQgKG9uZSBudWxsKSBpcyBmcmFtZWQgY29ycmVj
dGx5LiIiIgotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
Ci0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAg
ICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0KLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1x4MDAnKQotCi0gICAgICAgICMgUGF5
bG9hZCBpbiBiaW5hcnk6IDBiMDExMDAwMTAgMGIwMDAwMDAwMCAwYjAwMDAwMDAwCi0gICAgICAg
ICMgRnJvbSBMU0IsCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAgICMg
LSAyIGJpdHMgb2YgQlRZUEUgKDAxIHRoYXQgbWVhbnMgZml4ZWQgSHVmZm1hbikKLSAgICAgICAg
IyAtIDggYml0cyBvZiB0aGUgZmlyc3QgY29kZSAoMDAxMTAwMDAgdGhhdCBpcyB0aGUgY29kZSBm
b3IgdGhlIGxpdGVyYWwKLSAgICAgICAgIyAgIGFscGhhYmV0IDB4MDApCi0gICAgICAgICMgLSA3
IGJpdHMgb2YgdGhlIHNlY29uZCBjb2RlICgwMDAwMDAwIHRoYXQgaXMgdGhlIGNvZGUgZm9yIHRo
ZQotICAgICAgICAjICAgZW5kLW9mLWJsb2NrKQotICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFM
ICgwKQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFIChubyBjb21wcmVzc2lvbikKLSAgICAg
ICAgIyAtIDIgYml0cyBvZiBwYWRkaW5nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4YzFc
eDAzXHg2Mlx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX3R3b19tZXNzYWdlcyhz
ZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAg
ICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAg
ICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29t
cHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHps
aWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0K
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAg
ICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAg
ICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGNvbXByZXNzZWRfd29y
bGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxk
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMx
JWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNz
ZWRfd29ybGQKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJh
Z21lbnRlZChzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lP
TikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAg
ICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQot
ICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5ZScsIGVuZD1GYWxz
ZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKLQotICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5a
X0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gp
Ci0gICAgICAgIGV4cGVjdGVkID0gJ1x4NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAg
ICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotICAgICAgICBjb21wcmVzc2VkX2dv
b2RieWUgPSBjb21wcmVzcy5jb21wcmVzcygnR29vZGJ5ZScpCi0gICAgICAgIGNvbXByZXNzZWRf
Z29vZGJ5ZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgZXhw
ZWN0ZWQgKz0gJ1x4MDAlYycgJSBsZW4oY29tcHJlc3NlZF9nb29kYnllKQotICAgICAgICBleHBl
Y3RlZCArPSBjb21wcmVzc2VkX2dvb2RieWUKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNv
bXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQg
PSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBs
ZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3Js
ZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRlZF9l
bXB0eV9maXJzdF9mcmFtZShzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRF
X0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2Rh
dGEoCi0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVu
c2lvbikKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxz
ZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5a
X0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCcnKQotICAgICAgICBj
b21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAg
ICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAg
IGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9
IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfZW1w
dHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycg
JSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9l
bXB0eQotICAgICAgICBwcmludCgnJXInICUgZXhwZWN0ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAg
IGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2xhc3RfZnJhbWUoc2VsZik6
Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAg
ICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNv
bXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6
bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9
IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdc
eDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXBy
ZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNzLmNvbXByZXNz
KCcnKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3NlZF9lbXB0eVs6
LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfZW1wdHkp
Ci0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhzZWxmKToKLSAgICAg
ICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi0gICAgICAgIHRl
c3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21tb25fcGFydAotCi0g
ICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIGV4dGVu
c2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzgnKQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAg
ICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1
dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB0ZXN0X21lc3NhZ2UpCi0KLSAgICAgICAgZXhwZWN0
ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplID0gMgotICAgICAgICBleHBlY3RlZF93ZWJzb2NrZXRf
cGF5bG9hZF9zaXplID0gOTEKLQotICAgICAgICBhY3R1YWxfZnJhbWUgPSByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF93
ZWJzb2NrZXRfaGVhZGVyX3NpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X3dlYnNvY2tldF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGFj
dHVhbF9mcmFtZSkpCi0gICAgICAgIGFjdHVhbF9oZWFkZXIgPSBhY3R1YWxfZnJhbWVbMDpleHBl
Y3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemVdCi0gICAgICAgIGFjdHVhbF9wYXlsb2FkID0gYWN0
dWFsX2ZyYW1lW2V4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZTpdCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAnXHhjMSVjJyAlIGV4cGVjdGVkX3dlYnNv
Y2tldF9wYXlsb2FkX3NpemUsIGFjdHVhbF9oZWFkZXIpCi0gICAgICAgIGRlY29tcHJlc3MgPSB6
bGliLmRlY29tcHJlc3NvYmooLTgpCi0gICAgICAgIGRlY29tcHJlc3NlZF9tZXNzYWdlID0gZGVj
b21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIGFjdHVhbF9wYXlsb2FkICsgJ1x4
MDBceDAwXHhmZlx4ZmYnKQotICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSArPSBkZWNvbXBy
ZXNzLmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X21lc3NhZ2UsIGRlY29t
cHJlc3NlZF9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXBy
ZXNzLnVudXNlZF9kYXRhKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21w
cmVzcy51bmNvbnN1bWVkX3RhaWwpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2Nv
bnRleHRfdGFrZW92ZXJfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21t
b24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9k
ZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMyk6Ci0g
ICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFs
c2UpCi0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBl
bmQ9VHJ1ZSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAg
ICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGli
Lk1BWF9XQklUUykKLQotICAgICAgICBmaXJzdF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdI
ZWxsbycpCi0gICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGZpcnN0X2hlbGxvKQot
ICAgICAgICBleHBlY3RlZCArPSBmaXJzdF9oZWxsbwotICAgICAgICBzZWNvbmRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBzZWNvbmRfaGVsbG8gKz0gY29tcHJl
c3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIHNlY29uZF9oZWxsbyA9IHNlY29u
ZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKHNlY29uZF9o
ZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0
ZWQsCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQot
Ci0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgotICAg
ICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAg
ICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVy
bWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHJl
cXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0uc2V0X2JmaW5hbChUcnVlKQotICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCi0gICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcsIGVuZD1UcnVlKQotCi0g
ICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3Nv
YmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Mu
Y29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5m
bHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsbyArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHg0MSVjJyAlIGxlbihjb21w
cmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0KLSAg
ICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAg
IGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGQgKyBjaHIoMCkKLSAgICAgICAg
ZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhw
ZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0
X3JlY2VpdmVfbWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIu
Y29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9
IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgPSAnXHhjMSVjJyAlIChs
ZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5Ymko
Y29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEg
Kz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29v
ZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
Ci0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAg
ICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9z
ZWN0aW9uKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYSBjb21wcmVzc2VkIG1lc3NhZ2Ug
ZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlzCi0gICAgICAgIGNvcnJlY3RseSByZWNl
aXZlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAgICAgICBw
YXlsb2FkID0gJycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQoMCwgMjU1
KSkgZm9yIGkgaW4geHJhbmdlKDEwMDApXSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29t
cHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5E
RUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSBj
b21wcmVzcy5jb21wcmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfcGF5
bG9hZCA9IGNvbXByZXNzZWRfcGF5bG9hZFs6LTRdCi0KLSAgICAgICAgIyBGcmFnbWVudCB0aGUg
Y29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0gICAgICAgIGJ5dGVzX2No
dW5rZWQgPSAwCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmcmFtZV9jb3VudCA9IDAKLQot
ICAgICAgICBjaHVua19zaXplcyA9IFtdCi0KLSAgICAgICAgd2hpbGUgYnl0ZXNfY2h1bmtlZCA8
IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgotICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdAot
ICAgICAgICAgICAgIyAtIHRoZSBsZW5ndGggb2YgY2h1bmtzIGFyZSBlcXVhbCBvciBsZXNzIHRo
YW4gMTI1IHNvIHRoYXQgd2UgY2FuCi0gICAgICAgICAgICAjICAgdXNlIDEgb2N0ZXQgbGVuZ3Ro
IGhlYWRlciBmb3JtYXQgZm9yIGFsbCBmcmFtZXMuCi0gICAgICAgICAgICAjIC0gYXQgbGVhc3Qg
MTAgY2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5y
YW5kaW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigxMjUsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC8gMTAsCi0gICAgICAgICAgICAgICAgICAgICAg
IGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgICAgICBj
aHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5rID0gY29tcHJl
c3NlZF9wYXlsb2FkWwotICAgICAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtl
ZCArIGNodW5rX3NpemVdCi0gICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUK
LQotICAgICAgICAgICAgZmlyc3Rfb2N0ZXQgPSAweDAwCi0gICAgICAgICAgICBpZiBsZW4oZGF0
YSkgPT0gMDoKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0
MgotICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2Fk
KToKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAotCi0g
ICAgICAgICAgICBkYXRhICs9ICclYyVjJyAlIChmaXJzdF9vY3RldCwgY2h1bmtfc2l6ZSB8IDB4
ODApCi0gICAgICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY2h1bmspCi0KLSAgICAgICAgICAg
IGZyYW1lX2NvdW50ICs9IDEKLQotICAgICAgICBwcmludCgiQ2h1bmsgc2l6ZXM6ICVyIiAlIGNo
dW5rX3NpemVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVzKSA+IDEw
KQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAnXHg4OFx4OGEnICsg
X21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScpCi0KLSAgICAg
ICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgIGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2Vf
ZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXls
b2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV90d29fbWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVT
U0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGRhdGEgPSAn
JwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG9X
ZWJTb2NrZXQnKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9o
ZWxsb1s6LTRdCi0gICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVuKGNvbXByZXNzZWRfaGVsbG8p
IC8gMgotICAgICAgICBkYXRhICs9ICdceDQxJWMnICUgKHNwbGl0X3Bvc2l0aW9uIHwgMHg4MCkK
LSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG9bOnNwbGl0X3Bvc2l0
aW9uXSkKLQotICAgICAgICBkYXRhICs9ICdceDgwJWMnICUgKChsZW4oY29tcHJlc3NlZF9oZWxs
bykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5Ymko
Y29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQotCi0gICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVT
U0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4
YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBf
bWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAg
ICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEw
MDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
LSAgICAgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvV2ViU29ja2V0JywgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxk
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9taXhlZF9idHlwZShzZWxmKToKLSAgICAgICAgIiIiVGVz
dCB0aGF0IGEgbWVzc2FnZSBjb21wcmVzc2VkIHVzaW5nIGxvdHMgb2YgREVGTEFURSBibG9ja3Mg
d2l0aAotICAgICAgICB2YXJpb3VzIGZsdXNoIG1vZGUgaXMgY29ycmVjdGx5IHJlY2VpdmVkLgot
ICAgICAgICAiIiIKLQotICAgICAgICByYW5kb20uc2VlZChhPTApCi0gICAgICAgIHBheWxvYWQg
PSAnJy5qb2luKAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3Ig
aSBpbiB4cmFuZ2UoMTAwMCldKQotCi0gICAgICAgIGNvbXByZXNzID0gTm9uZQotCi0gICAgICAg
ICMgRnJhZ21lbnQgdGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgot
ICAgICAgICBieXRlc19jaHVua2VkID0gMAotICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSAn
JwotCi0gICAgICAgIGNodW5rX3NpemVzID0gW10KLSAgICAgICAgbWV0aG9kcyA9IFtdCi0gICAg
ICAgIHN5bmNfdXNlZCA9IEZhbHNlCi0gICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UKLQotICAg
ICAgICB3aGlsZSBieXRlc19jaHVua2VkIDwgbGVuKHBheWxvYWQpOgotICAgICAgICAgICAgIyBN
YWtlIHN1cmUgYXQgbGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgY2h1
bmtfc2l6ZSA9IHJhbmRvbS5yYW5kaW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigxMDAsIGxl
bihwYXlsb2FkKSAtIGJ5dGVzX2NodW5rZWQpKQotICAgICAgICAgICAgY2h1bmtfc2l6ZXMuYXBw
ZW5kKGNodW5rX3NpemUpCi0gICAgICAgICAgICBjaHVuayA9IHBheWxvYWRbYnl0ZXNfY2h1bmtl
ZDpieXRlc19jaHVua2VkICsgY2h1bmtfc2l6ZV0KLQotICAgICAgICAgICAgYnl0ZXNfY2h1bmtl
ZCArPSBjaHVua19zaXplCi0KLSAgICAgICAgICAgIGlmIGNvbXByZXNzIGlzIE5vbmU6Ci0gICAg
ICAgICAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgemxp
Yi5ERUZMQVRFRCwKLSAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAg
ICAgICAgICBpZiBieXRlc19jaHVua2VkID09IGxlbihwYXlsb2FkKToKLSAgICAgICAgICAgICAg
ICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmspCi0gICAgICAg
ICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXByZXNzZWRf
cGF5bG9hZFs6LTRdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1ldGhvZCA9
IHJhbmRvbS5yYW5kaW50KDAsIDEpCi0gICAgICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQobWV0
aG9kKQotICAgICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAwOgotICAgICAgICAgICAgICAgICAg
ICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmspCi0gICAgICAg
ICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
U1lOQ19GTFVTSCkKLSAgICAgICAgICAgICAgICAgICAgc3luY191c2VkID0gVHJ1ZQotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCAr
PSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nl
ZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbXByZXNzID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBmaW5pc2hfdXNlZCA9
IFRydWUKLQotICAgICAgICBwcmludCgiQ2h1bmsgc2l6ZXM6ICVyIiAlIGNodW5rX3NpemVzKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVzKSA+IDEwKQotICAgICAgICBw
cmludCgiTWV0aG9kczogJXIiICUgbWV0aG9kcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5
bmNfdXNlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmlzaF91c2VkKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgxMjUgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGxlbihjb21wcmVzc2VkX3BheWxvYWQpIDwgNjU1MzYpCi0gICAgICAg
IGRhdGEgPSAnXHhjMlx4ZmUnICsgc3RydWN0LnBhY2soJyFIJywgbGVuKGNvbXByZXNzZWRfcGF5
bG9hZCkpCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3BheWxvYWQpCi0K
LSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFz
a19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9u
LlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLQotY2xhc3Mg
TWVzc2FnZVRlc3RIaXhpZTc1KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3Ig
ZHJhZnQtaGl4aWUtdGhld2Vic29ja2V0cHJvdG9jb2wtNzYgc3RyZWFtIGNsYXNzLiIiIgotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnSGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNz
YWdlX3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4
aWU3NSgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHUnXHU2NWU1JykK
LSAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5NyxhNSBpbiBVVEYtOAotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceDAwXHhlNlx4OTdceGE1XHhmZicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0X2hpeGllNzUoJ1x4MDBIZWxsb1x4ZmZceDAwV29ybGQhXHhmZicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNvZGUoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgwMFx4ZTZc
eDljXHhhY1x4ZmYnKQotICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGlu
IFVURi04Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJv
bmVvdXNfdW5pY29kZShzZWxmKToKLSAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlk
IGFzIFVURi04LgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUoJ1x4
MDBceDgwXHg4MVx4ZmYnKQotICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aAotICAgICAgICAjIFUrZmZmZCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1ZmZmZFx1ZmZmZCcsIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Rpc2NhcmQo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHg4MFx4
MDZJR05PUkVceDAwSGVsbG9ceGZmJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1x4MDFESVNSRUdBUkRceGZmXHgwMFdvcmxkIVx4ZmYnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKLQotCi1jbGFzcyBNZXNzYWdlUmVjZWl2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICAiIiJUZXN0cyB0aGUgU3RyZWFtIGNsYXNzIHVzaW5nIE1lc3NhZ2VSZWNlaXZl
ci4iIiIKLQotICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3Nh
Z2VSZWNlaXZlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVj
ZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKCdceDgxXHg4NicgKyBfbWFza19oeWJpKCdIZWxsbyEnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnSGVsbG8hJywgcmVjZWl2ZXIucmVjZWl2ZSgpKQotCi0gICAgZGVmIHRlc3Rf
b25tZXNzYWdlKHNlbGYpOgotICAgICAgICBvbm1lc3NhZ2VfcXVldWUgPSBRdWV1ZS5RdWV1ZSgp
Ci0KLSAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2UpOgotICAgICAgICAgICAg
b25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJl
Y2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoJ1x4ODFceDg2JyArIF9tYXNrX2h5YmkoJ0hlbGxvIScpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCBvbm1lc3NhZ2VfcXVldWUuZ2V0KCkpCi0K
LQotY2xhc3MgTWVzc2FnZVJlY2VpdmVySGl4aWU3NVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgICIiIlRlc3RzIHRoZSBTdHJlYW1IaXhpZTc1IGNsYXNzIHVzaW5nIE1lc3NhZ2VSZWNlaXZl
ci4iIiIKLQotICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9ibG9ja2luZ19yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0
aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCByZWNlaXZlci5yZWNlaXZlX25vd2FpdCgpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoJ1x4MDBIZWxsbyFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8hJywgcmVjZWl2ZXIucmVjZWl2ZSgpKQotCi0gICAgZGVmIHRlc3Rfb25tZXNzYWdl
KHNlbGYpOgotICAgICAgICBvbm1lc3NhZ2VfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAgICAg
ICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2UpOgotICAgICAgICAgICAgb25tZXNzYWdl
X3F1ZXVlLnB1dChtZXNzYWdlKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5n
X3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVj
ZWl2ZXIocmVxdWVzdCwgb25tZXNzYWdlX2hhbmRsZXIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygnXHgwMEhlbGxvIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdIZWxsbyEnLCBvbm1lc3NhZ2VfcXVldWUuZ2V0KCkpCi0KLQotY2xhc3MgTWVzc2FnZVNl
bmRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xh
c3MgdXNpbmcgTWVzc2FnZVNlbmRlci4iIiIKLQotICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICBzZW5k
ZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBzZW5kZXIuc2Vu
ZCgnV29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNVdvcmxkJywgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9ub3dh
aXQoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgcXVldWUgdG8gY2hlY2sgdGhlIGJ5dGVzIHdyaXR0
ZW4gYnkgTWVzc2FnZVNlbmRlci4KLSAgICAgICAgIyByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkgY2Fubm90IGJlIHVzZWQgaGVyZSBiZWNhdXNlCi0gICAgICAgICMgTWVzc2FnZVNl
bmRlciBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkLgotICAgICAgICBzZW5kX3F1ZXVlID0gUXVl
dWUuUXVldWUoKQotCi0gICAgICAgIGRlZiB3cml0ZShieXRlcyk6Ci0gICAgICAgICAgICBzZW5k
X3F1ZXVlLnB1dChieXRlcykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19y
ZXF1ZXN0KCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlID0gd3JpdGUKLQotICAg
ICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBz
ZW5kZXIuc2VuZF9ub3dhaXQoJ0hlbGxvJykKLSAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdX
b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1SGVsbG8nLCBzZW5kX3F1
ZXVlLmdldCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNVdvcmxkJywgc2Vu
ZF9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVySGl4aWU3NVRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIHRoZSBTdHJlYW1IaXhpZTc1IGNsYXNzIHVzaW5n
IE1lc3NhZ2VTZW5kZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICBzZW5k
ZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBzZW5kZXIuc2Vu
ZCgnV29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwV29ybGRceGZmJywgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9ub3dh
aXQoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgcXVldWUgdG8gY2hlY2sgdGhlIGJ5dGVzIHdyaXR0
ZW4gYnkgTWVzc2FnZVNlbmRlci4KLSAgICAgICAgIyByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkgY2Fubm90IGJlIHVzZWQgaGVyZSBiZWNhdXNlCi0gICAgICAgICMgTWVzc2FnZVNl
bmRlciBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkLgotICAgICAgICBzZW5kX3F1ZXVlID0gUXVl
dWUuUXVldWUoKQotCi0gICAgICAgIGRlZiB3cml0ZShieXRlcyk6Ci0gICAgICAgICAgICBzZW5k
X3F1ZXVlLnB1dChieXRlcykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19y
ZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0
ZQotCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0g
ICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnSGVsbG8nKQotICAgICAgICBzZW5kZXIuc2VuZF9u
b3dhaXQoJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMEhlbGxvXHhmZics
IHNlbmRfcXVldWUuZ2V0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4
ZmYnLCBzZW5kX3F1ZXVlLmdldCgpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
ICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9tdXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA3NzNkZWNiZmQ2Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X211eC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwODggKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgbXV4
IG1vZHVsZS4iIiIKLQotaW1wb3J0IFF1ZXVlCi1pbXBvcnQgY29weQotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0
ZXN0Ci1pbXBvcnQgdGltZQotaW1wb3J0IHpsaWIKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBV
cGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBtdXgKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBp
bXBvcnQgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9oeWJpIGltcG9ydCBGcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJp
IGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQg
U3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBj
cmVhdGVfYmluYXJ5X2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1w
b3J0IGNyZWF0ZV9jbG9zZV9mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJp
IGltcG9ydCBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
ZXh0ZW5zaW9ucyBpbXBvcnQgTXV4RXh0ZW5zaW9uUHJvY2Vzc29yCi0KLQotaW1wb3J0IG1vY2sK
LQotCi1fVEVTVF9IRUFERVJTID0geydIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCi0gICAg
ICAgICAgICAgICAgICdVcGdyYWRlJzogJ3dlYnNvY2tldCcsCi0gICAgICAgICAgICAgICAgICdD
b25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1L
ZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09JywKLSAgICAgICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtVmVyc2lvbic6ICcxMycsCi0gICAgICAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0
cDovL2V4YW1wbGUuY29tJ30KLQotCi1jbGFzcyBfT3V0Z29pbmdDaGFubmVsRGF0YShvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCi0g
ICAgICAgIHNlbGYuY29udHJvbF9tZXNzYWdlcyA9IFtdCi0KLSAgICAgICAgc2VsZi5idWlsZGVy
ID0gbXV4Ll9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkKLQotY2xhc3MgX01vY2tNdXhDb25uZWN0aW9u
KG1vY2suTW9ja0Jsb2NraW5nQ29ubik6Ci0gICAgIiIiTW9jayBjbGFzcyBvZiBtb2RfcHl0aG9u
IGNvbm5lY3Rpb24gZm9yIG11eC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgbW9jay5Nb2NrQmxvY2tpbmdDb25uLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2Nv
bnRyb2xfYmxvY2tzID0gW10KLSAgICAgICAgc2VsZi5fY2hhbm5lbF9kYXRhID0ge30KLQotICAg
ICAgICBzZWxmLl9jdXJyZW50X29wY29kZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19m
cmFnbWVudHMgPSBbXQotCi0gICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlX2NvZGUgPSBOb25lCi0K
LSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIE1vY2tCbG9j
a2luZ0Nvbm4ud3JpdGUuIiIiCi0KLSAgICAgICAgc2VsZi5fY3VycmVudF9kYXRhID0gZGF0YQot
ICAgICAgICBzZWxmLl9wb3NpdGlvbiA9IDAKLQotICAgICAgICBkZWYgX3JlY2VpdmVfYnl0ZXMo
bGVuZ3RoKToKLSAgICAgICAgICAgIGlmIHNlbGYuX3Bvc2l0aW9uICsgbGVuZ3RoID4gbGVuKHNl
bGYuX2N1cnJlbnRfZGF0YSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcmVjZWl2ZSAl
ZCBieXRlcyBmcm9tIGVuY2Fwc3VsYXRlZCAnCi0gICAgICAgICAgICAgICAgICAgICdmcmFtZScg
JSBsZW5ndGgpCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fY3VycmVudF9kYXRhW3NlbGYuX3Bv
c2l0aW9uOnNlbGYuX3Bvc2l0aW9uK2xlbmd0aF0KLSAgICAgICAgICAgIHNlbGYuX3Bvc2l0aW9u
ICs9IGxlbmd0aAotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgICAgICAjIFBhcnNlIHBo
eXNpY2FsIGZyYW1lcyBhbmQgYXNzZW1ibGUgYSBtZXNzYWdlIGlmIHRoZSBtZXNzYWdlIGlzCi0g
ICAgICAgICMgZnJhZ21lbnRlZC4KLSAgICAgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW4sIHJzdjEs
IHJzdjIsIHJzdjMgPSAoCi0gICAgICAgICAgICBwYXJzZV9mcmFtZShfcmVjZWl2ZV9ieXRlcywg
dW5tYXNrX3JlY2VpdmU9RmFsc2UpKQotCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRz
LmFwcGVuZChwYXlsb2FkKQotCi0gICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfb3Bjb2RlIGlzIE5v
bmU6Ci0gICAgICAgICAgICBpZiBvcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046
Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdTZW5kaW5nIGludmFsaWQgY29udGlu
dWF0aW9uIG9wY29kZScpCi0gICAgICAgICAgICBzZWxmLl9jdXJyZW50X29wY29kZSA9IG9wY29k
ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVf
Q09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2VuZGluZyBp
bnZhbGlkIG9wY29kZSAlZCcgJSBvcGNvZGUpCi0gICAgICAgIGlmIG5vdCBmaW46Ci0gICAgICAg
ICAgICByZXR1cm4KLQotICAgICAgICBpbm5lcl9mcmFtZV9kYXRhID0gJycuam9pbihzZWxmLl9w
ZW5kaW5nX2ZyYWdtZW50cykKLSAgICAgICAgc2VsZi5fcGVuZGluZ19mcmFnbWVudHMgPSBbXQot
ICAgICAgICBzZWxmLl9jdXJyZW50X29wY29kZSA9IE5vbmUKLQotICAgICAgICAjIEhhbmRsZSBh
IGNvbnRyb2wgbWVzc2FnZSBvbiB0aGUgcGh5c2ljYWwgY2hhbm5lbC4KLSAgICAgICAgIyBUT0RP
KGJhc2hpKTogU3VwcG9ydCBvdGhlciBvcGNvZGVzIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICBpZiBsZW4ocGF5bG9hZCkg
Pj0gMjoKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZV9jb2RlID0gc3RydWN0LnVu
cGFjaygnIUgnLCBwYXlsb2FkWzoyXSlbMF0KLSAgICAgICAgICAgIGNsb3NlX2JvZHkgPSBjcmVh
dGVfY2xvc2luZ19oYW5kc2hha2VfYm9keSgKLSAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVT
X05PUk1BTF9DTE9TVVJFLCAnJykKLSAgICAgICAgICAgIGNsb3NlX2ZyYW1lID0gY3JlYXRlX2Ns
b3NlX2ZyYW1lKGNsb3NlX2JvZHksIG1hc2s9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYucHV0X2J5
dGVzKGNsb3NlX2ZyYW1lKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBQYXJzZSB0
aGUgcGF5bG9hZCBvZiB0aGUgbWVzc2FnZSBvbiBwaHlzaWNhbCBjaGFubmVsLgotICAgICAgICBw
YXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihpbm5lcl9mcmFtZV9kYXRhKQotICAg
ICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGlmIGNo
YW5uZWxfaWQgPT0gbXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9j
b250cm9sX2Jsb2Nrcy5leHRlbmQobGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKSkK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIG5vdCBjaGFubmVsX2lkIGluIHNlbGYu
X2NoYW5uZWxfZGF0YToKLSAgICAgICAgICAgIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVsX2lk
XSA9IF9PdXRnb2luZ0NoYW5uZWxEYXRhKCkKLSAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5f
Y2hhbm5lbF9kYXRhW2NoYW5uZWxfaWRdCi0KLSAgICAgICAgIyBQYXJzZSBsb2dpY2FsIGZyYW1l
cyBhbmQgYXNzZW1ibGUgYW4gaW5uZXIgKGxvZ2ljYWwpIG1lc3NhZ2UuCi0gICAgICAgIChpbm5l
cl9maW4sIGlubmVyX3JzdjEsIGlubmVyX3JzdjIsIGlubmVyX3JzdjMsIGlubmVyX29wY29kZSwK
LSAgICAgICAgIGlubmVyX3BheWxvYWQpID0gcGFyc2VyLnJlYWRfaW5uZXJfZnJhbWUoKQotICAg
ICAgICBpbm5lcl9mcmFtZSA9IEZyYW1lKGlubmVyX2ZpbiwgaW5uZXJfcnN2MSwgaW5uZXJfcnN2
MiwgaW5uZXJfcnN2MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9vcGNvZGUs
IGlubmVyX3BheWxvYWQpCi0gICAgICAgIG1lc3NhZ2UgPSBjaGFubmVsX2RhdGEuYnVpbGRlci5i
dWlsZChpbm5lcl9mcmFtZSkKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuCi0KLSAgICAgICAgaWYgKG1lc3NhZ2Uub3Bjb2RlID09IGNvbW1vbi5PUENPREVf
VEVYVCBvcgotICAgICAgICAgICAgbWVzc2FnZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9CSU5B
UlkpOgotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLm1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlLnBh
eWxvYWQpCi0KLSAgICAgICAgICAgIHNlbGYub25fZGF0YV9tZXNzYWdlKG1lc3NhZ2UucGF5bG9h
ZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5jb250cm9sX21lc3Nh
Z2VzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICB7J29wY29kZSc6IG1lc3NhZ2Uub3Bjb2RlLAot
ICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UucGF5bG9hZH0pCi0KLSAgICBkZWYg
b25fZGF0YV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYg
Z2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9j
b250cm9sX2Jsb2NrcwotCi0gICAgZGVmIGdldF93cml0dGVuX21lc3NhZ2VzKHNlbGYsIGNoYW5u
ZWxfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2hhbm5lbF9kYXRhW2NoYW5uZWxfaWRdLm1l
c3NhZ2VzCi0KLSAgICBkZWYgZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcyhzZWxmLCBjaGFu
bmVsX2lkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVsX2lkXS5j
b250cm9sX21lc3NhZ2VzCi0KLQotY2xhc3MgX0ZhaWxPbldyaXRlQ29ubmVjdGlvbihfTW9ja011
eENvbm5lY3Rpb24pOgotICAgICIiIlNwZWNpY2lhbGl6ZWQgdmVyc2lvbiBvZiBfTW9ja011eENv
bm5lY3Rpb24uIEl0cyB3cml0ZSgpIG1ldGhvZCByYWlzZXMKLSAgICBhbiBleGNlcHRpb24gZm9y
IHRlc3Rpbmcgd2hlbiBhIGRhdGEgbWVzc2FnZSBpcyB3cml0dGVuLgotICAgICIiIgotCi0gICAg
ZGVmIG9uX2RhdGFfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiT3ZlcnJpZGUg
dG8gcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgotCi0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW50
ZW50aW9uYWwgZmFpbHVyZScpCi0KLQotY2xhc3MgX0NoYW5uZWxFdmVudChvYmplY3QpOgotICAg
ICIiIkEgc3RydWN0dXJlIHRoYXQgcmVjb3JkcyBjaGFubmVsIGV2ZW50cy4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gTm9uZQotICAgICAgICBz
ZWxmLm1lc3NhZ2VzID0gW10KLSAgICAgICAgc2VsZi5leGNlcHRpb24gPSBOb25lCi0gICAgICAg
IHNlbGYuY2xpZW50X2luaXRpYXRlZF9jbG9zaW5nID0gRmFsc2UKLQotCi1jbGFzcyBfTXV4TW9j
a0Rpc3BhdGNoZXIob2JqZWN0KToKLSAgICAiIiJNb2NrIGNsYXNzIG9mIGRpc3BhdGNoLkRpc3Bh
dGNoZXIgZm9yIG11eC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5jaGFubmVsX2V2ZW50cyA9IHt9Ci0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYs
IHJlcXVlc3QpOgotICAgICAgICBpZiByZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gcmVxdWVzdC53c19y
ZXF1ZXN0ZWRfcHJvdG9jb2xzWzBdCi0KLSAgICBkZWYgX2RvX2VjaG8oc2VsZiwgcmVxdWVzdCwg
Y2hhbm5lbF9ldmVudHMpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbWVzc2Fn
ZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgICAgICBpZiBt
ZXNzYWdlID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9ldmVudHMuY2xpZW50X2lu
aXRpYXRlZF9jbG9zaW5nID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAg
ICAgaWYgbWVzc2FnZSA9PSAnR29vZGJ5ZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgICAgICBjaGFubmVsX2V2ZW50cy5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKLSAgICAgICAg
ICAgICMgZWNobyBiYWNrCi0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3Nh
Z2UobWVzc2FnZSkKLQotICAgIGRlZiBfZG9fcGluZyhzZWxmLCByZXF1ZXN0LCBjaGFubmVsX2V2
ZW50cyk6Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUGluZyEnKQotCi0g
ICAgZGVmIF9kb19waW5nX3doaWxlX2hlbGxvX3dvcmxkKHNlbGYsIHJlcXVlc3QsIGNoYW5uZWxf
ZXZlbnRzKToKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdIZWxsbyAn
LCBlbmQ9RmFsc2UpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUGluZyEn
KQotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ1dvcmxkIScsIGVuZD1U
cnVlKQotCi0gICAgZGVmIF9kb190d29fcGluZ193aGlsZV9oZWxsb193b3JsZChzZWxmLCByZXF1
ZXN0LCBjaGFubmVsX2V2ZW50cyk6Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVz
c2FnZSgnSGVsbG8gJywgZW5kPUZhbHNlKQotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5k
X3BpbmcoJ1BpbmchJykKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKCdQb25n
IScpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnV29ybGQhJywgZW5k
PVRydWUpCi0KLSAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCByZXF1ZXN0KToKLSAgICAgICAg
c2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdID0gX0NoYW5uZWxFdmVudCgp
Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXS5yZXF1ZXN0
ID0gcmVxdWVzdAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgTm90ZTogbW9yZSBoYW5k
bGVyIHdpbGwgYmUgYWRkZWQuCi0gICAgICAgICAgICBpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgn
ZWNobycpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX2VjaG8ocmVxdWVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVs
X2lkXSkKLSAgICAgICAgICAgIGVsaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgoJ3BpbmcnKToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9kb19waW5nKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0pCi0gICAg
ICAgICAgICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCd0d29fcGluZ193aGlsZV9oZWxsb193
b3JsZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX3R3b19waW5nX3doaWxlX2hlbGxvX3dv
cmxkKAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LCBzZWxmLmNoYW5uZWxfZXZlbnRzW3Jl
cXVlc3QuY2hhbm5lbF9pZF0pCi0gICAgICAgICAgICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRo
KCdwaW5nX3doaWxlX2hlbGxvX3dvcmxkJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZG9fcGlu
Z193aGlsZV9oZWxsb193b3JsZCgKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwgc2VsZi5j
aGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgaGFuZGxlIHBhdGggJXInICUg
cmVxdWVzdC5wYXRoKQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0
ZWQ6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigp
Ci0gICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4Y2VwdGlv
biA9IGUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5j
aGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4Y2VwdGlvbiA9IGUKLSAgICAgICAg
ICAgIHJhaXNlCi0KLQotZGVmIF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249Tm9uZSwg
bG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnM9Tm9uZSk6Ci0gICAgaWYgY29ubmVjdGlvbiBpcyBO
b25lOgotICAgICAgICBjb25uZWN0aW9uID0gX01vY2tNdXhDb25uZWN0aW9uKCkKLQotICAgIHJl
cXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KHVyaT0nL2VjaG8nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnNfaW49X1RFU1RfSEVBREVSUywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uPWNvbm5lY3Rpb24pCi0gICAgcmVxdWVzdC53c19zdHJl
YW0gPSBTdHJlYW0ocmVxdWVzdCwgb3B0aW9ucz1TdHJlYW1PcHRpb25zKCkpCi0gICAgcmVxdWVz
dC5tdXhfcHJvY2Vzc29yID0gTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKSkKLSAgICBpZiBsb2dpY2Fs
X2NoYW5uZWxfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgcmVxdWVzdC5tdXhfcHJv
Y2Vzc29yLnNldF9leHRlbnNpb25zKGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zKQotICAgIHJl
cXVlc3QubXV4X3Byb2Nlc3Nvci5zZXRfcXVvdGEoOCAqIDEwMjQpCi0gICAgcmV0dXJuIHJlcXVl
c3QKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKGNoYW5uZWxfaWQs
IGVuY29kaW5nLCBlbmNvZGVkX2hhbmRzaGFrZSk6Ci0gICAgIyBBbGxvdyBpbnZhbGlkIGVuY29k
aW5nIGZvciB0ZXN0aW5nLgotICAgIGZpcnN0X2J5dGUgPSAoKG11eC5fTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVFVRVNUIDw8IDUpIHwgZW5jb2RpbmcpCi0gICAgcGF5bG9hZCA9IChjaHIoZmly
c3RfYnl0ZSkgKwotICAgICAgICAgICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVs
X2lkKSArCi0gICAgICAgICAgICAgICBtdXguX2VuY29kZV9udW1iZXIobGVuKGVuY29kZWRfaGFu
ZHNoYWtlKSkgKwotICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgcmV0dXJu
IGNyZWF0ZV9iaW5hcnlfZnJhbWUoCi0gICAgICAgIChtdXguX2VuY29kZV9jaGFubmVsX2lkKG11
eC5fQ09OVFJPTF9DSEFOTkVMX0lEKSArIHBheWxvYWQpLCBtYXNrPVRydWUpCi0KLQotZGVmIF9j
cmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0n
Jyk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBj
b2RlLCBtZXNzYWdlKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgICAgICAo
bXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBwYXlsb2Fk
KSwgbWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Zsb3df
Y29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSkKLSAgICByZXR1cm4gY3JlYXRl
X2JpbmFyeV9mcmFtZSgKLSAgICAgICAgKG11eC5fZW5jb2RlX2NoYW5uZWxfaWQobXV4Ll9DT05U
Uk9MX0NIQU5ORUxfSUQpICsgcGF5bG9hZCksIG1hc2s9VHJ1ZSkKLQotCi1kZWYgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQsIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RFX0JJ
TkFSWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsIHJzdjE9RmFsc2UsIHJz
djI9RmFsc2UsIHJzdjM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9VHJ1
ZSk6Ci0gICAgYml0cyA9IGNocigoZmluIDw8IDcpIHwgKHJzdjEgPDwgNikgfCAocnN2MiA8PCA1
KSB8IChyc3YzIDw8IDQpIHwgb3Bjb2RlKQotICAgIHBheWxvYWQgPSBtdXguX2VuY29kZV9jaGFu
bmVsX2lkKGNoYW5uZWxfaWQpICsgYml0cyArIG1lc3NhZ2UKLSAgICByZXR1cm4gY3JlYXRlX2Jp
bmFyeV9mcmFtZShwYXlsb2FkLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdF9o
ZWFkZXIocGF0aD0nL2VjaG8nLCBleHRlbnNpb25zPU5vbmUpOgotICAgIGhlYWRlcnMgPSAoCi0g
ICAgICAgICdHRVQgJXMgSFRUUC8xLjFcclxuJwotICAgICAgICAnSG9zdDogc2VydmVyLmV4YW1w
bGUuY29tXHJcbicKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAn
T3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJykgJSBwYXRoCi0gICAgaWYgZXh0ZW5zaW9u
czoKLSAgICAgICAgaGVhZGVycyArPSAnJXM6ICVzJyAlICgKLSAgICAgICAgICAgIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLCBleHRlbnNpb25zKQotICAgIHJldHVybiBo
ZWFkZXJzCi0KLQotY2xhc3MgTXV4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1
bml0dGVzdCBmb3IgbXV4IG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxfaWRfZGVj
b2RlKHNlbGYpOgotICAgICAgICBkYXRhID0gJ1x4MDBceDAxXHhiZlx4ZmZceGRmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBh
cnNlcihkYXRhKQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5l
bF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIucmVhZF9jaGFubmVs
X2lkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICoqIDE0IC0gMSwgY2hhbm5lbF9pZCkK
LSAgICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIgKiogMjEgLSAxLCBjaGFubmVsX2lkKQotICAgICAgICBjaGFubmVs
X2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MiAqKiAyOSAtIDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRh
dGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX2Vu
Y29kZShzZWxmKToKLSAgICAgICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29k
ZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMTQgLSAxKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdceGJmXHhmZicsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2Vu
Y29kZV9jaGFubmVsX2lkKDIgKiogMTQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4YzBA
XHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lk
KDIgKiogMjEgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGRmXHhmZlx4ZmYnLCBl
bmNvZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoqIDIx
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGUwIFx4MDBceDAwJywgZW5jb2RlZCkKLSAg
ICAgICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyOSAtIDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ZmZceGZmXHhmZlx4ZmYnLCBlbmNvZGVkKQotICAgICAg
ICAjIGNoYW5uZWxfaWQgaXMgdG9vIGxhcmdlCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fZW5jb2RlX2NoYW5uZWxf
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogMjkpCi0KLSAgICBkZWYgdGVzdF9y
ZWFkX211bHRpcGxlX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICAjIFVzZSBBZGRDaGFu
bmVsUmVxdWVzdCBiZWNhdXNlIGl0IGNhbiBjb250YWluIGFyYml0cmFyeSBsZW5ndGggb2YgZGF0
YQotICAgICAgICBkYXRhID0gKCdceDAwXHgwMVx4MDFhJwotICAgICAgICAgICAgICAgICdceDAw
XHgwMlx4N2QlcycKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDNceDdlXHhmZlx4ZmYlcycKLSAg
ICAgICAgICAgICAgICAnXHgwMFx4MDRceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4
MDAlcycpICUgKAotICAgICAgICAgICAgJ2EnICogMHg3ZCwgJ2InICogMHhmZmZmLCAnYycgKiAw
eDEwMDAwKQotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRh
KQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGJsb2NrcykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxvY2tzWzBd
Lm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hhbm5lbF9p
ZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29kZWRfaGFu
ZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVFVRVNULCBibG9ja3NbMV0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDIsIGJsb2Nrc1sxXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4
N2QsIGxlbihibG9ja3NbMV0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nrc1syXS5v
cGNvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgYmxvY2tzWzJdLmNoYW5uZWxfaWQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZmZmLCBsZW4oYmxvY2tzWzJdLmVuY29kZWRf
aGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9B
RERfQ0hBTk5FTF9SRVFVRVNULCBibG9ja3NbM10ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDQsIGJsb2Nrc1szXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDB4MTAwMDAsIGxlbihibG9ja3NbM10uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBk
ZWYgdGVzdF9yZWFkX2FkZF9jaGFubmVsX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAn
XHgwMFx4MDFceDAxYScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJz
ZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2Nr
cygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5F
TF9SRVFVRVNULCBibG9ja3NbMF0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihi
bG9ja3NbMF0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9kcm9wX2No
YW5uZWwoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHg2MFx4MDFceDAwJwotICAgICAgICBwYXJz
ZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBs
aXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBd
LmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0RS
T1BfQ0hBTk5FTCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCBibG9ja3NbMF0uZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxl
bihibG9ja3NbMF0uZHJvcF9tZXNzYWdlKSkKLQotICAgICAgICBkYXRhID0gJ1x4NjBceDAyXHgw
OVx4MDNceGU4U3VjY2VzcycKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQ
YXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Js
b2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDIsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwsIGJsb2Nrc1swXS5vcGNv
ZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgYmxvY2tzWzBdLmRyb3BfY29kZSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnU3VjY2VzcycsIGJsb2Nrc1swXS5kcm9wX21lc3Nh
Z2UpCi0KLSAgICAgICAgIyBSZWFzb24gaXMgdG9vIHNob3J0LgotICAgICAgICBkYXRhID0gJ1x4
NjBceDAxXHgwMVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFy
c2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5lY3Rp
b25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNlci5y
ZWFkX2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9mbG93X2NvbnRyb2wo
c2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHg0MFx4MDFceDAyJwotICAgICAgICBwYXJzZXIgPSBt
dXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBh
cnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
bGVuKGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5u
ZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09O
VFJPTCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBibG9j
a3NbMF0uc2VuZF9xdW90YSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfbmV3X2NoYW5uZWxfc2xvdChz
ZWxmKToKLSAgICAgICAgZGF0YSA9ICdceDgwXHgwMVx4MDJceDAyXHgwMycKLSAgICAgICAgcGFy
c2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgIyBUT0RPKGJh
c2hpKTogSW1wbGVtZW50Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENv
bm5lY3Rpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBh
cnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlk
X251bWJlcl9maWVsZF9pbl9jb250cm9sX2Jsb2NrKHNlbGYpOgotICAgICAgICAjIE5vIG51bWJl
ciBmaWVsZC4KLSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJh
bWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBUaGUgbGFzdCB0d28gYnl0ZXMg
YXJlIG1pc3NpbmcuCi0gICAgICAgIGRhdGEgPSAnXHg3ZScKLSAgICAgICAgcGFyc2VyID0gbXV4
Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAjIE1pc3NpbmcgdGhl
IGxhc3Qgb25lIGJ5dGUuCi0gICAgICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRh
dGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9u
dW1iZXIpCi0KLSAgICAgICAgIyBUaGUgbGVuZ3RoIG9mIG51bWJlciBmaWVsZCBpcyB0b28gbGFy
Z2UuCi0gICAgICAgIGRhdGEgPSAnXHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
JwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQot
Ci0gICAgICAgICMgVGhlIG1zYiBvZiB0aGUgZmlyc3QgYnl0ZSBpcyBzZXQuCi0gICAgICAgIGRh
dGEgPSAnXHg4MCcKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIo
ZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFk
X251bWJlcikKLQotICAgICAgICAjIFVzaW5nIDMgYnl0ZXMgZW5jb2RpbmcgZm9yIDEyNS4KLSAg
ICAgICAgZGF0YSA9ICdceDdlXHgwMFx4N2QnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJh
bWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBVc2luZyA5IGJ5dGVzIGVuY29k
aW5nIGZvciAweGZmZmYKLSAgICAgICAgZGF0YSA9ICdceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHhmZlx4ZmYnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2Vy
KGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVh
ZF9udW1iZXIpCi0KLSAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfc2l6ZV9hbmRfY29udGVudHMo
c2VsZik6Ci0gICAgICAgICMgT25seSBjb250YWluIG51bWJlciBmaWVsZC4KLSAgICAgICAgZGF0
YSA9ICdceDAxJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihk
YXRhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJy
b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5fcmVhZF9zaXplX2FuZF9jb250
ZW50cykKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxmKToK
LSAgICAgICAgZGF0YSA9IG11eC5fY3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxf
aWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPSdGb29CYXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlamVjdGVkPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdceDIwXHgwMVx4MDZGb29CYXInLCBkYXRhKQotCi0gICAgICAgIGRhdGEgPSBtdXgu
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT0nSGVs
bG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5j
b2Rpbmc9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlamVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MzFceDAyXHgwNUhl
bGxvJywgZGF0YSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kcm9wX2NoYW5uZWwoc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDYwXHgwMVx4MDAnLCBkYXRhKQotCi0gICAgICAgIGRh
dGEgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9MjAwMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdlcnJvcicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4NjBceDAxXHgwN1x4MDdceGQwZXJyb3InLCBkYXRhKQotCi0gICAgICAgICMg
cmVhc29uIG11c3QgYmUgZW1wdHkgaWYgY29kZSBpcyBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fY3JlYXRl
X2Ryb3BfY2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgTm9uZSwgJ0Zvb0Jh
cicpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZXF1ZXN0X3RleHQoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3RfdGV4dCA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIoKQotICAgICAgICBjb21tYW5kLCBw
YXRoLCB2ZXJzaW9uLCBoZWFkZXJzID0gbXV4Ll9wYXJzZV9yZXF1ZXN0X3RleHQocmVxdWVzdF90
ZXh0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdHRVQnLCBjb21tYW5kKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCcvZWNobycsIHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0hUVFAvMS4xJywgdmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oaGVh
ZGVycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NlcnZlci5leGFtcGxlLmNvbScsIGhl
YWRlcnNbJ0hvc3QnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1wbGUu
Y29tJywgaGVhZGVyc1snT3JpZ2luJ10pCi0KLQotY2xhc3MgTXV4SGFuZGxlclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWwoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBf
TXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxl
cihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAg
ICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0Zf
Q0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4
Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2Ug
PSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5u
ZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAg
ICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0
ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICBl
bmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93
X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVk
X3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250
cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTMsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
bXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVu
dHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCddLCBkaXNw
YXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5uZWwgMgot
ICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdl
cygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgQ2hhbm5l
bCAzCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21l
c3NhZ2VzKDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAgICAgY29u
dHJvbF9ibG9ja3MgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9j
a3MoKQotICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSA4IGNvbnRyb2wgYmxvY2tzOgotICAgICAg
ICAjICAgLSAxIE5ld0NoYW5uZWxTbG90Ci0gICAgICAgICMgICAtIDIgQWRkQ2hhbm5lbFJlc3Bv
bnNlcyBmb3IgY2hhbm5lbCBpZCAyIGFuZCAzCi0gICAgICAgICMgICAtIDYgRmxvd0NvbnRyb2xz
IGZvciBjaGFubmVsIGlkIDEgKGluaXRpYWxpemUpLCAnSGVsbG8nLCAnV29ybGQnLAotICAgICAg
ICAjICAgICBhbmQgMyAnR29vZGJ5ZSdzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOSwgbGVu
KGNvbnRyb2xfYmxvY2tzKSkKLQotICAgIGRlZiB0ZXN0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fd3Jp
dGVfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBVc2UgX0ZhaWxPbldyaXRlQ29ubmVjdGlvbi4K
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249X0ZhaWxP
bldyaXRlQ29ubmVjdGlvbigpKQotCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3Bh
dGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBk
aXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBMZXQg
dGhlIHdvcmtlciBlY2hvIGJhY2sgJ0hlbGxvJy4gSXQgY2F1c2VzIF9GYWlsT25Xcml0ZUNvbm5l
Y3Rpb24KLSAgICAgICAgIyByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTEsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBMZXQgdGhlIHdvcmtl
ciBleGl0LiBUaGlzIHdpbGwgYmUgdW5uZWNlc3Nhcnkgd2hlbgotICAgICAgICAjIF9Mb2dpY2Fs
Q29ubmVjdGlvbi53cml0ZSgpIGlzIGNoYW5nZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmCi0g
ICAgICAgICMgd29rZSB1cCBieSBvbl93cml0ZXJfZG9uZS4KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEFsbCB0aHJlYWRzIHNo
b3VsZCBiZSBkb25lLgotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91
bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0KLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFM
X05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAg
ICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1l
KAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5j
b2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIE9uIHJlY2Vp
dmluZyB0aGlzICdIZWxsbycsIHRoZSBzZXJ2ZXIgdHJpZXMgdG8gZWNobyBiYWNrICdIZWxsbycs
Ci0gICAgICAgICMgYnV0IGl0IHdpbGwgYmUgYmxvY2tlZCBzaW5jZSB0aGVyZSdzIG5vIHNlbmQg
cXVvdGEgYXZhaWxhYmxlIGZvciB0aGUKLSAgICAgICAgIyBjaGFubmVsIDIuCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMgV2FpdCB1
bnRpbCB0aGUgd29ya2VyIGlzIGJsb2NrZWQgZHVlIHRvIHNlbmQgcXVvdGEgc2hvcnRhZ2UuCi0g
ICAgICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIENsb3NlIHRoZSBjaGFubmVsIDIuIFRo
ZSB3b3JrZXIgc2hvdWxkIGJlIG5vdGlmaWVkIG9mIHRoZSBlbmQgb2YKLSAgICAgICAgIyB3cml0
ZXIgdGhyZWFkIGFuZCBzdG9wIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgdG8gYmUgcmVwbGVuaXNo
ZWQuCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNo
YW5uZWxfaWQ9MikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGRyb3Bf
Y2hhbm5lbCkKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2hhbm5lbCAxIGlzIGFsc28gY2xv
c2VkLgotICAgICAgICBkcm9wX2NoYW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShj
aGFubmVsX2lkPTEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9j
aGFubmVsKQotCi0gICAgICAgICMgQWxsIHRocmVhZHMgc2hvdWxkIGJlIGRvbmUuCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkK
LQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2VuY29kaW5nKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAg
ICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09G
X0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNo
byBIVFRQLzEuMVxyXG5cclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBl
bmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29u
dHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVv
dGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wp
Ci0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzJdLm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRf
d3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNz
YWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0K
LSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19vdmVycmlkZShzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0
Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9N
dXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05V
TUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICAjIE92ZXJyaWRl
IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRU
UC8xLjFcclxuJwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1m
b29cclxuJwotICAgICAgICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3Jl
cXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBj
aGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAg
ICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9p
ZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAot
ICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0n
SGVsbG8nKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVv
dXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIu
Y2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5j
b25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBt
ZXNzYWdlc1swXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneC1mb28nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19w
cm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2FmdGVyX2lkZW50aXR5
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAg
ICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIg
PSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRs
ZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lO
SVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIFNl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wgaXMgZGlmZmVyZW50IGZyb20gY2xpZW50J3Mgb3BlbmluZyBo
YW5kc2hha2UKLSAgICAgICAgIyBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAgICAgICAg
IyBUT0RPKGJhc2hpKTogUmVtb3ZlIFVwZ3JhZGUsIENvbm5lY3Rpb24sIFNlYy1XZWJTb2NrZXQt
S2V5IGFuZAotICAgICAgICAjIFNlYy1XZWJTb2NrZXQtVmVyc2lvbi4KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSAoCi0gICAgICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAg
ICAgICAgICAgICdIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxy
XG4nCi0gICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9l
Y2hvIEhUVFAvMS4xXHJcblxyXG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMs
IGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19j
b250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9x
dW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJv
bCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0zLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11
eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoW10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzJdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwgZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50c1szXS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVsIDIKLSAg
ICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMo
MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENoYW5uZWwg
MwotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNz
YWdlcygzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgSGFu
ZHNoYWtlIGJhc2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICAneC1mb28nLAotICAgICAgICAgICAgbXV4X2hhbmRsZXIuX2hhbmRzaGFr
ZV9iYXNlLl9oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10pCi0KLSAgICBkZWYgdGVz
dF9hZGRfY2hhbm5lbF9kZWx0YV9yZW1vdmVfaGVhZGVyKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIE92ZXJyaWRlIGhhbmRzaGFrZSBkZWx0YSBi
YXNlLgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9ICgKLSAgICAgICAgICAgICdHRVQgL2Vj
aG8gSFRUUC8xLjFcclxuJwotICAgICAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxlLmNvbVxy
XG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxuJwotICAg
ICAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ09yaWdpbjog
aHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRk
X2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAg
ICAgICAjIFJlbW92ZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4KLSAgICAgICAgZGVs
dGEgPSAoJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAgICAgICdTZWMtV2Vi
U29ja2V0LVByb3RvY29sOicKLSAgICAgICAgICAgICAgICAgJ1xyXG4nKQotICAgICAgICBhZGRf
Y2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAg
ICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0
YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1
ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1l
KGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIs
IG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdl
PSdXb3JsZCcpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5
ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZl
bnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlz
cGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbJ1dvcmxkJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbM10ubWVzc2FnZXMpCi0g
ICAgICAgICMgQ2hhbm5lbCAyCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9u
LmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNzYWdlc1sw
XSkKLSAgICAgICAgIyBDaGFubmVsIDMKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5l
Y3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1lc3Nh
Z2VzWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ3gtZm9vJywK
LSAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90
b2NvbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIE5vbmUsCi0gICAg
ICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLnJlcXVlc3Qud3NfcHJvdG9jb2wp
Ci0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19wZXJtZXNzYWdlX2Rl
ZmxhdGUoc2VsZik6Ci0gICAgICAgICMgRW5hYmxlIHBlcm1lc3NhZ2UgZGVmbGF0ZSBleHRlbnNp
b24gb24gdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIGV4dGVuc2lvbnMg
PSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVl
c3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucz1leHRlbnNpb25zKQot
ICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hh
bmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4
X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyht
dXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAg
ICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG5cclxuJwotICAgICAgICBhZGRfY2hh
bm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAg
ICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0
KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2VkICdIZWxs
bycgb24gbG9naWNhbCBjaGFubmVsIDEgYW5kIDIuCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5j
b21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEs
IG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByc3YxPVRydWUpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAot
ICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT1j
b21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9
VHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVv
dXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIu
Y2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydI
ZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAgICAj
IFdyaXR0ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAgICAgIG1lc3NhZ2Vz
ID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDEpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21wcmVzc2VkX2hlbGxvLCBtZXNzYWdlc1swXSkKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBy
ZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBdKQotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWxfZGVs
dGFfZW5jb2RpbmdfcmVtb3ZlX2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgICMgRW5hYmxlIHBl
cm1lc3NhZ2UgZGVmbGF0ZSBleHRlbnNpb24gb24gdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNoYW5u
ZWwuCi0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAg
ICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxf
ZXh0ZW5zaW9ucz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFu
ZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xP
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9R
VU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgUmVtb3ZlIHBlcm1lc3NhZ2UgZGVmbGF0ZSBl
eHRlbnNpb24uCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRUUC8xLjFcclxuJwotICAg
ICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOlxyXG4nCi0gICAgICAgICAg
ICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRk
X2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rp
bmc9MSwgZW5jb2RlZF9oYW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wg
PSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTIw
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQot
ICAgICAgICAjIFNlbmQgY29tcHJlc3NlZCBtZXNzYWdlIG9uIGxvZ2ljYWwgY2hhbm5lbCAyLiBU
aGUgbWVzc2FnZSBzaG91bGQKLSAgICAgICAgIyBiZSByZWplY3RlZCAoc2luY2UgcnN2MSBpcyBz
ZXQpLgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykK
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19G
TFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxm
LmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAg
ICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlm
IGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfTk9STUFMX0NMT1NVUkUsIGRyb3BfY2hhbm5lbC5k
cm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZHJvcF9jaGFubmVsLmNoYW5u
ZWxfaWQpCi0gICAgICAgICMgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiBzaG91bGQgYmUgcmFp
c2VkIG9uIGxvZ2ljYWwgY2hhbm5lbCAyLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0
YW5jZShkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLmV4Y2VwdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbikpCi0KLSAg
ICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9pbnZhbGlkX2VuY29kaW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTMsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFu
ZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwg
PSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dy
aXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9N
VVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RS
T1BfQ09ERV9VTktOT1dOX1JFUVVFU1RfRU5DT0RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
b24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0
X2FkZF9jaGFubmVsX2luY29tcGxldGVfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGluY29tcGxldGVfZW5jb2RlZF9oYW5kc2hh
a2UgPSAnR0VUIC9lY2hvIEhUVFAvMS4xJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0g
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9p
ZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9aW5jb21wbGV0
ZV9lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgx
IGluIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShu
b3QgMiBpbiBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzKQotCi0gICAgZGVmIHRlc3RfYWRkX2No
YW5uZWxfZHVwbGljYXRlX2NoYW5uZWxfaWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNo
ZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNw
YXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVy
LmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RB
X0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVl
c3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFu
ZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVs
X3JlcXVlc3QpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3Rf
aGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVh
dGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9Miwg
ZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNo
YWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3Jl
cXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxf
ZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAg
ICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Js
b2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9D
SEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0NIQU5ORUxf
QUxSRUFEWV9FWElTVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRy
b3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lOVEVSTkFM
X0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZHJvcF9jaGFu
bmVsKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAg
ICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hh
bmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXgu
X0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAg
IGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycp
Ci0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVl
c3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGRy
b3BfY2hhbm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQ9MikKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhkcm9wX2NoYW5uZWwpCi0KLSAgICAg
ICAgIyBUZXJtaW5hdGUgaW1wbGljaXRseSBvcGVuZWQgY2hhbm5lbC4KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAg
ZXhjZXB0aW9uID0gZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5leGNlcHRpb24KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGV4Y2VwdGlvbi5fX2NsYXNzX18gPT0gQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3BpbmdfZnJhbWUoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9O
VU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAg
YWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgK
LSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0x
MykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgcGluZ19mcmFtZSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVs
bG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKHBpbmdfZnJhbWUpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3Nh
Z2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRp
bF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rp
b24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1vbi5PUENPREVfUE9ORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtZXNzYWdlc1swXVsnbWVzc2FnZSddKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudGVkX3Bpbmcoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4
TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihy
ZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAg
IG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hB
Tk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9J
TklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxf
cmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAg
IGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
PWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xMykKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBT
ZW5kIGEgcGluZyB3aXRoIG1lc3NhZ2UgJ0hlbGxvIHdvcmxkIScgaW4gdHdvIGZyYWdtZW50ZWQg
ZnJhbWVzLgotICAgICAgICBwaW5nX2ZyYW1lMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U9J0hlbGxvICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhwaW5nX2ZyYW1lMSkKLSAgICAgICAgcGluZ19mcmFtZTIgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmdfZnJhbWUyKQotCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAg
IG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2Fn
ZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcsIG1lc3Nh
Z2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQh
JywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21l
bnRlZF9waW5nX3doaWxlX3JlY2VpdmluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJf
T0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2No
YW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xOSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAg
ICAgIyBTZW5kIGEgZnJhZ21lbnRlZCBmcmFtZSBvZiBtZXNzYWdlICdIZWxsbyAnLgotICAgICAg
ICBoZWxsbyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvICcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhoZWxsbykKLQotICAgICAgICAjIEJlZm9yZSBzZW5kaW5nIHRo
ZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UsIHNlbmQgYQotICAgICAgICAj
IGZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGluZzEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5P
UENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMSkK
LSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSduZyEnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9O
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcyKQotCi0gICAgICAg
ICMgU2VuZCB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLgotICAgICAg
ICB3b3JsZCA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1dvcmxkIScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMod29ybGQpCi0KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVz
c2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykKLSAgICAgICAg
Y29udHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9s
X21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05H
LCBjb250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnUGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX3R3b19waW5nX3doaWxlX3JlY2VpdmluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRp
c3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11
eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5z
dGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElB
TF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250
cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90
YT0yNSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wp
Ci0KLSAgICAgICAgIyBTZW5kIGEgZnJhZ21lbnRlZCBmcmFtZSBvZiBtZXNzYWdlICdIZWxsbyAn
LgotICAgICAgICBoZWxsbyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvICcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhoZWxsbykKLQotICAgICAgICAjIEJlZm9yZSBz
ZW5kaW5nIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UsIHNlbmQgYQot
ICAgICAgICAjIGZyYWdtZW50ZWQgcGluZyBhbmQgYSBub24tZnJhZ21lbnRlZCBwaW5nLgotICAg
ICAgICBwaW5nMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BpJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcxKQotICAgICAgICBwaW5nMiA9IF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2U9J25nIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMocGluZzIpCi0gICAgICAgIHBpbmczID0gX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZT0nUG9uZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
PWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhwaW5nMykKLQotICAgICAgICAjIFNlbmQgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSBvZiB0
aGUgbWVzc2FnZS4KLSAgICAgICAgd29ybGQgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdX
b3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENP
REVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHdv
cmxkKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0
PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVu
X21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwg
bWVzc2FnZXMpCi0gICAgICAgIGNvbnRyb2xfbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24u
Z2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5PUENPREVfUE9ORywgY29udHJvbF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgY29udHJvbF9tZXNzYWdlc1swXVsnbWVzc2Fn
ZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgY29udHJv
bF9tZXNzYWdlc1sxXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1Bvbmch
JywgY29udHJvbF9tZXNzYWdlc1sxXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2
ZV9tZXNzYWdlX3doaWxlX3JlY2VpdmluZ19mcmFnbWVudGVkX3Bpbmcoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBf
TXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxl
cihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAg
ICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0Zf
Q0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4
Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2Ug
PSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5u
ZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAg
ICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0
ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTkpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMg
U2VuZCBhIGZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGluZzEgPSBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNv
bW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhw
aW5nMSkKLQotICAgICAgICAjIEJlZm9yZSBzZW5kaW5nIHRoZSBsYXN0IGZyYWdtZW50ZWQgcGlu
Zywgc2VuZCBhIG1lc3NhZ2UuCi0gICAgICAgICMgVGhlIGxvZ2ljYWwgY2hhbm5lbCAoMikgc2hv
dWxkIGJlIGRyb3BwZWQuCi0gICAgICAgIG1lc3NhZ2UgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U9J0hlbGxvIHdvcmxkIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmluPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMobWVz
c2FnZSkKLQotICAgICAgICAjIFNlbmQgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSBvZiB0aGUg
bWVzc2FnZS4KLSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSduZyEn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09O
VElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcyKQot
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0
PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBi
IGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAg
ICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAg
ICAjIE5vIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgb24gY2hhbm5lbCAyLgotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVz
c2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIpCi0KLSAgICBkZWYgdGVzdF9zZW5k
X3Bpbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFu
ZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhf
aGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11
eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9waW5n
JykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVx
dWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAg
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAg
Zmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5p
c2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3df
Y29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5
ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2Rv
bmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5n
ZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29tbW9uLk9QQ09ERV9QSU5HLCBtZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1BpbmchJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0
ZXN0X3NlbmRfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVy
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5h
ZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9G
T1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0
X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIs
IGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRz
aGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIDMgYnl0ZXMuIFRoaXMgaXNuJ3QgZW5vdWdo
IHRvIHNlbmQgdGhlIHdob2xlIHBpbmcgZnJhbWUKLSAgICAgICAgIyBiZWNhdXNlIHRoZSBmcmFt
ZSB3aWxsIGhhdmUgNSBieXRlcyBtZXNzYWdlKCdQaW5nIScpLiBUaGUgZnJhbWUKLSAgICAgICAg
IyBzaG91bGQgYmUgZnJhZ21lbnRlZC4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0zKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFdh
aXQgdW50aWwgdGhlIHdvcmtlciBpcyBibG9ja2VkIGR1ZSB0byBzZW5kIHF1b3RhIHNob3J0YWdl
LgotICAgICAgICB0aW1lLnNsZWVwKDEpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggcmVtYWluaW5n
IDIgKyAxIGJ5dGVzIChpbmNsdWRpbmcgZXh0cmEgY29zdCkuCi0gICAgICAgIGZsb3dfY29udHJv
bCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9
MykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9
MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5f
Y29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENP
REVfUElORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdQaW5nIScsIG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Zy
YWdtZW50ZWRfcGluZ193aGlsZV9zZW5kaW5nX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hl
ciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhI
YW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkK
LSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJF
Ul9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIoCi0gICAgICAgICAgICBwYXRoPScvcGluZ193
aGlsZV9oZWxsb193b3JsZCcpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRl
X2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVu
Y29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFr
ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1
ZXN0KQotCi0gICAgICAgICMgQXBwbGljYXRpb24gd2lsbCBzZW5kOgotICAgICAgICAjIC0gdGV4
dCBtZXNzYWdlICdIZWxsbyAnIHdpdGggZmluPTAKLSAgICAgICAgIyAtIHBpbmcgd2l0aCAnUGlu
ZyEnIG1lc3NhZ2UKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnV29ybGQhJyB3aXRoIGZpbj0x
Ci0gICAgICAgICMgUmVwbGVuaXNoICg2ICsgMSkgKyAoMiArIDEpIGJ5dGVzIHNvIHRoYXQgdGhl
IHBpbmcgd2lsbCBiZQotICAgICAgICAjIGZyYWdtZW50ZWQgb24gdGhlIGxvZ2ljYWwgY2hhbm5l
bC4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hh
bm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBsZW5pc2hlZF9xdW90YT0xMCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgdGltZS5zbGVlcCgxKQotCi0gICAgICAg
ICMgUmVwbGVuaXNoIHJlbWFpbmluZyAzICsgNiBieXRlcy4KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT05
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1l
c3NhZ2VzKQotICAgICAgICBjb250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdl
dF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2Un
XSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRlZF90d29fcGluZ193aGlsZV9zZW5kaW5n
X2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9j
a19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0g
ICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2No
YW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFk
ZXIoCi0gICAgICAgICAgICBwYXRoPScvdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQnKQotICAg
ICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2Zy
YW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIEFwcGxp
Y2F0aW9uIHdpbGwgc2VuZDoKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnSGVsbG8gJyB3aXRo
IGZpbj0wCi0gICAgICAgICMgLSBwaW5nIHdpdGggJ1BpbmchJyBtZXNzYWdlCi0gICAgICAgICMg
LSBwaW5nIHdpdGggJ1BvbmchJyBtZXNzYWdlCi0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ1dv
cmxkIScgd2l0aCBmaW49MQotICAgICAgICAjIFJlcGxlbmlzaCAoNiArIDEpICsgKDIgKyAxKSBi
eXRlcyBzbyB0aGF0IHRoZSBmaXJzdCBwaW5nIHdpbGwgYmUKLSAgICAgICAgIyBmcmFnbWVudGVk
IG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVf
Zmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTApCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHRp
bWUuc2xlZXAoMSkKLQotICAgICAgICAjIFJlcGxlbmlzaCByZW1haW5pbmcgMyArICg1ICsgMSkg
KyA2IGJ5dGVzLiBUaGUgc2Vjb25kIHBpbmcgd29uJ3QKLSAgICAgICAgIyBiZSBmcmFnbWVudGVk
IG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVf
Zmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTUpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwgbWVzc2FnZXMpCi0g
ICAgICAgIGNvbnRyb2xfbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5f
Y29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENP
REVfUElORywgY29udHJvbF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1BpbmchJywgY29udHJvbF9tZXNzYWdlc1swXVsnbWVzc2FnZSddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUElORywgY29udHJvbF9tZXNzYWdlc1sx
XVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BvbmchJywgY29udHJvbF9t
ZXNzYWdlc1sxXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9kcm9wX2NoYW5uZWwo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0KLSAgICAgICAgIyBEcm9wQ2hhbm5lbCBmb3IgY2hhbm5lbCBpZCAxIHdoaWNo
IGRvZXNuJ3QgaGF2ZSByZWFzb24uCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFt
ZSgnXHgwMFx4NjBceDAxXHgwMCcsIG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhmcmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRs
ZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0g
bmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVY
X09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9Q
X0NPREVfQUNLTk9XTEVER0VELAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5l
bC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZHJvcF9jaGFubmVsLmNo
YW5uZWxfaWQpCi0KLSAgICBkZWYgdGVzdF90d29fZmxvd19jb250cm9sKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAg
ICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09G
X0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
ID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFu
bmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAg
ICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIDUgYnl0ZXMu
Ci0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5u
ZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVwbGVuaXNoZWRfcXVvdGE9NSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBTZW5kIDEwIGJ5dGVzLiBUaGUgc2VydmVy
IHdpbGwgdHJ5IGVjaG8gYmFjayAxMCBieXRlcy4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTIsIG1lc3NhZ2U9J0hlbGxvV29ybGQnKSkKLQotICAgICAgICAjIFJlcGxlbmlzaCA1ICsgMSAo
cGVyLW1lc3NhZ2UgZXh0cmEgY29zdCkgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9j
cmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFz
c2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAg
ICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvV29ybGQnXSwgbWVzc2FnZXMpCi0gICAg
ICAgIHJlY2VpdmVkX2Zsb3dfY29udHJvbHMgPSBbCi0gICAgICAgICAgICBiIGZvciBiIGluIHJl
cXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAg
ICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRkxPV19DT05UUk9MIGFuZCBiLmNoYW5u
ZWxfaWQgPT0gMl0KLSAgICAgICAgIyBSZXBsZW5pc2htZW50IGZvciAnSGVsbG9Xb3JsZCcgKyAx
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEsIHJlY2VpdmVkX2Zsb3dfY29udHJvbHNbMF0u
c2VuZF9xdW90YSkKLSAgICAgICAgIyBSZXBsZW5pc2htZW50IGZvciAnR29vZGJ5ZScgKyAxCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1sxXS5zZW5k
X3F1b3RhKQotCi0gICAgZGVmIHRlc3Rfbm9fc2VuZF9xdW90YV9vbl9zZXJ2ZXIoc2VsZik6Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNo
ZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4
SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgp
Ci0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1C
RVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRk
X2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsIG1lc3NhZ2U9J0hlbGxvV29ybGQnKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgICMgSnVzdCB3YWl0IGZvciAxIHNl
YyBzbyB0aGF0IHRoZSBzZXJ2ZXIgYXR0ZW1wdHMgdG8gZWNobyBiYWNrCi0gICAgICAgICMgJ0hl
bGxvV29ybGQnLgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG11eF9oYW5kbGVyLndhaXRfdW50
aWxfZG9uZSh0aW1lb3V0PTEpKQotCi0gICAgICAgICMgTm8gbWVzc2FnZSBzaG91bGQgYmUgc2Vu
dCBvbiBjaGFubmVsIDIuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVz
c2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIpCi0KLSAgICBkZWYgdGVzdF9ub19z
ZW5kX3F1b3RhX29uX3NlcnZlcl9mb3JfcGVybWVzc2FnZV9leHRyYV9jb3N0KHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9j
aGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9j
cmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAgICAgICAjIFJlcGxl
bmlzaCBvbmx5IGxlbignV29ybGQnKSBieXRlcy4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT01KQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLSAgICAgICAg
IyBTZXJ2ZXIgc2hvdWxkIG5vdCBjYWxsYmFjayBmb3IgdGhpcyBtZXNzYWdlLgotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nV29ybGQnKSkKLQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgICMgSnVzdCB3YWl0
IGZvciAxIHNlYyBzbyB0aGF0IHRoZSBzZXJ2ZXIgYXR0ZW1wdHMgdG8gZWNobyBiYWNrCi0gICAg
ICAgICMgJ1dvcmxkJy4KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0xKSkKLQotICAgICAgICAjIE9ubHkgb25lIG1lc3NhZ2Ugc2hv
dWxkIGJlIHNlbnQgb24gY2hhbm5lbCAyLgotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29u
bmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnSGVsbG8nXSwgbWVzc2FnZXMpCi0KLSAgICBkZWYgdGVzdF9xdW90YV92aW9sYXRpb25fYnlf
Y2xpZW50KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQot
ICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hh
bmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4
X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyht
dXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsIDApCi0KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvV29ybGQnKSkKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBjb250
cm9sX2Jsb2NrcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2Nr
cygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNvbnRyb2xfYmxvY2tzKSkKLSAg
ICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gY29udHJv
bF9ibG9ja3MKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9Q
X0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfU0VORF9R
VU9UQV9WSU9MQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRy
b3BfY29kZSkKLQotICAgIGRlZiB0ZXN0X2NvbnN1bWVfcXVvdGFfZW1wdHlfbWVzc2FnZShzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlz
cGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4
Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0
YXJ0KCkKLSAgICAgICAgIyBDbGllbnQgaGFzIDEgYnl0ZSBxdW90YS4KLSAgICAgICAgbXV4X2hh
bmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NM
T1RTLCAxKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hl
YWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRl
X2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVu
Y29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFr
ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1
ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgICMgU2VuZCBhbiBlbXB0eSBtZXNzYWdl
LiBQeXdlYnNvY2tldCBhbHdheXMgcmVwbGVuaXNoZXMgMSBieXRlIHF1b3RhCi0gICAgICAgICMg
Zm9yIGVtcHR5IG1lc3NhZ2UKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9
JycpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0gICAgICAgICMgVGhpcyBtZXNzYWdlIHZpb2xhdGVzIHF1b3RhIG9uIGNoYW5uZWwgaWQgMi4K
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9
MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZGlzcGF0Y2hlci5jaGFubmVs
X2V2ZW50c1syXS5tZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGRpc3Bh
dGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXNbMF0pCi0KLSAgICAgICAgcmVjZWl2ZWRf
Zmxvd19jb250cm9scyA9IFsKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0
aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2Rl
ID09IG11eC5fTVVYX09QQ09ERV9GTE9XX0NPTlRST0wgYW5kIGIuY2hhbm5lbF9pZCA9PSAyXQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZWNlaXZlZF9mbG93X2NvbnRyb2xzKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCByZWNlaXZlZF9mbG93X2NvbnRyb2xzWzBdLnNl
bmRfcXVvdGEpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIg
Zm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkK
LSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZHJvcF9jaGFubmVsLmNoYW5uZWxfaWQpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9MQVRJ
T04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLQot
ICAgIGRlZiB0ZXN0X2NvbnN1bWVfcXVvdGFfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICAjIENsaWVudCBoYXMgbGVuKCdIZWxsbycpICsgbGVuKCdHb29kYnllJykgKyAyIGJ5
dGVzIHF1b3RhLgotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lO
SVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsIDE0KQotCi0gICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFk
ZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0g
ICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9
IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZScsIGZpbj1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhUKSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J2xsbycsIGZpbj1UcnVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NP
TlRJTlVBVElPTikpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0
X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10s
IG1lc3NhZ2VzKQotCi0gICAgZGVmIHRlc3RfZnJhZ21lbnRlZF9jb250cm9sX21lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRp
c3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11
eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5z
dGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElB
TF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9waW5nJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBSZXBsZW5p
c2ggdG90YWwgNiBieXRlcyBpbiAzIEZsb3dDb250cm9scy4KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0x
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQot
ICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxlbmlzaGVkX3F1b3RhPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19j
b250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MykKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVz
c2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygy
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUElORywgbWVzc2FnZXNb
MF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIG1lc3NhZ2Vz
WzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX3Nsb3RfdmlvbGF0aW9uX2J5
X2NsaWVudChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkK
LSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9o
YW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11
eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMo
c2xvdHM9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9xdW90
YT1tdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRf
Y2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAg
ICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICAjIFRo
aXMgcmVxdWVzdCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
ID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFu
bmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAg
ICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRl
X2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11
eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoW10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzJdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRpc3BhdGNoZXIuY2hhbm5l
bF9ldmVudHMuaGFzX2tleSgzKSkKLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAg
ICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
YmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9Q
X0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgZHJvcF9jaGFubmVsLmNoYW5u
ZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfTkVXX0NIQU5O
RUxfU0xPVF9WSU9MQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVs
LmRyb3BfY29kZSkKLQotICAgIGRlZiB0ZXN0X3F1b3RhX292ZXJmbG93X2J5X2NsaWVudChzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlz
cGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4
Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0
YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMoc2xvdHM9MSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9xdW90YT1tdXguX0lOSVRJ
QUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLSAgICAgICAgIyBSZXBsZW5pc2ggMHg3RkZGRkZGRkZGRkZGRkZG
IGJ5dGVzIHR3aWNlLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJv
bF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgIHJlcGxlbmlz
aGVkX3F1b3RhPTB4N0ZGRkZGRkZGRkZGRkZGRikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNz
YWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndh
aXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQo
Ci0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9j
b250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENP
REVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5l
bC5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NF
TkRfUVVPVEFfT1ZFUkZMT1csCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVs
LmRyb3BfY29kZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfZW5jYXBzdWxhdGVkX21lc3NhZ2Uo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9IChtdXguX01VWF9PUENPREVfQUREX0NI
QU5ORUxfUkVRVUVTVCA8PCA1KQotICAgICAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKwot
ICAgICAgICAgICAgICAgICBtdXguX2VuY29kZV9jaGFubmVsX2lkKDEpICsKLSAgICAgICAgICAg
ICAgICAgbXV4Ll9lbmNvZGVfbnVtYmVyKDApKQotICAgICAgICBwYXlsb2FkID0gbXV4Ll9lbmNv
ZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBibG9jawotICAgICAgICB0
ZXh0X2ZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFtZShwYXlsb2FkLCBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNr
PVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXModGV4dF9mcmFtZSkK
LQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIg
Zm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkK
LSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfSU5WQUxJRF9FTkNBUFNV
TEFUSU5HX01FU1NBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRy
b3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lOVEVSTkFM
X0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxfaWRfdHJ1bmNh
dGVkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAg
ICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hh
bmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgVGhlIGxhc3QgYnl0ZSBvZiB0aGUgY2hhbm5lbCBp
ZCBpcyBtaXNzaW5nLgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4ODAn
LCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBi
IGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2Nrcygp
Ci0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0NIQU5ORUxfSURfVFJV
TkNBVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lO
VF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2Vy
dmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbm5lcl9mcmFtZV90cnVuY2F0ZWQoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRp
c3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11
eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5z
dGFydCgpCi0KLSAgICAgICAgIyBKdXN0IGNvbnRhaW4gY2hhbm5lbCBpZCAxLgotICAgICAgICBm
cmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDEnLCBtYXNrPVRydWUpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRy
b3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVj
dGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29k
ZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG11eC5fRFJPUF9DT0RFX0VOQ0FQU1VMQVRFRF9GUkFNRV9JU19UUlVOQ0FURUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29k
ZSkKLQotICAgIGRlZiB0ZXN0X3Vua25vd25fbXV4X29wY29kZShzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLQotICAgICAg
ICAjIFVuZGVmaW5lZCBvcGNvZGUgNQotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJh
bWUoJ1x4MDBceGEwJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAot
ICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29u
dHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RF
X0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9V
TktOT1dOX01VWF9PUENPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVs
LmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lOVEVS
TkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfbXV4X2Nv
bnRyb2xfYmxvY2soc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVz
dCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBt
dXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAg
ICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBEcm9wQ2hhbm5lbCBjb250YWlucyAx
IGJ5dGUgcmVhc29uCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFtZSgnXHgwMFx4
NjBceDAwXHgwMVx4MDAnLCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndh
aXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQo
Ci0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9j
b250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENP
REVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RF
X0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJv
cF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RB
VFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X3Blcm1l
c3NhZ2VfZGVmbGF0ZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1
ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAg
IG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAg
ICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxf
c2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkK
LQotICAgICAgICAjIEVuYWJsZSBwZXJtZXNzYWdlIGRlZmxhdGUgZXh0ZW5zaW9uIG9uIGxvZ2lj
YWwgY2hhbm5lbCAyLgotICAgICAgICBleHRlbnNpb25zID0gY29tbW9uLlBFUk1FU1NBR0VfREVG
TEFURV9FWFRFTlNJT04KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVl
c3RfaGVhZGVyKHBhdGg9Jy9lY2hvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM9ZXh0ZW5zaW9ucykKLSAgICAgICAgYWRkX2No
YW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAg
ICAgIyBTZW5kIGNvbXByZXNzZWQgJ0hlbGxvJyB0d2ljZS4KLSAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
bzEgPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxv
MSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbzEgPSBjb21wcmVzc2VkX2hlbGxvMVs6LTRdCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0yLCBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8xLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8yID0gY29t
cHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzIgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8y
ID0gY29tcHJlc3NlZF9oZWxsbzJbOi00XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByc3YxPVRydWUpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdl
PSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29k
YnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxf
ZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbycsICdI
ZWxsbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVu
dHNbMl0ubWVzc2FnZXMpCi0gICAgICAgICMgV3JpdHRlbiAnSGVsbG8ncyBzaG91bGQgYmUgY29t
cHJlc3NlZC4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0
ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obWVzc2FnZXMp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWRfaGVsbG8xLCBtZXNzYWdlc1sw
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvMiwgbWVzc2FnZXNb
MV0pCi0KLQotICAgIGRlZiB0ZXN0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFnbWVudGVkX21lc3Nh
Z2Uoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygK
LSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2No
YW5uZWxfZXh0ZW5zaW9ucz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBt
dXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5O
RUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2VkICdIZWxs
b0hlbGxvSGVsbG8nIGFzIGZyYWdtZW50ZWQgbWVzc2FnZS4KLSAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsb0hlbGxvSGVsbG8nKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBj
b21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0KLSAgICAgICAgbSA9IGxl
bihjb21wcmVzc2VkX2hlbGxvKSAvIDIKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxv
WzptXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsIHJzdjE9
VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9URVhUKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAg
ICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvW206XSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwgcnN2MT1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5V
QVRJT04pKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAg
ICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnll
JykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9u
ZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsb0hlbGxvSGVs
bG8nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzFdLm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRf
d3JpdHRlbl9tZXNzYWdlcygxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNz
YWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbywgbWVzc2Fn
ZXNbMF0pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2JhZF9mcmFnbWVudGVkX21lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRp
c3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11
eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5z
dGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElB
TF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBTZW5kIGEg
ZnJhbWUgd2l0aCBmaW49RmFsc2UsIGFuZCB0aGVuIHNlbmQgYSBmcmFtZSB3aXRoCi0gICAgICAg
ICMgb3Bjb2RlPVRFWFQgKG5vdCBDT05USU5VQVRJT04pLiBMb2dpY2FsIGNoYW5uZWwgMiBzaG91
bGQgYmUgZHJvcHBlZC4KLSAgICAgICAgZnJhbWUxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2U9J0hlbGxvICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29t
bW9uLk9QQ09ERV9URVhUKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZy
YW1lMSkKLSAgICAgICAgZnJhbWUyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1dvcmxk
IScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X1RFWFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUyKQotCi0g
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScv
ZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVs
X3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5nPTAsCi0g
ICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAg
ICAgICMgU2VuZCBhIGZyYW1lIHdpdGggb3Bjb2RlPUNPTlRJTlVBVElPTiB3aXRob3V0IGEgcHJl
Y2VkaW5nIGZyYW1lCi0gICAgICAgICMgdGhlIGZpbiBvZiB3aGljaCBpcyBub3Qgc2V0LiBMb2dp
Y2FsIGNoYW5uZWwgMyBzaG91bGQgYmUgZHJvcHBlZC4KLSAgICAgICAgZnJhbWUzID0gX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lMykKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hh
bm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAg
ICAgICAgY2hhbm5lbF9pZD00LCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFtZSB3aXRo
IG9wY29kZT1QSU5HIGFuZCBmaW49RmFsc2UsIGFuZCB0aGVuIHNlbmQgYSBmcmFtZQotICAgICAg
ICAjIHdpdGggb3Bjb2RlPVRFWFQgKG5vdCBDT05USU5VQVRJT04pLiBMb2dpY2FsIGNoYW5uZWwg
NCBzaG91bGQgYmUKLSAgICAgICAgIyBkcm9wcGVkLgotICAgICAgICBmcmFtZTQgPSBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD00LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZT0nUGluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGZyYW1lNCkKLSAgICAgICAgZnJhbWU1ID0gX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U9J0hlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
PWNvbW1vbi5PUENPREVfVEVYVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhmcmFtZTUpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAg
ICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2Ri
eWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9k
b25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVscyA9IFsKLSAgICAgICAgICAg
IGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tz
KCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5O
RUxdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGRyb3BfY2hhbm5lbHMpKQotICAg
ICAgICBmb3IgZCBpbiBkcm9wX2NoYW5uZWxzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtdXguX0RST1BfQ09ERV9CQURfRlJBR01FTlRBVElPTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZC5kcm9wX2NvZGUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
ICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3N0cmVhbS5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFhY2ZlYjA0OGQzLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3Rfc3RyZWFtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBm
b3Igc3RyZWFtIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9z
eXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1
bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBzdHJlYW0KLQotCi1jbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0gICAgZGVm
IHRlc3RfY3JlYXRlX2hlYWRlcihzZWxmKToKLSAgICAgICAgIyBtb3JlLCByc3YxLCAuLi4sIHJz
djQgYXJlIGFsbCB0cnVlCi0gICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNv
bW1vbi5PUENPREVfVEVYVCwgMSwgMSwgMSwgMSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHhmMVx4ODEnLCBoZWFkZXIpCi0KLSAgICAgICAgIyBNYXhpbXVtIHBheWxvYWQgc2l6
ZQotICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKLSAgICAgICAgICAgIGNv
bW1vbi5PUENPREVfVEVYVCwgKDEgPDwgNjMpIC0gMSwgMCwgMCwgMCwgMCwgMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4N2ZceDdmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZicsIGhlYWRlcikKLQotICAgICAgICAjIEludmFsaWQgb3Bjb2RlIDB4MTAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDAsIDAs
IDAsIDAsIDAsIDApCi0KLSAgICAgICAgIyBJbnZhbGlkIHZhbHVlIDB4ZiBwYXNzZWQgdG8gbW9y
ZSBwYXJhbWV0ZXIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVYVCwgMCwgMHhmLCAwLCAwLCAwLCAwKQotCi0g
ICAgICAgICMgVG9vIGxvbmcgcGF5bG9hZF9sZW5ndGgKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNyZWF0ZV9o
ZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVYVCwgMSA8
PCA2MywgMCwgMCwgMCwgMCwgMCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC90ZXN0L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW1faGl4
aWU3NS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E5YWM3MTMwYjczLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw1OSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1
bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2Nh
dGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFt
IGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIHRlc3QudGVzdF9tc2d1dGlsIGltcG9ydCBfY3Jl
YXRlX3JlcXVlc3RfaGl4aWU3NQotCi0KLWNsYXNzIFN0cmVhbUhpeGllNzVUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBTdHJlYW1IaXhpZTc1IGNsYXNzLiIi
IgotCi0gICAgZGVmIHRlc3RfcGF5bG9hZF9sZW5ndGgoc2VsZik6Ci0gICAgICAgIGZvciBsZW5n
dGgsIGJ5dGVzIGluICgoMCwgJ1x4MDAnKSwgKDB4N2YsICdceDdmJyksICgweDgwLCAnXHg4MVx4
MDAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEyMzQsICdceDgwXHhhNFx4
MzQnKSk6Ci0gICAgICAgICAgICB0ZXN0X3N0cmVhbSA9IFN0cmVhbUhpeGllNzUoX2NyZWF0ZV9y
ZXF1ZXN0X2hpeGllNzUoYnl0ZXMpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgICAgICBsZW5ndGgsIHRlc3Rfc3RyZWFtLl9yZWFkX3BheWxvYWRfbGVuZ3RoX2hp
eGllNzUoKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1h
aW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
dXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY0YmEzZjQ3NzM3YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0
aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgdXRpbCBtb2R1bGUuIiIi
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0KLQotaW1wb3J0IG9zCi1p
bXBvcnQgcmFuZG9tCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9z
eXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1
bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1RFU1RfREFUQV9E
SVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScp
Ci0KLQotY2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRl
c3QgZm9yIHV0aWwgbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfZ2V0X3N0YWNrX3RyYWNlKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdOb25lXG4nLCB1dGlsLmdldF9zdGFja190
cmFjZSgpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhID0gMSAvIDAgICMgSW50ZW50aW9u
YWxseSByYWlzZSBleGNlcHRpb24uCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAg
ICAgICB0cmFjZSA9IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkKLSAgICAgICAgICAgIHNlbGYuZmFp
bFVubGVzcyh0cmFjZS5zdGFydHN3aXRoKCdUcmFjZWJhY2snKSkKLSAgICAgICAgICAgIHNlbGYu
ZmFpbFVubGVzcyh0cmFjZS5maW5kKCdaZXJvRGl2aXNpb25FcnJvcicpICE9IC0xKQotCi0gICAg
ZGVmIHRlc3RfcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgZXhj
ID0gRXhjZXB0aW9uKCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywg
c3RyKGV4YykpCi0gICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbignSGVs
bG8gJywgZXhjKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCcsIHN0cihl
eGMpKQotCi0gICAgZGVmIHRlc3RfZ2V0X3NjcmlwdF9pbnRlcnAoc2VsZik6Ci0gICAgICAgIGN5
Z3dpbl9wYXRoID0gJ2M6XFxjeWd3aW5cXGJpbicKLSAgICAgICAgY3lnd2luX3BlcmwgPSBvcy5w
YXRoLmpvaW4oY3lnd2luX3BhdGgsICdwZXJsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKF9U
RVNUX0RBVEFfRElSLCAnUkVBRE1FJykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
REFUQV9ESVIsICdSRUFETUUnKSwgY3lnd2luX3BhdGgpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcvdXNyL2Jpbi9wZXJsIC13VCcsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAg
ICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdoZWxsby5wbCcpKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjeWd3aW5fcGVybCArICcgLXdUJywgdXRpbC5nZXRfc2NyaXB0X2lu
dGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBs
JyksIGN5Z3dpbl9wYXRoKSkKLQotICAgIGRlZiB0ZXN0X2hleGlmeShzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnNjEgN2EgNDEgNWEgMzAgMzkgMjAgMDkgMGQgMGEgMDAgZmYnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KCdhekFaMDkgXHRcclxuXHgwMFx4
ZmYnKSkKLQotCi1jbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFza2VyIGNsYXNzLiIiIgotCi0g
ICAgZGVmIHRlc3RfbWFzayhzZWxmKToKLSAgICAgICAgIyBTYW1wbGUgaW5wdXQgZTYsOTcsYTUg
aXMgVSs2NWU1IGluIFVURi04Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIoJ1x4ZmZceGZmXHhmZlx4ZmYnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhl
Nlx4OTdceGE1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgxOVx4NjhceDVhJywgcmVz
dWx0KQotCi0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4MDBceDAw
XHgwMFx4MDAnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdceGE1JykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhlNlx4OTdceGE1JywgcmVzdWx0KQotCi0gICAg
ICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4ZTZceDk3XHhhNVx4MjAnKQot
ICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdceGE1JykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnXHgwMFx4MDBceDAwJywgcmVzdWx0KQotCi0gICAgZGVmIHRlc3RfbWFz
a190d2ljZShzZWxmKToKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcign
XHgwMFx4N2ZceGZmXHgyMCcpCi0gICAgICAgICMgbWFza1swXSwgbWFza1sxXSwgLi4uIHdpbGwg
YmUgdXNlZC4KLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4MDBceDAwXHgwMFx4MDBc
eDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFx4N2ZceGZmXHgyMFx4MDAnLCBy
ZXN1bHQpCi0gICAgICAgICMgbWFza1syXSwgbWFza1swXSwgLi4uIHdpbGwgYmUgdXNlZCBmb3Ig
dGhlIG5leHQgY2FsbC4KLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4MDBceDAwXHgw
MFx4MDBceDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg3Zlx4ZmZceDIwXHgwMFx4
N2YnLCByZXN1bHQpCi0KLSAgICBkZWYgdGVzdF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6Ci0gICAg
ICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ21BU2snKQotICAgICAgICBvcmln
aW5hbCA9ICcnLmpvaW4oW2NocihpICUgMjU2KSBmb3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotICAg
ICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhvcmlnaW5hbCkKLSAgICAgICAgZXhwZWN0ZWQgPSAn
Jy5qb2luKAotICAgICAgICAgICAgICAgIFtjaHIoKGkgJSAyNTYpIF4gb3JkKCdtQVNrJ1tpICUg
NF0pKSBmb3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCByZXN1bHQpCi0KLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tl
cignTWFTaycpCi0gICAgICAgIGZpcnN0X3BhcnQgPSAnVGhlIFdlYlNvY2tldCBQcm90b2NvbCBl
bmFibGVzIHR3by13YXkgY29tbXVuaWNhdGlvbi4nCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5t
YXNrKGZpcnN0X3BhcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAg
ICAgJ1x4MTlcdDZLXHgxYVx4MDQxOCJceDAyOFx4MGU5QVx4MDNceDE5Ilx4MTU8XHgwOCJccnNc
eDBlIycKLSAgICAgICAgICAgICAgICAnXHgwMDFceDA3KFx4MTJzXHgxZjpceDBlflx4MWMsXHgx
OHNceDA4Ilx4MGM+XHgxZSNceDA4MFxuOScKLSAgICAgICAgICAgICAgICAnXHgwODxceDA1Yycs
Ci0gICAgICAgICAgICAgICAgcmVzdWx0KQotICAgICAgICBzZWNvbmRfcGFydCA9ICdJdCBoYXMg
dHdvIHBhcnRzOiBhIGhhbmRzaGFrZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJwotICAgICAgICBy
ZXN1bHQgPSBtYXNrZXIubWFzayhzZWNvbmRfcGFydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgICAgICAiKCdLJVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQy
XHgwNSlceDEyO1xuJlx4MDRzXG4jIgotICAgICAgICAgICAgICAgICJceDA1c1x4MWYlXHgwNHNc
eDBmLFx4MTUySzlceDEzMlx4MDU+XHgwNzZceDE5YyIsCi0gICAgICAgICAgICAgICAgcmVzdWx0
KQotCi0KLWRlZiBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCBtaW5fbnVtX2NodW5rcyk6Ci0g
ICAgY2h1bmtzID0gW10KLSAgICBieXRlc19jaHVua2VkID0gMAotCi0gICAgd2hpbGUgYnl0ZXNf
Y2h1bmtlZCA8IGxlbihzb3VyY2UpOgotICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRp
bnQoCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgbWluKGxlbihzb3VyY2UpIC8gbWluX251
bV9jaHVua3MsIGxlbihzb3VyY2UpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgIGNodW5rID0g
c291cmNlW2J5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCi0gICAgICAg
IGNodW5rcy5hcHBlbmQoY2h1bmspCi0gICAgICAgIGJ5dGVzX2NodW5rZWQgKz0gY2h1bmtfc2l6
ZQotCi0gICAgcmV0dXJuIGNodW5rcwotCi0KLWNsYXNzIEluZmxhdGVyRGVmbGF0ZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBfSW5mbGF0ZXIgYW5kIF9E
ZWZsYXRlciBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2luZmxhdGVfZGVmbGF0ZV9kZWZhdWx0
KHNlbGYpOgotICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgJy0nICogMzAwMDAgKyBiJ2hlbGxv
JwotICAgICAgICBpbmZsYXRlcjE1ID0gdXRpbC5fSW5mbGF0ZXIoMTUpCi0gICAgICAgIGRlZmxh
dGVyMTUgPSB1dGlsLl9EZWZsYXRlcigxNSkKLSAgICAgICAgaW5mbGF0ZXI4ID0gdXRpbC5fSW5m
bGF0ZXIoOCkKLSAgICAgICAgZGVmbGF0ZXI4ID0gdXRpbC5fRGVmbGF0ZXIoOCkKLQotICAgICAg
ICBjb21wcmVzc2VkMTUgPSBkZWZsYXRlcjE1LmNvbXByZXNzX2FuZF9maW5pc2goaW5wdXQpCi0g
ICAgICAgIGNvbXByZXNzZWQ4ID0gZGVmbGF0ZXI4LmNvbXByZXNzX2FuZF9maW5pc2goaW5wdXQp
Ci0KLSAgICAgICAgaW5mbGF0ZXIxNS5hcHBlbmQoY29tcHJlc3NlZDE1KQotICAgICAgICBpbmZs
YXRlcjguYXBwZW5kKGNvbXByZXNzZWQ4KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwo
Y29tcHJlc3NlZDE1LCBjb21wcmVzc2VkOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1
dCwgaW5mbGF0ZXIxNS5kZWNvbXByZXNzKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChp
bnB1dCwgaW5mbGF0ZXI4LmRlY29tcHJlc3MoLTEpKQotCi0gICAgZGVmIHRlc3RfcmFuZG9tX3Nl
Y3Rpb24oc2VsZik6Ci0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAgICAgICAgc291cmNlID0g
Jycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkg
aW4geHJhbmdlKDEwMCAqIDEwMjQpXSkKLQotICAgICAgICBjaHVua2VkX2lucHV0ID0gZ2V0X3Jh
bmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAgIHByaW50KCJJbnB1dCBjaHVuayBzaXpl
czogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2lucHV0XSkKLQotICAgICAgICBkZWZs
YXRlciA9IHV0aWwuX0RlZmxhdGVyKDE1KQotICAgICAgICBjb21wcmVzc2VkID0gW10KLSAgICAg
ICAgZm9yIGNodW5rIGluIGNodW5rZWRfaW5wdXQ6Ci0gICAgICAgICAgICBjb21wcmVzc2VkLmFw
cGVuZChkZWZsYXRlci5jb21wcmVzcyhjaHVuaykpCi0gICAgICAgIGNvbXByZXNzZWQuYXBwZW5k
KGRlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goJycpKQotCi0gICAgICAgIGNodW5rZWRfZXhw
ZWN0YXRpb24gPSBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCAxMCkKLSAgICAgICAgcHJpbnQg
KCJFeHBlY3RhdGlvbiBjaHVuayBzaXplczogJXIiICUKLSAgICAgICAgICAgICAgIFtsZW4oYykg
Zm9yIGMgaW4gY2h1bmtlZF9leHBlY3RhdGlvbl0pCi0KLSAgICAgICAgaW5mbGF0ZXIgPSB1dGls
Ll9JbmZsYXRlcigxNSkKLSAgICAgICAgaW5mbGF0ZXIuYXBwZW5kKCcnLmpvaW4oY29tcHJlc3Nl
ZCkpCi0gICAgICAgIGZvciBjaHVuayBpbiBjaHVua2VkX2V4cGVjdGF0aW9uOgotICAgICAgICAg
ICAgZGVjb21wcmVzc2VkID0gaW5mbGF0ZXIuZGVjb21wcmVzcyhsZW4oY2h1bmspKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHVuaywgZGVjb21wcmVzc2VkKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJycsIGluZmxhdGVyLmRlY29tcHJlc3MoLTEpKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RkYXRhL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAwMWFhNTU5
NWNkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL1JFQURNRQorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLVRlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzY3Zjk5MzBmNzgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGhhbmRzaGFrZQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJv
cnQgZm9yIHRlc3QiKQotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oImFib3J0IGZvciB0
ZXN0IikKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
Ymxhbmtfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjg3YzZhZjIzZGYu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3No
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL29yaWdpbl9jaGVja193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJj
MTM5ZmExNzZjYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9vcmlnaW5fY2hlY2tfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgotICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20nOgot
ICAgICAgICByZXR1cm4KLSAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3JpZ2lu
OiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2NoZWNr
X3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI5ODJkMDIzMWVmMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkV4Y2VwdGlv
biBpbiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEoKS4KLSIiIgotCi0KLWRlZiB3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlv
bmFsIEV4Y2VwdGlvbiBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0
LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90
aGVfZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2U3YmUxODAyZTMuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9h
dF90aGVfZW5kLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUuCi0iIiIKLQot
Ci1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwot
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKAotICAgICAgICAgICAgJ3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weSBp
cyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2Us
IHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjM1MmViNGNhMjMuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJOb24t
Y2FsbGFibGUgaGFuZGxlcnMuCi0iIiIKLQotCi13ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZSA9IFRydWUKLXdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSA9IDEKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5f
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiM2ZmNjkzMDI1Ni4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
ZSgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2Nv
bCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA5
YTM2MTQyNjgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L3N1Yi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVy
X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9l
bmQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNo
YWtlX3NpZ193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hh
bmRzaGFrZV9zaWdfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmY2NTli
YzlhZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2Ugc2lnbmF0dXJlLgotIiIiCi0KLQotZGVmIG5vX3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAg
ICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUK
LSAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkp
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGUwZTJlNTUwNzk0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldyb25nIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KLSIiIgotCi0KLWRlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIG5vX3dl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoCi0gICAgICAgICAgICAnc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkgaXMgY2Fs
bGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1
ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTVmYzdiZWY0MjkxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Y2NhM2VkZTY4Yy4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9SRUFETUUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiNWU0MTU4MDAxLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2Ns
aWVudF9mb3JfdGVzdGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3Nl
cnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC9tb2NrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L211eF9jbGllbnRfZm9yX3Rl
c3RpbmcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9zZXRfc3lzX3BhdGgu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2VuZHRvZW5k
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkwMC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21v
Y2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXV4LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtX2hpeGll
NzUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2JiMmVkNTIzYjNiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvQ09OVFJJQlVUSU5H
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9S
RUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0X18u
cHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9fX2luaXRfXy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWZjNWExOWYz
Y2IuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQua2V5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2Nl
cnRzL2NlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5qc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNvbiBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9j
b21tYW5kcy5qc29uCmluZGV4IGQ0ZTNjZTgxMjgwMC4uNDQ5NmY0ODM2ZmY5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMv
Y29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNvbgpAQCAtMyw3ICszLDYgQEAKICAgICAicGF0
aCI6ICJzZXJ2ZS5weSIsCiAgICAgInNjcmlwdCI6ICJydW4iLAogICAgICJwYXJzZXIiOiAiZ2V0
X3BhcnNlciIsCi0gICAgInB5M29ubHkiOiB0cnVlLAogICAgICJoZWxwIjogIlN0YXJ0IHRoZSBR
VUlDIHNlcnZlciBmb3IgV2ViVHJhbnNwb3J0IiwKICAgICAidmlydHVhbGVudiI6IHRydWUsCiAg
ICAgInJlcXVpcmVtZW50cyI6IFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdkNTQ1OWUxNTFmLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9xdWljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9xdWljL1JFQURNRS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0
X3NlcnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3NlcnZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19t
eXB5LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDY1MTAwZDcwMzc2Yy4uMWM4NTA2NTg1Nzlj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dApAQCAtMSwz
ICsxLDMgQEAKLW15cHk9PTAuNzkwCitteXB5PT0wLjgxMgogbXlweS1leHRlbnNpb25zPT0wLjQu
MwotdHlwZWQtYXN0PT0xLjQuMQordHlwZWQtYXN0PT0xLjQuMgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvY3NzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9ydW5uZXIvY3NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjYTBjMTgxNTJkZDQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvYm9vdHN0cmFw
LXRoZW1lLm1pbi5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3J1bm5lci9jc3MvYm9vdHN0cmFwLm1pbi5jc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvZm9udHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRkYWYyNzIxM2JjNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvZm9udHMv
Z2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250cy9nbHlwaGljb25zLWhhbGZs
aW5ncy1yZWd1bGFyLnN2ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIudHRm
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5u
ZXIvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci53b2ZmCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9y
ZXBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3J1bm5lci9yZXBvcnQucHkKaW5kZXggZTk5ODZmZGIzOTgyLi5jMjI5OTRjZWQwMGUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcnVubmVyL3JlcG9ydC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkKQEAgLTksNyArOSw2IEBAIGltcG9y
dCB0eXBlcwogCiBmcm9tIGNnaSBpbXBvcnQgZXNjYXBlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBkZWZhdWx0ZGljdAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiAKIGRlZiBodG1sX2Vz
Y2FwZShpdGVtLCBlc2NhcGVfcXVvdGU9RmFsc2UpOgpAQCAtNDUsNyArNDQsNyBAQCBjbGFzcyBO
b2RlKG9iamVjdCk6CiAgICAgICAgICAgICBhdHRyc191bmljb2RlID0gIiAiICsgIiAiLmpvaW4o
IiVzPVwiJXNcIiIgJSAoaHRtbF9lc2NhcGUoa2V5KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2VzY2FwZSh2YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlc2NhcGVfcXVvdGU9VHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuYXR0cnMp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuYXR0cnMuaXRlbXMoKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0
dHJzX3VuaWNvZGUgPSAiIgogICAgICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIgJSAoc2Vs
Zi5uYW1lLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpzCmluZGV4IDI3OTQ2ZTEz
OWI5YS4uMTU3NzIyOGIyZmJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpz
CkBAIC04OTMsMTggKzg5MywxNyBAQCBmdW5jdGlvbiBzZXR1cCgpIHsKICAgICBuZXcgTWFudWFs
VUkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hbnVhbFVJIiksIHJ1bm5lcik7CiAgICAgbmV3
IFZpc3VhbE91dHB1dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IiksIHJ1bm5lcik7
CiAKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGUpIHsK
KyAgICAgICAgaWYgKGUuZGF0YS50eXBlID09PSAiY29tcGxldGUiKQorICAgICAgICAgICAgcnVu
bmVyLm9uX2NvbXBsZXRlKGUuZGF0YS50ZXN0cywgZS5kYXRhLnN0YXR1cyk7CisgICAgfSk7CisK
ICAgICBpZiAob3B0aW9ucy5hdXRvcnVuID09PSAiMSIpIHsKICAgICAgICAgcnVubmVyLnN0YXJ0
KHRlc3RfY29udHJvbC5nZXRfcGF0aCgpLAogICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb250
cm9sLmdldF90ZXN0X3R5cGVzKCksCiAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnRyb2wu
Z2V0X3Rlc3RoYXJuZXNzX3NldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nv
bnRyb2wuZ2V0X3VzZV9yZWdleCgpKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkgewotICAgICAgaWYg
KGUuZGF0YS50eXBlID09PSAiY29tcGxldGUiKQotICAgICAgICBydW5uZXIub25fY29tcGxldGUo
ZS5kYXRhLnRlc3RzLCBlLmRhdGEuc3RhdHVzKTsKLSAgICB9KTsKIH0KIAogd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBzZXR1cCwgZmFsc2UpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5u
ZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3J1bm5lci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzQ0YjJhNTc1MWMzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9pbmRleC5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcmVw
b3J0LmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcnVubmVyL3JlcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRhdGVfbWFu
aWZlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc2NyaXB0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmViOWIyNjI3M2UyLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
Y3JpcHRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
Y3JpcHRzL2lkMnBhdGguanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NjcmlwdHMvaWQycGF0aC5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL21hbmlmZXN0LmpzCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL3BhY2th
Z2UuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2NyaXB0cy90b2MuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NjcmlwdHMvdXBkYXRlLWRpcmVjdG9yeS1zdHJ1Y3R1cmUuanMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5CmluZGV4IDNhMWM3ODI3OTRhMy4uOGUxYWFhOGRjNzNj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NlcnZlL3NlcnZlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvc2VydmUucHkKQEAgLTQsOCArNCwxMCBAQCBmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAKIGltcG9ydCBhYmMKIGltcG9ydCBh
cmdwYXJzZQoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCitp
bXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0
IHNpZ25hbApAQCAtMTUsMTQgKzE3LDEyIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcK
IGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJs
bGliCitpbXBvcnQgdXJsbGliCiBpbXBvcnQgdXVpZAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
ZGVmYXVsdGRpY3QsIE9yZGVyZWREaWN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHBy
b2R1Y3QKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBFdmVudAogCiBmcm9t
IGxvY2FscGF0aHMgaW1wb3J0IHJlcG9fcm9vdAotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJlbG9h
ZF9tb2R1bGUKIAogZnJvbSBtYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCByZWFkX3NjcmlwdF9t
ZXRhZGF0YSwganNfbWV0YV9yZSwgcGFyc2VfdmFyaWFudHMKIGZyb20gd3B0c2VydmUgaW1wb3J0
IHNlcnZlciBhcyB3cHRzZXJ2ZSwgaGFuZGxlcnMKQEAgLTIyNyw2ICsyMjcsMjIgQEAgZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigiJShwYXRoKXMlKHF1ZXJ5KXMiKSk7CiAiIiIK
IAogCitjbGFzcyBXb3JrZXJNb2R1bGVzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgorICAg
IGdsb2JhbF90eXBlID0gImRlZGljYXRlZHdvcmtlci1tb2R1bGUiCisgICAgcGF0aF9yZXBsYWNl
ID0gWygiLmFueS53b3JrZXItbW9kdWxlLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci1t
b2R1bGUuanMiKSwKKyAgICAgICAgICAgICAgICAgICAgKCIud29ya2VyLmh0bWwiLCAiLndvcmtl
ci5qcyIpXQorICAgIHdyYXBwZXIgPSAiIiI8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
dXRmLTg+CislKG1ldGEpcworPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorZmV0Y2hfdGVzdHNfZnJv
bV93b3JrZXIobmV3IFdvcmtlcigiJShwYXRoKXMlKHF1ZXJ5KXMiLCB7IHR5cGU6ICJtb2R1bGUi
IH0pKTsKKzwvc2NyaXB0PgorIiIiCisKKwogY2xhc3MgV2luZG93SGFuZGxlcihIdG1sV3JhcHBl
ckhhbmRsZXIpOgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi53aW5kb3cuaHRtbCIsICIud2luZG93
LmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgpAQCAtMjc1LDYgKzI5MSwy
MSBAQCBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCIlKHBhdGgpcyUo
cXVlcnkpcyIpKTsKICIiIgogCiAKK2NsYXNzIFNoYXJlZFdvcmtlck1vZHVsZXNIYW5kbGVyKEh0
bWxXcmFwcGVySGFuZGxlcik6CisgICAgZ2xvYmFsX3R5cGUgPSAic2hhcmVkd29ya2VyLW1vZHVs
ZSIKKyAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNoYXJlZHdvcmtlci1tb2R1bGUuaHRtbCIs
ICIuYW55LmpzIiwgIi5hbnkud29ya2VyLW1vZHVsZS5qcyIpXQorICAgIHdyYXBwZXIgPSAiIiI8
IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+CislKG1ldGEpcworPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9k
aXY+Cis8c2NyaXB0PgorZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigi
JShwYXRoKXMlKHF1ZXJ5KXMiLCB7IHR5cGU6ICJtb2R1bGUiIH0pKTsKKzwvc2NyaXB0PgorIiIi
CisKKwogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFuZGxlcik6CiAg
ICAgZ2xvYmFsX3R5cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIu
YW55LnNlcnZpY2V3b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIildCkBA
IC0yOTYsOCArMzI3LDU0IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBl
ckhhbmRsZXIpOgogIiIiCiAKIAotY2xhc3MgQW55V29ya2VySGFuZGxlcihXcmFwcGVySGFuZGxl
cik6CitjbGFzcyBTZXJ2aWNlV29ya2VyTW9kdWxlc0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVy
KToKKyAgICBnbG9iYWxfdHlwZSA9ICJzZXJ2aWNld29ya2VyLW1vZHVsZSIKKyAgICBwYXRoX3Jl
cGxhY2UgPSBbKCIuYW55LnNlcnZpY2V3b3JrZXItbW9kdWxlLmh0bWwiLAorICAgICAgICAgICAg
ICAgICAgICAgIi5hbnkuanMiLCAiLmFueS53b3JrZXItbW9kdWxlLmpzIildCisgICAgd3JhcHBl
ciA9ICIiIjwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKyUobWV0YSlzCis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlk
PWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisoYXN5bmMgZnVuY3Rpb24oKSB7CisgIGNvbnN0IHNjb3Bl
ID0gJ2RvZXMvbm90L2V4aXN0JzsKKyAgbGV0IHJlZyA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmdldFJlZ2lzdHJhdGlvbihzY29wZSk7CisgIGlmIChyZWcpIGF3YWl0IHJlZy51bnJl
Z2lzdGVyKCk7CisgIHJlZyA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KAorICAgICIlKHBhdGgpcyUocXVlcnkpcyIsCisgICAgeyBzY29wZSwgdHlwZTogJ21vZHVsZScg
fSwKKyAgKTsKKyAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIocmVnLmluc3RhbGxpbmcpOworfSko
KTsKKzwvc2NyaXB0PgorIiIiCisKKworY2xhc3MgQmFzZVdvcmtlckhhbmRsZXIoV3JhcHBlckhh
bmRsZXIpOgogICAgIGhlYWRlcnMgPSBbKCdDb250ZW50LVR5cGUnLCAndGV4dC9qYXZhc2NyaXB0
JyldCisKKyAgICBkZWYgX21ldGFfcmVwbGFjZW1lbnQoc2VsZiwga2V5LCB2YWx1ZSk6CisgICAg
ICAgIHJldHVybiBOb25lCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9jcmVh
dGVfc2NyaXB0X2ltcG9ydChzZWxmLCBhdHRyaWJ1dGUpOgorICAgICAgICAjIFRha2UgYXR0cmli
dXRlIChhIHN0cmluZyBVUkwgdG8gYSBKUyBzY3JpcHQpIGFuZCByZXR1cm4gSlMgc291cmNlIHRv
IGltcG9ydCB0aGUgc2NyaXB0CisgICAgICAgICMgaW50byB0aGUgd29ya2VyLgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgX3NjcmlwdF9yZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKKyAg
ICAgICAgaWYga2V5ID09ICJzY3JpcHQiOgorICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUu
cmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAnXFwiJykKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9jcmVhdGVfc2NyaXB0X2ltcG9ydChhdHRyaWJ1dGUpCisgICAgICAgIGlmIGtl
eSA9PSAidGl0bGUiOgorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJc
XFxcIikucmVwbGFjZSgnIicsICdcXCInKQorICAgICAgICAgICAgcmV0dXJuICdzZWxmLk1FVEFf
VElUTEUgPSAiJXMiOycgJSB2YWx1ZQorICAgICAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIENs
YXNzaWNXb3JrZXJIYW5kbGVyKEJhc2VXb3JrZXJIYW5kbGVyKToKICAgICBwYXRoX3JlcGxhY2Ug
PSBbKCIuYW55Lndvcmtlci5qcyIsICIuYW55LmpzIildCiAgICAgd3JhcHBlciA9ICIiIiUobWV0
YSlzCiBzZWxmLkdMT0JBTCA9IHsKQEAgLTMxMCwxNyArMzg3LDI1IEBAIGltcG9ydFNjcmlwdHMo
IiUocGF0aClzIik7CiBkb25lKCk7CiAiIiIKIAotICAgIGRlZiBfbWV0YV9yZXBsYWNlbWVudChz
ZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBkZWYgX2NyZWF0ZV9z
Y3JpcHRfaW1wb3J0KHNlbGYsIGF0dHJpYnV0ZSk6CisgICAgICAgIHJldHVybiAnaW1wb3J0U2Ny
aXB0cygiJXMiKScgJSBhdHRyaWJ1dGUKIAotICAgIGRlZiBfc2NyaXB0X3JlcGxhY2VtZW50KHNl
bGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gInNjcmlwdCI6Ci0gICAgICAgICAg
ICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgnIicsICdc
XCInKQotICAgICAgICAgICAgcmV0dXJuICdpbXBvcnRTY3JpcHRzKCIlcyIpJyAlIGF0dHJpYnV0
ZQotICAgICAgICBpZiBrZXkgPT0gInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUu
cmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAnXFwiJykKLSAgICAgICAgICAgIHJl
dHVybiAnc2VsZi5NRVRBX1RJVExFID0gIiVzIjsnICUgdmFsdWUKLSAgICAgICAgcmV0dXJuIE5v
bmUKKworY2xhc3MgTW9kdWxlV29ya2VySGFuZGxlcihCYXNlV29ya2VySGFuZGxlcik6CisgICAg
cGF0aF9yZXBsYWNlID0gWygiLmFueS53b3JrZXItbW9kdWxlLmpzIiwgIi5hbnkuanMiKV0KKyAg
ICB3cmFwcGVyID0gIiIiJShtZXRhKXMKK3NlbGYuR0xPQkFMID0geworICBpc1dpbmRvdzogZnVu
Y3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgaXNXb3JrZXI6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdHJ1ZTsgfSwKK307CitpbXBvcnQgIi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiOworJShz
Y3JpcHQpcworaW1wb3J0ICIlKHBhdGgpcyI7Citkb25lKCk7CisiIiIKKworICAgIGRlZiBfY3Jl
YXRlX3NjcmlwdF9pbXBvcnQoc2VsZiwgYXR0cmlidXRlKToKKyAgICAgICAgcmV0dXJuICdpbXBv
cnQgIiVzIjsnICUgYXR0cmlidXRlCiAKIAogcmV3cml0ZXMgPSBbKCJHRVQiLCAiL3Jlc291cmNl
cy9XZWJJRExQYXJzZXIuanMiLCAiL3Jlc291cmNlcy93ZWJpZGwyL2xpYi93ZWJpZGwyLmpzIild
CkBAIC0zNjgsMTEgKzQ1MywxNSBAQCBjbGFzcyBSb3V0ZXNCdWlsZGVyKG9iamVjdCk6CiAKICAg
ICAgICAgcm91dGVzID0gWwogICAgICAgICAgICAgKCJHRVQiLCAiKi53b3JrZXIuaHRtbCIsIFdv
cmtlcnNIYW5kbGVyKSwKKyAgICAgICAgICAgICgiR0VUIiwgIioud29ya2VyLW1vZHVsZS5odG1s
IiwgV29ya2VyTW9kdWxlc0hhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi53aW5kb3cu
aHRtbCIsIFdpbmRvd0hhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnkuaHRtbCIs
IEFueUh0bWxIYW5kbGVyKSwKICAgICAgICAgICAgICgiR0VUIiwgIiouYW55LnNoYXJlZHdvcmtl
ci5odG1sIiwgU2hhcmVkV29ya2Vyc0hhbmRsZXIpLAorICAgICAgICAgICAgKCJHRVQiLCAiKi5h
bnkuc2hhcmVkd29ya2VyLW1vZHVsZS5odG1sIiwgU2hhcmVkV29ya2VyTW9kdWxlc0hhbmRsZXIp
LAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgU2Vydmlj
ZVdvcmtlcnNIYW5kbGVyKSwKLSAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtlci5qcyIs
IEFueVdvcmtlckhhbmRsZXIpLAorICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnkuc2VydmljZXdv
cmtlci1tb2R1bGUuaHRtbCIsIFNlcnZpY2VXb3JrZXJNb2R1bGVzSGFuZGxlciksCisgICAgICAg
ICAgICAoIkdFVCIsICIqLmFueS53b3JrZXIuanMiLCBDbGFzc2ljV29ya2VySGFuZGxlciksCisg
ICAgICAgICAgICAoIkdFVCIsICIqLmFueS53b3JrZXItbW9kdWxlLmpzIiwgTW9kdWxlV29ya2Vy
SGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqLmFzaXMiLCBoYW5kbGVycy5Bc0lzSGFu
ZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIvLndlbGwta25vd24vb3JpZ2luLXBvbGljeSIs
IGhhbmRsZXJzLlB5dGhvblNjcmlwdEhhbmRsZXIpLAogICAgICAgICAgICAgKCIqIiwgIioucHki
LCBoYW5kbGVycy5QeXRob25TY3JpcHRIYW5kbGVyKSwKQEAgLTQwNywxOCArNDk2LDE5IEBAIGRl
ZiBnZXRfcm91dGVfYnVpbGRlcihhbGlhc2VzLCBjb25maWc9Tm9uZSk6CiAKIAogY2xhc3MgU2Vy
dmVyUHJvYyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY2hlbWU9Tm9uZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG1wX2NvbnRleHQsIHNjaGVtZT1Ob25lKToKICAgICAgICAg
c2VsZi5wcm9jID0gTm9uZQogICAgICAgICBzZWxmLmRhZW1vbiA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5zdG9wID0gRXZlbnQoKQorICAgICAgICBzZWxmLm1wX2NvbnRleHQgPSBtcF9jb250ZXh0Cisg
ICAgICAgIHNlbGYuc3RvcCA9IG1wX2NvbnRleHQuRXZlbnQoKQogICAgICAgICBzZWxmLnNjaGVt
ZSA9IHNjaGVtZQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIGluaXRfZnVuYywgaG9zdCwgcG9ydCwg
cGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICAgICAg
c2VsZi5wcm9jID0gUHJvY2Vzcyh0YXJnZXQ9c2VsZi5jcmVhdGVfZGFlbW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3M9KGluaXRfZnVuYywgaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nJXMgb24gcG9ydCAlcycg
JSAoc2VsZi5zY2hlbWUsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJn
cz1rd2FyZ3MpCisgICAgICAgIHNlbGYucHJvYyA9IHNlbGYubXBfY29udGV4dC5Qcm9jZXNzKHRh
cmdldD1zZWxmLmNyZWF0ZV9kYWVtb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3M9KGluaXRfZnVuYywgaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywg
YmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25maWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lPSclcyBvbiBwb3J0ICVzJyAlIChzZWxmLnNjaGVtZSwgcG9ydCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncz1rd2FyZ3MpCiAgICAg
ICAgIHNlbGYucHJvYy5kYWVtb24gPSBUcnVlCiAgICAgICAgIHNlbGYucHJvYy5zdGFydCgpCiAK
QEAgLTQ3MCw3ICs1NjAsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jKG9iamVjdCk6CiAgICAgICAgIHJl
dHVybiBzZWxmLnByb2MuaXNfYWxpdmUoKQogCiAKLWRlZiBjaGVja19zdWJkb21haW5zKGNvbmZp
Zywgcm91dGVzKToKK2RlZiBjaGVja19zdWJkb21haW5zKGNvbmZpZywgcm91dGVzLCBtcF9jb250
ZXh0KToKICAgICBwYXRocyA9IGNvbmZpZy5wYXRocwogICAgIGJpbmRfYWRkcmVzcyA9IGNvbmZp
Zy5iaW5kX2FkZHJlc3MKIApAQCAtNDc4LDcgKzU2OCw3IEBAIGRlZiBjaGVja19zdWJkb21haW5z
KGNvbmZpZywgcm91dGVzKToKICAgICBwb3J0ID0gZ2V0X3BvcnQoKQogICAgIGxvZ2dlci5kZWJ1
ZygiR29pbmcgdG8gdXNlIHBvcnQgJWQgdG8gY2hlY2sgc3ViZG9tYWlucyIgJSBwb3J0KQogCi0g
ICAgd3JhcHBlciA9IFNlcnZlclByb2MoKQorICAgIHdyYXBwZXIgPSBTZXJ2ZXJQcm9jKG1wX2Nv
bnRleHQpCiAgICAgd3JhcHBlci5zdGFydChzdGFydF9odHRwX3NlcnZlciwgaG9zdCwgcG9ydCwg
cGF0aHMsIHJvdXRlcywKICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcywgY29uZmlnKQog
CkBAIC01MzAsNyArNjIwLDggQEAgZGVmIG1ha2VfaG9zdHNfZmlsZShjb25maWcsIGhvc3QpOgog
ICAgIHJldHVybiAiIi5qb2luKHJ2KQogCiAKLWRlZiBzdGFydF9zZXJ2ZXJzKGhvc3QsIHBvcnRz
LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgorZGVmIHN0
YXJ0X3NlcnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgbXBfY29udGV4dCwgKiprd2FyZ3MpOgogICAgIHNlcnZl
cnMgPSBkZWZhdWx0ZGljdChsaXN0KQogICAgIGZvciBzY2hlbWUsIHBvcnRzIGluIHBvcnRzLml0
ZW1zKCk6CiAgICAgICAgIGFzc2VydCBsZW4ocG9ydHMpID09IHsiaHR0cCI6IDIsICJodHRwcyI6
IDJ9LmdldChzY2hlbWUsIDEpCkBAIC01NTEsNyArNjQyLDcgQEAgZGVmIHN0YXJ0X3NlcnZlcnMo
aG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJn
cyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIndzcyI6IHN0YXJ0X3dzc19zZXJ2ZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgInF1aWMtdHJhbnNwb3J0Ijogc3RhcnRfcXVpY190cmFu
c3BvcnRfc2VydmVyfVtzY2hlbWVdCiAKLSAgICAgICAgICAgIHNlcnZlcl9wcm9jID0gU2VydmVy
UHJvYyhzY2hlbWU9c2NoZW1lKQorICAgICAgICAgICAgc2VydmVyX3Byb2MgPSBTZXJ2ZXJQcm9j
KG1wX2NvbnRleHQsIHNjaGVtZT1zY2hlbWUpCiAgICAgICAgICAgICBzZXJ2ZXJfcHJvYy5zdGFy
dChpbml0X2Z1bmMsIGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywgKiprd2FyZ3MpCiAgICAgICAgICAg
ICBzZXJ2ZXJzW3NjaGVtZV0uYXBwZW5kKChwb3J0LCBzZXJ2ZXJfcHJvYykpCkBAIC02MDksNiAr
NzAwLDcgQEAgZGVmIHN0YXJ0X2h0dHAyX3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVz
LCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3J0PXBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlcl9jbHM9d3B0c2VydmUuSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19y
b290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NfZG9jX3Jvb3Q9
cGF0aHNbIndzX2RvY19yb290Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcm91dGVzPXJvdXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXdyaXRlcz1yZXdyaXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLApAQCAtNjk0LDcgKzc4Niw3IEBAIGRlZiByZWxlYXNl
X21vemxvZ19sb2NrKCk6CiBkZWYgc3RhcnRfd3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCBy
b3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBFbnN1cmUgdGhh
dCB3aGVuIHdlIHN0YXJ0IHRoaXMgaW4gYSBuZXcgcHJvY2VzcyB3ZSBoYXZlIHRoZSBnbG9iYWwg
bG9jawogICAgICMgaW4gdGhlIGxvZ2dpbmcgbW9kdWxlIHVubG9ja2VkCi0gICAgcmVsb2FkX21v
ZHVsZShsb2dnaW5nKQorICAgIGltcG9ydGxpYi5yZWxvYWQobG9nZ2luZykKICAgICByZWxlYXNl
X21vemxvZ19sb2NrKCkKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBXZWJTb2NrZXREYWVtb24o
aG9zdCwKQEAgLTcxMCw3ICs4MDIsNyBAQCBkZWYgc3RhcnRfd3Nfc2VydmVyKGhvc3QsIHBvcnQs
IHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiBkZWYgc3Rh
cnRfd3NzX3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNv
bmZpZywgKiprd2FyZ3MpOgogICAgICMgRW5zdXJlIHRoYXQgd2hlbiB3ZSBzdGFydCB0aGlzIGlu
IGEgbmV3IHByb2Nlc3Mgd2UgaGF2ZSB0aGUgZ2xvYmFsIGxvY2sKICAgICAjIGluIHRoZSBsb2dn
aW5nIG1vZHVsZSB1bmxvY2tlZAotICAgIHJlbG9hZF9tb2R1bGUobG9nZ2luZykKKyAgICBpbXBv
cnRsaWIucmVsb2FkKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2dfbG9jaygpCiAgICAgdHJ5
OgogICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCkBAIC03NjgsNyArODYwLDcg
QEAgY2xhc3MgUXVpY1RyYW5zcG9ydERhZW1vbihvYmplY3QpOgogZGVmIHN0YXJ0X3F1aWNfdHJh
bnNwb3J0X3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNv
bmZpZywgKiprd2FyZ3MpOgogICAgICMgRW5zdXJlIHRoYXQgd2hlbiB3ZSBzdGFydCB0aGlzIGlu
IGEgbmV3IHByb2Nlc3Mgd2UgaGF2ZSB0aGUgZ2xvYmFsIGxvY2sKICAgICAjIGluIHRoZSBsb2dn
aW5nIG1vZHVsZSB1bmxvY2tlZAotICAgIHJlbG9hZF9tb2R1bGUobG9nZ2luZykKKyAgICBpbXBv
cnRsaWIucmVsb2FkKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2dfbG9jaygpCiAgICAgdHJ5
OgogICAgICAgICByZXR1cm4gUXVpY1RyYW5zcG9ydERhZW1vbihob3N0LApAQCAtNzgwLDcgKzg3
Miw3IEBAIGRlZiBzdGFydF9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMs
IHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsCiAgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxv
Zz1GYWxzZSkKIAogCi1kZWYgc3RhcnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToKK2RlZiBz
dGFydChjb25maWcsIHJvdXRlcywgbXBfY29udGV4dCwgKiprd2FyZ3MpOgogICAgIGhvc3QgPSBj
b25maWdbInNlcnZlcl9ob3N0Il0KICAgICBwb3J0cyA9IGNvbmZpZy5wb3J0cwogICAgIHBhdGhz
ID0gY29uZmlnLnBhdGhzCkBAIC03ODgsNyArODgwLDcgQEAgZGVmIHN0YXJ0KGNvbmZpZywgcm91
dGVzLCAqKmt3YXJncyk6CiAKICAgICBsb2dnZXIuZGVidWcoIlVzaW5nIHBvcnRzOiAlciIgJSBw
b3J0cykKIAotICAgIHNlcnZlcnMgPSBzdGFydF9zZXJ2ZXJzKGhvc3QsIHBvcnRzLCBwYXRocywg
cm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpCisgICAgc2VydmVycyA9IHN0
YXJ0X3NlcnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29u
ZmlnLCBtcF9jb250ZXh0LCAqKmt3YXJncykKIAogICAgIHJldHVybiBzZXJ2ZXJzCiAKQEAgLTg0
Niw3ICs5MzgsNyBAQCBjbGFzcyBDb25maWdCdWlsZGVyKGNvbmZpZy5Db25maWdCdWlsZGVyKToK
ICAgICAgICAgICAgICJ3c3MiOiBbImF1dG8iXSwKICAgICAgICAgfSwKICAgICAgICAgImNoZWNr
X3N1YmRvbWFpbnMiOiBUcnVlLAotICAgICAgICAibG9nX2xldmVsIjogImRlYnVnIiwKKyAgICAg
ICAgImxvZ19sZXZlbCI6ICJpbmZvIiwKICAgICAgICAgImJpbmRfYWRkcmVzcyI6IFRydWUsCiAg
ICAgICAgICJzc2wiOiB7CiAgICAgICAgICAgICAidHlwZSI6ICJwcmVnZW5lcmF0ZWQiLApAQCAt
OTI4LDYgKzEwMjAsOSBAQCBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwgY29u
ZmlnX2Nscz1Db25maWdCdWlsZGVyLCAqKmt3YXJncyk6CiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb25maWcgcGF0aCAlcyBkb2VzIG5vdCBleGlzdCIgJSBv
dGhlcl9wYXRoKQogCisgICAgaWYga3dhcmdzLmdldCgidmVyYm9zZSIpOgorICAgICAgICBydi5s
b2dfbGV2ZWwgPSAiZGVidWciCisKICAgICBvdmVycmlkaW5nX3BhdGhfYXJncyA9IFsoImRvY19y
b290IiwgIkRvY3VtZW50IHJvb3QiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIndz
X2RvY19yb290IiwgIldlYlNvY2tldHMgZG9jdW1lbnQgcm9vdCIpXQogICAgIGZvciBrZXksIHRp
dGxlIGluIG92ZXJyaWRpbmdfcGF0aF9hcmdzOgpAQCAtOTYwLDE0ICsxMDU1LDI2IEBAIGRlZiBn
ZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBI
VFRQLzIuMCBzZXJ2ZXIiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcXVpYy10cmFuc3Bv
cnQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJFbmFibGUgUVVJQyBzZXJ2ZXIgZm9yIFdl
YlRyYW5zcG9ydCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1leGl0LWFmdGVyLXN0YXJ0
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRXhpdCBhZnRlciBzdGFydGluZyBzZXJ2ZXJz
IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLCBoZWxwPSJFbmFibGUgdmVyYm9zZSBsb2dnaW5nIikKICAgICBwYXJzZXIuc2V0X2RlZmF1
bHRzKHJlcG9ydD1GYWxzZSkKICAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGlzX3dhdmU9RmFsc2Up
CiAgICAgcmV0dXJuIHBhcnNlcgogCiAKLWRlZiBydW4oY29uZmlnX2Nscz1Db25maWdCdWlsZGVy
LCByb3V0ZV9idWlsZGVyPU5vbmUsICoqa3dhcmdzKToKK2NsYXNzIE1wQ29udGV4dChvYmplY3Qp
OgorICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmV0dXJuIGdldGF0
dHIobXVsdGlwcm9jZXNzaW5nLCBuYW1lKQorCisKK2RlZiBydW4oY29uZmlnX2Nscz1Db25maWdC
dWlsZGVyLCByb3V0ZV9idWlsZGVyPU5vbmUsIG1wX2NvbnRleHQ9Tm9uZSwgKiprd2FyZ3MpOgog
ICAgIHJlY2VpdmVkX3NpZ25hbCA9IHRocmVhZGluZy5FdmVudCgpCiAKKyAgICBpZiBtcF9jb250
ZXh0IGlzIE5vbmU6CisgICAgICAgIGlmIGhhc2F0dHIobXVsdGlwcm9jZXNzaW5nLCAiZ2V0X2Nv
bnRleHQiKToKKyAgICAgICAgICAgIG1wX2NvbnRleHQgPSBtdWx0aXByb2Nlc3NpbmcuZ2V0X2Nv
bnRleHQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXBfY29udGV4dCA9IE1wQ29udGV4
dCgpCisKICAgICB3aXRoIGJ1aWxkX2NvbmZpZyhvcy5wYXRoLmpvaW4ocmVwb19yb290LCAiY29u
ZmlnLmpzb24iKSwKICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2xzPWNvbmZpZ19jbHMs
CiAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpIGFzIGNvbmZpZzoKQEAgLTk5Nyw3ICsx
MTA0LDcgQEAgZGVmIHJ1bihjb25maWdfY2xzPUNvbmZpZ0J1aWxkZXIsIHJvdXRlX2J1aWxkZXI9
Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICByb3V0ZXMgPSByb3V0ZV9idWlsZGVyKGNvbmZpZy5h
bGlhc2VzLCBjb25maWcpLmdldF9yb3V0ZXMoKQogCiAgICAgICAgIGlmIGNvbmZpZ1siY2hlY2tf
c3ViZG9tYWlucyJdOgotICAgICAgICAgICAgY2hlY2tfc3ViZG9tYWlucyhjb25maWcsIHJvdXRl
cykKKyAgICAgICAgICAgIGNoZWNrX3N1YmRvbWFpbnMoY29uZmlnLCByb3V0ZXMsIG1wX2NvbnRl
eHQpCiAKICAgICAgICAgc3Rhc2hfYWRkcmVzcyA9IE5vbmUKICAgICAgICAgaWYgYmluZF9hZGRy
ZXNzOgpAQCAtMTAwNSw3ICsxMTEyLDcgQEAgZGVmIHJ1bihjb25maWdfY2xzPUNvbmZpZ0J1aWxk
ZXIsIHJvdXRlX2J1aWxkZXI9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgbG9nZ2VyLmRl
YnVnKCJHb2luZyB0byB1c2UgcG9ydCAlZCBmb3Igc3Rhc2giICUgc3Rhc2hfYWRkcmVzc1sxXSkK
IAogICAgICAgICB3aXRoIHN0YXNoLlN0YXNoU2VydmVyKHN0YXNoX2FkZHJlc3MsIGF1dGhrZXk9
c3RyKHV1aWQudXVpZDQoKSkpOgotICAgICAgICAgICAgc2VydmVycyA9IHN0YXJ0KGNvbmZpZywg
cm91dGVzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlcnZlcnMgPSBzdGFydChjb25maWcsIHJv
dXRlcywgbXBfY29udGV4dCwgKiprd2FyZ3MpCiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNp
Z25hbC5TSUdURVJNLCBoYW5kbGVfc2lnbmFsKQogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChz
aWduYWwuU0lHSU5ULCBoYW5kbGVfc2lnbmFsKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3RfZnVuY3Rpb25h
bC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvdGVzdF9mdW5jdGlvbmFsLnB5CmluZGV4IDVhOTE4YzJlZTQ3My4uODk0NDc5ZDExMWM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NlcnZlL3Rlc3RfZnVuY3Rpb25hbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3RfZnVuY3Rpb25hbC5weQpA
QCAtOSw3ICs5LDYgQEAgdHJ5OgogICAgIGltcG9ydCBRdWV1ZSBhcyBxdWV1ZSAgIyBub3FhOiBO
ODEzCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IHF1ZXVlCi1pbXBvcnQgc3lzCiBp
bXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJlYWRpbmcKIApAQCAtNDYsOCArNDUsNiBAQCBkZWYg
dGVtcGZpbGVfbmFtZSgpOgogICAgIG9zLnJlbW92ZShuYW1lKQogCiAKLUBweXRlc3QubWFyay5z
a2lwaWYoc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCkgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnZGFy
d2luJywKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtdWx0aXByb2Nlc3NpbmcgdGVzdCBo
YW5ncyBpbiBQeXRob24gMy44IG9uIG1hY09TICgjMjQ4ODApIikKIGRlZiB0ZXN0X3N1YnByb2Nl
c3NfZXhpdChzZXJ2ZXJfc3VicHJvY2Vzc2VzLCB0ZW1wZmlsZV9uYW1lKToKICAgICB0aW1lb3V0
ID0gMzAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9zZXJ2ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YjM1NmU5ZTZjYS4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL19f
aW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zZXJ2ZS9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9zZXJ2ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdGVzdF9mdW5jdGlvbmFsLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90
ZXN0X3NlcnZlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9zZXJ2ZS93YXZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2Rv
Y3VtZW50YXRpb24vaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODI3
ZTY2OTViNTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdAorKysgL2Rl
di9udWxsCkBAIC0xLDc4NSArMCwwIEBACi1TaXg6IFB5dGhvbiAyIGFuZCAzIENvbXBhdGliaWxp
dHkgTGlicmFyeQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
Li4gbW9kdWxlOjogc2l4Ci0gICA6c3lub3BzaXM6IFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxp
dHkKLQotLi4gbW9kdWxlYXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhv
bi5vcmc+Ci0uLiBzZWN0aW9uYXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5
dGhvbi5vcmc+Ci0KLQotU2l4IHByb3ZpZGVzIHNpbXBsZSB1dGlsaXRpZXMgZm9yIHdyYXBwaW5n
IG92ZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiBQeXRob24gMiBhbmQKLVB5dGhvbiAzLiAgSXQgaXMg
aW50ZW5kZWQgdG8gc3VwcG9ydCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIg
YW5kIDMKLXdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5
dGhvbiBmaWxlLCBzbyBpdCBpcyBwYWlubGVzcwotdG8gY29weSBpbnRvIGEgcHJvamVjdC4KLQot
U2l4IGNhbiBiZSBkb3dubG9hZGVkIG9uIGBQeVBpIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvc2l4Lz5gXy4gIEl0cyBidWcKLXRyYWNrZXIgYW5kIGNvZGUgaG9zdGluZyBpcyBvbiBgQml0
QnVja2V0IDxodHRwOi8vYml0YnVja2V0Lm9yZy9ndXR3b3J0aC9zaXg+YF8uCi0KLVRoZSBuYW1l
LCAic2l4IiwgY29tZXMgZnJvbSB0aGUgZmFjdCB0aGF0IDIqMyBlcXVhbHMgNi4gIFdoeSBub3Qg
YWRkaXRpb24/Ci1NdWx0aXBsaWNhdGlvbiBpcyBtb3JlIHBvd2VyZnVsLCBhbmQsIGFueXdheSwg
ImZpdmUiIGhhcyBhbHJlYWR5IGJlZW4gc25hdGNoZWQKLWF3YXkgYnkgdGhlIFpvcGUgRml2ZSBw
cm9qZWN0LgotCi0KLUluZGljZXMgYW5kIHRhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSog
OnJlZjpgZ2VuaW5kZXhgCi0qIDpyZWY6YHNlYXJjaGAKLQotCi1QYWNrYWdlIGNvbnRlbnRzCi0t
LS0tLS0tLS0tLS0tLS0tCi0KLS4uIGRhdGE6OiBQWTIKLQotICAgQSBib29sZWFuIGluZGljYXRp
bmcgaWYgdGhlIGNvZGUgaXMgcnVubmluZyBvbiBQeXRob24gMi4KLQotLi4gZGF0YTo6IFBZMwot
Ci0gICBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgY29kZSBpcyBydW5uaW5nIG9uIFB5dGhv
biAzLgotCi0KLUNvbnN0YW50cwotPj4+Pj4+Pj4+Ci0KLVNpeCBwcm92aWRlcyBjb25zdGFudHMg
dGhhdCBtYXkgZGlmZmVyIGJldHdlZW4gUHl0aG9uIHZlcnNpb25zLiAgT25lcyBlbmRpbmcKLWBg
X3R5cGVzYGAgYXJlIG1vc3RseSB1c2VmdWwgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBgYGlz
aW5zdGFuY2VgYCBvcgotYGBpc3N1YmNsYXNzYGAuCi0KLQotLi4gZGF0YTo6IGNsYXNzX3R5cGVz
Ci0KLSAgIFBvc3NpYmxlIGNsYXNzIHR5cGVzLiAgSW4gUHl0aG9uIDIsIHRoaXMgZW5jb21wYXNz
ZXMgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUKLSAgIGNsYXNzZXMuICBJbiBQeXRob24gMywgdGhp
cyBpcyBqdXN0IG5ldy1zdHlsZXMuCi0KLQotLi4gZGF0YTo6IGludGVnZXJfdHlwZXMKLQotICAg
UG9zc2libGUgaW50ZWdlciB0eXBlcy4gIEluIFB5dGhvbiAyLCB0aGlzIGlzIDpmdW5jOmBweTI6
bG9uZ2AgYW5kCi0gICA6ZnVuYzpgcHkyOmludGAsIGFuZCBpbiBQeXRob24gMywganVzdCA6ZnVu
YzpgcHkzOmludGAuCi0KLQotLi4gZGF0YTo6IHN0cmluZ190eXBlcwotCi0gICBQb3NzaWJsZSB0
eXBlcyBmb3IgdGV4dCBkYXRhLiAgVGhpcyBpcyA6ZnVuYzpgcHkyOmJhc2VzdHJpbmdgIGluIFB5
dGhvbiAyIGFuZAotICAgOmZ1bmM6YHB5MzpzdHJgIGluIFB5dGhvbiAzLgotCi0KLS4uIGRhdGE6
OiB0ZXh0X3R5cGUKLQotICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIChVbmljb2RlKSB0ZXh0dWFs
IGRhdGEuICBUaGlzIGlzIDpmdW5jOmBweTI6dW5pY29kZWAgaW4KLSAgIFB5dGhvbiAyIGFuZCA6
ZnVuYzpgcHkzOnN0cmAgaW4gUHl0aG9uIDMuCi0KLQotLi4gZGF0YTo6IGJpbmFyeV90eXBlCi0K
LSAgIFR5cGUgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YS4gIFRoaXMgaXMgOmZ1bmM6YHB5
MjpzdHJgIGluIFB5dGhvbiAyIGFuZAotICAgOmZ1bmM6YHB5MzpieXRlc2AgaW4gUHl0aG9uIDMu
Ci0KLQotLi4gZGF0YTo6IE1BWFNJWkUKLQotICAgVGhlIG1heGltdW0gIHNpemUgb2YgYSAgY29u
dGFpbmVyIGxpa2UgOmZ1bmM6YHB5MzpsaXN0YCAgb3IgOmZ1bmM6YHB5MzpkaWN0YC4KLSAgIFRo
aXMgIGlzICBlcXVpdmFsZW50ICB0byAgOmRhdGE6YHB5MzpzeXMubWF4c2l6ZWAgaW4gIFB5dGhv
biAgMi42ICBhbmQgIGxhdGVyCi0gICAoaW5jbHVkaW5nIDMueCkuICAgTm90ZSwgdGhpcyBpcyB0
ZW1wdGluZ2x5ICBzaW1pbGFyIHRvLCBidXQgbm90ICB0aGUgc2FtZSBhcwotICAgOmRhdGE6YHB5
MjpzeXMubWF4aW50YCAgaW4gIFB5dGhvbiAgMi4gICBUaGVyZSBpcyAgbm8gIGRpcmVjdCAgZXF1
aXZhbGVudCAgdG8KLSAgIDpkYXRhOmBweTI6c3lzLm1heGludGAgaW4gIFB5dGhvbiAzICBiZWNh
dXNlIGl0cyBpbnRlZ2VyICB0eXBlIGhhcyAgbm8gbGltaXRzCi0gICBhc2lkZSBmcm9tIG1lbW9y
eS4KLQotCi1IZXJlJ3MgZXhhbXBsZSB1c2FnZSBvZiB0aGUgbW9kdWxlOjoKLQotICAgaW1wb3J0
IHNpeAotCi0gICBkZWYgZGlzcGF0Y2hfdHlwZXModmFsdWUpOgotICAgICAgIGlmIGlzaW5zdGFu
Y2UodmFsdWUsIHNpeC5pbnRlZ2VyX3R5cGVzKToKLSAgICAgICAgICAgaGFuZGxlX2ludGVnZXIo
dmFsdWUpCi0gICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzaXguY2xhc3NfdHlwZXMpOgot
ICAgICAgICAgICBoYW5kbGVfY2xhc3ModmFsdWUpCi0gICAgICAgZWxpZiBpc2luc3RhbmNlKHZh
bHVlLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgaGFuZGxlX3N0cmluZyh2YWx1ZSkK
LQotCi1PYmplY3QgbW9kZWwgY29tcGF0aWJpbGl0eQotPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4KLQotUHl0aG9uIDMgcmVuYW1lZCB0aGUgYXR0cmlidXRlcyBvZiBzZXZlcmFsIGludGVycHJl
dGVyIGRhdGEgc3RydWN0dXJlcy4gIFRoZQotZm9sbG93aW5nIGFjY2Vzc29ycyBhcmUgYXZhaWxh
YmxlLiAgTm90ZSB0aGF0IHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zcGVjdAotZnVuY3Rpb25z
IGFuZCBtZXRob2RzIGlzIHRoZSBzdGRsaWIgOm1vZDpgcHkzOmluc3BlY3RgIG1vZHVsZS4KLQot
Ci0uLiBmdW5jdGlvbjo6IGdldF91bmJvdW5kX2Z1bmN0aW9uKG1ldGgpCi0KLSAgIEdldCB0aGUg
ZnVuY3Rpb24gb3V0IG9mIHVuYm91bmQgbWV0aG9kICptZXRoKi4gIEluIFB5dGhvbiAzLCB1bmJv
dW5kIG1ldGhvZHMKLSAgIGRvbid0IGV4aXN0LCBzbyB0aGlzIGZ1bmN0aW9uIGp1c3QgcmV0dXJu
cyAqbWV0aCogdW5jaGFuZ2VkLiAgRXhhbXBsZQotICAgdXNhZ2U6OgotCi0gICAgICBmcm9tIHNp
eCBpbXBvcnQgZ2V0X3VuYm91bmRfZnVuY3Rpb24KLQotICAgICAgY2xhc3MgWChvYmplY3QpOgot
ICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6Ci0gICAgICAgICAgICAgIHBhc3MKLSAgICAgIG1l
dGhvZF9mdW5jdGlvbiA9IGdldF91bmJvdW5kX2Z1bmN0aW9uKFgubWV0aG9kKQotCi0KLS4uIGZ1
bmN0aW9uOjogZ2V0X21ldGhvZF9mdW5jdGlvbihtZXRoKQotCi0gICBHZXQgdGhlIGZ1bmN0aW9u
IG91dCBvZiBtZXRob2Qgb2JqZWN0ICptZXRoKi4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF9tZXRo
b2Rfc2VsZihtZXRoKQotCi0gICBHZXQgdGhlIGBgc2VsZmBgIG9mIGJvdW5kIG1ldGhvZCAqbWV0
aCouCi0KLQotLi4gZnVuY3Rpb246OiBnZXRfZnVuY3Rpb25fY2xvc3VyZShmdW5jKQotCi0gICBH
ZXQgdGhlIGNsb3N1cmUgKGxpc3Qgb2YgY2VsbHMpIGFzc29jaWF0ZWQgd2l0aCAqZnVuYyouICBU
aGlzIGlzIGVxdWl2YWxlbnQKLSAgIHRvIGBgZnVuYy5fX2Nsb3N1cmVfX2BgIG9uIFB5dGhvbiAy
LjYrIGFuZCBgYGZ1bmMuZnVuY19jbG9zdXJlYGAgb24gUHl0aG9uCi0gICAyLjUuCi0KLQotLi4g
ZnVuY3Rpb246OiBnZXRfZnVuY3Rpb25fY29kZShmdW5jKQotCi0gICBHZXQgdGhlIGNvZGUgb2Jq
ZWN0IGFzc29jaWF0ZWQgd2l0aCAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGBg
ZnVuYy5fX2NvZGVfX2BgIG9uIFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19jb2RlYGAgb24g
UHl0aG9uIDIuNS4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9kZWZhdWx0cyhmdW5j
KQotCi0gICBHZXQgdGhlIGRlZmF1bHRzIHR1cGxlIGFzc29jaWF0ZWQgd2l0aCAqZnVuYyouICBU
aGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGBgZnVuYy5fX2RlZmF1bHRzX19gYCBvbiBQeXRob24g
Mi42KyBhbmQgYGBmdW5jLmZ1bmNfZGVmYXVsdHNgYCBvbiBQeXRob24KLSAgIDIuNS4KLQotCi0u
LiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9nbG9iYWxzKGZ1bmMpCi0KLSAgIEdldCB0aGUgZ2xv
YmFscyBvZiAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBmdW5jLl9fZ2xvYmFsc19f
YGAgb24KLSAgIFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19nbG9iYWxzYGAgb24gUHl0aG9u
IDIuNS4KLQotCi0uLiBmdW5jdGlvbjo6IG5leHQoaXQpCi0gICAgICAgICAgICAgIGFkdmFuY2Vf
aXRlcmF0b3IoaXQpCi0KLSAgIEdldCB0aGUgbmV4dCBpdGVtIG9mIGl0ZXJhdG9yICppdCouICA6
ZXhjOmBweTM6U3RvcEl0ZXJhdGlvbmAgaXMgcmFpc2VkIGlmCi0gICB0aGUgaXRlcmF0b3IgaXMg
ZXhoYXVzdGVkLiAgVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBjYWxsaW5nIGBgaXQubmV4dCgp
YGAKLSAgIGluIFB5dGhvbiAyIGFuZCBgYG5leHQoaXQpYGAgaW4gUHl0aG9uIDMuCi0KLQotLi4g
ZnVuY3Rpb246OiBjYWxsYWJsZShvYmopCi0KLSAgIENoZWNrIGlmICpvYmoqIGNhbiBiZSBjYWxs
ZWQuICBOb3RlIGBgY2FsbGFibGVgYCBoYXMgcmV0dXJuZWQgaW4gUHl0aG9uIDMuMiwKLSAgIHNv
IHVzaW5nIHNpeCdzIHZlcnNpb24gaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBzdXBwb3J0aW5nIFB5
dGhvbiAzLjAgb3IgMy4xLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcmtleXMoZGljdGlvbmFyeSwg
Kiprd2FyZ3MpCi0KLSAgIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciAqZGljdGlvbmFyeSpcJ3Mg
a2V5cy4gVGhpcyByZXBsYWNlcwotICAgYGBkaWN0aW9uYXJ5Lml0ZXJrZXlzKClgYCBvbiBQeXRo
b24gMiBhbmQgYGBkaWN0aW9uYXJ5LmtleXMoKWBgIG9uCi0gICBQeXRob24gMy4gICprd2FyZ3Mq
IGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBtZXRob2QuCi0KLQotLi4gZnVu
Y3Rpb246OiBpdGVydmFsdWVzKGRpY3Rpb25hcnksICoqa3dhcmdzKQotCi0gICBSZXR1cm5zIGFu
IGl0ZXJhdG9yIG92ZXIgKmRpY3Rpb25hcnkqXCdzIHZhbHVlcy4gVGhpcyByZXBsYWNlcwotICAg
YGBkaWN0aW9uYXJ5Lml0ZXJ2YWx1ZXMoKWBgIG9uIFB5dGhvbiAyIGFuZCBgYGRpY3Rpb25hcnku
dmFsdWVzKClgYCBvbgotICAgUHl0aG9uIDMuICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRocm91Z2gg
dG8gdGhlIHVuZGVybHlpbmcgbWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcml0ZW1zKGRp
Y3Rpb25hcnksICoqa3dhcmdzKQotCi0gICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgKmRpY3Rp
b25hcnkqXCdzIGl0ZW1zLiBUaGlzIHJlcGxhY2VzCi0gICBgYGRpY3Rpb25hcnkuaXRlcml0ZW1z
KClgYCBvbiBQeXRob24gMiBhbmQgYGBkaWN0aW9uYXJ5Lml0ZW1zKClgYCBvbgotICAgUHl0aG9u
IDMuICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgbWV0aG9k
LgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcmxpc3RzKGRpY3Rpb25hcnksICoqa3dhcmdzKQotCi0g
ICBDYWxscyBgYGRpY3Rpb25hcnkuaXRlcmxpc3RzKClgYCBvbiBQeXRob24gMiBhbmQgYGBkaWN0
aW9uYXJ5Lmxpc3RzKClgYCBvbgotICAgUHl0aG9uIDMuICBObyBidWlsdGluIFB5dGhvbiBtYXBw
aW5nIHR5cGUgaGFzIHN1Y2ggYSBtZXRob2Q7IHRoaXMgbWV0aG9kIGlzCi0gICBpbnRlbmRlZCBm
b3IgdXNlIHdpdGggbXVsdGktdmFsdWVkIGRpY3Rpb25hcmllcyBsaWtlIGBXZXJremV1ZydzCi0g
ICA8aHR0cDovL3dlcmt6ZXVnLnBvY29vLm9yZy9kb2NzL2RhdGFzdHJ1Y3R1cmVzLyN3ZXJremV1
Zy5kYXRhc3RydWN0dXJlcy5NdWx0aURpY3Q+YF8uCi0gICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRo
cm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgbWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjogdmlld2tl
eXMoZGljdGlvbmFyeSkKLQotICAgUmV0dXJuIGEgdmlldyBvdmVyICpkaWN0aW9uYXJ5KlwncyBr
ZXlzLiBUaGlzIHJlcGxhY2VzCi0gICA6bWV0aDpgcHkyOmRpY3Qudmlld2tleXNgIG9uIFB5dGhv
biAyLjcgYW5kIDptZXRoOmBweTM6ZGljdC5rZXlzYCBvbgotICAgUHl0aG9uIDMuCi0KLQotLi4g
ZnVuY3Rpb246OiB2aWV3dmFsdWVzKGRpY3Rpb25hcnkpCi0KLSAgIFJldHVybiBhIHZpZXcgb3Zl
ciAqZGljdGlvbmFyeSpcJ3MgdmFsdWVzLiBUaGlzIHJlcGxhY2VzCi0gICA6bWV0aDpgcHkyOmRp
Y3Qudmlld3ZhbHVlc2Agb24gUHl0aG9uIDIuNyBhbmQgOm1ldGg6YHB5MzpkaWN0LnZhbHVlc2Ag
b24KLSAgIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogdmlld2l0ZW1zKGRpY3Rpb25hcnkp
Ci0KLSAgIFJldHVybiBhIHZpZXcgb3ZlciAqZGljdGlvbmFyeSpcJ3MgaXRlbXMuIFRoaXMgcmVw
bGFjZXMKLSAgIDptZXRoOmBweTI6ZGljdC52aWV3aXRlbXNgIG9uIFB5dGhvbiAyLjcgYW5kIDpt
ZXRoOmBweTM6ZGljdC5pdGVtc2Agb24KLSAgIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjog
Y3JlYXRlX2JvdW5kX21ldGhvZChmdW5jLCBvYmopCi0KLSAgIFJldHVybiBhIG1ldGhvZCBvYmpl
Y3Qgd3JhcHBpbmcgKmZ1bmMqIGFuZCBib3VuZCB0byAqb2JqKi4gIE9uIGJvdGggUHl0aG9uIDIK
LSAgIGFuZCAzLCB0aGlzIHdpbGwgcmV0dXJuIGEgOmZ1bmM6YHB5Mzp0eXBlcy5NZXRob2RUeXBl
YCBvYmplY3QuICBUaGUgcmVhc29uCi0gICB0aGlzIHdyYXBwZXIgZXhpc3RzIGlzIHRoYXQgb24g
UHl0aG9uIDIsIHRoZSBgYE1ldGhvZFR5cGVgYCBjb25zdHJ1Y3RvcgotICAgcmVxdWlyZXMgdGhl
ICpvYmoqJ3MgY2xhc3MgdG8gYmUgcGFzc2VkLgotCi0KLS4uIGNsYXNzOjogSXRlcmF0b3IKLQot
ICAgQSBjbGFzcyBmb3IgbWFraW5nIHBvcnRhYmxlIGl0ZXJhdG9ycy4gVGhlIGludGVudGlvbiBp
cyB0aGF0IGl0IGJlIHN1YmNsYXNzZWQKLSAgIGFuZCBzdWJjbGFzc2VzIHByb3ZpZGUgYSBgYF9f
bmV4dF9fYGAgbWV0aG9kLiBJbiBQeXRob24gMiwgOmNsYXNzOmBJdGVyYXRvcmAKLSAgIGhhcyBv
bmUgbWV0aG9kOiBgYG5leHRgYC4gSXQgc2ltcGx5IGRlbGVnYXRlcyB0byBgYF9fbmV4dF9fYGAu
IEFuIGFsdGVybmF0ZQotICAgd2F5IHRvIGRvIHRoaXMgd291bGQgYmUgdG8gc2ltcGx5IGFsaWFz
IGBgbmV4dGBgIHRvIGBgX19uZXh0X19gYC4gSG93ZXZlciwKLSAgIHRoaXMgaW50ZXJhY3RzIGJh
ZGx5IHdpdGggc3ViY2xhc3NlcyB0aGF0IG92ZXJyaWRlCi0gICBgYF9fbmV4dF9fYGAuIDpjbGFz
czpgSXRlcmF0b3JgIGlzIGVtcHR5IG9uIFB5dGhvbiAzLiAoSW4gZmFjdCwgaXQgaXMganVzdAot
ICAgYWxpYXNlZCB0byA6Y2xhc3M6YHB5MzpvYmplY3RgLikKLQotCi0uLiBmdW5jdGlvbjo6IHdy
YXBzKHdyYXBwZWQsIGFzc2lnbmVkPWZ1bmN0b29scy5XUkFQUEVSX0FTU0lHTk1FTlRTLCB1cGRh
dGVkPWZ1bmN0b29scy5XUkFQUEVSX1VQREFURVMpCi0KLSAgIFRoaXMgaXMgZXhhY3RseSB0aGUg
OmZ1bmM6YHB5MzpmdW5jdG9vbHMud3JhcHNgIGRlY29yYXRvciwgYnV0IGl0IHNldHMgdGhlCi0g
ICBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlIG9uIHdoYXQgaXQgZGVjb3JhdGVzIGFzIDpmdW5j
OmBweTM6ZnVuY3Rvb2xzLndyYXBzYAotICAgZG9lcyBvbiBQeXRob24gdmVyc2lvbnMgYWZ0ZXIg
My4yLgotCi0KLVN5bnRheCBjb21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PgotCi1U
aGVzZSBmdW5jdGlvbnMgc21vb3RoIG92ZXIgb3BlcmF0aW9ucyB3aGljaCBoYXZlIGRpZmZlcmVu
dCBzeW50YXhlcyBiZXR3ZWVuCi1QeXRob24gMiBhbmQgMy4KLQotCi0uLiBmdW5jdGlvbjo6IGV4
ZWNfKGNvZGUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCi0KLSAgIEV4ZWN1dGUgKmNvZGUq
IGluIHRoZSBzY29wZSBvZiAqZ2xvYmFscyogYW5kICpsb2NhbHMqLiAgKmNvZGUqIGNhbiBiZSBh
Ci0gICBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdC4gIElmICpnbG9iYWxzKiBvciAqbG9jYWxzKiBh
cmUgbm90IGdpdmVuLCB0aGV5IHdpbGwKLSAgIGRlZmF1bHQgdG8gdGhlIHNjb3BlIG9mIHRoZSBj
YWxsZXIuICBJZiBqdXN0ICpnbG9iYWxzKiBpcyBnaXZlbiwgaXQgd2lsbCBhbHNvCi0gICBiZSB1
c2VkIGFzICpsb2NhbHMqLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgUHl0aG9uIDMncyA6ZnVu
YzpgcHkzOmV4ZWNgIGRvZXNuJ3QgdGFrZSBrZXl3b3JkIGFyZ3VtZW50cywgc28gY2FsbGluZwot
ICAgICAgOmZ1bmM6YGV4ZWNgIHdpdGggdGhlbSBzaG91bGQgYmUgYXZvaWRlZC4KLQotCi0uLiBm
dW5jdGlvbjo6IHByaW50XygqYXJncywgKiwgZmlsZT1zeXMuc3Rkb3V0LCBlbmQ9IlxcbiIsIHNl
cD0iICIpCi0KLSAgIFByaW50ICphcmdzKiBpbnRvICpmaWxlKi4gIEVhY2ggYXJndW1lbnQgd2ls
bCBiZSBzZXBhcmF0ZWQgd2l0aCAqc2VwKiBhbmQKLSAgICplbmQqIHdpbGwgYmUgd3JpdHRlbiB0
byB0aGUgZmlsZSBhZnRlciB0aGUgbGFzdCBhcmd1bWVudCBpcyBwcmludGVkLgotCi0gICAuLiBu
b3RlOjoKLQotICAgICAgSW4gUHl0aG9uIDIsIHRoaXMgZnVuY3Rpb24gaW1pdGF0ZXMgUHl0aG9u
IDMncyA6ZnVuYzpgcHkzOnByaW50YCBieSBub3QKLSAgICAgIGhhdmluZyBzb2Z0c3BhY2Ugc3Vw
cG9ydC4gIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdGhhdCBpcywgeW91J3JlIHByb2JhYmx5Ci0g
ICAgICBvay4gOikKLQotCi0uLiBmdW5jdGlvbjo6IHJhaXNlX2Zyb20oZXhjX3ZhbHVlLCBleGNf
dmFsdWVfZnJvbSkKLQotICAgUmFpc2UgYW4gZXhjZXB0aW9uIGZyb20gYSBjb250ZXh0LiAgT24g
UHl0aG9uIDMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bwotICAgYGByYWlzZSBleGNfdmFsdWUgZnJv
bSBleGNfdmFsdWVfZnJvbWBgLiAgT24gUHl0aG9uIDIsIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQK
LSAgIGV4Y2VwdGlvbiBjaGFpbmluZywgaXQgaXMgZXF1aXZhbGVudCB0byBgYHJhaXNlIGV4Y192
YWx1ZWBgLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVyYWlzZShleGNfdHlwZSwgZXhjX3ZhbHVlLCBl
eGNfdHJhY2ViYWNrPU5vbmUpCi0KLSAgIFJlcmFpc2UgYW4gZXhjZXB0aW9uLCBwb3NzaWJseSB3
aXRoIGEgZGlmZmVyZW50IHRyYWNlYmFjay4gIEluIHRoZSBzaW1wbGUKLSAgIGNhc2UsIGBgcmVy
YWlzZSgqc3lzLmV4Y19pbmZvKCkpYGAgd2l0aCBhbiBhY3RpdmUgZXhjZXB0aW9uIChpbiBhbiBl
eGNlcHQKLSAgIGJsb2NrKSByZXJhaXNlcyB0aGUgY3VycmVudCBleGNlcHRpb24gd2l0aCB0aGUg
bGFzdCB0cmFjZWJhY2suICBBIGRpZmZlcmVudAotICAgdHJhY2ViYWNrIGNhbiBiZSBzcGVjaWZp
ZWQgd2l0aCB0aGUgKmV4Y190cmFjZWJhY2sqIHBhcmFtZXRlci4gIE5vdGUgdGhhdAotICAgc2lu
Y2UgdGhlIGV4Y2VwdGlvbiByZXJhaXNpbmcgaXMgZG9uZSB3aXRoaW4gdGhlIDpmdW5jOmByZXJh
aXNlYCBmdW5jdGlvbiwKLSAgIFB5dGhvbiB3aWxsIGF0dGFjaCB0aGUgY2FsbCBmcmFtZSBvZiA6
ZnVuYzpgcmVyYWlzZWAgdG8gd2hhdGV2ZXIgdHJhY2ViYWNrIGlzCi0gICByYWlzZWQuCi0KLQot
Li4gZnVuY3Rpb246OiB3aXRoX21ldGFjbGFzcyhtZXRhY2xhc3MsICpiYXNlcykKLQotICAgQ3Jl
YXRlIGEgbmV3IGNsYXNzIHdpdGggYmFzZSBjbGFzc2VzICpiYXNlcyogYW5kIG1ldGFjbGFzcyAq
bWV0YWNsYXNzKi4gIFRoaXMKLSAgIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgaW4gY2xhc3MgZGVj
bGFyYXRpb25zIGxpa2UgdGhpczogOjoKLQotICAgICAgZnJvbSBzaXggaW1wb3J0IHdpdGhfbWV0
YWNsYXNzCi0KLSAgICAgIGNsYXNzIE1ldGEodHlwZSk6Ci0gICAgICAgICAgcGFzcwotCi0gICAg
ICBjbGFzcyBCYXNlKG9iamVjdCk6Ci0gICAgICAgICAgcGFzcwotCi0gICAgICBjbGFzcyBNeUNs
YXNzKHdpdGhfbWV0YWNsYXNzKE1ldGEsIEJhc2UpKToKLSAgICAgICAgICBwYXNzCi0KLSAgIEFu
b3RoZXIgd2F5IHRvIHNldCBhIG1ldGFjbGFzcyBvbiBhIGNsYXNzIGlzIHdpdGggdGhlIDpmdW5j
OmBhZGRfbWV0YWNsYXNzYAotICAgZGVjb3JhdG9yLgotCi0KLS4uIGZ1bmN0aW9uOjogYWRkX21l
dGFjbGFzcyhtZXRhY2xhc3MpCi0KLSAgIENsYXNzIGRlY29yYXRvciB0aGF0IHJlcGxhY2VzIGEg
bm9ybWFsbHktY29uc3RydWN0ZWQgY2xhc3Mgd2l0aCBhCi0gICBtZXRhY2xhc3MtY29uc3RydWN0
ZWQgb25lLiAgRXhhbXBsZSB1c2FnZTogOjoKLQotICAgICAgIEBhZGRfbWV0YWNsYXNzKE1ldGEp
Ci0gICAgICAgY2xhc3MgTXlDbGFzcyhvYmplY3QpOgotICAgICAgICAgICBwYXNzCi0KLSAgIFRo
YXQgY29kZSBwcm9kdWNlcyBhIGNsYXNzIGVxdWl2YWxlbnQgdG8gOjoKLQotICAgICAgIGNsYXNz
IE15Q2xhc3Mob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6Ci0gICAgICAgICAgIHBhc3MKLQotICAg
b24gUHl0aG9uIDMgb3IgOjoKLQotICAgICAgIGNsYXNzIE15Q2xhc3Mob2JqZWN0KToKLSAgICAg
ICAgICAgX19tZXRhY2xhc3NfXyA9IE15TWV0YQotCi0gICBvbiBQeXRob24gMi4KLQotICAgTm90
ZSB0aGF0IGNsYXNzIGRlY29yYXRvcnMgcmVxdWlyZSBQeXRob24gMi42LiBIb3dldmVyLCB0aGUg
ZWZmZWN0IG9mIHRoZQotICAgZGVjb3JhdG9yIGNhbiBiZSBlbXVsYXRlZCBvbiBQeXRob24gMi41
IGxpa2Ugc286OgotCi0gICAgICAgY2xhc3MgTXlDbGFzcyhvYmplY3QpOgotICAgICAgICAgICBw
YXNzCi0gICAgICAgTXlDbGFzcyA9IGFkZF9tZXRhY2xhc3MoTWV0YSkoTXlDbGFzcykKLQotCi1C
aW5hcnkgYW5kIHRleHQgZGF0YQotPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KLQotUHl0aG9uIDMgZW5m
b3JjZXMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gYnl0ZSBzdHJpbmdzIGFuZCB0ZXh0IHN0cmlu
Z3MgZmFyIG1vcmUKLXJpZ29yaW91c2x5IHRoYW4gUHl0aG9uIDIgZG9lczsgYmluYXJ5IGRhdGEg
Y2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29lcmNlZCB0bwotb3IgZnJvbSB0ZXh0IGRhdGEuICBz
aXggcHJvdmlkZXMgc2V2ZXJhbCBmdW5jdGlvbnMgdG8gYXNzaXN0IGluIGNsYXNzaWZ5aW5nCi1z
dHJpbmcgZGF0YSBpbiBhbGwgUHl0aG9uIHZlcnNpb25zLgotCi0KLS4uIGZ1bmN0aW9uOjogYihk
YXRhKQotCi0gICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBhbHdheXMg
YmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5jOmBiYCBy
ZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCi0g
ICB3aXRoIHRoZSBsYXRpbi0xIGVuY29kaW5nIHRvIGJ5dGVzLgotCi0KLSAgIC4uIG5vdGU6Ogot
Ci0gICAgICBTaW5jZSBhbGwgUHl0aG9uIHZlcnNpb25zIDIuNiBhbmQgYWZ0ZXIgc3VwcG9ydCB0
aGUgYGBiYGAgcHJlZml4LAotICAgICAgOmZ1bmM6YGJgLCBjb2RlIHdpdGhvdXQgMi41IHN1cHBv
cnQgZG9lc24ndCBuZWVkIDpmdW5jOmBiYC4KLQotCi0uLiBmdW5jdGlvbjo6IHUodGV4dCkKLQot
ICAgQSAiZmFrZSIgdW5pY29kZSBsaXRlcmFsLiAgKnRleHQqIHNob3VsZCBhbHdheXMgYmUgYSBu
b3JtYWwgc3RyaW5nIGxpdGVyYWwuCi0gICBJbiBQeXRob24gMiwgOmZ1bmM6YHVgIHJldHVybnMg
dW5pY29kZSwgYW5kIGluIFB5dGhvbiAzLCBhIHN0cmluZy4gIEFsc28sIGluCi0gICBQeXRob24g
MiwgdGhlIHN0cmluZyBpcyBkZWNvZGVkIHdpdGggdGhlIGBgdW5pY29kZS1lc2NhcGVgYCBjb2Rl
Yywgd2hpY2gKLSAgIGFsbG93cyB1bmljb2RlIGVzY2FwZXMgdG8gYmUgdXNlZCBpbiBpdC4KLQot
Ci0gICAuLiBub3RlOjoKLQotICAgICAgSW4gUHl0aG9uIDMuMywgdGhlIGBgdWBgIHByZWZpeCBo
YXMgYmVlbiByZWludHJvZHVjZWQuIENvZGUgdGhhdCBvbmx5Ci0gICAgICBzdXBwb3J0cyBQeXRo
b24gMyB2ZXJzaW9ucyBncmVhdGVyIHRoYW4gMy4zIHRodXMgZG9lcyBub3QgbmVlZAotICAgICAg
OmZ1bmM6YHVgLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgT24gUHl0aG9uIDIsIDpmdW5jOmB1
YCBkb2Vzbid0IGtub3cgd2hhdCB0aGUgZW5jb2Rpbmcgb2YgdGhlIGxpdGVyYWwKLSAgICAgIGlz
LiBFYWNoIGJ5dGUgaXMgY29udmVydGVkIGRpcmVjdGx5IHRvIHRoZSB1bmljb2RlIGNvZGVwb2lu
dCBvZiB0aGUgc2FtZQotICAgICAgdmFsdWUuIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBvbmx5IHNh
ZmUgdG8gdXNlIDpmdW5jOmB1YCB3aXRoIHN0cmluZ3Mgb2YKLSAgICAgIEFTQ0lJIGRhdGEuCi0K
LQotLi4gZnVuY3Rpb246OiB1bmljaHIoYykKLQotICAgUmV0dXJuIHRoZSAoVW5pY29kZSkgc3Ry
aW5nIHJlcHJlc2VudGluZyB0aGUgY29kZXBvaW50ICpjKi4gIFRoaXMgaXMKLSAgIGVxdWl2YWxl
bnQgdG8gOmZ1bmM6YHB5Mjp1bmljaHJgIG9uIFB5dGhvbiAyIGFuZCA6ZnVuYzpgcHkzOmNocmAg
b24gUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiBpbnQyYnl0ZShpKQotCi0gICBDb252ZXJ0
cyAqaSogdG8gYSBieXRlLiAgKmkqIG11c3QgYmUgaW4gYGByYW5nZSgwLCAyNTYpYGAuICBUaGlz
IGlzCi0gICBlcXVpdmFsZW50IHRvIDpmdW5jOmBweTI6Y2hyYCBpbiBQeXRob24gMiBhbmQgYGBi
eXRlcygoaSwpKWBgIGluIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogYnl0ZTJpbnQoYnMp
Ci0KLSAgIENvbnZlcnRzIHRoZSBmaXJzdCBieXRlIG9mICpicyogdG8gYW4gaW50ZWdlci4gIFRo
aXMgaXMgZXF1aXZhbGVudCB0bwotICAgYGBvcmQoYnNbMF0pYGAgb24gUHl0aG9uIDIgYW5kIGBg
YnNbMF1gYCBvbiBQeXRob24gMy4KLQotCi0uLiBmdW5jdGlvbjo6IGluZGV4Ynl0ZXMoYnVmLCBp
KQotCi0gICBSZXR1cm4gdGhlIGJ5dGUgYXQgaW5kZXggKmkqIG9mICpidWYqIGFzIGFuIGludGVn
ZXIuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGluZGV4aW5nIGEgYnl0ZXMgb2JqZWN0IGlu
IFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcmJ5dGVzKGJ1ZikKLQotICAgUmV0dXJu
IGFuIGl0ZXJhdG9yIG92ZXIgYnl0ZXMgaW4gKmJ1ZiogYXMgaW50ZWdlcnMuICBUaGlzIGlzIGVx
dWl2YWxlbnQgdG8KLSAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAzLgotCi0K
LS4uIGRhdGE6OiBTdHJpbmdJTwotCi0gICBUaGlzIGlzIGFuIGZha2UgZmlsZSBvYmplY3QgZm9y
IHRleHR1YWwgZGF0YS4gIEl0J3MgYW4gYWxpYXMgZm9yCi0gICA6Y2xhc3M6YHB5MjpTdHJpbmdJ
Ty5TdHJpbmdJT2AgaW4gUHl0aG9uIDIgYW5kIDpjbGFzczpgcHkzOmlvLlN0cmluZ0lPYCBpbgot
ICAgUHl0aG9uIDMuCi0KLQotLi4gZGF0YTo6IEJ5dGVzSU8KLQotICAgVGhpcyBpcyBhIGZha2Ug
ZmlsZSBvYmplY3QgZm9yIGJpbmFyeSBkYXRhLiAgSW4gUHl0aG9uIDIsIGl0J3MgYW4gYWxpYXMg
Zm9yCi0gICA6Y2xhc3M6YHB5MjpTdHJpbmdJTy5TdHJpbmdJT2AsIGJ1dCBpbiBQeXRob24gMywg
aXQncyBhbiBhbGlhcyBmb3IKLSAgIDpjbGFzczpgcHkzOmlvLkJ5dGVzSU9gLgotCi0KLVJlbmFt
ZWQgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBjb21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PgotCi0uLiBtb2R1bGU6OiBzaXgubW92ZXMKLSAg
IDpzeW5vcHNpczogUmVuYW1lZCBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGNvbXBhdGliaWxpdHkK
LQotUHl0aG9uIDMgcmVvcmdhbml6ZWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kIG1vdmVkIHNl
dmVyYWwgZnVuY3Rpb25zIHRvCi1kaWZmZXJlbnQgbW9kdWxlcy4gIFNpeCBwcm92aWRlcyBhIGNv
bnNpc3RlbnQgaW50ZXJmYWNlIHRvIHRoZW0gdGhyb3VnaCB0aGUgZmFrZQotOm1vZDpgc2l4Lm1v
dmVzYCBtb2R1bGUuICBGb3IgZXhhbXBsZSwgdG8gbG9hZCB0aGUgbW9kdWxlIGZvciBwYXJzaW5n
IEhUTUwgb24KLVB5dGhvbiAyIG9yIDMsIHdyaXRlOjoKLQotICAgZnJvbSBzaXgubW92ZXMgaW1w
b3J0IGh0bWxfcGFyc2VyCi0KLVNpbWlsYXJseSwgdG8gZ2V0IHRoZSBmdW5jdGlvbiB0byByZWxv
YWQgbW9kdWxlcywgd2hpY2ggd2FzIG1vdmVkIGZyb20gdGhlCi1idWlsdGluIG1vZHVsZSB0byB0
aGUgYGBpbXBgYCBtb2R1bGUsIHVzZTo6Ci0KLSAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCByZWxv
YWRfbW9kdWxlCi0KLUZvciB0aGUgbW9zdCBwYXJ0LCA6bW9kOmBzaXgubW92ZXNgIGFsaWFzZXMg
YXJlIHRoZSBuYW1lcyBvZiB0aGUgbW9kdWxlcyBpbgotUHl0aG9uIDMuICBXaGVuIHRoZSBuZXcg
UHl0aG9uIDMgbmFtZSBpcyBhIHBhY2thZ2UsIHRoZSBjb21wb25lbnRzIG9mIHRoZSBuYW1lCi1h
cmUgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmVzLiAgRm9yIGV4YW1wbGUsIGBgaHRtbC5wYXJzZXJg
YCBiZWNvbWVzCi1gYGh0bWxfcGFyc2VyYGAuICBJbiBzb21lIGNhc2VzIHdoZXJlIHNldmVyYWwg
bW9kdWxlcyBoYXZlIGJlZW4gY29tYmluZWQsIHRoZQotUHl0aG9uIDIgbmFtZSBpcyByZXRhaW5l
ZC4gIFRoaXMgaXMgc28gdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMgY2FuIGJlIGZvdW5kIHdoZW4K
LXJ1bm5pbmcgb24gUHl0aG9uIDIuICBGb3IgZXhhbXBsZSwgYGBCYXNlSFRUUFNlcnZlcmBgIHdo
aWNoIGlzIGluCi1gYGh0dHAuc2VydmVyYGAgaW4gUHl0aG9uIDMgaXMgYWxpYXNlZCBhcyBgYEJh
c2VIVFRQU2VydmVyYGAuCi0KLVNvbWUgbW9kdWxlcyB3aGljaCBoYWQgdHdvIGltcGxlbWVudGF0
aW9ucyBoYXZlIGJlZW4gbWVyZ2VkIGluIFB5dGhvbiAzLiAgRm9yCi1leGFtcGxlLCBgYGNQaWNr
bGVgYCBubyBsb25nZXIgZXhpc3RzIGluIFB5dGhvbiAzOyBpdCB3YXMgbWVyZ2VkIHdpdGgKLWBg
cGlja2xlYGAuICBJbiB0aGVzZSBjYXNlcywgZmV0Y2hpbmcgdGhlIGZhc3QgdmVyc2lvbiB3aWxs
IGxvYWQgdGhlIGZhc3Qgb25lIG9uCi1QeXRob24gMiBhbmQgdGhlIG1lcmdlZCBtb2R1bGUgaW4g
UHl0aG9uIDMuCi0KLVRoZSA6bW9kOmBweTI6dXJsbGliYCwgOm1vZDpgcHkyOnVybGxpYjJgLCBh
bmQgOm1vZDpgcHkyOnVybHBhcnNlYCBtb2R1bGVzIGhhdmUKLWJlZW4gY29tYmluZWQgaW4gdGhl
IDptb2Q6YHB5Mzp1cmxsaWJgIHBhY2thZ2UgaW4gUHl0aG9uIDMuICBUaGUKLTptb2Q6YHNpeC5t
b3Zlcy51cmxsaWJgIHBhY2thZ2UgaXMgYSB2ZXJzaW9uLWluZGVwZW5kZW50IGxvY2F0aW9uIGZv
ciB0aGlzCi1mdW5jdGlvbmFsaXR5OyBpdHMgc3RydWN0dXJlIG1pbWljcyB0aGUgc3RydWN0dXJl
IG9mIHRoZSBQeXRob24gMwotOm1vZDpgcHkzOnVybGxpYmAgcGFja2FnZS4KLQotLi4gbm90ZTo6
Ci0KLSAgIEluIG9yZGVyIHRvIG1ha2UgaW1wb3J0cyBvZiB0aGUgZm9ybTo6Ci0KLSAgICAgZnJv
bSBzaXgubW92ZXMuY1BpY2tsZSBpbXBvcnQgbG9hZHMKLQotICAgd29yaywgc2l4IHBsYWNlcyBz
cGVjaWFsIHByb3h5IG9iamVjdHMgaW4gaW4gOmRhdGE6YHB5MzpzeXMubW9kdWxlc2AuIFRoZXNl
Ci0gICBwcm94aWVzIGxhemlseSBsb2FkIHRoZSB1bmRlcmx5aW5nIG1vZHVsZSB3aGVuIGFuIGF0
dHJpYnV0ZSBpcyBmZXRjaGVkLiBUaGlzCi0gICB3aWxsIGZhaWwgaWYgdGhlIHVuZGVybHlpbmcg
bW9kdWxlIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIFB5dGhvbgotICAgaW50ZXJwcmV0ZXIuIEZv
ciBleGFtcGxlLCBgYHN5cy5tb2R1bGVzWyJzaXgubW92ZXMud2lucmVnIl0uTG9hZEtleWBgIHdv
dWxkCi0gICBmYWlsIG9uIGFueSBub24tV2luZG93cyBwbGF0Zm9ybS4gVW5mb3J0dW5hdGVseSwg
c29tZSBhcHBsaWNhdGlvbnMgdHJ5IHRvCi0gICBsb2FkIGF0dHJpYnV0ZXMgb24gZXZlcnkgbW9k
dWxlIGluIDpkYXRhOmBweTM6c3lzLm1vZHVsZXNgLiBzaXggbWl0aWdhdGVzCi0gICB0aGlzIHBy
b2JsZW0gZm9yIHNvbWUgYXBwbGljYXRpb25zIGJ5IHByZXRlbmRpbmcgYXR0cmlidXRlcyBvbiB1
bmltcG9ydGFibGUKLSAgIG1vZHVsZXMgZG9uJ3QgZXhpc3QuIFRoaXMgaGFjayBkb2Vzbid0IHdv
cmsgaW4gZXZlcnkgY2FzZSwgdGhvdWdoLiBJZiB5b3UgYXJlCi0gICBlbmNvdW50ZXJpbmcgcHJv
YmxlbXMgd2l0aCB0aGUgbGF6eSBtb2R1bGVzIGFuZCBkb24ndCB1c2UgYW55IGZyb20gaW1wb3J0
cwotICAgZGlyZWN0bHkgZnJvbSBgYHNpeC5tb3Zlc2BgIG1vZHVsZXMsIHlvdSBjYW4gd29ya2Fy
b3VuZCB0aGUgaXNzdWUgYnkgcmVtb3ZpbmcKLSAgIHRoZSBzaXggcHJveHkgbW9kdWxlczo6Ci0K
LSAgICAgZCA9IFtuYW1lIGZvciBuYW1lIGluIHN5cy5tb2R1bGVzIGlmIG5hbWUuc3RhcnRzd2l0
aCgic2l4Lm1vdmVzLiIpXQotICAgICBmb3IgbmFtZSBpbiBkOgotICAgICAgICAgZGVsIHN5cy5t
b2R1bGVzW25hbWVdCi0KLVN1cHBvcnRlZCByZW5hbWVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgTmFtZSAgICAgICAgICAgICAgICAg
ICAgICAgICB8IFB5dGhvbiAyIG5hbWUgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIDMg
bmFtZSAgICAgICAgICAgICAgICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0rCi18IGBgYnVpbHRpbnNgYCAgICAgICAgICAgICAgICAg
fCA6bW9kOmBweTI6X19idWlsdGluX19gICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpidWlsdGlu
c2AgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotfCBgYGNvbmZpZ3BhcnNlcmBgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOkNvbmZpZ1BhcnNlcmAgICAgICAgICAgICAgfCA6bW9kOmBweTM6Y29uZmlncGFyc2VyYCAg
ICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLXwgYGBjb3B5cmVnYGAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mjpjb3B5
X3JlZ2AgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmNvcHlyZWdgICAgICAgICAgICAgICAg
ICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci18IGBgY1BpY2tsZWBgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6Y1BpY2tsZWAgICAg
ICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpwaWNrbGVgICAgICAgICAgICAgICAgICAgIHwKLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGNT
dHJpbmdJT2BgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjpjU3RyaW5nSU8uU3RyaW5nSU9g
ICAgICAgfCA6Y2xhc3M6YHB5Mzppby5TdHJpbmdJT2AgICAgICAgICAgICB8Ci0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkYm1fZ251YGAg
ICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6Z2RibWAgICAgICAgICAgICAgICAgICAgIHwg
OmNsYXNzOmBweTM6ZGJtLmdudWAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgX2R1bW15X3RocmVhZGBgICAg
ICAgICAgICAgfCA6bW9kOmBweTI6ZHVtbXlfdGhyZWFkYCAgICAgICAgICAgICB8IDptb2Q6YHB5
MzpfZHVtbXlfdGhyZWFkYCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGVtYWlsX21pbWVfbXVsdGlwYXJ0YGAgICAg
IHwgOm1vZDpgcHkyOmVtYWlsLk1JTUVNdWx0aXBhcnRgICAgICAgfCA6bW9kOmBweTM6ZW1haWwu
bWltZS5tdWx0aXBhcnRgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBlbWFpbF9taW1lX25vbm11bHRpcGFydGBgICB8IDptb2Q6
YHB5MjplbWFpbC5NSU1FTm9uTXVsdGlwYXJ0YCAgIHwgOm1vZDpgcHkzOmVtYWlsLm1pbWUubm9u
bXVsdGlwYXJ0YCAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi18IGBgZW1haWxfbWltZV90ZXh0YGAgICAgICAgICAgfCA6bW9kOmBweTI6ZW1h
aWwuTUlNRVRleHRgICAgICAgICAgICB8IDptb2Q6YHB5MzplbWFpbC5taW1lLnRleHRgICAgICAg
ICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotfCBgYGVtYWlsX21pbWVfYmFzZWBgICAgICAgICAgIHwgOm1vZDpgcHkyOmVtYWlsLk1JTUVC
YXNlYCAgICAgICAgICAgfCA6bW9kOmBweTM6ZW1haWwubWltZS5iYXNlYCAgICAgICAgICB8Ci0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBm
aWx0ZXJgYCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6aXRlcnRvb2xzLmlmaWx0ZXJg
ICAgICAgIHwgOmZ1bmM6YHB5MzpmaWx0ZXJgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZmlsdGVyZmFs
c2VgYCAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOml0ZXJ0b29scy5pZmlsdGVyZmFsc2VgICB8
IDpmdW5jOmBweTM6aXRlcnRvb2xzLmZpbHRlcmZhbHNlYCAgIHwKLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGh0dHBfY29va2llamFyYGAg
ICAgICAgICAgIHwgOm1vZDpgcHkyOmNvb2tpZWxpYmAgICAgICAgICAgICAgICAgfCA6bW9kOmBw
eTM6aHR0cC5jb29raWVqYXJgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBodHRwX2Nvb2tpZXNgYCAgICAgICAgICAg
ICB8IDptb2Q6YHB5MjpDb29raWVgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmh0dHAu
Y29va2llc2AgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaHRtbF9lbnRpdGllc2BgICAgICAgICAgICAgfCA6bW9k
OmBweTI6aHRtbGVudGl0eWRlZnNgICAgICAgICAgICB8IDptb2Q6YHB5MzpodG1sLmVudGl0aWVz
YCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotfCBgYGh0bWxfcGFyc2VyYGAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOkhU
TUxQYXJzZXJgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6aHRtbC5wYXJzZXJgICAgICAgICAg
ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKLXwgYGBodHRwX2NsaWVudGBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpodHRwbGliYCAg
ICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmh0dHAuY2xpZW50YCAgICAgICAgICAgICAgfAot
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBg
QmFzZUhUVFBTZXJ2ZXJgYCAgICAgICAgICAgfCA6bW9kOmBweTI6QmFzZUhUVFBTZXJ2ZXJgICAg
ICAgICAgICB8IDptb2Q6YHB5MzpodHRwLnNlcnZlcmAgICAgICAgICAgICAgIHwKLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYENHSUhUVFBT
ZXJ2ZXJgYCAgICAgICAgICAgIHwgOm1vZDpgcHkyOkNHSUhUVFBTZXJ2ZXJgICAgICAgICAgICAg
fCA6bW9kOmBweTM6aHR0cC5zZXJ2ZXJgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBTaW1wbGVIVFRQU2VydmVy
YGAgICAgICAgICB8IDptb2Q6YHB5MjpTaW1wbGVIVFRQU2VydmVyYCAgICAgICAgIHwgOm1vZDpg
cHkzOmh0dHAuc2VydmVyYCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaW5wdXRgYCAgICAgICAgICAgICAgICAg
ICAgfCA6ZnVuYzpgcHkyOnJhd19pbnB1dGAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTM6aW5w
dXRgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGludGVybmBgICAgICAgICAgICAgICAgICAgIHwgOmZ1
bmM6YHB5MjppbnRlcm5gICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkzOnN5cy5pbnRlcm5g
ICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLXwgYGBtYXBgYCAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6
aXRlcnRvb2xzLmltYXBgICAgICAgICAgIHwgOmZ1bmM6YHB5MzptYXBgICAgICAgICAgICAgICAg
ICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi18IGBgcXVldWVgYCAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6UXVldWVgICAg
ICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpxdWV1ZWAgICAgICAgICAgICAgICAgICAgIHwK
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBg
YHJhbmdlYGAgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5Mjp4cmFuZ2VgICAgICAgICAg
ICAgICAgICAgfCA6ZnVuYzpgcHkzOnJhbmdlYCAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGByZWR1Y2Vg
YCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6cmVkdWNlYCAgICAgICAgICAgICAgICAg
IHwgOmZ1bmM6YHB5MzpmdW5jdG9vbHMucmVkdWNlYCAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcmVsb2FkX21vZHVsZWBg
ICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOnJlbG9hZGAgICAgICAgICAgICAgICAgICB8IDpmdW5j
OmBweTM6aW1wLnJlbG9hZGAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHJlcHJsaWJgYCAgICAgICAgICAgICAg
ICAgIHwgOm1vZDpgcHkyOnJlcHJgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6cmVw
cmxpYmAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzaGxleF9xdW90ZWBgICAgICAgICAgICAgICB8IDpt
b2Q6YHB5MjpwaXBlcy5xdW90ZWAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnNobGV4LnF1b3Rl
YCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi18IGBgc29ja2V0c2VydmVyYGAgICAgICAgICAgICAgfCA6bW9kOmBweTI6
U29ja2V0U2VydmVyYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzpzb2NrZXRzZXJ2ZXJgICAgICAg
ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotfCBgYF90aHJlYWRgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOnRocmVhZGAg
ICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6X3RocmVhZGAgICAgICAgICAgICAgICAgICB8
Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwg
YGB0a2ludGVyYGAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpUa2ludGVyYCAgICAgICAg
ICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXJgICAgICAgICAgICAgICAgICAgfAotKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRl
cl9kaWFsb2dgYCAgICAgICAgICAgfCA6bW9kOmBweTI6RGlhbG9nYCAgICAgICAgICAgICAgICAg
ICB8IDptb2Q6YHB5Mzp0a2ludGVyLmRpYWxvZ2AgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfZmlsZWRp
YWxvZ2BgICAgICAgIHwgOm1vZDpgcHkyOkZpbGVEaWFsb2dgICAgICAgICAgICAgICAgfCA6bW9k
OmBweTM6dGtpbnRlci5GaWxlRGlhbG9nYCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX3Njcm9sbGVkdGV4dGBg
ICAgICB8IDptb2Q6YHB5MjpTY3JvbGxlZFRleHRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRr
aW50ZXIuc2Nyb2xsZWR0ZXh0YCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9zaW1wbGVkaWFsb2dgYCAgICAgfCA6
bW9kOmBweTI6U2ltcGxlRGlhbG9nYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLnNp
bXBsZWRpYWxvZ2AgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfdHRrYGAgICAgICAgICAgICAgIHwgOm1vZDpgcHky
OnR0a2AgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci50dGtgICAgICAg
ICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKLXwgYGB0a2ludGVyX3RpeGBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpUaXhgICAg
ICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIudGl4YCAgICAgICAgICAgICAg
fAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18
IGBgdGtpbnRlcl9jb25zdGFudHNgYCAgICAgICAgfCA6bW9kOmBweTI6VGtjb25zdGFudHNgICAg
ICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLmNvbnN0YW50c2AgICAgICAgIHwKLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50
ZXJfZG5kYGAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOlRrZG5kYCAgICAgICAgICAgICAgICAg
ICAgfCA6bW9kOmBweTM6dGtpbnRlci5kbmRgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX2NvbG9y
Y2hvb3NlcmBgICAgICB8IDptb2Q6YHB5Mjp0a0NvbG9yQ2hvb3NlcmAgICAgICAgICAgIHwgOm1v
ZDpgcHkzOnRraW50ZXIuY29sb3JjaG9vc2VyYCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9jb21tb25kaWFsb2dg
YCAgICAgfCA6bW9kOmBweTI6dGtDb21tb25EaWFsb2dgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0
a2ludGVyLmNvbW1vbmRpYWxvZ2AgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfdGtmaWxlZGlhbG9nYGAgICAgIHwg
Om1vZDpgcHkyOnRrRmlsZURpYWxvZ2AgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5m
aWxlZGlhbG9nYCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX2ZvbnRgYCAgICAgICAgICAgICB8IDptb2Q6YHB5
Mjp0a0ZvbnRgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuZm9udGAgICAg
ICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi18IGBgdGtpbnRlcl9tZXNzYWdlYm94YGAgICAgICAgfCA6bW9kOmBweTI6dGtNZXNz
YWdlQm94YCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLm1lc3NhZ2Vib3hgICAgICAg
IHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
fCBgYHRraW50ZXJfdGtzaW1wbGVkaWFsb2dgYCAgIHwgOm1vZDpgcHkyOnRrU2ltcGxlRGlhbG9n
YCAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5zaW1wbGVkaWFsb2dgICAgICB8Ci0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB1cmxs
aWIucGFyc2VgYCAgICAgICAgICAgICB8IFNlZSA6bW9kOmBzaXgubW92ZXMudXJsbGliLnBhcnNl
YCAgIHwgOm1vZDpgcHkzOnVybGxpYi5wYXJzZWAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGliLmVycm9y
YGAgICAgICAgICAgICAgfCBTZWUgOm1vZDpgc2l4Lm1vdmVzLnVybGxpYi5lcnJvcmAgICB8IDpt
b2Q6YHB5Mzp1cmxsaWIuZXJyb3JgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHVybGxpYi5yZXF1ZXN0YGAgICAg
ICAgICAgIHwgU2VlIDptb2Q6YHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdGAgfCA6bW9kOmBweTM6
dXJsbGliLnJlcXVlc3RgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB1cmxsaWIucmVzcG9uc2VgYCAgICAgICAgICB8
IFNlZSA6bW9kOmBzaXgubW92ZXMudXJsbGliLnJlc3BvbnNlYHwgOm1vZDpgcHkzOnVybGxpYi5y
ZXNwb25zZWAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGliLnJvYm90cGFyc2VyYGAgICAgICAgfCA6bW9kOmBw
eTI6cm9ib3RwYXJzZXJgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp1cmxsaWIucm9ib3RwYXJz
ZXJgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotfCBgYHVybGxpYl9yb2JvdHBhcnNlcmBgICAgICAgIHwgOm1vZDpgcHkyOnJvYm90
cGFyc2VyYCAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dXJsbGliLnJvYm90cGFyc2VyYCAgICAg
ICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LXwgYGBVc2VyRGljdGBgICAgICAgICAgICAgICAgICB8IDpjbGFzczpgcHkyOlVzZXJEaWN0LlVz
ZXJEaWN0YCAgICAgIHwgOmNsYXNzOmBweTM6Y29sbGVjdGlvbnMuVXNlckRpY3RgICAgfAotKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgVXNl
ckxpc3RgYCAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MjpVc2VyTGlzdC5Vc2VyTGlzdGAg
ICAgICB8IDpjbGFzczpgcHkzOmNvbGxlY3Rpb25zLlVzZXJMaXN0YCAgIHwKLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYFVzZXJTdHJpbmdg
YCAgICAgICAgICAgICAgIHwgOmNsYXNzOmBweTI6VXNlclN0cmluZy5Vc2VyU3RyaW5nYCAgfCA6
Y2xhc3M6YHB5Mzpjb2xsZWN0aW9ucy5Vc2VyU3RyaW5nYCB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB3aW5yZWdgYCAgICAgICAgICAg
ICAgICAgICB8IDptb2Q6YHB5Mjpfd2lucmVnYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkz
OndpbnJlZ2AgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgeG1scnBjX2NsaWVudGBgICAgICAgICAgICAg
fCA6bW9kOmBweTI6eG1scnBjbGliYCAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp4bWxycGMu
Y2xpZW50YCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotfCBgYHhtbHJwY19zZXJ2ZXJgYCAgICAgICAgICAgIHwgOm1vZDpg
cHkyOlNpbXBsZVhNTFJQQ1NlcnZlcmAgICAgICAgfCA6bW9kOmBweTM6eG1scnBjLnNlcnZlcmAg
ICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLXwgYGB4cmFuZ2VgYCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6eHJh
bmdlYCAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MzpyYW5nZWAgICAgICAgICAgICAgICAg
ICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci18IGBgemlwYGAgICAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOml0ZXJ0b29scy5p
emlwYCAgICAgICAgICB8IDpmdW5jOmBweTM6emlwYCAgICAgICAgICAgICAgICAgICAgIHwKLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHpp
cF9sb25nZXN0YGAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjppdGVydG9vbHMuaXppcF9sb25n
ZXN0YCAgfCA6ZnVuYzpgcHkzOml0ZXJ0b29scy56aXBfbG9uZ2VzdGAgICB8Ci0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotdXJsbGliIHBhcnNl
Ci08PDw8PDw8PDw8PDwKLQotLi4gbW9kdWxlOjogc2l4Lm1vdmVzLnVybGxpYi5wYXJzZQotICAg
OnN5bm9wc2lzOiBTdHVmZiBmcm9tIDptb2Q6YHB5Mjp1cmxwYXJzZWAgYW5kIDptb2Q6YHB5Mjp1
cmxsaWJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGliLnBhcnNlYCBpbiBQeXRob24g
MwotCi1Db250YWlucyBmdW5jdGlvbnMgZnJvbSBQeXRob24gMydzIDptb2Q6YHB5Mzp1cmxsaWIu
cGFyc2VgIGFuZCBQeXRob24gMidzOgotCi06bW9kOmBweTI6dXJscGFyc2VgOgotCi0qIDpmdW5j
OmBweTI6dXJscGFyc2UuUGFyc2VSZXN1bHRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UuU3BsaXRS
ZXN1bHRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJscGFyc2VgCi0qIDpmdW5jOmBweTI6dXJs
cGFyc2UudXJsdW5wYXJzZWAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5wYXJzZV9xc2AKLSogOmZ1
bmM6YHB5Mjp1cmxwYXJzZS5wYXJzZV9xc2xgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJsam9p
bmAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51cmxkZWZyYWdgCi0qIDpmdW5jOmBweTI6dXJscGFy
c2UudXJsc3BsaXRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJsdW5zcGxpdGAKLSogOmZ1bmM6
YHB5Mjp1cmxwYXJzZS5zcGxpdHF1ZXJ5YAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnVzZXNfZnJh
Z21lbnRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXNlc19uZXRsb2NgCi0qIDpmdW5jOmBweTI6
dXJscGFyc2UudXNlc19wYXJhbXNgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXNlc19xdWVyeWAK
LSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51c2VzX3JlbGF0aXZlYAotCi1hbmQgOm1vZDpgcHkyOnVy
bGxpYmA6Ci0KLSogOmZ1bmM6YHB5Mjp1cmxsaWIucXVvdGVgCi0qIDpmdW5jOmBweTI6dXJsbGli
LnF1b3RlX3BsdXNgCi0qIDpmdW5jOmBweTI6dXJsbGliLnNwbGl0dGFnYAotKiA6ZnVuYzpgcHky
OnVybGxpYi5zcGxpdHVzZXJgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVucXVvdGVgCi0qIDpmdW5j
OmBweTI6dXJsbGliLnVucXVvdGVfcGx1c2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJsZW5jb2Rl
YAotCi0KLXVybGxpYiBlcnJvcgotPDw8PDw8PDw8PDw8Ci0KLS4uIG1vZHVsZTo6IHNpeC5tb3Zl
cy51cmxsaWIuZXJyb3IKLSAgIDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6bW9kOmBweTI6dXJsbGli
YCBhbmQgOm1vZDpgcHkyOnVybGxpYjJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGli
LmVycm9yYCBpbiBQeXRob24gMwotCi1Db250YWlucyBleGNlcHRpb25zIGZyb20gUHl0aG9uIDMn
cyA6bW9kOmBweTM6dXJsbGliLmVycm9yYCBhbmQgUHl0aG9uIDInczoKLQotOm1vZDpgcHkyOnVy
bGxpYmA6Ci0KLSogOmV4YzpgcHkyOnVybGxpYi5Db250ZW50VG9vU2hvcnRFcnJvcmAKLQotYW5k
IDptb2Q6YHB5Mjp1cmxsaWIyYDoKLQotKiA6ZXhjOmBweTI6dXJsbGliMi5VUkxFcnJvcmAKLSog
OmV4YzpgcHkyOnVybGxpYjIuSFRUUEVycm9yYAotCi0KLXVybGxpYiByZXF1ZXN0Ci08PDw8PDw8
PDw8PDw8PAotCi0uLiBtb2R1bGU6OiBzaXgubW92ZXMudXJsbGliLnJlcXVlc3QKLSAgIDpzeW5v
cHNpczogU3R1ZmYgZnJvbSA6bW9kOmBweTI6dXJsbGliYCBhbmQgOm1vZDpgcHkyOnVybGxpYjJg
IGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGliLnJlcXVlc3RgIGluIFB5dGhvbiAzCi0K
LUNvbnRhaW5zIGl0ZW1zIGZyb20gUHl0aG9uIDMncyA6bW9kOmBweTM6dXJsbGliLnJlcXVlc3Rg
IGFuZCBQeXRob24gMidzOgotCi06bW9kOmBweTI6dXJsbGliYDoKLQotKiA6ZnVuYzpgcHkyOnVy
bGxpYi5wYXRobmFtZTJ1cmxgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVybDJwYXRobmFtZWAKLSog
OmZ1bmM6YHB5Mjp1cmxsaWIuZ2V0cHJveGllc2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJscmV0
cmlldmVgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVybGNsZWFudXBgCi0qIDpjbGFzczpgcHkyOnVy
bGxpYi5VUkxvcGVuZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYi5GYW5jeVVSTG9wZW5lcmAKLSog
OmZ1bmM6YHB5Mjp1cmxsaWIucHJveHlfYnlwYXNzYAotCi1hbmQgOm1vZDpgcHkyOnVybGxpYjJg
OgotCi0qIDpmdW5jOmBweTI6dXJsbGliMi51cmxvcGVuYAotKiA6ZnVuYzpgcHkyOnVybGxpYjIu
aW5zdGFsbF9vcGVuZXJgCi0qIDpmdW5jOmBweTI6dXJsbGliMi5idWlsZF9vcGVuZXJgCi0qIDpj
bGFzczpgcHkyOnVybGxpYjIuUmVxdWVzdGAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5PcGVuZXJE
aXJlY3RvcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQRGVmYXVsdEVycm9ySGFuZGxlcmAK
LSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQUmVkaXJlY3RIYW5kbGVyYAotKiA6Y2xhc3M6YHB5
Mjp1cmxsaWIyLkhUVFBDb29raWVQcm9jZXNzb3JgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuUHJv
eHlIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkJhc2VIYW5kbGVyYAotKiA6Y2xhc3M6
YHB5Mjp1cmxsaWIyLkhUVFBQYXNzd29yZE1ncmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQ
UGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkFic3Ry
YWN0QmFzaWNBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQQmFzaWNBdXRo
SGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5Qcm94eUJhc2ljQXV0aEhhbmRsZXJgCi0q
IDpjbGFzczpgcHkyOnVybGxpYjIuQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcmAKLSogOmNsYXNz
OmBweTI6dXJsbGliMi5IVFRQRGlnZXN0QXV0aEhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxp
YjIuUHJveHlEaWdlc3RBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQSGFu
ZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQU0hhbmRsZXJgCi0qIDpjbGFzczpgcHky
OnVybGxpYjIuRmlsZUhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuRlRQSGFuZGxlcmAK
LSogOmNsYXNzOmBweTI6dXJsbGliMi5DYWNoZUZUUEhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVy
bGxpYjIuVW5rbm93bkhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuSFRUUEVycm9yUHJv
Y2Vzc29yYAotCi0KLXVybGxpYiByZXNwb25zZQotPDw8PDw8PDw8PDw8PDw8Ci0KLS4uIG1vZHVs
ZTo6IHNpeC5tb3Zlcy51cmxsaWIucmVzcG9uc2UKLSAgIDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6
bW9kOmBweTI6dXJsbGliYCBpbiBQeXRob24gMiBhbmQgOm1vZDpgcHkzOnVybGxpYi5yZXNwb25z
ZWAgaW4gUHl0aG9uIDMKLQotQ29udGFpbnMgY2xhc3NlcyBmcm9tIFB5dGhvbiAzJ3MgOm1vZDpg
cHkzOnVybGxpYi5yZXNwb25zZWAgYW5kIFB5dGhvbiAyJ3M6Ci0KLTptb2Q6YHB5Mjp1cmxsaWJg
OgotCi0qIDpjbGFzczpgcHkyOnVybGxpYi5hZGRiYXNlYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIu
YWRkY2xvc2Vob29rYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIuYWRkaW5mb2AKLSogOmNsYXNzOmBw
eTI6dXJsbGliLmFkZGluZm91cmxgCi0KLQotQWR2YW5jZWQgLSBDdXN0b21pemluZyByZW5hbWVz
Ci08PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwKLQotLi4gY3VycmVudG1vZHVsZTo6IHNp
eAotCi1JdCBpcyBwb3NzaWJsZSB0byBhZGQgYWRkaXRpb25hbCBuYW1lcyB0byB0aGUgOm1vZDpg
c2l4Lm1vdmVzYCBuYW1lc3BhY2UuCi0KLQotLi4gZnVuY3Rpb246OiBhZGRfbW92ZShpdGVtKQot
Ci0gICBBZGQgKml0ZW0qIHRvIHRoZSA6bW9kOmBzaXgubW92ZXNgIG1hcHBpbmcuICAqaXRlbSog
c2hvdWxkIGJlIGEKLSAgIDpjbGFzczpgTW92ZWRBdHRyaWJ1dGVgIG9yIDpjbGFzczpgTW92ZWRN
b2R1bGVgIGluc3RhbmNlLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVtb3ZlX21vdmUobmFtZSkKLQot
ICAgUmVtb3ZlIHRoZSA6bW9kOmBzaXgubW92ZXNgIG1hcHBpbmcgY2FsbGVkICpuYW1lKi4gICpu
YW1lKiBzaG91bGQgYmUgYQotICAgc3RyaW5nLgotCi0KLUluc3RhbmNlcyBvZiB0aGUgZm9sbG93
aW5nIGNsYXNzZXMgY2FuIGJlIHBhc3NlZCB0byA6ZnVuYzpgYWRkX21vdmVgLiAgTmVpdGhlcgot
aGF2ZSBhbnkgcHVibGljIG1lbWJlcnMuCi0KLQotLi4gY2xhc3M6OiBNb3ZlZE1vZHVsZShuYW1l
LCBvbGRfbW9kLCBuZXdfbW9kKQotCi0gICBDcmVhdGUgYSBtYXBwaW5nIGZvciA6bW9kOmBzaXgu
bW92ZXNgIGNhbGxlZCAqbmFtZSogdGhhdCByZWZlcmVuY2VzIGRpZmZlcmVudAotICAgbW9kdWxl
cyBpbiBQeXRob24gMiBhbmQgMy4gICpvbGRfbW9kKiBpcyB0aGUgbmFtZSBvZiB0aGUgUHl0aG9u
IDIgbW9kdWxlLgotICAgKm5ld19tb2QqIGlzIHRoZSBuYW1lIG9mIHRoZSBQeXRob24gMyBtb2R1
bGUuCi0KLQotLi4gY2xhc3M6OiBNb3ZlZEF0dHJpYnV0ZShuYW1lLCBvbGRfbW9kLCBuZXdfbW9k
LCBvbGRfYXR0cj1Ob25lLCBuZXdfYXR0cj1Ob25lKQotCi0gICBDcmVhdGUgYSBtYXBwaW5nIGZv
ciA6bW9kOmBzaXgubW92ZXNgIGNhbGxlZCAqbmFtZSogdGhhdCByZWZlcmVuY2VzIGRpZmZlcmVu
dAotICAgYXR0cmlidXRlcyBpbiBQeXRob24gMiBhbmQgMy4gICpvbGRfbW9kKiBpcyB0aGUgbmFt
ZSBvZiB0aGUgUHl0aG9uIDIgbW9kdWxlLgotICAgKm5ld19tb2QqIGlzIHRoZSBuYW1lIG9mIHRo
ZSBQeXRob24gMyBtb2R1bGUuICBJZiAqbmV3X2F0dHIqIGlzIG5vdCBnaXZlbiwgaXQKLSAgIGRl
ZmF1bHRzIHRvICpvbGRfYXR0ciouICBJZiBuZWl0aGVyIGlzIGdpdmVuLCB0aGV5IGJvdGggZGVm
YXVsdCB0byAqbmFtZSouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9j
dW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjBkN2I3OGZiNTE2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vTWFr
ZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
aXgvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NpeC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjE5ODY1M2VkMGZlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9zaXgucHljCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL19f
aW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zc2x1dGlscy9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTQ2YmU4NTFkNjRmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9fX2luaXRfXy5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDkgKzAsMCBAQAotaW1wb3J0IG9wZW5zc2wKLWltcG9ydCBwcmVnZW5lcmF0ZWQK
LWZyb20gYmFzZSBpbXBvcnQgTm9TU0xFbnZpcm9ubWVudAotZnJvbSBvcGVuc3NsIGltcG9ydCBP
cGVuU1NMRW52aXJvbm1lbnQKLWZyb20gcHJlZ2VuZXJhdGVkIGltcG9ydCBQcmVnZW5lcmF0ZWRT
U0xFbnZpcm9ubWVudAotCi1lbnZpcm9ubWVudHMgPSB7Im5vbmUiOiBOb1NTTEVudmlyb25tZW50
LAotICAgICAgICAgICAgICAgICJvcGVuc3NsIjogT3BlblNTTEVudmlyb25tZW50LAotICAgICAg
ICAgICAgICAgICJwcmVnZW5lcmF0ZWQiOiBQcmVnZW5lcmF0ZWRTU0xFbnZpcm9ubWVudH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc3NsdXRpbHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjM3YWU1ZjIzY2NmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9iYXNlLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTcgKzAsMCBAQAotY2xhc3MgTm9TU0xFbnZpcm9ubWVudChvYmplY3QpOgot
ICAgIHNzbF9lbmFibGVkID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBob3N0X2NlcnRfcGF0aChzZWxmLCBob3N0KToK
LSAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLQotICAgIGRlZiBjYV9jZXJ0X3BhdGgoc2VsZik6
Ci0gICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL29wZW5zc2wucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL29wZW5z
c2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzI0NzFhYWVlMy4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMiArMCwwIEBA
Ci1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9ydCBzaHV0
aWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKLQotIyBBbW91bnQgb2YgdGltZSBiZXlvbmQgdGhlIHBy
ZXNlbnQgdG8gY29uc2lkZXIgY2VydGlmaWNhdGVzICJleHBpcmVkLiIgVGhpcwotIyBhbGxvd3Mg
Y2VydGlmaWNhdGVzIHRvIGJlIHByb2FjdGl2ZWx5IHJlLWdlbmVyYXRlZCBpbiB0aGUgImJ1ZmZl
ciIgcGVyaW9kCi0jIHByaW9yIHRvIHRoZWlyIGV4YWN0IGV4cGlyYXRpb24gdGltZS4KLUNFUlRf
RVhQSVJZX0JVRkZFUiA9IGRpY3QoaG91cnM9NikKLQotY2xhc3MgT3BlblNTTChvYmplY3QpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgYmFzZV9wYXRoLCBjb25mX3Bh
dGgsIGhvc3RzLCBkdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgYmFzZV9jb25mX3BhdGg9Tm9u
ZSk6Ci0gICAgICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBPcGVu
U1NMLgotICAgICAgICBDcmVhdGVzIGEgY29uZmlnIGZpbGUgZm9yIHRoZSBkdXJhdGlvbiBvZiB0
aGUgY29udGV4dC4KLQotICAgICAgICA6cGFyYW0gbG9nZ2VyOiBzdGRsaWIgbG9nZ2VyIG9yIHB5
dGhvbiBzdHJ1Y3R1cmVkIGxvZ2dlcgotICAgICAgICA6cGFyYW0gYmluYXJ5OiBwYXRoIHRvIG9w
ZW5zc2wgYmluYXJ5Ci0gICAgICAgIDpwYXJhbSBiYXNlX3BhdGg6IHBhdGggdG8gZGlyZWN0b3J5
IGZvciBzdG9yaW5nIGNlcnRpZmljYXRlcwotICAgICAgICA6cGFyYW0gY29uZl9wYXRoOiBwYXRo
IGZvciBjb25maWd1cmF0aW9uIGZpbGUgc3RvcmluZyBjb25maWd1cmF0aW9uIGRhdGEKLSAgICAg
ICAgOnBhcmFtIGhvc3RzOiBsaXN0IG9mIGhvc3RzIHRvIGluY2x1ZGUgaW4gY29uZmlndXJhdGlv
biAob3IgTm9uZSBpZiBub3QKLSAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5nIGhvc3Qg
Y2VydGlmaWNhdGVzKQotICAgICAgICA6cGFyYW0gZHVyYXRpb246IENlcnRpZmljYXRlIGR1cmF0
aW9uIGluIGRheXMiIiIKLQotICAgICAgICBzZWxmLmJhc2VfcGF0aCA9IGJhc2VfcGF0aAotICAg
ICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQotICAgICAgICBzZWxmLmNvbmZfcGF0aCA9IGNvbmZf
cGF0aAotICAgICAgICBzZWxmLmJhc2VfY29uZl9wYXRoID0gYmFzZV9jb25mX3BhdGgKLSAgICAg
ICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm9jID0gTm9uZQotICAgICAg
ICBzZWxmLmNtZCA9IFtdCi0gICAgICAgIHNlbGYuaG9zdHMgPSBob3N0cwotICAgICAgICBzZWxm
LmR1cmF0aW9uID0gZHVyYXRpb24KLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAg
IHdpdGggb3BlbihzZWxmLmNvbmZfcGF0aCwgInciKSBhcyBmOgotICAgICAgICAgICAgZi53cml0
ZShnZXRfY29uZmlnKHNlbGYuYmFzZV9wYXRoLCBzZWxmLmhvc3RzLCBzZWxmLmR1cmF0aW9uKSkK
LSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgotICAgICAgICBvcy51bmxpbmsoc2VsZi5jb25mX3BhdGgpCi0KLSAgICBkZWYgbG9n
KHNlbGYsIGxpbmUpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYubG9nZ2VyLCAicHJvY2Vzc19v
dXRwdXQiKToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNlbGYucHJv
Yy5waWQgaWYgc2VsZi5wcm9jIGlzIG5vdCBOb25lIGVsc2UgTm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9IiAiLmpvaW4o
c2VsZi5jbWQpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
bGluZSkKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBjbWQsICphcmdzLCAqKmt3YXJncyk6Ci0g
ICAgICAgICIiIlJ1biBhIGNvbW1hbmQgdXNpbmcgT3BlblNTTCBpbiB0aGUgY3VycmVudCBjb250
ZXh0LgotCi0gICAgICAgIDpwYXJhbSBjbWQ6IFRoZSBvcGVuc3NsIHN1YmNvbW1hbmQgdG8gcnVu
Ci0gICAgICAgIDpwYXJhbSAqYXJnczogQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0
aGUgY29tbWFuZAotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jbWQgPSBbc2VsZi5iaW5hcnks
IGNtZF0KLSAgICAgICAgaWYgY21kICE9ICJ4NTA5IjoKLSAgICAgICAgICAgIHNlbGYuY21kICs9
IFsiLWNvbmZpZyIsIHNlbGYuY29uZl9wYXRoXQotICAgICAgICBzZWxmLmNtZCArPSBsaXN0KGFy
Z3MpCi0KLSAgICAgICAgIyBDb3B5IHRoZSBlbnZpcm9ubWVudCwgY29udmVydGluZyB0byBwbGFp
biBzdHJpbmdzLiBXaW5kb3dzCi0gICAgICAgICMgU3RhcnRQcm9jZXNzIGlzIHBpY2t5IGFib3V0
IGFsbCB0aGUga2V5cy92YWx1ZXMgYmVpbmcgcGxhaW4gc3RyaW5ncywKLSAgICAgICAgIyBidXQg
YXQgbGVhc3QgaW4gTVNZUyBzaGVsbHMsIHRoZSBvcy5lbnZpcm9uIGRpY3Rpb25hcnkgY2FuIGJl
IG1peGVkLgotICAgICAgICBlbnYgPSB7fQotICAgICAgICBmb3IgaywgdiBpbiBvcy5lbnZpcm9u
Lml0ZXJpdGVtcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVudltrLmVu
Y29kZSgidXRmOCIpXSA9IHYuZW5jb2RlKCJ1dGY4IikKLSAgICAgICAgICAgIGV4Y2VwdCBVbmlj
b2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIHNlbGYu
YmFzZV9jb25mX3BhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBlbnZbIk9QRU5TU0xfQ09O
RiJdID0gc2VsZi5iYXNlX2NvbmZfcGF0aC5lbmNvZGUoInV0ZjgiKQotCi0gICAgICAgIHNlbGYu
cHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
IHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbnY9ZW52KQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYucHJvYy5jb21t
dW5pY2F0ZSgpCi0gICAgICAgIHNlbGYubG9nKHN0ZG91dCkKLSAgICAgICAgaWYgc2VsZi5wcm9j
LnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIHN1YnByb2Nlc3MuQ2FsbGVkUHJv
Y2Vzc0Vycm9yKHNlbGYucHJvYy5yZXR1cm5jb2RlLCBzZWxmLmNtZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1zdGRvdXQpCi0KLSAgICAg
ICAgc2VsZi5jbWQgPSBbXQotICAgICAgICBzZWxmLnByb2MgPSBOb25lCi0gICAgICAgIHJldHVy
biBzdGRvdXQKLQotCi1kZWYgbWFrZV9zdWJqZWN0KGNvbW1vbl9uYW1lLAotICAgICAgICAgICAg
ICAgICBjb3VudHJ5PU5vbmUsCi0gICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsCi0gICAgICAg
ICAgICAgICAgIGxvY2FsaXR5PU5vbmUsCi0gICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbj1O
b25lLAotICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fdW5pdD1Ob25lKToKLSAgICBhcmdz
ID0gWygiY291bnRyeSIsICJDIiksCi0gICAgICAgICAgICAoInN0YXRlIiwgIlNUIiksCi0gICAg
ICAgICAgICAoImxvY2FsaXR5IiwgIkwiKSwKLSAgICAgICAgICAgICgib3JnYW5pemF0aW9uIiwg
Ik8iKSwKLSAgICAgICAgICAgICgib3JnYW5pemF0aW9uX3VuaXQiLCAiT1UiKSwKLSAgICAgICAg
ICAgICgiY29tbW9uX25hbWUiLCAiQ04iKV0KLQotICAgIHJ2ID0gW10KLQotICAgIGZvciB2YXIs
IGtleSBpbiBhcmdzOgotICAgICAgICB2YWx1ZSA9IGxvY2FscygpW3Zhcl0KLSAgICAgICAgaWYg
dmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBydi5hcHBlbmQoIi8lcz0lcyIgJSAoa2V5
LCB2YWx1ZS5yZXBsYWNlKCIvIiwgIlxcLyIpKSkKLQotICAgIHJldHVybiAiIi5qb2luKHJ2KQot
Ci1kZWYgbWFrZV9hbHRfbmFtZXMoaG9zdHMpOgotICAgIHJ2ID0gW10KLSAgICBmb3IgbmFtZSBp
biBob3N0czoKLSAgICAgICAgcnYuYXBwZW5kKCJETlM6JXMiICUgbmFtZSkKLSAgICByZXR1cm4g
IiwiLmpvaW4ocnYpCi0KLWRlZiBnZXRfY29uZmlnKHJvb3RfZGlyLCBob3N0cywgZHVyYXRpb249
MzApOgotICAgIGlmIGhvc3RzIGlzIE5vbmU6Ci0gICAgICAgIHNhbl9saW5lID0gIiIKLSAgICBl
bHNlOgotICAgICAgICBzYW5fbGluZSA9ICJzdWJqZWN0QWx0TmFtZSA9ICVzIiAlIG1ha2VfYWx0
X25hbWVzKGhvc3RzKQotCi0gICAgaWYgb3MucGF0aC5zZXAgPT0gIlxcIjoKLSAgICAgICAgIyBU
aGlzIHNlZW1zIHRvIGJlIG5lZWRlZCBmb3IgdGhlIFNoaW5pbmcgTGlnaHQgT3BlblNTTCBvbgot
ICAgICAgICAjIFdpbmRvd3MsIGF0IGxlYXN0LgotICAgICAgICByb290X2RpciA9IHJvb3RfZGly
LnJlcGxhY2UoIlxcIiwgIlxcXFwiKQotCi0gICAgcnYgPSAiIiJbIGNhIF0KLWRlZmF1bHRfY2Eg
PSBDQV9kZWZhdWx0Ci0KLVsgQ0FfZGVmYXVsdCBdCi1kaXIgPSAlKHJvb3RfZGlyKXMKLWNlcnRz
ID0gJGRpcgotbmV3X2NlcnRzX2RpciA9ICRjZXJ0cwotY3JsX2RpciA9ICRkaXIlKHNlcClzY3Js
Ci1kYXRhYmFzZSA9ICRkaXIlKHNlcClzaW5kZXgudHh0Ci1wcml2YXRlX2tleSA9ICRkaXIlKHNl
cClzY2FrZXkucGVtCi1jZXJ0aWZpY2F0ZSA9ICRkaXIlKHNlcClzY2FjZXJ0LnBlbQotc2VyaWFs
ID0gJGRpciUoc2VwKXNzZXJpYWwKLWNybGRpciA9ICRkaXIlKHNlcClzY3JsCi1jcmxudW1iZXIg
PSAkZGlyJShzZXApc2NybG51bWJlcgotY3JsID0gJGNybGRpciUoc2VwKXNjcmwucGVtCi1SQU5E
RklMRSA9ICRkaXIlKHNlcClzcHJpdmF0ZSUoc2VwKXMucmFuZAoteDUwOV9leHRlbnNpb25zID0g
dXNyX2NlcnQKLW5hbWVfb3B0ICAgICAgICA9IGNhX2RlZmF1bHQKLWNlcnRfb3B0ICAgICAgICA9
IGNhX2RlZmF1bHQKLWRlZmF1bHRfZGF5cyA9ICUoZHVyYXRpb24pZAotZGVmYXVsdF9jcmxfZGF5
cyA9ICUoZHVyYXRpb24pZAotZGVmYXVsdF9tZCA9IHNoYTI1NgotcHJlc2VydmUgPSBubwotcG9s
aWN5ID0gcG9saWN5X2FueXRoaW5nCi1jb3B5X2V4dGVuc2lvbnMgPSBjb3B5Ci0KLVsgcG9saWN5
X2FueXRoaW5nIF0KLWNvdW50cnlOYW1lID0gb3B0aW9uYWwKLXN0YXRlT3JQcm92aW5jZU5hbWUg
PSBvcHRpb25hbAotbG9jYWxpdHlOYW1lID0gb3B0aW9uYWwKLW9yZ2FuaXphdGlvbk5hbWUgPSBv
cHRpb25hbAotb3JnYW5pemF0aW9uYWxVbml0TmFtZSA9IG9wdGlvbmFsCi1jb21tb25OYW1lID0g
c3VwcGxpZWQKLWVtYWlsQWRkcmVzcyA9IG9wdGlvbmFsCi0KLVsgcmVxIF0KLWRlZmF1bHRfYml0
cyA9IDIwNDgKLWRlZmF1bHRfa2V5ZmlsZSAgPSBwcml2a2V5LnBlbQotZGlzdGluZ3Vpc2hlZF9u
YW1lID0gcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZQotYXR0cmlidXRlcyA9IHJlcV9hdHRyaWJ1dGVz
Ci14NTA5X2V4dGVuc2lvbnMgPSB2M19jYQotCi0jIFBhc3N3b3JkcyBmb3IgcHJpdmF0ZSBrZXlz
IGlmIG5vdCBwcmVzZW50IHRoZXkgd2lsbCBiZSBwcm9tcHRlZCBmb3IKLSMgaW5wdXRfcGFzc3dv
cmQgPSBzZWNyZXQKLSMgb3V0cHV0X3Bhc3N3b3JkID0gc2VjcmV0Ci1zdHJpbmdfbWFzayA9IHV0
Zjhvbmx5Ci1yZXFfZXh0ZW5zaW9ucyA9IHYzX3JlcQotCi1bIHJlcV9kaXN0aW5ndWlzaGVkX25h
bWUgXQotY291bnRyeU5hbWUgPSBDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpCi1jb3VudHJ5
TmFtZV9kZWZhdWx0ID0gQVUKLWNvdW50cnlOYW1lX21pbiA9IDIKLWNvdW50cnlOYW1lX21heCA9
IDIKLXN0YXRlT3JQcm92aW5jZU5hbWUgPSBTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxsIG5h
bWUpCi1zdGF0ZU9yUHJvdmluY2VOYW1lX2RlZmF1bHQgPQotbG9jYWxpdHlOYW1lID0gTG9jYWxp
dHkgTmFtZSAoZWcsIGNpdHkpCi0wLm9yZ2FuaXphdGlvbk5hbWUgPSBPcmdhbml6YXRpb24gTmFt
ZQotMC5vcmdhbml6YXRpb25OYW1lX2RlZmF1bHQgPSBXZWIgUGxhdGZvcm0gVGVzdHMKLW9yZ2Fu
aXphdGlvbmFsVW5pdE5hbWUgPSBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9u
KQotI29yZ2FuaXphdGlvbmFsVW5pdE5hbWVfZGVmYXVsdCA9Ci1jb21tb25OYW1lID0gQ29tbW9u
IE5hbWUgKGUuZy4gc2VydmVyIEZRRE4gb3IgWU9VUiBuYW1lKQotY29tbW9uTmFtZV9tYXggPSA2
NAotZW1haWxBZGRyZXNzID0gRW1haWwgQWRkcmVzcwotZW1haWxBZGRyZXNzX21heCA9IDY0Ci0K
LVsgcmVxX2F0dHJpYnV0ZXMgXQotCi1bIHVzcl9jZXJ0IF0KLWJhc2ljQ29uc3RyYWludHM9Q0E6
ZmFsc2UKLXN1YmplY3RLZXlJZGVudGlmaWVyPWhhc2gKLWF1dGhvcml0eUtleUlkZW50aWZpZXI9
a2V5aWQsaXNzdWVyCi0KLVsgdjNfcmVxIF0KLWJhc2ljQ29uc3RyYWludHMgPSBDQTpGQUxTRQot
a2V5VXNhZ2UgPSBub25SZXB1ZGlhdGlvbiwgZGlnaXRhbFNpZ25hdHVyZSwga2V5RW5jaXBoZXJt
ZW50Ci1leHRlbmRlZEtleVVzYWdlID0gc2VydmVyQXV0aAotJShzYW5fbGluZSlzCi0KLVsgdjNf
Y2EgXQotYmFzaWNDb25zdHJhaW50cyA9IENBOnRydWUKLXN1YmplY3RLZXlJZGVudGlmaWVyPWhh
c2gKLWF1dGhvcml0eUtleUlkZW50aWZpZXI9a2V5aWQ6YWx3YXlzLGlzc3VlcjphbHdheXMKLWtl
eVVzYWdlID0ga2V5Q2VydFNpZ24KLSIiIiAlIHsicm9vdF9kaXIiOiByb290X2RpciwKLSAgICAg
ICAic2FuX2xpbmUiOiBzYW5fbGluZSwKLSAgICAgICAiZHVyYXRpb24iOiBkdXJhdGlvbiwKLSAg
ICAgICAic2VwIjogb3MucGF0aC5zZXAucmVwbGFjZSgiXFwiLCAiXFxcXCIpfQotCi0gICAgcmV0
dXJuIHJ2Ci0KLWNsYXNzIE9wZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgotICAgIHNzbF9lbmFi
bGVkID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgb3BlbnNzbF9iaW5h
cnk9Im9wZW5zc2wiLCBiYXNlX3BhdGg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9
IndlYi1wbGF0Zm9ybS10ZXN0cyIsIGZvcmNlX3JlZ2VuZXJhdGU9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgIGR1cmF0aW9uPTMwLCBiYXNlX2NvbmZfcGF0aD1Ob25lKToKLSAgICAgICAgIiIiU1NM
IGVudmlyb25tZW50IHRoYXQgY3JlYXRlcyBhIGxvY2FsIENBIGFuZCBob3N0IGNlcnRpZmljYXRl
IHVzaW5nIE9wZW5TU0wuCi0KLSAgICAgICAgQnkgZGVmYXVsdCB0aGlzIHdpbGwgbG9vayBpbiBi
YXNlX3BhdGggZm9yIGV4aXN0aW5nIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBzdGlsbAotICAgICAg
ICB2YWxpZCBhbmQgb25seSBjcmVhdGUgbmV3IGNlcnRpZmljYXRlcyBpZiB0aGVyZSBhcmVuJ3Qg
YW55LiBUaGlzIGJlaGF2aW91ciBjYW4KLSAgICAgICAgYmUgYWRqdXN0ZWQgdXNpbmcgdGhlIGZv
cmNlX3JlZ2VuZXJhdGUgb3B0aW9uLgotCi0gICAgICAgIDpwYXJhbSBsb2dnZXI6IGEgc3RkbGli
IGxvZ2dpbmcgY29tcGF0aWJsZSBsb2dnZXIgb3IgbW96bG9nIHN0cnVjdHVyZWQgbG9nZ2VyCi0g
ICAgICAgIDpwYXJhbSBvcGVuc3NsX2JpbmFyeTogUGF0aCB0byB0aGUgT3BlblNTTCBiaW5hcnkK
LSAgICAgICAgOnBhcmFtIGJhc2VfcGF0aDogUGF0aCBpbiB3aGljaCBjZXJ0aWZpY2F0ZXMgd2ls
bCBiZSBzdG9yZWQuIElmIE5vbmUsIGEgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQgYW5kIHJlbW92ZWQgd2hlbiB0aGUgc2VydmVyIHNo
dXRzIGRvd24KLSAgICAgICAgOnBhcmFtIHBhc3N3b3JkOiBQYXNzd29yZCB0byB1c2UKLSAgICAg
ICAgOnBhcmFtIGZvcmNlX3JlZ2VuZXJhdGU6IEFsd2F5cyBjcmVhdGUgYSBuZXcgY2VydGlmaWNh
dGUgZXZlbiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgotCi0gICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gRmFsc2UKLSAgICAg
ICAgaWYgYmFzZV9wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBiYXNlX3BhdGggPSB0ZW1wZmls
ZS5ta2R0ZW1wKCkKLSAgICAgICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gVHJ1ZQotCi0gICAgICAg
IHNlbGYuYmFzZV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKGJhc2VfcGF0aCkKLSAgICAgICAgc2Vs
Zi5wYXNzd29yZCA9IHBhc3N3b3JkCi0gICAgICAgIHNlbGYuZm9yY2VfcmVnZW5lcmF0ZSA9IGZv
cmNlX3JlZ2VuZXJhdGUKLSAgICAgICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0gICAgICAg
IHNlbGYuYmFzZV9jb25mX3BhdGggPSBiYXNlX2NvbmZfcGF0aAotCi0gICAgICAgIHNlbGYucGF0
aCA9IE5vbmUKLSAgICAgICAgc2VsZi5iaW5hcnkgPSBvcGVuc3NsX2JpbmFyeQotICAgICAgICBz
ZWxmLm9wZW5zc2wgPSBOb25lCi0KLSAgICAgICAgc2VsZi5fY2FfY2VydF9wYXRoID0gTm9uZQot
ICAgICAgICBzZWxmLl9jYV9rZXlfcGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5ob3N0X2NlcnRp
ZmljYXRlcyA9IHt9Ci0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBpZiBub3Qg
b3MucGF0aC5leGlzdHMoc2VsZi5iYXNlX3BhdGgpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMo
c2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAgcGF0aCA9IGZ1bmN0b29scy5wYXJ0aWFsKG9zLnBh
dGguam9pbiwgc2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAgd2l0aCBvcGVuKHBhdGgoImluZGV4
LnR4dCIpLCAidyIpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICB3aXRoIG9wZW4ocGF0aCgi
c2VyaWFsIiksICJ3IikgYXMgZjoKLSAgICAgICAgICAgIHNlcmlhbCA9ICIleCIgJSByYW5kb20u
cmFuZGludCgwLCAxMDAwMDAwKQotICAgICAgICAgICAgaWYgbGVuKHNlcmlhbCkgJSAyOgotICAg
ICAgICAgICAgICAgIHNlcmlhbCA9ICIwIiArIHNlcmlhbAotICAgICAgICAgICAgZi53cml0ZShz
ZXJpYWwpCi0KLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgICAgIHJldHVybiBzZWxm
Ci0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYg
c2VsZi50ZW1wb3Jhcnk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuYmFzZV9wYXRo
KQotCi0gICAgZGVmIF9jb25maWdfb3BlbnNzbChzZWxmLCBob3N0cyk6Ci0gICAgICAgIGNvbmZf
cGF0aCA9IHNlbGYucGF0aCgib3BlbnNzbC5jZmciKQotICAgICAgICByZXR1cm4gT3BlblNTTChz
ZWxmLmxvZ2dlciwgc2VsZi5iaW5hcnksIHNlbGYuYmFzZV9wYXRoLCBjb25mX3BhdGgsIGhvc3Rz
LAotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1cmF0aW9uLCBzZWxmLmJhc2VfY29uZl9w
YXRoKQotCi0gICAgZGVmIGNhX2NlcnRfcGF0aChzZWxmKToKLSAgICAgICAgIiIiR2V0IHRoZSBw
YXRoIHRvIHRoZSBDQSBjZXJ0aWZpY2F0ZSBmaWxlLCBnZW5lcmF0aW5nIGEKLSAgICAgICAgbmV3
IG9uZSBpZiBuZWVkZWQiIiIKLSAgICAgICAgaWYgc2VsZi5fY2FfY2VydF9wYXRoIGlzIE5vbmUg
YW5kIG5vdCBzZWxmLmZvcmNlX3JlZ2VuZXJhdGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2FkX2Nh
X2NlcnQoKQotICAgICAgICBpZiBzZWxmLl9jYV9jZXJ0X3BhdGggaXMgTm9uZToKLSAgICAgICAg
ICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhX2NlcnRfcGF0
aAotCi0gICAgZGVmIF9sb2FkX2NhX2NlcnQoc2VsZik6Ci0gICAgICAgIGtleV9wYXRoID0gc2Vs
Zi5wYXRoKCJjYWtleS5wZW0iKQotICAgICAgICBjZXJ0X3BhdGggPSBzZWxmLnBhdGgoImNhY2Vy
dC5wZW0iKQotCi0gICAgICAgIGlmIHNlbGYuY2hlY2tfa2V5X2NlcnQoa2V5X3BhdGgsIGNlcnRf
cGF0aCwgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJVc2luZyBleGlzdGlu
ZyBDQSBjZXJ0IikKLSAgICAgICAgICAgIHNlbGYuX2NhX2tleV9wYXRoLCBzZWxmLl9jYV9jZXJ0
X3BhdGggPSBrZXlfcGF0aCwgY2VydF9wYXRoCi0KLSAgICBkZWYgY2hlY2tfa2V5X2NlcnQoc2Vs
Ziwga2V5X3BhdGgsIGNlcnRfcGF0aCwgaG9zdHMpOgotICAgICAgICAiIiJDaGVjayB0aGF0IGEg
a2V5IGFuZCBjZXJ0IGZpbGUgZXhpc3QgYW5kIGFyZSB2YWxpZCIiIgotICAgICAgICBpZiBub3Qg
b3MucGF0aC5leGlzdHMoa2V5X3BhdGgpIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhjZXJ0X3BhdGgp
OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgd2l0aCBzZWxmLl9jb25maWdf
b3BlbnNzbChob3N0cykgYXMgb3BlbnNzbDoKLSAgICAgICAgICAgIGVuZF9kYXRlX3N0ciA9IG9w
ZW5zc2woIng1MDkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vb3V0
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lbmRkYXRlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1pbiIsIGNlcnRfcGF0aCkuc3BsaXQoIj0i
LCAxKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAjIE5vdCBzdXJlIGlmIHRoaXMgd29ya3MgaW4g
b3RoZXIgbG9jYWxlcwotICAgICAgICAgICAgZW5kX2RhdGUgPSBkYXRldGltZS5zdHJwdGltZShl
bmRfZGF0ZV9zdHIsICIlYiAlZCAlSDolTTolUyAlWSAlWiIpCi0gICAgICAgICAgICB0aW1lX2J1
ZmZlciA9IHRpbWVkZWx0YSgqKkNFUlRfRVhQSVJZX0JVRkZFUikKLSAgICAgICAgICAgICMgQmVj
YXVzZSBgc3RycHRpbWVgIGRvZXMgbm90IGFjY291bnQgZm9yIHRpbWUgem9uZSBvZmZzZXRzLCBp
dCBpcwotICAgICAgICAgICAgIyBhbHdheXMgaW4gdGVybXMgb2YgVVRDLCBzbyB0aGUgY3VycmVu
dCB0aW1lIHNob3VsZCBiZSBjYWxjdWxhdGVkCi0gICAgICAgICAgICAjIGFjY29yZGluZ2x5Lgot
ICAgICAgICAgICAgaWYgZW5kX2RhdGUgPCBkYXRldGltZS51dGNub3coKSArIHRpbWVfYnVmZmVy
OgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICNUT0RPOiBjaGVjayB0
aGUga2V5IGFjdHVhbGx5IHNpZ25lZCB0aGUgY2VydC4KLSAgICAgICAgcmV0dXJuIFRydWUKLQot
ICAgIGRlZiBfZ2VuZXJhdGVfY2Eoc2VsZik6Ci0gICAgICAgIHBhdGggPSBzZWxmLnBhdGgKLSAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2VuZXJhdGluZyBuZXcgQ0EgaW4gJXMiICUgc2VsZi5i
YXNlX3BhdGgpCi0KLSAgICAgICAga2V5X3BhdGggPSBwYXRoKCJjYWtleS5wZW0iKQotICAgICAg
ICByZXFfcGF0aCA9IHBhdGgoImNhcmVxLnBlbSIpCi0gICAgICAgIGNlcnRfcGF0aCA9IHBhdGgo
ImNhY2VydC5wZW0iKQotCi0gICAgICAgIHdpdGggc2VsZi5fY29uZmlnX29wZW5zc2woTm9uZSkg
YXMgb3BlbnNzbDoKLSAgICAgICAgICAgIG9wZW5zc2woInJlcSIsCi0gICAgICAgICAgICAgICAg
ICAgICItYmF0Y2giLAotICAgICAgICAgICAgICAgICAgICAiLW5ldyIsCi0gICAgICAgICAgICAg
ICAgICAgICItbmV3a2V5IiwgInJzYToyMDQ4IiwKLSAgICAgICAgICAgICAgICAgICAgIi1rZXlv
dXQiLCBrZXlfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgIi1vdXQiLCByZXFfcGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgIi1zdWJqIiwgbWFrZV9zdWJqZWN0KCJ3ZWItcGxhdGZvcm0tdGVz
dHMiKSwKLSAgICAgICAgICAgICAgICAgICAgIi1wYXNzb3V0IiwgInBhc3M6JXMiICUgc2VsZi5w
YXNzd29yZCkKLQotICAgICAgICAgICAgb3BlbnNzbCgiY2EiLAotICAgICAgICAgICAgICAgICAg
ICAiLWJhdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgIi1jcmVhdGVfc2VyaWFsIiwKLSAgICAg
ICAgICAgICAgICAgICAgIi1rZXlmaWxlIiwga2V5X3BhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICItcGFzc2luIiwgInBhc3M6JXMiICUgc2VsZi5wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAg
ICAgIi1zZWxmc2lnbiIsCi0gICAgICAgICAgICAgICAgICAgICItZXh0ZW5zaW9ucyIsICJ2M19j
YSIsCi0gICAgICAgICAgICAgICAgICAgICItaW4iLCByZXFfcGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgIi1vdXQiLCBjZXJ0X3BhdGgpCi0KLSAgICAgICAgb3MudW5saW5rKHJlcV9wYXRoKQot
Ci0gICAgICAgIHNlbGYuX2NhX2tleV9wYXRoLCBzZWxmLl9jYV9jZXJ0X3BhdGggPSBrZXlfcGF0
aCwgY2VydF9wYXRoCi0KLSAgICBkZWYgaG9zdF9jZXJ0X3BhdGgoc2VsZiwgaG9zdHMpOgotICAg
ICAgICAiIiJHZXQgYSB0dXBsZSBvZiAocHJpdmF0ZSBrZXkgcGF0aCwgY2VydGlmaWNhdGUgcGF0
aCkgZm9yIGEgaG9zdCwKLSAgICAgICAgZ2VuZXJhdGluZyBuZXcgb25lcyBpZiBuZWNlc3Nhcnku
Ci0KLSAgICAgICAgaG9zdHMgbXVzdCBiZSBhIGxpc3Qgb2YgYWxsIGhvc3RzIHRvIGFwcGVhciBv
biB0aGUgY2VydGlmaWNhdGUsIHdpdGgKLSAgICAgICAgdGhlIHByaW1hcnkgaG9zdG5hbWUgZmly
c3QuIiIiCi0gICAgICAgIGhvc3RzID0gdHVwbGUoaG9zdHMpCi0gICAgICAgIGlmIGhvc3RzIG5v
dCBpbiBzZWxmLmhvc3RfY2VydGlmaWNhdGVzOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuZm9y
Y2VfcmVnZW5lcmF0ZToKLSAgICAgICAgICAgICAgICBrZXlfY2VydCA9IHNlbGYuX2xvYWRfaG9z
dF9jZXJ0KGhvc3RzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrZXlfY2Vy
dCA9IE5vbmUKLSAgICAgICAgICAgIGlmIGtleV9jZXJ0IGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAga2V5LCBjZXJ0ID0gc2VsZi5fZ2VuZXJhdGVfaG9zdF9jZXJ0KGhvc3RzKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBrZXksIGNlcnQgPSBrZXlfY2VydAotICAgICAgICAg
ICAgc2VsZi5ob3N0X2NlcnRpZmljYXRlc1tob3N0c10gPSBrZXksIGNlcnQKLQotICAgICAgICBy
ZXR1cm4gc2VsZi5ob3N0X2NlcnRpZmljYXRlc1tob3N0c10KLQotICAgIGRlZiBfbG9hZF9ob3N0
X2NlcnQoc2VsZiwgaG9zdHMpOgotICAgICAgICBob3N0ID0gaG9zdHNbMF0KLSAgICAgICAga2V5
X3BhdGggPSBzZWxmLnBhdGgoIiVzLmtleSIgJSBob3N0KQotICAgICAgICBjZXJ0X3BhdGggPSBz
ZWxmLnBhdGgoIiVzLnBlbSIgJSBob3N0KQotCi0gICAgICAgICMgVE9ETzogY2hlY2sgdGhhdCB0
aGlzIGNlcnQgd2FzIHNpZ25lZCBieSB0aGUgQ0EgY2VydAotICAgICAgICBpZiBzZWxmLmNoZWNr
X2tleV9jZXJ0KGtleV9wYXRoLCBjZXJ0X3BhdGgsIGhvc3RzKToKLSAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmluZm8oIlVzaW5nIGV4aXN0aW5nIGhvc3QgY2VydCIpCi0gICAgICAgICAgICByZXR1
cm4ga2V5X3BhdGgsIGNlcnRfcGF0aAotCi0gICAgZGVmIF9nZW5lcmF0ZV9ob3N0X2NlcnQoc2Vs
ZiwgaG9zdHMpOgotICAgICAgICBob3N0ID0gaG9zdHNbMF0KLSAgICAgICAgaWYgc2VsZi5fY2Ff
a2V5X3BhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkKLSAgICAg
ICAgY2Ffa2V5X3BhdGggPSBzZWxmLl9jYV9rZXlfcGF0aAotCi0gICAgICAgIGFzc2VydCBvcy5w
YXRoLmV4aXN0cyhjYV9rZXlfcGF0aCkKLQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0KLSAg
ICAgICAgcmVxX3BhdGggPSBwYXRoKCJ3cHQucmVxIikKLSAgICAgICAgY2VydF9wYXRoID0gcGF0
aCgiJXMucGVtIiAlIGhvc3QpCi0gICAgICAgIGtleV9wYXRoID0gcGF0aCgiJXMua2V5IiAlIGhv
c3QpCi0KLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2VuZXJhdGluZyBuZXcgaG9zdCBjZXJ0
IikKLQotICAgICAgICB3aXRoIHNlbGYuX2NvbmZpZ19vcGVuc3NsKGhvc3RzKSBhcyBvcGVuc3Ns
OgotICAgICAgICAgICAgb3BlbnNzbCgicmVxIiwKLSAgICAgICAgICAgICAgICAgICAgIi1iYXRj
aCIsCi0gICAgICAgICAgICAgICAgICAgICItbmV3a2V5IiwgInJzYToyMDQ4IiwKLSAgICAgICAg
ICAgICAgICAgICAgIi1rZXlvdXQiLCBrZXlfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgIi1p
biIsIGNhX2tleV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLW5vZGVzIiwKLSAgICAgICAg
ICAgICAgICAgICAgIi1vdXQiLCByZXFfcGF0aCkKLQotICAgICAgICAgICAgb3BlbnNzbCgiY2Ei
LAotICAgICAgICAgICAgICAgICAgICAiLWJhdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgIi1p
biIsIHJlcV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLXBhc3NpbiIsICJwYXNzOiVzIiAl
IHNlbGYucGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICItc3ViaiIsIG1ha2Vfc3ViamVj
dChob3N0KSwKLSAgICAgICAgICAgICAgICAgICAgIi1vdXQiLCBjZXJ0X3BhdGgpCi0KLSAgICAg
ICAgb3MudW5saW5rKHJlcV9wYXRoKQotCi0gICAgICAgIHJldHVybiBrZXlfcGF0aCwgY2VydF9w
YXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvcHJlZ2VuZXJhdGVkLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzQ4N2RmM2FkZDAuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Nz
bHV0aWxzL3ByZWdlbmVyYXRlZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWNs
YXNzIFByZWdlbmVyYXRlZFNTTEVudmlyb25tZW50KG9iamVjdCk6Ci0gICAgIiIiU1NMIGVudmly
b25tZW50IHRvIHVzZSB3aXRoIGV4aXN0aW5nIGtleS9jZXJ0aWZpY2F0ZSBmaWxlcwotICAgIGUu
Zy4gd2hlbiBydW5uaW5nIG9uIGEgc2VydmVyIHdpdGggYSBwdWJsaWMgZG9tYWluIG5hbWUKLSAg
ICAiIiIKLSAgICBzc2xfZW5hYmxlZCA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2dnZXIsIGhvc3Rfa2V5X3BhdGgsIGhvc3RfY2VydF9wYXRoLAotICAgICAgICAgICAgICAgICBj
YV9jZXJ0X3BhdGg9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2NhX2NlcnRfcGF0aCA9IGNhX2NlcnRf
cGF0aAotICAgICAgICBzZWxmLl9ob3N0X2tleV9wYXRoID0gaG9zdF9rZXlfcGF0aAotICAgICAg
ICBzZWxmLl9ob3N0X2NlcnRfcGF0aCA9IGhvc3RfY2VydF9wYXRoCi0KLSAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBob3N0X2NlcnRfcGF0
aChzZWxmLCBob3N0cyk6Ci0gICAgICAgICIiIlJldHVybiB0aGUga2V5IGFuZCBjZXJ0aWZpY2F0
ZSBwYXRocyBmb3IgdGhlIGhvc3QiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3Rfa2V5X3Bh
dGgsIHNlbGYuX2hvc3RfY2VydF9wYXRoCi0KLSAgICBkZWYgY2FfY2VydF9wYXRoKHNlbGYpOgot
ICAgICAgICAiIiJSZXR1cm4gdGhlIGNlcnRpZmljYXRlIHBhdGggb2YgdGhlIENBIHRoYXQgc2ln
bmVkIHRoZQotICAgICAgICBob3N0IGNlcnRpZmljYXRlcywgb3IgTm9uZSBpZiB0aGF0IGlzbid0
IGtub3duIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9jYV9jZXJ0X3BhdGgKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRp
bHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4NmMwMTc5Zjg3NGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3Ns
dXRpbHMvYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvcHJlZ2VuZXJhdGVkLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvLmFwcHZleW9yLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uYXBwdmV5b3Iu
eW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDBlZGVlMTg3YWMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5hcHB2ZXlvci55bWwKQEAgLTAsMCAr
MSwxMiBAQAorZW52aXJvbm1lbnQ6CisgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBjcDM0LSoK
KyAgQ0lCV19URVNUX0NPTU1BTkQ6IHB5dGhvbiAtbSB1bml0dGVzdCBkaXNjb3ZlciAtcyB7cHJv
amVjdH0vdGVzdHMKK2luc3RhbGw6CisgIC0gY21kOiBDOlxQeXRob24zNi14NjRccHl0aG9uLmV4
ZSAtbSBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKK2J1aWxkX3NjcmlwdDoKKyAgLSBjbWQ6IEM6
XFB5dGhvbjM2LXg2NFxweXRob24uZXhlIC1tIGNpYnVpbGR3aGVlbCAtLW91dHB1dC1kaXIgd2hl
ZWxob3VzZQorICAtIHBzOiA+LQorICAgICAgaWYgKCRlbnY6QVBQVkVZT1JfUkVQT19UQUcgLWVx
ICJ0cnVlIikgeworICAgICAgICBJbnZva2UtRXhwcmVzc2lvbiAicHl0aG9uIC1tIHBpcCBpbnN0
YWxsIHR3aW5lIgorICAgICAgICBJbnZva2UtRXhwcmVzc2lvbiAicHl0aG9uIC1tIHR3aW5lIHVw
bG9hZCAtLXNraXAtZXhpc3Rpbmcgd2hlZWxob3VzZS8qLndobCIKKyAgICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy8uZ2l0YXR0cmlidXRlcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0YXR0cmli
dXRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBiNTAzMGMwZDI5
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0YXR0cmlidXRlcwpAQCAtMCww
ICsxIEBACisqLmJpbiAgYmluYXJ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93
b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3Mv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYzBhZTk5YjIw
Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0cy55bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xN2FmMDBlNzI3ZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDEwIEBACisqLmVnZy1pbmZvCisq
LnB5YworKi5zbworLmNvdmVyYWdlCisuZWdncworLm15cHlfY2FjaGUKKy52c2NvZGUKKy9idWls
ZAorL2Rpc3QKKy9kb2NzL19idWlsZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDgwZTc5OTkwNDNkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9k
b2NzL2FzeW5jaW8ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvY29uZi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9kb2NzL2Rlc2lnbi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZG9jcy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL3F1aWMucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
aHRkb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2ODIwZGYwZGY4Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRv
Y3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZiYjlkMzY0ZDdjLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90
ZW1wbGF0ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYmE2ZDEyNGNiYi4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9SRUFETUUucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZG9x
X2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kb3Ffc2VydmVyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9o
dHRwM19zZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cHhfY2xpZW50LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
c2lkdWNrX2NsaWVudC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZTIyZTc0YmQyMS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRz
L2RvYy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNiYTlhOWQ0MDQ2My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvZmV0Y2gtdmVuZG9yCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NjcmlwdHMvZmV0Y2gtdmVuZG9yLmpzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhi
ODM0NWUwY2U4Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9h
c3luY2lvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5
bmNpby9wcm90b2NvbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3NlcnZl
ci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5CmluZGV4IGE2ODM0Yjgy
ODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
aDAvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9f
LnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8g
c2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzNjFlYTQwNTUxLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19f
aW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rpb24ucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2
OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5p
dF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQpAQCAt
MSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBiMzYzZTliNjA4MC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9oMy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIw
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
My9leGNlcHRpb25zLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19faW5pdF9fLnB5
CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGI4YzI2ZmE0
YzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL3F1aWMvY29uZmlndXJhdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9ldmVudHMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9sb2dnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
cXVpYy9wYWNrZXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVp
bGRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvcXVpYy9yZXRyeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3N0
cmVhbS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiZDRiMGNlZTQ2NjEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
NSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5jCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL19idWZmZXIucHlpCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYwot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hYm91dC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9idWZmZXIucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcHkudHlwZWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvdGxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5
YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVs
ZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTBmMTNlMWIyYzMuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSw1NyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9jbGllbnQuYmluCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL2luaXRpYWxfc2VydmVyLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0
X2hlYWRlci5iaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnQucGVtCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3NzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nz
bF9rZXkucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfYnVmZmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X2NyeXB0by5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X2gwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9sb2dnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXQucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X3Jhbmdlc2V0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3Zlcnku
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3N0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG8uYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBu
LmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfc25pLmJpbgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnMuYmluCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG4uYmluCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vhcmx5X2Rh
dGEuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2Vy
dmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3V0aWxzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3RpYXRpb24uYmluCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNGVjOTVjOWExNi4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0b21pY3dyaXRlcy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvLmdpdGlnbm9yZQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJiMmQzMTI4NzUzZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzLy5naXRpZ25vcmUKQEAgLTAsMCArMSw5
IEBACisudG94CisqLnB5YworKi5weW8KK19fcHljYWNoZV9fCisqLmVnZy1pbmZvCitkb2NzL19i
dWlsZAorYnVpbGQKK2Rpc3QKKy5jYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMv
LnRyYXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy8udHJhdmlzLnltbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU5Nzc5MDE4YWQzMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXRvbWljd3JpdGVzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMzUgQEAKK3N1ZG86
IGZhbHNlCitvczogbGludXgKK2xhbmd1YWdlOiBweXRob24KKworbWF0cml4OgorICAgIGluY2x1
ZGU6CisgICAgICAgIC0gb3M6IG9zeAorICAgICAgICAgIGxhbmd1YWdlOiBnZW5lcmljCisgICAg
ICAgICAgZW52OiBUT1hFTlZfU1VGRklYPXRlc3QKKworcHl0aG9uOgorICAgIC0gIjIuNiIKKyAg
ICAtICIyLjciCisgICAgLSAicHlweSIKKyAgICAtICIzLjMiCisgICAgLSAiMy40IgorCitpbnN0
YWxsOgorICAgIC0gIyBUaGUgT1MgWCBWTSBkb2Vzbid0IGhhdmUgYW55IFB5dGhvbiBzdXBwb3J0
IGF0IGFsbAorICAgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RyYXZpcy1jaS90cmF2aXMt
Y2kvaXNzdWVzLzIzMTIKKyAgICAgIGlmIFsgIiRUUkFWSVNfT1NfTkFNRSIgPSAib3N4IiBdOyB0
aGVuCisgICAgICAgICAgYnJldyB1cGRhdGU7CisgICAgICAgICAgYnJldyBpbnN0YWxsIHB5dGhv
bjM7CisgICAgICAgICAgdmlydHVhbGVudiAtcCBweXRob24zICRIT01FL29zeC1weTM7CisgICAg
ICAgICAgLiAkSE9NRS9vc3gtcHkzL2Jpbi9hY3RpdmF0ZTsKKyAgICAgICAgICBleHBvcnQgVFJB
VklTX1BZVEhPTl9WRVJTSU9OPSIkKHB5dGhvbiAtLXZlcnNpb24gfCBjdXQgLWQgJyAnIC1mIDIg
fCBjdXQgLWQgLiAtZiAtMikiOworICAgICAgZmkKKyAgICAtIHBpcCBpbnN0YWxsIHRveAorCitz
Y3JpcHQ6CisgICAgLSBleHBvcnQgVE9YX1BZPSIkKGVjaG8gcHkkVFJBVklTX1BZVEhPTl9WRVJT
SU9OIHwgdHIgLWQgLiB8IHNlZCAtZSAncy9weXB5cHkvcHlweS8nKSIKKyAgICAtIHRveCAtZSAk
VE9YX1BZLXRlc3QKKyAgICAtIGlmIFsgIiRUUkFWSVNfUFlUSE9OX1ZFUlNJT04iID0gIjIuNyIg
XSB8fCBbICIkVFJBVklTX1BZVEhPTl9WRVJTSU9OIiA9ICIuMy41IiBdOyB0aGVuCisgICAgICAg
ICAgdG94IC1lICRUT1hfUFktc3R5bGVjaGVjazsKKyAgICAgIGZpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0b21pY3dyaXRlcy9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dy
aXRlcy9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdlMzc2MmFhNTZjNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVz
L2F0b21pY3dyaXRlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL2F0b21pY3dyaXRlcy9fX2luaXRfXy5weQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXRvbWljd3JpdGVzL2RvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZiY2NiYjJkNGRiZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVz
L2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0b21pY3dyaXRlcy9kb2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMv
ZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy9pbmRleC5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
b21pY3dyaXRlcy9kb2NzL21ha2UuYmF0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGEwZmMwNzMzNWUuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0b21pY3dyaXRlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL0NPTlRSSUJVVElORy5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0b21pY3dyaXRlcy9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvTUFOSUZFU1QuaW4KLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0b21pY3dyaXRlcy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL1JFQURNRS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0b21pY3dyaXRlcy9hcHB2ZXlvci55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9zZXR1
cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL3Rv
eC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDdhNzE4ZDg2NDcxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8uZ2l0aHVi
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9hdHRycy8uZ2l0aHViL0NPREVfT0ZfQ09ORFVDVC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzLy5naXRo
dWIvQ09OVFJJQlVUSU5HLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVN
UExBVEUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGlnbm9yZSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
LmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjODk1
ZWUxZGI3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGlnbm9yZQpAQCAtMCww
ICsxLDExIEBACisqLnB5YworKi5lZ2ctaW5mbworLmNhY2hlCisuY292ZXJhZ2UqCisuaHlwb3Ro
ZXNpcworLnB5dGVzdF9jYWNoZQorLnRveAorYnVpbGQKK2Rpc3QKK2RvY3MvX2J1aWxkLworaHRt
bGNvdgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8ucmVhZHRoZWRvY3MueW1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy8ucmVhZHRoZWRvY3MueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uYTRiNmY0MzEwNjZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8ucmVhZHRoZWRv
Y3MueW1sCkBAIC0wLDAgKzEsNiBAQAorLS0tCitweXRob246CisgIHZlcnNpb246IDMKKyAgcGlw
X2luc3RhbGw6IHRydWUKKyAgZXh0cmFfcmVxdWlyZW1lbnRzOgorICAgIC0gZG9jcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLnRyYXZpcy55bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43Yzk4YjIxYTYzN2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsNjkgQEAKK2Rp
c3Q6IHRydXN0eQorZ3JvdXA6IHRyYXZpc19sYXRlc3QKK3N1ZG86IGZhbHNlCitjYWNoZToKKyAg
ZGlyZWN0b3JpZXM6CisgICAgLSAkSE9NRS8uY2FjaGUvcGlwCisKK2xhbmd1YWdlOiBweXRob24K
KworCittYXRyaXg6CisgIGZhc3RfZmluaXNoOiB0cnVlCisKKyAgaW5jbHVkZToKKyAgICAtIHB5
dGhvbjogIjIuNyIKKyAgICAgIGVudjogVE9YRU5WPXB5MjcKKyAgICAtIHB5dGhvbjogIjMuNCIK
KyAgICAgIGVudjogVE9YRU5WPXB5MzQKKyAgICAtIHB5dGhvbjogIjMuNSIKKyAgICAgIGVudjog
VE9YRU5WPXB5MzUKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5WPXB5MzYK
KyAgICAtIHB5dGhvbjogInB5cHkiCisgICAgICBlbnY6IFRPWEVOVj1weXB5CisgICAgLSBweXRo
b246ICJweXB5MyIKKyAgICAgIGVudjogVE9YRU5WPXB5cHkzCisKKyAgICAjIFByZXZlbnQgYnJl
YWthZ2UgYnkgYSBuZXcgcmVsZWFzZXMKKyAgICAtIHB5dGhvbjogIjMuNi1kZXYiCisgICAgICBl
bnY6IFRPWEVOVj1weTM2CisgICAgLSBweXRob246ICIzLjctZGV2IgorICAgICAgZW52OiBUT1hF
TlY9cHkzNworCisgICAgIyBNZXRhCisgICAgLSBweXRob246ICIzLjYiCisgICAgICBlbnY6IFRP
WEVOVj1mbGFrZTgKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5WPW1hbmlm
ZXN0CisgICAgLSBweXRob246ICIzLjYiCisgICAgICBlbnY6IFRPWEVOVj1kb2NzCisgICAgLSBw
eXRob246ICIzLjYiCisgICAgICBlbnY6IFRPWEVOVj1yZWFkbWUKKyAgICAtIHB5dGhvbjogIjMu
NiIKKyAgICAgIGVudjogVE9YRU5WPWNoYW5nZWxvZworCisgIGFsbG93X2ZhaWx1cmVzOgorICAg
IC0gcHl0aG9uOiAiMy42LWRldiIKKyAgICAtIHB5dGhvbjogIjMuNy1kZXYiCisKKworaW5zdGFs
bDoKKyAgLSBwaXAgaW5zdGFsbCB0b3gKKworCitzY3JpcHQ6CisgIC0gdG94CisKKworYmVmb3Jl
X2luc3RhbGw6CisgIC0gcGlwIGluc3RhbGwgY29kZWNvdgorCisKK2FmdGVyX3N1Y2Nlc3M6Cisg
IC0gdG94IC1lIGNvdmVyYWdlLXJlcG9ydAorICAtIGNvZGVjb3YKKworCitub3RpZmljYXRpb25z
OgorICBlbWFpbDogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRz
L3Byb2R1Y3Rpb24udHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8uZ2l0aWdub3JlCnNpbWls
YXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3JlcXVpcmVtZW50cy9w
cm9kdWN0aW9uLnR4dApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8uZ2l0aWdub3Jl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy9jaGFuZ2Vsb2cuZC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDlmZTE2MDFkMjY0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFu
Z2Vsb2cuZC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMTc4LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L2NoYW5nZWxvZy5kLzI5MC5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMDAu
Y2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzExLmNoYW5nZS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL2NoYW5nZWxvZy5kLzMyMS5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cu
ZC8zMjIuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzIzLmNoYW5nZS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMyNi5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFu
Z2Vsb2cuZC8zMzEuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzMyLmNoYW5n
ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMzNC5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9jaGFuZ2Vsb2cuZC8zMzYuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzM5
LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzM0My5jaGFuZ2UucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNDkuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9n
LmQvMzU2LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzM2My5jaGFuZ2UucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNjkuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hh
bmdlbG9nLmQvMzcwLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzk1LmNoYW5n
ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kL3Rvd25jcmllcl90ZW1wbGF0ZS5yc3QKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy9kb2NzL19zdGF0aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk0YzAwMTQyMmJhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9f
c3RhdGljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy9kb2NzL19zdGF0aWMvYXR0cnNfbG9nby5wbmcKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L2RvY3MvX3N0YXRpYy9hdHRyc19sb2dvLnN2ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2Nz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjM0ZWM5YmU5NzIuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3Mv
YXBpLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9iYWNrd2FyZC1jb21wYXRpYmlsaXR5LnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvZG9jcy9jaGFuZ2Vsb2cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2NvbmYucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzL2RvY3MvY29udHJpYnV0aW5nLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9kb2N1dGls
cy5jb25mCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2V4YW1wbGVzLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9l
eHRlbmRpbmcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2dsb3NzYXJ5LnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
ZG9jcy9oYXNoaW5nLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9ob3ctZG9lcy1pdC13b3JrLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvZG9jcy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvaW5pdC5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzL2RvY3MvbGljZW5zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3Mvb3ZlcnZpZXcucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9kb2NzL3doeS5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0
dHIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQxMmQxMjI0ZjUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9zcmMvYXR0ci9fX2luaXRfXy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvc3JjL2F0dHIvX2NvbXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvX2Nv
bmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvX2Z1bmNzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9zcmMv
YXR0ci9fbWFrZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvY29udmVydGVycy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvc3JjL2F0dHIvZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvZmlsdGVy
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvdmFsaWRhdG9ycy5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvX19pbml0X18ucHkK
aW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
dGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy9fX2luaXRfXy5weQpAQCAt
MSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90
ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBjOGQ1
M2FmMGZlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVz
dHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3N0cmF0ZWdpZXMucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
dHJzL3Rlc3RzL3Rlc3RfYW5ub3RhdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfY29u
ZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X2NvbnZlcnRlcnMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L3Rlc3RzL3Rlc3RfZGFya19tYWdpYy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvdGVzdF9kdW5kZXJz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X2ZpbHRlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3Rz
L3Rlc3RfZnVuY3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfaW5pdF9zdWJjbGFzcy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvdGVzdHMvdGVzdF9tYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X3Ns
b3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X3ZhbGlkYXRvcnMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L3Rlc3RzL3V0aWxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9hdHRycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2NhYjkyMzYwNWNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvQVVU
SE9SUy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL0NIQU5HRUxPRy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL0xJQ0VOU0UK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0dHJzL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9SRUFETUUucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvcHlwcm9qZWN0LnRvbWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3RveC5pbmkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk2M2FjMDJhMTE3Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
Y2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWluZm8vUEtH
LUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
Y2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0
aWZpL2NlcnRpZmkuZWdnLWluZm8vbm90LXppcC1zYWZlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmku
ZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU3ZGRhYjNjZDQyLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS9fX2luaXRfXy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvY2VydGlmaS9jZXJ0aWZpL19fbWFpbl9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkv
Y2FjZXJ0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpL2NvcmUucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvY2VydGlmaS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRhMWZiZjc2YmMyLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9jZXJ0aWZpL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvTUFO
SUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvUkVBRE1FLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvY2VydGlmaS9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZW51bS9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9QS0ctSU5GTwppbmRleCA5ODky
N2M0ZDk5ZDkuLjYyMzE3MWUzOGY2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL1BLRy1JTkZPCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZW51bS9QS0ctSU5GTwpAQCAtMSw2ICsxLDYgQEAKIE1ldGFkYXRhLVZlcnNpb246
IDEuMQogTmFtZTogZW51bTM0Ci1WZXJzaW9uOiAxLjEuNgorVmVyc2lvbjogMS4xLjEwCiBTdW1t
YXJ5OiBQeXRob24gMy40IEVudW0gYmFja3BvcnRlZCB0byAzLjMsIDMuMiwgMy4xLCAyLjcsIDIu
NiwgMi41LCBhbmQgMi40CiBIb21lLXBhZ2U6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9zdG9uZWxl
YWYvZW51bTM0CiBBdXRob3I6IEV0aGFuIEZ1cm1hbgpAQCAtNTcsNiArNTcsNCBAQCBDbGFzc2lm
aWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi41CiBDbGFzc2lmaWVyOiBQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42CiBDbGFzc2lmaWVyOiBQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43CiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMy4zCi1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogMy40Ci1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy41CiBQcm92aWRlczogZW51bQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0v
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS9fX2luaXRfXy5weQppbmRleCBkNmZmYjNhNDBm
ZWIuLjUxZjNjZjI0NzA2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vX19pbml0X18ucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9lbnVtL2VudW0vX19pbml0X18ucHkKQEAgLTQsNyArNCw3IEBAIGltcG9ydCBz
eXMgYXMgX3N5cwogCiBfX2FsbF9fID0gWydFbnVtJywgJ0ludEVudW0nLCAndW5pcXVlJ10KIAot
dmVyc2lvbiA9IDEsIDEsIDYKK3ZlcnNpb24gPSAxLCAxLCAxMAogCiBweXZlciA9IGZsb2F0KCcl
cy4lcycgJSBfc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKQEAgLTE4Myw3ICsxODMsOCBAQCBjbGFz
cyBFbnVtTWV0YSh0eXBlKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRlbCBjbGFzc2Rp
Y3RbJ19vcmRlcl8nXQogICAgICAgICAgICAgaWYgcHl2ZXIgPCAzLjA6Ci0gICAgICAgICAgICAg
ICAgX29yZGVyXyA9IF9vcmRlcl8ucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQorICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoX29yZGVyXywgYmFzZXN0cmluZyk6CisgICAgICAgICAgICAg
ICAgICAgIF9vcmRlcl8gPSBfb3JkZXJfLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICAg
ICAgICAgICAgICBhbGlhc2VzID0gW25hbWUgZm9yIG5hbWUgaW4gbWVtYmVycyBpZiBuYW1lIG5v
dCBpbiBfb3JkZXJfXQogICAgICAgICAgICAgICAgIF9vcmRlcl8gKz0gYWxpYXNlcwogCkBAIC00
NjMsNyArNDY0LDcgQEAgY2xhc3MgRW51bU1ldGEodHlwZSk6CiAgICAgICAgICAgICBfb3JkZXJf
LmFwcGVuZChtZW1iZXJfbmFtZSkKICAgICAgICAgIyBvbmx5IHNldCBfb3JkZXJfIGluIGNsYXNz
ZGljdCBpZiBuYW1lL3ZhbHVlIHdhcyBub3QgZnJvbSBhIG1hcHBpbmcKICAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UoaXRlbSwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICBjbGFzc2RpY3RbJ19v
cmRlcl8nXSA9ICcgJy5qb2luKF9vcmRlcl8pCisgICAgICAgICAgICBjbGFzc2RpY3RbJ19vcmRl
cl8nXSA9IF9vcmRlcl8KICAgICAgICAgZW51bV9jbGFzcyA9IG1ldGFjbHMuX19uZXdfXyhtZXRh
Y2xzLCBjbGFzc19uYW1lLCBiYXNlcywgY2xhc3NkaWN0KQogCiAgICAgICAgICMgVE9ETzogcmVw
bGFjZSB0aGUgZnJhbWUgaGFjayBpZiBhIGJsZXNzZWQgd2F5IHRvIGtub3cgdGhlIGNhbGxpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy9lbnVtLnBkZiBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVt
L2RvYy9lbnVtLnBkZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMxMzgzYTQ5NWU4
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL2VudW0ucGRmCisrKyAvZGV2
L251bGwKQEAgLTEsNzM4ICswLDAgQEAKLSAgICAgICBlbnVtIC0tLSBzdXBwb3J0IGZvciBlbnVt
ZXJhdGlvbnMKLQotQW4gZW51bWVyYXRpb24gaXMgYSBzZXQgb2Ygc3ltYm9saWMgbmFtZXMgKG1l
bWJlcnMpIGJvdW5kIHRvIHVuaXF1ZSwgY29uc3RhbnQgdmFsdWVzLiBXaXRoaW4gYW4KLWVudW1l
cmF0aW9uLCB0aGUgbWVtYmVycyBjYW4gYmUgY29tcGFyZWQgYnkgaWRlbnRpdHksIGFuZCB0aGUg
ZW51bWVyYXRpb24gaXRzZWxmIGNhbiBiZSBpdGVyYXRlZCBvdmVyLgotCi1Nb2R1bGUgQ29udGVu
dHMKLQotVGhpcyBtb2R1bGUgZGVmaW5lcyB0d28gZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNh
biBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUgc2V0cyBvZiBuYW1lcyBhbmQKLXZhbHVlczogRW51
bSBhbmQgSW50RW51bS4gSXQgYWxzbyBkZWZpbmVzIG9uZSBkZWNvcmF0b3IsIHVuaXF1ZS4KLUVu
dW0KLUJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzLiBTZWUgc2Vj
dGlvbiBGdW5jdGlvbmFsIEFQSSBmb3IgYW4gYWx0ZXJuYXRlIGNvbnN0cnVjdGlvbgotc3ludGF4
LgotSW50RW51bQotQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMg
dGhhdCBhcmUgYWxzbyBzdWJjbGFzc2VzIG9mIGludC4KLXVuaXF1ZQotRW51bSBjbGFzcyBkZWNv
cmF0b3IgdGhhdCBlbnN1cmVzIG9ubHkgb25lIG5hbWUgaXMgYm91bmQgdG8gYW55IG9uZSB2YWx1
ZS4KLQotQ3JlYXRpbmcgYW4gRW51bQotCi1FbnVtZXJhdGlvbnMgYXJlIGNyZWF0ZWQgdXNpbmcg
dGhlIGNsYXNzIHN5bnRheCwgd2hpY2ggbWFrZXMgdGhlbSBlYXN5IHRvIHJlYWQgYW5kIHdyaXRl
LiBBbgotYWx0ZXJuYXRpdmUgY3JlYXRpb24gbWV0aG9kIGlzIGRlc2NyaWJlZCBpbiBGdW5jdGlv
bmFsIEFQSS4gVG8gZGVmaW5lIGFuIGVudW1lcmF0aW9uLCBzdWJjbGFzcyBFbnVtIGFzCi1mb2xs
b3dzOgotCi0+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtCi0KLT4+PiBjbGFzcyBDb2xvcihFbnVt
KToKLQotLi4uICAgIHJlZCA9IDEKLQotLi4uICAgIGdyZWVuID0gMgotCi0uLi4gICAgYmx1ZSA9
IDMKLQotTm90ZTogTm9tZW5jbGF0dXJlCi0KLSAgICAgICDigKIgVGhlIGNsYXNzIENvbG9yIGlz
IGFuIGVudW1lcmF0aW9uIChvciBlbnVtKQotCi0gICAgICAg4oCiIFRoZSBhdHRyaWJ1dGVzIENv
bG9yLnJlZCwgQ29sb3IuZ3JlZW4sIGV0Yy4sIGFyZSBlbnVtZXJhdGlvbiBtZW1iZXJzIChvciBl
bnVtCi0gICAgICAgIG1lbWJlcnMpLgotCi0gICAgICAg4oCiIFRoZSBlbnVtIG1lbWJlcnMgaGF2
ZSBuYW1lcyBhbmQgdmFsdWVzICh0aGUgbmFtZSBvZiBDb2xvci5yZWQgaXMgcmVkLCB0aGUgdmFs
dWUgb2YKLSAgICAgICAgQ29sb3IuYmx1ZSBpcyAzLCBldGMuKQotCi1Ob3RlOgotCi1FdmVuIHRo
b3VnaCB3ZSB1c2UgdGhlIGNsYXNzIHN5bnRheCB0byBjcmVhdGUgRW51bXMsIEVudW1zIGFyZSBu
b3Qgbm9ybWFsIFB5dGhvbiBjbGFzc2VzLiBTZWUKLUhvdyBhcmUgRW51bXMgZGlmZmVyZW50PyBm
b3IgbW9yZSBkZXRhaWxzLgotCi1FbnVtZXJhdGlvbiBtZW1iZXJzIGhhdmUgaHVtYW4gcmVhZGFi
bGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uczoKLQotPj4+IHByaW50KENvbG9yLnJlZCkKLUNvbG9y
LnJlZAotCi0uLi53aGlsZSB0aGVpciByZXByIGhhcyBtb3JlIGluZm9ybWF0aW9uOgotDD4+PiBw
cmludChyZXByKENvbG9yLnJlZCkpCi08Q29sb3IucmVkOiAxPgotCi1UaGUgdHlwZSBvZiBhbiBl
bnVtZXJhdGlvbiBtZW1iZXIgaXMgdGhlIGVudW1lcmF0aW9uIGl0IGJlbG9uZ3MgdG86Ci0KLT4+
PiB0eXBlKENvbG9yLnJlZCkKLTxlbnVtICdDb2xvcic+Ci0+Pj4gaXNpbnN0YW5jZShDb2xvci5n
cmVlbiwgQ29sb3IpCi1UcnVlCi0+Pj4KLQotRW51bSBtZW1iZXJzIGFsc28gaGF2ZSBhIHByb3Bl
cnR5IHRoYXQgY29udGFpbnMganVzdCB0aGVpciBpdGVtIG5hbWU6Ci0KLT4+PiBwcmludChDb2xv
ci5yZWQubmFtZSkKLXJlZAotCi1FbnVtZXJhdGlvbnMgc3VwcG9ydCBpdGVyYXRpb24uIEluIFB5
dGhvbiAzLnggZGVmaW5pdGlvbiBvcmRlciBpcyB1c2VkOyBpbiBQeXRob24gMi54IHRoZSBkZWZp
bml0aW9uIG9yZGVyIGlzCi1ub3QgYXZhaWxhYmxlLCBidXQgY2xhc3MgYXR0cmlidXRlIF9fb3Jk
ZXJfXyBpcyBzdXBwb3J0ZWQ7IG90aGVyd2lzZSwgdmFsdWUgb3JkZXIgaXMgdXNlZDoKLQotPj4+
IGNsYXNzIFNoYWtlKEVudW0pOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIG9ubHkgbmVlZGVkIGluIDIueAotLi4uIF9fb3JkZXJfXyA9ICd2YW5pbGxh
IGNob2NvbGF0ZSBjb29raWVzIG1pbnQnCi0uLi4gdmFuaWxsYSA9IDcKLS4uLiBjaG9jb2xhdGUg
PSA0Ci0uLi4gY29va2llcyA9IDkKLS4uLiBtaW50ID0gMwotLi4uCi0+Pj4gZm9yIHNoYWtlIGlu
IFNoYWtlOgotLi4uIHByaW50KHNoYWtlKQotLi4uCi1TaGFrZS52YW5pbGxhCi1TaGFrZS5jaG9j
b2xhdGUKLVNoYWtlLmNvb2tpZXMKLVNoYWtlLm1pbnQKLQotVGhlIF9fb3JkZXJfXyBhdHRyaWJ1
dGUgaXMgYWx3YXlzIHJlbW92ZWQsIGFuZCBpbiAzLnggaXQgaXMgYWxzbyBpZ25vcmVkIChvcmRl
ciBpcyBkZWZpbml0aW9uIG9yZGVyKTsKLWhvd2V2ZXIsIGluIHRoZSBzdGRsaWIgdmVyc2lvbiBp
dCB3aWxsIGJlIGlnbm9yZWQgYnV0IG5vdCByZW1vdmVkLgotCi1FbnVtZXJhdGlvbiBtZW1iZXJz
IGFyZSBoYXNoYWJsZSwgc28gdGhleSBjYW4gYmUgdXNlZCBpbiBkaWN0aW9uYXJpZXMgYW5kIHNl
dHM6Ci0KLT4+PiBhcHBsZXMgPSB7fQotPj4+IGFwcGxlc1tDb2xvci5yZWRdID0gJ3JlZCBkZWxp
Y2lvdXMnCi0+Pj4gYXBwbGVzW0NvbG9yLmdyZWVuXSA9ICdncmFubnkgc21pdGgnCi0+Pj4gYXBw
bGVzID09IHtDb2xvci5yZWQ6ICdyZWQgZGVsaWNpb3VzJywgQ29sb3IuZ3JlZW46ICdncmFubnkg
c21pdGgnfQotVHJ1ZQotCi1Qcm9ncmFtbWF0aWMgYWNjZXNzIHRvIGVudW1lcmF0aW9uIG1lbWJl
cnMgYW5kCi10aGVpciBhdHRyaWJ1dGVzCi0KLVNvbWV0aW1lcyBpdCdzIHVzZWZ1bCB0byBhY2Nl
c3MgbWVtYmVycyBpbiBlbnVtZXJhdGlvbnMgcHJvZ3JhbW1hdGljYWxseSAoaS5lLiBzaXR1YXRp
b25zIHdoZXJlCi1Db2xvci5yZWQgd29uJ3QgZG8gYmVjYXVzZSB0aGUgZXhhY3QgY29sb3IgaXMg
bm90IGtub3duIGF0IHByb2dyYW0td3JpdGluZyB0aW1lKS4gRW51bSBhbGxvd3Mgc3VjaAotYWNj
ZXNzOgotDCA+Pj4gQ29sb3IoMSkKLSA8Q29sb3IucmVkOiAxPgotID4+PiBDb2xvcigzKQotIDxD
b2xvci5ibHVlOiAzPgotCi1JZiB5b3Ugd2FudCB0byBhY2Nlc3MgZW51bSBtZW1iZXJzIGJ5IG5h
bWUsIHVzZSBpdGVtIGFjY2VzczoKLQotID4+PiBDb2xvclsncmVkJ10KLSA8Q29sb3IucmVkOiAx
PgotID4+PiBDb2xvclsnZ3JlZW4nXQotIDxDb2xvci5ncmVlbjogMj4KLQotSWYgaGF2ZSBhbiBl
bnVtIG1lbWJlciBhbmQgbmVlZCBpdHMgbmFtZSBvciB2YWx1ZToKLQotID4+PiBtZW1iZXIgPSBD
b2xvci5yZWQKLSA+Pj4gbWVtYmVyLm5hbWUKLSAncmVkJwotID4+PiBtZW1iZXIudmFsdWUKLSAx
Ci0KLUR1cGxpY2F0aW5nIGVudW0gbWVtYmVycyBhbmQgdmFsdWVzCi0KLUhhdmluZyB0d28gZW51
bSBtZW1iZXJzIChvciBhbnkgb3RoZXIgYXR0cmlidXRlKSB3aXRoIHRoZSBzYW1lIG5hbWUgaXMg
aW52YWxpZDsgaW4gUHl0aG9uIDMueCB0aGlzIHdvdWxkCi1yYWlzZSBhbiBlcnJvciwgYnV0IGlu
IFB5dGhvbiAyLnggdGhlIHNlY29uZCBtZW1iZXIgc2ltcGx5IG92ZXJ3cml0ZXMgdGhlIGZpcnN0
OgotCi0+Pj4gIyBweXRob24gMi54Ci0+Pj4gY2xhc3MgU2hhcGUoRW51bSk6Ci0uLi4gc3F1YXJl
ID0gMgotLi4uIHNxdWFyZSA9IDMKLS4uLgotPj4+IFNoYXBlLnNxdWFyZQotPFNoYXBlLnNxdWFy
ZTogMz4KLQotPj4+ICMgcHl0aG9uIDMueAotPj4+IGNsYXNzIFNoYXBlKEVudW0pOgotLi4uIHNx
dWFyZSA9IDIKLS4uLiBzcXVhcmUgPSAzCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz
dCk6Ci0uLi4KLVR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIHJldXNlIGtleTogJ3NxdWFyZScKLQot
SG93ZXZlciwgdHdvIGVudW0gbWVtYmVycyBhcmUgYWxsb3dlZCB0byBoYXZlIHRoZSBzYW1lIHZh
bHVlLiBHaXZlbiB0d28gbWVtYmVycyBBIGFuZCBCIHdpdGggdGhlCi1zYW1lIHZhbHVlIChhbmQg
QSBkZWZpbmVkIGZpcnN0KSwgQiBpcyBhbiBhbGlhcyB0byBBLiBCeS12YWx1ZSBsb29rdXAgb2Yg
dGhlIHZhbHVlIG9mIEEgYW5kIEIgd2lsbCByZXR1cm4gQS4KLUJ5LW5hbWUgbG9va3VwIG9mIEIg
d2lsbCBhbHNvIHJldHVybiBBOgotCi0+Pj4gY2xhc3MgU2hhcGUoRW51bSk6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBuZWVkZWQgaW4gMi54Ci0uLi4gX19v
cmRlcl9fID0gJ3NxdWFyZSBkaWFtb25kIGNpcmNsZSBhbGlhc19mb3Jfc3F1YXJlJwotLi4uIHNx
dWFyZSA9IDIKLS4uLiBkaWFtb25kID0gMQotLi4uIGNpcmNsZSA9IDMKLS4uLiBhbGlhc19mb3Jf
c3F1YXJlID0gMgotLi4uCi0+Pj4gU2hhcGUuc3F1YXJlCi0MIDxTaGFwZS5zcXVhcmU6IDI+Ci0g
Pj4+IFNoYXBlLmFsaWFzX2Zvcl9zcXVhcmUKLSA8U2hhcGUuc3F1YXJlOiAyPgotID4+PiBTaGFw
ZSgyKQotIDxTaGFwZS5zcXVhcmU6IDI+Ci0KLUFsbG93aW5nIGFsaWFzZXMgaXMgbm90IGFsd2F5
cyBkZXNpcmFibGUuIHVuaXF1ZSBjYW4gYmUgdXNlZCB0byBlbnN1cmUgdGhhdCBub25lIGV4aXN0
IGluIGEgcGFydGljdWxhcgotZW51bWVyYXRpb246Ci0KLSA+Pj4gZnJvbSBlbnVtIGltcG9ydCB1
bmlxdWUKLSA+Pj4gQHVuaXF1ZQotIC4uLiBjbGFzcyBNaXN0YWtlKEVudW0pOgotIC4uLiBfX29y
ZGVyX18gPSAnb25lIHR3byB0aHJlZSBmb3VyJyAjIG9ubHkgbmVlZGVkIGluIDIueAotIC4uLiBv
bmUgPSAxCi0gLi4uIHR3byA9IDIKLSAuLi4gdGhyZWUgPSAzCi0gLi4uIGZvdXIgPSAzCi0gVHJh
Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotIC4uLgotIFZhbHVlRXJyb3I6IGR1cGxp
Y2F0ZSBuYW1lcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVlCi0KLUl0
ZXJhdGluZyBvdmVyIHRoZSBtZW1iZXJzIG9mIGFuIGVudW0gZG9lcyBub3QgcHJvdmlkZSB0aGUg
YWxpYXNlczoKLQotID4+PiBsaXN0KFNoYXBlKQotIFs8U2hhcGUuc3F1YXJlOiAyPiwgPFNoYXBl
LmRpYW1vbmQ6IDE+LCA8U2hhcGUuY2lyY2xlOiAzPl0KLQotVGhlIHNwZWNpYWwgYXR0cmlidXRl
IF9fbWVtYmVyc19fIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIHRvIG1lbWJlcnMuIEl0
IGluY2x1ZGVzIGFsbCBuYW1lcwotZGVmaW5lZCBpbiB0aGUgZW51bWVyYXRpb24sIGluY2x1ZGlu
ZyB0aGUgYWxpYXNlczoKLQotID4+PiBmb3IgbmFtZSwgbWVtYmVyIGluIHNvcnRlZChTaGFwZS5f
X21lbWJlcnNfXy5pdGVtcygpKToKLSAuLi4gbmFtZSwgbWVtYmVyCi0gLi4uCi0gKCdhbGlhc19m
b3Jfc3F1YXJlJywgPFNoYXBlLnNxdWFyZTogMj4pCi0gKCdjaXJjbGUnLCA8U2hhcGUuY2lyY2xl
OiAzPikKLSAoJ2RpYW1vbmQnLCA8U2hhcGUuZGlhbW9uZDogMT4pCi0gKCdzcXVhcmUnLCA8U2hh
cGUuc3F1YXJlOiAyPikKLQotVGhlIF9fbWVtYmVyc19fIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCBm
b3IgZGV0YWlsZWQgcHJvZ3JhbW1hdGljIGFjY2VzcyB0byB0aGUgZW51bWVyYXRpb24gbWVtYmVy
cy4KLUZvciBleGFtcGxlLCBmaW5kaW5nIGFsbCB0aGUgYWxpYXNlczoKLQotID4+PiBbbmFtZSBm
b3IgbmFtZSwgbWVtYmVyIGluIFNoYXBlLl9fbWVtYmVyc19fLml0ZW1zKCkgaWYgbWVtYmVyLm5h
bWUgIT0gbmFtZV0KLSBbJ2FsaWFzX2Zvcl9zcXVhcmUnXQotCi1Db21wYXJpc29ucwotCi1FbnVt
ZXJhdGlvbiBtZW1iZXJzIGFyZSBjb21wYXJlZCBieSBpZGVudGl0eToKLQotID4+PiBDb2xvci5y
ZWQgaXMgQ29sb3IucmVkCi0gVHJ1ZQotID4+PiBDb2xvci5yZWQgaXMgQ29sb3IuYmx1ZQotIEZh
bHNlCi0gPj4+IENvbG9yLnJlZCBpcyBub3QgQ29sb3IuYmx1ZQotIFRydWUKLQxPcmRlcmVkIGNv
bXBhcmlzb25zIGJldHdlZW4gZW51bWVyYXRpb24gdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBF
bnVtIG1lbWJlcnMgYXJlIG5vdCBpbnRlZ2VycwotKGJ1dCBzZWUgSW50RW51bSBiZWxvdyk6Ci0K
LSA+Pj4gQ29sb3IucmVkIDwgQ29sb3IuYmx1ZQotIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs
bCBsYXN0KToKLQotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotIFR5
cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IENvbG9yKCkgPCBDb2xvcigpCi0KLVdhcm5pbmcK
LQotSW4gUHl0aG9uIDIgZXZlcnl0aGluZyBpcyBvcmRlcmVkLCBldmVuIHRob3VnaCB0aGUgb3Jk
ZXJpbmcgbWF5IG5vdCBtYWtlIHNlbnNlLiBJZiB5b3Ugd2FudCB5b3VyCi1lbnVtZXJhdGlvbnMg
dG8gaGF2ZSBhIHNlbnNpYmxlIG9yZGVyaW5nIGNoZWNrIG91dCB0aGUgT3JkZXJlZEVudW0gcmVj
aXBlIGJlbG93LgotCi1FcXVhbGl0eSBjb21wYXJpc29ucyBhcmUgZGVmaW5lZCB0aG91Z2g6Ci0K
LSA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5yZWQKLSBGYWxzZQotID4+PiBDb2xvci5ibHVlICE9
IENvbG9yLnJlZAotIFRydWUKLSA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5ibHVlCi0gVHJ1ZQot
Ci1Db21wYXJpc29ucyBhZ2FpbnN0IG5vbi1lbnVtZXJhdGlvbiB2YWx1ZXMgd2lsbCBhbHdheXMg
Y29tcGFyZSBub3QgZXF1YWwgKGFnYWluLCBJbnRFbnVtIHdhcwotZXhwbGljaXRseSBkZXNpZ25l
ZCB0byBiZWhhdmUgZGlmZmVyZW50bHksIHNlZSBiZWxvdyk6Ci0KLSA+Pj4gQ29sb3IuYmx1ZSA9
PSAyCi0gRmFsc2UKLQotQWxsb3dlZCBtZW1iZXJzIGFuZCBhdHRyaWJ1dGVzIG9mIGVudW1lcmF0
aW9ucwotCi1UaGUgZXhhbXBsZXMgYWJvdmUgdXNlIGludGVnZXJzIGZvciBlbnVtZXJhdGlvbiB2
YWx1ZXMuIFVzaW5nIGludGVnZXJzIGlzIHNob3J0IGFuZCBoYW5keSAoYW5kCi1wcm92aWRlZCBi
eSBkZWZhdWx0IGJ5IHRoZSBGdW5jdGlvbmFsIEFQSSksIGJ1dCBub3Qgc3RyaWN0bHkgZW5mb3Jj
ZWQuIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIHVzZS1jYXNlcywgb25lCi1kb2Vzbid0IGNhcmUg
d2hhdCB0aGUgYWN0dWFsIHZhbHVlIG9mIGFuIGVudW1lcmF0aW9uIGlzLiBCdXQgaWYgdGhlIHZh
bHVlIGlzIGltcG9ydGFudCwgZW51bWVyYXRpb25zIGNhbgotaGF2ZSBhcmJpdHJhcnkgdmFsdWVz
LgotCi1FbnVtZXJhdGlvbnMgYXJlIFB5dGhvbiBjbGFzc2VzLCBhbmQgY2FuIGhhdmUgbWV0aG9k
cyBhbmQgc3BlY2lhbCBtZXRob2RzIGFzIHVzdWFsLiBJZiB3ZSBoYXZlIHRoaXMKLWVudW1lcmF0
aW9uOgotCi0+Pj4gY2xhc3MgTW9vZChFbnVtKToKLQotLi4uIGZ1bmt5ID0gMQotCi0uLi4gaGFw
cHkgPSAzCi0KLS4uLgotCi0uLi4gZGVmIGRlc2NyaWJlKHNlbGYpOgotCi0uLi4gICMgc2VsZiBp
cyB0aGUgbWVtYmVyIGhlcmUKLQotLi4uICByZXR1cm4gc2VsZi5uYW1lLCBzZWxmLnZhbHVlCi0K
LS4uLgotCi0uLi4gZGVmIF9fc3RyX18oc2VsZik6Ci0KLS4uLiAgcmV0dXJuICdteSBjdXN0b20g
c3RyISB7MH0nLmZvcm1hdChzZWxmLnZhbHVlKQotCi0uLi4KLQotLi4uIEBjbGFzc21ldGhvZAot
Ci0uLi4gZGVmIGZhdm9yaXRlX21vb2QoY2xzKToKLQwuLi4gICAgIyBjbHMgaGVyZSBpcyB0aGUg
ZW51bWVyYXRpb24KLQotLi4uICAgIHJldHVybiBjbHMuaGFwcHkKLQotVGhlbjoKLQotPj4+IE1v
b2QuZmF2b3JpdGVfbW9vZCgpCi08TW9vZC5oYXBweTogMz4KLT4+PiBNb29kLmhhcHB5LmRlc2Ny
aWJlKCkKLSgnaGFwcHknLCAzKQotPj4+IHN0cihNb29kLmZ1bmt5KQotJ215IGN1c3RvbSBzdHIh
IDEnCi0KLVRoZSBydWxlcyBmb3Igd2hhdCBpcyBhbGxvd2VkIGFyZSBhcyBmb2xsb3dzOiBfc3Vu
ZGVyXyBuYW1lcyAoc3RhcnRpbmcgYW5kIGVuZGluZyB3aXRoIGEgc2luZ2xlCi11bmRlcnNjb3Jl
KSBhcmUgcmVzZXJ2ZWQgYnkgZW51bSBhbmQgY2Fubm90IGJlIHVzZWQ7IGFsbCBvdGhlciBhdHRy
aWJ1dGVzIGRlZmluZWQgd2l0aGluIGFuIGVudW1lcmF0aW9uCi13aWxsIGJlY29tZSBtZW1iZXJz
IG9mIHRoaXMgZW51bWVyYXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBfX2R1bmRlcl9fIG5h
bWVzIGFuZCBkZXNjcmlwdG9ycwotKG1ldGhvZHMgYXJlIGFsc28gZGVzY3JpcHRvcnMpLgotCi1O
b3RlOgotCi0gICAgICBJZiB5b3VyIGVudW1lcmF0aW9uIGRlZmluZXMgX19uZXdfXyBhbmQvb3Ig
X19pbml0X18gdGhlbiB3aGF0ZXZlciB2YWx1ZShzKSB3ZXJlIGdpdmVuIHRvIHRoZQotICAgICAg
ZW51bSBtZW1iZXIgd2lsbCBiZSBwYXNzZWQgaW50byB0aG9zZSBtZXRob2RzLiBTZWUgUGxhbmV0
IGZvciBhbiBleGFtcGxlLgotCi1SZXN0cmljdGVkIHN1YmNsYXNzaW5nIG9mIGVudW1lcmF0aW9u
cwotCi1TdWJjbGFzc2luZyBhbiBlbnVtZXJhdGlvbiBpcyBhbGxvd2VkIG9ubHkgaWYgdGhlIGVu
dW1lcmF0aW9uIGRvZXMgbm90IGRlZmluZSBhbnkgbWVtYmVycy4gU28gdGhpcyBpcwotZm9yYmlk
ZGVuOgotCi0+Pj4gY2xhc3MgTW9yZUNvbG9yKENvbG9yKToKLS4uLiBwaW5rID0gMTcKLVRyYWNl
YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLS4uLgotVHlwZUVycm9yOiBDYW5ub3QgZXh0
ZW5kIGVudW1lcmF0aW9ucwotCi1CdXQgdGhpcyBpcyBhbGxvd2VkOgotCi0+Pj4gY2xhc3MgRm9v
KEVudW0pOgotCi0uLi4gZGVmIHNvbWVfYmVoYXZpb3Ioc2VsZik6Ci0KLS4uLiAgICBwYXNzCi0K
LS4uLgotCi0+Pj4gY2xhc3MgQmFyKEZvbyk6Ci0KLS4uLiBoYXBweSA9IDEKLQotLi4uIHNhZCA9
IDIKLQotLi4uCi0KLUFsbG93aW5nIHN1YmNsYXNzaW5nIG9mIGVudW1zIHRoYXQgZGVmaW5lIG1l
bWJlcnMgd291bGQgbGVhZCB0byBhIHZpb2xhdGlvbiBvZiBzb21lIGltcG9ydGFudCBpbnZhcmlh
bnRzCi1vZiB0eXBlcyBhbmQgaW5zdGFuY2VzLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgbWFrZXMg
c2Vuc2UgdG8gYWxsb3cgc2hhcmluZyBzb21lIGNvbW1vbiBiZWhhdmlvcgotYmV0d2VlbiBhIGdy
b3VwIG9mIGVudW1lcmF0aW9ucy4gKFNlZSBPcmRlcmVkRW51bSBmb3IgYW4gZXhhbXBsZS4pCi0K
LVBpY2tsaW5nCi0KLUVudW1lcmF0aW9ucyBjYW4gYmUgcGlja2xlZCBhbmQgdW5waWNrbGVkOgot
Ci0+Pj4gZnJvbSBlbnVtLnRlc3RfZW51bSBpbXBvcnQgRnJ1aXQKLT4+PiBmcm9tIHBpY2tsZSBp
bXBvcnQgZHVtcHMsIGxvYWRzCi0MID4+PiBGcnVpdC50b21hdG8gaXMgbG9hZHMoZHVtcHMoRnJ1
aXQudG9tYXRvLCAyKSkKLSBUcnVlCi0KLVRoZSB1c3VhbCByZXN0cmljdGlvbnMgZm9yIHBpY2ts
aW5nIGFwcGx5OiBwaWNrbGFibGUgZW51bXMgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSB0b3AgbGV2
ZWwgb2YgYSBtb2R1bGUsCi1zaW5jZSB1bnBpY2tsaW5nIHJlcXVpcmVzIHRoZW0gdG8gYmUgaW1w
b3J0YWJsZSBmcm9tIHRoYXQgbW9kdWxlLgotTm90ZToKLQotICAgICAgV2l0aCBwaWNrbGUgcHJv
dG9jb2wgdmVyc2lvbiA0IChpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjQpIGl0IGlzIHBvc3NpYmxl
IHRvIGVhc2lseSBwaWNrbGUgZW51bXMgbmVzdGVkIGluCi0gICAgICBvdGhlciBjbGFzc2VzLgot
Ci1GdW5jdGlvbmFsIEFQSQotCi1UaGUgRW51bSBjbGFzcyBpcyBjYWxsYWJsZSwgcHJvdmlkaW5n
IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbCBBUEk6Ci0KLSA+Pj4gQW5pbWFsID0gRW51bSgnQW5p
bWFsJywgJ2FudCBiZWUgY2F0IGRvZycpCi0gPj4+IEFuaW1hbAotIDxlbnVtICdBbmltYWwnPgot
ID4+PiBBbmltYWwuYW50Ci0gPEFuaW1hbC5hbnQ6IDE+Ci0gPj4+IEFuaW1hbC5hbnQudmFsdWUK
LSAxCi0gPj4+IGxpc3QoQW5pbWFsKQotIFs8QW5pbWFsLmFudDogMT4sIDxBbmltYWwuYmVlOiAy
PiwgPEFuaW1hbC5jYXQ6IDM+LCA8QW5pbWFsLmRvZzogND5dCi0KLVRoZSBzZW1hbnRpY3Mgb2Yg
dGhpcyBBUEkgcmVzZW1ibGUgbmFtZWR0dXBsZS4gVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBj
YWxsIHRvIEVudW0gaXMgdGhlIG5hbWUgb2YKLXRoZSBlbnVtZXJhdGlvbi4KLVRoZSBzZWNvbmQg
YXJndW1lbnQgaXMgdGhlIHNvdXJjZSBvZiBlbnVtZXJhdGlvbiBtZW1iZXIgbmFtZXMuIEl0IGNh
biBiZSBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkCi1zdHJpbmcgb2YgbmFtZXMsIGEgc2VxdWVuY2Ug
b2YgbmFtZXMsIGEgc2VxdWVuY2Ugb2YgMi10dXBsZXMgd2l0aCBrZXkvdmFsdWUgcGFpcnMsIG9y
IGEgbWFwcGluZyAoZS5nLgotZGljdGlvbmFyeSkgb2YgbmFtZXMgdG8gdmFsdWVzLiBUaGUgbGFz
dCB0d28gb3B0aW9ucyBlbmFibGUgYXNzaWduaW5nIGFyYml0cmFyeSB2YWx1ZXMgdG8gZW51bWVy
YXRpb25zOwotdGhlIG90aGVycyBhdXRvLWFzc2lnbiBpbmNyZWFzaW5nIGludGVnZXJzIHN0YXJ0
aW5nIHdpdGggMS4gQSBuZXcgY2xhc3MgZGVyaXZlZCBmcm9tIEVudW0gaXMgcmV0dXJuZWQuIElu
Ci1vdGhlciB3b3JkcywgdGhlIGFib3ZlIGFzc2lnbm1lbnQgdG8gQW5pbWFsIGlzIGVxdWl2YWxl
bnQgdG86Ci0KLSA+Pj4gY2xhc3MgQW5pbWFscyhFbnVtKToKLSAuLi4gYW50ID0gMQotIC4uLiBi
ZWUgPSAyCi0gLi4uIGNhdCA9IDMKLSAuLi4gZG9nID0gNAotCi1QaWNrbGluZyBlbnVtcyBjcmVh
dGVkIHdpdGggdGhlIGZ1bmN0aW9uYWwgQVBJIGNhbiBiZSB0cmlja3kgYXMgZnJhbWUgc3RhY2sg
aW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUKLXVzZWQgdG8gdHJ5IGFuZCBmaWd1cmUgb3V0IHdo
aWNoIG1vZHVsZSB0aGUgZW51bWVyYXRpb24gaXMgYmVpbmcgY3JlYXRlZCBpbiAoZS5nLiBpdCB3
aWxsIGZhaWwgaWYgeW91IHVzZSBhCi11dGlsaXR5IGZ1bmN0aW9uIGluIHNlcGFyYXRlIG1vZHVs
ZSwgYW5kIGFsc28gbWF5IG5vdCB3b3JrIG9uIElyb25QeXRob24gb3IgSnl0aG9uKS4gVGhlIHNv
bHV0aW9uIGlzIHRvCi1zcGVjaWZ5IHRoZSBtb2R1bGUgbmFtZSBleHBsaWNpdGx5IGFzIGZvbGxv
d3M6Ci0KLSA+Pj4gQW5pbWFscyA9IEVudW0oJ0FuaW1hbHMnLCAnYW50IGJlZSBjYXQgZG9nJywg
bW9kdWxlPV9fbmFtZV9fKQotCi1EZXJpdmVkIEVudW1lcmF0aW9ucwotCi1JbnRFbnVtCi0KLUEg
dmFyaWF0aW9uIG9mIEVudW0gaXMgcHJvdmlkZWQgd2hpY2ggaXMgYWxzbyBhIHN1YmNsYXNzIG9m
IGludC4gTWVtYmVycyBvZiBhbiBJbnRFbnVtIGNhbiBiZQotY29tcGFyZWQgdG8gaW50ZWdlcnM7
IGJ5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5cGVzIGNh
biBhbHNvIGJlIGNvbXBhcmVkIHRvIGVhY2gKLW90aGVyOgotDCA+Pj4gZnJvbSBlbnVtIGltcG9y
dCBJbnRFbnVtCi0gPj4+IGNsYXNzIFNoYXBlKEludEVudW0pOgotIC4uLiBjaXJjbGUgPSAxCi0g
Li4uIHNxdWFyZSA9IDIKLSAuLi4KLSA+Pj4gY2xhc3MgUmVxdWVzdChJbnRFbnVtKToKLSAuLi4g
cG9zdCA9IDEKLSAuLi4gZ2V0ID0gMgotIC4uLgotID4+PiBTaGFwZSA9PSAxCi0gRmFsc2UKLSA+
Pj4gU2hhcGUuY2lyY2xlID09IDEKLSBUcnVlCi0gPj4+IFNoYXBlLmNpcmNsZSA9PSBSZXF1ZXN0
LnBvc3QKLSBUcnVlCi0KLUhvd2V2ZXIsIHRoZXkgc3RpbGwgY2FuJ3QgYmUgY29tcGFyZWQgdG8g
c3RhbmRhcmQgRW51bSBlbnVtZXJhdGlvbnM6Ci0KLSA+Pj4gY2xhc3MgU2hhcGUoSW50RW51bSk6
Ci0gLi4uIGNpcmNsZSA9IDEKLSAuLi4gc3F1YXJlID0gMgotIC4uLgotID4+PiBjbGFzcyBDb2xv
cihFbnVtKToKLSAuLi4gcmVkID0gMQotIC4uLiBncmVlbiA9IDIKLSAuLi4KLSA+Pj4gU2hhcGUu
Y2lyY2xlID09IENvbG9yLnJlZAotIEZhbHNlCi0KLUludEVudW0gdmFsdWVzIGJlaGF2ZSBsaWtl
IGludGVnZXJzIGluIG90aGVyIHdheXMgeW91J2QgZXhwZWN0OgotCi0gPj4+IGludChTaGFwZS5j
aXJjbGUpCi0gMQotID4+PiBbJ2EnLCAnYicsICdjJ11bU2hhcGUuY2lyY2xlXQotICdiJwotID4+
PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5zcXVhcmUpXQotIFswLCAxXQotCi1Gb3IgdGhlIHZh
c3QgbWFqb3JpdHkgb2YgY29kZSwgRW51bSBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCwgc2luY2Ug
SW50RW51bSBicmVha3Mgc29tZSBzZW1hbnRpYwotcHJvbWlzZXMgb2YgYW4gZW51bWVyYXRpb24g
KGJ5IGJlaW5nIGNvbXBhcmFibGUgdG8gaW50ZWdlcnMsIGFuZCB0aHVzIGJ5IHRyYW5zaXRpdml0
eSB0byBvdGhlciB1bnJlbGF0ZWQKLWVudW1lcmF0aW9ucykuIEl0IHNob3VsZCBiZSB1c2VkIG9u
bHkgaW4gc3BlY2lhbCBjYXNlcyB3aGVyZSB0aGVyZSdzIG5vIG90aGVyIGNob2ljZTsgZm9yIGV4
YW1wbGUsIHdoZW4KLWludGVnZXIgY29uc3RhbnRzIGFyZSByZXBsYWNlZCB3aXRoIGVudW1lcmF0
aW9ucyBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQgd2l0aCBjb2RlIHRo
YXQKLXN0aWxsIGV4cGVjdHMgaW50ZWdlcnMuCi0KLU90aGVycwotCi1XaGlsZSBJbnRFbnVtIGlz
IHBhcnQgb2YgdGhlIGVudW0gbW9kdWxlLCBpdCB3b3VsZCBiZSB2ZXJ5IHNpbXBsZSB0byBpbXBs
ZW1lbnQgaW5kZXBlbmRlbnRseToKLQotIGNsYXNzIEludEVudW0oaW50LCBFbnVtKToKLSAgICAg
ICAgIHBhc3MKLQotVGhpcyBkZW1vbnN0cmF0ZXMgaG93IHNpbWlsYXIgZGVyaXZlZCBlbnVtZXJh
dGlvbnMgY2FuIGJlIGRlZmluZWQ7IGZvciBleGFtcGxlIGEgU3RyRW51bSB0aGF0IG1peGVzCi1p
biBzdHIgaW5zdGVhZCBvZiBpbnQuCi0KLVNvbWUgcnVsZXM6Ci0MICAgMS4gV2hlbiBzdWJjbGFz
c2luZyBFbnVtLCBtaXgtaW4gdHlwZXMgbXVzdCBhcHBlYXIgYmVmb3JlIEVudW0gaXRzZWxmIGlu
IHRoZSBzZXF1ZW5jZSBvZiBiYXNlcywgYXMKLSAgICAgIGluIHRoZSBJbnRFbnVtIGV4YW1wbGUg
YWJvdmUuCi0KLSAgIDIuIFdoaWxlIEVudW0gY2FuIGhhdmUgbWVtYmVycyBvZiBhbnkgdHlwZSwg
b25jZSB5b3UgbWl4IGluIGFuIGFkZGl0aW9uYWwgdHlwZSwgYWxsIHRoZSBtZW1iZXJzCi0gICAg
ICBtdXN0IGhhdmUgdmFsdWVzIG9mIHRoYXQgdHlwZSwgZS5nLiBpbnQgYWJvdmUuIFRoaXMgcmVz
dHJpY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gbWl4LWlucyB3aGljaCBvbmx5Ci0gICAgICBhZGQg
bWV0aG9kcyBhbmQgZG9uJ3Qgc3BlY2lmeSBhbm90aGVyIGRhdGEgdHlwZSBzdWNoIGFzIGludCBv
ciBzdHIuCi0KLSAgIDMuIFdoZW4gYW5vdGhlciBkYXRhIHR5cGUgaXMgbWl4ZWQgaW4sIHRoZSB2
YWx1ZSBhdHRyaWJ1dGUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBlbnVtIG1lbWJlciBpdHNlbGYs
Ci0gICAgICBhbHRob3VnaCBpdCBpcyBlcXVpdmFsYW50IGFuZCB3aWxsIGNvbXBhcmUgZXF1YWwu
Ci0KLSAgIDQuICUtc3R5bGUgZm9ybWF0dGluZzogJXMgYW5kICVyIGNhbGwgRW51bSdzIF9fc3Ry
X18gYW5kIF9fcmVwcl9fIHJlc3BlY3RpdmVseTsgb3RoZXIgY29kZXMKLSAgICAgIChzdWNoIGFz
ICVpIG9yICVoIGZvciBJbnRFbnVtKSB0cmVhdCB0aGUgZW51bSBtZW1iZXIgYXMgaXRzIG1peGVk
LWluIHR5cGUuCi0KLSAgICAgIE5vdGU6IFByaW9yIHRvIFB5dGhvbiAzLjQgdGhlcmUgaXMgYSBi
dWcgaW4gc3RyJ3MgJS1mb3JtYXR0aW5nOiBpbnQgc3ViY2xhc3NlcyBhcmUgcHJpbnRlZCBhcyBz
dHJpbmdzCi0gICAgICBhbmQgbm90IG51bWJlcnMgd2hlbiB0aGUgJWQsICVpLCBvciAldSBjb2Rl
cyBhcmUgdXNlZC4KLQotICAgNS4gc3RyLl9fZm9ybWF0X18gKG9yIGZvcm1hdCkgd2lsbCB1c2Ug
dGhlIG1peGVkLWluIHR5cGUncyBfX2Zvcm1hdF9fLiBJZiB0aGUgRW51bSdzIHN0ciBvcgotICAg
ICAgcmVwciBpcyBkZXNpcmVkIHVzZSB0aGUgIXMgb3IgIXIgc3RyIGZvcm1hdCBjb2Rlcy4KLQot
RGVjb3JhdG9ycwotCi11bmlxdWUKLQotQSBjbGFzcyBkZWNvcmF0b3Igc3BlY2lmaWNhbGx5IGZv
ciBlbnVtZXJhdGlvbnMuIEl0IHNlYXJjaGVzIGFuIGVudW1lcmF0aW9uJ3MgX19tZW1iZXJzX18g
Z2F0aGVyaW5nCi1hbnkgYWxpYXNlcyBpdCBmaW5kczsgaWYgYW55IGFyZSBmb3VuZCBWYWx1ZUVy
cm9yIGlzIHJhaXNlZCB3aXRoIHRoZSBkZXRhaWxzOgotCi0gPj4+IEB1bmlxdWUKLSAuLi4gY2xh
c3MgTm9EdXBlcyhFbnVtKToKLSAuLi4gZmlyc3QgPSAnb25lJwotIC4uLiBzZWNvbmQgPSAndHdv
JwotIC4uLiB0aGlyZCA9ICd0d28nCi0gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp
OgotIC4uLgotIFZhbHVlRXJyb3I6IGR1cGxpY2F0ZSBuYW1lcyBmb3VuZCBpbiA8ZW51bSAnTm9E
dXBlcyc+OiB0aGlyZCAtPiBzZWNvbmQKLQotSW50ZXJlc3RpbmcgZXhhbXBsZXMKLQotV2hpbGUg
RW51bSBhbmQgSW50RW51bSBhcmUgZXhwZWN0ZWQgdG8gY292ZXIgdGhlIG1ham9yaXR5IG9mIHVz
ZS1jYXNlcywgdGhleSBjYW5ub3QgY292ZXIgdGhlbSBhbGwuCi1IZXJlIGFyZSByZWNpcGVzIGZv
ciBzb21lIGRpZmZlcmVudCB0eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBk
aXJlY3RseSwgb3IgYXMgZXhhbXBsZXMgZm9yCi1jcmVhdGluZyBvbmUncyBvd24uCi0KLUF1dG9O
dW1iZXIKLQotQXZvaWRzIGhhdmluZyB0byBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgZWFjaCBlbnVt
ZXJhdGlvbiBtZW1iZXI6Ci0KLT4+PiBjbGFzcyBBdXRvTnVtYmVyKEVudW0pOgotCi0uLi4gIGRl
ZiBfX25ld19fKGNscyk6Ci0KLS4uLiAgdmFsdWUgPSBsZW4oY2xzLl9fbWVtYmVyc19fKSArIDEK
LQotLi4uICBvYmogPSBvYmplY3QuX19uZXdfXyhjbHMpCi0KLS4uLiAgb2JqLl92YWx1ZV8gPSB2
YWx1ZQotCi0uLi4gIHJldHVybiBvYmoKLQotLi4uCi0KLT4+PiBjbGFzcyBDb2xvcihBdXRvTnVt
YmVyKToKLQotLi4uICBfX29yZGVyX18gPSAicmVkIGdyZWVuIGJsdWUiICMgb25seSBuZWVkZWQg
aW4gMi54Ci0KLS4uLiAgcmVkID0gKCkKLQotLi4uICBncmVlbiA9ICgpCi0KLS4uLiAgYmx1ZSA9
ICgpCi0MLi4uCi0+Pj4gQ29sb3IuZ3JlZW4udmFsdWUgPT0gMgotVHJ1ZQotCi1Ob3RlOgotCi0g
ICAgICBUaGUgX19uZXdfXyBtZXRob2QsIGlmIGRlZmluZWQsIGlzIHVzZWQgZHVyaW5nIGNyZWF0
aW9uIG9mIHRoZSBFbnVtIG1lbWJlcnM7IGl0IGlzIHRoZW4gcmVwbGFjZWQgYnkKLSAgICAgIEVu
dW0ncyBfX25ld19fIHdoaWNoIGlzIHVzZWQgYWZ0ZXIgY2xhc3MgY3JlYXRpb24gZm9yIGxvb2t1
cCBvZiBleGlzdGluZyBtZW1iZXJzLiBEdWUgdG8gdGhlIHdheQotICAgICAgRW51bXMgYXJlIHN1
cHBvc2VkIHRvIGJlaGF2ZSwgdGhlcmUgaXMgbm8gd2F5IHRvIGN1c3RvbWl6ZSBFbnVtJ3MgX19u
ZXdfXy4KLQotVW5pcXVlRW51bQotCi1SYWlzZXMgYW4gZXJyb3IgaWYgYSBkdXBsaWNhdGUgbWVt
YmVyIG5hbWUgaXMgZm91bmQgaW5zdGVhZCBvZiBjcmVhdGluZyBhbiBhbGlhczoKLQotPj4+IGNs
YXNzIFVuaXF1ZUVudW0oRW51bSk6Ci0KLS4uLiAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToK
LQotLi4uICBjbHMgPSBzZWxmLl9fY2xhc3NfXwotCi0uLi4gIGlmIGFueShzZWxmLnZhbHVlID09
IGUudmFsdWUgZm9yIGUgaW4gY2xzKToKLQotLi4uICAgICAgICAgICBhID0gc2VsZi5uYW1lCi0K
LS4uLiAgICAgICAgICAgZSA9IGNscyhzZWxmLnZhbHVlKS5uYW1lCi0KLS4uLiAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigKLQotLi4uICAgICAgICAgICAgICJhbGlhc2VzIG5vdCBhbGxvd2Vk
IGluIFVuaXF1ZUVudW06ICVyIC0tPiAlciIKLQotLi4uICAgICAgICAgICAgICUgKGEsIGUpKQot
Ci0uLi4KLQotPj4+IGNsYXNzIENvbG9yKFVuaXF1ZUVudW0pOgotCi0uLi4gIHJlZCA9IDEKLQot
Li4uICBncmVlbiA9IDIKLQotLi4uICBibHVlID0gMwotCi0uLi4gIGdyZW5lID0gMgotCi1UcmFj
ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0KLS4uLgotCi1WYWx1ZUVycm9yOiBhbGlh
c2VzIG5vdCBhbGxvd2VkIGluIFVuaXF1ZUVudW06ICdncmVuZScgLS0+ICdncmVlbicKLQotT3Jk
ZXJlZEVudW0KLQotQW4gb3JkZXJlZCBlbnVtZXJhdGlvbiB0aGF0IGlzIG5vdCBiYXNlZCBvbiBJ
bnRFbnVtIGFuZCBzbyBtYWludGFpbnMgdGhlIG5vcm1hbCBFbnVtIGludmFyaWFudHMKLShzdWNo
IGFzIG5vdCBiZWluZyBjb21wYXJhYmxlIHRvIG90aGVyIGVudW1lcmF0aW9ucyk6Ci0KLT4+PiBj
bGFzcyBPcmRlcmVkRW51bShFbnVtKToKLQotLi4uICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToK
LQotLi4uICBpZiBzZWxmLl9fY2xhc3NfXyBpcyBvdGhlci5fX2NsYXNzX186Ci0KLS4uLiAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlXyA+PSBvdGhlci5fdmFsdWVfCi0KLS4uLiAgcmV0dXJu
IE5vdEltcGxlbWVudGVkCi0KLS4uLiAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6Ci0KLS4uLiAg
aWYgc2VsZi5fX2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgotCi0uLi4gICAgICAgICAgIHJl
dHVybiBzZWxmLl92YWx1ZV8gPiBvdGhlci5fdmFsdWVfCi0KLS4uLiAgcmV0dXJuIE5vdEltcGxl
bWVudGVkCi0KLS4uLiAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6Ci0KLS4uLiAgaWYgc2VsZi5f
X2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgotCi0uLi4gICAgICAgICAgIHJldHVybiBzZWxm
Ll92YWx1ZV8gPD0gb3RoZXIuX3ZhbHVlXwotCi0uLi4gIHJldHVybiBOb3RJbXBsZW1lbnRlZAot
Ci0uLi4gIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgotCi0uLi4gIGlmIHNlbGYuX19jbGFzc19f
IGlzIG90aGVyLl9fY2xhc3NfXzoKLQotLi4uICAgICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWVf
IDwgb3RoZXIuX3ZhbHVlXwotCi0uLi4gIHJldHVybiBOb3RJbXBsZW1lbnRlZAotDC4uLgotCi0+
Pj4gY2xhc3MgR3JhZGUoT3JkZXJlZEVudW0pOgotCi0uLi4gICBfX29yZGVyZWRfXyA9ICdBIEIg
QyBEIEYnCi0KLS4uLiAgIEE9NQotCi0uLi4gICBCPTQKLQotLi4uICAgQz0zCi0KLS4uLiAgIEQ9
MgotCi0uLi4gICBGPTEKLQotLi4uCi0KLT4+PiBHcmFkZS5DIDwgR3JhZGUuQQotCi1UcnVlCi0K
LVBsYW5ldAotCi1JZiBfX25ld19fIG9yIF9faW5pdF9fIGlzIGRlZmluZWQgdGhlIHZhbHVlIG9m
IHRoZSBlbnVtIG1lbWJlciB3aWxsIGJlIHBhc3NlZCB0byB0aG9zZSBtZXRob2RzOgotCi0+Pj4g
Y2xhc3MgUGxhbmV0KEVudW0pOgotCi0uLi4gICBNRVJDVVJZID0gKDMuMzAzZSsyMywgMi40Mzk3
ZTYpCi0KLS4uLiAgIFZFTlVTID0gKDQuODY5ZSsyNCwgNi4wNTE4ZTYpCi0KLS4uLiAgIEVBUlRI
ID0gKDUuOTc2ZSsyNCwgNi4zNzgxNGU2KQotCi0uLi4gICBNQVJTID0gKDYuNDIxZSsyMywgMy4z
OTcyZTYpCi0KLS4uLiAgIEpVUElURVIgPSAoMS45ZSsyNywgNy4xNDkyZTcpCi0KLS4uLiAgIFNB
VFVSTiA9ICg1LjY4OGUrMjYsIDYuMDI2OGU3KQotCi0uLi4gICBVUkFOVVMgPSAoOC42ODZlKzI1
LCAyLjU1NTllNykKLQotLi4uICAgTkVQVFVORSA9ICgxLjAyNGUrMjYsIDIuNDc0NmU3KQotCi0u
Li4gICBkZWYgX19pbml0X18oc2VsZiwgbWFzcywgcmFkaXVzKToKLQotLi4uICAgc2VsZi5tYXNz
ID0gbWFzcyAgICAgICAgICAgICMgaW4ga2lsb2dyYW1zCi0KLS4uLiAgIHNlbGYucmFkaXVzID0g
cmFkaXVzICMgaW4gbWV0ZXJzCi0KLS4uLiAgIEBwcm9wZXJ0eQotCi0uLi4gICBkZWYgc3VyZmFj
ZV9ncmF2aXR5KHNlbGYpOgotCi0uLi4gICAjIHVuaXZlcnNhbCBncmF2aXRhdGlvbmFsIGNvbnN0
YW50IChtMyBrZy0xIHMtMikKLQotLi4uICAgRyA9IDYuNjczMDBFLTExCi0KLS4uLiAgIHJldHVy
biBHICogc2VsZi5tYXNzIC8gKHNlbGYucmFkaXVzICogc2VsZi5yYWRpdXMpCi0KLS4uLgotCi0+
Pj4gUGxhbmV0LkVBUlRILnZhbHVlCi0KLSg1Ljk3NmUrMjQsIDYzNzgxNDAuMCkKLQotPj4+IFBs
YW5ldC5FQVJUSC5zdXJmYWNlX2dyYXZpdHkKLQotOS44MDI2NTI3NDMzMzcxMjkKLQotSG93IGFy
ZSBFbnVtcyBkaWZmZXJlbnQ/Ci0KLUVudW1zIGhhdmUgYSBjdXN0b20gbWV0YWNsYXNzIHRoYXQg
YWZmZWN0cyBtYW55IGFzcGVjdHMgb2YgYm90aCBkZXJpdmVkIEVudW0gY2xhc3NlcyBhbmQgdGhl
aXIKLWluc3RhbmNlcyAobWVtYmVycykuCi0KLUVudW0gQ2xhc3NlcwotCi1UaGUgRW51bU1ldGEg
bWV0YWNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgdGhlIF9fY29udGFpbnNfXywg
X19kaXJfXywgX19pdGVyX18gYW5kCi1vdGhlciBtZXRob2RzIHRoYXQgYWxsb3cgb25lIHRvIGRv
IHRoaW5ncyB3aXRoIGFuIEVudW0gY2xhc3MgdGhhdCBmYWlsIG9uIGEgdHlwaWNhbCBjbGFzcywg
c3VjaCBhcwotbGlzdChDb2xvcikgb3Igc29tZV92YXIgaW4gQ29sb3IuIEVudW1NZXRhIGlzIHJl
c3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IHZhcmlvdXMgb3RoZXIKLW1ldGhvZHMgb24gdGhl
IGZpbmFsIEVudW0gY2xhc3MgYXJlIGNvcnJlY3QgKHN1Y2ggYXMgX19uZXdfXywgX19nZXRuZXdh
cmdzX18sIF9fc3RyX18gYW5kCi1fX3JlcHJfXykuCi0MICAgTm90ZQotCi0gICBfX2Rpcl9fIGlz
IG5vdCBjaGFuZ2VkIGluIHRoZSBQeXRob24gMiBsaW5lIGFzIGl0IG1lc3NlcyB1cCBzb21lIG9m
IHRoZSBkZWNvcmF0b3JzIGluY2x1ZGVkIGluCi0gICB0aGUgc3RkbGliLgotCi1FbnVtIE1lbWJl
cnMgKGFrYSBpbnN0YW5jZXMpCi0KLVRoZSBtb3N0IGludGVyZXN0aW5nIHRoaW5nIGFib3V0IEVu
dW0gbWVtYmVycyBpcyB0aGF0IHRoZXkgYXJlIHNpbmdsZXRvbnMuIEVudW1NZXRhIGNyZWF0ZXMg
dGhlbSBhbGwKLXdoaWxlIGl0IGlzIGNyZWF0aW5nIHRoZSBFbnVtIGNsYXNzIGl0c2VsZiwgYW5k
IHRoZW4gcHV0cyBhIGN1c3RvbSBfX25ld19fIGluIHBsYWNlIHRvIGVuc3VyZSB0aGF0IG5vIG5l
dwotb25lcyBhcmUgZXZlciBpbnN0YW50aWF0ZWQgYnkgcmV0dXJuaW5nIG9ubHkgdGhlIGV4aXN0
aW5nIG1lbWJlciBpbnN0YW5jZXMuCi0KLUZpbmVyIFBvaW50cwotCi1FbnVtIG1lbWJlcnMgYXJl
IGluc3RhbmNlcyBvZiBhbiBFbnVtIGNsYXNzLCBhbmQgZXZlbiB0aG91Z2ggdGhleSBhcmUgYWNj
ZXNzaWJsZSBhcwotRW51bUNsYXNzLm1lbWJlcjEubWVtYmVyMiwgdGhleSBzaG91bGQgbm90IGJl
IGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gdGhlIG1lbWJlciBhcyB0aGF0IGxvb2t1cAotbWF5IGZh
aWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nIGJlc2lkZXMgdGhlIEVudW0gbWVtYmVyIHlv
dSB3ZXJlIGxvb2tpbmcgZm9yIChjaGFuZ2VkIGluIHZlcnNpb24KLTEuMS4xKToKLQotPj4+IGNs
YXNzIEZpZWxkVHlwZXMoRW51bSk6Ci0KLS4uLiAgbmFtZSA9IDEKLQotLi4uICB2YWx1ZSA9IDIK
LQotLi4uICBzaXplID0gMwotCi0uLi4KLQotPj4+IEZpZWxkVHlwZXMudmFsdWUuc2l6ZQotCi08
RmllbGRUeXBlcy5zaXplOiAzPgotCi0+Pj4gRmllbGRUeXBlcy5zaXplLnZhbHVlCi0KLTMKLQot
VGhlIF9fbWVtYmVyc19fIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUgY2xhc3Mu
Ci0KLUluIFB5dGhvbiAzLnggX19tZW1iZXJzX18gaXMgYWx3YXlzIGFuIE9yZGVyZWREaWN0LCB3
aXRoIHRoZSBvcmRlciBiZWluZyB0aGUgZGVmaW5pdGlvbiBvcmRlci4gSW4KLVB5dGhvbiAyLjcg
X19tZW1iZXJzX18gaXMgYW4gT3JkZXJlZERpY3QgaWYgX19vcmRlcl9fIHdhcyBzcGVjaWZpZWQs
IGFuZCBhIHBsYWluIGRpY3QKLW90aGVyd2lzZS4gSW4gYWxsIG90aGVyIFB5dGhvbiAyLnggdmVy
c2lvbnMgX19tZW1iZXJzX18gaXMgYSBwbGFpbiBkaWN0IGV2ZW4gaWYgX19vcmRlcl9fIHdhcwot
c3BlY2lmaWVkIGFzIHRoZSBPcmRlcmVkRGljdCB0eXBlIGRpZG4ndCBleGlzdCB5ZXQuCi0KLUlm
IHlvdSBnaXZlIHlvdXIgRW51bSBzdWJjbGFzcyBleHRyYSBtZXRob2RzLCBsaWtlIHRoZSBQbGFu
ZXQgY2xhc3MgYWJvdmUsIHRob3NlIG1ldGhvZHMgd2lsbCBzaG93IHVwIGluCi1hIGRpciBvZiB0
aGUgbWVtYmVyLCBidXQgbm90IG9mIHRoZSBjbGFzczoKLQotPj4+IGRpcihQbGFuZXQpCi1bJ0VB
UlRIJywgJ0pVUElURVInLCAnTUFSUycsICdNRVJDVVJZJywgJ05FUFRVTkUnLCAnU0FUVVJOJywg
J1VSQU5VUycsCi0nVkVOVVMnLCAnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19tZW1iZXJzX18n
LCAnX19tb2R1bGVfXyddCi0+Pj4gZGlyKFBsYW5ldC5FQVJUSCkKLVsnX19jbGFzc19fJywgJ19f
ZG9jX18nLCAnX19tb2R1bGVfXycsICduYW1lJywgJ3N1cmZhY2VfZ3Jhdml0eScsICd2YWx1ZSdd
Ci0KLUEgX19uZXdfXyBtZXRob2Qgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBjcmVhdGlvbiBv
ZiB0aGUgRW51bSBtZW1iZXJzIC0tIGFmdGVyIHRoYXQgaXQgaXMgcmVwbGFjZWQuCi1UaGlzIG1l
YW5zIGlmIHlvdSB3aXNoIHRvIGNoYW5nZSBob3cgRW51bSBtZW1iZXJzIGFyZSBsb29rZWQgdXAg
eW91IGVpdGhlciBoYXZlIHRvIHdyaXRlIGEgaGVscGVyCi1mdW5jdGlvbiBvciBhIGNsYXNzbWV0
aG9kLgotDApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51
bS9lbnVtL2RvYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I4NDdmMDhkODg3Li4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL2VudW0ucGRm
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9lbnVtL2VudW0vZG9jL2VudW0ucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51
bS90ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdGVzdC5weQppbmRleCBkOWVkZmFlZTQwYWYuLmM4
YzRiOTYyMjQyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdGVzdC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2VudW0vZW51bS90ZXN0LnB5CkBAIC00NTIsOCArNDUyLDggQEAgY2xhc3MgVGVzdEVudW0odW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGVzW1NlYXNvbi5B
VVRVTU5dLCAnMTAzMScpCiAKICAgICBkZWYgdGVzdF9lbnVtX2R1cGxpY2F0ZXMoc2VsZik6Ci0g
ICAgICAgIF9vcmRlcl8gPSAiU1BSSU5HIFNVTU1FUiBBVVRVTU4gV0lOVEVSIgogICAgICAgICBj
bGFzcyBTZWFzb24oRW51bSk6CisgICAgICAgICAgICBfb3JkZXJfID0gIlNQUklORyBTVU1NRVIg
QVVUVU1OIFdJTlRFUiIKICAgICAgICAgICAgIFNQUklORyA9IDEKICAgICAgICAgICAgIFNVTU1F
UiA9IDIKICAgICAgICAgICAgIEFVVFVNTiA9IEZBTEwgPSAzCkBAIC02NjUsNyArNjY1LDcgQEAg
Y2xhc3MgVGVzdEVudW0odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICBw
cm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpCiAKICAgICBkZWYgdGVzdF9leHBsb2Rpbmdf
cGlja2xlKHNlbGYpOgotICAgICAgICBCYWRQaWNrbGUgPSBFbnVtKCdCYWRQaWNrbGUnLCAnZGls
bCBzd2VldCBicmVhZC1uLWJ1dHRlcicpCisgICAgICAgIEJhZFBpY2tsZSA9IEVudW0oJ0JhZFBp
Y2tsZScsICdkaWxsIHN3ZWV0IGJyZWFkX25fYnV0dGVyJykKICAgICAgICAgZW51bS5fbWFrZV9j
bGFzc191bnBpY2tsYWJsZShCYWRQaWNrbGUpCiAgICAgICAgIGdsb2JhbHMoKVsnQmFkUGlja2xl
J10gPSBCYWRQaWNrbGUKICAgICAgICAgdGVzdF9waWNrbGVfZXhjZXB0aW9uKHNlbGYuYXNzZXJ0
UmFpc2VzLCBUeXBlRXJyb3IsIEJhZFBpY2tsZS5kaWxsKQpAQCAtODEzLDYgKzgxMywyNyBAQCBj
bGFzcyBUZXN0RW51bSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoZSBpbiBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0eXBl
KGUpIGlzIFN1bW1lck1vbnRoKQogCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25f
aXRlcmFibGVfd2l0aF93ZWlyZF9uYW1lcyhzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBF
bnVtKAorICAgICAgICAgICAgICAgICdTdW1tZXJNb250aCcsCisgICAgICAgICAgICAgICAgKCgn
anVuZScsIDEpLCAoJ2p1bHknLCAyKSwgKCdhdWd1c3QnLCAzKSwgKCdmYWJ1bG91cyBzZXB0ZW1i
ZXInLCA0KSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9u
dGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgNCwgU3VtbWVyTW9u
dGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1v
bnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdCwgU3VtbWVyTW9u
dGhbJ2ZhYnVsb3VzIHNlcHRlbWJlciddXSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkg
YXVndXN0Jy5zcGxpdCgpICsgWydmYWJ1bG91cyBzZXB0ZW1iZXInXSk6CisgICAgICAgICAgICBp
ICs9IDEKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVx
dWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZSBpbiBTdW1tZXJNb250aCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSh0eXBlKGUpIGlzIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3Rf
cHJvZ3JhbWF0aWNfZnVuY3Rpb25fZnJvbV9kaWN0KHNlbGYpOgogICAgICAgICBTdW1tZXJNb250
aCA9IEVudW0oCiAgICAgICAgICAgICAgICAgJ1N1bW1lck1vbnRoJywKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZW51bS9lbnVtL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzEyODJmMWJiNS4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vTElDRU5TRQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51
bS9lbnVtL1JFQURNRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2Vu
dW0vdGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0zNC5lZ2ctaW5mby93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZmM1MzExMDJhOC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVnZy1pbmZvL1BLRy1J
TkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9lbnVtL2VudW0zNC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9l
bnVtMzQuZWdnLWluZm8vZGVwZW5kZW5jeV9saW5rcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVn
Zy1pbmZvL3RvcF9sZXZlbC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5jZmcgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2VudW0vc2V0dXAuY2ZnCmluZGV4IDg2MWE5ZjU1NDI2My4uOGJmZDVhMTJmODViIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2VudW0vc2V0dXAuY2ZnCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5jZmcKQEAg
LTEsNSArMSw0IEBACiBbZWdnX2luZm9dCiB0YWdfYnVpbGQgPSAKIHRhZ19kYXRlID0gMAotdGFn
X3N2bl9yZXZpc2lvbiA9IDAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3NldHVwLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9lbnVtL3NldHVwLnB5CmluZGV4IDhiMjg0MDAzNDg1Ni4uZjU0MDcxZTdmMGM0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2VudW0vc2V0dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3NldHVwLnB5CkBAIC05LDYg
KzksMTQgQEAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMiwgNyk6CiBlbHNlOg0KICAgICBy
ZXF1aXJlZCA9IFtdDQogDQorIyBEb24ndCBzaGFkb3cgYnVpbHRpbiBlbnVtIHBhY2thZ2UgaWYg
d2UgYXJlIGJlaW5nIGluc3RhbGxlZCBvbiBhDQorIyByZWNlbnQgUHl0aG9uLiAgVGhpcyBjYXVz
ZXMgY29uZmxpY3RzIHNpbmNlIGF0IGxlYXN0IDMuNjoNCisjIGh0dHBzOi8vYml0YnVja2V0Lm9y
Zy9zdG9uZWxlYWYvZW51bTM0L2lzc3Vlcy8xOS9lbnVtMzQtaXNudC1jb21wYXRpYmxlLXdpdGgt
cHl0aG9uLTM2DQoraWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNCk6DQorICAgIHBhY2th
Z2VzID0gWydlbnVtJ10NCitlbHNlOg0KKyAgICBwYWNrYWdlcyA9IFtdDQorDQogbG9uZ19kZXNj
ID0gJycnXA0KIGVudW0gLS0tIHN1cHBvcnQgZm9yIGVudW1lcmF0aW9ucw0KID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01NCwxNSArNjIsMTUgQEAgUmVwb3Np
dG9yeSBhbmQgSXNzdWUgVHJhY2tlciBhdCBodHRwczovL2JpdGJ1Y2tldC5vcmcvc3RvbmVsZWFm
L2VudW0zNC4KIHB5Ml9vbmx5ID0gKCkNCiBweTNfb25seSA9ICgpDQogbWFrZSA9IFsNCi0gICAg
ICAgICdyc3QycGRmIGVudW0vZG9jL2VudW0ucnN0IC0tb3V0cHV0PWVudW0vZG9jL2VudW0ucGRm
JywNCisgICAgICAgICMgJ3JzdDJwZGYgZW51bS9kb2MvZW51bS5yc3QgLS1vdXRwdXQ9ZW51bS9k
b2MvZW51bS5wZGYnLA0KICAgICAgICAgXQ0KIA0KIA0KIGRhdGEgPSBkaWN0KA0KICAgICAgICAg
bmFtZT0nZW51bTM0JywNCi0gICAgICAgIHZlcnNpb249JzEuMS42JywNCisgICAgICAgIHZlcnNp
b249JzEuMS4xMCcsDQogICAgICAgICB1cmw9J2h0dHBzOi8vYml0YnVja2V0Lm9yZy9zdG9uZWxl
YWYvZW51bTM0JywNCi0gICAgICAgIHBhY2thZ2VzPVsnZW51bSddLA0KKyAgICAgICAgcGFja2Fn
ZXM9cGFja2FnZXMsDQogICAgICAgICBwYWNrYWdlX2RhdGE9ew0KICAgICAgICAgICAgICdlbnVt
JyA6IFsNCiAgICAgICAgICAgICAgICAgJ0xJQ0VOU0UnLA0KQEAgLTkwLDggKzk4LDYgQEAgZGF0
YSA9IGRpY3QoCiAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6
IDIuNicsDQogICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAy
LjcnLA0KICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy4z
JywNCi0gICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNCcs
DQotICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjUnLA0K
ICAgICAgICAgICAgIF0sDQogICAgICAgICApDQogDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2MTc5MWNhNjc4NmUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0v
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2VudW0vTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vUkVB
RE1FCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9lbnVtL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9mdW5jc2lncy8uY292ZXJhZ2VyYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLmNvdmVyYWdlcmMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODNiZmMyMjBiMTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzLy5jb3ZlcmFnZXJjCkBAIC0wLDAgKzEsNiBA
QAorW3J1bl0KK3NvdXJjZT1mdW5jc2lncworb21pdD1mdW5jc2lncy9vZGljdCoKKworW3JlcG9y
dF0KK2luY2x1ZGU9ZnVuY3NpZ3MqCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzLy5naXRpZ25v
cmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5jOGQyYWY4NWQzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNz
aWdzLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxOSBAQAorKn4KKyouZWdnCisqLmVnZy1pbmZvCisq
LnB5YworKi5weW8KKyouc3dwCisuRFNfU3RvcmUKKy5jb3ZlcmFnZQorLnRveC8KK01BTklGRVNU
CitidWlsZC8KK2RvY3MvLmJ1aWxkLworZGlzdC8KK2VudiovCitodG1sY292LwordG1wLworY292
ZXJhZ2UueG1sCitqdW5pdC54bWwKKy5lZ2dzLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy8u
dHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMWU3YWJlMGI0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Z1bmNzaWdzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTggQEAKK2xhbmd1YWdlOiBweXRo
b24KK3B5dGhvbjoKKyAgLSAyLjYKKyAgLSAyLjcKKyAgLSAzLjMKKyAgLSAzLjQKKyAgLSAzLjUK
KyAgLSBuaWdodGx5CisgIC0gcHlweQorIyAgLSBweXB5MworaW5zdGFsbDoKKyAgLSBwaXAgaW5z
dGFsbCAtVSBwaXAgc2V0dXB0b29scyB3aGVlbAorICAtIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVt
ZW50cy9kZXZlbG9wbWVudC50eHQgLgorc2NyaXB0OgorICAtIGNvdmVyYWdlIHJ1biBzZXR1cC5w
eSB0ZXN0CisgIC0gY292ZXJhZ2UgcmVwb3J0IC0tc2hvdy1taXNzaW5nCithZnRlcl9zdWNjZXNz
OgorICAtIGNvdmVyYWxscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9DSEFOR0VMT0cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Z1bmNzaWdzL0NIQU5HRUxPRwppbmRleCA2MDJlZWM1ZTdjMmEuLmUxMzY2ZDI2NjhkMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9DSEFOR0VMT0cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9D
SEFOR0VMT0cKQEAgLTEsNiArMSwxMSBAQAogQ2hhbmdlbG9nCiAtLS0tLS0tLS0KIAorMC41Citg
YGAKKworKiBGaXggYmluZGluZyB3aXRoIHNlbGYgYXMgYSBrd2FyZy4gKFJvYmVydCBDb2xsaW5z
ICMxNCkKKwogMC40ICgyMDEzLTEyLTIwKQogYGBgYGBgYGBgYGBgYGBgYAogKiBGaXggdW5ib3Vu
ZCBtZXRob2RzIGdldHRpbmcgdGhlaXIgZmlyc3QgcGFyYW1ldGVyIGN1cnJpZWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1FLnJzdApp
bmRleCBmMDRiN2I0MjJjZjUuLjVmYmNhMjdlNmU2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy9SRUFETUUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1FLnJzdApAQCAtMSw3NCArMSwz
NDIgQEAKLWZ1bmNzaWdzCi09PT09PT09PQorLi4gZnVuY3NpZ3MgZG9jdW1lbnRhdGlvbiBtYXN0
ZXIgZmlsZSwgY3JlYXRlZCBieQorICAgc3BoaW54LXF1aWNrc3RhcnQgb24gRnJpIEFwciAyMCAy
MDoyNzo1MiAyMDEyLgorICAgWW91IGNhbiBhZGFwdCB0aGlzIGZpbGUgY29tcGxldGVseSB0byB5
b3VyIGxpa2luZywgYnV0IGl0IHNob3VsZCBhdCBsZWFzdAorICAgY29udGFpbiB0aGUgcm9vdCBg
dG9jdHJlZWAgZGlyZWN0aXZlLgorCitJbnRyb2R1Y2luZyBmdW5jc2lncworPT09PT09PT09PT09
PT09PT09PT0KKworVGhlIEZ1bmNzaWdzIFBhY2thZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IGBgZnVuY3NpZ3NgYCBpcyBhIGJhY2twb3J0IG9mIHRoZSBgUEVQIDM2MmBfIGZ1bmN0aW9uIHNp
Z25hdHVyZSBmZWF0dXJlcyBmcm9tCiBQeXRob24gMy4zJ3MgYGluc3BlY3RgXyBtb2R1bGUuIFRo
ZSBiYWNrcG9ydCBpcyBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIuNiwgMi43Ci1hcyB3ZWxsIGFz
IDMuMiBhbmQgdXAuCithcyB3ZWxsIGFzIDMuMyBhbmQgdXAuIDMuMiB3YXMgc3VwcG9ydGVkIGJ5
IHZlcnNpb24gMC40LCBidXQgd2l0aCBzZXR1cHRvb2xzIGFuZAorcGlwIG5vIGxvbmdlciBzdXBw
b3J0aW5nIDMuMiwgd2UgY2Fubm90IG1ha2UgYW55IHN0YXRlbWVudCBhYm91dCAzLjIKK2NvbXBh
dGliaWxpdHkuCiAKLXxweXBpX3ZlcnNpb258CitDb21wYXRpYmlsaXR5CitgYGBgYGBgYGBgYGBg
CisKK1RoZSBgYGZ1bmNzaWdzYGAgYmFja3BvcnQgaGFzIGJlZW4gdGVzdGVkIGFnYWluc3Q6CisK
KyogQ1B5dGhvbiAyLjYKKyogQ1B5dGhvbiAyLjcKKyogQ1B5dGhvbiAzLjMKKyogQ1B5dGhvbiAz
LjQKKyogQ1B5dGhvbiAzLjUKKyogQ1B5dGhvbiBuaWdodGxpZXMKKyogUHlQeSBhbmQgUHlQeTMo
Y3VycmVudGx5IGZhaWxpbmcgQ0kpCisKK0NvbnRpbnVvdXMgaW50ZWdyYXRpb24gdGVzdGluZyBp
cyBwcm92aWRlZCBieSBgVHJhdmlzIENJYF8uCisKK1VuZGVyIFB5dGhvbiAyLnggdGhlcmUgaXMg
YSBjb21wYXRpYmlsaXR5IGlzc3VlIHdoZW4gYSBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0bwordGhl
IGBgX193cmFwcGVkX19gYCBwcm9wZXJ0eSBvZiBhIGNsYXNzIGFmdGVyIGl0IGhhcyBiZWVuIGNv
bnN0cnVjdGVkLgorU2ltaWxpYXJpbHkgdGhlcmUgdW5kZXIgUHlQeSBkaXJlY3RseSBwYXNzaW5n
IHRoZSBgYF9fY2FsbF9fYGAgbWV0aG9kIG9mIGEKK2J1aWx0aW4gaXMgYWxzbyBhIGNvbXBhdGli
aWxpdHkgaXNzdWVzLiAgT3RoZXJ3aXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzCitiZWxpZXZlZCB0
byBiZSB1bmlmb3JtIGJldHdlZW4gYm90aCBQeXRob24yIGFuZCBQeXRob24zLgogCi1Eb2N1bWVu
dGF0aW9uCi0tLS0tLS0tLS0tLS0tCitJc3N1ZXMKK2BgYGBgYAogCi1UaGUgcmVmZXJlbmNlIGRv
Y3VtZW50YXRpb24gaXMgc3RhbmRhcmQgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvciB0aGUKLWBp
bnNwZWN0YF8gbW9kdWxlIGluIFB5dGhvbjMuIFRoaXMgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBp
bmNsdWRlZCBpbiB0aGUKLWBgZnVuY3NpZ3NgYCBwYWNrYWdlIGRvY3VtZW50YXRpb24gaG9zdGVk
IG9uIGBSZWFkIFRoZSBEb2NzYF8uCitTb3VyY2UgY29kZSBmb3IgYGBmdW5jc2lnc2BgIGlzIGhv
c3RlZCBvbiBgR2l0SHViYF8uIEFueSBidWcgcmVwb3J0cyBvciBmZWF0dXJlCityZXF1ZXN0cyBj
YW4gYmUgbWFkZSB1c2luZyBHaXRIdWIncyBgaXNzdWVzIHN5c3RlbWBfLiB8YnVpbGRfc3RhdHVz
fCB8Y292ZXJhZ2V8CiAKIEV4YW1wbGUKIC0tLS0tLS0KIAotVG8gb2J0YWluIGEgc2lnbmF0dXJl
IG9iamVjdCwgcGFzcyB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHRvIHRoZQotYGBmdW5jc2lncy5zaWdu
YXR1cmVgYCBmdW5jdGlvbi4gOjoKK1RvIG9idGFpbiBhIGBTaWduYXR1cmVgIG9iamVjdCwgcGFz
cyB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHRvIHRoZQorYGBmdW5jc2lncy5zaWduYXR1cmVgYCBmdW5j
dGlvbi4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgPj4+IGZyb20gZnVuY3NpZ3Mg
aW1wb3J0IHNpZ25hdHVyZQogICAgID4+PiBkZWYgZm9vKGEsIGI9Tm9uZSwgKmFyZ3MsICoqa3dh
cmdzKToKICAgICAuLi4gICAgIHBhc3MKLQorICAgIC4uLgogICAgID4+PiBzaWcgPSBzaWduYXR1
cmUoZm9vKQorICAgID4+PiBzaWcKKyAgICA8ZnVuY3NpZ3MuU2lnbmF0dXJlIG9iamVjdCBhdCAw
eC4uLj4KKyAgICA+Pj4gc2lnLnBhcmFtZXRlcnMKKyAgICBPcmRlcmVkRGljdChbKCdhJywgPFBh
cmFtZXRlciBhdCAweC4uLiAnYSc+KSwgKCdiJywgPFBhcmFtZXRlciBhdCAweC4uLiAnYic+KSwg
KCdhcmdzJywgPFBhcmFtZXRlciBhdCAweC4uLiAnYXJncyc+KSwgKCdrd2FyZ3MnLCA8UGFyYW1l
dGVyIGF0IDB4Li4uICdrd2FyZ3MnPildKQorICAgID4+PiBzaWcucmV0dXJuX2Fubm90YXRpb24K
KyAgICA8Y2xhc3MgJ2Z1bmNzaWdzLl9lbXB0eSc+CiAKLUZvciB0aGUgZGV0YWlscyBvZiB0aGUg
c2lnbmF0dXJlIG9iamVjdCwgcmVmZXIgdG8gdGhlIGVpdGhlciB0aGUgcGFja2FnZSBvZgotc3Rh
bmRhcmQgbGlicmFyeSBkb2N1bWVudGF0aW9uLgorSW50cm9zcGVjdGluZyBjYWxsYWJsZXMgd2l0
aCB0aGUgU2lnbmF0dXJlIG9iamVjdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1Db21wYXRhYmlsaXR5Ci0tLS0tLS0tLS0tLS0tCisuLiBub3Rl
OjoKIAotVGhlIGBgZnVuY3NpZ3NgYCBiYWNrcG9ydCBoYXMgYmVlbiB0ZXN0ZWQgYWdhaW5zdDoK
KyAgIFRoaXMgc2VjdGlvbiBvZiBkb2N1bWVudGF0aW9uIGlzIGEgZGlyZWN0IHJlcHJvZHVjdGlv
biBvZiB0aGUgUHl0aG9uCisgICBzdGFuZGFyZCBsaWJyYXJ5IGRvY3VtZW50YXRpb24gZm9yIHRo
ZSBpbnNwZWN0IG1vZHVsZS4KIAotKiBDUHl0aG9uIDIuNgotKiBDUHl0aG9uIDIuNwotKiBDUHl0
aG9uIDMuMgotKiBQeVB5IDEuOQorVGhlIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUg
Y2FsbCBzaWduYXR1cmUgb2YgYSBjYWxsYWJsZSBvYmplY3QgYW5kIGl0cworcmV0dXJuIGFubm90
YXRpb24uICBUbyByZXRyaWV2ZSBhIFNpZ25hdHVyZSBvYmplY3QsIHVzZSB0aGUgOmZ1bmM6YHNp
Z25hdHVyZWAKK2Z1bmN0aW9uLgogCi1Db250aW51b3VzIGludGVncmF0aW9uIHRlc3RpbmcgaXMg
cHJvdmlkZWQgYnkgYFRyYXZpcyBDSWBfLgorLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFi
bGUpCiAKLVVuZGVyIFB5dGhvbiAyLnggdGhlcmUgaXMgYSBjb21wYXRhYmlsaXR5IGlzc3VlIHdo
ZW4gYSBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0bwotdGhlIGBgX193cmFwcGVkX19gYCBwcm9wZXJ0
eSBvZiBhIGNsYXNzIGFmdGVyIGl0IGhhcyBiZWVuIGNvbnN0cnVjdGVkLgotU2ltaWxpYXJpbHkg
dGhlcmUgdW5kZXIgUHlQeSBkaXJlY3RseSBwYXNzaW5nIHRoZSBgYF9fY2FsbF9fYGAgbWV0aG9k
IG9mIGEKLWJ1aWx0aW4gaXMgYWxzbyBhIGNvbXBhdGFiaWxpdHkgaXNzdWVzLiAgT3RoZXJ3aXNl
IHRoZSBmdW5jdGlvbmFsaXR5IGlzCi1iZWxpZXZlZCB0byBiZSB1bmlmb3JtIGJldHdlZW4gYm90
aCBQeXRob24yIGFuZCBQeXRob24zLgorICAgUmV0dXJuIGEgOmNsYXNzOmBTaWduYXR1cmVgIG9i
amVjdCBmb3IgdGhlIGdpdmVuIGBgY2FsbGFibGVgYDo6CiAKLUlzc3VlcwotLS0tLS0tCisgICAg
ICA+Pj4gZnJvbSBmdW5jc2lncyBpbXBvcnQgc2lnbmF0dXJlCisgICAgICA+Pj4gZGVmIGZvbyhh
LCAqLCBiOmludCwgKiprd2FyZ3MpOgorICAgICAgLi4uICAgICBwYXNzCiAKLVNvdXJjZSBjb2Rl
IGZvciBgYGZ1bmNzaWdzYGAgaXMgaG9zdGVkIG9uIGBHaXRIdWJgXy4gQW55IGJ1ZyByZXBvcnRz
IG9yIGZlYXR1cmUKLXJlcXVlc3RzIGNhbiBiZSBtYWRlIHVzaW5nIEdpdEh1YidzIGBpc3N1ZXMg
c3lzdGVtYF8uIHxidWlsZF9zdGF0dXN8IHxjb3ZlcmFnZXwKKyAgICAgID4+PiBzaWcgPSBzaWdu
YXR1cmUoZm9vKQorCisgICAgICA+Pj4gc3RyKHNpZykKKyAgICAgICcoYSwgKiwgYjppbnQsICoq
a3dhcmdzKScKKworICAgICAgPj4+IHN0cihzaWcucGFyYW1ldGVyc1snYiddKQorICAgICAgJ2I6
aW50JworCisgICAgICA+Pj4gc2lnLnBhcmFtZXRlcnNbJ2InXS5hbm5vdGF0aW9uCisgICAgICA8
Y2xhc3MgJ2ludCc+CisKKyAgIEFjY2VwdHMgYSB3aWRlIHJhbmdlIG9mIHB5dGhvbiBjYWxsYWJs
ZXMsIGZyb20gcGxhaW4gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRvCisgICA6ZnVuYzpgZnVuY3Rv
b2xzLnBhcnRpYWxgIG9iamVjdHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTb21lIGNhbGxh
YmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50YXRpb25z
IG9mCisgICAgICBQeXRob24uICBGb3IgZXhhbXBsZSwgaW4gQ1B5dGhvbiwgYnVpbHQtaW4gZnVu
Y3Rpb25zIGRlZmluZWQgaW4gQyBwcm92aWRlCisgICAgICBubyBtZXRhZGF0YSBhYm91dCB0aGVp
ciBhcmd1bWVudHMuCisKKworLi4gY2xhc3M6OiBTaWduYXR1cmUKKworICAgQSBTaWduYXR1cmUg
b2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gYW5kIGl0
cyByZXR1cm4KKyAgIGFubm90YXRpb24uICBGb3IgZWFjaCBwYXJhbWV0ZXIgYWNjZXB0ZWQgYnkg
dGhlIGZ1bmN0aW9uIGl0IHN0b3JlcyBhCisgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0IGlu
IGl0cyA6YXR0cjpgcGFyYW1ldGVyc2AgY29sbGVjdGlvbi4KKworICAgU2lnbmF0dXJlIG9iamVj
dHMgYXJlICppbW11dGFibGUqLiAgVXNlIDptZXRoOmBTaWduYXR1cmUucmVwbGFjZWAgdG8gbWFr
ZSBhCisgICBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUuZW1w
dHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2Vu
Y2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJl
LnBhcmFtZXRlcnMKKworICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5h
bWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0
cy4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnJldHVybl9hbm5vdGF0aW9uCisKKyAg
ICAgIFRoZSAicmV0dXJuIiBhbm5vdGF0aW9uIGZvciB0aGUgY2FsbGFibGUuICBJZiB0aGUgY2Fs
bGFibGUgaGFzIG5vICJyZXR1cm4iCisgICAgICBhbm5vdGF0aW9uLCB0aGlzIGF0dHJpYnV0ZSBp
cyBzZXQgdG8gOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25h
dHVyZS5iaW5kKCphcmdzLCAqKmt3YXJncykKKworICAgICAgQ3JlYXRlIGEgbWFwcGluZyBmcm9t
IHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMuCisgICAgICBS
ZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgIGlmIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJn
c2BgIG1hdGNoIHRoZQorICAgICAgc2lnbmF0dXJlLCBvciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJy
b3JgLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUuYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3
YXJncykKKworICAgICAgV29ya3MgdGhlIHNhbWUgd2F5IGFzIDptZXRoOmBTaWduYXR1cmUuYmlu
ZGAsIGJ1dCBhbGxvd3MgdGhlIG9taXNzaW9uIG9mCisgICAgICBzb21lIHJlcXVpcmVkIGFyZ3Vt
ZW50cyAobWltaWNzIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgYmVoYXZpb3IuKQorICAgICAg
UmV0dXJucyA6Y2xhc3M6YEJvdW5kQXJndW1lbnRzYCwgb3IgcmFpc2VzIGEgOmV4YzpgVHlwZUVy
cm9yYCBpZiB0aGUKKyAgICAgIHBhc3NlZCBhcmd1bWVudHMgZG8gbm90IG1hdGNoIHRoZSBzaWdu
YXR1cmUuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5yZXBsYWNlKCpbLCBwYXJhbWV0ZXJz
XVssIHJldHVybl9hbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFNpZ25hdHVyZSBp
bnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZSB3YXMgaW52b2tlZAorICAgICAg
b24uICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGRpZmZlcmVudCBgYHBhcmFtZXRlcnNgYCBhbmQv
b3IKKyAgICAgIGBgcmV0dXJuX2Fubm90YXRpb25gYCB0byBvdmVycmlkZSB0aGUgY29ycmVzcG9u
ZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlCisgICAgICBzaWduYXR1cmUuICBUbyByZW1vdmUg
cmV0dXJuX2Fubm90YXRpb24gZnJvbSB0aGUgY29waWVkIFNpZ25hdHVyZSwgcGFzcyBpbgorICAg
ICAgOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBk
ZWYgdGVzdChhLCBiKToKKyAgICAgICAgIC4uLiAgICAgcGFzcworICAgICAgICAgPj4+IHNpZyA9
IHNpZ25hdHVyZSh0ZXN0KQorICAgICAgICAgPj4+IG5ld19zaWcgPSBzaWcucmVwbGFjZShyZXR1
cm5fYW5ub3RhdGlvbj0ibmV3IHJldHVybiBhbm5vIikKKyAgICAgICAgID4+PiBzdHIobmV3X3Np
ZykKKyAgICAgICAgICIoYSwgYikgLT4gJ25ldyByZXR1cm4gYW5ubyciCisKKworLi4gY2xhc3M6
OiBQYXJhbWV0ZXIKKworICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgSW5z
dGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAorICAgeW91IGNhbiB1c2UgOm1l
dGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5LgorCisgICAu
LiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxl
dmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgYW5kCisgICAg
ICBhbm5vdGF0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLm5hbWUKKworICAg
ICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIE11c3QgYmUgYSB2YWxp
ZCBweXRob24gaWRlbnRpZmllcgorICAgICAgbmFtZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBg
UE9TSVRJT05BTF9PTkxZYGAgcGFyYW1ldGVycywgd2hpY2ggY2FuIGhhdmUKKyAgICAgIGl0IHNl
dCB0byBgYE5vbmVgYCkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CisK
KyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFt
ZXRlciBoYXMgbm8gZGVmYXVsdAorICAgICAgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0
byA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVy
LmFubm90YXRpb24KKworICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIuICBJ
ZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBhbm5vdGF0aW9uLAorICAgICAgdGhpcyBhdHRyaWJ1dGUg
aXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQ
YXJhbWV0ZXIua2luZAorCisgICAgICBEZXNjcmliZXMgaG93IGFyZ3VtZW50IHZhbHVlcyBhcmUg
Ym91bmQgdG8gdGhlIHBhcmFtZXRlci4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgKGFjY2Vzc2li
bGUgdmlhIDpjbGFzczpgUGFyYW1ldGVyYCwgbGlrZSBgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlg
YCk6CisKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgTmFtZSAgICAgICAgICAg
ICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT05MWSogICAgICB8IFZh
bHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBwb3NpdGlvbmFsICAgICAgIHwKKyAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICB8IFB5dGhvbiBoYXMgbm8gZXhwbGljaXQgc3ludGF4IGZvciBkZWZpbmluZyAg
IHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwtb25seSBwYXJh
bWV0ZXJzLCBidXQgbWFueSBidWlsdC1pbnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICB8IGFuZCBleHRlbnNpb24gbW9kdWxlIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSAgIHwKKyAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRob3NlIHRoYXQgYWNjZXB0IG9ubHkgb25lIG9y
IHR3byBwYXJhbWV0ZXJzKXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFjY2Vw
dCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT1JfS0VZV09SRCp8IFZhbHVlIG1heSBiZSBz
dXBwbGllZCBhcyBlaXRoZXIgYSBrZXl3b3JkIG9yIHwKKyAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICB8IHBvc2l0aW9uYWwgYXJndW1lbnQgKHRoaXMgaXMgdGhlIHN0YW5kYXJkICAgIHwK
KyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJpbmRpbmcgYmVoYXZpb3VyIGZvciBm
dW5jdGlvbnMgaW1wbGVtZW50ZWQgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8
IGluIFB5dGhvbi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9QT1NJVElPTkFMKiAgICAgICB8IEEgdHVwbGUg
b2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmVuJ3QgIHwKKyAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICB8IGJvdW5kIHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgICAgICAg
ICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGNvcnJlc3BvbmRzIHRvIGEg
YGAqYXJnc2BgIHBhcmFtZXRlciBpbiBhICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKktFWVdPUkRfT05MWSogICAgICAgICB8IFZh
bHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LnwKKyAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICB8IEtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGFyZSB0aG9zZSB3
aGljaCAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFwcGVhciBhZnRl
ciBhIGBgKmBgIG9yIGBgKmFyZ3NgYCBlbnRyeSBpbiBhIHwKKyAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9LRVlXT1JEKiAgICAgICAg
ICB8IEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCBib3VuZHwKKyAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMg
Y29ycmVzcG9uZHMgdG8gYXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGBgKipr
d2FyZ3NgYCBwYXJhbWV0ZXIgaW4gYSBQeXRob24gZnVuY3Rpb24gIHwKKyAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICB8IGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgRXhhbXBsZTogcHJpbnQg
YWxsIGtleXdvcmQtb25seSBhcmd1bWVudHMgd2l0aG91dCBkZWZhdWx0IHZhbHVlczo6CisKKyAg
ICAgICAgID4+PiBkZWYgZm9vKGEsIGIsICosIGMsIGQ9MTApOgorICAgICAgICAgLi4uICAgICBw
YXNzCisKKyAgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorICAgICAgICAgPj4+IGZv
ciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgIC4uLiAgICAgaWYg
KHBhcmFtLmtpbmQgPT0gcGFyYW0uS0VZV09SRF9PTkxZIGFuZAorICAgICAgICAgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSk6CisgICAgICAg
ICAuLi4gICAgICAgICBwcmludCgnUGFyYW1ldGVyOicsIHBhcmFtKQorICAgICAgICAgUGFyYW1l
dGVyOiBjCisKKyAgIC4uIG1ldGhvZDo6IFBhcmFtZXRlci5yZXBsYWNlKCpbLCBuYW1lXVssIGtp
bmRdWywgZGVmYXVsdF1bLCBhbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFBhcmFt
ZXRlciBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZWQgd2FzIGludm9rZWQK
KyAgICAgIG9uLiAgVG8gb3ZlcnJpZGUgYSA6Y2xhc3M6YFBhcmFtZXRlcmAgYXR0cmlidXRlLCBw
YXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICBhcmd1bWVudC4gIFRvIHJlbW92ZSBhIGRlZmF1
bHQgdmFsdWUgb3IvYW5kIGFuIGFubm90YXRpb24gZnJvbSBhCisgICAgICBQYXJhbWV0ZXIsIHBh
c3MgOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBm
cm9tIGZ1bmNzaWdzIGltcG9ydCBQYXJhbWV0ZXIKKyAgICAgICAgID4+PiBwYXJhbSA9IFBhcmFt
ZXRlcignZm9vJywgUGFyYW1ldGVyLktFWVdPUkRfT05MWSwgZGVmYXVsdD00MikKKyAgICAgICAg
ID4+PiBzdHIocGFyYW0pCisgICAgICAgICAnZm9vPTQyJworCisgICAgICAgICA+Pj4gc3RyKHBh
cmFtLnJlcGxhY2UoKSkgIyBXaWxsIGNyZWF0ZSBhIHNoYWxsb3cgY29weSBvZiAncGFyYW0nCisg
ICAgICAgICAnZm9vPTQyJworCisgICAgICAgICA+Pj4gc3RyKHBhcmFtLnJlcGxhY2UoZGVmYXVs
dD1QYXJhbWV0ZXIuZW1wdHksIGFubm90YXRpb249J3NwYW0nKSkKKyAgICAgICAgICJmb286J3Nw
YW0nIgorCisKKy4uIGNsYXNzOjogQm91bmRBcmd1bWVudHMKKworICAgUmVzdWx0IG9mIGEgOm1l
dGg6YFNpZ25hdHVyZS5iaW5kYCBvciA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlhbGAgY2Fs
bC4KKyAgIEhvbGRzIHRoZSBtYXBwaW5nIG9mIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24ncyBw
YXJhbWV0ZXJzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5hcmd1bWVudHMK
KworICAgICAgQW4gb3JkZXJlZCwgbXV0YWJsZSBtYXBwaW5nICg6Y2xhc3M6YGNvbGxlY3Rpb25z
Lk9yZGVyZWREaWN0YCkgb2YKKyAgICAgIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3VtZW50cycg
dmFsdWVzLiAgQ29udGFpbnMgb25seSBleHBsaWNpdGx5IGJvdW5kCisgICAgICBhcmd1bWVudHMu
ICBDaGFuZ2VzIGluIDphdHRyOmBhcmd1bWVudHNgIHdpbGwgcmVmbGVjdCBpbiA6YXR0cjpgYXJn
c2AgYW5kCisgICAgICA6YXR0cjpga3dhcmdzYC4KKworICAgICAgU2hvdWxkIGJlIHVzZWQgaW4g
Y29uanVuY3Rpb24gd2l0aCA6YXR0cjpgU2lnbmF0dXJlLnBhcmFtZXRlcnNgIGZvciBhbnkKKyAg
ICAgIGFyZ3VtZW50IHByb2Nlc3NpbmcgcHVycG9zZXMuCisKKyAgICAgIC4uIG5vdGU6OgorCisg
ICAgICAgICBBcmd1bWVudHMgZm9yIHdoaWNoIDptZXRoOmBTaWduYXR1cmUuYmluZGAgb3IKKyAg
ICAgICAgIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCByZWxpZWQgb24gYSBkZWZhdWx0
IHZhbHVlIGFyZSBza2lwcGVkLgorICAgICAgICAgSG93ZXZlciwgaWYgbmVlZGVkLCBpdCBpcyBl
YXN5IHRvIGluY2x1ZGUgdGhlbS4KKworICAgICAgOjoKKworICAgICAgICA+Pj4gZGVmIGZvbyhh
LCBiPTEwKToKKyAgICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgICAgPj4+IHNpZyA9IHNpZ25h
dHVyZShmb28pCisgICAgICAgID4+PiBiYSA9IHNpZy5iaW5kKDUpCisKKyAgICAgICAgPj4+IGJh
LmFyZ3MsIGJhLmt3YXJncworICAgICAgICAoKDUsKSwge30pCisKKyAgICAgICAgPj4+IGZvciBw
YXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgLi4uICAgICBpZiBwYXJh
bS5uYW1lIG5vdCBpbiBiYS5hcmd1bWVudHM6CisgICAgICAgIC4uLiAgICAgICAgIGJhLmFyZ3Vt
ZW50c1twYXJhbS5uYW1lXSA9IHBhcmFtLmRlZmF1bHQKKworICAgICAgICA+Pj4gYmEuYXJncywg
YmEua3dhcmdzCisgICAgICAgICgoNSwgMTApLCB7fSkKKworCisgICAuLiBhdHRyaWJ1dGU6OiBC
b3VuZEFyZ3VtZW50cy5hcmdzCisKKyAgICAgIEEgdHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVu
dHMgdmFsdWVzLiAgRHluYW1pY2FsbHkgY29tcHV0ZWQgZnJvbSB0aGUKKyAgICAgIDphdHRyOmBh
cmd1bWVudHNgIGF0dHJpYnV0ZS4KKworICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMu
a3dhcmdzCisKKyAgICAgIEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMuICBEeW5h
bWljYWxseSBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgOmF0dHI6YGFyZ3VtZW50c2AgYXR0cmli
dXRlLgorCisgICBUaGUgOmF0dHI6YGFyZ3NgIGFuZCA6YXR0cjpga3dhcmdzYCBwcm9wZXJ0aWVz
IGNhbiBiZSB1c2VkIHRvIGludm9rZQorICAgZnVuY3Rpb25zOjoKKworICAgICAgZGVmIHRlc3Qo
YSwgKiwgYik6CisgICAgICAgICAuLi4KKworICAgICAgc2lnID0gc2lnbmF0dXJlKHRlc3QpCisg
ICAgICBiYSA9IHNpZy5iaW5kKDEwLCBiPTIwKQorICAgICAgdGVzdCgqYmEuYXJncywgKipiYS5r
d2FyZ3MpCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM2MmAgLSBGdW5jdGlvbiBTaWdu
YXR1cmUgT2JqZWN0LgorICAgICAgVGhlIGRldGFpbGVkIHNwZWNpZmljYXRpb24sIGltcGxlbWVu
dGF0aW9uIGRldGFpbHMgYW5kIGV4YW1wbGVzLgogCiBDb3B5cmlnaHQKIC0tLS0tLS0tLQogCi1U
aGlzIGlzIGEgZGVyaXZlZCB3b3JrIG9mIENQeXRob24gdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBg
UFNGIExpY2Vuc2UKKypmdW5jc2lncyogaXMgYSBkZXJpdmVkIHdvcmsgb2YgQ1B5dGhvbiB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIGBQU0YgTGljZW5zZQogQWdyZWVtZW50YF8uIFRoZSBvcmlnaW5h
bCBDUHl0aG9uIGluc3BlY3QgbW9kdWxlLCBpdHMgdW5pdCB0ZXN0cyBhbmQKIGRvY3VtZW50YXRp
b24gYXJlIHRoZSBjb3B5cmlnaHQgb2YgdGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBU
aGUgZGVyaXZlZAogd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgYEFwYWNoZSBMaWNlbnNl
IFZlcnNpb24gMi4wYF8uCiAKKy4uIF9QU0YgTGljZW5zZSBBZ3JlZW1lbnQ6IGh0dHA6Ly9kb2Nz
LnB5dGhvbi5vcmcvMy9saWNlbnNlLmh0bWwjdGVybXMtYW5kLWNvbmRpdGlvbnMtZm9yLWFjY2Vz
c2luZy1vci1vdGhlcndpc2UtdXNpbmctcHl0aG9uCiAuLiBfQXBhY2hlIExpY2Vuc2UgVmVyc2lv
biAyLjA6IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wCi0uLiBfR2l0
SHViOiBodHRwczovL2dpdGh1Yi5jb20vYWxpbGVzL2Z1bmNzaWdzCisuLiBfR2l0SHViOiBodHRw
czovL2dpdGh1Yi5jb20vdGVzdGluZy1jYWJhbC9mdW5jc2lncwogLi4gX1BTRiBMaWNlbnNlIEFn
cmVlbWVudDogaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zL2xpY2Vuc2UuaHRtbCN0ZXJtcy1hbmQt
Y29uZGl0aW9ucy1mb3ItYWNjZXNzaW5nLW9yLW90aGVyd2lzZS11c2luZy1weXRob24KIC4uIF9U
cmF2aXMgQ0k6IGh0dHA6Ly90cmF2aXMtY2kub3JnLwogLi4gX1JlYWQgVGhlIERvY3M6IGh0dHA6
Ly9mdW5jc2lncy5yZWFkdGhlZG9jcy5vcmcvCiAuLiBfUEVQIDM2MjogaHR0cDovL3d3dy5weXRo
b24ub3JnL2Rldi9wZXBzL3BlcC0wMzYyLwogLi4gX2luc3BlY3Q6IGh0dHA6Ly9kb2NzLnB5dGhv
bi5vcmcvMy9saWJyYXJ5L2luc3BlY3QuaHRtbCNpbnRyb3NwZWN0aW5nLWNhbGxhYmxlcy13aXRo
LXRoZS1zaWduYXR1cmUtb2JqZWN0Ci0uLiBfaXNzdWVzIHN5c3RlbTogaHR0cHM6Ly9naXRodWIu
Y29tL2FsaWVzL2Z1bmNzaWdzL2lzc3VlcworLi4gX2lzc3VlcyBzeXN0ZW06IGh0dHBzOi8vZ2l0
aHViLmNvbS90ZXN0aW5nLWNhYmFsL2Z1bmNzaWdzL2lzc3VlcwogCiAuLiB8YnVpbGRfc3RhdHVz
fCBpbWFnZTo6IGh0dHBzOi8vc2VjdXJlLnRyYXZpcy1jaS5vcmcvYWxpbGVzL2Z1bmNzaWdzLnBu
Zz9icmFuY2g9bWFzdGVyCiAgICA6dGFyZ2V0OiBodHRwOi8vdHJhdmlzLWNpLm9yZy8jIS9hbGls
ZXMvZnVuY3NpZ3MKQEAgLTgxLDMgKzM0OSw1IEBAIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIGBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMGBfLgogLi4gfHB5cGlfdmVyc2lvbnwgaW1h
Z2U6OiBodHRwczovL3B5cGlwLmluL3YvZnVuY3NpZ3MvYmFkZ2UucG5nCiAgICA6dGFyZ2V0OiBo
dHRwczovL2NyYXRlLmlvL3BhY2thZ2VzL2Z1bmNzaWdzLwogICAgOmFsdDogTGF0ZXN0IFB5UEkg
dmVyc2lvbgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9fdGVtcGxhdGVzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMzI1MTI5NGEwZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2Nz
L190ZW1wbGF0ZXMvcGFnZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvaW5k
ZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL2luZGV4LnJzdAppbmRleCA1ZDBmNDJmOTM2OGIu
Ljg5YTAxMDY5NDFmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL2luZGV4LnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvaW5kZXgucnN0CkBAIC0xLDMxNSArMSBAQAotLi4gZnVu
Y3NpZ3MgZG9jdW1lbnRhdGlvbiBtYXN0ZXIgZmlsZSwgY3JlYXRlZCBieQotICAgc3BoaW54LXF1
aWNrc3RhcnQgb24gRnJpIEFwciAyMCAyMDoyNzo1MiAyMDEyLgotICAgWW91IGNhbiBhZGFwdCB0
aGlzIGZpbGUgY29tcGxldGVseSB0byB5b3VyIGxpa2luZywgYnV0IGl0IHNob3VsZCBhdCBsZWFz
dAotICAgY29udGFpbiB0aGUgcm9vdCBgdG9jdHJlZWAgZGlyZWN0aXZlLgotCi1JbnRyb2R1Y2lu
ZyBmdW5jc2lncwotPT09PT09PT09PT09PT09PT09PT0KLQotVGhlIEZ1bmNzaWdzIFBhY2thZ2UK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSpmdW5jc2lncyogaXMgYSBiYWNrcG9ydCBvZiB0aGUg
YFBFUCAzNjJgXyBmdW5jdGlvbiBzaWduYXR1cmUgZmVhdHVyZXMgZnJvbQotUHl0aG9uIDMuMydz
IGBpbnNwZWN0YF8gbW9kdWxlLiBUaGUgYmFja3BvcnQgaXMgY29tcGF0aWJsZSB3aXRoIFB5dGhv
biAyLjYsIDIuNwotYXMgd2VsbCBhcyAzLjIgYW5kIHVwLgotCi0uLiBfUEVQIDM2MjogaHR0cDov
L3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzYyLwotLi4gX2luc3BlY3Q6IGh0dHA6Ly9k
b2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2luc3BlY3QuaHRtbCNpbnRyb3NwZWN0aW5nLWNhbGxh
Ymxlcy13aXRoLXRoZS1zaWduYXR1cmUtb2JqZWN0Ci0KLUNvbXBhdGFiaWxpdHkKLWBgYGBgYGBg
YGBgYGAKLQotVGhlICpmdW5jc2lncyogYmFja3BvcnQgaGFzIGJlZW4gdGVzdGVkIGFnYWluc3Q6
Ci0KLSogQ1B5dGhvbiAyLjYKLSogQ1B5dGhvbiAyLjcKLSogQ1B5dGhvbiAzLjIKLSogUHlQeSAx
LjkKLQotQ29udGludW91cyBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGlzIHByb3ZpZGVkIGJ5IGBUcmF2
aXMgQ0lgXy4KLQotVW5kZXIgUHl0aG9uIDIueCB0aGVyZSBpcyBhIGNvbXBhdGFiaWxpdHkgaXNz
dWUgd2hlbiBhIGZ1bmN0aW9uIGlzIGFzc2lnbmVkIHRvCi10aGUgYGBfX3dyYXBwZWRfX2BgIHBy
b3BlcnR5IG9mIGEgY2xhc3MgYWZ0ZXIgaXQgaGFzIGJlZW4gY29uc3RydWN0ZWQuCi1TaW1pbGlh
cmlseSB0aGVyZSB1bmRlciBQeVB5IGRpcmVjdGx5IHBhc3NpbmcgdGhlIGBgX19jYWxsX19gYCBt
ZXRob2Qgb2YgYQotYnVpbHRpbiBpcyBhbHNvIGEgY29tcGF0YWJpbGl0eSBpc3N1ZXMuICBPdGhl
cndpc2UgdGhlIGZ1bmN0aW9uYWxpdHkgaXMKLWJlbGlldmVkIHRvIGJlIHVuaWZvcm0gYmV0d2Vl
biBib3RoIFB5dGhvbjIgYW5kIFB5dGhvbjMuCi0KLS4uIF9UcmF2aXMgQ0k6IGh0dHA6Ly90cmF2
aXMtY2kub3JnLwotCi1Jc3N1ZXMKLWBgYGBgYAotCi1Tb3VyY2UgY29kZSBmb3IgKmZ1bmNzaWdz
KiBpcyBob3N0ZWQgb24gYEdpdEh1YmBfLiBBbnkgYnVnIHJlcG9ydHMgb3IgZmVhdHVyZQotcmVx
dWVzdHMgY2FuIGJlIG1hZGUgdXNpbmcgR2l0SHViJ3MgYGlzc3VlcyBzeXN0ZW1gXy4KLQotLi4g
X0dpdEh1YjogaHR0cHM6Ly9naXRodWIuY29tL2FsaWxlcy9mdW5jc2lncwotLi4gX2lzc3VlcyBz
eXN0ZW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGllcy9mdW5jc2lncy9pc3N1ZXMKLQotSW50cm9z
cGVjdGluZyBjYWxsYWJsZXMgd2l0aCB0aGUgU2lnbmF0dXJlIG9iamVjdAotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBub3RlOjoKLQotICAg
VGhpcyBzZWN0aW9uIG9mIGRvY3VtZW50YXRpb24gaXMgYSBkaXJlY3QgcmVwb2R1Y3Rpb24gb2Yg
dGhlIFB5dGhvbgotICAgc3RhbmRhcmQgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvciB0aGUgaW5z
cGVjdCBtb2R1bGUuCi0KLVRoZSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwg
c2lnbmF0dXJlIG9mIGEgY2FsbGFibGUgb2JqZWN0IGFuZCBpdHMKLXJldHVybiBhbm5vdGF0aW9u
LiAgVG8gcmV0cmlldmUgYSBTaWduYXR1cmUgb2JqZWN0LCB1c2UgdGhlIDpmdW5jOmBzaWduYXR1
cmVgCi1mdW5jdGlvbi4KLQotLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFibGUpCi0KLSAg
IFJldHVybiBhIDpjbGFzczpgU2lnbmF0dXJlYCBvYmplY3QgZm9yIHRoZSBnaXZlbiBgYGNhbGxh
YmxlYGA6OgotCi0gICAgICA+Pj4gZnJvbSBpbnNwZWN0IGltcG9ydCBzaWduYXR1cmUKLSAgICAg
ID4+PiBkZWYgZm9vKGEsICosIGI6aW50LCAqKmt3YXJncyk6Ci0gICAgICAuLi4gICAgIHBhc3MK
LQotICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZShmb28pCi0KLSAgICAgID4+PiBzdHIoc2lnKQot
ICAgICAgJyhhLCAqLCBiOmludCwgKiprd2FyZ3MpJwotCi0gICAgICA+Pj4gc3RyKHNpZy5wYXJh
bWV0ZXJzWydiJ10pCi0gICAgICAnYjppbnQnCi0KLSAgICAgID4+PiBzaWcucGFyYW1ldGVyc1sn
YiddLmFubm90YXRpb24KLSAgICAgIDxjbGFzcyAnaW50Jz4KLQotICAgQWNjZXB0cyBhIHdpZGUg
cmFuZ2Ugb2YgcHl0aG9uIGNhbGxhYmxlcywgZnJvbSBwbGFpbiBmdW5jdGlvbnMgYW5kIGNsYXNz
ZXMgdG8KLSAgIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgb2JqZWN0cy4KLQotICAgLi4gbm90
ZTo6Ci0KLSAgICAgIFNvbWUgY2FsbGFibGVzIG1heSBub3QgYmUgaW50cm9zcGVjdGFibGUgaW4g
Y2VydGFpbiBpbXBsZW1lbnRhdGlvbnMgb2YKLSAgICAgIFB5dGhvbi4gIEZvciBleGFtcGxlLCBp
biBDUHl0aG9uLCBidWlsdC1pbiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBDIHByb3ZpZGUKLSAgICAg
IG5vIG1ldGFkYXRhIGFib3V0IHRoZWlyIGFyZ3VtZW50cy4KLQotCi0uLiBjbGFzczo6IFNpZ25h
dHVyZQotCi0gICBBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgY2FsbCBzaWduYXR1
cmUgb2YgYSBmdW5jdGlvbiBhbmQgaXRzIHJldHVybgotICAgYW5ub3RhdGlvbi4gIEZvciBlYWNo
IHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUgZnVuY3Rpb24gaXQgc3RvcmVzIGEKLSAgIDpjbGFz
czpgUGFyYW1ldGVyYCBvYmplY3QgaW4gaXRzIDphdHRyOmBwYXJhbWV0ZXJzYCBjb2xsZWN0aW9u
LgotCi0gICBTaWduYXR1cmUgb2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBVc2UgOm1ldGg6YFNp
Z25hdHVyZS5yZXBsYWNlYCB0byBtYWtlIGEKLSAgIG1vZGlmaWVkIGNvcHkuCi0KLSAgIC4uIGF0
dHJpYnV0ZTo6IFNpZ25hdHVyZS5lbXB0eQotCi0gICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwg
bWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBhIHJldHVybiBhbm5vdGF0aW9uLgotCi0gICAu
LiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUucGFyYW1ldGVycwotCi0gICAgICBBbiBvcmRlcmVkIG1h
cHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgIDpj
bGFzczpgUGFyYW1ldGVyYCBvYmplY3RzLgotCi0gICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUu
cmV0dXJuX2Fubm90YXRpb24KLQotICAgICAgVGhlICJyZXR1cm4iIGFubm90YXRpb24gZm9yIHRo
ZSBjYWxsYWJsZS4gIElmIHRoZSBjYWxsYWJsZSBoYXMgbm8gInJldHVybiIKLSAgICAgIGFubm90
YXRpb24sIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgU2lnbmF0dXJlLmVtcHR5YC4K
LQotICAgLi4gbWV0aG9kOjogU2lnbmF0dXJlLmJpbmQoKmFyZ3MsICoqa3dhcmdzKQotCi0gICAg
ICBDcmVhdGUgYSBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMg
dG8gcGFyYW1ldGVycy4KLSAgICAgIFJldHVybnMgOmNsYXNzOmBCb3VuZEFyZ3VtZW50c2AgaWYg
YGAqYXJnc2BgIGFuZCBgYCoqa3dhcmdzYGAgbWF0Y2ggdGhlCi0gICAgICBzaWduYXR1cmUsIG9y
IHJhaXNlcyBhIDpleGM6YFR5cGVFcnJvcmAuCi0KLSAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5i
aW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgICBXb3JrcyB0aGUgc2FtZSB3YXkg
YXMgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCwgYnV0IGFsbG93cyB0aGUgb21pc3Npb24gb2YKLSAg
ICAgIHNvbWUgcmVxdWlyZWQgYXJndW1lbnRzIChtaW1pY3MgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0
aWFsYCBiZWhhdmlvci4pCi0gICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgLCBv
ciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZQotICAgICAgcGFzc2VkIGFyZ3VtZW50
cyBkbyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZS4KLQotICAgLi4gbWV0aG9kOjogU2lnbmF0dXJl
LnJlcGxhY2UoKlssIHBhcmFtZXRlcnNdWywgcmV0dXJuX2Fubm90YXRpb25dKQotCi0gICAgICBD
cmVhdGUgYSBuZXcgU2lnbmF0dXJlIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnN0YW5jZSByZXBs
YWNlIHdhcyBpbnZva2VkCi0gICAgICBvbi4gIEl0IGlzIHBvc3NpYmxlIHRvIHBhc3MgZGlmZmVy
ZW50IGBgcGFyYW1ldGVyc2BgIGFuZC9vcgotICAgICAgYGByZXR1cm5fYW5ub3RhdGlvbmBgIHRv
IG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgb2YgdGhlIGJhc2UKLSAgICAg
IHNpZ25hdHVyZS4gIFRvIHJlbW92ZSByZXR1cm5fYW5ub3RhdGlvbiBmcm9tIHRoZSBjb3BpZWQg
U2lnbmF0dXJlLCBwYXNzIGluCi0gICAgICA6YXR0cjpgU2lnbmF0dXJlLmVtcHR5YC4KLQotICAg
ICAgOjoKLQotICAgICAgICAgPj4+IGRlZiB0ZXN0KGEsIGIpOgotICAgICAgICAgLi4uICAgICBw
YXNzCi0gICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKHRlc3QpCi0gICAgICAgICA+Pj4gbmV3
X3NpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPSJuZXcgcmV0dXJuIGFubm8iKQot
ICAgICAgICAgPj4+IHN0cihuZXdfc2lnKQotICAgICAgICAgIihhLCBiKSAtPiAnbmV3IHJldHVy
biBhbm5vJyIKLQotCi0uLiBjbGFzczo6IFBhcmFtZXRlcgotCi0gICBQYXJhbWV0ZXIgb2JqZWN0
cyBhcmUgKmltbXV0YWJsZSouICBJbnN0ZWFkIG9mIG1vZGlmeWluZyBhIFBhcmFtZXRlciBvYmpl
Y3QsCi0gICB5b3UgY2FuIHVzZSA6bWV0aDpgUGFyYW1ldGVyLnJlcGxhY2VgIHRvIGNyZWF0ZSBh
IG1vZGlmaWVkIGNvcHkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5lbXB0eQotCi0g
ICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBk
ZWZhdWx0IHZhbHVlcyBhbmQKLSAgICAgIGFubm90YXRpb25zLgotCi0gICAuLiBhdHRyaWJ1dGU6
OiBQYXJhbWV0ZXIubmFtZQotCi0gICAgICBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGFzIGEg
c3RyaW5nLiAgTXVzdCBiZSBhIHZhbGlkIHB5dGhvbiBpZGVudGlmaWVyCi0gICAgICBuYW1lICh3
aXRoIHRoZSBleGNlcHRpb24gb2YgYGBQT1NJVElPTkFMX09OTFlgYCBwYXJhbWV0ZXJzLCB3aGlj
aCBjYW4gaGF2ZQotICAgICAgaXQgc2V0IHRvIGBgTm9uZWBgKS4KLQotICAgLi4gYXR0cmlidXRl
OjogUGFyYW1ldGVyLmRlZmF1bHQKLQotICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBw
YXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBkZWZhdWx0Ci0gICAgICB2YWx1ZSwg
dGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgotCi0gICAu
LiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuYW5ub3RhdGlvbgotCi0gICAgICBUaGUgYW5ub3RhdGlv
biBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGFubm90YXRpb24s
Ci0gICAgICB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAu
Ci0KLSAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5raW5kCi0KLSAgICAgIERlc2NyaWJlcyBo
b3cgYXJndW1lbnQgdmFsdWVzIGFyZSBib3VuZCB0byB0aGUgcGFyYW1ldGVyLiAgUG9zc2libGUg
dmFsdWVzCi0gICAgICAoYWNjZXNzaWJsZSB2aWEgOmNsYXNzOmBQYXJhbWV0ZXJgLCBsaWtlIGBg
UGFyYW1ldGVyLktFWVdPUkRfT05MWWBgKToKLQotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAg
ICAgfCAgICBOYW1lICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgICAgfCAqUE9T
SVRJT05BTF9PTkxZKiAgICAgIHwgVmFsdWUgbXVzdCBiZSBzdXBwbGllZCBhcyBhIHBvc2l0aW9u
YWwgICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGhhcyBubyBleHBsaWNp
dCBzeW50YXggZm9yIGRlZmluaW5nICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
IHwgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMsIGJ1dCBtYW55IGJ1aWx0LWlufAotICAgICAg
fCAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kIGV4dGVuc2lvbiBtb2R1bGUgZnVuY3Rpb25z
IChlc3BlY2lhbGx5ICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhvc2Ug
dGhhdCBhY2NlcHQgb25seSBvbmUgb3IgdHdvIHBhcmFtZXRlcnMpfAotICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgIHwgYWNjZXB0IHRoZW0uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAqUE9TSVRJT05BTF9PUl9L
RVlXT1JEKnwgVmFsdWUgbWF5IGJlIHN1cHBsaWVkIGFzIGVpdGhlciBhIGtleXdvcmQgb3IgfAot
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgcG9zaXRpb25hbCBhcmd1bWVudCAodGhp
cyBpcyB0aGUgc3RhbmRhcmQgICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwg
YmluZGluZyBiZWhhdmlvdXIgZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCAgfAotICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgIHwgaW4gUHl0aG9uLikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAqVkFSX1BPU0lU
SU9OQUwqICAgICAgIHwgQSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZW4n
dCAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYm91bmQgdG8gYW55IG90aGVy
IHBhcmFtZXRlci4gVGhpcyAgICAgICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgIHwgY29ycmVzcG9uZHMgdG8gYSBgYCphcmdzYGAgcGFyYW1ldGVyIGluIGEgICAgfAotICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGZ1bmN0aW9uIGRlZmluaXRpb24u
ICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAqS0VZ
V09SRF9PTkxZKiAgICAgICAgIHwgVmFsdWUgbXVzdCBiZSBzdXBwbGllZCBhcyBhIGtleXdvcmQg
YXJndW1lbnQufAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgS2V5d29yZCBvbmx5
IHBhcmFtZXRlcnMgYXJlIHRob3NlIHdoaWNoICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgYXBwZWFyIGFmdGVyIGEgYGAqYGAgb3IgYGAqYXJnc2BgIGVudHJ5IGluIGEg
fAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGZ1bmN0aW9uIGRlZmlu
aXRpb24uICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAg
fCAqVkFSX0tFWVdPUkQqICAgICAgICAgIHwgQSBkaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHRo
YXQgYXJlbid0IGJvdW5kfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgdG8gYW55
IG90aGVyIHBhcmFtZXRlci4gVGhpcyBjb3JyZXNwb25kcyB0byBhfAotICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgIHwgYGAqKmt3YXJnc2BgIHBhcmFtZXRlciBpbiBhIFB5dGhvbiBmdW5j
dGlvbiAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmaW5pdGlvbi4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
Ci0gICAgICBFeGFtcGxlOiBwcmludCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aXRob3V0
IGRlZmF1bHQgdmFsdWVzOjoKLQotICAgICAgICAgPj4+IGRlZiBmb28oYSwgYiwgKiwgYywgZD0x
MCk6Ci0gICAgICAgICAuLi4gICAgIHBhc3MKLQotICAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVy
ZShmb28pCi0gICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygp
OgotICAgICAgICAgLi4uICAgICBpZiAocGFyYW0ua2luZCA9PSBwYXJhbS5LRVlXT1JEX09OTFkg
YW5kCi0gICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0IGlz
IHBhcmFtLmVtcHR5KToKLSAgICAgICAgIC4uLiAgICAgICAgIHByaW50KCdQYXJhbWV0ZXI6Jywg
cGFyYW0pCi0gICAgICAgICBQYXJhbWV0ZXI6IGMKLQotICAgLi4gbWV0aG9kOjogUGFyYW1ldGVy
LnJlcGxhY2UoKlssIG5hbWVdWywga2luZF1bLCBkZWZhdWx0XVssIGFubm90YXRpb25dKQotCi0g
ICAgICBDcmVhdGUgYSBuZXcgUGFyYW1ldGVyIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnN0YW5j
ZSByZXBsYWNlZCB3YXMgaW52b2tlZAotICAgICAgb24uICBUbyBvdmVycmlkZSBhIDpjbGFzczpg
UGFyYW1ldGVyYCBhdHRyaWJ1dGUsIHBhc3MgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgIGFyZ3Vt
ZW50LiAgVG8gcmVtb3ZlIGEgZGVmYXVsdCB2YWx1ZSBvci9hbmQgYW4gYW5ub3RhdGlvbiBmcm9t
IGEKLSAgICAgIFBhcmFtZXRlciwgcGFzcyA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KLQotICAg
ICAgOjoKLQotICAgICAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgUGFyYW1ldGVyCi0gICAg
ICAgICA+Pj4gcGFyYW0gPSBQYXJhbWV0ZXIoJ2ZvbycsIFBhcmFtZXRlci5LRVlXT1JEX09OTFks
IGRlZmF1bHQ9NDIpCi0gICAgICAgICA+Pj4gc3RyKHBhcmFtKQotICAgICAgICAgJ2Zvbz00MicK
LQotICAgICAgICAgPj4+IHN0cihwYXJhbS5yZXBsYWNlKCkpICMgV2lsbCBjcmVhdGUgYSBzaGFs
bG93IGNvcHkgb2YgJ3BhcmFtJwotICAgICAgICAgJ2Zvbz00MicKLQotICAgICAgICAgPj4+IHN0
cihwYXJhbS5yZXBsYWNlKGRlZmF1bHQ9UGFyYW1ldGVyLmVtcHR5LCBhbm5vdGF0aW9uPSdzcGFt
JykpCi0gICAgICAgICAiZm9vOidzcGFtJyIKLQotCi0uLiBjbGFzczo6IEJvdW5kQXJndW1lbnRz
Ci0KLSAgIFJlc3VsdCBvZiBhIDptZXRoOmBTaWduYXR1cmUuYmluZGAgb3IgOm1ldGg6YFNpZ25h
dHVyZS5iaW5kX3BhcnRpYWxgIGNhbGwuCi0gICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVu
dHMgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KLQotICAgLi4gYXR0cmlidXRlOjogQm91
bmRBcmd1bWVudHMuYXJndW1lbnRzCi0KLSAgICAgIEFuIG9yZGVyZWQsIG11dGFibGUgbWFwcGlu
ZyAoOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGApIG9mCi0gICAgICBwYXJhbWV0ZXJz
JyBuYW1lcyB0byBhcmd1bWVudHMnIHZhbHVlcy4gIENvbnRhaW5zIG9ubHkgZXhwbGljaXRseSBi
b3VuZAotICAgICAgYXJndW1lbnRzLiAgQ2hhbmdlcyBpbiA6YXR0cjpgYXJndW1lbnRzYCB3aWxs
IHJlZmxlY3QgaW4gOmF0dHI6YGFyZ3NgIGFuZAotICAgICAgOmF0dHI6YGt3YXJnc2AuCi0KLSAg
ICAgIFNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmF0dHI6YFNpZ25hdHVyZS5w
YXJhbWV0ZXJzYCBmb3IgYW55Ci0gICAgICBhcmd1bWVudCBwcm9jZXNzaW5nIHB1cnBvc2VzLgot
Ci0gICAgICAuLiBub3RlOjoKLQotICAgICAgICAgQXJndW1lbnRzIGZvciB3aGljaCA6bWV0aDpg
U2lnbmF0dXJlLmJpbmRgIG9yCi0gICAgICAgICA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlh
bGAgcmVsaWVkIG9uIGEgZGVmYXVsdCB2YWx1ZSBhcmUgc2tpcHBlZC4KLSAgICAgICAgIEhvd2V2
ZXIsIGlmIG5lZWRlZCwgaXQgaXMgZWFzeSB0byBpbmNsdWRlIHRoZW0uCi0KLSAgICAgIDo6Ci0K
LSAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0xMCk6Ci0gICAgICAgIC4uLiAgICAgcGFzcwotCi0g
ICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQotICAgICAgICA+Pj4gYmEgPSBzaWcuYmlu
ZCg1KQotCi0gICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKLSAgICAgICAgKCg1LCksIHt9
KQotCi0gICAgICAgID4+PiBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCk6Ci0g
ICAgICAgIC4uLiAgICAgaWYgcGFyYW0ubmFtZSBub3QgaW4gYmEuYXJndW1lbnRzOgotICAgICAg
ICAuLi4gICAgICAgICBiYS5hcmd1bWVudHNbcGFyYW0ubmFtZV0gPSBwYXJhbS5kZWZhdWx0Ci0K
LSAgICAgICAgPj4+IGJhLmFyZ3MsIGJhLmt3YXJncwotICAgICAgICAoKDUsIDEwKSwge30pCi0K
LQotICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMuYXJncwotCi0gICAgICBBIHR1cGxl
IG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZhbHVlcy4gIER5bmFtaWNhbGx5IGNvbXB1dGVkIGZy
b20gdGhlCi0gICAgICA6YXR0cjpgYXJndW1lbnRzYCBhdHRyaWJ1dGUuCi0KLSAgIC4uIGF0dHJp
YnV0ZTo6IEJvdW5kQXJndW1lbnRzLmt3YXJncwotCi0gICAgICBBIGRpY3Qgb2Yga2V5d29yZCBh
cmd1bWVudHMgdmFsdWVzLiAgRHluYW1pY2FsbHkgY29tcHV0ZWQgZnJvbSB0aGUKLSAgICAgIDph
dHRyOmBhcmd1bWVudHNgIGF0dHJpYnV0ZS4KLQotICAgVGhlIDphdHRyOmBhcmdzYCBhbmQgOmF0
dHI6YGt3YXJnc2AgcHJvcGVydGllcyBjYW4gYmUgdXNlZCB0byBpbnZva2UKLSAgIGZ1bmN0aW9u
czo6Ci0KLSAgICAgIGRlZiB0ZXN0KGEsICosIGIpOgotICAgICAgICAgLi4uCi0KLSAgICAgIHNp
ZyA9IHNpZ25hdHVyZSh0ZXN0KQotICAgICAgYmEgPSBzaWcuYmluZCgxMCwgYj0yMCkKLSAgICAg
IHRlc3QoKmJhLmFyZ3MsICoqYmEua3dhcmdzKQotCi0KLS4uIHNlZWFsc286OgotCi0gICA6cGVw
OmAzNjJgIC0gRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdC4KLSAgICAgIFRoZSBkZXRhaWxlZCBz
cGVjaWZpY2F0aW9uLCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBleGFtcGxlcy4KLQotQ29w
eXJpZ2h0Ci0tLS0tLS0tLS0KLQotKmZ1bmNzaWdzKiBpcyBhIGRlcml2ZWQgd29yayBvZiBDUHl0
aG9uIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgYFBTRiBMaWNlbnNlCi1BZ3JlZW1lbnRgXy4gVGhl
IG9yaWdpbmFsIENQeXRob24gaW5zcGVjdCBtb2R1bGUsIGl0cyB1bml0IHRlc3RzIGFuZAotZG9j
dW1lbnRhdGlvbiBhcmUgdGhlIGNvcHlyaWdodCBvZiB0aGUgUHl0aG9uIFNvZnR3YXJlIEZvdW5k
YXRpb24uIFRoZSBkZXJpdmVkCi13b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBgQXBhY2hl
IExpY2Vuc2UgVmVyc2lvbiAyLjBgXy4KLQotLi4gX1BTRiBMaWNlbnNlIEFncmVlbWVudDogaHR0
cDovL2RvY3MucHl0aG9uLm9yZy8zL2xpY2Vuc2UuaHRtbCN0ZXJtcy1hbmQtY29uZGl0aW9ucy1m
b3ItYWNjZXNzaW5nLW9yLW90aGVyd2lzZS11c2luZy1weXRob24KLS4uIF9BcGFjaGUgTGljZW5z
ZSBWZXJzaW9uIDIuMDogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0FwYWNoZS0yLjAK
Ky4uL1JFQURNRS5yc3QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Z1bmNzaWdzL2RvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNGNjODAwODFkMS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9N
YWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2Nz
L2luZGV4LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy9fX2luaXRfXy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3MvX19pbml0X18ucHkKaW5kZXggZmQyZjQ3YjFkNGRm
Li41ZjUzNzhiNDJhNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3MvX19pbml0
X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy9fX2luaXRfXy5weQpAQCAtMiw3ICsy
LDcgQEAKICIiIkZ1bmN0aW9uIHNpZ25hdHVyZSBvYmplY3RzIGZvciBjYWxsYWJsZXMKIAogQmFj
ayBwb3J0IG9mIFB5dGhvbiAzLjMncyBmdW5jdGlvbiBzaWduYXR1cmUgdG9vbHMgZnJvbSB0aGUg
aW5zcGVjdCBtb2R1bGUsCi1tb2RpZmllZCB0byBiZSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIu
NiwgMi43IGFuZCAzLjIrLgorbW9kaWZpZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAy
LjYsIDIuNyBhbmQgMy4zKy4KICIiIgogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGl0ZXJ0b29scwpAQCAtMTMs
NyArMTMsNyBAQCBpbXBvcnQgdHlwZXMKIHRyeToKICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gZnVuY3NpZ3Mub2Rp
Y3QgaW1wb3J0IE9yZGVyZWREaWN0CisgICAgZnJvbSBvcmRlcmVkZGljdCBpbXBvcnQgT3JkZXJl
ZERpY3QKIAogZnJvbSBmdW5jc2lncy52ZXJzaW9uIGltcG9ydCBfX3ZlcnNpb25fXwogCkBAIC02
MSwxOCArNjEsMjkgQEAgZGVmIHNpZ25hdHVyZShvYmopOgogICAgIGlmIGlzaW5zdGFuY2Uob2Jq
LCB0eXBlcy5NZXRob2RUeXBlKToKICAgICAgICAgc2lnID0gc2lnbmF0dXJlKG9iai5fX2Z1bmNf
XykKICAgICAgICAgaWYgb2JqLl9fc2VsZl9fIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFVuYm91
bmQgbWV0aG9kOiB0aGUgZmlyc3QgcGFyYW1ldGVyIGJlY29tZXMgcG9zaXRpb25hbC1vbmx5Ci0g
ICAgICAgICAgICBpZiBzaWcucGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICBmaXJzdCA9IHNp
Zy5wYXJhbWV0ZXJzLnZhbHVlcygpWzBdLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgIGtp
bmQ9X1BPU0lUSU9OQUxfT05MWSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2lnLnJlcGxhY2Uo
Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM9KGZpcnN0LCkgKyB0dXBsZShzaWcucGFy
YW1ldGVycy52YWx1ZXMoKSlbMTpdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc2lnCisgICAgICAgICAgICAjIFVuYm91bmQgbWV0aG9kIC0gcHJlc2VydmUgYXMt
aXMuCisgICAgICAgICAgICByZXR1cm4gc2lnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAj
IEluIHRoaXMgY2FzZSB3ZSBza2lwIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlp
bmcKLSAgICAgICAgICAgICMgZnVuY3Rpb24gKHVzdWFsbHkgYHNlbGZgIG9yIGBjbHNgKS4KLSAg
ICAgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0
ZXJzLnZhbHVlcygpKVsxOl0pCisgICAgICAgICAgICAjIEJvdW5kIG1ldGhvZC4gRWF0IHNlbGYg
LSBpZiB3ZSBjYW4uCisgICAgICAgICAgICBwYXJhbXMgPSB0dXBsZShzaWcucGFyYW1ldGVycy52
YWx1ZXMoKSkKKworICAgICAgICAgICAgaWYgbm90IHBhcmFtcyBvciBwYXJhbXNbMF0ua2luZCBp
biAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKToKKyAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdpbnZhbGlkIG1ldGhvZCBzaWduYXR1cmUnKQorCisgICAgICAgICAgICBraW5k
ID0gcGFyYW1zWzBdLmtpbmQKKyAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9QT1NJVElPTkFMX09S
X0tFWVdPUkQsIF9QT1NJVElPTkFMX09OTFkpOgorICAgICAgICAgICAgICAgICMgRHJvcCBmaXJz
dCBwYXJhbWV0ZXI6CisgICAgICAgICAgICAgICAgIyAnKHAxLCBwMlssIC4uLl0pJyAtPiAnKHAy
WywgLi4uXSknCisgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zWzE6XQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBraW5kIGlzIG5vdCBfVkFSX1BPU0lUSU9OQUw6
CisgICAgICAgICAgICAgICAgICAgICMgVW5sZXNzIHdlIGFkZCBhIG5ldyBwYXJhbWV0ZXIgdHlw
ZSB3ZSBuZXZlcgorICAgICAgICAgICAgICAgICAgICAjIGdldCBoZXJlCisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgYXJndW1lbnQgdHlwZScpCisgICAgICAg
ICAgICAgICAgIyBJdCdzIGEgdmFyLXBvc2l0aW9uYWwgcGFyYW1ldGVyLgorICAgICAgICAgICAg
ICAgICMgRG8gbm90aGluZy4gJygqYXJnc1ssIC4uLl0pJyAtPiAnKCphcmdzWywgLi4uXSknCisK
KyAgICAgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXBhcmFtcykKIAogICAg
IHRyeToKICAgICAgICAgc2lnID0gb2JqLl9fc2lnbmF0dXJlX18KQEAgLTc2OSwxNiArNzgwLDE2
IEBAIGNsYXNzIFNpZ25hdHVyZShvYmplY3QpOgogICAgICAgICAgICAgICAgICMgUHJvY2VzcyBv
dXIgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tr
d2FyZ3NfcGFyYW0ubmFtZV0gPSBrd2FyZ3MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpCisgICAg
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cyAl
cicgJSBrd2FyZ3MpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50c19jbHMo
c2VsZiwgYXJndW1lbnRzKQogCi0gICAgZGVmIGJpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK
KyAgICBkZWYgYmluZCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAnJydHZXQgYSBCb3VuZEFy
Z3VtZW50cyBvYmplY3QsIHRoYXQgbWFwcyB0aGUgcGFzc2VkIGBhcmdzYAogICAgICAgICBhbmQg
YGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiAgUmFpc2VzIGBUeXBlRXJyb3Jg
CiAgICAgICAgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCiAgICAg
ICAgICcnJwotICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MpCisgICAgICAg
IHJldHVybiBhcmdzWzBdLl9iaW5kKGFyZ3NbMTpdLCBrd2FyZ3MpCiAKICAgICBkZWYgYmluZF9w
YXJ0aWFsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICcnJ0dldCBhIEJvdW5kQXJn
dW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
ZnVuY3NpZ3MvZnVuY3NpZ3Mvb2RpY3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL29kaWN0
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjIxZTk3MWIzNzkuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL29kaWN0LnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMjYxICswLDAgQEAKLSMgQmFja3BvcnQgb2YgT3JkZXJlZERpY3QoKSBjbGFzcyB0aGF0
IHJ1bnMgb24gUHl0aG9uIDIuNCwgMi41LCAyLjYsIDIuNyBhbmQgcHlweS4KLSMgUGFzc2VzIFB5
dGhvbjIuNydzIHRlc3Qgc3VpdGUgYW5kIGluY29ycG9yYXRlcyBhbGwgdGhlIGxhdGVzdCB1cGRh
dGVzLgotIyBDb3B5cmlnaHQgMjAwOSBSYXltb25kIEhldHRpbmdlcgotIyBodHRwOi8vY29kZS5h
Y3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvCi0iT3JkZXJlZCBkaWN0aW9uYXJ5IgotCi10
cnk6Ci0gICAgZnJvbSB0aHJlYWQgaW1wb3J0IGdldF9pZGVudCBhcyBfZ2V0X2lkZW50Ci1leGNl
cHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSBkdW1teV90aHJlYWQgaW1wb3J0IGdldF9pZGVudCBh
cyBfZ2V0X2lkZW50Ci0KLXRyeToKLSAgICBmcm9tIF9hYmNvbGwgaW1wb3J0IEtleXNWaWV3LCBW
YWx1ZXNWaWV3LCBJdGVtc1ZpZXcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLQot
Y2xhc3MgT3JkZXJlZERpY3QoZGljdCk6Ci0gICAgJ0RpY3Rpb25hcnkgdGhhdCByZW1lbWJlcnMg
aW5zZXJ0aW9uIG9yZGVyJwotICAgICMgQW4gaW5oZXJpdGVkIGRpY3QgbWFwcyBrZXlzIHRvIHZh
bHVlcy4KLSAgICAjIFRoZSBpbmhlcml0ZWQgZGljdCBwcm92aWRlcyBfX2dldGl0ZW1fXywgX19s
ZW5fXywgX19jb250YWluc19fLCBhbmQgZ2V0LgotICAgICMgVGhlIHJlbWFpbmluZyBtZXRob2Rz
IGFyZSBvcmRlci1hd2FyZS4KLSAgICAjIEJpZy1PIHJ1bm5pbmcgdGltZXMgZm9yIGFsbCBtZXRo
b2RzIGFyZSB0aGUgc2FtZSBhcyBmb3IgcmVndWxhciBkaWN0aW9uYXJpZXMuCi0KLSAgICAjIFRo
ZSBpbnRlcm5hbCBzZWxmLl9fbWFwIGRpY3Rpb25hcnkgbWFwcyBrZXlzIHRvIGxpbmtzIGluIGEg
ZG91Ymx5IGxpbmtlZCBsaXN0LgotICAgICMgVGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlz
dCBzdGFydHMgYW5kIGVuZHMgd2l0aCBhIHNlbnRpbmVsIGVsZW1lbnQuCi0gICAgIyBUaGUgc2Vu
dGluZWwgZWxlbWVudCBuZXZlciBnZXRzIGRlbGV0ZWQgKHRoaXMgc2ltcGxpZmllcyB0aGUgYWxn
b3JpdGhtKS4KLSAgICAjIEVhY2ggbGluayBpcyBzdG9yZWQgYXMgYSBsaXN0IG9mIGxlbmd0aCB0
aHJlZTogIFtQUkVWLCBORVhULCBLRVldLgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdz
LCAqKmt3ZHMpOgotICAgICAgICAnJydJbml0aWFsaXplIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4g
IFNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhcyBmb3IKLSAgICAgICAgcmVndWxhciBkaWN0aW9uYXJp
ZXMsIGJ1dCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgbm90IHJlY29tbWVuZGVkCi0gICAgICAgIGJl
Y2F1c2UgdGhlaXIgaW5zZXJ0aW9uIG9yZGVyIGlzIGFyYml0cmFyeS4KLQotICAgICAgICAnJycK
LSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcign
ZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihhcmdzKSkKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fX3Jvb3QKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0
ZUVycm9yOgotICAgICAgICAgICAgc2VsZi5fX3Jvb3QgPSByb290ID0gW10gICAgICAgICAgICAg
ICAgICAgICAjIHNlbnRpbmVsIG5vZGUKLSAgICAgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9v
dCwgTm9uZV0KLSAgICAgICAgICAgIHNlbGYuX19tYXAgPSB7fQotICAgICAgICBzZWxmLl9fdXBk
YXRlKCphcmdzLCAqKmt3ZHMpCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1
ZSwgZGljdF9zZXRpdGVtPWRpY3QuX19zZXRpdGVtX18pOgotICAgICAgICAnb2QuX19zZXRpdGVt
X18oaSwgeSkgPD09PiBvZFtpXT15JwotICAgICAgICAjIFNldHRpbmcgYSBuZXcgaXRlbSBjcmVh
dGVzIGEgbmV3IGxpbmsgd2hpY2ggZ29lcyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5rZWQKLSAgICAg
ICAgIyBsaXN0LCBhbmQgdGhlIGluaGVyaXRlZCBkaWN0aW9uYXJ5IGlzIHVwZGF0ZWQgd2l0aCB0
aGUgbmV3IGtleS92YWx1ZSBwYWlyLgotICAgICAgICBpZiBrZXkgbm90IGluIHNlbGY6Ci0gICAg
ICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKLSAgICAgICAgICAgIGxhc3QgPSByb290WzBdCi0g
ICAgICAgICAgICBsYXN0WzFdID0gcm9vdFswXSA9IHNlbGYuX19tYXBba2V5XSA9IFtsYXN0LCBy
b290LCBrZXldCi0gICAgICAgIGRpY3Rfc2V0aXRlbShzZWxmLCBrZXksIHZhbHVlKQotCi0gICAg
ZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSwgZGljdF9kZWxpdGVtPWRpY3QuX19kZWxpdGVtX18p
OgotICAgICAgICAnb2QuX19kZWxpdGVtX18oeSkgPD09PiBkZWwgb2RbeV0nCi0gICAgICAgICMg
RGVsZXRpbmcgYW4gZXhpc3RpbmcgaXRlbSB1c2VzIHNlbGYuX19tYXAgdG8gZmluZCB0aGUgbGlu
ayB3aGljaCBpcwotICAgICAgICAjIHRoZW4gcmVtb3ZlZCBieSB1cGRhdGluZyB0aGUgbGlua3Mg
aW4gdGhlIHByZWRlY2Vzc29yIGFuZCBzdWNjZXNzb3Igbm9kZXMuCi0gICAgICAgIGRpY3RfZGVs
aXRlbShzZWxmLCBrZXkpCi0gICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBrZXkgPSBzZWxm
Ll9fbWFwLnBvcChrZXkpCi0gICAgICAgIGxpbmtfcHJldlsxXSA9IGxpbmtfbmV4dAotICAgICAg
ICBsaW5rX25leHRbMF0gPSBsaW5rX3ByZXYKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAg
ICAgICAgJ29kLl9faXRlcl9fKCkgPD09PiBpdGVyKG9kKScKLSAgICAgICAgcm9vdCA9IHNlbGYu
X19yb290Ci0gICAgICAgIGN1cnIgPSByb290WzFdCi0gICAgICAgIHdoaWxlIGN1cnIgaXMgbm90
IHJvb3Q6Ci0gICAgICAgICAgICB5aWVsZCBjdXJyWzJdCi0gICAgICAgICAgICBjdXJyID0gY3Vy
clsxXQotCi0gICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKLSAgICAgICAgJ29kLl9fcmV2ZXJz
ZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpJwotICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKLSAg
ICAgICAgY3VyciA9IHJvb3RbMF0KLSAgICAgICAgd2hpbGUgY3VyciBpcyBub3Qgcm9vdDoKLSAg
ICAgICAgICAgIHlpZWxkIGN1cnJbMl0KLSAgICAgICAgICAgIGN1cnIgPSBjdXJyWzBdCi0KLSAg
ICBkZWYgY2xlYXIoc2VsZik6Ci0gICAgICAgICdvZC5jbGVhcigpIC0+IE5vbmUuICBSZW1vdmUg
YWxsIGl0ZW1zIGZyb20gb2QuJwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3Igbm9kZSBp
biBzZWxmLl9fbWFwLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBkZWwgbm9kZVs6XQot
ICAgICAgICAgICAgcm9vdCA9IHNlbGYuX19yb290Ci0gICAgICAgICAgICByb290WzpdID0gW3Jv
b3QsIHJvb3QsIE5vbmVdCi0gICAgICAgICAgICBzZWxmLl9fbWFwLmNsZWFyKCkKLSAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBkaWN0LmNs
ZWFyKHNlbGYpCi0KLSAgICBkZWYgcG9waXRlbShzZWxmLCBsYXN0PVRydWUpOgotICAgICAgICAn
JydvZC5wb3BpdGVtKCkgLT4gKGssIHYpLCByZXR1cm4gYW5kIHJlbW92ZSBhIChrZXksIHZhbHVl
KSBwYWlyLgotICAgICAgICBQYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiBsYXN0
IGlzIHRydWUgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KLQotICAgICAgICAnJycKLSAgICAgICAg
aWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcignZGljdGlvbmFyeSBpcyBl
bXB0eScpCi0gICAgICAgIHJvb3QgPSBzZWxmLl9fcm9vdAotICAgICAgICBpZiBsYXN0OgotICAg
ICAgICAgICAgbGluayA9IHJvb3RbMF0KLSAgICAgICAgICAgIGxpbmtfcHJldiA9IGxpbmtbMF0K
LSAgICAgICAgICAgIGxpbmtfcHJldlsxXSA9IHJvb3QKLSAgICAgICAgICAgIHJvb3RbMF0gPSBs
aW5rX3ByZXYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmsgPSByb290WzFdCi0gICAg
ICAgICAgICBsaW5rX25leHQgPSBsaW5rWzFdCi0gICAgICAgICAgICByb290WzFdID0gbGlua19u
ZXh0Ci0gICAgICAgICAgICBsaW5rX25leHRbMF0gPSByb290Ci0gICAgICAgIGtleSA9IGxpbmtb
Ml0KLSAgICAgICAgZGVsIHNlbGYuX19tYXBba2V5XQotICAgICAgICB2YWx1ZSA9IGRpY3QucG9w
KHNlbGYsIGtleSkKLSAgICAgICAgcmV0dXJuIGtleSwgdmFsdWUKLQotICAgICMgLS0gdGhlIGZv
bGxvd2luZyBtZXRob2RzIGRvIG5vdCBkZXBlbmQgb24gdGhlIGludGVybmFsIHN0cnVjdHVyZSAt
LQotCi0gICAgZGVmIGtleXMoc2VsZik6Ci0gICAgICAgICdvZC5rZXlzKCkgLT4gbGlzdCBvZiBr
ZXlzIGluIG9kJwotICAgICAgICByZXR1cm4gbGlzdChzZWxmKQotCi0gICAgZGVmIHZhbHVlcyhz
ZWxmKToKLSAgICAgICAgJ29kLnZhbHVlcygpIC0+IGxpc3Qgb2YgdmFsdWVzIGluIG9kJwotICAg
ICAgICByZXR1cm4gW3NlbGZba2V5XSBmb3Iga2V5IGluIHNlbGZdCi0KLSAgICBkZWYgaXRlbXMo
c2VsZik6Ci0gICAgICAgICdvZC5pdGVtcygpIC0+IGxpc3Qgb2YgKGtleSwgdmFsdWUpIHBhaXJz
IGluIG9kJwotICAgICAgICByZXR1cm4gWyhrZXksIHNlbGZba2V5XSkgZm9yIGtleSBpbiBzZWxm
XQotCi0gICAgZGVmIGl0ZXJrZXlzKHNlbGYpOgotICAgICAgICAnb2QuaXRlcmtleXMoKSAtPiBh
biBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIGluIG9kJwotICAgICAgICByZXR1cm4gaXRlcihzZWxm
KQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICdvZC5pdGVydmFsdWVzIC0+
IGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHZhbHVlcyBpbiBvZCcKLSAgICAgICAgZm9yIGsgaW4gc2Vs
ZjoKLSAgICAgICAgICAgIHlpZWxkIHNlbGZba10KLQotICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6
Ci0gICAgICAgICdvZC5pdGVyaXRlbXMgLT4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgKGtleSwgdmFs
dWUpIGl0ZW1zIGluIG9kJwotICAgICAgICBmb3IgayBpbiBzZWxmOgotICAgICAgICAgICAgeWll
bGQgKGssIHNlbGZba10pCi0KLSAgICBkZWYgdXBkYXRlKCphcmdzLCAqKmt3ZHMpOgotICAgICAg
ICAnJydvZC51cGRhdGUoRSwgKipGKSAtPiBOb25lLiAgVXBkYXRlIG9kIGZyb20gZGljdC9pdGVy
YWJsZSBFIGFuZCBGLgotCi0gICAgICAgIElmIEUgaXMgYSBkaWN0IGluc3RhbmNlLCBkb2VzOiAg
ICAgICAgICAgZm9yIGsgaW4gRTogb2Rba10gPSBFW2tdCi0gICAgICAgIElmIEUgaGFzIGEgLmtl
eXMoKSBtZXRob2QsIGRvZXM6ICAgICAgICAgZm9yIGsgaW4gRS5rZXlzKCk6IG9kW2tdID0gRVtr
XQotICAgICAgICBPciBpZiBFIGlzIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zLCBkb2VzOiAgIGZvciBr
LCB2IGluIEU6IG9kW2tdID0gdgotICAgICAgICBJbiBlaXRoZXIgY2FzZSwgdGhpcyBpcyBmb2xs
b3dlZCBieTogICAgIGZvciBrLCB2IGluIEYuaXRlbXMoKTogb2Rba10gPSB2Ci0KLSAgICAgICAg
JycnCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoJ3VwZGF0ZSgpIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsICcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXJndW1lbnRzICglZCBnaXZlbiknICUgKGxlbihhcmdzKSwpKQotICAg
ICAgICBlbGlmIG5vdCBhcmdzOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1cGRhdGUo
KSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKScpCi0gICAgICAgIHNlbGYgPSBh
cmdzWzBdCi0gICAgICAgICMgTWFrZSBwcm9ncmVzc2l2ZWx5IHdlYWtlciBhc3N1bXB0aW9ucyBh
Ym91dCAib3RoZXIiCi0gICAgICAgIG90aGVyID0gKCkKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09
IDI6Ci0gICAgICAgICAgICBvdGhlciA9IGFyZ3NbMV0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShv
dGhlciwgZGljdCk6Ci0gICAgICAgICAgICBmb3Iga2V5IGluIG90aGVyOgotICAgICAgICAgICAg
ICAgIHNlbGZba2V5XSA9IG90aGVyW2tleV0KLSAgICAgICAgZWxpZiBoYXNhdHRyKG90aGVyLCAn
a2V5cycpOgotICAgICAgICAgICAgZm9yIGtleSBpbiBvdGhlci5rZXlzKCk6Ci0gICAgICAgICAg
ICAgICAgc2VsZltrZXldID0gb3RoZXJba2V5XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
Zm9yIGtleSwgdmFsdWUgaW4gb3RoZXI6Ci0gICAgICAgICAgICAgICAgc2VsZltrZXldID0gdmFs
dWUKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dkcy5pdGVtcygpOgotICAgICAgICAgICAg
c2VsZltrZXldID0gdmFsdWUKLQotICAgIF9fdXBkYXRlID0gdXBkYXRlICAjIGxldCBzdWJjbGFz
c2VzIG92ZXJyaWRlIHVwZGF0ZSB3aXRob3V0IGJyZWFraW5nIF9faW5pdF9fCi0KLSAgICBfX21h
cmtlciA9IG9iamVjdCgpCi0KLSAgICBkZWYgcG9wKHNlbGYsIGtleSwgZGVmYXVsdD1fX21hcmtl
cik6Ci0gICAgICAgICcnJ29kLnBvcChrWyxkXSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmllZCBrZXkg
YW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZS4KLSAgICAgICAgSWYga2V5IGlzIG5v
dCBmb3VuZCwgZCBpcyByZXR1cm5lZCBpZiBnaXZlbiwgb3RoZXJ3aXNlIEtleUVycm9yIGlzIHJh
aXNlZC4KLQotICAgICAgICAnJycKLSAgICAgICAgaWYga2V5IGluIHNlbGY6Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzZWxmW2tleV0KLSAgICAgICAgICAgIGRlbCBzZWxmW2tleV0KLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgaWYgZGVmYXVsdCBpcyBzZWxmLl9fbWFya2VyOgot
ICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQotICAgICAgICByZXR1cm4gZGVmYXVsdAot
Ci0gICAgZGVmIHNldGRlZmF1bHQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgotICAgICAgICAn
b2Quc2V0ZGVmYXVsdChrWyxkXSkgLT4gb2QuZ2V0KGssZCksIGFsc28gc2V0IG9kW2tdPWQgaWYg
ayBub3QgaW4gb2QnCi0gICAgICAgIGlmIGtleSBpbiBzZWxmOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGZba2V5XQotICAgICAgICBzZWxmW2tleV0gPSBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBk
ZWZhdWx0Ci0KLSAgICBkZWYgX19yZXByX18oc2VsZiwgX3JlcHJfcnVubmluZz17fSk6Ci0gICAg
ICAgICdvZC5fX3JlcHJfXygpIDw9PT4gcmVwcihvZCknCi0gICAgICAgIGNhbGxfa2V5ID0gaWQo
c2VsZiksIF9nZXRfaWRlbnQoKQotICAgICAgICBpZiBjYWxsX2tleSBpbiBfcmVwcl9ydW5uaW5n
OgotICAgICAgICAgICAgcmV0dXJuICcuLi4nCi0gICAgICAgIF9yZXByX3J1bm5pbmdbY2FsbF9r
ZXldID0gMQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gJyVzKCknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCkKLSAgICAg
ICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5p
dGVtcygpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZGVsIF9yZXByX3J1bm5pbmdb
Y2FsbF9rZXldCi0KLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgJ1JldHVybiBz
dGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcnCi0gICAgICAgIGl0ZW1zID0gW1trLCBzZWxm
W2tdXSBmb3IgayBpbiBzZWxmXQotICAgICAgICBpbnN0X2RpY3QgPSB2YXJzKHNlbGYpLmNvcHko
KQotICAgICAgICBmb3IgayBpbiB2YXJzKE9yZGVyZWREaWN0KCkpOgotICAgICAgICAgICAgaW5z
dF9kaWN0LnBvcChrLCBOb25lKQotICAgICAgICBpZiBpbnN0X2RpY3Q6Ci0gICAgICAgICAgICBy
ZXR1cm4gKHNlbGYuX19jbGFzc19fLCAoaXRlbXMsKSwgaW5zdF9kaWN0KQotICAgICAgICByZXR1
cm4gc2VsZi5fX2NsYXNzX18sIChpdGVtcywpCi0KLSAgICBkZWYgY29weShzZWxmKToKLSAgICAg
ICAgJ29kLmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBvZCcKLSAgICAgICAgcmV0dXJuIHNl
bGYuX19jbGFzc19fKHNlbGYpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbWtleXMo
Y2xzLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSk6Ci0gICAgICAgICcnJ09ELmZyb21rZXlzKFNbLCB2
XSkgLT4gTmV3IG9yZGVyZWQgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSBTCi0gICAgICAgIGFu
ZCB2YWx1ZXMgZXF1YWwgdG8gdiAod2hpY2ggZGVmYXVsdHMgdG8gTm9uZSkuCi0KLSAgICAgICAg
JycnCi0gICAgICAgIGQgPSBjbHMoKQotICAgICAgICBmb3Iga2V5IGluIGl0ZXJhYmxlOgotICAg
ICAgICAgICAgZFtrZXldID0gdmFsdWUKLSAgICAgICAgcmV0dXJuIGQKLQotICAgIGRlZiBfX2Vx
X18oc2VsZiwgb3RoZXIpOgotICAgICAgICAnJydvZC5fX2VxX18oeSkgPD09PiBvZD09eS4gIENv
bXBhcmlzb24gdG8gYW5vdGhlciBPRCBpcyBvcmRlci1zZW5zaXRpdmUKLSAgICAgICAgd2hpbGUg
Y29tcGFyaXNvbiB0byBhIHJlZ3VsYXIgbWFwcGluZyBpcyBvcmRlci1pbnNlbnNpdGl2ZS4KLQot
ICAgICAgICAnJycKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgT3JkZXJlZERpY3QpOgot
ICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmKT09bGVuKG90aGVyKSBhbmQgc2VsZi5pdGVtcygp
ID09IG90aGVyLml0ZW1zKCkKLSAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVy
KQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2Vs
ZiA9PSBvdGhlcgotCi0gICAgIyAtLSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG9ubHkgdXNl
ZCBpbiBQeXRob24gMi43IC0tCi0KLSAgICBkZWYgdmlld2tleXMoc2VsZik6Ci0gICAgICAgICJv
ZC52aWV3a2V5cygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gb2Qn
cyBrZXlzIgotICAgICAgICByZXR1cm4gS2V5c1ZpZXcoc2VsZikKLQotICAgIGRlZiB2aWV3dmFs
dWVzKHNlbGYpOgotICAgICAgICAib2Qudmlld3ZhbHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRp
bmcgYSB2aWV3IG9uIG9kJ3MgdmFsdWVzIgotICAgICAgICByZXR1cm4gVmFsdWVzVmlldyhzZWxm
KQotCi0gICAgZGVmIHZpZXdpdGVtcyhzZWxmKToKLSAgICAgICAgIm9kLnZpZXdpdGVtcygpIC0+
IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gb2QncyBpdGVtcyIKLSAgICAg
ICAgcmV0dXJuIEl0ZW1zVmlldyhzZWxmKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5j
c2lncy92ZXJzaW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy92ZXJzaW9uLnB5CmluZGV4
IDg5NmEzNzBjYWQxNi4uNzg2MzkxNWZhNWY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1
bmNzaWdzL3ZlcnNpb24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy92ZXJzaW9uLnB5
CkBAIC0xICsxIEBACi1fX3ZlcnNpb25fXyA9ICIwLjQiCitfX3ZlcnNpb25fXyA9ICIxLjAuMiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Z1bmNzaWdzL2Z1bmNzaWdzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmYzFhZWRlN2I0N2YuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1
bmNzaWdzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mv
ZnVuY3NpZ3Mvb2RpY3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL3ZlcnNpb24ucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL2RldmVsb3BtZW50LnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL2RldmVsb3BtZW50LnR4dAppbmRleCBlY2FmYjBhNTI3
ZDMuLjQwZGVkZDkyYmYwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJlbWVudHMv
ZGV2ZWxvcG1lbnQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL2RldmVsb3Bt
ZW50LnR4dApAQCAtMSw2ICsxLDUgQEAKIGNvdmVyYWdlCiBjb3ZlcmFsbHMKLXBpcAogZmxha2U4
CiBzcGhpbngKLXdoZWVsCit1bml0dGVzdDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVx
dWlyZW1lbnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJlbWVudHMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMjVmN2IwNmMzOS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy9yZXF1aXJlbWVudHMvZGV2ZWxvcG1lbnQudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJlbWVu
dHMvcHJvZHVjdGlvbi50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mvc2V0dXAucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Z1bmNzaWdzL3NldHVwLnB5CmluZGV4IDk4YjA5MTI2MDQ1My4uZjM2OTY4ODhmOWViIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mvc2V0
dXAucHkKQEAgLTE0LDI2ICsxNCwyMiBAQCBkZWYgbG9hZF92ZXJzaW9uKGZpbGVuYW1lPSdmdW5j
c2lncy92ZXJzaW9uLnB5Jyk6CiAgICAgICAgIHZlcnNpb24gPSBtYXRjaC5ncm91cCgxKQogICAg
ICAgICByZXR1cm4gdmVyc2lvbgogCi1kZWYgbG9hZF9yc3QoZmlsZW5hbWU9J2RvY3Mvc291cmNl
L2d1aWRlX2NvbnRlbnQucnN0Jyk6Ci0gICAgIlB1cmdlIHJlZnMgZGlyZWN0aXZlcyBmcm9tIHJl
c3RydWN0dXJlZCB0ZXh0IgotICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgc291cmNlOgotICAg
ICAgICB0ZXh0ID0gc291cmNlLnJlYWQoKQotICAgICAgICBkb2MgPSByZS5zdWIocic6XHcrOmB+
PyhbYS16QS1aLl8oKV0rKWAnLCByJypcMSonLCB0ZXh0KQotICAgICAgICByZXR1cm4gZG9jCiAK
IHNldHVwKAogICAgIG5hbWU9ImZ1bmNzaWdzIiwKICAgICB2ZXJzaW9uPWxvYWRfdmVyc2lvbigp
LAogICAgIHBhY2thZ2VzPVsnZnVuY3NpZ3MnXSwKICAgICB6aXBfc2FmZT1GYWxzZSwKLSAgICBh
dXRob3I9IkFhcm9uIElsZXMiLAotICAgIGF1dGhvcl9lbWFpbD0iYWFyb24uaWxlc0BnbWFpbC5j
b20iLAorICAgIGF1dGhvcj0iVGVzdGluZyBDYWJhbCIsCisgICAgYXV0aG9yX2VtYWlsPSJ0ZXN0
aW5nLWluLXB5dGhvbkBsaXN0cy5pZHlsbC5vcmciLAogICAgIHVybD0iaHR0cDovL2Z1bmNzaWdz
LnJlYWR0aGVkb2NzLm9yZyIsCiAgICAgZGVzY3JpcHRpb249IlB5dGhvbiBmdW5jdGlvbiBzaWdu
YXR1cmVzIGZyb20gUEVQMzYyIGZvciBQeXRob24gMi42LCAyLjcgYW5kIDMuMisiLAogICAgIGxv
bmdfZGVzY3JpcHRpb249b3BlbignUkVBRE1FLnJzdCcpLnJlYWQoKSwKLSAgICAjIGxvbmdfZGVz
Y3JpcHRpb249bG9hZF9yc3QoKSwKICAgICBsaWNlbnNlPSJBU0wiLAotICAgIGluc3RhbGxfcmVx
dWlyZXMgPSBbXSwKKyAgICBleHRyYXNfcmVxdWlyZSA9IHsKKyAgICAgICAgJzpweXRob25fdmVy
c2lvbjwiMi43Iic6IFsnb3JkZXJlZGRpY3QnXSwKKyAgICB9LAorICAgIHNldHVwX3JlcXVpcmVz
ID0gWyJzZXR1cHRvb2xzPj0xNy4xIl0sCiAgICAgY2xhc3NpZmllcnMgPSBbCiAgICAgICAgICdE
ZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLAogICAgICAgICAnSW50ZW5kZWQgQXVkaWVu
Y2UgOjogRGV2ZWxvcGVycycsCkBAIC00NCwxMiArNDAsMTMgQEAgc2V0dXAoCiAgICAgICAgICdQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywKICAgICAgICAgJ1Byb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLAogICAgICAgICAnUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDMnLAotICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDMuMicsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24g
OjogMy4zJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjQn
LAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNScsCiAgICAg
ICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjog
Q1B5dGhvbicsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1w
bGVtZW50YXRpb24gOjogUHlQeScsCiAgICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9w
bWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMnCiAgICAgXSwKLSAgICB0ZXN0c19y
ZXF1aXJlID0gW10gaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDIgZWxzZSBbJ3VuaXR0ZXN0Midd
LAotICAgIHRlc3Rfc3VpdGUgPSAidGVzdHMiIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPiAyIGVs
c2UgJ3VuaXR0ZXN0Mi5jb2xsZWN0b3InCisgICAgdGVzdHNfcmVxdWlyZSA9IFsndW5pdHRlc3Qy
J10sCisgICAgdGVzdF9zdWl0ZSA9ICd1bml0dGVzdDIuY29sbGVjdG9yJywKICkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3Rz
L19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVz
dHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90ZXN0X2Zv
cm1hdGFubm90YXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL3Rlc3RfZm9ybWF0YW5ub3Rh
dGlvbi5weQppbmRleCBmZDdhODg3M2Y4NTUuLjRiOThlNjAzN2Q4MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9mdW5jc2lncy90ZXN0cy90ZXN0X2Zvcm1hdGFubm90YXRpb24ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5j
c2lncy90ZXN0cy90ZXN0X2Zvcm1hdGFubm90YXRpb24ucHkKQEAgLTEsMTIgKzEsNiBAQAotdHJ5
OgotICAgICMgcHl0aG9uIDIueAotICAgIGltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKLWV4
Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIHB5dGhvbiAzLngKLSAgICBpbXBvcnQgdW5pdHRlc3QK
LQogaW1wb3J0IGZ1bmNzaWdzCiAKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKIAogY2xh
c3MgVGVzdEZvcm1hdEFubm90YXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X3N0cmluZyAoc2VsZik6CkBAIC0yMSw3ICsxNSwzIEBAIGNsYXNzIFRlc3RGb3JtYXRBbm5vdGF0
aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2xhc3MgZHVtbXkgKG9iamVjdCk6IHBh
c3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jc2lncy5mb3JtYXRhbm5vdGF0aW9uKGR1
bW15KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdHMudGVzdF9mb3JtYXRhbm5vdGF0
aW9uLmR1bW15IikKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHVuaXR0ZXN0
LmJlZ2luKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5weQppbmRleCBlZWNjMGE4YTcw
OTEuLmE3YjljY2E3Njc5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90ZXN0X2Z1
bmNzaWdzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5weQpAQCAt
MSw5ICsxLDQgQEAKLXRyeToKLSAgICAjIHB5dGhvbiAyLngKLSAgICBpbXBvcnQgdW5pdHRlc3Qy
IGFzIHVuaXR0ZXN0Ci1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBweXRob24gMy54Ci0gICAg
aW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CiAKIGltcG9ydCBk
b2N0ZXN0CiBpbXBvcnQgc3lzCkBAIC02OSwyNSArNjQsMjggQEAgY2xhc3MgVGVzdEZ1bmN0aW9u
U2lnbmF0dXJlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShp
bnNwZWN0Ll9fdmVyc2lvbl9fKQogCiAgICAgZGVmIHRlc3RfcmVhZG1lKHNlbGYpOgorICAgICAg
ICAjIFhYWDogVGhpcyBmYWlscyBidXQgZG9lc24ndCBmYWlsIHRoZSBidWlsZC4KKwkjIChhbmQg
dGhlIHN5bnRheCBpc24ndCB2YWxpZCBvbiBhbGwgcHl0aG9ucyBzbyB0aGF0IHNlZW1zIGEgbGl0
dGxlCisJIyBoYXJkIHRvIGdldCByaWdodC4KICAgICAgICAgZG9jdGVzdC50ZXN0ZmlsZSgnLi4v
UkVBRE1FLnJzdCcpCiAKICAgICBkZWYgdGVzdF91bmJvdW5kX21ldGhvZChzZWxmKToKLSAgICAg
ICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6Ci0gICAgICAgICAgICBzZWxmX2tpbmQgPSAi
cG9zaXRpb25hbF9vbmx5IgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZl9raW5kID0g
InBvc2l0aW9uYWxfb3Jfa2V5d29yZCIKKyAgICAgICAgc2VsZl9raW5kID0gInBvc2l0aW9uYWxf
b3Jfa2V5d29yZCIKICAgICAgICAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgICAgICAgICAgZGVm
IG1ldGhvZChzZWxmKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBkZWYgbWV0
aG9kX3dpdGhfYXJncyhzZWxmLCBhKToKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoVGVzdC5tZXRob2QpLAotICAgICAgICAgICAg
ICAgICgoKCgnc2VsZicsIEVsbGlwc2lzLCBFbGxpcHNpcywgc2VsZl9raW5kKSksKSwgRWxsaXBz
aXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKFRlc3QubWV0aG9k
X3dpdGhfYXJncyksICgoCi0gICAgICAgICAgICAgICAgKCdzZWxmJywgRWxsaXBzaXMsIEVsbGlw
c2lzLCBzZWxmX2tpbmQpLAotICAgICAgICAgICAgICAgICgnYScsIEVsbGlwc2lzLCBFbGxpcHNp
cywgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgZGVmIG1ldGhvZF93aXRo
X3ZhcmFyZ3MoKmFyZ3MpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlKFRlc3QubWV0aG9kKSwKKyAgICAg
ICAgICAgICgoKCgnc2VsZicsIEVsbGlwc2lzLCBFbGxpcHNpcywgc2VsZl9raW5kKSksKSwgRWxs
aXBzaXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zaWdu
YXR1cmUoVGVzdC5tZXRob2Rfd2l0aF9hcmdzKSwKKyAgICAgICAgICAgICgoKCdzZWxmJywgRWxs
aXBzaXMsIEVsbGlwc2lzLCBzZWxmX2tpbmQpLAorICAgICAgICAgICAgICAoJ2EnLCBFbGxpcHNp
cywgRWxsaXBzaXMsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKICAgICAgICAgICAgICAgICAp
LCBFbGxpcHNpcykpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB1bml0dGVz
dC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNp
Z25hdHVyZShUZXN0Lm1ldGhvZF93aXRoX3ZhcmFyZ3MpLAorICAgICAgICAgICAgKCgoJ2FyZ3Mn
LCBFbGxpcHNpcywgRWxsaXBzaXMsICJ2YXJfcG9zaXRpb25hbCIpLCksIEVsbGlwc2lzKSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5j
c2lncy90ZXN0cy90ZXN0X2luc3BlY3QucHkKaW5kZXggMzIzYzMyM2VhZmQ5Li45OGQ2NTkyZmNj
NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0LnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0LnB5CkBAIC0xLDEyICsxLDEwIEBACiAj
IENvcHlyaWdodCAyMDAxLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdo
dHMgUmVzZXJ2ZWQKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZp
c2lvbiwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGZ1bmN0b29s
cwogaW1wb3J0IHN5cwogCi10cnk6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAot
ZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0
MiBhcyB1bml0dGVzdAogCiBpbXBvcnQgZnVuY3NpZ3MgYXMgaW5zcGVjdAogCkBAIC0yNCwxMSAr
MjIsNiBAQCBjbGFzcyBUZXN0U2lnbmF0dXJlT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgICAgICAoRWxsaXBzaXMgaWYgc2lnLnJldHVybl9hbm5vdGF0aW9uIGlzIHNpZy5l
bXB0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNp
Zy5yZXR1cm5fYW5ub3RhdGlvbikpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKToKLSAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKQotICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnYXNzZXJ0UmFpc2VzUmVn
ZXgnKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXggPSBzZWxmLmFzc2VydFJh
aXNlc1JlZ2V4cAotCiAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDI6CiAgICAgICAgIGV4
ZWMoIiIiCiBkZWYgdGVzdF9zaWduYXR1cmVfb2JqZWN0KHNlbGYpOgpAQCAtNjU2LDExICs2NDks
NiBAQCBkZWYgdGVzdF9zaWduYXR1cmVfcmVwbGFjZV9hbm5vKHNlbGYpOgogCiBjbGFzcyBUZXN0
UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRf
XyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdh
c3NlcnRSYWlzZXNSZWdleCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCA9
IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwCi0KICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1l
dGVyX2tpbmRzKHNlbGYpOgogICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKFAuUE9TSVRJT05BTF9PTkxZIDwgUC5QT1NJVElPTkFMX09SX0tFWVdP
UkQgPCBcCkBAIC03ODAsMTEgKzc2OCw2IEBAIGNsYXNzIFRlc3RTaWduYXR1cmVCaW5kKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgYmEgPSBzaWcuYmluZCgqYXJncywgKiprd2FyZ3MpCiAg
ICAgICAgIHJldHVybiBmdW5jKCpiYS5hcmdzLCAqKmJhLmt3YXJncykKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5f
X2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNl
bGYsICdhc3NlcnRSYWlzZXNSZWdleCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNS
ZWdleCA9IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwCi0KICAgICBkZWYgdGVzdF9zaWduYXR1cmVf
YmluZF9lbXB0eShzZWxmKToKICAgICAgICAgZGVmIHRlc3QoKToKICAgICAgICAgICAgIHJldHVy
biA0MgpAQCAtOTgyLDEzICs5NjUsMTcgQEAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfcG9zaXRp
b25hbF9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLmNhbGwodGVzdCwgYV9wbz0xLCBiX3BvPTIp
CiAiIiIpCiAKKyAgICBkZWYgdGVzdF9iaW5kX3NlbGYoc2VsZik6CisgICAgICAgIGNsYXNzIEY6
CisgICAgICAgICAgICBkZWYgZihhLCBzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYSwg
c2VsZgorICAgICAgICBhbl9mID0gRigpCisgICAgICAgIHBhcnRpYWxfZiA9IGZ1bmN0b29scy5w
YXJ0aWFsKEYuZiwgYW5fZikKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFs
X2YpLmJpbmQoc2VsZj0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYW5fZiwgMTApLCBw
YXJ0aWFsX2YoKmJhLmFyZ3MsICoqYmEua3dhcmdzKSkKIAotY2xhc3MgVGVzdEJvdW5kQXJndW1l
bnRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCAqYXJn
cywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdhc3NlcnRSYWlzZXNS
ZWdleCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCA9IHNlbGYuYXNzZXJ0
UmFpc2VzUmVnZXhwCitjbGFzcyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVzdENhc2Up
OgogCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNl
bGYpOgogICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCkBAIC0xMDEzLDcgKzEwMDAsMyBAQCBjbGFz
cyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgYmFy
KGIpOiBwYXNzCiAgICAgICAgIGJhNCA9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikuYmluZCgxKQog
ICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCi0KLQotaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKLSAgICB1bml0dGVzdC5iZWdpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNz
aWdzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM5MjFhMTg1MjJmLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL3Rlc3RfZm9ybWF0YW5ub3RhdGlvbi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMv
dGVzdF9pbnNwZWN0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3RveC5pbmkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Z1bmNzaWdzL3RveC5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4xODczYzc0NGEwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3RveC5pbmkK
QEAgLTAsMCArMSw4IEBACitbdG94XQorZW52bGlzdCA9IHB5MjYsIHB5MjcsIHB5MzMsIHB5MzQs
IHB5MzUsIHB5MzYsIHB5cHksIHB5cHkzCisKK1t0ZXN0ZW52XQorZGVwcyA9IC1ycmVxdWlyZW1l
bnRzL2RldmVsb3BtZW50LnR4dAorY29tbWFuZHMgPSAKKyAgICBjb3ZlcmFnZSBydW4gc2V0dXAu
cHkgdGVzdAorICAgIGNvdmVyYWdlIHJlcG9ydCAtLXNob3ctbWlzc2luZwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9mdW5jc2lncy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZWViYjI3MzM1MC4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL0NIQU5HRUxPRwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVu
Y3NpZ3MvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdz
L01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9zZXR1
cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyLy5jb3Zl
cmFnZXJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi8uY292ZXJhZ2VyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjE1M2UzOGQzZTBlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvLmNv
dmVyYWdlcmMKQEAgLTAsMCArMSwxOCBAQAorW3J1bl0KK2JyYW5jaCA9IFRydWUKK3NvdXJjZSA9
IGgyCisKK1tyZXBvcnRdCitmYWlsX3VuZGVyID0gMTAwCitzaG93X21pc3NpbmcgPSBUcnVlCitl
eGNsdWRlX2xpbmVzID0KKyAgICBwcmFnbWE6IG5vIGNvdmVyCisgICAgLio6LiogIyBQeXRob24g
XGQuKgorICAgIGFzc2VydCBGYWxzZSwgIlNob3VsZCBub3QgYmUgcmVhY2hhYmxlIgorICAgIC4q
Oi4qICMgUGxhdGZvcm0tc3BlY2lmaWM6CisKK1twYXRoc10KK3NvdXJjZSA9CisgICAgaDIvCisg
ICAgLnRveC8qL2xpYi9weXRob24qL3NpdGUtcGFja2FnZXMvaDIKKyAgICAudG94L3B5cHkqL3Np
dGUtcGFja2FnZXMvaDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvQ09OVFJJQlVUT1JTLnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvQ09OVFJJQlVUT1JTLnJzdAppbmRleCBiZGM0ZDA2YzMxYTAuLjVjNDg0OWZlZjBmMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9DT05UUklCVVRPUlMucnN0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvQ09OVFJJ
QlVUT1JTLnJzdApAQCAtMTExLDQgKzExMSw1IEBAIEluIGNocm9ub2xvZ2ljYWwgb3JkZXI6CiAt
IEZyZWQgVGhvbXNlbiAoQGZyZWR0aG9tc2VuKQogCiAgIC0gQWRkZWQgbG9nZ2luZy4KLQorICAt
IEVuaGFuY2UgZXF1YWxpdHkgdGVzdGluZyBvZiBgYGgyLnNldHRpbmdzLlNldHRpbmdzYGAgb2Jq
ZWN0cyB3aXRoCisgICAgYGBoeXBvdGhlc2lzYGAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL0hJU1RP
UlkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9ISVNUT1JZLnJzdAppbmRleCBlOWZhNzQ1ZDUxNjIuLjUyNDRjZDhh
OTQxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9ISVNUT1JZLnJzdAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL0hJU1RP
UlkucnN0CkBAIC0xLDYgKzEsNjUgQEAKIFJlbGVhc2UgSGlzdG9yeQogPT09PT09PT09PT09PT09
CiAKKzMuMi4wICgyMDIwLTAyLTA4KQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0J1Z2ZpeGVzCit+
fn5+fn5+fgorCistIFJlY2VpdmluZyBEQVRBIGZyYW1lcyBvbiBjbG9zZWQgKG9yIHJlc2V0KSBz
dHJlYW1zIG5vdyBwcm9wZXJseSBlbWl0IGEKKyAgV0lORE9XX1VQREFURSB0byBrZWVwIHRoZSBj
b25uZWN0aW9uIGZsb3cgd2luZG93IHRvcHBlZCB1cC4KKworQVBJIENoYW5nZXMgKEJhY2t3YXJk
LUluY29tcGF0aWJsZSkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy0g
YGBoMi5jb25maWcubG9nZ2VyYGAgbm93IHVzZXMgYSBgdHJhY2UoLi4uKWAgZnVuY3Rpb24sIGlu
IGFkZGl0aW9uCisgIHRvIGBkZWJ1ZyguLi4pYC4gSWYgeW91IGRlZmluZWQgYSBjdXN0b20gbG9n
Z2VyIG9iamVjdCwgeW91IG5lZWQgdG8gaGFuZGxlCisgIHRoZXNlIG5ldyBmdW5jdGlvbiBjYWxs
cy4KKworCiszLjEuMSAoMjAxOS0wOC0wMikKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitCdWdmaXhl
cworfn5+fn5+fn4KKworLSBJZ25vcmUgV0lORE9XX1VQREFURSBhbmQgUlNUX1NUUkVBTSBmcmFt
ZXMgcmVjZWl2ZWQgYWZ0ZXIgc3RyZWFtCisgIGNsb3N1cmUuCisKKworMy4xLjAgKDIwMTktMDEt
MjIpCistLS0tLS0tLS0tLS0tLS0tLS0KKworQVBJIENoYW5nZXMgKEJhY2t3YXJkLUluY29tcGF0
aWJsZSkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy0gYGBoMi5jb25u
ZWN0aW9uLkgyQ29ubmVjdGlvbi5kYXRhX3RvX3NlbmRgYCBmaXJzdCBhbmQgb25seSBhcmd1bWVu
dCBgYGFtdGBgCisgIHdhcyByZW5hbWVkIHRvIGBgYW1vdW50YGAuCistIFN1cHBvcnQgZm9yIFB5
dGhvbiAzLjMgaGFzIGJlZW4gcmVtb3ZlZC4KKworQVBJIENoYW5nZXMgKEJhY2t3YXJkLUNvbXBh
dGlibGUpCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLSBgYGgyLmNvbm5l
Y3Rpb24uSDJDb25uZWN0aW9uLnNlbmRfZGF0YWBgIG5vdyBzdXBwb3J0cyBgYGRhdGFgYCBwYXJh
bWV0ZXIKKyAgYmVpbmcgYSBgYG1lbW9yeXZpZXdgYCBvYmplY3QuCistIFJlZmFjdG9yIHBpbmct
cmVsYXRlZCBldmVudHM6IGEgYGBoMi5ldmVudHMuUGluZ1JlY2VpdmVkYGAgZXZlbnQgaXMgZmly
ZWQKKyAgd2hlbiBhIFBJTkcgZnJhbWUgaXMgcmVjZWl2ZWQgYW5kIGEgYGBoMi5ldmVudHMuUGlu
Z0Fja1JlY2VpdmVkYGAgZXZlbnQgaXMKKyAgZmlyZWQgd2hlbiBhIFBJTkcgZnJhbWUgd2l0aCBh
biBBQ0sgZmxhZyBpcyByZWNlaXZlZC4KKyAgYGBoMi5ldmVudHMuUGluZ0Fja25vd2xlZGdlZGBg
IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBpZGVudGljYWwKKyAgYGBoMi5ldmVudHMu
UGluZ0Fja1JlY2VpdmVkYGAuCistIEFkZGVkIGBgRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xgYCB0
byBgYGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlc2BgLgorLSBTdXBwb3J0IGBgQ09OTkVDVGBgIHJl
cXVlc3RzIHdpdGggYSBgYDpwcm90b2NvbGBgIHBzZXVkbyBoZWFkZXIKKyAgdGhlcmVieSBzdXBw
b3J0aW5nIFJGQyA4NDQxLgorLSBBIGxpbWl0IHRvIHRoZSBudW1iZXIgb2YgY2xvc2VkIHN0cmVh
bXMga2VwdCBpbiBtZW1vcnkgYnkgdGhlCisgIGNvbm5lY3Rpb24gaXMgYXBwbGllZC4gSXQgY2Fu
IGJlIGNvbmZpZ3VyZWQgYnkKKyAgYGBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbi5NQVhfQ0xP
U0VEX1NUUkVBTVNgYC4KKworQnVnZml4ZXMKK35+fn5+fn5+CisKKy0gRGVidWcgbG9nZ2luZyB3
aGVuIHN0cmVhbV9pZCBpcyBOb25lIGlzIG5vdyBmaXhlZCBhbmQgbm8gbG9uZ2VyIGVycm9ycy4K
KwogMy4wLjEgKDIwMTctMDQtMDMpCiAtLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTUFOSUZFU1QuaW4KaW5kZXggM2M4Yjk4ODUz
M2UyLi4wNDQwMGRlNmI3ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTUFOSUZFU1QuaW4KKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9NQU5JRkVTVC5pbgpAQCAtMSw3ICsxLDggQEAKIGluY2x1ZGUgUkVBRE1FLnJzdCBM
SUNFTlNFIENPTlRSSUJVVE9SUy5yc3QgSElTVE9SWS5yc3QgdG94LmluaSB0ZXN0X3JlcXVpcmVt
ZW50cy50eHQgLmNvdmVyYWdlcmMgTWFrZWZpbGUKLXJlY3Vyc2l2ZS1pbmNsdWRlIHRlc3QgKi5w
eQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5ICouc2gKIGdyYWZ0IGRvY3MKIHBydW5lIGRv
Y3MvYnVpbGQKIGdyYWZ0IHZpc3VhbGl6ZXIKIHJlY3Vyc2l2ZS1pbmNsdWRlIGV4YW1wbGVzICou
cHkgKi5jcnQgKi5rZXkgKi5wZW0gKi5jc3IKIHJlY3Vyc2l2ZS1pbmNsdWRlIHV0aWxzICouc2gK
K3JlY3Vyc2l2ZS1pbmNsdWRlIF90cmF2aXMgKi5zaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2Nz
L3NvdXJjZS9fc3RhdGljLy5rZWVwIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9fc3RhdGljLy5rZWVw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA3NjhlODU2YjZiNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
ZG9jcy9zb3VyY2UvX3N0YXRpYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvX3N0YXRpYy9oMi5jb25uZWN0
aW9uLkgyQ29ubmVjdGlvblN0YXRlTWFjaGluZS5kb3QucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJj
ZS9fc3RhdGljL2gyLnN0cmVhbS5IMlN0cmVhbVN0YXRlTWFjaGluZS5kb3QucG5nCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FwaS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2Fw
aS5yc3QKaW5kZXggMmM3MWQzOGQxNmRkLi5hNDZmOGNjZTdkNGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZG9jcy9zb3VyY2UvYXBpLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FwaS5yc3QK
QEAgLTUzLDcgKzUzLDEwIEBAIEV2ZW50cwogLi4gYXV0b2NsYXNzOjogaDIuZXZlbnRzLlJlbW90
ZVNldHRpbmdzQ2hhbmdlZAogICAgOm1lbWJlcnM6CiAKLS4uIGF1dG9jbGFzczo6IGgyLmV2ZW50
cy5QaW5nQWNrbm93bGVkZ2VkCisuLiBhdXRvY2xhc3M6OiBoMi5ldmVudHMuUGluZ1JlY2VpdmVk
CisgICA6bWVtYmVyczoKKworLi4gYXV0b2NsYXNzOjogaDIuZXZlbnRzLlBpbmdBY2tSZWNlaXZl
ZAogICAgOm1lbWJlcnM6CiAKIC4uIGF1dG9jbGFzczo6IGgyLmV2ZW50cy5TdHJlYW1FbmRlZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9iYXNpYy11c2FnZS5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2RvY3Mvc291cmNlL2Jhc2ljLXVzYWdlLnJzdAppbmRleCAyZDU3NDNhMjg4Y2QuLmI5YWFiNmM2
Y2Y4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9iYXNpYy11c2FnZS5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9iYXNpYy11c2FnZS5yc3QKQEAgLTIyMSwxMyArMjIxLDEx
IEBAIHNob3duIGJlbG93OgogCiAuLiBjb2RlLWJsb2NrOjogY29uc29sZQogCi0gICAgJCBoeXBl
ciBHRVQgaHR0cDovL2h0dHAyYmluLm9yZy9nZXQKKyAgICAkIGh5cGVyIEdFVCBodHRwczovL25n
aHR0cDIub3JnL2h0dHBiaW4vZ2V0CiAgICAgeydhcmdzJzoge30sCi0gICAgICdoZWFkZXJzJzog
eydDb25uZWN0aW9uJzogJ2tlZXAtYWxpdmUnLAotICAgICAgICAgICAgICAgICAnSG9zdCc6ICdo
dHRwMmJpbi5vcmcnLAotICAgICAgICAgICAgICAgICAnVmlhJzogJzIgaHR0cDJiaW4ub3JnJ30s
CisgICAgICdoZWFkZXJzJzogeydIb3N0JzogJ25naHR0cDIub3JnJ30sCiAgICAgICdvcmlnaW4n
OiAnMTAuMC4wLjInLAotICAgICAndXJsJzogJ2h0dHA6Ly9odHRwMmJpbi5vcmcvZ2V0J30KKyAg
ICAgJ3VybCc6ICdodHRwczovL25naHR0cDIub3JnL2h0dHBiaW4vZ2V0J30KIAogQXNzdW1pbmcg
aXQgd29ya3MsIHlvdSdyZSBub3cgcmVhZHkgdG8gc3RhcnQgc2VuZGluZyBIVFRQLzIgZGF0YS4K
IApAQCAtMjUxLDkgKzI0OSwxMSBAQCBUaGUgZnVuY3Rpb24gc2hvdWxkIGxvb2sgc29tZXRoaW5n
IGxpa2UgdGhpczoKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGltcG9ydCBoMi5jb25u
ZWN0aW9uCisgICAgaW1wb3J0IGgyLmNvbmZpZwogCiAgICAgZGVmIGhhbmRsZShzb2NrKToKLSAg
ICAgICAgY29ubiA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKGNsaWVudF9zaWRlPUZhbHNl
KQorICAgICAgICBjb25maWcgPSBoMi5jb25maWcuSDJDb25maWd1cmF0aW9uKGNsaWVudF9zaWRl
PUZhbHNlKQorICAgICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5IMkNvbm5lY3Rpb24oY29uZmln
PWNvbmZpZykKIAogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgZGF0YSA9IHNvY2su
cmVjdig2NTUzNSkKQEAgLTI2Nyw5ICsyNjcsMTEgQEAgZnVuY3Rpb24uIFlvdXIgYGBoMnNlcnZl
ci5weWBgIHNob3VsZCBlbmQgdXAgbG9va2luZyBhIGxpa2UgdGhpczoKICAgICBpbXBvcnQgc29j
a2V0CiAKICAgICBpbXBvcnQgaDIuY29ubmVjdGlvbgorICAgIGltcG9ydCBoMi5jb25maWcKIAog
ICAgIGRlZiBoYW5kbGUoc29jayk6Ci0gICAgICAgIGNvbm4gPSBoMi5jb25uZWN0aW9uLkgyQ29u
bmVjdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29uZmlnID0gaDIuY29uZmlnLkgy
Q29uZmlndXJhdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29ubiA9IGgyLmNvbm5l
Y3Rpb24uSDJDb25uZWN0aW9uKGNvbmZpZz1jb25maWcpCiAKICAgICAgICAgd2hpbGUgVHJ1ZToK
ICAgICAgICAgICAgIGRhdGEgPSBzb2NrLnJlY3YoNjU1MzUpCkBAIC0zMzEsNyArMzMzLDggQEAg
ZnVuY3Rpb24gdG8gZG8ganVzdCB0aGF0OgogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
ZGVmIGhhbmRsZShzb2NrKToKLSAgICAgICAgY29ubiA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0
aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25maWcgPSBoMi5jb25maWcuSDJDb25m
aWd1cmF0aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25uID0gaDIuY29ubmVjdGlv
bi5IMkNvbm5lY3Rpb24oY29uZmlnPWNvbmZpZykKICAgICAgICAgY29ubi5pbml0aWF0ZV9jb25u
ZWN0aW9uKCkKICAgICAgICAgc29jay5zZW5kYWxsKGNvbm4uZGF0YV90b19zZW5kKCkpCiAKQEAg
LTM1OSw5ICszNjIsMTEgQEAgWW91ciBgYGgyc2VydmVyLnB5YGAgc2NyaXB0IHNob3VsZCBub3cg
bG9vayBsaWtlIHRoaXM6CiAgICAgaW1wb3J0IHNvY2tldAogCiAgICAgaW1wb3J0IGgyLmNvbm5l
Y3Rpb24KKyAgICBpbXBvcnQgaDIuY29uZmlnCiAKICAgICBkZWYgaGFuZGxlKHNvY2spOgotICAg
ICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5IMkNvbm5lY3Rpb24oY2xpZW50X3NpZGU9RmFsc2Up
CisgICAgICAgIGNvbmZpZyA9IGgyLmNvbmZpZy5IMkNvbmZpZ3VyYXRpb24oY2xpZW50X3NpZGU9
RmFsc2UpCisgICAgICAgIGNvbm4gPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbihjb25maWc9
Y29uZmlnKQogICAgICAgICBjb25uLmluaXRpYXRlX2Nvbm5lY3Rpb24oKQogICAgICAgICBzb2Nr
LnNlbmRhbGwoY29ubi5kYXRhX3RvX3NlbmQoKSkKIApAQCAtNDkzLDkgKzQ5OCwxMSBAQCBMZXQn
cyBhbWVuZCBvdXIgYGBoYW5kbGVgYCBmdW5jdGlvbiBhZ2FpbjoKIC4uIGNvZGUtYmxvY2s6OiBw
eXRob24KIAogICAgIGltcG9ydCBoMi5ldmVudHMKKyAgICBpbXBvcnQgaDIuY29uZmlnCiAKICAg
ICBkZWYgaGFuZGxlKHNvY2spOgotICAgICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5IMkNvbm5l
Y3Rpb24oY2xpZW50X3NpZGU9RmFsc2UpCisgICAgICAgIGNvbmZpZyA9IGgyLmNvbmZpZy5IMkNv
bmZpZ3VyYXRpb24oY2xpZW50X3NpZGU9RmFsc2UpCisgICAgICAgIGNvbm4gPSBoMi5jb25uZWN0
aW9uLkgyQ29ubmVjdGlvbihjb25maWc9Y29uZmlnKQogICAgICAgICBjb25uLmluaXRpYXRlX2Nv
bm5lY3Rpb24oKQogICAgICAgICBzb2NrLnNlbmRhbGwoY29ubi5kYXRhX3RvX3NlbmQoKSkKIApA
QCAtNTI4LDYgKzUzNSw3IEBAIFdpdGggdGhlc2UgY2hhbmdlcywgeW91ciBgYGgyc2VydmVyLnB5
YGAgZmlsZSBzaG91bGQgbG9vayBsaWtlIHRoaXM6CiAKICAgICBpbXBvcnQgaDIuY29ubmVjdGlv
bgogICAgIGltcG9ydCBoMi5ldmVudHMKKyAgICBpbXBvcnQgaDIuY29uZmlnCiAKICAgICBkZWYg
c2VuZF9yZXNwb25zZShjb25uLCBldmVudCk6CiAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0
cmVhbV9pZApAQCAtNTQ1LDcgKzU1Myw4IEBAIFdpdGggdGhlc2UgY2hhbmdlcywgeW91ciBgYGgy
c2VydmVyLnB5YGAgZmlsZSBzaG91bGQgbG9vayBsaWtlIHRoaXM6CiAgICAgICAgICkKIAogICAg
IGRlZiBoYW5kbGUoc29jayk6Ci0gICAgICAgIGNvbm4gPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVj
dGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29uZmlnID0gaDIuY29uZmlnLkgyQ29u
ZmlndXJhdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29ubiA9IGgyLmNvbm5lY3Rp
b24uSDJDb25uZWN0aW9uKGNvbmZpZz1jb25maWcpCiAgICAgICAgIGNvbm4uaW5pdGlhdGVfY29u
bmVjdGlvbigpCiAgICAgICAgIHNvY2suc2VuZGFsbChjb25uLmRhdGFfdG9fc2VuZCgpKQogCkBA
IC02MzMsNiArNjQyLDcgQEAgZmlsZSwgd2hpY2ggc2hvdWxkIG5vdyBsb29rIGxpa2UgdGhpczoK
IAogICAgIGltcG9ydCBoMi5jb25uZWN0aW9uCiAgICAgaW1wb3J0IGgyLmV2ZW50cworICAgIGlt
cG9ydCBoMi5jb25maWcKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlKGNvbm4sIGV2ZW50KToKICAg
ICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCkBAIC02NTQsNyArNjY0LDggQEAgZmls
ZSwgd2hpY2ggc2hvdWxkIG5vdyBsb29rIGxpa2UgdGhpczoKICAgICAgICAgKQogCiAgICAgZGVm
IGhhbmRsZShzb2NrKToKLSAgICAgICAgY29ubiA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9u
KGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25maWcgPSBoMi5jb25maWcuSDJDb25maWd1
cmF0aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5I
MkNvbm5lY3Rpb24oY29uZmlnPWNvbmZpZykKICAgICAgICAgY29ubi5pbml0aWF0ZV9jb25uZWN0
aW9uKCkKICAgICAgICAgc29jay5zZW5kYWxsKGNvbm4uZGF0YV90b19zZW5kKCkpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2Uv
Y29uZi5weQppbmRleCBhM2IzZThhNGI5OTguLmExNWEyMTQ2MzRjNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9kb2NzL3NvdXJjZS9jb25mLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvY29uZi5w
eQpAQCAtNTUsOSArNTUsOSBAQCBjb3B5cmlnaHQgPSB1JzIwMTUsIENvcnkgQmVuZmllbGQnCiAj
IGJ1aWx0IGRvY3VtZW50cy4KICMKICMgVGhlIHNob3J0IFguWSB2ZXJzaW9uLgotdmVyc2lvbiA9
ICczLjAuMScKK3ZlcnNpb24gPSAnMy4yLjAnCiAjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGlu
ZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCi1yZWxlYXNlID0gJzMuMC4xJworcmVsZWFzZSA9ICczLjIu
MCcKIAogIyBUaGUgbGFuZ3VhZ2UgZm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBTcGhpbngu
IFJlZmVyIHRvIGRvY3VtZW50YXRpb24KICMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3Vh
Z2VzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9uZWdvdGlhdGluZy1odHRwMi5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL25lZ290aWF0aW5nLWh0dHAyLnJzdAppbmRleCBkNGM3
MmIyODg5ZTAuLjIwZDU4YTcxZjFiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9u
ZWdvdGlhdGluZy1odHRwMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9uZWdvdGlhdGlu
Zy1odHRwMi5yc3QKQEAgLTUsMTUgKzUsMTkgQEAgTmVnb3RpYXRpbmcgSFRUUC8yCiAKIC4uIF9z
dGFydGluZy1hbHBuOgogCi1IVFRQUyBVUkxzIChBTFBOIGFuZCBOUE4pCitIVFRQUyBVUkxzIChB
TFBOKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TdGFydGluZyBIVFRQLzIgZm9yIEhU
VFBTIFVSTHMgaXMgb3V0bGluZWQgaW4gYFJGQyA3NTQwIFNlY3Rpb24gMy4zYF8uIEluIHRoaXMg
Y2FzZSwgdGhlIGNsaWVudCBhbmQgc2VydmVyIHVzZSBhIFRMUyBleHRlbnNpb24gdG8gbmVnb3Rp
YXRlIEhUVFAvMjogdHlwaWNhbGx5IGVpdGhlciBvciBib3RoIG9mIGBOUE5gXyBvciBgQUxQTmBf
LiBIb3cgdG8gdXNlIE5QTiBhbmQgQUxQTiBpcyBjdXJyZW50bHkgbm90IGNvdmVyZWQgaW4gdGhp
cyBkb2N1bWVudDogcGxlYXNlIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGVpdGhlciB0
aGUgOm1vZDpgc3NsIG1vZHVsZSA8cHl0aG9uOnNzbD5gIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5
LCBvciB0aGUgOm1vZDpgUHlPcGVuU1NMIDxweW9wZW5zc2w6T3BlblNTTC5TU0w+YCB0aGlyZC1w
YXJ0eSBtb2R1bGVzLCBmb3IgbW9yZSBvbiB0aGlzIHRvcGljLgorU3RhcnRpbmcgSFRUUC8yIGZv
ciBIVFRQUyBVUkxzIGlzIG91dGxpbmVkIGluIGBSRkMgNzU0MCBTZWN0aW9uIDMuM2BfLiBJbiB0
aGlzIGNhc2UsIHRoZSBjbGllbnQgYW5kIHNlcnZlciB1c2UgYSBUTFMgZXh0ZW5zaW9uIHRvIG5l
Z290aWF0ZSBIVFRQLzI6IGBBTFBOYF8uIEhvdyB0byB1c2UgQUxQTiBpcyBjdXJyZW50bHkgbm90
IGNvdmVyZWQgaW4gdGhpcyBkb2N1bWVudDogcGxlYXNlIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRp
b24gZm9yIGVpdGhlciB0aGUgOm1vZDpgc3NsIG1vZHVsZSA8cHl0aG9uOnNzbD5gIGluIHRoZSBz
dGFuZGFyZCBsaWJyYXJ5LCBvciB0aGUgOm1vZDpgUHlPcGVuU1NMIDxweW9wZW5zc2w6T3BlblNT
TC5TU0w+YCB0aGlyZC1wYXJ0eSBtb2R1bGVzLCBmb3IgbW9yZSBvbiB0aGlzIHRvcGljLgogCiBU
aGlzIG1ldGhvZCBpcyB0aGUgc2ltcGxlc3QgdG8gdXNlIG9uY2UgdGhlIFRMUyBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLiBUbyB1c2UgaXQgd2l0aCBIeXBlci1oMiwgYWZ0ZXIgeW91J3ZlIGVz
dGFibGlzaGVkIHRoZSBjb25uZWN0aW9uIGFuZCBjb25maXJtZWQgdGhhdCBIVFRQLzIgaGFzIGJl
ZW4gbmVnb3RpYXRlZCB3aXRoIGBBTFBOYF8sIGNyZWF0ZSBhIDpjbGFzczpgSDJDb25uZWN0aW9u
IDxoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbj5gIG9iamVjdCBhbmQgY2FsbCA6bWV0aDpgSDJD
b25uZWN0aW9uLmluaXRpYXRlX2Nvbm5lY3Rpb24gPGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9u
LmluaXRpYXRlX2Nvbm5lY3Rpb24+YC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBhcHByb3By
aWF0ZSBwcmVhbWJsZSBkYXRhIGlzIHBsYWNlZCBpbiB0aGUgZGF0YSBidWZmZXIuIFlvdSBzaG91
bGQgdGhlbiBpbW1lZGlhdGVseSBzZW5kIHRoZSBkYXRhIHJldHVybmVkIGJ5IDptZXRoOmBIMkNv
bm5lY3Rpb24uZGF0YV90b19zZW5kIDxoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbi5kYXRhX3Rv
X3NlbmQ+YCBvbiB5b3VyIFRMUyBjb25uZWN0aW9uLgogCiBBdCB0aGlzIHBvaW50LCB5b3UncmUg
ZnJlZSB0byB1c2UgYWxsIHRoZSBIVFRQLzIgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSBIeXBl
ci1oMi4KIAorLi4gbm90ZTo6CisgICBBbHRob3VnaCBIeXBlci1oMiBpcyBub3QgY29uY2VybmVk
IHdpdGggbmVnb3RpYXRpbmcgcHJvdG9jb2wgdmVyc2lvbnMsIGl0IGlzIGltcG9ydGFudCB0byBu
b3RlIHRoYXQgc3VwcG9ydCBmb3IgYEFMUE5gXyBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBzdGFu
ZGFyZCBsaWJyYXJ5IG9mIFB5dGhvbiB2ZXJzaW9ucyA8IDIuNy45LgorICAgQXMgYSBjb25zZXF1
ZW5jZSwgY2xpZW50cyBtYXkgZW5jb3VudGVyIHZhcmlvdXMgZXJyb3JzIGR1ZSB0byBwcm90b2Nv
bCB2ZXJzaW9ucyBtaXNtYXRjaC4KKwogU2VydmVyIFNldHVwIEV4YW1wbGUKIH5+fn5+fn5+fn5+
fn5+fn5+fn5+CiAKQEAgLTkwLDExICs5NCwxMCBAQCBUaGUgY29kZSBiZWxvdyBkZW1vbnN0cmF0
ZXMgaG93IHRvIGhhbmRsZSBhIHBsYWludGV4dCB1cGdyYWRlIGZyb20gdGhlIHBlcnNwZWN0aQog
UHJpb3IgS25vd2xlZGdlCiAtLS0tLS0tLS0tLS0tLS0KIAotSXQncyBwb3NzaWJsZSB0aGF0IHlv
dSBhcyBhIGNsaWVudCBrbm93IHRoYXQgYSBwYXJ0aWN1bGFyIHNlcnZlciBzdXBwb3J0cyBIVFRQ
LzIsIGFuZCB0aGF0IHlvdSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGFueSBvZiB0aGUgbmVnb3Rp
YXRpb25zIGRlc2NyaWJlZCBhYm92ZS4gSW4gdGhhdCBjYXNlLCB5b3UgbWF5IGZvbGxvdyB0aGUg
c3RlcHMgaW4gOnJlZjpgc3RhcnRpbmctYWxwbmAsIGlnbm9yaW5nIGFsbCByZWZlcmVuY2VzIHRv
IEFMUE4gYW5kIE5QTjogdGhlcmUncyBubyBuZWVkIHRvIHBlcmZvcm0gdGhlIHVwZ3JhZGUgZGFu
Y2UgZGVzY3JpYmVkIGluIDpyZWY6YHN0YXJ0aW5nLXVwZ3JhZGVgLgorSXQncyBwb3NzaWJsZSB0
aGF0IHlvdSBhcyBhIGNsaWVudCBrbm93IHRoYXQgYSBwYXJ0aWN1bGFyIHNlcnZlciBzdXBwb3J0
cyBIVFRQLzIsIGFuZCB0aGF0IHlvdSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGFueSBvZiB0aGUg
bmVnb3RpYXRpb25zIGRlc2NyaWJlZCBhYm92ZS4gSW4gdGhhdCBjYXNlLCB5b3UgbWF5IGZvbGxv
dyB0aGUgc3RlcHMgaW4gOnJlZjpgc3RhcnRpbmctYWxwbmAsIGlnbm9yaW5nIGFsbCByZWZlcmVu
Y2VzIHRvIEFMUE46IHRoZXJlJ3Mgbm8gbmVlZCB0byBwZXJmb3JtIHRoZSB1cGdyYWRlIGRhbmNl
IGRlc2NyaWJlZCBpbiA6cmVmOmBzdGFydGluZy11cGdyYWRlYC4KIAogLi4gX1JGQyA3NTQwOiBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzU0MAogLi4gX1JGQyA3NTQwIFNlY3Rpb24g
My4yOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzU0MCNzZWN0aW9uLTMuMgogLi4g
X1JGQyA3NTQwIFNlY3Rpb24gMy4zOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzU0
MCNzZWN0aW9uLTMuMwotLi4gX05QTjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBw
bGljYXRpb24tTGF5ZXJfUHJvdG9jb2xfTmVnb3RpYXRpb24KIC4uIF9BTFBOOiBodHRwczovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9BcHBsaWNhdGlvbi1MYXllcl9Qcm90b2NvbF9OZWdvdGlhdGlv
bgogLi4gX1JGQyA3MjMwIFNlY3Rpb24gNi43OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNzIzMCNzZWN0aW9uLTYuNwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lz
dGVkLWhlYWQtZXhhbXBsZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3R3aXN0ZWQtaGVhZC1l
eGFtcGxlLnJzdAppbmRleCAyMDc1MzUyN2NhMzYuLmRmOTNiMTQ0ZTcxNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLWhlYWQtZXhhbXBsZS5yc3QKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9kb2NzL3NvdXJjZS90d2lzdGVkLWhlYWQtZXhhbXBsZS5yc3QKQEAgLTUsNyArNSw3IEBAIFRo
aXMgZXhhbXBsZSBpcyBhIGJhc2ljIEhUVFAvMiBjbGllbnQgd3JpdHRlbiBmb3IgdGhlIGBUd2lz
dGVkYF8gYXN5bmNocm9ub3VzCiBuZXR3b3JraW5nIGZyYW1ld29yay4KIAogVGhpcyBjbGllbnQg
aXMgZmFpcmx5IHNpbXBsZTogaXQgbWFrZXMgYSBoYXJkLWNvZGVkIEhFQUQgcmVxdWVzdCB0bwot
aHR0cDJiaW4ub3JnIGFuZCBwcmludHMgb3V0IHRoZSByZXNwb25zZSBkYXRhLiBJdHMgcHVycG9z
ZSBpcyB0byBkZW1vbnN0cmF0ZQorbmdodHRwMi5vcmcvaHR0cGJpbi8gYW5kIHByaW50cyBvdXQg
dGhlIHJlc3BvbnNlIGRhdGEuIEl0cyBwdXJwb3NlIGlzIHRvIGRlbW9uc3RyYXRlCiBob3cgdG8g
d3JpdGUgYSB2ZXJ5IGJhc2ljIEhUVFAvMiBjbGllbnQgaW1wbGVtZW50YXRpb24uCiAKIC4uIGxp
dGVyYWxpbmNsdWRlOjogLi4vLi4vZXhhbXBsZXMvdHdpc3RlZC9oZWFkX3JlcXVlc3QucHkKQEAg
LTE0LDQgKzE0LDQgQEAgaG93IHRvIHdyaXRlIGEgdmVyeSBiYXNpYyBIVFRQLzIgY2xpZW50IGlt
cGxlbWVudGF0aW9uLgogICAgOmVuY29kaW5nOiB1dGYtOAogCiAKLS4uIF9Ud2lzdGVkOiBodHRw
czovL3R3aXN0ZWRtYXRyaXguY29tLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy4uIF9U
d2lzdGVkOiBodHRwczovL3R3aXN0ZWRtYXRyaXguY29tLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9k
b2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNl
L3R3aXN0ZWQtcG9zdC1leGFtcGxlLnJzdAppbmRleCAyMWJjOGFjMDlmMzQuLjdlM2FiYTQxYTM4
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5yc3QKQEAg
LTUsNyArNSw3IEBAIFRoaXMgZXhhbXBsZSBpcyBhIGJhc2ljIEhUVFAvMiBjbGllbnQgd3JpdHRl
biBmb3IgdGhlIGBUd2lzdGVkYF8gYXN5bmNocm9ub3VzCiBuZXR3b3JraW5nIGZyYW1ld29yay4K
IAogVGhpcyBjbGllbnQgaXMgZmFpcmx5IHNpbXBsZTogaXQgbWFrZXMgYSBoYXJkLWNvZGVkIFBP
U1QgcmVxdWVzdCB0bwotaHR0cDJiaW4ub3JnIGFuZCBwcmludHMgb3V0IHRoZSByZXNwb25zZSBk
YXRhLCBzZW5kaW5nIGEgZmlsZSB0aGF0IGlzIHByb3ZpZGVkCituZ2h0dHAyLm9yZy9odHRwYmlu
L3Bvc3QgYW5kIHByaW50cyBvdXQgdGhlIHJlc3BvbnNlIGRhdGEsIHNlbmRpbmcgYSBmaWxlIHRo
YXQgaXMgcHJvdmlkZWQKIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgdGhlIHNjcmlwdCBpdHNlbGYu
IEl0cyBwdXJwb3NlIGlzIHRvIGRlbW9uc3RyYXRlIGhvdyB0bwogd3JpdGUgYSBIVFRQLzIgY2xp
ZW50IGltcGxlbWVudGF0aW9uIHRoYXQgaGFuZGxlcyBmbG93IGNvbnRyb2wuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291
cmNlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWZiMmJk
ZTUyY2EuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2Nz
L3NvdXJjZS9hZHZhbmNlZC11c2FnZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FwaS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2RvY3Mvc291cmNlL2FzeW5jaW8tZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mv
c291cmNlL2Jhc2ljLXVzYWdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvY29uZi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy9zb3VyY2UvY29udHJpYnV0b3JzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2Uv
Y3VyaW8tZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2V2ZW50bGV0LWV4YW1wbGUu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9leGFtcGxlcy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291
cmNlL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvaW5zdGFsbGF0aW9uLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy9zb3VyY2UvbG93LWxldmVsLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvbmVn
b3RpYXRpbmctaHR0cDIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9yZWxlYXNlLW5vdGVzLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvcmVsZWFzZS1wcm9jZXNzLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9j
cy9zb3VyY2UvdGVzdGltb25pYWxzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdG9ybmFkby1l
eGFtcGxlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdHdpc3RlZC1leGFtcGxlLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy9zb3VyY2UvdHdpc3RlZC1oZWFkLWV4YW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2Nz
L3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3dz
Z2ktZXhhbXBsZS5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTRlYTUzNzc1MjRjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9k
b2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL21ha2UuYmF0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL2FzeW5jaW8vYXN5bmNpby1zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2Fz
eW5jaW8vYXN5bmNpby1zZXJ2ZXIucHkKaW5kZXggMGU1YjkxMmUyZGZhLi4yNzg3NzQ2NDRiYzgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby9hc3luY2lvLXNlcnZlci5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2V4YW1wbGVzL2FzeW5jaW8vYXN5bmNpby1zZXJ2ZXIucHkKQEAgLTgsMTAg
KzgsNiBAQCBBIGZ1bGx5LWZ1bmN0aW9uYWwgSFRUUC8yIHNlcnZlciB1c2luZyBhc3luY2lvLiBS
ZXF1aXJlcyBQeXRob24gMy41Ky4KIFRoaXMgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaGFuZGxpbmcg
cmVxdWVzdHMgd2l0aCBib2RpZXMsIGFzIHdlbGwgYXMgaGFuZGxpbmcKIHRob3NlIHdpdGhvdXQu
IEluIHBhcnRpY3VsYXIsIGl0IGRlbW9uc3RyYXRlcyB0aGUgZmFjdCB0aGF0IERhdGFSZWNlaXZl
ZCBtYXkKIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgYW5kIHRoYXQgYXBwbGljYXRpb25zIG11
c3QgaGFuZGxlIHRoYXQgcG9zc2liaWxpdHkuCi0KLVBsZWFzZSBub3RlIHRoYXQgdGhpcyBleGFt
cGxlIGRvZXMgbm90IGhhbmRsZSBmbG93IGNvbnRyb2wsIGFuZCBzbyBvbmx5IHdvcmtzCi1wcm9w
ZXJseSBmb3IgcmVsYXRpdmVseSBzbWFsbCByZXF1ZXN0cy4gUGxlYXNlIHNlZSBvdGhlciBleGFt
cGxlcyB0byB1bmRlcnN0YW5kCi1ob3cgZmxvdyBjb250cm9sIHNob3VsZCB3b3JrLgogIiIiCiBp
bXBvcnQgYXN5bmNpbwogaW1wb3J0IGlvCkBAIC0yMywxMCArMTksMTIgQEAgZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QsIFR1cGxlCiBmcm9tIGgyLmNvbmZpZyBpbXBvcnQgSDJDb25maWd1cmF0aW9u
CiBmcm9tIGgyLmNvbm5lY3Rpb24gaW1wb3J0IEgyQ29ubmVjdGlvbgogZnJvbSBoMi5ldmVudHMg
aW1wb3J0ICgKLSAgICBDb25uZWN0aW9uVGVybWluYXRlZCwgRGF0YVJlY2VpdmVkLCBSZXF1ZXN0
UmVjZWl2ZWQsIFN0cmVhbUVuZGVkCisgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWQsIERhdGFSZWNl
aXZlZCwgUmVtb3RlU2V0dGluZ3NDaGFuZ2VkLAorICAgIFJlcXVlc3RSZWNlaXZlZCwgU3RyZWFt
RW5kZWQsIFN0cmVhbVJlc2V0LCBXaW5kb3dVcGRhdGVkCiApCiBmcm9tIGgyLmVycm9ycyBpbXBv
cnQgRXJyb3JDb2RlcwotZnJvbSBoMi5leGNlcHRpb25zIGltcG9ydCBQcm90b2NvbEVycm9yCitm
cm9tIGgyLmV4Y2VwdGlvbnMgaW1wb3J0IFByb3RvY29sRXJyb3IsIFN0cmVhbUNsb3NlZEVycm9y
Citmcm9tIGgyLnNldHRpbmdzIGltcG9ydCBTZXR0aW5nQ29kZXMKIAogCiBSZXF1ZXN0RGF0YSA9
IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ1JlcXVlc3REYXRhJywgWydoZWFkZXJzJywgJ2RhdGEn
XSkKQEAgLTM4LDEyICszNiwxOCBAQCBjbGFzcyBIMlByb3RvY29sKGFzeW5jaW8uUHJvdG9jb2wp
OgogICAgICAgICBzZWxmLmNvbm4gPSBIMkNvbm5lY3Rpb24oY29uZmlnPWNvbmZpZykKICAgICAg
ICAgc2VsZi50cmFuc3BvcnQgPSBOb25lCiAgICAgICAgIHNlbGYuc3RyZWFtX2RhdGEgPSB7fQor
ICAgICAgICBzZWxmLmZsb3dfY29udHJvbF9mdXR1cmVzID0ge30KIAogICAgIGRlZiBjb25uZWN0
aW9uX21hZGUoc2VsZiwgdHJhbnNwb3J0OiBhc3luY2lvLlRyYW5zcG9ydCk6CiAgICAgICAgIHNl
bGYudHJhbnNwb3J0ID0gdHJhbnNwb3J0CiAgICAgICAgIHNlbGYuY29ubi5pbml0aWF0ZV9jb25u
ZWN0aW9uKCkKICAgICAgICAgc2VsZi50cmFuc3BvcnQud3JpdGUoc2VsZi5jb25uLmRhdGFfdG9f
c2VuZCgpKQogCisgICAgZGVmIGNvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgorICAgICAgICBm
b3IgZnV0dXJlIGluIHNlbGYuZmxvd19jb250cm9sX2Z1dHVyZXMudmFsdWVzKCk6CisgICAgICAg
ICAgICBmdXR1cmUuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5mbG93X2NvbnRyb2xfZnV0dXJlcyA9
IHt9CisKICAgICBkZWYgZGF0YV9yZWNlaXZlZChzZWxmLCBkYXRhOiBieXRlcyk6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIGV2ZW50cyA9IHNlbGYuY29ubi5yZWNlaXZlX2RhdGEoZGF0YSkK
QEAgLTYxLDYgKzY1LDEzIEBAIGNsYXNzIEgyUHJvdG9jb2woYXN5bmNpby5Qcm90b2NvbCk6CiAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtX2NvbXBsZXRlKGV2ZW50LnN0cmVhbV9pZCkK
ICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIENvbm5lY3Rpb25UZXJtaW5h
dGVkKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuY2xvc2UoKQorICAgICAg
ICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgU3RyZWFtUmVzZXQpOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLnN0cmVhbV9yZXNldChldmVudC5zdHJlYW1faWQpCisgICAgICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBXaW5kb3dVcGRhdGVkKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi53aW5kb3dfdXBkYXRlZChldmVudC5zdHJlYW1faWQsIGV2ZW50LmRlbHRh
KQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgUmVtb3RlU2V0dGluZ3ND
aGFuZ2VkKToKKyAgICAgICAgICAgICAgICAgICAgaWYgU2V0dGluZ0NvZGVzLklOSVRJQUxfV0lO
RE9XX1NJWkUgaW4gZXZlbnQuY2hhbmdlZF9zZXR0aW5nczoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYud2luZG93X3VwZGF0ZWQoTm9uZSwgMCkKIAogICAgICAgICAgICAgICAgIHNlbGYu
dHJhbnNwb3J0LndyaXRlKHNlbGYuY29ubi5kYXRhX3RvX3NlbmQoKSkKIApAQCAtNjgsMTEgKzc5
LDYgQEAgY2xhc3MgSDJQcm90b2NvbChhc3luY2lvLlByb3RvY29sKToKICAgICAgICAgaGVhZGVy
cyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KGhlYWRlcnMpCiAgICAgICAgIG1ldGhvZCA9IGhl
YWRlcnNbJzptZXRob2QnXQogCi0gICAgICAgICMgV2Ugb25seSBzdXBwb3J0IEdFVCBhbmQgUE9T
VC4KLSAgICAgICAgaWYgbWV0aG9kIG5vdCBpbiAoJ0dFVCcsICdQT1NUJyk6Ci0gICAgICAgICAg
ICBzZWxmLnJldHVybl80MDUoaGVhZGVycywgc3RyZWFtX2lkKQotICAgICAgICAgICAgcmV0dXJu
Ci0KICAgICAgICAgIyBTdG9yZSBvZmYgdGhlIHJlcXVlc3QgZGF0YS4KICAgICAgICAgcmVxdWVz
dF9kYXRhID0gUmVxdWVzdERhdGEoaGVhZGVycywgaW8uQnl0ZXNJTygpKQogICAgICAgICBzZWxm
LnN0cmVhbV9kYXRhW3N0cmVhbV9pZF0gPSByZXF1ZXN0X2RhdGEKQEAgLTEwMSwxOCArMTA3LDcg
QEAgY2xhc3MgSDJQcm90b2NvbChhc3luY2lvLlByb3RvY29sKToKICAgICAgICAgICAgICgnc2Vy
dmVyJywgJ2FzeW5jaW8taDInKSwKICAgICAgICAgKQogICAgICAgICBzZWxmLmNvbm4uc2VuZF9o
ZWFkZXJzKHN0cmVhbV9pZCwgcmVzcG9uc2VfaGVhZGVycykKLSAgICAgICAgc2VsZi5jb25uLnNl
bmRfZGF0YShzdHJlYW1faWQsIGRhdGEsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAgIGRlZiByZXR1
cm5fNDA1KHNlbGYsIGhlYWRlcnM6IExpc3RbVHVwbGVbc3RyLCBzdHJdXSwgc3RyZWFtX2lkOiBp
bnQpOgotICAgICAgICAiIiIKLSAgICAgICAgV2UgZG9uJ3Qgc3VwcG9ydCB0aGUgZ2l2ZW4gbWV0
aG9kLCBzbyB3ZSB3YW50IHRvIHJldHVybiBhIDQwNSByZXNwb25zZS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHJlc3BvbnNlX2hlYWRlcnMgPSAoCi0gICAgICAgICAgICAoJzpzdGF0dXMnLCAnNDA1
JyksCi0gICAgICAgICAgICAoJ2NvbnRlbnQtbGVuZ3RoJywgJzAnKSwKLSAgICAgICAgICAgICgn
c2VydmVyJywgJ2FzeW5jaW8taDInKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmNvbm4uc2Vu
ZF9oZWFkZXJzKHN0cmVhbV9pZCwgcmVzcG9uc2VfaGVhZGVycywgZW5kX3N0cmVhbT1UcnVlKQor
ICAgICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoc2VsZi5zZW5kX2RhdGEoZGF0YSwgc3RyZWFt
X2lkKSkKIAogICAgIGRlZiByZWNlaXZlX2RhdGEoc2VsZiwgZGF0YTogYnl0ZXMsIHN0cmVhbV9p
ZDogaW50KToKICAgICAgICAgIiIiCkBAIC0xMjgsMTIgKzEyMyw3MiBAQCBjbGFzcyBIMlByb3Rv
Y29sKGFzeW5jaW8uUHJvdG9jb2wpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RyZWFt
X2RhdGEuZGF0YS53cml0ZShkYXRhKQogCisgICAgZGVmIHN0cmVhbV9yZXNldChzZWxmLCBzdHJl
YW1faWQpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBzdHJlYW0gcmVzZXQgd2FzIHNlbnQuIFN0
b3Agc2VuZGluZyBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc3RyZWFtX2lkIGluIHNl
bGYuZmxvd19jb250cm9sX2Z1dHVyZXM6CisgICAgICAgICAgICBmdXR1cmUgPSBzZWxmLmZsb3df
Y29udHJvbF9mdXR1cmVzLnBvcChzdHJlYW1faWQpCisgICAgICAgICAgICBmdXR1cmUuY2FuY2Vs
KCkKKworICAgIGFzeW5jIGRlZiBzZW5kX2RhdGEoc2VsZiwgZGF0YSwgc3RyZWFtX2lkKToKKyAg
ICAgICAgIiIiCisgICAgICAgIFNlbmQgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGZsb3cgY29udHJv
bCBydWxlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGRhdGE6CisgICAgICAgICAgICB3
aGlsZSBzZWxmLmNvbm4ubG9jYWxfZmxvd19jb250cm9sX3dpbmRvdyhzdHJlYW1faWQpIDwgMToK
KyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYud2Fp
dF9mb3JfZmxvd19jb250cm9sKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgYXN5
bmNpby5DYW5jZWxsZWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgICAgIGNodW5rX3NpemUgPSBtaW4oCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLmxvY2Fs
X2Zsb3dfY29udHJvbF93aW5kb3coc3RyZWFtX2lkKSwKKyAgICAgICAgICAgICAgICBsZW4oZGF0
YSksCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLm1heF9vdXRib3VuZF9mcmFtZV9zaXplLAor
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5j
b25uLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAg
ICAgICAgICAgICBkYXRhWzpjaHVua19zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX3N0
cmVhbT0oY2h1bmtfc2l6ZSA9PSBsZW4oZGF0YSkpCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgZXhjZXB0IChTdHJlYW1DbG9zZWRFcnJvciwgUHJvdG9jb2xFcnJvcik6CisgICAgICAg
ICAgICAgICAgIyBUaGUgc3RyZWFtIGdvdCBjbG9zZWQgYW5kIHdlIGRpZG4ndCBnZXQgdG9sZC4g
V2UncmUgZG9uZQorICAgICAgICAgICAgICAgICMgaGVyZS4KKyAgICAgICAgICAgICAgICBicmVh
aworCisgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZShzZWxmLmNvbm4uZGF0YV90b19z
ZW5kKCkpCisgICAgICAgICAgICBkYXRhID0gZGF0YVtjaHVua19zaXplOl0KKworICAgIGFzeW5j
IGRlZiB3YWl0X2Zvcl9mbG93X2NvbnRyb2woc2VsZiwgc3RyZWFtX2lkKToKKyAgICAgICAgIiIi
CisgICAgICAgIFdhaXRzIGZvciBhIEZ1dHVyZSB0aGF0IGZpcmVzIHdoZW4gdGhlIGZsb3cgY29u
dHJvbCB3aW5kb3cgaXMgb3BlbmVkLgorICAgICAgICAiIiIKKyAgICAgICAgZiA9IGFzeW5jaW8u
RnV0dXJlKCkKKyAgICAgICAgc2VsZi5mbG93X2NvbnRyb2xfZnV0dXJlc1tzdHJlYW1faWRdID0g
ZgorICAgICAgICBhd2FpdCBmCisKKyAgICBkZWYgd2luZG93X3VwZGF0ZWQoc2VsZiwgc3RyZWFt
X2lkLCBkZWx0YSk6CisgICAgICAgICIiIgorICAgICAgICBBIHdpbmRvdyB1cGRhdGUgZnJhbWUg
d2FzIHJlY2VpdmVkLiBVbmJsb2NrIHNvbWUgbnVtYmVyIG9mIGZsb3cgY29udHJvbAorICAgICAg
ICBGdXR1cmVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc3RyZWFtX2lkIGFuZCBzdHJlYW1f
aWQgaW4gc2VsZi5mbG93X2NvbnRyb2xfZnV0dXJlczoKKyAgICAgICAgICAgIGYgPSBzZWxmLmZs
b3dfY29udHJvbF9mdXR1cmVzLnBvcChzdHJlYW1faWQpCisgICAgICAgICAgICBmLnNldF9yZXN1
bHQoZGVsdGEpCisgICAgICAgIGVsaWYgbm90IHN0cmVhbV9pZDoKKyAgICAgICAgICAgIGZvciBm
IGluIHNlbGYuZmxvd19jb250cm9sX2Z1dHVyZXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAg
Zi5zZXRfcmVzdWx0KGRlbHRhKQorCisgICAgICAgICAgICBzZWxmLmZsb3dfY29udHJvbF9mdXR1
cmVzID0ge30KKwogCiBzc2xfY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNz
bC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogc3NsX2NvbnRleHQub3B0aW9ucyB8PSAoCiAgICAgc3Ns
Lk9QX05PX1RMU3YxIHwgc3NsLk9QX05PX1RMU3YxXzEgfCBzc2wuT1BfTk9fQ09NUFJFU1NJT04K
ICkKLXNzbF9jb250ZXh0LnNldF9jaXBoZXJzKCJFQ0RIRStBRVNHQ00iKQogc3NsX2NvbnRleHQu
bG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlPSJjZXJ0LmNydCIsIGtleWZpbGU9ImNlcnQua2V5IikK
IHNzbF9jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhbImgyIl0pCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZXhhbXBsZXMvYXN5bmNpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMv
YXN5bmNpby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U4
YWU0YTI4N2U1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9leGFtcGxlcy9hc3luY2lvL2FzeW5jaW8tc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxl
cy9hc3luY2lvL2NlcnQuY3J0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL2NlcnQua2V5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL3dzZ2ktc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2V4YW1wbGVzL2FzeW5jaW8vd3NnaS1zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2Fz
eW5jaW8vd3NnaS1zZXJ2ZXIucHkKaW5kZXggMDlhYjJjZTA1NDE3Li45ZmRiMmZhMGZjMzAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby93c2dpLXNlcnZlci5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2V4YW1wbGVzL2FzeW5jaW8vd3NnaS1zZXJ2ZXIucHkKQEAgLTUsNyArNSw3IEBAIGFz
eW5jaW8tc2VydmVyLnB5CiAKIEEgZnVsbHktZnVuY3Rpb25hbCBXU0dJIHNlcnZlciwgd3JpdHRl
biB1c2luZyBoeXBlci1oMi4gUmVxdWlyZXMgYXN5bmNpby4KIAotVG8gdGVzdCBpdCwgdHJ5IGlu
c3RhbGxpbmcgaHR0cGluIGZyb20gcGlwIChgYHBpcCBpbnN0YWxsIGh0dHBiaW5gYCkgYW5kIHRo
ZW4KK1RvIHRlc3QgaXQsIHRyeSBpbnN0YWxsaW5nIGh0dHBiaW4gZnJvbSBwaXAgKGBgcGlwIGlu
c3RhbGwgaHR0cGJpbmBgKSBhbmQgdGhlbgogcnVubmluZyB0aGUgc2VydmVyIChgYHB5dGhvbiBh
c3luY2lvLXNlcnZlci5weSBodHRwYmluOmFwcGBgKS4KIAogVGhpcyBzZXJ2ZXIgZG9lcyBub3Qg
c3VwcG9ydCBIVFRQLzEuMTogaXQgaXMgYSBIVFRQLzItb25seSBXU0dJIHNlcnZlci4gVGhlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlvLXNlcnZlci5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZXhhbXBsZXMvY3VyaW8vY3VyaW8tc2VydmVyLnB5CmluZGV4IDAxNjA0YjQ0ZTZmZi4uZjkz
ZDRkYjlkMDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlvLXNlcnZl
ci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlvLXNlcnZlci5weQpAQCAtMTIs
NyArMTIsNyBAQCBpbXBvcnQgbWltZXR5cGVzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJv
bSBjdXJpbyBpbXBvcnQgS2VybmVsLCBFdmVudCwgc3Bhd24sIHNvY2tldCwgc3NsCitmcm9tIGN1
cmlvIGltcG9ydCBFdmVudCwgc3Bhd24sIHNvY2tldCwgc3NsLCBydW4KIAogaW1wb3J0IGgyLmNv
bmZpZwogaW1wb3J0IGgyLmNvbm5lY3Rpb24KQEAgLTIzLDcgKzIzLDcgQEAgaW1wb3J0IGgyLmV2
ZW50cwogUkVBRF9DSFVOS19TSVpFID0gODE5MgogCiAKLWRlZiBjcmVhdGVfbGlzdGVuaW5nX3Nz
bF9zb2NrZXQoYWRkcmVzcywgY2VydGZpbGUsIGtleWZpbGUpOgorYXN5bmMgZGVmIGNyZWF0ZV9s
aXN0ZW5pbmdfc3NsX3NvY2tldChhZGRyZXNzLCBjZXJ0ZmlsZSwga2V5ZmlsZSk6CiAgICAgIiIi
CiAgICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBsaXN0ZW5pbmcgVExTIHNvY2tldCBvbiBhIGdpdmVu
IGFkZHJlc3MuCiAgICAgIiIiCkBAIC0zNyw3ICszNyw3IEBAIGRlZiBjcmVhdGVfbGlzdGVuaW5n
X3NzbF9zb2NrZXQoYWRkcmVzcywgY2VydGZpbGUsIGtleWZpbGUpOgogCiAgICAgc29jayA9IHNv
Y2tldC5zb2NrZXQoKQogICAgIHNvY2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29j
a2V0LlNPX1JFVVNFQUREUiwgMSkKLSAgICBzb2NrID0gc3NsX2NvbnRleHQud3JhcF9zb2NrZXQo
c29jaykKKyAgICBzb2NrID0gYXdhaXQgc3NsX2NvbnRleHQud3JhcF9zb2NrZXQoc29jaykKICAg
ICBzb2NrLmJpbmQoYWRkcmVzcykKICAgICBzb2NrLmxpc3RlbigpCiAKQEAgLTQ4LDcgKzQ4LDcg
QEAgYXN5bmMgZGVmIGgyX3NlcnZlcihhZGRyZXNzLCByb290LCBjZXJ0ZmlsZSwga2V5ZmlsZSk6
CiAgICAgIiIiCiAgICAgQ3JlYXRlIGFuIEhUVFAvMiBzZXJ2ZXIgYXQgdGhlIGdpdmVuIGFkZHJl
c3MuCiAgICAgIiIiCi0gICAgc29jayA9IGNyZWF0ZV9saXN0ZW5pbmdfc3NsX3NvY2tldChhZGRy
ZXNzLCBjZXJ0ZmlsZSwga2V5ZmlsZSkKKyAgICBzb2NrID0gYXdhaXQgY3JlYXRlX2xpc3Rlbmlu
Z19zc2xfc29ja2V0KGFkZHJlc3MsIGNlcnRmaWxlLCBrZXlmaWxlKQogICAgIHByaW50KCJOb3cg
bGlzdGVuaW5nIG9uICVzOiVkIiAlIGFkZHJlc3MpCiAKICAgICBhc3luYyB3aXRoIHNvY2s6CkBA
IC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgSDJTZXJ2ZXI6CiAgICAgICAgIFNlbmQgdGhlIGRhdGEg
cG9ydGlvbiBvZiBhIGZpbGUuIEhhbmRsZXMgZmxvdyBjb250cm9sIHJ1bGVzLgogICAgICAgICAi
IiIKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmNvbm4u
bG9jYWxfZmxvd19jb250cm9sX3dpbmRvdyhzdHJlYW1faWQpOgorICAgICAgICAgICAgd2hpbGUg
c2VsZi5jb25uLmxvY2FsX2Zsb3dfY29udHJvbF93aW5kb3coc3RyZWFtX2lkKSA8IDE6CiAgICAg
ICAgICAgICAgICAgYXdhaXQgc2VsZi53YWl0X2Zvcl9mbG93X2NvbnRyb2woc3RyZWFtX2lkKQog
CiAgICAgICAgICAgICBjaHVua19zaXplID0gbWluKApAQCAtMTk2LDEzICsxOTYsMTEgQEAgY2xh
c3MgSDJTZXJ2ZXI6CiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaG9zdCA9IHN5
cy5hcmd2WzJdIGlmIGxlbihzeXMuYXJndikgPiAyIGVsc2UgImxvY2FsaG9zdCIKLSAgICBrZXJu
ZWwgPSBLZXJuZWwod2l0aF9tb25pdG9yPVRydWUpCiAgICAgcHJpbnQoIlRyeSBHRVR0aW5nOiIp
CiAgICAgcHJpbnQoIiAgICBPbiBPU1ggYWZ0ZXIgJ2JyZXcgaW5zdGFsbCBjdXJsIC0td2l0aC1j
LWFyZXMgLS13aXRoLWxpYmlkbiAtLXdpdGgtbmdodHRwMiAtLXdpdGgtb3BlbnNzbCc6IikKICAg
ICBwcmludCgiL3Vzci9sb2NhbC9vcHQvY3VybC9iaW4vY3VybCAtLXRsc3YxLjIgLS1odHRwMiAt
ayBodHRwczovL2xvY2FsaG9zdDo1MDAwL2J1bmRsZS5qcyIpCiAgICAgcHJpbnQoIk9yIG9wZW4g
YSBicm93c2VyIHRvOiBodHRwczovL2xvY2FsaG9zdDo1MDAwLyIpCiAgICAgcHJpbnQoIiAgIChB
Y2NlcHQgYWxsIHRoZSB3YXJuaW5ncykiKQotICAgIGtlcm5lbC5ydW4oaDJfc2VydmVyKChob3N0
LCA1MDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuYXJndlsxXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAie30uY3J0LnBlbSIuZm9ybWF0KGhvc3QpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICJ7fS5rZXkiLmZvcm1hdChob3N0KSkpCisgICAgcnVuKGgyX3NlcnZlcigo
aG9zdCwgNTAwMCksIHN5cy5hcmd2WzFdLAorICAgICAgICAgICAgICAgICAgInt9LmNydC5wZW0i
LmZvcm1hdChob3N0KSwKKyAgICAgICAgICAgICAgICAgICJ7fS5rZXkiLmZvcm1hdChob3N0KSks
IHdpdGhfbW9uaXRvcj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9jdXJpby93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOTA2YjA5MzE0Mi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlvLXNl
cnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vbG9jYWxob3N0LmNydC5wZW0KLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2V4YW1wbGVzL2N1cmlvL2xvY2FsaG9zdC5rZXkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhh
bXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQtc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVu
dGxldC9ldmVudGxldC1zZXJ2ZXIucHkKaW5kZXggZmYzNGUyZjljY2RhLi5hNDZjZmIzZDE1ODIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQtc2VydmVyLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQtc2VydmVyLnB5CkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIENvbm5lY3Rpb25NYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHJl
c3BvbnNlX2hlYWRlcnMgPSAoCiAgICAgICAgICAgICAoJzpzdGF0dXMnLCAnMjAwJyksCiAgICAg
ICAgICAgICAoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyksCi0gICAgICAgICAg
ICAoJ2NvbnRlbnQtbGVuZ3RoJywgbGVuKGRhdGEpKSwKKyAgICAgICAgICAgICgnY29udGVudC1s
ZW5ndGgnLCBzdHIobGVuKGRhdGEpKSksCiAgICAgICAgICAgICAoJ3NlcnZlcicsICdldmVudGxl
dC1oMicpLAogICAgICAgICApCiAgICAgICAgIHNlbGYuY29ubi5zZW5kX2hlYWRlcnMoc3RyZWFt
X2lkLCByZXNwb25zZV9oZWFkZXJzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVu
dGxldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjgyMjQ0NTBiYi4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2V2
ZW50bGV0L2V2ZW50bGV0LXNlcnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvc2Vy
dmVyLmNydAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvc2VydmVyLmtleQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2ZyYWdtZW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2ZyYWdt
ZW50LnB5CmluZGV4IDk5NThjMWJkNzI2Ny4uMjY5MTk0ZDZjNzcwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9jbGllbnRfaHR0cHNfc2V0dXBfZnJhZ21lbnQucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2ZyYWdtZW50
LnB5CkBAIC00OCw3ICs0OCw3IEBAIGRlZiBnZXRfaHR0cDJfc3NsX2NvbnRleHQoKToKIAogICAg
ICMgUkZDIDc1NDAgU2VjdGlvbiA5LjIuMjogImRlcGxveW1lbnRzIG9mIEhUVFAvMiB0aGF0IHVz
ZSBUTFMgMS4yIE1VU1QKICAgICAjIHN1cHBvcnQgVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhf
R0NNX1NIQTI1NiIuIEluIHByYWN0aWNlLCB0aGUKLSAgICAjIGJsYWNrbGlzdCBkZWZpbmVkIGlu
IHRoaXMgc2VjdGlvbiBhbGxvd3Mgb25seSB0aGUgQUVTIEdDTSBhbmQgQ2hhQ2hhMjAKKyAgICAj
IGJsb2NrbGlzdCBkZWZpbmVkIGluIHRoaXMgc2VjdGlvbiBhbGxvd3Mgb25seSB0aGUgQUVTIEdD
TSBhbmQgQ2hhQ2hhMjAKICAgICAjIGNpcGhlciBzdWl0ZXMgd2l0aCBlcGhlbWVyYWwga2V5IG5l
Z290aWF0aW9uLgogICAgIGN0eC5zZXRfY2lwaGVycygiRUNESEUrQUVTR0NNOkVDREhFK0NIQUNI
QTIwOkRIRStBRVNHQ006REhFK0NIQUNIQTIwIikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFt
cGxlcy9mcmFnbWVudHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL2ZyYWdtZW50cy9jbGllbnRfdXBncmFkZV9mcmFnbWVudC5weQppbmRleCAzNGZmMjk4Y2Q5
N2QuLmY0NWMwMDJkZjc0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMv
Y2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVu
dHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkKQEAgLTM4LDcgKzM4LDcgQEAgZGVmIHNlbmRf
aW5pdGlhbF9yZXF1ZXN0KGNvbm5lY3Rpb24sIHNldHRpbmdzKToKICAgICAgICAgYiJHRVQgLyBI
VFRQLzEuMVxyXG4iICsKICAgICAgICAgYiJIb3N0OiBsb2NhbGhvc3RcclxuIiArCiAgICAgICAg
IGIiVXBncmFkZTogaDJjXHJcbiIgKwotICAgICAgICBiIkhUVFAyLVNldHRpbmdzOiAiICsgc2V0
dGluZ3MgKyAiXHJcbiIKKyAgICAgICAgYiJIVFRQMi1TZXR0aW5nczogIiArIHNldHRpbmdzICsg
YiJcclxuIiArCiAgICAgICAgIGIiXHJcbiIKICAgICApCiAgICAgY29ubmVjdGlvbi5zZW5kYWxs
KHJlcXVlc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJf
aHR0cHNfc2V0dXBfZnJhZ21lbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2
ZXJfaHR0cHNfc2V0dXBfZnJhZ21lbnQucHkKaW5kZXggMTRlYzBlZjIzN2RlLi45ZmMzNjFmMmM2
MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL3NlcnZlcl9odHRwc19z
ZXR1cF9mcmFnbWVudC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJf
aHR0cHNfc2V0dXBfZnJhZ21lbnQucHkKQEAgLTUxLDcgKzUxLDcgQEAgZGVmIGdldF9odHRwMl9z
c2xfY29udGV4dCgpOgogCiAgICAgIyBSRkMgNzU0MCBTZWN0aW9uIDkuMi4yOiAiZGVwbG95bWVu
dHMgb2YgSFRUUC8yIHRoYXQgdXNlIFRMUyAxLjIgTVVTVAogICAgICMgc3VwcG9ydCBUTFNfRUNE
SEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2Ii4gSW4gcHJhY3RpY2UsIHRoZQotICAgICMg
YmxhY2tsaXN0IGRlZmluZWQgaW4gdGhpcyBzZWN0aW9uIGFsbG93cyBvbmx5IHRoZSBBRVMgR0NN
IGFuZCBDaGFDaGEyMAorICAgICMgYmxvY2tsaXN0IGRlZmluZWQgaW4gdGhpcyBzZWN0aW9uIGFs
bG93cyBvbmx5IHRoZSBBRVMgR0NNIGFuZCBDaGFDaGEyMAogICAgICMgY2lwaGVyIHN1aXRlcyB3
aXRoIGVwaGVtZXJhbCBrZXkgbmVnb3RpYXRpb24uCiAgICAgY3R4LnNldF9jaXBoZXJzKCJFQ0RI
RStBRVNHQ006RUNESEUrQ0hBQ0hBMjA6REhFK0FFU0dDTTpESEUrQ0hBQ0hBMjAiKQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVu
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL3NlcnZlcl91cGdyYWRlX2ZyYWdtZW50
LnB5CmluZGV4IDViNzdjMDVmZTBkOC4uN2U4YjFmMGVlYTgwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVudC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVudC5weQpAQCAtNDUs
MTQgKzQ1LDE0IEBAIGRlZiByZWNlaXZlX2luaXRpYWxfcmVxdWVzdChjb25uZWN0aW9uKToKICAg
ICAgICAgZGF0YSArPSBjb25uZWN0aW9uLnJlY3YoODE5MikKIAogICAgIG1hdGNoID0gcmUuc2Vh
cmNoKGInVXBncmFkZTogaDJjXHJcbicsIGRhdGEpCi0gICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6
CisgICAgaWYgbWF0Y2ggaXMgTm9uZToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJIVFRQ
LzIgdXBncmFkZSBub3QgcmVxdWVzdGVkISIpCiAKICAgICAjIFdlIG5lZWQgdG8gbG9vayBmb3Ig
dGhlIEhUVFAyLVNldHRpbmdzIGhlYWRlciBmaWVsZC4gQWdhaW4sIGluIHByb2R1Y3Rpb24KICAg
ICAjIGNvZGUgeW91IHNob3VsZG4ndCB1c2UgcmVndWxhciBleHByZXNzaW9ucyBmb3IgdGhpcywg
YnV0IGl0J3MgZ29vZCBlbm91Z2gKICAgICAjIGZvciB0aGUgZXhhbXBsZS4KICAgICBtYXRjaCA9
IHJlLnNlYXJjaChiJ0hUVFAyLVNldHRpbmdzOiAoXFxTKylcclxuJywgZGF0YSkKLSAgICBpZiBt
YXRjaCBpcyBub3QgTm9uZToKKyAgICBpZiBtYXRjaCBpcyBOb25lOgogICAgICAgICByYWlzZSBS
dW50aW1lRXJyb3IoIkhUVFAyLVNldHRpbmdzIGhlYWRlciBmaWVsZCBub3QgcHJlc2VudCEiKQog
CiAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVz
L2ZyYWdtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VlNmY5NGI0MjAu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhh
bXBsZXMvZnJhZ21lbnRzL2NsaWVudF9odHRwc19zZXR1cF9mcmFnbWVudC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
ZXhhbXBsZXMvZnJhZ21lbnRzL2NsaWVudF91cGdyYWRlX2ZyYWdtZW50LnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9l
eGFtcGxlcy9mcmFnbWVudHMvc2VydmVyX2h0dHBzX3NldHVwX2ZyYWdtZW50LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy9mcmFnbWVudHMvc2VydmVyX3VwZ3JhZGVfZnJhZ21lbnQucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhh
bXBsZXMvdG9ybmFkby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTFlZWRlOTgwMjllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90b3Ju
YWRvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy90b3JuYWRvL3NlcnZlci5jcnQKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVz
L3Rvcm5hZG8vc2VydmVyLmtleQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby90b3JuYWRvLXNl
cnZlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL2hlYWRfcmVxdWVz
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9oZWFkX3JlcXVlc3QucHkKaW5kZXggNzJm
ZTVmODg5MThiLi40YTc1MzgwMjRhOTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdp
c3RlZC9oZWFkX3JlcXVlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL2hlYWRf
cmVxdWVzdC5weQpAQCAtMjMsOCArMjMsOCBAQCBmcm9tIGgyLmV2ZW50cyBpbXBvcnQgKAogKQog
CiAKLUFVVEhPUklUWSA9IHUnaHR0cDJiaW4ub3JnJwotUEFUSCA9ICcvJworQVVUSE9SSVRZID0g
dSduZ2h0dHAyLm9yZycKK1BBVEggPSAnL2h0dHBiaW4vJwogU0laRSA9IDQwOTYKIAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvcG9zdF9yZXF1ZXN0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy90d2lzdGVkL3Bvc3RfcmVxdWVzdC5weQppbmRleCA3NDZmMTMyNjZhMjguLmM4
MTdiYWM0NjVmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3Bvc3RfcmVx
dWVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvcG9zdF9yZXF1ZXN0LnB5CkBA
IC0zMCw4ICszMCw4IEBAIGZyb20gaDIuZXZlbnRzIGltcG9ydCAoCiApCiAKIAotQVVUSE9SSVRZ
ID0gdSdodHRwMmJpbi5vcmcnCi1QQVRIID0gJy9wb3N0JworQVVUSE9SSVRZID0gdSduZ2h0dHAy
Lm9yZycKK1BBVEggPSAnL2h0dHBiaW4vcG9zdCcKIAogCiBjbGFzcyBIMlByb3RvY29sKFByb3Rv
Y29sKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC90d2lzdGVkLXNlcnZl
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC90d2lzdGVkLXNlcnZlci5weQppbmRleCA3
Y2RlNjA5ZGIwY2IuLjc1YTI3MWQ5Yjc5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90
d2lzdGVkL3R3aXN0ZWQtc2VydmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC90
d2lzdGVkLXNlcnZlci5weQpAQCAtMjAsNiArMjAsNyBAQCBmcm9tIGgyLmNvbm5lY3Rpb24gaW1w
b3J0IEgyQ29ubmVjdGlvbgogZnJvbSBoMi5ldmVudHMgaW1wb3J0ICgKICAgICBSZXF1ZXN0UmVj
ZWl2ZWQsIERhdGFSZWNlaXZlZCwgV2luZG93VXBkYXRlZAogKQorZnJvbSBoMi5leGNlcHRpb25z
IGltcG9ydCBQcm90b2NvbEVycm9yCiAKIAogZGVmIGNsb3NlX2ZpbGUoZmlsZSwgZCk6CkBAIC00
NiwxNyArNDcsMjMgQEAgY2xhc3MgSDJQcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgIGlmIG5v
dCBzZWxmLmtub3duX3Byb3RvOgogICAgICAgICAgICAgc2VsZi5rbm93bl9wcm90byA9IFRydWUK
IAotICAgICAgICBldmVudHMgPSBzZWxmLmNvbm4ucmVjZWl2ZV9kYXRhKGRhdGEpCi0gICAgICAg
IGlmIHNlbGYuY29ubi5kYXRhX3RvX3NlbmQ6Ci0gICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC53
cml0ZShzZWxmLmNvbm4uZGF0YV90b19zZW5kKCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGV2ZW50cyA9IHNlbGYuY29ubi5yZWNlaXZlX2RhdGEoZGF0YSkKKyAgICAgICAgZXhjZXB0IFBy
b3RvY29sRXJyb3I6CisgICAgICAgICAgICBpZiBzZWxmLmNvbm4uZGF0YV90b19zZW5kOgorICAg
ICAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0LndyaXRlKHNlbGYuY29ubi5kYXRhX3RvX3NlbmQo
KSkKKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0Lmxvc2VDb25uZWN0aW9uKCkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGZvciBldmVudCBpbiBldmVudHM6CisgICAgICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShldmVudCwgUmVxdWVzdFJlY2VpdmVkKToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZXF1ZXN0UmVjZWl2ZWQoZXZlbnQuaGVhZGVycywgZXZlbnQuc3RyZWFtX2lkKQor
ICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhRnJhbWVSZWNlaXZlZChldmVudC5zdHJlYW1faWQp
CisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBXaW5kb3dVcGRhdGVkKToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi53aW5kb3dVcGRhdGVkKGV2ZW50KQogCi0gICAgICAg
IGZvciBldmVudCBpbiBldmVudHM6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBS
ZXF1ZXN0UmVjZWl2ZWQpOgotICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdFJlY2VpdmVkKGV2
ZW50LmhlYWRlcnMsIGV2ZW50LnN0cmVhbV9pZCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShldmVudCwgRGF0YVJlY2VpdmVkKToKLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFGcmFtZVJl
Y2VpdmVkKGV2ZW50LnN0cmVhbV9pZCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVu
dCwgV2luZG93VXBkYXRlZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi53aW5kb3dVcGRhdGVkKGV2
ZW50KQorICAgICAgICAgICAgaWYgc2VsZi5jb25uLmRhdGFfdG9fc2VuZDoKKyAgICAgICAgICAg
ICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZShzZWxmLmNvbm4uZGF0YV90b19zZW5kKCkpCiAKICAg
ICBkZWYgcmVxdWVzdFJlY2VpdmVkKHNlbGYsIGhlYWRlcnMsIHN0cmVhbV9pZCk6CiAgICAgICAg
IGhlYWRlcnMgPSBkaWN0KGhlYWRlcnMpICAjIEludmFsaWQgY29udmVyc2lvbiwgZml4IGxhdGVy
LgpAQCAtODYsNyArOTMsOSBAQCBjbGFzcyBIMlByb3RvY29sKFByb3RvY29sKToKIAogICAgIGRl
ZiBzZW5kRmlsZShzZWxmLCBmaWxlX3BhdGgsIHN0cmVhbV9pZCk6CiAgICAgICAgIGZpbGVzaXpl
ID0gb3Muc3RhdChmaWxlX3BhdGgpLnN0X3NpemUKLSAgICAgICAgY29udGVudF90eXBlLCBjb250
ZW50X2VuY29kaW5nID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZV9wYXRoKQorICAgICAgICBj
b250ZW50X3R5cGUsIGNvbnRlbnRfZW5jb2RpbmcgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZSgKKyAg
ICAgICAgICAgIGZpbGVfcGF0aC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgKQogICAgICAgICBy
ZXNwb25zZV9oZWFkZXJzID0gWwogICAgICAgICAgICAgKCc6c3RhdHVzJywgJzIwMCcpLAogICAg
ICAgICAgICAgKCdjb250ZW50LWxlbmd0aCcsIHN0cihmaWxlc2l6ZSkpLApAQCAtMTU5LDEwICsx
NjgsMTEgQEAgY2xhc3MgSDJGYWN0b3J5KEZhY3RvcnkpOgogICAgICAgICBzZWxmLnJvb3QgPSBy
b290CiAKICAgICBkZWYgYnVpbGRQcm90b2NvbChzZWxmLCBhZGRyKToKKyAgICAgICAgcHJpbnQo
SDJQcm90b2NvbCkKICAgICAgICAgcmV0dXJuIEgyUHJvdG9jb2woc2VsZi5yb290KQogCiAKLXJv
b3QgPSBzeXMuYXJndlsxXQorcm9vdCA9IHN5cy5hcmd2WzFdLmVuY29kZSgndXRmLTgnKQogCiB3
aXRoIG9wZW4oJ3NlcnZlci5jcnQnLCAncicpIGFzIGY6CiAgICAgY2VydF9kYXRhID0gZi5yZWFk
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWIwZmYyZWMxZWY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9l
eGFtcGxlcy90d2lzdGVkL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL2hlYWRfcmVxdWVzdC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9wb3N0X3JlcXVlc3QucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL3R3aXN0ZWQvc2VydmVyLmNydAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9zZXJ2ZXIu
Y3NyCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3NlcnZlci5rZXkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL3R3aXN0ZWQvdHdpc3RlZC1zZXJ2ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvX19p
bml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2gyL19faW5pdF9fLnB5CmluZGV4IDM4ODA1ZGQ3NzBkZC4uNjI5
MDcxMGU2MzRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL19faW5pdF9fLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvaDIvX19pbml0X18ucHkKQEAgLTUsNCArNSw0IEBAIGgyCiAKIEEgSFRUUC8yIGltcGxlbWVu
dGF0aW9uLgogIiIiCi1fX3ZlcnNpb25fXyA9ICczLjAuMScKK19fdmVyc2lvbl9fID0gJzMuMi4w
JwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2NvbmZpZy5w
eQppbmRleCAwODEyOWE0MDY2OGUuLjFjNDM3ZWUyNGY4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9o
Mi9jb25maWcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9jb25maWcucHkKQEAgLTI5LDcgKzI5LDcgQEAg
Y2xhc3MgRHVtbXlMb2dnZXIob2JqZWN0KToKICAgICAiIiIKICAgICBBbiBMb2dnZXIgb2JqZWN0
IHRoYXQgZG9lcyBub3QgYWN0dWFsIGxvZ2dpbmcsIGhlbmNlIGEgRHVtbXlMb2dnZXIuCiAKLSAg
ICBGb3IgdGhlIGNsYXNzIHRoZSBsb2cgb3BlcmF0aW9uIGlzIG1lcmVseSBhIG5vLW9wLiAgVGhl
IGludGVudCBpcyB0byBhdm9pZAorICAgIEZvciB0aGUgY2xhc3MgdGhlIGxvZyBvcGVyYXRpb24g
aXMgbWVyZWx5IGEgbm8tb3AuIFRoZSBpbnRlbnQgaXMgdG8gYXZvaWQKICAgICBjb25kaXRpb25h
bHMgYmVpbmcgc3ByaW5rbGVkIHRocm91Z2hvdXQgdGhlIGh5cGVyLWgyIGNvZGUgZm9yIGNhbGxz
IHRvCiAgICAgbG9nZ2luZyBmdW5jdGlvbnMgd2hlbiBubyBsb2dnZXIgaXMgcGFzc2VkIGludG8g
dGhlIGNvcnJlc3BvbmRpbmcgb2JqZWN0LgogICAgICIiIgpAQCAtNDIsNiArNDIsMTIgQEAgY2xh
c3MgRHVtbXlMb2dnZXIob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAorICAg
IGRlZiB0cmFjZShzZWxmLCAqdmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAg
IE5vLW9wIGxvZ2dpbmcuIE9ubHkgbGV2ZWwgbmVlZGVkIGZvciBub3cuCisgICAgICAgICIiIgor
ICAgICAgICBwYXNzCisKIAogY2xhc3MgSDJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAgIiIi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5l
Y3Rpb24ucHkKaW5kZXggNDQwNTE4M2U4NjY5Li4zNWU2ZmQ2ZGE4ODkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvaDIvY29ubmVjdGlvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5lY3Rpb24ucHkKQEAg
LTIxLDcgKzIxLDcgQEAgZnJvbSBocGFjay5leGNlcHRpb25zIGltcG9ydCBIUEFDS0Vycm9yLCBP
dmVyc2l6ZWRIZWFkZXJMaXN0RXJyb3IKIGZyb20gLmNvbmZpZyBpbXBvcnQgSDJDb25maWd1cmF0
aW9uCiBmcm9tIC5lcnJvcnMgaW1wb3J0IEVycm9yQ29kZXMsIF9lcnJvcl9jb2RlX2Zyb21faW50
CiBmcm9tIC5ldmVudHMgaW1wb3J0ICgKLSAgICBXaW5kb3dVcGRhdGVkLCBSZW1vdGVTZXR0aW5n
c0NoYW5nZWQsIFBpbmdBY2tub3dsZWRnZWQsCisgICAgV2luZG93VXBkYXRlZCwgUmVtb3RlU2V0
dGluZ3NDaGFuZ2VkLCBQaW5nUmVjZWl2ZWQsIFBpbmdBY2tSZWNlaXZlZCwKICAgICBTZXR0aW5n
c0Fja25vd2xlZGdlZCwgQ29ubmVjdGlvblRlcm1pbmF0ZWQsIFByaW9yaXR5VXBkYXRlZCwKICAg
ICBBbHRlcm5hdGl2ZVNlcnZpY2VBdmFpbGFibGUsIFVua25vd25GcmFtZVJlY2VpdmVkCiApCkBA
IC0zMyw3ICszMyw3IEBAIGZyb20gLmV4Y2VwdGlvbnMgaW1wb3J0ICgKIGZyb20gLmZyYW1lX2J1
ZmZlciBpbXBvcnQgRnJhbWVCdWZmZXIKIGZyb20gLnNldHRpbmdzIGltcG9ydCBTZXR0aW5ncywg
U2V0dGluZ0NvZGVzCiBmcm9tIC5zdHJlYW0gaW1wb3J0IEgyU3RyZWFtLCBTdHJlYW1DbG9zZWRC
eQotZnJvbSAudXRpbGl0aWVzIGltcG9ydCBndWFyZF9pbmNyZW1lbnRfd2luZG93Citmcm9tIC51
dGlsaXRpZXMgaW1wb3J0IFNpemVMaW1pdERpY3QsIGd1YXJkX2luY3JlbWVudF93aW5kb3cKIGZy
b20gLndpbmRvd3MgaW1wb3J0IFdpbmRvd01hbmFnZXIKIAogCkBAIC0yODEsNiArMjgxLDkgQEAg
Y2xhc3MgSDJDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgIyBUaGUgaW5pdGlhbCBkZWZhdWx0IHZh
bHVlIG9mIFNFVFRJTkdTX01BWF9IRUFERVJfTElTVF9TSVpFLgogICAgIERFRkFVTFRfTUFYX0hF
QURFUl9MSVNUX1NJWkUgPSAyKioxNgogCisgICAgIyBLZWVwIGluIG1lbW9yeSBsaW1pdGVkIGFt
b3VudCBvZiByZXN1bHRzIGZvciBzdHJlYW1zIGNsb3NlcworICAgIE1BWF9DTE9TRURfU1RSRUFN
UyA9IDIqKjE2CisKICAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnPU5vbmUpOgogICAgICAg
ICBzZWxmLnN0YXRlX21hY2hpbmUgPSBIMkNvbm5lY3Rpb25TdGF0ZU1hY2hpbmUoKQogICAgICAg
ICBzZWxmLnN0cmVhbXMgPSB7fQpAQCAtMzI1LDcgKzMyOCw3IEBAIGNsYXNzIEgyQ29ubmVjdGlv
bihvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIHNlbGYucmVtb3RlX3NldHRpbmdzID0gU2V0
dGluZ3MoY2xpZW50PW5vdCBzZWxmLmNvbmZpZy5jbGllbnRfc2lkZSkKIAotICAgICAgICAjIFRo
ZSBjdXJlbnQgdmFsdWUgb2YgdGhlIGNvbm5lY3Rpb24gZmxvdyBjb250cm9sIHdpbmRvd3Mgb24g
dGhlCisgICAgICAgICMgVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNvbm5lY3Rpb24gZmxvdyBj
b250cm9sIHdpbmRvd3Mgb24gdGhlCiAgICAgICAgICMgY29ubmVjdGlvbi4KICAgICAgICAgc2Vs
Zi5vdXRib3VuZF9mbG93X2NvbnRyb2xfd2luZG93ID0gKAogICAgICAgICAgICAgc2VsZi5yZW1v
dGVfc2V0dGluZ3MuaW5pdGlhbF93aW5kb3dfc2l6ZQpAQCAtMzQ3LDcgKzM1MCw3IEBAIGNsYXNz
IEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBzZWxmLl9oZWFkZXJfZnJhbWVzID0gW10K
IAogICAgICAgICAjIERhdGEgdGhhdCBuZWVkcyB0byBiZSBzZW50LgotICAgICAgICBzZWxmLl9k
YXRhX3RvX3NlbmQgPSBiJycKKyAgICAgICAgc2VsZi5fZGF0YV90b19zZW5kID0gYnl0ZWFycmF5
KCkKIAogICAgICAgICAjIEtlZXBzIHRyYWNrIG9mIGhvdyBzdHJlYW1zIGFyZSBjbG9zZWQuCiAg
ICAgICAgICMgVXNlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBibG93IHVwIGluIHRoZSBmYWNl
IG9mIGZyYW1lcyB0aGF0IHdlcmUKQEAgLTM1NSw3ICszNTgsOSBAQCBjbGFzcyBIMkNvbm5lY3Rp
b24ob2JqZWN0KToKICAgICAgICAgIyBBbHNvIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2Ug
c2hvdWxkIGNvbnNpZGVyIGEgZnJhbWUgcmVjZWl2ZWQKICAgICAgICAgIyB3aGlsZSBhIHN0cmVh
bSBpcyBjbG9zZWQgYXMgZWl0aGVyIGEgc3RyZWFtIGVycm9yIG9yIGEgY29ubmVjdGlvbgogICAg
ICAgICAjIGVycm9yLgotICAgICAgICBzZWxmLl9jbG9zZWRfc3RyZWFtcyA9IHt9CisgICAgICAg
IHNlbGYuX2Nsb3NlZF9zdHJlYW1zID0gU2l6ZUxpbWl0RGljdCgKKyAgICAgICAgICAgIHNpemVf
bGltaXQ9c2VsZi5NQVhfQ0xPU0VEX1NUUkVBTVMKKyAgICAgICAgKQogCiAgICAgICAgICMgVGhl
IGZsb3cgY29udHJvbCB3aW5kb3cgbWFuYWdlciBmb3IgdGhlIGNvbm5lY3Rpb24uCiAgICAgICAg
IHNlbGYuX2luYm91bmRfZmxvd19jb250cm9sX3dpbmRvd19tYW5hZ2VyID0gV2luZG93TWFuYWdl
cigKQEAgLTkwOSwxNiArOTE0LDIxIEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAg
ICAgICAgICAgZnJhbWVzID0gc3RyZWFtLmluY3JlYXNlX2Zsb3dfY29udHJvbF93aW5kb3coCiAg
ICAgICAgICAgICAgICAgaW5jcmVtZW50CiAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHNl
bGYuY29uZmlnLmxvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiSW5jcmVhc2Ugc3RyZWFt
IElEICVkIGZsb3cgY29udHJvbCB3aW5kb3cgYnkgJWQiLAorICAgICAgICAgICAgICAgIHN0cmVh
bV9pZCwgaW5jcmVtZW50CisgICAgICAgICAgICApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBzZWxmLl9pbmJvdW5kX2Zsb3dfY29udHJvbF93aW5kb3dfbWFuYWdlci53aW5kb3dfb3BlbmVk
KGluY3JlbWVudCkKICAgICAgICAgICAgIGYgPSBXaW5kb3dVcGRhdGVGcmFtZSgwKQogICAgICAg
ICAgICAgZi53aW5kb3dfaW5jcmVtZW50ID0gaW5jcmVtZW50CiAgICAgICAgICAgICBmcmFtZXMg
PSBbZl0KIAotICAgICAgICBzZWxmLmNvbmZpZy5sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAi
SW5jcmVhc2Ugc3RyZWFtIElEICVkIGZsb3cgY29udHJvbCB3aW5kb3cgYnkgJWQiLAotICAgICAg
ICAgICAgc3RyZWFtX2lkLCBpbmNyZW1lbnQKLSAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5j
b25maWcubG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJJbmNyZWFzZSBjb25uZWN0aW9u
IGZsb3cgY29udHJvbCB3aW5kb3cgYnkgJWQiLCBpbmNyZW1lbnQKKyAgICAgICAgICAgICkKKwog
ICAgICAgICBzZWxmLl9wcmVwYXJlX2Zvcl9zZW5kaW5nKGZyYW1lcykKIAogICAgIGRlZiBwdXNo
X3N0cmVhbShzZWxmLCBzdHJlYW1faWQsIHByb21pc2VkX3N0cmVhbV9pZCwgcmVxdWVzdF9oZWFk
ZXJzKToKQEAgLTEzMjcsNyArMTMzNyw3IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgog
CiAgICAgICAgIHNlbGYuX3ByZXBhcmVfZm9yX3NlbmRpbmcoZnJhbWVzKQogCi0gICAgZGVmIGRh
dGFfdG9fc2VuZChzZWxmLCBhbXQ9Tm9uZSk6CisgICAgZGVmIGRhdGFfdG9fc2VuZChzZWxmLCBh
bW91bnQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm5zIHNvbWUgZGF0YSBmb3Ig
c2VuZGluZyBvdXQgb2YgdGhlIGludGVybmFsIGRhdGEgYnVmZmVyLgogCkBAIC0xMzM2LDE5ICsx
MzQ2LDE5IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBvciBsZXNzIGlm
IHRoYXQgbXVjaCBkYXRhIGlzIG5vdCBhdmFpbGFibGUuIEl0IGRvZXMgbm90IHBlcmZvcm0gYW55
CiAgICAgICAgIEkvTywgYW5kIHNvIHVzZXMgYSBkaWZmZXJlbnQgbmFtZS4KIAotICAgICAgICA6
cGFyYW0gYW10OiAob3B0aW9uYWwpIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRvIHJldHVy
bi4gSWYgbm90CisgICAgICAgIDpwYXJhbSBhbW91bnQ6IChvcHRpb25hbCkgVGhlIG1heGltdW0g
YW1vdW50IG9mIGRhdGEgdG8gcmV0dXJuLiBJZiBub3QKICAgICAgICAgICAgIHNldCwgb3Igc2V0
IHRvIGBgTm9uZWBgLCB3aWxsIHJldHVybiBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUuCi0gICAg
ICAgIDp0eXBlIGFtdDogYGBpbnRgYAorICAgICAgICA6dHlwZSBhbW91bnQ6IGBgaW50YGAKICAg
ICAgICAgOnJldHVybnM6IEEgYnl0ZXN0cmluZyBjb250YWluaW5nIHRoZSBkYXRhIHRvIHNlbmQg
b24gdGhlIHdpcmUuCiAgICAgICAgIDpydHlwZTogYGBieXRlc2BgCiAgICAgICAgICIiIgotICAg
ICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhX3RvX3Nl
bmQKLSAgICAgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9IGInJworICAgICAgICBpZiBhbW91
bnQgaXMgTm9uZToKKyAgICAgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9kYXRhX3RvX3NlbmQp
CisgICAgICAgICAgICBzZWxmLl9kYXRhX3RvX3NlbmQgPSBieXRlYXJyYXkoKQogICAgICAgICAg
ICAgcmV0dXJuIGRhdGEKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9k
YXRhX3RvX3NlbmRbOmFtdF0KLSAgICAgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9IHNlbGYu
X2RhdGFfdG9fc2VuZFthbXQ6XQorICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKHNlbGYuX2RhdGFf
dG9fc2VuZFs6YW1vdW50XSkKKyAgICAgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9IHNlbGYu
X2RhdGFfdG9fc2VuZFthbW91bnQ6XQogICAgICAgICAgICAgcmV0dXJuIGRhdGEKIAogICAgIGRl
ZiBjbGVhcl9vdXRib3VuZF9kYXRhX2J1ZmZlcihzZWxmKToKQEAgLTEzNjEsNyArMTM3MSw3IEBA
IGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQg
bm90IG5vcm1hbGx5IGJlIHVzZWQsIGJ1dCBpcyBtYWRlIGF2YWlsYWJsZSB0byBhdm9pZAogICAg
ICAgICBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogICAgICAgICAiIiIKLSAgICAg
ICAgc2VsZi5fZGF0YV90b19zZW5kID0gYicnCisgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9
IGJ5dGVhcnJheSgpCiAKICAgICBkZWYgX2Fja25vd2xlZGdlX3NldHRpbmdzKHNlbGYpOgogICAg
ICAgICAiIiIKQEAgLTE0NDAsNyArMTQ1MCw3IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3Qp
OgogICAgICAgICA6cmV0dXJuczogQSBsaXN0IG9mIGV2ZW50cyB0aGF0IHRoZSByZW1vdGUgcGVl
ciB0cmlnZ2VyZWQgYnkgc2VuZGluZwogICAgICAgICAgICAgdGhpcyBkYXRhLgogICAgICAgICAi
IiIKLSAgICAgICAgc2VsZi5jb25maWcubG9nZ2VyLmRlYnVnKAorICAgICAgICBzZWxmLmNvbmZp
Zy5sb2dnZXIudHJhY2UoCiAgICAgICAgICAgICAiUHJvY2VzcyByZWNlaXZlZCBkYXRhIG9uIGNv
bm5lY3Rpb24uIFJlY2VpdmVkIGRhdGE6ICVyIiwgZGF0YQogICAgICAgICApCiAKQEAgLTE2MjQs
NiArMTYzNCwzNSBAQCBjbGFzcyBIMkNvbm5lY3Rpb24ob2JqZWN0KToKIAogICAgICAgICByZXR1
cm4gZnJhbWVzLCBldmVudHMgKyBzdHJlYW1fZXZlbnRzCiAKKyAgICBkZWYgX2hhbmRsZV9kYXRh
X29uX2Nsb3NlZF9zdHJlYW0oc2VsZiwgZXZlbnRzLCBleGMsIGZyYW1lKToKKyAgICAgICAgIyBU
aGlzIHN0cmVhbSBpcyBhbHJlYWR5IGNsb3NlZCAtIGFuZCB5ZXQgd2UgcmVjZWl2ZWQgYSBEQVRB
IGZyYW1lLgorICAgICAgICAjIFRoZSByZWNlaXZlZCBEQVRBIGZyYW1lIGNvdW50cyB0b3dhcmRz
IHRoZSBjb25uZWN0aW9uIGZsb3cgd2luZG93LgorICAgICAgICAjIFdlIG5lZWQgdG8gbWFudWFs
bHkgdG8gYWNrbm93bGVkZ2UgdGhlIERBVEEgZnJhbWUgdG8gdXBkYXRlIHRoZSBmbG93CisgICAg
ICAgICMgd2luZG93IG9mIHRoZSBjb25uZWN0aW9uLiBPdGhlcndpc2UgdGhlIHdob2xlIGNvbm5l
Y3Rpb24gc3RhbGxzIGR1ZQorICAgICAgICAjIHRoZSBpbmJvdW5kIGZsb3cgd2luZG93IGJlaW5n
IDAuCisgICAgICAgIGZyYW1lcyA9IFtdCisgICAgICAgIGNvbm5fbWFuYWdlciA9IHNlbGYuX2lu
Ym91bmRfZmxvd19jb250cm9sX3dpbmRvd19tYW5hZ2VyCisgICAgICAgIGNvbm5faW5jcmVtZW50
ID0gY29ubl9tYW5hZ2VyLnByb2Nlc3NfYnl0ZXMoCisgICAgICAgICAgICBmcmFtZS5mbG93X2Nv
bnRyb2xsZWRfbGVuZ3RoCisgICAgICAgICkKKyAgICAgICAgaWYgY29ubl9pbmNyZW1lbnQ6Cisg
ICAgICAgICAgICBmID0gV2luZG93VXBkYXRlRnJhbWUoMCkKKyAgICAgICAgICAgIGYud2luZG93
X2luY3JlbWVudCA9IGNvbm5faW5jcmVtZW50CisgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGYp
CisgICAgICAgICAgICBzZWxmLmNvbmZpZy5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAg
IlJlY2VpdmVkIERBVEEgZnJhbWUgb24gY2xvc2VkIHN0cmVhbSAlZCAtICIKKyAgICAgICAgICAg
ICAgICAiYXV0by1lbWl0dGVkIGEgV0lORE9XX1VQREFURSBieSAlZCIsCisgICAgICAgICAgICAg
ICAgZnJhbWUuc3RyZWFtX2lkLCBjb25uX2luY3JlbWVudAorICAgICAgICAgICAgKQorICAgICAg
ICBmID0gUnN0U3RyZWFtRnJhbWUoZXhjLnN0cmVhbV9pZCkKKyAgICAgICAgZi5lcnJvcl9jb2Rl
ID0gZXhjLmVycm9yX2NvZGUKKyAgICAgICAgZnJhbWVzLmFwcGVuZChmKQorICAgICAgICBzZWxm
LmNvbmZpZy5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU3RyZWFtICVkIGFscmVhZHkgQ0xP
U0VEIG9yIGNsZWFuZWQgdXAgLSAiCisgICAgICAgICAgICAiYXV0by1lbWl0dGVkIGEgUlNUX0ZS
QU1FIiAlIGZyYW1lLnN0cmVhbV9pZAorICAgICAgICApCisgICAgICAgIHJldHVybiBmcmFtZXMs
IGV2ZW50cyArIGV4Yy5fZXZlbnRzCisKICAgICBkZWYgX3JlY2VpdmVfZGF0YV9mcmFtZShzZWxm
LCBmcmFtZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZWNlaXZlIGEgZGF0YSBmcmFtZSBvbiB0
aGUgY29ubmVjdGlvbi4KQEAgLTE2MzYsMTIgKzE2NzUsMTkgQEAgY2xhc3MgSDJDb25uZWN0aW9u
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2luYm91bmRfZmxvd19jb250cm9sX3dpbmRvd19tYW5h
Z2VyLndpbmRvd19jb25zdW1lZCgKICAgICAgICAgICAgIGZsb3dfY29udHJvbGxlZF9sZW5ndGgK
ICAgICAgICAgKQotICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfc3RyZWFtX2J5X2lkKGZyYW1l
LnN0cmVhbV9pZCkKLSAgICAgICAgZnJhbWVzLCBzdHJlYW1fZXZlbnRzID0gc3RyZWFtLnJlY2Vp
dmVfZGF0YSgKLSAgICAgICAgICAgIGZyYW1lLmRhdGEsCi0gICAgICAgICAgICAnRU5EX1NUUkVB
TScgaW4gZnJhbWUuZmxhZ3MsCi0gICAgICAgICAgICBmbG93X2NvbnRyb2xsZWRfbGVuZ3RoCi0g
ICAgICAgICkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRf
c3RyZWFtX2J5X2lkKGZyYW1lLnN0cmVhbV9pZCkKKyAgICAgICAgICAgIGZyYW1lcywgc3RyZWFt
X2V2ZW50cyA9IHN0cmVhbS5yZWNlaXZlX2RhdGEoCisgICAgICAgICAgICAgICAgZnJhbWUuZGF0
YSwKKyAgICAgICAgICAgICAgICAnRU5EX1NUUkVBTScgaW4gZnJhbWUuZmxhZ3MsCisgICAgICAg
ICAgICAgICAgZmxvd19jb250cm9sbGVkX2xlbmd0aAorICAgICAgICAgICAgKQorICAgICAgICBl
eGNlcHQgU3RyZWFtQ2xvc2VkRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgVGhpcyBzdHJlYW0g
aXMgZWl0aGVyIG1hcmtlZCBhcyBDTE9TRUQgb3IgYWxyZWFkeSBnb25lIGZyb20gb3VyCisgICAg
ICAgICAgICAjIGludGVybmFsIHN0YXRlLgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRs
ZV9kYXRhX29uX2Nsb3NlZF9zdHJlYW0oZXZlbnRzLCBlLCBmcmFtZSkKKwogICAgICAgICByZXR1
cm4gZnJhbWVzLCBldmVudHMgKyBzdHJlYW1fZXZlbnRzCiAKICAgICBkZWYgX3JlY2VpdmVfc2V0
dGluZ3NfZnJhbWUoc2VsZiwgZnJhbWUpOgpAQCAtMTcxNywxNSArMTc2MywxOSBAQCBjbGFzcyBI
MkNvbm5lY3Rpb24ob2JqZWN0KToKICAgICAgICAgZmxhZ3MgPSBbXQogCiAgICAgICAgIGlmICdB
Q0snIGluIGZyYW1lLmZsYWdzOgotICAgICAgICAgICAgZXZ0ID0gUGluZ0Fja25vd2xlZGdlZCgp
Ci0gICAgICAgICAgICBldnQucGluZ19kYXRhID0gZnJhbWUub3BhcXVlX2RhdGEKLSAgICAgICAg
ICAgIGV2ZW50cy5hcHBlbmQoZXZ0KQorICAgICAgICAgICAgZXZ0ID0gUGluZ0Fja1JlY2VpdmVk
KCkKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV2dCA9IFBpbmdSZWNlaXZlZCgpCisKKyAg
ICAgICAgICAgICMgYXV0b21hdGljYWxseSBBQ0sgdGhlIFBJTkcgd2l0aCB0aGUgc2FtZSAnb3Bh
cXVlIGRhdGEnCiAgICAgICAgICAgICBmID0gUGluZ0ZyYW1lKDApCiAgICAgICAgICAgICBmLmZs
YWdzID0geydBQ0snfQogICAgICAgICAgICAgZi5vcGFxdWVfZGF0YSA9IGZyYW1lLm9wYXF1ZV9k
YXRhCiAgICAgICAgICAgICBmbGFncy5hcHBlbmQoZikKIAorICAgICAgICBldnQucGluZ19kYXRh
ID0gZnJhbWUub3BhcXVlX2RhdGEKKyAgICAgICAgZXZlbnRzLmFwcGVuZChldnQpCisKICAgICAg
ICAgcmV0dXJuIGZsYWdzLCBldmVudHMKIAogICAgIGRlZiBfcmVjZWl2ZV9yc3Rfc3RyZWFtX2Zy
YW1lKHNlbGYsIGZyYW1lKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9oMi9ldmVudHMucHkKaW5kZXggZmYzZWMzZGYzMTNmLi5hMDZjOTkwM2Q1YTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5CkBA
IC0zNTYsMjIgKzM1Niw1MSBAQCBjbGFzcyBSZW1vdGVTZXR0aW5nc0NoYW5nZWQoRXZlbnQpOgog
ICAgICAgICApCiAKIAorY2xhc3MgUGluZ1JlY2VpdmVkKEV2ZW50KToKKyAgICAiIiIKKyAgICBU
aGUgUGluZ1JlY2VpdmVkIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgUElORyBpcyByZWNlaXZl
ZC4gSXQgY29udGFpbnMKKyAgICB0aGUgJ29wYXF1ZSBkYXRhJyBvZiB0aGUgUElORyBmcmFtZS4g
QSBwaW5nIGFja25vd2xlZGdtZW50IHdpdGggdGhlIHNhbWUKKyAgICAnb3BhcXVlIGRhdGEnIGlz
IGF1dG9tYXRpY2FsbHkgZW1pdHRlZCBhZnRlciByZWNlaXZpbmcgYSBwaW5nLgorCisgICAgLi4g
dmVyc2lvbmFkZGVkOjogMy4xLjAKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6Cisg
ICAgICAgICM6IFRoZSBkYXRhIGluY2x1ZGVkIG9uIHRoZSBwaW5nLgorICAgICAgICBzZWxmLnBp
bmdfZGF0YSA9IE5vbmUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
ICI8UGluZ1JlY2VpdmVkIHBpbmdfZGF0YTolcz4iICUgKAorICAgICAgICAgICAgX2J5dGVzX3Jl
cHJlc2VudGF0aW9uKHNlbGYucGluZ19kYXRhKSwKKyAgICAgICAgKQorCisKIGNsYXNzIFBpbmdB
Y2tub3dsZWRnZWQoRXZlbnQpOgogICAgICIiIgotICAgIFRoZSBQaW5nQWNrbm93bGVkZ2VkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgdXNlci1lbWl0dGVkIFBJTkcgaXMKLSAgICBhY2tub3ds
ZWRnZWQuIFRoaXMgY29udGFpbnMgdGhlIGRhdGEgaW4gdGhlIEFDSydlZCBQSU5HLCBhbGxvd2lu
ZyB0aGUKLSAgICB1c2VyIHRvIGNvcnJlbGF0ZSBQSU5HcyBhbmQgY2FsY3VsYXRlIFJUVC4KKyAg
ICBTYW1lIGFzIFBpbmdBY2tSZWNlaXZlZC4KKworICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjEuMAog
ICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIzogVGhlIGRhdGEgaW5j
bHVkZWQgb24gdGhlIHBpbmcuCiAgICAgICAgIHNlbGYucGluZ19kYXRhID0gTm9uZQogCiAgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxQaW5nQWNrbm93bGVkZ2VkIHBp
bmdfZGF0YTolcz4iICUgKAorICAgICAgICByZXR1cm4gIjxQaW5nQWNrUmVjZWl2ZWQgcGluZ19k
YXRhOiVzPiIgJSAoCiAgICAgICAgICAgICBfYnl0ZXNfcmVwcmVzZW50YXRpb24oc2VsZi5waW5n
X2RhdGEpLAogICAgICAgICApCiAKIAorY2xhc3MgUGluZ0Fja1JlY2VpdmVkKFBpbmdBY2tub3ds
ZWRnZWQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQg
d2hlbmV2ZXIgYSBQSU5HIGFja25vd2xlZGdtZW50IGlzCisgICAgcmVjZWl2ZWQuIEl0IGNvbnRh
aW5zIHRoZSAnb3BhcXVlIGRhdGEnIG9mIHRoZSBQSU5HK0FDSyBmcmFtZSwgYWxsb3dpbmcgdGhl
CisgICAgdXNlciB0byBjb3JyZWxhdGUgUElOR3MgYW5kIGNhbGN1bGF0ZSBSVFQuCisKKyAgICAu
LiB2ZXJzaW9uYWRkZWQ6OiAzLjEuMAorICAgICIiIgorICAgIHBhc3MKKworCiBjbGFzcyBTdHJl
YW1FbmRlZChFdmVudCk6CiAgICAgIiIiCiAgICAgVGhlIFN0cmVhbUVuZGVkIGV2ZW50IGlzIGZp
cmVkIHdoZW5ldmVyIGEgc3RyZWFtIGlzIGVuZGVkIGJ5IGEgcmVtb3RlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2gyL3NldHRpbmdzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zZXR0aW5ncy5weQppbmRleCAzZGE3
MjAzMjljYjkuLmJmODdjOTRmNGU4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zZXR0aW5ncy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2gyL3NldHRpbmdzLnB5CkBAIC0xNSw2ICsxNSwxMiBAQCBmcm9tIGh5
cGVyZnJhbWUuZnJhbWUgaW1wb3J0IFNldHRpbmdzRnJhbWUKIGZyb20gaDIuZXJyb3JzIGltcG9y
dCBFcnJvckNvZGVzCiBmcm9tIGgyLmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRTZXR0aW5nc1Zh
bHVlRXJyb3IKIAordHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxl
TWFwcGluZworZXhjZXB0IEltcG9ydEVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgIyBQ
eXRob24gMi43IGNvbXBhdGliaWxpdHkKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRh
YmxlTWFwcGluZworCiAKIGNsYXNzIFNldHRpbmdDb2RlcyhlbnVtLkludEVudW0pOgogICAgICIi
IgpAQCAtNDksNiArNTUsMTAgQEAgY2xhc3MgU2V0dGluZ0NvZGVzKGVudW0uSW50RW51bSk6CiAg
ICAgIzogYW5kIHZhbHVlIGluIG9jdGV0cyBwbHVzIGFuIG92ZXJoZWFkIG9mIDMyIG9jdGV0cyBm
b3IgZWFjaCBoZWFkZXIgZmllbGQuCiAgICAgTUFYX0hFQURFUl9MSVNUX1NJWkUgPSBTZXR0aW5n
c0ZyYW1lLk1BWF9IRUFERVJfTElTVF9TSVpFCiAKKyAgICAjOiBUaGlzIHNldHRpbmcgY2FuIGJl
IHVzZWQgdG8gZW5hYmxlIHRoZSBjb25uZWN0IHByb3RvY29sLiBUbyBlbmFibGUgb24gYQorICAg
ICM6IGNsaWVudCBzZXQgdGhpcyB0byAxLgorICAgIEVOQUJMRV9DT05ORUNUX1BST1RPQ09MID0g
U2V0dGluZ3NGcmFtZS5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTAorCiAKIGRlZiBfc2V0dGluZ19j
b2RlX2Zyb21faW50KGNvZGUpOgogICAgICIiIgpAQCAtODgsNyArOTgsNyBAQCBjbGFzcyBDaGFu
Z2VkU2V0dGluZzoKICAgICAgICAgKQogCiAKLWNsYXNzIFNldHRpbmdzKGNvbGxlY3Rpb25zLk11
dGFibGVNYXBwaW5nKToKK2NsYXNzIFNldHRpbmdzKE11dGFibGVNYXBwaW5nKToKICAgICAiIiIK
ICAgICBBbiBvYmplY3QgdGhhdCBlbmNhcHN1bGF0ZXMgSFRUUC8yIHNldHRpbmdzIHN0YXRlLgog
CkBAIC0xMzUsNiArMTQ1LDcgQEAgY2xhc3MgU2V0dGluZ3MoY29sbGVjdGlvbnMuTXV0YWJsZU1h
cHBpbmcpOgogICAgICAgICAgICAgU2V0dGluZ0NvZGVzLkVOQUJMRV9QVVNIOiBjb2xsZWN0aW9u
cy5kZXF1ZShbaW50KGNsaWVudCldKSwKICAgICAgICAgICAgIFNldHRpbmdDb2Rlcy5JTklUSUFM
X1dJTkRPV19TSVpFOiBjb2xsZWN0aW9ucy5kZXF1ZShbNjU1MzVdKSwKICAgICAgICAgICAgIFNl
dHRpbmdDb2Rlcy5NQVhfRlJBTUVfU0laRTogY29sbGVjdGlvbnMuZGVxdWUoWzE2Mzg0XSksCisg
ICAgICAgICAgICBTZXR0aW5nQ29kZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0w6IGNvbGxlY3Rp
b25zLmRlcXVlKFswXSksCiAgICAgICAgIH0KICAgICAgICAgaWYgaW5pdGlhbF92YWx1ZXMgaXMg
bm90IE5vbmU6CiAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpbml0aWFsX3ZhbHVlcy5p
dGVtcygpOgpAQCAtMjQzLDYgKzI1NCwxOCBAQCBjbGFzcyBTZXR0aW5ncyhjb2xsZWN0aW9ucy5N
dXRhYmxlTWFwcGluZyk6CiAgICAgZGVmIG1heF9oZWFkZXJfbGlzdF9zaXplKHNlbGYsIHZhbHVl
KToKICAgICAgICAgc2VsZltTZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkVdID0gdmFs
dWUKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmFibGVfY29ubmVjdF9wcm90b2NvbChzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSA6ZGF0YTpg
RU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0wKKyAgICAgICAgPGgyLnNldHRpbmdzLlNldHRpbmdDb2Rl
cy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTD5gIHNldHRpbmcuCisgICAgICAgICIiIgorICAgICAg
ICByZXR1cm4gc2VsZltTZXR0aW5nQ29kZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xdCisKKyAg
ICBAZW5hYmxlX2Nvbm5lY3RfcHJvdG9jb2wuc2V0dGVyCisgICAgZGVmIGVuYWJsZV9jb25uZWN0
X3Byb3RvY29sKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZltTZXR0aW5nQ29kZXMuRU5BQkxF
X0NPTk5FQ1RfUFJPVE9DT0xdID0gdmFsdWUKKwogICAgICMgSW1wbGVtZW50IHRoZSBNdXRhYmxl
TWFwcGluZyBBUEkuCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHZh
bCA9IHNlbGYuX3NldHRpbmdzW2tleV1bMF0KQEAgLTI5Miw3ICszMTUsNyBAQCBjbGFzcyBTZXR0
aW5ncyhjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CiAgICAgICAgICAgICByZXR1cm4gTm90
SW1wbGVtZW50ZWQKIAogCi1kZWYgX3ZhbGlkYXRlX3NldHRpbmcoc2V0dGluZywgdmFsdWUpOgor
ZGVmIF92YWxpZGF0ZV9zZXR0aW5nKHNldHRpbmcsIHZhbHVlKTogICMgbm9xYTogQzkwMQogICAg
ICIiIgogICAgIENvbmZpcm1zIHRoYXQgYSBzcGVjaWZpYyBzZXR0aW5nIGhhcyBhIHdlbGwtZm9y
bWVkIHZhbHVlLiBJZiB0aGUgc2V0dGluZyBpcwogICAgIGludmFsaWQsIHJldHVybnMgYW4gZXJy
b3IgY29kZS4gT3RoZXJ3aXNlLCByZXR1cm5zIDAgKE5PX0VSUk9SKS4KQEAgLTMwOSw1ICszMzIs
OCBAQCBkZWYgX3ZhbGlkYXRlX3NldHRpbmcoc2V0dGluZywgdmFsdWUpOgogICAgIGVsaWYgc2V0
dGluZyA9PSBTZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkU6CiAgICAgICAgIGlmIHZh
bHVlIDwgMDoKICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLlBST1RPQ09MX0VSUk9SCisg
ICAgZWxpZiBzZXR0aW5nID09IFNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTDoK
KyAgICAgICAgaWYgdmFsdWUgbm90IGluICgwLCAxKToKKyAgICAgICAgICAgIHJldHVybiBFcnJv
ckNvZGVzLlBST1RPQ09MX0VSUk9SCiAKICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9oMi9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3N0cmVhbS5weQppbmRleCA0ODllYTRkOGQ2ZjUu
LjFjYjkxNzg2ZDQyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zdHJlYW0ucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9oMi9zdHJlYW0ucHkKQEAgLTM3OCw0MSArMzc4LDYgQEAgY2xhc3MgSDJTdHJlYW1TdGF0
ZU1hY2hpbmUob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIFByb3RvY29sRXJy
b3IoIkF0dGVtcHRlZCB0byBwdXNoIG9uIGNsb3NlZCBzdHJlYW0uIikKIAotICAgIGRlZiB3aW5k
b3dfb25fY2xvc2VkX3N0cmVhbShzZWxmLCBwcmV2aW91c19zdGF0ZSk6Ci0gICAgICAgICIiIgot
ICAgICAgICBDYWxsZWQgd2hlbiBhIFdJTkRPV19VUERBVEUgZnJhbWUgaXMgcmVjZWl2ZWQgb24g
YW4gYWxyZWFkeS1jbG9zZWQKLSAgICAgICAgc3RyZWFtLgotCi0gICAgICAgIElmIHdlIHNlbnQg
YW4gRU5EX1NUUkVBTSBmcmFtZSwgd2UganVzdCBpZ25vcmUgdGhlIGZyYW1lLCBhcyBpbnN0cnVj
dGVkCi0gICAgICAgIGluIFJGQyA3NTQwIFNlY3Rpb24gNS4xLiBUZWNobmljYWxseSB3ZSBzaG91
bGQgZXZlbnR1YWxseSBjb25zaWRlcgotICAgICAgICBXSU5ET1dfVVBEQVRFIGluIHRoaXMgc3Rh
dGUgYW4gZXJyb3IsIGJ1dCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhCi0gICAgICAgIGNsb2Nr
IHNvIHdlIGp1c3QgYWx3YXlzIGFsbG93IGl0LiBJZiB3ZSBjbG9zZWQgdGhlIHN0cmVhbSBmb3Ig
YW55IG90aGVyCi0gICAgICAgIHJlYXNvbiwgd2UgYmVoYXZlIGFzIHdlIGRvIGZvciByZWNlaXZp
bmcgYW55IG90aGVyIGZyYW1lIG9uIGEgY2xvc2VkCi0gICAgICAgIHN0cmVhbS4KLSAgICAgICAg
IiIiCi0gICAgICAgIGFzc2VydCBzZWxmLnN0cmVhbV9jbG9zZWRfYnkgaXMgbm90IE5vbmUKLQot
ICAgICAgICBpZiBzZWxmLnN0cmVhbV9jbG9zZWRfYnkgPT0gU3RyZWFtQ2xvc2VkQnkuU0VORF9F
TkRfU1RSRUFNOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIHJldHVybiBzZWxmLnJl
Y3Zfb25fY2xvc2VkX3N0cmVhbShwcmV2aW91c19zdGF0ZSkKLQotICAgIGRlZiByZXNldF9vbl9j
bG9zZWRfc3RyZWFtKHNlbGYsIHByZXZpb3VzX3N0YXRlKToKLSAgICAgICAgIiIiCi0gICAgICAg
IENhbGxlZCB3aGVuIGEgUlNUX1NUUkVBTSBmcmFtZSBpcyByZWNlaXZlZCBvbiBhbiBhbHJlYWR5
LWNsb3NlZCBzdHJlYW0uCi0KLSAgICAgICAgSWYgd2Ugc2VudCBhbiBFTkRfU1RSRUFNIGZyYW1l
LCB3ZSBqdXN0IGlnbm9yZSB0aGUgZnJhbWUsIGFzIGluc3RydWN0ZWQKLSAgICAgICAgaW4gUkZD
IDc1NDAgU2VjdGlvbiA1LjEuIFRlY2huaWNhbGx5IHdlIHNob3VsZCBldmVudHVhbGx5IGNvbnNp
ZGVyCi0gICAgICAgIFJTVF9TVFJFQU0gaW4gdGhpcyBzdGF0ZSBhbiBlcnJvciwgYnV0IHdlIGRv
bid0IGhhdmUgYWNjZXNzIHRvIGEgY2xvY2sKLSAgICAgICAgc28gd2UganVzdCBhbHdheXMgYWxs
b3cgaXQuIElmIHdlIGNsb3NlZCB0aGUgc3RyZWFtIGZvciBhbnkgb3RoZXIKLSAgICAgICAgcmVh
c29uLCB3ZSBiZWhhdmUgYXMgd2UgZG8gZm9yIHJlY2VpdmluZyBhbnkgb3RoZXIgZnJhbWUgb24g
YSBjbG9zZWQKLSAgICAgICAgc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgYXNzZXJ0IHNl
bGYuc3RyZWFtX2Nsb3NlZF9ieSBpcyBub3QgTm9uZQotCi0gICAgICAgIGlmIHNlbGYuc3RyZWFt
X2Nsb3NlZF9ieSBpcyBTdHJlYW1DbG9zZWRCeS5TRU5EX0VORF9TVFJFQU06Ci0gICAgICAgICAg
ICByZXR1cm4gW10KLSAgICAgICAgcmV0dXJuIHNlbGYucmVjdl9vbl9jbG9zZWRfc3RyZWFtKHBy
ZXZpb3VzX3N0YXRlKQotCiAgICAgZGVmIHNlbmRfaW5mb3JtYXRpb25hbF9yZXNwb25zZShzZWxm
LCBwcmV2aW91c19zdGF0ZSk6CiAgICAgICAgICIiIgogICAgICAgICBDYWxsZWQgd2hlbiBhbiBp
bmZvcm1hdGlvbmFsIGhlYWRlciBibG9jayBpcyBzZW50ICh0aGF0IGlzLCBhIGJsb2NrCkBAIC03
NDAsMTEgKzcwNSwxMiBAQCBfdHJhbnNpdGlvbnMgPSB7CiAKICAgICAjID4gV0lORE9XX1VQREFU
RSBvciBSU1RfU1RSRUFNIGZyYW1lcyBjYW4gYmUgcmVjZWl2ZWQgaW4gdGhpcyBzdGF0ZQogICAg
ICMgPiBmb3IgYSBzaG9ydCBwZXJpb2QgYWZ0ZXIgYSBEQVRBIG9yIEhFQURFUlMgZnJhbWUgY29u
dGFpbmluZyBhCi0gICAgIyA+IEVORF9TVFJFQU0gZmxhZyBpcyBzZW50LgorICAgICMgPiBFTkRf
U1RSRUFNIGZsYWcgaXMgc2VudCwgYXMgaW5zdHJ1Y3RlZCBpbiBSRkMgNzU0MCBTZWN0aW9uIDUu
MS4gQnV0IHdlCisgICAgIyA+IGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgY2xvY2sgc28gd2UganVz
dCBhbHdheXMgYWxsb3cgaXQuCiAgICAgKFN0cmVhbVN0YXRlLkNMT1NFRCwgU3RyZWFtSW5wdXRz
LlJFQ1ZfV0lORE9XX1VQREFURSk6Ci0gICAgICAgIChIMlN0cmVhbVN0YXRlTWFjaGluZS53aW5k
b3dfb25fY2xvc2VkX3N0cmVhbSwgU3RyZWFtU3RhdGUuQ0xPU0VEKSwKKyAgICAgICAgKE5vbmUs
IFN0cmVhbVN0YXRlLkNMT1NFRCksCiAgICAgKFN0cmVhbVN0YXRlLkNMT1NFRCwgU3RyZWFtSW5w
dXRzLlJFQ1ZfUlNUX1NUUkVBTSk6Ci0gICAgICAgIChIMlN0cmVhbVN0YXRlTWFjaGluZS5yZXNl
dF9vbl9jbG9zZWRfc3RyZWFtLCBTdHJlYW1TdGF0ZS5DTE9TRUQpLAorICAgICAgICAoTm9uZSwg
U3RyZWFtU3RhdGUuQ0xPU0VEKSwKIAogICAgICMgPiBBIHJlY2VpdmVyIE1VU1QgdHJlYXQgdGhl
IHJlY2VpcHQgb2YgYSBQVVNIX1BST01JU0Ugb24gYSBzdHJlYW0gdGhhdCBpcwogICAgICMgPiBu
ZWl0aGVyICJvcGVuIiBub3IgImhhbGYtY2xvc2VkIChsb2NhbCkiIGFzIGEgY29ubmVjdGlvbiBl
cnJvciBvZiB0eXBlCkBAIC03ODgsNyArNzU0LDcgQEAgY2xhc3MgSDJTdHJlYW0ob2JqZWN0KToK
ICAgICAgICAgc2VsZi5tYXhfb3V0Ym91bmRfZnJhbWVfc2l6ZSA9IE5vbmUKICAgICAgICAgc2Vs
Zi5yZXF1ZXN0X21ldGhvZCA9IE5vbmUKIAotICAgICAgICAjIFRoZSBjdXJlbnQgdmFsdWUgb2Yg
dGhlIG91dGJvdW5kIHN0cmVhbSBmbG93IGNvbnRyb2wgd2luZG93CisgICAgICAgICMgVGhlIGN1
cnJlbnQgdmFsdWUgb2YgdGhlIG91dGJvdW5kIHN0cmVhbSBmbG93IGNvbnRyb2wgd2luZG93CiAg
ICAgICAgIHNlbGYub3V0Ym91bmRfZmxvd19jb250cm9sX3dpbmRvdyA9IG91dGJvdW5kX3dpbmRv
d19zaXplCiAKICAgICAgICAgIyBUaGUgZmxvdyBjb250cm9sIG1hbmFnZXIuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2gyL3V0aWxpdGllcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdXRpbGl0aWVzLnB5CmluZGV4
IDBjZmYwZmE2NzEwNi4uMDZjOTE2ZWVhN2I5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3V0aWxp
dGllcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3V0aWxpdGllcy5weQpAQCAtMzMsNiArMzMsNyBAQCBf
QUxMT1dFRF9QU0VVRE9fSEVBREVSX0ZJRUxEUyA9IGZyb3plbnNldChbCiAgICAgYic6YXV0aG9y
aXR5JywgdSc6YXV0aG9yaXR5JywKICAgICBiJzpwYXRoJywgdSc6cGF0aCcsCiAgICAgYic6c3Rh
dHVzJywgdSc6c3RhdHVzJywKKyAgICBiJzpwcm90b2NvbCcsIHUnOnByb3RvY29sJywKIF0pCiAK
IApAQCAtNDcsMTMgKzQ4LDE5IEBAIF9SRVFVRVNUX09OTFlfSEVBREVSUyA9IGZyb3plbnNldChb
CiAgICAgYic6c2NoZW1lJywgdSc6c2NoZW1lJywKICAgICBiJzpwYXRoJywgdSc6cGF0aCcsCiAg
ICAgYic6YXV0aG9yaXR5JywgdSc6YXV0aG9yaXR5JywKLSAgICBiJzptZXRob2QnLCB1JzptZXRo
b2QnCisgICAgYic6bWV0aG9kJywgdSc6bWV0aG9kJywKKyAgICBiJzpwcm90b2NvbCcsIHUnOnBy
b3RvY29sJywKIF0pCiAKIAogX1JFU1BPTlNFX09OTFlfSEVBREVSUyA9IGZyb3plbnNldChbYic6
c3RhdHVzJywgdSc6c3RhdHVzJ10pCiAKIAorIyBBIFNldCBvZiBwc2V1ZG8gaGVhZGVycyB0aGF0
IGFyZSBvbmx5IHZhbGlkIGlmIHRoZSBtZXRob2QgaXMKKyMgQ09OTkVDVCwgc2VlIFJGQyA4NDQx
IMKnIDUKK19DT05ORUNUX1JFUVVFU1RfT05MWV9IRUFERVJTID0gZnJvemVuc2V0KFtiJzpwcm90
b2NvbCcsIHUnOnByb3RvY29sJ10pCisKKwogaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAyOiAg
IyBQeXRob24gMi5YCiAgICAgX1dISVRFU1BBQ0UgPSBmcm96ZW5zZXQod2hpdGVzcGFjZSkKIGVs
c2U6ICAjIFB5dGhvbiAzLjMrCkBAIC0zMjMsNiArMzMwLDcgQEAgZGVmIF9yZWplY3RfcHNldWRv
X2hlYWRlcl9maWVsZHMoaGVhZGVycywgaGRyX3ZhbGlkYXRpb25fZmxhZ3MpOgogICAgICIiIgog
ICAgIHNlZW5fcHNldWRvX2hlYWRlcl9maWVsZHMgPSBzZXQoKQogICAgIHNlZW5fcmVndWxhcl9o
ZWFkZXIgPSBGYWxzZQorICAgIG1ldGhvZCA9IE5vbmUKIAogICAgIGZvciBoZWFkZXIgaW4gaGVh
ZGVyczoKICAgICAgICAgaWYgX2N1c3RvbV9zdGFydHN3aXRoKGhlYWRlclswXSwgYic6JywgdSc6
Jyk6CkBAIC0zNDQsNiArMzUyLDEyIEBAIGRlZiBfcmVqZWN0X3BzZXVkb19oZWFkZXJfZmllbGRz
KGhlYWRlcnMsIGhkcl92YWxpZGF0aW9uX2ZsYWdzKToKICAgICAgICAgICAgICAgICAgICAgIlJl
Y2VpdmVkIGN1c3RvbSBwc2V1ZG8taGVhZGVyIGZpZWxkICVzIiAlIGhlYWRlclswXQogICAgICAg
ICAgICAgICAgICkKIAorICAgICAgICAgICAgaWYgaGVhZGVyWzBdIGluIChiJzptZXRob2QnLCB1
JzptZXRob2QnKToKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShoZWFkZXJbMV0s
IGJ5dGVzKToKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gaGVhZGVyWzFdLmVuY29kZSgn
dXRmLTgnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1ldGhv
ZCA9IGhlYWRlclsxXQorCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWVuX3JlZ3VsYXJf
aGVhZGVyID0gVHJ1ZQogCkBAIC0zNTEsMTEgKzM2NSwxMiBAQCBkZWYgX3JlamVjdF9wc2V1ZG9f
aGVhZGVyX2ZpZWxkcyhoZWFkZXJzLCBoZHJfdmFsaWRhdGlvbl9mbGFncyk6CiAKICAgICAjIENo
ZWNrIHRoZSBwc2V1ZG8taGVhZGVycyB3ZSBnb3QgdG8gY29uZmlybSB0aGV5J3JlIGFjY2VwdGFi
bGUuCiAgICAgX2NoZWNrX3BzZXVkb19oZWFkZXJfZmllbGRfYWNjZXB0YWJpbGl0eSgKLSAgICAg
ICAgc2Vlbl9wc2V1ZG9faGVhZGVyX2ZpZWxkcywgaGRyX3ZhbGlkYXRpb25fZmxhZ3MKKyAgICAg
ICAgc2Vlbl9wc2V1ZG9faGVhZGVyX2ZpZWxkcywgbWV0aG9kLCBoZHJfdmFsaWRhdGlvbl9mbGFn
cwogICAgICkKIAogCiBkZWYgX2NoZWNrX3BzZXVkb19oZWFkZXJfZmllbGRfYWNjZXB0YWJpbGl0
eShwc2V1ZG9faGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhkcl92YWxpZGF0aW9uX2ZsYWdzKToKICAgICAiIiIKICAgICBHaXZlbiB0aGUgc2V0IG9m
IHBzZXVkby1oZWFkZXJzIHByZXNlbnQgaW4gYSBoZWFkZXIgYmxvY2sgYW5kIHRoZQpAQCAtMzk0
LDYgKzQwOSwxMyBAQCBkZWYgX2NoZWNrX3BzZXVkb19oZWFkZXJfZmllbGRfYWNjZXB0YWJpbGl0
eShwc2V1ZG9faGVhZGVycywKICAgICAgICAgICAgICAgICAiRW5jb3VudGVyZWQgcmVzcG9uc2Ut
b25seSBoZWFkZXJzICVzIiAlCiAgICAgICAgICAgICAgICAgaW52YWxpZF9yZXF1ZXN0X2hlYWRl
cnMKICAgICAgICAgICAgICkKKyAgICAgICAgaWYgbWV0aG9kICE9IGInQ09OTkVDVCc6CisgICAg
ICAgICAgICBpbnZhbGlkX2hlYWRlcnMgPSBwc2V1ZG9faGVhZGVycyAmIF9DT05ORUNUX1JFUVVF
U1RfT05MWV9IRUFERVJTCisgICAgICAgICAgICBpZiBpbnZhbGlkX2hlYWRlcnM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkVuY291
bnRlcmVkIGNvbm5lY3QtcmVxdWVzdC1vbmx5IGhlYWRlcnMgJXMiICUKKyAgICAgICAgICAgICAg
ICAgICAgaW52YWxpZF9oZWFkZXJzCisgICAgICAgICAgICAgICAgKQogCiAKIGRlZiBfdmFsaWRh
dGVfaG9zdF9hdXRob3JpdHlfaGVhZGVyKGhlYWRlcnMpOgpAQCAtNjE3LDMgKzYzOSwyMiBAQCBk
ZWYgdmFsaWRhdGVfb3V0Ym91bmRfaGVhZGVycyhoZWFkZXJzLCBoZHJfdmFsaWRhdGlvbl9mbGFn
cyk6CiAgICAgaGVhZGVycyA9IF9jaGVja19wYXRoX2hlYWRlcihoZWFkZXJzLCBoZHJfdmFsaWRh
dGlvbl9mbGFncykKIAogICAgIHJldHVybiBoZWFkZXJzCisKKworY2xhc3MgU2l6ZUxpbWl0RGlj
dChjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fc2l6ZV9saW1pdCA9IGt3YXJncy5wb3AoInNp
emVfbGltaXQiLCBOb25lKQorICAgICAgICBzdXBlcihTaXplTGltaXREaWN0LCBzZWxmKS5fX2lu
aXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5fY2hlY2tfc2l6ZV9saW1pdCgp
CisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgIHN1cGVy
KFNpemVMaW1pdERpY3QsIHNlbGYpLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCisKKyAgICAgICAg
c2VsZi5fY2hlY2tfc2l6ZV9saW1pdCgpCisKKyAgICBkZWYgX2NoZWNrX3NpemVfbGltaXQoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuX3NpemVfbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICB3aGlsZSBsZW4oc2VsZikgPiBzZWxmLl9zaXplX2xpbWl0OgorICAgICAgICAgICAgICAgIHNl
bGYucG9waXRlbShsYXN0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvaDIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY1Y2E0YjcwZmJmOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2gyL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5l
Y3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Vycm9ycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9oMi9leGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9mcmFtZV9idWZmZXIucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2gyL3NldHRpbmdzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gy
L3V0aWxpdGllcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvd2luZG93cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9zZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVwLmNmZwppbmRleCA1ZTQwOTAwMTdhOWIuLjM2NzA1
MDdmZjEyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9zZXR1cC5jZmcKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9zZXR1
cC5jZmcKQEAgLTEsMiArMSwxMCBAQAorW3Rvb2w6cHl0ZXN0XQordGVzdHBhdGhzID0gdGVzdAor
CiBbd2hlZWxdCiB1bml2ZXJzYWwgPSAxCisKK1tlZ2dfaW5mb10KK3RhZ19idWlsZCA9IAordGFn
X2RhdGUgPSAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVw
LnB5CmluZGV4IGQzYjc3ZjlkNzkwMC4uMWNlOTVkNTc5NmRjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvc2V0dXAucHkKQEAgLTQwLDcgKzQwLDExIEBAIHNldHVw
KAogICAgIGxvbmdfZGVzY3JpcHRpb249dSdcblxuJy5qb2luKFtyZWFkbWUsIGhpc3RvcnldKSwK
ICAgICBhdXRob3I9J0NvcnkgQmVuZmllbGQnLAogICAgIGF1dGhvcl9lbWFpbD0nY29yeUBsdWth
c2EuY28udWsnLAotICAgIHVybD0naHR0cDovL2h5cGVyLnJ0ZmQub3JnJywKKyAgICB1cmw9J2h0
dHBzOi8vZ2l0aHViLmNvbS9weXRob24taHlwZXIvaHlwZXItaDInLAorICAgIHByb2plY3RfdXJs
cz17CisgICAgICAgICdEb2N1bWVudGF0aW9uJzogJ2h0dHBzOi8vcHl0aG9uLWh5cGVyLm9yZy9w
cm9qZWN0cy9oMicsCisgICAgICAgICdTb3VyY2UnOiAnaHR0cHM6Ly9naXRodWIuY29tL3B5dGhv
bi1oeXBlci9oeXBlci1oMicsCisgICAgfSwKICAgICBwYWNrYWdlcz1wYWNrYWdlcywKICAgICBw
YWNrYWdlX2RhdGE9eycnOiBbJ0xJQ0VOU0UnLCAnUkVBRE1FLnJzdCcsICdDT05UUklCVVRPUlMu
cnN0JywgJ0hJU1RPUlkucnN0JywgJ05PVElDRVMnXX0sCiAgICAgcGFja2FnZV9kaXI9eydoMic6
ICdoMid9LApAQCAtNTQsMTggKzU4LDE5IEBAIHNldHVwKAogICAgICAgICAnUHJvZ3JhbW1pbmcg
TGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLAogICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDIuNycsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMycsCi0gICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy4z
JywKICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjQnLAogICAg
ICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNScsCiAgICAgICAgICdQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42JywKKyAgICAgICAgJ1Byb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjcnLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDMuOCcsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbicsCiAgICAgICAgICdQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogUHlQeScsCiAgICAg
XSwKICAgICBpbnN0YWxsX3JlcXVpcmVzPVsKLSAgICAgICAgJ2h5cGVyZnJhbWU+PTUuMCwgPDYn
LAotICAgICAgICAnaHBhY2s+PTIuMywgPDQnLAorICAgICAgICAnaHlwZXJmcmFtZT49NS4yLjAs
IDw2JywKKyAgICAgICAgJ2hwYWNrPj0zLjAsPDQnLAogICAgIF0sCiAgICAgZXh0cmFzX3JlcXVp
cmU9ewotICAgICAgICAnOnB5dGhvbl92ZXJzaW9uID09ICIyLjciIG9yIHB5dGhvbl92ZXJzaW9u
ID09ICIzLjMiJzogWydlbnVtMzQ+PTEuMS42LCA8MiddLAorICAgICAgICAnOnB5dGhvbl92ZXJz
aW9uID09ICIyLjciJzogWydlbnVtMzQ+PTEuMS42LCA8MiddLAogICAgIH0KICkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rf
YmFzaWNfbG9naWMucHkKaW5kZXggM2NmYzdjYzdlOGNhLi43ZGY5OWE2YTU3MWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90
ZXN0X2Jhc2ljX2xvZ2ljLnB5CkBAIC0xMTQsNiArMTE0LDIzIEBAIGNsYXNzIFRlc3RCYXNpY0Ns
aWVudChvYmplY3QpOgogICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YV9mcmFtZV9wYWRfbGVuZ3Ro
PTAKICAgICAgICAgKQogCisgICAgZGVmIHRlc3Rfc2VuZGluZ19kYXRhX2luX21lbW9yeXZpZXco
c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdXBwb3J0IG1lbW9yeXZpZXcgZm9yIHNlbmRp
bmcgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAgIGMgPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVj
dGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisgICAgICAgIGMuc2VuZF9o
ZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMpCisKKyAgICAgICAgIyBDbGVh
ciB0aGUgZGF0YSwgdGhlbiBzZW5kIHNvbWUgZGF0YS4KKyAgICAgICAgYy5jbGVhcl9vdXRib3Vu
ZF9kYXRhX2J1ZmZlcigpCisgICAgICAgIGV2ZW50cyA9IGMuc2VuZF9kYXRhKDEsIG1lbW9yeXZp
ZXcoYidzb21lIGRhdGEnKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKyAgICAgICAgZGF0
YV90b19zZW5kID0gYy5kYXRhX3RvX3NlbmQoKQorICAgICAgICBhc3NlcnQgKAorICAgICAgICAg
ICAgZGF0YV90b19zZW5kID09IGInXHgwMFx4MDBcdFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMXNv
bWUgZGF0YScKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3Rfc2VuZGluZ19kYXRhX3dpdGhfcGFk
ZGluZyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFNpbmdsZSBkYXRhIGZyYW1lcyB3aXRo
IHBhZGRpbmcgYXJlIGVuY29kZWQgY29ycmVjdGx5LgpAQCAtMTA4MSw3ICsxMDk4LDEyIEBAIGNs
YXNzIFRlc3RCYXNpY1NlcnZlcihvYmplY3QpOgogICAgICAgICBjLmNsZWFyX291dGJvdW5kX2Rh
dGFfYnVmZmVyKCkKICAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoc2VudF9mcmFtZS5z
ZXJpYWxpemUoKSkKIAotICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAgICBhc3NlcnQg
bGVuKGV2ZW50cykgPT0gMQorICAgICAgICBldmVudCA9IGV2ZW50c1swXQorCisgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKGV2ZW50LCBoMi5ldmVudHMuUGluZ1JlY2VpdmVkKQorICAgICAgICBh
c3NlcnQgZXZlbnQucGluZ19kYXRhID09IHBpbmdfZGF0YQorCiAgICAgICAgIGFzc2VydCBjLmRh
dGFfdG9fc2VuZCgpID09IGV4cGVjdGVkX2RhdGEKIAogICAgIGRlZiB0ZXN0X3JlY2VpdmluZ19z
ZXR0aW5nc19mcmFtZV9ldmVudChzZWxmLCBmcmFtZV9mYWN0b3J5KToKQEAgLTEzMjQsNyArMTM0
Niw3IEBAIGNsYXNzIFRlc3RCYXNpY1NlcnZlcihvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfcmVj
ZWl2aW5nX3BpbmdfYWNrbm93bGVkZ2VtZW50KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgogICAgICAg
ICAiIiIKLSAgICAgICAgUmVjZWl2aW5nIGEgUElORyBhY2tub2x3ZWRnZW1lbnQgZmlyZXMgYSBQ
aW5nQWNrbm9sd2VkZ2VkIGV2ZW50LgorICAgICAgICBSZWNlaXZpbmcgYSBQSU5HIGFja25vd2xl
ZGdlbWVudCBmaXJlcyBhIFBpbmdBY2tSZWNlaXZlZCBldmVudC4KICAgICAgICAgIiIiCiAgICAg
ICAgIGMgPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbihjb25maWc9c2VsZi5zZXJ2ZXJfY29u
ZmlnKQogICAgICAgICBjLnJlY2VpdmVfZGF0YShmcmFtZV9mYWN0b3J5LnByZWFtYmxlKCkpCkBA
IC0xMzM5LDcgKzEzNjEsOCBAQCBjbGFzcyBUZXN0QmFzaWNTZXJ2ZXIob2JqZWN0KToKICAgICAg
ICAgYXNzZXJ0IGxlbihldmVudHMpID09IDEKICAgICAgICAgZXZlbnQgPSBldmVudHNbMF0KIAot
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShldmVudCwgaDIuZXZlbnRzLlBpbmdBY2tub3dsZWRn
ZWQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LCBoMi5ldmVudHMuUGluZ0Fja1Jl
Y2VpdmVkKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShldmVudCwgaDIuZXZlbnRzLlBpbmdB
Y2tub3dsZWRnZWQpICAjIGRlcHJlY2F0ZWQKICAgICAgICAgYXNzZXJ0IGV2ZW50LnBpbmdfZGF0
YSA9PSBwaW5nX2RhdGEKIAogICAgIGRlZiB0ZXN0X3N0cmVhbV9lbmRlZF9yZW1vdGVseShzZWxm
LCBmcmFtZV9mYWN0b3J5KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Nsb3NlZF9z
dHJlYW1zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY2xvc2VkX3N0cmVhbXMucHkKaW5kZXggMjM0
NGY3MmQ2YTFhLi42MzFhNjY3ODdhZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Ns
b3NlZF9zdHJlYW1zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Nsb3NlZF9zdHJlYW1zLnB5
CkBAIC0xMDcsNiArMTA3LDc3IEBAIGNsYXNzIFRlc3RDbG9zZWRTdHJlYW1zKG9iamVjdCk6CiAg
ICAgICAgICMgVGhlIHN0cmVhbXMgZGljdGlvbmFyeSBzaG91bGQgYmUgZW1wdHkuCiAgICAgICAg
IGFzc2VydCBub3QgYy5zdHJlYW1zCiAKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3JzdF9zdHJlYW1f
b25fY2xvc2VkX3N0cmVhbShzZWxmLCBmcmFtZV9mYWN0b3J5KToKKyAgICAgICAgIiIiCisgICAg
ICAgIFJTVF9TVFJFQU0gZnJhbWUgc2hvdWxkIGJlIGlnbm9yZWQgaWYgc3RyZWFtIGlzIGluIGEg
Y2xvc2VkIHN0YXRlLgorICAgICAgICBTZWUgUkZDIDc1NDAgU2VjdGlvbiA1LjEgKGNsb3NlZCBz
dGF0ZSkKKyAgICAgICAgIiIiCisgICAgICAgIGMgPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlv
bigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisKKyAgICAgICAgIyBDbGllbnQg
c2VuZHMgcmVxdWVzdAorICAgICAgICBjLnNlbmRfaGVhZGVycygxLCBzZWxmLmV4YW1wbGVfcmVx
dWVzdF9oZWFkZXJzKQorCisgICAgICAgICMgU29tZSB0aW1lIHBhc3NlcyBhbmQgY2xpZW50IHNl
bmRzIERBVEEgZnJhbWUgYW5kIGNsb3NlcyBzdHJlYW0sCisgICAgICAgICMgc28gaXQgaXMgaW4g
YSBoYWxmLWNsb3NlZCBzdGF0ZQorICAgICAgICBjLnNlbmRfZGF0YSgxLCBiJ3NvbWUgZGF0YScs
IGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIFNlcnZlciByZWNlaXZlZCBIRUFERVJTIGZy
YW1lIGJ1dCBEQVRBIGZyYW1lIGlzIHN0aWxsIG9uIHRoZSB3YXkuCisgICAgICAgICMgU3RyZWFt
IGlzIGluIG9wZW4gc3RhdGUgb24gdGhlIHNlcnZlci1zaWRlLiBJbiB0aGlzIHN0YXRlIHNlcnZl
ciBpcworICAgICAgICAjIGFsbG93ZWQgdG8gZW5kIHN0cmVhbSBhbmQgcmVzZXQgaXQgLSB0aGlz
IHRyaWNrIGhlbHBzIGltbWVkaWF0ZWx5CisgICAgICAgICMgY2xvc2Ugc3RyZWFtIG9uIHRoZSBz
ZXJ2ZXItc2lkZS4KKyAgICAgICAgaGVhZGVyc19mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRf
aGVhZGVyc19mcmFtZSgKKyAgICAgICAgICAgIFsoJzpzdGF0dXMnLCAnMjAwJyldLAorICAgICAg
ICAgICAgZmxhZ3M9WydFTkRfU1RSRUFNJ10sCisgICAgICAgICAgICBzdHJlYW1faWQ9MSwKKyAg
ICAgICAgKQorICAgICAgICBldmVudHMgPSBjLnJlY2VpdmVfZGF0YShoZWFkZXJzX2ZyYW1lLnNl
cmlhbGl6ZSgpKQorICAgICAgICBhc3NlcnQgbGVuKGV2ZW50cykgPT0gMgorICAgICAgICByZXNw
b25zZV9yZWNlaXZlZCwgc3RyZWFtX2VuZGVkID0gZXZlbnRzCisgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJlc3BvbnNlX3JlY2VpdmVkLCBoMi5ldmVudHMuUmVzcG9uc2VSZWNlaXZlZCkKKyAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc3RyZWFtX2VuZGVkLCBoMi5ldmVudHMuU3RyZWFtRW5k
ZWQpCisKKyAgICAgICAgcnN0X3N0cmVhbV9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0
X3N0cmVhbV9mcmFtZShzdHJlYW1faWQ9MSkKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2Rh
dGEocnN0X3N0cmVhbV9mcmFtZS5zZXJpYWxpemUoKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVu
dHMKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfd2luZG93X3VwZGF0ZV9vbl9jbG9zZWRfc3RyZWFt
KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgorICAgICAgICAiIiIKKyAgICAgICAgV0lORE9XX1VQREFU
RSBmcmFtZSBzaG91bGQgYmUgaWdub3JlZCBpZiBzdHJlYW0gaXMgaW4gYSBjbG9zZWQgc3RhdGUu
CisgICAgICAgIFNlZSBSRkMgNzU0MCBTZWN0aW9uIDUuMSAoY2xvc2VkIHN0YXRlKQorICAgICAg
ICAiIiIKKyAgICAgICAgYyA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKCkKKyAgICAgICAg
Yy5pbml0aWF0ZV9jb25uZWN0aW9uKCkKKworICAgICAgICAjIENsaWVudCBzZW5kcyByZXF1ZXN0
CisgICAgICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMp
CisKKyAgICAgICAgIyBTb21lIHRpbWUgcGFzc2VzIGFuZCBjbGllbnQgc2VuZHMgREFUQSBmcmFt
ZSBhbmQgY2xvc2VzIHN0cmVhbSwKKyAgICAgICAgIyBzbyBpdCBpcyBpbiBhIGhhbGYtY2xvc2Vk
IHN0YXRlCisgICAgICAgIGMuc2VuZF9kYXRhKDEsIGInc29tZSBkYXRhJywgZW5kX3N0cmVhbT1U
cnVlKQorCisgICAgICAgICMgU2VydmVyIHJlY2VpdmVkIEhFQURFUlMgZnJhbWUgYnV0IERBVEEg
ZnJhbWUgaXMgc3RpbGwgb24gdGhlIHdheS4KKyAgICAgICAgIyBTdHJlYW0gaXMgaW4gb3BlbiBz
dGF0ZSBvbiB0aGUgc2VydmVyLXNpZGUuIEluIHRoaXMgc3RhdGUgc2VydmVyIGlzCisgICAgICAg
ICMgYWxsb3dlZCB0byBlbmQgc3RyZWFtIGFuZCBhZnRlciB0aGF0IGFja25vd2xlZGdlIHJlY2Vp
dmVkIGRhdGEgYnkKKyAgICAgICAgIyBzZW5kaW5nIFdJTkRPV19VUERBVEUgZnJhbWVzLgorICAg
ICAgICBoZWFkZXJzX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF9oZWFkZXJzX2ZyYW1lKAor
ICAgICAgICAgICAgWygnOnN0YXR1cycsICcyMDAnKV0sCisgICAgICAgICAgICBmbGFncz1bJ0VO
RF9TVFJFQU0nXSwKKyAgICAgICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICApCisgICAgICAg
IGV2ZW50cyA9IGMucmVjZWl2ZV9kYXRhKGhlYWRlcnNfZnJhbWUuc2VyaWFsaXplKCkpCisgICAg
ICAgIGFzc2VydCBsZW4oZXZlbnRzKSA9PSAyCisgICAgICAgIHJlc3BvbnNlX3JlY2VpdmVkLCBz
dHJlYW1fZW5kZWQgPSBldmVudHMKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzcG9uc2Vf
cmVjZWl2ZWQsIGgyLmV2ZW50cy5SZXNwb25zZVJlY2VpdmVkKQorICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShzdHJlYW1fZW5kZWQsIGgyLmV2ZW50cy5TdHJlYW1FbmRlZCkKKworICAgICAgICB3
aW5kb3dfdXBkYXRlX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF93aW5kb3dfdXBkYXRlX2Zy
YW1lKAorICAgICAgICAgICAgc3RyZWFtX2lkPTEsCisgICAgICAgICAgICBpbmNyZW1lbnQ9MSwK
KyAgICAgICAgKQorICAgICAgICBldmVudHMgPSBjLnJlY2VpdmVfZGF0YSh3aW5kb3dfdXBkYXRl
X2ZyYW1lLnNlcmlhbGl6ZSgpKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworCiAKIGNsYXNz
IFRlc3RTdHJlYW1zQ2xvc2VkQnlFbmRTdHJlYW0ob2JqZWN0KToKICAgICBleGFtcGxlX3JlcXVl
c3RfaGVhZGVycyA9IFsKQEAgLTEyNCw3ICsxOTUsNiBAQCBjbGFzcyBUZXN0U3RyZWFtc0Nsb3Nl
ZEJ5RW5kU3RyZWFtKG9iamVjdCk6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAg
ICAgICAiZnJhbWUiLAogICAgICAgICBbCi0gICAgICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZm
LmJ1aWxkX2RhdGFfZnJhbWUoYidoZWxsbycpLAogICAgICAgICAgICAgbGFtYmRhIHNlbGYsIGZm
OiBmZi5idWlsZF9oZWFkZXJzX2ZyYW1lKAogICAgICAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9y
ZXF1ZXN0X2hlYWRlcnMsIGZsYWdzPVsnRU5EX1NUUkVBTSddKSwKICAgICAgICAgICAgIGxhbWJk
YSBzZWxmLCBmZjogZmYuYnVpbGRfaGVhZGVyc19mcmFtZSgKQEAgLTE3NCw3ICsyNDQsNiBAQCBj
bGFzcyBUZXN0U3RyZWFtc0Nsb3NlZEJ5RW5kU3RyZWFtKG9iamVjdCk6CiAgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAogICAgICAgICAiZnJhbWUiLAogICAgICAgICBbCi0gICAgICAgICAg
ICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX2RhdGFfZnJhbWUoYidoZWxsbycpLAogICAgICAg
ICAgICAgbGFtYmRhIHNlbGYsIGZmOiBmZi5idWlsZF9oZWFkZXJzX2ZyYW1lKAogICAgICAgICAg
ICAgICAgIHNlbGYuZXhhbXBsZV9yZXNwb25zZV9oZWFkZXJzLCBmbGFncz1bJ0VORF9TVFJFQU0n
XSksCiAgICAgICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX2hlYWRlcnNfZnJhbWUo
CkBAIC0yNzMsOCArMzQyLDYgQEAgY2xhc3MgVGVzdFN0cmVhbXNDbG9zZWRCeVJzdFN0cmVhbShv
YmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMpLAog
ICAgICAgICAgICAgbGFtYmRhIHNlbGYsIGZmOiBmZi5idWlsZF9oZWFkZXJzX2ZyYW1lKAogICAg
ICAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMsIGZsYWdzPVsnRU5EX1NU
UkVBTSddKSwKLSAgICAgICAgICAgIGxhbWJkYSBzZWxmLCBmZjogZmYuYnVpbGRfZGF0YV9mcmFt
ZShiJ2hlbGxvJyksCi0gICAgICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX3dpbmRv
d191cGRhdGVfZnJhbWUoMSwgMSksCiAgICAgICAgIF0KICAgICApCiAgICAgZGVmIHRlc3RfcmVz
ZXRzX2Z1cnRoZXJfZnJhbWVzX2FmdGVyX3JlY3ZfcmVzZXQoc2VsZiwKQEAgLTI4Miw3ICszNDks
OCBAQCBjbGFzcyBUZXN0U3RyZWFtc0Nsb3NlZEJ5UnN0U3RyZWFtKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUpOgogICAg
ICAgICAiIiIKICAgICAgICAgQSBzdHJlYW0gdGhhdCBpcyBjbG9zZWQgYnkgcmVjZWl2ZSBSU1Rf
U1RSRUFNIGNhbiByZWNlaXZlIGZ1cnRoZXIKLSAgICAgICAgZnJhbWVzOiBpdCBzaW1wbHkgc2Vu
ZHMgUlNUX1NUUkVBTSBmb3IgaXQuCisgICAgICAgIGZyYW1lczogaXQgc2ltcGx5IHNlbmRzIFJT
VF9TVFJFQU0gZm9yIGl0LCBhbmQgYWRkaXRpb25hbGx5CisgICAgICAgIFdJTkRPV19VUERBVEUg
Zm9yIERBVEEgZnJhbWVzLgogICAgICAgICAiIiIKICAgICAgICAgYyA9IGgyLmNvbm5lY3Rpb24u
SDJDb25uZWN0aW9uKGNvbmZpZz1zZWxmLnNlcnZlcl9jb25maWcpCiAgICAgICAgIGMucmVjZWl2
ZV9kYXRhKGZyYW1lX2ZhY3RvcnkucHJlYW1ibGUoKSkKQEAgLTMyNiw2ICszOTQsNTkgQEAgY2xh
c3MgVGVzdFN0cmVhbXNDbG9zZWRCeVJzdFN0cmVhbShvYmplY3QpOgogICAgICAgICBhc3NlcnQg
bm90IGV2ZW50cwogICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSByc3RfZnJhbWUu
c2VyaWFsaXplKCkgKiAzCiAKKyAgICBkZWYgdGVzdF9yZXNldHNfZnVydGhlcl9kYXRhX2ZyYW1l
c19hZnRlcl9yZWN2X3Jlc2V0KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9mYWN0b3J5KToKKyAgICAgICAgIiIiCisg
ICAgICAgIEEgc3RyZWFtIHRoYXQgaXMgY2xvc2VkIGJ5IHJlY2VpdmUgUlNUX1NUUkVBTSBjYW4g
cmVjZWl2ZSBmdXJ0aGVyCisgICAgICAgIERBVEEgZnJhbWVzOiBpdCBzaW1wbHkgc2VuZHMgV0lO
RE9XX1VQREFURSBmb3IgdGhlIGNvbm5lY3Rpb24gZmxvdworICAgICAgICB3aW5kb3csIGFuZCBS
U1RfU1RSRUFNIGZvciB0aGUgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgYyA9IGgyLmNv
bm5lY3Rpb24uSDJDb25uZWN0aW9uKGNvbmZpZz1zZWxmLnNlcnZlcl9jb25maWcpCisgICAgICAg
IGMucmVjZWl2ZV9kYXRhKGZyYW1lX2ZhY3RvcnkucHJlYW1ibGUoKSkKKyAgICAgICAgYy5pbml0
aWF0ZV9jb25uZWN0aW9uKCkKKworICAgICAgICBoZWFkZXJfZnJhbWUgPSBmcmFtZV9mYWN0b3J5
LmJ1aWxkX2hlYWRlcnNfZnJhbWUoCisgICAgICAgICAgICBzZWxmLmV4YW1wbGVfcmVxdWVzdF9o
ZWFkZXJzLCBmbGFncz1bJ0VORF9TVFJFQU0nXQorICAgICAgICApCisgICAgICAgIGMucmVjZWl2
ZV9kYXRhKGhlYWRlcl9mcmFtZS5zZXJpYWxpemUoKSkKKworICAgICAgICBjLnNlbmRfaGVhZGVy
cygKKyAgICAgICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgaGVhZGVycz1zZWxmLmV4
YW1wbGVfcmVzcG9uc2VfaGVhZGVycywKKyAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UKKyAg
ICAgICAgKQorCisgICAgICAgIHJzdF9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgIDEsIGgyLmVycm9ycy5FcnJvckNvZGVzLlNUUkVBTV9D
TE9TRUQKKyAgICAgICAgKQorICAgICAgICBjLnJlY2VpdmVfZGF0YShyc3RfZnJhbWUuc2VyaWFs
aXplKCkpCisgICAgICAgIGMuY2xlYXJfb3V0Ym91bmRfZGF0YV9idWZmZXIoKQorCisgICAgICAg
IGYgPSBmcmFtZV9mYWN0b3J5LmJ1aWxkX2RhdGFfZnJhbWUoCisgICAgICAgICAgICBkYXRhPWIn
c29tZSBkYXRhJworICAgICAgICApCisKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEo
Zi5zZXJpYWxpemUoKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKworICAgICAgICBleHBl
Y3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAg
IHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJyb3JDb2Rl
cy5TVFJFQU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpCisgICAgICAgIGFzc2VydCBj
LmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkCisKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZl
X2RhdGEoZi5zZXJpYWxpemUoKSAqIDMpCisgICAgICAgIGFzc2VydCBub3QgZXZlbnRzCisgICAg
ICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkICogMworCisgICAgICAgICMg
SXRlcmF0ZSBvdmVyIHRoZSBzdHJlYW1zIHRvIG1ha2Ugc3VyZSBpdCdzIGdvbmUsIHRoZW4gY29u
ZmlybSB0aGUKKyAgICAgICAgIyBiZWhhdmlvdXIgaXMgdW5jaGFuZ2VkLgorICAgICAgICBjLm9w
ZW5fb3V0Ym91bmRfc3RyZWFtcworCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9kYXRhKGYu
c2VyaWFsaXplKCkgKiAzKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAgICBhc3Nl
cnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZCAqIDMKKwogICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgKICAgICAgICAgImZyYW1lIiwKICAgICAgICAgWwpAQCAtMzMzLDggKzQ1NCw2
IEBAIGNsYXNzIFRlc3RTdHJlYW1zQ2xvc2VkQnlSc3RTdHJlYW0ob2JqZWN0KToKICAgICAgICAg
ICAgICAgICBzZWxmLmV4YW1wbGVfcmVxdWVzdF9oZWFkZXJzKSwKICAgICAgICAgICAgIGxhbWJk
YSBzZWxmLCBmZjogZmYuYnVpbGRfaGVhZGVyc19mcmFtZSgKICAgICAgICAgICAgICAgICBzZWxm
LmV4YW1wbGVfcmVxdWVzdF9oZWFkZXJzLCBmbGFncz1bJ0VORF9TVFJFQU0nXSksCi0gICAgICAg
ICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX2RhdGFfZnJhbWUoYidoZWxsbycpLAotICAg
ICAgICAgICAgbGFtYmRhIHNlbGYsIGZmOiBmZi5idWlsZF93aW5kb3dfdXBkYXRlX2ZyYW1lKDEs
IDEpLAogICAgICAgICBdCiAgICAgKQogICAgIGRlZiB0ZXN0X3Jlc2V0c19mdXJ0aGVyX2ZyYW1l
c19hZnRlcl9zZW5kX3Jlc2V0KHNlbGYsCkBAIC0zODYsMyArNTA1LDUxIEBAIGNsYXNzIFRlc3RT
dHJlYW1zQ2xvc2VkQnlSc3RTdHJlYW0ob2JqZWN0KToKICAgICAgICAgZXZlbnRzID0gYy5yZWNl
aXZlX2RhdGEoZi5zZXJpYWxpemUoKSAqIDMpCiAgICAgICAgIGFzc2VydCBub3QgZXZlbnRzCiAg
ICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IHJzdF9mcmFtZS5zZXJpYWxpemUoKSAq
IDMKKworICAgIGRlZiB0ZXN0X3Jlc2V0c19mdXJ0aGVyX2RhdGFfZnJhbWVzX2FmdGVyX3NlbmRf
cmVzZXQoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lX2ZhY3RvcnkpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBzdHJl
YW0gdGhhdCBpcyBjbG9zZWQgYnkgc2VudCBSU1RfU1RSRUFNIGNhbiByZWNlaXZlIGZ1cnRoZXIK
KyAgICAgICAgZGF0YSBmcmFtZXM6IGl0IHNpbXBseSBzZW5kcyBXSU5ET1dfVVBEQVRFIGFuZCBS
U1RfU1RSRUFNIGZvciBpdC4KKyAgICAgICAgIiIiCisgICAgICAgIGMgPSBoMi5jb25uZWN0aW9u
LkgyQ29ubmVjdGlvbihjb25maWc9c2VsZi5zZXJ2ZXJfY29uZmlnKQorICAgICAgICBjLnJlY2Vp
dmVfZGF0YShmcmFtZV9mYWN0b3J5LnByZWFtYmxlKCkpCisgICAgICAgIGMuaW5pdGlhdGVfY29u
bmVjdGlvbigpCisKKyAgICAgICAgaGVhZGVyX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF9o
ZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgc2VsZi5leGFtcGxlX3JlcXVlc3RfaGVhZGVycywg
ZmxhZ3M9WydFTkRfU1RSRUFNJ10KKyAgICAgICAgKQorICAgICAgICBjLnJlY2VpdmVfZGF0YSho
ZWFkZXJfZnJhbWUuc2VyaWFsaXplKCkpCisKKyAgICAgICAgYy5zZW5kX2hlYWRlcnMoCisgICAg
ICAgICAgICBzdHJlYW1faWQ9MSwKKyAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5leGFtcGxlX3Jl
c3BvbnNlX2hlYWRlcnMsCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICkK
KworICAgICAgICBjLnJlc2V0X3N0cmVhbSgxLCBoMi5lcnJvcnMuRXJyb3JDb2Rlcy5JTlRFUk5B
TF9FUlJPUikKKworICAgICAgICBjLmNsZWFyX291dGJvdW5kX2RhdGFfYnVmZmVyKCkKKworICAg
ICAgICBmID0gZnJhbWVfZmFjdG9yeS5idWlsZF9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgZGF0
YT1iJ3NvbWUgZGF0YScKKyAgICAgICAgKQorICAgICAgICBldmVudHMgPSBjLnJlY2VpdmVfZGF0
YShmLnNlcmlhbGl6ZSgpKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAgICBleHBl
Y3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAg
IHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJyb3JDb2Rl
cy5TVFJFQU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpCisgICAgICAgIGFzc2VydCBj
LmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkCisKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZl
X2RhdGEoZi5zZXJpYWxpemUoKSAqIDMpCisgICAgICAgIGFzc2VydCBub3QgZXZlbnRzCisgICAg
ICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkICogMworCisgICAgICAgICMg
SXRlcmF0ZSBvdmVyIHRoZSBzdHJlYW1zIHRvIG1ha2Ugc3VyZSBpdCdzIGdvbmUsIHRoZW4gY29u
ZmlybSB0aGUKKyAgICAgICAgIyBiZWhhdmlvdXIgaXMgdW5jaGFuZ2VkLgorICAgICAgICBjLm9w
ZW5fb3V0Ym91bmRfc3RyZWFtcworCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9kYXRhKGYu
c2VyaWFsaXplKCkgKiAzKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAgICBhc3Nl
cnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZCAqIDMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dGVzdC90ZXN0X2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V2ZW50cy5weQppbmRleCAw
NmY3ZGEzOWM3YmUuLmE2ZThkODM3OTA2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rf
ZXZlbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V2ZW50cy5weQpAQCAtMjEzLDE0ICsy
MTMsMjMgQEAgY2xhc3MgVGVzdEV2ZW50UmVwcnMob2JqZWN0KToKICAgICAgICAgICAgICJuZXdf
dmFsdWU9MzI3NjgpfT4iCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3BpbmdhY2tub3dsZWRn
ZWRfcmVwcihzZWxmKToKKyAgICBkZWYgdGVzdF9waW5ncmVjZWl2ZWRfcmVwcihzZWxmKToKICAg
ICAgICAgIiIiCi0gICAgICAgIFBpbmdBY2tub3dsZWRnZWQgaGFzIGEgdXNlZnVsIGRlYnVnIHJl
cHJlc2VudGF0aW9uLgorICAgICAgICBQaW5nUmVjZWl2ZWQgaGFzIGEgdXNlZnVsIGRlYnVnIHJl
cHJlc2VudGF0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAgZSA9IGgyLmV2ZW50cy5QaW5nQWNr
bm93bGVkZ2VkKCkKKyAgICAgICAgZSA9IGgyLmV2ZW50cy5QaW5nUmVjZWl2ZWQoKQogICAgICAg
ICBlLnBpbmdfZGF0YSA9IGInYWJjZGVmZ2gnCiAKLSAgICAgICAgYXNzZXJ0IHJlcHIoZSkgPT0g
IjxQaW5nQWNrbm93bGVkZ2VkIHBpbmdfZGF0YTo2MTYyNjM2NDY1NjY2NzY4PiIKKyAgICAgICAg
YXNzZXJ0IHJlcHIoZSkgPT0gIjxQaW5nUmVjZWl2ZWQgcGluZ19kYXRhOjYxNjI2MzY0NjU2NjY3
Njg+IgorCisgICAgZGVmIHRlc3RfcGluZ2Fja3JlY2VpdmVkX3JlcHIoc2VsZik6CisgICAgICAg
ICIiIgorICAgICAgICBQaW5nQWNrUmVjZWl2ZWQgaGFzIGEgdXNlZnVsIGRlYnVnIHJlcHJlc2Vu
dGF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgZSA9IGgyLmV2ZW50cy5QaW5nQWNrUmVjZWl2
ZWQoKQorICAgICAgICBlLnBpbmdfZGF0YSA9IGInYWJjZGVmZ2gnCisKKyAgICAgICAgYXNzZXJ0
IHJlcHIoZSkgPT0gIjxQaW5nQWNrUmVjZWl2ZWQgcGluZ19kYXRhOjYxNjI2MzY0NjU2NjY3Njg+
IgogCiAgICAgZGVmIHRlc3Rfc3RyZWFtZW5kZWRfcmVwcihzZWxmKToKICAgICAgICAgIiIiCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9mbG93X2NvbnRyb2xfd2luZG93LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi90ZXN0L3Rlc3RfZmxvd19jb250cm9sX3dpbmRvdy5weQppbmRleCAzODBjZDYxZTNiMTku
LjI0YjM0NWFhYzNhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfZmxvd19jb250cm9s
X3dpbmRvdy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9mbG93X2NvbnRyb2xfd2luZG93LnB5
CkBAIC02MzgsNiArNjM4LDQyIEBAIGNsYXNzIFRlc3RGbG93Q29udHJvbChvYmplY3QpOgogICAg
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoaDIuZXhjZXB0aW9ucy5GbG93Q29udHJvbEVycm9yKToK
ICAgICAgICAgICAgIGMuaW5jcmVtZW50X2Zsb3dfY29udHJvbF93aW5kb3coaW5jcmVtZW50PWlu
Y3JlbWVudCwgc3RyZWFtX2lkPTEpCiAKKyAgICBkZWYgdGVzdF9zZW5kX3VwZGF0ZV9vbl9jbG9z
ZWRfc3RyZWFtcyhzZWxmLCBmcmFtZV9mYWN0b3J5KToKKyAgICAgICAgYyA9IGgyLmNvbm5lY3Rp
b24uSDJDb25uZWN0aW9uKCkKKyAgICAgICAgYy5pbml0aWF0ZV9jb25uZWN0aW9uKCkKKyAgICAg
ICAgYy5zZW5kX2hlYWRlcnMoMSwgc2VsZi5leGFtcGxlX3JlcXVlc3RfaGVhZGVycykKKyAgICAg
ICAgYy5yZXNldF9zdHJlYW0oMSkKKworICAgICAgICBjLmNsZWFyX291dGJvdW5kX2RhdGFfYnVm
ZmVyKCkKKyAgICAgICAgYy5vcGVuX291dGJvdW5kX3N0cmVhbXMKKyAgICAgICAgYy5vcGVuX2lu
Ym91bmRfc3RyZWFtcworCisgICAgICAgIGYgPSBmcmFtZV9mYWN0b3J5LmJ1aWxkX2RhdGFfZnJh
bWUoYidzb21lIGRhdGEnKjE1MDApCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9kYXRhKGYu
c2VyaWFsaXplKCkqMykKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKworICAgICAgICBleHBl
Y3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAg
IHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJyb3JDb2Rl
cy5TVFJFQU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpICogMiArIGZyYW1lX2ZhY3Rv
cnkuYnVpbGRfd2luZG93X3VwZGF0ZV9mcmFtZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD0wLAor
ICAgICAgICAgICAgaW5jcmVtZW50PTQwNTAwLAorICAgICAgICApLnNlcmlhbGl6ZSgpICsgZnJh
bWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgc3RyZWFtX2lk
PTEsCisgICAgICAgICAgICBlcnJvcl9jb2RlPWgyLmVycm9ycy5FcnJvckNvZGVzLlNUUkVBTV9D
TE9TRUQsCisgICAgICAgICkuc2VyaWFsaXplKCkKKyAgICAgICAgYXNzZXJ0IGMuZGF0YV90b19z
ZW5kKCkgPT0gZXhwZWN0ZWQKKworICAgICAgICBmID0gZnJhbWVfZmFjdG9yeS5idWlsZF9kYXRh
X2ZyYW1lKGInJykKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUo
KSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKworICAgICAgICBleHBlY3RlZCA9IGZyYW1l
X2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD0x
LAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJyb3JDb2Rlcy5TVFJFQU1fQ0xP
U0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpCisgICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2Vu
ZCgpID09IGV4cGVjdGVkCisKIAogY2xhc3MgVGVzdEF1dG9tYXRpY0Zsb3dDb250cm9sKG9iamVj
dCk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oMl91cGdyYWRlLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaDJfdXBncmFkZS5weQppbmRleCAxZDRlYWM2N2Y2NDcuLmQ2
M2Q0NGYzZjc4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaDJfdXBncmFkZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oMl91cGdyYWRlLnB5CkBAIC0yNjAsMTEgKzI2MCwxMSBA
QCBjbGFzcyBUZXN0U2VydmVyVXBncmFkZShvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIGMu
cmVjZWl2ZV9kYXRhKGYuc2VyaWFsaXplKCkpCiAKLSAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBm
cmFtZV9mYWN0b3J5LmJ1aWxkX3JzdF9zdHJlYW1fZnJhbWUoCisgICAgICAgIGV4cGVjdGVkID0g
ZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAogICAgICAgICAgICAgc3RyZWFt
X2lkPTEsCiAgICAgICAgICAgICBlcnJvcl9jb2RlPWgyLmVycm9ycy5FcnJvckNvZGVzLlNUUkVB
TV9DTE9TRUQsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0g
ZXhwZWN0ZWRfZnJhbWUuc2VyaWFsaXplKCkKKyAgICAgICAgKS5zZXJpYWxpemUoKQorICAgICAg
ICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZAogCiAgICAgZGVmIHRlc3RfY2xp
ZW50X3NldHRpbmdzX2FyZV9hcHBsaWVkKHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgogICAgICAgICAi
IiIKQEAgLTI3OCw3ICsyNzgsNyBAQCBjbGFzcyBUZXN0U2VydmVyVXBncmFkZShvYmplY3QpOgog
ICAgICAgICAjIHN0YXJ0IG9mIHRoZSBjb25uZWN0aW9uLCBkbyBub3QgYWdyZWUgb24gdGhlaXIg
aW5pdGlhbCBzZXR0aW5ncwogICAgICAgICAjIHN0YXRlLgogICAgICAgICBhc3NlcnQgKAotICAg
ICAgICAgICAgY2xpZW50LmxvY2FsX3NldHRpbmdzLl9zZXR0aW5ncyAhPSBzZXJ2ZXIucmVtb3Rl
X3NldHRpbmdzLl9zZXR0aW5ncworICAgICAgICAgICAgY2xpZW50LmxvY2FsX3NldHRpbmdzICE9
IHNlcnZlci5yZW1vdGVfc2V0dGluZ3MKICAgICAgICAgKQogCiAgICAgICAgICMgR2V0IHRoZSBj
bGllbnQgaGVhZGVyIGRhdGEgYW5kIHBhc3MgaXQgdG8gdGhlIHNlcnZlci4KQEAgLTI5NywxMCAr
Mjk3LDYgQEAgY2xhc3MgVGVzdFNlcnZlclVwZ3JhZGUob2JqZWN0KToKICAgICAgICAgKQogICAg
ICAgICBhc3NlcnQgc2VydmVyLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkX2ZyYW1lLnNlcmlh
bGl6ZSgpCiAKLSAgICAgICAgIyBXZSB2aW9sYXRlIGFic3RyYWN0aW9uIGxheWVycyBoZXJlLCBi
dXQgSSBkb24ndCB0aGluayBkZWZpbmluZyBfX2VxX18KLSAgICAgICAgIyBmb3IgdGhpcyBpcyB3
b3J0aCBpdC4gSW4gdGhpcyBjYXNlLCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzaG91bGQK
LSAgICAgICAgIyBhZ3JlZSB0aGF0IHRoZXNlIHNldHRpbmdzIGhhdmUgYmVlbiBBQ0snZCwgc28g
dGhlaXIgdW5kZXJseWluZwotICAgICAgICAjIGRpY3Rpb25hcmllcyBzaG91bGQgYmUgaWRlbnRp
Y2FsLgogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgY2xpZW50LmxvY2FsX3NldHRpbmdz
Ll9zZXR0aW5ncyA9PSBzZXJ2ZXIucmVtb3RlX3NldHRpbmdzLl9zZXR0aW5ncworICAgICAgICAg
ICAgY2xpZW50LmxvY2FsX3NldHRpbmdzID09IHNlcnZlci5yZW1vdGVfc2V0dGluZ3MKICAgICAg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5CmluZGV4IDMxM2JmMTJhN2MzMS4uZWY3MzAw
NzI1NGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oZWFkX3JlcXVlc3QucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5CkBAIC04LDQ5ICs4LDQ4IEBAIGlt
cG9ydCBweXRlc3QKIAogCiBjbGFzcyBUZXN0SGVhZFJlcXVlc3Qob2JqZWN0KToKLQotICAgICAg
ICBleGFtcGxlX3JlcXVlc3RfaGVhZGVycyA9IFsKLSAgICAgICAgICAgIChiJzphdXRob3JpdHkn
LCBiJ2V4YW1wbGUuY29tJyksCi0gICAgICAgICAgICAoYic6cGF0aCcsIGInLycpLAotICAgICAg
ICAgICAgKGInOnNjaGVtZScsIGInaHR0cHMnKSwKLSAgICAgICAgICAgIChiJzptZXRob2QnLCBi
J0hFQUQnKSwKLSAgICAgICAgXQotCi0gICAgICAgIGV4YW1wbGVfcmVzcG9uc2VfaGVhZGVycyA9
IFsKLSAgICAgICAgICAgIChiJzpzdGF0dXMnLCBiJzIwMCcpLAotICAgICAgICAgICAgKGInc2Vy
dmVyJywgYidmYWtlLXNlcnYvMC4xLjAnKSwKLSAgICAgICAgICAgIChiJ2NvbnRlbnRfbGVuZ3Ro
JywgYicxJyksCi0gICAgICAgIF0KLQotICAgICAgICBkZWYgdGVzdF9ub25femVyb19jb250ZW50
X2FuZF9ub19ib2R5KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgotCi0gICAgICAgICAgICBjID0gaDIu
Y29ubmVjdGlvbi5IMkNvbm5lY3Rpb24oKQotICAgICAgICAgICAgYy5pbml0aWF0ZV9jb25uZWN0
aW9uKCkKLSAgICAgICAgICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0
X2hlYWRlcnMsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAgICAgICAgICAgZiA9IGZyYW1lX2ZhY3Rv
cnkuYnVpbGRfaGVhZGVyc19mcmFtZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4YW1wbGVfcmVz
cG9uc2VfaGVhZGVycywKLSAgICAgICAgICAgICAgICBmbGFncz1bJ0VORF9TVFJFQU0nXQotICAg
ICAgICAgICAgKQotICAgICAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxp
emUoKSkKLQotICAgICAgICAgICAgYXNzZXJ0IGxlbihldmVudHMpID09IDIKLSAgICAgICAgICAg
IGV2ZW50ID0gZXZlbnRzWzBdCi0KLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50
LCBoMi5ldmVudHMuUmVzcG9uc2VSZWNlaXZlZCkKLSAgICAgICAgICAgIGFzc2VydCBldmVudC5z
dHJlYW1faWQgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGV2ZW50LmhlYWRlcnMgPT0gc2VsZi5l
eGFtcGxlX3Jlc3BvbnNlX2hlYWRlcnMKLQotICAgICAgICBkZWYgdGVzdF9yZWplY3Rfbm9uX3pl
cm9fY29udGVudF9hbmRfYm9keShzZWxmLCBmcmFtZV9mYWN0b3J5KToKLSAgICAgICAgICAgIGMg
PSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbigpCi0gICAgICAgICAgICBjLmluaXRpYXRlX2Nv
bm5lY3Rpb24oKQotICAgICAgICAgICAgYy5zZW5kX2hlYWRlcnMoMSwgc2VsZi5leGFtcGxlX3Jl
cXVlc3RfaGVhZGVycykKLQotICAgICAgICAgICAgaGVhZGVycyA9IGZyYW1lX2ZhY3RvcnkuYnVp
bGRfaGVhZGVyc19mcmFtZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4YW1wbGVfcmVzcG9uc2Vf
aGVhZGVycwotICAgICAgICAgICAgKQotICAgICAgICAgICAgZGF0YSA9IGZyYW1lX2ZhY3Rvcnku
YnVpbGRfZGF0YV9mcmFtZShkYXRhPWInXHgwMScpCi0KLSAgICAgICAgICAgIGMucmVjZWl2ZV9k
YXRhKGhlYWRlcnMuc2VyaWFsaXplKCkpCi0gICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMo
aDIuZXhjZXB0aW9ucy5JbnZhbGlkQm9keUxlbmd0aEVycm9yKToKLSAgICAgICAgICAgICAgICBj
LnJlY2VpdmVfZGF0YShkYXRhLnNlcmlhbGl6ZSgpKQorICAgIGV4YW1wbGVfcmVxdWVzdF9oZWFk
ZXJzID0gWworICAgICAgICAoYic6YXV0aG9yaXR5JywgYidleGFtcGxlLmNvbScpLAorICAgICAg
ICAoYic6cGF0aCcsIGInLycpLAorICAgICAgICAoYic6c2NoZW1lJywgYidodHRwcycpLAorICAg
ICAgICAoYic6bWV0aG9kJywgYidIRUFEJyksCisgICAgXQorCisgICAgZXhhbXBsZV9yZXNwb25z
ZV9oZWFkZXJzID0gWworICAgICAgICAoYic6c3RhdHVzJywgYicyMDAnKSwKKyAgICAgICAgKGIn
c2VydmVyJywgYidmYWtlLXNlcnYvMC4xLjAnKSwKKyAgICAgICAgKGInY29udGVudF9sZW5ndGgn
LCBiJzEnKSwKKyAgICBdCisKKyAgICBkZWYgdGVzdF9ub25femVyb19jb250ZW50X2FuZF9ub19i
b2R5KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgorCisgICAgICAgIGMgPSBoMi5jb25uZWN0aW9uLkgy
Q29ubmVjdGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisgICAgICAgIGMu
c2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMsIGVuZF9zdHJlYW09
VHJ1ZSkKKworICAgICAgICBmID0gZnJhbWVfZmFjdG9yeS5idWlsZF9oZWFkZXJzX2ZyYW1lKAor
ICAgICAgICAgICAgc2VsZi5leGFtcGxlX3Jlc3BvbnNlX2hlYWRlcnMsCisgICAgICAgICAgICBm
bGFncz1bJ0VORF9TVFJFQU0nXQorICAgICAgICApCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2
ZV9kYXRhKGYuc2VyaWFsaXplKCkpCisKKyAgICAgICAgYXNzZXJ0IGxlbihldmVudHMpID09IDIK
KyAgICAgICAgZXZlbnQgPSBldmVudHNbMF0KKworICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShl
dmVudCwgaDIuZXZlbnRzLlJlc3BvbnNlUmVjZWl2ZWQpCisgICAgICAgIGFzc2VydCBldmVudC5z
dHJlYW1faWQgPT0gMQorICAgICAgICBhc3NlcnQgZXZlbnQuaGVhZGVycyA9PSBzZWxmLmV4YW1w
bGVfcmVzcG9uc2VfaGVhZGVycworCisgICAgZGVmIHRlc3RfcmVqZWN0X25vbl96ZXJvX2NvbnRl
bnRfYW5kX2JvZHkoc2VsZiwgZnJhbWVfZmFjdG9yeSk6CisgICAgICAgIGMgPSBoMi5jb25uZWN0
aW9uLkgyQ29ubmVjdGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisgICAg
ICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMpCisKKyAg
ICAgICAgaGVhZGVycyA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfaGVhZGVyc19mcmFtZSgKKyAgICAg
ICAgICAgIHNlbGYuZXhhbXBsZV9yZXNwb25zZV9oZWFkZXJzCisgICAgICAgICkKKyAgICAgICAg
ZGF0YSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFtZShkYXRhPWInXHgwMScpCisKKyAg
ICAgICAgYy5yZWNlaXZlX2RhdGEoaGVhZGVycy5zZXJpYWxpemUoKSkKKyAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKGgyLmV4Y2VwdGlvbnMuSW52YWxpZEJvZHlMZW5ndGhFcnJvcik6CisgICAg
ICAgICAgICBjLnJlY2VpdmVfZGF0YShkYXRhLnNlcmlhbGl6ZSgpKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9mcmFtZV9zZXF1ZW5jZXMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3Qv
dGVzdF9pbnZhbGlkX2ZyYW1lX3NlcXVlbmNlcy5weQppbmRleCAxZjJmNmM3N2FhZTkuLjEyYjcw
YzRhNmJjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9mcmFtZV9zZXF1
ZW5jZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9mcmFtZV9zZXF1ZW5jZXMu
cHkKQEAgLTE0OSwxNCArMTQ5LDE2IEBAIGNsYXNzIFRlc3RJbnZhbGlkRnJhbWVTZXF1ZW5jZXMo
b2JqZWN0KToKICAgICAgICAgYy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSkKICAgICAgICAg
Yy5jbGVhcl9vdXRib3VuZF9kYXRhX2J1ZmZlcigpCiAKLSAgICAgICAgYmFkX2ZyYW1lID0gZnJh
bWVfZmFjdG9yeS5idWlsZF9kYXRhX2ZyYW1lKGRhdGE9YidoZWxsbycpCisgICAgICAgIGJhZF9m
cmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFtZSgKKyAgICAgICAgICAgIGRhdGE9
Yidzb21lIGRhdGEnCisgICAgICAgICkKICAgICAgICAgYy5yZWNlaXZlX2RhdGEoYmFkX2ZyYW1l
LnNlcmlhbGl6ZSgpKQogCi0gICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5i
dWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAorICAgICAgICBleHBlY3RlZCA9IGZyYW1lX2ZhY3Rvcnku
YnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKICAgICAgICAgICAgIHN0cmVhbV9pZD0xLAotICAgICAg
ICAgICAgZXJyb3JfY29kZT0weDUsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGMuZGF0YV90
b19zZW5kKCkgPT0gZXhwZWN0ZWRfZnJhbWUuc2VyaWFsaXplKCkKKyAgICAgICAgICAgIGVycm9y
X2NvZGU9aDIuZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRCwKKyAgICAgICAgKS5zZXJp
YWxpemUoKQorICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZAogCiAg
ICAgZGVmIHRlc3RfdW5leHBlY3RlZF9jb250aW51YXRpb25fb25fY2xvc2VkX3N0cmVhbShzZWxm
LCBmcmFtZV9mYWN0b3J5KToKICAgICAgICAgIiIiCkBAIC0yOTMsMTUgKzI5NSwxNSBAQCBjbGFz
cyBUZXN0SW52YWxpZEZyYW1lU2VxdWVuY2VzKG9iamVjdCk6CiAgICAgICAgIGMuY2xlYXJfb3V0
Ym91bmRfZGF0YV9idWZmZXIoKQogCiAgICAgICAgIGJhZF9mcmFtZSA9IGZyYW1lX2ZhY3Rvcnku
YnVpbGRfZGF0YV9mcmFtZSgKLSAgICAgICAgICAgIGRhdGE9YidoZWxsbycKKyAgICAgICAgICAg
IGRhdGE9Yidzb21lIGRhdGEnCiAgICAgICAgICkKICAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZl
X2RhdGEoYmFkX2ZyYW1lLnNlcmlhbGl6ZSgpKQogCi0gICAgICAgIGV4cGVjdGVkX2ZyYW1lID0g
ZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAorICAgICAgICBleHBlY3RlZCA9
IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKICAgICAgICAgICAgIHN0cmVh
bV9pZD0xLAotICAgICAgICAgICAgZXJyb3JfY29kZT0weDUsCi0gICAgICAgICkKLSAgICAgICAg
YXNzZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0ZWRfZnJhbWUuc2VyaWFsaXplKCkKKyAg
ICAgICAgICAgIGVycm9yX2NvZGU9aDIuZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRCwK
KyAgICAgICAgKS5zZXJpYWxpemUoKQorICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9
PSBleHBlY3RlZAogCiAgICAgICAgIGFzc2VydCBsZW4oZXZlbnRzKSA9PSAxCiAgICAgICAgIGV2
ZW50ID0gZXZlbnRzWzBdCkBAIC0zMjcsMTYgKzMyOSwxNiBAQCBjbGFzcyBUZXN0SW52YWxpZEZy
YW1lU2VxdWVuY2VzKG9iamVjdCk6CiAgICAgICAgIGMuY2xlYXJfb3V0Ym91bmRfZGF0YV9idWZm
ZXIoKQogCiAgICAgICAgIGJhZF9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFt
ZSgKLSAgICAgICAgICAgIGRhdGE9YidoZWxsbycKKyAgICAgICAgICAgIGRhdGE9Yidzb21lIGRh
dGEnCiAgICAgICAgICkKICAgICAgICAgIyBSZWNlaXZlIDUgZnJhbWVzLgogICAgICAgICBldmVu
dHMgPSBjLnJlY2VpdmVfZGF0YShiYWRfZnJhbWUuc2VyaWFsaXplKCkgKiA1KQogCi0gICAgICAg
IGV4cGVjdGVkX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAor
ICAgICAgICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgK
ICAgICAgICAgICAgIHN0cmVhbV9pZD0xLAotICAgICAgICAgICAgZXJyb3JfY29kZT0weDUsCi0g
ICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0ZWRfZnJh
bWUuc2VyaWFsaXplKCkgKiA1CisgICAgICAgICAgICBlcnJvcl9jb2RlPWgyLmVycm9ycy5FcnJv
ckNvZGVzLlNUUkVBTV9DTE9TRUQsCisgICAgICAgICkuc2VyaWFsaXplKCkKKyAgICAgICAgYXNz
ZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0ZWQgKiA1CiAKICAgICAgICAgYXNzZXJ0IGxl
bihldmVudHMpID09IDEKICAgICAgICAgZXZlbnQgPSBldmVudHNbMF0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvdGVzdC90ZXN0X2ludmFsaWRfaGVhZGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2lu
dmFsaWRfaGVhZGVycy5weQppbmRleCAxYTMxNWVlMjZhY2YuLmEzNzk5NTA3MzNkOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9oZWFkZXJzLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dGVzdC90ZXN0X2ludmFsaWRfaGVhZGVycy5weQpAQCAtNTQsNiArNTQsNyBAQCBjbGFzcyBUZXN0
SW52YWxpZEZyYW1lU2VxdWVuY2VzKG9iamVjdCk6CiAgICAgICAgIGJhc2VfcmVxdWVzdF9oZWFk
ZXJzICsgWygnbmFtZScsICd2YWx1ZSB3aXRoIHRyYWlsaW5nIHNwYWNlICcpXSwKICAgICAgICAg
W2hlYWRlciBmb3IgaGVhZGVyIGluIGJhc2VfcmVxdWVzdF9oZWFkZXJzCiAgICAgICAgICBpZiBo
ZWFkZXJbMF0gIT0gJzphdXRob3JpdHknXSwKKyAgICAgICAgWygnOnByb3RvY29sJywgJ3dlYnNv
Y2tldCcpXSArIGJhc2VfcmVxdWVzdF9oZWFkZXJzLAogICAgIF0KICAgICBzZXJ2ZXJfY29uZmln
ID0gaDIuY29uZmlnLkgyQ29uZmlndXJhdGlvbigKICAgICAgICAgY2xpZW50X3NpZGU9RmFsc2Us
IGhlYWRlcl9lbmNvZGluZz0ndXRmLTgnCkBAIC0yMDMsNyArMjA0LDcgQEAgY2xhc3MgVGVzdElu
dmFsaWRGcmFtZVNlcXVlbmNlcyhvYmplY3QpOgogICAgICAgICAjIFJhaXNlIGV4Y2VwdGlvbiBp
ZiBwc2V1ZG8gaGVhZGVyIGluIHRyYWlsZXIKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKGgy
LmV4Y2VwdGlvbnMuUHJvdG9jb2xFcnJvcikgYXMgZToKICAgICAgICAgICAgIGMucmVjZWl2ZV9k
YXRhKHRyYWlsZXIpCi0gICAgICAgIGFzc2VydCAicHNldWRvLWhlYWRlciBpbiB0cmFpbGVyIiBp
biBzdHIoZSkKKyAgICAgICAgYXNzZXJ0ICJwc2V1ZG8taGVhZGVyIGluIHRyYWlsZXIiIGluIHN0
cihlLnZhbHVlKQogCiAgICAgICAgICMgVGVzdCBhcHByb3ByaWF0ZSByZXNwb25zZSBmcmFtZSBp
cyBnZW5lcmF0ZWQKICAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBmcmFtZV9mYWN0b3J5LmJ1aWxk
X2dvYXdheV9mcmFtZSgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3NldHRpbmdzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rfc2V0dGluZ3MucHkKaW5kZXggMjE2M2JiOWI4ZDQ0Li5kMTlm
OTNhN2MyZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3NldHRpbmdzLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdGVzdC90ZXN0X3NldHRpbmdzLnB5CkBAIC0xMiw3ICsxMiw5IEBAIGltcG9ydCBo
Mi5leGNlcHRpb25zCiBpbXBvcnQgaDIuc2V0dGluZ3MKIAogZnJvbSBoeXBvdGhlc2lzIGltcG9y
dCBnaXZlbiwgYXNzdW1lCi1mcm9tIGh5cG90aGVzaXMuc3RyYXRlZ2llcyBpbXBvcnQgaW50ZWdl
cnMKK2Zyb20gaHlwb3RoZXNpcy5zdHJhdGVnaWVzIGltcG9ydCAoCisgICAgaW50ZWdlcnMsIGJv
b2xlYW5zLCBmaXhlZF9kaWN0aW9uYXJpZXMsIGJ1aWxkcworKQogCiAKIGNsYXNzIFRlc3RTZXR0
aW5ncyhvYmplY3QpOgpAQCAtMjksNiArMzEsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mob2JqZWN0
KToKICAgICAgICAgYXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9QVVNI
XSA9PSAxCiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5JTklUSUFM
X1dJTkRPV19TSVpFXSA9PSA2NTUzNQogICAgICAgICBhc3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0
aW5nQ29kZXMuTUFYX0ZSQU1FX1NJWkVdID09IDE2Mzg0CisgICAgICAgIGFzc2VydCBzW2gyLnNl
dHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTF0gPT0gMAogCiAgICAg
ZGVmIHRlc3Rfc2V0dGluZ3NfZGVmYXVsdHNfc2VydmVyKHNlbGYpOgogICAgICAgICAiIiIKQEAg
LTQwLDYgKzQzLDcgQEAgY2xhc3MgVGVzdFNldHRpbmdzKG9iamVjdCk6CiAgICAgICAgIGFzc2Vy
dCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfUFVTSF0gPT0gMAogICAgICAgICBh
c3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuSU5JVElBTF9XSU5ET1dfU0laRV0gPT0g
NjU1MzUKICAgICAgICAgYXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9GUkFN
RV9TSVpFXSA9PSAxNjM4NAorICAgICAgICBhc3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0aW5nQ29k
ZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xdID09IDAKIAogICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgnY2xpZW50JywgW1RydWUsIEZhbHNlXSkKICAgICBkZWYgdGVzdF9jYW5fc2V0X2lu
aXRpYWxfdmFsdWVzKHNlbGYsIGNsaWVudCk6CkBAIC01Miw2ICs1Niw3IEBAIGNsYXNzIFRlc3RT
ZXR0aW5ncyhvYmplY3QpOgogICAgICAgICAgICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1B
WF9GUkFNRV9TSVpFOiAxNjM4OCwKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rl
cy5NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOiAxMDAsCiAgICAgICAgICAgICBoMi5zZXR0aW5ncy5T
ZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkU6IDIqKjE2LAorICAgICAgICAgICAgaDIu
c2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MOiAxLAogICAgICAg
ICB9CiAgICAgICAgIHMgPSBoMi5zZXR0aW5ncy5TZXR0aW5ncyhjbGllbnQ9Y2xpZW50LCBpbml0
aWFsX3ZhbHVlcz1vdmVycmlkZXMpCiAKQEAgLTYxLDYgKzY2LDcgQEAgY2xhc3MgVGVzdFNldHRp
bmdzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5N
QVhfRlJBTUVfU0laRV0gPT0gMTYzODgKICAgICAgICAgYXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0
dGluZ0NvZGVzLk1BWF9DT05DVVJSRU5UX1NUUkVBTVNdID09IDEwMAogICAgICAgICBhc3NlcnQg
c1toMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkVdID09IDIqKjE2
CisgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVD
VF9QUk9UT0NPTF0gPT0gMQogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAgICAg
ICAnc2V0dGluZyx2YWx1ZScsCkBAIC03Miw2ICs3OCw3IEBAIGNsYXNzIFRlc3RTZXR0aW5ncyhv
YmplY3QpOgogICAgICAgICAgICAgKGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5NQVhfRlJBTUVf
U0laRSwgMSksCiAgICAgICAgICAgICAoaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9GUkFN
RV9TSVpFLCAyKiozMCksCiAgICAgICAgICAgICAoaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1B
WF9IRUFERVJfTElTVF9TSVpFLCAtMSksCisgICAgICAgICAgICAoaDIuc2V0dGluZ3MuU2V0dGlu
Z0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MLCAtMSksCiAgICAgICAgIF0KICAgICApCiAg
ICAgZGVmIHRlc3RfY2Fubm90X3NldF9pbnZhbGlkX2luaXRpYWxfdmFsdWVzKHNlbGYsIHNldHRp
bmcsIHZhbHVlKToKQEAgLTEwNiw2ICsxMTMsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mob2JqZWN0
KToKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfUFVTSDogMCwK
ICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5JTklUSUFMX1dJTkRPV19TSVpF
OiA2MCwKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5NQVhfRlJBTUVfU0la
RTogMTYzODUsCisgICAgICAgICAgICBoMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuRU5BQkxFX0NP
Tk5FQ1RfUFJPVE9DT0w6IDEsCiAgICAgICAgIH0KICAgICAgICAgcy51cGRhdGUobmV3X3NldHRp
bmdzKQogCkBAIC0xNjksMTYgKzE3NywxNiBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mob2JqZWN0KToK
ICAgICAgICAgTGVuZ3RoIGlzIHJlbGF0ZWQgb25seSB0byB0aGUgbnVtYmVyIG9mIGtleXMuCiAg
ICAgICAgICIiIgogICAgICAgICBzID0gaDIuc2V0dGluZ3MuU2V0dGluZ3MoY2xpZW50PVRydWUp
Ci0gICAgICAgIGFzc2VydCBsZW4ocykgPT0gNAorICAgICAgICBhc3NlcnQgbGVuKHMpID09IDUK
IAogICAgICAgICBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5IRUFERVJfVEFCTEVfU0laRV0g
PT0gODAwMAotICAgICAgICBhc3NlcnQgbGVuKHMpID09IDQKKyAgICAgICAgYXNzZXJ0IGxlbihz
KSA9PSA1CiAKICAgICAgICAgcy5hY2tub3dsZWRnZSgpCi0gICAgICAgIGFzc2VydCBsZW4ocykg
PT0gNAorICAgICAgICBhc3NlcnQgbGVuKHMpID09IDUKIAogICAgICAgICBkZWwgc1toMi5zZXR0
aW5ncy5TZXR0aW5nQ29kZXMuSEVBREVSX1RBQkxFX1NJWkVdCi0gICAgICAgIGFzc2VydCBsZW4o
cykgPT0gMworICAgICAgICBhc3NlcnQgbGVuKHMpID09IDQKIAogICAgIGRlZiB0ZXN0X25ld192
YWx1ZXNfd29yayhzZWxmKToKICAgICAgICAgIiIiCkBAIC0yMzIsNiArMjQwLDkgQEAgY2xhc3Mg
VGVzdFNldHRpbmdzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBzLm1heF9mcmFtZV9zaXplID09
IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9GUkFNRV9TSVpFXQogICAgICAgICBhc3Nl
cnQgcy5tYXhfY29uY3VycmVudF9zdHJlYW1zID09IDIqKjMyICsgMSAgIyBBIHNlbnNpYmxlIGRl
ZmF1bHQuCiAgICAgICAgIGFzc2VydCBzLm1heF9oZWFkZXJfbGlzdF9zaXplIGlzIE5vbmUKKyAg
ICAgICAgYXNzZXJ0IHMuZW5hYmxlX2Nvbm5lY3RfcHJvdG9jb2wgPT0gc1sKKyAgICAgICAgICAg
IGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTAorICAgICAg
ICBdCiAKICAgICBkZWYgdGVzdF9zZXR0aW5nc19zZXR0ZXJzKHNlbGYpOgogICAgICAgICAiIiIK
QEAgLTI0NSw2ICsyNTYsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mob2JqZWN0KToKICAgICAgICAg
cy5tYXhfZnJhbWVfc2l6ZSA9IDE2Mzg1CiAgICAgICAgIHMubWF4X2NvbmN1cnJlbnRfc3RyZWFt
cyA9IDQKICAgICAgICAgcy5tYXhfaGVhZGVyX2xpc3Rfc2l6ZSA9IDIqKjE2CisgICAgICAgIHMu
ZW5hYmxlX2Nvbm5lY3RfcHJvdG9jb2wgPSAxCiAKICAgICAgICAgcy5hY2tub3dsZWRnZSgpCiAg
ICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5IRUFERVJfVEFCTEVfU0la
RV0gPT0gMApAQCAtMjUzLDYgKzI2NSw3IEBAIGNsYXNzIFRlc3RTZXR0aW5ncyhvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0ZSQU1FX1NJWkVd
ID09IDE2Mzg1CiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5NQVhf
Q09OQ1VSUkVOVF9TVFJFQU1TXSA9PSA0CiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNl
dHRpbmdDb2Rlcy5NQVhfSEVBREVSX0xJU1RfU0laRV0gPT0gMioqMTYKKyAgICAgICAgYXNzZXJ0
IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MXSA9PSAx
CiAKICAgICBAZ2l2ZW4oaW50ZWdlcnMoKSkKICAgICBkZWYgdGVzdF9jYW5ub3Rfc2V0X2ludmFs
aWRfdmFsdWVzX2Zvcl9lbmFibGVfcHVzaChzZWxmLCB2YWwpOgpAQCAtMzYxLDEzMSArMzc0LDk3
IEBAIGNsYXNzIFRlc3RTZXR0aW5ncyhvYmplY3QpOgogICAgICAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgICAgICBzW2gyLnNldHRpbmdzLlNldHRpbmdD
b2Rlcy5NQVhfSEVBREVSX0xJU1RfU0laRV0KIAotCi1jbGFzcyBUZXN0U2V0dGluZ3NFcXVhbGl0
eShvYmplY3QpOgotICAgICIiIgotICAgIEEgY2xhc3MgZGVmaW5pbmcgdGVzdHMgZm9yIHRoZSBz
dGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiA9PSBhbmQgIT0gLgotICAgICIiIgotCi0gICAgZGVm
IGFuX2luc3RhbmNlKHNlbGYpOgorICAgIEBnaXZlbihpbnRlZ2VycygpKQorICAgIGRlZiB0ZXN0
X2Nhbm5vdF9zZXRfaW52YWxpZF92YWx1ZXNfZm9yX2VuYWJsZV9jb25uZWN0X3Byb3RvY29sKHNl
bGYsIHZhbCk6CiAgICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhl
IGNsYXNzIHVuZGVyIHRlc3QuICBFYWNoIGNhbGwgdG8gdGhpcyBtZXRob2QKLSAgICAgICAgbXVz
dCByZXR1cm4gYSBkaWZmZXJlbnQgb2JqZWN0LiAgQWxsIG9iamVjdHMgcmV0dXJuZWQgbXVzdCBi
ZSBlcXVhbCB0bwotICAgICAgICBlYWNoIG90aGVyLgorICAgICAgICBTRVRUSU5HU19FTkFCTEVf
Q09OTkVDVF9QUk9UT0NPTCBvbmx5IGFsbG93cyB0d28gdmFsdWVzOiAwLCAxLgogICAgICAgICAi
IiIKLSAgICAgICAgb3ZlcnJpZGVzID0gewotICAgICAgICAgICAgaDIuc2V0dGluZ3MuU2V0dGlu
Z0NvZGVzLkhFQURFUl9UQUJMRV9TSVpFOiAwLAotICAgICAgICAgICAgaDIuc2V0dGluZ3MuU2V0
dGluZ0NvZGVzLk1BWF9GUkFNRV9TSVpFOiAxNjM4NCwKLSAgICAgICAgICAgIGgyLnNldHRpbmdz
LlNldHRpbmdDb2Rlcy5NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOiA0LAotICAgICAgICAgICAgaDIu
c2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9IRUFERVJfTElTVF9TSVpFOiAyKioxNiwKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gaDIuc2V0dGluZ3MuU2V0dGluZ3MoY2xpZW50PVRydWUsIGlu
aXRpYWxfdmFsdWVzPW92ZXJyaWRlcykKKyAgICAgICAgYXNzdW1lKHZhbCBub3QgaW4gKDAsIDEp
KQorICAgICAgICBzID0gaDIuc2V0dGluZ3MuU2V0dGluZ3MoKQogCi0gICAgZGVmIGFub3RoZXJf
aW5zdGFuY2Uoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYW4gaW5zdGFuY2Ug
b2YgdGhlIGNsYXNzIHVuZGVyIHRlc3QuICBFYWNoIGNhbGwgdG8gdGhpcyBtZXRob2QKLSAgICAg
ICAgbXVzdCByZXR1cm4gYSBkaWZmZXJlbnQgb2JqZWN0LiAgVGhlIG9iamVjdHMgbXVzdCBub3Qg
YmUgZXF1YWwgdG8gdGhlCi0gICAgICAgIG9iamVjdHMgcmV0dXJuZWQgYnkgYW5faW5zdGFuY2Uu
ICBUaGV5IG1heSBvciBtYXkgbm90IGJlIGVxdWFsIHRvCi0gICAgICAgIGVhY2ggb3RoZXIgKHRo
ZXkgd2lsbCBub3QgYmUgY29tcGFyZWQgYWdhaW5zdCBlYWNoIG90aGVyKS4KLSAgICAgICAgIiIi
Ci0gICAgICAgIG92ZXJyaWRlcyA9IHsKLSAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdD
b2Rlcy5IRUFERVJfVEFCTEVfU0laRTogODA4MCwKLSAgICAgICAgICAgIGgyLnNldHRpbmdzLlNl
dHRpbmdDb2Rlcy5NQVhfRlJBTUVfU0laRTogMTYzODgsCi0gICAgICAgICAgICBoMi5zZXR0aW5n
cy5TZXR0aW5nQ29kZXMuTUFYX0NPTkNVUlJFTlRfU1RSRUFNUzogMTAwLAotICAgICAgICAgICAg
aDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9IRUFERVJfTElTVF9TSVpFOiAyKioxNiwKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gaDIuc2V0dGluZ3MuU2V0dGluZ3MoY2xpZW50PUZhbHNl
LCBpbml0aWFsX3ZhbHVlcz1vdmVycmlkZXMpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyho
Mi5leGNlcHRpb25zLkludmFsaWRTZXR0aW5nc1ZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAg
ICBzLmVuYWJsZV9jb25uZWN0X3Byb3RvY29sID0gdmFsCiAKLSAgICBkZWYgdGVzdF9pZGVudGlj
YWxfZXEoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBBbiBvYmplY3QgY29tcGFyZXMgZXF1
YWwgdG8gaXRzZWxmIHVzaW5nIHRoZSA9PSBvcGVyYXRvci4KLSAgICAgICAgIiIiCi0gICAgICAg
IG8gPSBzZWxmLmFuX2luc3RhbmNlKCkKLSAgICAgICAgYXNzZXJ0IChvID09IG8pCisgICAgICAg
IHMuYWNrbm93bGVkZ2UoKQorICAgICAgICBhc3NlcnQgZS52YWx1ZS5lcnJvcl9jb2RlID09IGgy
LmVycm9ycy5FcnJvckNvZGVzLlBST1RPQ09MX0VSUk9SCisgICAgICAgIGFzc2VydCBzLmVuYWJs
ZV9jb25uZWN0X3Byb3RvY29sID09IDAKIAotICAgIGRlZiB0ZXN0X2lkZW50aWNhbF9uZShzZWxm
KToKLSAgICAgICAgIiIiCi0gICAgICAgIEFuIG9iamVjdCBkb2Vzbid0IGNvbXBhcmUgbm90IGVx
dWFsIHRvIGl0c2VsZiB1c2luZyB0aGUgIT0gb3BlcmF0b3IuCi0gICAgICAgICIiIgotICAgICAg
ICBvID0gc2VsZi5hbl9pbnN0YW5jZSgpCi0gICAgICAgIGFzc2VydCBub3QgKG8gIT0gbykKKyAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKGgyLmV4Y2VwdGlvbnMuSW52YWxpZFNldHRpbmdzVmFs
dWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgIHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVO
QUJMRV9DT05ORUNUX1BST1RPQ09MXSA9IHZhbAogCi0gICAgZGVmIHRlc3Rfc2FtZV9lcShzZWxm
KToKLSAgICAgICAgIiIiCi0gICAgICAgIFR3byBvYmplY3RzIHRoYXQgYXJlIGVxdWFsIHRvIGVh
Y2ggb3RoZXIgY29tcGFyZSBlcXVhbCB0byBlYWNoIG90aGVyCi0gICAgICAgIHVzaW5nIHRoZSA9
PSBvcGVyYXRvci4KLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBzZWxmLmFuX2luc3RhbmNlKCkK
LSAgICAgICAgYiA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBhc3NlcnQgKGEgPT0gYikK
KyAgICAgICAgcy5hY2tub3dsZWRnZSgpCisgICAgICAgIGFzc2VydCBlLnZhbHVlLmVycm9yX2Nv
ZGUgPT0gaDIuZXJyb3JzLkVycm9yQ29kZXMuUFJPVE9DT0xfRVJST1IKKyAgICAgICAgYXNzZXJ0
IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MXSA9PSAw
CiAKLSAgICBkZWYgdGVzdF9zYW1lX25lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVHdv
IG9iamVjdHMgdGhhdCBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlciBkbyBub3QgY29tcGFyZSBub3Qg
ZXF1YWwgdG8KLSAgICAgICAgZWFjaCBvdGhlciB1c2luZyB0aGUgIT0gb3BlcmF0b3IuCi0gICAg
ICAgICIiIgotICAgICAgICBhID0gc2VsZi5hbl9pbnN0YW5jZSgpCi0gICAgICAgIGIgPSBzZWxm
LmFuX2luc3RhbmNlKCkKLSAgICAgICAgYXNzZXJ0IG5vdCAoYSAhPSBiKQogCi0gICAgZGVmIHRl
c3RfZGlmZmVyZW50X2VxKHNlbGYpOgorY2xhc3MgVGVzdFNldHRpbmdzRXF1YWxpdHkob2JqZWN0
KToKKyAgICAiIiIKKyAgICBBIGNsYXNzIGRlZmluaW5nIHRlc3RzIGZvciB0aGUgc3RhbmRhcmQg
aW1wbGVtZW50YXRpb24gb2YgPT0gYW5kICE9IC4KKyAgICAiIiIKKworICAgIFNldHRpbmdzU3Ry
YXRlZ3kgPSBidWlsZHMoCisgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdzLAorICAgICAgICBj
bGllbnQ9Ym9vbGVhbnMoKSwKKyAgICAgICAgaW5pdGlhbF92YWx1ZXM9Zml4ZWRfZGljdGlvbmFy
aWVzKHsKKyAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5IRUFERVJfVEFCTEVf
U0laRToKKyAgICAgICAgICAgICAgICBpbnRlZ2VycygwLCAyKiozMiAtIDEpLAorICAgICAgICAg
ICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9QVVNIOiBpbnRlZ2VycygwLCAxKSwK
KyAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5JTklUSUFMX1dJTkRPV19TSVpF
OgorICAgICAgICAgICAgICAgIGludGVnZXJzKDAsIDIqKjMxIC0gMSksCisgICAgICAgICAgICBo
Mi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0ZSQU1FX1NJWkU6CisgICAgICAgICAgICAgICAg
aW50ZWdlcnMoMioqMTQsIDIqKjI0IC0gMSksCisgICAgICAgICAgICBoMi5zZXR0aW5ncy5TZXR0
aW5nQ29kZXMuTUFYX0NPTkNVUlJFTlRfU1RSRUFNUzoKKyAgICAgICAgICAgICAgICBpbnRlZ2Vy
cygwLCAyKiozMiAtIDEpLAorICAgICAgICAgICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1B
WF9IRUFERVJfTElTVF9TSVpFOgorICAgICAgICAgICAgICAgIGludGVnZXJzKDAsIDIqKjMyIC0g
MSksCisgICAgICAgIH0pCisgICAgKQorCisgICAgQGdpdmVuKHNldHRpbmdzPVNldHRpbmdzU3Ry
YXRlZ3kpCisgICAgZGVmIHRlc3RfZXF1YWxpdHlfcmVmbGV4aXZlKHNlbGYsIHNldHRpbmdzKToK
ICAgICAgICAgIiIiCi0gICAgICAgIFR3byBvYmplY3RzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byBl
YWNoIG90aGVyIGRvIG5vdCBjb21wYXJlIGVxdWFsIHRvCi0gICAgICAgIGVhY2ggb3RoZXIgdXNp
bmcgdGhlID09IG9wZXJhdG9yLgorICAgICAgICBBbiBvYmplY3QgY29tcGFyZXMgZXF1YWwgdG8g
aXRzZWxmIHVzaW5nIHRoZSA9PSBvcGVyYXRvciBhbmQgdGhlICE9CisgICAgICAgIG9wZXJhdG9y
LgogICAgICAgICAiIiIKLSAgICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBi
ID0gc2VsZi5hbm90aGVyX2luc3RhbmNlKCkKLSAgICAgICAgYXNzZXJ0IG5vdCAoYSA9PSBiKQor
ICAgICAgICBhc3NlcnQgKHNldHRpbmdzID09IHNldHRpbmdzKQorICAgICAgICBhc3NlcnQgbm90
IChzZXR0aW5ncyAhPSBzZXR0aW5ncykKIAotICAgIGRlZiB0ZXN0X2RpZmZlcmVudF9uZShzZWxm
KToKKyAgICBAZ2l2ZW4oc2V0dGluZ3M9U2V0dGluZ3NTdHJhdGVneSwgb19zZXR0aW5ncz1TZXR0
aW5nc1N0cmF0ZWd5KQorICAgIGRlZiB0ZXN0X2VxdWFsaXR5X211bHRpcGxlKHNlbGYsIHNldHRp
bmdzLCBvX3NldHRpbmdzKToKICAgICAgICAgIiIiCi0gICAgICAgIFR3byBvYmplY3RzIHRoYXQg
YXJlIG5vdCBlcXVhbCB0byBlYWNoIG90aGVyIGNvbXBhcmUgbm90IGVxdWFsIHRvIGVhY2gKLSAg
ICAgICAgb3RoZXIgdXNpbmcgdGhlICE9IG9wZXJhdG9yLgorICAgICAgICBUd28gb2JqZWN0cyBj
b21wYXJlIHRoZW1zZWx2ZXMgdXNpbmcgdGhlID09IG9wZXJhdG9yIGFuZCB0aGUgIT0KKyAgICAg
ICAgb3BlcmF0b3IuCiAgICAgICAgICIiIgotICAgICAgICBhID0gc2VsZi5hbl9pbnN0YW5jZSgp
Ci0gICAgICAgIGIgPSBzZWxmLmFub3RoZXJfaW5zdGFuY2UoKQotICAgICAgICBhc3NlcnQgKGEg
IT0gYikKKyAgICAgICAgaWYgc2V0dGluZ3MgPT0gb19zZXR0aW5nczoKKyAgICAgICAgICAgIGFz
c2VydCBzZXR0aW5ncyA9PSBvX3NldHRpbmdzCisgICAgICAgICAgICBhc3NlcnQgbm90IChzZXR0
aW5ncyAhPSBvX3NldHRpbmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IHNl
dHRpbmdzICE9IG9fc2V0dGluZ3MKKyAgICAgICAgICAgIGFzc2VydCBub3QgKHNldHRpbmdzID09
IG9fc2V0dGluZ3MpCiAKLSAgICBkZWYgdGVzdF9hbm90aGVyX3R5cGVfZXEoc2VsZik6CisgICAg
QGdpdmVuKHNldHRpbmdzPVNldHRpbmdzU3RyYXRlZ3kpCisgICAgZGVmIHRlc3RfYW5vdGhlcl90
eXBlX2VxdWFsaXR5KHNlbGYsIHNldHRpbmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoZSBv
YmplY3QgZG9lcyBub3QgY29tcGFyZSBlcXVhbCB0byBhbiBvYmplY3Qgb2YgYW4gdW5yZWxhdGVk
IHR5cGUKICAgICAgICAgKHdoaWNoIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY29tcGFyaXNvbikg
dXNpbmcgdGhlID09IG9wZXJhdG9yLgogICAgICAgICAiIiIKLSAgICAgICAgYSA9IHNlbGYuYW5f
aW5zdGFuY2UoKQotICAgICAgICBiID0gb2JqZWN0KCkKLSAgICAgICAgYXNzZXJ0IG5vdCAoYSA9
PSBiKQorICAgICAgICBvYmogPSBvYmplY3QoKQorICAgICAgICBhc3NlcnQgKHNldHRpbmdzICE9
IG9iaikKKyAgICAgICAgYXNzZXJ0IG5vdCAoc2V0dGluZ3MgPT0gb2JqKQogCi0gICAgZGVmIHRl
c3RfYW5vdGhlcl90eXBlX25lKHNlbGYpOgorICAgIEBnaXZlbihzZXR0aW5ncz1TZXR0aW5nc1N0
cmF0ZWd5KQorICAgIGRlZiB0ZXN0X2RlbGVnYXRlZF9lcShzZWxmLCBzZXR0aW5ncyk6CiAgICAg
ICAgICIiIgotICAgICAgICBUaGUgb2JqZWN0IGNvbXBhcmVzIG5vdCBlcXVhbCB0byBhbiBvYmpl
Y3Qgb2YgYW4gdW5yZWxhdGVkIHR5cGUgKHdoaWNoCi0gICAgICAgIGRvZXMgbm90IGltcGxlbWVu
dCB0aGUgY29tcGFyaXNvbikgdXNpbmcgdGhlICE9IG9wZXJhdG9yLgotICAgICAgICAiIiIKLSAg
ICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBiID0gb2JqZWN0KCkKLSAgICAg
ICAgYXNzZXJ0IChhICE9IGIpCi0KLSAgICBkZWYgdGVzdF9kZWxlZ2F0ZWRfZXEoc2VsZik6Ci0g
ICAgICAgICIiIgotICAgICAgICBUaGUgcmVzdWx0IG9mIGNvbXBhcmlzb24gdXNpbmcgPT0gaXMg
ZGVsZWdhdGVkIHRvIHRoZSByaWdodC1oYW5kCi0gICAgICAgIG9wZXJhbmQgaWYgaXQgaXMgb2Yg
YW4gdW5yZWxhdGVkIHR5cGUuCisgICAgICAgIFRoZSByZXN1bHQgb2YgY29tcGFyaXNvbiBpcyBk
ZWxlZ2F0ZWQgdG8gdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpZgorICAgICAgICBpdCBpcyBvZiBh
biB1bnJlbGF0ZWQgdHlwZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNsYXNzIERlbGVnYXRlKG9i
amVjdCk6CiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAg
ICAgICByZXR1cm4gW3NlbGZdCiAKLSAgICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAg
ICAgICBiID0gRGVsZWdhdGUoKQotICAgICAgICBhc3NlcnQgKGEgPT0gYikgPT0gW2JdCi0KLSAg
ICBkZWYgdGVzdF9kZWxlZ2F0ZV9uZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBy
ZXN1bHQgb2YgY29tcGFyaXNvbiB1c2luZyAhPSBpcyBkZWxlZ2F0ZWQgdG8gdGhlIHJpZ2h0LWhh
bmQKLSAgICAgICAgb3BlcmFuZCBpZiBpdCBpcyBvZiBhbiB1bnJlbGF0ZWQgdHlwZS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGNsYXNzIERlbGVnYXRlKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYg
X19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGZdCiAKLSAg
ICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBiID0gRGVsZWdhdGUoKQotICAg
ICAgICBhc3NlcnQgKGEgIT0gYikgPT0gW2JdCisgICAgICAgIGRlbGcgPSBEZWxlZ2F0ZSgpCisg
ICAgICAgIGFzc2VydCAoc2V0dGluZ3MgPT0gZGVsZykgPT0gW2RlbGddCisgICAgICAgIGFzc2Vy
dCAoc2V0dGluZ3MgIT0gZGVsZykgPT0gW2RlbGddCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3Qv
dGVzdF9zdHJlYW1fcmVzZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zdHJlYW1fcmVzZXQucHkK
aW5kZXggMDg4ODZlOGUzZWQyLi43Nzg0NDU1MTVmYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVz
dC90ZXN0X3N0cmVhbV9yZXNldC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zdHJlYW1fcmVz
ZXQucHkKQEAgLTcwLDggKzcwLDggQEAgY2xhc3MgVGVzdFN0cmVhbVJlc2V0KG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVy
X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZV9mYWN0b3J5KToKICAgICAgICAgIiIiCi0gICAgICAgIEEgc3RyZWFtIHRoYXQgaGFz
IGJlZW4gcmVzZXQgc3RpbGwgYWZmZWN0cyB0aGUgY29ubmVjdGlvbiBmbG93IGNvbnRyb2wKLSAg
ICAgICAgd2luZG93LgorICAgICAgICBBIHN0cmVhbSB0aGF0IGhhcyBiZWVuIHJlc2V0IGRvZXMg
bm90IGFmZmVjdCB0aGUgY29ubmVjdGlvbiBmbG93CisgICAgICAgIGNvbnRyb2wgd2luZG93Lgog
ICAgICAgICAiIiIKICAgICAgICAgYyA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKCkKICAg
ICAgICAgYy5pbml0aWF0ZV9jb25uZWN0aW9uKCkKQEAgLTg5LDE5ICs4OSwxOSBAQCBjbGFzcyBU
ZXN0U3RyZWFtUmVzZXQob2JqZWN0KToKICAgICAgICAgYy5jbGVhcl9vdXRib3VuZF9kYXRhX2J1
ZmZlcigpCiAKICAgICAgICAgZiA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFtZSgKLSAg
ICAgICAgICAgIGRhdGE9Yidzb21lIGRhdGEhJywKKyAgICAgICAgICAgIGRhdGE9Yidzb21lIGRh
dGEnLAogICAgICAgICAgICAgc3RyZWFtX2lkPWNsb3NlX2lkCiAgICAgICAgICkKLSAgICAgICAg
ZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSkKKyAgICAgICAgYy5yZWNlaXZl
X2RhdGEoZi5zZXJpYWxpemUoKSkKIAotICAgICAgICByc3RfZnJhbWUgPSBmcmFtZV9mYWN0b3J5
LmJ1aWxkX3JzdF9zdHJlYW1fZnJhbWUoCi0gICAgICAgICAgICBjbG9zZV9pZCwgaDIuZXJyb3Jz
LkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRAotICAgICAgICApCi0gICAgICAgIGFzc2VydCBub3Qg
ZXZlbnRzCi0gICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IHJzdF9mcmFtZS5zZXJp
YWxpemUoKQorICAgICAgICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVh
bV9mcmFtZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1jbG9zZV9pZCwKKyAgICAgICAgICAgIGVy
cm9yX2NvZGU9aDIuZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRCwKKyAgICAgICAgKS5z
ZXJpYWxpemUoKQorICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZAog
CiAgICAgICAgIG5ld193aW5kb3cgPSBjLnJlbW90ZV9mbG93X2NvbnRyb2xfd2luZG93KHN0cmVh
bV9pZD1vdGhlcl9pZCkKLSAgICAgICAgYXNzZXJ0IGluaXRpYWxfd2luZG93IC0gbGVuKGInc29t
ZSBkYXRhIScpID09IG5ld193aW5kb3cKKyAgICAgICAgYXNzZXJ0IGluaXRpYWxfd2luZG93IC0g
bGVuKGInc29tZSBkYXRhJykgPT0gbmV3X3dpbmRvdwogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCdjbGVhcl9zdHJlYW1zJywgW1RydWUsIEZhbHNlXSkKICAgICBkZWYgdGVzdF9yZXNl
dF9zdHJlYW1fYXV0b21hdGljYWxseV9yZXNldHNfcHVzaGVkX3N0cmVhbXMoc2VsZiwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90
ZXN0L3Rlc3RfdXRpbGl0eV9mdW5jdGlvbnMucHkKaW5kZXggNjFkNTI3ZjY4OGJhLi40Y2IwYjJh
ZTYwODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5CkBAIC0xMiw3ICsx
Miw3IEBAIGltcG9ydCBoMi5jb25uZWN0aW9uCiBpbXBvcnQgaDIuZXJyb3JzCiBpbXBvcnQgaDIu
ZXZlbnRzCiBpbXBvcnQgaDIuZXhjZXB0aW9ucwotZnJvbSBoMi51dGlsaXRpZXMgaW1wb3J0IGV4
dHJhY3RfbWV0aG9kX2hlYWRlcgorZnJvbSBoMi51dGlsaXRpZXMgaW1wb3J0IFNpemVMaW1pdERp
Y3QsIGV4dHJhY3RfbWV0aG9kX2hlYWRlcgogCiAjIFRoZXNlIHRlc3RzIHJlcXVpcmUgYSBub24t
bGlzdC1yZXR1cm5pbmcgcmFuZ2UgZnVuY3Rpb24uCiB0cnk6CkBAIC0xNzYsMyArMTc2LDUxIEBA
IGNsYXNzIFRlc3RFeHRyYWN0SGVhZGVyKG9iamVjdCk6CiAgICAgKQogICAgIGRlZiB0ZXN0X2V4
dHJhY3RfaGVhZGVyX21ldGhvZChzZWxmLCBoZWFkZXJzKToKICAgICAgICAgYXNzZXJ0IGV4dHJh
Y3RfbWV0aG9kX2hlYWRlcihoZWFkZXJzKSA9PSBiJ0dFVCcKKworCitkZWYgdGVzdF9zaXplX2xp
bWl0X2RpY3RfbGltaXQoKToKKyAgICBkY3QgPSBTaXplTGltaXREaWN0KHNpemVfbGltaXQ9MikK
KworICAgIGRjdFsxXSA9IDEKKyAgICBkY3RbMl0gPSAyCisKKyAgICBhc3NlcnQgbGVuKGRjdCkg
PT0gMgorICAgIGFzc2VydCBkY3RbMV0gPT0gMQorICAgIGFzc2VydCBkY3RbMl0gPT0gMgorCisg
ICAgZGN0WzNdID0gMworCisgICAgYXNzZXJ0IGxlbihkY3QpID09IDIKKyAgICBhc3NlcnQgZGN0
WzJdID09IDIKKyAgICBhc3NlcnQgZGN0WzNdID09IDMKKyAgICBhc3NlcnQgMSBub3QgaW4gZGN0
CisKKworZGVmIHRlc3Rfc2l6ZV9saW1pdF9kaWN0X2xpbWl0X2luaXQoKToKKyAgICBpbml0aWFs
X2RjdCA9IHsKKyAgICAgICAgMTogMSwKKyAgICAgICAgMjogMiwKKyAgICAgICAgMzogMywKKyAg
ICB9CisKKyAgICBkY3QgPSBTaXplTGltaXREaWN0KGluaXRpYWxfZGN0LCBzaXplX2xpbWl0PTIp
CisKKyAgICBhc3NlcnQgbGVuKGRjdCkgPT0gMgorCisKK2RlZiB0ZXN0X3NpemVfbGltaXRfZGlj
dF9ub19saW1pdCgpOgorICAgIGRjdCA9IFNpemVMaW1pdERpY3Qoc2l6ZV9saW1pdD1Ob25lKQor
CisgICAgZGN0WzFdID0gMQorICAgIGRjdFsyXSA9IDIKKworICAgIGFzc2VydCBsZW4oZGN0KSA9
PSAyCisgICAgYXNzZXJ0IGRjdFsxXSA9PSAxCisgICAgYXNzZXJ0IGRjdFsyXSA9PSAyCisKKyAg
ICBkY3RbM10gPSAzCisKKyAgICBhc3NlcnQgbGVuKGRjdCkgPT0gMworICAgIGFzc2VydCBkY3Rb
MV0gPT0gMQorICAgIGFzc2VydCBkY3RbMl0gPT0gMgorICAgIGFzc2VydCBkY3RbM10gPT0gMwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmVjZTVhNjIyZmEu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSw0MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvY29uZnRlc3QucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL3Rlc3QvY29yb3V0aW5lX3Rlc3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L2hlbHBlcnMu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9iYXNpY19sb2dpYy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0
X2Nsb3NlZF9zdHJlYW1zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY29tcGxleF9sb2dpYy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdGVzdC90ZXN0X2NvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V2ZW50cy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9m
bG93X2NvbnRyb2xfd2luZG93LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaDJfdXBncmFkZS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdGVzdC90ZXN0X2hlYWRfcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2hl
YWRlcl9pbmRleGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2luZm9ybWF0aW9uYWxfcmVzcG9u
c2VzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW50ZXJhY3Rpbmdfc3RhY2tzLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi90ZXN0L3Rlc3RfaW52YWxpZF9jb250ZW50X2xlbmd0aHMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVz
dF9pbnZhbGlkX2ZyYW1lX3NlcXVlbmNlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2ludmFsaWRf
aGVhZGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3ByaW9yaXR5LnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0
L3Rlc3RfcmVsYXRlZF9ldmVudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9yZmM3ODM4LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi90ZXN0L3Rlc3Rfc2V0dGluZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zdGF0ZV9t
YWNoaW5lcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3N0cmVhbV9yZXNldC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3Rf
cmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdF9yZXF1aXJlbWVudHMudHh0CmluZGV4IDM1
YmNiYzJmMDkxYS4uZTBlZWZhMjhhY2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3RfcmVxdWly
ZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3RfcmVxdWlyZW1lbnRzLnR4dApAQCAtMSw1ICsx
LDUgQEAKLXB5dGVzdD09My4wLjcKLXB5dGVzdC1jb3Y9PTIuNC4wCi1jb3ZlcmFnZT09NC4zLjQK
LXB5dGVzdC14ZGlzdD09MS4xNS4wCi1oeXBvdGhlc2lzPT0zLjcuMAorcHl0ZXN0PT00LjYuNSAg
IyBycS5maWx0ZXI6IDwgNQorcHl0ZXN0LWNvdj09Mi44LjEKK3B5dGVzdC14ZGlzdD09MS4zMS4w
Citjb3ZlcmFnZT09NC41LjQKK2h5cG90aGVzaXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdG94Lmlu
aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdG94LmluaQppbmRleCBhM2Q2YzRhNzg1YjEuLjk3MWY5YTA3ZTkzYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi90b3guaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdG94LmluaQpAQCAtMSwzNyAr
MSwyNCBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3LCBweTMzLCBweTM0LCBweTM1LCBweTM2LCBw
eXB5LCBsaW50LCBwYWNrYWdpbmcsIGRvY3MKK2Vudmxpc3QgPSBweTI3LCBweTM0LCBweTM1LCBw
eTM2LCBweTM3LCBweTM4LCBweXB5LCBsaW50LCBwYWNrYWdpbmcsIGRvY3MKIAogW3Rlc3RlbnZd
CiBkZXBzPSAtcnt0b3hpbmlkaXJ9L3Rlc3RfcmVxdWlyZW1lbnRzLnR4dAogY29tbWFuZHM9Ci0g
ICAgY292ZXJhZ2UgcnVuIC1tIHB5LnRlc3Qge3Bvc2FyZ3N9IHt0b3hpbmlkaXJ9L3Rlc3QvCisg
ICAgY292ZXJhZ2UgcnVuIC1tIHB5LnRlc3Qge3Bvc2FyZ3N9CiAgICAgY292ZXJhZ2UgcmVwb3J0
CiAKIFt0ZXN0ZW52OnB5cHldCiAjIHRlbXBvcmFyaWx5IGRpc2FibGUgY292ZXJhZ2UgdGVzdGlu
ZyBvbiBQeVB5IGR1ZSB0byBwZXJmb3JtYW5jZSBwcm9ibGVtcwotY29tbWFuZHM9IHB5LnRlc3Qg
e3Bvc2FyZ3N9IHt0b3hpbmlkaXJ9L3Rlc3QvCi0KLVt0ZXN0ZW52OnB5MjctdHdpc3RlZE1hc3Rl
cl0KLSMgVGhpcyBpcyBhIHZhbGlkYXRpb24gdGVzdCB0aGF0IGNvbmZpcm1zIHRoYXQgVHdpc3Rl
ZCdzIHRlc3QgY2FzZXMgaGF2ZW4ndAotIyBicm9rZW4uCi1kZXBzID0KLSAgICAjIFt0bHMsaHR0
cDJdIHN5bnRheCBkb2Vzbid0IHdvcmsgaGVyZSBzbyB3ZSBlbnVtZXJhdGUgYWxsIGRlcGVuZGVu
Y2llcy4KLSAgICBnaXQraHR0cHM6Ly9naXRodWIuY29tL3R3aXN0ZWQvdHdpc3RlZAotICAgIHB5
b3BlbnNzbAotICAgIHNlcnZpY2VfaWRlbnRpdHkKLSAgICBpZG5hCi0gICAgcHJpb3JpdHkKLSAg
ICBzcGhpbngKLWNvbW1hbmRzID0gcHl0aG9uIC1tIHR3aXN0ZWQudHJpYWwgLS1yZXBvcnRlcj10
ZXh0IHR3aXN0ZWQKK2NvbW1hbmRzPSBweS50ZXN0IHtwb3NhcmdzfQogCiBbdGVzdGVudjpsaW50
XQotYmFzZXB5dGhvbj1weXRob24zLjQKLWRlcHMgPSBmbGFrZTg9PTMuMy4wCitiYXNlcHl0aG9u
PXB5dGhvbjMuNworZGVwcyA9IGZsYWtlOD09My43LjgKIGNvbW1hbmRzID0gZmxha2U4IC0tbWF4
LWNvbXBsZXhpdHkgMTAgaDIgdGVzdAogCiBbdGVzdGVudjpkb2NzXQotYmFzZXB5dGhvbj1weXRo
b24zLjUKLWRlcHMgPSBzcGhpbng9PTEuNC45CitiYXNlcHl0aG9uPXB5dGhvbjMuNworZGVwcyA9
IHNwaGlueD09Mi4yLjAKIGNoYW5nZWRpciA9IHt0b3hpbmlkaXJ9L2RvY3MKIHdoaXRlbGlzdF9l
eHRlcm5hbHMgPSBybQogY29tbWFuZHMgPQpAQCAtNDAsMTUgKzI3LDIyIEBAIGNvbW1hbmRzID0K
IAogW3Rlc3RlbnY6Z3JhcGhzXQogYmFzZXB5dGhvbj1weXRob24yLjcKLWRlcHMgPSBncmFwaHZp
ej09MC42CitkZXBzID0gZ3JhcGh2aXo9PTAuMTMKIGNvbW1hbmRzID0KICAgICBweXRob24gdmlz
dWFsaXplci92aXN1YWxpemUucHkgLWkgZG9jcy9zb3VyY2UvX3N0YXRpYwogCiBbdGVzdGVudjpw
YWNrYWdpbmddCi1iYXNlcHl0aG9uPXB5dGhvbjIuNworYmFzZXB5dGhvbj1weXRob24zLjcKIGRl
cHMgPQotICAgIGNoZWNrLW1hbmlmZXN0PT0wLjM1Ci0gICAgcmVhZG1lX3JlbmRlcmVyPT0xNy4y
CisgICAgY2hlY2stbWFuaWZlc3Q9PTAuMzkKKyAgICByZWFkbWUtcmVuZGVyZXI9PTI0LjAKIGNv
bW1hbmRzID0KICAgICBjaGVjay1tYW5pZmVzdAogICAgIHB5dGhvbiBzZXR1cC5weSBjaGVjayAt
LW1ldGFkYXRhIC0tcmVzdHJ1Y3R1cmVkdGV4dCAtLXN0cmljdAorCitbdGVzdGVudjpoMnNwZWNd
CitiYXNlcHl0aG9uPXB5dGhvbjMuNgorZGVwcyA9IHR3aXN0ZWRbdGxzXT09MTkuNy4wCit3aGl0
ZWxpc3RfZXh0ZXJuYWxzID0ge3RveGluaWRpcn0vdGVzdC9oMnNwZWN0ZXN0LnNoCitjb21tYW5k
cyA9CisgICAge3RveGluaWRpcn0vdGVzdC9oMnNwZWN0ZXN0LnNoCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL3V0aWxzL2JhY2twb3J0LnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi91dGlscy9iYWNrcG9ydC5zaAppbmRleCAz
ZjVkMDc2Nzk5NDcuLjI3M2MxNDc5YjI3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi91dGlscy9iYWNr
cG9ydC5zaAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0LnNoCkBAIC0xNiw2ICsxNiw3IEBA
IGZpCiBpZiAhIGdpdCBwdWxsIC0tZmYtb25seTsgdGhlbgogICAgIGVjaG8gIlVuYWJsZSB0byB1
cGRhdGUgJFRBUkdFVF9CUkFOQ0giCiAgICAgZXhpdCAyCitmaQogCiBpZiAhIGdpdCBjaGVja291
dCAtYiAiJFBSX0JSQU5DSCI7IHRoZW4KICAgICBlY2hvICJGYWlsZWQgdG8gb3BlbiBuZXcgYnJh
bmNoICRQUl9CUkFOQ0giCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi91dGlscy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjIzODNhN2E5OTFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi91dGlscy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvdXRpbHMvYmFja3BvcnQuc2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdmlzdWFsaXplci93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvdmlzdWFsaXplci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODRkM2ZmZjFiMzI5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi92aXN1YWxpemVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi92aXN1YWxpemVyL05PVElDRVMudmlzdWFsaXplcgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvdmlzdWFsaXplci92aXN1YWxpemUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZGZkMmZjYWU0YTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9D
T05UUklCVVRPUlMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9ISVNUT1JZLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTElDRU5TRQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9SRUFETUUu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0
X3JlcXVpcmVtZW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBh
Y2svaHBhY2suZWdnLWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrLmVnZy1p
bmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDdjNzRh
YzJiNzcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrLmVnZy1pbmZvL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
cGFjay9ocGFjay5lZ2ctaW5mby9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2suZWdnLWluZm8v
U09VUkNFUy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3Mu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby90b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2hwYWNrL2hwYWNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJjMGI0YmVkNWQxLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2svX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2NvbXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2svZXhj
ZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2svaHBhY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNr
L2h1ZmZtYW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2h1ZmZtYW5fY29uc3RhbnRzLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9ocGFjay9ocGFjay9odWZmbWFuX3RhYmxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay9zdHJ1Y3Qu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2hwYWNrL2hwYWNrL3RhYmxlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rl
c3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ5MTYyNTA0OS4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHBhY2svdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X2VuY29kZV9kZWNvZGUucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2hwYWNrL3Rlc3QvdGVzdF9ocGFjay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X2hwYWNr
X2ludGVncmF0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3RfaHVmZm1hbi5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHBhY2svdGVzdC90ZXN0X3N0cnVjdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X3RhYmxlLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y2NDQ5OTUwNWFmLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svQ09OVFJJQlVUT1JTLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHBhY2svSElTVE9SWS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL0xJQ0VOU0UKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNr
L01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svUkVBRE1FLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHBhY2svc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9zZXR1cC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi8uYXBwdmV5b3IueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uYXBwdmV5b3Iu
eW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTg0ZTJiN2ZhNWU2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uYXBwdmV5b3IueW1sCkBAIC0wLDAg
KzEsMzEgQEAKKyMgVG8gYWN0aXZhdGUsIGNoYW5nZSB0aGUgQXBwdmV5b3Igc2V0dGluZ3MgdG8g
dXNlIGAuYXBwdmV5b3IueW1sYC4KK2Vudmlyb25tZW50OgorICBnbG9iYWw6CisgICAgUEFUSDog
IkM6XFxQeXRob24yN1xcU2NyaXB0c1xcOyVQQVRIJSIKKyAgICBQWVRFU1RfQ09NTUFORDogImNv
dmVyYWdlIHJ1biAtbSBweXRlc3QiCisgIG1hdHJpeDoKKyAgICAtIFRPWEVOVjogcHkyNy1iYXNl
CisgICAgLSBUT1hFTlY6IHB5Mjctb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzMy1iYXNlCisg
ICAgLSBUT1hFTlY6IHB5MzMtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNC1iYXNlCisgICAg
LSBUT1hFTlY6IHB5MzQtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNS1iYXNlCisgICAgLSBU
T1hFTlY6IHB5MzUtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNi1iYXNlCisgICAgLSBUT1hF
TlY6IHB5MzYtb3B0aW9uYWwKKworaW5zdGFsbDoKKyAgLSBnaXQgc3VibW9kdWxlIHVwZGF0ZSAt
LWluaXQgLS1yZWN1cnNpdmUKKyAgLSBweXRob24gLW0gcGlwIGluc3RhbGwgdG94IGNvZGVjb3YK
KworYnVpbGQ6IG9mZgorCit0ZXN0X3NjcmlwdDoKKyAgLSB0b3gKKworYWZ0ZXJfdGVzdDoKKyAg
LSBweXRob24gZGVidWctaW5mby5weQorCitvbl9zdWNjZXNzOgorICAtIGNvZGVjb3YKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5jb3ZlcmFn
ZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmZhY2YzNTIzOWZh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uY292ZXJhZ2VyYwpAQCAtMCwwICsx
LDggQEAKK1tydW5dCiticmFuY2ggPSBUcnVlCitzb3VyY2UgPSBodG1sNWxpYgorCitbcGF0aHNd
Citzb3VyY2UgPQorICAgaHRtbDVsaWIKKyAgIC50b3gvKi9saWIvcHl0aG9uKi9zaXRlLXBhY2th
Z2VzL2h0bWw1bGliCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRpZ25vcmUgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5lY2Q2MmRmMzFiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRp
Z25vcmUKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTQgR2l0SHViLCBJbmMu
CisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyMgdG8gZGVhbCBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbgorIyB0aGUgcmlnaHRzIHRvICB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisjIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorIyBTb2Z0d2FyZSBp
cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBBVVRIT1JTIE9SIENPUFlSSUdIVCBI
T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisjIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisj
IEJ5dGUtY29tcGlsZWQgLyBvcHRpbWl6ZWQgLyBETEwgZmlsZXMKK19fcHljYWNoZV9fLworKi5w
eVtjb2RdCisqJHB5LmNsYXNzCisKKyMgQyBleHRlbnNpb25zCisqLnNvCisKKyMgRGlzdHJpYnV0
aW9uIC8gcGFja2FnaW5nCisuUHl0aG9uCitlbnYvCitidWlsZC8KK2RldmVsb3AtZWdncy8KK2Rp
c3QvCitkb3dubG9hZHMvCitlZ2dzLworLmVnZ3MvCitsaWIvCitsaWI2NC8KK3BhcnRzLworc2Rp
c3QvCit2YXIvCisqLmVnZy1pbmZvLworLmluc3RhbGxlZC5jZmcKKyouZWdnCitNQU5JRkVTVAor
CisjIFB5SW5zdGFsbGVyCisjICBVc3VhbGx5IHRoZXNlIGZpbGVzIGFyZSB3cml0dGVuIGJ5IGEg
cHl0aG9uIHNjcmlwdCBmcm9tIGEgdGVtcGxhdGUKKyMgIGJlZm9yZSBQeUluc3RhbGxlciBidWls
ZHMgdGhlIGV4ZSwgc28gYXMgdG8gaW5qZWN0IGRhdGUvb3RoZXIgaW5mb3MgaW50byBpdC4KKyou
bWFuaWZlc3QKKyouc3BlYworCisjIEluc3RhbGxlciBsb2dzCitwaXAtbG9nLnR4dAorcGlwLWRl
bGV0ZS10aGlzLWRpcmVjdG9yeS50eHQKKworIyBVbml0IHRlc3QgLyBjb3ZlcmFnZSByZXBvcnRz
CitodG1sY292LworLnRveC8KKy5jb3ZlcmFnZQorLmNvdmVyYWdlLioKKy5jYWNoZQorbm9zZXRl
c3RzLnhtbAorY292ZXJhZ2UueG1sCisqLGNvdmVyCisKKyMgVHJhbnNsYXRpb25zCisqLm1vCisq
LnBvdAorCisjIERqYW5nbyBzdHVmZjoKKyoubG9nCisKKyMgU3BoaW54IGRvY3VtZW50YXRpb24K
K2RvYy9fYnVpbGQvCisKKyMgUHlCdWlsZGVyCit0YXJnZXQvCisKKyMgR2VuZXJhdGVkIGJ5IHBh
cnNlLnB5IC1wCitzdGF0cy5wcm9mCisKKyMgSURFCisuaWRlYQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi8uZ2l0bW9kdWxlcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLmdpdG1vZHVsZXMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYmNhNDcwMzI4ZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRtb2R1bGVzCkBAIC0wLDAgKzEsMyBAQAorW3N1Ym1v
ZHVsZSAidGVzdGRhdGEiXQorCXBhdGggPSBodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YQorCXVybCA9
IGh0dHBzOi8vZ2l0aHViLmNvbS9odG1sNWxpYi9odG1sNWxpYi10ZXN0cy5naXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvLnByb3NwZWN0b3IueWFtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnByb3Nw
ZWN0b3IueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlOGVm
ZTFhNjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnByb3NwZWN0b3IueWFt
bApAQCAtMCwwICsxLDIxIEBACitzdHJpY3RuZXNzOiB2ZXJ5aGlnaAorZG9jLXdhcm5pbmdzOiBm
YWxzZQordGVzdC13YXJuaW5nczogZmFsc2UKKworbWF4LWxpbmUtbGVuZ3RoOiAxMzkKKworcmVx
dWlyZW1lbnRzOgorICAtIHJlcXVpcmVtZW50cy50eHQKKyAgLSByZXF1aXJlbWVudHMtdGVzdC50
eHQKKyAgLSByZXF1aXJlbWVudHMtb3B0aW9uYWwudHh0CisKK2lnbm9yZS1wYXRoczoKKyAgLSBw
YXJzZS5weQorICAtIHV0aWxzLworCitweXRob24tdGFyZ2V0czoKKyAgLSAyCisgIC0gMworCitt
Y2NhYmU6CisgIHJ1bjogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnB5bGludHJj
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi8ucHlsaW50cmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lYTc0ZDVkYjNmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
Ly5weWxpbnRyYwpAQCAtMCwwICsxLDEwIEBACitbTUFTVEVSXQoraWdub3JlPXRlc3RzCisKK1tN
RVNTQUdFUyBDT05UUk9MXQorIyBtZXNzYWdlcyB1cCB0byBmaXhtZSBzaG91bGQgcHJvYmFibHkg
YmUgZml4ZWQgc29tZWhvdworZGlzYWJsZSA9IHJlZGVmaW5lZC1idWlsdGluLGF0dHJpYnV0ZS1k
ZWZpbmVkLW91dHNpZGUtaW5pdCxhbm9tYWxvdXMtYmFja3NsYXNoLWluLXN0cmluZyxuby1zZWxm
LXVzZSxyZWRlZmluZWQtb3V0ZXItbmFtZSxiYWQtY29udGludWF0aW9uLHdyb25nLWltcG9ydC1v
cmRlcixzdXBlcmZsdW91cy1wYXJlbnMsbm8tbWVtYmVyLGR1cGxpY2F0ZS1jb2RlLHN1cGVyLWlu
aXQtbm90LWNhbGxlZCxhYnN0cmFjdC1tZXRob2QscHJvcGVydHktb24tb2xkLWNsYXNzLHdyb25n
LWltcG9ydC1wb3NpdGlvbixuby1uYW1lLWluLW1vZHVsZSxuby1pbml0LGJhZC1tY3MtY2xhc3Nt
ZXRob2QtYXJndW1lbnQsYmFkLWNsYXNzbWV0aG9kLWFyZ3VtZW50LGZpeG1lLGludmFsaWQtbmFt
ZSxpbXBvcnQtZXJyb3IsdG9vLWZldy1wdWJsaWMtbWV0aG9kcyx0b28tbWFueS1hbmNlc3RvcnMs
dG9vLW1hbnktYXJndW1lbnRzLHRvby1tYW55LWJvb2xlYW4tZXhwcmVzc2lvbnMsdG9vLW1hbnkt
YnJhbmNoZXMsdG9vLW1hbnktaW5zdGFuY2UtYXR0cmlidXRlcyx0b28tbWFueS1sb2NhbHMsdG9v
LW1hbnktbGluZXMsdG9vLW1hbnktcHVibGljLW1ldGhvZHMsdG9vLW1hbnktcmV0dXJuLXN0YXRl
bWVudHMsdG9vLW1hbnktc3RhdGVtZW50cyxtaXNzaW5nLWRvY3N0cmluZyxsaW5lLXRvby1sb25n
LGxvY2FsbHktZGlzYWJsZWQsbG9jYWxseS1lbmFibGVkLGJhZC1idWlsdGluLGRlcHJlY2F0ZWQt
bGFtYmRhCisKK1tGT1JNQVRdCittYXgtbGluZS1sZW5ndGg9MTM5CitzaW5nbGUtbGluZS1pZi1z
dG10PW5vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5weXRlc3QuZXhwZWN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi8ucHl0ZXN0LmV4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjBmYTMyNmYwMzU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnB5
dGVzdC5leHBlY3QKQEAgLTAsMCArMSwxMzIyIEBACitweXRlc3QtZXhwZWN0IGZpbGUgdjEKKygy
LCA3LCAxMSwgJ2ZpbmFsJywgMCkKK2InaHRtbDVsaWIvdGVzdHMvdGVzdF9lbmNvZGluZy5weTo6
dGVzdF9lbmNvZGluZzo6WzExMF0nOiBGQUlMCitiJ2h0bWw1bGliL3Rlc3RzL3Rlc3RfZW5jb2Rp
bmcucHk6OnRlc3RfZW5jb2Rpbmc6OlsxMTFdJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90b2tlbml6ZXIvdGVzdDIudGVzdDo6MDo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjI4OjpkYXRhU3RhdGUnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0OjoyMzE6
OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rl
c3QzLnRlc3Q6OjIzMjo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjM0OjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0OjoyMzU6OmRhdGFTdGF0ZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjIzNzo6
ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVz
dDMudGVzdDo6MjQwOjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3Rva2VuaXplci90ZXN0My50ZXN0OjoyNDE6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjI0Mzo6ZGF0YVN0YXRlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjQ0Ojpk
YXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0
My50ZXN0OjoyNDY6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjI1ODo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6NjU2OjpkYXRhU3RhdGUnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEu
ZGF0OjoxNzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEuZGF0OjoxNzo6RE9NOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9hZG9wdGlvbjAxLmRhdDo6MTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2Fkb3B0aW9uMDEuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fk
b3B0aW9uMDEuZGF0OjoxNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEu
ZGF0OjoxNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9hZG9wdGlvbjAxLmRhdDo6
MTc6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vYWRvcHRpb24wMS5kYXQ6OjE3OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjowOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50
LmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjA6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjoxODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoxODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6MTg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjE4OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE5OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjoxOTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6MjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
MjI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIyOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIyOjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyMjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIzOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1m
cmFnbWVudC5kYXQ6OjIzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjoyMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjIzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjIzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIz
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojoy
Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjM6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjoyNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjoyNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoyNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6MjY6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjI2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjoyNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6MzA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
MzA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMwOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMwOjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozMDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1m
cmFnbWVudC5kYXQ6OjMxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjozMTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjMxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjMxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMx
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojoz
MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzE6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MzQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjozNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjozNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6MzQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjM0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjozNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjM4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozODo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozODo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzg6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0OjozOTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
Mzk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzk6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM5OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjozOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50
LmRhdDo6Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjozOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6NDA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0Ojo0MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0Ojo0MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6NDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjQwOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0Ojo0MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjQ3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0Nzo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0Nzo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
NDg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDg6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ4OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0
OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjowOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2lzaW5kZXguZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5k
YXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjA6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2lzaW5kZXguZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjE6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2lzaW5kZXguZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRl
eC5kYXQ6OjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6bHhtbDo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5k
YXQ6OjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRl
eC5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjoyOjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjoyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lz
aW5kZXguZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mzo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjozOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lz
aW5kZXguZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjozOjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6
OjM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0OjozOjpET006
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L21lbnVpdGVtLWVsZW1lbnQuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
bWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51
aXRlbS1lbGVtZW50LmRhdDo6Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51
aXRlbS1lbGVtZW50LmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50
LmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjQ6
OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6RE9NOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVs
ZW1lbnQuZGF0Ojo0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRh
dDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVudWl0
ZW0tZWxlbWVudC5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5z
aXRpdml0eS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0aXZpdHku
ZGF0OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0eS5kYXQ6
OjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0eS5kYXQ6
OjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0aXZpdHku
ZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbmFtZXNwYWNlLXNlbnNpdGl2aXR5
LmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0
aXZpdHkuZGF0OjowOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0eS5k
YXQ6OjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjowOjpET006OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vcnVieS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjA6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjowOjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5
LmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MDo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVi
eS5kYXQ6OjEwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5k
YXQ6OjEwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6
MTA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3J1YnkuZGF0OjoxMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTI6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1
YnkuZGF0OjoxMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTI6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9ydWJ5LmRhdDo6MTU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9y
dWJ5LmRhdDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1Ynku
ZGF0OjoxNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpET006OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojox
Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vcnVieS5kYXQ6OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0
OjoxNzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTc6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3J1YnkuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3J1YnkuZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRh
dDo6MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpET006OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vcnVieS5kYXQ6OjIwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoyMDo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
cnVieS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojoy
MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3J1YnkuZGF0OjoyOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1
YnkuZGF0OjoyOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6
Mjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjM6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9ydWJ5LmRhdDo6Mzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mzo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9ydWJ5LmRhdDo6Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0
OjozOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjozOjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3J1YnkuZGF0OjozOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRh
dDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3J1YnkuZGF0Ojo1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6NTo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vcnVieS5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjU6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6
Ojc6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6Ojc6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVi
eS5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9ydWJ5LmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYWRvcHRpb24w
MS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6
RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYWRvcHRpb24wMS5kYXQ6OjA6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0
ZWQvYXJrLmRhdDo6MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0Ojow
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYXJrLmRhdDo6MDo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fyay5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYXJrLmRhdDo6MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3Jp
cHRlZC9hcmsuZGF0OjowOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQw
MS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjowOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjowOjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6MDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2Ny
aXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0
MDEuZGF0OjoxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6
MTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6MTo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjE6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjA6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjowOjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTAwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAwOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMDo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxMDA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxMDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDA6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAxOjpET006OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxMDE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMDE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAxOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDE6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjEwMTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDI6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjEwMjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxMDI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEw
Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjEwMzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTAzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMDM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDM6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDM6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMDQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDQ6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA0OjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDQ6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjEwNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjEwNDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNDo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDU6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjEwNTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjEwNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDU6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNTo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA1OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTA1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNjo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA2OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MTA2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjEwNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA2
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTA3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDc6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTA3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxMDc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjEwNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNzo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNzo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjEwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjExOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MTE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTI6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MTI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMzo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMzo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTM6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNDo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNDo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE0OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxNDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNTo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE1OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE2OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxNzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTc6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE3Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTc6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTg6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjE4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTg6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxOTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTk6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjE5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjIwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoyMDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjIwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjIxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoyMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjIxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6Omx4bWw6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjIyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIyOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjIyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjM6OkRPTTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjM6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MjM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjQ6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjQ6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNDo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MjQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjU6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNTo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MjU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MjY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2OjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjI2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNjo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2OjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MjY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6Mjc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI3OjpET006OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjI3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNzo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI3OjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6Mjg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI4OjpET006
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjI4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoyODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI4Ojps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI5
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjI5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoyOTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjI5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjozMDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MzA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjozMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpseG1sOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjozMTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MzE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjozMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpseG1s
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpET006OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjozMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMy
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMjo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjozMjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMy
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMzOjpET006OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjMzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMzOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjMzOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM0OjpET006OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjM0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM0
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzQ6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjM0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM1OjpE
T006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzU6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjM2OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNjo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjM2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjozNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzY6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNjo6bHhtbDo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjM3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNzo6RE9NOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjozNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mzc6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNzo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjM4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozODo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjozODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Mzg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozODo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpseG1sOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozOjps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDA6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NDA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjQwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjQxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NDE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NDI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjQyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NDI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NDM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDM6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NDM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NDo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NDo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NTo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Njo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ2OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo0Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDc6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ3OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDc6Omx4bWw6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDg6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NDg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ4
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDg6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDk6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NDk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjQ5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDk6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUw
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjUwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo1MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjUwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjUxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo1MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjUxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjUyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjUyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjUzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUzOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjUzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTQ6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTQ6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1NDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTU6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1NTo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTY6
OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Njo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2OjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NTc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU3OjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjU3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Nzo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU3OjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NTg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU4OjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjU4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1
ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU4OjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU5OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjU5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo1OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU5
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1OjpseG1sOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo2MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2MTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo2MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo2Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo2Mjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjps
eG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYzOjpET006OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo2Mzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjYzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYzOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mzo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjYzOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY0OjpET006OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY0OjpF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjQ6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY1OjpET006
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjY1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjU6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6bHhtbDo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY2
OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6RE9NOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjY6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjY3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Nzo6RE9NOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Njc6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Nzo6bHhtbDo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjY4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2ODo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo2ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
Njg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2ODo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjY5OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OTo6
RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo2OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6Njk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
OTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjY6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Njo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NzA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NzA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjcwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NzA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NzE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjcxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NzE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NzI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzI6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjcyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NzI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mzo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NzM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mzo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzM6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjczOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NzM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NDo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NDo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc0OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NTo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc1OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3
Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NzY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc2OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo3Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzc6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6Nzc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc3Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzc6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo3ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzg6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6Nzg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojc4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzg6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo3OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzk6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6Nzk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6Ojc5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
Nzk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjgwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6ODA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjgxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6ODE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6ODI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODI6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6ODI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
Mjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mzo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mzo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NDo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg0OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NTo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg1OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo4Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODY6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg2OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODY6Omx4bWw6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo4Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODc6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg3
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODc6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo4ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODg6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6ODg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojg4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODg6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
ODk6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6ODk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6Ojg5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjkwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo5MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjkwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjkxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjkxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjkyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkyOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjkyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTI6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTM6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTM6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTQ6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5NDo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTU6
OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5NTo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1OjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6OTY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk2OjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojk2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Njo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk2OjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6OTc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk3OjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6Ojk3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5
Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk3OjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6OTg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk4OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6Ojk4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo5ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk4
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojk5OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo5OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojk5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0
OjoyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0OjoyOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3Rlc3RzMTEuZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5k
YXQ6OjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjI6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjI6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3Rlc3RzMTEuZGF0Ojo0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjQ6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3Rlc3RzMTEuZGF0Ojo0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMx
MS5kYXQ6OjQ6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6bHhtbDo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5k
YXQ6OjU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMx
MS5kYXQ6OjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo1OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
c3RzMTEuZGF0Ojo1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Njo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo2OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
c3RzMTEuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Njo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo2OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6
OjY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRh
dDo6MTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZXN0czE5LmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6OjE0
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkRPTTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZXN0czE5LmRhdDo6MTc6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6
OjE3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVzdHMxOS5kYXQ6OjE3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNzo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6Ojc6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZXN0czE5LmRhdDo6Nzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6Nzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6Ojc6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3Rlc3RzMTkuZGF0Ojo3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3Rz
MTkuZGF0Ojo3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0Ojo3OjpseG1sOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRh
dDo6Njo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVzdHMyLmRhdDo6Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMi5kYXQ6
OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Njo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0
czIuZGF0Ojo3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6RE9NOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0
czIuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMi5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0
czIuZGF0Ojo3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czI1LmRhdDo6Nzo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3Rlc3RzMjUuZGF0Ojo3OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3Rz
MjUuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czI1LmRhdDo6Nzo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMjUuZGF0Ojo3OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTQ6OkRPTTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRh
dDo6MTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTQ6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRh
dDo6MTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTU6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtp
dDAyLmRhdDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTU6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNTo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtp
dDAyLmRhdDo6MTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTY6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3dlYmtpdDAyLmRhdDo6MTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRh
dDo6MTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNjo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3dlYmtpdDAyLmRhdDo6MTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8udHJh
dmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU3MjdlMDk0
N2UyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnRyYXZpcy55bWwKQEAgLTAs
MCArMSwzMiBAQAorbGFuZ3VhZ2U6IHB5dGhvbgorcHl0aG9uOgorICAtICJweXB5IgorICAtICIz
LjYiCisgIC0gIjMuNSIKKyAgLSAiMy40IgorICAtICIzLjMiCisgIC0gIjIuNyIKKworc3Vkbzog
ZmFsc2UKKworY2FjaGU6IHBpcAorCitlbnY6CisgIGdsb2JhbDoKKyAgICAtIFBZVEVTVF9DT01N
QU5EPSJjb3ZlcmFnZSBydW4gLW0gcHl0ZXN0IgorICBtYXRyaXg6CisgICAgLSBUT1hFTlY9b3B0
aW9uYWwKKyAgICAtIFRPWEVOVj1iYXNlCisgICAgLSBUT1hFTlY9c2l4MTktb3B0aW9uYWwKKwor
aW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFsbCB0b3ggY29kZWNvdgorCitzY3JpcHQ6CisgIC0gdG94
CisKK2FmdGVyX3NjcmlwdDoKKyAgLSBweXRob24gZGVidWctaW5mby5weQorCithZnRlcl9zdWNj
ZXNzOgorICAtIGNvZGVjb3YKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9k
YXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmJlM2VlYjNiNy4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9iZW5jaG1hcmtzL2RhdGEvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2Rh
dGEvaHRtbC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93
cHQvcmFuZG9tL2JhY2tncm91bmQtb3JpZ2luLTAwNy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
YmVuY2htYXJrcy9kYXRhL3dwdC9yYW5kb20vYmFja2dyb3VuZC1vcmlnaW4tMDA3LXJlZi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDNhMWQwNTMyODE4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRv
bS9iYWNrZ3JvdW5kLW9yaWdpbi0wMDctcmVmLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIEJhY2tncm91bmRz
IGFuZCBCb3JkZXJzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9
IkludGVsIiBocmVmPSJodHRwOi8vd3d3LmludGVsLmNvbSI+Cis8c3R5bGU+CisgIGRpdiB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgaGVpZ2h0OiA1NXB4OworICAgIGxlZnQ6
IDVweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdG9wOiA1cHg7CisgICAgd2lkdGg6
IDU1cHg7CisgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPHA+VGVzdCBwYXNzZXMgaWYgdGhlcmUg
aXMgYSBmaWxsZWQgZ3JlZW4gc3F1YXJlIGFuZCA8c3Ryb25nPm5vIHJlZDwvc3Ryb25nPi48L3A+
CisgIDxkaXY+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNo
bWFya3MvZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQtcmVmLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQt
cmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZmJjNWFj
YTk3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93
cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQtcmVmLmh0bWwKQEAgLTAsMCArMSwxMyBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPmxpQHR5cGU6IHVu
c3VwcG9ydGVkIHR5cGVzPC90aXRsZT4KKzxsaT5maXJzdCBpdGVtPC9saT4KKzxsaT5zZWNvbmQg
aXRlbTwvbGk+Cis8b2w+CisgIDxsaT5maXJzdCBvcmRlcmVkIGl0ZW08L2xpPgorICA8bGk+c2Vj
b25kIG9yZGVyZWQgaXRlbTwvbGk+Cis8L29sPgorPHVsPgorICA8bGk+Zmlyc3QgdW5vcmRlcmVk
IGl0ZW08L2xpPgorICA8bGk+c2Vjb25kIHVub3JkZXJlZCBpdGVtPC9saT4KKzwvdWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjNjY2YWUwNDI4Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9yYW5kb20vMDAxLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2JhY2tncm91bmRfc2hvcnRoYW5kX2Nz
c19yZWxhdGl2ZV91cmwuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9y
YW5kb20vYmVmb3JldW5sb2FkLW9uLWhpc3RvcnktYmFjay0xLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2V1Y2tyLWVuY29kZS1mb3JtLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2ZyYW1lLWFuY2VzdG9ycy1zZWxm
LWFsbG93Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2dy
b3VwaW5nLWRsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9t
L2hlYXZ5LXN0eWxpbmctMDA1Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93
cHQvcmFuZG9tL2h0Yi1sdHItbHRyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0
YS93cHQvcmFuZG9tL2lkYmluZGV4X2dldDguaHRtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtz
L2RhdGEvd3B0L3JhbmRvbS9pZGxoYXJuZXNzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFy
a3MvZGF0YS93cHQvcmFuZG9tL21vei1jc3MyMS1mbG9hdC1wYWdlLWJyZWFrLWluc2lkZS1hdm9p
ZC02Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL3NoYXBl
LW91dHNpZGUtY29udGVudC1ib3gtMDAyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3Mv
ZGF0YS93cHQvcmFuZG9tL3dvcmtlci1jb25zdHJ1Y3Rvci5odHRwcy5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA4NWY1ZTgzYTk4NC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRh
L3dwdC9MSUNFTlNFLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L1JFQURN
RS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdo
dGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFsaWQtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Jl
bmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZmlsdGVyLXR1cmJ1bGVuY2UtaW52YWxpZC0wMDEu
aHRtbAppbmRleCAxMjJjYzcwZjM5NzkuLjc0MDBjOGIzNzkzOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWlu
dmFsaWQtMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dl
aWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFsaWQtMDAxLmh0bWwKQEAgLTI1LDcgKzI1LDcg
QEAKICAgICAgICAgICAgIDxmZUZ1bmNHIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAw
LjUwMiAwIi8+IDwhLS0gbWFwIFswLi4xLzNdIC0+IDA7IFsxLzMuLi4yLzNdIC0+IDAuNTAyOyBb
Mi8zLi4xXSAtPiAwIC0tPgogICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3JldGUiIHRh
YmxlVmFsdWVzPSIwIi8+CiAgICAgICAgICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFi
bGVWYWx1ZXM9IjAgMSAwIi8+Ci0gICAgICAgIDwvZmVjb21wb25lbnR0cmFuc2Zlcj4KKyAgICAg
ICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgogICAgIDwvZmlsdGVyPgogCiAgICAgPGZpbHRlciBp
ZD0iZm4yIiB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KQEAgLTM1LDcgKzM1LDcg
QEAKICAgICAgICAgICAgIDxmZUZ1bmNHIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAw
LjUwMiAwIi8+IDwhLS0gbWFwIFswLi4xLzNdIC0+IDA7IFsxLzMuLi4yLzNdIC0+IDAuNTAyOyBb
Mi8zLi4xXSAtPiAwIC0tPgogICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3JldGUiIHRh
YmxlVmFsdWVzPSIwIi8+CiAgICAgICAgICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFi
bGVWYWx1ZXM9IjAgMSAwIi8+Ci0gICAgICAgIDwvZmVjb21wb25lbnR0cmFuc2Zlcj4KKyAgICAg
ICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgogICAgIDwvZmlsdGVyPgogCiAgICAgPCEtLSB0eXBl
PXR1cmJ1bGVuY2UgLS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0
YS93cHQvd2VpZ2h0ZWQvaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1jb250ZW50LWltYWdl
cy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9p
bWFnZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLWNvbnRlbnQtaW1hZ2VzLXJlZi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzBkMjk5MDlmOTA2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2lt
YWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtY29udGVudC1pbWFnZXMtcmVmLmh0bWwKQEAgLTAs
MCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUyBJ
bWFnZXMgTW9kdWxlIExldmVsIDM6IGltYWdlLW9yaWVudGF0aW9uOiBmcm9tLWltYWdlIGZvciBj
b250ZW50IGltYWdlczwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IlN0ZXBoZW4g
Q2hlbm5leSIgaHJlZj0ibWFpbHRvOnNjaGVubmV5QGNocm9taXVtLm9yZyI+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaW1hZ2VzLTMvI3Byb3Bk
ZWYtaW1hZ2Utb3JpZW50YXRpb24iPgorPHN0eWxlPgorICAgIGRpdi5pbWFnZSB7CisgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB9CisgICAgZGl2LmNvbnRhaW5lciB7CisgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworICAgIH0KKyAgICBpbWcgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0
OiBuby1yZXBlYXQ7CisgICAgfQorICAgIGJvZHkgeworICAgICAgICBvdmVyZmxvdzogaGlkZGVu
OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSA+CisgICAgPHA+VGhlIGltYWdlcyBz
aG91bGQgcm90YXRlIHJlc3BlY3RpbmcgdGhlaXIgRVhJRiBvcmllbnRhdGlvbiBiZWNhdXNlCisg
ICAgICAgaW1hZ2Utb3JpZW50YXRpb246IGZyb20taW1hZ2UgaXMgc3BlY2lmaWVkLgorICAgIDwv
cD4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJpbWFn
ZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tMS11bC1w
cmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPk5vcm1hbAorICAgIDwvZGl2Pgor
ICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImltYWdlIiBz
dHlsZT0iY29udGVudDogdXJsKC4uL3N1cHBvcnQvZXhpZi1vcmllbnRhdGlvbi0yLXVyLXByZS1y
b3RhdGVkLmpwZykiPjwvZGl2PgorICAgICAgICA8YnI+RmxpcHBlZCBob3Jpem9udGFsbHkKKyAg
ICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24t
My1sci1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPlJvdGF0ZWQgMTgwJmRl
ZzsKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2
IGNsYXNzPSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50
YXRpb24tNC1sb2wtcHJlLXJvdGF0ZWQuanBnKSI+PC9kaXY+CisgICAgICAgIDxicj5GbGlwcGVk
IHZlcnRpY2FsbHkKKyAgICA8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdiBjbGFzcz0iY29udGFp
bmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0eWxlPSJjb250ZW50OiB1cmwoLi4v
c3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTUtbHUtcHJlLXJvdGF0ZWQuanBnKSI+PC9kaXY+Cisg
ICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ0NXIGFuZCBmbGlwcGVkIHZlcnRpY2FsbHkKKyAg
ICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24t
Ni1ydS1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVn
OyBDVworICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxk
aXYgY2xhc3M9ImltYWdlIiBzdHlsZT0iY29udGVudDogdXJsKC4uL3N1cHBvcnQvZXhpZi1vcmll
bnRhdGlvbi03LXJsLXByZS1yb3RhdGVkLmpwZykiPjwvZGl2PgorICAgICAgICA8YnI+Um90YXRl
ZCA5MCZkZWc7IENXIGFuZCBmbGlwcGVkIHZlcnRpY2FsbHkKKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZSIgc3R5bGU9ImNv
bnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tOC1sbG8tcHJlLXJvdGF0ZWQu
anBnKSI+PC9kaXY+CisgICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ0NXCisgICAgPC9kaXY+
CisgICAgPGJyPgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxpbWcgc3R5
bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tNS1s
dS1wcmUtcm90YXRlZC5qcGcpIj48L2ltZz4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBD
Q1cgYW5kIGZsaXBwZWQgdmVydGljYWxseQorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImNv
bnRhaW5lciI+CisgICAgICAgIDxpbWcgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9z
dXBwb3J0L2V4aWYtb3JpZW50YXRpb24tNi1ydS1wcmUtcm90YXRlZC5qcGcpIj48L2ltZz4KKyAg
ICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBDVworICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
ImNvbnRhaW5lciI+CisgICAgICAgIDxpbWcgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgu
Li9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tNy1ybC1wcmUtcm90YXRlZC5qcGcpIj48L2ltZz4K
KyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBDVyBhbmQgZmxpcHBlZCB2ZXJ0aWNhbGx5Cisg
ICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGltZyBzdHls
ZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3N1cHBvcnQvZXhpZi1vcmllbnRhdGlvbi04LWxs
by1wcmUtcm90YXRlZC5qcGcpIj48L2ltZz4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBD
Q1cKKyAgICA8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0eWxlPSJjb250ZW50OiB1cmwoLi4vc3VwcG9ydC9l
eGlmLW9yaWVudGF0aW9uLTktdS1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJy
PlVuZGVmaW5lZCAoaW52YWxpZCB2YWx1ZSkKKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9w
b3NpdGlvbi1zdGlja3ktdGFibGUtdGgtYm90dG9tLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9i
ZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL3Bvc2l0aW9uLXN0aWNreS10YWJsZS10aC1ib3R0
b20tcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYWE1
YzA4YTU1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0
YS93cHQvd2VpZ2h0ZWQvcG9zaXRpb24tc3RpY2t5LXRhYmxlLXRoLWJvdHRvbS1yZWYuaHRtbApA
QCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5SZWZlcmVuY2UgZm9yIHBv
c2l0aW9uOnN0aWNreSBib3R0b20gY29uc3RyYWludCBzaG91bGQgYmVoYXZlIGNvcnJlY3RseSBm
b3IgJmx0O3RoJmd0OyBlbGVtZW50czwvdGl0bGU+CisKKzxzdHlsZT4KKy5ncm91cCB7CisgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgcG9zaXRpb246IHJlbGF0aXZlOworICB3aWR0aDogMTUw
cHg7CisgIGhlaWdodDogMjAwcHg7Cit9CisKKy5zY3JvbGxlciB7CisgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDE1MHB4OworICBvdmVyZmxvdy14OiBo
aWRkZW47CisgIG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5jb250ZW50cyB7CisgIGhlaWdodDog
NTUwcHg7Cit9CisKKy5pbmRpY2F0b3IgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOworICBsZWZ0OiAwOworICBoZWlnaHQ6IDUwcHg7CisgIHdpZHRo
OiA1MHB4OworfQorPC9zdHlsZT4KKworPHNjcmlwdD4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZnVuY3Rpb24oKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cjEnKS5zY3JvbGxUb3AgPSAwOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXIy
Jykuc2Nyb2xsVG9wID0gNzU7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcjMn
KS5zY3JvbGxUb3AgPSAyMDA7Cit9KTsKKzwvc2NyaXB0PgorCis8ZGl2IGNsYXNzPSJncm91cCI+
CisgIDxkaXYgaWQ9InNjcm9sbGVyMSIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2IGNsYXNz
PSJpbmRpY2F0b3IiIHN0eWxlPSJ0b3A6IDEwMHB4OyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
Y29udGVudHMiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncm91cCI+
CisgIDxkaXYgaWQ9InNjcm9sbGVyMiIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2IGNsYXNz
PSJpbmRpY2F0b3IiIHN0eWxlPSJ0b3A6IDE1MHB4OyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
Y29udGVudHMiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncm91cCI+
CisgIDxkaXYgaWQ9InNjcm9sbGVyMyIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2IGNsYXNz
PSJpbmRpY2F0b3IiIHN0eWxlPSJ0b3A6IDI1MHB4OyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
Y29udGVudHMiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2PllvdSBzaG91bGQgc2Vl
IHRocmVlIGdyZWVuIGJveGVzIGFib3ZlLiBObyByZWQgc2hvdWxkIGJlIHZpc2libGUuPC9kaXY+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQv
cmVzaXplLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdo
dGVkL3Jlc2l6ZS0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjNhMWY1NjE3NDkzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2ht
YXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9yZXNpemUtMDA0Lmh0bWwKQEAgLTAsMCArMSwyMCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIEJhc2lj
IFVzZXIgSW50ZXJmYWNlIFRlc3Q6IHJlc2l6ZSBpbml0aWFsIHZhbHVlIC0gbm9uZTwvdGl0bGU+
Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkludGVsIiBocmVmPSJodHRwOi8vd3d3LmludGVs
LmNvbS8iPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJTaGl5b3UgVGFuIiBocmVmPSJtYWls
dG86c2hpeW91eC50YW5AaW50ZWwuY29tIj4KKzxsaW5rIHJlbD0iaGVscCIgdGl0bGU9IjguMS4g
J3Jlc2l6ZScgcHJvcGVydHkiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdWkvI3Jl
c2l6ZSI+Cis8bWV0YSBuYW1lPSJmbGFncyIgY29udGVudD0iaW50ZXJhY3QiPgorPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IGNoZWNrcyB0aGF0IHRoZSByZXNpemUgcHJvcGVydHkg
aW5pdGlhbCB2YWx1ZSBpcyBub25lIj4KKzxzdHlsZT4KKyAgI3Rlc3QgeworICAgIGJvcmRlcjog
MnB4IHNvbGlkIGJsdWU7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBvdmVyZmxvdzogYXV0bzsK
KyAgICB3aWR0aDogMTAwcHg7CisgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPHA+VGVzdCBwYXNz
ZXMgaWYgPHN0cm9uZz5uZWl0aGVyPC9zdHJvbmc+IHRoZSBoZWlnaHQgPHN0cm9uZz5ub3I8L3N0
cm9uZz4gdGhlIHdpZHRoIG9mIHRoZSBibHVlIGJvcmRlciBzcXVhcmUgY2FuIGJlIGFkanVzdGVk
KGZvciBpbnN0YW5jZSBieSBkcmFnZ2luZyB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lcikuPC9wPgor
ICA8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90ZXN0LXBsYW4uc3JjLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdGVzdC1wbGFuLnNyYy5odG1s
CmluZGV4IDY0NGMxMGFhMTIyMC4uYzI5ZjI2ODgzN2RkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdGVzdC1wbGFuLnNyYy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90ZXN0LXBsYW4uc3Jj
Lmh0bWwKQEAgLTE0OTAsNyArMTQ5MCw3IEBACiAJCQkJCQkJCVtQXSAtIHBhcmVudCBlbGVtZW50
IHdpdGggYSBwcm9wZXJ0eSB0aGF0IGNyZWF0ZXMgYSBzdGFja2luZyBjb250ZXh0IChlLmcuIDxj
b2RlPnBvc2l0aW9uOmZpeGVkPC9jb2RlPik7IHRoZSBlbGVtZW50IDxjb2RlPmJhY2tncm91bmQt
Y29sb3I8L2NvZGU+IGlzIG90aGVyIHRoYW4gPGNvZGU+dHJhbnNwYXJlbnQ8L2NvZGU+PGJyPgog
CQkJCQkJCQlbSU4tUF0gLSBJbnRlcm1lZGlhdGUgY2hpbGQgZWxlbWVudCBiZXR3ZWVuIHRoZSBw
YXJlbnQgW1BdIGFuZCB0aGUgY2hpbGQgW0JdPGJyPgogCQkJCQkJCQlUaGUgaW50ZXJtZWRpYXRl
IGVsZW1lbnQgaGFzIHRleHQgY29udGVudCwgZGVmYXVsdCB2YWx1ZSBmb3IgPGNvZGU+YmFja2dy
b3VuZC1jb2xvcjwvY29kZT4gYW5kIDxjb2RlPmlzb2xhdGlvbjppc29sYXRlPC9jb2RlPiBzZXQ8
YnI+Ci0JCQkJCQkJCVtCXSAtIGVsZW1lbnQgd2l0aCA8Y29kZT5taXgtYmxlbmQtbW9kZTwvY29k
ZT4gb3RoZXIgdGhhbiA8Y29kZT5ub3JtYWw8L2Q+CisJCQkJCQkJCVtCXSAtIGVsZW1lbnQgd2l0
aCA8Y29kZT5taXgtYmxlbmQtbW9kZTwvY29kZT4gb3RoZXIgdGhhbiA8Y29kZT5ub3JtYWw8L2Qg
PGJyPgogCQkJCQkJCTx0ZD4KIAkJCQkJCQkJVGhlIGNvbG9yIG9mIHRoZSBjaGlsZCBlbGVtZW50
IFtCXSBtaXhlcyB3aXRoIHRoZSBjb2xvciBvZiB0aGUgaW50ZXJtZWRpYXRlIGVsZW1lbnQgW0lO
LVBdLCB3aGVyZSB0aGV5IG92ZXJsYXAuPGJyPgogCQkJCQkJCQlUaGVyZSBpcyBubyBibGVuZGlu
ZyBiZXR3ZWVuIHRoZSBjb2xvciBvZiB0aGUgcGFyZW50IGVsZW1lbnQgW1BdIGFuZCB0aGUgY29s
b3Igb2YgdGhlIGJsZW5kZWQgZWxlbWVudCBbQl0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDNhMzE3YTdmMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVu
Y2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC8yZC5jb21wb3NpdGUuaW1hZ2UuZGVzdGluYXRpb24t
b3Zlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2Fs
aWduLWNvbnRlbnQtd3JhcC0wMDIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRh
L3dwdC93ZWlnaHRlZC9iaWc1X2NoYXJzX2V4dHJhLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNo
bWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZmV0Y2guaHR0cC5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9i
ZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFsaWQtMDAx
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZ3JpZC1h
dXRvLWZpbGwtcm93cy0wMDEuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dw
dC93ZWlnaHRlZC9tYXNvbnJ5LWl0ZW0tcGxhY2VtZW50LTAwNi5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL21vei1jc3MyMS10YWJsZS1wYWdlLWJyZWFr
LWluc2lkZS1hdm9pZC0yLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQv
d2VpZ2h0ZWQvcHJlLWZsb2F0LTAwMS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2Rh
dGEvd3B0L3dlaWdodGVkL3Rlc3QtcGxhbi5zcmMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2ht
YXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90b0Jsb2IucG5nLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Jl
bmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvd2lsbC1jaGFuZ2UtYWJzcG9zLWNiLTAwMS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2JlbmNobWFya3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDI0YmUyMmY2YzA1Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvYmVuY2htYXJrcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9iZW5jaF9odG1sLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9iZW5jaG1hcmtzL2JlbmNoX3dwdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9kb2MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ3MDFhYmY4ZjVmLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9NYWtlZmlsZQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvZG9jL2NoYW5nZXMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvY29uZi5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLmZpbHRlcnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9k
b2MvaHRtbDVsaWIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvaHRtbDVsaWIudHJlZWFkYXB0ZXJz
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLnRyZWVidWlsZGVycy5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2RvYy9odG1sNWxpYi50cmVld2Fsa2Vycy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Rv
Yy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9saWNlbnNlLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvZG9jL21ha2UuYmF0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvbW9kdWxlcy5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2RvYy9tb3ZpbmdwYXJ0cy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvX3RyaWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmll
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDBmMWI1NTA1
MDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmllL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi9fdHJpZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvX3RyaWUvX2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmllL3B5LnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4
NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmls
dGVycy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19p
bml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGVmNTIxMzIyNzEuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL2ZpbHRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRl
cnMvYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmls
dGVycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2luamVjdF9tZXRh
X2NoYXJzZXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvbGludC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9vcHRpb25hbHRhZ3MucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2h0bWw1bGliL2ZpbHRlcnMvc2FuaXRpemVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxp
Yi9maWx0ZXJzL3doaXRlc3BhY2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvdGVzdHMvc2FuaXRpemVyLXRlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NjUzZWQ2NTQ2OC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2FuaXRpemVyLXRlc3RkYXRhL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdGVzdHMxLmRhdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxpemVyLXRlc3RkYXRhL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxpemVyLXRl
c3RkYXRhL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDIy
ZGExOGNkNWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3Rz
L3NlcmlhbGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6
ZXItdGVzdGRhdGEvY29yZS50ZXN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJp
YWxpemVyLXRlc3RkYXRhL2luamVjdG1ldGEudGVzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0YS9vcHRpb25hbHRhZ3MudGVzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0YS9vcHRpb25zLnRlc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvd2hpdGVzcGFjZS50
ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyY2FhNDUxNjY4Li4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDM3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL2NvbmZ0ZXN0LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL3Rlc3RzL3N1cHBvcnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3Rz
L3Rlc3RfYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dGVzdHMvdGVzdF9lbmNvZGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVz
dF9tZXRhLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X29wdGlvbmFsdGFn
c19maWx0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfcGFyc2VyMi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zYW5pdGl6ZXIucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3Rlc3RzL3Rlc3RfdG9rZW5pemVyMi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMv
dGVzdF90cmVlYWRhcHRlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rf
dHJlZXdhbGtlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rfd2hpdGVz
cGFjZV9maWx0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rva2VuaXplci5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdG9rZW5pemVydG90cmVlLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90cmVlX2NvbnN0cnVjdGlvbi5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvaHRtbDVsaWIvdGVzdHMvdXMtYXNjaWkuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvdGVzdHMvdXRmLTgtYm9tLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvdHJlZWFkYXB0ZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90
cmVlYWRhcHRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhkMGZmNzg4NTExNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dHJlZWFkYXB0ZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy9nZW5zaGkucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy9zYXgucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNkMDRjNWEyODQ2Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVp
bGRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy9i
YXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZG9tLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZXRyZWUucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL3RyZWVidWlsZGVycy9ldHJlZV9seG1sLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDQ2ZDA1NWIwZGQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL2Jhc2UucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL2RvbS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvZXRyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3RyZWV3YWxrZXJzL2V0cmVlX2x4bWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3
YWxrZXJzL2dlbnNoaS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTA1NjFjYzJjNy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9faWhhdGV4bWwucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL19pbnB1dHN0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3Rva2VuaXpl
ci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3V0aWxzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9jb25zdGFudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2h0bWw1cGFyc2Vy
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9zZXJpYWxpemVyLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL3V0aWxzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi91dGlscy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMxZTAwMzllZjQw
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi91dGlscy93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdXRp
bHMvZW50aXRpZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyNGI4MzQzOTdjMGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9BVVRIT1JTLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvQ0hBTkdFUy5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL0NPTlRSSUJVVElORy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL0xJQ0VOU0UKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9SRUFETUUucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9kZWJ1Zy1pbmZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9mbGFrZTgtcnVuLnNoCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9wYXJzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvcHl0ZXN0LmluaQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvcmVxdWlyZW1lbnRzLWluc3RhbGwuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3JlcXVpcmVtZW50cy1v
cHRpb25hbC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3JlcXVpcmVtZW50cy10ZXN0LnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvcmVxdWlyZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvc2V0dXAuY2ZnCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdG94LmluaQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9jb21tb24vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L2NvbW1vbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Vl
MDgxODExNDA4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h5cGVyL2h5cGVyL2NvbW1vbi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9u
L2J1ZnNvY2tldC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL2Nvbm5lY3Rpb24ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyL2h5cGVyL2NvbW1vbi9kZWNvZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21t
b24vZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL2hlYWRlcnMucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyL2h5cGVyL2NvbW1vbi91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2gyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwZTI2OTRmZTM2Li4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDI3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2NvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIv
Y29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXJyb3JzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9oMi9ldmVudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2V4Y2VwdGlvbnMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyL2h5cGVyL2gyL2ZyYW1lX2J1ZmZlci5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIv
aDIvc2V0dGluZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3N0cmVhbS5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvaDIvdXRpbGl0aWVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93aW5kb3dzLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAxMS93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaHR0cDExL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4Y2I3Y2U3NWZkMjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2h0dHAxMS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9odHRwMTEvY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL3Bh
cnNlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL3Jlc3BvbnNlLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvaHR0cDIwL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
M2FmODY1NWVjNjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaHR0cDIwL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRw
MjAvY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL2Vycm9ycy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaHR0cDIwL2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0
dHAyMC9yZXNwb25zZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL3N0cmVhbS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaHR0cDIwL3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC93
aW5kb3cucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2svdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2hwYWNrL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTUwMDU0NTc2MzQuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2hwYWNrL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9wYWNrYWdlcy9ocGFjay9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMv
aHBhY2svY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9leGNlcHRp
b25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9ocGFjay5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2svaHBhY2tfY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9wYWNrYWdlcy9ocGFjay9odWZmbWFuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdl
cy9ocGFjay9odWZmbWFuX2NvbnN0YW50cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhN2YwYmZmMzk2NjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L3BhY2thZ2VzL2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwx
OSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2h5cGVyZnJhbWUv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2h5cGVyZnJhbWUvZmxhZ3Mu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2h5cGVyZnJhbWUvZnJhbWUucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4MmM0OGFjMGUwLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2L3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdl
cy9yZmMzOTg2L0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvYXBpLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oeXBlci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2L2NvbXBhdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvcGFja2FnZXMvcmZjMzk4Ni9leGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNr
YWdlcy9yZmMzOTg2L21pc2MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYv
bm9ybWFsaXplcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvcGFyc2Vy
ZXN1bHQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvdXJpLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
eXBlci9oeXBlci9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzg3OTQxZDJhYTRlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvX19pbml0X18ucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTllNjE5ZDNlZWYu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9fX2lu
aXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY2VydHMucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9j
bGkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29u
dHJpYi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cGxpYl9jb21wYXQucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
L2h5cGVyL3NzbF9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3Rscy5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlku
cnN0CmluZGV4IDIyY2Q4N2ViMzQ1OC4uMTcyYjJiOTFiYWY5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyZnJhbWUvSElTVE9SWS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlkucnN0CkBA
IC00LDYgKzQsMTggQEAgUmVsZWFzZSBIaXN0b3J5CiA2LjAuMGRldjAKIC0tLS0tLS0tLQogCis1
LjIuMCAoMjAxOS0wMS0xOCkKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisqKkFQSSBDaGFuZ2VzIChC
YWNrd2FyZC1jb21wYXRpYmxlKSoqCisKKy0gQWRkIGEgbmV3IEVOQUJMRV9DT05ORUNUX1BST1RP
Q09MIHNldHRpbmdzIHBhcmFtdGVyLgorCisqKk90aGVyIENoYW5nZXMqKgorCistIEZpeCBjb2xs
ZWN0aW9ucy5hYmMgZGVwcmVjYXRpb24uCistIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuMyBh
bmQgc3VwcG9ydCAzLjcuCisKIDUuMS4wICgyMDE3LTA0LTI0KQogLS0tLS0tLS0tLS0tLS0tLS0t
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFt
ZS9QS0ctSU5GTwppbmRleCAzOTNjMWU4ZDg2ZDAuLmNmZDUzZjdlOTM4MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlcmZyYW1lL1BLRy1JTkZPCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9QS0ctSU5GTwpA
QCAtMSw4ICsxLDggQEAKIE1ldGFkYXRhLVZlcnNpb246IDEuMQogTmFtZTogaHlwZXJmcmFtZQot
VmVyc2lvbjogNS4xLjAKK1ZlcnNpb246IDUuMi4wCiBTdW1tYXJ5OiBIVFRQLzIgZnJhbWluZyBs
YXllciBmb3IgUHl0aG9uCi1Ib21lLXBhZ2U6IGh0dHA6Ly9oeXBlci5ydGZkLm9yZworSG9tZS1w
YWdlOiBodHRwczovL3B5dGhvbi1oeXBlci5vcmcvaHlwZXJmcmFtZS9lbi9sYXRlc3QvCiBBdXRo
b3I6IENvcnkgQmVuZmllbGQKIEF1dGhvci1lbWFpbDogY29yeUBsdWthc2EuY28udWsKIExpY2Vu
c2U6IE1JVCBMaWNlbnNlCkBAIC01Myw2ICs1MywxOCBAQCBEZXNjcmlwdGlvbjogPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgNi4wLjBkZXYwCiAgICAgICAg
IC0tLS0tLS0tLQogICAgICAgICAKKyAgICAgICAgNS4yLjAgKDIwMTktMDEtMTgpCisgICAgICAg
IC0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgKipBUEkgQ2hhbmdlcyAoQmFj
a3dhcmQtY29tcGF0aWJsZSkqKgorICAgICAgICAKKyAgICAgICAgLSBBZGQgYSBuZXcgRU5BQkxF
X0NPTk5FQ1RfUFJPVE9DT0wgc2V0dGluZ3MgcGFyYW10ZXIuCisgICAgICAgIAorICAgICAgICAq
Kk90aGVyIENoYW5nZXMqKgorICAgICAgICAKKyAgICAgICAgLSBGaXggY29sbGVjdGlvbnMuYWJj
IGRlcHJlY2F0aW9uLgorICAgICAgICAtIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuMyBhbmQg
c3VwcG9ydCAzLjcuCisgICAgICAgIAogICAgICAgICA1LjEuMCAoMjAxNy0wNC0yNCkKICAgICAg
ICAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIApAQCAtMjIzLDggKzIzNSw4IEBAIENsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbgogQ2xhc3NpZmllcjogUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKIENsYXNzaWZpZXI6IFByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcKIENsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdl
IDo6IFB5dGhvbiA6OiAzCi1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMy4zCiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjog
My40CiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy41CiBD
bGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42CitDbGFzc2lm
aWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43CiBDbGFzc2lmaWVyOiBQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlO
Rk8gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS5lZ2ctaW5mby9QS0ctSU5GTwppbmRleCAz
OTNjMWU4ZDg2ZDAuLmNmZDUzZjdlOTM4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5
cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlORk8KKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJh
bWUuZWdnLWluZm8vUEtHLUlORk8KQEAgLTEsOCArMSw4IEBACiBNZXRhZGF0YS1WZXJzaW9uOiAx
LjEKIE5hbWU6IGh5cGVyZnJhbWUKLVZlcnNpb246IDUuMS4wCitWZXJzaW9uOiA1LjIuMAogU3Vt
bWFyeTogSFRUUC8yIGZyYW1pbmcgbGF5ZXIgZm9yIFB5dGhvbgotSG9tZS1wYWdlOiBodHRwOi8v
aHlwZXIucnRmZC5vcmcKK0hvbWUtcGFnZTogaHR0cHM6Ly9weXRob24taHlwZXIub3JnL2h5cGVy
ZnJhbWUvZW4vbGF0ZXN0LwogQXV0aG9yOiBDb3J5IEJlbmZpZWxkCiBBdXRob3ItZW1haWw6IGNv
cnlAbHVrYXNhLmNvLnVrCiBMaWNlbnNlOiBNSVQgTGljZW5zZQpAQCAtNTMsNiArNTMsMTggQEAg
RGVzY3JpcHRpb246ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAg
ICAgIDYuMC4wZGV2MAogICAgICAgICAtLS0tLS0tLS0KICAgICAgICAgCisgICAgICAgIDUuMi4w
ICgyMDE5LTAxLTE4KQorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAg
ICAgICoqQVBJIENoYW5nZXMgKEJhY2t3YXJkLWNvbXBhdGlibGUpKioKKyAgICAgICAgCisgICAg
ICAgIC0gQWRkIGEgbmV3IEVOQUJMRV9DT05ORUNUX1BST1RPQ09MIHNldHRpbmdzIHBhcmFtdGVy
LgorICAgICAgICAKKyAgICAgICAgKipPdGhlciBDaGFuZ2VzKioKKyAgICAgICAgCisgICAgICAg
IC0gRml4IGNvbGxlY3Rpb25zLmFiYyBkZXByZWNhdGlvbi4KKyAgICAgICAgLSBEcm9wIHN1cHBv
cnQgZm9yIFB5dGhvbiAzLjMgYW5kIHN1cHBvcnQgMy43LgorICAgICAgICAKICAgICAgICAgNS4x
LjAgKDIwMTctMDQtMjQpCiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAKQEAg
LTIyMyw4ICsyMzUsOCBAQCBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24KIENsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyCiBDbGFz
c2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43CiBDbGFzc2lmaWVy
OiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMwotQ2xhc3NpZmllcjogUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuMwogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcg
TGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNAogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3Vh
Z2UgOjogUHl0aG9uIDo6IDMuNQogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDMuNgorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9u
IDo6IDMuNwogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IElt
cGxlbWVudGF0aW9uIDo6IENQeXRob24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBl
cmZyYW1lLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJh
bWUuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGEwNzY5ZDUyNGY4Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZy
YW1lLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlORk8K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHlwZXJmcmFtZS9oeXBlcmZyYW1lLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJh
bWUvaHlwZXJmcmFtZS9fX2luaXRfXy5weQppbmRleCA4ZmQxY2QzMzg4YjUuLjc2MjBiNGJkZjdm
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvX19pbml0X18ucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvX19pbml0X18ucHkKQEAgLTUsNCArNSw0IEBA
IGh5cGVyZnJhbWUKIAogQSBtb2R1bGUgZm9yIHByb3ZpZGluZyBhIHB1cmUtUHl0aG9uIEhUVFAv
MiBmcmFtaW5nIGxheWVyLgogIiIiCi1fX3ZlcnNpb25fXyA9ICc1LjEuMCcKK19fdmVyc2lvbl9f
ID0gJzUuMi4wJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvZmxhZ3Mu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS9mbGFncy5weQppbmRleCAwNWIzNTAxN2U3
MDIuLjE2NjBiZDE4MDBhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUv
ZmxhZ3MucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvZmxhZ3MucHkKQEAgLTcs
MTEgKzcsMTYgQEAgRGVmaW5lcyBiYXNpYyBGbGFnIGFuZCBGbGFncyBkYXRhIHN0cnVjdHVyZXMu
CiAiIiIKIGltcG9ydCBjb2xsZWN0aW9ucwogCit0cnk6CisgICAgZnJvbSBjb2xsZWN0aW9ucy5h
YmMgaW1wb3J0IE11dGFibGVTZXQKK2V4Y2VwdCBJbXBvcnRFcnJvcjogICMgcHJhZ21hOiBubyBj
b3ZlcgorICAgICMgUHl0aG9uIDIuNyBjb21wYXRpYmlsaXR5CisgICAgZnJvbSBjb2xsZWN0aW9u
cyBpbXBvcnQgTXV0YWJsZVNldAogCiBGbGFnID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiRmxh
ZyIsIFsibmFtZSIsICJiaXQiXSkKIAogCi1jbGFzcyBGbGFncyhjb2xsZWN0aW9ucy5NdXRhYmxl
U2V0KToKK2NsYXNzIEZsYWdzKE11dGFibGVTZXQpOgogICAgICIiIgogICAgIEEgc2ltcGxlIE11
dGFibGVTZXQgaW1wbGVtZW50YXRpb24gdGhhdCB3aWxsIG9ubHkgYWNjZXB0IGtub3duIGZsYWdz
IGFzCiAgICAgZWxlbWVudHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFt
ZS9mcmFtZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL2ZyYW1lLnB5CmluZGV4IDUy
OTQ3NjhhMjg4MC4uNzk1MDU3Mjc5YjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlw
ZXJmcmFtZS9mcmFtZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS9mcmFtZS5w
eQpAQCAtMzk1LDYgKzM5NSw4IEBAIGNsYXNzIFNldHRpbmdzRnJhbWUoRnJhbWUpOgogICAgIE1B
WF9GUkFNRV9TSVpFID0gMHgwNQogICAgICM6IFRoZSBieXRlIHRoYXQgc2lnbmFscyB0aGUgU0VU
VElOR1NfTUFYX0hFQURFUl9MSVNUX1NJWkUgc2V0dGluZy4KICAgICBNQVhfSEVBREVSX0xJU1Rf
U0laRSA9IDB4MDYKKyAgICAjOiBUaGUgYnl0ZSB0aGF0IHNpZ25hbHMgU0VUVElOR1NfRU5BQkxF
X0NPTk5FQ1RfUFJPVE9DT0wgc2V0dGluZy4KKyAgICBFTkFCTEVfQ09OTkVDVF9QUk9UT0NPTCA9
IDB4MDgKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW1faWQ9MCwgc2V0dGluZ3M9Tm9u
ZSwgKiprd2FyZ3MpOgogICAgICAgICBzdXBlcihTZXR0aW5nc0ZyYW1lLCBzZWxmKS5fX2luaXRf
XyhzdHJlYW1faWQsICoqa3dhcmdzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVy
ZnJhbWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmNWI1ZjI4NGZlLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUv
aHlwZXJmcmFtZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL2V4Y2Vw
dGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS9mbGFncy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXJmcmFtZS9oeXBlcmZyYW1lL2ZyYW1lLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUv
c2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3NldHVwLmNmZwppbmRleCAxZTNlYjM2N2MxMTYu
LjUwMjIwZTEzNWJjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3NldHVwLmNmZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAuY2ZnCkBAIC0xLDYgKzEsOSBAQAogW3doZWVsXQogdW5p
dmVyc2FsID0gMQogCitbdG9vbDpweXRlc3RdCit0ZXN0cGF0aHMgPSB0ZXN0CisKIFtlZ2dfaW5m
b10KIHRhZ19idWlsZCA9IAogdGFnX2RhdGUgPSAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJh
bWUvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAucHkKaW5kZXggOGYxM2MyNjM5ZjUx
Li4xYWI3MjEyMTQxNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9zZXR1cC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAucHkKQEAgLTM2LDcgKzM2LDcgQEAgc2V0dXAoCiAgICAg
bG9uZ19kZXNjcmlwdGlvbj1vcGVuKCdSRUFETUUucnN0JykucmVhZCgpICsgJ1xuXG4nICsgb3Bl
bignSElTVE9SWS5yc3QnKS5yZWFkKCksCiAgICAgYXV0aG9yPSdDb3J5IEJlbmZpZWxkJywKICAg
ICBhdXRob3JfZW1haWw9J2NvcnlAbHVrYXNhLmNvLnVrJywKLSAgICB1cmw9J2h0dHA6Ly9oeXBl
ci5ydGZkLm9yZycsCisgICAgdXJsPSdodHRwczovL3B5dGhvbi1oeXBlci5vcmcvaHlwZXJmcmFt
ZS9lbi9sYXRlc3QvJywKICAgICBwYWNrYWdlcz1wYWNrYWdlcywKICAgICBwYWNrYWdlX2RhdGE9
eycnOiBbJ0xJQ0VOU0UnLCAnUkVBRE1FLnJzdCcsICdDT05UUklCVVRPUlMucnN0JywgJ0hJU1RP
UlkucnN0J119LAogICAgIHBhY2thZ2VfZGlyPXsnaHlwZXJmcmFtZSc6ICdoeXBlcmZyYW1lJ30s
CkBAIC01MCwxMCArNTAsMTAgQEAgc2V0dXAoCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogMicsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMi43JywKICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAz
JywKLSAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjMnLAogICAg
ICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNCcsCiAgICAgICAgICdQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy41JywKICAgICAgICAgJ1Byb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjYnLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDMuNycsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbicsCiAgICAgXSwKICkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZy
YW1lL3Rlc3QvdGVzdF9mcmFtZXMucHkKaW5kZXggOTQ4MzQ5YTkxZTdlLi5hYmZlY2I2OTJkYzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5CkBAIC01NiwyOSArNTYsMjkgQEAgY2xh
c3MgVGVzdEdlbmVyYWxGcmFtZUJlaGF2aW91cihvYmplY3QpOgogICAgICAgICBhc3NlcnQgZi5z
dHJlYW1faWQgPT0gMAogCiAgICAgZGVmIHRlc3RfcGFyc2VfZnJhbWVfaGVhZGVyX3Vua25vd25f
dHlwZShzZWxmKToKLSAgICAgICAgZiwgbCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKKyAg
ICAgICAgZnJhbWUsIGxlbmd0aCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKICAgICAgICAg
ICAgIGInXHgwMFx4MDBceDU5XHhGRlx4MDBceDAwXHgwMFx4MDBceDAxJwogICAgICAgICApCi0g
ICAgICAgIGFzc2VydCBmLnR5cGUgPT0gMHhGRgotICAgICAgICBhc3NlcnQgbCA9PSAweDU5Ci0g
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGYsIEV4dGVuc2lvbkZyYW1lKQotICAgICAgICBhc3Nl
cnQgZi5zdHJlYW1faWQgPT0gMQorICAgICAgICBhc3NlcnQgZnJhbWUudHlwZSA9PSAweEZGCisg
ICAgICAgIGFzc2VydCBsZW5ndGggPT0gMHg1OQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShm
cmFtZSwgRXh0ZW5zaW9uRnJhbWUpCisgICAgICAgIGFzc2VydCBmcmFtZS5zdHJlYW1faWQgPT0g
MQogCiAgICAgZGVmIHRlc3RfZmxhZ3NfYXJlX3BlcnNpc3RlZChzZWxmKToKLSAgICAgICAgZiwg
bCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKKyAgICAgICAgZnJhbWUsIGxlbmd0aCA9IEZy
YW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKICAgICAgICAgICAgIGInXHgwMFx4MDBceDU5XHhGRlx4
MDlceDAwXHgwMFx4MDBceDAxJwogICAgICAgICApCi0gICAgICAgIGFzc2VydCBmLnR5cGUgPT0g
MHhGRgotICAgICAgICBhc3NlcnQgbCA9PSAweDU5Ci0gICAgICAgIGFzc2VydCBmLmZsYWdfYnl0
ZSA9PSAweDA5CisgICAgICAgIGFzc2VydCBmcmFtZS50eXBlID09IDB4RkYKKyAgICAgICAgYXNz
ZXJ0IGxlbmd0aCA9PSAweDU5CisgICAgICAgIGFzc2VydCBmcmFtZS5mbGFnX2J5dGUgPT0gMHgw
OQogCiAgICAgZGVmIHRlc3RfcGFyc2VfYm9keV91bmtub3duX3R5cGUoc2VsZik6Ci0gICAgICAg
IGYgPSBkZWNvZGVfZnJhbWUoCisgICAgICAgIGZyYW1lID0gZGVjb2RlX2ZyYW1lKAogICAgICAg
ICAgICAgYidceDAwXHgwMFx4MENceEZGXHgwMFx4MDBceDAwXHgwMFx4MDFoZWxsbyB3b3JsZCEn
CiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGYuYm9keSA9PSBiJ2hlbGxvIHdvcmxkIScKLSAg
ICAgICAgYXNzZXJ0IGYuYm9keV9sZW4gPT0gMTIKLSAgICAgICAgYXNzZXJ0IGYuc3RyZWFtX2lk
ID09IDEKKyAgICAgICAgYXNzZXJ0IGZyYW1lLmJvZHkgPT0gYidoZWxsbyB3b3JsZCEnCisgICAg
ICAgIGFzc2VydCBmcmFtZS5ib2R5X2xlbiA9PSAxMgorICAgICAgICBhc3NlcnQgZnJhbWUuc3Ry
ZWFtX2lkID09IDEKIAogICAgIGRlZiB0ZXN0X2Nhbl9yb3VuZF90cmlwX3Vua25vd25fZnJhbWVz
KHNlbGYpOgogICAgICAgICBmcmFtZV9kYXRhID0gYidceDAwXHgwMFx4MENceEZGXHgwMFx4MDBc
eDAwXHgwMFx4MDFoZWxsbyB3b3JsZCEnCkBAIC0zMDYsMTMgKzMwNiwxNCBAQCBjbGFzcyBUZXN0
UnN0U3RyZWFtRnJhbWUob2JqZWN0KToKIAogY2xhc3MgVGVzdFNldHRpbmdzRnJhbWUob2JqZWN0
KToKICAgICBzZXJpYWxpemVkID0gKAotICAgICAgICBiJ1x4MDBceDAwXHgyNFx4MDRceDAxXHgw
MFx4MDBceDAwXHgwMCcgKyAgIyBGcmFtZSBoZWFkZXIKKyAgICAgICAgYidceDAwXHgwMFx4MkFc
eDA0XHgwMVx4MDBceDAwXHgwMFx4MDAnICsgICMgRnJhbWUgaGVhZGVyCiAgICAgICAgIGInXHgw
MFx4MDFceDAwXHgwMFx4MTBceDAwJyArICAgICAgICAgICAgICAjIEhFQURFUl9UQUJMRV9TSVpF
CiAgICAgICAgIGInXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwJyArICAgICAgICAgICAgICAjIEVO
QUJMRV9QVVNICiAgICAgICAgIGInXHgwMFx4MDNceDAwXHgwMFx4MDBceDY0JyArICAgICAgICAg
ICAgICAjIE1BWF9DT05DVVJSRU5UX1NUUkVBTVMKICAgICAgICAgYidceDAwXHgwNFx4MDBceDAw
XHhGRlx4RkYnICsgICAgICAgICAgICAgICMgSU5JVElBTF9XSU5ET1dfU0laRQogICAgICAgICBi
J1x4MDBceDA1XHgwMFx4MDBceDQwXHgwMCcgKyAgICAgICAgICAgICAgIyBNQVhfRlJBTUVfU0la
RQotICAgICAgICBiJ1x4MDBceDA2XHgwMFx4MDBceEZGXHhGRicgICAgICAgICAgICAgICAgIyBN
QVhfSEVBREVSX0xJU1RfU0laRQorICAgICAgICBiJ1x4MDBceDA2XHgwMFx4MDBceEZGXHhGRicg
KyAgICAgICAgICAgICAgIyBNQVhfSEVBREVSX0xJU1RfU0laRQorICAgICAgICBiJ1x4MDBceDA4
XHgwMFx4MDBceDAwXHgwMScgICAgICAgICAgICAgICAgIyBFTkFCTEVfQ09OTkVDVF9QUk9UT0NP
TAogICAgICkKIAogICAgIHNldHRpbmdzID0gewpAQCAtMzIyLDYgKzMyMyw3IEBAIGNsYXNzIFRl
c3RTZXR0aW5nc0ZyYW1lKG9iamVjdCk6CiAgICAgICAgIFNldHRpbmdzRnJhbWUuSU5JVElBTF9X
SU5ET1dfU0laRTogNjU1MzUsCiAgICAgICAgIFNldHRpbmdzRnJhbWUuTUFYX0ZSQU1FX1NJWkU6
IDE2Mzg0LAogICAgICAgICBTZXR0aW5nc0ZyYW1lLk1BWF9IRUFERVJfTElTVF9TSVpFOiA2NTUz
NSwKKyAgICAgICAgU2V0dGluZ3NGcmFtZS5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTDogMSwKICAg
ICB9CiAKICAgICBkZWYgdGVzdF9zZXR0aW5nc19mcmFtZV9oYXNfb25seV9vbmVfZmxhZyhzZWxm
KToKQEAgLTM1OSw3ICszNjEsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3NGcmFtZShvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmLCBTZXR0aW5nc0ZyYW1lKQogICAgICAgICBhc3Nl
cnQgZi5mbGFncyA9PSBzZXQoWydBQ0snXSkKICAgICAgICAgYXNzZXJ0IGYuc2V0dGluZ3MgPT0g
c2VsZi5zZXR0aW5ncwotICAgICAgICBhc3NlcnQgZi5ib2R5X2xlbiA9PSAzNgorICAgICAgICBh
c3NlcnQgZi5ib2R5X2xlbiA9PSA0MgogCiAgICAgZGVmIHRlc3Rfc2V0dGluZ3NfZnJhbWVzX25l
dmVyX2hhdmVfc3RyZWFtcyhzZWxmKToKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVl
RXJyb3IpOgpAQCAtNTE5LDYgKzUyMSwxOSBAQCBjbGFzcyBUZXN0R29Bd2F5RnJhbWUob2JqZWN0
KToKICAgICAgICAgYXNzZXJ0IGYuYWRkaXRpb25hbF9kYXRhID09IGInaGVsbG8nCiAgICAgICAg
IGFzc2VydCBmLmJvZHlfbGVuID09IDEzCiAKKyAgICAgICAgcyA9ICgKKyAgICAgICAgICAgIGIn
XHgwMFx4MDBceDA4XHgwN1x4MDBceDAwXHgwMFx4MDBceDAwJyArICAjIEZyYW1lIGhlYWRlcgor
ICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDQwJyArICAgICAgICAgICAgICAgICAgICAgICMg
TGFzdCBTdHJlYW0gSUQKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgyMCcgKyAgICAgICAg
ICAgICAgICAgICAgICAjIEVycm9yIENvZGUKKyAgICAgICAgICAgIGInJyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZGl0aW9uYWwgZGF0YQorICAgICAgICApCisg
ICAgICAgIGYgPSBkZWNvZGVfZnJhbWUocykKKworICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShm
LCBHb0F3YXlGcmFtZSkKKyAgICAgICAgYXNzZXJ0IGYuZmxhZ3MgPT0gc2V0KCkKKyAgICAgICAg
YXNzZXJ0IGYuYWRkaXRpb25hbF9kYXRhID09IGInJworICAgICAgICBhc3NlcnQgZi5ib2R5X2xl
biA9PSA4CisKICAgICBkZWYgdGVzdF9nb2F3YXlfZnJhbWVfbmV2ZXJfaGFzX2Ffc3RyZWFtKHNl
bGYpOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAg
ICBHb0F3YXlGcmFtZShzdHJlYW1faWQ9MSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS90
ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZDY3YmY5ZjhjZC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdGVzdF9mbGFn
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmM0NDA5YTUwMS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9DT05UUklCVVRPUlMu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlkucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0xJQ0VO
U0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyZnJhbWUvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvUEtHLUlO
Rk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyZnJhbWUvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9zZXR1cC5j
ZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGli
X21ldGFkYXRhLy5naXRodWIvd29ya2Zsb3dzL21haW4ueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0
YWRhdGEvLmdpdGh1Yi93b3JrZmxvd3MvbWFpbi55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5iNTYzMjBmZDAwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS8uZ2l0aHViL3dvcmtmbG93cy9tYWluLnltbApAQCAtMCwwICsxLDEy
NiBAQAorbmFtZTogQXV0b21hdGVkIFRlc3RzCisKK29uOiBbcHVzaCwgcHVsbF9yZXF1ZXN0XQor
Citqb2JzOgorICB0ZXN0OgorICAgIHN0cmF0ZWd5OgorICAgICAgbWF0cml4OgorICAgICAgICBw
eXRob246IFsyLjcsIDMuNSwgMy42LCAzLjcsIDMuOCwgMy45XQorICAgICAgICBwbGF0Zm9ybTog
W3VidW50dS1sYXRlc3QsIG1hY29zLWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgcnVucy1v
bjogJHt7IG1hdHJpeC5wbGF0Zm9ybSB9fQorICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rp
b25zL2NoZWNrb3V0QHYyCisgICAgICAtIG5hbWU6IFNldHVwIFB5dGhvbgorICAgICAgICB1c2Vz
OiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MgorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhv
bi12ZXJzaW9uOiAke3sgbWF0cml4LnB5dGhvbiB9fQorICAgICAgLSBuYW1lOiBJbnN0YWxsIHRv
eAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgdG94Cisg
ICAgICAtIG5hbWU6IFJ1biB0ZXN0cworICAgICAgICBydW46IHRveAorICAgICAgICBlbnY6Cisg
ICAgICAgICAgVE9YRU5WOiBweXRob24KKworICBxYToKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0
ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAg
IC0gbmFtZTogU2V0dXAgUHl0aG9uCisgICAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9u
QHYyCisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuOQorICAgICAg
LSBuYW1lOiBJbnN0YWxsIHRveAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0g
cGlwIGluc3RhbGwgdG94CisgICAgICAtIG5hbWU6IFJ1biBjaGVja3MKKyAgICAgICAgcnVuOiB0
b3gKKyAgICAgICAgZW52OgorICAgICAgICAgIFRPWEVOVjogcWEKKworICBjb3ZlcmFnZToKKyAg
ICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlv
bnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gbmFtZTogU2V0dXAgUHl0aG9uCisgICAgICAgIHVzZXM6
IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9u
LXZlcnNpb246IDMuOQorICAgICAgLSBuYW1lOiBJbnN0YWxsIHRveAorICAgICAgICBydW46IHwK
KyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgdG94CisgICAgICAtIG5hbWU6IEV2YWx1
YXRlIGNvdmVyYWdlCisgICAgICAgIHJ1bjogdG94CisgICAgICAgIGVudjoKKyAgICAgICAgICBU
T1hFTlY6IGNvdgorCisgIGJlbmNobWFyazoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0Cisg
ICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gbmFt
ZTogU2V0dXAgUHl0aG9uCisgICAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisg
ICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuOQorICAgICAgLSBuYW1l
OiBJbnN0YWxsIHRveAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGlu
c3RhbGwgdG94CisgICAgICAtIG5hbWU6IFJ1biBiZW5jaG1hcmtzCisgICAgICAgIHJ1bjogdG94
CisgICAgICAgIGVudjoKKyAgICAgICAgICBUT1hFTlY6IHBlcmYKKworICBkaWZmY292OgorICAg
IHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9u
cy9jaGVja291dEB2MgorICAgICAgICB3aXRoOgorICAgICAgICAgIGZldGNoLWRlcHRoOiAwCisg
ICAgICAtIG5hbWU6IFNldHVwIFB5dGhvbgorICAgICAgICB1c2VzOiBhY3Rpb25zL3NldHVwLXB5
dGhvbkB2MgorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjkKKyAg
ICAgIC0gbmFtZTogSW5zdGFsbCB0b3gKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgcHl0aG9u
IC1tIHBpcCBpbnN0YWxsIHRveAorICAgICAgLSBuYW1lOiBFdmFsdWF0ZSBjb3ZlcmFnZQorICAg
ICAgICBydW46IHRveAorICAgICAgICBlbnY6CisgICAgICAgICAgVE9YRU5WOiBkaWZmY292CisK
KyAgZG9jczoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAt
IHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gbmFtZTogU2V0dXAgUHl0aG9uCisg
ICAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICAgIHdpdGg6CisgICAg
ICAgICAgcHl0aG9uLXZlcnNpb246IDMuOQorICAgICAgLSBuYW1lOiBJbnN0YWxsIHRveAorICAg
ICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgdG94CisgICAgICAt
IG5hbWU6IEJ1aWxkIGRvY3MKKyAgICAgICAgcnVuOiB0b3gKKyAgICAgICAgZW52OgorICAgICAg
ICAgIFRPWEVOVjogZG9jcworCisgIHJlbGVhc2U6CisgICAgbmVlZHM6IHRlc3QKKyAgICBpZjog
Z2l0aHViLmV2ZW50X25hbWUgPT0gJ3B1c2gnICYmIGNvbnRhaW5zKGdpdGh1Yi5yZWYsICdyZWZz
L3RhZ3MvJykKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisKKyAgICBzdGVwczoKKyAgICAg
IC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSBuYW1lOiBTZXR1cCBQeXRob24K
KyAgICAgICAgdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAgICAgICAgd2l0aDoKKyAg
ICAgICAgICBweXRob24tdmVyc2lvbjogMy45CisgICAgICAtIG5hbWU6IEluc3RhbGwgdG94Cisg
ICAgICAgIHJ1bjogfAorICAgICAgICAgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCB0b3gKKyAgICAg
IC0gbmFtZTogUmVsZWFzZQorICAgICAgICBydW46IHRveCAtZSByZWxlYXNlCisgICAgICAgIGVu
djoKKyAgICAgICAgICBUV0lORV9QQVNTV09SRDogJHt7IHNlY3JldHMuUFlQSV9UT0tFTiB9fQor
ICAgICAgICAgIEdJVEhVQl9UT0tFTjogJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmFlODY0ZDYxMjU5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxMyBAQAorYnVpbGQKKy9jb3ZlcmFnZS54bWwK
Ky9kaWZmY292Lmh0bWwKK2h0bWxjb3YKK2ltcG9ydGxpYl9tZXRhZGF0YS5lZ2ctaW5mbworLm15
cHlfY2FjaGUKKy8uY292ZXJhZ2UKKy8uRFNfU3RvcmUKK2FydGlmYWN0cworLmVnZ3MKKy5kb2N0
cmVlcworZGlzdAorcGlwLXdoZWVsLW1ldGFkYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxp
Yl9tZXRhZGF0YS8ucmVhZHRoZWRvY3MueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvLnJl
YWR0aGVkb2NzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhh
ZTQ0Njg0MjhiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhLy5y
ZWFkdGhlZG9jcy55bWwKQEAgLTAsMCArMSw1IEBACitweXRob246CisgIHZlcnNpb246IDMKKyAg
ZXh0cmFfcmVxdWlyZW1lbnRzOgorICAgIC0gZG9jcworICBwaXBfaW5zdGFsbDogdHJ1ZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvTElDRU5TRSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGli
X21ldGFkYXRhL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5iZTdlMDkyYjBiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS9MSUNFTlNFCkBAIC0wLDAgKzEsMTMgQEAKK0NvcHlyaWdodCAyMDE3LTIwMTkgSmFzb24gUi4g
Q29vbWJzLCBCYXJyeSBXYXJzYXcKKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1Nl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvTUFOSUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS9NQU5JRkVTVC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNm
Y2Y2ZDYzM2FkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL01B
TklGRVNULmluCkBAIC0wLDAgKzEsNSBAQAoraW5jbHVkZSAqLnB5IE1BTklGRVNULmluIExJQ0VO
U0UgUkVBRE1FLnJzdAorZ2xvYmFsLWluY2x1ZGUgKi50eHQgKi5yc3QgKi5pbmkgKi5jZmcgKi50
b21sICoud2hsICouZWdnCitleGNsdWRlIC5naXRpZ25vcmUKK3BydW5lIGJ1aWxkCitwcnVuZSAu
dG94CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9SRUFETUUucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjU2NTVkOWFiOTg3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL1JFQURNRS5yc3QKQEAgLTAsMCArMSw0MiBAQAorPT09PT09PT09PT09
PT09PT09PT09PT09PQorIGBgaW1wb3J0bGliX21ldGFkYXRhYGAKKz09PT09PT09PT09PT09PT09
PT09PT09PT0KKworYGBpbXBvcnRsaWJfbWV0YWRhdGFgYCBpcyBhIGxpYnJhcnkgdG8gYWNjZXNz
IHRoZSBtZXRhZGF0YSBmb3IgYQorUHl0aG9uIHBhY2thZ2UuCisKK0FzIG9mIFB5dGhvbiAzLjgs
IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBhZGRlZCB0byB0aGUKK2BQeXRob24gc3RhbmRh
cmQgbGlicmFyeQorPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9pbXBvcnRsaWIu
bWV0YWRhdGEuaHRtbD5gXy4KK1RoaXMgcGFja2FnZSBzdXBwbGllcyBiYWNrcG9ydHMgb2YgdGhh
dCBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZworaW1wcm92ZW1lbnRzIGFkZGVkIHRvIHN1YnNlcXVl
bnQgUHl0aG9uIHZlcnNpb25zLgorCisKK1VzYWdlCis9PT09PQorCitTZWUgdGhlIGBvbmxpbmUg
ZG9jdW1lbnRhdGlvbiA8aHR0cHM6Ly9pbXBvcnRsaWJfbWV0YWRhdGEucmVhZHRoZWRvY3MuaW8v
PmBfCitmb3IgdXNhZ2UgZGV0YWlscy4KKworYEZpbmRlciBhdXRob3JzCis8aHR0cHM6Ly9kb2Nz
LnB5dGhvbi5vcmcvMy9yZWZlcmVuY2UvaW1wb3J0Lmh0bWwjZmluZGVycy1hbmQtbG9hZGVycz5g
XyBjYW4KK2Fsc28gYWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBwYWNrYWdlIGluc3RhbGxlcnMuICBT
ZWUgdGhlIGFib3ZlIGRvY3VtZW50YXRpb24KK2ZvciBkZXRhaWxzLgorCisKK0NhdmVhdHMKKz09
PT09PT0KKworVGhpcyBwcm9qZWN0IHByaW1hcmlseSBzdXBwb3J0cyB0aGlyZC1wYXJ0eSBwYWNr
YWdlcyBpbnN0YWxsZWQgYnkgUHlQQQordG9vbHMgKG9yIG90aGVyIGNvbmZvcm1pbmcgcGFja2Fn
ZXMpLiBJdCBkb2VzIG5vdCBzdXBwb3J0OgorCistIFBhY2thZ2VzIGluIHRoZSBzdGRsaWIuCist
IFBhY2thZ2VzIGluc3RhbGxlZCB3aXRob3V0IG1ldGFkYXRhLgorCitQcm9qZWN0IGRldGFpbHMK
Kz09PT09PT09PT09PT09PQorCisgKiBQcm9qZWN0IGhvbWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBSZXBvcnQgYnVncyBhdDogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGhvbi9pbXBvcnRsaWJfbWV0YWRhdGEvaXNzdWVzCisgKiBDb2RlIGhvc3Rpbmc6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBEb2N1bWVu
dGF0aW9uOiBodHRwczovL2ltcG9ydGxpYl9tZXRhZGF0YS5yZWFkdGhlZG9jcy5pby8KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2NvZGVjb3YueW1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvY29kZWNvdi55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi42NmM3ZjRiZDE5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9t
ZXRhZGF0YS9jb2RlY292LnltbApAQCAtMCwwICsxLDIgQEAKK2NvZGVjb3Y6CisgIHRva2VuOiA1
ZWIxYmM0NS0xYjdmLTQzZTYtOGJjMS1mMmIwMjgzM2RiYTkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL2NvdmVyYWdlLmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2Nv
dmVyYWdlLmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI0ZDMx
MDJmNDI1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2NvdmVy
YWdlLmluaQpAQCAtMCwwICsxLDI0IEBACitbcnVuXQorYnJhbmNoID0gdHJ1ZQorcGFyYWxsZWwg
PSB0cnVlCitvbWl0ID0KKyAgICAgc2V0dXAqCisgICAgLnRveC8qL2xpYi9weXRob24qCisgICAg
Ki90ZXN0cy8qLnB5CisgICAgKi90ZXN0aW5nLyoucHkKKyAgICAvdXNyL2xvY2FsLyoKKyAgICAq
L21vZC5weQorcGx1Z2lucyA9CisgICAgIGNvdmVycGx1ZworCitbcmVwb3J0XQorZXhjbHVkZV9s
aW5lcyA9CisgICAgcHJhZ21hOiBub2NvdmVyCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisgICAgYXNzZXJ0XHMKKyAgICBub2NvdmVycHkk
e1BZVn0KKworW3BhdGhzXQorc291cmNlID0KKyAgICBpbXBvcnRsaWJfbWV0YWRhdGEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2NvdmVycGx1Zy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0
bGliX21ldGFkYXRhL2NvdmVycGx1Zy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjBiMGM3Y2I1NDkwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGli
X21ldGFkYXRhL2NvdmVycGx1Zy5weQpAQCAtMCwwICsxLDIxIEBACisiIiJDb3ZlcmFnZSBwbHVn
aW4gdG8gYWRkIGV4Y2x1ZGUgbGluZXMgYmFzZWQgb24gdGhlIFB5dGhvbiB2ZXJzaW9uLiIiIgor
CitpbXBvcnQgc3lzCisKK2Zyb20gY292ZXJhZ2UgaW1wb3J0IENvdmVyYWdlUGx1Z2luCisKKwor
Y2xhc3MgTXlDb25maWdQbHVnaW4oQ292ZXJhZ2VQbHVnaW4pOgorICAgIGRlZiBjb25maWd1cmUo
c2VsZiwgY29uZmlnKToKKyAgICAgICAgb3B0X25hbWUgPSAncmVwb3J0OmV4Y2x1ZGVfbGluZXMn
CisgICAgICAgIGV4Y2x1ZGVfbGluZXMgPSBjb25maWcuZ2V0X29wdGlvbihvcHRfbmFtZSkKKyAg
ICAgICAgIyBQeXRob24gPj0gMy42IGhhcyBvcy5QYXRoTGlrZS4KKyAgICAgICAgaWYgc3lzLnZl
cnNpb25faW5mbyA+PSAoMywgNik6CisgICAgICAgICAgICBleGNsdWRlX2xpbmVzLmFwcGVuZCgn
cHJhZ21hOiA+PTM2JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4Y2x1ZGVfbGluZXMu
YXBwZW5kKCdwcmFnbWE6IDw9MzUnKQorICAgICAgICBjb25maWcuc2V0X29wdGlvbihvcHRfbmFt
ZSwgZXhjbHVkZV9saW5lcykKKworCitkZWYgY292ZXJhZ2VfaW5pdChyZWcsIG9wdGlvbnMpOgor
ICAgIHJlZy5hZGRfY29uZmlndXJlcihNeUNvbmZpZ1BsdWdpbigpKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL2RvY3MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L2RvY3MvY2hhbmdlbG9nLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3MvY2hhbmdl
bG9nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM5NjUzNTc0
NGE1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3MvY2hh
bmdlbG9nLnJzdApAQCAtMCwwICsxLDMxNCBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PQor
IGltcG9ydGxpYl9tZXRhZGF0YSBORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK3Yy
LjEuMAorPT09PT09CisKKyogIzI1MzogV2hlbiBxdWVyeWluZyBmb3IgcGFja2FnZSBtZXRhZGF0
YSwgdGhlIGxvb2t1cAorICBub3cgaG9ub3JzCisgIGBwYWNrYWdlIG5vcm1hbGl6YXRpb24gcnVs
ZXMgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc3BlY2lmaWNhdGlvbnMvcmVjb3JkaW5n
LWluc3RhbGxlZC1wYWNrYWdlcy8+YF8uCisKK3YyLjAuMAorPT09PT09CisKKyogYGBpbXBvcnRs
aWJfbWV0YWRhdGFgYCBubyBsb25nZXIgcHJlc2VudHMgYQorICBgYF9fdmVyc2lvbl9fYGAgYXR0
cmlidXRlLiBDb25zdW1lcnMgd2lzaGluZyB0bworICByZXNvbHZlIHRoZSB2ZXJzaW9uIG9mIHRo
ZSBwYWNrYWdlIHNob3VsZCBxdWVyeSBpdAorICBkaXJlY3RseSB3aXRoCisgIGBgaW1wb3J0bGli
X21ldGFkYXRhLnZlcnNpb24oJ2ltcG9ydGxpYi1tZXRhZGF0YScpYGAuCisgIENsb3NlcyAjNzEu
CisKK3YxLjcuMAorPT09PT09CisKKyogYGBQYXRoTm90Rm91bmRFcnJvcmBgIG5vdyBoYXMgYSBj
dXN0b20gYGBfX3N0cl9fYGAKKyAgbWVudGlvbmluZyAicGFja2FnZSBtZXRhZGF0YSIgYmVpbmcg
bWlzc2luZyB0byBoZWxwCisgIGd1aWRlIHVzZXJzIHRvIHRoZSBjYXVzZSB3aGVuIHRoZSBwYWNr
YWdlIGlzIGluc3RhbGxlZAorICBidXQgbm8gbWV0YWRhdGEgaXMgcHJlc2VudC4gQ2xvc2VzICMx
MjQuCisKK3YxLjYuMQorPT09PT09CisKKyogQWRkZWQgYGBEaXN0cmlidXRpb24uX2xvY2FsKClg
YCBhcyBhIHByb3Zpc2lvbmFsCisgIGRlbW9uc3RyYXRpb24gb2YgaG93IHRvIGxvYWQgbWV0YWRh
dGEgZm9yIGEgbG9jYWwKKyAgcGFja2FnZS4gSW1wbGljaXRseSByZXF1aXJlcyB0aGF0CisgIGBw
ZXA1MTcgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9wZXA1MTc+YF8gaXMKKyAgaW5zdGFsbGVk
LiBSZWYgIzQyLgorKiBFbnN1cmUgaW5wdXRzIHRvIEZhc3RQYXRoIGFyZSBVbmljb2RlLiBDbG9z
ZXMgIzEyMS4KKyogVGVzdHMgbm93IHJlbHkgb24gYGBpbXBvcnRsaWIucmVzb3VyY2VzLmZpbGVz
YGAgKGFuZAorICBiYWNrcG9ydCkgaW5zdGVhZCBvZiB0aGUgb2xkZXIgYGBwYXRoYGAgZnVuY3Rp
b24uCisqIFN1cHBvcnQgYW55IGl0ZXJhYmxlIGZyb20gYGBmaW5kX2Rpc3RyaWJ1dGlvbnNgYC4K
KyAgQ2xvc2VzICMxMjIuCisKK3YxLjYuMAorPT09PT09CisKKyogQWRkZWQgYGBtb2R1bGVgYCBh
bmQgYGBhdHRyYGAgYXR0cmlidXRlcyB0byBgYEVudHJ5UG9pbnRgYAorCit2MS41LjIKKz09PT09
PQorCisqIEZpeCByZWR1bmRhbnQgZW50cmllcyBmcm9tIGBgRmFzdFBhdGguemlwX2NoaWxkcmVu
YGAuCisgIENsb3NlcyAjMTE3LgorCit2MS41LjEKKz09PT09PQorCisqIEltcHJvdmUgcmVsaWFi
aWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGNvbXBhdGliaWxpdHkKKyAgaW1wb3J0cyBmb3IgY29u
dGV4dGxpYiBhbmQgcGF0aGxpYiB3aGVuIHJ1bm5pbmcgdGVzdHMuCisgIENsb3NlcyAjMTE2Lgor
Cit2MS41LjAKKz09PT09PQorCisqIEFkZGl0aW9uYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9u
cyBpbiBGYXN0UGF0aCBub3cKKyAgc2F2ZXMgYW4gYWRkaXRpb25hbCAyMCUgb24gYSB0eXBpY2Fs
IGNhbGwuCisqIENvcnJlY3QgZm9yIGlzc3VlIHdoZXJlIFB5T3hpZGl6ZXIgZmluZGVyIGhhcyBu
bworICBgYF9fbW9kdWxlX19gYCBhdHRyaWJ1dGUuIENsb3NlcyAjMTEwLgorCit2MS40LjAKKz09
PT09PQorCisqIFRocm91Z2ggY2FyZWZ1bCBvcHRpbWl6YXRpb24sIGBgZGlzdHJpYnV0aW9uKClg
YCBpcworICAzLTR4IGZhc3Rlci4gVGhhbmtzIHRvIEFudG9ueSBMZWUgZm9yIHRoZQorICBjb250
cmlidXRpb24uIENsb3NlcyAjOTUuCisKKyogV2hlbiBzZWFyY2hpbmcgdGhyb3VnaCBgYHN5cy5w
YXRoYGAsIGlmIGFueSBlcnJvcgorICBvY2N1cnMgYXR0ZW1wdGluZyB0byBsaXN0IGEgcGF0aCBl
bnRyeSwgdGhhdCBlbnRyeQorICBpcyBza2lwcGVkLCBtYWtpbmcgdGhlIHN5c3RlbSBtdWNoIG1v
cmUgbGVuaWVudAorICB0byBlcnJvcnMuIENsb3NlcyAjOTQuCisKK3YxLjMuMAorPT09PT09CisK
KyogSW1wcm92ZSBjdXN0b20gZmluZGVycyBkb2N1bWVudGF0aW9uLiBDbG9zZXMgIzEwNS4KKwor
djEuMi4wCis9PT09PT0KKworKiBPbmNlIGFnYWluLCBkcm9wIHN1cHBvcnQgZm9yIFB5dGhvbiAz
LjQuIFJlZiAjMTA0LgorCit2MS4xLjMKKz09PT09PQorCisqIFJlc3RvcmVkIHN1cHBvcnQgZm9y
IFB5dGhvbiAzLjQgZHVlIHRvIGltcHJvcGVyIHZlcnNpb24KKyAgY29tcGF0aWJpbGl0eSBkZWNs
YXJhdGlvbnMgaW4gdGhlIHYxLjEuMCBhbmQgdjEuMS4xCisgIHJlbGVhc2VzLiBDbG9zZXMgIzEw
NC4KKwordjEuMS4yCis9PT09PT0KKworKiBSZXBhaXJlZCBwcm9qZWN0IG1ldGFkYXRhIHRvIGNv
cnJlY3RseSBkZWNsYXJlIHRoZQorICBgYHB5dGhvbl9yZXF1aXJlc2BgIGRpcmVjdGl2ZS4gQ2xv
c2VzICMxMDMuCisKK3YxLjEuMQorPT09PT09CisKKyogRml4ZWQgYGByZXByKEVudHJ5UG9pbnQp
YGAgb24gUHlQeSAzIGFsc28uIENsb3NlcyAjMTAyLgorCit2MS4xLjAKKz09PT09PQorCisqIERy
b3BwZWQgc3VwcG9ydCBmb3IgUHl0aG9uIDMuNC4KKyogRW50cnlQb2ludHMgYXJlIG5vdyBwaWNr
bGVhYmxlLiBDbG9zZXMgIzk2LgorKiBGaXhlZCBgYHJlcHIoRW50cnlQb2ludClgYCBvbiBQeVB5
IDIuIENsb3NlcyAjOTcuCisKK3YxLjAuMAorPT09PT09CisKKyogUHJvamVjdCBhZG9wdHMgc2Vt
dmVyIGZvciB2ZXJzaW9uaW5nLgorCisqIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBzaGltIGludHJv
ZHVjZWQgaW4gMC4yMy4KKworKiBGb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3Rk
bGliIGltcGxlbWVudGF0aW9uIGFuZCB0bworICBhdm9pZCB0aGUgc2FtZSBkaXN0cmlidXRpb25z
IGJlaW5nIGRpc2NvdmVyZWQgYnkgdGhlIHN0ZGxpYiBhbmQKKyAgYmFja3BvcnQgaW1wbGVtZW50
YXRpb25zLCB0aGUgYmFja3BvcnQgbm93IGRpc2FibGVzIHRoZQorICBzdGRsaWIgRGlzdHJpYnV0
aW9uRmluZGVyIGR1cmluZyBpbml0aWFsaXphdGlvbiAoaW1wb3J0IHRpbWUpLgorICBDbG9zZXMg
IzkxIGFuZCBjbG9zZXMgIzEwMC4KKworMC4yMworPT09PQorKiBBZGRlZCBhIGNvbXBhdGliaWxp
dHkgc2hpbSB0byBwcmV2ZW50IGZhaWx1cmVzIG9uIGJldGEgcmVsZWFzZXMKKyAgb2YgUHl0aG9u
IGJlZm9yZSB0aGUgc2lnbmF0dXJlIGNoYW5nZWQgdG8gYWNjZXB0IHRoZQorICAiY29udGV4dCIg
cGFyYW1ldGVyIG9uIGZpbmRfZGlzdHJpYnV0aW9ucy4gVGhpcyB3b3JrYXJvdW5kCisgIHdpbGwg
aGF2ZSBhIGxpbWl0ZWQgbGlmZXNwYW4sIG5vdCB0byBleHRlbmQgYmV5b25kIHJlbGVhc2Ugb2YK
KyAgUHl0aG9uIDMuOCBmaW5hbC4KKworMC4yMgorPT09PQorKiBSZW5hbWVkIGBgcGFja2FnZWBg
IHBhcmFtZXRlciB0byBgYGRpc3RyaWJ1dGlvbl9uYW1lYGAKKyAgYXMgYHJlY29tbWVuZGVkIDxo
dHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0NjMyI21zZzM0OTQyMz5gXworICBpbiB0aGUg
Zm9sbG93aW5nIGZ1bmN0aW9uczogYGBkaXN0cmlidXRpb25gYCwgYGBtZXRhZGF0YWBgLAorICBg
YHZlcnNpb25gYCwgYGBmaWxlc2BgLCBhbmQgYGByZXF1aXJlc2BgLiBUaGlzCisgIGJhY2t3YXJk
LWluY29tcGF0aWJsZSBjaGFuZ2UgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBsaXR0bGUgaW1wYWN0Cisg
IGFzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYXNzdW1lZCB0byBiZSBwcmltYXJpbHkgdXNlZCB3aXRo
CisgIHBvc2l0aW9uYWwgcGFyYW1ldGVycy4KKworMC4yMQorPT09PQorKiBgYGltcG9ydGxpYi5t
ZXRhZGF0YWBgIG5vdyBleHBvc2VzIHRoZSBgYERpc3RyaWJ1dGlvbkZpbmRlcmBgCisgIG1ldGFj
bGFzcyBhbmQgcmVmZXJlbmNlcyBpdCBpbiB0aGUgZG9jcyBmb3IgZXh0ZW5kaW5nIHRoZQorICBz
ZWFyY2ggYWxnb3JpdGhtLgorKiBBZGQgYGBEaXN0cmlidXRpb24uYXRgYCBmb3IgY29uc3RydWN0
aW5nIGEgRGlzdHJpYnV0aW9uIG9iamVjdAorICBmcm9tIGEga25vd24gbWV0YWRhdGEgZGlyZWN0
b3J5IG9uIHRoZSBmaWxlIHN5c3RlbS4gQ2xvc2VzICM4MC4KKyogRGlzdHJpYnV0aW9uIGZpbmRl
cnMgbm93IHJlY2VpdmUgYSBjb250ZXh0IG9iamVjdCB0aGF0CisgIHN1cHBsaWVzIGBgLnBhdGhg
YCBhbmQgYGAubmFtZWBgIHByb3BlcnRpZXMuIFRoaXMgY2hhbmdlCisgIGludHJvZHVjZXMgYSBm
dW5kYW1lbnRhbCBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHkgZm9yCisgIGFueSBwcm9qZWN0cyBp
bXBsZW1lbnRpbmcgYSBgYGZpbmRfZGlzdHJpYnV0aW9uc2BgIG1ldGhvZAorICBvbiBhIGBgTWV0
YVBhdGhGaW5kZXJgYC4gVGhpcyBuZXcgbGF5ZXIgb2YgYWJzdHJhY3Rpb24KKyAgYWxsb3dzIHRo
aXMgY29udGV4dCB0byBiZSBzdXBwbGllZCBkaXJlY3RseSBvciBjb25zdHJ1Y3RlZAorICBvbiBk
ZW1hbmQgYW5kIG9wZW5zIHRoZSBvcHBvcnR1bml0eSBmb3IgYQorICBgYGZpbmRfZGlzdHJpYnV0
aW9uc2BgIG1ldGhvZCB0byBzb2xpY2l0IGFkZGl0aW9uYWwKKyAgY29udGV4dCBmcm9tIHRoZSBj
YWxsZXIuIENsb3NlcyAjODUuCisKKzAuMjAKKz09PT0KKyogQ2xhcmlmeSBpbiB0aGUgZG9jcyB0
aGF0IGNhbGxzIHRvIGBgLmZpbGVzYGAgY291bGQgcmV0dXJuCisgIGBgTm9uZWBgIHdoZW4gdGhl
IG1ldGFkYXRhIGlzIG5vdCBwcmVzZW50LiBDbG9zZXMgIzY5LgorKiBSZXR1cm4gYWxsIHJlcXVp
cmVtZW50cyBhbmQgbm90IGp1c3QgdGhlIGZpcnN0IGZvciBkaXN0LWluZm8KKyAgcGFja2FnZXMu
IENsb3NlcyAjNjcuCisKKzAuMTkKKz09PT0KKyogUmVzdHJhaW4gb3Zlci1lYWdlciBlZ2cgbWV0
YWRhdGEgcmVzb2x1dGlvbi4KKyogQWRkIHN1cHBvcnQgZm9yIGVudHJ5IHBvaW50cyB3aXRoIGNv
bG9ucyBpbiB0aGUgbmFtZS4gQ2xvc2VzICM3NS4KKworMC4xOAorPT09PQorKiBQYXJzZSBlbnRy
eSBwb2ludHMgY2FzZSBzZW5zaXRpdmVseS4gIENsb3NlcyAjNjgKKyogQWRkIGEgdmVyc2lvbiBj
b25zdHJhaW50IG9uIHRoZSBiYWNrcG9ydCBjb25maWdwYXJzZXIgcGFja2FnZS4gIENsb3NlcyAj
NjYKKworMC4xNworPT09PQorKiBGaXggYSBwZXJtaXNzaW9uIHByb2JsZW0gaW4gdGhlIHRlc3Rz
IG9uIFdpbmRvd3MuCisKKzAuMTYKKz09PT0KKyogRG9uJ3QgY3Jhc2ggaWYgdGhlcmUgZXhpc3Rz
IGFuIEVHRy1JTkZPIGRpcmVjdG9yeSBvbiBzeXMucGF0aC4KKworMC4xNQorPT09PQorKiBGaXgg
ZG9jdW1lbnRhdGlvbi4KKworMC4xNAorPT09PQorKiBSZW1vdmVkIGBgbG9jYWxfZGlzdHJpYnV0
aW9uYGAgZnVuY3Rpb24gZnJvbSB0aGUgQVBJLgorICAqKlRoaXMgYmFja3dhcmQtaW5jb21wYXRp
YmxlIGNoYW5nZSByZW1vdmVzIHRoaXMKKyAgYmVoYXZpb3Igc3VtbWFyaWx5KiouIFByb2plY3Rz
IHNob3VsZCByZW1vdmUgdGhlaXIKKyAgcmVsaWFuY2Ugb24gdGhpcyBiZWhhdmlvci4gQSByZXBs
YWNlbWVudCBiZWhhdmlvciBpcworICB1bmRlciByZXZpZXcgaW4gdGhlIGBwZXA1MTcgcHJvamVj
dAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGVwNTE3PmBfLiBDbG9zZXMgIzQyLgorCisw
LjEzCis9PT09CisqIFVwZGF0ZSBkb2NzdHJpbmdzIHRvIG1hdGNoIFBFUCA4LiBDbG9zZXMgIzYz
LgorKiBNZXJnZWQgbW9kdWxlcyBpbnRvIG9uZSBtb2R1bGUuIENsb3NlcyAjNjIuCisKKzAuMTIK
Kz09PT0KKyogQWRkIHN1cHBvcnQgZm9yIGVnZ3MuICAhNjU7IENsb3NlcyAjMTkuCisKKzAuMTEK
Kz09PT0KKyogU3VwcG9ydCBnZW5lcmljIHppcCBmaWxlcyAobm90IGp1c3Qgd2hlZWxzKS4gIENs
b3NlcyAjNTkKKyogU3VwcG9ydCB6aXAgZmlsZXMgd2l0aCBtdWx0aXBsZSBkaXN0cmlidXRpb25z
IGluIHRoZW0uICBDbG9zZXMgIzYwCisqIEZ1bGx5IGV4cG9zZSB0aGUgcHVibGljIEFQSSBpbiBg
YGltcG9ydGxpYl9tZXRhZGF0YS5fX2FsbF9fYGAuCisKKzAuMTAKKz09PT0KKyogVGhlIGBgRGlz
dHJpYnV0aW9uYGAgQUJDIGlzIG5vdyBvZmZpY2lhbGx5IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEku
CisgIENsb3NlcyAjMzcuCisqIEZpeGVkIHN1cHBvcnQgZm9yIG9sZGVyIHNpbmdsZSBmaWxlIGVn
Zy1pbmZvIGZvcm1hdHMuICBDbG9zZXMgIzQzLgorKiBGaXhlZCBhIHRlc3RpbmcgYnVnIHdoZW4g
YGAkQ1dEYGAgaGFzIHNwYWNlcyBpbiB0aGUgcGF0aC4gIENsb3NlcyAjNTAuCisqIEFkZCBQeXRo
b24gMy44IHRvIHRoZSBgYHRveGBgIHRlc3RpbmcgbWF0cml4LgorCiswLjkKKz09PQorKiBGaXhl
ZCBpc3N1ZSB3aGVyZSBlbnRyeSBwb2ludHMgd2l0aG91dCBhbiBhdHRyaWJ1dGUgd291bGQgcmFp
c2UgYW4KKyAgRXhjZXB0aW9uLiAgQ2xvc2VzICM0MC4KKyogUmVtb3ZlZCB1bnVzZWQgYGBuYW1l
YGAgcGFyYW1ldGVyIGZyb20gYGBlbnRyeV9wb2ludHMoKWBgLiBDbG9zZXMgIzQ0LgorKiBgYERp
c3RyaWJ1dGlvbkZpbmRlcmBgIGNsYXNzZXMgbXVzdCBub3cgYmUgaW5zdGFudGlhdGVkIGJlZm9y
ZQorICBiZWluZyBwbGFjZWQgb24gYGBzeXMubWV0YV9wYXRoYGAuCisKKzAuOAorPT09CisqIFRo
aXMgbGlicmFyeSBjYW4gbm93IGRpc2NvdmVyL2VudW1lcmF0ZSBhbGwgaW5zdGFsbGVkIHBhY2th
Z2VzLiAqKlRoaXMKKyAgYmFja3dhcmQtaW5jb21wYXRpYmxlIGNoYW5nZSBhbHRlcnMgdGhlIHBy
b3RvY29sIGZpbmRlcnMgbXVzdAorICBpbXBsZW1lbnQgdG8gc3VwcG9ydCBkaXN0cmlidXRpb24g
cGFja2FnZSBkaXNjb3ZlcnkuKiogQ2xvc2VzICMyNC4KKyogVGhlIHNpZ25hdHVyZSBvZiBgYGZp
bmRfZGlzdHJpYnV0aW9ucygpYGAgb24gY3VzdG9tIGluc3RhbGxlciBmaW5kZXJzCisgIHNob3Vs
ZCBub3cgYWNjZXB0IHR3byBwYXJhbWV0ZXJzLCBgYG5hbWVgYCBhbmQgYGBwYXRoYGAgYW5kCisg
IHRoZXNlIHBhcmFtZXRlcnMgbXVzdCBzdXBwbHkgZGVmYXVsdHMuCisqIFRoZSBgYGVudHJ5X3Bv
aW50cygpYGAgbWV0aG9kIG5vIGxvbmdlciBhY2NlcHRzIGEgcGFja2FnZSBuYW1lCisgIGJ1dCBp
bnN0ZWFkIHJldHVybnMgYWxsIGVudHJ5IHBvaW50cyBpbiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkg
dGhlCisgIGBgRW50cnlQb2ludC5ncm91cGBgLiBUaGUgYGByZXNvbHZlYGAgbWV0aG9kIGhhcyBi
ZWVuIHJlbW92ZWQuIEluc3RlYWQsCisgIGNhbGwgYGBFbnRyeVBvaW50LmxvYWQoKWBgLCB3aGlj
aCBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCisgIGBgcGtnX3Jlc291cmNlc2BgIGFuZCBgYGVu
dHJ5cG9pbnRzYGAuICAqKlRoaXMgaXMgYSBiYWNrd2FyZCBpbmNvbXBhdGlibGUKKyAgY2hhbmdl
LioqCisqIE1ldGFkYXRhIGlzIG5vdyBhbHdheXMgcmV0dXJuZWQgYXMgVW5pY29kZSB0ZXh0IHJl
Z2FyZGxlc3Mgb2YKKyAgUHl0aG9uIHZlcnNpb24uIENsb3NlcyAjMjkuCisqIFRoaXMgbGlicmFy
eSBjYW4gbm93IGRpc2NvdmVyIG1ldGFkYXRhIGZvciBhICdsb2NhbCcgcGFja2FnZSAoZm91bmQK
KyAgaW4gdGhlIGN1cnJlbnQtd29ya2luZyBkaXJlY3RvcnkpLiBDbG9zZXMgIzI3LgorKiBBZGRl
ZCBgYGZpbGVzKClgYCBmdW5jdGlvbiBmb3IgcmVzb2x2aW5nIGZpbGVzIGZyb20gYSBkaXN0cmli
dXRpb24uCisqIEFkZGVkIGEgbmV3IGBgcmVxdWlyZXMoKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1
cm5zIHRoZSByZXF1aXJlbWVudHMKKyAgZm9yIGEgcGFja2FnZSBzdWl0YWJsZSBmb3IgcGFyc2lu
ZyBieQorICBgYHBhY2thZ2luZy5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRgYC4gQ2xvc2VzICMx
OC4KKyogVGhlIHRvcC1sZXZlbCBgYHJlYWRfdGV4dCgpYGAgZnVuY3Rpb24gaGFzIGJlZW4gcmVt
b3ZlZC4gIFVzZQorICBgYFBhY2thZ2VQYXRoLnJlYWRfdGV4dCgpYGAgb24gaW5zdGFuY2VzIHJl
dHVybmVkIGJ5IHRoZSBgYGZpbGVzKClgYAorICBmdW5jdGlvbi4gICoqVGhpcyBpcyBhIGJhY2t3
YXJkIGluY29tcGF0aWJsZSBjaGFuZ2UuKioKKyogUmVsZWFzZSBkYXRlcyBhcmUgbm93IGF1dG9t
YXRpY2FsbHkgaW5qZWN0ZWQgaW50byB0aGUgY2hhbmdlbG9nCisgIGJhc2VkIG9uIFNDTSB0YWdz
LgorCiswLjcKKz09PQorKiBGaXhlZCBpc3N1ZSB3aGVyZSBwYWNrYWdlcyB3aXRoIGRhc2hlcyBp
biB0aGVpciBuYW1lcyB3b3VsZAorICBub3QgYmUgZGlzY292ZXJlZC4gQ2xvc2VzICMyMS4KKyog
RGlzdHJpYnV0aW9uIGxvb2t1cCBpcyBub3cgY2FzZS1pbnNlbnNpdGl2ZS4gQ2xvc2VzICMyMC4K
KyogV2hlZWwgZGlzdHJpYnV0aW9ucyBjYW4gbm8gbG9uZ2VyIGJlIGRpc2NvdmVyZWQgYnkgdGhl
aXIgbW9kdWxlCisgIG5hbWUuIExpa2UgUGF0aCBkaXN0cmlidXRpb25zLCB0aGV5IG11c3QgYmUg
aW5kaWNhdGVkIGJ5IHRoZWlyCisgIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIG5hbWUuCisKKzAuNgor
PT09CisqIFJlbW92ZWQgYGBpbXBvcnRsaWJfbWV0YWRhdGEuZGlzdHJpYnV0aW9uYGAgZnVuY3Rp
b24uIE5vdworICB0aGUgcHVibGljIGludGVyZmFjZSBpcyBwcmltYXJpbHkgdGhlIHV0aWxpdHkg
ZnVuY3Rpb25zIGV4cG9zZWQKKyAgaW4gYGBpbXBvcnRsaWJfbWV0YWRhdGEuX19hbGxfX2BgLiBD
bG9zZXMgIzE0LgorKiBBZGRlZCB0d28gbmV3IHV0aWxpdHkgZnVuY3Rpb25zIGBgcmVhZF90ZXh0
YGAgYW5kCisgIGBgbWV0YWRhdGFgYC4KKworMC41Cis9PT0KKyogVXBkYXRlZCBSRUFETUUgYW5k
IHJlbW92ZWQgZGV0YWlscyBhYm91dCBEaXN0cmlidXRpb24KKyAgY2xhc3MsIG5vdyBjb25zaWRl
cmVkIHByaXZhdGUuIENsb3NlcyAjMTUuCisqIEFkZGVkIHRlc3Qgc3VpdGUgc3VwcG9ydCBmb3Ig
UHl0aG9uIDMuNCsuCisqIEZpeGVkIFN5bnRheEVycm9ycyBvbiBQeXRob24gMy40IGFuZCAzLjUu
ICExMgorKiBGaXhlZCBlcnJvcnMgb24gV2luZG93cyBqb2luaW5nIFBhdGggZWxlbWVudHMuICEx
NQorCiswLjQKKz09PQorKiBIb3VzZWtlZXBpbmcuCisKKzAuMworPT09CisqIEFkZGVkIHVzYWdl
IGRvY3VtZW50YXRpb24uICBDbG9zZXMgIzgKKyogQWRkIHN1cHBvcnQgZm9yIGdldHRpbmcgbWV0
YWRhdGEgZnJvbSB3aGVlbHMgb24gYGBzeXMucGF0aGBgLiAgQ2xvc2VzICM5CisKKzAuMgorPT09
CisqIEFkZGVkIGBgaW1wb3J0bGliX21ldGFkYXRhLmVudHJ5X3BvaW50cygpYGAuICBDbG9zZXMg
IzEKKyogQWRkZWQgYGBpbXBvcnRsaWJfbWV0YWRhdGEucmVzb2x2ZSgpYGAuICBDbG9zZXMgIzEy
CisqIEFkZCBzdXBwb3J0IGZvciBQeXRob24gMi43LiAgQ2xvc2VzICM0CisKKzAuMQorPT09Cisq
IEluaXRpYWwgcmVsZWFzZS4KKworCisuLgorICAgTG9jYWwgVmFyaWFibGVzOgorICAgbW9kZTog
Y2hhbmdlLWxvZy1tb2RlCisgICBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAgIHNlbnRlbmNlLWVu
ZC1kb3VibGUtc3BhY2U6IHQKKyAgIGZpbGwtY29sdW1uOiA3OAorICAgY29kaW5nOiB1dGYtOAor
ICAgRW5kOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9jb25mLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9jb25mLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTI5YTdhNGVhZWQxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9jb25mLnB5CkBAIC0wLDAgKzEsMTg1IEBACisj
IS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBpbXBv
cnRsaWJfbWV0YWRhdGEgZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNy
ZWF0ZWQgYnkKKyMgc3BoaW54LXF1aWNrc3RhcnQgb24gVGh1IE5vdiAzMCAxMDoyMTowMCAyMDE3
LgorIworIyBUaGlzIGZpbGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rv
cnkgc2V0IHRvIGl0cworIyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwg
cG9zc2libGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRv
Z2VuZXJhdGVkIGZpbGUuCisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVm
YXVsdDsgdmFsdWVzIHRoYXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUg
ZGVmYXVsdC4KKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdpdGgg
YXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGlyZWN0b3Jp
ZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUK
KyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQgYWJz
b2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KKyMKKyMgaW1wb3J0IG9zCisjIGltcG9ydCBzeXMKKyMg
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aCgnLicpKQorCisKKyMgLS0gR2VuZXJh
bCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjIElmIHlvdXIgZG9jdW1lbnRhdGlvbiBuZWVkcyBhIG1pbmltYWwgU3BoaW54
IHZlcnNpb24sIHN0YXRlIGl0IGhlcmUuCisjCisjIG5lZWRzX3NwaGlueCA9ICcxLjAnCisKKyMg
QWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJpbmdzLiBU
aGV5IGNhbiBiZQorIyBleHRlbnNpb25zIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQgJ3NwaGlu
eC5leHQuKicpIG9yIHlvdXIgY3VzdG9tCisjIG9uZXMuCitleHRlbnNpb25zID0gWworICAgICdy
c3QubGlua2VyJywKKyAgICAnc3BoaW54LmV4dC5hdXRvZG9jJywKKyAgICAnc3BoaW54LmV4dC5j
b3ZlcmFnZScsCisgICAgJ3NwaGlueC5leHQuZG9jdGVzdCcsCisgICAgJ3NwaGlueC5leHQuaW50
ZXJzcGhpbngnLAorICAgICdzcGhpbnguZXh0LnZpZXdjb2RlJywKKyAgICBdCisKKyMgQWRkIGFu
eSBwYXRocyB0aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGly
ZWN0b3J5LgordGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZmaXgo
ZXMpIG9mIHNvdXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBzdWZm
aXggYXMgYSBsaXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJzdCcsICcu
bWQnXQorc291cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJlZSBkb2N1
bWVudC4KK21hc3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgcHJvamVjdC4KK3Byb2plY3QgPSAnaW1wb3J0bGliX21ldGFkYXRhJworY29weXJpZ2h0
ID0gJzIwMTctMjAxOSwgSmFzb24gUi4gQ29vbWJzLCBCYXJyeSBXYXJzYXcnCithdXRob3IgPSAn
SmFzb24gUi4gQ29vbWJzLCBCYXJyeSBXYXJzYXcnCisKKyMgVGhlIHZlcnNpb24gaW5mbyBmb3Ig
dGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgor
IyB8dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3RoZXIgcGxh
Y2VzIHRocm91Z2hvdXQgdGhlCisjIGJ1aWx0IGRvY3VtZW50cy4KKyMKKyMgVGhlIHNob3J0IFgu
WSB2ZXJzaW9uLgordmVyc2lvbiA9ICcwLjEnCisjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGlu
ZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCityZWxlYXNlID0gJzAuMScKKworIyBUaGUgbGFuZ3VhZ2Ug
Zm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBTcGhpbnguIFJlZmVyIHRvIGRvY3VtZW50YXRp
b24KKyMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgorIworIyBUaGlzIGlzIGFs
c28gdXNlZCBpZiB5b3UgZG8gY29udGVudCB0cmFuc2xhdGlvbiB2aWEgZ2V0dGV4dCBjYXRhbG9n
cy4KKyMgVXN1YWxseSB5b3Ugc2V0ICJsYW5ndWFnZSIgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGZv
ciB0aGVzZSBjYXNlcy4KK2xhbmd1YWdlID0gTm9uZQorCisjIExpc3Qgb2YgcGF0dGVybnMsIHJl
bGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMgYW5kCisjIGRpcmVj
dG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcy4KKyMgVGhpcyBw
YXR0ZXJucyBhbHNvIGVmZmVjdCB0byBodG1sX3N0YXRpY19wYXRoIGFuZCBodG1sX2V4dHJhX3Bh
dGgKK2V4Y2x1ZGVfcGF0dGVybnMgPSBbJ19idWlsZCcsICdUaHVtYnMuZGInLCAnLkRTX1N0b3Jl
J10KKworIyBUaGUgbmFtZSBvZiB0aGUgUHlnbWVudHMgKHN5bnRheCBoaWdobGlnaHRpbmcpIHN0
eWxlIHRvIHVzZS4KK3B5Z21lbnRzX3N0eWxlID0gJ3NwaGlueCcKKworIyBJZiB0cnVlLCBgdG9k
b2AgYW5kIGB0b2RvTGlzdGAgcHJvZHVjZSBvdXRwdXQsIGVsc2UgdGhleSBwcm9kdWNlIG5vdGhp
bmcuCit0b2RvX2luY2x1ZGVfdG9kb3MgPSBGYWxzZQorCisKKyMgLS0gT3B0aW9ucyBmb3IgSFRN
TCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjIFRoZSB0aGVtZSB0byB1c2UgZm9yIEhUTUwgYW5kIEhUTUwgSGVscCBwYWdlcy4gIFNlZSB0
aGUgZG9jdW1lbnRhdGlvbiBmb3IKKyMgYSBsaXN0IG9mIGJ1aWx0aW4gdGhlbWVzLgorIworaHRt
bF90aGVtZSA9ICdkZWZhdWx0JworCisjIEN1c3RvbSBzaWRlYmFyIHRlbXBsYXRlcywgbXVzdCBi
ZSBhIGRpY3Rpb25hcnkgdGhhdCBtYXBzIGRvY3VtZW50IG5hbWVzCisjIHRvIHRlbXBsYXRlIG5h
bWVzLgorIworIyBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgYWxhYmFzdGVyIHRoZW1lCisjIHJl
ZnM6IGh0dHA6Ly9hbGFiYXN0ZXIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2luc3RhbGxhdGlv
bi5odG1sI3NpZGViYXJzCitodG1sX3NpZGViYXJzID0geworICAgICcqKic6IFsKKyAgICAgICAg
J3JlbGF0aW9ucy5odG1sJywgICMgbmVlZHMgJ3Nob3dfcmVsYXRlZCc6IFRydWUgdGhlbWUgb3B0
aW9uIHRvIGRpc3BsYXkKKyAgICAgICAgJ3NlYXJjaGJveC5odG1sJywKKyAgICAgICAgXQorICAg
IH0KKworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUxIZWxwIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPdXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9y
IEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFzZW5hbWUgPSAnaW1wb3J0bGliX21ldGFk
YXRhZG9jJworCisKKyMgLS0gT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsYXRleF9lbGVtZW50cyA9IHsKKyAg
ICAjIFRoZSBwYXBlciBzaXplICgnbGV0dGVycGFwZXInIG9yICdhNHBhcGVyJykuCisgICAgIwor
ICAgICMgJ3BhcGVyc2l6ZSc6ICdsZXR0ZXJwYXBlcicsCisKKyAgICAjIFRoZSBmb250IHNpemUg
KCcxMHB0JywgJzExcHQnIG9yICcxMnB0JykuCisgICAgIworICAgICMgJ3BvaW50c2l6ZSc6ICcx
MHB0JywKKworICAgICMgQWRkaXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFtYmxlLgor
ICAgICMKKyAgICAjICdwcmVhbWJsZSc6ICcnLAorCisgICAgIyBMYXRleCBmaWd1cmUgKGZsb2F0
KSBhbGlnbm1lbnQKKyAgICAjCisgICAgIyAnZmlndXJlX2FsaWduJzogJ2h0YnAnLAorICAgIH0K
KworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVzLiBMaXN0IG9m
IHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwKKyMgIGF1
dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwgb3Igb3duIGNsYXNzXSkuCitsYXRl
eF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdpbXBvcnRsaWJfbWV0YWRhdGEudGV4
JywKKyAgICAgJ2ltcG9ydGxpYlxcX21ldGFkYXRhIERvY3VtZW50YXRpb24nLAorICAgICAnQnJl
dHQgQ2Fubm9uLCBCYXJyeSBXYXJzYXcnLCAnbWFudWFsJyksCisgICAgXQorCisKKyMgLS0gT3B0
aW9ucyBmb3IgbWFudWFsIHBhZ2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2YgdHVwbGVz
CisjIChzb3VyY2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMsIG1hbnVh
bCBzZWN0aW9uKS4KK21hbl9wYWdlcyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2ltcG9ydGxpYl9t
ZXRhZGF0YScsICdpbXBvcnRsaWJfbWV0YWRhdGEgRG9jdW1lbnRhdGlvbicsCisgICAgIFthdXRo
b3JdLCAxKQorICAgIF0KKworCisjIC0tIE9wdGlvbnMgZm9yIFRleGluZm8gb3V0cHV0IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBHcm91cGluZyB0aGUg
ZG9jdW1lbnQgdHJlZSBpbnRvIFRleGluZm8gZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisjIChzb3Vy
Y2Ugc3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsCisjICBkaXIgbWVudSBl
bnRyeSwgZGVzY3JpcHRpb24sIGNhdGVnb3J5KQordGV4aW5mb19kb2N1bWVudHMgPSBbCisgICAg
KG1hc3Rlcl9kb2MsICdpbXBvcnRsaWJfbWV0YWRhdGEnLCAnaW1wb3J0bGliX21ldGFkYXRhIERv
Y3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdpbXBvcnRsaWJfbWV0YWRhdGEnLCAnT25lIGxp
bmUgZGVzY3JpcHRpb24gb2YgcHJvamVjdC4nLAorICAgICAnTWlzY2VsbGFuZW91cycpLAorICAg
IF0KKworCisjIEV4YW1wbGUgY29uZmlndXJhdGlvbiBmb3IgaW50ZXJzcGhpbng6IHJlZmVyIHRv
IHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeS4KK2ludGVyc3BoaW54X21hcHBpbmcgPSB7Cisg
ICAgJ3B5dGhvbic6ICgnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMycsIE5vbmUpLAorICAgICdp
bXBvcnRsaWJfcmVzb3VyY2VzJzogKAorICAgICAgICAnaHR0cHM6Ly9pbXBvcnRsaWItcmVzb3Vy
Y2VzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8nLCBOb25lCisgICAgICAgICksCisgICAgfQor
CisKKyMgRm9yIHJzdC5saW5rZXIsIGluamVjdCByZWxlYXNlIGRhdGVzIGludG8gY2hhbmdlbG9n
LnJzdAorbGlua19maWxlcyA9IHsKKyAgICAnY2hhbmdlbG9nLnJzdCc6IGRpY3QoCisgICAgICAg
IHJlcGxhY2U9WworICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBwYXR0ZXJuPXIn
Xig/bSkoKD9QPHNjbV92ZXJzaW9uPnY/XGQrKFwuXGQrKXsxLDJ9KSlcblstPV0rXG4nLAorICAg
ICAgICAgICAgICAgIHdpdGhfc2NtPSd7dGV4dH1cbntyZXZbdGltZXN0YW1wXTolWS0lbS0lZH1c
blxuJywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKSwKKyAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL2luZGV4LnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3MvaW5kZXgucnN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTczMzJmNWU4ZDExCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9pbmRleC5yc3QKQEAgLTAsMCArMSw1MiBAQAor
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIFdlbGNvbWUgdG8gaW1wb3J0bGliX21l
dGFkYXRhCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2BgaW1wb3J0bGliX21l
dGFkYXRhYGAgaXMgYSBsaWJyYXJ5IHdoaWNoIHByb3ZpZGVzIGFuIEFQSSBmb3IgYWNjZXNzaW5n
IGFuCitpbnN0YWxsZWQgcGFja2FnZSdzIG1ldGFkYXRhIChzZWUgOnBlcDpgNTY2YCksIHN1Y2gg
YXMgaXRzIGVudHJ5IHBvaW50cyBvciBpdHMgdG9wLWxldmVsCituYW1lLiAgVGhpcyBmdW5jdGlv
bmFsaXR5IGludGVuZHMgdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YgYGBwa2dfcmVzb3VyY2VzYGAK
K2BlbnRyeSBwb2ludCBBUElgXyBhbmQgYG1ldGFkYXRhIEFQSWBfLiAgQWxvbmcgd2l0aCA6bW9k
OmBpbXBvcnRsaWIucmVzb3VyY2VzYCBpbgorUHl0aG9uIDMuNyBhbmQgbmV3ZXIgKGJhY2twb3J0
ZWQgYXMgOmRvYzpgaW1wb3J0bGliX3Jlc291cmNlcyA8aW1wb3J0bGliX3Jlc291cmNlczppbmRl
eD5gIGZvciBvbGRlcgordmVyc2lvbnMgb2YgUHl0aG9uKSwgdGhpcyBjYW4gZWxpbWluYXRlIHRo
ZSBuZWVkIHRvIHVzZSB0aGUgb2xkZXIgYW5kIGxlc3MKK2VmZmljaWVudCBgYHBrZ19yZXNvdXJj
ZXNgYCBwYWNrYWdlLgorCitgYGltcG9ydGxpYl9tZXRhZGF0YWBgIHN1cHBsaWVzIGEgYmFja3Bv
cnQgb2YKKzpkb2M6YGltcG9ydGxpYi5tZXRhZGF0YSA8bGlicmFyeS9pbXBvcnRsaWIubWV0YWRh
dGE+YCBhcyBmb3VuZCBpbgorUHl0aG9uIDMuOCBhbmQgbGF0ZXIgZm9yIGVhcmxpZXIgUHl0aG9u
IHJlbGVhc2VzLiAgVXNlcnMgb2YKK1B5dGhvbiAzLjggYW5kIGJleW9uZCBhcmUgZW5jb3VyYWdl
ZCB0byB1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlCit3aGVuIHBvc3NpYmxlIGFuZCBm
YWxsIGJhY2sgdG8gYGBpbXBvcnRsaWJfbWV0YWRhdGFgYCB3aGVuIG5lY2Vzc2FyeS4KK1doZW4g
aW1wb3J0ZWQgb24gUHl0aG9uIDMuOCBhbmQgbGF0ZXIsIGBgaW1wb3J0bGliX21ldGFkYXRhYGAg
cmVwbGFjZXMgdGhlCitEaXN0cmlidXRpb25GaW5kZXIgYmVoYXZpb3IgZnJvbSB0aGUgc3RkbGli
LCBidXQgbGVhdmVzIHRoZSBBUEkgaW4gdGFjdC4KK0RldmVsb3BlcnMgbG9va2luZyBmb3IgZGV0
YWlsZWQgQVBJIGRlc2NyaXB0aW9ucyBzaG91bGQgcmVmZXIgdG8gdGhlIFB5dGhvbgorMy44IHN0
YW5kYXJkIGxpYnJhcnkgZG9jdW1lbnRhdGlvbi4KKworVGhlIGRvY3VtZW50YXRpb24gaGVyZSBp
bmNsdWRlcyBhIGdlbmVyYWwgOnJlZjpgdXNhZ2UgPHVzaW5nPmAgZ3VpZGUuCisKKworLi4gdG9j
dHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKyAgIDpjYXB0aW9uOiBDb250ZW50czoKKworICAgdXNp
bmcucnN0CisgICBjaGFuZ2Vsb2cgKGxpbmtzKS5yc3QKKworCitQcm9qZWN0IGRldGFpbHMKKz09
PT09PT09PT09PT09PQorCisgKiBQcm9qZWN0IGhvbWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRo
b24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBSZXBvcnQgYnVncyBhdDogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGhvbi9pbXBvcnRsaWJfbWV0YWRhdGEvaXNzdWVzCisgKiBDb2RlIGhvc3Rpbmc6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBEb2N1bWVudGF0
aW9uOiBodHRwczovL2ltcG9ydGxpYl9tZXRhZGF0YS5yZWFkdGhlZG9jcy5pby8KKworCitJbmRp
Y2VzIGFuZCB0YWJsZXMKKz09PT09PT09PT09PT09PT09PQorCisqIDpyZWY6YGdlbmluZGV4YAor
KiA6cmVmOmBtb2RpbmRleGAKKyogOnJlZjpgc2VhcmNoYAorCisKKy4uIF9gZW50cnkgcG9pbnQg
QVBJYDogaHR0cHM6Ly9zZXR1cHRvb2xzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9wa2dfcmVz
b3VyY2VzLmh0bWwjZW50cnktcG9pbnRzCisuLiBfYG1ldGFkYXRhIEFQSWA6IGh0dHBzOi8vc2V0
dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGtnX3Jlc291cmNlcy5odG1sI21ldGFk
YXRhLWFwaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy91c2luZy5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL3VzaW5nLnJzdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExOTY1MTQ3ZjQ1YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3MvdXNpbmcucnN0CkBAIC0wLDAgKzEsMjYw
IEBACisuLiBfdXNpbmc6CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIFVz
aW5nIDptb2Q6YCFpbXBvcnRsaWJfbWV0YWRhdGFgCis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKworYGBpbXBvcnRsaWJfbWV0YWRhdGFgYCBpcyBhIGxpYnJhcnkgdGhhdCBwcm92
aWRlcyBmb3IgYWNjZXNzIHRvIGluc3RhbGxlZAorcGFja2FnZSBtZXRhZGF0YS4gIEJ1aWx0IGlu
IHBhcnQgb24gUHl0aG9uJ3MgaW1wb3J0IHN5c3RlbSwgdGhpcyBsaWJyYXJ5CitpbnRlbmRzIHRv
IHJlcGxhY2Ugc2ltaWxhciBmdW5jdGlvbmFsaXR5IGluIHRoZSBgZW50cnkgcG9pbnQKK0FQSWBf
IGFuZCBgbWV0YWRhdGEgQVBJYF8gb2YgYGBwa2dfcmVzb3VyY2VzYGAuICBBbG9uZyB3aXRoCis6
bW9kOmBpbXBvcnRsaWIucmVzb3VyY2VzYCBpbiBQeXRob24gMy43CithbmQgbmV3ZXIgKGJhY2tw
b3J0ZWQgYXMgOmRvYzpgaW1wb3J0bGliX3Jlc291cmNlcyA8aW1wb3J0bGliX3Jlc291cmNlczpp
bmRleD5gIGZvciBvbGRlciB2ZXJzaW9ucyBvZgorUHl0aG9uKSwgdGhpcyBjYW4gZWxpbWluYXRl
IHRoZSBuZWVkIHRvIHVzZSB0aGUgb2xkZXIgYW5kIGxlc3MgZWZmaWNpZW50CitgYHBrZ19yZXNv
dXJjZXNgYCBwYWNrYWdlLgorCitCeSAiaW5zdGFsbGVkIHBhY2thZ2UiIHdlIGdlbmVyYWxseSBt
ZWFuIGEgdGhpcmQtcGFydHkgcGFja2FnZSBpbnN0YWxsZWQgaW50bworUHl0aG9uJ3MgYGBzaXRl
LXBhY2thZ2VzYGAgZGlyZWN0b3J5IHZpYSB0b29scyBzdWNoIGFzIGBwaXAKKzxodHRwczovL3B5
cGkub3JnL3Byb2plY3QvcGlwLz5gXy4gIFNwZWNpZmljYWxseSwKK2l0IG1lYW5zIGEgcGFja2Fn
ZSB3aXRoIGVpdGhlciBhIGRpc2NvdmVyYWJsZSBgYGRpc3QtaW5mb2BgIG9yIGBgZWdnLWluZm9g
YAorZGlyZWN0b3J5LCBhbmQgbWV0YWRhdGEgZGVmaW5lZCBieSA6cGVwOmA1NjZgIG9yIGl0cyBv
bGRlciBzcGVjaWZpY2F0aW9ucy4KK0J5IGRlZmF1bHQsIHBhY2thZ2UgbWV0YWRhdGEgY2FuIGxp
dmUgb24gdGhlIGZpbGUgc3lzdGVtIG9yIGluIHppcCBhcmNoaXZlcyBvbgorOmRhdGE6YHN5cy5w
YXRoYC4gIFRocm91Z2ggYW4gZXh0ZW5zaW9uIG1lY2hhbmlzbSwgdGhlIG1ldGFkYXRhIGNhbiBs
aXZlIGFsbW9zdAorYW55d2hlcmUuCisKKworT3ZlcnZpZXcKKz09PT09PT09CisKK0xldCdzIHNh
eSB5b3Ugd2FudGVkIHRvIGdldCB0aGUgdmVyc2lvbiBzdHJpbmcgZm9yIGEgcGFja2FnZSB5b3Un
dmUgaW5zdGFsbGVkCit1c2luZyBgYHBpcGBgLiAgV2Ugc3RhcnQgYnkgY3JlYXRpbmcgYSB2aXJ0
dWFsIGVudmlyb25tZW50IGFuZCBpbnN0YWxsaW5nCitzb21ldGhpbmcgaW50byBpdDo6CisKKyAg
ICAkIHB5dGhvbjMgLW0gdmVudiBleGFtcGxlCisgICAgJCBzb3VyY2UgZXhhbXBsZS9iaW4vYWN0
aXZhdGUKKyAgICAoZXhhbXBsZSkgJCBwaXAgaW5zdGFsbCBpbXBvcnRsaWJfbWV0YWRhdGEKKyAg
ICAoZXhhbXBsZSkgJCBwaXAgaW5zdGFsbCB3aGVlbAorCitZb3UgY2FuIGdldCB0aGUgdmVyc2lv
biBzdHJpbmcgZm9yIGBgd2hlZWxgYCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmc6OgorCisgICAg
KGV4YW1wbGUpICQgcHl0aG9uCisgICAgPj4+IGZyb20gaW1wb3J0bGliX21ldGFkYXRhIGltcG9y
dCB2ZXJzaW9uCisgICAgPj4+IHZlcnNpb24oJ3doZWVsJykKKyAgICAnMC4zMi4zJworCitZb3Ug
Y2FuIGFsc28gZ2V0IHRoZSBzZXQgb2YgZW50cnkgcG9pbnRzIGtleWVkIGJ5IGdyb3VwLCBzdWNo
IGFzCitgYGNvbnNvbGVfc2NyaXB0c2BgLCBgYGRpc3R1dGlscy5jb21tYW5kc2BgIGFuZCBvdGhl
cnMuICBFYWNoIGdyb3VwIGNvbnRhaW5zIGEKK3NlcXVlbmNlIG9mIDpyZWY6YEVudHJ5UG9pbnQg
PGVudHJ5LXBvaW50cz5gIG9iamVjdHMuCisKK1lvdSBjYW4gZ2V0IHRoZSA6cmVmOmBtZXRhZGF0
YSBmb3IgYSBkaXN0cmlidXRpb24gPG1ldGFkYXRhPmA6OgorCisgICAgPj4+IGxpc3QobWV0YWRh
dGEoJ3doZWVsJykpCisgICAgWydNZXRhZGF0YS1WZXJzaW9uJywgJ05hbWUnLCAnVmVyc2lvbics
ICdTdW1tYXJ5JywgJ0hvbWUtcGFnZScsICdBdXRob3InLCAnQXV0aG9yLWVtYWlsJywgJ01haW50
YWluZXInLCAnTWFpbnRhaW5lci1lbWFpbCcsICdMaWNlbnNlJywgJ1Byb2plY3QtVVJMJywgJ1By
b2plY3QtVVJMJywgJ1Byb2plY3QtVVJMJywgJ0tleXdvcmRzJywgJ1BsYXRmb3JtJywgJ0NsYXNz
aWZpZXInLCAnQ2xhc3NpZmllcicsICdDbGFzc2lmaWVyJywgJ0NsYXNzaWZpZXInLCAnQ2xhc3Np
ZmllcicsICdDbGFzc2lmaWVyJywgJ0NsYXNzaWZpZXInLCAnQ2xhc3NpZmllcicsICdDbGFzc2lm
aWVyJywgJ0NsYXNzaWZpZXInLCAnQ2xhc3NpZmllcicsICdDbGFzc2lmaWVyJywgJ1JlcXVpcmVz
LVB5dGhvbicsICdQcm92aWRlcy1FeHRyYScsICdSZXF1aXJlcy1EaXN0JywgJ1JlcXVpcmVzLURp
c3QnXQorCitZb3UgY2FuIGFsc28gZ2V0IGEgOnJlZjpgZGlzdHJpYnV0aW9uJ3MgdmVyc2lvbiBu
dW1iZXIgPHZlcnNpb24+YCwgbGlzdCBpdHMKKzpyZWY6YGNvbnN0aXR1ZW50IGZpbGVzIDxmaWxl
cz5gLCBhbmQgZ2V0IGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9uJ3MKKzpyZWY6YHJlcXVpcmVt
ZW50c2AuCisKKworRnVuY3Rpb25hbCBBUEkKKz09PT09PT09PT09PT09CisKK1RoaXMgcGFja2Fn
ZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgdmlhIGl0cyBwdWJsaWMgQVBJ
LgorCisKKy4uIF9lbnRyeS1wb2ludHM6CisKK0VudHJ5IHBvaW50cworLS0tLS0tLS0tLS0tCisK
K1RoZSBgYGVudHJ5X3BvaW50cygpYGAgZnVuY3Rpb24gcmV0dXJucyBhIGRpY3Rpb25hcnkgb2Yg
YWxsIGVudHJ5IHBvaW50cywKK2tleWVkIGJ5IGdyb3VwLiAgRW50cnkgcG9pbnRzIGFyZSByZXBy
ZXNlbnRlZCBieSBgYEVudHJ5UG9pbnRgYCBpbnN0YW5jZXM7CitlYWNoIGBgRW50cnlQb2ludGBg
IGhhcyBhIGBgLm5hbWVgYCwgYGAuZ3JvdXBgYCwgYW5kIGBgLnZhbHVlYGAgYXR0cmlidXRlcyBh
bmQKK2EgYGAubG9hZCgpYGAgbWV0aG9kIHRvIHJlc29sdmUgdGhlIHZhbHVlLiAgVGhlcmUgYXJl
IGFsc28gYGAubW9kdWxlYGAsCitgYC5hdHRyYGAsIGFuZCBgYC5leHRyYXNgYCBhdHRyaWJ1dGVz
IGZvciBnZXR0aW5nIHRoZSBjb21wb25lbnRzIG9mIHRoZQorYGAudmFsdWVgYCBhdHRyaWJ1dGU6
OgorCisgICAgPj4+IGVwcyA9IGVudHJ5X3BvaW50cygpCisgICAgPj4+IGxpc3QoZXBzKQorICAg
IFsnY29uc29sZV9zY3JpcHRzJywgJ2Rpc3R1dGlscy5jb21tYW5kcycsICdkaXN0dXRpbHMuc2V0
dXBfa2V5d29yZHMnLCAnZWdnX2luZm8ud3JpdGVycycsICdzZXR1cHRvb2xzLmluc3RhbGxhdGlv
biddCisgICAgPj4+IHNjcmlwdHMgPSBlcHNbJ2NvbnNvbGVfc2NyaXB0cyddCisgICAgPj4+IHdo
ZWVsID0gW2VwIGZvciBlcCBpbiBzY3JpcHRzIGlmIGVwLm5hbWUgPT0gJ3doZWVsJ11bMF0KKyAg
ICA+Pj4gd2hlZWwKKyAgICBFbnRyeVBvaW50KG5hbWU9J3doZWVsJywgdmFsdWU9J3doZWVsLmNs
aTptYWluJywgZ3JvdXA9J2NvbnNvbGVfc2NyaXB0cycpCisgICAgPj4+IHdoZWVsLm1vZHVsZQor
ICAgICd3aGVlbC5jbGknCisgICAgPj4+IHdoZWVsLmF0dHIKKyAgICAnbWFpbicKKyAgICA+Pj4g
d2hlZWwuZXh0cmFzCisgICAgW10KKyAgICA+Pj4gbWFpbiA9IHdoZWVsLmxvYWQoKQorICAgID4+
PiBtYWluCisgICAgPGZ1bmN0aW9uIG1haW4gYXQgMHgxMDM1Mjg0ODg+CisKK1RoZSBgYGdyb3Vw
YGAgYW5kIGBgbmFtZWBgIGFyZSBhcmJpdHJhcnkgdmFsdWVzIGRlZmluZWQgYnkgdGhlIHBhY2th
Z2UgYXV0aG9yCithbmQgdXN1YWxseSBhIGNsaWVudCB3aWxsIHdpc2ggdG8gcmVzb2x2ZSBhbGwg
ZW50cnkgcG9pbnRzIGZvciBhIHBhcnRpY3VsYXIKK2dyb3VwLiAgUmVhZCBgdGhlIHNldHVwdG9v
bHMgZG9jcworPGh0dHBzOi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qvc2V0
dXB0b29scy5odG1sI2R5bmFtaWMtZGlzY292ZXJ5LW9mLXNlcnZpY2VzLWFuZC1wbHVnaW5zPmBf
Citmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBlbnRyeSBwb2ludHMsIHRoZWlyIGRlZmluaXRpb24s
IGFuZCB1c2FnZS4KKworCisuLiBfbWV0YWRhdGE6CisKK0Rpc3RyaWJ1dGlvbiBtZXRhZGF0YQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0V2ZXJ5IGRpc3RyaWJ1dGlvbiBpbmNsdWRlcyBzb21l
IG1ldGFkYXRhLCB3aGljaCB5b3UgY2FuIGV4dHJhY3QgdXNpbmcgdGhlCitgYG1ldGFkYXRhKClg
YCBmdW5jdGlvbjo6CisKKyAgICA+Pj4gd2hlZWxfbWV0YWRhdGEgPSBtZXRhZGF0YSgnd2hlZWwn
KQorCitUaGUga2V5cyBvZiB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUgWyNmMV1fIG5hbWUg
dGhlIG1ldGFkYXRhIGtleXdvcmRzLCBhbmQKK3RoZWlyIHZhbHVlcyBhcmUgcmV0dXJuZWQgdW5w
YXJzZWQgZnJvbSB0aGUgZGlzdHJpYnV0aW9uIG1ldGFkYXRhOjoKKworICAgID4+PiB3aGVlbF9t
ZXRhZGF0YVsnUmVxdWlyZXMtUHl0aG9uJ10KKyAgICAnPj0yLjcsICE9My4wLiosICE9My4xLios
ICE9My4yLiosICE9My4zLionCisKKworLi4gX3ZlcnNpb246CisKK0Rpc3RyaWJ1dGlvbiB2ZXJz
aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBgYHZlcnNpb24oKWBgIGZ1bmN0aW9u
IGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gZ2V0IGEgZGlzdHJpYnV0aW9uJ3MgdmVyc2lvbgorbnVt
YmVyLCBhcyBhIHN0cmluZzo6CisKKyAgICA+Pj4gdmVyc2lvbignd2hlZWwnKQorICAgICcwLjMy
LjMnCisKKworLi4gX2ZpbGVzOgorCitEaXN0cmlidXRpb24gZmlsZXMKKy0tLS0tLS0tLS0tLS0t
LS0tLQorCitZb3UgY2FuIGFsc28gZ2V0IHRoZSBmdWxsIHNldCBvZiBmaWxlcyBjb250YWluZWQg
d2l0aGluIGEgZGlzdHJpYnV0aW9uLiAgVGhlCitgYGZpbGVzKClgYCBmdW5jdGlvbiB0YWtlcyBh
IGRpc3RyaWJ1dGlvbiBwYWNrYWdlIG5hbWUgYW5kIHJldHVybnMgYWxsIG9mIHRoZQorZmlsZXMg
aW5zdGFsbGVkIGJ5IHRoaXMgZGlzdHJpYnV0aW9uLiAgRWFjaCBmaWxlIG9iamVjdCByZXR1cm5l
ZCBpcyBhCitgYFBhY2thZ2VQYXRoYGAsIGEgOmNsYXNzOmBwYXRobGliLlBhdGhgIGRlcml2ZWQg
b2JqZWN0IHdpdGggYWRkaXRpb25hbCBgYGRpc3RgYCwKK2Bgc2l6ZWBgLCBhbmQgYGBoYXNoYGAg
cHJvcGVydGllcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIG1ldGFkYXRhLiAgRm9yIGV4YW1wbGU6Ogor
CisgICAgPj4+IHV0aWwgPSBbcCBmb3IgcCBpbiBmaWxlcygnd2hlZWwnKSBpZiAndXRpbC5weScg
aW4gc3RyKHApXVswXQorICAgID4+PiB1dGlsCisgICAgUGFja2FnZVBhdGgoJ3doZWVsL3V0aWwu
cHknKQorICAgID4+PiB1dGlsLnNpemUKKyAgICA4NTkKKyAgICA+Pj4gdXRpbC5kaXN0CisgICAg
PGltcG9ydGxpYl9tZXRhZGF0YS5faG9va3MuUGF0aERpc3RyaWJ1dGlvbiBvYmplY3QgYXQgMHgx
MDFlMGNlZjA+CisgICAgPj4+IHV0aWwuaGFzaAorICAgIDxGaWxlSGFzaCBtb2RlOiBzaGEyNTYg
dmFsdWU6IGJZa3c1b01jY2ZhelZDb1lRd0tra2Vtb1Z5TUFGb1IzNG1tS0J4OFIxTkk+CisKK09u
Y2UgeW91IGhhdmUgdGhlIGZpbGUsIHlvdSBjYW4gYWxzbyByZWFkIGl0cyBjb250ZW50czo6CisK
KyAgICA+Pj4gcHJpbnQodXRpbC5yZWFkX3RleHQoKSkKKyAgICBpbXBvcnQgYmFzZTY0CisgICAg
aW1wb3J0IHN5cworICAgIC4uLgorICAgIGRlZiBhc19ieXRlcyhzKToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCd1dGYt
OCcpCisgICAgICAgIHJldHVybiBzCisKK0luIHRoZSBjYXNlIHdoZXJlIHRoZSBtZXRhZGF0YSBm
aWxlIGxpc3RpbmcgZmlsZXMKKyhSRUNPUkQgb3IgU09VUkNFUy50eHQpIGlzIG1pc3NpbmcsIGBg
ZmlsZXMoKWBgIHdpbGwKK3JldHVybiBgYE5vbmVgYC4gVGhlIGNhbGxlciBtYXkgd2lzaCB0byB3
cmFwIGNhbGxzIHRvCitgYGZpbGVzKClgYCBpbiBgYWx3YXlzX2l0ZXJhYmxlCis8aHR0cHM6Ly9t
b3JlLWl0ZXJ0b29scy5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvYXBpLmh0bWwjbW9yZV9pdGVy
dG9vbHMuYWx3YXlzX2l0ZXJhYmxlPmBfCitvciBvdGhlcndpc2UgZ3VhcmQgYWdhaW5zdCB0aGlz
IGNvbmRpdGlvbiBpZiB0aGUgdGFyZ2V0CitkaXN0cmlidXRpb24gaXMgbm90IGtub3duIHRvIGhh
dmUgdGhlIG1ldGFkYXRhIHByZXNlbnQuCisKKy4uIF9yZXF1aXJlbWVudHM6CisKK0Rpc3RyaWJ1
dGlvbiByZXF1aXJlbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gZ2V0IHRo
ZSBmdWxsIHNldCBvZiByZXF1aXJlbWVudHMgZm9yIGEgZGlzdHJpYnV0aW9uLCB1c2UgdGhlIGBg
cmVxdWlyZXMoKWBgCitmdW5jdGlvbjo6CisKKyAgICA+Pj4gcmVxdWlyZXMoJ3doZWVsJykKKyAg
ICBbInB5dGVzdCAoPj0zLjAuMCkgOyBleHRyYSA9PSAndGVzdCciLCAicHl0ZXN0LWNvdiA7IGV4
dHJhID09ICd0ZXN0JyJdCisKKworRGlzdHJpYnV0aW9ucworPT09PT09PT09PT09PQorCitXaGls
ZSB0aGUgYWJvdmUgQVBJIGlzIHRoZSBtb3N0IGNvbW1vbiBhbmQgY29udmVuaWVudCB1c2FnZSwg
eW91IGNhbiBnZXQgYWxsCitvZiB0aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIGBgRGlzdHJpYnV0
aW9uYGAgY2xhc3MuICBBIGBgRGlzdHJpYnV0aW9uYGAgaXMgYW4KK2Fic3RyYWN0IG9iamVjdCB0
aGF0IHJlcHJlc2VudHMgdGhlIG1ldGFkYXRhIGZvciBhIFB5dGhvbiBwYWNrYWdlLiAgWW91IGNh
bgorZ2V0IHRoZSBgYERpc3RyaWJ1dGlvbmBgIGluc3RhbmNlOjoKKworICAgID4+PiBmcm9tIGlt
cG9ydGxpYl9tZXRhZGF0YSBpbXBvcnQgZGlzdHJpYnV0aW9uCisgICAgPj4+IGRpc3QgPSBkaXN0
cmlidXRpb24oJ3doZWVsJykKKworVGh1cywgYW4gYWx0ZXJuYXRpdmUgd2F5IHRvIGdldCB0aGUg
dmVyc2lvbiBudW1iZXIgaXMgdGhyb3VnaCB0aGUKK2BgRGlzdHJpYnV0aW9uYGAgaW5zdGFuY2U6
OgorCisgICAgPj4+IGRpc3QudmVyc2lvbgorICAgICcwLjMyLjMnCisKK1RoZXJlIGFyZSBhbGwg
a2luZHMgb2YgYWRkaXRpb25hbCBtZXRhZGF0YSBhdmFpbGFibGUgb24gdGhlIGBgRGlzdHJpYnV0
aW9uYGAKK2luc3RhbmNlOjoKKworICAgID4+PiBkLm1ldGFkYXRhWydSZXF1aXJlcy1QeXRob24n
XQorICAgICc+PTIuNywgIT0zLjAuKiwgIT0zLjEuKiwgIT0zLjIuKiwgIT0zLjMuKicKKyAgICA+
Pj4gZC5tZXRhZGF0YVsnTGljZW5zZSddCisgICAgJ01JVCcKKworVGhlIGZ1bGwgc2V0IG9mIGF2
YWlsYWJsZSBtZXRhZGF0YSBpcyBub3QgZGVzY3JpYmVkIGhlcmUuICBTZWUgOnBlcDpgNTY2YAor
Zm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworCitFeHRlbmRpbmcgdGhlIHNlYXJjaCBhbGdvcml0
aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCZWNhdXNlIHBhY2thZ2UgbWV0
YWRhdGEgaXMgbm90IGF2YWlsYWJsZSB0aHJvdWdoIDpkYXRhOmBzeXMucGF0aGAgc2VhcmNoZXMs
IG9yCitwYWNrYWdlIGxvYWRlcnMgZGlyZWN0bHksIHRoZSBtZXRhZGF0YSBmb3IgYSBwYWNrYWdl
IGlzIGZvdW5kIHRocm91Z2ggaW1wb3J0CitzeXN0ZW0gYGZpbmRlcnNgXy4gIFRvIGZpbmQgYSBk
aXN0cmlidXRpb24gcGFja2FnZSdzIG1ldGFkYXRhLAorYGBpbXBvcnRsaWIubWV0YWRhdGFgYCBx
dWVyaWVzIHRoZSBsaXN0IG9mIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZp
bmRlcj5gIG9uCis6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuCisKK0J5IGRlZmF1bHQgYGBpbXBvcnRs
aWJfbWV0YWRhdGFgYCBpbnN0YWxscyBhIGZpbmRlciBmb3IgZGlzdHJpYnV0aW9uIHBhY2thZ2Vz
Citmb3VuZCBvbiB0aGUgZmlsZSBzeXN0ZW0uICBUaGlzIGZpbmRlciBkb2Vzbid0IGFjdHVhbGx5
IGZpbmQgYW55ICpwYWNrYWdlcyosCitidXQgaXQgY2FuIGZpbmQgdGhlIHBhY2thZ2VzJyBtZXRh
ZGF0YS4KKworVGhlIGFic3RyYWN0IGNsYXNzIDpweTpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRh
UGF0aEZpbmRlcmAgZGVmaW5lcyB0aGUKK2ludGVyZmFjZSBleHBlY3RlZCBvZiBmaW5kZXJzIGJ5
IFB5dGhvbidzIGltcG9ydCBzeXN0ZW0uCitgYGltcG9ydGxpYl9tZXRhZGF0YWBgIGV4dGVuZHMg
dGhpcyBwcm90b2NvbCBieSBsb29raW5nIGZvciBhbiBvcHRpb25hbAorYGBmaW5kX2Rpc3RyaWJ1
dGlvbnNgYCBjYWxsYWJsZSBvbiB0aGUgZmluZGVycyBmcm9tCis6ZGF0YTpgc3lzLm1ldGFfcGF0
aGAgYW5kIHByZXNlbnRzIHRoaXMgZXh0ZW5kZWQgaW50ZXJmYWNlIGFzIHRoZQorYGBEaXN0cmli
dXRpb25GaW5kZXJgYCBhYnN0cmFjdCBiYXNlIGNsYXNzLCB3aGljaCBkZWZpbmVzIHRoaXMgYWJz
dHJhY3QKK21ldGhvZDo6CisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZpbmRf
ZGlzdHJpYnV0aW9ucyhjb250ZXh0PURpc3RyaWJ1dGlvbkZpbmRlci5Db250ZXh0KCkpOgorICAg
ICAgICAiIiJSZXR1cm4gYW4gaXRlcmFibGUgb2YgYWxsIERpc3RyaWJ1dGlvbiBpbnN0YW5jZXMg
Y2FwYWJsZSBvZgorICAgICAgICBsb2FkaW5nIHRoZSBtZXRhZGF0YSBmb3IgcGFja2FnZXMgZm9y
IHRoZSBpbmRpY2F0ZWQgYGBjb250ZXh0YGAuCisgICAgICAgICIiIgorCitUaGUgYGBEaXN0cmli
dXRpb25GaW5kZXIuQ29udGV4dGBgIG9iamVjdCBwcm92aWRlcyBgYC5wYXRoYGAgYW5kIGBgLm5h
bWVgYAorcHJvcGVydGllcyBpbmRpY2F0aW5nIHRoZSBwYXRoIHRvIHNlYXJjaCBhbmQgbmFtZSB0
byBtYXRjaCBhbmQgbWF5CitzdXBwbHkgb3RoZXIgcmVsZXZhbnQgY29udGV4dC4KKworV2hhdCB0
aGlzIG1lYW5zIGluIHByYWN0aWNlIGlzIHRoYXQgdG8gc3VwcG9ydCBmaW5kaW5nIGRpc3RyaWJ1
dGlvbiBwYWNrYWdlCittZXRhZGF0YSBpbiBsb2NhdGlvbnMgb3RoZXIgdGhhbiB0aGUgZmlsZSBz
eXN0ZW0sIHN1YmNsYXNzCitgYERpc3RyaWJ1dGlvbmBgIGFuZCBpbXBsZW1lbnQgdGhlIGFic3Ry
YWN0IG1ldGhvZHMuIFRoZW4gZnJvbQorYSBjdXN0b20gZmluZGVyLCByZXR1cm4gaW5zdGFuY2Vz
IG9mIHRoaXMgZGVyaXZlZCBgYERpc3RyaWJ1dGlvbmBgIGluIHRoZQorYGBmaW5kX2Rpc3RyaWJ1
dGlvbnMoKWBgIG1ldGhvZC4KKworCisuLiBfYGVudHJ5IHBvaW50IEFQSWA6IGh0dHBzOi8vc2V0
dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGtnX3Jlc291cmNlcy5odG1sI2VudHJ5
LXBvaW50cworLi4gX2BtZXRhZGF0YSBBUElgOiBodHRwczovL3NldHVwdG9vbHMucmVhZHRoZWRv
Y3MuaW8vZW4vbGF0ZXN0L3BrZ19yZXNvdXJjZXMuaHRtbCNtZXRhZGF0YS1hcGkKKy4uIF9gZmlu
ZGVyc2A6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvcmVmZXJlbmNlL2ltcG9ydC5odG1sI2Zp
bmRlcnMtYW5kLWxvYWRlcnMKKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNmMV0g
VGVjaG5pY2FsbHksIHRoZSByZXR1cm5lZCBkaXN0cmlidXRpb24gbWV0YWRhdGEgb2JqZWN0IGlz
IGFuCisgICAgICAgICA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgICAg
ICAgaW5zdGFuY2UsIGJ1dCB0aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgYW5kIG5v
dCBwYXJ0IG9mIHRoZQorICAgICAgICAgc3RhYmxlIEFQSS4gIFlvdSBzaG91bGQgb25seSB1c2Ug
ZGljdGlvbmFyeS1saWtlIG1ldGhvZHMgYW5kIHN5bnRheAorICAgICAgICAgdG8gYWNjZXNzIHRo
ZSBtZXRhZGF0YSBjb250ZW50cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmQ1Y2JjMmQwM2M0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weQpAQCAtMCwwICsx
LDYyNyBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzLCBhYnNvbHV0
ZV9pbXBvcnQKKworaW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IGFiYwor
aW1wb3J0IGNzdgoraW1wb3J0IHN5cworaW1wb3J0IHppcHAKK2ltcG9ydCBvcGVyYXRvcgoraW1w
b3J0IGZ1bmN0b29scworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHBvc2l4cGF0aAoraW1wb3J0
IGNvbGxlY3Rpb25zCisKK2Zyb20gLl9jb21wYXQgaW1wb3J0ICgKKyAgICBpbnN0YWxsLAorICAg
IE51bGxGaW5kZXIsCisgICAgQ29uZmlnUGFyc2VyLAorICAgIHN1cHByZXNzLAorICAgIG1hcCwK
KyAgICBGaWxlTm90Rm91bmRFcnJvciwKKyAgICBJc0FEaXJlY3RvcnlFcnJvciwKKyAgICBOb3RB
RGlyZWN0b3J5RXJyb3IsCisgICAgUGVybWlzc2lvbkVycm9yLAorICAgIHBhdGhsaWIsCisgICAg
TW9kdWxlTm90Rm91bmRFcnJvciwKKyAgICBNZXRhUGF0aEZpbmRlciwKKyAgICBlbWFpbF9tZXNz
YWdlX2Zyb21fc3RyaW5nLAorICAgIFB5UHlfcmVwciwKKyAgICB1bmlxdWVfb3JkZXJlZCwKKyAg
ICBzdHIsCisgICAgKQorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUKK2Zyb20g
aXRlcnRvb2xzIGltcG9ydCBzdGFybWFwCisKKworX19tZXRhY2xhc3NfXyA9IHR5cGUKKworCitf
X2FsbF9fID0gWworICAgICdEaXN0cmlidXRpb24nLAorICAgICdEaXN0cmlidXRpb25GaW5kZXIn
LAorICAgICdQYWNrYWdlTm90Rm91bmRFcnJvcicsCisgICAgJ2Rpc3RyaWJ1dGlvbicsCisgICAg
J2Rpc3RyaWJ1dGlvbnMnLAorICAgICdlbnRyeV9wb2ludHMnLAorICAgICdmaWxlcycsCisgICAg
J21ldGFkYXRhJywKKyAgICAncmVxdWlyZXMnLAorICAgICd2ZXJzaW9uJywKKyAgICBdCisKKwor
Y2xhc3MgUGFja2FnZU5vdEZvdW5kRXJyb3IoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgIiIi
VGhlIHBhY2thZ2Ugd2FzIG5vdCBmb3VuZC4iIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICB0bXBsID0gIk5vIHBhY2thZ2UgbWV0YWRhdGEgd2FzIGZvdW5kIGZvciB7c2VsZi5u
YW1lfSIKKyAgICAgICAgcmV0dXJuIHRtcGwuZm9ybWF0KCoqbG9jYWxzKCkpCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgbmFtZSwgPSBzZWxmLmFyZ3MKKyAg
ICAgICAgcmV0dXJuIG5hbWUKKworCitjbGFzcyBFbnRyeVBvaW50KAorICAgICAgICBQeVB5X3Jl
cHIsCisgICAgICAgIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ0VudHJ5UG9pbnRCYXNlJywgJ25h
bWUgdmFsdWUgZ3JvdXAnKSk6CisgICAgIiIiQW4gZW50cnkgcG9pbnQgYXMgZGVmaW5lZCBieSBQ
eXRob24gcGFja2FnaW5nIGNvbnZlbnRpb25zLgorCisgICAgU2VlIGB0aGUgcGFja2FnaW5nIGRv
Y3Mgb24gZW50cnkgcG9pbnRzCisgICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc3Bl
Y2lmaWNhdGlvbnMvZW50cnktcG9pbnRzLz5gXworICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgor
ICAgICIiIgorCisgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoCisgICAgICAgIHInKD9QPG1vZHVs
ZT5bXHcuXSspXHMqJworICAgICAgICByJyg6XHMqKD9QPGF0dHI+W1x3Ll0rKSk/XHMqJworICAg
ICAgICByJyg/UDxleHRyYXM+XFsuKlxdKT9ccyokJworICAgICAgICApCisgICAgIiIiCisgICAg
QSByZWd1bGFyIGV4cHJlc3Npb24gZGVzY3JpYmluZyB0aGUgc3ludGF4IGZvciBhbiBlbnRyeSBw
b2ludCwKKyAgICB3aGljaCBtaWdodCBsb29rIGxpa2U6CisKKyAgICAgICAgLSBtb2R1bGUKKyAg
ICAgICAgLSBwYWNrYWdlLm1vZHVsZQorICAgICAgICAtIHBhY2thZ2UubW9kdWxlOmF0dHJpYnV0
ZQorICAgICAgICAtIHBhY2thZ2UubW9kdWxlOm9iamVjdC5hdHRyaWJ1dGUKKyAgICAgICAgLSBw
YWNrYWdlLm1vZHVsZTphdHRyIFtleHRyYTEsIGV4dHJhMl0KKworICAgIE90aGVyIGNvbWJpbmF0
aW9ucyBhcmUgcG9zc2libGUgYXMgd2VsbC4KKworICAgIFRoZSBleHByZXNzaW9uIGlzIGxlbmll
bnQgYWJvdXQgd2hpdGVzcGFjZSBhcm91bmQgdGhlICc6JywKKyAgICBmb2xsb3dpbmcgdGhlIGF0
dHIsIGFuZCBmb2xsb3dpbmcgYW55IGV4dHJhcy4KKyAgICAiIiIKKworICAgIGRlZiBsb2FkKHNl
bGYpOgorICAgICAgICAiIiJMb2FkIHRoZSBlbnRyeSBwb2ludCBmcm9tIGl0cyBkZWZpbml0aW9u
LiBJZiBvbmx5IGEgbW9kdWxlCisgICAgICAgIGlzIGluZGljYXRlZCBieSB0aGUgdmFsdWUsIHJl
dHVybiB0aGF0IG1vZHVsZS4gT3RoZXJ3aXNlLAorICAgICAgICByZXR1cm4gdGhlIG5hbWVkIG9i
amVjdC4KKyAgICAgICAgIiIiCisgICAgICAgIG1hdGNoID0gc2VsZi5wYXR0ZXJuLm1hdGNoKHNl
bGYudmFsdWUpCisgICAgICAgIG1vZHVsZSA9IGltcG9ydF9tb2R1bGUobWF0Y2guZ3JvdXAoJ21v
ZHVsZScpKQorICAgICAgICBhdHRycyA9IGZpbHRlcihOb25lLCAobWF0Y2guZ3JvdXAoJ2F0dHIn
KSBvciAnJykuc3BsaXQoJy4nKSkKKyAgICAgICAgcmV0dXJuIGZ1bmN0b29scy5yZWR1Y2UoZ2V0
YXR0ciwgYXR0cnMsIG1vZHVsZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2R1bGUoc2Vs
Zik6CisgICAgICAgIG1hdGNoID0gc2VsZi5wYXR0ZXJuLm1hdGNoKHNlbGYudmFsdWUpCisgICAg
ICAgIHJldHVybiBtYXRjaC5ncm91cCgnbW9kdWxlJykKKworICAgIEBwcm9wZXJ0eQorICAgIGRl
ZiBhdHRyKHNlbGYpOgorICAgICAgICBtYXRjaCA9IHNlbGYucGF0dGVybi5tYXRjaChzZWxmLnZh
bHVlKQorICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2F0dHInKQorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIGV4dHJhcyhzZWxmKToKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnBhdHRlcm4ubWF0
Y2goc2VsZi52YWx1ZSkKKyAgICAgICAgcmV0dXJuIGxpc3QocmUuZmluZGl0ZXIocidcdysnLCBt
YXRjaC5ncm91cCgnZXh0cmFzJykgb3IgJycpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IF9mcm9tX2NvbmZpZyhjbHMsIGNvbmZpZyk6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAg
ICBjbHMobmFtZSwgdmFsdWUsIGdyb3VwKQorICAgICAgICAgICAgZm9yIGdyb3VwIGluIGNvbmZp
Zy5zZWN0aW9ucygpCisgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmlnLml0ZW1z
KGdyb3VwKQorICAgICAgICAgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9mcm9t
X3RleHQoY2xzLCB0ZXh0KToKKyAgICAgICAgY29uZmlnID0gQ29uZmlnUGFyc2VyKGRlbGltaXRl
cnM9Jz0nKQorICAgICAgICAjIGNhc2Ugc2Vuc2l0aXZlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cu
Y29tL3EvMTYxMTc5OS84MTIxODMKKyAgICAgICAgY29uZmlnLm9wdGlvbnhmb3JtID0gc3RyCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZpZy5yZWFkX3N0cmluZyh0ZXh0KQorICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIHByYWdtYTogbm9jb3ZlcgorICAgICAgICAgICAg
IyBQeXRob24gMiBoYXMgbm8gcmVhZF9zdHJpbmcKKyAgICAgICAgICAgIGNvbmZpZy5yZWFkZnAo
aW8uU3RyaW5nSU8odGV4dCkpCisgICAgICAgIHJldHVybiBFbnRyeVBvaW50Ll9mcm9tX2NvbmZp
Zyhjb25maWcpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBTdXBwbHkgaXRlciBzbyBvbmUgbWF5IGNvbnN0cnVjdCBkaWN0cyBvZiBFbnRyeVBvaW50cyBl
YXNpbHkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXRlcigoc2VsZi5uYW1lLCBzZWxm
KSkKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKAorICAgICAg
ICAgICAgc2VsZi5fX2NsYXNzX18sCisgICAgICAgICAgICAoc2VsZi5uYW1lLCBzZWxmLnZhbHVl
LCBzZWxmLmdyb3VwKSwKKyAgICAgICAgICAgICkKKworCitjbGFzcyBQYWNrYWdlUGF0aChwYXRo
bGliLlB1cmVQb3NpeFBhdGgpOgorICAgICIiIkEgcmVmZXJlbmNlIHRvIGEgcGF0aCBpbiBhIHBh
Y2thZ2UiIiIKKworICAgIGRlZiByZWFkX3RleHQoc2VsZiwgZW5jb2Rpbmc9J3V0Zi04Jyk6Cisg
ICAgICAgIHdpdGggc2VsZi5sb2NhdGUoKS5vcGVuKGVuY29kaW5nPWVuY29kaW5nKSBhcyBzdHJl
YW06CisgICAgICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWQoKQorCisgICAgZGVmIHJlYWRfYmlu
YXJ5KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYubG9jYXRlKCkub3BlbigncmInKSBhcyBzdHJl
YW06CisgICAgICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWQoKQorCisgICAgZGVmIGxvY2F0ZShz
ZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgcGF0aC1saWtlIG9iamVjdCBmb3IgdGhpcyBwYXRo
IiIiCisgICAgICAgIHJldHVybiBzZWxmLmRpc3QubG9jYXRlX2ZpbGUoc2VsZikKKworCitjbGFz
cyBGaWxlSGFzaDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6CisgICAgICAgIHNlbGYu
bW9kZSwgXywgc2VsZi52YWx1ZSA9IHNwZWMucGFydGl0aW9uKCc9JykKKworICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8RmlsZUhhc2ggbW9kZToge30gdmFsdWU6IHt9
PicuZm9ybWF0KHNlbGYubW9kZSwgc2VsZi52YWx1ZSkKKworCitjbGFzcyBEaXN0cmlidXRpb246
CisgICAgIiIiQSBQeXRob24gZGlzdHJpYnV0aW9uIHBhY2thZ2UuIiIiCisKKyAgICBAYWJjLmFi
c3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRfdGV4dChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAg
ICIiIkF0dGVtcHQgdG8gbG9hZCBtZXRhZGF0YSBmaWxlIGdpdmVuIGJ5IHRoZSBuYW1lLgorCisg
ICAgICAgIDpwYXJhbSBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGRpc3Ry
aWJ1dGlvbiBpbmZvLgorICAgICAgICA6cmV0dXJuOiBUaGUgdGV4dCBpZiBmb3VuZCwgb3RoZXJ3
aXNlIE5vbmUuCisgICAgICAgICIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRl
ZiBsb2NhdGVfZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiCisgICAgICAgIEdpdmVuIGEg
cGF0aCB0byBhIGZpbGUgaW4gdGhpcyBkaXN0cmlidXRpb24sIHJldHVybiBhIHBhdGgKKyAgICAg
ICAgdG8gaXQuCisgICAgICAgICIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21f
bmFtZShjbHMsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIERpc3RyaWJ1dGlvbiBmb3Ig
dGhlIGdpdmVuIHBhY2thZ2UgbmFtZS4KKworICAgICAgICA6cGFyYW0gbmFtZTogVGhlIG5hbWUg
b2YgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIHRvIHNlYXJjaCBmb3IuCisgICAgICAgIDpyZXR1
cm46IFRoZSBEaXN0cmlidXRpb24gaW5zdGFuY2UgKG9yIHN1YmNsYXNzIHRoZXJlb2YpIGZvciB0
aGUgbmFtZWQKKyAgICAgICAgICAgIHBhY2thZ2UsIGlmIGZvdW5kLgorICAgICAgICA6cmFpc2Vz
IFBhY2thZ2VOb3RGb3VuZEVycm9yOiBXaGVuIHRoZSBuYW1lZCBwYWNrYWdlJ3MgZGlzdHJpYnV0
aW9uCisgICAgICAgICAgICBtZXRhZGF0YSBjYW5ub3QgYmUgZm91bmQuCisgICAgICAgICIiIgor
ICAgICAgICBmb3IgcmVzb2x2ZXIgaW4gY2xzLl9kaXNjb3Zlcl9yZXNvbHZlcnMoKToKKyAgICAg
ICAgICAgIGRpc3RzID0gcmVzb2x2ZXIoRGlzdHJpYnV0aW9uRmluZGVyLkNvbnRleHQobmFtZT1u
YW1lKSkKKyAgICAgICAgICAgIGRpc3QgPSBuZXh0KGl0ZXIoZGlzdHMpLCBOb25lKQorICAgICAg
ICAgICAgaWYgZGlzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGlzdAor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUGFja2FnZU5vdEZvdW5kRXJyb3IobmFt
ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaXNjb3ZlcihjbHMsICoqa3dhcmdzKToK
KyAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhYmxlIG9mIERpc3RyaWJ1dGlvbiBvYmplY3RzIGZv
ciBhbGwgcGFja2FnZXMuCisKKyAgICAgICAgUGFzcyBhIGBgY29udGV4dGBgIG9yIHBhc3Mga2V5
d29yZCBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICBhIGNvbnRleHQuCisKKyAg
ICAgICAgOmNvbnRleHQ6IEEgYGBEaXN0cmlidXRpb25GaW5kZXIuQ29udGV4dGBgIG9iamVjdC4K
KyAgICAgICAgOnJldHVybjogSXRlcmFibGUgb2YgRGlzdHJpYnV0aW9uIG9iamVjdHMgZm9yIGFs
bCBwYWNrYWdlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbnRleHQgPSBrd2FyZ3MucG9wKCdj
b250ZXh0JywgTm9uZSkKKyAgICAgICAgaWYgY29udGV4dCBhbmQga3dhcmdzOgorICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IGFjY2VwdCBjb250ZXh0IGFuZCBrd2FyZ3MiKQor
ICAgICAgICBjb250ZXh0ID0gY29udGV4dCBvciBEaXN0cmlidXRpb25GaW5kZXIuQ29udGV4dCgq
Kmt3YXJncykKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAor
ICAgICAgICAgICAgcmVzb2x2ZXIoY29udGV4dCkKKyAgICAgICAgICAgIGZvciByZXNvbHZlciBp
biBjbHMuX2Rpc2NvdmVyX3Jlc29sdmVycygpCisgICAgICAgICAgICApCisKKyAgICBAc3RhdGlj
bWV0aG9kCisgICAgZGVmIGF0KHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gYSBEaXN0cmlidXRp
b24gZm9yIHRoZSBpbmRpY2F0ZWQgbWV0YWRhdGEgcGF0aAorCisgICAgICAgIDpwYXJhbSBwYXRo
OiBhIHN0cmluZyBvciBwYXRoLWxpa2Ugb2JqZWN0CisgICAgICAgIDpyZXR1cm46IGEgY29uY3Jl
dGUgRGlzdHJpYnV0aW9uIGluc3RhbmNlIGZvciB0aGUgcGF0aAorICAgICAgICAiIiIKKyAgICAg
ICAgcmV0dXJuIFBhdGhEaXN0cmlidXRpb24ocGF0aGxpYi5QYXRoKHBhdGgpKQorCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBfZGlzY292ZXJfcmVzb2x2ZXJzKCk6CisgICAgICAgICIiIlNl
YXJjaCB0aGUgbWV0YV9wYXRoIGZvciByZXNvbHZlcnMuIiIiCisgICAgICAgIGRlY2xhcmVkID0g
KAorICAgICAgICAgICAgZ2V0YXR0cihmaW5kZXIsICdmaW5kX2Rpc3RyaWJ1dGlvbnMnLCBOb25l
KQorICAgICAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoCisgICAgICAgICAgICAp
CisgICAgICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgZGVjbGFyZWQpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgX2xvY2FsKGNscywgcm9vdD0nLicpOgorICAgICAgICBmcm9tIHBlcDUxNyBp
bXBvcnQgYnVpbGQsIG1ldGEKKyAgICAgICAgc3lzdGVtID0gYnVpbGQuY29tcGF0X3N5c3RlbShy
b290KQorICAgICAgICBidWlsZGVyID0gZnVuY3Rvb2xzLnBhcnRpYWwoCisgICAgICAgICAgICBt
ZXRhLmJ1aWxkLAorICAgICAgICAgICAgc291cmNlX2Rpcj1yb290LAorICAgICAgICAgICAgc3lz
dGVtPXN5c3RlbSwKKyAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIFBhdGhEaXN0cmlidXRp
b24oemlwcC5QYXRoKG1ldGEuYnVpbGRfYXNfemlwKGJ1aWxkZXIpKSkKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBtZXRhZGF0YShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXJzZWQg
bWV0YWRhdGEgZm9yIHRoaXMgRGlzdHJpYnV0aW9uLgorCisgICAgICAgIFRoZSByZXR1cm5lZCBv
YmplY3Qgd2lsbCBoYXZlIGtleXMgdGhhdCBuYW1lIHRoZSB2YXJpb3VzIGJpdHMgb2YKKyAgICAg
ICAgbWV0YWRhdGEuICBTZWUgUEVQIDU2NiBmb3IgZGV0YWlscy4KKyAgICAgICAgIiIiCisgICAg
ICAgIHRleHQgPSAoCisgICAgICAgICAgICBzZWxmLnJlYWRfdGV4dCgnTUVUQURBVEEnKQorICAg
ICAgICAgICAgb3Igc2VsZi5yZWFkX3RleHQoJ1BLRy1JTkZPJykKKyAgICAgICAgICAgICMgVGhp
cyBsYXN0IGNsYXVzZSBpcyBoZXJlIHRvIHN1cHBvcnQgb2xkIGVnZy1pbmZvIGZpbGVzLiAgSXRz
CisgICAgICAgICAgICAjIGVmZmVjdCBpcyB0byBqdXN0IGVuZCB1cCB1c2luZyB0aGUgUGF0aERp
c3RyaWJ1dGlvbidzIHNlbGYuX3BhdGgKKyAgICAgICAgICAgICMgKHdoaWNoIHBvaW50cyB0byB0
aGUgZWdnLWluZm8gZmlsZSkgYXR0cmlidXRlIHVuY2hhbmdlZC4KKyAgICAgICAgICAgIG9yIHNl
bGYucmVhZF90ZXh0KCcnKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gZW1haWxfbWVz
c2FnZV9mcm9tX3N0cmluZyh0ZXh0KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24o
c2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgJ1ZlcnNpb24nIG1ldGFkYXRhIGZvciB0aGUg
ZGlzdHJpYnV0aW9uIHBhY2thZ2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm1ldGFkYXRhWydW
ZXJzaW9uJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbnRyeV9wb2ludHMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBFbnRyeVBvaW50Ll9mcm9tX3RleHQoc2VsZi5yZWFkX3RleHQoJ2VudHJ5
X3BvaW50cy50eHQnKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmaWxlcyhzZWxmKToKKyAg
ICAgICAgIiIiRmlsZXMgaW4gdGhpcyBkaXN0cmlidXRpb24uCisKKyAgICAgICAgOnJldHVybjog
TGlzdCBvZiBQYWNrYWdlUGF0aCBmb3IgdGhpcyBkaXN0cmlidXRpb24gb3IgTm9uZQorCisgICAg
ICAgIFJlc3VsdCBpcyBgTm9uZWAgaWYgdGhlIG1ldGFkYXRhIGZpbGUgdGhhdCBlbnVtZXJhdGVz
IGZpbGVzCisgICAgICAgIChpLmUuIFJFQ09SRCBmb3IgZGlzdC1pbmZvIG9yIFNPVVJDRVMudHh0
IGZvciBlZ2ctaW5mbykgaXMKKyAgICAgICAgbWlzc2luZy4KKyAgICAgICAgUmVzdWx0IG1heSBi
ZSBlbXB0eSBpZiB0aGUgbWV0YWRhdGEgZXhpc3RzIGJ1dCBpcyBlbXB0eS4KKyAgICAgICAgIiIi
CisgICAgICAgIGZpbGVfbGluZXMgPSBzZWxmLl9yZWFkX2ZpbGVzX2Rpc3RpbmZvKCkgb3Igc2Vs
Zi5fcmVhZF9maWxlc19lZ2dpbmZvKCkKKworICAgICAgICBkZWYgbWFrZV9maWxlKG5hbWUsIGhh
c2g9Tm9uZSwgc2l6ZV9zdHI9Tm9uZSk6CisgICAgICAgICAgICByZXN1bHQgPSBQYWNrYWdlUGF0
aChuYW1lKQorICAgICAgICAgICAgcmVzdWx0Lmhhc2ggPSBGaWxlSGFzaChoYXNoKSBpZiBoYXNo
IGVsc2UgTm9uZQorICAgICAgICAgICAgcmVzdWx0LnNpemUgPSBpbnQoc2l6ZV9zdHIpIGlmIHNp
emVfc3RyIGVsc2UgTm9uZQorICAgICAgICAgICAgcmVzdWx0LmRpc3QgPSBzZWxmCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgcmV0dXJuIGZpbGVfbGluZXMgYW5kIGxpc3Qo
c3Rhcm1hcChtYWtlX2ZpbGUsIGNzdi5yZWFkZXIoZmlsZV9saW5lcykpKQorCisgICAgZGVmIF9y
ZWFkX2ZpbGVzX2Rpc3RpbmZvKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVhZCB0aGUg
bGluZXMgb2YgUkVDT1JECisgICAgICAgICIiIgorICAgICAgICB0ZXh0ID0gc2VsZi5yZWFkX3Rl
eHQoJ1JFQ09SRCcpCisgICAgICAgIHJldHVybiB0ZXh0IGFuZCB0ZXh0LnNwbGl0bGluZXMoKQor
CisgICAgZGVmIF9yZWFkX2ZpbGVzX2VnZ2luZm8oc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBTT1VSQ0VTLnR4dCBtaWdodCBjb250YWluIGxpdGVyYWwgY29tbWFzLCBzbyB3cmFwIGVhY2gg
bGluZQorICAgICAgICBpbiBxdW90ZXMuCisgICAgICAgICIiIgorICAgICAgICB0ZXh0ID0gc2Vs
Zi5yZWFkX3RleHQoJ1NPVVJDRVMudHh0JykKKyAgICAgICAgcmV0dXJuIHRleHQgYW5kIG1hcCgn
Int9IicuZm9ybWF0LCB0ZXh0LnNwbGl0bGluZXMoKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRl
ZiByZXF1aXJlcyhzZWxmKToKKyAgICAgICAgIiIiR2VuZXJhdGVkIHJlcXVpcmVtZW50cyBzcGVj
aWZpZWQgZm9yIHRoaXMgRGlzdHJpYnV0aW9uIiIiCisgICAgICAgIHJlcXMgPSBzZWxmLl9yZWFk
X2Rpc3RfaW5mb19yZXFzKCkgb3Igc2VsZi5fcmVhZF9lZ2dfaW5mb19yZXFzKCkKKyAgICAgICAg
cmV0dXJuIHJlcXMgYW5kIGxpc3QocmVxcykKKworICAgIGRlZiBfcmVhZF9kaXN0X2luZm9fcmVx
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWV0YWRhdGEuZ2V0X2FsbCgnUmVxdWlyZXMt
RGlzdCcpCisKKyAgICBkZWYgX3JlYWRfZWdnX2luZm9fcmVxcyhzZWxmKToKKyAgICAgICAgc291
cmNlID0gc2VsZi5yZWFkX3RleHQoJ3JlcXVpcmVzLnR4dCcpCisgICAgICAgIHJldHVybiBzb3Vy
Y2UgYW5kIHNlbGYuX2RlcHNfZnJvbV9yZXF1aXJlc190ZXh0KHNvdXJjZSkKKworICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBfZGVwc19mcm9tX3JlcXVpcmVzX3RleHQoY2xzLCBzb3VyY2UpOgor
ICAgICAgICBzZWN0aW9uX3BhaXJzID0gY2xzLl9yZWFkX3NlY3Rpb25zKHNvdXJjZS5zcGxpdGxp
bmVzKCkpCisgICAgICAgIHNlY3Rpb25zID0geworICAgICAgICAgICAgc2VjdGlvbjogbGlzdCht
YXAob3BlcmF0b3IuaXRlbWdldHRlcignbGluZScpLCByZXN1bHRzKSkKKyAgICAgICAgICAgIGZv
ciBzZWN0aW9uLCByZXN1bHRzIGluCisgICAgICAgICAgICBpdGVydG9vbHMuZ3JvdXBieShzZWN0
aW9uX3BhaXJzLCBvcGVyYXRvci5pdGVtZ2V0dGVyKCdzZWN0aW9uJykpCisgICAgICAgICAgICB9
CisgICAgICAgIHJldHVybiBjbHMuX2NvbnZlcnRfZWdnX2luZm9fcmVxc190b19zaW1wbGVfcmVx
cyhzZWN0aW9ucykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3JlYWRfc2VjdGlvbnMo
bGluZXMpOgorICAgICAgICBzZWN0aW9uID0gTm9uZQorICAgICAgICBmb3IgbGluZSBpbiBmaWx0
ZXIoTm9uZSwgbGluZXMpOgorICAgICAgICAgICAgc2VjdGlvbl9tYXRjaCA9IHJlLm1hdGNoKHIn
XFsoLiopXF0kJywgbGluZSkKKyAgICAgICAgICAgIGlmIHNlY3Rpb25fbWF0Y2g6CisgICAgICAg
ICAgICAgICAgc2VjdGlvbiA9IHNlY3Rpb25fbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgeWllbGQgbG9jYWxzKCkKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgX2NvbnZlcnRfZWdnX2luZm9fcmVxc190b19zaW1wbGVfcmVxcyhzZWN0aW9u
cyk6CisgICAgICAgICIiIgorICAgICAgICBIaXN0b3JpY2FsbHksIHNldHVwdG9vbHMgd291bGQg
c29saWNpdCBhbmQgc3RvcmUgJ2V4dHJhJworICAgICAgICByZXF1aXJlbWVudHMsIGluY2x1ZGlu
ZyB0aG9zZSB3aXRoIGVudmlyb25tZW50IG1hcmtlcnMsCisgICAgICAgIGluIHNlcGFyYXRlIHNl
Y3Rpb25zLiBNb3JlIG1vZGVybiB0b29scyBleHBlY3QgZWFjaAorICAgICAgICBkZXBlbmRlbmN5
IHRvIGJlIGRlZmluZWQgc2VwYXJhdGVseSwgd2l0aCBhbnkgcmVsZXZhbnQKKyAgICAgICAgZXh0
cmFzIGFuZCBlbnZpcm9ubWVudCBtYXJrZXJzIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoYXQKKyAg
ICAgICAgcmVxdWlyZW1lbnQuIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBmb3JtZXIgdG8gdGhl
CisgICAgICAgIGxhdHRlci4gU2VlIF90ZXN0X2RlcHNfZnJvbV9yZXF1aXJlc190ZXh0IGZvciBh
biBleGFtcGxlLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIG1ha2VfY29uZGl0aW9uKG5hbWUp
OgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgYW5kICdleHRyYSA9PSAie25hbWV9IicuZm9ybWF0
KG5hbWU9bmFtZSkKKworICAgICAgICBkZWYgcGFyc2VfY29uZGl0aW9uKHNlY3Rpb24pOgorICAg
ICAgICAgICAgc2VjdGlvbiA9IHNlY3Rpb24gb3IgJycKKyAgICAgICAgICAgIGV4dHJhLCBzZXAs
IG1hcmtlcnMgPSBzZWN0aW9uLnBhcnRpdGlvbignOicpCisgICAgICAgICAgICBpZiBleHRyYSBh
bmQgbWFya2VyczoKKyAgICAgICAgICAgICAgICBtYXJrZXJzID0gJyh7bWFya2Vyc30pJy5mb3Jt
YXQobWFya2Vycz1tYXJrZXJzKQorICAgICAgICAgICAgY29uZGl0aW9ucyA9IGxpc3QoZmlsdGVy
KE5vbmUsIFttYXJrZXJzLCBtYWtlX2NvbmRpdGlvbihleHRyYSldKSkKKyAgICAgICAgICAgIHJl
dHVybiAnOyAnICsgJyBhbmQgJy5qb2luKGNvbmRpdGlvbnMpIGlmIGNvbmRpdGlvbnMgZWxzZSAn
JworCisgICAgICAgIGZvciBzZWN0aW9uLCBkZXBzIGluIHNlY3Rpb25zLml0ZW1zKCk6CisgICAg
ICAgICAgICBmb3IgZGVwIGluIGRlcHM6CisgICAgICAgICAgICAgICAgeWllbGQgZGVwICsgcGFy
c2VfY29uZGl0aW9uKHNlY3Rpb24pCisKKworY2xhc3MgRGlzdHJpYnV0aW9uRmluZGVyKE1ldGFQ
YXRoRmluZGVyKToKKyAgICAiIiIKKyAgICBBIE1ldGFQYXRoRmluZGVyIGNhcGFibGUgb2YgZGlz
Y292ZXJpbmcgaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbnMuCisgICAgIiIiCisKKyAgICBjbGFzcyBD
b250ZXh0OgorICAgICAgICAiIiIKKyAgICAgICAgS2V5d29yZCBhcmd1bWVudHMgcHJlc2VudGVk
IGJ5IHRoZSBjYWxsZXIgdG8KKyAgICAgICAgYGBkaXN0cmlidXRpb25zKClgYCBvciBgYERpc3Ry
aWJ1dGlvbi5kaXNjb3ZlcigpYGAKKyAgICAgICAgdG8gbmFycm93IHRoZSBzY29wZSBvZiBhIHNl
YXJjaCBmb3IgZGlzdHJpYnV0aW9ucworICAgICAgICBpbiBhbGwgRGlzdHJpYnV0aW9uRmluZGVy
cy4KKworICAgICAgICBFYWNoIERpc3RyaWJ1dGlvbkZpbmRlciBtYXkgZXhwZWN0IGFueSBwYXJh
bWV0ZXJzCisgICAgICAgIGFuZCBzaG91bGQgYXR0ZW1wdCB0byBob25vciB0aGUgY2Fub25pY2Fs
CisgICAgICAgIHBhcmFtZXRlcnMgZGVmaW5lZCBiZWxvdyB3aGVuIGFwcHJvcHJpYXRlLgorICAg
ICAgICAiIiIKKworICAgICAgICBuYW1lID0gTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgU3Bl
Y2lmaWMgbmFtZSBmb3Igd2hpY2ggYSBkaXN0cmlidXRpb24gZmluZGVyIHNob3VsZCBtYXRjaC4K
KyAgICAgICAgQSBuYW1lIG9mIGBgTm9uZWBgIG1hdGNoZXMgYWxsIGRpc3RyaWJ1dGlvbnMuCisg
ICAgICAgICIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAg
ICAgICAgICB2YXJzKHNlbGYpLnVwZGF0ZShrd2FyZ3MpCisKKyAgICAgICAgQHByb3BlcnR5Cisg
ICAgICAgIGRlZiBwYXRoKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBUaGUg
cGF0aCB0aGF0IGEgZGlzdHJpYnV0aW9uIGZpbmRlciBzaG91bGQgc2VhcmNoLgorCisgICAgICAg
ICAgICBUeXBpY2FsbHkgcmVmZXJzIHRvIFB5dGhvbiBwYWNrYWdlIHBhdGhzIGFuZCBkZWZhdWx0
cworICAgICAgICAgICAgdG8gYGBzeXMucGF0aGBgLgorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICByZXR1cm4gdmFycyhzZWxmKS5nZXQoJ3BhdGgnLCBzeXMucGF0aCkKKworICAgIEBhYmMu
YWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9kaXN0cmlidXRpb25zKHNlbGYsIGNvbnRleHQ9
Q29udGV4dCgpKToKKyAgICAgICAgIiIiCisgICAgICAgIEZpbmQgZGlzdHJpYnV0aW9ucy4KKwor
ICAgICAgICBSZXR1cm4gYW4gaXRlcmFibGUgb2YgYWxsIERpc3RyaWJ1dGlvbiBpbnN0YW5jZXMg
Y2FwYWJsZSBvZgorICAgICAgICBsb2FkaW5nIHRoZSBtZXRhZGF0YSBmb3IgcGFja2FnZXMgbWF0
Y2hpbmcgdGhlIGBgY29udGV4dGBgLAorICAgICAgICBhIERpc3RyaWJ1dGlvbkZpbmRlci5Db250
ZXh0IGluc3RhbmNlLgorICAgICAgICAiIiIKKworCitjbGFzcyBGYXN0UGF0aDoKKyAgICAiIiIK
KyAgICBNaWNyby1vcHRpbWl6ZWQgY2xhc3MgZm9yIHNlYXJjaGluZyBhIHBhdGggZm9yCisgICAg
Y2hpbGRyZW4uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CisgICAg
ICAgIHNlbGYucm9vdCA9IHN0cihyb290KQorICAgICAgICBzZWxmLmJhc2UgPSBvcy5wYXRoLmJh
c2VuYW1lKHNlbGYucm9vdCkubG93ZXIoKQorCisgICAgZGVmIGpvaW5wYXRoKHNlbGYsIGNoaWxk
KToKKyAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLnJvb3QsIGNoaWxkKQorCisgICAg
ZGVmIGNoaWxkcmVuKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHByZXNzKEV4Y2VwdGlvbik6Cisg
ICAgICAgICAgICByZXR1cm4gb3MubGlzdGRpcihzZWxmLnJvb3Qgb3IgJycpCisgICAgICAgIHdp
dGggc3VwcHJlc3MoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnppcF9jaGls
ZHJlbigpCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIHppcF9jaGlsZHJlbihzZWxmKToK
KyAgICAgICAgemlwX3BhdGggPSB6aXBwLlBhdGgoc2VsZi5yb290KQorICAgICAgICBuYW1lcyA9
IHppcF9wYXRoLnJvb3QubmFtZWxpc3QoKQorICAgICAgICBzZWxmLmpvaW5wYXRoID0gemlwX3Bh
dGguam9pbnBhdGgKKworICAgICAgICByZXR1cm4gdW5pcXVlX29yZGVyZWQoCisgICAgICAgICAg
ICBjaGlsZC5zcGxpdChwb3NpeHBhdGguc2VwLCAxKVswXQorICAgICAgICAgICAgZm9yIGNoaWxk
IGluIG5hbWVzCisgICAgICAgICAgICApCisKKyAgICBkZWYgaXNfZWdnKHNlbGYsIHNlYXJjaCk6
CisgICAgICAgIGJhc2UgPSBzZWxmLmJhc2UKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAg
IGJhc2UgPT0gc2VhcmNoLnZlcnNpb25sZXNzX2VnZ19uYW1lCisgICAgICAgICAgICBvciBiYXNl
LnN0YXJ0c3dpdGgoc2VhcmNoLnByZWZpeCkKKyAgICAgICAgICAgIGFuZCBiYXNlLmVuZHN3aXRo
KCcuZWdnJykpCisKKyAgICBkZWYgc2VhcmNoKHNlbGYsIG5hbWUpOgorICAgICAgICBmb3IgY2hp
bGQgaW4gc2VsZi5jaGlsZHJlbigpOgorICAgICAgICAgICAgbl9sb3cgPSBjaGlsZC5sb3dlcigp
CisgICAgICAgICAgICBpZiAobl9sb3cgaW4gbmFtZS5leGFjdF9tYXRjaGVzCisgICAgICAgICAg
ICAgICAgICAgIG9yIG5fbG93LnJlcGxhY2UoJy4nLCAnXycpLnN0YXJ0c3dpdGgobmFtZS5wcmVm
aXgpCisgICAgICAgICAgICAgICAgICAgIGFuZCBuX2xvdy5lbmRzd2l0aChuYW1lLnN1ZmZpeGVz
KQorICAgICAgICAgICAgICAgICAgICAjIGxlZ2FjeSBjYXNlOgorICAgICAgICAgICAgICAgICAg
ICBvciBzZWxmLmlzX2VnZyhuYW1lKSBhbmQgbl9sb3cgPT0gJ2VnZy1pbmZvJyk6CisgICAgICAg
ICAgICAgICAgeWllbGQgc2VsZi5qb2lucGF0aChjaGlsZCkKKworCitjbGFzcyBQcmVwYXJlZDoK
KyAgICAiIiIKKyAgICBBIHByZXBhcmVkIHNlYXJjaCBmb3IgbWV0YWRhdGEgb24gYSBwb3NzaWJs
eS1uYW1lZCBwYWNrYWdlLgorICAgICIiIgorICAgIG5vcm1hbGl6ZWQgPSAnJworICAgIHByZWZp
eCA9ICcnCisgICAgc3VmZml4ZXMgPSAnLmRpc3QtaW5mbycsICcuZWdnLWluZm8nCisgICAgZXhh
Y3RfbWF0Y2hlcyA9IFsnJ11bOjBdCisgICAgdmVyc2lvbmxlc3NfZWdnX25hbWUgPSAnJworCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisg
ICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxm
Lm5vcm1hbGl6ZWQgPSBzZWxmLm5vcm1hbGl6ZShuYW1lKQorICAgICAgICBzZWxmLnByZWZpeCA9
IHNlbGYubm9ybWFsaXplZCArICctJworICAgICAgICBzZWxmLmV4YWN0X21hdGNoZXMgPSBbCisg
ICAgICAgICAgICBzZWxmLm5vcm1hbGl6ZWQgKyBzdWZmaXggZm9yIHN1ZmZpeCBpbiBzZWxmLnN1
ZmZpeGVzXQorICAgICAgICBzZWxmLnZlcnNpb25sZXNzX2VnZ19uYW1lID0gc2VsZi5ub3JtYWxp
emVkICsgJy5lZ2cnCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG5vcm1hbGl6ZShuYW1l
KToKKyAgICAgICAgIiIiCisgICAgICAgIFBFUCA1MDMgbm9ybWFsaXphdGlvbiBwbHVzIGRhc2hl
cyBhcyB1bmRlcnNjb3Jlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiByZS5zdWIociJb
LV8uXSsiLCAiLSIsIG5hbWUpLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJykKKworCitAaW5zdGFs
bAorY2xhc3MgTWV0YWRhdGFQYXRoRmluZGVyKE51bGxGaW5kZXIsIERpc3RyaWJ1dGlvbkZpbmRl
cik6CisgICAgIiIiQSBkZWdlbmVyYXRlIGZpbmRlciBmb3IgZGlzdHJpYnV0aW9uIHBhY2thZ2Vz
IG9uIHRoZSBmaWxlIHN5c3RlbS4KKworICAgIFRoaXMgZmluZGVyIHN1cHBsaWVzIG9ubHkgYSBm
aW5kX2Rpc3RyaWJ1dGlvbnMoKSBtZXRob2QgZm9yIHZlcnNpb25zCisgICAgb2YgUHl0aG9uIHRo
YXQgZG8gbm90IGhhdmUgYSBQYXRoRmluZGVyIGZpbmRfZGlzdHJpYnV0aW9ucygpLgorICAgICIi
IgorCisgICAgZGVmIGZpbmRfZGlzdHJpYnV0aW9ucyhzZWxmLCBjb250ZXh0PURpc3RyaWJ1dGlv
bkZpbmRlci5Db250ZXh0KCkpOgorICAgICAgICAiIiIKKyAgICAgICAgRmluZCBkaXN0cmlidXRp
b25zLgorCisgICAgICAgIFJldHVybiBhbiBpdGVyYWJsZSBvZiBhbGwgRGlzdHJpYnV0aW9uIGlu
c3RhbmNlcyBjYXBhYmxlIG9mCisgICAgICAgIGxvYWRpbmcgdGhlIG1ldGFkYXRhIGZvciBwYWNr
YWdlcyBtYXRjaGluZyBgYGNvbnRleHQubmFtZWBgCisgICAgICAgIChvciBhbGwgbmFtZXMgaWYg
YGBOb25lYGAgaW5kaWNhdGVkKSBhbG9uZyB0aGUgcGF0aHMgaW4gdGhlIGxpc3QKKyAgICAgICAg
b2YgZGlyZWN0b3JpZXMgYGBjb250ZXh0LnBhdGhgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGZv
dW5kID0gc2VsZi5fc2VhcmNoX3BhdGhzKGNvbnRleHQubmFtZSwgY29udGV4dC5wYXRoKQorICAg
ICAgICByZXR1cm4gbWFwKFBhdGhEaXN0cmlidXRpb24sIGZvdW5kKQorCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIF9zZWFyY2hfcGF0aHMoY2xzLCBuYW1lLCBwYXRocyk6CisgICAgICAgICIi
IkZpbmQgbWV0YWRhdGEgZGlyZWN0b3JpZXMgaW4gcGF0aHMgaGV1cmlzdGljYWxseS4iIiIKKyAg
ICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAorICAgICAgICAgICAg
cGF0aC5zZWFyY2goUHJlcGFyZWQobmFtZSkpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBtYXAo
RmFzdFBhdGgsIHBhdGhzKQorICAgICAgICAgICAgKQorCisKK2NsYXNzIFBhdGhEaXN0cmlidXRp
b24oRGlzdHJpYnV0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAg
ICIiIkNvbnN0cnVjdCBhIGRpc3RyaWJ1dGlvbiBmcm9tIGEgcGF0aCB0byB0aGUgbWV0YWRhdGEg
ZGlyZWN0b3J5LgorCisgICAgICAgIDpwYXJhbSBwYXRoOiBBIHBhdGhsaWIuUGF0aCBvciBzaW1p
bGFyIG9iamVjdCBzdXBwb3J0aW5nCisgICAgICAgICAgICAgICAgICAgICAuam9pbnBhdGgoKSwg
X19kaXZfXywgLnBhcmVudCwgYW5kIC5yZWFkX3RleHQoKS4KKyAgICAgICAgIiIiCisgICAgICAg
IHNlbGYuX3BhdGggPSBwYXRoCisKKyAgICBkZWYgcmVhZF90ZXh0KHNlbGYsIGZpbGVuYW1lKToK
KyAgICAgICAgd2l0aCBzdXBwcmVzcyhGaWxlTm90Rm91bmRFcnJvciwgSXNBRGlyZWN0b3J5RXJy
b3IsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIE5vdEFEaXJlY3RvcnlFcnJvciwg
UGVybWlzc2lvbkVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoLmpvaW5wYXRo
KGZpbGVuYW1lKS5yZWFkX3RleHQoZW5jb2Rpbmc9J3V0Zi04JykKKyAgICByZWFkX3RleHQuX19k
b2NfXyA9IERpc3RyaWJ1dGlvbi5yZWFkX3RleHQuX19kb2NfXworCisgICAgZGVmIGxvY2F0ZV9m
aWxlKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gc2VsZi5fcGF0aC5wYXJlbnQgLyBwYXRo
CisKKworZGVmIGRpc3RyaWJ1dGlvbihkaXN0cmlidXRpb25fbmFtZSk6CisgICAgIiIiR2V0IHRo
ZSBgYERpc3RyaWJ1dGlvbmBgIGluc3RhbmNlIGZvciB0aGUgbmFtZWQgcGFja2FnZS4KKworICAg
IDpwYXJhbSBkaXN0cmlidXRpb25fbmFtZTogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBw
YWNrYWdlIGFzIGEgc3RyaW5nLgorICAgIDpyZXR1cm46IEEgYGBEaXN0cmlidXRpb25gYCBpbnN0
YW5jZSAob3Igc3ViY2xhc3MgdGhlcmVvZikuCisgICAgIiIiCisgICAgcmV0dXJuIERpc3RyaWJ1
dGlvbi5mcm9tX25hbWUoZGlzdHJpYnV0aW9uX25hbWUpCisKKworZGVmIGRpc3RyaWJ1dGlvbnMo
Kiprd2FyZ3MpOgorICAgICIiIkdldCBhbGwgYGBEaXN0cmlidXRpb25gYCBpbnN0YW5jZXMgaW4g
dGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCisKKyAgICA6cmV0dXJuOiBBbiBpdGVyYWJsZSBvZiBg
YERpc3RyaWJ1dGlvbmBgIGluc3RhbmNlcy4KKyAgICAiIiIKKyAgICByZXR1cm4gRGlzdHJpYnV0
aW9uLmRpc2NvdmVyKCoqa3dhcmdzKQorCisKK2RlZiBtZXRhZGF0YShkaXN0cmlidXRpb25fbmFt
ZSk6CisgICAgIiIiR2V0IHRoZSBtZXRhZGF0YSBmb3IgdGhlIG5hbWVkIHBhY2thZ2UuCisKKyAg
ICA6cGFyYW0gZGlzdHJpYnV0aW9uX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24g
cGFja2FnZSB0byBxdWVyeS4KKyAgICA6cmV0dXJuOiBBbiBlbWFpbC5NZXNzYWdlIGNvbnRhaW5p
bmcgdGhlIHBhcnNlZCBtZXRhZGF0YS4KKyAgICAiIiIKKyAgICByZXR1cm4gRGlzdHJpYnV0aW9u
LmZyb21fbmFtZShkaXN0cmlidXRpb25fbmFtZSkubWV0YWRhdGEKKworCitkZWYgdmVyc2lvbihk
aXN0cmlidXRpb25fbmFtZSk6CisgICAgIiIiR2V0IHRoZSB2ZXJzaW9uIHN0cmluZyBmb3IgdGhl
IG5hbWVkIHBhY2thZ2UuCisKKyAgICA6cGFyYW0gZGlzdHJpYnV0aW9uX25hbWU6IFRoZSBuYW1l
IG9mIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZSB0byBxdWVyeS4KKyAgICA6cmV0dXJuOiBUaGUg
dmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBwYWNrYWdlIGFzIGRlZmluZWQgaW4gdGhlIHBhY2thZ2Un
cworICAgICAgICAiVmVyc2lvbiIgbWV0YWRhdGEga2V5LgorICAgICIiIgorICAgIHJldHVybiBk
aXN0cmlidXRpb24oZGlzdHJpYnV0aW9uX25hbWUpLnZlcnNpb24KKworCitkZWYgZW50cnlfcG9p
bnRzKCk6CisgICAgIiIiUmV0dXJuIEVudHJ5UG9pbnQgb2JqZWN0cyBmb3IgYWxsIGluc3RhbGxl
ZCBwYWNrYWdlcy4KKworICAgIDpyZXR1cm46IEVudHJ5UG9pbnQgb2JqZWN0cyBmb3IgYWxsIGlu
c3RhbGxlZCBwYWNrYWdlcy4KKyAgICAiIiIKKyAgICBlcHMgPSBpdGVydG9vbHMuY2hhaW4uZnJv
bV9pdGVyYWJsZSgKKyAgICAgICAgZGlzdC5lbnRyeV9wb2ludHMgZm9yIGRpc3QgaW4gZGlzdHJp
YnV0aW9ucygpKQorICAgIGJ5X2dyb3VwID0gb3BlcmF0b3IuYXR0cmdldHRlcignZ3JvdXAnKQor
ICAgIG9yZGVyZWQgPSBzb3J0ZWQoZXBzLCBrZXk9YnlfZ3JvdXApCisgICAgZ3JvdXBlZCA9IGl0
ZXJ0b29scy5ncm91cGJ5KG9yZGVyZWQsIGJ5X2dyb3VwKQorICAgIHJldHVybiB7CisgICAgICAg
IGdyb3VwOiB0dXBsZShlcHMpCisgICAgICAgIGZvciBncm91cCwgZXBzIGluIGdyb3VwZWQKKyAg
ICAgICAgfQorCisKK2RlZiBmaWxlcyhkaXN0cmlidXRpb25fbmFtZSk6CisgICAgIiIiUmV0dXJu
IGEgbGlzdCBvZiBmaWxlcyBmb3IgdGhlIG5hbWVkIHBhY2thZ2UuCisKKyAgICA6cGFyYW0gZGlz
dHJpYnV0aW9uX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZSB0byBx
dWVyeS4KKyAgICA6cmV0dXJuOiBMaXN0IG9mIGZpbGVzIGNvbXBvc2luZyB0aGUgZGlzdHJpYnV0
aW9uLgorICAgICIiIgorICAgIHJldHVybiBkaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uX25hbWUp
LmZpbGVzCisKKworZGVmIHJlcXVpcmVzKGRpc3RyaWJ1dGlvbl9uYW1lKToKKyAgICAiIiIKKyAg
ICBSZXR1cm4gYSBsaXN0IG9mIHJlcXVpcmVtZW50cyBmb3IgdGhlIG5hbWVkIHBhY2thZ2UuCisK
KyAgICA6cmV0dXJuOiBBbiBpdGVyYXRvciBvZiByZXF1aXJlbWVudHMsIHN1aXRhYmxlIGZvcgor
ICAgIHBhY2thZ2luZy5yZXF1aXJlbWVudC5SZXF1aXJlbWVudC4KKyAgICAiIiIKKyAgICByZXR1
cm4gZGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbl9uYW1lKS5yZXF1aXJlcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvaW1wb3J0bGliX21ldGFkYXRhL19jb21wYXQucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9pbXBvcnRsaWJfbWV0YWRhdGEvX2NvbXBhdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMwM2Q0YTIyZTg1MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9f
Y29tcGF0LnB5CkBAIC0wLDAgKzEsMTUyIEBACitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworCitpbXBvcnQgaW8KK2ltcG9ydCBhYmMKK2lt
cG9ydCBzeXMKK2ltcG9ydCBlbWFpbAorCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywpOiAg
IyBwcmFnbWE6IG5vY292ZXIKKyAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICBmcm9tIGNvbmZpZ3Bh
cnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCisgICAgaW1wb3J0IGNvbnRleHRsaWIKKyAgICBGaWxl
Tm90Rm91bmRFcnJvciA9IGJ1aWx0aW5zLkZpbGVOb3RGb3VuZEVycm9yCisgICAgSXNBRGlyZWN0
b3J5RXJyb3IgPSBidWlsdGlucy5Jc0FEaXJlY3RvcnlFcnJvcgorICAgIE5vdEFEaXJlY3RvcnlF
cnJvciA9IGJ1aWx0aW5zLk5vdEFEaXJlY3RvcnlFcnJvcgorICAgIFBlcm1pc3Npb25FcnJvciA9
IGJ1aWx0aW5zLlBlcm1pc3Npb25FcnJvcgorICAgIG1hcCA9IGJ1aWx0aW5zLm1hcAorICAgIGZy
b20gaXRlcnRvb2xzIGltcG9ydCBmaWx0ZXJmYWxzZQorZWxzZTogICMgcHJhZ21hOiBub2NvdmVy
CisgICAgZnJvbSBiYWNrcG9ydHMuY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKKyAg
ICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgaW1hcCBhcyBtYXAgICMgdHlwZTogaWdub3JlCisgICAg
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlmaWx0ZXJmYWxzZSBhcyBmaWx0ZXJmYWxzZQorICAgIGlt
cG9ydCBjb250ZXh0bGliMiBhcyBjb250ZXh0bGliCisgICAgRmlsZU5vdEZvdW5kRXJyb3IgPSBJ
T0Vycm9yLCBPU0Vycm9yCisgICAgSXNBRGlyZWN0b3J5RXJyb3IgPSBJT0Vycm9yLCBPU0Vycm9y
CisgICAgTm90QURpcmVjdG9yeUVycm9yID0gSU9FcnJvciwgT1NFcnJvcgorICAgIFBlcm1pc3Np
b25FcnJvciA9IElPRXJyb3IsIE9TRXJyb3IKKworc3RyID0gdHlwZSgnJykKKworc3VwcHJlc3Mg
PSBjb250ZXh0bGliLnN1cHByZXNzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgNSk6ICAj
IHByYWdtYTogbm9jb3ZlcgorICAgIGltcG9ydCBwYXRobGliCitlbHNlOiAgIyBwcmFnbWE6IG5v
Y292ZXIKKyAgICBpbXBvcnQgcGF0aGxpYjIgYXMgcGF0aGxpYgorCit0cnk6CisgICAgTW9kdWxl
Tm90Rm91bmRFcnJvciA9IGJ1aWx0aW5zLkZpbGVOb3RGb3VuZEVycm9yCitleGNlcHQgKE5hbWVF
cnJvciwgQXR0cmlidXRlRXJyb3IpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICBNb2R1bGVOb3RG
b3VuZEVycm9yID0gSW1wb3J0RXJyb3IgICMgdHlwZTogaWdub3JlCisKKworaWYgc3lzLnZlcnNp
b25faW5mbyA+PSAoMywpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICBmcm9tIGltcG9ydGxpYi5h
YmMgaW1wb3J0IE1ldGFQYXRoRmluZGVyCitlbHNlOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICBj
bGFzcyBNZXRhUGF0aEZpbmRlcihvYmplY3QpOgorICAgICAgICBfX21ldGFjbGFzc19fID0gYWJj
LkFCQ01ldGEKKworCitfX21ldGFjbGFzc19fID0gdHlwZQorX19hbGxfXyA9IFsKKyAgICAnaW5z
dGFsbCcsICdOdWxsRmluZGVyJywgJ01ldGFQYXRoRmluZGVyJywgJ01vZHVsZU5vdEZvdW5kRXJy
b3InLAorICAgICdwYXRobGliJywgJ0NvbmZpZ1BhcnNlcicsICdtYXAnLCAnc3VwcHJlc3MnLCAn
RmlsZU5vdEZvdW5kRXJyb3InLAorICAgICdOb3RBRGlyZWN0b3J5RXJyb3InLCAnZW1haWxfbWVz
c2FnZV9mcm9tX3N0cmluZycsCisgICAgXQorCisKK2RlZiBpbnN0YWxsKGNscyk6CisgICAgIiIi
CisgICAgQ2xhc3MgZGVjb3JhdG9yIGZvciBpbnN0YWxsYXRpb24gb24gc3lzLm1ldGFfcGF0aC4K
KworICAgIEFkZHMgdGhlIGJhY2twb3J0IERpc3RyaWJ1dGlvbkZpbmRlciB0byBzeXMubWV0YV9w
YXRoIGFuZAorICAgIGF0dGVtcHRzIHRvIGRpc2FibGUgdGhlIGZpbmRlciBmdW5jdGlvbmFsaXR5
IG9mIHRoZSBzdGRsaWIKKyAgICBEaXN0cmlidXRpb25GaW5kZXIuCisgICAgIiIiCisgICAgc3lz
Lm1ldGFfcGF0aC5hcHBlbmQoY2xzKCkpCisgICAgZGlzYWJsZV9zdGRsaWJfZmluZGVyKCkKKyAg
ICByZXR1cm4gY2xzCisKKworZGVmIGRpc2FibGVfc3RkbGliX2ZpbmRlcigpOgorICAgICIiIgor
ICAgIEdpdmUgdGhlIGJhY2twb3J0IHByaW1hY3kgZm9yIGRpc2NvdmVyaW5nIHBhdGgtYmFzZWQg
ZGlzdHJpYnV0aW9ucworICAgIGJ5IG1vbmtleS1wYXRjaGluZyB0aGUgc3RkbGliIE9fTy4KKwor
ICAgIFNlZSAjOTEgZm9yIG1vcmUgYmFja2dyb3VuZCBmb3IgcmF0aW9uYWxlIG9uIHRoaXMgc2tl
dGNoeQorICAgIGJlaGF2aW9yLgorICAgICIiIgorICAgIGRlZiBtYXRjaGVzKGZpbmRlcik6Cisg
ICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBnZXRhdHRyKGZpbmRlciwgJ19fbW9kdWxlX18n
LCBOb25lKSA9PSAnX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnCisgICAgICAgICAgICBhbmQg
aGFzYXR0cihmaW5kZXIsICdmaW5kX2Rpc3RyaWJ1dGlvbnMnKQorICAgICAgICAgICAgKQorICAg
IGZvciBmaW5kZXIgaW4gZmlsdGVyKG1hdGNoZXMsIHN5cy5tZXRhX3BhdGgpOiAgIyBwcmFnbWE6
IG5vY292ZXIKKyAgICAgICAgZGVsIGZpbmRlci5maW5kX2Rpc3RyaWJ1dGlvbnMKKworCitjbGFz
cyBOdWxsRmluZGVyOgorICAgICIiIgorICAgIEEgIkZpbmRlciIgKGFrYSAiTWV0YUNsYXNzRmlu
ZGVyIikgdGhhdCBuZXZlciBmaW5kcyBhbnkgbW9kdWxlcywKKyAgICBidXQgbWF5IGZpbmQgZGlz
dHJpYnV0aW9ucy4KKyAgICAiIiIKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZpbmRfc3Bl
YygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgIyBJbiBQeXRo
b24gMiwgdGhlIGltcG9ydCBzeXN0ZW0gcmVxdWlyZXMgZmluZGVycworICAgICMgdG8gaGF2ZSBh
IGZpbmRfbW9kdWxlKCkgbWV0aG9kLCBidXQgdGhpcyB1c2FnZQorICAgICMgaXMgZGVwcmVjYXRl
ZCBpbiBQeXRob24gMyBpbiBmYXZvciBvZiBmaW5kX3NwZWMoKS4KKyAgICAjIEZvciB0aGUgcHVy
cG9zZXMgb2YgdGhpcyBmaW5kZXIgKGkuZS4gYmVpbmcgcHJlc2VudAorICAgICMgb24gc3lzLm1l
dGFfcGF0aCBidXQgaGF2aW5nIG5vIG90aGVyIGltcG9ydAorICAgICMgc3lzdGVtIGZ1bmN0aW9u
YWxpdHkpLCB0aGUgdHdvIG1ldGhvZHMgYXJlIGlkZW50aWNhbC4KKyAgICBmaW5kX21vZHVsZSA9
IGZpbmRfc3BlYworCisKK2RlZiBweTJfbWVzc2FnZV9mcm9tX3N0cmluZyh0ZXh0KTogICMgbm9j
b3ZlcnB5MworICAgICMgV29yayBhcm91bmQgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUy
NTU0NSB3aGVyZQorICAgICMgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyBjYW5ub3QgaGFuZGxl
IFVuaWNvZGUgb24gUHl0aG9uIDIuCisgICAgaW9fYnVmZmVyID0gaW8uU3RyaW5nSU8odGV4dCkK
KyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoaW9fYnVmZmVyKQorCisKK2VtYWls
X21lc3NhZ2VfZnJvbV9zdHJpbmcgPSAoCisgICAgcHkyX21lc3NhZ2VfZnJvbV9zdHJpbmcKKyAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKSBlbHNlCisgICAgZW1haWwubWVzc2FnZV9mcm9t
X3N0cmluZworICAgICkKKworCitjbGFzcyBQeVB5X3JlcHI6CisgICAgIiIiCisgICAgT3ZlcnJp
ZGUgcmVwciBmb3IgRW50cnlQb2ludCBvYmplY3RzIG9uIFB5UHkgdG8gYXZvaWQgX19pdGVyX18g
YWNjZXNzLgorICAgIFJlZiAjOTcsICMxMDIuCisgICAgIiIiCisgICAgYWZmZWN0ZWQgPSBoYXNh
dHRyKHN5cywgJ3B5cHlfdmVyc2lvbl9pbmZvJykKKworICAgIGRlZiBfX2NvbXBhdF9yZXByX18o
c2VsZik6ICAjIHByYWdtYTogbm9jb3ZlcgorICAgICAgICBkZWYgbWFrZV9wYXJhbShuYW1lKToK
KyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihzZWxmLCBuYW1lKQorICAgICAgICAgICAgcmV0
dXJuICd7bmFtZX09e3ZhbHVlIXJ9Jy5mb3JtYXQoKipsb2NhbHMoKSkKKyAgICAgICAgcGFyYW1z
ID0gJywgJy5qb2luKG1hcChtYWtlX3BhcmFtLCBzZWxmLl9maWVsZHMpKQorICAgICAgICByZXR1
cm4gJ0VudHJ5UG9pbnQoe3BhcmFtc30pJy5mb3JtYXQoKipsb2NhbHMoKSkKKworICAgIGlmIGFm
ZmVjdGVkOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICAgICAgX19yZXByX18gPSBfX2NvbXBhdF9y
ZXByX18KKyAgICBkZWwgYWZmZWN0ZWQKKworCisjIGZyb20gaXRlcnRvb2xzIHJlY2lwZXMKK2Rl
ZiB1bmlxdWVfZXZlcnNlZW4oaXRlcmFibGUpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICAiTGlz
dCB1bmlxdWUgZWxlbWVudHMsIHByZXNlcnZpbmcgb3JkZXIuIFJlbWVtYmVyIGFsbCBlbGVtZW50
cyBldmVyIHNlZW4uIgorICAgIHNlZW4gPSBzZXQoKQorICAgIHNlZW5fYWRkID0gc2Vlbi5hZGQK
KworICAgIGZvciBlbGVtZW50IGluIGZpbHRlcmZhbHNlKHNlZW4uX19jb250YWluc19fLCBpdGVy
YWJsZSk6CisgICAgICAgIHNlZW5fYWRkKGVsZW1lbnQpCisgICAgICAgIHlpZWxkIGVsZW1lbnQK
KworCit1bmlxdWVfb3JkZXJlZCA9ICgKKyAgICB1bmlxdWVfZXZlcnNlZW4gaWYgc3lzLnZlcnNp
b25faW5mbyA8ICgzLCA3KSBlbHNlIGRpY3QuZnJvbWtleXMpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS9wcmVwYXJlL2V4YW1wbGUvZXhhbXBsZS9fX2luaXRfXy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBhcmUvZXhhbXBsZS9leGFtcGxlL19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmE3M2I3NDMzOTQxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvcHJlcGFyZS9leGFtcGxl
L2V4YW1wbGUvX19pbml0X18ucHkKQEAgLTAsMCArMSwyIEBACitkZWYgbWFpbigpOgorICAgIHJl
dHVybiAnZXhhbXBsZScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBh
cmUvZXhhbXBsZS9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBhcmUvZXhh
bXBsZS9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2
NjNhZDM4OWEyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3By
ZXBhcmUvZXhhbXBsZS9zZXR1cC5weQpAQCAtMCwwICsxLDEwIEBACitmcm9tIHNldHVwdG9vbHMg
aW1wb3J0IHNldHVwCitzZXR1cCgKKyAgICBuYW1lPSdleGFtcGxlJywKKyAgICB2ZXJzaW9uPScy
MS4xMicsCisgICAgbGljZW5zZT0nQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UnLAorICAgIHBhY2th
Z2VzPVsnZXhhbXBsZSddLAorICAgIGVudHJ5X3BvaW50cz17CisgICAgICAgICdjb25zb2xlX3Nj
cmlwdHMnOiBbJ2V4YW1wbGUgPSBleGFtcGxlOm1haW4nLCAnRXhhbXBsZT1leGFtcGxlOm1haW4n
XSwKKyAgICAgICAgfSwKKyAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS9weXByb2plY3QudG9tbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3B5cHJvamVjdC50b21s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTVjM2E2YTQ1NTIzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvcHlwcm9qZWN0LnRvbWwK
QEAgLTAsMCArMSwyIEBACitbYnVpbGQtc3lzdGVtXQorcmVxdWlyZXMgPSBbInNldHVwdG9vbHM+
PTMwLjMiLCAid2hlZWwiLCAic2V0dXB0b29sc19zY20iXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAu
Y2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmExMGM4ZDM1OGNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAuY2ZnCkBA
IC0wLDAgKzEsNDcgQEAKK1ttZXRhZGF0YV0KK25hbWUgPSBpbXBvcnRsaWJfbWV0YWRhdGEKK2F1
dGhvciA9IEphc29uIFIuIENvb21icworYXV0aG9yX2VtYWlsID0gamFyYWNvQGphcmFjby5jb20K
K3VybCA9IGh0dHA6Ly9pbXBvcnRsaWItbWV0YWRhdGEucmVhZHRoZWRvY3MuaW8vCitkZXNjcmlw
dGlvbiA9IFJlYWQgbWV0YWRhdGEgZnJvbSBQeXRob24gcGFja2FnZXMKK2xvbmdfZGVzY3JpcHRp
b24gPSBmaWxlOiBSRUFETUUucnN0CitsaWNlbnNlID0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UK
K2NsYXNzaWZpZXJzID0KKyAgICBEZXZlbG9wbWVudCBTdGF0dXMgOjogMyAtIEFscGhhCisgICAg
SW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycworICAgIExpY2Vuc2UgOjogT1NJIEFwcHJv
dmVkIDo6IEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlCisgICAgVG9waWMgOjogU29mdHdhcmUgRGV2
ZWxvcG1lbnQgOjogTGlicmFyaWVzCisgICAgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9u
IDo6IDMKKyAgICBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMgorCitbb3B0aW9u
c10KK3B5dGhvbl9yZXF1aXJlcyA9ID49Mi43LCE9My4wLiosIT0zLjEuKiwhPTMuMi4qLCE9My4z
LiosIT0zLjQuKgorc2V0dXBfcmVxdWlyZXMgPSBzZXR1cHRvb2xzLXNjbQoraW5zdGFsbF9yZXF1
aXJlcyA9CisgICAgemlwcD49MC41CisgICAgcGF0aGxpYjI7IHB5dGhvbl92ZXJzaW9uIDwgJzMn
CisgICAgY29udGV4dGxpYjI7IHB5dGhvbl92ZXJzaW9uIDwgJzMnCisgICAgY29uZmlncGFyc2Vy
Pj0zLjU7IHB5dGhvbl92ZXJzaW9uIDwgJzMnCitwYWNrYWdlcyA9IGltcG9ydGxpYl9tZXRhZGF0
YQorCitbbXlweV0KK2lnbm9yZV9taXNzaW5nX2ltcG9ydHMgPSBUcnVlCisjIFhYWCBXZSByZWFs
bHkgc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBgVHJ1ZWAgdmFsdWUgaGVyZSwgYnV0IGl0IGNhdXNl
cyB0b28KKyMgbWFueSB3YXJuaW5ncywgc28gZm9yIG5vdyBqdXN0IGRpc2FibGUgaXQuICBFLmcu
IGEgcGFja2FnZSdzIF9fc3BlY19fIGlzCisjIGRlZmluZWQgYXMgT3B0aW9uYWxbTW9kdWxlU3Bl
Y10gc28gd2UgY2FuJ3QganVzdCBibGluZGx5IHB1bGwgYXR0cmlidXRlcyBvZmYKKyMgb2YgdGhh
dCBhdHRyaWJ1dGUuICBUaGUgcmVhbCBmaXggaXMgdG8gYWRkIGNvbmRpdGlvbmFscyBvciBhc3Nl
cnRzIHByb3ZpbmcKKyMgdGhhdCBwYWNrYWdlLl9fc3BlY19fIGlzIG5vdCBOb25lLgorc3RyaWN0
X29wdGlvbmFsID0gRmFsc2UKKworW3doZWVsXQordW5pdmVyc2FsPTEKKworW29wdGlvbnMuZXh0
cmFzX3JlcXVpcmVdCit0ZXN0aW5nID0KKyAgICBpbXBvcnRsaWJfcmVzb3VyY2VzPj0xLjM7IHB5
dGhvbl92ZXJzaW9uIDwgIjMuOSIKKyAgICBwYWNrYWdpbmcKKyAgICBwZXA1MTcKKyAgICB1bml0
dGVzdDI7IHB5dGhvbl92ZXJzaW9uIDwgIjMiCitkb2NzID0KKyAgICBzcGhpbngKKyAgICByc3Qu
bGlua2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9zZXR1cC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZDVkNDNkN2M5M2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvc2V0dXAucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHNldHVwdG9vbHMg
aW1wb3J0IHNldHVwCisKK3NldHVwKHVzZV9zY21fdmVyc2lvbj1UcnVlKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxp
Yl9tZXRhZGF0YS90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0
YWRhdGEvdGVzdHMvZGF0YS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rl
c3RzL2RhdGEvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rl
c3RzL2RhdGEvZXhhbXBsZS0yMS4xMi1weTMtbm9uZS1hbnkud2hsIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJf
bWV0YWRhdGEvdGVzdHMvZGF0YS9leGFtcGxlLTIxLjEyLXB5My1ub25lLWFueS53aGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NDFhYjA3ZjdhYWQKQmluYXJ5IGZp
bGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy9kYXRhL2V4
YW1wbGUtMjEuMTItcHkzLW5vbmUtYW55LndobCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL3Rlc3RzL2RhdGEvZXhhbXBsZS0yMS4xMi1weTMuNi5lZ2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy9kYXRhL2V4YW1wbGUtMjEuMTItcHkzLjYuZWdnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2RiMjk4YTE5YjA5CkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvZGF0
YS9leGFtcGxlLTIxLjEyLXB5My42LmVnZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0
bGliX21ldGFkYXRhL3Rlc3RzL2ZpeHR1cmVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEv
dGVzdHMvZml4dHVyZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wZDgzNGM2NTgwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS90ZXN0cy9maXh0dXJlcy5weQpAQCAtMCwwICsxLDI2MyBAQAorZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHNo
dXRpbAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKKworZnJvbSAucHkzOWNvbXBh
dCBpbXBvcnQgRlNfTk9OQVNDSUkKKworZnJvbSBpbXBvcnRsaWJfbWV0YWRhdGEuX2NvbXBhdCBp
bXBvcnQgcGF0aGxpYiwgY29udGV4dGxpYgorCisKK19fbWV0YWNsYXNzX18gPSB0eXBlCisKKwor
QGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiB0ZW1wZGlyKCk6CisgICAgdG1wZGlyID0g
dGVtcGZpbGUubWtkdGVtcCgpCisgICAgdHJ5OgorICAgICAgICB5aWVsZCBwYXRobGliLlBhdGgo
dG1wZGlyKQorICAgIGZpbmFsbHk6CisgICAgICAgIHNodXRpbC5ybXRyZWUodG1wZGlyKQorCisK
K0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgc2F2ZV9jd2QoKToKKyAgICBvcmlnID0g
b3MuZ2V0Y3dkKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAg
ICAgb3MuY2hkaXIob3JpZykKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHRl
bXBkaXJfYXNfY3dkKCk6CisgICAgd2l0aCB0ZW1wZGlyKCkgYXMgdG1wOgorICAgICAgICB3aXRo
IHNhdmVfY3dkKCk6CisgICAgICAgICAgICBvcy5jaGRpcihzdHIodG1wKSkKKyAgICAgICAgICAg
IHlpZWxkIHRtcAorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgaW5zdGFsbF9m
aW5kZXIoZmluZGVyKToKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChmaW5kZXIpCisgICAgdHJ5
OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tZXRhX3BhdGgucmVt
b3ZlKGZpbmRlcikKKworCitjbGFzcyBGaXh0dXJlczoKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHNlbGYuZml4dHVyZXMgPSBjb250ZXh0bGliLkV4aXRTdGFjaygpCisgICAgICAgIHNl
bGYuYWRkQ2xlYW51cChzZWxmLmZpeHR1cmVzLmNsb3NlKQorCisKK2NsYXNzIFNpdGVEaXIoRml4
dHVyZXMpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoU2l0ZURpciwgc2Vs
Zikuc2V0VXAoKQorICAgICAgICBzZWxmLnNpdGVfZGlyID0gc2VsZi5maXh0dXJlcy5lbnRlcl9j
b250ZXh0KHRlbXBkaXIoKSkKKworCitjbGFzcyBPblN5c1BhdGgoRml4dHVyZXMpOgorICAgIEBz
dGF0aWNtZXRob2QKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhZGRf
c3lzX3BhdGgoZGlyKToKKyAgICAgICAgc3lzLnBhdGhbOjBdID0gW3N0cihkaXIpXQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAg
c3lzLnBhdGgucmVtb3ZlKHN0cihkaXIpKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzdXBlcihPblN5c1BhdGgsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5maXh0dXJlcy5l
bnRlcl9jb250ZXh0KHNlbGYuYWRkX3N5c19wYXRoKHNlbGYuc2l0ZV9kaXIpKQorCisKK2NsYXNz
IERpc3RJbmZvUGtnKE9uU3lzUGF0aCwgU2l0ZURpcik6CisgICAgZmlsZXMgPSB7CisgICAgICAg
ICJkaXN0aW5mb19wa2ctMS4wLjAuZGlzdC1pbmZvIjogeworICAgICAgICAgICAgIk1FVEFEQVRB
IjogIiIiCisgICAgICAgICAgICAgICAgTmFtZTogZGlzdGluZm8tcGtnCisgICAgICAgICAgICAg
ICAgQXV0aG9yOiBTdGV2ZW4gTWEKKyAgICAgICAgICAgICAgICBWZXJzaW9uOiAxLjAuMAorICAg
ICAgICAgICAgICAgIFJlcXVpcmVzLURpc3Q6IHdoZWVsID49IDEuMAorICAgICAgICAgICAgICAg
IFJlcXVpcmVzLURpc3Q6IHB5dGVzdDsgZXh0cmEgPT0gJ3Rlc3QnCisgICAgICAgICAgICAgICAg
IiIiLAorICAgICAgICAgICAgIlJFQ09SRCI6ICJtb2QucHksc2hhMjU2PWFiYywyMFxuIiwKKyAg
ICAgICAgICAgICJlbnRyeV9wb2ludHMudHh0IjogIiIiCisgICAgICAgICAgICAgICAgW2VudHJp
ZXNdCisgICAgICAgICAgICAgICAgbWFpbiA9IG1vZDptYWluCisgICAgICAgICAgICAgICAgbnM6
c3ViID0gbW9kOm1haW4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
Im1vZC5weSI6ICIiIgorICAgICAgICAgICAgZGVmIG1haW4oKToKKyAgICAgICAgICAgICAgICBw
cmludCgiaGVsbG8gd29ybGQiKQorICAgICAgICAgICAgIiIiLAorICAgICAgICB9CisKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKERpc3RJbmZvUGtnLCBzZWxmKS5zZXRVcCgp
CisgICAgICAgIGJ1aWxkX2ZpbGVzKERpc3RJbmZvUGtnLmZpbGVzLCBzZWxmLnNpdGVfZGlyKQor
CisKK2NsYXNzIERpc3RJbmZvUGtnV2l0aERvdChPblN5c1BhdGgsIFNpdGVEaXIpOgorICAgIGZp
bGVzID0geworICAgICAgICAicGtnX2RvdC0xLjAuMC5kaXN0LWluZm8iOiB7CisgICAgICAgICAg
ICAiTUVUQURBVEEiOiAiIiIKKyAgICAgICAgICAgICAgICBOYW1lOiBwa2cuZG90CisgICAgICAg
ICAgICAgICAgVmVyc2lvbjogMS4wLjAKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAg
ICB9LAorICAgICAgICB9CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKERp
c3RJbmZvUGtnV2l0aERvdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBidWlsZF9maWxlcyhEaXN0
SW5mb1BrZ1dpdGhEb3QuZmlsZXMsIHNlbGYuc2l0ZV9kaXIpCisKKworY2xhc3MgRGlzdEluZm9Q
a2dXaXRoRG90TGVnYWN5KE9uU3lzUGF0aCwgU2l0ZURpcik6CisgICAgZmlsZXMgPSB7CisgICAg
ICAgICJwa2cuZG90LTEuMC4wLmRpc3QtaW5mbyI6IHsKKyAgICAgICAgICAgICJNRVRBREFUQSI6
ICIiIgorICAgICAgICAgICAgICAgIE5hbWU6IHBrZy5kb3QKKyAgICAgICAgICAgICAgICBWZXJz
aW9uOiAxLjAuMAorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIH0sCisgICAgICAg
IH0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoRGlzdEluZm9Qa2dXaXRo
RG90TGVnYWN5LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIGJ1aWxkX2ZpbGVzKERpc3RJbmZvUGtn
V2l0aERvdExlZ2FjeS5maWxlcywgc2VsZi5zaXRlX2RpcikKKworCitjbGFzcyBEaXN0SW5mb1Br
Z09mZlBhdGgoU2l0ZURpcik6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihE
aXN0SW5mb1BrZ09mZlBhdGgsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgYnVpbGRfZmlsZXMoRGlz
dEluZm9Qa2cuZmlsZXMsIHNlbGYuc2l0ZV9kaXIpCisKKworY2xhc3MgRWdnSW5mb1BrZyhPblN5
c1BhdGgsIFNpdGVEaXIpOgorICAgIGZpbGVzID0geworICAgICAgICAiZWdnaW5mb19wa2cuZWdn
LWluZm8iOiB7CisgICAgICAgICAgICAiUEtHLUlORk8iOiAiIiIKKyAgICAgICAgICAgICAgICBO
YW1lOiBlZ2dpbmZvLXBrZworICAgICAgICAgICAgICAgIEF1dGhvcjogU3RldmVuIE1hCisgICAg
ICAgICAgICAgICAgTGljZW5zZTogVW5rbm93bgorICAgICAgICAgICAgICAgIFZlcnNpb246IDEu
MC4wCisgICAgICAgICAgICAgICAgQ2xhc3NpZmllcjogSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2
ZWxvcGVycworICAgICAgICAgICAgICAgIENsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERl
dmVsb3BtZW50IDo6IExpYnJhcmllcworICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAg
ICJTT1VSQ0VTLnR4dCI6ICIiIgorICAgICAgICAgICAgICAgIG1vZC5weQorICAgICAgICAgICAg
ICAgIGVnZ2luZm9fcGtnLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKKyAgICAgICAgICAgICIiIiwK
KyAgICAgICAgICAgICJlbnRyeV9wb2ludHMudHh0IjogIiIiCisgICAgICAgICAgICAgICAgW2Vu
dHJpZXNdCisgICAgICAgICAgICAgICAgbWFpbiA9IG1vZDptYWluCisgICAgICAgICAgICAiIiIs
CisgICAgICAgICAgICAicmVxdWlyZXMudHh0IjogIiIiCisgICAgICAgICAgICAgICAgd2hlZWwg
Pj0gMS4wOyBweXRob25fdmVyc2lvbiA+PSAiMi43IgorICAgICAgICAgICAgICAgIFt0ZXN0XQor
ICAgICAgICAgICAgICAgIHB5dGVzdAorICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgInRv
cF9sZXZlbC50eHQiOiAibW9kXG4iCisgICAgICAgICAgICB9LAorICAgICAgICAibW9kLnB5Ijog
IiIiCisgICAgICAgICAgICBkZWYgbWFpbigpOgorICAgICAgICAgICAgICAgIHByaW50KCJoZWxs
byB3b3JsZCIpCisgICAgICAgICAgICAiIiIsCisgICAgICAgIH0KKworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgc3VwZXIoRWdnSW5mb1BrZywgc2VsZikuc2V0VXAoKQorICAgICAgICBi
dWlsZF9maWxlcyhFZ2dJbmZvUGtnLmZpbGVzLCBwcmVmaXg9c2VsZi5zaXRlX2RpcikKKworCitj
bGFzcyBFZ2dJbmZvRmlsZShPblN5c1BhdGgsIFNpdGVEaXIpOgorICAgIGZpbGVzID0geworICAg
ICAgICAiZWdnaW5mb19maWxlLmVnZy1pbmZvIjogIiIiCisgICAgICAgICAgICBNZXRhZGF0YS1W
ZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIE5hbWU6IGVnZ2luZm9fZmlsZQorICAgICAgICAgICAg
VmVyc2lvbjogMC4xCisgICAgICAgICAgICBTdW1tYXJ5OiBBbiBleGFtcGxlIHBhY2thZ2UKKyAg
ICAgICAgICAgIEhvbWUtcGFnZTogd3d3LmV4YW1wbGUuY29tCisgICAgICAgICAgICBBdXRob3I6
IEVyaWMgSGFmZmEtVmVlCisgICAgICAgICAgICBBdXRob3ItZW1haWw6IGVyaWNAZXhhbXBsZS5j
b21zCisgICAgICAgICAgICBMaWNlbnNlOiBVTktOT1dOCisgICAgICAgICAgICBEZXNjcmlwdGlv
bjogVU5LTk9XTgorICAgICAgICAgICAgUGxhdGZvcm06IFVOS05PV04KKyAgICAgICAgICAgICIi
IiwKKyAgICAgICAgfQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihFZ2dJ
bmZvRmlsZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBidWlsZF9maWxlcyhFZ2dJbmZvRmlsZS5m
aWxlcywgcHJlZml4PXNlbGYuc2l0ZV9kaXIpCisKKworY2xhc3MgTG9jYWxQYWNrYWdlOgorICAg
IGZpbGVzID0geworICAgICAgICAic2V0dXAucHkiOiAiIiIKKyAgICAgICAgICAgIGltcG9ydCBz
ZXR1cHRvb2xzCisgICAgICAgICAgICBzZXR1cHRvb2xzLnNldHVwKG5hbWU9ImxvY2FsLXBrZyIs
IHZlcnNpb249IjIuMC4xIikKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgfQorCisgICAgZGVm
IHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpeHR1cmVzID0gY29udGV4dGxpYi5FeGl0U3Rh
Y2soKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5maXh0dXJlcy5jbG9zZSkKKyAgICAg
ICAgc2VsZi5maXh0dXJlcy5lbnRlcl9jb250ZXh0KHRlbXBkaXJfYXNfY3dkKCkpCisgICAgICAg
IGJ1aWxkX2ZpbGVzKHNlbGYuZmlsZXMpCisKKworZGVmIGJ1aWxkX2ZpbGVzKGZpbGVfZGVmcywg
cHJlZml4PXBhdGhsaWIuUGF0aCgpKToKKyAgICAiIiJCdWlsZCBhIHNldCBvZiBmaWxlcy9kaXJl
Y3RvcmllcywgYXMgZGVzY3JpYmVkIGJ5IHRoZQorCisgICAgZmlsZV9kZWZzIGRpY3Rpb25hcnku
ICBFYWNoIGtleS92YWx1ZSBwYWlyIGluIHRoZSBkaWN0aW9uYXJ5IGlzCisgICAgaW50ZXJwcmV0
ZWQgYXMgYSBmaWxlbmFtZS9jb250ZW50cyBwYWlyLiAgSWYgdGhlIGNvbnRlbnRzIHZhbHVlIGlz
IGEKKyAgICBkaWN0aW9uYXJ5LCBhIGRpcmVjdG9yeSBpcyBjcmVhdGVkLCBhbmQgdGhlIGRpY3Rp
b25hcnkgaW50ZXJwcmV0ZWQKKyAgICBhcyB0aGUgZmlsZXMgd2l0aGluIGl0LCByZWN1cnNpdmVs
eS4KKworICAgIEZvciBleGFtcGxlOgorCisgICAgeyJSRUFETUUudHh0IjogIkEgUkVBRE1FIGZp
bGUiLAorICAgICAiZm9vIjogeworICAgICAgICAiX19pbml0X18ucHkiOiAiIiwKKyAgICAgICAg
ImJhciI6IHsKKyAgICAgICAgICAgICJfX2luaXRfXy5weSI6ICIiLAorICAgICAgICB9LAorICAg
ICAgICAiYmF6LnB5IjogIiMgU29tZSBjb2RlIiwKKyAgICAgfQorICAgIH0KKyAgICAiIiIKKyAg
ICBmb3IgbmFtZSwgY29udGVudHMgaW4gZmlsZV9kZWZzLml0ZW1zKCk6CisgICAgICAgIGZ1bGxf
bmFtZSA9IHByZWZpeCAvIG5hbWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb250ZW50cywgZGlj
dCk6CisgICAgICAgICAgICBmdWxsX25hbWUubWtkaXIoKQorICAgICAgICAgICAgYnVpbGRfZmls
ZXMoY29udGVudHMsIHByZWZpeD1mdWxsX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKGNvbnRlbnRzLCBieXRlcyk6CisgICAgICAgICAgICAgICAgd2l0aCBm
dWxsX25hbWUub3Blbignd2InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGNv
bnRlbnRzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3aXRoIGZ1bGxfbmFt
ZS5vcGVuKCd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShEQUxTKGNvbnRl
bnRzKSkKKworCitjbGFzcyBGaWxlQnVpbGRlcjoKKyAgICBkZWYgdW5pY29kZV9maWxlbmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIEZTX05PTkFTQ0lJIG9yIFwKKyAgICAgICAgICAgIHNlbGYu
c2tpcCgiRmlsZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBub24tYXNjaWkuIikKKworCitkZWYg
REFMUyhzdHIpOgorICAgICJEZWRlbnQgYW5kIGxlZnQtc3RyaXAiCisgICAgcmV0dXJuIHRleHR3
cmFwLmRlZGVudChzdHIpLmxzdHJpcCgpCisKKworY2xhc3MgTnVsbEZpbmRlcjoKKyAgICBkZWYg
ZmluZF9tb2R1bGUoc2VsZiwgbmFtZSk6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3B5Mzljb21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9t
ZXRhZGF0YS90ZXN0cy9weTM5Y29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYTE3NWQ0YzM1NWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvdGVzdHMvcHkzOWNvbXBhdC5weQpAQCAtMCwwICsxLDQgQEAKK3RyeToKKyAg
ICBmcm9tIHRlc3Quc3VwcG9ydC5vc19oZWxwZXJzIGltcG9ydCBGU19OT05BU0NJSQorZXhjZXB0
IEltcG9ydEVycm9yOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBGU19OT05BU0NJSSAg
IyBub3FhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X2Fw
aS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3Rlc3RfYXBpLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWZhOTc5OTY0MjMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvdGVzdF9hcGkucHkKQEAgLTAs
MCArMSwxOTYgQEAKK2ltcG9ydCByZQoraW1wb3J0IHRleHR3cmFwCisKK3RyeToKKyAgICBpbXBv
cnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0
IHVuaXR0ZXN0CisKK2Zyb20gLiBpbXBvcnQgZml4dHVyZXMKK2Zyb20gaW1wb3J0bGliX21ldGFk
YXRhIGltcG9ydCAoCisgICAgRGlzdHJpYnV0aW9uLCBQYWNrYWdlTm90Rm91bmRFcnJvciwgZGlz
dHJpYnV0aW9uLAorICAgIGVudHJ5X3BvaW50cywgZmlsZXMsIG1ldGFkYXRhLCByZXF1aXJlcywg
dmVyc2lvbiwKKyAgICApCisKK3RyeToKKyAgICBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQg
SXRlcmF0b3IKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBJdGVyYXRvciAgIyBub3FhOiBGNDAxCisKK3RyeToKKyAgICBmcm9tIGJ1aWx0aW5zIGltcG9y
dCBzdHIgYXMgdGV4dAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gX19idWlsdGluX18g
aW1wb3J0IHVuaWNvZGUgYXMgdGV4dAorCisKK2NsYXNzIEFQSVRlc3RzKAorICAgICAgICBmaXh0
dXJlcy5FZ2dJbmZvUGtnLAorICAgICAgICBmaXh0dXJlcy5EaXN0SW5mb1BrZywKKyAgICAgICAg
Zml4dHVyZXMuRGlzdEluZm9Qa2dXaXRoRG90LAorICAgICAgICBmaXh0dXJlcy5FZ2dJbmZvRmls
ZSwKKyAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgdmVyc2lvbl9wYXR0ZXJuID0g
cidcZCtcLlxkKyhcLlxkKT8nCisKKyAgICBkZWYgdGVzdF9yZXRyaWV2ZXNfdmVyc2lvbl9vZl9z
ZWxmKHNlbGYpOgorICAgICAgICBwa2dfdmVyc2lvbiA9IHZlcnNpb24oJ2VnZ2luZm8tcGtnJykK
KyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGtnX3ZlcnNpb24sIHRleHQpCisgICAgICAgIGFz
c2VydCByZS5tYXRjaChzZWxmLnZlcnNpb25fcGF0dGVybiwgcGtnX3ZlcnNpb24pCisKKyAgICBk
ZWYgdGVzdF9yZXRyaWV2ZXNfdmVyc2lvbl9vZl9kaXN0aW5mb19wa2coc2VsZik6CisgICAgICAg
IHBrZ192ZXJzaW9uID0gdmVyc2lvbignZGlzdGluZm8tcGtnJykKKyAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UocGtnX3ZlcnNpb24sIHRleHQpCisgICAgICAgIGFzc2VydCByZS5tYXRjaChzZWxm
LnZlcnNpb25fcGF0dGVybiwgcGtnX3ZlcnNpb24pCisKKyAgICBkZWYgdGVzdF9mb3JfbmFtZV9k
b2VzX25vdF9leGlzdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQYWNr
YWdlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBkaXN0cmlidXRpb24oJ2RvZXMtbm90LWV4
aXN0JykKKworICAgIGRlZiB0ZXN0X25hbWVfbm9ybWFsaXphdGlvbihzZWxmKToKKyAgICAgICAg
bmFtZXMgPSAncGtnLmRvdCcsICdwa2dfZG90JywgJ3BrZy1kb3QnLCAncGtnLi5kb3QnLCAnUGtn
LkRvdCcKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYu
c3ViVGVzdChuYW1lKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZGlzdHJpYnV0aW9uKG5hbWUp
Lm1ldGFkYXRhWydOYW1lJ10gPT0gJ3BrZy5kb3QnCisKKyAgICBkZWYgdGVzdF9mb3JfdG9wX2xl
dmVsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZGlzdHJp
YnV0aW9uKCdlZ2dpbmZvLXBrZycpLnJlYWRfdGV4dCgndG9wX2xldmVsLnR4dCcpLnN0cmlwKCks
CisgICAgICAgICAgICAnbW9kJykKKworICAgIGRlZiB0ZXN0X3JlYWRfdGV4dChzZWxmKToKKyAg
ICAgICAgdG9wX2xldmVsID0gWworICAgICAgICAgICAgcGF0aCBmb3IgcGF0aCBpbiBmaWxlcygn
ZWdnaW5mby1wa2cnKQorICAgICAgICAgICAgaWYgcGF0aC5uYW1lID09ICd0b3BfbGV2ZWwudHh0
JworICAgICAgICAgICAgXVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvcF9sZXZlbC5y
ZWFkX3RleHQoKSwgJ21vZFxuJykKKworICAgIGRlZiB0ZXN0X2VudHJ5X3BvaW50cyhzZWxmKToK
KyAgICAgICAgZW50cmllcyA9IGRpY3QoZW50cnlfcG9pbnRzKClbJ2VudHJpZXMnXSkKKyAgICAg
ICAgZXAgPSBlbnRyaWVzWydtYWluJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcC52YWx1
ZSwgJ21vZDptYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcC5leHRyYXMsIFtdKQor
CisgICAgZGVmIHRlc3RfbWV0YWRhdGFfZm9yX3RoaXNfcGFja2FnZShzZWxmKToKKyAgICAgICAg
bWQgPSBtZXRhZGF0YSgnZWdnaW5mby1wa2cnKQorICAgICAgICBhc3NlcnQgbWRbJ2F1dGhvcidd
ID09ICdTdGV2ZW4gTWEnCisgICAgICAgIGFzc2VydCBtZFsnTElDRU5TRSddID09ICdVbmtub3du
JworICAgICAgICBhc3NlcnQgbWRbJ05hbWUnXSA9PSAnZWdnaW5mby1wa2cnCisgICAgICAgIGNs
YXNzaWZpZXJzID0gbWQuZ2V0X2FsbCgnQ2xhc3NpZmllcicpCisgICAgICAgIGFzc2VydCAnVG9w
aWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzJyBpbiBjbGFzc2lmaWVycwor
CisgICAgZGVmIHRlc3RfaW1wb3J0bGliX21ldGFkYXRhX3ZlcnNpb24oc2VsZik6CisgICAgICAg
IHJlc29sdmVkID0gdmVyc2lvbignaW1wb3J0bGliLW1ldGFkYXRhJykKKyAgICAgICAgYXNzZXJ0
IHJlLm1hdGNoKHNlbGYudmVyc2lvbl9wYXR0ZXJuLCByZXNvbHZlZCkKKworICAgIEBzdGF0aWNt
ZXRob2QKKyAgICBkZWYgX3Rlc3RfZmlsZXMoZmlsZXMpOgorICAgICAgICByb290ID0gZmlsZXNb
MF0ucm9vdAorICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgIGFzc2VydCBm
aWxlLnJvb3QgPT0gcm9vdAorICAgICAgICAgICAgYXNzZXJ0IG5vdCBmaWxlLmhhc2ggb3IgZmls
ZS5oYXNoLnZhbHVlCisgICAgICAgICAgICBhc3NlcnQgbm90IGZpbGUuaGFzaCBvciBmaWxlLmhh
c2gubW9kZSA9PSAnc2hhMjU2JworICAgICAgICAgICAgYXNzZXJ0IG5vdCBmaWxlLnNpemUgb3Ig
ZmlsZS5zaXplID49IDAKKyAgICAgICAgICAgIGFzc2VydCBmaWxlLmxvY2F0ZSgpLmV4aXN0cygp
CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWxlLnJlYWRfYmluYXJ5KCksIGJ5dGVz
KQorICAgICAgICAgICAgaWYgZmlsZS5uYW1lLmVuZHN3aXRoKCcucHknKToKKyAgICAgICAgICAg
ICAgICBmaWxlLnJlYWRfdGV4dCgpCisKKyAgICBkZWYgdGVzdF9maWxlX2hhc2hfcmVwcihzZWxm
KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXNzZXJ0UmVnZXggPSBzZWxmLmFzc2VydFJl
Z2V4CisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgUHl0aG9u
IDIKKyAgICAgICAgICAgIGFzc2VydFJlZ2V4ID0gc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzCisK
KyAgICAgICAgdXRpbCA9IFsKKyAgICAgICAgICAgIHAgZm9yIHAgaW4gZmlsZXMoJ2Rpc3RpbmZv
LXBrZycpCisgICAgICAgICAgICBpZiBwLm5hbWUgPT0gJ21vZC5weScKKyAgICAgICAgICAgIF1b
MF0KKyAgICAgICAgYXNzZXJ0UmVnZXgoCisgICAgICAgICAgICByZXByKHV0aWwuaGFzaCksCisg
ICAgICAgICAgICAnPEZpbGVIYXNoIG1vZGU6IHNoYTI1NiB2YWx1ZTogLio+JykKKworICAgIGRl
ZiB0ZXN0X2ZpbGVzX2Rpc3RfaW5mbyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9maWxlcyhm
aWxlcygnZGlzdGluZm8tcGtnJykpCisKKyAgICBkZWYgdGVzdF9maWxlc19lZ2dfaW5mbyhzZWxm
KToKKyAgICAgICAgc2VsZi5fdGVzdF9maWxlcyhmaWxlcygnZWdnaW5mby1wa2cnKSkKKworICAg
IGRlZiB0ZXN0X3ZlcnNpb25fZWdnX2luZm9fZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2ZXJzaW9uKCdlZ2dpbmZvLWZpbGUnKSwgJzAuMScpCisKKyAgICBkZWYgdGVzdF9y
ZXF1aXJlc19lZ2dfaW5mb19maWxlKHNlbGYpOgorICAgICAgICByZXF1aXJlbWVudHMgPSByZXF1
aXJlcygnZWdnaW5mby1maWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVxdWlyZW1l
bnRzKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZXNfZWdnX2luZm8oc2VsZik6CisgICAgICAgIGRl
cHMgPSByZXF1aXJlcygnZWdnaW5mby1wa2cnKQorICAgICAgICBhc3NlcnQgbGVuKGRlcHMpID09
IDIKKyAgICAgICAgYXNzZXJ0IGFueSgKKyAgICAgICAgICAgIGRlcCA9PSAnd2hlZWwgPj0gMS4w
OyBweXRob25fdmVyc2lvbiA+PSAiMi43IicKKyAgICAgICAgICAgIGZvciBkZXAgaW4gZGVwcwor
ICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZXNfZGlzdF9pbmZvKHNlbGYpOgor
ICAgICAgICBkZXBzID0gcmVxdWlyZXMoJ2Rpc3RpbmZvLXBrZycpCisgICAgICAgIGFzc2VydCBs
ZW4oZGVwcykgPT0gMgorICAgICAgICBhc3NlcnQgYWxsKGRlcHMpCisgICAgICAgIGFzc2VydCAn
d2hlZWwgPj0gMS4wJyBpbiBkZXBzCisgICAgICAgIGFzc2VydCAicHl0ZXN0OyBleHRyYSA9PSAn
dGVzdCciIGluIGRlcHMKKworICAgIGRlZiB0ZXN0X21vcmVfY29tcGxleF9kZXBzX3JlcXVpcmVz
X3RleHQoc2VsZik6CisgICAgICAgIHJlcXVpcmVzID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAg
ICAgICAgICAgZGVwMQorICAgICAgICAgICAgZGVwMgorCisgICAgICAgICAgICBbOnB5dGhvbl92
ZXJzaW9uIDwgIjMiXQorICAgICAgICAgICAgZGVwMworCisgICAgICAgICAgICBbZXh0cmExXQor
ICAgICAgICAgICAgZGVwNAorCisgICAgICAgICAgICBbZXh0cmEyOnB5dGhvbl92ZXJzaW9uIDwg
IjMiXQorICAgICAgICAgICAgZGVwNQorICAgICAgICAgICAgIiIiKQorICAgICAgICBkZXBzID0g
c29ydGVkKERpc3RyaWJ1dGlvbi5fZGVwc19mcm9tX3JlcXVpcmVzX3RleHQocmVxdWlyZXMpKQor
ICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdkZXAxJywKKyAgICAgICAgICAgICdk
ZXAyJywKKyAgICAgICAgICAgICdkZXAzOyBweXRob25fdmVyc2lvbiA8ICIzIicsCisgICAgICAg
ICAgICAnZGVwNDsgZXh0cmEgPT0gImV4dHJhMSInLAorICAgICAgICAgICAgJ2RlcDU7IChweXRo
b25fdmVyc2lvbiA8ICIzIikgYW5kIGV4dHJhID09ICJleHRyYTIiJywKKyAgICAgICAgICAgIF0K
KyAgICAgICAgIyBJdCdzIGltcG9ydGFudCB0aGF0IHRoZSBlbnZpcm9ubWVudCBtYXJrZXIgZXhw
cmVzc2lvbiBiZQorICAgICAgICAjIHdyYXBwZWQgaW4gcGFyZW50aGVzZXMgdG8gYXZvaWQgdGhl
IGZvbGxvd2luZyAnYW5kJyBiaW5kaW5nIG1vcmUKKyAgICAgICAgIyB0aWdodGx5IHRoYW4gc29t
ZSBvdGhlciBwYXJ0IG9mIHRoZSBlbnZpcm9ubWVudCBleHByZXNzaW9uLgorCisgICAgICAgIGFz
c2VydCBkZXBzID09IGV4cGVjdGVkCisKKworY2xhc3MgTGVnYWN5RG90cyhmaXh0dXJlcy5EaXN0
SW5mb1BrZ1dpdGhEb3RMZWdhY3ksIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9u
YW1lX25vcm1hbGl6YXRpb24oc2VsZik6CisgICAgICAgIG5hbWVzID0gJ3BrZy5kb3QnLCAncGtn
X2RvdCcsICdwa2ctZG90JywgJ3BrZy4uZG90JywgJ1BrZy5Eb3QnCisgICAgICAgIGZvciBuYW1l
IGluIG5hbWVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFtZSk6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGRpc3RyaWJ1dGlvbihuYW1lKS5tZXRhZGF0YVsnTmFtZSddID09ICdw
a2cuZG90JworCisKK2NsYXNzIE9mZlN5c1BhdGhUZXN0cyhmaXh0dXJlcy5EaXN0SW5mb1BrZ09m
ZlBhdGgsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maW5kX2Rpc3RyaWJ1dGlv
bnNfc3BlY2lmaWVkX3BhdGgoc2VsZik6CisgICAgICAgIGRpc3RzID0gRGlzdHJpYnV0aW9uLmRp
c2NvdmVyKHBhdGg9W3N0cihzZWxmLnNpdGVfZGlyKV0pCisgICAgICAgIGFzc2VydCBhbnkoCisg
ICAgICAgICAgICBkaXN0Lm1ldGFkYXRhWydOYW1lJ10gPT0gJ2Rpc3RpbmZvLXBrZycKKyAgICAg
ICAgICAgIGZvciBkaXN0IGluIGRpc3RzCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9k
aXN0cmlidXRpb25fYXRfcGF0aGxpYihzZWxmKToKKyAgICAgICAgIiIiRGVtb25zdHJhdGUgaG93
IHRvIGxvYWQgbWV0YWRhdGEgZGlyZWN0IGZyb20gYSBkaXJlY3RvcnkuCisgICAgICAgICIiIgor
ICAgICAgICBkaXN0X2luZm9fcGF0aCA9IHNlbGYuc2l0ZV9kaXIgLyAnZGlzdGluZm9fcGtnLTEu
MC4wLmRpc3QtaW5mbycKKyAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbi5hdChkaXN0X2luZm9f
cGF0aCkKKyAgICAgICAgYXNzZXJ0IGRpc3QudmVyc2lvbiA9PSAnMS4wLjAnCisKKyAgICBkZWYg
dGVzdF9kaXN0cmlidXRpb25fYXRfc3RyKHNlbGYpOgorICAgICAgICBkaXN0X2luZm9fcGF0aCA9
IHNlbGYuc2l0ZV9kaXIgLyAnZGlzdGluZm9fcGtnLTEuMC4wLmRpc3QtaW5mbycKKyAgICAgICAg
ZGlzdCA9IERpc3RyaWJ1dGlvbi5hdChzdHIoZGlzdF9pbmZvX3BhdGgpKQorICAgICAgICBhc3Nl
cnQgZGlzdC52ZXJzaW9uID09ICcxLjAuMCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMzc3NTc0YzQ0OGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weQpAQCAtMCwwICsxLDU0IEBACisj
IGNvZGluZzogdXRmLTgKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxz
CisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHBhY2thZ2luZy5yZXF1aXJlbWVudHMKK2ltcG9y
dCBwYWNrYWdpbmcudmVyc2lvbgorCitmcm9tIC4gaW1wb3J0IGZpeHR1cmVzCitmcm9tIGltcG9y
dGxpYl9tZXRhZGF0YSBpbXBvcnQgKAorICAgIERpc3RyaWJ1dGlvbiwKKyAgICBfY29tcGF0LAor
ICAgIHZlcnNpb24sCisgICAgKQorCisKK2NsYXNzIEludGVncmF0aW9uVGVzdHMoZml4dHVyZXMu
RGlzdEluZm9Qa2csIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3BhY2thZ2Vf
c3BlY19pbnN0YWxsZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJbGx1c3RyYXRlIHRo
ZSByZWNvbW1lbmRlZCBwcm9jZWR1cmUgdG8gZGV0ZXJtaW5lIGlmCisgICAgICAgIGEgc3BlY2lm
aWVkIHZlcnNpb24gb2YgYSBwYWNrYWdlIGlzIGluc3RhbGxlZC4KKyAgICAgICAgIiIiCisgICAg
ICAgIGRlZiBpc19pbnN0YWxsZWQocGFja2FnZV9zcGVjKToKKyAgICAgICAgICAgIHJlcSA9IHBh
Y2thZ2luZy5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQocGFja2FnZV9zcGVjKQorICAgICAgICAg
ICAgcmV0dXJuIHZlcnNpb24ocmVxLm5hbWUpIGluIHJlcS5zcGVjaWZpZXIKKworICAgICAgICBh
c3NlcnQgaXNfaW5zdGFsbGVkKCdkaXN0aW5mby1wa2c9PTEuMCcpCisgICAgICAgIGFzc2VydCBp
c19pbnN0YWxsZWQoJ2Rpc3RpbmZvLXBrZz49MS4wLDwyLjAnKQorICAgICAgICBhc3NlcnQgbm90
IGlzX2luc3RhbGxlZCgnZGlzdGluZm8tcGtnPDEuMCcpCisKKworY2xhc3MgRmluZGVyVGVzdHMo
Zml4dHVyZXMuRml4dHVyZXMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Zp
bmRlcl93aXRob3V0X21vZHVsZShzZWxmKToKKyAgICAgICAgY2xhc3MgTW9kdWxlRnJlZUZpbmRl
cihmaXh0dXJlcy5OdWxsRmluZGVyKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQSBm
aW5kZXIgd2l0aG91dCBhbiBfX21vZHVsZV9fIGF0dHJpYnV0ZQorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAg
ICAgICBpZiBuYW1lID09ICdfX21vZHVsZV9fJzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
QXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2dl
dGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICAgICAgc2VsZi5maXh0dXJlcy5lbnRlcl9jb250ZXh0
KAorICAgICAgICAgICAgZml4dHVyZXMuaW5zdGFsbF9maW5kZXIoTW9kdWxlRnJlZUZpbmRlcigp
KSkKKyAgICAgICAgX2NvbXBhdC5kaXNhYmxlX3N0ZGxpYl9maW5kZXIoKQorCisKK2NsYXNzIExv
Y2FsUHJvamVjdFRlc3RzKGZpeHR1cmVzLkxvY2FsUGFja2FnZSwgdW5pdHRlc3QuVGVzdENhc2Up
OgorICAgIGRlZiB0ZXN0X2ZpbmRfbG9jYWwoc2VsZik6CisgICAgICAgIGRpc3QgPSBEaXN0cmli
dXRpb24uX2xvY2FsKCkKKyAgICAgICAgYXNzZXJ0IGRpc3QubWV0YWRhdGFbJ05hbWUnXSA9PSAn
bG9jYWwtcGtnJworICAgICAgICBhc3NlcnQgZGlzdC52ZXJzaW9uID09ICcyLjAuMScKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3Rlc3RfbWFpbi5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3Rlc3RfbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjg0Nzc1MGJjMzAxNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3Rlc3RfbWFpbi5weQpAQCAtMCwwICsxLDI4NSBA
QAorIyBjb2Rpbmc6IHV0Zi04Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJh
bHMKKworaW1wb3J0IHJlCitpbXBvcnQganNvbgoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHRleHR3
cmFwCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbXBvcnRsaWJf
bWV0YWRhdGEKK2ltcG9ydCBweWZha2Vmcy5mYWtlX2ZpbGVzeXN0ZW1fdW5pdHRlc3QgYXMgZmZz
CisKK2Zyb20gLiBpbXBvcnQgZml4dHVyZXMKK2Zyb20gaW1wb3J0bGliX21ldGFkYXRhIGltcG9y
dCAoCisgICAgRGlzdHJpYnV0aW9uLCBFbnRyeVBvaW50LCBNZXRhZGF0YVBhdGhGaW5kZXIsCisg
ICAgUGFja2FnZU5vdEZvdW5kRXJyb3IsIGRpc3RyaWJ1dGlvbnMsCisgICAgZW50cnlfcG9pbnRz
LCBtZXRhZGF0YSwgdmVyc2lvbiwKKyAgICApCisKK3RyeToKKyAgICBmcm9tIGJ1aWx0aW5zIGlt
cG9ydCBzdHIgYXMgdGV4dAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gX19idWlsdGlu
X18gaW1wb3J0IHVuaWNvZGUgYXMgdGV4dAorCisKK2NsYXNzIEJhc2ljVGVzdHMoZml4dHVyZXMu
RGlzdEluZm9Qa2csIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB2ZXJzaW9uX3BhdHRlcm4gPSBy
J1xkK1wuXGQrKFwuXGQpPycKKworICAgIGRlZiB0ZXN0X3JldHJpZXZlc192ZXJzaW9uX29mX3Nl
bGYoc2VsZik6CisgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24uZnJvbV9uYW1lKCdkaXN0aW5m
by1wa2cnKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkaXN0LnZlcnNpb24sIHRleHQpCisg
ICAgICAgIGFzc2VydCByZS5tYXRjaChzZWxmLnZlcnNpb25fcGF0dGVybiwgZGlzdC52ZXJzaW9u
KQorCisgICAgZGVmIHRlc3RfZm9yX25hbWVfZG9lc19ub3RfZXhpc3Qoc2VsZik6CisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUGFja2FnZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAg
ICAgRGlzdHJpYnV0aW9uLmZyb21fbmFtZSgnZG9lcy1ub3QtZXhpc3QnKQorCisgICAgZGVmIHRl
c3RfcGFja2FnZV9ub3RfZm91bmRfbWVudGlvbnNfbWV0YWRhdGEoc2VsZik6CisgICAgICAgICIi
IgorICAgICAgICBXaGVuIGEgcGFja2FnZSBpcyBub3QgZm91bmQsIHRoYXQgY291bGQgaW5kaWNh
dGUgdGhhdCB0aGUKKyAgICAgICAgcGFja2dhZSBpcyBub3QgaW5zdGFsbGVkIG9yIHRoYXQgaXQg
aXMgaW5zdGFsbGVkIHdpdGhvdXQKKyAgICAgICAgbWV0YWRhdGEuIEVuc3VyZSB0aGUgZXhjZXB0
aW9uIG1lbnRpb25zIG1ldGFkYXRhIHRvIGhlbHAKKyAgICAgICAgZ3VpZGUgdXNlcnMgdG93YXJk
IHRoZSBjYXVzZS4gU2VlICMxMjQuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKFBhY2thZ2VOb3RGb3VuZEVycm9yKSBhcyBjdHg6CisgICAgICAgICAgICBEaXN0
cmlidXRpb24uZnJvbV9uYW1lKCdkb2VzLW5vdC1leGlzdCcpCisKKyAgICAgICAgYXNzZXJ0ICJt
ZXRhZGF0YSIgaW4gc3RyKGN0eC5leGNlcHRpb24pCisKKyAgICBkZWYgdGVzdF9uZXdfc3R5bGVf
Y2xhc3NlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKERpc3RyaWJ1dGlv
biwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKE1ldGFkYXRhUGF0aEZpbmRl
ciwgdHlwZSkKKworCitjbGFzcyBJbXBvcnRUZXN0cyhmaXh0dXJlcy5EaXN0SW5mb1BrZywgdW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ltcG9ydF9ub25leGlzdGVudF9tb2R1bGUo
c2VsZik6CisgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIE1ldGFkYXRhUGF0aEZpbmRlciBkb2Vz
IG5vdCBjcmFzaCBhbiBpbXBvcnQgb2YgYQorICAgICAgICAjIG5vbi1leGlzdGVudCBtb2R1bGUu
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAg
ICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2RvZXNfbm90X2V4aXN0JykKKworICAgIGRlZiB0
ZXN0X3Jlc29sdmUoc2VsZik6CisgICAgICAgIGVudHJpZXMgPSBkaWN0KGVudHJ5X3BvaW50cygp
WydlbnRyaWVzJ10pCisgICAgICAgIGVwID0gZW50cmllc1snbWFpbiddCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXAubG9hZCgpLl9fbmFtZV9fLCAibWFpbiIpCisKKyAgICBkZWYgdGVzdF9l
bnRyeXBvaW50X3dpdGhfY29sb25faW5fbmFtZShzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGRp
Y3QoZW50cnlfcG9pbnRzKClbJ2VudHJpZXMnXSkKKyAgICAgICAgZXAgPSBlbnRyaWVzWyduczpz
dWInXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVwLnZhbHVlLCAnbW9kOm1haW4nKQorCisg
ICAgZGVmIHRlc3RfcmVzb2x2ZV93aXRob3V0X2F0dHIoc2VsZik6CisgICAgICAgIGVwID0gRW50
cnlQb2ludCgKKyAgICAgICAgICAgIG5hbWU9J2VwJywKKyAgICAgICAgICAgIHZhbHVlPSdpbXBv
cnRsaWJfbWV0YWRhdGEnLAorICAgICAgICAgICAgZ3JvdXA9J2dycCcsCisgICAgICAgICAgICAp
CisgICAgICAgIGFzc2VydCBlcC5sb2FkKCkgaXMgaW1wb3J0bGliX21ldGFkYXRhCisKKworY2xh
c3MgTmFtZU5vcm1hbGl6YXRpb25UZXN0cygKKyAgICAgICAgZml4dHVyZXMuT25TeXNQYXRoLCBm
aXh0dXJlcy5TaXRlRGlyLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN0YXRpY21ldGhvZAor
ICAgIGRlZiBwa2dfd2l0aF9kYXNoZXMoc2l0ZV9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAg
Q3JlYXRlIG1pbmltYWwgbWV0YWRhdGEgZm9yIGEgcGFja2FnZSB3aXRoIGRhc2hlcworICAgICAg
ICBpbiB0aGUgbmFtZSAoYW5kIHRodXMgdW5kZXJzY29yZXMgaW4gdGhlIGZpbGVuYW1lKS4KKyAg
ICAgICAgIiIiCisgICAgICAgIG1ldGFkYXRhX2RpciA9IHNpdGVfZGlyIC8gJ215X3BrZy5kaXN0
LWluZm8nCisgICAgICAgIG1ldGFkYXRhX2Rpci5ta2RpcigpCisgICAgICAgIG1ldGFkYXRhID0g
bWV0YWRhdGFfZGlyIC8gJ01FVEFEQVRBJworICAgICAgICB3aXRoIG1ldGFkYXRhLm9wZW4oJ3cn
KSBhcyBzdHJtOgorICAgICAgICAgICAgc3RybS53cml0ZSgnVmVyc2lvbjogMS4wXG4nKQorICAg
ICAgICByZXR1cm4gJ215LXBrZycKKworICAgIGRlZiB0ZXN0X2Rhc2hlc19pbl9kaXN0X25hbWVf
Zm91bmRfYXNfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBGb3IgYSBw
YWNrYWdlIHdpdGggYSBkYXNoIGluIHRoZSBuYW1lLCB0aGUgZGlzdC1pbmZvIG1ldGFkYXRhCisg
ICAgICAgIHVzZXMgdW5kZXJzY29yZXMgaW4gdGhlIG5hbWUuIEVuc3VyZSB0aGUgbWV0YWRhdGEg
bG9hZHMuCisgICAgICAgICIiIgorICAgICAgICBwa2dfbmFtZSA9IHNlbGYucGtnX3dpdGhfZGFz
aGVzKHNlbGYuc2l0ZV9kaXIpCisgICAgICAgIGFzc2VydCB2ZXJzaW9uKHBrZ19uYW1lKSA9PSAn
MS4wJworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwa2dfd2l0aF9taXhlZF9jYXNlKHNp
dGVfZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBtaW5pbWFsIG1ldGFkYXRhIGZv
ciBhIHBhY2thZ2Ugd2l0aCBtaXhlZCBjYXNlCisgICAgICAgIGluIHRoZSBuYW1lLgorICAgICAg
ICAiIiIKKyAgICAgICAgbWV0YWRhdGFfZGlyID0gc2l0ZV9kaXIgLyAnQ2hlcnJ5UHkuZGlzdC1p
bmZvJworICAgICAgICBtZXRhZGF0YV9kaXIubWtkaXIoKQorICAgICAgICBtZXRhZGF0YSA9IG1l
dGFkYXRhX2RpciAvICdNRVRBREFUQScKKyAgICAgICAgd2l0aCBtZXRhZGF0YS5vcGVuKCd3Jykg
YXMgc3RybToKKyAgICAgICAgICAgIHN0cm0ud3JpdGUoJ1ZlcnNpb246IDEuMFxuJykKKyAgICAg
ICAgcmV0dXJuICdDaGVycnlQeScKKworICAgIGRlZiB0ZXN0X2Rpc3RfbmFtZV9mb3VuZF9hc19h
bnlfY2FzZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSB0aGUgbWV0YWRhdGEg
bG9hZHMgd2hlbiBxdWVyaWVkIHdpdGggYW55IGNhc2UuCisgICAgICAgICIiIgorICAgICAgICBw
a2dfbmFtZSA9IHNlbGYucGtnX3dpdGhfbWl4ZWRfY2FzZShzZWxmLnNpdGVfZGlyKQorICAgICAg
ICBhc3NlcnQgdmVyc2lvbihwa2dfbmFtZSkgPT0gJzEuMCcKKyAgICAgICAgYXNzZXJ0IHZlcnNp
b24ocGtnX25hbWUubG93ZXIoKSkgPT0gJzEuMCcKKyAgICAgICAgYXNzZXJ0IHZlcnNpb24ocGtn
X25hbWUudXBwZXIoKSkgPT0gJzEuMCcKKworCitjbGFzcyBOb25BU0NJSVRlc3RzKGZpeHR1cmVz
Lk9uU3lzUGF0aCwgZml4dHVyZXMuU2l0ZURpciwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBz
dGF0aWNtZXRob2QKKyAgICBkZWYgcGtnX3dpdGhfbm9uX2FzY2lpX2Rlc2NyaXB0aW9uKHNpdGVf
ZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBtaW5pbWFsIG1ldGFkYXRhIGZvciBh
IHBhY2thZ2Ugd2l0aCBub24tQVNDSUkgaW4KKyAgICAgICAgdGhlIGRlc2NyaXB0aW9uLgorICAg
ICAgICAiIiIKKyAgICAgICAgbWV0YWRhdGFfZGlyID0gc2l0ZV9kaXIgLyAncG9ydGVuZC5kaXN0
LWluZm8nCisgICAgICAgIG1ldGFkYXRhX2Rpci5ta2RpcigpCisgICAgICAgIG1ldGFkYXRhID0g
bWV0YWRhdGFfZGlyIC8gJ01FVEFEQVRBJworICAgICAgICB3aXRoIG1ldGFkYXRhLm9wZW4oJ3cn
LCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKCdEZXNjcmlw
dGlvbjogcMO0csuIdGVuZFxuJykKKyAgICAgICAgcmV0dXJuICdwb3J0ZW5kJworCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBwa2dfd2l0aF9ub25fYXNjaWlfZGVzY3JpcHRpb25fZWdnX2lu
Zm8oc2l0ZV9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIG1pbmltYWwgbWV0YWRh
dGEgZm9yIGFuIGVnZy1pbmZvIHBhY2thZ2Ugd2l0aAorICAgICAgICBub24tQVNDSUkgaW4gdGhl
IGRlc2NyaXB0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgbWV0YWRhdGFfZGlyID0gc2l0ZV9k
aXIgLyAncG9ydGVuZC5kaXN0LWluZm8nCisgICAgICAgIG1ldGFkYXRhX2Rpci5ta2RpcigpCisg
ICAgICAgIG1ldGFkYXRhID0gbWV0YWRhdGFfZGlyIC8gJ01FVEFEQVRBJworICAgICAgICB3aXRo
IG1ldGFkYXRhLm9wZW4oJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKKyAgICAgICAgICAg
IGZwLndyaXRlKHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBOYW1lOiBwb3J0
ZW5kCisKKyAgICAgICAgICAgICAgICBww7Ryy4h0ZW5kCisgICAgICAgICAgICAgICAgIiIiKS5s
c3RyaXAoKSkKKyAgICAgICAgcmV0dXJuICdwb3J0ZW5kJworCisgICAgZGVmIHRlc3RfbWV0YWRh
dGFfbG9hZHMoc2VsZik6CisgICAgICAgIHBrZ19uYW1lID0gc2VsZi5wa2dfd2l0aF9ub25fYXNj
aWlfZGVzY3JpcHRpb24oc2VsZi5zaXRlX2RpcikKKyAgICAgICAgbWV0YSA9IG1ldGFkYXRhKHBr
Z19uYW1lKQorICAgICAgICBhc3NlcnQgbWV0YVsnRGVzY3JpcHRpb24nXSA9PSAncMO0csuIdGVu
ZCcKKworICAgIGRlZiB0ZXN0X21ldGFkYXRhX2xvYWRzX2VnZ19pbmZvKHNlbGYpOgorICAgICAg
ICBwa2dfbmFtZSA9IHNlbGYucGtnX3dpdGhfbm9uX2FzY2lpX2Rlc2NyaXB0aW9uX2VnZ19pbmZv
KHNlbGYuc2l0ZV9kaXIpCisgICAgICAgIG1ldGEgPSBtZXRhZGF0YShwa2dfbmFtZSkKKyAgICAg
ICAgYXNzZXJ0IG1ldGEuZ2V0X3BheWxvYWQoKSA9PSAncMO0csuIdGVuZFxuJworCisKK2NsYXNz
IERpc2NvdmVyeVRlc3RzKGZpeHR1cmVzLkVnZ0luZm9Qa2csCisgICAgICAgICAgICAgICAgICAg
ICBmaXh0dXJlcy5EaXN0SW5mb1BrZywKKyAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRl
c3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3BhY2thZ2VfZGlzY292ZXJ5KHNlbGYpOgorICAgICAg
ICBkaXN0cyA9IGxpc3QoZGlzdHJpYnV0aW9ucygpKQorICAgICAgICBhc3NlcnQgYWxsKAorICAg
ICAgICAgICAgaXNpbnN0YW5jZShkaXN0LCBEaXN0cmlidXRpb24pCisgICAgICAgICAgICBmb3Ig
ZGlzdCBpbiBkaXN0cworICAgICAgICAgICAgKQorICAgICAgICBhc3NlcnQgYW55KAorICAgICAg
ICAgICAgZGlzdC5tZXRhZGF0YVsnTmFtZSddID09ICdlZ2dpbmZvLXBrZycKKyAgICAgICAgICAg
IGZvciBkaXN0IGluIGRpc3RzCisgICAgICAgICAgICApCisgICAgICAgIGFzc2VydCBhbnkoCisg
ICAgICAgICAgICBkaXN0Lm1ldGFkYXRhWydOYW1lJ10gPT0gJ2Rpc3RpbmZvLXBrZycKKyAgICAg
ICAgICAgIGZvciBkaXN0IGluIGRpc3RzCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9p
bnZhbGlkX3VzYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IpOgorICAgICAgICAgICAgbGlzdChkaXN0cmlidXRpb25zKGNvbnRleHQ9J3NvbWV0aGlu
ZycsIG5hbWU9J2Vsc2UnKSkKKworCitjbGFzcyBEaXJlY3RvcnlUZXN0KGZpeHR1cmVzLk9uU3lz
UGF0aCwgZml4dHVyZXMuU2l0ZURpciwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0
X2VnZ19pbmZvKHNlbGYpOgorICAgICAgICAjIG1ha2UgYW4gYEVHRy1JTkZPYCBkaXJlY3Rvcnkg
dGhhdCdzIHVucmVsYXRlZAorICAgICAgICBzZWxmLnNpdGVfZGlyLmpvaW5wYXRoKCdFR0ctSU5G
TycpLm1rZGlyKCkKKyAgICAgICAgIyB1c2VkIHRvIGNyYXNoIHdpdGggYElzQURpcmVjdG9yeUVy
cm9yYAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBhY2thZ2VOb3RGb3VuZEVycm9y
KToKKyAgICAgICAgICAgIHZlcnNpb24oJ3Vua25vd24tcGFja2FnZScpCisKKyAgICBkZWYgdGVz
dF9lZ2coc2VsZik6CisgICAgICAgIGVnZyA9IHNlbGYuc2l0ZV9kaXIuam9pbnBhdGgoJ2Zvby0z
LjYuZWdnJykKKyAgICAgICAgZWdnLm1rZGlyKCkKKyAgICAgICAgd2l0aCBzZWxmLmFkZF9zeXNf
cGF0aChlZ2cpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQYWNrYWdlTm90
Rm91bmRFcnJvcik6CisgICAgICAgICAgICAgICAgdmVyc2lvbignZm9vJykKKworCitjbGFzcyBN
aXNzaW5nU3lzUGF0aChmaXh0dXJlcy5PblN5c1BhdGgsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICBzaXRlX2RpciA9ICcvZG9lcy1ub3QtZXhpc3QnCisKKyAgICBkZWYgdGVzdF9kaXNjb3Zlcnko
c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBEaXNjb3ZlcmluZyBkaXN0cmlidXRpb25zIHNo
b3VsZCBzdWNjZWVkIGV2ZW4gaWYKKyAgICAgICAgdGhlcmUgaXMgYW4gaW52YWxpZCBwYXRoIG9u
IHN5cy5wYXRoLgorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0bGliX21ldGFkYXRhLmRpc3Ry
aWJ1dGlvbnMoKQorCisKK2NsYXNzIEluYWNjZXNzaWJsZVN5c1BhdGgoZml4dHVyZXMuT25TeXNQ
YXRoLCBmZnMuVGVzdENhc2UpOgorICAgIHNpdGVfZGlyID0gJy9hY2Nlc3MtZGVuaWVkJworCisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihJbmFjY2Vzc2libGVTeXNQYXRoLCBz
ZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2V0VXBQeWZha2VmcygpCisgICAgICAgIHNlbGYu
ZnMuY3JlYXRlX2RpcihzZWxmLnNpdGVfZGlyLCBwZXJtX2JpdHM9MDAwKQorCisgICAgZGVmIHRl
c3RfZGlzY292ZXJ5KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRGlzY292ZXJpbmcgZGlz
dHJpYnV0aW9ucyBzaG91bGQgc3VjY2VlZCBldmVuIGlmCisgICAgICAgIHRoZXJlIGlzIGFuIGlu
dmFsaWQgcGF0aCBvbiBzeXMucGF0aC4KKyAgICAgICAgIiIiCisgICAgICAgIGxpc3QoaW1wb3J0
bGliX21ldGFkYXRhLmRpc3RyaWJ1dGlvbnMoKSkKKworCitjbGFzcyBUZXN0RW50cnlQb2ludHMo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAg
ICAgIHN1cGVyKFRlc3RFbnRyeVBvaW50cywgc2VsZikuX19pbml0X18oKmFyZ3MpCisgICAgICAg
IHNlbGYuZXAgPSBpbXBvcnRsaWJfbWV0YWRhdGEuRW50cnlQb2ludCgnbmFtZScsICd2YWx1ZScs
ICdncm91cCcpCisKKyAgICBkZWYgdGVzdF9lbnRyeV9wb2ludF9waWNrbGVhYmxlKHNlbGYpOgor
ICAgICAgICByZXZpdmVkID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzZWxmLmVwKSkKKyAg
ICAgICAgYXNzZXJ0IHJldml2ZWQgPT0gc2VsZi5lcAorCisgICAgZGVmIHRlc3RfaW1tdXRhYmxl
KHNlbGYpOgorICAgICAgICAiIiJFbnRyeVBvaW50cyBzaG91bGQgYmUgaW1tdXRhYmxlIiIiCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAg
ICAgc2VsZi5lcC5uYW1lID0gJ2JhZGFjdG9yJworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToK
KyAgICAgICAgYXNzZXJ0ICdFbnRyeVBvaW50JyBpbiByZXByKHNlbGYuZXApCisgICAgICAgIGFz
c2VydCAnbmFtZT0nIGluIHJlcHIoc2VsZi5lcCkKKyAgICAgICAgYXNzZXJ0ICInbmFtZSciIGlu
IHJlcHIoc2VsZi5lcCkKKworICAgIGRlZiB0ZXN0X2hhc2hhYmxlKHNlbGYpOgorICAgICAgICAi
IiJFbnRyeVBvaW50cyBzaG91bGQgYmUgaGFzaGFibGUiIiIKKyAgICAgICAgaGFzaChzZWxmLmVw
KQorCisgICAgZGVmIHRlc3RfanNvbl9kdW1wKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg
anNvbiBzaG91bGQgbm90IGV4cGVjdCB0byBiZSBhYmxlIHRvIGR1bXAgYW4gRW50cnlQb2ludAor
ICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pOgor
ICAgICAgICAgICAganNvbi5kdW1wcyhzZWxmLmVwKQorCisgICAgZGVmIHRlc3RfbW9kdWxlKHNl
bGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5lcC5tb2R1bGUgPT0gJ3ZhbHVlJworCisgICAgZGVm
IHRlc3RfYXR0cihzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuZXAuYXR0ciBpcyBOb25lCisK
KworY2xhc3MgRmlsZVN5c3RlbSgKKyAgICAgICAgZml4dHVyZXMuT25TeXNQYXRoLCBmaXh0dXJl
cy5TaXRlRGlyLCBmaXh0dXJlcy5GaWxlQnVpbGRlciwKKyAgICAgICAgdW5pdHRlc3QuVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X3VuaWNvZGVfZGlyX29uX3N5c19wYXRoKHNlbGYpOgorICAgICAg
ICAiIiIKKyAgICAgICAgRW5zdXJlIGEgVW5pY29kZSBzdWJkaXJlY3Rvcnkgb2YgYSBkaXJlY3Rv
cnkgb24gc3lzLnBhdGgKKyAgICAgICAgZG9lcyBub3QgY3Jhc2guCisgICAgICAgICIiIgorICAg
ICAgICBmaXh0dXJlcy5idWlsZF9maWxlcygKKyAgICAgICAgICAgIHtzZWxmLnVuaWNvZGVfZmls
ZW5hbWUoKToge319LAorICAgICAgICAgICAgcHJlZml4PXNlbGYuc2l0ZV9kaXIsCisgICAgICAg
ICAgICApCisgICAgICAgIGxpc3QoZGlzdHJpYnV0aW9ucygpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvdGVzdF96aXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRh
ZGF0YS90ZXN0cy90ZXN0X3ppcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjVjZWJjZDAyZjdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL3Rlc3RzL3Rlc3RfemlwLnB5CkBAIC0wLDAgKzEsODAgQEAKK2ltcG9ydCBzeXMKK2lt
cG9ydCB1bml0dGVzdAorCitmcm9tIGltcG9ydGxpYl9tZXRhZGF0YSBpbXBvcnQgKAorICAgIGRp
c3RyaWJ1dGlvbiwgZW50cnlfcG9pbnRzLCBmaWxlcywgUGFja2FnZU5vdEZvdW5kRXJyb3IsCisg
ICAgdmVyc2lvbiwgZGlzdHJpYnV0aW9ucywKKyAgICApCisKK3RyeToKKyAgICBmcm9tIGltcG9y
dGxpYiBpbXBvcnQgcmVzb3VyY2VzCisgICAgZ2V0YXR0cihyZXNvdXJjZXMsICdmaWxlcycpCisg
ICAgZ2V0YXR0cihyZXNvdXJjZXMsICdhc19maWxlJykKK2V4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0
dHJpYnV0ZUVycm9yKToKKyAgICBpbXBvcnQgaW1wb3J0bGliX3Jlc291cmNlcyBhcyByZXNvdXJj
ZXMKKwordHJ5OgorICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCitleGNlcHQg
SW1wb3J0RXJyb3I6CisgICAgZnJvbSBjb250ZXh0bGliMiBpbXBvcnQgRXhpdFN0YWNrCisKKwor
Y2xhc3MgVGVzdFppcCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9vdCA9ICd0ZXN0cy5kYXRh
JworCisgICAgZGVmIF9maXh0dXJlX29uX3BhdGgoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICBw
a2dfZmlsZSA9IHJlc291cmNlcy5maWxlcyhzZWxmLnJvb3QpLmpvaW5wYXRoKGZpbGVuYW1lKQor
ICAgICAgICBmaWxlID0gc2VsZi5yZXNvdXJjZXMuZW50ZXJfY29udGV4dChyZXNvdXJjZXMuYXNf
ZmlsZShwa2dfZmlsZSkpCisgICAgICAgIGFzc2VydCBmaWxlLm5hbWUuc3RhcnRzd2l0aCgnZXhh
bXBsZS0nKSwgZmlsZS5uYW1lCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBzdHIoZmlsZSkp
CisgICAgICAgIHNlbGYucmVzb3VyY2VzLmNhbGxiYWNrKHN5cy5wYXRoLnBvcCwgMCkKKworICAg
IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBGaW5kIHRoZSBwYXRoIHRvIHRoZSBleGFtcGxl
LSoud2hsIHNvIHdlIGNhbiBhZGQgaXQgdG8gdGhlIGZyb250IG9mCisgICAgICAgICMgc3lzLnBh
dGgsIHdoZXJlIHdlJ2xsIHRoZW4gdHJ5IHRvIGZpbmQgdGhlIG1ldGFkYXRhIHRoZXJlb2YuCisg
ICAgICAgIHNlbGYucmVzb3VyY2VzID0gRXhpdFN0YWNrKCkKKyAgICAgICAgc2VsZi5hZGRDbGVh
bnVwKHNlbGYucmVzb3VyY2VzLmNsb3NlKQorICAgICAgICBzZWxmLl9maXh0dXJlX29uX3BhdGgo
J2V4YW1wbGUtMjEuMTItcHkzLW5vbmUtYW55LndobCcpCisKKyAgICBkZWYgdGVzdF96aXBfdmVy
c2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uKCdleGFtcGxlJyks
ICcyMS4xMicpCisKKyAgICBkZWYgdGVzdF96aXBfdmVyc2lvbl9kb2VzX25vdF9tYXRjaChzZWxm
KToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQYWNrYWdlTm90Rm91bmRFcnJvcik6
CisgICAgICAgICAgICB2ZXJzaW9uKCdkZWZpbml0ZWx5LW5vdC1pbnN0YWxsZWQnKQorCisgICAg
ZGVmIHRlc3RfemlwX2VudHJ5X3BvaW50cyhzZWxmKToKKyAgICAgICAgc2NyaXB0cyA9IGRpY3Qo
ZW50cnlfcG9pbnRzKClbJ2NvbnNvbGVfc2NyaXB0cyddKQorICAgICAgICBlbnRyeV9wb2ludCA9
IHNjcmlwdHNbJ2V4YW1wbGUnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5X3BvaW50
LnZhbHVlLCAnZXhhbXBsZTptYWluJykKKyAgICAgICAgZW50cnlfcG9pbnQgPSBzY3JpcHRzWydF
eGFtcGxlJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeV9wb2ludC52YWx1ZSwgJ2V4
YW1wbGU6bWFpbicpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX21ldGFkYXRhKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydElzTm9uZShkaXN0cmlidXRpb24oJ2V4YW1wbGUnKS5yZWFkX3RleHQo
J2RvZXMgbm90IGV4aXN0JykpCisKKyAgICBkZWYgdGVzdF9jYXNlX2luc2Vuc2l0aXZlKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb24oJ0V4YW1wbGUnKSwgJzIxLjEyJykK
KworICAgIGRlZiB0ZXN0X2ZpbGVzKHNlbGYpOgorICAgICAgICBmb3IgZmlsZSBpbiBmaWxlcygn
ZXhhbXBsZScpOgorICAgICAgICAgICAgcGF0aCA9IHN0cihmaWxlLmRpc3QubG9jYXRlX2ZpbGUo
ZmlsZSkpCisgICAgICAgICAgICBhc3NlcnQgJy53aGwvJyBpbiBwYXRoLCBwYXRoCisKKyAgICBk
ZWYgdGVzdF9vbmVfZGlzdHJpYnV0aW9uKHNlbGYpOgorICAgICAgICBkaXN0cyA9IGxpc3QoZGlz
dHJpYnV0aW9ucyhwYXRoPXN5cy5wYXRoWzoxXSkpCisgICAgICAgIGFzc2VydCBsZW4oZGlzdHMp
ID09IDEKKworCitjbGFzcyBUZXN0RWdnKFRlc3RaaXApOgorICAgIGRlZiBzZXRVcChzZWxmKToK
KyAgICAgICAgIyBGaW5kIHRoZSBwYXRoIHRvIHRoZSBleGFtcGxlLSouZWdnIHNvIHdlIGNhbiBh
ZGQgaXQgdG8gdGhlIGZyb250IG9mCisgICAgICAgICMgc3lzLnBhdGgsIHdoZXJlIHdlJ2xsIHRo
ZW4gdHJ5IHRvIGZpbmQgdGhlIG1ldGFkYXRhIHRoZXJlb2YuCisgICAgICAgIHNlbGYucmVzb3Vy
Y2VzID0gRXhpdFN0YWNrKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucmVzb3VyY2Vz
LmNsb3NlKQorICAgICAgICBzZWxmLl9maXh0dXJlX29uX3BhdGgoJ2V4YW1wbGUtMjEuMTItcHkz
LjYuZWdnJykKKworICAgIGRlZiB0ZXN0X2ZpbGVzKHNlbGYpOgorICAgICAgICBmb3IgZmlsZSBp
biBmaWxlcygnZXhhbXBsZScpOgorICAgICAgICAgICAgcGF0aCA9IHN0cihmaWxlLmRpc3QubG9j
YXRlX2ZpbGUoZmlsZSkpCisgICAgICAgICAgICBhc3NlcnQgJy5lZ2cvJyBpbiBwYXRoLCBwYXRo
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90b3guaW5pIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvdG94LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjFmMGU5NzU3ODM3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL3RveC5pbmkKQEAgLTAsMCArMSw5NyBAQAorW3RveF0KK2Vudmxpc3QgPSB7cHkyNyxw
eTM1LHB5MzYscHkzNyxweTM4fXssLWNvdiwtZGlmZmNvdn0scWEsZG9jcyxwZXJmCitza2lwX21p
c3NpbmdfaW50ZXJwcmV0ZXJzID0gVHJ1ZQorbWludmVyc2lvbiA9IDMuMgorIyBFbnN1cmUgdGhh
dCBhIGxhdGUgdmVyc2lvbiBvZiBwaXAgaXMgdXNlZCBldmVuIG9uIHRveC12ZW52LgorcmVxdWly
ZXMgPQorICAgIHRveC1waXAtdmVyc2lvbj49MC4wLjYKKworW3Rlc3RlbnZdCitwaXBfdmVyc2lv
biA9IHBpcAorY29tbWFuZHMgPQorICAgICFjb3YsIWRpZmZjb3Y6IHB5dGhvbiAtbSB1bml0dGVz
dCBkaXNjb3ZlciB7cG9zYXJnc30KKyAgICBjb3YsZGlmZmNvdjogcHl0aG9uIC1tIGNvdmVyYWdl
IHJ1biB7W2NvdmVyYWdlXXJjfSAtbSB1bml0dGVzdCBkaXNjb3ZlciB7cG9zYXJnc30KKyAgICBj
b3YsZGlmZmNvdjogcHl0aG9uIC1tIGNvdmVyYWdlIGNvbWJpbmUge1tjb3ZlcmFnZV1yY30KKyAg
ICBjb3Y6IHB5dGhvbiAtbSBjb3ZlcmFnZSBodG1sIHtbY292ZXJhZ2VdcmN9CisgICAgY292OiBw
eXRob24gLW0gY292ZXJhZ2UgeG1sIHtbY292ZXJhZ2VdcmN9CisgICAgY292OiBweXRob24gLW0g
Y292ZXJhZ2UgcmVwb3J0IC1tIHtbY292ZXJhZ2VdcmN9IC0tZmFpbC11bmRlcj0xMDAKKyAgICBk
aWZmY292OiBweXRob24gLW0gY292ZXJhZ2UgeG1sIHtbY292ZXJhZ2VdcmN9CisgICAgZGlmZmNv
djogZGlmZi1jb3ZlciBjb3ZlcmFnZS54bWwgLS1odG1sLXJlcG9ydCBkaWZmY292Lmh0bWwKKyAg
ICBkaWZmY292OiBkaWZmLWNvdmVyIGNvdmVyYWdlLnhtbCAtLWZhaWwtdW5kZXI9MTAwCit1c2Vk
ZXZlbG9wID0gVHJ1ZQorcGFzc2VudiA9CisgICAgUFlUSE9OKgorICAgIExBTkcqCisgICAgTENf
KgorICAgIFBZVgorZGVwcyA9CisgICAgY292LGRpZmZjb3Y6IGNvdmVyYWdlPj00LjUKKyAgICBk
aWZmY292OiBkaWZmX2NvdmVyCisgICAgcHlmYWtlZnMKK3NldGVudiA9CisgICAgY292OiBDT1ZF
UkFHRV9QUk9DRVNTX1NUQVJUPXtbY292ZXJhZ2VdcmNmaWxlfQorICAgIGNvdjogQ09WRVJBR0Vf
T1BUSU9OUz0iLXAiCisgICAgY292OiBDT1ZFUkFHRV9GSUxFPXt0b3hpbmlkaXJ9Ly5jb3ZlcmFn
ZQorICAgIHB5Mjc6IFBZVj0yCisgICAgcHkzNSxweTM2LHB5MzcscHkzODogUFlWPTMKKyAgICAj
IHdvcmthcm91bmQgZGVwcmVjYXRpb24gd2FybmluZ3MgaW4gcGlwJ3MgdmVuZG9yZWQgcGFja2Fn
ZXMKKyAgICBQWVRIT05XQVJOSU5HUz1pZ25vcmU6VXNpbmcgb3IgaW1wb3J0aW5nIHRoZSBBQkNz
OkRlcHJlY2F0aW9uV2FybmluZzpwaXAuX3ZlbmRvcgorZXh0cmFzID0KKyAgICB0ZXN0aW5nCisK
KworW3Rlc3RlbnY6cWFdCitiYXNlcHl0aG9uID0gcHl0aG9uMy43Citjb21tYW5kcyA9CisgICAg
cHl0aG9uIC1tIGZsYWtlOCBpbXBvcnRsaWJfbWV0YWRhdGEKKyAgICBteXB5IGltcG9ydGxpYl9t
ZXRhZGF0YQorZGVwcyA9CisgICAgbXlweQorICAgIGZsYWtlOAorICAgIGZsdWZsLmZsYWtlOAor
ZXh0cmFzID0KKworCitbdGVzdGVudjpkb2NzXQorYmFzZXB5dGhvbiA9IHB5dGhvbjMKK2NvbW1h
bmRzID0KKyAgICBzcGhpbngtYnVpbGQgZG9jcyBidWlsZC9zcGhpbngvaHRtbAorZXh0cmFzID0K
KyAgICBkb2NzCisKKworW3Rlc3RlbnY6cGVyZl0KK3VzZV9kZXZlbG9wID0gRmFsc2UKK2RlcHMg
PQorICAgIGlweXRob24KK2NvbW1hbmRzID0KKyAgICBweXRob24gLW0gdGltZWl0IC1zICdpbXBv
cnQgaW1wb3J0bGliX21ldGFkYXRhJyAtLSAnaW1wb3J0bGliX21ldGFkYXRhLmRpc3RyaWJ1dGlv
bigiaXB5dGhvbiIpJworCisKK1t0ZXN0ZW52OnJlbGVhc2VdCitiYXNlcHl0aG9uID0gcHl0aG9u
MworZGVwcyA9CisgICAgdHdpbmUKKyAgICB3aGVlbAorICAgIHNldHVwdG9vbHMKKyAgICBrZXly
aW5nCisgICAgc2V0dXB0b29sc19zY20KK3Bhc3NlbnYgPQorICAgIFRXSU5FX1BBU1NXT1JECitz
ZXRlbnYgPQorICAgIFRXSU5FX1VTRVJOQU1FID0ge2VudjpUV0lORV9VU0VSTkFNRTpfX3Rva2Vu
X199Citjb21tYW5kcyA9CisgICAgcHl0aG9uIHNldHVwLnB5IHNkaXN0IGJkaXN0X3doZWVsCisg
ICAgcHl0aG9uIC1tIHR3aW5lIHtwb3NhcmdzfSB1cGxvYWQgZGlzdC8qCisKKworW2NvdmVyYWdl
XQorcmNmaWxlID0ge3RveGluaWRpcn0vY292ZXJhZ2UuaW5pCityYyA9IC0tcmNmaWxlPSJ7W2Nv
dmVyYWdlXXJjZmlsZX0iCisKKworW2ZsYWtlOF0KK2hhbmctY2xvc2luZyA9IFRydWUKK2pvYnMg
PSAxCittYXgtbGluZS1sZW5ndGggPSA3OQorZW5hYmxlLWV4dGVuc2lvbnMgPSBVNApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbmljb25maWcvLmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy5naXRpZ25v
cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OWU2MjM0MzgwY2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEs
OCBAQAorKi5lZ2ctaW5mbworKi5weWMKKy5jYWNoZS8KKy5lZ2dzLworYnVpbGQvCitkaXN0Lwor
X19weWNhY2hlX18KKy50b3gvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy8uaGdpZ25vcmUg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2luaWNvbmZpZy8uaGdpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lOGU5MWFiYWIxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZp
Zy8uaGdpZ25vcmUKQEAgLTAsMCArMSwxNiBAQAorCisjIFRoZXNlIGxpbmVzIGFyZSBzdWdnZXN0
ZWQgYWNjb3JkaW5nIHRvIHRoZSBzdm46aWdub3JlIHByb3BlcnR5CisjIEZlZWwgZnJlZSB0byBl
bmFibGUgdGhlbSBieSB1bmNvbW1lbnRpbmcgdGhlbQorc3ludGF4Omdsb2IKKyoucHljCisqLnB5
bworKi5zd3AKKyouaHRtbAorKi5jbGFzcworCisudG94CisKK2J1aWxkCitkaXN0CisqLmVnZy1p
bmZvCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy5sYW5kc2NhcGUueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bmljb25maWcvLmxhbmRzY2FwZS55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi41MjEyZGRlYTQxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy8u
bGFuZHNjYXBlLnltbApAQCAtMCwwICsxLDUgQEAKK3BlcDg6CisgIGZ1bGw6IHRydWUKK3B5dGhv
bi10YXJnZXRzOgorICAtIDIKKyAgLSAzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy8udHJh
dmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZTNmZWUwNmM5ZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbmljb25maWcvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwxOCBAQAorbGFuZ3VhZ2U6IHB5dGhv
bgorcHl0aG9uOgorLSAnMi43JworLSAnMy40JworLSAnMy41JworLSBuaWdodGx5CistIHB5cHkK
K2luc3RhbGw6IHBpcCBpbnN0YWxsIHNldHVwdG9vbHNfc2NtIHRveAorc2NyaXB0OiB0b3ggLWUg
cHkKK2RlcGxveToKKyAgcHJvdmlkZXI6IHB5cGkKKyAgdXNlcjogcm9ubnkKKyAgcGFzc3dvcmQ6
CisgICAgc2VjdXJlOiBEc1JWWDk5SEE2KzNKb1hPVlAvblBYZWFiSnkyUDczd3M3QWdlci9lNHJ4
M3AzalM3NGJJZDA5WHNCVTQ2YkFUOUFObVJXUFI4eTVEUmk1WmxxMFdRMnVYb1I1NXdtc2R1MktV
ZWdrNmJESVM0SW9wOERGeFk4S2pvdTlzOFJaYkRUUDI3TGZ1WVhLTU8xckRXL3hhNkVoaW90WVJv
ZGVrZVpVejNQM01ZaklpNnJCVjJSejN2d21JbnBrS090aTdBRndBc0NHbUNDSzEzaXJtUEpFcDVu
d2wzUmdlS3UyQUdhb2x3OWV5cEpYZU5MVWNORFZRODhaVVVYUUNrd2dxN2ExQmtLNk5NZVFMTXJX
QUUxYkQzYW1DYlZYSENSOVRhVngxWkgxZG5oYTVKY2ZqM2dFRnVjVG1JbldXZXM1dTlyeXB2c0Nr
U3hLdFNxZGlVQTdCTUpxN1h5a1Y3bkdOcGxHTG0yc3E0K0tTWWxmM2daWGc0WE5YUWtOT2k0RUJ0
UnZhdGhmRnppRDJTWmdkdGppUVgybmVoMGRNamY5Y3pjL3VDWWtLWUNGTGVvemR3Mm9RUStCc3ho
UWZzbVUySUxHQ0ZIeUZpa21EYkJxWk9XZlFFNVROM2l0UXFWM1RGSzhzT0hROGl5M01EU2hzK2xC
azlBVXdiQ0E1WWJSaDhoSktoZ1h5RXNEcGlzQzQxN1BqMjIrVGJ1dFRqN3YzUm1wZS9zdDRob0w3
NDBncldjM1BTVlVCYXlwRzBSc29hZlNEWlduWW5UQyswYWFrZDZRRWI1Uzl3bk1rUDk0a2lqWWpq
RjZ5VUludVQwNXdkYlF2NVhjU1hxQWRHekJxQjVqTk5kZndnV1ZDT2x3R2ZqbnZ6S2xsaEYzUG1X
UFcvbmZtUXBHT1FoND0KKyAgb246CisgICAgdGFnczogdHJ1ZQorICAgIGRpc3RyaWJ1dGlvbnM6
IHNkaXN0IGJkaXN0X3doZWVsCisgICAgcmVwbzogUm9ubnlQZmFubnNjaG1pZHQvaW5pY29uZmln
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9DSEFOR0VMT0cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9D
SEFOR0VMT0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42Nzk5MTlm
Y2QyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9DSEFOR0VMT0cKQEAgLTAs
MCArMSwzMiBAQAorMS4xLjEKKz09PT09PT09PQorCisqIGZpeCB2ZXJzaW9uIGRldGVybWluYXRp
b24gKHRoYW5rcyBAZmxvcmltb25kbWFuY2EpCisKKzEuMS4wCis9PT09PQorCistIHR5cGluZyBz
dHVicyAodGhhbmtzIEBibHVldGVjaCkKKy0gY2kgZml4ZXMKKworMS4wLjEKKz09PT09PQorCitw
eXRlc3QgNSsgc3VwcG9ydAorCisxLjAKKz09PT0KKworLSByZS1zeW5jIHdpdGggcHlsaWIgY29k
ZWJhc2UKKworMC4yCis9PT09PT09PT09PT09PT09PT0KKworLSBhZGRlZCBhYmlsaXR5IHRvIGFz
ayAibmFtZSBpbiBpbmljb25maWciLCBpLmUuIHRvIGNoZWNrCisgIGlmIGEgc2VjdGlvbiBpcyBj
b250YWluZWQuCisKKy0gZml4IGJ1ZyBpbiAibmFtZT12YWx1ZSIgcGFyc2luZyB3aGVyZSB2YWx1
ZSB3YXMgIng9MyIKKworLSBhbGxvdyBmb3IgJzogJyB0byBkZWxpbWl0IG5hbWU9dmFsdWUgcGFp
cnMsIHNvIHRoYXQgZS5nLiAucHlwaXJjIGZpbGVzCisgIGxpa2UgaHR0cDovL2RvY3MucHl0aG9u
Lm9yZy9kaXN0dXRpbHMvcGFja2FnZWluZGV4Lmh0bWwKKyAgY2FuIGJlIHN1Y2Nlc3NmdWxseSBw
YXJzZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZp
Zy9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFlY2Rm
YjFkYmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvTElDRU5TRQpAQCAtMCww
ICsxLDE5IEBACisKKyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy
Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAorICBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisgIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCisgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisgICAgIAorICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKKyAgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAKKyAgVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK
KyAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCisgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CisgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgIFNPRlRX
QVJFLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9NQU5JRkVTVC5pbiBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5p
Y29uZmlnL01BTklGRVNULmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMDZiZTUxNGFlNTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvTUFOSUZF
U1QuaW4KQEAgLTAsMCArMSw1IEBACitpbmNsdWRlIExJQ0VOU0UKK2luY2x1ZGUgZXhhbXBsZS5p
bmkKK2luY2x1ZGUgdG94LmluaQoraW5jbHVkZSBzcmMvaW5pY29uZmlnL3B5LnR5cGVkCityZWN1
cnNpdmUtaW5jbHVkZSBzcmMgKi5weWkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL1JFQURN
RS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2luaWNvbmZpZy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNmJiYWQ5YThkOTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bmljb25maWcvUkVBRE1FLnR4dApAQCAtMCwwICsxLDUxIEBACitpbmljb25maWc6IGJyYWluLWRl
YWQgc2ltcGxlIHBhcnNpbmcgb2YgaW5pIGZpbGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2luaWNvbmZpZyBpcyBhIHNtYWxsIGFu
ZCBzaW1wbGUgSU5JLWZpbGUgcGFyc2VyIG1vZHVsZQoraGF2aW5nIGEgdW5pcXVlIHNldCBvZiBm
ZWF0dXJlczoKKworKiB0ZXN0ZWQgYWdhaW5zdCBQeXRob24yLjQgYWNyb3NzIHRvIFB5dGhvbjMu
MiwgSnl0aG9uLCBQeVB5CisqIG1haW50YWlucyBvcmRlciBvZiBzZWN0aW9ucyBhbmQgZW50cmll
cworKiBzdXBwb3J0cyBtdWx0aS1saW5lIHZhbHVlcyB3aXRoIG9yIHdpdGhvdXQgbGluZS1jb250
aW51YXRpb25zCisqIHN1cHBvcnRzICIjIiBjb21tZW50cyBldmVyeXdoZXJlCisqIHJhaXNlcyBl
cnJvcnMgd2l0aCBwcm9wZXIgbGluZS1udW1iZXJzCisqIG5vIGJlbGxzIGFuZCB3aGlzdGxlcyBs
aWtlIGF1dG9tYXRpYyBzdWJzdGl0dXRpb25zCisqIGluaWNvbmZpZyByYWlzZXMgYW4gRXJyb3Ig
aWYgdHdvIHNlY3Rpb25zIGhhdmUgdGhlIHNhbWUgbmFtZS4KKworSWYgeW91IGVuY291bnRlciBp
c3N1ZXMgb3IgaGF2ZSBmZWF0dXJlIHdpc2hlcyBwbGVhc2UgcmVwb3J0IHRoZW0gdG86CisKKyAg
ICBodHRwOi8vZ2l0aHViLmNvbS9Sb25ueVBmYW5uc2NobWlkdC9pbmljb25maWcvaXNzdWVzCisK
K0Jhc2ljIEV4YW1wbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0lm
IHlvdSBoYXZlIGFuIGluaSBmaWxlIGxpa2UgdGhpczo6CisKKyAgICAjIGNvbnRlbnQgb2YgZXhh
bXBsZS5pbmkKKyAgICBbc2VjdGlvbjFdICMgY29tbWVudAorICAgIG5hbWUxPXZhbHVlMSAgIyBj
b21tZW50CisgICAgbmFtZTFiPXZhbHVlMSx2YWx1ZTIgICMgY29tbWVudAorCisgICAgW3NlY3Rp
b24yXQorICAgIG5hbWUyPQorICAgICAgICBsaW5lMQorICAgICAgICBsaW5lMgorCit0aGVuIHlv
dSBjYW4gZG86OgorCisgICAgPj4+IGltcG9ydCBpbmljb25maWcKKyAgICA+Pj4gaW5pID0gaW5p
Y29uZmlnLkluaUNvbmZpZygiZXhhbXBsZS5pbmkiKQorICAgID4+PiBpbmlbJ3NlY3Rpb24xJ11b
J25hbWUxJ10gIyByYWlzZXMgS2V5RXJyb3IgaWYgbm90IGV4aXN0cworICAgICd2YWx1ZTEnCisg
ICAgPj4+IGluaS5nZXQoJ3NlY3Rpb24xJywgJ25hbWUxYicsIFtdLCBsYW1iZGEgeDogeC5zcGxp
dCgiLCIpKQorICAgIFsndmFsdWUxJywgJ3ZhbHVlMiddCisgICAgPj4+IGluaS5nZXQoJ3NlY3Rp
b24xJywgJ25vdGV4aXN0JywgW10sIGxhbWJkYSB4OiB4LnNwbGl0KCIsIikpCisgICAgW10KKyAg
ICA+Pj4gW3gubmFtZSBmb3IgeCBpbiBsaXN0KGluaSldCisgICAgWydzZWN0aW9uMScsICdzZWN0
aW9uMiddCisgICAgPj4+IGxpc3QobGlzdChpbmkpWzBdLml0ZW1zKCkpCisgICAgWygnbmFtZTEn
LCAndmFsdWUxJyksICgnbmFtZTFiJywgJ3ZhbHVlMSx2YWx1ZTInKV0KKyAgICA+Pj4gJ3NlY3Rp
b24xJyBpbiBpbmkKKyAgICBUcnVlCisgICAgPj4+ICdpbmV4aXN0ZW5kc2VjdGlvbicgaW4gaW5p
CisgICAgRmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL2V4YW1wbGUuaW5pIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbmljb25maWcvZXhhbXBsZS5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi42NTQ4MWQyMDc0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9l
eGFtcGxlLmluaQpAQCAtMCwwICsxLDEwIEBACisKKyMgY29udGVudCBvZiBleGFtcGxlLmluaQor
W3NlY3Rpb24xXSAjIGNvbW1lbnQKK25hbWUxPXZhbHVlMSAgIyBjb21tZW50CituYW1lMWI9dmFs
dWUxLHZhbHVlMiAgIyBjb21tZW50CisKK1tzZWN0aW9uMl0KK25hbWUyPQorICAgIGxpbmUxCisg
ICAgbGluZTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3B5cHJvamVjdC50b21sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbmljb25maWcvcHlwcm9qZWN0LnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5iMjcyNWQ4ZjY1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZp
Zy9weXByb2plY3QudG9tbApAQCAtMCwwICsxLDUgQEAKK1tidWlsZC1zeXN0ZW1dCityZXF1aXJl
cyA9IFsic2V0dXB0b29scz49NDEuMi4wIiwgIndoZWVsIiwgInNldHVwdG9vbHNfc2NtPjMiXQor
CisKK1t0b29sLnNldHVwdG9vbHNfc2NtXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3NldHVwLmNmZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3NldHVw
LmNmZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNmU3OWNmMzFk
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3NldHVwLmNmZwpAQCAtMCwwICsx
LDIgQEAKK1tiZGlzdF93aGVlbF0KK3VuaXZlcnNhbD0xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNv
bmZpZy9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ2ZjMyMTRkZTkzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbmljb25maWcvc2V0dXAucHkKQEAgLTAsMCArMSw0NiBAQAorIiIiCitpbmljb25maWc6
IGJyYWluLWRlYWQgc2ltcGxlIGNvbmZpZy1pbmkgcGFyc2luZy4KKworY29tcGF0aWJsZSBDUHl0
aG9uIDIuMyB0aHJvdWdoIHRvIENQeXRob24gMy4yLCBKeXRob24sIFB5UHkKKworKGMpIDIwMTAg
Um9ubnkgUGZhbm5zY2htaWR0LCBIb2xnZXIgS3Jla2VsCisiIiIKKworZnJvbSBzZXR1cHRvb2xz
IGltcG9ydCBzZXR1cAorCisKK2RlZiBtYWluKCk6CisgICAgd2l0aCBvcGVuKCdSRUFETUUudHh0
JykgYXMgZnA6CisgICAgICAgIHJlYWRtZSA9IGZwLnJlYWQoKQorICAgIHNldHVwKAorICAgICAg
ICBuYW1lPSdpbmljb25maWcnLAorICAgICAgICBwYWNrYWdlcz1bJ2luaWNvbmZpZyddLAorICAg
ICAgICBwYWNrYWdlX2Rpcj17Jyc6ICdzcmMnfSwKKyAgICAgICAgZGVzY3JpcHRpb249J2luaWNv
bmZpZzogYnJhaW4tZGVhZCBzaW1wbGUgY29uZmlnLWluaSBwYXJzaW5nJywKKyAgICAgICAgbG9u
Z19kZXNjcmlwdGlvbj1yZWFkbWUsCisgICAgICAgIHVzZV9zY21fdmVyc2lvbj1UcnVlLAorICAg
ICAgICB1cmw9J2h0dHA6Ly9naXRodWIuY29tL1Jvbm55UGZhbm5zY2htaWR0L2luaWNvbmZpZycs
CisgICAgICAgIGxpY2Vuc2U9J01JVCBMaWNlbnNlJywKKyAgICAgICAgcGxhdGZvcm1zPVsndW5p
eCcsICdsaW51eCcsICdvc3gnLCAnY3lnd2luJywgJ3dpbjMyJ10sCisgICAgICAgIGF1dGhvcj0n
Um9ubnkgUGZhbm5zY2htaWR0LCBIb2xnZXIgS3Jla2VsJywKKyAgICAgICAgYXV0aG9yX2VtYWls
PSgKKyAgICAgICAgICAgICdvcGVuc291cmNlQHJvbm55cGZhbm5zY2htaWR0LmRlLCBob2xnZXIu
a3Jla2VsQGdtYWlsLmNvbScpLAorICAgICAgICBjbGFzc2lmaWVycz1bCisgICAgICAgICAgICAn
RGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhJywKKyAgICAgICAgICAgICdJbnRlbmRlZCBB
dWRpZW5jZSA6OiBEZXZlbG9wZXJzJywKKyAgICAgICAgICAgICdMaWNlbnNlIDo6IE9TSSBBcHBy
b3ZlZCA6OiBNSVQgTGljZW5zZScsCisgICAgICAgICAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBQ
T1NJWCcsCisgICAgICAgICAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBNaWNyb3NvZnQgOjogV2lu
ZG93cycsCisgICAgICAgICAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBNYWNPUyA6OiBNYWNPUyBY
JywKKyAgICAgICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJp
ZXMnLAorICAgICAgICAgICAgJ1RvcGljIDo6IFV0aWxpdGllcycsCisgICAgICAgICAgICAnUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywKKyAgICAgICAgICAgICdQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMicsCisgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3Vh
Z2UgOjogUHl0aG9uIDo6IDMnLAorICAgICAgICBdLAorICAgICAgICBpbmNsdWRlX3BhY2thZ2Vf
ZGF0YT1UcnVlLAorICAgICAgICB6aXBfc2FmZT1GYWxzZSwKKyAgICApCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9z
cmMvaW5pY29uZmlnL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc3JjL2luaWNvbmZpZy9f
X2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZhZDll
YWY4NjhiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3NyYy9pbmljb25maWcv
X19pbml0X18ucHkKQEAgLTAsMCArMSwxNjUgQEAKKyIiIiBicmFpbi1kZWFkIHNpbXBsZSBwYXJz
ZXIgZm9yIGluaS1zdHlsZSBmaWxlcy4KKyhDKSBSb25ueSBQZmFubnNjaG1pZHQsIEhvbGdlciBL
cmVrZWwgLS0gTUlUIGxpY2Vuc2VkCisiIiIKK19fYWxsX18gPSBbJ0luaUNvbmZpZycsICdQYXJz
ZUVycm9yJ10KKworQ09NTUVOVENIQVJTID0gIiM7IgorCisKK2NsYXNzIFBhcnNlRXJyb3IoRXhj
ZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbGluZW5vLCBtc2cpOgorICAg
ICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgcGF0aCwgbGluZW5vLCBtc2cpCisgICAgICAg
IHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KKyAgICAgICAg
c2VsZi5tc2cgPSBtc2cKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
IiVzOiVzOiAlcyIgJSAoc2VsZi5wYXRoLCBzZWxmLmxpbmVubysxLCBzZWxmLm1zZykKKworCitj
bGFzcyBTZWN0aW9uV3JhcHBlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25m
aWcsIG5hbWUpOgorICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZworICAgICAgICBzZWxmLm5h
bWUgPSBuYW1lCisKKyAgICBkZWYgbGluZW9mKHNlbGYsIG5hbWUpOgorICAgICAgICByZXR1cm4g
c2VsZi5jb25maWcubGluZW9mKHNlbGYubmFtZSwgbmFtZSkKKworICAgIGRlZiBnZXQoc2VsZiwg
a2V5LCBkZWZhdWx0PU5vbmUsIGNvbnZlcnQ9c3RyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29u
ZmlnLmdldChzZWxmLm5hbWUsIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0PWNvbnZlcnQsIGRlZmF1bHQ9ZGVmYXVsdCkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhz
ZWxmLCBrZXkpOgorICAgICAgICByZXR1cm4gc2VsZi5jb25maWcuc2VjdGlvbnNbc2VsZi5uYW1l
XVtrZXldCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHNlY3Rpb24gPSBzZWxm
LmNvbmZpZy5zZWN0aW9ucy5nZXQoc2VsZi5uYW1lLCBbXSkKKworICAgICAgICBkZWYgbGluZW9m
KGtleSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25maWcubGluZW9mKHNlbGYubmFtZSwg
a2V5KQorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VjdGlvbiwga2V5PWxpbmVvZik6Cisg
ICAgICAgICAgICB5aWVsZCBuYW1lCisKKyAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgIGZv
ciBuYW1lIGluIHNlbGY6CisgICAgICAgICAgICB5aWVsZCBuYW1lLCBzZWxmW25hbWVdCisKKwor
Y2xhc3MgSW5pQ29uZmlnKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRh
dGE9Tm9uZSk6CisgICAgICAgIHNlbGYucGF0aCA9IHN0cihwYXRoKSAgIyBjb252ZW5pZW5jZQor
ICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CisgICAgICAgICAgICBmID0gb3BlbihzZWxmLnBhdGgp
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG9rZW5zID0gc2VsZi5fcGFyc2Uo
aXRlcihmKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5jbG9zZSgp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbnMgPSBzZWxmLl9wYXJzZShkYXRhLnNw
bGl0bGluZXMoVHJ1ZSkpCisKKyAgICAgICAgc2VsZi5fc291cmNlcyA9IHt9CisgICAgICAgIHNl
bGYuc2VjdGlvbnMgPSB7fQorCisgICAgICAgIGZvciBsaW5lbm8sIHNlY3Rpb24sIG5hbWUsIHZh
bHVlIGluIHRva2VuczoKKyAgICAgICAgICAgIGlmIHNlY3Rpb24gaXMgTm9uZToKKyAgICAgICAg
ICAgICAgICBzZWxmLl9yYWlzZShsaW5lbm8sICdubyBzZWN0aW9uIGhlYWRlciBkZWZpbmVkJykK
KyAgICAgICAgICAgIHNlbGYuX3NvdXJjZXNbc2VjdGlvbiwgbmFtZV0gPSBsaW5lbm8KKyAgICAg
ICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uIGluIHNl
bGYuc2VjdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlKGxpbmVubywgJ2R1
cGxpY2F0ZSBzZWN0aW9uICVyJyAlIChzZWN0aW9uLCApKQorICAgICAgICAgICAgICAgIHNlbGYu
c2VjdGlvbnNbc2VjdGlvbl0gPSB7fQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBpZiBuYW1lIGluIHNlbGYuc2VjdGlvbnNbc2VjdGlvbl06CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JhaXNlKGxpbmVubywgJ2R1cGxpY2F0ZSBuYW1lICVyJyAlIChuYW1lLCApKQorICAg
ICAgICAgICAgICAgIHNlbGYuc2VjdGlvbnNbc2VjdGlvbl1bbmFtZV0gPSB2YWx1ZQorCisgICAg
ZGVmIF9yYWlzZShzZWxmLCBsaW5lbm8sIG1zZyk6CisgICAgICAgIHJhaXNlIFBhcnNlRXJyb3Io
c2VsZi5wYXRoLCBsaW5lbm8sIG1zZykKKworICAgIGRlZiBfcGFyc2Uoc2VsZiwgbGluZV9pdGVy
KToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgc2VjdGlvbiA9IE5vbmUKKyAgICAgICAg
Zm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUobGluZV9pdGVyKToKKyAgICAgICAgICAgIG5h
bWUsIGRhdGEgPSBzZWxmLl9wYXJzZWxpbmUobGluZSwgbGluZW5vKQorICAgICAgICAgICAgIyBu
ZXcgdmFsdWUKKyAgICAgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIGRhdGEgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgobGluZW5vLCBzZWN0aW9uLCBu
YW1lLCBkYXRhKSkKKyAgICAgICAgICAgICMgbmV3IHNlY3Rpb24KKyAgICAgICAgICAgIGVsaWYg
bmFtZSBpcyBub3QgTm9uZSBhbmQgZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIG5v
dCBuYW1lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZShsaW5lbm8sICdlbXB0eSBz
ZWN0aW9uIG5hbWUnKQorICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBuYW1lCisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgobGluZW5vLCBzZWN0aW9uLCBOb25lLCBOb25lKSkKKyAgICAg
ICAgICAgICMgY29udGludWF0aW9uCisgICAgICAgICAgICBlbGlmIG5hbWUgaXMgTm9uZSBhbmQg
ZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9yYWlzZShsaW5lbm8sICd1bmV4cGVjdGVkIHZhbHVlIGNvbnRp
bnVhdGlvbicpCisgICAgICAgICAgICAgICAgbGFzdCA9IHJlc3VsdC5wb3AoKQorICAgICAgICAg
ICAgICAgIGxhc3RfbmFtZSwgbGFzdF9kYXRhID0gbGFzdFstMjpdCisgICAgICAgICAgICAgICAg
aWYgbGFzdF9uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlKGxp
bmVubywgJ3VuZXhwZWN0ZWQgdmFsdWUgY29udGludWF0aW9uJykKKworICAgICAgICAgICAgICAg
IGlmIGxhc3RfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9ICclc1xuJXMnICUgKGxh
c3RfZGF0YSwgZGF0YSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxhc3RbOi0xXSAr
IChkYXRhLCkpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcGFyc2VsaW5lKHNl
bGYsIGxpbmUsIGxpbmVubyk6CisgICAgICAgICMgYmxhbmsgbGluZXMKKyAgICAgICAgaWYgaXNj
b21tZW50bGluZShsaW5lKToKKyAgICAgICAgICAgIGxpbmUgPSAiIgorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKKyAgICAgICAgaWYgbm90IGxpbmU6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQorICAgICAgICAjIHNlY3Rpb24KKyAgICAgICAg
aWYgbGluZVswXSA9PSAnWyc6CisgICAgICAgICAgICByZWFsbGluZSA9IGxpbmUKKyAgICAgICAg
ICAgIGZvciBjIGluIENPTU1FTlRDSEFSUzoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5z
cGxpdChjKVswXS5yc3RyaXAoKQorICAgICAgICAgICAgaWYgbGluZVstMV0gPT0gIl0iOgorICAg
ICAgICAgICAgICAgIHJldHVybiBsaW5lWzE6LTFdLCBOb25lCisgICAgICAgICAgICByZXR1cm4g
Tm9uZSwgcmVhbGxpbmUuc3RyaXAoKQorICAgICAgICAjIHZhbHVlCisgICAgICAgIGVsaWYgbm90
IGxpbmVbMF0uaXNzcGFjZSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5h
bWUsIHZhbHVlID0gbGluZS5zcGxpdCgnPScsIDEpCisgICAgICAgICAgICAgICAgaWYgIjoiIGlu
IG5hbWU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQorICAgICAgICAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgICAgICBuYW1lLCB2YWx1ZSA9IGxpbmUuc3BsaXQoIjoiLCAxKQorICAgICAgICAgICAgICAg
IGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZShsaW5l
bm8sICd1bmV4cGVjdGVkIGxpbmU6ICVyJyAlIGxpbmUpCisgICAgICAgICAgICByZXR1cm4gbmFt
ZS5zdHJpcCgpLCB2YWx1ZS5zdHJpcCgpCisgICAgICAgICMgY29udGludWF0aW9uCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgbGluZS5zdHJpcCgpCisKKyAgICBkZWYg
bGluZW9mKHNlbGYsIHNlY3Rpb24sIG5hbWU9Tm9uZSk6CisgICAgICAgIGxpbmVubyA9IHNlbGYu
X3NvdXJjZXMuZ2V0KChzZWN0aW9uLCBuYW1lKSkKKyAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVubyArIDEKKworICAgIGRlZiBnZXQoc2VsZiwg
c2VjdGlvbiwgbmFtZSwgZGVmYXVsdD1Ob25lLCBjb252ZXJ0PXN0cik6CisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0KHNlbGYuc2VjdGlvbnNbc2VjdGlvbl1bbmFtZV0p
CisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisK
KyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgbm90IGlu
IHNlbGYuc2VjdGlvbnM6CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihuYW1lKQorICAgICAg
ICByZXR1cm4gU2VjdGlvbldyYXBwZXIoc2VsZiwgbmFtZSkKKworICAgIGRlZiBfX2l0ZXJfXyhz
ZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKHNlbGYuc2VjdGlvbnMsIGtleT1zZWxm
LmxpbmVvZik6CisgICAgICAgICAgICB5aWVsZCBTZWN0aW9uV3JhcHBlcihzZWxmLCBuYW1lKQor
CisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBhcmcpOgorICAgICAgICByZXR1cm4gYXJnIGlu
IHNlbGYuc2VjdGlvbnMKKworCitkZWYgaXNjb21tZW50bGluZShsaW5lKToKKyAgICBjID0gbGlu
ZS5sc3RyaXAoKVs6MV0KKyAgICByZXR1cm4gYyBpbiBDT01NRU5UQ0hBUlMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaW5pY29uZmlnL3NyYy9pbmljb25maWcvX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25m
aWcvc3JjL2luaWNvbmZpZy9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5iNjI4NGJlYzNmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNv
bmZpZy9zcmMvaW5pY29uZmlnL19faW5pdF9fLnB5aQpAQCAtMCwwICsxLDMxIEBACitmcm9tIHR5
cGluZyBpbXBvcnQgQ2FsbGFibGUsIEl0ZXJhdG9yLCBNYXBwaW5nLCBPcHRpb25hbCwgVHVwbGUs
IFR5cGVWYXIsIFVuaW9uCitmcm9tIHR5cGluZ19leHRlbnNpb25zIGltcG9ydCBGaW5hbAorCitf
RCA9IFR5cGVWYXIoJ19EJykKK19UID0gVHlwZVZhcignX1QnKQorCitjbGFzcyBQYXJzZUVycm9y
KEV4Y2VwdGlvbik6CisgICAgIyBQcml2YXRlIF9faW5pdF9fLgorICAgIHBhdGg6IEZpbmFsW3N0
cl0KKyAgICBsaW5lbm86IEZpbmFsW2ludF0KKyAgICBtc2c6IEZpbmFsW3N0cl0KKworY2xhc3Mg
U2VjdGlvbldyYXBwZXI6CisgICAgIyBQcml2YXRlIF9faW5pdF9fLgorICAgIGNvbmZpZzogRmlu
YWxbSW5pQ29uZmlnXQorICAgIG5hbWU6IEZpbmFsW3N0cl0KKyAgICBkZWYgX19nZXRpdGVtX18o
c2VsZiwga2V5OiBzdHIpIC0+IHN0cjogLi4uCisgICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0
ZXJhdG9yW3N0cl06IC4uLgorICAgIGRlZiBnZXQoc2VsZiwga2V5OiBzdHIsIGRlZmF1bHQ6IF9E
ID0gLi4uLCBjb252ZXJ0OiBDYWxsYWJsZVtbc3RyXSwgX1RdID0gLi4uKSAtPiBVbmlvbltfVCwg
X0RdOiAuLi4KKyAgICBkZWYgaXRlbXMoc2VsZikgLT4gSXRlcmF0b3JbVHVwbGVbc3RyLCBzdHJd
XTogLi4uCisgICAgZGVmIGxpbmVvZihzZWxmLCBuYW1lOiBzdHIpIC0+IE9wdGlvbmFsW2ludF06
IC4uLgorCitjbGFzcyBJbmlDb25maWc6CisgICAgcGF0aDogRmluYWxbc3RyXQorICAgIHNlY3Rp
b25zOiBGaW5hbFtNYXBwaW5nW3N0ciwgTWFwcGluZ1tzdHIsIHN0cl1dXQorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwYXRoOiBzdHIsIGRhdGE6IE9wdGlvbmFsW3N0cl0gPSBOb25lKTogLi4uCisg
ICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBhcmc6IHN0cikgLT4gYm9vbDogLi4uCisgICAgZGVm
IF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWU6IHN0cikgLT4gU2VjdGlvbldyYXBwZXI6IC4uLgorICAg
IGRlZiBfX2l0ZXJfXyhzZWxmKSAtPiBJdGVyYXRvcltTZWN0aW9uV3JhcHBlcl06IC4uLgorICAg
IGRlZiBnZXQoc2VsZiwgc2VjdGlvbjogc3RyLCBuYW1lOiBzdHIsIGRlZmF1bHQ6IF9EID0gLi4u
LCBjb252ZXJ0OiBDYWxsYWJsZVtbc3RyXSwgX1RdID0gLi4uKSAtPiBVbmlvbltfVCwgX0RdOiAu
Li4KKyAgICBkZWYgbGluZW9mKHNlbGYsIHNlY3Rpb246IHN0ciwgbmFtZTogT3B0aW9uYWxbc3Ry
XSA9IC4uLikgLT4gT3B0aW9uYWxbaW50XTogLi4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZp
Zy9zcmMvaW5pY29uZmlnL3B5LnR5cGVkIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc3JjL2luaWNvbmZpZy9w
eS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2OWRlMjli
YjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvdGVzdGluZy9jb25mdGVzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW5pY29uZmlnL3Rlc3RpbmcvY29uZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5kMjY1YTI5Zjg2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lu
aWNvbmZpZy90ZXN0aW5nL2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEsMiBAQAorCitvcHRpb25fZG9j
dGVzdGdsb2IgPSAiUkVBRE1FLnR4dCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3Rlc3Rp
bmcvdGVzdF9pbmljb25maWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy90ZXN0aW5nL3Rlc3RfaW5pY29u
ZmlnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmUxMjQyMWU1
YThjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvdGVzdGluZy90ZXN0X2luaWNv
bmZpZy5weQpAQCAtMCwwICsxLDMxNCBAQAoraW1wb3J0IHB5CitpbXBvcnQgcHl0ZXN0Citmcm9t
IGluaWNvbmZpZyBpbXBvcnQgSW5pQ29uZmlnLCBQYXJzZUVycm9yLCBfX2FsbF9fIGFzIEFMTAor
ZnJvbSBpbmljb25maWcgaW1wb3J0IGlzY29tbWVudGxpbmUKK2Zyb20gdGV4dHdyYXAgaW1wb3J0
IGRlZGVudAorCisKK2NoZWNrX3Rva2VucyA9IHsKKyAgICAnc2VjdGlvbic6ICgKKyAgICAgICAg
J1tzZWN0aW9uXScsCisgICAgICAgIFsoMCwgJ3NlY3Rpb24nLCBOb25lLCBOb25lKV0KKyAgICAp
LAorICAgICd2YWx1ZSc6ICgKKyAgICAgICAgJ3ZhbHVlID0gMScsCisgICAgICAgIFsoMCwgTm9u
ZSwgJ3ZhbHVlJywgJzEnKV0KKyAgICApLAorICAgICd2YWx1ZSBpbiBzZWN0aW9uJzogKAorICAg
ICAgICAnW3NlY3Rpb25dXG52YWx1ZT0xJywKKyAgICAgICAgWygwLCAnc2VjdGlvbicsIE5vbmUs
IE5vbmUpLCAoMSwgJ3NlY3Rpb24nLCAndmFsdWUnLCAnMScpXQorICAgICksCisgICAgJ3ZhbHVl
IHdpdGggY29udGludWF0aW9uJzogKAorICAgICAgICAnbmFtZXMgPVxuIEFsaWNlXG4gQm9iJywK
KyAgICAgICAgWygwLCBOb25lLCAnbmFtZXMnLCAnQWxpY2VcbkJvYicpXQorICAgICksCisgICAg
J3ZhbHVlIHdpdGggYWxpZ25lZCBjb250aW51YXRpb24nOiAoCisgICAgICAgICduYW1lcyA9IEFs
aWNlXG4nCisgICAgICAgICcgICAgICAgIEJvYicsCisgICAgICAgIFsoMCwgTm9uZSwgJ25hbWVz
JywgJ0FsaWNlXG5Cb2InKV0KKyAgICApLAorICAgICdibGFuayBsaW5lJzogKAorICAgICAgICAn
W3NlY3Rpb25dXG5cbnZhbHVlPTEnLAorICAgICAgICBbKDAsICdzZWN0aW9uJywgTm9uZSwgTm9u
ZSksICgyLCAnc2VjdGlvbicsICd2YWx1ZScsICcxJyldCisgICAgKSwKKyAgICAnY29tbWVudCc6
ICgKKyAgICAgICAgJyMgY29tbWVudCcsCisgICAgICAgIFtdCisgICAgKSwKKyAgICAnY29tbWVu
dCBvbiB2YWx1ZSc6ICgKKyAgICAgICAgJ3ZhbHVlID0gMScsCisgICAgICAgIFsoMCwgTm9uZSwg
J3ZhbHVlJywgJzEnKV0KKyAgICApLAorCisgICAgJ2NvbW1lbnQgb24gc2VjdGlvbic6ICgKKyAg
ICAgICAgJ1tzZWN0aW9uXSAjY29tbWVudCcsCisgICAgICAgIFsoMCwgJ3NlY3Rpb24nLCBOb25l
LCBOb25lKV0KKyAgICApLAorICAgICdjb21tZW50Mic6ICgKKyAgICAgICAgJzsgY29tbWVudCcs
CisgICAgICAgIFtdCisgICAgKSwKKworICAgICdjb21tZW50MiBvbiBzZWN0aW9uJzogKAorICAg
ICAgICAnW3NlY3Rpb25dIDtjb21tZW50JywKKyAgICAgICAgWygwLCAnc2VjdGlvbicsIE5vbmUs
IE5vbmUpXQorICAgICksCisgICAgJ3BzZXVkbyBzZWN0aW9uIHN5bnRheCBpbiB2YWx1ZSc6ICgK
KyAgICAgICAgJ25hbWUgPSB2YWx1ZSBbXScsCisgICAgICAgIFsoMCwgTm9uZSwgJ25hbWUnLCAn
dmFsdWUgW10nKV0KKyAgICApLAorICAgICdhc3NpZ25tZW50IGluIHZhbHVlJzogKAorICAgICAg
ICAndmFsdWUgPSB4ID0gMycsCisgICAgICAgIFsoMCwgTm9uZSwgJ3ZhbHVlJywgJ3ggPSAzJyld
CisgICAgKSwKKyAgICAndXNlIG9mIGNvbG9uIGZvciBuYW1lLXZhbHVlcyc6ICgKKyAgICAgICAg
J25hbWU6IHknLAorICAgICAgICBbKDAsIE5vbmUsICduYW1lJywgJ3knKV0KKyAgICApLAorICAg
ICd1c2Ugb2YgY29sb24gd2l0aG91dCBzcGFjZSc6ICgKKyAgICAgICAgJ3ZhbHVlOnk9NScsCisg
ICAgICAgIFsoMCwgTm9uZSwgJ3ZhbHVlJywgJ3k9NScpXQorICAgICksCisgICAgJ2VxdWFsaXR5
IGdldHMgcHJlY2VkZW5jZSc6ICgKKyAgICAgICAgJ3ZhbHVlPXh5ejo1JywKKyAgICAgICAgWygw
LCBOb25lLCAndmFsdWUnLCAneHl6OjUnKV0KKyAgICApLAorCit9CisKKworQHB5dGVzdC5maXh0
dXJlKHBhcmFtcz1zb3J0ZWQoY2hlY2tfdG9rZW5zKSkKK2RlZiBpbnB1dF9leHBlY3RlZChyZXF1
ZXN0KToKKyAgICByZXR1cm4gY2hlY2tfdG9rZW5zW3JlcXVlc3QucGFyYW1dCisKKworQHB5dGVz
dC5maXh0dXJlCitkZWYgaW5wdXQoaW5wdXRfZXhwZWN0ZWQpOgorICAgIHJldHVybiBpbnB1dF9l
eHBlY3RlZFswXQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGV4cGVjdGVkKGlucHV0X2V4cGVj
dGVkKToKKyAgICByZXR1cm4gaW5wdXRfZXhwZWN0ZWRbMV0KKworCitkZWYgcGFyc2UoaW5wdXQp
OgorICAgICMgb25seSBmb3IgdGVzdGluZyBwdXJwb3NlcyAtIF9wYXJzZSgpIGRvZXMgbm90IHVz
ZSBzdGF0ZSBleGNlcHQgcGF0aAorICAgIGluaSA9IG9iamVjdC5fX25ld19fKEluaUNvbmZpZykK
KyAgICBpbmkucGF0aCA9ICJzYW1wbGUiCisgICAgcmV0dXJuIGluaS5fcGFyc2UoaW5wdXQuc3Bs
aXRsaW5lcyhUcnVlKSkKKworCitkZWYgcGFyc2VfYV9lcnJvcihpbnB1dCk6CisgICAgcmV0dXJu
IHB5LnRlc3QucmFpc2VzKFBhcnNlRXJyb3IsIHBhcnNlLCBpbnB1dCkKKworCitkZWYgdGVzdF90
b2tlbml6ZShpbnB1dCwgZXhwZWN0ZWQpOgorICAgIHBhcnNlZCA9IHBhcnNlKGlucHV0KQorICAg
IGFzc2VydCBwYXJzZWQgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF9wYXJzZV9lbXB0eSgpOgor
ICAgIHBhcnNlZCA9IHBhcnNlKCIiKQorICAgIGFzc2VydCBub3QgcGFyc2VkCisgICAgaW5pID0g
SW5pQ29uZmlnKCJzYW1wbGUiLCAiIikKKyAgICBhc3NlcnQgbm90IGluaS5zZWN0aW9ucworCisK
K2RlZiB0ZXN0X1BhcnNlRXJyb3IoKToKKyAgICBlID0gUGFyc2VFcnJvcigiZmlsZW5hbWUiLCAw
LCAiaGVsbG8iKQorICAgIGFzc2VydCBzdHIoZSkgPT0gImZpbGVuYW1lOjE6IGhlbGxvIgorCisK
K2RlZiB0ZXN0X2NvbnRpbnVhdGlvbl9uZWVkc19wZXJjZWVkaW5nX3Rva2VuKCk6CisgICAgZXhj
aW5mbyA9IHBhcnNlX2FfZXJyb3IoJyBGb28nKQorICAgIGFzc2VydCBleGNpbmZvLnZhbHVlLmxp
bmVubyA9PSAwCisKKworZGVmIHRlc3RfY29udGludWF0aW9uX2NhbnRfYmVfYWZ0ZXJfc2VjdGlv
bigpOgorICAgIGV4Y2luZm8gPSBwYXJzZV9hX2Vycm9yKCdbc2VjdGlvbl1cbiBGb28nKQorICAg
IGFzc2VydCBleGNpbmZvLnZhbHVlLmxpbmVubyA9PSAxCisKKworZGVmIHRlc3Rfc2VjdGlvbl9j
YW50X2JlX2VtcHR5KCk6CisgICAgZXhjaW5mbyA9IHBhcnNlX2FfZXJyb3IoJ1tdJykKKyAgICBh
c3NlcnQgZXhjaW5mby52YWx1ZS5saW5lbm8gPT0gMAorCisKK0BweS50ZXN0Lm1hcmsucGFyYW1l
dHJpemUoJ2xpbmUnLCBbCisgICAgJyEhJywKKyAgICBdKQorZGVmIHRlc3RfZXJyb3Jfb25fd2Vp
cmRfbGluZXMobGluZSk6CisgICAgcGFyc2VfYV9lcnJvcihsaW5lKQorCisKK2RlZiB0ZXN0X2lu
aWNvbmZpZ19mcm9tX2ZpbGUodG1wZGlyKToKKyAgICBwYXRoID0gdG1wZGlyLyd0ZXN0LnR4dCcK
KyAgICBwYXRoLndyaXRlKCdbbWV0YWRhdGFdXG5uYW1lPTEnKQorCisgICAgY29uZmlnID0gSW5p
Q29uZmlnKHBhdGg9cGF0aCkKKyAgICBhc3NlcnQgbGlzdChjb25maWcuc2VjdGlvbnMpID09IFsn
bWV0YWRhdGEnXQorICAgIGNvbmZpZyA9IEluaUNvbmZpZyhwYXRoLCAiW2RpZmZdIikKKyAgICBh
c3NlcnQgbGlzdChjb25maWcuc2VjdGlvbnMpID09IFsnZGlmZiddCisgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIEluaUNvbmZpZyhkYXRhPXBhdGgucmVhZCgpKQor
CisKK2RlZiB0ZXN0X2luaWNvbmZpZ19zZWN0aW9uX2ZpcnN0KHRtcGRpcik6CisgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFBhcnNlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIEluaUNvbmZpZygi
eCIsIGRhdGE9J25hbWU9MScpCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUubXNnID09ICJubyBz
ZWN0aW9uIGhlYWRlciBkZWZpbmVkIgorCisKK2RlZiB0ZXN0X2luaWNvbmlnX3NlY3Rpb25fZHVw
bGljYXRlX2ZhaWxzKCk6CisgICAgd2l0aCBweXRlc3QucmFpc2VzKFBhcnNlRXJyb3IpIGFzIGV4
Y2luZm86CisgICAgICAgIEluaUNvbmZpZygieCIsIGRhdGE9J1tzZWN0aW9uXVxuW3NlY3Rpb25d
JykKKyAgICBhc3NlcnQgJ2R1cGxpY2F0ZSBzZWN0aW9uJyBpbiBzdHIoZXhjaW5mby52YWx1ZSkK
KworCitkZWYgdGVzdF9pbmljb25maWdfZHVwbGljYXRlX2tleV9mYWlscygpOgorICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhQYXJzZUVycm9yKSBhcyBleGNpbmZvOgorICAgICAgICBJbmlDb25maWco
IngiLCBkYXRhPSdbc2VjdGlvbl1cbm5hbWUgPSBBbGljZVxubmFtZSA9IGJvYicpCisKKyAgICBh
c3NlcnQgJ2R1cGxpY2F0ZSBuYW1lJyBpbiBzdHIoZXhjaW5mby52YWx1ZSkKKworCitkZWYgdGVz
dF9pbmljb25maWdfbGluZW9mKCk6CisgICAgY29uZmlnID0gSW5pQ29uZmlnKCJ4LmluaSIsIGRh
dGE9KAorICAgICAgICAnW3NlY3Rpb25dXG4nCisgICAgICAgICd2YWx1ZSA9IDFcbicKKyAgICAg
ICAgJ1tzZWN0aW9uMl1cbicKKyAgICAgICAgJyMgY29tbWVudFxuJworICAgICAgICAndmFsdWUg
PTInCisgICAgKSkKKworICAgIGFzc2VydCBjb25maWcubGluZW9mKCdtaXNzaW5nJykgaXMgTm9u
ZQorICAgIGFzc2VydCBjb25maWcubGluZW9mKCdzZWN0aW9uJykgPT0gMQorICAgIGFzc2VydCBj
b25maWcubGluZW9mKCdzZWN0aW9uMicpID09IDMKKyAgICBhc3NlcnQgY29uZmlnLmxpbmVvZign
c2VjdGlvbicsICd2YWx1ZScpID09IDIKKyAgICBhc3NlcnQgY29uZmlnLmxpbmVvZignc2VjdGlv
bjInLCAndmFsdWUnKSA9PSA1CisKKyAgICBhc3NlcnQgY29uZmlnWydzZWN0aW9uJ10ubGluZW9m
KCd2YWx1ZScpID09IDIKKyAgICBhc3NlcnQgY29uZmlnWydzZWN0aW9uMiddLmxpbmVvZigndmFs
dWUnKSA9PSA1CisKKworZGVmIHRlc3RfaW5pY29uZmlnX2dldF9jb252ZXJ0KCk6CisgICAgY29u
ZmlnID0gSW5pQ29uZmlnKCJ4IiwgZGF0YT0nW3NlY3Rpb25dXG5pbnQgPSAxXG5mbG9hdCA9IDEu
MScpCisgICAgYXNzZXJ0IGNvbmZpZy5nZXQoJ3NlY3Rpb24nLCAnaW50JykgPT0gJzEnCisgICAg
YXNzZXJ0IGNvbmZpZy5nZXQoJ3NlY3Rpb24nLCAnaW50JywgY29udmVydD1pbnQpID09IDEKKwor
CitkZWYgdGVzdF9pbmljb25maWdfZ2V0X21pc3NpbmcoKToKKyAgICBjb25maWcgPSBJbmlDb25m
aWcoIngiLCBkYXRhPSdbc2VjdGlvbl1cbmludCA9IDFcbmZsb2F0ID0gMS4xJykKKyAgICBhc3Nl
cnQgY29uZmlnLmdldCgnc2VjdGlvbicsICdtaXNzaW5nJywgZGVmYXVsdD0xKSA9PSAxCisgICAg
YXNzZXJ0IGNvbmZpZy5nZXQoJ3NlY3Rpb24nLCAnbWlzc2luZycpIGlzIE5vbmUKKworCitkZWYg
dGVzdF9zZWN0aW9uX2dldCgpOgorICAgIGNvbmZpZyA9IEluaUNvbmZpZygieCIsIGRhdGE9J1tz
ZWN0aW9uXVxudmFsdWU9MScpCisgICAgc2VjdGlvbiA9IGNvbmZpZ1snc2VjdGlvbiddCisgICAg
YXNzZXJ0IHNlY3Rpb24uZ2V0KCd2YWx1ZScsIGNvbnZlcnQ9aW50KSA9PSAxCisgICAgYXNzZXJ0
IHNlY3Rpb24uZ2V0KCd2YWx1ZScsIDEpID09ICIxIgorICAgIGFzc2VydCBzZWN0aW9uLmdldCgn
bWlzc2luZycsIDIpID09IDIKKworCitkZWYgdGVzdF9taXNzaW5nX3NlY3Rpb24oKToKKyAgICBj
b25maWcgPSBJbmlDb25maWcoIngiLCBkYXRhPSdbc2VjdGlvbl1cbnZhbHVlPTEnKQorICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBjb25maWdbIm90aGVyIl0K
KworCitkZWYgdGVzdF9zZWN0aW9uX2dldGl0ZW0oKToKKyAgICBjb25maWcgPSBJbmlDb25maWco
IngiLCBkYXRhPSdbc2VjdGlvbl1cbnZhbHVlPTEnKQorICAgIGFzc2VydCBjb25maWdbJ3NlY3Rp
b24nXVsndmFsdWUnXSA9PSAnMScKKyAgICBhc3NlcnQgY29uZmlnWydzZWN0aW9uJ11bJ3ZhbHVl
J10gPT0gJzEnCisKKworZGVmIHRlc3Rfc2VjdGlvbl9pdGVyKCk6CisgICAgY29uZmlnID0gSW5p
Q29uZmlnKCJ4IiwgZGF0YT0nW3NlY3Rpb25dXG52YWx1ZT0xJykKKyAgICBuYW1lcyA9IGxpc3Qo
Y29uZmlnWydzZWN0aW9uJ10pCisgICAgYXNzZXJ0IG5hbWVzID09IFsndmFsdWUnXQorICAgIGl0
ZW1zID0gbGlzdChjb25maWdbJ3NlY3Rpb24nXS5pdGVtcygpKQorICAgIGFzc2VydCBpdGVtcyA9
PSBbKCd2YWx1ZScsICcxJyldCisKKworZGVmIHRlc3RfY29uZmlnX2l0ZXIoKToKKyAgICBjb25m
aWcgPSBJbmlDb25maWcoInguaW5pIiwgZGF0YT1kZWRlbnQoJycnCisgICAgICAgICAgW3NlY3Rp
b24xXQorICAgICAgICAgIHZhbHVlPTEKKyAgICAgICAgICBbc2VjdGlvbjJdCisgICAgICAgICAg
dmFsdWU9MgorICAgICcnJykpCisgICAgbCA9IGxpc3QoY29uZmlnKQorICAgIGFzc2VydCBsZW4o
bCkgPT0gMgorICAgIGFzc2VydCBsWzBdLm5hbWUgPT0gJ3NlY3Rpb24xJworICAgIGFzc2VydCBs
WzBdWyd2YWx1ZSddID09ICcxJworICAgIGFzc2VydCBsWzFdLm5hbWUgPT0gJ3NlY3Rpb24yJwor
ICAgIGFzc2VydCBsWzFdWyd2YWx1ZSddID09ICcyJworCisKK2RlZiB0ZXN0X2NvbmZpZ19jb250
YWlucygpOgorICAgIGNvbmZpZyA9IEluaUNvbmZpZygieC5pbmkiLCBkYXRhPWRlZGVudCgnJycK
KyAgICAgICAgICBbc2VjdGlvbjFdCisgICAgICAgICAgdmFsdWU9MQorICAgICAgICAgIFtzZWN0
aW9uMl0KKyAgICAgICAgICB2YWx1ZT0yCisgICAgJycnKSkKKyAgICBhc3NlcnQgJ3h5eicgbm90
IGluIGNvbmZpZworICAgIGFzc2VydCAnc2VjdGlvbjEnIGluIGNvbmZpZworICAgIGFzc2VydCAn
c2VjdGlvbjInIGluIGNvbmZpZworCisKK2RlZiB0ZXN0X2l0ZXJfZmlsZV9vcmRlcigpOgorICAg
IGNvbmZpZyA9IEluaUNvbmZpZygieC5pbmkiLCBkYXRhPSIiIgorW3NlY3Rpb24yXSAjY3B5dGhv
biBkaWN0IG9yZGVyZWQgYmVmb3JlIHNlY3Rpb24KK3ZhbHVlID0gMQordmFsdWUyID0gMiAjIGRp
Y3Qgb3JkZXJlZCBiZWZvcmUgdmFsdWUKK1tzZWN0aW9uXQorYSA9IDEKK2IgPSAyCisiIiIpCisg
ICAgbCA9IGxpc3QoY29uZmlnKQorICAgIHNlY25hbWVzID0gW3gubmFtZSBmb3IgeCBpbiBsXQor
ICAgIGFzc2VydCBzZWNuYW1lcyA9PSBbJ3NlY3Rpb24yJywgJ3NlY3Rpb24nXQorICAgIGFzc2Vy
dCBsaXN0KGNvbmZpZ1snc2VjdGlvbjInXSkgPT0gWyd2YWx1ZScsICd2YWx1ZTInXQorICAgIGFz
c2VydCBsaXN0KGNvbmZpZ1snc2VjdGlvbiddKSA9PSBbJ2EnLCAnYiddCisKKworZGVmIHRlc3Rf
ZXhhbXBsZV9weXBpcmMoKToKKyAgICBjb25maWcgPSBJbmlDb25maWcoInB5cGlyYyIsIGRhdGE9
ZGVkZW50KCcnJworICAgICAgICBbZGlzdHV0aWxzXQorICAgICAgICBpbmRleC1zZXJ2ZXJzID0K
KyAgICAgICAgICAgIHB5cGkKKyAgICAgICAgICAgIG90aGVyCisKKyAgICAgICAgW3B5cGldCisg
ICAgICAgIHJlcG9zaXRvcnk6IDxyZXBvc2l0b3J5LXVybD4KKyAgICAgICAgdXNlcm5hbWU6IDx1
c2VybmFtZT4KKyAgICAgICAgcGFzc3dvcmQ6IDxwYXNzd29yZD4KKworICAgICAgICBbb3RoZXJd
CisgICAgICAgIHJlcG9zaXRvcnk6IGh0dHA6Ly9leGFtcGxlLmNvbS9weXBpCisgICAgICAgIHVz
ZXJuYW1lOiA8dXNlcm5hbWU+CisgICAgICAgIHBhc3N3b3JkOiA8cGFzc3dvcmQ+CisgICAgJycn
KSkKKyAgICBkaXN0dXRpbHMsIHB5cGksIG90aGVyID0gbGlzdChjb25maWcpCisgICAgYXNzZXJ0
IGRpc3R1dGlsc1siaW5kZXgtc2VydmVycyJdID09ICJweXBpXG5vdGhlciIKKyAgICBhc3NlcnQg
cHlwaVsncmVwb3NpdG9yeSddID09ICc8cmVwb3NpdG9yeS11cmw+JworICAgIGFzc2VydCBweXBp
Wyd1c2VybmFtZSddID09ICc8dXNlcm5hbWU+JworICAgIGFzc2VydCBweXBpWydwYXNzd29yZCdd
ID09ICc8cGFzc3dvcmQ+JworICAgIGFzc2VydCBbJ3JlcG9zaXRvcnknLCAndXNlcm5hbWUnLCAn
cGFzc3dvcmQnXSA9PSBsaXN0KG90aGVyKQorCisKK2RlZiB0ZXN0X2FwaV9pbXBvcnQoKToKKyAg
ICBhc3NlcnQgQUxMID09IFsnSW5pQ29uZmlnJywgJ1BhcnNlRXJyb3InXQorCisKK0BweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgibGluZSIsIFsKKyAgICAiI3F3ZSIsCisgICAgIiAgI3F3ZSIsCisg
ICAgIjtxd2UiLAorICAgICIgO3F3ZSIsCitdKQorZGVmIHRlc3RfaXNjb21tZW50bGluZV90cnVl
KGxpbmUpOgorICAgIGFzc2VydCBpc2NvbW1lbnRsaW5lKGxpbmUpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2luaWNvbmZpZy90b3guaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvdG94LmluaQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5ODgzOGJlZTA3OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaW5pY29uZmlnL3RveC5pbmkKQEAgLTAsMCArMSwxNCBAQAorW3RveF0KK2Vudmxp
c3Q9cHkyNyxweTI2LHB5MzMscHkzNCxweTM1CisKKworW3Rlc3RlbnZdCitjb21tYW5kcz0KKyAg
cHl0ZXN0IHtwb3NhcmdzfQorZGVwcz0KKyAgcHl0ZXN0CisKKworW3B5dGVzdF0KK3Rlc3RwYXRo
cz0KKyAgdGVzdGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy8uZ2l0YXR0cmli
dXRlcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YWFiYTdhOWZlOGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEsMiBAQAorbW9y
ZV9pdGVydG9vbHMvbW9yZS5weSBtZXJnZT11bmlvbgorbW9yZV9pdGVydG9vbHMvdGVzdHMvdGVz
dF9tb3JlLnB5IG1lcmdlPXVuaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy5n
aXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40Mjc5MWU5ZDk3ODQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRpZ25vcmUKQEAgLTAsMCArMSwzNCBAQAorKi5weVtj
b10KKworIyBQYWNrYWdlcworKi5lZ2cKKyouZWdncworKi5lZ2ctaW5mbworZGlzdAorYnVpbGQK
K2VnZ3MKK3BhcnRzCitiaW4KK3Zhcgorc2Rpc3QKK2RldmVsb3AtZWdncworLmluc3RhbGxlZC5j
ZmcKKworIyBJbnN0YWxsZXIgbG9ncworcGlwLWxvZy50eHQKKworIyBVbml0IHRlc3QgLyBjb3Zl
cmFnZSByZXBvcnRzCisuY292ZXJhZ2UKKy50b3gKKy5ub3NlaWRzCisKKyMgRG9jcyBieSBTcGhp
bngKK19idWlsZAorCisjIEVudmlyb25tZW50CisuZW52CisKKyMgSURFIGZpbGVzCisuaWRlYQor
LnZzY29kZQorLkRTX1N0b3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy50cmF2
aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwOGZiMGM2N2U4ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvbW9yZS1pdGVydG9vbHMvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwyNiBAQAorc3Vkbzog
ZmFsc2UKKworbGFuZ3VhZ2U6ICJweXRob24iCisKK3B5dGhvbjoKKyAgICAtICIyLjciCisgICAg
LSAiMy40IgorICAgIC0gIjMuNSIKKyAgICAtICIzLjYiCisgICAgLSAiMy43LWRldiIKKyAgICAt
ICJweXB5LTUuNC4xIgorICAgIC0gInB5cHkzIgorCitpbnN0YWxsOgorICAgIC0gInBpcCBpbnN0
YWxsIC4iCisgICAgLSAicGlwIGluc3RhbGwgLVUgY292ZXJhbGxzIGZsYWtlOCIKKworc2NyaXB0
OgorICAgIC0gImNvdmVyYWdlIHJ1biAtLWluY2x1ZGU9J21vcmVfaXRlcnRvb2xzLyoucHknIC0t
b21pdD0nbW9yZV9pdGVydG9vbHMvdGVzdHMvKicgc2V0dXAucHkgdGVzdCIKKyAgICAtICJmbGFr
ZTggLiIKKworbm90aWZpY2F0aW9uczoKKyAgZW1haWw6IGZhbHNlCisKK2FmdGVyX3N1Y2Nlc3M6
CisgICAgLSAiY292ZXJhbGxzIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2Nz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmRjZTg4NGE4M2QuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3Mv
TWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvYXBpLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL2luZGV4LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9jcy9saWNlbnNlLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVy
dG9vbHMvZG9jcy9tYWtlLmJhdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9jcy90ZXN0aW5nLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9jcy92ZXJzaW9ucy5yc3QKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL19faW5pdF9fLnB5CmluZGV4IGE2
ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xz
L21vcmVfaXRlcnRvb2xzL3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9v
bHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9y
IG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9t
b3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
bW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDJhODE4YjU4MC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRv
b2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29s
cy9tb3JlX2l0ZXJ0b29scy90ZXN0cy90ZXN0X21vcmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xz
L21vcmVfaXRlcnRvb2xzL3Rlc3RzL3Rlc3RfcmVjaXBlcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9t
b3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE3ZDc5YjY4YTVlNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xz
L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy9tb3JlLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy9yZWNpcGVzLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0
b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc2NzMx
YWVkM2UxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvTUFOSUZFU1QuaW4KLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L21vcmUtaXRlcnRvb2xzL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL3NldHVwLmNm
ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL3Rv
eC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5jb3ZlcmFnZXJjIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvLmNvdmVyYWdlcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kYTIwNWU1YTE0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uY292ZXJh
Z2VyYwpAQCAtMCwwICsxLDkgQEAKK1tydW5dCiticmFuY2ggPSBUcnVlCitvbWl0ID0gcGFja2Fn
aW5nL19jb21wYXQucHkKKworW3JlcG9ydF0KK2V4Y2x1ZGVfbGluZXMgPQorICAgIHByYWdtYTog
bm8gY292ZXIKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgQGFiYy5hYnN0cmFjdHByb3Bl
cnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZmxha2U4IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcv
LmZsYWtlOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1YTM1YmU5
MmFmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5mbGFrZTgKQEAgLTAsMCAr
MSwzIEBACitbZmxha2U4XQorbWF4LWxpbmUtbGVuZ3RoID0gODgKK2lnbm9yZSA9IEUyMDMsVzUw
MyxXNTA0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy9kb2Nz
LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nLy5naXRodWIvd29ya2Zsb3dzL2RvY3MueW1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmMxNTczODc3OTAzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1Yi93b3JrZmxvd3MvZG9jcy55bWwKQEAgLTAs
MCArMSwzMCBAQAorbmFtZTogRG9jdW1lbnRhdGlvbgorCitvbjoKKyAgcHVsbF9yZXF1ZXN0Ogor
ICAgIHBhdGhzOgorICAgICAgLSAnZG9jcy8qKicKKyAgcHVzaDoKKyAgICBwYXRoczoKKyAgICAg
IC0gJ2RvY3MvKionCisKK2pvYnM6CisgIGRvY3M6CisgICAgbmFtZTogbm94IC1zIGRvY3MKKyAg
ICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisKKyAgICBzdGVwczoKKyAgICAtIHVzZXM6IGFjdGlv
bnMvY2hlY2tvdXRAdjEKKworICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAg
ICAgIG5hbWU6IEluc3RhbGwgUHl0aG9uCisgICAgICB3aXRoOgorICAgICAgICBweXRob24tdmVy
c2lvbjogJzMuOScKKworICAgIC0gbmFtZTogSW5zdGFsbCBkZXBlbmRlbmNpZXMKKyAgICAgIHJ1
bjogfAorICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcAorICAgICAg
ICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIG5veAorCisgICAgLSBuYW1lOiBCdWls
ZCBkb2N1bWVudGF0aW9uCisgICAgICBydW46IHB5dGhvbiAtbSBub3ggLXMgZG9jcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1Yi93b3JrZmxvd3MvbGludC55bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy9saW50LnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmQwM2YxNmZkNjgxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nLy5naXRodWIvd29ya2Zsb3dzL2xpbnQueW1sCkBAIC0wLDAgKzEsNTkgQEAKK25h
bWU6IExpbnRpbmcKKworb246CisgIHB1bGxfcmVxdWVzdDoKKyAgICBwYXRoczoKKyAgICAgIC0g
IioqLnB5IgorICBwdXNoOgorICAgIHBhdGhzOgorICAgICAgLSAiKioucHkiCisKK2pvYnM6Cisg
IGxpbnQ6CisgICAgbmFtZTogbm94IC1zIGxpbnQKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0
CisKKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MQorCisgICAg
ICAtIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICAgIG5hbWU6IEluc3RhbGwg
UHl0aG9uCisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246ICIzLjkiCisK
KyAgICAgIC0gbmFtZTogSW5zdGFsbCBkZXBlbmRlbmNpZXMKKyAgICAgICAgcnVuOiB8CisgICAg
ICAgICAgcHl0aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKKyAgICAgICAgICBweXRo
b24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIG5veAorCisgICAgICAtIG5hbWU6IFJ1biBgbm94
IC1zIGxpbnRgCisgICAgICAgIHJ1bjogcHl0aG9uIC1tIG5veCAtcyBsaW50CisKKyAgYnVpbGQ6
CisgICAgbmFtZTogQnVpbGQgc2Rpc3QgYW5kIHdoZWVsCisgICAgcnVucy1vbjogdWJ1bnR1LWxh
dGVzdAorICAgICMgTGludGluZyB2ZXJpZmllcyB0aGF0IHRoZSBwcm9qZWN0IGlzIGluIGFuIGFj
Y2VwdGFibGUgc3RhdGUgdG8gY3JlYXRlIGZpbGVzCisgICAgIyBmb3IgcmVsZWFzaW5nLgorICAg
ICMgQW5kIHRoaXMgYWN0aW9uIHNob3VsZCBiZSBydW4gd2hlbmV2ZXIgYSByZWxlYXNlIGlzIHJl
YWR5IHRvIGdvIHB1YmxpYyBhcworICAgICMgdGhlIHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgY2hh
bmdlZCBieSBlZGl0aW5nIF9fYWJvdXRfXy5weS4KKyAgICBuZWVkczogbGludAorCisgICAgc3Rl
cHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjEKKworICAgICAgLSB1c2VzOiBh
Y3Rpb25zL3NldHVwLXB5dGhvbkB2MgorICAgICAgICBuYW1lOiBJbnN0YWxsIFB5dGhvbgorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAiMy45IgorCisgICAgICAtIG5h
bWU6IEluc3RhbGwgZGVwZW5kZW5jaWVzCisgICAgICAgIHJ1bjogcHl0aG9uIC1tIHBpcCBpbnN0
YWxsIC0tdXBncmFkZSBidWlsZAorCisgICAgICAtIG5hbWU6IEJ1aWxkCisgICAgICAgIHJ1bjog
cHl0aG9uIC1tIGJ1aWxkCisKKyAgICAgIC0gbmFtZTogQXJjaGl2ZSBmaWxlcworICAgICAgICB1
c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQorICAgICAgICB3aXRoOgorICAgICAgICAg
IG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5naXRodWIv
d29ya2Zsb3dzL3Rlc3QueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMTgwMzEwNzE2ZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1
Yi93b3JrZmxvd3MvdGVzdC55bWwKQEAgLTAsMCArMSw3NSBAQAorbmFtZTogVGVzdAorCitvbjoK
KyAgcHVsbF9yZXF1ZXN0OgorICAgIHBhdGhzOgorICAgICAgLSAiLmdpdGh1Yi93b3JrZmxvd3Mv
dGVzdC55bWwiCisgICAgICAtICIqKi5weSIKKyAgcHVzaDoKKyAgICBwYXRoczoKKyAgICAgIC0g
Ii5naXRodWIvd29ya2Zsb3dzL3Rlc3QueW1sIgorICAgICAgLSAiKioucHkiCisKK2pvYnM6Cisg
IHRlc3Q6CisgICAgbmFtZTogJHt7IG1hdHJpeC5vcyB9fSAvICR7eyBtYXRyaXgucHl0aG9uX3Zl
cnNpb24gfX0KKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19LWxhdGVzdAorICAgIHN0cmF0
ZWd5OgorICAgICAgZmFpbC1mYXN0OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBvczog
W1VidW50dSwgV2luZG93cywgbWFjT1NdCisgICAgICAgICMgUHl0aG9uIDMuNCBpcyBub3QgYXZh
aWxhYmxlIGZyb20gYWN0aW9ucy9zZXR1cC1weXRob25AdjIuCisgICAgICAgIHB5dGhvbl92ZXJz
aW9uOgorICAgICAgICAgIFsiMi43IiwgIjMuNSIsICIzLjYiLCAiMy43IiwgIjMuOCIsICIzLjki
LCAicHlweTIiLCAicHlweTMiXQorICAgICAgICBleGNsdWRlOgorICAgICAgICAgICMgVGhpcyBp
cyBmYWlsaW5nIGR1ZSB0byBwaXAgbm90IGJlaW5nIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50
LgorICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGFja2FnaW5nL3J1bnMvNDI0
Nzg1ODcxI3N0ZXA6Nzo5CisgICAgICAgICAgLSBvczogd2luZG93cworICAgICAgICAgICAgcHl0
aG9uX3ZlcnNpb246IHB5cHkzCisKKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9j
aGVja291dEB2MQorCisgICAgICAtIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAg
ICAgIG5hbWU6IEluc3RhbGwgUHl0aG9uICR7eyBtYXRyaXgucHl0aG9uX3ZlcnNpb24gfX0KKyAg
ICAgICAgd2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob25f
dmVyc2lvbiB9fQorCisgICAgICAjIFNldCBgcHl0aG9uYCB0byBhIHJlY2VudCAzLnggdmVyc2lv
biBpZiB3ZSdyZSBub3QgdGVzdGluZyBQeXRob24gMy42Ky4KKyAgICAgICMgICAgV2h5PyBOb3gg
bmVlZHMgUHl0aG9uIDMuNSsgYW5kIGV2ZXJ5b25lIGxpa2VzIGYtc3RyaW5ncy4KKyAgICAgIC0g
dXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAgICAgICAgbmFtZTogSW5zdGFsbCBQeXRo
b24gMy54CisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMueAorICAg
ICAgICBpZjogPgorICAgICAgICAgICgKKyAgICAgICAgICAgIG1hdHJpeC5weXRob25fdmVyc2lv
biA9PSAnMi43JyB8fAorICAgICAgICAgICAgbWF0cml4LnB5dGhvbl92ZXJzaW9uID09ICdweXB5
MicgfHwKKyAgICAgICAgICAgIG1hdHJpeC5weXRob25fdmVyc2lvbiA9PSAnMy41JworICAgICAg
ICAgICkKKworICAgICAgIyBXb3JrYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVhY29kZXMv
bm94L2lzc3Vlcy8yNTAKKyAgICAgIC0gbmFtZTogV29ya2Fyb3VuZCBmb3IgV2luZG93cyBQeXRo
b24gMi43CisgICAgICAgICMgVGhpcyBpcyBpbiBQQVRILCBzbyBub3ggcmVzb2x2ZXMgdG8gaXQg
LSBidXQgdGhlbiBzdWJzZXF1ZW50IHN0ZXBzIGZhaWwuCisgICAgICAgIHJ1bjogcm0gQzovUHJv
Z3JhbURhdGEvQ2hvY29sYXRleS9iaW4vcHl0aG9uMi43LmV4ZQorICAgICAgICBzaGVsbDogYmFz
aAorICAgICAgICBpZjogcnVubmVyLm9zID09ICdXaW5kb3dzJyAmJiBtYXRyaXgucHl0aG9uX3Zl
cnNpb24gPT0gJzIuNycKKworICAgICAgLSBuYW1lOiBJbnN0YWxsIGRlcGVuZGVuY2llcworICAg
ICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBp
cAorICAgICAgICAgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCBub3gKKyAgICAgICAgc2hlbGw6IGJh
c2gKKworICAgICAgLSBuYW1lOiBSdW4gbm94CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHB5
dGhvbiAtbSBub3ggLS1lcnJvci1vbi1taXNzaW5nLWludGVycHJldGVycyAtcyB0ZXN0cy0ke3sg
bWF0cml4LnB5dGhvbl92ZXJzaW9uIH19CisgICAgICAgIHNoZWxsOiBiYXNoCisgICAgICAgIGlm
OiBtYXRyaXgucHl0aG9uX3ZlcnNpb24gIT0gJ3B5cHkyJworCisgICAgICAjIEJpbmFyeSBpcyBu
YW1lZCAncHlweScsIGJ1dCBzZXR1cC1weXRob24gc3BlY2lmaWVzIGl0IGFzICdweXB5MicuCisg
ICAgICAtIG5hbWU6IFJ1biBub3ggZm9yIHB5cHkyCisgICAgICAgIHJ1bjogfAorICAgICAgICAg
IHB5dGhvbiAtbSBub3ggLS1lcnJvci1vbi1taXNzaW5nLWludGVycHJldGVycyAtcyB0ZXN0cy1w
eXB5CisgICAgICAgIHNoZWxsOiBiYXNoCisgICAgICAgIGlmOiBtYXRyaXgucHl0aG9uX3ZlcnNp
b24gPT0gJ3B5cHkyJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGlnbm9yZSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi4wNWU1NTRhNjRjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8u
Z2l0aWdub3JlCkBAIC0wLDAgKzEsMTggQEAKKyouZWdnLWluZm8vCisqLmVnZworKi5weVtjb10K
KworLltudF1veC8KKy5jYWNoZS8KKy5jb3ZlcmFnZQorLmlkZWEKKy52ZW52KgorLnZzY29kZS8K
KworLm15cHlfY2FjaGUvCisucHl0ZXN0X2NhY2hlLworX19weWNhY2hlX18vCitfYnVpbGQvCiti
dWlsZC8KK2Rpc3QvCitodG1sY292LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnByZS1j
b21taXQtY29uZmlnLnlhbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8ucHJlLWNvbW1pdC1jb25maWcueWFt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjNzc2NWVkZDEwOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5wcmUtY29tbWl0LWNvbmZpZy55YW1s
CkBAIC0wLDAgKzEsMzIgQEAKK3JlcG9zOgorICAtIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9w
cmUtY29tbWl0L3ByZS1jb21taXQtaG9va3MKKyAgICByZXY6IHYyLjMuMAorICAgIGhvb2tzOgor
ICAgICAgLSBpZDogY2hlY2stdG9tbAorICAgICAgLSBpZDogY2hlY2steWFtbAorICAgICAgLSBp
ZDogZW5kLW9mLWZpbGUtZml4ZXIKKyAgICAgIC0gaWQ6IHRyYWlsaW5nLXdoaXRlc3BhY2UKKwor
ICAtIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUtY29tbWl0L21pcnJvcnMtbXlweQorICAg
IHJldjogdjAuNzkwCisgICAgaG9va3M6CisgICAgICAtIGlkOiBteXB5CisgICAgICAgIGV4Y2x1
ZGU6ICdeKGRvY3N8dGFza3N8dGVzdHMpfHNldHVwXC5weScKKyAgICAgICAgYXJnczogW10KKyAg
ICAgIC0gaWQ6IG15cHkKKyAgICAgICAgbmFtZTogbXlweSBmb3IgUHl0aG9uIDIKKyAgICAgICAg
ZXhjbHVkZTogJ14oZG9jc3x0YXNrc3x0ZXN0cyl8c2V0dXBcLnB5fG5veGZpbGVcLnB5JworICAg
ICAgICBhcmdzOiBbIi0tcHkyIl0KKworICAtIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wc2Yv
YmxhY2sKKyAgICByZXY6IDE5LjNiMAorICAgIGhvb2tzOgorICAgICAgLSBpZDogYmxhY2sKKwor
ICAtIHJlcG86IGh0dHBzOi8vZ2l0bGFiLmNvbS9QeUNRQS9mbGFrZTgKKyAgICByZXY6ICIzLjcu
OCIKKyAgICBob29rczoKKyAgICAgIC0gaWQ6IGZsYWtlOAorICAgICAgICBhZGRpdGlvbmFsX2Rl
cGVuZGVuY2llczogWyJwZXA4LW5hbWluZyJdCisgICAgICAgICMgSWdub3JlIGFsbCBmb3JtYXQt
cmVsYXRlZCBjaGVja3MgYXMgQmxhY2sgdGFrZXMgY2FyZSBvZiB0aG9zZS4KKyAgICAgICAgYXJn
czogWyItLWlnbm9yZSIsICJFMixXNSIsICItLXNlbGVjdCIsICJFLFcsRixOIl0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nLy5yZWFkdGhlZG9jcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8ucmVh
ZHRoZWRvY3MueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDhh
YzIxNjY4Nzk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnJlYWR0aGVkb2Nz
LnltbApAQCAtMCwwICsxLDE1IEBACit2ZXJzaW9uOiAyCisKK2J1aWxkOgorICBpbWFnZTogbGF0
ZXN0CisKK2Zvcm1hdHM6IFtwZGZdCitzcGhpbng6CisgIGNvbmZpZ3VyYXRpb246IGRvY3MvY29u
Zi5weQorCitweXRob246CisgIHZlcnNpb246IDMuOAorICBpbnN0YWxsOgorICAgIC0gcmVxdWly
ZW1lbnRzOiBkb2NzL3JlcXVpcmVtZW50cy50eHQKKyAgICAtIG1ldGhvZDogcGlwCisgICAgICBw
YXRoOiAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8udHJhdmlzLnltbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uN2YwOTczYWUyYzEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnRyYXZp
cy55bWwKQEAgLTAsMCArMSw0MiBAQAorbGFuZ3VhZ2U6IHB5dGhvbgorY2FjaGU6IHBpcAorcHl0
aG9uOiAzLjgKKworbWF0cml4OgorICBpbmNsdWRlOgorICAgIC0gcHl0aG9uOiAyLjcKKyAgICAg
IGVudjogTk9YU0VTU0lPTj10ZXN0cy0yLjcKKyAgICAtIHB5dGhvbjogcHlweQorICAgICAgZW52
OiBOT1hTRVNTSU9OPXRlc3RzLXB5cHkKKyAgICAtIHB5dGhvbjogcHlweTMKKyAgICAgIGVudjog
Tk9YU0VTU0lPTj10ZXN0cy1weXB5MworICAgIC0gcHl0aG9uOiAzLjQKKyAgICAgIGVudjogTk9Y
U0VTU0lPTj10ZXN0cy0zLjQKKyAgICAtIHB5dGhvbjogMy41CisgICAgICBlbnY6IE5PWFNFU1NJ
T049dGVzdHMtMy41CisgICAgLSBweXRob246IDMuNgorICAgICAgZW52OiBOT1hTRVNTSU9OPXRl
c3RzLTMuNgorICAgIC0gcHl0aG9uOiAzLjcKKyAgICAgIGVudjogTk9YU0VTU0lPTj10ZXN0cy0z
LjcKKyAgICAtIHB5dGhvbjogMy44CisgICAgICBlbnY6IE5PWFNFU1NJT049dGVzdHMtMy44Cisg
ICAgLSBlbnY6IE5PWFNFU1NJT049bGludAorICAgIC0gZW52OiBOT1hTRVNTSU9OPWRvY3MKKwor
aW5zdGFsbDoKKyAgLSBweWVudiBnbG9iYWwgMy43LjEKKyAgLSBweXRob24zLjcgLW0gcGlwIGlu
c3RhbGwgbm94CisKK3NjcmlwdDoKKyAgLSBweXRob24zLjcgLW0gbm94CisKK25vdGlmaWNhdGlv
bnM6CisgIGlyYzoKKyAgICBjaGFubmVsczoKKyAgICAgICMgVGhpcyBpcyBzZXQgdG8gYSBzZWN1
cmUgdmFyaWFibGUgdG8gcHJldmVudCBmb3JrcyBmcm9tIG5vdGlmeWluZyB0aGUKKyAgICAgICMg
SVJDIGNoYW5uZWwgd2hlbmV2ZXIgdGhleSBmYWlsIGEgYnVpbGQuIFRoaXMgY2FuIGJlIHJlbW92
ZWQgd2hlbiB0cmF2aXMKKyAgICAgICMgaW1wbGVtZW50cyBodHRwczovL2dpdGh1Yi5jb20vdHJh
dmlzLWNpL3RyYXZpcy1jaS9pc3N1ZXMvMTA5NC4KKyAgICAgICMgVGhlIGFjdHVhbCB2YWx1ZSBo
ZXJlIGlzOiBpcmMuZnJlZW5vZGUub3JnI3B5cGEtZGV2CisgICAgICAtIHNlY3VyZTogIkJyNmFZ
QllrakwxN2ZCWjYrQWN6Q2thQk1XUUFZNlRvOElINHpxaEhyT1JYQVdxNHpldUM0VnlDWjRNWG1E
emswV2JBM2gzRWE3dTlrb2RVZjFzVksxaDBxN0hYNjZwOHFtRnlUbmNRb0xGZ28yTEYveDFhVTFG
R1dLRERTWDVLNnFLT3pVS3JIVWhReVZxK3VBdVJWVW03YkpoSkwwL3ZpUHdFb2grYk9Obz0iCisg
ICAgdXNlX25vdGljZTogdHJ1ZQorICAgIHNraXBfam9pbjogdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvQ0hBTkdFTE9HLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL0NIQU5HRUxPRy5yc3QK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YjI3NWIwNjQ2MGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9DSEFOR0VMT0cucnN0CkBAIC0wLDAgKzEs
Mjk1IEBACitDaGFuZ2Vsb2cKKy0tLS0tLS0tLQorCisyMC43IC0gMjAyMC0xMS0yOAorfn5+fn5+
fn5+fn5+fn5+fn4KKworTm8gdW5yZWxlYXNlZCBjaGFuZ2VzLgorCisyMC42IC0gMjAyMC0xMS0y
OAorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXggZmxpdCBjb25maWd1cmF0aW9uLCB0byBpbmNs
dWRlIExJQ0VOU0UgZmlsZXMgKDppc3N1ZTpgMzU3YCkKKworMjAuNSAtIDIwMjAtMTEtMjcKK35+
fn5+fn5+fn5+fn5+fn5+CisKKyogT2ZmaWNpYWxseSBzdXBwb3J0IFB5dGhvbiAzLjkgKDppc3N1
ZTpgMzQzYCkKKyogRGVwcmVjYXRlIHRoZSBgYExlZ2FjeVZlcnNpb25gYCBhbmQgYGBMZWdhY3lT
cGVjaWZpZXJgYCBjbGFzc2VzICg6aXNzdWU6YDMyMWApCisqIEhhbmRsZSBgYE9TRXJyb3JgYCBv
biBub24tZHluYW1pYyBleGVjdXRhYmxlcyB3aGVuIGF0dGVtcHRpbmcgdG8gcmVzb2x2ZQorICB0
aGUgZ2xpYmMgdmVyc2lvbiBzdHJpbmcuCisKKzIwLjQgLSAyMDIwLTA1LTE5Cit+fn5+fn5+fn5+
fn5+fn5+fgorCisqIENhbm9uaWNhbGl6ZSB2ZXJzaW9uIGJlZm9yZSBjb21wYXJpbmcgc3BlY2lm
aWVycy4gKDppc3N1ZTpgMjgyYCkKKyogQ2hhbmdlIHR5cGUgaGludCBmb3IgYGBjYW5vbmljYWxp
emVfbmFtZWBgIHRvIHJldHVybgorICBgYHBhY2thZ2luZy51dGlscy5Ob3JtYWxpemVkTmFtZWBg
LgorICBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiBzdGF0aWMgdHlwaW5nIHRvb2xzIChsaWtlIG15
cHkpIHRvIGRldGVjdCBtaXhpbmcgb2YKKyAgbm9ybWFsaXplZCBhbmQgdW4tbm9ybWFsaXplZCBu
YW1lcy4KKworMjAuMyAtIDIwMjAtMDMtMDUKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogRml4IGNo
YW5nZWxvZyBmb3IgMjAuMi4KKworMjAuMiAtIDIwMjAtMDMtMDUKK35+fn5+fn5+fn5+fn5+fn5+
CisKKyogRml4IGEgYnVnIHRoYXQgY2F1c2VkIGEgMzItYml0IE9TIHRoYXQgcnVucyBvbiBhIDY0
LWJpdCBBUk0gQ1BVIChlLmcuIEFSTS12OCwKKyAgYWFyY2g2NCksIHRvIHJlcG9ydCB0aGUgd3Jv
bmcgYml0bmVzcy4KKworMjAuMSAtIDIwMjAtMDEtMjQKK35+fn5+fn5+fn5+fn5+fn5+fn4KKwor
KiBGaXggYSBidWcgY2F1c2VkIGJ5IHJldXNlIG9mIGFuIGV4aGF1c3RlZCBpdGVyYXRvci4gKDpp
c3N1ZTpgMjU3YCkKKworMjAuMCAtIDIwMjAtMDEtMDYKK35+fn5+fn5+fn5+fn5+fn5+CisKKyog
QWRkIHR5cGUgaGludHMgKDppc3N1ZTpgMTkxYCkKKworKiBBZGQgcHJvcGVyIHRyb3ZlIGNsYXNz
aWZpZXJzIGZvciBQeVB5IHN1cHBvcnQgKDppc3N1ZTpgMTk4YCkKKworKiBTY2FsZSBiYWNrIGRl
cGVuZGluZyBvbiBgYGN0eXBlc2BgIGZvciBtYW55bGludXggc3VwcG9ydCBkZXRlY3Rpb24gKDpp
c3N1ZTpgMTcxYCkKKworKiBVc2UgYGBzeXMuaW1wbGVtZW50YXRpb24ubmFtZWBgIHdoZXJlIGFw
cHJvcHJpYXRlIGZvciBgYHBhY2thZ2luZy50YWdzYGAgKDppc3N1ZTpgMTkzYCkKKworKiBFeHBh
bmQgdXBvbiB0aGUgQVBJIHByb3ZkZWQgYnkgYGBwYWNrYWdpbmcudGFnc2BgOiBgYGludGVycHJl
dGVyX25hbWUoKWBgLCBgYG1hY19wbGF0Zm9ybXMoKWBgLCBgYGNvbXBhdGlibGVfdGFncygpYGAs
IGBgY3B5dGhvbl90YWdzKClgYCwgYGBnZW5lcmljX3RhZ3MoKWBgICg6aXNzdWU6YDE4N2ApCisK
KyogT2ZmaWNpYWxseSBzdXBwb3J0IFB5dGhvbiAzLjggKDppc3N1ZTpgMjMyYCkKKworKiBBZGQg
YGBtYWpvcmBgLCBgYG1pbm9yYGAsIGFuZCBgYG1pY3JvYGAgYWxpYXNlcyB0byBgYHBhY2thZ2lu
Zy52ZXJzaW9uLlZlcnNpb25gYCAoOmlzc3VlOmAyMjZgKQorCisqIFByb3Blcmx5IG1hcmsgYGBw
YWNrYWdpbmdgYCBoYXMgYmVpbmcgZnVsbHkgdHlwZWQgYnkgYWRkaW5nIGEgYHB5LnR5cGVkYCBm
aWxlICg6aXNzdWU6YDIyNmApCisKKzE5LjIgLSAyMDE5LTA5LTE4Cit+fn5+fn5+fn5+fn5+fn5+
fgorCisqIFJlbW92ZSBkZXBlbmRlbmN5IG9uIGBgYXR0cnNgYCAoOmlzc3VlOmAxNzhgLCA6aXNz
dWU6YDE3OWApCisKKyogVXNlIGFwcHJvcHJpYXRlIGZhbGxiYWNrcyBmb3IgQ1B5dGhvbiBBQkkg
dGFnICg6aXNzdWU6YDE4MWAsIDppc3N1ZTpgMTg1YCkKKworKiBBZGQgbWFueWxpbnV4MjAxNCBz
dXBwb3J0ICg6aXNzdWU6YDE4NmApCisKKyogSW1wcm92ZSBBQkkgZGV0ZWN0aW9uICg6aXNzdWU6
YDE4MWApCisKKyogUHJvcGVybHkgaGFuZGxlIGRlYnVnIHdoZWVscyBmb3IgUHl0aG9uIDMuOCAo
Omlzc3VlOmAxNzJgKQorCisqIEltcHJvdmUgZGV0ZWN0aW9uIG9mIGRlYnVnIGJ1aWxkcyBvbiBX
aW5kb3dzICg6aXNzdWU6YDE5NGApCisKKzE5LjEgLSAyMDE5LTA3LTMwCit+fn5+fn5+fn5+fn5+
fn5+fgorCisqIEFkZCB0aGUgYGBwYWNrYWdpbmcudGFnc2BgIG1vZHVsZS4gKDppc3N1ZTpgMTU2
YCkKKworKiBDb3JyZWN0bHkgaGFuZGxlIHR3by1kaWdpdCB2ZXJzaW9ucyBpbiBgYHB5dGhvbl92
ZXJzaW9uYGAgKDppc3N1ZTpgMTE5YCkKKworCisxOS4wIC0gMjAxOS0wMS0yMAorfn5+fn5+fn5+
fn5+fn5+fn4KKworKiBGaXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFBFUCA1MDggZGlyZWN0
IFVSTCByZXF1aXJlbWVudHMgd2l0aCBtYXJrZXJzLgorCisqIEJldHRlciBoYW5kbGluZyBvZiBm
aWxlIFVSTHMKKworICBUaGlzIGFsbG93cyBmb3IgdXNpbmcgYGBmaWxlOi8vL2Fic29sdXRlL3Bh
dGhgYCwgd2hpY2ggd2FzIHByZXZpb3VzbHkKKyAgcHJldmVudGVkIGR1ZSB0byB0aGUgbWlzc2lu
ZyBgYG5ldGxvY2BgLgorCisgIFRoaXMgYWxsb3dzIGZvciBhbGwgZmlsZSBVUkxzIHRoYXQgYGB1
cmx1bnBhcnNlYGAgdHVybnMgYmFjayBpbnRvIHRoZQorICBvcmlnaW5hbCBVUkwgdG8gYmUgdmFs
aWQuCisKKworMTguMCAtIDIwMTgtMDktMjYKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogSW1wcm92
ZSBlcnJvciBtZXNzYWdlcyB3aGVuIGludmFsaWQgcmVxdWlyZW1lbnRzIGFyZSBnaXZlbi4gKDpp
c3N1ZTpgMTI5YCkKKworCisxNy4xIC0gMjAxNy0wMi0yOAorfn5+fn5+fn5+fn5+fn5+fn4KKwor
KiBGaXggYGB1dGlscy5jYW5vbmljYWxpemVfdmVyc2lvbmBgIHdoZW4gc3VwcGx5aW5nIG5vbiBQ
RVAgNDQwIHZlcnNpb25zLgorCisKKzE3LjAgLSAyMDE3LTAyLTI4Cit+fn5+fn5+fn5+fn5+fn5+
fgorCisqIERyb3Agc3VwcG9ydCBmb3IgcHl0aG9uIDIuNiwgMy4yLCBhbmQgMy4zLgorCisqIERl
ZmluZSBtaW5pbWFsIHB5cGFyc2luZyB2ZXJzaW9uIHRvIDIuMC4yICg6aXNzdWU6YDkxYCkuCisK
KyogQWRkIGBgZXBvY2hgYCwgYGByZWxlYXNlYGAsIGBgcHJlYGAsIGBgZGV2YGAsIGFuZCBgYHBv
c3RgYCBhdHRyaWJ1dGVzIHRvCisgIGBgVmVyc2lvbmBgIGFuZCBgYExlZ2FjeVZlcnNpb25gYCAo
Omlzc3VlOmAzNGApLgorCisqIEFkZCBgYFZlcnNpb24oKS5pc19kZXZyZWxlYXNlYGAgYW5kIGBg
TGVnYWN5VmVyc2lvbigpLmlzX2RldnJlbGVhc2VgYCB0bworICBtYWtlIGl0IGVhc3kgdG8gZGV0
ZXJtaW5lIGlmIGEgcmVsZWFzZSBpcyBhIGRldmVsb3BtZW50IHJlbGVhc2UuCisKKyogQWRkIGBg
dXRpbHMuY2Fub25pY2FsaXplX3ZlcnNpb25gYCB0byBjYW5vbmljYWxpemUgdmVyc2lvbiBzdHJp
bmdzIG9yCisgIGBgVmVyc2lvbmBgIGluc3RhbmNlcyAoOmlzc3VlOmAxMjFgKS4KKworCisxNi44
IC0gMjAxNi0xMC0yOQorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXggbWFya2VycyB0aGF0IHV0
aWxpemUgYGBpbmBgIHNvIHRoYXQgdGhleSByZW5kZXIgY29ycmVjdGx5LgorCisqIEZpeCBhbiBl
cnJvbmVvdXMgdGVzdCBvbiBQeXRob24gUkMgcmVsZWFzZXMuCisKKworMTYuNyAtIDIwMTYtMDQt
MjMKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogQWRkIHN1cHBvcnQgZm9yIHRoZSBkZXByZWNhdGVk
IGBgcHl0aG9uX2ltcGxlbWVudGF0aW9uYGAgbWFya2VyIHdoaWNoIHdhcworICBhbiB1bmRvY3Vt
ZW50ZWQgc2V0dXB0b29scyBtYXJrZXIgaW4gYWRkaXRpb24gdG8gdGhlIG5ld2VyIG1hcmtlcnMu
CisKKworMTYuNiAtIDIwMTYtMDMtMjkKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogQWRkIHN1cHBv
cnQgZm9yIHRoZSBkZXByZWNhdGVkLCBQRVAgMzQ1IGVudmlyb25tZW50IG1hcmtlcnMgaW4gYWRk
aXRpb24gdG8KKyAgdGhlIG5ld2VyIG1hcmtlcnMuCisKKworMTYuNSAtIDIwMTYtMDItMjYKK35+
fn5+fn5+fn5+fn5+fn5+CisKKyogRml4IGEgcmVncmVzc2lvbiBpbiBwYXJzaW5nIHJlcXVpcmVt
ZW50cyB3aXRoIHdoaXRlc3BhY2VzIGJldHdlZW4gdGhlIGNvbW1hCisgIHNlcGFyYXRvcnMuCisK
KworMTYuNCAtIDIwMTYtMDItMjIKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogRml4IGEgcmVncmVz
c2lvbiBpbiBwYXJzaW5nIHJlcXVpcmVtZW50cyBsaWtlIGBgZm9vICg9PTQpYGAuCisKKworMTYu
MyAtIDIwMTYtMDItMjEKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogRml4IGEgYnVnIHdoZXJlIGBg
cGFja2FnaW5nLnJlcXVpcmVtZW50czpSZXF1aXJlbWVudGBgIHdhcyBvdmVybHkgc3RyaWN0IHdo
ZW4KKyAgbWF0Y2hpbmcgbGVnYWN5IHJlcXVpcmVtZW50cy4KKworCisxNi4yIC0gMjAxNi0wMi0w
OQorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBBZGQgYSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMg
dGhlIG5hbWUgY2Fub25pY2FsaXphdGlvbiBmcm9tIFBFUCA1MDMuCisKKworMTYuMSAtIDIwMTYt
MDItMDcKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogSW1wbGVtZW50IHJlcXVpcmVtZW50IHNwZWNp
ZmllcnMgZnJvbSBQRVAgNTA4LgorCisKKzE2LjAgLSAyMDE2LTAxLTE5Cit+fn5+fn5+fn5+fn5+
fn5+fgorCisqIFJlbGljZW5zZSBzbyB0aGF0IHBhY2thZ2luZyBpcyBhdmFpbGFibGUgdW5kZXIg
KmVpdGhlciogdGhlIEFwYWNoZSBMaWNlbnNlLAorICBWZXJzaW9uIDIuMCBvciBhIDIgQ2xhdXNl
IEJTRCBsaWNlbnNlLgorCisqIFN1cHBvcnQgaW5zdGFsbGF0aW9uIG9mIHBhY2thZ2luZyB3aGVu
IG9ubHkgZGlzdHV0aWxzIGlzIGF2YWlsYWJsZS4KKworKiBGaXggYGA9PWBgIGNvbXBhcmlzb24g
d2hlbiB0aGVyZSBpcyBhIHByZWZpeCBhbmQgYSBsb2NhbCB2ZXJzaW9uIGluIHBsYXkuCisgICg6
aXNzdWU6YDQxYCkuCisKKyogSW1wbGVtZW50IGVudmlyb25tZW50IG1hcmtlcnMgZnJvbSBQRVAg
NTA4LgorCisKKzE1LjMgLSAyMDE1LTA4LTAxCit+fn5+fn5+fn5+fn5+fn5+fgorCisqIE5vcm1h
bGl6ZSBwb3N0LXJlbGVhc2Ugc3BlbGxpbmdzIGZvciByZXYvciBwcmVmaXhlcy4gOmlzc3VlOmAz
NWAKKworCisxNS4yIC0gMjAxNS0wNS0xMworfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXggYW4g
ZXJyb3Igd2hlcmUgdGhlIGFyYml0YXJ5IHNwZWNpZmllciAoYGA9PT1gYCkgd2FzIG5vdCBjb3Jy
ZWN0bHkKKyAgYWxsb3dpbmcgcHJlLXJlbGVhc2VzIHdoZW4gaXQgd2FzIGJlaW5nIHVzZWQuCisK
KyogRXhwb3NlIHRoZSBzcGVjaWZpZXIgYW5kIHZlcnNpb24gcGFydHMgdGhyb3VnaCBwcm9wZXJ0
aWVzIG9uIHRoZQorICBgYFNwZWNpZmllcmBgIGNsYXNzZXMuCisKKyogQWxsb3cgaXRlcmF0aW5n
IG92ZXIgdGhlIGBgU3BlY2lmaWVyU2V0YGAgdG8gZ2V0IGFjY2VzcyB0byBhbGwgb2YgdGhlCisg
IGBgU3BlY2lmaWVyYGAgaW5zdGFuY2VzLgorCisqIEFsbG93IHRlc3RpbmcgaWYgYSB2ZXJzaW9u
IGlzIGNvbnRhaW5lZCB3aXRoaW4gYSBzcGVjaWZpZXIgdmlhIHRoZSBgYGluYGAKKyAgb3BlcmF0
b3IuCisKKworMTUuMSAtIDIwMTUtMDQtMTMKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogRml4IGEg
bG9naWMgZXJyb3IgdGhhdCB3YXMgY2F1c2luZyBpbmNvbnNpc3RlbnQgYW5zd2VycyBhYm91dCB3
aGV0aGVyIG9yIG5vdAorICBhIHByZS1yZWxlYXNlIHdhcyBjb250YWluZWQgd2l0aGluIGEgYGBT
cGVjaWZpZXJTZXRgYCBvciBub3QuCisKKworMTUuMCAtIDIwMTUtMDEtMDIKK35+fn5+fn5+fn5+
fn5+fn5+CisKKyogQWRkIGBgVmVyc2lvbigpLmlzX3Bvc3RyZWxlYXNlYGAgYW5kIGBgTGVnYWN5
VmVyc2lvbigpLmlzX3Bvc3RyZWxlYXNlYGAgdG8KKyAgbWFrZSBpdCBlYXN5IHRvIGRldGVybWlu
ZSBpZiBhIHJlbGVhc2UgaXMgYSBwb3N0IHJlbGVhc2UuCisKKyogQWRkIGBgVmVyc2lvbigpLmJh
c2VfdmVyc2lvbmBgIGFuZCBgYExlZ2FjeVZlcnNpb24oKS5iYXNlX3ZlcnNpb25gYCB0byBtYWtl
CisgIGl0IGVhc3kgdG8gZ2V0IHRoZSBwdWJsaWMgdmVyc2lvbiB3aXRob3V0IGFueSBwcmUgb3Ig
cG9zdCByZWxlYXNlIG1hcmtlcnMuCisKKyogU3VwcG9ydCB0aGUgdXBkYXRlIHRvIFBFUCA0NDAg
d2hpY2ggcmVtb3ZlZCB0aGUgaW1wbGllZCBgYCE9Vi4qYGAgd2hlbiB1c2luZworICBlaXRoZXIg
YGA+VmBgIG9yIGBgPFZgYCBhbmQgd2hpY2ggaW5zdGVhZCBzcGVjaWFsIGNhc2VkIHRoZSBoYW5k
bGluZyBvZgorICBwcmUtcmVsZWFzZXMsIHBvc3QtcmVsZWFzZXMsIGFuZCBsb2NhbCB2ZXJzaW9u
cyB3aGVuIHVzaW5nIGBgPlZgYCBvciBgYDxWYGAuCisKKworMTQuNSAtIDIwMTQtMTItMTcKK35+
fn5+fn5+fn5+fn5+fn5+CisKKyogTm9ybWFsaXplIHJlbGVhc2UgY2FuZGlkYXRlcyBhcyBgYHJj
YGAgaW5zdGVhZCBvZiBgYGNgYC4KKworKiBFeHBvc2UgdGhlIGBgVkVSU0lPTl9QQVRURVJOYGAg
Y29uc3RhbnQsIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nCisgIGEgdmFsaWQgdmVyc2lv
bi4KKworCisxNC40IC0gMjAxNC0xMi0xNQorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBFbnN1cmUg
dGhhdCB2ZXJzaW9ucyBhcmUgbm9ybWFsaXplZCBiZWZvcmUgY29tcGFyaXNvbiB3aGVuIHVzZWQg
aW4gYQorICBzcGVjaWZpZXIgd2l0aCBhIGxlc3MgdGhhbiAoYGA8YGApIG9yIGdyZWF0ZXIgdGhh
biAoYGA+YGApIG9wZXJhdG9yLgorCisKKzE0LjMgLSAyMDE0LTExLTE5Cit+fn5+fn5+fn5+fn5+
fn5+fgorCisqICoqQkFDS1dBUkRTIElOQ09NUEFUSUJMRSoqIFJlZmFjdG9yIHNwZWNpZmllciBz
dXBwb3J0IHNvIHRoYXQgaXQgY2FuIHNhbmVseQorICBoYW5kbGUgbGVnYWN5IHNwZWNpZmllcnMg
YXMgd2VsbCBhcyBQRVAgNDQwIHNwZWNpZmllcnMuCisKKyogKipCQUNLV0FSRFMgSU5DT01QQVRJ
QkxFKiogTW92ZSB0aGUgc3BlY2lmaWVyIHN1cHBvcnQgb3V0IG9mCisgIGBgcGFja2FnaW5nLnZl
cnNpb25gYCBpbnRvIGBgcGFja2FnaW5nLnNwZWNpZmllcnNgYC4KKworCisxNC4yIC0gMjAxNC0w
OS0xMAorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBBZGQgcHJlcmVsZWFzZSBzdXBwb3J0IHRvIGBg
U3BlY2lmaWVyYGAuCisqIFJlbW92ZSB0aGUgYWJpbGl0eSB0byBkbyBgYGl0ZW0gaW4gU3BlY2lm
aWVyKClgYCBhbmQgcmVwbGFjZSBpdCB3aXRoCisgIGBgU3BlY2lmaWVyKCkuY29udGFpbnMoaXRl
bSlgYCBpbiBvcmRlciB0byBhbGxvdyBmbGFncyB0aGF0IHNpZ25hbCBpZiBhCisgIHByZXJlbGVh
c2Ugc2hvdWxkIGJlIGFjY2VwdGVkIG9yIG5vdC4KKyogQWRkIGEgbWV0aG9kIGBgU3BlY2lmaWVy
KCkuZmlsdGVyKClgYCB3aGljaCB3aWxsIHRha2UgYW4gaXRlcmFibGUgYW5kIHJldHVybnMKKyAg
YW4gaXRlcmFibGUgd2l0aCBpdGVtcyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWVyIGZp
bHRlcmVkIG91dC4KKworCisxNC4xIC0gMjAxNC0wOS0wOAorfn5+fn5+fn5+fn5+fn5+fn4KKwor
KiBBbGxvdyBgYExlZ2FjeVZlcnNpb25gYCBhbmQgYGBWZXJzaW9uYGAgdG8gYmUgc29ydGVkIHRv
Z2V0aGVyLgorKiBBZGQgYGBwYWNrYWdpbmcudmVyc2lvbi5wYXJzZSgpYGAgdG8gZW5hYmxlIGVh
c2lseSBwYXJzaW5nIGEgdmVyc2lvbiBzdHJpbmcKKyAgYXMgZWl0aGVyIGEgYGBWZXJzaW9uYGAg
b3IgYSBgYExlZ2FjeVZlcnNpb25gYCBkZXBlbmRpbmcgb24gaXQncyBQRVAgNDQwCisgIHZhbGlk
aXR5LgorCisKKzE0LjAgLSAyMDE0LTA5LTA1Cit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEluaXRp
YWwgcmVsZWFzZS4KKworCisuLiBfYG1hc3RlcmA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3Bh
Y2thZ2luZy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL0NPTlRSSUJVVElORy5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy9DT05UUklCVVRJTkcucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZDlkNzBlYzA0N2FhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvQ09OVFJJQlVUSU5HLnJzdApAQCAtMCwwICsxLDIzIEBACitDb250cmlidXRpbmcgdG8g
cGFja2FnaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIGFuIG9wZW4gc291cmNl
IHByb2plY3QsIHBhY2thZ2luZyB3ZWxjb21lcyBjb250cmlidXRpb25zIG9mIG1hbnkgZm9ybXMu
CisKK0V4YW1wbGVzIG9mIGNvbnRyaWJ1dGlvbnMgaW5jbHVkZToKKworKiBDb2RlIHBhdGNoZXMK
KyogRG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudHMKKyogQnVnIHJlcG9ydHMgYW5kIHBhdGNoIHJl
dmlld3MKKworRXh0ZW5zaXZlIGNvbnRyaWJ1dGlvbiBndWlkZWxpbmVzIGFyZSBhdmFpbGFibGUg
aW4gdGhlIHJlcG9zaXRvcnkgYXQKK2BgZG9jcy9kZXZlbG9wbWVudC9pbmRleC5yc3RgYCwgb3Ig
b25saW5lIGF0OgorCitodHRwczovL3BhY2thZ2luZy5weXBhLmlvL2VuL2xhdGVzdC9kZXZlbG9w
bWVudC8KKworU2VjdXJpdHkgaXNzdWVzCistLS0tLS0tLS0tLS0tLS0KKworVG8gcmVwb3J0IGEg
c2VjdXJpdHkgaXNzdWUsIHBsZWFzZSBmb2xsb3cgdGhlIHNwZWNpYWwgYHNlY3VyaXR5IHJlcG9y
dGluZworZ3VpZGVsaW5lc2BfLCBkbyBub3QgcmVwb3J0IHRoZW0gaW4gdGhlIHB1YmxpYyBpc3N1
ZSB0cmFja2VyLgorCisuLiBfYHNlY3VyaXR5IHJlcG9ydGluZyBndWlkZWxpbmVzYDogaHR0cHM6
Ly9wYWNrYWdpbmcucHlwYS5pby9lbi9sYXRlc3Qvc2VjdXJpdHkvCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvTElDRU5TRQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZmNjJkNDRlNGVmNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL0xJQ0VOU0UKQEAgLTAsMCArMSwzIEBACitUaGlzIHNvZnR3YXJl
IGlzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiAqZWl0aGVyKiBvZiB0aGUgbGlj
ZW5zZXMKK2ZvdW5kIGluIExJQ0VOU0UuQVBBQ0hFIG9yIExJQ0VOU0UuQlNELiBDb250cmlidXRp
b25zIHRvIHRoaXMgc29mdHdhcmUgaXMgbWFkZQordW5kZXIgdGhlIHRlcm1zIG9mICpib3RoKiB0
aGVzZSBsaWNlbnNlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL0xJQ0VOU0UuQVBBQ0hF
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvTElDRU5TRS5BUEFDSEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5mNDMzYjFhNTNmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9MSUNFTlNFLkFQQUNIRQpAQCAtMCwwICsxLDE3NyBAQAorCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9O
UyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5p
dGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0
aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRl
ZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAg
IkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhv
cml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUg
TGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2Yg
dGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250
cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJv
bCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwK
KyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3Qs
IHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRp
dHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25l
cnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3Rh
bmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0
eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9y
IExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRo
aXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJy
ZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5v
dCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBz
b3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNo
YWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNm
b3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAor
ICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1
bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgor
CisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVy
IGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo
ZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0
IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBs
ZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2
ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0
CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3Jr
IGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9u
cywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQs
IGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJw
b3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBp
bmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5
IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUg
V29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9u
IiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhl
IG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFk
ZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwg
dGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGlu
Y2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBh
biBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhh
bGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhp
cyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ry
b25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhl
IExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0
ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBz
b3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lz
dGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGlj
ZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29y
aywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3Vz
bHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRo
ZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250
cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwg
RW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiBy
ZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQg
d2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3Vi
amVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwg
ZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAg
IHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2
b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVy
aXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZv
cm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBE
ZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQg
b2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m
CisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZ
b3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJn
ZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4g
dGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1
c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0
aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2Ug
cGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQg
YXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMp
IGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAg
d2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVk
LiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBl
bnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4g
YSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlv
biBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAg
b3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNl
bnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdv
cmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24g
aXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQg
ZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3Mg
dGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlv
bnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAg
ICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdp
dmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0
aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11
c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisg
ICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAg
IChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2
ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBh
dGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20g
dGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBu
b3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUg
RGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBh
ICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlv
biwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAg
ICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNl
cyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5n
IHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0
IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0
aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRl
ZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUg
U291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9u
ZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNw
bGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAg
d2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNv
bnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25h
bCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2Uu
IFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRo
aW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAg
ICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywg
cHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3Rp
Y2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vu
c2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8g
WW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBk
aWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVw
cm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAg
ICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91
ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsg
b3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0
aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNz
IFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24g
aW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAg
YnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp
dGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJt
cyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGlu
ZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFu
eSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAg
IHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJh
ZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRo
ZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1
Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciBy
ZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmln
aW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0Ug
ZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3Ig
cHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBp
dHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAg
ICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVz
IG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFO
VEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91
IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9w
cmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUg
YW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNz
aW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5
LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBp
biB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisg
ICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0
ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRh
bWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGlu
Y2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNp
bmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBv
ciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGlt
aXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFn
ZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAg
IG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJp
YnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2gg
ZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmls
aXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBX
b3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2Ug
YSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisg
ICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0
ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2gg
b2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBh
bmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBh
bnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnks
CisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFu
eSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5z
dCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFu
eSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVS
TVMgQU5EIENPTkRJVElPTlMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL0xJQ0VOU0UuQlNE
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvTElDRU5TRS5CU0QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi40MmNlN2I3NWM5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy9MSUNFTlNFLkJTRApAQCAtMCwwICsxLDIzIEBACitDb3B5cmlnaHQgKGMpIERvbmFsZCBT
dHVmZnQgYW5kIGluZGl2aWR1YWwgY29udHJpYnV0b3JzLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwK
KyAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorCisgICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKK1dB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKK0ZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCitEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKK0NBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCitP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2Fn
aW5nL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZThiZWJlNzRkYzFkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvUkVBRE1FLnJzdApAQCAtMCwwICsxLDczIEBACitwYWNrYWdpbmcK
Kz09PT09PT09PQorCisuLiBzdGFydC1pbnRybworCitSZXVzYWJsZSBjb3JlIHV0aWxpdGllcyBm
b3IgdmFyaW91cyBQeXRob24gUGFja2FnaW5nCitgaW50ZXJvcGVyYWJpbGl0eSBzcGVjaWZpY2F0
aW9ucyA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zcGVjaWZpY2F0aW9ucy8+YF8uCisK
K1RoaXMgbGlicmFyeSBwcm92aWRlcyB1dGlsaXRpZXMgdGhhdCBpbXBsZW1lbnQgdGhlIGludGVy
b3BlcmFiaWxpdHkKK3NwZWNpZmljYXRpb25zIHdoaWNoIGhhdmUgY2xlYXJseSBvbmUgY29ycmVj
dCBiZWhhdmlvdXIgKGVnOiA6cGVwOmA0NDBgKQorb3IgYmVuZWZpdCBncmVhdGx5IGZyb20gaGF2
aW5nIGEgc2luZ2xlIHNoYXJlZCBpbXBsZW1lbnRhdGlvbiAoZWc6IDpwZXA6YDQyNWApLgorCisu
LiBlbmQtaW50cm8KKworVGhlIGBgcGFja2FnaW5nYGAgcHJvamVjdCBpbmNsdWRlcyB0aGUgZm9s
bG93aW5nOiB2ZXJzaW9uIGhhbmRsaW5nLCBzcGVjaWZpZXJzLAorbWFya2VycywgcmVxdWlyZW1l
bnRzLCB0YWdzLCB1dGlsaXRpZXMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKwor
VGhlIGBkb2N1bWVudGF0aW9uYF8gcHJvdmlkZXMgaW5mb3JtYXRpb24gYW5kIHRoZSBBUEkgZm9y
IHRoZSBmb2xsb3dpbmc6CisKKy0gVmVyc2lvbiBIYW5kbGluZworLSBTcGVjaWZpZXJzCistIE1h
cmtlcnMKKy0gUmVxdWlyZW1lbnRzCistIFRhZ3MKKy0gVXRpbGl0aWVzCisKK0luc3RhbGxhdGlv
bgorLS0tLS0tLS0tLS0tCisKK1VzZSBgYHBpcGBgIHRvIGluc3RhbGwgdGhlc2UgdXRpbGl0aWVz
OjoKKworICAgIHBpcCBpbnN0YWxsIHBhY2thZ2luZworCitEaXNjdXNzaW9uCistLS0tLS0tLS0t
CisKK0lmIHlvdSBydW4gaW50byBidWdzLCB5b3UgY2FuIGZpbGUgdGhlbSBpbiBvdXIgYGlzc3Vl
IHRyYWNrZXJgXy4KKworWW91IGNhbiBhbHNvIGpvaW4gYGAjcHlwYWBgIG9uIEZyZWVub2RlIHRv
IGFzayBxdWVzdGlvbnMgb3IgZ2V0IGludm9sdmVkLgorCisKKy4uIF9gZG9jdW1lbnRhdGlvbmA6
IGh0dHBzOi8vcGFja2FnaW5nLnB5cGEuaW8vCisuLiBfYGlzc3VlIHRyYWNrZXJgOiBodHRwczov
L2dpdGh1Yi5jb20vcHlwYS9wYWNrYWdpbmcvaXNzdWVzCisKKworQ29kZSBvZiBDb25kdWN0Cist
LS0tLS0tLS0tLS0tLS0KKworRXZlcnlvbmUgaW50ZXJhY3RpbmcgaW4gdGhlIHBhY2thZ2luZyBw
cm9qZWN0J3MgY29kZWJhc2VzLCBpc3N1ZSB0cmFja2VycywgY2hhdAorcm9vbXMsIGFuZCBtYWls
aW5nIGxpc3RzIGlzIGV4cGVjdGVkIHRvIGZvbGxvdyB0aGUgYFBTRiBDb2RlIG9mIENvbmR1Y3Rg
Xy4KKworLi4gX1BTRiBDb2RlIG9mIENvbmR1Y3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhLy5n
aXRodWIvYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZAorCitDb250cmlidXRpbmcKKy0tLS0t
LS0tLS0tLQorCitUaGUgYGBDT05UUklCVVRJTkcucnN0YGAgZmlsZSBvdXRsaW5lcyBob3cgdG8g
Y29udHJpYnV0ZSB0byB0aGlzIHByb2plY3QgYXMKK3dlbGwgYXMgaG93IHRvIHJlcG9ydCBhIHBv
dGVudGlhbCBzZWN1cml0eSBpc3N1ZS4gVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMKK3Byb2pl
Y3QgYWxzbyBjb3ZlcnMgaW5mb3JtYXRpb24gYWJvdXQgYHByb2plY3QgZGV2ZWxvcG1lbnRgXyBh
bmQgYHNlY3VyaXR5YF8uCisKKy4uIF9gcHJvamVjdCBkZXZlbG9wbWVudGA6IGh0dHBzOi8vcGFj
a2FnaW5nLnB5cGEuaW8vZW4vbGF0ZXN0L2RldmVsb3BtZW50LworLi4gX2BzZWN1cml0eWA6IGh0
dHBzOi8vcGFja2FnaW5nLnB5cGEuaW8vZW4vbGF0ZXN0L3NlY3VyaXR5LworCitQcm9qZWN0IEhp
c3RvcnkKKy0tLS0tLS0tLS0tLS0tLQorCitQbGVhc2UgcmV2aWV3IHRoZSBgYENIQU5HRUxPRy5y
c3RgYCBmaWxlIG9yIHRoZSBgQ2hhbmdlbG9nIGRvY3VtZW50YXRpb25gXyBmb3IKK3JlY2VudCBj
aGFuZ2VzIGFuZCBwcm9qZWN0IGhpc3RvcnkuCisKKy4uIF9gQ2hhbmdlbG9nIGRvY3VtZW50YXRp
b25gOiBodHRwczovL3BhY2thZ2luZy5weXBhLmlvL2VuL2xhdGVzdC9jaGFuZ2Vsb2cvCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3NpeC9kb2N1bWVudGF0aW9uL01ha2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9NYWtlZmls
ZQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL01ha2VmaWxlCnJl
bmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL01ha2VmaWxlCmluZGV4IGVlYmFmY2Q2ZDYwZi4u
OWQ2ODNiNDAyNDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL01ha2VmaWxlCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL2RvY3MvTWFrZWZpbGUKQEAgLTExLDggKzExLDEwIEBAIEJVSUxERElSICAgICAg
PSBfYnVpbGQKIFBBUEVST1BUX2E0ICAgICA9IC1EIGxhdGV4X3BhcGVyX3NpemU9YTQKIFBBUEVS
T1BUX2xldHRlciA9IC1EIGxhdGV4X3BhcGVyX3NpemU9bGV0dGVyCiBBTExTUEhJTlhPUFRTICAg
PSAtZCAkKEJVSUxERElSKS9kb2N0cmVlcyAkKFBBUEVST1BUXyQoUEFQRVIpKSAkKFNQSElOWE9Q
VFMpIC4KKyMgdGhlIGkxOG4gYnVpbGRlciBjYW5ub3Qgc2hhcmUgdGhlIGVudmlyb25tZW50IGFu
ZCBkb2N0cmVlcyB3aXRoIHRoZSBvdGhlcnMKK0kxOE5TUEhJTlhPUFRTICA9ICQoUEFQRVJPUFRf
JChQQVBFUikpICQoU1BISU5YT1BUUykgLgogCi0uUEhPTlk6IGhlbHAgY2xlYW4gaHRtbCBkaXJo
dG1sIHNpbmdsZWh0bWwgcGlja2xlIGpzb24gaHRtbGhlbHAgcXRoZWxwIGRldmhlbHAgZXB1YiBs
YXRleCBsYXRleHBkZiB0ZXh0IG1hbiBjaGFuZ2VzIGxpbmtjaGVjayBkb2N0ZXN0CisuUEhPTlk6
IGhlbHAgY2xlYW4gaHRtbCBkaXJodG1sIHNpbmdsZWh0bWwgcGlja2xlIGpzb24gaHRtbGhlbHAg
cXRoZWxwIGRldmhlbHAgZXB1YiBsYXRleCBsYXRleHBkZiB0ZXh0IG1hbiBjaGFuZ2VzIGxpbmtj
aGVjayBkb2N0ZXN0IGdldHRleHQKIAogaGVscDoKIAlAZWNobyAiUGxlYXNlIHVzZSBcYG1ha2Ug
PHRhcmdldD4nIHdoZXJlIDx0YXJnZXQ+IGlzIG9uZSBvZiIKQEAgLTI5LDYgKzMxLDkgQEAgaGVs
cDoKIAlAZWNobyAiICBsYXRleHBkZiAgIHRvIG1ha2UgTGFUZVggZmlsZXMgYW5kIHJ1biB0aGVt
IHRocm91Z2ggcGRmbGF0ZXgiCiAJQGVjaG8gIiAgdGV4dCAgICAgICB0byBtYWtlIHRleHQgZmls
ZXMiCiAJQGVjaG8gIiAgbWFuICAgICAgICB0byBtYWtlIG1hbnVhbCBwYWdlcyIKKwlAZWNobyAi
ICB0ZXhpbmZvICAgIHRvIG1ha2UgVGV4aW5mbyBmaWxlcyIKKwlAZWNobyAiICBpbmZvICAgICAg
IHRvIG1ha2UgVGV4aW5mbyBmaWxlcyBhbmQgcnVuIHRoZW0gdGhyb3VnaCBtYWtlaW5mbyIKKwlA
ZWNobyAiICBnZXR0ZXh0ICAgIHRvIG1ha2UgUE8gbWVzc2FnZSBjYXRhbG9ncyIKIAlAZWNobyAi
ICBjaGFuZ2VzICAgIHRvIG1ha2UgYW4gb3ZlcnZpZXcgb2YgYWxsIGNoYW5nZWQvYWRkZWQvZGVw
cmVjYXRlZCBpdGVtcyIKIAlAZWNobyAiICBsaW5rY2hlY2sgIHRvIGNoZWNrIGFsbCBleHRlcm5h
bCBsaW5rcyBmb3IgaW50ZWdyaXR5IgogCUBlY2hvICIgIGRvY3Rlc3QgICAgdG8gcnVuIGFsbCBk
b2N0ZXN0cyBlbWJlZGRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoaWYgZW5hYmxlZCkiCkBAIC03
MiwxNyArNzcsMTcgQEAgcXRoZWxwOgogCUBlY2hvCiAJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBu
b3cgeW91IGNhbiBydW4gInFjb2xsZWN0aW9uZ2VuZXJhdG9yIiB3aXRoIHRoZSIgXAogCSAgICAg
ICIucWhjcCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJUikvcXRoZWxwLCBsaWtlIHRoaXM6Igot
CUBlY2hvICIjIHFjb2xsZWN0aW9uZ2VuZXJhdG9yICQoQlVJTERESVIpL3F0aGVscC9zaXgucWhj
cCIKKwlAZWNobyAiIyBxY29sbGVjdGlvbmdlbmVyYXRvciAkKEJVSUxERElSKS9xdGhlbHAvcGFj
a2FnaW5nLnFoY3AiCiAJQGVjaG8gIlRvIHZpZXcgdGhlIGhlbHAgZmlsZToiCi0JQGVjaG8gIiMg
YXNzaXN0YW50IC1jb2xsZWN0aW9uRmlsZSAkKEJVSUxERElSKS9xdGhlbHAvc2l4LnFoYyIKKwlA
ZWNobyAiIyBhc3Npc3RhbnQgLWNvbGxlY3Rpb25GaWxlICQoQlVJTERESVIpL3F0aGVscC9wYWNr
YWdpbmcucWhjIgogCiBkZXZoZWxwOgogCSQoU1BISU5YQlVJTEQpIC1iIGRldmhlbHAgJChBTExT
UEhJTlhPUFRTKSAkKEJVSUxERElSKS9kZXZoZWxwCiAJQGVjaG8KIAlAZWNobyAiQnVpbGQgZmlu
aXNoZWQuIgogCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6IgotCUBlY2hvICIjIG1rZGly
IC1wICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC9zaXgiCi0JQGVjaG8gIiMgbG4gLXMgJChC
VUlMRERJUikvZGV2aGVscCAkJEhPTUUvLmxvY2FsL3NoYXJlL2RldmhlbHAvc2l4IgorCUBlY2hv
ICIjIG1rZGlyIC1wICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC9wYWNrYWdpbmciCisJQGVj
aG8gIiMgbG4gLXMgJChCVUlMRERJUikvZGV2aGVscCAkJEhPTUUvLmxvY2FsL3NoYXJlL2Rldmhl
bHAvcGFja2FnaW5nIgogCUBlY2hvICIjIGRldmhlbHAiCiAKIGVwdWI6CkBAIC0xMDAsNyArMTA1
LDcgQEAgbGF0ZXg6CiBsYXRleHBkZjoKIAkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQ
SElOWE9QVFMpICQoQlVJTERESVIpL2xhdGV4CiAJQGVjaG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMg
dGhyb3VnaCBwZGZsYXRleC4uLiIKLQltYWtlIC1DICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYK
KwkkKE1BS0UpIC1DICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYKIAlAZWNobyAicGRmbGF0ZXgg
ZmluaXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4LiIKIAogdGV4
dDoKQEAgLTExMyw2ICsxMTgsMjQgQEAgbWFuOgogCUBlY2hvCiAJQGVjaG8gIkJ1aWxkIGZpbmlz
aGVkLiBUaGUgbWFudWFsIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9tYW4uIgogCit0ZXhpbmZv
OgorCSQoU1BISU5YQlVJTEQpIC1iIHRleGluZm8gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElS
KS90ZXhpbmZvCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBUZXhpbmZvIGZp
bGVzIGFyZSBpbiAkKEJVSUxERElSKS90ZXhpbmZvLiIKKwlAZWNobyAiUnVuIFxgbWFrZScgaW4g
dGhhdCBkaXJlY3RvcnkgdG8gcnVuIHRoZXNlIHRocm91Z2ggbWFrZWluZm8iIFwKKwkgICAgICAi
KHVzZSBcYG1ha2UgaW5mbycgaGVyZSB0byBkbyB0aGF0IGF1dG9tYXRpY2FsbHkpLiIKKworaW5m
bzoKKwkkKFNQSElOWEJVSUxEKSAtYiB0ZXhpbmZvICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJ
UikvdGV4aW5mbworCUBlY2hvICJSdW5uaW5nIFRleGluZm8gZmlsZXMgdGhyb3VnaCBtYWtlaW5m
by4uLiIKKwltYWtlIC1DICQoQlVJTERESVIpL3RleGluZm8gaW5mbworCUBlY2hvICJtYWtlaW5m
byBmaW5pc2hlZDsgdGhlIEluZm8gZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3RleGluZm8uIgor
CitnZXR0ZXh0OgorCSQoU1BISU5YQlVJTEQpIC1iIGdldHRleHQgJChJMThOU1BISU5YT1BUUykg
JChCVUlMRERJUikvbG9jYWxlCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBt
ZXNzYWdlIGNhdGFsb2dzIGFyZSBpbiAkKEJVSUxERElSKS9sb2NhbGUuIgorCiBjaGFuZ2VzOgog
CSQoU1BISU5YQlVJTEQpIC1iIGNoYW5nZXMgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9j
aGFuZ2VzCiAJQGVjaG8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvX3N0YXRpYy8u
ZW1wdHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL19zdGF0aWMvLmVtcHR5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy9kb2NzL2NoYW5nZWxvZy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2NoYW5n
ZWxvZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NjViMDUy
MWQwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2NoYW5nZWxvZy5y
c3QKQEAgLTAsMCArMSBAQAorLi4gaW5jbHVkZTo6IC4uL0NIQU5HRUxPRy5yc3QKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL2RvY3MvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvY29u
Zi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNiZDRiMTNhYTM0
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvY29uZi5weQpAQCAtMCww
ICsxLDExMyBAQAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgVGhpcyBmaWxlIGlzIGR1YWwg
bGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgor
IyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4KK2Zyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
KworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKKyMgSWYgZXh0ZW5zaW9ucyAob3IgbW9kdWxlcyB0
byBkb2N1bWVudCB3aXRoIGF1dG9kb2MpIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeSwKKyMgYWRk
IHRoZXNlIGRpcmVjdG9yaWVzIHRvIHN5cy5wYXRoIGhlcmUuIElmIHRoZSBkaXJlY3RvcnkgaXMg
cmVsYXRpdmUgdG8gdGhlCisjIGRvY3VtZW50YXRpb24gcm9vdCwgdXNlIG9zLnBhdGguYWJzcGF0
aCB0byBtYWtlIGl0IGFic29sdXRlLCBsaWtlIHNob3duIGhlcmUuCitzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5hYnNwYXRoKCIuIikpCisKKyMgLS0gR2VuZXJhbCBjb25maWd1cmF0aW9uIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBB
ZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3MuIFRo
ZXkgY2FuIGJlCisjIGV4dGVuc2lvbnMgIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQgJ3NwaGlu
eC5leHQuKicpIG9yIHlvdXIgY3VzdG9tIG9uZXMuCitleHRlbnNpb25zID0gWworICAgICJzcGhp
bnguZXh0LmF1dG9kb2MiLAorICAgICJzcGhpbnguZXh0LmRvY3Rlc3QiLAorICAgICJzcGhpbngu
ZXh0LmV4dGxpbmtzIiwKKyAgICAic3BoaW54LmV4dC5pbnRlcnNwaGlueCIsCisgICAgInNwaGlu
eC5leHQudmlld2NvZGUiLAorXQorCisjIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIHRlbXBs
YXRlcyBoZXJlLCByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4KK3RlbXBsYXRlc19wYXRoID0g
WyJfdGVtcGxhdGVzIl0KKworIyBUaGUgc3VmZml4IG9mIHNvdXJjZSBmaWxlbmFtZXMuCitzb3Vy
Y2Vfc3VmZml4ID0gIi5yc3QiCisKKyMgVGhlIG1hc3RlciB0b2N0cmVlIGRvY3VtZW50LgorbWFz
dGVyX2RvYyA9ICJpbmRleCIKKworIyBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9q
ZWN0LgorcHJvamVjdCA9ICJQYWNrYWdpbmciCisKKyMgVGhlIHZlcnNpb24gaW5mbyBmb3IgdGhl
IHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgorIyB8
dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3RoZXIgcGxhY2Vz
IHRocm91Z2hvdXQgdGhlCisjIGJ1aWx0IGRvY3VtZW50cy4KKyMKKworYmFzZV9kaXIgPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgb3MucGFyZGlyKQorYWJvdXQgPSB7
fQord2l0aCBvcGVuKG9zLnBhdGguam9pbihiYXNlX2RpciwgInBhY2thZ2luZyIsICJfX2luaXRf
Xy5weSIpKSBhcyBmOgorICAgIGV4ZWMoZi5yZWFkKCksIGFib3V0KQorCit2ZXJzaW9uID0gcmVs
ZWFzZSA9IGFib3V0WyJfX3ZlcnNpb25fXyJdCitjb3B5cmlnaHQgPSAiMjAxNC0yMDE5IERvbmFs
ZCBTdHVmZnQgYW5kIGluZGl2aWR1YWwgY29udHJpYnV0b3JzIgorCisjIExpc3Qgb2YgcGF0dGVy
bnMsIHJlbGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMgYW5kCisj
IGRpcmVjdG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcy4KK2V4
Y2x1ZGVfcGF0dGVybnMgPSBbIl9idWlsZCJdCisKK2V4dGxpbmtzID0geworICAgICJpc3N1ZSI6
ICgiaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGFja2FnaW5nL2lzc3Vlcy8lcyIsICIjIiksCisg
ICAgInB1bGwiOiAoImh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3BhY2thZ2luZy9wdWxsLyVzIiwg
IlBSICMiKSwKK30KKyMgLS0gT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgdGhlbWUgdG8gdXNl
IGZvciBIVE1MIGFuZCBIVE1MIEhlbHAgcGFnZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9y
CisjIGEgbGlzdCBvZiBidWlsdGluIHRoZW1lcy4KKworaHRtbF90aGVtZSA9ICJmdXJvIgoraHRt
bF90aXRsZSA9ICJwYWNrYWdpbmciCisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3Vz
dG9tIHN0YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCisjIHJlbGF0aXZl
IHRvIHRoaXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0aW4gc3Rh
dGljIGZpbGVzLAorIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92ZXJ3cml0
ZSB0aGUgYnVpbHRpbiAiZGVmYXVsdC5jc3MiLgoraHRtbF9zdGF0aWNfcGF0aCA9IFsiX3N0YXRp
YyJdCisKKyMgT3V0cHV0IGZpbGUgYmFzZSBuYW1lIGZvciBIVE1MIGhlbHAgYnVpbGRlci4KK2h0
bWxoZWxwX2Jhc2VuYW1lID0gInBhY2thZ2luZ2RvYyIKKworCisjIC0tIE9wdGlvbnMgZm9yIExh
VGVYIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK2xhdGV4X2VsZW1lbnRzID0ge30KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJl
ZSBpbnRvIExhVGVYIGZpbGVzLiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUs
IHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLCBkb2N1bWVudGNsYXNzIFtob3d0by9tYW51YWxd
KQorbGF0ZXhfZG9jdW1lbnRzID0gWworICAgICgiaW5kZXgiLCAicGFja2FnaW5nLnRleCIsICJQ
YWNrYWdpbmcgRG9jdW1lbnRhdGlvbiIsICJEb25hbGQgU3R1ZmZ0IiwgIm1hbnVhbCIpCitdCisK
KyMgLS0gT3B0aW9ucyBmb3IgbWFudWFsIHBhZ2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBM
aXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBh
dXRob3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbKCJpbmRleCIsICJwYWNrYWdp
bmciLCAiUGFja2FnaW5nIERvY3VtZW50YXRpb24iLCBbIkRvbmFsZCBTdHVmZnQiXSwgMSldCisK
KyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBp
bnRvIFRleGluZm8gZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ugc3RhcnQgZmlsZSwg
dGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsCisjICBkaXIgbWVudSBlbnRyeSwgZGVzY3JpcHRp
b24sIGNhdGVnb3J5KQordGV4aW5mb19kb2N1bWVudHMgPSBbCisgICAgKAorICAgICAgICAiaW5k
ZXgiLAorICAgICAgICAicGFja2FnaW5nIiwKKyAgICAgICAgIlBhY2thZ2luZyBEb2N1bWVudGF0
aW9uIiwKKyAgICAgICAgIkRvbmFsZCBTdHVmZnQiLAorICAgICAgICAicGFja2FnaW5nIiwKKyAg
ICAgICAgIkNvcmUgdXRpbGl0aWVzIGZvciBQeXRob24gcGFja2FnZXMiLAorICAgICAgICAiTWlz
Y2VsbGFuZW91cyIsCisgICAgKQorXQorCisjIEV4YW1wbGUgY29uZmlndXJhdGlvbiBmb3IgaW50
ZXJzcGhpbng6IHJlZmVyIHRvIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeS4KK2ludGVyc3Bo
aW54X21hcHBpbmcgPSB7Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLyI6IE5vbmV9CisKK2VwdWJf
dGhlbWUgPSAiZXB1YiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1l
bnQvZ2V0dGluZy1zdGFydGVkLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQv
Z2V0dGluZy1zdGFydGVkLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmM4ZTk0ODc4MjdiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3Mv
ZGV2ZWxvcG1lbnQvZ2V0dGluZy1zdGFydGVkLnJzdApAQCAtMCwwICsxLDgwIEBACitHZXR0aW5n
IHN0YXJ0ZWQKKz09PT09PT09PT09PT09PQorCitXb3JraW5nIG9uIHBhY2thZ2luZyByZXF1aXJl
cyB0aGUgaW5zdGFsbGF0aW9uIG9mIGEgc21hbGwgbnVtYmVyIG9mCitkZXZlbG9wbWVudCBkZXBl
bmRlbmNpZXMuIFRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyBhcmUgcmVxdWlyZWQgdG8KK3J1biB0
aGUgdGVzdHMgbWFudWFsbHksIHBsZWFzZSBsb29rIGF0IHRoZSBgYG5veGZpbGUucHlgYCBmaWxl
LgorCitSdW5uaW5nIHRlc3RzCit+fn5+fn5+fn5+fn5+CisKK1RoZSBwYWNrYWdpbmcgdW5pdCB0
ZXN0cyBhcmUgZm91bmQgaW4gdGhlIGBgdGVzdHMvYGAgZGlyZWN0b3J5IGFuZCBhcmUKK2Rlc2ln
bmVkIHRvIGJlIHJ1biB1c2luZyBgcHl0ZXN0YF8uIGBweXRlc3RgXyB3aWxsIGRpc2NvdmVyIHRo
ZSB0ZXN0cworYXV0b21hdGljYWxseSwgc28gYWxsIHlvdSBoYXZlIHRvIGRvIGlzOgorCisuLiBj
b2RlLWJsb2NrOjogY29uc29sZQorCisgICAgJCBweXRob24gLW0gcHl0ZXN0CisgICAgLi4uCisg
ICAgMjkyMDQgcGFzc2VkLCA0IHNraXBwZWQsIDEgeGZhaWxlZCBpbiA4My45OCBzZWNvbmRzCisK
K1RoaXMgcnVucyB0aGUgdGVzdHMgd2l0aCB0aGUgZGVmYXVsdCBQeXRob24gaW50ZXJwcmV0ZXIu
IFRoaXMgYWxzbyBhbGxvd3MKK3lvdSB0byBydW4gc2VsZWN0IHRlc3RzIGluc3RlYWQgb2YgdGhl
IGVudGlyZSB0ZXN0IHN1aXRlLgorCitZb3UgY2FuIGFsc28gdmVyaWZ5IHRoYXQgdGhlIHRlc3Rz
IHBhc3Mgb24gb3RoZXIgc3VwcG9ydGVkIFB5dGhvbiBpbnRlcnByZXRlcnMuCitGb3IgdGhpcyB3
ZSB1c2UgYG5veGBfLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgYHZpcnR1YWxl
bnZgXyBmb3IKK2VhY2ggc3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9uIGFuZCBydW4gdGhlIHRlc3Rz
LiBGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgICQgbm94IC1z
IHRlc3RzCisgICAgLi4uCisgICAgbm94ID4gUmFuIG11bHRpcGxlIHNlc3Npb25zOgorICAgIG5v
eCA+ICogdGVzdHMtMi43OiBzdWNjZXNzCisgICAgbm94ID4gKiB0ZXN0cy0zLjQ6IHNraXBwZWQK
KyAgICBub3ggPiAqIHRlc3RzLTMuNTogc3VjY2VzcworICAgIG5veCA+ICogdGVzdHMtMy42OiBz
dWNjZXNzCisgICAgbm94ID4gKiB0ZXN0cy0zLjc6IHN1Y2Nlc3MKKyAgICBub3ggPiAqIHRlc3Rz
LTMuODogc3VjY2VzcworICAgIG5veCA+ICogdGVzdHMtcHlweTogc2tpcHBlZAorICAgIG5veCA+
ICogdGVzdHMtcHlweTM6IHNraXBwZWQKKworWW91IG1heSBub3QgaGF2ZSBhbGwgdGhlIHJlcXVp
cmVkIFB5dGhvbiB2ZXJzaW9ucyBpbnN0YWxsZWQsIGluIHdoaWNoIGNhc2UgeW91Cit3aWxsIHNl
ZSBvbmUgb3IgbW9yZSBgYEludGVycHJldGVyTm90Rm91bmRgYCBlcnJvcnMuCisKK1J1bm5pbmcg
bGludGVycworfn5+fn5+fn5+fn5+fn5+CisKK0lmIHlvdSB3aXNoIHRvIHJ1biB0aGUgbGludGlu
ZyBydWxlcywgeW91IG1heSB1c2UgYHByZS1jb21taXRgXyBvciBydW4KK2Bgbm94IC1zIGxpbnRg
YC4KKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgICQgbm94IC1zIGxpbnQKKyAgICAu
Li4KKyAgICBub3ggPiBTZXNzaW9uIGxpbnQgd2FzIHN1Y2Nlc3NmdWwuCisKK0J1aWxkaW5nIGRv
Y3VtZW50YXRpb24KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworcGFja2FnaW5nIGRvY3VtZW50
YXRpb24gaXMgc3RvcmVkIGluIHRoZSBgYGRvY3MvYGAgZGlyZWN0b3J5LiBJdCBpcword3JpdHRl
biBpbiBgcmVTdHJ1Y3R1cmVkIFRleHRgXyBhbmQgcmVuZGVyZWQgdXNpbmcgYFNwaGlueGBfLgor
CitVc2UgYG5veGBfIHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uLiBGb3IgZXhhbXBsZToKKwor
Li4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgICQgbm94IC1zIGRvY3MKKyAgICAuLi4KKyAg
ICBub3ggPiBTZXNzaW9uIGRvY3Mgd2FzIHN1Y2Nlc3NmdWwuCisKK1RoZSBIVE1MIGRvY3VtZW50
YXRpb24gaW5kZXggY2FuIG5vdyBiZSBmb3VuZCBhdAorYGBkb2NzL19idWlsZC9odG1sL2luZGV4
Lmh0bWxgYC4KKworLi4gX2BweXRlc3RgOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0
LworLi4gX2Bub3hgOiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvbm94LworLi4gX2B2aXJ0dWFs
ZW52YDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3ZpcnR1YWxlbnYvCisuLiBfYHBpcGA6IGh0
dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9waXAvCisuLiBfYHNwaGlueGA6IGh0dHBzOi8vcHlwaS5v
cmcvcHJvamVjdC9TcGhpbngvCisuLiBfYHJlU3RydWN0dXJlZCBUZXh0YDogaHR0cDovL3NwaGlu
eC1kb2Mub3JnL3Jlc3QuaHRtbAorLi4gX2BwcmUtY29tbWl0YDogaHR0cHM6Ly9wcmUtY29tbWl0
LmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9pbmRleC5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L2luZGV4LnJzdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMwYWVhOGFjYjM5MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvaW5kZXgucnN0CkBAIC0wLDAg
KzEsMTkgQEAKK0RldmVsb3BtZW50Cis9PT09PT09PT09PQorCitBcyBhbiBvcGVuIHNvdXJjZSBw
cm9qZWN0LCBwYWNrYWdpbmcgd2VsY29tZXMgY29udHJpYnV0aW9ucyBvZiBhbGwKK2Zvcm1zLiBU
aGUgc2VjdGlvbnMgYmVsb3cgd2lsbCBoZWxwIHlvdSBnZXQgc3RhcnRlZC4KKworRmlsZSBidWdz
IGFuZCBmZWF0dXJlIHJlcXVlc3RzIG9uIG91ciBpc3N1ZSB0cmFja2VyIG9uIGBHaXRIdWJgXy4g
SWYgaXQgaXMgYQorYnVnIGNoZWNrIG91dCBgd2hhdCB0byBwdXQgaW4geW91ciBidWcgcmVwb3J0
YF8uCisKKy4uIHRvY3RyZWU6OgorICAgIDptYXhkZXB0aDogMgorCisgICAgZ2V0dGluZy1zdGFy
dGVkCisgICAgc3VibWl0dGluZy1wYXRjaGVzCisgICAgcmV2aWV3aW5nLXBhdGNoZXMKKyAgICBy
ZWxlYXNlLXByb2Nlc3MKKworLi4gX2BHaXRIdWJgOiBodHRwczovL2dpdGh1Yi5jb20vcHlwYS9w
YWNrYWdpbmcKKy4uIF9gd2hhdCB0byBwdXQgaW4geW91ciBidWcgcmVwb3J0YDogaHR0cDovL3d3
dy5jb250cmlidXRpb24tZ3VpZGUub3JnLyN3aGF0LXRvLXB1dC1pbi15b3VyLWJ1Zy1yZXBvcnQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvcmVsZWFzZS1wcm9j
ZXNzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvcmVsZWFzZS1wcm9jZXNz
LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY2MzRhYzQwYmRl
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvcmVs
ZWFzZS1wcm9jZXNzLnJzdApAQCAtMCwwICsxLDIxIEBACitSZWxlYXNlIFByb2Nlc3MKKz09PT09
PT09PT09PT09PQorCisjLiBDaGVja291dCB0aGUgY3VycmVudCBgYG1hc3RlcmBgIGJyYW5jaC4K
KyMuIEluc3RhbGwgdGhlIGxhdGVzdCBgYG5veGBgOjoKKworICAgICQgcGlwIGluc3RhbGwgbm94
CisKKyMuIFJ1biB0aGUgcmVsZWFzZSBhdXRvbWF0aW9uIHdpdGggdGhlIHJlcXVpcmVkIHZlcnNp
b24gbnVtYmVyIChZWS5OKTo6CisKKyAgICAkIG5veCAtcyByZWxlYXNlIC0tIFlZLk4KKworIy4g
Tm90aWZ5IHRoZSBvdGhlciBwcm9qZWN0IG93bmVycyBvZiB0aGUgcmVsZWFzZS4KKworLi4gbm90
ZTo6CisKKyAgIEFjY2VzcyBuZWVkZWQgZm9yIG1ha2luZyB0aGUgcmVsZWFzZSBhcmU6CisKKyAg
IC0gUHlQSSBtYWludGFpbmVyIChvciBvd25lcikgYWNjZXNzIHRvIGBwYWNrYWdpbmdgCisgICAt
IHB1c2ggZGlyZWN0bHkgdG8gdGhlIGBtYXN0ZXJgIGJyYW5jaCBvbiB0aGUgc291cmNlIHJlcG9z
aXRvcnkKKyAgIC0gcHVzaCB0YWdzIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgcmVwb3NpdG9yeQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9yZXZpZXdpbmctcGF0
Y2hlcy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3Jldmlld2luZy1wYXRj
aGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM0NzZjNzUx
MmRlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQv
cmV2aWV3aW5nLXBhdGNoZXMucnN0CkBAIC0wLDAgKzEsMzcgQEAKK1Jldmlld2luZyBhbmQgbWVy
Z2luZyBwYXRjaGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFdmVyeW9uZSBp
cyBlbmNvdXJhZ2VkIHRvIHJldmlldyBvcGVuIHB1bGwgcmVxdWVzdHMuIFdlIG9ubHkgYXNrIHRo
YXQgeW91IHRyeQorYW5kIHRoaW5rIGNhcmVmdWxseSwgYXNrIHF1ZXN0aW9ucyBhbmQgYXJlIGBl
eGNlbGxlbnQgdG8gb25lIGFub3RoZXJgXy4gQ29kZQorcmV2aWV3IGlzIG91ciBvcHBvcnR1bml0
eSB0byBzaGFyZSBrbm93bGVkZ2UsIGRlc2lnbiBpZGVhcyBhbmQgbWFrZSBmcmllbmRzLgorCitX
aGVuIHJldmlld2luZyBhIHBhdGNoIHRyeSB0byBrZWVwIGVhY2ggb2YgdGhlc2UgY29uY2VwdHMg
aW4gbWluZDoKKworQXJjaGl0ZWN0dXJlCistLS0tLS0tLS0tLS0KKworKiBJcyB0aGUgcHJvcG9z
ZWQgY2hhbmdlIGJlaW5nIG1hZGUgaW4gdGhlIGNvcnJlY3QgcGxhY2U/CisKK0ludGVudAorLS0t
LS0tCisKKyogV2hhdCBpcyB0aGUgY2hhbmdlIGJlaW5nIHByb3Bvc2VkPworKiBEbyB3ZSB3YW50
IHRoaXMgZmVhdHVyZSBvciBpcyB0aGUgYnVnIHRoZXkncmUgZml4aW5nIHJlYWxseSBhIGJ1Zz8K
KworSW1wbGVtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tCisKKyogRG9lcyB0aGUgY2hhbmdlIGRv
IHdoYXQgdGhlIGF1dGhvciBjbGFpbXM/CisqIEFyZSB0aGVyZSBzdWZmaWNpZW50IHRlc3RzPwor
KiBIYXMgaXQgYmVlbiBkb2N1bWVudGVkPworKiBXaWxsIHRoaXMgY2hhbmdlIGludHJvZHVjZSBu
ZXcgYnVncz8KKworR3JhbW1hciBhbmQgc3R5bGUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNl
IGFyZSBzbWFsbCB0aGluZ3MgdGhhdCBhcmUgbm90IGNhdWdodCBieSB0aGUgYXV0b21hdGVkIHN0
eWxlIGNoZWNrZXJzLgorCisqIERvZXMgYSB2YXJpYWJsZSBuZWVkIGEgYmV0dGVyIG5hbWU/Cisq
IFNob3VsZCB0aGlzIGJlIGEga2V5d29yZCBhcmd1bWVudD8KKworLi4gX2BleGNlbGxlbnQgdG8g
b25lIGFub3RoZXJgOiBodHRwczovL3NwZWFrZXJkZWNrLmNvbS9vaHJpdGUvYmV0dGVyLWNvZGUt
cmV2aWV3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3N1Ym1p
dHRpbmctcGF0Y2hlcy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3N1Ym1p
dHRpbmctcGF0Y2hlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5jZjQzM2M0NWYyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2Rl
dmVsb3BtZW50L3N1Ym1pdHRpbmctcGF0Y2hlcy5yc3QKQEAgLTAsMCArMSw4MSBAQAorU3VibWl0
dGluZyBwYXRjaGVzCis9PT09PT09PT09PT09PT09PT0KKworKiBBbHdheXMgbWFrZSBhIG5ldyBi
cmFuY2ggZm9yIHlvdXIgd29yay4KKyogUGF0Y2hlcyBzaG91bGQgYmUgc21hbGwgdG8gZmFjaWxp
dGF0ZSBlYXNpZXIgcmV2aWV3LiBgU3R1ZGllcyBoYXZlIHNob3duYF8KKyAgdGhhdCByZXZpZXcg
cXVhbGl0eSBmYWxscyBvZmYgYXMgcGF0Y2ggc2l6ZSBncm93cy4gU29tZXRpbWVzIHRoaXMgd2ls
bCByZXN1bHQKKyAgaW4gbWFueSBzbWFsbCBQUnMgdG8gbGFuZCBhIHNpbmdsZSBsYXJnZSBmZWF0
dXJlLgorKiBMYXJnZXIgY2hhbmdlcyBzaG91bGQgYmUgZGlzY3Vzc2VkIGluIGEgdGlja2V0IGJl
Zm9yZSBzdWJtaXNzaW9uLgorKiBOZXcgZmVhdHVyZXMgYW5kIHNpZ25pZmljYW50IGJ1ZyBmaXhl
cyBzaG91bGQgYmUgZG9jdW1lbnRlZCBpbiB0aGUKKyAgOmRvYzpgL2NoYW5nZWxvZ2AuCisqIFlv
dSBtdXN0IGhhdmUgbGVnYWwgcGVybWlzc2lvbiB0byBkaXN0cmlidXRlIGFueSBjb2RlIHlvdSBj
b250cmlidXRlIGFuZCBpdAorICBtdXN0IGJlIGF2YWlsYWJsZSB1bmRlciBib3RoIHRoZSBCU0Qg
YW5kIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIFZlcnNpb24gMi4wCisgIGxpY2Vuc2VzLgorCitJ
ZiB5b3UgYmVsaWV2ZSB5b3UndmUgaWRlbnRpZmllZCBhIHNlY3VyaXR5IGlzc3VlIGluIHBhY2th
Z2luZywgcGxlYXNlCitmb2xsb3cgdGhlIGRpcmVjdGlvbnMgb24gdGhlIDpkb2M6YHNlY3VyaXR5
IHBhZ2UgPC9zZWN1cml0eT5gLgorCitDb2RlCistLS0tCisKK1RoaXMgcHJvamVjdCdzIHNvdXJj
ZSBpcyBhdXRvLWZvcm1hdHRlZCB3aXRoIHxibGFja3wuIFlvdSBjYW4gY2hlY2sgaWYgeW91cgor
Y29kZSBtZWV0cyBvdXIgcmVxdWlyZW1lbnRzIGJ5IHJ1bm5pbmcgb3VyIGxpbnRlcnMgYWdhaW5z
dCBpdCB3aXRoIGBgbm94IC1zCitsaW50YGAgb3IgYGBwcmUtY29tbWl0IHJ1biAtLWFsbC1maWxl
c2BgLgorCitgV3JpdGUgY29tbWVudHMgYXMgY29tcGxldGUgc2VudGVuY2VzLmBfCisKK0V2ZXJ5
IGNvZGUgZmlsZSBtdXN0IHN0YXJ0IHdpdGggdGhlIGJvaWxlcnBsYXRlIGxpY2Vuc2luZyBub3Rp
Y2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMgVGhpcyBmaWxlIGlzIGR1YWwg
bGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgor
ICAgICMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyAgICAjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgor
CitBZGRpdGlvbmFsbHksIGV2ZXJ5IFB5dGhvbiBjb2RlIGZpbGUgbXVzdCBjb250YWluCisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1
dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKworCitUZXN0cworLS0tLS0KKwor
QWxsIGNvZGUgY2hhbmdlcyBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IHVuaXQgdGVzdHMgd2l0aCAx
MDAlIGNvZGUgY292ZXJhZ2UgKGFzCittZWFzdXJlZCBieSB0aGUgY29tYmluZWQgbWV0cmljcyBh
Y3Jvc3Mgb3VyIGJ1aWxkIG1hdHJpeCkuCisKKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0t
LQorCitBbGwgZmVhdHVyZXMgc2hvdWxkIGJlIGRvY3VtZW50ZWQgd2l0aCBwcm9zZSBpbiB0aGUg
YGBkb2NzYGAgc2VjdGlvbi4KKworV2hlbiByZWZlcnJpbmcgdG8gYSBoeXBvdGhldGljYWwgaW5k
aXZpZHVhbCAoc3VjaCBhcyAiYSBwZXJzb24gcmVjZWl2aW5nIGFuCitlbmNyeXB0ZWQgbWVzc2Fn
ZSIpIHVzZSBnZW5kZXIgbmV1dHJhbCBwcm9ub3VucyAodGhleS90aGVtL3RoZWlyKS4KKworRG9j
c3RyaW5ncyBhcmUgdHlwaWNhbGx5IG9ubHkgdXNlZCB3aGVuIHdyaXRpbmcgYWJzdHJhY3QgY2xh
c3NlcywgYnV0IHNob3VsZAorYmUgd3JpdHRlbiBsaWtlIHRoaXMgaWYgcmVxdWlyZWQ6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiBzb21lX2Z1bmN0aW9uKHNvbWVfYXJnKToK
KyAgICAgICAgIiIiCisgICAgICAgIERvZXMgc29tZSB0aGluZ3MuCisKKyAgICAgICAgOnBhcmFt
IHNvbWVfYXJnOiBTb21lIGFyZ3VtZW50LgorICAgICAgICAiIiIKKworU28sIHNwZWNpZmljYWxs
eToKKworKiBBbHdheXMgdXNlIHRocmVlIGRvdWJsZSBxdW90ZXMuCisqIFB1dCB0aGUgdGhyZWUg
ZG91YmxlIHF1b3RlcyBvbiB0aGVpciBvd24gbGluZS4KKyogTm8gYmxhbmsgbGluZSBhdCB0aGUg
ZW5kLgorKiBVc2UgU3BoaW54IHBhcmFtZXRlci9hdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBgc3lu
dGF4YF8uCisKKworLi4gfGJsYWNrfCByZXBsYWNlOjogYGBibGFja2BgCisuLiBfYmxhY2s6IGh0
dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9ibGFjay8KKy4uIF9gV3JpdGUgY29tbWVudHMgYXMgY29t
cGxldGUgc2VudGVuY2VzLmA6IGh0dHBzOi8vbmVkYmF0Y2hlbGRlci5jb20vYmxvZy8yMDE0MDEv
Y29tbWVudHNfc2hvdWxkX2JlX3NlbnRlbmNlcy5odG1sCisuLiBfYHN5bnRheGA6IGh0dHA6Ly9z
cGhpbngtZG9jLm9yZy9kb21haW5zLmh0bWwjaW5mby1maWVsZC1saXN0cworLi4gX2BTdHVkaWVz
IGhhdmUgc2hvd25gOiBodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3MvcmF0aW9uYWwv
bGlicmFyeS8xMS1wcm92ZW4tcHJhY3RpY2VzLWZvci1wZWVyLXJldmlldy8KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGFja2FnaW5nL2RvY3MvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9pbmRl
eC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYWZkYWU4M2M0
NjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2luZGV4LnJzdApAQCAt
MCwwICsxLDM4IEBACitXZWxjb21lIHRvIHBhY2thZ2luZworPT09PT09PT09PT09PT09PT09PT0K
KworLi4gaW5jbHVkZTo6IC4uL1JFQURNRS5yc3QKKyAgIDpzdGFydC1hZnRlcjogc3RhcnQtaW50
cm8KKyAgIDplbmQtYmVmb3JlOiBlbmQtaW50cm8KKworCitJbnN0YWxsYXRpb24KKy0tLS0tLS0t
LS0tLQorCitZb3UgY2FuIGluc3RhbGwgcGFja2FnaW5nIHdpdGggYGBwaXBgYDoKKworLi4gY29k
ZS1ibG9jazo6IGNvbnNvbGUKKworICAgICQgcGlwIGluc3RhbGwgcGFja2FnaW5nCisKKworLi4g
dG9jdHJlZTo6CisgICAgOm1heGRlcHRoOiAxCisgICAgOmNhcHRpb246IEFQSSBEb2N1bWVudGF0
aW9uCisgICAgOmhpZGRlbjoKKworICAgIHZlcnNpb24KKyAgICBzcGVjaWZpZXJzCisgICAgbWFy
a2VycworICAgIHJlcXVpcmVtZW50cworICAgIHRhZ3MKKyAgICB1dGlscworCisuLiB0b2N0cmVl
OjoKKyAgICA6bWF4ZGVwdGg6IDIKKyAgICA6Y2FwdGlvbjogUHJvamVjdAorICAgIDpoaWRkZW46
CisKKyAgICBkZXZlbG9wbWVudC9pbmRleAorICAgIHNlY3VyaXR5CisgICAgY2hhbmdlbG9nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL21hcmtlcnMucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvZG9jcy9tYXJrZXJzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFkMjUzNjE2NDc2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3Mv
bWFya2Vycy5yc3QKQEAgLTAsMCArMSw5MyBAQAorTWFya2VycworPT09PT09PQorCisuLiBjdXJy
ZW50bW9kdWxlOjogcGFja2FnaW5nLm1hcmtlcnMKKworT25lIGV4dHJhIHJlcXVpcmVtZW50IG9m
IGRlYWxpbmcgd2l0aCBkZXBlbmRlbmNpZXMgaXMgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeQoraWYg
aXQgaXMgcmVxdWlyZWQgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIFB5dGhv
biB2ZXJzaW9uIGluIHVzZS4KK2BQRVAgNTA4YF8gZGVmaW5lcyB0aGUgc2NoZW1lIHdoaWNoIGhh
cyBiZWVuIGltcGxlbWVudGVkIGJ5IHRoaXMgbW9kdWxlLgorCitVc2FnZQorLS0tLS0KKworLi4g
ZG9jdGVzdDo6CisKKyAgICA+Pj4gZnJvbSBwYWNrYWdpbmcubWFya2VycyBpbXBvcnQgTWFya2Vy
LCBVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUKKyAgICA+Pj4gbWFya2VyID0gTWFya2VyKCJweXRo
b25fdmVyc2lvbj4nMiciKQorICAgID4+PiBtYXJrZXIKKyAgICA8TWFya2VyKCdweXRob25fdmVy
c2lvbiA+ICIyIicpPgorICAgID4+PiAjIFdlIGNhbiBldmFsdWF0ZSB0aGUgbWFya2VyIHRvIHNl
ZSBpZiBpdCBpcyBzYXRpc2ZpZWQKKyAgICA+Pj4gbWFya2VyLmV2YWx1YXRlKCkKKyAgICBUcnVl
CisgICAgPj4+ICMgV2UgY2FuIGFsc28gb3ZlcnJpZGUgdGhlIGVudmlyb25tZW50CisgICAgPj4+
IGVudiA9IHsncHl0aG9uX3ZlcnNpb24nOiAnMS41LjQnfQorICAgID4+PiBtYXJrZXIuZXZhbHVh
dGUoZW52aXJvbm1lbnQ9ZW52KQorICAgIEZhbHNlCisgICAgPj4+ICMgTXVsdGlwbGUgbWFya2Vy
cyBjYW4gYmUgQU5EZWQKKyAgICA+Pj4gYW5kX21hcmtlciA9IE1hcmtlcigib3NfbmFtZT09J2En
IGFuZCBvc19uYW1lPT0nYiciKQorICAgID4+PiBhbmRfbWFya2VyCisgICAgPE1hcmtlcignb3Nf
bmFtZSA9PSAiYSIgYW5kIG9zX25hbWUgPT0gImIiJyk+CisgICAgPj4+ICMgTXVsdGlwbGUgbWFy
a2VycyBjYW4gYmUgT1JlZAorICAgID4+PiBvcl9tYXJrZXIgPSBNYXJrZXIoIm9zX25hbWU9PSdh
JyBvciBvc19uYW1lPT0nYiciKQorICAgID4+PiBvcl9tYXJrZXIKKyAgICA8TWFya2VyKCdvc19u
YW1lID09ICJhIiBvciBvc19uYW1lID09ICJiIicpPgorICAgID4+PiAjIE1hcmtlcnMgY2FuIGJl
IGFsc28gdXNlZCB3aXRoIGV4dHJhcywgdG8gcHVsbCBpbiBkZXBlbmRlbmNpZXMgaWYKKyAgICA+
Pj4gIyBhIGNlcnRhaW4gZXh0cmEgaXMgYmVpbmcgaW5zdGFsbGVkCisgICAgPj4+IGV4dHJhID0g
TWFya2VyKCdleHRyYSA9PSAiYmFyIicpCisgICAgPj4+ICMgRXZhbHVhdGluZyBhbiBleHRyYSBt
YXJrZXIgd2l0aCBubyBlbnZpcm9ubWVudCBpcyBhbiBlcnJvcgorICAgID4+PiB0cnk6CisgICAg
Li4uICAgICBleHRyYS5ldmFsdWF0ZSgpCisgICAgLi4uIGV4Y2VwdCBVbmRlZmluZWRFbnZpcm9u
bWVudE5hbWU6CisgICAgLi4uICAgICBwYXNzCisgICAgPj4+IGV4dHJhX2Vudmlyb25tZW50ID0g
eydleHRyYSc6ICcnfQorICAgID4+PiBleHRyYS5ldmFsdWF0ZShlbnZpcm9ubWVudD1leHRyYV9l
bnZpcm9ubWVudCkKKyAgICBGYWxzZQorICAgID4+PiBleHRyYV9lbnZpcm9ubWVudFsnZXh0cmEn
XSA9ICdiYXInCisgICAgPj4+IGV4dHJhLmV2YWx1YXRlKGVudmlyb25tZW50PWV4dHJhX2Vudmly
b25tZW50KQorICAgIFRydWUKKworCitSZWZlcmVuY2UKKy0tLS0tLS0tLQorCisuLiBjbGFzczo6
IE1hcmtlcihtYXJrZXJzKQorCisgICAgVGhpcyBjbGFzcyBhYnN0cmFjdHMgaGFuZGxpbmcgbWFy
a2VycyBmb3IgZGVwZW5kZW5jaWVzIG9mIGEgcHJvamVjdC4gSXQgY2FuCisgICAgYmUgcGFzc2Vk
IGEgc2luZ2xlIG1hcmtlciBvciBtdWx0aXBsZSBtYXJrZXJzIHRoYXQgYXJlIEFORGVkIG9yIE9S
ZWQKKyAgICB0b2dldGhlci4gRWFjaCBtYXJrZXIgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRv
IFBFUCA1MDguCisKKyAgICA6cGFyYW0gc3RyIG1hcmtlcnM6IFRoZSBzdHJpbmcgcmVwcmVzZW50
YXRpb24gb2YgYSBtYXJrZXIgb3IgbWFya2Vycy4KKyAgICA6cmFpc2VzIEludmFsaWRNYXJrZXI6
IElmIHRoZSBnaXZlbiBgYG1hcmtlcnNgYCBhcmUgbm90IHBhcnNlYWJsZSwgdGhlbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCisKKyAg
ICAuLiBtZXRob2Q6OiBldmFsdWF0ZShlbnZpcm9ubWVudD1Ob25lKQorCisgICAgRXZhbHVhdGUg
dGhlIG1hcmtlciBnaXZlbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBQeXRob24gcHJvY2Vz
cy4KKworICAgIDpwYXJhbSBkaWN0IGVudmlyb25tZW50OiBBIGRpY3Rpb25hcnkgY29udGFpbmlu
ZyBrZXlzIGFuZCB2YWx1ZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJp
ZGUgdGhlIGRldGVjdGVkIGVudmlyb25tZW50LgorICAgIDpyYWlzZXM6IFVuZGVmaW5lZENvbXBh
cmlzb246IElmIHRoZSBtYXJrZXIgdXNlcyBhIFBFUCA0NDAgY29tcGFyaXNvbiBvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3Mgd2hpY2ggYXJlIG5vdCB2YWxpZCBQ
RVAgNDQwIHZlcnNpb25zLgorICAgIDpyYWlzZXM6IFVuZGVmaW5lZEVudmlyb25tZW50TmFtZTog
SWYgdGhlIG1hcmtlciBhY2Nlc3NlcyBhIHZhbHVlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzbid0IHByZXNlbnQgaW5zaWRlIG9mIHRoZSBlbnZpcm9ubWVu
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeS4KKwor
Li4gZXhjZXB0aW9uOjogSW52YWxpZE1hcmtlcgorCisgICAgUmFpc2VkIHdoZW4gYXR0ZW1wdGlu
ZyB0byBjcmVhdGUgYSA6Y2xhc3M6YE1hcmtlcmAgd2l0aCBhIHN0cmluZyB0aGF0CisgICAgZG9l
cyBub3QgY29uZm9ybSB0byBQRVAgNTA4LgorCisKKy4uIGV4Y2VwdGlvbjo6IFVuZGVmaW5lZENv
bXBhcmlzb24KKworICAgIFJhaXNlZCB3aGVuIGF0dGVtcHRpbmcgdG8gZXZhbHVhdGUgYSA6Y2xh
c3M6YE1hcmtlcmAgd2l0aCBhIFBFUCA0NDAKKyAgICBjb21wYXJpc29uIG9wZXJhdG9yIGFnYWlu
c3QgdmFsdWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBQRVAgNDQwIHZlcnNpb25zLgorCisKKy4uIGV4
Y2VwdGlvbjo6IFVuZGVmaW5lZEVudmlyb25tZW50TmFtZQorCisgICAgUmFpc2VkIHdoZW4gYXR0
ZW1wdGluZyB0byBldmFsdWF0ZSBhIDpjbGFzczpgTWFya2VyYCB3aXRoIGEgdmFsdWUgdGhhdCBp
cworICAgIG1pc3NpbmcgZnJvbSB0aGUgZXZhbHVhdGlvbiBlbnZpcm9ubWVudC4KKworCisuLiBf
YFBFUCA1MDhgOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNTA4LwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9yZXF1aXJlbWVudHMucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvZG9jcy9yZXF1aXJlbWVudHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZTdjNWE4NWE1ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvZG9jcy9yZXF1aXJlbWVudHMucnN0CkBAIC0wLDAgKzEsODkgQEAKK1JlcXVpcmVtZW50cwor
PT09PT09PT09PT09CisKKy4uIGN1cnJlbnRtb2R1bGU6OiBwYWNrYWdpbmcucmVxdWlyZW1lbnRz
CisKK1BhcnNlIGEgZ2l2ZW4gcmVxdWlyZW1lbnRzIGxpbmUgZm9yIHNwZWNpZnlpbmcgZGVwZW5k
ZW5jaWVzIG9mIGEgUHl0aG9uCitwcm9qZWN0LCB1c2luZyBgUEVQIDUwOGBfIHdoaWNoIGRlZmlu
ZXMgdGhlIHNjaGVtZSB0aGF0IGhhcyBiZWVuIGltcGxlbWVudGVkCitieSB0aGlzIG1vZHVsZS4K
KworVXNhZ2UKKy0tLS0tCisKKy4uIGRvY3Rlc3Q6OgorCisgICAgPj4+IGZyb20gcGFja2FnaW5n
LnJlcXVpcmVtZW50cyBpbXBvcnQgUmVxdWlyZW1lbnQKKyAgICA+Pj4gc2ltcGxlX3JlcSA9IFJl
cXVpcmVtZW50KCJuYW1lIikKKyAgICA+Pj4gc2ltcGxlX3JlcQorICAgIDxSZXF1aXJlbWVudCgn
bmFtZScpPgorICAgID4+PiBzaW1wbGVfcmVxLm5hbWUKKyAgICAnbmFtZScKKyAgICA+Pj4gc2lt
cGxlX3JlcS51cmwgaXMgTm9uZQorICAgIFRydWUKKyAgICA+Pj4gc2ltcGxlX3JlcS5leHRyYXMK
KyAgICBzZXQoKQorICAgID4+PiBzaW1wbGVfcmVxLnNwZWNpZmllcgorICAgIDxTcGVjaWZpZXJT
ZXQoJycpPgorICAgID4+PiBzaW1wbGVfcmVxLm1hcmtlciBpcyBOb25lCisgICAgVHJ1ZQorICAg
ID4+PiAjIFJlcXVpcmVtZW50cyBjYW4gYmUgc3BlY2lmaWVkIHdpdGggZXh0cmFzLCBzcGVjaWZp
ZXJzIGFuZCBtYXJrZXJzCisgICAgPj4+IHJlcSA9IFJlcXVpcmVtZW50KCduYW1lW2Zvb10+PTIs
PDM7IHB5dGhvbl92ZXJzaW9uPiIyLjAiJykKKyAgICA+Pj4gcmVxLm5hbWUKKyAgICAnbmFtZScK
KyAgICA+Pj4gcmVxLmV4dHJhcworICAgIHsnZm9vJ30KKyAgICA+Pj4gcmVxLnNwZWNpZmllcgor
ICAgIDxTcGVjaWZpZXJTZXQoJzwzLD49MicpPgorICAgID4+PiByZXEubWFya2VyCisgICAgPE1h
cmtlcigncHl0aG9uX3ZlcnNpb24gPiAiMi4wIicpPgorICAgID4+PiAjIFJlcXVpcmVtZW50cyBj
YW4gYWxzbyBiZSBzcGVjaWZpZWQgd2l0aCBhIFVSTCwgYnV0IG1heSBub3Qgc3BlY2lmeQorICAg
ID4+PiAjIGEgdmVyc2lvbi4KKyAgICA+Pj4gdXJsX3JlcSA9IFJlcXVpcmVtZW50KCduYW1lIEAg
aHR0cHM6Ly9naXRodWIuY29tL3B5cGEgO29zX25hbWU9PSJhIicpCisgICAgPj4+IHVybF9yZXEu
bmFtZQorICAgICduYW1lJworICAgID4+PiB1cmxfcmVxLnVybAorICAgICdodHRwczovL2dpdGh1
Yi5jb20vcHlwYScKKyAgICA+Pj4gdXJsX3JlcS5leHRyYXMKKyAgICBzZXQoKQorICAgID4+PiB1
cmxfcmVxLm1hcmtlcgorICAgIDxNYXJrZXIoJ29zX25hbWUgPT0gImEiJyk+CisKKworUmVmZXJl
bmNlCistLS0tLS0tLS0KKworLi4gY2xhc3M6OiBSZXF1aXJlbWVudChyZXF1aXJlbWVudCkKKwor
ICAgIFRoaXMgY2xhc3MgYWJzdHJhY3RzIGhhbmRsaW5nIHRoZSBkZXRhaWxzIG9mIGEgcmVxdWly
ZW1lbnQgZm9yIGEgcHJvamVjdC4KKyAgICBFYWNoIHJlcXVpcmVtZW50IHdpbGwgYmUgcGFyc2Vk
IGFjY29yZGluZyB0byBQRVAgNTA4LgorCisgICAgOnBhcmFtIHN0ciByZXF1aXJlbWVudDogVGhl
IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHJlcXVpcmVtZW50LgorICAgIDpyYWlzZXMgSW52
YWxpZFJlcXVpcmVtZW50OiBJZiB0aGUgZ2l2ZW4gYGByZXF1aXJlbWVudGBgIGlzIG5vdCBwYXJz
ZWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gdGhpcyBleGNlcHRp
b24gd2lsbCBiZSByYWlzZWQuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgICBU
aGUgbmFtZSBvZiB0aGUgcmVxdWlyZW1lbnQuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiB1cmwKKwor
ICAgICAgVGhlIFVSTCwgaWYgYW55IHdoZXJlIHRvIGRvd25sb2FkIHRoZSByZXF1aXJlbWVudCBm
cm9tLiBDYW4gYmUgTm9uZS4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGV4dHJhcworCisgICAgICBB
IHNldCBvZiBleHRyYXMgdGhhdCB0aGUgcmVxdWlyZW1lbnQgc3BlY2lmaWVzLgorCisgICAgLi4g
YXR0cmlidXRlOjogc3BlY2lmaWVyCisKKyAgICAgIEEgOmNsYXNzOmB+LlNwZWNpZmllclNldGAg
b2YgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZSByZXF1aXJlbWVudC4KKworICAgIC4uIGF0
dHJpYnV0ZTo6IG1hcmtlcgorCisgICAgICBBIDpjbGFzczpgfi5NYXJrZXJgIG9mIHRoZSBtYXJr
ZXIgZm9yIHRoZSByZXF1aXJlbWVudC4gQ2FuIGJlIE5vbmUuCisKKy4uIGV4Y2VwdGlvbjo6IElu
dmFsaWRSZXF1aXJlbWVudAorCisgICAgUmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUg
YSA6Y2xhc3M6YFJlcXVpcmVtZW50YCB3aXRoIGEgc3RyaW5nIHRoYXQKKyAgICBkb2VzIG5vdCBj
b25mb3JtIHRvIFBFUCA1MDguCisKKy4uIF9gUEVQIDUwOGA6IGh0dHBzOi8vd3d3LnB5dGhvbi5v
cmcvZGV2L3BlcHMvcGVwLTA1MDgvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3Jl
cXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3JlcXVpcmVtZW50cy50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hOTVhZTE4YjRmOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3JlcXVpcmVtZW50cy50eHQKQEAgLTAs
MCArMSBAQAorZnVybwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9zZWN1cml0eS5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3NlY3VyaXR5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmY3ZmRiMDAwMjllZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL2RvY3Mvc2VjdXJpdHkucnN0CkBAIC0wLDAgKzEsMTggQEAKK1NlY3VyaXR5
Cis9PT09PT09PQorCitXZSB0YWtlIHRoZSBzZWN1cml0eSBvZiBwYWNrYWdpbmcgc2VyaW91c2x5
LiBJZiB5b3UgYmVsaWV2ZSB5b3UndmUgaWRlbnRpZmllZCBhCitzZWN1cml0eSBpc3N1ZSBpbiBp
dCwgRE8gTk9UIHJlcG9ydCB0aGUgaXNzdWUgaW4gYW55IHB1YmxpYyBmb3J1bSwgaW5jbHVkaW5n
CisoYnV0IG5vdCBsaW1pdGVkIHRvKToKKworLSBHaXRIdWIgaXNzdWUgdHJhY2tlcgorLSBPZmZp
Y2lhbCBvciB1bm9mZmljaWFsIGNoYXQgY2hhbm5lbHMKKy0gT2ZmaWNpYWwgb3IgdW5vZmZpY2lh
bCBtYWlsaW5nIGxpc3RzCisKK1BsZWFzZSByZXBvcnQgeW91ciBpc3N1ZSB0byBgYHNlY3VyaXR5
QHB5dGhvbi5vcmdgYC4gTWVzc2FnZXMgbWF5IGJlIG9wdGlvbmFsbHkKK2VuY3J5cHRlZCB3aXRo
IEdQRyB1c2luZyBrZXkgZmluZ2VycHJpbnRzIGF2YWlsYWJsZSBhdCB0aGUgYFB5dGhvbiBTZWN1
cml0eQorcGFnZSA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9uZXdzL3NlY3VyaXR5Lz5gXy4KKwor
T25jZSB5b3UndmUgc3VibWl0dGVkIGFuIGlzc3VlIHZpYSBlbWFpbCwgeW91IHNob3VsZCByZWNl
aXZlIGFuIGFja25vd2xlZGdtZW50Cit3aXRoaW4gNDggaG91cnMsIGFuZCBkZXBlbmRpbmcgb24g
dGhlIGFjdGlvbiB0byBiZSB0YWtlbiwgeW91IG1heSByZWNlaXZlCitmdXJ0aGVyIGZvbGxvdy11
cCBlbWFpbHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3NwZWNpZmllcnMucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9zcGVjaWZpZXJzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmUxZTQ1OGI4Nzg5YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL2RvY3Mvc3BlY2lmaWVycy5yc3QKQEAgLTAsMCArMSwyMjIgQEAKK1NwZWNp
ZmllcnMKKz09PT09PT09PT0KKworLi4gY3VycmVudG1vZHVsZTo6IHBhY2thZ2luZy5zcGVjaWZp
ZXJzCisKK0EgY29yZSByZXF1aXJlbWVudCBvZiBkZWFsaW5nIHdpdGggZGVwZW5kZW5jaWVzIGlz
IHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgd2hhdAordmVyc2lvbnMgb2YgYSBkZXBlbmRlbmN5IGFy
ZSBhY2NlcHRhYmxlIGZvciB5b3UuIGBQRVAgNDQwYF8gZGVmaW5lcyB0aGUKK3N0YW5kYXJkIHNw
ZWNpZmllciBzY2hlbWUgd2hpY2ggaGFzIGJlZW4gaW1wbGVtZW50ZWQgYnkgdGhpcyBtb2R1bGUu
CisKK1VzYWdlCistLS0tLQorCisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBmcm9tIHBhY2thZ2lu
Zy5zcGVjaWZpZXJzIGltcG9ydCBTcGVjaWZpZXJTZXQKKyAgICA+Pj4gZnJvbSBwYWNrYWdpbmcu
dmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorICAgID4+PiBzcGVjMSA9IFNwZWNpZmllclNldCgifj0x
LjAiKQorICAgID4+PiBzcGVjMQorICAgIDxTcGVjaWZpZXJTZXQoJ349MS4wJyk+CisgICAgPj4+
IHNwZWMyID0gU3BlY2lmaWVyU2V0KCI+PTEuMCIpCisgICAgPj4+IHNwZWMyCisgICAgPFNwZWNp
ZmllclNldCgnPj0xLjAnKT4KKyAgICA+Pj4gIyBXZSBjYW4gY29tYmluZSBzcGVjaWZpZXJzCisg
ICAgPj4+IGNvbWJpbmVkX3NwZWMgPSBzcGVjMSAmIHNwZWMyCisgICAgPj4+IGNvbWJpbmVkX3Nw
ZWMKKyAgICA8U3BlY2lmaWVyU2V0KCc+PTEuMCx+PTEuMCcpPgorICAgID4+PiAjIFdlIGNhbiBh
bHNvIGltcGxpY2l0bHkgY29tYmluZSBhIHN0cmluZyBzcGVjaWZpZXIKKyAgICA+Pj4gY29tYmlu
ZWRfc3BlYyAmPSAiIT0xLjEiCisgICAgPj4+IGNvbWJpbmVkX3NwZWMKKyAgICA8U3BlY2lmaWVy
U2V0KCchPTEuMSw+PTEuMCx+PTEuMCcpPgorICAgID4+PiAjIENyZWF0ZSBhIGZldyB2ZXJzaW9u
cyB0byBjaGVjayBmb3IgY29udGFpbnMuCisgICAgPj4+IHYxID0gVmVyc2lvbigiMS4wYTUiKQor
ICAgID4+PiB2MiA9IFZlcnNpb24oIjEuMCIpCisgICAgPj4+ICMgV2UgY2FuIGNoZWNrIGEgdmVy
c2lvbiBvYmplY3QgdG8gc2VlIGlmIGl0IGZhbGxzIHdpdGhpbiBhIHNwZWNpZmllcgorICAgID4+
PiB2MSBpbiBjb21iaW5lZF9zcGVjCisgICAgRmFsc2UKKyAgICA+Pj4gdjIgaW4gY29tYmluZWRf
c3BlYworICAgIFRydWUKKyAgICA+Pj4gIyBXZSBjYW4gZXZlbiBkbyB0aGUgc2FtZSB3aXRoIGEg
c3RyaW5nIGJhc2VkIHZlcnNpb24KKyAgICA+Pj4gIjEuNCIgaW4gY29tYmluZWRfc3BlYworICAg
IFRydWUKKyAgICA+Pj4gIyBGaW5hbGx5IHdlIGNhbiBmaWx0ZXIgYSBsaXN0IG9mIHZlcnNpb25z
IHRvIGdldCBvbmx5IHRob3NlIHdoaWNoIGFyZQorICAgID4+PiAjIGNvbnRhaW5lZCB3aXRoaW4g
b3VyIHNwZWNpZmllci4KKyAgICA+Pj4gbGlzdChjb21iaW5lZF9zcGVjLmZpbHRlcihbdjEsIHYy
LCAiMS40Il0pKQorICAgIFs8VmVyc2lvbignMS4wJyk+LCAnMS40J10KKworCitSZWZlcmVuY2UK
Ky0tLS0tLS0tLQorCisuLiBjbGFzczo6IFNwZWNpZmllclNldChzcGVjaWZpZXJzLCBwcmVyZWxl
YXNlcz1Ob25lKQorCisgICAgVGhpcyBjbGFzcyBhYnN0cmFjdHMgaGFuZGxpbmcgc3BlY2lmeWlu
ZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGEgcHJvamVjdC4gSXQKKyAgICBjYW4gYmUgcGFzc2VkIGEg
c2luZ2xlIHNwZWNpZmllciAoYGA+PTMuMGBgKSwgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgor
ICAgIHNwZWNpZmllcnMgKGBgPj0zLjAsIT0zLjFgYCksIG9yIG5vIHNwZWNpZmllciBhdCBhbGwu
IEVhY2ggaW5kaXZpZHVhbAorICAgIHNwZWNpZmllciB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSBw
YXJzZWQgYXMgYSBQRVAgNDQwIHNwZWNpZmllcgorICAgICg6Y2xhc3M6YFNwZWNpZmllcmApIG9y
IGFzIGEgbGVnYWN5LCBzZXR1cHRvb2xzIHN0eWxlIHNwZWNpZmllcgorICAgIChkZXByZWNhdGVk
IDpjbGFzczpgTGVnYWN5U3BlY2lmaWVyYCkuIFlvdSBtYXkgY29tYmluZQorICAgIDpjbGFzczpg
U3BlY2lmaWVyU2V0YCBpbnN0YW5jZXMgdXNpbmcgdGhlIGBgJmBgIG9wZXJhdG9yCisgICAgKGBg
U3BlY2lmaWVyU2V0KCI+MiIpICYgU3BlY2lmaWVyU2V0KCI8NCIpYGApLgorCisgICAgQm90aCB0
aGUgbWVtYmVyc2hpcCB0ZXN0cyBhbmQgdGhlIGNvbWJpbmF0aW9uIHN1cHBvcnQgdXNpbmcgcmF3
IHN0cmluZ3MKKyAgICBpbiBwbGFjZSBvZiBhbHJlYWR5IGluc3RhbnRpYXRlZCBvYmplY3RzLgor
CisgICAgOnBhcmFtIHN0ciBzcGVjaWZpZXJzOiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m
IGEgc3BlY2lmaWVyIG9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hLXNlcGFy
YXRlZCBsaXN0IG9mIHNwZWNpZmllcnMgd2hpY2ggd2lsbAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmUgcGFyc2VkIGFuZCBub3JtYWxpemVkIGJlZm9yZSB1c2UuCisgICAgOnBhcmFtIGJv
b2wgcHJlcmVsZWFzZXM6IFRoaXMgdGVsbHMgdGhlIFNwZWNpZmllclNldCBpZiBpdCBzaG91bGQg
YWNjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXJlbGVhc2UgdmVyc2lvbnMg
aWYgYXBwbGljYWJsZSBvciBub3QuIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0IG9mIGBgTm9uZWBgIHdpbGwgYXV0b2RldGVjdCBpdCBmcm9tIHRoZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnaXZlbiBzcGVjaWZpZXJzLgorICAgIDpyYWlzZXMgSW52YWxp
ZFNwZWNpZmllcjogSWYgdGhlIGdpdmVuIGBgc3BlY2lmaWVyc2BgIGFyZSBub3QgcGFyc2VhYmxl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIHRoaXMgZXhjZXB0aW9uIHdpbGwg
YmUgcmFpc2VkLgorCisgICAgLi4gYXR0cmlidXRlOjogcHJlcmVsZWFzZXMKKworICAgICAgICBB
IGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgOmNsYXNzOmBTcGVjaWZpZXJT
ZXRgCisgICAgICAgIHJlcHJlc2VudHMgYSBzcGVjaWZpZXIgdGhhdCBpbmNsdWRlcyBhIHByZS1y
ZWxlYXNlIHZlcnNpb25zLiBUaGlzIGNhbiBiZQorICAgICAgICBzZXQgdG8gZWl0aGVyIGBgVHJ1
ZWBgIG9yIGBgRmFsc2VgYCB0byBleHBsaWNpdGx5IGVuYWJsZSBvciBkaXNhYmxlCisgICAgICAg
IHByZXJlbGVhc2VzIG9yIGl0IGNhbiBiZSBzZXQgdG8gYGBOb25lYGAgKHRoZSBkZWZhdWx0KSB0
byBlbmFibGUKKyAgICAgICAgYXV0b2RldGVjdGlvbi4KKworICAgIC4uIG1ldGhvZDo6IF9fY29u
dGFpbnNfXyh2ZXJzaW9uKQorCisgICAgICAgIFRoaXMgaXMgdGhlIG1vcmUgUHl0aG9uaWMgdmVy
c2lvbiBvZiA6bWV0aDpgY29udGFpbnMoKWAsIGJ1dCBkb2VzCisgICAgICAgIG5vdCBhbGxvdyB5
b3UgdG8gb3ZlcnJpZGUgdGhlIGBgcHJlcmVsZWFzZXNgYCBhcmd1bWVudC4gIElmIHlvdQorICAg
ICAgICBuZWVkIHRoYXQsIHVzZSA6bWV0aDpgY29udGFpbnMoKWAuCisKKyAgICAgICAgU2VlIDpt
ZXRoOmBjb250YWlucygpYC4KKworICAgIC4uIG1ldGhvZDo6IGNvbnRhaW5zKHZlcnNpb24sIHBy
ZXJlbGVhc2VzPU5vbmUpCisKKyAgICAgICAgRGV0ZXJtaW5lcyBpZiBgYHZlcnNpb25gYCwgd2hp
Y2ggY2FuIGJlIGVpdGhlciBhIHZlcnNpb24gc3RyaW5nLCBhCisgICAgICAgIDpjbGFzczpgVmVy
c2lvbmAsIG9yIGEgZGVwcmVjYXRlZCA6Y2xhc3M6YExlZ2FjeVZlcnNpb25gIG9iamVjdCwgaXMK
KyAgICAgICAgY29udGFpbmVkIHdpdGhpbiB0aGlzIHNldCBvZiBzcGVjaWZpZXJzLgorCisgICAg
ICAgIFRoaXMgd2lsbCBlaXRoZXIgbWF0Y2ggb3Igbm90IG1hdGNoIHByZXJlbGVhc2VzIGJhc2Vk
IG9uIHRoZQorICAgICAgICBgYHByZXJlbGVhc2VzYGAgcGFyYW1ldGVyLiBXaGVuIGBgcHJlcmVs
ZWFzZXNgYCBpcyBzZXQgdG8gYGBOb25lYGAKKyAgICAgICAgKHRoZSBkZWZhdWx0KSBpdCB3aWxs
IHVzZSB0aGUgYGBTcGVjaWZpZXIoKS5wcmVyZWxlYXNlc2BgIGF0dHJpYnV0ZSB0bworICAgICAg
ICBkZXRlcm1pbmUgaWYgdG8gYWxsb3cgdGhlbS4gT3RoZXJ3aXNlIGl0IHdpbGwgdXNlIHRoZSBi
b29sZWFuIHZhbHVlIG9mCisgICAgICAgIHRoZSBwYXNzZWQgaW4gdmFsdWUgdG8gZGV0ZXJtaW5l
IGlmIHRvIGFsbG93IHRoZW0gb3Igbm90LgorCisgICAgLi4gbWV0aG9kOjogX19sZW5fXygpCisK
KyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwZWNpZmllcnMgaW4gdGhpcyBzcGVjaWZp
ZXIgc2V0LgorCisgICAgLi4gbWV0aG9kOjogX19pdGVyX18oKQorCisgICAgICAgIFJldHVybnMg
YW4gaXRlcmF0b3Igb3ZlciBhbGwgdGhlIHVuZGVybHlpbmcgOmNsYXNzOmBTcGVjaWZpZXJgIChv
cgorICAgICAgICBkZXByZWNhdGVkIDpjbGFzczpgTGVnYWN5U3BlY2lmaWVyYCkgaW5zdGFuY2Vz
IGluIHRoaXMgc3BlY2lmaWVyIHNldC4KKworICAgIC4uIG1ldGhvZDo6IGZpbHRlcihpdGVyYWJs
ZSwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgICAgICBUYWtlcyBhbiBpdGVyYWJsZSB0aGF0IGNh
biBjb250YWluIHZlcnNpb24gc3RyaW5ncywgOmNsYXNzOmB+LlZlcnNpb25gLAorICAgICAgICBh
bmQgZGVwcmVjYXRlZCA6Y2xhc3M6YH4uTGVnYWN5VmVyc2lvbmAgaW5zdGFuY2VzIGFuZCB3aWxs
IHRoZW4gZmlsdGVyCisgICAgICAgIGl0LCByZXR1cm5pbmcgYW4gaXRlcmFibGUgdGhhdCBjb250
YWlucyBvbmx5IGl0ZW1zIHdoaWNoIG1hdGNoIHRoZQorICAgICAgICBydWxlcyBvZiB0aGlzIHNw
ZWNpZmllciBvYmplY3QuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgc21hcnRlciB0aGFuIGp1
c3QKKyAgICAgICAgYGBmaWx0ZXIoU3BlY2lmaWVyKCkuY29udGFpbnMsIFsuLi5dKWBgIGJlY2F1
c2UgaXQgaW1wbGVtZW50cyB0aGUgcnVsZQorICAgICAgICBmcm9tIFBFUCA0NDAgd2hlcmUgYSBw
cmVyZWxlYXNlIGl0ZW0gU0hPVUxEIGJlIGFjY2VwdGVkIGlmIG5vIG90aGVyCisgICAgICAgIHZl
cnNpb25zIG1hdGNoIHRoZSBnaXZlbiBzcGVjaWZpZXIuCisKKyAgICAgICAgVGhlIGBgcHJlcmVs
ZWFzZXNgYCBwYXJhbWV0ZXIgZnVuY3Rpb25zIHNpbWlsYXJseSB0byB0aGF0IG9mIHRoZSBzYW1l
CisgICAgICAgIHBhcmFtZXRlciBpbiBgYGNvbnRhaW5zYGAuIElmIHRoZSB2YWx1ZSBpcyBgYE5v
bmVgYCAodGhlIGRlZmF1bHQpIHRoZW4KKyAgICAgICAgaXQgd2lsbCBpbnRlbGxpZ2VudGx5IGRl
Y2lkZSBpZiB0byBhbGxvdyBwcmVyZWxlYXNlcyBiYXNlZCBvbiB0aGUKKyAgICAgICAgc3BlY2lm
aWVyLCB0aGUgYGBTcGVjaWZpZXIoKS5wcmVyZWxlYXNlc2BgIHZhbHVlLCBhbmQgdGhlIFBFUCA0
NDAKKyAgICAgICAgcnVsZXMuIE90aGVyd2lzZSBpdCB3aWxsIGFjdCBhcyBhIGJvb2xlYW4gd2hp
Y2ggd2lsbCBlbmFibGUgb3IgZGlzYWJsZQorICAgICAgICBhbGwgcHJlcmVsZWFzZSB2ZXJzaW9u
cyBmcm9tIGJlaW5nIGluY2x1ZGVkLgorCisKKy4uIGNsYXNzOjogU3BlY2lmaWVyKHNwZWNpZmll
ciwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgIFRoaXMgY2xhc3MgYWJzdHJhY3RzIHRoZSBoYW5k
bGluZyBvZiBhIHNpbmdsZSBgUEVQIDQ0MGBfIGNvbXBhdGlibGUKKyAgICBzcGVjaWZpZXIuIEl0
IGlzIGdlbmVyYWxseSBub3QgcmVxdWlyZWQgdG8gaW5zdGFudGlhdGUgdGhpcyBtYW51YWxseSwK
KyAgICBwcmVmZXJyaW5nIGluc3RlYWQgdG8gd29yayB3aXRoIDpjbGFzczpgU3BlY2lmaWVyU2V0
YC4KKworICAgIDpwYXJhbSBzdHIgc3BlY2lmaWVyOiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IG9mIGEgc3BlY2lmaWVyIHdoaWNoIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmUg
cGFyc2VkIGFuZCBub3JtYWxpemVkIGJlZm9yZSB1c2UuCisgICAgOnBhcmFtIGJvb2wgcHJlcmVs
ZWFzZXM6IFRoaXMgdGVsbHMgdGhlIHNwZWNpZmllciBpZiBpdCBzaG91bGQgYWNjZXB0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByZXJlbGVhc2UgdmVyc2lvbnMgaWYgYXBwbGljYWJs
ZSBvciBub3QuIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IG9mIGBg
Tm9uZWBgIHdpbGwgYXV0b2RldGVjdCBpdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnaXZlbiBzcGVjaWZpZXJzLgorICAgIDpyYWlzZXMgSW52YWxpZFNwZWNpZmllcjog
SWYgdGhlIGBgc3BlY2lmaWVyYGAgZG9lcyBub3QgY29uZm9ybSB0byBQRVAgNDQwCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBhbnkgd2F5IHRoZW4gdGhpcyBleGNlcHRpb24gd2ls
bCBiZSByYWlzZWQuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBvcGVyYXRvcgorCisgICAgICAgIFRo
ZSBzdHJpbmcgdmFsdWUgb2YgdGhlIG9wZXJhdG9yIHBhcnQgb2YgdGhpcyBzcGVjaWZpZXIuCisK
KyAgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisKKyAgICAgICAgVGhlIHN0cmluZyB2ZXJzaW9u
IG9mIHRoZSB2ZXJzaW9uIHBhcnQgb2YgdGhpcyBzcGVjaWZpZXIuCisKKyAgICAuLiBhdHRyaWJ1
dGU6OiBwcmVyZWxlYXNlcworCisgICAgICAgIFNlZSA6YXR0cjpgU3BlY2lmaWVyU2V0LnByZXJl
bGVhc2VzYC4KKworICAgIC4uIG1ldGhvZDo6IF9fY29udGFpbnNfXyh2ZXJzaW9uKQorCisgICAg
ICAgIFNlZSA6bWV0aDpgU3BlY2lmaWVyU2V0Ll9fY29udGFpbnNfXygpYC4KKworICAgIC4uIG1l
dGhvZDo6IGNvbnRhaW5zKHZlcnNpb24sIHByZXJlbGVhc2VzPU5vbmUpCisKKyAgICAgICAgU2Vl
IDptZXRoOmBTcGVjaWZpZXJTZXQuY29udGFpbnMoKWAuCisKKyAgICAuLiBtZXRob2Q6OiBmaWx0
ZXIoaXRlcmFibGUsIHByZXJlbGVhc2VzPU5vbmUpCisKKyAgICAgICAgU2VlIDptZXRoOmBTcGVj
aWZpZXJTZXQuZmlsdGVyKClgLgorCisKKy4uIGNsYXNzOjogTGVnYWN5U3BlY2lmaWVyKHNwZWNp
ZmllciwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgIC4uIGRlcHJlY2F0ZWQ6OiAyMC41CisKKyAg
ICAgICAgVXNlIDpjbGFzczpgU3BlY2lmaWVyYCBpbnN0ZWFkLgorCisgICAgVGhpcyBjbGFzcyBh
YnN0cmFjdHMgdGhlIGhhbmRsaW5nIG9mIGEgc2luZ2xlIGxlZ2FjeSwgc2V0dXB0b29scyBzdHls
ZQorICAgIHNwZWNpZmllci4gSXQgaXMgZ2VuZXJhbGx5IG5vdCByZXF1aXJlZCB0byBpbnN0YW50
aWF0ZSB0aGlzIG1hbnVhbGx5LAorICAgIHByZWZlcnJpbmcgaW5zdGVhZCB0byB3b3JrIHdpdGgg
OmNsYXNzOmBTcGVjaWZpZXJTZXRgLgorCisgICAgOnBhcmFtIHN0ciBzcGVjaWZpZXI6IFRoZSBz
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzcGVjaWZpZXIgd2hpY2ggd2lsbAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBiZSBwYXJzZWQgYW5kIG5vcm1hbGl6ZWQgYmVmb3JlIHVzZS4KKyAg
ICA6cGFyYW0gYm9vbCBwcmVyZWxlYXNlczogVGhpcyB0ZWxscyB0aGUgc3BlY2lmaWVyIGlmIGl0
IHNob3VsZCBhY2NlcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlcmVsZWFzZSB2
ZXJzaW9ucyBpZiBhcHBsaWNhYmxlIG9yIG5vdC4gVGhlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQgb2YgYGBOb25lYGAgd2lsbCBhdXRvZGV0ZWN0IGl0IGZyb20gdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIHNwZWNpZmllcnMuCisgICAgOnJhaXNl
cyBJbnZhbGlkU3BlY2lmaWVyOiBJZiB0aGUgYGBzcGVjaWZpZXJgYCBpcyBub3QgcGFyc2VhYmxl
IHRoZW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSByYWlzZWQu
CisKKyAgICAuLiBhdHRyaWJ1dGU6OiBvcGVyYXRvcgorCisgICAgICAgIFRoZSBzdHJpbmcgdmFs
dWUgb2YgdGhlIG9wZXJhdG9yIHBhcnQgb2YgdGhpcyBzcGVjaWZpZXIuCisKKyAgICAuLiBhdHRy
aWJ1dGU6OiB2ZXJzaW9uCisKKyAgICAgICAgVGhlIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2ZXJz
aW9uIHBhcnQgb2YgdGhpcyBzcGVjaWZpZXIuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBwcmVyZWxl
YXNlcworCisgICAgICAgIFNlZSA6YXR0cjpgU3BlY2lmaWVyU2V0LnByZXJlbGVhc2VzYC4KKwor
ICAgIC4uIG1ldGhvZDo6IF9fY29udGFpbnNfXyh2ZXJzaW9uKQorCisgICAgICAgIFNlZSA6bWV0
aDpgU3BlY2lmaWVyU2V0Ll9fY29udGFpbnNfXygpYC4KKworICAgIC4uIG1ldGhvZDo6IGNvbnRh
aW5zKHZlcnNpb24sIHByZXJlbGVhc2VzPU5vbmUpCisKKyAgICAgICAgU2VlIDptZXRoOmBTcGVj
aWZpZXJTZXQuY29udGFpbnMoKWAuCisKKyAgICAuLiBtZXRob2Q6OiBmaWx0ZXIoaXRlcmFibGUs
IHByZXJlbGVhc2VzPU5vbmUpCisKKyAgICAgICAgU2VlIDptZXRoOmBTcGVjaWZpZXJTZXQuZmls
dGVyKClgLgorCisKKy4uIGV4Y2VwdGlvbjo6IEludmFsaWRTcGVjaWZpZXIKKworICAgIFJhaXNl
ZCB3aGVuIGF0dGVtcHRpbmcgdG8gY3JlYXRlIGEgOmNsYXNzOmBTcGVjaWZpZXJgIHdpdGggYSBz
cGVjaWZpZXIKKyAgICBzdHJpbmcgdGhhdCBkb2VzIG5vdCBjb25mb3JtIHRvIGBQRVAgNDQwYF8u
CisKKworLi4gX2BQRVAgNDQwYDogaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAt
MDQ0MC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvdGFncy5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9kb2NzL3RhZ3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNGQ3ZTEwYWI2MzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9j
cy90YWdzLnJzdApAQCAtMCwwICsxLDIyMCBAQAorVGFncworPT09PQorCisuLiBjdXJyZW50bW9k
dWxlOjogcGFja2FnaW5nLnRhZ3MKKworV2hlZWxzIGVuY29kZSB0aGUgUHl0aG9uIGludGVycHJl
dGVyLCBBQkksIGFuZCBwbGF0Zm9ybSB0aGF0IHRoZXkgc3VwcG9ydCBpbgordGhlaXIgZmlsZW5h
bWVzIHVzaW5nIGBwbGF0Zm9ybSBjb21wYXRpYmlsaXR5IHRhZ3NgXy4gVGhpcyBtb2R1bGUgcHJv
dmlkZXMKK3N1cHBvcnQgZm9yIGJvdGggcGFyc2luZyB0aGVzZSB0YWdzIGFzIHdlbGwgYXMgZGlz
Y292ZXJpbmcgd2hhdCB0YWdzIHRoZQorcnVubmluZyBQeXRob24gaW50ZXJwcmV0ZXIgc3VwcG9y
dHMuCisKK1VzYWdlCistLS0tLQorCisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBmcm9tIHBhY2th
Z2luZy50YWdzIGltcG9ydCBUYWcsIHN5c190YWdzCisgICAgPj4+IGltcG9ydCBzeXMKKyAgICA+
Pj4gbG9va2luZ19mb3IgPSBUYWcoInB5e21ham9yfSIuZm9ybWF0KG1ham9yPXN5cy52ZXJzaW9u
X2luZm8ubWFqb3IpLCAibm9uZSIsICJhbnkiKQorICAgID4+PiBzdXBwb3J0ZWRfdGFncyA9IGxp
c3Qoc3lzX3RhZ3MoKSkKKyAgICA+Pj4gbG9va2luZ19mb3IgaW4gc3VwcG9ydGVkX3RhZ3MKKyAg
ICBUcnVlCisgICAgPj4+IHJlYWxseV9vbGQgPSBUYWcoInB5MSIsICJub25lIiwgImFueSIpCisg
ICAgPj4+IHdoZWVscyA9IHtyZWFsbHlfb2xkLCBsb29raW5nX2Zvcn0KKyAgICA+Pj4gYmVzdF93
aGVlbCA9IE5vbmUKKyAgICA+Pj4gZm9yIHN1cHBvcnRlZF90YWcgaW4gc3VwcG9ydGVkX3RhZ3M6
CisgICAgLi4uICAgICBmb3Igd2hlZWxfdGFnIGluIHdoZWVsczoKKyAgICAuLi4gICAgICAgICBp
ZiBzdXBwb3J0ZWRfdGFnID09IHdoZWVsX3RhZzoKKyAgICAuLi4gICAgICAgICAgICAgYmVzdF93
aGVlbCA9IHdoZWVsX3RhZworICAgIC4uLiAgICAgICAgICAgICBicmVhaworICAgID4+PiBiZXN0
X3doZWVsID09IGxvb2tpbmdfZm9yCisgICAgVHJ1ZQorCitSZWZlcmVuY2UKKy0tLS0tLS0tLQor
CitIaWdoIExldmVsIEludGVyZmFjZQorJycnJycnJycnJycnJycnJycnJycKKworVGhlIGZvbGxv
d2luZyBmdW5jdGlvbnMgYXJlIHRoZSBtYWluIGludGVyZmFjZSB0byB0aGUgbGlicmFyeSwgYW5k
IGFyZSB0eXBpY2FsbHkgdGhlIG9ubHkKK2l0ZW1zIHRoYXQgYXBwbGljYXRpb25zIHNob3VsZCBu
ZWVkIHRvIHJlZmVyZW5jZSwgaW4gb3JkZXIgdG8gcGFyc2UgYW5kIGNoZWNrIHRhZ3MuCisKKy4u
IGNsYXNzOjogVGFnKGludGVycHJldGVyLCBhYmksIHBsYXRmb3JtKQorCisgICAgQSByZXByZXNl
bnRhdGlvbiBvZiB0aGUgdGFnIHRyaXBsZSBmb3IgYSB3aGVlbC4gSW5zdGFuY2VzIGFyZSBjb25z
aWRlcmVkCisgICAgaW1tdXRhYmxlIGFuZCB0aHVzIGFyZSBoYXNoYWJsZS4gRXF1YWxpdHkgY2hl
Y2tpbmcgaXMgYWxzbyBzdXBwb3J0ZWQuCisKKyAgICA6cGFyYW0gc3RyIGludGVycHJldGVyOiBU
aGUgaW50ZXJwcmV0ZXIgbmFtZSwgZS5nLiBgYCJweSJgYAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzZWUgOmF0dHI6YElOVEVSUFJFVEVSX1NIT1JUX05BTUVTYCBmb3IgbWFwcGluZwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlbGwta25vd24gaW50ZXJwcmV0ZXIgbmFtZXMg
dG8gdGhlaXIgc2hvcnQgbmFtZXMpLgorICAgIDpwYXJhbSBzdHIgYWJpOiBUaGUgQUJJIHRoYXQg
YSB3aGVlbCBzdXBwb3J0cywgZS5nLiBgYCJjcDM3bSJgYC4KKyAgICA6cGFyYW0gc3RyIHBsYXRm
b3JtOiBUaGUgT1MvcGxhdGZvcm0gdGhlIHdoZWVsIHN1cHBvcnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGUuZy4gYGAid2luX2FtZDY0ImBgLgorCisgICAgLi4gYXR0cmlidXRlOjogaW50
ZXJwcmV0ZXIKKworICAgICAgICBUaGUgaW50ZXJwcmV0ZXIgbmFtZS4KKworICAgIC4uIGF0dHJp
YnV0ZTo6IGFiaQorCisgICAgICAgIFRoZSBzdXBwb3J0ZWQgQUJJLgorCisgICAgLi4gYXR0cmli
dXRlOjogcGxhdGZvcm0KKworICAgICAgICBUaGUgT1MvcGxhdGZvcm0uCisKKworLi4gZnVuY3Rp
b246OiBwYXJzZV90YWcodGFnKQorCisgICAgUGFyc2VzIHRoZSBwcm92aWRlZCBgYHRhZ2BgIGlu
dG8gYSBzZXQgb2YgOmNsYXNzOmBUYWdgIGluc3RhbmNlcy4KKworICAgIFJldHVybmluZyBhIHNl
dCBpcyByZXF1aXJlZCBkdWUgdG8gdGhlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIHRhZyBpcyBhCisg
ICAgYGNvbXByZXNzZWQgdGFnIHNldGBfLCBlLmcuIGBgInB5Mi5weTMtbm9uZS1hbnkiYGAgd2hp
Y2ggc3VwcG9ydHMgYm90aAorICAgIFB5dGhvbiAyIGFuZCBQeXRob24gMy4KKworICAgIDpwYXJh
bSBzdHIgdGFnOiBUaGUgdGFnIHRvIHBhcnNlLCBlLmcuIGBgInB5My1ub25lLWFueSJgYC4KKwor
CisuLiBmdW5jdGlvbjo6IHN5c190YWdzKCosIHdhcm49RmFsc2UpCisKKyAgICBZaWVsZHMgdGhl
IHRhZ3MgdGhhdCB0aGUgcnVubmluZyBpbnRlcnByZXRlciBzdXBwb3J0cy4KKworICAgIFRoZSBp
dGVyYWJsZSBpcyBvcmRlcmVkIHNvIHRoYXQgdGhlIGJlc3QtbWF0Y2hpbmcgdGFnIGlzIGZpcnN0
IGluIHRoZQorICAgIHNlcXVlbmNlLiBUaGUgZXhhY3QgcHJlZmVyZW50aWFsIG9yZGVyIHRvIHRh
Z3MgaXMgaW50ZXJwcmV0ZXItc3BlY2lmaWMsIGJ1dAorICAgIGluIGdlbmVyYWwgdGhlIHRhZyBp
bXBvcnRhbmNlIGlzIGluIHRoZSBvcmRlciBvZjoKKworICAgIDEuIEludGVycHJldGVyCisgICAg
Mi4gUGxhdGZvcm0KKyAgICAzLiBBQkkKKworICAgIFRoaXMgb3JkZXIgaXMgZHVlIHRvIHRoZSBm
YWN0IHRoYXQgYW4gQUJJIGlzIGluaGVyZW50bHkgdGllZCB0byB0aGUKKyAgICBwbGF0Zm9ybSwg
YnV0IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaXMgbm90IG5lY2Vzc2FyaWx5IHRpZWQgdG8gdGhl
IEFCSS4gVGhlCisgICAgaW50ZXJwcmV0ZXIgaXMgdGhlIG1vc3QgaW1wb3J0YW50IHRhZyBhcyBp
dCBkaWN0YXRlcyBiYXNpYyBzdXBwb3J0IGZvciBhbnkKKyAgICB3aGVlbC4KKworICAgIFRoZSBm
dW5jdGlvbiByZXR1cm5zIGFuIGl0ZXJhYmxlIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgcG9z
c2libGUKKyAgICBzaG9ydC1jaXJjdWl0aW5nIG9mIHRhZyBnZW5lcmF0aW9uIGlmIHRoZSBlbnRp
cmUgc2VxdWVuY2UgaXMgbm90IG5lY2Vzc2FyeQorICAgIGFuZCB0YWcgY2FsY3VsYXRpb24gaGFw
cGVucyB0byBiZSBleHBlbnNpdmUuCisKKyAgICA6cGFyYW0gYm9vbCB3YXJuOiBXaGV0aGVyIHdh
cm5pbmdzIHNob3VsZCBiZSBsb2dnZWQuIERlZmF1bHRzIHRvIGBgRmFsc2VgYC4KKworCitMb3cg
TGV2ZWwgSW50ZXJmYWNlCisnJycnJycnJycnJycnJycnJycnCisKK1RoZSBmb2xsb3dpbmcgZnVu
Y3Rpb25zIGFyZSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gVGhleSBzaG91bGQg
dHlwaWNhbGx5IG5vdAorYmUgbmVlZGVkIGluIGFwcGxpY2F0aW9uIGNvZGUsIHVubGVzcyB0aGUg
YXBwbGljYXRpb24gaGFzIHNwZWNpYWxpc2VkIHJlcXVpcmVtZW50cyAoZm9yCitleGFtcGxlLCBj
b25zdHJ1Y3Rpbmcgc2V0cyBvZiBzdXBwb3J0ZWQgdGFncyBmb3IgZW52aXJvbm1lbnRzIG90aGVy
IHRoYW4gdGhlIHJ1bm5pbmcKK2ludGVycHJldGVyKS4KKworVGhlc2UgZnVuY3Rpb25zIGNhcHR1
cmUgdGhlIHByZWNpc2UgZGV0YWlscyBvZiB3aGljaCBlbnZpcm9ubWVudHMgc3VwcG9ydCB3aGlj
aCB0YWdzLiBUaGF0CitpbmZvcm1hdGlvbiBpcyBub3QgZGVmaW5lZCBpbiB0aGUgY29tcGF0aWJp
bGl0eSB0YWcgc3RhbmRhcmRzIGJ1dCBpcyBub3RlZCBhcyBiZWluZyB1cAordG8gdGhlIGltcGxl
bWVudGF0aW9uIHRvIHByb3ZpZGUuCisKKworLi4gYXR0cmlidXRlOjogSU5URVJQUkVURVJfU0hP
UlRfTkFNRVMKKworICAgIEEgZGljdGlvbmFyeSBtYXBwaW5nIGludGVycHJldGVyIG5hbWVzIHRv
IHRoZWlyIGBhYmJyZXZpYXRpb24gY29kZXNgXworICAgIChlLmcuIGBgImNweXRob24iYGAgaXMg
YGAiY3AiYGApLiBBbGwgaW50ZXJwcmV0ZXIgbmFtZXMgYXJlIGxvd2VyLWNhc2UuCisKKworLi4g
ZnVuY3Rpb246OiBpbnRlcnByZXRlcl9uYW1lKCkKKworICAgIFJldHVybnMgdGhlIHJ1bm5pbmcg
aW50ZXJwcmV0ZXIncyBuYW1lLgorCisgICAgVGhpcyB0eXBpY2FsbHkgYWN0cyBhcyB0aGUgcHJl
Zml4IHRvIHRoZSA6YXR0cjpgflRhZy5pbnRlcnByZXRlcmAgdGFnLgorCisKKy4uIGZ1bmN0aW9u
OjogaW50ZXJwcmV0ZXJfdmVyc2lvbigqLCB3YXJuPUZhbHNlKQorCisgICAgUmV0dXJucyB0aGUg
cnVubmluZyBpbnRlcnByZXRlcidzIHZlcnNpb24uCisKKyAgICBUaGlzIHR5cGljYWxseSBhY3Rz
IGFzIHRoZSBzdWZmaXggdG8gdGhlIDphdHRyOmB+VGFnLmludGVycHJldGVyYCB0YWcuCisKKwor
Li4gZnVuY3Rpb246OiBtYWNfcGxhdGZvcm1zKHZlcnNpb249Tm9uZSwgYXJjaD1Ob25lKQorCisg
ICAgWWllbGRzIHRoZSA6YXR0cjpgflRhZy5wbGF0Zm9ybWAgdGFncyBmb3IgbWFjT1MuCisKKyAg
ICA6cGFyYW0gdHVwbGUgdmVyc2lvbjogQSB0d28taXRlbSB0dXBsZSBwcmVzZW50aW5nIHRoZSB2
ZXJzaW9uIG9mIG1hY09TLgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byB0
aGUgY3VycmVudCBzeXN0ZW0ncyB2ZXJzaW9uLgorICAgIDpwYXJhbSBzdHIgYXJjaDogVGhlIENQ
VSBhcmNoaXRlY3R1cmUuIERlZmF1bHRzIHRvIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlCisgICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50IHN5c3RlbSwgZS5nLiBgYCJ4ODZfNjQiYGAuCisKKyAg
ICAuLiBub3RlOjoKKyAgICAgICAgRXF1aXZhbGVudCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgbWFq
b3IgcGxhdGZvcm1zIGlzIHB1cnBvc2VmdWxseSBub3QKKyAgICAgICAgcHJvdmlkZWQ6CisKKyAg
ICAgICAgLSBPbiBXaW5kb3dzLCBwbGF0Zm9ybSBjb21wYXRpYmlsaXR5IGlzIHN0YXRpY2FsbHkg
c3BlY2lmaWVkCisgICAgICAgIC0gT24gTGludXgsIGNvZGUgbXVzdCBiZSBydW4gb24gdGhlIHN5
c3RlbSBpdHNlbGYgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgY29tcGF0aWJpbGl0eQorCisKKy4u
IGZ1bmN0aW9uOjogY29tcGF0aWJsZV90YWdzKHB5dGhvbl92ZXJzaW9uPU5vbmUsIGludGVycHJl
dGVyPU5vbmUsIHBsYXRmb3Jtcz1Ob25lKQorCisgICAgWWllbGRzIHRoZSB0YWdzIGZvciBhbiBp
bnRlcnByZXRlciBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhvbiB2ZXJzaW9uCisgICAgc3BlY2lm
aWVkIGJ5IGBgcHl0aG9uX3ZlcnNpb25gYC4KKworICAgIFRoZSBzcGVjaWZpYyB0YWdzIGdlbmVy
YXRlZCBhcmU6CisKKyAgICAtIGBgcHkqLW5vbmUtPHBsYXRmb3JtPmBgCisgICAgLSBgYDxpbnRl
cnByZXRlcj4tbm9uZS1hbnlgYCBpZiBgYGludGVycHJldGVyYGAgaXMgcHJvdmlkZWQKKyAgICAt
IGBgcHkqLW5vbmUtYW55YGAKKworICAgIDpwYXJhbSBTZXF1ZW5jZSBweXRob25fdmVyc2lvbjog
QSBvbmUtIG9yIHR3by1pdGVtIHNlcXVlbmNlIHJlcHJlc2VudGluZyB0aGUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgdmVyc2lvbiBvZiBQeXRob24uIERlZmF1
bHRzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYHN5cy52ZXJzaW9uX2lu
Zm9bOjJdYGAuCisgICAgOnBhcmFtIHN0ciBpbnRlcnByZXRlcjogVGhlIG5hbWUgb2YgdGhlIGlu
dGVycHJldGVyIChpZiBrbm93biksIGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBg
YCJjcDM4ImBgLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBpbnRlcnByZXRlci4KKyAgICA6cGFy
YW0gSXRlcmFibGUgcGxhdGZvcm1zOiBJdGVyYWJsZSBvZiBjb21wYXRpYmxlIHBsYXRmb3Jtcy4g
RGVmYXVsdHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1z
IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uCisKKy4uIGZ1bmN0aW9uOjogY3B5
dGhvbl90YWdzKHB5dGhvbl92ZXJzaW9uPU5vbmUsIGFiaXM9Tm9uZSwgcGxhdGZvcm1zPU5vbmUs
ICosIHdhcm49RmFsc2UpCisKKyAgICBZaWVsZHMgdGhlIHRhZ3MgZm9yIHRoZSBDUHl0aG9uIGlu
dGVycHJldGVyLgorCisgICAgVGhlIHNwZWNpZmljIHRhZ3MgZ2VuZXJhdGVkIGFyZToKKworICAg
IC0gYGBjcDxweXRob25fdmVyc2lvbj4tPGFiaT4tPHBsYXRmb3JtPmBgCisgICAgLSBgYGNwPHB5
dGhvbl92ZXJzaW9uPi1hYmkzLTxwbGF0Zm9ybT5gYAorICAgIC0gYGBjcDxweXRob25fdmVyc2lv
bj4tbm9uZS08cGxhdGZvcm0+YGAKKyAgICAtIGBgY3A8b2xkZXIgdmVyc2lvbj4tYWJpMy08cGxh
dGZvcm0+YGAgd2hlcmUgIm9sZGVyIHZlcnNpb24iIGlzIGFsbCBvbGRlcgorICAgICAgbWlub3Ig
dmVyc2lvbnMgZG93biB0byBQeXRob24gMy4yICh3aGVuIGBgYWJpM2BgIHdhcyBpbnRyb2R1Y2Vk
KQorCisgICAgSWYgYGBweXRob25fdmVyc2lvbmBgIG9ubHkgcHJvdmlkZXMgYSBtYWpvci1vbmx5
IHZlcnNpb24gdGhlbiBvbmx5CisgICAgdXNlci1wcm92aWRlZCBBQklzIHZpYSBgYGFiaXNgYCBh
bmQgdGhlIGBgbm9uZWBgIEFCSSB3aWxsIGJlIHVzZWQuCisKKyAgICA6cGFyYW0gU2VxdWVuY2Ug
cHl0aG9uX3ZlcnNpb246IEEgb25lLSBvciB0d28taXRlbSBzZXF1ZW5jZSByZXByZXNlbnRpbmcg
dGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXR0ZWQgUHl0aG9uIHZl
cnNpb24uIERlZmF1bHRzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYHN5
cy52ZXJzaW9uX2luZm9bOjJdYGAuCisgICAgOnBhcmFtIEl0ZXJhYmxlIGFiaXM6IEl0ZXJhYmxl
IG9mIGNvbXBhdGlibGUgQUJJcy4gRGVmYXVsdHMgdG8gdGhlIEFCSXMKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHN5c3RlbS4KKyAgICA6cGFy
YW0gSXRlcmFibGUgcGxhdGZvcm1zOiBJdGVyYWJsZSBvZiBjb21wYXRpYmxlIHBsYXRmb3Jtcy4g
RGVmYXVsdHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1z
IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uCisgICAgOnBhcmFtIGJvb2wgd2Fy
bjogV2hldGhlciB3YXJuaW5ncyBzaG91bGQgYmUgbG9nZ2VkLiBEZWZhdWx0cyB0byBgYEZhbHNl
YGAuCisKKy4uIGZ1bmN0aW9uOjogZ2VuZXJpY190YWdzKGludGVycHJldGVyPU5vbmUsIGFiaXM9
Tm9uZSwgcGxhdGZvcm1zPU5vbmUsICosIHdhcm49RmFsc2UpCisKKyAgICBZaWVsZHMgdGhlIHRh
Z3MgZm9yIGFuIGludGVycHJldGVyIHdoaWNoIHJlcXVpcmVzIG5vIHNwZWNpYWxpemF0aW9uLgor
CisgICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBpZiBvbmUgb2YgdGhlIG90aGVyIGlu
dGVycHJldGVyLXNwZWNpZmljCisgICAgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxl
IGlzIG5vdCBhcHByb3ByaWF0ZSAoaS5lLiBub3QgY2FsY3VsYXRpbmcKKyAgICB0YWdzIGZvciBh
IENQeXRob24gaW50ZXJwcmV0ZXIpLgorCisgICAgVGhlIHNwZWNpZmljIHRhZ3MgZ2VuZXJhdGVk
IGFyZToKKworICAgIC0gYGA8aW50ZXJwcmV0ZXI+LTxhYmk+LTxwbGF0Zm9ybT5gYAorCisgICAg
VGhlIGBgIm5vbmUiYGAgQUJJIHdpbGwgYmUgYWRkZWQgaWYgaXQgd2FzIG5vdCBleHBsaWNpdGx5
IHByb3ZpZGVkLgorCisgICAgOnBhcmFtIHN0ciBpbnRlcnByZXRlcjogVGhlIG5hbWUgb2YgdGhl
IGludGVycHJldGVyLiBEZWZhdWx0cyB0byBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGN1bGF0ZWQuCisgICAgOnBhcmFtIEl0ZXJhYmxlIGFiaXM6IEl0ZXJhYmxlIG9mIGNv
bXBhdGlibGUgQUJJcy4gRGVmYXVsdHMgdG8gdGhlIEFCSXMKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHN5c3RlbS4KKyAgICA6cGFyYW0gSXRl
cmFibGUgcGxhdGZvcm1zOiBJdGVyYWJsZSBvZiBjb21wYXRpYmxlIHBsYXRmb3Jtcy4gRGVmYXVs
dHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zIGNvbXBh
dGlibGUgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uCisgICAgOnBhcmFtIGJvb2wgd2FybjogV2hl
dGhlciB3YXJuaW5ncyBzaG91bGQgYmUgbG9nZ2VkLiBEZWZhdWx0cyB0byBgYEZhbHNlYGAuCisK
Ky4uIF9gYWJicmV2aWF0aW9uIGNvZGVzYDogaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVw
cy9wZXAtMDQyNS8jcHl0aG9uLXRhZworLi4gX2Bjb21wcmVzc2VkIHRhZyBzZXRgOiBodHRwczov
L3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDI1LyNjb21wcmVzc2VkLXRhZy1zZXRzCisu
LiBfYHBsYXRmb3JtIGNvbXBhdGliaWxpdHkgdGFnc2A6IGh0dHBzOi8vcGFja2FnaW5nLnB5dGhv
bi5vcmcvc3BlY2lmaWNhdGlvbnMvcGxhdGZvcm0tY29tcGF0aWJpbGl0eS10YWdzLwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy91dGlscy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2Nz
L3V0aWxzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzNDA5
NGFhMzBlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvdXRpbHMucnN0
CkBAIC0wLDAgKzEsNDEgQEAKK1V0aWxpdGllcworPT09PT09PT09CisKKy4uIGN1cnJlbnRtb2R1
bGU6OiBwYWNrYWdpbmcudXRpbHMKKworCitBIHNldCBvZiBzbWFsbCwgaGVscGVyIHV0aWxpdGll
cyBmb3IgZGVhbGluZyB3aXRoIFB5dGhvbiBwYWNrYWdlcy4KKworCitSZWZlcmVuY2UKKy0tLS0t
LS0tLQorCisuLiBmdW5jdGlvbjo6IGNhbm9uaWNhbGl6ZV9uYW1lKG5hbWUpCisKKyAgICBUaGlz
IGZ1bmN0aW9uIHRha2VzIGEgdmFsaWQgUHl0aG9uIHBhY2thZ2UgbmFtZSwgYW5kIHJldHVybnMg
dGhlIG5vcm1hbGl6ZWQKKyAgICBmb3JtIG9mIGl0LgorCisgICAgOnBhcmFtIHN0ciBuYW1lOiBU
aGUgbmFtZSB0byBub3JtYWxpemUuCisKKyAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICA+Pj4g
ZnJvbSBwYWNrYWdpbmcudXRpbHMgaW1wb3J0IGNhbm9uaWNhbGl6ZV9uYW1lCisgICAgICAgID4+
PiBjYW5vbmljYWxpemVfbmFtZSgiRGphbmdvIikKKyAgICAgICAgJ2RqYW5nbycKKyAgICAgICAg
Pj4+IGNhbm9uaWNhbGl6ZV9uYW1lKCJvc2xvLmNvbmN1cnJlbmN5IikKKyAgICAgICAgJ29zbG8t
Y29uY3VycmVuY3knCisgICAgICAgID4+PiBjYW5vbmljYWxpemVfbmFtZSgicmVxdWVzdHMiKQor
ICAgICAgICAncmVxdWVzdHMnCisKKy4uIGZ1bmN0aW9uOjogY2Fub25pY2FsaXplX3ZlcnNpb24o
dmVyc2lvbikKKworICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5n
IGEgcGFja2FnZSB2ZXJzaW9uIChvciBhCisgICAgYGBWZXJzaW9uYGAgaW5zdGFuY2UpLCBhbmQg
cmV0dXJucyB0aGUgbm9ybWFsaXplZCBmb3JtIG9mIGl0LgorCisgICAgOnBhcmFtIHN0ciB2ZXJz
aW9uOiBUaGUgdmVyc2lvbiB0byBub3JtYWxpemUuCisKKyAgICAuLiBkb2N0ZXN0OjoKKworICAg
ICAgICA+Pj4gZnJvbSBwYWNrYWdpbmcudXRpbHMgaW1wb3J0IGNhbm9uaWNhbGl6ZV92ZXJzaW9u
CisgICAgICAgID4+PiBjYW5vbmljYWxpemVfdmVyc2lvbignMS40LjAuMC4wJykKKyAgICAgICAg
JzEuNCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvdmVyc2lvbi5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy9kb2NzL3ZlcnNpb24ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYTQzY2Y3ODY4ZTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvZG9jcy92ZXJzaW9uLnJzdApAQCAtMCwwICsxLDI5MiBAQAorVmVyc2lvbiBIYW5kbGluZwor
PT09PT09PT09PT09PT09PQorCisuLiBjdXJyZW50bW9kdWxlOjogcGFja2FnaW5nLnZlcnNpb24K
KworQSBjb3JlIHJlcXVpcmVtZW50IG9mIGRlYWxpbmcgd2l0aCBwYWNrYWdlcyBpcyB0aGUgYWJp
bGl0eSB0byB3b3JrIHdpdGgKK3ZlcnNpb25zLiBgUEVQIDQ0MGBfIGRlZmluZXMgdGhlIHN0YW5k
YXJkIHZlcnNpb24gc2NoZW1lIGZvciBQeXRob24gcGFja2FnZXMKK3doaWNoIGhhcyBiZWVuIGlt
cGxlbWVudGVkIGJ5IHRoaXMgbW9kdWxlLgorCitVc2FnZQorLS0tLS0KKworLi4gZG9jdGVzdDo6
CisKKyAgICA+Pj4gZnJvbSBwYWNrYWdpbmcudmVyc2lvbiBpbXBvcnQgVmVyc2lvbiwgcGFyc2UK
KyAgICA+Pj4gdjEgPSBwYXJzZSgiMS4wYTUiKQorICAgID4+PiB2MiA9IFZlcnNpb24oIjEuMCIp
CisgICAgPj4+IHYxCisgICAgPFZlcnNpb24oJzEuMGE1Jyk+CisgICAgPj4+IHYyCisgICAgPFZl
cnNpb24oJzEuMCcpPgorICAgID4+PiB2MSA8IHYyCisgICAgVHJ1ZQorICAgID4+PiB2MS5lcG9j
aAorICAgIDAKKyAgICA+Pj4gdjEucmVsZWFzZQorICAgICgxLCAwKQorICAgID4+PiB2MS5wcmUK
KyAgICAoJ2EnLCA1KQorICAgID4+PiB2MS5pc19wcmVyZWxlYXNlCisgICAgVHJ1ZQorICAgID4+
PiB2Mi5pc19wcmVyZWxlYXNlCisgICAgRmFsc2UKKyAgICA+Pj4gVmVyc2lvbigiZnJlbmNoIHRv
YXN0IikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4u
LgorICAgIEludmFsaWRWZXJzaW9uOiBJbnZhbGlkIHZlcnNpb246ICdmcmVuY2ggdG9hc3QnCisg
ICAgPj4+IFZlcnNpb24oIjEuMCIpLnBvc3QKKyAgICA+Pj4gVmVyc2lvbigiMS4wIikuaXNfcG9z
dHJlbGVhc2UKKyAgICBGYWxzZQorICAgID4+PiBWZXJzaW9uKCIxLjAucG9zdDAiKS5wb3N0Cisg
ICAgMAorICAgID4+PiBWZXJzaW9uKCIxLjAucG9zdDAiKS5pc19wb3N0cmVsZWFzZQorICAgIFRy
dWUKKworCitSZWZlcmVuY2UKKy0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IHBhcnNlKHZlcnNp
b24pCisKKyAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgdmVyc2lvbiBzdHJpbmcgYW5kIHdpbGwg
cGFyc2UgaXQgYXMgYQorICAgIDpjbGFzczpgVmVyc2lvbmAgaWYgdGhlIHZlcnNpb24gaXMgYSB2
YWxpZCBQRVAgNDQwIHZlcnNpb24sIG90aGVyd2lzZSBpdAorICAgIHdpbGwgcGFyc2UgaXQgYXMg
YSBkZXByZWNhdGVkIDpjbGFzczpgTGVnYWN5VmVyc2lvbmAuCisKKworLi4gY2xhc3M6OiBWZXJz
aW9uKHZlcnNpb24pCisKKyAgICBUaGlzIGNsYXNzIGFic3RyYWN0cyBoYW5kbGluZyBvZiBhIHBy
b2plY3QncyB2ZXJzaW9ucy4gSXQgaW1wbGVtZW50cyB0aGUKKyAgICBzY2hlbWUgZGVmaW5lZCBp
biBgUEVQIDQ0MGBfLiBBIDpjbGFzczpgVmVyc2lvbmAgaW5zdGFuY2UgaXMgY29tcGFyaXNvbgor
ICAgIGF3YXJlIGFuZCBjYW4gYmUgY29tcGFyZWQgYW5kIHNvcnRlZCB1c2luZyB0aGUgc3RhbmRh
cmQgUHl0aG9uIGludGVyZmFjZXMuCisKKyAgICA6cGFyYW0gc3RyIHZlcnNpb246IFRoZSBzdHJp
bmcgcmVwcmVzZW50YXRpb24gb2YgYSB2ZXJzaW9uIHdoaWNoIHdpbGwgYmUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlZCBhbmQgbm9ybWFsaXplZCBiZWZvcmUgdXNlLgorICAgIDpyYWlz
ZXMgSW52YWxpZFZlcnNpb246IElmIHRoZSBgYHZlcnNpb25gYCBkb2VzIG5vdCBjb25mb3JtIHRv
IFBFUCA0NDAgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgd2F5IHRoZW4gdGhp
cyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBwdWJsaWMK
KworICAgICAgICBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHB1YmxpYyB2ZXJzaW9uIHBvcnRp
b24gb2YgdGhpcyBgYFZlcnNpb24oKWBgLgorCisgICAgLi4gYXR0cmlidXRlOjogYmFzZV92ZXJz
aW9uCisKKyAgICAgICAgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBiYXNlIHZlcnNpb24gb2Yg
dGhpcyA6Y2xhc3M6YFZlcnNpb25gCisgICAgICAgIGluc3RhbmNlLiBUaGUgYmFzZSB2ZXJzaW9u
IGlzIHRoZSBwdWJsaWMgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCB3aXRob3V0CisgICAgICAgIGFu
eSBwcmUgb3IgcG9zdCByZWxlYXNlIG1hcmtlcnMuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBlcG9j
aAorCisgICAgICAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSB2ZXJzaW9uIGVwb2NoIG9mIHRoaXMg
OmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5jZQorCisgICAgLi4gYXR0cmlidXRlOjogcmVsZWFzZQor
CisgICAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgZ2l2aW5nIHRoZSBjb21wb25lbnRzIG9mIHRo
ZSByZWxlYXNlIHNlZ21lbnQgb2YKKyAgICAgICAgdGhpcyA6Y2xhc3M6YFZlcnNpb25gIGluc3Rh
bmNlOyB0aGF0IGlzLCB0aGUgYGAxLjIuM2BgIHBhcnQgb2YgdGhlCisgICAgICAgIHZlcnNpb24g
bnVtYmVyLCBpbmNsdWRpbmcgdHJhaWxpbmcgemVyb2VzIGJ1dCBub3QgaW5jbHVkaW5nIHRoZSBl
cG9jaAorICAgICAgICBvciBhbnkgcHJlcmVsZWFzZS9kZXZlbG9wbWVudC9wb3N0cmVsZWFzZSBz
dWZmaXhlcworCisgICAgLi4gYXR0cmlidXRlOjogbWFqb3IKKworICAgICAgICBBbiBpbnRlZ2Vy
IHJlcHJlc2VudGluZyB0aGUgZmlyc3QgaXRlbSBvZiA6YXR0cjpgcmVsZWFzZWAgb3IgYGAwYGAg
aWYgdW5hdmFpbGFibGUuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtaW5vcgorCisgICAgICAgIEFu
IGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBzZWNvbmQgaXRlbSBvZiA6YXR0cjpgcmVsZWFzZWAg
b3IgYGAwYGAgaWYgdW5hdmFpbGFibGUuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtaWNybworCisg
ICAgICAgIEFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSB0aGlyZCBpdGVtIG9mIDphdHRyOmBy
ZWxlYXNlYCBvciBgYDBgYCBpZiB1bmF2YWlsYWJsZS4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGxv
Y2FsCisKKyAgICAgICAgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBsb2NhbCB2ZXJzaW9uIHBv
cnRpb24gb2YgdGhpcyBgYFZlcnNpb24oKWBgCisgICAgICAgIGlmIGl0IGhhcyBvbmUsIG9yIGBg
Tm9uZWBgIG90aGVyd2lzZS4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHByZQorCisgICAgICAgIElm
IHRoaXMgOmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5jZSByZXByZXNlbnRzIGEgcHJlcmVsZWFzZSwg
dGhpcworICAgICAgICBhdHRyaWJ1dGUgd2lsbCBiZSBhIHBhaXIgb2YgdGhlIHByZXJlbGVhc2Ug
cGhhc2UgKHRoZSBzdHJpbmcgYGAiYSJgYCwKKyAgICAgICAgYGAiYiJgYCwgb3IgYGAicmMiYGAp
IGFuZCB0aGUgcHJlcmVsZWFzZSBudW1iZXIgKGFuIGludGVnZXIpLiAgSWYgdGhpcworICAgICAg
ICBpbnN0YW5jZSBpcyBub3QgYSBwcmVyZWxlYXNlLCB0aGUgYXR0cmlidXRlIHdpbGwgYmUgYE5v
bmVgLgorCisgICAgLi4gYXR0cmlidXRlOjogaXNfcHJlcmVsZWFzZQorCisgICAgICAgIEEgYm9v
bGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyA6Y2xhc3M6YFZlcnNpb25gIGluc3Rh
bmNlCisgICAgICAgIHJlcHJlc2VudHMgYSBwcmVyZWxlYXNlIGFuZC9vciBkZXZlbG9wbWVudCBy
ZWxlYXNlLgorCisgICAgLi4gYXR0cmlidXRlOjogZGV2CisKKyAgICAgICAgSWYgdGhpcyA6Y2xh
c3M6YFZlcnNpb25gIGluc3RhbmNlIHJlcHJlc2VudHMgYSBkZXZlbG9wbWVudCByZWxlYXNlLAor
ICAgICAgICB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIHRoZSBkZXZlbG9wbWVudCByZWxlYXNlIG51
bWJlciAoYW4gaW50ZWdlcik7CisgICAgICAgIG90aGVyd2lzZSwgaXQgd2lsbCBiZSBgTm9uZWAu
CisKKyAgICAuLiBhdHRyaWJ1dGU6OiBpc19kZXZyZWxlYXNlCisKKyAgICAgICAgQSBib29sZWFu
IHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIDpjbGFzczpgVmVyc2lvbmAgaW5zdGFuY2UK
KyAgICAgICAgcmVwcmVzZW50cyBhIGRldmVsb3BtZW50IHJlbGVhc2UuCisKKyAgICAuLiBhdHRy
aWJ1dGU6OiBwb3N0CisKKyAgICAgICAgSWYgdGhpcyA6Y2xhc3M6YFZlcnNpb25gIGluc3RhbmNl
IHJlcHJlc2VudHMgYSBwb3N0cmVsZWFzZSwgdGhpcworICAgICAgICBhdHRyaWJ1dGUgd2lsbCBi
ZSB0aGUgcG9zdHJlbGVhc2UgbnVtYmVyIChhbiBpbnRlZ2VyKTsgb3RoZXJ3aXNlLCBpdAorICAg
ICAgICB3aWxsIGJlIGBOb25lYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Bvc3RyZWxlYXNl
CisKKyAgICAgICAgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIDpjbGFz
czpgVmVyc2lvbmAgaW5zdGFuY2UKKyAgICAgICAgcmVwcmVzZW50cyBhIHBvc3QtcmVsZWFzZS4K
KworCisuLiBjbGFzczo6IExlZ2FjeVZlcnNpb24odmVyc2lvbikKKworICAgIC4uIGRlcHJlY2F0
ZWQ6OiAyMC41CisKKyAgICAgICAgVXNlIDpjbGFzczpgVmVyc2lvbmAgaW5zdGVhZC4KKworICAg
IFRoaXMgY2xhc3MgYWJzdHJhY3RzIGhhbmRsaW5nIG9mIGEgcHJvamVjdCdzIHZlcnNpb25zIGlm
IHRoZXkgYXJlIG5vdAorICAgIGNvbXBhdGlibGUgd2l0aCB0aGUgc2NoZW1lIGRlZmluZWQgaW4g
YFBFUCA0NDBgXy4gSXQgaW1wbGVtZW50cyBhIHNpbWlsYXIKKyAgICBpbnRlcmZhY2UgdG8gdGhh
dCBvZiA6Y2xhc3M6YFZlcnNpb25gLgorCisgICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBw
cmV2aW91cyBkZSBmYWN0byBzb3J0aW5nIGFsZ29yaXRobSB1c2VkIGJ5CisgICAgc2V0dXB0b29s
cywgaG93ZXZlciBpdCB3aWxsIGFsd2F5cyBzb3J0IGFzIGxlc3MgdGhhbiBhIDpjbGFzczpgVmVy
c2lvbmAKKyAgICBpbnN0YW5jZS4KKworICAgIDpwYXJhbSBzdHIgdmVyc2lvbjogVGhlIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiBhIHZlcnNpb24gd2hpY2ggd2lsbCBiZQorICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlZCBhcyBpcy4KKworICAgIC4uIG5vdGU6OgorCisgICAgICAgIDpjbGFz
czpgTGVnYWN5VmVyc2lvbmAgaW5zdGFuY2VzIGFyZSBhbHdheXMgb3JkZXJlZCBsb3dlciB0aGFu
IDpjbGFzczpgVmVyc2lvbmAgaW5zdGFuY2VzLgorCisgICAgICAgID4+PiBmcm9tIHBhY2thZ2lu
Zy52ZXJzaW9uIGltcG9ydCBWZXJzaW9uLCBMZWdhY3lWZXJzaW9uCisgICAgICAgID4+PiB2MSA9
IFZlcnNpb24oIjEuMCIpCisgICAgICAgID4+PiB2MiA9IExlZ2FjeVZlcnNpb24oIjEuMCIpCisg
ICAgICAgID4+PiB2MSA+IHYyCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IHYzID0gTGVnYWN5
VmVyc2lvbigiMS4zIikKKyAgICAgICAgPj4+IHYxID4gdjMKKyAgICAgICAgVHJ1ZQorCisgICAg
ICAgIEFsc28gbm90ZSB0aGF0IHNvbWUgc3RyaW5ncyBhcmUgc3RpbGwgdmFsaWQgUEVQIDQ0MCBz
dHJpbmdzICg6Y2xhc3M6YFZlcnNpb25gKSwgZXZlbiBpZiB0aGV5IGxvb2sgdmVyeSBzaW1pbGFy
IHRvCisgICAgICAgIG90aGVyIHZlcnNpb25zIHRoYXQgYXJlIG5vdCAoOmNsYXNzOmBMZWdhY3lW
ZXJzaW9uYCkuIEV4YW1wbGVzIGluY2x1ZGUgdmVyc2lvbnMgd2l0aCBgUHJlLXJlbGVhc2Ugc3Bl
bGxpbmdgXyBhbmQKKyAgICAgICAgYFBvc3QtcmVsZWFzZSBzcGVsbGluZ2BfLgorCisgICAgICAg
ID4+PiBmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGltcG9ydCBwYXJzZQorICAgICAgICA+Pj4gdjEg
PSBwYXJzZSgnMC45LjhhJykKKyAgICAgICAgPj4+IHYyID0gcGFyc2UoJzAuOS44YmV0YScpCisg
ICAgICAgID4+PiB2MyA9IHBhcnNlKCcwLjkuOHInKQorICAgICAgICA+Pj4gdjQgPSBwYXJzZSgn
MC45LjhyZXYnKQorICAgICAgICA+Pj4gdjUgPSBwYXJzZSgnMC45Ljh0JykKKyAgICAgICAgPj4+
IHYxCisgICAgICAgIDxWZXJzaW9uKCcwLjkuOGEwJyk+CisgICAgICAgID4+PiB2MS5pc19wcmVy
ZWxlYXNlCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IHYyCisgICAgICAgIDxWZXJzaW9uKCcw
LjkuOGIwJyk+CisgICAgICAgID4+PiB2Mi5pc19wcmVyZWxlYXNlCisgICAgICAgIFRydWUKKyAg
ICAgICAgPj4+IHYzCisgICAgICAgIDxWZXJzaW9uKCcwLjkuOC5wb3N0MCcpPgorICAgICAgICA+
Pj4gdjMuaXNfcG9zdHJlbGVhc2UKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gdjQKKyAgICAg
ICAgPFZlcnNpb24oJzAuOS44LnBvc3QwJyk+CisgICAgICAgID4+PiB2NC5pc19wb3N0cmVsZWFz
ZQorICAgICAgICBUcnVlCisgICAgICAgID4+PiB2NQorICAgICAgICA8TGVnYWN5VmVyc2lvbign
MC45Ljh0Jyk+CisgICAgICAgID4+PiB2NS5pc19wcmVyZWxlYXNlCisgICAgICAgIEZhbHNlCisg
ICAgICAgID4+PiB2NS5pc19wb3N0cmVsZWFzZQorICAgICAgICBGYWxzZQorCisgICAgLi4gYXR0
cmlidXRlOjogcHVibGljCisKKyAgICAgICAgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwdWJs
aWMgdmVyc2lvbiBwb3J0aW9uIG9mIHRoaXMKKyAgICAgICAgOmNsYXNzOmBMZWdhY3lWZXJzaW9u
YC4gVGhpcyB3aWxsIGFsd2F5cyBiZSB0aGUgZW50aXJlIHZlcnNpb24gc3RyaW5nLgorCisgICAg
Li4gYXR0cmlidXRlOjogYmFzZV92ZXJzaW9uCisKKyAgICAgICAgQSBzdHJpbmcgcmVwcmVzZW50
aW5nIHRoZSBiYXNlIHZlcnNpb24gcG9ydGlvbiBvZiB0aGlzCisgICAgICAgIDpjbGFzczpgTGVn
YWN5VmVyc2lvbmAgaW5zdGFuY2UuIFRoaXMgd2lsbCBhbHdheXMgYmUgdGhlIGVudGlyZSB2ZXJz
aW9uCisgICAgICAgIHN0cmluZy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGVwb2NoCisKKyAgICAg
ICAgVGhpcyB3aWxsIGFsd2F5cyBiZSBgYC0xYGAgc2luY2Ugd2l0aG91dCBgUEVQIDQ0MGBfIHdl
IGRvIG5vdCBoYXZlIHRoZQorICAgICAgICBjb25jZXB0IG9mIHZlcnNpb24gZXBvY2hzLiAgVGhl
IHZhbHVlIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQKKyAgICAgICAgOmNsYXNzOmBMZWdhY3lWZXJz
aW9uYCBpbnN0YW5jZXMgYWx3YXlzIGNvbXBhcmUgbGVzcyB0aGFuCisgICAgICAgIDpjbGFzczpg
VmVyc2lvbmAgaW5zdGFuY2VzLgorCisgICAgLi4gYXR0cmlidXRlOjogcmVsZWFzZQorCisgICAg
ICAgIFRoaXMgd2lsbCBhbHdheXMgYmUgYGBOb25lYGAgc2luY2Ugd2l0aG91dCBgUEVQIDQ0MGBf
IHdlIGRvIG5vdCBoYXZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mIGEgcmVsZWFzZSBzZWdtZW50
IG9yIGl0cyBjb21wb25lbnRzLiAgSXQgZXhpc3RzCisgICAgICAgIHByaW1hcmlseSB0byBhbGxv
dyBhIDpjbGFzczpgTGVnYWN5VmVyc2lvbmAgdG8gYmUgdXNlZCBhcyBhIHN0YW5kIGluCisgICAg
ICAgIGZvciBhIDpjbGFzczpgVmVyc2lvbmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBsb2NhbAor
CisgICAgICAgIFRoaXMgd2lsbCBhbHdheXMgYmUgYGBOb25lYGAgc2luY2Ugd2l0aG91dCBgUEVQ
IDQ0MGBfIHdlIGRvIG5vdCBoYXZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mIGEgbG9jYWwgdmVy
c2lvbi4gSXQgZXhpc3RzIHByaW1hcmlseSB0byBhbGxvdyBhCisgICAgICAgIDpjbGFzczpgTGVn
YWN5VmVyc2lvbmAgdG8gYmUgdXNlZCBhcyBhIHN0YW5kIGluIGZvciBhIDpjbGFzczpgVmVyc2lv
bmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBwcmUKKworICAgICAgICBUaGlzIHdpbGwgYWx3YXlz
IGJlIGBgTm9uZWBgIHNpbmNlIHdpdGhvdXQgYFBFUCA0NDBgXyB3ZSBkbyBub3QgaGF2ZQorICAg
ICAgICB0aGUgY29uY2VwdCBvZiBhIHByZXJlbGVhc2UuIEl0IGV4aXN0cyBwcmltYXJpbHkgdG8g
YWxsb3cgYQorICAgICAgICA6Y2xhc3M6YExlZ2FjeVZlcnNpb25gIHRvIGJlIHVzZWQgYXMgYSBz
dGFuZCBpbiBmb3IgYSA6Y2xhc3M6YFZlcnNpb25gLgorCisgICAgLi4gYXR0cmlidXRlOjogaXNf
cHJlcmVsZWFzZQorCisgICAgICAgIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIg
dGhpcyA6Y2xhc3M6YExlZ2FjeVZlcnNpb25gCisgICAgICAgIHJlcHJlc2VudHMgYSBwcmVyZWxl
YXNlIGFuZC9vciBkZXZlbG9wbWVudCByZWxlYXNlLiAgU2luY2Ugd2l0aG91dAorICAgICAgICBg
UEVQIDQ0MGBfIHRoZXJlIGlzIG5vIGNvbmNlcHQgb2YgcHJlIG9yIGRldiByZWxlYXNlcyB0aGlz
IHdpbGwKKyAgICAgICAgYWx3YXlzIGJlIGBGYWxzZWAgYW5kIGV4aXN0cyBmb3IgY29tcGF0aWJp
bGl0eSB3aXRoIDpjbGFzczpgVmVyc2lvbmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBkZXYKKwor
ICAgICAgICBUaGlzIHdpbGwgYWx3YXlzIGJlIGBgTm9uZWBgIHNpbmNlIHdpdGhvdXQgYFBFUCA0
NDBgXyB3ZSBkbyBub3QgaGF2ZQorICAgICAgICB0aGUgY29uY2VwdCBvZiBhIGRldmVsb3BtZW50
IHJlbGVhc2UuIEl0IGV4aXN0cyBwcmltYXJpbHkgdG8gYWxsb3cgYQorICAgICAgICA6Y2xhc3M6
YExlZ2FjeVZlcnNpb25gIHRvIGJlIHVzZWQgYXMgYSBzdGFuZCBpbiBmb3IgYSA6Y2xhc3M6YFZl
cnNpb25gLgorCisgICAgLi4gYXR0cmlidXRlOjogaXNfZGV2cmVsZWFzZQorCisgICAgICAgIEEg
Ym9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyA6Y2xhc3M6YExlZ2FjeVZlcnNp
b25gCisgICAgICAgIHJlcHJlc2VudHMgYSBkZXZlbG9wbWVudCByZWxlYXNlLiAgU2luY2Ugd2l0
aG91dCBgUEVQIDQ0MGBfIHRoZXJlIGlzCisgICAgICAgIG5vIGNvbmNlcHQgb2YgZGV2IHJlbGVh
c2VzIHRoaXMgd2lsbCBhbHdheXMgYmUgYEZhbHNlYCBhbmQgZXhpc3RzIGZvcgorICAgICAgICBj
b21wYXRpYmlsaXR5IHdpdGggOmNsYXNzOmBWZXJzaW9uYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6
IHBvc3QKKworICAgICAgICBUaGlzIHdpbGwgYWx3YXlzIGJlIGBgTm9uZWBgIHNpbmNlIHdpdGhv
dXQgYFBFUCA0NDBgXyB3ZSBkbyBub3QgaGF2ZQorICAgICAgICB0aGUgY29uY2VwdCBvZiBhIHBv
c3RyZWxlYXNlLiBJdCBleGlzdHMgcHJpbWFyaWx5IHRvIGFsbG93IGEKKyAgICAgICAgOmNsYXNz
OmBMZWdhY3lWZXJzaW9uYCB0byBiZSB1c2VkIGFzIGEgc3RhbmQgaW4gZm9yIGEgOmNsYXNzOmBW
ZXJzaW9uYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Bvc3RyZWxlYXNlCisKKyAgICAgICAg
QSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIDpjbGFzczpgTGVnYWN5VmVy
c2lvbmAKKyAgICAgICAgcmVwcmVzZW50cyBhIHBvc3QtcmVsZWFzZS4gU2luY2Ugd2l0aG91dCBg
UEVQIDQ0MGBfIHRoZXJlIGlzIG5vIGNvbmNlcHQKKyAgICAgICAgb2YgcG9zdC1yZWxlYXNlcyB0
aGlzIHdpbGwgYWx3YXlzIGJlIGBgRmFsc2VgYCBhbmQgZXhpc3RzIGZvcgorICAgICAgICBjb21w
YXRpYmlsaXR5IHdpdGggOmNsYXNzOmBWZXJzaW9uYC4KKworCisuLiBleGNlcHRpb246OiBJbnZh
bGlkVmVyc2lvbgorCisgICAgUmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUgYSA6Y2xh
c3M6YFZlcnNpb25gIHdpdGggYSB2ZXJzaW9uIHN0cmluZworICAgIHRoYXQgZG9lcyBub3QgY29u
Zm9ybSB0byBgUEVQIDQ0MGBfLgorCisKKy4uIGRhdGE6OiBWRVJTSU9OX1BBVFRFUk4KKworICAg
IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIG1hdGNo
IGEgdmFsaWQgdmVyc2lvbi4KKyAgICBUaGUgcGF0dGVybiBpcyBub3QgYW5jaG9yZWQgYXQgZWl0
aGVyIGVuZCwgYW5kIGlzIGludGVuZGVkIGZvciBlbWJlZGRpbmcKKyAgICBpbiBsYXJnZXIgZXhw
cmVzc2lvbnMgKGZvciBleGFtcGxlLCBtYXRjaGluZyBhIHZlcnNpb24gbnVtYmVyIGFzIHBhcnQg
b2YKKyAgICBhIGZpbGUgbmFtZSkuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gc2hvdWxkIGJlIGNv
bXBpbGVkIHdpdGggdGhlCisgICAgYGByZS5WRVJCT1NFYGAgYW5kIGBgcmUuSUdOT1JFQ0FTRWBg
IGZsYWdzIHNldC4KKworCisuLiBfUEVQIDQ0MDogaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYv
cGVwcy9wZXAtMDQ0MC8KKy4uIF9QcmUtcmVsZWFzZSBzcGVsbGluZyA6IGh0dHBzOi8vd3d3LnB5
dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NDAvI3ByZS1yZWxlYXNlLXNwZWxsaW5nCisuLiBfUG9z
dC1yZWxlYXNlIHNwZWxsaW5nIDogaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAt
MDQ0MC8jcG9zdC1yZWxlYXNlLXNwZWxsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9t
eXB5LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL215cHkuaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZTE5NzM0ODU1MDM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvbXlweS5pbmkKQEAgLTAsMCArMSwyMCBAQAorW215cHldCitpZ25vcmVfbWlzc2lu
Z19pbXBvcnRzID0gVHJ1ZQorCisjIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBmbGFncyBlbmFibGVk
IGJ5IC0tc3RyaWN0CisjCisjIE5vdGU6IHdhcm5fdW51c2VkX2lnbm9yZXMgaXMgRmFsc2UgZHVl
IHRvIGluY29ycmVjdCB0eXBlc2hlZCBhbm5vdGF0aW9ucyBmb3IKKyMgcGxhdGZvcm0ubWFjX3Zl
cigpCit3YXJuX3VudXNlZF9jb25maWdzID0gVHJ1ZQorZGlzYWxsb3dfc3ViY2xhc3NpbmdfYW55
ID0gVHJ1ZQorZGlzYWxsb3dfYW55X2dlbmVyaWNzID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9j
YWxscyA9IFRydWUKK2Rpc2FsbG93X3VudHlwZWRfZGVmcyA9IFRydWUKK2Rpc2FsbG93X2luY29t
cGxldGVfZGVmcyA9IFRydWUKK2NoZWNrX3VudHlwZWRfZGVmcyA9IFRydWUKK2Rpc2FsbG93X3Vu
dHlwZWRfZGVjb3JhdG9ycyA9IFRydWUKK25vX2ltcGxpY2l0X29wdGlvbmFsID0gVHJ1ZQord2Fy
bl9yZWR1bmRhbnRfY2FzdHMgPSBUcnVlCit3YXJuX3VudXNlZF9pZ25vcmVzID0gRmFsc2UKK3dh
cm5fcmV0dXJuX2FueSA9IFRydWUKK25vX2ltcGxpY2l0X3JlZXhwb3J0ID0gVHJ1ZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvbm94ZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL25veGZpbGUu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NTg0NWFiODA0NzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9ub3hmaWxlLnB5CkBAIC0wLDAgKzEs
MzA5IEBACisjIG15cHk6IGRpc2FsbG93LXVudHlwZWQtZGVmcz1GYWxzZSwgZGlzYWxsb3ctdW50
eXBlZC1jYWxscz1GYWxzZQorCitpbXBvcnQgdGltZQoraW1wb3J0IHJlCitpbXBvcnQgb3MKK2lt
cG9ydCBzeXMKK2ltcG9ydCBnbG9iCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgZGlmZmxpYgoraW1w
b3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGNv
bnRleHRsaWIKK2ltcG9ydCBzdWJwcm9jZXNzCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKKwor
aW1wb3J0IG5veAorCitub3gub3B0aW9ucy5zZXNzaW9ucyA9IFsibGludCJdCitub3gub3B0aW9u
cy5yZXVzZV9leGlzdGluZ192aXJ0dWFsZW52cyA9IFRydWUKKworCitAbm94LnNlc3Npb24ocHl0
aG9uPVsiMi43IiwgIjMuNCIsICIzLjUiLCAiMy42IiwgIjMuNyIsICIzLjgiLCAiMy45IiwgInB5
cHkiLCAicHlweTMiXSkKK2RlZiB0ZXN0cyhzZXNzaW9uKToKKyAgICBkZWYgY292ZXJhZ2UoKmFy
Z3MpOgorICAgICAgICBzZXNzaW9uLnJ1bigicHl0aG9uIiwgIi1tIiwgImNvdmVyYWdlIiwgKmFy
Z3MpCisKKyAgICAjIE9uY2UgY292ZXJhZ2UgNSBpcyB1c2VkIHRoZW4gYC5jb3ZlcmFnZWAgY2Fu
IG1vdmUgaW50byBgcHlwcm9qZWN0LnRvbWxgLgorICAgIHNlc3Npb24uaW5zdGFsbCgiY292ZXJh
Z2U8NS4wLjAiLCAicHJldGVuZCIsICJweXRlc3QiLCAicGlwPj05LjAuMiIpCisKKyAgICBpZiAi
cHlweSIgbm90IGluIHNlc3Npb24ucHl0aG9uOgorICAgICAgICBjb3ZlcmFnZSgKKyAgICAgICAg
ICAgICJydW4iLAorICAgICAgICAgICAgIi0tc291cmNlIiwKKyAgICAgICAgICAgICJwYWNrYWdp
bmcvIiwKKyAgICAgICAgICAgICItbSIsCisgICAgICAgICAgICAicHl0ZXN0IiwKKyAgICAgICAg
ICAgICItLXN0cmljdCIsCisgICAgICAgICAgICAqc2Vzc2lvbi5wb3NhcmdzLAorICAgICAgICAp
CisgICAgICAgIGNvdmVyYWdlKCJyZXBvcnQiLCAiLW0iLCAiLS1mYWlsLXVuZGVyIiwgIjEwMCIp
CisgICAgZWxzZToKKyAgICAgICAgIyBEb24ndCBkbyBjb3ZlcmFnZSB0cmFja2luZyBmb3IgUHlQ
eSwgc2luY2UgaXQncyBTTE9XLgorICAgICAgICBzZXNzaW9uLnJ1bigKKyAgICAgICAgICAgICJw
eXRob24iLCAiLW0iLCAicHl0ZXN0IiwgIi0tY2FwdHVyZT1ubyIsICItLXN0cmljdCIsICpzZXNz
aW9uLnBvc2FyZ3MKKyAgICAgICAgKQorCisKK0Bub3guc2Vzc2lvbihweXRob249IjMuOSIpCitk
ZWYgbGludChzZXNzaW9uKToKKyAgICAjIFJ1biB0aGUgbGludGVycyAodmlhIHByZS1jb21taXQp
CisgICAgc2Vzc2lvbi5pbnN0YWxsKCJwcmUtY29tbWl0IikKKyAgICBzZXNzaW9uLnJ1bigicHJl
LWNvbW1pdCIsICJydW4iLCAiLS1hbGwtZmlsZXMiKQorCisgICAgIyBDaGVjayB0aGUgZGlzdHJp
YnV0aW9uCisgICAgc2Vzc2lvbi5pbnN0YWxsKCJidWlsZCIsICJ0d2luZSIpCisgICAgc2Vzc2lv
bi5ydW4oInB5dGhvbiIsICItbSIsICJidWlsZCIpCisgICAgc2Vzc2lvbi5ydW4oInR3aW5lIiwg
ImNoZWNrIiwgKmdsb2IuZ2xvYigiZGlzdC8qIikpCisKKworQG5veC5zZXNzaW9uKHB5dGhvbj0i
My45IikKK2RlZiBkb2NzKHNlc3Npb24pOgorICAgIHNodXRpbC5ybXRyZWUoImRvY3MvX2J1aWxk
IiwgaWdub3JlX2Vycm9ycz1UcnVlKQorICAgIHNlc3Npb24uaW5zdGFsbCgiZnVybyIpCisKKyAg
ICB2YXJpYW50cyA9IFsKKyAgICAgICAgIyAoYnVpbGRlciwgZGVzdCkKKyAgICAgICAgKCJodG1s
IiwgImh0bWwiKSwKKyAgICAgICAgKCJsYXRleCIsICJsYXRleCIpLAorICAgICAgICAoImRvY3Rl
c3QiLCAiaHRtbCIpLAorICAgIF0KKworICAgIGZvciBidWlsZGVyLCBkZXN0IGluIHZhcmlhbnRz
OgorICAgICAgICBzZXNzaW9uLnJ1bigKKyAgICAgICAgICAgICJzcGhpbngtYnVpbGQiLAorICAg
ICAgICAgICAgIi1XIiwKKyAgICAgICAgICAgICItYiIsCisgICAgICAgICAgICBidWlsZGVyLAor
ICAgICAgICAgICAgIi1kIiwKKyAgICAgICAgICAgICJkb2NzL19idWlsZC9kb2N0cmVlcy8iICsg
ZGVzdCwKKyAgICAgICAgICAgICJkb2NzIiwgICMgc291cmNlIGRpcmVjdG9yeQorICAgICAgICAg
ICAgImRvY3MvX2J1aWxkLyIgKyBkZXN0LCAgIyBvdXRwdXQgZGlyZWN0b3J5CisgICAgICAgICkK
KworCitAbm94LnNlc3Npb24KK2RlZiByZWxlYXNlKHNlc3Npb24pOgorICAgIHBhY2thZ2VfbmFt
ZSA9ICJwYWNrYWdpbmciCisgICAgdmVyc2lvbl9maWxlID0gUGF0aChmIntwYWNrYWdlX25hbWV9
L19faW5pdF9fLnB5IikKKyAgICBjaGFuZ2Vsb2dfZmlsZSA9IFBhdGgoIkNIQU5HRUxPRy5yc3Qi
KQorCisgICAgdHJ5OgorICAgICAgICByZWxlYXNlX3ZlcnNpb24gPSBfZ2V0X3ZlcnNpb25fZnJv
bV9hcmd1bWVudHMoc2Vzc2lvbi5wb3NhcmdzKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6
CisgICAgICAgIHNlc3Npb24uZXJyb3IoZiJJbnZhbGlkIGFyZ3VtZW50czoge2V9IikKKworICAg
ICMgQ2hlY2sgc3RhdGUgb2Ygd29ya2luZyBkaXJlY3RvcnkgYW5kIGdpdC4KKyAgICBfY2hlY2tf
d29ya2luZ19kaXJlY3Rvcnlfc3RhdGUoc2Vzc2lvbikKKyAgICBfY2hlY2tfZ2l0X3N0YXRlKHNl
c3Npb24sIHJlbGVhc2VfdmVyc2lvbikKKworICAgICMgUHJlcGFyZSBmb3IgcmVsZWFzZS4KKyAg
ICBfY2hhbmdlbG9nX3VwZGF0ZV91bnJlbGVhc2VkX3RpdGxlKHJlbGVhc2VfdmVyc2lvbiwgZmls
ZT1jaGFuZ2Vsb2dfZmlsZSkKKyAgICBzZXNzaW9uLnJ1bigiZ2l0IiwgImFkZCIsIHN0cihjaGFu
Z2Vsb2dfZmlsZSksIGV4dGVybmFsPVRydWUpCisgICAgX2J1bXAoc2Vzc2lvbiwgdmVyc2lvbj1y
ZWxlYXNlX3ZlcnNpb24sIGZpbGU9dmVyc2lvbl9maWxlLCBraW5kPSJyZWxlYXNlIikKKworICAg
ICMgVGFnIHRoZSByZWxlYXNlIGNvbW1pdC4KKyAgICAjIGZtdDogb2ZmCisgICAgc2Vzc2lvbi5y
dW4oCisgICAgICAgICJnaXQiLCAidGFnIiwKKyAgICAgICAgIi1zIiwgcmVsZWFzZV92ZXJzaW9u
LAorICAgICAgICAiLW0iLCBmIlJlbGVhc2Uge3JlbGVhc2VfdmVyc2lvbn0iLAorICAgICAgICBl
eHRlcm5hbD1UcnVlLAorICAgICkKKyAgICAjIGZtdDogb24KKworICAgICMgUHJlcGFyZSBmb3Ig
ZGV2ZWxvcG1lbnQuCisgICAgX2NoYW5nZWxvZ19hZGRfdW5yZWxlYXNlZF90aXRsZShmaWxlPWNo
YW5nZWxvZ19maWxlKQorICAgIHNlc3Npb24ucnVuKCJnaXQiLCAiYWRkIiwgc3RyKGNoYW5nZWxv
Z19maWxlKSwgZXh0ZXJuYWw9VHJ1ZSkKKworICAgIG1ham9yLCBtaW5vciA9IG1hcChpbnQsIHJl
bGVhc2VfdmVyc2lvbi5zcGxpdCgiLiIpKQorICAgIG5leHRfdmVyc2lvbiA9IGYie21ham9yfS57
bWlub3IgKyAxfS5kZXYwIgorICAgIF9idW1wKHNlc3Npb24sIHZlcnNpb249bmV4dF92ZXJzaW9u
LCBmaWxlPXZlcnNpb25fZmlsZSwga2luZD0iZGV2ZWxvcG1lbnQiKQorCisgICAgIyBDaGVja291
dCB0aGUgZ2l0IHRhZy4KKyAgICBzZXNzaW9uLnJ1bigiZ2l0IiwgImNoZWNrb3V0IiwgIi1xIiwg
cmVsZWFzZV92ZXJzaW9uLCBleHRlcm5hbD1UcnVlKQorCisgICAgc2Vzc2lvbi5pbnN0YWxsKCJi
dWlsZCIsICJ0d2luZSIpCisKKyAgICAjIEJ1aWxkIHRoZSBkaXN0cmlidXRpb24uCisgICAgc2Vz
c2lvbi5ydW4oInB5dGhvbiIsICItbSIsICJidWlsZCIpCisKKyAgICAjIENoZWNrIHdoYXQgZmls
ZXMgYXJlIGluIGRpc3QvIGZvciB1cGxvYWQuCisgICAgZmlsZXMgPSBzb3J0ZWQoZ2xvYi5nbG9i
KCJkaXN0LyoiKSkKKyAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgZiJkaXN0L3twYWNrYWdlX25h
bWV9LXtyZWxlYXNlX3ZlcnNpb259LXB5Mi5weTMtbm9uZS1hbnkud2hsIiwKKyAgICAgICAgZiJk
aXN0L3twYWNrYWdlX25hbWV9LXtyZWxlYXNlX3ZlcnNpb259LnRhci5neiIsCisgICAgXQorICAg
IGlmIGZpbGVzICE9IGV4cGVjdGVkOgorICAgICAgICBkaWZmX2dlbmVyYXRvciA9IGRpZmZsaWIu
Y29udGV4dF9kaWZmKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGZpbGVzLCBmcm9tZmlsZT0iZXhw
ZWN0ZWQiLCB0b2ZpbGU9ImdvdCIsIGxpbmV0ZXJtPSIiCisgICAgICAgICkKKyAgICAgICAgZGlm
ZiA9ICJcbiIuam9pbihkaWZmX2dlbmVyYXRvcikKKyAgICAgICAgc2Vzc2lvbi5lcnJvcihmIkdv
dCB0aGUgd3JvbmcgZmlsZXM6XG57ZGlmZn0iKQorCisgICAgIyBHZXQgYmFjayBvdXQgaW50byBt
YXN0ZXIuCisgICAgc2Vzc2lvbi5ydW4oImdpdCIsICJjaGVja291dCIsICItcSIsICJtYXN0ZXIi
LCBleHRlcm5hbD1UcnVlKQorCisgICAgIyBDaGVjayBhbmQgdXBsb2FkIGRpc3RyaWJ1dGlvbiBm
aWxlcy4KKyAgICBzZXNzaW9uLnJ1bigidHdpbmUiLCAiY2hlY2siLCAqZmlsZXMpCisKKyAgICAj
IFVwbG9hZCB0aGUgZGlzdHJpYnV0aW9uLgorICAgIHNlc3Npb24ucnVuKCJ0d2luZSIsICJ1cGxv
YWQiLCAqZmlsZXMpCisKKyAgICAjIFB1c2ggdGhlIGNvbW1pdHMgYW5kIHRhZy4KKyAgICAjIE5P
VEU6IFRoZSBmb2xsb3dpbmcgZmFpbHMgaWYgcHVzaGluZyB0byB0aGUgYnJhbmNoIGlzIG5vdCBh
bGxvd2VkLiBUaGlzIGNhbgorICAgICMgICAgICAgaGFwcGVuIG9uIEdpdEh1YiwgaWYgdGhlIG1h
c3RlciBicmFuY2ggaXMgcHJvdGVjdGVkLCB0aGVyZSBhcmUgcmVxdWlyZWQKKyAgICAjICAgICAg
IENJIGNoZWNrcyBhbmQgIkluY2x1ZGUgYWRtaW5pc3RyYXRvcnMiIGlzIGVuYWJsZWQgb24gdGhl
IHByb3RlY3Rpb24uCisgICAgc2Vzc2lvbi5ydW4oImdpdCIsICJwdXNoIiwgInVwc3RyZWFtIiwg
Im1hc3RlciIsIHJlbGVhc2VfdmVyc2lvbiwgZXh0ZXJuYWw9VHJ1ZSkKKworCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIEhlbHBlcnMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlZiBfZ2V0
X3ZlcnNpb25fZnJvbV9hcmd1bWVudHMoYXJndW1lbnRzKToKKyAgICAiIiJDaGVja3MgdGhlIGFy
Z3VtZW50cyBwYXNzZWQgdG8gYG5veCAtcyByZWxlYXNlYC4KKworICAgIE9ubHkgMSBhcmd1bWVu
dCB0aGF0IGxvb2tzIGxpa2UgYSB2ZXJzaW9uPyBSZXR1cm4gdGhlIGFyZ3VtZW50LgorICAgIE90
aGVyd2lzZSwgcmFpc2UgYSBWYWx1ZUVycm9yIGRlc2NyaWJpbmcgd2hhdCdzIHdyb25nLgorICAg
ICIiIgorICAgIGlmIGxlbihhcmd1bWVudHMpICE9IDE6CisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoIkV4cGVjdGVkIGV4YWN0bHkgMSBhcmd1bWVudCIpCisKKyAgICB2ZXJzaW9uID0gYXJndW1l
bnRzWzBdCisgICAgcGFydHMgPSB2ZXJzaW9uLnNwbGl0KCIuIikKKworICAgIGlmIGxlbihwYXJ0
cykgIT0gMjoKKyAgICAgICAgIyBOb3Qgb2YgdGhlIGZvcm06IFlZLk4KKyAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigibm90IG9mIHRoZSBmb3JtOiBZWS5OIikKKworICAgIGlmIG5vdCBhbGwocGFy
dC5pc2RpZ2l0KCkgZm9yIHBhcnQgaW4gcGFydHMpOgorICAgICAgICAjIE5vdCBhbGwgc2VnbWVu
dHMgYXJlIGludGVnZXJzLgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub24taW50ZWdlciBz
ZWdtZW50cyIpCisKKyAgICAjIEFsbCBpcyBnb29kLgorICAgIHJldHVybiB2ZXJzaW9uCisKKwor
ZGVmIF9jaGVja193b3JraW5nX2RpcmVjdG9yeV9zdGF0ZShzZXNzaW9uKToKKyAgICAiIiJDaGVj
ayBzdGF0ZSBvZiB0aGUgd29ya2luZyBkaXJlY3RvcnksIHByaW9yIHRvIG1ha2luZyB0aGUgcmVs
ZWFzZS4iIiIKKyAgICBzaG91bGRfbm90X2V4aXN0ID0gWyJidWlsZC8iLCAiZGlzdC8iXQorCisg
ICAgYmFkX2V4aXN0aW5nX3BhdGhzID0gbGlzdChmaWx0ZXIob3MucGF0aC5leGlzdHMsIHNob3Vs
ZF9ub3RfZXhpc3QpKQorICAgIGlmIGJhZF9leGlzdGluZ19wYXRoczoKKyAgICAgICAgc2Vzc2lv
bi5lcnJvcihmIlJlbW92ZSB7JywgJy5qb2luKGJhZF9leGlzdGluZ19wYXRocyl9IGFuZCB0cnkg
YWdhaW4iKQorCisKK2RlZiBfY2hlY2tfZ2l0X3N0YXRlKHNlc3Npb24sIHZlcnNpb25fdGFnKToK
KyAgICAiIiJDaGVjayBzdGF0ZSBvZiB0aGUgZ2l0IHJlcG9zaXRvcnksIHByaW9yIHRvIG1ha2lu
ZyB0aGUgcmVsZWFzZS4iIiIKKyAgICAjIEVuc3VyZSB0aGUgdXBzdHJlYW0gcmVtb3RlIHB1c2hl
cyB0byB0aGUgY29ycmVjdCBVUkwuCisgICAgYWxsb3dlZF91cHN0cmVhbXMgPSBbCisgICAgICAg
ICJnaXRAZ2l0aHViLmNvbTpweXBhL3BhY2thZ2luZy5naXQiLAorICAgICAgICAiaHR0cHM6Ly9n
aXRodWIuY29tL3B5cGEvcGFja2FnaW5nLmdpdCIsCisgICAgXQorICAgIHJlc3VsdCA9IHN1YnBy
b2Nlc3MucnVuKAorICAgICAgICBbImdpdCIsICJyZW1vdGUiLCAiZ2V0LXVybCIsICItLXB1c2gi
LCAidXBzdHJlYW0iXSwKKyAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgZW5j
b2Rpbmc9InV0Zi04IiwKKyAgICApCisgICAgaWYgcmVzdWx0LnN0ZG91dC5yc3RyaXAoKSBub3Qg
aW4gYWxsb3dlZF91cHN0cmVhbXM6CisgICAgICAgIHNlc3Npb24uZXJyb3IoZiJnaXQgcmVtb3Rl
IGB1cHN0cmVhbWAgaXMgbm90IG9uZSBvZiB7YWxsb3dlZF91cHN0cmVhbXN9IikKKyAgICAjIEVu
c3VyZSB3ZSdyZSBvbiBtYXN0ZXIgYnJhbmNoIGZvciBjdXR0aW5nIGEgcmVsZWFzZS4KKyAgICBy
ZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAgICAgWyJnaXQiLCAicmV2LXBhcnNlIiwgIi0t
YWJicmV2LXJlZiIsICJIRUFEIl0sCisgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsCisgICAg
ICAgIGVuY29kaW5nPSJ1dGYtOCIsCisgICAgKQorICAgIGlmIHJlc3VsdC5zdGRvdXQgIT0gIm1h
c3RlclxuIjoKKyAgICAgICAgc2Vzc2lvbi5lcnJvcihmIk5vdCBvbiBtYXN0ZXIgYnJhbmNoOiB7
cmVzdWx0LnN0ZG91dCFyfSIpCisKKyAgICAjIEVuc3VyZSB0aGVyZSBhcmUgbm8gdW5jb21taXR0
ZWQgY2hhbmdlcy4KKyAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAgICAgWyJnaXQi
LCAic3RhdHVzIiwgIi0tcG9yY2VsYWluIl0sIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5n
PSJ1dGYtOCIKKyAgICApCisgICAgaWYgcmVzdWx0LnN0ZG91dDoKKyAgICAgICAgcHJpbnQocmVz
dWx0LnN0ZG91dCwgZW5kPSIiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlc3Npb24uZXJy
b3IoIlRoZSB3b3JraW5nIHRyZWUgaGFzIHVuY29tbWl0dGVkIGNoYW5nZXMiKQorCisgICAgIyBF
bnN1cmUgdGhpcyB0YWcgZG9lc24ndCBleGlzdCBhbHJlYWR5LgorICAgIHJlc3VsdCA9IHN1YnBy
b2Nlc3MucnVuKAorICAgICAgICBbImdpdCIsICJyZXYtcGFyc2UiLCB2ZXJzaW9uX3RhZ10sIGNh
cHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSJ1dGYtOCIKKyAgICApCisgICAgaWYgbm90IHJl
c3VsdC5yZXR1cm5jb2RlOgorICAgICAgICBzZXNzaW9uLmVycm9yKGYiVGFnIGFscmVhZHkgZXhp
c3RzISB7dmVyc2lvbl90YWd9IC0tIHtyZXN1bHQuc3Rkb3V0IXJ9IikKKworICAgICMgQmFjayB1
cCB0aGUgY3VycmVudCBnaXQgcmVmZXJlbmNlLCBpbiBhIHRhZyB0aGF0J3MgZWFzeSB0byBjbGVh
biB1cC4KKyAgICBfcmVsZWFzZV9iYWNrdXBfdGFnID0gImF1dG8vcmVsZWFzZS1zdGFydC0iICsg
c3RyKGludCh0aW1lLnRpbWUoKSkpCisgICAgc2Vzc2lvbi5ydW4oImdpdCIsICJ0YWciLCBfcmVs
ZWFzZV9iYWNrdXBfdGFnLCBleHRlcm5hbD1UcnVlKQorCisKK2RlZiBfYnVtcChzZXNzaW9uLCAq
LCB2ZXJzaW9uLCBmaWxlLCBraW5kKToKKyAgICBzZXNzaW9uLmxvZyhmIkJ1bXAgdmVyc2lvbiB0
byB7dmVyc2lvbiFyfSIpCisgICAgY29udGVudHMgPSBmaWxlLnJlYWRfdGV4dCgpCisgICAgbmV3
X2NvbnRlbnRzID0gcmUuc3ViKAorICAgICAgICAnX192ZXJzaW9uX18gPSAiKC4rKSInLCBmJ19f
dmVyc2lvbl9fID0gInt2ZXJzaW9ufSInLCBjb250ZW50cworICAgICkKKyAgICBmaWxlLndyaXRl
X3RleHQobmV3X2NvbnRlbnRzKQorCisgICAgc2Vzc2lvbi5sb2coImdpdCBjb21taXQiKQorICAg
IHN1YnByb2Nlc3MucnVuKFsiZ2l0IiwgImFkZCIsIHN0cihmaWxlKV0pCisgICAgc3VicHJvY2Vz
cy5ydW4oWyJnaXQiLCAiY29tbWl0IiwgIi1tIiwgZiJCdW1wIGZvciB7a2luZH0iXSkKKworCitA
Y29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9yZXBsYWNlX2ZpbGUob3JpZ2luYWxfcGF0
aCk6CisgICAgIyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKyAgICBmaCwgcmVwbGFjZW1lbnRf
cGF0aCA9IHRlbXBmaWxlLm1rc3RlbXAoKQorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9zLmZk
b3BlbihmaCwgInciKSBhcyByZXBsYWNlbWVudDoKKyAgICAgICAgICAgIHdpdGggb3Blbihvcmln
aW5hbF9wYXRoKSBhcyBvcmlnaW5hbDoKKyAgICAgICAgICAgICAgICB5aWVsZCBvcmlnaW5hbCwg
cmVwbGFjZW1lbnQKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICByYWlzZQorICAgIGVs
c2U6CisgICAgICAgIHNodXRpbC5jb3B5bW9kZShvcmlnaW5hbF9wYXRoLCByZXBsYWNlbWVudF9w
YXRoKQorICAgICAgICBvcy5yZW1vdmUob3JpZ2luYWxfcGF0aCkKKyAgICAgICAgc2h1dGlsLm1v
dmUocmVwbGFjZW1lbnRfcGF0aCwgb3JpZ2luYWxfcGF0aCkKKworCitkZWYgX2NoYW5nZWxvZ191
cGRhdGVfdW5yZWxlYXNlZF90aXRsZSh2ZXJzaW9uLCAqLCBmaWxlKToKKyAgICAiIiJVcGRhdGUg
YW4gIip1bnJlbGVhc2VkKiIgaGVhZGluZyB0byAie3ZlcnNpb259IC0ge2RhdGV9IiAiIiIKKyAg
ICB5eXl5X21tX2RkID0gZGF0ZXRpbWUuZGF0ZXRpbWUudG9kYXkoKS5zdHJmdGltZSgiJVktJW0t
JWQiKQorICAgIHRpdGxlID0gZiJ7dmVyc2lvbn0gLSB7eXl5eV9tbV9kZH0iCisKKyAgICB3aXRo
IF9yZXBsYWNlX2ZpbGUoZmlsZSkgYXMgKG9yaWdpbmFsLCByZXBsYWNlbWVudCk6CisgICAgICAg
IGZvciBsaW5lIGluIG9yaWdpbmFsOgorICAgICAgICAgICAgaWYgbGluZSA9PSAiKnVucmVsZWFz
ZWQqXG4iOgorICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LndyaXRlKGYie3RpdGxlfVxuIikK
KyAgICAgICAgICAgICAgICByZXBsYWNlbWVudC53cml0ZShsZW4odGl0bGUpICogIn4iICsgIlxu
IikKKyAgICAgICAgICAgICAgICAjIFNraXAgcHJvY2Vzc2luZyB0aGUgbmV4dCBsaW5lICh0aGUg
aGVhZGluZyB1bmRlcmxpbmUgZm9yICp1bnJlbGVhc2VkKikKKyAgICAgICAgICAgICAgICAjIHNp
bmNlIHdlIGFscmVhZHkgd3JvdGUgdGhlIGhlYWRpbmcgdW5kZXJsaW5lLgorICAgICAgICAgICAg
ICAgIG5leHQob3JpZ2luYWwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJl
cGxhY2VtZW50LndyaXRlKGxpbmUpCisKKworZGVmIF9jaGFuZ2Vsb2dfYWRkX3VucmVsZWFzZWRf
dGl0bGUoKiwgZmlsZSk6CisgICAgd2l0aCBfcmVwbGFjZV9maWxlKGZpbGUpIGFzIChvcmlnaW5h
bCwgcmVwbGFjZW1lbnQpOgorICAgICAgICAjIER1cGxpY2F0ZSBmaXJzdCAzIGxpbmVzIGZyb20g
dGhlIG9yaWdpbmFsIGZpbGUuCisgICAgICAgIGZvciBfIGluIHJhbmdlKDMpOgorICAgICAgICAg
ICAgbGluZSA9IG5leHQob3JpZ2luYWwpCisgICAgICAgICAgICByZXBsYWNlbWVudC53cml0ZShs
aW5lKQorCisgICAgICAgICMgV3JpdGUgdGhlIGhlYWRpbmcuCisgICAgICAgIHJlcGxhY2VtZW50
LndyaXRlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIi
IlwKKyAgICAgICAgICAgICAgICAqdW5yZWxlYXNlZCoKKyAgICAgICAgICAgICAgICB+fn5+fn5+
fn5+fn4KKworICAgICAgICAgICAgICAgIE5vIHVucmVsZWFzZWQgY2hhbmdlcy4KKworICAgICAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgIyBEdXBs
aWNhdGUgYWxsIHRoZSByZW1haW5pbmcgbGluZXMuCisgICAgICAgIGZvciBsaW5lIGluIG9yaWdp
bmFsOgorICAgICAgICAgICAgcmVwbGFjZW1lbnQud3JpdGUobGluZSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL3BhY2thZ2luZy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2th
Z2luZy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjE4ZmVjYjg2N2E4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2lu
Zy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5z
ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAs
IGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4KKyIiIkNvcmUgdXRpbGl0
aWVzIGZvciBQeXRob24gcGFja2FnZXMiIiIKK19fdmVyc2lvbl9fID0gIjIwLjciCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvX2NvbXBhdC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
L3BhY2thZ2luZy9fY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZTU0YmQ0ZWRlODc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFj
a2FnaW5nL19jb21wYXQucHkKQEAgLTAsMCArMSwzOCBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBs
aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisj
IDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorZnJvbSBfX2Z1
dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgor
CitpbXBvcnQgc3lzCisKK2Zyb20gLl90eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKKworaWYg
VFlQRV9DSEVDS0lORzogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBBbnksIERpY3QsIFR1cGxlLCBUeXBlCisKKworUFkyID0gc3lzLnZlcnNpb25faW5mb1swXSA9
PSAyCitQWTMgPSBzeXMudmVyc2lvbl9pbmZvWzBdID09IDMKKworIyBmbGFrZTg6IG5vcWEKKwor
aWYgUFkzOgorICAgIHN0cmluZ190eXBlcyA9IChzdHIsKQorZWxzZToKKyAgICBzdHJpbmdfdHlw
ZXMgPSAoYmFzZXN0cmluZywpCisKKworZGVmIHdpdGhfbWV0YWNsYXNzKG1ldGEsICpiYXNlcyk6
CisgICAgIyB0eXBlOiAoVHlwZVtBbnldLCBUdXBsZVtUeXBlW0FueV0sIC4uLl0pIC0+IEFueQor
ICAgICIiIgorICAgIENyZWF0ZSBhIGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcy4KKyAgICAi
IiIKKyAgICAjIFRoaXMgcmVxdWlyZXMgYSBiaXQgb2YgZXhwbGFuYXRpb246IHRoZSBiYXNpYyBp
ZGVhIGlzIHRvIG1ha2UgYSBkdW1teQorICAgICMgbWV0YWNsYXNzIGZvciBvbmUgbGV2ZWwgb2Yg
Y2xhc3MgaW5zdGFudGlhdGlvbiB0aGF0IHJlcGxhY2VzIGl0c2VsZiB3aXRoCisgICAgIyB0aGUg
YWN0dWFsIG1ldGFjbGFzcy4KKyAgICBjbGFzcyBtZXRhY2xhc3MobWV0YSk6ICAjIHR5cGU6IGln
bm9yZQorICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMsIGQpOgorICAg
ICAgICAgICAgIyB0eXBlOiAoVHlwZVtBbnldLCBzdHIsIFR1cGxlW0FueV0sIERpY3RbQW55LCBB
bnldKSAtPiBBbnkKKyAgICAgICAgICAgIHJldHVybiBtZXRhKG5hbWUsIGJhc2VzLCBkKQorCisg
ICAgcmV0dXJuIHR5cGUuX19uZXdfXyhtZXRhY2xhc3MsICJ0ZW1wb3JhcnlfY2xhc3MiLCAoKSwg
e30pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvX3N0cnVjdHVyZXMucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvX3N0cnVjdHVyZXMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MDBkNWM1NTg4YzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvX3N0cnVjdHVyZXMucHkKQEAgLTAsMCArMSw4NiBA
QAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21w
bGV0ZSBkZXRhaWxzLgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCBwcmludF9mdW5jdGlvbgorCisKK2NsYXNzIEluZmluaXR5VHlwZShvYmplY3QpOgor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAg
ICAgcmV0dXJuICJJbmZpbml0eSIKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGhhc2gocmVwcihzZWxmKSkKKworICAg
IGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJv
b2wKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToK
KyAgICAgICAgIyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKG9iamVjdCkg
LT4gYm9vbAorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18p
CisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0
KSAtPiBib29sCisgICAgICAgIHJldHVybiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2Ns
YXNzX18pCisKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAo
b2JqZWN0KSAtPiBib29sCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19nZV9fKHNl
bGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisgICAgICAgIHJl
dHVybiBUcnVlCisKKyAgICBkZWYgX19uZWdfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAob2Jq
ZWN0KSAtPiBOZWdhdGl2ZUluZmluaXR5VHlwZQorICAgICAgICByZXR1cm4gTmVnYXRpdmVJbmZp
bml0eQorCisKK0luZmluaXR5ID0gSW5maW5pdHlUeXBlKCkKKworCitjbGFzcyBOZWdhdGl2ZUlu
ZmluaXR5VHlwZShvYmplY3QpOgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIyB0
eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICItSW5maW5pdHkiCisKKyAgICBkZWYgX19o
YXNoX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gaW50CisgICAgICAgIHJldHVybiBo
YXNoKHJlcHIoc2VsZikpCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAg
IyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYg
X19sZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisg
ICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAg
ICAgIyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90
aGVyLCBzZWxmLl9fY2xhc3NfXykKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAg
ICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIG5vdCBpc2luc3Rh
bmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXykKKworICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIp
OgorICAgICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0
KSAtPiBib29sCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fbmVnX18oc2VsZik6
CisgICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gSW5maW5pdHlUeXBlCisgICAgICAgIHJldHVy
biBJbmZpbml0eQorCisKK05lZ2F0aXZlSW5maW5pdHkgPSBOZWdhdGl2ZUluZmluaXR5VHlwZSgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvX3R5cGluZy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL3BhY2thZ2luZy9fdHlwaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNzdhOGI5MTg1YTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvcGFja2FnaW5nL190eXBpbmcucHkKQEAgLTAsMCArMSw0OCBAQAorIiIiRm9yIG5lYXRs
eSBpbXBsZW1lbnRpbmcgc3RhdGljIHR5cGluZyBpbiBwYWNrYWdpbmcuCisKK2BteXB5YCAtIHRo
ZSBzdGF0aWMgdHlwZSBhbmFseXNpcyB0b29sIHdlIHVzZSAtIHVzZXMgdGhlIGB0eXBpbmdgIG1v
ZHVsZSwgd2hpY2gKK3Byb3ZpZGVzIGNvcmUgZnVuY3Rpb25hbGl0eSBmdW5kYW1lbnRhbCB0byBt
eXB5J3MgZnVuY3Rpb25pbmcuCisKK0dlbmVyYWxseSwgYHR5cGluZ2Agd291bGQgYmUgaW1wb3J0
ZWQgYXQgcnVudGltZSBhbmQgdXNlZCBpbiB0aGF0IGZhc2hpb24gLQoraXQgYWN0cyBhcyBhIG5v
LW9wIGF0IHJ1bnRpbWUgYW5kIGRvZXMgbm90IGhhdmUgYW55IHJ1bi10aW1lIG92ZXJoZWFkIGJ5
CitkZXNpZ24uCisKK0FzIGl0IHR1cm5zIG91dCwgYHR5cGluZ2AgaXMgbm90IHZlbmRvcmFibGUg
LSBpdCB1c2VzIHNlcGFyYXRlIHNvdXJjZXMgZm9yCitQeXRob24gMi9QeXRob24gMy4gVGh1cywg
dGhpcyBjb2RlYmFzZSBjYW4gbm90IGV4cGVjdCBpdCB0byBiZSBwcmVzZW50LgorVG8gd29yayBh
cm91bmQgdGhpcywgbXlweSBhbGxvd3MgdGhlIHR5cGluZyBpbXBvcnQgdG8gYmUgYmVoaW5kIGEg
RmFsc2UteQorb3B0aW9uYWwgdG8gcHJldmVudCBpdCBmcm9tIHJ1bm5pbmcgYXQgcnVudGltZSBh
bmQgdHlwZS1jb21tZW50cyBjYW4gYmUgdXNlZAordG8gcmVtb3ZlIHRoZSBuZWVkIGZvciB0aGUg
dHlwZXMgdG8gYmUgYWNjZXNzaWJsZSBkaXJlY3RseSBkdXJpbmcgcnVudGltZS4KKworVGhpcyBt
b2R1bGUgcHJvdmlkZXMgdGhlIEZhbHNlLXkgZ3VhcmQgaW4gYSBuaWNlbHkgbmFtZWQgZmFzaGlv
biBzbyB0aGF0IGEKK2N1cmlvdXMgbWFpbnRhaW5lciBjYW4gcmVhY2ggaGVyZSB0byByZWFkIHRo
aXMuCisKK0luIHBhY2thZ2luZywgYWxsIHN0YXRpYy10eXBpbmcgcmVsYXRlZCBpbXBvcnRzIHNo
b3VsZCBiZSBndWFyZGVkIGFzIGZvbGxvd3M6CisKKyAgICBmcm9tIHBhY2thZ2luZy5fdHlwaW5n
IGltcG9ydCBUWVBFX0NIRUNLSU5HCisKKyAgICBpZiBUWVBFX0NIRUNLSU5HOgorICAgICAgICBm
cm9tIHR5cGluZyBpbXBvcnQgLi4uCisKK1JlZjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9t
eXB5L2lzc3Vlcy8zMjE2CisiIiIKKworX19hbGxfXyA9IFsiVFlQRV9DSEVDS0lORyIsICJjYXN0
Il0KKworIyBUaGUgVFlQRV9DSEVDS0lORyBjb25zdGFudCBkZWZpbmVkIGJ5IHRoZSB0eXBpbmcg
bW9kdWxlIGlzIEZhbHNlIGF0IHJ1bnRpbWUKKyMgYnV0IFRydWUgd2hpbGUgdHlwZSBjaGVja2lu
Zy4KK2lmIEZhbHNlOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0
IFRZUEVfQ0hFQ0tJTkcKK2Vsc2U6CisgICAgVFlQRV9DSEVDS0lORyA9IEZhbHNlCisKKyMgdHlw
aW5nJ3MgY2FzdCBzeW50YXggcmVxdWlyZXMgY2FsbGluZyB0eXBpbmcuY2FzdCBhdCBydW50aW1l
LCBidXQgd2UgZG9uJ3QKKyMgd2FudCB0byBpbXBvcnQgdHlwaW5nIGF0IHJ1bnRpbWUuIEhlcmUs
IHdlIGluZm9ybSB0aGUgdHlwZSBjaGVja2VycyB0aGF0CisjIHdlJ3JlIGltcG9ydGluZyBgdHlw
aW5nLmNhc3RgIGFzIGBjYXN0YCBhbmQgcmUtaW1wbGVtZW50IHR5cGluZy5jYXN0J3MKKyMgcnVu
dGltZSBiZWhhdmlvciBpbiBhIGJsb2NrIHRoYXQgaXMgaWdub3JlZCBieSB0eXBlIGNoZWNrZXJz
LgoraWYgVFlQRV9DSEVDS0lORzogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICMgbm90IGV4ZWN1
dGVkIGF0IHJ1bnRpbWUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZWxzZToKKyAgICAj
IGV4ZWN1dGVkIGF0IHJ1bnRpbWUKKyAgICBkZWYgY2FzdCh0eXBlXywgdmFsdWUpOiAgIyBub3Fh
CisgICAgICAgIHJldHVybiB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2Fn
aW5nL21hcmtlcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvbWFya2Vycy5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3Y2QzZjk1ODU3MgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9tYXJrZXJzLnB5CkBAIC0wLDAg
KzEsMzI4IEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNl
LiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMg
Zm9yIGNvbXBsZXRlIGRldGFpbHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisKK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0
IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzeXMKKworZnJvbSBweXBhcnNpbmcgaW1wb3J0
IFBhcnNlRXhjZXB0aW9uLCBQYXJzZVJlc3VsdHMsIHN0cmluZ1N0YXJ0LCBzdHJpbmdFbmQKK2Zy
b20gcHlwYXJzaW5nIGltcG9ydCBaZXJvT3JNb3JlLCBHcm91cCwgRm9yd2FyZCwgUXVvdGVkU3Ry
aW5nCitmcm9tIHB5cGFyc2luZyBpbXBvcnQgTGl0ZXJhbCBhcyBMICAjIG5vcWEKKworZnJvbSAu
X2NvbXBhdCBpbXBvcnQgc3RyaW5nX3R5cGVzCitmcm9tIC5fdHlwaW5nIGltcG9ydCBUWVBFX0NI
RUNLSU5HCitmcm9tIC5zcGVjaWZpZXJzIGltcG9ydCBTcGVjaWZpZXIsIEludmFsaWRTcGVjaWZp
ZXIKKworaWYgVFlQRV9DSEVDS0lORzogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBEaWN0LCBMaXN0LCBPcHRpb25hbCwgVHVwbGUsIFVu
aW9uCisKKyAgICBPcGVyYXRvciA9IENhbGxhYmxlW1tzdHIsIHN0cl0sIGJvb2xdCisKKworX19h
bGxfXyA9IFsKKyAgICAiSW52YWxpZE1hcmtlciIsCisgICAgIlVuZGVmaW5lZENvbXBhcmlzb24i
LAorICAgICJVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUiLAorICAgICJNYXJrZXIiLAorICAgICJk
ZWZhdWx0X2Vudmlyb25tZW50IiwKK10KKworCitjbGFzcyBJbnZhbGlkTWFya2VyKFZhbHVlRXJy
b3IpOgorICAgICIiIgorICAgIEFuIGludmFsaWQgbWFya2VyIHdhcyBmb3VuZCwgdXNlcnMgc2hv
dWxkIHJlZmVyIHRvIFBFUCA1MDguCisgICAgIiIiCisKKworY2xhc3MgVW5kZWZpbmVkQ29tcGFy
aXNvbihWYWx1ZUVycm9yKToKKyAgICAiIiIKKyAgICBBbiBpbnZhbGlkIG9wZXJhdGlvbiB3YXMg
YXR0ZW1wdGVkIG9uIGEgdmFsdWUgdGhhdCBkb2Vzbid0IHN1cHBvcnQgaXQuCisgICAgIiIiCisK
KworY2xhc3MgVW5kZWZpbmVkRW52aXJvbm1lbnROYW1lKFZhbHVlRXJyb3IpOgorICAgICIiIgor
ICAgIEEgbmFtZSB3YXMgYXR0ZW1wdGVkIHRvIGJlIHVzZWQgdGhhdCBkb2VzIG5vdCBleGlzdCBp
bnNpZGUgb2YgdGhlCisgICAgZW52aXJvbm1lbnQuCisgICAgIiIiCisKKworY2xhc3MgTm9kZShv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICMgdHlwZTog
KEFueSkgLT4gTm9uZQorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gc3Ry
KHNlbGYudmFsdWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gc3RyCisgICAgICAgIHJldHVybiAiPHswfSh7MSFyfSk+Ii5mb3JtYXQoc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18sIHN0cihzZWxmKSkKKworICAgIGRlZiBzZXJpYWxpemUoc2VsZik6Cisg
ICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IKKworCitjbGFzcyBWYXJpYWJsZShOb2RlKToKKyAgICBkZWYgc2VyaWFsaXplKHNlbGYpOgor
ICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKKwor
Y2xhc3MgVmFsdWUoTm9kZSk6CisgICAgZGVmIHNlcmlhbGl6ZShzZWxmKToKKyAgICAgICAgIyB0
eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICciezB9IicuZm9ybWF0KHNlbGYpCisKKwor
Y2xhc3MgT3AoTm9kZSk6CisgICAgZGVmIHNlcmlhbGl6ZShzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCisKK1ZBUklBQkxFID0gKAor
ICAgIEwoImltcGxlbWVudGF0aW9uX3ZlcnNpb24iKQorICAgIHwgTCgicGxhdGZvcm1fcHl0aG9u
X2ltcGxlbWVudGF0aW9uIikKKyAgICB8IEwoImltcGxlbWVudGF0aW9uX25hbWUiKQorICAgIHwg
TCgicHl0aG9uX2Z1bGxfdmVyc2lvbiIpCisgICAgfCBMKCJwbGF0Zm9ybV9yZWxlYXNlIikKKyAg
ICB8IEwoInBsYXRmb3JtX3ZlcnNpb24iKQorICAgIHwgTCgicGxhdGZvcm1fbWFjaGluZSIpCisg
ICAgfCBMKCJwbGF0Zm9ybV9zeXN0ZW0iKQorICAgIHwgTCgicHl0aG9uX3ZlcnNpb24iKQorICAg
IHwgTCgic3lzX3BsYXRmb3JtIikKKyAgICB8IEwoIm9zX25hbWUiKQorICAgIHwgTCgib3MubmFt
ZSIpICAjIFBFUC0zNDUKKyAgICB8IEwoInN5cy5wbGF0Zm9ybSIpICAjIFBFUC0zNDUKKyAgICB8
IEwoInBsYXRmb3JtLnZlcnNpb24iKSAgIyBQRVAtMzQ1CisgICAgfCBMKCJwbGF0Zm9ybS5tYWNo
aW5lIikgICMgUEVQLTM0NQorICAgIHwgTCgicGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9u
IikgICMgUEVQLTM0NQorICAgIHwgTCgicHl0aG9uX2ltcGxlbWVudGF0aW9uIikgICMgdW5kb2N1
bWVudGVkIHNldHVwdG9vbHMgbGVnYWN5CisgICAgfCBMKCJleHRyYSIpICAjIFBFUC01MDgKKykK
K0FMSUFTRVMgPSB7CisgICAgIm9zLm5hbWUiOiAib3NfbmFtZSIsCisgICAgInN5cy5wbGF0Zm9y
bSI6ICJzeXNfcGxhdGZvcm0iLAorICAgICJwbGF0Zm9ybS52ZXJzaW9uIjogInBsYXRmb3JtX3Zl
cnNpb24iLAorICAgICJwbGF0Zm9ybS5tYWNoaW5lIjogInBsYXRmb3JtX21hY2hpbmUiLAorICAg
ICJwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24iOiAicGxhdGZvcm1fcHl0aG9uX2ltcGxl
bWVudGF0aW9uIiwKKyAgICAicHl0aG9uX2ltcGxlbWVudGF0aW9uIjogInBsYXRmb3JtX3B5dGhv
bl9pbXBsZW1lbnRhdGlvbiIsCit9CitWQVJJQUJMRS5zZXRQYXJzZUFjdGlvbihsYW1iZGEgcywg
bCwgdDogVmFyaWFibGUoQUxJQVNFUy5nZXQodFswXSwgdFswXSkpKQorCitWRVJTSU9OX0NNUCA9
ICgKKyAgICBMKCI9PT0iKSB8IEwoIj09IikgfCBMKCI+PSIpIHwgTCgiPD0iKSB8IEwoIiE9Iikg
fCBMKCJ+PSIpIHwgTCgiPiIpIHwgTCgiPCIpCispCisKK01BUktFUl9PUCA9IFZFUlNJT05fQ01Q
IHwgTCgibm90IGluIikgfCBMKCJpbiIpCitNQVJLRVJfT1Auc2V0UGFyc2VBY3Rpb24obGFtYmRh
IHMsIGwsIHQ6IE9wKHRbMF0pKQorCitNQVJLRVJfVkFMVUUgPSBRdW90ZWRTdHJpbmcoIiciKSB8
IFF1b3RlZFN0cmluZygnIicpCitNQVJLRVJfVkFMVUUuc2V0UGFyc2VBY3Rpb24obGFtYmRhIHMs
IGwsIHQ6IFZhbHVlKHRbMF0pKQorCitCT09MT1AgPSBMKCJhbmQiKSB8IEwoIm9yIikKKworTUFS
S0VSX1ZBUiA9IFZBUklBQkxFIHwgTUFSS0VSX1ZBTFVFCisKK01BUktFUl9JVEVNID0gR3JvdXAo
TUFSS0VSX1ZBUiArIE1BUktFUl9PUCArIE1BUktFUl9WQVIpCitNQVJLRVJfSVRFTS5zZXRQYXJz
ZUFjdGlvbihsYW1iZGEgcywgbCwgdDogdHVwbGUodFswXSkpCisKK0xQQVJFTiA9IEwoIigiKS5z
dXBwcmVzcygpCitSUEFSRU4gPSBMKCIpIikuc3VwcHJlc3MoKQorCitNQVJLRVJfRVhQUiA9IEZv
cndhcmQoKQorTUFSS0VSX0FUT00gPSBNQVJLRVJfSVRFTSB8IEdyb3VwKExQQVJFTiArIE1BUktF
Ul9FWFBSICsgUlBBUkVOKQorTUFSS0VSX0VYUFIgPDwgTUFSS0VSX0FUT00gKyBaZXJvT3JNb3Jl
KEJPT0xPUCArIE1BUktFUl9FWFBSKQorCitNQVJLRVIgPSBzdHJpbmdTdGFydCArIE1BUktFUl9F
WFBSICsgc3RyaW5nRW5kCisKKworZGVmIF9jb2VyY2VfcGFyc2VfcmVzdWx0KHJlc3VsdHMpOgor
ICAgICMgdHlwZTogKFVuaW9uW1BhcnNlUmVzdWx0cywgTGlzdFtBbnldXSkgLT4gTGlzdFtBbnld
CisgICAgaWYgaXNpbnN0YW5jZShyZXN1bHRzLCBQYXJzZVJlc3VsdHMpOgorICAgICAgICByZXR1
cm4gW19jb2VyY2VfcGFyc2VfcmVzdWx0KGkpIGZvciBpIGluIHJlc3VsdHNdCisgICAgZWxzZToK
KyAgICAgICAgcmV0dXJuIHJlc3VsdHMKKworCitkZWYgX2Zvcm1hdF9tYXJrZXIobWFya2VyLCBm
aXJzdD1UcnVlKToKKyAgICAjIHR5cGU6IChVbmlvbltMaXN0W3N0cl0sIFR1cGxlW05vZGUsIC4u
Ll0sIHN0cl0sIE9wdGlvbmFsW2Jvb2xdKSAtPiBzdHIKKworICAgIGFzc2VydCBpc2luc3RhbmNl
KG1hcmtlciwgKGxpc3QsIHR1cGxlLCBzdHJpbmdfdHlwZXMpKQorCisgICAgIyBTb21ldGltZXMg
d2UgaGF2ZSBhIHN0cnVjdHVyZSBsaWtlIFtbLi4uXV0gd2hpY2ggaXMgYSBzaW5nbGUgaXRlbSBs
aXN0CisgICAgIyB3aGVyZSB0aGUgc2luZ2xlIGl0ZW0gaXMgaXRzZWxmIGl0J3Mgb3duIGxpc3Qu
IEluIHRoYXQgY2FzZSB3ZSB3YW50IHNraXAKKyAgICAjIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rp
b24gc28gdGhhdCB3ZSBkb24ndCBnZXQgZXh0cmFuZW91cyAoKSBvbiB0aGUKKyAgICAjIG91dHNp
ZGUuCisgICAgaWYgKAorICAgICAgICBpc2luc3RhbmNlKG1hcmtlciwgbGlzdCkKKyAgICAgICAg
YW5kIGxlbihtYXJrZXIpID09IDEKKyAgICAgICAgYW5kIGlzaW5zdGFuY2UobWFya2VyWzBdLCAo
bGlzdCwgdHVwbGUpKQorICAgICk6CisgICAgICAgIHJldHVybiBfZm9ybWF0X21hcmtlcihtYXJr
ZXJbMF0pCisKKyAgICBpZiBpc2luc3RhbmNlKG1hcmtlciwgbGlzdCk6CisgICAgICAgIGlubmVy
ID0gKF9mb3JtYXRfbWFya2VyKG0sIGZpcnN0PUZhbHNlKSBmb3IgbSBpbiBtYXJrZXIpCisgICAg
ICAgIGlmIGZpcnN0OgorICAgICAgICAgICAgcmV0dXJuICIgIi5qb2luKGlubmVyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIoIiArICIgIi5qb2luKGlubmVyKSArICIpIgor
ICAgIGVsaWYgaXNpbnN0YW5jZShtYXJrZXIsIHR1cGxlKToKKyAgICAgICAgcmV0dXJuICIgIi5q
b2luKFttLnNlcmlhbGl6ZSgpIGZvciBtIGluIG1hcmtlcl0pCisgICAgZWxzZToKKyAgICAgICAg
cmV0dXJuIG1hcmtlcgorCisKK19vcGVyYXRvcnMgPSB7CisgICAgImluIjogbGFtYmRhIGxocywg
cmhzOiBsaHMgaW4gcmhzLAorICAgICJub3QgaW4iOiBsYW1iZGEgbGhzLCByaHM6IGxocyBub3Qg
aW4gcmhzLAorICAgICI8Ijogb3BlcmF0b3IubHQsCisgICAgIjw9Ijogb3BlcmF0b3IubGUsCisg
ICAgIj09Ijogb3BlcmF0b3IuZXEsCisgICAgIiE9Ijogb3BlcmF0b3IubmUsCisgICAgIj49Ijog
b3BlcmF0b3IuZ2UsCisgICAgIj4iOiBvcGVyYXRvci5ndCwKK30gICMgdHlwZTogRGljdFtzdHIs
IE9wZXJhdG9yXQorCisKK2RlZiBfZXZhbF9vcChsaHMsIG9wLCByaHMpOgorICAgICMgdHlwZTog
KHN0ciwgT3AsIHN0cikgLT4gYm9vbAorICAgIHRyeToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmll
cigiIi5qb2luKFtvcC5zZXJpYWxpemUoKSwgcmhzXSkpCisgICAgZXhjZXB0IEludmFsaWRTcGVj
aWZpZXI6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc3BlYy5jb250
YWlucyhsaHMpCisKKyAgICBvcGVyID0gX29wZXJhdG9ycy5nZXQob3Auc2VyaWFsaXplKCkpICAj
IHR5cGU6IE9wdGlvbmFsW09wZXJhdG9yXQorICAgIGlmIG9wZXIgaXMgTm9uZToKKyAgICAgICAg
cmFpc2UgVW5kZWZpbmVkQ29tcGFyaXNvbigKKyAgICAgICAgICAgICJVbmRlZmluZWQgezAhcn0g
b24gezEhcn0gYW5kIHsyIXJ9LiIuZm9ybWF0KG9wLCBsaHMsIHJocykKKyAgICAgICAgKQorCisg
ICAgcmV0dXJuIG9wZXIobGhzLCByaHMpCisKKworY2xhc3MgVW5kZWZpbmVkKG9iamVjdCk6Cisg
ICAgcGFzcworCisKK191bmRlZmluZWQgPSBVbmRlZmluZWQoKQorCisKK2RlZiBfZ2V0X2Vudihl
bnZpcm9ubWVudCwgbmFtZSk6CisgICAgIyB0eXBlOiAoRGljdFtzdHIsIHN0cl0sIHN0cikgLT4g
c3RyCisgICAgdmFsdWUgPSBlbnZpcm9ubWVudC5nZXQobmFtZSwgX3VuZGVmaW5lZCkgICMgdHlw
ZTogVW5pb25bc3RyLCBVbmRlZmluZWRdCisKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBVbmRl
ZmluZWQpOgorICAgICAgICByYWlzZSBVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUoCisgICAgICAg
ICAgICAiezAhcn0gZG9lcyBub3QgZXhpc3QgaW4gZXZhbHVhdGlvbiBlbnZpcm9ubWVudC4iLmZv
cm1hdChuYW1lKQorICAgICAgICApCisKKyAgICByZXR1cm4gdmFsdWUKKworCitkZWYgX2V2YWx1
YXRlX21hcmtlcnMobWFya2VycywgZW52aXJvbm1lbnQpOgorICAgICMgdHlwZTogKExpc3RbQW55
XSwgRGljdFtzdHIsIHN0cl0pIC0+IGJvb2wKKyAgICBncm91cHMgPSBbW11dICAjIHR5cGU6IExp
c3RbTGlzdFtib29sXV0KKworICAgIGZvciBtYXJrZXIgaW4gbWFya2VyczoKKyAgICAgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UobWFya2VyLCAobGlzdCwgdHVwbGUsIHN0cmluZ190eXBlcykpCisKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShtYXJrZXIsIGxpc3QpOgorICAgICAgICAgICAgZ3JvdXBzWy0x
XS5hcHBlbmQoX2V2YWx1YXRlX21hcmtlcnMobWFya2VyLCBlbnZpcm9ubWVudCkpCisgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShtYXJrZXIsIHR1cGxlKToKKyAgICAgICAgICAgIGxocywgb3AsIHJo
cyA9IG1hcmtlcgorCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxocywgVmFyaWFibGUpOgor
ICAgICAgICAgICAgICAgIGxoc192YWx1ZSA9IF9nZXRfZW52KGVudmlyb25tZW50LCBsaHMudmFs
dWUpCisgICAgICAgICAgICAgICAgcmhzX3ZhbHVlID0gcmhzLnZhbHVlCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIGxoc192YWx1ZSA9IGxocy52YWx1ZQorICAgICAgICAgICAg
ICAgIHJoc192YWx1ZSA9IF9nZXRfZW52KGVudmlyb25tZW50LCByaHMudmFsdWUpCisKKyAgICAg
ICAgICAgIGdyb3Vwc1stMV0uYXBwZW5kKF9ldmFsX29wKGxoc192YWx1ZSwgb3AsIHJoc192YWx1
ZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgbWFya2VyIGluIFsiYW5kIiwg
Im9yIl0KKyAgICAgICAgICAgIGlmIG1hcmtlciA9PSAib3IiOgorICAgICAgICAgICAgICAgIGdy
b3Vwcy5hcHBlbmQoW10pCisKKyAgICByZXR1cm4gYW55KGFsbChpdGVtKSBmb3IgaXRlbSBpbiBn
cm91cHMpCisKKworZGVmIGZvcm1hdF9mdWxsX3ZlcnNpb24oaW5mbyk6CisgICAgIyB0eXBlOiAo
c3lzLl92ZXJzaW9uX2luZm8pIC0+IHN0cgorICAgIHZlcnNpb24gPSAiezAubWFqb3J9LnswLm1p
bm9yfS57MC5taWNyb30iLmZvcm1hdChpbmZvKQorICAgIGtpbmQgPSBpbmZvLnJlbGVhc2VsZXZl
bAorICAgIGlmIGtpbmQgIT0gImZpbmFsIjoKKyAgICAgICAgdmVyc2lvbiArPSBraW5kWzBdICsg
c3RyKGluZm8uc2VyaWFsKQorICAgIHJldHVybiB2ZXJzaW9uCisKKworZGVmIGRlZmF1bHRfZW52
aXJvbm1lbnQoKToKKyAgICAjIHR5cGU6ICgpIC0+IERpY3Rbc3RyLCBzdHJdCisgICAgaWYgaGFz
YXR0cihzeXMsICJpbXBsZW1lbnRhdGlvbiIpOgorICAgICAgICAjIElnbm9yaW5nIHRoZSBgc3lz
LmltcGxlbWVudGF0aW9uYCByZWZlcmVuY2UgZm9yIHR5cGUgY2hlY2tpbmcgZHVlIHRvCisgICAg
ICAgICMgbXlweSBub3QgbGlraW5nIHRoYXQgdGhlIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0IGlu
IFB5dGhvbiAyLjcgd2hlbgorICAgICAgICAjIHJ1biB3aXRoIHRoZSBgLS1weTI3YCBmbGFnLgor
ICAgICAgICBpdmVyID0gZm9ybWF0X2Z1bGxfdmVyc2lvbihzeXMuaW1wbGVtZW50YXRpb24udmVy
c2lvbikgICMgdHlwZTogaWdub3JlCisgICAgICAgIGltcGxlbWVudGF0aW9uX25hbWUgPSBzeXMu
aW1wbGVtZW50YXRpb24ubmFtZSAgIyB0eXBlOiBpZ25vcmUKKyAgICBlbHNlOgorICAgICAgICBp
dmVyID0gIjAiCisgICAgICAgIGltcGxlbWVudGF0aW9uX25hbWUgPSAiIgorCisgICAgcmV0dXJu
IHsKKyAgICAgICAgImltcGxlbWVudGF0aW9uX25hbWUiOiBpbXBsZW1lbnRhdGlvbl9uYW1lLAor
ICAgICAgICAiaW1wbGVtZW50YXRpb25fdmVyc2lvbiI6IGl2ZXIsCisgICAgICAgICJvc19uYW1l
Ijogb3MubmFtZSwKKyAgICAgICAgInBsYXRmb3JtX21hY2hpbmUiOiBwbGF0Zm9ybS5tYWNoaW5l
KCksCisgICAgICAgICJwbGF0Zm9ybV9yZWxlYXNlIjogcGxhdGZvcm0ucmVsZWFzZSgpLAorICAg
ICAgICAicGxhdGZvcm1fc3lzdGVtIjogcGxhdGZvcm0uc3lzdGVtKCksCisgICAgICAgICJwbGF0
Zm9ybV92ZXJzaW9uIjogcGxhdGZvcm0udmVyc2lvbigpLAorICAgICAgICAicHl0aG9uX2Z1bGxf
dmVyc2lvbiI6IHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCksCisgICAgICAgICJwbGF0Zm9ybV9w
eXRob25faW1wbGVtZW50YXRpb24iOiBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwK
KyAgICAgICAgInB5dGhvbl92ZXJzaW9uIjogIi4iLmpvaW4ocGxhdGZvcm0ucHl0aG9uX3ZlcnNp
b25fdHVwbGUoKVs6Ml0pLAorICAgICAgICAic3lzX3BsYXRmb3JtIjogc3lzLnBsYXRmb3JtLAor
ICAgIH0KKworCitjbGFzcyBNYXJrZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bWFya2VyKToKKyAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBOb25lCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHNlbGYuX21hcmtlcnMgPSBfY29lcmNlX3BhcnNlX3Jlc3VsdChNQVJLRVIucGFy
c2VTdHJpbmcobWFya2VyKSkKKyAgICAgICAgZXhjZXB0IFBhcnNlRXhjZXB0aW9uIGFzIGU6Cisg
ICAgICAgICAgICBlcnJfc3RyID0gIkludmFsaWQgbWFya2VyOiB7MCFyfSwgcGFyc2UgZXJyb3Ig
YXQgezEhcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBtYXJrZXIsIG1hcmtlcltlLmxvYyA6
IGUubG9jICsgOF0KKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRNYXJr
ZXIoZXJyX3N0cikKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgp
IC0+IHN0cgorICAgICAgICByZXR1cm4gX2Zvcm1hdF9tYXJrZXIoc2VsZi5fbWFya2VycykKKwor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAg
ICAgcmV0dXJuICI8TWFya2VyKHswIXJ9KT4iLmZvcm1hdChzdHIoc2VsZikpCisKKyAgICBkZWYg
ZXZhbHVhdGUoc2VsZiwgZW52aXJvbm1lbnQ9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKE9wdGlv
bmFsW0RpY3Rbc3RyLCBzdHJdXSkgLT4gYm9vbAorICAgICAgICAiIiJFdmFsdWF0ZSBhIG1hcmtl
ci4KKworICAgICAgICBSZXR1cm4gdGhlIGJvb2xlYW4gZnJvbSBldmFsdWF0aW5nIHRoZSBnaXZl
biBtYXJrZXIgYWdhaW5zdCB0aGUKKyAgICAgICAgZW52aXJvbm1lbnQuIGVudmlyb25tZW50IGlz
IGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGFsbCBvcgorICAgICAgICBwYXJ0IG9m
IHRoZSBkZXRlcm1pbmVkIGVudmlyb25tZW50LgorCisgICAgICAgIFRoZSBlbnZpcm9ubWVudCBp
cyBkZXRlcm1pbmVkIGZyb20gdGhlIGN1cnJlbnQgUHl0aG9uIHByb2Nlc3MuCisgICAgICAgICIi
IgorICAgICAgICBjdXJyZW50X2Vudmlyb25tZW50ID0gZGVmYXVsdF9lbnZpcm9ubWVudCgpCisg
ICAgICAgIGlmIGVudmlyb25tZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY3VycmVudF9l
bnZpcm9ubWVudC51cGRhdGUoZW52aXJvbm1lbnQpCisKKyAgICAgICAgcmV0dXJuIF9ldmFsdWF0
ZV9tYXJrZXJzKHNlbGYuX21hcmtlcnMsIGN1cnJlbnRfZW52aXJvbm1lbnQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvcHkudHlwZWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNr
YWdpbmcvcHkudHlwZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5l
NjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9yZXF1aXJl
bWVudHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvcmVxdWlyZW1lbnRzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjIyNmU5ODRlMjQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3JlcXVpcmVtZW50cy5weQpAQCAt
MCwwICsxLDE1MSBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGlj
ZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5
CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorCitpbXBvcnQgc3RyaW5nCitpbXBv
cnQgcmUKK2ltcG9ydCBzeXMKKworZnJvbSBweXBhcnNpbmcgaW1wb3J0IHN0cmluZ1N0YXJ0LCBz
dHJpbmdFbmQsIG9yaWdpbmFsVGV4dEZvciwgUGFyc2VFeGNlcHRpb24KK2Zyb20gcHlwYXJzaW5n
IGltcG9ydCBaZXJvT3JNb3JlLCBXb3JkLCBPcHRpb25hbCwgUmVnZXgsIENvbWJpbmUKK2Zyb20g
cHlwYXJzaW5nIGltcG9ydCBMaXRlcmFsIGFzIEwgICMgbm9xYQorCitmcm9tIC5fdHlwaW5nIGlt
cG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIC5tYXJrZXJzIGltcG9ydCBNQVJLRVJfRVhQUiwgTWFy
a2VyCitmcm9tIC5zcGVjaWZpZXJzIGltcG9ydCBMZWdhY3lTcGVjaWZpZXIsIFNwZWNpZmllciwg
U3BlY2lmaWVyU2V0CisKK2lmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKyAgICBmcm9tIHVy
bGxpYiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UgICMgcHJhZ21hOiBubyBjb3ZlcgorZWxzZTog
ICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIGltcG9ydCB1cmxwYXJzZQorCisKK2lmIFRZUEVfQ0hF
Q0tJTkc6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAor
CisKK2NsYXNzIEludmFsaWRSZXF1aXJlbWVudChWYWx1ZUVycm9yKToKKyAgICAiIiIKKyAgICBB
biBpbnZhbGlkIHJlcXVpcmVtZW50IHdhcyBmb3VuZCwgdXNlcnMgc2hvdWxkIHJlZmVyIHRvIFBF
UCA1MDguCisgICAgIiIiCisKKworQUxQSEFOVU0gPSBXb3JkKHN0cmluZy5hc2NpaV9sZXR0ZXJz
ICsgc3RyaW5nLmRpZ2l0cykKKworTEJSQUNLRVQgPSBMKCJbIikuc3VwcHJlc3MoKQorUkJSQUNL
RVQgPSBMKCJdIikuc3VwcHJlc3MoKQorTFBBUkVOID0gTCgiKCIpLnN1cHByZXNzKCkKK1JQQVJF
TiA9IEwoIikiKS5zdXBwcmVzcygpCitDT01NQSA9IEwoIiwiKS5zdXBwcmVzcygpCitTRU1JQ09M
T04gPSBMKCI7Iikuc3VwcHJlc3MoKQorQVQgPSBMKCJAIikuc3VwcHJlc3MoKQorCitQVU5DVFVB
VElPTiA9IFdvcmQoIi1fLiIpCitJREVOVElGSUVSX0VORCA9IEFMUEhBTlVNIHwgKFplcm9Pck1v
cmUoUFVOQ1RVQVRJT04pICsgQUxQSEFOVU0pCitJREVOVElGSUVSID0gQ29tYmluZShBTFBIQU5V
TSArIFplcm9Pck1vcmUoSURFTlRJRklFUl9FTkQpKQorCitOQU1FID0gSURFTlRJRklFUigibmFt
ZSIpCitFWFRSQSA9IElERU5USUZJRVIKKworVVJJID0gUmVnZXgociJbXiBdKyIpKCJ1cmwiKQor
VVJMID0gQVQgKyBVUkkKKworRVhUUkFTX0xJU1QgPSBFWFRSQSArIFplcm9Pck1vcmUoQ09NTUEg
KyBFWFRSQSkKK0VYVFJBUyA9IChMQlJBQ0tFVCArIE9wdGlvbmFsKEVYVFJBU19MSVNUKSArIFJC
UkFDS0VUKSgiZXh0cmFzIikKKworVkVSU0lPTl9QRVA0NDAgPSBSZWdleChTcGVjaWZpZXIuX3Jl
Z2V4X3N0ciwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpCitWRVJTSU9OX0xFR0FDWSA9IFJl
Z2V4KExlZ2FjeVNwZWNpZmllci5fcmVnZXhfc3RyLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FT
RSkKKworVkVSU0lPTl9PTkUgPSBWRVJTSU9OX1BFUDQ0MCBeIFZFUlNJT05fTEVHQUNZCitWRVJT
SU9OX01BTlkgPSBDb21iaW5lKAorICAgIFZFUlNJT05fT05FICsgWmVyb09yTW9yZShDT01NQSAr
IFZFUlNJT05fT05FKSwgam9pblN0cmluZz0iLCIsIGFkamFjZW50PUZhbHNlCispKCJfcmF3X3Nw
ZWMiKQorX1ZFUlNJT05fU1BFQyA9IE9wdGlvbmFsKCgoTFBBUkVOICsgVkVSU0lPTl9NQU5ZICsg
UlBBUkVOKSB8IFZFUlNJT05fTUFOWSkpCitfVkVSU0lPTl9TUEVDLnNldFBhcnNlQWN0aW9uKGxh
bWJkYSBzLCBsLCB0OiB0Ll9yYXdfc3BlYyBvciAiIikKKworVkVSU0lPTl9TUEVDID0gb3JpZ2lu
YWxUZXh0Rm9yKF9WRVJTSU9OX1NQRUMpKCJzcGVjaWZpZXIiKQorVkVSU0lPTl9TUEVDLnNldFBh
cnNlQWN0aW9uKGxhbWJkYSBzLCBsLCB0OiB0WzFdKQorCitNQVJLRVJfRVhQUiA9IG9yaWdpbmFs
VGV4dEZvcihNQVJLRVJfRVhQUigpKSgibWFya2VyIikKK01BUktFUl9FWFBSLnNldFBhcnNlQWN0
aW9uKAorICAgIGxhbWJkYSBzLCBsLCB0OiBNYXJrZXIoc1t0Ll9vcmlnaW5hbF9zdGFydCA6IHQu
X29yaWdpbmFsX2VuZF0pCispCitNQVJLRVJfU0VQQVJBVE9SID0gU0VNSUNPTE9OCitNQVJLRVIg
PSBNQVJLRVJfU0VQQVJBVE9SICsgTUFSS0VSX0VYUFIKKworVkVSU0lPTl9BTkRfTUFSS0VSID0g
VkVSU0lPTl9TUEVDICsgT3B0aW9uYWwoTUFSS0VSKQorVVJMX0FORF9NQVJLRVIgPSBVUkwgKyBP
cHRpb25hbChNQVJLRVIpCisKK05BTUVEX1JFUVVJUkVNRU5UID0gTkFNRSArIE9wdGlvbmFsKEVY
VFJBUykgKyAoVVJMX0FORF9NQVJLRVIgfCBWRVJTSU9OX0FORF9NQVJLRVIpCisKK1JFUVVJUkVN
RU5UID0gc3RyaW5nU3RhcnQgKyBOQU1FRF9SRVFVSVJFTUVOVCArIHN0cmluZ0VuZAorIyBweXBh
cnNpbmcgaXNuJ3QgdGhyZWFkIHNhZmUgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBzbyB3ZSBkbyBp
dCBlYWdlcmx5LCBzZWUKKyMgaXNzdWUgIzEwNAorUkVRVUlSRU1FTlQucGFyc2VTdHJpbmcoInhb
XSIpCisKKworY2xhc3MgUmVxdWlyZW1lbnQob2JqZWN0KToKKyAgICAiIiJQYXJzZSBhIHJlcXVp
cmVtZW50LgorCisgICAgUGFyc2UgYSBnaXZlbiByZXF1aXJlbWVudCBzdHJpbmcgaW50byBpdHMg
cGFydHMsIHN1Y2ggYXMgbmFtZSwgc3BlY2lmaWVyLAorICAgIFVSTCwgYW5kIGV4dHJhcy4gUmFp
c2VzIEludmFsaWRSZXF1aXJlbWVudCBvbiBhIGJhZGx5LWZvcm1lZCByZXF1aXJlbWVudAorICAg
IHN0cmluZy4KKyAgICAiIiIKKworICAgICMgVE9ETzogQ2FuIHdlIHRlc3Qgd2hldGhlciBzb21l
dGhpbmcgaXMgY29udGFpbmVkIHdpdGhpbiBhIHJlcXVpcmVtZW50PworICAgICMgICAgICAgSWYg
c28gaG93IGRvIHdlIGRvIHRoYXQ/IERvIHdlIG5lZWQgdG8gdGVzdCBhZ2FpbnN0IHRoZSBfbmFt
ZV8gb2YKKyAgICAjICAgICAgIHRoZSB0aGluZyBhcyB3ZWxsIGFzIHRoZSB2ZXJzaW9uPyBXaGF0
IGFib3V0IHRoZSBtYXJrZXJzPworICAgICMgVE9ETzogQ2FuIHdlIG5vcm1hbGl6ZSB0aGUgbmFt
ZSBhbmQgZXh0cmEgbmFtZT8KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1aXJlbWVudF9z
dHJpbmcpOgorICAgICAgICAjIHR5cGU6IChzdHIpIC0+IE5vbmUKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgcmVxID0gUkVRVUlSRU1FTlQucGFyc2VTdHJpbmcocmVxdWlyZW1lbnRfc3RyaW5n
KQorICAgICAgICBleGNlcHQgUGFyc2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNl
IEludmFsaWRSZXF1aXJlbWVudCgKKyAgICAgICAgICAgICAgICAnUGFyc2UgZXJyb3IgYXQgInsw
IXJ9IjogezF9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50X3N0cmlu
Z1tlLmxvYyA6IGUubG9jICsgOF0sIGUubXNnCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKQorCisgICAgICAgIHNlbGYubmFtZSA9IHJlcS5uYW1lCisgICAgICAgIGlmIHJlcS51cmw6
CisgICAgICAgICAgICBwYXJzZWRfdXJsID0gdXJscGFyc2UudXJscGFyc2UocmVxLnVybCkKKyAg
ICAgICAgICAgIGlmIHBhcnNlZF91cmwuc2NoZW1lID09ICJmaWxlIjoKKyAgICAgICAgICAgICAg
ICBpZiB1cmxwYXJzZS51cmx1bnBhcnNlKHBhcnNlZF91cmwpICE9IHJlcS51cmw6CisgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIEludmFsaWRSZXF1aXJlbWVudCgiSW52YWxpZCBVUkwgZ2l2ZW4i
KQorICAgICAgICAgICAgZWxpZiBub3QgKHBhcnNlZF91cmwuc2NoZW1lIGFuZCBwYXJzZWRfdXJs
Lm5ldGxvYykgb3IgKAorICAgICAgICAgICAgICAgIG5vdCBwYXJzZWRfdXJsLnNjaGVtZSBhbmQg
bm90IHBhcnNlZF91cmwubmV0bG9jCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHJh
aXNlIEludmFsaWRSZXF1aXJlbWVudCgiSW52YWxpZCBVUkw6IHswfSIuZm9ybWF0KHJlcS51cmwp
KQorICAgICAgICAgICAgc2VsZi51cmwgPSByZXEudXJsCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLnVybCA9IE5vbmUKKyAgICAgICAgc2VsZi5leHRyYXMgPSBzZXQocmVxLmV4dHJh
cy5hc0xpc3QoKSBpZiByZXEuZXh0cmFzIGVsc2UgW10pCisgICAgICAgIHNlbGYuc3BlY2lmaWVy
ID0gU3BlY2lmaWVyU2V0KHJlcS5zcGVjaWZpZXIpCisgICAgICAgIHNlbGYubWFya2VyID0gcmVx
Lm1hcmtlciBpZiByZXEubWFya2VyIGVsc2UgTm9uZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHBhcnRzID0gW3NlbGYubmFtZV0g
ICMgdHlwZTogTGlzdFtzdHJdCisKKyAgICAgICAgaWYgc2VsZi5leHRyYXM6CisgICAgICAgICAg
ICBwYXJ0cy5hcHBlbmQoIlt7MH1dIi5mb3JtYXQoIiwiLmpvaW4oc29ydGVkKHNlbGYuZXh0cmFz
KSkpKQorCisgICAgICAgIGlmIHNlbGYuc3BlY2lmaWVyOgorICAgICAgICAgICAgcGFydHMuYXBw
ZW5kKHN0cihzZWxmLnNwZWNpZmllcikpCisKKyAgICAgICAgaWYgc2VsZi51cmw6CisgICAgICAg
ICAgICBwYXJ0cy5hcHBlbmQoIkAgezB9Ii5mb3JtYXQoc2VsZi51cmwpKQorICAgICAgICAgICAg
aWYgc2VsZi5tYXJrZXI6CisgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIgIikKKworICAg
ICAgICBpZiBzZWxmLm1hcmtlcjoKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgiOyB7MH0iLmZv
cm1hdChzZWxmLm1hcmtlcikpCisKKyAgICAgICAgcmV0dXJuICIiLmpvaW4ocGFydHMpCisKKyAg
ICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAg
IHJldHVybiAiPFJlcXVpcmVtZW50KHswIXJ9KT4iLmZvcm1hdChzdHIoc2VsZikpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvc3BlY2lmaWVycy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2Fn
aW5nL3BhY2thZ2luZy9zcGVjaWZpZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYTQyY2JmZWYzMzI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvcGFja2FnaW5nL3NwZWNpZmllcnMucHkKQEAgLTAsMCArMSw4NjQgQEAKKyMgVGhpcyBmaWxl
IGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4K
K2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRf
ZnVuY3Rpb24KKworaW1wb3J0IGFiYworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGl0ZXJ0b29s
cworaW1wb3J0IHJlCitpbXBvcnQgd2FybmluZ3MKKworZnJvbSAuX2NvbXBhdCBpbXBvcnQgc3Ry
aW5nX3R5cGVzLCB3aXRoX21ldGFjbGFzcworZnJvbSAuX3R5cGluZyBpbXBvcnQgVFlQRV9DSEVD
S0lORworZnJvbSAudXRpbHMgaW1wb3J0IGNhbm9uaWNhbGl6ZV92ZXJzaW9uCitmcm9tIC52ZXJz
aW9uIGltcG9ydCBWZXJzaW9uLCBMZWdhY3lWZXJzaW9uLCBwYXJzZQorCitpZiBUWVBFX0NIRUNL
SU5HOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERp
Y3QsIFVuaW9uLCBJdGVyYWJsZSwgSXRlcmF0b3IsIE9wdGlvbmFsLCBDYWxsYWJsZSwgVHVwbGUK
KworICAgIFBhcnNlZFZlcnNpb24gPSBVbmlvbltWZXJzaW9uLCBMZWdhY3lWZXJzaW9uXQorICAg
IFVucGFyc2VkVmVyc2lvbiA9IFVuaW9uW1ZlcnNpb24sIExlZ2FjeVZlcnNpb24sIHN0cl0KKyAg
ICBDYWxsYWJsZU9wZXJhdG9yID0gQ2FsbGFibGVbW1BhcnNlZFZlcnNpb24sIHN0cl0sIGJvb2xd
CisKKworY2xhc3MgSW52YWxpZFNwZWNpZmllcihWYWx1ZUVycm9yKToKKyAgICAiIiIKKyAgICBB
biBpbnZhbGlkIHNwZWNpZmllciB3YXMgZm91bmQsIHVzZXJzIHNob3VsZCByZWZlciB0byBQRVAg
NDQwLgorICAgICIiIgorCisKK2NsYXNzIEJhc2VTcGVjaWZpZXIod2l0aF9tZXRhY2xhc3MoYWJj
LkFCQ01ldGEsIG9iamVjdCkpOiAgIyB0eXBlOiBpZ25vcmUKKyAgICBAYWJjLmFic3RyYWN0bWV0
aG9kCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisg
ICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBzdHIgcmVwcmVzZW50YXRpb24gb2YgdGhp
cyBTcGVjaWZpZXIgbGlrZSBvYmplY3QuIFRoaXMKKyAgICAgICAgc2hvdWxkIGJlIHJlcHJlc2Vu
dGF0aXZlIG9mIHRoZSBTcGVjaWZpZXIgaXRzZWxmLgorICAgICAgICAiIiIKKworICAgIEBhYmMu
YWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gaW50CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGEgaGFzaCB2YWx1ZSBmb3Ig
dGhpcyBTcGVjaWZpZXIgbGlrZSBvYmplY3QuCisgICAgICAgICIiIgorCisgICAgQGFiYy5hYnN0
cmFjdG1ldGhvZAorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6
IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBib29sZWFu
IHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdHdvIFNwZWNpZmllciBsaWtlCisgICAg
ICAgIG9iamVjdHMgYXJlIGVxdWFsLgorICAgICAgICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3Rt
ZXRob2QKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2Jq
ZWN0KSAtPiBib29sCisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGEgYm9vbGVhbiByZXBy
ZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhlIHR3byBTcGVjaWZpZXIgbGlrZQorICAgICAgICBv
YmplY3RzIGFyZSBub3QgZXF1YWwuCisgICAgICAgICIiIgorCisgICAgQGFiYy5hYnN0cmFjdHBy
b3BlcnR5CisgICAgZGVmIHByZXJlbGVhc2VzKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+
IE9wdGlvbmFsW2Jvb2xdCisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHdoZXRoZXIgb3Ig
bm90IHByZS1yZWxlYXNlcyBhcyBhIHdob2xlIGFyZSBhbGxvd2VkIGJ5IHRoaXMKKyAgICAgICAg
c3BlY2lmaWVyLgorICAgICAgICAiIiIKKworICAgIEBwcmVyZWxlYXNlcy5zZXR0ZXIKKyAgICBk
ZWYgcHJlcmVsZWFzZXMoc2VsZiwgdmFsdWUpOgorICAgICAgICAjIHR5cGU6IChib29sKSAtPiBO
b25lCisgICAgICAgICIiIgorICAgICAgICBTZXRzIHdoZXRoZXIgb3Igbm90IHByZS1yZWxlYXNl
cyBhcyBhIHdob2xlIGFyZSBhbGxvd2VkIGJ5IHRoaXMKKyAgICAgICAgc3BlY2lmaWVyLgorICAg
ICAgICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgY29udGFpbnMoc2Vs
ZiwgaXRlbSwgcHJlcmVsZWFzZXM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKHN0ciwgT3B0aW9u
YWxbYm9vbF0pIC0+IGJvb2wKKyAgICAgICAgIiIiCisgICAgICAgIERldGVybWluZXMgaWYgdGhl
IGdpdmVuIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbiB0aGlzIHNwZWNpZmllci4KKyAgICAgICAg
IiIiCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZpbHRlcihzZWxmLCBpdGVy
YWJsZSwgcHJlcmVsZWFzZXM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKEl0ZXJhYmxlW1VucGFy
c2VkVmVyc2lvbl0sIE9wdGlvbmFsW2Jvb2xdKSAtPiBJdGVyYWJsZVtVbnBhcnNlZFZlcnNpb25d
CisgICAgICAgICIiIgorICAgICAgICBUYWtlcyBhbiBpdGVyYWJsZSBvZiBpdGVtcyBhbmQgZmls
dGVycyB0aGVtIHNvIHRoYXQgb25seSBpdGVtcyB3aGljaAorICAgICAgICBhcmUgY29udGFpbmVk
IHdpdGhpbiB0aGlzIHNwZWNpZmllciBhcmUgYWxsb3dlZCBpbiBpdC4KKyAgICAgICAgIiIiCisK
KworY2xhc3MgX0luZGl2aWR1YWxTcGVjaWZpZXIoQmFzZVNwZWNpZmllcik6CisKKyAgICBfb3Bl
cmF0b3JzID0ge30gICMgdHlwZTogRGljdFtzdHIsIHN0cl0KKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBzcGVjPSIiLCBwcmVyZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoc3RyLCBP
cHRpb25hbFtib29sXSkgLT4gTm9uZQorICAgICAgICBtYXRjaCA9IHNlbGYuX3JlZ2V4LnNlYXJj
aChzcGVjKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlk
U3BlY2lmaWVyKCJJbnZhbGlkIHNwZWNpZmllcjogJ3swfSciLmZvcm1hdChzcGVjKSkKKworICAg
ICAgICBzZWxmLl9zcGVjID0gKAorICAgICAgICAgICAgbWF0Y2guZ3JvdXAoIm9wZXJhdG9yIiku
c3RyaXAoKSwKKyAgICAgICAgICAgIG1hdGNoLmdyb3VwKCJ2ZXJzaW9uIikuc3RyaXAoKSwKKyAg
ICAgICAgKSAgIyB0eXBlOiBUdXBsZVtzdHIsIHN0cl0KKworICAgICAgICAjIFN0b3JlIHdoZXRo
ZXIgb3Igbm90IHRoaXMgU3BlY2lmaWVyIHNob3VsZCBhY2NlcHQgcHJlcmVsZWFzZXMKKyAgICAg
ICAgc2VsZi5fcHJlcmVsZWFzZXMgPSBwcmVyZWxlYXNlcworCisgICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICBwcmUgPSAoCisgICAgICAg
ICAgICAiLCBwcmVyZWxlYXNlcz17MCFyfSIuZm9ybWF0KHNlbGYucHJlcmVsZWFzZXMpCisgICAg
ICAgICAgICBpZiBzZWxmLl9wcmVyZWxlYXNlcyBpcyBub3QgTm9uZQorICAgICAgICAgICAgZWxz
ZSAiIgorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuICI8ezB9KHsxIXJ9ezJ9KT4iLmZvcm1h
dChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpLCBwcmUpCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICJ7
MH17MX0iLmZvcm1hdCgqc2VsZi5fc3BlYykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfY2Fu
b25pY2FsX3NwZWMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbc3RyLCBVbmlv
bltWZXJzaW9uLCBzdHJdXQorICAgICAgICByZXR1cm4gc2VsZi5fc3BlY1swXSwgY2Fub25pY2Fs
aXplX3ZlcnNpb24oc2VsZi5fc3BlY1sxXSkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fY2Fub25p
Y2FsX3NwZWMpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBl
OiAob2JqZWN0KSAtPiBib29sCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cmluZ190
eXBlcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3RoZXIgPSBzZWxmLl9f
Y2xhc3NfXyhzdHIob3RoZXIpKQorICAgICAgICAgICAgZXhjZXB0IEludmFsaWRTcGVjaWZpZXI6
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIGVsaWYgbm90
IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBO
b3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVybiBzZWxmLl9jYW5vbmljYWxfc3BlYyA9PSBv
dGhlci5fY2Fub25pY2FsX3NwZWMKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAg
ICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhl
ciwgc3RyaW5nX3R5cGVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvdGhl
ciA9IHNlbGYuX19jbGFzc19fKHN0cihvdGhlcikpCisgICAgICAgICAgICBleGNlcHQgSW52YWxp
ZFNwZWNpZmllcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAg
ICAgZWxpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAg
ICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWMgIT0g
b3RoZXIuX3NwZWMKKworICAgIGRlZiBfZ2V0X29wZXJhdG9yKHNlbGYsIG9wKToKKyAgICAgICAg
IyB0eXBlOiAoc3RyKSAtPiBDYWxsYWJsZU9wZXJhdG9yCisgICAgICAgIG9wZXJhdG9yX2NhbGxh
YmxlID0gZ2V0YXR0cigKKyAgICAgICAgICAgIHNlbGYsICJfY29tcGFyZV97MH0iLmZvcm1hdChz
ZWxmLl9vcGVyYXRvcnNbb3BdKQorICAgICAgICApICAjIHR5cGU6IENhbGxhYmxlT3BlcmF0b3IK
KyAgICAgICAgcmV0dXJuIG9wZXJhdG9yX2NhbGxhYmxlCisKKyAgICBkZWYgX2NvZXJjZV92ZXJz
aW9uKHNlbGYsIHZlcnNpb24pOgorICAgICAgICAjIHR5cGU6IChVbnBhcnNlZFZlcnNpb24pIC0+
IFBhcnNlZFZlcnNpb24KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmVyc2lvbiwgKExlZ2Fj
eVZlcnNpb24sIFZlcnNpb24pKToKKyAgICAgICAgICAgIHZlcnNpb24gPSBwYXJzZSh2ZXJzaW9u
KQorICAgICAgICByZXR1cm4gdmVyc2lvbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG9wZXJh
dG9yKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gc2Vs
Zi5fc3BlY1swXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAg
ICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzZWxmLl9zcGVjWzFdCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXJlbGVhc2VzCisK
KyAgICBAcHJlcmVsZWFzZXMuc2V0dGVyCisgICAgZGVmIHByZXJlbGVhc2VzKHNlbGYsIHZhbHVl
KToKKyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gTm9uZQorICAgICAgICBzZWxmLl9wcmVyZWxl
YXNlcyA9IHZhbHVlCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAg
ICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbnMoaXRl
bSkKKworICAgIGRlZiBjb250YWlucyhzZWxmLCBpdGVtLCBwcmVyZWxlYXNlcz1Ob25lKToKKyAg
ICAgICAgIyB0eXBlOiAoVW5wYXJzZWRWZXJzaW9uLCBPcHRpb25hbFtib29sXSkgLT4gYm9vbAor
CisgICAgICAgICMgRGV0ZXJtaW5lIGlmIHByZXJlbGVhc2VzIGFyZSB0byBiZSBhbGxvd2VkIG9y
IG5vdC4KKyAgICAgICAgaWYgcHJlcmVsZWFzZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHByZXJl
bGVhc2VzID0gc2VsZi5wcmVyZWxlYXNlcworCisgICAgICAgICMgTm9ybWFsaXplIGl0ZW0gdG8g
YSBWZXJzaW9uIG9yIExlZ2FjeVZlcnNpb24sIHRoaXMgYWxsb3dzIHVzIHRvIGhhdmUKKyAgICAg
ICAgIyBhIHNob3J0Y3V0IGZvciBgYCIyLjAiIGluIFNwZWNpZmllcigiPj0yIikKKyAgICAgICAg
bm9ybWFsaXplZF9pdGVtID0gc2VsZi5fY29lcmNlX3ZlcnNpb24oaXRlbSkKKworICAgICAgICAj
IERldGVybWluZSBpZiB3ZSBzaG91bGQgYmUgc3VwcG9ydGluZyBwcmVyZWxlYXNlcyBpbiB0aGlz
IHNwZWNpZmllcgorICAgICAgICAjIG9yIG5vdCwgaWYgd2UgZG8gbm90IHN1cHBvcnQgcHJlcmVs
ZWFzZXMgdGhhbiB3ZSBjYW4gc2hvcnQgY2lyY3VpdAorICAgICAgICAjIGxvZ2ljIGlmIHRoaXMg
dmVyc2lvbiBpcyBhIHByZXJlbGVhc2VzLgorICAgICAgICBpZiBub3JtYWxpemVkX2l0ZW0uaXNf
cHJlcmVsZWFzZSBhbmQgbm90IHByZXJlbGVhc2VzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgIyBBY3R1YWxseSBkbyB0aGUgY29tcGFyaXNvbiB0byBkZXRlcm1pbmUgaWYg
dGhpcyBpdGVtIGlzIGNvbnRhaW5lZAorICAgICAgICAjIHdpdGhpbiB0aGlzIFNwZWNpZmllciBv
ciBub3QuCisgICAgICAgIG9wZXJhdG9yX2NhbGxhYmxlID0gc2VsZi5fZ2V0X29wZXJhdG9yKHNl
bGYub3BlcmF0b3IpICAjIHR5cGU6IENhbGxhYmxlT3BlcmF0b3IKKyAgICAgICAgcmV0dXJuIG9w
ZXJhdG9yX2NhbGxhYmxlKG5vcm1hbGl6ZWRfaXRlbSwgc2VsZi52ZXJzaW9uKQorCisgICAgZGVm
IGZpbHRlcihzZWxmLCBpdGVyYWJsZSwgcHJlcmVsZWFzZXM9Tm9uZSk6CisgICAgICAgICMgdHlw
ZTogKEl0ZXJhYmxlW1VucGFyc2VkVmVyc2lvbl0sIE9wdGlvbmFsW2Jvb2xdKSAtPiBJdGVyYWJs
ZVtVbnBhcnNlZFZlcnNpb25dCisKKyAgICAgICAgeWllbGRlZCA9IEZhbHNlCisgICAgICAgIGZv
dW5kX3ByZXJlbGVhc2VzID0gW10KKworICAgICAgICBrdyA9IHsicHJlcmVsZWFzZXMiOiBwcmVy
ZWxlYXNlcyBpZiBwcmVyZWxlYXNlcyBpcyBub3QgTm9uZSBlbHNlIFRydWV9CisKKyAgICAgICAg
IyBBdHRlbXB0IHRvIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHZhbHVlcyBpbiB0aGUgaXRlcmFibGUg
YW5kIGlmIGFueSBvZgorICAgICAgICAjIHRoZW0gbWF0Y2gsIHlpZWxkIHRoZW0uCisgICAgICAg
IGZvciB2ZXJzaW9uIGluIGl0ZXJhYmxlOgorICAgICAgICAgICAgcGFyc2VkX3ZlcnNpb24gPSBz
ZWxmLl9jb2VyY2VfdmVyc2lvbih2ZXJzaW9uKQorCisgICAgICAgICAgICBpZiBzZWxmLmNvbnRh
aW5zKHBhcnNlZF92ZXJzaW9uLCAqKmt3KToKKyAgICAgICAgICAgICAgICAjIElmIG91ciB2ZXJz
aW9uIGlzIGEgcHJlcmVsZWFzZSwgYW5kIHdlIHdlcmUgbm90IHNldCB0byBhbGxvdworICAgICAg
ICAgICAgICAgICMgcHJlcmVsZWFzZXMsIHRoZW4gd2UnbGwgc3RvcmUgaXQgZm9yIGxhdGVyIGlu
Y2FzZSBub3RoaW5nCisgICAgICAgICAgICAgICAgIyBlbHNlIG1hdGNoZXMgdGhpcyBzcGVjaWZp
ZXIuCisgICAgICAgICAgICAgICAgaWYgcGFyc2VkX3ZlcnNpb24uaXNfcHJlcmVsZWFzZSBhbmQg
bm90ICgKKyAgICAgICAgICAgICAgICAgICAgcHJlcmVsZWFzZXMgb3Igc2VsZi5wcmVyZWxlYXNl
cworICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kX3ByZXJlbGVh
c2VzLmFwcGVuZCh2ZXJzaW9uKQorICAgICAgICAgICAgICAgICMgRWl0aGVyIHRoaXMgaXMgbm90
IGEgcHJlcmVsZWFzZSwgb3Igd2Ugc2hvdWxkIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICMg
YWNjZXB0aW5nIHByZXJlbGVhc2VzIGZyb20gdGhlIGJlZ2lubmluZy4KKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZGVkID0gVHJ1ZQorICAgICAgICAgICAg
ICAgICAgICB5aWVsZCB2ZXJzaW9uCisKKyAgICAgICAgIyBOb3cgdGhhdCB3ZSd2ZSBpdGVyYXRl
ZCBvdmVyIGV2ZXJ5dGhpbmcsIGRldGVybWluZSBpZiB3ZSd2ZSB5aWVsZGVkCisgICAgICAgICMg
YW55IHZhbHVlcywgYW5kIGlmIHdlIGhhdmUgbm90IGFuZCB3ZSBoYXZlIGFueSBwcmVyZWxlYXNl
cyBzdG9yZWQgdXAKKyAgICAgICAgIyB0aGVuIHdlIHdpbGwgZ28gYWhlYWQgYW5kIHlpZWxkIHRo
ZSBwcmVyZWxlYXNlcy4KKyAgICAgICAgaWYgbm90IHlpZWxkZWQgYW5kIGZvdW5kX3ByZXJlbGVh
c2VzOgorICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gZm91bmRfcHJlcmVsZWFzZXM6CisgICAg
ICAgICAgICAgICAgeWllbGQgdmVyc2lvbgorCisKK2NsYXNzIExlZ2FjeVNwZWNpZmllcihfSW5k
aXZpZHVhbFNwZWNpZmllcik6CisKKyAgICBfcmVnZXhfc3RyID0gciIiIgorICAgICAgICAoP1A8
b3BlcmF0b3I+KD09fCE9fDw9fD49fDx8PikpCisgICAgICAgIFxzKgorICAgICAgICAoP1A8dmVy
c2lvbj4KKyAgICAgICAgICAgIFteLDtccyldKiAjIFNpbmNlIHRoaXMgaXMgYSAibGVnYWN5IiBz
cGVjaWZpZXIsIGFuZCB0aGUgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICMgc3RyaW5n
IGNhbiBiZSBqdXN0IGFib3V0IGFueXRoaW5nLCB3ZSBtYXRjaCBldmVyeXRoaW5nCisgICAgICAg
ICAgICAgICAgICAgICAgIyBleGNlcHQgZm9yIHdoaXRlc3BhY2UsIGEgc2VtaS1jb2xvbiBmb3Ig
bWFya2VyIHN1cHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgIyBhIGNsb3NpbmcgcGFyZW4g
c2luY2UgdmVyc2lvbnMgY2FuIGJlIGVuY2xvc2VkIGluCisgICAgICAgICAgICAgICAgICAgICAg
IyB0aGVtLCBhbmQgYSBjb21tYSBzaW5jZSBpdCdzIGEgdmVyc2lvbiBzZXBhcmF0b3IuCisgICAg
ICAgICkKKyAgICAgICAgIiIiCisKKyAgICBfcmVnZXggPSByZS5jb21waWxlKHIiXlxzKiIgKyBf
cmVnZXhfc3RyICsgciJccyokIiwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpCisKKyAgICBf
b3BlcmF0b3JzID0geworICAgICAgICAiPT0iOiAiZXF1YWwiLAorICAgICAgICAiIT0iOiAibm90
X2VxdWFsIiwKKyAgICAgICAgIjw9IjogImxlc3NfdGhhbl9lcXVhbCIsCisgICAgICAgICI+PSI6
ICJncmVhdGVyX3RoYW5fZXF1YWwiLAorICAgICAgICAiPCI6ICJsZXNzX3RoYW4iLAorICAgICAg
ICAiPiI6ICJncmVhdGVyX3RoYW4iLAorICAgIH0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBz
cGVjPSIiLCBwcmVyZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoc3RyLCBPcHRpb25h
bFtib29sXSkgLT4gTm9uZQorICAgICAgICBzdXBlcihMZWdhY3lTcGVjaWZpZXIsIHNlbGYpLl9f
aW5pdF9fKHNwZWMsIHByZXJlbGVhc2VzKQorCisgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAg
ICAgICAgICAiQ3JlYXRpbmcgYSBMZWdhY3lWZXJzaW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5k
IHdpbGwgYmUgIgorICAgICAgICAgICAgInJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFz
ZSIsCisgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICkKKworICAgIGRl
ZiBfY29lcmNlX3ZlcnNpb24oc2VsZiwgdmVyc2lvbik6CisgICAgICAgICMgdHlwZTogKFVuaW9u
W1BhcnNlZFZlcnNpb24sIHN0cl0pIC0+IExlZ2FjeVZlcnNpb24KKyAgICAgICAgaWYgbm90IGlz
aW5zdGFuY2UodmVyc2lvbiwgTGVnYWN5VmVyc2lvbik6CisgICAgICAgICAgICB2ZXJzaW9uID0g
TGVnYWN5VmVyc2lvbihzdHIodmVyc2lvbikpCisgICAgICAgIHJldHVybiB2ZXJzaW9uCisKKyAg
ICBkZWYgX2NvbXBhcmVfZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWMpOgorICAgICAgICAj
IHR5cGU6IChMZWdhY3lWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHByb3Nw
ZWN0aXZlID09IHNlbGYuX2NvZXJjZV92ZXJzaW9uKHNwZWMpCisKKyAgICBkZWYgX2NvbXBhcmVf
bm90X2VxdWFsKHNlbGYsIHByb3NwZWN0aXZlLCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoTGVn
YWN5VmVyc2lvbiwgc3RyKSAtPiBib29sCisgICAgICAgIHJldHVybiBwcm9zcGVjdGl2ZSAhPSBz
ZWxmLl9jb2VyY2VfdmVyc2lvbihzcGVjKQorCisgICAgZGVmIF9jb21wYXJlX2xlc3NfdGhhbl9l
cXVhbChzZWxmLCBwcm9zcGVjdGl2ZSwgc3BlYyk6CisgICAgICAgICMgdHlwZTogKExlZ2FjeVZl
cnNpb24sIHN0cikgLT4gYm9vbAorICAgICAgICByZXR1cm4gcHJvc3BlY3RpdmUgPD0gc2VsZi5f
Y29lcmNlX3ZlcnNpb24oc3BlYykKKworICAgIGRlZiBfY29tcGFyZV9ncmVhdGVyX3RoYW5fZXF1
YWwoc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWMpOgorICAgICAgICAjIHR5cGU6IChMZWdhY3lWZXJz
aW9uLCBzdHIpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlID49IHNlbGYuX2Nv
ZXJjZV92ZXJzaW9uKHNwZWMpCisKKyAgICBkZWYgX2NvbXBhcmVfbGVzc190aGFuKHNlbGYsIHBy
b3NwZWN0aXZlLCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoTGVnYWN5VmVyc2lvbiwgc3RyKSAt
PiBib29sCisgICAgICAgIHJldHVybiBwcm9zcGVjdGl2ZSA8IHNlbGYuX2NvZXJjZV92ZXJzaW9u
KHNwZWMpCisKKyAgICBkZWYgX2NvbXBhcmVfZ3JlYXRlcl90aGFuKHNlbGYsIHByb3NwZWN0aXZl
LCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoTGVnYWN5VmVyc2lvbiwgc3RyKSAtPiBib29sCisg
ICAgICAgIHJldHVybiBwcm9zcGVjdGl2ZSA+IHNlbGYuX2NvZXJjZV92ZXJzaW9uKHNwZWMpCisK
KworZGVmIF9yZXF1aXJlX3ZlcnNpb25fY29tcGFyZSgKKyAgICBmbiwgICMgdHlwZTogKENhbGxh
YmxlW1tTcGVjaWZpZXIsIFBhcnNlZFZlcnNpb24sIHN0cl0sIGJvb2xdKQorKToKKyAgICAjIHR5
cGU6ICguLi4pIC0+IENhbGxhYmxlW1tTcGVjaWZpZXIsIFBhcnNlZFZlcnNpb24sIHN0cl0sIGJv
b2xdCisgICAgQGZ1bmN0b29scy53cmFwcyhmbikKKyAgICBkZWYgd3JhcHBlZChzZWxmLCBwcm9z
cGVjdGl2ZSwgc3BlYyk6CisgICAgICAgICMgdHlwZTogKFNwZWNpZmllciwgUGFyc2VkVmVyc2lv
biwgc3RyKSAtPiBib29sCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHByb3NwZWN0aXZlLCBW
ZXJzaW9uKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gZm4oc2Vs
ZiwgcHJvc3BlY3RpdmUsIHNwZWMpCisKKyAgICByZXR1cm4gd3JhcHBlZAorCisKK2NsYXNzIFNw
ZWNpZmllcihfSW5kaXZpZHVhbFNwZWNpZmllcik6CisKKyAgICBfcmVnZXhfc3RyID0gciIiIgor
ICAgICAgICAoP1A8b3BlcmF0b3I+KH49fD09fCE9fDw9fD49fDx8Pnw9PT0pKQorICAgICAgICAo
P1A8dmVyc2lvbj4KKyAgICAgICAgICAgICg/OgorICAgICAgICAgICAgICAgICMgVGhlIGlkZW50
aXR5IG9wZXJhdG9ycyBhbGxvdyBmb3IgYW4gZXNjYXBlIGhhdGNoIHRoYXQgd2lsbAorICAgICAg
ICAgICAgICAgICMgZG8gYW4gZXhhY3Qgc3RyaW5nIG1hdGNoIG9mIHRoZSB2ZXJzaW9uIHlvdSB3
aXNoIHRvIGluc3RhbGwuCisgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgbm90IGJlIHBhcnNl
ZCBieSBQRVAgNDQwIGFuZCB3ZSBjYW5ub3QgZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgIyBh
bnkgc2VtYW50aWMgbWVhbmluZyBmcm9tIGl0LiBUaGlzIG9wZXJhdG9yIGlzIGRpc2NvdXJhZ2Vk
CisgICAgICAgICAgICAgICAgIyBidXQgaW5jbHVkZWQgZW50aXJlbHkgYXMgYW4gZXNjYXBlIGhh
dGNoLgorICAgICAgICAgICAgICAgICg/PD09PT0pICAjIE9ubHkgbWF0Y2ggZm9yIHRoZSBpZGVu
dGl0eSBvcGVyYXRvcgorICAgICAgICAgICAgICAgIFxzKgorICAgICAgICAgICAgICAgIFteXHNd
KiAgICAjIFdlIGp1c3QgbWF0Y2ggZXZlcnl0aGluZywgZXhjZXB0IGZvciB3aGl0ZXNwYWNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgc2luY2Ugd2UgYXJlIG9ubHkgdGVzdGluZyBmb3Ig
c3RyaWN0IGlkZW50aXR5LgorICAgICAgICAgICAgKQorICAgICAgICAgICAgfAorICAgICAgICAg
ICAgKD86CisgICAgICAgICAgICAgICAgIyBUaGUgKG5vbillcXVhbGl0eSBvcGVyYXRvcnMgYWxs
b3cgZm9yIHdpbGQgY2FyZCBhbmQgbG9jYWwKKyAgICAgICAgICAgICAgICAjIHZlcnNpb25zIHRv
IGJlIHNwZWNpZmllZCBzbyB3ZSBoYXZlIHRvIGRlZmluZSB0aGVzZSB0d28KKyAgICAgICAgICAg
ICAgICAjIG9wZXJhdG9ycyBzZXBhcmF0ZWx5IHRvIGVuYWJsZSB0aGF0LgorICAgICAgICAgICAg
ICAgICg/PD09PXwhPSkgICAgICAgICAgICAjIE9ubHkgbWF0Y2ggZm9yIGVxdWFscyBhbmQgbm90
IGVxdWFscworCisgICAgICAgICAgICAgICAgXHMqCisgICAgICAgICAgICAgICAgdj8KKyAgICAg
ICAgICAgICAgICAoPzpbMC05XSshKT8gICAgICAgICAgIyBlcG9jaAorICAgICAgICAgICAgICAg
IFswLTldKyg/OlwuWzAtOV0rKSogICAjIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAoPzogICAg
ICAgICAgICAgICAgICAgIyBwcmUgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICBbLV9cLl0/
CisgICAgICAgICAgICAgICAgICAgIChhfGJ8Y3xyY3xhbHBoYXxiZXRhfHByZXxwcmV2aWV3KQor
ICAgICAgICAgICAgICAgICAgICBbLV9cLl0/CisgICAgICAgICAgICAgICAgICAgIFswLTldKgor
ICAgICAgICAgICAgICAgICk/CisgICAgICAgICAgICAgICAgKD86ICAgICAgICAgICAgICAgICAg
ICMgcG9zdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICg/Oi1bMC05XSspfCg/OlstX1wu
XT8ocG9zdHxyZXZ8cilbLV9cLl0/WzAtOV0qKQorICAgICAgICAgICAgICAgICk/CisKKyAgICAg
ICAgICAgICAgICAjIFlvdSBjYW5ub3QgdXNlIGEgd2lsZCBjYXJkIGFuZCBhIGRldiBvciBsb2Nh
bCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgIyB0b2dldGhlciBzbyBncm91cCB0aGVtIHdpdGgg
YSB8IGFuZCBtYWtlIHRoZW0gb3B0aW9uYWwuCisgICAgICAgICAgICAgICAgKD86CisgICAgICAg
ICAgICAgICAgICAgICg/OlstX1wuXT9kZXZbLV9cLl0/WzAtOV0qKT8gICAgICAgICAjIGRldiBy
ZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICg/OlwrW2EtejAtOV0rKD86Wy1fXC5dW2EtejAt
OV0rKSopPyAjIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAg
ICAgXC5cKiAgIyBXaWxkIGNhcmQgc3ludGF4IG9mIC4qCisgICAgICAgICAgICAgICAgKT8KKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHwKKyAgICAgICAgICAgICg/OgorICAgICAgICAgICAg
ICAgICMgVGhlIGNvbXBhdGlibGUgb3BlcmF0b3IgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIGRpZ2l0
cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAjIHJlbGVhc2Ugc2VnbWVudC4KKyAgICAgICAgICAg
ICAgICAoPzw9fj0pICAgICAgICAgICAgICAgIyBPbmx5IG1hdGNoIGZvciB0aGUgY29tcGF0aWJs
ZSBvcGVyYXRvcgorCisgICAgICAgICAgICAgICAgXHMqCisgICAgICAgICAgICAgICAgdj8KKyAg
ICAgICAgICAgICAgICAoPzpbMC05XSshKT8gICAgICAgICAgIyBlcG9jaAorICAgICAgICAgICAg
ICAgIFswLTldKyg/OlwuWzAtOV0rKSsgICAjIHJlbGVhc2UgIChXZSBoYXZlIGEgKyBpbnN0ZWFk
IG9mIGEgKikKKyAgICAgICAgICAgICAgICAoPzogICAgICAgICAgICAgICAgICAgIyBwcmUgcmVs
ZWFzZQorICAgICAgICAgICAgICAgICAgICBbLV9cLl0/CisgICAgICAgICAgICAgICAgICAgIChh
fGJ8Y3xyY3xhbHBoYXxiZXRhfHByZXxwcmV2aWV3KQorICAgICAgICAgICAgICAgICAgICBbLV9c
Ll0/CisgICAgICAgICAgICAgICAgICAgIFswLTldKgorICAgICAgICAgICAgICAgICk/CisgICAg
ICAgICAgICAgICAgKD86ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvc3Qg
cmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAoPzotWzAtOV0rKXwoPzpbLV9cLl0/KHBvc3R8
cmV2fHIpWy1fXC5dP1swLTldKikKKyAgICAgICAgICAgICAgICApPworICAgICAgICAgICAgICAg
ICg/OlstX1wuXT9kZXZbLV9cLl0/WzAtOV0qKT8gICAgICAgICAgIyBkZXYgcmVsZWFzZQorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgfAorICAgICAgICAgICAgKD86CisgICAgICAgICAgICAg
ICAgIyBBbGwgb3RoZXIgb3BlcmF0b3JzIG9ubHkgYWxsb3cgYSBzdWIgc2V0IG9mIHdoYXQgdGhl
CisgICAgICAgICAgICAgICAgIyAobm9uKWVxdWFsaXR5IG9wZXJhdG9ycyBkby4gU3BlY2lmaWNh
bGx5IHRoZXkgZG8gbm90IGFsbG93CisgICAgICAgICAgICAgICAgIyBsb2NhbCB2ZXJzaW9ucyB0
byBiZSBzcGVjaWZpZWQgbm9yIGRvIHRoZXkgYWxsb3cgdGhlIHByZWZpeAorICAgICAgICAgICAg
ICAgICMgbWF0Y2hpbmcgd2lsZCBjYXJkcy4KKyAgICAgICAgICAgICAgICAoPzwhPT18IT18fj0p
ICAgICAgICAgIyBXZSBoYXZlIHNwZWNpYWwgY2FzZXMgZm9yIHRoZXNlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgb3BlcmF0b3JzIHNvIHdlIHdhbnQgdG8gbWFrZSBz
dXJlIHRoZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCBt
YXRjaCBoZXJlLgorCisgICAgICAgICAgICAgICAgXHMqCisgICAgICAgICAgICAgICAgdj8KKyAg
ICAgICAgICAgICAgICAoPzpbMC05XSshKT8gICAgICAgICAgIyBlcG9jaAorICAgICAgICAgICAg
ICAgIFswLTldKyg/OlwuWzAtOV0rKSogICAjIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAoPzog
ICAgICAgICAgICAgICAgICAgIyBwcmUgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICBbLV9c
Ll0/CisgICAgICAgICAgICAgICAgICAgIChhfGJ8Y3xyY3xhbHBoYXxiZXRhfHByZXxwcmV2aWV3
KQorICAgICAgICAgICAgICAgICAgICBbLV9cLl0/CisgICAgICAgICAgICAgICAgICAgIFswLTld
KgorICAgICAgICAgICAgICAgICk/CisgICAgICAgICAgICAgICAgKD86ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIHBvc3QgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAo
PzotWzAtOV0rKXwoPzpbLV9cLl0/KHBvc3R8cmV2fHIpWy1fXC5dP1swLTldKikKKyAgICAgICAg
ICAgICAgICApPworICAgICAgICAgICAgICAgICg/OlstX1wuXT9kZXZbLV9cLl0/WzAtOV0qKT8g
ICAgICAgICAgIyBkZXYgcmVsZWFzZQorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAg
ICIiIgorCisgICAgX3JlZ2V4ID0gcmUuY29tcGlsZShyIl5ccyoiICsgX3JlZ2V4X3N0ciArIHIi
XHMqJCIsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKQorCisgICAgX29wZXJhdG9ycyA9IHsK
KyAgICAgICAgIn49IjogImNvbXBhdGlibGUiLAorICAgICAgICAiPT0iOiAiZXF1YWwiLAorICAg
ICAgICAiIT0iOiAibm90X2VxdWFsIiwKKyAgICAgICAgIjw9IjogImxlc3NfdGhhbl9lcXVhbCIs
CisgICAgICAgICI+PSI6ICJncmVhdGVyX3RoYW5fZXF1YWwiLAorICAgICAgICAiPCI6ICJsZXNz
X3RoYW4iLAorICAgICAgICAiPiI6ICJncmVhdGVyX3RoYW4iLAorICAgICAgICAiPT09IjogImFy
Yml0cmFyeSIsCisgICAgfQorCisgICAgQF9yZXF1aXJlX3ZlcnNpb25fY29tcGFyZQorICAgIGRl
ZiBfY29tcGFyZV9jb21wYXRpYmxlKHNlbGYsIHByb3NwZWN0aXZlLCBzcGVjKToKKyAgICAgICAg
IyB0eXBlOiAoUGFyc2VkVmVyc2lvbiwgc3RyKSAtPiBib29sCisKKyAgICAgICAgIyBDb21wYXRp
YmxlIHJlbGVhc2VzIGhhdmUgYW4gZXF1aXZhbGVudCBjb21iaW5hdGlvbiBvZiA+PSBhbmQgPT0u
IFRoYXQKKyAgICAgICAgIyBpcyB0aGF0IH49Mi4yIGlzIGVxdWl2YWxlbnQgdG8gPj0yLjIsPT0y
LiouIFRoaXMgYWxsb3dzIHVzIHRvCisgICAgICAgICMgaW1wbGVtZW50IHRoaXMgaW4gdGVybXMg
b2YgdGhlIG90aGVyIHNwZWNpZmllcnMgaW5zdGVhZCBvZgorICAgICAgICAjIGltcGxlbWVudGlu
ZyBpdCBvdXJzZWx2ZXMuIFRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgY29uc3RydWN0
CisgICAgICAgICMgdGhlIG90aGVyIHNwZWNpZmllcnMuCisKKyAgICAgICAgIyBXZSB3YW50IGV2
ZXJ5dGhpbmcgYnV0IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIHZlcnNpb24sIGJ1dCB3ZSB3YW50IHRv
CisgICAgICAgICMgaWdub3JlIHBvc3QgYW5kIGRldiByZWxlYXNlcyBhbmQgd2Ugd2FudCB0byB0
cmVhdCB0aGUgcHJlLXJlbGVhc2UgYXMKKyAgICAgICAgIyBpdCdzIG93biBzZXBhcmF0ZSBzZWdt
ZW50LgorICAgICAgICBwcmVmaXggPSAiLiIuam9pbigKKyAgICAgICAgICAgIGxpc3QoCisgICAg
ICAgICAgICAgICAgaXRlcnRvb2xzLnRha2V3aGlsZSgKKyAgICAgICAgICAgICAgICAgICAgbGFt
YmRhIHg6IChub3QgeC5zdGFydHN3aXRoKCJwb3N0IikgYW5kIG5vdCB4LnN0YXJ0c3dpdGgoImRl
diIpKSwKKyAgICAgICAgICAgICAgICAgICAgX3ZlcnNpb25fc3BsaXQoc3BlYyksCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKVs6LTFdCisgICAgICAgICkKKworICAgICAgICAjIEFk
ZCB0aGUgcHJlZml4IG5vdGF0aW9uIHRvIHRoZSBlbmQgb2Ygb3VyIHN0cmluZworICAgICAgICBw
cmVmaXggKz0gIi4qIgorCisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfb3BlcmF0b3IoIj49Iiko
cHJvc3BlY3RpdmUsIHNwZWMpIGFuZCBzZWxmLl9nZXRfb3BlcmF0b3IoIj09IikoCisgICAgICAg
ICAgICBwcm9zcGVjdGl2ZSwgcHJlZml4CisgICAgICAgICkKKworICAgIEBfcmVxdWlyZV92ZXJz
aW9uX2NvbXBhcmUKKyAgICBkZWYgX2NvbXBhcmVfZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmUsIHNw
ZWMpOgorICAgICAgICAjIHR5cGU6IChQYXJzZWRWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKworICAg
ICAgICAjIFdlIG5lZWQgc3BlY2lhbCBsb2dpYyB0byBoYW5kbGUgcHJlZml4IG1hdGNoaW5nCisg
ICAgICAgIGlmIHNwZWMuZW5kc3dpdGgoIi4qIik6CisgICAgICAgICAgICAjIEluIHRoZSBjYXNl
IG9mIHByZWZpeCBtYXRjaGluZyB3ZSB3YW50IHRvIGlnbm9yZSBsb2NhbCBzZWdtZW50LgorICAg
ICAgICAgICAgcHJvc3BlY3RpdmUgPSBWZXJzaW9uKHByb3NwZWN0aXZlLnB1YmxpYykKKyAgICAg
ICAgICAgICMgU3BsaXQgdGhlIHNwZWMgb3V0IGJ5IGRvdHMsIGFuZCBwcmV0ZW5kIHRoYXQgdGhl
cmUgaXMgYW4gaW1wbGljaXQKKyAgICAgICAgICAgICMgZG90IGluIGJldHdlZW4gYSByZWxlYXNl
IHNlZ21lbnQgYW5kIGEgcHJlLXJlbGVhc2Ugc2VnbWVudC4KKyAgICAgICAgICAgIHNwbGl0X3Nw
ZWMgPSBfdmVyc2lvbl9zcGxpdChzcGVjWzotMl0pICAjIFJlbW92ZSB0aGUgdHJhaWxpbmcgLioK
KworICAgICAgICAgICAgIyBTcGxpdCB0aGUgcHJvc3BlY3RpdmUgdmVyc2lvbiBvdXQgYnkgZG90
cywgYW5kIHByZXRlbmQgdGhhdCB0aGVyZQorICAgICAgICAgICAgIyBpcyBhbiBpbXBsaWNpdCBk
b3QgaW4gYmV0d2VlbiBhIHJlbGVhc2Ugc2VnbWVudCBhbmQgYSBwcmUtcmVsZWFzZQorICAgICAg
ICAgICAgIyBzZWdtZW50LgorICAgICAgICAgICAgc3BsaXRfcHJvc3BlY3RpdmUgPSBfdmVyc2lv
bl9zcGxpdChzdHIocHJvc3BlY3RpdmUpKQorCisgICAgICAgICAgICAjIFNob3J0ZW4gdGhlIHBy
b3NwZWN0aXZlIHZlcnNpb24gdG8gYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzcGVjCisgICAg
ICAgICAgICAjIHNvIHRoYXQgd2UgY2FuIGRldGVybWluZSBpZiB0aGUgc3BlY2lmaWVyIGlzIGEg
cHJlZml4IG9mIHRoZQorICAgICAgICAgICAgIyBwcm9zcGVjdGl2ZSB2ZXJzaW9uIG9yIG5vdC4K
KyAgICAgICAgICAgIHNob3J0ZW5lZF9wcm9zcGVjdGl2ZSA9IHNwbGl0X3Byb3NwZWN0aXZlWzog
bGVuKHNwbGl0X3NwZWMpXQorCisgICAgICAgICAgICAjIFBhZCBvdXQgb3VyIHR3byBzaWRlcyB3
aXRoIHplcm9zIHNvIHRoYXQgdGhleSBib3RoIGVxdWFsIHRoZSBzYW1lCisgICAgICAgICAgICAj
IGxlbmd0aC4KKyAgICAgICAgICAgIHBhZGRlZF9zcGVjLCBwYWRkZWRfcHJvc3BlY3RpdmUgPSBf
cGFkX3ZlcnNpb24oCisgICAgICAgICAgICAgICAgc3BsaXRfc3BlYywgc2hvcnRlbmVkX3Byb3Nw
ZWN0aXZlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBwYWRkZWRfcHJvc3Bl
Y3RpdmUgPT0gcGFkZGVkX3NwZWMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQ29udmVy
dCBvdXIgc3BlYyBzdHJpbmcgaW50byBhIFZlcnNpb24KKyAgICAgICAgICAgIHNwZWNfdmVyc2lv
biA9IFZlcnNpb24oc3BlYykKKworICAgICAgICAgICAgIyBJZiB0aGUgc3BlY2lmaWVyIGRvZXMg
bm90IGhhdmUgYSBsb2NhbCBzZWdtZW50LCB0aGVuIHdlIHdhbnQgdG8KKyAgICAgICAgICAgICMg
YWN0IGFzIGlmIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIGFsc28gZG9lcyBub3QgaGF2ZSBhIGxv
Y2FsCisgICAgICAgICAgICAjIHNlZ21lbnQuCisgICAgICAgICAgICBpZiBub3Qgc3BlY192ZXJz
aW9uLmxvY2FsOgorICAgICAgICAgICAgICAgIHByb3NwZWN0aXZlID0gVmVyc2lvbihwcm9zcGVj
dGl2ZS5wdWJsaWMpCisKKyAgICAgICAgICAgIHJldHVybiBwcm9zcGVjdGl2ZSA9PSBzcGVjX3Zl
cnNpb24KKworICAgIEBfcmVxdWlyZV92ZXJzaW9uX2NvbXBhcmUKKyAgICBkZWYgX2NvbXBhcmVf
bm90X2VxdWFsKHNlbGYsIHByb3NwZWN0aXZlLCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoUGFy
c2VkVmVyc2lvbiwgc3RyKSAtPiBib29sCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fY29tcGFy
ZV9lcXVhbChwcm9zcGVjdGl2ZSwgc3BlYykKKworICAgIEBfcmVxdWlyZV92ZXJzaW9uX2NvbXBh
cmUKKyAgICBkZWYgX2NvbXBhcmVfbGVzc190aGFuX2VxdWFsKHNlbGYsIHByb3NwZWN0aXZlLCBz
cGVjKToKKyAgICAgICAgIyB0eXBlOiAoUGFyc2VkVmVyc2lvbiwgc3RyKSAtPiBib29sCisKKyAg
ICAgICAgIyBOQjogTG9jYWwgdmVyc2lvbiBpZGVudGlmaWVycyBhcmUgTk9UIHBlcm1pdHRlZCBp
biB0aGUgdmVyc2lvbgorICAgICAgICAjIHNwZWNpZmllciwgc28gbG9jYWwgdmVyc2lvbiBsYWJl
bHMgY2FuIGJlIHVuaXZlcnNhbGx5IHJlbW92ZWQgZnJvbQorICAgICAgICAjIHRoZSBwcm9zcGVj
dGl2ZSB2ZXJzaW9uLgorICAgICAgICByZXR1cm4gVmVyc2lvbihwcm9zcGVjdGl2ZS5wdWJsaWMp
IDw9IFZlcnNpb24oc3BlYykKKworICAgIEBfcmVxdWlyZV92ZXJzaW9uX2NvbXBhcmUKKyAgICBk
ZWYgX2NvbXBhcmVfZ3JlYXRlcl90aGFuX2VxdWFsKHNlbGYsIHByb3NwZWN0aXZlLCBzcGVjKToK
KyAgICAgICAgIyB0eXBlOiAoUGFyc2VkVmVyc2lvbiwgc3RyKSAtPiBib29sCisKKyAgICAgICAg
IyBOQjogTG9jYWwgdmVyc2lvbiBpZGVudGlmaWVycyBhcmUgTk9UIHBlcm1pdHRlZCBpbiB0aGUg
dmVyc2lvbgorICAgICAgICAjIHNwZWNpZmllciwgc28gbG9jYWwgdmVyc2lvbiBsYWJlbHMgY2Fu
IGJlIHVuaXZlcnNhbGx5IHJlbW92ZWQgZnJvbQorICAgICAgICAjIHRoZSBwcm9zcGVjdGl2ZSB2
ZXJzaW9uLgorICAgICAgICByZXR1cm4gVmVyc2lvbihwcm9zcGVjdGl2ZS5wdWJsaWMpID49IFZl
cnNpb24oc3BlYykKKworICAgIEBfcmVxdWlyZV92ZXJzaW9uX2NvbXBhcmUKKyAgICBkZWYgX2Nv
bXBhcmVfbGVzc190aGFuKHNlbGYsIHByb3NwZWN0aXZlLCBzcGVjX3N0cik6CisgICAgICAgICMg
dHlwZTogKFBhcnNlZFZlcnNpb24sIHN0cikgLT4gYm9vbAorCisgICAgICAgICMgQ29udmVydCBv
dXIgc3BlYyB0byBhIFZlcnNpb24gaW5zdGFuY2UsIHNpbmNlIHdlJ2xsIHdhbnQgdG8gd29yayB3
aXRoCisgICAgICAgICMgaXQgYXMgYSB2ZXJzaW9uLgorICAgICAgICBzcGVjID0gVmVyc2lvbihz
cGVjX3N0cikKKworICAgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvc3BlY3RpdmUgdmVy
c2lvbiBpcyBsZXNzIHRoYW4gdGhlIHNwZWMKKyAgICAgICAgIyB2ZXJzaW9uLiBJZiBpdCdzIG5v
dCB3ZSBjYW4gc2hvcnQgY2lyY3VpdCBhbmQganVzdCByZXR1cm4gRmFsc2Ugbm93CisgICAgICAg
ICMgaW5zdGVhZCBvZiBkb2luZyBleHRyYSB1bm5lZWRlZCB3b3JrLgorICAgICAgICBpZiBub3Qg
cHJvc3BlY3RpdmUgPCBzcGVjOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAg
IyBUaGlzIHNwZWNpYWwgY2FzZSBpcyBoZXJlIHNvIHRoYXQsIHVubGVzcyB0aGUgc3BlY2lmaWVy
IGl0c2VsZgorICAgICAgICAjIGluY2x1ZGVzIGlzIGEgcHJlLXJlbGVhc2UgdmVyc2lvbiwgdGhh
dCB3ZSBkbyBub3QgYWNjZXB0IHByZS1yZWxlYXNlCisgICAgICAgICMgdmVyc2lvbnMgZm9yIHRo
ZSB2ZXJzaW9uIG1lbnRpb25lZCBpbiB0aGUgc3BlY2lmaWVyIChlLmcuIDwzLjEgc2hvdWxkCisg
ICAgICAgICMgbm90IG1hdGNoIDMuMS5kZXYwLCBidXQgc2hvdWxkIG1hdGNoIDMuMC5kZXYwKS4K
KyAgICAgICAgaWYgbm90IHNwZWMuaXNfcHJlcmVsZWFzZSBhbmQgcHJvc3BlY3RpdmUuaXNfcHJl
cmVsZWFzZToKKyAgICAgICAgICAgIGlmIFZlcnNpb24ocHJvc3BlY3RpdmUuYmFzZV92ZXJzaW9u
KSA9PSBWZXJzaW9uKHNwZWMuYmFzZV92ZXJzaW9uKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgICAgICAjIElmIHdlJ3ZlIGdvdHRlbiB0byBoZXJlLCBpdCBtZWFucyB0aGF0
IHByb3NwZWN0aXZlIHZlcnNpb24gaXMgYm90aAorICAgICAgICAjIGxlc3MgdGhhbiB0aGUgc3Bl
YyB2ZXJzaW9uICphbmQqIGl0J3Mgbm90IGEgcHJlLXJlbGVhc2Ugb2YgdGhlIHNhbWUKKyAgICAg
ICAgIyB2ZXJzaW9uIGluIHRoZSBzcGVjLgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgQF9y
ZXF1aXJlX3ZlcnNpb25fY29tcGFyZQorICAgIGRlZiBfY29tcGFyZV9ncmVhdGVyX3RoYW4oc2Vs
ZiwgcHJvc3BlY3RpdmUsIHNwZWNfc3RyKToKKyAgICAgICAgIyB0eXBlOiAoUGFyc2VkVmVyc2lv
biwgc3RyKSAtPiBib29sCisKKyAgICAgICAgIyBDb252ZXJ0IG91ciBzcGVjIHRvIGEgVmVyc2lv
biBpbnN0YW5jZSwgc2luY2Ugd2UnbGwgd2FudCB0byB3b3JrIHdpdGgKKyAgICAgICAgIyBpdCBh
cyBhIHZlcnNpb24uCisgICAgICAgIHNwZWMgPSBWZXJzaW9uKHNwZWNfc3RyKQorCisgICAgICAg
ICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIGlzIGdyZWF0ZXIgdGhh
biB0aGUgc3BlYworICAgICAgICAjIHZlcnNpb24uIElmIGl0J3Mgbm90IHdlIGNhbiBzaG9ydCBj
aXJjdWl0IGFuZCBqdXN0IHJldHVybiBGYWxzZSBub3cKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGRv
aW5nIGV4dHJhIHVubmVlZGVkIHdvcmsuCisgICAgICAgIGlmIG5vdCBwcm9zcGVjdGl2ZSA+IHNw
ZWM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjIFRoaXMgc3BlY2lhbCBj
YXNlIGlzIGhlcmUgc28gdGhhdCwgdW5sZXNzIHRoZSBzcGVjaWZpZXIgaXRzZWxmCisgICAgICAg
ICMgaW5jbHVkZXMgaXMgYSBwb3N0LXJlbGVhc2UgdmVyc2lvbiwgdGhhdCB3ZSBkbyBub3QgYWNj
ZXB0CisgICAgICAgICMgcG9zdC1yZWxlYXNlIHZlcnNpb25zIGZvciB0aGUgdmVyc2lvbiBtZW50
aW9uZWQgaW4gdGhlIHNwZWNpZmllcgorICAgICAgICAjIChlLmcuID4zLjEgc2hvdWxkIG5vdCBt
YXRjaCAzLjAucG9zdDAsIGJ1dCBzaG91bGQgbWF0Y2ggMy4yLnBvc3QwKS4KKyAgICAgICAgaWYg
bm90IHNwZWMuaXNfcG9zdHJlbGVhc2UgYW5kIHByb3NwZWN0aXZlLmlzX3Bvc3RyZWxlYXNlOgor
ICAgICAgICAgICAgaWYgVmVyc2lvbihwcm9zcGVjdGl2ZS5iYXNlX3ZlcnNpb24pID09IFZlcnNp
b24oc3BlYy5iYXNlX3ZlcnNpb24pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgICAgICMgRW5zdXJlIHRoYXQgd2UgZG8gbm90IGFsbG93IGEgbG9jYWwgdmVyc2lvbiBvZiB0
aGUgdmVyc2lvbiBtZW50aW9uZWQKKyAgICAgICAgIyBpbiB0aGUgc3BlY2lmaWVyLCB3aGljaCBp
cyB0ZWNobmljYWxseSBncmVhdGVyIHRoYW4sIHRvIG1hdGNoLgorICAgICAgICBpZiBwcm9zcGVj
dGl2ZS5sb2NhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIFZlcnNpb24ocHJvc3BlY3Rp
dmUuYmFzZV92ZXJzaW9uKSA9PSBWZXJzaW9uKHNwZWMuYmFzZV92ZXJzaW9uKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjIElmIHdlJ3ZlIGdvdHRlbiB0byBoZXJl
LCBpdCBtZWFucyB0aGF0IHByb3NwZWN0aXZlIHZlcnNpb24gaXMgYm90aAorICAgICAgICAjIGdy
ZWF0ZXIgdGhhbiB0aGUgc3BlYyB2ZXJzaW9uICphbmQqIGl0J3Mgbm90IGEgcHJlLXJlbGVhc2Ug
b2YgdGhlCisgICAgICAgICMgc2FtZSB2ZXJzaW9uIGluIHRoZSBzcGVjLgorICAgICAgICByZXR1
cm4gVHJ1ZQorCisgICAgZGVmIF9jb21wYXJlX2FyYml0cmFyeShzZWxmLCBwcm9zcGVjdGl2ZSwg
c3BlYyk6CisgICAgICAgICMgdHlwZTogKFZlcnNpb24sIHN0cikgLT4gYm9vbAorICAgICAgICBy
ZXR1cm4gc3RyKHByb3NwZWN0aXZlKS5sb3dlcigpID09IHN0cihzcGVjKS5sb3dlcigpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gYm9vbAorCisgICAgICAgICMgSWYgdGhlcmUgaXMgYW4gZXhwbGljaXQgcHJlcmVsZWFz
ZXMgc2V0IGZvciB0aGlzLCB0aGVuIHdlJ2xsIGp1c3QKKyAgICAgICAgIyBibGluZGx5IHVzZSB0
aGF0LgorICAgICAgICBpZiBzZWxmLl9wcmVyZWxlYXNlcyBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9wcmVyZWxlYXNlcworCisgICAgICAgICMgTG9vayBhdCBhbGwgb2Yg
b3VyIHNwZWNpZmllcnMgYW5kIGRldGVybWluZSBpZiB0aGV5IGFyZSBpbmNsdXNpdmUKKyAgICAg
ICAgIyBvcGVyYXRvcnMsIGFuZCBpZiB0aGV5IGFyZSBpZiB0aGV5IGFyZSBpbmNsdWRpbmcgYW4g
ZXhwbGljaXQKKyAgICAgICAgIyBwcmVyZWxlYXNlLgorICAgICAgICBvcGVyYXRvciwgdmVyc2lv
biA9IHNlbGYuX3NwZWMKKyAgICAgICAgaWYgb3BlcmF0b3IgaW4gWyI9PSIsICI+PSIsICI8PSIs
ICJ+PSIsICI9PT0iXToKKyAgICAgICAgICAgICMgVGhlID09IHNwZWNpZmllciBjYW4gaW5jbHVk
ZSBhIHRyYWlsaW5nIC4qLCBpZiBpdCBkb2VzIHdlCisgICAgICAgICAgICAjIHdhbnQgdG8gcmVt
b3ZlIGJlZm9yZSBwYXJzaW5nLgorICAgICAgICAgICAgaWYgb3BlcmF0b3IgPT0gIj09IiBhbmQg
dmVyc2lvbi5lbmRzd2l0aCgiLioiKToKKyAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lv
bls6LTJdCisKKyAgICAgICAgICAgICMgUGFyc2UgdGhlIHZlcnNpb24sIGFuZCBpZiBpdCBpcyBh
IHByZS1yZWxlYXNlIHRoYW4gdGhpcworICAgICAgICAgICAgIyBzcGVjaWZpZXIgYWxsb3dzIHBy
ZS1yZWxlYXNlcy4KKyAgICAgICAgICAgIGlmIHBhcnNlKHZlcnNpb24pLmlzX3ByZXJlbGVhc2U6
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIEBwcmVyZWxlYXNlcy5zZXR0ZXIKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZiwgdmFsdWUp
OgorICAgICAgICAjIHR5cGU6IChib29sKSAtPiBOb25lCisgICAgICAgIHNlbGYuX3ByZXJlbGVh
c2VzID0gdmFsdWUKKworCitfcHJlZml4X3JlZ2V4ID0gcmUuY29tcGlsZShyIl4oWzAtOV0rKSgo
PzphfGJ8Y3xyYylbMC05XSspJCIpCisKKworZGVmIF92ZXJzaW9uX3NwbGl0KHZlcnNpb24pOgor
ICAgICMgdHlwZTogKHN0cikgLT4gTGlzdFtzdHJdCisgICAgcmVzdWx0ID0gW10gICMgdHlwZTog
TGlzdFtzdHJdCisgICAgZm9yIGl0ZW0gaW4gdmVyc2lvbi5zcGxpdCgiLiIpOgorICAgICAgICBt
YXRjaCA9IF9wcmVmaXhfcmVnZXguc2VhcmNoKGl0ZW0pCisgICAgICAgIGlmIG1hdGNoOgorICAg
ICAgICAgICAgcmVzdWx0LmV4dGVuZChtYXRjaC5ncm91cHMoKSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbSkKKyAgICByZXR1cm4gcmVzdWx0CisKKworZGVm
IF9wYWRfdmVyc2lvbihsZWZ0LCByaWdodCk6CisgICAgIyB0eXBlOiAoTGlzdFtzdHJdLCBMaXN0
W3N0cl0pIC0+IFR1cGxlW0xpc3Rbc3RyXSwgTGlzdFtzdHJdXQorICAgIGxlZnRfc3BsaXQsIHJp
Z2h0X3NwbGl0ID0gW10sIFtdCisKKyAgICAjIEdldCB0aGUgcmVsZWFzZSBzZWdtZW50IG9mIG91
ciB2ZXJzaW9ucworICAgIGxlZnRfc3BsaXQuYXBwZW5kKGxpc3QoaXRlcnRvb2xzLnRha2V3aGls
ZShsYW1iZGEgeDogeC5pc2RpZ2l0KCksIGxlZnQpKSkKKyAgICByaWdodF9zcGxpdC5hcHBlbmQo
bGlzdChpdGVydG9vbHMudGFrZXdoaWxlKGxhbWJkYSB4OiB4LmlzZGlnaXQoKSwgcmlnaHQpKSkK
KworICAgICMgR2V0IHRoZSByZXN0IG9mIG91ciB2ZXJzaW9ucworICAgIGxlZnRfc3BsaXQuYXBw
ZW5kKGxlZnRbbGVuKGxlZnRfc3BsaXRbMF0pIDpdKQorICAgIHJpZ2h0X3NwbGl0LmFwcGVuZChy
aWdodFtsZW4ocmlnaHRfc3BsaXRbMF0pIDpdKQorCisgICAgIyBJbnNlcnQgb3VyIHBhZGRpbmcK
KyAgICBsZWZ0X3NwbGl0Lmluc2VydCgxLCBbIjAiXSAqIG1heCgwLCBsZW4ocmlnaHRfc3BsaXRb
MF0pIC0gbGVuKGxlZnRfc3BsaXRbMF0pKSkKKyAgICByaWdodF9zcGxpdC5pbnNlcnQoMSwgWyIw
Il0gKiBtYXgoMCwgbGVuKGxlZnRfc3BsaXRbMF0pIC0gbGVuKHJpZ2h0X3NwbGl0WzBdKSkpCisK
KyAgICByZXR1cm4gKGxpc3QoaXRlcnRvb2xzLmNoYWluKCpsZWZ0X3NwbGl0KSksIGxpc3QoaXRl
cnRvb2xzLmNoYWluKCpyaWdodF9zcGxpdCkpKQorCisKK2NsYXNzIFNwZWNpZmllclNldChCYXNl
U3BlY2lmaWVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlY2lmaWVycz0iIiwgcHJlcmVs
ZWFzZXM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKHN0ciwgT3B0aW9uYWxbYm9vbF0pIC0+IE5v
bmUKKworICAgICAgICAjIFNwbGl0IG9uICwgdG8gYnJlYWsgZWFjaCBpbmRpdmlkdWFsIHNwZWNp
ZmllciBpbnRvIGl0J3Mgb3duIGl0ZW0sIGFuZAorICAgICAgICAjIHN0cmlwIGVhY2ggaXRlbSB0
byByZW1vdmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgICAgICBzcGxpdF9zcGVj
aWZpZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBzcGVjaWZpZXJzLnNwbGl0KCIsIikgaWYgcy5z
dHJpcCgpXQorCisgICAgICAgICMgUGFyc2VkIGVhY2ggaW5kaXZpZHVhbCBzcGVjaWZpZXIsIGF0
dGVtcHRpbmcgZmlyc3QgdG8gbWFrZSBpdCBhCisgICAgICAgICMgU3BlY2lmaWVyIGFuZCBmYWxs
aW5nIGJhY2sgdG8gYSBMZWdhY3lTcGVjaWZpZXIuCisgICAgICAgIHBhcnNlZCA9IHNldCgpCisg
ICAgICAgIGZvciBzcGVjaWZpZXIgaW4gc3BsaXRfc3BlY2lmaWVyczoKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBwYXJzZWQuYWRkKFNwZWNpZmllcihzcGVjaWZpZXIpKQorICAg
ICAgICAgICAgZXhjZXB0IEludmFsaWRTcGVjaWZpZXI6CisgICAgICAgICAgICAgICAgcGFyc2Vk
LmFkZChMZWdhY3lTcGVjaWZpZXIoc3BlY2lmaWVyKSkKKworICAgICAgICAjIFR1cm4gb3VyIHBh
cnNlZCBzcGVjaWZpZXJzIGludG8gYSBmcm96ZW4gc2V0IGFuZCBzYXZlIHRoZW0gZm9yIGxhdGVy
LgorICAgICAgICBzZWxmLl9zcGVjcyA9IGZyb3plbnNldChwYXJzZWQpCisKKyAgICAgICAgIyBT
dG9yZSBvdXIgcHJlcmVsZWFzZXMgdmFsdWUgc28gd2UgY2FuIHVzZSBpdCBsYXRlciB0byBkZXRl
cm1pbmUgaWYKKyAgICAgICAgIyB3ZSBhY2NlcHQgcHJlcmVsZWFzZXMgb3Igbm90LgorICAgICAg
ICBzZWxmLl9wcmVyZWxlYXNlcyA9IHByZXJlbGVhc2VzCisKKyAgICBkZWYgX19yZXByX18oc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHByZSA9ICgKKyAgICAgICAg
ICAgICIsIHByZXJlbGVhc2VzPXswIXJ9Ii5mb3JtYXQoc2VsZi5wcmVyZWxlYXNlcykKKyAgICAg
ICAgICAgIGlmIHNlbGYuX3ByZXJlbGVhc2VzIGlzIG5vdCBOb25lCisgICAgICAgICAgICBlbHNl
ICIiCisgICAgICAgICkKKworICAgICAgICByZXR1cm4gIjxTcGVjaWZpZXJTZXQoezAhcn17MX0p
PiIuZm9ybWF0KHN0cihzZWxmKSwgcHJlKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAg
ICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiAiLCIuam9pbihzb3J0ZWQoc3Ry
KHMpIGZvciBzIGluIHNlbGYuX3NwZWNzKSkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fc3BlY3Mp
CisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKFVuaW9u
W1NwZWNpZmllclNldCwgc3RyXSkgLT4gU3BlY2lmaWVyU2V0CisgICAgICAgIGlmIGlzaW5zdGFu
Y2Uob3RoZXIsIHN0cmluZ190eXBlcyk6CisgICAgICAgICAgICBvdGhlciA9IFNwZWNpZmllclNl
dChvdGhlcikKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU3BlY2lmaWVyU2V0
KToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIHNwZWNpZmll
ciA9IFNwZWNpZmllclNldCgpCisgICAgICAgIHNwZWNpZmllci5fc3BlY3MgPSBmcm96ZW5zZXQo
c2VsZi5fc3BlY3MgfCBvdGhlci5fc3BlY3MpCisKKyAgICAgICAgaWYgc2VsZi5fcHJlcmVsZWFz
ZXMgaXMgTm9uZSBhbmQgb3RoZXIuX3ByZXJlbGVhc2VzIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgc3BlY2lmaWVyLl9wcmVyZWxlYXNlcyA9IG90aGVyLl9wcmVyZWxlYXNlcworICAgICAgICBl
bGlmIHNlbGYuX3ByZXJlbGVhc2VzIGlzIG5vdCBOb25lIGFuZCBvdGhlci5fcHJlcmVsZWFzZXMg
aXMgTm9uZToKKyAgICAgICAgICAgIHNwZWNpZmllci5fcHJlcmVsZWFzZXMgPSBzZWxmLl9wcmVy
ZWxlYXNlcworICAgICAgICBlbGlmIHNlbGYuX3ByZXJlbGVhc2VzID09IG90aGVyLl9wcmVyZWxl
YXNlczoKKyAgICAgICAgICAgIHNwZWNpZmllci5fcHJlcmVsZWFzZXMgPSBzZWxmLl9wcmVyZWxl
YXNlcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAg
ICAgICAgICAgICAiQ2Fubm90IGNvbWJpbmUgU3BlY2lmaWVyU2V0cyB3aXRoIFRydWUgYW5kIEZh
bHNlIHByZXJlbGVhc2UgIgorICAgICAgICAgICAgICAgICJvdmVycmlkZXMuIgorICAgICAgICAg
ICAgKQorCisgICAgICAgIHJldHVybiBzcGVjaWZpZXIKKworICAgIGRlZiBfX2VxX18oc2VsZiwg
b3RoZXIpOgorICAgICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShvdGhlciwgKHN0cmluZ190eXBlcywgX0luZGl2aWR1YWxTcGVjaWZpZXIpKToKKyAg
ICAgICAgICAgIG90aGVyID0gU3BlY2lmaWVyU2V0KHN0cihvdGhlcikpCisgICAgICAgIGVsaWYg
bm90IGlzaW5zdGFuY2Uob3RoZXIsIFNwZWNpZmllclNldCk6CisgICAgICAgICAgICByZXR1cm4g
Tm90SW1wbGVtZW50ZWQKKworICAgICAgICByZXR1cm4gc2VsZi5fc3BlY3MgPT0gb3RoZXIuX3Nw
ZWNzCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2Jq
ZWN0KSAtPiBib29sCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIChzdHJpbmdfdHlwZXMs
IF9JbmRpdmlkdWFsU3BlY2lmaWVyKSk6CisgICAgICAgICAgICBvdGhlciA9IFNwZWNpZmllclNl
dChzdHIob3RoZXIpKQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTcGVjaWZp
ZXJTZXQpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3NwZWNzICE9IG90aGVyLl9zcGVjcworCisgICAgZGVmIF9fbGVuX18oc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gaW50CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fc3Bl
Y3MpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gSXRl
cmF0b3JbX0luZGl2aWR1YWxTcGVjaWZpZXJdCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3Nw
ZWNzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHByZXJlbGVhc2VzKHNlbGYpOgorICAgICAg
ICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW2Jvb2xdCisKKyAgICAgICAgIyBJZiB3ZSBoYXZlIGJl
ZW4gZ2l2ZW4gYW4gZXhwbGljaXQgcHJlcmVsZWFzZSBtb2RpZmllciwgdGhlbiB3ZSdsbAorICAg
ICAgICAjIHBhc3MgdGhhdCB0aHJvdWdoIGhlcmUuCisgICAgICAgIGlmIHNlbGYuX3ByZXJlbGVh
c2VzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXJlbGVhc2VzCisK
KyAgICAgICAgIyBJZiB3ZSBkb24ndCBoYXZlIGFueSBzcGVjaWZpZXJzLCBhbmQgd2UgZG9uJ3Qg
aGF2ZSBhIGZvcmNlZCB2YWx1ZSwKKyAgICAgICAgIyB0aGVuIHdlJ2xsIGp1c3QgcmV0dXJuIE5v
bmUgc2luY2Ugd2UgZG9uJ3Qga25vdyBpZiB0aGlzIHNob3VsZCBoYXZlCisgICAgICAgICMgcHJl
LXJlbGVhc2VzIG9yIG5vdC4KKyAgICAgICAgaWYgbm90IHNlbGYuX3NwZWNzOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIE90aGVyd2lzZSB3ZSdsbCBzZWUgaWYgYW55IG9m
IHRoZSBnaXZlbiBzcGVjaWZpZXJzIGFjY2VwdAorICAgICAgICAjIHByZXJlbGVhc2VzLCBpZiBh
bnkgb2YgdGhlbSBkbyB3ZSdsbCByZXR1cm4gVHJ1ZSwgb3RoZXJ3aXNlIEZhbHNlLgorICAgICAg
ICByZXR1cm4gYW55KHMucHJlcmVsZWFzZXMgZm9yIHMgaW4gc2VsZi5fc3BlY3MpCisKKyAgICBA
cHJlcmVsZWFzZXMuc2V0dGVyCisgICAgZGVmIHByZXJlbGVhc2VzKHNlbGYsIHZhbHVlKToKKyAg
ICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gTm9uZQorICAgICAgICBzZWxmLl9wcmVyZWxlYXNlcyA9
IHZhbHVlCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAjIHR5
cGU6IChVbmlvbltQYXJzZWRWZXJzaW9uLCBzdHJdKSAtPiBib29sCisgICAgICAgIHJldHVybiBz
ZWxmLmNvbnRhaW5zKGl0ZW0pCisKKyAgICBkZWYgY29udGFpbnMoc2VsZiwgaXRlbSwgcHJlcmVs
ZWFzZXM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKFVuaW9uW1BhcnNlZFZlcnNpb24sIHN0cl0s
IE9wdGlvbmFsW2Jvb2xdKSAtPiBib29sCisKKyAgICAgICAgIyBFbnN1cmUgdGhhdCBvdXIgaXRl
bSBpcyBhIFZlcnNpb24gb3IgTGVnYWN5VmVyc2lvbiBpbnN0YW5jZS4KKyAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UoaXRlbSwgKExlZ2FjeVZlcnNpb24sIFZlcnNpb24pKToKKyAgICAgICAgICAg
IGl0ZW0gPSBwYXJzZShpdGVtKQorCisgICAgICAgICMgRGV0ZXJtaW5lIGlmIHdlJ3JlIGZvcmNp
bmcgYSBwcmVyZWxlYXNlIG9yIG5vdCwgaWYgd2UncmUgbm90IGZvcmNpbmcKKyAgICAgICAgIyBv
bmUgZm9yIHRoaXMgcGFydGljdWxhciBmaWx0ZXIgY2FsbCwgdGhlbiB3ZSdsbCB1c2Ugd2hhdGV2
ZXIgdGhlCisgICAgICAgICMgU3BlY2lmaWVyU2V0IHRoaW5rcyBmb3Igd2hldGhlciBvciBub3Qg
d2Ugc2hvdWxkIHN1cHBvcnQgcHJlcmVsZWFzZXMuCisgICAgICAgIGlmIHByZXJlbGVhc2VzIGlz
IE5vbmU6CisgICAgICAgICAgICBwcmVyZWxlYXNlcyA9IHNlbGYucHJlcmVsZWFzZXMKKworICAg
ICAgICAjIFdlIGNhbiBkZXRlcm1pbmUgaWYgd2UncmUgZ29pbmcgdG8gYWxsb3cgcHJlLXJlbGVh
c2VzIGJ5IGxvb2tpbmcgdG8KKyAgICAgICAgIyBzZWUgaWYgYW55IG9mIHRoZSB1bmRlcmx5aW5n
IGl0ZW1zIHN1cHBvcnRzIHRoZW0uIElmIG5vbmUgb2YgdGhlbSBkbworICAgICAgICAjIGFuZCB0
aGlzIGl0ZW0gaXMgYSBwcmUtcmVsZWFzZSB0aGVuIHdlIGRvIG5vdCBhbGxvdyBpdCBhbmQgd2Ug
Y2FuCisgICAgICAgICMgc2hvcnQgY2lyY3VpdCB0aGF0IGhlcmUuCisgICAgICAgICMgTm90ZTog
VGhpcyBtZWFucyB0aGF0IDEuMC5kZXYxIHdvdWxkIG5vdCBiZSBjb250YWluZWQgaW4gc29tZXRo
aW5nCisgICAgICAgICMgICAgICAgbGlrZSA+PTEuMC5kZXZhYmMgaG93ZXZlciBpdCB3b3VsZCBi
ZSBpbiA+PTEuMC5kZWJhYmMsPjAuMC5kZXYwCisgICAgICAgIGlmIG5vdCBwcmVyZWxlYXNlcyBh
bmQgaXRlbS5pc19wcmVyZWxlYXNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAg
ICAgIyBXZSBzaW1wbHkgZGlzcGF0Y2ggdG8gdGhlIHVuZGVybHlpbmcgc3BlY3MgaGVyZSB0byBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgIyBnaXZlbiB2ZXJzaW9uIGlzIGNvbnRhaW5lZCB3
aXRoaW4gYWxsIG9mIHRoZW0uCisgICAgICAgICMgTm90ZTogVGhpcyB1c2Ugb2YgYWxsKCkgaGVy
ZSBtZWFucyB0aGF0IGFuIGVtcHR5IHNldCBvZiBzcGVjaWZpZXJzCisgICAgICAgICMgICAgICAg
d2lsbCBhbHdheXMgcmV0dXJuIFRydWUsIHRoaXMgaXMgYW4gZXhwbGljaXQgZGVzaWduIGRlY2lz
aW9uLgorICAgICAgICByZXR1cm4gYWxsKHMuY29udGFpbnMoaXRlbSwgcHJlcmVsZWFzZXM9cHJl
cmVsZWFzZXMpIGZvciBzIGluIHNlbGYuX3NwZWNzKQorCisgICAgZGVmIGZpbHRlcigKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgaXRlcmFibGUsICAjIHR5cGU6IEl0ZXJhYmxlW1VuaW9uW1BhcnNl
ZFZlcnNpb24sIHN0cl1dCisgICAgICAgIHByZXJlbGVhc2VzPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW2Jvb2xdCisgICAgKToKKyAgICAgICAgIyB0eXBlOiAoLi4uKSAtPiBJdGVyYWJsZVtVbmlv
bltQYXJzZWRWZXJzaW9uLCBzdHJdXQorCisgICAgICAgICMgRGV0ZXJtaW5lIGlmIHdlJ3JlIGZv
cmNpbmcgYSBwcmVyZWxlYXNlIG9yIG5vdCwgaWYgd2UncmUgbm90IGZvcmNpbmcKKyAgICAgICAg
IyBvbmUgZm9yIHRoaXMgcGFydGljdWxhciBmaWx0ZXIgY2FsbCwgdGhlbiB3ZSdsbCB1c2Ugd2hh
dGV2ZXIgdGhlCisgICAgICAgICMgU3BlY2lmaWVyU2V0IHRoaW5rcyBmb3Igd2hldGhlciBvciBu
b3Qgd2Ugc2hvdWxkIHN1cHBvcnQgcHJlcmVsZWFzZXMuCisgICAgICAgIGlmIHByZXJlbGVhc2Vz
IGlzIE5vbmU6CisgICAgICAgICAgICBwcmVyZWxlYXNlcyA9IHNlbGYucHJlcmVsZWFzZXMKKwor
ICAgICAgICAjIElmIHdlIGhhdmUgYW55IHNwZWNpZmllcnMsIHRoZW4gd2Ugd2FudCB0byB3cmFw
IG91ciBpdGVyYWJsZSBpbiB0aGUKKyAgICAgICAgIyBmaWx0ZXIgbWV0aG9kIGZvciBlYWNoIG9u
ZSwgdGhpcyB3aWxsIGFjdCBhcyBhIGxvZ2ljYWwgQU5EIGFtb25nc3QKKyAgICAgICAgIyBlYWNo
IHNwZWNpZmllci4KKyAgICAgICAgaWYgc2VsZi5fc3BlY3M6CisgICAgICAgICAgICBmb3Igc3Bl
YyBpbiBzZWxmLl9zcGVjczoKKyAgICAgICAgICAgICAgICBpdGVyYWJsZSA9IHNwZWMuZmlsdGVy
KGl0ZXJhYmxlLCBwcmVyZWxlYXNlcz1ib29sKHByZXJlbGVhc2VzKSkKKyAgICAgICAgICAgIHJl
dHVybiBpdGVyYWJsZQorICAgICAgICAjIElmIHdlIGRvIG5vdCBoYXZlIGFueSBzcGVjaWZpZXJz
LCB0aGVuIHdlIG5lZWQgdG8gaGF2ZSBhIHJvdWdoIGZpbHRlcgorICAgICAgICAjIHdoaWNoIHdp
bGwgZmlsdGVyIG91dCBhbnkgcHJlLXJlbGVhc2VzLCB1bmxlc3MgdGhlcmUgYXJlIG5vIGZpbmFs
CisgICAgICAgICMgcmVsZWFzZXMsIGFuZCB3aGljaCB3aWxsIGZpbHRlciBvdXQgTGVnYWN5VmVy
c2lvbiBpbiBnZW5lcmFsLgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsdGVyZWQgPSBb
XSAgIyB0eXBlOiBMaXN0W1VuaW9uW1BhcnNlZFZlcnNpb24sIHN0cl1dCisgICAgICAgICAgICBm
b3VuZF9wcmVyZWxlYXNlcyA9IFtdICAjIHR5cGU6IExpc3RbVW5pb25bUGFyc2VkVmVyc2lvbiwg
c3RyXV0KKworICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcmFibGU6CisgICAgICAgICAgICAg
ICAgIyBFbnN1cmUgdGhhdCB3ZSBzb21lIGtpbmQgb2YgVmVyc2lvbiBjbGFzcyBmb3IgdGhpcyBp
dGVtLgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0ZW0sIChMZWdhY3lWZXJz
aW9uLCBWZXJzaW9uKSk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZF92ZXJzaW9uID0gcGFy
c2UoaXRlbSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwYXJz
ZWRfdmVyc2lvbiA9IGl0ZW0KKworICAgICAgICAgICAgICAgICMgRmlsdGVyIG91dCBhbnkgaXRl
bSB3aGljaCBpcyBwYXJzZWQgYXMgYSBMZWdhY3lWZXJzaW9uCisgICAgICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShwYXJzZWRfdmVyc2lvbiwgTGVnYWN5VmVyc2lvbik6CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjIFN0b3JlIGFueSBpdGVtIHdoaWNo
IGlzIGEgcHJlLXJlbGVhc2UgZm9yIGxhdGVyIHVubGVzcyB3ZSd2ZQorICAgICAgICAgICAgICAg
ICMgYWxyZWFkeSBmb3VuZCBhIGZpbmFsIHZlcnNpb24gb3Igd2UgYXJlIGFjY2VwdGluZyBwcmVy
ZWxlYXNlcworICAgICAgICAgICAgICAgIGlmIHBhcnNlZF92ZXJzaW9uLmlzX3ByZXJlbGVhc2Ug
YW5kIG5vdCBwcmVyZWxlYXNlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZpbHRlcmVk
OgorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfcHJlcmVsZWFzZXMuYXBwZW5kKGl0ZW0p
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBw
ZW5kKGl0ZW0pCisKKyAgICAgICAgICAgICMgSWYgd2UndmUgZm91bmQgbm8gaXRlbXMgZXhjZXB0
IGZvciBwcmUtcmVsZWFzZXMsIHRoZW4gd2UnbGwgZ28KKyAgICAgICAgICAgICMgYWhlYWQgYW5k
IHVzZSB0aGUgcHJlLXJlbGVhc2VzCisgICAgICAgICAgICBpZiBub3QgZmlsdGVyZWQgYW5kIGZv
dW5kX3ByZXJlbGVhc2VzIGFuZCBwcmVyZWxlYXNlcyBpcyBOb25lOgorICAgICAgICAgICAgICAg
IHJldHVybiBmb3VuZF9wcmVyZWxlYXNlcworCisgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy90YWdzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvcGFja2FnaW5nL3RhZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi44NDI0NDdkODYzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9w
YWNrYWdpbmcvdGFncy5weQpAQCAtMCwwICsxLDg1NiBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBs
aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisj
IDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorCitpbXBvcnQgZGlzdHV0aWxzLnV0aWwK
KwordHJ5OgorICAgIGZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgRVhURU5TSU9OX1NV
RkZJWEVTCitleGNlcHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBpbXBv
cnQgaW1wCisKKyAgICBFWFRFTlNJT05fU1VGRklYRVMgPSBbeFswXSBmb3IgeCBpbiBpbXAuZ2V0
X3N1ZmZpeGVzKCldCisgICAgZGVsIGltcAoraW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQoraW1wb3J0IHN0cnVj
dAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHdhcm5pbmdzCisKK2Zyb20g
Ll90eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcsIGNhc3QKKworaWYgVFlQRV9DSEVDS0lORzog
ICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIGZyb20gdHlwaW5nIGltcG9ydCAoCisgICAgICAgIERp
Y3QsCisgICAgICAgIEZyb3plblNldCwKKyAgICAgICAgSU8sCisgICAgICAgIEl0ZXJhYmxlLAor
ICAgICAgICBJdGVyYXRvciwKKyAgICAgICAgTGlzdCwKKyAgICAgICAgT3B0aW9uYWwsCisgICAg
ICAgIFNlcXVlbmNlLAorICAgICAgICBUdXBsZSwKKyAgICAgICAgVW5pb24sCisgICAgKQorCisg
ICAgUHl0aG9uVmVyc2lvbiA9IFNlcXVlbmNlW2ludF0KKyAgICBNYWNWZXJzaW9uID0gVHVwbGVb
aW50LCBpbnRdCisgICAgR2xpYmNWZXJzaW9uID0gVHVwbGVbaW50LCBpbnRdCisKKworbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKK0lOVEVSUFJFVEVSX1NIT1JUX05BTUVT
ID0geworICAgICJweXRob24iOiAicHkiLCAgIyBHZW5lcmljLgorICAgICJjcHl0aG9uIjogImNw
IiwKKyAgICAicHlweSI6ICJwcCIsCisgICAgImlyb25weXRob24iOiAiaXAiLAorICAgICJqeXRo
b24iOiAiankiLAorfSAgIyB0eXBlOiBEaWN0W3N0ciwgc3RyXQorCisKK18zMl9CSVRfSU5URVJQ
UkVURVIgPSBzeXMubWF4c2l6ZSA8PSAyICoqIDMyCisKKworX0xFR0FDWV9NQU5ZTElOVVhfTUFQ
ID0geworICAgICMgQ2VudE9TIDcgdy8gZ2xpYmMgMi4xNyAoUEVQIDU5OSkKKyAgICAoMiwgMTcp
OiAibWFueWxpbnV4MjAxNCIsCisgICAgIyBDZW50T1MgNiB3LyBnbGliYyAyLjEyIChQRVAgNTcx
KQorICAgICgyLCAxMik6ICJtYW55bGludXgyMDEwIiwKKyAgICAjIENlbnRPUyA1IHcvIGdsaWJj
IDIuNSAoUEVQIDUxMykKKyAgICAoMiwgNSk6ICJtYW55bGludXgxIiwKK30KKworIyBJZiBnbGli
YyBldmVyIGNoYW5nZXMgaXRzIG1ham9yIHZlcnNpb24sIHdlIG5lZWQgdG8ga25vdyB3aGF0IHRo
ZSBsYXN0CisjIG1pbm9yIHZlcnNpb24gd2FzLCBzbyB3ZSBjYW4gYnVpbGQgdGhlIGNvbXBsZXRl
IGxpc3Qgb2YgYWxsIHZlcnNpb25zLgorIyBGb3Igbm93LCBndWVzcyB3aGF0IHRoZSBoaWdoZXN0
IG1pbm9yIHZlcnNpb24gbWlnaHQgYmUsIGFzc3VtZSBpdCB3aWxsCisjIGJlIDUwIGZvciB0ZXN0
aW5nLiBPbmNlIHRoaXMgYWN0dWFsbHkgaGFwcGVucywgdXBkYXRlIHRoZSBkaWN0aW9uYXJ5Cisj
IHdpdGggdGhlIGFjdHVhbCB2YWx1ZS4KK19MQVNUX0dMSUJDX01JTk9SID0gY29sbGVjdGlvbnMu
ZGVmYXVsdGRpY3QobGFtYmRhOiA1MCkgICMgdHlwZTogRGljdFtpbnQsIGludF0KK2dsaWJjVmVy
c2lvbiA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoIlZlcnNpb24iLCBbIm1ham9yIiwgIm1pbm9y
Il0pCisKKworY2xhc3MgVGFnKG9iamVjdCk6CisgICAgIiIiCisgICAgQSByZXByZXNlbnRhdGlv
biBvZiB0aGUgdGFnIHRyaXBsZSBmb3IgYSB3aGVlbC4KKworICAgIEluc3RhbmNlcyBhcmUgY29u
c2lkZXJlZCBpbW11dGFibGUgYW5kIHRodXMgYXJlIGhhc2hhYmxlLiBFcXVhbGl0eSBjaGVja2lu
ZworICAgIGlzIGFsc28gc3VwcG9ydGVkLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gWyJf
aW50ZXJwcmV0ZXIiLCAiX2FiaSIsICJfcGxhdGZvcm0iLCAiX2hhc2giXQorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGludGVycHJldGVyLCBhYmksIHBsYXRmb3JtKToKKyAgICAgICAgIyB0eXBl
OiAoc3RyLCBzdHIsIHN0cikgLT4gTm9uZQorICAgICAgICBzZWxmLl9pbnRlcnByZXRlciA9IGlu
dGVycHJldGVyLmxvd2VyKCkKKyAgICAgICAgc2VsZi5fYWJpID0gYWJpLmxvd2VyKCkKKyAgICAg
ICAgc2VsZi5fcGxhdGZvcm0gPSBwbGF0Zm9ybS5sb3dlcigpCisgICAgICAgICMgVGhlIF9faGFz
aF9fIG9mIGV2ZXJ5IHNpbmdsZSBlbGVtZW50IGluIGEgU2V0W1RhZ10gd2lsbCBiZSBldmFsdWF0
ZWQgZWFjaCB0aW1lCisgICAgICAgICMgdGhhdCBhIHNldCBjYWxscyBpdHMgYC5kaXNqb2ludCgp
YCBtZXRob2QsIHdoaWNoIG1heSBiZSBjYWxsZWQgaHVuZHJlZHMgb2YKKyAgICAgICAgIyB0aW1l
cyB3aGVuIHNjYW5uaW5nIGEgcGFnZSBvZiBsaW5rcyBmb3IgcGFja2FnZXMgd2l0aCB0YWdzIG1h
dGNoaW5nIHRoYXQKKyAgICAgICAgIyBTZXRbVGFnXS4gUHJlLWNvbXB1dGluZyB0aGUgdmFsdWUg
aGVyZSBwcm9kdWNlcyBzaWduaWZpY2FudCBzcGVlZHVwcyBmb3IKKyAgICAgICAgIyBkb3duc3Ry
ZWFtIGNvbnN1bWVycy4KKyAgICAgICAgc2VsZi5faGFzaCA9IGhhc2goKHNlbGYuX2ludGVycHJl
dGVyLCBzZWxmLl9hYmksIHNlbGYuX3BsYXRmb3JtKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRl
ZiBpbnRlcnByZXRlcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2ludGVycHJldGVyCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWJpKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gc2VsZi5fYWJp
CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGxhdGZvcm0oc2VsZik6CisgICAgICAgICMgdHlw
ZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzZWxmLl9wbGF0Zm9ybQorCisgICAgZGVmIF9f
ZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gYm9vbAorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVGFnKToKKyAgICAgICAgICAgIHJldHVybiBO
b3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICAoc2VsZi5wbGF0
Zm9ybSA9PSBvdGhlci5wbGF0Zm9ybSkKKyAgICAgICAgICAgIGFuZCAoc2VsZi5hYmkgPT0gb3Ro
ZXIuYWJpKQorICAgICAgICAgICAgYW5kIChzZWxmLmludGVycHJldGVyID09IG90aGVyLmludGVy
cHJldGVyKQorICAgICAgICApCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gaW50CisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICJ7
fS17fS17fSIuZm9ybWF0KHNlbGYuX2ludGVycHJldGVyLCBzZWxmLl9hYmksIHNlbGYuX3BsYXRm
b3JtKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0
cgorICAgICAgICByZXR1cm4gIjx7c2VsZn0gQCB7c2VsZl9pZH0+Ii5mb3JtYXQoc2VsZj1zZWxm
LCBzZWxmX2lkPWlkKHNlbGYpKQorCisKK2RlZiBwYXJzZV90YWcodGFnKToKKyAgICAjIHR5cGU6
IChzdHIpIC0+IEZyb3plblNldFtUYWddCisgICAgIiIiCisgICAgUGFyc2VzIHRoZSBwcm92aWRl
ZCB0YWcgKGUuZy4gYHB5My1ub25lLWFueWApIGludG8gYSBmcm96ZW5zZXQgb2YgVGFnIGluc3Rh
bmNlcy4KKworICAgIFJldHVybmluZyBhIHNldCBpcyByZXF1aXJlZCBkdWUgdG8gdGhlIHBvc3Np
YmlsaXR5IHRoYXQgdGhlIHRhZyBpcyBhCisgICAgY29tcHJlc3NlZCB0YWcgc2V0LgorICAgICIi
IgorICAgIHRhZ3MgPSBzZXQoKQorICAgIGludGVycHJldGVycywgYWJpcywgcGxhdGZvcm1zID0g
dGFnLnNwbGl0KCItIikKKyAgICBmb3IgaW50ZXJwcmV0ZXIgaW4gaW50ZXJwcmV0ZXJzLnNwbGl0
KCIuIik6CisgICAgICAgIGZvciBhYmkgaW4gYWJpcy5zcGxpdCgiLiIpOgorICAgICAgICAgICAg
Zm9yIHBsYXRmb3JtXyBpbiBwbGF0Zm9ybXMuc3BsaXQoIi4iKToKKyAgICAgICAgICAgICAgICB0
YWdzLmFkZChUYWcoaW50ZXJwcmV0ZXIsIGFiaSwgcGxhdGZvcm1fKSkKKyAgICByZXR1cm4gZnJv
emVuc2V0KHRhZ3MpCisKKworZGVmIF93YXJuX2tleXdvcmRfcGFyYW1ldGVyKGZ1bmNfbmFtZSwg
a3dhcmdzKToKKyAgICAjIHR5cGU6IChzdHIsIERpY3Rbc3RyLCBib29sXSkgLT4gYm9vbAorICAg
ICIiIgorICAgIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuNyB0byBhbGxv
dyB0cmVhdGluZyAnd2FybicgYXMga2V5d29yZC1vbmx5LgorICAgICIiIgorICAgIGlmIG5vdCBr
d2FyZ3M6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsaWYgbGVuKGt3YXJncykgPiAxIG9y
ICJ3YXJuIiBub3QgaW4ga3dhcmdzOgorICAgICAgICBrd2FyZ3MucG9wKCJ3YXJuIiwgTm9uZSkK
KyAgICAgICAgYXJnID0gbmV4dChpdGVyKGt3YXJncy5rZXlzKCkpKQorICAgICAgICByYWlzZSBU
eXBlRXJyb3IoCisgICAgICAgICAgICAie30oKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFy
Z3VtZW50IHshcn0iLmZvcm1hdChmdW5jX25hbWUsIGFyZykKKyAgICAgICAgKQorICAgIHJldHVy
biBrd2FyZ3NbIndhcm4iXQorCisKK2RlZiBfZ2V0X2NvbmZpZ192YXIobmFtZSwgd2Fybj1GYWxz
ZSk6CisgICAgIyB0eXBlOiAoc3RyLCBib29sKSAtPiBVbmlvbltpbnQsIHN0ciwgTm9uZV0KKyAg
ICB2YWx1ZSA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcihuYW1lKQorICAgIGlmIHZhbHVlIGlz
IE5vbmUgYW5kIHdhcm46CisgICAgICAgIGxvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICJDb25m
aWcgdmFyaWFibGUgJyVzJyBpcyB1bnNldCwgUHl0aG9uIEFCSSB0YWcgbWF5IGJlIGluY29ycmVj
dCIsIG5hbWUKKyAgICAgICAgKQorICAgIHJldHVybiB2YWx1ZQorCisKK2RlZiBfbm9ybWFsaXpl
X3N0cmluZyhzdHJpbmcpOgorICAgICMgdHlwZTogKHN0cikgLT4gc3RyCisgICAgcmV0dXJuIHN0
cmluZy5yZXBsYWNlKCIuIiwgIl8iKS5yZXBsYWNlKCItIiwgIl8iKQorCisKK2RlZiBfYWJpM19h
cHBsaWVzKHB5dGhvbl92ZXJzaW9uKToKKyAgICAjIHR5cGU6IChQeXRob25WZXJzaW9uKSAtPiBi
b29sCisgICAgIiIiCisgICAgRGV0ZXJtaW5lIGlmIHRoZSBQeXRob24gdmVyc2lvbiBzdXBwb3J0
cyBhYmkzLgorCisgICAgUEVQIDM4NCB3YXMgZmlyc3QgaW1wbGVtZW50ZWQgaW4gUHl0aG9uIDMu
Mi4KKyAgICAiIiIKKyAgICByZXR1cm4gbGVuKHB5dGhvbl92ZXJzaW9uKSA+IDEgYW5kIHR1cGxl
KHB5dGhvbl92ZXJzaW9uKSA+PSAoMywgMikKKworCitkZWYgX2NweXRob25fYWJpcyhweV92ZXJz
aW9uLCB3YXJuPUZhbHNlKToKKyAgICAjIHR5cGU6IChQeXRob25WZXJzaW9uLCBib29sKSAtPiBM
aXN0W3N0cl0KKyAgICBweV92ZXJzaW9uID0gdHVwbGUocHlfdmVyc2lvbikgICMgVG8gYWxsb3cg
Zm9yIHZlcnNpb24gY29tcGFyaXNvbi4KKyAgICBhYmlzID0gW10KKyAgICB2ZXJzaW9uID0gX3Zl
cnNpb25fbm9kb3QocHlfdmVyc2lvbls6Ml0pCisgICAgZGVidWcgPSBweW1hbGxvYyA9IHVjczQg
PSAiIgorICAgIHdpdGhfZGVidWcgPSBfZ2V0X2NvbmZpZ192YXIoIlB5X0RFQlVHIiwgd2FybikK
KyAgICBoYXNfcmVmY291bnQgPSBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKQorICAg
ICMgV2luZG93cyBkb2Vzbid0IHNldCBQeV9ERUJVRywgc28gY2hlY2tpbmcgZm9yIHN1cHBvcnQg
b2YgZGVidWctY29tcGlsZWQKKyAgICAjIGV4dGVuc2lvbiBtb2R1bGVzIGlzIHRoZSBiZXN0IG9w
dGlvbi4KKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3BpcC9pc3N1ZXMvMzM4MyNpc3N1
ZWNvbW1lbnQtMTczMjY3NjkyCisgICAgaGFzX2V4dCA9ICJfZC5weWQiIGluIEVYVEVOU0lPTl9T
VUZGSVhFUworICAgIGlmIHdpdGhfZGVidWcgb3IgKHdpdGhfZGVidWcgaXMgTm9uZSBhbmQgKGhh
c19yZWZjb3VudCBvciBoYXNfZXh0KSk6CisgICAgICAgIGRlYnVnID0gImQiCisgICAgaWYgcHlf
dmVyc2lvbiA8ICgzLCA4KToKKyAgICAgICAgd2l0aF9weW1hbGxvYyA9IF9nZXRfY29uZmlnX3Zh
cigiV0lUSF9QWU1BTExPQyIsIHdhcm4pCisgICAgICAgIGlmIHdpdGhfcHltYWxsb2Mgb3Igd2l0
aF9weW1hbGxvYyBpcyBOb25lOgorICAgICAgICAgICAgcHltYWxsb2MgPSAibSIKKyAgICAgICAg
aWYgcHlfdmVyc2lvbiA8ICgzLCAzKToKKyAgICAgICAgICAgIHVuaWNvZGVfc2l6ZSA9IF9nZXRf
Y29uZmlnX3ZhcigiUHlfVU5JQ09ERV9TSVpFIiwgd2FybikKKyAgICAgICAgICAgIGlmIHVuaWNv
ZGVfc2l6ZSA9PSA0IG9yICgKKyAgICAgICAgICAgICAgICB1bmljb2RlX3NpemUgaXMgTm9uZSBh
bmQgc3lzLm1heHVuaWNvZGUgPT0gMHgxMEZGRkYKKyAgICAgICAgICAgICk6CisgICAgICAgICAg
ICAgICAgdWNzNCA9ICJ1IgorICAgIGVsaWYgZGVidWc6CisgICAgICAgICMgRGVidWcgYnVpbGRz
IGNhbiBhbHNvIGxvYWQgIm5vcm1hbCIgZXh0ZW5zaW9uIG1vZHVsZXMuCisgICAgICAgICMgV2Ug
Y2FuIGFsc28gYXNzdW1lIG5vIFVDUy00IG9yIHB5bWFsbG9jIHJlcXVpcmVtZW50LgorICAgICAg
ICBhYmlzLmFwcGVuZCgiY3B7dmVyc2lvbn0iLmZvcm1hdCh2ZXJzaW9uPXZlcnNpb24pKQorICAg
IGFiaXMuaW5zZXJ0KAorICAgICAgICAwLAorICAgICAgICAiY3B7dmVyc2lvbn17ZGVidWd9e3B5
bWFsbG9jfXt1Y3M0fSIuZm9ybWF0KAorICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9uLCBkZWJ1
Zz1kZWJ1ZywgcHltYWxsb2M9cHltYWxsb2MsIHVjczQ9dWNzNAorICAgICAgICApLAorICAgICkK
KyAgICByZXR1cm4gYWJpcworCisKK2RlZiBjcHl0aG9uX3RhZ3MoCisgICAgcHl0aG9uX3ZlcnNp
b249Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbUHl0aG9uVmVyc2lvbl0KKyAgICBhYmlzPU5vbmUs
ICAjIHR5cGU6IE9wdGlvbmFsW0l0ZXJhYmxlW3N0cl1dCisgICAgcGxhdGZvcm1zPU5vbmUsICAj
IHR5cGU6IE9wdGlvbmFsW0l0ZXJhYmxlW3N0cl1dCisgICAgKiprd2FyZ3MgICMgdHlwZTogYm9v
bAorKToKKyAgICAjIHR5cGU6ICguLi4pIC0+IEl0ZXJhdG9yW1RhZ10KKyAgICAiIiIKKyAgICBZ
aWVsZHMgdGhlIHRhZ3MgZm9yIGEgQ1B5dGhvbiBpbnRlcnByZXRlci4KKworICAgIFRoZSB0YWdz
IGNvbnNpc3Qgb2Y6CisgICAgLSBjcDxweXRob25fdmVyc2lvbj4tPGFiaT4tPHBsYXRmb3JtPgor
ICAgIC0gY3A8cHl0aG9uX3ZlcnNpb24+LWFiaTMtPHBsYXRmb3JtPgorICAgIC0gY3A8cHl0aG9u
X3ZlcnNpb24+LW5vbmUtPHBsYXRmb3JtPgorICAgIC0gY3A8bGVzcyB0aGFuIHB5dGhvbl92ZXJz
aW9uPi1hYmkzLTxwbGF0Zm9ybT4gICMgT2xkZXIgUHl0aG9uIHZlcnNpb25zIGRvd24gdG8gMy4y
LgorCisgICAgSWYgcHl0aG9uX3ZlcnNpb24gb25seSBzcGVjaWZpZXMgYSBtYWpvciB2ZXJzaW9u
IHRoZW4gdXNlci1wcm92aWRlZCBBQklzIGFuZAorICAgIHRoZSAnbm9uZScgQUJJdGFnIHdpbGwg
YmUgdXNlZC4KKworICAgIElmICdhYmkzJyBvciAnbm9uZScgYXJlIHNwZWNpZmllZCBpbiAnYWJp
cycgdGhlbiB0aGV5IHdpbGwgYmUgeWllbGRlZCBhdAorICAgIHRoZWlyIG5vcm1hbCBwb3NpdGlv
biBhbmQgbm90IGF0IHRoZSBiZWdpbm5pbmcuCisgICAgIiIiCisgICAgd2FybiA9IF93YXJuX2tl
eXdvcmRfcGFyYW1ldGVyKCJjcHl0aG9uX3RhZ3MiLCBrd2FyZ3MpCisgICAgaWYgbm90IHB5dGhv
bl92ZXJzaW9uOgorICAgICAgICBweXRob25fdmVyc2lvbiA9IHN5cy52ZXJzaW9uX2luZm9bOjJd
CisKKyAgICBpbnRlcnByZXRlciA9ICJjcHt9Ii5mb3JtYXQoX3ZlcnNpb25fbm9kb3QocHl0aG9u
X3ZlcnNpb25bOjJdKSkKKworICAgIGlmIGFiaXMgaXMgTm9uZToKKyAgICAgICAgaWYgbGVuKHB5
dGhvbl92ZXJzaW9uKSA+IDE6CisgICAgICAgICAgICBhYmlzID0gX2NweXRob25fYWJpcyhweXRo
b25fdmVyc2lvbiwgd2FybikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFiaXMgPSBbXQor
ICAgIGFiaXMgPSBsaXN0KGFiaXMpCisgICAgIyAnYWJpMycgYW5kICdub25lJyBhcmUgZXhwbGlj
aXRseSBoYW5kbGVkIGxhdGVyLgorICAgIGZvciBleHBsaWNpdF9hYmkgaW4gKCJhYmkzIiwgIm5v
bmUiKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWJpcy5yZW1vdmUoZXhwbGljaXRfYWJp
KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIHBs
YXRmb3JtcyA9IGxpc3QocGxhdGZvcm1zIG9yIF9wbGF0Zm9ybV90YWdzKCkpCisgICAgZm9yIGFi
aSBpbiBhYmlzOgorICAgICAgICBmb3IgcGxhdGZvcm1fIGluIHBsYXRmb3JtczoKKyAgICAgICAg
ICAgIHlpZWxkIFRhZyhpbnRlcnByZXRlciwgYWJpLCBwbGF0Zm9ybV8pCisgICAgaWYgX2FiaTNf
YXBwbGllcyhweXRob25fdmVyc2lvbik6CisgICAgICAgIGZvciB0YWcgaW4gKFRhZyhpbnRlcnBy
ZXRlciwgImFiaTMiLCBwbGF0Zm9ybV8pIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zKToKKyAg
ICAgICAgICAgIHlpZWxkIHRhZworICAgIGZvciB0YWcgaW4gKFRhZyhpbnRlcnByZXRlciwgIm5v
bmUiLCBwbGF0Zm9ybV8pIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zKToKKyAgICAgICAgeWll
bGQgdGFnCisKKyAgICBpZiBfYWJpM19hcHBsaWVzKHB5dGhvbl92ZXJzaW9uKToKKyAgICAgICAg
Zm9yIG1pbm9yX3ZlcnNpb24gaW4gcmFuZ2UocHl0aG9uX3ZlcnNpb25bMV0gLSAxLCAxLCAtMSk6
CisgICAgICAgICAgICBmb3IgcGxhdGZvcm1fIGluIHBsYXRmb3JtczoKKyAgICAgICAgICAgICAg
ICBpbnRlcnByZXRlciA9ICJjcHt2ZXJzaW9ufSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICB2ZXJzaW9uPV92ZXJzaW9uX25vZG90KChweXRob25fdmVyc2lvblswXSwgbWlub3JfdmVyc2lv
bikpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHlpZWxkIFRhZyhpbnRlcnBy
ZXRlciwgImFiaTMiLCBwbGF0Zm9ybV8pCisKKworZGVmIF9nZW5lcmljX2FiaSgpOgorICAgICMg
dHlwZTogKCkgLT4gSXRlcmF0b3Jbc3RyXQorICAgIGFiaSA9IHN5c2NvbmZpZy5nZXRfY29uZmln
X3ZhcigiU09BQkkiKQorICAgIGlmIGFiaToKKyAgICAgICAgeWllbGQgX25vcm1hbGl6ZV9zdHJp
bmcoYWJpKQorCisKK2RlZiBnZW5lcmljX3RhZ3MoCisgICAgaW50ZXJwcmV0ZXI9Tm9uZSwgICMg
dHlwZTogT3B0aW9uYWxbc3RyXQorICAgIGFiaXM9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbSXRl
cmFibGVbc3RyXV0KKyAgICBwbGF0Zm9ybXM9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbSXRlcmFi
bGVbc3RyXV0KKyAgICAqKmt3YXJncyAgIyB0eXBlOiBib29sCispOgorICAgICMgdHlwZTogKC4u
LikgLT4gSXRlcmF0b3JbVGFnXQorICAgICIiIgorICAgIFlpZWxkcyB0aGUgdGFncyBmb3IgYSBn
ZW5lcmljIGludGVycHJldGVyLgorCisgICAgVGhlIHRhZ3MgY29uc2lzdCBvZjoKKyAgICAtIDxp
bnRlcnByZXRlcj4tPGFiaT4tPHBsYXRmb3JtPgorCisgICAgVGhlICJub25lIiBBQkkgd2lsbCBi
ZSBhZGRlZCBpZiBpdCB3YXMgbm90IGV4cGxpY2l0bHkgcHJvdmlkZWQuCisgICAgIiIiCisgICAg
d2FybiA9IF93YXJuX2tleXdvcmRfcGFyYW1ldGVyKCJnZW5lcmljX3RhZ3MiLCBrd2FyZ3MpCisg
ICAgaWYgbm90IGludGVycHJldGVyOgorICAgICAgICBpbnRlcnBfbmFtZSA9IGludGVycHJldGVy
X25hbWUoKQorICAgICAgICBpbnRlcnBfdmVyc2lvbiA9IGludGVycHJldGVyX3ZlcnNpb24od2Fy
bj13YXJuKQorICAgICAgICBpbnRlcnByZXRlciA9ICIiLmpvaW4oW2ludGVycF9uYW1lLCBpbnRl
cnBfdmVyc2lvbl0pCisgICAgaWYgYWJpcyBpcyBOb25lOgorICAgICAgICBhYmlzID0gX2dlbmVy
aWNfYWJpKCkKKyAgICBwbGF0Zm9ybXMgPSBsaXN0KHBsYXRmb3JtcyBvciBfcGxhdGZvcm1fdGFn
cygpKQorICAgIGFiaXMgPSBsaXN0KGFiaXMpCisgICAgaWYgIm5vbmUiIG5vdCBpbiBhYmlzOgor
ICAgICAgICBhYmlzLmFwcGVuZCgibm9uZSIpCisgICAgZm9yIGFiaSBpbiBhYmlzOgorICAgICAg
ICBmb3IgcGxhdGZvcm1fIGluIHBsYXRmb3JtczoKKyAgICAgICAgICAgIHlpZWxkIFRhZyhpbnRl
cnByZXRlciwgYWJpLCBwbGF0Zm9ybV8pCisKKworZGVmIF9weV9pbnRlcnByZXRlcl9yYW5nZShw
eV92ZXJzaW9uKToKKyAgICAjIHR5cGU6IChQeXRob25WZXJzaW9uKSAtPiBJdGVyYXRvcltzdHJd
CisgICAgIiIiCisgICAgWWllbGRzIFB5dGhvbiB2ZXJzaW9ucyBpbiBkZXNjZW5kaW5nIG9yZGVy
LgorCisgICAgQWZ0ZXIgdGhlIGxhdGVzdCB2ZXJzaW9uLCB0aGUgbWFqb3Itb25seSB2ZXJzaW9u
IHdpbGwgYmUgeWllbGRlZCwgYW5kIHRoZW4KKyAgICBhbGwgcHJldmlvdXMgdmVyc2lvbnMgb2Yg
dGhhdCBtYWpvciB2ZXJzaW9uLgorICAgICIiIgorICAgIGlmIGxlbihweV92ZXJzaW9uKSA+IDE6
CisgICAgICAgIHlpZWxkICJweXt2ZXJzaW9ufSIuZm9ybWF0KHZlcnNpb249X3ZlcnNpb25fbm9k
b3QocHlfdmVyc2lvbls6Ml0pKQorICAgIHlpZWxkICJweXttYWpvcn0iLmZvcm1hdChtYWpvcj1w
eV92ZXJzaW9uWzBdKQorICAgIGlmIGxlbihweV92ZXJzaW9uKSA+IDE6CisgICAgICAgIGZvciBt
aW5vciBpbiByYW5nZShweV92ZXJzaW9uWzFdIC0gMSwgLTEsIC0xKToKKyAgICAgICAgICAgIHlp
ZWxkICJweXt2ZXJzaW9ufSIuZm9ybWF0KHZlcnNpb249X3ZlcnNpb25fbm9kb3QoKHB5X3ZlcnNp
b25bMF0sIG1pbm9yKSkpCisKKworZGVmIGNvbXBhdGlibGVfdGFncygKKyAgICBweXRob25fdmVy
c2lvbj1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtQeXRob25WZXJzaW9uXQorICAgIGludGVycHJl
dGVyPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICBwbGF0Zm9ybXM9Tm9uZSwgICMg
dHlwZTogT3B0aW9uYWxbSXRlcmFibGVbc3RyXV0KKyk6CisgICAgIyB0eXBlOiAoLi4uKSAtPiBJ
dGVyYXRvcltUYWddCisgICAgIiIiCisgICAgWWllbGRzIHRoZSBzZXF1ZW5jZSBvZiB0YWdzIHRo
YXQgYXJlIGNvbXBhdGlibGUgd2l0aCBhIHNwZWNpZmljIHZlcnNpb24gb2YgUHl0aG9uLgorCisg
ICAgVGhlIHRhZ3MgY29uc2lzdCBvZjoKKyAgICAtIHB5Ki1ub25lLTxwbGF0Zm9ybT4KKyAgICAt
IDxpbnRlcnByZXRlcj4tbm9uZS1hbnkgICMgLi4uIGlmIGBpbnRlcnByZXRlcmAgaXMgcHJvdmlk
ZWQuCisgICAgLSBweSotbm9uZS1hbnkKKyAgICAiIiIKKyAgICBpZiBub3QgcHl0aG9uX3ZlcnNp
b246CisgICAgICAgIHB5dGhvbl92ZXJzaW9uID0gc3lzLnZlcnNpb25faW5mb1s6Ml0KKyAgICBw
bGF0Zm9ybXMgPSBsaXN0KHBsYXRmb3JtcyBvciBfcGxhdGZvcm1fdGFncygpKQorICAgIGZvciB2
ZXJzaW9uIGluIF9weV9pbnRlcnByZXRlcl9yYW5nZShweXRob25fdmVyc2lvbik6CisgICAgICAg
IGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zOgorICAgICAgICAgICAgeWllbGQgVGFnKHZlcnNp
b24sICJub25lIiwgcGxhdGZvcm1fKQorICAgIGlmIGludGVycHJldGVyOgorICAgICAgICB5aWVs
ZCBUYWcoaW50ZXJwcmV0ZXIsICJub25lIiwgImFueSIpCisgICAgZm9yIHZlcnNpb24gaW4gX3B5
X2ludGVycHJldGVyX3JhbmdlKHB5dGhvbl92ZXJzaW9uKToKKyAgICAgICAgeWllbGQgVGFnKHZl
cnNpb24sICJub25lIiwgImFueSIpCisKKworZGVmIF9tYWNfYXJjaChhcmNoLCBpc18zMmJpdD1f
MzJfQklUX0lOVEVSUFJFVEVSKToKKyAgICAjIHR5cGU6IChzdHIsIGJvb2wpIC0+IHN0cgorICAg
IGlmIG5vdCBpc18zMmJpdDoKKyAgICAgICAgcmV0dXJuIGFyY2gKKworICAgIGlmIGFyY2guc3Rh
cnRzd2l0aCgicHBjIik6CisgICAgICAgIHJldHVybiAicHBjIgorCisgICAgcmV0dXJuICJpMzg2
IgorCisKK2RlZiBfbWFjX2JpbmFyeV9mb3JtYXRzKHZlcnNpb24sIGNwdV9hcmNoKToKKyAgICAj
IHR5cGU6IChNYWNWZXJzaW9uLCBzdHIpIC0+IExpc3Rbc3RyXQorICAgIGZvcm1hdHMgPSBbY3B1
X2FyY2hdCisgICAgaWYgY3B1X2FyY2ggPT0gIng4Nl82NCI6CisgICAgICAgIGlmIHZlcnNpb24g
PCAoMTAsIDQpOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGZvcm1hdHMuZXh0ZW5k
KFsiaW50ZWwiLCAiZmF0NjQiLCAiZmF0MzIiXSkKKworICAgIGVsaWYgY3B1X2FyY2ggPT0gImkz
ODYiOgorICAgICAgICBpZiB2ZXJzaW9uIDwgKDEwLCA0KToKKyAgICAgICAgICAgIHJldHVybiBb
XQorICAgICAgICBmb3JtYXRzLmV4dGVuZChbImludGVsIiwgImZhdDMyIiwgImZhdCJdKQorCisg
ICAgZWxpZiBjcHVfYXJjaCA9PSAicHBjNjQiOgorICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2Fy
ZSBhYm91dCAzMi1iaXQgUFBDIGZvciBwcGM2NCB0aHJvdWdoIDEwLjI/CisgICAgICAgIGlmIHZl
cnNpb24gPiAoMTAsIDUpIG9yIHZlcnNpb24gPCAoMTAsIDQpOgorICAgICAgICAgICAgcmV0dXJu
IFtdCisgICAgICAgIGZvcm1hdHMuYXBwZW5kKCJmYXQ2NCIpCisKKyAgICBlbGlmIGNwdV9hcmNo
ID09ICJwcGMiOgorICAgICAgICBpZiB2ZXJzaW9uID4gKDEwLCA2KToKKyAgICAgICAgICAgIHJl
dHVybiBbXQorICAgICAgICBmb3JtYXRzLmV4dGVuZChbImZhdDMyIiwgImZhdCJdKQorCisgICAg
aWYgY3B1X2FyY2ggaW4geyJhcm02NCIsICJ4ODZfNjQifToKKyAgICAgICAgZm9ybWF0cy5hcHBl
bmQoInVuaXZlcnNhbDIiKQorCisgICAgaWYgY3B1X2FyY2ggaW4geyJ4ODZfNjQiLCAiaTM4NiIs
ICJwcGM2NCIsICJwcGMifToKKyAgICAgICAgZm9ybWF0cy5hcHBlbmQoInVuaXZlcnNhbCIpCisK
KyAgICByZXR1cm4gZm9ybWF0cworCisKK2RlZiBtYWNfcGxhdGZvcm1zKHZlcnNpb249Tm9uZSwg
YXJjaD1Ob25lKToKKyAgICAjIHR5cGU6IChPcHRpb25hbFtNYWNWZXJzaW9uXSwgT3B0aW9uYWxb
c3RyXSkgLT4gSXRlcmF0b3Jbc3RyXQorICAgICIiIgorICAgIFlpZWxkcyB0aGUgcGxhdGZvcm0g
dGFncyBmb3IgYSBtYWNPUyBzeXN0ZW0uCisKKyAgICBUaGUgYHZlcnNpb25gIHBhcmFtZXRlciBp
cyBhIHR3by1pdGVtIHR1cGxlIHNwZWNpZnlpbmcgdGhlIG1hY09TIHZlcnNpb24gdG8KKyAgICBn
ZW5lcmF0ZSBwbGF0Zm9ybSB0YWdzIGZvci4gVGhlIGBhcmNoYCBwYXJhbWV0ZXIgaXMgdGhlIENQ
VSBhcmNoaXRlY3R1cmUgdG8KKyAgICBnZW5lcmF0ZSBwbGF0Zm9ybSB0YWdzIGZvci4gQm90aCBw
YXJhbWV0ZXJzIGRlZmF1bHQgdG8gdGhlIGFwcHJvcHJpYXRlIHZhbHVlCisgICAgZm9yIHRoZSBj
dXJyZW50IHN5c3RlbS4KKyAgICAiIiIKKyAgICB2ZXJzaW9uX3N0ciwgXywgY3B1X2FyY2ggPSBw
bGF0Zm9ybS5tYWNfdmVyKCkgICMgdHlwZTogaWdub3JlCisgICAgaWYgdmVyc2lvbiBpcyBOb25l
OgorICAgICAgICB2ZXJzaW9uID0gY2FzdCgiTWFjVmVyc2lvbiIsIHR1cGxlKG1hcChpbnQsIHZl
cnNpb25fc3RyLnNwbGl0KCIuIilbOjJdKSkpCisgICAgZWxzZToKKyAgICAgICAgdmVyc2lvbiA9
IHZlcnNpb24KKyAgICBpZiBhcmNoIGlzIE5vbmU6CisgICAgICAgIGFyY2ggPSBfbWFjX2FyY2go
Y3B1X2FyY2gpCisgICAgZWxzZToKKyAgICAgICAgYXJjaCA9IGFyY2gKKworICAgIGlmICgxMCwg
MCkgPD0gdmVyc2lvbiBhbmQgdmVyc2lvbiA8ICgxMSwgMCk6CisgICAgICAgICMgUHJpb3IgdG8g
TWFjIE9TIDExLCBlYWNoIHllYXJseSByZWxlYXNlIG9mIE1hYyBPUyBidW1wZWQgdGhlCisgICAg
ICAgICMgIm1pbm9yIiB2ZXJzaW9uIG51bWJlci4gIFRoZSBtYWpvciB2ZXJzaW9uIHdhcyBhbHdh
eXMgMTAuCisgICAgICAgIGZvciBtaW5vcl92ZXJzaW9uIGluIHJhbmdlKHZlcnNpb25bMV0sIC0x
LCAtMSk6CisgICAgICAgICAgICBjb21wYXRfdmVyc2lvbiA9IDEwLCBtaW5vcl92ZXJzaW9uCisg
ICAgICAgICAgICBiaW5hcnlfZm9ybWF0cyA9IF9tYWNfYmluYXJ5X2Zvcm1hdHMoY29tcGF0X3Zl
cnNpb24sIGFyY2gpCisgICAgICAgICAgICBmb3IgYmluYXJ5X2Zvcm1hdCBpbiBiaW5hcnlfZm9y
bWF0czoKKyAgICAgICAgICAgICAgICB5aWVsZCAibWFjb3N4X3ttYWpvcn1fe21pbm9yfV97Ymlu
YXJ5X2Zvcm1hdH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgbWFqb3I9MTAsIG1pbm9y
PW1pbm9yX3ZlcnNpb24sIGJpbmFyeV9mb3JtYXQ9YmluYXJ5X2Zvcm1hdAorICAgICAgICAgICAg
ICAgICkKKworICAgIGlmIHZlcnNpb24gPj0gKDExLCAwKToKKyAgICAgICAgIyBTdGFydGluZyB3
aXRoIE1hYyBPUyAxMSwgZWFjaCB5ZWFybHkgcmVsZWFzZSBidW1wcyB0aGUgbWFqb3IgdmVyc2lv
bgorICAgICAgICAjIG51bWJlci4gICBUaGUgbWlub3IgdmVyc2lvbnMgYXJlIG5vdyB0aGUgbWlk
eWVhciB1cGRhdGVzLgorICAgICAgICBmb3IgbWFqb3JfdmVyc2lvbiBpbiByYW5nZSh2ZXJzaW9u
WzBdLCAxMCwgLTEpOgorICAgICAgICAgICAgY29tcGF0X3ZlcnNpb24gPSBtYWpvcl92ZXJzaW9u
LCAwCisgICAgICAgICAgICBiaW5hcnlfZm9ybWF0cyA9IF9tYWNfYmluYXJ5X2Zvcm1hdHMoY29t
cGF0X3ZlcnNpb24sIGFyY2gpCisgICAgICAgICAgICBmb3IgYmluYXJ5X2Zvcm1hdCBpbiBiaW5h
cnlfZm9ybWF0czoKKyAgICAgICAgICAgICAgICB5aWVsZCAibWFjb3N4X3ttYWpvcn1fe21pbm9y
fV97YmluYXJ5X2Zvcm1hdH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgbWFqb3I9bWFq
b3JfdmVyc2lvbiwgbWlub3I9MCwgYmluYXJ5X2Zvcm1hdD1iaW5hcnlfZm9ybWF0CisgICAgICAg
ICAgICAgICAgKQorCisgICAgaWYgdmVyc2lvbiA+PSAoMTEsIDApIGFuZCBhcmNoID09ICJ4ODZf
NjQiOgorICAgICAgICAjIE1hYyBPUyAxMSBvbiB4ODZfNjQgaXMgY29tcGF0aWJsZSB3aXRoIGJp
bmFyaWVzIGZyb20gcHJldmlvdXMgcmVsZWFzZXMuCisgICAgICAgICMgQXJtNjQgc3VwcG9ydCB3
YXMgaW50cm9kdWNlZCBpbiAxMS4wLCBzbyBubyBBcm0gYmluYXJpZXMgZnJvbSBwcmV2aW91cwor
ICAgICAgICAjIHJlbGVhc2VzIGV4aXN0LgorICAgICAgICBmb3IgbWlub3JfdmVyc2lvbiBpbiBy
YW5nZSgxNiwgMywgLTEpOgorICAgICAgICAgICAgY29tcGF0X3ZlcnNpb24gPSAxMCwgbWlub3Jf
dmVyc2lvbgorICAgICAgICAgICAgYmluYXJ5X2Zvcm1hdHMgPSBfbWFjX2JpbmFyeV9mb3JtYXRz
KGNvbXBhdF92ZXJzaW9uLCBhcmNoKQorICAgICAgICAgICAgZm9yIGJpbmFyeV9mb3JtYXQgaW4g
YmluYXJ5X2Zvcm1hdHM6CisgICAgICAgICAgICAgICAgeWllbGQgIm1hY29zeF97bWFqb3J9X3tt
aW5vcn1fe2JpbmFyeV9mb3JtYXR9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIG1ham9y
PWNvbXBhdF92ZXJzaW9uWzBdLAorICAgICAgICAgICAgICAgICAgICBtaW5vcj1jb21wYXRfdmVy
c2lvblsxXSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXJ5X2Zvcm1hdD1iaW5hcnlfZm9ybWF0
LAorICAgICAgICAgICAgICAgICkKKworCisjIEZyb20gUEVQIDUxMywgUEVQIDYwMAorZGVmIF9p
c19tYW55bGludXhfY29tcGF0aWJsZShuYW1lLCBhcmNoLCBnbGliY192ZXJzaW9uKToKKyAgICAj
IHR5cGU6IChzdHIsIHN0ciwgR2xpYmNWZXJzaW9uKSAtPiBib29sCisgICAgc3lzX2dsaWJjID0g
X2dldF9nbGliY192ZXJzaW9uKCkKKyAgICBpZiBzeXNfZ2xpYmMgPCBnbGliY192ZXJzaW9uOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAjIENoZWNrIGZvciBwcmVzZW5jZSBvZiBfbWFueWxp
bnV4IG1vZHVsZS4KKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBfbWFueWxpbnV4ICAjIG5vcWEK
KyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAg
ICBpZiBoYXNhdHRyKF9tYW55bGludXgsICJtYW55bGludXhfY29tcGF0aWJsZSIpOgorICAgICAg
ICAgICAgcmVzdWx0ID0gX21hbnlsaW51eC5tYW55bGludXhfY29tcGF0aWJsZSgKKyAgICAgICAg
ICAgICAgICBnbGliY192ZXJzaW9uWzBdLCBnbGliY192ZXJzaW9uWzFdLCBhcmNoCisgICAgICAg
ICAgICApCisgICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJvb2wocmVzdWx0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgZ2xp
YmNfdmVyc2lvbiA9PSAoMiwgNSk6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihfbWFueWxp
bnV4LCAibWFueWxpbnV4MV9jb21wYXRpYmxlIik6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBib29sKF9tYW55bGludXgubWFueWxpbnV4MV9jb21wYXRpYmxlKQorICAgICAgICAgICAgaWYg
Z2xpYmNfdmVyc2lvbiA9PSAoMiwgMTIpOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoX21h
bnlsaW51eCwgIm1hbnlsaW51eDIwMTBfY29tcGF0aWJsZSIpOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYm9vbChfbWFueWxpbnV4Lm1hbnlsaW51eDIwMTBfY29tcGF0aWJsZSkKKyAgICAg
ICAgICAgIGlmIGdsaWJjX3ZlcnNpb24gPT0gKDIsIDE3KToKKyAgICAgICAgICAgICAgICBpZiBo
YXNhdHRyKF9tYW55bGludXgsICJtYW55bGludXgyMDE0X2NvbXBhdGlibGUiKToKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGJvb2woX21hbnlsaW51eC5tYW55bGludXgyMDE0X2NvbXBhdGli
bGUpCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgX2dsaWJjX3ZlcnNpb25fc3RyaW5nKCk6Cisg
ICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtzdHJdCisgICAgIyBSZXR1cm5zIGdsaWJjIHZlcnNp
b24gc3RyaW5nLCBvciBOb25lIGlmIG5vdCB1c2luZyBnbGliYy4KKyAgICByZXR1cm4gX2dsaWJj
X3ZlcnNpb25fc3RyaW5nX2NvbmZzdHIoKSBvciBfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY3R5cGVz
KCkKKworCitkZWYgX2dsaWJjX3ZlcnNpb25fc3RyaW5nX2NvbmZzdHIoKToKKyAgICAjIHR5cGU6
ICgpIC0+IE9wdGlvbmFsW3N0cl0KKyAgICAiIiIKKyAgICBQcmltYXJ5IGltcGxlbWVudGF0aW9u
IG9mIGdsaWJjX3ZlcnNpb25fc3RyaW5nIHVzaW5nIG9zLmNvbmZzdHIuCisgICAgIiIiCisgICAg
IyBvcy5jb25mc3RyIGlzIHF1aXRlIGEgYml0IGZhc3RlciB0aGFuIGN0eXBlcy5ETEwuIEl0J3Mg
YWxzbyBsZXNzIGxpa2VseQorICAgICMgdG8gYmUgYnJva2VuIG9yIG1pc3NpbmcuIFRoaXMgc3Ry
YXRlZ3kgaXMgdXNlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeQorICAgICMgcGxhdGZvcm0gbW9k
dWxlLgorICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2IvZmNmMWQw
MDNiZjRmMDEwMGM5ZDA5MjFmZjNkNzBlMTEyN2NhMWI3MS9MaWIvcGxhdGZvcm0ucHkjTDE3NS1M
MTgzCisgICAgdHJ5OgorICAgICAgICAjIG9zLmNvbmZzdHIoIkNTX0dOVV9MSUJDX1ZFUlNJT04i
KSByZXR1cm5zIGEgc3RyaW5nIGxpa2UgImdsaWJjIDIuMTciLgorICAgICAgICB2ZXJzaW9uX3N0
cmluZyA9IG9zLmNvbmZzdHIoICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdICMgbm9xYTog
RjgyMQorICAgICAgICAgICAgIkNTX0dOVV9MSUJDX1ZFUlNJT04iCisgICAgICAgICkKKyAgICAg
ICAgYXNzZXJ0IHZlcnNpb25fc3RyaW5nIGlzIG5vdCBOb25lCisgICAgICAgIF8sIHZlcnNpb24g
PSB2ZXJzaW9uX3N0cmluZy5zcGxpdCgpICAjIHR5cGU6IFR1cGxlW3N0ciwgc3RyXQorICAgIGV4
Y2VwdCAoQXNzZXJ0aW9uRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yLCBWYWx1ZUVycm9y
KToKKyAgICAgICAgIyBvcy5jb25mc3RyKCkgb3IgQ1NfR05VX0xJQkNfVkVSU0lPTiBub3QgYXZh
aWxhYmxlIChvciBhIGJhZCB2YWx1ZSkuLi4KKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1
cm4gdmVyc2lvbgorCisKK2RlZiBfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY3R5cGVzKCk6CisgICAg
IyB0eXBlOiAoKSAtPiBPcHRpb25hbFtzdHJdCisgICAgIiIiCisgICAgRmFsbGJhY2sgaW1wbGVt
ZW50YXRpb24gb2YgZ2xpYmNfdmVyc2lvbl9zdHJpbmcgdXNpbmcgY3R5cGVzLgorICAgICIiIgor
ICAgIHRyeToKKyAgICAgICAgaW1wb3J0IGN0eXBlcworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
KyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICMgY3R5cGVzLkNETEwoTm9uZSkgaW50ZXJuYWxs
eSBjYWxscyBkbG9wZW4oTlVMTCksIGFuZCBhcyB0aGUgZGxvcGVuCisgICAgIyBtYW5wYWdlIHNh
eXMsICJJZiBmaWxlbmFtZSBpcyBOVUxMLCB0aGVuIHRoZSByZXR1cm5lZCBoYW5kbGUgaXMgZm9y
IHRoZQorICAgICMgbWFpbiBwcm9ncmFtIi4gVGhpcyB3YXkgd2UgY2FuIGxldCB0aGUgbGlua2Vy
IGRvIHRoZSB3b3JrIHRvIGZpZ3VyZSBvdXQKKyAgICAjIHdoaWNoIGxpYmMgb3VyIHByb2Nlc3Mg
aXMgYWN0dWFsbHkgdXNpbmcuCisgICAgIworICAgICMgV2UgbXVzdCBhbHNvIGhhbmRsZSB0aGUg
c3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBleGVjdXRhYmxlIGlzIG5vdCBhCisgICAgIyBkeW5hbWlj
YWxseSBsaW5rZWQgZXhlY3V0YWJsZS4gVGhpcyBjYW4gb2NjdXIgd2hlbiB1c2luZyBtdXNsIGxp
YmMsCisgICAgIyBmb3IgZXhhbXBsZS4gSW4gdGhpcyBzaXR1YXRpb24sIGRsb3BlbigpIHdpbGwg
ZXJyb3IsIGxlYWRpbmcgdG8gYW4KKyAgICAjIE9TRXJyb3IuIEludGVyZXN0aW5nbHksIGF0IGxl
YXN0IGluIHRoZSBjYXNlIG9mIG11c2wsIHRoZXJlIGlzIG5vCisgICAgIyBlcnJubyBzZXQgb24g
dGhlIE9TRXJyb3IuIFRoZSBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50IHVzZWQgdG8gY29uc3RydWN0
CisgICAgIyBPU0Vycm9yIGNvbWVzIGZyb20gbGliYyBpdHNlbGYgYW5kIGlzIHRoZXJlZm9yZSBu
b3QgcG9ydGFibGUgdG8KKyAgICAjIGhhcmQgY29kZSBoZXJlLiBJbiBhbnkgY2FzZSwgZmFpbHVy
ZSB0byBjYWxsIGRsb3BlbigpIG1lYW5zIHdlCisgICAgIyBjYW4gcHJvY2VlZCwgc28gd2UgYmFp
bCBvbiBvdXIgYXR0ZW1wdC4KKyAgICB0cnk6CisgICAgICAgICMgTm90ZTogdHlwZXNoZWQgaXMg
d3JvbmcgaGVyZSBzbyB3ZSBhcmUgaWdub3JpbmcgdGhpcyBsaW5lLgorICAgICAgICBwcm9jZXNz
X25hbWVzcGFjZSA9IGN0eXBlcy5DRExMKE5vbmUpICAjIHR5cGU6IGlnbm9yZQorICAgIGV4Y2Vw
dCBPU0Vycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgdHJ5OgorICAgICAgICBnbnVf
Z2V0X2xpYmNfdmVyc2lvbiA9IHByb2Nlc3NfbmFtZXNwYWNlLmdudV9nZXRfbGliY192ZXJzaW9u
CisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIFN5bWJvbCBkb2Vzbid0IGV4
aXN0IC0+IHRoZXJlZm9yZSwgd2UgYXJlIG5vdCBsaW5rZWQgdG8KKyAgICAgICAgIyBnbGliYy4K
KyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICMgQ2FsbCBnbnVfZ2V0X2xpYmNfdmVyc2lvbiwg
d2hpY2ggcmV0dXJucyBhIHN0cmluZyBsaWtlICIyLjUiCisgICAgZ251X2dldF9saWJjX3ZlcnNp
b24ucmVzdHlwZSA9IGN0eXBlcy5jX2NoYXJfcAorICAgIHZlcnNpb25fc3RyID0gZ251X2dldF9s
aWJjX3ZlcnNpb24oKSAgIyB0eXBlOiBzdHIKKyAgICAjIHB5MiAvIHB5MyBjb21wYXRpYmlsaXR5
OgorICAgIGlmIG5vdCBpc2luc3RhbmNlKHZlcnNpb25fc3RyLCBzdHIpOgorICAgICAgICB2ZXJz
aW9uX3N0ciA9IHZlcnNpb25fc3RyLmRlY29kZSgiYXNjaWkiKQorCisgICAgcmV0dXJuIHZlcnNp
b25fc3RyCisKKworZGVmIF9wYXJzZV9nbGliY192ZXJzaW9uKHZlcnNpb25fc3RyKToKKyAgICAj
IHR5cGU6IChzdHIpIC0+IFR1cGxlW2ludCwgaW50XQorICAgICMgUGFyc2UgZ2xpYmMgdmVyc2lv
bi4KKyAgICAjCisgICAgIyBXZSB1c2UgYSByZWdleHAgaW5zdGVhZCBvZiBzdHIuc3BsaXQgYmVj
YXVzZSB3ZSB3YW50IHRvIGRpc2NhcmQgYW55CisgICAgIyByYW5kb20ganVuayB0aGF0IG1pZ2h0
IGNvbWUgYWZ0ZXIgdGhlIG1pbm9yIHZlcnNpb24gLS0gdGhpcyBtaWdodCBoYXBwZW4KKyAgICAj
IGluIHBhdGNoZWQvZm9ya2VkIHZlcnNpb25zIG9mIGdsaWJjIChlLmcuIExpbmFybydzIHZlcnNp
b24gb2YgZ2xpYmMKKyAgICAjIHVzZXMgdmVyc2lvbiBzdHJpbmdzIGxpa2UgIjIuMjAtMjAxNC4x
MSIpLiBTZWUgZ2gtMzU4OC4KKyAgICBtID0gcmUubWF0Y2gociIoP1A8bWFqb3I+WzAtOV0rKVwu
KD9QPG1pbm9yPlswLTldKykiLCB2ZXJzaW9uX3N0cikKKyAgICBpZiBub3QgbToKKyAgICAgICAg
d2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICJFeHBlY3RlZCBnbGliYyB2ZXJzaW9uIHdpdGgg
MiBjb21wb25lbnRzIG1ham9yLm1pbm9yLCIKKyAgICAgICAgICAgICIgZ290OiAlcyIgJSB2ZXJz
aW9uX3N0ciwKKyAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLAorICAgICAgICApCisgICAgICAg
IHJldHVybiAtMSwgLTEKKyAgICByZXR1cm4gKGludChtLmdyb3VwKCJtYWpvciIpKSwgaW50KG0u
Z3JvdXAoIm1pbm9yIikpKQorCisKK19nbGliY192ZXJzaW9uID0gW10gICMgIHR5cGU6IExpc3Rb
VHVwbGVbaW50LCBpbnRdXQorCisKK2RlZiBfZ2V0X2dsaWJjX3ZlcnNpb24oKToKKyAgICAjIHR5
cGU6ICgpIC0+IFR1cGxlW2ludCwgaW50XQorICAgIGlmIF9nbGliY192ZXJzaW9uOgorICAgICAg
ICByZXR1cm4gX2dsaWJjX3ZlcnNpb25bMF0KKyAgICB2ZXJzaW9uX3N0ciA9IF9nbGliY192ZXJz
aW9uX3N0cmluZygpCisgICAgaWYgdmVyc2lvbl9zdHIgaXMgTm9uZToKKyAgICAgICAgX2dsaWJj
X3ZlcnNpb24uYXBwZW5kKCgtMSwgLTEpKQorICAgIGVsc2U6CisgICAgICAgIF9nbGliY192ZXJz
aW9uLmFwcGVuZChfcGFyc2VfZ2xpYmNfdmVyc2lvbih2ZXJzaW9uX3N0cikpCisgICAgcmV0dXJu
IF9nbGliY192ZXJzaW9uWzBdCisKKworIyBQeXRob24gZG9lcyBub3QgcHJvdmlkZSBwbGF0Zm9y
bSBpbmZvcm1hdGlvbiBhdCBzdWZmaWNpZW50IGdyYW51bGFyaXR5IHRvCisjIGlkZW50aWZ5IHRo
ZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHJ1bm5pbmcgZXhlY3V0YWJsZSBpbiBzb21lIGNhc2VzLCBz
byB3ZQorIyBkZXRlcm1pbmUgaXQgZHluYW1pY2FsbHkgYnkgcmVhZGluZyB0aGUgaW5mb3JtYXRp
b24gZnJvbSB0aGUgcnVubmluZworIyBwcm9jZXNzLiBUaGlzIG9ubHkgYXBwbGllcyBvbiBMaW51
eCwgd2hpY2ggdXNlcyB0aGUgRUxGIGZvcm1hdC4KK2NsYXNzIF9FTEZGaWxlSGVhZGVyKG9iamVj
dCk6CisgICAgIyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeGVjdXRhYmxlX2FuZF9M
aW5rYWJsZV9Gb3JtYXQjRmlsZV9oZWFkZXIKKyAgICBjbGFzcyBfSW52YWxpZEVMRkZpbGVIZWFk
ZXIoVmFsdWVFcnJvcik6CisgICAgICAgICIiIgorICAgICAgICBBbiBpbnZhbGlkIEVMRiBmaWxl
IGhlYWRlciB3YXMgZm91bmQuCisgICAgICAgICIiIgorCisgICAgRUxGX01BR0lDX05VTUJFUiA9
IDB4N0Y0NTRDNDYKKyAgICBFTEZDTEFTUzMyID0gMQorICAgIEVMRkNMQVNTNjQgPSAyCisgICAg
RUxGREFUQTJMU0IgPSAxCisgICAgRUxGREFUQTJNU0IgPSAyCisgICAgRU1fMzg2ID0gMworICAg
IEVNX1MzOTAgPSAyMgorICAgIEVNX0FSTSA9IDQwCisgICAgRU1fWDg2XzY0ID0gNjIKKyAgICBF
Rl9BUk1fQUJJTUFTSyA9IDB4RkYwMDAwMDAKKyAgICBFRl9BUk1fQUJJX1ZFUjUgPSAweDA1MDAw
MDAwCisgICAgRUZfQVJNX0FCSV9GTE9BVF9IQVJEID0gMHgwMDAwMDQwMAorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZpbGUpOgorICAgICAgICAjIHR5cGU6IChJT1tieXRlc10pIC0+IE5vbmUK
KyAgICAgICAgZGVmIHVucGFjayhmbXQpOgorICAgICAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBp
bnQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAocmVzdWx0LCkgPSBzdHJ1Y3Qu
dW5wYWNrKAorICAgICAgICAgICAgICAgICAgICBmbXQsIGZpbGUucmVhZChzdHJ1Y3QuY2FsY3Np
emUoZm10KSkKKyAgICAgICAgICAgICAgICApICAjIHR5cGU6IChpbnQsICkKKyAgICAgICAgICAg
IGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgX0VMRkZpbGVIZWFk
ZXIuX0ludmFsaWRFTEZGaWxlSGVhZGVyKCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKwor
ICAgICAgICBzZWxmLmVfaWRlbnRfbWFnaWMgPSB1bnBhY2soIj5JIikKKyAgICAgICAgaWYgc2Vs
Zi5lX2lkZW50X21hZ2ljICE9IHNlbGYuRUxGX01BR0lDX05VTUJFUjoKKyAgICAgICAgICAgIHJh
aXNlIF9FTEZGaWxlSGVhZGVyLl9JbnZhbGlkRUxGRmlsZUhlYWRlcigpCisgICAgICAgIHNlbGYu
ZV9pZGVudF9jbGFzcyA9IHVucGFjaygiQiIpCisgICAgICAgIGlmIHNlbGYuZV9pZGVudF9jbGFz
cyBub3QgaW4ge3NlbGYuRUxGQ0xBU1MzMiwgc2VsZi5FTEZDTEFTUzY0fToKKyAgICAgICAgICAg
IHJhaXNlIF9FTEZGaWxlSGVhZGVyLl9JbnZhbGlkRUxGRmlsZUhlYWRlcigpCisgICAgICAgIHNl
bGYuZV9pZGVudF9kYXRhID0gdW5wYWNrKCJCIikKKyAgICAgICAgaWYgc2VsZi5lX2lkZW50X2Rh
dGEgbm90IGluIHtzZWxmLkVMRkRBVEEyTFNCLCBzZWxmLkVMRkRBVEEyTVNCfToKKyAgICAgICAg
ICAgIHJhaXNlIF9FTEZGaWxlSGVhZGVyLl9JbnZhbGlkRUxGRmlsZUhlYWRlcigpCisgICAgICAg
IHNlbGYuZV9pZGVudF92ZXJzaW9uID0gdW5wYWNrKCJCIikKKyAgICAgICAgc2VsZi5lX2lkZW50
X29zYWJpID0gdW5wYWNrKCJCIikKKyAgICAgICAgc2VsZi5lX2lkZW50X2FiaXZlcnNpb24gPSB1
bnBhY2soIkIiKQorICAgICAgICBzZWxmLmVfaWRlbnRfcGFkID0gZmlsZS5yZWFkKDcpCisgICAg
ICAgIGZvcm1hdF9oID0gIjxIIiBpZiBzZWxmLmVfaWRlbnRfZGF0YSA9PSBzZWxmLkVMRkRBVEEy
TFNCIGVsc2UgIj5IIgorICAgICAgICBmb3JtYXRfaSA9ICI8SSIgaWYgc2VsZi5lX2lkZW50X2Rh
dGEgPT0gc2VsZi5FTEZEQVRBMkxTQiBlbHNlICI+SSIKKyAgICAgICAgZm9ybWF0X3EgPSAiPFEi
IGlmIHNlbGYuZV9pZGVudF9kYXRhID09IHNlbGYuRUxGREFUQTJMU0IgZWxzZSAiPlEiCisgICAg
ICAgIGZvcm1hdF9wID0gZm9ybWF0X2kgaWYgc2VsZi5lX2lkZW50X2NsYXNzID09IHNlbGYuRUxG
Q0xBU1MzMiBlbHNlIGZvcm1hdF9xCisgICAgICAgIHNlbGYuZV90eXBlID0gdW5wYWNrKGZvcm1h
dF9oKQorICAgICAgICBzZWxmLmVfbWFjaGluZSA9IHVucGFjayhmb3JtYXRfaCkKKyAgICAgICAg
c2VsZi5lX3ZlcnNpb24gPSB1bnBhY2soZm9ybWF0X2kpCisgICAgICAgIHNlbGYuZV9lbnRyeSA9
IHVucGFjayhmb3JtYXRfcCkKKyAgICAgICAgc2VsZi5lX3Bob2ZmID0gdW5wYWNrKGZvcm1hdF9w
KQorICAgICAgICBzZWxmLmVfc2hvZmYgPSB1bnBhY2soZm9ybWF0X3ApCisgICAgICAgIHNlbGYu
ZV9mbGFncyA9IHVucGFjayhmb3JtYXRfaSkKKyAgICAgICAgc2VsZi5lX2Voc2l6ZSA9IHVucGFj
ayhmb3JtYXRfaCkKKyAgICAgICAgc2VsZi5lX3BoZW50c2l6ZSA9IHVucGFjayhmb3JtYXRfaCkK
KyAgICAgICAgc2VsZi5lX3BobnVtID0gdW5wYWNrKGZvcm1hdF9oKQorICAgICAgICBzZWxmLmVf
c2hlbnRzaXplID0gdW5wYWNrKGZvcm1hdF9oKQorICAgICAgICBzZWxmLmVfc2hudW0gPSB1bnBh
Y2soZm9ybWF0X2gpCisgICAgICAgIHNlbGYuZV9zaHN0cm5keCA9IHVucGFjayhmb3JtYXRfaCkK
KworCitkZWYgX2dldF9lbGZfaGVhZGVyKCk6CisgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtf
RUxGRmlsZUhlYWRlcl0KKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihzeXMuZXhlY3V0YWJs
ZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGVsZl9oZWFkZXIgPSBfRUxGRmlsZUhlYWRlcihm
KQorICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvciwgVHlwZUVycm9yLCBfRUxGRmlsZUhlYWRl
ci5fSW52YWxpZEVMRkZpbGVIZWFkZXIpOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVy
biBlbGZfaGVhZGVyCisKKworZGVmIF9pc19saW51eF9hcm1oZigpOgorICAgICMgdHlwZTogKCkg
LT4gYm9vbAorICAgICMgaGFyZC1mbG9hdCBBQkkgY2FuIGJlIGRldGVjdGVkIGZyb20gdGhlIEVM
RiBoZWFkZXIgb2YgdGhlIHJ1bm5pbmcKKyAgICAjIHByb2Nlc3MKKyAgICAjIGh0dHBzOi8vc3Rh
dGljLmRvY3MuYXJtLmNvbS9paGkwMDQ0L2cvYWFlbGYzMi5wZGYKKyAgICBlbGZfaGVhZGVyID0g
X2dldF9lbGZfaGVhZGVyKCkKKyAgICBpZiBlbGZfaGVhZGVyIGlzIE5vbmU6CisgICAgICAgIHJl
dHVybiBGYWxzZQorICAgIHJlc3VsdCA9IGVsZl9oZWFkZXIuZV9pZGVudF9jbGFzcyA9PSBlbGZf
aGVhZGVyLkVMRkNMQVNTMzIKKyAgICByZXN1bHQgJj0gZWxmX2hlYWRlci5lX2lkZW50X2RhdGEg
PT0gZWxmX2hlYWRlci5FTEZEQVRBMkxTQgorICAgIHJlc3VsdCAmPSBlbGZfaGVhZGVyLmVfbWFj
aGluZSA9PSBlbGZfaGVhZGVyLkVNX0FSTQorICAgIHJlc3VsdCAmPSAoCisgICAgICAgIGVsZl9o
ZWFkZXIuZV9mbGFncyAmIGVsZl9oZWFkZXIuRUZfQVJNX0FCSU1BU0sKKyAgICApID09IGVsZl9o
ZWFkZXIuRUZfQVJNX0FCSV9WRVI1CisgICAgcmVzdWx0ICY9ICgKKyAgICAgICAgZWxmX2hlYWRl
ci5lX2ZsYWdzICYgZWxmX2hlYWRlci5FRl9BUk1fQUJJX0ZMT0FUX0hBUkQKKyAgICApID09IGVs
Zl9oZWFkZXIuRUZfQVJNX0FCSV9GTE9BVF9IQVJECisgICAgcmV0dXJuIHJlc3VsdAorCisKK2Rl
ZiBfaXNfbGludXhfaTY4NigpOgorICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgIGVsZl9oZWFk
ZXIgPSBfZ2V0X2VsZl9oZWFkZXIoKQorICAgIGlmIGVsZl9oZWFkZXIgaXMgTm9uZToKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgcmVzdWx0ID0gZWxmX2hlYWRlci5lX2lkZW50X2NsYXNzID09
IGVsZl9oZWFkZXIuRUxGQ0xBU1MzMgorICAgIHJlc3VsdCAmPSBlbGZfaGVhZGVyLmVfaWRlbnRf
ZGF0YSA9PSBlbGZfaGVhZGVyLkVMRkRBVEEyTFNCCisgICAgcmVzdWx0ICY9IGVsZl9oZWFkZXIu
ZV9tYWNoaW5lID09IGVsZl9oZWFkZXIuRU1fMzg2CisgICAgcmV0dXJuIHJlc3VsdAorCisKK2Rl
ZiBfaGF2ZV9jb21wYXRpYmxlX21hbnlsaW51eF9hYmkoYXJjaCk6CisgICAgIyB0eXBlOiAoc3Ry
KSAtPiBib29sCisgICAgaWYgYXJjaCA9PSAiYXJtdjdsIjoKKyAgICAgICAgcmV0dXJuIF9pc19s
aW51eF9hcm1oZigpCisgICAgaWYgYXJjaCA9PSAiaTY4NiI6CisgICAgICAgIHJldHVybiBfaXNf
bGludXhfaTY4NigpCisgICAgcmV0dXJuIGFyY2ggaW4geyJ4ODZfNjQiLCAiYWFyY2g2NCIsICJw
cGM2NCIsICJwcGM2NGxlIiwgInMzOTB4In0KKworCitkZWYgX21hbnlsaW51eF90YWdzKGxpbnV4
LCBhcmNoKToKKyAgICAjIHR5cGU6IChzdHIsIHN0cikgLT4gSXRlcmF0b3Jbc3RyXQorICAgICMg
T2xkZXN0IGdsaWJjIHRvIGJlIHN1cHBvcnRlZCByZWdhcmRsZXNzIG9mIGFyY2hpdGVjdHVyZSBp
cyAoMiwgMTcpLgorICAgIHRvb19vbGRfZ2xpYmMyID0gZ2xpYmNWZXJzaW9uKDIsIDE2KQorICAg
IGlmIGFyY2ggaW4geyJ4ODZfNjQiLCAiaTY4NiJ9OgorICAgICAgICAjIE9uIHg4Ni9pNjg2IGFs
c28gb2xkZXN0IGdsaWJjIHRvIGJlIHN1cHBvcnRlZCBpcyAoMiwgNSkuCisgICAgICAgIHRvb19v
bGRfZ2xpYmMyID0gZ2xpYmNWZXJzaW9uKDIsIDQpCisgICAgY3VycmVudF9nbGliYyA9IGdsaWJj
VmVyc2lvbigqX2dldF9nbGliY192ZXJzaW9uKCkpCisgICAgZ2xpYmNfbWF4X2xpc3QgPSBbY3Vy
cmVudF9nbGliY10KKyAgICAjIFdlIGNhbiBhc3N1bWUgY29tcGF0aWJpbGl0eSBhY3Jvc3MgZ2xp
YmMgbWFqb3IgdmVyc2lvbnMuCisgICAgIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxh
L3Nob3dfYnVnLmNnaT9pZD0yNDYzNgorICAgICMKKyAgICAjIEJ1aWxkIGEgbGlzdCBvZiBtYXhp
bXVtIGdsaWJjIHZlcnNpb25zIHNvIHRoYXQgd2UgY2FuCisgICAgIyBvdXRwdXQgdGhlIGNhbm9u
aWNhbCBsaXN0IG9mIGFsbCBnbGliYyBmcm9tIGN1cnJlbnRfZ2xpYmMKKyAgICAjIGRvd24gdG8g
dG9vX29sZF9nbGliYzIsIGluY2x1ZGluZyBhbGwgaW50ZXJtZWRpYXJ5IHZlcnNpb25zLgorICAg
IGZvciBnbGliY19tYWpvciBpbiByYW5nZShjdXJyZW50X2dsaWJjLm1ham9yIC0gMSwgMSwgLTEp
OgorICAgICAgICBnbGliY19tYXhfbGlzdC5hcHBlbmQoZ2xpYmNWZXJzaW9uKGdsaWJjX21ham9y
LCBfTEFTVF9HTElCQ19NSU5PUltnbGliY19tYWpvcl0pKQorICAgIGZvciBnbGliY19tYXggaW4g
Z2xpYmNfbWF4X2xpc3Q6CisgICAgICAgIGlmIGdsaWJjX21heC5tYWpvciA9PSB0b29fb2xkX2ds
aWJjMi5tYWpvcjoKKyAgICAgICAgICAgIG1pbl9taW5vciA9IHRvb19vbGRfZ2xpYmMyLm1pbm9y
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZvciBvdGhlciBnbGliYyBtYWpvciB2ZXJz
aW9ucyBvbGRlc3Qgc3VwcG9ydGVkIGlzICh4LCAwKS4KKyAgICAgICAgICAgIG1pbl9taW5vciA9
IC0xCisgICAgICAgIGZvciBnbGliY19taW5vciBpbiByYW5nZShnbGliY19tYXgubWlub3IsIG1p
bl9taW5vciwgLTEpOgorICAgICAgICAgICAgZ2xpYmNfdmVyc2lvbiA9IChnbGliY19tYXgubWFq
b3IsIGdsaWJjX21pbm9yKQorICAgICAgICAgICAgdGFnID0gIm1hbnlsaW51eF97fV97fSIuZm9y
bWF0KCpnbGliY192ZXJzaW9uKQorICAgICAgICAgICAgaWYgX2lzX21hbnlsaW51eF9jb21wYXRp
YmxlKHRhZywgYXJjaCwgZ2xpYmNfdmVyc2lvbik6CisgICAgICAgICAgICAgICAgeWllbGQgbGlu
dXgucmVwbGFjZSgibGludXgiLCB0YWcpCisgICAgICAgICAgICAjIEhhbmRsZSB0aGUgbGVnYWN5
IG1hbnlsaW51eDEsIG1hbnlsaW51eDIwMTAsIG1hbnlsaW51eDIwMTQgdGFncy4KKyAgICAgICAg
ICAgIGlmIGdsaWJjX3ZlcnNpb24gaW4gX0xFR0FDWV9NQU5ZTElOVVhfTUFQOgorICAgICAgICAg
ICAgICAgIGxlZ2FjeV90YWcgPSBfTEVHQUNZX01BTllMSU5VWF9NQVBbZ2xpYmNfdmVyc2lvbl0K
KyAgICAgICAgICAgICAgICBpZiBfaXNfbWFueWxpbnV4X2NvbXBhdGlibGUobGVnYWN5X3RhZywg
YXJjaCwgZ2xpYmNfdmVyc2lvbik6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbnV4LnJl
cGxhY2UoImxpbnV4IiwgbGVnYWN5X3RhZykKKworCitkZWYgX2xpbnV4X3BsYXRmb3Jtcyhpc18z
MmJpdD1fMzJfQklUX0lOVEVSUFJFVEVSKToKKyAgICAjIHR5cGU6IChib29sKSAtPiBJdGVyYXRv
cltzdHJdCisgICAgbGludXggPSBfbm9ybWFsaXplX3N0cmluZyhkaXN0dXRpbHMudXRpbC5nZXRf
cGxhdGZvcm0oKSkKKyAgICBpZiBpc18zMmJpdDoKKyAgICAgICAgaWYgbGludXggPT0gImxpbnV4
X3g4Nl82NCI6CisgICAgICAgICAgICBsaW51eCA9ICJsaW51eF9pNjg2IgorICAgICAgICBlbGlm
IGxpbnV4ID09ICJsaW51eF9hYXJjaDY0IjoKKyAgICAgICAgICAgIGxpbnV4ID0gImxpbnV4X2Fy
bXY3bCIKKyAgICBfLCBhcmNoID0gbGludXguc3BsaXQoIl8iLCAxKQorICAgIGlmIF9oYXZlX2Nv
bXBhdGlibGVfbWFueWxpbnV4X2FiaShhcmNoKToKKyAgICAgICAgZm9yIHRhZyBpbiBfbWFueWxp
bnV4X3RhZ3MobGludXgsIGFyY2gpOgorICAgICAgICAgICAgeWllbGQgdGFnCisgICAgeWllbGQg
bGludXgKKworCitkZWYgX2dlbmVyaWNfcGxhdGZvcm1zKCk6CisgICAgIyB0eXBlOiAoKSAtPiBJ
dGVyYXRvcltzdHJdCisgICAgeWllbGQgX25vcm1hbGl6ZV9zdHJpbmcoZGlzdHV0aWxzLnV0aWwu
Z2V0X3BsYXRmb3JtKCkpCisKKworZGVmIF9wbGF0Zm9ybV90YWdzKCk6CisgICAgIyB0eXBlOiAo
KSAtPiBJdGVyYXRvcltzdHJdCisgICAgIiIiCisgICAgUHJvdmlkZXMgdGhlIHBsYXRmb3JtIHRh
Z3MgZm9yIHRoaXMgaW5zdGFsbGF0aW9uLgorICAgICIiIgorICAgIGlmIHBsYXRmb3JtLnN5c3Rl
bSgpID09ICJEYXJ3aW4iOgorICAgICAgICByZXR1cm4gbWFjX3BsYXRmb3JtcygpCisgICAgZWxp
ZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAiTGludXgiOgorICAgICAgICByZXR1cm4gX2xpbnV4X3Bs
YXRmb3JtcygpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIF9nZW5lcmljX3BsYXRmb3Jtcygp
CisKKworZGVmIGludGVycHJldGVyX25hbWUoKToKKyAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAg
ICIiIgorICAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIuCisg
ICAgIiIiCisgICAgdHJ5OgorICAgICAgICBuYW1lID0gc3lzLmltcGxlbWVudGF0aW9uLm5hbWUg
ICMgdHlwZTogaWdub3JlCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBwcmFnbWE6IG5v
IGNvdmVyCisgICAgICAgICMgUHl0aG9uIDIuNyBjb21wYXRpYmlsaXR5LgorICAgICAgICBuYW1l
ID0gcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCkubG93ZXIoKQorICAgIHJldHVybiBJ
TlRFUlBSRVRFUl9TSE9SVF9OQU1FUy5nZXQobmFtZSkgb3IgbmFtZQorCisKK2RlZiBpbnRlcnBy
ZXRlcl92ZXJzaW9uKCoqa3dhcmdzKToKKyAgICAjIHR5cGU6IChib29sKSAtPiBzdHIKKyAgICAi
IiIKKyAgICBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW5uaW5nIGludGVycHJldGVyLgor
ICAgICIiIgorICAgIHdhcm4gPSBfd2Fybl9rZXl3b3JkX3BhcmFtZXRlcigiaW50ZXJwcmV0ZXJf
dmVyc2lvbiIsIGt3YXJncykKKyAgICB2ZXJzaW9uID0gX2dldF9jb25maWdfdmFyKCJweV92ZXJz
aW9uX25vZG90Iiwgd2Fybj13YXJuKQorICAgIGlmIHZlcnNpb246CisgICAgICAgIHZlcnNpb24g
PSBzdHIodmVyc2lvbikKKyAgICBlbHNlOgorICAgICAgICB2ZXJzaW9uID0gX3ZlcnNpb25fbm9k
b3Qoc3lzLnZlcnNpb25faW5mb1s6Ml0pCisgICAgcmV0dXJuIHZlcnNpb24KKworCitkZWYgX3Zl
cnNpb25fbm9kb3QodmVyc2lvbik6CisgICAgIyB0eXBlOiAoUHl0aG9uVmVyc2lvbikgLT4gc3Ry
CisgICAgaWYgYW55KHYgPj0gMTAgZm9yIHYgaW4gdmVyc2lvbik6CisgICAgICAgIHNlcCA9ICJf
IgorICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICIiCisgICAgcmV0dXJuIHNlcC5qb2luKG1hcChz
dHIsIHZlcnNpb24pKQorCisKK2RlZiBzeXNfdGFncygqKmt3YXJncyk6CisgICAgIyB0eXBlOiAo
Ym9vbCkgLT4gSXRlcmF0b3JbVGFnXQorICAgICIiIgorICAgIFJldHVybnMgdGhlIHNlcXVlbmNl
IG9mIHRhZyB0cmlwbGVzIGZvciB0aGUgcnVubmluZyBpbnRlcnByZXRlci4KKworICAgIFRoZSBv
cmRlciBvZiB0aGUgc2VxdWVuY2UgY29ycmVzcG9uZHMgdG8gcHJpb3JpdHkgb3JkZXIgZm9yIHRo
ZQorICAgIGludGVycHJldGVyLCBmcm9tIG1vc3QgdG8gbGVhc3QgaW1wb3J0YW50LgorICAgICIi
IgorICAgIHdhcm4gPSBfd2Fybl9rZXl3b3JkX3BhcmFtZXRlcigic3lzX3RhZ3MiLCBrd2FyZ3Mp
CisKKyAgICBpbnRlcnBfbmFtZSA9IGludGVycHJldGVyX25hbWUoKQorICAgIGlmIGludGVycF9u
YW1lID09ICJjcCI6CisgICAgICAgIGZvciB0YWcgaW4gY3B5dGhvbl90YWdzKHdhcm49d2Fybik6
CisgICAgICAgICAgICB5aWVsZCB0YWcKKyAgICBlbHNlOgorICAgICAgICBmb3IgdGFnIGluIGdl
bmVyaWNfdGFncygpOgorICAgICAgICAgICAgeWllbGQgdGFnCisKKyAgICBmb3IgdGFnIGluIGNv
bXBhdGlibGVfdGFncygpOgorICAgICAgICB5aWVsZCB0YWcKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL3BhY2thZ2luZy91dGlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy91dGls
cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkyYzdiMDBiNzc4
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy91dGlscy5weQpA
QCAtMCwwICsxLDY3IEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBM
aWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRv
cnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisKK2ltcG9ydCByZQorCitmcm9t
IC5fdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5HLCBjYXN0Citmcm9tIC52ZXJzaW9uIGltcG9y
dCBJbnZhbGlkVmVyc2lvbiwgVmVyc2lvbgorCitpZiBUWVBFX0NIRUNLSU5HOiAgIyBwcmFnbWE6
IG5vIGNvdmVyCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE5ld1R5cGUsIFVuaW9uCisKKyAgICBO
b3JtYWxpemVkTmFtZSA9IE5ld1R5cGUoIk5vcm1hbGl6ZWROYW1lIiwgc3RyKQorZWxzZToKKyAg
ICBOb3JtYWxpemVkTmFtZSA9IHN0cgorCitfY2Fub25pY2FsaXplX3JlZ2V4ID0gcmUuY29tcGls
ZShyIlstXy5dKyIpCisKKworZGVmIGNhbm9uaWNhbGl6ZV9uYW1lKG5hbWUpOgorICAgICMgdHlw
ZTogKHN0cikgLT4gTm9ybWFsaXplZE5hbWUKKyAgICAjIFRoaXMgaXMgdGFrZW4gZnJvbSBQRVAg
NTAzLgorICAgIHZhbHVlID0gX2Nhbm9uaWNhbGl6ZV9yZWdleC5zdWIoIi0iLCBuYW1lKS5sb3dl
cigpCisgICAgcmV0dXJuIGNhc3QoIk5vcm1hbGl6ZWROYW1lIiwgdmFsdWUpCisKKworZGVmIGNh
bm9uaWNhbGl6ZV92ZXJzaW9uKHZlcnNpb24pOgorICAgICMgdHlwZTogKFVuaW9uW1ZlcnNpb24s
IHN0cl0pIC0+IFVuaW9uW1ZlcnNpb24sIHN0cl0KKyAgICAiIiIKKyAgICBUaGlzIGlzIHZlcnkg
c2ltaWxhciB0byBWZXJzaW9uLl9fc3RyX18sIGJ1dCBoYXMgb25lIHN1YnRsZSBkaWZmZXJlbmNl
CisgICAgd2l0aCB0aGUgd2F5IGl0IGhhbmRsZXMgdGhlIHJlbGVhc2Ugc2VnbWVudC4KKyAgICAi
IiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZSh2ZXJzaW9uLCBWZXJzaW9uKToKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdmVyc2lvbiA9IFZlcnNpb24odmVyc2lvbikKKyAgICAgICAgZXhjZXB0
IEludmFsaWRWZXJzaW9uOgorICAgICAgICAgICAgIyBMZWdhY3kgdmVyc2lvbnMgY2Fubm90IGJl
IG5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uCisKKyAgICBwYXJ0cyA9IFtd
CisKKyAgICAjIEVwb2NoCisgICAgaWYgdmVyc2lvbi5lcG9jaCAhPSAwOgorICAgICAgICBwYXJ0
cy5hcHBlbmQoInswfSEiLmZvcm1hdCh2ZXJzaW9uLmVwb2NoKSkKKworICAgICMgUmVsZWFzZSBz
ZWdtZW50CisgICAgIyBOQjogVGhpcyBzdHJpcHMgdHJhaWxpbmcgJy4wJ3MgdG8gbm9ybWFsaXpl
CisgICAgcGFydHMuYXBwZW5kKHJlLnN1YihyIihcLjApKyQiLCAiIiwgIi4iLmpvaW4oc3RyKHgp
IGZvciB4IGluIHZlcnNpb24ucmVsZWFzZSkpKQorCisgICAgIyBQcmUtcmVsZWFzZQorICAgIGlm
IHZlcnNpb24ucHJlIGlzIG5vdCBOb25lOgorICAgICAgICBwYXJ0cy5hcHBlbmQoIiIuam9pbihz
dHIoeCkgZm9yIHggaW4gdmVyc2lvbi5wcmUpKQorCisgICAgIyBQb3N0LXJlbGVhc2UKKyAgICBp
ZiB2ZXJzaW9uLnBvc3QgaXMgbm90IE5vbmU6CisgICAgICAgIHBhcnRzLmFwcGVuZCgiLnBvc3R7
MH0iLmZvcm1hdCh2ZXJzaW9uLnBvc3QpKQorCisgICAgIyBEZXZlbG9wbWVudCByZWxlYXNlCisg
ICAgaWYgdmVyc2lvbi5kZXYgaXMgbm90IE5vbmU6CisgICAgICAgIHBhcnRzLmFwcGVuZCgiLmRl
dnswfSIuZm9ybWF0KHZlcnNpb24uZGV2KSkKKworICAgICMgTG9jYWwgdmVyc2lvbiBzZWdtZW50
CisgICAgaWYgdmVyc2lvbi5sb2NhbCBpcyBub3QgTm9uZToKKyAgICAgICAgcGFydHMuYXBwZW5k
KCIrezB9Ii5mb3JtYXQodmVyc2lvbi5sb2NhbCkpCisKKyAgICByZXR1cm4gIiIuam9pbihwYXJ0
cykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy92ZXJzaW9uLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvcGFja2FnaW5nL3ZlcnNpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi41MTdkOTFmMjQ4NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9wYWNrYWdpbmcvdmVyc2lvbi5weQpAQCAtMCwwICsxLDU1NiBAQAorIyBUaGlzIGZp
bGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxz
LgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmlu
dF9mdW5jdGlvbgorCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9y
dCByZQoraW1wb3J0IHdhcm5pbmdzCisKK2Zyb20gLl9zdHJ1Y3R1cmVzIGltcG9ydCBJbmZpbml0
eSwgTmVnYXRpdmVJbmZpbml0eQorZnJvbSAuX3R5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORwor
CitpZiBUWVBFX0NIRUNLSU5HOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgZnJvbSB0eXBpbmcg
aW1wb3J0IENhbGxhYmxlLCBJdGVyYXRvciwgTGlzdCwgT3B0aW9uYWwsIFN1cHBvcnRzSW50LCBU
dXBsZSwgVW5pb24KKworICAgIGZyb20gLl9zdHJ1Y3R1cmVzIGltcG9ydCBJbmZpbml0eVR5cGUs
IE5lZ2F0aXZlSW5maW5pdHlUeXBlCisKKyAgICBJbmZpbml0ZVR5cGVzID0gVW5pb25bSW5maW5p
dHlUeXBlLCBOZWdhdGl2ZUluZmluaXR5VHlwZV0KKyAgICBQcmVQb3N0RGV2VHlwZSA9IFVuaW9u
W0luZmluaXRlVHlwZXMsIFR1cGxlW3N0ciwgaW50XV0KKyAgICBTdWJMb2NhbFR5cGUgPSBVbmlv
bltJbmZpbml0ZVR5cGVzLCBpbnQsIHN0cl0KKyAgICBMb2NhbFR5cGUgPSBVbmlvblsKKyAgICAg
ICAgTmVnYXRpdmVJbmZpbml0eVR5cGUsCisgICAgICAgIFR1cGxlWworICAgICAgICAgICAgVW5p
b25bCisgICAgICAgICAgICAgICAgU3ViTG9jYWxUeXBlLAorICAgICAgICAgICAgICAgIFR1cGxl
W1N1YkxvY2FsVHlwZSwgc3RyXSwKKyAgICAgICAgICAgICAgICBUdXBsZVtOZWdhdGl2ZUluZmlu
aXR5VHlwZSwgU3ViTG9jYWxUeXBlXSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAuLi4s
CisgICAgICAgIF0sCisgICAgXQorICAgIENtcEtleSA9IFR1cGxlWworICAgICAgICBpbnQsIFR1
cGxlW2ludCwgLi4uXSwgUHJlUG9zdERldlR5cGUsIFByZVBvc3REZXZUeXBlLCBQcmVQb3N0RGV2
VHlwZSwgTG9jYWxUeXBlCisgICAgXQorICAgIExlZ2FjeUNtcEtleSA9IFR1cGxlW2ludCwgVHVw
bGVbc3RyLCAuLi5dXQorICAgIFZlcnNpb25Db21wYXJpc29uTWV0aG9kID0gQ2FsbGFibGVbCisg
ICAgICAgIFtVbmlvbltDbXBLZXksIExlZ2FjeUNtcEtleV0sIFVuaW9uW0NtcEtleSwgTGVnYWN5
Q21wS2V5XV0sIGJvb2wKKyAgICBdCisKK19fYWxsX18gPSBbInBhcnNlIiwgIlZlcnNpb24iLCAi
TGVnYWN5VmVyc2lvbiIsICJJbnZhbGlkVmVyc2lvbiIsICJWRVJTSU9OX1BBVFRFUk4iXQorCisK
K19WZXJzaW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgKKyAgICAiX1ZlcnNpb24iLCBbImVw
b2NoIiwgInJlbGVhc2UiLCAiZGV2IiwgInByZSIsICJwb3N0IiwgImxvY2FsIl0KKykKKworCitk
ZWYgcGFyc2UodmVyc2lvbik6CisgICAgIyB0eXBlOiAoc3RyKSAtPiBVbmlvbltMZWdhY3lWZXJz
aW9uLCBWZXJzaW9uXQorICAgICIiIgorICAgIFBhcnNlIHRoZSBnaXZlbiB2ZXJzaW9uIHN0cmlu
ZyBhbmQgcmV0dXJuIGVpdGhlciBhIDpjbGFzczpgVmVyc2lvbmAgb2JqZWN0CisgICAgb3IgYSA6
Y2xhc3M6YExlZ2FjeVZlcnNpb25gIG9iamVjdCBkZXBlbmRpbmcgb24gaWYgdGhlIGdpdmVuIHZl
cnNpb24gaXMKKyAgICBhIHZhbGlkIFBFUCA0NDAgdmVyc2lvbiBvciBhIGxlZ2FjeSB2ZXJzaW9u
LgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIFZlcnNpb24odmVyc2lvbikKKyAg
ICBleGNlcHQgSW52YWxpZFZlcnNpb246CisgICAgICAgIHJldHVybiBMZWdhY3lWZXJzaW9uKHZl
cnNpb24pCisKKworY2xhc3MgSW52YWxpZFZlcnNpb24oVmFsdWVFcnJvcik6CisgICAgIiIiCisg
ICAgQW4gaW52YWxpZCB2ZXJzaW9uIHdhcyBmb3VuZCwgdXNlcnMgc2hvdWxkIHJlZmVyIHRvIFBF
UCA0NDAuCisgICAgIiIiCisKKworY2xhc3MgX0Jhc2VWZXJzaW9uKG9iamVjdCk6CisgICAgX2tl
eSA9IE5vbmUgICMgdHlwZTogVW5pb25bQ21wS2V5LCBMZWdhY3lDbXBLZXldCisKKyAgICBkZWYg
X19oYXNoX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gaW50CisgICAgICAgIHJldHVy
biBoYXNoKHNlbGYuX2tleSkKKworICAgICMgUGxlYXNlIGtlZXAgdGhlIGR1cGxpY2F0ZWQgYGlz
aW5zdGFuY2VgIGNoZWNrCisgICAgIyBpbiB0aGUgc2l4IGNvbXBhcmlzb25zIGhlcmV1bmRlcgor
ICAgICMgdW5sZXNzIHlvdSBmaW5kIGEgd2F5IHRvIGF2b2lkIGFkZGluZyBvdmVyaGVhZCBmdW5j
dGlvbiBjYWxscy4KKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBl
OiAoX0Jhc2VWZXJzaW9uKSAtPiBib29sCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVy
LCBfQmFzZVZlcnNpb24pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2tleSA8IG90aGVyLl9rZXkKKworICAgIGRlZiBfX2xlX18oc2Vs
Ziwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChfQmFzZVZlcnNpb24pIC0+IGJvb2wKKyAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlVmVyc2lvbik6CisgICAgICAgICAgICBy
ZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICByZXR1cm4gc2VsZi5fa2V5IDw9IG90aGVy
Ll9rZXkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChv
YmplY3QpIC0+IGJvb2wKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlVmVy
c2lvbik6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICByZXR1
cm4gc2VsZi5fa2V5ID09IG90aGVyLl9rZXkKKworICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIp
OgorICAgICAgICAjIHR5cGU6IChfQmFzZVZlcnNpb24pIC0+IGJvb2wKKyAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlVmVyc2lvbik6CisgICAgICAgICAgICByZXR1cm4gTm90
SW1wbGVtZW50ZWQKKworICAgICAgICByZXR1cm4gc2VsZi5fa2V5ID49IG90aGVyLl9rZXkKKwor
ICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChfQmFzZVZlcnNp
b24pIC0+IGJvb2wKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlVmVyc2lv
bik6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICByZXR1cm4g
c2VsZi5fa2V5ID4gb3RoZXIuX2tleQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gYm9vbAorICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShvdGhlciwgX0Jhc2VWZXJzaW9uKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRl
ZAorCisgICAgICAgIHJldHVybiBzZWxmLl9rZXkgIT0gb3RoZXIuX2tleQorCisKK2NsYXNzIExl
Z2FjeVZlcnNpb24oX0Jhc2VWZXJzaW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lv
bik6CisgICAgICAgICMgdHlwZTogKHN0cikgLT4gTm9uZQorICAgICAgICBzZWxmLl92ZXJzaW9u
ID0gc3RyKHZlcnNpb24pCisgICAgICAgIHNlbGYuX2tleSA9IF9sZWdhY3lfY21wa2V5KHNlbGYu
X3ZlcnNpb24pCisKKyAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICJDcmVhdGlu
ZyBhIExlZ2FjeVZlcnNpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSAiCisgICAg
ICAgICAgICAicmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlIiwKKyAgICAgICAgICAg
IERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9u
CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisg
ICAgICAgIHJldHVybiAiPExlZ2FjeVZlcnNpb24oezB9KT4iLmZvcm1hdChyZXByKHN0cihzZWxm
KSkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHVibGljKHNlbGYpOgorICAgICAgICAjIHR5
cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIGJhc2VfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBz
dHIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRl
ZiBlcG9jaChzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJu
IC0xCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgIyB0
eXBlOiAoKSAtPiBOb25lCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgcHJlKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE5vbmUKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwb3N0KHNlbGYpOgorICAgICAgICAj
IHR5cGU6ICgpIC0+IE5vbmUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBkZXYoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTm9uZQorICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsKHNlbGYpOgorICAgICAg
ICAjIHR5cGU6ICgpIC0+IE5vbmUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBpc19wcmVyZWxlYXNlKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGJv
b2wKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcG9z
dHJlbGVhc2Uoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19kZXZyZWxlYXNlKHNlbGYpOgor
ICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworX2xl
Z2FjeV92ZXJzaW9uX2NvbXBvbmVudF9yZSA9IHJlLmNvbXBpbGUociIoXGQrIHwgW2Etel0rIHwg
XC58IC0pIiwgcmUuVkVSQk9TRSkKKworX2xlZ2FjeV92ZXJzaW9uX3JlcGxhY2VtZW50X21hcCA9
IHsKKyAgICAicHJlIjogImMiLAorICAgICJwcmV2aWV3IjogImMiLAorICAgICItIjogImZpbmFs
LSIsCisgICAgInJjIjogImMiLAorICAgICJkZXYiOiAiQCIsCit9CisKKworZGVmIF9wYXJzZV92
ZXJzaW9uX3BhcnRzKHMpOgorICAgICMgdHlwZTogKHN0cikgLT4gSXRlcmF0b3Jbc3RyXQorICAg
IGZvciBwYXJ0IGluIF9sZWdhY3lfdmVyc2lvbl9jb21wb25lbnRfcmUuc3BsaXQocyk6CisgICAg
ICAgIHBhcnQgPSBfbGVnYWN5X3ZlcnNpb25fcmVwbGFjZW1lbnRfbWFwLmdldChwYXJ0LCBwYXJ0
KQorCisgICAgICAgIGlmIG5vdCBwYXJ0IG9yIHBhcnQgPT0gIi4iOgorICAgICAgICAgICAgY29u
dGludWUKKworICAgICAgICBpZiBwYXJ0WzoxXSBpbiAiMDEyMzQ1Njc4OSI6CisgICAgICAgICAg
ICAjIHBhZCBmb3IgbnVtZXJpYyBjb21wYXJpc29uCisgICAgICAgICAgICB5aWVsZCBwYXJ0Lnpm
aWxsKDgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB5aWVsZCAiKiIgKyBwYXJ0CisKKyAg
ICAjIGVuc3VyZSB0aGF0IGFscGhhL2JldGEvY2FuZGlkYXRlIGFyZSBiZWZvcmUgZmluYWwKKyAg
ICB5aWVsZCAiKmZpbmFsIgorCisKK2RlZiBfbGVnYWN5X2NtcGtleSh2ZXJzaW9uKToKKyAgICAj
IHR5cGU6IChzdHIpIC0+IExlZ2FjeUNtcEtleQorCisgICAgIyBXZSBoYXJkY29kZSBhbiBlcG9j
aCBvZiAtMSBoZXJlLiBBIFBFUCA0NDAgdmVyc2lvbiBjYW4gb25seSBoYXZlIGEgZXBvY2gKKyAg
ICAjIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLiBUaGlzIHdpbGwgZWZmZWN0aXZlbHkgcHV0
IHRoZSBMZWdhY3lWZXJzaW9uLAorICAgICMgd2hpY2ggdXNlcyB0aGUgZGVmYWN0byBzdGFuZGFy
ZCBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGJ5IHNldHVwdG9vbHMsCisgICAgIyBhcyBiZWZvcmUg
YWxsIFBFUCA0NDAgdmVyc2lvbnMuCisgICAgZXBvY2ggPSAtMQorCisgICAgIyBUaGlzIHNjaGVt
ZSBpcyB0YWtlbiBmcm9tIHBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbiBzZXR1cHRvb2xzIHBy
aW9yIHRvCisgICAgIyBpdCdzIGFkb3B0aW9uIG9mIHRoZSBwYWNrYWdpbmcgbGlicmFyeS4KKyAg
ICBwYXJ0cyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIGZvciBwYXJ0IGluIF9wYXJzZV92
ZXJzaW9uX3BhcnRzKHZlcnNpb24ubG93ZXIoKSk6CisgICAgICAgIGlmIHBhcnQuc3RhcnRzd2l0
aCgiKiIpOgorICAgICAgICAgICAgIyByZW1vdmUgIi0iIGJlZm9yZSBhIHByZXJlbGVhc2UgdGFn
CisgICAgICAgICAgICBpZiBwYXJ0IDwgIipmaW5hbCI6CisgICAgICAgICAgICAgICAgd2hpbGUg
cGFydHMgYW5kIHBhcnRzWy0xXSA9PSAiKmZpbmFsLSI6CisgICAgICAgICAgICAgICAgICAgIHBh
cnRzLnBvcCgpCisKKyAgICAgICAgICAgICMgcmVtb3ZlIHRyYWlsaW5nIHplcm9zIGZyb20gZWFj
aCBzZXJpZXMgb2YgbnVtZXJpYyBwYXJ0cworICAgICAgICAgICAgd2hpbGUgcGFydHMgYW5kIHBh
cnRzWy0xXSA9PSAiMDAwMDAwMDAiOgorICAgICAgICAgICAgICAgIHBhcnRzLnBvcCgpCisKKyAg
ICAgICAgcGFydHMuYXBwZW5kKHBhcnQpCisKKyAgICByZXR1cm4gZXBvY2gsIHR1cGxlKHBhcnRz
KQorCisKKyMgRGVsaWJlcmF0ZWx5IG5vdCBhbmNob3JlZCB0byB0aGUgc3RhcnQgYW5kIGVuZCBv
ZiB0aGUgc3RyaW5nLCB0byBtYWtlIGl0CisjIGVhc2llciBmb3IgM3JkIHBhcnR5IGNvZGUgdG8g
cmV1c2UKK1ZFUlNJT05fUEFUVEVSTiA9IHIiIiIKKyAgICB2PworICAgICg/OgorICAgICAgICAo
PzooP1A8ZXBvY2g+WzAtOV0rKSEpPyAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXBvY2gK
KyAgICAgICAgKD9QPHJlbGVhc2U+WzAtOV0rKD86XC5bMC05XSspKikgICAgICAgICAgICAgICAg
ICAjIHJlbGVhc2Ugc2VnbWVudAorICAgICAgICAoP1A8cHJlPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgcHJlLXJlbGVhc2UKKyAgICAgICAgICAgIFstX1wuXT8K
KyAgICAgICAgICAgICg/UDxwcmVfbD4oYXxifGN8cmN8YWxwaGF8YmV0YXxwcmV8cHJldmlldykp
CisgICAgICAgICAgICBbLV9cLl0/CisgICAgICAgICAgICAoP1A8cHJlX24+WzAtOV0rKT8KKyAg
ICAgICAgKT8KKyAgICAgICAgKD9QPHBvc3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIHBvc3QgcmVsZWFzZQorICAgICAgICAgICAgKD86LSg/UDxwb3N0X24xPlsw
LTldKykpCisgICAgICAgICAgICB8CisgICAgICAgICAgICAoPzoKKyAgICAgICAgICAgICAgICBb
LV9cLl0/CisgICAgICAgICAgICAgICAgKD9QPHBvc3RfbD5wb3N0fHJldnxyKQorICAgICAgICAg
ICAgICAgIFstX1wuXT8KKyAgICAgICAgICAgICAgICAoP1A8cG9zdF9uMj5bMC05XSspPworICAg
ICAgICAgICAgKQorICAgICAgICApPworICAgICAgICAoP1A8ZGV2PiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgZGV2IHJlbGVhc2UKKyAgICAgICAgICAgIFstX1wu
XT8KKyAgICAgICAgICAgICg/UDxkZXZfbD5kZXYpCisgICAgICAgICAgICBbLV9cLl0/CisgICAg
ICAgICAgICAoP1A8ZGV2X24+WzAtOV0rKT8KKyAgICAgICAgKT8KKyAgICApCisgICAgKD86XCso
P1A8bG9jYWw+W2EtejAtOV0rKD86Wy1fXC5dW2EtejAtOV0rKSopKT8gICAgICAgIyBsb2NhbCB2
ZXJzaW9uCisiIiIKKworCitjbGFzcyBWZXJzaW9uKF9CYXNlVmVyc2lvbik6CisKKyAgICBfcmVn
ZXggPSByZS5jb21waWxlKHIiXlxzKiIgKyBWRVJTSU9OX1BBVFRFUk4gKyByIlxzKiQiLCByZS5W
RVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJzaW9u
KToKKyAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBOb25lCisKKyAgICAgICAgIyBWYWxpZGF0ZSB0
aGUgdmVyc2lvbiBhbmQgcGFyc2UgaXQgaW50byBwaWVjZXMKKyAgICAgICAgbWF0Y2ggPSBzZWxm
Ll9yZWdleC5zZWFyY2godmVyc2lvbikKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAg
ICAgcmFpc2UgSW52YWxpZFZlcnNpb24oIkludmFsaWQgdmVyc2lvbjogJ3swfSciLmZvcm1hdCh2
ZXJzaW9uKSkKKworICAgICAgICAjIFN0b3JlIHRoZSBwYXJzZWQgb3V0IHBpZWNlcyBvZiB0aGUg
dmVyc2lvbgorICAgICAgICBzZWxmLl92ZXJzaW9uID0gX1ZlcnNpb24oCisgICAgICAgICAgICBl
cG9jaD1pbnQobWF0Y2guZ3JvdXAoImVwb2NoIikpIGlmIG1hdGNoLmdyb3VwKCJlcG9jaCIpIGVs
c2UgMCwKKyAgICAgICAgICAgIHJlbGVhc2U9dHVwbGUoaW50KGkpIGZvciBpIGluIG1hdGNoLmdy
b3VwKCJyZWxlYXNlIikuc3BsaXQoIi4iKSksCisgICAgICAgICAgICBwcmU9X3BhcnNlX2xldHRl
cl92ZXJzaW9uKG1hdGNoLmdyb3VwKCJwcmVfbCIpLCBtYXRjaC5ncm91cCgicHJlX24iKSksCisg
ICAgICAgICAgICBwb3N0PV9wYXJzZV9sZXR0ZXJfdmVyc2lvbigKKyAgICAgICAgICAgICAgICBt
YXRjaC5ncm91cCgicG9zdF9sIiksIG1hdGNoLmdyb3VwKCJwb3N0X24xIikgb3IgbWF0Y2guZ3Jv
dXAoInBvc3RfbjIiKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGRldj1fcGFyc2VfbGV0
dGVyX3ZlcnNpb24obWF0Y2guZ3JvdXAoImRldl9sIiksIG1hdGNoLmdyb3VwKCJkZXZfbiIpKSwK
KyAgICAgICAgICAgIGxvY2FsPV9wYXJzZV9sb2NhbF92ZXJzaW9uKG1hdGNoLmdyb3VwKCJsb2Nh
bCIpKSwKKyAgICAgICAgKQorCisgICAgICAgICMgR2VuZXJhdGUgYSBrZXkgd2hpY2ggd2lsbCBi
ZSB1c2VkIGZvciBzb3J0aW5nCisgICAgICAgIHNlbGYuX2tleSA9IF9jbXBrZXkoCisgICAgICAg
ICAgICBzZWxmLl92ZXJzaW9uLmVwb2NoLAorICAgICAgICAgICAgc2VsZi5fdmVyc2lvbi5yZWxl
YXNlLAorICAgICAgICAgICAgc2VsZi5fdmVyc2lvbi5wcmUsCisgICAgICAgICAgICBzZWxmLl92
ZXJzaW9uLnBvc3QsCisgICAgICAgICAgICBzZWxmLl92ZXJzaW9uLmRldiwKKyAgICAgICAgICAg
IHNlbGYuX3ZlcnNpb24ubG9jYWwsCisgICAgICAgICkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICI8VmVyc2lvbih7
MH0pPiIuZm9ybWF0KHJlcHIoc3RyKHNlbGYpKSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICBwYXJ0cyA9IFtdCisKKyAgICAgICAg
IyBFcG9jaAorICAgICAgICBpZiBzZWxmLmVwb2NoICE9IDA6CisgICAgICAgICAgICBwYXJ0cy5h
cHBlbmQoInswfSEiLmZvcm1hdChzZWxmLmVwb2NoKSkKKworICAgICAgICAjIFJlbGVhc2Ugc2Vn
bWVudAorICAgICAgICBwYXJ0cy5hcHBlbmQoIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYu
cmVsZWFzZSkpCisKKyAgICAgICAgIyBQcmUtcmVsZWFzZQorICAgICAgICBpZiBzZWxmLnByZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgiIi5qb2luKHN0cih4KSBmb3Ig
eCBpbiBzZWxmLnByZSkpCisKKyAgICAgICAgIyBQb3N0LXJlbGVhc2UKKyAgICAgICAgaWYgc2Vs
Zi5wb3N0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIucG9zdHswfSIu
Zm9ybWF0KHNlbGYucG9zdCkpCisKKyAgICAgICAgIyBEZXZlbG9wbWVudCByZWxlYXNlCisgICAg
ICAgIGlmIHNlbGYuZGV2IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIu
ZGV2ezB9Ii5mb3JtYXQoc2VsZi5kZXYpKQorCisgICAgICAgICMgTG9jYWwgdmVyc2lvbiBzZWdt
ZW50CisgICAgICAgIGlmIHNlbGYubG9jYWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJ0
cy5hcHBlbmQoIit7MH0iLmZvcm1hdChzZWxmLmxvY2FsKSkKKworICAgICAgICByZXR1cm4gIiIu
am9pbihwYXJ0cykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlcG9jaChzZWxmKToKKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgX2Vwb2NoID0gc2VsZi5fdmVyc2lvbi5lcG9j
aCAgIyB0eXBlOiBpbnQKKyAgICAgICAgcmV0dXJuIF9lcG9jaAorCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbaW50LCAu
Li5dCisgICAgICAgIF9yZWxlYXNlID0gc2VsZi5fdmVyc2lvbi5yZWxlYXNlICAjIHR5cGU6IFR1
cGxlW2ludCwgLi4uXQorICAgICAgICByZXR1cm4gX3JlbGVhc2UKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBwcmUoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVHVwbGVb
c3RyLCBpbnRdXQorICAgICAgICBfcHJlID0gc2VsZi5fdmVyc2lvbi5wcmUgICMgdHlwZTogT3B0
aW9uYWxbVHVwbGVbc3RyLCBpbnRdXQorICAgICAgICByZXR1cm4gX3ByZQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHBvc3Qoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxb
VHVwbGVbc3RyLCBpbnRdXQorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbi5wb3N0WzFdIGlm
IHNlbGYuX3ZlcnNpb24ucG9zdCBlbHNlIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBk
ZXYoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnRd
XQorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbi5kZXZbMV0gaWYgc2VsZi5fdmVyc2lvbi5k
ZXYgZWxzZSBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWwoc2VsZik6CisgICAg
ICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbc3RyXQorICAgICAgICBpZiBzZWxmLl92ZXJzaW9u
LmxvY2FsOgorICAgICAgICAgICAgcmV0dXJuICIuIi5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxm
Ll92ZXJzaW9uLmxvY2FsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwdWJsaWMoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzdHIoc2VsZikuc3BsaXQoIisiLCAxKVswXQorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGJhc2VfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBzdHIKKyAgICAgICAgcGFydHMgPSBbXQorCisgICAgICAgICMgRXBvY2gKKyAgICAg
ICAgaWYgc2VsZi5lcG9jaCAhPSAwOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCJ7MH0hIi5m
b3JtYXQoc2VsZi5lcG9jaCkpCisKKyAgICAgICAgIyBSZWxlYXNlIHNlZ21lbnQKKyAgICAgICAg
cGFydHMuYXBwZW5kKCIuIi5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmLnJlbGVhc2UpKQorCisg
ICAgICAgIHJldHVybiAiIi5qb2luKHBhcnRzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlz
X3ByZXJlbGVhc2Uoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICBy
ZXR1cm4gc2VsZi5kZXYgaXMgbm90IE5vbmUgb3Igc2VsZi5wcmUgaXMgbm90IE5vbmUKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBpc19wb3N0cmVsZWFzZShzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBib29sCisgICAgICAgIHJldHVybiBzZWxmLnBvc3QgaXMgbm90IE5vbmUKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBpc19kZXZyZWxlYXNlKHNlbGYpOgorICAgICAgICAjIHR5cGU6
ICgpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHNlbGYuZGV2IGlzIG5vdCBOb25lCisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgbWFqb3Ioc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gaW50
CisgICAgICAgIHJldHVybiBzZWxmLnJlbGVhc2VbMF0gaWYgbGVuKHNlbGYucmVsZWFzZSkgPj0g
MSBlbHNlIDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtaW5vcihzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIHNlbGYucmVsZWFzZVsxXSBpZiBsZW4o
c2VsZi5yZWxlYXNlKSA+PSAyIGVsc2UgMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1pY3Jv
KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICByZXR1cm4gc2VsZi5y
ZWxlYXNlWzJdIGlmIGxlbihzZWxmLnJlbGVhc2UpID49IDMgZWxzZSAwCisKKworZGVmIF9wYXJz
ZV9sZXR0ZXJfdmVyc2lvbigKKyAgICBsZXR0ZXIsICAjIHR5cGU6IHN0cgorICAgIG51bWJlciwg
ICMgdHlwZTogVW5pb25bc3RyLCBieXRlcywgU3VwcG9ydHNJbnRdCispOgorICAgICMgdHlwZTog
KC4uLikgLT4gT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnRdXQorCisgICAgaWYgbGV0dGVyOgorICAg
ICAgICAjIFdlIGNvbnNpZGVyIHRoZXJlIHRvIGJlIGFuIGltcGxpY2l0IDAgaW4gYSBwcmUtcmVs
ZWFzZSBpZiB0aGVyZSBpcworICAgICAgICAjIG5vdCBhIG51bWVyYWwgYXNzb2NpYXRlZCB3aXRo
IGl0LgorICAgICAgICBpZiBudW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIG51bWJlciA9IDAK
KworICAgICAgICAjIFdlIG5vcm1hbGl6ZSBhbnkgbGV0dGVycyB0byB0aGVpciBsb3dlciBjYXNl
IGZvcm0KKyAgICAgICAgbGV0dGVyID0gbGV0dGVyLmxvd2VyKCkKKworICAgICAgICAjIFdlIGNv
bnNpZGVyIHNvbWUgd29yZHMgdG8gYmUgYWx0ZXJuYXRlIHNwZWxsaW5ncyBvZiBvdGhlciB3b3Jk
cyBhbmQKKyAgICAgICAgIyBpbiB0aG9zZSBjYXNlcyB3ZSB3YW50IHRvIG5vcm1hbGl6ZSB0aGUg
c3BlbGxpbmdzIHRvIG91ciBwcmVmZXJyZWQKKyAgICAgICAgIyBzcGVsbGluZy4KKyAgICAgICAg
aWYgbGV0dGVyID09ICJhbHBoYSI6CisgICAgICAgICAgICBsZXR0ZXIgPSAiYSIKKyAgICAgICAg
ZWxpZiBsZXR0ZXIgPT0gImJldGEiOgorICAgICAgICAgICAgbGV0dGVyID0gImIiCisgICAgICAg
IGVsaWYgbGV0dGVyIGluIFsiYyIsICJwcmUiLCAicHJldmlldyJdOgorICAgICAgICAgICAgbGV0
dGVyID0gInJjIgorICAgICAgICBlbGlmIGxldHRlciBpbiBbInJldiIsICJyIl06CisgICAgICAg
ICAgICBsZXR0ZXIgPSAicG9zdCIKKworICAgICAgICByZXR1cm4gbGV0dGVyLCBpbnQobnVtYmVy
KQorICAgIGlmIG5vdCBsZXR0ZXIgYW5kIG51bWJlcjoKKyAgICAgICAgIyBXZSBhc3N1bWUgaWYg
d2UgYXJlIGdpdmVuIGEgbnVtYmVyLCBidXQgd2UgYXJlIG5vdCBnaXZlbiBhIGxldHRlcgorICAg
ICAgICAjIHRoZW4gdGhpcyBpcyB1c2luZyB0aGUgaW1wbGljaXQgcG9zdCByZWxlYXNlIHN5bnRh
eCAoZS5nLiAxLjAtMSkKKyAgICAgICAgbGV0dGVyID0gInBvc3QiCisKKyAgICAgICAgcmV0dXJu
IGxldHRlciwgaW50KG51bWJlcikKKworICAgIHJldHVybiBOb25lCisKKworX2xvY2FsX3ZlcnNp
b25fc2VwYXJhdG9ycyA9IHJlLmNvbXBpbGUociJbXC5fLV0iKQorCisKK2RlZiBfcGFyc2VfbG9j
YWxfdmVyc2lvbihsb2NhbCk6CisgICAgIyB0eXBlOiAoc3RyKSAtPiBPcHRpb25hbFtMb2NhbFR5
cGVdCisgICAgIiIiCisgICAgVGFrZXMgYSBzdHJpbmcgbGlrZSBhYmMuMS50d2VsdmUgYW5kIHR1
cm5zIGl0IGludG8gKCJhYmMiLCAxLCAidHdlbHZlIikuCisgICAgIiIiCisgICAgaWYgbG9jYWwg
aXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiB0dXBsZSgKKyAgICAgICAgICAgIHBhcnQubG93
ZXIoKSBpZiBub3QgcGFydC5pc2RpZ2l0KCkgZWxzZSBpbnQocGFydCkKKyAgICAgICAgICAgIGZv
ciBwYXJ0IGluIF9sb2NhbF92ZXJzaW9uX3NlcGFyYXRvcnMuc3BsaXQobG9jYWwpCisgICAgICAg
ICkKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfY21wa2V5KAorICAgIGVwb2NoLCAgIyB0eXBl
OiBpbnQKKyAgICByZWxlYXNlLCAgIyB0eXBlOiBUdXBsZVtpbnQsIC4uLl0KKyAgICBwcmUsICAj
IHR5cGU6IE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50XV0KKyAgICBwb3N0LCAgIyB0eXBlOiBPcHRp
b25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgZGV2LCAgIyB0eXBlOiBPcHRpb25hbFtUdXBsZVtz
dHIsIGludF1dCisgICAgbG9jYWwsICAjIHR5cGU6IE9wdGlvbmFsW1R1cGxlW1N1YkxvY2FsVHlw
ZV1dCispOgorICAgICMgdHlwZTogKC4uLikgLT4gQ21wS2V5CisKKyAgICAjIFdoZW4gd2UgY29t
cGFyZSBhIHJlbGVhc2UgdmVyc2lvbiwgd2Ugd2FudCB0byBjb21wYXJlIGl0IHdpdGggYWxsIG9m
IHRoZQorICAgICMgdHJhaWxpbmcgemVyb3MgcmVtb3ZlZC4gU28gd2UnbGwgdXNlIGEgcmV2ZXJz
ZSB0aGUgbGlzdCwgZHJvcCBhbGwgdGhlIG5vdworICAgICMgbGVhZGluZyB6ZXJvcyB1bnRpbCB3
ZSBjb21lIHRvIHNvbWV0aGluZyBub24gemVybywgdGhlbiB0YWtlIHRoZSByZXN0CisgICAgIyBy
ZS1yZXZlcnNlIGl0IGJhY2sgaW50byB0aGUgY29ycmVjdCBvcmRlciBhbmQgbWFrZSBpdCBhIHR1
cGxlIGFuZCB1c2UKKyAgICAjIHRoYXQgZm9yIG91ciBzb3J0aW5nIGtleS4KKyAgICBfcmVsZWFz
ZSA9IHR1cGxlKAorICAgICAgICByZXZlcnNlZChsaXN0KGl0ZXJ0b29scy5kcm9wd2hpbGUobGFt
YmRhIHg6IHggPT0gMCwgcmV2ZXJzZWQocmVsZWFzZSkpKSkKKyAgICApCisKKyAgICAjIFdlIG5l
ZWQgdG8gInRyaWNrIiB0aGUgc29ydGluZyBhbGdvcml0aG0gdG8gcHV0IDEuMC5kZXYwIGJlZm9y
ZSAxLjBhMC4KKyAgICAjIFdlJ2xsIGRvIHRoaXMgYnkgYWJ1c2luZyB0aGUgcHJlIHNlZ21lbnQs
IGJ1dCB3ZSBfb25seV8gd2FudCB0byBkbyB0aGlzCisgICAgIyBpZiB0aGVyZSBpcyBub3QgYSBw
cmUgb3IgYSBwb3N0IHNlZ21lbnQuIElmIHdlIGhhdmUgb25lIG9mIHRob3NlIHRoZW4KKyAgICAj
IHRoZSBub3JtYWwgc29ydGluZyBydWxlcyB3aWxsIGhhbmRsZSB0aGlzIGNhc2UgY29ycmVjdGx5
LgorICAgIGlmIHByZSBpcyBOb25lIGFuZCBwb3N0IGlzIE5vbmUgYW5kIGRldiBpcyBub3QgTm9u
ZToKKyAgICAgICAgX3ByZSA9IE5lZ2F0aXZlSW5maW5pdHkgICMgdHlwZTogUHJlUG9zdERldlR5
cGUKKyAgICAjIFZlcnNpb25zIHdpdGhvdXQgYSBwcmUtcmVsZWFzZSAoZXhjZXB0IGFzIG5vdGVk
IGFib3ZlKSBzaG91bGQgc29ydCBhZnRlcgorICAgICMgdGhvc2Ugd2l0aCBvbmUuCisgICAgZWxp
ZiBwcmUgaXMgTm9uZToKKyAgICAgICAgX3ByZSA9IEluZmluaXR5CisgICAgZWxzZToKKyAgICAg
ICAgX3ByZSA9IHByZQorCisgICAgIyBWZXJzaW9ucyB3aXRob3V0IGEgcG9zdCBzZWdtZW50IHNo
b3VsZCBzb3J0IGJlZm9yZSB0aG9zZSB3aXRoIG9uZS4KKyAgICBpZiBwb3N0IGlzIE5vbmU6Cisg
ICAgICAgIF9wb3N0ID0gTmVnYXRpdmVJbmZpbml0eSAgIyB0eXBlOiBQcmVQb3N0RGV2VHlwZQor
CisgICAgZWxzZToKKyAgICAgICAgX3Bvc3QgPSBwb3N0CisKKyAgICAjIFZlcnNpb25zIHdpdGhv
dXQgYSBkZXZlbG9wbWVudCBzZWdtZW50IHNob3VsZCBzb3J0IGFmdGVyIHRob3NlIHdpdGggb25l
LgorICAgIGlmIGRldiBpcyBOb25lOgorICAgICAgICBfZGV2ID0gSW5maW5pdHkgICMgdHlwZTog
UHJlUG9zdERldlR5cGUKKworICAgIGVsc2U6CisgICAgICAgIF9kZXYgPSBkZXYKKworICAgIGlm
IGxvY2FsIGlzIE5vbmU6CisgICAgICAgICMgVmVyc2lvbnMgd2l0aG91dCBhIGxvY2FsIHNlZ21l
bnQgc2hvdWxkIHNvcnQgYmVmb3JlIHRob3NlIHdpdGggb25lLgorICAgICAgICBfbG9jYWwgPSBO
ZWdhdGl2ZUluZmluaXR5ICAjIHR5cGU6IExvY2FsVHlwZQorICAgIGVsc2U6CisgICAgICAgICMg
VmVyc2lvbnMgd2l0aCBhIGxvY2FsIHNlZ21lbnQgbmVlZCB0aGF0IHNlZ21lbnQgcGFyc2VkIHRv
IGltcGxlbWVudAorICAgICAgICAjIHRoZSBzb3J0aW5nIHJ1bGVzIGluIFBFUDQ0MC4KKyAgICAg
ICAgIyAtIEFscGhhIG51bWVyaWMgc2VnbWVudHMgc29ydCBiZWZvcmUgbnVtZXJpYyBzZWdtZW50
cworICAgICAgICAjIC0gQWxwaGEgbnVtZXJpYyBzZWdtZW50cyBzb3J0IGxleGljb2dyYXBoaWNh
bGx5CisgICAgICAgICMgLSBOdW1lcmljIHNlZ21lbnRzIHNvcnQgbnVtZXJpY2FsbHkKKyAgICAg
ICAgIyAtIFNob3J0ZXIgdmVyc2lvbnMgc29ydCBiZWZvcmUgbG9uZ2VyIHZlcnNpb25zIHdoZW4g
dGhlIHByZWZpeGVzCisgICAgICAgICMgICBtYXRjaCBleGFjdGx5CisgICAgICAgIF9sb2NhbCA9
IHR1cGxlKAorICAgICAgICAgICAgKGksICIiKSBpZiBpc2luc3RhbmNlKGksIGludCkgZWxzZSAo
TmVnYXRpdmVJbmZpbml0eSwgaSkgZm9yIGkgaW4gbG9jYWwKKyAgICAgICAgKQorCisgICAgcmV0
dXJuIGVwb2NoLCBfcmVsZWFzZSwgX3ByZSwgX3Bvc3QsIF9kZXYsIF9sb2NhbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvcHlwcm9qZWN0LnRvbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9weXByb2pl
Y3QudG9tbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2Y2RhNmJl
NTAxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3B5cHJvamVjdC50b21sCkBA
IC0wLDAgKzEsMzcgQEAKK1tidWlsZC1zeXN0ZW1dCityZXF1aXJlcyA9IFsiZmxpdF9jb3JlID49
Miw8NCJdCitidWlsZC1iYWNrZW5kID0gImZsaXRfY29yZS5idWlsZGFwaSIKKworW3Rvb2wuZmxp
dC5tZXRhZGF0YV0KK21vZHVsZSA9ICJwYWNrYWdpbmciCithdXRob3IgPSAiRG9uYWxkIFN0dWZm
dCBhbmQgaW5kaXZpZHVhbCBjb250cmlidXRvcnMiCithdXRob3ItZW1haWwgPSAiZG9uYWxkQHN0
dWZmdC5pbyIKK2hvbWUtcGFnZSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlwYS9wYWNrYWdpbmci
CitkZXNjcmlwdGlvbi1maWxlID0gIlJFQURNRS5yc3QiCitjbGFzc2lmaWVycyA9IFsKKyAgICAg
ICAgIkRldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUiLAorICAgICAg
ICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgICAgICJMaWNlbnNlIDo6
IE9TSSBBcHByb3ZlZCA6OiBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSIsCisgICAgICAgICJMaWNl
bnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCisgICAgICAgICJQcm9ncmFtbWlu
ZyBMYW5ndWFnZSA6OiBQeXRob24iLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDIiLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6
IDIuNyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIsCisg
ICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy40IiwKKyAgICAgICAg
IlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjUiLAorICAgICAgICAiUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNiIsCisgICAgICAgICJQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMy43IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdl
IDo6IFB5dGhvbiA6OiAzLjgiLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0
aG9uIDo6IDMuOSIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjog
SW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogUHlQeSIsCitdCityZXF1aXJlcy1weXRo
b24gPSAiPj0yLjcsICE9My4wLiosICE9My4xLiosICE9My4yLiosICE9My4zLioiCityZXF1aXJl
cyA9IFsicHlwYXJzaW5nPj0yLjAuMiJdCisKK1t0b29sLmZsaXQubWV0YWRhdGEudXJsc10KK0Rv
Y3VtZW50YXRpb24gPSAiaHR0cHM6Ly9wYWNrYWdpbmcucHlwYS5pby8iCitDaGFuZ2Vsb2cgPSAi
aHR0cHM6Ly9wYWNrYWdpbmcucHlwYS5pby9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwiCisKK1t0
b29sLmZsaXQuc2Rpc3RdCitpbmNsdWRlID0gWyJMSUNFTlNFIiwgIkxJQ0VOU0UuQlNEIiwgIkxJ
Q0VOU0UuQVBBQ0hFIl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rhc2tzL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYWUyNDY4OGI1OTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy90YXNrcy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDEwIEBACisjIFRoaXMg
ZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFp
bHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCisKK2ltcG9ydCBpbnZva2UKKworZnJvbSAuIGltcG9ydCBjaGVjaworCitu
cyA9IGludm9rZS5Db2xsZWN0aW9uKGNoZWNrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcv
dGFza3MvY2hlY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy9jaGVjay5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkzMGFiNDkwZjNjMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3Rhc2tzL2NoZWNrLnB5CkBAIC0wLDAgKzEsMTQ3IEBACisj
IFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRl
IGRldGFpbHMuCisKK2ltcG9ydCBqc29uCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3MucGF0
aAorCit0cnk6CisgICAgaW1wb3J0IHhtbHJwYy5jbGllbnQgYXMgeG1scnBjX2NsaWVudAorZXhj
ZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCB4bWxycGNsaWIgYXMgeG1scnBjX2NsaWVudAor
CitpbXBvcnQgaW52b2tlCitpbXBvcnQgcGtnX3Jlc291cmNlcworaW1wb3J0IHByb2dyZXNzLmJh
cgorCitmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCisKK2Zyb20gLnBhdGhz
IGltcG9ydCBDQUNIRQorCisKK2RlZiBfcGFyc2VfdmVyc2lvbih2YWx1ZSk6CisgICAgdHJ5Ogor
ICAgICAgICByZXR1cm4gVmVyc2lvbih2YWx1ZSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworCitAaW52b2tlLnRhc2sKK2RlZiBwZXA0NDAoY2FjaGVkPUZh
bHNlKToKKyAgICBjYWNoZV9wYXRoID0gb3MucGF0aC5qb2luKENBQ0hFLCAicGVwNDQwLmpzb24i
KQorCisgICAgIyBJZiB3ZSB3ZXJlIGdpdmVuIC0tY2FjaGVkLCB0aGVuIHdlIHdhbnQgdG8gYXR0
ZW1wdCB0byB1c2UgY2FjaGVkIGRhdGEgaWYKKyAgICAjIHBvc3NpYmxlCisgICAgaWYgY2FjaGVk
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oY2FjaGVfcGF0aCwgInIiKSBh
cyBmcDoKKyAgICAgICAgICAgICAgICBkYXRhID0ganNvbi5sb2FkKGZwKQorICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZGF0YSA9IE5vbmUKKyAgICBlbHNlOgorICAgICAg
ICBkYXRhID0gTm9uZQorCisgICAgIyBJZiB3ZSBkb24ndCBoYXZlIGRhdGEsIHRoZW4gbGV0J3Mg
Z28gZmV0Y2ggaXQgZnJvbSBQeVBJCisgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAgICBiYXIg
PSBwcm9ncmVzcy5iYXIuU2hhZHlCYXIoIkZldGNoaW5nIFZlcnNpb25zIikKKyAgICAgICAgY2xp
ZW50ID0geG1scnBjX2NsaWVudC5TZXJ2ZXIoImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGki
KQorCisgICAgICAgIGRhdGEgPSBkaWN0KAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
IChwcm9qZWN0LCBjbGllbnQucGFja2FnZV9yZWxlYXNlcyhwcm9qZWN0LCBUcnVlKSkKKyAgICAg
ICAgICAgICAgICBmb3IgcHJvamVjdCBpbiBiYXIuaXRlcihjbGllbnQubGlzdF9wYWNrYWdlcygp
KQorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICAgICAgb3MubWFrZWRpcnMob3MucGF0
aC5kaXJuYW1lKGNhY2hlX3BhdGgpLCBleGlzdF9vaz1UcnVlKQorICAgICAgICB3aXRoIG9wZW4o
Y2FjaGVfcGF0aCwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGpzb24uZHVtcChkYXRhLCBmcCkK
KworICAgICMgR2V0IGEgbGlzdCBvZiBhbGwgb2YgdGhlIHZlcnNpb24gbnVtYmVycyBvbiBQeVBJ
CisgICAgYWxsX3ZlcnNpb25zID0gbGlzdChpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZShk
YXRhLnZhbHVlcygpKSkKKworICAgICMgRGV0ZXJtaW5lIHRoZSB0b3RhbCBudW1iZXIgb2YgdmVy
c2lvbnMgd2hpY2ggYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUKKyAgICAjIGN1cnJlbnQgcm91dGlu
ZQorICAgIHBhcnNlZF92ZXJzaW9ucyA9IFsKKyAgICAgICAgX3BhcnNlX3ZlcnNpb24odikgZm9y
IHYgaW4gYWxsX3ZlcnNpb25zIGlmIF9wYXJzZV92ZXJzaW9uKHYpIGlzIG5vdCBOb25lCisgICAg
XQorCisgICAgIyBEZXRlcm1pbmUgYSBsaXN0IG9mIHByb2plY3RzIHRoYXQgc29ydCBleGFjdGx5
IHRoZSBzYW1lIGJldHdlZW4KKyAgICAjIHBrZ19yZXNvdXJjZXMgYW5kIFBFUCA0NDAKKyAgICBj
b21wYXRpYmxlX3NvcnRpbmcgPSBbCisgICAgICAgIHByb2plY3QKKyAgICAgICAgZm9yIHByb2pl
Y3QsIHZlcnNpb25zIGluIGRhdGEuaXRlbXMoKQorICAgICAgICBpZiAoCisgICAgICAgICAgICBz
b3J0ZWQodmVyc2lvbnMsIGtleT1wa2dfcmVzb3VyY2VzLnBhcnNlX3ZlcnNpb24pCisgICAgICAg
ICAgICA9PSBzb3J0ZWQoKHggZm9yIHggaW4gdmVyc2lvbnMgaWYgX3BhcnNlX3ZlcnNpb24oeCkp
LCBrZXk9VmVyc2lvbikKKyAgICAgICAgKQorICAgIF0KKworICAgICMgRGV0ZXJtaW5lIGEgbGlz
dCBvZiBwcm9qZWN0cyB0aGF0IHNvcnQgZXhhY3RseSB0aGUgc2FtZSBiZXR3ZWVuCisgICAgIyBw
a2dfcmVzb3VyY2VzIGFuZCBQRVAgNDQwIHdoZW4gaW52YWxpZCB2ZXJzaW9ucyBhcmUgZmlsdGVy
ZWQgb3V0CisgICAgZmlsdGVyZWRfY29tcGF0aWJsZV9zb3J0aW5nID0gWworICAgICAgICBwcm9q
ZWN0CisgICAgICAgIGZvciBwcm9qZWN0LCB2ZXJzaW9ucyBpbiAoCisgICAgICAgICAgICAocCwg
W3YgZm9yIHYgaW4gdnMgaWYgX3BhcnNlX3ZlcnNpb24odikgaXMgbm90IE5vbmVdKQorICAgICAg
ICAgICAgZm9yIHAsIHZzIGluIGRhdGEuaXRlbXMoKQorICAgICAgICApCisgICAgICAgIGlmICgK
KyAgICAgICAgICAgIHNvcnRlZCh2ZXJzaW9ucywga2V5PXBrZ19yZXNvdXJjZXMucGFyc2VfdmVy
c2lvbikKKyAgICAgICAgICAgID09IHNvcnRlZCh2ZXJzaW9ucywga2V5PVZlcnNpb24pCisgICAg
ICAgICkKKyAgICBdCisKKyAgICAjIERldGVybWluZSBhIGxpc3Qgb2YgcHJvamVjdHMgd2hpY2gg
ZG8gbm90IGhhdmUgYW55IHZlcnNpb25zIHRoYXQgYXJlCisgICAgIyB2YWxpZCB3aXRoIFBFUCA0
NDAgYW5kIHdoaWNoIGhhdmUgYW55IHZlcnNpb25zIHJlZ2lzdGVyZWQKKyAgICBvbmx5X2ludmFs
aWRfdmVyc2lvbnMgPSBbCisgICAgICAgIHByb2plY3QKKyAgICAgICAgZm9yIHByb2plY3QsIHZl
cnNpb25zIGluIGRhdGEuaXRlbXMoKQorICAgICAgICBpZiAodmVyc2lvbnMgYW5kIG5vdCBbdiBm
b3IgdiBpbiB2ZXJzaW9ucyBpZiBfcGFyc2VfdmVyc2lvbih2KSBpcyBub3QgTm9uZV0pCisgICAg
XQorCisgICAgIyBEZXRlcm1pbmUgYSBsaXN0IG9mIHByb2plY3RzIHdoaWNoIGhhdmUgbWF0Y2hp
bmcgbGF0ZXN0IHZlcnNpb25zIGJldHdlZW4KKyAgICAjIHBrZ19yZXNvdXJjZXMgYW5kIFBFUCA0
NDAKKyAgICBkaWZmZXJpbmdfbGF0ZXN0X3ZlcnNpb25zID0gWworICAgICAgICBwcm9qZWN0Cisg
ICAgICAgIGZvciBwcm9qZWN0LCB2ZXJzaW9ucyBpbiBkYXRhLml0ZW1zKCkKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc29ydGVkKHZlcnNpb25zLCBrZXk9cGtnX3Jlc291cmNlcy5wYXJzZV92
ZXJzaW9uKVstMTpdCisgICAgICAgICAgICAhPSBzb3J0ZWQoKHggZm9yIHggaW4gdmVyc2lvbnMg
aWYgX3BhcnNlX3ZlcnNpb24oeCkpLCBrZXk9VmVyc2lvbilbLTE6XQorICAgICAgICApCisgICAg
XQorCisgICAgIyBQcmludCBvdXQgb3VyIGZpbmRpbmdzCisgICAgcHJpbnQoCisgICAgICAgICJU
b3RhbCBWZXJzaW9uIENvbXBhdGliaWxpdHk6ICAgICAgICAgICAgICB7fS97fSAoezouMiV9KSIu
Zm9ybWF0KAorICAgICAgICAgICAgbGVuKHBhcnNlZF92ZXJzaW9ucyksCisgICAgICAgICAgICBs
ZW4oYWxsX3ZlcnNpb25zKSwKKyAgICAgICAgICAgIGxlbihwYXJzZWRfdmVyc2lvbnMpIC8gbGVu
KGFsbF92ZXJzaW9ucyksCisgICAgICAgICkKKyAgICApCisgICAgcHJpbnQoCisgICAgICAgICJU
b3RhbCBTb3J0aW5nIENvbXBhdGliaWxpdHkgKFVuZmlsdGVyZWQpOiB7fS97fSAoezouMiV9KSIu
Zm9ybWF0KAorICAgICAgICAgICAgbGVuKGNvbXBhdGlibGVfc29ydGluZyksIGxlbihkYXRhKSwg
bGVuKGNvbXBhdGlibGVfc29ydGluZykgLyBsZW4oZGF0YSkKKyAgICAgICAgKQorICAgICkKKyAg
ICBwcmludCgKKyAgICAgICAgIlRvdGFsIFNvcnRpbmcgQ29tcGF0aWJpbGl0eSAoRmlsdGVyZWQp
OiAgIHt9L3t9ICh7Oi4yJX0pIi5mb3JtYXQoCisgICAgICAgICAgICBsZW4oZmlsdGVyZWRfY29t
cGF0aWJsZV9zb3J0aW5nKSwKKyAgICAgICAgICAgIGxlbihkYXRhKSwKKyAgICAgICAgICAgIGxl
bihmaWx0ZXJlZF9jb21wYXRpYmxlX3NvcnRpbmcpIC8gbGVuKGRhdGEpLAorICAgICAgICApCisg
ICAgKQorICAgIHByaW50KAorICAgICAgICAiUHJvamVjdHMgd2l0aCBObyBDb21wYXRpYmxlIFZl
cnNpb25zOiAgICAge30ve30gKHs6LjIlfSkiLmZvcm1hdCgKKyAgICAgICAgICAgIGxlbihvbmx5
X2ludmFsaWRfdmVyc2lvbnMpLAorICAgICAgICAgICAgbGVuKGRhdGEpLAorICAgICAgICAgICAg
bGVuKG9ubHlfaW52YWxpZF92ZXJzaW9ucykgLyBsZW4oZGF0YSksCisgICAgICAgICkKKyAgICAp
CisgICAgcHJpbnQoCisgICAgICAgICJQcm9qZWN0cyB3aXRoIERpZmZlcmluZyBMYXRlc3QgVmVy
c2lvbjogICB7fS97fSAoezouMiV9KSIuZm9ybWF0KAorICAgICAgICAgICAgbGVuKGRpZmZlcmlu
Z19sYXRlc3RfdmVyc2lvbnMpLAorICAgICAgICAgICAgbGVuKGRhdGEpLAorICAgICAgICAgICAg
bGVuKGRpZmZlcmluZ19sYXRlc3RfdmVyc2lvbnMpIC8gbGVuKGRhdGEpLAorICAgICAgICApCisg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvcGF0aHMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy90YXNrcy9wYXRocy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjEzZDQ5NDIzYmVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rh
c2tzL3BhdGhzLnB5CkBAIC0wLDAgKzEsMTAgQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5z
ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAs
IGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4KKworaW1wb3J0IG9zLnBh
dGgKKworCitQUk9KRUNUID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pKSkKKworQ0FDSEUgPSBvcy5wYXRoLmpvaW4oUFJPSkVDVCwgIi5j
YWNoZSIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy9yZXF1aXJlbWVudHMudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvcmVxdWlyZW1lbnRzLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2NzdjMGU4OWJkOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGFja2FnaW5nL3Rhc2tzL3JlcXVpcmVtZW50cy50eHQKQEAgLTAsMCArMSwzIEBACisj
IFRoZSByZXF1aXJlbWVudHMgcmVxdWlyZWQgdG8gaW52b2tlIHRoZSB0YXNrcworaW52b2tlCitw
cm9ncmVzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjBlMTEzMDE0MTNkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNCBAQAorIyBUaGlzIGZpbGUgaXMg
ZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvYnVpbGQtaGVsbG8td29ybGQu
c2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9idWlsZC1oZWxsby13b3JsZC5zaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjljM2UxZTE4MTkwOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2J1aWxkLWhlbGxvLXdvcmxkLnNoCkBAIC0wLDAg
KzEsMzkgQEAKKyMhL2Jpbi9iYXNoCisKK3NldCAteAorc2V0IC1lCisKK2lmIFsgJCMgLWVxIDAg
XTsgdGhlbgorCWRvY2tlciBydW4gLS1ybSAtdiAkKHB3ZCk6L2hvbWUvaGVsbG8td29ybGQgYXJt
MzJ2NS9kZWJpYW4gL2hvbWUvaGVsbG8td29ybGQvYnVpbGQtaGVsbG8td29ybGQuc2ggaW5jb250
YWluZXIgNTIKKwlkb2NrZXIgcnVuIC0tcm0gLXYgJChwd2QpOi9ob21lL2hlbGxvLXdvcmxkIGFy
bTMydjcvZGViaWFuIC9ob21lL2hlbGxvLXdvcmxkL2J1aWxkLWhlbGxvLXdvcmxkLnNoIGluY29u
dGFpbmVyIDUyCisJZG9ja2VyIHJ1biAtLXJtIC12ICQocHdkKTovaG9tZS9oZWxsby13b3JsZCBp
Mzg2L2RlYmlhbiAvaG9tZS9oZWxsby13b3JsZC9idWlsZC1oZWxsby13b3JsZC5zaCBpbmNvbnRh
aW5lciA1MgorCWRvY2tlciBydW4gLS1ybSAtdiAkKHB3ZCk6L2hvbWUvaGVsbG8td29ybGQgczM5
MHgvZGViaWFuIC9ob21lL2hlbGxvLXdvcmxkL2J1aWxkLWhlbGxvLXdvcmxkLnNoIGluY29udGFp
bmVyIDY0CisJZG9ja2VyIHJ1biAtLXJtIC12ICQocHdkKTovaG9tZS9oZWxsby13b3JsZCBkZWJp
YW4gL2hvbWUvaGVsbG8td29ybGQvYnVpbGQtaGVsbG8td29ybGQuc2ggaW5jb250YWluZXIgNjQK
Kwlkb2NrZXIgcnVuIC0tcm0gLXYgJChwd2QpOi9ob21lL2hlbGxvLXdvcmxkIGRlYmlhbiAvaG9t
ZS9oZWxsby13b3JsZC9idWlsZC1oZWxsby13b3JsZC5zaCB4MzIgNTIKKwljcCAtZiBoZWxsby13
b3JsZC14ODZfNjQtaTM4NiBoZWxsby13b3JsZC1pbnZhbGlkLW1hZ2ljCisJcHJpbnRmICJceDAw
IiB8IGRkIG9mPWhlbGxvLXdvcmxkLWludmFsaWQtbWFnaWMgYnM9MSBzZWVrPTB4MDAgY291bnQ9
MSBjb252PW5vdHJ1bmMKKwljcCAtZiBoZWxsby13b3JsZC14ODZfNjQtaTM4NiBoZWxsby13b3Js
ZC1pbnZhbGlkLWNsYXNzCisJcHJpbnRmICJceDAwIiB8IGRkIG9mPWhlbGxvLXdvcmxkLWludmFs
aWQtY2xhc3MgYnM9MSBzZWVrPTB4MDQgY291bnQ9MSBjb252PW5vdHJ1bmMKKwljcCAtZiBoZWxs
by13b3JsZC14ODZfNjQtaTM4NiBoZWxsby13b3JsZC1pbnZhbGlkLWRhdGEKKwlwcmludGYgIlx4
MDAiIHwgZGQgb2Y9aGVsbG8td29ybGQtaW52YWxpZC1kYXRhIGJzPTEgc2Vlaz0weDA1IGNvdW50
PTEgY29udj1ub3RydW5jCisJaGVhZCAtYyA0MCBoZWxsby13b3JsZC14ODZfNjQtaTM4NiA+IGhl
bGxvLXdvcmxkLXRvby1zaG9ydAorCWV4aXQgMAorZmkKKworZXhwb3J0IERFQklBTl9GUk9OVEVO
RD1ub25pbnRlcmFjdGl2ZQorY2QgL2hvbWUvaGVsbG8td29ybGQvCithcHQtZ2V0IHVwZGF0ZQor
YXB0LWdldCBpbnN0YWxsIC15IC0tbm8taW5zdGFsbC1yZWNvbW1lbmRzIGdjYyBsaWJjNi1kZXYK
K2lmIFsgIiQxIiA9PSAiaW5jb250YWluZXIiIF07IHRoZW4KKwlBUkNIPSQoZHBrZyAtLXByaW50
LWFyY2hpdGVjdHVyZSkKKwlDRkxBR1M9IiIKK2Vsc2UKKwlBUkNIPSQxCisJZHBrZyAtLWFkZC1h
cmNoaXRlY3R1cmUgJHtBUkNIfQorCWFwdC1nZXQgaW5zdGFsbCAteSAtLW5vLWluc3RhbGwtcmVj
b21tZW5kcyBnY2MtbXVsdGlsaWIgbGliYzYtZGV2LSR7QVJDSH0KKwlDRkxBR1M9Ii1teDMyIgor
ZmkKK05BTUU9aGVsbG8td29ybGQtJCh1bmFtZSAtbSktJHtBUkNIfQorZ2NjIC1PcyAtcyAke0NG
TEFHU30gLW8gJHtOQU1FfS1mdWxsIGhlbGxvLXdvcmxkLmMKK2hlYWQgLWMgJDIgJHtOQU1FfS1m
dWxsID4gJHtOQU1FfQorcm0gLWYgJHtOQU1FfS1mdWxsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy90ZXN0cy9oZWxsby13b3JsZC1hcm12N2wtYXJtZWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy9oZWxsby13b3JsZC1hcm12N2wtYXJtZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi4xZGZkMjNmYTNjMGUKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1hcm12N2wtYXJtZWwgZGlmZmVyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1hcm12N2wtYXJtaGYgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1hcm12N2wtYXJtaGYKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjVhYjMwMDNhZjkKQmluYXJ5IGZpbGVzIC9kZXYv
bnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1hcm12N2wtYXJtaGYg
ZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZh
bGlkLWNsYXNzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQtaW52YWxpZC1jbGFz
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVlOTg5OWZjMDc2MApC
aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdv
cmxkLWludmFsaWQtY2xhc3MgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy9oZWxsby13b3JsZC1pbnZhbGlkLWRhdGEgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13
b3JsZC1pbnZhbGlkLWRhdGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4yNjU5YjhlZTI1NzYKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2lu
Zy90ZXN0cy9oZWxsby13b3JsZC1pbnZhbGlkLWRhdGEgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZhbGlkLW1hZ2ljIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvdGVzdHMvaGVsbG8td29ybGQtaW52YWxpZC1tYWdpYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjQ2MDY2YWQyZGVkMQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWludmFsaWQtbWFnaWMgZGlmZmVy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1zMzkweC1zMzkw
eCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXMzOTB4LXMzOTB4Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzRlOTU3ODg4OWVmCkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQtczM5MHgt
czM5MHggZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3Js
ZC10b28tc2hvcnQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC10b28tc2hvcnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZTVjMDM5NmI5NGQKQmlu
YXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3Js
ZC10b28tc2hvcnQgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxs
by13b3JsZC14ODZfNjQtYW1kNjQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC14
ODZfNjQtYW1kNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jN2Y1
YjBiNWU1YmIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy9oZWxsby13b3JsZC14ODZfNjQtYW1kNjQgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy90ZXN0cy9oZWxsby13b3JsZC14ODZfNjQtaTM4NiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3Rz
L2hlbGxvLXdvcmxkLXg4Nl82NC1pMzg2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZmYxZDU0MGEzMGM2CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQteDg2XzY0LWkzODYgZGlmZmVyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC14ODZfNjQteDMyIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvdGVzdHMvaGVsbG8td29ybGQteDg2XzY0LXgzMgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmRhZjg1ZDM0NzM3ZQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXg4Nl82NC14MzIgZGlmZmVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC5jIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvdGVzdHMvaGVsbG8td29ybGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjVlNTkxYzNlYzVkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
L3Rlc3RzL2hlbGxvLXdvcmxkLmMKQEAgLTAsMCArMSw3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4K
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKwlwcmludGYoIkhlbGxvIHdv
cmxkIik7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90
ZXN0X21hcmtlcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X21hcmtlcnMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMWU0YWE2YjM3NGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X21hcmtlcnMucHkKQEAgLTAs
MCArMSwzODQgQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vu
c2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQor
IyBmb3IgY29tcGxldGUgZGV0YWlscy4KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IGNvbGxlY3Rpb25zCitp
bXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHN5cwor
CitpbXBvcnQgcHJldGVuZAoraW1wb3J0IHB5dGVzdAorCitmcm9tIHBhY2thZ2luZy5tYXJrZXJz
IGltcG9ydCAoCisgICAgTm9kZSwKKyAgICBJbnZhbGlkTWFya2VyLAorICAgIFVuZGVmaW5lZENv
bXBhcmlzb24sCisgICAgVW5kZWZpbmVkRW52aXJvbm1lbnROYW1lLAorICAgIE1hcmtlciwKKyAg
ICBkZWZhdWx0X2Vudmlyb25tZW50LAorICAgIGZvcm1hdF9mdWxsX3ZlcnNpb24sCispCisKKwor
VkFSSUFCTEVTID0gWworICAgICJleHRyYSIsCisgICAgImltcGxlbWVudGF0aW9uX25hbWUiLAor
ICAgICJpbXBsZW1lbnRhdGlvbl92ZXJzaW9uIiwKKyAgICAib3NfbmFtZSIsCisgICAgInBsYXRm
b3JtX21hY2hpbmUiLAorICAgICJwbGF0Zm9ybV9yZWxlYXNlIiwKKyAgICAicGxhdGZvcm1fc3lz
dGVtIiwKKyAgICAicGxhdGZvcm1fdmVyc2lvbiIsCisgICAgInB5dGhvbl9mdWxsX3ZlcnNpb24i
LAorICAgICJweXRob25fdmVyc2lvbiIsCisgICAgInBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRh
dGlvbiIsCisgICAgInN5c19wbGF0Zm9ybSIsCitdCisKK1BFUF8zNDVfVkFSSUFCTEVTID0gWwor
ICAgICJvcy5uYW1lIiwKKyAgICAic3lzLnBsYXRmb3JtIiwKKyAgICAicGxhdGZvcm0udmVyc2lv
biIsCisgICAgInBsYXRmb3JtLm1hY2hpbmUiLAorICAgICJwbGF0Zm9ybS5weXRob25faW1wbGVt
ZW50YXRpb24iLAorXQorCitTRVRVUFRPT0xTX1ZBUklBQkxFUyA9IFsicHl0aG9uX2ltcGxlbWVu
dGF0aW9uIl0KKworT1BFUkFUT1JTID0gWyI9PT0iLCAiPT0iLCAiPj0iLCAiPD0iLCAiIT0iLCAi
fj0iLCAiPiIsICI8IiwgImluIiwgIm5vdCBpbiJdCisKK1ZBTFVFUyA9IFsKKyAgICAiMS4wIiwK
KyAgICAiNS42YTAiLAorICAgICJkb2ciLAorICAgICJmcmVlYnNkIiwKKyAgICAibGl0ZXJhbGx5
IGFueSBzdHJpbmcgY2FuIGdvIGhlcmUiLAorICAgICJ0aGluZ3MgQCM0IGRzZmQgKCgoIiwKK10K
KworCitjbGFzcyBUZXN0Tm9kZToKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZhbHVl
IiwgWyJvbmUiLCAidHdvIiwgTm9uZSwgMywgNSwgW11dKQorICAgIGRlZiB0ZXN0X2FjY2VwdHNf
dmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBhc3NlcnQgTm9kZSh2YWx1ZSkudmFsdWUgPT0g
dmFsdWUKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidmFsdWUiLCBbIm9uZSIsICJ0
d28iLCBOb25lLCAzLCA1LCBbXV0pCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYsIHZhbHVlKToKKyAg
ICAgICAgYXNzZXJ0IHN0cihOb2RlKHZhbHVlKSkgPT0gc3RyKHZhbHVlKQorCisgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJ2YWx1ZSIsIFsib25lIiwgInR3byIsIE5vbmUsIDMsIDUsIFtd
XSkKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYsIHZhbHVlKToKKyAgICAgICAgYXNzZXJ0IHJlcHIo
Tm9kZSh2YWx1ZSkpID09ICI8Tm9kZSh7MCFyfSk+Ii5mb3JtYXQoc3RyKHZhbHVlKSkKKworICAg
IGRlZiB0ZXN0X2Jhc2VfY2xhc3Moc2VsZik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhO
b3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgIE5vZGUoImNvdmVyIGFsbCB0aGUgY29k
ZSIpLnNlcmlhbGl6ZSgpCisKKworY2xhc3MgVGVzdE9wZXJhdG9yRXZhbHVhdGlvbjoKKyAgICBk
ZWYgdGVzdF9wcmVmZXJzX3BlcDQ0MChzZWxmKToKKyAgICAgICAgYXNzZXJ0IE1hcmtlcignIjIu
Ny45IiA8ICJmb28iJykuZXZhbHVhdGUoZGljdChmb289IjIuNy4xMCIpKQorCisgICAgZGVmIHRl
c3RfZmFsbHNfYmFja190b19weXRob24oc2VsZik6CisgICAgICAgIGFzc2VydCBNYXJrZXIoJyJi
IiA+ICJhIicpLmV2YWx1YXRlKGRpY3QoYT0iYSIpKQorCisgICAgZGVmIHRlc3RfZmFpbHNfd2hl
bl91bmRlZmluZWQoc2VsZik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhVbmRlZmluZWRD
b21wYXJpc29uKToKKyAgICAgICAgICAgIE1hcmtlcigiJzIuNy4wJyB+PSBvc19uYW1lIikuZXZh
bHVhdGUoKQorCisKK0Zha2VWZXJzaW9uSW5mbyA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoCisg
ICAgIkZha2VWZXJzaW9uSW5mbyIsIFsibWFqb3IiLCAibWlub3IiLCAibWljcm8iLCAicmVsZWFz
ZWxldmVsIiwgInNlcmlhbCJdCispCisKKworY2xhc3MgVGVzdERlZmF1bHRFbnZpcm9ubWVudDoK
KyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBoYXNhdHRyKHN5cywgImltcGxlbWVu
dGF0aW9uIiksIHJlYXNvbj0ic3lzLmltcGxlbWVudGF0aW9uIGRvZXMgZXhpc3QiCisgICAgKQor
ICAgIGRlZiB0ZXN0X21hdGNoZXNfZXhwZWN0ZWRfbm9fc3lzX2ltcGxlbWVudGF0aW9uKHNlbGYp
OgorICAgICAgICBlbnZpcm9ubWVudCA9IGRlZmF1bHRfZW52aXJvbm1lbnQoKQorCisgICAgICAg
IGFzc2VydCBlbnZpcm9ubWVudCA9PSB7CisgICAgICAgICAgICAiaW1wbGVtZW50YXRpb25fbmFt
ZSI6ICIiLAorICAgICAgICAgICAgImltcGxlbWVudGF0aW9uX3ZlcnNpb24iOiAiMCIsCisgICAg
ICAgICAgICAib3NfbmFtZSI6IG9zLm5hbWUsCisgICAgICAgICAgICAicGxhdGZvcm1fbWFjaGlu
ZSI6IHBsYXRmb3JtLm1hY2hpbmUoKSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV9yZWxlYXNlIjog
cGxhdGZvcm0ucmVsZWFzZSgpLAorICAgICAgICAgICAgInBsYXRmb3JtX3N5c3RlbSI6IHBsYXRm
b3JtLnN5c3RlbSgpLAorICAgICAgICAgICAgInBsYXRmb3JtX3ZlcnNpb24iOiBwbGF0Zm9ybS52
ZXJzaW9uKCksCisgICAgICAgICAgICAicHl0aG9uX2Z1bGxfdmVyc2lvbiI6IHBsYXRmb3JtLnB5
dGhvbl92ZXJzaW9uKCksCisgICAgICAgICAgICAicGxhdGZvcm1fcHl0aG9uX2ltcGxlbWVudGF0
aW9uIjogcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCksCisgICAgICAgICAgICAicHl0
aG9uX3ZlcnNpb24iOiAiLiIuam9pbihwbGF0Zm9ybS5weXRob25fdmVyc2lvbl90dXBsZSgpWzoy
XSksCisgICAgICAgICAgICAic3lzX3BsYXRmb3JtIjogc3lzLnBsYXRmb3JtLAorICAgICAgICB9
CisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3QgaGFzYXR0cihzeXMsICJp
bXBsZW1lbnRhdGlvbiIpLCByZWFzb249InN5cy5pbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBleGlz
dCIKKyAgICApCisgICAgZGVmIHRlc3RfbWF0Y2hlc19leHBlY3RlZF9kZWxldGVkX3N5c19pbXBs
ZW1lbnRhdGlvbihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLmRlbGF0
dHIoc3lzLCAiaW1wbGVtZW50YXRpb24iKQorCisgICAgICAgIGVudmlyb25tZW50ID0gZGVmYXVs
dF9lbnZpcm9ubWVudCgpCisKKyAgICAgICAgYXNzZXJ0IGVudmlyb25tZW50ID09IHsKKyAgICAg
ICAgICAgICJpbXBsZW1lbnRhdGlvbl9uYW1lIjogIiIsCisgICAgICAgICAgICAiaW1wbGVtZW50
YXRpb25fdmVyc2lvbiI6ICIwIiwKKyAgICAgICAgICAgICJvc19uYW1lIjogb3MubmFtZSwKKyAg
ICAgICAgICAgICJwbGF0Zm9ybV9tYWNoaW5lIjogcGxhdGZvcm0ubWFjaGluZSgpLAorICAgICAg
ICAgICAgInBsYXRmb3JtX3JlbGVhc2UiOiBwbGF0Zm9ybS5yZWxlYXNlKCksCisgICAgICAgICAg
ICAicGxhdGZvcm1fc3lzdGVtIjogcGxhdGZvcm0uc3lzdGVtKCksCisgICAgICAgICAgICAicGxh
dGZvcm1fdmVyc2lvbiI6IHBsYXRmb3JtLnZlcnNpb24oKSwKKyAgICAgICAgICAgICJweXRob25f
ZnVsbF92ZXJzaW9uIjogcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwKKyAgICAgICAgICAgICJw
bGF0Zm9ybV9weXRob25faW1wbGVtZW50YXRpb24iOiBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50
YXRpb24oKSwKKyAgICAgICAgICAgICJweXRob25fdmVyc2lvbiI6ICIuIi5qb2luKHBsYXRmb3Jt
LnB5dGhvbl92ZXJzaW9uX3R1cGxlKClbOjJdKSwKKyAgICAgICAgICAgICJzeXNfcGxhdGZvcm0i
OiBzeXMucGxhdGZvcm0sCisgICAgICAgIH0KKworICAgIEBweXRlc3QubWFyay5za2lwaWYoCisg
ICAgICAgIG5vdCBoYXNhdHRyKHN5cywgImltcGxlbWVudGF0aW9uIiksIHJlYXNvbj0ic3lzLmlt
cGxlbWVudGF0aW9uIGRvZXMgbm90IGV4aXN0IgorICAgICkKKyAgICBkZWYgdGVzdF9tYXRjaGVz
X2V4cGVjdGVkKHNlbGYpOgorICAgICAgICBlbnZpcm9ubWVudCA9IGRlZmF1bHRfZW52aXJvbm1l
bnQoKQorCisgICAgICAgIGl2ZXIgPSAiezAubWFqb3J9LnswLm1pbm9yfS57MC5taWNyb30iLmZv
cm1hdChzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbikKKyAgICAgICAgaWYgc3lzLmltcGxlbWVu
dGF0aW9uLnZlcnNpb24ucmVsZWFzZWxldmVsICE9ICJmaW5hbCI6CisgICAgICAgICAgICBpdmVy
ID0gInswfXsxWzBdfXsyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIGl2ZXIsCisgICAgICAg
ICAgICAgICAgc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb24ucmVsZWFzZWxldmVsLAorICAgICAg
ICAgICAgICAgIHN5cy5pbXBsZW1lbnRhdGlvbi52ZXJzaW9uLnNlcmlhbCwKKyAgICAgICAgICAg
ICkKKworICAgICAgICBhc3NlcnQgZW52aXJvbm1lbnQgPT0geworICAgICAgICAgICAgImltcGxl
bWVudGF0aW9uX25hbWUiOiBzeXMuaW1wbGVtZW50YXRpb24ubmFtZSwKKyAgICAgICAgICAgICJp
bXBsZW1lbnRhdGlvbl92ZXJzaW9uIjogaXZlciwKKyAgICAgICAgICAgICJvc19uYW1lIjogb3Mu
bmFtZSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV9tYWNoaW5lIjogcGxhdGZvcm0ubWFjaGluZSgp
LAorICAgICAgICAgICAgInBsYXRmb3JtX3JlbGVhc2UiOiBwbGF0Zm9ybS5yZWxlYXNlKCksCisg
ICAgICAgICAgICAicGxhdGZvcm1fc3lzdGVtIjogcGxhdGZvcm0uc3lzdGVtKCksCisgICAgICAg
ICAgICAicGxhdGZvcm1fdmVyc2lvbiI6IHBsYXRmb3JtLnZlcnNpb24oKSwKKyAgICAgICAgICAg
ICJweXRob25fZnVsbF92ZXJzaW9uIjogcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwKKyAgICAg
ICAgICAgICJwbGF0Zm9ybV9weXRob25faW1wbGVtZW50YXRpb24iOiBwbGF0Zm9ybS5weXRob25f
aW1wbGVtZW50YXRpb24oKSwKKyAgICAgICAgICAgICJweXRob25fdmVyc2lvbiI6ICIuIi5qb2lu
KHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uX3R1cGxlKClbOjJdKSwKKyAgICAgICAgICAgICJzeXNf
cGxhdGZvcm0iOiBzeXMucGxhdGZvcm0sCisgICAgICAgIH0KKworICAgIEBweXRlc3QubWFyay5z
a2lwaWYoCisgICAgICAgIGhhc2F0dHIoc3lzLCAiaW1wbGVtZW50YXRpb24iKSwgcmVhc29uPSJz
eXMuaW1wbGVtZW50YXRpb24gZG9lcyBleGlzdCIKKyAgICApCisgICAgZGVmIHRlc3RfbW9ua2V5
cGF0Y2hfc3lzX2ltcGxlbWVudGF0aW9uKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIHN5cywKKyAgICAgICAgICAgICJpbXBsZW1l
bnRhdGlvbiIsCisgICAgICAgICAgICBwcmV0ZW5kLnN0dWIodmVyc2lvbj1GYWtlVmVyc2lvbklu
Zm8oMywgNCwgMiwgImZpbmFsIiwgMCksIG5hbWU9ImxpbnV4IiksCisgICAgICAgICAgICByYWlz
aW5nPUZhbHNlLAorICAgICAgICApCisKKyAgICAgICAgZW52aXJvbm1lbnQgPSBkZWZhdWx0X2Vu
dmlyb25tZW50KCkKKyAgICAgICAgYXNzZXJ0IGVudmlyb25tZW50ID09IHsKKyAgICAgICAgICAg
ICJpbXBsZW1lbnRhdGlvbl9uYW1lIjogImxpbnV4IiwKKyAgICAgICAgICAgICJpbXBsZW1lbnRh
dGlvbl92ZXJzaW9uIjogIjMuNC4yIiwKKyAgICAgICAgICAgICJvc19uYW1lIjogb3MubmFtZSwK
KyAgICAgICAgICAgICJwbGF0Zm9ybV9tYWNoaW5lIjogcGxhdGZvcm0ubWFjaGluZSgpLAorICAg
ICAgICAgICAgInBsYXRmb3JtX3JlbGVhc2UiOiBwbGF0Zm9ybS5yZWxlYXNlKCksCisgICAgICAg
ICAgICAicGxhdGZvcm1fc3lzdGVtIjogcGxhdGZvcm0uc3lzdGVtKCksCisgICAgICAgICAgICAi
cGxhdGZvcm1fdmVyc2lvbiI6IHBsYXRmb3JtLnZlcnNpb24oKSwKKyAgICAgICAgICAgICJweXRo
b25fZnVsbF92ZXJzaW9uIjogcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwKKyAgICAgICAgICAg
ICJwbGF0Zm9ybV9weXRob25faW1wbGVtZW50YXRpb24iOiBwbGF0Zm9ybS5weXRob25faW1wbGVt
ZW50YXRpb24oKSwKKyAgICAgICAgICAgICJweXRob25fdmVyc2lvbiI6ICIuIi5qb2luKHBsYXRm
b3JtLnB5dGhvbl92ZXJzaW9uX3R1cGxlKClbOjJdKSwKKyAgICAgICAgICAgICJzeXNfcGxhdGZv
cm0iOiBzeXMucGxhdGZvcm0sCisgICAgICAgIH0KKworICAgIGRlZiB0ZXN0X211bHRpZGlnaXRf
bWlub3JfdmVyc2lvbihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIHZlcnNpb25faW5mbyA9
ICgzLCAxMCwgMCwgImZpbmFsIiwgMCkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMs
ICJ2ZXJzaW9uX2luZm8iLCB2ZXJzaW9uX2luZm8sIHJhaXNpbmc9RmFsc2UpCisKKyAgICAgICAg
bW9ua2V5cGF0Y2guc2V0YXR0cihwbGF0Zm9ybSwgInB5dGhvbl92ZXJzaW9uIiwgbGFtYmRhOiAi
My4xMC4wIiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAg
ICAgICAgICAgIHBsYXRmb3JtLCAicHl0aG9uX3ZlcnNpb25fdHVwbGUiLCBsYW1iZGE6ICgiMyIs
ICIxMCIsICIwIiksIHJhaXNpbmc9RmFsc2UKKyAgICAgICAgKQorCisgICAgICAgIGVudmlyb25t
ZW50ID0gZGVmYXVsdF9lbnZpcm9ubWVudCgpCisgICAgICAgIGFzc2VydCBlbnZpcm9ubWVudFsi
cHl0aG9uX3ZlcnNpb24iXSA9PSAiMy4xMCIKKworICAgIGRlZiB0ZXN0c193aGVuX3JlbGVhc2Vs
ZXZlbF9maW5hbChzZWxmKToKKyAgICAgICAgdiA9IEZha2VWZXJzaW9uSW5mbygzLCA0LCAyLCAi
ZmluYWwiLCAwKQorICAgICAgICBhc3NlcnQgZm9ybWF0X2Z1bGxfdmVyc2lvbih2KSA9PSAiMy40
LjIiCisKKyAgICBkZWYgdGVzdHNfd2hlbl9yZWxlYXNlbGV2ZWxfbm90X2ZpbmFsKHNlbGYpOgor
ICAgICAgICB2ID0gRmFrZVZlcnNpb25JbmZvKDMsIDQsIDIsICJiZXRhIiwgNCkKKyAgICAgICAg
YXNzZXJ0IGZvcm1hdF9mdWxsX3ZlcnNpb24odikgPT0gIjMuNC4yYjQiCisKKworY2xhc3MgVGVz
dE1hcmtlcjoKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJtYXJrZXJf
c3RyaW5nIiwKKyAgICAgICAgWworICAgICAgICAgICAgInswfSB7MX0gezIhcn0iLmZvcm1hdCgq
aSkKKyAgICAgICAgICAgIGZvciBpIGluIGl0ZXJ0b29scy5wcm9kdWN0KFZBUklBQkxFUywgT1BF
UkFUT1JTLCBWQUxVRVMpCisgICAgICAgIF0KKyAgICAgICAgKyBbCisgICAgICAgICAgICAiezIh
cn0gezF9IHswfSIuZm9ybWF0KCppKQorICAgICAgICAgICAgZm9yIGkgaW4gaXRlcnRvb2xzLnBy
b2R1Y3QoVkFSSUFCTEVTLCBPUEVSQVRPUlMsIFZBTFVFUykKKyAgICAgICAgXSwKKyAgICApCisg
ICAgZGVmIHRlc3RfcGFyc2VzX3ZhbGlkKHNlbGYsIG1hcmtlcl9zdHJpbmcpOgorICAgICAgICBN
YXJrZXIobWFya2VyX3N0cmluZykKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAg
ICAgICAgIm1hcmtlcl9zdHJpbmciLAorICAgICAgICBbCisgICAgICAgICAgICAidGhpc19pc250
X2FfcmVhbF92YXJpYWJsZSA+PSAnMS4wJyIsCisgICAgICAgICAgICAicHl0aG9uX3ZlcnNpb24i
LAorICAgICAgICAgICAgIihweXRob25fdmVyc2lvbikiLAorICAgICAgICAgICAgInB5dGhvbl92
ZXJzaW9uID49IDEuMCBhbmQgKHB5dGhvbl92ZXJzaW9uKSIsCisgICAgICAgIF0sCisgICAgKQor
ICAgIGRlZiB0ZXN0X3BhcnNlc19pbnZhbGlkKHNlbGYsIG1hcmtlcl9zdHJpbmcpOgorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoSW52YWxpZE1hcmtlcik6CisgICAgICAgICAgICBNYXJrZXIo
bWFya2VyX3N0cmluZykKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAg
KCJtYXJrZXJfc3RyaW5nIiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAgICAgICAgICAgICMg
VGVzdCB0aGUgZGlmZmVyZW50IHF1b3RpbmcgcnVsZXMKKyAgICAgICAgICAgICgicHl0aG9uX3Zl
cnNpb24gPT0gJzIuNyciLCAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyInKSwKKyAgICAgICAgICAg
ICgncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyInLCAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyInKSwK
KyAgICAgICAgICAgICMgVGVzdCBhbmQvb3IgZXhwcmVzc2lvbnMKKyAgICAgICAgICAgICgKKyAg
ICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgYW5kIG9zX25hbWUgPT0gImxp
bnV4IicsCisgICAgICAgICAgICAgICAgJ3B5dGhvbl92ZXJzaW9uID09ICIyLjciIGFuZCBvc19u
YW1lID09ICJsaW51eCInLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgb3Igb3NfbmFtZSA9PSAibGludXgiJywK
KyAgICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgb3Igb3NfbmFtZSA9PSAi
bGludXgiJywKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
J3B5dGhvbl92ZXJzaW9uID09ICIyLjciIGFuZCBvc19uYW1lID09ICJsaW51eCIgb3IgJworICAg
ICAgICAgICAgICAgICdzeXNfcGxhdGZvcm0gPT0gIndpbjMyIicsCisgICAgICAgICAgICAgICAg
J3B5dGhvbl92ZXJzaW9uID09ICIyLjciIGFuZCBvc19uYW1lID09ICJsaW51eCIgb3IgJworICAg
ICAgICAgICAgICAgICdzeXNfcGxhdGZvcm0gPT0gIndpbjMyIicsCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgIyBUZXN0IG5lc3RlZCBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcgd2l0aCAo
KQorICAgICAgICAgICAgKCcocHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIpJywgJ3B5dGhvbl92ZXJz
aW9uID09ICIyLjciJyksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgJyhweXRob25f
dmVyc2lvbiA9PSAiMi43IiBhbmQgc3lzX3BsYXRmb3JtID09ICJ3aW4zMiIpJywKKyAgICAgICAg
ICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgYW5kIHN5c19wbGF0Zm9ybSA9PSAid2lu
MzIiJywKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgJ3B5
dGhvbl92ZXJzaW9uID09ICIyLjciIGFuZCAoc3lzX3BsYXRmb3JtID09ICJ3aW4zMiIgb3IgJwor
ICAgICAgICAgICAgICAgICdzeXNfcGxhdGZvcm0gPT0gImxpbnV4IiknLAorICAgICAgICAgICAg
ICAgICdweXRob25fdmVyc2lvbiA9PSAiMi43IiBhbmQgKHN5c19wbGF0Zm9ybSA9PSAid2luMzIi
IG9yICcKKyAgICAgICAgICAgICAgICAnc3lzX3BsYXRmb3JtID09ICJsaW51eCIpJywKKyAgICAg
ICAgICAgICksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3N0cl9hbmRfcmVwcihz
ZWxmLCBtYXJrZXJfc3RyaW5nLCBleHBlY3RlZCk6CisgICAgICAgIG0gPSBNYXJrZXIobWFya2Vy
X3N0cmluZykKKyAgICAgICAgYXNzZXJ0IHN0cihtKSA9PSBleHBlY3RlZAorICAgICAgICBhc3Nl
cnQgcmVwcihtKSA9PSAiPE1hcmtlcih7MCFyfSk+Ii5mb3JtYXQoc3RyKG0pKQorCisgICAgZGVm
IHRlc3RfZXh0cmFfd2l0aF9ub19leHRyYV9pbl9lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAg
IyBXZSBjYW4ndCBldmFsdWF0ZSBhbiBleHRyYSBpZiBubyBleHRyYSBpcyBwYXNzZWQgaW50byB0
aGUgZW52aXJvbm1lbnQKKyAgICAgICAgbSA9IE1hcmtlcigiZXh0cmEgPT0gJ3NlY3VyaXR5JyIp
CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUpOgor
ICAgICAgICAgICAgbS5ldmFsdWF0ZSgpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgICAgICgibWFya2VyX3N0cmluZyIsICJlbnZpcm9ubWVudCIsICJleHBlY3RlZCIpLAor
ICAgICAgICBbCisgICAgICAgICAgICAoIm9zX25hbWUgPT0gJ3swfSciLmZvcm1hdChvcy5uYW1l
KSwgTm9uZSwgVHJ1ZSksCisgICAgICAgICAgICAoIm9zX25hbWUgPT0gJ2ZvbyciLCB7Im9zX25h
bWUiOiAiZm9vIn0sIFRydWUpLAorICAgICAgICAgICAgKCJvc19uYW1lID09ICdmb28nIiwgeyJv
c19uYW1lIjogImJhciJ9LCBGYWxzZSksCisgICAgICAgICAgICAoIicyLjcnIGluIHB5dGhvbl92
ZXJzaW9uIiwgeyJweXRob25fdmVyc2lvbiI6ICIyLjcuNSJ9LCBUcnVlKSwKKyAgICAgICAgICAg
ICgiJzIuNycgbm90IGluIHB5dGhvbl92ZXJzaW9uIiwgeyJweXRob25fdmVyc2lvbiI6ICIyLjci
fSwgRmFsc2UpLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICJvc19uYW1lID09ICdm
b28nIGFuZCBweXRob25fdmVyc2lvbiB+PSAnMi43LjAnIiwKKyAgICAgICAgICAgICAgICB7Im9z
X25hbWUiOiAiZm9vIiwgInB5dGhvbl92ZXJzaW9uIjogIjIuNy42In0sCisgICAgICAgICAgICAg
ICAgVHJ1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
InB5dGhvbl92ZXJzaW9uIH49ICcyLjcuMCcgYW5kIChvc19uYW1lID09ICdmb28nIG9yICIKKyAg
ICAgICAgICAgICAgICAib3NfbmFtZSA9PSAnYmFyJykiLAorICAgICAgICAgICAgICAgIHsib3Nf
bmFtZSI6ICJmb28iLCAicHl0aG9uX3ZlcnNpb24iOiAiMi43LjQifSwKKyAgICAgICAgICAgICAg
ICBUcnVlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAi
cHl0aG9uX3ZlcnNpb24gfj0gJzIuNy4wJyBhbmQgKG9zX25hbWUgPT0gJ2Zvbycgb3IgIgorICAg
ICAgICAgICAgICAgICJvc19uYW1lID09ICdiYXInKSIsCisgICAgICAgICAgICAgICAgeyJvc19u
YW1lIjogImJhciIsICJweXRob25fdmVyc2lvbiI6ICIyLjcuNCJ9LAorICAgICAgICAgICAgICAg
IFRydWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICJw
eXRob25fdmVyc2lvbiB+PSAnMi43LjAnIGFuZCAob3NfbmFtZSA9PSAnZm9vJyBvciAiCisgICAg
ICAgICAgICAgICAgIm9zX25hbWUgPT0gJ2JhcicpIiwKKyAgICAgICAgICAgICAgICB7Im9zX25h
bWUiOiAib3RoZXIiLCAicHl0aG9uX3ZlcnNpb24iOiAiMi43LjQifSwKKyAgICAgICAgICAgICAg
ICBGYWxzZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoImV4dHJhID09ICdzZWN1cml0
eSciLCB7ImV4dHJhIjogInF1dXgifSwgRmFsc2UpLAorICAgICAgICAgICAgKCJleHRyYSA9PSAn
c2VjdXJpdHknIiwgeyJleHRyYSI6ICJzZWN1cml0eSJ9LCBUcnVlKSwKKyAgICAgICAgXSwKKyAg
ICApCisgICAgZGVmIHRlc3RfZXZhbHVhdGVzKHNlbGYsIG1hcmtlcl9zdHJpbmcsIGVudmlyb25t
ZW50LCBleHBlY3RlZCk6CisgICAgICAgIGFyZ3MgPSBbXSBpZiBlbnZpcm9ubWVudCBpcyBOb25l
IGVsc2UgW2Vudmlyb25tZW50XQorICAgICAgICBhc3NlcnQgTWFya2VyKG1hcmtlcl9zdHJpbmcp
LmV2YWx1YXRlKCphcmdzKSA9PSBleHBlY3RlZAorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKAorICAgICAgICAibWFya2VyX3N0cmluZyIsCisgICAgICAgIFsKKyAgICAgICAgICAgICJ7
MH0gezF9IHsyIXJ9Ii5mb3JtYXQoKmkpCisgICAgICAgICAgICBmb3IgaSBpbiBpdGVydG9vbHMu
cHJvZHVjdChQRVBfMzQ1X1ZBUklBQkxFUywgT1BFUkFUT1JTLCBWQUxVRVMpCisgICAgICAgIF0K
KyAgICAgICAgKyBbCisgICAgICAgICAgICAiezIhcn0gezF9IHswfSIuZm9ybWF0KCppKQorICAg
ICAgICAgICAgZm9yIGkgaW4gaXRlcnRvb2xzLnByb2R1Y3QoUEVQXzM0NV9WQVJJQUJMRVMsIE9Q
RVJBVE9SUywgVkFMVUVTKQorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9wYXJzZXNf
cGVwMzQ1X3ZhbGlkKHNlbGYsIG1hcmtlcl9zdHJpbmcpOgorICAgICAgICBNYXJrZXIobWFya2Vy
X3N0cmluZykKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJtYXJr
ZXJfc3RyaW5nIiwgImVudmlyb25tZW50IiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAgICAg
ICAgICAgICgib3MubmFtZSA9PSAnezB9JyIuZm9ybWF0KG9zLm5hbWUpLCBOb25lLCBUcnVlKSwK
KyAgICAgICAgICAgICgic3lzLnBsYXRmb3JtID09ICd3aW4zMiciLCB7InN5c19wbGF0Zm9ybSI6
ICJsaW51eDIifSwgRmFsc2UpLAorICAgICAgICAgICAgKCJwbGF0Zm9ybS52ZXJzaW9uIGluICdV
YnVudHUnIiwgeyJwbGF0Zm9ybV92ZXJzaW9uIjogIiMzOSJ9LCBGYWxzZSksCisgICAgICAgICAg
ICAoInBsYXRmb3JtLm1hY2hpbmU9PSd4ODZfNjQnIiwgeyJwbGF0Zm9ybV9tYWNoaW5lIjogIng4
Nl82NCJ9LCBUcnVlKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAicGxhdGZvcm0u
cHl0aG9uX2ltcGxlbWVudGF0aW9uPT0nSnl0aG9uJyIsCisgICAgICAgICAgICAgICAgeyJwbGF0
Zm9ybV9weXRob25faW1wbGVtZW50YXRpb24iOiAiQ1B5dGhvbiJ9LAorICAgICAgICAgICAgICAg
IEZhbHNlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAi
cHl0aG9uX3ZlcnNpb24gPT0gJzIuNScgYW5kIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlv
biIKKyAgICAgICAgICAgICAgICAiIT0gJ0p5dGhvbiciLAorICAgICAgICAgICAgICAgIHsicHl0
aG9uX3ZlcnNpb24iOiAiMi43In0sCisgICAgICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAg
ICApLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9ldmFsdWF0ZV9wZXAzNDVfbWFy
a2VycyhzZWxmLCBtYXJrZXJfc3RyaW5nLCBlbnZpcm9ubWVudCwgZXhwZWN0ZWQpOgorICAgICAg
ICBhcmdzID0gW10gaWYgZW52aXJvbm1lbnQgaXMgTm9uZSBlbHNlIFtlbnZpcm9ubWVudF0KKyAg
ICAgICAgYXNzZXJ0IE1hcmtlcihtYXJrZXJfc3RyaW5nKS5ldmFsdWF0ZSgqYXJncykgPT0gZXhw
ZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgIm1hcmtlcl9z
dHJpbmciLAorICAgICAgICBbCisgICAgICAgICAgICAiezB9IHsxfSB7MiFyfSIuZm9ybWF0KCpp
KQorICAgICAgICAgICAgZm9yIGkgaW4gaXRlcnRvb2xzLnByb2R1Y3QoU0VUVVBUT09MU19WQVJJ
QUJMRVMsIE9QRVJBVE9SUywgVkFMVUVTKQorICAgICAgICBdCisgICAgICAgICsgWworICAgICAg
ICAgICAgInsyIXJ9IHsxfSB7MH0iLmZvcm1hdCgqaSkKKyAgICAgICAgICAgIGZvciBpIGluIGl0
ZXJ0b29scy5wcm9kdWN0KFNFVFVQVE9PTFNfVkFSSUFCTEVTLCBPUEVSQVRPUlMsIFZBTFVFUykK
KyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfcGFyc2VzX3NldHVwdG9vbHNfbGVnYWN5
X3ZhbGlkKHNlbGYsIG1hcmtlcl9zdHJpbmcpOgorICAgICAgICBNYXJrZXIobWFya2VyX3N0cmlu
ZykKKworICAgIGRlZiB0ZXN0X2V2YWx1YXRlX3NldHVwdG9vbHNfbGVnYWN5X21hcmtlcnMoc2Vs
Zik6CisgICAgICAgIG1hcmtlcl9zdHJpbmcgPSAicHl0aG9uX2ltcGxlbWVudGF0aW9uPT0nSnl0
aG9uJyIKKyAgICAgICAgYXJncyA9IFt7InBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6
ICJDUHl0aG9uIn1dCisgICAgICAgIGFzc2VydCBNYXJrZXIobWFya2VyX3N0cmluZykuZXZhbHVh
dGUoKmFyZ3MpIGlzIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0
X3JlcXVpcmVtZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3Rlc3RfcmVxdWlyZW1lbnRz
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTBlMzhkNmFkY2E1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF9yZXF1aXJlbWVu
dHMucHkKQEAgLTAsMCArMSwxOTcgQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0
aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMg
cmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4KK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IHB5
dGVzdAorCitmcm9tIHBhY2thZ2luZy5tYXJrZXJzIGltcG9ydCBNYXJrZXIKK2Zyb20gcGFja2Fn
aW5nLnJlcXVpcmVtZW50cyBpbXBvcnQgSW52YWxpZFJlcXVpcmVtZW50LCBSZXF1aXJlbWVudCwg
VVJMCitmcm9tIHBhY2thZ2luZy5yZXF1aXJlbWVudHMgaW1wb3J0IFVSTF9BTkRfTUFSS0VSCitm
cm9tIHBhY2thZ2luZy5zcGVjaWZpZXJzIGltcG9ydCBTcGVjaWZpZXJTZXQKKworCitjbGFzcyBU
ZXN0UmVxdWlyZW1lbnRzOgorICAgIGRlZiB0ZXN0X3N0cmluZ19zcGVjaWZpZXJfbWFya2VyKHNl
bGYpOgorICAgICAgICByZXF1aXJlbWVudCA9ICduYW1lW2Jhcl0+PTM7IHB5dGhvbl92ZXJzaW9u
ID09ICIyLjciJworICAgICAgICByZXEgPSBSZXF1aXJlbWVudChyZXF1aXJlbWVudCkKKyAgICAg
ICAgYXNzZXJ0IHN0cihyZXEpID09IHJlcXVpcmVtZW50CisKKyAgICBkZWYgdGVzdF9zdHJpbmdf
dXJsKHNlbGYpOgorICAgICAgICByZXF1aXJlbWVudCA9ICJuYW1lQCBodHRwOi8vZm9vLmNvbSIK
KyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQocmVxdWlyZW1lbnQpCisgICAgICAgIGFzc2VydCBz
dHIocmVxKSA9PSByZXF1aXJlbWVudAorCisgICAgZGVmIHRlc3Rfc3RyaW5nX3VybF93aXRoX21h
cmtlcihzZWxmKToKKyAgICAgICAgcmVxdWlyZW1lbnQgPSAnbmFtZUAgaHR0cDovL2Zvby5jb20g
OyBleHRyYSA9PSAiZmVhdHVyZSInCisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KHJlcXVpcmVt
ZW50KQorICAgICAgICBhc3NlcnQgc3RyKHJlcSkgPT0gcmVxdWlyZW1lbnQKKworICAgIGRlZiB0
ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJuYW1lIikKKyAgICAg
ICAgYXNzZXJ0IHJlcHIocmVxKSA9PSAiPFJlcXVpcmVtZW50KCduYW1lJyk+IgorCisgICAgZGVm
IF9hc3NlcnRfcmVxdWlyZW1lbnQoCisgICAgICAgIHNlbGYsIHJlcSwgbmFtZSwgdXJsPU5vbmUs
IGV4dHJhcz1bXSwgc3BlY2lmaWVyPSIiLCBtYXJrZXI9Tm9uZQorICAgICk6CisgICAgICAgIGFz
c2VydCByZXEubmFtZSA9PSBuYW1lCisgICAgICAgIGFzc2VydCByZXEudXJsID09IHVybAorICAg
ICAgICBhc3NlcnQgc29ydGVkKHJlcS5leHRyYXMpID09IHNvcnRlZChleHRyYXMpCisgICAgICAg
IGFzc2VydCBzdHIocmVxLnNwZWNpZmllcikgPT0gc3BlY2lmaWVyCisgICAgICAgIGlmIG1hcmtl
cjoKKyAgICAgICAgICAgIGFzc2VydCBzdHIocmVxLm1hcmtlcikgPT0gbWFya2VyCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgcmVxLm1hcmtlciBpcyBOb25lCisKKyAgICBkZWYg
dGVzdF9zaW1wbGVfbmFtZXMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluICgiQSIsICJhYSIs
ICJuYW1lIik6CisgICAgICAgICAgICByZXEgPSBSZXF1aXJlbWVudChuYW1lKQorICAgICAgICAg
ICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X25h
bWVfd2l0aF9vdGhlcl9jaGFyYWN0ZXJzKHNlbGYpOgorICAgICAgICBuYW1lID0gImZvby1iYXIu
cXV1eF9iYXoiCisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KG5hbWUpCisgICAgICAgIHNlbGYu
X2Fzc2VydF9yZXF1aXJlbWVudChyZXEsIG5hbWUpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX25h
bWUoc2VsZik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbnZhbGlkUmVxdWlyZW1lbnQp
OgorICAgICAgICAgICAgUmVxdWlyZW1lbnQoImZvbyEiKQorCisgICAgZGVmIHRlc3RfbmFtZV93
aXRoX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJuYW1lPj0zIikK
KyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgIm5hbWUiLCBzcGVjaWZpZXI9
Ij49MyIpCisKKyAgICBkZWYgdGVzdF93aXRoX2xlZ2FjeV92ZXJzaW9uKHNlbGYpOgorICAgICAg
ICByZXEgPSBSZXF1aXJlbWVudCgibmFtZT09MS4wLm9yZzEiKQorICAgICAgICBzZWxmLl9hc3Nl
cnRfcmVxdWlyZW1lbnQocmVxLCAibmFtZSIsIHNwZWNpZmllcj0iPT0xLjAub3JnMSIpCisKKyAg
ICBkZWYgdGVzdF93aXRoX2xlZ2FjeV92ZXJzaW9uX2FuZF9tYXJrZXIoc2VsZik6CisgICAgICAg
IHJlcSA9IFJlcXVpcmVtZW50KCJuYW1lPj0xLngueTtweXRob25fdmVyc2lvbj09JzIuNiciKQor
ICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQoCisgICAgICAgICAgICByZXEsICJuYW1l
Iiwgc3BlY2lmaWVyPSI+PTEueC55IiwgbWFya2VyPSdweXRob25fdmVyc2lvbiA9PSAiMi42IicK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl93aXRoX3BhcmVuc19hbmRfd2hpdGVz
cGFjZShzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoIm5hbWUgKD09NCkiKQorICAg
ICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAibmFtZSIsIHNwZWNpZmllcj0iPT00
IikKKworICAgIGRlZiB0ZXN0X25hbWVfd2l0aF9tdWx0aXBsZV92ZXJzaW9ucyhzZWxmKToKKyAg
ICAgICAgcmVxID0gUmVxdWlyZW1lbnQoIm5hbWU+PTMsPDIiKQorICAgICAgICBzZWxmLl9hc3Nl
cnRfcmVxdWlyZW1lbnQocmVxLCAibmFtZSIsIHNwZWNpZmllcj0iPDIsPj0zIikKKworICAgIGRl
ZiB0ZXN0X25hbWVfd2l0aF9tdWx0aXBsZV92ZXJzaW9uc19hbmRfd2hpdGVzcGFjZShzZWxmKToK
KyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoIm5hbWUgPj0yLCA8MyIpCisgICAgICAgIHNlbGYu
X2Fzc2VydF9yZXF1aXJlbWVudChyZXEsICJuYW1lIiwgc3BlY2lmaWVyPSI8Myw+PTIiKQorCisg
ICAgZGVmIHRlc3RfZXh0cmFzKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgiZm9v
YmFyIFtxdXV4LGJhcl0iKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAi
Zm9vYmFyIiwgZXh0cmFzPVsiYmFyIiwgInF1dXgiXSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X2V4
dHJhcyhzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoImZvb1tdIikKKyAgICAgICAg
c2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgImZvbyIpCisKKyAgICBkZWYgdGVzdF91cmwo
c2VsZik6CisgICAgICAgIHVybF9zZWN0aW9uID0gIkAgaHR0cDovL2V4YW1wbGUuY29tIgorICAg
ICAgICBwYXJzZWQgPSBVUkwucGFyc2VTdHJpbmcodXJsX3NlY3Rpb24pCisgICAgICAgIGFzc2Vy
dCBwYXJzZWQudXJsID09ICJodHRwOi8vZXhhbXBsZS5jb20iCisKKyAgICBkZWYgdGVzdF91cmxf
YW5kX21hcmtlcihzZWxmKToKKyAgICAgICAgaW5zdHJpbmcgPSAiQCBodHRwOi8vZXhhbXBsZS5j
b20gOyBvc19uYW1lPT0nYSciCisgICAgICAgIHBhcnNlZCA9IFVSTF9BTkRfTUFSS0VSLnBhcnNl
U3RyaW5nKGluc3RyaW5nKQorICAgICAgICBhc3NlcnQgcGFyc2VkLnVybCA9PSAiaHR0cDovL2V4
YW1wbGUuY29tIgorICAgICAgICBhc3NlcnQgc3RyKHBhcnNlZC5tYXJrZXIpID09ICdvc19uYW1l
ID09ICJhIicKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdXJsKHNlbGYpOgorICAgICAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoSW52YWxpZFJlcXVpcmVtZW50KSBhcyBlOgorICAgICAgICAgICAgUmVx
dWlyZW1lbnQoIm5hbWUgQCBnb3BoZXI6L2Zvby9jb20iKQorICAgICAgICBhc3NlcnQgIkludmFs
aWQgVVJMOiAiIGluIHN0cihlLnZhbHVlKQorICAgICAgICBhc3NlcnQgImdvcGhlcjovZm9vL2Nv
bSIgaW4gc3RyKGUudmFsdWUpCisKKyAgICBkZWYgdGVzdF9maWxlX3VybChzZWxmKToKKyAgICAg
ICAgcmVxID0gUmVxdWlyZW1lbnQoIm5hbWUgQCBmaWxlOi8vL2Fic29sdXRlL3BhdGgiKQorICAg
ICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAibmFtZSIsICJmaWxlOi8vL2Fic29s
dXRlL3BhdGgiKQorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgibmFtZSBAIGZpbGU6Ly8uIikK
KyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgIm5hbWUiLCAiZmlsZTovLy4i
KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9maWxlX3VybHMoc2VsZik6CisgICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhJbnZhbGlkUmVxdWlyZW1lbnQpOgorICAgICAgICAgICAgUmVxdWlyZW1l
bnQoIm5hbWUgQCBmaWxlOi4iKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW52YWxpZFJl
cXVpcmVtZW50KToKKyAgICAgICAgICAgIFJlcXVpcmVtZW50KCJuYW1lIEAgZmlsZTovLiIpCisK
KyAgICBkZWYgdGVzdF9leHRyYXNfYW5kX3VybF9hbmRfbWFya2VyKHNlbGYpOgorICAgICAgICBy
ZXEgPSBSZXF1aXJlbWVudCgibmFtZSBbZnJlZCxiYXJdIEAgaHR0cDovL2Zvby5jb20gOyBweXRo
b25fdmVyc2lvbj09JzIuNyciKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQoCisg
ICAgICAgICAgICByZXEsCisgICAgICAgICAgICAibmFtZSIsCisgICAgICAgICAgICBleHRyYXM9
WyJiYXIiLCAiZnJlZCJdLAorICAgICAgICAgICAgdXJsPSJodHRwOi8vZm9vLmNvbSIsCisgICAg
ICAgICAgICBtYXJrZXI9J3B5dGhvbl92ZXJzaW9uID09ICIyLjciJywKKyAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29tcGxleF91cmxfYW5kX21hcmtlcihzZWxmKToKKyAgICAgICAgdXJsID0g
Imh0dHBzOi8vZXhhbXBsZS5jb20vbmFtZTt2PTEuMS8/cXVlcnk9Zm9vJmJhcj1iYXojYmxhaCIK
KyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoImZvbyBAICVzIDsgcHl0aG9uX3ZlcnNpb249PScz
LjQnIiAlIHVybCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgImZvbyIs
IHVybD11cmwsIG1hcmtlcj0ncHl0aG9uX3ZlcnNpb24gPT0gIjMuNCInKQorCisgICAgZGVmIHRl
c3RfbXVsdGlwbGVfbWFya2VycyhzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoCisg
ICAgICAgICAgICAibmFtZVtxdXV4LCBzdHJhbmdlXTtweXRob25fdmVyc2lvbjwnMi43JyBhbmQg
IiAicGxhdGZvcm1fdmVyc2lvbj09JzInIgorICAgICAgICApCisgICAgICAgIG1hcmtlciA9ICdw
eXRob25fdmVyc2lvbiA8ICIyLjciIGFuZCBwbGF0Zm9ybV92ZXJzaW9uID09ICIyIicKKyAgICAg
ICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgIm5hbWUiLCBleHRyYXM9WyJzdHJhbmdl
IiwgInF1dXgiXSwgbWFya2VyPW1hcmtlcikKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX2NvbXBh
cnNpb25fbWFya2VycyhzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoIm5hbWU7IG9z
X25hbWU9PSdhJyBhbmQgb3NfbmFtZT09J2InIG9yIG9zX25hbWU9PSdjJyIpCisgICAgICAgIG1h
cmtlciA9ICdvc19uYW1lID09ICJhIiBhbmQgb3NfbmFtZSA9PSAiYiIgb3Igb3NfbmFtZSA9PSAi
YyInCisgICAgICAgIHNlbGYuX2Fzc2VydF9yZXF1aXJlbWVudChyZXEsICJuYW1lIiwgbWFya2Vy
PW1hcmtlcikKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfbWFya2VyKHNlbGYpOgorICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoSW52YWxpZFJlcXVpcmVtZW50KToKKyAgICAgICAgICAgIFJlcXVp
cmVtZW50KCJuYW1lOyBmb29iYXI9PSd4JyIpCisKKyAgICBkZWYgdGVzdF90eXBlcyhzZWxmKToK
KyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoImZvb2JhcltxdXV4XTwyLD49Mzsgb3NfbmFtZT09
J2EnIikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxLm5hbWUsIHN0cikKKyAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UocmVxLmV4dHJhcywgc2V0KQorICAgICAgICBhc3NlcnQgcmVxLnVy
bCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcS5zcGVjaWZpZXIsIFNwZWNp
ZmllclNldCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxLm1hcmtlciwgTWFya2VyKQor
CisgICAgZGVmIHRlc3RfdHlwZXNfd2l0aF9ub3RoaW5nKHNlbGYpOgorICAgICAgICByZXEgPSBS
ZXF1aXJlbWVudCgiZm9vYmFyIikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxLm5hbWUs
IHN0cikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxLmV4dHJhcywgc2V0KQorICAgICAg
ICBhc3NlcnQgcmVxLnVybCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcS5z
cGVjaWZpZXIsIFNwZWNpZmllclNldCkKKyAgICAgICAgYXNzZXJ0IHJlcS5tYXJrZXIgaXMgTm9u
ZQorCisgICAgZGVmIHRlc3RfdHlwZXNfd2l0aF91cmwoc2VsZik6CisgICAgICAgIHJlcSA9IFJl
cXVpcmVtZW50KCJmb29iYXIgQCBodHRwOi8vZm9vLmNvbSIpCisgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJlcS5uYW1lLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcS5leHRy
YXMsIHNldCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxLnVybCwgc3RyKQorICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShyZXEuc3BlY2lmaWVyLCBTcGVjaWZpZXJTZXQpCisgICAgICAg
IGFzc2VydCByZXEubWFya2VyIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X3N5c19wbGF0Zm9ybV9s
aW51eF9lcXVhbChzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoJ3NvbWV0aGluZz49
MS4yLjM7IHN5c19wbGF0Zm9ybSA9PSAiZm9vIicpCisKKyAgICAgICAgYXNzZXJ0IHJlcS5uYW1l
ID09ICJzb21ldGhpbmciCisgICAgICAgIGFzc2VydCByZXEubWFya2VyIGlzIG5vdCBOb25lCisg
ICAgICAgIGFzc2VydCByZXEubWFya2VyLmV2YWx1YXRlKGRpY3Qoc3lzX3BsYXRmb3JtPSJmb28i
KSkgaXMgVHJ1ZQorICAgICAgICBhc3NlcnQgcmVxLm1hcmtlci5ldmFsdWF0ZShkaWN0KHN5c19w
bGF0Zm9ybT0iYmFyIikpIGlzIEZhbHNlCisKKyAgICBkZWYgdGVzdF9zeXNfcGxhdGZvcm1fbGlu
dXhfaW4oc2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJhdmlhdG8+PTEuMi4zOyAn
ZicgaW4gc3lzX3BsYXRmb3JtIikKKworICAgICAgICBhc3NlcnQgcmVxLm5hbWUgPT0gImF2aWF0
byIKKyAgICAgICAgYXNzZXJ0IHJlcS5tYXJrZXIgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0
IHJlcS5tYXJrZXIuZXZhbHVhdGUoZGljdChzeXNfcGxhdGZvcm09ImZvbyIpKSBpcyBUcnVlCisg
ICAgICAgIGFzc2VydCByZXEubWFya2VyLmV2YWx1YXRlKGRpY3Qoc3lzX3BsYXRmb3JtPSJiYXIi
KSkgaXMgRmFsc2UKKworICAgIGRlZiB0ZXN0X3BhcnNlZXhjZXB0aW9uX2Vycm9yX21zZyhzZWxm
KToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEludmFsaWRSZXF1aXJlbWVudCkgYXMgZToK
KyAgICAgICAgICAgIFJlcXVpcmVtZW50KCJ0b3RvIDQyIikKKyAgICAgICAgYXNzZXJ0ICJFeHBl
Y3RlZCBzdHJpbmdFbmQiIGluIHN0cihlLnZhbHVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvdGVzdHMvdGVzdF9zcGVjaWZpZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF9z
cGVjaWZpZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzlh
NDQ0NjZmNzUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF9z
cGVjaWZpZXJzLnB5CkBAIC0wLDAgKzEsOTk5IEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vu
c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4w
LCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisKK2lt
cG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0IHdhcm5pbmdzCisKK2ltcG9y
dCBweXRlc3QKKworZnJvbSBwYWNrYWdpbmcuc3BlY2lmaWVycyBpbXBvcnQgKAorICAgIEludmFs
aWRTcGVjaWZpZXIsCisgICAgTGVnYWN5U3BlY2lmaWVyLAorICAgIFNwZWNpZmllciwKKyAgICBT
cGVjaWZpZXJTZXQsCispCitmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGltcG9ydCBMZWdhY3lWZXJz
aW9uLCBWZXJzaW9uLCBwYXJzZQorCitmcm9tIC50ZXN0X3ZlcnNpb24gaW1wb3J0IFZFUlNJT05T
LCBMRUdBQ1lfVkVSU0lPTlMKKworCitMRUdBQ1lfU1BFQ0lGSUVSUyA9IFsKKyAgICAiPT0yLjEu
MC4zIiwKKyAgICAiIT0yLjIuMC41IiwKKyAgICAiPD01IiwKKyAgICAiPj03LjlhMSIsCisgICAg
IjwxLjAuZGV2MSIsCisgICAgIj4yLjAucG9zdDEiLAorXQorCitTUEVDSUZJRVJTID0gWworICAg
ICJ+PTIuMCIsCisgICAgIj09Mi4xLioiLAorICAgICI9PTIuMS4wLjMiLAorICAgICIhPTIuMi4q
IiwKKyAgICAiIT0yLjIuMC41IiwKKyAgICAiPD01IiwKKyAgICAiPj03LjlhMSIsCisgICAgIjwx
LjAuZGV2MSIsCisgICAgIj4yLjAucG9zdDEiLAorICAgICI9PT1sb2x3YXQiLAorXQorCisKK2Ns
YXNzIFRlc3RTcGVjaWZpZXI6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzcGVjaWZp
ZXIiLCBTUEVDSUZJRVJTKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcnNfdmFsaWQoc2VsZiwgc3Bl
Y2lmaWVyKToKKyAgICAgICAgU3BlY2lmaWVyKHNwZWNpZmllcikKKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInNwZWNpZmllciIsCisgICAgICAgIFsKKyAgICAgICAg
ICAgICMgT3BlcmF0b3ItbGVzcyBzcGVjaWZpZXIKKyAgICAgICAgICAgICIyLjAiLAorICAgICAg
ICAgICAgIyBJbnZhbGlkIG9wZXJhdG9yCisgICAgICAgICAgICAiPT4yLjAiLAorICAgICAgICAg
ICAgIyBWZXJzaW9uLWxlc3Mgc3BlY2lmaWVyCisgICAgICAgICAgICAiPT0iLAorICAgICAgICAg
ICAgIyBMb2NhbCBzZWdtZW50IG9uIG9wZXJhdG9ycyB3aGljaCBkb24ndCBzdXBwb3J0IHRoZW0K
KyAgICAgICAgICAgICJ+PTEuMCs1IiwKKyAgICAgICAgICAgICI+PTEuMCtkZWFkYmVlZiIsCisg
ICAgICAgICAgICAiPD0xLjArYWJjMTIzIiwKKyAgICAgICAgICAgICI+MS4wK3dhdHdhdCIsCisg
ICAgICAgICAgICAiPDEuMCsxLjAiLAorICAgICAgICAgICAgIyBQcmVmaXggbWF0Y2hpbmcgb24g
b3BlcmF0b3JzIHdoaWNoIGRvbid0IHN1cHBvcnQgdGhlbQorICAgICAgICAgICAgIn49MS4wLioi
LAorICAgICAgICAgICAgIj49MS4wLioiLAorICAgICAgICAgICAgIjw9MS4wLioiLAorICAgICAg
ICAgICAgIj4xLjAuKiIsCisgICAgICAgICAgICAiPDEuMC4qIiwKKyAgICAgICAgICAgICMgQ29t
YmluYXRpb24gb2YgbG9jYWwgYW5kIHByZWZpeCBtYXRjaGluZyBvbiBvcGVyYXRvcnMgd2hpY2gg
ZG8KKyAgICAgICAgICAgICMgc3VwcG9ydCBvbmUgb3IgdGhlIG90aGVyCisgICAgICAgICAgICAi
PT0xLjAuKis1IiwKKyAgICAgICAgICAgICIhPTEuMC4qK2RlYWRiZWVmIiwKKyAgICAgICAgICAg
ICMgUHJlZml4IG1hdGNoaW5nIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIGxvY2FsIHZlcnNp
b24KKyAgICAgICAgICAgICI9PTEuMCs1LioiLAorICAgICAgICAgICAgIiE9MS4wK2RlYWRiZWVm
LioiLAorICAgICAgICAgICAgIyBQcmVmaXggbWF0Y2hpbmcgbXVzdCBhcHBlYXIgYXQgdGhlIGVu
ZAorICAgICAgICAgICAgIj09MS4wLiouNSIsCisgICAgICAgICAgICAjIENvbXBhdGlibGUgb3Bl
cmF0b3IgcmVxdWlyZXMgMiBkaWdpdHMgaW4gdGhlIHJlbGVhc2Ugb3BlcmF0b3IKKyAgICAgICAg
ICAgICJ+PTEiLAorICAgICAgICAgICAgIyBDYW5ub3QgdXNlIGEgcHJlZml4IG1hdGNoaW5nIGFm
dGVyIGEgLmRldk4gdmVyc2lvbgorICAgICAgICAgICAgIj09MS4wLmRldjEuKiIsCisgICAgICAg
ICAgICAiIT0xLjAuZGV2MS4qIiwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc3Bl
Y2lmaWVyc19pbnZhbGlkKHNlbGYsIHNwZWNpZmllcik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhJbnZhbGlkU3BlY2lmaWVyKToKKyAgICAgICAgICAgIFNwZWNpZmllcihzcGVjaWZpZXIp
CisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJ2ZXJzaW9uIiwKKyAg
ICAgICAgWworICAgICAgICAgICAgIyBWYXJpb3VzIGRldmVsb3BtZW50IHJlbGVhc2UgaW5jYXJu
YXRpb25zCisgICAgICAgICAgICAiMS4wZGV2IiwKKyAgICAgICAgICAgICIxLjAuZGV2IiwKKyAg
ICAgICAgICAgICIxLjBkZXYxIiwKKyAgICAgICAgICAgICIxLjBkZXYiLAorICAgICAgICAgICAg
IjEuMC1kZXYiLAorICAgICAgICAgICAgIjEuMC1kZXYxIiwKKyAgICAgICAgICAgICIxLjBERVYi
LAorICAgICAgICAgICAgIjEuMC5ERVYiLAorICAgICAgICAgICAgIjEuMERFVjEiLAorICAgICAg
ICAgICAgIjEuMERFViIsCisgICAgICAgICAgICAiMS4wLkRFVjEiLAorICAgICAgICAgICAgIjEu
MC1ERVYiLAorICAgICAgICAgICAgIjEuMC1ERVYxIiwKKyAgICAgICAgICAgICMgVmFyaW91cyBh
bHBoYSBpbmNhcm5hdGlvbnMKKyAgICAgICAgICAgICIxLjBhIiwKKyAgICAgICAgICAgICIxLjAu
YSIsCisgICAgICAgICAgICAiMS4wLmExIiwKKyAgICAgICAgICAgICIxLjAtYSIsCisgICAgICAg
ICAgICAiMS4wLWExIiwKKyAgICAgICAgICAgICIxLjBhbHBoYSIsCisgICAgICAgICAgICAiMS4w
LmFscGhhIiwKKyAgICAgICAgICAgICIxLjAuYWxwaGExIiwKKyAgICAgICAgICAgICIxLjAtYWxw
aGEiLAorICAgICAgICAgICAgIjEuMC1hbHBoYTEiLAorICAgICAgICAgICAgIjEuMEEiLAorICAg
ICAgICAgICAgIjEuMC5BIiwKKyAgICAgICAgICAgICIxLjAuQTEiLAorICAgICAgICAgICAgIjEu
MC1BIiwKKyAgICAgICAgICAgICIxLjAtQTEiLAorICAgICAgICAgICAgIjEuMEFMUEhBIiwKKyAg
ICAgICAgICAgICIxLjAuQUxQSEEiLAorICAgICAgICAgICAgIjEuMC5BTFBIQTEiLAorICAgICAg
ICAgICAgIjEuMC1BTFBIQSIsCisgICAgICAgICAgICAiMS4wLUFMUEhBMSIsCisgICAgICAgICAg
ICAjIFZhcmlvdXMgYmV0YSBpbmNhcm5hdGlvbnMKKyAgICAgICAgICAgICIxLjBiIiwKKyAgICAg
ICAgICAgICIxLjAuYiIsCisgICAgICAgICAgICAiMS4wLmIxIiwKKyAgICAgICAgICAgICIxLjAt
YiIsCisgICAgICAgICAgICAiMS4wLWIxIiwKKyAgICAgICAgICAgICIxLjBiZXRhIiwKKyAgICAg
ICAgICAgICIxLjAuYmV0YSIsCisgICAgICAgICAgICAiMS4wLmJldGExIiwKKyAgICAgICAgICAg
ICIxLjAtYmV0YSIsCisgICAgICAgICAgICAiMS4wLWJldGExIiwKKyAgICAgICAgICAgICIxLjBC
IiwKKyAgICAgICAgICAgICIxLjAuQiIsCisgICAgICAgICAgICAiMS4wLkIxIiwKKyAgICAgICAg
ICAgICIxLjAtQiIsCisgICAgICAgICAgICAiMS4wLUIxIiwKKyAgICAgICAgICAgICIxLjBCRVRB
IiwKKyAgICAgICAgICAgICIxLjAuQkVUQSIsCisgICAgICAgICAgICAiMS4wLkJFVEExIiwKKyAg
ICAgICAgICAgICIxLjAtQkVUQSIsCisgICAgICAgICAgICAiMS4wLUJFVEExIiwKKyAgICAgICAg
ICAgICMgVmFyaW91cyByZWxlYXNlIGNhbmRpZGF0ZSBpbmNhcm5hdGlvbnMKKyAgICAgICAgICAg
ICIxLjBjIiwKKyAgICAgICAgICAgICIxLjAuYyIsCisgICAgICAgICAgICAiMS4wLmMxIiwKKyAg
ICAgICAgICAgICIxLjAtYyIsCisgICAgICAgICAgICAiMS4wLWMxIiwKKyAgICAgICAgICAgICIx
LjByYyIsCisgICAgICAgICAgICAiMS4wLnJjIiwKKyAgICAgICAgICAgICIxLjAucmMxIiwKKyAg
ICAgICAgICAgICIxLjAtcmMiLAorICAgICAgICAgICAgIjEuMC1yYzEiLAorICAgICAgICAgICAg
IjEuMEMiLAorICAgICAgICAgICAgIjEuMC5DIiwKKyAgICAgICAgICAgICIxLjAuQzEiLAorICAg
ICAgICAgICAgIjEuMC1DIiwKKyAgICAgICAgICAgICIxLjAtQzEiLAorICAgICAgICAgICAgIjEu
MFJDIiwKKyAgICAgICAgICAgICIxLjAuUkMiLAorICAgICAgICAgICAgIjEuMC5SQzEiLAorICAg
ICAgICAgICAgIjEuMC1SQyIsCisgICAgICAgICAgICAiMS4wLVJDMSIsCisgICAgICAgICAgICAj
IFZhcmlvdXMgcG9zdCByZWxlYXNlIGluY2FybmF0aW9ucworICAgICAgICAgICAgIjEuMHBvc3Qi
LAorICAgICAgICAgICAgIjEuMC5wb3N0IiwKKyAgICAgICAgICAgICIxLjBwb3N0MSIsCisgICAg
ICAgICAgICAiMS4wcG9zdCIsCisgICAgICAgICAgICAiMS4wLXBvc3QiLAorICAgICAgICAgICAg
IjEuMC1wb3N0MSIsCisgICAgICAgICAgICAiMS4wUE9TVCIsCisgICAgICAgICAgICAiMS4wLlBP
U1QiLAorICAgICAgICAgICAgIjEuMFBPU1QxIiwKKyAgICAgICAgICAgICIxLjBQT1NUIiwKKyAg
ICAgICAgICAgICIxLjAuUE9TVDEiLAorICAgICAgICAgICAgIjEuMC1QT1NUIiwKKyAgICAgICAg
ICAgICIxLjAtUE9TVDEiLAorICAgICAgICAgICAgIjEuMC01IiwKKyAgICAgICAgICAgICMgTG9j
YWwgdmVyc2lvbiBjYXNlIGluc2Vuc2l0aXZpdHkKKyAgICAgICAgICAgICIxLjArQWJDIgorICAg
ICAgICAgICAgIyBJbnRlZ2VyIE5vcm1hbGl6YXRpb24KKyAgICAgICAgICAgICIxLjAxIiwKKyAg
ICAgICAgICAgICIxLjBhMDUiLAorICAgICAgICAgICAgIjEuMGIwNyIsCisgICAgICAgICAgICAi
MS4wYzA1NiIsCisgICAgICAgICAgICAiMS4wcmMwOSIsCisgICAgICAgICAgICAiMS4wLnBvc3Qw
MDAiLAorICAgICAgICAgICAgIjEuMS5kZXYwOTAwMCIsCisgICAgICAgICAgICAiMDAhMS4yIiwK
KyAgICAgICAgICAgICIwMTAwITAuMCIsCisgICAgICAgICAgICAjIFZhcmlvdXMgb3RoZXIgbm9y
bWFsaXphdGlvbnMKKyAgICAgICAgICAgICJ2MS4wIiwKKyAgICAgICAgICAgICIgIFxyIFxmIFx2
IHYxLjBcdFxuIiwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyc19u
b3JtYWxpemVkKHNlbGYsIHZlcnNpb24pOgorICAgICAgICBpZiAiKyIgbm90IGluIHZlcnNpb246
CisgICAgICAgICAgICBvcHMgPSBbIn49IiwgIj09IiwgIiE9IiwgIjw9IiwgIj49IiwgIjwiLCAi
PiJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcHMgPSBbIj09IiwgIiE9Il0KKworICAg
ICAgICBmb3Igb3AgaW4gb3BzOgorICAgICAgICAgICAgU3BlY2lmaWVyKG9wICsgdmVyc2lvbikK
KworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJzcGVjaWZpZXIiLCAi
ZXhwZWN0ZWQiKSwKKyAgICAgICAgWworICAgICAgICAgICAgIyBTaW5nbGUgaXRlbSBzcGVjaWZp
ZXJzIHNob3VsZCBqdXN0IGJlIHJlZmxleGl2ZQorICAgICAgICAgICAgKCIhPTIuMCIsICIhPTIu
MCIpLAorICAgICAgICAgICAgKCI8Mi4wIiwgIjwyLjAiKSwKKyAgICAgICAgICAgICgiPD0yLjAi
LCAiPD0yLjAiKSwKKyAgICAgICAgICAgICgiPT0yLjAiLCAiPT0yLjAiKSwKKyAgICAgICAgICAg
ICgiPjIuMCIsICI+Mi4wIiksCisgICAgICAgICAgICAoIj49Mi4wIiwgIj49Mi4wIiksCisgICAg
ICAgICAgICAoIn49Mi4wIiwgIn49Mi4wIiksCisgICAgICAgICAgICAjIFNwYWNlcyBzaG91bGQg
YmUgcmVtb3ZlZAorICAgICAgICAgICAgKCI8IDIiLCAiPDIiKSwKKyAgICAgICAgXSwKKyAgICAp
CisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyc19zdHJfYW5kX3JlcHIoc2VsZiwgc3BlY2lmaWVyLCBl
eHBlY3RlZCk6CisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXIoc3BlY2lmaWVyKQorCisgICAgICAg
IGFzc2VydCBzdHIoc3BlYykgPT0gZXhwZWN0ZWQKKyAgICAgICAgYXNzZXJ0IHJlcHIoc3BlYykg
PT0gIjxTcGVjaWZpZXIoezB9KT4iLmZvcm1hdChyZXByKGV4cGVjdGVkKSkKKworICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgic3BlY2lmaWVyIiwgU1BFQ0lGSUVSUykKKyAgICBkZWYgdGVz
dF9zcGVjaWZpZXJzX2hhc2goc2VsZiwgc3BlY2lmaWVyKToKKyAgICAgICAgYXNzZXJ0IGhhc2go
U3BlY2lmaWVyKHNwZWNpZmllcikpID09IGhhc2goU3BlY2lmaWVyKHNwZWNpZmllcikpCisKKyAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgibGVmdCIsICJyaWdodCIsICJv
cCIpLAorICAgICAgICBpdGVydG9vbHMuY2hhaW4oCisgICAgICAgICAgICAqCisgICAgICAgICAg
ICAjIFZlcmlmeSB0aGF0IHRoZSBlcXVhbCAoPT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQor
ICAgICAgICAgICAgW1soeCwgeCwgb3BlcmF0b3IuZXEpIGZvciB4IGluIFNQRUNJRklFUlNdXQor
ICAgICAgICAgICAgKworICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbm90IGVxdWFsICgh
PSkgb3BlcmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgWyh4LCB5LCBvcGVyYXRvci5uZSkgZm9yIGosIHkgaW4gZW51bWVyYXRlKFNQRUNJRklFUlMp
IGlmIGkgIT0gal0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoU1BFQ0lG
SUVSUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgKSwKKyAgICApCisgICAgZGVmIHRlc3RfY29t
cGFyaXNvbl90cnVlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAgICAgIGFzc2VydCBvcChT
cGVjaWZpZXIobGVmdCksIFNwZWNpZmllcihyaWdodCkpCisgICAgICAgIGFzc2VydCBvcChsZWZ0
LCBTcGVjaWZpZXIocmlnaHQpKQorICAgICAgICBhc3NlcnQgb3AoU3BlY2lmaWVyKGxlZnQpLCBy
aWdodCkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoImxlZnQiLCAicmlnaHQiKSwg
WygiPT0yLjguMCIsICI9PTIuOCIpXSkKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uX2Nhbm9uaWNh
bGl6ZXMoc2VsZiwgbGVmdCwgcmlnaHQpOgorICAgICAgICBhc3NlcnQgU3BlY2lmaWVyKGxlZnQp
ID09IFNwZWNpZmllcihyaWdodCkKKyAgICAgICAgYXNzZXJ0IGxlZnQgPT0gU3BlY2lmaWVyKHJp
Z2h0KQorICAgICAgICBhc3NlcnQgU3BlY2lmaWVyKGxlZnQpID09IHJpZ2h0CisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgibGVmdCIsICJyaWdodCIsICJvcCIpLAor
ICAgICAgICBpdGVydG9vbHMuY2hhaW4oCisgICAgICAgICAgICAqCisgICAgICAgICAgICAjIFZl
cmlmeSB0aGF0IHRoZSBlcXVhbCAoPT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAg
ICAgICAgW1soeCwgeCwgb3BlcmF0b3IubmUpIGZvciB4IGluIFNQRUNJRklFUlNdXQorICAgICAg
ICAgICAgKworICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbm90IGVxdWFsICghPSkgb3Bl
cmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4
LCB5LCBvcGVyYXRvci5lcSkgZm9yIGosIHkgaW4gZW51bWVyYXRlKFNQRUNJRklFUlMpIGlmIGkg
IT0gal0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoU1BFQ0lGSUVSUykK
KyAgICAgICAgICAgIF0KKyAgICAgICAgKSwKKyAgICApCisgICAgZGVmIHRlc3RfY29tcGFyaXNv
bl9mYWxzZShzZWxmLCBsZWZ0LCByaWdodCwgb3ApOgorICAgICAgICBhc3NlcnQgbm90IG9wKFNw
ZWNpZmllcihsZWZ0KSwgU3BlY2lmaWVyKHJpZ2h0KSkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcChs
ZWZ0LCBTcGVjaWZpZXIocmlnaHQpKQorICAgICAgICBhc3NlcnQgbm90IG9wKFNwZWNpZmllcihs
ZWZ0KSwgcmlnaHQpCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uX25vbl9zcGVjaWZpZXIoc2Vs
Zik6CisgICAgICAgIGFzc2VydCBTcGVjaWZpZXIoIj09MS4wIikgIT0gMTIKKyAgICAgICAgYXNz
ZXJ0IG5vdCBTcGVjaWZpZXIoIj09MS4wIikgPT0gMTIKKyAgICAgICAgYXNzZXJ0IFNwZWNpZmll
cigiPT0xLjAiKSAhPSAiMTIiCisgICAgICAgIGFzc2VydCBub3QgU3BlY2lmaWVyKCI9PTEuMCIp
ID09ICIxMiIKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJ2ZXJz
aW9uIiwgInNwZWMiLCAiZXhwZWN0ZWQiKSwKKyAgICAgICAgWworICAgICAgICAgICAgKHYsIHMs
IFRydWUpCisgICAgICAgICAgICBmb3IgdiwgcyBpbiBbCisgICAgICAgICAgICAgICAgIyBUZXN0
IHRoZSBlcXVhbGl0eSBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMCIsICI9PTIiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMCIsICI9PTIuMCIpLAorICAgICAgICAgICAgICAgICgiMi4w
IiwgIj09Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCtkZWFkYmVlZiIsICI9PTIiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMCtkZWFkYmVlZiIsICI9PTIuMCIpLAorICAgICAgICAgICAg
ICAgICgiMi4wK2RlYWRiZWVmIiwgIj09Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCtk
ZWFkYmVlZiIsICI9PTIrZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCtkZWFkYmVl
ZiIsICI9PTIuMCtkZWFkYmVlZiIpLAorICAgICAgICAgICAgICAgICgiMi4wK2RlYWRiZWVmIiwg
Ij09Mi4wLjArZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCtkZWFkYmVlZi4wIiwg
Ij09Mi4wLjArZGVhZGJlZWYuMDAiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGVxdWFs
aXR5IG9wZXJhdGlvbiB3aXRoIGEgcHJlZml4CisgICAgICAgICAgICAgICAgKCIyLmRldjEiLCAi
PT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjJhMSIsICI9PTIuKiIpLAorICAgICAgICAgICAg
ICAgICgiMmExLnBvc3QxIiwgIj09Mi4qIiksCisgICAgICAgICAgICAgICAgKCIyYjEiLCAiPT0y
LioiKSwKKyAgICAgICAgICAgICAgICAoIjJiMS5kZXYxIiwgIj09Mi4qIiksCisgICAgICAgICAg
ICAgICAgKCIyYzEiLCAiPT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjJjMS5wb3N0MS5kZXYx
IiwgIj09Mi4qIiksCisgICAgICAgICAgICAgICAgKCIycmMxIiwgIj09Mi4qIiksCisgICAgICAg
ICAgICAgICAgKCIyIiwgIj09Mi4qIiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPT0yLioi
KSwKKyAgICAgICAgICAgICAgICAoIjIuMC4wIiwgIj09Mi4qIiksCisgICAgICAgICAgICAgICAg
KCIyLjAucG9zdDEiLCAiPT0yLjAucG9zdDEuKiIpLAorICAgICAgICAgICAgICAgICgiMi4wLnBv
c3QxLmRldjEiLCAiPT0yLjAucG9zdDEuKiIpLAorICAgICAgICAgICAgICAgICgiMi4xK2xvY2Fs
LnZlcnNpb24iLCAiPT0yLjEuKiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgaW4tZXF1
YWxpdHkgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjEiLCAiIT0yIiksCisgICAgICAg
ICAgICAgICAgKCIyLjEiLCAiIT0yLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC4xIiwgIiE9
MiIpLAorICAgICAgICAgICAgICAgICgiMi4wLjEiLCAiIT0yLjAiKSwKKyAgICAgICAgICAgICAg
ICAoIjIuMC4xIiwgIiE9Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICIhPTIuMCtk
ZWFkYmVlZiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgaW4tZXF1YWxpdHkgb3BlcmF0
aW9uIHdpdGggYSBwcmVmaXgKKyAgICAgICAgICAgICAgICAoIjIuMCIsICIhPTMuKiIpLAorICAg
ICAgICAgICAgICAgICgiMi4xIiwgIiE9Mi4wLioiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3Qg
dGhlIGdyZWF0ZXIgdGhhbiBlcXVhbCBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMCIs
ICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICI+PTIuMCIpLAorICAgICAgICAgICAg
ICAgICgiMi4wIiwgIj49Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0MSIsICI+
PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0MS5kZXYxIiwgIj49MiIpLAorICAgICAg
ICAgICAgICAgICgiMyIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGxlc3Mg
dGhhbiBlcXVhbCBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMCIsICI8PTIiKSwKKyAg
ICAgICAgICAgICAgICAoIjIuMCIsICI8PTIuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwg
Ijw9Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5kZXYxIiwgIjw9MiIpLAorICAgICAg
ICAgICAgICAgICgiMi4wYTEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBhMS5kZXYx
IiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEiLCAiPD0yIiksCisgICAgICAgICAg
ICAgICAgKCIyLjBiMS5wb3N0MSIsICI8PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGMxIiwg
Ijw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYzEucG9zdDEuZGV2MSIsICI8PTIiKSwKKyAg
ICAgICAgICAgICAgICAoIjIuMHJjMSIsICI8PTIiKSwKKyAgICAgICAgICAgICAgICAoIjEiLCAi
PD0yIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBncmVhdGVyIHRoYW4gb3BlcmF0aW9u
CisgICAgICAgICAgICAgICAgKCIzIiwgIj4yIiksCisgICAgICAgICAgICAgICAgKCIyLjEiLCAi
PjIuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wLjEiLCAiPjIiKSwKKyAgICAgICAgICAgICAg
ICAoIjIuMS5wb3N0MSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4xK2xvY2FsLnZlcnNp
b24iLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGxlc3MgdGhhbiBvcGVyYXRp
b24KKyAgICAgICAgICAgICAgICAoIjEiLCAiPDIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIs
ICI8Mi4xIiksCisgICAgICAgICAgICAgICAgKCIyLjAuZGV2MCIsICI8Mi4xIiksCisgICAgICAg
ICAgICAgICAgIyBUZXN0IHRoZSBjb21wYXRpYmlsaXR5IG9wZXJhdGlvbgorICAgICAgICAgICAg
ICAgICgiMSIsICJ+PTEuMCIpLAorICAgICAgICAgICAgICAgICgiMS4wLjEiLCAifj0xLjAiKSwK
KyAgICAgICAgICAgICAgICAoIjEuMSIsICJ+PTEuMCIpLAorICAgICAgICAgICAgICAgICgiMS45
OTk5OTk5IiwgIn49MS4wIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoYXQgZXBvY2hzIGFy
ZSBoYW5kbGVkIHNhbmVseQorICAgICAgICAgICAgICAgICgiMiExLjAiLCAifj0yITEuMCIpLAor
ICAgICAgICAgICAgICAgICgiMiExLjAiLCAiPT0yITEuKiIpLAorICAgICAgICAgICAgICAgICgi
MiExLjAiLCAiPT0yITEuMCIpLAorICAgICAgICAgICAgICAgICgiMiExLjAiLCAiIT0xLjAiKSwK
KyAgICAgICAgICAgICAgICAoIjEuMCIsICIhPTIhMS4wIiksCisgICAgICAgICAgICAgICAgKCIx
LjAiLCAiPD0yITAuMSIpLAorICAgICAgICAgICAgICAgICgiMiExLjAiLCAiPj0yLjAiKSwKKyAg
ICAgICAgICAgICAgICAoIjEuMCIsICI8MiEwLjEiKSwKKyAgICAgICAgICAgICAgICAoIjIhMS4w
IiwgIj4yLjAiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3Qgc29tZSBub3JtYWxpemF0aW9uIHJ1
bGVzCisgICAgICAgICAgICAgICAgKCIyLjAuNSIsICI+Mi4wZGV2IiksCisgICAgICAgICAgICBd
CisgICAgICAgIF0KKyAgICAgICAgKyBbCisgICAgICAgICAgICAodiwgcywgRmFsc2UpCisgICAg
ICAgICAgICBmb3IgdiwgcyBpbiBbCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBlcXVhbGl0
eSBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMSIsICI9PTIiKSwKKyAgICAgICAgICAg
ICAgICAoIjIuMSIsICI9PTIuMCIpLAorICAgICAgICAgICAgICAgICgiMi4xIiwgIj09Mi4wLjAi
KSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICI9PTIuMCtkZWFkYmVlZiIpLAorICAgICAgICAg
ICAgICAgICMgVGVzdCB0aGUgZXF1YWxpdHkgb3BlcmF0aW9uIHdpdGggYSBwcmVmaXgKKyAgICAg
ICAgICAgICAgICAoIjIuMCIsICI9PTMuKiIpLAorICAgICAgICAgICAgICAgICgiMi4xIiwgIj09
Mi4wLioiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGluLWVxdWFsaXR5IG9wZXJhdGlv
bgorICAgICAgICAgICAgICAgICgiMi4wIiwgIiE9MiIpLAorICAgICAgICAgICAgICAgICgiMi4w
IiwgIiE9Mi4wIiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiIT0yLjAuMCIpLAorICAgICAg
ICAgICAgICAgICgiMi4wK2RlYWRiZWVmIiwgIiE9MiIpLAorICAgICAgICAgICAgICAgICgiMi4w
K2RlYWRiZWVmIiwgIiE9Mi4wIiksCisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYiLCAi
IT0yLjAuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wK2RlYWRiZWVmIiwgIiE9MitkZWFkYmVl
ZiIpLAorICAgICAgICAgICAgICAgICgiMi4wK2RlYWRiZWVmIiwgIiE9Mi4wK2RlYWRiZWVmIiks
CisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYiLCAiIT0yLjAuMCtkZWFkYmVlZiIpLAor
ICAgICAgICAgICAgICAgICgiMi4wK2RlYWRiZWVmLjAiLCAiIT0yLjAuMCtkZWFkYmVlZi4wMCIp
LAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgaW4tZXF1YWxpdHkgb3BlcmF0aW9uIHdpdGgg
YSBwcmVmaXgKKyAgICAgICAgICAgICAgICAoIjIuZGV2MSIsICIhPTIuKiIpLAorICAgICAgICAg
ICAgICAgICgiMmExIiwgIiE9Mi4qIiksCisgICAgICAgICAgICAgICAgKCIyYTEucG9zdDEiLCAi
IT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjJiMSIsICIhPTIuKiIpLAorICAgICAgICAgICAg
ICAgICgiMmIxLmRldjEiLCAiIT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjJjMSIsICIhPTIu
KiIpLAorICAgICAgICAgICAgICAgICgiMmMxLnBvc3QxLmRldjEiLCAiIT0yLioiKSwKKyAgICAg
ICAgICAgICAgICAoIjJyYzEiLCAiIT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjIiLCAiIT0y
LioiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICIhPTIuKiIpLAorICAgICAgICAgICAgICAg
ICgiMi4wLjAiLCAiIT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0MSIsICIhPTIu
MC5wb3N0MS4qIiksCisgICAgICAgICAgICAgICAgKCIyLjAucG9zdDEuZGV2MSIsICIhPTIuMC5w
b3N0MS4qIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBncmVhdGVyIHRoYW4gZXF1YWwg
b3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAuZGV2MSIsICI+PTIiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMGExIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEuZGV2MSIs
ICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIxIiwgIj49MiIpLAorICAgICAgICAgICAg
ICAgICgiMi4wYjEucG9zdDEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBjMSIsICI+
PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGMxLnBvc3QxLmRldjEiLCAiPj0yIiksCisgICAg
ICAgICAgICAgICAgKCIyLjByYzEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgKCIxIiwgIj49
MiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgbGVzcyB0aGFuIGVxdWFsIG9wZXJhdGlv
bgorICAgICAgICAgICAgICAgICgiMi4wLnBvc3QxIiwgIjw9MiIpLAorICAgICAgICAgICAgICAg
ICgiMi4wLnBvc3QxLmRldjEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIzIiwgIjw9MiIp
LAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgZ3JlYXRlciB0aGFuIG9wZXJhdGlvbgorICAg
ICAgICAgICAgICAgICgiMSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wLmRldjEiLCAi
PjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGExIiwgIj4yIiksCisgICAgICAgICAgICAgICAg
KCIyLjBhMS5wb3N0MSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEiLCAiPjIiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMGIxLmRldjEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAo
IjIuMGMxIiwgIj4yIiksCisgICAgICAgICAgICAgICAgKCIyLjBjMS5wb3N0MS5kZXYxIiwgIj4y
IiksCisgICAgICAgICAgICAgICAgKCIyLjByYzEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAo
IjIuMCIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wLnBvc3QxIiwgIj4yIiksCisgICAg
ICAgICAgICAgICAgKCIyLjAucG9zdDEuZGV2MSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgi
Mi4wK2xvY2FsLnZlcnNpb24iLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGxl
c3MgdGhhbiBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMC5kZXYxIiwgIjwyIiksCisg
ICAgICAgICAgICAgICAgKCIyLjBhMSIsICI8MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEu
cG9zdDEiLCAiPDIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIxIiwgIjwyIiksCisgICAgICAg
ICAgICAgICAgKCIyLjBiMi5kZXYxIiwgIjwyIiksCisgICAgICAgICAgICAgICAgKCIyLjBjMSIs
ICI8MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYzEucG9zdDEuZGV2MSIsICI8MiIpLAorICAg
ICAgICAgICAgICAgICgiMi4wcmMxIiwgIjwyIiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAi
PDIiKSwKKyAgICAgICAgICAgICAgICAoIjIucG9zdDEiLCAiPDIiKSwKKyAgICAgICAgICAgICAg
ICAoIjIucG9zdDEuZGV2MSIsICI8MiIpLAorICAgICAgICAgICAgICAgICgiMyIsICI8MiIpLAor
ICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgY29tcGF0aWJpbGl0eSBvcGVyYXRpb24KKyAgICAg
ICAgICAgICAgICAoIjIuMCIsICJ+PTEuMCIpLAorICAgICAgICAgICAgICAgICgiMS4xLjAiLCAi
fj0xLjAuMCIpLAorICAgICAgICAgICAgICAgICgiMS4xLnBvc3QxIiwgIn49MS4wLjAiKSwKKyAg
ICAgICAgICAgICAgICAjIFRlc3QgdGhhdCBlcG9jaHMgYXJlIGhhbmRsZWQgc2FuZWx5CisgICAg
ICAgICAgICAgICAgKCIxLjAiLCAifj0yITEuMCIpLAorICAgICAgICAgICAgICAgICgiMiExLjAi
LCAifj0xLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIhMS4wIiwgIj09MS4wIiksCisgICAgICAg
ICAgICAgICAgKCIxLjAiLCAiPT0yITEuMCIpLAorICAgICAgICAgICAgICAgICgiMiExLjAiLCAi
PT0xLioiKSwKKyAgICAgICAgICAgICAgICAoIjEuMCIsICI9PTIhMS4qIiksCisgICAgICAgICAg
ICAgICAgKCIyITEuMCIsICIhPTIhMS4wIiksCisgICAgICAgICAgICBdCisgICAgICAgIF0sCisg
ICAgKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcnMoc2VsZiwgdmVyc2lvbiwgc3BlYywgZXhwZWN0
ZWQpOgorICAgICAgICBzcGVjID0gU3BlY2lmaWVyKHNwZWMsIHByZXJlbGVhc2VzPVRydWUpCisK
KyAgICAgICAgaWYgZXhwZWN0ZWQ6CisgICAgICAgICAgICAjIFRlc3QgdGhhdCB0aGUgcGxhaW4g
c3RyaW5nIGZvcm0gd29ya3MKKyAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uIGluIHNwZWMKKyAg
ICAgICAgICAgIGFzc2VydCBzcGVjLmNvbnRhaW5zKHZlcnNpb24pCisKKyAgICAgICAgICAgICMg
VGVzdCB0aGF0IHRoZSB2ZXJzaW9uIGluc3RhbmNlIGZvcm0gd29ya3MKKyAgICAgICAgICAgIGFz
c2VydCBWZXJzaW9uKHZlcnNpb24pIGluIHNwZWMKKyAgICAgICAgICAgIGFzc2VydCBzcGVjLmNv
bnRhaW5zKFZlcnNpb24odmVyc2lvbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRl
c3QgdGhhdCB0aGUgcGxhaW4gc3RyaW5nIGZvcm0gd29ya3MKKyAgICAgICAgICAgIGFzc2VydCB2
ZXJzaW9uIG5vdCBpbiBzcGVjCisgICAgICAgICAgICBhc3NlcnQgbm90IHNwZWMuY29udGFpbnMo
dmVyc2lvbikKKworICAgICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHZlcnNpb24gaW5zdGFuY2Ug
Zm9ybSB3b3JrcworICAgICAgICAgICAgYXNzZXJ0IFZlcnNpb24odmVyc2lvbikgbm90IGluIHNw
ZWMKKyAgICAgICAgICAgIGFzc2VydCBub3Qgc3BlYy5jb250YWlucyhWZXJzaW9uKHZlcnNpb24p
KQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInZlcnNpb24iLCAi
c3BlYyIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAjIFRlc3QgaWRlbnRp
dHkgY29tcGFyaXNvbiBieSBpdHNlbGYKKyAgICAgICAgICAgICgibG9sd2F0IiwgIj09PWxvbHdh
dCIsIFRydWUpLAorICAgICAgICAgICAgKCJMb2x3YXQiLCAiPT09bG9sd2F0IiwgVHJ1ZSksCisg
ICAgICAgICAgICAoIjEuMCIsICI9PT0xLjAiLCBUcnVlKSwKKyAgICAgICAgICAgICgibm9wZSIs
ICI9PT1sb2x3YXQiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMC4wIiwgIj09PTEuMCIsIEZh
bHNlKSwKKyAgICAgICAgICAgICgiMS4wLmRldjAiLCAiPT09MS4wLmRldjAiLCBUcnVlKSwKKyAg
ICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyc19pZGVudGl0eShzZWxmLCB2
ZXJzaW9uLCBzcGVjLCBleHBlY3RlZCk6CisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXIoc3BlYykK
KworICAgICAgICBpZiBleHBlY3RlZDoKKyAgICAgICAgICAgICMgSWRlbnRpdHkgY29tcGFyaXNv
bnMgb25seSBzdXBwb3J0IHRoZSBwbGFpbiBzdHJpbmcgZm9ybQorICAgICAgICAgICAgYXNzZXJ0
IHZlcnNpb24gaW4gc3BlYworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZGVudGl0eSBj
b21wYXJpc29ucyBvbmx5IHN1cHBvcnQgdGhlIHBsYWluIHN0cmluZyBmb3JtCisgICAgICAgICAg
ICBhc3NlcnQgdmVyc2lvbiBub3QgaW4gc3BlYworCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKAorICAgICAgICAoInNwZWNpZmllciIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAg
ICAgICAgICAoIj09MS4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI+PTEuMCIsIEZhbHNlKSwK
KyAgICAgICAgICAgICgiPD0xLjAiLCBGYWxzZSksCisgICAgICAgICAgICAoIn49MS4wIiwgRmFs
c2UpLAorICAgICAgICAgICAgKCI8MS4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI+MS4wIiwg
RmFsc2UpLAorICAgICAgICAgICAgKCI8MS4wLmRldjEiLCBGYWxzZSksCisgICAgICAgICAgICAo
Ij4xLjAuZGV2MSIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiPT0xLjAuKiIsIEZhbHNlKSwKKyAg
ICAgICAgICAgICgiPT0xLjAuZGV2MSIsIFRydWUpLAorICAgICAgICAgICAgKCI+PTEuMC5kZXYx
IiwgVHJ1ZSksCisgICAgICAgICAgICAoIjw9MS4wLmRldjEiLCBUcnVlKSwKKyAgICAgICAgICAg
ICgifj0xLjAuZGV2MSIsIFRydWUpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9z
cGVjaWZpZXJfcHJlcmVsZWFzZXNfZGV0ZWN0aW9uKHNlbGYsIHNwZWNpZmllciwgZXhwZWN0ZWQp
OgorICAgICAgICBhc3NlcnQgU3BlY2lmaWVyKHNwZWNpZmllcikucHJlcmVsZWFzZXMgPT0gZXhw
ZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJzcGVjaWZp
ZXIiLCAidmVyc2lvbiIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIj49
MS4wIiwgIjIuMC5kZXYxIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI+PTIuMC5kZXYxIiwgIjIu
MGExIiwgVHJ1ZSksCisgICAgICAgICAgICAoIj09Mi4wLioiLCAiMi4wYTEuZGV2MSIsIEZhbHNl
KSwKKyAgICAgICAgICAgICgiPT0yLjBhMS4qIiwgIjIuMGExLmRldjEiLCBUcnVlKSwKKyAgICAg
ICAgICAgICgiPD0yLjAiLCAiMS4wLmRldjEiLCBGYWxzZSksCisgICAgICAgICAgICAoIjw9Mi4w
LmRldjEiLCAiMS4wYTEiLCBUcnVlKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rf
c3BlY2lmaWVyc19wcmVyZWxlYXNlcyhzZWxmLCBzcGVjaWZpZXIsIHZlcnNpb24sIGV4cGVjdGVk
KToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllcihzcGVjaWZpZXIpCisKKyAgICAgICAgaWYgZXhw
ZWN0ZWQ6CisgICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiBpbiBzcGVjCisgICAgICAgICAgICBz
cGVjLnByZXJlbGVhc2VzID0gRmFsc2UKKyAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uIG5vdCBp
biBzcGVjCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiBub3QgaW4g
c3BlYworICAgICAgICAgICAgc3BlYy5wcmVyZWxlYXNlcyA9IFRydWUKKyAgICAgICAgICAgIGFz
c2VydCB2ZXJzaW9uIGluIHNwZWMKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAg
ICAgICAgKCJzcGVjaWZpZXIiLCAicHJlcmVsZWFzZXMiLCAiaW5wdXQiLCAiZXhwZWN0ZWQiKSwK
KyAgICAgICAgWworICAgICAgICAgICAgKCI+PTEuMCIsIE5vbmUsIFsiMi4wYTEiXSwgWyIyLjBh
MSJdKSwKKyAgICAgICAgICAgICgiPj0xLjAuZGV2MSIsIE5vbmUsIFsiMS4wIiwgIjIuMGExIl0s
IFsiMS4wIiwgIjIuMGExIl0pLAorICAgICAgICAgICAgKCI+PTEuMC5kZXYxIiwgRmFsc2UsIFsi
MS4wIiwgIjIuMGExIl0sIFsiMS4wIl0pLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVz
dF9zcGVjaWZpZXJfZmlsdGVyKHNlbGYsIHNwZWNpZmllciwgcHJlcmVsZWFzZXMsIGlucHV0LCBl
eHBlY3RlZCk6CisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXIoc3BlY2lmaWVyKQorCisgICAgICAg
IGt3YXJncyA9IHsicHJlcmVsZWFzZXMiOiBwcmVyZWxlYXNlc30gaWYgcHJlcmVsZWFzZXMgaXMg
bm90IE5vbmUgZWxzZSB7fQorCisgICAgICAgIGFzc2VydCBsaXN0KHNwZWMuZmlsdGVyKGlucHV0
LCAqKmt3YXJncykpID09IGV4cGVjdGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsueGZhaWwKKyAgICBk
ZWYgdGVzdF9zcGVjaWZpZXJfZXhwbGljaXRfbGVnYWN5KHNlbGYpOgorICAgICAgICBhc3NlcnQg
U3BlY2lmaWVyKCI9PTEuMCIpLmNvbnRhaW5zKExlZ2FjeVZlcnNpb24oIjEuMCIpKQorCisgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInNwZWMiLCAib3AiKSwKKyAgICAg
ICAgWworICAgICAgICAgICAgKCJ+PTIuMCIsICJ+PSIpLAorICAgICAgICAgICAgKCI9PTIuMS4q
IiwgIj09IiksCisgICAgICAgICAgICAoIj09Mi4xLjAuMyIsICI9PSIpLAorICAgICAgICAgICAg
KCIhPTIuMi4qIiwgIiE9IiksCisgICAgICAgICAgICAoIiE9Mi4yLjAuNSIsICIhPSIpLAorICAg
ICAgICAgICAgKCI8PTUiLCAiPD0iKSwKKyAgICAgICAgICAgICgiPj03LjlhMSIsICI+PSIpLAor
ICAgICAgICAgICAgKCI8MS4wLmRldjEiLCAiPCIpLAorICAgICAgICAgICAgKCI+Mi4wLnBvc3Qx
IiwgIj4iKSwKKyAgICAgICAgICAgICgiPT09bG9sd2F0IiwgIj09PSIpLAorICAgICAgICBdLAor
ICAgICkKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJfb3BlcmF0b3JfcHJvcGVydHkoc2VsZiwgc3Bl
Yywgb3ApOgorICAgICAgICBhc3NlcnQgU3BlY2lmaWVyKHNwZWMpLm9wZXJhdG9yID09IG9wCisK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgic3BlYyIsICJ2ZXJzaW9u
IiksCisgICAgICAgIFsKKyAgICAgICAgICAgICgifj0yLjAiLCAiMi4wIiksCisgICAgICAgICAg
ICAoIj09Mi4xLioiLCAiMi4xLioiKSwKKyAgICAgICAgICAgICgiPT0yLjEuMC4zIiwgIjIuMS4w
LjMiKSwKKyAgICAgICAgICAgICgiIT0yLjIuKiIsICIyLjIuKiIpLAorICAgICAgICAgICAgKCIh
PTIuMi4wLjUiLCAiMi4yLjAuNSIpLAorICAgICAgICAgICAgKCI8PTUiLCAiNSIpLAorICAgICAg
ICAgICAgKCI+PTcuOWExIiwgIjcuOWExIiksCisgICAgICAgICAgICAoIjwxLjAuZGV2MSIsICIx
LjAuZGV2MSIpLAorICAgICAgICAgICAgKCI+Mi4wLnBvc3QxIiwgIjIuMC5wb3N0MSIpLAorICAg
ICAgICAgICAgKCI9PT1sb2x3YXQiLCAibG9sd2F0IiksCisgICAgICAgIF0sCisgICAgKQorICAg
IGRlZiB0ZXN0X3NwZWNpZmllcl92ZXJzaW9uX3Byb3BlcnR5KHNlbGYsIHNwZWMsIHZlcnNpb24p
OgorICAgICAgICBhc3NlcnQgU3BlY2lmaWVyKHNwZWMpLnZlcnNpb24gPT0gdmVyc2lvbgorCisg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInNwZWMiLCAiZXhwZWN0ZWRf
bGVuZ3RoIiksCisgICAgICAgIFsoIiIsIDApLCAoIj09Mi4wIiwgMSksICgiPj0yLjAiLCAxKSwg
KCI+PTIuMCw8MyIsIDIpLCAoIj49Mi4wLDwzLD09Mi40IiwgMyldLAorICAgICkKKyAgICBkZWYg
dGVzdF9sZW5ndGgoc2VsZiwgc3BlYywgZXhwZWN0ZWRfbGVuZ3RoKToKKyAgICAgICAgc3BlYyA9
IFNwZWNpZmllclNldChzcGVjKQorICAgICAgICBhc3NlcnQgbGVuKHNwZWMpID09IGV4cGVjdGVk
X2xlbmd0aAorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInNwZWMi
LCAiZXhwZWN0ZWRfaXRlbXMiKSwKKyAgICAgICAgWworICAgICAgICAgICAgKCIiLCBbXSksCisg
ICAgICAgICAgICAoIj09Mi4wIiwgWyI9PTIuMCJdKSwKKyAgICAgICAgICAgICgiPj0yLjAiLCBb
Ij49Mi4wIl0pLAorICAgICAgICAgICAgKCI+PTIuMCw8MyIsIFsiPj0yLjAiLCAiPDMiXSksCisg
ICAgICAgICAgICAoIj49Mi4wLDwzLD09Mi40IiwgWyI+PTIuMCIsICI8MyIsICI9PTIuNCJdKSwK
KyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfaXRlcmF0aW9uKHNlbGYsIHNwZWMsIGV4
cGVjdGVkX2l0ZW1zKToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllclNldChzcGVjKQorICAgICAg
ICBpdGVtcyA9IHNldChzdHIoaXRlbSkgZm9yIGl0ZW0gaW4gc3BlYykKKyAgICAgICAgYXNzZXJ0
IGl0ZW1zID09IHNldChleHBlY3RlZF9pdGVtcykKKworCitjbGFzcyBUZXN0TGVnYWN5U3BlY2lm
aWVyOgorICAgIGRlZiB0ZXN0X2xlZ2FjeV9zcGVjaWZpZXJfaXNfZGVwcmVjYXRlZChzZWxmKToK
KyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoK
KyAgICAgICAgICAgIExlZ2FjeVNwZWNpZmllcigiPj1zb21lLWxlZ2FjeS12ZXJzaW9uIikKKyAg
ICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xh
c3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKAorICAgICAgICAoInZlcnNpb24iLCAic3BlYyIsICJleHBlY3RlZCIpLAor
ICAgICAgICBbCisgICAgICAgICAgICAodiwgcywgVHJ1ZSkKKyAgICAgICAgICAgIGZvciB2LCBz
IGluIFsKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGVxdWFsaXR5IG9wZXJhdGlvbgorICAg
ICAgICAgICAgICAgICgiMi4wIiwgIj09MiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIj09
Mi4wIiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPT0yLjAuMCIpLAorICAgICAgICAgICAg
ICAgICMgVGVzdCB0aGUgaW4tZXF1YWxpdHkgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIy
LjEiLCAiIT0yIiksCisgICAgICAgICAgICAgICAgKCIyLjEiLCAiIT0yLjAiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMC4xIiwgIiE9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wLjEiLCAiIT0y
LjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC4xIiwgIiE9Mi4wLjAiKSwKKyAgICAgICAgICAg
ICAgICAjIFRlc3QgdGhlIGdyZWF0ZXIgdGhhbiBlcXVhbCBvcGVyYXRpb24KKyAgICAgICAgICAg
ICAgICAoIjIuMCIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICI+PTIuMCIpLAor
ICAgICAgICAgICAgICAgICgiMi4wIiwgIj49Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIu
MC5wb3N0MSIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0MS5kZXYxIiwgIj49
MiIpLAorICAgICAgICAgICAgICAgICgiMyIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAjIFRl
c3QgdGhlIGxlc3MgdGhhbiBlcXVhbCBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMCIs
ICI8PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICI8PTIuMCIpLAorICAgICAgICAgICAg
ICAgICgiMi4wIiwgIjw9Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5kZXYxIiwgIjw9
MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAg
KCIyLjBhMS5kZXYxIiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEiLCAiPD0yIiks
CisgICAgICAgICAgICAgICAgKCIyLjBiMS5wb3N0MSIsICI8PTIiKSwKKyAgICAgICAgICAgICAg
ICAoIjIuMGMxIiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYzEucG9zdDEuZGV2MSIs
ICI8PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMHJjMSIsICI8PTIiKSwKKyAgICAgICAgICAg
ICAgICAoIjEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBncmVhdGVyIHRo
YW4gb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIzIiwgIj4yIiksCisgICAgICAgICAgICAg
ICAgKCIyLjEiLCAiPjIuMCIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgbGVzcyB0aGFu
IG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMSIsICI8MiIpLAorICAgICAgICAgICAgICAg
ICgiMi4wIiwgIjwyLjEiKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgXQorICAgICAgICArIFsK
KyAgICAgICAgICAgICh2LCBzLCBGYWxzZSkKKyAgICAgICAgICAgIGZvciB2LCBzIGluIFsKKyAg
ICAgICAgICAgICAgICAjIFRlc3QgdGhlIGVxdWFsaXR5IG9wZXJhdGlvbgorICAgICAgICAgICAg
ICAgICgiMi4xIiwgIj09MiIpLAorICAgICAgICAgICAgICAgICgiMi4xIiwgIj09Mi4wIiksCisg
ICAgICAgICAgICAgICAgKCIyLjEiLCAiPT0yLjAuMCIpLAorICAgICAgICAgICAgICAgICMgVGVz
dCB0aGUgaW4tZXF1YWxpdHkgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiIT0y
IiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiIT0yLjAiKSwKKyAgICAgICAgICAgICAgICAo
IjIuMCIsICIhPTIuMC4wIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBncmVhdGVyIHRo
YW4gZXF1YWwgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAuZGV2MSIsICI+PTIiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMGExIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4w
YTEuZGV2MSIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIxIiwgIj49MiIpLAorICAg
ICAgICAgICAgICAgICgiMi4wYjEucG9zdDEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgKCIy
LjBjMSIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGMxLnBvc3QxLmRldjEiLCAiPj0y
IiksCisgICAgICAgICAgICAgICAgKCIyLjByYzEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAg
KCIxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgbGVzcyB0aGFuIGVxdWFs
IG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMi4wLnBvc3QxIiwgIjw9MiIpLAorICAgICAg
ICAgICAgICAgICgiMi4wLnBvc3QxLmRldjEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIz
IiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgZ3JlYXRlciB0aGFuIG9wZXJh
dGlvbgorICAgICAgICAgICAgICAgICgiMSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4w
LmRldjEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGExIiwgIj4yIiksCisgICAgICAg
ICAgICAgICAgKCIyLjBhMS5wb3N0MSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEi
LCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIxLmRldjEiLCAiPjIiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMGMxIiwgIj4yIiksCisgICAgICAgICAgICAgICAgKCIyLjBjMS5wb3N0MS5k
ZXYxIiwgIj4yIiksCisgICAgICAgICAgICAgICAgKCIyLjByYzEiLCAiPjIiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMCIsICI+MiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgbGVzcyB0
aGFuIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMyIsICI8MiIpLAorICAgICAgICAgICAg
XQorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJzKHNlbGYsIHZlcnNp
b24sIHNwZWMsIGV4cGVjdGVkKToKKyAgICAgICAgc3BlYyA9IExlZ2FjeVNwZWNpZmllcihzcGVj
LCBwcmVyZWxlYXNlcz1UcnVlKQorCisgICAgICAgIGlmIGV4cGVjdGVkOgorICAgICAgICAgICAg
IyBUZXN0IHRoYXQgdGhlIHBsYWluIHN0cmluZyBmb3JtIHdvcmtzCisgICAgICAgICAgICBhc3Nl
cnQgdmVyc2lvbiBpbiBzcGVjCisgICAgICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlucyh2ZXJz
aW9uKQorCisgICAgICAgICAgICAjIFRlc3QgdGhhdCB0aGUgdmVyc2lvbiBpbnN0YW5jZSBmb3Jt
IHdvcmtzCisgICAgICAgICAgICBhc3NlcnQgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKSBpbiBzcGVj
CisgICAgICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlucyhMZWdhY3lWZXJzaW9uKHZlcnNpb24p
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHBsYWluIHN0cmlu
ZyBmb3JtIHdvcmtzCisgICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiBub3QgaW4gc3BlYworICAg
ICAgICAgICAgYXNzZXJ0IG5vdCBzcGVjLmNvbnRhaW5zKHZlcnNpb24pCisKKyAgICAgICAgICAg
ICMgVGVzdCB0aGF0IHRoZSB2ZXJzaW9uIGluc3RhbmNlIGZvcm0gd29ya3MKKyAgICAgICAgICAg
IGFzc2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pIG5vdCBpbiBzcGVjCisgICAgICAgICAgICBh
c3NlcnQgbm90IHNwZWMuY29udGFpbnMoTGVnYWN5VmVyc2lvbih2ZXJzaW9uKSkKKworICAgIGRl
ZiB0ZXN0X3NwZWNpZmllcl9leHBsaWNpdF9wcmVyZWxlYXNlcyhzZWxmKToKKyAgICAgICAgc3Bl
YyA9IExlZ2FjeVNwZWNpZmllcigiPj0xLjAiKQorICAgICAgICBhc3NlcnQgbm90IHNwZWMucHJl
cmVsZWFzZXMKKyAgICAgICAgc3BlYy5wcmVyZWxlYXNlcyA9IFRydWUKKyAgICAgICAgYXNzZXJ0
IHNwZWMucHJlcmVsZWFzZXMKKworICAgICAgICBzcGVjID0gTGVnYWN5U3BlY2lmaWVyKCI+PTEu
MCIsIHByZXJlbGVhc2VzPUZhbHNlKQorICAgICAgICBhc3NlcnQgbm90IHNwZWMucHJlcmVsZWFz
ZXMKKyAgICAgICAgc3BlYy5wcmVyZWxlYXNlcyA9IFRydWUKKyAgICAgICAgYXNzZXJ0IHNwZWMu
cHJlcmVsZWFzZXMKKworICAgICAgICBzcGVjID0gTGVnYWN5U3BlY2lmaWVyKCI+PTEuMCIsIHBy
ZXJlbGVhc2VzPVRydWUpCisgICAgICAgIGFzc2VydCBzcGVjLnByZXJlbGVhc2VzCisgICAgICAg
IHNwZWMucHJlcmVsZWFzZXMgPSBGYWxzZQorICAgICAgICBhc3NlcnQgbm90IHNwZWMucHJlcmVs
ZWFzZXMKKworICAgICAgICBzcGVjID0gTGVnYWN5U3BlY2lmaWVyKCI+PTEuMCIsIHByZXJlbGVh
c2VzPVRydWUpCisgICAgICAgIGFzc2VydCBzcGVjLnByZXJlbGVhc2VzCisgICAgICAgIHNwZWMu
cHJlcmVsZWFzZXMgPSBOb25lCisgICAgICAgIGFzc2VydCBub3Qgc3BlYy5wcmVyZWxlYXNlcwor
CisKK2NsYXNzIFRlc3RTcGVjaWZpZXJTZXQ6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfZW1w
dHlfc3BlY2lmaWVyKHNlbGYsIHZlcnNpb24pOgorICAgICAgICBzcGVjID0gU3BlY2lmaWVyU2V0
KHByZXJlbGVhc2VzPVRydWUpCisKKyAgICAgICAgYXNzZXJ0IHZlcnNpb24gaW4gc3BlYworICAg
ICAgICBhc3NlcnQgc3BlYy5jb250YWlucyh2ZXJzaW9uKQorICAgICAgICBhc3NlcnQgcGFyc2Uo
dmVyc2lvbikgaW4gc3BlYworICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlucyhwYXJzZSh2ZXJz
aW9uKSkKKworICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9wcmVyZWxlYXNlc19leHBsaWNpdChzZWxm
KToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllclNldCgpCisgICAgICAgIGFzc2VydCBub3Qgc3Bl
Yy5wcmVyZWxlYXNlcworICAgICAgICBhc3NlcnQgIjEuMC5kZXYxIiBub3QgaW4gc3BlYworICAg
ICAgICBhc3NlcnQgbm90IHNwZWMuY29udGFpbnMoIjEuMC5kZXYxIikKKyAgICAgICAgc3BlYy5w
cmVyZWxlYXNlcyA9IFRydWUKKyAgICAgICAgYXNzZXJ0IHNwZWMucHJlcmVsZWFzZXMKKyAgICAg
ICAgYXNzZXJ0ICIxLjAuZGV2MSIgaW4gc3BlYworICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlu
cygiMS4wLmRldjEiKQorCisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXJTZXQocHJlcmVsZWFzZXM9
VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IHNwZWMucHJlcmVsZWFzZXMKKyAgICAgICAgYXNzZXJ0ICIx
LjAuZGV2MSIgaW4gc3BlYworICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlucygiMS4wLmRldjEi
KQorICAgICAgICBzcGVjLnByZXJlbGVhc2VzID0gRmFsc2UKKyAgICAgICAgYXNzZXJ0IG5vdCBz
cGVjLnByZXJlbGVhc2VzCisgICAgICAgIGFzc2VydCAiMS4wLmRldjEiIG5vdCBpbiBzcGVjCisg
ICAgICAgIGFzc2VydCBub3Qgc3BlYy5jb250YWlucygiMS4wLmRldjEiKQorCisgICAgICAgIHNw
ZWMgPSBTcGVjaWZpZXJTZXQocHJlcmVsZWFzZXM9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IHNwZWMu
cHJlcmVsZWFzZXMKKyAgICAgICAgYXNzZXJ0ICIxLjAuZGV2MSIgaW4gc3BlYworICAgICAgICBh
c3NlcnQgc3BlYy5jb250YWlucygiMS4wLmRldjEiKQorICAgICAgICBzcGVjLnByZXJlbGVhc2Vz
ID0gTm9uZQorICAgICAgICBhc3NlcnQgbm90IHNwZWMucHJlcmVsZWFzZXMKKyAgICAgICAgYXNz
ZXJ0ICIxLjAuZGV2MSIgbm90IGluIHNwZWMKKyAgICAgICAgYXNzZXJ0IG5vdCBzcGVjLmNvbnRh
aW5zKCIxLjAuZGV2MSIpCisKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJfY29udGFpbnNfcHJlcmVs
ZWFzZXMoc2VsZik6CisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXJTZXQoKQorICAgICAgICBhc3Nl
cnQgc3BlYy5wcmVyZWxlYXNlcyBpcyBOb25lCisgICAgICAgIGFzc2VydCBub3Qgc3BlYy5jb250
YWlucygiMS4wLmRldjEiKQorICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlucygiMS4wLmRldjEi
LCBwcmVyZWxlYXNlcz1UcnVlKQorCisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXJTZXQocHJlcmVs
ZWFzZXM9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IHNwZWMucHJlcmVsZWFzZXMKKyAgICAgICAgYXNz
ZXJ0IHNwZWMuY29udGFpbnMoIjEuMC5kZXYxIikKKyAgICAgICAgYXNzZXJ0IG5vdCBzcGVjLmNv
bnRhaW5zKCIxLjAuZGV2MSIsIHByZXJlbGVhc2VzPUZhbHNlKQorCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKAorICAgICAgICAoInNwZWNpZmllciIsICJzcGVjaWZpZXJfcHJlcmVsZWFz
ZXMiLCAicHJlcmVsZWFzZXMiLCAiaW5wdXQiLCAiZXhwZWN0ZWQiKSwKKyAgICAgICAgWworICAg
ICAgICAgICAgIyBHZW5lcmFsIHRlc3Qgb2YgdGhlIGZpbHRlciBtZXRob2QKKyAgICAgICAgICAg
ICgiIiwgTm9uZSwgTm9uZSwgWyIxLjAiLCAiMi4wYTEiXSwgWyIxLjAiXSksCisgICAgICAgICAg
ICAoIj49MS4wLmRldjEiLCBOb25lLCBOb25lLCBbIjEuMCIsICIyLjBhMSJdLCBbIjEuMCIsICIy
LjBhMSJdKSwKKyAgICAgICAgICAgICgiIiwgTm9uZSwgTm9uZSwgWyIxLjBhMSJdLCBbIjEuMGEx
Il0pLAorICAgICAgICAgICAgKCIiLCBOb25lLCBOb25lLCBbIjEuMCIsIFZlcnNpb24oIjIuMCIp
XSwgWyIxLjAiLCBWZXJzaW9uKCIyLjAiKV0pLAorICAgICAgICAgICAgKCIiLCBOb25lLCBOb25l
LCBbIjIuMGRvZyIsICIxLjAiXSwgWyIxLjAiXSksCisgICAgICAgICAgICAjIFRlc3Qgb3ZlcnJp
ZGluZyB3aXRoIHRoZSBwcmVyZWxlYXNlcyBwYXJhbWV0ZXIgb24gZmlsdGVyCisgICAgICAgICAg
ICAoIiIsIE5vbmUsIEZhbHNlLCBbIjEuMGExIl0sIFtdKSwKKyAgICAgICAgICAgICgiPj0xLjAu
ZGV2MSIsIE5vbmUsIEZhbHNlLCBbIjEuMCIsICIyLjBhMSJdLCBbIjEuMCJdKSwKKyAgICAgICAg
ICAgICgiIiwgTm9uZSwgVHJ1ZSwgWyIxLjAiLCAiMi4wYTEiXSwgWyIxLjAiLCAiMi4wYTEiXSks
CisgICAgICAgICAgICAjIFRlc3Qgb3ZlcnJpZGluZyB3aXRoIHRoZSBvdmVyYWxsIHNwZWNpZmll
cgorICAgICAgICAgICAgKCIiLCBUcnVlLCBOb25lLCBbIjEuMCIsICIyLjBhMSJdLCBbIjEuMCIs
ICIyLjBhMSJdKSwKKyAgICAgICAgICAgICgiIiwgRmFsc2UsIE5vbmUsIFsiMS4wIiwgIjIuMGEx
Il0sIFsiMS4wIl0pLAorICAgICAgICAgICAgKCI+PTEuMC5kZXYxIiwgVHJ1ZSwgTm9uZSwgWyIx
LjAiLCAiMi4wYTEiXSwgWyIxLjAiLCAiMi4wYTEiXSksCisgICAgICAgICAgICAoIj49MS4wLmRl
djEiLCBGYWxzZSwgTm9uZSwgWyIxLjAiLCAiMi4wYTEiXSwgWyIxLjAiXSksCisgICAgICAgICAg
ICAoIiIsIFRydWUsIE5vbmUsIFsiMS4wYTEiXSwgWyIxLjBhMSJdKSwKKyAgICAgICAgICAgICgi
IiwgRmFsc2UsIE5vbmUsIFsiMS4wYTEiXSwgW10pLAorICAgICAgICBdLAorICAgICkKKyAgICBk
ZWYgdGVzdF9zcGVjaWZpZXJfZmlsdGVyKAorICAgICAgICBzZWxmLCBzcGVjaWZpZXJfcHJlcmVs
ZWFzZXMsIHNwZWNpZmllciwgcHJlcmVsZWFzZXMsIGlucHV0LCBleHBlY3RlZAorICAgICk6Cisg
ICAgICAgIGlmIHNwZWNpZmllcl9wcmVyZWxlYXNlcyBpcyBOb25lOgorICAgICAgICAgICAgc3Bl
YyA9IFNwZWNpZmllclNldChzcGVjaWZpZXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
cGVjID0gU3BlY2lmaWVyU2V0KHNwZWNpZmllciwgcHJlcmVsZWFzZXM9c3BlY2lmaWVyX3ByZXJl
bGVhc2VzKQorCisgICAgICAgIGt3YXJncyA9IHsicHJlcmVsZWFzZXMiOiBwcmVyZWxlYXNlc30g
aWYgcHJlcmVsZWFzZXMgaXMgbm90IE5vbmUgZWxzZSB7fQorCisgICAgICAgIGFzc2VydCBsaXN0
KHNwZWMuZmlsdGVyKGlucHV0LCAqKmt3YXJncykpID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVz
dF9sZWdhY3lfc3BlY2lmaWVyc19jb21iaW5lZChzZWxmKToKKyAgICAgICAgc3BlYyA9IFNwZWNp
ZmllclNldCgiPDMsPjEtMS0xIikKKyAgICAgICAgYXNzZXJ0ICIyLjAiIGluIHNwZWMKKworICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJzcGVjaWZpZXIiLCAiZXhwZWN0
ZWQiKSwKKyAgICAgICAgWworICAgICAgICAgICAgIyBTaW5nbGUgaXRlbSBzcGVjaWZpZXJzIHNo
b3VsZCBqdXN0IGJlIHJlZmxleGl2ZQorICAgICAgICAgICAgKCIhPTIuMCIsICIhPTIuMCIpLAor
ICAgICAgICAgICAgKCI8Mi4wIiwgIjwyLjAiKSwKKyAgICAgICAgICAgICgiPD0yLjAiLCAiPD0y
LjAiKSwKKyAgICAgICAgICAgICgiPT0yLjAiLCAiPT0yLjAiKSwKKyAgICAgICAgICAgICgiPjIu
MCIsICI+Mi4wIiksCisgICAgICAgICAgICAoIj49Mi4wIiwgIj49Mi4wIiksCisgICAgICAgICAg
ICAoIn49Mi4wIiwgIn49Mi4wIiksCisgICAgICAgICAgICAjIFNwYWNlcyBzaG91bGQgYmUgcmVt
b3ZlZAorICAgICAgICAgICAgKCI8IDIiLCAiPDIiKSwKKyAgICAgICAgICAgICMgTXVsdGlwbGUg
aXRlbSBzcGVjaWZpZXJzIHNob3VsZCB3b3JrCisgICAgICAgICAgICAoIiE9Mi4wLD4xLjAiLCAi
IT0yLjAsPjEuMCIpLAorICAgICAgICAgICAgKCIhPTIuMCAsPjEuMCIsICIhPTIuMCw+MS4wIiks
CisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcnNfc3RyX2FuZF9yZXBy
KHNlbGYsIHNwZWNpZmllciwgZXhwZWN0ZWQpOgorICAgICAgICBzcGVjID0gU3BlY2lmaWVyU2V0
KHNwZWNpZmllcikKKworICAgICAgICBhc3NlcnQgc3RyKHNwZWMpID09IGV4cGVjdGVkCisgICAg
ICAgIGFzc2VydCByZXByKHNwZWMpID09ICI8U3BlY2lmaWVyU2V0KHswfSk+Ii5mb3JtYXQocmVw
cihleHBlY3RlZCkpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInNwZWNpZmllciIs
IFNQRUNJRklFUlMgKyBMRUdBQ1lfU1BFQ0lGSUVSUykKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJz
X2hhc2goc2VsZiwgc3BlY2lmaWVyKToKKyAgICAgICAgYXNzZXJ0IGhhc2goU3BlY2lmaWVyU2V0
KHNwZWNpZmllcikpID09IGhhc2goU3BlY2lmaWVyU2V0KHNwZWNpZmllcikpCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgibGVmdCIsICJyaWdodCIsICJleHBlY3Rl
ZCIpLCBbKCI+Mi4wIiwgIjw1LjAiLCAiPjIuMCw8NS4wIildCisgICAgKQorICAgIGRlZiB0ZXN0
X3NwZWNpZmllcnNfY29tYmluZShzZWxmLCBsZWZ0LCByaWdodCwgZXhwZWN0ZWQpOgorICAgICAg
ICByZXN1bHQgPSBTcGVjaWZpZXJTZXQobGVmdCkgJiBTcGVjaWZpZXJTZXQocmlnaHQpCisgICAg
ICAgIGFzc2VydCByZXN1bHQgPT0gU3BlY2lmaWVyU2V0KGV4cGVjdGVkKQorCisgICAgICAgIHJl
c3VsdCA9IFNwZWNpZmllclNldChsZWZ0KSAmIHJpZ2h0CisgICAgICAgIGFzc2VydCByZXN1bHQg
PT0gU3BlY2lmaWVyU2V0KGV4cGVjdGVkKQorCisgICAgICAgIHJlc3VsdCA9IFNwZWNpZmllclNl
dChsZWZ0LCBwcmVyZWxlYXNlcz1UcnVlKSAmIFNwZWNpZmllclNldChyaWdodCkKKyAgICAgICAg
YXNzZXJ0IHJlc3VsdCA9PSBTcGVjaWZpZXJTZXQoZXhwZWN0ZWQpCisgICAgICAgIGFzc2VydCBy
ZXN1bHQucHJlcmVsZWFzZXMKKworICAgICAgICByZXN1bHQgPSBTcGVjaWZpZXJTZXQobGVmdCwg
cHJlcmVsZWFzZXM9RmFsc2UpICYgU3BlY2lmaWVyU2V0KHJpZ2h0KQorICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IFNwZWNpZmllclNldChleHBlY3RlZCkKKyAgICAgICAgYXNzZXJ0IG5vdCByZXN1
bHQucHJlcmVsZWFzZXMKKworICAgICAgICByZXN1bHQgPSBTcGVjaWZpZXJTZXQobGVmdCkgJiBT
cGVjaWZpZXJTZXQocmlnaHQsIHByZXJlbGVhc2VzPVRydWUpCisgICAgICAgIGFzc2VydCByZXN1
bHQgPT0gU3BlY2lmaWVyU2V0KGV4cGVjdGVkKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnByZXJl
bGVhc2VzCisKKyAgICAgICAgcmVzdWx0ID0gU3BlY2lmaWVyU2V0KGxlZnQpICYgU3BlY2lmaWVy
U2V0KHJpZ2h0LCBwcmVyZWxlYXNlcz1GYWxzZSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBT
cGVjaWZpZXJTZXQoZXhwZWN0ZWQpCisgICAgICAgIGFzc2VydCBub3QgcmVzdWx0LnByZXJlbGVh
c2VzCisKKyAgICAgICAgcmVzdWx0ID0gU3BlY2lmaWVyU2V0KGxlZnQsIHByZXJlbGVhc2VzPVRy
dWUpICYgU3BlY2lmaWVyU2V0KAorICAgICAgICAgICAgcmlnaHQsIHByZXJlbGVhc2VzPVRydWUK
KyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFNwZWNpZmllclNldChleHBlY3Rl
ZCkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5wcmVyZWxlYXNlcworCisgICAgICAgIHJlc3VsdCA9
IFNwZWNpZmllclNldChsZWZ0LCBwcmVyZWxlYXNlcz1GYWxzZSkgJiBTcGVjaWZpZXJTZXQoCisg
ICAgICAgICAgICByaWdodCwgcHJlcmVsZWFzZXM9RmFsc2UKKyAgICAgICAgKQorICAgICAgICBh
c3NlcnQgcmVzdWx0ID09IFNwZWNpZmllclNldChleHBlY3RlZCkKKyAgICAgICAgYXNzZXJ0IG5v
dCByZXN1bHQucHJlcmVsZWFzZXMKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVF
cnJvcik6CisgICAgICAgICAgICByZXN1bHQgPSBTcGVjaWZpZXJTZXQobGVmdCwgcHJlcmVsZWFz
ZXM9VHJ1ZSkgJiBTcGVjaWZpZXJTZXQoCisgICAgICAgICAgICAgICAgcmlnaHQsIHByZXJlbGVh
c2VzPUZhbHNlCisgICAgICAgICAgICApCisKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZh
bHVlRXJyb3IpOgorICAgICAgICAgICAgcmVzdWx0ID0gU3BlY2lmaWVyU2V0KGxlZnQsIHByZXJl
bGVhc2VzPUZhbHNlKSAmIFNwZWNpZmllclNldCgKKyAgICAgICAgICAgICAgICByaWdodCwgcHJl
cmVsZWFzZXM9VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyc19j
b21iaW5lX25vdF9pbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvcik6CisgICAgICAgICAgICBTcGVjaWZpZXJTZXQoKSAmIDEyCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgibGVmdCIsICJyaWdodCIsICJvcCIpLAor
ICAgICAgICBpdGVydG9vbHMuY2hhaW4oCisgICAgICAgICAgICAqCisgICAgICAgICAgICAjIFZl
cmlmeSB0aGF0IHRoZSBlcXVhbCAoPT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAg
ICAgICAgW1soeCwgeCwgb3BlcmF0b3IuZXEpIGZvciB4IGluIFNQRUNJRklFUlNdXQorICAgICAg
ICAgICAgKworICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbm90IGVxdWFsICghPSkgb3Bl
cmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4
LCB5LCBvcGVyYXRvci5uZSkgZm9yIGosIHkgaW4gZW51bWVyYXRlKFNQRUNJRklFUlMpIGlmIGkg
IT0gal0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoU1BFQ0lGSUVSUykK
KyAgICAgICAgICAgIF0KKyAgICAgICAgKSwKKyAgICApCisgICAgZGVmIHRlc3RfY29tcGFyaXNv
bl90cnVlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAgICAgIGFzc2VydCBvcChTcGVjaWZp
ZXJTZXQobGVmdCksIFNwZWNpZmllclNldChyaWdodCkpCisgICAgICAgIGFzc2VydCBvcChTcGVj
aWZpZXJTZXQobGVmdCksIFNwZWNpZmllcihyaWdodCkpCisgICAgICAgIGFzc2VydCBvcChTcGVj
aWZpZXIobGVmdCksIFNwZWNpZmllclNldChyaWdodCkpCisgICAgICAgIGFzc2VydCBvcChsZWZ0
LCBTcGVjaWZpZXJTZXQocmlnaHQpKQorICAgICAgICBhc3NlcnQgb3AoU3BlY2lmaWVyU2V0KGxl
ZnQpLCByaWdodCkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJs
ZWZ0IiwgInJpZ2h0IiwgIm9wIiksCisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAg
ICAgICoKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkgb3BlcmF0b3Ig
d29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5uZSkgZm9yIHgg
aW4gU1BFQ0lGSUVSU11dCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0
IHRoZSBub3QgZXF1YWwgKCE9KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLmVxKSBmb3IgaiwgeSBpbiBlbnVt
ZXJhdGUoU1BFQ0lGSUVSUykgaWYgaSAhPSBqXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGlu
IGVudW1lcmF0ZShTUEVDSUZJRVJTKQorICAgICAgICAgICAgXQorICAgICAgICApLAorICAgICkK
KyAgICBkZWYgdGVzdF9jb21wYXJpc29uX2ZhbHNlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6Cisg
ICAgICAgIGFzc2VydCBub3Qgb3AoU3BlY2lmaWVyU2V0KGxlZnQpLCBTcGVjaWZpZXJTZXQocmln
aHQpKQorICAgICAgICBhc3NlcnQgbm90IG9wKFNwZWNpZmllclNldChsZWZ0KSwgU3BlY2lmaWVy
KHJpZ2h0KSkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcChTcGVjaWZpZXIobGVmdCksIFNwZWNpZmll
clNldChyaWdodCkpCisgICAgICAgIGFzc2VydCBub3Qgb3AobGVmdCwgU3BlY2lmaWVyU2V0KHJp
Z2h0KSkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcChTcGVjaWZpZXJTZXQobGVmdCksIHJpZ2h0KQor
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibGVmdCIsICJyaWdodCIpLCBbKCI9PTIu
OC4wIiwgIj09Mi44IildKQorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25fY2Fub25pY2FsaXplcyhz
ZWxmLCBsZWZ0LCByaWdodCk6CisgICAgICAgIGFzc2VydCBTcGVjaWZpZXJTZXQobGVmdCkgPT0g
U3BlY2lmaWVyU2V0KHJpZ2h0KQorICAgICAgICBhc3NlcnQgbGVmdCA9PSBTcGVjaWZpZXJTZXQo
cmlnaHQpCisgICAgICAgIGFzc2VydCBTcGVjaWZpZXJTZXQobGVmdCkgPT0gcmlnaHQKKworICAg
IGRlZiB0ZXN0X2NvbXBhcmlzb25fbm9uX3NwZWNpZmllcihzZWxmKToKKyAgICAgICAgYXNzZXJ0
IFNwZWNpZmllclNldCgiPT0xLjAiKSAhPSAxMgorICAgICAgICBhc3NlcnQgbm90IFNwZWNpZmll
clNldCgiPT0xLjAiKSA9PSAxMgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAg
ICAgICAoInZlcnNpb24iLCAic3BlY2lmaWVyIiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAg
ICAgICAgICAgICgiMS4wLjArbG9jYWwiLCAiPT0xLjAuMCIsIFRydWUpLAorICAgICAgICAgICAg
KCIxLjAuMCtsb2NhbCIsICIhPTEuMC4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjAuMCts
b2NhbCIsICI8PTEuMC4wIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMC4wK2xvY2FsIiwgIj49
MS4wLjAiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wLjArbG9jYWwiLCAiPDEuMC4wIiwgRmFs
c2UpLAorICAgICAgICAgICAgKCIxLjAuMCtsb2NhbCIsICI+MS4wLjAiLCBGYWxzZSksCisgICAg
ICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25faWdub3Jlc19sb2NhbChzZWxm
LCB2ZXJzaW9uLCBzcGVjaWZpZXIsIGV4cGVjdGVkKToKKyAgICAgICAgYXNzZXJ0IChWZXJzaW9u
KHZlcnNpb24pIGluIFNwZWNpZmllclNldChzcGVjaWZpZXIpKSA9PSBleHBlY3RlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF9zdHJ1Y3R1cmVzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvdGVzdHMvdGVzdF9zdHJ1Y3R1cmVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMzNiMTg5NmM3OTczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvdGVzdHMvdGVzdF9zdHJ1Y3R1cmVzLnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMgVGhpcyBm
aWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWls
cy4KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KKworaW1wb3J0IHB5dGVzdAorCitmcm9tIHBhY2thZ2luZy5fc3RydWN0dXJl
cyBpbXBvcnQgSW5maW5pdHksIE5lZ2F0aXZlSW5maW5pdHkKKworCitkZWYgdGVzdF9pbmZpbml0
eV9yZXByKCk6CisgICAgcmVwcihJbmZpbml0eSkgPT0gIkluZmluaXR5IgorCisKK2RlZiB0ZXN0
X25lZ2F0aXZlX2luZmluaXR5X3JlcHIoKToKKyAgICByZXByKE5lZ2F0aXZlSW5maW5pdHkpID09
ICItSW5maW5pdHkiCisKKworZGVmIHRlc3RfaW5maW5pdHlfaGFzaCgpOgorICAgIGFzc2VydCBo
YXNoKEluZmluaXR5KSA9PSBoYXNoKEluZmluaXR5KQorCisKK2RlZiB0ZXN0X25lZ2F0aXZlX2lu
ZmluaXR5X2hhc2goKToKKyAgICBhc3NlcnQgaGFzaChOZWdhdGl2ZUluZmluaXR5KSA9PSBoYXNo
KE5lZ2F0aXZlSW5maW5pdHkpCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJsZWZ0Iiwg
WzEsICJhIiwgKCJiIiwgNCldKQorZGVmIHRlc3RfaW5maW5pdHlfY29tcGFyaXNvbihsZWZ0KToK
KyAgICBhc3NlcnQgbGVmdCA8IEluZmluaXR5CisgICAgYXNzZXJ0IGxlZnQgPD0gSW5maW5pdHkK
KyAgICBhc3NlcnQgbm90IGxlZnQgPT0gSW5maW5pdHkKKyAgICBhc3NlcnQgbGVmdCAhPSBJbmZp
bml0eQorICAgIGFzc2VydCBub3QgbGVmdCA+IEluZmluaXR5CisgICAgYXNzZXJ0IG5vdCBsZWZ0
ID49IEluZmluaXR5CisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJsZWZ0IiwgWzEsICJh
IiwgKCJiIiwgNCldKQorZGVmIHRlc3RfbmVnYXRpdmVfaW5maW5pdHlfbGVzc2VyKGxlZnQpOgor
ICAgIGFzc2VydCBub3QgbGVmdCA8IE5lZ2F0aXZlSW5maW5pdHkKKyAgICBhc3NlcnQgbm90IGxl
ZnQgPD0gTmVnYXRpdmVJbmZpbml0eQorICAgIGFzc2VydCBub3QgbGVmdCA9PSBOZWdhdGl2ZUlu
ZmluaXR5CisgICAgYXNzZXJ0IGxlZnQgIT0gTmVnYXRpdmVJbmZpbml0eQorICAgIGFzc2VydCBs
ZWZ0ID4gTmVnYXRpdmVJbmZpbml0eQorICAgIGFzc2VydCBsZWZ0ID49IE5lZ2F0aXZlSW5maW5p
dHkKKworCitkZWYgdGVzdF9pbmZpbnR5X2VxdWFsKCk6CisgICAgYXNzZXJ0IEluZmluaXR5ID09
IEluZmluaXR5CisKKworZGVmIHRlc3RfbmVnYXRpdmVfaW5maW5pdHlfZXF1YWwoKToKKyAgICBh
c3NlcnQgTmVnYXRpdmVJbmZpbml0eSA9PSBOZWdhdGl2ZUluZmluaXR5CisKKworZGVmIHRlc3Rf
bmVnYXRlX2luZmluaXR5KCk6CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoLUluZmluaXR5LCBOZWdh
dGl2ZUluZmluaXR5Ll9fY2xhc3NfXykKKworCitkZWYgdGVzdF9uZWdhdGVfbmVnYXRpdmVfaW5m
aW5pdHkoKToKKyAgICBhc3NlcnQgaXNpbnN0YW5jZSgtTmVnYXRpdmVJbmZpbml0eSwgSW5maW5p
dHkuX19jbGFzc19fKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF90YWdz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF90YWdzLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjhiMTA5YTg5ZjMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF90YWdzLnB5CkBAIC0wLDAgKzEsMTM2NCBAQAorIyBU
aGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBk
ZXRhaWxzLgorCit0cnk6CisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYyBhcyBjb2xsZWN0aW9u
c19hYmMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMgYXMgY29s
bGVjdGlvbnNfYWJjCisKK3RyeToKKyAgICBpbXBvcnQgY3R5cGVzCitleGNlcHQgSW1wb3J0RXJy
b3I6CisgICAgY3R5cGVzID0gTm9uZQoraW1wb3J0IGRpc3R1dGlscy51dGlsCisKK2ltcG9ydCBv
cworaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25m
aWcKK2ltcG9ydCB0eXBlcworaW1wb3J0IHdhcm5pbmdzCisKK2ltcG9ydCBwcmV0ZW5kCitpbXBv
cnQgcHl0ZXN0CisKK2Zyb20gcGFja2FnaW5nIGltcG9ydCB0YWdzCisKKworQHB5dGVzdC5maXh0
dXJlCitkZWYgZXhhbXBsZV90YWcoKToKKyAgICByZXR1cm4gdGFncy5UYWcoInB5MyIsICJub25l
IiwgImFueSIpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgaXNfeDg2KCk6CisgICAgcmV0dXJu
IHJlLm1hdGNoKHIiKGlcZDg2fHg4Nl82NCkiLCBwbGF0Zm9ybS5tYWNoaW5lKCkpIGlzIG5vdCBO
b25lCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgbWFueWxpbnV4X21vZHVsZShtb25rZXlwYXRj
aCk6CisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2dldF9nbGliY192ZXJzaW9uIiwg
bGFtYmRhICphcmdzOiAoMiwgMjApKQorICAgIG1vZHVsZV9uYW1lID0gIl9tYW55bGludXgiCisg
ICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShtb2R1bGVfbmFtZSkKKyAgICBtb25rZXlwYXRj
aC5zZXRpdGVtKHN5cy5tb2R1bGVzLCBtb2R1bGVfbmFtZSwgbW9kdWxlKQorICAgIHJldHVybiBt
b2R1bGUKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBtb2NrX2ludGVycHJldGVyX25hbWUobW9u
a2V5cGF0Y2gpOgorICAgIGRlZiBtb2NrKG5hbWUpOgorICAgICAgICBpZiBoYXNhdHRyKHN5cywg
ImltcGxlbWVudGF0aW9uIikgYW5kIHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lICE9IG5hbWUubG93
ZXIoKToKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLmltcGxlbWVudGF0aW9u
LCAibmFtZSIsIG5hbWUubG93ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAg
IGVsaWYgcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgIT0gbmFtZToKKyAgICAgICAg
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0sICJweXRob25faW1wbGVtZW50YXRpb24i
LCBsYW1iZGE6IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIHJldHVybiBtb2NrCisKKworY2xhc3MgVGVzdFRhZzoKKyAgICBkZWYgdGVz
dF9sb3dlcmNhc2luZyhzZWxmKToKKyAgICAgICAgdGFnID0gdGFncy5UYWcoIlBZMyIsICJOb25l
IiwgIkFOWSIpCisgICAgICAgIGFzc2VydCB0YWcuaW50ZXJwcmV0ZXIgPT0gInB5MyIKKyAgICAg
ICAgYXNzZXJ0IHRhZy5hYmkgPT0gIm5vbmUiCisgICAgICAgIGFzc2VydCB0YWcucGxhdGZvcm0g
PT0gImFueSIKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBhcmdzID0g
InB5MyIsICJub25lIiwgImFueSIKKyAgICAgICAgYXNzZXJ0IHRhZ3MuVGFnKCphcmdzKSA9PSB0
YWdzLlRhZygqYXJncykKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5X2ZhaWxzX3dpdGhfbm9uX3Rh
ZyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IG5vdCB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAiYW55
IikgPT0gIm5vbi10YWciCisKKyAgICBkZWYgdGVzdF9oYXNoaW5nKHNlbGYsIGV4YW1wbGVfdGFn
KToKKyAgICAgICAgdGFncyA9IHtleGFtcGxlX3RhZ30gICMgU2hvdWxkIG5vdCByYWlzZSBUeXBl
RXJyb3IuCisgICAgICAgIGFzc2VydCBleGFtcGxlX3RhZyBpbiB0YWdzCisKKyAgICBkZWYgdGVz
dF9oYXNoX2VxdWFsaXR5KHNlbGYsIGV4YW1wbGVfdGFnKToKKyAgICAgICAgZXF1YWxfdGFnID0g
dGFncy5UYWcoInB5MyIsICJub25lIiwgImFueSIpCisgICAgICAgIGFzc2VydCBleGFtcGxlX3Rh
ZyA9PSBlcXVhbF90YWcgICMgU2FuaXR5IGNoZWNrLgorICAgICAgICBhc3NlcnQgZXhhbXBsZV90
YWcuX19oYXNoX18oKSA9PSBlcXVhbF90YWcuX19oYXNoX18oKQorCisgICAgZGVmIHRlc3Rfc3Ry
KHNlbGYsIGV4YW1wbGVfdGFnKToKKyAgICAgICAgYXNzZXJ0IHN0cihleGFtcGxlX3RhZykgPT0g
InB5My1ub25lLWFueSIKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZiwgZXhhbXBsZV90YWcpOgor
ICAgICAgICBhc3NlcnQgcmVwcihleGFtcGxlX3RhZykgPT0gIjxweTMtbm9uZS1hbnkgQCB7dGFn
X2lkfT4iLmZvcm1hdCgKKyAgICAgICAgICAgIHRhZ19pZD1pZChleGFtcGxlX3RhZykKKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlX2FjY2VzcyhzZWxmLCBleGFtcGxlX3RhZyk6
CisgICAgICAgIGFzc2VydCBleGFtcGxlX3RhZy5pbnRlcnByZXRlciA9PSAicHkzIgorICAgICAg
ICBhc3NlcnQgZXhhbXBsZV90YWcuYWJpID09ICJub25lIgorICAgICAgICBhc3NlcnQgZXhhbXBs
ZV90YWcucGxhdGZvcm0gPT0gImFueSIKKworCitjbGFzcyBUZXN0V2FybktleXdvcmRPbmx5UGFy
YW1ldGVyOgorICAgIGRlZiB0ZXN0X25vX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBhc3NlcnQg
bm90IHRhZ3MuX3dhcm5fa2V5d29yZF9wYXJhbWV0ZXIoInRlc3Rfd2Fybl9rZXl3b3JkX3BhcmFt
ZXRlcnMiLCB7fSkKKworICAgIGRlZiB0ZXN0X2ZhbHNlKHNlbGYpOgorICAgICAgICBhc3NlcnQg
bm90IHRhZ3MuX3dhcm5fa2V5d29yZF9wYXJhbWV0ZXIoCisgICAgICAgICAgICAidGVzdF93YXJu
X2tleXdvcmRfcGFyYW1ldGVycyIsIHsid2FybiI6IEZhbHNlfQorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF90cnVlKHNlbGYpOgorICAgICAgICBhc3NlcnQgdGFncy5fd2Fybl9rZXl3b3JkX3Bh
cmFtZXRlcigKKyAgICAgICAgICAgICJ0ZXN0X3dhcm5fa2V5d29yZF9wYXJhbWV0ZXJzIiwgeyJ3
YXJuIjogVHJ1ZX0KKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdG9vX21hbnlfYXJndW1lbnRz
KHNlbGYpOgorICAgICAgICBtZXNzYWdlX3JlID0gcmUuY29tcGlsZShyInRvb19tYW55Lit7IXJ9
Ii5mb3JtYXQoIndoYXRldmVyIikpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJy
b3IsIG1hdGNoPW1lc3NhZ2VfcmUpOgorICAgICAgICAgICAgdGFncy5fd2Fybl9rZXl3b3JkX3Bh
cmFtZXRlcigidG9vX21hbnkiLCB7Indhcm4iOiBUcnVlLCAid2hhdGV2ZXIiOiBUcnVlfSkKKwor
ICAgIGRlZiB0ZXN0X3dyb25nX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBtZXNzYWdlX3JlID0g
cmUuY29tcGlsZShyIm1pc3NpbmcuK3shcn0iLmZvcm1hdCgidW5leHBlY3RlZCIpKQorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD1tZXNzYWdlX3JlKToKKyAgICAg
ICAgICAgIHRhZ3MuX3dhcm5fa2V5d29yZF9wYXJhbWV0ZXIoIm1pc3NpbmciLCB7InVuZXhwZWN0
ZWQiOiBUcnVlfSkKKworCitjbGFzcyBUZXN0UGFyc2VUYWc6CisgICAgZGVmIHRlc3Rfc2ltcGxl
KHNlbGYsIGV4YW1wbGVfdGFnKToKKyAgICAgICAgcGFyc2VkX3RhZ3MgPSB0YWdzLnBhcnNlX3Rh
ZyhzdHIoZXhhbXBsZV90YWcpKQorICAgICAgICBhc3NlcnQgcGFyc2VkX3RhZ3MgPT0ge2V4YW1w
bGVfdGFnfQorCisgICAgZGVmIHRlc3RfbXVsdGlfaW50ZXJwcmV0ZXIoc2VsZiwgZXhhbXBsZV90
YWcpOgorICAgICAgICBleHBlY3RlZCA9IHtleGFtcGxlX3RhZywgdGFncy5UYWcoInB5MiIsICJu
b25lIiwgImFueSIpfQorICAgICAgICBnaXZlbiA9IHRhZ3MucGFyc2VfdGFnKCJweTIucHkzLW5v
bmUtYW55IikKKyAgICAgICAgYXNzZXJ0IGdpdmVuID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVz
dF9tdWx0aV9wbGF0Zm9ybShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSB7CisgICAgICAgICAg
ICB0YWdzLlRhZygiY3AzNyIsICJjcDM3bSIsIHBsYXRmb3JtKQorICAgICAgICAgICAgZm9yIHBs
YXRmb3JtIGluICgKKyAgICAgICAgICAgICAgICAibWFjb3N4XzEwXzZfaW50ZWwiLAorICAgICAg
ICAgICAgICAgICJtYWNvc3hfMTBfOV9pbnRlbCIsCisgICAgICAgICAgICAgICAgIm1hY29zeF8x
MF85X3g4Nl82NCIsCisgICAgICAgICAgICAgICAgIm1hY29zeF8xMF8xMF9pbnRlbCIsCisgICAg
ICAgICAgICAgICAgIm1hY29zeF8xMF8xMF94ODZfNjQiLAorICAgICAgICAgICAgKQorICAgICAg
ICB9CisgICAgICAgIGdpdmVuID0gdGFncy5wYXJzZV90YWcoCisgICAgICAgICAgICAiY3AzNy1j
cDM3bS1tYWNvc3hfMTBfNl9pbnRlbC5tYWNvc3hfMTBfOV9pbnRlbC5tYWNvc3hfMTBfOV94ODZf
NjQuIgorICAgICAgICAgICAgIm1hY29zeF8xMF8xMF9pbnRlbC5tYWNvc3hfMTBfMTBfeDg2XzY0
IgorICAgICAgICApCisgICAgICAgIGFzc2VydCBnaXZlbiA9PSBleHBlY3RlZAorCisKK2NsYXNz
IFRlc3RJbnRlcnByZXRlck5hbWU6CisgICAgZGVmIHRlc3Rfc3lzX2ltcGxlbWVudGF0aW9uX25h
bWUoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBjbGFzcyBNb2NrSW1wbGVtZW50YXRpb24o
b2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrX2ltcGxlbWVudGF0aW9u
ID0gTW9ja0ltcGxlbWVudGF0aW9uKCkKKyAgICAgICAgbW9ja19pbXBsZW1lbnRhdGlvbi5uYW1l
ID0gInNpbGx5d2FsayIKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJpbXBsZW1l
bnRhdGlvbiIsIG1vY2tfaW1wbGVtZW50YXRpb24sIHJhaXNpbmc9RmFsc2UpCisgICAgICAgIGFz
c2VydCB0YWdzLmludGVycHJldGVyX25hbWUoKSA9PSAic2lsbHl3YWxrIgorCisgICAgZGVmIHRl
c3RfcGxhdGZvcm0oc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5kZWxh
dHRyKHN5cywgImltcGxlbWVudGF0aW9uIiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgbmFtZSA9
ICJTaWxseVdhbGsiCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0sICJweXRo
b25faW1wbGVtZW50YXRpb24iLCBsYW1iZGE6IG5hbWUpCisgICAgICAgIGFzc2VydCB0YWdzLmlu
dGVycHJldGVyX25hbWUoKSA9PSBuYW1lLmxvd2VyKCkKKworICAgIGRlZiB0ZXN0X2ludGVycHJl
dGVyX3Nob3J0X25hbWVzKHNlbGYsIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSwgbW9ua2V5cGF0Y2gp
OgorICAgICAgICBtb2NrX2ludGVycHJldGVyX25hbWUoImNweXRob24iKQorICAgICAgICBhc3Nl
cnQgdGFncy5pbnRlcnByZXRlcl9uYW1lKCkgPT0gImNwIgorCisKK2NsYXNzIFRlc3RJbnRlcnBy
ZXRlclZlcnNpb246CisgICAgZGVmIHRlc3Rfd2FybihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAg
ICAgIGNsYXNzIE1vY2tDb25maWdWYXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXR1cm5fKToKKyAgICAgICAgICAgICAgICBzZWxmLndhcm4gPSBOb25lCisgICAg
ICAgICAgICAgICAgc2VsZi5fcmV0dXJuID0gcmV0dXJuXworCisgICAgICAgICAgICBkZWYgX19j
YWxsX18oc2VsZiwgbmFtZSwgd2Fybik6CisgICAgICAgICAgICAgICAgc2VsZi53YXJuID0gd2Fy
bgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm4KKworICAgICAgICBtb2NrX2Nv
bmZpZ192YXIgPSBNb2NrQ29uZmlnVmFyKCIzOCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0
dHIodGFncywgIl9nZXRfY29uZmlnX3ZhciIsIG1vY2tfY29uZmlnX3ZhcikKKyAgICAgICAgdGFn
cy5pbnRlcnByZXRlcl92ZXJzaW9uKHdhcm49VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IG1vY2tfY29u
ZmlnX3Zhci53YXJuCisKKyAgICBkZWYgdGVzdF9weXRob25fdmVyc2lvbl9ub2RvdChzZWxmLCBt
b25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9nZXRfY29u
ZmlnX3ZhciIsIGxhbWJkYSB2YXIsIHdhcm46ICJOTiIpCisgICAgICAgIGFzc2VydCB0YWdzLmlu
dGVycHJldGVyX3ZlcnNpb24oKSA9PSAiTk4iCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoCisgICAgICAgICJ2ZXJzaW9uX2luZm8sdmVyc2lvbl9zdHIiLAorICAgICAgICBbCisgICAg
ICAgICAgICAoKDEsIDIsIDMpLCAiMTIiKSwKKyAgICAgICAgICAgICgoMSwgMTIsIDMpLCAiMV8x
MiIpLAorICAgICAgICAgICAgKCgxMSwgMiwgMyksICIxMV8yIiksCisgICAgICAgICAgICAoKDEx
LCAxMiwgMyksICIxMV8xMiIpLAorICAgICAgICAgICAgKCgxLCAyLCAxMyksICIxMiIpLAorICAg
ICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9zeXNfdmVyc2lvbl9pbmZvKHNlbGYsIHZlcnNp
b25faW5mbywgdmVyc2lvbl9zdHIsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cih0YWdzLCAiX2dldF9jb25maWdfdmFyIiwgbGFtYmRhICphcmdzLCAqKmt3YXJnczog
Tm9uZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJ2ZXJzaW9uX2luZm8iLCB2
ZXJzaW9uX2luZm8pCisgICAgICAgIGFzc2VydCB0YWdzLmludGVycHJldGVyX3ZlcnNpb24oKSA9
PSB2ZXJzaW9uX3N0cgorCisKK2NsYXNzIFRlc3RNYWNPU1BsYXRmb3JtczoKKyAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJhcmNoLCBpc18zMmJpdCwgZXhwZWN0ZWQiLAor
ICAgICAgICBbCisgICAgICAgICAgICAoImkzODYiLCBUcnVlLCAiaTM4NiIpLAorICAgICAgICAg
ICAgKCJwcGMiLCBUcnVlLCAicHBjIiksCisgICAgICAgICAgICAoIng4Nl82NCIsIEZhbHNlLCAi
eDg2XzY0IiksCisgICAgICAgICAgICAoIng4Nl82NCIsIFRydWUsICJpMzg2IiksCisgICAgICAg
ICAgICAoInBwYzY0IiwgRmFsc2UsICJwcGM2NCIpLAorICAgICAgICAgICAgKCJwcGM2NCIsIFRy
dWUsICJwcGMiKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfYXJjaGl0ZWN0dXJl
cyhzZWxmLCBhcmNoLCBpc18zMmJpdCwgZXhwZWN0ZWQpOgorICAgICAgICBhc3NlcnQgdGFncy5f
bWFjX2FyY2goYXJjaCwgaXNfMzJiaXQ9aXNfMzJiaXQpID09IGV4cGVjdGVkCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJ2ZXJzaW9uLGFyY2gsZXhwZWN0ZWQiLAor
ICAgICAgICBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKDEwLCAxNSksCisgICAg
ICAgICAgICAgICAgIng4Nl82NCIsCisgICAgICAgICAgICAgICAgWyJ4ODZfNjQiLCAiaW50ZWwi
LCAiZmF0NjQiLCAiZmF0MzIiLCAidW5pdmVyc2FsMiIsICJ1bml2ZXJzYWwiXSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKDEwLCA0KSwKKyAgICAgICAg
ICAgICAgICAieDg2XzY0IiwKKyAgICAgICAgICAgICAgICBbIng4Nl82NCIsICJpbnRlbCIsICJm
YXQ2NCIsICJmYXQzMiIsICJ1bml2ZXJzYWwyIiwgInVuaXZlcnNhbCJdLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICgoMTAsIDMpLCAieDg2XzY0IiwgW10pLAorICAgICAgICAgICAgKCgx
MCwgMTUpLCAiaTM4NiIsIFsiaTM4NiIsICJpbnRlbCIsICJmYXQzMiIsICJmYXQiLCAidW5pdmVy
c2FsIl0pLAorICAgICAgICAgICAgKCgxMCwgNCksICJpMzg2IiwgWyJpMzg2IiwgImludGVsIiwg
ImZhdDMyIiwgImZhdCIsICJ1bml2ZXJzYWwiXSksCisgICAgICAgICAgICAoKDEwLCAzKSwgImkz
ODYiLCBbXSksCisgICAgICAgICAgICAoKDEwLCAxNSksICJwcGM2NCIsIFtdKSwKKyAgICAgICAg
ICAgICgoMTAsIDYpLCAicHBjNjQiLCBbXSksCisgICAgICAgICAgICAoKDEwLCA1KSwgInBwYzY0
IiwgWyJwcGM2NCIsICJmYXQ2NCIsICJ1bml2ZXJzYWwiXSksCisgICAgICAgICAgICAoKDEwLCAz
KSwgInBwYzY0IiwgW10pLAorICAgICAgICAgICAgKCgxMCwgMTUpLCAicHBjIiwgW10pLAorICAg
ICAgICAgICAgKCgxMCwgNyksICJwcGMiLCBbXSksCisgICAgICAgICAgICAoKDEwLCA2KSwgInBw
YyIsIFsicHBjIiwgImZhdDMyIiwgImZhdCIsICJ1bml2ZXJzYWwiXSksCisgICAgICAgICAgICAo
KDEwLCAwKSwgInBwYyIsIFsicHBjIiwgImZhdDMyIiwgImZhdCIsICJ1bml2ZXJzYWwiXSksCisg
ICAgICAgICAgICAoKDExLCAwKSwgInJpc2N2IiwgWyJyaXNjdiJdKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAoMTEsIDApLAorICAgICAgICAgICAgICAgICJ4ODZfNjQiLAorICAg
ICAgICAgICAgICAgIFsieDg2XzY0IiwgImludGVsIiwgImZhdDY0IiwgImZhdDMyIiwgInVuaXZl
cnNhbDIiLCAidW5pdmVyc2FsIl0sCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKCgxMSwg
MCksICJhcm02NCIsIFsiYXJtNjQiLCAidW5pdmVyc2FsMiJdKSwKKyAgICAgICAgICAgICgoMTEs
IDEpLCAiYXJtNjQiLCBbImFybTY0IiwgInVuaXZlcnNhbDIiXSksCisgICAgICAgICAgICAoKDEy
LCAwKSwgImFybTY0IiwgWyJhcm02NCIsICJ1bml2ZXJzYWwyIl0pLAorICAgICAgICBdLAorICAg
ICkKKyAgICBkZWYgdGVzdF9iaW5hcnlfZm9ybWF0cyhzZWxmLCB2ZXJzaW9uLCBhcmNoLCBleHBl
Y3RlZCk6CisgICAgICAgIGFzc2VydCB0YWdzLl9tYWNfYmluYXJ5X2Zvcm1hdHModmVyc2lvbiwg
YXJjaCkgPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fZGV0ZWN0aW9uKHNlbGYs
IG1vbmtleXBhdGNoKToKKyAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgIT0gIkRhcndpbiI6
CisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgICAgIHBsYXRm
b3JtLCAibWFjX3ZlciIsIGxhbWJkYTogKCIxMC4xNCIsICgiIiwgIiIsICIiKSwgIng4Nl82NCIp
CisgICAgICAgICAgICApCisgICAgICAgIHZlcnNpb24gPSBwbGF0Zm9ybS5tYWNfdmVyKClbMF0u
c3BsaXQoIi4iKQorICAgICAgICBleHBlY3RlZCA9ICJtYWNvc3hfe21ham9yfV97bWlub3J9Ii5m
b3JtYXQobWFqb3I9dmVyc2lvblswXSwgbWlub3I9dmVyc2lvblsxXSkKKyAgICAgICAgcGxhdGZv
cm1zID0gbGlzdCh0YWdzLm1hY19wbGF0Zm9ybXMoYXJjaD0ieDg2XzY0IikpCisgICAgICAgIGFz
c2VydCBwbGF0Zm9ybXNbMF0uc3RhcnRzd2l0aChleHBlY3RlZCkKKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgiYXJjaCIsIFsieDg2XzY0IiwgImkzODYiXSkKKyAgICBkZWYgdGVzdF9h
cmNoX2RldGVjdGlvbihzZWxmLCBhcmNoLCBtb25rZXlwYXRjaCk6CisgICAgICAgIGlmIHBsYXRm
b3JtLnN5c3RlbSgpICE9ICJEYXJ3aW4iIG9yIHBsYXRmb3JtLm1hY192ZXIoKVsyXSAhPSBhcmNo
OgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgICAgICBwbGF0
Zm9ybSwgIm1hY192ZXIiLCBsYW1iZGE6ICgiMTAuMTQiLCAoIiIsICIiLCAiIiksIGFyY2gpCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfbWFj
X2FyY2giLCBsYW1iZGEgKmFyZ3M6IGFyY2gpCisgICAgICAgIGFzc2VydCBuZXh0KHRhZ3MubWFj
X3BsYXRmb3JtcygoMTAsIDE0KSkpLmVuZHN3aXRoKGFyY2gpCisKKyAgICBkZWYgdGVzdF9tYWNf
cGxhdGZvcm1zKHNlbGYpOgorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MubWFjX3BsYXRm
b3JtcygoMTAsIDUpLCAieDg2XzY0IikpCisgICAgICAgIGFzc2VydCBwbGF0Zm9ybXMgPT0gWwor
ICAgICAgICAgICAgIm1hY29zeF8xMF81X3g4Nl82NCIsCisgICAgICAgICAgICAibWFjb3N4XzEw
XzVfaW50ZWwiLAorICAgICAgICAgICAgIm1hY29zeF8xMF81X2ZhdDY0IiwKKyAgICAgICAgICAg
ICJtYWNvc3hfMTBfNV9mYXQzMiIsCisgICAgICAgICAgICAibWFjb3N4XzEwXzVfdW5pdmVyc2Fs
MiIsCisgICAgICAgICAgICAibWFjb3N4XzEwXzVfdW5pdmVyc2FsIiwKKyAgICAgICAgICAgICJt
YWNvc3hfMTBfNF94ODZfNjQiLAorICAgICAgICAgICAgIm1hY29zeF8xMF80X2ludGVsIiwKKyAg
ICAgICAgICAgICJtYWNvc3hfMTBfNF9mYXQ2NCIsCisgICAgICAgICAgICAibWFjb3N4XzEwXzRf
ZmF0MzIiLAorICAgICAgICAgICAgIm1hY29zeF8xMF80X3VuaXZlcnNhbDIiLAorICAgICAgICAg
ICAgIm1hY29zeF8xMF80X3VuaXZlcnNhbCIsCisgICAgICAgIF0KKworICAgICAgICBhc3NlcnQg
bGVuKGxpc3QodGFncy5tYWNfcGxhdGZvcm1zKCgxMCwgMTcpLCAieDg2XzY0IikpKSA9PSAxNCAq
IDYKKworICAgICAgICBhc3NlcnQgbm90IGxpc3QodGFncy5tYWNfcGxhdGZvcm1zKCgxMCwgMCks
ICJ4ODZfNjQiKSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibWFqb3IsbWlub3Ii
LCBbKDExLCAwKSwgKDExLCAzKSwgKDEyLCAwKSwgKDEyLCAzKV0pCisgICAgZGVmIHRlc3RfbWFj
b3NfMTEoc2VsZiwgbWFqb3IsIG1pbm9yKToKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdz
Lm1hY19wbGF0Zm9ybXMoKG1ham9yLCBtaW5vciksICJ4ODZfNjQiKSkKKyAgICAgICAgYXNzZXJ0
ICJtYWNvc3hfMTFfMF9hcm02NCIgbm90IGluIHBsYXRmb3JtcworICAgICAgICBhc3NlcnQgIm1h
Y29zeF8xMV8wX3g4Nl82NCIgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAibWFjb3N4XzEx
XzNfeDg2XzY0IiBub3QgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAibWFjb3N4XzExXzBf
dW5pdmVyc2FsIiBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0ICJtYWNvc3hfMTFfMF91bml2
ZXJzYWwyIiBpbiBwbGF0Zm9ybXMKKyAgICAgICAgIyBNYWMgT1MgIjEwLjE2IiBpcyB0aGUgdmVy
c2lvbiBudW1iZXIgdGhhdCBiaW5hcmllcyBjb21waWxlZCBhZ2FpbnN0IGFuIG9sZAorICAgICAg
ICAjIChwcmUgMTEuMCkgU0RLIHdpbGwgc2VlLiAgIEl0IGNhbiBhbHNvIGJlIGVuYWJsZWQgZXhw
bGljaXRseSBmb3IgYSBwcm9jZXNzCisgICAgICAgICMgd2l0aCB0aGUgZW52aXJvbm1lbnQgdmFy
aWFibGUgU1lTVEVNX1ZFUlNJT05fQ09NUEFUPTEuCisgICAgICAgIGFzc2VydCAibWFjb3N4XzEw
XzE2X3g4Nl82NCIgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAibWFjb3N4XzEwXzE1X3g4
Nl82NCIgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAibWFjb3N4XzEwXzRfeDg2XzY0IiBp
biBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0ICJtYWNvc3hfMTBfM194ODZfNjQiIG5vdCBpbiBw
bGF0Zm9ybXMKKyAgICAgICAgaWYgbWFqb3IgPj0gMTI6CisgICAgICAgICAgICBhc3NlcnQgIm1h
Y29zeF8xMl8wX3g4Nl82NCIgaW4gcGxhdGZvcm1zCisgICAgICAgICAgICBhc3NlcnQgIm1hY29z
eF8xMl8wX3VuaXZlcnNhbCIgaW4gcGxhdGZvcm1zCisgICAgICAgICAgICBhc3NlcnQgIm1hY29z
eF8xMl8wX3VuaXZlcnNhbDIiIGluIHBsYXRmb3JtcworCisgICAgICAgIHBsYXRmb3JtcyA9IGxp
c3QodGFncy5tYWNfcGxhdGZvcm1zKChtYWpvciwgbWlub3IpLCAiYXJtNjQiKSkKKyAgICAgICAg
YXNzZXJ0ICJtYWNvc3hfMTFfMF9hcm02NCIgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAi
bWFjb3N4XzExXzNfYXJtNjQiIG5vdCBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0ICJtYWNv
c3hfMTFfMF91bml2ZXJzYWwiIG5vdCBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0ICJtYWNv
c3hfMTFfMF91bml2ZXJzYWwyIiBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0ICJtYWNvc3hf
MTBfMTVfeDg2XzY0IiBub3QgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAibWFjb3N4XzEw
XzRfeDg2XzY0IiBub3QgaW4gcGxhdGZvcm1zCisgICAgICAgIGFzc2VydCAibWFjb3N4XzEwXzNf
eDg2XzY0IiBub3QgaW4gcGxhdGZvcm1zCisgICAgICAgIGlmIG1ham9yID49IDEyOgorICAgICAg
ICAgICAgYXNzZXJ0ICJtYWNvc3hfMTJfMF9hcm02NCIgaW4gcGxhdGZvcm1zCisgICAgICAgICAg
ICBhc3NlcnQgIm1hY29zeF8xMl8wX3VuaXZlcnNhbDIiIGluIHBsYXRmb3JtcworCisKK2NsYXNz
IFRlc3RNYW55bGludXhQbGF0Zm9ybToKKyAgICBkZWYgdGVhcmRvd25fbWV0aG9kKHNlbGYpOgor
ICAgICAgICAjIENsZWFyIHRoZSB2ZXJzaW9uIGNhY2hlCisgICAgICAgIHRhZ3MuX2dsaWJjX3Zl
cnNpb24gPSBbXQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ0ZiIsIChUcnVlLCBG
YWxzZSkpCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiYXR0cmlidXRl
LGdsaWJjIiwgKCgiMSIsICgyLCA1KSksICgiMjAxMCIsICgyLCAxMikpLCAoIjIwMTQiLCAoMiwg
MTcpKSkKKyAgICApCisgICAgZGVmIHRlc3RfbW9kdWxlX2RlY2xhcmF0aW9uKAorICAgICAgICBz
ZWxmLCBtb25rZXlwYXRjaCwgbWFueWxpbnV4X21vZHVsZSwgYXR0cmlidXRlLCBnbGliYywgdGYK
KyAgICApOgorICAgICAgICBtYW55bGludXggPSAibWFueWxpbnV4e31fY29tcGF0aWJsZSIuZm9y
bWF0KGF0dHJpYnV0ZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihtYW55bGludXhfbW9k
dWxlLCBtYW55bGludXgsIHRmLCByYWlzaW5nPUZhbHNlKQorICAgICAgICByZXMgPSB0YWdzLl9p
c19tYW55bGludXhfY29tcGF0aWJsZShtYW55bGludXgsICJ4ODZfNjQiLCBnbGliYykKKyAgICAg
ICAgYXNzZXJ0IHRmIGlzIHJlcworCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAg
ICAgICAiYXR0cmlidXRlLGdsaWJjIiwgKCgiMSIsICgyLCA1KSksICgiMjAxMCIsICgyLCAxMikp
LCAoIjIwMTQiLCAoMiwgMTcpKSkKKyAgICApCisgICAgZGVmIHRlc3RfbW9kdWxlX2RlY2xhcmF0
aW9uX21pc3NpbmdfYXR0cmlidXRlKAorICAgICAgICBzZWxmLCBtb25rZXlwYXRjaCwgbWFueWxp
bnV4X21vZHVsZSwgYXR0cmlidXRlLCBnbGliYworICAgICk6CisgICAgICAgIG1hbnlsaW51eCA9
ICJtYW55bGludXh7fV9jb21wYXRpYmxlIi5mb3JtYXQoYXR0cmlidXRlKQorICAgICAgICBtb25r
ZXlwYXRjaC5kZWxhdHRyKG1hbnlsaW51eF9tb2R1bGUsIG1hbnlsaW51eCwgcmFpc2luZz1GYWxz
ZSkKKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2lzX21hbnlsaW51eF9jb21wYXRpYmxlKG1hbnlsaW51
eCwgIng4Nl82NCIsIGdsaWJjKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAg
ICAgICAidmVyc2lvbixjb21wYXRpYmxlIiwgKCgoMiwgMCksIFRydWUpLCAoKDIsIDUpLCBUcnVl
KSwgKCgyLCAxMCksIEZhbHNlKSkKKyAgICApCisgICAgZGVmIHRlc3RfaXNfbWFueWxpbnV4X2Nv
bXBhdGlibGVfZ2xpYmNfc3VwcG9ydCgKKyAgICAgICAgc2VsZiwgdmVyc2lvbiwgY29tcGF0aWJs
ZSwgbW9ua2V5cGF0Y2gKKyAgICApOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKHN5cy5t
b2R1bGVzLCAiX21hbnlsaW51eCIsIE5vbmUpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
dGFncywgIl9nZXRfZ2xpYmNfdmVyc2lvbiIsIGxhbWJkYTogKDIsIDUpKQorICAgICAgICBhc3Nl
cnQgKAorICAgICAgICAgICAgYm9vbCh0YWdzLl9pc19tYW55bGludXhfY29tcGF0aWJsZSgibWFu
eWxpbnV4MSIsICJhbnkiLCB2ZXJzaW9uKSkKKyAgICAgICAgICAgID09IGNvbXBhdGlibGUKKyAg
ICAgICAgKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uX3N0ciIsIFsi
Z2xpYmMtMi40LjUiLCAiMiJdKQorICAgIGRlZiB0ZXN0X2NoZWNrX2dsaWJjX3ZlcnNpb25fd2Fy
bmluZyhzZWxmLCB2ZXJzaW9uX3N0cik6CisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2Fy
bmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB0YWdzLl9wYXJzZV9nbGliY192
ZXJzaW9uKHZlcnNpb25fc3RyKQorICAgICAgICAgICAgYXNzZXJ0IGxlbih3KSA9PSAxCisgICAg
ICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBSdW50aW1lV2FybmluZykK
KworICAgIEBweXRlc3QubWFyay5za2lwaWYobm90IGN0eXBlcywgcmVhc29uPSJyZXF1aXJlcyBj
dHlwZXMiKQorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInZlcnNpb25f
c3RyLGV4cGVjdGVkIiwKKyAgICAgICAgWworICAgICAgICAgICAgIyBCZSB2ZXJ5IGV4cGxpY2l0
IGFib3V0IGJ5dGVzIGFuZCBVbmljb2RlIGZvciBQeXRob24gMiB0ZXN0aW5nLgorICAgICAgICAg
ICAgKGIiMi40IiwgIjIuNCIpLAorICAgICAgICAgICAgKHUiMi40IiwgIjIuNCIpLAorICAgICAg
ICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9nbGliY192ZXJzaW9uX3N0cmluZyhzZWxmLCB2ZXJz
aW9uX3N0ciwgZXhwZWN0ZWQsIG1vbmtleXBhdGNoKToKKyAgICAgICAgY2xhc3MgTGliY1ZlcnNp
b246CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbl9zdHIpOgorICAgICAg
ICAgICAgICAgIHNlbGYudmVyc2lvbl9zdHIgPSB2ZXJzaW9uX3N0cgorCisgICAgICAgICAgICBk
ZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlcnNpb25fc3RyCisK
KyAgICAgICAgY2xhc3MgUHJvY2Vzc05hbWVzcGFjZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsaWJjX3ZlcnNpb24pOgorICAgICAgICAgICAgICAgIHNlbGYuZ251X2dldF9saWJj
X3ZlcnNpb24gPSBsaWJjX3ZlcnNpb24KKworICAgICAgICBwcm9jZXNzX25hbWVzcGFjZSA9IFBy
b2Nlc3NOYW1lc3BhY2UoTGliY1ZlcnNpb24odmVyc2lvbl9zdHIpKQorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKGN0eXBlcywgIkNETEwiLCBsYW1iZGEgXzogcHJvY2Vzc19uYW1lc3BhY2Up
CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9nbGliY192ZXJzaW9uX3N0cmlu
Z19jb25mc3RyIiwgbGFtYmRhOiBGYWxzZSkKKworICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNf
dmVyc2lvbl9zdHJpbmcoKSA9PSBleHBlY3RlZAorCisgICAgICAgIGRlbCBwcm9jZXNzX25hbWVz
cGFjZS5nbnVfZ2V0X2xpYmNfdmVyc2lvbgorICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNfdmVy
c2lvbl9zdHJpbmcoKSBpcyBOb25lCisKKyAgICBkZWYgdGVzdF9nbGliY192ZXJzaW9uX3N0cmlu
Z19jb25mc3RyKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cihvcywgImNvbmZzdHIiLCBsYW1iZGEgeDogImdsaWJjIDIuMjAiLCByYWlzaW5nPUZhbHNlKQor
ICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cigpID09ICIy
LjIwIgorCisgICAgZGVmIHRlc3RfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfZmFpbChzZWxmLCBtb25r
ZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIob3MsICJjb25mc3RyIiwgbGFt
YmRhIHg6IE5vbmUsIHJhaXNpbmc9RmFsc2UpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0o
c3lzLm1vZHVsZXMsICJjdHlwZXMiLCBOb25lKQorICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNf
dmVyc2lvbl9zdHJpbmcoKSBpcyBOb25lCisgICAgICAgIGFzc2VydCB0YWdzLl9nZXRfZ2xpYmNf
dmVyc2lvbigpID09ICgtMSwgLTEpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisg
ICAgICAgICJmYWlsdXJlIiwKKyAgICAgICAgW3ByZXRlbmQucmFpc2VyKFZhbHVlRXJyb3IpLCBw
cmV0ZW5kLnJhaXNlcihPU0Vycm9yKSwgbGFtYmRhIHg6ICJYWFgiXSwKKyAgICApCisgICAgZGVm
IHRlc3RfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cl9mYWlsKHNlbGYsIG1vbmtleXBhdGNo
LCBmYWlsdXJlKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvcywgImNvbmZzdHIiLCBm
YWlsdXJlLCByYWlzaW5nPUZhbHNlKQorICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNfdmVyc2lv
bl9zdHJpbmdfY29uZnN0cigpIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X2dsaWJjX3ZlcnNpb25f
c3RyaW5nX2NvbmZzdHJfbWlzc2luZyhzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtl
eXBhdGNoLmRlbGF0dHIob3MsICJjb25mc3RyIiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgYXNz
ZXJ0IHRhZ3MuX2dsaWJjX3ZlcnNpb25fc3RyaW5nX2NvbmZzdHIoKSBpcyBOb25lCisKKyAgICBk
ZWYgdGVzdF9nbGliY192ZXJzaW9uX3N0cmluZ19jdHlwZXNfbWlzc2luZyhzZWxmLCBtb25rZXlw
YXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oc3lzLm1vZHVsZXMsICJjdHlwZXMi
LCBOb25lKQorICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY3R5cGVz
KCkgaXMgTm9uZQorCisgICAgZGVmIHRlc3RfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY3R5cGVzX3Jh
aXNlX29zZXJyb3Ioc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBkZWYgcGF0Y2hlZF9jZGxs
KG5hbWUpOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiRHluYW1pYyBsb2FkaW5nIG5vdCBz
dXBwb3J0ZWQiKQorCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoY3R5cGVzLCAiQ0RMTCIs
IHBhdGNoZWRfY2RsbCkKKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2dsaWJjX3ZlcnNpb25fc3RyaW5n
X2N0eXBlcygpIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X2dldF9jb25maWdfdmFyX2RvZXNfbm90
X2xvZyhzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIGRlYnVnID0gcHJldGVuZC5jYWxsX3Jl
Y29yZGVyKGxhbWJkYSAqYTogTm9uZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdz
LmxvZ2dlciwgImRlYnVnIiwgZGVidWcpCisgICAgICAgIHRhZ3MuX2dldF9jb25maWdfdmFyKCJt
aXNzaW5nIikKKyAgICAgICAgYXNzZXJ0IGRlYnVnLmNhbGxzID09IFtdCisKKyAgICBkZWYgdGVz
dF9nZXRfY29uZmlnX3Zhcl9kb2VzX2xvZyhzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIGRl
YnVnID0gcHJldGVuZC5jYWxsX3JlY29yZGVyKGxhbWJkYSAqYTogTm9uZSkKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cih0YWdzLmxvZ2dlciwgImRlYnVnIiwgZGVidWcpCisgICAgICAgIHRh
Z3MuX2dldF9jb25maWdfdmFyKCJtaXNzaW5nIiwgd2Fybj1UcnVlKQorICAgICAgICBhc3NlcnQg
ZGVidWcuY2FsbHMgPT0gWworICAgICAgICAgICAgcHJldGVuZC5jYWxsKAorICAgICAgICAgICAg
ICAgICJDb25maWcgdmFyaWFibGUgJyVzJyBpcyB1bnNldCwgUHl0aG9uIEFCSSB0YWcgbWF5IGJl
IGluY29ycmVjdCIsCisgICAgICAgICAgICAgICAgIm1pc3NpbmciLAorICAgICAgICAgICAgKQor
ICAgICAgICBdCisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHBsYXRmb3JtLnN5c3RlbSgpICE9
ICJMaW51eCIsIHJlYXNvbj0icmVxdWlyZXMgTGludXgiKQorICAgIGRlZiB0ZXN0X2lzX21hbnls
aW51eF9jb21wYXRpYmxlX29sZChzZWxmKToKKyAgICAgICAgIyBBc3N1bWluZyBubyBvbmUgaXMg
cnVubmluZyB0aGlzIHRlc3Qgd2l0aCBhIHZlcnNpb24gb2YgZ2xpYmMgcmVsZWFzZWQgaW4KKyAg
ICAgICAgIyAxOTk3LgorICAgICAgICBhc3NlcnQgdGFncy5faXNfbWFueWxpbnV4X2NvbXBhdGli
bGUoImFueSIsICJhbnkiLCAoMiwgMCkpCisKKyAgICBkZWYgdGVzdF9pc19tYW55bGludXhfY29t
cGF0aWJsZShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
dGFncywgIl9nbGliY192ZXJzaW9uX3N0cmluZyIsIGxhbWJkYTogIjIuNCIpCisgICAgICAgIGFz
c2VydCB0YWdzLl9pc19tYW55bGludXhfY29tcGF0aWJsZSgiIiwgImFueSIsICgyLCA0KSkKKwor
ICAgIGRlZiB0ZXN0X2dsaWJjX3ZlcnNpb25fc3RyaW5nX25vbmUoc2VsZiwgbW9ua2V5cGF0Y2gp
OgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2xpYmNfdmVyc2lvbl9zdHJp
bmciLCBsYW1iZGE6IE5vbmUpCisgICAgICAgIGFzc2VydCBub3QgdGFncy5faXNfbWFueWxpbnV4
X2NvbXBhdGlibGUoImFueSIsICJhbnkiLCAoMiwgNCkpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoCisgICAgICAgICJhcmNoLGlzXzMyYml0LGV4cGVjdGVkIiwKKyAgICAgICAgWwor
ICAgICAgICAgICAgKCJsaW51eC14ODZfNjQiLCBGYWxzZSwgImxpbnV4X3g4Nl82NCIpLAorICAg
ICAgICAgICAgKCJsaW51eC14ODZfNjQiLCBUcnVlLCAibGludXhfaTY4NiIpLAorICAgICAgICAg
ICAgKCJsaW51eC1hYXJjaDY0IiwgRmFsc2UsICJsaW51eF9hYXJjaDY0IiksCisgICAgICAgICAg
ICAoImxpbnV4LWFhcmNoNjQiLCBUcnVlLCAibGludXhfYXJtdjdsIiksCisgICAgICAgIF0sCisg
ICAgKQorICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRmb3Jtc18zMl82NGJpdF9vbl82NGJpdF9vcygK
KyAgICAgICAgc2VsZiwgYXJjaCwgaXNfMzJiaXQsIGV4cGVjdGVkLCBtb25rZXlwYXRjaAorICAg
ICk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxh
dGZvcm0iLCBsYW1iZGE6IGFyY2gpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIob3MsICJj
b25mc3RyIiwgbGFtYmRhIHg6ICJnbGliYyAyLjIwIiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAg
bW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2lzX21hbnlsaW51eF9jb21wYXRpYmxlIiwgbGFt
YmRhICphcmdzOiBGYWxzZSkKKyAgICAgICAgbGludXhfcGxhdGZvcm0gPSBsaXN0KHRhZ3MuX2xp
bnV4X3BsYXRmb3Jtcyhpc18zMmJpdD1pc18zMmJpdCkpWy0xXQorICAgICAgICBhc3NlcnQgbGlu
dXhfcGxhdGZvcm0gPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRmb3Jtc19t
YW55bGludXhfdW5zdXBwb3J0ZWQoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAibGlu
dXhfeDg2XzY0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvcywgImNvbmZzdHIiLCBs
YW1iZGEgeDogImdsaWJjIDIuMjAiLCByYWlzaW5nPUZhbHNlKQorICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKHRhZ3MsICJfaXNfbWFueWxpbnV4X2NvbXBhdGlibGUiLCBsYW1iZGEgKmFyZ3M6
IEZhbHNlKQorICAgICAgICBsaW51eF9wbGF0Zm9ybSA9IGxpc3QodGFncy5fbGludXhfcGxhdGZv
cm1zKGlzXzMyYml0PUZhbHNlKSkKKyAgICAgICAgYXNzZXJ0IGxpbnV4X3BsYXRmb3JtID09IFsi
bGludXhfeDg2XzY0Il0KKworICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRmb3Jtc19tYW55bGludXgx
KHNlbGYsIGlzX3g4NiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRy
KAorICAgICAgICAgICAgdGFncywgIl9pc19tYW55bGludXhfY29tcGF0aWJsZSIsIGxhbWJkYSBu
YW1lLCAqYXJnczogbmFtZSA9PSAibWFueWxpbnV4MSIKKyAgICAgICAgKQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAi
bGludXhfeDg2XzY0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwbGF0Zm9ybSwgIm1h
Y2hpbmUiLCBsYW1iZGE6ICJ4ODZfNjQiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9z
LCAiY29uZnN0ciIsIGxhbWJkYSB4OiAiZ2xpYmMgMi4yMCIsIHJhaXNpbmc9RmFsc2UpCisgICAg
ICAgIHBsYXRmb3JtcyA9IGxpc3QodGFncy5fbGludXhfcGxhdGZvcm1zKGlzXzMyYml0PUZhbHNl
KSkKKyAgICAgICAgYXJjaCA9IHBsYXRmb3JtLm1hY2hpbmUoKQorICAgICAgICBhc3NlcnQgcGxh
dGZvcm1zID09IFsibWFueWxpbnV4MV8iICsgYXJjaCwgImxpbnV4XyIgKyBhcmNoXQorCisgICAg
ZGVmIHRlc3RfbGludXhfcGxhdGZvcm1zX21hbnlsaW51eDIwMTAoc2VsZiwgaXNfeDg2LCBtb25r
ZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJn
ZXRfcGxhdGZvcm0iLCBsYW1iZGE6ICJsaW51eF94ODZfNjQiKQorICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKHBsYXRmb3JtLCAibWFjaGluZSIsIGxhbWJkYTogIng4Nl82NCIpCisgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIob3MsICJjb25mc3RyIiwgbGFtYmRhIHg6ICJnbGliYyAyLjEy
IiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9w
bGF0Zm9ybXMoaXNfMzJiaXQ9RmFsc2UpKQorICAgICAgICBhcmNoID0gcGxhdGZvcm0ubWFjaGlu
ZSgpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgIm1hbnlsaW51eF8yXzEyXyIg
KyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eDIwMTBfIiArIGFyY2gsCisgICAgICAgICAg
ICAibWFueWxpbnV4XzJfMTFfIiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTBf
IiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfOV8iICsgYXJjaCwKKyAgICAgICAg
ICAgICJtYW55bGludXhfMl84XyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzdf
IiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfNl8iICsgYXJjaCwKKyAgICAgICAg
ICAgICJtYW55bGludXhfMl81XyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eDFfIiAr
IGFyY2gsCisgICAgICAgICAgICAibGludXhfIiArIGFyY2gsCisgICAgICAgIF0KKyAgICAgICAg
YXNzZXJ0IHBsYXRmb3JtcyA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3RfbGludXhfcGxhdGZv
cm1zX21hbnlsaW51eDIwMTQoc2VsZiwgaXNfeDg2LCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1v
bmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZvcm0iLCBsYW1iZGE6
ICJsaW51eF94ODZfNjQiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBsYXRmb3JtLCAi
bWFjaGluZSIsIGxhbWJkYTogIng4Nl82NCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
b3MsICJjb25mc3RyIiwgbGFtYmRhIHg6ICJnbGliYyAyLjE3IiwgcmFpc2luZz1GYWxzZSkKKyAg
ICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9wbGF0Zm9ybXMoaXNfMzJiaXQ9RmFs
c2UpKQorICAgICAgICBhcmNoID0gcGxhdGZvcm0ubWFjaGluZSgpCisgICAgICAgIGV4cGVjdGVk
ID0gWworICAgICAgICAgICAgIm1hbnlsaW51eF8yXzE3XyIgKyBhcmNoLAorICAgICAgICAgICAg
Im1hbnlsaW51eDIwMTRfIiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTZfIiAr
IGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTVfIiArIGFyY2gsCisgICAgICAgICAg
ICAibWFueWxpbnV4XzJfMTRfIiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTNf
IiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTJfIiArIGFyY2gsCisgICAgICAg
ICAgICAibWFueWxpbnV4MjAxMF8iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8x
MV8iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xMF8iICsgYXJjaCwKKyAgICAg
ICAgICAgICJtYW55bGludXhfMl85XyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8y
XzhfIiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfN18iICsgYXJjaCwKKyAgICAg
ICAgICAgICJtYW55bGludXhfMl82XyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8y
XzVfIiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4MV8iICsgYXJjaCwKKyAgICAgICAg
ICAgICJsaW51eF8iICsgYXJjaCwKKyAgICAgICAgXQorICAgICAgICBhc3NlcnQgcGxhdGZvcm1z
ID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF9saW51eF9wbGF0Zm9ybXNfbWFueWxpbnV4MjAx
NF9hcm1oZl9hYmkoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKHRhZ3MsICJfZ2xpYmNfdmVyc2lvbl9zdHJpbmciLCBsYW1iZGE6ICIyLjMwIikKKyAgICAg
ICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIHRhZ3MsCisgICAgICAgICAgICAi
X2lzX21hbnlsaW51eF9jb21wYXRpYmxlIiwKKyAgICAgICAgICAgIGxhbWJkYSBuYW1lLCAqYXJn
czogbmFtZSA9PSAibWFueWxpbnV4MjAxNCIsCisgICAgICAgICkKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cihkaXN0dXRpbHMudXRpbCwgImdldF9wbGF0Zm9ybSIsIGxhbWJkYTogImxpbnV4
X2FybXY3bCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisgICAgICAgICAgICBzeXMs
CisgICAgICAgICAgICAiZXhlY3V0YWJsZSIsCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImhlbGxvLXdvcmxkLWFybXY3bC1hcm1oZiIpLAorICAg
ICAgICApCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFncy5fbGludXhfcGxhdGZvcm1zKGlz
XzMyYml0PVRydWUpKQorICAgICAgICBleHBlY3RlZCA9IFsibWFueWxpbnV4MjAxNF9hcm12N2wi
LCAibGludXhfYXJtdjdsIl0KKyAgICAgICAgYXNzZXJ0IHBsYXRmb3JtcyA9PSBleHBlY3RlZAor
CisgICAgZGVmIHRlc3RfbGludXhfcGxhdGZvcm1zX21hbnlsaW51eDIwMTRfaTM4Nl9hYmkoc2Vs
ZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2xp
YmNfdmVyc2lvbl9zdHJpbmciLCBsYW1iZGE6ICIyLjE3IikKKyAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cihkaXN0dXRpbHMudXRpbCwgImdldF9wbGF0Zm9ybSIsIGxhbWJkYTogImxpbnV4X3g4
Nl82NCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisgICAgICAgICAgICBzeXMsCisg
ICAgICAgICAgICAiZXhlY3V0YWJsZSIsCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgImhlbGxvLXdvcmxkLXg4Nl82NC1pMzg2IiksCisgICAgICAg
ICkKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9wbGF0Zm9ybXMoaXNfMzJi
aXQ9VHJ1ZSkpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgIm1hbnlsaW51eF8y
XzE3X2k2ODYiLAorICAgICAgICAgICAgIm1hbnlsaW51eDIwMTRfaTY4NiIsCisgICAgICAgICAg
ICAibWFueWxpbnV4XzJfMTZfaTY4NiIsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTVfaTY4
NiIsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTRfaTY4NiIsCisgICAgICAgICAgICAibWFu
eWxpbnV4XzJfMTNfaTY4NiIsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTJfaTY4NiIsCisg
ICAgICAgICAgICAibWFueWxpbnV4MjAxMF9pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGludXhf
Ml8xMV9pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xMF9pNjg2IiwKKyAgICAgICAg
ICAgICJtYW55bGludXhfMl85X2k2ODYiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzhfaTY4
NiIsCisgICAgICAgICAgICAibWFueWxpbnV4XzJfN19pNjg2IiwKKyAgICAgICAgICAgICJtYW55
bGludXhfMl82X2k2ODYiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzVfaTY4NiIsCisgICAg
ICAgICAgICAibWFueWxpbnV4MV9pNjg2IiwKKyAgICAgICAgICAgICJsaW51eF9pNjg2IiwKKyAg
ICAgICAgXQorICAgICAgICBhc3NlcnQgcGxhdGZvcm1zID09IGV4cGVjdGVkCisKKyAgICBkZWYg
dGVzdF9saW51eF9wbGF0Zm9ybXNfbWFueWxpbnV4X2dsaWJjMyhzZWxmLCBtb25rZXlwYXRjaCk6
CisgICAgICAgICMgdGVzdCBmb3IgYSBmdXR1cmUgZ2xpYyAzLnggdmVyc2lvbgorICAgICAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2xpYmNfdmVyc2lvbl9zdHJpbmciLCBsYW1iZGE6
ICIzLjIiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfaXNfbWFueWxpbnV4
X2NvbXBhdGlibGUiLCBsYW1iZGEgbmFtZSwgKmFyZ3M6IFRydWUpCisgICAgICAgIG1vbmtleXBh
dGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZvcm0iLCBsYW1iZGE6ICJsaW51
eF9hYXJjaDY0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIHN5
cywKKyAgICAgICAgICAgICJleGVjdXRhYmxlIiwKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiaGVsbG8td29ybGQtYWFyY2g2NCIpLAorICAgICAg
ICApCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFncy5fbGludXhfcGxhdGZvcm1zKGlzXzMy
Yml0PUZhbHNlKSkKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgICBbIm1hbnlsaW51
eF8zXzJfYWFyY2g2NCIsICJtYW55bGludXhfM18xX2FhcmNoNjQiLCAibWFueWxpbnV4XzNfMF9h
YXJjaDY0Il0KKyAgICAgICAgICAgICsgWyJtYW55bGludXhfMl97fV9hYXJjaDY0Ii5mb3JtYXQo
aSkgZm9yIGkgaW4gcmFuZ2UoNTAsIDE2LCAtMSldCisgICAgICAgICAgICArIFsibWFueWxpbnV4
MjAxNF9hYXJjaDY0IiwgImxpbnV4X2FhcmNoNjQiXQorICAgICAgICApCisgICAgICAgIGFzc2Vy
dCBwbGF0Zm9ybXMgPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRmb3Jtc19t
YW55bGludXgyMDE0X2FybXY2bChzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBh
dGNoLnNldGF0dHIoCisgICAgICAgICAgICB0YWdzLCAiX2lzX21hbnlsaW51eF9jb21wYXRpYmxl
IiwgbGFtYmRhIG5hbWUsIF86IG5hbWUgPT0gIm1hbnlsaW51eDIwMTQiCisgICAgICAgICkKKyAg
ICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihkaXN0dXRpbHMudXRpbCwgImdldF9wbGF0Zm9ybSIs
IGxhbWJkYTogImxpbnV4X2FybXY2bCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIob3Ms
ICJjb25mc3RyIiwgbGFtYmRhIHg6ICJnbGliYyAyLjIwIiwgcmFpc2luZz1GYWxzZSkKKyAgICAg
ICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9wbGF0Zm9ybXMoaXNfMzJiaXQ9VHJ1ZSkp
CisgICAgICAgIGV4cGVjdGVkID0gWyJsaW51eF9hcm12NmwiXQorICAgICAgICBhc3NlcnQgcGxh
dGZvcm1zID09IGV4cGVjdGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAg
ICAgICJtYWNoaW5lLCBhYmksIGFsdF9tYWNoaW5lIiwKKyAgICAgICAgWygieDg2XzY0IiwgIngz
MiIsICJpNjg2IiksICgiYXJtdjdsIiwgImFybWVsIiwgImFybXY3bCIpXSwKKyAgICApCisgICAg
ZGVmIHRlc3RfbGludXhfcGxhdGZvcm1zX25vdF9tYW55bGludXhfYWJpKAorICAgICAgICBzZWxm
LCBtb25rZXlwYXRjaCwgbWFjaGluZSwgYWJpLCBhbHRfbWFjaGluZQorICAgICk6CisgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9pc19tYW55bGludXhfY29tcGF0aWJsZSIsIGxh
bWJkYSBuYW1lLCBfOiBGYWxzZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAg
ICAgICAgIGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAibGludXhfe30i
LmZvcm1hdChtYWNoaW5lKQorICAgICAgICApCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
CisgICAgICAgICAgICBzeXMsCisgICAgICAgICAgICAiZXhlY3V0YWJsZSIsCisgICAgICAgICAg
ICBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgImhlbGxvLXdvcmxkLXt9LXt9Ii5mb3JtYXQobWFjaGluZSwgYWJpKQorICAgICAgICAgICAg
KSwKKyAgICAgICAgKQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRm
b3Jtcyhpc18zMmJpdD1UcnVlKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbImxpbnV4X3t9Ii5mb3Jt
YXQoYWx0X21hY2hpbmUpXQorICAgICAgICBhc3NlcnQgcGxhdGZvcm1zID09IGV4cGVjdGVkCisK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJtYWNoaW5lLCBhYmksIGVs
Zl9jbGFzcywgZWxmX2RhdGEsIGVsZl9tYWNoaW5lIiwKKyAgICAgICAgWworICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgICJ4ODZfNjQiLAorICAgICAgICAgICAgICAgICJ4MzIiLAorICAg
ICAgICAgICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxGQ0xBU1MzMiwKKyAgICAgICAgICAg
ICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVMRkRBVEEyTFNCLAorICAgICAgICAgICAgICAgIHRh
Z3MuX0VMRkZpbGVIZWFkZXIuRU1fWDg2XzY0LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICAieDg2XzY0IiwKKyAgICAgICAgICAgICAgICAiaTM4NiIsCisg
ICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZDTEFTUzMyLAorICAgICAgICAg
ICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxGREFUQTJMU0IsCisgICAgICAgICAgICAgICAg
dGFncy5fRUxGRmlsZUhlYWRlci5FTV8zODYsCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgICJ4ODZfNjQiLAorICAgICAgICAgICAgICAgICJhbWQ2NCIsCisg
ICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZDTEFTUzY0LAorICAgICAgICAg
ICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxGREFUQTJMU0IsCisgICAgICAgICAgICAgICAg
dGFncy5fRUxGRmlsZUhlYWRlci5FTV9YODZfNjQsCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgICJhcm12N2wiLAorICAgICAgICAgICAgICAgICJhcm1lbCIs
CisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZDTEFTUzMyLAorICAgICAg
ICAgICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxGREFUQTJMU0IsCisgICAgICAgICAgICAg
ICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTV9BUk0sCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgICJhcm12N2wiLAorICAgICAgICAgICAgICAgICJhcm1oZiIs
CisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZDTEFTUzMyLAorICAgICAg
ICAgICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxGREFUQTJMU0IsCisgICAgICAgICAgICAg
ICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTV9BUk0sCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgICJzMzkweCIsCisgICAgICAgICAgICAgICAgInMzOTB4IiwK
KyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVMRkNMQVNTNjQsCisgICAgICAg
ICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZEQVRBMk1TQiwKKyAgICAgICAgICAgICAg
ICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVNX1MzOTAsCisgICAgICAgICAgICApLAorICAgICAgICBd
LAorICAgICkKKyAgICBkZWYgdGVzdF9nZXRfZWxmX2hlYWRlcigKKyAgICAgICAgc2VsZiwgbW9u
a2V5cGF0Y2gsIG1hY2hpbmUsIGFiaSwgZWxmX2NsYXNzLCBlbGZfZGF0YSwgZWxmX21hY2hpbmUK
KyAgICApOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgImhlbGxvLXdvcmxkLXt9LXt9Ii5mb3JtYXQobWFjaGluZSwg
YWJpKQorICAgICAgICApCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAiZXhlY3V0
YWJsZSIsIHBhdGgpCisgICAgICAgIGVsZl9oZWFkZXIgPSB0YWdzLl9nZXRfZWxmX2hlYWRlcigp
CisgICAgICAgIGFzc2VydCBlbGZfaGVhZGVyLmVfaWRlbnRfY2xhc3MgPT0gZWxmX2NsYXNzCisg
ICAgICAgIGFzc2VydCBlbGZfaGVhZGVyLmVfaWRlbnRfZGF0YSA9PSBlbGZfZGF0YQorICAgICAg
ICBhc3NlcnQgZWxmX2hlYWRlci5lX21hY2hpbmUgPT0gZWxmX21hY2hpbmUKKworICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImNvbnRlbnQiLCBbTm9uZSwgImludmFsaWQt
bWFnaWMiLCAiaW52YWxpZC1jbGFzcyIsICJpbnZhbGlkLWRhdGEiLCAidG9vLXNob3J0Il0KKyAg
ICApCisgICAgZGVmIHRlc3RfZ2V0X2VsZl9oZWFkZXJfYmFkX2V4Y3V0YWJsZShzZWxmLCBtb25r
ZXlwYXRjaCwgY29udGVudCk6CisgICAgICAgIGlmIGNvbnRlbnQ6CisgICAgICAgICAgICBwYXRo
ID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICJoZWxsby13b3JsZC17fSIuZm9ybWF0KGNvbnRlbnQpCisgICAgICAgICAgICApCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBwYXRoID0gTm9uZQorICAgICAgICBtb25rZXlwYXRjaC5z
ZXRhdHRyKHN5cywgImV4ZWN1dGFibGUiLCBwYXRoKQorICAgICAgICBhc3NlcnQgdGFncy5fZ2V0
X2VsZl9oZWFkZXIoKSBpcyBOb25lCisKKyAgICBkZWYgdGVzdF9pc19saW51eF9hcm1oZl9ub3Rf
ZWxmKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdz
LCAiX2dldF9lbGZfaGVhZGVyIiwgbGFtYmRhOiBOb25lKQorICAgICAgICBhc3NlcnQgbm90IHRh
Z3MuX2lzX2xpbnV4X2FybWhmKCkKKworICAgIGRlZiB0ZXN0X2lzX2xpbnV4X2k2ODZfbm90X2Vs
ZihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywg
Il9nZXRfZWxmX2hlYWRlciIsIGxhbWJkYTogTm9uZSkKKyAgICAgICAgYXNzZXJ0IG5vdCB0YWdz
Ll9pc19saW51eF9pNjg2KCkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgInBs
YXRmb3JtX25hbWUsZGlzcGF0Y2hfZnVuYyIsCisgICAgWworICAgICAgICAoIkRhcndpbiIsICJt
YWNfcGxhdGZvcm1zIiksCisgICAgICAgICgiTGludXgiLCAiX2xpbnV4X3BsYXRmb3JtcyIpLAor
ICAgICAgICAoIkdlbmVyaWMiLCAiX2dlbmVyaWNfcGxhdGZvcm1zIiksCisgICAgXSwKKykKK2Rl
ZiB0ZXN0X19wbGF0Zm9ybV90YWdzKHBsYXRmb3JtX25hbWUsIGRpc3BhdGNoX2Z1bmMsIG1vbmtl
eXBhdGNoKToKKyAgICBleHBlY3RlZCA9IFsic2lsbHl3YWxrIl0KKyAgICBtb25rZXlwYXRjaC5z
ZXRhdHRyKHBsYXRmb3JtLCAic3lzdGVtIiwgbGFtYmRhOiBwbGF0Zm9ybV9uYW1lKQorICAgIG1v
bmtleXBhdGNoLnNldGF0dHIodGFncywgZGlzcGF0Y2hfZnVuYywgbGFtYmRhOiBleHBlY3RlZCkK
KyAgICBhc3NlcnQgdGFncy5fcGxhdGZvcm1fdGFncygpID09IGV4cGVjdGVkCisKKworY2xhc3Mg
VGVzdENQeXRob25BQkk6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAi
cHlfZGVidWcsZ2V0dG90YWxyZWZjb3VudCxyZXN1bHQiLAorICAgICAgICBbKDEsIEZhbHNlLCBU
cnVlKSwgKDAsIEZhbHNlLCBGYWxzZSksIChOb25lLCBUcnVlLCBUcnVlKV0sCisgICAgKQorICAg
IGRlZiB0ZXN0X2RlYnVnKHNlbGYsIHB5X2RlYnVnLCBnZXR0b3RhbHJlZmNvdW50LCByZXN1bHQs
IG1vbmtleXBhdGNoKToKKyAgICAgICAgY29uZmlnID0geyJQeV9ERUJVRyI6IHB5X2RlYnVnLCAi
V0lUSF9QWU1BTExPQyI6IDAsICJQeV9VTklDT0RFX1NJWkUiOiAyfQorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKHN5c2NvbmZpZywgImdldF9jb25maWdfdmFyIiwgY29uZmlnLl9fZ2V0aXRl
bV9fKQorICAgICAgICBpZiBnZXR0b3RhbHJlZmNvdW50OgorICAgICAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50IiwgMSwgcmFpc2luZz1GYWxzZSkKKyAg
ICAgICAgZXhwZWN0ZWQgPSBbImNwMzdkIiBpZiByZXN1bHQgZWxzZSAiY3AzNyJdCisgICAgICAg
IGFzc2VydCB0YWdzLl9jcHl0aG9uX2FiaXMoKDMsIDcpKSA9PSBleHBlY3RlZAorCisgICAgZGVm
IHRlc3RfZGVidWdfZmlsZV9leHRlbnNpb24oc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBj
b25maWcgPSB7IlB5X0RFQlVHIjogTm9uZX0KKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihz
eXNjb25maWcsICJnZXRfY29uZmlnX3ZhciIsIGNvbmZpZy5fX2dldGl0ZW1fXykKKyAgICAgICAg
bW9ua2V5cGF0Y2guZGVsYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50IiwgcmFpc2luZz1GYWxz
ZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiRVhURU5TSU9OX1NVRkZJWEVT
IiwgeyJfZC5weWQifSkKKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2NweXRob25fYWJpcygoMywgOCkp
ID09IFsiY3AzOGQiLCAiY3AzOCJdCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisg
ICAgICAgICJkZWJ1ZyxleHBlY3RlZCIsIFsoVHJ1ZSwgWyJjcDM4ZCIsICJjcDM4Il0pLCAoRmFs
c2UsIFsiY3AzOCJdKV0KKyAgICApCisgICAgZGVmIHRlc3RfX2RlYnVnX2NwMzgoc2VsZiwgZGVi
dWcsIGV4cGVjdGVkLCBtb25rZXlwYXRjaCk6CisgICAgICAgIGNvbmZpZyA9IHsiUHlfREVCVUci
OiBkZWJ1Z30KKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXNjb25maWcsICJnZXRfY29u
ZmlnX3ZhciIsIGNvbmZpZy5fX2dldGl0ZW1fXykKKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2NweXRo
b25fYWJpcygoMywgOCkpID09IGV4cGVjdGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoCisgICAgICAgICJweW1hbGxvYyx2ZXJzaW9uLHJlc3VsdCIsCisgICAgICAgIFsKKyAgICAg
ICAgICAgICgxLCAoMywgNyksIFRydWUpLAorICAgICAgICAgICAgKDAsICgzLCA3KSwgRmFsc2Up
LAorICAgICAgICAgICAgKE5vbmUsICgzLCA3KSwgVHJ1ZSksCisgICAgICAgICAgICAoMSwgKDMs
IDgpLCBGYWxzZSksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3B5bWFsbG9jKHNl
bGYsIHB5bWFsbG9jLCB2ZXJzaW9uLCByZXN1bHQsIG1vbmtleXBhdGNoKToKKyAgICAgICAgY29u
ZmlnID0geyJQeV9ERUJVRyI6IDAsICJXSVRIX1BZTUFMTE9DIjogcHltYWxsb2MsICJQeV9VTklD
T0RFX1NJWkUiOiAyfQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5c2NvbmZpZywgImdl
dF9jb25maWdfdmFyIiwgY29uZmlnLl9fZ2V0aXRlbV9fKQorICAgICAgICBiYXNlX2FiaSA9ICJj
cHt9e30iLmZvcm1hdCh2ZXJzaW9uWzBdLCB2ZXJzaW9uWzFdKQorICAgICAgICBleHBlY3RlZCA9
IFtiYXNlX2FiaSArICJtIiBpZiByZXN1bHQgZWxzZSBiYXNlX2FiaV0KKyAgICAgICAgYXNzZXJ0
IHRhZ3MuX2NweXRob25fYWJpcyh2ZXJzaW9uKSA9PSBleHBlY3RlZAorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAidW5pY29kZV9zaXplLG1heHVuaWNvZGUsdmVyc2lv
bixyZXN1bHQiLAorICAgICAgICBbCisgICAgICAgICAgICAoNCwgMHgxMEZGRkYsICgzLCAyKSwg
VHJ1ZSksCisgICAgICAgICAgICAoMiwgMHhGRkZGLCAoMywgMiksIEZhbHNlKSwKKyAgICAgICAg
ICAgIChOb25lLCAweDEwRkZGRiwgKDMsIDIpLCBUcnVlKSwKKyAgICAgICAgICAgIChOb25lLCAw
eEZGRkYsICgzLCAyKSwgRmFsc2UpLAorICAgICAgICAgICAgKDQsIDB4MTBGRkZGLCAoMywgMyks
IEZhbHNlKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfd2lkZV91bmljb2RlKHNl
bGYsIHVuaWNvZGVfc2l6ZSwgbWF4dW5pY29kZSwgdmVyc2lvbiwgcmVzdWx0LCBtb25rZXlwYXRj
aCk6CisgICAgICAgIGNvbmZpZyA9IHsiUHlfREVCVUciOiAwLCAiV0lUSF9QWU1BTExPQyI6IDAs
ICJQeV9VTklDT0RFX1NJWkUiOiB1bmljb2RlX3NpemV9CisgICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIoc3lzY29uZmlnLCAiZ2V0X2NvbmZpZ192YXIiLCBjb25maWcuX19nZXRpdGVtX18pCisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAibWF4dW5pY29kZSIsIG1heHVuaWNvZGUp
CisgICAgICAgIGJhc2VfYWJpID0gImNwIiArIHRhZ3MuX3ZlcnNpb25fbm9kb3QodmVyc2lvbikK
KyAgICAgICAgZXhwZWN0ZWQgPSBbYmFzZV9hYmkgKyAidSIgaWYgcmVzdWx0IGVsc2UgYmFzZV9h
YmldCisgICAgICAgIGFzc2VydCB0YWdzLl9jcHl0aG9uX2FiaXModmVyc2lvbikgPT0gZXhwZWN0
ZWQKKworCitjbGFzcyBUZXN0Q1B5dGhvblRhZ3M6CisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcmV0
dXJuZWQoc2VsZik6CisgICAgICAgIHJlc3VsdF9pdGVyYXRvciA9IHRhZ3MuY3B5dGhvbl90YWdz
KAorICAgICAgICAgICAgKDMsIDgpLCBbImNwMzhkIiwgImNwMzgiXSwgWyJwbGF0MSIsICJwbGF0
MiJdCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0X2l0ZXJhdG9y
LCBjb2xsZWN0aW9uc19hYmMuSXRlcmF0b3IpCisKKyAgICBkZWYgdGVzdF9hbGxfYXJncyhzZWxm
KToKKyAgICAgICAgcmVzdWx0X2l0ZXJhdG9yID0gdGFncy5jcHl0aG9uX3RhZ3MoCisgICAgICAg
ICAgICAoMywgMTEpLCBbImNwM18xMWQiLCAiY3AzXzExIl0sIFsicGxhdDEiLCAicGxhdDIiXQor
ICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IGxpc3QocmVzdWx0X2l0ZXJhdG9yKQorICAgICAg
ICBhc3NlcnQgcmVzdWx0ID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDNfMTEiLCAiY3Az
XzExZCIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJjcDNfMTFk
IiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzXzExIiwgImNwM18xMSIsICJw
bGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJjcDNfMTEiLCAicGxhdDIi
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDNfMTEiLCAiYWJpMyIsICJwbGF0MSIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJhYmkzIiwgInBsYXQyIiksCisgICAgICAgICAg
ICB0YWdzLlRhZygiY3AzXzExIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJjcDNfMTEiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNw
M18xMCIsICJhYmkzIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzXzEwIiwg
ImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM5IiwgImFiaTMiLCAi
cGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM5IiwgImFiaTMiLCAicGxhdDIiKSwK
KyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM4IiwgImFiaTMiLCAicGxhdDEiKSwKKyAgICAgICAg
ICAgIHRhZ3MuVGFnKCJjcDM4IiwgImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJjcDM3IiwgImFiaTMiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM3
IiwgImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM2IiwgImFiaTMi
LCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM2IiwgImFiaTMiLCAicGxhdDIi
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM1IiwgImFiaTMiLCAicGxhdDEiKSwKKyAgICAg
ICAgICAgIHRhZ3MuVGFnKCJjcDM1IiwgImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJjcDM0IiwgImFiaTMiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJj
cDM0IiwgImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwgImFi
aTMiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwgImFiaTMiLCAicGxh
dDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMyIiwgImFiaTMiLCAicGxhdDEiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJjcDMyIiwgImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgXQor
ICAgICAgICByZXN1bHRfaXRlcmF0b3IgPSB0YWdzLmNweXRob25fdGFncygKKyAgICAgICAgICAg
ICgzLCA4KSwgWyJjcDM4ZCIsICJjcDM4Il0sIFsicGxhdDEiLCAicGxhdDIiXQorICAgICAgICAp
CisgICAgICAgIHJlc3VsdCA9IGxpc3QocmVzdWx0X2l0ZXJhdG9yKQorICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM4IiwgImNwMzhkIiwgInBsYXQx
IiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzOCIsICJjcDM4ZCIsICJwbGF0MiIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoImNwMzgiLCAiY3AzOCIsICJwbGF0MSIpLAorICAgICAgICAgICAg
dGFncy5UYWcoImNwMzgiLCAiY3AzOCIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWco
ImNwMzgiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzgiLCAi
YWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzgiLCAibm9uZSIsICJw
bGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzgiLCAibm9uZSIsICJwbGF0MiIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoImNwMzciLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoImNwMzciLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5U
YWcoImNwMzYiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzYi
LCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzUiLCAiYWJpMyIs
ICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzUiLCAiYWJpMyIsICJwbGF0MiIp
LAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzQiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAg
ICAgICAgdGFncy5UYWcoImNwMzQiLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoImNwMzMiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNw
MzMiLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzIiLCAiYWJp
MyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzIiLCAiYWJpMyIsICJwbGF0
MiIpLAorICAgICAgICBdCisKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNweXRob25fdGFn
cygoMywgMyksIFsiY3AzM20iXSwgWyJwbGF0MSIsICJwbGF0MiJdKSkKKyAgICAgICAgYXNzZXJ0
IHJlc3VsdCA9PSBbCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMyIsICJjcDMzbSIsICJwbGF0
MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAiY3AzM20iLCAicGxhdDIiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwgImFiaTMiLCAicGxhdDEiKSwKKyAgICAgICAgICAg
IHRhZ3MuVGFnKCJjcDMzIiwgImFiaTMiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFn
KCJjcDMzIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwg
Im5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMyIiwgImFiaTMiLCAi
cGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMyIiwgImFiaTMiLCAicGxhdDIiKSwK
KyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfcHl0aG9uX3ZlcnNpb25fZGVmYXVsdHMoc2VsZik6
CisgICAgICAgIHRhZyA9IG5leHQodGFncy5jcHl0aG9uX3RhZ3MoYWJpcz1bImFiaTMiXSwgcGxh
dGZvcm1zPVsiYW55Il0pKQorICAgICAgICBpbnRlcnByZXRlciA9ICJjcCIgKyB0YWdzLl92ZXJz
aW9uX25vZG90KHN5cy52ZXJzaW9uX2luZm9bOjJdKQorICAgICAgICBhc3NlcnQgaW50ZXJwcmV0
ZXIgPT0gdGFnLmludGVycHJldGVyCisKKyAgICBkZWYgdGVzdF9hYmlfZGVmYXVsdHMoc2VsZiwg
bW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfY3B5dGhv
bl9hYmlzIiwgbGFtYmRhIF8xLCBfMjogWyJjcDM4Il0pCisgICAgICAgIHJlc3VsdCA9IGxpc3Qo
dGFncy5jcHl0aG9uX3RhZ3MoKDMsIDgpLCBwbGF0Zm9ybXM9WyJhbnkiXSkpCisgICAgICAgIGFz
c2VydCB0YWdzLlRhZygiY3AzOCIsICJjcDM4IiwgImFueSIpIGluIHJlc3VsdAorICAgICAgICBh
c3NlcnQgdGFncy5UYWcoImNwMzgiLCAiYWJpMyIsICJhbnkiKSBpbiByZXN1bHQKKyAgICAgICAg
YXNzZXJ0IHRhZ3MuVGFnKCJjcDM4IiwgIm5vbmUiLCAiYW55IikgaW4gcmVzdWx0CisKKyAgICBk
ZWYgdGVzdF9hYmlfZGVmYXVsdHNfbmVlZHNfdW5kZXJzY29yZShzZWxmLCBtb25rZXlwYXRjaCk6
CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9jcHl0aG9uX2FiaXMiLCBsYW1i
ZGEgXzEsIF8yOiBbImNwM18xMSJdKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY3B5dGhv
bl90YWdzKCgzLCAxMSksIHBsYXRmb3Jtcz1bImFueSJdKSkKKyAgICAgICAgYXNzZXJ0IHRhZ3Mu
VGFnKCJjcDNfMTEiLCAiY3AzXzExIiwgImFueSIpIGluIHJlc3VsdAorICAgICAgICBhc3NlcnQg
dGFncy5UYWcoImNwM18xMSIsICJhYmkzIiwgImFueSIpIGluIHJlc3VsdAorICAgICAgICBhc3Nl
cnQgdGFncy5UYWcoImNwM18xMSIsICJub25lIiwgImFueSIpIGluIHJlc3VsdAorCisgICAgZGVm
IHRlc3RfcGxhdGZvcm1zX2RlZmF1bHRzKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX3BsYXRmb3JtX3RhZ3MiLCBsYW1iZGE6IFsicGxhdDEi
XSkKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNweXRob25fdGFncygoMywgOCksIGFiaXM9
WyJ3aGF0ZXZlciJdKSkKKyAgICAgICAgYXNzZXJ0IHRhZ3MuVGFnKCJjcDM4IiwgIndoYXRldmVy
IiwgInBsYXQxIikgaW4gcmVzdWx0CisKKyAgICBkZWYgdGVzdF9wbGF0Zm9ybXNfZGVmYXVsdHNf
bmVlZHNfdW5kZXJzY29yZShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNo
LnNldGF0dHIodGFncywgIl9wbGF0Zm9ybV90YWdzIiwgbGFtYmRhOiBbInBsYXQxIl0pCisgICAg
ICAgIHJlc3VsdCA9IGxpc3QodGFncy5jcHl0aG9uX3RhZ3MoKDMsIDExKSwgYWJpcz1bIndoYXRl
dmVyIl0pKQorICAgICAgICBhc3NlcnQgdGFncy5UYWcoImNwM18xMSIsICJ3aGF0ZXZlciIsICJw
bGF0MSIpIGluIHJlc3VsdAorCisgICAgZGVmIHRlc3RfbWFqb3Jfb25seV9weXRob25fdmVyc2lv
bihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNweXRob25fdGFncygoMywpLCBb
ImFiaSJdLCBbInBsYXQiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAgICAgICAg
ICAgdGFncy5UYWcoImNwMyIsICJhYmkiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWco
ImNwMyIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfbWFqb3Jf
b25seV9weXRob25fdmVyc2lvbl93aXRoX2RlZmF1bHRfYWJpcyhzZWxmKToKKyAgICAgICAgcmVz
dWx0ID0gbGlzdCh0YWdzLmNweXRob25fdGFncygoMywpLCBwbGF0Zm9ybXM9WyJwbGF0Il0pKQor
ICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFt0YWdzLlRhZygiY3AzIiwgIm5vbmUiLCAicGxhdCIp
XQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhYmlzIiwgW1tdLCBbImFiaTMiXSwg
WyJub25lIl1dKQorICAgIGRlZiB0ZXN0X3NraXBfcmVkdW5kYW50X2FiaXMoc2VsZiwgYWJpcyk6
CisgICAgICAgIHJlc3VsdHMgPSBsaXN0KHRhZ3MuY3B5dGhvbl90YWdzKCgzLCAwKSwgYWJpcz1h
YmlzLCBwbGF0Zm9ybXM9WyJhbnkiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHRzID09IFt0YWdz
LlRhZygiY3AzMCIsICJub25lIiwgImFueSIpXQorCisgICAgZGVmIHRlc3RfYWJpM19weXRob24z
MyhzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IGxpc3QodGFncy5jcHl0aG9uX3RhZ3MoKDMsIDMp
LCBhYmlzPVsiY3AzMyJdLCBwbGF0Zm9ybXM9WyJwbGF0Il0pKQorICAgICAgICBhc3NlcnQgcmVz
dWx0cyA9PSBbCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMyIsICJjcDMzIiwgInBsYXQiKSwK
KyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwgImFiaTMiLCAicGxhdCIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoImNwMzMiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRh
ZygiY3AzMiIsICJhYmkzIiwgInBsYXQiKSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3Rfbm9f
ZXhjZXNzX2FiaTNfcHl0aG9uMzIoc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBsaXN0KHRhZ3Mu
Y3B5dGhvbl90YWdzKCgzLCAyKSwgYWJpcz1bImNwMzIiXSwgcGxhdGZvcm1zPVsicGxhdCJdKSkK
KyAgICAgICAgYXNzZXJ0IHJlc3VsdHMgPT0gWworICAgICAgICAgICAgdGFncy5UYWcoImNwMzIi
LCAiY3AzMiIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMiIsICJhYmkzIiwg
InBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMyIiwgIm5vbmUiLCAicGxhdCIpLAor
ICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9ub19hYmkzX3B5dGhvbjMxKHNlbGYpOgorICAgICAg
ICByZXN1bHRzID0gbGlzdCh0YWdzLmNweXRob25fdGFncygoMywgMSksIGFiaXM9WyJjcDMxIl0s
IHBsYXRmb3Jtcz1bInBsYXQiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHRzID09IFsKKyAgICAg
ICAgICAgIHRhZ3MuVGFnKCJjcDMxIiwgImNwMzEiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoImNwMzEiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0
X25vX2FiaTNfcHl0aG9uMjcoc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBsaXN0KHRhZ3MuY3B5
dGhvbl90YWdzKCgyLCA3KSwgYWJpcz1bImNwMjciXSwgcGxhdGZvcm1zPVsicGxhdCJdKSkKKyAg
ICAgICAgYXNzZXJ0IHJlc3VsdHMgPT0gWworICAgICAgICAgICAgdGFncy5UYWcoImNwMjciLCAi
Y3AyNyIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AyNyIsICJub25lIiwgInBs
YXQiKSwKKyAgICAgICAgXQorCisKK2NsYXNzIFRlc3RHZW5lcmljVGFnczoKKyAgICBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJTT0FC
SSIpLCByZWFzb249IlNPQUJJIG5vdCBkZWZpbmVkIgorICAgICkKKyAgICBkZWYgdGVzdF9fZ2Vu
ZXJpY19hYmlfc29hYmlfcHJvdmlkZWQoc2VsZik6CisgICAgICAgIGFiaSA9IHN5c2NvbmZpZy5n
ZXRfY29uZmlnX3ZhcigiU09BQkkiKS5yZXBsYWNlKCIuIiwgIl8iKS5yZXBsYWNlKCItIiwgIl8i
KQorICAgICAgICBhc3NlcnQgW2FiaV0gPT0gbGlzdCh0YWdzLl9nZW5lcmljX2FiaSgpKQorCisg
ICAgZGVmIHRlc3RfX2dlbmVyaWNfYWJpKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIHN5c2NvbmZpZywgImdldF9jb25maWdfdmFy
IiwgbGFtYmRhIGtleTogImNweXRob24tMzdtLWRhcndpbiIKKyAgICAgICAgKQorICAgICAgICBh
c3NlcnQgbGlzdCh0YWdzLl9nZW5lcmljX2FiaSgpKSA9PSBbImNweXRob25fMzdtX2RhcndpbiJd
CisKKyAgICBkZWYgdGVzdF9fZ2VuZXJpY19hYmlfbm9fc29hYmkoc2VsZiwgbW9ua2V5cGF0Y2gp
OgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5c2NvbmZpZywgImdldF9jb25maWdfdmFy
IiwgbGFtYmRhIGtleTogTm9uZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBsaXN0KHRhZ3MuX2dlbmVy
aWNfYWJpKCkpCisKKyAgICBkZWYgdGVzdF9nZW5lcmljX3BsYXRmb3JtcyhzZWxmKToKKyAgICAg
ICAgcGxhdGZvcm0gPSBkaXN0dXRpbHMudXRpbC5nZXRfcGxhdGZvcm0oKS5yZXBsYWNlKCItIiwg
Il8iKQorICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtLnJlcGxhY2UoIi4iLCAiXyIpCisgICAg
ICAgIGFzc2VydCBsaXN0KHRhZ3MuX2dlbmVyaWNfcGxhdGZvcm1zKCkpID09IFtwbGF0Zm9ybV0K
KworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3JldHVybmVkKHNlbGYpOgorICAgICAgICByZXN1bHRf
aXRlcmF0b3IgPSB0YWdzLmdlbmVyaWNfdGFncygic2lsbHl3YWxrMzMiLCBbImFiaSJdLCBbInBs
YXQxIiwgInBsYXQyIl0pCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdF9pdGVyYXRv
ciwgY29sbGVjdGlvbnNfYWJjLkl0ZXJhdG9yKQorCisgICAgZGVmIHRlc3RfYWxsX2FyZ3Moc2Vs
Zik6CisgICAgICAgIHJlc3VsdF9pdGVyYXRvciA9IHRhZ3MuZ2VuZXJpY190YWdzKCJzaWxseXdh
bGszMyIsIFsiYWJpIl0sIFsicGxhdDEiLCAicGxhdDIiXSkKKyAgICAgICAgcmVzdWx0ID0gbGlz
dChyZXN1bHRfaXRlcmF0b3IpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAgICAgICAg
ICAgdGFncy5UYWcoInNpbGx5d2FsazMzIiwgImFiaSIsICJwbGF0MSIpLAorICAgICAgICAgICAg
dGFncy5UYWcoInNpbGx5d2FsazMzIiwgImFiaSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoInNpbGx5d2FsazMzIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJzaWxseXdhbGszMyIsICJub25lIiwgInBsYXQyIiksCisgICAgICAgIF0KKworICAgIEBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYWJpIiwgW1tdLCBbIm5vbmUiXV0pCisgICAgZGVmIHRl
c3RfYWJpX3Vuc3BlY2lmaWVkKHNlbGYsIGFiaSk6CisgICAgICAgIG5vX2FiaSA9IGxpc3QodGFn
cy5nZW5lcmljX3RhZ3MoInNpbGx5d2FsazM0IiwgYWJpLCBbInBsYXQxIiwgInBsYXQyIl0pKQor
ICAgICAgICBhc3NlcnQgbm9fYWJpID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJzaWxseXdh
bGszNCIsICJub25lIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygic2lsbHl3YWxr
MzQiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9pbnRlcnBy
ZXRlcl9kZWZhdWx0KHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cih0YWdzLCAiaW50ZXJwcmV0ZXJfbmFtZSIsIGxhbWJkYTogInNpbGx5d2FsayIpCisgICAg
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgImludGVycHJldGVyX3ZlcnNpb24iLCBsYW1i
ZGEgd2FybjogIk5OIikKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmdlbmVyaWNfdGFncyhh
YmlzPVsibm9uZSJdLCBwbGF0Zm9ybXM9WyJhbnkiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQg
PT0gW3RhZ3MuVGFnKCJzaWxseXdhbGtOTiIsICJub25lIiwgImFueSIpXQorCisgICAgZGVmIHRl
c3RfYWJpc19kZWZhdWx0KHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cih0YWdzLCAiX2dlbmVyaWNfYWJpIiwgbGFtYmRhOiBpdGVyKFsiYWJpIl0pKQorICAg
ICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuZ2VuZXJpY190YWdzKGludGVycHJldGVyPSJzaWxseXdh
bGsiLCBwbGF0Zm9ybXM9WyJhbnkiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAg
ICAgICAgICAgdGFncy5UYWcoInNpbGx5d2FsayIsICJhYmkiLCAiYW55IiksCisgICAgICAgICAg
ICB0YWdzLlRhZygic2lsbHl3YWxrIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgIF0KKworICAg
IGRlZiB0ZXN0X3BsYXRmb3Jtc19kZWZhdWx0KHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAg
bW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX3BsYXRmb3JtX3RhZ3MiLCBsYW1iZGE6IFsicGxh
dCJdKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuZ2VuZXJpY190YWdzKGludGVycHJldGVy
PSJzaWxseXdhbGsiLCBhYmlzPVsibm9uZSJdKSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBb
dGFncy5UYWcoInNpbGx5d2FsayIsICJub25lIiwgInBsYXQiKV0KKworCitjbGFzcyBUZXN0Q29t
cGF0aWJsZVRhZ3M6CisgICAgZGVmIHRlc3RfYWxsX2FyZ3Moc2VsZik6CisgICAgICAgIHJlc3Vs
dCA9IGxpc3QodGFncy5jb21wYXRpYmxlX3RhZ3MoKDMsIDMpLCAiY3AzMyIsIFsicGxhdDEiLCAi
cGxhdDIiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAgICAgICAgICAgdGFncy5U
YWcoInB5MzMiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzMi
LCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MyIsICJub25lIiwg
InBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAicGxhdDIiKSwK
KyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMyIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAg
ICAgIHRhZ3MuVGFnKCJweTMyIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJweTMxIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMx
IiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUi
LCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAicGxhdDIi
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAg
ICAgICB0YWdzLlRhZygicHkzMyIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5U
YWcoInB5MyIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzIiLCAi
bm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMxIiwgIm5vbmUiLCAiYW55
IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzMCIsICJub25lIiwgImFueSIpLAorICAgICAg
ICBdCisKKyAgICBkZWYgdGVzdF9hbGxfYXJnc19uZWVkc191bmRlcnNjb3JlKHNlbGYpOgorICAg
ICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY29tcGF0aWJsZV90YWdzKCgzLCAxMSksICJjcDNfMTEi
LCBbInBsYXQxIiwgInBsYXQyIl0pKQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFsKKyAgICAg
ICAgICAgIHRhZ3MuVGFnKCJweTNfMTEiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAg
dGFncy5UYWcoInB5M18xMSIsICJub25lIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRh
ZygicHkzIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMiLCAi
bm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5M18xMCIsICJub25lIiwg
InBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzXzEwIiwgIm5vbmUiLCAicGxhdDIi
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM5IiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAg
ICAgICAgIHRhZ3MuVGFnKCJweTM5IiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTM4IiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJw
eTM4IiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM3IiwgIm5v
bmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM3IiwgIm5vbmUiLCAicGxh
dDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM2IiwgIm5vbmUiLCAicGxhdDEiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJweTM2IiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAg
IHRhZ3MuVGFnKCJweTM1IiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFn
KCJweTM1IiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM0Iiwg
Im5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM0IiwgIm5vbmUiLCAi
cGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMzIiwgIm5vbmUiLCAicGxhdDEiKSwK
KyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMzIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAg
ICAgIHRhZ3MuVGFnKCJweTMyIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJweTMyIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMx
IiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMxIiwgIm5vbmUi
LCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAicGxhdDEi
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAg
ICAgICAgIHRhZ3MuVGFnKCJjcDNfMTEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTNfMTEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJw
eTMiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTNfMTAiLCAibm9u
ZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM5IiwgIm5vbmUiLCAiYW55Iiks
CisgICAgICAgICAgICB0YWdzLlRhZygicHkzOCIsICJub25lIiwgImFueSIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoInB5MzciLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFn
KCJweTM2IiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzNSIsICJu
b25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzQiLCAibm9uZSIsICJhbnki
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMzIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAg
ICAgICB0YWdzLlRhZygicHkzMiIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5U
YWcoInB5MzEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwg
Im5vbmUiLCAiYW55IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X21ham9yX29ubHlfcHl0
aG9uX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGxpc3QodGFncy5jb21wYXRpYmxl
X3RhZ3MoKDMsKSwgImNwMzMiLCBbInBsYXQiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0g
WworICAgICAgICAgICAgdGFncy5UYWcoInB5MyIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAg
ICAgIHRhZ3MuVGFnKCJjcDMzIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRh
ZygicHkzIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2RlZmF1
bHRfcHl0aG9uX3ZlcnNpb24oc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKHN5cywgInZlcnNpb25faW5mbyIsICgzLCAxKSkKKyAgICAgICAgcmVzdWx0ID0g
bGlzdCh0YWdzLmNvbXBhdGlibGVfdGFncyhpbnRlcnByZXRlcj0iY3AzMSIsIHBsYXRmb3Jtcz1b
InBsYXQiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAgICAgICAgICAgdGFncy5U
YWcoInB5MzEiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzIiwg
Im5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzAiLCAibm9uZSIsICJw
bGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMSIsICJub25lIiwgImFueSIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTMiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMw
IiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfcHl0
aG9uX3ZlcnNpb25fbmVlZHNfdW5kZXJzY29yZShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAidmVyc2lvbl9pbmZvIiwgKDMsIDExKSkKKyAgICAg
ICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNvbXBhdGlibGVfdGFncyhpbnRlcnByZXRlcj0iY3AzXzEx
IiwgcGxhdGZvcm1zPVsicGxhdCJdKSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbCisgICAg
ICAgICAgICB0YWdzLlRhZygicHkzXzExIiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAg
dGFncy5UYWcoInB5MyIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJw
eTNfMTAiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzOSIsICJu
b25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM4IiwgIm5vbmUiLCAicGxh
dCIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzciLCAibm9uZSIsICJwbGF0IiksCisgICAg
ICAgICAgICB0YWdzLlRhZygicHkzNiIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTM1IiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5
MzQiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzMyIsICJub25l
IiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMyIiwgIm5vbmUiLCAicGxhdCIp
LAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAg
ICAgICB0YWdzLlRhZygicHkzMCIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJjcDNfMTEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTNf
MTEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMiLCAibm9uZSIs
ICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTNfMTAiLCAibm9uZSIsICJhbnkiKSwK
KyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM5IiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAg
ICB0YWdzLlRhZygicHkzOCIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWco
InB5MzciLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM2IiwgIm5v
bmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzNSIsICJub25lIiwgImFueSIp
LAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzQiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAg
ICAgIHRhZ3MuVGFnKCJweTMzIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRh
ZygicHkzMiIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAi
bm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAiYW55
IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfaW50ZXJwcmV0ZXIoc2VsZik6
CisgICAgICAgIHJlc3VsdCA9IGxpc3QodGFncy5jb21wYXRpYmxlX3RhZ3MoKDMsIDEpLCBwbGF0
Zm9ybXM9WyJwbGF0Il0pKQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFsKKyAgICAgICAgICAg
IHRhZ3MuVGFnKCJweTMxIiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWco
InB5MyIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5v
bmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJhbnki
KSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAg
ICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgIF0KKworICAgIGRl
ZiB0ZXN0X2RlZmF1bHRfcGxhdGZvcm1zKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX3BsYXRmb3JtX3RhZ3MiLCBsYW1iZGE6IGl0ZXIoWyJw
bGF0IiwgInBsYXQyIl0pKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY29tcGF0aWJsZV90
YWdzKCgzLCAxKSwgImNwMzEiKSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbCisgICAgICAg
ICAgICB0YWdzLlRhZygicHkzMSIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJweTMxIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMi
LCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAi
cGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAicGxhdCIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoInB5MzAiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoImNwMzEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFn
KCJweTMxIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5v
bmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzMCIsICJub25lIiwgImFueSIp
LAorICAgICAgICBdCisKKworY2xhc3MgVGVzdFN5c1RhZ3M6CisgICAgZGVmIHRlYXJkb3duX21l
dGhvZChzZWxmKToKKyAgICAgICAgIyBDbGVhciB0aGUgdmVyc2lvbiBjYWNoZQorICAgICAgICB0
YWdzLl9nbGliY192ZXJzaW9uID0gW10KKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAgICAgIm5hbWUsZXhwZWN0ZWQiLAorICAgICAgICBbKCJDUHl0aG9uIiwgImNwIiksICgi
UHlQeSIsICJwcCIpLCAoIkp5dGhvbiIsICJqeSIpLCAoIklyb25QeXRob24iLCAiaXAiKV0sCisg
ICAgKQorICAgIGRlZiB0ZXN0X2ludGVycHJldGVyX25hbWUoc2VsZiwgbmFtZSwgZXhwZWN0ZWQs
IG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSk6CisgICAgICAgIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZShu
YW1lKQorICAgICAgICBhc3NlcnQgdGFncy5pbnRlcnByZXRlcl9uYW1lKCkgPT0gZXhwZWN0ZWQK
KworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh0YWdzLnN5c190YWdzKCksIGNvbGxlY3Rpb25zX2FiYy5JdGVyYXRvcikKKworICAgIGRlZiB0
ZXN0X21hY19jcHl0aG9uKHNlbGYsIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSwgbW9ua2V5cGF0Y2gp
OgorICAgICAgICBpZiBtb2NrX2ludGVycHJldGVyX25hbWUoIkNQeXRob24iKToKKyAgICAgICAg
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9jcHl0aG9uX2FiaXMiLCBsYW1iZGEgKmE6
IFsiY3AzM20iXSkKKyAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgIT0gIkRhcndpbiI6Cisg
ICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBsYXRmb3JtLCAic3lzdGVtIiwgbGFtYmRh
OiAiRGFyd2luIikKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIm1hY19w
bGF0Zm9ybXMiLCBsYW1iZGE6IFsibWFjb3N4XzEwXzVfeDg2XzY0Il0pCisgICAgICAgIGFiaXMg
PSB0YWdzLl9jcHl0aG9uX2FiaXMoc3lzLnZlcnNpb25faW5mb1s6Ml0pCisgICAgICAgIHBsYXRm
b3JtcyA9IGxpc3QodGFncy5tYWNfcGxhdGZvcm1zKCkpCisgICAgICAgIHJlc3VsdCA9IGxpc3Qo
dGFncy5zeXNfdGFncygpKQorICAgICAgICBhc3NlcnQgbGVuKGFiaXMpID09IDEKKyAgICAgICAg
YXNzZXJ0IHJlc3VsdFswXSA9PSB0YWdzLlRhZygKKyAgICAgICAgICAgICJjcCIgKyB0YWdzLl92
ZXJzaW9uX25vZG90KHN5cy52ZXJzaW9uX2luZm9bOjJdKSwgYWJpc1swXSwgcGxhdGZvcm1zWzBd
CisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdFstMV0gPT0gdGFncy5UYWcoCisgICAg
ICAgICAgICAicHkiICsgdGFncy5fdmVyc2lvbl9ub2RvdCgoc3lzLnZlcnNpb25faW5mb1swXSwg
MCkpLCAibm9uZSIsICJhbnkiCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3dpbmRvd3NfY3B5
dGhvbihzZWxmLCBtb2NrX2ludGVycHJldGVyX25hbWUsIG1vbmtleXBhdGNoKToKKyAgICAgICAg
aWYgbW9ja19pbnRlcnByZXRlcl9uYW1lKCJDUHl0aG9uIik6CisgICAgICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKHRhZ3MsICJfY3B5dGhvbl9hYmlzIiwgbGFtYmRhICphOiBbImNwMzNtIl0p
CisgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpICE9ICJXaW5kb3dzIjoKKyAgICAgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0sICJzeXN0ZW0iLCBsYW1iZGE6ICJXaW5kb3dz
IikKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9nZW5lcmljX3BsYXRm
b3JtcyIsIGxhbWJkYTogWyJ3aW5fYW1kNjQiXSkKKyAgICAgICAgYWJpcyA9IGxpc3QodGFncy5f
Y3B5dGhvbl9hYmlzKHN5cy52ZXJzaW9uX2luZm9bOjJdKSkKKyAgICAgICAgcGxhdGZvcm1zID0g
bGlzdCh0YWdzLl9nZW5lcmljX3BsYXRmb3JtcygpKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRh
Z3Muc3lzX3RhZ3MoKSkKKyAgICAgICAgaW50ZXJwcmV0ZXIgPSAiY3AiICsgdGFncy5fdmVyc2lv
bl9ub2RvdChzeXMudmVyc2lvbl9pbmZvWzoyXSkKKyAgICAgICAgYXNzZXJ0IGxlbihhYmlzKSA9
PSAxCisgICAgICAgIGV4cGVjdGVkID0gdGFncy5UYWcoaW50ZXJwcmV0ZXIsIGFiaXNbMF0sIHBs
YXRmb3Jtc1swXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdFswXSA9PSBleHBlY3RlZAorICAgICAg
ICBleHBlY3RlZCA9IHRhZ3MuVGFnKAorICAgICAgICAgICAgInB5IiArIHRhZ3MuX3ZlcnNpb25f
bm9kb3QoKHN5cy52ZXJzaW9uX2luZm9bMF0sIDApKSwgIm5vbmUiLCAiYW55IgorICAgICAgICAp
CisgICAgICAgIGFzc2VydCByZXN1bHRbLTFdID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF9s
aW51eF9jcHl0aG9uKHNlbGYsIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSwgbW9ua2V5cGF0Y2gpOgor
ICAgICAgICBpZiBtb2NrX2ludGVycHJldGVyX25hbWUoIkNQeXRob24iKToKKyAgICAgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9jcHl0aG9uX2FiaXMiLCBsYW1iZGEgKmE6IFsi
Y3AzM20iXSkKKyAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgIT0gIkxpbnV4IjoKKyAgICAg
ICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0sICJzeXN0ZW0iLCBsYW1iZGE6ICJM
aW51eCIpCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfbGludXhfcGxh
dGZvcm1zIiwgbGFtYmRhOiBbImxpbnV4X3g4Nl82NCJdKQorICAgICAgICBhYmlzID0gbGlzdCh0
YWdzLl9jcHl0aG9uX2FiaXMoc3lzLnZlcnNpb25faW5mb1s6Ml0pKQorICAgICAgICBwbGF0Zm9y
bXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRmb3JtcygpKQorICAgICAgICByZXN1bHQgPSBsaXN0
KHRhZ3Muc3lzX3RhZ3MoKSkKKyAgICAgICAgZXhwZWN0ZWRfaW50ZXJwcmV0ZXIgPSAiY3AiICsg
dGFncy5fdmVyc2lvbl9ub2RvdChzeXMudmVyc2lvbl9pbmZvWzoyXSkKKyAgICAgICAgYXNzZXJ0
IGxlbihhYmlzKSA9PSAxCisgICAgICAgIGFzc2VydCByZXN1bHRbMF0gPT0gdGFncy5UYWcoZXhw
ZWN0ZWRfaW50ZXJwcmV0ZXIsIGFiaXNbMF0sIHBsYXRmb3Jtc1swXSkKKyAgICAgICAgZXhwZWN0
ZWQgPSB0YWdzLlRhZygKKyAgICAgICAgICAgICJweSIgKyB0YWdzLl92ZXJzaW9uX25vZG90KChz
eXMudmVyc2lvbl9pbmZvWzBdLCAwKSksICJub25lIiwgImFueSIKKyAgICAgICAgKQorICAgICAg
ICBhc3NlcnQgcmVzdWx0Wy0xXSA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3RfZ2VuZXJpYyhz
ZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0s
ICJzeXN0ZW0iLCBsYW1iZGE6ICJHZW5lcmljIikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cih0YWdzLCAiaW50ZXJwcmV0ZXJfbmFtZSIsIGxhbWJkYTogImdlbmVyaWMiKQorCisgICAgICAg
IHJlc3VsdCA9IGxpc3QodGFncy5zeXNfdGFncygpKQorICAgICAgICBleHBlY3RlZCA9IHRhZ3Mu
VGFnKAorICAgICAgICAgICAgInB5IiArIHRhZ3MuX3ZlcnNpb25fbm9kb3QoKHN5cy52ZXJzaW9u
X2luZm9bMF0sIDApKSwgIm5vbmUiLCAiYW55IgorICAgICAgICApCisgICAgICAgIGFzc2VydCBy
ZXN1bHRbLTFdID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF9saW51eF9wbGF0Zm9ybXNfbWFu
eWxpbnV4MjAxNF9hcm12Nmwoc2VsZiwgbW9ua2V5cGF0Y2gsIG1hbnlsaW51eF9tb2R1bGUpOgor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3Jt
IiwgbGFtYmRhOiAibGludXhfYXJtdjZsIikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihv
cywgImNvbmZzdHIiLCBsYW1iZGEgeDogImdsaWJjIDIuMjAiLCByYWlzaW5nPUZhbHNlKQorICAg
ICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRmb3Jtcyhpc18zMmJpdD1UcnVl
KSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbImxpbnV4X2FybXY2bCJdCisgICAgICAgIGFzc2VydCBw
bGF0Zm9ybXMgPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0ZXN0X3NraXBfbWFueWxpbnV4XzIwMTQo
c2VsZiwgbW9ua2V5cGF0Y2gsIG1hbnlsaW51eF9tb2R1bGUpOgorICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAibGludXhf
cHBjNjQiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2V0X2dsaWJjX3Zl
cnNpb24iLCBsYW1iZGE6ICgyLCAyMCkpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisg
ICAgICAgICAgICBtYW55bGludXhfbW9kdWxlLCAibWFueWxpbnV4MjAxNF9jb21wYXRpYmxlIiwg
RmFsc2UsIHJhaXNpbmc9RmFsc2UKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAg
ICAgICAgICAgICJtYW55bGludXhfMl8yMF9wcGM2NCIsCisgICAgICAgICAgICAibWFueWxpbnV4
XzJfMTlfcHBjNjQiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzE4X3BwYzY0IiwKKyAgICAg
ICAgICAgICMgIm1hbnlsaW51eDIwMTRfcHBjNjQiLCAgIyB0aGlzIG9uZSBpcyBza2lwcGVkCisg
ICAgICAgICAgICAjICJtYW55bGludXhfMl8xN19wcGM2NCIsICMgdGhpcyBvbmUgaXMgYWxzbyBz
a2lwcGVkCisgICAgICAgICAgICAibGludXhfcHBjNjQiLAorICAgICAgICBdCisgICAgICAgIHBs
YXRmb3JtcyA9IGxpc3QodGFncy5fbGludXhfcGxhdGZvcm1zKCkpCisgICAgICAgIGFzc2VydCBw
bGF0Zm9ybXMgPT0gZXhwZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAg
ICAgICAgIm1hY2hpbmUsIGFiaSwgYWx0X21hY2hpbmUiLAorICAgICAgICBbKCJ4ODZfNjQiLCAi
eDMyIiwgImk2ODYiKSwgKCJhcm12N2wiLCAiYXJtZWwiLCAiYXJtdjdsIildLAorICAgICkKKyAg
ICBkZWYgdGVzdF9saW51eF9wbGF0Zm9ybXNfbm90X21hbnlsaW51eF9hYmkoCisgICAgICAgIHNl
bGYsIG1vbmtleXBhdGNoLCBtYW55bGludXhfbW9kdWxlLCBtYWNoaW5lLCBhYmksIGFsdF9tYWNo
aW5lCisgICAgKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIGRp
c3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAibGludXhfe30iLmZvcm1hdCht
YWNoaW5lKQorICAgICAgICApCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisgICAgICAg
ICAgICBzeXMsCisgICAgICAgICAgICAiZXhlY3V0YWJsZSIsCisgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oCisgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImhlbGxv
LXdvcmxkLXt9LXt9Ii5mb3JtYXQobWFjaGluZSwgYWJpKQorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRmb3Jtcyhpc18z
MmJpdD1UcnVlKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbImxpbnV4X3t9Ii5mb3JtYXQoYWx0X21h
Y2hpbmUpXQorICAgICAgICBhc3NlcnQgcGxhdGZvcm1zID09IGV4cGVjdGVkCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJtYWNoaW5lLCBtYWpvciwgbWlub3IsIHRm
IiwgWygieDg2XzY0IiwgMiwgMjAsIEZhbHNlKSwgKCJzMzkweCIsIDIsIDIyLCBUcnVlKV0KKyAg
ICApCisgICAgZGVmIHRlc3RfbGludXhfdXNlX21hbnlsaW51eF9jb21wYXRpYmxlKAorICAgICAg
ICBzZWxmLCBtb25rZXlwYXRjaCwgbWFueWxpbnV4X21vZHVsZSwgbWFjaGluZSwgbWFqb3IsIG1p
bm9yLCB0ZgorICAgICk6CisgICAgICAgIGRlZiBtYW55bGludXhfY29tcGF0aWJsZSh0YWdfbWFq
b3IsIHRhZ19taW5vciwgdGFnX2FyY2gpOgorICAgICAgICAgICAgaWYgdGFnX21ham9yID09IDIg
YW5kIHRhZ19taW5vciA9PSAyMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFnX2FyY2ggPT0g
InMzOTB4IgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cih0YWdzLCAiX2dldF9nbGliY192ZXJzaW9uIiwgbGFtYmRhOiAobWFqb3IsIG1pbm9y
KSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIGRpc3R1dGlscy51
dGlsLCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAibGludXhfe30iLmZvcm1hdChtYWNoaW5lKQor
ICAgICAgICApCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisgICAgICAgICAgICBtYW55
bGludXhfbW9kdWxlLAorICAgICAgICAgICAgIm1hbnlsaW51eF9jb21wYXRpYmxlIiwKKyAgICAg
ICAgICAgIG1hbnlsaW51eF9jb21wYXRpYmxlLAorICAgICAgICAgICAgcmFpc2luZz1GYWxzZSwK
KyAgICAgICAgKQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRmb3Jt
cyhpc18zMmJpdD1GYWxzZSkpCisgICAgICAgIGlmIHRmOgorICAgICAgICAgICAgZXhwZWN0ZWQg
PSBbIm1hbnlsaW51eF8yXzIyX3t9Ii5mb3JtYXQobWFjaGluZSldCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBleHBlY3RlZCA9IFtdCisgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgibGludXhf
e30iLmZvcm1hdChtYWNoaW5lKSkKKyAgICAgICAgYXNzZXJ0IHBsYXRmb3JtcyA9PSBleHBlY3Rl
ZAorCisgICAgZGVmIHRlc3RfbGludXhfdXNlX21hbnlsaW51eF9jb21wYXRpYmxlX25vbmUoc2Vs
ZiwgbW9ua2V5cGF0Y2gsIG1hbnlsaW51eF9tb2R1bGUpOgorICAgICAgICBkZWYgbWFueWxpbnV4
X2NvbXBhdGlibGUodGFnX21ham9yLCB0YWdfbWlub3IsIHRhZ19hcmNoKToKKyAgICAgICAgICAg
IGlmIHRhZ19tYWpvciA9PSAyIGFuZCB0YWdfbWlub3IgPCAyNToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cih0YWdzLCAiX2dldF9nbGliY192ZXJzaW9uIiwgbGFtYmRhOiAoMiwgMzApKQor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3Jt
IiwgbGFtYmRhOiAibGludXhfeDg2XzY0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigK
KyAgICAgICAgICAgIG1hbnlsaW51eF9tb2R1bGUsCisgICAgICAgICAgICAibWFueWxpbnV4X2Nv
bXBhdGlibGUiLAorICAgICAgICAgICAgbWFueWxpbnV4X2NvbXBhdGlibGUsCisgICAgICAgICAg
ICByYWlzaW5nPUZhbHNlLAorICAgICAgICApCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFn
cy5fbGludXhfcGxhdGZvcm1zKGlzXzMyYml0PUZhbHNlKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBb
CisgICAgICAgICAgICAibWFueWxpbnV4XzJfMzBfeDg2XzY0IiwKKyAgICAgICAgICAgICJtYW55
bGludXhfMl8yOV94ODZfNjQiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzI4X3g4Nl82NCIs
CisgICAgICAgICAgICAibWFueWxpbnV4XzJfMjdfeDg2XzY0IiwKKyAgICAgICAgICAgICJtYW55
bGludXhfMl8yNl94ODZfNjQiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzI1X3g4Nl82NCIs
CisgICAgICAgICAgICAibGludXhfeDg2XzY0IiwKKyAgICAgICAgXQorICAgICAgICBhc3NlcnQg
cGxhdGZvcm1zID09IGV4cGVjdGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90
ZXN0X3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF91dGlscy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE4ZWE2YmRiOTBhYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3Rlc3RfdXRpbHMucHkKQEAgLTAsMCArMSw0
OSBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2Vl
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBj
b21wbGV0ZSBkZXRhaWxzLgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorCitpbXBvcnQgcHl0ZXN0CisKK2Zyb20gcGFja2Fn
aW5nLnV0aWxzIGltcG9ydCBjYW5vbmljYWxpemVfbmFtZSwgY2Fub25pY2FsaXplX3ZlcnNpb24K
K2Zyb20gcGFja2FnaW5nLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KKworCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoCisgICAgKCJuYW1lIiwgImV4cGVjdGVkIiksCisgICAgWworICAgICAgICAo
ImZvbyIsICJmb28iKSwKKyAgICAgICAgKCJGb28iLCAiZm9vIiksCisgICAgICAgICgiZk9vIiwg
ImZvbyIpLAorICAgICAgICAoImZvby5iYXIiLCAiZm9vLWJhciIpLAorICAgICAgICAoIkZvby5C
YXIiLCAiZm9vLWJhciIpLAorICAgICAgICAoIkZvby4uLi4uQmFyIiwgImZvby1iYXIiKSwKKyAg
ICAgICAgKCJmb29fYmFyIiwgImZvby1iYXIiKSwKKyAgICAgICAgKCJmb29fX19iYXIiLCAiZm9v
LWJhciIpLAorICAgICAgICAoImZvby1iYXIiLCAiZm9vLWJhciIpLAorICAgICAgICAoImZvby0t
LS1iYXIiLCAiZm9vLWJhciIpLAorICAgIF0sCispCitkZWYgdGVzdF9jYW5vbmljYWxpemVfbmFt
ZShuYW1lLCBleHBlY3RlZCk6CisgICAgYXNzZXJ0IGNhbm9uaWNhbGl6ZV9uYW1lKG5hbWUpID09
IGV4cGVjdGVkCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICgidmVyc2lvbiIs
ICJleHBlY3RlZCIpLAorICAgIFsKKyAgICAgICAgKFZlcnNpb24oIjEuNC4wIiksICIxLjQiKSwK
KyAgICAgICAgKCIxLjQuMCIsICIxLjQiKSwKKyAgICAgICAgKCIxLjQwLjAiLCAiMS40MCIpLAor
ICAgICAgICAoIjEuNC4wLjAuMDAuMDAwLjAwMDAiLCAiMS40IiksCisgICAgICAgICgiMS4wIiwg
IjEiKSwKKyAgICAgICAgKCIxLjArYWJjIiwgIjErYWJjIiksCisgICAgICAgICgiMS4wLmRldjAi
LCAiMS5kZXYwIiksCisgICAgICAgICgiMS4wLnBvc3QwIiwgIjEucG9zdDAiKSwKKyAgICAgICAg
KCIxLjBhMCIsICIxYTAiKSwKKyAgICAgICAgKCIxLjByYzAiLCAiMXJjMCIpLAorICAgICAgICAo
IjEwMCEwLjAiLCAiMTAwITAiKSwKKyAgICAgICAgKCIxLjAuMS10ZXN0NyIsICIxLjAuMS10ZXN0
NyIpLCAgIyBMZWdhY3lWZXJzaW9uIGlzIHVuY2hhbmdlZAorICAgIF0sCispCitkZWYgdGVzdF9j
YW5vbmljYWxpemVfdmVyc2lvbih2ZXJzaW9uLCBleHBlY3RlZCk6CisgICAgYXNzZXJ0IGNhbm9u
aWNhbGl6ZV92ZXJzaW9uKHZlcnNpb24pID09IGV4cGVjdGVkCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy90ZXN0cy90ZXN0X3ZlcnNpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0
X3ZlcnNpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjFm
Y2EyMDFkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3Zl
cnNpb24ucHkKQEAgLTAsMCArMSw5MDUgQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFu
ZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
aXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4KK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0
IGl0ZXJ0b29scworaW1wb3J0IG9wZXJhdG9yCitpbXBvcnQgd2FybmluZ3MKKworaW1wb3J0IHBy
ZXRlbmQKK2ltcG9ydCBweXRlc3QKKworZnJvbSBwYWNrYWdpbmcudmVyc2lvbiBpbXBvcnQgVmVy
c2lvbiwgTGVnYWN5VmVyc2lvbiwgSW52YWxpZFZlcnNpb24sIHBhcnNlCisKKworQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICgidmVyc2lvbiIsICJrbGFzcyIpLCBbKCIxLjAiLCBWZXJz
aW9uKSwgKCIxLTEtMSIsIExlZ2FjeVZlcnNpb24pXQorKQorZGVmIHRlc3RfcGFyc2UodmVyc2lv
biwga2xhc3MpOgorICAgIGFzc2VydCBpc2luc3RhbmNlKHBhcnNlKHZlcnNpb24pLCBrbGFzcykK
KworCisjIFRoaXMgbGlzdCBtdXN0IGJlIGluIHRoZSBjb3JyZWN0IHNvcnRpbmcgb3JkZXIKK1ZF
UlNJT05TID0gWworICAgICMgSW1wbGljaXQgZXBvY2ggb2YgMAorICAgICIxLjAuZGV2NDU2IiwK
KyAgICAiMS4wYTEiLAorICAgICIxLjBhMi5kZXY0NTYiLAorICAgICIxLjBhMTIuZGV2NDU2IiwK
KyAgICAiMS4wYTEyIiwKKyAgICAiMS4wYjEuZGV2NDU2IiwKKyAgICAiMS4wYjIiLAorICAgICIx
LjBiMi5wb3N0MzQ1LmRldjQ1NiIsCisgICAgIjEuMGIyLnBvc3QzNDUiLAorICAgICIxLjBiMi0z
NDYiLAorICAgICIxLjBjMS5kZXY0NTYiLAorICAgICIxLjBjMSIsCisgICAgIjEuMHJjMiIsCisg
ICAgIjEuMGMzIiwKKyAgICAiMS4wIiwKKyAgICAiMS4wLnBvc3Q0NTYuZGV2MzQiLAorICAgICIx
LjAucG9zdDQ1NiIsCisgICAgIjEuMS5kZXYxIiwKKyAgICAiMS4yKzEyM2FiYyIsCisgICAgIjEu
MisxMjNhYmM0NTYiLAorICAgICIxLjIrYWJjIiwKKyAgICAiMS4yK2FiYzEyMyIsCisgICAgIjEu
MithYmMxMjNkZWYiLAorICAgICIxLjIrMTIzNC5hYmMiLAorICAgICIxLjIrMTIzNDU2IiwKKyAg
ICAiMS4yLnIzMisxMjM0NTYiLAorICAgICIxLjIucmV2MzMrMTIzNDU2IiwKKyAgICAjIEV4cGxp
Y2l0IGVwb2NoIG9mIDEKKyAgICAiMSExLjAuZGV2NDU2IiwKKyAgICAiMSExLjBhMSIsCisgICAg
IjEhMS4wYTIuZGV2NDU2IiwKKyAgICAiMSExLjBhMTIuZGV2NDU2IiwKKyAgICAiMSExLjBhMTIi
LAorICAgICIxITEuMGIxLmRldjQ1NiIsCisgICAgIjEhMS4wYjIiLAorICAgICIxITEuMGIyLnBv
c3QzNDUuZGV2NDU2IiwKKyAgICAiMSExLjBiMi5wb3N0MzQ1IiwKKyAgICAiMSExLjBiMi0zNDYi
LAorICAgICIxITEuMGMxLmRldjQ1NiIsCisgICAgIjEhMS4wYzEiLAorICAgICIxITEuMHJjMiIs
CisgICAgIjEhMS4wYzMiLAorICAgICIxITEuMCIsCisgICAgIjEhMS4wLnBvc3Q0NTYuZGV2MzQi
LAorICAgICIxITEuMC5wb3N0NDU2IiwKKyAgICAiMSExLjEuZGV2MSIsCisgICAgIjEhMS4yKzEy
M2FiYyIsCisgICAgIjEhMS4yKzEyM2FiYzQ1NiIsCisgICAgIjEhMS4yK2FiYyIsCisgICAgIjEh
MS4yK2FiYzEyMyIsCisgICAgIjEhMS4yK2FiYzEyM2RlZiIsCisgICAgIjEhMS4yKzEyMzQuYWJj
IiwKKyAgICAiMSExLjIrMTIzNDU2IiwKKyAgICAiMSExLjIucjMyKzEyMzQ1NiIsCisgICAgIjEh
MS4yLnJldjMzKzEyMzQ1NiIsCitdCisKKworY2xhc3MgVGVzdFZlcnNpb246CisgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfdmFs
aWRfdmVyc2lvbnMoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIFZlcnNpb24odmVyc2lvbikKKwor
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInZlcnNpb24iLAorICAgICAg
ICBbCisgICAgICAgICAgICAjIE5vbiBzZW5zaWNhbCB2ZXJzaW9ucyBzaG91bGQgYmUgaW52YWxp
ZAorICAgICAgICAgICAgImZyZW5jaCB0b2FzdCIsCisgICAgICAgICAgICAjIFZlcnNpb25zIHdp
dGggaW52YWxpZCBsb2NhbCB2ZXJzaW9ucworICAgICAgICAgICAgIjEuMCthKyIsCisgICAgICAg
ICAgICAiMS4wKysiLAorICAgICAgICAgICAgIjEuMCtfZm9vYmFyIiwKKyAgICAgICAgICAgICIx
LjArZm9vJmFzZCIsCisgICAgICAgICAgICAiMS4wKzErMSIsCisgICAgICAgIF0sCisgICAgKQor
ICAgIGRlZiB0ZXN0X2ludmFsaWRfdmVyc2lvbnMoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhJbnZhbGlkVmVyc2lvbik6CisgICAgICAgICAgICBWZXJzaW9uKHZl
cnNpb24pCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lv
biIsICJub3JtYWxpemVkIiksCisgICAgICAgIFsKKyAgICAgICAgICAgICMgVmFyaW91cyBkZXZl
bG9wbWVudCByZWxlYXNlIGluY2FybmF0aW9ucworICAgICAgICAgICAgKCIxLjBkZXYiLCAiMS4w
LmRldjAiKSwKKyAgICAgICAgICAgICgiMS4wLmRldiIsICIxLjAuZGV2MCIpLAorICAgICAgICAg
ICAgKCIxLjBkZXYxIiwgIjEuMC5kZXYxIiksCisgICAgICAgICAgICAoIjEuMGRldiIsICIxLjAu
ZGV2MCIpLAorICAgICAgICAgICAgKCIxLjAtZGV2IiwgIjEuMC5kZXYwIiksCisgICAgICAgICAg
ICAoIjEuMC1kZXYxIiwgIjEuMC5kZXYxIiksCisgICAgICAgICAgICAoIjEuMERFViIsICIxLjAu
ZGV2MCIpLAorICAgICAgICAgICAgKCIxLjAuREVWIiwgIjEuMC5kZXYwIiksCisgICAgICAgICAg
ICAoIjEuMERFVjEiLCAiMS4wLmRldjEiKSwKKyAgICAgICAgICAgICgiMS4wREVWIiwgIjEuMC5k
ZXYwIiksCisgICAgICAgICAgICAoIjEuMC5ERVYxIiwgIjEuMC5kZXYxIiksCisgICAgICAgICAg
ICAoIjEuMC1ERVYiLCAiMS4wLmRldjAiKSwKKyAgICAgICAgICAgICgiMS4wLURFVjEiLCAiMS4w
LmRldjEiKSwKKyAgICAgICAgICAgICMgVmFyaW91cyBhbHBoYSBpbmNhcm5hdGlvbnMKKyAgICAg
ICAgICAgICgiMS4wYSIsICIxLjBhMCIpLAorICAgICAgICAgICAgKCIxLjAuYSIsICIxLjBhMCIp
LAorICAgICAgICAgICAgKCIxLjAuYTEiLCAiMS4wYTEiKSwKKyAgICAgICAgICAgICgiMS4wLWEi
LCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgiMS4wLWExIiwgIjEuMGExIiksCisgICAgICAgICAg
ICAoIjEuMGFscGhhIiwgIjEuMGEwIiksCisgICAgICAgICAgICAoIjEuMC5hbHBoYSIsICIxLjBh
MCIpLAorICAgICAgICAgICAgKCIxLjAuYWxwaGExIiwgIjEuMGExIiksCisgICAgICAgICAgICAo
IjEuMC1hbHBoYSIsICIxLjBhMCIpLAorICAgICAgICAgICAgKCIxLjAtYWxwaGExIiwgIjEuMGEx
IiksCisgICAgICAgICAgICAoIjEuMEEiLCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgiMS4wLkEi
LCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgiMS4wLkExIiwgIjEuMGExIiksCisgICAgICAgICAg
ICAoIjEuMC1BIiwgIjEuMGEwIiksCisgICAgICAgICAgICAoIjEuMC1BMSIsICIxLjBhMSIpLAor
ICAgICAgICAgICAgKCIxLjBBTFBIQSIsICIxLjBhMCIpLAorICAgICAgICAgICAgKCIxLjAuQUxQ
SEEiLCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgiMS4wLkFMUEhBMSIsICIxLjBhMSIpLAorICAg
ICAgICAgICAgKCIxLjAtQUxQSEEiLCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgiMS4wLUFMUEhB
MSIsICIxLjBhMSIpLAorICAgICAgICAgICAgIyBWYXJpb3VzIGJldGEgaW5jYXJuYXRpb25zCisg
ICAgICAgICAgICAoIjEuMGIiLCAiMS4wYjAiKSwKKyAgICAgICAgICAgICgiMS4wLmIiLCAiMS4w
YjAiKSwKKyAgICAgICAgICAgICgiMS4wLmIxIiwgIjEuMGIxIiksCisgICAgICAgICAgICAoIjEu
MC1iIiwgIjEuMGIwIiksCisgICAgICAgICAgICAoIjEuMC1iMSIsICIxLjBiMSIpLAorICAgICAg
ICAgICAgKCIxLjBiZXRhIiwgIjEuMGIwIiksCisgICAgICAgICAgICAoIjEuMC5iZXRhIiwgIjEu
MGIwIiksCisgICAgICAgICAgICAoIjEuMC5iZXRhMSIsICIxLjBiMSIpLAorICAgICAgICAgICAg
KCIxLjAtYmV0YSIsICIxLjBiMCIpLAorICAgICAgICAgICAgKCIxLjAtYmV0YTEiLCAiMS4wYjEi
KSwKKyAgICAgICAgICAgICgiMS4wQiIsICIxLjBiMCIpLAorICAgICAgICAgICAgKCIxLjAuQiIs
ICIxLjBiMCIpLAorICAgICAgICAgICAgKCIxLjAuQjEiLCAiMS4wYjEiKSwKKyAgICAgICAgICAg
ICgiMS4wLUIiLCAiMS4wYjAiKSwKKyAgICAgICAgICAgICgiMS4wLUIxIiwgIjEuMGIxIiksCisg
ICAgICAgICAgICAoIjEuMEJFVEEiLCAiMS4wYjAiKSwKKyAgICAgICAgICAgICgiMS4wLkJFVEEi
LCAiMS4wYjAiKSwKKyAgICAgICAgICAgICgiMS4wLkJFVEExIiwgIjEuMGIxIiksCisgICAgICAg
ICAgICAoIjEuMC1CRVRBIiwgIjEuMGIwIiksCisgICAgICAgICAgICAoIjEuMC1CRVRBMSIsICIx
LjBiMSIpLAorICAgICAgICAgICAgIyBWYXJpb3VzIHJlbGVhc2UgY2FuZGlkYXRlIGluY2FybmF0
aW9ucworICAgICAgICAgICAgKCIxLjBjIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAgKCIxLjAu
YyIsICIxLjByYzAiKSwKKyAgICAgICAgICAgICgiMS4wLmMxIiwgIjEuMHJjMSIpLAorICAgICAg
ICAgICAgKCIxLjAtYyIsICIxLjByYzAiKSwKKyAgICAgICAgICAgICgiMS4wLWMxIiwgIjEuMHJj
MSIpLAorICAgICAgICAgICAgKCIxLjByYyIsICIxLjByYzAiKSwKKyAgICAgICAgICAgICgiMS4w
LnJjIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAgKCIxLjAucmMxIiwgIjEuMHJjMSIpLAorICAg
ICAgICAgICAgKCIxLjAtcmMiLCAiMS4wcmMwIiksCisgICAgICAgICAgICAoIjEuMC1yYzEiLCAi
MS4wcmMxIiksCisgICAgICAgICAgICAoIjEuMEMiLCAiMS4wcmMwIiksCisgICAgICAgICAgICAo
IjEuMC5DIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAgKCIxLjAuQzEiLCAiMS4wcmMxIiksCisg
ICAgICAgICAgICAoIjEuMC1DIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAgKCIxLjAtQzEiLCAi
MS4wcmMxIiksCisgICAgICAgICAgICAoIjEuMFJDIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAg
KCIxLjAuUkMiLCAiMS4wcmMwIiksCisgICAgICAgICAgICAoIjEuMC5SQzEiLCAiMS4wcmMxIiks
CisgICAgICAgICAgICAoIjEuMC1SQyIsICIxLjByYzAiKSwKKyAgICAgICAgICAgICgiMS4wLVJD
MSIsICIxLjByYzEiKSwKKyAgICAgICAgICAgICMgVmFyaW91cyBwb3N0IHJlbGVhc2UgaW5jYXJu
YXRpb25zCisgICAgICAgICAgICAoIjEuMHBvc3QiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAg
ICAoIjEuMC5wb3N0IiwgIjEuMC5wb3N0MCIpLAorICAgICAgICAgICAgKCIxLjBwb3N0MSIsICIx
LjAucG9zdDEiKSwKKyAgICAgICAgICAgICgiMS4wcG9zdCIsICIxLjAucG9zdDAiKSwKKyAgICAg
ICAgICAgICgiMS4wLXBvc3QiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAgICAoIjEuMC1wb3N0
MSIsICIxLjAucG9zdDEiKSwKKyAgICAgICAgICAgICgiMS4wUE9TVCIsICIxLjAucG9zdDAiKSwK
KyAgICAgICAgICAgICgiMS4wLlBPU1QiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAgICAoIjEu
MFBPU1QxIiwgIjEuMC5wb3N0MSIpLAorICAgICAgICAgICAgKCIxLjBQT1NUIiwgIjEuMC5wb3N0
MCIpLAorICAgICAgICAgICAgKCIxLjByIiwgIjEuMC5wb3N0MCIpLAorICAgICAgICAgICAgKCIx
LjByZXYiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAgICAoIjEuMC5QT1NUMSIsICIxLjAucG9z
dDEiKSwKKyAgICAgICAgICAgICgiMS4wLnIxIiwgIjEuMC5wb3N0MSIpLAorICAgICAgICAgICAg
KCIxLjAucmV2MSIsICIxLjAucG9zdDEiKSwKKyAgICAgICAgICAgICgiMS4wLVBPU1QiLCAiMS4w
LnBvc3QwIiksCisgICAgICAgICAgICAoIjEuMC1QT1NUMSIsICIxLjAucG9zdDEiKSwKKyAgICAg
ICAgICAgICgiMS4wLTUiLCAiMS4wLnBvc3Q1IiksCisgICAgICAgICAgICAoIjEuMC1yNSIsICIx
LjAucG9zdDUiKSwKKyAgICAgICAgICAgICgiMS4wLXJldjUiLCAiMS4wLnBvc3Q1IiksCisgICAg
ICAgICAgICAjIExvY2FsIHZlcnNpb24gY2FzZSBpbnNlbnNpdGl2aXR5CisgICAgICAgICAgICAo
IjEuMCtBYkMiLCAiMS4wK2FiYyIpLAorICAgICAgICAgICAgIyBJbnRlZ2VyIE5vcm1hbGl6YXRp
b24KKyAgICAgICAgICAgICgiMS4wMSIsICIxLjEiKSwKKyAgICAgICAgICAgICgiMS4wYTA1Iiwg
IjEuMGE1IiksCisgICAgICAgICAgICAoIjEuMGIwNyIsICIxLjBiNyIpLAorICAgICAgICAgICAg
KCIxLjBjMDU2IiwgIjEuMHJjNTYiKSwKKyAgICAgICAgICAgICgiMS4wcmMwOSIsICIxLjByYzki
KSwKKyAgICAgICAgICAgICgiMS4wLnBvc3QwMDAiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAg
ICAoIjEuMS5kZXYwOTAwMCIsICIxLjEuZGV2OTAwMCIpLAorICAgICAgICAgICAgKCIwMCExLjIi
LCAiMS4yIiksCisgICAgICAgICAgICAoIjAxMDAhMC4wIiwgIjEwMCEwLjAiKSwKKyAgICAgICAg
ICAgICMgVmFyaW91cyBvdGhlciBub3JtYWxpemF0aW9ucworICAgICAgICAgICAgKCJ2MS4wIiwg
IjEuMCIpLAorICAgICAgICAgICAgKCIgICB2MS4wXHRcbiIsICIxLjAiKSwKKyAgICAgICAgXSwK
KyAgICApCisgICAgZGVmIHRlc3Rfbm9ybWFsaXplZF92ZXJzaW9ucyhzZWxmLCB2ZXJzaW9uLCBu
b3JtYWxpemVkKToKKyAgICAgICAgYXNzZXJ0IHN0cihWZXJzaW9uKHZlcnNpb24pKSA9PSBub3Jt
YWxpemVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lv
biIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEuMC5kZXY0NTYiLCAi
MS4wLmRldjQ1NiIpLAorICAgICAgICAgICAgKCIxLjBhMSIsICIxLjBhMSIpLAorICAgICAgICAg
ICAgKCIxLjBhMi5kZXY0NTYiLCAiMS4wYTIuZGV2NDU2IiksCisgICAgICAgICAgICAoIjEuMGEx
Mi5kZXY0NTYiLCAiMS4wYTEyLmRldjQ1NiIpLAorICAgICAgICAgICAgKCIxLjBhMTIiLCAiMS4w
YTEyIiksCisgICAgICAgICAgICAoIjEuMGIxLmRldjQ1NiIsICIxLjBiMS5kZXY0NTYiKSwKKyAg
ICAgICAgICAgICgiMS4wYjIiLCAiMS4wYjIiKSwKKyAgICAgICAgICAgICgiMS4wYjIucG9zdDM0
NS5kZXY0NTYiLCAiMS4wYjIucG9zdDM0NS5kZXY0NTYiKSwKKyAgICAgICAgICAgICgiMS4wYjIu
cG9zdDM0NSIsICIxLjBiMi5wb3N0MzQ1IiksCisgICAgICAgICAgICAoIjEuMHJjMS5kZXY0NTYi
LCAiMS4wcmMxLmRldjQ1NiIpLAorICAgICAgICAgICAgKCIxLjByYzEiLCAiMS4wcmMxIiksCisg
ICAgICAgICAgICAoIjEuMCIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q0NTYuZGV2
MzQiLCAiMS4wLnBvc3Q0NTYuZGV2MzQiKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q0NTYiLCAi
MS4wLnBvc3Q0NTYiKSwKKyAgICAgICAgICAgICgiMS4wLjEiLCAiMS4wLjEiKSwKKyAgICAgICAg
ICAgICgiMCExLjAuMiIsICIxLjAuMiIpLAorICAgICAgICAgICAgKCIxLjAuMys3IiwgIjEuMC4z
KzciKSwKKyAgICAgICAgICAgICgiMCExLjAuNCs4LjAiLCAiMS4wLjQrOC4wIiksCisgICAgICAg
ICAgICAoIjEuMC41KzkuNSIsICIxLjAuNSs5LjUiKSwKKyAgICAgICAgICAgICgiMS4yKzEyMzQu
YWJjIiwgIjEuMisxMjM0LmFiYyIpLAorICAgICAgICAgICAgKCIxLjIrMTIzNDU2IiwgIjEuMisx
MjM0NTYiKSwKKyAgICAgICAgICAgICgiMS4yKzEyM2FiYyIsICIxLjIrMTIzYWJjIiksCisgICAg
ICAgICAgICAoIjEuMisxMjNhYmM0NTYiLCAiMS4yKzEyM2FiYzQ1NiIpLAorICAgICAgICAgICAg
KCIxLjIrYWJjIiwgIjEuMithYmMiKSwKKyAgICAgICAgICAgICgiMS4yK2FiYzEyMyIsICIxLjIr
YWJjMTIzIiksCisgICAgICAgICAgICAoIjEuMithYmMxMjNkZWYiLCAiMS4yK2FiYzEyM2RlZiIp
LAorICAgICAgICAgICAgKCIxLjEuZGV2MSIsICIxLjEuZGV2MSIpLAorICAgICAgICAgICAgKCI3
ITEuMC5kZXY0NTYiLCAiNyExLjAuZGV2NDU2IiksCisgICAgICAgICAgICAoIjchMS4wYTEiLCAi
NyExLjBhMSIpLAorICAgICAgICAgICAgKCI3ITEuMGEyLmRldjQ1NiIsICI3ITEuMGEyLmRldjQ1
NiIpLAorICAgICAgICAgICAgKCI3ITEuMGExMi5kZXY0NTYiLCAiNyExLjBhMTIuZGV2NDU2Iiks
CisgICAgICAgICAgICAoIjchMS4wYTEyIiwgIjchMS4wYTEyIiksCisgICAgICAgICAgICAoIjch
MS4wYjEuZGV2NDU2IiwgIjchMS4wYjEuZGV2NDU2IiksCisgICAgICAgICAgICAoIjchMS4wYjIi
LCAiNyExLjBiMiIpLAorICAgICAgICAgICAgKCI3ITEuMGIyLnBvc3QzNDUuZGV2NDU2IiwgIjch
MS4wYjIucG9zdDM0NS5kZXY0NTYiKSwKKyAgICAgICAgICAgICgiNyExLjBiMi5wb3N0MzQ1Iiwg
IjchMS4wYjIucG9zdDM0NSIpLAorICAgICAgICAgICAgKCI3ITEuMHJjMS5kZXY0NTYiLCAiNyEx
LjByYzEuZGV2NDU2IiksCisgICAgICAgICAgICAoIjchMS4wcmMxIiwgIjchMS4wcmMxIiksCisg
ICAgICAgICAgICAoIjchMS4wIiwgIjchMS4wIiksCisgICAgICAgICAgICAoIjchMS4wLnBvc3Q0
NTYuZGV2MzQiLCAiNyExLjAucG9zdDQ1Ni5kZXYzNCIpLAorICAgICAgICAgICAgKCI3ITEuMC5w
b3N0NDU2IiwgIjchMS4wLnBvc3Q0NTYiKSwKKyAgICAgICAgICAgICgiNyExLjAuMSIsICI3ITEu
MC4xIiksCisgICAgICAgICAgICAoIjchMS4wLjIiLCAiNyExLjAuMiIpLAorICAgICAgICAgICAg
KCI3ITEuMC4zKzciLCAiNyExLjAuMys3IiksCisgICAgICAgICAgICAoIjchMS4wLjQrOC4wIiwg
IjchMS4wLjQrOC4wIiksCisgICAgICAgICAgICAoIjchMS4wLjUrOS41IiwgIjchMS4wLjUrOS41
IiksCisgICAgICAgICAgICAoIjchMS4xLmRldjEiLCAiNyExLjEuZGV2MSIpLAorICAgICAgICBd
LAorICAgICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX3N0cl9yZXByKHNlbGYsIHZlcnNpb24sIGV4
cGVjdGVkKToKKyAgICAgICAgYXNzZXJ0IHN0cihWZXJzaW9uKHZlcnNpb24pKSA9PSBleHBlY3Rl
ZAorICAgICAgICBhc3NlcnQgcmVwcihWZXJzaW9uKHZlcnNpb24pKSA9PSAiPFZlcnNpb24oezB9
KT4iLmZvcm1hdChyZXByKGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fcmNfYW5k
X2NfZXF1YWxzKHNlbGYpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbigiMS4wcmMxIikgPT0gVmVy
c2lvbigiMS4wYzEiKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwg
VkVSU0lPTlMpCisgICAgZGVmIHRlc3RfdmVyc2lvbl9oYXNoKHNlbGYsIHZlcnNpb24pOgorICAg
ICAgICBhc3NlcnQgaGFzaChWZXJzaW9uKHZlcnNpb24pKSA9PSBoYXNoKFZlcnNpb24odmVyc2lv
bikpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIs
ICJwdWJsaWMiKSwKKyAgICAgICAgWworICAgICAgICAgICAgKCIxLjAiLCAiMS4wIiksCisgICAg
ICAgICAgICAoIjEuMC5kZXYwIiwgIjEuMC5kZXYwIiksCisgICAgICAgICAgICAoIjEuMC5kZXY2
IiwgIjEuMC5kZXY2IiksCisgICAgICAgICAgICAoIjEuMGExIiwgIjEuMGExIiksCisgICAgICAg
ICAgICAoIjEuMGExLnBvc3Q1IiwgIjEuMGExLnBvc3Q1IiksCisgICAgICAgICAgICAoIjEuMGEx
LnBvc3Q1LmRldjYiLCAiMS4wYTEucG9zdDUuZGV2NiIpLAorICAgICAgICAgICAgKCIxLjByYzQi
LCAiMS4wcmM0IiksCisgICAgICAgICAgICAoIjEuMC5wb3N0NSIsICIxLjAucG9zdDUiKSwKKyAg
ICAgICAgICAgICgiMSExLjAiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NiIs
ICIxITEuMC5kZXY2IiksCisgICAgICAgICAgICAoIjEhMS4wYTEiLCAiMSExLjBhMSIpLAorICAg
ICAgICAgICAgKCIxITEuMGExLnBvc3Q1IiwgIjEhMS4wYTEucG9zdDUiKSwKKyAgICAgICAgICAg
ICgiMSExLjBhMS5wb3N0NS5kZXY2IiwgIjEhMS4wYTEucG9zdDUuZGV2NiIpLAorICAgICAgICAg
ICAgKCIxITEuMHJjNCIsICIxITEuMHJjNCIpLAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NSIs
ICIxITEuMC5wb3N0NSIpLAorICAgICAgICAgICAgKCIxLjArZGVhZGJlZWYiLCAiMS4wIiksCisg
ICAgICAgICAgICAoIjEuMC5kZXY2K2RlYWRiZWVmIiwgIjEuMC5kZXY2IiksCisgICAgICAgICAg
ICAoIjEuMGExK2RlYWRiZWVmIiwgIjEuMGExIiksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1
K2RlYWRiZWVmIiwgIjEuMGExLnBvc3Q1IiksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1LmRl
djYrZGVhZGJlZWYiLCAiMS4wYTEucG9zdDUuZGV2NiIpLAorICAgICAgICAgICAgKCIxLjByYzQr
ZGVhZGJlZWYiLCAiMS4wcmM0IiksCisgICAgICAgICAgICAoIjEuMC5wb3N0NStkZWFkYmVlZiIs
ICIxLjAucG9zdDUiKSwKKyAgICAgICAgICAgICgiMSExLjArZGVhZGJlZWYiLCAiMSExLjAiKSwK
KyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFkYmVlZiIsICIxITEuMC5kZXY2IiksCisgICAg
ICAgICAgICAoIjEhMS4wYTErZGVhZGJlZWYiLCAiMSExLjBhMSIpLAorICAgICAgICAgICAgKCIx
ITEuMGExLnBvc3Q1K2RlYWRiZWVmIiwgIjEhMS4wYTEucG9zdDUiKSwKKyAgICAgICAgICAgICgi
MSExLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgIjEhMS4wYTEucG9zdDUuZGV2NiIpLAorICAg
ICAgICAgICAgKCIxITEuMHJjNCtkZWFkYmVlZiIsICIxITEuMHJjNCIpLAorICAgICAgICAgICAg
KCIxITEuMC5wb3N0NStkZWFkYmVlZiIsICIxITEuMC5wb3N0NSIpLAorICAgICAgICBdLAorICAg
ICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX3B1YmxpYyhzZWxmLCB2ZXJzaW9uLCBwdWJsaWMpOgor
ICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5wdWJsaWMgPT0gcHVibGljCisKKyAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIsICJiYXNlX3ZlcnNp
b24iKSwKKyAgICAgICAgWworICAgICAgICAgICAgKCIxLjAiLCAiMS4wIiksCisgICAgICAgICAg
ICAoIjEuMC5kZXYwIiwgIjEuMCIpLAorICAgICAgICAgICAgKCIxLjAuZGV2NiIsICIxLjAiKSwK
KyAgICAgICAgICAgICgiMS4wYTEiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1
IiwgIjEuMCIpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2IiwgIjEuMCIpLAorICAg
ICAgICAgICAgKCIxLjByYzQiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMC5wb3N0NSIsICIx
LjAiKSwKKyAgICAgICAgICAgICgiMSExLjAiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSEx
LjAuZGV2NiIsICIxITEuMCIpLAorICAgICAgICAgICAgKCIxITEuMGExIiwgIjEhMS4wIiksCisg
ICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSEx
LjBhMS5wb3N0NS5kZXY2IiwgIjEhMS4wIiksCisgICAgICAgICAgICAoIjEhMS4wcmM0IiwgIjEh
MS4wIiksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1IiwgIjEhMS4wIiksCisgICAgICAgICAg
ICAoIjEuMCtkZWFkYmVlZiIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYrZGVhZGJl
ZWYiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMGExK2RlYWRiZWVmIiwgIjEuMCIpLAorICAg
ICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFkYmVlZiIsICIxLjAiKSwKKyAgICAgICAgICAgICgi
MS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMS4wcmM0
K2RlYWRiZWVmIiwgIjEuMCIpLAorICAgICAgICAgICAgKCIxLjAucG9zdDUrZGVhZGJlZWYiLCAi
MS4wIiksCisgICAgICAgICAgICAoIjEhMS4wK2RlYWRiZWVmIiwgIjEhMS4wIiksCisgICAgICAg
ICAgICAoIjEhMS4wLmRldjYrZGVhZGJlZWYiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSEx
LjBhMStkZWFkYmVlZiIsICIxITEuMCIpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1K2Rl
YWRiZWVmIiwgIjEhMS4wIiksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUuZGV2NitkZWFk
YmVlZiIsICIxITEuMCIpLAorICAgICAgICAgICAgKCIxITEuMHJjNCtkZWFkYmVlZiIsICIxITEu
MCIpLAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NStkZWFkYmVlZiIsICIxITEuMCIpLAorICAg
ICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX2Jhc2VfdmVyc2lvbihzZWxmLCB2
ZXJzaW9uLCBiYXNlX3ZlcnNpb24pOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5i
YXNlX3ZlcnNpb24gPT0gYmFzZV92ZXJzaW9uCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoCisgICAgICAgICgidmVyc2lvbiIsICJlcG9jaCIpLAorICAgICAgICBbCisgICAgICAgICAg
ICAoIjEuMCIsIDApLAorICAgICAgICAgICAgKCIxLjAuZGV2MCIsIDApLAorICAgICAgICAgICAg
KCIxLjAuZGV2NiIsIDApLAorICAgICAgICAgICAgKCIxLjBhMSIsIDApLAorICAgICAgICAgICAg
KCIxLjBhMS5wb3N0NSIsIDApLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2IiwgMCks
CisgICAgICAgICAgICAoIjEuMHJjNCIsIDApLAorICAgICAgICAgICAgKCIxLjAucG9zdDUiLCAw
KSwKKyAgICAgICAgICAgICgiMSExLjAiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NiIs
IDEpLAorICAgICAgICAgICAgKCIxITEuMGExIiwgMSksCisgICAgICAgICAgICAoIjEhMS4wYTEu
cG9zdDUiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NS5kZXY2IiwgMSksCisgICAg
ICAgICAgICAoIjEhMS4wcmM0IiwgMSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1IiwgMSks
CisgICAgICAgICAgICAoIjEuMCtkZWFkYmVlZiIsIDApLAorICAgICAgICAgICAgKCIxLjAuZGV2
NitkZWFkYmVlZiIsIDApLAorICAgICAgICAgICAgKCIxLjBhMStkZWFkYmVlZiIsIDApLAorICAg
ICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFkYmVlZiIsIDApLAorICAgICAgICAgICAgKCIxLjBh
MS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgMCksCisgICAgICAgICAgICAoIjEuMHJjNCtkZWFkYmVl
ZiIsIDApLAorICAgICAgICAgICAgKCIxLjAucG9zdDUrZGVhZGJlZWYiLCAwKSwKKyAgICAgICAg
ICAgICgiMSExLjArZGVhZGJlZWYiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFk
YmVlZiIsIDEpLAorICAgICAgICAgICAgKCIxITEuMGExK2RlYWRiZWVmIiwgMSksCisgICAgICAg
ICAgICAoIjEhMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjBh
MS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgMSksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRi
ZWVmIiwgMSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVmIiwgMSksCisgICAg
ICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25fZXBvY2goc2VsZiwgdmVyc2lvbiwg
ZXBvY2gpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5lcG9jaCA9PSBlcG9jaAor
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInZlcnNpb24iLCAicmVs
ZWFzZSIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEuMCIsICgxLCAwKSksCisgICAgICAg
ICAgICAoIjEuMC5kZXYwIiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYiLCAoMSwg
MCkpLAorICAgICAgICAgICAgKCIxLjBhMSIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEuMGEx
LnBvc3Q1IiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NiIsICgxLCAw
KSksCisgICAgICAgICAgICAoIjEuMHJjNCIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEuMC5w
b3N0NSIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wIiwgKDEsIDApKSwKKyAgICAgICAg
ICAgICgiMSExLjAuZGV2NiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wYTEiLCAoMSwg
MCkpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1IiwgKDEsIDApKSwKKyAgICAgICAgICAg
ICgiMSExLjBhMS5wb3N0NS5kZXY2IiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMSExLjByYzQi
LCAoMSwgMCkpLAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NSIsICgxLCAwKSksCisgICAgICAg
ICAgICAoIjEuMCtkZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEuMC5kZXY2K2Rl
YWRiZWVmIiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wYTErZGVhZGJlZWYiLCAoMSwgMCkp
LAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAg
ICAgICAoIjEuMGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCAoMSwgMCkpLAorICAgICAgICAgICAg
KCIxLjByYzQrZGVhZGJlZWYiLCAoMSwgMCkpLAorICAgICAgICAgICAgKCIxLjAucG9zdDUrZGVh
ZGJlZWYiLCAoMSwgMCkpLAorICAgICAgICAgICAgKCIxITEuMCtkZWFkYmVlZiIsICgxLCAwKSks
CisgICAgICAgICAgICAoIjEhMS4wLmRldjYrZGVhZGJlZWYiLCAoMSwgMCkpLAorICAgICAgICAg
ICAgKCIxITEuMGExK2RlYWRiZWVmIiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5w
b3N0NStkZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUuZGV2
NitkZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwg
KDEsIDApKSwKKyAgICAgICAgICAgICgiMSExLjAucG9zdDUrZGVhZGJlZWYiLCAoMSwgMCkpLAor
ICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX3JlbGVhc2Uoc2VsZiwgdmVy
c2lvbiwgcmVsZWFzZSk6CisgICAgICAgIGFzc2VydCBWZXJzaW9uKHZlcnNpb24pLnJlbGVhc2Ug
PT0gcmVsZWFzZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInZl
cnNpb24iLCAibG9jYWwiKSwKKyAgICAgICAgWworICAgICAgICAgICAgKCIxLjAiLCBOb25lKSwK
KyAgICAgICAgICAgICgiMS4wLmRldjAiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYi
LCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wYTEiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4w
YTEucG9zdDUiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NiIsIE5vbmUp
LAorICAgICAgICAgICAgKCIxLjByYzQiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q1
IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wIiwgTm9uZSksCisgICAgICAgICAgICAoIjEh
MS4wLmRldjYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjBhMSIsIE5vbmUpLAorICAgICAg
ICAgICAgKCIxITEuMGExLnBvc3Q1IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9z
dDUuZGV2NiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMHJjNCIsIE5vbmUpLAorICAgICAg
ICAgICAgKCIxITEuMC5wb3N0NSIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjArZGVhZGJlZWYi
LCAiZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYrZGVhZGJlZWYiLCAiZGVhZGJl
ZWYiKSwKKyAgICAgICAgICAgICgiMS4wYTErZGVhZGJlZWYiLCAiZGVhZGJlZWYiKSwKKyAgICAg
ICAgICAgICgiMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAiZGVhZGJlZWYiKSwKKyAgICAgICAgICAg
ICgiMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAgICAgICAg
KCIxLjByYzQrZGVhZGJlZWYiLCAiZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q1
K2RlYWRiZWVmIiwgImRlYWRiZWVmIiksCisgICAgICAgICAgICAoIjEhMS4wK2RlYWRiZWVmIiwg
ImRlYWRiZWVmIiksCisgICAgICAgICAgICAoIjEhMS4wLmRldjYrZGVhZGJlZWYiLCAiZGVhZGJl
ZWYiKSwKKyAgICAgICAgICAgICgiMSExLjBhMStkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAg
ICAgICAgICAgKCIxITEuMGExLnBvc3Q1K2RlYWRiZWVmIiwgImRlYWRiZWVmIiksCisgICAgICAg
ICAgICAoIjEhMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAg
ICAgICAgKCIxITEuMHJjNCtkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAgICAgICAgKCIx
ITEuMC5wb3N0NStkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAgICBdLAorICAgICkKKyAg
ICBkZWYgdGVzdF92ZXJzaW9uX2xvY2FsKHNlbGYsIHZlcnNpb24sIGxvY2FsKToKKyAgICAgICAg
YXNzZXJ0IFZlcnNpb24odmVyc2lvbikubG9jYWwgPT0gbG9jYWwKKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJ2ZXJzaW9uIiwgInByZSIpLAorICAgICAgICBbCisg
ICAgICAgICAgICAoIjEuMCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAuZGV2MCIsIE5vbmUp
LAorICAgICAgICAgICAgKCIxLjAuZGV2NiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMSIs
ICgiYSIsIDEpKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUiLCAoImEiLCAxKSksCisgICAg
ICAgICAgICAoIjEuMGExLnBvc3Q1LmRldjYiLCAoImEiLCAxKSksCisgICAgICAgICAgICAoIjEu
MHJjNCIsICgicmMiLCA0KSksCisgICAgICAgICAgICAoIjEuMC5wb3N0NSIsIE5vbmUpLAorICAg
ICAgICAgICAgKCIxITEuMCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMC5kZXY2IiwgTm9u
ZSksCisgICAgICAgICAgICAoIjEhMS4wYTEiLCAoImEiLCAxKSksCisgICAgICAgICAgICAoIjEh
MS4wYTEucG9zdDUiLCAoImEiLCAxKSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUuZGV2
NiIsICgiYSIsIDEpKSwKKyAgICAgICAgICAgICgiMSExLjByYzQiLCAoInJjIiwgNCkpLAorICAg
ICAgICAgICAgKCIxITEuMC5wb3N0NSIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjArZGVhZGJl
ZWYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYrZGVhZGJlZWYiLCBOb25lKSwKKyAg
ICAgICAgICAgICgiMS4wYTErZGVhZGJlZWYiLCAoImEiLCAxKSksCisgICAgICAgICAgICAoIjEu
MGExLnBvc3Q1K2RlYWRiZWVmIiwgKCJhIiwgMSkpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0
NS5kZXY2K2RlYWRiZWVmIiwgKCJhIiwgMSkpLAorICAgICAgICAgICAgKCIxLjByYzQrZGVhZGJl
ZWYiLCAoInJjIiwgNCkpLAorICAgICAgICAgICAgKCIxLjAucG9zdDUrZGVhZGJlZWYiLCBOb25l
KSwKKyAgICAgICAgICAgICgiMSExLjArZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgICAgICgi
MSExLjAuZGV2NitkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMGExK2RlYWRi
ZWVmIiwgKCJhIiwgMSkpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1K2RlYWRiZWVmIiwg
KCJhIiwgMSkpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCAo
ImEiLCAxKSksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwgKCJyYyIsIDQpKSwK
KyAgICAgICAgICAgICgiMSExLjAucG9zdDUrZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgXSwK
KyAgICApCisgICAgZGVmIHRlc3RfdmVyc2lvbl9wcmUoc2VsZiwgdmVyc2lvbiwgcHJlKToKKyAg
ICAgICAgYXNzZXJ0IFZlcnNpb24odmVyc2lvbikucHJlID09IHByZQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInZlcnNpb24iLCAiZXhwZWN0ZWQiKSwKKyAgICAg
ICAgWworICAgICAgICAgICAgKCIxLjAuZGV2MCIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjAu
ZGV2MSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjBhMS5kZXYxIiwgVHJ1ZSksCisgICAgICAg
ICAgICAoIjEuMGIxLmRldjEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wYzEuZGV2MSIsIFRy
dWUpLAorICAgICAgICAgICAgKCIxLjByYzEuZGV2MSIsIFRydWUpLAorICAgICAgICAgICAgKCIx
LjBhMSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjBiMSIsIFRydWUpLAorICAgICAgICAgICAg
KCIxLjBjMSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjByYzEiLCBUcnVlKSwKKyAgICAgICAg
ICAgICgiMS4wYTEucG9zdDEuZGV2MSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjBiMS5wb3N0
MS5kZXYxIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMGMxLnBvc3QxLmRldjEiLCBUcnVlKSwK
KyAgICAgICAgICAgICgiMS4wcmMxLnBvc3QxLmRldjEiLCBUcnVlKSwKKyAgICAgICAgICAgICgi
MS4wYTEucG9zdDEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wYjEucG9zdDEiLCBUcnVlKSwK
KyAgICAgICAgICAgICgiMS4wYzEucG9zdDEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wcmMx
LnBvc3QxIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMCIsIEZhbHNlKSwKKyAgICAgICAgICAg
ICgiMS4wK2RldiIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3QxIiwgRmFsc2UpLAor
ICAgICAgICAgICAgKCIxLjAucG9zdDErZGV2IiwgRmFsc2UpLAorICAgICAgICBdLAorICAgICkK
KyAgICBkZWYgdGVzdF92ZXJzaW9uX2lzX3ByZXJlbGVhc2Uoc2VsZiwgdmVyc2lvbiwgZXhwZWN0
ZWQpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5pc19wcmVyZWxlYXNlIGlzIGV4
cGVjdGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lv
biIsICJkZXYiKSwKKyAgICAgICAgWworICAgICAgICAgICAgKCIxLjAiLCBOb25lKSwKKyAgICAg
ICAgICAgICgiMS4wLmRldjAiLCAwKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYiLCA2KSwKKyAg
ICAgICAgICAgICgiMS4wYTEiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUiLCBO
b25lKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NiIsIDYpLAorICAgICAgICAgICAg
KCIxLjByYzQiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q1IiwgTm9uZSksCisgICAg
ICAgICAgICAoIjEhMS4wIiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wLmRldjYiLCA2KSwK
KyAgICAgICAgICAgICgiMSExLjBhMSIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMGExLnBv
c3Q1IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUuZGV2NiIsIDYpLAorICAg
ICAgICAgICAgKCIxITEuMHJjNCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NSIs
IE5vbmUpLAorICAgICAgICAgICAgKCIxLjArZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgICAg
ICgiMS4wLmRldjYrZGVhZGJlZWYiLCA2KSwKKyAgICAgICAgICAgICgiMS4wYTErZGVhZGJlZWYi
LCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUrZGVhZGJlZWYiLCBOb25lKSwKKyAg
ICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsIDYpLAorICAgICAgICAgICAg
KCIxLjByYzQrZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q1K2RlYWRi
ZWVmIiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wK2RlYWRiZWVmIiwgTm9uZSksCisgICAg
ICAgICAgICAoIjEhMS4wLmRldjYrZGVhZGJlZWYiLCA2KSwKKyAgICAgICAgICAgICgiMSExLjBh
MStkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1K2RlYWRiZWVm
IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsIDYp
LAorICAgICAgICAgICAgKCIxITEuMHJjNCtkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAg
KCIxITEuMC5wb3N0NStkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICBdLAorICAgICkKKyAgICBk
ZWYgdGVzdF92ZXJzaW9uX2RldihzZWxmLCB2ZXJzaW9uLCBkZXYpOgorICAgICAgICBhc3NlcnQg
VmVyc2lvbih2ZXJzaW9uKS5kZXYgPT0gZGV2CisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoCisgICAgICAgICgidmVyc2lvbiIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAg
ICAgICAoIjEuMCIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMS4wLmRldjAiLCBUcnVlKSwKKyAg
ICAgICAgICAgICgiMS4wLmRldjYiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wYTEiLCBGYWxz
ZSksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1IiwgRmFsc2UpLAorICAgICAgICAgICAgKCIx
LjBhMS5wb3N0NS5kZXY2IiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMHJjNCIsIEZhbHNlKSwK
KyAgICAgICAgICAgICgiMS4wLnBvc3Q1IiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxITEuMCIs
IEZhbHNlKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NiIsIFRydWUpLAorICAgICAgICAgICAg
KCIxITEuMGExIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1IiwgRmFsc2Up
LAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYiLCBUcnVlKSwKKyAgICAgICAgICAg
ICgiMSExLjByYzQiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1IiwgRmFsc2Up
LAorICAgICAgICAgICAgKCIxLjArZGVhZGJlZWYiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEu
MC5kZXY2K2RlYWRiZWVmIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMGExK2RlYWRiZWVmIiwg
RmFsc2UpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFkYmVlZiIsIEZhbHNlKSwKKyAg
ICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsIFRydWUpLAorICAgICAgICAg
ICAgKCIxLjByYzQrZGVhZGJlZWYiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMC5wb3N0NStk
ZWFkYmVlZiIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMSExLjArZGVhZGJlZWYiLCBGYWxzZSks
CisgICAgICAgICAgICAoIjEhMS4wLmRldjYrZGVhZGJlZWYiLCBUcnVlKSwKKyAgICAgICAgICAg
ICgiMSExLjBhMStkZWFkYmVlZiIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0
NStkZWFkYmVlZiIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NS5kZXY2K2Rl
YWRiZWVmIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwgRmFsc2Up
LAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NStkZWFkYmVlZiIsIEZhbHNlKSwKKyAgICAgICAg
XSwKKyAgICApCisgICAgZGVmIHRlc3RfdmVyc2lvbl9pc19kZXZyZWxlYXNlKHNlbGYsIHZlcnNp
b24sIGV4cGVjdGVkKToKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24odmVyc2lvbikuaXNfZGV2cmVs
ZWFzZSBpcyBleHBlY3RlZAorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAg
ICAoInZlcnNpb24iLCAicG9zdCIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEuMCIsIE5v
bmUpLAorICAgICAgICAgICAgKCIxLjAuZGV2MCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAu
ZGV2NiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMSIsIE5vbmUpLAorICAgICAgICAgICAg
KCIxLjBhMS5wb3N0NSIsIDUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2IiwgNSks
CisgICAgICAgICAgICAoIjEuMHJjNCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAucG9zdDUi
LCA1KSwKKyAgICAgICAgICAgICgiMSExLjAiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjAu
ZGV2NiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMGExIiwgTm9uZSksCisgICAgICAgICAg
ICAoIjEhMS4wYTEucG9zdDUiLCA1KSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NS5kZXY2
IiwgNSksCisgICAgICAgICAgICAoIjEhMS4wcmM0IiwgTm9uZSksCisgICAgICAgICAgICAoIjEh
MS4wLnBvc3Q1IiwgNSksCisgICAgICAgICAgICAoIjEuMCtkZWFkYmVlZiIsIE5vbmUpLAorICAg
ICAgICAgICAgKCIxLjAuZGV2NitkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBh
MStkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFkYmVlZiIs
IDUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgNSksCisgICAg
ICAgICAgICAoIjEuMHJjNCtkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAucG9z
dDUrZGVhZGJlZWYiLCA1KSwKKyAgICAgICAgICAgICgiMSExLjArZGVhZGJlZWYiLCBOb25lKSwK
KyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAg
KCIxITEuMGExK2RlYWRiZWVmIiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUr
ZGVhZGJlZWYiLCA1KSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVm
IiwgNSksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwgTm9uZSksCisgICAgICAg
ICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVmIiwgNSksCisgICAgICAgIF0sCisgICAgKQorICAg
IGRlZiB0ZXN0X3ZlcnNpb25fcG9zdChzZWxmLCB2ZXJzaW9uLCBwb3N0KToKKyAgICAgICAgYXNz
ZXJ0IFZlcnNpb24odmVyc2lvbikucG9zdCA9PSBwb3N0CisKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisg
ICAgICAgICAgICAoIjEuMC5kZXYxIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjAiLCBGYWxz
ZSksCisgICAgICAgICAgICAoIjEuMCtmb28iLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMC5w
b3N0MS5kZXYxIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMC5wb3N0MSIsIFRydWUpLAorICAg
ICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX2lzX3Bvc3RyZWxlYXNlKHNlbGYs
IHZlcnNpb24sIGV4cGVjdGVkKToKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24odmVyc2lvbikuaXNf
cG9zdHJlbGVhc2UgaXMgZXhwZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAgICAgKCJsZWZ0IiwgInJpZ2h0IiwgIm9wIiksCisgICAgICAgICMgQmVsb3cgd2UnbGwg
Z2VuZXJhdGUgZXZlcnkgcG9zc2libGUgY29tYmluYXRpb24gb2YgVkVSU0lPTlMgdGhhdAorICAg
ICAgICAjIHNob3VsZCBiZSBUcnVlIGZvciB0aGUgZ2l2ZW4gb3BlcmF0b3IKKyAgICAgICAgaXRl
cnRvb2xzLmNoYWluKAorICAgICAgICAgICAgKgorICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0
aGUgbGVzcyB0aGFuICg8KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLmx0KSBmb3IgeSBpbiBWRVJTSU9OU1tp
ICsgMSA6XV0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoVkVSU0lPTlMp
CisgICAgICAgICAgICBdCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0
IHRoZSBsZXNzIHRoYW4gZXF1YWwgKDw9KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLmxlKSBmb3IgeSBpbiBW
RVJTSU9OU1tpOl1dCisgICAgICAgICAgICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKFZFUlNJ
T05TKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgKworICAgICAgICAgICAgIyBWZXJpZnkg
dGhhdCB0aGUgZXF1YWwgKD09KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAg
IFtbKHgsIHgsIG9wZXJhdG9yLmVxKSBmb3IgeCBpbiBWRVJTSU9OU11dCisgICAgICAgICAgICAr
CisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBub3QgZXF1YWwgKCE9KSBvcGVyYXRvciB3
b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBbKHgsIHksIG9w
ZXJhdG9yLm5lKSBmb3IgaiwgeSBpbiBlbnVtZXJhdGUoVkVSU0lPTlMpIGlmIGkgIT0gal0KKyAg
ICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoVkVSU0lPTlMpCisgICAgICAgICAg
ICBdCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBncmVhdGVy
IHRoYW4gZXF1YWwgKD49KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLmdlKSBmb3IgeSBpbiBWRVJTSU9OU1s6
IGkgKyAxXV0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoVkVSU0lPTlMp
CisgICAgICAgICAgICBdCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0
IHRoZSBncmVhdGVyIHRoYW4gKD4pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IuZ3QpIGZvciB5IGluIFZFUlNJ
T05TWzppXV0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoVkVSU0lPTlMp
CisgICAgICAgICAgICBdCisgICAgICAgICksCisgICAgKQorICAgIGRlZiB0ZXN0X2NvbXBhcmlz
b25fdHJ1ZShzZWxmLCBsZWZ0LCByaWdodCwgb3ApOgorICAgICAgICBhc3NlcnQgb3AoVmVyc2lv
bihsZWZ0KSwgVmVyc2lvbihyaWdodCkpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgICAgICgibGVmdCIsICJyaWdodCIsICJvcCIpLAorICAgICAgICAjIEJlbG93IHdlJ2xs
IGdlbmVyYXRlIGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mIFZFUlNJT05TIHRoYXQKKyAg
ICAgICAgIyBzaG91bGQgYmUgRmFsc2UgZm9yIHRoZSBnaXZlbiBvcGVyYXRvcgorICAgICAgICBp
dGVydG9vbHMuY2hhaW4oCisgICAgICAgICAgICAqCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0
IHRoZSBsZXNzIHRoYW4gKDwpIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IubHQpIGZvciB5IGluIFZFUlNJT05T
WzogaSArIDFdXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShWRVJTSU9O
UykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5IHRo
YXQgdGhlIGxlc3MgdGhhbiBlcXVhbCAoPD0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IubGUpIGZvciB5IGlu
IFZFUlNJT05TWzppXV0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoVkVS
U0lPTlMpCisgICAgICAgICAgICBdCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlm
eSB0aGF0IHRoZSBlcXVhbCAoPT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IuZXEpIGZvciBqLCB5IGluIGVu
dW1lcmF0ZShWRVJTSU9OUykgaWYgaSAhPSBqXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGlu
IGVudW1lcmF0ZShWRVJTSU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAg
ICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIG5vdCBlcXVhbCAoIT0pIG9wZXJhdG9yIHdvcmtzIGNv
cnJlY3RseQorICAgICAgICAgICAgW1soeCwgeCwgb3BlcmF0b3IubmUpIGZvciB4IGluIFZFUlNJ
T05TXV0KKyAgICAgICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGdyZWF0
ZXIgdGhhbiBlcXVhbCAoPj0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IuZ2UpIGZvciB5IGluIFZFUlNJT05T
W2kgKyAxIDpdXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShWRVJTSU9O
UykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5IHRo
YXQgdGhlIGdyZWF0ZXIgdGhhbiAoPikgb3BlcmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgWyh4LCB5LCBvcGVyYXRvci5ndCkgZm9yIHkgaW4gVkVS
U0lPTlNbaTpdXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShWRVJTSU9O
UykKKyAgICAgICAgICAgIF0KKyAgICAgICAgKSwKKyAgICApCisgICAgZGVmIHRlc3RfY29tcGFy
aXNvbl9mYWxzZShzZWxmLCBsZWZ0LCByaWdodCwgb3ApOgorICAgICAgICBhc3NlcnQgbm90IG9w
KFZlcnNpb24obGVmdCksIFZlcnNpb24ocmlnaHQpKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJvcCIsIFsibHQiLCAibGUiLCAiZXEiLCAiZ2UiLCAiZ3QiLCAibmUiXSkKKyAgICBk
ZWYgdGVzdF9kdW5kZXJfb3BfcmV0dXJuc19ub3RpbXBsZW1lbnRlZChzZWxmLCBvcCk6CisgICAg
ICAgIG1ldGhvZCA9IGdldGF0dHIoVmVyc2lvbiwgIl9fezB9X18iLmZvcm1hdChvcCkpCisgICAg
ICAgIGFzc2VydCBtZXRob2QoVmVyc2lvbigiMSIpLCAxKSBpcyBOb3RJbXBsZW1lbnRlZAorCisg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgib3AiLCAiZXhwZWN0ZWQiKSwgWygiZXEiLCBG
YWxzZSksICgibmUiLCBUcnVlKV0pCisgICAgZGVmIHRlc3RfY29tcGFyZV9vdGhlcihzZWxmLCBv
cCwgZXhwZWN0ZWQpOgorICAgICAgICBvdGhlciA9IHByZXRlbmQuc3R1YigqKnsiX197MH1fXyIu
Zm9ybWF0KG9wKTogbGFtYmRhIG90aGVyOiBOb3RJbXBsZW1lbnRlZH0pCisKKyAgICAgICAgYXNz
ZXJ0IGdldGF0dHIob3BlcmF0b3IsIG9wKShWZXJzaW9uKCIxIiksIG90aGVyKSBpcyBleHBlY3Rl
ZAorCisgICAgZGVmIHRlc3RfY29tcGFyZV9sZWdhY3l2ZXJzaW9uX3ZlcnNpb24oc2VsZik6Cisg
ICAgICAgIHJlc3VsdCA9IHNvcnRlZChbVmVyc2lvbigiMCIpLCBMZWdhY3lWZXJzaW9uKCIxIild
KQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFtMZWdhY3lWZXJzaW9uKCIxIiksIFZlcnNpb24o
IjAiKV0KKworICAgIGRlZiB0ZXN0X21ham9yX3ZlcnNpb24oc2VsZik6CisgICAgICAgIGFzc2Vy
dCBWZXJzaW9uKCIyLjEuMCIpLm1ham9yID09IDIKKworICAgIGRlZiB0ZXN0X21pbm9yX3ZlcnNp
b24oc2VsZik6CisgICAgICAgIGFzc2VydCBWZXJzaW9uKCIyLjEuMCIpLm1pbm9yID09IDEKKyAg
ICAgICAgYXNzZXJ0IFZlcnNpb24oIjIiKS5taW5vciA9PSAwCisKKyAgICBkZWYgdGVzdF9taWNy
b192ZXJzaW9uKHNlbGYpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbigiMi4xLjMiKS5taWNybyA9
PSAzCisgICAgICAgIGFzc2VydCBWZXJzaW9uKCIyLjEiKS5taWNybyA9PSAwCisgICAgICAgIGFz
c2VydCBWZXJzaW9uKCIyIikubWljcm8gPT0gMAorCisKK0xFR0FDWV9WRVJTSU9OUyA9IFsiZm9v
YmFyIiwgImEgY2F0IGlzIGZpbmUgdG9vIiwgImxvbHd1dCIsICIxLTAiLCAiMi4wLWExIl0KKwor
CitjbGFzcyBUZXN0TGVnYWN5VmVyc2lvbjoKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9p
c19kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdz
KHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgTGVnYWN5VmVyc2lvbigic29tZS1sZWdh
Y3ktdmVyc2lvbiIpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHcpID09IDEKKyAgICAgICAgICAg
IGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKKwor
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidmVyc2lvbiIsIFZFUlNJT05TICsgTEVHQUNZ
X1ZFUlNJT05TKQorICAgIGRlZiB0ZXN0X3ZhbGlkX2xlZ2FjeV92ZXJzaW9ucyhzZWxmLCB2ZXJz
aW9uKToKKyAgICAgICAgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKQorCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAg
ZGVmIHRlc3RfbGVnYWN5X3ZlcnNpb25fc3RyX3JlcHIoc2VsZiwgdmVyc2lvbik6CisgICAgICAg
IGFzc2VydCBzdHIoTGVnYWN5VmVyc2lvbih2ZXJzaW9uKSkgPT0gdmVyc2lvbgorICAgICAgICBh
c3NlcnQgcmVwcihMZWdhY3lWZXJzaW9uKHZlcnNpb24pKSA9PSAiPExlZ2FjeVZlcnNpb24oezB9
KT4iLmZvcm1hdCgKKyAgICAgICAgICAgIHJlcHIodmVyc2lvbikKKyAgICAgICAgKQorCisgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVS
U0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5X3ZlcnNpb25faGFzaChzZWxmLCB2ZXJzaW9uKToK
KyAgICAgICAgYXNzZXJ0IGhhc2goTGVnYWN5VmVyc2lvbih2ZXJzaW9uKSkgPT0gaGFzaChMZWdh
Y3lWZXJzaW9uKHZlcnNpb24pKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJz
aW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5X3Zl
cnNpb25fcHVibGljKHNlbGYsIHZlcnNpb24pOgorICAgICAgICBhc3NlcnQgTGVnYWN5VmVyc2lv
bih2ZXJzaW9uKS5wdWJsaWMgPT0gdmVyc2lvbgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3Rf
bGVnYWN5X3ZlcnNpb25fYmFzZV92ZXJzaW9uKHNlbGYsIHZlcnNpb24pOgorICAgICAgICBhc3Nl
cnQgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKS5iYXNlX3ZlcnNpb24gPT0gdmVyc2lvbgorCisgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVS
U0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5X3ZlcnNpb25fZXBvY2goc2VsZiwgdmVyc2lvbik6
CisgICAgICAgIGFzc2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLmVwb2NoID09IC0xCisKKyAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FDWV9W
RVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9yZWxlYXNlKHNlbGYsIHZlcnNp
b24pOgorICAgICAgICBhc3NlcnQgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKS5yZWxlYXNlIGlzIE5v
bmUKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidmVyc2lvbiIsIFZFUlNJT05TICsg
TEVHQUNZX1ZFUlNJT05TKQorICAgIGRlZiB0ZXN0X2xlZ2FjeV92ZXJzaW9uX2xvY2FsKHNlbGYs
IHZlcnNpb24pOgorICAgICAgICBhc3NlcnQgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKS5sb2NhbCBp
cyBOb25lCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9O
UyArIExFR0FDWV9WRVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9wcmUoc2Vs
ZiwgdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLnByZSBp
cyBOb25lCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9O
UyArIExFR0FDWV9WRVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9pc19wcmVy
ZWxlYXNlKHNlbGYsIHZlcnNpb24pOgorICAgICAgICBhc3NlcnQgbm90IExlZ2FjeVZlcnNpb24o
dmVyc2lvbikuaXNfcHJlcmVsZWFzZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2
ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5
X3ZlcnNpb25fZGV2KHNlbGYsIHZlcnNpb24pOgorICAgICAgICBhc3NlcnQgTGVnYWN5VmVyc2lv
bih2ZXJzaW9uKS5kZXYgaXMgTm9uZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2
ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5
X3ZlcnNpb25faXNfZGV2cmVsZWFzZShzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgYXNzZXJ0IG5v
dCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLmlzX2RldnJlbGVhc2UKKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgidmVyc2lvbiIsIFZFUlNJT05TICsgTEVHQUNZX1ZFUlNJT05TKQorICAg
IGRlZiB0ZXN0X2xlZ2FjeV92ZXJzaW9uX3Bvc3Qoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFz
c2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLnBvc3QgaXMgTm9uZQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisg
ICAgZGVmIHRlc3RfbGVnYWN5X3ZlcnNpb25faXNfcG9zdHJlbGVhc2Uoc2VsZiwgdmVyc2lvbik6
CisgICAgICAgIGFzc2VydCBub3QgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKS5pc19wb3N0cmVsZWFz
ZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoImxlZnQiLCAicmln
aHQiLCAib3AiKSwKKyAgICAgICAgIyBCZWxvdyB3ZSdsbCBnZW5lcmF0ZSBldmVyeSBwb3NzaWJs
ZSBjb21iaW5hdGlvbiBvZgorICAgICAgICAjIFZFUlNJT05TICsgTEVHQUNZX1ZFUlNJT05TIHRo
YXQgc2hvdWxkIGJlIFRydWUgZm9yIHRoZSBnaXZlbiBvcGVyYXRvcgorICAgICAgICBpdGVydG9v
bHMuY2hhaW4oCisgICAgICAgICAgICAqCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBl
cXVhbCAoPT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAgICAgW1soeCwgeCwg
b3BlcmF0b3IuZXEpIGZvciB4IGluIFZFUlNJT05TICsgTEVHQUNZX1ZFUlNJT05TXV0KKyAgICAg
ICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIG5vdCBlcXVhbCAoIT0pIG9w
ZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgKHgsIHksIG9wZXJhdG9yLm5lKQorICAgICAgICAgICAgICAg
ICAgICBmb3IgaiwgeSBpbiBlbnVtZXJhdGUoVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisg
ICAgICAgICAgICAgICAgICAgIGlmIGkgIT0gagorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMp
CisgICAgICAgICAgICBdCisgICAgICAgICksCisgICAgKQorICAgIGRlZiB0ZXN0X2NvbXBhcmlz
b25fdHJ1ZShzZWxmLCBsZWZ0LCByaWdodCwgb3ApOgorICAgICAgICBhc3NlcnQgb3AoTGVnYWN5
VmVyc2lvbihsZWZ0KSwgTGVnYWN5VmVyc2lvbihyaWdodCkpCisKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoCisgICAgICAgICgibGVmdCIsICJyaWdodCIsICJvcCIpLAorICAgICAgICAj
IEJlbG93IHdlJ2xsIGdlbmVyYXRlIGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mCisgICAg
ICAgICMgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMgdGhhdCBzaG91bGQgYmUgRmFsc2UgZm9y
IHRoZSBnaXZlbgorICAgICAgICAjIG9wZXJhdG9yCisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigK
KyAgICAgICAgICAgICoKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkg
b3BlcmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAoeCwgeSwgb3BlcmF0b3IuZXEpCisgICAgICAgICAgICAg
ICAgICAgIGZvciBqLCB5IGluIGVudW1lcmF0ZShWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9OUykK
KyAgICAgICAgICAgICAgICAgICAgaWYgaSAhPSBqCisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9O
UykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5IHRo
YXQgdGhlIG5vdCBlcXVhbCAoIT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAg
ICAgW1soeCwgeCwgb3BlcmF0b3IubmUpIGZvciB4IGluIFZFUlNJT05TICsgTEVHQUNZX1ZFUlNJ
T05TXV0KKyAgICAgICAgKSwKKyAgICApCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbl9mYWxzZShz
ZWxmLCBsZWZ0LCByaWdodCwgb3ApOgorICAgICAgICBhc3NlcnQgbm90IG9wKExlZ2FjeVZlcnNp
b24obGVmdCksIExlZ2FjeVZlcnNpb24ocmlnaHQpKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJvcCIsIFsibHQiLCAibGUiLCAiZXEiLCAiZ2UiLCAiZ3QiLCAibmUiXSkKKyAgICBk
ZWYgdGVzdF9kdW5kZXJfb3BfcmV0dXJuc19ub3RpbXBsZW1lbnRlZChzZWxmLCBvcCk6CisgICAg
ICAgIG1ldGhvZCA9IGdldGF0dHIoTGVnYWN5VmVyc2lvbiwgIl9fezB9X18iLmZvcm1hdChvcCkp
CisgICAgICAgIGFzc2VydCBtZXRob2QoTGVnYWN5VmVyc2lvbigiMSIpLCAxKSBpcyBOb3RJbXBs
ZW1lbnRlZAorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgib3AiLCAiZXhwZWN0ZWQi
KSwgWygiZXEiLCBGYWxzZSksICgibmUiLCBUcnVlKV0pCisgICAgZGVmIHRlc3RfY29tcGFyZV9v
dGhlcihzZWxmLCBvcCwgZXhwZWN0ZWQpOgorICAgICAgICBvdGhlciA9IHByZXRlbmQuc3R1Yigq
KnsiX197MH1fXyIuZm9ybWF0KG9wKTogbGFtYmRhIG90aGVyOiBOb3RJbXBsZW1lbnRlZH0pCisK
KyAgICAgICAgYXNzZXJ0IGdldGF0dHIob3BlcmF0b3IsIG9wKShMZWdhY3lWZXJzaW9uKCIxIiks
IG90aGVyKSBpcyBleHBlY3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi8uZ2l0aWdub3Jl
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYXRobGliMi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZGI0NTYxZWFhMWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGli
Mi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNTQgQEAKKyMgQnl0ZS1jb21waWxlZCAvIG9wdGltaXpl
ZCAvIERMTCBmaWxlcworX19weWNhY2hlX18vCisqLnB5W2NvZF0KKworIyBDIGV4dGVuc2lvbnMK
Kyouc28KKworIyBEaXN0cmlidXRpb24gLyBwYWNrYWdpbmcKKy5QeXRob24KK2Vudi8KK2J1aWxk
LworZGV2ZWxvcC1lZ2dzLworZGlzdC8KK2Rvd25sb2Fkcy8KK2VnZ3MvCitsaWIvCitsaWI2NC8K
K3BhcnRzLworc2Rpc3QvCit2YXIvCisqLmVnZy1pbmZvLworLmluc3RhbGxlZC5jZmcKKyouZWdn
CisKKyMgUHlJbnN0YWxsZXIKKyMgIFVzdWFsbHkgdGhlc2UgZmlsZXMgYXJlIHdyaXR0ZW4gYnkg
YSBweXRob24gc2NyaXB0IGZyb20gYSB0ZW1wbGF0ZQorIyAgYmVmb3JlIFB5SW5zdGFsbGVyIGJ1
aWxkcyB0aGUgZXhlLCBzbyBhcyB0byBpbmplY3QgZGF0ZS9vdGhlciBpbmZvcyBpbnRvIGl0Lgor
Ki5tYW5pZmVzdAorKi5zcGVjCisKKyMgSW5zdGFsbGVyIGxvZ3MKK3BpcC1sb2cudHh0CitwaXAt
ZGVsZXRlLXRoaXMtZGlyZWN0b3J5LnR4dAorCisjIFVuaXQgdGVzdCAvIGNvdmVyYWdlIHJlcG9y
dHMKK2h0bWxjb3YvCisudG94LworLmNvdmVyYWdlCisuY2FjaGUKK25vc2V0ZXN0cy54bWwKK2Nv
dmVyYWdlLnhtbAorCisjIFRyYW5zbGF0aW9ucworKi5tbworKi5wb3QKKworIyBEamFuZ28gc3R1
ZmY6CisqLmxvZworCisjIFNwaGlueCBkb2N1bWVudGF0aW9uCitkb2NzL19idWlsZC8KKworIyBQ
eUJ1aWxkZXIKK3RhcmdldC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvLnRyYXZpcy55bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhdGhsaWIyLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMzE2Njc0MTIyMDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGli
Mi8udHJhdmlzLnltbApAQCAtMCwwICsxLDQ3IEBACitsYW5ndWFnZTogcHl0aG9uCitzdWRvOiBm
YWxzZQorbWF0cml4OgorICBpbmNsdWRlOgorICAgIC0gcHl0aG9uOiAiMy43IgorICAgICAgZGlz
dDogeGVuaWFsCisgICAgICBlbnY6IExDX0FMTD0iZW5fVVMudXRmLTgiCisgICAgLSBweXRob246
ICIzLjciCisgICAgICBkaXN0OiB4ZW5pYWwKKyAgICAgIGVudjogTENfQUxMPSJlbl9VUy5hc2Np
aSIKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAgIGRpc3Q6IHhlbmlhbAorICAgIC0gcHl0aG9u
OiAiMy41IgorICAgICAgZGlzdDogeGVuaWFsCisgICAgLSBweXRob246ICIzLjQiCisgICAgICBk
aXN0OiB4ZW5pYWwKKyAgICAtIHB5dGhvbjogIjIuNyIKKyAgICAgIGRpc3Q6IHhlbmlhbAorICAg
IC0gcHl0aG9uOiAiMi42IgorICAgICAgZGlzdDogdHJ1c3R5CisgICAgLSBweXRob246ICJweXB5
IgorICAgICAgZGlzdDogeGVuaWFsCisgICAgLSBweXRob246ICJweXB5MyIKKyAgICAgIGRpc3Q6
IHhlbmlhbAorICBhbGxvd19mYWlsdXJlczoKKyAgIyBweXB5IG9jY2FzaW9uYWxseSBoYXMgc29t
ZSBidWdzCisgIC0gcHl0aG9uOiAicHlweSIKKyAgLSBweXRob246ICJweXB5MyIKK2JyYW5jaGVz
OgorICBvbmx5OgorICAgIC0gZGV2ZWxvcAoraW5zdGFsbDoKKyAgLSAicHl0aG9uIC1jIFwiaW1w
b3J0IHN5czsgcHJpbnQoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKVwiIgorICAtICJwaXAg
aW5zdGFsbCAtLXVwZ3JhZGUgc2V0dXB0b29scyIKKyAgLSAicGlwIGluc3RhbGwgLS11cGdyYWRl
IHB5dGVzdCIKKyAgLSAicGlwIGluc3RhbGwgcHl0ZXN0LWNvdiIKKyAgLSAicGlwIGluc3RhbGwg
LXIgcmVxdWlyZW1lbnRzLnR4dCIKKyAgLSAiaWYgW1sgJFRSQVZJU19QWVRIT05fVkVSU0lPTiA9
PSAnMi42JyBdXTsgdGhlbiBwaXAgaW5zdGFsbCB1bml0dGVzdDI7IGZpIgorICAtICJpZiBbWyAk
VFJBVklTX1BZVEhPTl9WRVJTSU9OID09ICczLjcnIF1dOyB0aGVuIHBpcCBpbnN0YWxsIGNoZWNr
LW1hbmlmZXN0IGZsYWtlODsgZmkiCisgIC0gInBpcCBpbnN0YWxsIC4iCitzY3JpcHQ6CisgIC0g
ImlmIFtbICRUUkFWSVNfUFlUSE9OX1ZFUlNJT04gPT0gJzMuNycgXV07IHRoZW4gY2hlY2stbWFu
aWZlc3Q7IGZpIgorICAtICJpZiBbWyAkVFJBVklTX1BZVEhPTl9WRVJTSU9OID09ICczLjcnIF1d
OyB0aGVuIGZsYWtlODsgZmkiCisgIC0gY2QgdGVzdHMKKyAgLSAicHl0ZXN0IC0tY292LXJlcG9y
dD14bWwgLS1jb3Y9cGF0aGxpYjIgLiIKK2FmdGVyX3N1Y2Nlc3M6CisgIC0gYmFzaCA8KGN1cmwg
LXMgaHR0cHM6Ly9jb2RlY292LmlvL2Jhc2gpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL0NI
QU5HRUxPRy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL0NIQU5HRUxPRy5yc3QKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NjdjMWIzOGU5YmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhdGhsaWIyL0NIQU5HRUxPRy5yc3QKQEAgLTAsMCArMSwxNjMgQEAKK0hpc3RvcnkK
Ky0tLS0tLS0KKworVmVyc2lvbiAyLjMuNQorXl5eXl5eXl5eXl5eXgorCistIEZhbGwgYmFjayB0
byBhc2NpaSB3aGVuIGdldGZpbGVzeXN0ZW1lbmNvZGluZyByZXR1cm5zIE5vbmUgKHNlZQorICBp
c3N1ZSAjNTkpLgorCitWZXJzaW9uIDIuMy40CiteXl5eXl5eXl5eXl5eCisKKy0gRG8gbm90IHJh
aXNlIHdpbmRvd3MgZXJyb3Igd2hlbiBjYWxsaW5nIHJlc29sdmUgb24gYSBub24tZXhpc3RpbmcK
KyAgcGF0aCBpbiBQeXRob24gMi43LCB0byBtYXRjaCBiZWhhdmlvdXIgb24gUHl0aG9uIDMueCAo
c2VlIGlzc3VlICM1NCkuCisKKy0gVXNlIHRoZSBuZXcgY29sbGVjdGlvbnMuYWJjIHdoZW4gcG9z
c2libGUgKHNlZSBpc3N1ZSAjNTMpLgorCistIFN5bmMgd2l0aCB1cHN0cmVhbSBwYXRobGliIChz
ZWUgaXNzdWVzICM0NyBhbmQgIzUxKS4KKworVmVyc2lvbiAyLjMuMworXl5eXl5eXl5eXl5eXgor
CistIEJyaW5nIGJhY2sgb2xkIGRlcHJlY2F0ZWQgZGVwZW5kZW5jeSBzeW50YXggdG8gZW5zdXJl
IGNvbXBhdGliaWxpdHkKKyAgd2l0aCBvbGRlciBzeXN0ZW1zIChzZWUgaXNzdWUgIzQ2KS4KKwor
LSBEcm9wIFB5dGhvbiAzLjMgc3VwcG9ydCwgYXMgc2NhbmRpciBubyBsb25nZXIgc3VwcG9ydHMg
aXQuCisKKy0gQWRkIFB5dGhvbiAzLjcgc3VwcG9ydC4KKworVmVyc2lvbiAyLjMuMgorXl5eXl5e
Xl5eXl5eXgorCistIEhvdGZpeCBmb3IgYnJva2VuIHNldHVwLnB5LgorCitWZXJzaW9uIDIuMy4x
CiteXl5eXl5eXl5eXl5eCisKKy0gRml4IHRlc3RzIGZvciBzeXN0ZW1zIHdoZXJlIGZpbGVzeXN0
ZW0gZW5jb2Rpbmcgb25seSBzdXBwb3J0cyBhc2NpaQorICAocmVwb3J0ZWQgYnkgeXVyaXZpY3Qs
IGZpeGVkIHdpdGggaGVscCBvZiBob25uaWJhbCwgc2VlIGlzc3VlICMzMCkuCisKKy0gVXNlIG1v
ZGVybiBzZXR1cHRvb2xzIHN5bnRheCBmb3Igc3BlY2lmeWluZyBjb25kaXRpb25hbCBzY2FuZGly
CisgIGRlcGVuZGVuY3kgKHNlZSBpc3N1ZSAjMzEpLgorCistIFJlbW92ZSBsZWdhY3kgdXNlIG9m
IHN1cHBvcnQgbW9kdWxlIGZyb20gb2xkIHBhdGhsaWIgbW9kdWxlIChzZWUKKyAgaXNzdWUgIzM5
KS4gVGhpcyBmaXhlcyB0aGUgdGVzdHMgZm9yIFB5dGhvbiAzLjYuCisKKy0gRHJvcCB0aGUgImZy
b20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscyIgYW5kIC1RbmV3IHRlc3RzCisg
IGFzIGl0IGludHJvZHVjZWQgc3VidGxlIGJ1Z3MgaW4gdGhlIHRlc3RzLCBhbmQgbWFpbnRhaW5p
bmcgc2VwYXJhdGUKKyAgdGVzdCBtb2R1bGVzIGZvciB0aGVzZSBsZWdhY3kgZmVhdHVyZXMgc2Vl
bXMgbm90IHdvcnRoIHRoZSBlZmZvcnQuCisKKy0gRHJvcCBQeXRob24gMy4yIHN1cHBvcnQsIGFz
IHNjYW5kaXIgbm8gbG9uZ2VyIHN1cHBvcnRzIGl0LgorCitWZXJzaW9uIDIuMy4wCiteXl5eXl5e
Xl5eXl5eCisKKy0gU3luYyB3aXRoIHVwc3RyZWFtIHBhdGhsaWIgZnJvbSBDUHl0aG9uIDMuNi4x
ICg3ZDEwMTdkKS4KKworVmVyc2lvbiAyLjIuMQorXl5eXl5eXl5eXl5eXgorCistIEZpeCBjb25k
aXRpb25hbCBzY2FuZGlyIGRlcGVuZGVuY3kgaW4gd2hlZWwgKHJlcG9ydGVkIGJ5IEF2ZE4sIHNl
ZQorICBpc3N1ZSAjMjAgYW5kIHB1bGwgcmVxdWVzdCAjMjEpLgorCitWZXJzaW9uIDIuMi4wCite
Xl5eXl5eXl5eXl5eCisKKy0gU3luYyB3aXRoIHVwc3RyZWFtIHBhdGhsaWIgZnJvbSBDUHl0aG9u
IDMuNS4yIGFuZCAzLjYuMDogZml4IHZhcmlvdXMKKyAgZXhjZXB0aW9ucywgZW1wdHkgZ2xvYiBw
YXR0ZXJuLCBzY2FuZGlyLCBfX2ZzcGF0aF9fLgorCistIFN1cHBvcnQgdW5pY29kZSBzdHJpbmdz
IHRvIGJlIHVzZWQgdG8gY29uc3RydWN0IHBhdGhzIGluIFB5dGhvbiAyCisgIChyZXBvcnRlZCBi
eSBuYXRpdmUtYXBpLCBzZWUgaXNzdWUgIzEzIGFuZCBwdWxsIHJlcXVlc3QgIzE1KS4KKworVmVy
c2lvbiAyLjEuMAorXl5eXl5eXl5eXl5eXgorCistIFN5bmMgd2l0aCB1cHN0cmVhbSBwYXRobGli
IGZyb20gQ1B5dGhvbiAzLjUuMDogZ2V0aG9tZWRpciwgaG9tZSwKKyAgZXhwYW5kdXNlci4KKwor
VmVyc2lvbiAyLjAuMQorXl5eXl5eXl5eXl5eXgorCistIEZpeCBUeXBlRXJyb3IgZXhjZXB0aW9u
cyBpbiB3cml0ZV9ieXRlcyBhbmQgd3JpdGVfdGV4dCAoY29udHJpYnV0ZWQKKyAgYnkgRW1hbnVl
bGUgR2FpZmFzLCBzZWUgcHVsbCByZXF1ZXN0ICMyKS4KKworVmVyc2lvbiAyLjAKK15eXl5eXl5e
Xl5eCisKKy0gU3luYyB3aXRoIHVwc3RyZWFtIHBhdGhsaWIgZnJvbSBDUHl0aG9uOiByZWFkX3Rl
eHQsIHdyaXRlX3RleHQsCisgIHJlYWRfYnl0ZXMsIHdyaXRlX2J5dGVzLCBfX2VudGVyX18sIF9f
ZXhpdF9fLCBzYW1lZmlsZS4KKy0gVXNlIHRyYXZpcyBhbmQgYXBwdmV5b3IgZm9yIGNvbnRpbnVv
dXMgaW50ZWdyYXRpb24uCistIEZpeGVkIHNvbWUgYnVncyBpbiB0ZXN0IGNvZGUuCisKK1ZlcnNp
b24gMS4wLjEKK15eXl5eXl5eXl5eXl4KKworLSBQdWxsIHJlcXVlc3QgIzQ6IFB5dGhvbiAyLjYg
Y29tcGF0aWJpbGl0eSBieSBlZXZlZS4KKworVmVyc2lvbiAxLjAKK15eXl5eXl5eXl5eCisKK1Ro
aXMgdmVyc2lvbiBicmluZ3MgYGBwYXRobGliYGAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBvZmZpY2lh
bCBQeXRob24gMy40CityZWxlYXNlLCBhbmQgYWxzbyBmaXhlcyBhIGNvdXBsZSBvZiAyLjctc3Bl
Y2lmaWMgaXNzdWVzLgorCistIFB5dGhvbiBpc3N1ZSAjMjA3NjU6IEFkZCBtaXNzaW5nIGRvY3Vt
ZW50YXRpb24gZm9yIFB1cmVQYXRoLndpdGhfbmFtZSgpCisgIGFuZCBQdXJlUGF0aC53aXRoX3N1
ZmZpeCgpLgorLSBGaXggdGVzdF9ta2Rpcl9wYXJlbnRzIHdoZW4gdGhlIHdvcmtpbmcgZGlyZWN0
b3J5IGhhcyBhZGRpdGlvbmFsIGJpdHMKKyAgc2V0IChzdWNoIGFzIHRoZSBzZXRnaWQgb3Igc3Rp
Y2t5IGJpdHMpLgorLSBQeXRob24gaXNzdWUgIzIwMTExOiBwYXRobGliLlBhdGgud2l0aF9zdWZm
aXgoKSBub3cgc2FuaXR5IGNoZWNrcyB0aGUKKyAgZ2l2ZW4gc3VmZml4LgorLSBQeXRob24gaXNz
dWUgIzE5OTE4OiBGaXggUHVyZVBhdGgucmVsYXRpdmVfdG8oKSB1bmRlciBXaW5kb3dzLgorLSBQ
eXRob24gaXNzdWUgIzE5OTIxOiBXaGVuIFBhdGgubWtkaXIoKSBpcyBjYWxsZWQgd2l0aCBwYXJl
bnRzPVRydWUsIGFueQorICBtaXNzaW5nIHBhcmVudCBpcyBjcmVhdGVkIHdpdGggdGhlIGRlZmF1
bHQgcGVybWlzc2lvbnMsIGlnbm9yaW5nIHRoZSBtb2RlCisgIGFyZ3VtZW50IChtaW1pY2tpbmcg
dGhlIFBPU0lYICJta2RpciAtcCIgY29tbWFuZCkuCistIFB5dGhvbiBpc3N1ZSAjMTk4ODc6IElt
cHJvdmUgdGhlIFBhdGgucmVzb2x2ZSgpIGFsZ29yaXRobSB0byBzdXBwb3J0CisgIGNlcnRhaW4g
c3ltbGluayBjaGFpbnMuCistIE1ha2UgcGF0aGxpYiB1c2FibGUgdW5kZXIgUHl0aG9uIDIuNyB3
aXRoIHVuaWNvZGUgcGF0aG5hbWVzIChvbmx5IHB1cmUKKyAgQVNDSUksIHRob3VnaCkuCistIElz
c3VlICMyMTogZml4IFR5cGVFcnJvciB1bmRlciBQeXRob24gMi43IHdoZW4gdXNpbmcgbmV3IGRp
dmlzaW9uLgorLSBBZGQgdG94IHN1cHBvcnQgZm9yIGVhc2llciB0ZXN0aW5nLgorCitWZXJzaW9u
IDAuOTcKK15eXl5eXl5eXl5eXgorCitUaGlzIHZlcnNpb24gYnJpbmdzIGBgcGF0aGxpYmBgIHVw
IHRvIGRhdGUgd2l0aCB0aGUgZmluYWwgQVBJIHNwZWNpZmllZAoraW4gOnBlcDpgNDI4YC4gIFRo
ZSBjaGFuZ2VzIGFyZSB0b28gbG9uZyB0byBsaXN0IGhlcmUsIGl0IGlzIHJlY29tbWVuZGVkCit0
byByZWFkIHRoZSBgZG9jdW1lbnRhdGlvbiA8aHR0cHM6Ly9wYXRobGliLnJlYWR0aGVkb2NzLm9y
Zy8+YF8uCisKKy4uIHdhcm5pbmc6OgorICAgVGhlIEFQSSBpbiB0aGlzIHZlcnNpb24gaXMgcGFy
dGlhbGx5IGluY29tcGF0aWJsZSB3aXRoIHBhdGhsaWIgMC44IGFuZAorICAgZWFybGllci4gIEJl
IHN1cmUgdG8gY2hlY2sgeW91ciBjb2RlIGZvciBwb3NzaWJsZSBicmVha2FnZSEKKworVmVyc2lv
biAwLjgKK15eXl5eXl5eXl5eCisKKy0gQWRkIFB1cmVQYXRoLm5hbWUgYW5kIFB1cmVQYXRoLmFu
Y2hvci4KKy0gQWRkIFBhdGgub3duZXIgYW5kIFBhdGguZ3JvdXAuCistIEFkZCBQYXRoLnJlcGxh
Y2UoKS4KKy0gQWRkIFBhdGguYXNfdXJpKCkuCistIElzc3VlICMxMDogd2hlbiBjcmVhdGluZyBh
IGZpbGUgd2l0aCBQYXRoLm9wZW4oKSwgZG9uJ3Qgc2V0IHRoZSBleGVjdXRhYmxlCisgIGJpdC4K
Ky0gSXNzdWUgIzExOiBmaXggY29tcGFyaXNvbnMgd2l0aCBub24tUGF0aCBvYmplY3RzLgorCitW
ZXJzaW9uIDAuNworXl5eXl5eXl5eXl4KKworLSBBZGQgJyoqJyAocmVjdXJzaXZlKSBwYXR0ZXJu
cyB0byBQYXRoLmdsb2IoKS4KKy0gRml4IG9wZW5hdCgpIHN1cHBvcnQgYWZ0ZXIgdGhlIEFQSSBy
ZWZhY3RvcmluZyBpbiBQeXRob24gMy4zIGJldGExLgorLSBBZGQgYSAqdGFyZ2V0X2lzX2RpcmVj
dG9yeSogYXJndW1lbnQgdG8gUGF0aC5zeW1saW5rX3RvKCkKKworVmVyc2lvbiAwLjYKK15eXl5e
Xl5eXl5eCisKKy0gQWRkIFBhdGguaXNfZmlsZSgpIGFuZCBQYXRoLmlzX3N5bWxpbmsoKQorLSBB
ZGQgUGF0aC5nbG9iKCkgYW5kIFBhdGgucmdsb2IoKQorLSBBZGQgUHVyZVBhdGgubWF0Y2goKQor
CitWZXJzaW9uIDAuNQorXl5eXl5eXl5eXl4KKworLSBBZGQgUGF0aC5ta2RpcigpLgorLSBBZGQg
UHl0aG9uIDIuNyBjb21wYXRpYmlsaXR5IGJ5IE1pY2hlbGUgTGFjY2hpYS4KKy0gTWFrZSBwYXJl
bnQoKSByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiB0aGUg
cGF0aAorICBsZW5ndGguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL0xJQ0VOU0UucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYXRobGliMi9MSUNFTlNFLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjE3MTVkM2Q3YTJjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIv
TElDRU5TRS5yc3QKQEAgLTAsMCArMSwyMyBAQAorVGhlIE1JVCBMaWNlbnNlIChNSVQpCisKK0Nv
cHlyaWdodCAoYykgMjAxNC0yMDE3IE1hdHRoaWFzIEMuIE0uIFRyb2ZmYWVzCitDb3B5cmlnaHQg
KGMpIDIwMTItMjAxNCBBbnRvaW5lIFBpdHJvdSBhbmQgY29udHJpYnV0b3JzCisKK1Blcm1pc3Np
b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp
bmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAor
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKK1NPRlRX
QVJFLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL01BTklGRVNULmluIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRo
bGliMi9NQU5JRkVTVC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjJmMDMzNjlkYzY4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvTUFOSUZFU1Qu
aW4KQEAgLTAsMCArMSwxMCBAQAoraW5jbHVkZSAqLnB5CityZWN1cnNpdmUtaW5jbHVkZSBwYXRo
bGliMiAqLnB5CityZWN1cnNpdmUtaW5jbHVkZSB0ZXN0cyAqLnB5CitpbmNsdWRlICoucnN0Citp
bmNsdWRlIFZFUlNJT04KK2luY2x1ZGUgcmVxdWlyZW1lbnRzLnR4dAorZXhjbHVkZSAudHJhdmlz
LnltbAorZXhjbHVkZSBhcHB2ZXlvci55bWwKK2V4Y2x1ZGUgY29kZWNvdi55bWwKK3BydW5lIGFw
cHZleW9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhs
aWIyL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42
Mzc4ZjI4NGRkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL1JFQURNRS5yc3QK
QEAgLTAsMCArMSw2NiBAQAorcGF0aGxpYjIKKz09PT09PT09CisKK3xhcHB2ZXlvcnwgfHRyYXZp
c3wgfGNvZGVjb3Z8CisKK0Zvcmsgb2YgcGF0aGxpYiBhaW1pbmcgdG8gc3VwcG9ydCB0aGUgZnVs
bCBzdGRsaWIgUHl0aG9uIEFQSS4KKworVGhlIGBvbGQgcGF0aGxpYiA8aHR0cHM6Ly9iaXRidWNr
ZXQub3JnL3BpdHJvdS9wYXRobGliPmBfCittb2R1bGUgb24gYml0YnVja2V0IGlzIGluIGJ1Z2Zp
eC1vbmx5IG1vZGUuCitUaGUgZ29hbCBvZiBwYXRobGliMiBpcyB0byBwcm92aWRlIGEgYmFja3Bv
cnQgb2YKK2BzdGFuZGFyZCBwYXRobGliIDxodHRwOi8vZG9jcy5weXRob24ub3JnL2Rldi9saWJy
YXJ5L3BhdGhsaWIuaHRtbD5gXworbW9kdWxlIHdoaWNoIHRyYWNrcyB0aGUgc3RhbmRhcmQgbGli
cmFyeSBtb2R1bGUsCitzbyBhbGwgdGhlIG5ld2VzdCBmZWF0dXJlcyBvZiB0aGUgc3RhbmRhcmQg
cGF0aGxpYiBjYW4gYmUKK3VzZWQgYWxzbyBvbiBvbGRlciBQeXRob24gdmVyc2lvbnMuCisKK0Rv
d25sb2FkCistLS0tLS0tLQorCitTdGFuZGFsb25lIHJlbGVhc2VzIGFyZSBhdmFpbGFibGUgb24g
UHlQSToKK2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wYXRobGliMi8KKworRGV2ZWxvcG1l
bnQKKy0tLS0tLS0tLS0tCisKK1RoZSBtYWluIGRldmVsb3BtZW50IHRha2VzIHBsYWNlIGluIHRo
ZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeTogc2VlCit0aGUgYFB5dGhvbiBkZXZlbG9wZXIncyBn
dWlkZSA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8+YF8uCitJbiBwYXJ0aWN1bGFy
LCBuZXcgZmVhdHVyZXMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byB0aGUKK2BQeXRob24gYnVnIHRy
YWNrZXIgPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvPmBfLgorCitJc3N1ZXMgdGhhdCBvY2N1ciBp
biB0aGlzIGJhY2twb3J0LCBidXQgdGhhdCBkbyBub3Qgb2NjdXIgbm90IGluIHRoZQorc3RhbmRh
cmQgUHl0aG9uIHBhdGhsaWIgbW9kdWxlIGNhbiBiZSBzdWJtaXR0ZWQgb24KK3RoZSBgcGF0aGxp
YjIgYnVnIHRyYWNrZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9tY210cm9mZmFlcy9wYXRobGliMi9p
c3N1ZXM+YF8uCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworUmVmZXIgdG8gdGhl
Citgc3RhbmRhcmQgcGF0aGxpYiA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXYvbGlicmFyeS9w
YXRobGliLmh0bWw+YF8KK2RvY3VtZW50YXRpb24uCisKK0tub3duIElzc3VlcworLS0tLS0tLS0t
LS0tCisKK0ZvciBoaXN0b3JpYyByZWFzb25zLCBwYXRobGliMiBzdGlsbCB1c2VzIGJ5dGVzIHRv
IHJlcHJlc2VudCBmaWxlIHBhdGhzIGludGVybmFsbHkuCitVbmZvcnR1bmF0ZWx5LCBvbiBXaW5k
b3dzIHdpdGggUHl0aG9uIDIuNywgdGhlIGZpbGUgc3lzdGVtIGVuY29kZXIgKGBgbWNic2BgKQor
aGFzIG9ubHkgcG9vciBzdXBwb3J0IGZvciBub24tYXNjaWkgY2hhcmFjdGVycywKK2FuZCBjYW4g
c2lsZW50bHkgcmVwbGFjZSBub24tYXNjaWkgY2hhcmFjdGVycyB3aXRob3V0IHdhcm5pbmcuCitG
b3IgZXhhbXBsZSwgYGB1J9GC0LXRgdGCJy5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGlu
ZygpKWBgIHJlc3VsdHMgaW4gYGA/Pz8/YGAKK3doaWNoIGlzIG9idmlvdXNseSBjb21wbGV0ZWx5
IHVzZWxlc3MuCisKK1RoZXJlZm9yZSwgb24gV2luZG93cyB3aXRoIFB5dGhvbiAyLjcsIHVudGls
IHRoaXMgcHJvYmxlbSBpcyBmaXhlZCB1cHN0cmVhbSwKK3VuZm9ydHVuYXRlbHkgeW91IGNhbm5v
dCByZWx5IG9uIHBhdGhsaWIyIHRvIHN1cHBvcnQgdGhlIGZ1bGwgdW5pY29kZSByYW5nZSBmb3Ig
ZmlsZW5hbWVzLgorU2VlIGBpc3N1ZSAjNTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9tY210cm9mZmFl
cy9wYXRobGliMi9pc3N1ZXMvNTY+YF8gZm9yIG1vcmUgZGV0YWlscy4KKworLi4gfHRyYXZpc3wg
aW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvbWNtdHJvZmZhZXMvcGF0aGxpYjIucG5nP2Jy
YW5jaD1kZXZlbG9wCisgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL21jbXRyb2Zm
YWVzL3BhdGhsaWIyCisgICAgOmFsdDogdHJhdmlzLWNpCisKKy4uIHxhcHB2ZXlvcnwgaW1hZ2U6
OiBodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2JhZGR4M3JwZXQy
d3lpMmM/c3ZnPXRydWUKKyAgICA6dGFyZ2V0OiBodHRwczovL2NpLmFwcHZleW9yLmNvbS9wcm9q
ZWN0L21jbXRyb2ZmYWVzL3BhdGhsaWIyCisgICAgOmFsdDogYXBwdmV5b3IKKworLi4gfGNvZGVj
b3Z8IGltYWdlOjogaHR0cHM6Ly9jb2RlY292LmlvL2doL21jbXRyb2ZmYWVzL3BhdGhsaWIyL2Jy
YW5jaC9kZXZlbG9wL2dyYXBoL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNv
di5pby9naC9tY210cm9mZmFlcy9wYXRobGliMgorICAgIDphbHQ6IGNvZGVjb3YKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYXRobGliMi9WRVJTSU9OIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9WRVJTSU9OCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2M2YzlhNDkxZTBiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9WRVJTSU9OCkBAIC0wLDAgKzEgQEAKKzIuMy41CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL2FwcHZleW9yLnltbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvYXBw
dmV5b3IueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWFlN2Yy
NWYzNGY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9hcHB2ZXlvci55bWwKQEAg
LTAsMCArMSwzMCBAQAorZW52aXJvbm1lbnQ6CisKKyAgbWF0cml4OgorICAgIC0gUFlUSE9OOiAi
QzpcXFB5dGhvbjI3IgorCisgICAgLSBQWVRIT046ICJDOlxcUHl0aG9uMzQiCisKKyAgICAtIFBZ
VEhPTjogIkM6XFxQeXRob24zNSIKKworICAgIC0gUFlUSE9OOiAiQzpcXFB5dGhvbjM2IgorCisg
ICAgLSBQWVRIT046ICJDOlxcUHl0aG9uMzciCisKK2luaXQ6CisgIC0gIiVQWVRIT04lL3B5dGhv
biAtLXZlcnNpb24iCisKK2luc3RhbGw6CisgIC0gInBvd2Vyc2hlbGwgYXBwdmV5b3JcXGluc3Rh
bGwucHMxIgorCitidWlsZDogb2ZmCisKK3Rlc3Rfc2NyaXB0OgorICAtIGNkIHRlc3RzCisgIC0g
IiVQWVRIT04lL1NjcmlwdHMvcHkudGVzdCAtLWNvdi1yZXBvcnQ9eG1sIC0tY292PXBhdGhsaWIy
IC4iCisKK2FmdGVyX3Rlc3Q6CisgIC0gcHM6IHwKKyAgICAgICRlbnY6UEFUSCA9ICdDOlxtc3lz
NjRcdXNyXGJpbjsnICsgJGVudjpQQVRICisgICAgICBJbnZva2UtV2ViUmVxdWVzdCAtVXJpICdo
dHRwczovL2NvZGVjb3YuaW8vYmFzaCcgLU91dEZpbGUgY29kZWNvdi5zaAorICAgICAgYmFzaCBj
b2RlY292LnNoIC1mICJjb3ZlcmFnZS54bWwiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL2Fw
cHZleW9yL2luc3RhbGwucHMxIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9hcHB2ZXlvci9pbnN0YWxsLnBzMQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmViZmJiOGRiOTYxOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvYXBwdmV5b3IvaW5zdGFsbC5wczEKQEAgLTAs
MCArMSw0NCBAQAorIyBTYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgUHl0aG9uIGFuZCBwaXAgdW5k
ZXIgV2luZG93cworIyBBdXRob3JzOiBPbGl2aWVyIEdyaXNlbCBhbmQgS3lsZSBLYXN0bmVyCisj
IExpY2Vuc2U6IENDMCAxLjAgVW5pdmVyc2FsOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvCisKKyRHRVRfUElQX1VSTCA9ICJodHRwczovL2Jvb3RzdHJh
cC5weXBhLmlvL2dldC1waXAucHkiCiskR0VUX1BJUF9QQVRIID0gIkM6XGdldC1waXAucHkiCisK
KworZnVuY3Rpb24gSW5zdGFsbFBpcCAoJHB5dGhvbl9ob21lKSB7CisgICAgJHBpcF9wYXRoID0g
JHB5dGhvbl9ob21lICsgIi9TY3JpcHRzL3BpcC5leGUiCisgICAgJHB5dGhvbl9wYXRoID0gJHB5
dGhvbl9ob21lICsgIi9weXRob24uZXhlIgorICAgIGlmICgtbm90KFRlc3QtUGF0aCAkcGlwX3Bh
dGgpKSB7CisgICAgICAgIFdyaXRlLUhvc3QgIkluc3RhbGxpbmcgcGlwLi4uIgorICAgICAgICAk
d2ViY2xpZW50ID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudAorICAgICAgICAkd2Vi
Y2xpZW50LkRvd25sb2FkRmlsZSgkR0VUX1BJUF9VUkwsICRHRVRfUElQX1BBVEgpCisgICAgICAg
IFdyaXRlLUhvc3QgIkV4ZWN1dGluZzoiICRweXRob25fcGF0aCAkR0VUX1BJUF9QQVRICisgICAg
ICAgIFN0YXJ0LVByb2Nlc3MgLUZpbGVQYXRoICIkcHl0aG9uX3BhdGgiIC1Bcmd1bWVudExpc3Qg
IiRHRVRfUElQX1BBVEgiIC1XYWl0IC1QYXNzdGhydQorICAgIH0gZWxzZSB7CisgICAgICAgIFdy
aXRlLUhvc3QgIlVwZ3JhZGluZyBwaXAuLi4iCisgICAgICAgICYgJHB5dGhvbl9wYXRoIC1tIHBp
cCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKKyAgICB9CisgICAgV3JpdGUtSG9zdCAiVXBncmFkaW5n
IHNldHVwdG9vbHMuLi4iCisgICAgJiAkcHl0aG9uX3BhdGggLW0gcGlwIGluc3RhbGwgLS11cGdy
YWRlIHNldHVwdG9vbHMKK30KKworZnVuY3Rpb24gSW5zdGFsbFBhY2thZ2UgKCRweXRob25faG9t
ZSwgJHBrZykgeworICAgICRwaXBfcGF0aCA9ICRweXRob25faG9tZSArICIvU2NyaXB0cy9waXAu
ZXhlIgorICAgICYgJHBpcF9wYXRoIGluc3RhbGwgJHBrZworfQorCitmdW5jdGlvbiBJbnN0YWxs
UmVxdWlyZW1lbnRzICgkcHl0aG9uX2hvbWUsICRyZXFzKSB7CisgICAgJHBpcF9wYXRoID0gJHB5
dGhvbl9ob21lICsgIi9TY3JpcHRzL3BpcC5leGUiCisgICAgJiAkcGlwX3BhdGggaW5zdGFsbCAt
ciAkcmVxcworfQorCitmdW5jdGlvbiBtYWluICgpIHsKKyAgICBJbnN0YWxsUGlwICRlbnY6UFlU
SE9OCisgICAgSW5zdGFsbFJlcXVpcmVtZW50cyAkZW52OlBZVEhPTiAtciByZXF1aXJlbWVudHMu
dHh0CisgICAgSW5zdGFsbFBhY2thZ2UgJGVudjpQWVRIT04gcHl0ZXN0LWNvdgorICAgIEluc3Rh
bGxQYWNrYWdlICRlbnY6UFlUSE9OIHVuaXR0ZXN0MgorICAgIEluc3RhbGxQYWNrYWdlICRlbnY6
UFlUSE9OIC4KK30KKworbWFpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9jb2RlY292Lnlt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGF0aGxpYjIvY29kZWNvdi55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5kYjI0NzIwMDljNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhs
aWIyL2NvZGVjb3YueW1sCkBAIC0wLDAgKzEgQEAKK2NvbW1lbnQ6IG9mZgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYXRobGliMi9wYXRobGliMi9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvcGF0aGxp
YjIvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
NWE0N2E2NmM2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3BhdGhsaWIyL19f
aW5pdF9fLnB5CkBAIC0wLDAgKzEsMTgwOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNyBN
YXR0aGlhcyBDLiBNLiBUcm9mZmFlcworIyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBBbnRvaW5l
IFBpdHJvdSBhbmQgY29udHJpYnV0b3JzCisjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgTUlUIExpY2Vuc2UuCisKK2ltcG9ydCBjdHlwZXMKK2ltcG9ydCBmbm1hdGNoCitpbXBv
cnQgZnVuY3Rvb2xzCitpbXBvcnQgaW8KK2ltcG9ydCBudHBhdGgKK2ltcG9ydCBvcworaW1wb3J0
IHBvc2l4cGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc2l4CitpbXBvcnQgc3lzCisKK2Zyb20gZXJy
bm8gaW1wb3J0IEVJTlZBTCwgRU5PRU5ULCBFTk9URElSLCBFQkFERgorZnJvbSBlcnJubyBpbXBv
cnQgRUVYSVNULCBFUEVSTSwgRUFDQ0VTCitmcm9tIG9wZXJhdG9yIGltcG9ydCBhdHRyZ2V0dGVy
Citmcm9tIHN0YXQgaW1wb3J0ICgKKyAgICBTX0lTRElSLCBTX0lTTE5LLCBTX0lTUkVHLCBTX0lT
U09DSywgU19JU0JMSywgU19JU0NIUiwgU19JU0ZJRk8pCisKK3RyeToKKyAgICBmcm9tIGNvbGxl
Y3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9t
IGNvbGxlY3Rpb25zIGltcG9ydCBTZXF1ZW5jZQorCit0cnk6CisgICAgZnJvbSB1cmxsaWIgaW1w
b3J0IHF1b3RlIGFzIHVybHF1b3RlX2Zyb21fYnl0ZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAg
ICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGVfZnJvbV9ieXRlcyBhcyB1cmxxdW90ZV9m
cm9tX2J5dGVzCisKKwordHJ5OgorICAgIGludGVybiA9IGludGVybgorZXhjZXB0IE5hbWVFcnJv
cjoKKyAgICBpbnRlcm4gPSBzeXMuaW50ZXJuCisKK3N1cHBvcnRzX3N5bWxpbmtzID0gVHJ1ZQor
aWYgb3MubmFtZSA9PSAnbnQnOgorICAgIGltcG9ydCBudAorICAgIGlmIHN5cy5nZXR3aW5kb3dz
dmVyc2lvbigpWzoyXSA+PSAoNiwgMCkgYW5kIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDIpOgor
ICAgICAgICBmcm9tIG50IGltcG9ydCBfZ2V0ZmluYWxwYXRobmFtZQorICAgIGVsc2U6CisgICAg
ICAgIHN1cHBvcnRzX3N5bWxpbmtzID0gRmFsc2UKKyAgICAgICAgX2dldGZpbmFscGF0aG5hbWUg
PSBOb25lCitlbHNlOgorICAgIG50ID0gTm9uZQorCit0cnk6CisgICAgZnJvbSBvcyBpbXBvcnQg
c2NhbmRpciBhcyBvc19zY2FuZGlyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBzY2Fu
ZGlyIGltcG9ydCBzY2FuZGlyIGFzIG9zX3NjYW5kaXIKKworX19hbGxfXyA9IFsKKyAgICAiUHVy
ZVBhdGgiLCAiUHVyZVBvc2l4UGF0aCIsICJQdXJlV2luZG93c1BhdGgiLAorICAgICJQYXRoIiwg
IlBvc2l4UGF0aCIsICJXaW5kb3dzUGF0aCIsCisgICAgXQorCisjCisjIEludGVybmFscworIwor
CisjIEVCQURGIC0gZ3VhcmQgYWdhaW5zIG1hY09TIGBzdGF0YCB0aHJvd2luZyBFQkFERgorX0lH
Tk9SRURfRVJST1MgPSAoRU5PRU5ULCBFTk9URElSLCBFQkFERikKKworX0lHTk9SRURfV0lORVJS
T1JTID0gKAorICAgIDIxLCAgIyBFUlJPUl9OT1RfUkVBRFkgLSBkcml2ZSBleGlzdHMgYnV0IGlz
IG5vdCBhY2Nlc3NpYmxlCispCisKKworZGVmIF9pZ25vcmVfZXJyb3IoZXhjZXB0aW9uKToKKyAg
ICByZXR1cm4gKGdldGF0dHIoZXhjZXB0aW9uLCAnZXJybm8nLCBOb25lKSBpbiBfSUdOT1JFRF9F
UlJPUyBvcgorICAgICAgICAgICAgZ2V0YXR0cihleGNlcHRpb24sICd3aW5lcnJvcicsIE5vbmUp
IGluIF9JR05PUkVEX1dJTkVSUk9SUykKKworCitkZWYgX3B5Ml9mc2VuY29kZShwYXJ0cyk6Cisg
ICAgIyBweTIgPT4gbWluaW1hbCB1bmljb2RlIHN1cHBvcnQKKyAgICBhc3NlcnQgc2l4LlBZMgor
ICAgIHJldHVybiBbcGFydC5lbmNvZGUoJ2FzY2lpJykgaWYgaXNpbnN0YW5jZShwYXJ0LCBzaXgu
dGV4dF90eXBlKQorICAgICAgICAgICAgZWxzZSBwYXJ0IGZvciBwYXJ0IGluIHBhcnRzXQorCisK
K2RlZiBfdHJ5X2V4Y2VwdF9maWxlZXhpc3RzZXJyb3IodHJ5X2Z1bmMsIGV4Y2VwdF9mdW5jLCBl
bHNlX2Z1bmM9Tm9uZSk6CisgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMyk6CisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHRyeV9mdW5jKCkKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlz
dHNFcnJvciBhcyBleGM6CisgICAgICAgICAgICBleGNlcHRfZnVuYyhleGMpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBpZiBlbHNlX2Z1bmMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgZWxzZV9mdW5jKCkKKyAgICBlbHNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnlf
ZnVuYygpCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGV4YzoKKyAgICAgICAg
ICAgIGlmIGV4Yy5lcnJubyAhPSBFRVhJU1Q6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhjZXB0X2Z1bmMoZXhjKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgaWYgZWxzZV9mdW5jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIGVsc2VfZnVuYygpCisKKworZGVmIF90cnlfZXhjZXB0X2ZpbGVub3Rmb3VuZGVycm9yKHRy
eV9mdW5jLCBleGNlcHRfZnVuYyk6CisgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMyk6
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeV9mdW5jKCkKKyAgICAgICAgZXhjZXB0IEZp
bGVOb3RGb3VuZEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4Y2VwdF9mdW5jKGV4YykKKyAg
ICBlbGlmIG9zLm5hbWUgIT0gJ250JzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5X2Z1
bmMoKQorICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBleGM6CisgICAgICAgICAg
ICBpZiBleGMuZXJybm8gIT0gRU5PRU5UOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4Y2VwdF9mdW5jKGV4YykKKyAgICBlbHNlOgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnlfZnVuYygpCisgICAgICAgIGV4Y2VwdCBXaW5k
b3dzRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgIyBlcnJubyBjb250YWlucyB3aW5lcnJvcgor
ICAgICAgICAgICAgIyAyID0gZmlsZSBub3QgZm91bmQKKyAgICAgICAgICAgICMgMyA9IHBhdGgg
bm90IGZvdW5kCisgICAgICAgICAgICBpZiBleGMuZXJybm8gbm90IGluICgyLCAzKToKKyAgICAg
ICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleGNl
cHRfZnVuYyhleGMpCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGV4YzoKKyAg
ICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBFTk9FTlQ6CisgICAgICAgICAgICAgICAgcmFpc2UK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhjZXB0X2Z1bmMoZXhjKQorCisK
K2RlZiBfdHJ5X2V4Y2VwdF9wZXJtaXNzaW9uZXJyb3JfaXRlcih0cnlfaXRlciwgZXhjZXB0X2l0
ZXIpOgorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBmb3IgeCBpbiB0cnlfaXRlcigpOgorICAgICAgICAgICAgICAgIHlpZWxkIHgK
KyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICBmb3Ig
eCBpbiBleGNlcHRfaXRlcihleGMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICBlbHNl
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiB0cnlfaXRlcigpOgorICAgICAg
ICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZXhj
OgorICAgICAgICAgICAgaWYgZXhjLmVycm5vIG5vdCBpbiAoRVBFUk0sIEVBQ0NFUyk6CisgICAg
ICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9y
IHggaW4gZXhjZXB0X2l0ZXIoZXhjKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgeAorCisK
K2RlZiBfd2luMzJfZ2V0X3VuaXF1ZV9wYXRoX2lkKHBhdGgpOgorICAgICMgZ2V0IGZpbGUgaW5m
b3JtYXRpb24sIG5lZWRlZCBmb3Igc2FtZWZpbGUgb24gb2xkZXIgUHl0aG9uIHZlcnNpb25zCisg
ICAgIyBzZWUgaHR0cDovL3RpbWdvbGRlbi5tZS51ay9weXRob24vd2luMzJfaG93X2RvX2kvCisg
ICAgIyBzZWVfaWZfdHdvX2ZpbGVzX2FyZV90aGVfc2FtZV9maWxlLmh0bWwKKyAgICBmcm9tIGN0
eXBlcyBpbXBvcnQgUE9JTlRFUiwgU3RydWN0dXJlLCBXaW5FcnJvcgorICAgIGZyb20gY3R5cGVz
LndpbnR5cGVzIGltcG9ydCBEV09SRCwgSEFORExFLCBCT09MCisKKyAgICBjbGFzcyBGSUxFVElN
RShTdHJ1Y3R1cmUpOgorICAgICAgICBfZmllbGRzXyA9IFsoImRhdGV0aW1lX2xvIiwgRFdPUkQp
LAorICAgICAgICAgICAgICAgICAgICAoImRhdGV0aW1lX2hpIiwgRFdPUkQpLAorICAgICAgICAg
ICAgICAgICAgICBdCisKKyAgICBjbGFzcyBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTihTdHJ1
Y3R1cmUpOgorICAgICAgICBfZmllbGRzXyA9IFsoImF0dHJpYnV0ZXMiLCBEV09SRCksCisgICAg
ICAgICAgICAgICAgICAgICgiY3JlYXRlZF9hdCIsIEZJTEVUSU1FKSwKKyAgICAgICAgICAgICAg
ICAgICAgKCJhY2Nlc3NlZF9hdCIsIEZJTEVUSU1FKSwKKyAgICAgICAgICAgICAgICAgICAgKCJ3
cml0dGVuX2F0IiwgRklMRVRJTUUpLAorICAgICAgICAgICAgICAgICAgICAoInZvbHVtZSIsIERX
T1JEKSwKKyAgICAgICAgICAgICAgICAgICAgKCJmaWxlX2hpIiwgRFdPUkQpLAorICAgICAgICAg
ICAgICAgICAgICAoImZpbGVfbG8iLCBEV09SRCksCisgICAgICAgICAgICAgICAgICAgICgibl9s
aW5rcyIsIERXT1JEKSwKKyAgICAgICAgICAgICAgICAgICAgKCJpbmRleF9oaSIsIERXT1JEKSwK
KyAgICAgICAgICAgICAgICAgICAgKCJpbmRleF9sbyIsIERXT1JEKSwKKyAgICAgICAgICAgICAg
ICAgICAgXQorCisgICAgQ3JlYXRlRmlsZSA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuQ3JlYXRl
RmlsZVcKKyAgICBDcmVhdGVGaWxlLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3djaGFyX3AsIERXT1JE
LCBEV09SRCwgY3R5cGVzLmNfdm9pZF9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdP
UkQsIERXT1JELCBIQU5ETEVdCisgICAgQ3JlYXRlRmlsZS5yZXN0eXBlID0gSEFORExFCisgICAg
R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUgPSAoCisgICAgICAgIGN0eXBlcy53aW5kbGwua2Vy
bmVsMzIuR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUpCisgICAgR2V0RmlsZUluZm9ybWF0aW9u
QnlIYW5kbGUuYXJndHlwZXMgPSBbCisgICAgICAgIEhBTkRMRSwgUE9JTlRFUihCWV9IQU5ETEVf
RklMRV9JTkZPUk1BVElPTildCisgICAgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUucmVzdHlw
ZSA9IEJPT0wKKyAgICBDbG9zZUhhbmRsZSA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuQ2xvc2VI
YW5kbGUKKyAgICBDbG9zZUhhbmRsZS5hcmd0eXBlcyA9IFtIQU5ETEVdCisgICAgQ2xvc2VIYW5k
bGUucmVzdHlwZSA9IEJPT0wKKyAgICBHRU5FUklDX1JFQUQgPSAweDgwMDAwMDAwCisgICAgRklM
RV9TSEFSRV9SRUFEID0gMHgwMDAwMDAwMQorICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNT
ID0gMHgwMjAwMDAwMAorICAgIE9QRU5fRVhJU1RJTkcgPSAzCisgICAgaWYgb3MucGF0aC5pc2Rp
cihwYXRoKToKKyAgICAgICAgZmxhZ3MgPSBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUworICAg
IGVsc2U6CisgICAgICAgIGZsYWdzID0gMAorICAgIGhmaWxlID0gQ3JlYXRlRmlsZShwYXRoLCBH
RU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgTm9u
ZSwgT1BFTl9FWElTVElORywgZmxhZ3MsIE5vbmUpCisgICAgaWYgaGZpbGUgPT0gMHhmZmZmZmZm
ZjoKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMyk6CisgICAgICAgICAgICBy
YWlzZSBGaWxlTm90Rm91bmRFcnJvcihwYXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ZXhjID0gT1NFcnJvcigiZmlsZSBub3QgZm91bmQ6IHBhdGgiKQorICAgICAgICAgICAgZXhjLmVy
cm5vID0gRU5PRU5UCisgICAgICAgICAgICByYWlzZSBleGMKKyAgICBpbmZvID0gQllfSEFORExF
X0ZJTEVfSU5GT1JNQVRJT04oKQorICAgIHN1Y2Nlc3MgPSBHZXRGaWxlSW5mb3JtYXRpb25CeUhh
bmRsZShoZmlsZSwgaW5mbykKKyAgICBDbG9zZUhhbmRsZShoZmlsZSkKKyAgICBpZiBzdWNjZXNz
ID09IDA6CisgICAgICAgIHJhaXNlIFdpbkVycm9yKCkKKyAgICByZXR1cm4gaW5mby52b2x1bWUs
IGluZm8uaW5kZXhfaGksIGluZm8uaW5kZXhfbG8KKworCitkZWYgX2lzX3dpbGRjYXJkX3BhdHRl
cm4ocGF0KToKKyAgICAjIFdoZXRoZXIgdGhpcyBwYXR0ZXJuIG5lZWRzIGFjdHVhbCBtYXRjaGlu
ZyB1c2luZyBmbm1hdGNoLCBvciBjYW4KKyAgICAjIGJlIGxvb2tlZCB1cCBkaXJlY3RseSBhcyBh
IGZpbGUuCisgICAgcmV0dXJuICIqIiBpbiBwYXQgb3IgIj8iIGluIHBhdCBvciAiWyIgaW4gcGF0
CisKKworY2xhc3MgX0ZsYXZvdXIob2JqZWN0KToKKworICAgICIiIkEgZmxhdm91ciBpbXBsZW1l
bnRzIGEgcGFydGljdWxhciAocGxhdGZvcm0tc3BlY2lmaWMpIHNldCBvZiBwYXRoCisgICAgc2Vt
YW50aWNzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmpvaW4g
PSBzZWxmLnNlcC5qb2luCisKKyAgICBkZWYgcGFyc2VfcGFydHMoc2VsZiwgcGFydHMpOgorICAg
ICAgICBpZiBzaXguUFkyOgorICAgICAgICAgICAgcGFydHMgPSBfcHkyX2ZzZW5jb2RlKHBhcnRz
KQorICAgICAgICBwYXJzZWQgPSBbXQorICAgICAgICBzZXAgPSBzZWxmLnNlcAorICAgICAgICBh
bHRzZXAgPSBzZWxmLmFsdHNlcAorICAgICAgICBkcnYgPSByb290ID0gJycKKyAgICAgICAgaXQg
PSByZXZlcnNlZChwYXJ0cykKKyAgICAgICAgZm9yIHBhcnQgaW4gaXQ6CisgICAgICAgICAgICBp
ZiBub3QgcGFydDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgYWx0
c2VwOgorICAgICAgICAgICAgICAgIHBhcnQgPSBwYXJ0LnJlcGxhY2UoYWx0c2VwLCBzZXApCisg
ICAgICAgICAgICBkcnYsIHJvb3QsIHJlbCA9IHNlbGYuc3BsaXRyb290KHBhcnQpCisgICAgICAg
ICAgICBpZiBzZXAgaW4gcmVsOgorICAgICAgICAgICAgICAgIGZvciB4IGluIHJldmVyc2VkKHJl
bC5zcGxpdChzZXApKToKKyAgICAgICAgICAgICAgICAgICAgaWYgeCBhbmQgeCAhPSAnLic6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQuYXBwZW5kKGludGVybih4KSkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcmVsIGFuZCByZWwgIT0gJy4nOgorICAgICAg
ICAgICAgICAgICAgICBwYXJzZWQuYXBwZW5kKGludGVybihyZWwpKQorICAgICAgICAgICAgaWYg
ZHJ2IG9yIHJvb3Q6CisgICAgICAgICAgICAgICAgaWYgbm90IGRydjoKKyAgICAgICAgICAgICAg
ICAgICAgIyBJZiBubyBkcml2ZSBpcyBwcmVzZW50LCB0cnkgdG8gZmluZCBvbmUgaW4gdGhlIHBy
ZXZpb3VzCisgICAgICAgICAgICAgICAgICAgICMgcGFydHMuIFRoaXMgbWFrZXMgdGhlIHJlc3Vs
dCBvZiBwYXJzaW5nIGUuZy4KKyAgICAgICAgICAgICAgICAgICAgIyAoIkM6IiwgIi8iLCAiYSIp
IHJlYXNvbmFibHkgaW50dWl0aXZlLgorICAgICAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBp
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhbHRzZXA6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydCA9IHBhcnQucmVwbGFjZShhbHRzZXAs
IHNlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRydiA9IHNlbGYuc3BsaXRyb290KHBhcnQp
WzBdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkcnY6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBkcnYgb3Ig
cm9vdDoKKyAgICAgICAgICAgIHBhcnNlZC5hcHBlbmQoZHJ2ICsgcm9vdCkKKyAgICAgICAgcGFy
c2VkLnJldmVyc2UoKQorICAgICAgICByZXR1cm4gZHJ2LCByb290LCBwYXJzZWQKKworICAgIGRl
ZiBqb2luX3BhcnNlZF9wYXJ0cyhzZWxmLCBkcnYsIHJvb3QsIHBhcnRzLCBkcnYyLCByb290Miwg
cGFydHMyKToKKyAgICAgICAgIiIiCisgICAgICAgIEpvaW4gdGhlIHR3byBwYXRocyByZXByZXNl
bnRlZCBieSB0aGUgcmVzcGVjdGl2ZQorICAgICAgICAoZHJpdmUsIHJvb3QsIHBhcnRzKSB0dXBs
ZXMuICBSZXR1cm4gYSBuZXcgKGRyaXZlLCByb290LCBwYXJ0cykgdHVwbGUuCisgICAgICAgICIi
IgorICAgICAgICBpZiByb290MjoKKyAgICAgICAgICAgIGlmIG5vdCBkcnYyIGFuZCBkcnY6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGRydiwgcm9vdDIsIFtkcnYgKyByb290Ml0gKyBwYXJ0czJb
MTpdCisgICAgICAgIGVsaWYgZHJ2MjoKKyAgICAgICAgICAgIGlmIGRydjIgPT0gZHJ2IG9yIHNl
bGYuY2FzZWZvbGQoZHJ2MikgPT0gc2VsZi5jYXNlZm9sZChkcnYpOgorICAgICAgICAgICAgICAg
ICMgU2FtZSBkcml2ZSA9PiBzZWNvbmQgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZHJ2LCByb290LCBwYXJ0cyArIHBhcnRzMlsxOl0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgbm9uLWFuY2hvcmVkIChjb21t
b24gY2FzZSkKKyAgICAgICAgICAgIHJldHVybiBkcnYsIHJvb3QsIHBhcnRzICsgcGFydHMyCisg
ICAgICAgIHJldHVybiBkcnYyLCByb290MiwgcGFydHMyCisKKworY2xhc3MgX1dpbmRvd3NGbGF2
b3VyKF9GbGF2b3VyKToKKyAgICAjIFJlZmVyZW5jZSBmb3IgV2luZG93cyBwYXRocyBjYW4gYmUg
Zm91bmQgYXQKKyAgICAjIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9h
YTM2NTI0NyUyOHY9dnMuODUlMjkuYXNweAorCisgICAgc2VwID0gJ1xcJworICAgIGFsdHNlcCA9
ICcvJworICAgIGhhc19kcnYgPSBUcnVlCisgICAgcGF0aG1vZCA9IG50cGF0aAorCisgICAgaXNf
c3VwcG9ydGVkID0gKG9zLm5hbWUgPT0gJ250JykKKworICAgIGRyaXZlX2xldHRlcnMgPSBzZXQo
J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonKQor
ICAgIGV4dF9uYW1lc3BhY2VfcHJlZml4ID0gJ1xcXFw/XFwnCisKKyAgICByZXNlcnZlZF9uYW1l
cyA9ICgKKyAgICAgICAgc2V0KFsnQ09OJywgJ1BSTicsICdBVVgnLCAnTlVMJ10pIHwKKyAgICAg
ICAgc2V0KFsnQ09NJWQnICUgaSBmb3IgaSBpbiByYW5nZSgxLCAxMCldKSB8CisgICAgICAgIHNl
dChbJ0xQVCVkJyAlIGkgZm9yIGkgaW4gcmFuZ2UoMSwgMTApXSkKKyAgICAgICAgKQorCisgICAg
IyBJbnRlcmVzdGluZyBmaW5kaW5ncyBhYm91dCBleHRlbmRlZCBwYXRoczoKKyAgICAjIC0gJ1xc
P1xjOlxhJywgJy8vPy9jOlxhJyBhbmQgJy8vPy9jOi9hJyBhcmUgYWxsIHN1cHBvcnRlZAorICAg
ICMgICBidXQgJ1xcP1xjOi9hJyBpcyBub3QKKyAgICAjIC0gZXh0ZW5kZWQgcGF0aHMgYXJlIGFs
d2F5cyBhYnNvbHV0ZTsgInJlbGF0aXZlIiBleHRlbmRlZCBwYXRocyB3aWxsCisgICAgIyAgIGZh
aWwuCisKKyAgICBkZWYgc3BsaXRyb290KHNlbGYsIHBhcnQsIHNlcD1zZXApOgorICAgICAgICBm
aXJzdCA9IHBhcnRbMDoxXQorICAgICAgICBzZWNvbmQgPSBwYXJ0WzE6Ml0KKyAgICAgICAgaWYg
KHNlY29uZCA9PSBzZXAgYW5kIGZpcnN0ID09IHNlcCk6CisgICAgICAgICAgICAjIFhYWCBleHRl
bmRlZCBwYXRocyBzaG91bGQgYWxzbyBkaXNhYmxlIHRoZSBjb2xsYXBzaW5nIG9mICIuIgorICAg
ICAgICAgICAgIyBjb21wb25lbnRzIChhY2NvcmRpbmcgdG8gTVNETiBkb2NzKS4KKyAgICAgICAg
ICAgIHByZWZpeCwgcGFydCA9IHNlbGYuX3NwbGl0X2V4dGVuZGVkX3BhdGgocGFydCkKKyAgICAg
ICAgICAgIGZpcnN0ID0gcGFydFswOjFdCisgICAgICAgICAgICBzZWNvbmQgPSBwYXJ0WzE6Ml0K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByZWZpeCA9ICcnCisgICAgICAgIHRoaXJkID0g
cGFydFsyOjNdCisgICAgICAgIGlmIChzZWNvbmQgPT0gc2VwIGFuZCBmaXJzdCA9PSBzZXAgYW5k
IHRoaXJkICE9IHNlcCk6CisgICAgICAgICAgICAjIGlzIGEgVU5DIHBhdGg6CisgICAgICAgICAg
ICAjIHZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2diByb290CisgICAgICAgICAgICAjIFxcbWFjaGluZVxt
b3VudHBvaW50XGRpcmVjdG9yeVxldGNcLi4uCisgICAgICAgICAgICAjICAgICAgICAgICAgZGly
ZWN0b3J5IF5eXl5eXl5eXl5eXl5eCisgICAgICAgICAgICBpbmRleCA9IHBhcnQuZmluZChzZXAs
IDIpCisgICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKKyAgICAgICAgICAgICAgICBpbmRleDIg
PSBwYXJ0LmZpbmQoc2VwLCBpbmRleCArIDEpCisgICAgICAgICAgICAgICAgIyBhIFVOQyBwYXRo
IGNhbid0IGhhdmUgdHdvIHNsYXNoZXMgaW4gYSByb3cKKyAgICAgICAgICAgICAgICAjIChhZnRl
ciB0aGUgaW5pdGlhbCB0d28pCisgICAgICAgICAgICAgICAgaWYgaW5kZXgyICE9IGluZGV4ICsg
MToKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXgyID09IC0xOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXgyID0gbGVuKHBhcnQpCisgICAgICAgICAgICAgICAgICAgIGlmIHByZWZp
eDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBwYXJ0WzE6aW5kZXgy
XSwgc2VwLCBwYXJ0W2luZGV4MiArIDE6XQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRbOmluZGV4Ml0sIHNlcCwgcGFydFtpbmRl
eDIgKyAxOl0KKyAgICAgICAgZHJ2ID0gcm9vdCA9ICcnCisgICAgICAgIGlmIHNlY29uZCA9PSAn
OicgYW5kIGZpcnN0IGluIHNlbGYuZHJpdmVfbGV0dGVyczoKKyAgICAgICAgICAgIGRydiA9IHBh
cnRbOjJdCisgICAgICAgICAgICBwYXJ0ID0gcGFydFsyOl0KKyAgICAgICAgICAgIGZpcnN0ID0g
dGhpcmQKKyAgICAgICAgaWYgZmlyc3QgPT0gc2VwOgorICAgICAgICAgICAgcm9vdCA9IGZpcnN0
CisgICAgICAgICAgICBwYXJ0ID0gcGFydC5sc3RyaXAoc2VwKQorICAgICAgICByZXR1cm4gcHJl
Zml4ICsgZHJ2LCByb290LCBwYXJ0CisKKyAgICBkZWYgY2FzZWZvbGQoc2VsZiwgcyk6CisgICAg
ICAgIHJldHVybiBzLmxvd2VyKCkKKworICAgIGRlZiBjYXNlZm9sZF9wYXJ0cyhzZWxmLCBwYXJ0
cyk6CisgICAgICAgIHJldHVybiBbcC5sb3dlcigpIGZvciBwIGluIHBhcnRzXQorCisgICAgZGVm
IHJlc29sdmUoc2VsZiwgcGF0aCwgc3RyaWN0PUZhbHNlKToKKyAgICAgICAgcyA9IHN0cihwYXRo
KQorICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQorICAg
ICAgICBwcmV2aW91c19zID0gTm9uZQorICAgICAgICBpZiBfZ2V0ZmluYWxwYXRobmFtZSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
c2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBFbmQgb2YgdGhlIHBhdGggYWZ0ZXIgdGhlIGZpcnN0IG9u
ZSBub3QgZm91bmQKKyAgICAgICAgICAgICAgICB0YWlsX3BhcnRzID0gW10KKworICAgICAgICAg
ICAgICAgIGRlZiBfdHJ5X2Z1bmMoKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBdID0g
c2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgICAg
ICAgICAgIyBpZiB0aGVyZSB3YXMgbm8gZXhjZXB0aW9uLCBzZXQgZmxhZyB0byAwCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFsxXSA9IDAKKworICAgICAgICAgICAgICAgIGRlZiBfZXhjX2Z1
bmMoZXhjKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW05vbmUsIDFdCisgICAgICAg
ICAgICAgICAgICAgIF90cnlfZXhjZXB0X2ZpbGVub3Rmb3VuZGVycm9yKF90cnlfZnVuYywgX2V4
Y19mdW5jKQorICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHRbMV0gPT0gMTogICMgZmlsZSBu
b3QgZm91bmQgZXhjZXB0aW9uIHJhaXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlv
dXNfcyA9IHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHMsIHRhaWwgPSBvcy5wYXRoLnNwbGl0
KHMpCisgICAgICAgICAgICAgICAgICAgICAgICB0YWlsX3BhcnRzLmFwcGVuZCh0YWlsKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcyA9PSBzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwYXRoCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgICAgICBzID0gcmVzdWx0WzBdCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gb3MucGF0aC5qb2luKHMsICpyZXZlcnNlZCh0YWlsX3BhcnRzKSkKKyAgICAgICAg
IyBNZWFucyBmYWxsYmFjayBvbiBhYnNvbHV0ZQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ZGVmIF9zcGxpdF9leHRlbmRlZF9wYXRoKHNlbGYsIHMsIGV4dF9wcmVmaXg9ZXh0X25hbWVzcGFj
ZV9wcmVmaXgpOgorICAgICAgICBwcmVmaXggPSAnJworICAgICAgICBpZiBzLnN0YXJ0c3dpdGgo
ZXh0X3ByZWZpeCk6CisgICAgICAgICAgICBwcmVmaXggPSBzWzo0XQorICAgICAgICAgICAgcyA9
IHNbNDpdCisgICAgICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoJ1VOQ1xcJyk6CisgICAgICAgICAg
ICAgICAgcHJlZml4ICs9IHNbOjNdCisgICAgICAgICAgICAgICAgcyA9ICdcXCcgKyBzWzM6XQor
ICAgICAgICByZXR1cm4gcHJlZml4LCBzCisKKyAgICBkZWYgX2V4dF90b19ub3JtYWwoc2VsZiwg
cyk6CisgICAgICAgICMgVHVybiBiYWNrIGFuIGV4dGVuZGVkIHBhdGggaW50byBhIG5vcm1hbCBE
T1MtbGlrZSBwYXRoCisgICAgICAgIHJldHVybiBzZWxmLl9zcGxpdF9leHRlbmRlZF9wYXRoKHMp
WzFdCisKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZiwgcGFydHMpOgorICAgICAgICAjIE5PVEU6
IHRoZSBydWxlcyBmb3IgcmVzZXJ2ZWQgbmFtZXMgc2VlbSBzb21ld2hhdCBjb21wbGljYXRlZAor
ICAgICAgICAjIChlLmcuIHIiLi5cTlVMIiBpcyByZXNlcnZlZCBidXQgbm90IHIiZm9vXE5VTCIp
LgorICAgICAgICAjIFdlIGVyciBvbiB0aGUgc2lkZSBvZiBjYXV0aW9uIGFuZCByZXR1cm4gVHJ1
ZSBmb3IgcGF0aHMgd2hpY2ggYXJlCisgICAgICAgICMgbm90IGNvbnNpZGVyZWQgcmVzZXJ2ZWQg
YnkgV2luZG93cy4KKyAgICAgICAgaWYgbm90IHBhcnRzOgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIGlmIHBhcnRzWzBdLnN0YXJ0c3dpdGgoJ1xcXFwnKToKKyAgICAgICAgICAg
ICMgVU5DIHBhdGhzIGFyZSBuZXZlciByZXNlcnZlZAorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIHJldHVybiBwYXJ0c1stMV0ucGFydGl0aW9uKCcuJylbMF0udXBwZXIoKSBpbiBz
ZWxmLnJlc2VydmVkX25hbWVzCisKKyAgICBkZWYgbWFrZV91cmkoc2VsZiwgcGF0aCk6CisgICAg
ICAgICMgVW5kZXIgV2luZG93cywgZmlsZSBVUklzIHVzZSB0aGUgVVRGLTggZW5jb2RpbmcuCisg
ICAgICAgIGRyaXZlID0gcGF0aC5kcml2ZQorICAgICAgICBpZiBsZW4oZHJpdmUpID09IDIgYW5k
IGRyaXZlWzFdID09ICc6JzoKKyAgICAgICAgICAgICMgSXQncyBhIHBhdGggb24gYSBsb2NhbCBk
cml2ZSA9PiAnZmlsZTovLy9jOi9hL2InCisgICAgICAgICAgICByZXN0ID0gcGF0aC5hc19wb3Np
eCgpWzI6XS5sc3RyaXAoJy8nKQorICAgICAgICAgICAgcmV0dXJuICdmaWxlOi8vLyVzLyVzJyAl
ICgKKyAgICAgICAgICAgICAgICBkcml2ZSwgdXJscXVvdGVfZnJvbV9ieXRlcyhyZXN0LmVuY29k
ZSgndXRmLTgnKSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEl0J3MgYSBwYXRoIG9u
IGEgbmV0d29yayBkcml2ZSA9PiAnZmlsZTovL2hvc3Qvc2hhcmUvYS9iJworICAgICAgICAgICAg
cmV0dXJuICdmaWxlOicgKyB1cmxxdW90ZV9mcm9tX2J5dGVzKAorICAgICAgICAgICAgICAgIHBh
dGguYXNfcG9zaXgoKS5lbmNvZGUoJ3V0Zi04JykpCisKKyAgICBkZWYgZ2V0aG9tZWRpcihzZWxm
LCB1c2VybmFtZSk6CisgICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAg
ICAgdXNlcmhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KKyAgICAgICAgZWxpZiAnVVNFUlBST0ZJ
TEUnIGluIG9zLmVudmlyb246CisgICAgICAgICAgICB1c2VyaG9tZSA9IG9zLmVudmlyb25bJ1VT
RVJQUk9GSUxFJ10KKyAgICAgICAgZWxpZiAnSE9NRVBBVEgnIGluIG9zLmVudmlyb246CisgICAg
ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZHJ2ID0gb3MuZW52aXJvblsnSE9NRURSSVZF
J10KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBkcnYgPSAn
JworICAgICAgICAgICAgdXNlcmhvbWUgPSBkcnYgKyBvcy5lbnZpcm9uWydIT01FUEFUSCddCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IGRldGVy
bWluZSBob21lIGRpcmVjdG9yeSIpCisKKyAgICAgICAgaWYgdXNlcm5hbWU6CisgICAgICAgICAg
ICAjIFRyeSB0byBndWVzcyB1c2VyIGhvbWUgZGlyZWN0b3J5LiAgQnkgZGVmYXVsdCBhbGwgdXNl
cnMKKyAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIHNhbWUgcGxh
Y2UgYW5kIGFyZSBuYW1lZCBieQorICAgICAgICAgICAgIyBjb3JyZXNwb25kaW5nIHVzZXJuYW1l
cy4gIElmIGN1cnJlbnQgdXNlciBob21lIGRpcmVjdG9yeSBwb2ludHMKKyAgICAgICAgICAgICMg
dG8gbm9uc3RhbmRhcmQgcGxhY2UsIHRoaXMgZ3Vlc3MgaXMgbGlrZWx5IHdyb25nLgorICAgICAg
ICAgICAgaWYgb3MuZW52aXJvblsnVVNFUk5BTUUnXSAhPSB1c2VybmFtZToKKyAgICAgICAgICAg
ICAgICBkcnYsIHJvb3QsIHBhcnRzID0gc2VsZi5wYXJzZV9wYXJ0cygodXNlcmhvbWUsKSkKKyAg
ICAgICAgICAgICAgICBpZiBwYXJ0c1stMV0gIT0gb3MuZW52aXJvblsnVVNFUk5BTUUnXToKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBkZXRlcm1pbmUgaG9t
ZSBkaXJlY3RvcnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZv
ciAlciIgJSB1c2VybmFtZSkKKyAgICAgICAgICAgICAgICBwYXJ0c1stMV0gPSB1c2VybmFtZQor
ICAgICAgICAgICAgICAgIGlmIGRydiBvciByb290OgorICAgICAgICAgICAgICAgICAgICB1c2Vy
aG9tZSA9IGRydiArIHJvb3QgKyBzZWxmLmpvaW4ocGFydHNbMTpdKQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVzZXJob21lID0gc2VsZi5qb2luKHBhcnRzKQor
ICAgICAgICByZXR1cm4gdXNlcmhvbWUKKworCitjbGFzcyBfUG9zaXhGbGF2b3VyKF9GbGF2b3Vy
KToKKyAgICBzZXAgPSAnLycKKyAgICBhbHRzZXAgPSAnJworICAgIGhhc19kcnYgPSBGYWxzZQor
ICAgIHBhdGhtb2QgPSBwb3NpeHBhdGgKKworICAgIGlzX3N1cHBvcnRlZCA9IChvcy5uYW1lICE9
ICdudCcpCisKKyAgICBkZWYgc3BsaXRyb290KHNlbGYsIHBhcnQsIHNlcD1zZXApOgorICAgICAg
ICBpZiBwYXJ0IGFuZCBwYXJ0WzBdID09IHNlcDoKKyAgICAgICAgICAgIHN0cmlwcGVkX3BhcnQg
PSBwYXJ0LmxzdHJpcChzZXApCisgICAgICAgICAgICAjIEFjY29yZGluZyB0byBQT1NJWCBwYXRo
IHJlc29sdXRpb246CisgICAgICAgICAgICAjIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25s
aW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMvCisgICAgICAgICAgICAjIHhiZF9jaGFwMDQuaHRt
bCN0YWdfMDRfMTEKKyAgICAgICAgICAgICMgIkEgcGF0aG5hbWUgdGhhdCBiZWdpbnMgd2l0aCB0
d28gc3VjY2Vzc2l2ZSBzbGFzaGVzIG1heSBiZQorICAgICAgICAgICAgIyBpbnRlcnByZXRlZCBp
biBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIG1hbm5lciwgYWx0aG91Z2ggbW9yZQorICAgICAg
ICAgICAgIyB0aGFuIHR3byBsZWFkaW5nIHNsYXNoZXMgc2hhbGwgYmUgdHJlYXRlZCBhcyBhIHNp
bmdsZSBzbGFzaCIuCisgICAgICAgICAgICBpZiBsZW4ocGFydCkgLSBsZW4oc3RyaXBwZWRfcGFy
dCkgPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gJycsIHNlcCAqIDIsIHN0cmlwcGVkX3Bh
cnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICcnLCBzZXAsIHN0
cmlwcGVkX3BhcnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJywgJycsIHBh
cnQKKworICAgIGRlZiBjYXNlZm9sZChzZWxmLCBzKToKKyAgICAgICAgcmV0dXJuIHMKKworICAg
IGRlZiBjYXNlZm9sZF9wYXJ0cyhzZWxmLCBwYXJ0cyk6CisgICAgICAgIHJldHVybiBwYXJ0cwor
CisgICAgZGVmIHJlc29sdmUoc2VsZiwgcGF0aCwgc3RyaWN0PUZhbHNlKToKKyAgICAgICAgc2Vw
ID0gc2VsZi5zZXAKKyAgICAgICAgYWNjZXNzb3IgPSBwYXRoLl9hY2Nlc3NvcgorICAgICAgICBz
ZWVuID0ge30KKworICAgICAgICBkZWYgX3Jlc29sdmUocGF0aCwgcmVzdCk6CisgICAgICAgICAg
ICBpZiByZXN0LnN0YXJ0c3dpdGgoc2VwKToKKyAgICAgICAgICAgICAgICBwYXRoID0gJycKKwor
ICAgICAgICAgICAgZm9yIG5hbWUgaW4gcmVzdC5zcGxpdChzZXApOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBuYW1lIG9yIG5hbWUgPT0gJy4nOgorICAgICAgICAgICAgICAgICAgICAjIGN1cnJl
bnQgZGlyCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYg
bmFtZSA9PSAnLi4nOgorICAgICAgICAgICAgICAgICAgICAjIHBhcmVudCBkaXIKKyAgICAgICAg
ICAgICAgICAgICAgcGF0aCwgXywgXyA9IHBhdGgucnBhcnRpdGlvbihzZXApCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgbmV3cGF0aCA9IHBhdGggKyBzZXAg
KyBuYW1lCisgICAgICAgICAgICAgICAgaWYgbmV3cGF0aCBpbiBzZWVuOgorICAgICAgICAgICAg
ICAgICAgICAjIEFscmVhZHkgc2VlbiB0aGlzIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgcGF0
aCA9IHNlZW5bbmV3cGF0aF0KKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIGNhY2hlZCB2YWx1ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgIyBUaGUgc3ltbGlu
ayBpcyBub3QgcmVzb2x2ZWQsIHNvIHdlIG11c3QgaGF2ZSBhIHN5bWxpbmsKKyAgICAgICAgICAg
ICAgICAgICAgIyBsb29wLgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io
IlN5bWxpbmsgbG9vcCBmcm9tICVyIiAlIG5ld3BhdGgpCisgICAgICAgICAgICAgICAgIyBSZXNv
bHZlIHRoZSBzeW1ib2xpYyBsaW5rCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgICAgICB0YXJnZXQgPSBhY2Nlc3Nvci5yZWFkbGluayhuZXdwYXRoKQorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8g
IT0gRUlOVkFMIGFuZCBzdHJpY3Q6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAg
ICAgICAgICAgICAgICAgICAjIE5vdCBhIHN5bWxpbmssIG9yIG5vbi1zdHJpY3QgbW9kZS4gV2Ug
anVzdCBsZWF2ZSB0aGUgcGF0aAorICAgICAgICAgICAgICAgICAgICAjIHVudG91Y2hlZC4KKyAg
ICAgICAgICAgICAgICAgICAgcGF0aCA9IG5ld3BhdGgKKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICBzZWVuW25ld3BhdGhdID0gTm9uZSAgIyBub3QgcmVzb2x2ZWQg
c3ltbGluaworICAgICAgICAgICAgICAgICAgICBwYXRoID0gX3Jlc29sdmUocGF0aCwgdGFyZ2V0
KQorICAgICAgICAgICAgICAgICAgICBzZWVuW25ld3BhdGhdID0gcGF0aCAgIyByZXNvbHZlZCBz
eW1saW5rCisKKyAgICAgICAgICAgIHJldHVybiBwYXRoCisgICAgICAgICMgTk9URTogYWNjb3Jk
aW5nIHRvIFBPU0lYLCBnZXRjd2QoKSBjYW5ub3QgY29udGFpbiBwYXRoIGNvbXBvbmVudHMKKyAg
ICAgICAgIyB3aGljaCBhcmUgc3ltbGlua3MuCisgICAgICAgIGJhc2UgPSAnJyBpZiBwYXRoLmlz
X2Fic29sdXRlKCkgZWxzZSBvcy5nZXRjd2QoKQorICAgICAgICByZXR1cm4gX3Jlc29sdmUoYmFz
ZSwgc3RyKHBhdGgpKSBvciBzZXAKKworICAgIGRlZiBpc19yZXNlcnZlZChzZWxmLCBwYXJ0cyk6
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIG1ha2VfdXJpKHNlbGYsIHBhdGgpOgor
ICAgICAgICAjIFdlIHJlcHJlc2VudCB0aGUgcGF0aCB1c2luZyB0aGUgbG9jYWwgZmlsZXN5c3Rl
bSBlbmNvZGluZywKKyAgICAgICAgIyBmb3IgcG9ydGFiaWxpdHkgdG8gb3RoZXIgYXBwbGljYXRp
b25zLgorICAgICAgICBicGF0aCA9IGJ5dGVzKHBhdGgpCisgICAgICAgIHJldHVybiAnZmlsZTov
LycgKyB1cmxxdW90ZV9mcm9tX2J5dGVzKGJwYXRoKQorCisgICAgZGVmIGdldGhvbWVkaXIoc2Vs
ZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKS5wd19kaXIKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcHdkLmdldHB3bmFtKHVzZXJuYW1lKS5wd19kaXIKKyAgICAgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0
IGRldGVybWluZSBob21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisKKworX3dpbmRvd3NfZmxhdm91ciA9IF9XaW5k
b3dzRmxhdm91cigpCitfcG9zaXhfZmxhdm91ciA9IF9Qb3NpeEZsYXZvdXIoKQorCisKK2NsYXNz
IF9BY2Nlc3NvcjoKKworICAgICIiIkFuIGFjY2Vzc29yIGltcGxlbWVudHMgYSBwYXJ0aWN1bGFy
IChzeXN0ZW0tc3BlY2lmaWMgb3Igbm90KSB3YXkgb2YKKyAgICBhY2Nlc3NpbmcgcGF0aHMgb24g
dGhlIGZpbGVzeXN0ZW0uIiIiCisKKworY2xhc3MgX05vcm1hbEFjY2Vzc29yKF9BY2Nlc3Nvcik6
CisKKyAgICBkZWYgX3dyYXBfc3RyZnVuYyhzdHJmdW5jKToKKyAgICAgICAgQGZ1bmN0b29scy53
cmFwcyhzdHJmdW5jKQorICAgICAgICBkZWYgd3JhcHBlZChwYXRob2JqLCAqYXJncyk6CisgICAg
ICAgICAgICByZXR1cm4gc3RyZnVuYyhzdHIocGF0aG9iaiksICphcmdzKQorICAgICAgICByZXR1
cm4gc3RhdGljbWV0aG9kKHdyYXBwZWQpCisKKyAgICBkZWYgX3dyYXBfYmluYXJ5X3N0cmZ1bmMo
c3RyZnVuYyk6CisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoc3RyZnVuYykKKyAgICAgICAgZGVm
IHdyYXBwZWQocGF0aG9iakEsIHBhdGhvYmpCLCAqYXJncyk6CisgICAgICAgICAgICByZXR1cm4g
c3RyZnVuYyhzdHIocGF0aG9iakEpLCBzdHIocGF0aG9iakIpLCAqYXJncykKKyAgICAgICAgcmV0
dXJuIHN0YXRpY21ldGhvZCh3cmFwcGVkKQorCisgICAgc3RhdCA9IF93cmFwX3N0cmZ1bmMob3Mu
c3RhdCkKKworICAgIGxzdGF0ID0gX3dyYXBfc3RyZnVuYyhvcy5sc3RhdCkKKworICAgIG9wZW4g
PSBfd3JhcF9zdHJmdW5jKG9zLm9wZW4pCisKKyAgICBsaXN0ZGlyID0gX3dyYXBfc3RyZnVuYyhv
cy5saXN0ZGlyKQorCisgICAgc2NhbmRpciA9IF93cmFwX3N0cmZ1bmMob3Nfc2NhbmRpcikKKwor
ICAgIGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5jaG1vZCkKKworICAgIGlmIGhhc2F0dHIob3Ms
ICJsY2htb2QiKToKKyAgICAgICAgbGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5sY2htb2QpCisg
ICAgZWxzZToKKyAgICAgICAgZGVmIGxjaG1vZChzZWxmLCBwYXRob2JqLCBtb2RlKToKKyAgICAg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImxjaG1vZCgpIG5vdCBhdmFpbGFibGUg
b24gdGhpcyBzeXN0ZW0iKQorCisgICAgbWtkaXIgPSBfd3JhcF9zdHJmdW5jKG9zLm1rZGlyKQor
CisgICAgdW5saW5rID0gX3dyYXBfc3RyZnVuYyhvcy51bmxpbmspCisKKyAgICBybWRpciA9IF93
cmFwX3N0cmZ1bmMob3Mucm1kaXIpCisKKyAgICByZW5hbWUgPSBfd3JhcF9iaW5hcnlfc3RyZnVu
Yyhvcy5yZW5hbWUpCisKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAzKToKKyAgICAg
ICAgcmVwbGFjZSA9IF93cmFwX2JpbmFyeV9zdHJmdW5jKG9zLnJlcGxhY2UpCisKKyAgICBpZiBu
dDoKKyAgICAgICAgaWYgc3VwcG9ydHNfc3ltbGlua3M6CisgICAgICAgICAgICBzeW1saW5rID0g
X3dyYXBfYmluYXJ5X3N0cmZ1bmMob3Muc3ltbGluaykKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGRlZiBzeW1saW5rKGEsIGIsIHRhcmdldF9pc19kaXJlY3RvcnkpOgorICAgICAgICAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJzeW1s
aW5rKCkgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHN5c3RlbSIpCisgICAgZWxzZToKKyAgICAgICAg
IyBVbmRlciBQT1NJWCwgb3Muc3ltbGluaygpIHRha2VzIHR3byBhcmdzCisgICAgICAgIEBzdGF0
aWNtZXRob2QKKyAgICAgICAgZGVmIHN5bWxpbmsoYSwgYiwgdGFyZ2V0X2lzX2RpcmVjdG9yeSk6
CisgICAgICAgICAgICByZXR1cm4gb3Muc3ltbGluayhzdHIoYSksIHN0cihiKSkKKworICAgIHV0
aW1lID0gX3dyYXBfc3RyZnVuYyhvcy51dGltZSkKKworICAgICMgSGVscGVyIGZvciByZXNvbHZl
KCkKKyAgICBkZWYgcmVhZGxpbmsoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBvcy5yZWFk
bGluayhwYXRoKQorCisKK19ub3JtYWxfYWNjZXNzb3IgPSBfTm9ybWFsQWNjZXNzb3IoKQorCisK
KyMKKyMgR2xvYmJpbmcgaGVscGVycworIworCitkZWYgX21ha2Vfc2VsZWN0b3IocGF0dGVybl9w
YXJ0cyk6CisgICAgcGF0ID0gcGF0dGVybl9wYXJ0c1swXQorICAgIGNoaWxkX3BhcnRzID0gcGF0
dGVybl9wYXJ0c1sxOl0KKyAgICBpZiBwYXQgPT0gJyoqJzoKKyAgICAgICAgY2xzID0gX1JlY3Vy
c2l2ZVdpbGRjYXJkU2VsZWN0b3IKKyAgICBlbGlmICcqKicgaW4gcGF0OgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgIkludmFsaWQgcGF0dGVybjogJyoqJyBjYW4gb25s
eSBiZSBhbiBlbnRpcmUgcGF0aCBjb21wb25lbnQiKQorICAgIGVsaWYgX2lzX3dpbGRjYXJkX3Bh
dHRlcm4ocGF0KToKKyAgICAgICAgY2xzID0gX1dpbGRjYXJkU2VsZWN0b3IKKyAgICBlbHNlOgor
ICAgICAgICBjbHMgPSBfUHJlY2lzZVNlbGVjdG9yCisgICAgcmV0dXJuIGNscyhwYXQsIGNoaWxk
X3BhcnRzKQorCisKK2lmIGhhc2F0dHIoZnVuY3Rvb2xzLCAibHJ1X2NhY2hlIik6CisgICAgX21h
a2Vfc2VsZWN0b3IgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKCkoX21ha2Vfc2VsZWN0b3IpCisKKwor
Y2xhc3MgX1NlbGVjdG9yOgorCisgICAgIiIiQSBzZWxlY3RvciBtYXRjaGVzIGEgc3BlY2lmaWMg
Z2xvYiBwYXR0ZXJuIHBhcnQgYWdhaW5zdCB0aGUgY2hpbGRyZW4KKyAgICBvZiBhIGdpdmVuIHBh
dGguIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpOgorICAgICAgICBz
ZWxmLmNoaWxkX3BhcnRzID0gY2hpbGRfcGFydHMKKyAgICAgICAgaWYgY2hpbGRfcGFydHM6Cisg
ICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9tYWtlX3NlbGVjdG9yKGNoaWxkX3BhcnRzKQor
ICAgICAgICAgICAgc2VsZi5kaXJvbmx5ID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi5zdWNjZXNzb3IgPSBfVGVybWluYXRpbmdTZWxlY3RvcigpCisgICAgICAgICAgICBz
ZWxmLmRpcm9ubHkgPSBGYWxzZQorCisgICAgZGVmIHNlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9w
YXRoKToKKyAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIGFsbCBjaGlsZCBwYXRocyBvZiBgcGFyZW50
X3BhdGhgIG1hdGNoZWQgYnkgdGhpcworICAgICAgICBzZWxlY3Rvci4gIFRoaXMgY2FuIGNvbnRh
aW4gcGFyZW50X3BhdGggaXRzZWxmLiIiIgorICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50
X3BhdGgpCisgICAgICAgIGlzX2RpciA9IHBhdGhfY2xzLmlzX2RpcgorICAgICAgICBleGlzdHMg
PSBwYXRoX2Nscy5leGlzdHMKKyAgICAgICAgc2NhbmRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nv
ci5zY2FuZGlyCisgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgorICAgICAgICAg
ICAgcmV0dXJuIGl0ZXIoW10pCisgICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJl
bnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpCisKKworY2xhc3MgX1Rlcm1pbmF0aW5n
U2VsZWN0b3I6CisKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19k
aXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgIHlpZWxkIHBhcmVudF9wYXRoCisKKworY2xh
c3MgX1ByZWNpc2VTZWxlY3RvcihfU2VsZWN0b3IpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIGNoaWxkX3BhcnRzKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBf
U2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCisKKyAgICBkZWYgX3NlbGVjdF9m
cm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAg
IGRlZiB0cnlfaXRlcigpOgorICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2No
aWxkX3JlbHBhdGgoc2VsZi5uYW1lKQorICAgICAgICAgICAgaWYgKGlzX2RpciBpZiBzZWxmLmRp
cm9ubHkgZWxzZSBleGlzdHMpKHBhdGgpOgorICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYu
c3VjY2Vzc29yLl9zZWxlY3RfZnJvbSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIGlz
X2RpciwgZXhpc3RzLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgcAorCisg
ICAgICAgIGRlZiBleGNlcHRfaXRlcihleGMpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
ICAgICB5aWVsZAorCisgICAgICAgIGZvciB4IGluIF90cnlfZXhjZXB0X3Blcm1pc3Npb25lcnJv
cl9pdGVyKHRyeV9pdGVyLCBleGNlcHRfaXRlcik6CisgICAgICAgICAgICB5aWVsZCB4CisKKwor
Y2xhc3MgX1dpbGRjYXJkU2VsZWN0b3IoX1NlbGVjdG9yKToKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwYXQsIGNoaWxkX3BhcnRzKToKKyAgICAgICAgc2VsZi5wYXQgPSByZS5jb21waWxlKGZu
bWF0Y2gudHJhbnNsYXRlKHBhdCkpCisgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBj
aGlsZF9wYXJ0cykKKworICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlz
X2RpciwgZXhpc3RzLCBzY2FuZGlyKToKKyAgICAgICAgZGVmIHRyeV9pdGVyKCk6CisgICAgICAg
ICAgICBjZiA9IHBhcmVudF9wYXRoLl9mbGF2b3VyLmNhc2Vmb2xkCisgICAgICAgICAgICBlbnRy
aWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBp
biBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRpcm9ubHkgb3IgZW50cnku
aXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBlbnRyeS5uYW1lCisgICAgICAg
ICAgICAgICAgICAgIGNhc2Vmb2xkZWQgPSBjZihuYW1lKQorICAgICAgICAgICAgICAgICAgICBp
ZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBh
dGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisKKyAgICAgICAgZGVmIGV4Y2Vw
dF9pdGVyKGV4Yyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkCisKKyAg
ICAgICAgZm9yIHggaW4gX3RyeV9leGNlcHRfcGVybWlzc2lvbmVycm9yX2l0ZXIodHJ5X2l0ZXIs
IGV4Y2VwdF9pdGVyKToKKyAgICAgICAgICAgIHlpZWxkIHgKKworCitjbGFzcyBfUmVjdXJzaXZl
V2lsZGNhcmRTZWxlY3RvcihfU2VsZWN0b3IpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
dCwgY2hpbGRfcGFydHMpOgorICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRf
cGFydHMpCisKKyAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgs
IGlzX2Rpciwgc2NhbmRpcik6CisgICAgICAgIHlpZWxkIHBhcmVudF9wYXRoCisKKyAgICAgICAg
ZGVmIHRyeV9pdGVyKCk6CisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVu
dF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAg
ICAgIGVudHJ5X2lzX2RpciA9IEZhbHNlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgICAgICBlbnRyeV9pc19kaXIgPSBlbnRyeS5pc19kaXIoKQorICAgICAgICAgICAgICAg
IGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaWdub3Jl
X2Vycm9yKGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAg
ICBpZiBlbnRyeV9pc19kaXIgYW5kIG5vdCBlbnRyeS5pc19zeW1saW5rKCk6CisgICAgICAgICAg
ICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKGVudHJ5Lm5h
bWUpCisgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3Jp
ZXMocGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxk
IHAKKworICAgICAgICBkZWYgZXhjZXB0X2l0ZXIoZXhjKToKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgeWllbGQKKworICAgICAgICBmb3IgeCBpbiBfdHJ5X2V4Y2VwdF9wZXJtaXNz
aW9uZXJyb3JfaXRlcih0cnlfaXRlciwgZXhjZXB0X2l0ZXIpOgorICAgICAgICAgICAgeWllbGQg
eAorCisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlz
dHMsIHNjYW5kaXIpOgorICAgICAgICBkZWYgdHJ5X2l0ZXIoKToKKyAgICAgICAgICAgIHlpZWxk
ZWQgPSBzZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9z
ZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KKyAgICAgICAgICAgICAgICBmb3Ig
c3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcygKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgorICAgICAgICAgICAg
ICAgICAgICBmb3IgcCBpbiBzdWNjZXNzb3Jfc2VsZWN0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0aW5nX3BvaW50LCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBwIG5vdCBpbiB5aWVsZGVkOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmFk
ZChwKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFy
KCkKKworICAgICAgICBkZWYgZXhjZXB0X2l0ZXIoZXhjKToKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgeWllbGQKKworICAgICAgICBmb3IgeCBpbiBfdHJ5X2V4Y2VwdF9wZXJtaXNz
aW9uZXJyb3JfaXRlcih0cnlfaXRlciwgZXhjZXB0X2l0ZXIpOgorICAgICAgICAgICAgeWllbGQg
eAorCisKKyMKKyMgUHVibGljIEFQSQorIworCitjbGFzcyBfUGF0aFBhcmVudHMoU2VxdWVuY2Up
OgorCisgICAgIiIiVGhpcyBvYmplY3QgcHJvdmlkZXMgc2VxdWVuY2UtbGlrZSBhY2Nlc3MgdG8g
dGhlIGxvZ2ljYWwgYW5jZXN0b3JzCisgICAgb2YgYSBwYXRoLiAgRG9uJ3QgdHJ5IHRvIGNvbnN0
cnVjdCBpdCB5b3Vyc2VsZi4iIiIKKyAgICBfX3Nsb3RzX18gPSAoJ19wYXRoY2xzJywgJ19kcnYn
LCAnX3Jvb3QnLCAnX3BhcnRzJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAg
ICAgICAgIyBXZSBkb24ndCBzdG9yZSB0aGUgaW5zdGFuY2UgdG8gYXZvaWQgcmVmZXJlbmNlIGN5
Y2xlcworICAgICAgICBzZWxmLl9wYXRoY2xzID0gdHlwZShwYXRoKQorICAgICAgICBzZWxmLl9k
cnYgPSBwYXRoLl9kcnYKKyAgICAgICAgc2VsZi5fcm9vdCA9IHBhdGguX3Jvb3QKKyAgICAgICAg
c2VsZi5fcGFydHMgPSBwYXRoLl9wYXJ0cworCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAg
ICAgIGlmIHNlbGYuX2RydiBvciBzZWxmLl9yb290OgorICAgICAgICAgICAgcmV0dXJuIGxlbihz
ZWxmLl9wYXJ0cykgLSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gbGVuKHNl
bGYuX3BhcnRzKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGlkeCk6CisgICAgICAgIGlm
IGlkeCA8IDAgb3IgaWR4ID49IGxlbihzZWxmKToKKyAgICAgICAgICAgIHJhaXNlIEluZGV4RXJy
b3IoaWR4KQorICAgICAgICByZXR1cm4gc2VsZi5fcGF0aGNscy5fZnJvbV9wYXJzZWRfcGFydHMo
c2VsZi5fZHJ2LCBzZWxmLl9yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGFydHNbOi1pZHggLSAxXSkKKworICAgIGRlZiBfX3JlcHJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuICI8ezB9LnBhcmVudHM+Ii5mb3JtYXQoc2VsZi5fcGF0
aGNscy5fX25hbWVfXykKKworCitjbGFzcyBQdXJlUGF0aChvYmplY3QpOgorCisgICAgIiIiUHVy
ZVBhdGggcmVwcmVzZW50cyBhIGZpbGVzeXN0ZW0gcGF0aCBhbmQgb2ZmZXJzIG9wZXJhdGlvbnMg
d2hpY2gKKyAgICBkb24ndCBpbXBseSBhbnkgYWN0dWFsIGZpbGVzeXN0ZW0gSS9PLiAgRGVwZW5k
aW5nIG9uIHlvdXIgc3lzdGVtLAorICAgIGluc3RhbnRpYXRpbmcgYSBQdXJlUGF0aCB3aWxsIHJl
dHVybiBlaXRoZXIgYSBQdXJlUG9zaXhQYXRoIG9yIGEKKyAgICBQdXJlV2luZG93c1BhdGggb2Jq
ZWN0LiAgWW91IGNhbiBhbHNvIGluc3RhbnRpYXRlIGVpdGhlciBvZiB0aGVzZSBjbGFzc2VzCisg
ICAgZGlyZWN0bHksIHJlZ2FyZGxlc3Mgb2YgeW91ciBzeXN0ZW0uCisgICAgIiIiCisgICAgX19z
bG90c19fID0gKAorICAgICAgICAnX2RydicsICdfcm9vdCcsICdfcGFydHMnLAorICAgICAgICAn
X3N0cicsICdfaGFzaCcsICdfcHBhcnRzJywgJ19jYWNoZWRfY3BhcnRzJywKKyAgICApCisKKyAg
ICBkZWYgX19uZXdfXyhjbHMsICphcmdzKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgUHVyZVBh
dGggZnJvbSBvbmUgb3Igc2V2ZXJhbCBzdHJpbmdzIGFuZCBvciBleGlzdGluZworICAgICAgICBQ
dXJlUGF0aCBvYmplY3RzLiAgVGhlIHN0cmluZ3MgYW5kIHBhdGggb2JqZWN0cyBhcmUgY29tYmlu
ZWQgc28gYXMKKyAgICAgICAgdG8geWllbGQgYSBjYW5vbmljYWxpemVkIHBhdGgsIHdoaWNoIGlz
IGluY29ycG9yYXRlZCBpbnRvIHRoZQorICAgICAgICBuZXcgUHVyZVBhdGggb2JqZWN0LgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgY2xzIGlzIFB1cmVQYXRoOgorICAgICAgICAgICAgY2xzID0g
UHVyZVdpbmRvd3NQYXRoIGlmIG9zLm5hbWUgPT0gJ250JyBlbHNlIFB1cmVQb3NpeFBhdGgKKyAg
ICAgICAgcmV0dXJuIGNscy5fZnJvbV9wYXJ0cyhhcmdzKQorCisgICAgZGVmIF9fcmVkdWNlX18o
c2VsZik6CisgICAgICAgICMgVXNpbmcgdGhlIHBhcnRzIHR1cGxlIGhlbHBzIHNoYXJlIGludGVy
bmVkIHBhdGggcGFydHMKKyAgICAgICAgIyB3aGVuIHBpY2tsaW5nIHJlbGF0ZWQgcGF0aHMuCisg
ICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHR1cGxlKHNlbGYuX3BhcnRzKSkKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfYXJncyhjbHMsIGFyZ3MpOgorICAgICAgICAj
IFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IGRvbid0IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNl
LCBqdXN0CisgICAgICAgICMgY2Fub25pY2FsaXplIHNvbWUgY29uc3RydWN0b3IgYXJndW1lbnRz
LgorICAgICAgICBwYXJ0cyA9IFtdCisgICAgICAgIGZvciBhIGluIGFyZ3M6CisgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKGEsIFB1cmVQYXRoKToKKyAgICAgICAgICAgICAgICBwYXJ0cyArPSBh
Ll9wYXJ0cworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvID49ICgzLCA2KToKKyAgICAgICAgICAgICAgICAgICAgYSA9IG9zLmZzcGF0aChhKQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgZHVjayB0eXBpbmcg
Zm9yIG9sZGVyIFB5dGhvbiB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRy
KGEsICJfX2ZzcGF0aF9fIik6CisgICAgICAgICAgICAgICAgICAgICAgICBhID0gYS5fX2ZzcGF0
aF9fKCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6CisgICAgICAgICAg
ICAgICAgICAgICMgRm9yY2UtY2FzdCBzdHIgc3ViY2xhc3NlcyB0byBzdHIgKGlzc3VlICMyMTEy
NykKKyAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKKyAgICAgICAgICAg
ICAgICAjIGFsc28gaGFuZGxlIHVuaWNvZGUgZm9yIFBZMiAoc2l4LnRleHRfdHlwZSA9IHVuaWNv
ZGUpCisgICAgICAgICAgICAgICAgZWxpZiBzaXguUFkyIGFuZCBpc2luc3RhbmNlKGEsIHNpeC50
ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgICAgICAjIGNhc3QgdG8gc3RyIHVzaW5nIGZpbGVz
eXN0ZW0gZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAgICAgIyBub3RlOiBpbiByYXJlIGNpcmN1
bXN0YW5jZXMsIG9uIFB5dGhvbiA8IDMuMiwKKyAgICAgICAgICAgICAgICAgICAgIyBnZXRmaWxl
c3lzdGVtZW5jb2RpbmcgY2FuIHJldHVybiBOb25lLCBpbiB0aGF0CisgICAgICAgICAgICAgICAg
ICAgICMgY2FzZSBmYWxsIGJhY2sgdG8gYXNjaWkKKyAgICAgICAgICAgICAgICAgICAgcGFydHMu
YXBwZW5kKGEuZW5jb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmdldGZpbGVzeXN0
ZW1lbmNvZGluZygpIG9yICJhc2NpaSIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJh
cmd1bWVudCBzaG91bGQgYmUgYSBzdHIgb2JqZWN0IG9yIGFuIG9zLlBhdGhMaWtlICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJvYmplY3QgcmV0dXJuaW5nIHN0ciwgbm90ICVyIgorICAgICAg
ICAgICAgICAgICAgICAgICAgJSB0eXBlKGEpKQorICAgICAgICByZXR1cm4gY2xzLl9mbGF2b3Vy
LnBhcnNlX3BhcnRzKHBhcnRzKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9mcm9tX3Bh
cnRzKGNscywgYXJncywgaW5pdD1UcnVlKToKKyAgICAgICAgIyBXZSBuZWVkIHRvIGNhbGwgX3Bh
cnNlX2FyZ3Mgb24gdGhlIGluc3RhbmNlLCBzbyBhcyB0byBnZXQgdGhlCisgICAgICAgICMgcmln
aHQgZmxhdm91ci4KKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAg
ZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYuX3BhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgc2VsZi5f
ZHJ2ID0gZHJ2CisgICAgICAgIHNlbGYuX3Jvb3QgPSByb290CisgICAgICAgIHNlbGYuX3BhcnRz
ID0gcGFydHMKKyAgICAgICAgaWYgaW5pdDoKKyAgICAgICAgICAgIHNlbGYuX2luaXQoKQorICAg
ICAgICByZXR1cm4gc2VsZgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9mcm9tX3BhcnNl
ZF9wYXJ0cyhjbHMsIGRydiwgcm9vdCwgcGFydHMsIGluaXQ9VHJ1ZSk6CisgICAgICAgIHNlbGYg
PSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgIHNlbGYuX2RydiA9IGRydgorICAgICAgICBz
ZWxmLl9yb290ID0gcm9vdAorICAgICAgICBzZWxmLl9wYXJ0cyA9IHBhcnRzCisgICAgICAgIGlm
IGluaXQ6CisgICAgICAgICAgICBzZWxmLl9pbml0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZm9ybWF0X3BhcnNlZF9wYXJ0cyhjbHMsIGRydiwg
cm9vdCwgcGFydHMpOgorICAgICAgICBpZiBkcnYgb3Igcm9vdDoKKyAgICAgICAgICAgIHJldHVy
biBkcnYgKyByb290ICsgY2xzLl9mbGF2b3VyLmpvaW4ocGFydHNbMTpdKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIGNscy5fZmxhdm91ci5qb2luKHBhcnRzKQorCisgICAgZGVm
IF9pbml0KHNlbGYpOgorICAgICAgICAjIE92ZXJyaWRkZW4gaW4gY29uY3JldGUgUGF0aAorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgX21ha2VfY2hpbGQoc2VsZiwgYXJncyk6CisgICAgICAgIGRy
diwgcm9vdCwgcGFydHMgPSBzZWxmLl9wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgIGRydiwgcm9v
dCwgcGFydHMgPSBzZWxmLl9mbGF2b3VyLmpvaW5fcGFyc2VkX3BhcnRzKAorICAgICAgICAgICAg
c2VsZi5fZHJ2LCBzZWxmLl9yb290LCBzZWxmLl9wYXJ0cywgZHJ2LCByb290LCBwYXJ0cykKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKGRydiwgcm9vdCwgcGFydHMpCisK
KyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBzdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgdGhlIHBhdGgsIHN1aXRhYmxlIGZvcgorICAgICAgICBwYXNzaW5nIHRv
IHN5c3RlbSBjYWxscy4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3N0cgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBzZWxmLl9z
dHIgPSBzZWxmLl9mb3JtYXRfcGFyc2VkX3BhcnRzKHNlbGYuX2Rydiwgc2VsZi5fcm9vdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFy
dHMpIG9yICcuJworICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0cgorCisgICAgZGVmIF9fZnNw
YXRoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworICAgIGRlZiBhc19wb3Np
eChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Yg
dGhlIHBhdGggd2l0aCBmb3J3YXJkICgvKQorICAgICAgICBzbGFzaGVzLiIiIgorICAgICAgICBm
ID0gc2VsZi5fZmxhdm91cgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpLnJlcGxhY2UoZi5zZXAs
ICcvJykKKworICAgIGRlZiBfX2J5dGVzX18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUg
Ynl0ZXMgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGguICBUaGlzIGlzIG9ubHkKKyAgICAgICAg
cmVjb21tZW5kZWQgdG8gdXNlIHVuZGVyIFVuaXguIiIiCisgICAgICAgIGlmIHN5cy52ZXJzaW9u
X2luZm8gPCAoMywgMik6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJu
ZWVkcyBQeXRob24gMy4yIG9yIGxhdGVyIikKKyAgICAgICAgcmV0dXJuIG9zLmZzZW5jb2RlKHN0
cihzZWxmKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7MH0o
ezEhcn0pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuYXNfcG9zaXgoKSkK
KworICAgIGRlZiBhc191cmkoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgcGF0aCBhcyBh
ICdmaWxlJyBVUkkuIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2Fic29sdXRlKCk6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWxhdGl2ZSBwYXRoIGNhbid0IGJlIGV4cHJlc3Nl
ZCBhcyBhIGZpbGUgVVJJIikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZsYXZvdXIubWFrZV91cmko
c2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfY3BhcnRzKHNlbGYpOgorICAgICAgICAj
IENhY2hlZCBjYXNlZm9sZGVkIHBhcnRzLCBmb3IgaGFzaGluZyBhbmQgY29tcGFyaXNvbgorICAg
ICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkX2NwYXJ0cworICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBzZWxmLl9jYWNoZWRfY3BhcnRz
ID0gc2VsZi5fZmxhdm91ci5jYXNlZm9sZF9wYXJ0cyhzZWxmLl9wYXJ0cykKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9jYWNoZWRfY3BhcnRzCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVy
KToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFB1cmVQYXRoKToKKyAgICAgICAg
ICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAg
c2VsZi5fY3BhcnRzID09IG90aGVyLl9jcGFydHMKKyAgICAgICAgICAgIGFuZCBzZWxmLl9mbGF2
b3VyIGlzIG90aGVyLl9mbGF2b3VyKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgorCisgICAgZGVmIF9faGFzaF9fKHNlbGYp
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFzaAorICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBzZWxmLl9oYXNoID0gaGFzaCh0dXBs
ZShzZWxmLl9jcGFydHMpKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2gKKworICAgIGRl
ZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiAobm90IGlzaW5zdGFuY2Uob3RoZXIs
IFB1cmVQYXRoKQorICAgICAgICAgICAgICAgIG9yIHNlbGYuX2ZsYXZvdXIgaXMgbm90IG90aGVy
Ll9mbGF2b3VyKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICBy
ZXR1cm4gc2VsZi5fY3BhcnRzIDwgb3RoZXIuX2NwYXJ0cworCisgICAgZGVmIF9fbGVfXyhzZWxm
LCBvdGhlcik6CisgICAgICAgIGlmIChub3QgaXNpbnN0YW5jZShvdGhlciwgUHVyZVBhdGgpCisg
ICAgICAgICAgICAgICAgb3Igc2VsZi5fZmxhdm91ciBpcyBub3Qgb3RoZXIuX2ZsYXZvdXIpOgor
ICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9j
cGFydHMgPD0gb3RoZXIuX2NwYXJ0cworCisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgIGlmIChub3QgaXNpbnN0YW5jZShvdGhlciwgUHVyZVBhdGgpCisgICAgICAgICAgICAg
ICAgb3Igc2VsZi5fZmxhdm91ciBpcyBub3Qgb3RoZXIuX2ZsYXZvdXIpOgorICAgICAgICAgICAg
cmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9jcGFydHMgPiBvdGhl
ci5fY3BhcnRzCisKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgKG5v
dCBpc2luc3RhbmNlKG90aGVyLCBQdXJlUGF0aCkKKyAgICAgICAgICAgICAgICBvciBzZWxmLl9m
bGF2b3VyIGlzIG5vdCBvdGhlci5fZmxhdm91cik6CisgICAgICAgICAgICByZXR1cm4gTm90SW1w
bGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NwYXJ0cyA+PSBvdGhlci5fY3BhcnRzCisK
KyAgICBkcml2ZSA9IHByb3BlcnR5KGF0dHJnZXR0ZXIoJ19kcnYnKSwKKyAgICAgICAgICAgICAg
ICAgICAgIGRvYz0iIiJUaGUgZHJpdmUgcHJlZml4IChsZXR0ZXIgb3IgVU5DIHBhdGgpLCBpZiBh
bnkuIiIiKQorCisgICAgcm9vdCA9IHByb3BlcnR5KGF0dHJnZXR0ZXIoJ19yb290JyksCisgICAg
ICAgICAgICAgICAgICAgIGRvYz0iIiJUaGUgcm9vdCBvZiB0aGUgcGF0aCwgaWYgYW55LiIiIikK
KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbmNob3Ioc2VsZik6CisgICAgICAgICIiIlRoZSBj
b25jYXRlbmF0aW9uIG9mIHRoZSBkcml2ZSBhbmQgcm9vdCwgb3IgJycuIiIiCisgICAgICAgIGFu
Y2hvciA9IHNlbGYuX2RydiArIHNlbGYuX3Jvb3QKKyAgICAgICAgcmV0dXJuIGFuY2hvcgorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICIiIlRoZSBmaW5hbCBw
YXRoIGNvbXBvbmVudCwgaWYgYW55LiIiIgorICAgICAgICBwYXJ0cyA9IHNlbGYuX3BhcnRzCisg
ICAgICAgIGlmIGxlbihwYXJ0cykgPT0gKDEgaWYgKHNlbGYuX2RydiBvciBzZWxmLl9yb290KSBl
bHNlIDApOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHJldHVybiBwYXJ0c1stMV0K
KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdWZmaXgoc2VsZik6CisgICAgICAgICIiIlRoZSBm
aW5hbCBjb21wb25lbnQncyBsYXN0IHN1ZmZpeCwgaWYgYW55LiIiIgorICAgICAgICBuYW1lID0g
c2VsZi5uYW1lCisgICAgICAgIGkgPSBuYW1lLnJmaW5kKCcuJykKKyAgICAgICAgaWYgMCA8IGkg
PCBsZW4obmFtZSkgLSAxOgorICAgICAgICAgICAgcmV0dXJuIG5hbWVbaTpdCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXR1cm4gJycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdWZm
aXhlcyhzZWxmKToKKyAgICAgICAgIiIiQSBsaXN0IG9mIHRoZSBmaW5hbCBjb21wb25lbnQncyBz
dWZmaXhlcywgaWYgYW55LiIiIgorICAgICAgICBuYW1lID0gc2VsZi5uYW1lCisgICAgICAgIGlm
IG5hbWUuZW5kc3dpdGgoJy4nKToKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBuYW1l
ID0gbmFtZS5sc3RyaXAoJy4nKQorICAgICAgICByZXR1cm4gWycuJyArIHN1ZmZpeCBmb3Igc3Vm
Zml4IGluIG5hbWUuc3BsaXQoJy4nKVsxOl1dCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rl
bShzZWxmKToKKyAgICAgICAgIiIiVGhlIGZpbmFsIHBhdGggY29tcG9uZW50LCBtaW51cyBpdHMg
bGFzdCBzdWZmaXguIiIiCisgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgaSA9IG5h
bWUucmZpbmQoJy4nKQorICAgICAgICBpZiAwIDwgaSA8IGxlbihuYW1lKSAtIDE6CisgICAgICAg
ICAgICByZXR1cm4gbmFtZVs6aV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBu
YW1lCisKKyAgICBkZWYgd2l0aF9uYW1lKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4g
YSBuZXcgcGF0aCB3aXRoIHRoZSBmaWxlIG5hbWUgY2hhbmdlZC4iIiIKKyAgICAgICAgaWYgbm90
IHNlbGYubmFtZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGhhcyBhbiBlbXB0
eSBuYW1lIiAlIChzZWxmLCkpCisgICAgICAgIGRydiwgcm9vdCwgcGFydHMgPSBzZWxmLl9mbGF2
b3VyLnBhcnNlX3BhcnRzKChuYW1lLCkpCisgICAgICAgIGlmIChub3QgbmFtZSBvciBuYW1lWy0x
XSBpbiBbc2VsZi5fZmxhdm91ci5zZXAsIHNlbGYuX2ZsYXZvdXIuYWx0c2VwXQorICAgICAgICAg
ICAgICAgIG9yIGRydiBvciByb290IG9yIGxlbihwYXJ0cykgIT0gMSk6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG5hbWUgJXIiICUgKG5hbWUpKQorICAgICAgICByZXR1
cm4gc2VsZi5fZnJvbV9wYXJzZWRfcGFydHMoc2VsZi5fZHJ2LCBzZWxmLl9yb290LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFydHNbOi0xXSArIFtuYW1l
XSkKKworICAgIGRlZiB3aXRoX3N1ZmZpeChzZWxmLCBzdWZmaXgpOgorICAgICAgICAiIiJSZXR1
cm4gYSBuZXcgcGF0aCB3aXRoIHRoZSBmaWxlIHN1ZmZpeCBjaGFuZ2VkLiAgSWYgdGhlIHBhdGgK
KyAgICAgICAgaGFzIG5vIHN1ZmZpeCwgYWRkIGdpdmVuIHN1ZmZpeC4gIElmIHRoZSBnaXZlbiBz
dWZmaXggaXMgYW4gZW1wdHkKKyAgICAgICAgc3RyaW5nLCByZW1vdmUgdGhlIHN1ZmZpeCBmcm9t
IHRoZSBwYXRoLgorICAgICAgICAiIiIKKyAgICAgICAgIyBYWFggaWYgc3VmZml4IGlzIE5vbmUs
IHNob3VsZCB0aGUgY3VycmVudCBzdWZmaXggYmUgcmVtb3ZlZD8KKyAgICAgICAgZiA9IHNlbGYu
X2ZsYXZvdXIKKyAgICAgICAgaWYgZi5zZXAgaW4gc3VmZml4IG9yIGYuYWx0c2VwIGFuZCBmLmFs
dHNlcCBpbiBzdWZmaXg6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHN1
ZmZpeCAlciIgJSAoc3VmZml4KSkKKyAgICAgICAgaWYgc3VmZml4IGFuZCBub3Qgc3VmZml4LnN0
YXJ0c3dpdGgoJy4nKSBvciBzdWZmaXggPT0gJy4nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiSW52YWxpZCBzdWZmaXggJXIiICUgKHN1ZmZpeCkpCisgICAgICAgIG5hbWUgPSBzZWxm
Lm5hbWUKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCIlciBoYXMgYW4gZW1wdHkgbmFtZSIgJSAoc2VsZiwpKQorICAgICAgICBvbGRfc3VmZml4ID0g
c2VsZi5zdWZmaXgKKyAgICAgICAgaWYgbm90IG9sZF9zdWZmaXg6CisgICAgICAgICAgICBuYW1l
ID0gbmFtZSArIHN1ZmZpeAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSA9IG5hbWVb
Oi1sZW4ob2xkX3N1ZmZpeCldICsgc3VmZml4CisgICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3Bh
cnNlZF9wYXJ0cyhzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0c1s6LTFdICsgW25hbWVdKQorCisgICAgZGVmIHJl
bGF0aXZlX3RvKHNlbGYsICpvdGhlcik6CisgICAgICAgICIiIlJldHVybiB0aGUgcmVsYXRpdmUg
cGF0aCB0byBhbm90aGVyIHBhdGggaWRlbnRpZmllZCBieSB0aGUgcGFzc2VkCisgICAgICAgIGFy
Z3VtZW50cy4gIElmIHRoZSBvcGVyYXRpb24gaXMgbm90IHBvc3NpYmxlIChiZWNhdXNlIHRoaXMg
aXMgbm90CisgICAgICAgIGEgc3VicGF0aCBvZiB0aGUgb3RoZXIgcGF0aCksIHJhaXNlIFZhbHVl
RXJyb3IuCisgICAgICAgICIiIgorICAgICAgICAjIEZvciB0aGUgcHVycG9zZSBvZiB0aGlzIG1l
dGhvZCwgZHJpdmUgYW5kIHJvb3QgYXJlIGNvbnNpZGVyZWQKKyAgICAgICAgIyBzZXBhcmF0ZSBw
YXJ0cywgaS5lLjoKKyAgICAgICAgIyAgIFBhdGgoJ2M6LycpLnJlbGF0aXZlX3RvKCdjOicpICBn
aXZlcyBQYXRoKCcvJykKKyAgICAgICAgIyAgIFBhdGgoJ2M6LycpLnJlbGF0aXZlX3RvKCcvJykg
ICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcigibmVlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKQorICAgICAgICBwYXJ0
cyA9IHNlbGYuX3BhcnRzCisgICAgICAgIGRydiA9IHNlbGYuX2RydgorICAgICAgICByb290ID0g
c2VsZi5fcm9vdAorICAgICAgICBpZiByb290OgorICAgICAgICAgICAgYWJzX3BhcnRzID0gW2Ry
diwgcm9vdF0gKyBwYXJ0c1sxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFic19wYXJ0
cyA9IHBhcnRzCisgICAgICAgIHRvX2RydiwgdG9fcm9vdCwgdG9fcGFydHMgPSBzZWxmLl9wYXJz
ZV9hcmdzKG90aGVyKQorICAgICAgICBpZiB0b19yb290OgorICAgICAgICAgICAgdG9fYWJzX3Bh
cnRzID0gW3RvX2RydiwgdG9fcm9vdF0gKyB0b19wYXJ0c1sxOl0KKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHRvX2Fic19wYXJ0cyA9IHRvX3BhcnRzCisgICAgICAgIG4gPSBsZW4odG9fYWJz
X3BhcnRzKQorICAgICAgICBjZiA9IHNlbGYuX2ZsYXZvdXIuY2FzZWZvbGRfcGFydHMKKyAgICAg
ICAgaWYgKHJvb3Qgb3IgZHJ2KSBpZiBuID09IDAgZWxzZSBjZihhYnNfcGFydHNbOm5dKSAhPSBj
Zih0b19hYnNfcGFydHMpOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gc2VsZi5fZm9ybWF0X3Bh
cnNlZF9wYXJ0cyh0b19kcnYsIHRvX3Jvb3QsIHRvX3BhcnRzKQorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiezAhcn0gZG9lcyBub3Qgc3RhcnQgd2l0aCB7MSFyfSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLmZvcm1hdChzdHIoc2VsZiksIHN0cihmb3JtYXR0ZWQpKSkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKCcnLCByb290IGlmIG4gPT0gMSBl
bHNlICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX3BhcnRz
W246XSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJ0cyhzZWxmKToKKyAgICAgICAgIiIi
QW4gb2JqZWN0IHByb3ZpZGluZyBzZXF1ZW5jZS1saWtlIGFjY2VzcyB0byB0aGUKKyAgICAgICAg
Y29tcG9uZW50cyBpbiB0aGUgZmlsZXN5c3RlbSBwYXRoLiIiIgorICAgICAgICAjIFdlIGNhY2hl
IHRoZSB0dXBsZSB0byBhdm9pZCBidWlsZGluZyBhIG5ldyBvbmUgZWFjaCB0aW1lIC5wYXJ0cwor
ICAgICAgICAjIGlzIGFjY2Vzc2VkLiAgWFhYIGlzIHRoaXMgbmVjZXNzYXJ5PworICAgICAgICB0
cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHBhcnRzCisgICAgICAgIGV4Y2VwdCBBdHRy
aWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuX3BwYXJ0cyA9IHR1cGxlKHNlbGYuX3BhcnRz
KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BwYXJ0cworCisgICAgZGVmIGpvaW5wYXRoKHNl
bGYsICphcmdzKToKKyAgICAgICAgIiIiQ29tYmluZSB0aGlzIHBhdGggd2l0aCBvbmUgb3Igc2V2
ZXJhbCBhcmd1bWVudHMsIGFuZCByZXR1cm4gYQorICAgICAgICBuZXcgcGF0aCByZXByZXNlbnRp
bmcgZWl0aGVyIGEgc3VicGF0aCAoaWYgYWxsIGFyZ3VtZW50cyBhcmUgcmVsYXRpdmUKKyAgICAg
ICAgcGF0aHMpIG9yIGEgdG90YWxseSBkaWZmZXJlbnQgcGF0aCAoaWYgb25lIG9mIHRoZSBhcmd1
bWVudHMgaXMKKyAgICAgICAgYW5jaG9yZWQpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu
IHNlbGYuX21ha2VfY2hpbGQoYXJncykKKworICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBrZXkp
OgorICAgICAgICByZXR1cm4gc2VsZi5fbWFrZV9jaGlsZCgoa2V5LCkpCisKKyAgICBkZWYgX19y
dHJ1ZWRpdl9fKHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3BhcnRzKFtr
ZXldICsgc2VsZi5fcGFydHMpCisKKyAgICBpZiBzaXguUFkyOgorICAgICAgICBfX2Rpdl9fID0g
X190cnVlZGl2X18KKyAgICAgICAgX19yZGl2X18gPSBfX3J0cnVlZGl2X18KKworICAgIEBwcm9w
ZXJ0eQorICAgIGRlZiBwYXJlbnQoc2VsZik6CisgICAgICAgICIiIlRoZSBsb2dpY2FsIHBhcmVu
dCBvZiB0aGUgcGF0aC4iIiIKKyAgICAgICAgZHJ2ID0gc2VsZi5fZHJ2CisgICAgICAgIHJvb3Qg
PSBzZWxmLl9yb290CisgICAgICAgIHBhcnRzID0gc2VsZi5fcGFydHMKKyAgICAgICAgaWYgbGVu
KHBhcnRzKSA9PSAxIGFuZCAoZHJ2IG9yIHJvb3QpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKGRydiwgcm9vdCwgcGFydHNb
Oi0xXSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJlbnRzKHNlbGYpOgorICAgICAgICAi
IiJBIHNlcXVlbmNlIG9mIHRoaXMgcGF0aCdzIGxvZ2ljYWwgcGFyZW50cy4iIiIKKyAgICAgICAg
cmV0dXJuIF9QYXRoUGFyZW50cyhzZWxmKQorCisgICAgZGVmIGlzX2Fic29sdXRlKHNlbGYpOgor
ICAgICAgICAiIiJUcnVlIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlIChoYXMgYm90aCBhIHJvb3Qg
YW5kLCBpZiBhcHBsaWNhYmxlLAorICAgICAgICBhIGRyaXZlKS4iIiIKKyAgICAgICAgaWYgbm90
IHNlbGYuX3Jvb3Q6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIG5v
dCBzZWxmLl9mbGF2b3VyLmhhc19kcnYgb3IgYm9vbChzZWxmLl9kcnYpCisKKyAgICBkZWYgaXNf
cmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGNvbnRh
aW5zIG9uZSBvZiB0aGUgc3BlY2lhbCBuYW1lcyByZXNlcnZlZAorICAgICAgICBieSB0aGUgc3lz
dGVtLCBpZiBhbnkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9mbGF2b3VyLmlzX3Jlc2VydmVk
KHNlbGYuX3BhcnRzKQorCisgICAgZGVmIG1hdGNoKHNlbGYsIHBhdGhfcGF0dGVybik6CisgICAg
ICAgICIiIgorICAgICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGlzIHBhdGggbWF0Y2hlcyB0aGUgZ2l2
ZW4gcGF0dGVybi4KKyAgICAgICAgIiIiCisgICAgICAgIGNmID0gc2VsZi5fZmxhdm91ci5jYXNl
Zm9sZAorICAgICAgICBwYXRoX3BhdHRlcm4gPSBjZihwYXRoX3BhdHRlcm4pCisgICAgICAgIGRy
diwgcm9vdCwgcGF0X3BhcnRzID0gc2VsZi5fZmxhdm91ci5wYXJzZV9wYXJ0cygocGF0aF9wYXR0
ZXJuLCkpCisgICAgICAgIGlmIG5vdCBwYXRfcGFydHM6CisgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJlbXB0eSBwYXR0ZXJuIikKKyAgICAgICAgaWYgZHJ2IGFuZCBkcnYgIT0gY2Yoc2Vs
Zi5fZHJ2KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiByb290IGFuZCBy
b290ICE9IGNmKHNlbGYuX3Jvb3QpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IHBhcnRzID0gc2VsZi5fY3BhcnRzCisgICAgICAgIGlmIGRydiBvciByb290OgorICAgICAgICAg
ICAgaWYgbGVuKHBhdF9wYXJ0cykgIT0gbGVuKHBhcnRzKToKKyAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgICAgIHBhdF9wYXJ0cyA9IHBhdF9wYXJ0c1sxOl0KKyAgICAgICAg
ZWxpZiBsZW4ocGF0X3BhcnRzKSA+IGxlbihwYXJ0cyk6CisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgZm9yIHBhcnQsIHBhdCBpbiB6aXAocmV2ZXJzZWQocGFydHMpLCByZXZlcnNl
ZChwYXRfcGFydHMpKToKKyAgICAgICAgICAgIGlmIG5vdCBmbm1hdGNoLmZubWF0Y2hjYXNlKHBh
cnQsIHBhdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBU
cnVlCisKKworIyBDYW4ndCBzdWJjbGFzcyBvcy5QYXRoTGlrZSBmcm9tIFB1cmVQYXRoIGFuZCBr
ZWVwIHRoZSBjb25zdHJ1Y3RvcgorIyBvcHRpbWl6YXRpb25zIGluIFB1cmVQYXRoLl9wYXJzZV9h
cmdzKCkuCitpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA2KToKKyAgICBvcy5QYXRoTGlrZS5y
ZWdpc3RlcihQdXJlUGF0aCkKKworCitjbGFzcyBQdXJlUG9zaXhQYXRoKFB1cmVQYXRoKToKKyAg
ICBfZmxhdm91ciA9IF9wb3NpeF9mbGF2b3VyCisgICAgX19zbG90c19fID0gKCkKKworCitjbGFz
cyBQdXJlV2luZG93c1BhdGgoUHVyZVBhdGgpOgorICAgICIiIlB1cmVQYXRoIHN1YmNsYXNzIGZv
ciBXaW5kb3dzIHN5c3RlbXMuCisKKyAgICBPbiBhIFdpbmRvd3Mgc3lzdGVtLCBpbnN0YW50aWF0
aW5nIGEgUHVyZVBhdGggc2hvdWxkIHJldHVybiB0aGlzIG9iamVjdC4KKyAgICBIb3dldmVyLCB5
b3UgY2FuIGFsc28gaW5zdGFudGlhdGUgaXQgZGlyZWN0bHkgb24gYW55IHN5c3RlbS4KKyAgICAi
IiIKKyAgICBfZmxhdm91ciA9IF93aW5kb3dzX2ZsYXZvdXIKKyAgICBfX3Nsb3RzX18gPSAoKQor
CisKKyMgRmlsZXN5c3RlbS1hY2Nlc3NpbmcgY2xhc3NlcworCisKK2NsYXNzIFBhdGgoUHVyZVBh
dGgpOgorICAgICIiIlB1cmVQYXRoIHN1YmNsYXNzIHRoYXQgY2FuIG1ha2Ugc3lzdGVtIGNhbGxz
LgorCisgICAgUGF0aCByZXByZXNlbnRzIGEgZmlsZXN5c3RlbSBwYXRoIGJ1dCB1bmxpa2UgUHVy
ZVBhdGgsIGFsc28gb2ZmZXJzCisgICAgbWV0aG9kcyB0byBkbyBzeXN0ZW0gY2FsbHMgb24gcGF0
aCBvYmplY3RzLiBEZXBlbmRpbmcgb24geW91ciBzeXN0ZW0sCisgICAgaW5zdGFudGlhdGluZyBh
IFBhdGggd2lsbCByZXR1cm4gZWl0aGVyIGEgUG9zaXhQYXRoIG9yIGEgV2luZG93c1BhdGgKKyAg
ICBvYmplY3QuIFlvdSBjYW4gYWxzbyBpbnN0YW50aWF0ZSBhIFBvc2l4UGF0aCBvciBXaW5kb3dz
UGF0aCBkaXJlY3RseSwKKyAgICBidXQgY2Fubm90IGluc3RhbnRpYXRlIGEgV2luZG93c1BhdGgg
b24gYSBQT1NJWCBzeXN0ZW0gb3IgdmljZSB2ZXJzYS4KKyAgICAiIiIKKyAgICBfX3Nsb3RzX18g
PSAoCisgICAgICAgICdfYWNjZXNzb3InLAorICAgICAgICAnX2Nsb3NlZCcsCisgICAgKQorCisg
ICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBjbHMgaXMg
UGF0aDoKKyAgICAgICAgICAgIGNscyA9IFdpbmRvd3NQYXRoIGlmIG9zLm5hbWUgPT0gJ250JyBl
bHNlIFBvc2l4UGF0aAorICAgICAgICBzZWxmID0gY2xzLl9mcm9tX3BhcnRzKGFyZ3MsIGluaXQ9
RmFsc2UpCisgICAgICAgIGlmIG5vdCBzZWxmLl9mbGF2b3VyLmlzX3N1cHBvcnRlZDoKKyAgICAg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNhbm5vdCBpbnN0YW50aWF0ZSAlciBv
biB5b3VyIHN5c3RlbSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAo
Y2xzLl9fbmFtZV9fLCkpCisgICAgICAgIHNlbGYuX2luaXQoKQorICAgICAgICByZXR1cm4gc2Vs
ZgorCisgICAgZGVmIF9pbml0KHNlbGYsCisgICAgICAgICAgICAgICMgUHJpdmF0ZSBub24tY29u
c3RydWN0b3IgYXJndW1lbnRzCisgICAgICAgICAgICAgIHRlbXBsYXRlPU5vbmUsCisgICAgICAg
ICAgICAgICk6CisgICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCisgICAgICAgIGlmIHRlbXBs
YXRlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fYWNjZXNzb3IgPSB0ZW1wbGF0ZS5f
YWNjZXNzb3IKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yID0gX25v
cm1hbF9hY2Nlc3NvcgorCisgICAgZGVmIF9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZiwgcGFydCk6
CisgICAgICAgICMgVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdXNlZCBmb3IgZGlyIHdhbGtpbmcu
ICBgcGFydGAgbXVzdCBiZQorICAgICAgICAjIGEgc2luZ2xlIHBhcnQgcmVsYXRpdmUgdG8gdGhp
cyBwYXRoLgorICAgICAgICBwYXJ0cyA9IHNlbGYuX3BhcnRzICsgW3BhcnRdCisgICAgICAgIHJl
dHVybiBzZWxmLl9mcm9tX3BhcnNlZF9wYXJ0cyhzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsIHBhcnRz
KQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgor
ICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYKKwor
ICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0LCB2LCB0Yik6CisgICAgICAgIHNlbGYuX2Nsb3NlZCA9
IFRydWUKKworICAgIGRlZiBfcmFpc2VfY2xvc2VkKHNlbGYpOgorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBwYXRoIikKKworICAgIGRlZiBfb3BlbmVy
KHNlbGYsIG5hbWUsIGZsYWdzLCBtb2RlPTBvNjY2KToKKyAgICAgICAgIyBBIHN0dWIgZm9yIHRo
ZSBvcGVuZXIgYXJndW1lbnQgdG8gYnVpbHQtaW4gb3BlbigpCisgICAgICAgIHJldHVybiBzZWxm
Ll9hY2Nlc3Nvci5vcGVuKHNlbGYsIGZsYWdzLCBtb2RlKQorCisgICAgZGVmIF9yYXdfb3Blbihz
ZWxmLCBmbGFncywgbW9kZT0wbzc3Nyk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBm
aWxlIHBvaW50ZWQgYnkgdGhpcyBwYXRoIGFuZCByZXR1cm4gYSBmaWxlIGRlc2NyaXB0b3IsCisg
ICAgICAgIGFzIG9zLm9wZW4oKSBkb2VzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5f
Y2xvc2VkOgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2FjY2Vzc29yLm9wZW4oc2VsZiwgZmxhZ3MsIG1vZGUpCisKKyAgICAjIFB1YmxpYyBB
UEkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjd2QoY2xzKToKKyAgICAgICAgIiIiUmV0
dXJuIGEgbmV3IHBhdGggcG9pbnRpbmcgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkK
KyAgICAgICAgKGFzIHJldHVybmVkIGJ5IG9zLmdldGN3ZCgpKS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiBjbHMob3MuZ2V0Y3dkKCkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
aG9tZShjbHMpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgcGF0aCBwb2ludGluZyB0byB0aGUg
dXNlcidzIGhvbWUgZGlyZWN0b3J5IChhcworICAgICAgICByZXR1cm5lZCBieSBvcy5wYXRoLmV4
cGFuZHVzZXIoJ34nKSkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2xzKGNscygpLl9m
bGF2b3VyLmdldGhvbWVkaXIoTm9uZSkpCisKKyAgICBkZWYgc2FtZWZpbGUoc2VsZiwgb3RoZXJf
cGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIG90aGVyX3BhdGggaXMgdGhlIHNhbWUg
b3Igbm90IGFzIHRoaXMgZmlsZQorICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MucGF0aC5zYW1l
ZmlsZSgpKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIob3MucGF0aCwgInNhbWVz
dGF0Iik6CisgICAgICAgICAgICBzdCA9IHNlbGYuc3RhdCgpCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgb3RoZXJfc3QgPSBvdGhlcl9wYXRoLnN0YXQoKQorICAgICAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIG90aGVyX3N0ID0gb3Muc3Rh
dChvdGhlcl9wYXRoKQorICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguc2FtZXN0YXQoc3QsIG90
aGVyX3N0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZW5hbWUxID0gc2l4LnRleHRf
dHlwZShzZWxmKQorICAgICAgICAgICAgZmlsZW5hbWUyID0gc2l4LnRleHRfdHlwZShvdGhlcl9w
YXRoKQorICAgICAgICAgICAgc3QxID0gX3dpbjMyX2dldF91bmlxdWVfcGF0aF9pZChmaWxlbmFt
ZTEpCisgICAgICAgICAgICBzdDIgPSBfd2luMzJfZ2V0X3VuaXF1ZV9wYXRoX2lkKGZpbGVuYW1l
MikKKyAgICAgICAgICAgIHJldHVybiBzdDEgPT0gc3QyCisKKyAgICBkZWYgaXRlcmRpcihzZWxm
KToKKyAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIHRoZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4g
IERvZXMgbm90IHlpZWxkIGFueQorICAgICAgICByZXN1bHQgZm9yIHRoZSBzcGVjaWFsIHBhdGhz
ICcuJyBhbmQgJy4uJy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAg
ICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIGZvciBuYW1lIGluIHNlbGYu
X2FjY2Vzc29yLmxpc3RkaXIoc2VsZik6CisgICAgICAgICAgICBpZiBuYW1lIGluICgnLicsICcu
LicpOgorICAgICAgICAgICAgICAgICMgWWllbGRpbmcgYSBwYXRoIG9iamVjdCBmb3IgdGhlc2Ug
bWFrZXMgbGl0dGxlIHNlbnNlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IHlpZWxkIHNlbGYuX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQorICAgICAgICAgICAgaWYgc2Vs
Zi5fY2xvc2VkOgorICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisKKyAgICBk
ZWYgZ2xvYihzZWxmLCBwYXR0ZXJuKToKKyAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIHRoaXMgc3Vi
dHJlZSBhbmQgeWllbGQgYWxsIGV4aXN0aW5nIGZpbGVzIChvZiBhbnkKKyAgICAgICAga2luZCwg
aW5jbHVkaW5nIGRpcmVjdG9yaWVzKSBtYXRjaGluZyB0aGUgZ2l2ZW4gcmVsYXRpdmUgcGF0dGVy
bi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBwYXR0ZXJuOgorICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiVW5hY2NlcHRhYmxlIHBhdHRlcm46IHswIXJ9Ii5mb3JtYXQocGF0dGVy
bikpCisgICAgICAgIHBhdHRlcm4gPSBzZWxmLl9mbGF2b3VyLmNhc2Vmb2xkKHBhdHRlcm4pCisg
ICAgICAgIGRydiwgcm9vdCwgcGF0dGVybl9wYXJ0cyA9IHNlbGYuX2ZsYXZvdXIucGFyc2VfcGFy
dHMoKHBhdHRlcm4sKSkKKyAgICAgICAgaWYgZHJ2IG9yIHJvb3Q6CisgICAgICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJOb24tcmVsYXRpdmUgcGF0dGVybnMgYXJlIHVuc3VwcG9y
dGVkIikKKyAgICAgICAgc2VsZWN0b3IgPSBfbWFrZV9zZWxlY3Rvcih0dXBsZShwYXR0ZXJuX3Bh
cnRzKSkKKyAgICAgICAgZm9yIHAgaW4gc2VsZWN0b3Iuc2VsZWN0X2Zyb20oc2VsZik6CisgICAg
ICAgICAgICB5aWVsZCBwCisKKyAgICBkZWYgcmdsb2Ioc2VsZiwgcGF0dGVybik6CisgICAgICAg
ICIiIlJlY3Vyc2l2ZWx5IHlpZWxkIGFsbCBleGlzdGluZyBmaWxlcyAob2YgYW55IGtpbmQsIGlu
Y2x1ZGluZworICAgICAgICBkaXJlY3RvcmllcykgbWF0Y2hpbmcgdGhlIGdpdmVuIHJlbGF0aXZl
IHBhdHRlcm4sIGFueXdoZXJlIGluCisgICAgICAgIHRoaXMgc3VidHJlZS4KKyAgICAgICAgIiIi
CisgICAgICAgIHBhdHRlcm4gPSBzZWxmLl9mbGF2b3VyLmNhc2Vmb2xkKHBhdHRlcm4pCisgICAg
ICAgIGRydiwgcm9vdCwgcGF0dGVybl9wYXJ0cyA9IHNlbGYuX2ZsYXZvdXIucGFyc2VfcGFydHMo
KHBhdHRlcm4sKSkKKyAgICAgICAgaWYgZHJ2IG9yIHJvb3Q6CisgICAgICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yKCJOb24tcmVsYXRpdmUgcGF0dGVybnMgYXJlIHVuc3VwcG9ydGVk
IikKKyAgICAgICAgc2VsZWN0b3IgPSBfbWFrZV9zZWxlY3RvcigoIioqIiwpICsgdHVwbGUocGF0
dGVybl9wYXJ0cykpCisgICAgICAgIGZvciBwIGluIHNlbGVjdG9yLnNlbGVjdF9mcm9tKHNlbGYp
OgorICAgICAgICAgICAgeWllbGQgcAorCisgICAgZGVmIGFic29sdXRlKHNlbGYpOgorICAgICAg
ICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgdmVyc2lvbiBvZiB0aGlzIHBhdGguICBUaGlzIGZ1bmN0
aW9uIHdvcmtzCisgICAgICAgIGV2ZW4gaWYgdGhlIHBhdGggZG9lc24ndCBwb2ludCB0byBhbnl0
aGluZy4KKworICAgICAgICBObyBub3JtYWxpemF0aW9uIGlzIGRvbmUsIGkuZS4gYWxsICcuJyBh
bmQgJy4uJyB3aWxsIGJlIGtlcHQgYWxvbmcuCisgICAgICAgIFVzZSByZXNvbHZlKCkgdG8gZ2V0
IHRoZSBjYW5vbmljYWwgcGF0aCB0byBhIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICAjIFhY
WCB1bnRlc3RlZCB5ZXQhCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNl
bGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYuaXNfYWJzb2x1dGUoKToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICMgRklYTUUgdGhpcyBtdXN0IGRlZmVyIHRvIHRo
ZSBzcGVjaWZpYyBmbGF2b3VyIChhbmQsIHVuZGVyIFdpbmRvd3MsCisgICAgICAgICMgdXNlIG50
Ll9nZXRmdWxscGF0aG5hbWUoKSkKKyAgICAgICAgb2JqID0gc2VsZi5fZnJvbV9wYXJ0cyhbb3Mu
Z2V0Y3dkKCldICsgc2VsZi5fcGFydHMsIGluaXQ9RmFsc2UpCisgICAgICAgIG9iai5faW5pdCh0
ZW1wbGF0ZT1zZWxmKQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBkZWYgcmVzb2x2ZShzZWxm
LCBzdHJpY3Q9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSB0aGUgcGF0aCBhYnNv
bHV0ZSwgcmVzb2x2aW5nIGFsbCBzeW1saW5rcyBvbiB0aGUgd2F5IGFuZCBhbHNvCisgICAgICAg
IG5vcm1hbGl6aW5nIGl0IChmb3IgZXhhbXBsZSB0dXJuaW5nIHNsYXNoZXMgaW50byBiYWNrc2xh
c2hlcyB1bmRlcgorICAgICAgICBXaW5kb3dzKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIHMg
PSBzZWxmLl9mbGF2b3VyLnJlc29sdmUoc2VsZiwgc3RyaWN0PXN0cmljdCkKKyAgICAgICAgaWYg
cyBpcyBOb25lOgorICAgICAgICAgICAgIyBObyBzeW1saW5rIHJlc29sdXRpb24gPT4gZm9yIGNv
bnNpc3RlbmN5LCByYWlzZSBhbiBlcnJvciBpZgorICAgICAgICAgICAgIyB0aGUgcGF0aCBpcyBm
b3JiaWRkZW4KKyAgICAgICAgICAgICMgYnV0IG5vdCByYWlzZSBlcnJvciBpZiBmaWxlIGRvZXMg
bm90IGV4aXN0IChzZWUgaXNzdWUgIzU0KS4KKworICAgICAgICAgICAgZGVmIF90cnlfZnVuYygp
OgorICAgICAgICAgICAgICAgIHNlbGYuc3RhdCgpCisKKyAgICAgICAgICAgIGRlZiBfZXhjX2Z1
bmMoZXhjKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIF90cnlfZXhjZXB0
X2ZpbGVub3Rmb3VuZGVycm9yKF90cnlfZnVuYywgX2V4Y19mdW5jKQorICAgICAgICAgICAgcyA9
IHN0cihzZWxmLmFic29sdXRlKCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGVuc3Vy
ZSBzIGlzIGEgc3RyaW5nIChub3JtcGF0aCByZXF1aXJlcyB0aGlzIG9uIG9sZGVyIHB5dGhvbikK
KyAgICAgICAgICAgIHMgPSBzdHIocykKKyAgICAgICAgIyBOb3cgd2UgaGF2ZSBubyBzeW1saW5r
cyBpbiB0aGUgcGF0aCwgaXQncyBzYWZlIHRvIG5vcm1hbGl6ZSBpdC4KKyAgICAgICAgbm9ybWVk
ID0gc2VsZi5fZmxhdm91ci5wYXRobW9kLm5vcm1wYXRoKHMpCisgICAgICAgIG9iaiA9IHNlbGYu
X2Zyb21fcGFydHMoKG5vcm1lZCwpLCBpbml0PUZhbHNlKQorICAgICAgICBvYmouX2luaXQodGVt
cGxhdGU9c2VsZikKKyAgICAgICAgcmV0dXJuIG9iagorCisgICAgZGVmIHN0YXQoc2VsZik6Cisg
ICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgc3RhdCgpIHN5c3Rl
bSBjYWxsIG9uIHRoaXMgcGF0aCwgbGlrZQorICAgICAgICBvcy5zdGF0KCkgZG9lcy4KKyAgICAg
ICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9hY2Nlc3Nvci5zdGF0KHNlbGYpCisKKyAgICBk
ZWYgb3duZXIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIGxvZ2luIG5h
bWUgb2YgdGhlIGZpbGUgb3duZXIuCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHdkCisg
ICAgICAgIHJldHVybiBwd2QuZ2V0cHd1aWQoc2VsZi5zdGF0KCkuc3RfdWlkKS5wd19uYW1lCisK
KyAgICBkZWYgZ3JvdXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIGdy
b3VwIG5hbWUgb2YgdGhlIGZpbGUgZ2lkLgorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IGdy
cAorICAgICAgICByZXR1cm4gZ3JwLmdldGdyZ2lkKHNlbGYuc3RhdCgpLnN0X2dpZCkuZ3JfbmFt
ZQorCisgICAgZGVmIG9wZW4oc2VsZiwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9
Tm9uZSwKKyAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAgICAg
IiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgcG9pbnRlZCBieSB0aGlzIHBhdGggYW5kIHJldHVy
biBhIGZpbGUgb2JqZWN0LCBhcworICAgICAgICB0aGUgYnVpbHQtaW4gb3BlbigpIGZ1bmN0aW9u
IGRvZXMuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAg
ICBzZWxmLl9yYWlzZV9jbG9zZWQoKQorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgz
LCAzKToKKyAgICAgICAgICAgIHJldHVybiBpby5vcGVuKAorICAgICAgICAgICAgICAgIHN0cihz
ZWxmKSwgbW9kZSwgYnVmZmVyaW5nLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAorICAgICAg
ICAgICAgICAgIG9wZW5lcj1zZWxmLl9vcGVuZXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXR1cm4gaW8ub3BlbihzdHIoc2VsZiksIG1vZGUsIGJ1ZmZlcmluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisKKyAgICBkZWYgcmVh
ZF9ieXRlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gYnl0
ZXMgbW9kZSwgcmVhZCBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAg
ICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ncmInKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYu
cmVhZCgpCisKKyAgICBkZWYgcmVhZF90ZXh0KHNlbGYsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1O
b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLCBy
ZWFkIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNl
bGYub3Blbihtb2RlPSdyJywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFzIGY6
CisgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxm
LCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gYnl0ZXMgbW9k
ZSwgd3JpdGUgdG8gaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHNpeC5iaW5hcnlfdHlwZSk6CisgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgJ2RhdGEgbXVzdCBiZSAlcywgbm90ICVz
JyAlCisgICAgICAgICAgICAgICAgKHNpeC5iaW5hcnlfdHlwZS5fX25hbWVfXywgZGF0YS5fX2Ns
YXNzX18uX19uYW1lX18pKQorICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSd3YicpIGFzIGY6
CisgICAgICAgICAgICByZXR1cm4gZi53cml0ZShkYXRhKQorCisgICAgZGVmIHdyaXRlX3RleHQo
c2VsZiwgZGF0YSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgorICAgICAgICAiIiIKKyAg
ICAgICAgT3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGUsIHdyaXRlIHRvIGl0LCBhbmQgY2xvc2Ug
dGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBz
aXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAg
ICAgICAnZGF0YSBtdXN0IGJlICVzLCBub3QgJXMnICUKKyAgICAgICAgICAgICAgICAoc2l4LnRl
eHRfdHlwZS5fX25hbWVfXywgZGF0YS5fX2NsYXNzX18uX19uYW1lX18pKQorICAgICAgICB3aXRo
IHNlbGYub3Blbihtb2RlPSd3JywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFz
IGY6CisgICAgICAgICAgICByZXR1cm4gZi53cml0ZShkYXRhKQorCisgICAgZGVmIHRvdWNoKHNl
bGYsIG1vZGU9MG82NjYsIGV4aXN0X29rPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3Jl
YXRlIHRoaXMgZmlsZSB3aXRoIHRoZSBnaXZlbiBhY2Nlc3MgbW9kZSwgaWYgaXQgZG9lc24ndCBl
eGlzdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAg
IHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIGlmIGV4aXN0X29rOgorICAgICAgICAgICAg
IyBGaXJzdCB0cnkgdG8gYnVtcCBtb2RpZmljYXRpb24gdGltZQorICAgICAgICAgICAgIyBJbXBs
ZW1lbnRhdGlvbiBub3RlOiBHTlUgdG91Y2ggdXNlcyB0aGUgVVRJTUVfTk9XIG9wdGlvbiBvZgor
ICAgICAgICAgICAgIyB0aGUgdXRpbWVuc2F0KCkgLyBmdXRpbWVucygpIGZ1bmN0aW9ucy4KKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9hY2Nlc3Nvci51dGltZShzZWxm
LCBOb25lKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBB
dm9pZCBleGNlcHRpb24gY2hhaW5pbmcKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBmbGFncyA9IG9zLk9fQ1JF
QVQgfCBvcy5PX1dST05MWQorICAgICAgICBpZiBub3QgZXhpc3Rfb2s6CisgICAgICAgICAgICBm
bGFncyB8PSBvcy5PX0VYQ0wKKyAgICAgICAgZmQgPSBzZWxmLl9yYXdfb3BlbihmbGFncywgbW9k
ZSkKKyAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBkZWYgbWtkaXIoc2VsZiwgbW9kZT0wbzc3
NywgcGFyZW50cz1GYWxzZSwgZXhpc3Rfb2s9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAg
Q3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBhdCB0aGlzIGdpdmVuIHBhdGguCisgICAgICAgICIiIgor
ICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQo
KQorCisgICAgICAgIGRlZiBfdHJ5X2Z1bmMoKToKKyAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29y
Lm1rZGlyKHNlbGYsIG1vZGUpCisKKyAgICAgICAgZGVmIF9leGNfZnVuYyhleGMpOgorICAgICAg
ICAgICAgaWYgbm90IHBhcmVudHMgb3Igc2VsZi5wYXJlbnQgPT0gc2VsZjoKKyAgICAgICAgICAg
ICAgICByYWlzZSBleGMKKyAgICAgICAgICAgIHNlbGYucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1
ZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYubWtkaXIobW9kZSwgcGFyZW50cz1G
YWxzZSwgZXhpc3Rfb2s9ZXhpc3Rfb2spCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3Ry
eV9leGNlcHRfZmlsZW5vdGZvdW5kZXJyb3IoX3RyeV9mdW5jLCBfZXhjX2Z1bmMpCisgICAgICAg
IGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBDYW5ub3QgcmVseSBvbiBjaGVja2luZyBm
b3IgRUVYSVNULCBzaW5jZSB0aGUgb3BlcmF0aW5nIHN5c3RlbQorICAgICAgICAgICAgIyBjb3Vs
ZCBnaXZlIHByaW9yaXR5IHRvIG90aGVyIGVycm9ycyBsaWtlIEVBQ0NFUyBvciBFUk9GUworICAg
ICAgICAgICAgaWYgbm90IGV4aXN0X29rIG9yIG5vdCBzZWxmLmlzX2RpcigpOgorICAgICAgICAg
ICAgICAgIHJhaXNlCisKKyAgICBkZWYgY2htb2Qoc2VsZiwgbW9kZSk6CisgICAgICAgICIiIgor
ICAgICAgICBDaGFuZ2UgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBwYXRoLCBsaWtlIG9zLmNobW9k
KCkuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICBz
ZWxmLl9yYWlzZV9jbG9zZWQoKQorICAgICAgICBzZWxmLl9hY2Nlc3Nvci5jaG1vZChzZWxmLCBt
b2RlKQorCisgICAgZGVmIGxjaG1vZChzZWxmLCBtb2RlKToKKyAgICAgICAgIiIiCisgICAgICAg
IExpa2UgY2htb2QoKSwgZXhjZXB0IGlmIHRoZSBwYXRoIHBvaW50cyB0byBhIHN5bWxpbmssIHRo
ZSBzeW1saW5rJ3MKKyAgICAgICAgcGVybWlzc2lvbnMgYXJlIGNoYW5nZWQsIHJhdGhlciB0aGFu
IGl0cyB0YXJnZXQncy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAg
ICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2FjY2Vzc29yLmxj
aG1vZChzZWxmLCBtb2RlKQorCisgICAgZGVmIHVubGluayhzZWxmKToKKyAgICAgICAgIiIiCisg
ICAgICAgIFJlbW92ZSB0aGlzIGZpbGUgb3IgbGluay4KKyAgICAgICAgSWYgdGhlIHBhdGggaXMg
YSBkaXJlY3RvcnksIHVzZSBybWRpcigpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICBp
ZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQoKQorICAgICAg
ICBzZWxmLl9hY2Nlc3Nvci51bmxpbmsoc2VsZikKKworICAgIGRlZiBybWRpcihzZWxmKToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJlbW92ZSB0aGlzIGRpcmVjdG9yeS4gIFRoZSBkaXJlY3Rvcnkg
bXVzdCBiZSBlbXB0eS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAg
ICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2FjY2Vzc29yLnJt
ZGlyKHNlbGYpCisKKyAgICBkZWYgbHN0YXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBM
aWtlIHN0YXQoKSwgZXhjZXB0IGlmIHRoZSBwYXRoIHBvaW50cyB0byBhIHN5bWxpbmssIHRoZSBz
eW1saW5rJ3MKKyAgICAgICAgc3RhdHVzIGluZm9ybWF0aW9uIGlzIHJldHVybmVkLCByYXRoZXIg
dGhhbiBpdHMgdGFyZ2V0J3MuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6
CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5f
YWNjZXNzb3IubHN0YXQoc2VsZikKKworICAgIGRlZiByZW5hbWUoc2VsZiwgdGFyZ2V0KToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJlbmFtZSB0aGlzIHBhdGggdG8gdGhlIGdpdmVuIHBhdGguCisg
ICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICBzZWxmLl9y
YWlzZV9jbG9zZWQoKQorICAgICAgICBzZWxmLl9hY2Nlc3Nvci5yZW5hbWUoc2VsZiwgdGFyZ2V0
KQorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgdGFyZ2V0KToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlbmFtZSB0aGlzIHBhdGggdG8gdGhlIGdpdmVuIHBhdGgsIGNsb2JiZXJpbmcgdGhlIGV4aXN0
aW5nCisgICAgICAgIGRlc3RpbmF0aW9uIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgIiIiCisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yKCJyZXBsYWNlKCkgaXMgb25seSBhdmFpbGFibGUgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCBQeXRob24gMy4zIGFuZCBsYXRlciIp
CisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3Nl
ZCgpCisgICAgICAgIHNlbGYuX2FjY2Vzc29yLnJlcGxhY2Uoc2VsZiwgdGFyZ2V0KQorCisgICAg
ZGVmIHN5bWxpbmtfdG8oc2VsZiwgdGFyZ2V0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlKToK
KyAgICAgICAgIiIiCisgICAgICAgIE1ha2UgdGhpcyBwYXRoIGEgc3ltbGluayBwb2ludGluZyB0
byB0aGUgZ2l2ZW4gcGF0aC4KKyAgICAgICAgTm90ZSB0aGUgb3JkZXIgb2YgYXJndW1lbnRzIChz
ZWxmLCB0YXJnZXQpIGlzIHRoZSByZXZlcnNlIG9mCisgICAgICAgIG9zLnN5bWxpbmsncy4KKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNlbGYuX3Jh
aXNlX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2FjY2Vzc29yLnN5bWxpbmsodGFyZ2V0LCBzZWxm
LCB0YXJnZXRfaXNfZGlyZWN0b3J5KQorCisgICAgIyBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9y
IHF1ZXJ5aW5nIHRoZSBzdGF0IHJlc3VsdHMKKworICAgIGRlZiBleGlzdHMoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBXaGV0aGVyIHRoaXMgcGF0aCBleGlzdHMuCisgICAgICAgICIiIgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnN0YXQoKQorICAgICAgICBleGNlcHQgT1NF
cnJvciBhcyBlOgorICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CisgICAgICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBleGNlcHQg
VmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRoCisgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19kaXIoc2Vs
Zik6CisgICAgICAgICIiIgorICAgICAgICBXaGV0aGVyIHRoaXMgcGF0aCBpcyBhIGRpcmVjdG9y
eS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBTX0lTRElS
KHNlbGYuc3RhdCgpLnN0X21vZGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAg
ICAgICAgICBpZiBub3QgX2lnbm9yZV9lcnJvcihlKToKKyAgICAgICAgICAgICAgICByYWlzZQor
ICAgICAgICAgICAgIyBQYXRoIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgYSBicm9rZW4gc3ltbGluawor
ICAgICAgICAgICAgIyAoc2VlIGh0dHBzOi8vYml0YnVja2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9p
c3N1ZS8xMi8pCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6CisgICAgICAgICAgICAjIE5vbi1lbmNvZGFibGUgcGF0aAorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfZmlsZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgcmVndWxhciBmaWxlIChhbHNvIFRydWUgZm9yIHN5bWxp
bmtzIHBvaW50aW5nCisgICAgICAgIHRvIHJlZ3VsYXIgZmlsZXMpLgorICAgICAgICAiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFNfSVNSRUcoc2VsZi5zdGF0KCkuc3RfbW9k
ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIG5vdCBfaWdu
b3JlX2Vycm9yKGUpOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIFBhdGgg
ZG9lc24ndCBleGlzdCBvciBpcyBhIGJyb2tlbiBzeW1saW5rCisgICAgICAgICAgICAjIChzZWUg
aHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3VlLzEyLykKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAg
ICMgTm9uLWVuY29kYWJsZSBwYXRoCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRl
ZiBpc19tb3VudChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIGlmIHRoaXMgcGF0
aCBpcyBhIFBPU0lYIG1vdW50IHBvaW50CisgICAgICAgICIiIgorICAgICAgICAjIE5lZWQgdG8g
ZXhpc3QgYW5kIGJlIGEgZGlyCisgICAgICAgIGlmIG5vdCBzZWxmLmV4aXN0cygpIG9yIG5vdCBz
ZWxmLmlzX2RpcigpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgcGFyZW50
ID0gUGF0aChzZWxmLnBhcmVudCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFyZW50X2Rl
diA9IHBhcmVudC5zdGF0KCkuc3RfZGV2CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZGV2ID0gc2VsZi5zdGF0KCkuc3RfZGV2Cisg
ICAgICAgIGlmIGRldiAhPSBwYXJlbnRfZGV2OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg
ICAgICAgaW5vID0gc2VsZi5zdGF0KCkuc3RfaW5vCisgICAgICAgIHBhcmVudF9pbm8gPSBwYXJl
bnQuc3RhdCgpLnN0X2lubworICAgICAgICByZXR1cm4gaW5vID09IHBhcmVudF9pbm8KKworICAg
IGRlZiBpc19zeW1saW5rKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2hldGhlciB0aGlz
IHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgcmV0dXJuIFNfSVNMTksoc2VsZi5sc3RhdCgpLnN0X21vZGUpCisgICAgICAgIGV4
Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9lcnJvcihlKToK
KyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgIyBQYXRoIGRvZXNuJ3QgZXhpc3QK
KyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg
ICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRoCisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBpc19ibG9ja19kZXZpY2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBX
aGV0aGVyIHRoaXMgcGF0aCBpcyBhIGJsb2NrIGRldmljZS4KKyAgICAgICAgIiIiCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHJldHVybiBTX0lTQkxLKHNlbGYuc3RhdCgpLnN0X21vZGUpCisg
ICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9l
cnJvcihlKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgIyBQYXRoIGRvZXNu
J3QgZXhpc3Qgb3IgaXMgYSBicm9rZW4gc3ltbGluaworICAgICAgICAgICAgIyAoc2VlIGh0dHBz
Oi8vYml0YnVja2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9pc3N1ZS8xMi8pCisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIE5v
bi1lbmNvZGFibGUgcGF0aAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNf
Y2hhcl9kZXZpY2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXaGV0aGVyIHRoaXMgcGF0
aCBpcyBhIGNoYXJhY3RlciBkZXZpY2UuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAg
ICAgICAgICByZXR1cm4gU19JU0NIUihzZWxmLnN0YXQoKS5zdF9tb2RlKQorICAgICAgICBleGNl
cHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6Cisg
ICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0IG9y
IGlzIGEgYnJva2VuIHN5bWxpbmsKKyAgICAgICAgICAgICMgKHNlZSBodHRwczovL2JpdGJ1Y2tl
dC5vcmcvcGl0cm91L3BhdGhsaWIvaXNzdWUvMTIvKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxl
IHBhdGgKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2ZpZm8oc2VsZik6
CisgICAgICAgICIiIgorICAgICAgICBXaGV0aGVyIHRoaXMgcGF0aCBpcyBhIEZJRk8uCisgICAg
ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gU19JU0ZJRk8oc2VsZi5z
dGF0KCkuc3RfbW9kZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAg
IGlmIG5vdCBfaWdub3JlX2Vycm9yKGUpOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAg
ICAgICAjIFBhdGggZG9lc24ndCBleGlzdCBvciBpcyBhIGJyb2tlbiBzeW1saW5rCisgICAgICAg
ICAgICAjIChzZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3VlLzEy
LykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoK
KyAgICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRoCisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19zb2NrZXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXaGV0
aGVyIHRoaXMgcGF0aCBpcyBhIHNvY2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJldHVybiBTX0lTU09DSyhzZWxmLnN0YXQoKS5zdF9tb2RlKQorICAgICAgICBl
eGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6
CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0
IG9yIGlzIGEgYnJva2VuIHN5bWxpbmsKKyAgICAgICAgICAgICMgKHNlZSBodHRwczovL2JpdGJ1
Y2tldC5vcmcvcGl0cm91L3BhdGhsaWIvaXNzdWUvMTIvKQorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBOb24tZW5jb2Rh
YmxlIHBhdGgKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGV4cGFuZHVzZXIo
c2VsZik6CisgICAgICAgICIiIiBSZXR1cm4gYSBuZXcgcGF0aCB3aXRoIGV4cGFuZGVkIH4gYW5k
IH51c2VyIGNvbnN0cnVjdHMKKyAgICAgICAgKGFzIHJldHVybmVkIGJ5IG9zLnBhdGguZXhwYW5k
dXNlcikKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChub3QgKHNlbGYuX2RydiBvciBzZWxmLl9y
b290KQorICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9wYXJ0cyBhbmQgc2VsZi5fcGFydHNbMF1b
OjFdID09ICd+Jyk6CisgICAgICAgICAgICBob21lZGlyID0gc2VsZi5fZmxhdm91ci5nZXRob21l
ZGlyKHNlbGYuX3BhcnRzWzBdWzE6XSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3Bh
cnRzKFtob21lZGlyXSArIHNlbGYuX3BhcnRzWzE6XSkKKworICAgICAgICByZXR1cm4gc2VsZgor
CisKK2NsYXNzIFBvc2l4UGF0aChQYXRoLCBQdXJlUG9zaXhQYXRoKToKKyAgICAiIiJQYXRoIHN1
YmNsYXNzIGZvciBub24tV2luZG93cyBzeXN0ZW1zLgorCisgICAgT24gYSBQT1NJWCBzeXN0ZW0s
IGluc3RhbnRpYXRpbmcgYSBQYXRoIHNob3VsZCByZXR1cm4gdGhpcyBvYmplY3QuCisgICAgIiIi
CisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBXaW5kb3dzUGF0aChQYXRoLCBQdXJlV2lu
ZG93c1BhdGgpOgorICAgICIiIlBhdGggc3ViY2xhc3MgZm9yIFdpbmRvd3Mgc3lzdGVtcy4KKwor
ICAgIE9uIGEgV2luZG93cyBzeXN0ZW0sIGluc3RhbnRpYXRpbmcgYSBQYXRoIHNob3VsZCByZXR1
cm4gdGhpcyBvYmplY3QuCisgICAgIiIiCisgICAgX19zbG90c19fID0gKCkKKworICAgIGRlZiBv
d25lcihzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiUGF0aC5vd25l
cigpIGlzIHVuc3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtIikKKworICAgIGRlZiBncm91cChzZWxm
KToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiUGF0aC5ncm91cCgpIGlzIHVu
c3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtIikKKworICAgIGRlZiBpc19tb3VudChzZWxmKToKKyAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgICAgICJQYXRoLmlzX21v
dW50KCkgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YXRobGliMi9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9yZXF1aXJlbWVudHMudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWQ0MzIxMjc5MDBlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAg
KzEsMyBAQAorc2l4CitzY2FuZGlyOyBweXRob25fdmVyc2lvbiA8ICczLjUnCittb2NrOyBweXRo
b25fdmVyc2lvbiA8ICczLjMnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3NldHVwLmNmZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGF0aGxpYjIvc2V0dXAuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMzJhZmM4NjFkMzE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9z
ZXR1cC5jZmcKQEAgLTAsMCArMSw4IEBACitbbm9zZXRlc3RzXQord2l0aC1jb3ZlcmFnZT0xCitj
b3Zlci1wYWNrYWdlPXBhdGhsaWIyCitjb3Zlci1icmFuY2hlcz0xCitjb3Zlci1odG1sPTEKKwor
W3doZWVsXQordW5pdmVyc2FsID0gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9zZXR1cC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGF0aGxpYjIvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5jYmI2YWFhMGRmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIy
L3NldHVwLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcgTWF0
dGhpYXMgQy4gTS4gVHJvZmZhZXMKKyMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQW50b2luZSBQ
aXRyb3UgYW5kIGNvbnRyaWJ1dG9ycworIyBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIE1JVCBMaWNlbnNlLgorCitpbXBvcnQgaW8KK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0
dXAsIGZpbmRfcGFja2FnZXMKKworCitkZWYgcmVhZGZpbGUoZmlsZW5hbWUpOgorICAgIHdpdGgg
aW8ub3BlbihmaWxlbmFtZSwgZW5jb2Rpbmc9InV0Zi04IikgYXMgc3RyZWFtOgorICAgICAgICBy
ZXR1cm4gc3RyZWFtLnJlYWQoKS5zcGxpdCgiXG4iKQorCisKK3JlYWRtZSA9IHJlYWRmaWxlKCJS
RUFETUUucnN0IilbNTpdICAjIHNraXAgdGl0bGUgYW5kIGJhZGdlcwordmVyc2lvbiA9IHJlYWRm
aWxlKCJWRVJTSU9OIilbMF0uc3RyaXAoKQorCitzZXR1cCgKKyAgICBuYW1lPSdwYXRobGliMics
CisgICAgdmVyc2lvbj12ZXJzaW9uLAorICAgIHBhY2thZ2VzPWZpbmRfcGFja2FnZXMoKSwKKyAg
ICBsaWNlbnNlPSdNSVQnLAorICAgIGRlc2NyaXB0aW9uPSdPYmplY3Qtb3JpZW50ZWQgZmlsZXN5
c3RlbSBwYXRocycsCisgICAgbG9uZ19kZXNjcmlwdGlvbj0iXG4iLmpvaW4ocmVhZG1lWzI6XSks
CisgICAgYXV0aG9yPSdNYXR0aGlhcyBDLiBNLiBUcm9mZmFlcycsCisgICAgYXV0aG9yX2VtYWls
PSdtYXR0aGlhcy50cm9mZmFlc0BnbWFpbC5jb20nLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAg
ICAgJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUnLAorICAgICAg
ICAnSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycycsCisgICAgICAgICdMaWNlbnNlIDo6
IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsCisgICAgICAgICdPcGVyYXRpbmcgU3lzdGVt
IDo6IE9TIEluZGVwZW5kZW50JywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5
dGhvbicsCisgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMicsCisg
ICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMycsCisgICAgICAgICdQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywKKyAgICAgICAgJ1Byb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDMuNCcsCisgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMy41JywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzLjYnLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMu
NycsCisgICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMn
LAorICAgICAgICAnVG9waWMgOjogU3lzdGVtIDo6IEZpbGVzeXN0ZW1zJywKKyAgICAgICAgXSwK
KyAgICB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9tY210cm9mZmFlcy9wYXRobGliMicsCisgICAg
aW5zdGFsbF9yZXF1aXJlcz1bJ3NpeCddLAorICAgIGV4dHJhc19yZXF1aXJlPXsKKyAgICAgICAg
JzpweXRob25fdmVyc2lvbjwiMy41Iic6IFsnc2NhbmRpciddLAorICAgICAgICB9LAorKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYXRobGliMi90ZXN0cy90ZXN0X3BhdGhsaWIyLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRo
bGliMi90ZXN0cy90ZXN0X3BhdGhsaWIyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNjVhNTI4MWE5ZDcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGli
Mi90ZXN0cy90ZXN0X3BhdGhsaWIyLnB5CkBAIC0wLDAgKzEsMjQwNiBAQAorIyBDb3B5cmlnaHQg
KGMpIDIwMTQtMjAxNyBNYXR0aGlhcyBDLiBNLiBUcm9mZmFlcworIyBDb3B5cmlnaHQgKGMpIDIw
MTItMjAxNCBBbnRvaW5lIFBpdHJvdSBhbmQgY29udHJpYnV0b3JzCisjIERpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIExpY2Vuc2UuCisKKworaW1wb3J0IGlvCitpbXBvcnQg
b3MKK2ltcG9ydCBlcnJubworaW1wb3J0IHBhdGhsaWIyIGFzIHBhdGhsaWIKK2ltcG9ydCBwaWNr
bGUKK2ltcG9ydCBzaXgKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCitp
bXBvcnQgdGVtcGZpbGUKKworaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMyk6CisgICAgaW1w
b3J0IGNvbGxlY3Rpb25zLmFiYyBhcyBjb2xsZWN0aW9uc19hYmMKK2Vsc2U6CisgICAgaW1wb3J0
IGNvbGxlY3Rpb25zIGFzIGNvbGxlY3Rpb25zX2FiYworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwg
KDIsIDcpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAor
ICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInVuaXR0
ZXN0MiBpcyByZXF1aXJlZCBmb3IgdGVzdHMgb24gcHJlLTIuNyIpCitlbHNlOgorICAgIGltcG9y
dCB1bml0dGVzdAorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIHRyeToKKyAg
ICAgICAgaW1wb3J0IG1vY2sKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJhaXNl
IEltcG9ydEVycm9yKCJtb2NrIGlzIHJlcXVpcmVkIGZvciB0ZXN0cyBvbiBwcmUtMy4zIikKK2Vs
c2U6CisgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCisjIGFzc2VydFJhaXNlc1JlZ2V4
IGlzIG1pc3NpbmcgcHJpb3IgdG8gUHl0aG9uIDMuMgoraWYgc3lzLnZlcnNpb25faW5mbyA8ICgz
LCAyKToKKyAgICB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRSYWlzZXNSZWdleCA9IHVuaXR0ZXN0
LlRlc3RDYXNlLmFzc2VydFJhaXNlc1JlZ2V4cAorCit0cnk6CisgICAgZnJvbSB0ZXN0IGltcG9y
dCBzdXBwb3J0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0
X3N1cHBvcnQgYXMgc3VwcG9ydAorCithbmRyb2lkX25vdF9yb290ID0gZ2V0YXR0cihzdXBwb3J0
LCAiYW5kcm9pZF9ub3Rfcm9vdCIsIEZhbHNlKQorCitURVNURk4gPSBzdXBwb3J0LlRFU1RGTgor
CisjIHdvcmsgYXJvdW5kIGJyb2tlbiBzdXBwb3J0LnJtdHJlZSBvbiBQeXRob24gMy4zIG9uIFdp
bmRvd3MKK2lmIChvcy5uYW1lID09ICdudCcKKyAgICAgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8g
Pj0gKDMsIDApIGFuZCBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDQpKToKKyAgICBpbXBvcnQgc2h1
dGlsCisgICAgc3VwcG9ydC5ybXRyZWUgPSBzaHV0aWwucm10cmVlCisKK3RyeToKKyAgICBpbXBv
cnQgZ3JwCisgICAgaW1wb3J0IHB3ZAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdycCA9IHB3
ZCA9IE5vbmUKKworIyBzdXBwb3J0LmNhbl9zeW1saW5rIGlzIG1pc3NpbmcgcHJpb3IgdG8gUHl0
aG9uIDMKK2lmIHNpeC5QWTI6CisKKyAgICBkZWYgc3VwcG9ydF9jYW5fc3ltbGluaygpOgorICAg
ICAgICByZXR1cm4gcGF0aGxpYi5zdXBwb3J0c19zeW1saW5rcworCisgICAgc3VwcG9ydF9za2lw
X3VubGVzc19zeW1saW5rID0gdW5pdHRlc3Quc2tpcElmKAorICAgICAgICBub3QgcGF0aGxpYi5z
dXBwb3J0c19zeW1saW5rcywKKyAgICAgICAgInN5bWxpbmtzIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBwbGF0Zm9ybSIpCitlbHNlOgorICAgIHN1cHBvcnRfY2FuX3N5bWxpbmsgPSBzdXBwb3J0LmNh
bl9zeW1saW5rCisgICAgc3VwcG9ydF9za2lwX3VubGVzc19zeW1saW5rID0gc3VwcG9ydC5za2lw
X3VubGVzc19zeW1saW5rCisKKworIyBCYWNrcG9ydGVkIGZyb20gMy40CitkZWYgZnNfaXNfY2Fz
ZV9pbnNlbnNpdGl2ZShkaXJlY3RvcnkpOgorICAgICIiIkRldGVjdHMgaWYgdGhlIGZpbGUgc3lz
dGVtIGZvciB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSBpcworICAgIGNhc2UtaW5zZW5zaXRpdmUu
CisgICAgIiIiCisgICAgYmFzZV9mcCwgYmFzZV9wYXRoID0gdGVtcGZpbGUubWtzdGVtcChkaXI9
ZGlyZWN0b3J5KQorICAgIGNhc2VfcGF0aCA9IGJhc2VfcGF0aC51cHBlcigpCisgICAgaWYgY2Fz
ZV9wYXRoID09IGJhc2VfcGF0aDoKKyAgICAgICAgY2FzZV9wYXRoID0gYmFzZV9wYXRoLmxvd2Vy
KCkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBvcy5wYXRoLnNhbWVmaWxlKGJhc2VfcGF0aCwg
Y2FzZV9wYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgIGlmIGUuZXJybm8g
IT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgZmluYWxseToKKyAgICAgICAgb3MudW5saW5rKGJhc2VfcGF0aCkKKworCitzdXBwb3J0
LmZzX2lzX2Nhc2VfaW5zZW5zaXRpdmUgPSBmc19pc19jYXNlX2luc2Vuc2l0aXZlCisKKworY2xh
c3MgX0Jhc2VGbGF2b3VyVGVzdChvYmplY3QpOgorCisgICAgZGVmIF9jaGVja19wYXJzZV9wYXJ0
cyhzZWxmLCBhcmcsIGV4cGVjdGVkKToKKyAgICAgICAgZiA9IHNlbGYuZmxhdm91ci5wYXJzZV9w
YXJ0cworICAgICAgICBzZXAgPSBzZWxmLmZsYXZvdXIuc2VwCisgICAgICAgIGFsdHNlcCA9IHNl
bGYuZmxhdm91ci5hbHRzZXAKKyAgICAgICAgYWN0dWFsID0gZihbeC5yZXBsYWNlKCcvJywgc2Vw
KSBmb3IgeCBpbiBhcmddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0
ZWQpCisgICAgICAgIGlmIGFsdHNlcDoKKyAgICAgICAgICAgIGFjdHVhbCA9IGYoW3gucmVwbGFj
ZSgnLycsIGFsdHNlcCkgZm9yIHggaW4gYXJnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IGFjdHVhbAor
ICAgICAgICAjIG5laXRoZXIgYnl0ZXMgKHB5Mykgbm9yIHVuaWNvZGUgKHB5MikKKyAgICAgICAg
c2VsZi5hc3NlcnRJc0luc3RhbmNlKGRydiwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5z
dGFuY2Uocm9vdCwgc3RyKQorICAgICAgICBmb3IgcCBpbiBwYXJ0czoKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBzdHIpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9wYXJ0c19j
b21tb24oc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5fY2hlY2tfcGFyc2VfcGFydHMKKyAg
ICAgICAgc2VwID0gc2VsZi5mbGF2b3VyLnNlcAorICAgICAgICAjIFVuYW5jaG9yZWQgcGFydHMK
KyAgICAgICAgY2hlY2soW10sICAgICAgICAgICAgICAgICAgICgnJywgJycsIFtdKSkKKyAgICAg
ICAgY2hlY2soWydhJ10sICAgICAgICAgICAgICAgICgnJywgJycsIFsnYSddKSkKKyAgICAgICAg
Y2hlY2soWydhLyddLCAgICAgICAgICAgICAgICgnJywgJycsIFsnYSddKSkKKyAgICAgICAgY2hl
Y2soWydhJywgJ2InXSwgICAgICAgICAgICgnJywgJycsIFsnYScsICdiJ10pKQorICAgICAgICAj
IEV4cGFuc2lvbgorICAgICAgICBjaGVjayhbJ2EvYiddLCAgICAgICAgICAgICAgKCcnLCAnJywg
WydhJywgJ2InXSkpCisgICAgICAgIGNoZWNrKFsnYS9iLyddLCAgICAgICAgICAgICAoJycsICcn
LCBbJ2EnLCAnYiddKSkKKyAgICAgICAgY2hlY2soWydhJywgJ2IvYycsICdkJ10sICAgICgnJywg
JycsIFsnYScsICdiJywgJ2MnLCAnZCddKSkKKyAgICAgICAgIyBDb2xsYXBzaW5nIGFuZCBzdHJp
cHBpbmcgZXhjZXNzIHNsYXNoZXMKKyAgICAgICAgY2hlY2soWydhJywgJ2IvL2MnLCAnZCddLCAg
ICgnJywgJycsIFsnYScsICdiJywgJ2MnLCAnZCddKSkKKyAgICAgICAgY2hlY2soWydhJywgJ2Iv
Yy8nLCAnZCddLCAgICgnJywgJycsIFsnYScsICdiJywgJ2MnLCAnZCddKSkKKyAgICAgICAgIyBF
bGltaW5hdGluZyBzdGFuZGFsb25lIGRvdHMKKyAgICAgICAgY2hlY2soWycuJ10sICAgICAgICAg
ICAgICAgICgnJywgJycsIFtdKSkKKyAgICAgICAgY2hlY2soWycuJywgJy4nLCAnYiddLCAgICAg
ICgnJywgJycsIFsnYiddKSkKKyAgICAgICAgY2hlY2soWydhJywgJy4nLCAnYiddLCAgICAgICgn
JywgJycsIFsnYScsICdiJ10pKQorICAgICAgICBjaGVjayhbJ2EnLCAnLicsICcuJ10sICAgICAg
KCcnLCAnJywgWydhJ10pKQorICAgICAgICAjIFRoZSBmaXJzdCBwYXJ0IGlzIGFuY2hvcmVkCisg
ICAgICAgIGNoZWNrKFsnL2EvYiddLCAgICAgICAgICAgICAoJycsIHNlcCwgW3NlcCwgJ2EnLCAn
YiddKSkKKyAgICAgICAgY2hlY2soWycvYScsICdiJ10sICAgICAgICAgICgnJywgc2VwLCBbc2Vw
LCAnYScsICdiJ10pKQorICAgICAgICBjaGVjayhbJy9hLycsICdiJ10sICAgICAgICAgKCcnLCBz
ZXAsIFtzZXAsICdhJywgJ2InXSkpCisgICAgICAgICMgSWdub3JpbmcgcGFydHMgYmVmb3JlIGFu
IGFuY2hvcmVkIHBhcnQKKyAgICAgICAgY2hlY2soWydhJywgJy9iJywgJ2MnXSwgICAgICgnJywg
c2VwLCBbc2VwLCAnYicsICdjJ10pKQorICAgICAgICBjaGVjayhbJ2EnLCAnL2InLCAnL2MnXSwg
ICAgKCcnLCBzZXAsIFtzZXAsICdjJ10pKQorCisKK2NsYXNzIFBvc2l4Rmxhdm91clRlc3QoX0Jh
c2VGbGF2b3VyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZsYXZvdXIgPSBwYXRobGli
Ll9wb3NpeF9mbGF2b3VyCisKKyAgICBkZWYgdGVzdF9wYXJzZV9wYXJ0cyhzZWxmKToKKyAgICAg
ICAgY2hlY2sgPSBzZWxmLl9jaGVja19wYXJzZV9wYXJ0cworICAgICAgICAjIENvbGxhcHNpbmcg
b2YgZXhjZXNzIGxlYWRpbmcgc2xhc2hlcywgZXhjZXB0IGZvciB0aGUgZG91YmxlLXNsYXNoCisg
ICAgICAgICMgc3BlY2lhbCBjYXNlLgorICAgICAgICBjaGVjayhbJy8vYScsICdiJ10sICAgICAg
ICAgICAgICgnJywgJy8vJywgWycvLycsICdhJywgJ2InXSkpCisgICAgICAgIGNoZWNrKFsnLy8v
YScsICdiJ10sICAgICAgICAgICAgKCcnLCAnLycsIFsnLycsICdhJywgJ2InXSkpCisgICAgICAg
IGNoZWNrKFsnLy8vL2EnLCAnYiddLCAgICAgICAgICAgKCcnLCAnLycsIFsnLycsICdhJywgJ2In
XSkpCisgICAgICAgICMgUGF0aHMgd2hpY2ggbG9vayBsaWtlIE5UIHBhdGhzIGFyZW4ndCB0cmVh
dGVkIHNwZWNpYWxseQorICAgICAgICBjaGVjayhbJ2M6YSddLCAgICAgICAgICAgICAgICAgICgn
JywgJycsIFsnYzphJ10pKQorICAgICAgICBjaGVjayhbJ2M6XFxhJ10sICAgICAgICAgICAgICAg
ICgnJywgJycsIFsnYzpcXGEnXSkpCisgICAgICAgIGNoZWNrKFsnXFxhJ10sICAgICAgICAgICAg
ICAgICAgKCcnLCAnJywgWydcXGEnXSkpCisKKyAgICBkZWYgdGVzdF9zcGxpdHJvb3Qoc2VsZik6
CisgICAgICAgIGYgPSBzZWxmLmZsYXZvdXIuc3BsaXRyb290CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZignJyksICgnJywgJycsICcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdh
JyksICgnJywgJycsICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignYS9iJyksICgn
JywgJycsICdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdhL2IvJyksICgnJywg
JycsICdhL2IvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignL2EnKSwgKCcnLCAnLycs
ICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignL2EvYicpLCAoJycsICcvJywgJ2Ev
YicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJy9hL2IvJyksICgnJywgJy8nLCAnYS9i
LycpKQorICAgICAgICAjIFRoZSByb290IGlzIGNvbGxhcHNlZCB3aGVuIHRoZXJlIGFyZSByZWR1
bmRhbnQgc2xhc2hlcworICAgICAgICAjIGV4Y2VwdCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IHR3
byBsZWFkaW5nIHNsYXNoZXMsIHdoaWNoCisgICAgICAgICMgaXMgYSBzcGVjaWFsIGNhc2UgaW4g
UE9TSVguCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignLy9hJyksICgnJywgJy8vJywgJ2En
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCcvLy9hJyksICgnJywgJy8nLCAnYScpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJy8vL2EvYicpLCAoJycsICcvJywgJ2EvYicpKQor
ICAgICAgICAjIFBhdGhzIHdoaWNoIGxvb2sgbGlrZSBOVCBwYXRocyBhcmVuJ3QgdHJlYXRlZCBz
cGVjaWFsbHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdjOi9hL2InKSwgKCcnLCAnJywg
J2M6L2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ1xcL2EvYicpLCAoJycsICcn
LCAnXFwvYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignXFxhXFxiJyksICgnJywg
JycsICdcXGFcXGInKSkKKworCitjbGFzcyBOVEZsYXZvdXJUZXN0KF9CYXNlRmxhdm91clRlc3Qs
IHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmbGF2b3VyID0gcGF0aGxpYi5fd2luZG93c19mbGF2
b3VyCisKKyAgICBkZWYgdGVzdF9wYXJzZV9wYXJ0cyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBz
ZWxmLl9jaGVja19wYXJzZV9wYXJ0cworICAgICAgICAjIEZpcnN0IHBhcnQgaXMgYW5jaG9yZWQK
KyAgICAgICAgY2hlY2soWydjOiddLCAgICAgICAgICAgICAgICAoJ2M6JywgJycsIFsnYzonXSkp
CisgICAgICAgIGNoZWNrKFsnYzovJ10sICAgICAgICAgICAgICAgKCdjOicsICdcXCcsIFsnYzpc
XCddKSkKKyAgICAgICAgY2hlY2soWycvJ10sICAgICAgICAgICAgICAgICAoJycsICdcXCcsIFsn
XFwnXSkpCisgICAgICAgIGNoZWNrKFsnYzphJ10sICAgICAgICAgICAgICAgKCdjOicsICcnLCBb
J2M6JywgJ2EnXSkpCisgICAgICAgIGNoZWNrKFsnYzovYSddLCAgICAgICAgICAgICAgKCdjOics
ICdcXCcsIFsnYzpcXCcsICdhJ10pKQorICAgICAgICBjaGVjayhbJy9hJ10sICAgICAgICAgICAg
ICAgICgnJywgJ1xcJywgWydcXCcsICdhJ10pKQorICAgICAgICAjIFVOQyBwYXRocworICAgICAg
ICBjaGVjayhbJy8vYS9iJ10sICAgICAgICAgICAgICgnXFxcXGFcXGInLCAnXFwnLCBbJ1xcXFxh
XFxiXFwnXSkpCisgICAgICAgIGNoZWNrKFsnLy9hL2IvJ10sICAgICAgICAgICAgKCdcXFxcYVxc
YicsICdcXCcsIFsnXFxcXGFcXGJcXCddKSkKKyAgICAgICAgY2hlY2soWycvL2EvYi9jJ10sICAg
ICAgICAgICAoJ1xcXFxhXFxiJywgJ1xcJywgWydcXFxcYVxcYlxcJywgJ2MnXSkpCisgICAgICAg
ICMgU2Vjb25kIHBhcnQgaXMgYW5jaG9yZWQsIHNvIHRoYXQgdGhlIGZpcnN0IHBhcnQgaXMgaWdu
b3JlZAorICAgICAgICBjaGVjayhbJ2EnLCAnWjpiJywgJ2MnXSwgICAgICgnWjonLCAnJywgWyda
OicsICdiJywgJ2MnXSkpCisgICAgICAgIGNoZWNrKFsnYScsICdaOi9iJywgJ2MnXSwgICAgKCda
OicsICdcXCcsIFsnWjpcXCcsICdiJywgJ2MnXSkpCisgICAgICAgICMgVU5DIHBhdGhzCisgICAg
ICAgIGNoZWNrKFsnYScsICcvL2IvYycsICdkJ10sICAgKCdcXFxcYlxcYycsICdcXCcsIFsnXFxc
XGJcXGNcXCcsICdkJ10pKQorICAgICAgICAjIENvbGxhcHNpbmcgYW5kIHN0cmlwcGluZyBleGNl
c3Mgc2xhc2hlcworICAgICAgICBjaGVjayhbJ2EnLCAnWjovL2IvL2MvJywgJ2QvJ10sICgnWjon
LCAnXFwnLCBbJ1o6XFwnLCAnYicsICdjJywgJ2QnXSkpCisgICAgICAgICMgVU5DIHBhdGhzCisg
ICAgICAgIGNoZWNrKFsnYScsICcvL2IvYy8vJywgJ2QnXSwgKCdcXFxcYlxcYycsICdcXCcsIFsn
XFxcXGJcXGNcXCcsICdkJ10pKQorICAgICAgICAjIEV4dGVuZGVkIHBhdGhzCisgICAgICAgIGNo
ZWNrKFsnLy8/L2M6LyddLCAgICAgICAgICAgKCdcXFxcP1xcYzonLCAnXFwnLCBbJ1xcXFw/XFxj
OlxcJ10pKQorICAgICAgICBjaGVjayhbJy8vPy9jOi9hJ10sICAgICAgICAgICgnXFxcXD9cXGM6
JywgJ1xcJywgWydcXFxcP1xcYzpcXCcsICdhJ10pKQorICAgICAgICBjaGVjayhbJy8vPy9jOi9h
JywgJy9iJ10sICAgICgnXFxcXD9cXGM6JywgJ1xcJywgWydcXFxcP1xcYzpcXCcsICdiJ10pKQor
ICAgICAgICAjIEV4dGVuZGVkIFVOQyBwYXRocyAoZm9ybWF0IGlzICJcXD9cVU5DXHNlcnZlclxz
aGFyZSIpCisgICAgICAgIGNoZWNrKFsnLy8/L1VOQy9iL2MnXSwKKyAgICAgICAgICAgICAgKCdc
XFxcP1xcVU5DXFxiXFxjJywgJ1xcJywgWydcXFxcP1xcVU5DXFxiXFxjXFwnXSkpCisgICAgICAg
IGNoZWNrKFsnLy8/L1VOQy9iL2MvZCddLAorICAgICAgICAgICAgICAoJ1xcXFw/XFxVTkNcXGJc
XGMnLCAnXFwnLCBbJ1xcXFw/XFxVTkNcXGJcXGNcXCcsICdkJ10pKQorICAgICAgICAjIFNlY29u
ZCBwYXJ0IGhhcyBhIHJvb3QgYnV0IG5vdCBkcml2ZQorICAgICAgICBjaGVjayhbJ2EnLCAnL2In
LCAnYyddLCAgICAgICgnJywgJ1xcJywgWydcXCcsICdiJywgJ2MnXSkpCisgICAgICAgIGNoZWNr
KFsnWjovYScsICcvYicsICdjJ10sICAgKCdaOicsICdcXCcsIFsnWjpcXCcsICdiJywgJ2MnXSkp
CisgICAgICAgIGNoZWNrKFsnLy8/L1o6L2EnLCAnL2InLCAnYyddLAorICAgICAgICAgICAgICAo
J1xcXFw/XFxaOicsICdcXCcsIFsnXFxcXD9cXFo6XFwnLCAnYicsICdjJ10pKQorCisgICAgZGVm
IHRlc3Rfc3BsaXRyb290KHNlbGYpOgorICAgICAgICBmID0gc2VsZi5mbGF2b3VyLnNwbGl0cm9v
dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJycpLCAoJycsICcnLCAnJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZignYScpLCAoJycsICcnLCAnYScpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGYoJ2FcXGInKSwgKCcnLCAnJywgJ2FcXGInKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChmKCdcXGEnKSwgKCcnLCAnXFwnLCAnYScpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGYoJ1xcYVxcYicpLCAoJycsICdcXCcsICdhXFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZignYzphXFxiJyksICgnYzonLCAnJywgJ2FcXGInKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChmKCdjOlxcYVxcYicpLCAoJ2M6JywgJ1xcJywgJ2FcXGInKSkKKyAgICAgICAgIyBS
ZWR1bmRhbnQgc2xhc2hlcyBpbiB0aGUgcm9vdCBhcmUgY29sbGFwc2VkCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZignXFxcXGEnKSwgKCcnLCAnXFwnLCAnYScpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGYoJ1xcXFxcXGEvYicpLCAoJycsICdcXCcsICdhL2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChmKCdjOlxcXFxhJyksICgnYzonLCAnXFwnLCAnYScpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGYoJ2M6XFxcXFxcYS9iJyksICgnYzonLCAnXFwnLCAnYS9iJykpCisg
ICAgICAgICMgVmFsaWQgVU5DIHBhdGhzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignXFxc
XGFcXGInKSwgKCdcXFxcYVxcYicsICdcXCcsICcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChmKCdcXFxcYVxcYlxcJyksICgnXFxcXGFcXGInLCAnXFwnLCAnJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZignXFxcXGFcXGJcXGNcXGQnKSwgKCdcXFxcYVxcYicsICdcXCcsICdjXFxk
JykpCisgICAgICAgICMgVGhlc2UgYXJlIG5vbi1VTkMgcGF0aHMgKGFjY29yZGluZyB0byBudHBh
dGgucHkgYW5kIHRlc3RfbnRwYXRoKQorICAgICAgICAjIEhvd2V2ZXIsIGNvbW1hbmQuY29tIHNh
eXMgc3VjaCBwYXRocyBhcmUgaW52YWxpZCwgc28gaXQncworICAgICAgICAjIGRpZmZpY3VsdCB0
byBrbm93IHdoYXQgdGhlIHJpZ2h0IHNlbWFudGljcyBhcmUKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmKCdcXFxcXFxhXFxiJyksICgnJywgJ1xcJywgJ2FcXGInKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmKCdcXFxcYScpLCAoJycsICdcXCcsICdhJykpCisKKworIworIyBUZXN0cyBm
b3IgdGhlIHB1cmUgY2xhc3NlcworIworCit3aXRoX2ZzZW5jb2RlID0gdW5pdHRlc3Quc2tpcElm
KAorICAgIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMiksCisgICAgJ29zLmZzZW5jb2RlIGhhcyBi
ZWVuIGludHJvZHVjZWQgaW4gdmVyc2lvbiAzLjInKQorCisKK2NsYXNzIF9CYXNlUHVyZVBhdGhU
ZXN0KG9iamVjdCk6CisKKyAgICAjIGtleXMgYXJlIGNhbm9uaWNhbCBwYXRocywgdmFsdWVzIGFy
ZSBsaXN0IG9mIHR1cGxlcyBvZiBhcmd1bWVudHMKKyAgICAjIHN1cHBvc2VkIHRvIHByb2R1Y2Ug
ZXF1YWwgcGF0aHMKKyAgICBlcXVpdmFsZW5jZXMgPSB7CisgICAgICAgICdhL2InOiBbCisgICAg
ICAgICAgICAoJ2EnLCAnYicpLCAoJ2EvJywgJ2InKSwgKCdhJywgJ2IvJyksICgnYS8nLCAnYi8n
KSwKKyAgICAgICAgICAgICgnYS9iLycsKSwgKCdhLy9iJywpLCAoJ2EvL2IvLycsKSwKKyAgICAg
ICAgICAgICMgZW1wdHkgY29tcG9uZW50cyBnZXQgcmVtb3ZlZAorICAgICAgICAgICAgKCcnLCAn
YScsICdiJyksICgnYScsICcnLCAnYicpLCAoJ2EnLCAnYicsICcnKSwKKyAgICAgICAgICAgIF0s
CisgICAgICAgICcvYi9jL2QnOiBbCisgICAgICAgICAgICAoJ2EnLCAnL2IvYycsICdkJyksICgn
YScsICcvLy9iLy9jJywgJ2QvJyksCisgICAgICAgICAgICAoJy9hJywgJy9iL2MnLCAnZCcpLAor
ICAgICAgICAgICAgIyBlbXB0eSBjb21wb25lbnRzIGdldCByZW1vdmVkCisgICAgICAgICAgICAo
Jy8nLCAnYicsICcnLCAnYy9kJyksICgnLycsICcnLCAnYi9jL2QnKSwgKCcnLCAnL2IvYy9kJyks
CisgICAgICAgICAgICBdLAorICAgIH0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
cCA9IHNlbGYuY2xzKCdhJykKKyAgICAgICAgc2VsZi5mbGF2b3VyID0gcC5fZmxhdm91cgorICAg
ICAgICBzZWxmLnNlcCA9IHNlbGYuZmxhdm91ci5zZXAKKyAgICAgICAgc2VsZi5hbHRzZXAgPSBz
ZWxmLmZsYXZvdXIuYWx0c2VwCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9jb21tb24oc2Vs
Zik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnYScpCisgICAgICAgIHNl
bGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBQKQorCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAg
ICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJh
L2IvYyIKKworICAgICAgICBQKCdhJywgJ2InLCAnYycpCisgICAgICAgIFAoJy9hJywgJ2InLCAn
YycpCisgICAgICAgIFAoJ2EvYi9jJykKKyAgICAgICAgUCgnL2EvYi9jJykKKyAgICAgICAgUChQ
YXRoTGlrZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpKSwgUCgnYScpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCAnYicpLCBQKCdhL2InKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgUCgnYicpKSwgUCgnYS9iJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksIFAoJ2InKSwgUCgnYycpKSwgUChQYXRoTGlrZSgp
KSkKKworICAgIGRlZiBfY2hlY2tfc3RyX3N1YmNsYXNzKHNlbGYsICphcmdzKToKKyAgICAgICAg
IyBJc3N1ZSAjMjExMjc6IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjb25zdHJ1Y3QgYSBQdXJl
UGF0aCBvYmplY3QKKyAgICAgICAgIyBmcm9tIGEgc3RyIHN1YmNsYXNzIGluc3RhbmNlLCBhbmQg
aXQgdGhlbiBnZXRzIGNvbnZlcnRlZCB0bworICAgICAgICAjIGEgcHVyZSBzdHIgb2JqZWN0Lgor
ICAgICAgICBjbGFzcyBTdHJTdWJjbGFzcyhzdHIpOgorICAgICAgICAgICAgcGFzcworICAgICAg
ICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoKihTdHJTdWJjbGFzcyh4KSBmb3IgeCBpbiBh
cmdzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKCphcmdzKSkKKyAgICAgICAgZm9y
IHBhcnQgaW4gcC5wYXJ0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShwYXJ0KSwg
c3RyKQorCisgICAgZGVmIHRlc3Rfc3RyX3N1YmNsYXNzX2NvbW1vbihzZWxmKToKKyAgICAgICAg
c2VsZi5fY2hlY2tfc3RyX3N1YmNsYXNzKCcnKQorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3Vi
Y2xhc3MoJy4nKQorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3ViY2xhc3MoJ2EnKQorICAgICAg
ICBzZWxmLl9jaGVja19zdHJfc3ViY2xhc3MoJ2EvYi50eHQnKQorICAgICAgICBzZWxmLl9jaGVj
a19zdHJfc3ViY2xhc3MoJy9hL2IudHh0JykKKworICAgIGRlZiB0ZXN0X2pvaW5fY29tbW9uKHNl
bGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ2EvYicpCisgICAgICAg
IHBwID0gcC5qb2lucGF0aCgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAsIFAoJ2Ev
Yi9jJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShwcCksIHR5cGUocCkpCisgICAgICAg
IHBwID0gcC5qb2lucGF0aCgnYycsICdkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwg
UCgnYS9iL2MvZCcpKQorICAgICAgICBwcCA9IHAuam9pbnBhdGgoUCgnYycpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBwLCBQKCdhL2IvYycpKQorICAgICAgICBwcCA9IHAuam9pbnBhdGgo
Jy9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnL2MnKSkKKworICAgIGRlZiB0
ZXN0X2Rpdl9jb21tb24oc2VsZik6CisgICAgICAgICMgQmFzaWNhbGx5IHRoZSBzYW1lIGFzIGpv
aW5wYXRoKCkKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdhL2InKQorICAg
ICAgICBwcCA9IHAgLyAnYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnYS9iL2Mn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHBwKSwgdHlwZShwKSkKKyAgICAgICAgcHAg
PSBwIC8gJ2MvZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnYS9iL2MvZCcpKQor
ICAgICAgICBwcCA9IHAgLyAnYycgLyAnZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwg
UCgnYS9iL2MvZCcpKQorICAgICAgICBwcCA9ICdjJyAvIHAgLyAnZCcKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwcCwgUCgnYy9hL2IvZCcpKQorICAgICAgICBwcCA9IHAgLyBQKCdjJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnYS9iL2MnKSkKKyAgICAgICAgcHAgPSBwIC8g
Jy9jJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCcvYycpKQorCisgICAgZGVmIF9j
aGVja19zdHIoc2VsZiwgZXhwZWN0ZWQsIGFyZ3MpOgorICAgICAgICBwID0gc2VsZi5jbHMoKmFy
Z3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCBleHBlY3RlZC5yZXBsYWNlKCcv
Jywgc2VsZi5zZXApKQorCisgICAgZGVmIHRlc3Rfc3RyX2NvbW1vbihzZWxmKToKKyAgICAgICAg
IyBDYW5vbmljYWxpemVkIHBhdGhzIHJvdW5kdHJpcAorICAgICAgICBmb3IgcGF0aHN0ciBpbiAo
J2EnLCAnYS9iJywgJ2EvYi9jJywgJy8nLCAnL2EvYicsICcvYS9iL2MnKToKKyAgICAgICAgICAg
IHNlbGYuX2NoZWNrX3N0cihwYXRoc3RyLCAocGF0aHN0ciwpKQorICAgICAgICAjIFNwZWNpYWwg
Y2FzZSBmb3IgdGhlIGVtcHR5IHBhdGgKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RyKCcuJywgKCcn
LCkpCisgICAgICAgICMgT3RoZXIgdGVzdHMgZm9yIHN0cigpIGFyZSBpbiB0ZXN0X2VxdWl2YWxl
bmNlcygpCisKKyAgICBkZWYgdGVzdF9hc19wb3NpeF9jb21tb24oc2VsZik6CisgICAgICAgIFAg
PSBzZWxmLmNscworICAgICAgICBmb3IgcGF0aHN0ciBpbiAoJ2EnLCAnYS9iJywgJ2EvYi9jJywg
Jy8nLCAnL2EvYicsICcvYS9iL2MnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChw
YXRoc3RyKS5hc19wb3NpeCgpLCBwYXRoc3RyKQorICAgICAgICAjIE90aGVyIHRlc3RzIGZvciBh
c19wb3NpeCgpIGFyZSBpbiB0ZXN0X2VxdWl2YWxlbmNlcygpCisKKyAgICBAd2l0aF9mc2VuY29k
ZQorICAgIGRlZiB0ZXN0X2FzX2J5dGVzX2NvbW1vbihzZWxmKToKKyAgICAgICAgc2VwID0gb3Mu
ZnNlbmNvZGUoc2VsZi5zZXApCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ5dGVzKFAoJ2EvYicpKSwgYidhJyArIHNlcCArIGInYicpCisKKyAgICBkZWYg
dGVzdF9hc191cmlfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIFAoJ2EnKS5h
c191cmkoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAg
ICAgICAgICAgUCgpLmFzX3VyaSgpCisKKyAgICBkZWYgdGVzdF9yZXByX2NvbW1vbihzZWxmKToK
KyAgICAgICAgZm9yIHBhdGhzdHIgaW4gKCdhJywgJ2EvYicsICdhL2IvYycsICcvJywgJy9hL2In
LCAnL2EvYi9jJyk6CisgICAgICAgICAgICBwID0gc2VsZi5jbHMocGF0aHN0cikKKyAgICAgICAg
ICAgIGNsc25hbWUgPSBwLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICAgICAgciA9IHJlcHIo
cCkKKyAgICAgICAgICAgICMgVGhlIHJlcHIoKSBpcyBpbiB0aGUgZm9ybSBDbGFzc05hbWUoImZv
cndhcmQtc2xhc2hlcyBwYXRoIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0
c3dpdGgoY2xzbmFtZSArICcoJyksIHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoci5l
bmRzd2l0aCgnKScpLCByKQorICAgICAgICAgICAgaW5uZXIgPSByW2xlbihjbHNuYW1lKSArIDE6
IC0xXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGlubmVyKSwgcC5hc19wb3Np
eCgpKQorICAgICAgICAgICAgIyBUaGUgcmVwcigpIHJvdW5kdHJpcHMKKyAgICAgICAgICAgIHEg
PSBldmFsKHIsIHBhdGhsaWIuX19kaWN0X18pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHEu
X19jbGFzc19fLCBwLl9fY2xhc3NfXykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwg
cCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihxKSwgcikKKworICAgIGRlZiB0
ZXN0X2VxX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnYS9iJyksIFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2EvYicpLCBQKCdhJywgJ2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCdh
L2InKSwgUCgnYScpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoJ2EvYicpLCBQKCcv
YS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoUCgnYS9iJyksIFAoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCcvYS9iJyksIFAoJy8nKSkKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChQKCksIFAoJy8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQ
KCksICIiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoKSwge30pCisgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwoUCgpLCBpbnQpCisKKyAgICBkZWYgdGVzdF9tYXRjaF9jb21tb24o
c2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBQKCdhJykubWF0Y2gsICcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBQKCdhJykubWF0Y2gsICcuJykKKyAgICAgICAgIyBTaW1wbGUgcmVsYXRpdmUg
cGF0dGVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnYi5weScpLm1hdGNoKCdiLnB5Jykp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCdhL2IucHknKS5tYXRjaCgnYi5weScpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoUCgnL2EvYi5weScpLm1hdGNoKCdiLnB5JykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoUCgnYS5weScpLm1hdGNoKCdiLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoUCgnYi9weScpLm1hdGNoKCdiLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoUCgnL2EucHknKS5tYXRjaCgnYi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KFAoJ2IucHkvYycpLm1hdGNoKCdiLnB5JykpCisgICAgICAgICMgV2lsY2FyZCByZWxhdGl2ZSBw
YXR0ZXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCdiLnB5JykubWF0Y2goJyoucHknKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJ2EvYi5weScpLm1hdGNoKCcqLnB5JykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvYS9iLnB5JykubWF0Y2goJyoucHknKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShQKCdiLnB5YycpLm1hdGNoKCcqLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoUCgnYi4vcHknKS5tYXRjaCgnKi5weScpKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKFAoJ2IucHkvYycpLm1hdGNoKCcqLnB5JykpCisgICAgICAgICMgTXVsdGktcGFydCBy
ZWxhdGl2ZSBwYXR0ZXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCdhYi9jLnB5JykubWF0
Y2goJ2EqLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy9kL2FiL2MucHknKS5t
YXRjaCgnYSovKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2EucHknKS5tYXRj
aCgnYSovKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJy9kYWIvYy5weScpLm1h
dGNoKCdhKi8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnYWIvYy5weS9kJyku
bWF0Y2goJ2EqLyoucHknKSkKKyAgICAgICAgIyBBYnNvbHV0ZSBwYXR0ZXJuCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShQKCcvYi5weScpLm1hdGNoKCcvKi5weScpKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKFAoJ2IucHknKS5tYXRjaCgnLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShQKCdhL2IucHknKS5tYXRjaCgnLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShQKCcvYS9iLnB5JykubWF0Y2goJy8qLnB5JykpCisgICAgICAgICMgTXVsdGktcGFydCBhYnNv
bHV0ZSBwYXR0ZXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvYS9iLnB5JykubWF0Y2go
Jy9hLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCcvYWIucHknKS5tYXRjaCgn
L2EvKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJy9hL2IvYy5weScpLm1hdGNo
KCcvYS8qLnB5JykpCisKKyAgICBkZWYgdGVzdF9vcmRlcmluZ19jb21tb24oc2VsZik6CisgICAg
ICAgICMgT3JkZXJpbmcgaXMgdHVwbGUtYWxpa2UKKyAgICAgICAgZGVmIGFzc2VydExlc3MoYSwg
Yik6CisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoYSwgYikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0R3JlYXRlcihiLCBhKQorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgYSA9IFAo
J2EnKQorICAgICAgICBiID0gUCgnYS9iJykKKyAgICAgICAgYyA9IFAoJ2FiYycpCisgICAgICAg
IGQgPSBQKCdiJykKKyAgICAgICAgYXNzZXJ0TGVzcyhhLCBiKQorICAgICAgICBhc3NlcnRMZXNz
KGEsIGMpCisgICAgICAgIGFzc2VydExlc3MoYSwgZCkKKyAgICAgICAgYXNzZXJ0TGVzcyhiLCBj
KQorICAgICAgICBhc3NlcnRMZXNzKGMsIGQpCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAg
ICBhID0gUCgnL2EnKQorICAgICAgICBiID0gUCgnL2EvYicpCisgICAgICAgIGMgPSBQKCcvYWJj
JykKKyAgICAgICAgZCA9IFAoJy9iJykKKyAgICAgICAgYXNzZXJ0TGVzcyhhLCBiKQorICAgICAg
ICBhc3NlcnRMZXNzKGEsIGMpCisgICAgICAgIGFzc2VydExlc3MoYSwgZCkKKyAgICAgICAgYXNz
ZXJ0TGVzcyhiLCBjKQorICAgICAgICBhc3NlcnRMZXNzKGMsIGQpCisgICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm8gPiAoMywpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhU
eXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIFAoKSA8IHt9CisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBQKCkgPCB7fQorCisgICAgZGVmIHRlc3RfcGFydHNfY29tbW9uKHNlbGYpOgorICAg
ICAgICAjIGBwYXJ0c2AgcmV0dXJucyBhIHR1cGxlCisgICAgICAgIHNlcCA9IHNlbGYuc2VwCisg
ICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnYS9iJykKKyAgICAgICAgcGFydHMg
PSBwLnBhcnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFydHMsICgnYScsICdiJykpCisg
ICAgICAgICMgVGhlIG9iamVjdCBnZXRzIHJldXNlZAorICAgICAgICBzZWxmLmFzc2VydElzKHBh
cnRzLCBwLnBhcnRzKQorICAgICAgICAjIFdoZW4gdGhlIHBhdGggaXMgYWJzb2x1dGUsIHRoZSBh
bmNob3IgaXMgYSBzZXBhcmF0ZSBwYXJ0CisgICAgICAgIHAgPSBQKCcvYS9iJykKKyAgICAgICAg
cGFydHMgPSBwLnBhcnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFydHMsIChzZXAsICdh
JywgJ2InKSkKKworICAgIGRlZiB0ZXN0X2ZzcGF0aF9jb21tb24oc2VsZik6CisgICAgICAgIFAg
PSBzZWxmLmNscworICAgICAgICBwID0gUCgnYS9iJykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3Ry
KHAuX19mc3BhdGhfXygpLCAoJ2EvYicsKSkKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+
PSAoMywgNik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19zdHIob3MuZnNwYXRoKHApLCAoJ2Ev
YicsKSkKKworICAgIGRlZiB0ZXN0X2VxdWl2YWxlbmNlcyhzZWxmKToKKyAgICAgICAgZm9yIGss
IHR1cGxlcyBpbiBzZWxmLmVxdWl2YWxlbmNlcy5pdGVtcygpOgorICAgICAgICAgICAgY2Fub24g
PSBrLnJlcGxhY2UoJy8nLCBzZWxmLnNlcCkKKyAgICAgICAgICAgIHBvc2l4ID0gay5yZXBsYWNl
KHNlbGYuc2VwLCAnLycpCisgICAgICAgICAgICBpZiBjYW5vbiAhPSBwb3NpeDoKKyAgICAgICAg
ICAgICAgICB0dXBsZXMgPSB0dXBsZXMgKyBbCisgICAgICAgICAgICAgICAgICAgIHR1cGxlKHBh
cnQucmVwbGFjZSgnLycsIHNlbGYuc2VwKSBmb3IgcGFydCBpbiB0KQorICAgICAgICAgICAgICAg
ICAgICBmb3IgdCBpbiB0dXBsZXMKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgIHR1cGxlcy5hcHBlbmQoKHBvc2l4LCApKQorICAgICAgICAgICAgcGNhbm9uID0gc2VsZi5j
bHMoY2Fub24pCisgICAgICAgICAgICBmb3IgdCBpbiB0dXBsZXM6CisgICAgICAgICAgICAgICAg
cCA9IHNlbGYuY2xzKCp0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcGNh
bm9uLCAiZmFpbGVkIHdpdGggYXJncyB7MH0iLmZvcm1hdCh0KSkKKyAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhhc2gocCksIGhhc2gocGNhbm9uKSkKKyAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgY2Fub24pCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwLmFzX3Bvc2l4KCksIHBvc2l4KQorCisgICAgZGVmIHRlc3RfcGFyZW50X2NvbW1v
bihzZWxmKToKKyAgICAgICAgIyBSZWxhdGl2ZQorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAg
ICAgcCA9IFAoJ2EvYi9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudCwgUCgn
YS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LCBQKCdhJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LnBhcmVudCwgUCgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LCBQ
KCkpCisgICAgICAgICMgQW5jaG9yZWQKKyAgICAgICAgcCA9IFAoJy9hL2IvYycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQsIFAoJy9hL2InKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwLnBhcmVudC5wYXJlbnQsIFAoJy9hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocC5wYXJlbnQucGFyZW50LnBhcmVudCwgUCgnLycpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHAucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LCBQKCcvJykpCisKKyAgICBkZWYgdGVz
dF9wYXJlbnRzX2NvbW1vbihzZWxmKToKKyAgICAgICAgIyBSZWxhdGl2ZQorICAgICAgICBQID0g
c2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ2EvYi9jJykKKyAgICAgICAgcGFyID0gcC5wYXJlbnRz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhciksIDMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFyWzBdLCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJb
MV0sIFAoJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJbMl0sIFAoJy4nKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBhciksIFtQKCdhL2InKSwgUCgnYScpLCBQKCcu
JyldKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAg
ICAgICAgcGFyWy0xXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3Ip
OgorICAgICAgICAgICAgcGFyWzNdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlw
ZUVycm9yKToKKyAgICAgICAgICAgIHBhclswXSA9IHAKKyAgICAgICAgIyBBbmNob3JlZAorICAg
ICAgICBwID0gUCgnL2EvYi9jJykKKyAgICAgICAgcGFyID0gcC5wYXJlbnRzCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHBhciksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFy
WzBdLCBQKCcvYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyWzFdLCBQKCcvYScp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhclsyXSwgUCgnLycpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocGFyKSwgW1AoJy9hL2InKSwgUCgnL2EnKSwgUCgnLycpXSkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIHBh
clszXQorCisgICAgZGVmIHRlc3RfZHJpdmVfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2Vs
Zi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2InKS5kcml2ZSwgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYicpLmRyaXZlLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCcnKS5kcml2ZSwgJycpCisKKyAgICBkZWYgdGVzdF9yb290X2NvbW1vbihz
ZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlcCA9IHNlbGYuc2VwCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnJykucm9vdCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnYS9iJykucm9vdCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLycp
LnJvb3QsIHNlcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykucm9vdCwgc2Vw
KQorCisgICAgZGVmIHRlc3RfYW5jaG9yX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYu
Y2xzCisgICAgICAgIHNlcCA9IHNlbGYuc2VwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
JykuYW5jaG9yLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2InKS5hbmNob3Is
ICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8nKS5hbmNob3IsIHNlcCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykuYW5jaG9yLCBzZXApCisKKyAgICBkZWYgdGVz
dF9uYW1lX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnJykubmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
LicpLm5hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8nKS5uYW1lLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2InKS5uYW1lLCAnYicpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoUCgnL2EvYicpLm5hbWUsICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCcvYS9iLy4nKS5uYW1lLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
YS9iLnB5JykubmFtZSwgJ2IucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2Iu
cHknKS5uYW1lLCAnYi5weScpCisKKyAgICBkZWYgdGVzdF9zdWZmaXhfY29tbW9uKHNlbGYpOgor
ICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcnKS5zdWZm
aXgsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy4nKS5zdWZmaXgsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy4uJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCcvJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQ
KCdhL2InKS5zdWZmaXgsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2InKS5z
dWZmaXgsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IvLicpLnN1ZmZpeCwg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iLnB5Jykuc3VmZml4LCAnLnB5JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iLnB5Jykuc3VmZml4LCAnLnB5JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhLy5oZ3JjJykuc3VmZml4LCAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQKCcvYS8uaGdyYycpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnYS8uaGcucmMnKS5zdWZmaXgsICcucmMnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFAoJy9hLy5oZy5yYycpLnN1ZmZpeCwgJy5yYycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnYS9iLnRhci5neicpLnN1ZmZpeCwgJy5neicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnL2EvYi50YXIuZ3onKS5zdWZmaXgsICcuZ3onKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFAoJ2EvU29tZSBuYW1lLiBFbmRpbmcgd2l0aCBhIGRvdC4nKS5zdWZmaXgsICcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL1NvbWUgbmFtZS4gRW5kaW5nIHdpdGgg
YSBkb3QuJykuc3VmZml4LCAnJykKKworICAgIGRlZiB0ZXN0X3N1ZmZpeGVzX2NvbW1vbihzZWxm
KToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnJyku
c3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy4nKS5zdWZmaXhlcywg
W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLycpLnN1ZmZpeGVzLCBbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2InKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnL2EvYicpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCcvYS9iLy4nKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
UCgnYS9iLnB5Jykuc3VmZml4ZXMsIFsnLnB5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
UCgnL2EvYi5weScpLnN1ZmZpeGVzLCBbJy5weSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2EvLmhncmMnKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
L2EvLmhncmMnKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS8u
aGcucmMnKS5zdWZmaXhlcywgWycucmMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcv
YS8uaGcucmMnKS5zdWZmaXhlcywgWycucmMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQ
KCdhL2IudGFyLmd6Jykuc3VmZml4ZXMsIFsnLnRhcicsICcuZ3onXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCcvYS9iLnRhci5neicpLnN1ZmZpeGVzLCBbJy50YXInLCAnLmd6J10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9Tb21lIG5hbWUuIEVuZGluZyB3aXRoIGEgZG90
LicpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9Tb21lIG5h
bWUuIEVuZGluZyB3aXRoIGEgZG90LicpLnN1ZmZpeGVzLCBbXSkKKworICAgIGRlZiB0ZXN0X3N0
ZW1fY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChQKCcnKS5zdGVtLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcuJyku
c3RlbSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLi4nKS5zdGVtLCAnLi4nKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8nKS5zdGVtLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCdhL2InKS5zdGVtLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
UCgnYS9iLnB5Jykuc3RlbSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvLmhn
cmMnKS5zdGVtLCAnLmhncmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvLmhnLnJj
Jykuc3RlbSwgJy5oZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iLnRhci5neicp
LnN0ZW0sICdiLnRhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9Tb21lIG5hbWUu
IEVuZGluZyB3aXRoIGEgZG90LicpLnN0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nv
bWUgbmFtZS4gRW5kaW5nIHdpdGggYSBkb3QuJykKKworICAgIGRlZiB0ZXN0X3dpdGhfbmFtZV9j
b21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFAoJ2EvYicpLndpdGhfbmFtZSgnZC54bWwnKSwgUCgnYS9kLnhtbCcpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFAoJy9hL2InKS53aXRoX25hbWUoJ2QueG1sJyksIFAoJy9hL2QueG1s
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iLnB5Jykud2l0aF9uYW1lKCdkLnht
bCcpLCBQKCdhL2QueG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYi5weScp
LndpdGhfbmFtZSgnZC54bWwnKSwgUCgnL2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCdhL0RvdCBlbmRpbmcuJykud2l0aF9uYW1lKCdkLnhtbCcpLCBQKCdhL2QueG1sJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvRG90IGVuZGluZy4nKS53aXRoX25hbWUo
J2QueG1sJyksIFAoJy9hL2QueG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIFAoJycpLndpdGhfbmFtZSwgJ2QueG1sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgUCgnLicpLndpdGhfbmFtZSwgJ2QueG1sJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnLycpLndpdGhfbmFtZSwgJ2QueG1sJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYS9iJykud2l0aF9uYW1lLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYS9iJykud2l0aF9uYW1l
LCAnL2MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53
aXRoX25hbWUsICdjLycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAo
J2EvYicpLndpdGhfbmFtZSwgJ2MvZCcpCisKKyAgICBkZWYgdGVzdF93aXRoX3N1ZmZpeF9jb21t
b24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2EvYicpLndpdGhfc3VmZml4KCcuZ3onKSwgUCgnYS9iLmd6JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnL2EvYicpLndpdGhfc3VmZml4KCcuZ3onKSwgUCgnL2EvYi5neicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvYi5weScpLndpdGhfc3VmZml4KCcuZ3onKSwg
UCgnYS9iLmd6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYi5weScpLndpdGhf
c3VmZml4KCcuZ3onKSwgUCgnL2EvYi5neicpKQorICAgICAgICAjIFN0cmlwcGluZyBzdWZmaXgK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2IucHknKS53aXRoX3N1ZmZpeCgnJyksIFAo
J2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2InKS53aXRoX3N1ZmZpeCgn
JyksIFAoJy9hL2InKSkKKyAgICAgICAgIyBQYXRoIGRvZXNuJ3QgaGF2ZSBhICJmaWxlbmFtZSIg
Y29tcG9uZW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJycpLndp
dGhfc3VmZml4LCAnLmd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
UCgnLicpLndpdGhfc3VmZml4LCAnLmd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgUCgnLycpLndpdGhfc3VmZml4LCAnLmd6JykKKyAgICAgICAgIyBJbnZhbGlkIHN1
ZmZpeAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRo
X3N1ZmZpeCwgJ2d6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgn
YS9iJykud2l0aF9zdWZmaXgsICcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvciwgUCgnYS9iJykud2l0aF9zdWZmaXgsICcuJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgUCgnYS9iJykud2l0aF9zdWZmaXgsICcvLmd6JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYS9iJykud2l0aF9zdWZmaXgsICdjL2QnKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRoX3N1ZmZp
eCwgJy5jLy5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYS9i
Jykud2l0aF9zdWZmaXgsICcuLy5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvciwgUCgnYS9iJykud2l0aF9zdWZmaXgsICcuZC8uJykKKworICAgIGRlZiB0ZXN0X3JlbGF0
aXZlX3RvX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQ
KCdhL2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAucmVsYXRpdmVf
dG8pCisgICAgICAgIGlmIHNpeC5QWTM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhU
eXBlRXJyb3IsIHAucmVsYXRpdmVfdG8sIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cC5yZWxhdGl2ZV90byhQKCkpLCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
LnJlbGF0aXZlX3RvKCcnKSwgUCgnYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5y
ZWxhdGl2ZV90byhQKCdhJykpLCBQKCdiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5y
ZWxhdGl2ZV90bygnYScpLCBQKCdiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxh
dGl2ZV90bygnYS8nKSwgUCgnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRp
dmVfdG8oUCgnYS9iJykpLCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2
ZV90bygnYS9iJyksIFAoKSkKKyAgICAgICAgIyBXaXRoIHNldmVyYWwgYXJncworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJ2EnLCAnYicpLCBQKCkpCisgICAgICAgICMg
VW5yZWxhdGVkIHBhdGhzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAu
cmVsYXRpdmVfdG8sIFAoJ2MnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgcC5yZWxhdGl2ZV90bywgUCgnYS9iL2MnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnYS9jJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJy9hJykpCisgICAgICAgIHAgPSBQ
KCcvYS9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAoJy8nKSks
IFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJy8nKSwg
UCgnYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCcvYScp
KSwgUCgnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJy9hJyks
IFAoJ2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCcvYS8nKSwg
UCgnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oUCgnL2EvYicp
KSwgUCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJy9hL2InKSwg
UCgpKQorICAgICAgICAjIFVucmVsYXRlZCBwYXRocworICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcvYycpKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcvYS9iL2MnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnL2EvYycpKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sICcn
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQ
KCdhJykpCisKKyAgICBkZWYgdGVzdF9waWNrbGluZ19jb21tb24oc2VsZik6CisgICAgICAgIFAg
PSBzZWxmLmNscworICAgICAgICBwID0gUCgnL2EvYicpCisgICAgICAgIGZvciBwcm90byBpbiBy
YW5nZSgwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZHVtcGVk
ID0gcGlja2xlLmR1bXBzKHAsIHByb3RvKQorICAgICAgICAgICAgcHAgPSBwaWNrbGUubG9hZHMo
ZHVtcGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcC5fX2NsYXNzX18sIHAuX19jbGFz
c19fKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgcCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGFzaChwcCksIGhhc2gocCkpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cihwcCksIHN0cihwKSkKKworICAgICMgbm90ZTogdGhpcyBpcyBhIG5ldyB0ZXN0
IG5vdCBwYXJ0IG9mIHVwc3RyZWFtCisgICAgIyB0ZXN0IHRoYXQgdW5pY29kZSB3b3JrcyBvbiBQ
eXRob24gMgorICAgIEB1bml0dGVzdC5za2lwSWYoCisgICAgICAgIHNpeC51bmljaHIoMHgwMTAw
KS5lbmNvZGUoCisgICAgICAgICAgICBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCksICJyZXBs
YWNlIikgPT0gYiI/IiwKKyAgICAgICAgImZpbGUgc3lzdGVtIGVuY29kaW5nIG9ubHkgc3VwcG9y
dHMgYXNjaWkiKQorICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuY2xz
KHNpeC51bmljaHIoMHgwMTAwKSkKKworCitjbGFzcyBQdXJlUG9zaXhQYXRoVGVzdChfQmFzZVB1
cmVQYXRoVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNscyA9IHBhdGhsaWIuUHVyZVBv
c2l4UGF0aAorCisgICAgZGVmIHRlc3Rfcm9vdChzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYicpLnJvb3QsICcvJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQKCcvLy9hL2InKS5yb290LCAnLycpCisgICAgICAgICMgUE9TSVgg
c3BlY2lhbCBjYXNlIGZvciB0d28gbGVhZGluZyBzbGFzaGVzCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnLy9hL2InKS5yb290LCAnLy8nKQorCisgICAgZGVmIHRlc3RfZXEoc2VsZik6Cisg
ICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoJ2EvYicp
LCBQKCdBL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYScpLCBQKCcvLy9hJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoUCgnL2EnKSwgUCgnLy9hJykpCisKKyAgICBk
ZWYgdGVzdF9hc191cmkoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFAoJy8nKS5hc191cmkoKSwgJ2ZpbGU6Ly8vJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCcvYS9iLmMnKS5hc191cmkoKSwgJ2ZpbGU6Ly8vYS9iLmMnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IlI2MnKS5hc191cmkoKSwgJ2ZpbGU6Ly8vYS9iJTI1
JTIzYycpCisKKyAgICBAd2l0aF9mc2VuY29kZQorICAgIGRlZiB0ZXN0X2FzX3VyaV9ub25fYXNj
aWkoc2VsZik6CisgICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZV9mcm9tX2J5
dGVzCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5m
c2VuY29kZSgnXHhlOScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAg
ICAgICAgICBzZWxmLnNraXBUZXN0KCJcXHhlOSBjYW5ub3QgYmUgZW5jb2RlZCB0byB0aGUgZmls
ZXN5c3RlbSBlbmNvZGluZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYlx4ZTkn
KS5hc191cmkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9hL2InICsgcXVv
dGVfZnJvbV9ieXRlcyhvcy5mc2VuY29kZSgnXHhlOScpKSkKKworICAgIGRlZiB0ZXN0X21hdGNo
KHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQ
KCdBLnB5JykubWF0Y2goJ2EuUFknKSkKKworICAgIGRlZiB0ZXN0X2lzX2Fic29sdXRlKHNlbGYp
OgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCkuaXNf
YWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdhJykuaXNfYWJzb2x1dGUo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdhL2IvJykuaXNfYWJzb2x1dGUoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy8nKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoUCgnL2EnKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoUCgnL2EvYi8nKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgn
Ly9hJykuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy8vYS9iJyku
aXNfYWJzb2x1dGUoKSkKKworICAgIGRlZiB0ZXN0X2lzX3Jlc2VydmVkKHNlbGYpOgorICAgICAg
ICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnJykuaXNfcmVz
ZXJ2ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnLycpLmlzX3Jlc2VydmVk
KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIFAoJy9mb28vYmFyJykuaXNfcmVzZXJ2
ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnL2Rldi9jb24vUFJOL05VTCcp
LmlzX3Jlc2VydmVkKCkpCisKKyAgICBkZWYgdGVzdF9qb2luKHNlbGYpOgorICAgICAgICBQID0g
c2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJy8vYScpCisgICAgICAgIHBwID0gcC5qb2lucGF0aCgn
YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAsIFAoJy8vYS9iJykpCisgICAgICAgIHBw
ID0gUCgnL2EnKS5qb2lucGF0aCgnLy9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwg
UCgnLy9jJykpCisgICAgICAgIHBwID0gUCgnLy9hJykuam9pbnBhdGgoJy9jJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnL2MnKSkKKworICAgIGRlZiB0ZXN0X2RpdihzZWxmKToK
KyAgICAgICAgIyBCYXNpY2FsbHkgdGhlIHNhbWUgYXMgam9pbnBhdGgoKQorICAgICAgICBQID0g
c2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJy8vYScpCisgICAgICAgIHBwID0gcCAvICdiJworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCcvL2EvYicpKQorICAgICAgICBwcCA9IFAoJy9h
JykgLyAnLy9jJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCcvL2MnKSkKKyAgICAg
ICAgcHAgPSBQKCcvL2EnKSAvICcvYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgn
L2MnKSkKKworCitjbGFzcyBQdXJlV2luZG93c1BhdGhUZXN0KF9CYXNlUHVyZVBhdGhUZXN0LCB1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgY2xzID0gcGF0aGxpYi5QdXJlV2luZG93c1BhdGgKKwor
ICAgIGVxdWl2YWxlbmNlcyA9IF9CYXNlUHVyZVBhdGhUZXN0LmVxdWl2YWxlbmNlcy5jb3B5KCkK
KyAgICBlcXVpdmFsZW5jZXMudXBkYXRlKHsKKyAgICAgICAgJ2M6YSc6IFsoJ2M6JywgJ2EnKSwg
KCdjOicsICdhLycpLCAoJy8nLCAnYzonLCAnYScpXSwKKyAgICAgICAgJ2M6L2EnOiBbCisgICAg
ICAgICAgICAoJ2M6LycsICdhJyksICgnYzonLCAnLycsICdhJyksICgnYzonLCAnL2EnKSwKKyAg
ICAgICAgICAgICgnL3onLCAnYzovJywgJ2EnKSwgKCcvL3gveScsICdjOi8nLCAnYScpLAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgJy8vYS9iLyc6IFsoJy8vYS9iJywpXSwKKyAgICAgICAgJy8v
YS9iL2MnOiBbCisgICAgICAgICAgICAoJy8vYS9iJywgJ2MnKSwgKCcvL2EvYi8nLCAnYycpLAor
ICAgICAgICAgICAgXSwKKyAgICB9KQorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAg
ICBwID0gc2VsZi5jbHMoJ2EvYi9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCks
ICdhXFxiXFxjJykKKyAgICAgICAgcCA9IHNlbGYuY2xzKCdjOi9hL2IvYycpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyKHApLCAnYzpcXGFcXGJcXGMnKQorICAgICAgICBwID0gc2VsZi5j
bHMoJy8vYS9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICdcXFxcYVxcYlxc
JykKKyAgICAgICAgcCA9IHNlbGYuY2xzKCcvL2EvYi9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHIocCksICdcXFxcYVxcYlxcYycpCisgICAgICAgIHAgPSBzZWxmLmNscygnLy9hL2Iv
Yy9kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICdcXFxcYVxcYlxcY1xcZCcp
CisKKyAgICBkZWYgdGVzdF9zdHJfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNr
X3N0cl9zdWJjbGFzcygnYzonKQorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3ViY2xhc3MoJ2M6
YScpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJjbGFzcygnYzphXFxiLnR4dCcpCisgICAg
ICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJjbGFzcygnYzpcXCcpCisgICAgICAgIHNlbGYuX2NoZWNr
X3N0cl9zdWJjbGFzcygnYzpcXGEnKQorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3ViY2xhc3Mo
J2M6XFxhXFxiLnR4dCcpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJjbGFzcygnXFxcXHNv
bWVcXHNoYXJlJykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RyX3N1YmNsYXNzKCdcXFxcc29tZVxc
c2hhcmVcXGEnKQorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3ViY2xhc3MoJ1xcXFxzb21lXFxz
aGFyZVxcYVxcYi50eHQnKQorCisgICAgZGVmIHRlc3RfZXEoc2VsZik6CisgICAgICAgIFAgPSBz
ZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9iJyksIFAoJ2M6YS9iJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzphL2InKSwgUCgnYzonLCAnYScsICdiJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoUCgnYzphL2InKSwgUCgnZDphL2InKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCdjOmEvYicpLCBQKCdjOi9hL2InKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCcvYS9iJyksIFAoJ2M6L2EvYicpKQorICAgICAgICAj
IENhc2UtaW5zZW5zaXRpdml0eQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvQicpLCBQ
KCdBL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdDOmEvQicpLCBQKCdjOkEvYicp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vU29tZS9TSEFSRS9hL0InKSwgUCgnLy9z
b21FL3NoYXJlL0EvYicpKQorCisgICAgQHdpdGhfZnNlbmNvZGUKKyAgICBkZWYgdGVzdF9hc191
cmkoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgUCgnL2EvYicpLmFzX3VyaSgpCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBQKCdj
OmEvYicpLmFzX3VyaSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovJykuYXNfdXJp
KCksICdmaWxlOi8vL2M6LycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS9iLmMn
KS5hc191cmkoKSwgJ2ZpbGU6Ly8vYzovYS9iLmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2M6L2EvYiUjYycpLmFzX3VyaSgpLCAnZmlsZTovLy9jOi9hL2IlMjUlMjNjJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2JceGU5JykuYXNfdXJpKCksICdmaWxlOi8vL2M6
L2EvYiVDMyVBOScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9zb21lL3NoYXJlLycp
LmFzX3VyaSgpLCAnZmlsZTovL3NvbWUvc2hhcmUvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCcvL3NvbWUvc2hhcmUvYS9iLmMnKS5hc191cmkoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnZmlsZTovL3NvbWUvc2hhcmUvYS9iLmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJy8vc29tZS9zaGFyZS9hL2IlI2NceGU5JykuYXNfdXJpKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ZpbGU6Ly9zb21lL3NoYXJlL2EvYiUyNSUyM2MlQzMlQTknKQorCisgICAgZGVm
IHRlc3RfbWF0Y2hfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAg
IyBBYnNvbHV0ZSBwYXR0ZXJucworICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnYzovYi5weScp
Lm1hdGNoKCcvKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnYzovYi5weScpLm1h
dGNoKCdjOioucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJ2M6L2IucHknKS5tYXRj
aCgnYzovKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2Q6L2IucHknKS5tYXRj
aCgnYzovKi5weScpKSAgIyB3cm9uZyBkcml2ZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAo
J2IucHknKS5tYXRjaCgnLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdiLnB5
JykubWF0Y2goJ2M6Ki5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2IucHknKS5t
YXRjaCgnYzovKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2M6Yi5weScpLm1h
dGNoKCcvKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2M6Yi5weScpLm1hdGNo
KCdjOi8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnL2IucHknKS5tYXRjaCgn
YzoqLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnL2IucHknKS5tYXRjaCgnYzov
Ki5weScpKQorICAgICAgICAjIFVOQyBwYXR0ZXJucworICAgICAgICBzZWxmLmFzc2VydFRydWUo
UCgnLy9zb21lL3NoYXJlL2EucHknKS5tYXRjaCgnLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKFAoJy8vc29tZS9zaGFyZS9hLnB5JykubWF0Y2goJy8vc29tZS9zaGFyZS8qLnB5Jykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnLy9vdGhlci9zaGFyZS9hLnB5JykubWF0Y2go
Jy8vc29tZS9zaGFyZS8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnLy9zb21l
L3NoYXJlL2EvYi5weScpLm1hdGNoKCcvL3NvbWUvc2hhcmUvKi5weScpKQorICAgICAgICAjIENh
c2UtaW5zZW5zaXRpdml0eQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnQi5weScpLm1hdGNo
KCdiLlBZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCdjOi9hL0IuUHknKS5tYXRjaCgn
QzovQS8qLnBZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvL1NvbWUvU2hhcmUvQi5Q
eScpLm1hdGNoKCcvL3NvbUUvc2hhckUvKi5wWScpKQorCisgICAgZGVmIHRlc3Rfb3JkZXJpbmdf
Y29tbW9uKHNlbGYpOgorICAgICAgICAjIENhc2UtaW5zZW5zaXRpdml0eQorICAgICAgICBkZWYg
YXNzZXJ0T3JkZXJlZEVxdWFsKGEsIGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1
YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGIsIGEpCisgICAg
ICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnYzpBL2InKQorICAgICAgICBxID0gUCgn
QzphL0InKQorICAgICAgICBhc3NlcnRPcmRlcmVkRXF1YWwocCwgcSkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShwIDwgcSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwID4gcSkKKyAgICAg
ICAgcCA9IFAoJy8vc29tZS9TaGFyZS9BL2InKQorICAgICAgICBxID0gUCgnLy9Tb21lL1NIQVJF
L2EvQicpCisgICAgICAgIGFzc2VydE9yZGVyZWRFcXVhbChwLCBxKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHAgPCBxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAgPiBxKQorCisgICAg
ZGVmIHRlc3RfcGFydHMoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0g
UCgnYzphL2InKQorICAgICAgICBwYXJ0cyA9IHAucGFydHMKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYXJ0cywgKCdjOicsICdhJywgJ2InKSkKKyAgICAgICAgcCA9IFAoJ2M6L2EvYicpCisg
ICAgICAgIHBhcnRzID0gcC5wYXJ0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzLCAo
J2M6XFwnLCAnYScsICdiJykpCisgICAgICAgIHAgPSBQKCcvL2EvYi9jL2QnKQorICAgICAgICBw
YXJ0cyA9IHAucGFydHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJ0cywgKCdcXFxcYVxc
YlxcJywgJ2MnLCAnZCcpKQorCisgICAgZGVmIHRlc3RfcGFyZW50KHNlbGYpOgorICAgICAgICAj
IEFuY2hvcmVkCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnejphL2IvYycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQsIFAoJ3o6YS9iJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LCBQKCd6OmEnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJlbnQucGFyZW50LCBQKCd6OicpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHAucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LCBQKCd6OicpKQor
ICAgICAgICBwID0gUCgnejovYS9iL2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucGFy
ZW50LCBQKCd6Oi9hL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJl
bnQsIFAoJ3o6L2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJlbnQu
cGFyZW50LCBQKCd6Oi8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJl
bnQucGFyZW50LnBhcmVudCwgUCgnejovJykpCisgICAgICAgIHAgPSBQKCcvL2EvYi9jL2QnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucGFyZW50LCBQKCcvL2EvYi9jJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LCBQKCcvL2EvYicpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHAucGFyZW50LnBhcmVudC5wYXJlbnQsIFAoJy8vYS9iJykpCisKKyAg
ICBkZWYgdGVzdF9wYXJlbnRzKHNlbGYpOgorICAgICAgICAjIEFuY2hvcmVkCisgICAgICAgIFAg
PSBzZWxmLmNscworICAgICAgICBwID0gUCgnejphL2IvJykKKyAgICAgICAgcGFyID0gcC5wYXJl
bnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhciksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGFyWzBdLCBQKCd6OmEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJbMV0sIFAoJ3o6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwYXIpLCBbUCgn
ejphJyksIFAoJ3o6JyldKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJy
b3IpOgorICAgICAgICAgICAgcGFyWzJdCisgICAgICAgIHAgPSBQKCd6Oi9hL2IvJykKKyAgICAg
ICAgcGFyID0gcC5wYXJlbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhciksIDIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyWzBdLCBQKCd6Oi9hJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyWzFdLCBQKCd6Oi8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHBhciksIFtQKCd6Oi9hJyksIFAoJ3o6LycpXSkKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIHBhclsyXQorICAgICAgICBwID0g
UCgnLy9hL2IvYy9kJykKKyAgICAgICAgcGFyID0gcC5wYXJlbnRzCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHBhciksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyWzBdLCBQ
KCcvL2EvYi9jJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyWzFdLCBQKCcvL2EvYicp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGFyKSwgW1AoJy8vYS9iL2MnKSwgUCgn
Ly9hL2InKV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6Cisg
ICAgICAgICAgICBwYXJbMl0KKworICAgIGRlZiB0ZXN0X2RyaXZlKHNlbGYpOgorICAgICAgICBQ
ID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOicpLmRyaXZlLCAnYzon
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9iJykuZHJpdmUsICdjOicpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovJykuZHJpdmUsICdjOicpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnYzovYS9iLycpLmRyaXZlLCAnYzonKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFAoJy8vYS9iJykuZHJpdmUsICdcXFxcYVxcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnLy9hL2IvJykuZHJpdmUsICdcXFxcYVxcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnLy9hL2IvYy9kJykuZHJpdmUsICdcXFxcYVxcYicpCisKKyAgICBkZWYgdGVzdF9y
b290KHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdjOicpLnJvb3QsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9iJyku
cm9vdCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovJykucm9vdCwgJ1xcJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2IvJykucm9vdCwgJ1xcJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYicpLnJvb3QsICdcXCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnLy9hL2IvJykucm9vdCwgJ1xcJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCcvL2EvYi9jL2QnKS5yb290LCAnXFwnKQorCisgICAgZGVmIHRlc3RfYW5jaG9yKHNl
bGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdj
OicpLmFuY2hvciwgJ2M6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLmFu
Y2hvciwgJ2M6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi8nKS5hbmNob3IsICdj
OlxcJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2IvJykuYW5jaG9yLCAnYzpc
XCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9hL2InKS5hbmNob3IsICdcXFxcYVxc
YlxcJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYi8nKS5hbmNob3IsICdcXFxc
YVxcYlxcJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYi9jL2QnKS5hbmNob3Is
ICdcXFxcYVxcYlxcJykKKworICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIFAgPSBz
ZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6JykubmFtZSwgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovJykubmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnYzphL2InKS5uYW1lLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
UCgnYzovYS9iJykubmFtZSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9i
LnB5JykubmFtZSwgJ2IucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvYi5w
eScpLm5hbWUsICdiLnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL015LnB5L1No
YXJlLnBocCcpLm5hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vTXkucHkv
U2hhcmUucGhwL2EvYicpLm5hbWUsICdiJykKKworICAgIGRlZiB0ZXN0X3N1ZmZpeChzZWxmKToK
KyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzonKS5z
dWZmaXgsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6LycpLnN1ZmZpeCwgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzphL2InKS5zdWZmaXgsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvYicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnYzphL2IucHknKS5zdWZmaXgsICcucHknKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFAoJ2M6L2EvYi5weScpLnN1ZmZpeCwgJy5weScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnYzphLy5oZ3JjJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCdjOi9hLy5oZ3JjJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdjOmEvLmhnLnJjJykuc3VmZml4LCAnLnJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdjOi9hLy5oZy5yYycpLnN1ZmZpeCwgJy5yYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoUCgnYzphL2IudGFyLmd6Jykuc3VmZml4LCAnLmd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCdjOi9hL2IudGFyLmd6Jykuc3VmZml4LCAnLmd6JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChQKCdjOmEvU29tZSBuYW1lLiBFbmRpbmcgd2l0aCBhIGRvdC4nKS5zdWZmaXgsICcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvU29tZSBuYW1lLiBFbmRpbmcgd2l0
aCBhIGRvdC4nKS5zdWZmaXgsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vTXku
cHkvU2hhcmUucGhwJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcv
L015LnB5L1NoYXJlLnBocC9hL2InKS5zdWZmaXgsICcnKQorCisgICAgZGVmIHRlc3Rfc3VmZml4
ZXMoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2M6Jykuc3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6Lycp
LnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLnN1ZmZp
eGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2InKS5zdWZmaXhlcywg
W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzphL2IucHknKS5zdWZmaXhlcywgWycu
cHknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2IucHknKS5zdWZmaXhlcywg
WycucHknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvLmhncmMnKS5zdWZmaXhl
cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS8uaGdyYycpLnN1ZmZpeGVz
LCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvLmhnLnJjJykuc3VmZml4ZXMs
IFsnLnJjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS8uaGcucmMnKS5zdWZm
aXhlcywgWycucmMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi50YXIuZ3on
KS5zdWZmaXhlcywgWycudGFyJywgJy5neiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAo
J2M6L2EvYi50YXIuZ3onKS5zdWZmaXhlcywgWycudGFyJywgJy5neiddKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFAoJy8vTXkucHkvU2hhcmUucGhwJykuc3VmZml4ZXMsIFtdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vTXkucHkvU2hhcmUucGhwL2EvYicpLnN1ZmZpeGVzLCBb
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvU29tZSBuYW1lLiBFbmRpbmcgd2l0
aCBhIGRvdC4nKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzov
YS9Tb21lIG5hbWUuIEVuZGluZyB3aXRoIGEgZG90LicpLnN1ZmZpeGVzLCBbXSkKKworICAgIGRl
ZiB0ZXN0X3N0ZW0oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFAoJ2M6Jykuc3RlbSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
YzouJykuc3RlbSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzouLicpLnN0ZW0s
ICcuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovJykuc3RlbSwgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzphL2InKS5zdGVtLCAnYicpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnYzphL2IucHknKS5zdGVtLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnYzphLy5oZ3JjJykuc3RlbSwgJy5oZ3JjJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCdjOmEvLmhnLnJjJykuc3RlbSwgJy5oZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoUCgnYzphL2IudGFyLmd6Jykuc3RlbSwgJ2IudGFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCdjOmEvU29tZSBuYW1lLiBFbmRpbmcgd2l0aCBhIGRvdC4nKS5zdGVtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICdTb21lIG5hbWUuIEVuZGluZyB3aXRoIGEgZG90LicpCisKKyAg
ICBkZWYgdGVzdF93aXRoX25hbWUoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9iJykud2l0aF9uYW1lKCdkLnhtbCcpLCBQKCdjOmEv
ZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2InKS53aXRoX25hbWUo
J2QueG1sJyksIFAoJ2M6L2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIFAoJ2M6YS9Eb3QgZW5kaW5nLicpLndpdGhfbmFtZSgnZC54bWwnKSwgUCgnYzph
L2QueG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBQKCdjOi9h
L0RvdCBlbmRpbmcuJykud2l0aF9uYW1lKCdkLnhtbCcpLCBQKCdjOi9hL2QueG1sJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6Jykud2l0aF9uYW1lLCAnZC54
bWwnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOi8nKS53aXRo
X25hbWUsICdkLnhtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAo
Jy8vTXkvU2hhcmUnKS53aXRoX25hbWUsICdkLnhtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0aF9uYW1lLCAnZDonKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfbmFtZSwgJ2Q6ZScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0aF9uYW1l
LCAnZDovZScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9i
Jykud2l0aF9uYW1lLCAnLy9NeS9TaGFyZScpCisKKyAgICBkZWYgdGVzdF93aXRoX3N1ZmZpeChz
ZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
YzphL2InKS53aXRoX3N1ZmZpeCgnLmd6JyksIFAoJ2M6YS9iLmd6JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoUCgnYzovYS9iJykud2l0aF9zdWZmaXgoJy5neicpLCBQKCdjOi9hL2IuZ3on
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi5weScpLndpdGhfc3VmZml4KCcu
Z3onKSwgUCgnYzphL2IuZ3onKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2Iu
cHknKS53aXRoX3N1ZmZpeCgnLmd6JyksIFAoJ2M6L2EvYi5neicpKQorICAgICAgICAjIFBhdGgg
ZG9lc24ndCBoYXZlIGEgImZpbGVuYW1lIiBjb21wb25lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgUCgnJykud2l0aF9zdWZmaXgsICcuZ3onKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcuJykud2l0aF9zdWZmaXgsICcuZ3onKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcvJykud2l0aF9zdWZmaXgsICcu
Z3onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcvL015L1NoYXJl
Jykud2l0aF9zdWZmaXgsICcuZ3onKQorICAgICAgICAjIEludmFsaWQgc3VmZml4CisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0aF9zdWZmaXgsICdn
eicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0
aF9zdWZmaXgsICcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgn
YzphL2InKS53aXRoX3N1ZmZpeCwgJ1xcJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgUCgnYzphL2InKS53aXRoX3N1ZmZpeCwgJ2M6JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYzphL2InKS53aXRoX3N1ZmZpeCwgJy8uZ3onKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3VmZml4
LCAnXFwuZ3onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEv
YicpLndpdGhfc3VmZml4LCAnYzouZ3onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3VmZml4LCAnYy9kJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYzphL2InKS53aXRoX3N1ZmZpeCwgJ2NcXGQnKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3VmZml4
LCAnLmMvZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9i
Jykud2l0aF9zdWZmaXgsICcuY1xcZCcpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV90byhzZWxm
KToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdDOkZvby9CYXInKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oUCgnYzonKSksIFAoJ0Zvby9CYXIn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCdjOicpLCBQKCdGb28v
QmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCdjOmZvTycp
KSwgUCgnQmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnYzpm
b08nKSwgUCgnQmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygn
Yzpmb08vJyksIFAoJ0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVf
dG8oUCgnYzpmb08vYmFSJykpLCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxh
dGl2ZV90bygnYzpmb08vYmFSJyksIFAoKSkKKyAgICAgICAgIyBVbnJlbGF0ZWQgcGF0aHMKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgpKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgn
ZDonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90
bywgUCgnLycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0
aXZlX3RvLCBQKCdGb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
cC5yZWxhdGl2ZV90bywgUCgnL0ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdDOi9Gb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnQzpGb28vQmFyL0JheicpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdDOkZv
by9CYXonKSkKKyAgICAgICAgcCA9IFAoJ0M6L0Zvby9CYXInKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHAucmVsYXRpdmVfdG8oUCgnYzonKSksIFAoJy9Gb28vQmFyJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnYzonKSwgUCgnL0Zvby9CYXInKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZWxhdGl2ZV90byhQKCdjOicpKSksICdcXEZvb1xc
QmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZWxhdGl2ZV90bygnYzonKSks
ICdcXEZvb1xcQmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAo
J2M6LycpKSwgUCgnRm9vL0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRp
dmVfdG8oJ2M6LycpLCBQKCdGb28vQmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5y
ZWxhdGl2ZV90byhQKCdjOi9mb08nKSksIFAoJ0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHAucmVsYXRpdmVfdG8oJ2M6L2ZvTycpLCBQKCdCYXInKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwLnJlbGF0aXZlX3RvKCdjOi9mb08vJyksIFAoJ0JhcicpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oUCgnYzovZm9PL2JhUicpKSwgUCgpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJ2M6L2ZvTy9iYVInKSwgUCgpKQorICAg
ICAgICAjIFVucmVsYXRlZCBwYXRocworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdDOi9CYXonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnQzovRm9vL0Jhci9CYXonKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnQzovRm9v
L0JheicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZl
X3RvLCBQKCdDOkZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBw
LnJlbGF0aXZlX3RvLCBQKCdkOicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdkOi8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnLycpKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcvRm9vJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJy8vQy9Gb28nKSkKKyAg
ICAgICAgIyBVTkMgcGF0aHMKKyAgICAgICAgcCA9IFAoJy8vU2VydmVyL1NoYXJlL0Zvby9CYXIn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oUCgnLy9zRXJ2ZXIvc0hh
cmUnKSksIFAoJ0Zvby9CYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZl
X3RvKCcvL3NFcnZlci9zSGFyZScpLCBQKCdGb28vQmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocC5yZWxhdGl2ZV90bygnLy9zRXJ2ZXIvc0hhcmUvJyksIFAoJ0Zvby9CYXInKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAoJy8vc0VydmVyL3NIYXJlL0Zv
bycpKSwgUCgnQmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygn
Ly9zRXJ2ZXIvc0hhcmUvRm9vJyksIFAoJ0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHAucmVsYXRpdmVfdG8oJy8vc0VydmVyL3NIYXJlL0Zvby8nKSwgUCgnQmFyJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCcvL3NFcnZlci9zSGFyZS9Gb28vQmFy
JykpLCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnLy9zRXJ2
ZXIvc0hhcmUvRm9vL0JhcicpLCBQKCkpCisgICAgICAgICMgVW5yZWxhdGVkIHBhdGhzCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJy9TZXJ2
ZXIvU2hhcmUvRm9vJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAu
cmVsYXRpdmVfdG8sIFAoJ2M6L1NlcnZlci9TaGFyZS9Gb28nKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnLy96L1NoYXJlL0ZvbycpKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcv
L1NlcnZlci96L0ZvbycpKQorCisgICAgZGVmIHRlc3RfaXNfYWJzb2x1dGUoc2VsZik6CisgICAg
ICAgIFAgPSBzZWxmLmNscworICAgICAgICAjIFVuZGVyIE5ULCBvbmx5IHBhdGhzIHdpdGggYm90
aCBhIGRyaXZlIGFuZCBhIHJvb3QgYXJlIGFic29sdXRlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoUCgpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnYScpLmlz
X2Fic29sdXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnYS9iLycpLmlzX2Fic29s
dXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnLycpLmlzX2Fic29sdXRlKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnL2EnKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKFAoJy9hL2IvJykuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShQKCdjOicpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoUCgnYzphJykuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdj
OmEvYi8nKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnYzovJyku
aXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJ2M6L2EnKS5pc19hYnNv
bHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnYzovYS9iLycpLmlzX2Fic29sdXRl
KCkpCisgICAgICAgICMgVU5DIHBhdGhzIGFyZSBhYnNvbHV0ZSBieSBkZWZpbml0aW9uCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvL2EvYicpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShQKCcvL2EvYi8nKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoUCgnLy9hL2IvYycpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShQKCcvL2EvYi9jL2QnKS5pc19hYnNvbHV0ZSgpKQorCisgICAgZGVmIHRlc3Rfam9pbihz
ZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdDOi9hL2InKQorICAg
ICAgICBwcCA9IHAuam9pbnBhdGgoJ3gveScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAs
IFAoJ0M6L2EvYi94L3knKSkKKyAgICAgICAgcHAgPSBwLmpvaW5wYXRoKCcveC95JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnQzoveC95JykpCisgICAgICAgICMgSm9pbmluZyB3
aXRoIGEgZGlmZmVyZW50IGRyaXZlID0+IHRoZSBmaXJzdCBwYXRoIGlzIGlnbm9yZWQsIGV2ZW4K
KyAgICAgICAgIyBpZiB0aGUgc2Vjb25kIHBhdGggaXMgcmVsYXRpdmUuCisgICAgICAgIHBwID0g
cC5qb2lucGF0aCgnRDp4L3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCdEOngv
eScpKQorICAgICAgICBwcCA9IHAuam9pbnBhdGgoJ0Q6L3gveScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocHAsIFAoJ0Q6L3gveScpKQorICAgICAgICBwcCA9IHAuam9pbnBhdGgoJy8vaG9z
dC9zaGFyZS94L3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCcvL2hvc3Qvc2hh
cmUveC95JykpCisgICAgICAgICMgSm9pbmluZyB3aXRoIHRoZSBzYW1lIGRyaXZlID0+IHRoZSBm
aXJzdCBwYXRoIGlzIGFwcGVuZGVkIHRvIGlmCisgICAgICAgICMgdGhlIHNlY29uZCBwYXRoIGlz
IHJlbGF0aXZlLgorICAgICAgICBwcCA9IHAuam9pbnBhdGgoJ2M6eC95JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwcCwgUCgnQzovYS9iL3gveScpKQorICAgICAgICBwcCA9IHAuam9pbnBh
dGgoJ2M6L3gveScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAsIFAoJ0M6L3gveScpKQor
CisgICAgZGVmIHRlc3RfZGl2KHNlbGYpOgorICAgICAgICAjIEJhc2ljYWxseSB0aGUgc2FtZSBh
cyBqb2lucGF0aCgpCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnQzovYS9i
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJ3gveScsIFAoJ0M6L2EvYi94L3knKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJ3gnIC8gJ3knLCBQKCdDOi9hL2IveC95Jykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCAvICcveC95JywgUCgnQzoveC95JykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocCAvICcveCcgLyAneScsIFAoJ0M6L3gveScpKQorICAgICAg
ICAjIEpvaW5pbmcgd2l0aCBhIGRpZmZlcmVudCBkcml2ZSA9PiB0aGUgZmlyc3QgcGF0aCBpcyBp
Z25vcmVkLCBldmVuCisgICAgICAgICMgaWYgdGhlIHNlY29uZCBwYXRoIGlzIHJlbGF0aXZlLgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAgLyAnRDp4L3knLCBQKCdEOngveScpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHAgLyAnRDonIC8gJ3gveScsIFAoJ0Q6eC95JykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocCAvICdEOi94L3knLCBQKCdEOi94L3knKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwIC8gJ0Q6JyAvICcveC95JywgUCgnRDoveC95JykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocCAvICcvL2hvc3Qvc2hhcmUveC95JywgUCgnLy9ob3N0L3NoYXJlL3gv
eScpKQorICAgICAgICAjIEpvaW5pbmcgd2l0aCB0aGUgc2FtZSBkcml2ZSA9PiB0aGUgZmlyc3Qg
cGF0aCBpcyBhcHBlbmRlZCB0byBpZgorICAgICAgICAjIHRoZSBzZWNvbmQgcGF0aCBpcyByZWxh
dGl2ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJ2M6eC95JywgUCgnQzovYS9iL3gv
eScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAgLyAnYzoveC95JywgUCgnQzoveC95Jykp
CisKKyAgICBkZWYgdGVzdF9pc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xz
CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIFAoJycpLmlzX3Jlc2VydmVkKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIFAoJy8nKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBz
ZWxmLmFzc2VydElzKEZhbHNlLCBQKCcvZm9vL2JhcicpLmlzX3Jlc2VydmVkKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgUCgnY29uJykuaXNfcmVzZXJ2ZWQoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJcyhUcnVlLCBQKCdOVUwnKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFz
c2VydElzKFRydWUsIFAoJ05VTC50eHQnKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFz
c2VydElzKFRydWUsIFAoJ2NvbTEnKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFzc2Vy
dElzKFRydWUsIFAoJ2NvbTkuYmFyJykuaXNfcmVzZXJ2ZWQoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJcyhGYWxzZSwgUCgnYmFyLmNvbTknKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFz
c2VydElzKFRydWUsIFAoJ2xwdDEnKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFzc2Vy
dElzKFRydWUsIFAoJ2xwdDkuYmFyJykuaXNfcmVzZXJ2ZWQoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJcyhGYWxzZSwgUCgnYmFyLmxwdDknKS5pc19yZXNlcnZlZCgpKQorICAgICAgICAjIE9ubHkg
dGhlIGxhc3QgY29tcG9uZW50IG1hdHRlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwg
UCgnYzovTlVML2Nvbi9iYXonKS5pc19yZXNlcnZlZCgpKQorICAgICAgICAjIFVOQyBwYXRocyBh
cmUgbmV2ZXIgcmVzZXJ2ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnLy9teS9z
aGFyZS9udWwvY29uL2F1eCcpLmlzX3Jlc2VydmVkKCkpCisKKworY2xhc3MgUHVyZVBhdGhUZXN0
KF9CYXNlUHVyZVBhdGhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgY2xzID0gcGF0aGxp
Yi5QdXJlUGF0aAorCisgICAgZGVmIHRlc3RfY29uY3JldGVfY2xhc3Moc2VsZik6CisgICAgICAg
IHAgPSBzZWxmLmNscygnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoCisgICAgICAgICAgICB0
eXBlKHApLAorICAgICAgICAgICAgcGF0aGxpYi5QdXJlV2luZG93c1BhdGgKKyAgICAgICAgICAg
IGlmIG9zLm5hbWUgPT0gJ250JyBlbHNlIHBhdGhsaWIuUHVyZVBvc2l4UGF0aCkKKworICAgIGRl
ZiB0ZXN0X2RpZmZlcmVudF9mbGF2b3Vyc191bmVxdWFsKHNlbGYpOgorICAgICAgICBwID0gcGF0
aGxpYi5QdXJlUG9zaXhQYXRoKCdhJykKKyAgICAgICAgcSA9IHBhdGhsaWIuUHVyZVdpbmRvd3NQ
YXRoKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwLCBxKQorCisgICAgQHVuaXR0
ZXN0LnNraXBJZihzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApLAorICAgICAgICAgICAgICAgICAg
ICAgJ01vc3QgdHlwZXMgYXJlIG9yZGVyYWJsZSBpbiBQeXRob24gMicpCisgICAgZGVmIHRlc3Rf
ZGlmZmVyZW50X2ZsYXZvdXJzX3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgcCA9IHBhdGhsaWIu
UHVyZVBvc2l4UGF0aCgnYScpCisgICAgICAgIHEgPSBwYXRobGliLlB1cmVXaW5kb3dzUGF0aCgn
YScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAg
ICAgIHAgPCBxCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAg
ICAgICAgICAgIHAgPD0gcQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJv
cik6CisgICAgICAgICAgICBwID4gcQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5
cGVFcnJvcik6CisgICAgICAgICAgICBwID49IHEKKworCisjCisjIFRlc3RzIGZvciB0aGUgY29u
Y3JldGUgY2xhc3NlcworIworCisjIE1ha2Ugc3VyZSBhbnkgc3ltYm9saWMgbGlua3MgaW4gdGhl
IGJhc2UgdGVzdCBwYXRoIGFyZSByZXNvbHZlZAorQkFTRSA9IG9zLnBhdGgucmVhbHBhdGgoVEVT
VEZOKQorCisKK2RlZiBqb2luKCp4KToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKEJBU0UsICp4
KQorCisKK2RlZiByZWxfam9pbigqeCk6CisgICAgcmV0dXJuIG9zLnBhdGguam9pbihURVNURk4s
ICp4KQorCisKK29ubHlfbnQgPSB1bml0dGVzdC5za2lwSWYob3MubmFtZSAhPSAnbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdCByZXF1aXJlcyBhIFdpbmRvd3MtY29tcGF0aWJs
ZSBzeXN0ZW0nKQorb25seV9wb3NpeCA9IHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHJlcXVpcmVzIGEgUE9TSVgtY29t
cGF0aWJsZSBzeXN0ZW0nKQorCisKK0Bvbmx5X3Bvc2l4CitjbGFzcyBQb3NpeFBhdGhBc1B1cmVU
ZXN0KFB1cmVQb3NpeFBhdGhUZXN0KToKKyAgICBjbHMgPSBwYXRobGliLlBvc2l4UGF0aAorCisK
K0Bvbmx5X250CitjbGFzcyBXaW5kb3dzUGF0aEFzUHVyZVRlc3QoUHVyZVdpbmRvd3NQYXRoVGVz
dCk6CisgICAgY2xzID0gcGF0aGxpYi5XaW5kb3dzUGF0aAorCisgICAgZGVmIHRlc3Rfb3duZXIo
c2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgUCgnYzovJykub3duZXIoKQor
CisgICAgZGVmIHRlc3RfZ3JvdXAoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAg
ICAgUCgnYzovJykuZ3JvdXAoKQorCisKK2NsYXNzIF9CYXNlUGF0aFRlc3Qob2JqZWN0KToKKyAg
ICAiIiJUZXN0cyBmb3IgdGhlIEZTLWFjY2Vzc2luZyBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIFBh
dGggY2xhc3Nlcy4iIiIKKworICAgICMgKEJBU0UpCisgICAgIyAgfAorICAgICMgIHwtLSBicm9r
ZW5MaW5rIC0+IG5vbi1leGlzdGluZworICAgICMgIHwtLSBkaXJBCisgICAgIyAgfCAgIGAtLSBs
aW5rQyAtPiAuLi9kaXJCCisgICAgIyAgfC0tIGRpckIKKyAgICAjICB8ICAgfC0tIGZpbGVCCisg
ICAgIyAgfCAgIGAtLSBsaW5rRCAtPiAuLi9kaXJCCisgICAgIyAgfC0tIGRpckMKKyAgICAjICB8
ICAgfC0tIGRpckQKKyAgICAjICB8ICAgfCAgIGAtLSBmaWxlRAorICAgICMgIHwgICBgLS0gZmls
ZUMKKyAgICAjICB8LS0gZGlyRSAgIyBObyBwZXJtaXNzaW9ucworICAgICMgIHwtLSBmaWxlQQor
ICAgICMgIHwtLSBsaW5rQSAtPiBmaWxlQQorICAgICMgIGAtLSBsaW5rQiAtPiBkaXJCCisgICAg
IworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAg
ICAgICAgb3MuY2htb2Qoam9pbignZGlyRScpLCAwbzc3NykKKyAgICAgICAgICAgIHN1cHBvcnQu
cm10cmVlKEJBU0UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQorICAgICAgICBv
cy5ta2RpcihCQVNFKQorICAgICAgICBvcy5ta2Rpcihqb2luKCdkaXJBJykpCisgICAgICAgIG9z
Lm1rZGlyKGpvaW4oJ2RpckInKSkKKyAgICAgICAgb3MubWtkaXIoam9pbignZGlyQycpKQorICAg
ICAgICBvcy5ta2Rpcihqb2luKCdkaXJDJywgJ2RpckQnKSkKKyAgICAgICAgb3MubWtkaXIoam9p
bignZGlyRScpKQorICAgICAgICB3aXRoIG9wZW4oam9pbignZmlsZUEnKSwgJ3diJykgYXMgZjoK
KyAgICAgICAgICAgIGYud3JpdGUoYiJ0aGlzIGlzIGZpbGUgQVxuIikKKyAgICAgICAgd2l0aCBv
cGVuKGpvaW4oJ2RpckInLCAnZmlsZUInKSwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3Jp
dGUoYiJ0aGlzIGlzIGZpbGUgQlxuIikKKyAgICAgICAgd2l0aCBvcGVuKGpvaW4oJ2RpckMnLCAn
ZmlsZUMnKSwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJ0aGlzIGlzIGZpbGUg
Q1xuIikKKyAgICAgICAgd2l0aCBvcGVuKGpvaW4oJ2RpckMnLCAnZGlyRCcsICdmaWxlRCcpLCAn
d2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiInRoaXMgaXMgZmlsZSBEXG4iKQorICAg
ICAgICBvcy5jaG1vZChqb2luKCdkaXJFJyksIDApCisgICAgICAgIGlmIHN1cHBvcnRfY2FuX3N5
bWxpbmsoKToKKyAgICAgICAgICAgICMgUmVsYXRpdmUgc3ltbGlua3MKKyAgICAgICAgICAgIG9z
LnN5bWxpbmsoJ2ZpbGVBJywgam9pbignbGlua0EnKSkKKyAgICAgICAgICAgIG9zLnN5bWxpbmso
J25vbi1leGlzdGluZycsIGpvaW4oJ2Jyb2tlbkxpbmsnKSkKKyAgICAgICAgICAgIHNlbGYuZGly
bGluaygnZGlyQicsIGpvaW4oJ2xpbmtCJykpCisgICAgICAgICAgICBzZWxmLmRpcmxpbmsob3Mu
cGF0aC5qb2luKCcuLicsICdkaXJCJyksIGpvaW4oJ2RpckEnLCAnbGlua0MnKSkKKyAgICAgICAg
ICAgICMgVGhpcyBvbmUgZ29lcyB1cHdhcmRzLCBjcmVhdGluZyBhIGxvb3AKKyAgICAgICAgICAg
IHNlbGYuZGlybGluayhvcy5wYXRoLmpvaW4oJy4uJywgJ2RpckInKSwgam9pbignZGlyQicsICds
aW5rRCcpKQorCisgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAjIFdvcmthcm91bmQg
Zm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzc3MgorICAgICAgICBkZWYgZGlybGlu
ayhzZWxmLCBzcmMsIGRlc3QpOgorICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRlc3QsIHRh
cmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICBlbHNlOgorICAgICAgICBkZWYgZGlybGluayhz
ZWxmLCBzcmMsIGRlc3QpOgorICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRlc3QpCisKKyAg
ICBkZWYgYXNzZXJ0U2FtZShzZWxmLCBwYXRoX2EsIHBhdGhfYik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHN0cihwYXRoX2EpLCBzdHIocGF0aF9iKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAiJXIgYW5kICVyIGRvbid0IHBvaW50IHRvIHRoZSBzYW1lIGZp
bGUiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChwYXRoX2EsIHBhdGhfYikpCisKKyAgICBk
ZWYgYXNzZXJ0RmlsZU5vdEZvdW5kKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAg
ZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICMgUHl0aG9u
IDIuNiBrbHVkZ2UgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU3ODUzCisgICAgICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykK
KyAgICAgICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWE6IEU3MjIKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5v
LCBlcnJuby5FTk9FTlQpCisKKyAgICBkZWYgYXNzZXJ0RmlsZUV4aXN0cyhzZWxmLCBmdW5jLCAq
YXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAzKToK
KyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBj
bToKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgIyBQeXRob24gMi42IGtsdWRnZSBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9y
Zy9pc3N1ZTc4NTMKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1
bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGV4Y2VwdDogICMgbm9xYTogRTcy
MgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKworICAgIGRlZiBfdGVzdF9jd2Qo
c2VsZiwgcCk6CisgICAgICAgIHEgPSBzZWxmLmNscyhvcy5nZXRjd2QoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwLCBxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgc3Ry
KHEpKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocCksIHR5cGUocSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwLmlzX2Fic29sdXRlKCkpCisKKyAgICBkZWYgdGVzdF9jd2Qoc2VsZik6
CisgICAgICAgIHAgPSBzZWxmLmNscy5jd2QoKQorICAgICAgICBzZWxmLl90ZXN0X2N3ZChwKQor
CisgICAgZGVmIF90ZXN0X2hvbWUoc2VsZiwgcCk6CisgICAgICAgIHEgPSBzZWxmLmNscyhvcy5w
YXRoLmV4cGFuZHVzZXIoJ34nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBxKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgc3RyKHEpKQorICAgICAgICBzZWxmLmFzc2Vy
dElzKHR5cGUocCksIHR5cGUocSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmlzX2Fic29s
dXRlKCkpCisKKyAgICBkZWYgdGVzdF9ob21lKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMu
aG9tZSgpCisgICAgICAgIHNlbGYuX3Rlc3RfaG9tZShwKQorCisgICAgZGVmIHRlc3Rfc2FtZWZp
bGUoc2VsZik6CisgICAgICAgIGZpbGVBX3BhdGggPSBvcy5wYXRoLmpvaW4oQkFTRSwgJ2ZpbGVB
JykKKyAgICAgICAgZmlsZUJfcGF0aCA9IG9zLnBhdGguam9pbihCQVNFLCAnZGlyQicsICdmaWxl
QicpCisgICAgICAgIHAgPSBzZWxmLmNscyhmaWxlQV9wYXRoKQorICAgICAgICBwcCA9IHNlbGYu
Y2xzKGZpbGVBX3BhdGgpCisgICAgICAgIHEgPSBzZWxmLmNscyhmaWxlQl9wYXRoKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocC5zYW1lZmlsZShmaWxlQV9wYXRoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHAuc2FtZWZpbGUocHApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuc2Ft
ZWZpbGUoZmlsZUJfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5zYW1lZmlsZShx
KSkKKyAgICAgICAgIyBUZXN0IHRoZSBub24tZXhpc3RlbnQgZmlsZSBjYXNlCisgICAgICAgIG5v
bl9leGlzdGVudCA9IG9zLnBhdGguam9pbihCQVNFLCAnZm9vJykKKyAgICAgICAgciA9IHNlbGYu
Y2xzKG5vbl9leGlzdGVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91bmQocC5zYW1l
ZmlsZSwgcikKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91bmQocC5zYW1lZmlsZSwgbm9u
X2V4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydEZpbGVOb3RGb3VuZChyLnNhbWVmaWxlLCBw
KQorICAgICAgICBzZWxmLmFzc2VydEZpbGVOb3RGb3VuZChyLnNhbWVmaWxlLCBub25fZXhpc3Rl
bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZvdW5kKHIuc2FtZWZpbGUsIHIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZvdW5kKHIuc2FtZWZpbGUsIG5vbl9leGlzdGVudCkKKwor
ICAgIGRlZiB0ZXN0X2VtcHR5X3BhdGgoc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHBhdGgg
cG9pbnRzIHRvICcuJworICAgICAgICBwID0gc2VsZi5jbHMoJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocC5zdGF0KCksIG9zLnN0YXQoJy4nKSkKKworICAgIGRlZiB0ZXN0X2V4cGFuZHVz
ZXJfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ34n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBQKG9zLnBhdGguZXhw
YW5kdXNlcignficpKSkKKyAgICAgICAgcCA9IFAoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKCcvficpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKCcuLi9+JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAgICAgcCA9
IFAoUCgnJykuYWJzb2x1dGUoKS5hbmNob3IpIC8gJ34nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocC5leHBhbmR1c2VyKCksIHApCisKKyAgICBkZWYgdGVzdF9leGlzdHMoc2VsZik6CisgICAg
ICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUChCQVNFKQorICAgICAgICBzZWxmLmFzc2Vy
dElzKFRydWUsIHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgKHAgLyAn
ZGlyQScpLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydElzKFRydWUsIChwIC8gJ2ZpbGVB
JykuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIChwIC8gJ2ZpbGVBJyAv
ICdiYWgnKS5leGlzdHMoKSkKKyAgICAgICAgaWYgc3VwcG9ydF9jYW5fc3ltbGluaygpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJcyhUcnVlLCAocCAvICdsaW5rQScpLmV4aXN0cygpKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJcyhUcnVlLCAocCAvICdsaW5rQicpLmV4aXN0cygpKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJcyhUcnVlLCAocCAvICdsaW5rQicgLyAnZmlsZUInKS5leGlz
dHMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIChwIC8gJ2xpbmtBJyAvICdi
YWgnKS5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgKHAgLyAnZm9vJyku
ZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIFAoJy94eXp6eScpLmV4aXN0
cygpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9jb21tb24oc2VsZik6CisgICAgICAgIHAgPSBzZWxm
LmNscyhCQVNFKQorICAgICAgICB3aXRoIChwIC8gJ2ZpbGVBJykub3BlbigncicpIGFzIGY6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZiwgaW8uVGV4dElPQmFzZSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJ0aGlzIGlzIGZpbGUgQVxuIikKKyAg
ICAgICAgd2l0aCAocCAvICdmaWxlQScpLm9wZW4oJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNJbnN0YW5jZShmLCBpby5CdWZmZXJlZElPQmFzZSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCkuc3RyaXAoKSwgYiJ0aGlzIGlzIGZpbGUgQSIpCisgICAg
ICAgIHdpdGggKHAgLyAnZmlsZUEnKS5vcGVuKCdyYicsIGJ1ZmZlcmluZz0wKSBhcyBmOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYsIGlvLlJhd0lPQmFzZSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCkuc3RyaXAoKSwgYiJ0aGlzIGlzIGZpbGUgQSIp
CisKKyAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2J5dGVzKHNlbGYpOgorICAgICAgICBwID0gc2Vs
Zi5jbHMoQkFTRSkKKyAgICAgICAgKHAgLyAnZmlsZUEnKS53cml0ZV9ieXRlcyhiJ2FiY2RlZmcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF9ieXRlcygpLCBi
J2FiY2RlZmcnKQorICAgICAgICAjIGNoZWNrIHRoYXQgdHJ5aW5nIHRvIHdyaXRlIHN0ciBkb2Vz
IG5vdCB0cnVuY2F0ZSB0aGUgZmlsZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5
cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAocCAvICdmaWxlQScpLndyaXRlX2J5dGVzKHNp
eC51KCdzb21lc3RyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHIoY20uZXhjZXB0aW9u
KS5zdGFydHN3aXRoKCdkYXRhIG11c3QgYmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgo
cCAvICdmaWxlQScpLnJlYWRfYnl0ZXMoKSwgYidhYmNkZWZnJykKKworICAgIGRlZiB0ZXN0X3Jl
YWRfd3JpdGVfdGV4dChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAg
IChwIC8gJ2ZpbGVBJykud3JpdGVfdGV4dChzaXgudSgnXHUwMGU0YmNkZWZnJyksIGVuY29kaW5n
PSdsYXRpbi0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRf
dGV4dCgKKyAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0naWdub3JlJyksIHNp
eC51KCdiY2RlZmcnKSkKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyeWluZyB0byB3cml0ZSBieXRl
cyBkb2VzIG5vdCB0cnVuY2F0ZSB0aGUgZmlsZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAocCAvICdmaWxlQScpLndyaXRlX3Rl
eHQoYidzb21lYnl0ZXMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyKGNtLmV4Y2VwdGlv
bikuc3RhcnRzd2l0aCgnZGF0YSBtdXN0IGJlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
KHAgLyAnZmlsZUEnKS5yZWFkX3RleHQoZW5jb2Rpbmc9J2xhdGluLTEnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXgudSgnXHUwMGU0YmNkZWZnJykpCisKKyAgICBkZWYgdGVzdF9pdGVy
ZGlyKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoQkFTRSkKKyAg
ICAgICAgaXQgPSBwLml0ZXJkaXIoKQorICAgICAgICBwYXRocyA9IHNldChpdCkKKyAgICAgICAg
ZXhwZWN0ZWQgPSBbJ2RpckEnLCAnZGlyQicsICdkaXJDJywgJ2RpckUnLCAnZmlsZUEnXQorICAg
ICAgICBpZiBzdXBwb3J0X2Nhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBleHBlY3RlZCArPSBb
J2xpbmtBJywgJ2xpbmtCJywgJ2Jyb2tlbkxpbmsnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhdGhzLCBzZXQoUChCQVNFLCBxKSBmb3IgcSBpbiBleHBlY3RlZCkpCisKKyAgICBAc3VwcG9y
dF9za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfaXRlcmRpcl9zeW1saW5rKHNlbGYp
OgorICAgICAgICAjIF9faXRlcl9fIG9uIGEgc3ltbGluayB0byBhIGRpcmVjdG9yeQorICAgICAg
ICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2xpbmtCJykKKyAgICAgICAgcGF0
aHMgPSBzZXQocC5pdGVyZGlyKCkpCisgICAgICAgIGV4cGVjdGVkID0gc2V0KFAoQkFTRSwgJ2xp
bmtCJywgcSkgZm9yIHEgaW4gWydmaWxlQicsICdsaW5rRCddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhdGhzLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2l0ZXJkaXJfbm9kaXIoc2Vs
Zik6CisgICAgICAgICMgX19pdGVyX18gb24gc29tZXRoaW5nIHRoYXQgaXMgbm90IGEgZGlyZWN0
b3J5CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZmlsZUEnKQorICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgIyBQeXRob24gMi42
IGtsdWRnZSBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTc4NTMKKyAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICBuZXh0KHAuaXRlcmRpcigpKQorICAgICAgICAgICAgZXhj
ZXB0OiAgIyBub3FhOiBFNzIycworICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICMgRU5P
RU5UIG9yIEVJTlZBTCB1bmRlciBXaW5kb3dzLCBFTk9URElSIG90aGVyd2lzZQorICAgICAgICAj
IChzZWUgaXNzdWUgIzEyODAyKQorICAgICAgICBzZWxmLmFzc2VydEluKGNtLmV4Y2VwdGlvbi5l
cnJubywgKGVycm5vLkVOT1RESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJybm8uRU5PRU5ULCBlcnJuby5FSU5WQUwpKQorCisgICAgZGVmIHRlc3RfZ2xv
Yl9jb21tb24oc2VsZik6CisgICAgICAgIGRlZiBfY2hlY2soZ2xvYiwgZXhwZWN0ZWQpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZ2xvYiksIHNldChQKEJBU0UsIHEpIGZvciBx
IGluIGV4cGVjdGVkKSkKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKEJBU0Up
CisgICAgICAgIGl0ID0gcC5nbG9iKCJmaWxlQSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0
YW5jZShpdCwgY29sbGVjdGlvbnNfYWJjLkl0ZXJhdG9yKQorICAgICAgICBfY2hlY2soaXQsIFsi
ZmlsZUEiXSkKKyAgICAgICAgX2NoZWNrKHAuZ2xvYigiZmlsZUIiKSwgW10pCisgICAgICAgIF9j
aGVjayhwLmdsb2IoImRpciovZmlsZSoiKSwgWyJkaXJCL2ZpbGVCIiwgImRpckMvZmlsZUMiXSkK
KyAgICAgICAgaWYgbm90IHN1cHBvcnRfY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIF9jaGVj
ayhwLmdsb2IoIipBIiksIFsnZGlyQScsICdmaWxlQSddKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgX2NoZWNrKHAuZ2xvYigiKkEiKSwgWydkaXJBJywgJ2ZpbGVBJywgJ2xpbmtBJ10pCisg
ICAgICAgIGlmIG5vdCBzdXBwb3J0X2Nhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBfY2hlY2so
cC5nbG9iKCIqQi8qIiksIFsnZGlyQi9maWxlQiddKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgX2NoZWNrKHAuZ2xvYigiKkIvKiIpLCBbJ2RpckIvZmlsZUInLCAnZGlyQi9saW5rRCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlua0IvZmlsZUInLCAnbGlua0Iv
bGlua0QnXSkKKyAgICAgICAgaWYgbm90IHN1cHBvcnRfY2FuX3N5bWxpbmsoKToKKyAgICAgICAg
ICAgIF9jaGVjayhwLmdsb2IoIiovZmlsZUIiKSwgWydkaXJCL2ZpbGVCJ10pCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBfY2hlY2socC5nbG9iKCIqL2ZpbGVCIiksIFsnZGlyQi9maWxlQics
ICdsaW5rQi9maWxlQiddKQorCisgICAgZGVmIHRlc3Rfcmdsb2JfY29tbW9uKHNlbGYpOgorICAg
ICAgICBkZWYgX2NoZWNrKGdsb2IsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2V0KGdsb2IpLCBzZXQoUChCQVNFLCBxKSBmb3IgcSBpbiBleHBlY3RlZCkpCisgICAg
ICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUChCQVNFKQorICAgICAgICBpdCA9IHAucmds
b2IoImZpbGVBIikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGl0LCBjb2xsZWN0aW9u
c19hYmMuSXRlcmF0b3IpCisgICAgICAgIF9jaGVjayhpdCwgWyJmaWxlQSJdKQorICAgICAgICBf
Y2hlY2socC5yZ2xvYigiZmlsZUIiKSwgWyJkaXJCL2ZpbGVCIl0pCisgICAgICAgIF9jaGVjayhw
LnJnbG9iKCIqL2ZpbGVBIiksIFtdKQorICAgICAgICBpZiBub3Qgc3VwcG9ydF9jYW5fc3ltbGlu
aygpOgorICAgICAgICAgICAgX2NoZWNrKHAucmdsb2IoIiovZmlsZUIiKSwgWyJkaXJCL2ZpbGVC
Il0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBfY2hlY2socC5yZ2xvYigiKi9maWxlQiIp
LCBbImRpckIvZmlsZUIiLCAiZGlyQi9saW5rRC9maWxlQiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImxpbmtCL2ZpbGVCIiwgImRpckEvbGlua0MvZmlsZUIiXSkK
KyAgICAgICAgX2NoZWNrKHAucmdsb2IoImZpbGUqIiksIFsiZmlsZUEiLCAiZGlyQi9maWxlQiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpckMvZmlsZUMiLCAiZGlyQy9k
aXJEL2ZpbGVEIl0pCisgICAgICAgIHAgPSBQKEJBU0UsICJkaXJDIikKKyAgICAgICAgX2NoZWNr
KHAucmdsb2IoImZpbGUqIiksIFsiZGlyQy9maWxlQyIsICJkaXJDL2RpckQvZmlsZUQiXSkKKyAg
ICAgICAgX2NoZWNrKHAucmdsb2IoIiovKiIpLCBbImRpckMvZGlyRC9maWxlRCJdKQorCisgICAg
QHN1cHBvcnRfc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X3JnbG9iX3N5bWxpbmtf
bG9vcChzZWxmKToKKyAgICAgICAgIyBEb24ndCBnZXQgZm9vbGVkIGJ5IHN5bWxpbmsgbG9vcHMg
KElzc3VlICMyNjAxMikKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKEJBU0Up
CisgICAgICAgIGdpdmVuID0gc2V0KHAucmdsb2IoJyonKSkKKyAgICAgICAgZXhwZWN0ID0gc2V0
KFsKKyAgICAgICAgICAgICAgICAgICdicm9rZW5MaW5rJywKKyAgICAgICAgICAgICAgICAgICdk
aXJBJywgJ2RpckEvbGlua0MnLAorICAgICAgICAgICAgICAgICAgJ2RpckInLCAnZGlyQi9maWxl
QicsICdkaXJCL2xpbmtEJywKKyAgICAgICAgICAgICAgICAgICdkaXJDJywgJ2RpckMvZGlyRCcs
ICdkaXJDL2RpckQvZmlsZUQnLCAnZGlyQy9maWxlQycsCisgICAgICAgICAgICAgICAgICAnZGly
RScsCisgICAgICAgICAgICAgICAgICAnZmlsZUEnLAorICAgICAgICAgICAgICAgICAgJ2xpbmtB
JywKKyAgICAgICAgICAgICAgICAgICdsaW5rQicsCisgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGdpdmVuLCBzZXQoW3AgLyB4IGZvciB4IGluIGV4cGVjdF0p
KQorCisgICAgZGVmIHRlc3RfZ2xvYl9kb3Rkb3Qoc2VsZik6CisgICAgICAgICMgIi4uIiBpcyBu
b3Qgc3BlY2lhbCBpbiBnbG9icworICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAo
QkFTRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5nbG9iKCIuLiIpKSwgc2V0KFtQ
KEJBU0UsICIuLiIpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiZGly
QS8uLi9maWxlKiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoW1AoQkFTRSwgImRp
ckEvLi4vZmlsZUEiKV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoIi4u
L3h5enp5IikpLCBzZXQoKSkKKworICAgIGRlZiBfY2hlY2tfcmVzb2x2ZShzZWxmLCBwLCBleHBl
Y3RlZCwgc3RyaWN0PVRydWUpOgorICAgICAgICBxID0gcC5yZXNvbHZlKHN0cmljdCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChxLCBleHBlY3RlZCkKKworICAgICMgdGhpcyBjYW4gYmUgdXNl
ZCB0byBjaGVjayBib3RoIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSByZXNvbHV0aW9ucworICAgIF9j
aGVja19yZXNvbHZlX3JlbGF0aXZlID0gX2NoZWNrX3Jlc29sdmVfYWJzb2x1dGUgPSBfY2hlY2tf
cmVzb2x2ZQorCisgICAgQHN1cHBvcnRfc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0
X3Jlc29sdmVfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9
IFAoQkFTRSwgJ2ZvbycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikg
YXMgY206CisgICAgICAgICAgICBwLnJlc29sdmUoc3RyaWN0PVRydWUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCisgICAgICAgICMg
Tm9uLXN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlc29sdmUoc3RyaWN0
PUZhbHNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKEJBU0UsICdm
b28nKSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZXNvbHZlKHN0cmljdD1GYWxzZSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihCQVNFLCAnZm9vJywgJ2luJywgJ3NwYW0nKSkK
KyAgICAgICAgcCA9IFAoQkFTRSwgJy4uJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZXNvbHZlKHN0cmljdD1GYWxzZSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oJ2ZvbycsICdpbics
ICdzcGFtJykpKQorICAgICAgICAjIFRoZXNlIGFyZSBhbGwgcmVsYXRpdmUgc3ltbGlua3MKKyAg
ICAgICAgcCA9IFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKQorICAgICAgICBzZWxmLl9jaGVja19y
ZXNvbHZlX3JlbGF0aXZlKHAsIHApCisgICAgICAgIHAgPSBQKEJBU0UsICdsaW5rQScpCisgICAg
ICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZmlsZUEnKSkKKyAg
ICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua0MnLCAnZmlsZUInKQorICAgICAgICBzZWxm
Ll9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAg
ICAgICAgcCA9IFAoQkFTRSwgJ2RpckInLCAnbGlua0QnLCAnZmlsZUInKQorICAgICAgICBzZWxm
Ll9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAg
ICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtDJywg
J2ZpbGVCJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2
ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZpbGVCJywgJ2ZvbycsICdpbicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BhbScpLCBGYWxzZSkKKyAg
ICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua0MnLCAnLi4nLCAnZm9vJywgJ2luJywgJ3Nw
YW0nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIEluIFdpbmRv
d3MsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQVxsaW5rWVwuLicKKyAgICAgICAgICAg
ICMgcmVzb2x2ZXMgdG8gJ2RpckEnIHdpdGhvdXQgcmVzb2x2aW5nIGxpbmtZIGZpcnN0LgorICAg
ICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJBJywg
J2ZvbycsICdpbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3NwYW0nKSwgRmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEluIFBvc2l4
LCBpZiBsaW5rWSBwb2ludHMgdG8gZGlyQiwgJ2RpckEvbGlua1kvLi4nCisgICAgICAgICAgICAj
IHJlc29sdmVzIHRvICdkaXJCLy4uJyBmaXJzdCBiZWZvcmUgcmVzb2x2aW5nIHRvIHBhcmVudCBv
ZiBkaXJCLgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZSgKKyAgICAg
ICAgICAgICAgICBwLCBQKEJBU0UsICdmb28nLCAnaW4nLCAnc3BhbScpLCBGYWxzZSkKKyAgICAg
ICAgIyBOb3cgY3JlYXRlIGFic29sdXRlIHN5bWxpbmtzCisgICAgICAgIGQgPSB0ZW1wZmlsZS5t
a2R0ZW1wKHN1ZmZpeD0nLWRpckQnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5y
bXRyZWUsIGQpCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5qb2luKGQpLCBqb2luKCdkaXJB
JywgJ2xpbmtYJykpCisgICAgICAgIG9zLnN5bWxpbmsoam9pbignZGlyQicpLCBvcy5wYXRoLmpv
aW4oZCwgJ2xpbmtZJykpCisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtYJywgJ2xp
bmtZJywgJ2ZpbGVCJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZShwLCBQ
KEJBU0UsICdkaXJCJywgJ2ZpbGVCJykpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBw
ID0gUChCQVNFLCAnZGlyQScsICdsaW5rWCcsICdsaW5rWScsICdmb28nLCAnaW4nLCAnc3BhbScp
CisgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZGlyQics
ICdmb28nLCAnaW4nLCAnc3BhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZhbHNlKQorICAgICAgICBwID0gUChCQVNFLCAnZGlyQScsICdsaW5rWCcsICdsaW5rWScs
ICcuLicsICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoK
KyAgICAgICAgICAgICMgSW4gV2luZG93cywgaWYgbGlua1kgcG9pbnRzIHRvIGRpckIsICdkaXJB
XGxpbmtZXC4uJworICAgICAgICAgICAgIyByZXNvbHZlcyB0byAnZGlyQScgd2l0aG91dCByZXNv
bHZpbmcgbGlua1kgZmlyc3QuCisgICAgICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0
aXZlKHAsIFAoZCwgJ2ZvbycsICdpbicsICdzcGFtJyksIEZhbHNlKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgIyBJbiBQb3NpeCwgaWYgbGlua1kgcG9pbnRzIHRvIGRpckIsICdkaXJBL2xp
bmtZLy4uJworICAgICAgICAgICAgIyByZXNvbHZlcyB0byAnZGlyQi8uLicgZmlyc3QgYmVmb3Jl
IHJlc29sdmluZyB0byBwYXJlbnQgb2YgZGlyQi4KKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3Jl
c29sdmVfcmVsYXRpdmUoCisgICAgICAgICAgICAgICAgcCwgUChCQVNFLCAnZm9vJywgJ2luJywg
J3NwYW0nKSwgRmFsc2UpCisKKyAgICBAc3VwcG9ydF9za2lwX3VubGVzc19zeW1saW5rCisgICAg
ZGVmIHRlc3RfcmVzb2x2ZV9kb3Qoc2VsZik6CisgICAgICAgICMgU2VlIGh0dHBzOi8vYml0YnVj
a2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9pc3N1ZS85LworICAgICAgICAjIHBhdGhyZXNvbHZlLWZh
aWxzLW9uLWNvbXBsZXgtc3ltbGlua3MKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCisgICAg
ICAgIHNlbGYuZGlybGluaygnLicsIGpvaW4oJzAnKSkKKyAgICAgICAgc2VsZi5kaXJsaW5rKG9z
LnBhdGguam9pbignMCcsICcwJyksIGpvaW4oJzEnKSkKKyAgICAgICAgc2VsZi5kaXJsaW5rKG9z
LnBhdGguam9pbignMScsICcxJyksIGpvaW4oJzInKSkKKyAgICAgICAgcSA9IHAgLyAnMicKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLnJlc29sdmUoc3RyaWN0PVRydWUpLCBwKQorICAgICAg
ICByID0gcSAvICczJyAvICc0JworICAgICAgICBzZWxmLmFzc2VydEZpbGVOb3RGb3VuZChyLnJl
c29sdmUsIHN0cmljdD1UcnVlKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyLnJlc29sdmUoc3RyaWN0PUZhbHNlKSwgcCAvICczJyAvICc0JykKKworICAg
IGRlZiB0ZXN0X3dpdGgoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQorICAgICAg
ICBpdCA9IHAuaXRlcmRpcigpCisgICAgICAgIGl0MiA9IHAuaXRlcmRpcigpCisgICAgICAgIG5l
eHQoaXQyKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSS9P
IG9wZXJhdGlvbiBvbiBjbG9zZWQgcGF0aAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yLCBuZXh0LCBpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
bmV4dCwgaXQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLm9wZW4p
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVzb2x2ZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5hYnNvbHV0ZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5fX2VudGVyX18pCisKKyAgICBkZWYgdGVzdF9j
aG1vZChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpIC8gJ2ZpbGVBJworICAgICAg
ICBtb2RlID0gcC5zdGF0KCkuc3RfbW9kZQorICAgICAgICAjIENsZWFyIHdyaXRhYmxlIGJpdAor
ICAgICAgICBuZXdfbW9kZSA9IG1vZGUgJiB+MG8yMjIKKyAgICAgICAgcC5jaG1vZChuZXdfbW9k
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKS5zdF9tb2RlLCBuZXdfbW9kZSkK
KyAgICAgICAgIyBTZXQgd3JpdGFibGUgYml0CisgICAgICAgIG5ld19tb2RlID0gbW9kZSB8IDBv
MjIyCisgICAgICAgIHAuY2htb2QobmV3X21vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cC5zdGF0KCkuc3RfbW9kZSwgbmV3X21vZGUpCisKKyAgICAjIFhYWCBhbHNvIG5lZWQgYSB0ZXN0
IGZvciBsY2htb2QKKworICAgIGRlZiB0ZXN0X3N0YXQoc2VsZik6CisgICAgICAgIHAgPSBzZWxm
LmNscyhCQVNFKSAvICdmaWxlQScKKyAgICAgICAgc3QgPSBwLnN0YXQoKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHAuc3RhdCgpLCBzdCkKKyAgICAgICAgIyBDaGFuZ2UgZmlsZSBtb2RlIGJ5
IGZsaXBwaW5nIHdyaXRlIGJpdAorICAgICAgICBwLmNobW9kKHN0LnN0X21vZGUgXiAwbzIyMikK
KyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuY2htb2QsIHN0LnN0X21vZGUpCisgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwocC5zdGF0KCksIHN0KQorCisgICAgQHN1cHBvcnRfc2tpcF91bmxl
c3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2xzdGF0KHNlbGYpOgorICAgICAgICBwID0gc2VsZi5j
bHMoQkFTRSkgLyAnbGlua0EnCisgICAgICAgIHN0ID0gcC5zdGF0KCkKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChzdCwgcC5sc3RhdCgpKQorCisgICAgZGVmIHRlc3RfbHN0YXRfbm9zeW1s
aW5rKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkgLyAnZmlsZUEnCisgICAgICAg
IHN0ID0gcC5zdGF0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdCwgcC5sc3RhdCgpKQor
CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MocHdkLCAidGhlIHB3ZCBtb2R1bGUgaXMgbmVlZGVk
IGZvciB0aGlzIHRlc3QiKQorICAgIGRlZiB0ZXN0X293bmVyKHNlbGYpOgorICAgICAgICBwID0g
c2VsZi5jbHMoQkFTRSkgLyAnZmlsZUEnCisgICAgICAgIHVpZCA9IHAuc3RhdCgpLnN0X3VpZAor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lID0gcHdkLmdldHB3dWlkKHVpZCkucHdfbmFt
ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAor
ICAgICAgICAgICAgICAgICJ1c2VyICVkIGRvZXNuJ3QgaGF2ZSBhbiBlbnRyeSBpbiB0aGUgc3lz
dGVtIGRhdGFiYXNlIiAlIHVpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBwLm93
bmVyKCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhncnAsICJ0aGUgZ3JwIG1vZHVsZSBp
cyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgZGVmIHRlc3RfZ3JvdXAoc2VsZik6CisgICAg
ICAgIHAgPSBzZWxmLmNscyhCQVNFKSAvICdmaWxlQScKKyAgICAgICAgZ2lkID0gcC5zdGF0KCku
c3RfZ2lkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUgPSBncnAuZ2V0Z3JnaWQoZ2lk
KS5ncl9uYW1lCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tp
cFRlc3QoCisgICAgICAgICAgICAgICAgImdyb3VwICVkIGRvZXNuJ3QgaGF2ZSBhbiBlbnRyeSBp
biB0aGUgc3lzdGVtIGRhdGFiYXNlIiAlIGdpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChu
YW1lLCBwLmdyb3VwKCkpCisKKyAgICBkZWYgdGVzdF91bmxpbmsoc2VsZik6CisgICAgICAgIHAg
PSBzZWxmLmNscyhCQVNFKSAvICdmaWxlQScKKyAgICAgICAgcC51bmxpbmsoKQorICAgICAgICBz
ZWxmLmFzc2VydEZpbGVOb3RGb3VuZChwLnN0YXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5v
dEZvdW5kKHAudW5saW5rKQorCisgICAgZGVmIHRlc3Rfcm1kaXIoc2VsZik6CisgICAgICAgIHAg
PSBzZWxmLmNscyhCQVNFKSAvICdkaXJBJworICAgICAgICBmb3IgcSBpbiBwLml0ZXJkaXIoKToK
KyAgICAgICAgICAgIHEudW5saW5rKCkKKyAgICAgICAgcC5ybWRpcigpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmlsZU5vdEZvdW5kKHAuc3RhdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91
bmQocC51bmxpbmspCisKKyAgICBkZWYgdGVzdF9yZW5hbWUoc2VsZik6CisgICAgICAgIFAgPSBz
ZWxmLmNscyhCQVNFKQorICAgICAgICBwID0gUCAvICdmaWxlQScKKyAgICAgICAgc2l6ZSA9IHAu
c3RhdCgpLnN0X3NpemUKKyAgICAgICAgIyBSZW5hbWluZyB0byBhbm90aGVyIHBhdGgKKyAgICAg
ICAgcSA9IFAgLyAnZGlyQScgLyAnZmlsZUFBJworICAgICAgICBwLnJlbmFtZShxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHEuc3RhdCgpLnN0X3NpemUsIHNpemUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmlsZU5vdEZvdW5kKHAuc3RhdCkKKyAgICAgICAgIyBSZW5hbWluZyB0byBhIHN0ciBv
ZiBhIHJlbGF0aXZlIHBhdGgKKyAgICAgICAgciA9IHJlbF9qb2luKCdmaWxlQUFBJykKKyAgICAg
ICAgcS5yZW5hbWUocikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHIpLnN0X3Np
emUsIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZvdW5kKHEuc3RhdCkKKworICAg
IGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAg
ICAgICBwID0gUCAvICdmaWxlQScKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAz
KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHAu
cmVwbGFjZSwgcCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzaXplID0gcC5zdGF0KCku
c3Rfc2l6ZQorICAgICAgICAjIFJlcGxhY2luZyBhIG5vbi1leGlzdGluZyBwYXRoCisgICAgICAg
IHEgPSBQIC8gJ2RpckEnIC8gJ2ZpbGVBQScKKyAgICAgICAgcC5yZXBsYWNlKHEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocS5zdGF0KCkuc3Rfc2l6ZSwgc2l6ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRGaWxlTm90Rm91bmQocC5zdGF0KQorICAgICAgICAjIFJlcGxhY2luZyBhbm90aGVyIChl
eGlzdGluZykgcGF0aAorICAgICAgICByID0gcmVsX2pvaW4oJ2RpckInLCAnZmlsZUInKQorICAg
ICAgICBxLnJlcGxhY2UocikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHIpLnN0
X3NpemUsIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZvdW5kKHEuc3RhdCkKKwor
ICAgIGRlZiB0ZXN0X3RvdWNoX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJB
U0UpCisgICAgICAgIHAgPSBQIC8gJ25ld2ZpbGVBJworICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHAuZXhpc3RzKCkpCisgICAgICAgIHAudG91Y2goKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cC5leGlzdHMoKSkKKyAgICAgICAgIyBSZXdpbmQgdGhlIG10aW1lIHN1ZmZpY2llbnRseSBmYXIg
aW4gdGhlIHBhc3QgdG8gd29yayBhcm91bmQKKyAgICAgICAgIyBmaWxlc3lzdGVtLXNwZWNpZmlj
IHRpbWVzdGFtcCBncmFudWxhcml0eS4KKyAgICAgICAgb2xkX210aW1lID0gcC5zdGF0KCkuc3Rf
bXRpbWUgLSAxMAorICAgICAgICBvcy51dGltZShzdHIocCksIChvbGRfbXRpbWUsIG9sZF9tdGlt
ZSkpCisgICAgICAgICMgVGhlIGZpbGUgbXRpbWUgc2hvdWxkIGJlIHJlZnJlc2hlZCBieSBjYWxs
aW5nIHRvdWNoKCkgYWdhaW4KKyAgICAgICAgcC50b3VjaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0
R3JlYXRlckVxdWFsKHAuc3RhdCgpLnN0X210aW1lLCBvbGRfbXRpbWUpCisgICAgICAgICMgTm93
IHdpdGggZXhpc3Rfb2s9RmFsc2UKKyAgICAgICAgcCA9IFAgLyAnbmV3ZmlsZUInCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocC5leGlzdHMoKSkKKyAgICAgICAgcC50b3VjaChtb2RlPTBvNzAw
LCBleGlzdF9vaz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHAudG91Y2gsIGV4aXN0X29rPUZhbHNl
KQorCisgICAgZGVmIHRlc3RfdG91Y2hfbm9jaGFuZ2Uoc2VsZik6CisgICAgICAgIFAgPSBzZWxm
LmNscyhCQVNFKQorICAgICAgICBwID0gUCAvICdmaWxlQScKKyAgICAgICAgcC50b3VjaCgpCisg
ICAgICAgIHdpdGggcC5vcGVuKCdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGYucmVhZCgpLnN0cmlwKCksIGIidGhpcyBpcyBmaWxlIEEiKQorCisgICAgZGVmIHRlc3Rf
bWtkaXIoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICBwID0gUCAv
ICduZXdkaXJBJworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuZXhpc3RzKCkpCisgICAgICAg
IHAubWtkaXIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHAuaXNfZGlyKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICAjIFB5dGhvbiAyLjYga2x1ZGdlIGZvciBo
dHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNzg1MworICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIHAubWtkaXIoKQorICAgICAgICAgICAgZXhjZXB0OiAgIyBub3FhOiBFNzIyCisg
ICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRp
b24uZXJybm8sIGVycm5vLkVFWElTVCkKKworICAgIGRlZiB0ZXN0X21rZGlyX3BhcmVudHMoc2Vs
Zik6CisgICAgICAgICMgQ3JlYXRpbmcgYSBjaGFpbiBvZiBkaXJlY3RvcmllcworICAgICAgICBw
ID0gc2VsZi5jbHMoQkFTRSwgJ25ld2RpckInLCAnbmV3ZGlyQycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocC5leGlzdHMoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vy
cm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PRU5UKQorICAgICAgICBwLm1rZGlyKHBh
cmVudHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwLmlzX2RpcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1Qp
CisgICAgICAgICMgdGVzdCBgbW9kZWAgYXJnCisgICAgICAgIG1vZGUgPSBzdGF0LlNfSU1PREUo
cC5zdGF0KCkuc3RfbW9kZSkgICMgZGVmYXVsdCBtb2RlCisgICAgICAgIHAgPSBzZWxmLmNscyhC
QVNFLCAnbmV3ZGlyRCcsICduZXdkaXJFJykKKyAgICAgICAgcC5ta2RpcigwbzU1NSwgcGFyZW50
cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHAuaXNfZGlyKCkpCisgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKKyAg
ICAgICAgICAgICMgdGhlIGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGZvbGxvdyB0aGUgbW9kZSBh
cmd1bWVudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUocC5zdGF0
KCkuc3RfbW9kZSksIDBvNzU1NSAmIG1vZGUpCisgICAgICAgICMgdGhlIHBhcmVudCdzIHBlcm1p
c3Npb25zIGZvbGxvdyB0aGUgZGVmYXVsdCBwcm9jZXNzIHNldHRpbmdzCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHAucGFyZW50LnN0YXQoKS5zdF9tb2RlKSwgbW9kZSkK
KworICAgIGRlZiB0ZXN0X21rZGlyX2V4aXN0X29rKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5j
bHMoQkFTRSwgJ2RpckInKQorICAgICAgICBzdF9jdGltZV9maXJzdCA9IHAuc3RhdCgpLnN0X2N0
aW1lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUocC5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlRXhpc3RzKHAubWtk
aXIpCisgICAgICAgIHAubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCkuc3RfY3Rp
bWUsIHN0X2N0aW1lX2ZpcnN0KQorCisgICAgZGVmIHRlc3RfbWtkaXJfZXhpc3Rfb2tfd2l0aF9w
YXJlbnQoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQycpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydEZpbGVFeGlz
dHMocC5ta2RpcikKKyAgICAgICAgcCA9IHAgLyAnbmV3ZGlyQycKKyAgICAgICAgcC5ta2Rpcihw
YXJlbnRzPVRydWUpCisgICAgICAgIHN0X2N0aW1lX2ZpcnN0ID0gcC5zdGF0KCkuc3RfY3RpbWUK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmlsZUV4aXN0cyhwLm1rZGlyLCBwYXJlbnRzPVRydWUpCisgICAgICAgIHAubWtkaXIocGFyZW50
cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKS5zdF9jdGltZSwgc3RfY3RpbWVf
Zmlyc3QpCisKKyAgICBkZWYgdGVzdF9ta2Rpcl9leGlzdF9va19yb290KHNlbGYpOgorICAgICAg
ICAjIElzc3VlICMyNTgwMzogQSBkcml2ZSByb290IGNvdWxkIHJhaXNlIFBlcm1pc3Npb25FcnJv
ciBvbiBXaW5kb3dzCisgICAgICAgIHNlbGYuY2xzKCcvJykucmVzb2x2ZSgpLm1rZGlyKGV4aXN0
X29rPVRydWUpCisgICAgICAgIHNlbGYuY2xzKCcvJykucmVzb2x2ZSgpLm1rZGlyKHBhcmVudHM9
VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKworICAgIEBvbmx5X250ICAgICMgWFhYOiBub3Qgc3VyZSBo
b3cgdG8gdGVzdCB0aGlzIG9uIFBPU0lYCisgICAgZGVmIHRlc3RfbWtkaXJfd2l0aF91bmtub3du
X2RyaXZlKHNlbGYpOgorICAgICAgICBmb3IgZCBpbiAnWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURD
QkEnOgorICAgICAgICAgICAgcCA9IHNlbGYuY2xzKGQgKyAnOlxcJykKKyAgICAgICAgICAgIGlm
IG5vdCBwLmlzX2RpcigpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgZmluZCBhIGRyaXZlIHRoYXQgZG9lc24n
dCBleGlzdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcik6CisgICAg
ICAgICAgICAocCAvICdjaGlsZCcgLyAncGF0aCcpLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKworICAg
IGRlZiB0ZXN0X21rZGlyX3dpdGhfY2hpbGRfZmlsZShzZWxmKToKKyAgICAgICAgcCA9IHNlbGYu
Y2xzKEJBU0UsICdkaXJCJywgJ2ZpbGVCJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhp
c3RzKCkpCisgICAgICAgICMgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSBsYXN0IHBh
dGggY29tcG9uZW50IGlzIGFuIGV4aXN0aW5nCisgICAgICAgICMgcmVndWxhciBmaWxlLCByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgZXhpc3Rfb2sgaXMgdHJ1ZSBvciBub3QuCisgICAgICAgIHNlbGYu
YXNzZXJ0RmlsZUV4aXN0cyhwLm1rZGlyLCBwYXJlbnRzPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmlsZUV4aXN0cyhwLm1rZGlyLCBwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisKKyAg
ICBkZWYgdGVzdF9ta2Rpcl9ub19wYXJlbnRzX2ZpbGUoc2VsZik6CisgICAgICAgIHAgPSBzZWxm
LmNscyhCQVNFLCAnZmlsZUEnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkK
KyAgICAgICAgIyBBbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIGxhc3QgcGF0aCBjb21w
b25lbnQgaXMgYW4gZXhpc3RpbmcKKyAgICAgICAgIyByZWd1bGFyIGZpbGUsIHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciBleGlzdF9vayBpcyB0cnVlIG9yIG5vdC4KKyAgICAgICAgc2VsZi5hc3NlcnRG
aWxlRXhpc3RzKHAubWtkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZUV4aXN0cyhwLm1rZGly
LCBleGlzdF9vaz1UcnVlKQorCisgICAgZGVmIHRlc3RfbWtkaXJfY29uY3VycmVudF9wYXJlbnRf
Y3JlYXRpb24oc2VsZik6CisgICAgICAgIGZvciBwYXR0ZXJuX251bSBpbiByYW5nZSgzMik6Cisg
ICAgICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckNQQyVkJyAlIHBhdHRlcm5fbnVtKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLmV4aXN0cygpKQorCisgICAgICAgICAgICBk
ZWYgbXlfbWtkaXIocGF0aCwgbW9kZT0wbzc3Nyk6CisgICAgICAgICAgICAgICAgcGF0aCA9IHN0
cihwYXRoKQorICAgICAgICAgICAgICAgICMgRW11bGF0ZSBhbm90aGVyIHByb2Nlc3MgdGhhdCB3
b3VsZCBjcmVhdGUgdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICMganVzdCBiZWZvcmUg
d2UgdHJ5IHRvIGNyZWF0ZSBpdCBvdXJzZWx2ZXMuICBXZSBkbyBpdAorICAgICAgICAgICAgICAg
ICMgaW4gYWxsIHBvc3NpYmxlIHBhdHRlcm4gY29tYmluYXRpb25zLCBhc3N1bWluZyB0aGF0IHRo
aXMKKyAgICAgICAgICAgICAgICAjIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBtb3N0IDUgdGltZXMg
KGRpckNQQy9kaXIxL2RpcjIsCisgICAgICAgICAgICAgICAgIyBkaXJDUEMvZGlyMSwgZGlyQ1BD
LCBkaXJDUEMvZGlyMSwgZGlyQ1BDL2RpcjEvZGlyMikuCisgICAgICAgICAgICAgICAgaWYgcGF0
dGVybi5wb3AoKToKKyAgICAgICAgICAgICAgICAgICAgb3MubWtkaXIocGF0aCwgbW9kZSkgICAg
ICAjIGZyb20gYW5vdGhlciBwcm9jZXNzCisgICAgICAgICAgICAgICAgICAgIGNvbmN1cnJlbnRs
eV9jcmVhdGVkLmFkZChwYXRoKQorICAgICAgICAgICAgICAgIG9zLm1rZGlyKHBhdGgsIG1vZGUp
ICAgICAgICAgICMgb3VyIHJlYWwgY2FsbAorCisgICAgICAgICAgICBwYXR0ZXJuID0gW2Jvb2wo
cGF0dGVybl9udW0gJiAoMSA8PCBuKSkgZm9yIG4gaW4gcmFuZ2UoNSldCisgICAgICAgICAgICBj
b25jdXJyZW50bHlfY3JlYXRlZCA9IHNldCgpCisgICAgICAgICAgICBwMTIgPSBwIC8gJ2RpcjEn
IC8gJ2RpcjInCisKKyAgICAgICAgICAgIGRlZiBfdHJ5X2Z1bmMoKToKKyAgICAgICAgICAgICAg
ICB3aXRoIG1vY2sucGF0Y2goInBhdGhsaWIyLl9ub3JtYWxfYWNjZXNzb3IubWtkaXIiLCBteV9t
a2Rpcik6CisgICAgICAgICAgICAgICAgICAgIHAxMi5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0
X29rPUZhbHNlKQorCisgICAgICAgICAgICBkZWYgX2V4Y19mdW5jKGV4Yyk6CisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRJbihzdHIocDEyKSwgY29uY3VycmVudGx5X2NyZWF0ZWQpCisKKyAg
ICAgICAgICAgIGRlZiBfZWxzZV9mdW5jKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRO
b3RJbihzdHIocDEyKSwgY29uY3VycmVudGx5X2NyZWF0ZWQpCisKKyAgICAgICAgICAgIHBhdGhs
aWIuX3RyeV9leGNlcHRfZmlsZWV4aXN0c2Vycm9yKAorICAgICAgICAgICAgICAgIF90cnlfZnVu
YywgX2V4Y19mdW5jLCBfZWxzZV9mdW5jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAu
ZXhpc3RzKCkpCisKKyAgICBAc3VwcG9ydF9za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRl
c3Rfc3ltbGlua190byhzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAg
IHRhcmdldCA9IFAgLyAnZmlsZUEnCisgICAgICAgICMgU3ltbGlua2luZyBhIHBhdGggdGFyZ2V0
CisgICAgICAgIGxpbmsgPSBQIC8gJ2RpckEnIC8gJ2xpbmtBQScKKyAgICAgICAgbGluay5zeW1s
aW5rX3RvKHRhcmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5rLnN0YXQoKSwgdGFy
Z2V0LnN0YXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsaW5rLmxzdGF0KCksIHRh
cmdldC5zdGF0KCkpCisgICAgICAgICMgU3ltbGlua2luZyBhIHN0ciB0YXJnZXQKKyAgICAgICAg
bGluayA9IFAgLyAnZGlyQScgLyAnbGlua0FBQScKKyAgICAgICAgbGluay5zeW1saW5rX3RvKHN0
cih0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmsuc3RhdCgpLCB0YXJnZXQu
c3RhdCgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxpbmsubHN0YXQoKSwgdGFyZ2V0
LnN0YXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsaW5rLmlzX2RpcigpKQorICAgICAg
ICAjIFN5bWxpbmtpbmcgdG8gYSBkaXJlY3RvcnkKKyAgICAgICAgdGFyZ2V0ID0gUCAvICdkaXJC
JworICAgICAgICBsaW5rID0gUCAvICdkaXJBJyAvICdsaW5rQUFBQScKKyAgICAgICAgbGluay5z
eW1saW5rX3RvKHRhcmdldCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1UcnVlKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpbmsuc3RhdCgpLCB0YXJnZXQuc3RhdCgpKQorICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKGxpbmsubHN0YXQoKSwgdGFyZ2V0LnN0YXQoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxpbmsuaXNfZGlyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaXN0KGxp
bmsuaXRlcmRpcigpKSkKKworICAgIGRlZiB0ZXN0X2lzX2RpcihzZWxmKToKKyAgICAgICAgUCA9
IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoUCAvICdkaXJBJykuaXNf
ZGlyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZmlsZUEnKS5pc19kaXIoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdub24tZXhpc3RpbmcnKS5pc19kaXIoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdmaWxlQScgLyAnYmFoJykuaXNfZGlyKCkp
CisgICAgICAgIGlmIHN1cHBvcnRfY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoKFAgLyAnbGlua0EnKS5pc19kaXIoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgoUCAvICdsaW5rQicpLmlzX2RpcigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgoUCAvICdicm9rZW5MaW5rJykuaXNfZGlyKCkpCisKKyAgICBkZWYgdGVzdF9pc19maWxlKHNl
bGYpOgorICAgICAgICBQID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KChQIC8gJ2ZpbGVBJykuaXNfZmlsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8g
J2RpckEnKS5pc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnbm9uLWV4
aXN0aW5nJykuaXNfZmlsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVB
JyAvICdiYWgnKS5pc19maWxlKCkpCisgICAgICAgIGlmIHN1cHBvcnRfY2FuX3N5bWxpbmsoKToK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoUCAvICdsaW5rQScpLmlzX2ZpbGUoKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnbGlua0InKS5pc19maWxlKCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2Jyb2tlbkxpbmsnKS5pc19maWxlKCkpCisK
KyAgICBkZWYgdGVzdF9pc19zeW1saW5rKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMoQkFT
RSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdmaWxlQScpLmlzX3N5bWxpbmsoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdkaXJBJykuaXNfc3ltbGluaygpKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ25vbi1leGlzdGluZycpLmlzX3N5bWxpbmsoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdmaWxlQScgLyAnYmFoJykuaXNfc3ltbGlu
aygpKQorICAgICAgICBpZiBzdXBwb3J0X2Nhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoKFAgLyAnbGlua0EnKS5pc19zeW1saW5rKCkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoKFAgLyAnbGlua0InKS5pc19zeW1saW5rKCkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoKFAgLyAnYnJva2VuTGluaycpLmlzX3N5bWxpbmsoKSkKKworICAgIGRlZiB0
ZXN0X2lzX2ZpZm9fZmFsc2Uoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJykuaXNfZmlmbygpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKChQIC8gJ2RpckEnKS5pc19maWZvKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoKFAgLyAnbm9uLWV4aXN0aW5nJykuaXNfZmlmbygpKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAvICdiYWgnKS5pc19maWZvKCkpCisKKyAgICBAdW5pdHRl
c3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAibWtmaWZvIiksICJvcy5ta2ZpZm8oKSByZXF1aXJl
ZCIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAibWtmaWZvIG5vdCBh
bGxvd2VkLCBub24gcm9vdCB1c2VyIikKKyAgICBkZWYgdGVzdF9pc19maWZvX3RydWUoc2VsZik6
CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFLCAnbXlmaWZvJykKKyAgICAgICAgb3MubWtmaWZv
KHN0cihQKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuaXNfZmlmbygpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKFAuaXNfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
UC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9pc19zb2NrZXRfZmFsc2Uoc2VsZik6CisgICAg
ICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2Zp
bGVBJykuaXNfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZGlyQScp
LmlzX3NvY2tldCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ25vbi1leGlzdGlu
ZycpLmlzX3NvY2tldCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAv
ICdiYWgnKS5pc19zb2NrZXQoKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIo
c29ja2V0LCAiQUZfVU5JWCIpLCAiVW5peCBzb2NrZXRzIHJlcXVpcmVkIikKKyAgICBkZWYgdGVz
dF9pc19zb2NrZXRfdHJ1ZShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UsICdteXNv
Y2snKQorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0
LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgc29jay5iaW5kKHN0cihQKSkKKyAgICAgICAgZXhjZXB0IE9T
RXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmICJBRl9VTklYIHBhdGggdG9vIGxvbmciIGluIHN0
cihlKToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgYmluZCBVbml4IHNv
Y2tldDogIiArIHN0cihlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuaXNfc29ja2V0KCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUC5pc19maWZvKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoUC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9pc19ibG9ja19kZXZpY2VfZmFs
c2Uoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKChQIC8gJ2ZpbGVBJykuaXNfYmxvY2tfZGV2aWNlKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoKFAgLyAnZGlyQScpLmlzX2Jsb2NrX2RldmljZSgpKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKChQIC8gJ25vbi1leGlzdGluZycpLmlzX2Jsb2NrX2RldmljZSgpKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAvICdiYWgnKS5pc19ibG9ja19kZXZpY2Uo
KSkKKworICAgIGRlZiB0ZXN0X2lzX2NoYXJfZGV2aWNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBQ
ID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdmaWxlQScp
LmlzX2NoYXJfZGV2aWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZGlyQScp
LmlzX2NoYXJfZGV2aWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnbm9uLWV4
aXN0aW5nJykuaXNfY2hhcl9kZXZpY2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAv
ICdmaWxlQScgLyAnYmFoJykuaXNfY2hhcl9kZXZpY2UoKSkKKworICAgIEBvbmx5X3Bvc2l4Cisg
ICAgZGVmIHRlc3RfaXNfY2hhcl9kZXZpY2VfdHJ1ZShzZWxmKToKKyAgICAgICAgIyBVbmRlciBV
bml4LCAvZGV2L251bGwgc2hvdWxkIGdlbmVyYWxseSBiZSBhIGNoYXIgZGV2aWNlCisgICAgICAg
IFAgPSBzZWxmLmNscygnL2Rldi9udWxsJykKKyAgICAgICAgaWYgbm90IFAuZXhpc3RzKCk6Cisg
ICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIvZGV2L251bGwgcmVxdWlyZWQiKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoUC5pc19jaGFyX2RldmljZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKFAuaXNfYmxvY2tfZGV2aWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUC5pc19m
aWxlKCkpCisKKyAgICBkZWYgdGVzdF9waWNrbGluZ19jb21tb24oc2VsZik6CisgICAgICAgIHAg
PSBzZWxmLmNscyhCQVNFLCAnZmlsZUEnKQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoMCwg
cGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGR1bXBlZCA9IHBpY2ts
ZS5kdW1wcyhwLCBwcm90bykKKyAgICAgICAgICAgIHBwID0gcGlja2xlLmxvYWRzKGR1bXBlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAuc3RhdCgpLCBwLnN0YXQoKSkKKworICAg
IGRlZiB0ZXN0X3BhcnRzX2ludGVybmluZyhzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisg
ICAgICAgIHAgPSBQKCcvdXNyL2Jpbi9mb28nKQorICAgICAgICBxID0gUCgnL3Vzci9sb2NhbC9i
aW4nKQorICAgICAgICAjICd1c3InCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocC5wYXJ0c1sxXSwg
cS5wYXJ0c1sxXSkKKyAgICAgICAgIyAnYmluJworICAgICAgICBzZWxmLmFzc2VydElzKHAucGFy
dHNbMl0sIHEucGFydHNbM10pCisKKyAgICBkZWYgX2NoZWNrX2NvbXBsZXhfc3ltbGlua3Moc2Vs
ZiwgbGluazBfdGFyZ2V0KToKKyAgICAgICAgIyBUZXN0IHNvbHZpbmcgYSBub24tbG9vcGluZyBj
aGFpbiBvZiBzeW1saW5rcyAoaXNzdWUgIzE5ODg3KQorICAgICAgICBQID0gc2VsZi5jbHMoQkFT
RSkKKyAgICAgICAgc2VsZi5kaXJsaW5rKG9zLnBhdGguam9pbignbGluazAnLCAnbGluazAnKSwg
am9pbignbGluazEnKSkKKyAgICAgICAgc2VsZi5kaXJsaW5rKG9zLnBhdGguam9pbignbGluazEn
LCAnbGluazEnKSwgam9pbignbGluazInKSkKKyAgICAgICAgc2VsZi5kaXJsaW5rKG9zLnBhdGgu
am9pbignbGluazInLCAnbGluazInKSwgam9pbignbGluazMnKSkKKyAgICAgICAgc2VsZi5kaXJs
aW5rKGxpbmswX3RhcmdldCwgam9pbignbGluazAnKSkKKworICAgICAgICAjIFJlc29sdmUgYWJz
b2x1dGUgcGF0aHMKKyAgICAgICAgcCA9IChQIC8gJ2xpbmswJykucmVzb2x2ZSgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocCwgUCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCks
IEJBU0UpCisgICAgICAgIHAgPSAoUCAvICdsaW5rMScpLnJlc29sdmUoKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHAsIFApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCBCQVNF
KQorICAgICAgICBwID0gKFAgLyAnbGluazInKS5yZXNvbHZlKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwLCBQKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgQkFTRSkKKyAg
ICAgICAgcCA9IChQIC8gJ2xpbmszJykucmVzb2x2ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocCwgUCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksIEJBU0UpCisKKyAgICAg
ICAgIyBSZXNvbHZlIHJlbGF0aXZlIHBhdGhzCisgICAgICAgIG9sZF9wYXRoID0gb3MuZ2V0Y3dk
KCkKKyAgICAgICAgb3MuY2hkaXIoQkFTRSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcCA9
IHNlbGYuY2xzKCdsaW5rMCcpLnJlc29sdmUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwLCBQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksIEJBU0UpCisgICAg
ICAgICAgICBwID0gc2VsZi5jbHMoJ2xpbmsxJykucmVzb2x2ZSgpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHAsIFApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwg
QkFTRSkKKyAgICAgICAgICAgIHAgPSBzZWxmLmNscygnbGluazInKS5yZXNvbHZlKCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgUCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyKHApLCBCQVNFKQorICAgICAgICAgICAgcCA9IHNlbGYuY2xzKCdsaW5rMycpLnJlc29s
dmUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIocCksIEJBU0UpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBvcy5jaGRpcihvbGRfcGF0aCkKKworICAgIEBzdXBwb3J0X3NraXBfdW5sZXNzX3N5bWxpbmsK
KyAgICBkZWYgdGVzdF9jb21wbGV4X3N5bWxpbmtzX2Fic29sdXRlKHNlbGYpOgorICAgICAgICBz
ZWxmLl9jaGVja19jb21wbGV4X3N5bWxpbmtzKEJBU0UpCisKKyAgICBAc3VwcG9ydF9za2lwX3Vu
bGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29tcGxleF9zeW1saW5rc19yZWxhdGl2ZShzZWxm
KToKKyAgICAgICAgc2VsZi5fY2hlY2tfY29tcGxleF9zeW1saW5rcygnLicpCisKKyAgICBAc3Vw
cG9ydF9za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29tcGxleF9zeW1saW5rc19y
ZWxhdGl2ZV9kb3RfZG90KHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19jb21wbGV4X3N5bWxp
bmtzKG9zLnBhdGguam9pbignZGlyQScsICcuLicpKQorCisKK2NsYXNzIFBhdGhUZXN0KF9CYXNl
UGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBjbHMgPSBwYXRobGliLlBhdGgKKwor
ICAgIGRlZiB0ZXN0X2NvbmNyZXRlX2NsYXNzKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMo
J2EnKQorICAgICAgICBzZWxmLmFzc2VydElzKAorICAgICAgICAgICAgdHlwZShwKSwKKyAgICAg
ICAgICAgIHBhdGhsaWIuV2luZG93c1BhdGggaWYgb3MubmFtZSA9PSAnbnQnIGVsc2UgcGF0aGxp
Yi5Qb3NpeFBhdGgpCisKKyAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9mbGF2b3VyKHNlbGYpOgor
ICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhOb3RJbXBsZW1lbnRlZEVycm9yLCBwYXRobGliLlBvc2l4UGF0aCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHBhdGhs
aWIuV2luZG93c1BhdGgpCisKKyAgICBkZWYgdGVzdF9nbG9iX2VtcHR5X3BhdHRlcm4oc2VsZik6
CisgICAgICAgIHAgPSBzZWxmLmNscygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNS
ZWdleChWYWx1ZUVycm9yLCAnVW5hY2NlcHRhYmxlIHBhdHRlcm4nKToKKyAgICAgICAgICAgIGxp
c3QocC5nbG9iKCcnKSkKKworCitAb25seV9wb3NpeAorY2xhc3MgUG9zaXhQYXRoVGVzdChfQmFz
ZVBhdGhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgY2xzID0gcGF0aGxpYi5Qb3NpeFBh
dGgKKworICAgIGRlZiBfY2hlY2tfc3ltbGlua19sb29wKHNlbGYsICphcmdzKToKKyAgICAgICAg
cGF0aCA9IHNlbGYuY2xzKCphcmdzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1
bnRpbWVFcnJvcik6CisgICAgICAgICAgICBwcmludChwYXRoLnJlc29sdmUoc3RyaWN0PVRydWUp
KQorCisgICAgZGVmIF9jaGVja19zeW1saW5rX2xvb3Bfbm9uc3RyaWN0KHNlbGYsICphcmdzKToK
KyAgICAgICAgcGF0aCA9IHNlbGYuY2xzKCphcmdzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBwcmludChwYXRoLnJlc29sdmUoc3Ry
aWN0PUZhbHNlKSkKKworICAgIGRlZiB0ZXN0X29wZW5fbW9kZShzZWxmKToKKyAgICAgICAgb2xk
X21hc2sgPSBvcy51bWFzaygwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW1hc2ssIG9s
ZF9tYXNrKQorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgd2l0aCAocCAvICdu
ZXdfZmlsZScpLm9wZW4oJ3diJyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHN0ID0gb3Mu
c3RhdChqb2luKCduZXdfZmlsZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19J
TU9ERShzdC5zdF9tb2RlKSwgMG82NjYpCisgICAgICAgIG9zLnVtYXNrKDBvMDIyKQorICAgICAg
ICB3aXRoIChwIC8gJ290aGVyX25ld19maWxlJykub3Blbignd2InKToKKyAgICAgICAgICAgIHBh
c3MKKyAgICAgICAgc3QgPSBvcy5zdGF0KGpvaW4oJ290aGVyX25ld19maWxlJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpLCAwbzY0NCkKKworICAg
IGRlZiB0ZXN0X3RvdWNoX21vZGUoc2VsZik6CisgICAgICAgIG9sZF9tYXNrID0gb3MudW1hc2so
MCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVtYXNrLCBvbGRfbWFzaykKKyAgICAgICAg
cCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIChwIC8gJ25ld19maWxlJykudG91Y2goKQorICAg
ICAgICBzdCA9IG9zLnN0YXQoam9pbignbmV3X2ZpbGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSksIDBvNjY2KQorICAgICAgICBvcy51bWFzaygw
bzAyMikKKyAgICAgICAgKHAgLyAnb3RoZXJfbmV3X2ZpbGUnKS50b3VjaCgpCisgICAgICAgIHN0
ID0gb3Muc3RhdChqb2luKCdvdGhlcl9uZXdfZmlsZScpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSwgMG82NDQpCisgICAgICAgIChwIC8gJ21hc2tl
ZF9uZXdfZmlsZScpLnRvdWNoKG1vZGU9MG83NTApCisgICAgICAgIHN0ID0gb3Muc3RhdChqb2lu
KCdtYXNrZWRfbmV3X2ZpbGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1P
REUoc3Quc3RfbW9kZSksIDBvNzUwKQorCisgICAgQHN1cHBvcnRfc2tpcF91bmxlc3Nfc3ltbGlu
aworICAgIGRlZiB0ZXN0X3Jlc29sdmVfbG9vcChzZWxmKToKKyAgICAgICAgIyBMb29wcyB3aXRo
IHJlbGF0aXZlIHN5bWxpbmtzCisgICAgICAgIG9zLnN5bWxpbmsoJ2xpbmtYL2luc2lkZScsIGpv
aW4oJ2xpbmtYJykpCisgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlu
a1gnKQorICAgICAgICBvcy5zeW1saW5rKCdsaW5rWScsIGpvaW4oJ2xpbmtZJykpCisgICAgICAg
IHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1knKQorICAgICAgICBvcy5zeW1s
aW5rKCdsaW5rWi8uLi9saW5rWicsIGpvaW4oJ2xpbmtaJykpCisgICAgICAgIHNlbGYuX2NoZWNr
X3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1onKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAg
ICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wX25vbnN0cmljdChCQVNFLCAnbGlua1onLCAnZm9v
JykKKyAgICAgICAgIyBMb29wcyB3aXRoIGFic29sdXRlIHN5bWxpbmtzCisgICAgICAgIG9zLnN5
bWxpbmsoam9pbignbGlua1UvaW5zaWRlJyksIGpvaW4oJ2xpbmtVJykpCisgICAgICAgIHNlbGYu
X2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1UnKQorICAgICAgICBvcy5zeW1saW5rKGpv
aW4oJ2xpbmtWJyksIGpvaW4oJ2xpbmtWJykpCisgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtf
bG9vcChCQVNFLCAnbGlua1YnKQorICAgICAgICBvcy5zeW1saW5rKGpvaW4oJ2xpbmtXLy4uL2xp
bmtXJyksIGpvaW4oJ2xpbmtXJykpCisgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChC
QVNFLCAnbGlua1cnKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgc2VsZi5fY2hlY2tf
c3ltbGlua19sb29wX25vbnN0cmljdChCQVNFLCAnbGlua1cnLCAnZm9vJykKKworICAgIGRlZiB0
ZXN0X2dsb2Ioc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUChCQVNF
KQorICAgICAgICBnaXZlbiA9IHNldChwLmdsb2IoIkZJTEVhIikpCisgICAgICAgIGV4cGVjdCA9
IHNldCgpIGlmIG5vdCBzdXBwb3J0LmZzX2lzX2Nhc2VfaW5zZW5zaXRpdmUoQkFTRSkgZWxzZSBn
aXZlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpdmVuLCBleHBlY3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiRklMRWEqIikpLCBzZXQoKSkKKworICAgIGRlZiB0
ZXN0X3JnbG9iKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoQkFT
RSwgImRpckMiKQorICAgICAgICBnaXZlbiA9IHNldChwLnJnbG9iKCJGSUxFZCIpKQorICAgICAg
ICBleHBlY3QgPSBzZXQoKSBpZiBub3Qgc3VwcG9ydC5mc19pc19jYXNlX2luc2Vuc2l0aXZlKEJB
U0UpIGVsc2UgZ2l2ZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnaXZlbiwgZXhwZWN0KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLnJnbG9iKCJGSUxFZCoiKSksIHNldCgpKQor
CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwd2QsICdnZXRwd2FsbCcpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICdwd2QgbW9kdWxlIGRvZXMgbm90IGV4cG9zZSBnZXRwd2Fs
bCgpJykKKyAgICBkZWYgdGVzdF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5j
bHMKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdwd2QnKQorICAgICAgICBpbXBvcnQg
cHdkCisgICAgICAgIHB3ZGVudCA9IHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkKKyAgICAgICAg
dXNlcm5hbWUgPSBwd2RlbnQucHdfbmFtZQorICAgICAgICB1c2VyaG9tZSA9IHB3ZGVudC5wd19k
aXIucnN0cmlwKCcvJykgb3IgJy8nCisgICAgICAgICMgZmluZCBhcmJpdHJhcnkgZGlmZmVyZW50
IHVzZXIgKGlmIGV4aXN0cykKKyAgICAgICAgZm9yIHB3ZGVudCBpbiBwd2QuZ2V0cHdhbGwoKToK
KyAgICAgICAgICAgIG90aGVybmFtZSA9IHB3ZGVudC5wd19uYW1lCisgICAgICAgICAgICBvdGhl
cmhvbWUgPSBwd2RlbnQucHdfZGlyLnJzdHJpcCgnLycpCisgICAgICAgICAgICBpZiBvdGhlcm5h
bWUgIT0gdXNlcm5hbWUgYW5kIG90aGVyaG9tZToKKyAgICAgICAgICAgICAgICBicmVhaworCisg
ICAgICAgIHAxID0gUCgnfi9Eb2N1bWVudHMnKQorICAgICAgICBwMiA9IFAoJ34nICsgdXNlcm5h
bWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHAzID0gUCgnficgKyBvdGhlcm5hbWUgKyAnL0Rv
Y3VtZW50cycpCisgICAgICAgIHA0ID0gUCgnLi4vficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRz
JykKKyAgICAgICAgcDUgPSBQKCcvficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAg
ICAgcDYgPSBQKCcnKQorICAgICAgICBwNyA9IFAoJ35mYWtldXNlci9Eb2N1bWVudHMnKQorCisg
ICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAg
ICAgICAgZW52LnVuc2V0KCdIT01FJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
MS5leHBhbmR1c2VyKCksIFAodXNlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHAyLmV4cGFuZHVzZXIoKSwgUCh1c2VyaG9tZSkgLyAnRG9jdW1lbnRz
JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDMuZXhwYW5kdXNlcigpLCBQKG90aGVy
aG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhw
YW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNl
cigpLCBwNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBw
NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDcuZXhwYW5k
dXNlcikKKworICAgICAgICAgICAgZW52LnNldCgnSE9NRScsICcvdG1wJykKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhwYW5kdXNlcigpLCBQKCcvdG1wL0RvY3VtZW50cycpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5leHBhbmR1c2VyKCksIFAodXNlcmhvbWUp
IC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAzLmV4cGFuZHVz
ZXIoKSwgUChvdGhlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHA0LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHA1LmV4cGFuZHVzZXIoKSwgcDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4
cGFuZHVzZXIoKSwgcDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJy
b3IsIHA3LmV4cGFuZHVzZXIpCisKKworQG9ubHlfbnQKK2NsYXNzIFdpbmRvd3NQYXRoVGVzdChf
QmFzZVBhdGhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgY2xzID0gcGF0aGxpYi5XaW5k
b3dzUGF0aAorCisgICAgZGVmIHRlc3RfZ2xvYihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xz
CisgICAgICAgIHAgPSBQKEJBU0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xv
YigiRklMRWEiKSksIHNldChbUChCQVNFLCAiZmlsZUEiKV0pKQorCisgICAgZGVmIHRlc3Rfcmds
b2Ioc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUChCQVNFLCAiZGly
QyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAucmdsb2IoIkZJTEVkIikpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldChbUChCQVNFLCAiZGlyQy9kaXJEL2ZpbGVEIildKSkK
KworICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscwor
ICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAg
ICAgICAgIGVudi51bnNldCgnSE9NRScpCisgICAgICAgICAgICBlbnYudW5zZXQoJ1VTRVJQUk9G
SUxFJykKKyAgICAgICAgICAgIGVudi51bnNldCgnSE9NRVBBVEgnKQorICAgICAgICAgICAgZW52
LnVuc2V0KCdIT01FRFJJVkUnKQorICAgICAgICAgICAgZW52LnNldCgnVVNFUk5BTUUnLCAnYWxp
Y2UnKQorCisgICAgICAgICAgICAjIHRlc3QgdGhhdCB0aGUgcGF0aCByZXR1cm5zIHVuY2hhbmdl
ZAorICAgICAgICAgICAgcDEgPSBQKCd+L015IERvY3VtZW50cycpCisgICAgICAgICAgICBwMiA9
IFAoJ35hbGljZS9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDMgPSBQKCd+Ym9iL015IERv
Y3VtZW50cycpCisgICAgICAgICAgICBwNCA9IFAoJy9+L015IERvY3VtZW50cycpCisgICAgICAg
ICAgICBwNSA9IFAoJ2Q6fi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDYgPSBQKCcnKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwMS5leHBhbmR1c2Vy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwMi5leHBhbmR1
c2VyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwMy5leHBh
bmR1c2VyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQorCisgICAgICAg
ICAgICBkZWYgY2hlY2soKToKKyAgICAgICAgICAgICAgICBlbnYudW5zZXQoJ1VTRVJOQU1FJykK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAxLmV4cGFuZHVzZXIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAoJ0M6L1VzZXJzL2FsaWNlL015IERvY3VtZW50
cycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwMi5leHBh
bmR1c2VyKQorICAgICAgICAgICAgICAgIGVudi5zZXQoJ1VTRVJOQU1FJywgJ2FsaWNlJykKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmV4cGFuZHVzZXIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFAoJ0M6L1VzZXJzL2FsaWNlL015IERvY3VtZW50cycp
KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDMuZXhwYW5kdXNlcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYm9iL015IERvY3VtZW50
cycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBw
NCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFuZHVzZXIoKSwgcDUp
CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQor
CisgICAgICAgICAgICAjIHRlc3QgdGhlIGZpcnN0IGxvb2t1cCBrZXkgaW4gdGhlIGVudiB2YXJz
CisgICAgICAgICAgICBlbnYuc2V0KCdIT01FJywgJ0M6XFxVc2Vyc1xcYWxpY2UnKQorICAgICAg
ICAgICAgY2hlY2soKQorCisgICAgICAgICAgICAjIHRlc3QgdGhhdCBIT01FUEFUSCBpcyBhdmFp
bGFibGUgaW5zdGVhZAorICAgICAgICAgICAgZW52LnVuc2V0KCdIT01FJykKKyAgICAgICAgICAg
IGVudi5zZXQoJ0hPTUVQQVRIJywgJ0M6XFxVc2Vyc1xcYWxpY2UnKQorICAgICAgICAgICAgY2hl
Y2soKQorCisgICAgICAgICAgICBlbnYuc2V0KCdIT01FRFJJVkUnLCAnQzpcXCcpCisgICAgICAg
ICAgICBlbnYuc2V0KCdIT01FUEFUSCcsICdVc2Vyc1xcYWxpY2UnKQorICAgICAgICAgICAgY2hl
Y2soKQorCisgICAgICAgICAgICBlbnYudW5zZXQoJ0hPTUVEUklWRScpCisgICAgICAgICAgICBl
bnYudW5zZXQoJ0hPTUVQQVRIJykKKyAgICAgICAgICAgIGVudi5zZXQoJ1VTRVJQUk9GSUxFJywg
J0M6XFxVc2Vyc1xcYWxpY2UnKQorICAgICAgICAgICAgY2hlY2soKQorCisKKyMgZXh0cmEgdGVz
dCB0byBlbnN1cmUgY292ZXJhZ2Ugb2YgaXNzdWUgIzU0CitkZWYgdGVzdF9yZXNvbHZlX2V4dHJh
KCk6CisgICAgcGF0aGxpYi5QYXRoKCJ+L2RvZXNfbm90X2V4aXN0IikucmVzb2x2ZSgpCisKKwor
ZGVmIG1haW4oKToKKyAgICB1bml0dGVzdC5tYWluKF9fbmFtZV9fKQorCisKK2lmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bk
Zl9qcy9wZGYud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BkZl9qcy9wZGYud29ya2VyLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzODI5MTM1MjhlNi4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGRmX2pzL3BkZi53b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LTwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDFjN2EyOGI0
NC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvTElDRU5TRQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGRmX2pzL3BkZi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3BkZi53b3JrZXIuanMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5Ly5jb3ZlcmFnZXJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLmNvdmVyYWdlcmMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYjFkZTFjZDI0N2MKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BsdWdneS8uY292ZXJhZ2VyYwpAQCAtMCwwICsxLDE0IEBACitbcnVu
XQoraW5jbHVkZSA9CisgIHBsdWdneS8qCisgIHRlc3RpbmcvKgorICAqL2xpYi9weXRob24qL3Np
dGUtcGFja2FnZXMvcGx1Z2d5LyoKKyAgKi9weXB5Ki9zaXRlLXBhY2thZ2VzL3BsdWdneS8qCisg
ICpcTGliXHNpdGUtcGFja2FnZXNccGx1Z2d5XCoKK2JyYW5jaCA9IDEKKworW3BhdGhzXQorc291
cmNlID0gcGx1Z2d5LworICAqL2xpYi9weXRob24qL3NpdGUtcGFja2FnZXMvcGx1Z2d5LworICAq
L3B5cHkqL3NpdGUtcGFja2FnZXMvcGx1Z2d5LworICAqXExpYlxzaXRlLXBhY2thZ2VzXHBsdWdn
eVwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8uZ2l0
aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDU4MDUzNmM3
YWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLmdpdGlnbm9yZQpAQCAtMCwwICsx
LDY0IEBACisjIEJ5dGUtY29tcGlsZWQgLyBvcHRpbWl6ZWQgLyBETEwgZmlsZXMKK19fcHljYWNo
ZV9fLworKi5weVtjb2RdCisKKyMgQyBleHRlbnNpb25zCisqLnNvCisKKyMgRGlzdHJpYnV0aW9u
IC8gcGFja2FnaW5nCisuUHl0aG9uCitlbnYvCitidWlsZC8KK2RldmVsb3AtZWdncy8KK2Rpc3Qv
Citkb3dubG9hZHMvCitlZ2dzLworLmVnZ3MvCitsaWIvCitsaWI2NC8KK3BhcnRzLworc2Rpc3Qv
Cit2YXIvCisqLmVnZy1pbmZvLworLmluc3RhbGxlZC5jZmcKKyouZWdnCisKKyMgUHlJbnN0YWxs
ZXIKKyMgIFVzdWFsbHkgdGhlc2UgZmlsZXMgYXJlIHdyaXR0ZW4gYnkgYSBweXRob24gc2NyaXB0
IGZyb20gYSB0ZW1wbGF0ZQorIyAgYmVmb3JlIFB5SW5zdGFsbGVyIGJ1aWxkcyB0aGUgZXhlLCBz
byBhcyB0byBpbmplY3QgZGF0ZS9vdGhlciBpbmZvcyBpbnRvIGl0LgorKi5tYW5pZmVzdAorKi5z
cGVjCisKKyMgSW5zdGFsbGVyIGxvZ3MKK3BpcC1sb2cudHh0CitwaXAtZGVsZXRlLXRoaXMtZGly
ZWN0b3J5LnR4dAorCisjIFVuaXQgdGVzdCAvIGNvdmVyYWdlIHJlcG9ydHMKK2h0bWxjb3YvCisu
dG94LworLmNvdmVyYWdlCisuY292ZXJhZ2UuKgorLmNhY2hlCitub3NldGVzdHMueG1sCitjb3Zl
cmFnZS54bWwKKyosY292ZXIKKworIyBUcmFuc2xhdGlvbnMKKyoubW8KKyoucG90CisKKyMgRGph
bmdvIHN0dWZmOgorKi5sb2cKKworIyBTcGhpbnggZG9jdW1lbnRhdGlvbgorZG9jcy9fYnVpbGQv
CisKKyMgUHlCdWlsZGVyCit0YXJnZXQvCisqLnN3cAorCisjIGdlbmVyYXRlZCBieSBzZXR1cHRv
b2xzX3NjbQorc3JjL3BsdWdneS9fdmVyc2lvbi5weQorCisjIGdlbmVyYXRlZCBieSBwaXAKK3Bp
cC13aGVlbC1tZXRhZGF0YS8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly5wcmUtY29tbWl0LWNv
bmZpZy55YW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLnByZS1jb21taXQtY29uZmlnLnlhbWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YzA4ZDk4Mzc3NzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS8ucHJlLWNvbW1pdC1jb25maWcueWFtbApAQCAtMCwwICsxLDMy
IEBACityZXBvczoKKy0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vYW1idi9ibGFjaworICAg
IHJldjogMTkuM2IwCisgICAgaG9va3M6CisgICAgLSAgIGlkOiBibGFjaworICAgICAgICBhcmdz
OiBbLS1zYWZlLCAtLXF1aWV0XQorICAgICAgICBsYW5ndWFnZV92ZXJzaW9uOiBweXRob24zLjYK
Ky0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vYXNvdHRpbGUvYmxhY2tlbi1kb2NzCisgICAg
cmV2OiB2MC41LjAKKyAgICBob29rczoKKyAgICAtICAgaWQ6IGJsYWNrZW4tZG9jcworICAgICAg
ICBhZGRpdGlvbmFsX2RlcGVuZGVuY2llczogW2JsYWNrPT0xOS4zYjBdCisgICAgICAgIGxhbmd1
YWdlX3ZlcnNpb246IHB5dGhvbjMuNgorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUt
Y29tbWl0L3ByZS1jb21taXQtaG9va3MKKyAgICByZXY6IHYyLjEuMAorICAgIGhvb2tzOgorICAg
IC0gICBpZDogdHJhaWxpbmctd2hpdGVzcGFjZQorICAgIC0gICBpZDogZW5kLW9mLWZpbGUtZml4
ZXIKKyAgICAtICAgaWQ6IGZsYWtlOAorLSAgIHJlcG86IGxvY2FsCisgICAgaG9va3M6CisgICAg
LSAgIGlkOiByc3QKKyAgICAgICAgbmFtZTogcnN0CisgICAgICAgIGVudHJ5OiByc3QtbGludCAt
LWVuY29kaW5nIHV0Zi04CisgICAgICAgIGZpbGVzOiBeKENIQU5HRUxPRy5yc3R8SE9XVE9SRUxF
QVNFLnJzdHxSRUFETUUucnN0fGNoYW5nZWxvZy8uKikkCisgICAgICAgIGxhbmd1YWdlOiBweXRo
b24KKyAgICAgICAgYWRkaXRpb25hbF9kZXBlbmRlbmNpZXM6IFtweWdtZW50cywgcmVzdHJ1Y3R1
cmVkdGV4dF9saW50XQorICAgICAgICBsYW5ndWFnZV92ZXJzaW9uOiBweXRob24zLjYKKy0gICBy
ZXBvOiBodHRwczovL2dpdGh1Yi5jb20vcHJlLWNvbW1pdC9weWdyZXAtaG9va3MKKyAgICByZXY6
IHYxLjMuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogcnN0LWJhY2t0aWNrcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvLnRyYXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8udHJhdmlzLnltbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhiYTU5NjZlNWQ1YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly50cmF2aXMueW1sCkBAIC0wLDAgKzEsODEgQEAKK2Rp
c3Q6IHhlbmlhbAorbGFuZ3VhZ2U6IHB5dGhvbgorCitzdGFnZXM6CistIG5hbWU6IHRlc3QKKyAg
aWY6IHRhZyBJUyBOT1QgcHJlc2VudAorLSBuYW1lOiBkZXBsb3kKKyAgaWY6IHJlcG8gPSBweXRl
c3QtZGV2L3BsdWdneSBBTkQgdGFnIElTIHByZXNlbnQKKworam9iczoKKyAgaW5jbHVkZToKKyAg
ICAtIHB5dGhvbjogJzMuNicKKyAgICAgIGVudjogVE9YRU5WPWxpbnRpbmcKKyAgICAgIGNhY2hl
OgorICAgICAgICBkaXJlY3RvcmllczoKKyAgICAgICAgICAtICRIT01FLy5jYWNoZS9wcmUtY29t
bWl0CisgICAgLSBweXRob246ICczLjYnCisgICAgICBlbnY6IFRPWEVOVj1kb2NzCisgICAgLSBw
eXRob246ICcyLjcnCisgICAgICBlbnY6IFRPWEVOVj1weTI3LWNvdmVyYWdlCisgICAgLSBweXRo
b246ICczLjQnCisgICAgICBlbnY6IFRPWEVOVj1weTM0LWNvdmVyYWdlCisgICAgLSBweXRob246
ICczLjUnCisgICAgICBlbnY6IFRPWEVOVj1weTM1LWNvdmVyYWdlCisgICAgLSBweXRob246ICcz
LjYnCisgICAgICBlbnY6IFRPWEVOVj1weTM2LWNvdmVyYWdlCisgICAgLSBweXRob246ICdweXB5
Mi43LTYuMCcKKyAgICAgIGVudjogVE9YRU5WPXB5cHktY292ZXJhZ2UKKyAgICAtIHB5dGhvbjog
J3B5cHkzLjUtNi4wJworICAgICAgZW52OiBUT1hFTlY9cHlweTMtY292ZXJhZ2UKKyAgICAtIHB5
dGhvbjogJzMuNycKKyAgICAgIGVudjogVE9YRU5WPXB5MzctY292ZXJhZ2UKKyAgICAtIHB5dGhv
bjogJzMuOC1kZXYnCisgICAgICBlbnY6IFRPWEVOVj1weTM4LWNvdmVyYWdlCisgICAgLSBweXRo
b246ICczLjYnCisgICAgICBlbnY6IFRPWEVOVj1weTM2LXB5dGVzdG1hc3Rlci1jb3ZlcmFnZQor
ICAgIC0gcHl0aG9uOiAnMy42JworICAgICAgZW52OiBUT1hFTlY9cHkzNi1weXRlc3RmZWF0dXJl
cy1jb3ZlcmFnZQorICAgIC0gcHl0aG9uOiAnMy42JworICAgICAgZW52OiBUT1hFTlY9YmVuY2ht
YXJrCisgICAgLSBweXRob246ICczLjcnCisgICAgICBlbnY6IFRPWEVOVj1weTM3LXB5dGVzdG1h
c3Rlci1jb3ZlcmFnZQorICAgIC0gcHl0aG9uOiAnMy43JworICAgICAgZW52OiBUT1hFTlY9cHkz
Ny1weXRlc3RmZWF0dXJlcy1jb3ZlcmFnZQorCisgICAgLSBzdGFnZTogZGVwbG95CisgICAgICBw
eXRob246ICczLjYnCisgICAgICBlbnY6CisgICAgICBpbnN0YWxsOiBwaXAgaW5zdGFsbCAtVSBz
ZXR1cHRvb2xzIHNldHVwdG9vbHNfc2NtCisgICAgICBzY3JpcHQ6IHNraXAKKyAgICAgIGRlcGxv
eToKKyAgICAgICAgcHJvdmlkZXI6IHB5cGkKKyAgICAgICAgdXNlcjogbmljb2RkZW11cworICAg
ICAgICBkaXN0cmlidXRpb25zOiBzZGlzdCBiZGlzdF93aGVlbAorICAgICAgICBza2lwX3VwbG9h
ZF9kb2NzOiB0cnVlCisgICAgICAgIHBhc3N3b3JkOgorICAgICAgICAgIHNlY3VyZTogUER2UUNL
ZlhyRjFWL3Rkd0VPZmVERWpEczZ2SjlnS1dvNHlyTVVtQngxSkw1cGxIWmFxZkhMZnRsR01vSGVr
YVFUSGNmeVlZYnhpZ25GdzVJR3NuOTcvbkZLS1dEUE5CZlpBKzNSSkptZUpmejJOUXVuWWtTbm9x
dEJ0ZkV0V0h6RlBka0NtMHcvQ045QzhJcFJqaHZMbkZUVVF6aWw2aU15NndaRzI3NmdVPQorICAg
ICAgICBvbjoKKyAgICAgICAgICB0YWdzOiB0cnVlCisgICAgICAgICAgcmVwbzogcHl0ZXN0LWRl
di9wbHVnZ3kKKworaW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFsbCAtVSBwaXAKKyAgLSBwaXAgaW5z
dGFsbCAtVSAtLWZvcmNlLXJlaW5zdGFsbCBzZXR1cHRvb2xzIHRveAorCitzY3JpcHQ6CisgIC0g
dG94CisKK2FmdGVyX3NjcmlwdDoKKyAgLSB8CisgICAgaWYgW1sgIiR7VE9YRU5WJS1jb3ZlcmFn
ZX0iICE9ICIkVE9YRU5WIiBdXTsgdGhlbgorICAgICAgYmFzaCA8KGN1cmwgLXMgaHR0cHM6Ly9j
b2RlY292LmlvL2Jhc2gpIC1aIC1YIGdjb3YgLVggY292ZXJhZ2VweSAtWCBzZWFyY2ggLVggeGNv
ZGUgLVggZ2Nvdm91dCAtWCBmaXggLWYgY292ZXJhZ2UueG1sIC1uICRUT1hFTlYKKyAgICBmaQor
Citub3RpZmljYXRpb25zOgorICBpcmM6CisgICAgY2hhbm5lbHM6CisgICAgICAtICJjaGF0LmZy
ZWVub2RlLm5ldCNweXRlc3QiCisgICAgb25fc3VjY2VzczogY2hhbmdlCisgICAgb25fZmFpbHVy
ZTogY2hhbmdlCisgICAgc2tpcF9qb2luOiB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9D
SEFOR0VMT0cucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvQ0hBTkdFTE9HLnJzdAppbmRleCA5MWJmNTNmZGNj
YjUuLjA1MzZkZGEwM2E4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvQ0hBTkdFTE9HLnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS9DSEFOR0VMT0cucnN0CkBAIC0xLDUgKzEsMTgwIEBACi0wLjYuMAot
LS0tLS0KKz09PT09PT09PQorQ2hhbmdlbG9nCis9PT09PT09PT0KKworLi4gdG93bmNyaWVyIHJl
bGVhc2Ugbm90ZXMgc3RhcnQKKworcGx1Z2d5IDAuMTMuMSAoMjAxOS0xMS0yMSkKKz09PT09PT09
PT09PT09PT09PT09PT09PT09CisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKy0gYCMyMzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3BsdWdneS9wdWxsLzIzNj5gXzogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiwgZXNwZWNpYWxseSB3
aXRoIHJlZ2FyZCB0byByZWZlcmVuY2VzLgorCisKK3BsdWdneSAwLjEzLjAgKDIwMTktMDktMTAp
Cis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMjIyIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzIyMj5gXzogUmVwbGFjZSBgYGltcG9ydGxpYl9tZXRh
ZGF0YWBgIGJhY2twb3J0IHdpdGggYGBpbXBvcnRsaWIubWV0YWRhdGFgYCBmcm9tIHRoZQorICBz
dGFuZGFyZCBsaWJyYXJ5IG9uIFB5dGhvbiAzLjgrLgorCisKK3BsdWdneSAwLjEyLjAgKDIwMTkt
MDUtMjcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0tLS0K
KworLSBgIzIxNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8y
MTU+YF86IFN3aXRjaCBmcm9tIGBgcGtnX3Jlc291cmNlc2BgIHRvIGBgaW1wb3J0bGliLW1ldGFk
YXRhYGAgZm9yIGVudHJ5cG9pbnQgZGV0ZWN0aW9uIGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZSBh
bmQgaW1wb3J0IHRpbWUuICBUaGlzIHRpbWUgd2l0aCBgYC5lZ2dgYCBzdXBwb3J0LgorCisKK3Bs
dWdneSAwLjExLjAgKDIwMTktMDUtMDcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitC
dWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMjA1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9wbHVnZ3kvaXNzdWVzLzIwNT5gXzogUmV2ZXJ0IGNoYW5nZXMgbWFkZSBpbiAwLjEwLjAg
cmVsZWFzZSBicmVha2luZyBgYC5lZ2dgYCBpbnN0YWxscy4KKworCitwbHVnZ3kgMC4xMC4wICgy
MDE5LTA1LTA3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRmVhdHVyZXMKKy0tLS0t
LS0tCisKKy0gYCMxOTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1
ZXMvMTk5PmBfOiBTd2l0Y2ggZnJvbSBgYHBrZ19yZXNvdXJjZXNgYCB0byBgYGltcG9ydGxpYi1t
ZXRhZGF0YWBgIGZvciBlbnRyeXBvaW50IGRldGVjdGlvbiBmb3IgaW1wcm92ZWQgcGVyZm9ybWFu
Y2UgYW5kIGltcG9ydCB0aW1lLgorCisKK3BsdWdneSAwLjkuMCAoMjAxOS0wMi0yMSkKKz09PT09
PT09PT09PT09PT09PT09PT09PT0KKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCMxODkgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTg5PmBfOiBgYFBsdWdp
bk1hbmFnZXIubG9hZF9zZXR1cHRvb2xzX2VudHJ5cG9pbnRzYGAgbm93IGFjY2VwdHMgYSBgYG5h
bWVgYCBwYXJhbWV0ZXIgdGhhdCB3aGVuIGdpdmVuIHdpbGwKKyAgbG9hZCBvbmx5IGVudHJ5IHBv
aW50cyB3aXRoIHRoYXQgbmFtZS4KKworICBgYFBsdWdpbk1hbmFnZXIubG9hZF9zZXR1cHRvb2xz
X2VudHJ5cG9pbnRzYGAgYWxzbyBub3cgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHBsdWdpbnMgbG9h
ZGVkIGJ5IHRoZQorICBjYWxsLCBhcyBvcHBvc2VkIHRvIHRoZSBudW1iZXIgb2YgYWxsIHBsdWdp
bnMgbG9hZGVkIGJ5IGFsbCBjYWxscyB0byB0aGlzIG1ldGhvZC4KKworCisKK0J1ZyBGaXhlcwor
LS0tLS0tLS0tCisKKy0gYCMxODcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdn
eS9pc3N1ZXMvMTg3PmBfOiBGaXggaW50ZXJuYWwgYGB2YXJuYW1lc2BgIGZ1bmN0aW9uIGZvciBQ
eVB5My4KKworCitwbHVnZ3kgMC44LjEgKDIwMTgtMTEtMDkpCis9PT09PT09PT09PT09PT09PT09
PT09PT09CisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy0gYCMxNjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1
ZXMvMTY2PmBfOiBBZGQgYGBzdGFja2xldmVsPTJgYCB0byBpbXBscHJlZml4IHdhcm5pbmcgc28g
dGhhdCB0aGUgcmVwb3J0ZWQgbG9jYXRpb24gb2Ygd2FybmluZyBpcyB0aGUgY2FsbGVyIG9mIFBs
dWdpbk1hbmFnZXIuCisKKworcGx1Z2d5IDAuOC4wICgyMDE4LTEwLTE1KQorPT09PT09PT09PT09
PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzE3NyA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNzc+YF86IEFkZCBgYGdldF9ob29r
aW1wbHMoKWBgIG1ldGhvZCB0byBob29rIGNhbGxlcnMuCisKKworCitUcml2aWFsL0ludGVybmFs
IENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMTY1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzE2NT5gXzogQWRkIGNoYW5nZWxvZyBp
biBsb25nIHBhY2thZ2UgZGVzY3JpcHRpb24gYW5kIGRvY3VtZW50YXRpb24uCisKKworLSBgIzE3
MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNzI+YF86IEFk
ZCBhIHRlc3QgZXhlbXBsaWZ5aW5nIHRoZSBvcHQtaW4gbmF0dXJlIG9mIHNwZWMgZGVmaW5lZCBh
cmdzLgorCisKKy0gYCM1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lz
c3Vlcy81Nz5gXzogRW5jYXBzdWxhdGUgaG9vayBzcGVjaWZpY2F0aW9ucyBpbiBhIHR5cGUgZm9y
IGVhc2llciBpbnRyb3NwZWN0aW9uLgorCisKK3BsdWdneSAwLjcuMSAoMjAxOC0wNy0yOCkKKz09
PT09PT09PT09PT09PT09PT09PT09PT0KKworRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMTE2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzExNj5gXzogRGVwcmVjYXRlIHRoZSBgYGltcGxwcmVmaXhg
YCBrd2FyZyB0byBgYFBsdWdpbk1hbmFnZXJgYCBhbmQgaW5zdGVhZAorICBleHBlY3QgdXNlcnMg
dG8gc3RhcnQgdXNpbmcgZXhwbGljaXQgYGBIb29raW1wbE1hcmtlcmBgIGV2ZXJ5d2hlcmUuCisK
KworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzEyMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xMjI+YF86IEFkZCBgYC5wbHVnaW5gYCBtZW1iZXIgdG8g
YGBQbHVnaW5WYWxpZGF0aW9uRXJyb3JgYCB0byBhY2Nlc3MgZmFpbGluZyBwbHVnaW4gZHVyaW5n
IHBvc3QtbW9ydGVtLgorCisKKy0gYCMxMzggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3BsdWdneS9pc3N1ZXMvMTM4PmBfOiBBZGQgcGVyIGltcGxlbWVudGF0aW9uIHdhcm5pbmdzIHN1
cHBvcnQgZm9yIGhvb2tzcGVjcyBhbGxvd2luZyBmb3IgYm90aAorICBkZXByZWNhdGlvbiBhbmQg
ZnV0dXJlIHdhcm5pbmdzIG9mIGxlZ2FjeSBhbmQgKGZ1dHVyZSkgZXhwZXJpbWVudGFsIGhvb2tz
CisgIHJlc3BlY3RpdmVseS4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMxMTAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTEwPmBfOiBGaXgg
YSBidWcgd2hlcmUgYGBfSG9va0NhbGxlci5jYWxsX2hpc3RvcmljKClgYCB3b3VsZCBjYWxsIHRo
ZSBgYHByb2NgYAorICBhcmcgZXZlbiB3aGVuIHRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgIHJlc3Vs
dGluZyBpbiBhIGBgVHlwZUVycm9yYGAuCisKKy0gYCMxNjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTYwPmBfOiBGaXggcHJvYmxlbSB3aGVuIGhhbmRsaW5n
IGBgVmVyc2lvbkNvbmZsaWN0YGAgZXJyb3JzIHdoZW4gbG9hZGluZyBzZXR1cHRvb2xzIHBsdWdp
bnMuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKy0gYCMxMjMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMv
MTIzPmBfOiBEb2N1bWVudCBob3cgZXhjZXB0aW9ucyBhcmUgaGFuZGxlZCBhbmQgaG93IHRoZSBo
b29rIGNhbGwgbG9vcAorICB0ZXJtaW5hdGVzIGltbWVkaWF0ZWx5IG9uIHRoZSBmaXJzdCBlcnJv
ciB3aGljaCBpcyB0aGVuIGRlbGl2ZXJlZAorICB0byBhbnkgc3Vycm91bmRpbmcgd3JhcHBlcnMu
CisKKworLSBgIzEzNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vl
cy8xMzY+YF86IERvY3MgcmV3b3JrIGluY2x1ZGluZyBhIG11Y2ggYmV0dGVyIGludHJvZHVjdGlv
biBhbmQgY29tcHJlaGVuc2l2ZSBleGFtcGxlCisgIHNldCBmb3IgbmV3IHVzZXJzLiBBIGJpZyB0
aGFua3MgZ29lcyBvdXQgdG8gQG9iZXN0d2FsdGVyIGZvciB0aGUgZ3JlYXQgd29yayEKKworCisK
K1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0g
YCMxMTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTE3PmBf
OiBCcmVhayB1cCB0aGUgbWFpbiBtb25vbGl0aGljIHBhY2thZ2UgbW9kdWxlcyBpbnRvIHNlcGFy
YXRlIG1vZHVsZXMgYnkgY29uY2VybgorCisKKy0gYCMxMzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTMxPmBfOiBBdXRvbWF0ZSBgYHNldHVwdG9vbHNgYCB3
aGVlbHMgYnVpbGRpbmcgYW5kIFB5UGkgdXBsb2FkIHVzaW5nIFRyYXZpc0NJLgorCisKKy0gYCMx
NTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTUzPmBfOiBS
ZW9yZ2FuaXplIHRlc3RzIG1vcmUgYXBwcm9wcmlhdGVseSBieSBtb2R1bGVzIHJlbGF0aW5nIHRv
IGVhY2gKKyAgaW50ZXJuYWwgY29tcG9uZW50L2ZlYXR1cmUuIFRoaXMgaXMgaW4gYW4gZWZmb3J0
IHRvIGF2b2lkIChmdXR1cmUpCisgIGR1cGxpY2F0aW9uIGFuZCBiZXR0ZXIgc2VwYXJhdGlvbiBv
ZiBjb25jZXJucyBpbiB0aGUgdGVzdCBzZXQuCisKKworLSBgIzE1NiA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNTY+YF86IEFkZCBgYEhvb2tJbXBsLl9fcmVw
cl9fKClgYCBmb3IgYmV0dGVyIGRlYnVnZ2luZy4KKworCistIGAjNjYgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvNjY+YF86IFN0YXJ0IHVzaW5nIGBgdG93bmNy
aWVyYGAgYW5kIGEgY3VzdG9tIGBgdG94YGAgZW52aXJvbm1lbnQgdG8gcHJlcGFyZSByZWxlYXNl
cyEKKworCitwbHVnZ3kgMC43LjAgKFVucmVsZWFzZWQpCis9PT09PT09PT09PT09PT09PT09PT09
PT09CisKKyogYCMxNjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1
ZXMvMTYwPmBfOiBXZSBkaXNjb3ZlcmVkIGEgZGVwbG95bWVudCBpc3N1ZSBzbyB0aGlzIHZlcnNp
b24gd2FzIG5ldmVyIHJlbGVhc2VkIHRvIFB5UEksIG9ubHkgdGhlIHRhZyBleGlzdHMuCisKK3Bs
dWdneSAwLjYuMCAoMjAxNy0xMS0yNCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKwogLSBB
ZGQgQ0kgdGVzdGluZyBmb3IgdGhlIGZlYXR1cmVzLCByZWxlYXNlLCBhbmQgbWFzdGVyCiAgIGJy
YW5jaGVzIG9mIGBgcHl0ZXN0YGAgKFBSIGAjNzlgXykuCiAtIERvY3VtZW50IHB1YmxpYyBBUEkg
Zm9yIGBgX1Jlc3VsdGBgIG9iamVjdHMgcGFzc2VkIHRvIHdyYXBwZXJzCkBAIC0yNyw4ICsyMDIs
OSBAQAogLi4gXyMxMDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9wdWxs
LzEwMwogCiAKLTAuNS4yCi0tLS0tLQorcGx1Z2d5IDAuNS4yICgyMDE3LTA5LTA2KQorPT09PT09
PT09PT09PT09PT09PT09PT09PQorCiAtIGZpeCBidWcgd2hlcmUgYGBmaXJzdHJlc3VsdGBgIHdy
YXBwZXJzIHdlcmUgYmVpbmcgc2VudCBhbiBpbmNvcnJlY3RseSBjb25maWd1cmVkCiAgIGBgX1Jl
c3VsdGBgIChhIGxpc3Qgd2FzIHNldCBpbnN0ZWFkIG9mIGEgc2luZ2xlIHZhbHVlKS4gQWRkIHRl
c3RzIHRvIGNoZWNrIGZvcgogICB0aGlzIGFzIHdlbGwgYXMgYGBfUmVzdWx0LmZvcmNlX3Jlc3Vs
dCgpYGAgYmVoYXZpb3VyLiBUaGFua3MgdG8gYEB0Z29vZGxldGBfCkBAIC00NSwxOCArMjIxLDIw
IEBACiAuLiBfIzgwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvcHVsbC84
MAogCiAKLTAuNS4xCi0tLS0tLQorcGx1Z2d5IDAuNS4xICgyMDE3LTA4LTI5KQorPT09PT09PT09
PT09PT09PT09PT09PT09PQorCiAtIGZpeCBhIGJ1ZyBhbmQgYWRkIHRlc3RzIGZvciBjYXNlIHdo
ZXJlIGBgZmlyc3RyZXN1bHRgYCBob29rcyByZXR1cm4KICAgYGBOb25lYGAgcmVzdWx0cy4gVGhh
bmtzIHRvIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBhbmQgYEB0Z29vZGxldGBfCiAgIGZvciB0aGUg
aXNzdWUgKGAjNjhgXykgYW5kIFBSIChgIzY5YF8pIHJlc3BlY3RpdmVseS4KIAogLi4gXyM2OTog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L3B1bGwvNjkKLS4uIF8jNjg6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1c2VzLzY4CisuLiBfIzY4OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzY4CisKIAorcGx1Z2d5
IDAuNS4wICgyMDE3LTA4LTI4KQorPT09PT09PT09PT09PT09PT09PT09PT09PQogCi0wLjUuMAot
LS0tLS0KIC0gZml4IGJ1ZyB3aGVyZSBjYWxsYmFja3MgZm9yIGhpc3RvcmljIGhvb2tzIHdvdWxk
IG5vdCBiZSBjYWxsZWQgZm9yCiAgIGFscmVhZHkgcmVnaXN0ZXJlZCBwbHVnaW5zLiAgVGhhbmtz
IGBAdm9kaWtgXyBmb3IgdGhlIFBSCiAgIGFuZCBgQGhwazQyYF8gZm9yIGZ1cnRoZXIgZml4ZXMu
CkBAIC0xMTQsOCArMjkyLDkgQEAKIC4uIF8jMTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3BsdWdneS9pc3N1ZXMvMTQKIAogCi0wLjQuMAotLS0tLS0KK3BsdWdneSAwLjQuMCAoMjAx
Ni0wOS0yNSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKwogLSBhZGQgYGBoYXNfcGx1Z2lu
KG5hbWUpYGAgbWV0aG9kIHRvIHBsdWdpbm1hbmFnZXIuICB0aGFua3MgYEBuaWNvZGRlbXVzYF8u
CiAKIC0gZml4IGAjMTFgXzogbWFrZSBwbHVnaW4gcGFyc2luZyBtb3JlIHJlc2lsaWVudCBhZ2Fp
bnN0IGV4Y2VwdGlvbnMKQEAgLTEzMSwxOSArMzEwLDIxIEBACiAuLiBfIzQ6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvNAogCiAKLTAuMy4xCi0tLS0tLQorcGx1
Z2d5IDAuMy4xICgyMDE1LTA5LTE3KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCiAtIGF2
b2lkIHVzaW5nIGRlcHJlY2F0ZWQtaW4tcHl0aG9uMy41IGdldGFyZ3NwZWMgbWV0aG9kLiBUaGFu
a3MKICAgYEBtZGJvb21gXy4KIAogCi0wLjMuMAotLS0tLS0KK3BsdWdneSAwLjMuMCAoMjAxNS0w
NS0wNykKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKwogaW5pdGlhbCByZWxlYXNlCiAKIC4u
IGNvbnRyaWJ1dG9ycwogLi4gX0BocGs0MjogaHR0cHM6Ly9naXRodWIuY29tL2hwazQyCi0uLiBf
QHRnb29kbGV0OiBodHRwczovL2dpdGh1Yi5jb20vdGdvb2RsZXQKKy4uIF9AdGdvb2RsZXQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nb29kYm95CiAuLiBfQE1pY2hhbFRIRURVREU6IGh0dHBzOi8vZ2l0
aHViLmNvbS9NaWNoYWxUSEVEVURFCiAuLiBfQHZvZGlrOiBodHRwczovL2dpdGh1Yi5jb20vdm9k
aWsKIC4uIF9AUm9ubnlQZmFubnNjaG1pZHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9Sb25ueVBmYW5u
c2NobWlkdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvSE9XVE9SRUxFQVNFLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L0hPV1RPUkVMRUFTRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5hMGNjNGZkZWVjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9IT1dU
T1JFTEVBU0UucnN0CkBAIC0wLDAgKzEsMjMgQEAKK1JlbGVhc2UgUHJvY2VkdXJlCistLS0tLS0t
LS0tLS0tLS0tLQorCisjLiBGcm9tIGEgY2xlYW4gd29yayB0cmVlLCBleGVjdXRlOjoKKworICAg
IHRveCAtZSByZWxlYXNlIC0tIFZFUlNJT04KKworICAgVGhpcyB3aWxsIGNyZWF0ZSB0aGUgYnJh
bmNoIHJlYWR5IHRvIGJlIHB1c2hlZC4KKworIy4gT3BlbiBhIFBSIHRhcmdldGluZyBgYG1hc3Rl
cmBgLgorCisjLiBBbGwgdGVzdHMgbXVzdCBwYXNzIGFuZCB0aGUgUFIgbXVzdCBiZSBhcHByb3Zl
ZCBieSBhdCBsZWFzdCBhbm90aGVyIG1haW50YWluZXIuCisKKyMuIFB1Ymxpc2ggdG8gUHlQSSBi
eSBwdXNoaW5nIGEgdGFnOjoKKworICAgICBnaXQgdGFnIFguWS5aIHJlbGVhc2UtWC5ZLloKKyAg
ICAgZ2l0IHB1c2ggZ2l0QGdpdGh1Yi5jb206cHl0ZXN0LWRldi9wbHVnZ3kuZ2l0IFguWS5aCisK
KyAgIFRoZSB0YWcgd2lsbCB0cmlnZ2VyIGEgbmV3IGJ1aWxkLCB3aGljaCB3aWxsIGRlcGxveSB0
byBQeVBJLgorCisjLiBNYWtlIHN1cmUgaXQgaXMgYGF2YWlsYWJsZSBvbiBQeVBJIDxodHRwczov
L3B5cGkub3JnL3Byb2plY3QvcGx1Z2d5PmBfLgorCisjLiBNZXJnZSB0aGUgUFIgaW50byBgYG1h
c3RlcmBgLCBlaXRoZXIgbWFudWFsbHkgb3IgdXNpbmcgR2l0SHViJ3Mgd2ViIGludGVyZmFjZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9MSUNFTlNFCmlu
ZGV4IDEyMTAxN2QwODY2YS4uODVmNGRkNjNkMmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9M
SUNFTlNFCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L0xJQ0VOU0UKQEAgLTEsNiArMSw2IEBACiBUaGUgTUlU
IExpY2Vuc2UgKE1JVCkKIAotQ29weXJpZ2h0IChjKSAyMDE1IGhvbGdlciBrcmVrZWwgKHJhdGhl
ciB1c2VzIGJpdGJ1Y2tldC9ocGs0MikgCitDb3B5cmlnaHQgKGMpIDIwMTUgaG9sZ2VyIGtyZWtl
bCAocmF0aGVyIHVzZXMgYml0YnVja2V0L2hwazQyKQogCiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbApAQCAtMTksNCArMTksMyBAQCBBVVRIT1JTIE9SIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORyBGUk9NLAogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKIFNPRlRXQVJFLgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS9SRUFETUUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvUkVBRE1FLnJzdApp
bmRleCAzNjM2YjZlYzY0MjUuLmI3OWVmMDI0NjAxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
UkVBRE1FLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9SRUFETUUucnN0CkBAIC0xLDE0ICsxLDE1IEBA
Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBw
bHVnZ3kgLSBBIG1pbmltYWxpc3QgcHJvZHVjdGlvbiByZWFkeSBwbHVnaW4gc3lzdGVtCiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci18cHlwaXwg
fGFuYWNvbmRhfCB8dmVyc2lvbnN8IHx0cmF2aXN8IHxhcHB2ZXlvcnwKIAorfHB5cGl8IHxjb25k
YS1mb3JnZXwgfHZlcnNpb25zfCB8dHJhdmlzfCB8YXBwdmV5b3J8IHxnaXR0ZXJ8IHxibGFja3wg
fGNvZGVjb3Z8CiAKIFRoaXMgaXMgdGhlIGNvcmUgZnJhbWV3b3JrIHVzZWQgYnkgdGhlIGBweXRl
c3RgXywgYHRveGBfLCBhbmQgYGRldnBpYF8gcHJvamVjdHMuCiAKIFBsZWFzZSBgcmVhZCB0aGUg
ZG9jc2BfIHRvIGxlYXJuIG1vcmUhCiAKIEEgZGVmaW5pdGl2ZSBleGFtcGxlCi0qKioqKioqKioq
KioqKioqKioqKgorPT09PT09PT09PT09PT09PT09PT0KIC4uIGNvZGUtYmxvY2s6OiBweXRob24K
IAogICAgIGltcG9ydCBwbHVnZ3kKQEAgLTIwLDYgKzIxLDcgQEAgQSBkZWZpbml0aXZlIGV4YW1w
bGUKICAgICBjbGFzcyBNeVNwZWMob2JqZWN0KToKICAgICAgICAgIiIiQSBob29rIHNwZWNpZmlj
YXRpb24gbmFtZXNwYWNlLgogICAgICAgICAiIiIKKwogICAgICAgICBAaG9va3NwZWMKICAgICAg
ICAgZGVmIG15aG9vayhzZWxmLCBhcmcxLCBhcmcyKToKICAgICAgICAgICAgICIiIk15IHNwZWNp
YWwgbGl0dGxlIGhvb2sgdGhhdCB5b3UgY2FuIGN1c3RvbWl6ZS4KQEAgLTI5LDYgKzMxLDcgQEAg
QSBkZWZpbml0aXZlIGV4YW1wbGUKICAgICBjbGFzcyBQbHVnaW5fMShvYmplY3QpOgogICAgICAg
ICAiIiJBIGhvb2sgaW1wbGVtZW50YXRpb24gbmFtZXNwYWNlLgogICAgICAgICAiIiIKKwogICAg
ICAgICBAaG9va2ltcGwKICAgICAgICAgZGVmIG15aG9vayhzZWxmLCBhcmcxLCBhcmcyKToKICAg
ICAgICAgICAgIHByaW50KCJpbnNpZGUgUGx1Z2luXzEubXlob29rKCkiKQpAQCAtMzgsNiArNDEs
NyBAQCBBIGRlZmluaXRpdmUgZXhhbXBsZQogICAgIGNsYXNzIFBsdWdpbl8yKG9iamVjdCk6CiAg
ICAgICAgICIiIkEgMm5kIGhvb2sgaW1wbGVtZW50YXRpb24gbmFtZXNwYWNlLgogICAgICAgICAi
IiIKKwogICAgICAgICBAaG9va2ltcGwKICAgICAgICAgZGVmIG15aG9vayhzZWxmLCBhcmcxLCBh
cmcyKToKICAgICAgICAgICAgIHByaW50KCJpbnNpZGUgUGx1Z2luXzIubXlob29rKCkiKQpAQCAt
NTIsMjIgKzU2LDQ2IEBAIEEgZGVmaW5pdGl2ZSBleGFtcGxlCiAgICAgcG0ucmVnaXN0ZXIoUGx1
Z2luXzEoKSkKICAgICBwbS5yZWdpc3RlcihQbHVnaW5fMigpKQogCi0gICAgIyBjYWxsIG91ciBg
bXlob29rYCBob29rCisgICAgIyBjYWxsIG91ciBgYG15aG9va2BgIGhvb2sKICAgICByZXN1bHRz
ID0gcG0uaG9vay5teWhvb2soYXJnMT0xLCBhcmcyPTIpCiAgICAgcHJpbnQocmVzdWx0cykKIAog
CitSdW5uaW5nIHRoaXMgZGlyZWN0bHkgZ2V0cyB1czo6CisKKyAgICAkIHB5dGhvbiBkb2NzL2V4
YW1wbGVzL3RveS1leGFtcGxlLnB5CisgICAgaW5zaWRlIFBsdWdpbl8yLm15aG9vaygpCisgICAg
aW5zaWRlIFBsdWdpbl8xLm15aG9vaygpCisgICAgWy0xLCAzXQorCisKIC4uIGJhZGdlcworCiAu
LiB8cHlwaXwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9wbHVnZ3kuc3Zn
Ci0gICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wbHVnZ3kKKyAgICA6
dGFyZ2V0OiBodHRwczovL3B5cGkub3JnL3B5cGkvcGx1Z2d5CisKIC4uIHx2ZXJzaW9uc3wgaW1h
Z2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9wbHVnZ3kuc3ZnCi0g
ICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wbHVnZ3kKKyAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkub3JnL3B5cGkvcGx1Z2d5CisKIC4uIHx0cmF2aXN8IGltYWdlOjog
aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvcHl0ZXN0LWRldi9wbHVnZ3kvbWFzdGVyLnN2
ZwogICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRlc3QtZGV2L3BsdWdneQor
CiAuLiB8YXBwdmV5b3J8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9hcHB2ZXlvci9j
aS9weXRlc3Rib3QvcGx1Z2d5L21hc3Rlci5zdmcKICAgICA6dGFyZ2V0OiBodHRwczovL2NpLmFw
cHZleW9yLmNvbS9wcm9qZWN0L3B5dGVzdGJvdC9wbHVnZ3kKLS4uIHxhbmFjb25kYXwgaW1hZ2U6
OiBodHRwczovL2FuYWNvbmRhLm9yZy9jb25kYS1mb3JnZS9wbHVnZ3kvYmFkZ2VzL3ZlcnNpb24u
c3ZnCi0gICAgOnRhcmdldDogaHR0cHM6Ly9hbmFjb25kYS5vcmcvY29uZGEtZm9yZ2UvcGx1Z2d5
CisKKy4uIHxjb25kYS1mb3JnZXwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvbmRh
L3ZuL2NvbmRhLWZvcmdlL3BsdWdneS5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2FuYWNvbmRh
Lm9yZy9jb25kYS1mb3JnZS9weXRlc3QKKworLi4gfGdpdHRlcnwgaW1hZ2U6OiBodHRwczovL2Jh
ZGdlcy5naXR0ZXIuaW0vcHl0ZXN0LWRldi9wbHVnZ3kuc3ZnCisgICAgOmFsdDogSm9pbiB0aGUg
Y2hhdCBhdCBodHRwczovL2dpdHRlci5pbS9weXRlc3QtZGV2L3BsdWdneQorICAgIDp0YXJnZXQ6
IGh0dHBzOi8vZ2l0dGVyLmltL3B5dGVzdC1kZXYvcGx1Z2d5P3V0bV9zb3VyY2U9YmFkZ2UmdXRt
X21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UKKwor
Li4gfGJsYWNrfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0
eWxlLWJsYWNrLTAwMDAwMC5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW1i
di9ibGFjaworCisuLiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvcHl0
ZXN0LWRldi9wbHVnZ3kvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcKKyAgICA6dGFyZ2V0
OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvcHl0ZXN0LWRldi9wbHVnZ3kKKyAgICA6YWx0OiBDb2Rl
IGNvdmVyYWdlIFN0YXR1cwogCiAuLiBsaW5rcwogLi4gX3B5dGVzdDoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L2FwcHZleW9yLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2FwcHZleW9yLnltbAppbmRleCBj
MzkwM2Y4YmZjYzYuLjFmYzEyZmZmMzk3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvYXBwdmV5
b3IueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2FwcHZleW9yLnltbApAQCAtMSwxNSArMSwxNCBAQAog
ZW52aXJvbm1lbnQ6CiAgIG1hdHJpeDoKICAgIyBub3RlOiBwbGVhc2UgdXNlICJ0b3ggLS1saXN0
ZW52cyIgdG8gcG9wdWxhdGUgdGhlIGJ1aWxkIG1hdHJpeCBiZWxvdwotICAtIFRPWEVOVjogImNo
ZWNrIgorICAtIFRPWEVOVjogImxpbnRpbmciCiAgIC0gVE9YRU5WOiAiZG9jcyIKLSAgLSBUT1hF
TlY6ICJweTI3LXB5dGVzdHJlbGVhc2UiCi0gIC0gVE9YRU5WOiAicHkzNC1weXRlc3RyZWxlYXNl
IgotICAtIFRPWEVOVjogInB5MzUtcHl0ZXN0cmVsZWFzZSIKLSAgLSBUT1hFTlY6ICJweTM2LXB5
dGVzdHJlbGVhc2UiCi0gIC0gVE9YRU5WOiAicHlweS1weXRlc3RyZWxlYXNlIgotICAtIFRPWEVO
VjogInB5MjctcHl0ZXN0bWFzdGVyIgotICAtIFRPWEVOVjogInB5MjctcHl0ZXN0ZmVhdHVyZXMi
CisgIC0gVE9YRU5WOiAicHkyNyIKKyAgLSBUT1hFTlY6ICJweTM0IgorICAtIFRPWEVOVjogInB5
MzUiCisgIC0gVE9YRU5WOiAicHkzNiIKKyAgLSBUT1hFTlY6ICJweTM3IgorICAtIFRPWEVOVjog
InB5cHkiCiAgIC0gVE9YRU5WOiAicHkzNi1weXRlc3RtYXN0ZXIiCiAgIC0gVE9YRU5WOiAicHkz
Ni1weXRlc3RmZWF0dXJlcyIKIApAQCAtMjYsOSArMjUsMTQgQEAgaW5zdGFsbDoKICAgLSBlY2hv
IFB5UHkgaW5zdGFsbGVkCiAgIC0gcHlweSAtLXZlcnNpb24KIAotICAtIEM6XFB5dGhvbjM1XHB5
dGhvbiAtbSBwaXAgaW5zdGFsbCB0b3gKKyAgLSBDOlxQeXRob24zNVxweXRob24gLW0gcGlwIGlu
c3RhbGwgLVUgcGlwCisgIC0gQzpcUHl0aG9uMzVccHl0aG9uIC1tIHBpcCBpbnN0YWxsIC1VIC0t
Zm9yY2UtcmVpbnN0YWxsIHNldHVwdG9vbHMgdG94CiAKIGJ1aWxkOiBmYWxzZSAgIyBOb3QgYSBD
IyBwcm9qZWN0LCBidWlsZCBzdHVmZiBhdCB0aGUgdGVzdCBzdGVwIGluc3RlYWQuCiAKIHRlc3Rf
c2NyaXB0OgotICAtIEM6XFB5dGhvbjM1XHB5dGhvbiAtbSB0b3gKKyAgLSBDOlxQeXRob24zNVxT
Y3JpcHRzXHRveAorCisjIFdlIGRvbid0IGRlcGxveSBhbnl0aGluZyBvbiB0YWdzIHdpdGggQXBw
VmV5b3IsIHdlIHVzZSBUcmF2aXMgaW5zdGVhZCwgc28gd2UKKyMgbWlnaHQgYXMgd2VsbCBzYXZl
IHJlc291cmNlcworc2tpcF90YWdzOiB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9jaGFu
Z2Vsb2cvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2NoYW5nZWxvZy9SRUFETUUucnN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDdlMjFmYjMzZmIzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvY2hhbmdlbG9nL1JFQURNRS5yc3QKQEAgLTAsMCArMSwz
MiBAQAorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgIm5ld3NmcmFnbWVudHMiIHdoaWNoIGFyZSBz
aG9ydCBmaWxlcyB0aGF0IGNvbnRhaW4gYSBzbWFsbCAqKlJlU1QqKi1mb3JtYXR0ZWQKK3RleHQg
dGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBuZXh0IGBgQ0hBTkdFTE9HYGAuCisKK1RoZSBgYENI
QU5HRUxPR2BgIHdpbGwgYmUgcmVhZCBieSB1c2Vycywgc28gdGhpcyBkZXNjcmlwdGlvbiBzaG91
bGQgYmUgYWltZWQgdG8gcHl0ZXN0IHVzZXJzCitpbnN0ZWFkIG9mIGRlc2NyaWJpbmcgaW50ZXJu
YWwgY2hhbmdlcyB3aGljaCBhcmUgb25seSByZWxldmFudCB0byB0aGUgZGV2ZWxvcGVycy4KKwor
TWFrZSBzdXJlIHRvIHVzZSBmdWxsIHNlbnRlbmNlcyB3aXRoIGNvcnJlY3QgY2FzZSBhbmQgcHVu
Y3R1YXRpb24sIGZvciBleGFtcGxlOjoKKworICAgIEZpeCBpc3N1ZSB3aXRoIG5vbi1hc2NpaSBt
ZXNzYWdlcyBmcm9tIHRoZSBgYHdhcm5pbmdzYGAgbW9kdWxlLgorCitFYWNoIGZpbGUgc2hvdWxk
IGJlIG5hbWVkIGxpa2UgYGA8SVNTVUU+LjxUWVBFPi5yc3RgYCwgd2hlcmUKK2BgPElTU1VFPmBg
IGlzIGFuIGlzc3VlIG51bWJlciwgYW5kIGBgPFRZUEU+YGAgaXMgb25lIG9mOgorCisqIGBgZmVh
dHVyZWBgOiBuZXcgdXNlciBmYWNpbmcgZmVhdHVyZXMsIGxpa2UgbmV3IGNvbW1hbmQtbGluZSBv
cHRpb25zIGFuZCBuZXcgYmVoYXZpb3IuCisqIGBgYnVnZml4YGA6IGZpeGVzIGEgcmVwb3J0ZWQg
YnVnLgorKiBgYGRvY2BgOiBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50LCBsaWtlIHJld29yZGlu
ZyBhbiBlbnRpcmUgc2Vzc2lvbiBvciBhZGRpbmcgbWlzc2luZyBkb2NzLgorKiBgYHJlbW92YWxg
YDogZmVhdHVyZSBkZXByZWNhdGlvbiBvciByZW1vdmFsLgorKiBgYHZlbmRvcmBgOiBjaGFuZ2Vz
IGluIHBhY2thZ2VzIHZlbmRvcmVkIGluIHB5dGVzdC4KKyogYGB0cml2aWFsYGA6IGZpeGluZyBh
IHNtYWxsIHR5cG8gb3IgaW50ZXJuYWwgY2hhbmdlIHRoYXQgbWlnaHQgYmUgbm90ZXdvcnRoeS4K
KworU28gZm9yIGV4YW1wbGU6IGBgMTIzLmZlYXR1cmUucnN0YGAsIGBgNDU2LmJ1Z2ZpeC5yc3Rg
YC4KKworSWYgeW91ciBQUiBmaXhlcyBhbiBpc3N1ZSwgdXNlIHRoYXQgbnVtYmVyIGhlcmUuIElm
IHRoZXJlIGlzIG5vIGlzc3VlLAordGhlbiBhZnRlciB5b3Ugc3VibWl0IHRoZSBQUiBhbmQgZ2V0
IHRoZSBQUiBudW1iZXIgeW91IGNhbiBhZGQgYQorY2hhbmdlbG9nIHVzaW5nIHRoYXQgaW5zdGVh
ZC4KKworSWYgeW91IGFyZSBub3Qgc3VyZSB3aGF0IGlzc3VlIHR5cGUgdG8gdXNlLCBkb24ndCBo
ZXNpdGF0ZSB0byBhc2sgaW4geW91ciBQUi4KKworYGB0b3duY3JpZXJgYCBwcmVzZXJ2ZXMgbXVs
dGlwbGUgcGFyYWdyYXBocyBhbmQgZm9ybWF0dGluZyAoY29kZSBibG9ja3MsIGxpc3RzLCBhbmQg
c28gb24pLCBidXQgZm9yIGVudHJpZXMKK290aGVyIHRoYW4gYGBmZWF0dXJlc2BgIGl0IGlzIHVz
dWFsbHkgYmV0dGVyIHRvIHN0aWNrIHRvIGEgc2luZ2xlIHBhcmFncmFwaCB0byBrZWVwIGl0IGNv
bmNpc2UuIFlvdSBjYW4gaW5zdGFsbAorYGB0b3duY3JpZXJgYCBhbmQgdGhlbiBydW4gYGB0b3du
Y3JpZXIgLS1kcmFmdGBgCitpZiB5b3Ugd2FudCB0byBnZXQgYSBwcmV2aWV3IG9mIGhvdyB5b3Vy
IGNoYW5nZSB3aWxsIGxvb2sgaW4gdGhlIGZpbmFsIHJlbGVhc2Ugbm90ZXMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9jaGFuZ2Vsb2cvX3RlbXBsYXRlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2NoYW5n
ZWxvZy9fdGVtcGxhdGUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uOTc0ZTVjMWIyZGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvY2hhbmdlbG9n
L190ZW1wbGF0ZS5yc3QKQEAgLTAsMCArMSw0MCBAQAoreyUgZm9yIHNlY3Rpb24gaW4gc2VjdGlv
bnMgJX0KK3slIHNldCB1bmRlcmxpbmUgPSAiLSIgJX0KK3slIGlmIHNlY3Rpb24gJX0KK3t7c2Vj
dGlvbn19Cit7eyB1bmRlcmxpbmUgKiBzZWN0aW9ufGxlbmd0aCB9fXslIHNldCB1bmRlcmxpbmUg
PSAifiIgJX0KKworeyUgZW5kaWYgJX0KK3slIGlmIHNlY3Rpb25zW3NlY3Rpb25dICV9Cit7JSBm
b3IgY2F0ZWdvcnksIHZhbCBpbiBkZWZpbml0aW9ucy5pdGVtcygpIGlmIGNhdGVnb3J5IGluIHNl
Y3Rpb25zW3NlY3Rpb25dICV9CisKK3t7IGRlZmluaXRpb25zW2NhdGVnb3J5XVsnbmFtZSddIH19
Cit7eyB1bmRlcmxpbmUgKiBkZWZpbml0aW9uc1tjYXRlZ29yeV1bJ25hbWUnXXxsZW5ndGggfX0K
KworeyUgaWYgZGVmaW5pdGlvbnNbY2F0ZWdvcnldWydzaG93Y29udGVudCddICV9Cit7JSBmb3Ig
dGV4dCwgdmFsdWVzIGluIHNlY3Rpb25zW3NlY3Rpb25dW2NhdGVnb3J5XXxkaWN0c29ydChieT0n
dmFsdWUnKSAlfQoreyUgc2V0IGlzc3VlX2pvaW5lciA9IGpvaW5lcignLCAnKSAlfQorLSB7JSBm
b3IgdmFsdWUgaW4gdmFsdWVzfHNvcnQgJX17eyBpc3N1ZV9qb2luZXIoKSB9fWB7eyB2YWx1ZSB9
fSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy97eyB2YWx1ZVsx
Ol0gfX0+YF97JSBlbmRmb3IgJX06IHt7IHRleHQgfX0KKworCit7JSBlbmRmb3IgJX0KK3slIGVs
c2UgJX0KKy0ge3sgc2VjdGlvbnNbc2VjdGlvbl1bY2F0ZWdvcnldWycnXXxzb3J0fGpvaW4oJywg
JykgfX0KKworCit7JSBlbmRpZiAlfQoreyUgaWYgc2VjdGlvbnNbc2VjdGlvbl1bY2F0ZWdvcnld
fGxlbmd0aCA9PSAwICV9CisKK05vIHNpZ25pZmljYW50IGNoYW5nZXMuCisKKworeyUgZWxzZSAl
fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZWxzZSAlfQorCitObyBzaWduaWZpY2Fu
dCBjaGFuZ2VzLgorCisKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L2RvY3MvX3N0YXRpYy9pbWcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9k
b2NzL19zdGF0aWMvaW1nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNjVjNjc5NWJhMWEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL19z
dGF0aWMvaW1nL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9fc3RhdGljL2ltZy9wbHVnLnBuZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvZG9jcy9hcGlfcmVmZXJlbmNlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3Mv
YXBpX3JlZmVyZW5jZS5yc3QKaW5kZXggYWExNTEzNWFkM2RmLi4zOTNkMGFlYmVhMDYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvYXBpX3JlZmVyZW5jZS5yc3QKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVn
Z3kvZG9jcy9hcGlfcmVmZXJlbmNlLnJzdApAQCAtMSwzICsxLDUgQEAKKzpvcnBoYW46CisKIEFw
aSBSZWZlcmVuY2UKID09PT09PT09PT09PT0KIApAQCAtNiw5ICs4LDEyIEBAIEFwaSBSZWZlcmVu
Y2UKICAgICA6dW5kb2MtbWVtYmVyczoKICAgICA6c2hvdy1pbmhlcml0YW5jZToKIAorLi4gYXV0
b2NsYXNzOjogcGx1Z2d5LmNhbGxlcnMuX1Jlc3VsdAorLi4gYXV0b21ldGhvZDo6IHBsdWdneS5j
YWxsZXJzLl9SZXN1bHQuZ2V0X3Jlc3VsdAorLi4gYXV0b21ldGhvZDo6IHBsdWdneS5jYWxsZXJz
Ll9SZXN1bHQuZm9yY2VfcmVzdWx0CiAKLS4uIGF1dG9tZXRob2Q6OiBwbHVnZ3kuX1Jlc3VsdC5n
ZXRfcmVzdWx0Ci0KLS4uIGF1dG9tZXRob2Q6OiBwbHVnZ3kuX1Jlc3VsdC5mb3JjZV9yZXN1bHQK
Ky4uIGF1dG9jbGFzczo6IHBsdWdneS5ob29rcy5fSG9va0NhbGxlcgorLi4gYXV0b21ldGhvZDo6
IHBsdWdneS5ob29rcy5fSG9va0NhbGxlci5jYWxsX2V4dHJhCisuLiBhdXRvbWV0aG9kOjogcGx1
Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyLmNhbGxfaGlzdG9yaWMKIAotLi4gYXV0b21ldGhvZDo6IHBs
dWdneS5fSG9va0NhbGxlci5jYWxsX2V4dHJhCisuLiBhdXRvY2xhc3M6OiBwbHVnZ3kuaG9va3Mu
X0hvb2tSZWxheQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9jaGFuZ2Vsb2cucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvZG9jcy9jaGFuZ2Vsb2cucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNTY1YjA1MjFkMGMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVn
Z3kvZG9jcy9jaGFuZ2Vsb2cucnN0CkBAIC0wLDAgKzEgQEAKKy4uIGluY2x1ZGU6OiAuLi9DSEFO
R0VMT0cucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2NvbmYucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS9kb2NzL2NvbmYucHkKaW5kZXggMDQwNjUyMThmZGEwLi40MjgyOTg1MGQ4OTQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvY29uZi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2Nv
bmYucHkKQEAgLTEsNTkgKzEsNjUgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi1pbXBvcnQg
cGtnX3Jlc291cmNlcworaW1wb3J0IHN5cworCitpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA4
KToKKyAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWV0YWRhdGEKK2Vsc2U6CisgICAgaW1wb3J0
IGltcG9ydGxpYl9tZXRhZGF0YSBhcyBtZXRhZGF0YQogCiAKIGV4dGVuc2lvbnMgPSBbCi0gICAg
J3NwaGlueC5leHQuYXV0b2RvYycsCi0gICAgJ3NwaGlueC5leHQuZG9jdGVzdCcsCi0gICAgJ3Nw
aGlueC5leHQuaW50ZXJzcGhpbngnLAotICAgICdzcGhpbnguZXh0LmNvdmVyYWdlJywKLSAgICAn
c3BoaW54LmV4dC52aWV3Y29kZScsCisgICAgInNwaGlueC5leHQuYXV0b2RvYyIsCisgICAgInNw
aGlueC5leHQuZG9jdGVzdCIsCisgICAgInNwaGlueC5leHQuaW50ZXJzcGhpbngiLAorICAgICJz
cGhpbnguZXh0LmNvdmVyYWdlIiwKKyAgICAic3BoaW54LmV4dC52aWV3Y29kZSIsCiBdCiAKICMg
QWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LgotdGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQordGVtcGxhdGVz
X3BhdGggPSBbIl90ZW1wbGF0ZXMiXQogCi1zb3VyY2Vfc3VmZml4ID0gJy5yc3QnCitzb3VyY2Vf
c3VmZml4ID0gIi5yc3QiCiAKICMgVGhlIG1hc3RlciB0b2N0cmVlIGRvY3VtZW50LgotbWFzdGVy
X2RvYyA9ICdpbmRleCcKK21hc3Rlcl9kb2MgPSAiaW5kZXgiCiAKICMgR2VuZXJhbCBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgcHJvamVjdC4KIAotZGlzdCA9IHBrZ19yZXNvdXJjZXMuZ2V0X2Rpc3Ry
aWJ1dGlvbigncGx1Z2d5JykKLXByb2plY3QgPSBkaXN0LnByb2plY3RfbmFtZQotY29weXJpZ2h0
ID0gdScyMDE2LCBIb2xnZXIgS3Jla2VsJwotYXV0aG9yID0gJ0hvbGdlciBLcmVrZWwnCitwcm9q
ZWN0ID0gInBsdWdneSIKK2NvcHlyaWdodCA9IHUiMjAxNiwgSG9sZ2VyIEtyZWtlbCIKK2F1dGhv
ciA9ICJIb2xnZXIgS3Jla2VsIgogCi1yZWxlYXNlID0gZGlzdC52ZXJzaW9uCityZWxlYXNlID0g
bWV0YWRhdGEudmVyc2lvbihwcm9qZWN0KQogIyBUaGUgc2hvcnQgWC5ZIHZlcnNpb24uCi12ZXJz
aW9uID0gdScuJy5qb2luKGRpc3QudmVyc2lvbi5zcGxpdCgnLicpWzoyXSkKK3ZlcnNpb24gPSB1
Ii4iLmpvaW4ocmVsZWFzZS5zcGxpdCgiLiIpWzoyXSkKIAogCiBsYW5ndWFnZSA9IE5vbmUKIAot
cHlnbWVudHNfc3R5bGUgPSAnc3BoaW54JwotaHRtbF9sb2dvID0gJ19zdGF0aWMvaW1nL3BsdWcu
cG5nJwotaHRtbF90aGVtZSA9ICdhbGFiYXN0ZXInCitweWdtZW50c19zdHlsZSA9ICJzcGhpbngi
CisjIGh0bWxfbG9nbyA9ICJfc3RhdGljL2ltZy9wbHVnLnBuZyIKK2h0bWxfdGhlbWUgPSAiYWxh
YmFzdGVyIgogaHRtbF90aGVtZV9vcHRpb25zID0gewotICAgICMgJ2xvZ28nOiAnaW1nL3BsdWcu
cG5nJywKLSAgICAjICdsb2dvX25hbWUnOiAndHJ1ZScsCi0gICAgJ2Rlc2NyaXB0aW9uJzogJ1Ro
ZSBgcHl0ZXN0YCBwbHVnaW4gc3lzdGVtJywKLSAgICAnZ2l0aHViX3VzZXInOiAncHl0ZXN0LWRl
dicsCi0gICAgJ2dpdGh1Yl9yZXBvJzogJ3BsdWdneScsCi0gICAgJ2dpdGh1Yl9idXR0b24nOiAn
dHJ1ZScsCi0gICAgJ2dpdGh1Yl9iYW5uZXInOiAndHJ1ZScsCi0gICAgJ3BhZ2Vfd2lkdGgnOiAn
MTA4MHB4JywKLSAgICAnZml4ZWRfc2lkZWJhcic6ICdmYWxzZScsCisgICAgImxvZ28iOiAiaW1n
L3BsdWcucG5nIiwKKyAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHB5dGVzdCBwbHVnaW4gc3lzdGVt
IiwKKyAgICAiZ2l0aHViX3VzZXIiOiAicHl0ZXN0LWRldiIsCisgICAgImdpdGh1Yl9yZXBvIjog
InBsdWdneSIsCisgICAgImdpdGh1Yl9idXR0b24iOiAidHJ1ZSIsCisgICAgImdpdGh1Yl9iYW5u
ZXIiOiAidHJ1ZSIsCisgICAgImdpdGh1Yl90eXBlIjogInN0YXIiLAorICAgICJ0cmF2aXNfYnV0
dG9uIjogInRydWUiLAorICAgICJiYWRnZV9icmFuY2giOiAibWFzdGVyIiwKKyAgICAicGFnZV93
aWR0aCI6ICIxMDgwcHgiLAorICAgICJmaXhlZF9zaWRlYmFyIjogImZhbHNlIiwKK30KK2h0bWxf
c2lkZWJhcnMgPSB7CisgICAgIioqIjogWyJhYm91dC5odG1sIiwgImxvY2FsdG9jLmh0bWwiLCAi
cmVsYXRpb25zLmh0bWwiLCAic2VhcmNoYm94Lmh0bWwiXQogfQotaHRtbF9zdGF0aWNfcGF0aCA9
IFsnX3N0YXRpYyddCitodG1sX3N0YXRpY19wYXRoID0gWyJfc3RhdGljIl0KIAogIyBPbmUgZW50
cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0IG9mIHR1cGxlcwogIyAoc291cmNlIHN0YXJ0IGZpbGUs
IG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRob3JzLCBtYW51YWwgc2VjdGlvbikuCi1tYW5fcGFnZXMg
PSBbCi0gICAgKG1hc3Rlcl9kb2MsICdwbHVnZ3knLCB1J3BsdWdneSBEb2N1bWVudGF0aW9uJywK
LSAgICAgW2F1dGhvcl0sIDEpCi1dCittYW5fcGFnZXMgPSBbKG1hc3Rlcl9kb2MsICJwbHVnZ3ki
LCB1InBsdWdneSBEb2N1bWVudGF0aW9uIiwgW2F1dGhvcl0sIDEpXQogCiAKICMgLS0gT3B0aW9u
cyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNjIsMTAgKzY4LDIyIEBAIG1hbl9wYWdlcyA9IFsKICMgKHNvdXJjZSBzdGFy
dCBmaWxlLCB0YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKICMgIGRpciBtZW51IGVudHJ5LCBk
ZXNjcmlwdGlvbiwgY2F0ZWdvcnkpCiB0ZXhpbmZvX2RvY3VtZW50cyA9IFsKLSAgICAobWFzdGVy
X2RvYywgJ3BsdWdneScsIHUncGx1Z2d5IERvY3VtZW50YXRpb24nLAotICAgICBhdXRob3IsICdw
bHVnZ3knLCAnT25lIGxpbmUgZGVzY3JpcHRpb24gb2YgcHJvamVjdC4nLAotICAgICAnTWlzY2Vs
bGFuZW91cycpLAorICAgICgKKyAgICAgICAgbWFzdGVyX2RvYywKKyAgICAgICAgInBsdWdneSIs
CisgICAgICAgIHUicGx1Z2d5IERvY3VtZW50YXRpb24iLAorICAgICAgICBhdXRob3IsCisgICAg
ICAgICJwbHVnZ3kiLAorICAgICAgICAiT25lIGxpbmUgZGVzY3JpcHRpb24gb2YgcHJvamVjdC4i
LAorICAgICAgICAiTWlzY2VsbGFuZW91cyIsCisgICAgKQogXQogCiAjIEV4YW1wbGUgY29uZmln
dXJhdGlvbiBmb3IgaW50ZXJzcGhpbng6IHJlZmVyIHRvIHRoZSBQeXRob24gc3RhbmRhcmQgbGli
cmFyeS4KLWludGVyc3BoaW54X21hcHBpbmcgPSB7J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLyc6
IE5vbmV9CitpbnRlcnNwaGlueF9tYXBwaW5nID0geworICAgICJweXRob24iOiAoImh0dHBzOi8v
ZG9jcy5weXRob24ub3JnLzMiLCBOb25lKSwKKyAgICAicHl0ZXN0IjogKCJodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9sYXRlc3QiLCBOb25lKSwKKyAgICAic2V0dXB0b29scyI6ICgiaHR0cHM6
Ly9zZXR1cHRvb2xzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdCIsIE5vbmUpLAorICAgICJ0b3gi
OiAoImh0dHBzOi8vdG94LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdCIsIE5vbmUpLAorICAgICJk
ZXZwaSI6ICgiaHR0cHM6Ly9kZXZwaS5uZXQvZG9jcy9kZXZwaS9kZXZwaS9zdGFibGUvK2RvYy8i
LCBOb25lKSwKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2Ft
cGxlLXNwYW0vZWdnc2FtcGxlX3NwYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2Vn
Z3NhbXBsZS1zcGFtL2VnZ3NhbXBsZV9zcGFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uOGQ3MWIxMzhkMDBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVn
Z3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUtc3BhbS9lZ2dzYW1wbGVfc3BhbS5weQpAQCAtMCww
ICsxLDIyIEBACitpbXBvcnQgZWdnc2FtcGxlCisKKworQGVnZ3NhbXBsZS5ob29raW1wbAorZGVm
IGVnZ3NhbXBsZV9hZGRfaW5ncmVkaWVudHMoaW5ncmVkaWVudHMpOgorICAgICIiIkhlcmUgdGhl
IGNhbGxlciBleHBlY3RzIHVzIHRvIHJldHVybiBhIGxpc3QuIiIiCisgICAgaWYgImVnZyIgaW4g
aW5ncmVkaWVudHM6CisgICAgICAgIHNwYW0gPSBbImxvdmVseSBzcGFtIiwgIndvbmRlcm91cyBz
cGFtIl0KKyAgICBlbHNlOgorICAgICAgICBzcGFtID0gWyJzcGxlbmRpZmVyb3VzIHNwYW0iLCAi
bWFnbmlmaWNlbnQgc3BhbSJdCisgICAgcmV0dXJuIHNwYW0KKworCitAZWdnc2FtcGxlLmhvb2tp
bXBsCitkZWYgZWdnc2FtcGxlX3ByZXBfY29uZGltZW50cyhjb25kaW1lbnRzKToKKyAgICAiIiJI
ZXJlIHRoZSBjYWxsZXIgcGFzc2VzIGEgbXV0YWJsZSBvYmplY3QsIHNvIHdlIG1lc3Mgd2l0aCBp
dCBkaXJlY3RseS4iIiIKKyAgICB0cnk6CisgICAgICAgIGRlbCBjb25kaW1lbnRzWyJzdGVhayBz
YXVjZSJdCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgY29uZGltZW50
c1sic3BhbSBzYXVjZSJdID0gNDIKKyAgICByZXR1cm4gZiJOb3cgdGhpcyBpcyB3aGF0IEkgY2Fs
bCBhIGNvbmRpbWVudHMgdHJheSEiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1w
bGVzL2VnZ3NhbXBsZS1zcGFtL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9l
Z2dzYW1wbGUtc3BhbS9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmY4MWE4ZWI0MDM4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3Mv
ZXhhbXBsZXMvZWdnc2FtcGxlLXNwYW0vc2V0dXAucHkKQEAgLTAsMCArMSw4IEBACitmcm9tIHNl
dHVwdG9vbHMgaW1wb3J0IHNldHVwCisKK3NldHVwKAorICAgIG5hbWU9ImVnZ3NhbXBsZS1zcGFt
IiwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPSJlZ2dzYW1wbGUiLAorICAgIGVudHJ5X3BvaW50cz17
ImVnZ3NhbXBsZSI6IFsic3BhbSA9IGVnZ3NhbXBsZV9zcGFtIl19LAorICAgIHB5X21vZHVsZXM9
WyJlZ2dzYW1wbGVfc3BhbSJdLAorKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFt
cGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9l
eGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGRjNGIzNmRlYzNhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL19faW5pdF9fLnB5
CkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IHBsdWdneQorCitob29raW1wbCA9IHBsdWdneS5Ib29r
aW1wbE1hcmtlcigiZWdnc2FtcGxlIikKKyIiIk1hcmtlciB0byBiZSBpbXBvcnRlZCBhbmQgdXNl
ZCBpbiBwbHVnaW5zIChhbmQgZm9yIG93biBpbXBsZW1lbnRhdGlvbnMpIiIiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvaG9va3NwZWNz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2hvb2tz
cGVjcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ4ODY2YjI0
OTEyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2Ft
cGxlL2VnZ3NhbXBsZS9ob29rc3BlY3MucHkKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IHBsdWdn
eQorCitob29rc3BlYyA9IHBsdWdneS5Ib29rc3BlY01hcmtlcigiZWdnc2FtcGxlIikKKworCitA
aG9va3NwZWMKK2RlZiBlZ2dzYW1wbGVfYWRkX2luZ3JlZGllbnRzKGluZ3JlZGllbnRzOiB0dXBs
ZSk6CisgICAgIiIiSGF2ZSBhIGxvb2sgYXQgdGhlIGluZ3JlZGllbnRzIGFuZCBvZmZlciB5b3Vy
IG93bi4KKworICAgIDpwYXJhbSBpbmdyZWRpZW50czogdGhlIGluZ3JlZGllbnRzLCBkb24ndCB0
b3VjaCB0aGVtIQorICAgIDpyZXR1cm46IGEgbGlzdCBvZiBpbmdyZWRpZW50cworICAgICIiIgor
CisKK0Bob29rc3BlYworZGVmIGVnZ3NhbXBsZV9wcmVwX2NvbmRpbWVudHMoY29uZGltZW50czog
ZGljdCk6CisgICAgIiIiUmVvcmdhbml6ZSB0aGUgY29uZGltZW50cyB0cmF5IHRvIHlvdXIgaGVh
cnQncyBjb250ZW50LgorCisgICAgOnBhcmFtIGNvbmRpbWVudHM6IHNvbWUgc2F1Y2VzIGFuZCBz
dHVmZgorICAgIDpyZXR1cm46IGEgd2l0dHkgY29tbWVudCBhYm91dCB5b3VyIGFjdGl2aXR5Cisg
ICAgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9l
Z2dzYW1wbGUvaG9zdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlL2Vn
Z3NhbXBsZS9ob3N0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
YWMxZDMzYjQ1Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxl
cy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2hvc3QucHkKQEAgLTAsMCArMSw1NyBAQAoraW1wb3J0IGl0
ZXJ0b29scworaW1wb3J0IHJhbmRvbQorCitpbXBvcnQgcGx1Z2d5CisKK2Zyb20gZWdnc2FtcGxl
IGltcG9ydCBob29rc3BlY3MsIGxpYgorCitjb25kaW1lbnRzX3RyYXkgPSB7InBpY2tsZWQgd2Fs
bnV0cyI6IDEzLCAic3RlYWsgc2F1Y2UiOiA0LCAibXVzaHkgcGVhcyI6IDJ9CisKKworZGVmIG1h
aW4oKToKKyAgICBwbSA9IGdldF9wbHVnaW5fbWFuYWdlcigpCisgICAgY29vayA9IEVnZ3NlbGxl
bnRDb29rKHBtLmhvb2spCisgICAgY29vay5hZGRfaW5ncmVkaWVudHMoKQorICAgIGNvb2sucHJl
cGFyZV90aGVfZm9vZCgpCisgICAgY29vay5zZXJ2ZV90aGVfZm9vZCgpCisKKworZGVmIGdldF9w
bHVnaW5fbWFuYWdlcigpOgorICAgIHBtID0gcGx1Z2d5LlBsdWdpbk1hbmFnZXIoImVnZ3NhbXBs
ZSIpCisgICAgcG0uYWRkX2hvb2tzcGVjcyhob29rc3BlY3MpCisgICAgcG0ubG9hZF9zZXR1cHRv
b2xzX2VudHJ5cG9pbnRzKCJlZ2dzYW1wbGUiKQorICAgIHBtLnJlZ2lzdGVyKGxpYikKKyAgICBy
ZXR1cm4gcG0KKworCitjbGFzcyBFZ2dzZWxsZW50Q29vazoKKyAgICBGQVZPUklURV9JTkdSRURJ
RU5UUyA9ICgiZWdnIiwgImVnZyIsICJlZ2ciKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhv
b2spOgorICAgICAgICBzZWxmLmhvb2sgPSBob29rCisgICAgICAgIHNlbGYuaW5ncmVkaWVudHMg
PSBOb25lCisKKyAgICBkZWYgYWRkX2luZ3JlZGllbnRzKHNlbGYpOgorICAgICAgICByZXN1bHRz
ID0gc2VsZi5ob29rLmVnZ3NhbXBsZV9hZGRfaW5ncmVkaWVudHMoCisgICAgICAgICAgICBpbmdy
ZWRpZW50cz1zZWxmLkZBVk9SSVRFX0lOR1JFRElFTlRTCisgICAgICAgICkKKyAgICAgICAgbXlf
aW5ncmVkaWVudHMgPSBsaXN0KHNlbGYuRkFWT1JJVEVfSU5HUkVESUVOVFMpCisgICAgICAgICMg
RWFjaCBob29rIHJldHVybnMgYSBsaXN0IC0gc28gd2UgY2hhaW4gdGhpcyBsaXN0IG9mIGxpc3Rz
CisgICAgICAgIG90aGVyX2luZ3JlZGllbnRzID0gbGlzdChpdGVydG9vbHMuY2hhaW4oKnJlc3Vs
dHMpKQorICAgICAgICBzZWxmLmluZ3JlZGllbnRzID0gbXlfaW5ncmVkaWVudHMgKyBvdGhlcl9p
bmdyZWRpZW50cworCisgICAgZGVmIHByZXBhcmVfdGhlX2Zvb2Qoc2VsZik6CisgICAgICAgIHJh
bmRvbS5zaHVmZmxlKHNlbGYuaW5ncmVkaWVudHMpCisKKyAgICBkZWYgc2VydmVfdGhlX2Zvb2Qo
c2VsZik6CisgICAgICAgIGNvbmRpbWVudF9jb21tZW50cyA9IHNlbGYuaG9vay5lZ2dzYW1wbGVf
cHJlcF9jb25kaW1lbnRzKAorICAgICAgICAgICAgY29uZGltZW50cz1jb25kaW1lbnRzX3RyYXkK
KyAgICAgICAgKQorICAgICAgICBwcmludChmIllvdXIgZm9vZC4gRW5qb3kgc29tZSB7JywgJy5q
b2luKHNlbGYuaW5ncmVkaWVudHMpfSIpCisgICAgICAgIHByaW50KGYiU29tZSBjb25kaW1lbnRz
PyBXZSBoYXZlIHsnLCAnLmpvaW4oY29uZGltZW50c190cmF5LmtleXMoKSl9IikKKyAgICAgICAg
aWYgYW55KGNvbmRpbWVudF9jb21tZW50cyk6CisgICAgICAgICAgICBwcmludCgiXG4iLmpvaW4o
Y29uZGltZW50X2NvbW1lbnRzKSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAg
IG1haW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUv
ZWdnc2FtcGxlL2xpYi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlL2Vn
Z3NhbXBsZS9saWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42
MmNlYTc0NThlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVz
L2VnZ3NhbXBsZS9lZ2dzYW1wbGUvbGliLnB5CkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBlZ2dz
YW1wbGUKKworCitAZWdnc2FtcGxlLmhvb2tpbXBsCitkZWYgZWdnc2FtcGxlX2FkZF9pbmdyZWRp
ZW50cygpOgorICAgIHNwaWNlcyA9IFsic2FsdCIsICJwZXBwZXIiXQorICAgIHlvdV9jYW5fbmV2
ZXJfaGF2ZV9lbm91Z2hfZWdncyA9IFsiZWdnIiwgImVnZyJdCisgICAgaW5ncmVkaWVudHMgPSBz
cGljZXMgKyB5b3VfY2FuX25ldmVyX2hhdmVfZW5vdWdoX2VnZ3MKKyAgICByZXR1cm4gaW5ncmVk
aWVudHMKKworCitAZWdnc2FtcGxlLmhvb2tpbXBsCitkZWYgZWdnc2FtcGxlX3ByZXBfY29uZGlt
ZW50cyhjb25kaW1lbnRzKToKKyAgICBjb25kaW1lbnRzWyJtaW50IHNhdWNlIl0gPSAxCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9zZXR1cC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGIzZmFjYjNiNjcxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvc2V0dXAucHkKQEAgLTAsMCAr
MSw4IEBACitmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwLCBmaW5kX3BhY2thZ2VzCisKK3Nl
dHVwKAorICAgIG5hbWU9ImVnZ3NhbXBsZSIsCisgICAgaW5zdGFsbF9yZXF1aXJlcz0icGx1Z2d5
Pj0wLjMsPDEuMCIsCisgICAgZW50cnlfcG9pbnRzPXsiY29uc29sZV9zY3JpcHRzIjogWyJlZ2dz
YW1wbGU9ZWdnc2FtcGxlLmhvc3Q6bWFpbiJdfSwKKyAgICBwYWNrYWdlcz1maW5kX3BhY2thZ2Vz
KCksCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2ZpcnN0ZXhhbXBs
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvdG95LWV4YW1wbGUucHkKc2ltaWxhcml0
eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9maXJzdGV4
YW1wbGUucHkKcmVuYW1lIHRvIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvdG95LWV4YW1wbGUu
cHkKaW5kZXggM2NlYzdjZDIxNDQ3Li5kZmRjN2U5MjI4ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L2RvY3MvZXhhbXBsZXMvZmlyc3RleGFtcGxlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3Mv
ZXhhbXBsZXMvdG95LWV4YW1wbGUucHkKQEAgLTUsMTcgKzUsMTYgQEAgaG9va2ltcGwgPSBwbHVn
Z3kuSG9va2ltcGxNYXJrZXIoIm15cHJvamVjdCIpCiAKIAogY2xhc3MgTXlTcGVjKG9iamVjdCk6
Ci0gICAgIiIiQSBob29rIHNwZWNpZmljYXRpb24gbmFtZXNwYWNlLgotICAgICIiIgorICAgICIi
IkEgaG9vayBzcGVjaWZpY2F0aW9uIG5hbWVzcGFjZS4iIiIKKwogICAgIEBob29rc3BlYwogICAg
IGRlZiBteWhvb2soc2VsZiwgYXJnMSwgYXJnMik6Ci0gICAgICAgICIiIk15IHNwZWNpYWwgbGl0
dGxlIGhvb2sgdGhhdCB5b3UgY2FuIGN1c3RvbWl6ZS4KLSAgICAgICAgIiIiCisgICAgICAgICIi
Ik15IHNwZWNpYWwgbGl0dGxlIGhvb2sgdGhhdCB5b3UgY2FuIGN1c3RvbWl6ZS4iIiIKIAogCiBj
bGFzcyBQbHVnaW5fMShvYmplY3QpOgotICAgICIiIkEgaG9vayBpbXBsZW1lbnRhdGlvbiBuYW1l
c3BhY2UuCi0gICAgIiIiCisgICAgIiIiQSBob29rIGltcGxlbWVudGF0aW9uIG5hbWVzcGFjZS4i
IiIKKwogICAgIEBob29raW1wbAogICAgIGRlZiBteWhvb2soc2VsZiwgYXJnMSwgYXJnMik6CiAg
ICAgICAgIHByaW50KCJpbnNpZGUgUGx1Z2luXzEubXlob29rKCkiKQpAQCAtMjMsOCArMjIsOCBA
QCBjbGFzcyBQbHVnaW5fMShvYmplY3QpOgogCiAKIGNsYXNzIFBsdWdpbl8yKG9iamVjdCk6Ci0g
ICAgIiIiQSAybmQgaG9vayBpbXBsZW1lbnRhdGlvbiBuYW1lc3BhY2UuCi0gICAgIiIiCisgICAg
IiIiQSAybmQgaG9vayBpbXBsZW1lbnRhdGlvbiBuYW1lc3BhY2UuIiIiCisKICAgICBAaG9va2lt
cGwKICAgICBkZWYgbXlob29rKHNlbGYsIGFyZzEsIGFyZzIpOgogICAgICAgICBwcmludCgiaW5z
aWRlIFBsdWdpbl8yLm15aG9vaygpIikKQEAgLTM0LDExICszMyw5IEBAIGNsYXNzIFBsdWdpbl8y
KG9iamVjdCk6CiAjIGNyZWF0ZSBhIG1hbmFnZXIgYW5kIGFkZCB0aGUgc3BlYwogcG0gPSBwbHVn
Z3kuUGx1Z2luTWFuYWdlcigibXlwcm9qZWN0IikKIHBtLmFkZF9ob29rc3BlY3MoTXlTcGVjKQot
CiAjIHJlZ2lzdGVyIHBsdWdpbnMKIHBtLnJlZ2lzdGVyKFBsdWdpbl8xKCkpCiBwbS5yZWdpc3Rl
cihQbHVnaW5fMigpKQotCiAjIGNhbGwgb3VyIGBteWhvb2tgIGhvb2sKIHJlc3VsdHMgPSBwbS5o
b29rLm15aG9vayhhcmcxPTEsIGFyZzI9MikKIHByaW50KHJlc3VsdHMpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9j
cy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDY4YjZhMThlMTY2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxl
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZmlyc3RleGFtcGxlLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS9kb2NzL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvaW5kZXgucnN0Cmlu
ZGV4IGRiNjVhMTAyM2ZkZC4uNzI1NDZkYzI0M2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9k
b2NzL2luZGV4LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2luZGV4LnJzdApAQCAtMSw2NyAr
MSwxODIgQEAKIGBgcGx1Z2d5YGAKID09PT09PT09PT0KKyoqVGhlIHB5dGVzdCBwbHVnaW4gc3lz
dGVtKioKIAotVGhlIGBgcHl0ZXN0YGAgcGx1Z2luIHN5c3RlbQotKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgotYGBwbHVnZ3lgYCBpcyB0aGUgY3J5c3RhbGxpemVkIGNvcmUgb2YgYHBsdWdp
biBtYW5hZ2VtZW50IGFuZCBob29rCi1jYWxsaW5nYF8gZm9yIGBweXRlc3RgXy4KLQotSW4gZmFj
dCwgYGBweXRlc3RgYCBpcyBpdHNlbGYgY29tcG9zZWQgYXMgYSBzZXQgb2YgYGBwbHVnZ3lgYCBw
bHVnaW5zCitXaGF0IGlzIGl0PworKioqKioqKioqKioKK2BgcGx1Z2d5YGAgaXMgdGhlIGNyeXN0
YWxsaXplZCBjb3JlIG9mIDpyZWY6YHBsdWdpbiBtYW5hZ2VtZW50IGFuZCBob29rCitjYWxsaW5n
IDxweXRlc3Q6d3JpdGluZy1wbHVnaW5zPmAgZm9yIDpzdGQ6ZG9jOmBweXRlc3QgPHB5dGVzdDpp
bmRleD5gLgorSXQgZW5hYmxlcyBgNTAwKyBwbHVnaW5zYF8gdG8gZXh0ZW5kIGFuZCBjdXN0b21p
emUgYGBweXRlc3RgYCdzIGRlZmF1bHQKK2JlaGF2aW91ci4gRXZlbiBgYHB5dGVzdGBgIGl0c2Vs
ZiBpcyBjb21wb3NlZCBhcyBhIHNldCBvZiBgYHBsdWdneWBgIHBsdWdpbnMKIHdoaWNoIGFyZSBp
bnZva2VkIGluIHNlcXVlbmNlIGFjY29yZGluZyB0byBhIHdlbGwgZGVmaW5lZCBzZXQgb2YgcHJv
dG9jb2xzLgotU29tZSBgMjAwKyBwbHVnaW5zYF8gdXNlIGBgcGx1Z2d5YGAgdG8gZXh0ZW5kIGFu
ZCBjdXN0b21pemUgYGBweXRlc3RgYCdzIGRlZmF1bHQgYmVoYXZpb3VyLgogCi1JbiBlc3NlbmNl
LCBgYHBsdWdneWBgIGVuYWJsZXMgZnVuY3Rpb24gYGhvb2tpbmdgXyBzbyB5b3UgY2FuIGJ1aWxk
ICJwbHVnZ2FibGUiIHN5c3RlbXMuCitJdCBnaXZlcyB1c2VycyB0aGUgYWJpbGl0eSB0byBleHRl
bmQgb3IgbW9kaWZ5IHRoZSBiZWhhdmlvdXIgb2YgYQorYGBob3N0IHByb2dyYW1gYCBieSBpbnN0
YWxsaW5nIGEgYGBwbHVnaW5gYCBmb3IgdGhhdCBwcm9ncmFtLgorVGhlIHBsdWdpbiBjb2RlIHdp
bGwgcnVuIGFzIHBhcnQgb2Ygbm9ybWFsIHByb2dyYW0gZXhlY3V0aW9uLCBjaGFuZ2luZyBvcgor
ZW5oYW5jaW5nIGNlcnRhaW4gYXNwZWN0cyBvZiBpdC4KKworSW4gZXNzZW5jZSwgYGBwbHVnZ3lg
YCBlbmFibGVzIGZ1bmN0aW9uIGBob29raW5nYF8gc28geW91IGNhbiBidWlsZAorInBsdWdnYWJs
ZSIgc3lzdGVtcy4KKworV2h5IGlzIGl0IHVzZWZ1bD8KKyoqKioqKioqKioqKioqKioqCitUaGVy
ZSBhcmUgc29tZSBlc3RhYmxpc2hlZCBtZWNoYW5pc21zIGZvciBtb2RpZnlpbmcgdGhlIGJlaGF2
aW9yIG9mIG90aGVyCitwcm9ncmFtcy9saWJyYXJpZXMgaW4gUHl0aG9uIGxpa2UKK2BtZXRob2Qg
b3ZlcnJpZGluZyA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0aG9kX292ZXJyaWRp
bmc+YF8KKyhlLmcuIEppbmphMikgb3IKK2Btb25rZXkgcGF0Y2hpbmcgPGh0dHBzOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL01vbmtleV9wYXRjaD5gXyAoZS5nLiBnZXZlbnQKK29yIGZvciA6c3Rk
OmRvYzpgd3JpdGluZyB0ZXN0cyA8cHl0ZXN0Om1vbmtleXBhdGNoPmApLgorVGhlc2Ugc3RyYXRl
Z2llcyBiZWNvbWUgcHJvYmxlbWF0aWMgdGhvdWdoIHdoZW4gc2V2ZXJhbCBwYXJ0aWVzIHdhbnQg
dG8KK3BhcnRpY2lwYXRlIGluIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHNhbWUgcHJvZ3JhbS4g
VGhlcmVmb3JlIGBgcGx1Z2d5YGAKK2RvZXMgbm90IHJlbHkgb24gdGhlc2UgbWVjaGFuaXNtcyB0
byBlbmFibGUgYSBtb3JlIHN0cnVjdHVyZWQgYXBwcm9hY2ggYW5kCithdm9pZCB1bm5lY2Vzc2Fy
eSBleHBvc3VyZSBvZiBzdGF0ZSBhbmQgYmVoYXZpb3VyLiBUaGlzIGxlYWRzIHRvIGEgbW9yZQor
YGxvb3NlbHkgY291cGxlZCA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9vc2VfY291
cGxpbmc+YF8gcmVsYXRpb25zaGlwCitiZXR3ZWVuIGBgaG9zdGBgIGFuZCBgYHBsdWdpbnNgYC4K
KworVGhlIGBgcGx1Z2d5YGAgYXBwcm9hY2ggcHV0cyB0aGUgYnVyZGVuIG9uIHRoZSBkZXNpZ25l
ciBvZiB0aGUKK2BgaG9zdCBwcm9ncmFtYGAgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IHdoaWNo
IG9iamVjdHMgYXJlIHJlYWxseQorbmVlZGVkIGluIGEgaG9vayBpbXBsZW1lbnRhdGlvbi4gVGhp
cyBnaXZlcyBgYHBsdWdpbmBgIGNyZWF0b3JzIGEgY2xlYXIKK2ZyYW1ld29yayBmb3IgaG93IHRv
IGV4dGVuZCB0aGUgYGBob3N0YGAgdmlhIGEgd2VsbCBkZWZpbmVkIHNldCBvZiBmdW5jdGlvbnMK
K2FuZCBvYmplY3RzIHRvIHdvcmsgd2l0aC4KKworSG93IGRvZXMgaXQgd29yaz8KKyoqKioqKioq
KioqKioqKioqCitMZXQgdXMgc3RhcnQgd2l0aCBhIHNob3J0IG92ZXJ2aWV3IG9mIHdoYXQgaXMg
aW52b2x2ZWQ6CisKKyogYGBob3N0YGAgb3IgYGBob3N0IHByb2dyYW1gYDogdGhlIHByb2dyYW0g
b2ZmZXJpbmcgZXh0ZW5zaWJpbGl0eQorICBieSBzcGVjaWZ5aW5nIGBgaG9vayBmdW5jdGlvbnNg
YCBhbmQgaW52b2tpbmcgdGhlaXIgaW1wbGVtZW50YXRpb24ocykgYXMKKyAgcGFydCBvZiBwcm9n
cmFtIGV4ZWN1dGlvbgorKiBgYHBsdWdpbmBgOiB0aGUgcHJvZ3JhbSBpbXBsZW1lbnRpbmcgKGEg
c3Vic2V0IG9mKSB0aGUgc3BlY2lmaWVkIGhvb2tzIGFuZAorICBwYXJ0aWNpcGF0aW5nIGluIHBy
b2dyYW0gZXhlY3V0aW9uIHdoZW4gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaW52b2tlZAorICBi
eSB0aGUgYGBob3N0YGAKKyogYGBwbHVnZ3lgYDogY29ubmVjdHMgYGBob3N0YGAgYW5kIGBgcGx1
Z2luc2BgIGJ5IHVzaW5nIC4uLgorCisgICAgLSB0aGUgaG9vayA6cmVmOmBzcGVjaWZpY2F0aW9u
cyA8c3BlY3M+YCBkZWZpbmluZyBjYWxsIHNpZ25hdHVyZXMKKyAgICAgIHByb3ZpZGVkIGJ5IHRo
ZSBgYGhvc3RgYCAoYS5rLmEgYGBob29rc3BlY3NgYCAtIHNlZSA6cmVmOmBtYXJraW5nX2hvb2tz
YCkKKyAgICAtIHRoZSBob29rIDpyZWY6YGltcGxlbWVudGF0aW9ucyA8aW1wbHM+YCBwcm92aWRl
ZCBieSByZWdpc3RlcmVkCisgICAgICBgYHBsdWdpbnNgYCAoYS5rLmEgYGBob29raW1wbGBgIC0g
c2VlIGBjYWxsYmFja3NgXykKKyAgICAtIHRoZSBob29rIDpyZWY6YGNhbGxlciA8Y2FsbGluZz5g
IC0gYSBjYWxsIGxvb3AgdHJpZ2dlcmVkIGF0IGFwcHJvcHJpYXRlCisgICAgICBwcm9ncmFtIHBv
c2l0aW9ucyBpbiB0aGUgYGBob3N0YGAgaW52b2tpbmcgdGhlIGltcGxlbWVudGF0aW9ucyBhbmQK
KyAgICAgIGNvbGxlY3RpbmcgdGhlIHJlc3VsdHMKKworICAgIC4uLiB3aGVyZSBmb3IgZWFjaCBy
ZWdpc3RlcmVkIGhvb2sgKnNwZWNpZmljYXRpb24qLCBhIGhvb2sgKmNhbGwqIHdpbGwKKyAgICBp
bnZva2UgdXAgdG8gYGBOYGAgcmVnaXN0ZXJlZCBob29rICppbXBsZW1lbnRhdGlvbnMqLgorKiBg
YHVzZXJgYDogdGhlIHBlcnNvbiB3aG8gaW5zdGFsbGVkIHRoZSBgYGhvc3QgcHJvZ3JhbWBgIGFu
ZCB3YW50cyB0bworICBleHRlbmQgaXRzIGZ1bmN0aW9uYWxpdHkgd2l0aCBgYHBsdWdpbnNgYC4g
SW4gdGhlIHNpbXBsZXN0IGNhc2UgdGhleSBpbnN0YWxsCisgIHRoZSBgYHBsdWdpbmBgIGluIHRo
ZSBzYW1lIGVudmlyb25tZW50IGFzIHRoZSBgYGhvc3RgYCBhbmQgdGhlIG1hZ2ljIHdpbGwKKyAg
aGFwcGVuIHdoZW4gdGhlIGBgaG9zdCBwcm9ncmFtYGAgaXMgcnVuIHRoZSBuZXh0IHRpbWUuIERl
cGVuZGluZyBvbgorICB0aGUgYGBwbHVnaW5gYCwgdGhlcmUgbWlnaHQgYmUgb3RoZXIgdGhpbmdz
IHRoZXkgbmVlZCB0byBkby4gRm9yIGV4YW1wbGUsCisgIHRoZXkgbWlnaHQgaGF2ZSB0byBjYWxs
IHRoZSBob3N0IHdpdGggYW4gYWRkaXRpb25hbCBjb21tYW5kbGluZSBwYXJhbWV0ZXIKKyAgdG8g
dGhlIGhvc3QgdGhhdCB0aGUgYGBwbHVnaW5gYCBhZGRlZC4KKworQSB0b3kgZXhhbXBsZQorLS0t
LS0tLS0tLS0tLQorTGV0IHVzIGRlbW9uc3RyYXRlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaW4g
b25lIG1vZHVsZSBhbmQgc2hvdyBob3cgeW91IGNhbgorc3RhcnQgZXhwZXJpbWVudGluZyB3aXRo
IHBsdWdneSBmdW5jdGlvbmFsaXR5LgogCi1Ib3cncyBpdCB3b3JrPwotLS0tLS0tLS0tLS0tLS0K
LUEgYHBsdWdpbmAgaXMgYSBgbmFtZXNwYWNlYF8gd2hpY2ggZGVmaW5lcyBob29rIGZ1bmN0aW9u
cy4KKy4uIGxpdGVyYWxpbmNsdWRlOjogZXhhbXBsZXMvdG95LWV4YW1wbGUucHkKIAotYGBwbHVn
Z3lgYCBtYW5hZ2VzICpwbHVnaW5zKiBieSByZWx5aW5nIG9uOgorUnVubmluZyB0aGlzIGRpcmVj
dGx5IGdldHMgdXM6OgogCi0tIGEgaG9vayAqc3BlY2lmaWNhdGlvbiogLSBkZWZpbmVzIGEgY2Fs
bCBzaWduYXR1cmUKLS0gYSBzZXQgb2YgaG9vayAqaW1wbGVtZW50YXRpb25zKiAtIGFrYSBgY2Fs
bGJhY2tzYF8KLS0gdGhlIGhvb2sgKmNhbGxlciogLSBhIGNhbGwgbG9vcCB3aGljaCBjb2xsZWN0
cyByZXN1bHRzCisgICAgJCBweXRob24gZG9jcy9leGFtcGxlcy90b3ktZXhhbXBsZS5weQogCi13
aGVyZSBmb3IgZWFjaCByZWdpc3RlcmVkIGhvb2sgKnNwZWNpZmljYXRpb24qLCBhIGhvb2sgKmNh
bGwqIHdpbGwgaW52b2tlIHVwIHRvIGBgTmBgCi1yZWdpc3RlcmVkIGhvb2sgKmltcGxlbWVudGF0
aW9ucyouCisgICAgaW5zaWRlIFBsdWdpbl8yLm15aG9vaygpCisgICAgaW5zaWRlIFBsdWdpbl8x
Lm15aG9vaygpCisgICAgWy0xLCAzXQogCi1gYHBsdWdneWBgIGFjY29tcGxpc2hlcyBhbGwgdGhp
cyBieSBpbXBsZW1lbnRpbmcgYSBgcmVxdWVzdC1yZXNwb25zZSBwYXR0ZXJuYF8gdXNpbmcgKmZ1
bmN0aW9uKgotc3Vic2NyaXB0aW9ucyBhbmQgY2FuIGJlIHRob3VnaHQgb2YgYW5kIHVzZWQgYXMg
YSBydWRpbWVudGFyeSBidXNsZXNzIGBwdWJsaXNoLXN1YnNjcmliZWBfCi1ldmVudCBzeXN0ZW0u
CitBIGNvbXBsZXRlIGV4YW1wbGUKKy0tLS0tLS0tLS0tLS0tLS0tLQorTm93IGxldCB1cyBkZW1v
bnN0cmF0ZSBob3cgdGhpcyBwbGF5cyB0b2dldGhlciBpbiBhIHZhZ3VlbHkgcmVhbCB3b3JsZCBz
Y2VuYXJpby4KIAotYGBwbHVnZ3lgYCdzIGFwcHJvYWNoIGlzIG1lYW50IHRvIGxldCBhIGRlc2ln
bmVyIHRoaW5rIGNhcmVmdWx5IGFib3V0IHdoaWNoIG9iamVjdHMgYXJlCi1leHBsaWNpdGx5IG5l
ZWRlZCBieSBhbiBleHRlbnNpb24gd3JpdGVyLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIHN1YmNs
YXNzLWJhc2VkIGV4dGVuc2lvbgotc3lzdGVtcyB3aGljaCBtYXkgZXhwb3NlIHVuZWNlc3Nhcnkg
c3RhdGUgYW5kIGJlaGF2aW91ciBvciBlbmNvdXJhZ2UgYHRpZ2h0IGNvdXBsaW5nYF8KLWluIG92
ZXJseWluZyBmcmFtZXdvcmtzLgorTGV0J3MgYXNzdW1lIG91ciBgYGhvc3QgcHJvZ3JhbWBgIGlz
IGNhbGxlZCAqKmVnZ3NhbXBsZSoqIHdoZXJlIHNvbWUgZWdncyB3aWxsCitiZSBwcmVwYXJlZCBh
bmQgc2VydmVkIHdpdGggYSB0cmF5IGNvbnRhaW5pbmcgY29uZGltZW50cy4gQXMgZXZlcnlib2R5
IGtub3dzOgordGhlIG1vcmUgY29va3MgYXJlIGludm9sdmVkIHRoZSBiZXR0ZXIgdGhlIGZvb2Qs
IHNvIGxldCB1cyBtYWtlIHRoZSBwcm9jZXNzCitwbHVnZ2FibGUgYW5kIHdyaXRlIGEgcGx1Z2lu
IHRoYXQgaW1wcm92ZXMgdGhlIG1lYWwgd2l0aCBzb21lIHNwYW0gYW5kIHJlcGxhY2VzCit0aGUg
c3RlYWsgc2F1Y2UgKG5vYm9keSBsaWtlcyB0aGF0IGFueXdheSkgd2l0aCBzcGFtIHNhdWNlIChp
dCdzIGEgdGhpbmcgLSB0cnVzdCBtZSkuCiAKKy4uIG5vdGU6OgogCi1BIGZpcnN0IGV4YW1wbGUK
LS0tLS0tLS0tLS0tLS0tLQorICAgICoqbmFtaW5nIG1hcmtlcnMqKjogYGBIb29rU3BlY01hcmtl
cmBgIGFuZCBgYEhvb2tJbXBsTWFya2VyYGAgbXVzdCBiZQorICAgIGluaXRpYWxpemVkIHdpdGgg
dGhlIG5hbWUgb2YgdGhlIGBgaG9zdGBgIHByb2plY3QgKHRoZSBgYG5hbWVgYAorICAgIHBhcmFt
ZXRlciBpbiBgYHNldHVwKClgYCkgLSBzbyAqKmVnZ3NhbXBsZSoqIGluIG91ciBjYXNlLgogCi0u
LiBsaXRlcmFsaW5jbHVkZTo6IGV4YW1wbGVzL2ZpcnN0ZXhhbXBsZS5weQorICAgICoqbmFtaW5n
IHBsdWdpbiBwcm9qZWN0cyoqOiB0aGV5IHNob3VsZCBiZSBuYW1lZCBpbiB0aGUgZm9ybSBvZgor
ICAgIGBgPGhvc3Q+LTxwbHVnaW4+YGAgKGUuZy4gYGBweXRlc3QteGRpc3RgYCksIHRoZXJlZm9y
ZSB3ZSBjYWxsIG91cgorICAgIHBsdWdpbiAqZWdnc2FtcGxlLXNwYW0qLgogCi1SdW5uaW5nIHRo
aXMgZGlyZWN0bHkgZ2V0cyB1czo6CitUaGUgaG9zdAorXl5eXl5eXl4KK2BgZWdnc2FtcGxlL2Vn
Z3NhbXBsZS9fX2luaXRfXy5weWBgCiAKLSAgICAkIHB5dGhvbiBkb2NzL2V4YW1wbGVzL2ZpcnN0
ZXhhbXBsZS5weQorLi4gbGl0ZXJhbGluY2x1ZGU6OiBleGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2Ft
cGxlL19faW5pdF9fLnB5CiAKLSAgICBpbnNpZGUgUGx1Z2luXzIubXlob29rKCkKLSAgICBpbnNp
ZGUgUGx1Z2luXzEubXlob29rKCkKLSAgICBbLTEsIDNdCitgYGVnZ3NhbXBsZS9lZ2dzYW1wbGUv
aG9va3NwZWNzLnB5YGAKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiBleGFtcGxlcy9lZ2dzYW1wbGUv
ZWdnc2FtcGxlL2hvb2tzcGVjcy5weQorCitgYGVnZ3NhbXBsZS9lZ2dzYW1wbGUvbGliLnB5YGAK
KworLi4gbGl0ZXJhbGluY2x1ZGU6OiBleGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2xpYi5w
eQorCitgYGVnZ3NhbXBsZS9lZ2dzYW1wbGUvaG9zdC5weWBgCisKKy4uIGxpdGVyYWxpbmNsdWRl
OjogZXhhbXBsZXMvZWdnc2FtcGxlL2VnZ3NhbXBsZS9ob3N0LnB5CisKK2BgZWdnc2FtcGxlL3Nl
dHVwLnB5YGAKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiBleGFtcGxlcy9lZ2dzYW1wbGUvc2V0dXAu
cHkKKworTGV0J3MgZ2V0IGNvb2tpbmcgLSB3ZSBpbnN0YWxsIHRoZSBob3N0IGFuZCBzZWUgd2hh
dCBhIHByb2dyYW0gcnVuIGxvb2tzIGxpa2U6OgorCisgICAgJCBwaXAgaW5zdGFsbCAtLWVkaXRh
YmxlIHBsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZQorICAgICQgZWdnc2FtcGxlCisKKyAg
ICBZb3VyIGZvb2QuIEVuam95IHNvbWUgZWdnLCBlZ2csIHNhbHQsIGVnZywgZWdnLCBwZXBwZXIs
IGVnZworICAgIFNvbWUgY29uZGltZW50cz8gV2UgaGF2ZSBwaWNrbGVkIHdhbG51dHMsIHN0ZWFr
IHNhdWNlLCBtdXNoeSBwZWFzLCBtaW50IHNhdWNlCisKK1RoZSBwbHVnaW4KK15eXl5eXl5eXl4K
K2BgZWdnc2FtcGxlLXNwYW0vZWdnc2FtcGxlX3NwYW0ucHlgYAorCisuLiBsaXRlcmFsaW5jbHVk
ZTo6IGV4YW1wbGVzL2VnZ3NhbXBsZS1zcGFtL2VnZ3NhbXBsZV9zcGFtLnB5CisKK2BgZWdnc2Ft
cGxlLXNwYW0vc2V0dXAucHlgYAorCisuLiBsaXRlcmFsaW5jbHVkZTo6IGV4YW1wbGVzL2VnZ3Nh
bXBsZS1zcGFtL3NldHVwLnB5CisKK0xldCdzIGdldCBjb29raW5nIHdpdGggbW9yZSBjb29rcyAt
IHdlIGluc3RhbGwgdGhlIHBsdWdpbiBhbmQgYW5kIHNlZSB3aGF0Cit3ZSBnZXQ6OgorCisgICAg
JCBwaXAgaW5zdGFsbCAtLWVkaXRhYmxlIHBsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS1z
cGFtCisgICAgJCBlZ2dzYW1wbGUKKworICAgIFlvdXIgZm9vZC4gRW5qb3kgc29tZSBlZ2csIGxv
dmVseSBzcGFtLCBzYWx0LCBlZ2csIGVnZywgZWdnLCB3b25kZXJvdXMgc3BhbSwgZWdnLCBwZXBw
ZXIKKyAgICBTb21lIGNvbmRpbWVudHM/IFdlIGhhdmUgcGlja2xlZCB3YWxudXRzLCBtdXNoeSBw
ZWFzLCBtaW50IHNhdWNlLCBzcGFtIHNhdWNlCisgICAgTm93IHRoaXMgaXMgd2hhdCBJIGNhbGwg
YSBjb25kaW1lbnRzIHRyYXkhCisKK01vcmUgcmVhbCB3b3JsZCBleGFtcGxlcworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitUbyBzZWUgaG93IGBgcGx1Z2d5YGAgaXMgdXNlZCBpbiB0aGUgcmVh
bCB3b3JsZCwgaGF2ZSBhIGxvb2sgYXQgdGhlc2UgcHJvamVjdHMKK2RvY3VtZW50YXRpb24gYW5k
IHNvdXJjZSBjb2RlOgorCisqIDpyZWY6YHB5dGVzdCA8cHl0ZXN0OndyaXRpbmctcGx1Z2lucz5g
CisqIDpzdGQ6ZG9jOmB0b3ggPHRveDpwbHVnaW5zPmAKKyogOnN0ZDpkb2M6YGRldnBpIDxkZXZw
aTpkZXZndWlkZS9pbmRleD5gCiAKIEZvciBtb3JlIGRldGFpbHMgYW5kIGFkdmFuY2VkIHVzYWdl
IHBsZWFzZSByZWFkIG9uLgogCiAuLiBfZGVmaW5lOgogCi1EZWZpbmluZyBhbmQgQ29sbGVjdGlu
ZyBIb29rcwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUEgKnBsdWdpbiogaXMgYSBu
YW1lc3BhY2UgdHlwZSAoY3VycmVudGx5IG9uZSBvZiBhIGBgY2xhc3NgYCBvciBtb2R1bGUpCi13
aGljaCBkZWZpbmVzIGEgc2V0IG9mICpob29rKiBmdW5jdGlvbnMuCitEZWZpbmUgYW5kIGNvbGxl
Y3QgaG9va3MKKyoqKioqKioqKioqKioqKioqKioqKioqKgorQSAqcGx1Z2luKiBpcyBhIDpyZWY6
YG5hbWVzcGFjZSA8cHl0aG9uOnR1dC1zY29wZXM+YCB0eXBlIChjdXJyZW50bHkgb25lIG9mIGEK
K2BgY2xhc3NgYCBvciBtb2R1bGUpIHdoaWNoIGRlZmluZXMgYSBzZXQgb2YgKmhvb2sqIGZ1bmN0
aW9ucy4KIAotQXMgbWVudGlvbmVkIGluIDpyZWY6YG1hbmFnZWAsIGFsbCAqcGx1Z2lucyogd2hp
Y2ggZGVmaW5lICpob29rcyoKK0FzIG1lbnRpb25lZCBpbiA6cmVmOmBtYW5hZ2VgLCBhbGwgKnBs
dWdpbnMqIHdoaWNoIHNwZWNpZnkgKmhvb2tzKgogYXJlIG1hbmFnZWQgYnkgYW4gaW5zdGFuY2Ug
b2YgYSA6cHk6Y2xhc3M6YHBsdWdneS5QbHVnaW5NYW5hZ2VyYCB3aGljaAogZGVmaW5lcyB0aGUg
cHJpbWFyeSBgYHBsdWdneWBgIEFQSS4KIAotSW4gb3JkZXIgZm9yIGEgYGBQbHVnaW5NYW5hZ2Vy
YGAgdG8gZGV0ZWN0IGZ1bmN0aW9ucyBpbiBhIG5hbWVzcGFjZQorSW4gb3JkZXIgZm9yIGEgOnB5
OmNsYXNzOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXJgIHRvIGRldGVjdCBmdW5jdGlvbnMgaW4gYSBu
YW1lc3BhY2UKIGludGVuZGVkIHRvIGJlICpob29rcyosIHRoZXkgbXVzdCBiZSBkZWNvcmF0ZWQg
dXNpbmcgc3BlY2lhbCBgYHBsdWdneWBgICptYXJrcyouCiAKIC4uIF9tYXJraW5nX2hvb2tzOgpA
QCAtNjksMjQgKzE4NCwyNSBAQCBpbnRlbmRlZCB0byBiZSAqaG9va3MqLCB0aGV5IG11c3QgYmUg
ZGVjb3JhdGVkIHVzaW5nIHNwZWNpYWwgYGBwbHVnZ3lgYCAqbWFya3MqLgogTWFya2luZyBob29r
cwogLS0tLS0tLS0tLS0tLQogVGhlIDpweTpjbGFzczpgfnBsdWdneS5Ib29rc3BlY01hcmtlcmAg
YW5kIDpweTpjbGFzczpgfnBsdWdneS5Ib29raW1wbE1hcmtlcmAKLWRlY29yYXRvcnMgYXJlIHVz
ZWQgdG8gKm1hcmsqIGZ1bmN0aW9ucyBmb3IgZGV0ZWN0aW9uIGJ5IGEgYGBQbHVnaW5NYW5hZ2Vy
YGA6CitkZWNvcmF0b3JzIGFyZSB1c2VkIHRvICptYXJrKiBmdW5jdGlvbnMgZm9yIGRldGVjdGlv
biBieSBhCis6cHk6Y2xhc3M6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlcmA6CiAKIC4uIGNvZGUtYmxv
Y2s6OiBweXRob24KIAogICAgIGZyb20gcGx1Z2d5IGltcG9ydCBIb29rc3BlY01hcmtlciwgSG9v
a2ltcGxNYXJrZXIKIAotICAgIGhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoJ3Byb2plY3RfbmFt
ZScpCi0gICAgaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigncHJvamVjdF9uYW1lJykKKyAgICBo
b29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJwcm9qZWN0X25hbWUiKQorICAgIGhvb2tpbXBsID0g
SG9va2ltcGxNYXJrZXIoInByb2plY3RfbmFtZSIpCiAKIAogRWFjaCBkZWNvcmF0b3IgdHlwZSB0
YWtlcyBhIHNpbmdsZSBgYHByb2plY3RfbmFtZWBgIHN0cmluZyBhcyBpdHMKIGxvbmUgYXJndW1l
bnQgdGhlIHZhbHVlIG9mIHdoaWNoIGlzIHVzZWQgdG8gbWFyayBob29rcyBmb3IgZGV0ZWN0aW9u
IGJ5Ci1ieSBhIHNpbWlsYXJseSBjb25maWd1cmVkIGBgUGx1Z2luTWFuYWdlcmBgIGluc3RhbmNl
LgorYSBzaW1pbGFybHkgY29uZmlndXJlZCA6cHk6Y2xhc3M6YH5wbHVnZ3kuUGx1Z2luTWFuYWdl
cmAgaW5zdGFuY2UuCiAKIFRoYXQgaXMsIGEgKm1hcmsqIHR5cGUgY2FsbGVkIHdpdGggYGBwcm9q
ZWN0X25hbWVgYCByZXR1cm5zIGFuIG9iamVjdCB3aGljaAogY2FuIGJlIHVzZWQgdG8gZGVjb3Jh
dGUgZnVuY3Rpb25zIHdoaWNoIHdpbGwgdGhlbiBiZSBkZXRlY3RlZCBieSBhCi1gYFBsdWdpbk1h
bmFnZXJgYCB3aGljaCB3YXMgaW5zdGFudGlhdGVkIHdpdGggdGhlIHRoZSBzYW1lIGBgcHJvamVj
dF9uYW1lYGAKLXZhbHVlLgorOnB5OmNsYXNzOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXJgIHdoaWNo
IHdhcyBpbnN0YW50aWF0ZWQgd2l0aCB0aGUgc2FtZQorYGBwcm9qZWN0X25hbWVgYCB2YWx1ZS4K
IAogRnVydGhlcm1vcmUsIGVhY2ggKmhvb2tpbXBsKiBvciAqaG9va3NwZWMqIGRlY29yYXRvciBj
YW4gY29uZmlndXJlIHRoZQogdW5kZXJseWluZyBjYWxsLXRpbWUgYmVoYXZpb3Igb2YgZWFjaCAq
aG9vayogb2JqZWN0IGJ5IHByb3ZpZGluZyBzcGVjaWFsCkBAIC05NSw4ICsyMTEsOCBAQCB1bmRl
cmx5aW5nIGNhbGwtdGltZSBiZWhhdmlvciBvZiBlYWNoICpob29rKiBvYmplY3QgYnkgcHJvdmlk
aW5nIHNwZWNpYWwKIAogLi4gbm90ZTo6CiAgICAgVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBjb3Jy
ZXNwb25kIHRvIHNpbWlsYXIgZG9jdW1lbnRhdGlvbiBpbgotICAgIGBgcHl0ZXN0YGAgZm9yIGBX
cml0aW5nIGhvb2sgZnVuY3Rpb25zYF8gYW5kIGNhbiBiZSB1c2VkCi0gICAgYXMgYSBzdXBwbGVt
ZW50YXJ5IHJlc291cmNlLgorICAgIGBgcHl0ZXN0YGAgZm9yIDpyZWY6YHB5dGVzdDp3cml0aW5n
aG9va3NgIGFuZCBjYW4gYmUgdXNlZCBhcworICAgIGEgc3VwcGxlbWVudGFyeSByZXNvdXJjZS4K
IAogLi4gX2ltcGxzOgogCkBAIC0xMTMsNyArMjI5LDggQEAgd2hpY2ggaGFzIGJlZW4gYXBwcm9w
cmlhdGVseSBtYXJrZWQuCiAgICAgaW1wb3J0IHN5cwogICAgIGZyb20gcGx1Z2d5IGltcG9ydCBQ
bHVnaW5NYW5hZ2VyLCBIb29raW1wbE1hcmtlcgogCi0gICAgaG9va2ltcGwgPSBIb29raW1wbE1h
cmtlcignbXlwcm9qZWN0JykKKyAgICBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJteXByb2pl
Y3QiKQorCiAKICAgICBAaG9va2ltcGwKICAgICBkZWYgc2V0dXBfcHJvamVjdChjb25maWcsIGFy
Z3MpOgpAQCAtMTI1LDcgKzI0Miw4IEBAIHdoaWNoIGhhcyBiZWVuIGFwcHJvcHJpYXRlbHkgbWFy
a2VkLgogCiAgICAgICAgIHJldHVybiBjb25maWcKIAotICAgIHBtID0gUGx1Z2luTWFuYWdlcign
bXlwcm9qZWN0JykKKworICAgIHBtID0gUGx1Z2luTWFuYWdlcigibXlwcm9qZWN0IikKIAogICAg
ICMgbG9hZCBhbGwgaG9va2ltcGxzIGZyb20gdGhlIGxvY2FsIG1vZHVsZSdzIG5hbWVzcGFjZQog
ICAgIHBsdWdpbl9uYW1lID0gcG0ucmVnaXN0ZXIoc3lzLm1vZHVsZXNbX19uYW1lX19dKQpAQCAt
MTM0LDcgKzI1Miw3IEBAIHdoaWNoIGhhcyBiZWVuIGFwcHJvcHJpYXRlbHkgbWFya2VkLgogCiBP
cHRpb25hbCB2YWxpZGF0aW9uCiBeXl5eXl5eXl5eXl5eXl5eXl5eCi1Ob3JtYWxseSBlYWNoICpo
b29raW1wbCogc2hvdWxkIGJlIHZhbGlkYXRlZCBhIGFnYWluc3QgYSBjb3JyZXNwb25kaW5nCitO
b3JtYWxseSBlYWNoICpob29raW1wbCogc2hvdWxkIGJlIHZhbGlkYXRlZCBhZ2FpbnN0IGEgY29y
cmVzcG9uZGluZwogaG9vayA6cmVmOmBzcGVjaWZpY2F0aW9uIDxzcGVjcz5gLiBJZiB5b3Ugd2Fu
dCB0byBtYWtlIGFuIGV4Y2VwdGlvbgogdGhlbiB0aGUgKmhvb2tpbXBsKiBzaG91bGQgYmUgbWFy
a2VkIHdpdGggdGhlIGBgIm9wdGlvbmFsaG9vayJgYCBvcHRpb246CiAKQEAgLTE2Miw3ICsyODAs
OCBAQCB3aWxsIGJlIGV4ZWN1dGVkICpmaXJzdCogb3IgKmxhc3QqIHJlc3BlY3RpdmVseSBpbiB0
aGUgaG9vayBjYWxsIGxvb3A6CiAgICAgaW1wb3J0IHN5cwogICAgIGZyb20gcGx1Z2d5IGltcG9y
dCBQbHVnaW5NYW5hZ2VyLCBIb29raW1wbE1hcmtlcgogCi0gICAgaG9va2ltcGwgPSBIb29raW1w
bE1hcmtlcignbXlwcm9qZWN0JykKKyAgICBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJteXBy
b2plY3QiKQorCiAKICAgICBAaG9va2ltcGwodHJ5bGFzdD1UcnVlKQogICAgIGRlZiBzZXR1cF9w
cm9qZWN0KGNvbmZpZywgYXJncyk6CkBAIC0xNzcsOCArMjk2LDkgQEAgd2lsbCBiZSBleGVjdXRl
ZCAqZmlyc3QqIG9yICpsYXN0KiByZXNwZWN0aXZlbHkgaW4gdGhlIGhvb2sgY2FsbCBsb29wOgog
ICAgIGNsYXNzIFNvbWVPdGhlclBsdWdpbihvYmplY3QpOgogICAgICAgICAiIiJTb21lIG90aGVy
IHBsdWdpbiBkZWZpbmluZyB0aGUgc2FtZSBob29rLgogICAgICAgICAiIiIKKwogICAgICAgICBA
aG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICAgICAgZGVmIHNldHVwX3Byb2plY3QoY29uZmln
LCBhcmdzKToKKyAgICAgICAgZGVmIHNldHVwX3Byb2plY3Qoc2VsZiwgY29uZmlnLCBhcmdzKToK
ICAgICAgICAgICAgICIiIlJlcG9ydCB3aGF0IGFyZ3Mgd2VyZSBwYXNzZWQgYmVmb3JlIGNhbGxp
bmcKICAgICAgICAgICAgIGRvd25zdHJlYW0gaG9va3MuCiAgICAgICAgICAgICAiIiIKQEAgLTE4
NywxMiArMzA3LDEzIEBAIHdpbGwgYmUgZXhlY3V0ZWQgKmZpcnN0KiBvciAqbGFzdCogcmVzcGVj
dGl2ZWx5IGluIHRoZSBob29rIGNhbGwgbG9vcDoKIAogICAgICAgICAgICAgcmV0dXJuIGNvbmZp
ZwogCi0gICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCdteXByb2plY3QnKQorCisgICAgcG0gPSBQbHVn
aW5NYW5hZ2VyKCJteXByb2plY3QiKQogCiAgICAgIyBsb2FkIGZyb20gdGhlIGxvY2FsIG1vZHVs
ZSdzIG5hbWVzcGFjZQogICAgIHBtLnJlZ2lzdGVyKHN5cy5tb2R1bGVzW19fbmFtZV9fXSkKICAg
ICAjIGxvYWQgYSBwbHVnaW4gZGVmaW5lZCBvbiBhIGNsYXNzCi0gICAgcG0ucmVnaXN0ZXIoU29t
ZVBsdWdpbigpKQorICAgIHBtLnJlZ2lzdGVyKFNvbWVPdGhlclBsdWdpbigpKQogCiBGb3IgYW5v
dGhlciBleGFtcGxlIHNlZSB0aGUgYGhvb2sgZnVuY3Rpb24gb3JkZXJpbmdgXyBzZWN0aW9uIG9m
IHRoZQogYGBweXRlc3RgYCBkb2NzLgpAQCAtMjAxLDYgKzMyMiw5IEBAIEZvciBhbm90aGVyIGV4
YW1wbGUgc2VlIHRoZSBgaG9vayBmdW5jdGlvbiBvcmRlcmluZ2BfIHNlY3Rpb24gb2YgdGhlCiAg
ICAgYGB0cnlmaXJzdGBgIGFuZCBgYHRyeWxhc3RgYCBob29rcyBhcmUgc3RpbGwgaW52b2tlZCBp
biBMSUZPIG9yZGVyIHdpdGhpbgogICAgIGVhY2ggY2F0ZWdvcnkuCiAKKworLi4gX2hvb2t3cmFw
cGVyczoKKwogV3JhcHBlcnMKIF5eXl5eXl5eCiBBICpob29raW1wbCogY2FuIGJlIG1hcmtlZCB3
aXRoIGEgYGAiaG9va3dyYXBwZXIiYGAgb3B0aW9uIHdoaWNoIGluZGljYXRlcyB0aGF0CkBAIC0y
MDgsNyArMzMyLDcgQEAgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHRvICp3cmFwKiAob3Ig
c3Vycm91bmQpIGFsbCBvdGhlciBub3JtYWwgKmhvb2tpbXBsKgogY2FsbHMuIEEgKmhvb2t3cmFw
cGVyKiBjYW4gdGh1cyBleGVjdXRlIHNvbWUgY29kZSBhaGVhZCBhbmQgYWZ0ZXIgdGhlIGV4ZWN1
dGlvbgogb2YgYWxsIGNvcnJlc3BvbmRpbmcgbm9uLXdyYXBwcGVyICpob29raW1wbHMqLgogCi1N
dWNoIGluIHRoZSBzYW1lIHdheSBhcyBhIGBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcmBfLCAq
aG9va3dyYXBwZXJzKiBtdXN0CitNdWNoIGluIHRoZSBzYW1lIHdheSBhcyBhIDpweTpmdW5jOmBA
Y29udGV4dGxpYi5jb250ZXh0bWFuYWdlciA8cHl0aG9uOmNvbnRleHRsaWIuY29udGV4dG1hbmFn
ZXI+YCwgKmhvb2t3cmFwcGVycyogbXVzdAogYmUgaW1wbGVtZW50ZWQgYXMgZ2VuZXJhdG9yIGZ1
bmN0aW9uIHdpdGggYSBzaW5nbGUgYGB5aWVsZGBgIGluIGl0cyBib2R5OgogCiAKQEAgLTIyMCw4
ICszNDQsNyBAQCBiZSBpbXBsZW1lbnRlZCBhcyBnZW5lcmF0b3IgZnVuY3Rpb24gd2l0aCBhIHNp
bmdsZSBgYHlpZWxkYGAgaW4gaXRzIGJvZHk6CiAgICAgICAgIHNob3VsZCByZXR1cm4ganNvbiBl
bmNvZGVkIGNvbmZpZyBvcHRpb25zLgogICAgICAgICAiIiIKICAgICAgICAgaWYgY29uZmlnLmRl
YnVnOgotICAgICAgICAgICAgcHJpbnQoIlByZS1ob29rIGNvbmZpZyBpcyB7fSIuZm9ybWF0KAot
ICAgICAgICAgICAgICAgIGNvbmZpZy50b2pzb24oKSkpCisgICAgICAgICAgICBwcmludCgiUHJl
LWhvb2sgY29uZmlnIGlzIHt9Ii5mb3JtYXQoY29uZmlnLnRvanNvbigpKSkKIAogICAgICAgICAj
IGdldCBpbml0aWFsIGRlZmF1bHQgY29uZmlnCiAgICAgICAgIGRlZmF1bHRzID0gY29uZmlnLnRv
anNvbigpCkBAIC0yMzMsMTcgKzM1NiwxNiBAQCBiZSBpbXBsZW1lbnRlZCBhcyBnZW5lcmF0b3Ig
ZnVuY3Rpb24gd2l0aCBhIHNpbmdsZSBgYHlpZWxkYGAgaW4gaXRzIGJvZHk6CiAgICAgICAgICAg
ICBwcmludCgiSlNPTiBjb25maWcgb3ZlcnJpZGUgaXMge30iLmZvcm1hdChpdGVtKSkKIAogICAg
ICAgICBpZiBjb25maWcuZGVidWc6Ci0gICAgICAgICAgICBwcmludCgiUG9zdC1ob29rIGNvbmZp
ZyBpcyB7fSIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGNvbmZpZy50b2pzb24oKSkpCisgICAg
ICAgICAgICBwcmludCgiUG9zdC1ob29rIGNvbmZpZyBpcyB7fSIuZm9ybWF0KGNvbmZpZy50b2pz
b24oKSkpCiAKICAgICAgICAgaWYgY29uZmlnLnVzZV9kZWZhdWx0czoKICAgICAgICAgICAgIG91
dGNvbWUuZm9yY2VfcmVzdWx0KGRlZmF1bHRzKQogCi1UaGUgZ2VuZXJhdG9yIGlzIGBzZW50YF8g
YSA6cHk6Y2xhc3M6YHBsdWdneS5fUmVzdWx0YCBvYmplY3Qgd2hpY2ggY2FuCitUaGUgZ2VuZXJh
dG9yIGlzIDpweTptZXRoOmBzZW50IDxweXRob246Z2VuZXJhdG9yLnNlbmQ+YCBhIDpweTpjbGFz
czpgcGx1Z2d5LmNhbGxlcnMuX1Jlc3VsdGAgb2JqZWN0IHdoaWNoIGNhbgogYmUgYXNzaWduZWQg
aW4gdGhlIGBgeWllbGRgYCBleHByZXNzaW9uIGFuZCB1c2VkIHRvIG92ZXJyaWRlIG9yIGluc3Bl
Y3QKIHRoZSBmaW5hbCByZXN1bHQocykgcmV0dXJuZWQgYmFjayB0byB0aGUgY2FsbGVyIHVzaW5n
IHRoZQotOnB5Om1ldGg6YH5wbHVnZ3kuX1Jlc3VsdC5mb3JjZV9yZXN1bHRgIG9yCi06cHk6bWV0
aDpgfnBsdWdneS5fUmVzdWx0LmdldF9yZXN1bHRgIG1ldGhvZHMuCis6cHk6bWV0aDpgfnBsdWdn
eS5jYWxsZXJzLl9SZXN1bHQuZm9yY2VfcmVzdWx0YCBvcgorOnB5Om1ldGg6YH5wbHVnZ3kuY2Fs
bGVycy5fUmVzdWx0LmdldF9yZXN1bHRgIG1ldGhvZHMuCiAKIC4uIG5vdGU6OgogICAgIEhvb2sg
d3JhcHBlcnMgY2FuICoqbm90KiogcmV0dXJuIHJlc3VsdHMgKGFzIHBlciBnZW5lcmF0b3IgZnVu
Y3Rpb24KQEAgLTI3MywxNSArMzk1LDE3IEBAIHNob3VsZCBiZSBhZGRlZCBiZWZvcmUgcmVnaXN0
ZXJpbmcgY29ycmVzcG9uZGluZyAqaG9va2ltcGxzKjoKICAgICBpbXBvcnQgc3lzCiAgICAgZnJv
bSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIsIEhvb2tzcGVjTWFya2VyCiAKLSAgICBob29r
c3BlYyA9IEhvb2tzcGVjTWFya2VyKCdteXByb2plY3QnKQorICAgIGhvb2tzcGVjID0gSG9va3Nw
ZWNNYXJrZXIoIm15cHJvamVjdCIpCisKIAogICAgIEBob29rc3BlYwogICAgIGRlZiBzZXR1cF9w
cm9qZWN0KGNvbmZpZywgYXJncyk6Ci0gICAgICAgICIiIlRoaXMgaG9vayBpcyB1c2VkIHRvIHBy
b2Nlc3MgdGhlIGluaXRhbCBjb25maWcgYW5kIGlucHV0CisgICAgICAgICIiIlRoaXMgaG9vayBp
cyB1c2VkIHRvIHByb2Nlc3MgdGhlIGluaXRpYWwgY29uZmlnIGFuZCBpbnB1dAogICAgICAgICBh
cmd1bWVudHMuCiAgICAgICAgICIiIgogCi0gICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCdteXByb2pl
Y3QnKQorCisgICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCJteXByb2plY3QiKQogCiAgICAgIyBsb2Fk
IGZyb20gdGhlIGxvY2FsIG1vZHVsZSdzIG5hbWVzcGFjZQogICAgIHBtLmFkZF9ob29rc3BlY3Mo
c3lzLm1vZHVsZXNbX19uYW1lX19dKQpAQCAtMzIzLDYgKzQ0Nyw3IEBAIEluIG90aGVyIHdvcmRz
IHRoaXMgaXMgb2s6CiAgICAgZGVmIG15aG9vayhjb25maWcsIGFyZ3MpOgogICAgICAgICBwYXNz
CiAKKwogICAgIEBob29raW1wbAogICAgIGRlZiBteWhvb2soYXJncyk6CiAgICAgICAgIHByaW50
KGFyZ3MpCkBAIC0zMzYsMTAgKzQ2MSwxNiBAQCB3aGVyZWFzIHRoaXMgaXMgbm90OgogICAgIGRl
ZiBteWhvb2soY29uZmlnLCBhcmdzKToKICAgICAgICAgcGFzcwogCisKICAgICBAaG9va2ltcGwK
ICAgICBkZWYgbXlob29rKGNvbmZpZywgYXJncywgZXh0cmFfYXJnKToKICAgICAgICAgcHJpbnQo
YXJncykKIAorLi4gbm90ZTo6CisgICAgVGhlIG9uZSBleGNlcHRpb24gdG8gdGhpcyBydWxlICh0
aGF0IGEgKmhvb2tzcGVjKiBtdXN0IGhhdmUgYXMgbGVhc3QgYXMKKyAgICBtYW55IGFyZ3VtZW50
cyBhcyBpdHMgKmhvb2tpbXBscyopIGlzIHRoZSBjb252ZW50aW9uYWwgOnJlZjpgc2VsZiA8cHl0
aG9uOnR1dC1yZW1hcmtzPmAgYXJnOyB0aGlzCisgICAgaXMgYWx3YXlzIGlnbm9yZWQgd2hlbiAq
aG9va2ltcGxzKiBhcmUgZGVmaW5lZCBhcyA6cmVmOmBtZXRob2RzIDxweXRob246dHV0LW1ldGhv
ZG9iamVjdHM+YC4KKwogLi4gX2ZpcnN0cmVzdWx0OgogCiBGaXJzdCByZXN1bHQgb25seQpAQCAt
MzU3LDE1ICs0ODgsMTYgQEAgdGhlbiBgYE5vbmVgYC4KIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Ig
b3B0aW1pemluZyBhIGNhbGwgbG9vcCBmb3Igd2hpY2ggeW91IGFyZSBvbmx5CiBpbnRlcmVzdGVk
IGluIGEgc2luZ2xlIGNvcmUgKmhvb2tpbXBsKi4gQW4gZXhhbXBsZSBpcyB0aGUKIGBweXRlc3Rf
Y21kbGluZV9tYWluYF8gY2VudHJhbCByb3V0aW5lIG9mIGBgcHl0ZXN0YGAuCitOb3RlIHRoYXQg
YWxsIGBgaG9va3dyYXBwZXJzYGAgYXJlIHN0aWxsIGludm9rZWQgd2l0aCB0aGUgZmlyc3QgcmVz
dWx0LgogCi1BbHNvIHNlZSB0aGUgYGZpcnN0IHJlc3VsdGBfIHNlY3Rpb24gaW4gdGhlIGBgcHl0
ZXN0YGAgZG9jcy4KK0Fsc28gc2VlIHRoZSA6cmVmOmBweXRlc3Q6Zmlyc3RyZXN1bHRgIHNlY3Rp
b24gaW4gdGhlIGBgcHl0ZXN0YGAgZG9jcy4KIAogLi4gX2hpc3RvcmljOgogCiBIaXN0b3JpYyBo
b29rcwogXl5eXl5eXl5eXl5eXl4KIFlvdSBjYW4gbWFyayBhICpob29rc3BlYyogYXMgYmVpbmcg
Kmhpc3RvcmljKiBtZWFuaW5nIHRoYXQgdGhlIGhvb2sKLWNhbiBiZSBjYWxsZWQgd2l0aCA6cHk6
bWV0aDpgfnBsdWdneS5QbHVnaW5NYW5hZ2VyLmNhbGxfaGlzdG9yaWMoKWAgKipiZWZvcmUqKgor
Y2FuIGJlIGNhbGxlZCB3aXRoIDpweTptZXRoOmB+cGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyLmNh
bGxfaGlzdG9yaWMoKWAgKipiZWZvcmUqKgogaGF2aW5nIGJlZW4gcmVnaXN0ZXJlZDoKIAogLi4g
Y29kZS1ibG9jazo6IHB5dGhvbgpAQCAtMzc1LDcgKzUwNyw3IEBAIGhhdmluZyBiZWVuIHJlZ2lz
dGVyZWQ6CiAgICAgICAgIHBhc3MKIAogVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgbGF0ZSByZWdp
c3RlcmVkICpob29raW1wbHMqIHdpbGwgYmUgY2FsbGVkIGJhY2sKLWltbWVkaWF0ZWx5IGF0IHJl
Z2lzdGVyIHRpbWUgYW5kICoqY2FuIG5vdCoqIHJldHVybiBhIHJlc3VsdCB0byB0aGUgY2FsbGVy
LioqCitpbW1lZGlhdGVseSBhdCByZWdpc3RlciB0aW1lIGFuZCAqKmNhbiBub3QqKiByZXR1cm4g
YSByZXN1bHQgdG8gdGhlIGNhbGxlci4KIAogVGhpcyB0dXJucyBvdXQgdG8gYmUgcGFydGljdWxh
cmx5IHVzZWZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBsYXp5IG9yCiBkeW5hbWljYWxseSBsb2FkZWQg
cGx1Z2lucy4KQEAgLTM4Myw1NyArNTE1LDU2IEBAIGR5bmFtaWNhbGx5IGxvYWRlZCBwbHVnaW5z
LgogRm9yIG1vcmUgaW5mbyBzZWUgOnJlZjpgY2FsbF9oaXN0b3JpY2AuCiAKIAotLi4gbGlua3MK
LS4uIF9AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcjoKLSAgICBodHRwczovL2RvY3MucHl0aG9u
Lm9yZy8zLjYvbGlicmFyeS9jb250ZXh0bGliLmh0bWwjY29udGV4dGxpYi5jb250ZXh0bWFuYWdl
cgotLi4gX3B5dGVzdF9jbWRsaW5lX21haW46Ci0gICAgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2Jsb2IvbWFzdGVyL19weXRlc3QvaG9va3NwZWMucHkjTDgwCi0uLiBfaG9v
a3NwZWMgbW9kdWxlOgotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9i
bG9iL21hc3Rlci9fcHl0ZXN0L2hvb2tzcGVjLnB5Ci0uLiBfV3JpdGluZyBob29rIGZ1bmN0aW9u
czoKLSAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dyaXRpbmdfcGx1Z2lucy5o
dG1sI3dyaXRpbmctaG9vay1mdW5jdGlvbnMKLS4uIF9ob29rd3JhcHBlcjoKLSAgICBodHRwOi8v
ZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dyaXRpbmdfcGx1Z2lucy5odG1sI2hvb2t3cmFwcGVy
LWV4ZWN1dGluZy1hcm91bmQtb3RoZXItaG9va3MKLS4uIF9ob29rIGZ1bmN0aW9uIG9yZGVyaW5n
OgotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvd3JpdGluZ19wbHVnaW5zLmh0
bWwjaG9vay1mdW5jdGlvbi1vcmRlcmluZy1jYWxsLWV4YW1wbGUKLS4uIF9maXJzdCByZXN1bHQ6
Ci0gICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC93cml0aW5nX3BsdWdpbnMuaHRt
bCNmaXJzdHJlc3VsdC1zdG9wLWF0LWZpcnN0LW5vbi1ub25lLXJlc3VsdAotLi4gX3NlbnQ6Ci0g
ICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMuaHRtbCNn
ZW5lcmF0b3Iuc2VuZAorV2FybmluZ3Mgb24gaG9vayBpbXBsZW1lbnRhdGlvbgorXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitBcyBwcm9qZWN0cyBldm9sdmUgbmV3IGhvb2tzIG1h
eSBiZSBpbnRyb2R1Y2VkIGFuZC9vciBkZXByZWNhdGVkLgorCitpZiBhIGhvb2tzcGVjIHNwZWNp
ZmllcyBhIGBgd2Fybl9vbl9pbXBsYGAsIHBsdWdneSB3aWxsIHRyaWdnZXIgaXQgZm9yIGFueSBw
bHVnaW4gaW1wbGVtZW50aW5nIHRoZSBob29rLgorCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
KworICAgIEBob29rc3BlYygKKyAgICAgICAgd2Fybl9vbl9pbXBsPURlcHJlY2F0aW9uV2Fybmlu
Zygib2xkaG9vayBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbiIpCisgICAg
KQorICAgIGRlZiBvbGRob29rKCk6CisgICAgICAgIHBhc3MKIAogLi4gX21hbmFnZToKIAotVGhl
IFBsdWdpbiBSZWdpc3RyeQorVGhlIFBsdWdpbiByZWdpc3RyeQogKioqKioqKioqKioqKioqKioq
KgogYGBwbHVnZ3lgYCBtYW5hZ2VzIHBsdWdpbnMgdXNpbmcgaW5zdGFuY2VzIG9mIHRoZQogOnB5
OmNsYXNzOmBwbHVnZ3kuUGx1Z2luTWFuYWdlcmAuCiAKLUEgYGBQbHVnaW5NYW5hZ2VyYGAgaXMg
aW5zdGFudGlhdGVkIHdpdGggYSBzaW5nbGUKK0EgOnB5OmNsYXNzOmB+cGx1Z2d5LlBsdWdpbk1h
bmFnZXJgIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgc2luZ2xlCiBgYHN0cmBgIGFyZ3VtZW50LCB0
aGUgYGBwcm9qZWN0X25hbWVgYDoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1w
b3J0IHBsdWdneQotICAgIHBtID0gcGx1Z2d5LlBsdWdpbk1hbmFnZXIoJ215X3Byb2plY3RfbmFt
ZScpCisKKyAgICBwbSA9IHBsdWdneS5QbHVnaW5NYW5hZ2VyKCJteV9wcm9qZWN0X25hbWUiKQog
CiAKLVRoZSBgYHByb2plY3RfbmFtZWBgIHZhbHVlIGlzIHVzZWQgd2hlbiBhIGBgUGx1Z2luTWFu
YWdlcmBgIHNjYW5zIGZvciAqaG9vayoKLWZ1bmN0aW9ucyA6cmVmOmBkZWZpbmVkIG9uIGEgcGx1
Z2luIDxkZWZpbmU+YC4KLVRoaXMgYWxsb3dzIGZvciBtdWx0aXBsZQotcGx1Z2luIG1hbmFnZXJz
IGZyb20gbXVsdGlwbGUgcHJvamVjdHMgdG8gZGVmaW5lIGhvb2tzIGFsb25nc2lkZSBlYWNoIG90
aGVyLgorVGhlIGBgcHJvamVjdF9uYW1lYGAgdmFsdWUgaXMgdXNlZCB3aGVuIGEgOnB5OmNsYXNz
OmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXJgCitzY2FucyBmb3IgKmhvb2sqIGZ1bmN0aW9ucyA6cmVm
OmBkZWZpbmVkIG9uIGEgcGx1Z2luIDxkZWZpbmU+YC4KK1RoaXMgYWxsb3dzIGZvciBtdWx0aXBs
ZSBwbHVnaW4gbWFuYWdlcnMgZnJvbSBtdWx0aXBsZSBwcm9qZWN0cwordG8gZGVmaW5lIGhvb2tz
IGFsb25nc2lkZSBlYWNoIG90aGVyLgogCiAKIFJlZ2lzdHJhdGlvbgogLS0tLS0tLS0tLS0tCi1F
YWNoIGBgUGx1Z2luTWFuYWdlcmBgIG1haW50YWlucyBhICpwbHVnaW4qIHJlZ2lzdHJ5IHdoZXJl
IGVhY2ggKnBsdWdpbioKK0VhY2ggOnB5OmNsYXNzOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXJgIG1h
aW50YWlucyBhICpwbHVnaW4qIHJlZ2lzdHJ5IHdoZXJlIGVhY2ggKnBsdWdpbioKIGNvbnRhaW5z
IGEgc2V0IG9mICpob29raW1wbCogZGVmaW5pdGlvbnMuIExvYWRpbmcgKmhvb2tpbXBsKiBhbmQg
Kmhvb2tzcGVjKgogZGVmaW5pdGlvbnMgdG8gcG9wdWxhdGUgdGhlIHJlZ2lzdHJ5IGlzIGRlc2Ny
aWJlZCBpbiBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24KIDpyZWY6YGRlZmluZWAuCiAKIEluIHN1
bW1hcnksIHlvdSBwYXNzIGEgcGx1Z2luIG5hbWVzcGFjZSBvYmplY3QgdG8gdGhlCiA6cHk6bWV0
aDpgfnBsdWdneS5QbHVnaW5NYW5hZ2VyLnJlZ2lzdGVyKClgIGFuZAotOnB5Om1ldGg6YH5wbHVn
Z3kuUGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWMoKWAgbWV0aG9kcyB0byBjb2xsZWN0Ci1ob29r
ICppbXBsZW1lbnRhdGlvbnMqIGFuZCAqc3BlY2ZpY2F0aW9ucyogZnJvbSAqcGx1Z2luKiBuYW1l
c3BhY2VzIHJlc3BlY3RpdmVseS4KKzpweTptZXRoOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXIuYWRk
X2hvb2tzcGVjcygpYCBtZXRob2RzIHRvIGNvbGxlY3QKK2hvb2sgKmltcGxlbWVudGF0aW9ucyog
YW5kICpzcGVjaWZpY2F0aW9ucyogZnJvbSAqcGx1Z2luKiBuYW1lc3BhY2VzIHJlc3BlY3RpdmVs
eS4KIAogWW91IGNhbiB1bnJlZ2lzdGVyIGFueSAqcGx1Z2luKidzIGhvb2tzIHVzaW5nCiA6cHk6
bWV0aDpgfnBsdWdneS5QbHVnaW5NYW5hZ2VyLnVucmVnaXN0ZXIoKWAgYW5kIGNoZWNrIGlmIGEg
cGx1Z2luIGlzCkBAIC00NDIsMTEgKzU3MywxMiBAQCByZWdpc3RlcmVkIGJ5IHBhc3NpbmcgaXRz
IG5hbWUgdG8gdGhlCiAKIExvYWRpbmcgYGBzZXR1cHRvb2xzYGAgZW50cnkgcG9pbnRzCiBeXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgotWW91IGNhbiBhdXRvbWF0aWNhbGx5IGxv
YWQgcGx1Z2lucyByZWdpc3RlcmVkIHRocm91Z2ggYHNldHVwdG9vbHMgZW50cnkgcG9pbnRzYF8K
K1lvdSBjYW4gYXV0b21hdGljYWxseSBsb2FkIHBsdWdpbnMgcmVnaXN0ZXJlZCB0aHJvdWdoCis6
cmVmOmBzZXR1cHRvb2xzIGVudHJ5IHBvaW50cyA8c2V0dXB0b29sczplbnRyeSBwb2ludHM+YAog
d2l0aCB0aGUgOnB5Om1ldGg6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlci5sb2FkX3NldHVwdG9vbHNf
ZW50cnlwb2ludHMoKWAKIG1ldGhvZC4KIAotQW4gZXhhbXBsZSB1c2Ugb2YgdGhpcyBpcyB0aGUg
YHB5dGVzdCBlbnRyeSBwb2ludGBfLgorQW4gZXhhbXBsZSB1c2Ugb2YgdGhpcyBpcyB0aGUgOnJl
ZjpgcHl0ZXN0IGVudHJ5IHBvaW50IDxweXRlc3Q6cGlwLWluc3RhbGxhYmxlIHBsdWdpbnM+YC4K
IAogCiBCbG9ja2luZwpAQCAtNDU4LDcgKzU5MCw3IEBAIFlvdSBjYW4gYmxvY2sgYW55IHBsdWdp
biBmcm9tIGJlaW5nIHJlZ2lzdGVyZWQgdXNpbmcKIAogSW5zcGVjdGlvbgogLS0tLS0tLS0tLQot
WW91IGNhbiB1c2UgYSB2YXJpZXR5IG9mIG1ldGhvZHMgdG8gaW5zcGVjdCB0aGUgYm90aCB0aGUg
cmVnaXN0cnkKK1lvdSBjYW4gdXNlIGEgdmFyaWV0eSBvZiBtZXRob2RzIHRvIGluc3BlY3QgYm90
aCB0aGUgcmVnaXN0cnkKIGFuZCBwYXJ0aWN1bGFyIHBsdWdpbnMgaW4gaXQ6CiAKIC0gOnB5Om1l
dGg6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlci5saXN0X25hbWVfcGx1Z2luKClgIC0KQEAgLTQ3Nywy
OCArNjA5LDIyIEBAIFlvdSBjYW4gcmV0cmlldmUgdGhlICpvcHRpb25zKiBhcHBsaWVkIHRvIGEg
cGFydGljdWxhcgogOnB5Om1ldGg6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlci5wYXJzZV9ob29rc3Bl
Y19vcHRzKClgIGFuZAogOnB5Om1ldGg6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlci5wYXJzZV9ob29r
aW1wbF9vcHRzKClgIHJlc3BlY3RpdmVseS4KIAotLi4gbGlua3MKLS4uIF9zZXR1cHRvb2xzIGVu
dHJ5IHBvaW50czoKLSAgICBodHRwOi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRl
c3Qvc2V0dXB0b29scy5odG1sI2R5bmFtaWMtZGlzY292ZXJ5LW9mLXNlcnZpY2VzLWFuZC1wbHVn
aW5zCi0uLiBfcHl0ZXN0IGVudHJ5IHBvaW50OgotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9l
bi9sYXRlc3Qvd3JpdGluZ19wbHVnaW5zLmh0bWwjc2V0dXB0b29scy1lbnRyeS1wb2ludHMKLQog
CiAuLiBfY2FsbGluZzoKIAotQ2FsbGluZyBIb29rcworQ2FsbGluZyBob29rcwogKioqKioqKioq
KioqKgogVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiBgYHBsdWdneWBgIGVuYWJsZXMgYW4gZXh0
ZW5zaW9uIHByb3ZpZGVyCiB0byBvdmVycmlkZSBmdW5jdGlvbiBjYWxscyBtYWRlIGF0IGNlcnRh
aW4gcG9pbnRzIHRocm91Z2hvdXQgYSBwcm9ncmFtLgogCiBBIHBhcnRpY3VsYXIgKmhvb2sqIGlz
IGludm9rZWQgYnkgY2FsbGluZyBhbiBpbnN0YW5jZSBvZgotYSA6cHk6Y2xhc3M6YHBsdWdneS5f
SG9va0NhbGxlcmAgd2hpY2ggaW4gdHVybiAqbG9vcHMqIHRocm91Z2ggdGhlCithIDpweTpjbGFz
czpgcGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyYCB3aGljaCBpbiB0dXJuICpsb29wcyogdGhyb3Vn
aCB0aGUKIGBgMTpOYGAgcmVnaXN0ZXJlZCAqaG9va2ltcGxzKiBhbmQgY2FsbHMgdGhlbSBpbiBz
ZXF1ZW5jZS4KIAotRXZlcnkgOnB5OmNsYXNzOmBwbHVnZ3kuUGx1Z2luTWFuYWdlcmAgaGFzIGEg
YGBob29rYGAgYXR0cmlidXRlCi13aGljaCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIDpweTpjbGFz
czpgcGx1Z2d5Ll9Ib29rUmVsYXlgLgotVGhlIGBgX0hvb2tSZWxheWBgIGl0c2VsZiBjb250YWlu
cyByZWZlcmVuY2VzIChieSBob29rIG5hbWUpIHRvIGVhY2gKLXJlZ2lzdGVyZWQgKmhvb2tpbXBs
KidzIGBgX0hvb2tDYWxsZXJgYCBpbnN0YW5jZS4KK0V2ZXJ5IDpweTpjbGFzczpgfnBsdWdneS5Q
bHVnaW5NYW5hZ2VyYCBoYXMgYSBgYGhvb2tgYCBhdHRyaWJ1dGUKK3doaWNoIGlzIGFuIGluc3Rh
bmNlIG9mIHRoaXMgOnB5OmNsYXNzOmBwbHVnZ3kuaG9va3MuX0hvb2tSZWxheWAuCitUaGUgOnB5
OmNsYXNzOmB+cGx1Z2d5Lmhvb2tzLl9Ib29rUmVsYXlgIGl0c2VsZiBjb250YWlucyByZWZlcmVu
Y2VzCisoYnkgaG9vayBuYW1lKSB0byBlYWNoIHJlZ2lzdGVyZWQgKmhvb2tpbXBsKidzIDpweTpj
bGFzczpgfnBsdWdneS5ob29rcy5fSG9va0NhbGxlcmAgaW5zdGFuY2UuCiAKIE1vcmUgcHJhY3Rp
Y2FsbHkgeW91IGNhbGwgYSAqaG9vayogbGlrZSBzbzoKIApAQCAtNTE3LDcgKzY0Myw3IEBAIE1v
cmUgcHJhY3RpY2FsbHkgeW91IGNhbGwgYSAqaG9vayogbGlrZSBzbzoKICAgICAjIHdlIGludm9r
ZSB0aGUgX0hvb2tDYWxsZXIgYW5kIHRodXMgYWxsIHVuZGVybHlpbmcgaG9va2ltcGxzCiAgICAg
cmVzdWx0X2xpc3QgPSBwbS5ob29rLm15aG9vayhjb25maWc9Y29uZmlnLCBhcmdzPXN5cy5hcmd2
KQogCi1Ob3RlIHRoYXQgeW91ICoqbXVzdCoqIGNhbGwgaG9va3MgdXNpbmcga2V5d29yZCBgYXJn
dW1lbnRzYF8gc3ludGF4IQorTm90ZSB0aGF0IHlvdSAqKm11c3QqKiBjYWxsIGhvb2tzIHVzaW5n
IGtleXdvcmQgOnN0ZDp0ZXJtOmBweXRob246YXJndW1lbnRgIHN5bnRheCEKIAogSG9vayBpbXBs
ZW1lbnRhdGlvbnMgYXJlIGNhbGxlZCBpbiBMSUZPIHJlZ2lzdGVyZWQgb3JkZXI6ICp0aGUgbGFz
dAogcmVnaXN0ZXJlZCBwbHVnaW4ncyBob29rcyBhcmUgY2FsbGVkIGZpcnN0Ki4gQXMgYW4gZXhh
bXBsZSwgdGhlIGJlbG93CkBAIC01MjcsMjcgKzY1MywzNCBAQCBhc3NlcnRpb24gc2hvdWxkIG5v
dCBlcnJvcjoKIAogICAgIGZyb20gcGx1Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBIb29raW1w
bE1hcmtlcgogCi0gICAgaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcignbXlwcm9qZWN0JykKKyAg
ICBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJteXByb2plY3QiKQorCiAKICAgICBjbGFzcyBQ
bHVnaW4xKG9iamVjdCk6CisgICAgICAgIEBob29raW1wbAogICAgICAgICBkZWYgbXlob29rKHNl
bGYsIGFyZ3MpOgogICAgICAgICAgICAgIiIiRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgcmV0dXJuIDEKIAorCiAgICAgY2xhc3MgUGx1Z2luMihv
YmplY3QpOgorICAgICAgICBAaG9va2ltcGwKICAgICAgICAgZGVmIG15aG9vayhzZWxmLCBhcmdz
KToKICAgICAgICAgICAgICIiIkRlZmF1bHQgaW1wbGVtZW50YXRpb24uCiAgICAgICAgICAgICAi
IiIKICAgICAgICAgICAgIHJldHVybiAyCiAKKwogICAgIGNsYXNzIFBsdWdpbjMob2JqZWN0KToK
KyAgICAgICAgQGhvb2tpbXBsCiAgICAgICAgIGRlZiBteWhvb2soc2VsZiwgYXJncyk6CiAgICAg
ICAgICAgICAiIiJEZWZhdWx0IGltcGxlbWVudGF0aW9uLgogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICByZXR1cm4gMwogCi0gICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCdteXByb2plY3QnKQor
CisgICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCJteXByb2plY3QiKQogICAgIHBtLnJlZ2lzdGVyKFBs
dWdpbjEoKSkKICAgICBwbS5yZWdpc3RlcihQbHVnaW4yKCkpCiAgICAgcG0ucmVnaXN0ZXIoUGx1
Z2luMygpKQpAQCAtNTYyLDExICs2OTUsNjcgQEAgd2hpY2ggcmV0dXJucyBhIHZhbHVlIG90aGVy
IHRoZW4gYSBgYE5vbmVgYCByZXN1bHQgd2lsbCBoYXZlIHRoYXQgcmVzdWx0CiBhcHBlbmRlZCB0
byBhIDpweTpjbGFzczpgbGlzdGAgd2hpY2ggaXMgcmV0dXJuZWQgYnkgdGhlIGNhbGwuCiAKIFRo
ZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIGJlaGF2aW91ciBpcyBpZiB0aGUgaG9vayBoYXMgYmVl
biBtYXJrZWQgdG8gcmV0dXJuCi1pdHMgOnJlZjpgZmlyc3RyZXN1bHRgIGluIHdoaWNoIGNhc2Ug
b25seSB0aGUgZmlyc3Qgc2luZ2xlIHZhbHVlICh3aGljaCBpcyBub3QKLWBgTm9uZWBgKSB3aWxs
IGJlIHJldHVybmVkLgoraXRzIDpyZWY6YGZpcnN0IHJlc3VsdCBvbmx5IDxmaXJzdHJlc3VsdD5g
IGluIHdoaWNoIGNhc2Ugb25seSB0aGUgZmlyc3QKK3NpbmdsZSB2YWx1ZSAod2hpY2ggaXMgbm90
IGBgTm9uZWBgKSB3aWxsIGJlIHJldHVybmVkLgogCiAuLiBfY2FsbF9oaXN0b3JpYzoKIAorRXhj
ZXB0aW9uIGhhbmRsaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KK0lmIGFueSAqaG9va2ltcGwqIGVy
cm9ycyB3aXRoIGFuIGV4Y2VwdGlvbiBubyBmdXJ0aGVyIGNhbGxiYWNrcworYXJlIGludm9rZWQg
YW5kIHRoZSBleGNlcHRpb24gaXMgcGFja2FnZWQgdXAgYW5kIGRlbGl2ZXJlZCB0bworYW55IDpy
ZWY6YHdyYXBwZXJzIDxob29rd3JhcHBlcnM+YCBiZWZvcmUgYmVpbmcgcmUtcmFpc2VkIGF0IHRo
ZQoraG9vayBpbnZvY2F0aW9uIHBvaW50OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAg
ICBmcm9tIHBsdWdneSBpbXBvcnQgUGx1Z2luTWFuYWdlciwgSG9va2ltcGxNYXJrZXIKKworICAg
IGhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoIm15cHJvamVjdCIpCisKKworICAgIGNsYXNzIFBs
dWdpbjEob2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBteWhvb2soc2Vs
ZiwgYXJncyk6CisgICAgICAgICAgICByZXR1cm4gMQorCisKKyAgICBjbGFzcyBQbHVnaW4yKG9i
amVjdCk6CisgICAgICAgIEBob29raW1wbAorICAgICAgICBkZWYgbXlob29rKHNlbGYsIGFyZ3Mp
OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKworICAgIGNsYXNzIFBsdWdpbjMo
b2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBteWhvb2soc2VsZiwgYXJn
cyk6CisgICAgICAgICAgICByZXR1cm4gMworCisKKyAgICBAaG9va2ltcGwoaG9va3dyYXBwZXI9
VHJ1ZSkKKyAgICBkZWYgbXlob29rKHNlbGYsIGFyZ3MpOgorICAgICAgICBvdXRjb21lID0geWll
bGQKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRjb21lLmdldF9yZXN1bHQoKQorICAg
ICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgIyBsb2cgdGhlIGVycm9yIGRl
dGFpbHMKKyAgICAgICAgICAgIHByaW50KG91dGNvbWUuZXhjaW5mbykKKworCisgICAgcG0gPSBQ
bHVnaW5NYW5hZ2VyKCJteXByb2plY3QiKQorCisgICAgIyByZWdpc3RlciBwbHVnaW5zCisgICAg
cG0ucmVnaXN0ZXIoUGx1Z2luMSgpKQorICAgIHBtLnJlZ2lzdGVyKFBsdWdpbjIoKSkKKyAgICBw
bS5yZWdpc3RlcihQbHVnaW4zKCkpCisKKyAgICAjIHJlZ2lzdGVyIHdyYXBwZXIKKyAgICBwbS5y
ZWdpc3RlcihzeXMubW9kdWxlc1tfX25hbWVfX10pCisKKyAgICAjIHRoaXMgcmFpc2VzIFJ1bnRp
bWVFcnJvciBkdWUgdG8gUGx1Z2luMgorICAgIHBtLmhvb2subXlob29rKGFyZ3M9KCkpCisKIEhp
c3RvcmljIGNhbGxzCiAtLS0tLS0tLS0tLS0tLQogQSAqaGlzdG9yaWMgY2FsbCogYWxsb3dzIGZv
ciBhbGwgbmV3bHkgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgdG8gcmVjZWl2ZSBhbGwgaG9vawpAQCAt
NTc1LDQ2ICs3NjQsNTYgQEAgb25seSB1c2VmdWwgaWYgeW91IGV4cGVjdCB0aGF0IHNvbWUgKmhv
b2tpbXBscyogbWF5IGJlIHJlZ2lzdGVyZWQgKiphZnRlcioqIHRoZQogaG9vayBpcyBpbml0aWFs
bHkgaW52b2tlZC4KIAogSGlzdG9yaWMgaG9va3MgbXVzdCBiZSA6cmVmOmBzcGVjaWFsbHkgbWFy
a2VkIDxoaXN0b3JpYz5gIGFuZCBjYWxsZWQKLXVzaW5nIHRoZSA6cHk6bWV0aDpgcGx1Z2d5Ll9I
b29rQ2FsbGVyLmNhbGxfaGlzdG9yaWMoKWAgbWV0aG9kOgordXNpbmcgdGhlIDpweTptZXRoOmB+
cGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyLmNhbGxfaGlzdG9yaWMoKWAgbWV0aG9kOgogCiAuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCiAKKyAgICBkZWYgY2FsbGJhY2socmVzdWx0KToKKyAgICAgICAg
cHJpbnQoImhpc3RvcmljIGNhbGwgcmVzdWx0IGlzIHtyZXN1bHR9Ii5mb3JtYXQocmVzdWx0PXJl
c3VsdCkpCisKKwogICAgICMgY2FsbCB3aXRoIGhpc3Rvcnk7IG5vIHJlc3VsdHMgcmV0dXJuZWQK
LSAgICBwbS5ob29rLm15aG9vay5jYWxsX2hpc3RvcmljKGNvbmZpZz1jb25maWcsIGFyZ3M9c3lz
LmFyZ3YpCisgICAgcG0uaG9vay5teWhvb2suY2FsbF9oaXN0b3JpYygKKyAgICAgICAga3dhcmdz
PXsiY29uZmlnIjogY29uZmlnLCAiYXJncyI6IHN5cy5hcmd2fSwgcmVzdWx0X2NhbGxiYWNrPWNh
bGxiYWNrCisgICAgKQogCiAgICAgIyAuLi4gbW9yZSBvZiBvdXIgcHJvZ3JhbSAuLi4KIAogICAg
ICMgbGF0ZSBsb2FkaW5nIG9mIHNvbWUgcGx1Z2luCiAgICAgaW1wb3J0IG15bGF0ZXBsdWdpbgog
Ci0gICAgIyBoaXN0b3JpYyBjYWxsIGJhY2sgaXMgZG9uZSBoZXJlCisgICAgIyBoaXN0b3JpYyBj
YWxsYmFjayBpcyBpbnZva2VkIGhlcmUKICAgICBwbS5yZWdpc3RlcihteWxhdGVwbHVnaW4pCiAK
LU5vdGUgdGhhdCBpZiB5b3UgYGBjYWxsX2hpc3RvcmljKClgYCB0aGUgYGBfSG9va0NhbGxlcmBg
IChhbmQgdGh1cyB5b3VyCi1jYWxsaW5nIGNvZGUpIGNhbiBub3QgcmVjZWl2ZSByZXN1bHRzIGJh
Y2sgZnJvbSB0aGUgdW5kZXJseWluZyAqaG9va2ltcGwqCi1mdW5jdGlvbnMuCitOb3RlIHRoYXQg
aWYgeW91IDpweTptZXRoOmB+cGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyLmNhbGxfaGlzdG9yaWMo
KWAKK3RoZSA6cHk6Y2xhc3M6YH5wbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXJgIChhbmQgdGh1cyB5
b3VyIGNhbGxpbmcgY29kZSkKK2NhbiBub3QgcmVjZWl2ZSByZXN1bHRzIGJhY2sgZnJvbSB0aGUg
dW5kZXJseWluZyAqaG9va2ltcGwqIGZ1bmN0aW9ucy4KK0luc3RlYWQgeW91IGNhbiBwcm92aWRl
IGEgKmNhbGxiYWNrKiBmb3IgcHJvY2Vzc2luZyByZXN1bHRzIChsaWtlIHRoZQorYGBjYWxsYmFj
a2BgIGZ1bmN0aW9uIGFib3ZlKSB3aGljaCB3aWxsIGJlIGNhbGxlZCBhcyBlYWNoIG5ldyBwbHVn
aW4KK2lzIHJlZ2lzdGVyZWQuCisKKy4uIG5vdGU6OgorICAgICpoaXN0b3JpYyogY2FsbHMgYXJl
IGluY29tcGF0aWJsZSB3aXRoIDpyZWY6YGZpcnN0cmVzdWx0YCBtYXJrZWQKKyAgICBob29rcyBz
aW5jZSBvbmx5IHRoZSBmaXJzdCByZWdpc3RlcmVkIHBsdWdpbidzIGhvb2socykgd291bGQKKyAg
ICBldmVyIGJlIGNhbGxlZC4KIAogQ2FsbGluZyB3aXRoIGV4dHJhcwogLS0tLS0tLS0tLS0tLS0t
LS0tLQogWW91IGNhbiBjYWxsIGEgaG9vayB3aXRoIHRlbXBvcmFyaWx5IHBhcnRpY2lwYXRpbmcg
KmltcGxlbWVudGF0aW9uKiBmdW5jdGlvbnMKICh0aGF0IGFyZW4ndCBpbiB0aGUgcmVnaXN0cnkp
IHVzaW5nIHRoZQotOnB5Om1ldGg6YHBsdWdneS5fSG9va0NhbGxlci5jYWxsX2V4dHJhKClgIG1l
dGhvZC4KKzpweTptZXRoOmBwbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXIuY2FsbF9leHRyYSgpYCBt
ZXRob2QuCiAKIAogQ2FsbGluZyB3aXRoIGEgc3Vic2V0IG9mIHJlZ2lzdGVyZWQgcGx1Z2lucwog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogWW91IGNhbiBtYWtl
IGEgY2FsbCB1c2luZyBhIHN1YnNldCBvZiBwbHVnaW5zIGJ5IGFza2luZyB0aGUKLWBgUGx1Z2lu
TWFuYWdlcmBgIGZpcnN0IGZvciBhIGBgX0hvb2tDYWxsZXJgYCB3aXRoIHRob3NlIHBsdWdpbnMg
cmVtb3ZlZAorOnB5OmNsYXNzOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXJgIGZpcnN0IGZvciBhCis6
cHk6Y2xhc3M6YH5wbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXJgIHdpdGggdGhvc2UgcGx1Z2lucyBy
ZW1vdmVkCiB1c2luZyB0aGUgOnB5Om1ldGg6YHBsdWdneS5QbHVnaW5NYW5hZ2VyLnN1YnNldF9o
b29rX2NhbGxlcigpYCBtZXRob2QuCiAKLVlvdSB0aGVuIGNhbiB1c2UgdGhhdCBgYF9Ib29rQ2Fs
bGVyYGAgdG8gbWFrZSBub3JtYWwsIGBgY2FsbF9oaXN0b3JpYygpYGAsCi1vciBgYGNhbGxfZXh0
cmEoKWBgIGNhbGxzIGFzIG5lY2Vzc2FyeS4KLQotCi0uLiBsaW5rcwotLi4gX2FyZ3VtZW50czoK
LSAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2dsb3NzYXJ5Lmh0bWwjdGVybS1hcmd1bWVu
dAotCitZb3UgdGhlbiBjYW4gdXNlIHRoYXQgOnB5OmNsYXNzOmBfSG9va0NhbGxlciA8cGx1Z2d5
Lmhvb2tzLl9Ib29rQ2FsbGVyPmAKK3RvIG1ha2Ugbm9ybWFsLCA6cHk6bWV0aDpgfnBsdWdneS5o
b29rcy5fSG9va0NhbGxlci5jYWxsX2hpc3RvcmljYCwgb3IKKzpweTptZXRoOmB+cGx1Z2d5Lmhv
b2tzLl9Ib29rQ2FsbGVyLmNhbGxfZXh0cmFgIGNhbGxzIGFzIG5lY2Vzc2FyeS4KIAogQnVpbHQt
aW4gdHJhY2luZwogKioqKioqKioqKioqKioqKgpAQCAtNjMwLDcgKzgyOSw3IEBAIHVuZG8gZnVu
Y3Rpb24gdG8gZGlzYWJsZSB0aGUgYmVoYXZpb3VyLgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKLSAgICBwbSA9IFBsdWdpbk1hbmFnZXIoJ215cHJvamVjdCcpCisgICAgcG0gPSBQbHVnaW5N
YW5hZ2VyKCJteXByb2plY3QiKQogICAgICMgbWFnaWMgbGluZSB0byBzZXQgYSB3cml0ZXIgZnVu
Y3Rpb24KICAgICBwbS50cmFjZS5yb290LnNldHdyaXRlcihwcmludCkKICAgICB1bmRvID0gcG0u
ZW5hYmxlX3RyYWNpbmcoKQpAQCAtNjQ5LDYgKzg0OCw3IEBAIFRoZSBleHBlY3RlZCBzaWduYXR1
cmUgYW5kIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGVzZSBmdW5jdGlvbnMgaXM6CiAg
ICAgZGVmIGJlZm9yZShob29rX25hbWUsIG1ldGhvZHMsIGt3YXJncyk6CiAgICAgICAgIHBhc3MK
IAorCiAgICAgZGVmIGFmdGVyKG91dGNvbWUsIGhvb2tfbmFtZSwgbWV0aG9kcywga3dhcmdzKToK
ICAgICAgICAgcGFzcwogCkBAIC02NjMsNiArODYzLDE5IEBAIHByb2plY3RzIHJlbHkgb24gaXQu
IE91ciBHaXRodWIgaW50ZWdyYXRlZCBDSSBwcm9jZXNzIHJ1bnMgdGhlIGZ1bGwKIGB0b3ggdGVz
dCBzdWl0ZWBfIG9uIGVhY2ggY29tbWl0IHNvIGJlIHN1cmUgeW91ciBjaGFuZ2VzIGNhbiBydW4g
b24KIGFsbCByZXF1aXJlZCBgUHl0aG9uIGludGVycHJldGVyc2BfIGFuZCBgYHB5dGVzdGBgIHZl
cnNpb25zLgogCitGb3IgZGV2ZWxvcG1lbnQsIHdlIHN1Z2dlc3QgdG8gY3JlYXRlIGEgdmlydHVh
bCBlbnZpcm9ubWVudCBhbmQgaW5zdGFsbCBgYHBsdWdneWBgIGluCitlZGl0YWJsZSBtb2RlIGFu
ZCBgYGRldmBgIGRlcGVuZGVuY2llczo6CisKKyAgICAkIHB5dGhvbjMgLW0gdmVudiAuZW52Cisg
ICAgJCBzb3VyY2UgLmVudi9iaW4vYWN0aXZhdGUKKyAgICAkIHBpcCBpbnN0YWxsIC1lIC5bZGV2
XQorCitUbyBtYWtlIHN1cmUgeW91IGZvbGxvdyB0aGUgY29kZSBzdHlsZSB1c2VkIGluIHRoZSBw
cm9qZWN0LCBpbnN0YWxsIHByZS1jb21taXRfIHdoaWNoCit3aWxsIHJ1biBzdHlsZSBjaGVja3Mg
YmVmb3JlIGVhY2ggY29tbWl0OjoKKworICAgICQgcHJlLWNvbW1pdCBpbnN0YWxsCisKKwogUmVs
ZWFzZSBQb2xpY3kKICoqKioqKioqKioqKioqCiBQbHVnZ3kgdXNlcyBgU2VtYW50aWMgVmVyc2lv
bmluZ2BfLiBCcmVha2luZyBjaGFuZ2VzIGFyZSBvbmx5IGZvcmVzZWVuIGZvcgpAQCAtNjcxLDMx
ICs4ODQsNDQgQEAgaW4geW91ciBwcm9qZWN0IHlvdSBzaG91bGQgdGh1cyB1c2UgYSBkZXBlbmRl
bmN5IHJlc3RyaWN0aW9uIGxpa2UKIGBgInBsdWdneT49MC4xLjAsPDEuMCJgYCB0byBhdm9pZCBz
dXJwcmlzZXMuCiAKIAorVGFibGUgb2YgY29udGVudHMKKyoqKioqKioqKioqKioqKioqCisKKy4u
IHRvY3RyZWU6OgorICAgIDptYXhkZXB0aDogMgorCisgICAgYXBpX3JlZmVyZW5jZQorICAgIGNo
YW5nZWxvZworCisKKwogLi4gaHlwZXJsaW5rcwotLi4gX3B5dGVzdDoKLSAgICBodHRwOi8vcHl0
ZXN0Lm9yZworLi4gX3B5dGVzdF9jbWRsaW5lX21haW46CisgICAgaHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vbGF0ZXN0L19tb2R1bGVzL19weXRlc3QvaG9va3NwZWMuaHRtbCNweXRlc3RfY21k
bGluZV9tYWluCisuLiBfaG9va3NwZWMgbW9kdWxlOgorICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL2xhdGVzdC9fbW9kdWxlcy9fcHl0ZXN0L2hvb2tzcGVjLmh0bWwKKy4uIF9ob29rd3Jh
cHBlcjoKKyAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dyaXRpbmdfcGx1Z2lu
cy5odG1sI2hvb2t3cmFwcGVyLWV4ZWN1dGluZy1hcm91bmQtb3RoZXItaG9va3MKKy4uIF9ob29r
IGZ1bmN0aW9uIG9yZGVyaW5nOgorICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qv
d3JpdGluZ19wbHVnaW5zLmh0bWwjaG9vay1mdW5jdGlvbi1vcmRlcmluZy1jYWxsLWV4YW1wbGUK
IC4uIF9yZXF1ZXN0LXJlc3BvbnNlIHBhdHRlcm46CiAgICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvUmVxdWVzdCVFMiU4MCU5M3Jlc3BvbnNlCiAuLiBfcHVibGlzaC1zdWJzY3JpYmU6
CiAgICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHVibGlzaCVFMiU4MCU5M3N1YnNj
cmliZV9wYXR0ZXJuCiAuLiBfaG9va2luZzoKICAgICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9Ib29raW5nCi0uLiBfcGx1Z2luIG1hbmFnZW1lbnQgYW5kIGhvb2sgY2FsbGluZzoKLSAg
ICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dyaXRpbmdfcGx1Z2lucy5odG1sCi0u
LiBfbmFtZXNwYWNlOgotICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi90dXRvcmlhbC9j
bGFzc2VzLmh0bWwjcHl0aG9uLXNjb3Blcy1hbmQtbmFtZXNwYWNlcwogLi4gX2NhbGxiYWNrczoK
ICAgICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWxsYmFja18oY29tcHV0ZXJfcHJv
Z3JhbW1pbmcpCiAuLiBfdG94IHRlc3Qgc3VpdGU6CiAgICAgaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcGx1Z2d5L2Jsb2IvbWFzdGVyL3RveC5pbmkKIC4uIF9TZW1hbnRpYyBWZXJzaW9u
aW5nOgotICAgIGh0dHA6Ly9zZW12ZXIub3JnLwotLi4gX3RpZ2h0IGNvdXBsaW5nOgotICAgIGh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvdXBsaW5nXyUyOGNvbXB1dGVyX3Byb2dyYW1t
aW5nJTI5I1R5cGVzX29mX2NvdXBsaW5nCisgICAgaHR0cHM6Ly9zZW12ZXIub3JnLwogLi4gX1B5
dGhvbiBpbnRlcnByZXRlcnM6CiAgICAgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1
Z2d5L2Jsb2IvbWFzdGVyL3RveC5pbmkjTDIKLS4uIF8yMDArIHBsdWdpbnM6CisuLiBfNTAwKyBw
bHVnaW5zOgogICAgIGh0dHA6Ly9wbHVnaW5jb21wYXQuaGVyb2t1YXBwLmNvbS8KKy4uIF9wcmUt
Y29tbWl0OgorICAgIGh0dHBzOi8vcHJlLWNvbW1pdC5jb20vCiAKIAogLi4gSW5kaWNlcyBhbmQg
dGFibGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODc1YjU4MWI4YzJjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L2RvY3MvYXBpX3JlZmVyZW5jZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2NvbmYucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9kb2NzL2luZGV4LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1
Z2d5L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L19faW5pdF9fLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjUxNzVkOTU2NjEuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS9wbHVnZ3kvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ODQgKzAs
MCBAQAotaW1wb3J0IGluc3BlY3QKLWltcG9ydCB3YXJuaW5ncwotZnJvbSAuY2FsbGVycyBpbXBv
cnQgX211bHRpY2FsbCwgSG9va0NhbGxFcnJvciwgX1Jlc3VsdCwgX2xlZ2FjeW11bHRpY2FsbAot
Ci1fX3ZlcnNpb25fXyA9ICcwLjUuMy5kZXYnCi0KLV9fYWxsX18gPSBbIlBsdWdpbk1hbmFnZXIi
LCAiUGx1Z2luVmFsaWRhdGlvbkVycm9yIiwgIkhvb2tDYWxsRXJyb3IiLAotICAgICAgICAgICAi
SG9va3NwZWNNYXJrZXIiLCAiSG9va2ltcGxNYXJrZXIiXQotCi0KLWNsYXNzIFBsdWdpblZhbGlk
YXRpb25FcnJvcihFeGNlcHRpb24pOgotICAgICIiIiBwbHVnaW4gZmFpbGVkIHZhbGlkYXRpb24u
ICIiIgotCi0KLWNsYXNzIEhvb2tzcGVjTWFya2VyKG9iamVjdCk6Ci0gICAgIiIiIERlY29yYXRv
ciBoZWxwZXIgY2xhc3MgZm9yIG1hcmtpbmcgZnVuY3Rpb25zIGFzIGhvb2sgc3BlY2lmaWNhdGlv
bnMuCi0KLSAgICBZb3UgY2FuIGluc3RhbnRpYXRlIGl0IHdpdGggYSBwcm9qZWN0X25hbWUgdG8g
Z2V0IGEgZGVjb3JhdG9yLgotICAgIENhbGxpbmcgUGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNz
IGxhdGVyIHdpbGwgZGlzY292ZXIgYWxsIG1hcmtlZCBmdW5jdGlvbnMKLSAgICBpZiB0aGUgUGx1
Z2luTWFuYWdlciB1c2VzIHRoZSBzYW1lIHByb2plY3RfbmFtZS4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X25hbWUpOgotICAgICAgICBzZWxmLnByb2plY3RfbmFt
ZSA9IHByb2plY3RfbmFtZQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmN0aW9uPU5vbmUs
IGZpcnN0cmVzdWx0PUZhbHNlLCBoaXN0b3JpYz1GYWxzZSk6Ci0gICAgICAgICIiIiBpZiBwYXNz
ZWQgYSBmdW5jdGlvbiwgZGlyZWN0bHkgc2V0cyBhdHRyaWJ1dGVzIG9uIHRoZSBmdW5jdGlvbgot
ICAgICAgICB3aGljaCB3aWxsIG1ha2UgaXQgZGlzY292ZXJhYmxlIHRvIGFkZF9ob29rc3BlY3Mo
KS4gIElmIHBhc3NlZCBubwotICAgICAgICBmdW5jdGlvbiwgcmV0dXJucyBhIGRlY29yYXRvciB3
aGljaCBjYW4gYmUgYXBwbGllZCB0byBhIGZ1bmN0aW9uCi0gICAgICAgIGxhdGVyIHVzaW5nIHRo
ZSBhdHRyaWJ1dGVzIHN1cHBsaWVkLgotCi0gICAgICAgIElmIGZpcnN0cmVzdWx0IGlzIFRydWUg
dGhlIDE6TiBob29rIGNhbGwgKE4gYmVpbmcgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkCi0gICAg
ICAgIGhvb2sgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zKSB3aWxsIHN0b3AgYXQgSTw9TiB3aGVu
IHRoZSBJJ3RoIGZ1bmN0aW9uCi0gICAgICAgIHJldHVybnMgYSBub24tTm9uZSByZXN1bHQuCi0K
LSAgICAgICAgSWYgaGlzdG9yaWMgaXMgVHJ1ZSBjYWxscyB0byBhIGhvb2sgd2lsbCBiZSBtZW1v
cml6ZWQgYW5kIHJlcGxheWVkCi0gICAgICAgIG9uIGxhdGVyIHJlZ2lzdGVyZWQgcGx1Z2lucy4K
LQotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHNldGF0dHJfaG9va3NwZWNfb3B0cyhmdW5jKToK
LSAgICAgICAgICAgIGlmIGhpc3RvcmljIGFuZCBmaXJzdHJlc3VsdDoKLSAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgaGF2ZSBhIGhpc3RvcmljIGZpcnN0cmVzdWx0IGhv
b2siKQotICAgICAgICAgICAgc2V0YXR0cihmdW5jLCBzZWxmLnByb2plY3RfbmFtZSArICJfc3Bl
YyIsCi0gICAgICAgICAgICAgICAgICAgIGRpY3QoZmlyc3RyZXN1bHQ9Zmlyc3RyZXN1bHQsIGhp
c3RvcmljPWhpc3RvcmljKSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jCi0KLSAgICAgICAgaWYg
ZnVuY3Rpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2V0YXR0cl9ob29rc3Bl
Y19vcHRzKGZ1bmN0aW9uKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNldGF0
dHJfaG9va3NwZWNfb3B0cwotCi0KLWNsYXNzIEhvb2tpbXBsTWFya2VyKG9iamVjdCk6Ci0gICAg
IiIiIERlY29yYXRvciBoZWxwZXIgY2xhc3MgZm9yIG1hcmtpbmcgZnVuY3Rpb25zIGFzIGhvb2sg
aW1wbGVtZW50YXRpb25zLgotCi0gICAgWW91IGNhbiBpbnN0YW50aWF0ZSB3aXRoIGEgcHJvamVj
dF9uYW1lIHRvIGdldCBhIGRlY29yYXRvci4KLSAgICBDYWxsaW5nIFBsdWdpbk1hbmFnZXIucmVn
aXN0ZXIgbGF0ZXIgd2lsbCBkaXNjb3ZlciBhbGwgbWFya2VkIGZ1bmN0aW9ucwotICAgIGlmIHRo
ZSBQbHVnaW5NYW5hZ2VyIHVzZXMgdGhlIHNhbWUgcHJvamVjdF9uYW1lLgotICAgICIiIgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X25hbWUpOgotICAgICAgICBzZWxmLnByb2plY3Rf
bmFtZSA9IHByb2plY3RfbmFtZQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmN0aW9uPU5v
bmUsIGhvb2t3cmFwcGVyPUZhbHNlLCBvcHRpb25hbGhvb2s9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgIHRyeWZpcnN0PUZhbHNlLCB0cnlsYXN0PUZhbHNlKToKLQotICAgICAgICAiIiIgaWYgcGFz
c2VkIGEgZnVuY3Rpb24sIGRpcmVjdGx5IHNldHMgYXR0cmlidXRlcyBvbiB0aGUgZnVuY3Rpb24K
LSAgICAgICAgd2hpY2ggd2lsbCBtYWtlIGl0IGRpc2NvdmVyYWJsZSB0byByZWdpc3RlcigpLiAg
SWYgcGFzc2VkIG5vIGZ1bmN0aW9uLAotICAgICAgICByZXR1cm5zIGEgZGVjb3JhdG9yIHdoaWNo
IGNhbiBiZSBhcHBsaWVkIHRvIGEgZnVuY3Rpb24gbGF0ZXIgdXNpbmcKLSAgICAgICAgdGhlIGF0
dHJpYnV0ZXMgc3VwcGxpZWQuCi0KLSAgICAgICAgSWYgb3B0aW9uYWxob29rIGlzIFRydWUgYSBt
aXNzaW5nIG1hdGNoaW5nIGhvb2sgc3BlY2lmaWNhdGlvbiB3aWxsIG5vdCByZXN1bHQKLSAgICAg
ICAgaW4gYW4gZXJyb3IgKGJ5IGRlZmF1bHQgaXQgaXMgYW4gZXJyb3IgaWYgbm8gbWF0Y2hpbmcg
c3BlYyBpcyBmb3VuZCkuCi0KLSAgICAgICAgSWYgdHJ5Zmlyc3QgaXMgVHJ1ZSB0aGlzIGhvb2sg
aW1wbGVtZW50YXRpb24gd2lsbCBydW4gYXMgZWFybHkgYXMgcG9zc2libGUKLSAgICAgICAgaW4g
dGhlIGNoYWluIG9mIE4gaG9vayBpbXBsZW1lbnRhdGlvbnMgZm9yIGEgc3BlY2ZpY2F0aW9uLgot
Ci0gICAgICAgIElmIHRyeWxhc3QgaXMgVHJ1ZSB0aGlzIGhvb2sgaW1wbGVtZW50YXRpb24gd2ls
bCBydW4gYXMgbGF0ZSBhcyBwb3NzaWJsZQotICAgICAgICBpbiB0aGUgY2hhaW4gb2YgTiBob29r
IGltcGxlbWVudGF0aW9ucy4KLQotICAgICAgICBJZiBob29rd3JhcHBlciBpcyBUcnVlIHRoZSBo
b29rIGltcGxlbWVudGF0aW9ucyBuZWVkcyB0byBleGVjdXRlIGV4YWN0bHkKLSAgICAgICAgb25l
ICJ5aWVsZCIuICBUaGUgY29kZSBiZWZvcmUgdGhlIHlpZWxkIGlzIHJ1biBlYXJseSBiZWZvcmUg
YW55IG5vbi1ob29rd3JhcHBlcgotICAgICAgICBmdW5jdGlvbiBpcyBydW4uICBUaGUgY29kZSBh
ZnRlciB0aGUgeWllbGQgaXMgcnVuIGFmdGVyIGFsbCBub24taG9va3dyYXBwZXIKLSAgICAgICAg
ZnVuY3Rpb24gaGF2ZSBydW4uICBUaGUgeWllbGQgcmVjZWl2ZXMgYSBgYF9SZXN1bHRgYCBvYmpl
Y3QgcmVwcmVzZW50aW5nCi0gICAgICAgIHRoZSBleGNlcHRpb24gb3IgcmVzdWx0IG91dGNvbWUg
b2YgdGhlIGlubmVyIGNhbGxzIChpbmNsdWRpbmcgb3RoZXIgaG9va3dyYXBwZXIKLSAgICAgICAg
Y2FsbHMpLgotCi0gICAgICAgICIiIgotICAgICAgICBkZWYgc2V0YXR0cl9ob29raW1wbF9vcHRz
KGZ1bmMpOgotICAgICAgICAgICAgc2V0YXR0cihmdW5jLCBzZWxmLnByb2plY3RfbmFtZSArICJf
aW1wbCIsCi0gICAgICAgICAgICAgICAgICAgIGRpY3QoaG9va3dyYXBwZXI9aG9va3dyYXBwZXIs
IG9wdGlvbmFsaG9vaz1vcHRpb25hbGhvb2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHJ5
Zmlyc3Q9dHJ5Zmlyc3QsIHRyeWxhc3Q9dHJ5bGFzdCkpCi0gICAgICAgICAgICByZXR1cm4gZnVu
YwotCi0gICAgICAgIGlmIGZ1bmN0aW9uIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2V0
YXR0cl9ob29raW1wbF9vcHRzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2V0
YXR0cl9ob29raW1wbF9vcHRzKGZ1bmN0aW9uKQotCi0KLWRlZiBub3JtYWxpemVfaG9va2ltcGxf
b3B0cyhvcHRzKToKLSAgICBvcHRzLnNldGRlZmF1bHQoInRyeWZpcnN0IiwgRmFsc2UpCi0gICAg
b3B0cy5zZXRkZWZhdWx0KCJ0cnlsYXN0IiwgRmFsc2UpCi0gICAgb3B0cy5zZXRkZWZhdWx0KCJo
b29rd3JhcHBlciIsIEZhbHNlKQotICAgIG9wdHMuc2V0ZGVmYXVsdCgib3B0aW9uYWxob29rIiwg
RmFsc2UpCi0KLQotY2xhc3MgX1RhZ1RyYWNlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKLSAgICAgICAgc2VsZi5fdGFnMnByb2MgPSB7fQotICAgICAgICBzZWxmLndyaXRlciA9
IE5vbmUKLSAgICAgICAgc2VsZi5pbmRlbnQgPSAwCi0KLSAgICBkZWYgZ2V0KHNlbGYsIG5hbWUp
OgotICAgICAgICByZXR1cm4gX1RhZ1RyYWNlclN1YihzZWxmLCAobmFtZSwpKQotCi0gICAgZGVm
IGZvcm1hdF9tZXNzYWdlKHNlbGYsIHRhZ3MsIGFyZ3MpOgotICAgICAgICBpZiBpc2luc3RhbmNl
KGFyZ3NbLTFdLCBkaWN0KToKLSAgICAgICAgICAgIGV4dHJhID0gYXJnc1stMV0KLSAgICAgICAg
ICAgIGFyZ3MgPSBhcmdzWzotMV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4dHJhID0g
e30KLQotICAgICAgICBjb250ZW50ID0gIiAiLmpvaW4obWFwKHN0ciwgYXJncykpCi0gICAgICAg
IGluZGVudCA9ICIgICIgKiBzZWxmLmluZGVudAotCi0gICAgICAgIGxpbmVzID0gWwotICAgICAg
ICAgICAgIiVzJXMgWyVzXVxuIiAlIChpbmRlbnQsIGNvbnRlbnQsICI6Ii5qb2luKHRhZ3MpKQot
ICAgICAgICBdCi0KLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGV4dHJhLml0ZW1zKCk6Ci0g
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVzICAgICVzOiAlc1xuIiAlIChpbmRlbnQsIG5hbWUs
IHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0KLSAgICBkZWYgcHJvY2Vzc21lc3NhZ2Uo
c2VsZiwgdGFncywgYXJncyk6Ci0gICAgICAgIGlmIHNlbGYud3JpdGVyIGlzIG5vdCBOb25lIGFu
ZCBhcmdzOgotICAgICAgICAgICAgbGluZXMgPSBzZWxmLmZvcm1hdF9tZXNzYWdlKHRhZ3MsIGFy
Z3MpCi0gICAgICAgICAgICBzZWxmLndyaXRlcignJy5qb2luKGxpbmVzKSkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fdGFnMnByb2NbdGFnc10odGFncywgYXJncykKLSAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHdyaXRlcihz
ZWxmLCB3cml0ZXIpOgotICAgICAgICBzZWxmLndyaXRlciA9IHdyaXRlcgotCi0gICAgZGVmIHNl
dHByb2Nlc3NvcihzZWxmLCB0YWdzLCBwcm9jZXNzb3IpOgotICAgICAgICBpZiBpc2luc3RhbmNl
KHRhZ3MsIHN0cik6Ci0gICAgICAgICAgICB0YWdzID0gdHVwbGUodGFncy5zcGxpdCgiOiIpKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGFncywgdHVwbGUp
Ci0gICAgICAgIHNlbGYuX3RhZzJwcm9jW3RhZ3NdID0gcHJvY2Vzc29yCi0KLQotY2xhc3MgX1Rh
Z1RyYWNlclN1YihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290LCB0YWdzKToK
LSAgICAgICAgc2VsZi5yb290ID0gcm9vdAotICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCi0KLSAg
ICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBzZWxmLnJvb3QucHJvY2Vzc21l
c3NhZ2Uoc2VsZi50YWdzLCBhcmdzKQotCi0gICAgZGVmIHNldG15cHJvY2Vzc29yKHNlbGYsIHBy
b2Nlc3Nvcik6Ci0gICAgICAgIHNlbGYucm9vdC5zZXRwcm9jZXNzb3Ioc2VsZi50YWdzLCBwcm9j
ZXNzb3IpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5f
X2NsYXNzX18oc2VsZi5yb290LCBzZWxmLnRhZ3MgKyAobmFtZSwpKQotCi0KLWNsYXNzIF9UcmFj
ZWRIb29rRXhlY3V0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsdWdpbm1h
bmFnZXIsIGJlZm9yZSwgYWZ0ZXIpOgotICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIgPSBwbHVn
aW5tYW5hZ2VyCi0gICAgICAgIHNlbGYuYmVmb3JlID0gYmVmb3JlCi0gICAgICAgIHNlbGYuYWZ0
ZXIgPSBhZnRlcgotICAgICAgICBzZWxmLm9sZGNhbGwgPSBwbHVnaW5tYW5hZ2VyLl9pbm5lcl9o
b29rZXhlYwotICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc2VsZi5vbGRjYWxsLCBfVHJh
Y2VkSG9va0V4ZWN1dGlvbikKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLl9pbm5lcl9ob29r
ZXhlYyA9IHNlbGYKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBob29rLCBob29rX2ltcGxzLCBr
d2FyZ3MpOgotICAgICAgICBzZWxmLmJlZm9yZShob29rLm5hbWUsIGhvb2tfaW1wbHMsIGt3YXJn
cykKLSAgICAgICAgb3V0Y29tZSA9IF9SZXN1bHQuZnJvbV9jYWxsKGxhbWJkYTogc2VsZi5vbGRj
YWxsKGhvb2ssIGhvb2tfaW1wbHMsIGt3YXJncykpCi0gICAgICAgIHNlbGYuYWZ0ZXIob3V0Y29t
ZSwgaG9vay5uYW1lLCBob29rX2ltcGxzLCBrd2FyZ3MpCi0gICAgICAgIHJldHVybiBvdXRjb21l
LmdldF9yZXN1bHQoKQotCi0gICAgZGVmIHVuZG8oc2VsZik6Ci0gICAgICAgIHNlbGYucGx1Z2lu
bWFuYWdlci5faW5uZXJfaG9va2V4ZWMgPSBzZWxmLm9sZGNhbGwKLQotCi1jbGFzcyBQbHVnaW5N
YW5hZ2VyKG9iamVjdCk6Ci0gICAgIiIiIENvcmUgUGx1Z2lubWFuYWdlciBjbGFzcyB3aGljaCBt
YW5hZ2VzIHJlZ2lzdHJhdGlvbgotICAgIG9mIHBsdWdpbiBvYmplY3RzIGFuZCAxOk4gaG9vayBj
YWxsaW5nLgotCi0gICAgWW91IGNhbiByZWdpc3RlciBuZXcgaG9va3MgYnkgY2FsbGluZyBgYGFk
ZF9ob29rc3BlYyhtb2R1bGVfb3JfY2xhc3MpYGAuCi0gICAgWW91IGNhbiByZWdpc3RlciBwbHVn
aW4gb2JqZWN0cyAod2hpY2ggY29udGFpbiBob29rcykgYnkgY2FsbGluZwotICAgIGBgcmVnaXN0
ZXIocGx1Z2luKWBgLiAgVGhlIFBsdWdpbm1hbmFnZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhCi0g
ICAgcHJlZml4IHRoYXQgaXMgc2VhcmNoZWQgZm9yIGluIHRoZSBuYW1lcyBvZiB0aGUgZGljdCBv
ZiByZWdpc3RlcmVkCi0gICAgcGx1Z2luIG9iamVjdHMuICBBbiBvcHRpb25hbCBleGNsdWRlZnVu
YyBhbGxvd3MgdG8gYmxhY2tsaXN0IG5hbWVzIHdoaWNoCi0gICAgYXJlIG5vdCBjb25zaWRlcmVk
IGFzIGhvb2tzIGRlc3BpdGUgYSBtYXRjaGluZyBwcmVmaXguCi0KLSAgICBGb3IgZGVidWdnaW5n
IHB1cnBvc2VzIHlvdSBjYW4gY2FsbCBgYGVuYWJsZV90cmFjaW5nKClgYAotICAgIHdoaWNoIHdp
bGwgc3Vic2VxdWVudGx5IHNlbmQgZGVidWcgaW5mb3JtYXRpb24gdG8gdGhlIHRyYWNlIGhlbHBl
ci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X25hbWUsIGltcGxw
cmVmaXg9Tm9uZSk6Ci0gICAgICAgICIiIiBpZiBpbXBscHJlZml4IGlzIGdpdmVuIGltcGxlbWVu
dGF0aW9uIGZ1bmN0aW9ucwotICAgICAgICB3aWxsIGJlIHJlY29nbml6ZWQgaWYgdGhlaXIgbmFt
ZSBtYXRjaGVzIHRoZSBpbXBscHJlZml4LiAiIiIKLSAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUg
PSBwcm9qZWN0X25hbWUKLSAgICAgICAgc2VsZi5fbmFtZTJwbHVnaW4gPSB7fQotICAgICAgICBz
ZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMgPSB7fQotICAgICAgICBzZWxmLl9wbHVnaW5fZGlzdGlu
Zm8gPSBbXQotICAgICAgICBzZWxmLnRyYWNlID0gX1RhZ1RyYWNlcigpLmdldCgicGx1Z2lubWFu
YWdlIikKLSAgICAgICAgc2VsZi5ob29rID0gX0hvb2tSZWxheShzZWxmLnRyYWNlLnJvb3QuZ2V0
KCJob29rIikpCi0gICAgICAgIHNlbGYuX2ltcGxwcmVmaXggPSBpbXBscHJlZml4Ci0gICAgICAg
IHNlbGYuX2lubmVyX2hvb2tleGVjID0gbGFtYmRhIGhvb2ssIG1ldGhvZHMsIGt3YXJnczogXAot
ICAgICAgICAgICAgaG9vay5tdWx0aWNhbGwoCi0gICAgICAgICAgICAgICAgbWV0aG9kcywga3dh
cmdzLAotICAgICAgICAgICAgICAgIGZpcnN0cmVzdWx0PWhvb2suc3BlY19vcHRzLmdldCgnZmly
c3RyZXN1bHQnKSwKLSAgICAgICAgICAgICkKLQotICAgIGRlZiBfaG9va2V4ZWMoc2VsZiwgaG9v
aywgbWV0aG9kcywga3dhcmdzKToKLSAgICAgICAgIyBjYWxsZWQgZnJvbSBhbGwgaG9va2NhbGxl
ciBpbnN0YW5jZXMuCi0gICAgICAgICMgZW5hYmxlX3RyYWNpbmcgd2lsbCBzZXQgaXRzIG93biB3
cmFwcGluZyBmdW5jdGlvbiBhdCBzZWxmLl9pbm5lcl9ob29rZXhlYwotICAgICAgICByZXR1cm4g
c2VsZi5faW5uZXJfaG9va2V4ZWMoaG9vaywgbWV0aG9kcywga3dhcmdzKQotCi0gICAgZGVmIHJl
Z2lzdGVyKHNlbGYsIHBsdWdpbiwgbmFtZT1Ob25lKToKLSAgICAgICAgIiIiIFJlZ2lzdGVyIGEg
cGx1Z2luIGFuZCByZXR1cm4gaXRzIGNhbm9uaWNhbCBuYW1lIG9yIE5vbmUgaWYgdGhlIG5hbWUK
LSAgICAgICAgaXMgYmxvY2tlZCBmcm9tIHJlZ2lzdGVyaW5nLiAgUmFpc2UgYSBWYWx1ZUVycm9y
IGlmIHRoZSBwbHVnaW4gaXMgYWxyZWFkeQotICAgICAgICByZWdpc3RlcmVkLiAiIiIKLSAgICAg
ICAgcGx1Z2luX25hbWUgPSBuYW1lIG9yIHNlbGYuZ2V0X2Nhbm9uaWNhbF9uYW1lKHBsdWdpbikK
LQotICAgICAgICBpZiBwbHVnaW5fbmFtZSBpbiBzZWxmLl9uYW1lMnBsdWdpbiBvciBwbHVnaW4g
aW4gc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzOgotICAgICAgICAgICAgaWYgc2VsZi5fbmFtZTJw
bHVnaW4uZ2V0KHBsdWdpbl9uYW1lLCAtMSkgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gICMgYmxvY2tlZCBwbHVnaW4sIHJldHVybiBOb25lIHRvIGluZGljYXRlIG5vIHJlZ2lzdHJh
dGlvbgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGx1Z2luIGFscmVhZHkgcmVnaXN0
ZXJlZDogJXM9JXNcbiVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbHVnaW5f
bmFtZSwgcGx1Z2luLCBzZWxmLl9uYW1lMnBsdWdpbikpCi0KLSAgICAgICAgIyBYWFggaWYgYW4g
ZXJyb3IgaGFwcGVucyB3ZSBzaG91bGQgbWFrZSBzdXJlIG5vIHN0YXRlIGhhcyBiZWVuCi0gICAg
ICAgICMgY2hhbmdlZCBhdCBwb2ludCBvZiByZXR1cm4KLSAgICAgICAgc2VsZi5fbmFtZTJwbHVn
aW5bcGx1Z2luX25hbWVdID0gcGx1Z2luCi0KLSAgICAgICAgIyByZWdpc3RlciBtYXRjaGluZyBo
b29rIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcGx1Z2luCi0gICAgICAgIHNlbGYuX3BsdWdpbjJo
b29rY2FsbGVyc1twbHVnaW5dID0gaG9va2NhbGxlcnMgPSBbXQotICAgICAgICBmb3IgbmFtZSBp
biBkaXIocGx1Z2luKToKLSAgICAgICAgICAgIGhvb2tpbXBsX29wdHMgPSBzZWxmLnBhcnNlX2hv
b2tpbXBsX29wdHMocGx1Z2luLCBuYW1lKQotICAgICAgICAgICAgaWYgaG9va2ltcGxfb3B0cyBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBub3JtYWxpemVfaG9va2ltcGxfb3B0cyhob29r
aW1wbF9vcHRzKQotICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIocGx1Z2luLCBuYW1l
KQotICAgICAgICAgICAgICAgIGhvb2tpbXBsID0gSG9va0ltcGwocGx1Z2luLCBwbHVnaW5fbmFt
ZSwgbWV0aG9kLCBob29raW1wbF9vcHRzKQotICAgICAgICAgICAgICAgIGhvb2sgPSBnZXRhdHRy
KHNlbGYuaG9vaywgbmFtZSwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiBob29rIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgICAgIGhvb2sgPSBfSG9va0NhbGxlcihuYW1lLCBzZWxmLl9ob29r
ZXhlYykKLSAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLmhvb2ssIG5hbWUsIGhvb2sp
Ci0gICAgICAgICAgICAgICAgZWxpZiBob29rLmhhc19zcGVjKCk6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3ZlcmlmeV9ob29rKGhvb2ssIGhvb2tpbXBsKQotICAgICAgICAgICAgICAgICAg
ICBob29rLl9tYXliZV9hcHBseV9oaXN0b3J5KGhvb2tpbXBsKQotICAgICAgICAgICAgICAgIGhv
b2suX2FkZF9ob29raW1wbChob29raW1wbCkKLSAgICAgICAgICAgICAgICBob29rY2FsbGVycy5h
cHBlbmQoaG9vaykKLSAgICAgICAgcmV0dXJuIHBsdWdpbl9uYW1lCi0KLSAgICBkZWYgcGFyc2Vf
aG9va2ltcGxfb3B0cyhzZWxmLCBwbHVnaW4sIG5hbWUpOgotICAgICAgICBtZXRob2QgPSBnZXRh
dHRyKHBsdWdpbiwgbmFtZSkKLSAgICAgICAgaWYgbm90IGluc3BlY3QuaXNyb3V0aW5lKG1ldGhv
ZCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzID0g
Z2V0YXR0cihtZXRob2QsIHNlbGYucHJvamVjdF9uYW1lICsgIl9pbXBsIiwgTm9uZSkKLSAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJlcyA9IHt9Ci0gICAgICAgIGlmIHJl
cyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UocmVzLCBkaWN0KToKLSAgICAgICAgICAg
ICMgZmFsc2UgcG9zaXRpdmUKLSAgICAgICAgICAgIHJlcyA9IE5vbmUKLSAgICAgICAgZWxpZiBy
ZXMgaXMgTm9uZSBhbmQgc2VsZi5faW1wbHByZWZpeCBhbmQgbmFtZS5zdGFydHN3aXRoKHNlbGYu
X2ltcGxwcmVmaXgpOgotICAgICAgICAgICAgcmVzID0ge30KLSAgICAgICAgcmV0dXJuIHJlcwot
Ci0gICAgZGVmIHVucmVnaXN0ZXIoc2VsZiwgcGx1Z2luPU5vbmUsIG5hbWU9Tm9uZSk6Ci0gICAg
ICAgICIiIiB1bnJlZ2lzdGVyIGEgcGx1Z2luIG9iamVjdCBhbmQgYWxsIGl0cyBjb250YWluZWQg
aG9vayBpbXBsZW1lbnRhdGlvbnMKLSAgICAgICAgZnJvbSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVy
ZXMuICIiIgotICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBhc3NlcnQgcGx1
Z2luIGlzIG5vdCBOb25lLCAib25lIG9mIG5hbWUgb3IgcGx1Z2luIG5lZWRzIHRvIGJlIHNwZWNp
ZmllZCIKLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLmdldF9uYW1lKHBsdWdpbikKLQotICAgICAg
ICBpZiBwbHVnaW4gaXMgTm9uZToKLSAgICAgICAgICAgIHBsdWdpbiA9IHNlbGYuZ2V0X3BsdWdp
bihuYW1lKQotCi0gICAgICAgICMgaWYgc2VsZi5fbmFtZTJwbHVnaW5bbmFtZV0gPT0gTm9uZSBy
ZWdpc3RyYXRpb24gd2FzIGJsb2NrZWQ6IGlnbm9yZQotICAgICAgICBpZiBzZWxmLl9uYW1lMnBs
dWdpbi5nZXQobmFtZSk6Ci0gICAgICAgICAgICBkZWwgc2VsZi5fbmFtZTJwbHVnaW5bbmFtZV0K
LQotICAgICAgICBmb3IgaG9va2NhbGxlciBpbiBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMucG9w
KHBsdWdpbiwgW10pOgotICAgICAgICAgICAgaG9va2NhbGxlci5fcmVtb3ZlX3BsdWdpbihwbHVn
aW4pCi0KLSAgICAgICAgcmV0dXJuIHBsdWdpbgotCi0gICAgZGVmIHNldF9ibG9ja2VkKHNlbGYs
IG5hbWUpOgotICAgICAgICAiIiIgYmxvY2sgcmVnaXN0cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gbmFt
ZSwgdW5yZWdpc3RlciBpZiBhbHJlYWR5IHJlZ2lzdGVyZWQuICIiIgotICAgICAgICBzZWxmLnVu
cmVnaXN0ZXIobmFtZT1uYW1lKQotICAgICAgICBzZWxmLl9uYW1lMnBsdWdpbltuYW1lXSA9IE5v
bmUKLQotICAgIGRlZiBpc19ibG9ja2VkKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiIgcmV0dXJu
IFRydWUgaWYgdGhlIG5hbWUgYmxvZ3MgcmVnaXN0ZXJpbmcgcGx1Z2lucyBvZiB0aGF0IG5hbWUu
ICIiIgotICAgICAgICByZXR1cm4gbmFtZSBpbiBzZWxmLl9uYW1lMnBsdWdpbiBhbmQgc2VsZi5f
bmFtZTJwbHVnaW5bbmFtZV0gaXMgTm9uZQotCi0gICAgZGVmIGFkZF9ob29rc3BlY3Moc2VsZiwg
bW9kdWxlX29yX2NsYXNzKToKLSAgICAgICAgIiIiIGFkZCBuZXcgaG9vayBzcGVjaWZpY2F0aW9u
cyBkZWZpbmVkIGluIHRoZSBnaXZlbiBtb2R1bGVfb3JfY2xhc3MuCi0gICAgICAgIEZ1bmN0aW9u
cyBhcmUgcmVjb2duaXplZCBpZiB0aGV5IGhhdmUgYmVlbiBkZWNvcmF0ZWQgYWNjb3JkaW5nbHku
ICIiIgotICAgICAgICBuYW1lcyA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGVf
b3JfY2xhc3MpOgotICAgICAgICAgICAgc3BlY19vcHRzID0gc2VsZi5wYXJzZV9ob29rc3BlY19v
cHRzKG1vZHVsZV9vcl9jbGFzcywgbmFtZSkKLSAgICAgICAgICAgIGlmIHNwZWNfb3B0cyBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgICAgICBoYyA9IGdldGF0dHIoc2VsZi5ob29rLCBuYW1lLCBO
b25lKQotICAgICAgICAgICAgICAgIGlmIGhjIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAg
IGhjID0gX0hvb2tDYWxsZXIobmFtZSwgc2VsZi5faG9va2V4ZWMsIG1vZHVsZV9vcl9jbGFzcywg
c3BlY19vcHRzKQotICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuaG9vaywgbmFtZSwg
aGMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBwbHVnaW5z
IHJlZ2lzdGVyZWQgdGhpcyBob29rIHdpdGhvdXQga25vd2luZyB0aGUgc3BlYwotICAgICAgICAg
ICAgICAgICAgICBoYy5zZXRfc3BlY2lmaWNhdGlvbihtb2R1bGVfb3JfY2xhc3MsIHNwZWNfb3B0
cykKLSAgICAgICAgICAgICAgICAgICAgZm9yIGhvb2tmdW5jdGlvbiBpbiAoaGMuX3dyYXBwZXJz
ICsgaGMuX25vbndyYXBwZXJzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Zlcmlm
eV9ob29rKGhjLCBob29rZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5h
bWUpCi0KLSAgICAgICAgaWYgbm90IG5hbWVzOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigiZGlkIG5vdCBmaW5kIGFueSAlciBob29rcyBpbiAlciIgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5wcm9qZWN0X25hbWUsIG1vZHVsZV9vcl9jbGFzcykpCi0KLSAgICBk
ZWYgcGFyc2VfaG9va3NwZWNfb3B0cyhzZWxmLCBtb2R1bGVfb3JfY2xhc3MsIG5hbWUpOgotICAg
ICAgICBtZXRob2QgPSBnZXRhdHRyKG1vZHVsZV9vcl9jbGFzcywgbmFtZSkKLSAgICAgICAgcmV0
dXJuIGdldGF0dHIobWV0aG9kLCBzZWxmLnByb2plY3RfbmFtZSArICJfc3BlYyIsIE5vbmUpCi0K
LSAgICBkZWYgZ2V0X3BsdWdpbnMoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gdGhlIHNldCBv
ZiByZWdpc3RlcmVkIHBsdWdpbnMuICIiIgotICAgICAgICByZXR1cm4gc2V0KHNlbGYuX3BsdWdp
bjJob29rY2FsbGVycykKLQotICAgIGRlZiBpc19yZWdpc3RlcmVkKHNlbGYsIHBsdWdpbik6Ci0g
ICAgICAgICIiIiBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGx1Z2luIGlzIGFscmVhZHkgcmVnaXN0ZXJl
ZC4gIiIiCi0gICAgICAgIHJldHVybiBwbHVnaW4gaW4gc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJz
Ci0KLSAgICBkZWYgZ2V0X2Nhbm9uaWNhbF9uYW1lKHNlbGYsIHBsdWdpbik6Ci0gICAgICAgICIi
IiBSZXR1cm4gY2Fub25pY2FsIG5hbWUgZm9yIGEgcGx1Z2luIG9iamVjdC4gTm90ZSB0aGF0IGEg
cGx1Z2luCi0gICAgICAgIG1heSBiZSByZWdpc3RlcmVkIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUg
d2hpY2ggd2FzIHNwZWNpZmllZAotICAgICAgICBieSB0aGUgY2FsbGVyIG9mIHJlZ2lzdGVyKHBs
dWdpbiwgbmFtZSkuIFRvIG9idGFpbiB0aGUgbmFtZQotICAgICAgICBvZiBhbiByZWdpc3RlcmVk
IHBsdWdpbiB1c2UgYGBnZXRfbmFtZShwbHVnaW4pYGAgaW5zdGVhZC4iIiIKLSAgICAgICAgcmV0
dXJuIGdldGF0dHIocGx1Z2luLCAiX19uYW1lX18iLCBOb25lKSBvciBzdHIoaWQocGx1Z2luKSkK
LQotICAgIGRlZiBnZXRfcGx1Z2luKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiIgUmV0dXJuIGEg
cGx1Z2luIG9yIE5vbmUgZm9yIHRoZSBnaXZlbiBuYW1lLiAiIiIKLSAgICAgICAgcmV0dXJuIHNl
bGYuX25hbWUycGx1Z2luLmdldChuYW1lKQotCi0gICAgZGVmIGhhc19wbHVnaW4oc2VsZiwgbmFt
ZSk6Ci0gICAgICAgICIiIiBSZXR1cm4gVHJ1ZSBpZiBhIHBsdWdpbiB3aXRoIHRoZSBnaXZlbiBu
YW1lIGlzIHJlZ2lzdGVyZWQuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXRfcGx1Z2luKG5h
bWUpIGlzIG5vdCBOb25lCi0KLSAgICBkZWYgZ2V0X25hbWUoc2VsZiwgcGx1Z2luKToKLSAgICAg
ICAgIiIiIFJldHVybiBuYW1lIGZvciByZWdpc3RlcmVkIHBsdWdpbiBvciBOb25lIGlmIG5vdCBy
ZWdpc3RlcmVkLiAiIiIKLSAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBzZWxmLl9uYW1lMnBsdWdp
bi5pdGVtcygpOgotICAgICAgICAgICAgaWYgcGx1Z2luID09IHZhbDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmFtZQotCi0gICAgZGVmIF92ZXJpZnlfaG9vayhzZWxmLCBob29rLCBob29raW1w
bCk6Ci0gICAgICAgIGlmIGhvb2suaXNfaGlzdG9yaWMoKSBhbmQgaG9va2ltcGwuaG9va3dyYXBw
ZXI6Ci0gICAgICAgICAgICByYWlzZSBQbHVnaW5WYWxpZGF0aW9uRXJyb3IoCi0gICAgICAgICAg
ICAgICAgIlBsdWdpbiAlclxuaG9vayAlclxuaGlzdG9yaWMgaW5jb21wYXRpYmxlIHRvIGhvb2t3
cmFwcGVyIiAlCi0gICAgICAgICAgICAgICAgKGhvb2tpbXBsLnBsdWdpbl9uYW1lLCBob29rLm5h
bWUpKQotCi0gICAgICAgICMgcG9zaXRpb25hbCBhcmcgY2hlY2tpbmcKLSAgICAgICAgbm90aW5z
cGVjID0gc2V0KGhvb2tpbXBsLmFyZ25hbWVzKSAtIHNldChob29rLmFyZ25hbWVzKQotICAgICAg
ICBpZiBub3RpbnNwZWM6Ci0gICAgICAgICAgICByYWlzZSBQbHVnaW5WYWxpZGF0aW9uRXJyb3Io
Ci0gICAgICAgICAgICAgICAgIlBsdWdpbiAlciBmb3IgaG9vayAlclxuaG9va2ltcGwgZGVmaW5p
dGlvbjogJXNcbiIKLSAgICAgICAgICAgICAgICAiQXJndW1lbnQocykgJXMgYXJlIGRlY2xhcmVk
IGluIHRoZSBob29raW1wbCBidXQgIgotICAgICAgICAgICAgICAgICJjYW4gbm90IGJlIGZvdW5k
IGluIHRoZSBob29rc3BlYyIgJQotICAgICAgICAgICAgICAgIChob29raW1wbC5wbHVnaW5fbmFt
ZSwgaG9vay5uYW1lLAotICAgICAgICAgICAgICAgICBfZm9ybWF0ZGVmKGhvb2tpbXBsLmZ1bmN0
aW9uKSwgbm90aW5zcGVjKQotICAgICAgICAgICAgKQotCi0gICAgZGVmIGNoZWNrX3BlbmRpbmco
c2VsZik6Ci0gICAgICAgICIiIiBWZXJpZnkgdGhhdCBhbGwgaG9va3Mgd2hpY2ggaGF2ZSBub3Qg
YmVlbiB2ZXJpZmllZCBhZ2FpbnN0Ci0gICAgICAgIGEgaG9vayBzcGVjaWZpY2F0aW9uIGFyZSBv
cHRpb25hbCwgb3RoZXJ3aXNlIHJhaXNlIFBsdWdpblZhbGlkYXRpb25FcnJvciIiIgotICAgICAg
ICBmb3IgbmFtZSBpbiBzZWxmLmhvb2suX19kaWN0X186Ci0gICAgICAgICAgICBpZiBuYW1lWzBd
ICE9ICJfIjoKLSAgICAgICAgICAgICAgICBob29rID0gZ2V0YXR0cihzZWxmLmhvb2ssIG5hbWUp
Ci0gICAgICAgICAgICAgICAgaWYgbm90IGhvb2suaGFzX3NwZWMoKToKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIGhvb2tpbXBsIGluIChob29rLl93cmFwcGVycyArIGhvb2suX25vbndyYXBwZXJz
KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBob29raW1wbC5vcHRpb25hbGhvb2s6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGx1Z2luVmFsaWRhdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBob29rICVyIGluIHBs
dWdpbiAlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgaG9va2lt
cGwucGx1Z2luKSkKLQotICAgIGRlZiBsb2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHMoc2VsZiwg
ZW50cnlwb2ludF9uYW1lKToKLSAgICAgICAgIiIiIExvYWQgbW9kdWxlcyBmcm9tIHF1ZXJ5aW5n
IHRoZSBzcGVjaWZpZWQgc2V0dXB0b29scyBlbnRyeXBvaW50IG5hbWUuCi0gICAgICAgIFJldHVy
biB0aGUgbnVtYmVyIG9mIGxvYWRlZCBwbHVnaW5zLiAiIiIKLSAgICAgICAgZnJvbSBwa2dfcmVz
b3VyY2VzIGltcG9ydCAoaXRlcl9lbnRyeV9wb2ludHMsIERpc3RyaWJ1dGlvbk5vdEZvdW5kLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uQ29uZmxpY3QpCi0gICAg
ICAgIGZvciBlcCBpbiBpdGVyX2VudHJ5X3BvaW50cyhlbnRyeXBvaW50X25hbWUpOgotICAgICAg
ICAgICAgIyBpcyB0aGUgcGx1Z2luIHJlZ2lzdGVyZWQgb3IgYmxvY2tlZD8KLSAgICAgICAgICAg
IGlmIHNlbGYuZ2V0X3BsdWdpbihlcC5uYW1lKSBvciBzZWxmLmlzX2Jsb2NrZWQoZXAubmFtZSk6
Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBwbHVnaW4gPSBlcC5sb2FkKCkKLSAgICAgICAgICAgIGV4Y2VwdCBEaXN0cmlidXRpb25O
b3RGb3VuZDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZXhjZXB0IFZl
cnNpb25Db25mbGljdCBhcyBlOgotICAgICAgICAgICAgICAgIHJhaXNlIFBsdWdpblZhbGlkYXRp
b25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgIlBsdWdpbiAlciBjb3VsZCBub3QgYmUgbG9h
ZGVkOiAlcyEiICUgKGVwLm5hbWUsIGUpKQotICAgICAgICAgICAgc2VsZi5yZWdpc3RlcihwbHVn
aW4sIG5hbWU9ZXAubmFtZSkKLSAgICAgICAgICAgIHNlbGYuX3BsdWdpbl9kaXN0aW5mby5hcHBl
bmQoKHBsdWdpbiwgZXAuZGlzdCkpCi0gICAgICAgIHJldHVybiBsZW4oc2VsZi5fcGx1Z2luX2Rp
c3RpbmZvKQotCi0gICAgZGVmIGxpc3RfcGx1Z2luX2Rpc3RpbmZvKHNlbGYpOgotICAgICAgICAi
IiIgcmV0dXJuIGxpc3Qgb2YgZGlzdGluZm8vcGx1Z2luIHR1cGxlcyBmb3IgYWxsIHNldHVwdG9v
bHMgcmVnaXN0ZXJlZAotICAgICAgICBwbHVnaW5zLiAiIiIKLSAgICAgICAgcmV0dXJuIGxpc3Qo
c2VsZi5fcGx1Z2luX2Rpc3RpbmZvKQotCi0gICAgZGVmIGxpc3RfbmFtZV9wbHVnaW4oc2VsZik6
Ci0gICAgICAgICIiIiByZXR1cm4gbGlzdCBvZiBuYW1lL3BsdWdpbiBwYWlycy4gIiIiCi0gICAg
ICAgIHJldHVybiBsaXN0KHNlbGYuX25hbWUycGx1Z2luLml0ZW1zKCkpCi0KLSAgICBkZWYgZ2V0
X2hvb2tjYWxsZXJzKHNlbGYsIHBsdWdpbik6Ci0gICAgICAgICIiIiBnZXQgYWxsIGhvb2sgY2Fs
bGVycyBmb3IgdGhlIHNwZWNpZmllZCBwbHVnaW4uICIiIgotICAgICAgICByZXR1cm4gc2VsZi5f
cGx1Z2luMmhvb2tjYWxsZXJzLmdldChwbHVnaW4pCi0KLSAgICBkZWYgYWRkX2hvb2tjYWxsX21v
bml0b3Jpbmcoc2VsZiwgYmVmb3JlLCBhZnRlcik6Ci0gICAgICAgICIiIiBhZGQgYmVmb3JlL2Fm
dGVyIHRyYWNpbmcgZnVuY3Rpb25zIGZvciBhbGwgaG9va3MKLSAgICAgICAgYW5kIHJldHVybiBh
biB1bmRvIGZ1bmN0aW9uIHdoaWNoLCB3aGVuIGNhbGxlZCwKLSAgICAgICAgd2lsbCByZW1vdmUg
dGhlIGFkZGVkIHRyYWNlcnMuCi0KLSAgICAgICAgYGBiZWZvcmUoaG9va19uYW1lLCBob29rX2lt
cGxzLCBrd2FyZ3MpYGAgd2lsbCBiZSBjYWxsZWQgYWhlYWQKLSAgICAgICAgb2YgYWxsIGhvb2sg
Y2FsbHMgYW5kIHJlY2VpdmUgYSBob29rY2FsbGVyIGluc3RhbmNlLCBhIGxpc3QKLSAgICAgICAg
b2YgSG9va0ltcGwgaW5zdGFuY2VzIGFuZCB0aGUga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSBo
b29rIGNhbGwuCi0KLSAgICAgICAgYGBhZnRlcihvdXRjb21lLCBob29rX25hbWUsIGhvb2tfaW1w
bHMsIGt3YXJncylgYCByZWNlaXZlcyB0aGUKLSAgICAgICAgc2FtZSBhcmd1bWVudHMgYXMgYGBi
ZWZvcmVgYCBidXQgYWxzbyBhIDpweTpjbGFzczpgX1Jlc3VsdGBgIG9iamVjdAotICAgICAgICB3
aGljaCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgdGhlIG92ZXJhbGwgaG9vayBjYWxsLgotICAg
ICAgICAiIiIKLSAgICAgICAgcmV0dXJuIF9UcmFjZWRIb29rRXhlY3V0aW9uKHNlbGYsIGJlZm9y
ZSwgYWZ0ZXIpLnVuZG8KLQotICAgIGRlZiBlbmFibGVfdHJhY2luZyhzZWxmKToKLSAgICAgICAg
IiIiIGVuYWJsZSB0cmFjaW5nIG9mIGhvb2sgY2FsbHMgYW5kIHJldHVybiBhbiB1bmRvIGZ1bmN0
aW9uLiAiIiIKLSAgICAgICAgaG9va3RyYWNlID0gc2VsZi5ob29rLl90cmFjZQotCi0gICAgICAg
IGRlZiBiZWZvcmUoaG9va19uYW1lLCBtZXRob2RzLCBrd2FyZ3MpOgotICAgICAgICAgICAgaG9v
a3RyYWNlLnJvb3QuaW5kZW50ICs9IDEKLSAgICAgICAgICAgIGhvb2t0cmFjZShob29rX25hbWUs
IGt3YXJncykKLQotICAgICAgICBkZWYgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lLCBtZXRob2Rz
LCBrd2FyZ3MpOgotICAgICAgICAgICAgaWYgb3V0Y29tZS5leGNpbmZvIGlzIE5vbmU6Ci0gICAg
ICAgICAgICAgICAgaG9va3RyYWNlKCJmaW5pc2giLCBob29rX25hbWUsICItLT4iLCBvdXRjb21l
LmdldF9yZXN1bHQoKSkKLSAgICAgICAgICAgIGhvb2t0cmFjZS5yb290LmluZGVudCAtPSAxCi0K
LSAgICAgICAgcmV0dXJuIHNlbGYuYWRkX2hvb2tjYWxsX21vbml0b3JpbmcoYmVmb3JlLCBhZnRl
cikKLQotICAgIGRlZiBzdWJzZXRfaG9va19jYWxsZXIoc2VsZiwgbmFtZSwgcmVtb3ZlX3BsdWdp
bnMpOgotICAgICAgICAiIiIgUmV0dXJuIGEgbmV3IF9Ib29rQ2FsbGVyIGluc3RhbmNlIGZvciB0
aGUgbmFtZWQgbWV0aG9kCi0gICAgICAgIHdoaWNoIG1hbmFnZXMgY2FsbHMgdG8gYWxsIHJlZ2lz
dGVyZWQgcGx1Z2lucyBleGNlcHQgdGhlCi0gICAgICAgIG9uZXMgZnJvbSByZW1vdmVfcGx1Z2lu
cy4gIiIiCi0gICAgICAgIG9yaWcgPSBnZXRhdHRyKHNlbGYuaG9vaywgbmFtZSkKLSAgICAgICAg
cGx1Z2luc190b19yZW1vdmUgPSBbcGx1ZyBmb3IgcGx1ZyBpbiByZW1vdmVfcGx1Z2lucyBpZiBo
YXNhdHRyKHBsdWcsIG5hbWUpXQotICAgICAgICBpZiBwbHVnaW5zX3RvX3JlbW92ZToKLSAgICAg
ICAgICAgIGhjID0gX0hvb2tDYWxsZXIob3JpZy5uYW1lLCBvcmlnLl9ob29rZXhlYywgb3JpZy5f
c3BlY21vZHVsZV9vcl9jbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZy5z
cGVjX29wdHMpCi0gICAgICAgICAgICBmb3IgaG9va2ltcGwgaW4gKG9yaWcuX3dyYXBwZXJzICsg
b3JpZy5fbm9ud3JhcHBlcnMpOgotICAgICAgICAgICAgICAgIHBsdWdpbiA9IGhvb2tpbXBsLnBs
dWdpbgotICAgICAgICAgICAgICAgIGlmIHBsdWdpbiBub3QgaW4gcGx1Z2luc190b19yZW1vdmU6
Ci0gICAgICAgICAgICAgICAgICAgIGhjLl9hZGRfaG9va2ltcGwoaG9va2ltcGwpCi0gICAgICAg
ICAgICAgICAgICAgICMgd2UgYWxzbyBrZWVwIHRyYWNrIG9mIHRoaXMgaG9vayBjYWxsZXIgc28g
aXQKLSAgICAgICAgICAgICAgICAgICAgIyBnZXRzIHByb3Blcmx5IHJlbW92ZWQgb24gcGx1Z2lu
IHVucmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BsdWdpbjJob29rY2Fs
bGVycy5zZXRkZWZhdWx0KHBsdWdpbiwgW10pLmFwcGVuZChoYykKLSAgICAgICAgICAgIHJldHVy
biBoYwotICAgICAgICByZXR1cm4gb3JpZwotCi0KLWRlZiB2YXJuYW1lcyhmdW5jKToKLSAgICAi
IiJSZXR1cm4gdHVwbGUgb2YgcG9zaXRpb25hbCBhbmQga2V5d3JvcmQgYXJndW1lbnQgbmFtZXMg
Zm9yIGEgZnVuY3Rpb24sCi0gICAgbWV0aG9kLCBjbGFzcyBvciBjYWxsYWJsZS4KLQotICAgIElu
IGNhc2Ugb2YgYSBjbGFzcywgaXRzIGBgX19pbml0X19gYCBtZXRob2QgaXMgY29uc2lkZXJlZC4K
LSAgICBGb3IgbWV0aG9kcyB0aGUgYGBzZWxmYGAgcGFyYW1ldGVyIGlzIG5vdCBpbmNsdWRlZC4K
LSAgICAiIiIKLSAgICBjYWNoZSA9IGdldGF0dHIoZnVuYywgIl9fZGljdF9fIiwge30pCi0gICAg
dHJ5OgotICAgICAgICByZXR1cm4gY2FjaGVbIl92YXJuYW1lcyJdCi0gICAgZXhjZXB0IEtleUVy
cm9yOgotICAgICAgICBwYXNzCi0KLSAgICBpZiBpbnNwZWN0LmlzY2xhc3MoZnVuYyk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9faW5pdF9fCi0gICAgICAgIGV4Y2Vw
dCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAoKSwgKCkKLSAgICBlbGlmIG5v
dCBpbnNwZWN0Lmlzcm91dGluZShmdW5jKTogICMgY2FsbGFibGUgb2JqZWN0PwotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihmdW5jLCAnX19jYWxsX18nLCBmdW5jKQot
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuICgpCi0KLSAgICB0
cnk6ICAjIGZ1bmMgTVVTVCBiZSBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBoZXJlIG9yIHdlIHdvbid0
IHBhcnNlIGFueSBhcmdzCi0gICAgICAgIHNwZWMgPSBfZ2V0YXJnc3BlYyhmdW5jKQotICAgIGV4
Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgIHJldHVybiAoKSwgKCkKLQotICAgIGFyZ3MsIGRlZmF1
bHRzID0gdHVwbGUoc3BlYy5hcmdzKSwgc3BlYy5kZWZhdWx0cwotICAgIGlmIGRlZmF1bHRzOgot
ICAgICAgICBpbmRleCA9IC1sZW4oZGVmYXVsdHMpCi0gICAgICAgIGFyZ3MsIGRlZmF1bHRzID0g
YXJnc1s6aW5kZXhdLCB0dXBsZShhcmdzW2luZGV4Ol0pCi0gICAgZWxzZToKLSAgICAgICAgZGVm
YXVsdHMgPSAoKQotCi0gICAgIyBzdHJpcCBhbnkgaW1wbGljaXQgaW5zdGFuY2UgYXJnCi0gICAg
aWYgYXJnczoKLSAgICAgICAgaWYgaW5zcGVjdC5pc21ldGhvZChmdW5jKSBvciAoCi0gICAgICAg
ICAgICAnLicgaW4gZ2V0YXR0cihmdW5jLCAnX19xdWFsbmFtZV9fJywgKCkpIGFuZCBhcmdzWzBd
ID09ICdzZWxmJwotICAgICAgICApOgotICAgICAgICAgICAgYXJncyA9IGFyZ3NbMTpdCi0KLSAg
ICBhc3NlcnQgInNlbGYiIG5vdCBpbiBhcmdzICAjIGJlc3QgbmFtaW5nIHByYWN0aXNlcyBjaGVj
az8KLSAgICB0cnk6Ci0gICAgICAgIGNhY2hlWyJfdmFybmFtZXMiXSA9IGFyZ3MsIGRlZmF1bHRz
Ci0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIHJldHVybiBhcmdzLCBk
ZWZhdWx0cwotCi0KLWNsYXNzIF9Ib29rUmVsYXkob2JqZWN0KToKLSAgICAiIiIgaG9vayBob2xk
ZXIgb2JqZWN0IGZvciBwZXJmb3JtaW5nIDE6TiBob29rIGNhbGxzIHdoZXJlIE4gaXMgdGhlIG51
bWJlcgotICAgIG9mIHJlZ2lzdGVyZWQgcGx1Z2lucy4KLQotICAgICIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRyYWNlKToKLSAgICAgICAgc2VsZi5fdHJhY2UgPSB0cmFjZQotCi0KLWNs
YXNzIF9Ib29rQ2FsbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGhv
b2tfZXhlY3V0ZSwgc3BlY21vZHVsZV9vcl9jbGFzcz1Ob25lLAotICAgICAgICAgICAgICAgICBz
cGVjX29wdHM9Tm9uZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5f
d3JhcHBlcnMgPSBbXQotICAgICAgICBzZWxmLl9ub253cmFwcGVycyA9IFtdCi0gICAgICAgIHNl
bGYuX2hvb2tleGVjID0gaG9va19leGVjdXRlCi0gICAgICAgIHNlbGYuX3NwZWNtb2R1bGVfb3Jf
Y2xhc3MgPSBOb25lCi0gICAgICAgIHNlbGYuYXJnbmFtZXMgPSBOb25lCi0gICAgICAgIHNlbGYu
a3dhcmduYW1lcyA9IE5vbmUKLSAgICAgICAgc2VsZi5tdWx0aWNhbGwgPSBfbXVsdGljYWxsCi0g
ICAgICAgIHNlbGYuc3BlY19vcHRzID0gc3BlY19vcHRzIG9yIHt9Ci0gICAgICAgIGlmIHNwZWNt
b2R1bGVfb3JfY2xhc3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldF9zcGVjaWZp
Y2F0aW9uKHNwZWNtb2R1bGVfb3JfY2xhc3MsIHNwZWNfb3B0cykKLQotICAgIGRlZiBoYXNfc3Bl
YyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNtb2R1bGVfb3JfY2xhc3MgaXMgbm90
IE5vbmUKLQotICAgIGRlZiBzZXRfc3BlY2lmaWNhdGlvbihzZWxmLCBzcGVjbW9kdWxlX29yX2Ns
YXNzLCBzcGVjX29wdHMpOgotICAgICAgICBhc3NlcnQgbm90IHNlbGYuaGFzX3NwZWMoKQotICAg
ICAgICBzZWxmLl9zcGVjbW9kdWxlX29yX2NsYXNzID0gc3BlY21vZHVsZV9vcl9jbGFzcwotICAg
ICAgICBzcGVjZnVuYyA9IGdldGF0dHIoc3BlY21vZHVsZV9vcl9jbGFzcywgc2VsZi5uYW1lKQot
ICAgICAgICAjIGdldCBzcGVjIGFyZyBzaWduYXR1cmUKLSAgICAgICAgYXJnbmFtZXMsIHNlbGYu
a3dhcmduYW1lcyA9IHZhcm5hbWVzKHNwZWNmdW5jKQotICAgICAgICBzZWxmLmFyZ25hbWVzID0g
WyJfX211bHRpY2FsbF9fIl0gKyBsaXN0KGFyZ25hbWVzKQotICAgICAgICBzZWxmLnNwZWNfb3B0
cy51cGRhdGUoc3BlY19vcHRzKQotICAgICAgICBpZiBzcGVjX29wdHMuZ2V0KCJoaXN0b3JpYyIp
OgotICAgICAgICAgICAgc2VsZi5fY2FsbF9oaXN0b3J5ID0gW10KLQotICAgIGRlZiBpc19oaXN0
b3JpYyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2F0dHIoc2VsZiwgIl9jYWxsX2hpc3Rvcnki
KQotCi0gICAgZGVmIF9yZW1vdmVfcGx1Z2luKHNlbGYsIHBsdWdpbik6Ci0gICAgICAgIGRlZiBy
ZW1vdmUod3JhcHBlcnMpOgotICAgICAgICAgICAgZm9yIGksIG1ldGhvZCBpbiBlbnVtZXJhdGUo
d3JhcHBlcnMpOgotICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5wbHVnaW4gPT0gcGx1Z2luOgot
ICAgICAgICAgICAgICAgICAgICBkZWwgd3JhcHBlcnNbaV0KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKLSAgICAgICAgaWYgcmVtb3ZlKHNlbGYuX3dyYXBwZXJzKSBpcyBOb25lOgot
ICAgICAgICAgICAgaWYgcmVtb3ZlKHNlbGYuX25vbndyYXBwZXJzKSBpcyBOb25lOgotICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBsdWdpbiAlciBub3QgZm91bmQiICUgKHBsdWdp
biwpKQotCi0gICAgZGVmIF9hZGRfaG9va2ltcGwoc2VsZiwgaG9va2ltcGwpOgotICAgICAgICAi
IiJBIGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjYWxsYmFjayBjaGFpbi4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGlmIGhvb2tpbXBsLmhvb2t3cmFwcGVyOgotICAgICAgICAgICAgbWV0aG9kcyA9
IHNlbGYuX3dyYXBwZXJzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtZXRob2RzID0gc2Vs
Zi5fbm9ud3JhcHBlcnMKLQotICAgICAgICBpZiBob29raW1wbC50cnlsYXN0OgotICAgICAgICAg
ICAgbWV0aG9kcy5pbnNlcnQoMCwgaG9va2ltcGwpCi0gICAgICAgIGVsaWYgaG9va2ltcGwudHJ5
Zmlyc3Q6Ci0gICAgICAgICAgICBtZXRob2RzLmFwcGVuZChob29raW1wbCkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICMgZmluZCBsYXN0IG5vbi10cnlmaXJzdCBtZXRob2QKLSAgICAgICAg
ICAgIGkgPSBsZW4obWV0aG9kcykgLSAxCi0gICAgICAgICAgICB3aGlsZSBpID49IDAgYW5kIG1l
dGhvZHNbaV0udHJ5Zmlyc3Q6Ci0gICAgICAgICAgICAgICAgaSAtPSAxCi0gICAgICAgICAgICBt
ZXRob2RzLmluc2VydChpICsgMSwgaG9va2ltcGwpCi0KLSAgICAgICAgaWYgJ19fbXVsdGljYWxs
X18nIGluIGhvb2tpbXBsLmFyZ25hbWVzOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAg
ICAgICAgICAgICAgICAiU3VwcG9ydCBmb3IgX19tdWx0aWNhbGxfXyBpcyBub3cgZGVwcmVjYXRl
ZCBhbmQgd2lsbCBiZSIKLSAgICAgICAgICAgICAgICAicmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBy
ZWxlYXNlLiIsCi0gICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nCi0gICAgICAgICAg
ICApCi0gICAgICAgICAgICBzZWxmLm11bHRpY2FsbCA9IF9sZWdhY3ltdWx0aWNhbGwKLQotICAg
IGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8X0hvb2tDYWxsZXIgJXI+IiAl
IChzZWxmLm5hbWUsKQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6
Ci0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImhvb2sgY2Fs
bGluZyBzdXBwb3J0cyBvbmx5IGtleXdvcmQgYXJndW1lbnRzIikKLSAgICAgICAgYXNzZXJ0IG5v
dCBzZWxmLmlzX2hpc3RvcmljKCkKLSAgICAgICAgaWYgc2VsZi5hcmduYW1lczoKLSAgICAgICAg
ICAgIG5vdGluY2FsbCA9IHNldChzZWxmLmFyZ25hbWVzKSAtIHNldChbJ19fbXVsdGljYWxsX18n
XSkgLSBzZXQoCi0gICAgICAgICAgICAgICAga3dhcmdzLmtleXMoKSkKLSAgICAgICAgICAgIGlm
IG5vdGluY2FsbDoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAg
ICAgICAgICAiQXJndW1lbnQocykge30gd2hpY2ggYXJlIGRlY2xhcmVkIGluIHRoZSBob29rc3Bl
YyAiCi0gICAgICAgICAgICAgICAgICAgICJjYW4gbm90IGJlIGZvdW5kIGluIHRoaXMgaG9vayBj
YWxsIgotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHR1cGxlKG5vdGluY2FsbCkpLAotICAg
ICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsCi0gICAgICAgICAgICAgICAgKQotICAgICAg
ICByZXR1cm4gc2VsZi5faG9va2V4ZWMoc2VsZiwgc2VsZi5fbm9ud3JhcHBlcnMgKyBzZWxmLl93
cmFwcGVycywga3dhcmdzKQotCi0gICAgZGVmIGNhbGxfaGlzdG9yaWMoc2VsZiwgcHJvYz1Ob25l
LCBrd2FyZ3M9Tm9uZSk6Ci0gICAgICAgICIiIiBjYWxsIHRoZSBob29rIHdpdGggZ2l2ZW4gYGBr
d2FyZ3NgYCBmb3IgYWxsIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbmQKLSAgICAgICAgZm9yIGFsbCBw
bHVnaW5zIHdoaWNoIHdpbGwgYmUgcmVnaXN0ZXJlZCBhZnRlcndhcmRzLgotCi0gICAgICAgIElm
IGBgcHJvY2BgIGlzIG5vdCBOb25lIGl0IHdpbGwgYmUgY2FsbGVkIGZvciBmb3IgZWFjaCBub24t
Tm9uZSByZXN1bHQKLSAgICAgICAgb2J0YWluZWQgZnJvbSBhIGhvb2sgaW1wbGVtZW50YXRpb24u
Ci0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9jYWxsX2hpc3RvcnkuYXBwZW5kKChrd2FyZ3Mg
b3Ige30sIHByb2MpKQotICAgICAgICAjIGhpc3Rvcml6aW5nIGhvb2tzIGRvbid0IHJldHVybiBy
ZXN1bHRzCi0gICAgICAgIHJlcyA9IHNlbGYuX2hvb2tleGVjKHNlbGYsIHNlbGYuX25vbndyYXBw
ZXJzICsgc2VsZi5fd3JhcHBlcnMsIGt3YXJncykKLSAgICAgICAgZm9yIHggaW4gcmVzIG9yIFtd
OgotICAgICAgICAgICAgcHJvYyh4KQotCi0gICAgZGVmIGNhbGxfZXh0cmEoc2VsZiwgbWV0aG9k
cywga3dhcmdzKToKLSAgICAgICAgIiIiIENhbGwgdGhlIGhvb2sgd2l0aCBzb21lIGFkZGl0aW9u
YWwgdGVtcG9yYXJpbHkgcGFydGljaXBhdGluZwotICAgICAgICBtZXRob2RzIHVzaW5nIHRoZSBz
cGVjaWZpZWQga3dhcmdzIGFzIGNhbGwgcGFyYW1ldGVycy4gIiIiCi0gICAgICAgIG9sZCA9IGxp
c3Qoc2VsZi5fbm9ud3JhcHBlcnMpLCBsaXN0KHNlbGYuX3dyYXBwZXJzKQotICAgICAgICBmb3Ig
bWV0aG9kIGluIG1ldGhvZHM6Ci0gICAgICAgICAgICBvcHRzID0gZGljdChob29rd3JhcHBlcj1G
YWxzZSwgdHJ5bGFzdD1GYWxzZSwgdHJ5Zmlyc3Q9RmFsc2UpCi0gICAgICAgICAgICBob29raW1w
bCA9IEhvb2tJbXBsKE5vbmUsICI8dGVtcD4iLCBtZXRob2QsIG9wdHMpCi0gICAgICAgICAgICBz
ZWxmLl9hZGRfaG9va2ltcGwoaG9va2ltcGwpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmKCoqa3dhcmdzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5f
bm9ud3JhcHBlcnMsIHNlbGYuX3dyYXBwZXJzID0gb2xkCi0KLSAgICBkZWYgX21heWJlX2FwcGx5
X2hpc3Rvcnkoc2VsZiwgbWV0aG9kKToKLSAgICAgICAgIiIiQXBwbHkgY2FsbCBoaXN0b3J5IHRv
IGEgbmV3IGhvb2tpbXBsIGlmIGl0IGlzIG1hcmtlZCBhcyBoaXN0b3JpYy4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGlmIHNlbGYuaXNfaGlzdG9yaWMoKToKLSAgICAgICAgICAgIGZvciBrd2FyZ3Ms
IHByb2MgaW4gc2VsZi5fY2FsbF9oaXN0b3J5OgotICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYu
X2hvb2tleGVjKHNlbGYsIFttZXRob2RdLCBrd2FyZ3MpCi0gICAgICAgICAgICAgICAgaWYgcmVz
IGFuZCBwcm9jIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBwcm9jKHJlc1swXSkK
LQotCi1jbGFzcyBIb29rSW1wbChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbHVn
aW4sIHBsdWdpbl9uYW1lLCBmdW5jdGlvbiwgaG9va19pbXBsX29wdHMpOgotICAgICAgICBzZWxm
LmZ1bmN0aW9uID0gZnVuY3Rpb24KLSAgICAgICAgc2VsZi5hcmduYW1lcywgc2VsZi5rd2FyZ25h
bWVzID0gdmFybmFtZXMoc2VsZi5mdW5jdGlvbikKLSAgICAgICAgc2VsZi5wbHVnaW4gPSBwbHVn
aW4KLSAgICAgICAgc2VsZi5vcHRzID0gaG9va19pbXBsX29wdHMKLSAgICAgICAgc2VsZi5wbHVn
aW5fbmFtZSA9IHBsdWdpbl9uYW1lCi0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGhvb2tf
aW1wbF9vcHRzKQotCi0KLWlmIGhhc2F0dHIoaW5zcGVjdCwgJ2dldGZ1bGxhcmdzcGVjJyk6Ci0g
ICAgZGVmIF9nZXRhcmdzcGVjKGZ1bmMpOgotICAgICAgICByZXR1cm4gaW5zcGVjdC5nZXRmdWxs
YXJnc3BlYyhmdW5jKQotZWxzZToKLSAgICBkZWYgX2dldGFyZ3NwZWMoZnVuYyk6Ci0gICAgICAg
IHJldHVybiBpbnNwZWN0LmdldGFyZ3NwZWMoZnVuYykKLQotCi1pZiBoYXNhdHRyKGluc3BlY3Qs
ICdzaWduYXR1cmUnKToKLSAgICBkZWYgX2Zvcm1hdGRlZihmdW5jKToKLSAgICAgICAgcmV0dXJu
ICIlcyVzIiAlICgKLSAgICAgICAgICAgIGZ1bmMuX19uYW1lX18sCi0gICAgICAgICAgICBzdHIo
aW5zcGVjdC5zaWduYXR1cmUoZnVuYykpCi0gICAgICAgICkKLWVsc2U6Ci0gICAgZGVmIF9mb3Jt
YXRkZWYoZnVuYyk6Ci0gICAgICAgIHJldHVybiAiJXMlcyIgJSAoCi0gICAgICAgICAgICBmdW5j
Ll9fbmFtZV9fLAotICAgICAgICAgICAgaW5zcGVjdC5mb3JtYXRhcmdzcGVjKCppbnNwZWN0Lmdl
dGFyZ3NwZWMoZnVuYykpCi0gICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3BsdWdn
eS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3BsdWdneS93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQwZDVhMDkzN2Q4Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvcGx1Z2d5L2NhbGxlcnMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3B5cHJv
amVjdC50b21sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcHlwcm9qZWN0LnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MTFjZjUzZWQzYmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS9weXByb2plY3QudG9tbApAQCAtMCwwICsxLDQ0IEBACitbYnVpbGQtc3lzdGVt
XQorcmVxdWlyZXMgPSBbCisgICJzZXR1cHRvb2xzIiwKKyAgInNldHVwdG9vbHMtc2NtIiwKKyAg
IndoZWVsIiwKK10KKworW3Rvb2wudG93bmNyaWVyXQorcGFja2FnZSA9ICJwbHVnZ3kiCitwYWNr
YWdlX2RpciA9ICJzcmMvcGx1Z2d5IgorZmlsZW5hbWUgPSAiQ0hBTkdFTE9HLnJzdCIKK2RpcmVj
dG9yeSA9ICJjaGFuZ2Vsb2cvIgordGl0bGVfZm9ybWF0ID0gInBsdWdneSB7dmVyc2lvbn0gKHtw
cm9qZWN0X2RhdGV9KSIKK3RlbXBsYXRlID0gImNoYW5nZWxvZy9fdGVtcGxhdGUucnN0IgorCisg
IFtbdG9vbC50b3duY3JpZXIudHlwZV1dCisgIGRpcmVjdG9yeSA9ICJyZW1vdmFsIgorICBuYW1l
ID0gIkRlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMiCisgIHNob3djb250ZW50ID0gdHJ1ZQorCisg
IFtbdG9vbC50b3duY3JpZXIudHlwZV1dCisgIGRpcmVjdG9yeSA9ICJmZWF0dXJlIgorICBuYW1l
ID0gIkZlYXR1cmVzIgorICBzaG93Y29udGVudCA9IHRydWUKKworICBbW3Rvb2wudG93bmNyaWVy
LnR5cGVdXQorICBkaXJlY3RvcnkgPSAiYnVnZml4IgorICBuYW1lID0gIkJ1ZyBGaXhlcyIKKyAg
c2hvd2NvbnRlbnQgPSB0cnVlCisKKyAgW1t0b29sLnRvd25jcmllci50eXBlXV0KKyAgZGlyZWN0
b3J5ID0gInZlbmRvciIKKyAgbmFtZSA9ICJWZW5kb3JlZCBMaWJyYXJpZXMiCisgIHNob3djb250
ZW50ID0gdHJ1ZQorCisgIFtbdG9vbC50b3duY3JpZXIudHlwZV1dCisgIGRpcmVjdG9yeSA9ICJk
b2MiCisgIG5hbWUgPSAiSW1wcm92ZWQgRG9jdW1lbnRhdGlvbiIKKyAgc2hvd2NvbnRlbnQgPSB0
cnVlCisKKyAgW1t0b29sLnRvd25jcmllci50eXBlXV0KKyAgZGlyZWN0b3J5ID0gInRyaXZpYWwi
CisgIG5hbWUgPSAiVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzIgorICBzaG93Y29udGVudCA9IHRy
dWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NjcmlwdHMvcmVsZWFzZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3NjcmlwdHMvcmVsZWFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmE0YTE4YTRjNzhkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Njcmlw
dHMvcmVsZWFzZS5weQpAQCAtMCwwICsxLDY5IEBACisiIiIKK1JlbGVhc2Ugc2NyaXB0LgorIiIi
CitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBzeXMKK2Zyb20gc3VicHJvY2VzcyBpbXBvcnQgY2hl
Y2tfY2FsbAorCitmcm9tIGNvbG9yYW1hIGltcG9ydCBpbml0LCBGb3JlCitmcm9tIGdpdCBpbXBv
cnQgUmVwbywgUmVtb3RlCisKKworZGVmIGNyZWF0ZV9icmFuY2godmVyc2lvbik6CisgICAgIiIi
Q3JlYXRlIGEgZnJlc2ggYnJhbmNoIGZyb20gdXBzdHJlYW0vbWFzdGVyIiIiCisgICAgcmVwbyA9
IFJlcG8uaW5pdCgiLiIpCisgICAgaWYgcmVwby5pc19kaXJ0eSh1bnRyYWNrZWRfZmlsZXM9VHJ1
ZSk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIlJlcG9zaXRvcnkgaXMgZGlydHksIHBs
ZWFzZSBjb21taXQvc3Rhc2ggeW91ciBjaGFuZ2VzLiIpCisKKyAgICBicmFuY2hfbmFtZSA9IGYi
cmVsZWFzZS17dmVyc2lvbn0iCisgICAgcHJpbnQoZiJ7Rm9yZS5DWUFOfUNyZWF0ZSB7YnJhbmNo
X25hbWV9IGJyYW5jaCBmcm9tIHVwc3RyZWFtIG1hc3RlciIpCisgICAgdXBzdHJlYW0gPSBnZXRf
dXBzdHJlYW0ocmVwbykKKyAgICB1cHN0cmVhbS5mZXRjaCgpCisgICAgcmVsZWFzZV9icmFuY2gg
PSByZXBvLmNyZWF0ZV9oZWFkKGJyYW5jaF9uYW1lLCB1cHN0cmVhbS5yZWZzLm1hc3RlciwgZm9y
Y2U9VHJ1ZSkKKyAgICByZWxlYXNlX2JyYW5jaC5jaGVja291dCgpCisgICAgcmV0dXJuIHJlcG8K
KworCitkZWYgZ2V0X3Vwc3RyZWFtKHJlcG86IFJlcG8pIC0+IFJlbW90ZToKKyAgICAiIiJGaW5k
IHVwc3RyZWFtIHJlcG9zaXRvcnkgZm9yIHBsdWdneSBvbiB0aGUgcmVtb3RlcyIiIgorICAgIGZv
ciByZW1vdGUgaW4gcmVwby5yZW1vdGVzOgorICAgICAgICBmb3IgdXJsIGluIHJlbW90ZS51cmxz
OgorICAgICAgICAgICAgaWYgdXJsLmVuZHN3aXRoKCgicHl0ZXN0LWRldi9wbHVnZ3kuZ2l0Iiwg
InB5dGVzdC1kZXYvcGx1Z2d5IikpOgorICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUKKyAg
ICByYWlzZSBSdW50aW1lRXJyb3IoImNvdWxkIG5vdCBmaW5kIHB5dGVzdC1kZXYvcGx1Z2d5IHJl
bW90ZSIpCisKKworZGVmIHByZV9yZWxlYXNlKHZlcnNpb24pOgorICAgICIiIkdlbmVyYXRlcyBu
ZXcgZG9jcywgcmVsZWFzZSBhbm5vdW5jZW1lbnRzIGFuZCBjcmVhdGVzIGEgbG9jYWwgdGFnLiIi
IgorICAgIGNyZWF0ZV9icmFuY2godmVyc2lvbikKKyAgICBjaGFuZ2Vsb2codmVyc2lvbiwgd3Jp
dGVfb3V0PVRydWUpCisKKyAgICBjaGVja19jYWxsKFsiZ2l0IiwgImNvbW1pdCIsICItYSIsICIt
bSIsIGYiUHJlcGFyaW5nIHJlbGVhc2Uge3ZlcnNpb259Il0pCisKKyAgICBwcmludCgpCisgICAg
cHJpbnQoZiJ7Rm9yZS5HUkVFTn1QbGVhc2UgcHVzaCB5b3VyIGJyYW5jaCB0byB5b3VyIGZvcmsg
YW5kIG9wZW4gYSBQUi4iKQorCisKK2RlZiBjaGFuZ2Vsb2codmVyc2lvbiwgd3JpdGVfb3V0PUZh
bHNlKToKKyAgICBpZiB3cml0ZV9vdXQ6CisgICAgICAgIGFkZG9wdHMgPSBbXQorICAgIGVsc2U6
CisgICAgICAgIGFkZG9wdHMgPSBbIi0tZHJhZnQiXQorICAgIHByaW50KGYie0ZvcmUuQ1lBTn1H
ZW5lcmF0aW5nIENIQU5HRUxPRyIpCisgICAgY2hlY2tfY2FsbChbInRvd25jcmllciIsICItLXll
cyIsICItLXZlcnNpb24iLCB2ZXJzaW9uXSArIGFkZG9wdHMpCisKKworZGVmIG1haW4oKToKKyAg
ICBpbml0KGF1dG9yZXNldD1UcnVlKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJ2ZXJzaW9uIiwgaGVscD0iUmVsZWFzZSB2
ZXJzaW9uIikKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIHRyeToKKyAg
ICAgICAgcHJlX3JlbGVhc2Uob3B0aW9ucy52ZXJzaW9uKQorICAgIGV4Y2VwdCBSdW50aW1lRXJy
b3IgYXMgZToKKyAgICAgICAgcHJpbnQoZiJ7Rm9yZS5SRUR9RVJST1I6IHtlfSIpCisgICAgICAg
IHJldHVybiAxCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdCht
YWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zZXR1cC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Nl
dHVwLnB5CmluZGV4IGI3YzBmNjk3MTIwYS4uYWUyY2Q4NGMxMTllIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9zZXR1cC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zZXR1cC5weQpAQCAtMSw1MSArMSw0
OSBAQAotaW1wb3J0IG9zCiBmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCiAKIGNsYXNzaWZp
ZXJzID0gWwotICAgICdEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLAotICAgICdJbnRl
bmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywKLSAgICAnTGljZW5zZSA6OiBPU0kgQXBwcm92
ZWQgOjogTUlUIExpY2Vuc2UnLAotICAgICdPcGVyYXRpbmcgU3lzdGVtIDo6IFBPU0lYJywKLSAg
ICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBNaWNyb3NvZnQgOjogV2luZG93cycsCi0gICAgJ09wZXJh
dGluZyBTeXN0ZW0gOjogTWFjT1MgOjogTWFjT1MgWCcsCi0gICAgJ1RvcGljIDo6IFNvZnR3YXJl
IERldmVsb3BtZW50IDo6IFRlc3RpbmcnLAotICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9w
bWVudCA6OiBMaWJyYXJpZXMnLAotICAgICdUb3BpYyA6OiBVdGlsaXRpZXMnLAotICAgICdQcm9n
cmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbics
Ci0gICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiBJbXBsZW1lbnRhdGlvbiA6
OiBQeVB5J10gKyBbCi0gICAgKCdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogJXMn
ICUgeCkgZm9yIHggaW4KLSAgICAnMiAyLjcgMyAzLjQgMy41IDMuNicuc3BsaXQoKV0KLQotd2l0
aCBvcGVuKCdSRUFETUUucnN0JykgYXMgZmQ6Ci0gICAgbG9uZ19kZXNjcmlwdGlvbiA9IGZkLnJl
YWQoKQotCi0KLWRlZiBnZXRfdmVyc2lvbigpOgotICAgIHAgPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKAotICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9f
KSksICJwbHVnZ3kvX19pbml0X18ucHkiKQotICAgIHdpdGggb3BlbihwKSBhcyBmOgotICAgICAg
ICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgaWYgIl9fdmVyc2lvbl9f
IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lLnN0cmlwKCkuc3BsaXQoIj0i
KVstMV0uc3RyaXAoIiAnIikKLSAgICByYWlzZSBWYWx1ZUVycm9yKCJjb3VsZCBub3QgcmVhZCB2
ZXJzaW9uIikKKyAgICAiRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhIiwKKyAgICAiSW50
ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgIkxpY2Vuc2UgOjogT1NJIEFwcHJv
dmVkIDo6IE1JVCBMaWNlbnNlIiwKKyAgICAiT3BlcmF0aW5nIFN5c3RlbSA6OiBQT1NJWCIsCisg
ICAgIk9wZXJhdGluZyBTeXN0ZW0gOjogTWljcm9zb2Z0IDo6IFdpbmRvd3MiLAorICAgICJPcGVy
YXRpbmcgU3lzdGVtIDo6IE1hY09TIDo6IE1hY09TIFgiLAorICAgICJUb3BpYyA6OiBTb2Z0d2Fy
ZSBEZXZlbG9wbWVudCA6OiBUZXN0aW5nIiwKKyAgICAiVG9waWMgOjogU29mdHdhcmUgRGV2ZWxv
cG1lbnQgOjogTGlicmFyaWVzIiwKKyAgICAiVG9waWMgOjogVXRpbGl0aWVzIiwKKyAgICAiUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IEltcGxlbWVudGF0aW9uIDo6IENQeXRob24i
LAorICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24g
OjogUHlQeSIsCitdICsgWworICAgICgiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6
ICVzIiAlIHgpCisgICAgZm9yIHggaW4gIjIgMi43IDMgMy40IDMuNSAzLjYgMy43IDMuOCIuc3Bs
aXQoKQorXQorCit3aXRoIG9wZW4oIlJFQURNRS5yc3QiLCAicmIiKSBhcyBmZDoKKyAgICBsb25n
X2Rlc2NyaXB0aW9uID0gZmQucmVhZCgpLmRlY29kZSgidXRmLTgiKQorCit3aXRoIG9wZW4oIkNI
QU5HRUxPRy5yc3QiLCAicmIiKSBhcyBmZDoKKyAgICBsb25nX2Rlc2NyaXB0aW9uICs9ICJcblxu
IiArIGZkLnJlYWQoKS5kZWNvZGUoInV0Zi04IikKIAogCiBkZWYgbWFpbigpOgogICAgIHNldHVw
KAotICAgICAgICBuYW1lPSdwbHVnZ3knLAotICAgICAgICBkZXNjcmlwdGlvbj0ncGx1Z2luIGFu
ZCBob29rIGNhbGxpbmcgbWVjaGFuaXNtcyBmb3IgcHl0aG9uJywKKyAgICAgICAgbmFtZT0icGx1
Z2d5IiwKKyAgICAgICAgZGVzY3JpcHRpb249InBsdWdpbiBhbmQgaG9vayBjYWxsaW5nIG1lY2hh
bmlzbXMgZm9yIHB5dGhvbiIsCiAgICAgICAgIGxvbmdfZGVzY3JpcHRpb249bG9uZ19kZXNjcmlw
dGlvbiwKLSAgICAgICAgdmVyc2lvbj1nZXRfdmVyc2lvbigpLAotICAgICAgICBsaWNlbnNlPSdN
SVQgbGljZW5zZScsCi0gICAgICAgIHBsYXRmb3Jtcz1bJ3VuaXgnLCAnbGludXgnLCAnb3N4Jywg
J3dpbjMyJ10sCi0gICAgICAgIGF1dGhvcj0nSG9sZ2VyIEtyZWtlbCcsCi0gICAgICAgIGF1dGhv
cl9lbWFpbD0naG9sZ2VyQG1lcmxpbnV4LmV1JywKLSAgICAgICAgdXJsPSdodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3knLAotICAgICAgICBweXRob25fcmVxdWlyZXM9Jz49Mi43
LCAhPTMuMC4qLCAhPTMuMS4qLCAhPTMuMi4qLCAhPTMuMy4qJywKKyAgICAgICAgdXNlX3NjbV92
ZXJzaW9uPXsid3JpdGVfdG8iOiAic3JjL3BsdWdneS9fdmVyc2lvbi5weSJ9LAorICAgICAgICBz
ZXR1cF9yZXF1aXJlcz1bInNldHVwdG9vbHMtc2NtIl0sCisgICAgICAgIGxpY2Vuc2U9Ik1JVCBs
aWNlbnNlIiwKKyAgICAgICAgcGxhdGZvcm1zPVsidW5peCIsICJsaW51eCIsICJvc3giLCAid2lu
MzIiXSwKKyAgICAgICAgYXV0aG9yPSJIb2xnZXIgS3Jla2VsIiwKKyAgICAgICAgYXV0aG9yX2Vt
YWlsPSJob2xnZXJAbWVybGludXguZXUiLAorICAgICAgICB1cmw9Imh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3BsdWdneSIsCisgICAgICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0yLjcsICE9
My4wLiosICE9My4xLiosICE9My4yLiosICE9My4zLioiLAorICAgICAgICBpbnN0YWxsX3JlcXVp
cmVzPVsnaW1wb3J0bGliLW1ldGFkYXRhPj0wLjEyO3B5dGhvbl92ZXJzaW9uPCIzLjgiJ10sCisg
ICAgICAgIGV4dHJhc19yZXF1aXJlPXsiZGV2IjogWyJwcmUtY29tbWl0IiwgInRveCJdfSwKICAg
ICAgICAgY2xhc3NpZmllcnM9Y2xhc3NpZmllcnMsCi0gICAgICAgIHBhY2thZ2VzPVsncGx1Z2d5
J10sCisgICAgICAgIHBhY2thZ2VzPVsicGx1Z2d5Il0sCisgICAgICAgIHBhY2thZ2VfZGlyPXsi
IjogInNyYyJ9LAogICAgICkKIAogCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgoraWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
L3NyYy9wbHVnZ3kvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L19faW5pdF9f
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmI0Zjk5MWE2MTAz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9fX2luaXRfXy5weQpA
QCAtMCwwICsxLDE4IEBACit0cnk6CisgICAgZnJvbSAuX3ZlcnNpb24gaW1wb3J0IHZlcnNpb24g
YXMgX192ZXJzaW9uX18KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIGJyb2tlbiBpbnN0YWxs
YXRpb24sIHdlIGRvbid0IGV2ZW4gdHJ5CisgICAgIyB1bmtub3duIG9ubHkgd29ya3MgYmVjYXVz
ZSB3ZSBkbyBwb29yIG1hbnMgdmVyc2lvbiBjb21wYXJlCisgICAgX192ZXJzaW9uX18gPSAidW5r
bm93biIKKworX19hbGxfXyA9IFsKKyAgICAiUGx1Z2luTWFuYWdlciIsCisgICAgIlBsdWdpblZh
bGlkYXRpb25FcnJvciIsCisgICAgIkhvb2tDYWxsRXJyb3IiLAorICAgICJIb29rc3BlY01hcmtl
ciIsCisgICAgIkhvb2tpbXBsTWFya2VyIiwKK10KKworZnJvbSAubWFuYWdlciBpbXBvcnQgUGx1
Z2luTWFuYWdlciwgUGx1Z2luVmFsaWRhdGlvbkVycm9yCitmcm9tIC5jYWxsZXJzIGltcG9ydCBI
b29rQ2FsbEVycm9yCitmcm9tIC5ob29rcyBpbXBvcnQgSG9va3NwZWNNYXJrZXIsIEhvb2tpbXBs
TWFya2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L190cmFjaW5nLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9fdHJhY2luZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjhiOTcxNWYwMjYxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L3NyYy9wbHVnZ3kvX3RyYWNpbmcucHkKQEAgLTAsMCArMSw2MiBAQAorIiIiCitUcmFj
aW5nIHV0aWxzCisiIiIKKworCitjbGFzcyBUYWdUcmFjZXIob2JqZWN0KToKKyAgICBkZWYgX19p
bml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3RhZ3MycHJvYyA9IHt9CisgICAgICAgIHNlbGYu
X3dyaXRlciA9IE5vbmUKKyAgICAgICAgc2VsZi5pbmRlbnQgPSAwCisKKyAgICBkZWYgZ2V0KHNl
bGYsIG5hbWUpOgorICAgICAgICByZXR1cm4gVGFnVHJhY2VyU3ViKHNlbGYsIChuYW1lLCkpCisK
KyAgICBkZWYgX2Zvcm1hdF9tZXNzYWdlKHNlbGYsIHRhZ3MsIGFyZ3MpOgorICAgICAgICBpZiBp
c2luc3RhbmNlKGFyZ3NbLTFdLCBkaWN0KToKKyAgICAgICAgICAgIGV4dHJhID0gYXJnc1stMV0K
KyAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzotMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGV4dHJhID0ge30KKworICAgICAgICBjb250ZW50ID0gIiAiLmpvaW4obWFwKHN0ciwgYXJncykp
CisgICAgICAgIGluZGVudCA9ICIgICIgKiBzZWxmLmluZGVudAorCisgICAgICAgIGxpbmVzID0g
WyIlcyVzIFslc11cbiIgJSAoaW5kZW50LCBjb250ZW50LCAiOiIuam9pbih0YWdzKSldCisKKyAg
ICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGV4dHJhLml0ZW1zKCk6CisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoIiVzICAgICVzOiAlc1xuIiAlIChpbmRlbnQsIG5hbWUsIHZhbHVlKSkKKworICAg
ICAgICByZXR1cm4gIiIuam9pbihsaW5lcykKKworICAgIGRlZiBfcHJvY2Vzc21lc3NhZ2Uoc2Vs
ZiwgdGFncywgYXJncyk6CisgICAgICAgIGlmIHNlbGYuX3dyaXRlciBpcyBub3QgTm9uZSBhbmQg
YXJnczoKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlcihzZWxmLl9mb3JtYXRfbWVzc2FnZSh0YWdz
LCBhcmdzKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5fdGFn
czJwcm9jW3RhZ3NdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByb2Nlc3Nvcih0YWdzLCBhcmdzKQorCisgICAg
ZGVmIHNldHdyaXRlcihzZWxmLCB3cml0ZXIpOgorICAgICAgICBzZWxmLl93cml0ZXIgPSB3cml0
ZXIKKworICAgIGRlZiBzZXRwcm9jZXNzb3Ioc2VsZiwgdGFncywgcHJvY2Vzc29yKToKKyAgICAg
ICAgaWYgaXNpbnN0YW5jZSh0YWdzLCBzdHIpOgorICAgICAgICAgICAgdGFncyA9IHR1cGxlKHRh
Z3Muc3BsaXQoIjoiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3Rh
bmNlKHRhZ3MsIHR1cGxlKQorICAgICAgICBzZWxmLl90YWdzMnByb2NbdGFnc10gPSBwcm9jZXNz
b3IKKworCitjbGFzcyBUYWdUcmFjZXJTdWIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgcm9vdCwgdGFncyk6CisgICAgICAgIHNlbGYucm9vdCA9IHJvb3QKKyAgICAgICAgc2VsZi50
YWdzID0gdGFncworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgc2Vs
Zi5yb290Ll9wcm9jZXNzbWVzc2FnZShzZWxmLnRhZ3MsIGFyZ3MpCisKKyAgICBkZWYgZ2V0KHNl
bGYsIG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5yb290LCBzZWxm
LnRhZ3MgKyAobmFtZSwpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L2NhbGxlcnMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L2NhbGxlcnMucHkKc2ltaWxhcml0eSBpbmRleCA5
MiUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L2NhbGxlcnMucHkKcmVuYW1lIHRvIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L3NyYy9wbHVnZ3kvY2FsbGVycy5weQppbmRleCAzZmY2N2JlY2ZmYmMuLmU3ZWE0
NjRiMGRhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L2NhbGxlcnMucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9jYWxsZXJzLnB5CkBAIC0xLDYgKzEsNiBAQAotJycnCisi
IiIKIENhbGwgbG9vcCBtYWNoaW5lcnkKLScnJworIiIiCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2Fy
bmluZ3MKIApAQCAtOCwxNiArOCwyMCBAQCBfcHkzID0gc3lzLnZlcnNpb25faW5mbyA+ICgzLCAw
KQogCiAKIGlmIG5vdCBfcHkzOgotICAgIGV4ZWMoIiIiCisgICAgZXhlYygKKyAgICAgICAgIiIi
CiBkZWYgX3JlcmFpc2UoY2xzLCB2YWwsIHRiKToKICAgICByYWlzZSBjbHMsIHZhbCwgdGIKLSIi
IikKKyIiIgorICAgICkKIAogCiBkZWYgX3JhaXNlX3dyYXBmYWlsKHdyYXBfY29udHJvbGxlciwg
bXNnKToKICAgICBjbyA9IHdyYXBfY29udHJvbGxlci5naV9jb2RlCi0gICAgcmFpc2UgUnVudGlt
ZUVycm9yKCJ3cmFwX2NvbnRyb2xsZXIgYXQgJXIgJXM6JWQgJXMiICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgKGNvLmNvX25hbWUsIGNvLmNvX2ZpbGVuYW1lLCBjby5jb19maXJzdGxpbmVubywg
bXNnKSkKKyAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICJ3cmFwX2NvbnRyb2xsZXIg
YXQgJXIgJXM6JWQgJXMiCisgICAgICAgICUgKGNvLmNvX25hbWUsIGNvLmNvX2ZpbGVuYW1lLCBj
by5jb19maXJzdGxpbmVubywgbXNnKQorICAgICkKIAogCiBjbGFzcyBIb29rQ2FsbEVycm9yKEV4
Y2VwdGlvbik6CkBAIC0zNiw3ICs0MCw3IEBAIGNsYXNzIF9SZXN1bHQob2JqZWN0KToKICAgICBA
cHJvcGVydHkKICAgICBkZWYgcmVzdWx0KHNlbGYpOgogICAgICAgICAiIiJHZXQgdGhlIHJlc3Vs
dChzKSBmb3IgdGhpcyBob29rIGNhbGwgKERFUFJFQ0FURUQgaW4gZmF2b3Igb2YgYGBnZXRfcmVz
dWx0KClgYCkuIiIiCi0gICAgICAgIG1zZyA9ICdVc2UgZ2V0X3Jlc3VsdCgpIHdoaWNoIGZvcmNl
cyBjb3JyZWN0IGV4Y2VwdGlvbiBoYW5kbGluZycKKyAgICAgICAgbXNnID0gIlVzZSBnZXRfcmVz
dWx0KCkgd2hpY2ggZm9yY2VzIGNvcnJlY3QgZXhjZXB0aW9uIGhhbmRsaW5nIgogICAgICAgICB3
YXJuaW5ncy53YXJuKERlcHJlY2F0aW9uV2FybmluZyhtc2cpLCBzdGFja2xldmVsPTIpCiAgICAg
ICAgIHJldHVybiBzZWxmLl9yZXN1bHQKIApAQCAtODQsNyArODgsNyBAQCBkZWYgX3dyYXBwZWRf
Y2FsbCh3cmFwX2NvbnRyb2xsZXIsIGZ1bmMpOgogICAgIHRvIGZpbmlzaCAocmFpc2UgU3RvcEl0
ZXJhdGlvbikgaW4gb3JkZXIgZm9yIHRoZSB3cmFwcGVkIGNhbGwgdG8gY29tcGxldGUuCiAgICAg
IiIiCiAgICAgdHJ5OgotICAgICAgICBuZXh0KHdyYXBfY29udHJvbGxlcikgICAjIGZpcnN0IHlp
ZWxkCisgICAgICAgIG5leHQod3JhcF9jb250cm9sbGVyKSAgIyBmaXJzdCB5aWVsZAogICAgIGV4
Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICBfcmFpc2Vfd3JhcGZhaWwod3JhcF9jb250cm9s
bGVyLCAiZGlkIG5vdCB5aWVsZCIpCiAgICAgY2FsbF9vdXRjb21lID0gX1Jlc3VsdC5mcm9tX2Nh
bGwoZnVuYykKQEAgLTEyNCw3ICsxMjgsOCBAQCBjbGFzcyBfTGVnYWN5TXVsdGlDYWxsKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgZm9yIGFyZ25hbWUgaW4gaG9va19pbXBsLmFyZ25hbWVzOgog
ICAgICAgICAgICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBpbiBjYWxsZXJfa3dhcmdzOgogICAg
ICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSG9va0NhbGxFcnJvcigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaG9vayBjYWxsIG11c3QgcHJvdmlkZSBhcmd1bWVudCAlciIgJSAoYXJn
bmFtZSwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob29rIGNhbGwgbXVzdCBwcm92
aWRlIGFyZ3VtZW50ICVyIiAlIChhcmduYW1lLCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkK
ICAgICAgICAgICAgIGlmIGhvb2tfaW1wbC5ob29rd3JhcHBlcjoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gX3dyYXBwZWRfY2FsbChob29rX2ltcGwuZnVuY3Rpb24oKmFyZ3MpLCBzZWxmLmV4ZWN1
dGUpCiAgICAgICAgICAgICByZXMgPSBob29rX2ltcGwuZnVuY3Rpb24oKmFyZ3MpCkBAIC0xNDUs
NyArMTUwLDggQEAgY2xhc3MgX0xlZ2FjeU11bHRpQ2FsbChvYmplY3QpOgogCiBkZWYgX2xlZ2Fj
eW11bHRpY2FsbChob29rX2ltcGxzLCBjYWxsZXJfa3dhcmdzLCBmaXJzdHJlc3VsdD1GYWxzZSk6
CiAgICAgcmV0dXJuIF9MZWdhY3lNdWx0aUNhbGwoCi0gICAgICAgIGhvb2tfaW1wbHMsIGNhbGxl
cl9rd2FyZ3MsIGZpcnN0cmVzdWx0PWZpcnN0cmVzdWx0KS5leGVjdXRlKCkKKyAgICAgICAgaG9v
a19pbXBscywgY2FsbGVyX2t3YXJncywgZmlyc3RyZXN1bHQ9Zmlyc3RyZXN1bHQKKyAgICApLmV4
ZWN1dGUoKQogCiAKIGRlZiBfbXVsdGljYWxsKGhvb2tfaW1wbHMsIGNhbGxlcl9rd2FyZ3MsIGZp
cnN0cmVzdWx0PUZhbHNlKToKQEAgLTE2NywxMiArMTczLDEzIEBAIGRlZiBfbXVsdGljYWxsKGhv
b2tfaW1wbHMsIGNhbGxlcl9rd2FyZ3MsIGZpcnN0cmVzdWx0PUZhbHNlKToKICAgICAgICAgICAg
ICAgICAgICAgZm9yIGFyZ25hbWUgaW4gaG9va19pbXBsLmFyZ25hbWVzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgYXJnbmFtZSBub3QgaW4gY2FsbGVyX2t3YXJnczoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByYWlzZSBIb29rQ2FsbEVycm9yKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaG9vayBjYWxsIG11c3QgcHJvdmlkZSBhcmd1bWVudCAlciIgJSAoYXJn
bmFtZSwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9vayBjYWxsIG11c3Qg
cHJvdmlkZSBhcmd1bWVudCAlciIgJSAoYXJnbmFtZSwpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKQogCiAgICAgICAgICAgICAgICAgaWYgaG9va19pbXBsLmhvb2t3cmFwcGVyOgogICAg
ICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW4gPSBob29r
X2ltcGwuZnVuY3Rpb24oKmFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0KGdlbikg
ICAjIGZpcnN0IHlpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KGdlbikgICMgZmly
c3QgeWllbGQKICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJkb3ducy5hcHBlbmQoZ2VuKQog
ICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9yYWlzZV93cmFwZmFpbChnZW4sICJkaWQgbm90IHlpZWxkIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L3NyYy9wbHVnZ3kvaG9va3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1
Z2d5L2hvb2tzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGEx
YzI4NzE5OGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9ob29r
cy5weQpAQCAtMCwwICsxLDM1OSBAQAorIiIiCitJbnRlcm5hbCBob29rIGFubm90YXRpb24sIHJl
cHJlc2VudGF0aW9uIGFuZCBjYWxsaW5nIG1hY2hpbmVyeS4KKyIiIgoraW1wb3J0IGluc3BlY3QK
K2ltcG9ydCBzeXMKK2ltcG9ydCB3YXJuaW5ncworZnJvbSAuY2FsbGVycyBpbXBvcnQgX2xlZ2Fj
eW11bHRpY2FsbCwgX211bHRpY2FsbAorCisKK2NsYXNzIEhvb2tzcGVjTWFya2VyKG9iamVjdCk6
CisgICAgIiIiIERlY29yYXRvciBoZWxwZXIgY2xhc3MgZm9yIG1hcmtpbmcgZnVuY3Rpb25zIGFz
IGhvb2sgc3BlY2lmaWNhdGlvbnMuCisKKyAgICBZb3UgY2FuIGluc3RhbnRpYXRlIGl0IHdpdGgg
YSBwcm9qZWN0X25hbWUgdG8gZ2V0IGEgZGVjb3JhdG9yLgorICAgIENhbGxpbmcgOnB5Om1ldGg6
YC5QbHVnaW5NYW5hZ2VyLmFkZF9ob29rc3BlY3NgIGxhdGVyIHdpbGwgZGlzY292ZXIgYWxsIG1h
cmtlZCBmdW5jdGlvbnMKKyAgICBpZiB0aGUgOnB5OmNsYXNzOmAuUGx1Z2luTWFuYWdlcmAgdXNl
cyB0aGUgc2FtZSBwcm9qZWN0X25hbWUuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcHJvamVjdF9uYW1lKToKKyAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUgPSBwcm9qZWN0X25h
bWUKKworICAgIGRlZiBfX2NhbGxfXygKKyAgICAgICAgc2VsZiwgZnVuY3Rpb249Tm9uZSwgZmly
c3RyZXN1bHQ9RmFsc2UsIGhpc3RvcmljPUZhbHNlLCB3YXJuX29uX2ltcGw9Tm9uZQorICAgICk6
CisgICAgICAgICIiIiBpZiBwYXNzZWQgYSBmdW5jdGlvbiwgZGlyZWN0bHkgc2V0cyBhdHRyaWJ1
dGVzIG9uIHRoZSBmdW5jdGlvbgorICAgICAgICB3aGljaCB3aWxsIG1ha2UgaXQgZGlzY292ZXJh
YmxlIHRvIDpweTptZXRoOmAuUGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNzYC4KKyAgICAgICAg
SWYgcGFzc2VkIG5vIGZ1bmN0aW9uLCByZXR1cm5zIGEgZGVjb3JhdG9yIHdoaWNoIGNhbiBiZSBh
cHBsaWVkIHRvIGEgZnVuY3Rpb24KKyAgICAgICAgbGF0ZXIgdXNpbmcgdGhlIGF0dHJpYnV0ZXMg
c3VwcGxpZWQuCisKKyAgICAgICAgSWYgYGBmaXJzdHJlc3VsdGBgIGlzIGBgVHJ1ZWBgIHRoZSAx
Ok4gaG9vayBjYWxsIChOIGJlaW5nIHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZAorICAgICAgICBo
b29rIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucykgd2lsbCBzdG9wIGF0IEk8PU4gd2hlbiB0aGUg
SSd0aCBmdW5jdGlvbgorICAgICAgICByZXR1cm5zIGEgbm9uLWBgTm9uZWBgIHJlc3VsdC4KKwor
ICAgICAgICBJZiBgYGhpc3RvcmljYGAgaXMgYGBUcnVlYGAgY2FsbHMgdG8gYSBob29rIHdpbGwg
YmUgbWVtb3JpemVkIGFuZCByZXBsYXllZAorICAgICAgICBvbiBsYXRlciByZWdpc3RlcmVkIHBs
dWdpbnMuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIHNldGF0dHJfaG9va3NwZWNfb3B0
cyhmdW5jKToKKyAgICAgICAgICAgIGlmIGhpc3RvcmljIGFuZCBmaXJzdHJlc3VsdDoKKyAgICAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgaGF2ZSBhIGhpc3RvcmljIGZpcnN0
cmVzdWx0IGhvb2siKQorICAgICAgICAgICAgc2V0YXR0cigKKyAgICAgICAgICAgICAgICBmdW5j
LAorICAgICAgICAgICAgICAgIHNlbGYucHJvamVjdF9uYW1lICsgIl9zcGVjIiwKKyAgICAgICAg
ICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgICAgICBmaXJzdHJlc3VsdD1maXJzdHJlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgICAgaGlzdG9yaWM9aGlzdG9yaWMsCisgICAgICAgICAgICAg
ICAgICAgIHdhcm5fb25faW1wbD13YXJuX29uX2ltcGwsCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgaWYgZnVuY3Rp
b24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2V0YXR0cl9ob29rc3BlY19vcHRz
KGZ1bmN0aW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNldGF0dHJfaG9v
a3NwZWNfb3B0cworCisKK2NsYXNzIEhvb2tpbXBsTWFya2VyKG9iamVjdCk6CisgICAgIiIiIERl
Y29yYXRvciBoZWxwZXIgY2xhc3MgZm9yIG1hcmtpbmcgZnVuY3Rpb25zIGFzIGhvb2sgaW1wbGVt
ZW50YXRpb25zLgorCisgICAgWW91IGNhbiBpbnN0YW50aWF0ZSB3aXRoIGEgYGBwcm9qZWN0X25h
bWVgYCB0byBnZXQgYSBkZWNvcmF0b3IuCisgICAgQ2FsbGluZyA6cHk6bWV0aDpgLlBsdWdpbk1h
bmFnZXIucmVnaXN0ZXJgIGxhdGVyIHdpbGwgZGlzY292ZXIgYWxsIG1hcmtlZCBmdW5jdGlvbnMK
KyAgICBpZiB0aGUgOnB5OmNsYXNzOmAuUGx1Z2luTWFuYWdlcmAgdXNlcyB0aGUgc2FtZSBwcm9q
ZWN0X25hbWUuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvamVjdF9uYW1l
KToKKyAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUgPSBwcm9qZWN0X25hbWUKKworICAgIGRlZiBf
X2NhbGxfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnVuY3Rpb249Tm9uZSwKKyAgICAgICAg
aG9va3dyYXBwZXI9RmFsc2UsCisgICAgICAgIG9wdGlvbmFsaG9vaz1GYWxzZSwKKyAgICAgICAg
dHJ5Zmlyc3Q9RmFsc2UsCisgICAgICAgIHRyeWxhc3Q9RmFsc2UsCisgICAgKToKKworICAgICAg
ICAiIiIgaWYgcGFzc2VkIGEgZnVuY3Rpb24sIGRpcmVjdGx5IHNldHMgYXR0cmlidXRlcyBvbiB0
aGUgZnVuY3Rpb24KKyAgICAgICAgd2hpY2ggd2lsbCBtYWtlIGl0IGRpc2NvdmVyYWJsZSB0byA6
cHk6bWV0aDpgLlBsdWdpbk1hbmFnZXIucmVnaXN0ZXJgLgorICAgICAgICBJZiBwYXNzZWQgbm8g
ZnVuY3Rpb24sIHJldHVybnMgYSBkZWNvcmF0b3Igd2hpY2ggY2FuIGJlIGFwcGxpZWQgdG8gYQor
ICAgICAgICBmdW5jdGlvbiBsYXRlciB1c2luZyB0aGUgYXR0cmlidXRlcyBzdXBwbGllZC4KKwor
ICAgICAgICBJZiBgYG9wdGlvbmFsaG9va2BgIGlzIGBgVHJ1ZWBgIGEgbWlzc2luZyBtYXRjaGlu
ZyBob29rIHNwZWNpZmljYXRpb24gd2lsbCBub3QgcmVzdWx0CisgICAgICAgIGluIGFuIGVycm9y
IChieSBkZWZhdWx0IGl0IGlzIGFuIGVycm9yIGlmIG5vIG1hdGNoaW5nIHNwZWMgaXMgZm91bmQp
LgorCisgICAgICAgIElmIGBgdHJ5Zmlyc3RgYCBpcyBgYFRydWVgYCB0aGlzIGhvb2sgaW1wbGVt
ZW50YXRpb24gd2lsbCBydW4gYXMgZWFybHkgYXMgcG9zc2libGUKKyAgICAgICAgaW4gdGhlIGNo
YWluIG9mIE4gaG9vayBpbXBsZW1lbnRhdGlvbnMgZm9yIGEgc3BlY2lmaWNhdGlvbi4KKworICAg
ICAgICBJZiBgYHRyeWxhc3RgYCBpcyBgYFRydWVgYCB0aGlzIGhvb2sgaW1wbGVtZW50YXRpb24g
d2lsbCBydW4gYXMgbGF0ZSBhcyBwb3NzaWJsZQorICAgICAgICBpbiB0aGUgY2hhaW4gb2YgTiBo
b29rIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBJZiBgYGhvb2t3cmFwcGVyYGAgaXMgYGBU
cnVlYGAgdGhlIGhvb2sgaW1wbGVtZW50YXRpb25zIG5lZWRzIHRvIGV4ZWN1dGUgZXhhY3RseQor
ICAgICAgICBvbmUgYGB5aWVsZGBgLiAgVGhlIGNvZGUgYmVmb3JlIHRoZSBgYHlpZWxkYGAgaXMg
cnVuIGVhcmx5IGJlZm9yZSBhbnkgbm9uLWhvb2t3cmFwcGVyCisgICAgICAgIGZ1bmN0aW9uIGlz
IHJ1bi4gIFRoZSBjb2RlIGFmdGVyIHRoZSBgYHlpZWxkYGAgaXMgcnVuIGFmdGVyIGFsbCBub24t
aG9va3dyYXBwZXIKKyAgICAgICAgZnVuY3Rpb24gaGF2ZSBydW4uICBUaGUgYGB5aWVsZGBgIHJl
Y2VpdmVzIGEgOnB5OmNsYXNzOmAuY2FsbGVycy5fUmVzdWx0YCBvYmplY3QKKyAgICAgICAgcmVw
cmVzZW50aW5nIHRoZSBleGNlcHRpb24gb3IgcmVzdWx0IG91dGNvbWUgb2YgdGhlIGlubmVyIGNh
bGxzIChpbmNsdWRpbmcgb3RoZXIKKyAgICAgICAgaG9va3dyYXBwZXIgY2FsbHMpLgorCisgICAg
ICAgICIiIgorCisgICAgICAgIGRlZiBzZXRhdHRyX2hvb2tpbXBsX29wdHMoZnVuYyk6CisgICAg
ICAgICAgICBzZXRhdHRyKAorICAgICAgICAgICAgICAgIGZ1bmMsCisgICAgICAgICAgICAgICAg
c2VsZi5wcm9qZWN0X25hbWUgKyAiX2ltcGwiLAorICAgICAgICAgICAgICAgIGRpY3QoCisgICAg
ICAgICAgICAgICAgICAgIGhvb2t3cmFwcGVyPWhvb2t3cmFwcGVyLAorICAgICAgICAgICAgICAg
ICAgICBvcHRpb25hbGhvb2s9b3B0aW9uYWxob29rLAorICAgICAgICAgICAgICAgICAgICB0cnlm
aXJzdD10cnlmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgdHJ5bGFzdD10cnlsYXN0LAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gZnVuYwor
CisgICAgICAgIGlmIGZ1bmN0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2V0YXR0
cl9ob29raW1wbF9vcHRzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2V0YXR0
cl9ob29raW1wbF9vcHRzKGZ1bmN0aW9uKQorCisKK2RlZiBub3JtYWxpemVfaG9va2ltcGxfb3B0
cyhvcHRzKToKKyAgICBvcHRzLnNldGRlZmF1bHQoInRyeWZpcnN0IiwgRmFsc2UpCisgICAgb3B0
cy5zZXRkZWZhdWx0KCJ0cnlsYXN0IiwgRmFsc2UpCisgICAgb3B0cy5zZXRkZWZhdWx0KCJob29r
d3JhcHBlciIsIEZhbHNlKQorICAgIG9wdHMuc2V0ZGVmYXVsdCgib3B0aW9uYWxob29rIiwgRmFs
c2UpCisKKworaWYgaGFzYXR0cihpbnNwZWN0LCAiZ2V0ZnVsbGFyZ3NwZWMiKToKKworICAgIGRl
ZiBfZ2V0YXJnc3BlYyhmdW5jKToKKyAgICAgICAgcmV0dXJuIGluc3BlY3QuZ2V0ZnVsbGFyZ3Nw
ZWMoZnVuYykKKworCitlbHNlOgorCisgICAgZGVmIF9nZXRhcmdzcGVjKGZ1bmMpOgorICAgICAg
ICByZXR1cm4gaW5zcGVjdC5nZXRhcmdzcGVjKGZ1bmMpCisKKworX1BZUFkzID0gaGFzYXR0cihz
eXMsICJweXB5X3ZlcnNpb25faW5mbyIpIGFuZCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMK
KworCitkZWYgdmFybmFtZXMoZnVuYyk6CisgICAgIiIiUmV0dXJuIHR1cGxlIG9mIHBvc2l0aW9u
YWwgYW5kIGtleXdyb3JkIGFyZ3VtZW50IG5hbWVzIGZvciBhIGZ1bmN0aW9uLAorICAgIG1ldGhv
ZCwgY2xhc3Mgb3IgY2FsbGFibGUuCisKKyAgICBJbiBjYXNlIG9mIGEgY2xhc3MsIGl0cyBgYF9f
aW5pdF9fYGAgbWV0aG9kIGlzIGNvbnNpZGVyZWQuCisgICAgRm9yIG1ldGhvZHMgdGhlIGBgc2Vs
ZmBgIHBhcmFtZXRlciBpcyBub3QgaW5jbHVkZWQuCisgICAgIiIiCisgICAgY2FjaGUgPSBnZXRh
dHRyKGZ1bmMsICJfX2RpY3RfXyIsIHt9KQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGNhY2hl
WyJfdmFybmFtZXMiXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworCisgICAg
aWYgaW5zcGVjdC5pc2NsYXNzKGZ1bmMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmdW5j
ID0gZnVuYy5fX2luaXRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAg
ICAgICByZXR1cm4gKCksICgpCisgICAgZWxpZiBub3QgaW5zcGVjdC5pc3JvdXRpbmUoZnVuYyk6
ICAjIGNhbGxhYmxlIG9iamVjdD8KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYyA9IGdl
dGF0dHIoZnVuYywgIl9fY2FsbF9fIiwgZnVuYykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
KyAgICAgICAgICAgIHJldHVybiAoKSwgKCkKKworICAgIHRyeTogICMgZnVuYyBNVVNUIGJlIGEg
ZnVuY3Rpb24gb3IgbWV0aG9kIGhlcmUgb3Igd2Ugd29uJ3QgcGFyc2UgYW55IGFyZ3MKKyAgICAg
ICAgc3BlYyA9IF9nZXRhcmdzcGVjKGZ1bmMpCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAg
ICAgcmV0dXJuICgpLCAoKQorCisgICAgYXJncywgZGVmYXVsdHMgPSB0dXBsZShzcGVjLmFyZ3Mp
LCBzcGVjLmRlZmF1bHRzCisgICAgaWYgZGVmYXVsdHM6CisgICAgICAgIGluZGV4ID0gLWxlbihk
ZWZhdWx0cykKKyAgICAgICAgYXJncywga3dhcmdzID0gYXJnc1s6aW5kZXhdLCB0dXBsZShhcmdz
W2luZGV4Ol0pCisgICAgZWxzZToKKyAgICAgICAga3dhcmdzID0gKCkKKworICAgICMgc3RyaXAg
YW55IGltcGxpY2l0IGluc3RhbmNlIGFyZworICAgICMgcHlweTMgdXNlcyAib2JqIiBpbnN0ZWFk
IG9mICJzZWxmIiBmb3IgZGVmYXVsdCBkdW5kZXIgbWV0aG9kcworICAgIGltcGxpY2l0X25hbWVz
ID0gKCJzZWxmIiwpIGlmIG5vdCBfUFlQWTMgZWxzZSAoInNlbGYiLCAib2JqIikKKyAgICBpZiBh
cmdzOgorICAgICAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKGZ1bmMpIG9yICgKKyAgICAgICAgICAg
ICIuIiBpbiBnZXRhdHRyKGZ1bmMsICJfX3F1YWxuYW1lX18iLCAoKSkgYW5kIGFyZ3NbMF0gaW4g
aW1wbGljaXRfbmFtZXMKKyAgICAgICAgKToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzE6XQor
CisgICAgdHJ5OgorICAgICAgICBjYWNoZVsiX3Zhcm5hbWVzIl0gPSBhcmdzLCBrd2FyZ3MKKyAg
ICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBwYXNzCisgICAgcmV0dXJuIGFyZ3MsIGt3YXJn
cworCisKK2NsYXNzIF9Ib29rUmVsYXkob2JqZWN0KToKKyAgICAiIiIgaG9vayBob2xkZXIgb2Jq
ZWN0IGZvciBwZXJmb3JtaW5nIDE6TiBob29rIGNhbGxzIHdoZXJlIE4gaXMgdGhlIG51bWJlcgor
ICAgIG9mIHJlZ2lzdGVyZWQgcGx1Z2lucy4KKworICAgICIiIgorCisKK2NsYXNzIF9Ib29rQ2Fs
bGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGhvb2tfZXhlY3V0ZSwg
c3BlY21vZHVsZV9vcl9jbGFzcz1Ob25lLCBzcGVjX29wdHM9Tm9uZSk6CisgICAgICAgIHNlbGYu
bmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fd3JhcHBlcnMgPSBbXQorICAgICAgICBzZWxmLl9u
b253cmFwcGVycyA9IFtdCisgICAgICAgIHNlbGYuX2hvb2tleGVjID0gaG9va19leGVjdXRlCisg
ICAgICAgIHNlbGYuYXJnbmFtZXMgPSBOb25lCisgICAgICAgIHNlbGYua3dhcmduYW1lcyA9IE5v
bmUKKyAgICAgICAgc2VsZi5tdWx0aWNhbGwgPSBfbXVsdGljYWxsCisgICAgICAgIHNlbGYuc3Bl
YyA9IE5vbmUKKyAgICAgICAgaWYgc3BlY21vZHVsZV9vcl9jbGFzcyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGFzc2VydCBzcGVjX29wdHMgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIHNlbGYu
c2V0X3NwZWNpZmljYXRpb24oc3BlY21vZHVsZV9vcl9jbGFzcywgc3BlY19vcHRzKQorCisgICAg
ZGVmIGhhc19zcGVjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zcGVjIGlzIG5vdCBOb25l
CisKKyAgICBkZWYgc2V0X3NwZWNpZmljYXRpb24oc2VsZiwgc3BlY21vZHVsZV9vcl9jbGFzcywg
c3BlY19vcHRzKToKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmhhc19zcGVjKCkKKyAgICAgICAg
c2VsZi5zcGVjID0gSG9va1NwZWMoc3BlY21vZHVsZV9vcl9jbGFzcywgc2VsZi5uYW1lLCBzcGVj
X29wdHMpCisgICAgICAgIGlmIHNwZWNfb3B0cy5nZXQoImhpc3RvcmljIik6CisgICAgICAgICAg
ICBzZWxmLl9jYWxsX2hpc3RvcnkgPSBbXQorCisgICAgZGVmIGlzX2hpc3RvcmljKHNlbGYpOgor
ICAgICAgICByZXR1cm4gaGFzYXR0cihzZWxmLCAiX2NhbGxfaGlzdG9yeSIpCisKKyAgICBkZWYg
X3JlbW92ZV9wbHVnaW4oc2VsZiwgcGx1Z2luKToKKyAgICAgICAgZGVmIHJlbW92ZSh3cmFwcGVy
cyk6CisgICAgICAgICAgICBmb3IgaSwgbWV0aG9kIGluIGVudW1lcmF0ZSh3cmFwcGVycyk6Cisg
ICAgICAgICAgICAgICAgaWYgbWV0aG9kLnBsdWdpbiA9PSBwbHVnaW46CisgICAgICAgICAgICAg
ICAgICAgIGRlbCB3cmFwcGVyc1tpXQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
CisgICAgICAgIGlmIHJlbW92ZShzZWxmLl93cmFwcGVycykgaXMgTm9uZToKKyAgICAgICAgICAg
IGlmIHJlbW92ZShzZWxmLl9ub253cmFwcGVycykgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJwbHVnaW4gJXIgbm90IGZvdW5kIiAlIChwbHVnaW4sKSkKKworICAg
IGRlZiBnZXRfaG9va2ltcGxzKHNlbGYpOgorICAgICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCBm
b3IgX2hvb2tleGVjCisgICAgICAgIHJldHVybiBzZWxmLl9ub253cmFwcGVycyArIHNlbGYuX3dy
YXBwZXJzCisKKyAgICBkZWYgX2FkZF9ob29raW1wbChzZWxmLCBob29raW1wbCk6CisgICAgICAg
ICIiIkFkZCBhbiBpbXBsZW1lbnRhdGlvbiB0byB0aGUgY2FsbGJhY2sgY2hhaW4uCisgICAgICAg
ICIiIgorICAgICAgICBpZiBob29raW1wbC5ob29rd3JhcHBlcjoKKyAgICAgICAgICAgIG1ldGhv
ZHMgPSBzZWxmLl93cmFwcGVycworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWV0aG9kcyA9
IHNlbGYuX25vbndyYXBwZXJzCisKKyAgICAgICAgaWYgaG9va2ltcGwudHJ5bGFzdDoKKyAgICAg
ICAgICAgIG1ldGhvZHMuaW5zZXJ0KDAsIGhvb2tpbXBsKQorICAgICAgICBlbGlmIGhvb2tpbXBs
LnRyeWZpcnN0OgorICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQoaG9va2ltcGwpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAjIGZpbmQgbGFzdCBub24tdHJ5Zmlyc3QgbWV0aG9kCisgICAg
ICAgICAgICBpID0gbGVuKG1ldGhvZHMpIC0gMQorICAgICAgICAgICAgd2hpbGUgaSA+PSAwIGFu
ZCBtZXRob2RzW2ldLnRyeWZpcnN0OgorICAgICAgICAgICAgICAgIGkgLT0gMQorICAgICAgICAg
ICAgbWV0aG9kcy5pbnNlcnQoaSArIDEsIGhvb2tpbXBsKQorCisgICAgICAgIGlmICJfX211bHRp
Y2FsbF9fIiBpbiBob29raW1wbC5hcmduYW1lczoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4o
CisgICAgICAgICAgICAgICAgIlN1cHBvcnQgZm9yIF9fbXVsdGljYWxsX18gaXMgbm93IGRlcHJl
Y2F0ZWQgYW5kIHdpbGwgYmUiCisgICAgICAgICAgICAgICAgInJlbW92ZWQgaW4gYW4gdXBjb21p
bmcgcmVsZWFzZS4iLAorICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYubXVsdGljYWxsID0gX2xlZ2FjeW11bHRpY2FsbAor
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjxfSG9va0NhbGxlciAl
cj4iICUgKHNlbGYubmFtZSwpCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaG9v
ayBjYWxsaW5nIHN1cHBvcnRzIG9ubHkga2V5d29yZCBhcmd1bWVudHMiKQorICAgICAgICBhc3Nl
cnQgbm90IHNlbGYuaXNfaGlzdG9yaWMoKQorICAgICAgICBpZiBzZWxmLnNwZWMgYW5kIHNlbGYu
c3BlYy5hcmduYW1lczoKKyAgICAgICAgICAgIG5vdGluY2FsbCA9ICgKKyAgICAgICAgICAgICAg
ICBzZXQoc2VsZi5zcGVjLmFyZ25hbWVzKSAtIHNldChbIl9fbXVsdGljYWxsX18iXSkgLSBzZXQo
a3dhcmdzLmtleXMoKSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG5vdGluY2FsbDoK
KyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICAgICAiQXJn
dW1lbnQocykge30gd2hpY2ggYXJlIGRlY2xhcmVkIGluIHRoZSBob29rc3BlYyAiCisgICAgICAg
ICAgICAgICAgICAgICJjYW4gbm90IGJlIGZvdW5kIGluIHRoaXMgaG9vayBjYWxsIi5mb3JtYXQo
dHVwbGUobm90aW5jYWxsKSksCisgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBzZWxmLl9ob29rZXhlYyhzZWxmLCBzZWxm
LmdldF9ob29raW1wbHMoKSwga3dhcmdzKQorCisgICAgZGVmIGNhbGxfaGlzdG9yaWMoc2VsZiwg
cmVzdWx0X2NhbGxiYWNrPU5vbmUsIGt3YXJncz1Ob25lLCBwcm9jPU5vbmUpOgorICAgICAgICAi
IiJDYWxsIHRoZSBob29rIHdpdGggZ2l2ZW4gYGBrd2FyZ3NgYCBmb3IgYWxsIHJlZ2lzdGVyZWQg
cGx1Z2lucyBhbmQKKyAgICAgICAgZm9yIGFsbCBwbHVnaW5zIHdoaWNoIHdpbGwgYmUgcmVnaXN0
ZXJlZCBhZnRlcndhcmRzLgorCisgICAgICAgIElmIGBgcmVzdWx0X2NhbGxiYWNrYGAgaXMgbm90
IGBgTm9uZWBgIGl0IHdpbGwgYmUgY2FsbGVkIGZvciBmb3IgZWFjaAorICAgICAgICBub24tYGBO
b25lYGAgcmVzdWx0IG9idGFpbmVkIGZyb20gYSBob29rIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgIC4uIG5vdGU6OgorICAgICAgICAgICAgVGhlIGBgcHJvY2BgIGFyZ3VtZW50IGlzIG5vdyBk
ZXByZWNhdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgcHJvYyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgIlN1cHBvcnQgZm9yIGBw
cm9jYCBhcmd1bWVudCBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSIKKyAgICAgICAgICAg
ICAgICAicmVtb3ZlZCBpbiBhbiB1cGNvbWluZyByZWxlYXNlLiIsCisgICAgICAgICAgICAgICAg
RGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVzdWx0X2Nh
bGxiYWNrID0gcHJvYworCisgICAgICAgIHNlbGYuX2NhbGxfaGlzdG9yeS5hcHBlbmQoKGt3YXJn
cyBvciB7fSwgcmVzdWx0X2NhbGxiYWNrKSkKKyAgICAgICAgIyBoaXN0b3JpemluZyBob29rcyBk
b24ndCByZXR1cm4gcmVzdWx0cworICAgICAgICByZXMgPSBzZWxmLl9ob29rZXhlYyhzZWxmLCBz
ZWxmLmdldF9ob29raW1wbHMoKSwga3dhcmdzKQorICAgICAgICBpZiByZXN1bHRfY2FsbGJhY2sg
aXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFhYWDogcmVtZW1iZXIgZmly
c3RyZXN1bHQgaXNuJ3QgY29tcGF0IHdpdGggaGlzdG9yaWMKKyAgICAgICAgZm9yIHggaW4gcmVz
IG9yIFtdOgorICAgICAgICAgICAgcmVzdWx0X2NhbGxiYWNrKHgpCisKKyAgICBkZWYgY2FsbF9l
eHRyYShzZWxmLCBtZXRob2RzLCBrd2FyZ3MpOgorICAgICAgICAiIiIgQ2FsbCB0aGUgaG9vayB3
aXRoIHNvbWUgYWRkaXRpb25hbCB0ZW1wb3JhcmlseSBwYXJ0aWNpcGF0aW5nCisgICAgICAgIG1l
dGhvZHMgdXNpbmcgdGhlIHNwZWNpZmllZCBgYGt3YXJnc2BgIGFzIGNhbGwgcGFyYW1ldGVycy4g
IiIiCisgICAgICAgIG9sZCA9IGxpc3Qoc2VsZi5fbm9ud3JhcHBlcnMpLCBsaXN0KHNlbGYuX3dy
YXBwZXJzKQorICAgICAgICBmb3IgbWV0aG9kIGluIG1ldGhvZHM6CisgICAgICAgICAgICBvcHRz
ID0gZGljdChob29rd3JhcHBlcj1GYWxzZSwgdHJ5bGFzdD1GYWxzZSwgdHJ5Zmlyc3Q9RmFsc2Up
CisgICAgICAgICAgICBob29raW1wbCA9IEhvb2tJbXBsKE5vbmUsICI8dGVtcD4iLCBtZXRob2Qs
IG9wdHMpCisgICAgICAgICAgICBzZWxmLl9hZGRfaG9va2ltcGwoaG9va2ltcGwpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmKCoqa3dhcmdzKQorICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgc2VsZi5fbm9ud3JhcHBlcnMsIHNlbGYuX3dyYXBwZXJzID0gb2xkCisK
KyAgICBkZWYgX21heWJlX2FwcGx5X2hpc3Rvcnkoc2VsZiwgbWV0aG9kKToKKyAgICAgICAgIiIi
QXBwbHkgY2FsbCBoaXN0b3J5IHRvIGEgbmV3IGhvb2tpbXBsIGlmIGl0IGlzIG1hcmtlZCBhcyBo
aXN0b3JpYy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuaXNfaGlzdG9yaWMoKToKKyAg
ICAgICAgICAgIGZvciBrd2FyZ3MsIHJlc3VsdF9jYWxsYmFjayBpbiBzZWxmLl9jYWxsX2hpc3Rv
cnk6CisgICAgICAgICAgICAgICAgcmVzID0gc2VsZi5faG9va2V4ZWMoc2VsZiwgW21ldGhvZF0s
IGt3YXJncykKKyAgICAgICAgICAgICAgICBpZiByZXMgYW5kIHJlc3VsdF9jYWxsYmFjayBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2NhbGxiYWNrKHJlc1swXSkKKwor
CitjbGFzcyBIb29rSW1wbChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbHVnaW4s
IHBsdWdpbl9uYW1lLCBmdW5jdGlvbiwgaG9va19pbXBsX29wdHMpOgorICAgICAgICBzZWxmLmZ1
bmN0aW9uID0gZnVuY3Rpb24KKyAgICAgICAgc2VsZi5hcmduYW1lcywgc2VsZi5rd2FyZ25hbWVz
ID0gdmFybmFtZXMoc2VsZi5mdW5jdGlvbikKKyAgICAgICAgc2VsZi5wbHVnaW4gPSBwbHVnaW4K
KyAgICAgICAgc2VsZi5vcHRzID0gaG9va19pbXBsX29wdHMKKyAgICAgICAgc2VsZi5wbHVnaW5f
bmFtZSA9IHBsdWdpbl9uYW1lCisgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGhvb2tfaW1w
bF9vcHRzKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjxIb29r
SW1wbCBwbHVnaW5fbmFtZT0lciwgcGx1Z2luPSVyPiIgJSAoc2VsZi5wbHVnaW5fbmFtZSwgc2Vs
Zi5wbHVnaW4pCisKKworY2xhc3MgSG9va1NwZWMob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZXNwYWNlLCBuYW1lLCBvcHRzKToKKyAgICAgICAgc2VsZi5uYW1lc3BhY2UgPSBu
YW1lc3BhY2UKKyAgICAgICAgc2VsZi5mdW5jdGlvbiA9IGZ1bmN0aW9uID0gZ2V0YXR0cihuYW1l
c3BhY2UsIG5hbWUpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5hcmdu
YW1lcywgc2VsZi5rd2FyZ25hbWVzID0gdmFybmFtZXMoZnVuY3Rpb24pCisgICAgICAgIHNlbGYu
b3B0cyA9IG9wdHMKKyAgICAgICAgc2VsZi5hcmduYW1lcyA9IFsiX19tdWx0aWNhbGxfXyJdICsg
bGlzdChzZWxmLmFyZ25hbWVzKQorICAgICAgICBzZWxmLndhcm5fb25faW1wbCA9IG9wdHMuZ2V0
KCJ3YXJuX29uX2ltcGwiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9tYW5h
Z2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9tYW5hZ2VyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDdiNDJjYmEyZDVlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9tYW5hZ2VyLnB5CkBAIC0wLDAgKzEsMzk0IEBACitp
bXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworZnJvbSAuIGltcG9ydCBfdHJhY2luZworZnJvbSAu
Y2FsbGVycyBpbXBvcnQgX1Jlc3VsdAorZnJvbSAuaG9va3MgaW1wb3J0IEhvb2tJbXBsLCBfSG9v
a1JlbGF5LCBfSG9va0NhbGxlciwgbm9ybWFsaXplX2hvb2tpbXBsX29wdHMKK2ltcG9ydCB3YXJu
aW5ncworCitpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA4KToKKyAgICBmcm9tIGltcG9ydGxp
YiBpbXBvcnQgbWV0YWRhdGEgYXMgaW1wb3J0bGliX21ldGFkYXRhCitlbHNlOgorICAgIGltcG9y
dCBpbXBvcnRsaWJfbWV0YWRhdGEKKworCitkZWYgX3dhcm5fZm9yX2Z1bmN0aW9uKHdhcm5pbmcs
IGZ1bmN0aW9uKToKKyAgICB3YXJuaW5ncy53YXJuX2V4cGxpY2l0KAorICAgICAgICB3YXJuaW5n
LAorICAgICAgICB0eXBlKHdhcm5pbmcpLAorICAgICAgICBsaW5lbm89ZnVuY3Rpb24uX19jb2Rl
X18uY29fZmlyc3RsaW5lbm8sCisgICAgICAgIGZpbGVuYW1lPWZ1bmN0aW9uLl9fY29kZV9fLmNv
X2ZpbGVuYW1lLAorICAgICkKKworCitjbGFzcyBQbHVnaW5WYWxpZGF0aW9uRXJyb3IoRXhjZXB0
aW9uKToKKyAgICAiIiIgcGx1Z2luIGZhaWxlZCB2YWxpZGF0aW9uLgorCisgICAgOnBhcmFtIG9i
amVjdCBwbHVnaW46IHRoZSBwbHVnaW4gd2hpY2ggZmFpbGVkIHZhbGlkYXRpb24sCisgICAgICAg
IG1heSBiZSBhIG1vZHVsZSBvciBhbiBhcmJpdHJhcnkgb2JqZWN0LgorICAgICIiIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBsdWdpbiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYucGx1Z2lu
ID0gcGx1Z2luCisgICAgICAgIHN1cGVyKEV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obWVzc2Fn
ZSkKKworCitjbGFzcyBEaXN0RmFjYWRlKG9iamVjdCk6CisgICAgIiIiRW11bGF0ZSBhIHBrZ19y
ZXNvdXJjZXMgRGlzdHJpYnV0aW9uIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlzdCk6
CisgICAgICAgIHNlbGYuX2Rpc3QgPSBkaXN0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHJv
amVjdF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5tZXRhZGF0YVsibmFtZSJdCisK
KyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0ciwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAg
cmV0dXJuIGdldGF0dHIoc2VsZi5fZGlzdCwgYXR0ciwgZGVmYXVsdCkKKworICAgIGRlZiBfX2Rp
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc29ydGVkKGRpcihzZWxmLl9kaXN0KSArIFsiX2Rp
c3QiLCAicHJvamVjdF9uYW1lIl0pCisKKworY2xhc3MgUGx1Z2luTWFuYWdlcihvYmplY3QpOgor
ICAgICIiIiBDb3JlIDpweTpjbGFzczpgLlBsdWdpbk1hbmFnZXJgIGNsYXNzIHdoaWNoIG1hbmFn
ZXMgcmVnaXN0cmF0aW9uCisgICAgb2YgcGx1Z2luIG9iamVjdHMgYW5kIDE6TiBob29rIGNhbGxp
bmcuCisKKyAgICBZb3UgY2FuIHJlZ2lzdGVyIG5ldyBob29rcyBieSBjYWxsaW5nIDpweTptZXRo
OmBhZGRfaG9va3NwZWNzKG1vZHVsZV9vcl9jbGFzcykKKyAgICA8LlBsdWdpbk1hbmFnZXIuYWRk
X2hvb2tzcGVjcz5gLgorICAgIFlvdSBjYW4gcmVnaXN0ZXIgcGx1Z2luIG9iamVjdHMgKHdoaWNo
IGNvbnRhaW4gaG9va3MpIGJ5IGNhbGxpbmcKKyAgICA6cHk6bWV0aDpgcmVnaXN0ZXIocGx1Z2lu
KSA8LlBsdWdpbk1hbmFnZXIucmVnaXN0ZXI+YC4gIFRoZSA6cHk6Y2xhc3M6YC5QbHVnaW5NYW5h
Z2VyYAorICAgIGlzIGluaXRpYWxpemVkIHdpdGggYSBwcmVmaXggdGhhdCBpcyBzZWFyY2hlZCBm
b3IgaW4gdGhlIG5hbWVzIG9mIHRoZSBkaWN0CisgICAgb2YgcmVnaXN0ZXJlZCBwbHVnaW4gb2Jq
ZWN0cy4KKworICAgIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgeW91IGNhbiBjYWxsIDpweTptZXRo
OmAuUGx1Z2luTWFuYWdlci5lbmFibGVfdHJhY2luZ2AKKyAgICB3aGljaCB3aWxsIHN1YnNlcXVl
bnRseSBzZW5kIGRlYnVnIGluZm9ybWF0aW9uIHRvIHRoZSB0cmFjZSBoZWxwZXIuCisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvamVjdF9uYW1lLCBpbXBscHJlZml4PU5vbmUp
OgorICAgICAgICAiIiJJZiBgYGltcGxwcmVmaXhgYCBpcyBnaXZlbiBpbXBsZW1lbnRhdGlvbiBm
dW5jdGlvbnMKKyAgICAgICAgd2lsbCBiZSByZWNvZ25pemVkIGlmIHRoZWlyIG5hbWUgbWF0Y2hl
cyB0aGUgYGBpbXBscHJlZml4YGAuICIiIgorICAgICAgICBzZWxmLnByb2plY3RfbmFtZSA9IHBy
b2plY3RfbmFtZQorICAgICAgICBzZWxmLl9uYW1lMnBsdWdpbiA9IHt9CisgICAgICAgIHNlbGYu
X3BsdWdpbjJob29rY2FsbGVycyA9IHt9CisgICAgICAgIHNlbGYuX3BsdWdpbl9kaXN0aW5mbyA9
IFtdCisgICAgICAgIHNlbGYudHJhY2UgPSBfdHJhY2luZy5UYWdUcmFjZXIoKS5nZXQoInBsdWdp
bm1hbmFnZSIpCisgICAgICAgIHNlbGYuaG9vayA9IF9Ib29rUmVsYXkoKQorICAgICAgICBpZiBp
bXBscHJlZml4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAg
ICAgICAgICAgICAiU3VwcG9ydCBmb3IgdGhlIGBpbXBscHJlZml4YCBhcmcgaXMgbm93IGRlcHJl
Y2F0ZWQgYW5kIHdpbGwgIgorICAgICAgICAgICAgICAgICJiZSByZW1vdmVkIGluIGFuIHVwY29t
aW5nIHJlbGVhc2UuIFBsZWFzZSB1c2UgSG9va2ltcGxNYXJrZXIuIiwKKyAgICAgICAgICAgICAg
ICBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yLAorICAg
ICAgICAgICAgKQorICAgICAgICBzZWxmLl9pbXBscHJlZml4ID0gaW1wbHByZWZpeAorICAgICAg
ICBzZWxmLl9pbm5lcl9ob29rZXhlYyA9IGxhbWJkYSBob29rLCBtZXRob2RzLCBrd2FyZ3M6IGhv
b2subXVsdGljYWxsKAorICAgICAgICAgICAgbWV0aG9kcywKKyAgICAgICAgICAgIGt3YXJncywK
KyAgICAgICAgICAgIGZpcnN0cmVzdWx0PWhvb2suc3BlYy5vcHRzLmdldCgiZmlyc3RyZXN1bHQi
KSBpZiBob29rLnNwZWMgZWxzZSBGYWxzZSwKKyAgICAgICAgKQorCisgICAgZGVmIF9ob29rZXhl
YyhzZWxmLCBob29rLCBtZXRob2RzLCBrd2FyZ3MpOgorICAgICAgICAjIGNhbGxlZCBmcm9tIGFs
bCBob29rY2FsbGVyIGluc3RhbmNlcy4KKyAgICAgICAgIyBlbmFibGVfdHJhY2luZyB3aWxsIHNl
dCBpdHMgb3duIHdyYXBwaW5nIGZ1bmN0aW9uIGF0IHNlbGYuX2lubmVyX2hvb2tleGVjCisgICAg
ICAgIHJldHVybiBzZWxmLl9pbm5lcl9ob29rZXhlYyhob29rLCBtZXRob2RzLCBrd2FyZ3MpCisK
KyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgorICAgICAgICAiIiIg
UmVnaXN0ZXIgYSBwbHVnaW4gYW5kIHJldHVybiBpdHMgY2Fub25pY2FsIG5hbWUgb3IgYGBOb25l
YGAgaWYgdGhlIG5hbWUKKyAgICAgICAgaXMgYmxvY2tlZCBmcm9tIHJlZ2lzdGVyaW5nLiAgUmFp
c2UgYSA6cHk6Y2xhc3M6YFZhbHVlRXJyb3JgIGlmIHRoZSBwbHVnaW4KKyAgICAgICAgaXMgYWxy
ZWFkeSByZWdpc3RlcmVkLiAiIiIKKyAgICAgICAgcGx1Z2luX25hbWUgPSBuYW1lIG9yIHNlbGYu
Z2V0X2Nhbm9uaWNhbF9uYW1lKHBsdWdpbikKKworICAgICAgICBpZiBwbHVnaW5fbmFtZSBpbiBz
ZWxmLl9uYW1lMnBsdWdpbiBvciBwbHVnaW4gaW4gc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzOgor
ICAgICAgICAgICAgaWYgc2VsZi5fbmFtZTJwbHVnaW4uZ2V0KHBsdWdpbl9uYW1lLCAtMSkgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gICMgYmxvY2tlZCBwbHVnaW4sIHJldHVybiBO
b25lIHRvIGluZGljYXRlIG5vIHJlZ2lzdHJhdGlvbgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigKKyAgICAgICAgICAgICAgICAiUGx1Z2luIGFscmVhZHkgcmVnaXN0ZXJlZDogJXM9JXNc
biVzIgorICAgICAgICAgICAgICAgICUgKHBsdWdpbl9uYW1lLCBwbHVnaW4sIHNlbGYuX25hbWUy
cGx1Z2luKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgWFhYIGlmIGFuIGVycm9yIGhhcHBl
bnMgd2Ugc2hvdWxkIG1ha2Ugc3VyZSBubyBzdGF0ZSBoYXMgYmVlbgorICAgICAgICAjIGNoYW5n
ZWQgYXQgcG9pbnQgb2YgcmV0dXJuCisgICAgICAgIHNlbGYuX25hbWUycGx1Z2luW3BsdWdpbl9u
YW1lXSA9IHBsdWdpbgorCisgICAgICAgICMgcmVnaXN0ZXIgbWF0Y2hpbmcgaG9vayBpbXBsZW1l
bnRhdGlvbnMgb2YgdGhlIHBsdWdpbgorICAgICAgICBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnNb
cGx1Z2luXSA9IGhvb2tjYWxsZXJzID0gW10KKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyKHBsdWdp
bik6CisgICAgICAgICAgICBob29raW1wbF9vcHRzID0gc2VsZi5wYXJzZV9ob29raW1wbF9vcHRz
KHBsdWdpbiwgbmFtZSkKKyAgICAgICAgICAgIGlmIGhvb2tpbXBsX29wdHMgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgbm9ybWFsaXplX2hvb2tpbXBsX29wdHMoaG9va2ltcGxfb3B0cykK
KyAgICAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHBsdWdpbiwgbmFtZSkKKyAgICAgICAg
ICAgICAgICBob29raW1wbCA9IEhvb2tJbXBsKHBsdWdpbiwgcGx1Z2luX25hbWUsIG1ldGhvZCwg
aG9va2ltcGxfb3B0cykKKyAgICAgICAgICAgICAgICBob29rID0gZ2V0YXR0cihzZWxmLmhvb2ss
IG5hbWUsIE5vbmUpCisgICAgICAgICAgICAgICAgaWYgaG9vayBpcyBOb25lOgorICAgICAgICAg
ICAgICAgICAgICBob29rID0gX0hvb2tDYWxsZXIobmFtZSwgc2VsZi5faG9va2V4ZWMpCisgICAg
ICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5ob29rLCBuYW1lLCBob29rKQorICAgICAgICAg
ICAgICAgIGVsaWYgaG9vay5oYXNfc3BlYygpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl92
ZXJpZnlfaG9vayhob29rLCBob29raW1wbCkKKyAgICAgICAgICAgICAgICAgICAgaG9vay5fbWF5
YmVfYXBwbHlfaGlzdG9yeShob29raW1wbCkKKyAgICAgICAgICAgICAgICBob29rLl9hZGRfaG9v
a2ltcGwoaG9va2ltcGwpCisgICAgICAgICAgICAgICAgaG9va2NhbGxlcnMuYXBwZW5kKGhvb2sp
CisgICAgICAgIHJldHVybiBwbHVnaW5fbmFtZQorCisgICAgZGVmIHBhcnNlX2hvb2tpbXBsX29w
dHMoc2VsZiwgcGx1Z2luLCBuYW1lKToKKyAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihwbHVnaW4s
IG5hbWUpCisgICAgICAgIGlmIG5vdCBpbnNwZWN0Lmlzcm91dGluZShtZXRob2QpOgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IGdldGF0dHIobWV0
aG9kLCBzZWxmLnByb2plY3RfbmFtZSArICJfaW1wbCIsIE5vbmUpCisgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgICAgICByZXMgPSB7fQorICAgICAgICBpZiByZXMgaXMgbm90IE5v
bmUgYW5kIG5vdCBpc2luc3RhbmNlKHJlcywgZGljdCk6CisgICAgICAgICAgICAjIGZhbHNlIHBv
c2l0aXZlCisgICAgICAgICAgICByZXMgPSBOb25lCisgICAgICAgICMgVE9ETzogcmVtb3ZlIHdo
ZW4gd2UgZHJvcCBpbXBscHJlZml4IGluIDEuMAorICAgICAgICBlbGlmIHJlcyBpcyBOb25lIGFu
ZCBzZWxmLl9pbXBscHJlZml4IGFuZCBuYW1lLnN0YXJ0c3dpdGgoc2VsZi5faW1wbHByZWZpeCk6
CisgICAgICAgICAgICBfd2Fybl9mb3JfZnVuY3Rpb24oCisgICAgICAgICAgICAgICAgRGVwcmVj
YXRpb25XYXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAiVGhlIGBpbXBscHJlZml4YCBzeXN0
ZW0gaXMgZGVwcmVjYXRlZCBwbGVhc2UgZGVjb3JhdGUgIgorICAgICAgICAgICAgICAgICAgICAi
dGhpcyBmdW5jdGlvbiB1c2luZyBhbiBpbnN0YW5jZSBvZiBIb29raW1wbE1hcmtlci4iCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBtZXRob2QsCisgICAgICAgICAgICApCisg
ICAgICAgICAgICByZXMgPSB7fQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgdW5yZWdp
c3RlcihzZWxmLCBwbHVnaW49Tm9uZSwgbmFtZT1Ob25lKToKKyAgICAgICAgIiIiIHVucmVnaXN0
ZXIgYSBwbHVnaW4gb2JqZWN0IGFuZCBhbGwgaXRzIGNvbnRhaW5lZCBob29rIGltcGxlbWVudGF0
aW9ucworICAgICAgICBmcm9tIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gIiIiCisgICAgICAg
IGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIGFzc2VydCBwbHVnaW4gaXMgbm90IE5vbmUs
ICJvbmUgb2YgbmFtZSBvciBwbHVnaW4gbmVlZHMgdG8gYmUgc3BlY2lmaWVkIgorICAgICAgICAg
ICAgbmFtZSA9IHNlbGYuZ2V0X25hbWUocGx1Z2luKQorCisgICAgICAgIGlmIHBsdWdpbiBpcyBO
b25lOgorICAgICAgICAgICAgcGx1Z2luID0gc2VsZi5nZXRfcGx1Z2luKG5hbWUpCisKKyAgICAg
ICAgIyBpZiBzZWxmLl9uYW1lMnBsdWdpbltuYW1lXSA9PSBOb25lIHJlZ2lzdHJhdGlvbiB3YXMg
YmxvY2tlZDogaWdub3JlCisgICAgICAgIGlmIHNlbGYuX25hbWUycGx1Z2luLmdldChuYW1lKToK
KyAgICAgICAgICAgIGRlbCBzZWxmLl9uYW1lMnBsdWdpbltuYW1lXQorCisgICAgICAgIGZvciBo
b29rY2FsbGVyIGluIHNlbGYuX3BsdWdpbjJob29rY2FsbGVycy5wb3AocGx1Z2luLCBbXSk6Cisg
ICAgICAgICAgICBob29rY2FsbGVyLl9yZW1vdmVfcGx1Z2luKHBsdWdpbikKKworICAgICAgICBy
ZXR1cm4gcGx1Z2luCisKKyAgICBkZWYgc2V0X2Jsb2NrZWQoc2VsZiwgbmFtZSk6CisgICAgICAg
ICIiIiBibG9jayByZWdpc3RyYXRpb25zIG9mIHRoZSBnaXZlbiBuYW1lLCB1bnJlZ2lzdGVyIGlm
IGFscmVhZHkgcmVnaXN0ZXJlZC4gIiIiCisgICAgICAgIHNlbGYudW5yZWdpc3RlcihuYW1lPW5h
bWUpCisgICAgICAgIHNlbGYuX25hbWUycGx1Z2luW25hbWVdID0gTm9uZQorCisgICAgZGVmIGlz
X2Jsb2NrZWQoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIiByZXR1cm4gYGBUcnVlYGAgaWYgdGhl
IGdpdmVuIHBsdWdpbiBuYW1lIGlzIGJsb2NrZWQuICIiIgorICAgICAgICByZXR1cm4gbmFtZSBp
biBzZWxmLl9uYW1lMnBsdWdpbiBhbmQgc2VsZi5fbmFtZTJwbHVnaW5bbmFtZV0gaXMgTm9uZQor
CisgICAgZGVmIGFkZF9ob29rc3BlY3Moc2VsZiwgbW9kdWxlX29yX2NsYXNzKToKKyAgICAgICAg
IiIiIGFkZCBuZXcgaG9vayBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGluIHRoZSBnaXZlbiBgYG1v
ZHVsZV9vcl9jbGFzc2BgLgorICAgICAgICBGdW5jdGlvbnMgYXJlIHJlY29nbml6ZWQgaWYgdGhl
eSBoYXZlIGJlZW4gZGVjb3JhdGVkIGFjY29yZGluZ2x5LiAiIiIKKyAgICAgICAgbmFtZXMgPSBb
XQorICAgICAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlX29yX2NsYXNzKToKKyAgICAgICAgICAg
IHNwZWNfb3B0cyA9IHNlbGYucGFyc2VfaG9va3NwZWNfb3B0cyhtb2R1bGVfb3JfY2xhc3MsIG5h
bWUpCisgICAgICAgICAgICBpZiBzcGVjX29wdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgaGMgPSBnZXRhdHRyKHNlbGYuaG9vaywgbmFtZSwgTm9uZSkKKyAgICAgICAgICAgICAgICBp
ZiBoYyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBoYyA9IF9Ib29rQ2FsbGVyKG5hbWUs
IHNlbGYuX2hvb2tleGVjLCBtb2R1bGVfb3JfY2xhc3MsIHNwZWNfb3B0cykKKyAgICAgICAgICAg
ICAgICAgICAgc2V0YXR0cihzZWxmLmhvb2ssIG5hbWUsIGhjKQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICMgcGx1Z2lucyByZWdpc3RlcmVkIHRoaXMgaG9vayB3
aXRob3V0IGtub3dpbmcgdGhlIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgaGMuc2V0X3NwZWNp
ZmljYXRpb24obW9kdWxlX29yX2NsYXNzLCBzcGVjX29wdHMpCisgICAgICAgICAgICAgICAgICAg
IGZvciBob29rZnVuY3Rpb24gaW4gaGMuZ2V0X2hvb2tpbXBscygpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fdmVyaWZ5X2hvb2soaGMsIGhvb2tmdW5jdGlvbikKKyAgICAgICAgICAg
ICAgICBuYW1lcy5hcHBlbmQobmFtZSkKKworICAgICAgICBpZiBub3QgbmFtZXM6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJkaWQgbm90IGZpbmQgYW55
ICVyIGhvb2tzIGluICVyIiAlIChzZWxmLnByb2plY3RfbmFtZSwgbW9kdWxlX29yX2NsYXNzKQor
ICAgICAgICAgICAgKQorCisgICAgZGVmIHBhcnNlX2hvb2tzcGVjX29wdHMoc2VsZiwgbW9kdWxl
X29yX2NsYXNzLCBuYW1lKToKKyAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihtb2R1bGVfb3JfY2xh
c3MsIG5hbWUpCisgICAgICAgIHJldHVybiBnZXRhdHRyKG1ldGhvZCwgc2VsZi5wcm9qZWN0X25h
bWUgKyAiX3NwZWMiLCBOb25lKQorCisgICAgZGVmIGdldF9wbHVnaW5zKHNlbGYpOgorICAgICAg
ICAiIiIgcmV0dXJuIHRoZSBzZXQgb2YgcmVnaXN0ZXJlZCBwbHVnaW5zLiAiIiIKKyAgICAgICAg
cmV0dXJuIHNldChzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMpCisKKyAgICBkZWYgaXNfcmVnaXN0
ZXJlZChzZWxmLCBwbHVnaW4pOgorICAgICAgICAiIiIgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBw
bHVnaW4gaXMgYWxyZWFkeSByZWdpc3RlcmVkLiAiIiIKKyAgICAgICAgcmV0dXJuIHBsdWdpbiBp
biBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMKKworICAgIGRlZiBnZXRfY2Fub25pY2FsX25hbWUo
c2VsZiwgcGx1Z2luKToKKyAgICAgICAgIiIiIFJldHVybiBjYW5vbmljYWwgbmFtZSBmb3IgYSBw
bHVnaW4gb2JqZWN0LiBOb3RlIHRoYXQgYSBwbHVnaW4KKyAgICAgICAgbWF5IGJlIHJlZ2lzdGVy
ZWQgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB3aGljaCB3YXMgc3BlY2lmaWVkCisgICAgICAgIGJ5
IHRoZSBjYWxsZXIgb2YgOnB5Om1ldGg6YHJlZ2lzdGVyKHBsdWdpbiwgbmFtZSkgPC5QbHVnaW5N
YW5hZ2VyLnJlZ2lzdGVyPmAuCisgICAgICAgIFRvIG9idGFpbiB0aGUgbmFtZSBvZiBhbiByZWdp
c3RlcmVkIHBsdWdpbiB1c2UgOnB5Om1ldGg6YGdldF9uYW1lKHBsdWdpbikKKyAgICAgICAgPC5Q
bHVnaW5NYW5hZ2VyLmdldF9uYW1lPmAgaW5zdGVhZC4iIiIKKyAgICAgICAgcmV0dXJuIGdldGF0
dHIocGx1Z2luLCAiX19uYW1lX18iLCBOb25lKSBvciBzdHIoaWQocGx1Z2luKSkKKworICAgIGRl
ZiBnZXRfcGx1Z2luKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiIgUmV0dXJuIGEgcGx1Z2luIG9y
IGBgTm9uZWBgIGZvciB0aGUgZ2l2ZW4gbmFtZS4gIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9u
YW1lMnBsdWdpbi5nZXQobmFtZSkKKworICAgIGRlZiBoYXNfcGx1Z2luKHNlbGYsIG5hbWUpOgor
ICAgICAgICAiIiIgUmV0dXJuIGBgVHJ1ZWBgIGlmIGEgcGx1Z2luIHdpdGggdGhlIGdpdmVuIG5h
bWUgaXMgcmVnaXN0ZXJlZC4gIiIiCisgICAgICAgIHJldHVybiBzZWxmLmdldF9wbHVnaW4obmFt
ZSkgaXMgbm90IE5vbmUKKworICAgIGRlZiBnZXRfbmFtZShzZWxmLCBwbHVnaW4pOgorICAgICAg
ICAiIiIgUmV0dXJuIG5hbWUgZm9yIHJlZ2lzdGVyZWQgcGx1Z2luIG9yIGBgTm9uZWBgIGlmIG5v
dCByZWdpc3RlcmVkLiAiIiIKKyAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBzZWxmLl9uYW1lMnBs
dWdpbi5pdGVtcygpOgorICAgICAgICAgICAgaWYgcGx1Z2luID09IHZhbDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbmFtZQorCisgICAgZGVmIF92ZXJpZnlfaG9vayhzZWxmLCBob29rLCBob29r
aW1wbCk6CisgICAgICAgIGlmIGhvb2suaXNfaGlzdG9yaWMoKSBhbmQgaG9va2ltcGwuaG9va3dy
YXBwZXI6CisgICAgICAgICAgICByYWlzZSBQbHVnaW5WYWxpZGF0aW9uRXJyb3IoCisgICAgICAg
ICAgICAgICAgaG9va2ltcGwucGx1Z2luLAorICAgICAgICAgICAgICAgICJQbHVnaW4gJXJcbmhv
b2sgJXJcbmhpc3RvcmljIGluY29tcGF0aWJsZSB0byBob29rd3JhcHBlciIKKyAgICAgICAgICAg
ICAgICAlIChob29raW1wbC5wbHVnaW5fbmFtZSwgaG9vay5uYW1lKSwKKyAgICAgICAgICAgICkK
KyAgICAgICAgaWYgaG9vay5zcGVjLndhcm5fb25faW1wbDoKKyAgICAgICAgICAgIF93YXJuX2Zv
cl9mdW5jdGlvbihob29rLnNwZWMud2Fybl9vbl9pbXBsLCBob29raW1wbC5mdW5jdGlvbikKKyAg
ICAgICAgIyBwb3NpdGlvbmFsIGFyZyBjaGVja2luZworICAgICAgICBub3RpbnNwZWMgPSBzZXQo
aG9va2ltcGwuYXJnbmFtZXMpIC0gc2V0KGhvb2suc3BlYy5hcmduYW1lcykKKyAgICAgICAgaWYg
bm90aW5zcGVjOgorICAgICAgICAgICAgcmFpc2UgUGx1Z2luVmFsaWRhdGlvbkVycm9yKAorICAg
ICAgICAgICAgICAgIGhvb2tpbXBsLnBsdWdpbiwKKyAgICAgICAgICAgICAgICAiUGx1Z2luICVy
IGZvciBob29rICVyXG5ob29raW1wbCBkZWZpbml0aW9uOiAlc1xuIgorICAgICAgICAgICAgICAg
ICJBcmd1bWVudChzKSAlcyBhcmUgZGVjbGFyZWQgaW4gdGhlIGhvb2tpbXBsIGJ1dCAiCisgICAg
ICAgICAgICAgICAgImNhbiBub3QgYmUgZm91bmQgaW4gdGhlIGhvb2tzcGVjIgorICAgICAgICAg
ICAgICAgICUgKAorICAgICAgICAgICAgICAgICAgICBob29raW1wbC5wbHVnaW5fbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgaG9vay5uYW1lLAorICAgICAgICAgICAgICAgICAgICBfZm9ybWF0
ZGVmKGhvb2tpbXBsLmZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgbm90aW5zcGVjLAor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICBkZWYgY2hlY2tfcGVuZGlu
ZyhzZWxmKToKKyAgICAgICAgIiIiIFZlcmlmeSB0aGF0IGFsbCBob29rcyB3aGljaCBoYXZlIG5v
dCBiZWVuIHZlcmlmaWVkIGFnYWluc3QKKyAgICAgICAgYSBob29rIHNwZWNpZmljYXRpb24gYXJl
IG9wdGlvbmFsLCBvdGhlcndpc2UgcmFpc2UgOnB5OmNsYXNzOmAuUGx1Z2luVmFsaWRhdGlvbkVy
cm9yYC4iIiIKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5ob29rLl9fZGljdF9fOgorICAgICAg
ICAgICAgaWYgbmFtZVswXSAhPSAiXyI6CisgICAgICAgICAgICAgICAgaG9vayA9IGdldGF0dHIo
c2VsZi5ob29rLCBuYW1lKQorICAgICAgICAgICAgICAgIGlmIG5vdCBob29rLmhhc19zcGVjKCk6
CisgICAgICAgICAgICAgICAgICAgIGZvciBob29raW1wbCBpbiBob29rLmdldF9ob29raW1wbHMo
KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBob29raW1wbC5vcHRpb25hbGhvb2s6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGx1Z2luVmFsaWRhdGlvbkVycm9y
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob29raW1wbC5wbHVnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGhvb2sgJXIgaW4gcGx1Z2luICVy
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBob29raW1wbC5wbHVn
aW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBsb2FkX3NldHVw
dG9vbHNfZW50cnlwb2ludHMoc2VsZiwgZ3JvdXAsIG5hbWU9Tm9uZSk6CisgICAgICAgICIiIiBM
b2FkIG1vZHVsZXMgZnJvbSBxdWVyeWluZyB0aGUgc3BlY2lmaWVkIHNldHVwdG9vbHMgYGBncm91
cGBgLgorCisgICAgICAgIDpwYXJhbSBzdHIgZ3JvdXA6IGVudHJ5IHBvaW50IGdyb3VwIHRvIGxv
YWQgcGx1Z2lucworICAgICAgICA6cGFyYW0gc3RyIG5hbWU6IGlmIGdpdmVuLCBsb2FkcyBvbmx5
IHBsdWdpbnMgd2l0aCB0aGUgZ2l2ZW4gYGBuYW1lYGAuCisgICAgICAgIDpydHlwZTogaW50Cisg
ICAgICAgIDpyZXR1cm46IHJldHVybiB0aGUgbnVtYmVyIG9mIGxvYWRlZCBwbHVnaW5zIGJ5IHRo
aXMgY2FsbC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBmb3IgZGlz
dCBpbiBpbXBvcnRsaWJfbWV0YWRhdGEuZGlzdHJpYnV0aW9ucygpOgorICAgICAgICAgICAgZm9y
IGVwIGluIGRpc3QuZW50cnlfcG9pbnRzOgorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAg
ICAgICAgICAgICAgZXAuZ3JvdXAgIT0gZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgb3IgKG5h
bWUgaXMgbm90IE5vbmUgYW5kIGVwLm5hbWUgIT0gbmFtZSkKKyAgICAgICAgICAgICAgICAgICAg
IyBhbHJlYWR5IHJlZ2lzdGVyZWQKKyAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi5nZXRfcGx1
Z2luKGVwLm5hbWUpCisgICAgICAgICAgICAgICAgICAgIG9yIHNlbGYuaXNfYmxvY2tlZChlcC5u
YW1lKQorICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICAgICAgcGx1Z2luID0gZXAubG9hZCgpCisgICAgICAgICAgICAgICAgc2VsZi5y
ZWdpc3RlcihwbHVnaW4sIG5hbWU9ZXAubmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9wbHVn
aW5fZGlzdGluZm8uYXBwZW5kKChwbHVnaW4sIERpc3RGYWNhZGUoZGlzdCkpKQorICAgICAgICAg
ICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgbGlzdF9w
bHVnaW5fZGlzdGluZm8oc2VsZik6CisgICAgICAgICIiIiByZXR1cm4gbGlzdCBvZiBkaXN0aW5m
by9wbHVnaW4gdHVwbGVzIGZvciBhbGwgc2V0dXB0b29scyByZWdpc3RlcmVkCisgICAgICAgIHBs
dWdpbnMuICIiIgorICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9wbHVnaW5fZGlzdGluZm8pCisK
KyAgICBkZWYgbGlzdF9uYW1lX3BsdWdpbihzZWxmKToKKyAgICAgICAgIiIiIHJldHVybiBsaXN0
IG9mIG5hbWUvcGx1Z2luIHBhaXJzLiAiIiIKKyAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fbmFt
ZTJwbHVnaW4uaXRlbXMoKSkKKworICAgIGRlZiBnZXRfaG9va2NhbGxlcnMoc2VsZiwgcGx1Z2lu
KToKKyAgICAgICAgIiIiIGdldCBhbGwgaG9vayBjYWxsZXJzIGZvciB0aGUgc3BlY2lmaWVkIHBs
dWdpbi4gIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMuZ2V0KHBs
dWdpbikKKworICAgIGRlZiBhZGRfaG9va2NhbGxfbW9uaXRvcmluZyhzZWxmLCBiZWZvcmUsIGFm
dGVyKToKKyAgICAgICAgIiIiIGFkZCBiZWZvcmUvYWZ0ZXIgdHJhY2luZyBmdW5jdGlvbnMgZm9y
IGFsbCBob29rcworICAgICAgICBhbmQgcmV0dXJuIGFuIHVuZG8gZnVuY3Rpb24gd2hpY2gsIHdo
ZW4gY2FsbGVkLAorICAgICAgICB3aWxsIHJlbW92ZSB0aGUgYWRkZWQgdHJhY2Vycy4KKworICAg
ICAgICBgYGJlZm9yZShob29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncylgYCB3aWxsIGJlIGNh
bGxlZCBhaGVhZAorICAgICAgICBvZiBhbGwgaG9vayBjYWxscyBhbmQgcmVjZWl2ZSBhIGhvb2tj
YWxsZXIgaW5zdGFuY2UsIGEgbGlzdAorICAgICAgICBvZiBIb29rSW1wbCBpbnN0YW5jZXMgYW5k
IHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIGhvb2sgY2FsbC4KKworICAgICAgICBgYGFm
dGVyKG91dGNvbWUsIGhvb2tfbmFtZSwgaG9va19pbXBscywga3dhcmdzKWBgIHJlY2VpdmVzIHRo
ZQorICAgICAgICBzYW1lIGFyZ3VtZW50cyBhcyBgYGJlZm9yZWBgIGJ1dCBhbHNvIGEgOnB5OmNs
YXNzOmBwbHVnZ3kuY2FsbGVycy5fUmVzdWx0YCBvYmplY3QKKyAgICAgICAgd2hpY2ggcmVwcmVz
ZW50cyB0aGUgcmVzdWx0IG9mIHRoZSBvdmVyYWxsIGhvb2sgY2FsbC4KKyAgICAgICAgIiIiCisg
ICAgICAgIG9sZGNhbGwgPSBzZWxmLl9pbm5lcl9ob29rZXhlYworCisgICAgICAgIGRlZiB0cmFj
ZWRfaG9va2V4ZWMoaG9vaywgaG9va19pbXBscywga3dhcmdzKToKKyAgICAgICAgICAgIGJlZm9y
ZShob29rLm5hbWUsIGhvb2tfaW1wbHMsIGt3YXJncykKKyAgICAgICAgICAgIG91dGNvbWUgPSBf
UmVzdWx0LmZyb21fY2FsbChsYW1iZGE6IG9sZGNhbGwoaG9vaywgaG9va19pbXBscywga3dhcmdz
KSkKKyAgICAgICAgICAgIGFmdGVyKG91dGNvbWUsIGhvb2submFtZSwgaG9va19pbXBscywga3dh
cmdzKQorICAgICAgICAgICAgcmV0dXJuIG91dGNvbWUuZ2V0X3Jlc3VsdCgpCisKKyAgICAgICAg
c2VsZi5faW5uZXJfaG9va2V4ZWMgPSB0cmFjZWRfaG9va2V4ZWMKKworICAgICAgICBkZWYgdW5k
bygpOgorICAgICAgICAgICAgc2VsZi5faW5uZXJfaG9va2V4ZWMgPSBvbGRjYWxsCisKKyAgICAg
ICAgcmV0dXJuIHVuZG8KKworICAgIGRlZiBlbmFibGVfdHJhY2luZyhzZWxmKToKKyAgICAgICAg
IiIiIGVuYWJsZSB0cmFjaW5nIG9mIGhvb2sgY2FsbHMgYW5kIHJldHVybiBhbiB1bmRvIGZ1bmN0
aW9uLiAiIiIKKyAgICAgICAgaG9va3RyYWNlID0gc2VsZi50cmFjZS5yb290LmdldCgiaG9vayIp
CisKKyAgICAgICAgZGVmIGJlZm9yZShob29rX25hbWUsIG1ldGhvZHMsIGt3YXJncyk6CisgICAg
ICAgICAgICBob29rdHJhY2Uucm9vdC5pbmRlbnQgKz0gMQorICAgICAgICAgICAgaG9va3RyYWNl
KGhvb2tfbmFtZSwga3dhcmdzKQorCisgICAgICAgIGRlZiBhZnRlcihvdXRjb21lLCBob29rX25h
bWUsIG1ldGhvZHMsIGt3YXJncyk6CisgICAgICAgICAgICBpZiBvdXRjb21lLmV4Y2luZm8gaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBob29rdHJhY2UoImZpbmlzaCIsIGhvb2tfbmFtZSwgIi0t
PiIsIG91dGNvbWUuZ2V0X3Jlc3VsdCgpKQorICAgICAgICAgICAgaG9va3RyYWNlLnJvb3QuaW5k
ZW50IC09IDEKKworICAgICAgICByZXR1cm4gc2VsZi5hZGRfaG9va2NhbGxfbW9uaXRvcmluZyhi
ZWZvcmUsIGFmdGVyKQorCisgICAgZGVmIHN1YnNldF9ob29rX2NhbGxlcihzZWxmLCBuYW1lLCBy
ZW1vdmVfcGx1Z2lucyk6CisgICAgICAgICIiIiBSZXR1cm4gYSBuZXcgOnB5OmNsYXNzOmAuaG9v
a3MuX0hvb2tDYWxsZXJgIGluc3RhbmNlIGZvciB0aGUgbmFtZWQgbWV0aG9kCisgICAgICAgIHdo
aWNoIG1hbmFnZXMgY2FsbHMgdG8gYWxsIHJlZ2lzdGVyZWQgcGx1Z2lucyBleGNlcHQgdGhlCisg
ICAgICAgIG9uZXMgZnJvbSByZW1vdmVfcGx1Z2lucy4gIiIiCisgICAgICAgIG9yaWcgPSBnZXRh
dHRyKHNlbGYuaG9vaywgbmFtZSkKKyAgICAgICAgcGx1Z2luc190b19yZW1vdmUgPSBbcGx1ZyBm
b3IgcGx1ZyBpbiByZW1vdmVfcGx1Z2lucyBpZiBoYXNhdHRyKHBsdWcsIG5hbWUpXQorICAgICAg
ICBpZiBwbHVnaW5zX3RvX3JlbW92ZToKKyAgICAgICAgICAgIGhjID0gX0hvb2tDYWxsZXIoCisg
ICAgICAgICAgICAgICAgb3JpZy5uYW1lLCBvcmlnLl9ob29rZXhlYywgb3JpZy5zcGVjLm5hbWVz
cGFjZSwgb3JpZy5zcGVjLm9wdHMKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBob29r
aW1wbCBpbiBvcmlnLmdldF9ob29raW1wbHMoKToKKyAgICAgICAgICAgICAgICBwbHVnaW4gPSBo
b29raW1wbC5wbHVnaW4KKyAgICAgICAgICAgICAgICBpZiBwbHVnaW4gbm90IGluIHBsdWdpbnNf
dG9fcmVtb3ZlOgorICAgICAgICAgICAgICAgICAgICBoYy5fYWRkX2hvb2tpbXBsKGhvb2tpbXBs
KQorICAgICAgICAgICAgICAgICAgICAjIHdlIGFsc28ga2VlcCB0cmFjayBvZiB0aGlzIGhvb2sg
Y2FsbGVyIHNvIGl0CisgICAgICAgICAgICAgICAgICAgICMgZ2V0cyBwcm9wZXJseSByZW1vdmVk
IG9uIHBsdWdpbiB1bnJlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wbHVn
aW4yaG9va2NhbGxlcnMuc2V0ZGVmYXVsdChwbHVnaW4sIFtdKS5hcHBlbmQoaGMpCisgICAgICAg
ICAgICByZXR1cm4gaGMKKyAgICAgICAgcmV0dXJuIG9yaWcKKworCitpZiBoYXNhdHRyKGluc3Bl
Y3QsICJzaWduYXR1cmUiKToKKworICAgIGRlZiBfZm9ybWF0ZGVmKGZ1bmMpOgorICAgICAgICBy
ZXR1cm4gIiVzJXMiICUgKGZ1bmMuX19uYW1lX18sIHN0cihpbnNwZWN0LnNpZ25hdHVyZShmdW5j
KSkpCisKKworZWxzZToKKworICAgIGRlZiBfZm9ybWF0ZGVmKGZ1bmMpOgorICAgICAgICByZXR1
cm4gIiVzJXMiICUgKAorICAgICAgICAgICAgZnVuYy5fX25hbWVfXywKKyAgICAgICAgICAgIGlu
c3BlY3QuZm9ybWF0YXJnc3BlYygqaW5zcGVjdC5nZXRhcmdzcGVjKGZ1bmMpKSwKKyAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy9iZW5jaG1hcmsucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS90ZXN0aW5nL2JlbmNobWFyay5weQppbmRleCA1YTkxM2U5ZDQxOGQuLmFhOGRlOTI5MTFi
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy9iZW5jaG1hcmsucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvdGVzdGluZy9iZW5jaG1hcmsucHkKQEAgLTIsOCArMiw5IEBACiBCZW5jaG1hcmtp
bmcgYW5kIHBlcmZvcm1hbmNlIHRlc3RzLgogIiIiCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHBsdWdn
eSBpbXBvcnQgKF9tdWx0aWNhbGwsIF9sZWdhY3ltdWx0aWNhbGwsIEhvb2tJbXBsLCBIb29rc3Bl
Y01hcmtlciwKLSAgICAgICAgICAgICAgICAgICAgSG9va2ltcGxNYXJrZXIpCitmcm9tIHBsdWdn
eSBpbXBvcnQgSG9va3NwZWNNYXJrZXIsIEhvb2tpbXBsTWFya2VyCitmcm9tIHBsdWdneS5ob29r
cyBpbXBvcnQgSG9va0ltcGwKK2Zyb20gcGx1Z2d5LmNhbGxlcnMgaW1wb3J0IF9tdWx0aWNhbGws
IF9sZWdhY3ltdWx0aWNhbGwKIAogaG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigiZXhhbXBsZSIp
CiBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJleGFtcGxlIikKQEAgLTE0LDcgKzE1LDcgQEAg
ZGVmIE1DKG1ldGhvZHMsIGt3YXJncywgY2FsbGVydHlwZSwgZmlyc3RyZXN1bHQ9RmFsc2UpOgog
ICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoKICAgICAgICAgZiA9IEhvb2tJbXBsKE5vbmUsICI8
dGVtcD4iLCBtZXRob2QsIG1ldGhvZC5leGFtcGxlX2ltcGwpCiAgICAgICAgIGhvb2tmdW5jcy5h
cHBlbmQoZikKLSAgICByZXR1cm4gY2FsbGVydHlwZShob29rZnVuY3MsIGt3YXJncywgeyJmaXJz
dHJlc3VsdCI6IGZpcnN0cmVzdWx0fSkKKyAgICByZXR1cm4gY2FsbGVydHlwZShob29rZnVuY3Ms
IGt3YXJncywgZmlyc3RyZXN1bHQ9Zmlyc3RyZXN1bHQpCiAKIAogQGhvb2tpbXBsCkBAIC0yNywz
MiArMjgsMjMgQEAgZGVmIHdyYXBwZXIoYXJnMSwgYXJnMiwgYXJnMyk6CiAgICAgeWllbGQKIAog
Ci1AcHl0ZXN0LmZpeHR1cmUoCi0gICAgcGFyYW1zPVsxMCwgMTAwXSwKLSAgICBpZHM9Imhvb2tz
PXt9Ii5mb3JtYXQsCi0pCitAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsxMCwgMTAwXSwgaWRzPSJo
b29rcz17fSIuZm9ybWF0KQogZGVmIGhvb2tzKHJlcXVlc3QpOgogICAgIHJldHVybiBbaG9vayBm
b3IgaSBpbiByYW5nZShyZXF1ZXN0LnBhcmFtKV0KIAogCi1AcHl0ZXN0LmZpeHR1cmUoCi0gICAg
cGFyYW1zPVsxMCwgMTAwXSwKLSAgICBpZHM9IndyYXBwZXJzPXt9Ii5mb3JtYXQsCi0pCitAcHl0
ZXN0LmZpeHR1cmUocGFyYW1zPVsxMCwgMTAwXSwgaWRzPSJ3cmFwcGVycz17fSIuZm9ybWF0KQog
ZGVmIHdyYXBwZXJzKHJlcXVlc3QpOgogICAgIHJldHVybiBbd3JhcHBlciBmb3IgaSBpbiByYW5n
ZShyZXF1ZXN0LnBhcmFtKV0KIAogCi1AcHl0ZXN0LmZpeHR1cmUoCi0gICAgcGFyYW1zPVtfbXVs
dGljYWxsLCBfbGVnYWN5bXVsdGljYWxsXSwKLSAgICBpZHM9bGFtYmRhIGl0ZW06IGl0ZW0uX19u
YW1lX18KLSkKK0BweXRlc3QuZml4dHVyZShwYXJhbXM9W19tdWx0aWNhbGwsIF9sZWdhY3ltdWx0
aWNhbGxdLCBpZHM9bGFtYmRhIGl0ZW06IGl0ZW0uX19uYW1lX18pCiBkZWYgY2FsbGVydHlwZShy
ZXF1ZXN0KToKICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQogCiAKIGRlZiBpbm5lcl9leGVjKG1l
dGhvZHMsIGNhbGxlcnR5cGUpOgotICAgIHJldHVybiBNQyhtZXRob2RzLCB7J2FyZzEnOiAxLCAn
YXJnMic6IDIsICdhcmczJzogM30sIGNhbGxlcnR5cGUpCisgICAgcmV0dXJuIE1DKG1ldGhvZHMs
IHsiYXJnMSI6IDEsICJhcmcyIjogMiwgImFyZzMiOiAzfSwgY2FsbGVydHlwZSkKIAogCiBkZWYg
dGVzdF9ob29rX2FuZF93cmFwcGVyc19zcGVlZChiZW5jaG1hcmssIGhvb2tzLCB3cmFwcGVycywg
Y2FsbGVydHlwZSk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2NvbmZ0ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy9jb25mdGVzdC5weQppbmRleCAzZDYxYTM0OWM4OGMuLmU0
NDY2N2VmNWYxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy9jb25mdGVzdC5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2NvbmZ0ZXN0LnB5CkBAIC0yLDE3ICsyLDEyIEBAIGlt
cG9ydCBweXRlc3QKIAogCiBAcHl0ZXN0LmZpeHR1cmUoCi0gICAgcGFyYW1zPVsKLSAgICAgICAg
bGFtYmRhIHNwZWM6IHNwZWMsCi0gICAgICAgIGxhbWJkYSBzcGVjOiBzcGVjKCkKLSAgICBdLAot
ICAgIGlkcz1bCi0gICAgICAgICJzcGVjLWlzLWNsYXNzIiwKLSAgICAgICAgInNwZWMtaXMtaW5z
dGFuY2UiCi0gICAgXSwKKyAgICBwYXJhbXM9W2xhbWJkYSBzcGVjOiBzcGVjLCBsYW1iZGEgc3Bl
Yzogc3BlYygpXSwKKyAgICBpZHM9WyJzcGVjLWlzLWNsYXNzIiwgInNwZWMtaXMtaW5zdGFuY2Ui
XSwKICkKIGRlZiBoZV9wbShyZXF1ZXN0LCBwbSk6CiAgICAgZnJvbSBwbHVnZ3kgaW1wb3J0IEhv
b2tzcGVjTWFya2VyCisKICAgICBob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxlIikK
IAogICAgIGNsYXNzIEhvb2tzKG9iamVjdCk6CkBAIC0yNyw0ICsyMiw1IEBAIGRlZiBoZV9wbShy
ZXF1ZXN0LCBwbSk6CiBAcHl0ZXN0LmZpeHR1cmUKIGRlZiBwbSgpOgogICAgIGZyb20gcGx1Z2d5
IGltcG9ydCBQbHVnaW5NYW5hZ2VyCisKICAgICByZXR1cm4gUGx1Z2luTWFuYWdlcigiZXhhbXBs
ZSIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfZGVwcmVjYXRpb25zLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2RlcHJlY2F0aW9ucy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcxNTE5MjFiNjY4NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9kZXByZWNhdGlvbnMucHkKQEAgLTAsMCArMSw1
NCBAQAorIiIiCitEZXByZWNhdGlvbiB3YXJuaW5ncyB0ZXN0aW5nIHJvdW5kdXAuCisiIiIKK2lt
cG9ydCBweXRlc3QKK2Zyb20gcGx1Z2d5LmNhbGxlcnMgaW1wb3J0IF9SZXN1bHQKK2Zyb20gcGx1
Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBIb29raW1wbE1hcmtlciwgSG9va3NwZWNNYXJrZXIK
KworaG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigiZXhhbXBsZSIpCitob29raW1wbCA9IEhvb2tp
bXBsTWFya2VyKCJleGFtcGxlIikKKworCitkZWYgdGVzdF9yZXN1bHRfZGVwcmVjYXRlZCgpOgor
ICAgIHIgPSBfUmVzdWx0KDEwLCBOb25lKQorICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2Fs
bCgpOgorICAgICAgICBhc3NlcnQgci5yZXN1bHQgPT0gMTAKKworCitkZWYgdGVzdF9pbXBscHJl
Zml4X2RlcHJlY2F0ZWQoKToKKyAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwoKToKKyAg
ICAgICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCJibGFoIiwgaW1wbHByZWZpeD0iYmxhaF8iKQorCisg
ICAgY2xhc3MgUGx1Z2luOgorICAgICAgICBkZWYgYmxhaF9teWhvb2soc2VsZiwgYXJnMSk6Cisg
ICAgICAgICAgICByZXR1cm4gYXJnMQorCisgICAgd2l0aCBweXRlc3QuZGVwcmVjYXRlZF9jYWxs
KCk6CisgICAgICAgIHBtLnJlZ2lzdGVyKFBsdWdpbigpKQorCisKK2RlZiB0ZXN0X2NhbGxoaXN0
b3JpY19wcm9jX2RlcHJlY2F0ZWQocG0pOgorICAgICIiImBgcHJvY2BgIGt3YXJnIHRvIGBQbHVn
aW5NYW5hbmdlci5jYWxsX2hpc3RvcmljKClgIGlzIG5vdyBvZmZpY2lhbGx5CisgICAgZGVwcmVj
YXRlZC4KKyAgICAiIiIKKworICAgIGNsYXNzIFAxKG9iamVjdCk6CisgICAgICAgIEBob29rc3Bl
YyhoaXN0b3JpYz1UcnVlKQorICAgICAgICBAaG9va2ltcGwKKyAgICAgICAgZGVmIG0oc2VsZiwg
eCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICBwMSA9IFAxKCkKKyAgICBwbS5hZGRfaG9va3Nw
ZWNzKHAxKQorICAgIHBtLnJlZ2lzdGVyKHAxKQorICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRf
Y2FsbCgpOgorICAgICAgICBwbS5ob29rLm0uY2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdCh4PTEw
KSwgcHJvYz1sYW1iZGEgcmVzOiByZXMpCisKKworZGVmIHRlc3RfbXVsdGljYWxsX2RlcHJlY2F0
ZWQocG0pOgorICAgIGNsYXNzIFAxKG9iamVjdCk6CisgICAgICAgIEBob29raW1wbAorICAgICAg
ICBkZWYgbShzZWxmLCBfX211bHRpY2FsbF9fLCB4KToKKyAgICAgICAgICAgIHBhc3MKKworICAg
IHB5dGVzdC5kZXByZWNhdGVkX2NhbGwocG0ucmVnaXN0ZXIsIFAxKCkpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfZGV0YWlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3Rpbmcv
dGVzdF9kZXRhaWxzLnB5CmluZGV4IDJmYWQxOThkOTU4NS4uZmM0OWZjMzA4ZGVjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfZGV0YWlscy5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS90ZXN0aW5nL3Rlc3RfZGV0YWlscy5weQpAQCAtMSw4ICsxLDYgQEAKIGltcG9ydCB3YXJuaW5n
cwotCiBpbXBvcnQgcHl0ZXN0Ci0KLWZyb20gcGx1Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBI
b29raW1wbE1hcmtlciwgSG9va3NwZWNNYXJrZXIsIF9SZXN1bHQKK2Zyb20gcGx1Z2d5IGltcG9y
dCBQbHVnaW5NYW5hZ2VyLCBIb29raW1wbE1hcmtlciwgSG9va3NwZWNNYXJrZXIKIAogaG9va3Nw
ZWMgPSBIb29rc3BlY01hcmtlcigiZXhhbXBsZSIpCiBob29raW1wbCA9IEhvb2tpbXBsTWFya2Vy
KCJleGFtcGxlIikKQEAgLTExLDggKzksNyBAQCBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJl
eGFtcGxlIikKIGRlZiB0ZXN0X3BhcnNlX2hvb2tpbXBsX292ZXJyaWRlKCk6CiAgICAgY2xhc3Mg
TXlQbHVnaW5NYW5hZ2VyKFBsdWdpbk1hbmFnZXIpOgogICAgICAgICBkZWYgcGFyc2VfaG9va2lt
cGxfb3B0cyhzZWxmLCBtb2R1bGVfb3JfY2xhc3MsIG5hbWUpOgotICAgICAgICAgICAgb3B0cyA9
IFBsdWdpbk1hbmFnZXIucGFyc2VfaG9va2ltcGxfb3B0cygKLSAgICAgICAgICAgICAgICBzZWxm
LCBtb2R1bGVfb3JfY2xhc3MsIG5hbWUpCisgICAgICAgICAgICBvcHRzID0gUGx1Z2luTWFuYWdl
ci5wYXJzZV9ob29raW1wbF9vcHRzKHNlbGYsIG1vZHVsZV9vcl9jbGFzcywgbmFtZSkKICAgICAg
ICAgICAgIGlmIG9wdHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dp
dGgoIngxIik6CiAgICAgICAgICAgICAgICAgICAgIG9wdHMgPSB7fQpAQCAtNDcsMTMgKzQ0LDM4
IEBAIGRlZiB0ZXN0X3BhcnNlX2hvb2tpbXBsX292ZXJyaWRlKCk6CiAgICAgYXNzZXJ0IHBtLmhv
b2sueDFtZXRoMi5fd3JhcHBlcnNbMF0uaG9va3dyYXBwZXIKIAogCitkZWYgdGVzdF93YXJuX3do
ZW5fZGVwcmVjYXRlZF9zcGVjaWZpZWQocmVjd2Fybik6CisgICAgd2FybmluZyA9IERlcHJlY2F0
aW9uV2FybmluZygiZm9vIGlzIGRlcHJlY2F0ZWQiKQorCisgICAgY2xhc3MgU3BlYyhvYmplY3Qp
OgorICAgICAgICBAaG9va3NwZWMod2Fybl9vbl9pbXBsPXdhcm5pbmcpCisgICAgICAgIGRlZiBm
b28oc2VsZik6CisgICAgICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBQbHVnaW4ob2JqZWN0KToK
KyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoaG9va3NwZWMucHJvamVjdF9uYW1lKQorICAg
IHBtLmFkZF9ob29rc3BlY3MoU3BlYykKKworICAgIHdpdGggcHl0ZXN0Lndhcm5zKERlcHJlY2F0
aW9uV2FybmluZykgYXMgcmVjb3JkczoKKyAgICAgICAgcG0ucmVnaXN0ZXIoUGx1Z2luKCkpCisg
ICAgKHJlY29yZCwpID0gcmVjb3JkcworICAgIGFzc2VydCByZWNvcmQubWVzc2FnZSBpcyB3YXJu
aW5nCisgICAgYXNzZXJ0IHJlY29yZC5maWxlbmFtZSA9PSBQbHVnaW4uZm9vLl9fY29kZV9fLmNv
X2ZpbGVuYW1lCisgICAgYXNzZXJ0IHJlY29yZC5saW5lbm8gPT0gUGx1Z2luLmZvby5fX2NvZGVf
Xy5jb19maXJzdGxpbmVubworCisKIGRlZiB0ZXN0X3BsdWdpbl9nZXRhdHRyX3JhaXNlc19lcnJv
cnMoKToKICAgICAiIiJQbHVnZ3kgbXVzdCBiZSBhYmxlIHRvIGhhbmRsZSBwbHVnaW5zIHdoaWNo
IHJhaXNlIHdlaXJkIGV4Y2VwdGlvbnMKICAgICB3aGVuIGdldGF0dHIoKSBnZXRzIGNhbGxlZCAo
IzExKS4KICAgICAiIiIKKwogICAgIGNsYXNzIERvbnRUb3VjaE1lKG9iamVjdCk6CiAgICAgICAg
IGRlZiBfX2dldGF0dHJfXyhzZWxmLCB4KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
Y2FudCB0b3VjaCBtZScpCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImNhbnQgdG91Y2gg
bWUiKQogCiAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CiAgICAgICAgIHBhc3MKQEAgLTYzLDE0
ICs4NSwxNSBAQCBkZWYgdGVzdF9wbHVnaW5fZ2V0YXR0cl9yYWlzZXNfZXJyb3JzKCk6CiAKICAg
ICBwbSA9IFBsdWdpbk1hbmFnZXIoaG9va3NwZWMucHJvamVjdF9uYW1lKQogICAgICMgcmVnaXN0
ZXIoKSB3b3VsZCByYWlzZSBhbiBlcnJvcgotICAgIHBtLnJlZ2lzdGVyKG1vZHVsZSwgJ2RvbnR0
b3VjaCcpCi0gICAgYXNzZXJ0IHBtLmdldF9wbHVnaW4oJ2RvbnR0b3VjaCcpIGlzIG1vZHVsZQor
ICAgIHBtLnJlZ2lzdGVyKG1vZHVsZSwgImRvbnR0b3VjaCIpCisgICAgYXNzZXJ0IHBtLmdldF9w
bHVnaW4oImRvbnR0b3VjaCIpIGlzIG1vZHVsZQogCiAKIGRlZiB0ZXN0X3dhcm5pbmdfb25fY2Fs
bF92c19ob29rc3BlY19hcmdfbWlzbWF0Y2goKToKICAgICAiIiJWZXJpZnkgdGhhdCBpcyBhIGhv
b2sgaXMgY2FsbGVkIHdpdGggbGVzcyBhcmd1bWVudHMgdGhlbiBkZWZpbmVkIGluIHRoZQogICAg
IHNwZWMgdGhhdCBhIHdhcm5pbmcgaXMgZW1pdHRlZC4KICAgICAiIiIKKwogICAgIGNsYXNzIFNw
ZWM6CiAgICAgICAgIEBob29rc3BlYwogICAgICAgICBkZWYgbXlob29rKHNlbGYsIGFyZzEsIGFy
ZzIpOgpAQCAtODYsNyArMTA5LDcgQEAgZGVmIHRlc3Rfd2FybmluZ19vbl9jYWxsX3ZzX2hvb2tz
cGVjX2FyZ19taXNtYXRjaCgpOgogICAgIHBtLmFkZF9ob29rc3BlY3MoU3BlYygpKQogCiAgICAg
d2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgd2FybnM6Ci0gICAg
ICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgd2FybmluZ3Muc2lt
cGxlZmlsdGVyKCJhbHdheXMiKQogCiAgICAgICAgICMgY2FsbGluZyBzaG91bGQgdHJpZ2dlciBh
IHdhcm5pbmcKICAgICAgICAgcG0uaG9vay5teWhvb2soYXJnMT0xKQpAQCAtOTcsNyArMTIwLDE2
IEBAIGRlZiB0ZXN0X3dhcm5pbmdfb25fY2FsbF92c19ob29rc3BlY19hcmdfbWlzbWF0Y2goKToK
ICAgICAgICAgYXNzZXJ0ICJBcmd1bWVudChzKSAoJ2FyZzInLCkiIGluIHN0cih3YXJuaW5nLm1l
c3NhZ2UpCiAKIAotZGVmIHRlc3RfcmVzdWx0X2RlcHJlY2F0ZWQoKToKLSAgICByID0gX1Jlc3Vs
dCgxMCwgTm9uZSkKLSAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwoKToKLSAgICAgICAg
YXNzZXJ0IHIucmVzdWx0ID09IDEwCitkZWYgdGVzdF9yZXByKCk6CisgICAgY2xhc3MgUGx1Z2lu
OgorICAgICAgICBAaG9va2ltcGwKKyAgICAgICAgZGVmIG15aG9vaygpOgorICAgICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoaG9v
a3NwZWMucHJvamVjdF9uYW1lKQorCisgICAgcGx1Z2luID0gUGx1Z2luKCkKKyAgICBwbmFtZSA9
IHBtLnJlZ2lzdGVyKHBsdWdpbikKKyAgICBhc3NlcnQgcmVwcihwbS5ob29rLm15aG9vay5fbm9u
d3JhcHBlcnNbMF0pID09ICgKKyAgICAgICAgIjxIb29rSW1wbCBwbHVnaW5fbmFtZT0lciwgcGx1
Z2luPSVyPiIgJSAocG5hbWUsIHBsdWdpbikKKyAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS90ZXN0aW5nL3Rlc3RfaGVscGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9oZWxw
ZXJzLnB5CmluZGV4IGIxNzgwOTY4NDQ2NS4uNjRjM2VkYWEwYTFlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS90ZXN0aW5nL3Rlc3RfaGVscGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5n
L3Rlc3RfaGVscGVycy5weQpAQCAtMSw0ICsxLDggQEAKLWZyb20gcGx1Z2d5IGltcG9ydCBfZm9y
bWF0ZGVmLCB2YXJuYW1lcworZnJvbSBwbHVnZ3kuaG9va3MgaW1wb3J0IHZhcm5hbWVzCitmcm9t
IHBsdWdneS5tYW5hZ2VyIGltcG9ydCBfZm9ybWF0ZGVmCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBw
eXRlc3QKIAogCiBkZWYgdGVzdF92YXJuYW1lcygpOgpAQCAtMTQsOCArMTgsOCBAQCBkZWYgdGVz
dF92YXJuYW1lcygpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgYXNzZXJ0IHZhcm5hbWVzKGYp
ID09ICgoIngiLCksICgpKQotICAgIGFzc2VydCB2YXJuYW1lcyhBKCkuZikgPT0gKCgneScsKSwg
KCkpCi0gICAgYXNzZXJ0IHZhcm5hbWVzKEIoKSkgPT0gKCgneicsKSwgKCkpCisgICAgYXNzZXJ0
IHZhcm5hbWVzKEEoKS5mKSA9PSAoKCJ5IiwpLCAoKSkKKyAgICBhc3NlcnQgdmFybmFtZXMoQigp
KSA9PSAoKCJ6IiwpLCAoKSkKIAogCiBkZWYgdGVzdF92YXJuYW1lc19kZWZhdWx0KCk6CkBAIC00
NiwxMSArNTAsMjkgQEAgZGVmIHRlc3RfdmFybmFtZXNfY2xhc3MoKToKICAgICBhc3NlcnQgdmFy
bmFtZXMoRikgPT0gKCgpLCAoKSkKIAogCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgIHN5cy52
ZXJzaW9uX2luZm8gPCAoMywpLCByZWFzb249IktleXdvcmQgb25seSBhcmd1bWVudHMgYXJlIFB5
dGhvbiAzIG9ubHkiCispCitkZWYgdGVzdF92YXJuYW1lc19rZXl3b3JkX29ubHkoKToKKyAgICAj
IFN5bnRheEVycm9yIG9uIFB5dGhvbiAyLCBzbyB3ZSBleGVjCisgICAgbnMgPSB7fQorICAgIGV4
ZWMoCisgICAgICAgICJkZWYgZjEoeCwgKiwgeSk6IHBhc3NcbiIKKyAgICAgICAgImRlZiBmMih4
LCAqLCB5PTMpOiBwYXNzXG4iCisgICAgICAgICJkZWYgZjMoeD0xLCAqLCB5PTMpOiBwYXNzXG4i
LAorICAgICAgICBucywKKyAgICApCisKKyAgICBhc3NlcnQgdmFybmFtZXMobnNbImYxIl0pID09
ICgoIngiLCksICgpKQorICAgIGFzc2VydCB2YXJuYW1lcyhuc1siZjIiXSkgPT0gKCgieCIsKSwg
KCkpCisgICAgYXNzZXJ0IHZhcm5hbWVzKG5zWyJmMyJdKSA9PSAoKCksICgieCIsKSkKKworCiBk
ZWYgdGVzdF9mb3JtYXRkZWYoKToKICAgICBkZWYgZnVuY3Rpb24xKCk6CiAgICAgICAgIHBhc3MK
IAotICAgIGFzc2VydCBfZm9ybWF0ZGVmKGZ1bmN0aW9uMSkgPT0gJ2Z1bmN0aW9uMSgpJworICAg
IGFzc2VydCBfZm9ybWF0ZGVmKGZ1bmN0aW9uMSkgPT0gImZ1bmN0aW9uMSgpIgogCiAgICAgZGVm
IGZ1bmN0aW9uMihhcmcxKToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
dGVzdGluZy90ZXN0X2hvb2tjYWxsZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaG9v
a2NhbGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2NjRm
MmJiZjY2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9ob29r
Y2FsbGVyLnB5CkBAIC0wLDAgKzEsMjE1IEBACitpbXBvcnQgcHl0ZXN0CisKK2Zyb20gcGx1Z2d5
IGltcG9ydCBIb29raW1wbE1hcmtlciwgSG9va3NwZWNNYXJrZXIKK2Zyb20gcGx1Z2d5Lmhvb2tz
IGltcG9ydCBIb29rSW1wbAorCitob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxlIikK
K2hvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoImV4YW1wbGUiKQorCisKK0BweXRlc3QuZml4dHVy
ZQorZGVmIGhjKHBtKToKKyAgICBjbGFzcyBIb29rcyhvYmplY3QpOgorICAgICAgICBAaG9va3Nw
ZWMKKyAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZiwgYXJnKToKKyAgICAgICAgICAgIHBhc3MK
KworICAgIHBtLmFkZF9ob29rc3BlY3MoSG9va3MpCisgICAgcmV0dXJuIHBtLmhvb2suaGVfbWV0
aG9kMQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGFkZG1ldGgoaGMpOgorICAgIGRlZiBhZGRt
ZXRoKHRyeWZpcnN0PUZhbHNlLCB0cnlsYXN0PUZhbHNlLCBob29rd3JhcHBlcj1GYWxzZSk6Cisg
ICAgICAgIGRlZiB3cmFwKGZ1bmMpOgorICAgICAgICAgICAgaG9va2ltcGwodHJ5Zmlyc3Q9dHJ5
Zmlyc3QsIHRyeWxhc3Q9dHJ5bGFzdCwgaG9va3dyYXBwZXI9aG9va3dyYXBwZXIpKGZ1bmMpCisg
ICAgICAgICAgICBoYy5fYWRkX2hvb2tpbXBsKEhvb2tJbXBsKE5vbmUsICI8dGVtcD4iLCBmdW5j
LCBmdW5jLmV4YW1wbGVfaW1wbCkpCisgICAgICAgICAgICByZXR1cm4gZnVuYworCisgICAgICAg
IHJldHVybiB3cmFwCisKKyAgICByZXR1cm4gYWRkbWV0aAorCisKK2RlZiBmdW5jcyhob29rbWV0
aG9kcyk6CisgICAgcmV0dXJuIFtob29rbWV0aG9kLmZ1bmN0aW9uIGZvciBob29rbWV0aG9kIGlu
IGhvb2ttZXRob2RzXQorCisKK2RlZiB0ZXN0X2FkZGluZ19ub253cmFwcGVycyhoYywgYWRkbWV0
aCk6CisgICAgQGFkZG1ldGgoKQorICAgIGRlZiBoZV9tZXRob2QxKCk6CisgICAgICAgIHBhc3MK
KworICAgIEBhZGRtZXRoKCkKKyAgICBkZWYgaGVfbWV0aG9kMigpOgorICAgICAgICBwYXNzCisK
KyAgICBAYWRkbWV0aCgpCisgICAgZGVmIGhlX21ldGhvZDMoKToKKyAgICAgICAgcGFzcworCisg
ICAgYXNzZXJ0IGZ1bmNzKGhjLl9ub253cmFwcGVycykgPT0gW2hlX21ldGhvZDEsIGhlX21ldGhv
ZDIsIGhlX21ldGhvZDNdCisKKworZGVmIHRlc3RfYWRkaW5nX25vbndyYXBwZXJzX3RyeWxhc3Qo
aGMsIGFkZG1ldGgpOgorICAgIEBhZGRtZXRoKCkKKyAgICBkZWYgaGVfbWV0aG9kMV9taWRkbGUo
KToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1ldGgodHJ5bGFzdD1UcnVlKQorICAgIGRlZiBo
ZV9tZXRob2QxKCk6CisgICAgICAgIHBhc3MKKworICAgIEBhZGRtZXRoKCkKKyAgICBkZWYgaGVf
bWV0aG9kMV9iKCk6CisgICAgICAgIHBhc3MKKworICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3Jh
cHBlcnMpID09IFtoZV9tZXRob2QxLCBoZV9tZXRob2QxX21pZGRsZSwgaGVfbWV0aG9kMV9iXQor
CisKK2RlZiB0ZXN0X2FkZGluZ19ub253cmFwcGVyc190cnlsYXN0MyhoYywgYWRkbWV0aCk6Cisg
ICAgQGFkZG1ldGgoKQorICAgIGRlZiBoZV9tZXRob2QxX2EoKToKKyAgICAgICAgcGFzcworCisg
ICAgQGFkZG1ldGgodHJ5bGFzdD1UcnVlKQorICAgIGRlZiBoZV9tZXRob2QxX2IoKToKKyAgICAg
ICAgcGFzcworCisgICAgQGFkZG1ldGgoKQorICAgIGRlZiBoZV9tZXRob2QxX2MoKToKKyAgICAg
ICAgcGFzcworCisgICAgQGFkZG1ldGgodHJ5bGFzdD1UcnVlKQorICAgIGRlZiBoZV9tZXRob2Qx
X2QoKToKKyAgICAgICAgcGFzcworCisgICAgYXNzZXJ0IGZ1bmNzKGhjLl9ub253cmFwcGVycykg
PT0gWworICAgICAgICBoZV9tZXRob2QxX2QsCisgICAgICAgIGhlX21ldGhvZDFfYiwKKyAgICAg
ICAgaGVfbWV0aG9kMV9hLAorICAgICAgICBoZV9tZXRob2QxX2MsCisgICAgXQorCisKK2RlZiB0
ZXN0X2FkZGluZ19ub253cmFwcGVyc190cnlsYXN0MihoYywgYWRkbWV0aCk6CisgICAgQGFkZG1l
dGgoKQorICAgIGRlZiBoZV9tZXRob2QxX21pZGRsZSgpOgorICAgICAgICBwYXNzCisKKyAgICBA
YWRkbWV0aCgpCisgICAgZGVmIGhlX21ldGhvZDFfYigpOgorICAgICAgICBwYXNzCisKKyAgICBA
YWRkbWV0aCh0cnlsYXN0PVRydWUpCisgICAgZGVmIGhlX21ldGhvZDEoKToKKyAgICAgICAgcGFz
cworCisgICAgYXNzZXJ0IGZ1bmNzKGhjLl9ub253cmFwcGVycykgPT0gW2hlX21ldGhvZDEsIGhl
X21ldGhvZDFfbWlkZGxlLCBoZV9tZXRob2QxX2JdCisKKworZGVmIHRlc3RfYWRkaW5nX25vbndy
YXBwZXJzX3RyeWZpcnN0KGhjLCBhZGRtZXRoKToKKyAgICBAYWRkbWV0aCh0cnlmaXJzdD1UcnVl
KQorICAgIGRlZiBoZV9tZXRob2QxKCk6CisgICAgICAgIHBhc3MKKworICAgIEBhZGRtZXRoKCkK
KyAgICBkZWYgaGVfbWV0aG9kMV9taWRkbGUoKToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1l
dGgoKQorICAgIGRlZiBoZV9tZXRob2QxX2IoKToKKyAgICAgICAgcGFzcworCisgICAgYXNzZXJ0
IGZ1bmNzKGhjLl9ub253cmFwcGVycykgPT0gW2hlX21ldGhvZDFfbWlkZGxlLCBoZV9tZXRob2Qx
X2IsIGhlX21ldGhvZDFdCisKKworZGVmIHRlc3RfYWRkaW5nX3dyYXBwZXJzX29yZGVyaW5nKGhj
LCBhZGRtZXRoKToKKyAgICBAYWRkbWV0aChob29rd3JhcHBlcj1UcnVlKQorICAgIGRlZiBoZV9t
ZXRob2QxKCk6CisgICAgICAgIHBhc3MKKworICAgIEBhZGRtZXRoKCkKKyAgICBkZWYgaGVfbWV0
aG9kMV9taWRkbGUoKToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1ldGgoaG9va3dyYXBwZXI9
VHJ1ZSkKKyAgICBkZWYgaGVfbWV0aG9kMygpOgorICAgICAgICBwYXNzCisKKyAgICBhc3NlcnQg
ZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9PSBbaGVfbWV0aG9kMV9taWRkbGVdCisgICAgYXNzZXJ0
IGZ1bmNzKGhjLl93cmFwcGVycykgPT0gW2hlX21ldGhvZDEsIGhlX21ldGhvZDNdCisKKworZGVm
IHRlc3RfYWRkaW5nX3dyYXBwZXJzX29yZGVyaW5nX3RyeWZpcnN0KGhjLCBhZGRtZXRoKToKKyAg
ICBAYWRkbWV0aChob29rd3JhcHBlcj1UcnVlLCB0cnlmaXJzdD1UcnVlKQorICAgIGRlZiBoZV9t
ZXRob2QxKCk6CisgICAgICAgIHBhc3MKKworICAgIEBhZGRtZXRoKGhvb2t3cmFwcGVyPVRydWUp
CisgICAgZGVmIGhlX21ldGhvZDIoKToKKyAgICAgICAgcGFzcworCisgICAgYXNzZXJ0IGhjLl9u
b253cmFwcGVycyA9PSBbXQorICAgIGFzc2VydCBmdW5jcyhoYy5fd3JhcHBlcnMpID09IFtoZV9t
ZXRob2QyLCBoZV9tZXRob2QxXQorCisKK2RlZiB0ZXN0X2hvb2tzcGVjKHBtKToKKyAgICBjbGFz
cyBIb29rU3BlYyhvYmplY3QpOgorICAgICAgICBAaG9va3NwZWMoKQorICAgICAgICBkZWYgaGVf
bXlob29rMShhcmcxKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAaG9va3NwZWMoZmly
c3RyZXN1bHQ9VHJ1ZSkKKyAgICAgICAgZGVmIGhlX215aG9vazIoYXJnMSk6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgQGhvb2tzcGVjKGZpcnN0cmVzdWx0PUZhbHNlKQorICAgICAgICBk
ZWYgaGVfbXlob29rMyhhcmcxKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIHBtLmFkZF9ob29r
c3BlY3MoSG9va1NwZWMpCisgICAgYXNzZXJ0IG5vdCBwbS5ob29rLmhlX215aG9vazEuc3BlYy5v
cHRzWyJmaXJzdHJlc3VsdCJdCisgICAgYXNzZXJ0IHBtLmhvb2suaGVfbXlob29rMi5zcGVjLm9w
dHNbImZpcnN0cmVzdWx0Il0KKyAgICBhc3NlcnQgbm90IHBtLmhvb2suaGVfbXlob29rMy5zcGVj
Lm9wdHNbImZpcnN0cmVzdWx0Il0KKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm5hbWUi
LCBbImhvb2t3cmFwcGVyIiwgIm9wdGlvbmFsaG9vayIsICJ0cnlmaXJzdCIsICJ0cnlsYXN0Il0p
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZhbCIsIFtUcnVlLCBGYWxzZV0pCitkZWYgdGVz
dF9ob29raW1wbChuYW1lLCB2YWwpOgorICAgIEBob29raW1wbCgqKntuYW1lOiB2YWx9KQorICAg
IGRlZiBoZV9teWhvb2sxKGFyZzEpOgorICAgICAgICBwYXNzCisKKyAgICBpZiB2YWw6CisgICAg
ICAgIGFzc2VydCBoZV9teWhvb2sxLmV4YW1wbGVfaW1wbC5nZXQobmFtZSkKKyAgICBlbHNlOgor
ICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoaGVfbXlob29rMSwgbmFtZSkKKworCitkZWYgdGVz
dF9ob29rcmVsYXlfcmVnaXN0cnkocG0pOgorICAgICIiIlZlcmlmeSBob29rIGNhbGxlciBpbnN0
YW5jZXMgYXJlIHJlZ2lzdGVyZWQgYnkgbmFtZSBvbnRvIHRoZSByZWxheQorICAgIGFuZCBjYW4g
YmUgbGlrZXdpc2UgdW5yZWdpc3RlcmVkLiIiIgorCisgICAgY2xhc3MgQXBpKG9iamVjdCk6Cisg
ICAgICAgIEBob29rc3BlYworICAgICAgICBkZWYgaGVsbG8oc2VsZiwgYXJnKToKKyAgICAgICAg
ICAgICJhcGkgaG9vayAxIgorCisgICAgcG0uYWRkX2hvb2tzcGVjcyhBcGkpCisgICAgaG9vayA9
IHBtLmhvb2sKKyAgICBhc3NlcnQgaGFzYXR0cihob29rLCAiaGVsbG8iKQorICAgIGFzc2VydCBy
ZXByKGhvb2suaGVsbG8pLmZpbmQoImhlbGxvIikgIT0gLTEKKworICAgIGNsYXNzIFBsdWdpbihv
YmplY3QpOgorICAgICAgICBAaG9va2ltcGwKKyAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZyk6
CisgICAgICAgICAgICByZXR1cm4gYXJnICsgMQorCisgICAgcGx1Z2luID0gUGx1Z2luKCkKKyAg
ICBwbS5yZWdpc3RlcihwbHVnaW4pCisgICAgb3V0ID0gaG9vay5oZWxsbyhhcmc9MykKKyAgICBh
c3NlcnQgb3V0ID09IFs0XQorICAgIGFzc2VydCBub3QgaGFzYXR0cihob29rLCAid29ybGQiKQor
ICAgIHBtLnVucmVnaXN0ZXIocGx1Z2luKQorICAgIGFzc2VydCBob29rLmhlbGxvKGFyZz0zKSA9
PSBbXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2hvb2tyZWxheS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9pbnZvY2F0aW9ucy5weQpzaW1pbGFyaXR5IGluZGV4
IDg5JQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaG9va3JlbGF5LnB5CnJl
bmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaW52b2NhdGlvbnMucHkKaW5kZXggNWU3
ODIxYmVkOGY5Li5hNmVjNjNjZmM3ZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3Rpbmcv
dGVzdF9ob29rcmVsYXkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2ludm9jYXRp
b25zLnB5CkBAIC02LDMxICs2LDYgQEAgaG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigiZXhhbXBs
ZSIpCiBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJleGFtcGxlIikKIAogCi1kZWYgdGVzdF9o
YXBweXBhdGgocG0pOgotICAgIGNsYXNzIEFwaShvYmplY3QpOgotICAgICAgICBAaG9va3NwZWMK
LSAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZyk6Ci0gICAgICAgICAgICAiYXBpIGhvb2sgMSIK
LQotICAgIHBtLmFkZF9ob29rc3BlY3MoQXBpKQotICAgIGhvb2sgPSBwbS5ob29rCi0gICAgYXNz
ZXJ0IGhhc2F0dHIoaG9vaywgJ2hlbGxvJykKLSAgICBhc3NlcnQgcmVwcihob29rLmhlbGxvKS5m
aW5kKCJoZWxsbyIpICE9IC0xCi0KLSAgICBjbGFzcyBQbHVnaW4ob2JqZWN0KToKLSAgICAgICAg
QGhvb2tpbXBsCi0gICAgICAgIGRlZiBoZWxsbyhzZWxmLCBhcmcpOgotICAgICAgICAgICAgcmV0
dXJuIGFyZyArIDEKLQotICAgIHBsdWdpbiA9IFBsdWdpbigpCi0gICAgcG0ucmVnaXN0ZXIocGx1
Z2luKQotICAgIG91dCA9IGhvb2suaGVsbG8oYXJnPTMpCi0gICAgYXNzZXJ0IG91dCA9PSBbNF0K
LSAgICBhc3NlcnQgbm90IGhhc2F0dHIoaG9vaywgJ3dvcmxkJykKLSAgICBwbS51bnJlZ2lzdGVy
KHBsdWdpbikKLSAgICBhc3NlcnQgaG9vay5oZWxsbyhhcmc9MykgPT0gW10KLQotCiBkZWYgdGVz
dF9hcmdtaXNtYXRjaChwbSk6CiAgICAgY2xhc3MgQXBpKG9iamVjdCk6CiAgICAgICAgIEBob29r
c3BlYwpAQCAtNjQsNiArMzksMzQgQEAgZGVmIHRlc3Rfb25seV9rd2FyZ3MocG0pOgogICAgIGFz
c2VydCBjb21wcmVoZW5zaWJsZSBpbiBzdHIoZXhjLnZhbHVlKQogCiAKK2RlZiB0ZXN0X29wdF9p
bl9hcmdzKHBtKToKKyAgICAiIiJWZXJmaXkgdGhhdCB0d28gaG9va2ltcGxzIHdpdGggbXV0ZXgg
YXJncyBjYW4gc2VydmUKKyAgICB1bmRlciB0aGUgc2FtZSBzcGVjLgorICAgICIiIgorCisgICAg
Y2xhc3MgQXBpKG9iamVjdCk6CisgICAgICAgIEBob29rc3BlYworICAgICAgICBkZWYgaGVsbG8o
c2VsZiwgYXJnMSwgYXJnMiwgY29tbW9uX2FyZyk6CisgICAgICAgICAgICAiYXBpIGhvb2sgMSIK
KworICAgIGNsYXNzIFBsdWdpbjEob2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAg
IGRlZiBoZWxsbyhzZWxmLCBhcmcxLCBjb21tb25fYXJnKToKKyAgICAgICAgICAgIHJldHVybiBh
cmcxICsgY29tbW9uX2FyZworCisgICAgY2xhc3MgUGx1Z2luMihvYmplY3QpOgorICAgICAgICBA
aG9va2ltcGwKKyAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZzIsIGNvbW1vbl9hcmcpOgorICAg
ICAgICAgICAgcmV0dXJuIGFyZzIgKyBjb21tb25fYXJnCisKKyAgICBwbS5hZGRfaG9va3NwZWNz
KEFwaSkKKyAgICBwbS5yZWdpc3RlcihQbHVnaW4xKCkpCisgICAgcG0ucmVnaXN0ZXIoUGx1Z2lu
MigpKQorCisgICAgcmVzdWx0cyA9IHBtLmhvb2suaGVsbG8oYXJnMT0xLCBhcmcyPTIsIGNvbW1v
bl9hcmc9MCkKKyAgICBhc3NlcnQgcmVzdWx0cyA9PSBbMiwgMV0KKworCiBkZWYgdGVzdF9jYWxs
X29yZGVyKHBtKToKICAgICBjbGFzcyBBcGkob2JqZWN0KToKICAgICAgICAgQGhvb2tzcGVjCkBA
IC0xNDMsNiArMTQ2LDcgQEAgZGVmIHRlc3RfZmlyc3RyZXN1bHRfZGVmaW5pdGlvbihwbSk6CiBk
ZWYgdGVzdF9maXJzdHJlc3VsdF9mb3JjZV9yZXN1bHQocG0pOgogICAgICIiIlZlcmlmeSBmb3Jj
aW5nIGEgcmVzdWx0IGluIGEgd3JhcHBlci4KICAgICAiIiIKKwogICAgIGNsYXNzIEFwaShvYmpl
Y3QpOgogICAgICAgICBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKICAgICAgICAgZGVmIGhl
bGxvKHNlbGYsIGFyZyk6CkBAIC0xNzksNiArMTgzLDcgQEAgZGVmIHRlc3RfZmlyc3RyZXN1bHRf
cmV0dXJuc19ub25lKHBtKToKICAgICAiIiJJZiBOb25lIHJlc3VsdHMgYXJlIHJldHVybmVkIGJ5
IHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb25zIGVuc3VyZQogICAgIHRoZSBtdWx0aS1jYWxsIGxv
b3AgcmV0dXJucyBhIE5vbmUgdmFsdWUuCiAgICAgIiIiCisKICAgICBjbGFzcyBBcGkob2JqZWN0
KToKICAgICAgICAgQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCiAgICAgICAgIGRlZiBoZWxs
byhzZWxmLCBhcmcpOgpAQCAtMjAwLDYgKzIwNSw3IEBAIGRlZiB0ZXN0X2ZpcnN0cmVzdWx0X25v
X3BsdWdpbihwbSk6CiAgICAgIiIiSWYgbm8gaW1wbGVtZW50YXRpb25zL3BsdWdpbnMgaGF2ZSBi
ZWVuIHJlZ2lzdGVyZWQgZm9yIGEgZmlyc3RyZXN1bHQKICAgICBob29rIHRoZSBtdWx0aS1jYWxs
IGxvb3Agc2hvdWxkIHJldHVybiBhIE5vbmUgdmFsdWUuCiAgICAgIiIiCisKICAgICBjbGFzcyBB
cGkob2JqZWN0KToKICAgICAgICAgQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCiAgICAgICAg
IGRlZiBoZWxsbyhzZWxmLCBhcmcpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90
ZXN0X21ldGhvZF9vcmRlcmluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9tZXRob2Rf
b3JkZXJpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ODRhMGFlNWE4Mi4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9tZXRob2Rfb3JkZXJp
bmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotaW1wb3J0IHB5dGVzdAotCi0K
LWltcG9ydCBzeXMKLWltcG9ydCB0eXBlcwotCi1mcm9tIHBsdWdneSBpbXBvcnQgUGx1Z2luTWFu
YWdlciwgSG9va0ltcGwsIEhvb2tpbXBsTWFya2VyLCBIb29rc3BlY01hcmtlcgotCi1ob29rc3Bl
YyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxlIikKLWhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIo
ImV4YW1wbGUiKQotCi0KLUBweXRlc3QuZml4dHVyZQotZGVmIGhjKHBtKToKLSAgICBjbGFzcyBI
b29rcyhvYmplY3QpOgotICAgICAgICBAaG9va3NwZWMKLSAgICAgICAgZGVmIGhlX21ldGhvZDEo
c2VsZiwgYXJnKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBwbS5hZGRfaG9va3NwZWNzKEhvb2tz
KQotICAgIHJldHVybiBwbS5ob29rLmhlX21ldGhvZDEKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRl
ZiBhZGRtZXRoKGhjKToKLSAgICBkZWYgYWRkbWV0aCh0cnlmaXJzdD1GYWxzZSwgdHJ5bGFzdD1G
YWxzZSwgaG9va3dyYXBwZXI9RmFsc2UpOgotICAgICAgICBkZWYgd3JhcChmdW5jKToKLSAgICAg
ICAgICAgIGhvb2tpbXBsKHRyeWZpcnN0PXRyeWZpcnN0LCB0cnlsYXN0PXRyeWxhc3QsCi0gICAg
ICAgICAgICAgICAgICAgICBob29rd3JhcHBlcj1ob29rd3JhcHBlcikoZnVuYykKLSAgICAgICAg
ICAgIGhjLl9hZGRfaG9va2ltcGwoSG9va0ltcGwoTm9uZSwgIjx0ZW1wPiIsIGZ1bmMsIGZ1bmMu
ZXhhbXBsZV9pbXBsKSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jCi0gICAgICAgIHJldHVybiB3
cmFwCi0gICAgcmV0dXJuIGFkZG1ldGgKLQotCi1kZWYgZnVuY3MoaG9va21ldGhvZHMpOgotICAg
IHJldHVybiBbaG9va21ldGhvZC5mdW5jdGlvbiBmb3IgaG9va21ldGhvZCBpbiBob29rbWV0aG9k
c10KLQotCi1kZWYgdGVzdF9hZGRpbmdfbm9ud3JhcHBlcnMoaGMsIGFkZG1ldGgpOgotICAgIEBh
ZGRtZXRoKCkKLSAgICBkZWYgaGVfbWV0aG9kMSgpOgotICAgICAgICBwYXNzCi0KLSAgICBAYWRk
bWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDIoKToKLSAgICAgICAgcGFzcwotCi0gICAgQGFkZG1l
dGgoKQotICAgIGRlZiBoZV9tZXRob2QzKCk6Ci0gICAgICAgIHBhc3MKLSAgICBhc3NlcnQgZnVu
Y3MoaGMuX25vbndyYXBwZXJzKSA9PSBbaGVfbWV0aG9kMSwgaGVfbWV0aG9kMiwgaGVfbWV0aG9k
M10KLQotCi1kZWYgdGVzdF9hZGRpbmdfbm9ud3JhcHBlcnNfdHJ5bGFzdChoYywgYWRkbWV0aCk6
Ci0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxX21pZGRsZSgpOgotICAgICAgICBw
YXNzCi0KLSAgICBAYWRkbWV0aCh0cnlsYXN0PVRydWUpCi0gICAgZGVmIGhlX21ldGhvZDEoKToK
LSAgICAgICAgcGFzcwotCi0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxX2IoKToK
LSAgICAgICAgcGFzcwotICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3JhcHBlcnMpID09IFtoZV9t
ZXRob2QxLCBoZV9tZXRob2QxX21pZGRsZSwgaGVfbWV0aG9kMV9iXQotCi0KLWRlZiB0ZXN0X2Fk
ZGluZ19ub253cmFwcGVyc190cnlsYXN0MyhoYywgYWRkbWV0aCk6Ci0gICAgQGFkZG1ldGgoKQot
ICAgIGRlZiBoZV9tZXRob2QxX2EoKToKLSAgICAgICAgcGFzcwotCi0gICAgQGFkZG1ldGgodHJ5
bGFzdD1UcnVlKQotICAgIGRlZiBoZV9tZXRob2QxX2IoKToKLSAgICAgICAgcGFzcwotCi0gICAg
QGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxX2MoKToKLSAgICAgICAgcGFzcwotCi0gICAg
QGFkZG1ldGgodHJ5bGFzdD1UcnVlKQotICAgIGRlZiBoZV9tZXRob2QxX2QoKToKLSAgICAgICAg
cGFzcwotICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3JhcHBlcnMpID09IFwKLSAgICAgICAgW2hl
X21ldGhvZDFfZCwgaGVfbWV0aG9kMV9iLCBoZV9tZXRob2QxX2EsIGhlX21ldGhvZDFfY10KLQot
Ci1kZWYgdGVzdF9hZGRpbmdfbm9ud3JhcHBlcnNfdHJ5bGFzdDIoaGMsIGFkZG1ldGgpOgotICAg
IEBhZGRtZXRoKCkKLSAgICBkZWYgaGVfbWV0aG9kMV9taWRkbGUoKToKLSAgICAgICAgcGFzcwot
Ci0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxX2IoKToKLSAgICAgICAgcGFzcwot
Ci0gICAgQGFkZG1ldGgodHJ5bGFzdD1UcnVlKQotICAgIGRlZiBoZV9tZXRob2QxKCk6Ci0gICAg
ICAgIHBhc3MKLSAgICBhc3NlcnQgZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9PSBcCi0gICAgICAg
IFtoZV9tZXRob2QxLCBoZV9tZXRob2QxX21pZGRsZSwgaGVfbWV0aG9kMV9iXQotCi0KLWRlZiB0
ZXN0X2FkZGluZ19ub253cmFwcGVyc190cnlmaXJzdChoYywgYWRkbWV0aCk6Ci0gICAgQGFkZG1l
dGgodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgaGVfbWV0aG9kMSgpOgotICAgICAgICBwYXNzCi0K
LSAgICBAYWRkbWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDFfbWlkZGxlKCk6Ci0gICAgICAgIHBh
c3MKLQotICAgIEBhZGRtZXRoKCkKLSAgICBkZWYgaGVfbWV0aG9kMV9iKCk6Ci0gICAgICAgIHBh
c3MKLSAgICBhc3NlcnQgZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9PSBbCi0gICAgICAgIGhlX21l
dGhvZDFfbWlkZGxlLCBoZV9tZXRob2QxX2IsIGhlX21ldGhvZDFdCi0KLQotZGVmIHRlc3RfYWRk
aW5nX3dyYXBwZXJzX29yZGVyaW5nKGhjLCBhZGRtZXRoKToKLSAgICBAYWRkbWV0aChob29rd3Jh
cHBlcj1UcnVlKQotICAgIGRlZiBoZV9tZXRob2QxKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIEBh
ZGRtZXRoKCkKLSAgICBkZWYgaGVfbWV0aG9kMV9taWRkbGUoKToKLSAgICAgICAgcGFzcwotCi0g
ICAgQGFkZG1ldGgoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgaGVfbWV0aG9kMygpOgotICAg
ICAgICBwYXNzCi0KLSAgICBhc3NlcnQgZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9PSBbaGVfbWV0
aG9kMV9taWRkbGVdCi0gICAgYXNzZXJ0IGZ1bmNzKGhjLl93cmFwcGVycykgPT0gW2hlX21ldGhv
ZDEsIGhlX21ldGhvZDNdCi0KLQotZGVmIHRlc3RfYWRkaW5nX3dyYXBwZXJzX29yZGVyaW5nX3Ry
eWZpcnN0KGhjLCBhZGRtZXRoKToKLSAgICBAYWRkbWV0aChob29rd3JhcHBlcj1UcnVlLCB0cnlm
aXJzdD1UcnVlKQotICAgIGRlZiBoZV9tZXRob2QxKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIEBh
ZGRtZXRoKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIGhlX21ldGhvZDIoKToKLSAgICAgICAg
cGFzcwotCi0gICAgYXNzZXJ0IGhjLl9ub253cmFwcGVycyA9PSBbXQotICAgIGFzc2VydCBmdW5j
cyhoYy5fd3JhcHBlcnMpID09IFtoZV9tZXRob2QyLCBoZV9tZXRob2QxXQotCi0KLWRlZiB0ZXN0
X2hvb2tzcGVjKHBtKToKLSAgICBjbGFzcyBIb29rU3BlYyhvYmplY3QpOgotICAgICAgICBAaG9v
a3NwZWMoKQotICAgICAgICBkZWYgaGVfbXlob29rMShhcmcxKToKLSAgICAgICAgICAgIHBhc3MK
LQotICAgICAgICBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLSAgICAgICAgZGVmIGhlX215
aG9vazIoYXJnMSk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgQGhvb2tzcGVjKGZpcnN0
cmVzdWx0PUZhbHNlKQotICAgICAgICBkZWYgaGVfbXlob29rMyhhcmcxKToKLSAgICAgICAgICAg
IHBhc3MKLQotICAgIHBtLmFkZF9ob29rc3BlY3MoSG9va1NwZWMpCi0gICAgYXNzZXJ0IG5vdCBw
bS5ob29rLmhlX215aG9vazEuc3BlY19vcHRzWyJmaXJzdHJlc3VsdCJdCi0gICAgYXNzZXJ0IHBt
Lmhvb2suaGVfbXlob29rMi5zcGVjX29wdHNbImZpcnN0cmVzdWx0Il0KLSAgICBhc3NlcnQgbm90
IHBtLmhvb2suaGVfbXlob29rMy5zcGVjX29wdHNbImZpcnN0cmVzdWx0Il0KLQotCi1AcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoJ25hbWUnLCBbImhvb2t3cmFwcGVyIiwgIm9wdGlvbmFsaG9vayIs
ICJ0cnlmaXJzdCIsICJ0cnlsYXN0Il0pCi1AcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3ZhbCcs
IFtUcnVlLCBGYWxzZV0pCi1kZWYgdGVzdF9ob29raW1wbChuYW1lLCB2YWwpOgotICAgIEBob29r
aW1wbCgqKntuYW1lOiB2YWx9KQotICAgIGRlZiBoZV9teWhvb2sxKGFyZzEpOgotICAgICAgICBw
YXNzCi0gICAgaWYgdmFsOgotICAgICAgICBhc3NlcnQgaGVfbXlob29rMS5leGFtcGxlX2ltcGwu
Z2V0KG5hbWUpCi0gICAgZWxzZToKLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGhlX215aG9v
azEsIG5hbWUpCi0KLQotZGVmIHRlc3RfbG9hZF9zZXR1cHRvb2xzX2luc3RhbnRpYXRpb24obW9u
a2V5cGF0Y2gsIHBtKToKLSAgICBwa2dfcmVzb3VyY2VzID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgi
cGtnX3Jlc291cmNlcyIpCi0KLSAgICBkZWYgbXlfaXRlcihuYW1lKToKLSAgICAgICAgYXNzZXJ0
IG5hbWUgPT0gImhlbGxvIgotCi0gICAgICAgIGNsYXNzIEVudHJ5UG9pbnQob2JqZWN0KToKLSAg
ICAgICAgICAgIG5hbWUgPSAibXluYW1lIgotICAgICAgICAgICAgZGlzdCA9IE5vbmUKLQotICAg
ICAgICAgICAgZGVmIGxvYWQoc2VsZik6Ci0gICAgICAgICAgICAgICAgY2xhc3MgUHNldWRvUGx1
Z2luKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgICAgIHggPSA0MgotICAgICAgICAgICAgICAg
IHJldHVybiBQc2V1ZG9QbHVnaW4oKQotCi0gICAgICAgIHJldHVybiBpdGVyKFtFbnRyeVBvaW50
KCldKQotCi0gICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwa2dfcmVzb3VyY2VzLCAnaXRlcl9lbnRy
eV9wb2ludHMnLCBteV9pdGVyKQotICAgIG51bSA9IHBtLmxvYWRfc2V0dXB0b29sc19lbnRyeXBv
aW50cygiaGVsbG8iKQotICAgIGFzc2VydCBudW0gPT0gMQotICAgIHBsdWdpbiA9IHBtLmdldF9w
bHVnaW4oIm15bmFtZSIpCi0gICAgYXNzZXJ0IHBsdWdpbi54ID09IDQyCi0gICAgYXNzZXJ0IHBt
Lmxpc3RfcGx1Z2luX2Rpc3RpbmZvKCkgPT0gWyhwbHVnaW4sIE5vbmUpXQotCi0KLWRlZiB0ZXN0
X2xvYWRfc2V0dXB0b29sc19ub3RfaW5zdGFsbGVkKG1vbmtleXBhdGNoLCBwbSk6Ci0gICAgbW9u
a2V5cGF0Y2guc2V0aXRlbSgKLSAgICAgICAgc3lzLm1vZHVsZXMsICdwa2dfcmVzb3VyY2VzJywK
LSAgICAgICAgdHlwZXMuTW9kdWxlVHlwZSgicGtnX3Jlc291cmNlcyIpKQotCi0gICAgd2l0aCBw
eXRlc3QucmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgcG0ubG9hZF9zZXR1cHRvb2xzX2Vu
dHJ5cG9pbnRzKCJxd2UiKQotCi0KLWRlZiB0ZXN0X2FkZF90cmFjZWZ1bmNzKGhlX3BtKToKLSAg
ICBvdXQgPSBbXQotCi0gICAgY2xhc3MgYXBpMShvYmplY3QpOgotICAgICAgICBAaG9va2ltcGwK
LSAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZik6Ci0gICAgICAgICAgICBvdXQuYXBwZW5kKCJo
ZV9tZXRob2QxLWFwaTEiKQotCi0gICAgY2xhc3MgYXBpMihvYmplY3QpOgotICAgICAgICBAaG9v
a2ltcGwKLSAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZik6Ci0gICAgICAgICAgICBvdXQuYXBw
ZW5kKCJoZV9tZXRob2QxLWFwaTIiKQotCi0gICAgaGVfcG0ucmVnaXN0ZXIoYXBpMSgpKQotICAg
IGhlX3BtLnJlZ2lzdGVyKGFwaTIoKSkKLQotICAgIGRlZiBiZWZvcmUoaG9va19uYW1lLCBob29r
X2ltcGxzLCBrd2FyZ3MpOgotICAgICAgICBvdXQuYXBwZW5kKChob29rX25hbWUsIGxpc3QoaG9v
a19pbXBscyksIGt3YXJncykpCi0KLSAgICBkZWYgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lLCBo
b29rX2ltcGxzLCBrd2FyZ3MpOgotICAgICAgICBvdXQuYXBwZW5kKChvdXRjb21lLCBob29rX25h
bWUsIGxpc3QoaG9va19pbXBscyksIGt3YXJncykpCi0KLSAgICB1bmRvID0gaGVfcG0uYWRkX2hv
b2tjYWxsX21vbml0b3JpbmcoYmVmb3JlLCBhZnRlcikKLQotICAgIGhlX3BtLmhvb2suaGVfbWV0
aG9kMShhcmc9MSkKLSAgICBhc3NlcnQgbGVuKG91dCkgPT0gNAotICAgIGFzc2VydCBvdXRbMF1b
MF0gPT0gImhlX21ldGhvZDEiCi0gICAgYXNzZXJ0IGxlbihvdXRbMF1bMV0pID09IDIKLSAgICBh
c3NlcnQgaXNpbnN0YW5jZShvdXRbMF1bMl0sIGRpY3QpCi0gICAgYXNzZXJ0IG91dFsxXSA9PSAi
aGVfbWV0aG9kMS1hcGkyIgotICAgIGFzc2VydCBvdXRbMl0gPT0gImhlX21ldGhvZDEtYXBpMSIK
LSAgICBhc3NlcnQgbGVuKG91dFszXSkgPT0gNAotICAgIGFzc2VydCBvdXRbM11bMV0gPT0gb3V0
WzBdWzBdCi0KLSAgICB1bmRvKCkKLSAgICBoZV9wbS5ob29rLmhlX21ldGhvZDEoYXJnPTEpCi0g
ICAgYXNzZXJ0IGxlbihvdXQpID09IDQgKyAyCi0KLQotZGVmIHRlc3RfaG9va190cmFjaW5nKGhl
X3BtKToKLSAgICBzYXZlaW5kZW50ID0gW10KLQotICAgIGNsYXNzIGFwaTEob2JqZWN0KToKLSAg
ICAgICAgQGhvb2tpbXBsCi0gICAgICAgIGRlZiBoZV9tZXRob2QxKHNlbGYpOgotICAgICAgICAg
ICAgc2F2ZWluZGVudC5hcHBlbmQoaGVfcG0udHJhY2Uucm9vdC5pbmRlbnQpCi0KLSAgICBjbGFz
cyBhcGkyKG9iamVjdCk6Ci0gICAgICAgIEBob29raW1wbAotICAgICAgICBkZWYgaGVfbWV0aG9k
MShzZWxmKToKLSAgICAgICAgICAgIHNhdmVpbmRlbnQuYXBwZW5kKGhlX3BtLnRyYWNlLnJvb3Qu
aW5kZW50KQotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCi0KLSAgICBoZV9wbS5yZWdp
c3RlcihhcGkxKCkpCi0gICAgb3V0ID0gW10KLSAgICBoZV9wbS50cmFjZS5yb290LnNldHdyaXRl
cihvdXQuYXBwZW5kKQotICAgIHVuZG8gPSBoZV9wbS5lbmFibGVfdHJhY2luZygpCi0gICAgdHJ5
OgotICAgICAgICBpbmRlbnQgPSBoZV9wbS50cmFjZS5yb290LmluZGVudAotICAgICAgICBoZV9w
bS5ob29rLmhlX21ldGhvZDEoYXJnPTEpCi0gICAgICAgIGFzc2VydCBpbmRlbnQgPT0gaGVfcG0u
dHJhY2Uucm9vdC5pbmRlbnQKLSAgICAgICAgYXNzZXJ0IGxlbihvdXQpID09IDIKLSAgICAgICAg
YXNzZXJ0ICdoZV9tZXRob2QxJyBpbiBvdXRbMF0KLSAgICAgICAgYXNzZXJ0ICdmaW5pc2gnIGlu
IG91dFsxXQotCi0gICAgICAgIG91dFs6XSA9IFtdCi0gICAgICAgIGhlX3BtLnJlZ2lzdGVyKGFw
aTIoKSkKLQotICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAg
ICAgICBoZV9wbS5ob29rLmhlX21ldGhvZDEoYXJnPTEpCi0gICAgICAgIGFzc2VydCBoZV9wbS50
cmFjZS5yb290LmluZGVudCA9PSBpbmRlbnQKLSAgICAgICAgYXNzZXJ0IHNhdmVpbmRlbnRbMF0g
PiBpbmRlbnQKLSAgICBmaW5hbGx5OgotICAgICAgICB1bmRvKCkKLQotCi1AcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoJ2luY2x1ZGVfaG9va3NwZWMnLCBbVHJ1ZSwgRmFsc2VdKQotZGVmIHRlc3Rf
cHJlZml4X2hvb2tpbXBsKGluY2x1ZGVfaG9va3NwZWMpOgotICAgIHBtID0gUGx1Z2luTWFuYWdl
cihob29rc3BlYy5wcm9qZWN0X25hbWUsICJoZWxsb18iKQotCi0gICAgaWYgaW5jbHVkZV9ob29r
c3BlYzoKLSAgICAgICAgY2xhc3MgSG9va1NwZWMob2JqZWN0KToKLSAgICAgICAgICAgIEBob29r
c3BlYwotICAgICAgICAgICAgZGVmIGhlbGxvX215aG9vayhzZWxmLCBhcmcxKToKLSAgICAgICAg
ICAgICAgICAiIiIgYWRkIHRvIGFyZzEgIiIiCi0KLSAgICAgICAgcG0uYWRkX2hvb2tzcGVjcyhI
b29rU3BlYykKLQotICAgIGNsYXNzIFBsdWdpbihvYmplY3QpOgotICAgICAgICBkZWYgaGVsbG9f
bXlob29rKHNlbGYsIGFyZzEpOgotICAgICAgICAgICAgcmV0dXJuIGFyZzEgKyAxCi0KLSAgICBw
bS5yZWdpc3RlcihQbHVnaW4oKSkKLSAgICBwbS5yZWdpc3RlcihQbHVnaW4oKSkKLSAgICByZXN1
bHRzID0gcG0uaG9vay5oZWxsb19teWhvb2soYXJnMT0xNykKLSAgICBhc3NlcnQgcmVzdWx0cyA9
PSBbMTgsIDE4XQotCi0KLWRlZiB0ZXN0X3ByZWZpeF9ob29raW1wbF9kb250bWF0Y2hfbW9kdWxl
KCk6Ci0gICAgcG0gPSBQbHVnaW5NYW5hZ2VyKGhvb2tzcGVjLnByb2plY3RfbmFtZSwgImhlbGxv
XyIpCi0KLSAgICBjbGFzcyBCYWRQbHVnaW4ob2JqZWN0KToKLSAgICAgICAgaGVsbG9fbW9kdWxl
ID0gX19pbXBvcnRfXygnZW1haWwnKQotCi0gICAgcG0ucmVnaXN0ZXIoQmFkUGx1Z2luKCkpCi0g
ICAgcG0uY2hlY2tfcGVuZGluZygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rl
c3RfbXVsdGljYWxsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X211bHRpY2FsbC5weQpp
bmRleCA4NjBhMjA5YjY2OTAuLmVhZjUzNGEwMTY2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
dGVzdGluZy90ZXN0X211bHRpY2FsbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3Rf
bXVsdGljYWxsLnB5CkBAIC0xLDMwICsxLDIwIEBACiBpbXBvcnQgcHl0ZXN0Ci0KLWZyb20gcGx1
Z2d5IGltcG9ydCBfbXVsdGljYWxsLCBfbGVnYWN5bXVsdGljYWxsLCBIb29rSW1wbCwgSG9va0Nh
bGxFcnJvcgotZnJvbSBwbHVnZ3kuY2FsbGVycyBpbXBvcnQgX0xlZ2FjeU11bHRpQ2FsbAotZnJv
bSBwbHVnZ3kgaW1wb3J0IEhvb2tzcGVjTWFya2VyLCBIb29raW1wbE1hcmtlcgorZnJvbSBwbHVn
Z3kgaW1wb3J0IEhvb2tDYWxsRXJyb3IsIEhvb2tzcGVjTWFya2VyLCBIb29raW1wbE1hcmtlcgor
ZnJvbSBwbHVnZ3kuaG9va3MgaW1wb3J0IEhvb2tJbXBsCitmcm9tIHBsdWdneS5jYWxsZXJzIGlt
cG9ydCBfbXVsdGljYWxsLCBfbGVnYWN5bXVsdGljYWxsCiAKIAogaG9va3NwZWMgPSBIb29rc3Bl
Y01hcmtlcigiZXhhbXBsZSIpCiBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCJleGFtcGxlIikK
IAogCi1kZWYgdGVzdF91c2VzX2NvcHlfb2ZfbWV0aG9kcygpOgotICAgIG91dCA9IFtsYW1iZGE6
IDQyXQotICAgIG1jID0gX0xlZ2FjeU11bHRpQ2FsbChvdXQsIHt9KQotICAgIHJlcHIobWMpCi0g
ICAgb3V0WzpdID0gW10KLSAgICByZXMgPSBtYy5leGVjdXRlKCkKLSAgICByZXR1cm4gcmVzID09
IDQyCi0KLQogZGVmIE1DKG1ldGhvZHMsIGt3YXJncywgZmlyc3RyZXN1bHQ9RmFsc2UpOgogICAg
IGNhbGxlciA9IF9tdWx0aWNhbGwKICAgICBob29rZnVuY3MgPSBbXQogICAgIGZvciBtZXRob2Qg
aW4gbWV0aG9kczoKICAgICAgICAgZiA9IEhvb2tJbXBsKE5vbmUsICI8dGVtcD4iLCBtZXRob2Qs
IG1ldGhvZC5leGFtcGxlX2ltcGwpCiAgICAgICAgIGhvb2tmdW5jcy5hcHBlbmQoZikKLSAgICAg
ICAgaWYgJ19fbXVsdGljYWxsX18nIGluIGYuYXJnbmFtZXM6CisgICAgICAgIGlmICJfX211bHRp
Y2FsbF9fIiBpbiBmLmFyZ25hbWVzOgogICAgICAgICAgICAgY2FsbGVyID0gX2xlZ2FjeW11bHRp
Y2FsbAogICAgIHJldHVybiBjYWxsZXIoaG9va2Z1bmNzLCBrd2FyZ3MsIGZpcnN0cmVzdWx0PWZp
cnN0cmVzdWx0KQogCkBAIC03MCw2ICs2MCw3IEBAIGRlZiB0ZXN0X2tleXdvcmRfYXJnc193aXRo
X2RlZmF1bHRhcmdzKCk6CiAgICAgQGhvb2tpbXBsCiAgICAgZGVmIGYoeCwgej0xKToKICAgICAg
ICAgcmV0dXJuIHggKyB6CisKICAgICByZXNsaXN0ID0gTUMoW2ZdLCBkaWN0KHg9MjMsIHk9MjQp
KQogICAgIGFzc2VydCByZXNsaXN0ID09IFsyNF0KIApAQCAtNzgsNiArNjksNyBAQCBkZWYgdGVz
dF90YWdzX2NhbGxfZXJyb3IoKToKICAgICBAaG9va2ltcGwKICAgICBkZWYgZih4KToKICAgICAg
ICAgcmV0dXJuIHgKKwogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhIb29rQ2FsbEVycm9yKToKICAg
ICAgICAgTUMoW2ZdLCB7fSkKIApAQCAtMTcyLDcgKzE2NCw3IEBAIGRlZiB0ZXN0X2hvb2t3cmFw
cGVyX3Rvb19tYW55X3lpZWxkKCk6CiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFJ1bnRpbWVFcnJv
cikgYXMgZXg6CiAgICAgICAgIE1DKFttMV0sIHt9KQogICAgIGFzc2VydCAibTEiIGluIHN0cihl
eC52YWx1ZSkKLSAgICBhc3NlcnQgKF9fZmlsZV9fICsgJzonKSBpbiBzdHIoZXgudmFsdWUpCisg
ICAgYXNzZXJ0IChfX2ZpbGVfXyArICI6IikgaW4gc3RyKGV4LnZhbHVlKQogCiAKIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgiZXhjIiwgW1ZhbHVlRXJyb3IsIFN5c3RlbUV4aXRdKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X3BsdWdpbm1hbmFnZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS90ZXN0aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weQppbmRleCBlMmM4NmNjNjQ0MjYuLjY3
MjYxYWFhN2JiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X3BsdWdpbm1h
bmFnZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X3BsdWdpbm1hbmFnZXIucHkK
QEAgLTEsOCArMSwxNyBAQAorIiIiCitgYFBsdWdpbk1hbmFnZXJgYCB1bml0IGFuZCBwdWJsaWMg
QVBJIHRlc3RpbmcuCisiIiIKIGltcG9ydCBweXRlc3QKIGltcG9ydCB0eXBlcwogCi1mcm9tIHBs
dWdneSBpbXBvcnQgKFBsdWdpblZhbGlkYXRpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAg
SG9va0NhbGxFcnJvciwgSG9va2ltcGxNYXJrZXIsIEhvb2tzcGVjTWFya2VyKQorZnJvbSBwbHVn
Z3kgaW1wb3J0ICgKKyAgICBQbHVnaW5NYW5hZ2VyLAorICAgIFBsdWdpblZhbGlkYXRpb25FcnJv
ciwKKyAgICBIb29rQ2FsbEVycm9yLAorICAgIEhvb2tpbXBsTWFya2VyLAorICAgIEhvb2tzcGVj
TWFya2VyLAorKQorZnJvbSBwbHVnZ3kubWFuYWdlciBpbXBvcnQgaW1wb3J0bGliX21ldGFkYXRh
CiAKIAogaG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigiZXhhbXBsZSIpCkBAIC0xMCw2ICsxOSw3
IEBAIGhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoImV4YW1wbGUiKQogCiAKIGRlZiB0ZXN0X3Bs
dWdpbl9kb3VibGVfcmVnaXN0ZXIocG0pOgorICAgICIiIlJlZ2lzdGVyaW5nIHRoZSBzYW1lIHBs
dWdpbiBtb3JlIHRoZW4gb25jZSBpc24ndCBhbGxvd2VkIiIiCiAgICAgcG0ucmVnaXN0ZXIoNDIs
IG5hbWU9ImFiYyIpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAg
ICBwbS5yZWdpc3Rlcig0MiwgbmFtZT0iYWJjIikKQEAgLTE4LDYgKzI4LDggQEAgZGVmIHRlc3Rf
cGx1Z2luX2RvdWJsZV9yZWdpc3RlcihwbSk6CiAKIAogZGVmIHRlc3RfcG0ocG0pOgorICAgICIi
IkJhc2ljIHJlZ2lzdHJhdGlvbiB3aXRoIG9iamVjdHMiIiIKKwogICAgIGNsYXNzIEEob2JqZWN0
KToKICAgICAgICAgcGFzcwogCkBAIC0yOSw3ICs0MSw3IEBAIGRlZiB0ZXN0X3BtKHBtKToKICAg
ICBvdXQgPSBwbS5nZXRfcGx1Z2lucygpCiAgICAgYXNzZXJ0IGExIGluIG91dAogICAgIGFzc2Vy
dCBhMiBpbiBvdXQKLSAgICBhc3NlcnQgcG0uZ2V0X3BsdWdpbignaGVsbG8nKSA9PSBhMgorICAg
IGFzc2VydCBwbS5nZXRfcGx1Z2luKCJoZWxsbyIpID09IGEyCiAgICAgYXNzZXJ0IHBtLnVucmVn
aXN0ZXIoYTEpID09IGExCiAgICAgYXNzZXJ0IG5vdCBwbS5pc19yZWdpc3RlcmVkKGExKQogCkBA
IC00Myw5ICs1NSw5IEBAIGRlZiB0ZXN0X2hhc19wbHVnaW4ocG0pOgogICAgICAgICBwYXNzCiAK
ICAgICBhMSA9IEEoKQotICAgIHBtLnJlZ2lzdGVyKGExLCAnaGVsbG8nKQorICAgIHBtLnJlZ2lz
dGVyKGExLCAiaGVsbG8iKQogICAgIGFzc2VydCBwbS5pc19yZWdpc3RlcmVkKGExKQotICAgIGFz
c2VydCBwbS5oYXNfcGx1Z2luKCdoZWxsbycpCisgICAgYXNzZXJ0IHBtLmhhc19wbHVnaW4oImhl
bGxvIikKIAogCiBkZWYgdGVzdF9yZWdpc3Rlcl9keW5hbWljX2F0dHIoaGVfcG0pOgpAQCAtMTA0
LDkgKzExNiwxMiBAQCBkZWYgdGVzdF9yZWdpc3Rlcl9taXNtYXRjaF9tZXRob2QoaGVfcG0pOgog
ICAgICAgICBkZWYgaGVfbWV0aG9kX25vdGV4aXN0cyhzZWxmKToKICAgICAgICAgICAgIHBhc3MK
IAotICAgIGhlX3BtLnJlZ2lzdGVyKGhlbGxvKCkpCi0gICAgd2l0aCBweXRlc3QucmFpc2VzKFBs
dWdpblZhbGlkYXRpb25FcnJvcik6CisgICAgcGx1Z2luID0gaGVsbG8oKQorCisgICAgaGVfcG0u
cmVnaXN0ZXIocGx1Z2luKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhQbHVnaW5WYWxpZGF0aW9u
RXJyb3IpIGFzIGV4Y2luZm86CiAgICAgICAgIGhlX3BtLmNoZWNrX3BlbmRpbmcoKQorICAgIGFz
c2VydCBleGNpbmZvLnZhbHVlLnBsdWdpbiBpcyBwbHVnaW4KIAogCiBkZWYgdGVzdF9yZWdpc3Rl
cl9taXNtYXRjaF9hcmcoaGVfcG0pOgpAQCAtMTE1LDEzICsxMzAsMTcgQEAgZGVmIHRlc3RfcmVn
aXN0ZXJfbWlzbWF0Y2hfYXJnKGhlX3BtKToKICAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZiwg
cWx3a2plKToKICAgICAgICAgICAgIHBhc3MKIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhQbHVn
aW5WYWxpZGF0aW9uRXJyb3IpOgotICAgICAgICBoZV9wbS5yZWdpc3RlcihoZWxsbygpKQorICAg
IHBsdWdpbiA9IGhlbGxvKCkKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhQbHVnaW5WYWxpZGF0
aW9uRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIGhlX3BtLnJlZ2lzdGVyKHBsdWdpbikKKyAg
ICBhc3NlcnQgZXhjaW5mby52YWx1ZS5wbHVnaW4gaXMgcGx1Z2luCiAKIAogZGVmIHRlc3RfcmVn
aXN0ZXIocG0pOgogICAgIGNsYXNzIE15UGx1Z2luKG9iamVjdCk6CiAgICAgICAgIHBhc3MKKwog
ICAgIG15ID0gTXlQbHVnaW4oKQogICAgIHBtLnJlZ2lzdGVyKG15KQogICAgIGFzc2VydCBteSBp
biBwbS5nZXRfcGx1Z2lucygpCkBAIC0xNjAsNiArMTc5LDcgQEAgZGVmIHRlc3RfcmVnaXN0ZXJf
aGlzdG9yaWMocG0pOgogICAgICAgICBAaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKICAgICAgICAg
ZGVmIGhlX21ldGhvZDEoc2VsZiwgYXJnKToKICAgICAgICAgICAgIHBhc3MKKwogICAgIHBtLmFk
ZF9ob29rc3BlY3MoSG9va3MpCiAKICAgICBwbS5ob29rLmhlX21ldGhvZDEuY2FsbF9oaXN0b3Jp
Yyhrd2FyZ3M9ZGljdChhcmc9MSkpCkBAIC0xODQsMjQgKzIwNCw0OCBAQCBkZWYgdGVzdF9yZWdp
c3Rlcl9oaXN0b3JpYyhwbSk6CiAgICAgYXNzZXJ0IG91dCA9PSBbMSwgMTAsIDEyMCwgMTJdCiAK
IAotZGVmIHRlc3Rfd2l0aF9yZXN1bHRfbWVtb3JpemVkKHBtKToKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgicmVzdWx0X2NhbGxiYWNrIiwgW1RydWUsIEZhbHNlXSkKK2RlZiB0ZXN0X3dpdGhf
cmVzdWx0X21lbW9yaXplZChwbSwgcmVzdWx0X2NhbGxiYWNrKToKKyAgICAiIiJWZXJpZnkgdGhh
dCBgYF9Ib29rQ2FsbGVyLl9tYXliZV9hcHBseV9oaXN0b3J5KClgCisgICAgY29ycmVjdGx5IGFw
cGxpZXMgdGhlIGBgcmVzdWx0X2NhbGxiYWNrYGAgZnVuY3Rpb24sIHdoZW4gcHJvdmlkZWQsCisg
ICAgdG8gdGhlIHJlc3VsdCBmcm9tIGNhbGxpbmcgZWFjaCBuZXdseSByZWdpc3RlcmVkIGhvb2su
CisgICAgIiIiCisgICAgb3V0ID0gW10KKyAgICBpZiByZXN1bHRfY2FsbGJhY2s6CisKKyAgICAg
ICAgZGVmIGNhbGxiYWNrKHJlcyk6CisgICAgICAgICAgICBvdXQuYXBwZW5kKHJlcykKKworICAg
IGVsc2U6CisgICAgICAgIGNhbGxiYWNrID0gTm9uZQorCiAgICAgY2xhc3MgSG9va3Mob2JqZWN0
KToKICAgICAgICAgQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCiAgICAgICAgIGRlZiBoZV9tZXRo
b2QxKHNlbGYsIGFyZyk6CiAgICAgICAgICAgICBwYXNzCisKICAgICBwbS5hZGRfaG9va3NwZWNz
KEhvb2tzKQogCisgICAgY2xhc3MgUGx1Z2luMShvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwK
KyAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZiwgYXJnKToKKyAgICAgICAgICAgIHJldHVybiBh
cmcgKiAxMAorCisgICAgcG0ucmVnaXN0ZXIoUGx1Z2luMSgpKQorCiAgICAgaGVfbWV0aG9kMSA9
IHBtLmhvb2suaGVfbWV0aG9kMQotICAgIGhlX21ldGhvZDEuY2FsbF9oaXN0b3JpYyhsYW1iZGEg
cmVzOiBvdXQuYXBwZW5kKHJlcyksIGRpY3QoYXJnPTEpKQotICAgIG91dCA9IFtdCisgICAgaGVf
bWV0aG9kMS5jYWxsX2hpc3RvcmljKHJlc3VsdF9jYWxsYmFjaz1jYWxsYmFjaywga3dhcmdzPWRp
Y3QoYXJnPTEpKQogCi0gICAgY2xhc3MgUGx1Z2luKG9iamVjdCk6CisgICAgY2xhc3MgUGx1Z2lu
MihvYmplY3QpOgogICAgICAgICBAaG9va2ltcGwKICAgICAgICAgZGVmIGhlX21ldGhvZDEoc2Vs
ZiwgYXJnKToKICAgICAgICAgICAgIHJldHVybiBhcmcgKiAxMAogCi0gICAgcG0ucmVnaXN0ZXIo
UGx1Z2luKCkpCi0gICAgYXNzZXJ0IG91dCA9PSBbMTBdCisgICAgcG0ucmVnaXN0ZXIoUGx1Z2lu
MigpKQorICAgIGlmIHJlc3VsdF9jYWxsYmFjazoKKyAgICAgICAgYXNzZXJ0IG91dCA9PSBbMTAs
IDEwXQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBvdXQgPT0gW10KIAogCiBkZWYgdGVzdF93
aXRoX2NhbGxiYWNrc19pbW1lZGlhdGVseV9leGVjdXRlZChwbSk6CkBAIC0yMDksNiArMjUzLDcg
QEAgZGVmIHRlc3Rfd2l0aF9jYWxsYmFja3NfaW1tZWRpYXRlbHlfZXhlY3V0ZWQocG0pOgogICAg
ICAgICBAaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKICAgICAgICAgZGVmIGhlX21ldGhvZDEoc2Vs
ZiwgYXJnKToKICAgICAgICAgICAgIHBhc3MKKwogICAgIHBtLmFkZF9ob29rc3BlY3MoSG9va3Mp
CiAKICAgICBjbGFzcyBQbHVnaW4xKG9iamVjdCk6CkBAIC0yODMsNiArMzI4LDcgQEAgZGVmIHRl
c3RfY2FsbF93aXRoX3Rvb19mZXdfYXJncyhwbSk6CiAgICAgICAgIEBob29raW1wbAogICAgICAg
ICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgogICAgICAgICAgICAgMCAvIDAKKwogICAgIHBt
LnJlZ2lzdGVyKFBsdWdpbjEoKSkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSG9va0NhbGxFcnJv
cik6CiAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKFVzZXJXYXJuaW5nKToKQEAgLTMzOSwxMyAr
Mzg1LDM2IEBAIGRlZiB0ZXN0X3N1YnNldF9ob29rX2NhbGxlcihwbSk6CiAgICAgYXNzZXJ0IG91
dCA9PSBbMTBdCiAKIAotZGVmIHRlc3RfbXVsdGljYWxsX2RlcHJlY2F0ZWQocG0pOgotICAgIGNs
YXNzIFAxKG9iamVjdCk6CitkZWYgdGVzdF9nZXRfaG9va2ltcGxzKHBtKToKKyAgICBjbGFzcyBI
b29rcyhvYmplY3QpOgorICAgICAgICBAaG9va3NwZWMKKyAgICAgICAgZGVmIGhlX21ldGhvZDEo
c2VsZiwgYXJnKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIHBtLmFkZF9ob29rc3BlY3MoSG9v
a3MpCisgICAgYXNzZXJ0IHBtLmhvb2suaGVfbWV0aG9kMS5nZXRfaG9va2ltcGxzKCkgPT0gW10K
KworICAgIGNsYXNzIFBsdWdpbjEob2JqZWN0KToKICAgICAgICAgQGhvb2tpbXBsCi0gICAgICAg
IGRlZiBtKHNlbGYsIF9fbXVsdGljYWxsX18sIHgpOgorICAgICAgICBkZWYgaGVfbWV0aG9kMShz
ZWxmLCBhcmcpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2Fs
bChwbS5yZWdpc3RlciwgUDEoKSkKKyAgICBjbGFzcyBQbHVnaW4yKG9iamVjdCk6CisgICAgICAg
IEBob29raW1wbAorICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgorICAgICAgICAg
ICAgcGFzcworCisgICAgY2xhc3MgUGx1Z2luTm8ob2JqZWN0KToKKyAgICAgICAgcGFzcworCisg
ICAgcGx1Z2luMSwgcGx1Z2luMiwgcGx1Z2luMyA9IFBsdWdpbjEoKSwgUGx1Z2luMigpLCBQbHVn
aW5ObygpCisgICAgcG0ucmVnaXN0ZXIocGx1Z2luMSkKKyAgICBwbS5yZWdpc3RlcihwbHVnaW4y
KQorICAgIHBtLnJlZ2lzdGVyKHBsdWdpbjMpCisKKyAgICBob29raW1wbHMgPSBwbS5ob29rLmhl
X21ldGhvZDEuZ2V0X2hvb2tpbXBscygpCisgICAgaG9va19wbHVnaW5zID0gW2l0ZW0ucGx1Z2lu
IGZvciBpdGVtIGluIGhvb2tpbXBsc10KKyAgICBhc3NlcnQgaG9va19wbHVnaW5zID09IFtwbHVn
aW4xLCBwbHVnaW4yXQogCiAKIGRlZiB0ZXN0X2FkZF9ob29rc3BlY3Nfbm9ob29rcyhwbSk6CkBA
IC0zNTgsMTcgKzQyNywxNzQgQEAgZGVmIHRlc3RfcmVqZWN0X3ByZWZpeGVkX21vZHVsZShwbSk6
CiAgICAgcHJlZml4IGluIGl0cyBuYW1lIChpbiB0aGlzIGNhc2UgYCdleGFtcGxlXyonYCBpc24n
dCBjb2xsZWN0ZWQKICAgICB3aGVuIHJlZ2lzdGVyaW5nIGEgbW9kdWxlIHdoaWNoIGltcG9ydHMg
aXQuCiAgICAgIiIiCi0gICAgcG0uX2ltcGxwcmVmaXggPSAnZXhhbXBsZScKKyAgICBwbS5faW1w
bHByZWZpeCA9ICJleGFtcGxlIgogICAgIGNvbmZ0ZXN0ID0gdHlwZXMuTW9kdWxlVHlwZSgiY29u
ZnRlc3QiKQotICAgIHNyYyA9ICgiIiIKKyAgICBzcmMgPSAiIiIKIGRlZiBleGFtcGxlX2hvb2so
KToKICAgICBwYXNzCi0iIiIpCisiIiIKICAgICBleGVjKHNyYywgY29uZnRlc3QuX19kaWN0X18p
CiAgICAgY29uZnRlc3QuZXhhbXBsZV9ibGFoID0gdHlwZXMuTW9kdWxlVHlwZSgiZXhhbXBsZV9i
bGFoIikKLSAgICBuYW1lID0gcG0ucmVnaXN0ZXIoY29uZnRlc3QpCi0gICAgYXNzZXJ0IG5hbWUg
PT0gJ2NvbmZ0ZXN0JwotICAgIGFzc2VydCBnZXRhdHRyKHBtLmhvb2ssICdleGFtcGxlX2JsYWgn
LCBOb25lKSBpcyBOb25lCi0gICAgYXNzZXJ0IGdldGF0dHIocG0uaG9vaywgJ2V4YW1wbGVfaG9v
aycsIE5vbmUpICAjIGNvbmZ0ZXN0LmV4YW1wbGVfaG9vayBzaG91bGQgYmUgY29sbGVjdGVkCi0g
ICAgYXNzZXJ0IHBtLnBhcnNlX2hvb2tpbXBsX29wdHMoY29uZnRlc3QsICdleGFtcGxlX2JsYWgn
KSBpcyBOb25lCi0gICAgYXNzZXJ0IHBtLnBhcnNlX2hvb2tpbXBsX29wdHMoY29uZnRlc3QsICdl
eGFtcGxlX2hvb2snKSA9PSB7fQorICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbCgpOgor
ICAgICAgICBuYW1lID0gcG0ucmVnaXN0ZXIoY29uZnRlc3QpCisgICAgYXNzZXJ0IG5hbWUgPT0g
ImNvbmZ0ZXN0IgorICAgIGFzc2VydCBnZXRhdHRyKHBtLmhvb2ssICJleGFtcGxlX2JsYWgiLCBO
b25lKSBpcyBOb25lCisgICAgYXNzZXJ0IGdldGF0dHIoCisgICAgICAgIHBtLmhvb2ssICJleGFt
cGxlX2hvb2siLCBOb25lCisgICAgKSAgIyBjb25mdGVzdC5leGFtcGxlX2hvb2sgc2hvdWxkIGJl
IGNvbGxlY3RlZAorICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbCgpOgorICAgICAgICBh
c3NlcnQgcG0ucGFyc2VfaG9va2ltcGxfb3B0cyhjb25mdGVzdCwgImV4YW1wbGVfYmxhaCIpIGlz
IE5vbmUKKyAgICAgICAgYXNzZXJ0IHBtLnBhcnNlX2hvb2tpbXBsX29wdHMoY29uZnRlc3QsICJl
eGFtcGxlX2hvb2siKSA9PSB7fQorCisKK2RlZiB0ZXN0X2xvYWRfc2V0dXB0b29sc19pbnN0YW50
aWF0aW9uKG1vbmtleXBhdGNoLCBwbSk6CisgICAgY2xhc3MgRW50cnlQb2ludChvYmplY3QpOgor
ICAgICAgICBuYW1lID0gIm15bmFtZSIKKyAgICAgICAgZ3JvdXAgPSAiaGVsbG8iCisgICAgICAg
IHZhbHVlID0gIm15bmFtZTpmb28iCisKKyAgICAgICAgZGVmIGxvYWQoc2VsZik6CisgICAgICAg
ICAgICBjbGFzcyBQc2V1ZG9QbHVnaW4ob2JqZWN0KToKKyAgICAgICAgICAgICAgICB4ID0gNDIK
KworICAgICAgICAgICAgcmV0dXJuIFBzZXVkb1BsdWdpbigpCisKKyAgICBjbGFzcyBEaXN0cmli
dXRpb24ob2JqZWN0KToKKyAgICAgICAgZW50cnlfcG9pbnRzID0gKEVudHJ5UG9pbnQoKSwpCisK
KyAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKKworICAgIGRlZiBteV9kaXN0cmlidXRpb25zKCk6
CisgICAgICAgIHJldHVybiAoZGlzdCwpCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGltcG9y
dGxpYl9tZXRhZGF0YSwgImRpc3RyaWJ1dGlvbnMiLCBteV9kaXN0cmlidXRpb25zKQorICAgIG51
bSA9IHBtLmxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cygiaGVsbG8iKQorICAgIGFzc2VydCBu
dW0gPT0gMQorICAgIHBsdWdpbiA9IHBtLmdldF9wbHVnaW4oIm15bmFtZSIpCisgICAgYXNzZXJ0
IHBsdWdpbi54ID09IDQyCisgICAgcmV0ID0gcG0ubGlzdF9wbHVnaW5fZGlzdGluZm8oKQorICAg
ICMgcG9vciBtYW4ncyBgYXNzZXJ0IHJldCA9PSBbKHBsdWdpbiwgbW9jay5BTlkpXWAKKyAgICBh
c3NlcnQgbGVuKHJldCkgPT0gMQorICAgIGFzc2VydCBsZW4ocmV0WzBdKSA9PSAyCisgICAgYXNz
ZXJ0IHJldFswXVswXSA9PSBwbHVnaW4KKyAgICBhc3NlcnQgcmV0WzBdWzFdLl9kaXN0ID09IGRp
c3QKKyAgICBudW0gPSBwbS5sb2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHMoImhlbGxvIikKKyAg
ICBhc3NlcnQgbnVtID09IDAgICMgbm8gcGx1Z2luIGxvYWRlZCBieSB0aGlzIGNhbGwKKworCitk
ZWYgdGVzdF9hZGRfdHJhY2VmdW5jcyhoZV9wbSk6CisgICAgb3V0ID0gW10KKworICAgIGNsYXNz
IGFwaTEob2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBoZV9tZXRob2Qx
KHNlbGYpOgorICAgICAgICAgICAgb3V0LmFwcGVuZCgiaGVfbWV0aG9kMS1hcGkxIikKKworICAg
IGNsYXNzIGFwaTIob2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBoZV9t
ZXRob2QxKHNlbGYpOgorICAgICAgICAgICAgb3V0LmFwcGVuZCgiaGVfbWV0aG9kMS1hcGkyIikK
KworICAgIGhlX3BtLnJlZ2lzdGVyKGFwaTEoKSkKKyAgICBoZV9wbS5yZWdpc3RlcihhcGkyKCkp
CisKKyAgICBkZWYgYmVmb3JlKGhvb2tfbmFtZSwgaG9va19pbXBscywga3dhcmdzKToKKyAgICAg
ICAgb3V0LmFwcGVuZCgoaG9va19uYW1lLCBsaXN0KGhvb2tfaW1wbHMpLCBrd2FyZ3MpKQorCisg
ICAgZGVmIGFmdGVyKG91dGNvbWUsIGhvb2tfbmFtZSwgaG9va19pbXBscywga3dhcmdzKToKKyAg
ICAgICAgb3V0LmFwcGVuZCgob3V0Y29tZSwgaG9va19uYW1lLCBsaXN0KGhvb2tfaW1wbHMpLCBr
d2FyZ3MpKQorCisgICAgdW5kbyA9IGhlX3BtLmFkZF9ob29rY2FsbF9tb25pdG9yaW5nKGJlZm9y
ZSwgYWZ0ZXIpCisKKyAgICBoZV9wbS5ob29rLmhlX21ldGhvZDEoYXJnPTEpCisgICAgYXNzZXJ0
IGxlbihvdXQpID09IDQKKyAgICBhc3NlcnQgb3V0WzBdWzBdID09ICJoZV9tZXRob2QxIgorICAg
IGFzc2VydCBsZW4ob3V0WzBdWzFdKSA9PSAyCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3V0WzBd
WzJdLCBkaWN0KQorICAgIGFzc2VydCBvdXRbMV0gPT0gImhlX21ldGhvZDEtYXBpMiIKKyAgICBh
c3NlcnQgb3V0WzJdID09ICJoZV9tZXRob2QxLWFwaTEiCisgICAgYXNzZXJ0IGxlbihvdXRbM10p
ID09IDQKKyAgICBhc3NlcnQgb3V0WzNdWzFdID09IG91dFswXVswXQorCisgICAgdW5kbygpCisg
ICAgaGVfcG0uaG9vay5oZV9tZXRob2QxKGFyZz0xKQorICAgIGFzc2VydCBsZW4ob3V0KSA9PSA0
ICsgMgorCisKK2RlZiB0ZXN0X2hvb2tfdHJhY2luZyhoZV9wbSk6CisgICAgc2F2ZWluZGVudCA9
IFtdCisKKyAgICBjbGFzcyBhcGkxKG9iamVjdCk6CisgICAgICAgIEBob29raW1wbAorICAgICAg
ICBkZWYgaGVfbWV0aG9kMShzZWxmKToKKyAgICAgICAgICAgIHNhdmVpbmRlbnQuYXBwZW5kKGhl
X3BtLnRyYWNlLnJvb3QuaW5kZW50KQorCisgICAgY2xhc3MgYXBpMihvYmplY3QpOgorICAgICAg
ICBAaG9va2ltcGwKKyAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZik6CisgICAgICAgICAgICBz
YXZlaW5kZW50LmFwcGVuZChoZV9wbS50cmFjZS5yb290LmluZGVudCkKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoKQorCisgICAgaGVfcG0ucmVnaXN0ZXIoYXBpMSgpKQorICAgIG91dCA9
IFtdCisgICAgaGVfcG0udHJhY2Uucm9vdC5zZXR3cml0ZXIob3V0LmFwcGVuZCkKKyAgICB1bmRv
ID0gaGVfcG0uZW5hYmxlX3RyYWNpbmcoKQorICAgIHRyeToKKyAgICAgICAgaW5kZW50ID0gaGVf
cG0udHJhY2Uucm9vdC5pbmRlbnQKKyAgICAgICAgaGVfcG0uaG9vay5oZV9tZXRob2QxKGFyZz0x
KQorICAgICAgICBhc3NlcnQgaW5kZW50ID09IGhlX3BtLnRyYWNlLnJvb3QuaW5kZW50CisgICAg
ICAgIGFzc2VydCBsZW4ob3V0KSA9PSAyCisgICAgICAgIGFzc2VydCAiaGVfbWV0aG9kMSIgaW4g
b3V0WzBdCisgICAgICAgIGFzc2VydCAiZmluaXNoIiBpbiBvdXRbMV0KKworICAgICAgICBvdXRb
Ol0gPSBbXQorICAgICAgICBoZV9wbS5yZWdpc3RlcihhcGkyKCkpCisKKyAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaGVfcG0uaG9vay5oZV9tZXRo
b2QxKGFyZz0xKQorICAgICAgICBhc3NlcnQgaGVfcG0udHJhY2Uucm9vdC5pbmRlbnQgPT0gaW5k
ZW50CisgICAgICAgIGFzc2VydCBzYXZlaW5kZW50WzBdID4gaW5kZW50CisgICAgZmluYWxseToK
KyAgICAgICAgdW5kbygpCisKKworZGVmIHRlc3RfaW1wbHByZWZpeF93YXJuaW5nKHJlY3dhcm4p
OgorICAgIFBsdWdpbk1hbmFnZXIoaG9va3NwZWMucHJvamVjdF9uYW1lLCAiaGVsbG9fIikKKyAg
ICB3ID0gcmVjd2Fybi5wb3AoRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIGFzc2VydCAidGVzdF9w
bHVnaW5tYW5hZ2VyLnB5IiBpbiB3LmZpbGVuYW1lCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpbmNsdWRlX2hvb2tzcGVjIiwgW1RydWUsIEZhbHNlXSkKK2RlZiB0ZXN0X3ByZWZpeF9o
b29raW1wbChpbmNsdWRlX2hvb2tzcGVjKToKKyAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2Nh
bGwoKToKKyAgICAgICAgcG0gPSBQbHVnaW5NYW5hZ2VyKGhvb2tzcGVjLnByb2plY3RfbmFtZSwg
ImhlbGxvXyIpCisKKyAgICBpZiBpbmNsdWRlX2hvb2tzcGVjOgorCisgICAgICAgIGNsYXNzIEhv
b2tTcGVjKG9iamVjdCk6CisgICAgICAgICAgICBAaG9va3NwZWMKKyAgICAgICAgICAgIGRlZiBo
ZWxsb19teWhvb2soc2VsZiwgYXJnMSk6CisgICAgICAgICAgICAgICAgIiIiIGFkZCB0byBhcmcx
ICIiIgorCisgICAgICAgIHBtLmFkZF9ob29rc3BlY3MoSG9va1NwZWMpCisKKyAgICBjbGFzcyBQ
bHVnaW4ob2JqZWN0KToKKyAgICAgICAgZGVmIGhlbGxvX215aG9vayhzZWxmLCBhcmcxKToKKyAg
ICAgICAgICAgIHJldHVybiBhcmcxICsgMQorCisgICAgd2l0aCBweXRlc3QuZGVwcmVjYXRlZF9j
YWxsKCk6CisgICAgICAgIHBtLnJlZ2lzdGVyKFBsdWdpbigpKQorICAgICAgICBwbS5yZWdpc3Rl
cihQbHVnaW4oKSkKKyAgICByZXN1bHRzID0gcG0uaG9vay5oZWxsb19teWhvb2soYXJnMT0xNykK
KyAgICBhc3NlcnQgcmVzdWx0cyA9PSBbMTgsIDE4XQorCisKK2RlZiB0ZXN0X3ByZWZpeF9ob29r
aW1wbF9kb250bWF0Y2hfbW9kdWxlKCk6CisgICAgd2l0aCBweXRlc3QuZGVwcmVjYXRlZF9jYWxs
KCk6CisgICAgICAgIHBtID0gUGx1Z2luTWFuYWdlcihob29rc3BlYy5wcm9qZWN0X25hbWUsICJo
ZWxsb18iKQorCisgICAgY2xhc3MgQmFkUGx1Z2luKG9iamVjdCk6CisgICAgICAgIGhlbGxvX21v
ZHVsZSA9IF9faW1wb3J0X18oImVtYWlsIikKKworICAgIHBtLnJlZ2lzdGVyKEJhZFBsdWdpbigp
KQorICAgIHBtLmNoZWNrX3BlbmRpbmcoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGlu
Zy90ZXN0X3RyYWNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF90cmFjZXIucHkKaW5k
ZXggNGEzZTE2Y2VjNDM2Li45OTJlYzY3OTE0OWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rl
c3RpbmcvdGVzdF90cmFjZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X3RyYWNl
ci5weQpAQCAtMSw5ICsxLDE0IEBACitmcm9tIHBsdWdneS5fdHJhY2luZyBpbXBvcnQgVGFnVHJh
Y2VyCiAKLWZyb20gcGx1Z2d5IGltcG9ydCBfVGFnVHJhY2VyCitpbXBvcnQgcHl0ZXN0CiAKIAot
ZGVmIHRlc3Rfc2ltcGxlKCk6Ci0gICAgcm9vdGxvZ2dlciA9IF9UYWdUcmFjZXIoKQorQHB5dGVz
dC5maXh0dXJlCitkZWYgcm9vdGxvZ2dlcigpOgorICAgIHJldHVybiBUYWdUcmFjZXIoKQorCisK
K2RlZiB0ZXN0X3NpbXBsZShyb290bG9nZ2VyKToKICAgICBsb2cgPSByb290bG9nZ2VyLmdldCgi
cHl0ZXN0IikKICAgICBsb2coImhlbGxvIikKICAgICBvdXQgPSBbXQpAQCAtMTYsOCArMjEsNyBA
QCBkZWYgdGVzdF9zaW1wbGUoKToKICAgICBhc3NlcnQgb3V0WzFdID09ICJoZWxsbyBbcHl0ZXN0
OmNvbGxlY3Rpb25dXG4iCiAKIAotZGVmIHRlc3RfaW5kZW50KCk6Ci0gICAgcm9vdGxvZ2dlciA9
IF9UYWdUcmFjZXIoKQorZGVmIHRlc3RfaW5kZW50KHJvb3Rsb2dnZXIpOgogICAgIGxvZyA9IHJv
b3Rsb2dnZXIuZ2V0KCIxIikKICAgICBvdXQgPSBbXQogICAgIGxvZy5yb290LnNldHdyaXRlcihs
YW1iZGEgYXJnOiBvdXQuYXBwZW5kKGFyZykpCkBAIC0zMywyNyArMzcsMjggQEAgZGVmIHRlc3Rf
aW5kZW50KCk6CiAgICAgbG9nLnJvb3QuaW5kZW50IC09IDEKICAgICBsb2coImxhc3QiKQogICAg
IGFzc2VydCBsZW4ob3V0KSA9PSA3Ci0gICAgbmFtZXMgPSBbeFs6eC5yZmluZCgnIFsnKV0gZm9y
IHggaW4gb3V0XQorICAgIG5hbWVzID0gW3hbOiB4LnJmaW5kKCIgWyIpXSBmb3IgeCBpbiBvdXRd
CiAgICAgYXNzZXJ0IG5hbWVzID09IFsKLSAgICAgICAgJ2hlbGxvJywgJyAgbGluZTEnLCAnICBs
aW5lMicsCi0gICAgICAgICcgICAgbGluZTMnLCAnICAgIGxpbmU0JywgJyAgbGluZTUnLCAnbGFz
dCddCisgICAgICAgICJoZWxsbyIsCisgICAgICAgICIgIGxpbmUxIiwKKyAgICAgICAgIiAgbGlu
ZTIiLAorICAgICAgICAiICAgIGxpbmUzIiwKKyAgICAgICAgIiAgICBsaW5lNCIsCisgICAgICAg
ICIgIGxpbmU1IiwKKyAgICAgICAgImxhc3QiLAorICAgIF0KIAogCi1kZWYgdGVzdF9yZWFkYWJs
ZV9vdXRwdXRfZGljdGFyZ3MoKToKLSAgICByb290bG9nZ2VyID0gX1RhZ1RyYWNlcigpCitkZWYg
dGVzdF9yZWFkYWJsZV9vdXRwdXRfZGljdGFyZ3Mocm9vdGxvZ2dlcik6CiAKLSAgICBvdXQgPSBy
b290bG9nZ2VyLmZvcm1hdF9tZXNzYWdlKFsndGVzdCddLCBbMV0pCi0gICAgYXNzZXJ0IG91dCA9
PSBbJzEgW3Rlc3RdXG4nXQorICAgIG91dCA9IHJvb3Rsb2dnZXIuX2Zvcm1hdF9tZXNzYWdlKFsi
dGVzdCJdLCBbMV0pCisgICAgYXNzZXJ0IG91dCA9PSAiMSBbdGVzdF1cbiIKIAotICAgIG91dDIg
PSByb290bG9nZ2VyLmZvcm1hdF9tZXNzYWdlKFsndGVzdCddLCBbJ3Rlc3QnLCB7J2EnOiAxfV0p
Ci0gICAgYXNzZXJ0IG91dDIgPT0gWwotICAgICAgICAndGVzdCBbdGVzdF1cbicsCi0gICAgICAg
ICcgICAgYTogMVxuJwotICAgIF0KKyAgICBvdXQyID0gcm9vdGxvZ2dlci5fZm9ybWF0X21lc3Nh
Z2UoWyJ0ZXN0Il0sIFsidGVzdCIsIHsiYSI6IDF9XSkKKyAgICBhc3NlcnQgb3V0MiA9PSAidGVz
dCBbdGVzdF1cbiAgICBhOiAxXG4iCiAKIAotZGVmIHRlc3Rfc2V0cHJvY2Vzc29yKCk6Ci0gICAg
cm9vdGxvZ2dlciA9IF9UYWdUcmFjZXIoKQorZGVmIHRlc3Rfc2V0cHJvY2Vzc29yKHJvb3Rsb2dn
ZXIpOgogICAgIGxvZyA9IHJvb3Rsb2dnZXIuZ2V0KCIxIikKICAgICBsb2cyID0gbG9nLmdldCgi
MiIpCiAgICAgYXNzZXJ0IGxvZzIudGFncyA9PSB0dXBsZSgiMTIiKQpAQCAtNzEsMTkgKzc2LDMg
QEAgZGVmIHRlc3Rfc2V0cHJvY2Vzc29yKCk6CiAgICAgbG9nMigic2VlbiIpCiAgICAgdGFncywg
YXJncyA9IGwyWzBdCiAgICAgYXNzZXJ0IGFyZ3MgPT0gKCJzZWVuIiwpCi0KLQotZGVmIHRlc3Rf
c2V0bXlwcm9jZXNzb3IoKToKLSAgICByb290bG9nZ2VyID0gX1RhZ1RyYWNlcigpCi0gICAgbG9n
ID0gcm9vdGxvZ2dlci5nZXQoIjEiKQotICAgIGxvZzIgPSBsb2cuZ2V0KCIyIikKLSAgICBvdXQg
PSBbXQotICAgIGxvZzIuc2V0bXlwcm9jZXNzb3IobGFtYmRhICphcmdzOiBvdXQuYXBwZW5kKGFy
Z3MpKQotICAgIGxvZygibm90IHNlZW4iKQotICAgIGFzc2VydCBub3Qgb3V0Ci0gICAgbG9nMig0
MikKLSAgICBhc3NlcnQgbGVuKG91dCkgPT0gMQotICAgIHRhZ3MsIGFyZ3MgPSBvdXRbMF0KLSAg
ICBhc3NlcnQgIjEiIGluIHRhZ3MKLSAgICBhc3NlcnQgIjIiIGluIHRhZ3MKLSAgICBhc3NlcnQg
YXJncyA9PSAoNDIsKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg0YmRiYzExZDk1NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2JlbmNobWFyay5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
L3Rlc3RpbmcvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfZGV0YWlscy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9oZWxwZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVz
dGluZy90ZXN0X2hvb2tyZWxheS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9tZXRob2Rf
b3JkZXJpbmcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfbXVsdGljYWxsLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvdGVzdGluZy90ZXN0X3BsdWdpbm1hbmFnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0
aW5nL3Rlc3RfdHJhY2VyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90b3guaW5pIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvdG94LmluaQppbmRleCA4OWQ0NGUzNTJkYmEuLjFhNGUzZjUyODgzNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wbHVnZ3kvdG94LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90b3guaW5pCkBAIC0x
LDQ0ICsxLDU4IEBACiBbdG94XQotZW52bGlzdD1jaGVjayxkb2NzLHB5ezI3LDM0LDM1LDM2LHB5
fS1weXRlc3RyZWxlYXNlLHB5ezI3LDM2fS1weXRlc3R7bWFzdGVyLGZlYXR1cmVzfQorZW52bGlz
dD1saW50aW5nLGRvY3MscHl7MjcsMzQsMzUsMzYsMzcsMzgscHkscHkzfSxweXszNiwzN30tcHl0
ZXN0e21hc3RlcixmZWF0dXJlc30KIAogW3Rlc3RlbnZdCi1jb21tYW5kcz1weS50ZXN0IHtwb3Nh
cmdzOnRlc3RpbmcvfQorY29tbWFuZHM9CisgIHtlbnY6X1BMVUdHWV9UT1hfQ01EOnB5dGVzdH0g
e3Bvc2FyZ3N9CisgIGNvdmVyYWdlOiBjb3ZlcmFnZSByZXBvcnQgLW0KKyAgY292ZXJhZ2U6IGNv
dmVyYWdlIHhtbAogc2V0ZW52PQogICBfUFlURVNUX1NFVFVQX1NLSVBfUExVR0dZX0RFUD0xCisg
IGNvdmVyYWdlOiBfUExVR0dZX1RPWF9DTUQ9Y292ZXJhZ2UgcnVuIC1tIHB5dGVzdAorICBweXRl
c3RtYXN0ZXI6IF9QWVRFU1RfREVQPWdpdCtodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QuZ2l0QG1hc3RlcgorICBweXRlc3RmZWF0dXJlczogX1BZVEVTVF9ERVA9Z2l0K2h0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC5naXRAZmVhdHVyZXMKIGRlcHM9Ci0gIHB5
dGVzdHJlbGVhc2U6IHB5dGVzdAotICBweXRlc3RtYXN0ZXI6IGdpdCtodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QuZ2l0QG1hc3RlcgotICBweXRlc3RmZWF0dXJlczogZ2l0K2h0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC5naXRAZmVhdHVyZXMKKyAgY292ZXJh
Z2U6IGNvdmVyYWdlCisgIHtlbnY6X1BZVEVTVF9ERVA6cHl0ZXN0fQogCiBbdGVzdGVudjpiZW5j
aG1hcmtdCi1jb21tYW5kcz1weS50ZXN0IHtwb3NhcmdzOnRlc3RpbmcvYmVuY2htYXJrLnB5fQor
Y29tbWFuZHM9cHl0ZXN0IHtwb3NhcmdzOnRlc3RpbmcvYmVuY2htYXJrLnB5fQogZGVwcz0KICAg
cHl0ZXN0CiAgIHB5dGVzdC1iZW5jaG1hcmsKIAotW3Rlc3RlbnY6Y2hlY2tdCi1kZXBzID0KLSAg
Zmxha2U4Ci0gIHJlc3RydWN0dXJlZHRleHRfbGludAotICBweWdtZW50cwotY29tbWFuZHMgPQot
ICBmbGFrZTggcGx1Z2d5LnB5IHNldHVwLnB5IHRlc3RpbmcKLSAgcnN0LWxpbnQgQ0hBTkdFTE9H
LnJzdCBSRUFETUUucnN0CitbdGVzdGVudjpsaW50aW5nXQorc2tpcF9pbnN0YWxsID0gdHJ1ZQor
YmFzZXB5dGhvbiA9IHB5dGhvbjMuNgorZGVwcyA9IHByZS1jb21taXQKK2NvbW1hbmRzID0gcHJl
LWNvbW1pdCBydW4gLS1hbGwtZmlsZXMgLS1zaG93LWRpZmYtb24tZmFpbHVyZQogCiBbdGVzdGVu
djpkb2NzXQogZGVwcyA9CiAgIHNwaGlueAogICBweWdtZW50cwogY29tbWFuZHMgPQotICBzcGhp
bngtYnVpbGQgLWIgaHRtbCB7dG94aW5pZGlyfS9kb2NzIHt0b3hpbmlkaXJ9L2J1aWxkL2h0bWwt
ZG9jcworICBzcGhpbngtYnVpbGQgLVcgLWIgaHRtbCB7dG94aW5pZGlyfS9kb2NzIHt0b3hpbmlk
aXJ9L2J1aWxkL2h0bWwtZG9jcwogCiBbcHl0ZXN0XQogbWludmVyc2lvbj0yLjAKK3Rlc3RwYXRo
cyA9IHRlc3RpbmcKICMtLXB5YXJncyAtLWRvY3Rlc3QtbW9kdWxlcyAtLWlnbm9yZT0udG94Ci1h
ZGRvcHRzPS1yeHNYCi1ub3JlY3Vyc2VkaXJzPS50b3ggamEgLmhnIC5lbnYqCithZGRvcHRzPS1y
IGEKIGZpbHRlcndhcm5pbmdzID0KICAgZXJyb3IKIAogW2ZsYWtlOF0KIG1heC1saW5lLWxlbmd0
aD05OQorCitbdGVzdGVudjpyZWxlYXNlXQorZGVjcmlwdGlvbiA9IGRvIGEgcmVsZWFzZSwgcmVx
dWlyZWQgcG9zYXJnIG9mIHRoZSB2ZXJzaW9uIG51bWJlcgorYmFzZXB5dGhvbiA9IHB5dGhvbjMK
K3NraXBzZGlzdCA9IFRydWUKK3VzZWRldmVsb3AgPSBUcnVlCitwYXNzZW52ID0gKgorZGVwcyA9
CisgICAgY29sb3JhbWEKKyAgICBnaXRweXRob24KKyAgICB0b3duY3JpZXIKK2NvbW1hbmRzID0g
cHl0aG9uIHNjcmlwdHMvcmVsZWFzZS5weSB7cG9zYXJnc30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMWU1OWMxYTI1Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvQ0hBTkdFTE9HLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L0xJQ0VOU0UK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L1JFQURNRS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9hcHB2ZXlvci55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmdp
dGF0dHJpYnV0ZXMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMTI0Njg3OWM0ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS8uZ2l0YXR0cmlidXRlcwpAQCAtMCwwICsxIEBACisqLmR1bXAgICBlb2w9bGYKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvLmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmdpdGlnbm9yZQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjViYjBkNDU3ZDQ5OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDEyIEBACisKKy5jYWNoZS8KKy50
b3gvCitfX3B5Y2FjaGVfXy8KKworKi5weWMKKyoucHlvCisKKyouZWdnLWluZm8KKy5lZ2dzLwor
CitkaXN0LyoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmhnaWdub3JlIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uaGdpZ25v
cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNDk3NmRhNWQxNTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly5oZ2lnbm9yZQpAQCAtMCwwICsxLDI5IEBACisK
KyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYGhnaW1wb3J0c3ZuYAorc3ludGF4Omdsb2IK
Ky5zdm4KKy5oZ3N2bgorCisjIFRoZXNlIGxpbmVzIGFyZSBzdWdnZXN0ZWQgYWNjb3JkaW5nIHRv
IHRoZSBzdm46aWdub3JlIHByb3BlcnR5CisjIEZlZWwgZnJlZSB0byBlbmFibGUgdGhlbSBieSB1
bmNvbW1lbnRpbmcgdGhlbQorc3ludGF4Omdsb2IKKyoucHljCisqLnB5bworKi5zd3AKKyouaHRt
bAorKi5jbGFzcworKi5vcmlnCisqfgorCitkb2MvX2J1aWxkCitidWlsZC8KK2Rpc3QvCisqLmVn
Zy1pbmZvCitpc3N1ZS8KK2Vudi8KKzNyZHBhcnR5LworLnRveAorbGliLworYmluLworaW5jbHVk
ZS8KK3NyYy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmhndGFncyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmhndGFncwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlkNDgwOTViZjY0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmhndGFncwpAQCAtMCwwICsxLDY4IEBACis1MmM2ZDll
Nzg3NzdhNWEzNGU4MTMxMjM5OTdkZmM2MTRhMWE0NzY3IDEuMC4wYjMKKzFjN2FhYThjNjFmM2Iw
OTQ1OTIxYTlhY2M3YmViMTg0MjAxYWVkNGIgMS4wLjBiNAorMWM3YWFhOGM2MWYzYjA5NDU5MjFh
OWFjYzdiZWIxODQyMDFhZWQ0YiAxLjAuMGI0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwIDEuMC4wYjQKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAgMS4wLjBiNAorOGNkNmViOTFlYmEzMTNiMDEyZDZlNTY4ZjM3ZDg0NGRjMDc1MWYyZSAx
LjAuMGI0Cis4Y2Q2ZWI5MWViYTMxM2IwMTJkNmU1NjhmMzdkODQ0ZGMwNzUxZjJlIDEuMC4wYjQK
KzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgMS4wLjBiNAorMmNjMDUw
N2YxMTdmZmU3MjFkZmY3ZWUwMjY2NDhjZmNlMDBlYzkyZiAxLjAuMGI2Cis4NmYxZTFiNmU0OWJm
NTg4MmE4MDlmMTFlZGQxZGJiMDgxNjJjZGFkIDEuMC4wYjgKKzg2ZjFlMWI2ZTQ5YmY1ODgyYTgw
OWYxMWVkZDFkYmIwODE2MmNkYWQgMS4wLjBiOAorYzYzZjM1YzI2NmNiYjI2ZGFkNmI4N2I1ZTEx
NWQ2NTY4NWFkZjQ0OCAxLjAuMGI4CitjNjNmMzVjMjY2Y2JiMjZkYWQ2Yjg3YjVlMTE1ZDY1Njg1
YWRmNDQ4IDEuMC4wYjgKKzBlYWEwZmRmMmJhMDE2M2NmNTM0ZGMyZWZmNGJhMmU1ZmM2NmMyNjEg
MS4wLjBiOAorZTJhNjA2NTNjYjQ5MGFlZWQ4MWJiYmQ4M2MwNzBiOTk0MDFjMjExYyAxLjAuMGI5
Cis1ZWEwY2RmNzg1NGMzZDQyNzhkMzZlZGE5NGEyYjY4NDgzYTBlMjExIDEuMC4wCis1ZWEwY2Rm
Nzg1NGMzZDQyNzhkMzZlZGE5NGEyYjY4NDgzYTBlMjExIDEuMC4wCis3YWNkZTM2MGQ5NGI2YTI2
OTBjZTNkMDNmZjM5MzAxZGE4NGMwYTJiIDEuMC4wCis2YmQyMjE5ODFhYzk5MTAzMDAyYzFjYjk0
ZmVkZTQwMGQyM2E5NmExIDEuMC4xCis0ODE2ZThiODA2MDJhM2ZkM2EwYTEyMDMzM2FkODVmYmU3
ZDhiYWI0IDEuMC4yCis2MGM0NGJkYmYwOTMyODVkYzY5ZDU0NjJkNGRiYjRhY2FkMzI1Y2E2IDEu
MS4wCiszMTkxODdmY2RhNjY3MTRjNWViMTM1MzQ5MmJhYmVlYzNkM2M4MjZmIDEuMS4xCis0ZmM1
MjEyZjc2MjZhNTZiOWViNjQzN2I1YzY3M2Y1NmRkN2ViOTQyIDEuMi4wCitjMTQzYThjODg0MGEx
YzY4NTcwODkwYzhhYzYxNjViYmY5MmZkM2M2IDEuMi4xCitlYWZkM2MyNTZlODczMmRmYjBhNGQ0
OWQwNTFiNWI0MzM5ODU4OTI2IDEuMy4wCitkNWVhY2YzOTBhZjc0NTUzMjI3MTIyYjg1ZTIwMzQ1
ZDQ3YjJmOWU2IDEuMy4xCitkNWVhY2YzOTBhZjc0NTUzMjI3MTIyYjg1ZTIwMzQ1ZDQ3YjJmOWU2
IDEuMy4xCis4YjhlN2MyNWExM2NmODYzZjAxYjJkZDk1NTk3ODI4NWFlOWRhZjZhIDEuMy4xCisz
YmZmNDRiMTg4YTdlYzFhZjMyOGQ5NzdiOWQzOWI2NzU3YmIzOGRmIDEuMy4yCitjNTlkM2ZhODY4
MWE1YjU5NjZiODM3NWIxNmZjY2Q2NGEzYThkYmViIDEuMy4zCis3OWVmNjM3NzcwNTE4NGM1NTYz
M2Q0NTY4MzJlZWEzMThmZWRjZjYxIDEuMy40Cis3OWVmNjM3NzcwNTE4NGM1NTYzM2Q0NTY4MzJl
ZWEzMThmZWRjZjYxIDEuMy40Cis5MGZmZmQzNTM3M2U5ZjEyNWFmMjMzZjc4YjE5NDE2ZjA5Mzhk
ODQxIDEuMy40Cis1MzQ2YWI0MWIwNTljOTVhNDhjYmUxZThhN2JhZTk2Y2U2ZTBkYTI3IDEuNC4w
CisxZjMxMjVjYmE3OTc2NTM4OTUyYmUyNjhmMTA3YzFkMGMzNmM1Y2U4IDEuNC4xCiswNGFiMjJk
YjRmZjczN2NmMzFlOTFkNzVhMGY1ZDcwNzdmMzI0MTY3IDEuNC4yCis5OTUwYmY5ZDY4NGE5ODRk
NTExNzk1MDEzNDIxYzg5YzVjZjg4YmVmIDEuNC4zCitkOTk1MWUzYmRiYzc2NWU3MzgzNWFlMTMw
MTJmNmEwNzRkMTNkOGJmIDEuNC40CitiODI3ZGQxNTZhMzY3NTNlMzJjN2YzZjE1Y2U4MmQ2ZmU5
ZTM1NmM4IDEuNC42CitmMTU3MjZmOWU1YTY3Y2M2MjIxYzQ5OWFmZmE0ODQwZTlkNTkxNzYzIDEu
NC43CithYmZhYmQwN2ExZDMyOGYxM2M3MzBlOGE1MGQ4MGQyZTQ3MGFmZDNiIDEuNC45Cis3ZjM3
ZWUwYWZmOWJlNGI4MzlkNjc1OWNmZWUzMzZmNjBlODM5M2E0IDEuNC4xMAorZmU0NTkzMjYzZWZh
MTBlYTdiYTAxNGRiNmUzMzc5ZTBiODIzNjhhMiAxLjQuMTEKK2YwN2FmMjVhMjY3ODZlNDgyNWI1
MTcwZTE3YWQ2OTMyNDVjYjM0MjYgMS40LjEyCitkMzczMGQ4NGJhN2VkYTkyZmQzNDY5YTNmNjNm
ZDZkOGNiMjJjOTc1IDEuNC4xMworMTJjMWFlOGU3YzUzNDU3MjFlOWVjOWY4ZTI3YjFlMzZjMDdm
NzRkYyAxLjQuMTQKKzEyYzFhZThlN2M1MzQ1NzIxZTllYzlmOGUyN2IxZTM2YzA3Zjc0ZGMgMS40
LjE0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDEuNC4xNAorMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAxLjQuMTQKKzE0OTdlMmVmZDBm
OGM3M2EwZTNkNTI5ZGViZjBjNDg5ZTRjZDZjYWIgMS40LjE0CitlMDY1MDE0YzFjZThhZDExMGEz
ODFlOWJhYWFhNWQ2NDdiYTdhYzZiIDEuNC4xNQorZTllNWIzOGY1M2RjMzViMzVhYTFmOWVlOWE5
YmU5YmJkMmQyYzNiMSAxLjQuMTYKK2M2MDM1MDM5NDVmNTJiNzg1MjJkOTZhNDIzNjA1Y2JjOTUz
MjM2ZDMgMS40LjE3CitjNTkyMDExMDVhMjk4MDFjYzg1OGViOTE2MGI3YTE5NzkxYjkxYTM1IDEu
NC4xOAorMjg0Y2MxNzJlMjk0ZDQ4ZWRjODQwMDEyZTE0NTFjMzJjMzk2M2Q5MiAxLjQuMTkKK2Ez
ZTA2MjZhYTBjNWFlY2YyNzEzNjdkYzc3ZTQ3NmFiMjE2ZWEzYzggMS40LjIwCis1ZTQ4MDE2YzRh
M2FmOGU3MzU4YTEyNjdkMzNkMDIxZTcxNzY1YmVkIDEuNC4yMQorMDFhZTJjZmNjNjFjNGZjYjNh
YTUwMzEzNDlhZGI1YjQ2N2MzMTAxOCAxLjQuMjMKKzVmZmQ5ODJmNGRmZjYwYjU4OGYzMDljZDli
ZGM2MTAzNjU0NzI4MmEgMS40LjI0CitkYzlmZmJjYWYxZjdkNzJlOTZiZTNmNjhjMTFkZWViYjdl
NzE5M2M1IDEuNC4yNQorNmRlMWE0NGJmNzVkZTdhZjRmY2FlOTQ3YzIzNWU5MDcyYmJkYmI5YSAx
LjQuMjYKKzdkNjUwYmEyNjU3ODkwYTIyNTNjOGM0YTgzZjE3MGZlYmViZDkwZmEgMS40LjI3Cis3
ZDY1MGJhMjY1Nzg5MGEyMjUzYzhjNGE4M2YxNzBmZWJlYmQ5MGZhIDEuNC4yNworMTgxMDAwM2Rl
YzYzZGQxYjUwNmEyMzg0OTg2MWZmZmE1YmMzYmExMyAxLjQuMjcKK2JhMDg3MDZmMDhkZGVhMWI3
N2E0MjZmMDBkZmUyYmRjMjQ0MzQ1ZTggMS40LjI4Cis0ZTgwNTRhZGE2M2YzMzI3YmNmNzU5YWU3
Y2QzNmM3Yzg2NTJiYzliIDEuNC4yOQorMzY2YWIzNDY2MTBjNmRlOGFhYTc2MTdlMjQwMTE3OTRi
NDAyMzZjNiAxLjQuMzAKKzY1NzM4MGU0MzlmOWI3ZTA0OTE4Y2IxNjJjYjJlNDYzODgyNDRiNDIg
MS40LjMxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8udHJhdmlz
LnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkxN2M1OWQxNGI3
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwyNyBA
QAorc3VkbzogZmFsc2UKK2xhbmd1YWdlOiBweXRob24KK3B5dGhvbjoKKy0gJzIuNycKKy0gJzMu
NCcKKy0gJzMuNScKKy0gJzMuNicKKy0gJ3B5cHktNS40JworZW52OgorLSBERVBTPSJweXRlc3R+
PTIuOS4wIgorLSBERVBTPSJweXRlc3R+PTMuMC4wIgorIy0gREVQUz0icHl0ZXN0fj0zLjEuMCIK
KworbWF0cml4OgorCisgIGluY2x1ZGU6CisgIC0gcHl0aG9uOiAnMi43JworICAgICMgdXNpbmcg
YSBkaWZmZXJlbnQgb3B0aW9uIGR1ZSB0byBweXRlc3QtYWRkb3B0cyBweXRlc3RlciBpc3N1ZXMK
KyAgICBlbnY6IFBZVEVTVF9YQURET1BUUz0iLW4gMyAtLXJ1bnNsb3d0ZXN0cyIgREVQUz0icHl0
ZXN0fj0zLjAuMCBweXRlc3QteGRpc3QiCisgIGFsbG93X2ZhaWx1cmVzOgorICAtIHB5dGhvbjog
J3B5cHktNS40JworaW5zdGFsbDoKKy0gcGlwIGluc3RhbGwgLVUgc2V0dXB0b29scyBzZXR1cHRv
b2xzX3NjbQorLSBwaXAgaW5zdGFsbCAkREVQUworLSBwaXAgaW5zdGFsbCAtVSAuIC0tZm9yY2Ut
cmVpbnN0YWxsCitzY3JpcHQ6CistIHB5LnRlc3QgLS1sc29mICRQWVRFU1RfWEFERE9QVFMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvYmVuY2gvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2JlbmNoL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGZhZGYwMmY0N2Mu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2JlbmNoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9iZW5jaC9sb2NhbHBhdGgu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L2RvYy9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1NTk1ZmI1ZTI0OTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9f
dGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS9kb2MvX3RlbXBsYXRlcy9sYXlvdXQuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9kb2MvYW5ub3VuY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5j
ZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyMjA5YzZh
MjllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9h
bm5vdW5jZS9yZWxlYXNlLTAuOS4wLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2Ut
MC45LjIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjAuMC50eHQKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMC4xLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNl
L3JlbGVhc2UtMS4wLjIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjEuMC50
eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMS4xLnR4dAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9j
L2Fubm91bmNlL3JlbGVhc2UtMS4yLjAudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFz
ZS0xLjIuMS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMy4wLnR4dAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4zLjEudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3Vu
Y2UvcmVsZWFzZS0xLjMuMi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMy4z
LnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4zLjQudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9k
b2MvYW5ub3VuY2UvcmVsZWFzZS0xLjQuMC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxl
YXNlLTEuNC4xLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2VzLnR4dApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9kb2MvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2V4
YW1wbGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MWRj
ZjJjMjBjMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2V4YW1wbGUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2Rv
Yy9leGFtcGxlL2dlbmh0bWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9leGFtcGxlL2dlbmh0bWxjc3MucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2RvYy9leGFtcGxlL2dlbnhtbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
aW1nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvaW1nL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTg5YTY2ZTgwZDYuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2RvYy9pbWcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9pbWcvcHlsaWIucG5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L2RvYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2FmMDU1YmY4NGEuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L2RvYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMxICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvY2hhbmdl
bG9nLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvZG9jL2NvZGUudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvY29uZi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvZG9jL2Rvd25sb2FkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9mYXEudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9k
b2MvaW5kZXgudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvaW5zdGFsbC50eHQKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9pby50
eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L2RvYy9saW5rcy5pbmMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9sb2cudHh0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9kb2MvbWlzYy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9wYXRoLnR4dAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3N0eWxl
LmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvZG9jL3htbC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmExYWQyY2VhNmIuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3B5L19jb2RlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29kZS9fX2luaXRfXy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkv
X2NvZGUvX2Fzc2VydGlvbm5ldy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUvX2Fzc2VydGlvbm9sZC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX2NvZGUvX3B5MnRyYWNlYmFjay5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUv
YXNzZXJ0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29kZS9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29k
ZS9zb3VyY2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2lvL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9faW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBlNDQzOTczNjA5OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2lvL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS9faW8vX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby9jYXB0dXJlLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS9faW8vc2FmZXJlcHIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby90ZXJtaW5hbHdyaXRlci5weQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS9fbG9nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9f
bG9nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzJiMjQy
ZWRkN2YuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cvbG9nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fbG9nL3dh
cm5pbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3B5L19wYXRoL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4NGVjMmY5MjNmYWQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9weS9fcGF0aC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgvY2FjaGV1dGlsLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9weS9fcGF0aC9jb21tb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL2xvY2FsLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9weS9fcGF0aC9zdm51cmwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL3N2bndjLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS9fcHJvY2Vzcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWE1NDU2NzBmMmU5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcHJvY2Vzcy93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvcHkvX3Byb2Nlc3MvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL2NtZGV4
ZWMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL2ZvcmtlZGZ1bmMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19w
cm9jZXNzL2tpbGxwcm9jLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNr
YWdlcy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9f
LnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5k
b3JlZF9wYWNrYWdlcy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5k
b3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZvL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzc2ZWZjNzgxYzkuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3Qt
aW5mby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZvL0RF
U0NSSVBUSU9OLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQu
ZGlzdC1pbmZvL0lOU1RBTExFUgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBr
Zy0xLjQuZGlzdC1pbmZvL01FVEFEQVRBCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMv
YXBpcGtnLTEuNC5kaXN0LWluZm8vUkVDT1JECi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2Fn
ZXMvYXBpcGtnLTEuNC5kaXN0LWluZm8vV0hFRUwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNr
YWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9tZXRhZGF0YS5qc29uCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVu
ZG9yZWRfcGFja2FnZXMvYXBpcGtnLTEuNC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3Qt
aW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNv
bmZpZy0xLjAuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE2ZGZlYWRkZTBjNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Zl
bmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5k
b3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL0RFU0NSSVBUSU9OLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8v
SU5TVEFMTEVSCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4w
LmRpc3QtaW5mby9NRVRBREFUQQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNv
bmZpZy0xLjAuMC5kaXN0LWluZm8vUkVDT1JECi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2Fn
ZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby9XSEVFTAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVk
X3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vbWV0YWRhdGEuanNvbgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vdG9wX2xl
dmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI3NzJhNzlkMDMxLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9w
YWNrYWdlcy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBr
Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9weS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MmEzMGNkMDBkZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvcHkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9f
X21ldGFpbmZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fYnVpbHRpbi5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2Vycm9y
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9weS9fc3RkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9feG1sZ2VuLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS90ZXN0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rhc2tzL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS90YXNrcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGU4ZDI0MmY1ODQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90YXNrcy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGFza3MvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rhc2tzL3ZlbmRvcmluZy5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcv
Y29kZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjMzg0
OTE5YWIxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rl
c3RpbmcvY29kZS90ZXN0X2Fzc2VydGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3Rlc3Rf
Y29kZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3Rlc3RfZXhjaW5mby5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcv
aW9fL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lvXy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdjMzZjMWY4NWRhLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lvXy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9pb18vX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3RpbmcvaW9fL3Rlc3RfY2FwdHVyZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9p
b18vdGVzdF9zYWZlcmVwci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9pb18vdGVzdF90ZXJtaW5hbHdy
aXRlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy9fX2luaXRfXy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvdGVzdGluZy9sb2cvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5
YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cvX19pbml0X18ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS90ZXN0aW5nL2xvZy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmls
ZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9k
dWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rl
c3RpbmcvbG9nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMwY2E1MjgzMzhjLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL3Rlc3RfbG9nLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L2xvZy90ZXN0X3dhcm5pbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmQ3YjE3ODAyZS4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvdGVzdGluZy9wYXRoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvY29tbW9uLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS90ZXN0aW5nL3BhdGgvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC9yZXBv
dGVzdC5kdW1wCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvc3ZudGVzdGJhc2UucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3Rlc3RpbmcvcGF0aC90ZXN0X2NhY2hldXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3Rl
c3RfbG9jYWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC90ZXN0X3N2bmF1dGgucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rlc3RpbmcvcGF0aC90ZXN0X3N2bnVybC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3Rl
c3Rfc3Zud2MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wcm9jZXNzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Byb2Nlc3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMWY4OWU0YWNmZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvdGVzdGluZy9wcm9jZXNzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Byb2Nlc3MvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy90ZXN0X2NtZGV4ZWMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rp
bmcvcHJvY2Vzcy90ZXN0X2ZvcmtlZGZ1bmMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy90
ZXN0X2tpbGxwcm9jLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcvcm9vdC93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2YzMyZTU1NDUwYmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rlc3Rpbmcvcm9vdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L19faW5pdF9fLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS90ZXN0aW5nL3Jvb3QvdGVzdF9idWlsdGluLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVz
dF9lcnJvci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L3Rlc3RfcHlfaW1wb3J0cy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvdGVzdGluZy9yb290L3Rlc3Rfc3RkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVz
dF94bWxnZW4ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvdGVzdGluZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWFlYjk0NGY3NDJjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS90ZXN0aW5nL2NvbmZ0ZXN0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjE1N2QyOWFiN2YyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvQVVUSE9S
UwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvQ0hBTkdFTE9HCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9NQU5JRkVT
VC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvYXBwdmV5b3IueW1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9zZXR1cC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvdG94LmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QtYXN5bmNpby9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZTA2ZDIwODE4NjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qt
YXN5bmNpby9MSUNFTlNFCkBAIC0wLDAgKzEsMjAyIEBACitBcGFjaGUgTGljZW5zZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAg
ICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJN
UyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04K
KworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0
ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlz
dHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1
bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIg
b3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBp
cyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVh
biB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50
aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1v
bgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRo
aXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJl
Y3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1l
bnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lz
ZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRo
ZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hp
cCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBh
biBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9u
cyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBt
ZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBp
bmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVu
dGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAi
T2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNh
bAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwg
aW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUs
IGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVy
IG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRo
b3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZh
aWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJp
Z2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisg
ICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisg
ICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBT
b3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVk
IGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNp
b25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisg
ICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hp
cC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdv
cmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUg
ZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMg
b2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAg
ICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1
ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2Rp
ZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUg
V29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8g
TGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVy
CisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRv
IHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUg
cHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55
IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2Vu
dAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGlu
ZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBt
YWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNz
dWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2Ys
IHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGlt
cHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0
IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBp
biB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4i
CisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2
aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1
dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRs
eSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmln
aHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAg
IHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBl
cnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lh
bHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1
Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXks
IHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAg
V29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4K
KworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFu
ZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVy
ZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNs
dXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2Vw
dCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZl
IG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVy
d2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVz
IG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENv
bnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAg
Q29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1
dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihz
KSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlv
biBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBj
b3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBv
ciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVz
IGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4g
YW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNl
bnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBz
dWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5
IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERl
cml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAg
ICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVk
IHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAg
KGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAg
ICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisg
ICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21p
bmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxl
czsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBv
ZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFs
bCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlv
biBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4
Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YK
KyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUg
V29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAg
ICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0
cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0
cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0Ug
ZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0
YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUK
KyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQg
ZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29y
a3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBp
ZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAg
ICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYg
YW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5
IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBm
b3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2Rp
ZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAg
ICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBh
bG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQg
ZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBh
dHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2Rp
ZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdo
dCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUg
YWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAg
ICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmlj
YXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9s
ZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRp
b24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRp
b25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJp
YnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFu
eSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0
aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUg
dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkg
YWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRo
ZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAg
dGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUg
ZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9u
cy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1p
c3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2Ug
bWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFz
IHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcg
dGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50
IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmli
dXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAg
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24s
IGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklO
R0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRo
ZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBX
b3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVy
Y2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRp
b24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAor
ICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBv
ciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1
Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJs
ZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3Bl
Y2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkg
Y2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBv
dXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVk
aW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAg
ICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55
IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVu
IGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3Np
YmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFk
ZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsg
b3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAg
ICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5
LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29y
IHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4g
YWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlv
dXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVo
YWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3Jl
ZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3Ig
aGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMg
YXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlv
dXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5Lgor
CisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBh
cHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0
aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAg
ICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tl
dHMgInt9IgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1h
dGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91
bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBm
b3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUg
b3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0
aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9y
IGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVz
LgorCisgICBDb3B5cmlnaHQge3l5eXl9IHtuYW1lIG9mIGNvcHlyaWdodCBvd25lcn0KKworICAg
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vUEtH
LUlORk8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYjc2MTFiYzFh
NzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL1BLRy1JTkZPCkBAIC0w
LDAgKzEsMzAyIEBACitNZXRhZGF0YS1WZXJzaW9uOiAyLjEKK05hbWU6IHB5dGVzdC1hc3luY2lv
CitWZXJzaW9uOiAwLjE0LjAKK1N1bW1hcnk6IFB5dGVzdCBzdXBwb3J0IGZvciBhc3luY2lvLgor
SG9tZS1wYWdlOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbwor
QXV0aG9yOiBUaW4gVHZydGtvdmnEhworQXV0aG9yLWVtYWlsOiB0aW5jaGVzdGVyQGdtYWlsLmNv
bQorTGljZW5zZTogQXBhY2hlIDIuMAorRGVzY3JpcHRpb246IHB5dGVzdC1hc3luY2lvOiBweXRl
c3Qgc3VwcG9ydCBmb3IgYXN5bmNpbworICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9p
bWcuc2hpZWxkcy5pby9weXBpL3YvcHl0ZXN0LWFzeW5jaW8uc3ZnCisgICAgICAgICAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dGVzdC1hc3luY2lvCisgICAgICAg
IC4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5j
aW8uc3ZnP2JyYW5jaD1tYXN0ZXIKKyAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlz
LWNpLm9yZy9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvCisgICAgICAgIC4uIGltYWdlOjogaHR0
cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9iYWRnZS5z
dmcKKyAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vY292ZXJhbGxzLmlvL3IvcHl0ZXN0LWRl
di9weXRlc3QtYXN5bmNpbworICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMu
aW8vcHlwaS9weXZlcnNpb25zL3B5dGVzdC1hc3luY2lvLnN2ZworICAgICAgICAgICAgOnRhcmdl
dDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8KKyAgICAgICAg
ICAgIDphbHQ6IFN1cHBvcnRlZCBQeXRob24gdmVyc2lvbnMKKyAgICAgICAgCisgICAgICAgIHB5
dGVzdC1hc3luY2lvIGlzIGFuIEFwYWNoZTIgbGljZW5zZWQgbGlicmFyeSwgd3JpdHRlbiBpbiBQ
eXRob24sIGZvciB0ZXN0aW5nCisgICAgICAgIGFzeW5jaW8gY29kZSB3aXRoIHB5dGVzdC4KKyAg
ICAgICAgCisgICAgICAgIGFzeW5jaW8gY29kZSBpcyB1c3VhbGx5IHdyaXR0ZW4gaW4gdGhlIGZv
cm0gb2YgY29yb3V0aW5lcywgd2hpY2ggbWFrZXMgaXQKKyAgICAgICAgc2xpZ2h0bHkgbW9yZSBk
aWZmaWN1bHQgdG8gdGVzdCB1c2luZyBub3JtYWwgdGVzdGluZyB0b29scy4gcHl0ZXN0LWFzeW5j
aW8KKyAgICAgICAgcHJvdmlkZXMgdXNlZnVsIGZpeHR1cmVzIGFuZCBtYXJrZXJzIHRvIG1ha2Ug
dGVzdGluZyBlYXNpZXIuCisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CisgICAgICAgIAorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmFzeW5jaW8KKyAgICAgICAgICAg
IGFzeW5jIGRlZiB0ZXN0X3NvbWVfYXN5bmNpb19jb2RlKCk6CisgICAgICAgICAgICAgICAgcmVz
ID0gYXdhaXQgbGlicmFyeS5kb19zb21ldGhpbmcoKQorICAgICAgICAgICAgICAgIGFzc2VydCBi
J2V4cGVjdGVkIHJlc3VsdCcgPT0gcmVzCisgICAgICAgIAorICAgICAgICBweXRlc3QtYXN5bmNp
byBoYXMgYmVlbiBzdHJvbmdseSBpbmZsdWVuY2VkIGJ5IHB5dGVzdC10b3JuYWRvXy4KKyAgICAg
ICAgCisgICAgICAgIC4uIF9weXRlc3QtdG9ybmFkbzogaHR0cHM6Ly9naXRodWIuY29tL2V1Z2Vu
aXkvcHl0ZXN0LXRvcm5hZG8KKyAgICAgICAgCisgICAgICAgIEZlYXR1cmVzCisgICAgICAgIC0t
LS0tLS0tCisgICAgICAgIAorICAgICAgICAtIGZpeHR1cmVzIGZvciBjcmVhdGluZyBhbmQgaW5q
ZWN0aW5nIHZlcnNpb25zIG9mIHRoZSBhc3luY2lvIGV2ZW50IGxvb3AKKyAgICAgICAgLSBmaXh0
dXJlcyBmb3IgaW5qZWN0aW5nIHVudXNlZCB0Y3AgcG9ydHMKKyAgICAgICAgLSBweXRlc3QgbWFy
a2VycyBmb3IgdHJlYXRpbmcgdGVzdHMgYXMgYXN5bmNpbyBjb3JvdXRpbmVzCisgICAgICAgIC0g
ZWFzeSB0ZXN0aW5nIHdpdGggbm9uLWRlZmF1bHQgZXZlbnQgbG9vcHMKKyAgICAgICAgLSBzdXBw
b3J0IGZvciBgYXN5bmMgZGVmYCBmaXh0dXJlcyBhbmQgYXN5bmMgZ2VuZXJhdG9yIGZpeHR1cmVz
CisgICAgICAgIAorICAgICAgICBJbnN0YWxsYXRpb24KKyAgICAgICAgLS0tLS0tLS0tLS0tCisg
ICAgICAgIAorICAgICAgICBUbyBpbnN0YWxsIHB5dGVzdC1hc3luY2lvLCBzaW1wbHk6CisgICAg
ICAgIAorICAgICAgICAuLiBjb2RlLWJsb2NrOjogYmFzaAorICAgICAgICAKKyAgICAgICAgICAg
ICQgcGlwIGluc3RhbGwgcHl0ZXN0LWFzeW5jaW8KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMg
ZW5vdWdoIGZvciBweXRlc3QgdG8gcGljayB1cCBweXRlc3QtYXN5bmNpby4KKyAgICAgICAgCisg
ICAgICAgIEZpeHR1cmVzCisgICAgICAgIC0tLS0tLS0tCisgICAgICAgIAorICAgICAgICBgYGV2
ZW50X2xvb3BgYAorICAgICAgICB+fn5+fn5+fn5+fn5+fgorICAgICAgICBDcmVhdGVzIGFuZCBp
bmplY3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGFzeW5jaW8gZXZlbnQgbG9vcC4g
QnkKKyAgICAgICAgZGVmYXVsdCwgdGhlIGxvb3Agd2lsbCBiZSBjbG9zZWQgYXQgdGhlIGVuZCBv
ZiB0aGUgdGVzdCAoaS5lLiB0aGUgZGVmYXVsdAorICAgICAgICBmaXh0dXJlIHNjb3BlIGlzIGBg
ZnVuY3Rpb25gYCkuCisgICAgICAgIAorICAgICAgICBOb3RlIHRoYXQganVzdCB1c2luZyB0aGUg
YGBldmVudF9sb29wYGAgZml4dHVyZSB3b24ndCBtYWtlIHlvdXIgdGVzdCBmdW5jdGlvbgorICAg
ICAgICBhIGNvcm91dGluZS4gWW91J2xsIG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZXZlbnQg
bG9vcCBkaXJlY3RseSwgdXNpbmcgbWV0aG9kcworICAgICAgICBsaWtlIGBgZXZlbnRfbG9vcC5y
dW5fdW50aWxfY29tcGxldGVgYC4gU2VlIHRoZSBgYHB5dGVzdC5tYXJrLmFzeW5jaW9gYCBtYXJr
ZXIKKyAgICAgICAgZm9yIHRyZWF0aW5nIHRlc3QgZnVuY3Rpb25zIGxpa2UgY29yb3V0aW5lcy4K
KyAgICAgICAgCisgICAgICAgIFNpbXBseSB1c2luZyB0aGlzIGZpeHR1cmUgd2lsbCBub3Qgc2V0
IHRoZSBnZW5lcmF0ZWQgZXZlbnQgbG9vcCBhcyB0aGUKKyAgICAgICAgZGVmYXVsdCBhc3luY2lv
IGV2ZW50IGxvb3AsIG9yIGNoYW5nZSB0aGUgYXN5bmNpbyBldmVudCBsb29wIHBvbGljeSBpbiBh
bnkgd2F5LgorICAgICAgICBVc2UgYGBweXRlc3QubWFyay5hc3luY2lvYGAgZm9yIHRoaXMgcHVy
cG9zZS4KKyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKyAgICAgICAg
CisgICAgICAgICAgICBkZWYgdGVzdF9odHRwX2NsaWVudChldmVudF9sb29wKToKKyAgICAgICAg
ICAgICAgICB1cmwgPSAnaHR0cDovL2h0dHBiaW4ub3JnL2dldCcKKyAgICAgICAgICAgICAgICBy
ZXNwID0gZXZlbnRfbG9vcC5ydW5fdW50aWxfY29tcGxldGUoaHR0cF9jbGllbnQodXJsKSkKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgYidIVFRQLzEuMSAyMDAgT0snIGluIHJlc3AKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZml4dHVyZSBjYW4gYmUgZWFzaWx5IG92ZXJyaWRkZW4gaW4gYW55IG9m
IHRoZSBzdGFuZGFyZCBweXRlc3QgbG9jYXRpb25zCisgICAgICAgIChlLmcuIGRpcmVjdGx5IGlu
IHRoZSB0ZXN0IGZpbGUsIG9yIGluIGBgY29uZnRlc3QucHlgYCkgdG8gdXNlIGEgbm9uLWRlZmF1
bHQKKyAgICAgICAgZXZlbnQgbG9vcC4gVGhpcyB3aWxsIHRha2UgZWZmZWN0IGV2ZW4gaWYgeW91
J3JlIHVzaW5nIHRoZQorICAgICAgICBgYHB5dGVzdC5tYXJrLmFzeW5jaW9gYCBtYXJrZXIgYW5k
IG5vdCB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSBkaXJlY3RseS4KKyAgICAgICAgCisgICAg
ICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKyAgICAgICAgCisgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBldmVudF9sb29wKCk6CisgICAgICAgICAgICAgICAg
bG9vcCA9IE15Q3VzdG9tTG9vcCgpCisgICAgICAgICAgICAgICAgeWllbGQgbG9vcAorICAgICAg
ICAgICAgICAgIGxvb3AuY2xvc2UoKQorICAgICAgICAKKyAgICAgICAgSWYgdGhlIGBgcHl0ZXN0
Lm1hcmsuYXN5bmNpb2BgIG1hcmtlciBpcyBhcHBsaWVkLCBhIHB5dGVzdCBob29rIHdpbGwKKyAg
ICAgICAgZW5zdXJlIHRoZSBwcm9kdWNlZCBsb29wIGlzIHNldCBhcyB0aGUgZGVmYXVsdCBnbG9i
YWwgbG9vcC4KKyAgICAgICAgRml4dHVyZXMgZGVwZW5kaW5nIG9uIHRoZSBgYGV2ZW50X2xvb3Bg
YCBmaXh0dXJlIGNhbiBleHBlY3QgdGhlIHBvbGljeSB0byBiZSBwcm9wZXJseSBtb2RpZmllZCB3
aGVuIHRoZXkgcnVuLgorICAgICAgICAKKyAgICAgICAgYGB1bnVzZWRfdGNwX3BvcnRgYAorICAg
ICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIEZpbmRzIGFuZCB5aWVsZHMgYSBzaW5n
bGUgdW51c2VkIFRDUCBwb3J0IG9uIHRoZSBsb2NhbGhvc3QgaW50ZXJmYWNlLiBVc2VmdWwgZm9y
CisgICAgICAgIGJpbmRpbmcgdGVtcG9yYXJ5IHRlc3Qgc2VydmVycy4KKyAgICAgICAgCisgICAg
ICAgIGBgdW51c2VkX3RjcF9wb3J0X2ZhY3RvcnlgYAorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn4KKyAgICAgICAgQSBjYWxsYWJsZSB3aGljaCByZXR1cm5zIGEgZGlmZmVyZW50
IHVudXNlZCBUQ1AgcG9ydCBlYWNoIGludm9jYXRpb24uIFVzZWZ1bAorICAgICAgICB3aGVuIHNl
dmVyYWwgdW51c2VkIFRDUCBwb3J0cyBhcmUgcmVxdWlyZWQgaW4gYSB0ZXN0LgorICAgICAgICAK
KyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorICAgICAgICAKKyAgICAgICAgICAgIGRl
ZiBhX3Rlc3QodW51c2VkX3RjcF9wb3J0X2ZhY3RvcnkpOgorICAgICAgICAgICAgICAgIHBvcnQx
LCBwb3J0MiA9IHVudXNlZF90Y3BfcG9ydF9mYWN0b3J5KCksIHVudXNlZF90Y3BfcG9ydF9mYWN0
b3J5KCkKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgCisgICAgICAgIEFzeW5jIGZpeHR1
cmVzCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIEFzeW5j
aHJvbm91cyBmaXh0dXJlcyBhcmUgZGVmaW5lZCBqdXN0IGxpa2Ugb3JkaW5hcnkgcHl0ZXN0IGZp
eHR1cmVzLCBleGNlcHQgdGhleSBzaG91bGQgYmUgY29yb3V0aW5lcyBvciBhc3luY2hyb25vdXMg
Z2VuZXJhdG9ycy4KKyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24zCisg
ICAgICAgIAorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBhc3luYyBk
ZWYgYXN5bmNfZ2VuX2ZpeHR1cmUoKToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNs
ZWVwKDAuMSkKKyAgICAgICAgICAgICAgICB5aWVsZCAnYSB2YWx1ZScKKyAgICAgICAgCisgICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J21vZHVsZScpCisgICAgICAgICAgICBhc3lu
YyBkZWYgYXN5bmNfZml4dHVyZSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBhc3lu
Y2lvLnNsZWVwKDAuMSkKKyAgICAgICAgCisgICAgICAgIEFsbCBzY29wZXMgYXJlIHN1cHBvcnRl
ZCwgYnV0IGlmIHlvdSB1c2UgYSBub24tZnVuY3Rpb24gc2NvcGUgeW91IHdpbGwgbmVlZAorICAg
ICAgICB0byByZWRlZmluZSB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSB0byBoYXZlIHRoZSBz
YW1lIG9yIGJyb2FkZXIgc2NvcGUuCisgICAgICAgIEFzeW5jIGZpeHR1cmVzIG5lZWQgdGhlIGV2
ZW50IGxvb3AsIGFuZCBzbyBtdXN0IGhhdmUgdGhlIHNhbWUgb3IgbmFycm93ZXIgc2NvcGUKKyAg
ICAgICAgdGhhbiB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZS4KKyAgICAgICAgCisgICAgICAg
IElmIHlvdSB3YW50IHRvIGRvIHRoaXMgd2l0aCBQeXRob24gMy41LCB0aGUgYGB5aWVsZGBgIHN0
YXRlbWVudCBtdXN0IGJlIHJlcGxhY2VkIHdpdGggYGBhd2FpdCB5aWVsZF8oKWBgIGFuZCB0aGUg
Y29yb3V0aW5lCisgICAgICAgIGZ1bmN0aW9uIG11c3QgYmUgZGVjb3JhdGVkIHdpdGggYGBAYXN5
bmNfZ2VuZXJhdG9yYGAsIGxpa2Ugc286CisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uMworICAgICAgICAKKyAgICAgICAgICAgIGZyb20gYXN5bmNfZ2VuZXJhdG9yIGlt
cG9ydCB5aWVsZF8sIGFzeW5jX2dlbmVyYXRvcgorICAgICAgICAKKyAgICAgICAgICAgIEBweXRl
c3QuZml4dHVyZQorICAgICAgICAgICAgQGFzeW5jX2dlbmVyYXRvcgorICAgICAgICAgICAgYXN5
bmMgZGVmIGFzeW5jX2dlbl9maXh0dXJlKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNp
by5zbGVlcCgwLjEpCisgICAgICAgICAgICAgICAgYXdhaXQgeWllbGRfKCdhIHZhbHVlJykKKyAg
ICAgICAgCisgICAgICAgIAorICAgICAgICBNYXJrZXJzCisgICAgICAgIC0tLS0tLS0KKyAgICAg
ICAgCisgICAgICAgIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb2BgCisgICAgICAgIH5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgTWFyayB5b3Vy
IHRlc3QgY29yb3V0aW5lIHdpdGggdGhpcyBtYXJrZXIgYW5kIHB5dGVzdCB3aWxsIGV4ZWN1dGUg
aXQgYXMgYW4KKyAgICAgICAgYXN5bmNpbyB0YXNrIHVzaW5nIHRoZSBldmVudCBsb29wIHByb3Zp
ZGVkIGJ5IHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlLiBTZWUKKyAgICAgICAgdGhlIGludHJv
ZHVjdG9yeSBzZWN0aW9uIGZvciBhbiBleGFtcGxlLgorICAgICAgICAKKyAgICAgICAgVGhlIGV2
ZW50IGxvb3AgdXNlZCBjYW4gYmUgb3ZlcnJpZGVuIGJ5IG92ZXJyaWRpbmcgdGhlIGBgZXZlbnRf
bG9vcGBgIGZpeHR1cmUKKyAgICAgICAgKHNlZSBhYm92ZSkuCisgICAgICAgIAorICAgICAgICBJ
biBvcmRlciB0byBtYWtlIHlvdXIgdGVzdCBjb2RlIGEgbGl0dGxlIG1vcmUgY29uY2lzZSwgdGhl
IHB5dGVzdCB8cHl0ZXN0bWFya3xfCisgICAgICAgIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gbWFy
ayBlbnRpcmUgbW9kdWxlcyBvciBjbGFzc2VzIHdpdGggdGhpcyBtYXJrZXIuCisgICAgICAgIE9u
bHkgdGVzdCBjb3JvdXRpbmVzIHdpbGwgYmUgYWZmZWN0ZWQgKGJ5IGRlZmF1bHQsIGNvcm91dGlu
ZXMgcHJlZml4ZWQgYnkKKyAgICAgICAgYGB0ZXN0X2BgKSwgc28sIGZvciBleGFtcGxlLCBmaXh0
dXJlcyBhcmUgc2FmZSB0byBkZWZpbmUuCisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCisgICAgICAgIAorICAgICAgICAgICAgaW1wb3J0IGFzeW5jaW8KKyAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgCisgICAgICAgICAgICAjIEFsbCB0ZXN0IGNvcm91
dGluZXMgd2lsbCBiZSB0cmVhdGVkIGFzIG1hcmtlZC4KKyAgICAgICAgICAgIHB5dGVzdG1hcmsg
PSBweXRlc3QubWFyay5hc3luY2lvCisgICAgICAgIAorICAgICAgICAgICAgYXN5bmMgZGVmIHRl
c3RfZXhhbXBsZShldmVudF9sb29wKToKKyAgICAgICAgICAgICAgICAiIiJObyBtYXJrZXIhIiIi
CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLCBsb29wPWV2ZW50X2xvb3Ap
CisgICAgICAgIAorICAgICAgICAuLiB8cHl0ZXN0bWFya3wgcmVwbGFjZTo6IGBgcHl0ZXN0bWFy
a2BgCisgICAgICAgIC4uIF9weXRlc3RtYXJrOiBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0
ZXN0L2V4YW1wbGUvbWFya2Vycy5odG1sI21hcmtpbmctd2hvbGUtY2xhc3Nlcy1vci1tb2R1bGVz
CisgICAgICAgIAorICAgICAgICBDaGFuZ2Vsb2cKKyAgICAgICAgLS0tLS0tLS0tCisgICAgICAg
IDAuMTMuMCAoMjAyMC0wNi0yNCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAg
ICAtIEZpeCBgIzE2MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5j
aW8vaXNzdWVzLzE2Mj5gXywgYW5kIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgYmVoYXZpb3Igbm93
IGlzIGNvaGVyZW50IG9uIGFsbCBzY29wZXMuCisgICAgICAgICAgYCMxNjQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTY0PmBfCisgICAgICAgIAor
ICAgICAgICAwLjEyLjAgKDIwMjAtMDUtMDQpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn4K
KyAgICAgICAgLSBSdW4gdGhlIGV2ZW50IGxvb3AgZml4dHVyZSBhcyBzb29uIGFzIHBvc3NpYmxl
LiBUaGlzIGhlbHBzIHdpdGggZml4dHVyZXMgdGhhdCBoYXZlIGFuIGltcGxpY2l0IGRlcGVuZGVu
Y3kgb24gdGhlIGV2ZW50IGxvb3AuCisgICAgICAgICAgYCMxNTYgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTU2PmBfCisgICAgICAgIAorICAgICAg
ICAwLjExLjAgKDIwMjAtMDQtMjApCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAg
ICAgLSBUZXN0IG9uIDMuOCwgZHJvcCAzLjMgYW5kIDMuNC4gU3RpY2sgdG8gMC4xMCBmb3IgdGhl
c2UgdmVyc2lvbnMuCisgICAgICAgICAgYCMxNTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTUyPmBfCisgICAgICAgIC0gVXNlIHRoZSBuZXcgUHl0
ZXN0IDUuNC4wIEZ1bmN0aW9uIEFQSS4gV2UgdGhlcmVmb3JlIGRlcGVuZCBvbiBweXRlc3QgPj0g
NS40LjAuCisgICAgICAgICAgYCMxNDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC1hc3luY2lvL3B1bGwvMTQyPmBfCisgICAgICAgIC0gQmV0dGVyIGBgcHl0ZXN0LnNraXBg
YCBzdXBwb3J0LgorICAgICAgICAgIGAjMTI2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QtYXN5bmNpby9wdWxsLzEyNj5gXworICAgICAgICAKKyAgICAgICAgMC4xMC4wICgy
MDE5LTAxLTA4KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIGBgcHl0
ZXN0LWFzeW5jaW9gYCBpbnRlZ3JhdGVzIHdpdGggYEh5cG90aGVzaXMgPGh0dHBzOi8vaHlwb3Ro
ZXNpcy5yZWFkdGhlZG9jcy5pbz5gXworICAgICAgICAgIHRvIHN1cHBvcnQgYGBAZ2l2ZW5gYCBv
biBhc3luYyB0ZXN0IGZ1bmN0aW9ucyB1c2luZyBgYGFzeW5jaW9gYC4KKyAgICAgICAgICBgIzEw
MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xMDI+
YF8KKyAgICAgICAgLSBQeXRlc3QgNC4xIHN1cHBvcnQuCisgICAgICAgICAgYCMxMDUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTA1PmBfCisgICAg
ICAgIAorICAgICAgICAwLjkuMCAoMjAxOC0wNy0yOCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+
fn5+CisgICAgICAgIC0gUHl0aG9uIDMuNyBzdXBwb3J0LgorICAgICAgICAtIFJlbW92ZSBgYGV2
ZW50X2xvb3BfcHJvY2Vzc19wb29sYGAgZml4dHVyZSBhbmQKKyAgICAgICAgICBgYHB5dGVzdC5t
YXJrLmFzeW5jaW9fcHJvY2Vzc19wb29sYGAgbWFya2VyIChzZWUKKyAgICAgICAgICBodHRwczov
L2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0MDc1IGZvciBkZXByZWNhdGlvbiBhbmQgcmVtb3ZhbCBk
ZXRhaWxzKQorICAgICAgICAKKyAgICAgICAgMC44LjAgKDIwMTctMDktMjMpCisgICAgICAgIH5+
fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIEltcHJvdmUgaW50ZWdyYXRpb24gd2l0aCBvdGhl
ciBwYWNrYWdlcyAobGlrZSBhaW9odHRwKSB3aXRoIG1vcmUgY2FyZWZ1bCBldmVudCBsb29wIGhh
bmRsaW5nLgorICAgICAgICAgIGAjNjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC1hc3luY2lvL3B1bGwvNjQ+YF8KKyAgICAgICAgCisgICAgICAgIDAuNy4wICgyMDE3LTA5
LTA4KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBQeXRob24gdmVyc2lv
bnMgcHJlLTMuNiBjYW4gdXNlIHRoZSBhc3luY19nZW5lcmF0b3IgbGlicmFyeSBmb3IgYXN5bmMg
Zml4dHVyZXMuCisgICAgICAgICAgYCM2MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0LWFzeW5jaW8vcHVsbC82Mj5gCisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgMC42
LjAgKDIwMTctMDUtMjgpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIFN1
cHBvcnQgZm9yIFB5dGhvbiB2ZXJzaW9ucyBwcmUtMy41IGhhcyBiZWVuIGRyb3BwZWQuCisgICAg
ICAgIC0gYGBweXRlc3RtYXJrYGAgbm93IHdvcmtzIG9uIGJvdGggbW9kdWxlIGFuZCBjbGFzcyBs
ZXZlbC4KKyAgICAgICAgLSBUaGUgYGBmb3JiaWRfZ2xvYmFsX2xvb3BgYCBwYXJhbWV0ZXIgaGFz
IGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgLSBTdXBwb3J0IGZvciBhc3luYyBhbmQgYXN5bmMgZ2Vu
IGZpeHR1cmVzIGhhcyBiZWVuIGFkZGVkLgorICAgICAgICAgIGAjNDUgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvNDU+YF8KKyAgICAgICAgLSBUaGUg
ZGVwcmVjYXRpb24gd2FybmluZyByZWdhcmRpbmcgYGBhc3luY2lvLmFzeW5jKClgYCBoYXMgYmVl
biBmaXhlZC4KKyAgICAgICAgICBgIzUxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QtYXN5bmNpby9wdWxsLzUxPmBfCisgICAgICAgIAorICAgICAgICAwLjUuMCAoMjAxNi0w
OS0wNykKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0gSW50cm9kdWNlZCBh
IGNoYW5nZWxvZy4KKyAgICAgICAgICBgIzMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMzE+YF8KKyAgICAgICAgLSBUaGUgYGBldmVudF9sb29w
YGAgZml4dHVyZSBpcyBhZ2FpbiByZXNwb25zaWJsZSBmb3IgY2xvc2luZyBpdHNlbGYuCisgICAg
ICAgICAgVGhpcyBtYWtlcyB0aGUgZml4dHVyZSBzbGlnaHRseSBoYXJkZXIgdG8gY29ycmVjdGx5
IG92ZXJyaWRlLCBidXQgZW5hYmxlcworICAgICAgICAgIG90aGVyIGZpeHR1cmVzIHRvIGRlcGVu
ZCBvbiBpdCBjb3JyZWN0bHkuCisgICAgICAgICAgYCMzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzMwPmBfCisgICAgICAgIC0gRGVhbCB3aXRo
IHRoZSBldmVudCBsb29wIHBvbGljeSBieSB3cmFwcGluZyBhIHNwZWNpYWwgcHl0ZXN0IGhvb2ss
CisgICAgICAgICAgYGBweXRlc3RfZml4dHVyZV9zZXR1cGBgLiBUaGlzIGFsbG93cyBzZXR0aW5n
IHRoZSBwb2xpY3kgYmVmb3JlIGZpeHR1cmVzCisgICAgICAgICAgZGVwZW5kZW50IG9uIHRoZSBg
YGV2ZW50X2xvb3BgYCBmaXh0dXJlIHJ1biwgdGh1cyBhbGxvd2luZyB0aGVtIHRvIHRha2UKKyAg
ICAgICAgICBhZHZhbnRhZ2Ugb2YgdGhlIGBgZm9yYmlkX2dsb2JhbF9sb29wYGAgcGFyYW1ldGVy
LiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMsCisgICAgICAgICAgd2Ugbm93IGRlcGVuZCBvbiBw
eXRlc3QgMy4wLgorICAgICAgICAgIGAjMjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8yOT5gXworICAgICAgICAKKyAgICAgICAgCisgICAgICAg
IDAuNC4xICgyMDE2LTA2LTAxKQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAg
LSBGaXggYSBidWcgcHJldmVudGluZyB0aGUgcHJvcGFnYXRpb24gb2YgZXhjZXB0aW9ucyBmcm9t
IHRoZSBwbHVnaW4uCisgICAgICAgICAgYCMyNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzI1PmBfCisgICAgICAgIAorICAgICAgICAwLjQuMCAo
MjAxNi0wNS0zMCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0gTWFrZSBg
YGV2ZW50X2xvb3BgYCBmaXh0dXJlcyBzaW1wbGVyIHRvIG92ZXJyaWRlIGJ5IGNsb3NpbmcgdGhl
bSBpbiB0aGUKKyAgICAgICAgICBwbHVnaW4sIGluc3RlYWQgb2YgZGlyZWN0bHkgaW4gdGhlIGZp
eHR1cmUuCisgICAgICAgICAgYCMyMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0LWFzeW5jaW8vcHVsbC8yMT5gXworICAgICAgICAtIEludHJvZHVjZSB0aGUgYGBmb3JiaWRf
Z2xvYmFsX2xvb3BgYCBwYXJhbWV0ZXIuCisgICAgICAgICAgYCMyMSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8yMT5gXworICAgICAgICAKKyAgICAg
ICAgMC4zLjAgKDIwMTUtMTItMTkpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAg
ICAtIFN1cHBvcnQgZm9yIFB5dGhvbiAzLjUgYGBhc3luY2BgL2BgYXdhaXRgYCBzeW50YXguCisg
ICAgICAgICAgYCMxNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5j
aW8vcHVsbC8xNz5gXworICAgICAgICAKKyAgICAgICAgMC4yLjAgKDIwMTUtMDgtMDEpCisgICAg
ICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIGBgdW51c2VkX3RjcF9wb3J0X2ZhY3Rv
cnlgYCBmaXh0dXJlLgorICAgICAgICAgIGAjMTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8xMD5gXworICAgICAgICAKKyAgICAgICAgCisgICAg
ICAgIDAuMS4xICgyMDE1LTA0LTIzKQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAg
ICAgSW5pdGlhbCByZWxlYXNlLgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIENvbnRyaWJ1
dGluZworICAgICAgICAtLS0tLS0tLS0tLS0KKyAgICAgICAgQ29udHJpYnV0aW9ucyBhcmUgdmVy
eSB3ZWxjb21lLiBUZXN0cyBjYW4gYmUgcnVuIHdpdGggYGB0b3hgYCwgcGxlYXNlIGVuc3VyZQor
ICAgICAgICB0aGUgY292ZXJhZ2UgYXQgbGVhc3Qgc3RheXMgdGhlIHNhbWUgYmVmb3JlIHlvdSBz
dWJtaXQgYSBwdWxsIHJlcXVlc3QuCisgICAgICAgIAorUGxhdGZvcm06IFVOS05PV04KK0NsYXNz
aWZpZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA0IC0gQmV0YQorQ2xhc3NpZmllcjogSW50ZW5k
ZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycworQ2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBw
cm92ZWQgOjogQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5n
IExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjUKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1
YWdlIDo6IFB5dGhvbiA6OiAzLjYKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6
IFB5dGhvbiA6OiAzLjcKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzLjgKK0NsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IFRl
c3RpbmcKK0NsYXNzaWZpZXI6IEZyYW1ld29yayA6OiBQeXRlc3QKK1JlcXVpcmVzLVB5dGhvbjog
Pj0gMy41CitQcm92aWRlcy1FeHRyYTogdGVzdGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qt
YXN5bmNpby9SRUFETUUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9SRUFETUUucnN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmVhNjAxNGNjZTRkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9SRUFETUUucnN0CkBAIC0wLDAgKzEsMjgx
IEBACitweXRlc3QtYXN5bmNpbzogcHl0ZXN0IHN1cHBvcnQgZm9yIGFzeW5jaW8KKz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBpbWFnZTo6IGh0dHBzOi8v
aW1nLnNoaWVsZHMuaW8vcHlwaS92L3B5dGVzdC1hc3luY2lvLnN2ZworICAgIDp0YXJnZXQ6IGh0
dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ZXN0LWFzeW5jaW8KKy4uIGltYWdlOjogaHR0
cHM6Ly90cmF2aXMtY2kub3JnL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8uc3ZnP2JyYW5jaD1t
YXN0ZXIKKyAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvcHl0ZXN0LWRldi9weXRl
c3QtYXN5bmNpbworLi4gaW1hZ2U6OiBodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9weXRlc3Qt
ZGV2L3B5dGVzdC1hc3luY2lvL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vY292ZXJh
bGxzLmlvL3IvcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbworLi4gaW1hZ2U6OiBodHRwczovL2lt
Zy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9weXRlc3QtYXN5bmNpby5zdmcKKyAgICA6dGFy
Z2V0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbworICAgIDph
bHQ6IFN1cHBvcnRlZCBQeXRob24gdmVyc2lvbnMKKworcHl0ZXN0LWFzeW5jaW8gaXMgYW4gQXBh
Y2hlMiBsaWNlbnNlZCBsaWJyYXJ5LCB3cml0dGVuIGluIFB5dGhvbiwgZm9yIHRlc3RpbmcKK2Fz
eW5jaW8gY29kZSB3aXRoIHB5dGVzdC4KKworYXN5bmNpbyBjb2RlIGlzIHVzdWFsbHkgd3JpdHRl
biBpbiB0aGUgZm9ybSBvZiBjb3JvdXRpbmVzLCB3aGljaCBtYWtlcyBpdAorc2xpZ2h0bHkgbW9y
ZSBkaWZmaWN1bHQgdG8gdGVzdCB1c2luZyBub3JtYWwgdGVzdGluZyB0b29scy4gcHl0ZXN0LWFz
eW5jaW8KK3Byb3ZpZGVzIHVzZWZ1bCBmaXh0dXJlcyBhbmQgbWFya2VycyB0byBtYWtlIHRlc3Rp
bmcgZWFzaWVyLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0Lm1hcmsu
YXN5bmNpbworICAgIGFzeW5jIGRlZiB0ZXN0X3NvbWVfYXN5bmNpb19jb2RlKCk6CisgICAgICAg
IHJlcyA9IGF3YWl0IGxpYnJhcnkuZG9fc29tZXRoaW5nKCkKKyAgICAgICAgYXNzZXJ0IGInZXhw
ZWN0ZWQgcmVzdWx0JyA9PSByZXMKKworcHl0ZXN0LWFzeW5jaW8gaGFzIGJlZW4gc3Ryb25nbHkg
aW5mbHVlbmNlZCBieSBweXRlc3QtdG9ybmFkb18uCisKKy4uIF9weXRlc3QtdG9ybmFkbzogaHR0
cHM6Ly9naXRodWIuY29tL2V1Z2VuaXkvcHl0ZXN0LXRvcm5hZG8KKworRmVhdHVyZXMKKy0tLS0t
LS0tCisKKy0gZml4dHVyZXMgZm9yIGNyZWF0aW5nIGFuZCBpbmplY3RpbmcgdmVyc2lvbnMgb2Yg
dGhlIGFzeW5jaW8gZXZlbnQgbG9vcAorLSBmaXh0dXJlcyBmb3IgaW5qZWN0aW5nIHVudXNlZCB0
Y3AgcG9ydHMKKy0gcHl0ZXN0IG1hcmtlcnMgZm9yIHRyZWF0aW5nIHRlc3RzIGFzIGFzeW5jaW8g
Y29yb3V0aW5lcworLSBlYXN5IHRlc3Rpbmcgd2l0aCBub24tZGVmYXVsdCBldmVudCBsb29wcwor
LSBzdXBwb3J0IGZvciBgYXN5bmMgZGVmYCBmaXh0dXJlcyBhbmQgYXN5bmMgZ2VuZXJhdG9yIGZp
eHR1cmVzCisKK0luc3RhbGxhdGlvbgorLS0tLS0tLS0tLS0tCisKK1RvIGluc3RhbGwgcHl0ZXN0
LWFzeW5jaW8sIHNpbXBseToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgICQgcGlwIGlu
c3RhbGwgcHl0ZXN0LWFzeW5jaW8KKworVGhpcyBpcyBlbm91Z2ggZm9yIHB5dGVzdCB0byBwaWNr
IHVwIHB5dGVzdC1hc3luY2lvLgorCitGaXh0dXJlcworLS0tLS0tLS0KKworYGBldmVudF9sb29w
YGAKK35+fn5+fn5+fn5+fn5+CitDcmVhdGVzIGFuZCBpbmplY3RzIGEgbmV3IGluc3RhbmNlIG9m
IHRoZSBkZWZhdWx0IGFzeW5jaW8gZXZlbnQgbG9vcC4gQnkKK2RlZmF1bHQsIHRoZSBsb29wIHdp
bGwgYmUgY2xvc2VkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgKGkuZS4gdGhlIGRlZmF1bHQKK2Zp
eHR1cmUgc2NvcGUgaXMgYGBmdW5jdGlvbmBgKS4KKworTm90ZSB0aGF0IGp1c3QgdXNpbmcgdGhl
IGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgd29uJ3QgbWFrZSB5b3VyIHRlc3QgZnVuY3Rpb24KK2Eg
Y29yb3V0aW5lLiBZb3UnbGwgbmVlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBldmVudCBsb29wIGRp
cmVjdGx5LCB1c2luZyBtZXRob2RzCitsaWtlIGBgZXZlbnRfbG9vcC5ydW5fdW50aWxfY29tcGxl
dGVgYC4gU2VlIHRoZSBgYHB5dGVzdC5tYXJrLmFzeW5jaW9gYCBtYXJrZXIKK2ZvciB0cmVhdGlu
ZyB0ZXN0IGZ1bmN0aW9ucyBsaWtlIGNvcm91dGluZXMuCisKK1NpbXBseSB1c2luZyB0aGlzIGZp
eHR1cmUgd2lsbCBub3Qgc2V0IHRoZSBnZW5lcmF0ZWQgZXZlbnQgbG9vcCBhcyB0aGUKK2RlZmF1
bHQgYXN5bmNpbyBldmVudCBsb29wLCBvciBjaGFuZ2UgdGhlIGFzeW5jaW8gZXZlbnQgbG9vcCBw
b2xpY3kgaW4gYW55IHdheS4KK1VzZSBgYHB5dGVzdC5tYXJrLmFzeW5jaW9gYCBmb3IgdGhpcyBw
dXJwb3NlLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgdGVzdF9odHRwX2Ns
aWVudChldmVudF9sb29wKToKKyAgICAgICAgdXJsID0gJ2h0dHA6Ly9odHRwYmluLm9yZy9nZXQn
CisgICAgICAgIHJlc3AgPSBldmVudF9sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShodHRwX2NsaWVu
dCh1cmwpKQorICAgICAgICBhc3NlcnQgYidIVFRQLzEuMSAyMDAgT0snIGluIHJlc3AKKworVGhp
cyBmaXh0dXJlIGNhbiBiZSBlYXNpbHkgb3ZlcnJpZGRlbiBpbiBhbnkgb2YgdGhlIHN0YW5kYXJk
IHB5dGVzdCBsb2NhdGlvbnMKKyhlLmcuIGRpcmVjdGx5IGluIHRoZSB0ZXN0IGZpbGUsIG9yIGlu
IGBgY29uZnRlc3QucHlgYCkgdG8gdXNlIGEgbm9uLWRlZmF1bHQKK2V2ZW50IGxvb3AuIFRoaXMg
d2lsbCB0YWtlIGVmZmVjdCBldmVuIGlmIHlvdSdyZSB1c2luZyB0aGUKK2BgcHl0ZXN0Lm1hcmsu
YXN5bmNpb2BgIG1hcmtlciBhbmQgbm90IHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIGRpcmVj
dGx5LgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICBkZWYgZXZlbnRfbG9vcCgpOgorICAgICAgICBsb29wID0gTXlDdXN0b21Mb29wKCkKKyAgICAg
ICAgeWllbGQgbG9vcAorICAgICAgICBsb29wLmNsb3NlKCkKKworSWYgdGhlIGBgcHl0ZXN0Lm1h
cmsuYXN5bmNpb2BgIG1hcmtlciBpcyBhcHBsaWVkLCBhIHB5dGVzdCBob29rIHdpbGwKK2Vuc3Vy
ZSB0aGUgcHJvZHVjZWQgbG9vcCBpcyBzZXQgYXMgdGhlIGRlZmF1bHQgZ2xvYmFsIGxvb3AuCitG
aXh0dXJlcyBkZXBlbmRpbmcgb24gdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgY2FuIGV4cGVj
dCB0aGUgcG9saWN5IHRvIGJlIHByb3Blcmx5IG1vZGlmaWVkIHdoZW4gdGhleSBydW4uCisKK2Bg
dW51c2VkX3RjcF9wb3J0YGAKK35+fn5+fn5+fn5+fn5+fn5+fn4KK0ZpbmRzIGFuZCB5aWVsZHMg
YSBzaW5nbGUgdW51c2VkIFRDUCBwb3J0IG9uIHRoZSBsb2NhbGhvc3QgaW50ZXJmYWNlLiBVc2Vm
dWwgZm9yCitiaW5kaW5nIHRlbXBvcmFyeSB0ZXN0IHNlcnZlcnMuCisKK2BgdW51c2VkX3RjcF9w
b3J0X2ZhY3RvcnlgYAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitBIGNhbGxhYmxlIHdo
aWNoIHJldHVybnMgYSBkaWZmZXJlbnQgdW51c2VkIFRDUCBwb3J0IGVhY2ggaW52b2NhdGlvbi4g
VXNlZnVsCit3aGVuIHNldmVyYWwgdW51c2VkIFRDUCBwb3J0cyBhcmUgcmVxdWlyZWQgaW4gYSB0
ZXN0LgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgYV90ZXN0KHVudXNlZF90
Y3BfcG9ydF9mYWN0b3J5KToKKyAgICAgICAgcG9ydDEsIHBvcnQyID0gdW51c2VkX3RjcF9wb3J0
X2ZhY3RvcnkoKSwgdW51c2VkX3RjcF9wb3J0X2ZhY3RvcnkoKQorICAgICAgICAuLi4KKworQXN5
bmMgZml4dHVyZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitBc3luY2hyb25vdXMg
Zml4dHVyZXMgYXJlIGRlZmluZWQganVzdCBsaWtlIG9yZGluYXJ5IHB5dGVzdCBmaXh0dXJlcywg
ZXhjZXB0IHRoZXkgc2hvdWxkIGJlIGNvcm91dGluZXMgb3IgYXN5bmNocm9ub3VzIGdlbmVyYXRv
cnMuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24zCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICBhc3luYyBkZWYgYXN5bmNfZ2VuX2ZpeHR1cmUoKToKKyAgICAgICAgYXdhaXQgYXN5bmNpby5z
bGVlcCgwLjEpCisgICAgICAgIHlpZWxkICdhIHZhbHVlJworCisgICAgQHB5dGVzdC5maXh0dXJl
KHNjb3BlPSdtb2R1bGUnKQorICAgIGFzeW5jIGRlZiBhc3luY19maXh0dXJlKCk6CisgICAgICAg
IHJldHVybiBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSkKKworQWxsIHNjb3BlcyBhcmUgc3VwcG9y
dGVkLCBidXQgaWYgeW91IHVzZSBhIG5vbi1mdW5jdGlvbiBzY29wZSB5b3Ugd2lsbCBuZWVkCit0
byByZWRlZmluZSB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSB0byBoYXZlIHRoZSBzYW1lIG9y
IGJyb2FkZXIgc2NvcGUuCitBc3luYyBmaXh0dXJlcyBuZWVkIHRoZSBldmVudCBsb29wLCBhbmQg
c28gbXVzdCBoYXZlIHRoZSBzYW1lIG9yIG5hcnJvd2VyIHNjb3BlCit0aGFuIHRoZSBgYGV2ZW50
X2xvb3BgYCBmaXh0dXJlLgorCitJZiB5b3Ugd2FudCB0byBkbyB0aGlzIHdpdGggUHl0aG9uIDMu
NSwgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGBgYXdhaXQg
eWllbGRfKClgYCBhbmQgdGhlIGNvcm91dGluZQorZnVuY3Rpb24gbXVzdCBiZSBkZWNvcmF0ZWQg
d2l0aCBgYEBhc3luY19nZW5lcmF0b3JgYCwgbGlrZSBzbzoKKworLi4gY29kZS1ibG9jazo6IHB5
dGhvbjMKKworICAgIGZyb20gYXN5bmNfZ2VuZXJhdG9yIGltcG9ydCB5aWVsZF8sIGFzeW5jX2dl
bmVyYXRvcgorCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgQGFzeW5jX2dlbmVyYXRvcgorICAg
IGFzeW5jIGRlZiBhc3luY19nZW5fZml4dHVyZSgpOgorICAgICAgICBhd2FpdCBhc3luY2lvLnNs
ZWVwKDAuMSkKKyAgICAgICAgYXdhaXQgeWllbGRfKCdhIHZhbHVlJykKKworCitNYXJrZXJzCist
LS0tLS0tCisKK2BgcHl0ZXN0Lm1hcmsuYXN5bmNpb2BgCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitNYXJrIHlvdXIgdGVzdCBjb3JvdXRpbmUgd2l0
aCB0aGlzIG1hcmtlciBhbmQgcHl0ZXN0IHdpbGwgZXhlY3V0ZSBpdCBhcyBhbgorYXN5bmNpbyB0
YXNrIHVzaW5nIHRoZSBldmVudCBsb29wIHByb3ZpZGVkIGJ5IHRoZSBgYGV2ZW50X2xvb3BgYCBm
aXh0dXJlLiBTZWUKK3RoZSBpbnRyb2R1Y3Rvcnkgc2VjdGlvbiBmb3IgYW4gZXhhbXBsZS4KKwor
VGhlIGV2ZW50IGxvb3AgdXNlZCBjYW4gYmUgb3ZlcnJpZGVuIGJ5IG92ZXJyaWRpbmcgdGhlIGBg
ZXZlbnRfbG9vcGBgIGZpeHR1cmUKKyhzZWUgYWJvdmUpLgorCitJbiBvcmRlciB0byBtYWtlIHlv
dXIgdGVzdCBjb2RlIGEgbGl0dGxlIG1vcmUgY29uY2lzZSwgdGhlIHB5dGVzdCB8cHl0ZXN0bWFy
a3xfCitmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIG1hcmsgZW50aXJlIG1vZHVsZXMgb3IgY2xhc3Nl
cyB3aXRoIHRoaXMgbWFya2VyLgorT25seSB0ZXN0IGNvcm91dGluZXMgd2lsbCBiZSBhZmZlY3Rl
ZCAoYnkgZGVmYXVsdCwgY29yb3V0aW5lcyBwcmVmaXhlZCBieQorYGB0ZXN0X2BgKSwgc28sIGZv
ciBleGFtcGxlLCBmaXh0dXJlcyBhcmUgc2FmZSB0byBkZWZpbmUuCisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KKworICAgIGltcG9ydCBhc3luY2lvCisgICAgaW1wb3J0IHB5dGVzdAorCisgICAg
IyBBbGwgdGVzdCBjb3JvdXRpbmVzIHdpbGwgYmUgdHJlYXRlZCBhcyBtYXJrZWQuCisgICAgcHl0
ZXN0bWFyayA9IHB5dGVzdC5tYXJrLmFzeW5jaW8KKworICAgIGFzeW5jIGRlZiB0ZXN0X2V4YW1w
bGUoZXZlbnRfbG9vcCk6CisgICAgICAgICIiIk5vIG1hcmtlciEiIiIKKyAgICAgICAgYXdhaXQg
YXN5bmNpby5zbGVlcCgwLCBsb29wPWV2ZW50X2xvb3ApCisKKy4uIHxweXRlc3RtYXJrfCByZXBs
YWNlOjogYGBweXRlc3RtYXJrYGAKKy4uIF9weXRlc3RtYXJrOiBodHRwOi8vZG9jLnB5dGVzdC5v
cmcvZW4vbGF0ZXN0L2V4YW1wbGUvbWFya2Vycy5odG1sI21hcmtpbmctd2hvbGUtY2xhc3Nlcy1v
ci1tb2R1bGVzCisKK0NoYW5nZWxvZworLS0tLS0tLS0tCiswLjEzLjAgKDIwMjAtMDYtMjQpCit+
fn5+fn5+fn5+fn5+fn5+fn5+CistIEZpeCBgIzE2MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzE2Mj5gXywgYW5kIGBgZXZlbnRfbG9vcGBgIGZp
eHR1cmUgYmVoYXZpb3Igbm93IGlzIGNvaGVyZW50IG9uIGFsbCBzY29wZXMuCisgIGAjMTY0IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzE2ND5gXwor
CiswLjEyLjAgKDIwMjAtMDUtMDQpCit+fn5+fn5+fn5+fn5+fn5+fn5+CistIFJ1biB0aGUgZXZl
bnQgbG9vcCBmaXh0dXJlIGFzIHNvb24gYXMgcG9zc2libGUuIFRoaXMgaGVscHMgd2l0aCBmaXh0
dXJlcyB0aGF0IGhhdmUgYW4gaW1wbGljaXQgZGVwZW5kZW5jeSBvbiB0aGUgZXZlbnQgbG9vcC4K
KyAgYCMxNTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1
bGwvMTU2PmBfCisKKzAuMTEuMCAoMjAyMC0wNC0yMCkKK35+fn5+fn5+fn5+fn5+fn5+fn4KKy0g
VGVzdCBvbiAzLjgsIGRyb3AgMy4zIGFuZCAzLjQuIFN0aWNrIHRvIDAuMTAgZm9yIHRoZXNlIHZl
cnNpb25zLgorICBgIzE1MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFz
eW5jaW8vcHVsbC8xNTI+YF8KKy0gVXNlIHRoZSBuZXcgUHl0ZXN0IDUuNC4wIEZ1bmN0aW9uIEFQ
SS4gV2UgdGhlcmVmb3JlIGRlcGVuZCBvbiBweXRlc3QgPj0gNS40LjAuCisgIGAjMTQyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzE0Mj5gXworLSBC
ZXR0ZXIgYGBweXRlc3Quc2tpcGBgIHN1cHBvcnQuCisgIGAjMTI2IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzEyNj5gXworCiswLjEwLjAgKDIwMTkt
MDEtMDgpCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorLSBgYHB5dGVzdC1hc3luY2lvYGAgaW50ZWdy
YXRlcyB3aXRoIGBIeXBvdGhlc2lzIDxodHRwczovL2h5cG90aGVzaXMucmVhZHRoZWRvY3MuaW8+
YF8KKyAgdG8gc3VwcG9ydCBgYEBnaXZlbmBgIG9uIGFzeW5jIHRlc3QgZnVuY3Rpb25zIHVzaW5n
IGBgYXN5bmNpb2BgLgorICBgIzEwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0LWFzeW5jaW8vcHVsbC8xMDI+YF8KKy0gUHl0ZXN0IDQuMSBzdXBwb3J0LgorICBgIzEwNSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xMDU+YF8K
KworMC45LjAgKDIwMTgtMDctMjgpCit+fn5+fn5+fn5+fn5+fn5+fn4KKy0gUHl0aG9uIDMuNyBz
dXBwb3J0LgorLSBSZW1vdmUgYGBldmVudF9sb29wX3Byb2Nlc3NfcG9vbGBgIGZpeHR1cmUgYW5k
CisgIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb19wcm9jZXNzX3Bvb2xgYCBtYXJrZXIgKHNlZQorICBo
dHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0MDc1IGZvciBkZXByZWNhdGlvbiBhbmQgcmVt
b3ZhbCBkZXRhaWxzKQorCiswLjguMCAoMjAxNy0wOS0yMykKK35+fn5+fn5+fn5+fn5+fn5+fgor
LSBJbXByb3ZlIGludGVncmF0aW9uIHdpdGggb3RoZXIgcGFja2FnZXMgKGxpa2UgYWlvaHR0cCkg
d2l0aCBtb3JlIGNhcmVmdWwgZXZlbnQgbG9vcCBoYW5kbGluZy4KKyAgYCM2NCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC82ND5gXworCiswLjcuMCAo
MjAxNy0wOS0wOCkKK35+fn5+fn5+fn5+fn5+fn5+fgorLSBQeXRob24gdmVyc2lvbnMgcHJlLTMu
NiBjYW4gdXNlIHRoZSBhc3luY19nZW5lcmF0b3IgbGlicmFyeSBmb3IgYXN5bmMgZml4dHVyZXMu
CisgIGAjNjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1
bGwvNjI+YAorCisKKzAuNi4wICgyMDE3LTA1LTI4KQorfn5+fn5+fn5+fn5+fn5+fn5+CistIFN1
cHBvcnQgZm9yIFB5dGhvbiB2ZXJzaW9ucyBwcmUtMy41IGhhcyBiZWVuIGRyb3BwZWQuCistIGBg
cHl0ZXN0bWFya2BgIG5vdyB3b3JrcyBvbiBib3RoIG1vZHVsZSBhbmQgY2xhc3MgbGV2ZWwuCist
IFRoZSBgYGZvcmJpZF9nbG9iYWxfbG9vcGBgIHBhcmFtZXRlciBoYXMgYmVlbiByZW1vdmVkLgor
LSBTdXBwb3J0IGZvciBhc3luYyBhbmQgYXN5bmMgZ2VuIGZpeHR1cmVzIGhhcyBiZWVuIGFkZGVk
LgorICBgIzQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9w
dWxsLzQ1PmBfCistIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIHJlZ2FyZGluZyBgYGFzeW5jaW8u
YXN5bmMoKWBgIGhhcyBiZWVuIGZpeGVkLgorICBgIzUxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzUxPmBfCisKKzAuNS4wICgyMDE2LTA5LTA3KQor
fn5+fn5+fn5+fn5+fn5+fn5+CistIEludHJvZHVjZWQgYSBjaGFuZ2Vsb2cuCisgIGAjMzEgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8zMT5gXwor
LSBUaGUgYGBldmVudF9sb29wYGAgZml4dHVyZSBpcyBhZ2FpbiByZXNwb25zaWJsZSBmb3IgY2xv
c2luZyBpdHNlbGYuCisgIFRoaXMgbWFrZXMgdGhlIGZpeHR1cmUgc2xpZ2h0bHkgaGFyZGVyIHRv
IGNvcnJlY3RseSBvdmVycmlkZSwgYnV0IGVuYWJsZXMKKyAgb3RoZXIgZml4dHVyZXMgdG8gZGVw
ZW5kIG9uIGl0IGNvcnJlY3RseS4KKyAgYCMzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzMwPmBfCistIERlYWwgd2l0aCB0aGUgZXZlbnQgbG9v
cCBwb2xpY3kgYnkgd3JhcHBpbmcgYSBzcGVjaWFsIHB5dGVzdCBob29rLAorICBgYHB5dGVzdF9m
aXh0dXJlX3NldHVwYGAuIFRoaXMgYWxsb3dzIHNldHRpbmcgdGhlIHBvbGljeSBiZWZvcmUgZml4
dHVyZXMKKyAgZGVwZW5kZW50IG9uIHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIHJ1biwgdGh1
cyBhbGxvd2luZyB0aGVtIHRvIHRha2UKKyAgYWR2YW50YWdlIG9mIHRoZSBgYGZvcmJpZF9nbG9i
YWxfbG9vcGBgIHBhcmFtZXRlci4gQXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzLAorICB3ZSBub3cg
ZGVwZW5kIG9uIHB5dGVzdCAzLjAuCisgIGAjMjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8yOT5gXworCisKKzAuNC4xICgyMDE2LTA2LTAxKQor
fn5+fn5+fn5+fn5+fn5+fn5+CistIEZpeCBhIGJ1ZyBwcmV2ZW50aW5nIHRoZSBwcm9wYWdhdGlv
biBvZiBleGNlcHRpb25zIGZyb20gdGhlIHBsdWdpbi4KKyAgYCMyNSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzI1PmBfCisKKzAuNC4wICgyMDE2
LTA1LTMwKQorfn5+fn5+fn5+fn5+fn5+fn5+CistIE1ha2UgYGBldmVudF9sb29wYGAgZml4dHVy
ZXMgc2ltcGxlciB0byBvdmVycmlkZSBieSBjbG9zaW5nIHRoZW0gaW4gdGhlCisgIHBsdWdpbiwg
aW5zdGVhZCBvZiBkaXJlY3RseSBpbiB0aGUgZml4dHVyZS4KKyAgYCMyMSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8yMT5gXworLSBJbnRyb2R1Y2Ug
dGhlIGBgZm9yYmlkX2dsb2JhbF9sb29wYGAgcGFyYW1ldGVyLgorICBgIzIxIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzIxPmBfCisKKzAuMy4wICgy
MDE1LTEyLTE5KQorfn5+fn5+fn5+fn5+fn5+fn5+CistIFN1cHBvcnQgZm9yIFB5dGhvbiAzLjUg
YGBhc3luY2BgL2BgYXdhaXRgYCBzeW50YXguCisgIGAjMTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTc+YF8KKworMC4yLjAgKDIwMTUtMDgtMDEp
Cit+fn5+fn5+fn5+fn5+fn5+fn4KKy0gYGB1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeWBgIGZpeHR1
cmUuCisgIGAjMTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lv
L2lzc3Vlcy8xMD5gXworCisKKzAuMS4xICgyMDE1LTA0LTIzKQorfn5+fn5+fn5+fn5+fn5+fn5+
CitJbml0aWFsIHJlbGVhc2UuCisKKworQ29udHJpYnV0aW5nCistLS0tLS0tLS0tLS0KK0NvbnRy
aWJ1dGlvbnMgYXJlIHZlcnkgd2VsY29tZS4gVGVzdHMgY2FuIGJlIHJ1biB3aXRoIGBgdG94YGAs
IHBsZWFzZSBlbnN1cmUKK3RoZSBjb3ZlcmFnZSBhdCBsZWFzdCBzdGF5cyB0aGUgc2FtZSBiZWZv
cmUgeW91IHN1Ym1pdCBhIHB1bGwgcmVxdWVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFz
eW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vUEtHLUlORk8gYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3lu
Y2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL1BLRy1JTkZPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYmI3NjExYmMxYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9QS0ctSU5GTwpAQCAtMCww
ICsxLDMwMiBAQAorTWV0YWRhdGEtVmVyc2lvbjogMi4xCitOYW1lOiBweXRlc3QtYXN5bmNpbwor
VmVyc2lvbjogMC4xNC4wCitTdW1tYXJ5OiBQeXRlc3Qgc3VwcG9ydCBmb3IgYXN5bmNpby4KK0hv
bWUtcGFnZTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8KK0F1
dGhvcjogVGluIFR2cnRrb3ZpxIcKK0F1dGhvci1lbWFpbDogdGluY2hlc3RlckBnbWFpbC5jb20K
K0xpY2Vuc2U6IEFwYWNoZSAyLjAKK0Rlc2NyaXB0aW9uOiBweXRlc3QtYXN5bmNpbzogcHl0ZXN0
IHN1cHBvcnQgZm9yIGFzeW5jaW8KKyAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vaW1n
LnNoaWVsZHMuaW8vcHlwaS92L3B5dGVzdC1hc3luY2lvLnN2ZworICAgICAgICAgICAgOnRhcmdl
dDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXRlc3QtYXN5bmNpbworICAgICAgICAu
LiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lv
LnN2Zz9icmFuY2g9bWFzdGVyCisgICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1j
aS5vcmcvcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbworICAgICAgICAuLiBpbWFnZTo6IGh0dHBz
Oi8vY292ZXJhbGxzLmlvL3JlcG9zL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vYmFkZ2Uuc3Zn
CisgICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL2NvdmVyYWxscy5pby9yL3B5dGVzdC1kZXYv
cHl0ZXN0LWFzeW5jaW8KKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlv
L3B5cGkvcHl2ZXJzaW9ucy9weXRlc3QtYXN5bmNpby5zdmcKKyAgICAgICAgICAgIDp0YXJnZXQ6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvCisgICAgICAgICAg
ICA6YWx0OiBTdXBwb3J0ZWQgUHl0aG9uIHZlcnNpb25zCisgICAgICAgIAorICAgICAgICBweXRl
c3QtYXN5bmNpbyBpcyBhbiBBcGFjaGUyIGxpY2Vuc2VkIGxpYnJhcnksIHdyaXR0ZW4gaW4gUHl0
aG9uLCBmb3IgdGVzdGluZworICAgICAgICBhc3luY2lvIGNvZGUgd2l0aCBweXRlc3QuCisgICAg
ICAgIAorICAgICAgICBhc3luY2lvIGNvZGUgaXMgdXN1YWxseSB3cml0dGVuIGluIHRoZSBmb3Jt
IG9mIGNvcm91dGluZXMsIHdoaWNoIG1ha2VzIGl0CisgICAgICAgIHNsaWdodGx5IG1vcmUgZGlm
ZmljdWx0IHRvIHRlc3QgdXNpbmcgbm9ybWFsIHRlc3RpbmcgdG9vbHMuIHB5dGVzdC1hc3luY2lv
CisgICAgICAgIHByb3ZpZGVzIHVzZWZ1bCBmaXh0dXJlcyBhbmQgbWFya2VycyB0byBtYWtlIHRl
c3RpbmcgZWFzaWVyLgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgor
ICAgICAgICAKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5hc3luY2lvCisgICAgICAgICAgICBh
c3luYyBkZWYgdGVzdF9zb21lX2FzeW5jaW9fY29kZSgpOgorICAgICAgICAgICAgICAgIHJlcyA9
IGF3YWl0IGxpYnJhcnkuZG9fc29tZXRoaW5nKCkKKyAgICAgICAgICAgICAgICBhc3NlcnQgYidl
eHBlY3RlZCByZXN1bHQnID09IHJlcworICAgICAgICAKKyAgICAgICAgcHl0ZXN0LWFzeW5jaW8g
aGFzIGJlZW4gc3Ryb25nbHkgaW5mbHVlbmNlZCBieSBweXRlc3QtdG9ybmFkb18uCisgICAgICAg
IAorICAgICAgICAuLiBfcHl0ZXN0LXRvcm5hZG86IGh0dHBzOi8vZ2l0aHViLmNvbS9ldWdlbml5
L3B5dGVzdC10b3JuYWRvCisgICAgICAgIAorICAgICAgICBGZWF0dXJlcworICAgICAgICAtLS0t
LS0tLQorICAgICAgICAKKyAgICAgICAgLSBmaXh0dXJlcyBmb3IgY3JlYXRpbmcgYW5kIGluamVj
dGluZyB2ZXJzaW9ucyBvZiB0aGUgYXN5bmNpbyBldmVudCBsb29wCisgICAgICAgIC0gZml4dHVy
ZXMgZm9yIGluamVjdGluZyB1bnVzZWQgdGNwIHBvcnRzCisgICAgICAgIC0gcHl0ZXN0IG1hcmtl
cnMgZm9yIHRyZWF0aW5nIHRlc3RzIGFzIGFzeW5jaW8gY29yb3V0aW5lcworICAgICAgICAtIGVh
c3kgdGVzdGluZyB3aXRoIG5vbi1kZWZhdWx0IGV2ZW50IGxvb3BzCisgICAgICAgIC0gc3VwcG9y
dCBmb3IgYGFzeW5jIGRlZmAgZml4dHVyZXMgYW5kIGFzeW5jIGdlbmVyYXRvciBmaXh0dXJlcwor
ICAgICAgICAKKyAgICAgICAgSW5zdGFsbGF0aW9uCisgICAgICAgIC0tLS0tLS0tLS0tLQorICAg
ICAgICAKKyAgICAgICAgVG8gaW5zdGFsbCBweXRlc3QtYXN5bmNpbywgc2ltcGx5OgorICAgICAg
ICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IGJhc2gKKyAgICAgICAgCisgICAgICAgICAgICAk
IHBpcCBpbnN0YWxsIHB5dGVzdC1hc3luY2lvCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGVu
b3VnaCBmb3IgcHl0ZXN0IHRvIHBpY2sgdXAgcHl0ZXN0LWFzeW5jaW8uCisgICAgICAgIAorICAg
ICAgICBGaXh0dXJlcworICAgICAgICAtLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgYGBldmVu
dF9sb29wYGAKKyAgICAgICAgfn5+fn5+fn5+fn5+fn4KKyAgICAgICAgQ3JlYXRlcyBhbmQgaW5q
ZWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZGVmYXVsdCBhc3luY2lvIGV2ZW50IGxvb3AuIEJ5
CisgICAgICAgIGRlZmF1bHQsIHRoZSBsb29wIHdpbGwgYmUgY2xvc2VkIGF0IHRoZSBlbmQgb2Yg
dGhlIHRlc3QgKGkuZS4gdGhlIGRlZmF1bHQKKyAgICAgICAgZml4dHVyZSBzY29wZSBpcyBgYGZ1
bmN0aW9uYGApLgorICAgICAgICAKKyAgICAgICAgTm90ZSB0aGF0IGp1c3QgdXNpbmcgdGhlIGBg
ZXZlbnRfbG9vcGBgIGZpeHR1cmUgd29uJ3QgbWFrZSB5b3VyIHRlc3QgZnVuY3Rpb24KKyAgICAg
ICAgYSBjb3JvdXRpbmUuIFlvdSdsbCBuZWVkIHRvIGludGVyYWN0IHdpdGggdGhlIGV2ZW50IGxv
b3AgZGlyZWN0bHksIHVzaW5nIG1ldGhvZHMKKyAgICAgICAgbGlrZSBgYGV2ZW50X2xvb3AucnVu
X3VudGlsX2NvbXBsZXRlYGAuIFNlZSB0aGUgYGBweXRlc3QubWFyay5hc3luY2lvYGAgbWFya2Vy
CisgICAgICAgIGZvciB0cmVhdGluZyB0ZXN0IGZ1bmN0aW9ucyBsaWtlIGNvcm91dGluZXMuCisg
ICAgICAgIAorICAgICAgICBTaW1wbHkgdXNpbmcgdGhpcyBmaXh0dXJlIHdpbGwgbm90IHNldCB0
aGUgZ2VuZXJhdGVkIGV2ZW50IGxvb3AgYXMgdGhlCisgICAgICAgIGRlZmF1bHQgYXN5bmNpbyBl
dmVudCBsb29wLCBvciBjaGFuZ2UgdGhlIGFzeW5jaW8gZXZlbnQgbG9vcCBwb2xpY3kgaW4gYW55
IHdheS4KKyAgICAgICAgVXNlIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb2BgIGZvciB0aGlzIHB1cnBv
c2UuCisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisgICAgICAgIAor
ICAgICAgICAgICAgZGVmIHRlc3RfaHR0cF9jbGllbnQoZXZlbnRfbG9vcCk6CisgICAgICAgICAg
ICAgICAgdXJsID0gJ2h0dHA6Ly9odHRwYmluLm9yZy9nZXQnCisgICAgICAgICAgICAgICAgcmVz
cCA9IGV2ZW50X2xvb3AucnVuX3VudGlsX2NvbXBsZXRlKGh0dHBfY2xpZW50KHVybCkpCisgICAg
ICAgICAgICAgICAgYXNzZXJ0IGInSFRUUC8xLjEgMjAwIE9LJyBpbiByZXNwCisgICAgICAgIAor
ICAgICAgICBUaGlzIGZpeHR1cmUgY2FuIGJlIGVhc2lseSBvdmVycmlkZGVuIGluIGFueSBvZiB0
aGUgc3RhbmRhcmQgcHl0ZXN0IGxvY2F0aW9ucworICAgICAgICAoZS5nLiBkaXJlY3RseSBpbiB0
aGUgdGVzdCBmaWxlLCBvciBpbiBgYGNvbmZ0ZXN0LnB5YGApIHRvIHVzZSBhIG5vbi1kZWZhdWx0
CisgICAgICAgIGV2ZW50IGxvb3AuIFRoaXMgd2lsbCB0YWtlIGVmZmVjdCBldmVuIGlmIHlvdSdy
ZSB1c2luZyB0aGUKKyAgICAgICAgYGBweXRlc3QubWFyay5hc3luY2lvYGAgbWFya2VyIGFuZCBu
b3QgdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgZGlyZWN0bHkuCisgICAgICAgIAorICAgICAg
ICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisgICAgICAgIAorICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlCisgICAgICAgICAgICBkZWYgZXZlbnRfbG9vcCgpOgorICAgICAgICAgICAgICAgIGxv
b3AgPSBNeUN1c3RvbUxvb3AoKQorICAgICAgICAgICAgICAgIHlpZWxkIGxvb3AKKyAgICAgICAg
ICAgICAgICBsb29wLmNsb3NlKCkKKyAgICAgICAgCisgICAgICAgIElmIHRoZSBgYHB5dGVzdC5t
YXJrLmFzeW5jaW9gYCBtYXJrZXIgaXMgYXBwbGllZCwgYSBweXRlc3QgaG9vayB3aWxsCisgICAg
ICAgIGVuc3VyZSB0aGUgcHJvZHVjZWQgbG9vcCBpcyBzZXQgYXMgdGhlIGRlZmF1bHQgZ2xvYmFs
IGxvb3AuCisgICAgICAgIEZpeHR1cmVzIGRlcGVuZGluZyBvbiB0aGUgYGBldmVudF9sb29wYGAg
Zml4dHVyZSBjYW4gZXhwZWN0IHRoZSBwb2xpY3kgdG8gYmUgcHJvcGVybHkgbW9kaWZpZWQgd2hl
biB0aGV5IHJ1bi4KKyAgICAgICAgCisgICAgICAgIGBgdW51c2VkX3RjcF9wb3J0YGAKKyAgICAg
ICAgfn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICBGaW5kcyBhbmQgeWllbGRzIGEgc2luZ2xl
IHVudXNlZCBUQ1AgcG9ydCBvbiB0aGUgbG9jYWxob3N0IGludGVyZmFjZS4gVXNlZnVsIGZvcgor
ICAgICAgICBiaW5kaW5nIHRlbXBvcmFyeSB0ZXN0IHNlcnZlcnMuCisgICAgICAgIAorICAgICAg
ICBgYHVudXNlZF90Y3BfcG9ydF9mYWN0b3J5YGAKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+CisgICAgICAgIEEgY2FsbGFibGUgd2hpY2ggcmV0dXJucyBhIGRpZmZlcmVudCB1
bnVzZWQgVENQIHBvcnQgZWFjaCBpbnZvY2F0aW9uLiBVc2VmdWwKKyAgICAgICAgd2hlbiBzZXZl
cmFsIHVudXNlZCBUQ1AgcG9ydHMgYXJlIHJlcXVpcmVkIGluIGEgdGVzdC4KKyAgICAgICAgCisg
ICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKyAgICAgICAgCisgICAgICAgICAgICBkZWYg
YV90ZXN0KHVudXNlZF90Y3BfcG9ydF9mYWN0b3J5KToKKyAgICAgICAgICAgICAgICBwb3J0MSwg
cG9ydDIgPSB1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeSgpLCB1bnVzZWRfdGNwX3BvcnRfZmFjdG9y
eSgpCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgIAorICAgICAgICBBc3luYyBmaXh0dXJl
cworICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICBBc3luY2hy
b25vdXMgZml4dHVyZXMgYXJlIGRlZmluZWQganVzdCBsaWtlIG9yZGluYXJ5IHB5dGVzdCBmaXh0
dXJlcywgZXhjZXB0IHRoZXkgc2hvdWxkIGJlIGNvcm91dGluZXMgb3IgYXN5bmNocm9ub3VzIGdl
bmVyYXRvcnMuCisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uMworICAg
ICAgICAKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgYXN5bmMgZGVm
IGFzeW5jX2dlbl9maXh0dXJlKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVl
cCgwLjEpCisgICAgICAgICAgICAgICAgeWllbGQgJ2EgdmFsdWUnCisgICAgICAgIAorICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdtb2R1bGUnKQorICAgICAgICAgICAgYXN5bmMg
ZGVmIGFzeW5jX2ZpeHR1cmUoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgYXN5bmNp
by5zbGVlcCgwLjEpCisgICAgICAgIAorICAgICAgICBBbGwgc2NvcGVzIGFyZSBzdXBwb3J0ZWQs
IGJ1dCBpZiB5b3UgdXNlIGEgbm9uLWZ1bmN0aW9uIHNjb3BlIHlvdSB3aWxsIG5lZWQKKyAgICAg
ICAgdG8gcmVkZWZpbmUgdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgdG8gaGF2ZSB0aGUgc2Ft
ZSBvciBicm9hZGVyIHNjb3BlLgorICAgICAgICBBc3luYyBmaXh0dXJlcyBuZWVkIHRoZSBldmVu
dCBsb29wLCBhbmQgc28gbXVzdCBoYXZlIHRoZSBzYW1lIG9yIG5hcnJvd2VyIHNjb3BlCisgICAg
ICAgIHRoYW4gdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUuCisgICAgICAgIAorICAgICAgICBJ
ZiB5b3Ugd2FudCB0byBkbyB0aGlzIHdpdGggUHl0aG9uIDMuNSwgdGhlIGBgeWllbGRgYCBzdGF0
ZW1lbnQgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGBgYXdhaXQgeWllbGRfKClgYCBhbmQgdGhlIGNv
cm91dGluZQorICAgICAgICBmdW5jdGlvbiBtdXN0IGJlIGRlY29yYXRlZCB3aXRoIGBgQGFzeW5j
X2dlbmVyYXRvcmBgLCBsaWtlIHNvOgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6
IHB5dGhvbjMKKyAgICAgICAgCisgICAgICAgICAgICBmcm9tIGFzeW5jX2dlbmVyYXRvciBpbXBv
cnQgeWllbGRfLCBhc3luY19nZW5lcmF0b3IKKyAgICAgICAgCisgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICAgICAgICAgIEBhc3luY19nZW5lcmF0b3IKKyAgICAgICAgICAgIGFzeW5j
IGRlZiBhc3luY19nZW5fZml4dHVyZSgpOgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8u
c2xlZXAoMC4xKQorICAgICAgICAgICAgICAgIGF3YWl0IHlpZWxkXygnYSB2YWx1ZScpCisgICAg
ICAgIAorICAgICAgICAKKyAgICAgICAgTWFya2VycworICAgICAgICAtLS0tLS0tCisgICAgICAg
IAorICAgICAgICBgYHB5dGVzdC5tYXJrLmFzeW5jaW9gYAorICAgICAgICB+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIE1hcmsgeW91ciB0
ZXN0IGNvcm91dGluZSB3aXRoIHRoaXMgbWFya2VyIGFuZCBweXRlc3Qgd2lsbCBleGVjdXRlIGl0
IGFzIGFuCisgICAgICAgIGFzeW5jaW8gdGFzayB1c2luZyB0aGUgZXZlbnQgbG9vcCBwcm92aWRl
ZCBieSB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZS4gU2VlCisgICAgICAgIHRoZSBpbnRyb2R1
Y3Rvcnkgc2VjdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBldmVu
dCBsb29wIHVzZWQgY2FuIGJlIG92ZXJyaWRlbiBieSBvdmVycmlkaW5nIHRoZSBgYGV2ZW50X2xv
b3BgYCBmaXh0dXJlCisgICAgICAgIChzZWUgYWJvdmUpLgorICAgICAgICAKKyAgICAgICAgSW4g
b3JkZXIgdG8gbWFrZSB5b3VyIHRlc3QgY29kZSBhIGxpdHRsZSBtb3JlIGNvbmNpc2UsIHRoZSBw
eXRlc3QgfHB5dGVzdG1hcmt8XworICAgICAgICBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIG1hcmsg
ZW50aXJlIG1vZHVsZXMgb3IgY2xhc3NlcyB3aXRoIHRoaXMgbWFya2VyLgorICAgICAgICBPbmx5
IHRlc3QgY29yb3V0aW5lcyB3aWxsIGJlIGFmZmVjdGVkIChieSBkZWZhdWx0LCBjb3JvdXRpbmVz
IHByZWZpeGVkIGJ5CisgICAgICAgIGBgdGVzdF9gYCksIHNvLCBmb3IgZXhhbXBsZSwgZml4dHVy
ZXMgYXJlIHNhZmUgdG8gZGVmaW5lLgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorICAgICAgICAKKyAgICAgICAgICAgIGltcG9ydCBhc3luY2lvCisgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIAorICAgICAgICAgICAgIyBBbGwgdGVzdCBjb3JvdXRp
bmVzIHdpbGwgYmUgdHJlYXRlZCBhcyBtYXJrZWQuCisgICAgICAgICAgICBweXRlc3RtYXJrID0g
cHl0ZXN0Lm1hcmsuYXN5bmNpbworICAgICAgICAKKyAgICAgICAgICAgIGFzeW5jIGRlZiB0ZXN0
X2V4YW1wbGUoZXZlbnRfbG9vcCk6CisgICAgICAgICAgICAgICAgIiIiTm8gbWFya2VyISIiIgor
ICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMCwgbG9vcD1ldmVudF9sb29wKQor
ICAgICAgICAKKyAgICAgICAgLi4gfHB5dGVzdG1hcmt8IHJlcGxhY2U6OiBgYHB5dGVzdG1hcmtg
YAorICAgICAgICAuLiBfcHl0ZXN0bWFyazogaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVz
dC9leGFtcGxlL21hcmtlcnMuaHRtbCNtYXJraW5nLXdob2xlLWNsYXNzZXMtb3ItbW9kdWxlcwor
ICAgICAgICAKKyAgICAgICAgQ2hhbmdlbG9nCisgICAgICAgIC0tLS0tLS0tLQorICAgICAgICAw
LjEzLjAgKDIwMjAtMDYtMjQpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAg
LSBGaXggYCMxNjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lv
L2lzc3Vlcy8xNjI+YF8sIGFuZCBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIGJlaGF2aW9yIG5vdyBp
cyBjb2hlcmVudCBvbiBhbGwgc2NvcGVzLgorICAgICAgICAgIGAjMTY0IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzE2ND5gXworICAgICAgICAKKyAg
ICAgICAgMC4xMi4wICgyMDIwLTA1LTA0KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+Cisg
ICAgICAgIC0gUnVuIHRoZSBldmVudCBsb29wIGZpeHR1cmUgYXMgc29vbiBhcyBwb3NzaWJsZS4g
VGhpcyBoZWxwcyB3aXRoIGZpeHR1cmVzIHRoYXQgaGF2ZSBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5
IG9uIHRoZSBldmVudCBsb29wLgorICAgICAgICAgIGAjMTU2IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzE1Nj5gXworICAgICAgICAKKyAgICAgICAg
MC4xMS4wICgyMDIwLTA0LTIwKQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAg
IC0gVGVzdCBvbiAzLjgsIGRyb3AgMy4zIGFuZCAzLjQuIFN0aWNrIHRvIDAuMTAgZm9yIHRoZXNl
IHZlcnNpb25zLgorICAgICAgICAgIGAjMTUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QtYXN5bmNpby9wdWxsLzE1Mj5gXworICAgICAgICAtIFVzZSB0aGUgbmV3IFB5dGVz
dCA1LjQuMCBGdW5jdGlvbiBBUEkuIFdlIHRoZXJlZm9yZSBkZXBlbmQgb24gcHl0ZXN0ID49IDUu
NC4wLgorICAgICAgICAgIGAjMTQyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QtYXN5bmNpby9wdWxsLzE0Mj5gXworICAgICAgICAtIEJldHRlciBgYHB5dGVzdC5za2lwYGAg
c3VwcG9ydC4KKyAgICAgICAgICBgIzEyNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0LWFzeW5jaW8vcHVsbC8xMjY+YF8KKyAgICAgICAgCisgICAgICAgIDAuMTAuMCAoMjAx
OS0wMS0wOCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBgYHB5dGVz
dC1hc3luY2lvYGAgaW50ZWdyYXRlcyB3aXRoIGBIeXBvdGhlc2lzIDxodHRwczovL2h5cG90aGVz
aXMucmVhZHRoZWRvY3MuaW8+YF8KKyAgICAgICAgICB0byBzdXBwb3J0IGBgQGdpdmVuYGAgb24g
YXN5bmMgdGVzdCBmdW5jdGlvbnMgdXNpbmcgYGBhc3luY2lvYGAuCisgICAgICAgICAgYCMxMDIg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTAyPmBf
CisgICAgICAgIC0gUHl0ZXN0IDQuMSBzdXBwb3J0LgorICAgICAgICAgIGAjMTA1IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzEwNT5gXworICAgICAg
ICAKKyAgICAgICAgMC45LjAgKDIwMTgtMDctMjgpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+
fgorICAgICAgICAtIFB5dGhvbiAzLjcgc3VwcG9ydC4KKyAgICAgICAgLSBSZW1vdmUgYGBldmVu
dF9sb29wX3Byb2Nlc3NfcG9vbGBgIGZpeHR1cmUgYW5kCisgICAgICAgICAgYGBweXRlc3QubWFy
ay5hc3luY2lvX3Byb2Nlc3NfcG9vbGBgIG1hcmtlciAoc2VlCisgICAgICAgICAgaHR0cHM6Ly9i
dWdzLnB5dGhvbi5vcmcvaXNzdWUzNDA3NSBmb3IgZGVwcmVjYXRpb24gYW5kIHJlbW92YWwgZGV0
YWlscykKKyAgICAgICAgCisgICAgICAgIDAuOC4wICgyMDE3LTA5LTIzKQorICAgICAgICB+fn5+
fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBJbXByb3ZlIGludGVncmF0aW9uIHdpdGggb3RoZXIg
cGFja2FnZXMgKGxpa2UgYWlvaHR0cCkgd2l0aCBtb3JlIGNhcmVmdWwgZXZlbnQgbG9vcCBoYW5k
bGluZy4KKyAgICAgICAgICBgIzY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QtYXN5bmNpby9wdWxsLzY0PmBfCisgICAgICAgIAorICAgICAgICAwLjcuMCAoMjAxNy0wOS0w
OCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0gUHl0aG9uIHZlcnNpb25z
IHByZS0zLjYgY2FuIHVzZSB0aGUgYXN5bmNfZ2VuZXJhdG9yIGxpYnJhcnkgZm9yIGFzeW5jIGZp
eHR1cmVzLgorICAgICAgICAgIGAjNjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC1hc3luY2lvL3B1bGwvNjI+YAorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDAuNi4w
ICgyMDE3LTA1LTI4KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBTdXBw
b3J0IGZvciBQeXRob24gdmVyc2lvbnMgcHJlLTMuNSBoYXMgYmVlbiBkcm9wcGVkLgorICAgICAg
ICAtIGBgcHl0ZXN0bWFya2BgIG5vdyB3b3JrcyBvbiBib3RoIG1vZHVsZSBhbmQgY2xhc3MgbGV2
ZWwuCisgICAgICAgIC0gVGhlIGBgZm9yYmlkX2dsb2JhbF9sb29wYGAgcGFyYW1ldGVyIGhhcyBi
ZWVuIHJlbW92ZWQuCisgICAgICAgIC0gU3VwcG9ydCBmb3IgYXN5bmMgYW5kIGFzeW5jIGdlbiBm
aXh0dXJlcyBoYXMgYmVlbiBhZGRlZC4KKyAgICAgICAgICBgIzQ1IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzQ1PmBfCisgICAgICAgIC0gVGhlIGRl
cHJlY2F0aW9uIHdhcm5pbmcgcmVnYXJkaW5nIGBgYXN5bmNpby5hc3luYygpYGAgaGFzIGJlZW4g
Zml4ZWQuCisgICAgICAgICAgYCM1MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0LWFzeW5jaW8vcHVsbC81MT5gXworICAgICAgICAKKyAgICAgICAgMC41LjAgKDIwMTYtMDkt
MDcpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIEludHJvZHVjZWQgYSBj
aGFuZ2Vsb2cuCisgICAgICAgICAgYCMzMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzMxPmBfCisgICAgICAgIC0gVGhlIGBgZXZlbnRfbG9vcGBg
IGZpeHR1cmUgaXMgYWdhaW4gcmVzcG9uc2libGUgZm9yIGNsb3NpbmcgaXRzZWxmLgorICAgICAg
ICAgIFRoaXMgbWFrZXMgdGhlIGZpeHR1cmUgc2xpZ2h0bHkgaGFyZGVyIHRvIGNvcnJlY3RseSBv
dmVycmlkZSwgYnV0IGVuYWJsZXMKKyAgICAgICAgICBvdGhlciBmaXh0dXJlcyB0byBkZXBlbmQg
b24gaXQgY29ycmVjdGx5LgorICAgICAgICAgIGAjMzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8zMD5gXworICAgICAgICAtIERlYWwgd2l0aCB0
aGUgZXZlbnQgbG9vcCBwb2xpY3kgYnkgd3JhcHBpbmcgYSBzcGVjaWFsIHB5dGVzdCBob29rLAor
ICAgICAgICAgIGBgcHl0ZXN0X2ZpeHR1cmVfc2V0dXBgYC4gVGhpcyBhbGxvd3Mgc2V0dGluZyB0
aGUgcG9saWN5IGJlZm9yZSBmaXh0dXJlcworICAgICAgICAgIGRlcGVuZGVudCBvbiB0aGUgYGBl
dmVudF9sb29wYGAgZml4dHVyZSBydW4sIHRodXMgYWxsb3dpbmcgdGhlbSB0byB0YWtlCisgICAg
ICAgICAgYWR2YW50YWdlIG9mIHRoZSBgYGZvcmJpZF9nbG9iYWxfbG9vcGBgIHBhcmFtZXRlci4g
QXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzLAorICAgICAgICAgIHdlIG5vdyBkZXBlbmQgb24gcHl0
ZXN0IDMuMC4KKyAgICAgICAgICBgIzI5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QtYXN5bmNpby9pc3N1ZXMvMjk+YF8KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICAw
LjQuMSAoMjAxNi0wNi0wMSkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0g
Rml4IGEgYnVnIHByZXZlbnRpbmcgdGhlIHByb3BhZ2F0aW9uIG9mIGV4Y2VwdGlvbnMgZnJvbSB0
aGUgcGx1Z2luLgorICAgICAgICAgIGAjMjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8yNT5gXworICAgICAgICAKKyAgICAgICAgMC40LjAgKDIw
MTYtMDUtMzApCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIE1ha2UgYGBl
dmVudF9sb29wYGAgZml4dHVyZXMgc2ltcGxlciB0byBvdmVycmlkZSBieSBjbG9zaW5nIHRoZW0g
aW4gdGhlCisgICAgICAgICAgcGx1Z2luLCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGluIHRoZSBmaXh0
dXJlLgorICAgICAgICAgIGAjMjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC1hc3luY2lvL3B1bGwvMjE+YF8KKyAgICAgICAgLSBJbnRyb2R1Y2UgdGhlIGBgZm9yYmlkX2ds
b2JhbF9sb29wYGAgcGFyYW1ldGVyLgorICAgICAgICAgIGAjMjEgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMjE+YF8KKyAgICAgICAgCisgICAgICAg
IDAuMy4wICgyMDE1LTEyLTE5KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAg
LSBTdXBwb3J0IGZvciBQeXRob24gMy41IGBgYXN5bmNgYC9gYGF3YWl0YGAgc3ludGF4LgorICAg
ICAgICAgIGAjMTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lv
L3B1bGwvMTc+YF8KKyAgICAgICAgCisgICAgICAgIDAuMi4wICgyMDE1LTA4LTAxKQorICAgICAg
ICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBgYHVudXNlZF90Y3BfcG9ydF9mYWN0b3J5
YGAgZml4dHVyZS4KKyAgICAgICAgICBgIzEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMTA+YF8KKyAgICAgICAgCisgICAgICAgIAorICAgICAg
ICAwLjEuMSAoMjAxNS0wNC0yMykKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAg
IEluaXRpYWwgcmVsZWFzZS4KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBDb250cmlidXRp
bmcKKyAgICAgICAgLS0tLS0tLS0tLS0tCisgICAgICAgIENvbnRyaWJ1dGlvbnMgYXJlIHZlcnkg
d2VsY29tZS4gVGVzdHMgY2FuIGJlIHJ1biB3aXRoIGBgdG94YGAsIHBsZWFzZSBlbnN1cmUKKyAg
ICAgICAgdGhlIGNvdmVyYWdlIGF0IGxlYXN0IHN0YXlzIHRoZSBzYW1lIGJlZm9yZSB5b3Ugc3Vi
bWl0IGEgcHVsbCByZXF1ZXN0LgorICAgICAgICAKK1BsYXRmb3JtOiBVTktOT1dOCitDbGFzc2lm
aWVyOiBEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEKK0NsYXNzaWZpZXI6IEludGVuZGVk
IEF1ZGllbmNlIDo6IERldmVsb3BlcnMKK0NsYXNzaWZpZXI6IExpY2Vuc2UgOjogT1NJIEFwcHJv
dmVkIDo6IEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlCitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMy41CitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogMy42CitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy43CitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24g
OjogMy44CitDbGFzc2lmaWVyOiBUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBUZXN0
aW5nCitDbGFzc2lmaWVyOiBGcmFtZXdvcmsgOjogUHl0ZXN0CitSZXF1aXJlcy1QeXRob246ID49
IDMuNQorUHJvdmlkZXMtRXh0cmE6IHRlc3RpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFz
eW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vU09VUkNFUy50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1h
c3luY2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL1NPVVJDRVMudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDBjZDVkN2M3ZmM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9TT1VSQ0VTLnR4
dApAQCAtMCwwICsxLDEyIEBACitMSUNFTlNFCitSRUFETUUucnN0CitzZXR1cC5jZmcKK3NldHVw
LnB5CitweXRlc3RfYXN5bmNpby9fX2luaXRfXy5weQorcHl0ZXN0X2FzeW5jaW8vcGx1Z2luLnB5
CitweXRlc3RfYXN5bmNpby5lZ2ctaW5mby9QS0ctSU5GTworcHl0ZXN0X2FzeW5jaW8uZWdnLWlu
Zm8vU09VUkNFUy50eHQKK3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3Mu
dHh0CitweXRlc3RfYXN5bmNpby5lZ2ctaW5mby9lbnRyeV9wb2ludHMudHh0CitweXRlc3RfYXN5
bmNpby5lZ2ctaW5mby9yZXF1aXJlcy50eHQKK3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL3RvcF9s
ZXZlbC50eHQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXguZWdnLWluZm8vZGVwZW5kZW5jeV9saW5rcy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lv
L3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0CnNpbWlsYXJpdHkg
aW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXguZWdnLWluZm8vZGVwZW5kZW5jeV9s
aW5rcy50eHQKcmVuYW1lIHRvIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdn
LWluZm8vZGVwZW5kZW5jeV9saW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5j
aW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vZW50cnlfcG9pbnRzLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vZW50cnlfcG9pbnRzLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY5YzUzYmUzOGE4YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vZW50
cnlfcG9pbnRzLnR4dApAQCAtMCwwICsxLDMgQEAKK1tweXRlc3QxMV0KK2FzeW5jaW8gPSBweXRl
c3RfYXN5bmNpby5wbHVnaW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRl
c3RfYXN5bmNpby5lZ2ctaW5mby9yZXF1aXJlcy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5
dGVzdF9hc3luY2lvLmVnZy1pbmZvL3JlcXVpcmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmQ1NDZmMTIyYWQxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vcmVxdWlyZXMudHh0CkBAIC0w
LDAgKzEsOSBAQAorcHl0ZXN0Pj01LjQuMAorCitbOnB5dGhvbl92ZXJzaW9uID09ICIzLjUiXQor
YXN5bmNfZ2VuZXJhdG9yPj0xLjMKKworW3Rlc3RpbmddCithc3luY19nZW5lcmF0b3I+PTEuMwor
Y292ZXJhZ2UKK2h5cG90aGVzaXM+PTUuNy4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3lu
Y2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1h
c3luY2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOGQwNWQxZWNmNGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL3RvcF9sZXZl
bC50eHQKQEAgLTAsMCArMSBAQAorcHl0ZXN0X2FzeW5jaW8KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8vX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3lu
Y2lvL3B5dGVzdF9hc3luY2lvL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNjFjNWY0M2I5NTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby9fX2luaXRfXy5weQpAQCAtMCwwICsxLDIgQEAKKyIi
IlRoZSBtYWluIHBvaW50IGZvciBpbXBvcnRpbmcgcHl0ZXN0LWFzeW5jaW8gaXRlbXMuIiIiCitf
X3ZlcnNpb25fXyA9ICIwLjE0LjAiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5
dGVzdF9hc3luY2lvL3BsdWdpbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5j
aW8vcGx1Z2luLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmZk
YzVmNGU3NzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3Rf
YXN5bmNpby9wbHVnaW4ucHkKQEAgLTAsMCArMSwyNDAgQEAKKyIiInB5dGVzdC1hc3luY2lvIGlt
cGxlbWVudGF0aW9uLiIiIgoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBjb250ZXh0bGliCitpbXBv
cnQgZnVuY3Rvb2xzCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHNvY2tldAorCitpbXBvcnQgcHl0
ZXN0Cit0cnk6CisgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgdHJhbnNmZXJfbWFya2Vy
cworZXhjZXB0IEltcG9ydEVycm9yOiAgIyBQeXRlc3QgNC4xLjAgcmVtb3ZlcyB0aGUgdHJhbnNm
ZXJfbWFya2VyIGFwaSAoIzEwNCkKKyAgICBkZWYgdHJhbnNmZXJfbWFya2VycygqYXJncywgKipr
d2FyZ3MpOiAgIyBub3FhCisgICAgICAgICIiIk5vb3Agd2hlbiBvdmVyIHB5dGVzdCA0LjEuMCIi
IgorICAgICAgICBwYXNzCisKK3RyeToKKyAgICBmcm9tIGFzeW5jX2dlbmVyYXRvciBpbXBvcnQg
aXNhc3luY2dlbmZ1bmN0aW9uCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBpbnNwZWN0
IGltcG9ydCBpc2FzeW5jZ2VuZnVuY3Rpb24KKworCitkZWYgX2lzX2Nvcm91dGluZShvYmopOgor
ICAgICIiIkNoZWNrIHRvIHNlZSBpZiBhbiBvYmplY3QgaXMgcmVhbGx5IGFuIGFzeW5jaW8gY29y
b3V0aW5lLiIiIgorICAgIHJldHVybiBhc3luY2lvLmlzY29yb3V0aW5lZnVuY3Rpb24ob2JqKSBv
ciBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24ob2JqKQorCisKK2RlZiBweXRlc3RfY29uZmln
dXJlKGNvbmZpZyk6CisgICAgIiIiSW5qZWN0IGRvY3VtZW50YXRpb24uIiIiCisgICAgY29uZmln
LmFkZGluaXZhbHVlX2xpbmUoIm1hcmtlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJhc3luY2lvOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hcmsgdGhlIHRlc3Qg
YXMgYSBjb3JvdXRpbmUsIGl0IHdpbGwgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJydW4gdXNpbmcgYW4gYXN5bmNpbyBldmVudCBsb29wIikKKworCitAcHl0ZXN0Lm1hcmsudHJ5
Zmlyc3QKK2RlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2Jq
KToKKyAgICAiIiJBIHB5dGVzdCBob29rIHRvIGNvbGxlY3QgYXN5bmNpbyBjb3JvdXRpbmVzLiIi
IgorICAgIGlmIGNvbGxlY3Rvci5mdW5jbmFtZWZpbHRlcihuYW1lKSBhbmQgX2lzX2Nvcm91dGlu
ZShvYmopOgorICAgICAgICBpdGVtID0gcHl0ZXN0LkZ1bmN0aW9uLmZyb21fcGFyZW50KGNvbGxl
Y3RvciwgbmFtZT1uYW1lKQorCisgICAgICAgICMgRHVlIHRvIGhvdyBweXRlc3QgdGVzdCBjb2xs
ZWN0aW9uIHdvcmtzLCBtb2R1bGUtbGV2ZWwgcHl0ZXN0bWFya3MKKyAgICAgICAgIyBhcmUgYXBw
bGllZCBhZnRlciB0aGUgY29sbGVjdGlvbiBzdGVwLiBTaW5jZSB0aGlzIGlzIHRoZSBjb2xsZWN0
aW9uCisgICAgICAgICMgc3RlcCwgd2UgbG9vayBvdXJzZWx2ZXMuCisgICAgICAgIHRyYW5zZmVy
X21hcmtlcnMob2JqLCBpdGVtLmNscywgaXRlbS5tb2R1bGUpCisgICAgICAgIGl0ZW0gPSBweXRl
c3QuRnVuY3Rpb24uZnJvbV9wYXJlbnQoY29sbGVjdG9yLCBuYW1lPW5hbWUpICAjIFRvIHJlbG9h
ZCBrZXl3b3Jkcy4KKworICAgICAgICBpZiAnYXN5bmNpbycgaW4gaXRlbS5rZXl3b3JkczoKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0KGNvbGxlY3Rvci5fZ2VuZnVuY3Rpb25zKG5hbWUsIG9iaikp
CisKKworY2xhc3MgRml4dHVyZVN0cmlwcGVyOgorICAgICIiIkluY2x1ZGUgYWRkaXRpb25hbCBG
aXh0dXJlLCBhbmQgdGhlbiBzdHJpcCB0aGVtIiIiCisgICAgUkVRVUVTVCA9ICJyZXF1ZXN0Igor
ICAgIEVWRU5UX0xPT1AgPSAiZXZlbnRfbG9vcCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aXh0dXJlZGVmKToKKyAgICAgICAgc2VsZi5maXh0dXJlZGVmID0gZml4dHVyZWRlZgorICAgICAg
ICBzZWxmLnRvX3N0cmlwID0gc2V0KCkKKworICAgIGRlZiBhZGQoc2VsZiwgbmFtZSk6CisgICAg
ICAgICIiIkFkZCBmaXh0dXJlIG5hbWUgdG8gZml4dHVyZWRlZgorICAgICAgICAgYW5kIHJlY29y
ZCBpbiB0b19zdHJpcCBsaXN0IChJZiBub3QgcHJldmlvdXNseSBpbmNsdWRlZCkiIiIKKyAgICAg
ICAgaWYgbmFtZSBpbiBzZWxmLmZpeHR1cmVkZWYuYXJnbmFtZXM6CisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgc2VsZi5maXh0dXJlZGVmLmFyZ25hbWVzICs9IChuYW1lLCApCisgICAgICAg
IHNlbGYudG9fc3RyaXAuYWRkKG5hbWUpCisKKyAgICBkZWYgZ2V0X2FuZF9zdHJpcF9mcm9tKHNl
bGYsIG5hbWUsIGRhdGFfZGljdCk6CisgICAgICAgICIiIlN0cmlwIG5hbWUgZnJvbSBkYXRhLCBh
bmQgcmV0dXJuIHZhbHVlIiIiCisgICAgICAgIHJlc3VsdCA9IGRhdGFfZGljdFtuYW1lXQorICAg
ICAgICBpZiBuYW1lIGluIHNlbGYudG9fc3RyaXA6CisgICAgICAgICAgICBkZWwgZGF0YV9kaWN0
W25hbWVdCisgICAgICAgIHJldHVybiByZXN1bHQKKworQHB5dGVzdC5ob29raW1wbCh0cnlsYXN0
PVRydWUpCitkZWYgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXIoZml4dHVyZWRlZiwgcmVx
dWVzdCk6CisgICAgIiIiQ2FsbGVkIGFmdGVyIGZpeHR1cmUgdGVhcmRvd24iIiIKKyAgICBpZiBm
aXh0dXJlZGVmLmFyZ25hbWUgPT0gImV2ZW50X2xvb3AiOgorICAgICAgICAjIFNldCBlbXB0eSBs
b29wIHBvbGljeSwgc28gdGhhdCBzdWJzZXF1ZW50IGdldF9ldmVudF9sb29wKCkgcHJvdmlkZXMg
YSBuZXcgbG9vcAorICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShOb25lKQor
CisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9maXh0
dXJlX3NldHVwKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgorICAgICIiIkFkanVzdCB0aGUgZXZlbnQg
bG9vcCBwb2xpY3kgd2hlbiBhbiBldmVudCBsb29wIGlzIHByb2R1Y2VkLiIiIgorICAgIGlmIGZp
eHR1cmVkZWYuYXJnbmFtZSA9PSAiZXZlbnRfbG9vcCI6CisgICAgICAgIG91dGNvbWUgPSB5aWVs
ZAorICAgICAgICBsb29wID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKKyAgICAgICAgcG9saWN5ID0g
YXN5bmNpby5nZXRfZXZlbnRfbG9vcF9wb2xpY3koKQorICAgICAgICBwb2xpY3kuc2V0X2V2ZW50
X2xvb3AobG9vcCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBpc2FzeW5jZ2VuZnVuY3Rpb24o
Zml4dHVyZWRlZi5mdW5jKToKKyAgICAgICAgIyBUaGlzIGlzIGFuIGFzeW5jIGdlbmVyYXRvciBm
dW5jdGlvbi4gV3JhcCBpdCBhY2NvcmRpbmdseS4KKyAgICAgICAgZ2VuZXJhdG9yID0gZml4dHVy
ZWRlZi5mdW5jCisKKyAgICAgICAgZml4dHVyZV9zdHJpcHBlciA9IEZpeHR1cmVTdHJpcHBlcihm
aXh0dXJlZGVmKQorICAgICAgICBmaXh0dXJlX3N0cmlwcGVyLmFkZChGaXh0dXJlU3RyaXBwZXIu
RVZFTlRfTE9PUCkKKyAgICAgICAgZml4dHVyZV9zdHJpcHBlci5hZGQoRml4dHVyZVN0cmlwcGVy
LlJFUVVFU1QpCisKKworICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAg
ICAgICAgICAgbG9vcCA9IGZpeHR1cmVfc3RyaXBwZXIuZ2V0X2FuZF9zdHJpcF9mcm9tKEZpeHR1
cmVTdHJpcHBlci5FVkVOVF9MT09QLCBrd2FyZ3MpCisgICAgICAgICAgICByZXF1ZXN0ID0gZml4
dHVyZV9zdHJpcHBlci5nZXRfYW5kX3N0cmlwX2Zyb20oRml4dHVyZVN0cmlwcGVyLlJFUVVFU1Qs
IGt3YXJncykKKworICAgICAgICAgICAgZ2VuX29iaiA9IGdlbmVyYXRvcigqYXJncywgKiprd2Fy
Z3MpCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBzZXR1cCgpOgorICAgICAgICAgICAgICAgIHJl
cyA9IGF3YWl0IGdlbl9vYmouX19hbmV4dF9fKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
CisKKyAgICAgICAgICAgIGRlZiBmaW5hbGl6ZXIoKToKKyAgICAgICAgICAgICAgICAiIiJZaWVs
ZCBhZ2FpbiwgdG8gZmluYWxpemUuIiIiCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGFzeW5j
X2ZpbmFsaXplcigpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
ICAgICAgICBhd2FpdCBnZW5fb2JqLl9fYW5leHRfXygpCisgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisg
ICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAi
QXN5bmMgZ2VuZXJhdG9yIGZpeHR1cmUgZGlkbid0IHN0b3AuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgbXNnICs9ICJZaWVsZCBvbmx5IG9uY2UuIgorICAgICAgICAgICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29t
cGxldGUoYXN5bmNfZmluYWxpemVyKCkpCisKKyAgICAgICAgICAgIHJlcXVlc3QuYWRkZmluYWxp
emVyKGZpbmFsaXplcikKKyAgICAgICAgICAgIHJldHVybiBsb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShzZXR1cCgpKQorCisgICAgICAgIGZpeHR1cmVkZWYuZnVuYyA9IHdyYXBwZXIKKyAgICBlbGlm
IGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihmaXh0dXJlZGVmLmZ1bmMpOgorICAgICAgICBj
b3JvID0gZml4dHVyZWRlZi5mdW5jCisKKyAgICAgICAgZml4dHVyZV9zdHJpcHBlciA9IEZpeHR1
cmVTdHJpcHBlcihmaXh0dXJlZGVmKQorICAgICAgICBmaXh0dXJlX3N0cmlwcGVyLmFkZChGaXh0
dXJlU3RyaXBwZXIuRVZFTlRfTE9PUCkKKworICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICAgICAgbG9vcCA9IGZpeHR1cmVfc3RyaXBwZXIuZ2V0X2FuZF9zdHJp
cF9mcm9tKEZpeHR1cmVTdHJpcHBlci5FVkVOVF9MT09QLCBrd2FyZ3MpCisKKyAgICAgICAgICAg
IGFzeW5jIGRlZiBzZXR1cCgpOgorICAgICAgICAgICAgICAgIHJlcyA9IGF3YWl0IGNvcm8oKmFy
Z3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICAgICAg
cmV0dXJuIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNldHVwKCkpCisKKyAgICAgICAgZml4dHVy
ZWRlZi5mdW5jID0gd3JhcHBlcgorICAgIHlpZWxkCisKKworQHB5dGVzdC5ob29raW1wbCh0cnlm
aXJzdD1UcnVlLCBob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChweWZ1
bmNpdGVtKToKKyAgICAiIiIKKyAgICBSdW4gYXN5bmNpbyBtYXJrZWQgdGVzdCBmdW5jdGlvbnMg
aW4gYW4gZXZlbnQgbG9vcCBpbnN0ZWFkIG9mIGEgbm9ybWFsCisgICAgZnVuY3Rpb24gY2FsbC4K
KyAgICAiIiIKKyAgICBpZiAnYXN5bmNpbycgaW4gcHlmdW5jaXRlbS5rZXl3b3JkczoKKyAgICAg
ICAgaWYgZ2V0YXR0cihweWZ1bmNpdGVtLm9iaiwgJ2lzX2h5cG90aGVzaXNfdGVzdCcsIEZhbHNl
KToKKyAgICAgICAgICAgIHB5ZnVuY2l0ZW0ub2JqLmh5cG90aGVzaXMuaW5uZXJfdGVzdCA9IHdy
YXBfaW5fc3luYygKKyAgICAgICAgICAgICAgICBweWZ1bmNpdGVtLm9iai5oeXBvdGhlc2lzLmlu
bmVyX3Rlc3QsCisgICAgICAgICAgICAgICAgX2xvb3A9cHlmdW5jaXRlbS5mdW5jYXJnc1snZXZl
bnRfbG9vcCddCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBweWZ1
bmNpdGVtLm9iaiA9IHdyYXBfaW5fc3luYygKKyAgICAgICAgICAgICAgICBweWZ1bmNpdGVtLm9i
aiwKKyAgICAgICAgICAgICAgICBfbG9vcD1weWZ1bmNpdGVtLmZ1bmNhcmdzWydldmVudF9sb29w
J10KKyAgICAgICAgICAgICkKKyAgICB5aWVsZAorCisKK2RlZiB3cmFwX2luX3N5bmMoZnVuYywg
X2xvb3ApOgorICAgICIiIlJldHVybiBhIHN5bmMgd3JhcHBlciBhcm91bmQgYW4gYXN5bmMgZnVu
Y3Rpb24gZXhlY3V0aW5nIGl0IGluIHRoZQorICAgIGN1cnJlbnQgZXZlbnQgbG9vcC4iIiIKKwor
ICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICBkZWYgaW5uZXIoKiprd2FyZ3MpOgorICAg
ICAgICBjb3JvID0gZnVuYygqKmt3YXJncykKKyAgICAgICAgaWYgY29ybyBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIHRhc2sgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoY29ybywgbG9vcD1fbG9v
cCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfbG9vcC5ydW5fdW50aWxfY29t
cGxldGUodGFzaykKKyAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICAg
ICAgICAgICMgcnVuX3VudGlsX2NvbXBsZXRlIGRvZXNuJ3QgZ2V0IHRoZSByZXN1bHQgZnJvbSBl
eGNlcHRpb25zCisgICAgICAgICAgICAgICAgIyB0aGF0IGFyZSBub3Qgc3ViY2xhc3NlcyBvZiBg
RXhjZXB0aW9uYC4gQ29uc3VtZSBhbGwKKyAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbnMgdG8g
cHJldmVudCBhc3luY2lvJ3Mgd2FybmluZyBmcm9tIGxvZ2dpbmcuCisgICAgICAgICAgICAgICAg
aWYgdGFzay5kb25lKCkgYW5kIG5vdCB0YXNrLmNhbmNlbGxlZCgpOgorICAgICAgICAgICAgICAg
ICAgICB0YXNrLmV4Y2VwdGlvbigpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICByZXR1cm4g
aW5uZXIKKworCitkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CisgICAgaWYgJ2FzeW5j
aW8nIGluIGl0ZW0ua2V5d29yZHM6CisgICAgICAgICMgaW5qZWN0IGFuIGV2ZW50IGxvb3AgZml4
dHVyZSBmb3IgYWxsIGFzeW5jIHRlc3RzCisgICAgICAgIGlmICdldmVudF9sb29wJyBpbiBpdGVt
LmZpeHR1cmVuYW1lczoKKyAgICAgICAgICAgIGl0ZW0uZml4dHVyZW5hbWVzLnJlbW92ZSgnZXZl
bnRfbG9vcCcpCisgICAgICAgIGl0ZW0uZml4dHVyZW5hbWVzLmluc2VydCgwLCAnZXZlbnRfbG9v
cCcpCisgICAgaWYgaXRlbS5nZXRfY2xvc2VzdF9tYXJrZXIoImFzeW5jaW8iKSBpcyBub3QgTm9u
ZSBcCisgICAgICAgIGFuZCBub3QgZ2V0YXR0cihpdGVtLm9iaiwgJ2h5cG90aGVzaXMnLCBGYWxz
ZSkgXAorICAgICAgICBhbmQgZ2V0YXR0cihpdGVtLm9iaiwgJ2lzX2h5cG90aGVzaXNfdGVzdCcs
IEZhbHNlKToKKyAgICAgICAgICAgIHB5dGVzdC5mYWlsKAorICAgICAgICAgICAgICAgICd0ZXN0
IGZ1bmN0aW9uIGAlcmAgaXMgdXNpbmcgSHlwb3RoZXNpcywgYnV0IHB5dGVzdC1hc3luY2lvICcK
KyAgICAgICAgICAgICAgICAnb25seSB3b3JrcyB3aXRoIEh5cG90aGVzaXMgMy42NC4wIG9yIGxh
dGVyLicgJSBpdGVtCisgICAgICAgICAgICApCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZXZl
bnRfbG9vcChyZXF1ZXN0KToKKyAgICAiIiJDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGRlZmF1
bHQgZXZlbnQgbG9vcCBmb3IgZWFjaCB0ZXN0IGNhc2UuIiIiCisgICAgbG9vcCA9IGFzeW5jaW8u
Z2V0X2V2ZW50X2xvb3BfcG9saWN5KCkubmV3X2V2ZW50X2xvb3AoKQorICAgIHlpZWxkIGxvb3AK
KyAgICBsb29wLmNsb3NlKCkKKworCitkZWYgX3VudXNlZF90Y3BfcG9ydCgpOgorICAgICIiIkZp
bmQgYW4gdW51c2VkIGxvY2FsaG9zdCBUQ1AgcG9ydCBmcm9tIDEwMjQtNjU1MzUgYW5kIHJldHVy
biBpdC4iIiIKKyAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhzb2NrZXQuc29ja2V0KCkpIGFz
IHNvY2s6CisgICAgICAgIHNvY2suYmluZCgoJzEyNy4wLjAuMScsIDApKQorICAgICAgICByZXR1
cm4gc29jay5nZXRzb2NrbmFtZSgpWzFdCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgdW51c2Vk
X3RjcF9wb3J0KCk6CisgICAgcmV0dXJuIF91bnVzZWRfdGNwX3BvcnQoKQorCisKK0BweXRlc3Qu
Zml4dHVyZQorZGVmIHVudXNlZF90Y3BfcG9ydF9mYWN0b3J5KCk6CisgICAgIiIiQSBmYWN0b3J5
IGZ1bmN0aW9uLCBwcm9kdWNpbmcgZGlmZmVyZW50IHVudXNlZCBUQ1AgcG9ydHMuIiIiCisgICAg
cHJvZHVjZWQgPSBzZXQoKQorCisgICAgZGVmIGZhY3RvcnkoKToKKyAgICAgICAgIiIiUmV0dXJu
IGFuIHVudXNlZCBwb3J0LiIiIgorICAgICAgICBwb3J0ID0gX3VudXNlZF90Y3BfcG9ydCgpCisK
KyAgICAgICAgd2hpbGUgcG9ydCBpbiBwcm9kdWNlZDoKKyAgICAgICAgICAgIHBvcnQgPSBfdW51
c2VkX3RjcF9wb3J0KCkKKworICAgICAgICBwcm9kdWNlZC5hZGQocG9ydCkKKworICAgICAgICBy
ZXR1cm4gcG9ydAorICAgIHJldHVybiBmYWN0b3J5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1h
c3luY2lvL3NldHVwLmNmZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vc2V0dXAuY2ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjNhOGViYTJjZTVjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9zZXR1cC5jZmcKQEAgLTAsMCArMSwxOCBAQAor
W2NvdmVyYWdlOnJ1bl0KK3NvdXJjZSA9IHB5dGVzdF9hc3luY2lvCisKK1tjb3ZlcmFnZTpyZXBv
cnRdCitzaG93X21pc3NpbmcgPSB0cnVlCisKK1t0b29sOnB5dGVzdF0KK2FkZG9wdHMgPSAtcnN4
IC0tdGI9c2hvcnQKK3Rlc3RwYXRocyA9IHRlc3RzCitmaWx0ZXJ3YXJuaW5ncyA9IGVycm9yCisK
K1ttZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKKworW2VnZ19pbmZvXQordGFnX2J1
aWxkID0gCit0YWdfZGF0ZSA9IDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9z
ZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MTc1NzExMzUwNzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC1hc3luY2lvL3NldHVwLnB5CkBAIC0wLDAgKzEsNTQgQEAKK2ltcG9ydCByZQor
ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCisKK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAs
IGZpbmRfcGFja2FnZXMKKworCitkZWYgZmluZF92ZXJzaW9uKCk6CisgICAgdmVyc2lvbl9maWxl
ID0gKAorICAgICAgICBQYXRoKF9fZmlsZV9fKQorICAgICAgICAucGFyZW50LmpvaW5wYXRoKCJw
eXRlc3RfYXN5bmNpbyIsICJfX2luaXRfXy5weSIpCisgICAgICAgIC5yZWFkX3RleHQoKQorICAg
ICkKKyAgICB2ZXJzaW9uX21hdGNoID0gcmUuc2VhcmNoKAorICAgICAgICByIl5fX3ZlcnNpb25f
XyA9IFsnXCJdKFteJ1wiXSopWydcIl0iLCB2ZXJzaW9uX2ZpbGUsIHJlLk0KKyAgICApCisgICAg
aWYgdmVyc2lvbl9tYXRjaDoKKyAgICAgICAgcmV0dXJuIHZlcnNpb25fbWF0Y2guZ3JvdXAoMSkK
KworICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVW5hYmxlIHRvIGZpbmQgdmVyc2lvbiBzdHJpbmcu
IikKKworCitzZXR1cCgKKyAgICBuYW1lPSJweXRlc3QtYXN5bmNpbyIsCisgICAgdmVyc2lvbj1m
aW5kX3ZlcnNpb24oKSwKKyAgICBwYWNrYWdlcz1maW5kX3BhY2thZ2VzKCksCisgICAgdXJsPSJo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbyIsCisgICAgbGljZW5z
ZT0iQXBhY2hlIDIuMCIsCisgICAgYXV0aG9yPSJUaW4gVHZydGtvdmnEhyIsCisgICAgYXV0aG9y
X2VtYWlsPSJ0aW5jaGVzdGVyQGdtYWlsLmNvbSIsCisgICAgZGVzY3JpcHRpb249IlB5dGVzdCBz
dXBwb3J0IGZvciBhc3luY2lvLiIsCisgICAgbG9uZ19kZXNjcmlwdGlvbj1QYXRoKF9fZmlsZV9f
KS5wYXJlbnQuam9pbnBhdGgoIlJFQURNRS5yc3QiKS5yZWFkX3RleHQoKSwKKyAgICBjbGFzc2lm
aWVycz1bCisgICAgICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEiLAorICAgICAg
ICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgICAgICJMaWNlbnNlIDo6
IE9TSSBBcHByb3ZlZCA6OiBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSIsCisgICAgICAgICJQcm9n
cmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy41IiwKKyAgICAgICAgIlByb2dyYW1taW5n
IExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjYiLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3Vh
Z2UgOjogUHl0aG9uIDo6IDMuNyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy44IiwKKyAgICAgICAgIlRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6
IFRlc3RpbmciLAorICAgICAgICAiRnJhbWV3b3JrIDo6IFB5dGVzdCIsCisgICAgXSwKKyAgICBw
eXRob25fcmVxdWlyZXM9Ij49IDMuNSIsCisgICAgaW5zdGFsbF9yZXF1aXJlcz1bInB5dGVzdCA+
PSA1LjQuMCJdLAorICAgIGV4dHJhc19yZXF1aXJlPXsKKyAgICAgICAgJzpweXRob25fdmVyc2lv
biA9PSAiMy41Iic6ICJhc3luY19nZW5lcmF0b3IgPj0gMS4zIiwKKyAgICAgICAgInRlc3Rpbmci
OiBbCisgICAgICAgICAgICAiY292ZXJhZ2UiLAorICAgICAgICAgICAgImFzeW5jX2dlbmVyYXRv
ciA+PSAxLjMiLAorICAgICAgICAgICAgImh5cG90aGVzaXMgPj0gNS43LjEiLAorICAgICAgICBd
LAorICAgIH0sCisgICAgZW50cnlfcG9pbnRzPXsicHl0ZXN0MTEiOiBbImFzeW5jaW8gPSBweXRl
c3RfYXN5bmNpby5wbHVnaW4iXX0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uY292ZXJh
Z2VyYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0Ly5jb3ZlcmFnZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDlhYjM3NjQzMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvLmNvdmVyYWdlcmMKQEAgLTAsMCArMSwzMCBAQAorW3J1bl0KK2luY2x1ZGUgPQorICBzcmMv
KgorICB0ZXN0aW5nLyoKKyAgKi9saWIvcHl0aG9uKi9zaXRlLXBhY2thZ2VzL19weXRlc3QvKgor
ICAqL2xpYi9weXRob24qL3NpdGUtcGFja2FnZXMvcHl0ZXN0LnB5CisgICovcHlweSovc2l0ZS1w
YWNrYWdlcy9fcHl0ZXN0LyoKKyAgKi9weXB5Ki9zaXRlLXBhY2thZ2VzL3B5dGVzdC5weQorICAq
XExpYlxzaXRlLXBhY2thZ2VzXF9weXRlc3RcKgorICAqXExpYlxzaXRlLXBhY2thZ2VzXHB5dGVz
dC5weQorcGFyYWxsZWwgPSAxCiticmFuY2ggPSAxCisKK1twYXRoc10KK3NvdXJjZSA9IHNyYy8K
KyAgKi9saWIvcHl0aG9uKi9zaXRlLXBhY2thZ2VzLworICAqL3B5cHkqL3NpdGUtcGFja2FnZXMv
CisgICpcTGliXHNpdGUtcGFja2FnZXNcCisKK1tyZXBvcnRdCitza2lwX2NvdmVyZWQgPSBUcnVl
CitzaG93X21pc3NpbmcgPSBUcnVlCitleGNsdWRlX2xpbmVzID0KKyAgICBcI1xzKnByYWdtYTog
bm8gY292ZXIKKyAgICBeXHMqcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvclxiCisgICAgXlxzKnJl
dHVybiBOb3RJbXBsZW1lbnRlZFxiCisgICAgXlxzKmFzc2VydCBGYWxzZSgsfCQpCisKKyAgICBe
XHMqaWYgVFlQRV9DSEVDS0lORzoKKyAgICBeXHMqQG92ZXJsb2FkKCB8JCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0Ly5naXRhdHRyaWJ1dGVzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGF0dHJpYnV0ZXMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYzFjNjZkYzFlOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0YXR0cmlidXRlcwpAQCAtMCwwICsxIEBA
CisqLmJhdCAgdGV4dCBlb2w9Y3JsZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGJsYW1l
aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGJsYW1laWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMGNiMjk4YjAyNGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvLmdpdGJsYW1laWdub3JlCkBAIC0wLDAgKzEsMjggQEAKKyMgTGlzdCBvZiByZXZp
c2lvbnMgdGhhdCBjYW4gYmUgaWdub3JlZCB3aXRoIGdpdC1ibGFtZSgxKS4KKyMKKyMgU2VlIGBi
bGFtZS5pZ25vcmVSZXZzRmlsZWAgaW4gZ2l0LWNvbmZpZygxKSB0byBlbmFibGUgaXQgYnkgZGVm
YXVsdCwgb3IKKyMgdXNlIGl0IHdpdGggYC0taWdub3JlLXJldnMtZmlsZWAgbWFudWFsbHkgd2l0
aCBnaXQtYmxhbWUuCisjCisjIFRvICJpbnN0YWxsIiBpdDoKKyMKKyMgICBnaXQgY29uZmlnIC0t
bG9jYWwgYmxhbWUuaWdub3JlUmV2c0ZpbGUgLmdpdGJsYW1laWdub3JlCisKKyMgcnVuIGJsYWNr
Cis3MDNlNGIxMWJhNzYxNzFlY2NkM2YxM2U3MjNjNDdiODEwZGVkN2VmCisjIHN3aXRjaGVkIHRv
IHNyYyBsYXlvdXQKK2VhYTg4MmYzZDUzNDA5NTZiZWIxNzZhYTE3NTNlMDdlM2YzZjIxOTAKKyMg
cHJlLWNvbW1pdCBydW4gcHl1cGdyYWRlIC0tYWxsLWZpbGVzCithOTFmZTFmZWRkYmRlZDUzNWE0
MzIyYWI4NTQ0MjllM2EzOTYxZmI0CisjIG1vdmUgbm9kZSBiYXNlIGNsYXNzZXMgZnJvbSBtYWlu
IHRvIG5vZGVzCithZmM2MDdjZmQ4MTQ1OGQ0ZTRmM2IxZjNjZjhjYzkzMWI5MzM5MDdlCisjIFs/
XSBzcGxpdCBtb3N0IGZpeHR1cmUgcmVsYXRlZCBjb2RlIGludG8gb3duIHBsdWdpbgorOGM0OTU2
MTQ3MDcwODc2MWY3MzIxNTA0ZjVlODM0MzgxMWJlODdhYworIyBydW4gcHl1cGdyYWRlCis5YWFj
YjQ2MzVlODFlZGQ2ZWNmMjgxZDRmNmMwY2ZjOGU5NGFiMzAxCisjIHJ1biBibGFja2VuLWRvY3MK
KzVmOTVkY2U5NTYwMjkyMWE3MGJmYmM3ZDhkZTJmNzcxMmM1ZTQ1MDUKKyMgcmFuIHB5dXBncmFk
ZS1kb2NzIGFnYWluCis3NWQwYjg5OWJiYjU2ZDY4NDllOWQ2OWQ4M2E5NDI2ZWQzZjQzZjhiCisK
KyMgbW92ZSBhcmd1bWVudCBwYXJzZXIgdG8gb3duIGZpbGUKK2M5ZGY3N2NiZDZhMzY1ZGNiNzNj
Mzk2MThlNDg0MjcxMTgxN2U4NzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvRlVO
RElORy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0ZVTkRJTkcueW1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWYyZDFjZjA5YzgzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9GVU5ESU5HLnltbApAQCAtMCwwICsxLDUgQEAKKyMgaW5m
bzoKKyMgKiBodHRwczovL2hlbHAuZ2l0aHViLmNvbS9lbi9hcnRpY2xlcy9kaXNwbGF5aW5nLWEt
c3BvbnNvci1idXR0b24taW4teW91ci1yZXBvc2l0b3J5CisjICogaHR0cHM6Ly90aWRlbGlmdC5j
b20vc3Vic2NyaXB0aW9uL2hvdy10by1jb25uZWN0LXRpZGVsaWZ0LXdpdGgtZ2l0aHViCit0aWRl
bGlmdDogcHlwaS9weXRlc3QKK29wZW5fY29sbGVjdGl2ZTogcHl0ZXN0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1
Yi9JU1NVRV9URU1QTEFURS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJjYmIx
NmZjMzUxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1Q
TEFURS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhhbmtzIGZvciBzdWJtaXR0
aW5nIGFuIGlzc3VlIQotCi1IZXJlJ3MgYSBxdWljayBjaGVja2xpc3QgaW4gd2hhdCB0byBpbmNs
dWRlOgotCi0tIFsgXSBJbmNsdWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyBv
ciBzdWdnZXN0aW9uCi0tIFsgXSBgcGlwIGxpc3RgIG9mIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50
IHlvdSBhcmUgdXNpbmcKLS0gWyBdIHB5dGVzdCBhbmQgb3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9u
cwotLSBbIF0gTWluaW1hbCBleGFtcGxlIGlmIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLzFfYnVnX3JlcG9ydC5tZCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
Ly5naXRodWIvSVNTVUVfVEVNUExBVEUvMV9idWdfcmVwb3J0Lm1kCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGZjM2UwNmNkMmMwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS8xX2J1Z19yZXBvcnQubWQKQEAgLTAs
MCArMSwxNiBAQAorLS0tCituYW1lOiDwn5CbIEJ1ZyBSZXBvcnQKK2Fib3V0OiBSZXBvcnQgZXJy
b3JzIGFuZCBwcm9ibGVtcworCistLS0KKworPCEtLQorVGhhbmtzIGZvciBzdWJtaXR0aW5nIGFu
IGlzc3VlIQorCitRdWljayBjaGVjay1saXN0IHdoaWxlIHJlcG9ydGluZyBidWdzOgorLS0+CisK
Ky0gWyBdIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyBvciBwcm9ibGVtIHlvdSBh
cmUgaGF2aW5nCistIFsgXSBvdXRwdXQgb2YgYHBpcCBsaXN0YCBmcm9tIHRoZSB2aXJ0dWFsIGVu
dmlyb25tZW50IHlvdSBhcmUgdXNpbmcKKy0gWyBdIHB5dGVzdCBhbmQgb3BlcmF0aW5nIHN5c3Rl
bSB2ZXJzaW9ucworLSBbIF0gbWluaW1hbCBleGFtcGxlIGlmIHBvc3NpYmxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLzJfZmVhdHVyZV9yZXF1ZXN0Lm1k
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS8yX2ZlYXR1cmVfcmVxdWVzdC5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU0OTEyYjA1MjMzOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvSVNTVUVfVEVNUExBVEUvMl9m
ZWF0dXJlX3JlcXVlc3QubWQKQEAgLTAsMCArMSw1IEBACistLS0KK25hbWU6IPCfmoAgRmVhdHVy
ZSBSZXF1ZXN0CithYm91dDogSWRlYXMgZm9yIG5ldyBmZWF0dXJlcyBhbmQgaW1wcm92ZW1lbnRz
CisKKy0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9j
b25maWcueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9jb25maWcueW1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzQyZDJlNGQ2NjgwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9jb25m
aWcueW1sCkBAIC0wLDAgKzEsNSBAQAorYmxhbmtfaXNzdWVzX2VuYWJsZWQ6IGZhbHNlCitjb250
YWN0X2xpbmtzOgorICAtIG5hbWU6IOKdkyBTdXBwb3J0IFF1ZXN0aW9uCisgICAgdXJsOiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvZGlzY3Vzc2lvbnMKKyAgICBhYm91dDog
VXNlIEdpdEh1YidzIG5ldyBEaXNjdXNzaW9ucyBmZWF0dXJlIGZvciBxdWVzdGlvbnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKaW5kZXggMjNhOWY4YzU2
ODMyLi45NDA4ZmNlYWZlMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvUFVMTF9S
RVFVRVNUX1RFTVBMQVRFLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvUFVMTF9SRVFVRVNU
X1RFTVBMQVRFLm1kCkBAIC0xLDE0ICsxLDI2IEBACis8IS0tCiBUaGFua3MgZm9yIHN1Ym1pdHRp
bmcgYSBQUiwgeW91ciBjb250cmlidXRpb24gaXMgcmVhbGx5IGFwcHJlY2lhdGVkIQogCi1IZXJl
J3MgYSBxdWljayBjaGVja2xpc3QgdGhhdCBzaG91bGQgYmUgcHJlc2VudCBpbiBQUnMgKHlvdSBj
YW4gZGVsZXRlIHRoaXMgdGV4dCBmcm9tIHRoZSBmaW5hbCBkZXNjcmlwdGlvbiwgdGhpcyBpcwot
anVzdCBhIGd1aWRlbGluZSk6CitIZXJlIGlzIGEgcXVpY2sgY2hlY2tsaXN0IHRoYXQgc2hvdWxk
IGJlIHByZXNlbnQgaW4gUFJzLgogCi0tIFsgXSBDcmVhdGUgYSBuZXcgY2hhbmdlbG9nIGZpbGUg
aW4gdGhlIGBjaGFuZ2Vsb2dgIGZvbGRlciwgd2l0aCBhIG5hbWUgbGlrZSBgPElTU1VFIE5VTUJF
Uj4uPFRZUEU+LnJzdGAuIFNlZSBbY2hhbmdlbG9nL1JFQURNRS5yc3RdKC9jaGFuZ2Vsb2cvUkVB
RE1FLnJzdCkgZm9yIGRldGFpbHMuCi0tIFsgXSBUYXJnZXQgdGhlIGBtYXN0ZXJgIGJyYW5jaCBm
b3IgYnVnIGZpeGVzLCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIHRyaXZpYWwgY2hhbmdlcy4K
LS0gWyBdIFRhcmdldCB0aGUgYGZlYXR1cmVzYCBicmFuY2ggZm9yIG5ldyBmZWF0dXJlcyBhbmQg
cmVtb3ZhbHMvZGVwcmVjYXRpb25zLgogLSBbIF0gSW5jbHVkZSBkb2N1bWVudGF0aW9uIHdoZW4g
YWRkaW5nIG5ldyBmZWF0dXJlcy4KIC0gWyBdIEluY2x1ZGUgbmV3IHRlc3RzIG9yIHVwZGF0ZSBl
eGlzdGluZyB0ZXN0cyB3aGVuIGFwcGxpY2FibGUuCistIFtYXSBBbGxvdyBtYWludGFpbmVycyB0
byBwdXNoIGFuZCBzcXVhc2ggd2hlbiBtZXJnaW5nIG15IGNvbW1pdHMuIFBsZWFzZSB1bmNoZWNr
IHRoaXMgaWYgeW91IHByZWZlciB0byBzcXVhc2ggdGhlIGNvbW1pdHMgeW91cnNlbGYuCiAKLVVu
bGVzcyB5b3VyIGNoYW5nZSBpcyB0cml2aWFsIG9yIGEgc21hbGwgZG9jdW1lbnRhdGlvbiBmaXgg
KGUuZy4sICBhIHR5cG8gb3IgcmV3b3JkIG9mIGEgc21hbGwgc2VjdGlvbikgcGxlYXNlOgorSWYg
dGhpcyBjaGFuZ2UgZml4ZXMgYW4gaXNzdWUsIHBsZWFzZToKIAotLSBbIF0gQWRkIHlvdXJzZWxm
IHRvIGBBVVRIT1JTYCBpbiBhbHBoYWJldGljYWwgb3JkZXI7CistIFsgXSBBZGQgdGV4dCBsaWtl
IGBgY2xvc2VzICNYWVpXYGAgdG8gdGhlIFBSIGRlc2NyaXB0aW9uIGFuZC9vciBjb21taXRzICh3
aGVyZSBgYFhZWldgYCBpcyB0aGUgaXNzdWUgbnVtYmVyKS4gU2VlIHRoZSBbZ2l0aHViIGRvY3Nd
KGh0dHBzOi8vaGVscC5naXRodWIuY29tL2VuL2dpdGh1Yi9tYW5hZ2luZy15b3VyLXdvcmstb24t
Z2l0aHViL2xpbmtpbmctYS1wdWxsLXJlcXVlc3QtdG8tYW4taXNzdWUjbGlua2luZy1hLXB1bGwt
cmVxdWVzdC10by1hbi1pc3N1ZS11c2luZy1hLWtleXdvcmQpIGZvciBtb3JlIGluZm9ybWF0aW9u
LgorCitVbmxlc3MgeW91ciBjaGFuZ2UgaXMgdHJpdmlhbCBvciBhIHNtYWxsIGRvY3VtZW50YXRp
b24gZml4IChlLmcuLCBhIHR5cG8gb3IgcmV3b3JkIG9mIGEgc21hbGwgc2VjdGlvbikgcGxlYXNl
OgorCistIFsgXSBDcmVhdGUgYSBuZXcgY2hhbmdlbG9nIGZpbGUgaW4gdGhlIGBjaGFuZ2Vsb2dg
IGZvbGRlciwgd2l0aCBhIG5hbWUgbGlrZSBgPElTU1VFIE5VTUJFUj4uPFRZUEU+LnJzdGAuIFNl
ZSBbY2hhbmdlbG9nL1JFQURNRS5yc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9ibG9iL21hc3Rlci9jaGFuZ2Vsb2cvUkVBRE1FLnJzdCkgZm9yIGRldGFpbHMuCisKKyAg
V3JpdGUgc2VudGVuY2VzIGluIHRoZSAqKnBhc3Qgb3IgcHJlc2VudCB0ZW5zZSoqLCBleGFtcGxl
czoKKworICAqICpJbXByb3ZlZCB2ZXJib3NlIGRpZmYgb3V0cHV0IHdpdGggc2VxdWVuY2VzLioK
KyAgKiAqVGVybWluYWwgc3VtbWFyeSBzdGF0aXN0aWNzIG5vdyB1c2UgbXVsdGlwbGUgY29sb3Jz
LioKKworICBBbHNvIG1ha2Ugc3VyZSB0byBlbmQgdGhlIHNlbnRlbmNlIHdpdGggYSBgLmAuCisK
Ky0gWyBdIEFkZCB5b3Vyc2VsZiB0byBgQVVUSE9SU2AgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgor
LS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL2NvbmZpZy55bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC8uZ2l0aHViL2NvbmZpZy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi44NmE4YTk3ZTc4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0
aHViL2NvbmZpZy55bWwKQEAgLTAsMCArMSwyIEBACitydGQ6CisgIHByb2plY3Q6IHB5dGVzdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9sYWJlbHMudG9tbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
Ly5naXRodWIvbGFiZWxzLnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5hZWYxZTkxM2FmODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHVi
L2xhYmVscy50b21sCkBAIC0wLDAgKzEsMTQ5IEBACitbIm9zOiBjeWd3aW4iXQorY29sb3IgPSAi
MDA2Yjc1IgorZGVzY3JpcHRpb24gPSAiY3lnd2luIHBsYXRmb3JtLXNwZWNpZmljIHByb2JsZW0i
CituYW1lID0gIm9zOiBjeWd3aW4iCisKK1sib3M6IGxpbnV4Il0KK2NvbG9yID0gIjFkNzZkYiIK
K2Rlc2NyaXB0aW9uID0gImxpbnV4IHBsYXRmb3JtLXNwZWNpZmljIHByb2JsZW0iCituYW1lID0g
Im9zOiBsaW51eCIKKworWyJvczogbWFjIl0KK2NvbG9yID0gImJmZGFkYyIKK2Rlc2NyaXB0aW9u
ID0gIm1hYyBwbGF0Zm9ybS1zcGVjaWZpYyBwcm9ibGVtIgorbmFtZSA9ICJvczogbWFjIgorCitb
Im9zOiB3aW5kb3dzIl0KK2NvbG9yID0gImZiY2EwNCIKK2Rlc2NyaXB0aW9uID0gIndpbmRvd3Mg
cGxhdGZvcm0tc3BlY2lmaWMgcHJvYmxlbSIKK25hbWUgPSAib3M6IHdpbmRvd3MiCisKK1sicGx1
Z2luOiBhcmdjb21wbGV0ZSJdCitjb2xvciA9ICJkNGM1ZjkiCitkZXNjcmlwdGlvbiA9ICJyZWxh
dGVkIHRvIHRoZSBhcmdjb21wbGV0ZSBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBh
cmdjb21wbGV0ZSIKKworWyJwbHVnaW46IGNhY2hlIl0KK2NvbG9yID0gImM3ZGVmOCIKK2Rlc2Ny
aXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIGNhY2hlIGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJw
bHVnaW46IGNhY2hlIgorCitbInBsdWdpbjogY2FwdHVyZSJdCitjb2xvciA9ICIxZDc2ZGIiCitk
ZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBjYXB0dXJlIGJ1aWx0aW4gcGx1Z2luIgorbmFt
ZSA9ICJwbHVnaW46IGNhcHR1cmUiCisKK1sicGx1Z2luOiBkZWJ1Z2dpbmciXQorY29sb3IgPSAi
ZGQ1MmE4IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgZGVidWdnaW5nIGJ1aWx0aW4g
cGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IGRlYnVnZ2luZyIKKworWyJwbHVnaW46IGRvY3Rlc3Rz
Il0KK2NvbG9yID0gImZhZDhjNyIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIGRvY3Rl
c3RzIGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IGRvY3Rlc3RzIgorCitbInBsdWdp
bjoganVuaXR4bWwiXQorY29sb3IgPSAiYzVkZWY1IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0
byB0aGUganVuaXR4bWwgYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjoganVuaXR4bWwi
CisKK1sicGx1Z2luOiBsb2dnaW5nIl0KK2NvbG9yID0gImZmNTQzMiIKK2Rlc2NyaXB0aW9uID0g
InJlbGF0ZWQgdG8gdGhlIGxvZ2dpbmcgYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjog
bG9nZ2luZyIKKworWyJwbHVnaW46IG1vbmtleXBhdGNoIl0KK2NvbG9yID0gIjBlOGExNiIKK2Rl
c2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIG1vbmtleXBhdGNoIGJ1aWx0aW4gcGx1Z2luIgor
bmFtZSA9ICJwbHVnaW46IG1vbmtleXBhdGNoIgorCitbInBsdWdpbjogbm9zZSJdCitjb2xvciA9
ICJiZmRhZGMiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBub3NlIGludGVncmF0aW9u
IGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IG5vc2UiCisKK1sicGx1Z2luOiBwYXN0
ZWJpbiJdCitjb2xvciA9ICJiZmQ0ZjIiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBw
YXN0ZWJpbiBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBwYXN0ZWJpbiIKKworWyJw
bHVnaW46IHB5dGVzdGVyIl0KK2NvbG9yID0gImM1ZGVmNSIKK2Rlc2NyaXB0aW9uID0gInJlbGF0
ZWQgdG8gdGhlIHB5dGVzdGVyIGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IHB5dGVz
dGVyIgorCitbInBsdWdpbjogdG1wZGlyIl0KK2NvbG9yID0gImJmZDRmMiIKK2Rlc2NyaXB0aW9u
ID0gInJlbGF0ZWQgdG8gdGhlIHRtcGRpciBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2lu
OiB0bXBkaXIiCisKK1sicGx1Z2luOiB1bml0dGVzdCJdCitjb2xvciA9ICIwMDZiNzUiCitkZXNj
cmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSB1bml0dGVzdCBpbnRlZ3JhdGlvbiBidWlsdGluIHBs
dWdpbiIKK25hbWUgPSAicGx1Z2luOiB1bml0dGVzdCIKKworWyJwbHVnaW46IHdhcm5pbmdzIl0K
K2NvbG9yID0gImZlZjJjMCIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIHdhcm5pbmdz
IGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IHdhcm5pbmdzIgorCitbInBsdWdpbjog
eGRpc3QiXQorY29sb3IgPSAiNTMxOWU3IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUg
eGRpc3QgZXh0ZXJuYWwgcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IHhkaXN0IgorCitbInN0YXR1
czogY3JpdGljYWwiXQorY29sb3IgPSAiZTExZDIxIgorZGVzY3JpcHRpb24gPSAiZ3JhdmUgcHJv
YmxlbSBvciB1c2FiaWxpdHkgaXNzdWUgdGhhdCBhZmZlY3RzIGxvdHMgb2YgdXNlcnMiCituYW1l
ID0gInN0YXR1czogY3JpdGljYWwiCisKK1sic3RhdHVzOiBlYXN5Il0KK2NvbG9yID0gImJmZTVi
ZiIKK2Rlc2NyaXB0aW9uID0gImVhc3kgaXNzdWUgdGhhdCBpcyBmcmllbmRseSB0byBuZXcgY29u
dHJpYnV0b3IiCituYW1lID0gInN0YXR1czogZWFzeSIKKworWyJzdGF0dXM6IGhlbHAgd2FudGVk
Il0KK2NvbG9yID0gIjE1OTgxOCIKK2Rlc2NyaXB0aW9uID0gImRldmVsb3BlcnMgd291bGQgbGlr
ZSBoZWxwIGZyb20gZXhwZXJ0cyBvbiB0aGlzIHRvcGljIgorbmFtZSA9ICJzdGF0dXM6IGhlbHAg
d2FudGVkIgorCitbInN0YXR1czogbmVlZHMgaW5mb3JtYXRpb24iXQorY29sb3IgPSAiNTMxOWU3
IgorZGVzY3JpcHRpb24gPSAicmVwb3J0ZXIgbmVlZHMgdG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0
aW9uOyBjYW4gYmUgY2xvc2VkIGFmdGVyIDIgb3IgbW9yZSB3ZWVrcyBvZiBpbmFjdGl2aXR5Igor
bmFtZSA9ICJzdGF0dXM6IG5lZWRzIGluZm9ybWF0aW9uIgorCitbInRvcGljOiBjb2xsZWN0aW9u
Il0KK2NvbG9yID0gIjAwNmI3NSIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIGNvbGxl
Y3Rpb24gcGhhc2UiCituYW1lID0gInRvcGljOiBjb2xsZWN0aW9uIgorCitbInRvcGljOiBjb25m
aWciXQorY29sb3IgPSAiMDA2Yjc1IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byBjb25maWcg
aGFuZGxpbmcsIGFyZ3VtZW50IHBhcnNpbmcgYW5kIGNvbmZpZyBmaWxlIgorbmFtZSA9ICJ0b3Bp
YzogY29uZmlnIgorCitbInRvcGljOiBmaXh0dXJlcyJdCitjb2xvciA9ICI1MzE5ZTciCitkZXNj
cmlwdGlvbiA9ICJhbnl0aGluZyBpbnZvbHZpbmcgZml4dHVyZXMgZGlyZWN0bHkgb3IgaW5kaXJl
Y3RseSIKK25hbWUgPSAidG9waWM6IGZpeHR1cmVzIgorCitbInRvcGljOiBtYXJrcyJdCitjb2xv
ciA9ICJiNjAyMDUiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIG1hcmtzLCBlaXRoZXIgdGhl
IGdlbmVyYWwgbWFya3Mgb3IgYnVpbHRpbiIKK25hbWUgPSAidG9waWM6IG1hcmtzIgorCitbInRv
cGljOiBwYXJhbWV0cml6ZSJdCitjb2xvciA9ICJmYmNhMDQiCitkZXNjcmlwdGlvbiA9ICJyZWxh
dGVkIHRvIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSIKK25hbWUgPSAidG9waWM6IHBhcmFtZXRy
aXplIgorCitbInRvcGljOiByZXBvcnRpbmciXQorY29sb3IgPSAiZmVmMmMwIgorZGVzY3JpcHRp
b24gPSAicmVsYXRlZCB0byB0ZXJtaW5hbCBvdXRwdXQgYW5kIHVzZXItZmFjaW5nIG1lc3NhZ2Vz
IGFuZCBlcnJvcnMiCituYW1lID0gInRvcGljOiByZXBvcnRpbmciCisKK1sidG9waWM6IHJld3Jp
dGUiXQorY29sb3IgPSAiMGU4YTE2IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgYXNz
ZXJ0aW9uIHJld3JpdGUgbWVjaGFuaXNtIgorbmFtZSA9ICJ0b3BpYzogcmV3cml0ZSIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8u
Z2l0aHViL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjdj
ZjIyMjU2NGIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvUFVMTF9S
RVFVRVNUX1RFTVBMQVRFLm1kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL3dvcmtm
bG93cy9tYWluLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvd29ya2Zsb3dzL21haW4ueW1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWVmMWEwOGI5OTM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93b3JrZmxvd3MvbWFpbi55bWwKQEAg
LTAsMCArMSwyMTggQEAKK25hbWU6IG1haW4KKworb246CisgIHB1c2g6CisgICAgYnJhbmNoZXM6
CisgICAgICAtIG1hc3RlcgorICAgICAgLSAiWzAtOV0rLlswLTldKy54IgorICAgIHRhZ3M6Cisg
ICAgICAtICIqIgorCisgIHB1bGxfcmVxdWVzdDoKKyAgICBicmFuY2hlczoKKyAgICAgIC0gbWFz
dGVyCisgICAgICAtICJbMC05XSsuWzAtOV0rLngiCisKK2pvYnM6CisgIGJ1aWxkOgorICAgIHJ1
bnMtb246ICR7eyBtYXRyaXgub3MgfX0KKworICAgIHN0cmF0ZWd5OgorICAgICAgZmFpbC1mYXN0
OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBuYW1lOiBbCisgICAgICAgICAgIndpbmRv
d3MtcHkzNSIsCisgICAgICAgICAgIndpbmRvd3MtcHkzNiIsCisgICAgICAgICAgIndpbmRvd3Mt
cHkzNyIsCisgICAgICAgICAgIndpbmRvd3MtcHkzNy1wbHVnZ3kiLAorICAgICAgICAgICJ3aW5k
b3dzLXB5MzgiLAorCisgICAgICAgICAgInVidW50dS1weTM1IiwKKyAgICAgICAgICAidWJ1bnR1
LXB5MzYiLAorICAgICAgICAgICJ1YnVudHUtcHkzNyIsCisgICAgICAgICAgInVidW50dS1weTM3
LXBsdWdneSIsCisgICAgICAgICAgInVidW50dS1weTM3LWZyZWV6ZSIsCisgICAgICAgICAgInVi
dW50dS1weTM4IiwKKyAgICAgICAgICAidWJ1bnR1LXB5MzkiLAorICAgICAgICAgICJ1YnVudHUt
cHlweTMiLAorCisgICAgICAgICAgIm1hY29zLXB5MzciLAorICAgICAgICAgICJtYWNvcy1weTM4
IiwKKworICAgICAgICAgICJkb2NzIiwKKyAgICAgICAgICAiZG9jdGVzdGluZyIsCisgICAgICAg
ICAgInBsdWdpbnMiLAorICAgICAgICBdCisKKyAgICAgICAgaW5jbHVkZToKKyAgICAgICAgICAt
IG5hbWU6ICJ3aW5kb3dzLXB5MzUiCisgICAgICAgICAgICBweXRob246ICIzLjUiCisgICAgICAg
ICAgICBvczogd2luZG93cy1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJweTM1LXhkaXN0
IgorICAgICAgICAgICAgdXNlX2NvdmVyYWdlOiB0cnVlCisgICAgICAgICAgLSBuYW1lOiAid2lu
ZG93cy1weTM2IgorICAgICAgICAgICAgcHl0aG9uOiAiMy42IgorICAgICAgICAgICAgb3M6IHdp
bmRvd3MtbGF0ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkzNi14ZGlzdCIKKyAgICAgICAg
ICAtIG5hbWU6ICJ3aW5kb3dzLXB5MzciCisgICAgICAgICAgICBweXRob246ICIzLjciCisgICAg
ICAgICAgICBvczogd2luZG93cy1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJweTM3LW51
bXB5IgorICAgICAgICAgIC0gbmFtZTogIndpbmRvd3MtcHkzNy1wbHVnZ3kiCisgICAgICAgICAg
ICBweXRob246ICIzLjciCisgICAgICAgICAgICBvczogd2luZG93cy1sYXRlc3QKKyAgICAgICAg
ICAgIHRveF9lbnY6ICJweTM3LXBsdWdneW1hc3Rlci14ZGlzdCIKKyAgICAgICAgICAtIG5hbWU6
ICJ3aW5kb3dzLXB5MzgiCisgICAgICAgICAgICBweXRob246ICIzLjgiCisgICAgICAgICAgICBv
czogd2luZG93cy1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJweTM4LXVuaXR0ZXN0ZXh0
cmFzIgorICAgICAgICAgICAgdXNlX2NvdmVyYWdlOiB0cnVlCisKKyAgICAgICAgICAtIG5hbWU6
ICJ1YnVudHUtcHkzNSIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuNSIKKyAgICAgICAgICAgIG9z
OiB1YnVudHUtbGF0ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkzNS14ZGlzdCIKKyAgICAg
ICAgICAtIG5hbWU6ICJ1YnVudHUtcHkzNiIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuNiIKKyAg
ICAgICAgICAgIG9zOiB1YnVudHUtbGF0ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkzNi14
ZGlzdCIKKyAgICAgICAgICAtIG5hbWU6ICJ1YnVudHUtcHkzNyIKKyAgICAgICAgICAgIHB5dGhv
bjogIjMuNyIKKyAgICAgICAgICAgIG9zOiB1YnVudHUtbGF0ZXN0CisgICAgICAgICAgICB0b3hf
ZW52OiAicHkzNy1sc29mLW51bXB5LW9sZGF0dHJzLXBleHBlY3QiCisgICAgICAgICAgICB1c2Vf
Y292ZXJhZ2U6IHRydWUKKyAgICAgICAgICAtIG5hbWU6ICJ1YnVudHUtcHkzNy1wbHVnZ3kiCisg
ICAgICAgICAgICBweXRob246ICIzLjciCisgICAgICAgICAgICBvczogdWJ1bnR1LWxhdGVzdAor
ICAgICAgICAgICAgdG94X2VudjogInB5MzctcGx1Z2d5bWFzdGVyLXhkaXN0IgorICAgICAgICAg
IC0gbmFtZTogInVidW50dS1weTM3LWZyZWV6ZSIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuNyIK
KyAgICAgICAgICAgIG9zOiB1YnVudHUtbGF0ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkz
Ny1mcmVlemUiCisgICAgICAgICAgLSBuYW1lOiAidWJ1bnR1LXB5MzgiCisgICAgICAgICAgICBw
eXRob246ICIzLjgiCisgICAgICAgICAgICBvczogdWJ1bnR1LWxhdGVzdAorICAgICAgICAgICAg
dG94X2VudjogInB5MzgteGRpc3QiCisgICAgICAgICAgLSBuYW1lOiAidWJ1bnR1LXB5MzkiCisg
ICAgICAgICAgICBweXRob246ICIzLjktZGV2IgorICAgICAgICAgICAgb3M6IHVidW50dS1sYXRl
c3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJweTM5LXhkaXN0IgorICAgICAgICAgIC0gbmFtZTog
InVidW50dS1weXB5MyIKKyAgICAgICAgICAgIHB5dGhvbjogInB5cHkzIgorICAgICAgICAgICAg
b3M6IHVidW50dS1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJweXB5My14ZGlzdCIKKwor
ICAgICAgICAgIC0gbmFtZTogIm1hY29zLXB5MzciCisgICAgICAgICAgICBweXRob246ICIzLjci
CisgICAgICAgICAgICBvczogbWFjb3MtbGF0ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkz
Ny14ZGlzdCIKKyAgICAgICAgICAtIG5hbWU6ICJtYWNvcy1weTM4IgorICAgICAgICAgICAgcHl0
aG9uOiAiMy44IgorICAgICAgICAgICAgb3M6IG1hY29zLWxhdGVzdAorICAgICAgICAgICAgdG94
X2VudjogInB5MzgteGRpc3QiCisgICAgICAgICAgICB1c2VfY292ZXJhZ2U6IHRydWUKKworICAg
ICAgICAgIC0gbmFtZTogInBsdWdpbnMiCisgICAgICAgICAgICBweXRob246ICIzLjciCisgICAg
ICAgICAgICBvczogdWJ1bnR1LWxhdGVzdAorICAgICAgICAgICAgdG94X2VudjogInBsdWdpbnMi
CisKKyAgICAgICAgICAtIG5hbWU6ICJkb2NzIgorICAgICAgICAgICAgcHl0aG9uOiAiMy43Igor
ICAgICAgICAgICAgb3M6IHVidW50dS1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJkb2Nz
IgorICAgICAgICAgIC0gbmFtZTogImRvY3Rlc3RpbmciCisgICAgICAgICAgICBweXRob246ICIz
LjciCisgICAgICAgICAgICBvczogdWJ1bnR1LWxhdGVzdAorICAgICAgICAgICAgdG94X2Vudjog
ImRvY3Rlc3RpbmciCisgICAgICAgICAgICB1c2VfY292ZXJhZ2U6IHRydWUKKworICAgIHN0ZXBz
OgorICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgd2l0aDoKKyAgICAgICAg
ZmV0Y2gtZGVwdGg6IDAKKyAgICAtIG5hbWU6IFNldCB1cCBQeXRob24gJHt7IG1hdHJpeC5weXRo
b24gfX0KKyAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICBpZjogbWF0
cml4LnB5dGhvbiAhPSAnMy45LWRldicKKyAgICAgIHdpdGg6CisgICAgICAgIHB5dGhvbi12ZXJz
aW9uOiAke3sgbWF0cml4LnB5dGhvbiB9fQorICAgIC0gbmFtZTogU2V0IHVwIFB5dGhvbiAke3sg
bWF0cml4LnB5dGhvbiB9fSAoZGVhZHNuYWtlcykKKyAgICAgIHVzZXM6IGRlYWRzbmFrZXMvYWN0
aW9uQHYyLjAuMAorICAgICAgaWY6IG1hdHJpeC5weXRob24gPT0gJzMuOS1kZXYnCisgICAgICB3
aXRoOgorICAgICAgICBweXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob24gfX0KKyAgICAt
IG5hbWU6IEluc3RhbGwgZGVwZW5kZW5jaWVzCisgICAgICBydW46IHwKKyAgICAgICAgcHl0aG9u
IC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKKyAgICAgICAgcGlwIGluc3RhbGwgdG94IGNv
dmVyYWdlCisKKyAgICAtIG5hbWU6IFRlc3Qgd2l0aG91dCBjb3ZlcmFnZQorICAgICAgaWY6ICIh
IG1hdHJpeC51c2VfY292ZXJhZ2UiCisgICAgICBydW46ICJ0b3ggLWUgJHt7IG1hdHJpeC50b3hf
ZW52IH19IgorCisgICAgLSBuYW1lOiBUZXN0IHdpdGggY292ZXJhZ2UKKyAgICAgIGlmOiAibWF0
cml4LnVzZV9jb3ZlcmFnZSIKKyAgICAgIGVudjoKKyAgICAgICAgX1BZVEVTVF9UT1hfQ09WRVJB
R0VfUlVOOiAiY292ZXJhZ2UgcnVuIC1tIgorICAgICAgICBDT1ZFUkFHRV9QUk9DRVNTX1NUQVJU
OiAiLmNvdmVyYWdlcmMiCisgICAgICAgIF9QWVRFU1RfVE9YX0VYVFJBX0RFUDogImNvdmVyYWdl
LWVuYWJsZS1zdWJwcm9jZXNzIgorICAgICAgcnVuOiAidG94IC1lICR7eyBtYXRyaXgudG94X2Vu
diB9fSIKKworICAgIC0gbmFtZTogUHJlcGFyZSBjb3ZlcmFnZSB0b2tlbgorICAgICAgaWY6ICht
YXRyaXgudXNlX2NvdmVyYWdlICYmICggZ2l0aHViLnJlcG9zaXRvcnkgPT0gJ3B5dGVzdC1kZXYv
cHl0ZXN0JyB8fCBnaXRodWIuZXZlbnRfbmFtZSA9PSAncHVsbF9yZXF1ZXN0JyApKQorICAgICAg
cnVuOiB8CisgICAgICAgIHB5dGhvbiBzY3JpcHRzL2FwcGVuZF9jb2RlY292X3Rva2VuLnB5CisK
KyAgICAtIG5hbWU6IFJlcG9ydCBjb3ZlcmFnZQorICAgICAgaWY6IChtYXRyaXgudXNlX2NvdmVy
YWdlKQorICAgICAgZW52OgorICAgICAgICBDT0RFQ09WX05BTUU6ICR7eyBtYXRyaXgubmFtZSB9
fQorICAgICAgcnVuOiBiYXNoIHNjcmlwdHMvcmVwb3J0LWNvdmVyYWdlLnNoIC1GIEdIQSwke3sg
cnVubmVyLm9zIH19CisKKyAgbGludGluZzoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0Cisg
ICAgc3RlcHM6CisgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAgLSB1c2VzOiBh
Y3Rpb25zL3NldHVwLXB5dGhvbkB2MgorICAgIC0gbmFtZTogc2V0IFBZCisgICAgICBydW46IGVj
aG8gIjo6c2V0LWVudiBuYW1lPVBZOjokKHB5dGhvbiAtYyAnaW1wb3J0IGhhc2hsaWIsIHN5cztw
cmludChoYXNobGliLnNoYTI1NihzeXMudmVyc2lvbi5lbmNvZGUoKStzeXMuZXhlY3V0YWJsZS5l
bmNvZGUoKSkuaGV4ZGlnZXN0KCkpJykiCisgICAgLSB1c2VzOiBhY3Rpb25zL2NhY2hlQHYxCisg
ICAgICB3aXRoOgorICAgICAgICBwYXRoOiB+Ly5jYWNoZS9wcmUtY29tbWl0CisgICAgICAgIGtl
eTogcHJlLWNvbW1pdHwke3sgZW52LlBZIH19fCR7eyBoYXNoRmlsZXMoJy5wcmUtY29tbWl0LWNv
bmZpZy55YW1sJykgfX0KKyAgICAtIHJ1bjogcGlwIGluc3RhbGwgdG94CisgICAgLSBydW46IHRv
eCAtZSBsaW50aW5nCisKKyAgZGVwbG95OgorICAgIGlmOiBnaXRodWIuZXZlbnRfbmFtZSA9PSAn
cHVzaCcgJiYgc3RhcnRzV2l0aChnaXRodWIuZXZlbnQucmVmLCAncmVmcy90YWdzJykgJiYgZ2l0
aHViLnJlcG9zaXRvcnkgPT0gJ3B5dGVzdC1kZXYvcHl0ZXN0JworCisgICAgcnVucy1vbjogdWJ1
bnR1LWxhdGVzdAorCisgICAgbmVlZHM6IFtidWlsZF0KKworICAgIHN0ZXBzOgorICAgIC0gdXNl
czogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgd2l0aDoKKyAgICAgICAgZmV0Y2gtZGVwdGg6
IDAKKyAgICAtIG5hbWU6IFNldCB1cCBQeXRob24KKyAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAt
cHl0aG9uQHYyCisgICAgICB3aXRoOgorICAgICAgICBweXRob24tdmVyc2lvbjogIjMuNyIKKyAg
ICAtIG5hbWU6IEluc3RhbGwgZGVwZW5kZW5jaWVzCisgICAgICBydW46IHwKKyAgICAgICAgcHl0
aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKKyAgICAgICAgcGlwIGluc3RhbGwgLS11
cGdyYWRlIHdoZWVsIHNldHVwdG9vbHMgdG94CisgICAgLSBuYW1lOiBCdWlsZCBwYWNrYWdlCisg
ICAgICBydW46IHwKKyAgICAgICAgcHl0aG9uIHNldHVwLnB5IHNkaXN0IGJkaXN0X3doZWVsCisg
ICAgLSBuYW1lOiBQdWJsaXNoIHBhY2thZ2UgdG8gUHlQSQorICAgICAgdXNlczogcHlwYS9naC1h
Y3Rpb24tcHlwaS1wdWJsaXNoQG1hc3RlcgorICAgICAgd2l0aDoKKyAgICAgICAgdXNlcjogX190
b2tlbl9fCisgICAgICAgIHBhc3N3b3JkOiAke3sgc2VjcmV0cy5weXBpX3Rva2VuIH19CisgICAg
LSBuYW1lOiBQdWJsaXNoIEdpdEh1YiByZWxlYXNlIG5vdGVzCisgICAgICBlbnY6CisgICAgICAg
IEdIX1JFTEVBU0VfTk9URVNfVE9LRU46ICR7eyBzZWNyZXRzLnJlbGVhc2Vfbm90ZXMgfX0KKyAg
ICAgIHJ1bjogfAorICAgICAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBwYW5kb2MKKyAgICAgICAg
dG94IC1lIHB1Ymxpc2gtZ2gtcmVsZWFzZS1ub3RlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
LmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS1vbi1jb21tZW50LnltbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5n
aXRodWIvd29ya2Zsb3dzL3JlbGVhc2Utb24tY29tbWVudC55bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NDg2M2Q4OTZiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC8uZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLW9uLWNvbW1lbnQueW1sCkBAIC0w
LDAgKzEsMzEgQEAKKyMgcGFydCBvZiBvdXIgcmVsZWFzZSBwcm9jZXNzLCBzZWUgYHJlbGVhc2Ut
b24tY29tbWVudC5weWAKK25hbWU6IHJlbGVhc2Ugb24gY29tbWVudAorCitvbjoKKyAgaXNzdWVz
OgorICAgIHR5cGVzOiBbb3BlbmVkLCBlZGl0ZWRdCisgIGlzc3VlX2NvbW1lbnQ6CisgICAgdHlw
ZXM6IFtjcmVhdGVkLCBlZGl0ZWRdCisKK2pvYnM6CisgIGJ1aWxkOgorICAgIHJ1bnMtb246IHVi
dW50dS1sYXRlc3QKKworICAgIGlmOiAoZ2l0aHViLmV2ZW50LmNvbW1lbnQgJiYgc3RhcnRzV2l0
aChnaXRodWIuZXZlbnQuY29tbWVudC5ib2R5LCAnQHB5dGVzdGJvdCBwbGVhc2UnKSkgfHwgKGdp
dGh1Yi5ldmVudC5pc3N1ZSAmJiAhZ2l0aHViLmV2ZW50LmNvbW1lbnQgJiYgc3RhcnRzV2l0aChn
aXRodWIuZXZlbnQuaXNzdWUuYm9keSwgJ0BweXRlc3Rib3QgcGxlYXNlJykpCisKKyAgICBzdGVw
czoKKyAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIHdpdGg6CisgICAgICAg
IGZldGNoLWRlcHRoOiAwCisKKyAgICAtIG5hbWU6IFNldCB1cCBQeXRob24KKyAgICAgIHVzZXM6
IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICB3aXRoOgorICAgICAgICBweXRob24tdmVy
c2lvbjogIjMuOCIKKyAgICAtIG5hbWU6IEluc3RhbGwgZGVwZW5kZW5jaWVzCisgICAgICBydW46
IHwKKyAgICAgICAgcHl0aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKKyAgICAgICAg
cGlwIGluc3RhbGwgLS11cGdyYWRlIHNldHVwdG9vbHMgdG94CisgICAgLSBuYW1lOiBQcmVwYXJl
IHJlbGVhc2UKKyAgICAgIHJ1bjogfAorICAgICAgICB0b3ggLWUgcmVsZWFzZS1vbi1jb21tZW50
IC0tICRHSVRIVUJfRVZFTlRfUEFUSCAke3sgc2VjcmV0cy5jaGF0b3BzIH19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGlnbm9yZQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhZWE5ZWFjMDNmOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSw1NCBAQAorIyBBdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBieSBgaGdpbXBvcnRzdm5gCisuc3ZuCisuaGdzdm4KKworIyBJ
Z25vcmUgbG9jYWwgdmlydHVhbGVudnMKK2xpYi8KK2Jpbi8KK2luY2x1ZGUvCisuUHl0aG9uLwor
CisjIFRoZXNlIGxpbmVzIGFyZSBzdWdnZXN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzdm46aWdub3Jl
IHByb3BlcnR5CisjIEZlZWwgZnJlZSB0byBlbmFibGUgdGhlbSBieSB1bmNvbW1lbnRpbmcgdGhl
bQorKi5weWMKKyoucHlvCisqLnN3cAorKi5jbGFzcworKi5vcmlnCisqfgorLmh5cG90aGVzaXMv
CisKKyMgYXV0b2dlbmVyYXRlZAorc3JjL19weXRlc3QvX3ZlcnNpb24ucHkKKyMgc2V0dXB0b29s
cworLmVnZ3MvCisKK2RvYy8qL19idWlsZAorZG9jLyovLmRvY3RyZWVzCitkb2MvKi9fY2hhbmdl
bG9nX3Rvd25jcmllcl9kcmFmdC5yc3QKK2J1aWxkLworZGlzdC8KKyouZWdnLWluZm8KK2h0bWxj
b3YvCitpc3N1ZS8KK2Vudi8KKy5lbnYvCisudmVudi8KKzNyZHBhcnR5LworLnRveAorLmNhY2hl
CisucHl0ZXN0X2NhY2hlCisubXlweV9jYWNoZQorLmNvdmVyYWdlCisuY292ZXJhZ2UuKgorY292
ZXJhZ2UueG1sCisucm9wZXByb2plY3QKKy5pZGVhCisuaHlwb3RoZXNpcworLnB5ZGV2cHJvamVj
dAorLnByb2plY3QKKy5zZXR0aW5ncworLnZzY29kZQorCisjIGdlbmVyYXRlZCBieSBwaXAKK3Bp
cC13aGVlbC1tZXRhZGF0YS8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5wcmUtY29tbWl0LWNv
bmZpZy55YW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnByZS1jb21taXQtY29uZmlnLnlhbWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MDY4YTJkMzI0ZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC8ucHJlLWNvbW1pdC1jb25maWcueWFtbApAQCAtMCwwICsxLDgy
IEBACityZXBvczoKKy0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vcHNmL2JsYWNrCisgICAg
cmV2OiAxOS4xMGIwCisgICAgaG9va3M6CisgICAgLSAgIGlkOiBibGFjaworICAgICAgICBhcmdz
OiBbLS1zYWZlLCAtLXF1aWV0XQorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9hc290dGls
ZS9ibGFja2VuLWRvY3MKKyAgICByZXY6IHYxLjcuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDog
YmxhY2tlbi1kb2NzCisgICAgICAgIGFkZGl0aW9uYWxfZGVwZW5kZW5jaWVzOiBbYmxhY2s9PTE5
LjEwYjBdCistICAgcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL3ByZS1jb21taXQvcHJlLWNvbW1p
dC1ob29rcworICAgIHJldjogdjMuMS4wCisgICAgaG9va3M6CisgICAgLSAgIGlkOiB0cmFpbGlu
Zy13aGl0ZXNwYWNlCisgICAgLSAgIGlkOiBlbmQtb2YtZmlsZS1maXhlcgorICAgIC0gICBpZDog
Zml4LWVuY29kaW5nLXByYWdtYQorICAgICAgICBhcmdzOiBbLS1yZW1vdmVdCisgICAgLSAgIGlk
OiBjaGVjay15YW1sCisgICAgLSAgIGlkOiBkZWJ1Zy1zdGF0ZW1lbnRzCisgICAgICAgIGV4Y2x1
ZGU6IF9weXRlc3QvKGRlYnVnZ2luZ3xob29rc3BlYykucHkKKyAgICAgICAgbGFuZ3VhZ2VfdmVy
c2lvbjogcHl0aG9uMworLSAgIHJlcG86IGh0dHBzOi8vZ2l0bGFiLmNvbS9weWNxYS9mbGFrZTgK
KyAgICByZXY6IDMuOC4yCisgICAgaG9va3M6CisgICAgLSAgIGlkOiBmbGFrZTgKKyAgICAgICAg
bGFuZ3VhZ2VfdmVyc2lvbjogcHl0aG9uMworICAgICAgICBhZGRpdGlvbmFsX2RlcGVuZGVuY2ll
czoKKyAgICAgICAgICAtIGZsYWtlOC10eXBpbmctaW1wb3J0cz09MS45LjAKKyAgICAgICAgICAt
IGZsYWtlOC1kb2NzdHJpbmdzPT0xLjUuMAorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9h
c290dGlsZS9yZW9yZGVyX3B5dGhvbl9pbXBvcnRzCisgICAgcmV2OiB2Mi4zLjAKKyAgICBob29r
czoKKyAgICAtICAgaWQ6IHJlb3JkZXItcHl0aG9uLWltcG9ydHMKKyAgICAgICAgYXJnczogWyct
LWFwcGxpY2F0aW9uLWRpcmVjdG9yaWVzPS46c3JjJywgLS1weTMtcGx1c10KKy0gICByZXBvOiBo
dHRwczovL2dpdGh1Yi5jb20vYXNvdHRpbGUvcHl1cGdyYWRlCisgICAgcmV2OiB2Mi40LjQKKyAg
ICBob29rczoKKyAgICAtICAgaWQ6IHB5dXBncmFkZQorICAgICAgICBhcmdzOiBbLS1weTMtcGx1
c10KKy0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vYXNvdHRpbGUvc2V0dXAtY2ZnLWZtdAor
ICAgIHJldjogdjEuOS4wCisgICAgaG9va3M6CisgICAgLSAgIGlkOiBzZXR1cC1jZmctZm10Cisg
ICAgICAgICMgVE9ETzogd2hlbiB1cGdyYWRpbmcgc2V0dXAtY2ZnLWZtdCB0aGlzIGNhbiBiZSBy
ZW1vdmVkCisgICAgICAgIGFyZ3M6IFstLW1heC1weS12ZXJzaW9uPTMuOV0KKy0gICByZXBvOiBo
dHRwczovL2dpdGh1Yi5jb20vcHJlLWNvbW1pdC9taXJyb3JzLW15cHkKKyAgICByZXY6IHYwLjc4
MCAgIyBOT1RFOiBrZWVwIHRoaXMgaW4gc3luYyB3aXRoIHNldHVwLmNmZy4KKyAgICBob29rczoK
KyAgICAtICAgaWQ6IG15cHkKKyAgICAgICAgZmlsZXM6IF4oc3JjL3x0ZXN0aW5nLykKKyAgICAg
ICAgYXJnczogW10KKy0gICByZXBvOiBsb2NhbAorICAgIGhvb2tzOgorICAgIC0gICBpZDogcnN0
CisgICAgICAgIG5hbWU6IHJzdAorICAgICAgICBlbnRyeTogcnN0LWxpbnQgLS1lbmNvZGluZyB1
dGYtOAorICAgICAgICBmaWxlczogXihSRUxFQVNJTkcucnN0fFJFQURNRS5yc3R8VElERUxJRlQu
cnN0KSQKKyAgICAgICAgbGFuZ3VhZ2U6IHB5dGhvbgorICAgICAgICBhZGRpdGlvbmFsX2RlcGVu
ZGVuY2llczogW3B5Z21lbnRzLCByZXN0cnVjdHVyZWR0ZXh0X2xpbnRdCisgICAgLSAgIGlkOiBj
aGFuZ2Vsb2dzLXJzdAorICAgICAgICBuYW1lOiBjaGFuZ2Vsb2cgZmlsZW5hbWVzCisgICAgICAg
IGxhbmd1YWdlOiBmYWlsCisgICAgICAgIGVudHJ5OiAnY2hhbmdlbG9nIGZpbGVzIG11c3QgYmUg
bmFtZWQgIyMjIy4oYnJlYWtpbmd8YnVnZml4fGRlcHJlY2F0aW9ufGRvY3xmZWF0dXJlfGltcHJv
dmVtZW50fHRyaXZpYWx8dmVuZG9yKS5yc3QnCisgICAgICAgIGV4Y2x1ZGU6IGNoYW5nZWxvZy8o
XGQrXC4oYnJlYWtpbmd8YnVnZml4fGRlcHJlY2F0aW9ufGRvY3xmZWF0dXJlfGltcHJvdmVtZW50
fHRyaXZpYWx8dmVuZG9yKS5yc3R8UkVBRE1FLnJzdHxfdGVtcGxhdGUucnN0KQorICAgICAgICBm
aWxlczogXmNoYW5nZWxvZy8KKyAgICAtICAgaWQ6IHB5LWRlcHJlY2F0ZWQKKyAgICAgICAgbmFt
ZTogcHkgbGlicmFyeSBpcyBkZXByZWNhdGVkCisgICAgICAgIGxhbmd1YWdlOiBweWdyZXAKKyAg
ICAgICAgZW50cnk6ID4KKyAgICAgICAgICAgICg/eClcYnB5XC4oCisgICAgICAgICAgICAgICAg
X2NvZGVcLnwKKyAgICAgICAgICAgICAgICBidWlsdGluXC58CisgICAgICAgICAgICAgICAgY29k
ZVwufAorICAgICAgICAgICAgICAgIGlvXC58CisgICAgICAgICAgICAgICAgcGF0aFwubG9jYWxc
LnN5c2ZpbmR8CisgICAgICAgICAgICAgICAgcHJvY2Vzc1wufAorICAgICAgICAgICAgICAgIHN0
ZFwufAorICAgICAgICAgICAgICAgIGVycm9yXC58CisgICAgICAgICAgICAgICAgeG1sXC4KKyAg
ICAgICAgICAgICkKKyAgICAgICAgdHlwZXM6IFtweXRob25dCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC8ucmVhZHRoZWRvY3MueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnJlYWR0aGVkb2NzLnltbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAxNzZjMjY0MDAxNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5yZWFkdGhlZG9jcy55bWwKQEAgLTAsMCArMSwxMiBA
QAordmVyc2lvbjogMgorCitweXRob246CisgICB2ZXJzaW9uOiAzLjcKKyAgIGluc3RhbGw6Cisg
ICAgICAtIHJlcXVpcmVtZW50czogZG9jL2VuL3JlcXVpcmVtZW50cy50eHQKKyAgICAgIC0gbWV0
aG9kOiBwaXAKKyAgICAgICAgcGF0aDogLgorCitmb3JtYXRzOgorICAtIGVwdWIKKyAgLSBwZGYK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnRyYXZp
cy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41Yzg1ZGZlMWY1
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8udHJhdmlzLnltbApAQCAtMCwwICsx
LDYwIEBACitsYW5ndWFnZTogcHl0aG9uCitkaXN0OiB0cnVzdHkKK3B5dGhvbjogJzMuNS4xJwor
Y2FjaGU6IGZhbHNlCisKK2VudjoKKyAgZ2xvYmFsOgorICAgIC0gUFlURVNUX0FERE9QVFM9LXZ2
CisKKyMgc2V0dXB0b29scy1zY20gbmVlZHMgYWxsIHRhZ3MgaW4gb3JkZXIgdG8gb2J0YWluIGEg
cHJvcGVyIHZlcnNpb24KK2dpdDoKKyAgZGVwdGg6IGZhbHNlCisKK2luc3RhbGw6CisgIC0gcHl0
aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSAtLXByZSB0b3gKKworam9iczoKKyAgaW5jbHVk
ZToKKyAgICAjIENvdmVyYWdlIGZvciBQeXRob24gMy41LnswLDF9IHNwZWNpZmljIGNvZGUsIG1v
c3RseSB0eXBpbmcgcmVsYXRlZC4KKyAgICAtIGVudjogVE9YRU5WPXB5MzUgUFlURVNUX0NPVkVS
QUdFPTEgUFlURVNUX0FERE9QVFM9Ii1rIHRlc3RfcmFpc2VzX2N5Y2xpY19yZWZlcmVuY2UiCisg
ICAgICBiZWZvcmVfaW5zdGFsbDoKKyAgICAgICAgIyBXb3JrIGFyb3VuZCBodHRwczovL2dpdGh1
Yi5jb20vamFyYWNvL3ppcHAvaXNzdWVzLzQwLgorICAgICAgICAtIHB5dGhvbiAtbSBwaXAgaW5z
dGFsbCAtVSAnc2V0dXB0b29scz49MzQuNC4wJyB2aXJ0dWFsZW52PT0xNi43LjkKKworYmVmb3Jl
X3NjcmlwdDoKKyAgLSB8CisgICAgIyBEbyBub3QgKHJlLSl1cGxvYWQgY292ZXJhZ2Ugd2l0aCBj
cm9uIHJ1bnMuCisgICAgaWYgW1sgIiRUUkFWSVNfRVZFTlRfVFlQRSIgPSBjcm9uIF1dOyB0aGVu
CisgICAgICBQWVRFU1RfQ09WRVJBR0U9MAorICAgIGZpCisgIC0gfAorICAgIGlmIFtbICIkUFlU
RVNUX0NPVkVSQUdFIiA9IDEgXV07IHRoZW4KKyAgICAgIGV4cG9ydCBDT1ZFUkFHRV9GSUxFPSIk
UFdELy5jb3ZlcmFnZSIKKyAgICAgIGV4cG9ydCBDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUPSIkUFdE
Ly5jb3ZlcmFnZXJjIgorICAgICAgZXhwb3J0IF9QWVRFU1RfVE9YX0NPVkVSQUdFX1JVTj0iY292
ZXJhZ2UgcnVuIC1tIgorICAgICAgZXhwb3J0IF9QWVRFU1RfVE9YX0VYVFJBX0RFUD1jb3ZlcmFn
ZS1lbmFibGUtc3VicHJvY2VzcworICAgIGZpCisKK3NjcmlwdDogdG94CisKK2FmdGVyX3N1Y2Nl
c3M6CisgIC0gfAorICAgIGlmIFtbICIkUFlURVNUX0NPVkVSQUdFIiA9IDEgXV07IHRoZW4KKyAg
ICAgIGVudiBDT0RFQ09WX05BTUU9IiRUT1hFTlYtJFRSQVZJU19PU19OQU1FIiBzY3JpcHRzL3Jl
cG9ydC1jb3ZlcmFnZS5zaCAtRiBUcmF2aXMKKyAgICBmaQorCitub3RpZmljYXRpb25zOgorICBp
cmM6CisgICAgY2hhbm5lbHM6CisgICAgICAtICJjaGF0LmZyZWVub2RlLm5ldCNweXRlc3QiCisg
ICAgb25fc3VjY2VzczogY2hhbmdlCisgICAgb25fZmFpbHVyZTogY2hhbmdlCisgICAgc2tpcF9q
b2luOiB0cnVlCisgIGVtYWlsOgorICAgIC0gcHl0ZXN0LWNvbW1pdEBweXRob24ub3JnCisKK2Jy
YW5jaGVzOgorICBvbmx5OgorICAgIC0gbWFzdGVyCisgICAgLSAvXlxkK1wuXGQrXC54JC8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L0FVVEhPUlMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9BVVRIT1JTCmluZGV4
IDNlZGZkY2Y4NWVhNi4uYzhkZmVjNDAxMGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9BVVRI
T1JTCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L0FVVEhPUlMKQEAgLTYsMjAgKzYsMzIgQEAgQ29udHJpYnV0
b3JzIGluY2x1ZGU6OgogQWFyb24gQ29sZW1hbgogQWJkZWFsaSBKSwogQWJoaWplZXQgS2FzdXJk
ZQorQWRhbSBKb2huc29uCitBZGFtIFVobGlyCiBBaG4gS2ktV29vaworQWtpb21pIEthbWFrdXJh
CiBBbGFuIFZlbGFzY28KIEFsZXhhbmRlciBKb2huc29uCiBBbGV4ZWkgS296bGVub2sKK0FsbGFu
IEZlbGRtYW4KK0FseSBTaXZqaQorQW1pciBFbGtlc3MKIEFuYXRvbHkgQnViZW5rb2ZmCiBBbmRl
cnMgSG92bcO2bGxlcgorQW5kcmFzIE1pdHpraQogQW5kcmFzIFRpbQorQW5kcmVhIENpbWF0b3Jp
YnVzCiBBbmRyZWFzIFplaWRsZXIKK0FuZHJleSBQYXJhbW9ub3YKK0FuZHJ6ZWogS2xham5lcnQK
IEFuZHJ6ZWogT3N0cm93c2tpCiBBbmR5IEZyZWVsYW5kCiBBbnRob24gdmFuIGRlciBOZXV0CiBB
bnRob255IFNoYXcKIEFudGhvbnkgU290dGlsZQorQW50b24gTG9kZGVyCiBBbnRvbnkgTGVlCitB
cmVsIENvcmRlcm8KIEFybWluIFJpZ28KIEFyb24gQ295bGUKIEFyb24gQ3Vyem9uCkBAIC00MCwy
NCArNTIsMzggQEAgQ2FybCBGcmllZHJpY2ggQm9segogQ2FybG9zIEplbmtpbnMKIENlcmlkd2Vu
CiBDaGFybGVzIENsb3VkCitDaGFybGVzIE1hY2hhbG93CiBDaGFybmppdCBTaU5HSCAoQ0NTSikK
IENocmlzIExhbWIKIENocmlzdGlhbiBCb2Vsc2VuCitDaHJpc3RpYW4gRmV0emVyCitDaHJpc3Rp
YW4gTmV1bcO8bGxlcgogQ2hyaXN0aWFuIFRoZXVuZXJ0CiBDaHJpc3RpYW4gVGlzbWVyCitDaHJp
c3RvcGggQnVlbHRlcgorQ2hyaXN0b3BoZXIgRGlnbmFtCiBDaHJpc3RvcGhlciBHaWxsaW5nCitD
bGFpcmUgQ2VjaWwKK0NsYXVkaW8gTWFkb3R0bworQ3JhenlNZXJseW4KIEN5cnVzIE1hZGVuCitE
YW1pYW4gU2tyenlwY3phawogRGFuaWVsIEdyYW5hCiBEYW5pZWwgSGFobGVyCiBEYW5pZWwgTnVy
aQogRGFuaWVsIFdhbmRzY2huZWlkZXIKIERhbmllbGxlIEplbmtpbnMKK0RhbmlpbCBHYWxpZXYK
IERhdmUgSHVudAogRGF2aWQgRMOtYXotQmFycXVlcm8KIERhdmlkIE1vaHIKK0RhdmlkIFBhdWwg
UsO2dGhsaXNiZXJnZXIKK0RhdmlkIFN6b3R0ZW4KIERhdmlkIFZpZXJyYQogRGF3LVJhbiBMaW91
CitEZWJpIE1pc2hyYQogRGVuaXMgS2lyaXNvdgorRGhpcmVuIFNlcmFpCiBEaWVnbyBSdXNzbwog
RG1pdHJ5IER5Z2FsbwogRG1pdHJ5IFByaWJ5c2gKQEAgLTcwLDI2ICs5Niw0MCBAQCBFbGl6YXZl
dGEgU2hhc2hrb3ZhCiBFbmRyZSBHYWxhY3ppCiBFcmljIEh1bnNiZXJnZXIKIEVyaWMgU2llZ2Vy
bWFuCitFcmlrIEFyb25lc3R5CiBFcmlrIE0uIEJyYXkKK0V2YW4gS2VwbmVyCitGYWJpZW4gWmFy
aWZpYW4KK0ZhYmlvIFphZHJvem55CitGZWxpeCBOaWV1d2VuaHVpemVuCiBGZW5nIE1hCiBGbG9y
aWFuIEJydWhpbgorRmxvcmlhbiBEYWhsaXR6CiBGbG9yaXMgQnJ1eW5vb2doZQogR2FicmllbCBS
ZWlzCitHZW5lIFdvb2QKIEdlb3JnZSBLdXNzdW1vdG8KIEdlb3JneSBEeXVsZGluCitHbGViIE5p
a29ub3JvdgogR3JhaGFtIEhvcmxlcgogR3JlZyBQcmljZQorR3JlZ29yeSBMZWUKIEdyaWcgR2hl
b3JnaGl1CiBHcmlnb3JpaSBFcmVtZWV2IChidWR1bGlhbmluKQogR3VpZG8gV2VzZG9ycAogR3Vv
cWlhbmcgWmhhbmcKIEhhcmFsZCBBcm1pbiBNYXNzYQogSGVuay1KYWFwIFdhZ2VuYWFyCitIb2xn
ZXIgS29ocgogSHVnbyB2YW4gS2VtZW5hZGUKIEh1aSBXYW5nIChjb2xkbmlnaHQpCiBJYW4gQmlj
a2luZwogSWFuIExlc3BlcmFuY2UKK0lseWEgS29uc3RhbnRpbm92CitJb251yJsgVHVydHVyaWPE
gworSXdhbiBCcmlxdWVtb250CiBKYWFwIEJyb2VraHVpemVuCitKYWt1YiBNaXRvcmFqCiBKYW4g
QmFsc3RlcgogSmFubmUgVmFuaGFsYQogSmFzb24gUi4gQ29vbWJzCkBAIC05Nyw2ICsxMzcsNyBA
QCBKYXZpZXIgRG9taW5nbyBDYW5zaW5vCiBKYXZpZXIgUm9tZXJvCiBKZWZmIFJhY2thdWNrYXMK
IEplZmYgV2lkbWFuCitKZW5uaSBSaW5rZXIKIEpvaG4gRWRkaWUgQXlzb24KIEpvaG4gVG93bGVy
CiBKb24gU29uZXNlbgpAQCAtMTA0LDE4ICsxNDUsMjggQEAgSm9uYXMgT2JyaXN0CiBKb3JkYW4g
R3V5bW9uCiBKb3JkYW4gTW9sZG93CiBKb3JkYW4gU3BlaWNoZXIKK0pvc2VwaCBIdW5rZWxlcgor
Sm9zaCBLYXJwZWwKIEpvc2h1YSBCcm9uc29uCiBKdXJrbyBHb3Nwb2RuZXRpxIcKIEp1c3R5bmEg
SmFuY3p5c3p5bgogS2FsZSBLdW5kZXJ0CitLYW1yYW4gQWhtYWQKK0thcmwgTy4gUGluYwogS2F0
YXJ6eW5hIEphY2hpbQorS2F0YXJ6eW5hIEtyw7NsCiBLYXRlcmluYSBLb3VraW91CitLZXJpIFZv
bGFucwogS2V2aW4gQ294CitLZXZpbiBKLiBGb2xleQogS29kaSBCLiBBcmZlcgogS29zdGlzIEFu
YWdub3N0b3BvdWxvcworS3Jpc3RvZmZlciBOb3Jkc3Ryw7ZtCitLeWxlIEFsdGVuZG9yZgogTGF3
cmVuY2UgTWl0Y2hlbGwKIExlZSBLYW1lbnRza3kKIExldiBNYXhpbW92CitMZXdpcyBDb3dsZXMK
IExsYW5keSBSaXZlcm9uIERlbCBSaXNjbwogTG9pYyBFc3RldmUKIEx1a2FzIEJlZG5hcgpAQCAt
MTI2LDggKzE3NywxMSBAQCBNYWlrIEZpZ3VyYQogTWFuZGVlcCBCaHV0YW5pCiBNYW51ZWwgS3Jl
YmJlcgogTWFyYyBTY2hsYWljaAorTWFyY2VsbyBEdWFydGUgVHJldmlzYW5pCiBNYXJjaW4gQmFj
aHJ5CitNYXJjbyBHb3JlbGxpCiBNYXJrIEFicmFtb3dpdHoKK01hcmsgRGlja2luc29uCiBNYXJr
dXMgVW50ZXJ3YWRpdHplcgogTWFydGlqbiBGYWFzc2VuCiBNYXJ0aW4gQWx0bWF5ZXIKQEAgLTEz
OSw3NSArMTkzLDEyMCBAQCBNYXR0IER1Y2sKIE1hdHQgV2lsbGlhbXMKIE1hdHRoaWFzIEhhZm5l
cgogTWF4aW0gRmlsaXBlbmtvCitNYXhpbWlsaWFuIENvc21vIFNpdHRlcgogbWJ5dAogTWljaGFl
bCBBcXVpbGluYQogTWljaGFlbCBCaXJ0d2VsbAogTWljaGFlbCBEcm9ldHRib29tCitNaWNoYWVs
IEdvZXJ6CitNaWNoYWVsIEtyZWJzCiBNaWNoYWVsIFNlaWZlcnQKIE1pY2hhbCBXYWpzemN6dWsK
IE1paGFpIENhcG90xIMKK01pa2UgSG95bGUgKGhveWxlbWQpCiBNaWtlIEx1bmR5CiBNaXJvIEhy
b27EjW9rCitOYXRoYW5pZWwgQ29tcHRvbgogTmF0aGFuaWVsIFdhaXNicm90CiBOZWQgQmF0Y2hl
bGRlcgogTmV2ZW4gTXVuZGFyCitOaWNob2xhcyBEZXZlbmlzaAorTmljaG9sYXMgTXVycGh5CitO
aWNsYXMgT2xvZnNzb24KIE5pY29sYXMgRGVsYWJ5CitOaWtvbGF5IEtvbmRyYXR5ZXYKIE9sZWcg
UGlkc2FkbnlpCiBPbGVnIFN1c2hjaGVua28KIE9saXZlciBCZXN0d2FsdGVyCiBPbWFyIEtvaGwK
IE9tZXIgSGFkYXJpCitPbmTFmWVqIFPDumt1cAorT3NjYXIgQmVuamFtaW4KIFBhdHJpY2sgSGF5
ZXMKK1BhdWxpIFZpcnRhbmVuCitQYXZlbCBLYXJhdGVldgogUGF3ZcWCIEFkYW1jemFrCiBQZWRy
byBBbGdhcnZpbworUGhpbGlwcCBMb29zZQogUGlldGVyIE11bGRlcgogUGlvdHIgQmFuYXN6a2ll
d2ljegorUGlvdHIgSGVsbQorUHJhc2hhbnQgQW5hbmQKK1B1bGtpdCBHb3lhbAogUHVueWFzaGxv
a2EgQmlzd2FsCiBRdWVudGluIFByYWRldAogUmFsZiBTY2htaXR0CitSYW0gUmFjaHVtCitSYWxw
aCBHaWxlcwogUmFuIEJlbml0YQogUmFwaGFlbCBDYXN0YW5lZGEKIFJhcGhhZWwgUGllcnppbmEK
IFJhcXVlbCBBbGVncmUKIFJhdmkgQ2hhbmRyYQorUm9iZXJ0IEhvbHQKIFJvYmVydG8gUG9sbGkK
K1JvbGFuZCBQdW50YWllcgogUm9tYWluIERvcmd1ZWlsCiBSb21hbiBCb2xzaGFrb3YKIFJvbm55
IFBmYW5uc2NobWlkdAogUm9zcyBMYXdsZXkKK1J1YXJpZGggV2lsbGlhbXNvbgogUnVzc2VsIFdp
bmRlcgogUnlhbiBXb29kZW4KIFNhbXVlbCBEaW9uLUdpcmFyZGVhdQorU2FtdWVsIFNlYXJsZXMt
QnJ5YW50CiBTYW11ZWxlIFBlZHJvbmkKK1Nhbmt0IFBldGVyc2J1ZwogU2VnZXYgRmluZXIKK1Nl
cmhpaSBNb3pnaG92eWkKK1NldGggSnVub3QKIFNpbW9uIEdvbWl6ZWxqCitTaW1vbiBLZXJyCiBT
a3lsYXIgRG93bmVzCiBTcmluaXZhcyBSZWRkeSBUaGF0aXBhcnRoeQogU3RlZmFuIEZhcm1iYXVl
cgorU3RlZmFuIFNjaGVyZmtlCiBTdGVmYW4gWmltbWVybWFubgogU3RlZmFubyBUYXNjaGluaQog
U3RlZmZlbiBBbGxuZXIKIFN0ZXBoYW4gT2Jlcm1hbm4KK1N2ZW4tSGVuZHJpayBIYWFzZQorU3ls
dmFpbiBNYXJpw6kKK1RhZGVrIFRlbGXFvHnFhHNraQorVGFrYWZ1bWkgQXJha2FraQogVGFyY2lz
aW8gRmlzY2hlcgogVGFyZXEgQWxheWFuCiBUZWQgWGlhbwogVGhvbWFzIEdyYWluZ2VyCiBUaG9t
YXMgSGlzY2gKK1RpbSBIb2ZmbWFubgogVGltIFN0cmF6bnkKIFRvbSBEYWx0b24KIFRvbSBWaW5l
cgorVG9tw6HFoSBHYXZlbsSNaWFrCitUb21lciBLZXJlbgorVG9yIENvbHZpbgogVHJldm9yIEJl
a29sYXkKIFR5bGVyIEdvb2RsZXQKIFR6dS1waW5nIENodW5nCiBWYXNpbHkgS3V6bmV0c292CitW
aWN0b3IgTWFyeWFtYQogVmljdG9yIFVyaWFydGUKIFZpZGFyIFQuIEZhdXNrZQorVmlyZ2lsIER1
cHJhcwogVml0YWx5IExhc2htYW5vdgogVmxhZCBEcmFnb3MKK1ZsYWQgUmFkeml1aworVmxhZHlz
bGF2IFJhY2hlaworVm9sb2R5bXlyIFBpc2t1bgorV2VpIExpbgorV2lsIENvb2xleQogV2lsbGlh
bSBMZWUKK1dpbSBHbGVubgogV291dGVyIHZhbiBBY2tvb3kKK1hpeGkgWmhhbwogWHVhbiBMdW9u
ZwogWHVlY29uZyBMaWFvCitZb2F2IENhc3BpCitaYWMgSGF0ZmllbGQtRG9kZHMKIFpvbHTDoW4g
TcOhdMOpCi1Sb2xhbmQgUHVudGFpZXIKLUFsbGFuIEZlbGRtYW4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L0NIQU5HRUxPRy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DSEFOR0VMT0cucnN0CmluZGV4IDIx
YTA5MDQxNGEwZC4uMzg2NWYyNTBjMjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DSEFOR0VM
T0cucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NIQU5HRUxPRy5yc3QKQEAgLTEsNDg4MyArMSw3IEBA
Ci0uLgotICAgIFlvdSBzaG91bGQgKk5PVCogYmUgYWRkaW5nIG5ldyBjaGFuZ2UgbG9nIGVudHJp
ZXMgdG8gdGhpcyBmaWxlLCB0aGlzCi0gICAgZmlsZSBpcyBtYW5hZ2VkIGJ5IHRvd25jcmllci4g
WW91ICptYXkqIGVkaXQgcHJldmlvdXMgY2hhbmdlIGxvZ3MgdG8KLSAgICBmaXggcHJvYmxlbXMg
bGlrZSB0eXBvIGNvcnJlY3Rpb25zIG9yIHN1Y2guCi0gICAgVG8gYWRkIGEgbmV3IGNoYW5nZSBs
b2cgZW50cnksIHBsZWFzZSBzZWUKLSAgICBodHRwczovL3BpcC5weXBhLmlvL2VuL2xhdGVzdC9k
ZXZlbG9wbWVudC8jYWRkaW5nLWEtbmV3cy1lbnRyeQotICAgIHdlIG5hbWVkIHRoZSBuZXdzIGZv
bGRlciBjaGFuZ2Vsb2cKKz09PT09PT09PQorQ2hhbmdlbG9nCis9PT09PT09PT0KIAotLi4gdG93
bmNyaWVyIHJlbGVhc2Ugbm90ZXMgc3RhcnQKK1RoZSBweXRlc3QgQ0hBTkdFTE9HIGlzIGxvY2F0
ZWQgYGhlcmUgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRt
bD5gX18uCiAKLVB5dGVzdCAzLjYuMiAoMjAxOC0wNi0yMCkKLT09PT09PT09PT09PT09PT09PT09
PT09PT0KLQotQnVnIEZpeGVzCi0tLS0tLS0tLS0KLQotLSBGaXggcmVncmVzc2lvbiBpbiBgYE5v
ZGUuYWRkX21hcmtlcmBgIGJ5IGV4dHJhY3RpbmcgdGhlIG1hcmsgb2JqZWN0IG9mIGEKLSAgYGBN
YXJrRGVjb3JhdG9yYGAuIChgIzM1NTUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzU1NT5gXykKLQotLSBXYXJuaW5ncyB3aXRob3V0IGBgbG9jYXRpb25g
YCB3ZXJlIHJlcG9ydGVkIGFzIGBgTm9uZWBgLiBUaGlzIGlzIGNvcnJlY3RlZCB0bwotICBub3cg
cmVwb3J0IGBgPHVuZGV0ZXJtaW5lZCBsb2NhdGlvbj5gYC4gKGAjMzU2MwotICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTYzPmBfKQotCi0tIENvbnRpbnVl
IHRvIGNhbGwgZmluYWxpemVycyBpbiB0aGUgc3RhY2sgd2hlbiBhIGZpbmFsaXplciBpbiBhIGZv
cm1lciBzY29wZQotICByYWlzZXMgYW4gZXhjZXB0aW9uLiAoYCMzNTY5Ci0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1Njk+YF8pCi0KLS0gRml4IGVuY29k
aW5nIGVycm9yIHdpdGggYHByaW50YCBzdGF0ZW1lbnRzIGluIGRvY3Rlc3RzIChgIzM1ODMKLSAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU4Mz5gXykKLQot
Ci1JbXByb3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gQWRk
IGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYC0tc3RyaWN0YGAgZmxhZy4gKGAjMzU0OQotICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTQ5PmBfKQotCi0KLVRy
aXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gVXBk
YXRlIG9sZCBxdW90YXRpb24gc3R5bGUgdG8gcGFyZW5zIGluIGZpeHR1cmUucnN0IGRvY3VtZW50
YXRpb24uIChgIzM1MjUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzUyNT5gXykKLQotLSBJbXByb3ZlIGRpc3BsYXkgb2YgaGludCBhYm91dCBgYC0tZnVs
bHRyYWNlYGAgd2l0aCBgYEtleWJvYXJkSW50ZXJydXB0YGAuCi0gIChgIzM1NDUgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU0NT5gXykKLQotLSBweXRlc3Qn
cyB0ZXN0c3VpdGUgaXMgbm8gbG9uZ2VyIHJ1bm5hYmxlIHRocm91Z2ggYGBweXRob24gc2V0dXAu
cHkgdGVzdGBgIC0tCi0gIGluc3RlYWQgaW52b2tlIGBgcHl0ZXN0YGAgb3IgYGB0b3hgYCBkaXJl
Y3RseS4gKGAjMzU1MgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNTUyPmBfKQotCi0tIEZpeCB0eXBvIGluIGRvY3VtZW50YXRpb24gKGAjMzU2NwotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTY3PmBfKQotCi0K
LVB5dGVzdCAzLjYuMSAoMjAxOC0wNi0wNSkKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
QnVnIEZpeGVzCi0tLS0tLS0tLS0KLQotLSBGaXhlZCBhIGJ1ZyB3aGVyZSBzdGRvdXQgYW5kIHN0
ZGVyciB3ZXJlIGxvZ2dlZCB0d2ljZSBieSBqdW5pdHhtbCB3aGVuIGEgdGVzdAotICB3YXMgbWFy
a2VkIHhmYWlsLiAoYCMzNDkxCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzM0OTE+YF8pCi0KLS0gRml4IGBgdXNlZml4dHVyZXNgYCBtYXJrIGFwcGx5ZWQg
dG8gdW5pdHRlc3QgdGVzdHMgYnkgY29ycmVjdGx5IGluc3RhbnRpYXRpbmcKLSAgYGBGaXh0dXJl
SW5mb2BgLiAoYCMzNDk4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzM0OTg+YF8pCi0KLS0gRml4IGFzc2VydGlvbiByZXdyaXRlciBjb21wYXRpYmlsaXR5
IHdpdGggbGlicmFyaWVzIHRoYXQgbW9ua2V5IHBhdGNoCi0gIGBgZmlsZWBgIG9iamVjdHMuIChg
IzM1MDMKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUw
Mz5gXykKLQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLS0gQWRkZWQgYSBzZWN0aW9uIG9uIGhvdyB0byB1c2UgZml4dHVyZXMgYXMgZmFjdG9yaWVz
IHRvIHRoZSBmaXh0dXJlCi0gIGRvY3VtZW50YXRpb24uIChgIzM0NjEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ2MT5gXykKLQotCi1Ucml2aWFsL0ludGVy
bmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEVuYWJsZSBjYWNoaW5n
IGZvciBwaXAvcHJlLWNvbW1pdCBpbiBvcmRlciB0byByZWR1Y2UgYnVpbGQgdGltZSBvbgotICB0
cmF2aXMvYXBwdmV5b3IuIChgIzM1MDIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzUwMj5gXykKLQotLSBTd2l0Y2ggcHl0ZXN0IHRvIHRoZSBzcmMvIGxh
eW91dCBhcyB3ZSBhbHJlYWR5IHN1Z2dlc3RlZCBpdCBmb3IgZ29vZCBwcmFjdGljZQotICAtIG5v
dyB3ZSBpbXBsZW1lbnQgaXQgYXMgd2VsbC4gKGAjMzUxMwotICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTEzPmBfKQotCi0tIEZpeCBpZiBpbiB0ZXN0cyB0
byBzdXBwb3J0IDMuNy4wYjUsIHdoZXJlIGEgZG9jc3RyaW5nIGhhbmRsaW5nIGluIEFTVCBnb3QK
LSAgcmV2ZXJ0ZWQuIChgIzM1MzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzUzMD5gXykKLQotLSBSZW1vdmUgc29tZSBweXRob24yLjUgY29tcGF0aWJpbGl0
eSBjb2RlLiAoYCMzNTI5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzM1Mjk+YF8pCi0KLQotUHl0ZXN0IDMuNi4wICgyMDE4LTA1LTIzKQotPT09PT09PT09
PT09PT09PT09PT09PT09PQotCi1GZWF0dXJlcwotLS0tLS0tLS0KLQotLSBSZXZhbXAgdGhlIGlu
dGVybmFscyBvZiB0aGUgYGBweXRlc3QubWFya2BgIGltcGxlbWVudGF0aW9uIHdpdGggY29ycmVj
dCBwZXIKLSAgbm9kZSBoYW5kbGluZyB3aGljaCBmaXhlcyBhIG51bWJlciBvZiBsb25nIHN0YW5k
aW5nIGJ1Z3MgY2F1c2VkIGJ5IHRoZSBvbGQKLSAgZGVzaWduLiBUaGlzIGludHJvZHVjZXMgbmV3
IGBgTm9kZS5pdGVyX21hcmtlcnMobmFtZSlgYCBhbmQKLSAgYGBOb2RlLmdldF9jbG9zZXN0X21h
cmsobmFtZSlgYCBBUElzLiBVc2VycyBhcmUgKipzdHJvbmdseSBlbmNvdXJhZ2VkKiogdG8KLSAg
cmVhZCB0aGUgYHJlYXNvbnMgZm9yIHRoZSByZXZhbXAgaW4gdGhlIGRvY3MKLSAgPGh0dHBzOi8v
ZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9tYXJrLmh0bWwjbWFya2VyLXJldmFtcC1hbmQtaXRl
cmF0aW9uPmBfLAotICBvciBqdW1wIG92ZXIgdG8gZGV0YWlscyBhYm91dCBgdXBkYXRpbmcgZXhp
c3RpbmcgY29kZSB0byB1c2UgdGhlIG5ldyBBUElzCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9sYXRlc3QvbWFyay5odG1sI3VwZGF0aW5nLWNvZGU+YF8uIChgIzMzMTcKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMxNz5gXykKLQotLSBOb3cg
d2hlbiBgYEBweXRlc3QuZml4dHVyZWBgIGlzIGFwcGxpZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhl
IHNhbWUgZnVuY3Rpb24gYQotICBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuIFRoaXMgYnVnZ3kg
YmVoYXZpb3Igd291bGQgY2F1c2Ugc3VycHJpc2luZyBwcm9ibGVtcwotICBhbmQgaWYgd2FzIHdv
cmtpbmcgZm9yIGEgdGVzdCBzdWl0ZSBpdCB3YXMgbW9zdGx5IGJ5IGFjY2lkZW50LiAoYCMyMzM0
Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIzMzQ+YF8p
Ci0KLS0gU3VwcG9ydCBmb3IgUHl0aG9uIDMuNydzIGJ1aWx0aW4gYGBicmVha3BvaW50KClgYCBt
ZXRob2QsIHNlZSBgVXNpbmcgdGhlCi0gIGJ1aWx0aW4gYnJlYWtwb2ludCBmdW5jdGlvbgotICA8
aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3VzYWdlLmh0bWwjYnJlYWtwb2ludC1i
dWlsdGluPmBfIGZvcgotICBkZXRhaWxzLiAoYCMzMTgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxODA+YF8pCi0KLS0gYGBtb25rZXlwYXRjaGBgIG5vdyBz
dXBwb3J0cyBhIGBgY29udGV4dCgpYGAgZnVuY3Rpb24gd2hpY2ggYWN0cyBhcyBhIGNvbnRleHQK
LSAgbWFuYWdlciB3aGljaCB1bmRvZXMgYWxsIHBhdGNoaW5nIGRvbmUgd2l0aGluIHRoZSBgYHdp
dGhgYCBibG9jay4gKGAjMzI5MAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMjkwPmBfKQotCi0tIFRoZSBgYC0tcGRiYGAgb3B0aW9uIG5vdyBjYXVzZXMg
S2V5Ym9hcmRJbnRlcnJ1cHQgdG8gZW50ZXIgdGhlIGRlYnVnZ2VyLAotICBpbnN0ZWFkIG9mIHN0
b3BwaW5nIHRoZSB0ZXN0IHNlc3Npb24uIE9uIHB5dGhvbiAyLjcsIGhpdHRpbmcgQ1RSTCtDIGFn
YWluCi0gIGV4aXRzIHRoZSBkZWJ1Z2dlci4gT24gcHl0aG9uIDMuMiBhbmQgaGlnaGVyLCB1c2Ug
Q1RSTCtELiAoYCMzMjk5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMyOTk+YF8pCi0KLS0gcHl0ZXN0IG5vdCBsb25nZXIgY2hhbmdlcyB0aGUgbG9nIGxl
dmVsIG9mIHRoZSByb290IGxvZ2dlciB3aGVuIHRoZQotICBgYGxvZy1sZXZlbGBgIHBhcmFtZXRl
ciBoYXMgZ3JlYXRlciBudW1lcmljIHZhbHVlIHRoYW4gdGhhdCBvZiB0aGUgbGV2ZWwgb2YKLSAg
dGhlIHJvb3QgbG9nZ2VyLCB3aGljaCBtYWtlcyBpdCBwbGF5IGJldHRlciB3aXRoIGN1c3RvbSBs
b2dnaW5nIGNvbmZpZ3VyYXRpb24KLSAgaW4gdXNlciBjb2RlLiAoYCMzMzA3IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMDc+YF8pCi0KLQotQnVnIEZpeGVz
Ci0tLS0tLS0tLS0KLQotLSBBIHJhcmUgcmFjZS1jb25kaXRpb24gd2hpY2ggbWlnaHQgcmVzdWx0
IGluIGNvcnJ1cHRlZCBgYC5weWNgYCBmaWxlcyBvbgotICBXaW5kb3dzIGhhcyBiZWVuIGhvcGVm
dWxseSBzb2x2ZWQuIChgIzMwMDgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzAwOD5gXykKLQotLSBBbHNvIHVzZSBpdGVyX21hcmtlciBmb3IgZGlzY292
ZXJpbmcgdGhlIG1hcmtzIGFwcGx5aW5nIGZvciBtYXJrZXIKLSAgZXhwcmVzc2lvbnMgZnJvbSB0
aGUgY2xpIHRvIGF2b2lkIHRoZSBiYWQgZGF0YSBmcm9tIHRoZSBsZWdhY3kgbWFyayBzdG9yYWdl
LgotICAoYCMzNDQxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzM0NDE+YF8pCi0KLS0gV2hlbiBzaG93aW5nIGRpZmZzIG9mIGZhaWxlZCBhc3NlcnRpb25zIHdo
ZXJlIHRoZSBjb250ZW50cyBjb250YWluIG9ubHkKLSAgd2hpdGVzcGFjZSwgZXNjYXBlIHRoZW0g
dXNpbmcgYGByZXByKClgYCBmaXJzdCB0byBtYWtlIGl0IGVhc3kgdG8gc3BvdCB0aGUKLSAgZGlm
ZmVyZW5jZXMuIChgIzM0NDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzQ0Mz5gXykKLQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLS0gQ2hhbmdlIGRvY3VtZW50YXRpb24gY29weXJpZ2h0IHllYXIgdG8gYSBy
YW5nZSB3aGljaCBhdXRvLXVwZGF0ZXMgaXRzZWxmIGVhY2gKLSAgdGltZSBpdCBpcyBwdWJsaXNo
ZWQuIChgIzMzMDMKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzMwMz5gXykKLQotCi1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi0tIGBgcHl0ZXN0YGAgbm93IGRlcGVuZHMgb24gdGhlIGBweXRob24tYXRv
bWljd3JpdGVzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vdW50aXRha2VyL3B5dGhvbi1hdG9taWN3
cml0ZXM+YF8gbGlicmFyeS4gKGAjMzAwOAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zMDA4PmBfKQotCi0tIFVwZGF0ZSBhbGwgcHlwaS5weXRob24ub3Jn
IFVSTHMgdG8gcHlwaS5vcmcuIChgIzM0MzEKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzQzMT5gXykKLQotLSBEZXRlY3QgYHB5dGVzdF9gIHByZWZpeGVk
IGhvb2tzIHVzaW5nIHRoZSBpbnRlcm5hbCBwbHVnaW4gbWFuYWdlciBzaW5jZQotICBgYHBsdWdn
eWBgIGlzIGRlcHJlY2F0aW5nIHRoZSBgYGltcGxwcmVmaXhgYCBhcmd1bWVudCB0byBgYFBsdWdp
bk1hbmFnZXJgYC4KLSAgKGAjMzQ4NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zNDg3PmBfKQotCi0tIEltcG9ydCBgYE1hcHBpbmdgYCBhbmQgYGBTZXF1ZW5j
ZWBgIGZyb20gYGBfcHl0ZXN0LmNvbXBhdGBgIGluc3RlYWQgb2YKLSAgZGlyZWN0bHkgZnJvbSBg
YGNvbGxlY3Rpb25zYGAgaW4gYGBweXRob25fYXBpLnB5OjphcHByb3hgYC4gQWRkIGBgTWFwcGlu
Z2BgCi0gIHRvIGBgX3B5dGVzdC5jb21wYXRgYCwgaW1wb3J0IGl0IGZyb20gYGBjb2xsZWN0aW9u
c2BgIG9uIHB5dGhvbiAyLCBidXQgZnJvbQotICBgYGNvbGxlY3Rpb25zLmFiY2BgIG9uIFB5dGhv
biAzIHRvIGF2b2lkIGEgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBvbiBQeXRob24KLSAgMy43IG9y
IG5ld2VyLiAoYCMzNDk3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM0OTc+YF8pCi0KLQotUHl0ZXN0IDMuNS4xICgyMDE4LTA0LTIzKQotPT09PT09PT09PT09
PT09PT09PT09PT09PQotCi0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gUmVzZXQgYGBzeXMu
bGFzdF90eXBlYGAsIGBgc3lzLmxhc3RfdmFsdWVgYCBhbmQgYGBzeXMubGFzdF90cmFjZWJhY2tg
YCBiZWZvcmUKLSAgZWFjaCB0ZXN0IGV4ZWN1dGVzLiBUaG9zZSBhdHRyaWJ1dGVzIGFyZSBhZGRl
ZCBieSBweXRlc3QgZHVyaW5nIHRoZSB0ZXN0IHJ1bgotICB0byBhaWQgZGVidWdnaW5nLCBidXQg
d2VyZSBuZXZlciByZXNldCBzbyB0aGV5IHdvdWxkIGNyZWF0ZSBhIGxlYWtpbmcKLSAgcmVmZXJl
bmNlIHRvIHRoZSBsYXN0IGZhaWxpbmcgdGVzdCdzIGZyYW1lIHdoaWNoIGluIHR1cm4gY291bGQg
bmV2ZXIgYmUKLSAgcmVjbGFpbWVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gKGAjMjc5OAot
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzk4PmBfKQot
Ci0tIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyByYWlzZXMgYGBUeXBlRXJyb3JgYCB3aGVuIHJlY2Vp
dmluZyBhbiB1bmtub3duIGtleXdvcmQKLSAgYXJndW1lbnQuIChgIzMzNDggPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzM0OD5gXykKLQotLSBgYHB5dGVzdC5y
YWlzZXNgYCBub3cgd29ya3Mgd2l0aCBleGNlcHRpb24gY2xhc3NlcyB0aGF0IGxvb2sgbGlrZSBp
dGVyYWJsZXMuCi0gIChgIzMzNzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzM3Mj5gXykKLQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLS0gRml4IHR5cG8gaW4gYGBjYXBsb2dgYCBmaXh0dXJlIGRvY3VtZW50
YXRpb24sIHdoaWNoIGluY29ycmVjdGx5IGlkZW50aWZpZWQKLSAgY2VydGFpbiBhdHRyaWJ1dGVz
IGFzIG1ldGhvZHMuIChgIzM0MDYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzQwNj5gXykKLQotCi1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEFkZGVkIGEgbW9yZSBpbmRpY2F0aXZlIGVycm9yIG1l
c3NhZ2Ugd2hlbiBwYXJhbWV0cml6aW5nIGEgZnVuY3Rpb24gd2hvc2UKLSAgYXJndW1lbnQgdGFr
ZXMgYSBkZWZhdWx0IHZhbHVlLiAoYCMzMjIxCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzMyMjE+YF8pCi0KLS0gUmVtb3ZlIGludGVybmFsIGBgX3B5dGVz
dC50ZXJtaW5hbC5mbGF0dGVuYGAgZnVuY3Rpb24gaW4gZmF2b3Igb2YKLSAgYGBtb3JlX2l0ZXJ0
b29scy5jb2xsYXBzZWBgLiAoYCMzMzMwCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzMzMzA+YF8pCi0KLS0gSW1wb3J0IHNvbWUgbW9kdWxlcyBmcm9tIGBg
Y29sbGVjdGlvbnMuYWJjYGAgaW5zdGVhZCBvZiBgYGNvbGxlY3Rpb25zYGAgYXMKLSAgdGhlIGZv
cm1lciBtb2R1bGVzIHRyaWdnZXIgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBpbiBQeXRob24gMy43
LiAoYCMzMzM5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzMzMzk+YF8pCi0KLS0gcmVjb3JkX3Byb3BlcnR5IGlzIG5vIGxvbmdlciBleHBlcmltZW50YWws
IHJlbW92aW5nIHRoZSB3YXJuaW5ncyB3YXMKLSAgZm9yZ290dGVuLiAoYCMzMzYwIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzNjA+YF8pCi0KLS0gTWVudGlv
biBpbiBkb2N1bWVudGF0aW9uIGFuZCBDTEkgaGVscCB0aGF0IGZpeHR1cmVzIHdpdGggbGVhZGlu
ZyBgYF9gYCBhcmUKLSAgcHJpbnRlZCBieSBgYHB5dGVzdCAtLWZpeHR1cmVzYGAgb25seSBpZiB0
aGUgYGAtdmBgIG9wdGlvbiBpcyBhZGRlZC4gKGAjMzM5OAotICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzk4PmBfKQotCi0KLVB5dGVzdCAzLjUuMCAoMjAx
OC0wMy0yMSkKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotRGVwcmVjYXRpb25zIGFuZCBS
ZW1vdmFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIGBgcmVjb3JkX3htbF9wcm9w
ZXJ0eWBgIGZpeHR1cmUgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIG1vcmUKLSAg
Z2VuZXJpYyBgYHJlY29yZF9wcm9wZXJ0eWBgLiAoYCMyNzcwCi0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NzA+YF8pCi0KLS0gRGVmaW5pbmcgYGBweXRl
c3RfcGx1Z2luc2BgIGlzIG5vdyBkZXByZWNhdGVkIGluIG5vbi10b3AtbGV2ZWwgY29uZnRlc3Qu
cHkKLSAgZmlsZXMsIGJlY2F1c2UgdGhleSAibGVhayIgdG8gdGhlIGVudGlyZSBkaXJlY3Rvcnkg
dHJlZS4gKGAjMzA4NAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zMDg0PmBfKQotCi0KLUZlYXR1cmVzCi0tLS0tLS0tLQotCi0tIE5ldyBgYC0tc2hvdy1j
YXB0dXJlYGAgY29tbWFuZC1saW5lIG9wdGlvbiB0aGF0IGFsbG93cyB0byBzcGVjaWZ5IGhvdyB0
bwotICBkaXNwbGF5IGNhcHR1cmVkIG91dHB1dCB3aGVuIHRlc3RzIGZhaWw6IGBgbm9gYCwgYGBz
dGRvdXRgYCwgYGBzdGRlcnJgYCwKLSAgYGBsb2dgYCBvciBgYGFsbGBgICh0aGUgZGVmYXVsdCku
IChgIzE0NzgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTQ3OD5gXykKLQotLSBOZXcgYGAtLXJvb3RkaXJgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIG92
ZXJyaWRlIHRoZSBydWxlcyBmb3IgZGlzY292ZXJpbmcKLSAgdGhlIHJvb3QgZGlyZWN0b3J5LiBT
ZWUgYGN1c3RvbWl6ZQotICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2N1c3Rv
bWl6ZS5odG1sPmBfIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvcgotICBkZXRhaWxzLiAoYCMxNjQy
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2NDI+YF8pCi0K
LS0gRml4dHVyZXMgYXJlIG5vdyBpbnN0YW50aWF0ZWQgYmFzZWQgb24gdGhlaXIgc2NvcGVzLCB3
aXRoIGhpZ2hlci1zY29wZWQKLSAgZml4dHVyZXMgKHN1Y2ggYXMgYGBzZXNzaW9uYGApIGJlaW5n
IGluc3RhbnRpYXRlZCBmaXJzdCB0aGFuIGxvd2VyLXNjb3BlZAotICBmaXh0dXJlcyAoc3VjaCBh
cyBgYGZ1bmN0aW9uYGApLiBUaGUgcmVsYXRpdmUgb3JkZXIgb2YgZml4dHVyZXMgb2YgdGhlIHNh
bWUKLSAgc2NvcGUgaXMga2VwdCB1bmNoYW5nZWQsIGJhc2VkIGluIHRoZWlyIGRlY2xhcmF0aW9u
IG9yZGVyIGFuZCB0aGVpcgotICBkZXBlbmRlbmNpZXMuIChgIzI0MDUgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQwNT5gXykKLQotLSBgYHJlY29yZF94bWxf
cHJvcGVydHlgYCByZW5hbWVkIHRvIGBgcmVjb3JkX3Byb3BlcnR5YGAgYW5kIGlzIG5vdyBjb21w
YXRpYmxlCi0gIHdpdGggeGRpc3QsIG1hcmtlcnMgYW5kIGFueSByZXBvcnRlci4gYGByZWNvcmRf
eG1sX3Byb3BlcnR5YGAgbmFtZSBpcyBub3cKLSAgZGVwcmVjYXRlZC4gKGAjMjc3MCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzcwPmBfKQotCi0tIE5ldyBg
YC0tbmZgYCwgYGAtLW5ldy1maXJzdGBgIG9wdGlvbnM6IHJ1biBuZXcgdGVzdHMgZmlyc3QgZm9s
bG93ZWQgYnkgdGhlCi0gIHJlc3Qgb2YgdGhlIHRlc3RzLCBpbiBib3RoIGNhc2VzIHRlc3RzIGFy
ZSBhbHNvIHNvcnRlZCBieSB0aGUgZmlsZSBtb2RpZmllZAotICB0aW1lLCB3aXRoIG1vcmUgcmVj
ZW50IGZpbGVzIGNvbWluZyBmaXJzdC4gKGAjMzAzNAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDM0PmBfKQotCi0tIE5ldyBgYC0tbGFzdC1mYWlsZWQt
bm8tZmFpbHVyZXNgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRoYXQgYWxsb3dzIHRvIHNwZWNpZnkK
LSAgdGhlIGJlaGF2aW9yIG9mIHRoZSBjYWNoZSBwbHVnaW4ncyBgYGAtLWxhc3QtZmFpbGVkYGAg
ZmVhdHVyZSB3aGVuIG5vIHRlc3RzCi0gIGZhaWxlZCBpbiB0aGUgbGFzdCBydW4gKG9yIG5vIGNh
Y2hlIHdhcyBmb3VuZCk6IGBgbm9uZWBgIG9yIGBgYWxsYGAgKHRoZQotICBkZWZhdWx0KS4gKGAj
MzEzOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTM5PmBf
KQotCi0tIE5ldyBgYC0tZG9jdGVzdC1jb250aW51ZS1vbi1mYWlsdXJlYGAgY29tbWFuZC1saW5l
IG9wdGlvbiB0byBlbmFibGUgZG9jdGVzdHMKLSAgdG8gc2hvdyBtdWx0aXBsZSBmYWlsdXJlcyBm
b3IgZWFjaCBzbmlwcGV0LCBpbnN0ZWFkIG9mIHN0b3BwaW5nIGF0IHRoZSBmaXJzdAotICBmYWls
dXJlLiAoYCMzMTQ5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzMxNDk+YF8pCi0KLS0gQ2FwdHVyZWQgbG9nIG1lc3NhZ2VzIGFyZSBhZGRlZCB0byB0aGUgYGA8
c3lzdGVtLW91dD5gYCB0YWcgaW4gdGhlIGdlbmVyYXRlZAotICBqdW5pdCB4bWwgZmlsZSBpZiB0
aGUgYGBqdW5pdF9sb2dnaW5nYGAgaW5pIG9wdGlvbiBpcyBzZXQgdG8gYGBzeXN0ZW0tb3V0YGAu
Ci0gIElmIHRoZSB2YWx1ZSBvZiB0aGlzIGluaSBvcHRpb24gaXMgYGBzeXN0ZW0tZXJyYGAsIHRo
ZSBsb2dzIGFyZSB3cml0dGVuIHRvCi0gIGBgPHN5c3RlbS1lcnI+YGAuIFRoZSBkZWZhdWx0IHZh
bHVlIGZvciBgYGp1bml0X2xvZ2dpbmdgYCBpcyBgYG5vYGAsIG1lYW5pbmcKLSAgY2FwdHVyZWQg
bG9ncyBhcmUgbm90IHdyaXR0ZW4gdG8gdGhlIG91dHB1dCBmaWxlLiAoYCMzMTU2Ci0gIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNTY+YF8pCi0KLS0gQWxs
b3cgdGhlIGxvZ2dpbmcgcGx1Z2luIHRvIGhhbmRsZSBgYHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0
YGAgYW5kCi0gIGBgcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoYGAgaG9va3Mgd2hlbiBsaXZlIGxv
Z3MgYXJlIGVuYWJsZWQuIChgIzMxODkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzE4OT5gXykKLQotLSBQYXNzaW5nIGAtLWxvZy1jbGktbGV2ZWxgIGlu
IHRoZSBjb21tYW5kLWxpbmUgbm93IGF1dG9tYXRpY2FsbHkgYWN0aXZhdGVzCi0gIGxpdmUgbG9n
Z2luZy4gKGAjMzE5MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zMTkwPmBfKQotCi0tIEFkZCBjb21tYW5kIGxpbmUgb3B0aW9uIGBgLS1kZXNlbGVjdGBgIHRv
IGFsbG93IGRlc2VsZWN0aW9uIG9mIGluZGl2aWR1YWwKLSAgdGVzdHMgYXQgY29sbGVjdGlvbiB0
aW1lLiAoYCMzMTk4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMxOTg+YF8pCi0KLS0gQ2FwdHVyZWQgbG9ncyBhcmUgcHJpbnRlZCBiZWZvcmUgZW50ZXJp
bmcgcGRiLiAoYCMzMjA0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMyMDQ+YF8pCi0KLS0gRGVzZWxlY3RlZCBpdGVtIGNvdW50IGlzIG5vdyBzaG93biBi
ZWZvcmUgdGVzdHMgYXJlIHJ1biwgZS5nLiBgYGNvbGxlY3RlZCBYCi0gIGl0ZW1zIC8gWSBkZXNl
bGVjdGVkYGAuIChgIzMyMTMKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzIxMz5gXykKLQotLSBUaGUgYnVpbHRpbiBtb2R1bGUgYGBwbGF0Zm9ybWBgIGlz
IG5vdyBhdmFpbGFibGUgZm9yIHVzZSBpbiBleHByZXNzaW9ucyBpbgotICBgYHB5dGVzdC5tYXJr
YGAuIChgIzMyMzYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzIzNj5gXykKLQotLSBUaGUgKnNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvKiBzZWN0aW9uIG5v
dyBpcyBkaXNwbGF5ZWQgYWZ0ZXIgdHJhY2ViYWNrcyBhbmQKLSAgd2FybmluZ3MgaW4gdGhlIHRl
cm1pbmFsLiAoYCMzMjU1Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMyNTU+YF8pCi0KLS0gTmV3IGBgLS12ZXJib3NpdHlgYCBmbGFnIHRvIHNldCB2ZXJi
b3NpdHkgbGV2ZWwgZXhwbGljaXRseS4gKGAjMzI5NgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjk2PmBfKQotCi0tIGBgcHl0ZXN0LmFwcHJveGBgIG5v
dyBhY2NlcHRzIGNvbXBhcmluZyBhIG51bXB5IGFycmF5IHdpdGggYSBzY2FsYXIuIChgIzMzMTIK
LSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMxMj5gXykK
LQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIFN1cHByZXNzIGBgSU9FcnJvcmBgIHdoZW4g
Y2xvc2luZyB0aGUgdGVtcG9yYXJ5IGZpbGUgdXNlZCBmb3IgY2FwdHVyaW5nCi0gIHN0cmVhbXMg
aW4gUHl0aG9uIDIuNy4gKGAjMjM3MAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMzcwPmBfKQotCi0tIEZpeGVkIGBgY2xlYXIoKWBgIG1ldGhvZCBvbiBg
YGNhcGxvZ2BgIGZpeHR1cmUgd2hpY2ggY2xlYXJlZCBgYHJlY29yZHNgYCwgYnV0Ci0gIG5vdCB0
aGUgYGB0ZXh0YGAgcHJvcGVydHkuIChgIzMyOTcKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI5Nz5gXykKLQotLSBEdXJpbmcgdGVzdCBjb2xsZWN0aW9u
LCB3aGVuIHN0ZGluIGlzIG5vdCBhbGxvd2VkIHRvIGJlIHJlYWQsIHRoZQotICBgYERvbnRSZWFk
RnJvbVN0ZGluYGAgb2JqZWN0IHN0aWxsIGFsbG93IGl0c2VsZiB0byBiZSBpdGVyYWJsZSBhbmQg
cmVzb2x2ZWQKLSAgdG8gYW4gaXRlcmF0b3Igd2l0aG91dCBjcmFzaGluZy4gKGAjMzMxNAotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzE0PmBfKQotCi0K
LUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBBZGRl
ZCBhIGByZWZlcmVuY2UgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9yZWZlcmVu
Y2UuaHRtbD5gXyBwYWdlCi0gIHRvIHRoZSBkb2NzLiAoYCMxNzEzIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE3MTM+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5h
bCBDaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBDaGFuZ2UgbWluaW11bSBy
ZXF1aXJlbWVudCBvZiBgYGF0dHJzYGAgdG8gYGAxNy40LjBgYC4gKGAjMzIyOAotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjI4PmBfKQotCi0tIFJlbmFt
ZWQgZXhhbXBsZSBkaXJlY3RvcmllcyBzbyBhbGwgdGVzdHMgcGFzcyB3aGVuIHJhbiBmcm9tIHRo
ZSBiYXNlCi0gIGRpcmVjdG9yeS4gKGAjMzI0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zMjQ1PmBfKQotCi0tIEludGVybmFsIGBgbWFyay5weWBgIG1vZHVs
ZSBoYXMgYmVlbiB0dXJuZWQgaW50byBhIHBhY2thZ2UuIChgIzMyNTAKLSAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI1MD5gXykKLQotLSBgYHB5dGVzdGBg
IG5vdyBkZXBlbmRzIG9uIHRoZSBgbW9yZS1pdGVydG9vbHMKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9lcmlrcm9zZS9tb3JlLWl0ZXJ0b29scz5gXyBwYWNrYWdlLiAoYCMzMjY1Ci0gIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNjU+YF8pCi0KLS0gQWRkZWQg
d2FybmluZyB3aGVuIGBgW3B5dGVzdF1gYCBzZWN0aW9uIGlzIHVzZWQgaW4gYSBgYC5jZmdgYCBm
aWxlIHBhc3NlZAotICB3aXRoIGBgLWNgYCAoYCMzMjY4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNjg+YF8pCi0KLS0gYGBub2RlaWRzYGAgY2FuIG5vdyBi
ZSBwYXNzZWQgZXhwbGljaXRseSB0byBgYEZTQ29sbGVjdG9yYGAgYW5kIGBgTm9kZWBgCi0gIGNv
bnN0cnVjdG9ycy4gKGAjMzI5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMjkxPmBfKQotCi0tIEludGVybmFsIHJlZmFjdG9yaW5nIG9mIGBgRm9ybWF0dGVk
RXhjaW5mb2BgIHRvIHVzZSBgYGF0dHJzYGAgZmFjaWxpdGllcyBhbmQKLSAgcmVtb3ZlIG9sZCBz
dXBwb3J0IGNvZGUgZm9yIGxlZ2FjeSBQeXRob24gdmVyc2lvbnMuIChgIzMyOTIKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI5Mj5gXykKLQotLSBSZWZh
Y3RvcmluZyB0byB1bmlmeSBob3cgdmVyYm9zaXR5IGlzIGhhbmRsZWQgaW50ZXJuYWxseS4gKGAj
MzI5NgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjk2
PmBfKQotCi0tIEludGVybmFsIHJlZmFjdG9yaW5nIHRvIGJldHRlciBpbnRlZ3JhdGUgd2l0aCBh
cmdwYXJzZS4gKGAjMzMwNAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMzA0PmBfKQotCi0tIEZpeCBhIHB5dGhvbiBleGFtcGxlIHdoZW4gY2FsbGluZyBh
IGZpeHR1cmUgaW4gZG9jL2VuL3VzYWdlLnJzdCAoYCMzMzA4Ci0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMDg+YF8pCi0KLQotUHl0ZXN0IDMuNC4yICgy
MDE4LTAzLTA0KQotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1CdWcgRml4ZXMKLS0tLS0t
LS0tLQotCi0tIFJlbW92ZWQgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gd2hlbiBjYXB0dXJlIG9wdGlv
biBpcyBgYG5vYGAuIChgIzMyMDMKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzIwMz5gXykKLQotLSBSZWZhY3RvciBjaGVjayBvZiBiaW5kaXIgZnJvbSBg
YGV4aXN0c2BgIHRvIGBgaXNkaXJgYC4gKGAjMzI0MQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjQxPmBfKQotCi0tIEZpeCBgYFR5cGVFcnJvcmBgIGlz
c3VlIHdoZW4gdXNpbmcgYGBhcHByb3hgYCB3aXRoIGEgYGBEZWNpbWFsYGAgdmFsdWUuCi0gIChg
IzMyNDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI0Nz5g
XykKLQotLSBGaXggcmVmZXJlbmNlIGN5Y2xlIGdlbmVyYXRlZCB3aGVuIHVzaW5nIHRoZSBgYHJl
cXVlc3RgYCBmaXh0dXJlLiAoYCMzMjQ5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzMyNDk+YF8pCi0KLS0gYGBbdG9vbDpweXRlc3RdYGAgc2VjdGlvbnMg
aW4gYGAqLmNmZ2BgIGZpbGVzIHBhc3NlZCBieSB0aGUgYGAtY2BgIG9wdGlvbiBhcmUKLSAgbm93
IHByb3Blcmx5IHJlY29nbml6ZWQuIChgIzMyNjAKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI2MD5gXykKLQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9u
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gQWRkIGxvZ2dpbmcgcGx1Z2luIHRvIHBsdWdp
bnMgbGlzdC4gKGAjMzIwOQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMjA5PmBfKQotCi0KLVRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLS0gRml4IG1pbm9yIHR5cG8gaW4gZml4dHVyZS5yc3QgKGAjMzI1
OQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjU5PmBf
KQotCi0KLVB5dGVzdCAzLjQuMSAoMjAxOC0wMi0yMCkKLT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotQnVnIEZpeGVzCi0tLS0tLS0tLS0KLQotLSBNb3ZlIGltcG9ydCBvZiBgYGRvY3Rlc3Qu
VW5leHBlY3RlZEV4Y2VwdGlvbmBgIHRvIHRvcC1sZXZlbCB0byBhdm9pZCBwb3NzaWJsZQotICBl
cnJvcnMgd2hlbiB1c2luZyBgYC0tcGRiYGAuIChgIzE4MTAKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTgxMD5gXykKLQotLSBBZGRlZCBwcmludGluZyBv
ZiBjYXB0dXJlZCBzdGRvdXQvc3RkZXJyIGJlZm9yZSBlbnRlcmluZyBwZGIsIGFuZCBpbXByb3Zl
ZCBhCi0gIHRlc3Qgd2hpY2ggd2FzIGdpdmluZyBmYWxzZSBuZWdhdGl2ZXMgYWJvdXQgb3V0cHV0
IGNhcHR1cmluZy4gKGAjMzA1MgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMDUyPmBfKQotCi0tIEZpeCBvcmRlcmluZyBvZiB0ZXN0cyB1c2luZyBwYXJh
bWV0cml6ZWQgZml4dHVyZXMgd2hpY2ggY2FuIGxlYWQgdG8gZml4dHVyZXMKLSAgYmVpbmcgY3Jl
YXRlZCBtb3JlIHRoYW4gbmVjZXNzYXJ5LiAoYCMzMTYxCi0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNjE+YF8pCi0KLS0gRml4IGJ1ZyB3aGVyZSBsb2dn
aW5nIGhhcHBlbmluZyBhdCBob29rcyBvdXRzaWRlIG9mICJ0ZXN0IHJ1biIgaG9va3Mgd291bGQK
LSAgY2F1c2UgYW4gaW50ZXJuYWwgZXJyb3IuIChgIzMxODQKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE4ND5gXykKLQotLSBEZXRlY3QgYXJndW1lbnRz
IGluamVjdGVkIGJ5IGBgdW5pdHRlc3QubW9jay5wYXRjaGBgIGRlY29yYXRvciBjb3JyZWN0bHkg
d2hlbgotICBweXBpIGBgbW9jay5wYXRjaGBgIGlzIGluc3RhbGxlZCBhbmQgaW1wb3J0ZWQuIChg
IzMyMDYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIw
Nj5gXykKLQotLSBFcnJvcnMgc2hvd24gd2hlbiBhIGBgcHl0ZXN0LnJhaXNlcygpYGAgd2l0aCBg
YG1hdGNoPWBgIGZhaWxzIGFyZSBub3cgY2xlYW5lcgotICBvbiB3aGF0IGhhcHBlbmVkOiBXaGVu
IG5vIGV4Y2VwdGlvbiB3YXMgcmFpc2VkLCB0aGUgIm1hdGNoaW5nICcuLi4nIiBwYXJ0IGdvdAot
ICByZW1vdmVkIGFzIGl0IGZhbHNlbHkgaW1wbGllcyB0aGF0IGFuIGV4Y2VwdGlvbiB3YXMgcmFp
c2VkIGJ1dCBpdCBkaWRuJ3QKLSAgbWF0Y2guIFdoZW4gYSB3cm9uZyBleGNlcHRpb24gd2FzIHJh
aXNlZCwgaXQncyBub3cgdGhyb3duIChsaWtlCi0gIGBgcHl0ZXN0LnJhaXNlZCgpYGAgd2l0aG91
dCBgYG1hdGNoPWBgIHdvdWxkKSBpbnN0ZWFkIG9mIGNvbXBsYWluaW5nIGFib3V0Ci0gIHRoZSB1
bm1hdGNoZWQgdGV4dC4gKGAjMzIyMgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zMjIyPmBfKQotCi0tIEZpeGVkIG91dHB1dCBjYXB0dXJlIGhhbmRsaW5n
IGluIGRvY3Rlc3RzIG9uIG1hY09TLiAoYCM5ODUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvOTg1PmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBBZGQgU3BoaW54IHBhcmFtZXRlciBkb2NzIGZv
ciBgYG1hdGNoYGAgYW5kIGBgbWVzc2FnZWBgIGFyZ3MgdG8KLSAgYGBweXRlc3QucmFpc2VzYGAu
IChgIzMyMDIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzIwMj5gXykKLQotCi1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi0tIHB5dGVzdCBoYXMgY2hhbmdlZCB0aGUgcHVibGljYXRpb24gcHJvY2VkdXJl
IGFuZCBpcyBub3cgYmVpbmcgcHVibGlzaGVkIHRvCi0gIFB5UEkgZGlyZWN0bHkgZnJvbSBUcmF2
aXMuIChgIzMwNjAKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzA2MD5gXykKLQotLSBSZW5hbWUgYGBQYXJhbWV0ZXJTZXQuX2Zvcl9wYXJhbWV0ZXJpemUo
KWBgIHRvIGBgX2Zvcl9wYXJhbWV0cml6ZSgpYGAgaW4KLSAgb3JkZXIgdG8gY29tcGx5IHdpdGgg
dGhlIG5hbWluZyBjb252ZW50aW9uLiAoYCMzMTY2Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNjY+YF8pCi0KLS0gU2tpcCBmYWlsaW5nIHBkYi9kb2N0
ZXN0IHRlc3Qgb24gbWFjLiAoYCM5ODUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvOTg1PmBfKQotCi0KLVB5dGVzdCAzLjQuMCAoMjAxOC0wMS0zMCkKLT09
PT09PT09PT09PT09PT09PT09PT09PT0KLQotRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscwotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEFsbCBweXRlc3QgY2xhc3NlcyBub3cgc3ViY2xh
c3MgYGBvYmplY3RgYCBmb3IgYmV0dGVyIFB5dGhvbiAyLzMgY29tcGF0aWJpbGl0eS4KLSAgVGhp
cyBzaG91bGQgbm90IGFmZmVjdCB1c2VyIGNvZGUgZXhjZXB0IGluIHZlcnkgcmFyZSBlZGdlIGNh
c2VzLiAoYCMyMTQ3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzIxNDc+YF8pCi0KLQotRmVhdHVyZXMKLS0tLS0tLS0tCi0KLS0gSW50cm9kdWNlIGBgZW1w
dHlfcGFyYW1ldGVyX3NldF9tYXJrYGAgaW5pIG9wdGlvbiB0byBzZWxlY3Qgd2hpY2ggbWFyayB0
bwotICBhcHBseSB3aGVuIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgaXMgZ2l2ZW4gYW4g
ZW1wdHkgc2V0IG9mIHBhcmFtZXRlcnMuCi0gIFZhbGlkIG9wdGlvbnMgYXJlIGBgc2tpcGBgIChk
ZWZhdWx0KSBhbmQgYGB4ZmFpbGBgLiBOb3RlIHRoYXQgaXQgaXMgcGxhbm5lZAotICB0byBjaGFu
Z2UgdGhlIGRlZmF1bHQgdG8gYGB4ZmFpbGBgIGluIGZ1dHVyZSByZWxlYXNlcyBhcyB0aGlzIGlz
IGNvbnNpZGVyZWQKLSAgbGVzcyBlcnJvciBwcm9uZS4gKGAjMjUyNwotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTI3PmBfKQotCi0tICoqSW5jb21wYXRp
YmxlIGNoYW5nZSoqOiBhZnRlciBjb21tdW5pdHkgZmVlZGJhY2sgdGhlIGBsb2dnaW5nCi0gIDxo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvbG9nZ2luZy5odG1sPmBfIGZ1bmN0aW9u
YWxpdHkgaGFzCi0gIHVuZGVyZ29uZSBzb21lIGNoYW5nZXMuIFBsZWFzZSBjb25zdWx0IHRoZSBg
bG9nZ2luZyBkb2N1bWVudGF0aW9uCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRl
c3QvbG9nZ2luZy5odG1sI2luY29tcGF0aWJsZS1jaGFuZ2VzLWluLXB5dGVzdC0zLTQ+YF8KLSAg
Zm9yIGRldGFpbHMuIChgIzMwMTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzAxMz5gXykKLQotLSBDb25zb2xlIG91dHB1dCBmYWxscyBiYWNrIHRvICJjbGFz
c2ljIiBtb2RlIHdoZW4gY2FwdHVyaW5nIGlzIGRpc2FibGVkIChgYC1zYGApLAotICBvdGhlcndp
c2UgdGhlIG91dHB1dCBnZXRzIGdhcmJsZWQgdG8gdGhlIHBvaW50IG9mIGJlaW5nIHVzZWxlc3Mu
IChgIzMwMzgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzAzOD5gXykKLQotLSBOZXcgYHB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaAotICA8aHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dyaXRpbmdfcGx1Z2lucy5odG1sI19weXRlc3QuaG9v
a3NwZWMucHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoPmBfCi0gIGhvb2sgd2hpY2ggaXMgY2FsbGVk
IHdoZW4gYSB0ZXN0IGl0ZW0gaGFzIGZpbmlzaGVkIGV4ZWN1dGluZywgYW5hbG9nb3VzIHRvCi0g
IGBweXRlc3RfcnVudGVzdF9sb2dzdGFydAotICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
bGF0ZXN0L3dyaXRpbmdfcGx1Z2lucy5odG1sI19weXRlc3QuaG9va3NwZWMucHl0ZXN0X3J1bnRl
c3Rfc3RhcnQ+YF8uCi0gIChgIzMxMDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzEwMT5gXykKLQotLSBJbXByb3ZlIHBlcmZvcm1hbmNlIHdoZW4gY29sbGVj
dGluZyB0ZXN0cyB1c2luZyBtYW55IGZpeHR1cmVzLiAoYCMzMTA3Ci0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxMDc+YF8pCi0KLS0gTmV3IGBgY2FwbG9n
LmdldF9yZWNvcmRzKHdoZW4pYGAgbWV0aG9kIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUg
Y2FwdHVyZWQKLSAgcmVjb3JkcyBmb3IgdGhlIGBgInNldHVwImBgLCBgYCJjYWxsImBgIGFuZCBg
YCJ0ZWFyZG93biJgYAotICB0ZXN0aW5nIHN0YWdlcy4gKGAjMzExNyA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTE3PmBfKQotCi0tIE5ldyBmaXh0dXJlIGBg
cmVjb3JkX3htbF9hdHRyaWJ1dGVgYCB0aGF0IGFsbG93cyBtb2RpZnlpbmcgYW5kIGluc2VydGlu
ZwotICBhdHRyaWJ1dGVzIG9uIHRoZSBgYDx0ZXN0Y2FzZT5gYCB4bWwgbm9kZSBpbiBKVW5pdCBy
ZXBvcnRzLiAoYCMzMTMwCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMxMzA+YF8pCi0KLS0gVGhlIGRlZmF1bHQgY2FjaGUgZGlyZWN0b3J5IGhhcyBiZWVu
IHJlbmFtZWQgZnJvbSBgYC5jYWNoZWBgIHRvCi0gIGBgLnB5dGVzdF9jYWNoZWBgIGFmdGVyIGNv
bW11bml0eSBmZWVkYmFjayB0aGF0IHRoZSBuYW1lIGBgLmNhY2hlYGAgZGlkIG5vdAotICBtYWtl
IGl0IGNsZWFyIHRoYXQgaXQgd2FzIHVzZWQgYnkgcHl0ZXN0LiAoYCMzMTM4Ci0gIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxMzg+YF8pCi0KLS0gQ29sb3Jp
emUgdGhlIGxldmVsbmFtZSBjb2x1bW4gaW4gdGhlIGxpdmUtbG9nIG91dHB1dC4gKGAjMzE0Mgot
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTQyPmBfKQot
Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gRml4IGhhbmdpbmcgcGV4cGVjdCB0ZXN0IG9u
IE1hY09TIGJ5IHVzaW5nIGZsdXNoKCkgaW5zdGVhZCBvZiB3YWl0KCkuCi0gIChgIzIwMjIgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAyMj5gXykKLQotLSBG
aXggcmVzdG9yaW5nIFB5dGhvbiBzdGF0ZSBhZnRlciBpbi1wcm9jZXNzIHB5dGVzdCBydW5zIHdp
dGggdGhlCi0gIGBgcHl0ZXN0ZXJgYCBwbHVnaW47IHRoaXMgbWF5IGJyZWFrIHRlc3RzIHVzaW5n
IG11bHRpcGxlIGlucHJvY2VzcwotICBweXRlc3QgcnVucyBpZiBsYXRlciBvbmVzIGRlcGVuZCBv
biBlYXJsaWVyIG9uZXMgbGVha2luZyBnbG9iYWwgaW50ZXJwcmV0ZXIKLSAgY2hhbmdlcy4gKGAj
MzAxNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDE2PmBf
KQotCi0tIEZpeCBza2lwcGluZyBwbHVnaW4gcmVwb3J0aW5nIGhvb2sgd2hlbiB0ZXN0IGFib3J0
ZWQgYmVmb3JlIHBsdWdpbiBzZXR1cAotICBob29rLiAoYCMzMDc0IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNzQ+YF8pCi0KLS0gRml4IHByb2dyZXNzIHBl
cmNlbnRhZ2UgcmVwb3J0ZWQgd2hlbiB0ZXN0cyBmYWlsIGR1cmluZyB0ZWFyZG93bi4gKGAjMzA4
OAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDg4PmBf
KQotCi0tICoqSW5jb21wYXRpYmxlIGNoYW5nZSoqOiBgYC1vLy0tb3ZlcnJpZGVgYCBvcHRpb24g
bm8gbG9uZ2VyIGVhdHMgYWxsIHRoZQotICByZW1haW5pbmcgb3B0aW9ucywgd2hpY2ggY2FuIGxl
YWQgdG8gc3VycHJpc2luZyBiZWhhdmlvcjogZm9yIGV4YW1wbGUsCi0gIGBgcHl0ZXN0IC1vIGZv
bz0xIC9wYXRoL3RvL3Rlc3QucHlgYCB3b3VsZCBmYWlsIGJlY2F1c2UgYGAvcGF0aC90by90ZXN0
LnB5YGAKLSAgd291bGQgYmUgY29uc2lkZXJlZCBhcyBwYXJ0IG9mIHRoZSBgYC1vYGAgY29tbWFu
ZC1saW5lIGFyZ3VtZW50LiBPbmUKLSAgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IG5vdyBt
dWx0aXBsZSBjb25maWd1cmF0aW9uIG92ZXJyaWRlcyBuZWVkCi0gIG11bHRpcGxlIGBgLW9gYCBm
bGFnczogYGBweXRlc3QgLW8gZm9vPTEgLW8gYmFyPTJgYC4gKGAjMzEwMwotICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTAzPmBfKQotCi0KLUltcHJvdmVk
IERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBEb2N1bWVudCBob29r
cyAoZGVmaW5lZCB3aXRoIGBgaGlzdG9yaWM9VHJ1ZWBgKSB3aGljaCBjYW5ub3QgYmUgdXNlZCB3
aXRoCi0gIGBgaG9va3dyYXBwZXI9VHJ1ZWBgLiAoYCMyNDIzCi0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0MjM+YF8pCi0KLS0gQ2xhcmlmeSB0aGF0IHdh
cm5pbmcgY2FwdHVyaW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSB3YXJuaW5nIGZpbHRlciBieSBkZWZh
dWx0LgotICAoYCMyNDU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzI0NTc+YF8pCi0KLS0gQ2xhcmlmeSBhIHBvc3NpYmxlIGNvbmZ1c2lvbiB3aGVuIHVzaW5n
IHB5dGVzdF9maXh0dXJlX3NldHVwIHdpdGggZml4dHVyZQotICBmdW5jdGlvbnMgdGhhdCByZXR1
cm4gTm9uZS4gKGAjMjY5OAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yNjk4PmBfKQotCi0tIEZpeCB0aGUgd29yZGluZyBvZiBhIHNlbnRlbmNlIG9uIGRv
Y3Rlc3QgZmxhZ3MgdXNlZCBpbiBweXRlc3QuIChgIzMwNzYKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA3Nj5gXykKLQotLSBQcmVmZXIgYGBodHRwczov
LyoucmVhZHRoZWRvY3MuaW9gYCBvdmVyIGBgaHR0cDovLyoucnRmZC5vcmdgYCBmb3IgbGlua3Mg
aW4KLSAgdGhlIGRvY3VtZW50YXRpb24uIChgIzMwOTIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA5Mj5gXykKLQotLSBJbXByb3ZlIHJlYWRhYmlsaXR5
ICh3b3JkaW5nLCBncmFtbWFyKSBvZiBHZXR0aW5nIFN0YXJ0ZWQgZ3VpZGUgKGAjMzEzMQotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTMxPmBfKQotCi0t
IEFkZGVkIG5vdGUgdGhhdCBjYWxsaW5nIHB5dGVzdC5tYWluIG11bHRpcGxlIHRpbWVzIGZyb20g
dGhlIHNhbWUgcHJvY2VzcyBpcwotICBub3QgcmVjb21tZW5kZWQgYmVjYXVzZSBvZiBpbXBvcnQg
Y2FjaGluZy4gKGAjMzE0MwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMTQzPmBfKQotCi0KLVRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLS0gU2hvdyBhIHNpbXBsZSBhbmQgZWFzeSBlcnJvciB3aGVuIGtl
eXdvcmQgZXhwcmVzc2lvbnMgdHJpZ2dlciBhIHN5bnRheCBlcnJvcgotICAoZm9yIGV4YW1wbGUs
IGBgIi1rIGZvbyBhbmQgaW1wb3J0ImBgIHdpbGwgc2hvdyBhbiBlcnJvciB0aGF0IHlvdSBjYW4g
bm90IHVzZQotICB0aGUgYGBpbXBvcnRgYCBrZXl3b3JkIGluIGV4cHJlc3Npb25zKS4gKGAjMjk1
MwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTUzPmBf
KQotCi0tIENoYW5nZSBwYXJhbWV0cml6ZWQgYXV0b21hdGljIHRlc3QgaWQgZ2VuZXJhdGlvbiB0
byB1c2UgdGhlIGBgX19uYW1lX19gYAotICBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGluc3RlYWQg
b2YgdGhlIGZhbGxiYWNrIGFyZ3VtZW50IG5hbWUgcGx1cyBjb3VudGVyLgotICAoYCMyOTc2IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5NzY+YF8pCi0KLS0g
UmVwbGFjZSBweS5zdGQgd2l0aCBzdGRsaWIgaW1wb3J0cy4gKGAjMzA2NwotICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDY3PmBfKQotCi0tIENvcnJlY3Rl
ZCAneW91JyB0byAneW91cicgaW4gbG9nZ2luZyBkb2NzLiAoYCMzMTI5Ci0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxMjk+YF8pCi0KLQotUHl0ZXN0IDMu
My4yICgyMDE3LTEyLTI1KQotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1CdWcgRml4ZXMK
LS0tLS0tLS0tLQotCi0tIHB5dGVzdGVyOiBpZ25vcmUgZmlsZXMgdXNlZCB0byBvYnRhaW4gY3Vy
cmVudCB1c2VyIG1ldGFkYXRhIGluIHRoZSBmZCBsZWFrCi0gIGRldGVjdG9yLiAoYCMyNzg0IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3ODQ+YF8pCi0KLS0g
Rml4ICoqbWVtb3J5IGxlYWsqKiB3aGVyZSBvYmplY3RzIHJldHVybmVkIGJ5IGZpeHR1cmVzIHdl
cmUgbmV2ZXIgZGVzdHJ1Y3RlZAotICBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIChgIzI5ODEK
LSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk4MT5gXykK
LQotLSBGaXggY29udmVyc2lvbiBvZiBweWFyZ3MgdG8gZmlsZW5hbWUgdG8gbm90IGNvbnZlcnQg
c3ltbGlua3Mgb24gUHl0aG9uIDIuIChgIzI5ODUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk4NT5gXykKLQotLSBgYFBZVEVTVF9ET05UX1JFV1JJVEVg
YCBpcyBub3cgY2hlY2tlZCBmb3IgcGx1Z2lucyB0b28gcmF0aGVyIHRoYW4gb25seSBmb3IKLSAg
dGVzdCBtb2R1bGVzLiAoYCMyOTk1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI5OTU+YF8pCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi0tIEFkZCBjbGFyaWZ5aW5nIG5vdGUgYWJvdXQgYmVoYXZpb3Igb2Yg
bXVsdGlwbGUgcGFyYW1ldHJpemVkIGFyZ3VtZW50cyAoYCMzMDAxCi0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMDE+YF8pCi0KLQotVHJpdmlhbC9JbnRl
cm5hbCBDaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBDb2RlIGNsZWFudXAu
IChgIzMwMTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAx
NT5gXywKLSAgYCMzMDIxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMwMjE+YF8pCi0KLS0gQ2xlYW4gdXAgY29kZSBieSByZXBsYWNpbmcgaW1wb3J0cyBhbmQg
cmVmZXJlbmNlcyBvZiBgX2FzdGAgdG8gYGFzdGAuIChgIzMwMTgKLSAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAxOD5gXykKLQotCi1QeXRlc3QgMy4zLjEg
KDIwMTctMTItMDUpCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0t
LS0tLS0tCi0KLS0gRml4IGlzc3VlIGFib3V0IGBgLXAgbm86PHBsdWdpbj5gYCBoYXZpbmcgbm8g
ZWZmZWN0LiAoYCMyOTIwCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI5MjA+YF8pCi0KLS0gRml4IHJlZ3Jlc3Npb24gd2l0aCB3YXJuaW5ncyB0aGF0IGNv
bnRhaW5lZCBub24tc3RyaW5ncyBpbiB0aGVpciBhcmd1bWVudHMgaW4KLSAgUHl0aG9uIDIuIChg
IzI5NTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk1Nj5g
XykKLQotLSBBbHdheXMgZXNjYXBlIG51bGwgYnl0ZXMgd2hlbiBzZXR0aW5nIGBgUFlURVNUX0NV
UlJFTlRfVEVTVGBgLiAoYCMyOTU3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI5NTc+YF8pCi0KLS0gRml4IGBgWmVyb0RpdmlzaW9uRXJyb3JgYCB3aGVu
IHVzaW5nIHRoZSBgYHRlc3Rtb25gYCBwbHVnaW4gd2hlbiBubyB0ZXN0cwotICB3ZXJlIGFjdHVh
bGx5IGNvbGxlY3RlZC4gKGAjMjk3MQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yOTcxPmBfKQotCi0tIEJyaW5nIGJhY2sgYGBUZXJtaW5hbFJlcG9ydGVy
LndyaXRlcmBgIGFzIGFuIGFsaWFzIHRvCi0gIGBgVGVybWluYWxSZXBvcnRlci5fdHdgYC4gVGhp
cyBhbGlhcyB3YXMgcmVtb3ZlZCBieSBhY2NpZGVudCBpbiB0aGUgYGAzLjMuMGBgCi0gIHJlbGVh
c2UuIChgIzI5ODQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mjk4ND5gXykKLQotLSBUaGUgYGBweXRlc3QtY2FwdHVyZWxvZ2BgIHBsdWdpbiBpcyBub3cgYWxz
byBibGFja2xpc3RlZCwgYXZvaWRpbmcgZXJyb3JzIHdoZW4KLSAgcnVubmluZyBweXRlc3Qgd2l0
aCBpdCBzdGlsbCBpbnN0YWxsZWQuIChgIzMwMDQKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAwND5gXykKLQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9u
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gRml4IGJyb2tlbiBsaW5rIHRvIHBsdWdpbiBg
YHB5dGVzdC1sb2NhbHNlcnZlcmBgLiAoYCMyOTYzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5NjM+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBDaGFu
Z2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBVcGRhdGUgZ2l0aHViICJidWdzIiBs
aW5rIGluIGBgQ09OVFJJQlVUSU5HLnJzdGBgIChgIzI5NDkKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk0OT5gXykKLQotCi1QeXRlc3QgMy4zLjAgKDIw
MTctMTEtMjMpCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLURlcHJlY2F0aW9ucyBhbmQg
UmVtb3ZhbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBQeXRlc3Qgbm8gbG9uZ2Vy
IHN1cHBvcnRzIFB5dGhvbiAqKjIuNioqIGFuZCAqKjMuMyoqLiBUaG9zZSBQeXRob24gdmVyc2lv
bnMKLSAgYXJlIEVPTCBmb3Igc29tZSB0aW1lIG5vdyBhbmQgaW5jdXIgbWFpbnRlbmFuY2UgYW5k
IGNvbXBhdGliaWxpdHkgY29zdHMgb24KLSAgdGhlIHB5dGVzdCBjb3JlIHRlYW0sIGFuZCBmb2xs
b3dpbmcgdXAgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29tbXVuaXR5IHdlCi0gIGRlY2lkZWQgdGhh
dCB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlIHN1cHBvcnRlZCBzdGFydGluZyBvbiB0aGlzIHZlcnNp
b24uIFVzZXJzCi0gIHdoaWNoIHN0aWxsIHJlcXVpcmUgdGhvc2UgdmVyc2lvbnMgc2hvdWxkIHBp
biBweXRlc3QgdG8gYGA8My4zYGAuIChgIzI4MTIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjgxMj5gXykKLQotLSBSZW1vdmUgaW50ZXJuYWwgYGBfcHJl
bG9hZHBsdWdpbnMoKWBgIGZ1bmN0aW9uLiBUaGlzIHJlbW92YWwgaXMgcGFydCBvZiB0aGUKLSAg
YGBweXRlc3RfbmFtZXNwYWNlKClgYCBob29rIGRlcHJlY2F0aW9uLiAoYCMyNjM2Ci0gIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MzY+YF8pCi0KLS0gSW50
ZXJuYWxseSBjaGFuZ2UgYGBDYWxsU3BlYzJgYCB0byBoYXZlIGEgbGlzdCBvZiBtYXJrcyBpbnN0
ZWFkIG9mIGEgYnJva2VuCi0gIG1hcHBpbmcgb2Yga2V5d29yZHMuIFRoaXMgcmVtb3ZlcyB0aGUg
a2V5d29yZHMgYXR0cmlidXRlIG9mIHRoZSBpbnRlcm5hbAotICBgYENhbGxTcGVjMmBgIGNsYXNz
LiAoYCMyNjcyCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI2NzI+YF8pCi0KLS0gUmVtb3ZlIFBhcmFtZXRlclNldC5kZXByZWNhdGVkX2FyZ19kaWN0IC0g
aXRzIG5vdCBhIHB1YmxpYyBhcGkgYW5kIHRoZSBsYWNrCi0gIG9mIHRoZSB1bmRlcnNjb3JlIHdh
cyBhIG5hbWluZyBlcnJvci4gKGAjMjY3NQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNjc1PmBfKQotCi0tIFJlbW92ZSB0aGUgaW50ZXJuYWwgbXVsdGkt
dHlwZWQgYXR0cmlidXRlIGBgTm9kZS5fZXZhbHNraXBgYCBhbmQgcmVwbGFjZSBpdAotICB3aXRo
IHRoZSBib29sZWFuIGBgTm9kZS5fc2tpcHBlZF9ieV9tYXJrYGAuIChgIzI3NjcKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc2Nz5gXykKLQotLSBUaGUg
YGBwYXJhbXNgYCBsaXN0IHBhc3NlZCB0byBgYHB5dGVzdC5maXh0dXJlYGAgaXMgbm93IGZvcgot
ICBhbGwgZWZmZWN0cyBjb25zaWRlcmVkIGltbXV0YWJsZSBhbmQgZnJvemVuIGF0IHRoZSBtb21l
bnQgb2YgdGhlIGBgcHl0ZXN0LmZpeHR1cmVgYAotICBjYWxsLiBQcmV2aW91c2x5IHRoZSBsaXN0
IGNvdWxkIGJlIGNoYW5nZWQgYmVmb3JlIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHRoZSBmaXh0
dXJlCi0gIGFsbG93aW5nIGZvciBhIGZvcm0gb2YgZHluYW1pYyBwYXJhbWV0cml6YXRpb24gKGZv
ciBleGFtcGxlLCB1cGRhdGVkIGZyb20gY29tbWFuZC1saW5lIG9wdGlvbnMpLAotICBidXQgdGhp
cyB3YXMgYW4gdW53YW50ZWQgaW1wbGVtZW50YXRpb24gZGV0YWlsIHdoaWNoIGNvbXBsaWNhdGVk
IHRoZSBpbnRlcm5hbHMgYW5kIHByZXZlbnRlZAotICBzb21lIGludGVybmFsIGNsZWFudXAuIFNl
ZSBpc3N1ZSBgIzI5NTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjk1OT5gXwotICBmb3IgZGV0YWlscyBhbmQgYSByZWNvbW1lbmRlZCB3b3JrYXJvdW5kLgot
Ci1GZWF0dXJlcwotLS0tLS0tLS0KLQotLSBgYHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVy
YGAgaG9vayBjYW4gbm93IHJlY2VpdmUgYSBgYHJlcXVlc3RgYAotICBhcmd1bWVudC4gKGAjMjEy
NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTI0PmBfKQot
Ci0tIFJlcGxhY2UgdGhlIG9sZCBpbnRyb3NwZWN0aW9uIGNvZGUgaW4gY29tcGF0LnB5IHRoYXQg
ZGV0ZXJtaW5lcyB0aGUgYXZhaWxhYmxlCi0gIGFyZ3VtZW50cyBvZiBmaXh0dXJlcyB3aXRoIGlu
c3BlY3Quc2lnbmF0dXJlIG9uIFB5dGhvbiAzIGFuZAotICBmdW5jc2lncy5zaWduYXR1cmUgb24g
UHl0aG9uIDIuIFRoaXMgc2hvdWxkIHJlc3BlY3QgYGBfX3NpZ25hdHVyZV9fYGAKLSAgZGVjbGFy
YXRpb25zIG9uIGZ1bmN0aW9ucy4gKGAjMjI2NwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjY3PmBfKQotCi0tIFJlcG9ydCB0ZXN0cyB3aXRoIGdsb2Jh
bCBgYHB5dGVzdG1hcmtgYCB2YXJpYWJsZSBvbmx5IG9uY2UuIChgIzI1NDkKLSAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU0OT5gXykKLQotLSBOb3cgcHl0
ZXN0IGRpc3BsYXlzIHRoZSB0b3RhbCBwcm9ncmVzcyBwZXJjZW50YWdlIHdoaWxlIHJ1bm5pbmcg
dGVzdHMuIFRoZQotICBwcmV2aW91cyBvdXRwdXQgc3R5bGUgY2FuIGJlIHNldCBieSBjb25maWd1
cmluZyB0aGUgYGBjb25zb2xlX291dHB1dF9zdHlsZWBgCi0gIHNldHRpbmcgdG8gYGBjbGFzc2lj
YGAuIChgIzI2NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjY1Nz5gXykKLQotLSBNYXRjaCBgYHdhcm5zYGAgc2lnbmF0dXJlIHRvIGBgcmFpc2VzYGAgYnkg
YWRkaW5nIGBgbWF0Y2hgYCBrZXl3b3JkLiAoYCMyNzA4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3MDg+YF8pCi0KLS0gUHl0ZXN0IG5vdyBjYXB0dXJl
cyBhbmQgZGlzcGxheXMgb3V0cHV0IGZyb20gdGhlIHN0YW5kYXJkIGBgbG9nZ2luZ2BgIG1vZHVs
ZS4KLSAgVGhlIHVzZXIgY2FuIGNvbnRyb2wgdGhlIGxvZ2dpbmcgbGV2ZWwgdG8gYmUgY2FwdHVy
ZWQgYnkgc3BlY2lmeWluZyBvcHRpb25zCi0gIGluIGBgcHl0ZXN0LmluaWBgLCB0aGUgY29tbWFu
ZCBsaW5lIGFuZCBhbHNvIGR1cmluZyBpbmRpdmlkdWFsIHRlc3RzIHVzaW5nCi0gIG1hcmtlcnMu
IEFsc28sIGEgYGBjYXBsb2dgYCBmaXh0dXJlIGlzIGF2YWlsYWJsZSB0aGF0IGVuYWJsZXMgdXNl
cnMgdG8gdGVzdAotICB0aGUgY2FwdHVyZWQgbG9nIGR1cmluZyBzcGVjaWZpYyB0ZXN0cyAoc2lt
aWxhciB0byBgYGNhcHN5c2BgIGZvciBleGFtcGxlKS4KLSAgRm9yIG1vcmUgaW5mb3JtYXRpb24s
IHBsZWFzZSBzZWUgdGhlIGBsb2dnaW5nIGRvY3MKLSAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL2xhdGVzdC9sb2dnaW5nLmh0bWw+YF8uIFRoaXMgZmVhdHVyZSB3YXMKLSAgaW50cm9kdWNl
ZCBieSBtZXJnaW5nIHRoZSBwb3B1bGFyIGBweXRlc3QtY2F0Y2hsb2cKLSAgPGh0dHBzOi8vcHlw
aS5vcmcvcHJvamVjdC9weXRlc3QtY2F0Y2hsb2cvPmBfIHBsdWdpbiwgdGhhbmtzIHRvIGBUaG9t
YXMgSGlzY2gKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS90aGlzY2g+YF8uIEJlIGFkdmlzZWQgdGhh
dCBkdXJpbmcgdGhlIG1lcmdpbmcgdGhlCi0gIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW50ZXJm
YWNlIHdpdGggdGhlIGRlZnVuY3QgYGBweXRlc3QtY2FwdHVyZWxvZ2BgIGhhcwotICBiZWVuIGRy
b3BwZWQuIChgIzI3OTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjc5ND5gXykKLQotLSBBZGQgYGBhbGxvd19tb2R1bGVfbGV2ZWxgYCBrd2FyZyB0byBgYHB5
dGVzdC5za2lwKClgYCwgZW5hYmxpbmcgdG8gc2tpcCB0aGUKLSAgd2hvbGUgbW9kdWxlLiAoYCMy
ODA4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4MDg+YF8p
Ci0KLS0gQWxsb3cgc2V0dGluZyBgYGZpbGVfb3JfZGlyYGAsIGBgLWNgYCwgYW5kIGBgLW9gYCBp
biBQWVRFU1RfQURET1BUUy4gKGAjMjgyNAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yODI0PmBfKQotCi0tIFJldHVybiBzdGRvdXQvc3RkZXJyIGNhcHR1
cmUgcmVzdWx0cyBhcyBhIGBgbmFtZWR0dXBsZWBgLCBzbyBgYG91dGBgIGFuZAotICBgYGVycmBg
IGNhbiBiZSBhY2Nlc3NlZCBieSBhdHRyaWJ1dGUuIChgIzI4NzkKLSAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg3OT5gXykKLQotLSBBZGQgYGBjYXBmZGJp
bmFyeWBgLCBhIHZlcnNpb24gb2YgYGBjYXBmZGBgIHdoaWNoIHJldHVybnMgYnl0ZXMgZnJvbQot
ICBgYHJlYWRvdXRlcnIoKWBgLiAoYCMyOTIzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI5MjM+YF8pCi0KLS0gQWRkIGBgY2Fwc3lzYmluYXJ5YGAgYSB2
ZXJzaW9uIG9mIGBgY2Fwc3lzYGAgd2hpY2ggcmV0dXJucyBieXRlcyBmcm9tCi0gIGBgcmVhZG91
dGVycigpYGAuIChgIzI5MzQKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjkzND5gXykKLQotLSBJbXBsZW1lbnQgZmVhdHVyZSB0byBza2lwIGBgc2V0dXAu
cHlgYCBmaWxlcyB3aGVuIHJ1biB3aXRoCi0gIGBgLS1kb2N0ZXN0LW1vZHVsZXNgYC4gKGAjNTAy
Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMj5gXykK
LQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIFJlc3VtZSBvdXRwdXQgY2FwdHVyaW5nIGFm
dGVyIGBgY2Fwc3lzL2NhcGZkLmRpc2FibGVkKClgYCBjb250ZXh0IG1hbmFnZXIuCi0gIChgIzE5
OTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk5Mz5gXykK
LQotLSBgYHB5dGVzdF9maXh0dXJlX3NldHVwYGAgYW5kIGBgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9m
aW5hbGl6ZXJgYCBob29rcyBhcmUgbm93Ci0gIGNhbGxlZCBmb3IgYWxsIGBgY29uZnRlc3QucHlg
YCBmaWxlcy4gKGAjMjEyNAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yMTI0PmBfKQotCi0tIElmIGFuIGV4Y2VwdGlvbiBoYXBwZW5zIHdoaWxlIGxvYWRp
bmcgYSBwbHVnaW4sIHB5dGVzdCBubyBsb25nZXIgaGlkZXMgdGhlCi0gIG9yaWdpbmFsIHRyYWNl
YmFjay4gSW4gUHl0aG9uIDIgaXQgd2lsbCBzaG93IHRoZSBvcmlnaW5hbCB0cmFjZWJhY2sgd2l0
aCBhIG5ldwotICBtZXNzYWdlIHRoYXQgZXhwbGFpbnMgaW4gd2hpY2ggcGx1Z2luLiBJbiBQeXRo
b24gMyBpdCB3aWxsIHNob3cgMiBjYW5vbml6ZWQKLSAgZXhjZXB0aW9ucywgdGhlIG9yaWdpbmFs
IGV4Y2VwdGlvbiB3aGlsZSBsb2FkaW5nIHRoZSBwbHVnaW4gaW4gYWRkaXRpb24gdG8gYW4KLSAg
ZXhjZXB0aW9uIHRoYXQgcHl0ZXN0IHRocm93cyBhYm91dCBsb2FkaW5nIGEgcGx1Z2luLiAoYCMy
NDkxCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0OTE+
YF8pCi0KLS0gYGBjYXBzeXNgYCBhbmQgYGBjYXBmZGBgIGNhbiBub3cgYmUgdXNlZCBieSBvdGhl
ciBmaXh0dXJlcy4gKGAjMjcwOQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNzA5PmBfKQotCi0tIEludGVybmFsIGBgcHl0ZXN0ZXJgYCBwbHVnaW4gcHJv
cGVybHkgZW5jb2RlcyBgYGJ5dGVzYGAgYXJndW1lbnRzIHRvCi0gIGBgdXRmLThgYC4gKGAjMjcz
OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzM4PmBfKQot
Ci0tIGBgdGVzdGRpcmBgIG5vdyB1c2VzIHVzZSB0aGUgc2FtZSBtZXRob2QgdXNlZCBieSBgYHRt
cGRpcmBgIHRvIGNyZWF0ZSBpdHMKLSAgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gVGhpcyBjaGFuZ2Vz
IHRoZSBmaW5hbCBzdHJ1Y3R1cmUgb2YgdGhlIGBgdGVzdGRpcmBgCi0gIGRpcmVjdG9yeSBzbGln
aHRseSwgYnV0IHNob3VsZCBub3QgYWZmZWN0IHVzYWdlIGluIG5vcm1hbCBzY2VuYXJpb3MgYW5k
Ci0gIGF2b2lkcyBhIG51bWJlciBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIChgIzI3NTEKLSAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc1MT5gXykKLQotLSBQ
eXRlc3Qgbm8gbG9uZ2VyIGNvbXBsYWlucyBhYm91dCB3YXJuaW5ncyB3aXRoIHVuaWNvZGUgbWVz
c2FnZXMgYmVpbmcKLSAgbm9uLWFzY2lpIGNvbXBhdGlibGUgZXZlbiBmb3IgYXNjaWktY29tcGF0
aWJsZSBtZXNzYWdlcy4gQXMgYSByZXN1bHQgb2YgdGhpcywKLSAgd2FybmluZ3Mgd2l0aCB1bmlj
b2RlIG1lc3NhZ2VzIGFyZSBjb252ZXJ0ZWQgZmlyc3QgdG8gYW4gYXNjaWkgcmVwcmVzZW50YXRp
b24KLSAgZm9yIHNhZmV0eS4gKGAjMjgwOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yODA5PmBfKQotCi0tIENoYW5nZSByZXR1cm4gdmFsdWUgb2YgcHl0ZXN0
IGNvbW1hbmQgd2hlbiBgYC0tbWF4ZmFpbGBgIGlzIHJlYWNoZWQgZnJvbQotICBgYDJgYCAoaW50
ZXJydXB0ZWQpIHRvIGBgMWBgIChmYWlsZWQpLiAoYCMyODQ1Ci0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4NDU+YF8pCi0KLS0gRml4IGlzc3VlIGluIGFz
c2VydGlvbiByZXdyaXRpbmcgd2hpY2ggY291bGQgbGVhZCBpdCB0byByZXdyaXRlIG1vZHVsZXMg
d2hpY2gKLSAgc2hvdWxkIG5vdCBiZSByZXdyaXR0ZW4uIChgIzI5MzkKLSAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkzOT5gXykKLQotLSBIYW5kbGUgbWFy
a3Mgd2l0aG91dCBkZXNjcmlwdGlvbiBpbiBgYHB5dGVzdC5pbmlgYC4gKGAjMjk0MgotICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTQyPmBfKQotCi0KLVRy
aXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gcHl0
ZXN0IG5vdyBkZXBlbmRzIG9uIGBhdHRycyA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2F0dHJz
Lz5gXyBmb3IgaW50ZXJuYWwKLSAgc3RydWN0dXJlcyB0byBlYXNlIGNvZGUgbWFpbnRhaW5hYmls
aXR5LiAoYCMyNjQxCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzI2NDE+YF8pCi0KLS0gUmVmYWN0b3JlZCBpbnRlcm5hbCBQeXRob24gMi8zIGNvbXBhdGli
aWxpdHkgY29kZSB0byB1c2UgYGBzaXhgYC4gKGAjMjY0MgotICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjQyPmBfKQotCi0tIFN0b3AgdmVuZG9yaW5nIGBg
cGx1Z2d5YGAgLSB3ZSdyZSBtaXNzaW5nIG91dCBvbiBpdHMgbGF0ZXN0IGNoYW5nZXMgZm9yIG5v
dAotICBtdWNoIGJlbmVmaXQgKGAjMjcxOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yNzE5PmBfKQotCi0tIEludGVybmFsIHJlZmFjdG9yOiBzaW1wbGlmeSBh
c2NpaSBzdHJpbmcgZXNjYXBpbmcgYnkgdXNpbmcgdGhlCi0gIGJhY2tzbGFzaHJlcGxhY2UgZXJy
b3IgaGFuZGxlciBpbiBuZXdlciBQeXRob24gMyB2ZXJzaW9ucy4gKGAjMjczNAotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzM0PmBfKQotCi0tIFJlbW92
ZSB1bm5lY2Vzc2FyeSBtYXJrIGV2YWx1YXRvciBpbiB1bml0dGVzdCBwbHVnaW4gKGAjMjc2Nwot
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzY3PmBfKQot
Ci0tIENhbGxzIHRvIGBgTWV0YWZ1bmMuYWRkY2FsbGBgIG5vdyBlbWl0IGEgZGVwcmVjYXRpb24g
d2FybmluZy4gVGhpcyBmdW5jdGlvbgotICBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiBg
YHB5dGVzdC00LjBgYC4gKGAjMjg3NgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yODc2PmBfKQotCi0tIEludGVybmFsIG1vdmUgb2YgdGhlIHBhcmFtZXRl
cnNldCBleHRyYWN0aW9uIHRvIGEgbW9yZSBtYWludGFpbmFibGUgcGxhY2UuCi0gIChgIzI4Nzcg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg3Nz5gXykKLQot
LSBJbnRlcm5hbCByZWZhY3RvcmluZyB0byBzaW1wbGlmeSBzY29wZSBub2RlIGxvb2t1cC4gKGAj
MjkxMAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTEw
PmBfKQotCi0tIENvbmZpZ3VyZSBgYHB5dGVzdGBgIHRvIHByZXZlbnQgcGlwIGZyb20gaW5zdGFs
bGluZyBweXRlc3QgaW4gdW5zdXBwb3J0ZWQKLSAgUHl0aG9uIHZlcnNpb25zLiAoYCMyOTIyCi0g
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5MjI+YF8pCi0K
LQotUHl0ZXN0IDMuMi41ICgyMDE3LTExLTE1KQotPT09PT09PT09PT09PT09PT09PT09PT09PQot
Ci1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIFJlbW92ZSBgYHB5PDEuNWBgIHJlc3RyaWN0aW9u
IGZyb20gYGBweXRlc3RgYCBhcyB0aGlzIGNhbiBjYXVzZSB2ZXJzaW9uCi0gIGNvbmZsaWN0cyBp
biBzb21lIGluc3RhbGxhdGlvbnMuIChgIzI5MjYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkyNj5gXykKLQotCi1QeXRlc3QgMy4yLjQgKDIwMTctMTEt
MTMpCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0K
LS0gRml4IHRoZSBidWcgd2hlcmUgcnVubmluZyB3aXRoIGBgLS1weWFyZ3NgYCB3aWxsIHJlc3Vs
dCBpbiBpdGVtcyB3aXRoCi0gIGVtcHR5IGBgcGFyZW50Lm5vZGVpZGBgIGlmIHJ1biBmcm9tIGEg
ZGlmZmVyZW50IHJvb3QgZGlyZWN0b3J5LiAoYCMyNzc1Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NzU+YF8pCi0KLS0gRml4IGlzc3VlIHdpdGggYGBA
cHl0ZXN0LnBhcmFtZXRyaXplYGAgaWYgYXJnbmFtZXMgd2FzIHNwZWNpZmllZCBhcyBrZXl3b3Jk
IGFyZ3VtZW50cy4KLSAgKGAjMjgxOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yODE5PmBfKQotCi0tIFN0cmlwIHdoaXRlc3BhY2UgZnJvbSBtYXJrZXIgbmFt
ZXMgd2hlbiByZWFkaW5nIHRoZW0gZnJvbSBJTkkgY29uZmlnLiAoYCMyODU2Ci0gIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4NTY+YF8pCi0KLS0gU2hvdyBm
dWxsIGNvbnRleHQgb2YgZG9jdGVzdCBzb3VyY2UgaW4gdGhlIHB5dGVzdCBvdXRwdXQsIGlmIHRo
ZSBsaW5lIG51bWJlciBvZgotICBmYWlsZWQgZXhhbXBsZSBpbiB0aGUgZG9jc3RyaW5nIGlzIDwg
OS4gKGAjMjg4MgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yODgyPmBfKQotCi0tIE1hdGNoIGZpeHR1cmUgcGF0aHMgYWdhaW5zdCBhY3R1YWwgcGF0aCBz
ZWdtZW50cyBpbiBvcmRlciB0byBhdm9pZCBtYXRjaGluZyBmb2xkZXJzIHdoaWNoIHNoYXJlIGEg
cHJlZml4LgotICAoYCMyODM2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI4MzY+YF8pCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotLSBJbnRyb2R1Y2UgYSBkZWRpY2F0ZWQgc2VjdGlvbiBhYm91dCBjb25mdGVz
dC5weS4gKGAjMTUwNQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNTA1PmBfKQotCi0tIEV4cGxpY2l0bHkgbWVudGlvbiBgYHhwYXNzYGAgaW4gdGhlIGRv
Y3VtZW50YXRpb24gb2YgYGB4ZmFpbGBgLiAoYCMxOTk3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5OTc+YF8pCi0KLS0gQXBwZW5kIGV4YW1wbGUgZm9y
IHB5dGVzdC5wYXJhbSBpbiB0aGUgZXhhbXBsZS9wYXJhbWV0cml6ZSBkb2N1bWVudC4gKGAjMjY1
OAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjU4PmBf
KQotCi0tIENsYXJpZnkgbGFuZ3VhZ2Ugb2YgcHJvcG9zYWwgZm9yIGZpeHR1cmVzIHBhcmFtZXRl
cnMgKGAjMjg5MwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yODkzPmBfKQotCi0tIExpc3QgcHl0aG9uIDMuNiBpbiB0aGUgZG9jdW1lbnRlZCBzdXBwb3J0
ZWQgdmVyc2lvbnMgaW4gdGhlIGdldHRpbmcgc3RhcnRlZAotICBkb2N1bWVudC4gKGAjMjkwMyA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTAzPmBfKQotCi0t
IENsYXJpZnkgdGhlIGRvY3VtZW50YXRpb24gb2YgYXZhaWxhYmxlIGZpeHR1cmUgc2NvcGVzLiAo
YCM1MzgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM4
PmBfKQotCi0tIEFkZCBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBgYHB5dGhvbiAtbSBweXRlc3Rg
YCBpbnZvY2F0aW9uIGFkZGluZyB0aGUKLSAgY3VycmVudCBkaXJlY3RvcnkgdG8gc3lzLnBhdGgu
IChgIzkxMQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85
MTE+YF8pCi0KLQotUHl0ZXN0IDMuMi4zICgyMDE3LTEwLTAzKQotPT09PT09PT09PT09PT09PT09
PT09PT09PQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIEZpeCBjcmFzaCBpbiB0YWIgY29t
cGxldGlvbiB3aGVuIG5vIHByZWZpeCBpcyBnaXZlbi4gKGAjMjc0OAotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzQ4PmBfKQotCi0tIFRoZSBlcXVhbGl0
eSBjaGVja2luZyBmdW5jdGlvbiAoYGBfX2VxX19gYCkgb2YgYGBNYXJrRGVjb3JhdG9yYGAgcmV0
dXJucwotICBgYEZhbHNlYGAgaWYgb25lIG9iamVjdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgYGBN
YXJrRGVjb3JhdG9yYGAuIChgIzI3NTgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjc1OD5gXykKLQotLSBXaGVuIHJ1bm5pbmcgYGBweXRlc3QgLS1maXh0
dXJlcy1wZXItdGVzdGBgOiBkb24ndCBjcmFzaCBpZiBhbiBpdGVtIGhhcyBubwotICBfZml4dHVy
ZWluZm8gYXR0cmlidXRlIChlLmcuIGRvY3Rlc3RzKSAoYCMyNzg4Ci0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3ODg+YF8pCi0KLQotSW1wcm92ZWQgRG9j
dW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEluIGhlbHAgdGV4dCBvZiBg
YC1rYGAgb3B0aW9uLCBhZGQgZXhhbXBsZSBvZiB1c2luZyBgYG5vdGBgIHRvIG5vdCBzZWxlY3QK
LSAgY2VydGFpbiB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCB0aGUgcHJvdmlkZWQgZXhwcmVzc2lv
bi4gKGAjMTQ0MgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xNDQyPmBfKQotCi0tIEFkZCBub3RlIGluIGBgcGFyYW1ldHJpemUucnN0YGAgYWJvdXQgY2Fs
bGluZyBgYG1ldGFmdW5jLnBhcmFtZXRyaXplYGAKLSAgbXVsdGlwbGUgdGltZXMuIChgIzE1NDgg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU0OD5gXykKLQot
Ci1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0t
IFNldCBgYHhmYWlsX3N0cmljdD1UcnVlYGAgaW4gcHl0ZXN0J3Mgb3duIHRlc3Qgc3VpdGUgdG8g
Y2F0Y2ggZXhwZWN0ZWQKLSAgZmFpbHVyZXMgYXMgc29vbiBhcyB0aGV5IHN0YXJ0IHRvIHBhc3Mu
IChgIzI3MjIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjcyMj5gXykKLQotLSBGaXggdHlwbyBpbiBleGFtcGxlIG9mIHBhc3NpbmcgYSBjYWxsYWJsZSB0
byBtYXJrZXJzIChpbiBleGFtcGxlL21hcmtlcnMucnN0KQotICAoYCMyNzY1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NjU+YF8pCi0KLQotUHl0ZXN0IDMu
Mi4yICgyMDE3LTA5LTA2KQotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1CdWcgRml4ZXMK
LS0tLS0tLS0tLQotCi0tIENhbGxpbmcgdGhlIGRlcHJlY2F0ZWQgYHJlcXVlc3QuZ2V0ZnVuY2Fy
Z3ZhbHVlKClgIG5vdyBzaG93cyB0aGUgc291cmNlIG9mCi0gIHRoZSBjYWxsLiAoYCMyNjgxIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2ODE+YF8pCi0KLS0g
QWxsb3cgdGVzdHMgZGVjbGFyZWQgYXMgYGBAc3RhdGljbWV0aG9kYGAgdG8gdXNlIGZpeHR1cmVz
LiAoYCMyNjk5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI2OTk+YF8pCi0KLS0gRml4ZWQgZWRnZS1jYXNlIGR1cmluZyBjb2xsZWN0aW9uOiBhdHRyaWJ1
dGVzIHdoaWNoIHJhaXNlZCBgYHB5dGVzdC5mYWlsYGAKLSAgd2hlbiBhY2Nlc3NlZCB3b3VsZCBh
Ym9ydCB0aGUgZW50aXJlIGNvbGxlY3Rpb24uIChgIzI3MDcKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjcwNz5gXykKLQotLSBGaXggYGBSZXByRnVuY0Fy
Z3NgYCB3aXRoIG1peGVkIHVuaWNvZGUgYW5kIFVURi04IGFyZ3MuIChgIzI3MzEKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjczMT5gXykKLQotCi1JbXBy
b3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSW4gZXhhbXBs
ZXMgb24gd29ya2luZyB3aXRoIGN1c3RvbSBtYXJrZXJzLCBhZGQgZXhhbXBsZXMgZGVtb25zdHJh
dGluZyB0aGUKLSAgdXNhZ2Ugb2YgYGBweXRlc3QubWFyay5NQVJLRVJfTkFNRS53aXRoX2FyZ3Ng
YCBpbiBjb21wYXJpc29uIHdpdGgKLSAgYGBweXRlc3QubWFyay5NQVJLRVJfTkFNRS5fX2NhbGxf
X2BgIChgIzI2MDQKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjYwND5gXykKLQotLSBJbiBvbmUgb2YgdGhlIHNpbXBsZSBleGFtcGxlcywgdXNlIGBweXRl
c3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcygpYCB0byBza2lwCi0gIHRlc3RzIGJhc2VkIG9uIGEg
Y29tbWFuZC1saW5lIG9wdGlvbiwgYWxsb3dpbmcgaXRzIHNoYXJpbmcgd2hpbGUgcHJldmVudGlu
ZyBhCi0gIHVzZXIgZXJyb3Igd2hlbiBhY2Vzc2luZyBgcHl0ZXN0LmNvbmZpZ2AgYmVmb3JlIHRo
ZSBhcmd1bWVudCBwYXJzaW5nLiAoYCMyNjUzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI2NTM+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2Vz
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBGaXhlZCBtaW5vciBlcnJvciBpbiAnR29v
ZCBQcmFjdGljZXMvTWFudWFsIEludGVncmF0aW9uJyBjb2RlIHNuaXBwZXQuCi0gIChgIzI2OTEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY5MT5gXykKLQot
LSBGaXhlZCB0eXBvIGluIGdvb2RwcmFjdGljZXMucnN0LiAoYCMyNzIxCi0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3MjE+YF8pCi0KLS0gSW1wcm92ZSB1
c2VyIGd1aWRhbmNlIHJlZ2FyZGluZyBgYC0tcmVzdWx0bG9nYGAgZGVwcmVjYXRpb24uIChgIzI3
MzkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjczOT5g
XykKLQotCi1QeXRlc3QgMy4yLjEgKDIwMTctMDgtMDgpCi09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gRml4ZWQgc21hbGwgdGVybWluYWwgZ2xp
dGNoIHdoZW4gY29sbGVjdGluZyBhIHNpbmdsZSB0ZXN0IGl0ZW0uIChgIzI1NzkKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU3OT5gXykKLQotLSBDb3Jy
ZWN0bHkgY29uc2lkZXIgYGAvYGAgYXMgdGhlIGZpbGUgc2VwYXJhdG9yIHRvIGF1dG9tYXRpY2Fs
bHkgbWFyayBwbHVnaW4KLSAgZmlsZXMgZm9yIHJld3JpdGUgb24gV2luZG93cy4gKGAjMjU5MSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjU5MT5gXykK
LQotLSBQcm9wZXJseSBlc2NhcGUgdGVzdCBuYW1lcyB3aGVuIHNldHRpbmcgYGBQWVRFU1RfQ1VS
UkVOVF9URVNUYGAgZW52aXJvbm1lbnQKLSAgdmFyaWFibGUuIChgIzI2NDQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY0ND5gXykKLQotLSBGaXggZXJyb3Ig
b24gV2luZG93cyBhbmQgUHl0aG9uIDMuNisgd2hlbiBgYHN5cy5zdGRvdXRgYCBoYXMgYmVlbiBy
ZXBsYWNlZAotICB3aXRoIGEgc3RyZWFtLWxpa2Ugb2JqZWN0IHdoaWNoIGRvZXMgbm90IGltcGxl
bWVudCB0aGUgZnVsbCBgYGlvYGAgbW9kdWxlCi0gIGJ1ZmZlciBwcm90b2NvbC4gSW4gcGFydGlj
dWxhciB0aGlzIGFmZmVjdHMgYGBweXRlc3QteGRpc3RgYCB1c2VycyBvbiB0aGUKLSAgYWZvcmVt
ZW50aW9uZWQgcGxhdGZvcm0uIChgIzI2NjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0g
IGRldi9weXRlc3QvaXNzdWVzLzI2NjY+YF8pCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEV4cGxpY2l0bHkgZG9jdW1lbnQgd2hpY2ggcHl0
ZXN0IGZlYXR1cmVzIHdvcmsgd2l0aCBgYHVuaXR0ZXN0YGAuIChgIzI2MjYKLSAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYyNj5gXykKLQotCi1QeXRlc3Qg
My4yLjAgKDIwMTctMDctMzApCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLURlcHJlY2F0
aW9ucyBhbmQgUmVtb3ZhbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBgYHB5dGVz
dC5hcHByb3hgYCBubyBsb25nZXIgc3VwcG9ydHMgYGA+YGAsIGBgPj1gYCwgYGA8YGAgYW5kIGBg
PD1gYAotICBvcGVyYXRvcnMgdG8gYXZvaWQgc3VycHJpc2luZy9pbmNvbnNpc3RlbnQgYmVoYXZp
b3IuIFNlZSBgdGhlIGFwcHJveCBkb2NzCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9s
YXRlc3QvYnVpbHRpbi5odG1sI3B5dGVzdC5hcHByb3g+YF8gZm9yIG1vcmUKLSAgaW5mb3JtYXRp
b24uIChgIzIwMDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjAwMz5gXykKLQotLSBBbGwgb2xkLXN0eWxlIHNwZWNpZmljIGJlaGF2aW9yIGluIGN1cnJlbnQg
Y2xhc3NlcyBpbiB0aGUgcHl0ZXN0J3MgQVBJIGlzCi0gIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBh
dCB0aGlzIHBvaW50IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KLSAg
VGhpcyBhZmZlY3RzIFB5dGhvbiAyIHVzZXJzIG9ubHkgYW5kIGluIHJhcmUgc2l0dWF0aW9ucy4g
KGAjMjE0NwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
MTQ3PmBfKQotCi0tIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBub3cgcmFpc2VkIHdoZW4gdXNp
bmcgbWFya3MgZm9yIHBhcmFtZXRlcnMKLSAgaW4gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBg
LiBVc2UgYGBweXRlc3QucGFyYW1gYCB0byBhcHBseSBtYXJrcyB0bwotICBwYXJhbWV0ZXJzIGlu
c3RlYWQuIChgIzI0MjcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjQyNz5gXykKLQotCi1GZWF0dXJlcwotLS0tLS0tLS0KLQotLSBBZGQgc3VwcG9ydCBmb3Ig
bnVtcHkgYXJyYXlzIChhbmQgZGljdHMpIHRvIGFwcHJveC4gKGAjMTk5NAotICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTk0PmBfKQotCi0tIE5vdyB0ZXN0
IGZ1bmN0aW9uIG9iamVjdHMgaGF2ZSBhIGBgcHl0ZXN0bWFya2BgIGF0dHJpYnV0ZSBjb250YWlu
aW5nIGEgbGlzdAotICBvZiBtYXJrcyBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSB0ZXN0IGZ1bmN0
aW9uLCBhcyBvcHBvc2VkIHRvIG1hcmtzIGluaGVyaXRlZAotICBmcm9tIHBhcmVudCBjbGFzc2Vz
IG9yIG1vZHVsZXMuIChgIzI1MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0gIGRldi9w
eXRlc3QvaXNzdWVzLzI1MTY+YF8pCi0KLS0gQ29sbGVjdGlvbiBpZ25vcmVzIGxvY2FsIHZpcnR1
YWxlbnZzIGJ5IGRlZmF1bHQ7IGAtLWNvbGxlY3QtaW4tdmlydHVhbGVudmAKLSAgb3ZlcnJpZGVz
IHRoaXMgYmVoYXZpb3IuIChgIzI1MTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0gIGRl
di9weXRlc3QvaXNzdWVzLzI1MTg+YF8pCi0KLS0gQWxsb3cgY2xhc3MgbWV0aG9kcyBkZWNvcmF0
ZWQgYXMgYGBAc3RhdGljbWV0aG9kYGAgdG8gYmUgY2FuZGlkYXRlcyBmb3IKLSAgY29sbGVjdGlv
biBhcyBhIHRlc3QgZnVuY3Rpb24uIChPbmx5IGZvciBQeXRob24gMi43IGFuZCBhYm92ZS4gUHl0
aG9uIDIuNgotICB3aWxsIHN0aWxsIGlnbm9yZSBzdGF0aWMgbWV0aG9kcy4pIChgIzI1MjggPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0gIGRldi9weXRlc3QvaXNzdWVzLzI1Mjg+YF8pCi0K
LS0gSW50cm9kdWNlIGBgbWFyay53aXRoX2FyZ3NgYCBpbiBvcmRlciB0byBhbGxvdyBwYXNzaW5n
IGZ1bmN0aW9ucy9jbGFzc2VzIGFzCi0gIHNvbGUgYXJndW1lbnQgdG8gbWFya3MuIChgIzI1NDAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0gIGRldi9weXRlc3QvaXNzdWVzLzI1NDA+YF8p
Ci0KLS0gTmV3IGBgY2FjaGVfZGlyYGAgaW5pIG9wdGlvbjogc2V0cyB0aGUgZGlyZWN0b3J5IHdo
ZXJlIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgY2FjaGUgcGx1Z2luIGFyZSBzdG9yZWQuIERpcmVj
dG9yeSBtYXkgYmUgcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aDogaWYgcmVsYXRpdmUgcGF0aCwg
dGhlbgotICBkaXJlY3RvcnkgaXMgY3JlYXRlZCByZWxhdGl2ZSB0byBgYHJvb3RkaXJgYCwgb3Ro
ZXJ3aXNlIGl0IGlzIHVzZWQgYXMgaXMuCi0gIEFkZGl0aW9uYWxseSBwYXRoIG1heSBjb250YWlu
IGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBhcmUgZXhwYW5kZWQgZHVyaW5nCi0gIHJ1bnRp
bWUuIChgIzI1NDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjU0Mz5gXykKLQotLSBJbnRyb2R1Y2UgdGhlIGBgUFlURVNUX0NVUlJFTlRfVEVTVGBgIGVudmly
b25tZW50IHZhcmlhYmxlIHRoYXQgaXMgc2V0IHdpdGgKLSAgdGhlIGBgbm9kZWlkYGAgYW5kIHN0
YWdlIChgYHNldHVwYGAsIGBgY2FsbGBgIGFuZCBgYHRlYXJkb3duYGApIG9mIHRoZSB0ZXN0Ci0g
IGJlaW5nIGN1cnJlbnRseSBleGVjdXRlZC4gU2VlIHRoZSBgZG9jdW1lbnRhdGlvbgotICA8aHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2V4YW1wbGUvc2ltcGxlLmh0bWwjcHl0ZXN0
LWN1cnJlbnQtdGVzdC0KLSAgZW52aXJvbm1lbnQtdmFyaWFibGU+YF8gZm9yIG1vcmUgaW5mby4g
KGAjMjU4MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMv
MjU4Mz5gXykKLQotLSBJbnRyb2R1Y2VkIGBgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzYGAg
bWFyayB3aGljaCBhbGxvd3Mgb3ZlcndyaXRpbmcgdGhlCi0gIHdhcm5pbmdzIGZpbHRlciBvbiBh
IHBlciB0ZXN0LCBjbGFzcyBvciBtb2R1bGUgbGV2ZWwuIFNlZSB0aGUgYGRvY3MKLSAgPGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC93YXJuaW5ncy5odG1sI3B5dGVzdC1tYXJrLQot
ICBmaWx0ZXJ3YXJuaW5ncz5gXyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKGAjMjU5OCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjU5OD5gXykKLQotLSBg
YC0tbGFzdC1mYWlsZWRgYCBub3cgcmVtZW1iZXJzIGZvcmV2ZXIgd2hlbiBhIHRlc3QgaGFzIGZh
aWxlZCBhbmQgb25seQotICBmb3JnZXRzIGl0IGlmIGl0IHBhc3NlcyBhZ2Fpbi4gVGhpcyBtYWtl
cyBpdCBlYXN5IHRvIGZpeCBhIHRlc3Qgc3VpdGUgYnkKLSAgc2VsZWN0aXZlbHkgcnVubmluZyBm
aWxlcyBhbmQgZml4aW5nIHRlc3RzIGluY3JlbWVudGFsbHkuIChgIzI2MjEKLSAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYyMT5gXykKLQotLSBOZXcgYGBw
eXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2hgYCBob29rIHdoaWNoIGFsbG93cyBwbHVnaW5z
IHRvIGFkZAotICBtZXNzYWdlcyB0byB0aGUgdGVybWluYWwgcmVwb3J0aW5nIGFmdGVyIGNvbGxl
Y3Rpb24gaGFzIGJlZW4gZmluaXNoZWQKLSAgc3VjY2Vzc2Z1bGx5LiAoYCMyNjIyIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MjI+YF8pCi0KLS0gQWRkZWQg
c3VwcG9ydCBmb3IgYFBFUC00MTUncyA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9w
ZXAtMDQxNS8+YF8KLSAgYGBFeGNlcHRpb24uX19zdXBwcmVzc19jb250ZXh0X19gYC4gTm93IGlm
IGEgYGByYWlzZSBleGNlcHRpb24gZnJvbSBOb25lYGAgaXMKLSAgY2F1Z2h0IGJ5IHB5dGVzdCwg
cHl0ZXN0IHdpbGwgbm8gbG9uZ2VyIGNoYWluIHRoZSBjb250ZXh0IGluIHRoZSB0ZXN0IHJlcG9y
dC4KLSAgVGhlIGJlaGF2aW9yIG5vdyBtYXRjaGVzIFB5dGhvbidzIHRyYWNlYmFjayBiZWhhdmlv
ci4gKGAjMjYzMQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yNjMxPmBfKQotCi0tIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IGBgcHl0ZXN0LmZhaWxgYCwgYGBw
eXRlc3Quc2tpcGBgIGFuZCBgYHB5dGVzdC54ZmFpbGBgCi0gIG5vdyBzdWJjbGFzcyBCYXNlRXhj
ZXB0aW9uLCBtYWtpbmcgdGhlbSBoYXJkZXIgdG8gYmUgY2F1Z2h0IHVuaW50ZW50aW9uYWxseQot
ICBieSBub3JtYWwgY29kZS4gKGAjNTgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzU4MD5gXykKLQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIFNldCBg
YHN0ZGluYGAgdG8gYSBjbG9zZWQgYGBQSVBFYGAgaW4gYGBweXRlc3Rlci5weS5UZXN0ZGlyLnBv
cGVuKClgYCBmb3IKLSAgYXZvaWQgdW53YW50ZWQgaW50ZXJhY3RpdmUgYGBwZGJgYCAoYCMyMDIz
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYvcHl0ZXN0L2lzc3Vlcy8yMDIzPmBf
KQotCi0tIEFkZCBtaXNzaW5nIGBgZW5jb2RpbmdgYCBhdHRyaWJ1dGUgdG8gYGBzeXMuc3RkKmBg
IHN0cmVhbXMgd2hlbiB1c2luZwotICBgYGNhcHN5c2BgIGNhcHR1cmUgbW9kZS4gKGAjMjM3NSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjM3NT5gXykK
LQotLSBGaXggdGVybWluYWwgY29sb3IgY2hhbmdpbmcgdG8gYmxhY2sgb24gV2luZG93cyBpZiBg
YGNvbG9yYW1hYGAgaXMgaW1wb3J0ZWQKLSAgaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZS4gKGAj
MjUxMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjUx
MD5gXykKLQotLSBGaXggbGluZSBudW1iZXIgd2hlbiByZXBvcnRpbmcgc3VtbWFyeSBvZiBza2lw
cGVkIHRlc3RzLiAoYCMyNTQ4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI1NDg+YF8pCi0KLS0gY2FwdHVyZTogZW5zdXJlIHRoYXQgRW5jb2RlZEZpbGUu
bmFtZSBpcyBhIHN0cmluZy4gKGAjMjU1NQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNTU1PmBfKQotCi0tIFRoZSBvcHRpb25zIGBgLS1maXh0dXJlc2Bg
IGFuZCBgYC0tZml4dHVyZXMtcGVyLXRlc3RgYCB3aWxsIG5vdyBrZWVwCi0gIGluZGVudGF0aW9u
IHdpdGhpbiBkb2NzdHJpbmdzLiAoYCMyNTc0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQot
ICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNTc0PmBfKQotCi0tIGRvY3Rlc3RzIGxpbmUgbnVtYmVycyBh
cmUgbm93IHJlcG9ydGVkIGNvcnJlY3RseSwgZml4aW5nIGBweXRlc3Qtc3VnYXIjMTIyCi0gIDxo
dHRwczovL2dpdGh1Yi5jb20vRnJvemVuYmFsbC9weXRlc3Qtc3VnYXIvaXNzdWVzLzEyMj5gXy4g
KGAjMjYxMAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
NjEwPmBfKQotCi0tIEZpeCBub24tZGV0ZXJtaW5pc20gaW4gb3JkZXIgb2YgZml4dHVyZSBjb2xs
ZWN0aW9uLiBBZGRzIG5ldyBkZXBlbmRlbmN5Ci0gIChvcmRlcmVkZGljdCkgZm9yIFB5dGhvbiAy
LjYuIChgIzkyMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1
ZXMvOTIwPmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotLSBDbGFyaWZ5IGBgcHl0ZXN0X2NvbmZpZ3VyZWBgIGhvb2sgY2FsbCBvcmRlci4g
KGAjMjUzOQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
NTM5PmBfKQotCi0tIEV4dGVuZCBkb2N1bWVudGF0aW9uIGZvciB0ZXN0aW5nIHBsdWdpbiBjb2Rl
IHdpdGggdGhlIGBgcHl0ZXN0ZXJgYCBwbHVnaW4uCi0gIChgIzk3MSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85NzE+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5h
bCBDaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBVcGRhdGUgaGVscCBtZXNz
YWdlIGZvciBgYC0tc3RyaWN0YGAgdG8gbWFrZSBpdCBjbGVhciBpdCBvbmx5IGRlYWxzIHdpdGgK
LSAgdW5yZWdpc3RlcmVkIG1hcmtlcnMsIG5vdCB3YXJuaW5ncy4gKGAjMjQ0NCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjQ0ND5gXykKLQotLSBJbnRl
cm5hbCBjb2RlIG1vdmU6IG1vdmUgY29kZSBmb3IgcHl0ZXN0LmFwcHJveC9weXRlc3QucmFpc2Vz
IHRvIG93biBmaWxlcyBpbgotICBvcmRlciB0byBjdXQgZG93biB0aGUgc2l6ZSBvZiBweXRob24u
cHkgKGAjMjQ4OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1
ZXMvMjQ4OT5gXykKLQotLSBSZW5hbWVkIHRoZSB1dGlsaXR5IGZ1bmN0aW9uIGBgX3B5dGVzdC5j
b21wYXQuX2VzY2FwZV9zdHJpbmdzYGAgdG8KLSAgYGBfYXNjaWlfZXNjYXBlZGBgIHRvIGJldHRl
ciBjb21tdW5pY2F0ZSB0aGUgZnVuY3Rpb24ncyBwdXJwb3NlLiAoYCMyNTMzCi0gIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1MzM+YF8pCi0KLS0gSW1wcm92
ZSBlcnJvciBtZXNzYWdlIGZvciBDb2xsZWN0RXJyb3Igd2l0aCBza2lwL3NraXBpZi4gKGAjMjU0
NgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTQ2PmBf
KQotCi0tIEVtaXQgd2FybmluZyBhYm91dCBgYHlpZWxkYGAgdGVzdHMgYmVpbmcgZGVwcmVjYXRl
ZCBvbmx5IG9uY2UgcGVyIGdlbmVyYXRvci4KLSAgKGAjMjU2MiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTYyPmBfKQotCi0tIEVuc3VyZSBmaW5hbCBjb2xs
ZWN0ZWQgbGluZSBkb2Vzbid0IGluY2x1ZGUgYXJ0aWZhY3RzIG9mIHByZXZpb3VzIHdyaXRlLgot
ICAoYCMyNTcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1
NzE+YF8pCi0KLS0gRml4ZWQgYWxsIGZsYWtlOCBlcnJvcnMgYW5kIHdhcm5pbmdzLiAoYCMyNTgx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNTgxPmBf
KQotCi0tIEFkZGVkIGBgZml4LWxpbnRgYCB0b3ggZW52aXJvbm1lbnQgdG8gcnVuIGF1dG9tYXRp
YyBwZXA4IGZpeGVzIG9uIHRoZSBjb2RlLgotICAoYCMyNTgyIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1ODI+YF8pCi0KLS0gVHVybiB3YXJuaW5ncyBpbnRv
IGVycm9ycyBpbiBweXRlc3QncyBvd24gdGVzdCBzdWl0ZSBpbiBvcmRlciB0byBjYXRjaAotICBy
ZWdyZXNzaW9ucyBkdWUgdG8gZGVwcmVjYXRpb25zIG1vcmUgcHJvbXB0bHkuIChgIzI1ODgKLSAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU4OD5gXykKLQot
LSBTaG93IG11bHRpcGxlIGlzc3VlIGxpbmtzIGluIENIQU5HRUxPRyBlbnRyaWVzLiAoYCMyNjIw
Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MjA+YF8p
Ci0KLQotUHl0ZXN0IDMuMS4zICgyMDE3LTA3LTAzKQotPT09PT09PT09PT09PT09PT09PT09PT09
PQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIEZpeCBkZWNvZGUgZXJyb3IgaW4gUHl0aG9u
IDIgZm9yIGRvY3Rlc3RzIGluIGRvY3N0cmluZ3MuIChgIzI0MzQKLSAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQzND5gXykKLQotLSBFeGNlcHRpb25zIHJh
aXNlZCBkdXJpbmcgdGVhcmRvd24gYnkgZmluYWxpemVycyBhcmUgbm93IHN1cHByZXNzZWQgdW50
aWwgYWxsCi0gIGZpbmFsaXplcnMgYXJlIGNhbGxlZCwgd2l0aCB0aGUgaW5pdGlhbCBleGNlcHRp
b24gcmVyYWlzZWQuIChgIzI0NDAKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjQ0MD5gXykKLQotLSBGaXggaW5jb3JyZWN0ICJjb2xsZWN0ZWQgaXRlbXMi
IHJlcG9ydCB3aGVuIHNwZWNpZnlpbmcgdGVzdHMgb24gdGhlIGNvbW1hbmQtCi0gIGxpbmUuIChg
IzI0NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ2ND5g
XykKLQotLSBgYGRlcHJlY2F0ZWRfY2FsbGBgIGluIGNvbnRleHQtbWFuYWdlciBmb3JtIG5vdyBj
YXB0dXJlcyBkZXByZWNhdGlvbiB3YXJuaW5ncwotICBldmVuIGlmIHRoZSBzYW1lIHdhcm5pbmcg
aGFzIGFscmVhZHkgYmVlbiByYWlzZWQuIEFsc28sIGBgZGVwcmVjYXRlZF9jYWxsYGAKLSAgd2ls
bCBhbHdheXMgcHJvZHVjZSB0aGUgc2FtZSBlcnJvciBtZXNzYWdlIChwcmV2aW91c2x5IGl0IHdv
dWxkIHByb2R1Y2UKLSAgZGlmZmVyZW50IG1lc3NhZ2VzIGluIGNvbnRleHQtbWFuYWdlciB2cy4g
ZnVuY3Rpb24tY2FsbCBtb2RlKS4gKGAjMjQ2OQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDY5PmBfKQotCi0tIEZpeCBpc3N1ZSB3aGVyZSBwYXRocyBj
b2xsZWN0ZWQgYnkgcHl0ZXN0IGNvdWxkIGhhdmUgdHJpcGxlIGxlYWRpbmcgYGAvYGAKLSAgY2hh
cmFjdGVycy4gKGAjMjQ3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yNDc1PmBfKQotCi0tIEZpeCBpbnRlcm5hbCBlcnJvciB3aGVuIHRyeWluZyB0byBkZXRl
Y3QgdGhlIHN0YXJ0IG9mIGEgcmVjdXJzaXZlIHRyYWNlYmFjay4KLSAgKGAjMjQ4NiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDg2PmBfKQotCi0KLUltcHJv
dmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBFeHBsaWNpdGx5
IHN0YXRlIGZvciB3aGljaCBob29rcyB0aGUgY2FsbHMgc3RvcCBhZnRlciB0aGUgZmlyc3Qgbm9u
LU5vbmUKLSAgcmVzdWx0LiAoYCMyNDkzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI0OTM+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBDcmVhdGUgaW52b2tlIHRhc2tzIGZvciB1cGRhdGlu
ZyB0aGUgdmVuZG9yZWQgcGFja2FnZXMuIChgIzI0NzQKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ3ND5gXykKLQotLSBVcGRhdGUgY29weXJpZ2h0IGRh
dGVzIGluIExJQ0VOU0UsIFJFQURNRS5yc3QgYW5kIGluIHRoZSBkb2N1bWVudGF0aW9uLgotICAo
YCMyNDk5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0OTk+
YF8pCi0KLQotUHl0ZXN0IDMuMS4yICgyMDE3LTA2LTA4KQotPT09PT09PT09PT09PT09PT09PT09
PT09PQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIFJlcXVpcmVkIG9wdGlvbnMgYWRkZWQg
dmlhIGBgcHl0ZXN0X2FkZG9wdGlvbmBgIHdpbGwgbm8gbG9uZ2VyIHByZXZlbnQgdXNpbmcKLSAg
LS1oZWxwIHdpdGhvdXQgcGFzc2luZyB0aGVtLiAoIzE5OTkpCi0KLS0gUmVzcGVjdCBgYHB5dGhv
bl9maWxlc2BgIGluIGFzc2VydGlvbiByZXdyaXRpbmcuICgjMjEyMSkKLQotLSBGaXggcmVjdXJz
aW9uIGVycm9yIGRldGVjdGlvbiB3aGVuIGZyYW1lcyBpbiB0aGUgdHJhY2ViYWNrIGNvbnRhaW4g
b2JqZWN0cwotICB0aGF0IGNhbid0IGJlIGNvbXBhcmVkIChsaWtlIGBgbnVtcHlgYCBhcnJheXMp
LiAoIzI0NTkpCi0KLS0gYGBVbmljb2RlV2FybmluZ2BgIGlzIGlzc3VlZCBmcm9tIHRoZSBpbnRl
cm5hbCBweXRlc3Qgd2FybmluZ3MgcGx1Z2luIG9ubHkKLSAgd2hlbiB0aGUgbWVzc2FnZSBjb250
YWlucyBub24tYXNjaWkgdW5pY29kZSAoUHl0aG9uIDIgb25seSkuICgjMjQ2MykKLQotLSBBZGRl
ZCBhIHdvcmthcm91bmQgZm9yIFB5dGhvbiAzLjYgYGBXaW5kb3dzQ29uc29sZUlPYGAgYnJlYWtp
bmcgZHVlIHRvIFB5dGVzdHMncwotICBgYEZEQ2FwdHVyZWBgLiBPdGhlciBjb2RlIHVzaW5nIGNv
bnNvbGUgaGFuZGxlcyBtaWdodCBzdGlsbCBiZSBhZmZlY3RlZCBieSB0aGUKLSAgdmVyeSBzYW1l
IGlzc3VlIGFuZCBtaWdodCByZXF1aXJlIGZ1cnRoZXIgd29ya2Fyb3VuZHMvZml4ZXMsIGkuZS4g
YGBjb2xvcmFtYWBgLgotICAoIzI0NjcpCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEZpeCBpbnRlcm5hbCBBUEkgbGlua3MgdG8gYGBwbHVn
Z3lgYCBvYmplY3RzLiAoIzIzMzEpCi0KLS0gTWFrZSBpdCBjbGVhciB0aGF0IGBgcHl0ZXN0Lnhm
YWlsYGAgc3RvcHMgdGVzdCBleGVjdXRpb24gYXQgdGhlIGNhbGxpbmcgcG9pbnQKLSAgYW5kIGlt
cHJvdmUgb3ZlcmFsbCBmbG93IG9mIHRoZSBgYHNraXBwaW5nYGAgZG9jcy4gKCM4MTApCi0KLQot
UHl0ZXN0IDMuMS4xICgyMDE3LTA1LTMwKQotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1C
dWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIHB5dGVzdCB3YXJuaW5nIGNhcHR1cmUgbm8gbG9uZ2Vy
IG92ZXJyaWRlcyBleGlzdGluZyB3YXJuaW5nIGZpbHRlcnMuIFRoZQotICBwcmV2aW91cyBiZWhh
dmlvdXIgd291bGQgb3ZlcnJpZGUgYWxsIGZpbHRlcnMgYW5kIGNhdXNlZCByZWdyZXNzaW9ucyBp
biB0ZXN0Ci0gIHN1aXRlcyB3aGljaCBjb25maWd1cmUgd2FybmluZyBmaWx0ZXJzIHRvIG1hdGNo
IHRoZWlyIG5lZWRzLiBOb3RlIHRoYXQgYXMgYQotICBzaWRlLWVmZmVjdCBvZiB0aGlzIGlzIHRo
YXQgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBhbmQKLSAgYGBQZW5kaW5nRGVwcmVjYXRpb25XYXJu
aW5nYGAgYXJlIG5vIGxvbmdlciBzaG93biBieSBkZWZhdWx0LiAoIzI0MzApCi0KLS0gRml4IGlz
c3VlIHdpdGggbm9uLWFzY2lpIGNvbnRlbnRzIGluIGRvY3Rlc3QgdGV4dCBmaWxlcy4gKCMyNDM0
KQotCi0tIEZpeCBlbmNvZGluZyBlcnJvcnMgZm9yIHVuaWNvZGUgd2FybmluZ3MgaW4gUHl0aG9u
IDIuICgjMjQzNikKLQotLSBgYHB5dGVzdC5kZXByZWNhdGVkX2NhbGxgYCBub3cgY2FwdHVyZXMg
YGBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYGAgaW4KLSAgY29udGV4dCBtYW5hZ2VyIGZvcm0u
ICgjMjQ0MSkKLQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLS0gQWRkaXRpb24gb2YgdG93bmNyaWVyIGZvciBjaGFuZ2Vsb2cgbWFuYWdlbWVudC4g
KCMyMzkwKQotCi0KLTMuMS4wICgyMDE3LTA1LTIyKQotPT09PT09PT09PT09PT09PT09Ci0KLQot
TmV3IEZlYXR1cmVzCi0tLS0tLS0tLS0tLS0KLQotKiBUaGUgYGBweXRlc3Qtd2FybmluZ3NgYCBw
bHVnaW4gaGFzIGJlZW4gaW50ZWdyYXRlZCBpbnRvIHRoZSBjb3JlIGFuZCBub3cgYGBweXRlc3Rg
YCBhdXRvbWF0aWNhbGx5Ci0gIGNhcHR1cmVzIGFuZCBkaXNwbGF5cyB3YXJuaW5ncyBhdCB0aGUg
ZW5kIG9mIHRoZSB0ZXN0IHNlc3Npb24uCi0KLSAgLi4gd2FybmluZzo6Ci0KLSAgICBUaGlzIGZl
YXR1cmUgbWF5IGRpc3J1cHQgdGVzdCBzdWl0ZXMgd2hpY2ggYXBwbHkgYW5kIHRyZWF0IHdhcm5p
bmdzIHRoZW1zZWx2ZXMsIGFuZCBjYW4gYmUKLSAgICBkaXNhYmxlZCBpbiB5b3VyIGBgcHl0ZXN0
LmluaWBgOgotCi0gICAgLi4gY29kZS1ibG9jazo6IGluaQotCi0gICAgICBbcHl0ZXN0XQotICAg
ICAgYWRkb3B0cyA9IC1wIG5vOndhcm5pbmdzCi0KLSAgICBTZWUgdGhlIGB3YXJuaW5ncyBkb2N1
bWVudGF0aW9uIHBhZ2UgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC93YXJuaW5n
cy5odG1sPmBfIGZvciBtb3JlCi0gICAgaW5mb3JtYXRpb24uCi0KLSAgVGhhbmtzIGBAbmljb2Rk
ZW11c2BfIGZvciB0aGUgUFIuCi0KLSogQWRkZWQgYGBqdW5pdF9zdWl0ZV9uYW1lYGAgaW5pIG9w
dGlvbiB0byBzcGVjaWZ5IHJvb3QgYGA8dGVzdHN1aXRlPmBgIG5hbWUgZm9yIEpVbml0IFhNTCBy
ZXBvcnRzIChgIzUzM2BfKS4KLQotKiBBZGRlZCBhbiBpbmkgb3B0aW9uIGBgZG9jdGVzdF9lbmNv
ZGluZ2BgIHRvIHNwZWNpZnkgd2hpY2ggZW5jb2RpbmcgdG8gdXNlIGZvciBkb2N0ZXN0IGZpbGVz
LgotICBUaGFua3MgYEB3aGVlcmRgXyBmb3IgdGhlIFBSIChgIzIxMDFgXykuCi0KLSogYGBweXRl
c3Qud2FybnNgYCBub3cgY2hlY2tzIGZvciBzdWJjbGFzcyByZWxhdGlvbnNoaXAgcmF0aGVyIHRo
YW4KLSAgY2xhc3MgZXF1YWxpdHkuIFRoYW5rcyBgQGxlc3RldmVgXyBmb3IgdGhlIFBSIChgIzIx
NjZgXykKLQotKiBgYHB5dGVzdC5yYWlzZXNgYCBub3cgYXNzZXJ0cyB0aGF0IHRoZSBlcnJvciBt
ZXNzYWdlIG1hdGNoZXMgYSB0ZXh0IG9yIHJlZ2V4Ci0gIHdpdGggdGhlIGBgbWF0Y2hgYCBrZXl3
b3JkIGFyZ3VtZW50LiBUaGFua3MgYEBLcmllY2hpYF8gZm9yIHRoZSBQUi4KLQotKiBgYHB5dGVz
dC5wYXJhbWBgIGNhbiBiZSB1c2VkIHRvIGRlY2xhcmUgdGVzdCBwYXJhbWV0ZXIgc2V0cyB3aXRo
IG1hcmtzIGFuZCB0ZXN0IGlkcy4KLSAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3Ig
dGhlIFBSLgotCi0KLUNoYW5nZXMKLS0tLS0tLS0KLQotKiByZW1vdmUgYWxsIGludGVybmFsIHVz
ZXMgb2YgcHl0ZXN0X25hbWVzcGFjZSBob29rcywKLSAgdGhpcyBpcyB0byBwcmVwYXJlIHRoZSBy
ZW1vdmFsIG9mIHByZWxvYWRjb25maWcgaW4gcHl0ZXN0IDQuMAotICBUaGFua3MgdG8gYEBSb25u
eVBmYW5uc2NobWlkdGBfIGZvciB0aGUgUFIuCi0KLSogcHl0ZXN0IG5vdyB3YXJucyB3aGVuIGEg
Y2FsbGFibGUgaWRzIHJhaXNlcyBpbiBhIHBhcmFtZXRyaXplZCB0ZXN0LiBUaGFua3MgYEBmb2dv
YF8gZm9yIHRoZSBQUi4KLQotKiBJdCBpcyBub3cgcG9zc2libGUgdG8gc2tpcCB0ZXN0IGNsYXNz
ZXMgZnJvbSBiZWluZyBjb2xsZWN0ZWQgYnkgc2V0dGluZyBhCi0gIGBgX190ZXN0X19gYCBhdHRy
aWJ1dGUgdG8gYGBGYWxzZWBgIGluIHRoZSBjbGFzcyBib2R5IChgIzIwMDdgXykuIFRoYW5rcwot
ICB0byBgQHN5cmVgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBsd21gXyBmb3IgdGhlIFBSLgotCi0q
IENoYW5nZSBqdW5pdHhtbC5weSB0byBwcm9kdWNlIHJlcG9ydHMgdGhhdCBjb21wbHkgd2l0aCBK
dW5pdHhtbCBzY2hlbWEuCi0gIElmIHRoZSBzYW1lIHRlc3QgZmFpbHMgd2l0aCBmYWlsdXJlIGlu
IGNhbGwgYW5kIHRoZW4gZXJyb3JzIGluIHRlYXJkb3duCi0gIHdlIHNwbGl0IHRlc3RjYXNlIGVs
ZW1lbnQgaW50byB0d28sIG9uZSBjb250YWluaW5nIHRoZSBlcnJvciBhbmQgdGhlIG90aGVyCi0g
IHRoZSBmYWlsdXJlLiAoYCMyMjI4YF8pIFRoYW5rcyB0byBgQGtrb3VraW91YF8gZm9yIHRoZSBQ
Ui4KLQotKiBUZXN0Y2FzZSByZXBvcnRzIHdpdGggYSBgYHVybGBgIGF0dHJpYnV0ZSB3aWxsIG5v
dyBwcm9wZXJseSB3cml0ZSB0aGlzIHRvIGp1bml0eG1sLgotICBUaGFua3MgYEBmdXNoaWBfIGZv
ciB0aGUgUFIgKGAjMTg3NGBfKS4KLQotKiBSZW1vdmUgY29tbW9uIGl0ZW1zIGZyb20gZGljdCBj
b21wYXJpc29uIG91dHB1dCB3aGVuIHZlcmJvc2l0eT0xLiBBbHNvIHVwZGF0ZQotICB0aGUgdHJ1
bmNhdGlvbiBtZXNzYWdlIHRvIG1ha2UgaXQgY2xlYXJlciB0aGF0IHB5dGVzdCB0cnVuY2F0ZXMg
YWxsCi0gIGFzc2VydGlvbiBtZXNzYWdlcyBpZiB2ZXJib3NpdHkgPCAyIChgIzE1MTJgXykuCi0g
IFRoYW5rcyBgQG1hdHRkdWNrYF8gZm9yIHRoZSBQUgotCi0qIGBgLS1wZGJjbHNgYCBubyBsb25n
ZXIgaW1wbGllcyBgYC0tcGRiYGAuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlCi0gIGBg
YWRkb3B0cz0tLXBkYmNscz1tb2R1bGUuU29tZUNsYXNzYGAgb24gYGBweXRlc3QuaW5pYGAuIFRo
YW5rcyBgQGRhdmlkc3pvdHRlbmBfIGZvcgotICB0aGUgUFIgKGAjMTk1MmBfKS4KLQotKiBmaXgg
YCMyMDEzYF86IHR1cm4gUmVjb3JkZWRXYXJuaW5nIGludG8gYGBuYW1lZHR1cGxlYGAsCi0gIHRv
IGdpdmUgaXQgYSBjb21wcmVoZW5zaWJsZSByZXByIHdoaWxlIHByZXZlbnRpbmcgdW53YXJyYW50
ZWQgbW9kaWZpY2F0aW9uLgotCi0qIGZpeCBgIzIyMDhgXzogZW5zdXJlIGFuIGl0ZXJhdGlvbiBs
aW1pdCBmb3IgX3B5dGVzdC5jb21wYXQuZ2V0X3JlYWxfZnVuYy4KLSAgVGhhbmtzIGBAUm9ubnlQ
ZmFubnNjaG1pZHRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgUFIuCi0KLSogSG9va3MgYXJlIG5vdyB2
ZXJpZmllZCBhZnRlciBjb2xsZWN0aW9uIGlzIGNvbXBsZXRlLCByYXRoZXIgdGhhbiByaWdodCBh
ZnRlciBsb2FkaW5nIGluc3RhbGxlZCBwbHVnaW5zLiBUaGlzCi0gIG1ha2VzIGl0IGVhc3kgdG8g
d3JpdGUgaG9va3MgZm9yIHBsdWdpbnMgd2hpY2ggd2lsbCBiZSBsb2FkZWQgZHVyaW5nIGNvbGxl
Y3Rpb24sIGZvciBleGFtcGxlIHVzaW5nIHRoZQotICBgYHB5dGVzdF9wbHVnaW5zYGAgc3BlY2lh
bCB2YXJpYWJsZSAoYCMxODIxYF8pLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KLQotKiBNb2RpZnkgYGBweXRlc3RfbWFrZV9wYXJhbWV0cml6ZV9pZCgpYGAgaG9vayB0byBh
Y2NlcHQgYGBhcmduYW1lYGAgYXMgYW4KLSAgYWRkaXRpb25hbCBwYXJhbWV0ZXIuCi0gIFRoYW5r
cyBgQHVuc2lnbmVkaW50YF8gZm9yIHRoZSBQUi4KLQotKiBBZGQgYGB2ZW52YGAgdG8gdGhlIGRl
ZmF1bHQgYGBub3JlY3Vyc2VkaXJzYGAgc2V0dGluZy4KLSAgVGhhbmtzIGBAVGhlLUNvbXBpbGVy
YF8gZm9yIHRoZSBQUi4KLQotKiBgYFBsdWdpbk1hbmFnZXIuaW1wb3J0X3BsdWdpbmBgIG5vdyBh
Y2NlcHRzIHVuaWNvZGUgcGx1Z2luIG5hbWVzIGluIFB5dGhvbiAyLgotICBUaGFua3MgYEByZXV0
c2hhcmFiYW5pYF8gZm9yIHRoZSBQUi4KLQotKiBmaXggYCMyMzA4YF86IFdoZW4gdXNpbmcgYm90
aCBgYC0tbGZgYCBhbmQgYGAtLWZmYGAsIG9ubHkgdGhlIGxhc3QgZmFpbGVkIHRlc3RzIGFyZSBy
dW4uCi0gIFRoYW5rcyBgQG9qaWlgXyBmb3IgdGhlIFBSLgotCi0qIFJlcGxhY2UgbWlub3IvcGF0
Y2ggbGV2ZWwgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBkb2N1bWVudGF0aW9uIHdpdGggcGxhY2Vo
b2xkZXJzLgotICBUaGlzIHNpZ25pZmljYW50bHkgcmVkdWNlcyBjaGFuZ2Utbm9pc2UgYXMgZGlm
ZmVyZW50IGNvbnRyaWJ1dG9ycyByZWduZXJhdGUKLSAgdGhlIGRvY3VtZW50YXRpb24gb24gZGlm
ZmVyZW50IHBsYXRmb3Jtcy4KLSAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3IgdGhl
IFBSLgotCi0qIGZpeCBgIzIzOTFgXzogY29uc2lkZXIgcHl0ZXN0X3BsdWdpbnMgb24gYWxsIHBs
dWdpbiBtb2R1bGVzCi0gIFRoYW5rcyBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUi4K
LQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0qIEZpeCBgYEF0dHJpYnV0ZUVycm9yYGAgb24g
YGBzeXMuc3Rkb3V0LmJ1ZmZlcmBgIC8gYGBzeXMuc3RkZXJyLmJ1ZmZlcmBgCi0gIHdoaWxlIHVz
aW5nIGBgY2Fwc3lzYGAgZml4dHVyZSBpbiBweXRob24gMy4gKGAjMTQwN2BfKS4KLSAgVGhhbmtz
IHRvIGBAYXNvdHRpbGVgXy4KLQotKiBDaGFuZ2UgY2FwdHVyZS5weSdzIGBgRG9udFJlYWRGcm9t
SW5wdXRgYCBjbGFzcyB0byB0aHJvdyBgYGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uYGAgZXJyb3Jz
IHJhdGhlcgotICB0aGFuIFZhbHVlRXJyb3JzIGluIHRoZSBgYGZpbGVub2BgIG1ldGhvZCAoYCMy
Mjc2YF8pLgotICBUaGFua3MgYEBtZXRhc3luYF8gYW5kIGBAdmxhZC1kcmFnb3NgXyBmb3IgdGhl
IFBSLgotCi0qIEZpeCBleGNlcHRpb24gZm9ybWF0dGluZyB3aGlsZSBpbXBvcnRpbmcgbW9kdWxl
cyB3aGVuIHRoZSBleGNlcHRpb24gbWVzc2FnZQotICBjb250YWlucyBub24tYXNjaWkgY2hhcmFj
dGVycyAoYCMyMzM2YF8pLgotICBUaGFua3MgYEBmYWJpb3pgXyBmb3IgdGhlIHJlcG9ydCBhbmQg
YEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBBZGRlZCBkb2N1bWVudGF0aW9uIHJlbGF0
ZWQgdG8gaXNzdWUgKGAjMTkzN2BfKQotICBUaGFua3MgYEBza3lsYXJqaGRvd25lc2BfIGZvciB0
aGUgUFIuCi0KLSogQWxsb3cgY29sbGVjdGluZyBmaWxlcyB3aXRoIGFueSBmaWxlIGV4dGVuc2lv
biBhcyBQeXRob24gbW9kdWxlcyAoYCMyMzY5YF8pLgotICBUaGFua3MgYEBLb2Rpb2xvZ2lzdGBf
IGZvciB0aGUgUFIuCi0KLSogU2hvdyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlIHdoZW4gY29s
bGVjdCAicGFyYW1ldHJpemUiIGZ1bmMgd2l0aCB3cm9uZyBhcmdzIChgIzIzODNgXykuCi0gIFRo
YW5rcyBgQFRoZS1Db21waWxlcmBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQHJvYmluMDM3MWBfIGZv
ciB0aGUgUFIuCi0KLQotLi4gX0BkYXZpZHN6b3R0ZW46IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZp
ZHN6b3R0ZW4KLS4uIF9AZmFiaW96OiBodHRwczovL2dpdGh1Yi5jb20vZmFiaW96Ci0uLiBfQGZv
Z286IGh0dHBzOi8vZ2l0aHViLmNvbS9mb2dvCi0uLiBfQGZ1c2hpOiBodHRwczovL2dpdGh1Yi5j
b20vZnVzaGkKLS4uIF9AS29kaW9sb2dpc3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9Lb2Rpb2xvZ2lz
dAotLi4gX0BLcmllY2hpOiBodHRwczovL2dpdGh1Yi5jb20vS3JpZWNoaQotLi4gX0BtYW5kZWVw
OiBodHRwczovL2dpdGh1Yi5jb20vbWFuZGVlcAotLi4gX0BtYXR0ZHVjazogaHR0cHM6Ly9naXRo
dWIuY29tL21hdHRkdWNrCi0uLiBfQG1ldGFzeW46IGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhc3lu
Ci0uLiBfQE1pY2hhbFRIRURVREU6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNoYWxUSEVEVURFCi0u
LiBfQG9qaWk6IGh0dHBzOi8vZ2l0aHViLmNvbS9vamlpCi0uLiBfQHJldXRzaGFyYWJhbmk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9yZXV0c2hhcmFiYW5pCi0uLiBfQHJvYmluMDM3MTogaHR0cHM6Ly9n
aXRodWIuY29tL3JvYmluMDM3MQotLi4gX0Bza3lsYXJqaGRvd25lczogaHR0cHM6Ly9naXRodWIu
Y29tL3NreWxhcmpoZG93bmVzCi0uLiBfQHVuc2lnbmVkaW50OiBodHRwczovL2dpdGh1Yi5jb20v
dW5zaWduZWRpbnQKLS4uIF9Ad2hlZXJkOiBodHRwczovL2dpdGh1Yi5jb20vd2hlZXJkCi0KLQot
Li4gXyMxNDA3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0
MDcKLS4uIF8jMTUxMjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xNTEyCi0uLiBfIzE4MjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMTgyMQotLi4gXyMxODc0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvcHVsbC8xODc0Ci0uLiBfIzE5Mzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMTkzNwotLi4gXyMxOTUyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvcHVsbC8xOTUyCi0uLiBfIzIwMDc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjAwNwotLi4gXyMyMDEzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwMTMKLS4uIF8jMjEwMTogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMjEwMQotLi4gXyMyMTY2OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8yMTY2Ci0uLiBfIzIyMDg6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIwOAotLi4gXyMyMjI4OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyMjgKLS4uIF8jMjI3NjogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjc2Ci0uLiBfIzIzMDg6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjMwOAotLi4gXyMyMzM2
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIzMzYKLS4uIF8j
MjM2OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMzY5Ci0u
LiBfIzIzODM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjM4
MwotLi4gXyMyMzkxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzIzOTEKLS4uIF8jNTMzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzUzMwotCi0KLQotMy4wLjcgKDIwMTctMDMtMTQpCi09PT09PT09PT09PT09PT09PT0KLQot
Ci0qIEZpeCBpc3N1ZSBpbiBhc3NlcnRpb24gcmV3cml0aW5nIGJyZWFraW5nIGR1ZSB0byBtb2R1
bGVzIHNpbGVudGx5IGRpc2NhcmRpbmcKLSAgb3RoZXIgbW9kdWxlcyB3aGVuIGltcG9ydGluZyBm
YWlscwotICBOb3RhYmx5LCBpbXBvcnRpbmcgdGhlIGBgYW55ZGJtYGAgbW9kdWxlIGlzIGZpeGVk
LiAoYCMyMjQ4YF8pLgotICBUaGFua3MgYEBwZmhheWVzYF8gZm9yIHRoZSBQUi4KLQotKiBqdW5p
dHhtbDogRml4IHByb2JsZW1hdGljIGNhc2Ugd2hlcmUgc3lzdGVtLW91dCB0YWcgb2NjdXJyZWQg
dHdpY2UgcGVyIHRlc3RjYXNlCi0gIGVsZW1lbnQgaW4gdGhlIFhNTCByZXBvcnQuIFRoYW5rcyBg
QGtrb3VraW91YF8gZm9yIHRoZSBQUi4KLQotKiBGaXggcmVncmVzc2lvbiwgcHl0ZXN0IG5vdyBz
a2lwcyB1bml0dGVzdCBjb3JyZWN0bHkgaWYgcnVuIHdpdGggYGAtLXBkYmBgCi0gIChgIzIxMzdg
XykuIFRoYW5rcyB0byBgQGdzdGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG1ieXRgXyBmb3IgdGhl
IFBSLgotCi0qIElnbm9yZSBleGNlcHRpb25zIHJhaXNlZCBmcm9tIGRlc2NyaXB0b3JzIChlLmcu
IHByb3BlcnRpZXMpIGR1cmluZyBQeXRob24gdGVzdCBjb2xsZWN0aW9uIChgIzIyMzRgXykuCi0g
IFRoYW5rcyB0byBgQGJsdWV0ZWNoYF8uCi0KLSogYGAtLW92ZXJyaWRlLWluaWBgIG5vdyBjb3Jy
ZWN0bHkgb3ZlcnJpZGVzIHNvbWUgZnVuZGFtZW50YWwgb3B0aW9ucyBsaWtlIGBgcHl0aG9uX2Zp
bGVzYGAgKGAjMjIzOGBfKS4KLSAgVGhhbmtzIGBAc2lyZXhgXyBmb3IgdGhlIHJlcG9ydCBhbmQg
YEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBSZXBsYWNlIGBgcmFpc2UgU3RvcEl0ZXJh
dGlvbmBgIHVzYWdlcyBpbiB0aGUgY29kZSBieSBzaW1wbGUgYGByZXR1cm5zYGAgdG8gZmluaXNo
IGdlbmVyYXRvcnMsIGluIGFjY29yZGFuY2UgdG8gYFBFUC00NzlgXyAoYCMyMTYwYF8pLgotICBU
aGFua3MgYEB0Z29vZGxldGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgotCi0qIEZpeCBpbnRlcm5hbCBlcnJvcnMgd2hlbiBhbiB1bnByaW50YWJsZSBgYEFz
c2VydGlvbkVycm9yYGAgaXMgcmFpc2VkIGluc2lkZSBhIHRlc3QuCi0gIFRoYW5rcyBgQG9tZXJo
YWRhcmlgXyBmb3IgdGhlIFBSLgotCi0qIFNraXBwaW5nIHBsdWdpbiBub3cgYWxzbyB3b3JrcyB3
aXRoIHRlc3QgaXRlbXMgZ2VuZXJhdGVkIGJ5IGN1c3RvbSBjb2xsZWN0b3JzIChgIzIyMzFgXyku
Ci0gIFRoYW5rcyB0byBgQHZpZGFydGZgXy4KLQotKiBGaXggdHJhaWxpbmcgd2hpdGVzcGFjZSBp
biBjb25zb2xlIG91dHB1dCBpZiBubyAuaW5pIGZpbGUgcHJlc2VudGVkIChgIzIyODFgXykuIFRo
YW5rcyBgQGZiam9ybmBfIGZvciB0aGUgUFIuCi0KLSogQ29uZGl0aW9ubGVzcyBgYHhmYWlsYGAg
bWFya2VycyBubyBsb25nZXIgcmVseSBvbiB0aGUgdW5kZXJseWluZyB0ZXN0IGl0ZW0KLSAgYmVp
bmcgYW4gaW5zdGFuY2Ugb2YgYGBQeW9iak1peGluYGAsIGFuZCBjYW4gdGhlcmVmb3JlIGFwcGx5
IHRvIHRlc3RzIG5vdAotICBjb2xsZWN0ZWQgYnkgdGhlIGJ1aWx0LWluIHB5dGhvbiB0ZXN0IGNv
bGxlY3Rvci4gVGhhbmtzIGBAYmFybmV5Z2FsZWBfIGZvciB0aGUKLSAgUFIuCi0KLQotLi4gX0Bw
ZmhheWVzOiBodHRwczovL2dpdGh1Yi5jb20vcGZoYXllcwotLi4gX0BibHVldGVjaDogaHR0cHM6
Ly9naXRodWIuY29tL2JsdWV0ZWNoCi0uLiBfQGdzdDogaHR0cHM6Ly9naXRodWIuY29tL2dzdAot
Li4gX0BzaXJleDogaHR0cHM6Ly9naXRodWIuY29tL3NpcmV4Ci0uLiBfQHZpZGFydGY6IGh0dHBz
Oi8vZ2l0aHViLmNvbS92aWRhcnRmCi0uLiBfQGtrb3VraW91OiBodHRwczovL2dpdGh1Yi5jb20v
S0tvdWtpb3UKLS4uIF9Ab21lcmhhZGFyaTogaHR0cHM6Ly9naXRodWIuY29tL29tZXJoYWRhcmkK
LS4uIF9AZmJqb3JuOiBodHRwczovL2dpdGh1Yi5jb20vZmJqb3JuCi0KLS4uIF8jMjI0ODogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjQ4Ci0uLiBfIzIxMzc6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjEzNwotLi4gXyMy
MTYwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxNjAKLS4u
IF8jMjIzMTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjMx
Ci0uLiBfIzIyMzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjIzNAotLi4gXyMyMjM4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzIyMzgKLS4uIF8jMjI4MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yMjgxCi0KLS4uIF9QRVAtNDc5OiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9w
ZXBzL3BlcC0wNDc5LwotCi0KLTMuMC42ICgyMDE3LTAxLTIyKQotPT09PT09PT09PT09PT09PT09
Ci0KLSogcHl0ZXN0IG5vIGxvbmdlciBnZW5lcmF0ZXMgYGBQZW5kaW5nRGVwcmVjYXRpb25XYXJu
aW5nYGAgZnJvbSBpdHMgb3duIG9wZXJhdGlvbnMsIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGJ5IG1p
c3Rha2UgaW4gdmVyc2lvbiBgYDMuMC41YGAgKGAjMjExOGBfKS4KLSAgVGhhbmtzIHRvIGBAbmlj
b2RkZW11c2BfIGZvciB0aGUgcmVwb3J0IGFuZCBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRo
ZSBQUi4KLQotCi0qIHB5dGVzdCBubyBsb25nZXIgcmVjb2duaXplcyBjb3JvdXRpbmUgZnVuY3Rp
b25zIGFzIHlpZWxkIHRlc3RzIChgIzIxMjlgXykuCi0gIFRoYW5rcyB0byBgQG1hbGlub2ZmYF8g
Zm9yIHRoZSBQUi4KLQotKiBQbHVnaW5zIGxvYWRlZCBieSB0aGUgYGBQWVRFU1RfUExVR0lOU2Bg
IGVudmlyb25tZW50IHZhcmlhYmxlIGFyZSBub3cgYXV0b21hdGljYWxseQotICBjb25zaWRlcmVk
IGZvciBhc3NlcnRpb24gcmV3cml0aW5nIChgIzIxODVgXykuCi0gIFRoYW5rcyBgQG5pY29kZGVt
dXNgXyBmb3IgdGhlIFBSLgotCi0qIEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHB5dGVzdC53
YXJucyBmYWlscyAoYCMyMTUwYF8pLiBUaGUgdHlwZShzKSBvZiB0aGUKLSAgZXhwZWN0ZWQgd2Fy
bmluZ3MgYW5kIHRoZSBsaXN0IG9mIGNhdWdodCB3YXJuaW5ncyBpcyBhZGRlZCB0byB0aGUKLSAg
ZXJyb3IgbWVzc2FnZS4gVGhhbmtzIGBAbGVzdGV2ZWBfIGZvciB0aGUgUFIuCi0KLSogRml4IGBg
cHl0ZXN0ZXJgYCBpbnRlcm5hbCBwbHVnaW4gdG8gd29yayBjb3JyZWN0bHkgd2l0aCBsYXRlc3Qg
dmVyc2lvbnMgb2YKLSAgYGB6b3BlLmludGVyZmFjZWBgIChgIzE5ODlgXykuIFRoYW5rcyBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEFzc2VydCBzdGF0ZW1lbnRzIG9mIHRoZSBgYHB5
dGVzdGVyYGAgcGx1Z2luIGFnYWluIGJlbmVmaXQgZnJvbSBhc3NlcnRpb24gcmV3cml0aW5nIChg
IzE5MjBgXykuCi0gIFRoYW5rcyBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSByZXBvcnQg
YW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogU3BlY2lmeWluZyB0ZXN0cyB3aXRo
IGNvbG9ucyBsaWtlIGBgdGVzdF9mb28ucHk6OnRlc3RfYmFyYGAgZm9yIHRlc3RzIGluCi0gIHN1
YmRpcmVjdG9yaWVzIHdpdGggaW5pIGNvbmZpZ3VyYXRpb24gZmlsZXMgbm93IHVzZXMgdGhlIGNv
cnJlY3QgaW5pIGZpbGUKLSAgKGAjMjE0OGBfKS4gIFRoYW5rcyBgQHBlbG1lYF8uCi0KLSogRmFp
bCBgYHRlc3RkaXIucnVucHl0ZXN0KCkuYXNzZXJ0X291dGNvbWVzKClgYCBleHBsaWNpdGx5IGlm
IHRoZSBweXRlc3QKLSAgdGVybWluYWwgb3V0cHV0IGl0IHJlbGllcyBvbiBpcyBtaXNzaW5nLiBU
aGFua3MgdG8gYEBlbGktYmBfIGZvciB0aGUgUFIuCi0KLQotLi4gX0BiYXJuZXlnYWxlOiBodHRw
czovL2dpdGh1Yi5jb20vYmFybmV5Z2FsZQotLi4gX0BsZXN0ZXZlOiBodHRwczovL2dpdGh1Yi5j
b20vbGVzdGV2ZQotLi4gX0BtYWxpbm9mZjogaHR0cHM6Ly9naXRodWIuY29tL21hbGlub2ZmCi0u
LiBfQHBlbG1lOiBodHRwczovL2dpdGh1Yi5jb20vcGVsbWUKLS4uIF9AZWxpLWI6IGh0dHBzOi8v
Z2l0aHViLmNvbS9lbGktYgotCi0uLiBfIzIxMTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjExOAotCi0uLiBfIzE5ODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk4OQotLi4gXyMxOTIwOiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5MjAKLS4uIF8jMjEyOTogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTI5Ci0uLiBfIzIxNDg6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjE0OAotLi4gXyMyMTUwOiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxNTAKLS4uIF8jMjE4NTog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTg1Ci0KLQotMy4w
LjUgKDIwMTYtMTItMDUpCi09PT09PT09PT09PT09PT09PT0KLQotKiBBZGQgd2FybmluZyB3aGVu
IG5vdCBwYXNzaW5nIGBgb3B0aW9uPXZhbHVlYGAgY29ycmVjdGx5IHRvIGBgLW8vLS1vdmVycmlk
ZS1pbmlgYCAoYCMyMTA1YF8pLgotICBBbHNvIGltcHJvdmVkIHRoZSBoZWxwIGRvY3VtZW50YXRp
b24uIFRoYW5rcyB0byBgQG1idWthdG92YF8gZm9yIHRoZSByZXBvcnQgYW5kCi0gIGBAbHdtYF8g
Zm9yIHRoZSBQUi4KLQotKiBOb3cgYGAtLWNvbmZjdXRkaXJgYCBhbmQgYGAtLWp1bml0LXhtbGBg
IGFyZSBwcm9wZXJseSB2YWxpZGF0ZWQgaWYgdGhleSBhcmUgZGlyZWN0b3JpZXMKLSAgYW5kIGZp
bGVuYW1lcywgcmVzcGVjdGl2ZWx5IChgIzIwODlgXyBhbmQgYCMyMDc4YF8pLiBUaGFua3MgdG8g
YEBsd21gXyBmb3IgdGhlIFBSLgotCi0qIEFkZCBoaW50IHRvIGVycm9yIG1lc3NhZ2UgaGludGlu
ZyBwb3NzaWJsZSBtaXNzaW5nIGBgX19pbml0X18ucHlgYCAoYCM0NzhgXykuIFRoYW5rcyBgQER1
bmNhbkJldHRzYF8uCi0KLSogTW9yZSBhY2N1cmF0ZWx5IGRlc2NyaWJlIHdoZW4gZml4dHVyZSBm
aW5hbGl6YXRpb24gb2NjdXJzIGluIGRvY3VtZW50YXRpb24gKGAjNjg3YF8pLiBUaGFua3MgYEBE
dW5jYW5CZXR0c2BfLgotCi0qIFByb3ZpZGUgYGA6cmVmOmBgIHRhcmdldHMgZm9yIGBgcmVjd2Fy
bi5yc3RgYCBzbyB3ZSBjYW4gdXNlIGludGVyc3BoaW54IHJlZmVyZW5jaW5nLgotICBUaGFua3Mg
dG8gYEBkdXB1eWBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQGx3bWBfIGZvciB0aGUgUFIuCi0KLSog
SW4gUHl0aG9uIDIsIHVzZSBhIHNpbXBsZSBgYCstYGAgQVNDSUkgc3RyaW5nIGluIHRoZSBzdHJp
bmcgcmVwcmVzZW50YXRpb24gb2YgYGBweXRlc3QuYXBwcm94YGAgKGZvciBleGFtcGxlIGBgIjQg
Ky0gNC4wZS0wNiJgYCkKLSAgYmVjYXVzZSBpdCBpcyBicml0dGxlIHRvIGhhbmRsZSB0aGF0IGlu
IGRpZmZlcmVudCBjb250ZXh0cyBhbmQgcmVwcmVzZW50YXRpb25zIGludGVybmFsbHkgaW4gcHl0
ZXN0Ci0gIHdoaWNoIGNhbiByZXN1bHQgaW4gYnVncyBzdWNoIGFzIGAjMjExMWBfLiBJbiBQeXRo
b24gMywgdGhlIHJlcHJlc2VudGF0aW9uIHN0aWxsIHVzZXMgYGDCsWBgIChmb3IgZXhhbXBsZSBg
YDQgwrEgNC4wZS0wNmBgKS4KLSAgVGhhbmtzIGBAa2Vycmljay1seWZ0YF8gZm9yIHRoZSByZXBv
cnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogVXNpbmcgYGBpdGVtLkZ1bmN0
aW9uYGAsIGBgaXRlbS5Nb2R1bGVgYCwgZXRjLiwgaXMgbm93IGlzc3VpbmcgZGVwcmVjYXRpb24g
d2FybmluZ3MsIHByZWZlcgotICBgYHB5dGVzdC5GdW5jdGlvbmBgLCBgYHB5dGVzdC5Nb2R1bGVg
YCwgZXRjLiwgaW5zdGVhZCAoYCMyMDM0YF8pLgotICBUaGFua3MgYEBubXVuZGFyYF8gZm9yIHRo
ZSBQUi4KLQotKiBGaXggZXJyb3IgbWVzc2FnZSB1c2luZyBgYGFwcHJveGBgIHdpdGggY29tcGxl
eCBudW1iZXJzIChgIzIwODJgXykuCi0gIFRoYW5rcyBgQGFkbGVyLWpgXyBmb3IgdGhlIHJlcG9y
dCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBGaXhlZCBmYWxzZS1wb3NpdGl2
ZXMgd2FybmluZ3MgZnJvbSBhc3NlcnRpb24gcmV3cml0ZSBob29rIGZvciBtb2R1bGVzIGltcG9y
dGVkIG1vcmUgdGhhbgotICBvbmNlIGJ5IHRoZSBgYHB5dGVzdF9wbHVnaW5zYGAgbWVjaGFuaXNt
LgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBSZW1vdmUgYW4gaW50
ZXJuYWwgY2FjaGUgd2hpY2ggY291bGQgY2F1c2UgaG9va3MgZnJvbSBgYGNvbmZ0ZXN0LnB5YGAg
ZmlsZXMgaW4KLSAgc3ViLWRpcmVjdG9yaWVzIHRvIGJlIGNhbGxlZCBpbiBvdGhlciBkaXJlY3Rv
cmllcyBpbmNvcnJlY3RseSAoYCMyMDE2YF8pLgotICBUaGFua3MgYEBkLWItd2BfIGZvciB0aGUg
cmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIFJlbW92ZSBpbnRlcm5h
bCBjb2RlIG1lYW50IHRvIHN1cHBvcnQgZWFybGllciBQeXRob24gMyB2ZXJzaW9ucyB0aGF0IHBy
b2R1Y2VkIHRoZSBzaWRlIGVmZmVjdAotICBvZiBsZWF2aW5nIGBgTm9uZWBgIGluIGBgc3lzLm1v
ZHVsZXNgYCB3aGVuIGV4cHJlc3Npb25zIHdlcmUgZXZhbHVhdGVkIGJ5IHB5dGVzdCAoZm9yIGV4
YW1wbGUgcGFzc2luZyBhIGNvbmRpdGlvbgotICBhcyBhIHN0cmluZyB0byBgYHB5dGVzdC5tYXJr
LnNraXBpZmBgKShgIzIxMDNgXykuCi0gIFRoYW5rcyBgQGphcmFjb2BfIGZvciB0aGUgcmVwb3J0
IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIENvcGUgZ3JhY2VmdWxseSB3aXRo
IGEgLnB5YyBmaWxlIHdpdGggbm8gbWF0Y2hpbmcgLnB5IGZpbGUgKGAjMjAzOGBfKS4gVGhhbmtz
Ci0gIGBAbmVkYmF0YF8uCi0KLS4uIF9Ac3lyZTogaHR0cHM6Ly9naXRodWIuY29tL3N5cmUKLS4u
IF9AYWRsZXItajogaHR0cHM6Ly9naXRodWIuY29tL2FkbGVyLWoKLS4uIF9AZC1iLXc6IGh0dHBz
Oi8vYml0YnVja2V0Lm9yZy9kLWItdy8KLS4uIF9ARHVuY2FuQmV0dHM6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9EdW5jYW5CZXR0cwotLi4gX0BkdXB1eTogaHR0cHM6Ly9iaXRidWNrZXQub3JnL2R1cHV5
LwotLi4gX0BrZXJyaWNrLWx5ZnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9rZXJyaWNrLWx5ZnQKLS4u
IF9AbHdtOiBodHRwczovL2dpdGh1Yi5jb20vbHdtCi0uLiBfQG1idWthdG92OiBodHRwczovL2dp
dGh1Yi5jb20vbWJ1a2F0b3YKLS4uIF9AbmVkYmF0OiBodHRwczovL2dpdGh1Yi5jb20vbmVkYmF0
Ci0uLiBfQG5tdW5kYXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9ubXVuZGFyCi0KLS4uIF8jMjAxNjog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDE2Ci0uLiBfIzIw
MzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAzNAotLi4g
XyMyMDM4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwMzgK
LS4uIF8jMjA3ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
MDc4Ci0uLiBfIzIwODI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjA4MgotLi4gXyMyMDg5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzIwODkKLS4uIF8jMjEwMzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yMTAzCi0uLiBfIzIxMDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjEwNQotLi4gXyMyMTExOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzIxMTEKLS4uIF8jNDc4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ3OAotLi4gXyM2ODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjg3Ci0KLQotMy4wLjQgKDIwMTYtMTEtMDkpCi09PT09
PT09PT09PT09PT09PT0KLQotKiBJbXBvcnQgZXJyb3JzIHdoZW4gY29sbGVjdGluZyB0ZXN0IG1v
ZHVsZXMgbm93IGRpc3BsYXkgdGhlIGZ1bGwgdHJhY2ViYWNrIChgIzE5NzZgXykuCi0gIFRoYW5r
cyBgQGN3aXR0eWBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBS
LgotCi0qIEZpeCBjb25mdXNpbmcgY29tbWFuZC1saW5lIGhlbHAgbWVzc2FnZSBmb3IgY3VzdG9t
IG9wdGlvbnMgd2l0aCB0d28gb3IgbW9yZSBgYG1ldGF2YXJgYCBwcm9wZXJ0aWVzIChgIzIwMDRg
XykuCi0gIFRoYW5rcyBgQG9rdWx5bnlha2BfIGFuZCBgQGRhdmVodW50YF8gZm9yIHRoZSByZXBv
cnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogV2hlbiBsb2FkaW5nIHBsdWdp
bnMsIGltcG9ydCBlcnJvcnMgd2hpY2ggY29udGFpbiBub24tYXNjaWkgbWVzc2FnZXMgYXJlIG5v
dyBwcm9wZXJseSBoYW5kbGVkIGluIFB5dGhvbiAyIChgIzE5OThgXykuCi0gIFRoYW5rcyBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEZpeGVkIGN5Y2xpYyByZWZlcmVuY2Ugd2hlbiBg
YHB5dGVzdC5yYWlzZXNgYCBpcyB1c2VkIGluIGNvbnRleHQtbWFuYWdlciBmb3JtIChgIzE5NjVg
XykuIEFsc28gYXMgYQotICByZXN1bHQgb2YgdGhpcyBmaXgsIGBgc3lzLmV4Y19pbmZvKClgYCBp
cyBsZWZ0IGVtcHR5IGluIGJvdGggY29udGV4dC1tYW5hZ2VyIGFuZCBmdW5jdGlvbiBjYWxsIHVz
YWdlcy4KLSAgUHJldmlvdXNseSwgYGBzeXMuZXhjX2luZm9gYCB3b3VsZCBjb250YWluIHRoZSBl
eGNlcHRpb24gY2F1Z2h0IGJ5IHRoZSBjb250ZXh0IG1hbmFnZXIsCi0gIGV2ZW4gd2hlbiB0aGUg
ZXhwZWN0ZWQgZXhjZXB0aW9uIG9jY3VycmVkLgotICBUaGFua3MgYEBNU2VpZmVydDA0YF8gZm9y
IHRoZSByZXBvcnQgYW5kIHRoZSBQUi4KLQotKiBGaXhlZCBmYWxzZS1wb3NpdGl2ZXMgd2Fybmlu
Z3MgZnJvbSBhc3NlcnRpb24gcmV3cml0ZSBob29rIGZvciBtb2R1bGVzIHRoYXQgd2VyZSByZXdy
aXR0ZW4gYnV0Ci0gIHdlcmUgbGF0ZXIgbWFya2VkIGV4cGxpY2l0bHkgYnkgYGBweXRlc3QucmVn
aXN0ZXJfYXNzZXJ0X3Jld3JpdGVgYAotICBvciBpbXBsaWNpdGx5IGFzIGEgcGx1Z2luIChgIzIw
MDVgXykuCi0gIFRoYW5rcyBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSByZXBvcnQgYW5k
IGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogUmVwb3J0IHRlYXJkb3duIG91dHB1dCBv
biB0ZXN0IGZhaWx1cmUgKGAjNDQyYF8pLgotICBUaGFua3MgYEBtYXRjbGFiYF8gZm9yIHRoZSBQ
Ui4KLQotKiBGaXggdGVhcmRvd24gZXJyb3IgbWVzc2FnZSBpbiBnZW5lcmF0ZWQgeFVuaXQgWE1M
LgotICBUaGFua3MgYEBnZHl1bGRpbmBfIGZvciB0aGUgUFIuCi0KLSogUHJvcGVybHkgaGFuZGxl
IGV4Y2VwdGlvbnMgaW4gYGBtdWx0aXByb2Nlc3NpbmdgYCB0YXNrcyAoYCMxOTg0YF8pLgotICBU
aGFua3MgYEBhZGJvcmRlbmBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgotCi0qIENsZWFuIHVwIHVuaXR0ZXN0IFRlc3RDYXNlIG9iamVjdHMgYWZ0ZXIgdGVz
dHMgYXJlIGNvbXBsZXRlIChgIzE2NDlgXykuCi0gIFRoYW5rcyBgQGRfYl93YF8gZm9yIHRoZSBy
ZXBvcnQgYW5kIFBSLgotCi0KLS4uIF9AYWRib3JkZW46IGh0dHBzOi8vZ2l0aHViLmNvbS9hZGJv
cmRlbgotLi4gX0Bjd2l0dHk6IGh0dHBzOi8vZ2l0aHViLmNvbS9jd2l0dHkKLS4uIF9AZF9iX3c6
IGh0dHBzOi8vZ2l0aHViLmNvbS9kX2JfdwotLi4gX0BnZHl1bGRpbjogaHR0cHM6Ly9naXRodWIu
Y29tL2dkeXVsZGluCi0uLiBfQG1hdGNsYWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRjbGFiCi0u
LiBfQE1TZWlmZXJ0MDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9NU2VpZmVydDA0Ci0uLiBfQG9rdWx5
bnlhazogaHR0cHM6Ly9naXRodWIuY29tL29rdWx5bnlhawotCi0uLiBfIzQ0MjogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDIKLS4uIF8jMTk2NTogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTY1Ci0uLiBfIzE5NzY6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk3NgotLi4gXyMxOTg0
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5ODQKLS4uIF8j
MTk5ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTk4Ci0u
LiBfIzIwMDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAw
NAotLi4gXyMyMDA1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzIwMDUKLS4uIF8jMTY0OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNjQ5Ci0KLQotMy4wLjMgKDIwMTYtMDktMjgpCi09PT09PT09PT09PT09PT09PT0KLQot
KiBUaGUgYGBpZHNgYCBhcmd1bWVudCB0byBgYHBhcmFtZXRyaXplYGAgYWdhaW4gYWNjZXB0cyBg
YHVuaWNvZGVgYCBzdHJpbmdzCi0gIGluIFB5dGhvbiAyIChgIzE5MDVgXykuCi0gIFRoYW5rcyBg
QHBoaWxwZXBgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4K
LQotKiBBc3NlcnRpb25zIGFyZSBub3cgYmVpbmcgcmV3cml0dGVuIGZvciBwbHVnaW5zIGluIGRl
dmVsb3BtZW50IG1vZGUKLSAgKGBgcGlwIGluc3RhbGwgLWVgYCkgKGAjMTkzNGBfKS4KLSAgVGhh
bmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRml4IHBrZ19yZXNvdXJjZXMgaW1w
b3J0IGVycm9yIGluIEp5dGhvbiBwcm9qZWN0cyAoYCMxODUzYF8pLgotICBUaGFua3MgYEByYXF1
ZWwtdWNsYF8gZm9yIHRoZSBQUi4KLQotKiBHb3QgcmlkIG9mIGBgQXR0cmlidXRlRXJyb3I6ICdN
b2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdfb2JqJ2BgIGV4Y2VwdGlvbgotICBpbiBQ
eXRob24gMyAoYCMxOTQ0YF8pLgotICBUaGFua3MgYEBheGlsYF8gZm9yIHRoZSBQUi4KLQotKiBF
eHBsYWluIGEgYmFkIHNjb3BlIHZhbHVlIHBhc3NlZCB0byBgYEBmaXh0dXJlYGAgZGVjbGFyYXRp
b25zIG9yCi0gIGEgYGBNZXRhRnVuYy5wYXJhbWV0cml6ZSgpYGAgY2FsbC4gVGhhbmtzIGBAdGdv
b2RsZXRgXyBmb3IgdGhlIFBSLgotCi0qIFRoaXMgdmVyc2lvbiBpbmNsdWRlcyBgYHBsdWdneS0w
LjQuMGBgLCB3aGljaCBjb3JyZWN0bHkgaGFuZGxlcwotICBgYFZlcnNpb25Db25mbGljdGBgIGVy
cm9ycyBpbiBwbHVnaW5zIChgIzcwNGBfKS4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0
aGUgUFIuCi0KLQotLi4gX0BwaGlscGVwOiBodHRwczovL2dpdGh1Yi5jb20vcGhpbHBlcAotLi4g
X0ByYXF1ZWwtdWNsOiBodHRwczovL2dpdGh1Yi5jb20vcmFxdWVsLXVjbAotLi4gX0BheGlsOiBo
dHRwczovL2dpdGh1Yi5jb20vYXhpbAotLi4gX0B0Z29vZGxldDogaHR0cHM6Ly9naXRodWIuY29t
L3Rnb29kbGV0Ci0uLiBfQHZsYWQtZHJhZ29zOiBodHRwczovL2dpdGh1Yi5jb20vdmxhZC1kcmFn
b3MKLQotLi4gXyMxODUzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE4NTMKLS4uIF8jMTkwNTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xOTA1Ci0uLiBfIzE5MzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMTkzNAotLi4gXyMxOTQ0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzE5NDQKLS4uIF8jNzA0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzcwNAotCi0KLQotCi0zLjAuMiAoMjAxNi0wOS0wMSkKLT09PT09
PT09PT09PT09PT09PQotCi0qIEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHBhc3Npbmcgbm9u
LXN0cmluZyBpZHMgdG8gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgIChgIzE4NTdgXykuCi0g
IFRoYW5rcyBgQG9ra2VuYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0
aGUgUFIuCi0KLSogQWRkIGBgYnVmZmVyYGAgYXR0cmlidXRlIHRvIHN0ZGluIHN0dWIgY2xhc3Mg
YGBweXRlc3QuY2FwdHVyZS5Eb250UmVhZEZyb21JbnB1dGBgCi0gIFRoYW5rcyBgQGpvZ3VTRGBf
IGZvciB0aGUgUFIuCi0KLSogRml4IGBgVW5pY29kZUVuY29kZUVycm9yYGAgd2hlbiBzdHJpbmcg
Y29tcGFyaXNvbiB3aXRoIHVuaWNvZGUgaGFzIGZhaWxlZC4gKGAjMTg2NGBfKQotICBUaGFua3Mg
YEBBaU9PYF8gZm9yIHRoZSBQUi4KLQotKiBgYHB5dGVzdF9wbHVnaW5zYGAgaXMgbm93IGhhbmRs
ZWQgY29ycmVjdGx5IGlmIGRlZmluZWQgYXMgYSBzdHJpbmcgKGFzIG9wcG9zZWQgYXMKLSAgYSBz
ZXF1ZW5jZSBvZiBzdHJpbmdzKSB3aGVuIG1vZHVsZXMgYXJlIGNvbnNpZGVyZWQgZm9yIGFzc2Vy
dGlvbiByZXdyaXRpbmcuCi0gIER1ZSB0byB0aGlzIGJ1ZywgbXVjaCBtb3JlIG1vZHVsZXMgd2Vy
ZSBiZWluZyByZXdyaXR0ZW4gdGhhbiBuZWNlc3NhcnkKLSAgaWYgYSB0ZXN0IHN1aXRlIHVzZXMg
YGBweXRlc3RfcGx1Z2luc2BgIHRvIGxvYWQgaW50ZXJuYWwgcGx1Z2lucyAoYCMxODg4YF8pLgot
ICBUaGFua3MgYEBqYXJhY29gXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9y
IHRoZSBQUiAoYCMxODkxYF8pLgotCi0qIERvIG5vdCBjYWxsIHRlYXJEb3duIGFuZCBjbGVhbnVw
cyB3aGVuIHJ1bm5pbmcgdGVzdHMgZnJvbQotICBgYHVuaXR0ZXN0LlRlc3RDYXNlYGAgc3ViY2xh
c3NlcyB3aXRoIGBgLS1wZGJgYAotICBlbmFibGVkLiBUaGlzIGFsbG93cyBwcm9wZXIgcG9zdCBt
b3J0ZW0gZGVidWdnaW5nIGZvciBhbGwgYXBwbGljYXRpb25zCi0gIHdoaWNoIGhhdmUgc2lnbmlm
aWNhbnQgbG9naWMgaW4gdGhlaXIgdGVhckRvd24gbWFjaGluZXJ5IChgIzE4OTBgXykuIFRoYW5r
cwotICBgQG1ieXRgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCB1c2Ugb2YgZGVwcmVjYXRlZCBgYGdl
dGZ1bmNhcmd2YWx1ZWBgIG1ldGhvZCBpbiB0aGUgaW50ZXJuYWwgZG9jdGVzdCBwbHVnaW4uCi0g
IFRoYW5rcyBgQFZpdmlDb2RlcmBfIGZvciB0aGUgcmVwb3J0IChgIzE4OThgXykuCi0KLS4uIF9A
am9ndVNEOiBodHRwczovL2dpdGh1Yi5jb20vam9ndVNECi0uLiBfQEFpT086IGh0dHBzOi8vZ2l0
aHViLmNvbS9BaU9PCi0uLiBfQG1ieXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYnl0Ci0uLiBfQFZp
dmlDb2RlcjogaHR0cHM6Ly9naXRodWIuY29tL1ZpdmlDb2RlcgotCi0uLiBfIzE4NTc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg1NwotLi4gXyMxODY0OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4NjQKLS4uIF8jMTg4
ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODg4Ci0uLiBf
IzE4OTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE4OTEKLS4u
IF8jMTg5MDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODkw
Ci0uLiBfIzE4OTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTg5OAotCi0KLTMuMC4xICgyMDE2LTA4LTIzKQotPT09PT09PT09PT09PT09PT09Ci0KLSogRml4
IHJlZ3Jlc3Npb24gd2hlbiBgYGltcG9ydG9yc2tpcGBgIGlzIHVzZWQgYXQgbW9kdWxlIGxldmVs
IChgIzE4MjJgXykuCi0gIFRoYW5rcyBgQGphcmFjb2BfIGFuZCBgQFRoZS1Db21waWxlcmBfIGZv
ciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCBwYXJh
bWV0cml6YXRpb24gc2NvcGUgd2hlbiBzZXNzaW9uIGZpeHR1cmVzIGFyZSB1c2VkIGluIGNvbmp1
bmN0aW9uCi0gIHdpdGggbm9ybWFsIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgY2FsbCAoYCMxODMy
YF8pLgotICBUaGFua3MgYEBUaGUtQ29tcGlsZXJgXyBmb3IgdGhlIHJlcG9ydCwgYEBLaW5nZHJl
YWRgXyBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBGaXggaW50ZXJuYWwgZXJy
b3Igd2hlbiBwYXJhbWV0cml6aW5nIHRlc3RzIG9yIGZpeHR1cmVzIHVzaW5nIGFuIGVtcHR5IGBg
aWRzYGAgYXJndW1lbnQgKGAjMTg0OWBfKS4KLSAgVGhhbmtzIGBAT1BwdW9saXRhaXZhbGBfIGZv
ciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCBsb2Fk
ZXIgZXJyb3Igd2hlbiBydW5uaW5nIGBgcHl0ZXN0YGAgZW1iZWRkZWQgaW4gYSB6aXBmaWxlLgot
ICBUaGFua3MgYEBtYmFjaHJ5YF8gZm9yIHRoZSBQUi4KLQotCi0uLiBfQEtpbmdkcmVhZDogaHR0
cHM6Ly9naXRodWIuY29tL0tpbmdkcmVhZAotLi4gX0BtYmFjaHJ5OiBodHRwczovL2dpdGh1Yi5j
b20vbWJhY2hyeQotLi4gX0BPUHB1b2xpdGFpdmFsOiBodHRwczovL2dpdGh1Yi5jb20vT1BwdW9s
aXRhaXZhbAotCi0uLiBfIzE4MjI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMTgyMgotLi4gXyMxODMyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE4MzIKLS4uIF8jMTg0OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xODQ5Ci0KLQotMy4wLjAgKDIwMTYtMDgtMTgpCi09PT09PT09PT09
PT09PT09PT0KLQotKipJbmNvbXBhdGlibGUgY2hhbmdlcyoqCi0KLQotQSBudW1iZXIgb2YgaW5j
b21wYXRpYmxlIGNoYW5nZXMgd2VyZSBtYWRlIGluIHRoaXMgcmVsZWFzZSwgd2l0aCB0aGUgaW50
ZW50IG9mIHJlbW92aW5nIGZlYXR1cmVzIGRlcHJlY2F0ZWQgZm9yIGEgbG9uZwotdGltZSBvciBj
aGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3JzIGluIG9yZGVyIHRvIG1ha2UgdGhlbSBsZXNzIHN1cnBy
aXNpbmcvbW9yZSB1c2VmdWwuCi0KLSogUmVpbnRlcnByZXRhdGlvbiBtb2RlIGhhcyBub3cgYmVl
biByZW1vdmVkLiAgT25seSBwbGFpbiBhbmQgcmV3cml0ZQotICBtb2RlIGFyZSBhdmFpbGFibGUs
IGNvbnNlcXVlbnRseSB0aGUgYGAtLWFzc2VydD1yZWludGVycGBgIG9wdGlvbiBpcwotICBubyBs
b25nZXIgYXZhaWxhYmxlLiAgVGhpcyBhbHNvIG1lYW5zIGZpbGVzIGltcG9ydGVkIGZyb20gcGx1
Z2lucyBvcgotICBgYGNvbmZ0ZXN0LnB5YGAgd2lsbCBub3QgYmVuZWZpdCBmcm9tIGltcHJvdmVk
IGFzc2VydGlvbnMgYnkKLSAgZGVmYXVsdCwgeW91IHNob3VsZCB1c2UgYGBweXRlc3QucmVnaXN0
ZXJfYXNzZXJ0X3Jld3JpdGUoKWBgIHRvCi0gIGV4cGxpY2l0bHkgdHVybiBvbiBhc3NlcnRpb24g
cmV3cml0aW5nIGZvciB0aG9zZSBmaWxlcy4gIFRoYW5rcwotICBgQGZsdWJgXyBmb3IgdGhlIFBS
LgotCi0qIFRoZSBmb2xsb3dpbmcgZGVwcmVjYXRlZCBjb21tYW5kbGluZSBvcHRpb25zIHdlcmUg
cmVtb3ZlZDoKLQotICAqIGBgLS1nZW5zY3JpcHRgYDogbm8gbG9uZ2VyIHN1cHBvcnRlZDsKLSAg
KiBgYC0tbm8tYXNzZXJ0YGA6IHVzZSBgYC0tYXNzZXJ0PXBsYWluYGAgaW5zdGVhZDsKLSAgKiBg
YC0tbm9tYWdpY2BgOiB1c2UgYGAtLWFzc2VydD1wbGFpbmBgIGluc3RlYWQ7Ci0gICogYGAtLXJl
cG9ydGBgOiB1c2UgYGAtcmBgIGluc3RlYWQ7Ci0KLSAgVGhhbmtzIHRvIGBAUmVkQmVhcmRDb2Rl
YF8gZm9yIHRoZSBQUiAoYCMxNjY0YF8pLgotCi0qIEltcG9ydEVycm9ycyBpbiBwbHVnaW5zIG5v
dyBhcmUgYSBmYXRhbCBlcnJvciBpbnN0ZWFkIG9mIGlzc3VpbmcgYQotICBweXRlc3Qgd2Fybmlu
ZyAoYCMxNDc5YF8pLiBUaGFua3MgdG8gYEBUaGUtQ29tcGlsZXJgXyBmb3IgdGhlIFBSLgotCi0q
IFJlbW92ZWQgc3VwcG9ydCBjb2RlIGZvciBQeXRob24gMyB2ZXJzaW9ucyA8IDMuMyAoYCMxNjI3
YF8pLgotCi0qIFJlbW92ZWQgYWxsIGBgcHkudGVzdC1YKmBgIGVudHJ5IHBvaW50cy4gVGhlIHZl
cnNpb25lZCwgc3VmZml4ZWQgZW50cnkgcG9pbnRzCi0gIHdlcmUgbmV2ZXIgZG9jdW1lbnRlZCBh
bmQgYSBsZWZ0b3ZlciBmcm9tIGEgcHJlLXZpcnR1YWxlbnYgZXJhLiBUaGVzZSBlbnRyeQotICBw
b2ludHMgYWxzbyBjcmVhdGVkIGJyb2tlbiBlbnRyeSBwb2ludHMgaW4gd2hlZWxzLCBzbyByZW1v
dmluZyB0aGVtIGFsc28KLSAgcmVtb3ZlcyBhIHNvdXJjZSBvZiBjb25mdXNpb24gZm9yIHVzZXJz
IChgIzE2MzJgXykuCi0gIFRoYW5rcyBgQG9iZXN0d2FsdGVyYF8gZm9yIHRoZSBQUi4KLQotKiBg
YHB5dGVzdC5za2lwKClgYCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gdXNlZCB0byBkZWNvcmF0
ZSBhIHRlc3QgZnVuY3Rpb24sCi0gIGFzIG9wcG9zZWQgdG8gaXRzIG9yaWdpbmFsIGludGVudCAo
dG8gaW1wZXJhdGl2ZWx5IHNraXAgYSB0ZXN0IGluc2lkZSBhIHRlc3QgZnVuY3Rpb24pLiBQcmV2
aW91c2x5Ci0gIHRoaXMgdXNhZ2Ugd291bGQgY2F1c2UgdGhlIGVudGlyZSBtb2R1bGUgdG8gYmUg
c2tpcHBlZCAoYCM2MDdgXykuCi0gIFRoYW5rcyBgQG9tYXJrb2hsYF8gZm9yIHRoZSBjb21wbGV0
ZSBQUiAoYCMxNTE5YF8pLgotCi0qIEV4aXQgdGVzdHMgaWYgYSBjb2xsZWN0aW9uIGVycm9yIG9j
Y3Vycy4gQSBwb2xsIGluZGljYXRlZCBtb3N0IHVzZXJzIHdpbGwgaGl0IENUUkwtQwotICBhbnl3
YXkgYXMgc29vbiBhcyB0aGV5IHNlZSBjb2xsZWN0aW9uIGVycm9ycywgc28gcHl0ZXN0IG1pZ2h0
IGFzIHdlbGwgbWFrZSB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIChgIzE0MjFgXykuCi0gIEEg
YGAtLWNvbnRpbnVlLW9uLWNvbGxlY3Rpb24tZXJyb3JzYGAgb3B0aW9uIGhhcyBiZWVuIGFkZGVk
IHRvIHJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ci4KLSAgVGhhbmtzIGBAb2xlZ3BpZHNh
ZG55aWBfIGFuZCBgQG9tYXJrb2hsYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNjI4YF8pLgot
Ci0qIFJlbmFtZWQgdGhlIHB5dGVzdCBgYHBkYmBgIG1vZHVsZSAocGx1Z2luKSBpbnRvIGBgZGVi
dWdnaW5nYGAgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBidWlsdGluIGBgcGRiYGAgbW9kdWxl
LgotCi0qIFJhaXNlIGEgaGVscGZ1bCBmYWlsdXJlIG1lc3NhZ2Ugd2hlbiByZXF1ZXN0aW5nIGEg
cGFyYW1ldHJpemVkIGZpeHR1cmUgYXQgcnVudGltZSwKLSAgZS5nLiB3aXRoIGBgcmVxdWVzdC5n
ZXRmaXh0dXJldmFsdWVgYC4gUHJldmlvdXNseSB0aGVzZSBwYXJhbWV0ZXJzIHdlcmUgc2ltcGx5
Ci0gIG5ldmVyIGRlZmluZWQsIHNvIGEgZml4dHVyZSBkZWNvcmF0ZWQgbGlrZSBgYEBweXRlc3Qu
Zml4dHVyZShwYXJhbXM9WzAsIDEsIDJdKWBgCi0gIG9ubHkgcmFuIG9uY2UgKGAjNDYwYF8pLgot
ICBUaGFua3MgdG8gYEBuaWtyYXRpb2BfIGZvciB0aGUgYnVnIHJlcG9ydCwgYEBSZWRCZWFyZENv
ZGVgXyBhbmQgYEB0b212aW5lcmBfIGZvciB0aGUgUFIuCi0KLSogYGBfcHl0ZXN0Lm1vbmtleXBh
dGNoLm1vbmtleXBhdGNoYGAgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBgYF9weXRlc3QubW9u
a2V5cGF0Y2guTW9ua2V5UGF0Y2hgYAotICBzbyBpdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggdGhl
IGBgbW9ua2V5cGF0Y2hgYCBmaXh0dXJlLgotCi0qIGBgLS1leGl0Zmlyc3QgLyAteGBgIGNhbiBu
b3cgYmUgb3ZlcnJpZGRlbiBieSBhIGZvbGxvd2luZyBgYC0tbWF4ZmFpbD1OYGAKLSAgYW5kIGlz
IGp1c3QgYSBzeW5vbnltIGZvciBgYC0tbWF4ZmFpbD0xYGAuCi0KLQotKipOZXcgRmVhdHVyZXMq
KgotCi0qIFN1cHBvcnQgbm9zZS1zdHlsZSBgYF9fdGVzdF9fYGAgYXR0cmlidXRlIG9uIG1ldGhv
ZHMgb2YgY2xhc3NlcywKLSAgaW5jbHVkaW5nIHVuaXR0ZXN0LXN0eWxlIENsYXNzZXMuIElmIHNl
dCB0byBgYEZhbHNlYGAsIHRoZSB0ZXN0IHdpbGwgbm90IGJlCi0gIGNvbGxlY3RlZC4KLQotKiBO
ZXcgYGBkb2N0ZXN0X25hbWVzcGFjZWBgIGZpeHR1cmUgZm9yIGluamVjdGluZyBuYW1lcyBpbnRv
IHRoZQotICBuYW1lc3BhY2UgaW4gd2hpY2ggZG9jdGVzdHMgcnVuLgotICBUaGFua3MgYEBtaWxs
aWFtc2BfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTQyOGBfKS4KLQotKiBOZXcgYGAtLWRvY3Rl
c3QtcmVwb3J0YGAgb3B0aW9uIGF2YWlsYWJsZSB0byBjaGFuZ2UgdGhlIG91dHB1dCBmb3JtYXQg
b2YgZGlmZnMKLSAgd2hlbiBydW5uaW5nIChmYWlsaW5nKSBkb2N0ZXN0cyAoaW1wbGVtZW50cyBg
IzE3NDlgXykuCi0gIFRoYW5rcyBgQGhhcnR5bWBfIGZvciB0aGUgUFIuCi0KLSogTmV3IGBgbmFt
ZWBgIGFyZ3VtZW50IHRvIGBgcHl0ZXN0LmZpeHR1cmVgYCBkZWNvcmF0b3Igd2hpY2ggYWxsb3dz
IGEgY3VzdG9tIG5hbWUKLSAgZm9yIGEgZml4dHVyZSAodG8gc29sdmUgdGhlIGZ1bmNhcmctc2hh
ZG93aW5nLWZpeHR1cmUgcHJvYmxlbSkuCi0gIFRoYW5rcyBgQG5vdmFzMHgyYWBfIGZvciB0aGUg
Y29tcGxldGUgUFIgKGAjMTQ0NGBfKS4KLQotKiBOZXcgYGBhcHByb3goKWBgIGZ1bmN0aW9uIGZv
ciBlYXNpbHkgY29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaW4KLSAgdGVzdHMuCi0g
IFRoYW5rcyBgQGthbGVrdW5kZXJ0YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNDQxYF8pLgot
Ci0qIEFiaWxpdHkgdG8gYWRkIGdsb2JhbCBwcm9wZXJ0aWVzIGluIHRoZSBmaW5hbCB4dW5pdCBv
dXRwdXQgZmlsZSBieSBhY2Nlc3NpbmcKLSAgdGhlIGludGVybmFsIGBganVuaXR4bWxgYCBwbHVn
aW4gKGV4cGVyaW1lbnRhbCkuCi0gIFRoYW5rcyBgQHRhcmVxYWxheWFuYF8gZm9yIHRoZSBjb21w
bGV0ZSBQUiBgIzE0NTRgXykuCi0KLSogTmV3IGBgRXhjZXB0aW9uSW5mby5tYXRjaCgpYGAgbWV0
aG9kIHRvIG1hdGNoIGEgcmVndWxhciBleHByZXNzaW9uIG9uIHRoZQotICBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgYW4gZXhjZXB0aW9uIChgIzM3MmBfKS4KLSAgVGhhbmtzIGBAb21hcmtvaGxg
XyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE1MDJgXykuCi0KLSogYGBfX3RyYWNlYmFja2hpZGVf
X2BgIGNhbiBub3cgYWxzbyBiZSBzZXQgdG8gYSBjYWxsYWJsZSB3aGljaCB0aGVuIGNhbiBkZWNp
ZGUKLSAgd2hldGhlciB0byBmaWx0ZXIgdGhlIHRyYWNlYmFjayBiYXNlZCBvbiB0aGUgYGBFeGNl
cHRpb25JbmZvYGAgb2JqZWN0IHBhc3NlZAotICB0byBpdC4gVGhhbmtzIGBAVGhlLUNvbXBpbGVy
YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNTI2YF8pLgotCi0qIE5ldyBgYHB5dGVzdF9tYWtl
X3BhcmFtZXRyaXplX2lkKGNvbmZpZywgdmFsKWBgIGhvb2sgd2hpY2ggY2FuIGJlIHVzZWQgYnkg
cGx1Z2lucyB0byBwcm92aWRlCi0gIGZyaWVuZGx5IHN0cmluZ3MgZm9yIGN1c3RvbSB0eXBlcy4K
LSAgVGhhbmtzIGBAcGFsYXZpdmBfIGZvciB0aGUgUFIuCi0KLSogYGBjYXBzeXNgYCBhbmQgYGBj
YXBmZGBgIG5vdyBoYXZlIGEgYGBkaXNhYmxlZCgpYGAgY29udGV4dC1tYW5hZ2VyIG1ldGhvZCwg
d2hpY2gKLSAgY2FuIGJlIHVzZWQgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSBjYXB0dXJlIHdpdGhp
biBhIHRlc3QuCi0gIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIE5ldyBj
bGkgZmxhZyBgYC0tZml4dHVyZXMtcGVyLXRlc3RgYDogc2hvd3Mgd2hpY2ggZml4dHVyZXMgYXJl
IGJlaW5nIHVzZWQKLSAgZm9yIGVhY2ggc2VsZWN0ZWQgdGVzdCBpdGVtLiBGZWF0dXJlcyBkb2Mg
c3RyaW5ncyBvZiBmaXh0dXJlcyBieSBkZWZhdWx0LgotICBDYW4gYWxzbyBzaG93IHdoZXJlIGZp
eHR1cmVzIGFyZSBkZWZpbmVkIGlmIGNvbWJpbmVkIHdpdGggYGAtdmBgLgotICBUaGFua3MgYEBo
YWNrZWJyb3RgXyBmb3IgdGhlIFBSLgotCi0qIEludHJvZHVjZSBgYHB5dGVzdGBgIGNvbW1hbmQg
YXMgcmVjb21tZW5kZWQgZW50cnkgcG9pbnQuIE5vdGUgdGhhdCBgYHB5LnRlc3RgYAotICBzdGls
bCB3b3JrcyBhbmQgaXMgbm90IHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4gQ2xvc2VzIHByb3Bvc2Fs
Ci0gIGAjMTYyOWBfLiBUaGFua3MgYEBvYmVzdHdhbHRlcmBfIGFuZCBgQGRhdmVodW50YF8gZm9y
IHRoZSBjb21wbGV0ZSBQUgotICAoYCMxNjMzYF8pLgotCi0qIE5ldyBjbGkgZmxhZ3M6Ci0KLSAg
KyBgYC0tc2V0dXAtcGxhbmBgOiBwZXJmb3JtcyBub3JtYWwgY29sbGVjdGlvbiBhbmQgcmVwb3J0
cwotICAgIHRoZSBwb3RlbnRpYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFuZCBkb2VzIG5vdCBleGVj
dXRlIGFueSBmaXh0dXJlcyBhbmQgdGVzdHM7Ci0gICsgYGAtLXNldHVwLW9ubHlgYDogcGVyZm9y
bXMgbm9ybWFsIGNvbGxlY3Rpb24sIGV4ZWN1dGVzIHNldHVwIGFuZCB0ZWFyZG93biBvZgotICAg
IGZpeHR1cmVzIGFuZCByZXBvcnRzIHRoZW07Ci0gICsgYGAtLXNldHVwLXNob3dgYDogcGVyZm9y
bXMgbm9ybWFsIHRlc3QgZXhlY3V0aW9uIGFuZCBhZGRpdGlvbmFsbHkgc2hvd3MKLSAgICBzZXR1
cCBhbmQgdGVhcmRvd24gb2YgZml4dHVyZXM7Ci0gICsgYGAtLWtlZXAtZHVwbGljYXRlc2BgOiBw
eS50ZXN0IG5vdyBpZ25vcmVzIGR1cGxpY2F0ZWQgcGF0aHMgZ2l2ZW4gaW4gdGhlIGNvbW1hbmQK
LSAgICBsaW5lLiBUbyByZXRhaW4gdGhlIHByZXZpb3VzIGJlaGF2aW9yIHdoZXJlIHRoZSBzYW1l
IHRlc3QgY291bGQgYmUgcnVuIG11bHRpcGxlCi0gICAgdGltZXMgYnkgc3BlY2lmeWluZyBpdCBp
biB0aGUgY29tbWFuZC1saW5lIG11bHRpcGxlIHRpbWVzLCBwYXNzIHRoZSBgYC0ta2VlcC1kdXBs
aWNhdGVzYGAKLSAgICBhcmd1bWVudCAoYCMxNjA5YF8pOwotCi0gIFRoYW5rcyBgQGQ2ZWBfLCBg
QGt2YXMtaXRgXywgYEBzYWxsbmVyYF8sIGBAaW9nZ3N0cmVhbWBfIGFuZCBgQG9tYXJrb2hsYF8g
Zm9yIHRoZSBQUnMuCi0KLSogTmV3IENMSSBmbGFnIGBgLS1vdmVycmlkZS1pbmlgYC9gYC1vYGA6
IG92ZXJyaWRlcyB2YWx1ZXMgZnJvbSB0aGUgaW5pIGZpbGUuCi0gIEZvciBleGFtcGxlOiBgYCIt
byB4ZmFpbF9zdHJpY3Q9VHJ1ZSJgYCcuCi0gIFRoYW5rcyBgQGJsdWV5ZWRgXyBhbmQgYEBmZW5n
eHhgXyBmb3IgdGhlIFBSLgotCi0qIE5ldyBob29rczoKLQotICArIGBgcHl0ZXN0X2ZpeHR1cmVf
c2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdClgYDogZXhlY3V0ZXMgZml4dHVyZSBzZXR1cDsKLSAg
KyBgYHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1cmVkZWYpYGA6IGNhbGxlZCBh
ZnRlciB0aGUgZml4dHVyZSdzCi0gICAgZmluYWxpemVyIGFuZCBoYXMgYWNjZXNzIHRvIHRoZSBm
aXh0dXJlJ3MgcmVzdWx0IGNhY2hlLgotCi0gIFRoYW5rcyBgQGQ2ZWBfLCBgQHNhbGxuZXJgXy4K
LQotKiBJc3N1ZSB3YXJuaW5ncyBmb3IgYXNzZXJ0cyB3aG9zZSB0ZXN0IGlzIGEgdHVwbGUgbGl0
ZXJhbC4gU3VjaCBhc3NlcnRzIHdpbGwKLSAgbmV2ZXIgZmFpbCBiZWNhdXNlIHR1cGxlcyBhcmUg
YWx3YXlzIHRydXRoeSBhbmQgYXJlIHVzdWFsbHkgYSBtaXN0YWtlCi0gIChzZWUgYCMxNTYyYF8p
LiBUaGFua3MgYEBrdmFzLWl0YF8sIGZvciB0aGUgUFIuCi0KLSogQWxsb3cgcGFzc2luZyBhIGN1
c3RvbSBkZWJ1Z2dlciBjbGFzcyAoZS5nLiBgYC0tcGRiY2xzPUlQeXRob24uY29yZS5kZWJ1Z2dl
cjpQZGJgYCkuCi0gIFRoYW5rcyB0byBgQGFubnR6ZXJgXyBmb3IgdGhlIFBSLgotCi0KLSoqQ2hh
bmdlcyoqCi0KLSogUGx1Z2lucyBub3cgYmVuZWZpdCBmcm9tIGFzc2VydGlvbiByZXdyaXRpbmcu
ICBUaGFua3MKLSAgYEBzb2JlcjdgXywgYEBuaWNvZGRlbXVzYF8gYW5kIGBAZmx1YmBfIGZvciB0
aGUgUFIuCi0KLSogQ2hhbmdlIGBgcmVwb3J0Lm91dGNvbWVgYCBmb3IgYGB4cGFzc2VkYGAgdGVz
dHMgdG8gYGAicGFzc2VkImBgIGluIG5vbi1zdHJpY3QKLSAgbW9kZSBhbmQgYGAiZmFpbGVkImBg
IGluIHN0cmljdCBtb2RlLiBUaGFua3MgdG8gYEBoYWNrZWJyb3RgXyBmb3IgdGhlIFBSCi0gIChg
IzE3OTVgXykgYW5kIGBAZ3ByYXNhZDg0YF8gZm9yIHJlcG9ydCAoYCMxNTQ2YF8pLgotCi0qIFRl
c3RzIG1hcmtlZCB3aXRoIGBgeGZhaWwoc3RyaWN0PUZhbHNlKWBgICh0aGUgZGVmYXVsdCkgbm93
IGFwcGVhciBpbgotICBKVW5pdFhNTCByZXBvcnRzIGFzIHBhc3NpbmcgdGVzdHMgaW5zdGVhZCBv
ZiBza2lwcGVkLgotICBUaGFua3MgdG8gYEBoYWNrZWJyb3RgXyBmb3IgdGhlIFBSIChgIzE3OTVg
XykuCi0KLSogSGlnaGxpZ2h0IHBhdGggb2YgdGhlIGZpbGUgbG9jYXRpb24gaW4gdGhlIGVycm9y
IHJlcG9ydCB0byBtYWtlIGl0IGVhc2llciB0byBjb3B5L3Bhc3RlLgotICBUaGFua3MgYEBzdXph
a3VgXyBmb3IgdGhlIFBSIChgIzE3NzhgXykuCi0KLSogRml4dHVyZXMgbWFya2VkIHdpdGggYGBA
cHl0ZXN0LmZpeHR1cmVgYCBjYW4gbm93IHVzZSBgYHlpZWxkYGAgc3RhdGVtZW50cyBleGFjdGx5
IGxpa2UKLSAgdGhvc2UgbWFya2VkIHdpdGggdGhlIGBgQHB5dGVzdC55aWVsZF9maXh0dXJlYGAg
ZGVjb3JhdG9yLiBUaGlzIGNoYW5nZSByZW5kZXJzCi0gIGBgQHB5dGVzdC55aWVsZF9maXh0dXJl
YGAgZGVwcmVjYXRlZCBhbmQgbWFrZXMgYGBAcHl0ZXN0LmZpeHR1cmVgYCB3aXRoIGBgeWllbGRg
YCBzdGF0ZW1lbnRzCi0gIHRoZSBwcmVmZXJyZWQgd2F5IHRvIHdyaXRlIHRlYXJkb3duIGNvZGUg
KGAjMTQ2MWBfKS4KLSAgVGhhbmtzIGBAY3NhZnRvaXVgXyBmb3IgYnJpbmdpbmcgdGhpcyB0byBh
dHRlbnRpb24gYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRXhwbGljaXRseSBw
YXNzZWQgcGFyYW1ldHJpemUgaWRzIGRvIG5vdCBnZXQgZXNjYXBlZCB0byBhc2NpaSAoYCMxMzUx
YF8pLgotICBUaGFua3MgYEBjZXJpZHdlbmBfIGZvciB0aGUgUFIuCi0KLSogRml4dHVyZXMgYXJl
IG5vdyBzb3J0ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gYW4gdW5rbm93
bgotICBmaXh0dXJlIGlzIGRlY2xhcmVkIGluIGEgdGVzdCBmdW5jdGlvbi4KLSAgVGhhbmtzIGBA
bmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogYGBweXRlc3RfdGVybWluYWxfc3VtbWFyeWBg
IGhvb2sgbm93IHJlY2VpdmVzIHRoZSBgYGV4aXRzdGF0dXNgYAotICBvZiB0aGUgdGVzdCBzZXNz
aW9uIGFzIGFyZ3VtZW50LiBUaGFua3MgYEBibHVleWVkYF8gZm9yIHRoZSBQUiAoYCMxODA5YF8p
LgotCi0qIFBhcmFtZXRyaXplIGlkcyBjYW4gYWNjZXB0IGBgTm9uZWBgIGFzIHNwZWNpZmljIHRl
c3QgaWQsIGluIHdoaWNoIGNhc2UgdGhlCi0gIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlkIGZv
ciB0aGF0IGFyZ3VtZW50IHdpbGwgYmUgdXNlZC4KLSAgVGhhbmtzIGBAcGFsYXZpdmBfIGZvciB0
aGUgY29tcGxldGUgUFIgKGAjMTQ2OGBfKS4KLQotKiBUaGUgcGFyYW1ldGVyIHRvIHh1bml0LXN0
eWxlIHNldHVwL3RlYXJkb3duIG1ldGhvZHMgKGBgc2V0dXBfbWV0aG9kYGAsCi0gIGBgc2V0dXBf
bW9kdWxlYGAsIGV0Yy4pIGlzIG5vdyBvcHRpb25hbCBhbmQgbWF5IGJlIG9taXR0ZWQuCi0gIFRo
YW5rcyBgQG9ra2VuYF8gZm9yIGJyaW5naW5nIHRoaXMgdG8gYXR0ZW50aW9uIGFuZCBgQG5pY29k
ZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEltcHJvdmVkIGF1dG9tYXRpYyBpZCBnZW5lcmF0aW9u
IHNlbGVjdGlvbiBpbiBjYXNlIG9mIGR1cGxpY2F0ZSBpZHMgaW4KLSAgcGFyYW1ldHJpemUuCi0g
IFRoYW5rcyBgQHBhbGF2aXZgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE0NzRgXykuCi0KLSog
Tm93IHB5dGVzdCB3YXJuaW5ncyBzdW1tYXJ5IGlzIHNob3duIHVwIGJ5IGRlZmF1bHQuIEFkZGVk
IGEgbmV3IGZsYWcKLSAgYGAtLWRpc2FibGUtcHl0ZXN0LXdhcm5pbmdzYGAgdG8gZXhwbGljaXRs
eSBkaXNhYmxlIHRoZSB3YXJuaW5ncyBzdW1tYXJ5IChgIzE2NjhgXykuCi0KLSogTWFrZSBJbXBv
cnRFcnJvciBkdXJpbmcgY29sbGVjdGlvbiBtb3JlIGV4cGxpY2l0IGJ5IHJlbWluZGluZwotICB0
aGUgdXNlciB0byBjaGVjayB0aGUgbmFtZSBvZiB0aGUgdGVzdCBtb2R1bGUvcGFja2FnZShzKSAo
YCMxNDI2YF8pLgotICBUaGFua3MgYEBvbWFya29obGBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAj
MTUyMGBfKS4KLQotKiBBZGQgYGBidWlsZC9gYCBhbmQgYGBkaXN0L2BgIHRvIHRoZSBkZWZhdWx0
IGBgLS1ub3JlY3Vyc2VkaXJzYGAgbGlzdC4gVGhhbmtzCi0gIGBAbWlrb2Zza2lgXyBmb3IgdGhl
IHJlcG9ydCBhbmQgYEB0b212aW5lcmBfIGZvciB0aGUgUFIgKGAjMTU0NGBfKS4KLQotKiBgYHB5
dGVzdC5yYWlzZXNgYCBpbiB0aGUgY29udGV4dCBtYW5hZ2VyIGZvcm0gYWNjZXB0cyBhIGN1c3Rv
bQotICBgYG1lc3NhZ2VgYCB0byByYWlzZSB3aGVuIG5vIGV4Y2VwdGlvbiBvY2N1cnJlZC4KLSAg
VGhhbmtzIGBAcGFsYXZpdmBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTYxNmBfKS4KLQotKiBg
YGNvbmZ0ZXN0LnB5YGAgZmlsZXMgbm93IGJlbmVmaXQgZnJvbSBhc3NlcnRpb24gcmV3cml0aW5n
OyBwcmV2aW91c2x5IGl0Ci0gIHdhcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGVzdCBtb2R1bGVzLiBU
aGFua3MgYEBmbHViYF8sIGBAc29iZXI3YF8gYW5kCi0gIGBAbmljb2RkZW11c2BfIGZvciB0aGUg
UFIgKGAjMTYxOWBfKS4KLQotKiBUZXh0IGRvY3VtZW50cyB3aXRob3V0IGFueSBkb2N0ZXN0cyBu
byBsb25nZXIgYXBwZWFyIGFzICJza2lwcGVkIi4KLSAgVGhhbmtzIGBAZ3JhaW5nZXJ0YF8gZm9y
IHJlcG9ydGluZyBhbmQgcHJvdmlkaW5nIGEgZnVsbCBQUiAoYCMxNTgwYF8pLgotCi0qIEVuc3Vy
ZSB0aGF0IGEgbW9kdWxlIHdpdGhpbiBhIG5hbWVzcGFjZSBwYWNrYWdlIGNhbiBiZSBmb3VuZCB3
aGVuIGl0Ci0gIGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIHRvZ2V0aGVyIHdpdGgg
dGhlIGBgLS1weWFyZ3NgYAotICBvcHRpb24uICBUaGFua3MgdG8gYEB0YXNjaGluaWBfIGZvciB0
aGUgUFIgKGAjMTU5N2BfKS4KLQotKiBBbHdheXMgaW5jbHVkZSBmdWxsIGFzc2VydGlvbiBleHBs
YW5hdGlvbiBkdXJpbmcgYXNzZXJ0aW9uIHJld3JpdGluZy4gVGhlIHByZXZpb3VzIGJlaGF2aW91
ciB3YXMgaGlkaW5nCi0gIHN1Yi1leHByZXNzaW9ucyB0aGF0IGhhcHBlbmVkIHRvIGJlIGBgRmFs
c2VgYCwgYXNzdW1pbmcgdGhpcyB3YXMgcmVkdW5kYW50IGluZm9ybWF0aW9uLgotICBUaGFua3Mg
YEBiYWdlcmFyZGBfIGZvciByZXBvcnRpbmcgKGAjMTUwM2BfKS4gVGhhbmtzIHRvIGBAZGF2ZWh1
bnRgXyBhbmQKLSAgYEB0b212aW5lcmBfIGZvciB0aGUgUFIuCi0KLSogYGBPcHRpb25Hcm91cC5h
ZGRvcHRpb24oKWBgIG5vdyBjaGVja3MgaWYgb3B0aW9uIG5hbWVzIHdlcmUgYWxyZWFkeQotICBh
ZGRlZCBiZWZvcmUsIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRyYWNrIGRvd24gaXNzdWVzIGxpa2Ug
YCMxNjE4YF8uCi0gIEJlZm9yZSwgeW91IG9ubHkgZ290IGV4Y2VwdGlvbnMgbGF0ZXIgZnJvbSBg
YGFyZ3BhcnNlYGAgbGlicmFyeSwKLSAgZ2l2aW5nIG5vIGNsdWUgYWJvdXQgdGhlIGFjdHVhbCBy
ZWFzb24gZm9yIGRvdWJsZS1hZGRlZCBvcHRpb25zLgotCi0qIGBgeWllbGRgYC1iYXNlZCB0ZXN0
cyBhcmUgY29uc2lkZXJlZCBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gcHl0ZXN0
LTQuMC4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogYGBbcHl0ZXN0
XWBgIHNlY3Rpb25zIGluIGBgc2V0dXAuY2ZnYGAgZmlsZXMgc2hvdWxkIG5vdyBiZSBuYW1lZCBg
YFt0b29sOnB5dGVzdF1gYAotICB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBkaXN0dXRp
bHMgY29tbWFuZHMgKHNlZSBgIzU2N2BfKS4gYGBbcHl0ZXN0XWBgIHNlY3Rpb25zIGluCi0gIGBg
cHl0ZXN0LmluaWBgIG9yIGBgdG94LmluaWBgIGZpbGVzIGFyZSBzdXBwb3J0ZWQgYW5kIHVuY2hh
bmdlZC4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogVXNpbmcgYGBw
eXRlc3RfZnVuY2FyZ19fYGAgcHJlZml4IHRvIGRlY2xhcmUgZml4dHVyZXMgaXMgY29uc2lkZXJl
ZCBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCi0gIHJlbW92ZWQgaW4gcHl0ZXN0LTQuMCAoYCMxNjg0
YF8pLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBQYXNzaW5nIGEg
Y29tbWFuZC1saW5lIHN0cmluZyB0byBgYHB5dGVzdC5tYWluKClgYCBpcyBjb25zaWRlcmVkIGRl
cHJlY2F0ZWQgYW5kIHNjaGVkdWxlZAotICBmb3IgcmVtb3ZhbCBpbiBweXRlc3QtNC4wLiBJdCBp
cyByZWNvbW1lbmRlZCB0byBwYXNzIGEgbGlzdCBvZiBhcmd1bWVudHMgaW5zdGVhZCAoYCMxNzIz
YF8pLgotCi0qIFJlbmFtZSBgYGdldGZ1bmNhcmd2YWx1ZWBgIHRvIGBgZ2V0Zml4dHVyZXZhbHVl
YGAuIGBgZ2V0ZnVuY2FyZ3ZhbHVlYGAgaXMKLSAgc3RpbGwgcHJlc2VudCBidXQgaXMgbm93IGNv
bnNpZGVyZWQgZGVwcmVjYXRlZC4gVGhhbmtzIHRvIGBAUmVkQmVhcmRDb2RlYF8gYW5kIGBAdG9t
dmluZXJgXwotICBmb3IgdGhlIFBSIChgIzE2MjZgXykuCi0KLSogYGBvcHRwYXJzZWBgIHR5cGUg
dXNhZ2Ugbm93IHRyaWdnZXJzIERlcHJlY2F0aW9uV2FybmluZ3MgKGAjMTc0MGBfKS4KLQotCi0q
IGBgb3B0cGFyc2VgYCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHN1cHBvcnRzIGZsb2F0L2NvbXBs
ZXggdHlwZXMgKGAjNDU3YF8pLgotCi0qIFJlZmluZWQgbG9naWMgZm9yIGRldGVybWluaW5nIHRo
ZSBgYHJvb3RkaXJgYCwgY29uc2lkZXJpbmcgb25seSB2YWxpZAotICBwYXRocyB3aGljaCBmaXhl
cyBhIG51bWJlciBvZiBpc3N1ZXM6IGAjMTU5NGBfLCBgIzE0MzVgXyBhbmQgYCMxNDcxYF8uCi0g
IFVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYWNjb3JkaW5nIHRvIGN1cnJlbnQgYmVoYXZpb3Iu
IFRoYW5rcyB0bwotICBgQGJsdWV5ZWRgXywgYEBkYXZlaHVudGBfIGFuZCBgQG1hdHRoaWFzaGFg
XyBmb3IgdGhlIFBSLgotCi0qIEFsd2F5cyBpbmNsdWRlIGZ1bGwgYXNzZXJ0aW9uIGV4cGxhbmF0
aW9uLiBUaGUgcHJldmlvdXMgYmVoYXZpb3VyIHdhcyBoaWRpbmcKLSAgc3ViLWV4cHJlc3Npb25z
IHRoYXQgaGFwcGVuZWQgdG8gYmUgRmFsc2UsIGFzc3VtaW5nIHRoaXMgd2FzIHJlZHVuZGFudCBp
bmZvcm1hdGlvbi4KLSAgVGhhbmtzIGBAYmFnZXJhcmRgXyBmb3IgcmVwb3J0aW5nIChgIzE1MDNg
XykuIFRoYW5rcyB0byBgQGRhdmVodW50YF8gYW5kCi0gIGBAdG9tdmluZXJgXyBmb3IgUFIuCi0K
LSogQmV0dGVyIG1lc3NhZ2UgaW4gY2FzZSBvZiBub3QgdXNpbmcgcGFyYW1ldHJpemVkIHZhcmlh
YmxlIChzZWUgYCMxNTM5YF8pLgotICBUaGFua3MgdG8gYEB0cmFtd2FqMjlgXyBmb3IgdGhlIFBS
LgotCi0qIFVwZGF0ZWQgZG9jc3RyaW5ncyB3aXRoIGEgbW9yZSB1bmlmb3JtIHN0eWxlLgotCi0q
IEFkZCBzdGRlcnIgd3JpdGUgZm9yIGBgcHl0ZXN0LmV4aXQobXNnKWBgIGR1cmluZyBzdGFydHVw
LiBQcmV2aW91c2x5IHRoZSBtZXNzYWdlIHdhcyBuZXZlciBzaG93bi4KLSAgVGhhbmtzIGBAQmV5
b25kRXZpbGBfIGZvciByZXBvcnRpbmcgYCMxMjEwYF8uIFRoYW5rcyB0byBgQEpvbmF0aG9uU29u
ZXNlbmBfIGFuZAotICBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KLQotKiBObyBsb25nZXIgZGlz
cGxheSB0aGUgaW5jb3JyZWN0IHRlc3QgZGVzZWxlY3Rpb24gcmVhc29uIChgIzEzNzJgXykuCi0g
IFRoYW5rcyBgQHJvbm55cGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUi4KLQotKiBUaGUgYGAtLXJl
c3VsdGxvZ2BgIGNvbW1hbmQgbGluZSBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZDogaXQgaXMg
bGl0dGxlIHVzZWQKLSAgYW5kIHRoZXJlIGFyZSBtb3JlIG1vZGVybiBhbmQgYmV0dGVyIGFsdGVy
bmF0aXZlcyAoc2VlIGAjODMwYF8pLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KLQotKiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2l0aCBmaXh0dXJlIGxvb2t1cCBlcnJvcnM6
IGFkZCBhbiAnRScgdG8gdGhlIGZpcnN0Ci0gIGxpbmUgYW5kICc+JyB0byB0aGUgcmVzdC4gRml4
ZXMgYCM3MTdgXy4gVGhhbmtzIGBAYmx1ZXllZGBfIGZvciByZXBvcnRpbmcgYW5kCi0gIGEgUFIs
IGBAZW9sbzk5OWBfIGZvciB0aGUgaW5pdGlhbCBQUiBhbmQgYEB0b212aW5lcmBfIGZvciBoaXMg
Z3VpZGFuY2UgZHVyaW5nCi0gIEV1cm9QeXRob24yMDE2IHNwcmludC4KLQotCi0qKkJ1ZyBGaXhl
cyoqCi0KLSogUGFyYW1ldHJpemUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGR1cGxpY2F0ZWQgdGVz
dCBpZHMuCi0KLSogRml4IGludGVybmFsIGVycm9yIGlzc3VlIHdoZW4gdGhlIGBgbWV0aG9kYGAg
YXJndW1lbnQgaXMgbWlzc2luZyBmb3IKLSAgYGB0ZWFyZG93bl9tZXRob2QoKWBgIChgIzE2MDVg
XykuCi0KLSogRml4IGV4Y2VwdGlvbiB2aXN1YWxpemF0aW9uIGluIGNhc2UgdGhlIGN1cnJlbnQg
d29ya2luZyBkaXJlY3RvcnkgKENXRCkgZ2V0cwotICBkZWxldGVkIGR1cmluZyB0ZXN0aW5nIChg
IzEyMzVgXykuIFRoYW5rcyBgQGJ1a3pvcmBfIGZvciByZXBvcnRpbmcuIFBSIGJ5Ci0gIGBAbWFy
c2NoZXJgXy4KLQotKiBJbXByb3ZlIHRlc3Qgb3V0cHV0IGZvciBsb2dpY2FsIGV4cHJlc3Npb24g
d2l0aCBicmFja2V0cyAoYCM5MjVgXykuCi0gIFRoYW5rcyBgQERSTWFjSXZlcmBfIGZvciByZXBv
cnRpbmcgYW5kIGBAUmVkQmVhcmRDb2RlYF8gZm9yIHRoZSBQUi4KLQotKiBDcmVhdGUgY29ycmVj
dCBkaWZmIGZvciBzdHJpbmdzIGVuZGluZyB3aXRoIG5ld2xpbmVzIChgIzE1NTNgXykuCi0gIFRo
YW5rcyBgQFZvZ3RpbmF0b3JgXyBmb3IgcmVwb3J0aW5nIGFuZCBgQFJlZEJlYXJkQ29kZWBfIGFu
ZAotICBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KLQotKiBgYENvbmZ0ZXN0SW1wb3J0RmFpbHVy
ZWBgIG5vdyBzaG93cyB0aGUgdHJhY2ViYWNrIG1ha2luZyBpdCBlYXNpZXIgdG8KLSAgaWRlbnRp
ZnkgYnVncyBpbiBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMgKGAjMTUxNmBfKS4gVGhhbmtzIGBAdHhv
bW9uYF8gZm9yCi0gIHRoZSBQUi4KLQotKiBUZXh0IGRvY3VtZW50cyB3aXRob3V0IGFueSBkb2N0
ZXN0cyBubyBsb25nZXIgYXBwZWFyIGFzICJza2lwcGVkIi4KLSAgVGhhbmtzIGBAZ3JhaW5nZXJ0
YF8gZm9yIHJlcG9ydGluZyBhbmQgcHJvdmlkaW5nIGEgZnVsbCBQUiAoYCMxNTgwYF8pLgotCi0q
IEZpeGVkIGNvbGxlY3Rpb24gb2YgY2xhc3NlcyB3aXRoIGN1c3RvbSBgYF9fbmV3X19gYCBtZXRo
b2QuCi0gIEZpeGVzIGAjMTU3OWBfLiBUaGFua3MgdG8gYEBTdHJhbmdlcjY2NjdgXyBmb3IgdGhl
IFBSLgotCi0qIEZpeGVkIHNjb3BlIG92ZXJyaWRpbmcgaW5zaWRlIG1ldGFmdW5jLnBhcmFtZXRy
aXplIChgIzYzNGBfKS4KLSAgVGhhbmtzIHRvIGBAU3RyYW5nZXI2NjY3YF8gZm9yIHRoZSBQUi4K
LQotKiBGaXhlZCB0aGUgdG90YWwgdGVzdHMgdGFsbHkgaW4ganVuaXQgeG1sIG91dHB1dCAoYCMx
Nzk4YF8pLgotICBUaGFua3MgdG8gYEBjcnlwb3JjaGlsZGBfIGZvciB0aGUgUFIuCi0KLSogRml4
ZWQgb2ZmLWJ5LW9uZSBlcnJvciB3aXRoIGxpbmVzIGZyb20gYGByZXF1ZXN0Lm5vZGUud2FybmBg
LgotICBUaGFua3MgdG8gYEBibHVleWVkYF8gZm9yIHRoZSBQUi4KLQotCi0uLiBfIzEyMTA6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTIxMAotLi4gXyMxMjM1
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEyMzUKLS4uIF8j
MTM1MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzUxCi0u
LiBfIzEzNzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM3
MgotLi4gXyMxNDIxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzE0MjEKLS4uIF8jMTQyNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNDI2Ci0uLiBfIzE0Mjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9wdWxsLzE0MjgKLS4uIF8jMTQzNTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xNDM1Ci0uLiBfIzE0NDE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9wdWxsLzE0NDEKLS4uIF8jMTQ0NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L3B1bGwvMTQ0NAotLi4gXyMxNDU0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvcHVsbC8xNDU0Ci0uLiBfIzE0NjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9wdWxsLzE0NjEKLS4uIF8jMTQ2ODogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ2OAotLi4gXyMxNDcxOiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0NzEKLS4uIF8jMTQ3NDogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ3NAotLi4gXyMxNDc5OiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0NzkKLS4uIF8jMTUwMjogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUwMgotLi4gXyMxNTAzOiBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1MDMKLS4uIF8jMTUxNjogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUxNgotLi4gXyMxNTE5OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTE5Ci0uLiBfIzE1MjA6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MjAKLS4uIF8jMTUy
NjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUyNgotLi4gXyMx
NTM5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1MzkKLS4u
IF8jMTU0NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTQ0
Ci0uLiBfIzE1NDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTU0NgotLi4gXyMxNTUzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE1NTMKLS4uIF8jMTU2MjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xNTYyCi0uLiBfIzE1Nzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMTU3OQotLi4gXyMxNTgwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvcHVsbC8xNTgwCi0uLiBfIzE1OTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTU5NAotLi4gXyMxNTk3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvcHVsbC8xNTk3Ci0uLiBfIzE2MDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYwNQotLi4gXyMxNjE2OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjE2Ci0uLiBfIzE2MTg6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYxOAotLi4gXyMxNjE5OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2MTkKLS4uIF8jMTYyNjogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTYyNgotLi4gXyMxNjI3OiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjI3Ci0uLiBfIzE2Mjg6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE2MjgKLS4uIF8jMTYyOTog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjI5Ci0uLiBfIzE2
MzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYzMgotLi4g
XyMxNjMzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjMzCi0u
LiBfIzE2NjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE2NjQK
LS4uIF8jMTY2ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8x
NjY4Ci0uLiBfIzE2ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxs
LzE2ODQKLS4uIF8jMTcyMzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1
bGwvMTcyMwotLi4gXyMxNzQwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzE3NDAKLS4uIF8jMTc0OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xNzQ5Ci0uLiBfIzE3Nzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9wdWxsLzE3NzgKLS4uIF8jMTc5NTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L3B1bGwvMTc5NQotLi4gXyMxNzk4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvcHVsbC8xNzk4Ci0uLiBfIzE4MDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9wdWxsLzE4MDkKLS4uIF8jMzcyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3MgotLi4gXyM0NTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU3Ci0uLiBfIzQ2MDogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvNDYwCi0uLiBfIzU2NzogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvNTY3Ci0uLiBfIzYwNzogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MDcKLS4uIF8jNjM0OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYzNAotLi4gXyM3MTc6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE3Ci0uLiBfIzgzMDogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy84MzAKLS4uIF8jOTI1OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzkyNQotCi0KLS4uIF9AYW5udHplcjog
aHR0cHM6Ly9naXRodWIuY29tL2FubnR6ZXIKLS4uIF9AYmFnZXJhcmQ6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9iYWdlcmFyZAotLi4gX0BCZXlvbmRFdmlsOiBodHRwczovL2dpdGh1Yi5jb20vQmV5b25k
RXZpbAotLi4gX0BibHVleWVkOiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZXllZAotLi4gX0BjZXJp
ZHdlbjogaHR0cHM6Ly9naXRodWIuY29tL2Nlcmlkd2VuCi0uLiBfQGNyeXBvcmNoaWxkOiBodHRw
czovL2dpdGh1Yi5jb20vY3J5cG9yY2hpbGQKLS4uIF9AY3NhZnRvaXU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9jc2FmdG9pdQotLi4gX0BkNmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kNmUKLS4uIF9AZGF2
ZWh1bnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlaHVudAotLi4gX0BEUk1hY0l2ZXI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9EUk1hY0l2ZXIKLS4uIF9AZW9sbzk5OTogaHR0cHM6Ly9naXRodWIuY29t
L2VvbG85OTkKLS4uIF9AZmVuZ3h4OiBodHRwczovL2dpdGh1Yi5jb20vZmVuZ3h4Ci0uLiBfQGZs
dWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbHViCi0uLiBfQGdwcmFzYWQ4NDogaHR0cHM6Ly9naXRo
dWIuY29tL2dwcmFzYWQ4NAotLi4gX0BncmFpbmdlcnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFp
bmdlcnQKLS4uIF9AaGFydHltOiBodHRwczovL2dpdGh1Yi5jb20vaGFydHltCi0uLiBfQEpvbmF0
aG9uU29uZXNlbjogaHR0cHM6Ly9naXRodWIuY29tL0pvbmF0aG9uU29uZXNlbgotLi4gX0BrYWxl
a3VuZGVydDogaHR0cHM6Ly9naXRodWIuY29tL2thbGVrdW5kZXJ0Ci0uLiBfQGt2YXMtaXQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9rdmFzLWl0Ci0uLiBfQG1hcnNjaGVyOiBodHRwczovL2dpdGh1Yi5j
b20vbWFyc2NoZXIKLS4uIF9AbWlrb2Zza2k6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWtvZnNraQot
Li4gX0BtaWxsaWFtczogaHR0cHM6Ly9naXRodWIuY29tL21pbGxpYW1zCi0uLiBfQG5pa3JhdGlv
OiBodHRwczovL2dpdGh1Yi5jb20vbmlrcmF0aW8KLS4uIF9Abm92YXMweDJhOiBodHRwczovL2dp
dGh1Yi5jb20vbm92YXMweDJhCi0uLiBfQG9iZXN0d2FsdGVyOiBodHRwczovL2dpdGh1Yi5jb20v
b2Jlc3R3YWx0ZXIKLS4uIF9Ab2trZW46IGh0dHBzOi8vZ2l0aHViLmNvbS9va2tlbgotLi4gX0Bv
bGVncGlkc2FkbnlpOiBodHRwczovL2dpdGh1Yi5jb20vb2xlZ3BpZHNhZG55aQotLi4gX0BvbWFy
a29obDogaHR0cHM6Ly9naXRodWIuY29tL29tYXJrb2hsCi0uLiBfQHBhbGF2aXY6IGh0dHBzOi8v
Z2l0aHViLmNvbS9wYWxhdml2Ci0uLiBfQFJlZEJlYXJkQ29kZTogaHR0cHM6Ly9naXRodWIuY29t
L1JlZEJlYXJkQ29kZQotLi4gX0BzYWxsbmVyOiBodHRwczovL2dpdGh1Yi5jb20vc2FsbG5lcgot
Li4gX0Bzb2Jlcjc6IGh0dHBzOi8vZ2l0aHViLmNvbS9zb2JlcjcKLS4uIF9AU3RyYW5nZXI2NjY3
OiBodHRwczovL2dpdGh1Yi5jb20vU3RyYW5nZXI2NjY3Ci0uLiBfQHN1emFrdTogaHR0cHM6Ly9n
aXRodWIuY29tL3N1emFrdQotLi4gX0B0YXJlcWFsYXlhbjogaHR0cHM6Ly9naXRodWIuY29tL3Rh
cmVxYWxheWFuCi0uLiBfQHRhc2NoaW5pOiBodHRwczovL2dpdGh1Yi5jb20vdGFzY2hpbmkKLS4u
IF9AdHJhbXdhajI5OiBodHRwczovL2dpdGh1Yi5jb20vdHJhbXdhajI5Ci0uLiBfQHR4b21vbjog
aHR0cHM6Ly9naXRodWIuY29tL3R4b21vbgotLi4gX0BWb2d0aW5hdG9yOiBodHRwczovL2dpdGh1
Yi5jb20vVm9ndGluYXRvcgotLi4gX0BtYXR0aGlhc2hhOiBodHRwczovL2dpdGh1Yi5jb20vbWF0
dGhpYXNoYQotCi0KLTIuOS4yICgyMDE2LTA1LTMxKQotPT09PT09PT09PT09PT09PT09Ci0KLSoq
QnVnIEZpeGVzKioKLQotKiBmaXggYCM1MTBgXzogc2tpcCB0ZXN0cyB3aGVyZSBvbmUgcGFyYW1l
dGVyaXplIGRpbWVuc2lvbiB3YXMgZW1wdHkKLSAgdGhhbmtzIEFsZXggU3RhcGxldG9uIGZvciB0
aGUgUmVwb3J0IGFuZCBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUgotCi0qIEZpeCBY
ZmFpbCBkb2VzIG5vdCB3b3JrIHdpdGggY29uZGl0aW9uIGtleXdvcmQgYXJndW1lbnQuCi0gIFRo
YW5rcyBgQGFzdHJhdzM4YF8gZm9yIHJlcG9ydGluZyB0aGUgaXNzdWUgKGAjMTQ5NmBfKSBhbmQg
YEB0b212aW5lcmBfCi0gIGZvciBQUiB0aGUgKGAjMTUyNGBfKS4KLQotKiBGaXggd2luMzIgcGF0
aCBpc3N1ZSB3aGVuIHB1dHRpbmcgY3VzdG9tIGNvbmZpZyBmaWxlIHdpdGggYWJzb2x1dGUgcGF0
aAotICBpbiBgYHB5dGVzdC5tYWluKCItYyB5b3VyX2Fic29sdXRlX3BhdGgiKWBgLgotCi0qIEZp
eCBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBkZXRlY3Rpb24gd2hlbiByYWlzZWQgZXJyb3IgY2xh
c3MgaXMgbm90IGF3YXJlCi0gIG9mIHVuaWNvZGUvZW5jb2RlZCBieXRlcy4KLSAgVGhhbmtzIGBA
cHJ1c3NlLW1hcnRpbmBfIGZvciB0aGUgUFIgKGAjMTUwNmBfKS4KLQotKiBGaXggYGBweXRlc3Qu
bWFyay5za2lwYGAgbWFyayB3aGVuIHVzZWQgaW4gc3RyaWN0IG1vZGUuCi0gIFRoYW5rcyBgQHBx
dWVudGluYF8gZm9yIHRoZSBQUiBhbmQgYEBSb25ueVBmYW5uc2NobWlkdGBfIGZvcgotICBzaG93
aW5nIGhvdyB0byBmaXggdGhlIGJ1Zy4KLQotKiBNaW5vciBpbXByb3ZlbWVudHMgYW5kIGZpeGVz
IHRvIHRoZSBkb2N1bWVudGF0aW9uLgotICBUaGFua3MgYEBvbWFya29obGBfIGZvciB0aGUgUFIu
Ci0KLSogRml4IGBgLS1maXh0dXJlc2BgIHRvIHNob3cgYWxsIGZpeHR1cmUgZGVmaW5pdGlvbnMg
YXMgb3Bwb3NlZCB0byBqdXN0Ci0gIG9uZSBwZXIgZml4dHVyZSBuYW1lLgotICBUaGFua3MgdG8g
YEBoYWNrZWJyb3RgXyBmb3IgdGhlIFBSLgotCi0uLiBfIzUxMDogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTAKLS4uIF8jMTUwNjogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUwNgotLi4gXyMxNDk2OiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0OTYKLS4uIF8jMTUyNDogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUyNAotCi0uLiBfQHBydXNzZS1tYXJ0
aW46IGh0dHBzOi8vZ2l0aHViLmNvbS9wcnVzc2UtbWFydGluCi0uLiBfQGFzdHJhdzM4OiBodHRw
czovL2dpdGh1Yi5jb20vYXN0cmF3MzgKLQotCi0yLjkuMSAoMjAxNi0wMy0xNykKLT09PT09PT09
PT09PT09PT09PQotCi0qKkJ1ZyBGaXhlcyoqCi0KLSogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdo
ZW4gYSBwbHVnaW4gZmFpbHMgdG8gbG9hZC4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0
aGUgUFIuCi0KLSogRml4IChgIzExNzggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMTE3OD5gXyk6Ci0gIGBgcHl0ZXN0LmZhaWxgYCB3aXRoIG5vbi1hc2NpaSBj
aGFyYWN0ZXJzIHJhaXNlcyBhbiBpbnRlcm5hbCBweXRlc3QgZXJyb3IuCi0gIFRoYW5rcyBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCAoYCM0NjlgXyk6IGp1bml0IHBhcnNlcyBy
ZXBvcnQubm9kZWlkIGluY29ycmVjdGx5LCB3aGVuIHBhcmFtcyBJRHMKLSAgY29udGFpbiBgYDo6
YGAuIFRoYW5rcyBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUiAoYCMxNDMxYF8pLgotCi0qIEZpeCAo
YCM1NzggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTc4PmBf
KTogU3ludGF4RXJyb3JzCi0gIGNvbnRhaW5pbmcgbm9uLWFzY2lpIGxpbmVzIGF0IHRoZSBwb2lu
dCBvZiBmYWlsdXJlIGdlbmVyYXRlZCBhbiBpbnRlcm5hbAotICBweS50ZXN0IGVycm9yLgotICBU
aGFua3MgYEBhc290dGlsZWBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgotCi0qIEZpeCAoYCMxNDM3YF8pOiBXaGVuIHBhc3NpbmcgaW4gYSBieXRlc3RyaW5n
IHJlZ2V4IHBhdHRlcm4gdG8gcGFyYW1ldGVyaXplCi0gIGF0dGVtcHQgdG8gZGVjb2RlIGl0IGFz
IHV0Zi04IGlnbm9yaW5nIGVycm9ycy4KLQotKiBGaXggKGAjNjQ5YF8pOiBwYXJhbWV0cml6ZWQg
dGVzdCBub2RlcyBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvIHJ1biBvbiB0aGUgY29tbWFuZCBsaW5l
LgotCi0qIEZpeCAoYCMxMzhgXyk6IGJldHRlciByZXBvcnRpbmcgZm9yIHB5dGhvbiAzLjMrIGNo
YWluZWQgZXhjZXB0aW9ucwotCi0uLiBfIzE0Mzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTQzNwotLi4gXyM0Njk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY5Ci0uLiBfIzE0MzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE0MzEKLS4uIF8jNjQ5OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0OQotLi4gXyMxMzg6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM4Ci0KLS4uIF9AYXNvdHRpbGU6IGh0dHBzOi8v
Z2l0aHViLmNvbS9hc290dGlsZQotCi0KLTIuOS4wICgyMDE2LTAyLTI5KQotPT09PT09PT09PT09
PT09PT09Ci0KLSoqTmV3IEZlYXR1cmVzKioKLQotKiBOZXcgYGBweXRlc3QubWFyay5za2lwYGAg
bWFyaywgd2hpY2ggdW5jb25kaXRpb25hbGx5IHNraXBzIG1hcmtlZCB0ZXN0cy4KLSAgVGhhbmtz
IGBATWljaGFlbEFxdWlsaW5hYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxMDQwYF8pLgotCi0q
IGBgLS1kb2N0ZXN0LWdsb2JgYCBtYXkgbm93IGJlIHBhc3NlZCBtdWx0aXBsZSB0aW1lcyBpbiB0
aGUgY29tbWFuZC1saW5lLgotICBUaGFua3MgYEBqYWJgXyBhbmQgYEBuaWNvZGRlbXVzYF8gZm9y
IHRoZSBQUi4KLQotKiBOZXcgYGAtcnBgYCBhbmQgYGAtclBgYCByZXBvcnRpbmcgb3B0aW9ucyBn
aXZlIHRoZSBzdW1tYXJ5IGFuZCBmdWxsIG91dHB1dAotICBvZiBwYXNzaW5nIHRlc3RzLCByZXNw
ZWN0aXZlbHkuIFRoYW5rcyB0byBgQGNvZGV3YXJyaW9yMGBfIGZvciB0aGUgUFIuCi0KLSogYGBw
eXRlc3QubWFyay54ZmFpbGBgIG5vdyBoYXMgYSBgYHN0cmljdGBgIG9wdGlvbiwgd2hpY2ggbWFr
ZXMgYGBYUEFTU2BgCi0gIHRlc3RzIHRvIGZhaWwgdGhlIHRlc3Qgc3VpdGUgKGRlZmF1bHRpbmcg
dG8gYGBGYWxzZWBgKS4gVGhlcmUncyBhbHNvIGEKLSAgYGB4ZmFpbF9zdHJpY3RgYCBpbmkgb3B0
aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGl0IHByb2plY3Qtd2lzZS4KLSAgVGhh
bmtzIGBAcmFiYmJpdGBfIGZvciB0aGUgcmVxdWVzdCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRo
ZSBQUiAoYCMxMzU1YF8pLgotCi0qIGBgUGFyc2VyLmFkZGluaWBgIG5vdyBzdXBwb3J0cyBvcHRp
b25zIG9mIHR5cGUgYGBib29sYGAuCi0gIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBS
LgotCi0qIE5ldyBgYEFMTE9XX0JZVEVTYGAgZG9jdGVzdCBvcHRpb24uIFRoaXMgc3RyaXBzIGBg
YmBgIHByZWZpeGVzIGZyb20gYnl0ZSBzdHJpbmdzCi0gIGluIGRvY3Rlc3Qgb3V0cHV0IChzaW1p
bGFyIHRvIGBgQUxMT1dfVU5JQ09ERWBgKS4KLSAgVGhhbmtzIGBAamFyYWNvYF8gZm9yIHRoZSBy
ZXF1ZXN0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSIChgIzEyODdgXykuCi0KLSogR2l2
ZSBhIGhpbnQgb24gYGBLZXlib2FyZEludGVycnVwdGBgIHRvIHVzZSB0aGUgYGAtLWZ1bGx0cmFj
ZWBgIG9wdGlvbiB0byBzaG93IHRoZSBlcnJvcnMuCi0gIEZpeGVzIGAjMTM2NmBfLgotICBUaGFu
a3MgdG8gYEBocGs0MmBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQFJvbm55UGZhbm5zY2htaWR0YF8g
Zm9yIHRoZSBQUi4KLQotKiBDYXRjaCBgYEluZGV4RXJyb3JgYCBleGNlcHRpb25zIHdoZW4gZ2V0
dGluZyBleGNlcHRpb24gc291cmNlIGxvY2F0aW9uLgotICBGaXhlcyBhIHB5dGVzdCBpbnRlcm5h
bCBlcnJvciBmb3IgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGNvZGUgKGZpeHR1cmVzIGFuZCB0ZXN0
cykKLSAgd2hlcmUgc291cmNlIGxpbmVzIGFyZSBmYWtlIGJ5IGludGVudGlvbi4KLQotKipDaGFu
Z2VzKioKLQotKiAqKkltcG9ydGFudCoqOiBgcHkuY29kZSA8aHR0cHM6Ly9weWxpYi5yZWFkdGhl
ZG9jcy5pby9lbi9sYXRlc3QvY29kZS5odG1sPmBfIGhhcyBiZWVuCi0gIG1lcmdlZCBpbnRvIHRo
ZSBgYHB5dGVzdGBgIHJlcG9zaXRvcnkgYXMgYGBweXRlc3QuX2NvZGVgYC4gVGhpcyBkZWNpc2lv
bgotICB3YXMgbWFkZSBiZWNhdXNlIGBgcHkuY29kZWBgIGhhZCB2ZXJ5IGZldyB1c2VzIG91dHNp
ZGUgYGBweXRlc3RgYCBhbmQgdGhlCi0gIGZhY3QgdGhhdCBpdCB3YXMgaW4gYSBkaWZmZXJlbnQg
cmVwb3NpdG9yeSBtYWRlIGl0IGRpZmZpY3VsdCB0byBmaXggYnVncyBvbgotICBpdHMgY29kZSBp
biBhIHRpbWVseSBtYW5uZXIuIFRoZSB0ZWFtIGhvcGVzIHdpdGggdGhpcyB0byBiZSBhYmxlIHRv
IGJldHRlcgotICByZWZhY3RvciBvdXQgYW5kIGltcHJvdmUgdGhhdCBjb2RlLgotICBUaGlzIGNo
YW5nZSBzaG91bGRuJ3QgYWZmZWN0IHVzZXJzLCBidXQgaXQgaXMgdXNlZnVsIHRvIGxldCB1c2Vy
cyBhd2FyZQotICBpZiB0aGV5IGVuY291bnRlciBhbnkgc3RyYW5nZSBiZWhhdmlvci4KLQotICBL
ZWVwIGluIG1pbmQgdGhhdCB0aGUgY29kZSBmb3IgYGBweXRlc3QuX2NvZGVgYCBpcyAqKnByaXZh
dGUqKiBhbmQKLSAgKipleHBlcmltZW50YWwqKiwgc28geW91IGRlZmluaXRlbHkgc2hvdWxkIG5v
dCBpbXBvcnQgaXQgZXhwbGljaXRseSEKLQotICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBvcmlnaW5h
bCBgYHB5LmNvZGVgYCBpcyBzdGlsbCBhdmFpbGFibGUgaW4KLSAgYHB5bGliIDxodHRwczovL3B5
bGliLnJlYWR0aGVkb2NzLmlvPmBfLgotCi0qIGBgcHl0ZXN0X2VudGVyX3BkYmBgIG5vdyBvcHRp
b25hbGx5IHJlY2VpdmVzIHRoZSBweXRlc3QgY29uZmlnIG9iamVjdC4KLSAgVGhhbmtzIGBAbmlj
b2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogUmVtb3ZlZCBjb2RlIGFuZCBkb2N1bWVudGF0aW9u
IGZvciBQeXRob24gMi41IG9yIGxvd2VyIHZlcnNpb25zLAotICBpbmNsdWRpbmcgcmVtb3ZhbCBv
ZiB0aGUgb2Jzb2xldGUgYGBfcHl0ZXN0LmFzc2VydGlvbi5vbGRpbnRlcnByZXRgYCBtb2R1bGUu
Ci0gIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSIChgIzEyMjZgXykuCi0KLSogQ29t
cGFyaXNvbnMgbm93IGFsd2F5cyBzaG93IHVwIGluIGZ1bGwgd2hlbiBgYENJYGAgb3IgYGBCVUlM
RF9OVU1CRVJgYCBpcwotICBmb3VuZCBpbiB0aGUgZW52aXJvbm1lbnQsIGV2ZW4gd2hlbiBgYC12
dmBgIGlzbid0IHVzZWQuCi0gIFRoYW5rcyBgQFRoZS1Db21waWxlcmBfIGZvciB0aGUgUFIuCi0K
LSogYGAtLWxmYGAgYW5kIGBgLS1mZmBgIG5vdyBzdXBwb3J0IGxvbmcgbmFtZXM6IGBgLS1sYXN0
LWZhaWxlZGBgIGFuZAotICBgYC0tZmFpbGVkLWZpcnN0YGAgcmVzcGVjdGl2ZWx5LgotICBUaGFu
a3MgYEBNaWNoYWVsQXF1aWxpbmFgXyBmb3IgdGhlIFBSLgotCi0qIEFkZGVkIGV4cGVjdGVkIGV4
Y2VwdGlvbnMgdG8gYGBweXRlc3QucmFpc2VzYGAgZmFpbCBtZXNzYWdlLgotCi0qIENvbGxlY3Rp
b24gb25seSBkaXNwbGF5cyBwcm9ncmVzcyAoImNvbGxlY3RpbmcgWCBpdGVtcyIpIHdoZW4gaW4g
YSB0ZXJtaW5hbC4KLSAgVGhpcyBhdm9pZHMgY2x1dHRlcmluZyB0aGUgb3V0cHV0IHdoZW4gdXNp
bmcgYGAtLWNvbG9yPXllc2BgIHRvIG9idGFpbgotICBjb2xvcnMgaW4gQ0kgaW50ZWdyYXRpb25z
IHN5c3RlbXMgKGAjMTM5N2BfKS4KLQotKipCdWcgRml4ZXMqKgotCi0qIFRoZSBgYC1zYGAgYW5k
IGBgLWNgYCBvcHRpb25zIHNob3VsZCBub3cgd29yayB1bmRlciBgYHhkaXN0YGA7Ci0gIGBgQ29u
ZmlnLmZyb21kaWN0YXJnc2BgIG5vdyByZXByZXNlbnRzIGl0cyBpbnB1dCBtdWNoIG1vcmUgZmFp
dGhmdWxseS4KLSAgVGhhbmtzIHRvIGBAYnVrem9yYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCM2
ODBgXykuCi0KLSogRml4IChgIzEyOTBgXyk6IHN1cHBvcnQgUHl0aG9uIDMuNSdzIGBgQGBgIG9w
ZXJhdG9yIGluIGFzc2VydGlvbiByZXdyaXRpbmcuCi0gIFRoYW5rcyBgQFNoaW5rZW5qb2VgXyBm
b3IgcmVwb3J0IHdpdGggdGVzdCBjYXNlIGFuZCBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KLQot
KiBGaXggZm9ybWF0dGluZyB1dGYtOCBleHBsYW5hdGlvbiBtZXNzYWdlcyAoYCMxMzc5YF8pLgot
ICBUaGFua3MgYEBiaWVybmBfIGZvciB0aGUgUFIuCi0KLSogRml4IGB0cmFjZWJhY2sgc3R5bGUg
ZG9jc2BfIHRvIGRlc2NyaWJlIGFsbCBvZiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMKLSAgKGF1dG8v
bG9uZy9zaG9ydC9saW5lL25hdGl2ZS9ubyksIHdpdGggYGBhdXRvYGAgYmVpbmcgdGhlIGRlZmF1
bHQgc2luY2UgdjIuNi4KLSAgVGhhbmtzIGBAaGFja2Vicm90YF8gZm9yIHRoZSBQUi4KLQotKiBG
aXggKGAjMTQyMmBfKToganVuaXQgcmVjb3JkX3htbF9wcm9wZXJ0eSBkb2Vzbid0IGFsbG93IG11
bHRpcGxlIHJlY29yZHMKLSAgd2l0aCBzYW1lIG5hbWUuCi0KLS4uIF9gdHJhY2ViYWNrIHN0eWxl
IGRvY3NgOiBodHRwczovL3B5dGVzdC5vcmcvbGF0ZXN0L3VzYWdlLmh0bWwjbW9kaWZ5aW5nLXB5
dGhvbi10cmFjZWJhY2stcHJpbnRpbmcKLQotLi4gXyMxNjA5OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2MDkKLS4uIF8jMTQyMjogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDIyCi0uLiBfIzEzNzk6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM3OQotLi4gXyMxMzY2OiBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEzNjYKLS4uIF8jMTA0MDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTA0MAotLi4gXyM2ODA6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjgwCi0uLiBfIzEyODc6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzEyODcKLS4uIF8jMTIy
NjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTIyNgotLi4gXyMx
MjkwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xMjkwCi0uLiBf
IzEzNTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzEzNTUKLS4u
IF8jMTM5NzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzk3
Ci0uLiBfQGJpZXJuOiBodHRwczovL2dpdGh1Yi5jb20vYmllcm4KLS4uIF9ATWljaGFlbEFxdWls
aW5hOiBodHRwczovL2dpdGh1Yi5jb20vTWljaGFlbEFxdWlsaW5hCi0uLiBfQGJ1a3pvcjogaHR0
cHM6Ly9naXRodWIuY29tL2J1a3pvcgotLi4gX0BocGs0MjogaHR0cHM6Ly9naXRodWIuY29tL2hw
azQyCi0uLiBfQG5pY29kZGVtdXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvZGRlbXVzCi0uLiBf
QGphYjogaHR0cHM6Ly9naXRodWIuY29tL2phYgotLi4gX0Bjb2Rld2FycmlvcjA6IGh0dHBzOi8v
Z2l0aHViLmNvbS9jb2Rld2FycmlvcjAKLS4uIF9AamFyYWNvOiBodHRwczovL2dpdGh1Yi5jb20v
amFyYWNvCi0uLiBfQFRoZS1Db21waWxlcjogaHR0cHM6Ly9naXRodWIuY29tL1RoZS1Db21waWxl
cgotLi4gX0BTaGlua2Vuam9lOiBodHRwczovL2dpdGh1Yi5jb20vU2hpbmtlbmpvZQotLi4gX0B0
b212aW5lcjogaHR0cHM6Ly9naXRodWIuY29tL3RvbXZpbmVyCi0uLiBfQFJvbm55UGZhbm5zY2ht
aWR0OiBodHRwczovL2dpdGh1Yi5jb20vUm9ubnlQZmFubnNjaG1pZHQKLS4uIF9AcmFiYmJpdDog
aHR0cHM6Ly9naXRodWIuY29tL3JhYmJiaXQKLS4uIF9AaGFja2Vicm90OiBodHRwczovL2dpdGh1
Yi5jb20vaGFja2Vicm90Ci0uLiBfQHBxdWVudGluOiBodHRwczovL2dpdGh1Yi5jb20vcHF1ZW50
aW4KLS4uIF9AaW9nZ3N0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL2lvZ2dzdHJlYW0KLQotMi44
LjcgKDIwMTYtMDEtMjQpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggIzEzMzg6IHVzZSBw
cmVkaWN0YWJsZSBvYmplY3QgcmVzb2x1dGlvbiBmb3IgbW9ua2V5cGF0Y2gKLQotMi44LjYgKDIw
MTYtMDEtMjEpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggIzEyNTk6IGFsbG93IGZvciBk
b3VibGUgbm9kZWlkcyBpbiBqdW5pdHhtbCwKLSAgdGhpcyB3YXMgYSByZWdyZXNzaW9uIGZhaWxp
bmcgcGx1Z2lucyBjb21iaW5hdGlvbnMKLSAgbGlrZSBweXRlc3QtcGVwOCArIHB5dGVzdC1mbGFr
ZXMKLQotLSBXb3JrYXJvdW5kIGZvciBleGNlcHRpb24gdGhhdCBvY2N1cnMgaW4gcHlyZWFkbGlu
ZSB3aGVuIHVzaW5nCi0gIGBgLS1wZGJgYCB3aXRoIHN0YW5kYXJkIEkvTyBjYXB0dXJlIGVuYWJs
ZWQuCi0gIFRoYW5rcyBFcmlrIE0uIEJyYXkgZm9yIHRoZSBQUi4KLQotLSBmaXggIzkwMDogQmV0
dGVyIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSB0aGUgdGFyZ2V0IG9mIGEgYGBtb25rZXlwYXRjaGBg
IGNhbGwKLSAgcmFpc2VzIGFuIGBgSW1wb3J0RXJyb3JgYC4KLQotLSBmaXggIzEyOTI6IG1vbmtl
eXBhdGNoIGNhbGxzIChzZXRhdHRyLCBzZXRlbnYsIGV0Yy4pIGFyZSBub3cgTygxKS4KLSAgVGhh
bmtzIERhdmlkIFIuIE1hY0l2ZXIgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZv
ciB0aGUgUFIuCi0KLS0gZml4ICMxMjIzOiBjYXB0dXJlZCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUg
bm93IHByb3Blcmx5IGRpc3BsYXllZCBiZWZvcmUKLSAgZW50ZXJpbmcgcGRiIHdoZW4gYGAtLXBk
YmBgIGlzIHVzZWQgaW5zdGVhZCBvZiBiZWluZyB0aHJvd24gYXdheS4KLSAgVGhhbmtzIENhbCBM
ZWVtaW5nIGZvciB0aGUgUFIuCi0KLS0gZml4ICMxMzA1OiBweXRlc3Qgd2FybmluZ3MgZW1pdHRl
ZCBkdXJpbmcgYGBweXRlc3RfdGVybWluYWxfc3VtbWFyeWBgIGFyZSBub3cKLSAgcHJvcGVybHkg
ZGlzcGxheWVkLgotICBUaGFua3MgSW9uZWwgTWFyaWVzIENyaXN0aWFuIGZvciB0aGUgcmVwb3J0
IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZpeCAjNjI4OiBmaXhlZCBpbnRl
cm5hbCBVbmljb2RlRGVjb2RlRXJyb3Igd2hlbiBkb2N0ZXN0cyBjb250YWluIHVuaWNvZGUuCi0g
IFRoYW5rcyBKYXNvbiBSLiBDb29tYnMgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJh
IGZvciB0aGUgUFIuCi0KLS0gZml4ICMxMzM0OiBBZGQgY2FwdHVyZWQgc3Rkb3V0IHRvIGpVbml0
IFhNTCByZXBvcnQgb24gc2V0dXAgZXJyb3IuCi0gIFRoYW5rcyBHZW9yZ3kgRHl1bGRpbiBmb3Ig
dGhlIFBSLgotCi0KLTIuOC41ICgyMDE1LTEyLTExKQotPT09PT09PT09PT09PT09PT09Ci0KLS0g
Zml4ICMxMjQzOiBmaXhlZCBpc3N1ZSB3aGVyZSBjbGFzcyBhdHRyaWJ1dGVzIGluamVjdGVkIGR1
cmluZyBjb2xsZWN0aW9uIGNvdWxkIGJyZWFrIHB5dGVzdC4KLSAgUFIgYnkgQWxleGVpIEtvemxl
bm9rLCB0aGFua3MgUm9ubnkgUGZhbm5zY2htaWR0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhl
IHJldmlldyBhbmQgaGVscC4KLQotLSBmaXggIzEwNzQ6IHByZWNvbXB1dGUganVuaXR4bWwgY2h1
bmtzIGluc3RlYWQgb2Ygc3RvcmluZyB0aGUgd2hvbGUgdHJlZSBpbiBvYmplY3RzCi0gIFRoYW5r
cyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIHJlcG9ydCBhbmQgUm9ubnkgUGZhbm5zY2htaWR0IGZv
ciB0aGUgUFIKLQotLSBmaXggIzEyMzg6IGZpeCBgYHB5dGVzdC5kZXByZWNhdGVkX2NhbGwoKWBg
IHJlY2VpdmluZyBtdWx0aXBsZSBhcmd1bWVudHMKLSAgKFJlZ3Jlc3Npb24gaW50cm9kdWNlZCBp
biAyLjguNCkuIFRoYW5rcyBBbGV4IEdheW5vciBmb3IgdGhlIHJlcG9ydCBhbmQKLSAgQnJ1bm8g
T2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotCi0yLjguNCAoMjAxNS0xMi0wNikKLT09PT09PT09PT09
PT09PT09PQotCi0tIGZpeCAjMTE5MDogYGBkZXByZWNhdGVkX2NhbGwoKWBgIG5vdyB3b3JrcyB3
aGVuIHRoZSBkZXByZWNhdGVkCi0gIGZ1bmN0aW9uIGhhcyBiZWVuIGFscmVhZHkgY2FsbGVkIGJ5
IGFub3RoZXIgdGVzdCBpbiB0aGUgc2FtZQotICBtb2R1bGUuIFRoYW5rcyBNaWtoYWlsIENoZXJu
eWtoIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlCi0gIFBSLgotCi0t
IGZpeCAjMTE5ODogYGAtLXBhc3RlYmluYGAgb3B0aW9uIG5vdyB3b3JrcyBvbiBQeXRob24gMy4g
VGhhbmtzCi0gIE1laGR5IEtob3Nobm9vZHkgZm9yIHRoZSBQUi4KLQotLSBmaXggIzEyMTk6IGBg
LS1wYXN0ZWJpbmBgIG5vdyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBjYXB0dXJlZCBvdXRwdXQgY29u
dGFpbnMKLSAgbm9uLWFzY2lpIGNoYXJhY3RlcnMuIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3Ig
dGhlIFBSLgotCi0tIGZpeCAjMTIwNDogYW5vdGhlciBlcnJvciB3aGVuIGNvbGxlY3Rpbmcgd2l0
aCBhIG5hc3R5IF9fZ2V0YXR0cl9fKCkuCi0gIFRoYW5rcyBGbG9yaWFuIEJydWhpbiBmb3IgdGhl
IFBSLgotCi0tIGZpeCB0aGUgc3VtbWFyeSBwcmludGVkIHdoZW4gbm8gdGVzdHMgZGlkIHJ1bi4K
LSAgVGhhbmtzIEZsb3JpYW4gQnJ1aGluIGZvciB0aGUgUFIuCi0tIGZpeCAjMTE4NSAtIGVuc3Vy
ZSBNQU5JRkVTVC5pbiBleGFjdGx5IG1hdGNoZXMgd2hhdCBzaG91bGQgZ28gdG8gYSBzZGlzdAot
Ci0tIGEgbnVtYmVyIG9mIGRvY3VtZW50YXRpb24gbW9kZXJuaXphdGlvbnMgd3J0IGdvb2QgcHJh
Y3RpY2VzLgotICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotMi44LjMgKDIw
MTUtMTEtMTgpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggIzExNjk6IGFkZCBfX25hbWVf
XyBhdHRyaWJ1dGUgdG8gdGVzdGNhc2VzIGluIFRlc3RDYXNlRnVuY3Rpb24gdG8KLSAgc3VwcG9y
dCB0aGUgQHVuaXR0ZXN0LnNraXAgZGVjb3JhdG9yIG9uIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy4K
LSAgVGhhbmtzIExlZSBLYW1lbnRza3kgZm9yIHRoZSBQUi4KLQotLSBmaXggIzEwMzU6IGNvbGxl
Y3RpbmcgdGVzdHMgaWYgdGVzdCBtb2R1bGUgbGV2ZWwgb2JqIGhhcyBfX2dldGF0dHJfXygpLgot
ICBUaGFua3MgU3VvciBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgLyBUb20gVmlu
ZXIgZm9yIHRoZSBQUi4KLQotLSBmaXggIzMzMTogZG9uJ3QgY29sbGVjdCB0ZXN0cyBpZiB0aGVp
ciBmYWlsdXJlIGNhbm5vdCBiZSByZXBvcnRlZCBjb3JyZWN0bHkKLSAgZS5nLiB0aGV5IGFyZSBh
IGNhbGxhYmxlIGluc3RhbmNlIG9mIGEgY2xhc3MuCi0KLS0gZml4ICMxMTMzOiBmaXhlZCBpbnRl
cm5hbCBlcnJvciB3aGVuIGZpbHRlcmluZyB0cmFjZWJhY2tzIHdoZXJlIG9uZSBlbnRyeQotICBi
ZWxvbmdzIHRvIGEgZmlsZSB3aGljaCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLgotICBUaGFua3Mg
QnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBlbmhhbmNlbWVudCBtYWRlIHRvIGhpZ2hs
aWdodCBpbiByZWQgdGhlIG5hbWUgb2YgdGhlIGZhaWxpbmcgdGVzdHMgc28KLSAgdGhleSBzdGFu
ZCBvdXQgaW4gdGhlIG91dHB1dC4KLSAgVGhhbmtzIEdhYnJpZWwgUmVpcyBmb3IgdGhlIFBSLgot
Ci0tIGFkZCBtb3JlIHRhbGtzIHRvIHRoZSBkb2N1bWVudGF0aW9uCi0tIGV4dGVuZCBkb2N1bWVu
dGF0aW9uIG9uIHRoZSAtLWlnbm9yZSBjbGkgb3B0aW9uCi0tIHVzZSBweXRlc3QtcnVubmVyIGZv
ciBzZXR1cHRvb2xzIGludGVncmF0aW9uCi0tIG1pbm9yIGZpeGVzIGZvciBpbnRlcmFjdGlvbiB3
aXRoIE9TIFggRWwgQ2FwaXRhbgotICBzeXN0ZW0gaW50ZWdyaXR5IHByb3RlY3Rpb24gKHRoYW5r
cyBGbG9yaWFuKQotCi0KLTIuOC4yICgyMDE1LTEwLTA3KQotPT09PT09PT09PT09PT09PT09Ci0K
LS0gZml4ICMxMDg1OiBwcm9wZXIgaGFuZGxpbmcgb2YgZW5jb2RpbmcgZXJyb3JzIHdoZW4gcGFz
c2luZyBlbmNvZGVkIGJ5dGUKLSAgc3RyaW5ncyB0byBweXRlc3QucGFyYW1ldHJpemUgaW4gUHl0
aG9uIDIuCi0gIFRoYW5rcyBUaGVtYW53aXRob3V0YXBsYW4gZm9yIHRoZSByZXBvcnQgYW5kIEJy
dW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4ICMxMDg3OiBoYW5kbGluZyBTeXN0ZW1F
cnJvciB3aGVuIHBhc3NpbmcgZW1wdHkgYnl0ZSBzdHJpbmdzIHRvCi0gIHB5dGVzdC5wYXJhbWV0
cml6ZSBpbiBQeXRob24gMy4KLSAgVGhhbmtzIFBhdWwgS2VocmVyIGZvciB0aGUgcmVwb3J0IGFu
ZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZpeCAjOTk1OiBmaXhlZCBpbnRlcm5h
bCBlcnJvciB3aGVuIGZpbHRlcmluZyB0cmFjZWJhY2tzIHdoZXJlIG9uZSBlbnRyeQotICB3YXMg
Z2VuZXJhdGVkIGJ5IGFuIGV4ZWMoKSBzdGF0ZW1lbnQuCi0gIFRoYW5rcyBEYW5pZWwgSGFobGVy
LCBBc2hsZXkgQyBTdHJhdywgUGhpbGlwcGUgR2F1dGhpZXIgYW5kIFBhdmVsIFNhdmNoZW5rbwot
ICBmb3IgY29udHJpYnV0aW5nIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZp
eCAjMTEwMCBhbmQgIzEwNTc6IGVycm9ycyB3aGVuIHVzaW5nIGF1dG91c2UgZml4dHVyZXMgYW5k
IGRvY3Rlc3QgbW9kdWxlcy4KLSAgVGhhbmtzIFNlcmdleSBCIEtpcnBpY2hldiBhbmQgVml0YWwg
S3VkemVsa2EgZm9yIGNvbnRyaWJ1dGluZyBhbmQgQnJ1bm8KLSAgT2xpdmVpcmEgZm9yIHRoZSBQ
Ui4KLQotMi44LjEgKDIwMTUtMDktMjkpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggIzEw
MzQ6IEFkZCBtaXNzaW5nIG5vZGVpZCBvbiBweXRlc3RfbG9nd2FybmluZyBjYWxsIGluCi0gIGFk
ZGhvb2suICBUaGFua3MgU2ltb24gR29taXplbGogZm9yIHRoZSBQUi4KLQotLSAnZGVwcmVjYXRl
ZF9jYWxsJyBpcyBub3cgb25seSBzYXRpc2ZpZWQgd2l0aCBhIERlcHJlY2F0aW9uV2FybmluZyBv
cgotICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLiBCZWZvcmUgMi44LjAsIGl0IGFjY2VwdGVk
IGFueSB3YXJuaW5nLCBhbmQgMi44LjAKLSAgbWFkZSBpdCBhY2NlcHQgb25seSBEZXByZWNhdGlv
bldhcm5pbmcgKGJ1dCBub3QgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykuCi0gIFRoYW5rcyBB
bGV4IEdheW5vciBmb3IgdGhlIGlzc3VlIGFuZCBFcmljIEh1bnNiZXJnZXIgZm9yIHRoZSBQUi4K
LQotLSBmaXggaXNzdWUgIzEwNzM6IGF2b2lkIGNhbGxpbmcgX19nZXRhdHRyX18gb24gcG90ZW50
aWFsIHBsdWdpbiBvYmplY3RzLgotICBUaGlzIGZpeGVzIGFuIGluY29tcGF0aWJpbGl0eSB3aXRo
IHB5dGVzdC1kamFuZ28uICBUaGFua3MgQW5kcmVhcyBQZWxtZSwKLSAgQnJ1bm8gT2xpdmVpcmEg
YW5kIFJvbm55IFBmYW5uc2NobWlkdCBmb3IgY29udHJpYnV0aW5nIGFuZCBIb2xnZXIgS3Jla2Vs
Ci0gIGZvciB0aGUgZml4LgotCi0tIEZpeCBpc3N1ZSAjNzA0OiBoYW5kbGUgdmVyc2lvbmNvbmZs
aWN0IGR1cmluZyBwbHVnaW4gbG9hZGluZyBtb3JlCi0gIGdyYWNlZnVsbHkuICBUaGFua3MgQnJ1
bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBGaXggaXNzdWUgIzEwNjQ6ICIiLS1qdW5pdHht
bCIgcmVncmVzc2lvbiB3aGVuIHVzZWQgd2l0aCB0aGUKLSAgInB5dGVzdC14ZGlzdCIgcGx1Z2lu
LCB3aXRoIHRlc3QgcmVwb3J0cyBiZWluZyBhc3NpZ25lZCB0byB0aGUgd3JvbmcgdGVzdHMuCi0g
IFRoYW5rcyBEYW5pZWwgR3J1bndhbGQgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJh
IGZvciB0aGUgUFIuCi0KLS0gKGV4cGVyaW1lbnRhbCkgYWRhcHQgbW9yZSBTRU1WRVIgc3R5bGUg
dmVyc2lvbmluZyBhbmQgY2hhbmdlIG1lYW5pbmcgb2YKLSAgbWFzdGVyIGJyYW5jaCBpbiBnaXQg
cmVwbzogIm1hc3RlciIgYnJhbmNoIG5vdyBrZWVwcyB0aGUgYnVnZml4ZXMsIGNoYW5nZXMKLSAg
YWltZWQgZm9yIG1pY3JvIHJlbGVhc2VzLiAgImZlYXR1cmVzIiBicmFuY2ggd2lsbCBvbmx5IGJl
IHJlbGVhc2VkCi0gIHdpdGggbWlub3Igb3IgbWFqb3IgcHl0ZXN0IHJlbGVhc2VzLgotCi0tIEZp
eCBpc3N1ZSAjNzY2IGJ5IHJlbW92aW5nIGRvY3VtZW50YXRpb24gcmVmZXJlbmNlcyB0byBkaXN0
dXRpbHMuCi0gIFRoYW5rcyBSdXNzZWwgV2luZGVyLgotCi0tIEZpeCBpc3N1ZSAjMTAzMDogbm93
IGJ5dGUtc3RyaW5ncyBhcmUgZXNjYXBlZCB0byBwcm9kdWNlIGl0ZW0gbm9kZSBpZHMKLSAgdG8g
bWFrZSB0aGVtIGFsd2F5cyBzZXJpYWxpemFibGUuCi0gIFRoYW5rcyBBbmR5IEZyZWVsYW5kIGZv
ciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIFB5dGhvbiAy
OiBpZiB1bmljb2RlIHBhcmFtZXRyaXplZCB2YWx1ZXMgYXJlIGNvbnZlcnRpYmxlIHRvIGFzY2lp
LCB0aGVpcgotICBhc2NpaSByZXByZXNlbnRhdGlvbiBpcyB1c2VkIGZvciB0aGUgbm9kZSBpZC4K
LQotLSBGaXggaXNzdWUgIzQxMTogQWRkIF9fZXFfXyBtZXRob2QgdG8gYXNzZXJ0aW9uIGNvbXBh
cmlzb24gZXhhbXBsZS4KLSAgVGhhbmtzIEJlbiBXZWJiLgotLSBGaXggaXNzdWUgIzY1MzogZGVw
cmVjYXRlZF9jYWxsIGNhbiBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdlci4KLQotLSBmaXggaXNz
dWUgODc3OiBwcm9wZXJseSBoYW5kbGUgYXNzZXJ0aW9uIGV4cGxhbmF0aW9ucyB3aXRoIG5vbi1h
c2NpaSByZXByCi0gIFRoYW5rcyBNYXRoaWV1IEFnb3BpYW4gZm9yIHRoZSByZXBvcnQgYW5kIFJv
bm55IFBmYW5uc2NobWlkdCBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZSAxMDI5OiB0cmFuc2Zv
cm0gZXJyb3JzIHdoZW4gd3JpdGluZyBjYWNoZSB2YWx1ZXMgaW50byBweXRlc3Qtd2FybmluZ3MK
LQotMi44LjAgKDIwMTUtMDktMTgpCi09PT09PT09PT09PT09PT09PT0KLQotLSBuZXcgYGAtLWxm
YGAgYW5kIGBgLWZmYGAgb3B0aW9ucyB0byBydW4gb25seSB0aGUgbGFzdCBmYWlsaW5nIHRlc3Rz
IG9yCi0gICJmYWlsaW5nIHRlc3RzIGZpcnN0IiBmcm9tIHRoZSBsYXN0IHJ1bi4gIFRoaXMgZnVu
Y3Rpb25hbGl0eSBpcyBwcm92aWRlZAotICB0aHJvdWdoIHBvcnRpbmcgdGhlIGZvcm1lcmx5IGV4
dGVybmFsIHB5dGVzdC1jYWNoZSBwbHVnaW4gaW50byBweXRlc3QgY29yZS4KLSAgQkFDS1dBUkQg
SU5DT01QQVQ6IGlmIHlvdSB1c2VkIHB5dGVzdC1jYWNoZSdzIGZ1bmN0aW9uYWxpdHkgdG8gcGVy
c2lzdAotICBkYXRhIGJldHdlZW4gdGVzdCBydW5zIGJlIGF3YXJlIHRoYXQgd2UgZG9uJ3Qgc2Vy
aWFsaXplIHNldHMgYW55bW9yZS4KLSAgVGhhbmtzIFJvbm55IFBmYW5uc2NobWlkdCBmb3IgbW9z
dCBvZiB0aGUgbWVyZ2luZyB3b3JrLgotCi0tICItciIgb3B0aW9uIG5vdyBhY2NlcHRzICJhIiB0
byBpbmNsdWRlIGFsbCBwb3NzaWJsZSByZXBvcnRzLCBzaW1pbGFyCi0gIHRvIHBhc3NpbmcgImZF
c3hYdyIgZXhwbGljaXRseSAoaXNzZTk2MCkuCi0gIFRoYW5rcyBBYmhpamVldCBLYXN1cmRlIGZv
ciB0aGUgUFIuCi0KLS0gYXZvaWQgcHl0aG9uMy41IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGJ5IGlu
dHJvZHVjaW5nIHZlcnNpb24KLSAgc3BlY2lmaWMgaW5zcGVjdGlvbiBoZWxwZXJzLCB0aGFua3Mg
TWljaGFlbCBEcm9ldHRib29tLgotCi0tIGZpeCBpc3N1ZTU2MjogQG5vc2UudG9vbHMuaXN0ZXN0
IG5vdyBmdWxseSByZXNwZWN0ZWQuCi0KLS0gZml4IGlzc3VlOTM0OiB3aGVuIHN0cmluZyBjb21w
YXJpc29uIGZhaWxzIGFuZCBhIGRpZmYgaXMgdG9vIGxhcmdlIHRvIGRpc3BsYXkKLSAgd2l0aG91
dCBwYXNzaW5nIC12diwgc3RpbGwgc2hvdyBhIGZldyBsaW5lcyBvZiB0aGUgZGlmZi4KLSAgVGhh
bmtzIEZsb3JpYW4gQnJ1aGluIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3Ig
dGhlIFBSLgotCi0tIGZpeCBpc3N1ZTczNjogRml4IGEgYnVnIHdoZXJlIGZpeHR1cmUgcGFyYW1z
IHdvdWxkIGJlIGRpc2NhcmRlZCB3aGVuIGNvbWJpbmVkCi0gIHdpdGggcGFyYW1ldHJpemF0aW9u
IG1hcmtlcnMuCi0gIFRoYW5rcyB0byBNYXJrdXMgVW50ZXJ3YWRpdHplciBmb3IgdGhlIFBSLgot
Ci0tIGZpeCBpc3N1ZTcxMDogaW50cm9kdWNlIEFMTE9XX1VOSUNPREUgZG9jdGVzdCBvcHRpb246
IHdoZW4gZW5hYmxlZCwgdGhlCi0gIGBgdWBgIHByZWZpeCBpcyBzdHJpcHBlZCBmcm9tIHVuaWNv
ZGUgc3RyaW5ncyBpbiBleHBlY3RlZCBkb2N0ZXN0IG91dHB1dC4gVGhpcwotICBhbGxvd3MgZG9j
dGVzdHMgd2hpY2ggdXNlIHVuaWNvZGUgdG8gcnVuIGluIFB5dGhvbiAyIGFuZCAzIHVuY2hhbmdl
ZC4KLSAgVGhhbmtzIEphc29uIFIuIENvb21icyBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xp
dmVpcmEgZm9yIHRoZSBQUi4KLQotLSBwYXJhbWV0cml6ZSBub3cgYWxzbyBnZW5lcmF0ZXMgbWVh
bmluZ2Z1bCB0ZXN0IElEcyBmb3IgZW51bSwgcmVnZXggYW5kIGNsYXNzCi0gIG9iamVjdHMgKGFz
IG9wcG9zZWQgdG8gY2xhc3MgaW5zdGFuY2VzKS4KLSAgVGhhbmtzIHRvIEZsb3JpYW4gQnJ1aGlu
IGZvciB0aGUgUFIuCi0KLS0gQWRkICd3YXJucycgdG8gYXNzZXJ0IHRoYXQgd2FybmluZ3MgYXJl
IHRocm93biAobGlrZSAncmFpc2VzJykuCi0gIFRoYW5rcyB0byBFcmljIEh1bnNiZXJnZXIgZm9y
IHRoZSBQUi4KLQotLSBGaXggaXNzdWU2ODM6IERvIG5vdCBhcHBseSBhbiBhbHJlYWR5IGFwcGxp
ZWQgbWFyay4gIFRoYW5rcyBvamFrZSBmb3IgdGhlIFBSLgotCi0tIERlYWwgd2l0aCBjYXB0dXJp
bmcgZmFpbHVyZXMgYmV0dGVyIHNvIGZld2VyIGV4Y2VwdGlvbnMgZ2V0IGxvc3QgdG8KLSAgL2Rl
di9udWxsLiAgVGhhbmtzIERhdmlkIFN6b3R0ZW4gZm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU3
MzA6IGRlcHJlY2F0ZSBhbmQgd2FybiBhYm91dCB0aGUgLS1nZW5zY3JpcHQgb3B0aW9uLgotICBU
aGFua3MgUm9ubnkgUGZhbm5zY2htaWR0IGZvciB0aGUgcmVwb3J0IGFuZCBDaHJpc3RpYW4gUG9t
bXJhbnogZm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU3NTE6IG11bHRpcGxlIHBhcmFtZXRyaXpl
IHdpdGggaWRzIGJ1ZyBpZiBpdCBwYXJhbWV0cml6ZXMgY2xhc3Mgd2l0aAotICB0d28gb3IgbW9y
ZSB0ZXN0IG1ldGhvZHMuIFRoYW5rcyBTZXJnZXkgQ2hpcGlnYSBmb3IgcmVwb3J0aW5nIGFuZCBK
YW4KLSAgQmVkbmFyaWsgZm9yIFBSLgotCi0tIGZpeCBpc3N1ZTgyOiBhdm9pZCBsb2FkaW5nIGNv
bmZ0ZXN0IGZpbGVzIGZyb20gc2V0dXAuY2ZnL3B5dGVzdC5pbmkvdG94LmluaQotICBmaWxlcyBh
bmQgdXB3YXJkcyBieSBkZWZhdWx0ICgtLWNvbmZjdXRkaXIgY2FuIHN0aWxsIGJlIHNldCB0byBv
dmVycmlkZSB0aGlzKS4KLSAgVGhhbmtzIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0g
Zml4IGlzc3VlNzY4OiBkb2NzdHJpbmdzIGZvdW5kIGluIHB5dGhvbiBtb2R1bGVzIHdlcmUgbm90
IHNldHRpbmcgdXAgc2Vzc2lvbgotICBmaXh0dXJlcy4gVGhhbmtzIEphc29uIFIuIENvb21icyBm
b3IgcmVwb3J0aW5nIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGFkZGVkIGBg
dG1wZGlyX2ZhY3RvcnlgYCwgYSBzZXNzaW9uLXNjb3BlZCBmaXh0dXJlIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gY3JlYXRlCi0gIGRpcmVjdG9yaWVzIHVuZGVyIHRoZSBiYXNlIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuIFByZXZpb3VzbHkgdGhpcyBvYmplY3Qgd2FzCi0gIGluc3RhbGxlZCBhcyBhIGBgX3Rt
cGRpcmhhbmRsZXJgYCBhdHRyaWJ1dGUgb2YgdGhlIGBgY29uZmlnYGAgb2JqZWN0LCBidXQgbm93
IGl0Ci0gIGlzIHBhcnQgb2YgdGhlIG9mZmljaWFsIEFQSSBhbmQgdXNpbmcgYGBjb25maWcuX3Rt
cGRpcmhhbmRsZXJgYCBpcwotICBkZXByZWNhdGVkLgotICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEg
Zm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU4MDg6IHB5dGVzdCdzIGludGVybmFsIGFzc2VydGlv
biByZXdyaXRlIGhvb2sgbm93IGltcGxlbWVudHMgdGhlCi0gIG9wdGlvbmFsIFBFUDMwMiBnZXRf
ZGF0YSBBUEkgc28gdGVzdHMgY2FuIGFjY2VzcyBkYXRhIGZpbGVzIG5leHQgdG8gdGhlbS4KLSAg
VGhhbmtzIHhtby1vZG9vIGZvciByZXF1ZXN0IGFuZCBleGFtcGxlIGFuZCBCcnVubyBPbGl2ZWly
YSBmb3IKLSAgdGhlIFBSLgotCi0tIHJvb3RkaXIgYW5kIGluaWZpbGUgYXJlIG5vdyBkaXNwbGF5
ZWQgZHVyaW5nIHVzYWdlIGVycm9ycyB0byBoZWxwCi0gIHVzZXJzIGRpYWdub3NlIHByb2JsZW1z
IHN1Y2ggYXMgdW5leHBlY3RlZCBpbmkgZmlsZXMgd2hpY2ggYWRkCi0gIHVua25vd24gb3B0aW9u
cyBiZWluZyBwaWNrZWQgdXAgYnkgcHl0ZXN0LiBUaGFua3MgdG8gUGF2ZWwgU2F2Y2hlbmtvIGZv
cgotICBicmluZ2luZyB0aGUgcHJvYmxlbSB0byBhdHRlbnRpb24gaW4gIzgyMSBhbmQgQnJ1bm8g
T2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBTdW1tYXJ5IGJhciBub3cgaXMgY29sb3JlZCB5ZWxs
b3cgZm9yIHdhcm5pbmcKLSAgc2l0dWF0aW9ucyBzdWNoIGFzOiBhbGwgdGVzdHMgZWl0aGVyIHdl
cmUgc2tpcHBlZCBvciB4cGFzcy94ZmFpbGVkLAotICBvciBubyB0ZXN0cyB3ZXJlIHJ1biBhdCBh
bGwgKHRoaXMgaXMgYSBwYXJ0aWFsIGZpeCBmb3IgaXNzdWU1MDApLgotCi0tIGZpeCBpc3N1ZTgx
MjogcHl0ZXN0IG5vdyBleGl0cyB3aXRoIHN0YXR1cyBjb2RlIDUgaW4gc2l0dWF0aW9ucyB3aGVy
ZSBubwotICB0ZXN0cyB3ZXJlIHJ1biBhdCBhbGwsIHN1Y2ggYXMgdGhlIGRpcmVjdG9yeSBnaXZl
biBpbiB0aGUgY29tbWFuZCBsaW5lIGRvZXMKLSAgbm90IGNvbnRhaW4gYW55IHRlc3RzIG9yIGFz
IHJlc3VsdCBvZiBhIGNvbW1hbmQgbGluZSBvcHRpb24gZmlsdGVycwotICBhbGwgb3V0IGFsbCB0
ZXN0cyAoLWsgZm9yIGV4YW1wbGUpLgotICBUaGFua3MgRXJpYyBTaWVnZXJtYW4gKGlzc3VlODEy
KSBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBTdW1tYXJ5IGJhciBub3cgaXMg
Y29sb3JlZCB5ZWxsb3cgZm9yIHdhcm5pbmcKLSAgc2l0dWF0aW9ucyBzdWNoIGFzOiBhbGwgdGVz
dHMgZWl0aGVyIHdlcmUgc2tpcHBlZCBvciB4cGFzcy94ZmFpbGVkLAotICBvciBubyB0ZXN0cyB3
ZXJlIHJ1biBhdCBhbGwgKHJlbGF0ZWQgdG8gaXNzdWU1MDApLgotICBUaGFua3MgRXJpYyBTaWVn
ZXJtYW4uCi0KLS0gTmV3IGBgdGVzdHBhdGhzYGAgaW5pIG9wdGlvbjogbGlzdCBvZiBkaXJlY3Rv
cmllcyB0byBzZWFyY2ggZm9yIHRlc3RzCi0gIHdoZW4gZXhlY3V0aW5nIHB5dGVzdCBmcm9tIHRo
ZSByb290IGRpcmVjdG9yeS4gVGhpcyBjYW4gYmUgdXNlZAotICB0byBzcGVlZCB1cCB0ZXN0IGNv
bGxlY3Rpb24gd2hlbiBhIHByb2plY3QgaGFzIHdlbGwgc3BlY2lmaWVkIGRpcmVjdG9yaWVzCi0g
IGZvciB0ZXN0cywgYmVpbmcgdXN1YWxseSBtb3JlIHByYWN0aWNhbCB0aGFuIGNvbmZpZ3VyaW5n
IG5vcmVjdXJzZWRpcnMgZm9yCi0gIGFsbCBkaXJlY3RvcmllcyB0aGF0IGRvIG5vdCBjb250YWlu
IHRlc3RzLgotICBUaGFua3MgdG8gQWRyaWFuIGZvciBpZGVhICgjNjk0KSBhbmQgQnJ1bm8gT2xp
dmVpcmEgZm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU3MTM6IEpVbml0IFhNTCByZXBvcnRzIGZv
ciBkb2N0ZXN0IGZhaWx1cmVzLgotICBUaGFua3MgUHVueWFzaGxva2EgQmlzd2FsLgotCi0tIGZp
eCBpc3N1ZTk3MDogaW50ZXJuYWwgcHl0ZXN0IHdhcm5pbmdzIG5vdyBhcHBlYXIgYXMgInB5dGVz
dC13YXJuaW5ncyIgaW4KLSAgdGhlIHRlcm1pbmFsIGluc3RlYWQgb2YgIndhcm5pbmdzIiwgc28g
aXQgaXMgY2xlYXIgZm9yIHVzZXJzIHRoYXQgdGhvc2UKLSAgd2FybmluZ3MgYXJlIGZyb20gcHl0
ZXN0IGFuZCBub3QgZnJvbSB0aGUgYnVpbHRpbiAid2FybmluZ3MiIG1vZHVsZS4KLSAgVGhhbmtz
IEJydW5vIE9saXZlaXJhLgotCi0tIEluY2x1ZGUgc2V0dXAgYW5kIHRlYXJkb3duIGluIGp1bml0
eG1sIHRlc3QgZHVyYXRpb25zLgotICBUaGFua3MgSmFubmUgVmFuaGFsYS4KLQotLSBmaXggaXNz
dWU3MzU6IGFzc2VydGlvbiBmYWlsdXJlcyBvbiBkZWJ1ZyB2ZXJzaW9ucyBvZiBQeXRob24gMy40
KwotCi0tIG5ldyBvcHRpb24gYGAtLWltcG9ydC1tb2RlYGAgdG8gYWxsb3cgdG8gY2hhbmdlIHRl
c3QgbW9kdWxlIGltcG9ydGluZwotICBiZWhhdmlvdXIgdG8gYXBwZW5kIHRvIHN5cy5wYXRoIGlu
c3RlYWQgb2YgcHJlcGVuZGluZy4gIFRoaXMgYmV0dGVyIGFsbG93cwotICB0byBydW4gdGVzdCBt
b2R1bGVzIGFnYWluc3QgaW5zdGFsbGVkIHZlcnNpb25zIG9mIGEgcGFja2FnZSBldmVuIGlmIHRo
ZQotICBwYWNrYWdlIHVuZGVyIHRlc3QgaGFzIHRoZSBzYW1lIGltcG9ydCByb290LiAgSW4gdGhp
cyBleGFtcGxlOjoKLQotICAgICAgICB0ZXN0aW5nL19faW5pdF9fLnB5Ci0gICAgICAgIHRlc3Rp
bmcvdGVzdF9wa2dfdW5kZXJfdGVzdC5weQotICAgICAgICBwa2dfdW5kZXJfdGVzdC8KLQotICB0
aGUgdGVzdHMgd2lsbCBydW4gYWdhaW5zdCB0aGUgaW5zdGFsbGVkIHZlcnNpb24KLSAgb2YgcGtn
X3VuZGVyX3Rlc3Qgd2hlbiBgYC0taW1wb3J0LW1vZGU9YXBwZW5kYGAgaXMgdXNlZCB3aGVyZWFz
Ci0gIGJ5IGRlZmF1bHQgdGhleSB3b3VsZCBhbHdheXMgcGljayB1cCB0aGUgbG9jYWwgdmVyc2lv
bi4gIFRoYW5rcyBIb2xnZXIgS3Jla2VsLgotCi0tIHB5dGVzdGVyOiBhZGQgbWV0aG9kIGBgVG1w
VGVzdGRpci5kZWxldGVfbG9hZGVkX21vZHVsZXMoKWBgLCBhbmQgY2FsbCBpdAotICBmcm9tIGBg
aW5saW5lX3J1bigpYGAgdG8gYWxsb3cgdGVtcG9yYXJ5IG1vZHVsZXMgdG8gYmUgcmVsb2FkZWQu
Ci0gIFRoYW5rcyBFZHVhcmRvIFNjaGV0dGluby4KLQotLSBpbnRlcm5hbGx5IHJlZmFjdG9yIHBs
dWdpbm1hbmFnZXIgQVBJIGFuZCBjb2RlIHNvIHRoYXQgdGhlcmUKLSAgaXMgYSBjbGVhciBkaXN0
aW5jdGlvbiBiZXR3ZWVuIGEgcHl0ZXN0LWFnbm9zdGljIHJhdGhlciBzaW1wbGUKLSAgcGx1Z2lu
bWFuYWdlciBhbmQgdGhlIFB5dGVzdFBsdWdpbk1hbmFnZXIgd2hpY2ggYWRkcyBhIGxvdCBvZgot
ICBiZWhhdmlvdXIsIGFtb25nIGl0IGhhbmRsaW5nIG9mIHRoZSBsb2NhbCBjb25mdGVzdCBmaWxl
cy4KLSAgSW4gdGVybXMgb2YgZG9jdW1lbnRlZCBtZXRob2RzIHRoaXMgaXMgYSBiYWNrd2FyZCBj
b21wYXRpYmxlCi0gIGNoYW5nZSBidXQgaXQgbWlnaHQgc3RpbGwgYnJlYWsgM3JkIHBhcnR5IHBs
dWdpbnMgd2hpY2ggcmVsaWVkIG9uCi0gIGRldGFpbHMgbGlrZSBlc3BlY2lhbGx5IHRoZSBwbHVn
aW5tYW5hZ2VyLmFkZF9zaHV0ZG93bigpIEFQSS4KLSAgVGhhbmtzIEhvbGdlciBLcmVrZWwuCi0K
LS0gcGx1Z2lubWFuYWdlbWVudDogaW50cm9kdWNlIGBgcHl0ZXN0Lmhvb2tpbXBsYGAgYW5kCi0g
IGBgcHl0ZXN0Lmhvb2tzcGVjYGAgZGVjb3JhdG9ycyBmb3Igc2V0dGluZyBpbXBsL3NwZWMKLSAg
c3BlY2lmaWMgcGFyYW1ldGVycy4gIFRoaXMgc3Vic3RpdHV0ZXMgdGhlIHByZXZpb3VzCi0gIG5v
dyBkZXByZWNhdGVkIHVzZSBvZiBgYHB5dGVzdC5tYXJrYGAgd2hpY2ggaXMgbWVhbnQgdG8KLSAg
Y29udGFpbiBtYXJrZXJzIGZvciB0ZXN0IGZ1bmN0aW9ucyBvbmx5LgotCi0tIHdyaXRlL3JlZmlu
ZSBkb2NzIGZvciAid3JpdGluZyBwbHVnaW5zIiB3aGljaCBub3cgaGF2ZSB0aGVpcgotICBvd24g
cGFnZSBhbmQgYXJlIHNlcGFyYXRlIGZyb20gdGhlICJ1c2luZy9pbnN0YWxsaW5nIHBsdWdpbnNg
YCBwYWdlLgotCi0tIGZpeCBpc3N1ZTczMjogcHJvcGVybHkgdW5yZWdpc3RlciBwbHVnaW5zIGZy
b20gYW55IGhvb2sgY2FsbGluZwotICBzaXRlcyBhbGxvd2luZyB0byBoYXZlIHRlbXBvcmFyeSBw
bHVnaW5zIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbi4KLQotLSBkZXByZWNhdGUgYW5kIHdhcm4gYWJv
dXQgYGBfX211bHRpY2FsbF9fYGAgYXJndW1lbnQgaW4gaG9vawotICBpbXBsZW1lbnRhdGlvbnMu
ICBVc2UgdGhlIGBgaG9va3dyYXBwZXJgYCBtZWNoYW5pc20gaW5zdGVhZCBhbHJlYWR5Ci0gIGlu
dHJvZHVjZWQgd2l0aCBweXRlc3QtMi43LgotCi0tIHNwZWVkIHVwIHB5dGVzdCdzIG93biB0ZXN0
IHN1aXRlIGNvbnNpZGVyYWJseSBieSB1c2luZyBpbnByb2Nlc3MKLSAgdGVzdHMgYnkgZGVmYXVs
dCAodGVzdHJ1biBjYW4gYmUgbW9kaWZpZWQgd2l0aCAtLXJ1bnB5dGVzdD1zdWJwcm9jZXNzCi0g
IHRvIGNyZWF0ZSBzdWJwcm9jZXNzZXMgaW4gbWFueSBwbGFjZXMgaW5zdGVhZCkuICBUaGUgbWFp
bgotICBBUElzIHRvIHJ1biBweXRlc3QgaW4gYSB0ZXN0IGlzICJydW5weXRlc3QoKSIgb3IgInJ1
bnB5dGVzdF9zdWJwcm9jZXNzIgotICBhbmQgInJ1bnB5dGVzdF9pbnByb2Nlc3MiIGlmIHlvdSBu
ZWVkIGEgcGFydGljdWxhciB3YXkgb2YgcnVubmluZwotICB0aGUgdGVzdC4gIEluIGFsbCBjYXNl
cyB5b3UgZ2V0IGJhY2sgYSBSdW5SZXN1bHQgYnV0IHRoZSBpbnByb2Nlc3MKLSAgb25lIHdpbGwg
YWxzbyBoYXZlIGEgInJlcHJlYyIgYXR0cmlidXRlIHdpdGggdGhlIHJlY29yZGVkIGV2ZW50cy9y
ZXBvcnRzLgotCi0tIGZpeCBtb25rZXlwYXRjaC5zZXRhdHRyKCJ4LnkiLCByYWlzaW5nPUZhbHNl
KSB0byBhY3R1YWxseSBub3QgcmFpc2UKLSAgaWYgInkiIGlzIG5vdCBhIHByZS1leGlzdGluZyBh
dHRyaWJ1dGUuIFRoYW5rcyBGbG9yaWFuIEJydWhpbi4KLQotLSBmaXggaXNzdWU3NDE6IG1ha2Ug
cnVubmluZyBvdXRwdXQgZnJvbSB0ZXN0ZGlyLnJ1biBjb3B5L3Bhc3RlYWJsZQotICBUaGFua3Mg
QnJ1bm8gT2xpdmVpcmEuCi0KLS0gYWRkIGEgbmV3IGBgLS1ub2NvbmZ0ZXN0YGAgYXJndW1lbnQg
d2hpY2ggaWdub3JlcyBhbGwgYGBjb25mdGVzdC5weWBgIGZpbGVzLgotCi0tIGFkZCBgYGZpbGVg
YCBhbmQgYGBsaW5lYGAgYXR0cmlidXRlcyB0byBKVW5pdC1YTUwgb3V0cHV0LgotCi0tIGZpeCBp
c3N1ZTg5MDogY2hhbmdlZCBleHRlbnNpb24gb2YgYWxsIGRvY3VtZW50YXRpb24gZmlsZXMgZnJv
bSBgYHR4dGBgIHRvCi0gIGBgcnN0YGAuIFRoYW5rcyB0byBBYmhpamVldCBmb3IgdGhlIFBSLgot
Ci0tIGZpeCBpc3N1ZTcxNDogYWRkIGFiaWxpdHkgdG8gYXBwbHkgaW5kaXJlY3Q9VHJ1ZSBwYXJh
bWV0ZXIgb24gcGFydGljdWxhciBhcmduYW1lcy4KLSAgVGhhbmtzIEVsaXphdmV0YTIzOS4KLQot
LSBmaXggaXNzdWU4OTA6IGNoYW5nZWQgZXh0ZW5zaW9uIG9mIGFsbCBkb2N1bWVudGF0aW9uIGZp
bGVzIGZyb20gYGB0eHRgYCB0bwotICBgYHJzdGBgLiBUaGFua3MgdG8gQWJoaWplZXQgZm9yIHRo
ZSBQUi4KLQotLSBmaXggaXNzdWU5NTc6ICIjIGRvY3Rlc3Q6IFNLSVAiIG9wdGlvbiB3aWxsIG5v
dyByZWdpc3RlciBkb2N0ZXN0cyBhcyBTS0lQUEVECi0gIHJhdGhlciB0aGFuIFBBU1NFRC4KLSAg
VGhhbmtzIFRob21hcyBHcmFpbmdlciBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEg
Zm9yIHRoZSBQUi4KLQotLSBpc3N1ZTk1MTogYWRkIG5ldyByZWNvcmRfeG1sX3Byb3BlcnR5IGZp
eHR1cmUsIHRoYXQgc3VwcG9ydHMgbG9nZ2luZwotICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9u
IHhtbCBvdXRwdXQuIFRoYW5rcyBEYXZpZCBEaWF6IGZvciB0aGUgUFIuCi0KLS0gaXNzdWU5NDk6
IHBhdGhzIGFmdGVyIG5vcm1hbCBvcHRpb25zIChmb3IgZXhhbXBsZSBgYC1zYGAsIGBgLXZgYCwg
ZXRjKSBhcmUgbm93Ci0gIHByb3Blcmx5IHVzZWQgdG8gZGlzY292ZXIgYGByb290ZGlyYGAgYW5k
IGBgaW5pYGAgZmlsZXMuCi0gIFRoYW5rcyBQZXRlciBMYXVyaSBmb3IgdGhlIHJlcG9ydCBhbmQg
QnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotMi43LjMgKDIwMTUtMDktMTUpCi09PT09PT09
PT09PT09PT09PT0KLQotLSBBbGxvdyAnZGV2JywgJ3JjJywgb3Igb3RoZXIgbm9uLWludGVnZXIg
dmVyc2lvbiBzdHJpbmdzIGluIGBgaW1wb3J0b3Jza2lwYGAuCi0gIFRoYW5rcyB0byBFcmljIEh1
bnNiZXJnZXIgZm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU4NTY6IGNvbnNpZGVyIC0tY29sb3Ig
cGFyYW1ldGVyIGluIGFsbCBvdXRwdXRzIChmb3IgZXhhbXBsZQotICAtLWZpeHR1cmVzKS4gVGhh
bmtzIEJhcm5leSBHYWxlIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhl
IFBSLgotCi0tIGZpeCBpc3N1ZTg1NTogcGFzc2luZyBzdHIgb2JqZWN0cyBhcyBgYHBsdWdpbnNg
YCBhcmd1bWVudCB0byBweXRlc3QubWFpbgotICBpcyBub3cgaW50ZXJwcmV0ZWQgYXMgYSBtb2R1
bGUgbmFtZSB0byBiZSBpbXBvcnRlZCBhbmQgcmVnaXN0ZXJlZCBhcyBhCi0gIHBsdWdpbiwgaW5z
dGVhZCBvZiBzaWxlbnRseSBoYXZpbmcgbm8gZWZmZWN0LgotICBUaGFua3MgeG1vLW9kb28gZm9y
IHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4IGlzc3Vl
NzQ0OiBmaXggZm9yIGFzdC5DYWxsIGNoYW5nZXMgaW4gUHl0aG9uIDMuNSsuICBUaGFua3MKLSAg
R3VpZG8gdmFuIFJvc3N1bSwgTWF0dGhpYXMgQnVzc29ubmllciwgU3RlZmFuIFppbW1lcm1hbm4g
YW5kCi0gIFRob21hcyBLbHV5dmVyLgotCi0tIGZpeCBpc3N1ZTg0MjogYXBwbHlpbmcgbWFya2Vy
cyBpbiBjbGFzc2VzIG5vIGxvbmdlciBwcm9wYWdhdGUgdGhpcyBtYXJrZXJzCi0gIHRvIHN1cGVy
Y2xhc3NlcyB3aGljaCBhbHNvIGhhdmUgbWFya2Vycy4KLSAgVGhhbmtzIHhtby1vZG9vIGZvciB0
aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIHByZXNlcnZlIHdh
cm5pbmcgZnVuY3Rpb25zIGFmdGVyIGNhbGwgdG8gcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbC4gVGhh
bmtzCi0gIFBpZXRlciBNdWxkZXIgZm9yIFBSLgotCi0tIGZpeCBpc3N1ZTg1NDogYXV0b3VzZSB5
aWVsZF9maXh0dXJlcyBkZWZpbmVkIGFzIGNsYXNzIG1lbWJlcnMgb2YKLSAgdW5pdHRlc3QuVGVz
dENhc2Ugc3ViY2xhc3NlcyBub3cgd29yayBhcyBleHBlY3RlZC4KLSAgVGhhbm5rcyB4bW8tb2Rv
byBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBmaXgg
aXNzdWU4MzM6IC0tZml4dHVyZXMgbm93IHNob3dzIGFsbCBmaXh0dXJlcyBvZiBjb2xsZWN0ZWQg
dGVzdCBmaWxlcywgaW5zdGVhZCBvZiBqdXN0IHRoZQotICBmaXh0dXJlcyBkZWNsYXJlZCBvbiB0
aGUgZmlyc3Qgb25lLgotICBUaGFua3MgRmxvcmlhbiBCcnVoaW4gZm9yIHJlcG9ydGluZyBhbmQg
QnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU4NjM6IHNraXBwZWQgdGVz
dHMgbm93IHJlcG9ydCB0aGUgY29ycmVjdCByZWFzb24gd2hlbiBhIHNraXAveGZhaWwKLSAgY29u
ZGl0aW9uIGlzIG1ldCB3aGVuIHVzaW5nIG11bHRpcGxlIG1hcmtlcnMuCi0gIFRoYW5rcyBSYXBo
YWVsIFBpZXJ6aW5hIGZvciByZXBvcnRpbmcgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIu
Ci0KLS0gb3B0aW1pemVkIHRtcGRpciBmaXh0dXJlIGluaXRpYWxpemF0aW9uLCB3aGljaCBzaG91
bGQgbWFrZSB0ZXN0IHNlc3Npb25zCi0gIGZhc3RlciAoc3BlY2lhbGx5IHdoZW4gdXNpbmcgcHl0
ZXN0LXhkaXN0KS4gVGhlIG9ubHkgdmlzaWJsZSBlZmZlY3QKLSAgaXMgdGhhdCBub3cgcHl0ZXN0
IHVzZXMgYSBzdWJkaXJlY3RvcnkgaW4gdGhlICRURU1QIGRpcmVjdG9yeSBmb3IgYWxsCi0gIGRp
cmVjdG9yaWVzIGNyZWF0ZWQgYnkgdGhpcyBmaXh0dXJlIChkZWZhdWx0cyB0byAkVEVNUC9weXRl
c3QtJFVTRVIpLgotICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotMi43LjIg
KDIwMTUtMDYtMjMpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggaXNzdWU3Njc6IHB5dGVz
dC5yYWlzZXMgdmFsdWUgYXR0cmlidXRlIGRvZXMgbm90IGNvbnRhaW4gdGhlIGV4Y2VwdGlvbgot
ICBpbnN0YW5jZSBvbiBQeXRob24gMi42LiBUaGFua3MgRXJpYyBTaWVnZXJtYW4gZm9yIHByb3Zp
ZGluZyB0aGUgdGVzdAotICBjYXNlIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgUFIuCi0KLS0gQXV0
b21hdGljYWxseSBjcmVhdGUgZGlyZWN0b3J5IGZvciBqdW5pdHhtbCBhbmQgcmVzdWx0cyBsb2cu
Ci0gIFRoYW5rcyBBcm9uIEN1cnpvbi4KLQotLSBmaXggaXNzdWU3MTM6IEpVbml0IFhNTCByZXBv
cnRzIGZvciBkb2N0ZXN0IGZhaWx1cmVzLgotICBUaGFua3MgUHVueWFzaGxva2EgQmlzd2FsLgot
Ci0tIGZpeCBpc3N1ZTczNTogYXNzZXJ0aW9uIGZhaWx1cmVzIG9uIGRlYnVnIHZlcnNpb25zIG9m
IFB5dGhvbiAzLjQrCi0gIFRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbi4KLQotLSBmaXggaXNzdWUx
MTQ6IHNraXBpZiBtYXJrZXIgcmVwb3J0cyB0byBpbnRlcm5hbCBza2lwcGluZyBwbHVnaW47Ci0g
IFRoYW5rcyBGbG9yaXMgQnJ1eW5vb2doZSBmb3IgcmVwb3J0aW5nIGFuZCBCcnVubyBPbGl2ZWly
YSBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTc0ODogdW5pdHRlc3QuU2tpcFRlc3QgcmVwb3J0
cyB0byBpbnRlcm5hbCBweXRlc3QgdW5pdHRlc3QgcGx1Z2luLgotICBUaGFua3MgVGhvbWFzIERl
IFNjaGFtcGhlbGVpcmUgZm9yIHJlcG9ydGluZyBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQ
Ui4KLQotLSBmaXggaXNzdWU3MTg6IGZhaWxlZCB0byBjcmVhdGUgcmVwcmVzZW50YXRpb24gb2Yg
c2V0cyBjb250YWluaW5nIHVuc29ydGFibGUKLSAgZWxlbWVudHMgaW4gcHl0aG9uIDIuIFRoYW5r
cyBFZGlzb24gR3VzdGF2byBNdWVuei4KLQotLSBmaXggaXNzdWU3NTYsIGZpeCBpc3N1ZTc1MiAo
YW5kIHNpbWlsYXIgaXNzdWVzKTogZGVwZW5kIG9uIHB5LTEuNC4yOQotICB3aGljaCBoYXMgYSBy
ZWZpbmVkIGFsZ29yaXRobSBmb3IgdHJhY2ViYWNrIGdlbmVyYXRpb24uCi0KLQotMi43LjEgKDIw
MTUtMDUtMTkpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggaXNzdWU3MzE6IGRvIG5vdCBn
ZXQgY29uZnVzZWQgYnkgdGhlIGJyYWNlcyB3aGljaCBtYXkgYmUgcHJlc2VudAotICBhbmQgdW5i
YWxhbmNlZCBpbiBhbiBvYmplY3QncyByZXByIHdoaWxlIGNvbGxhcHNpbmcgRmFsc2UKLSAgZXhw
bGFuYXRpb25zLiAgVGhhbmtzIENhcmwgTWV5ZXIgZm9yIHRoZSByZXBvcnQgYW5kIHRlc3QgY2Fz
ZS4KLQotLSBmaXggaXNzdWU1NTM6IHByb3Blcmx5IGhhbmRsaW5nIGluc3BlY3QuZ2V0c291cmNl
bGluZXMgZmFpbHVyZXMgaW4KLSAgRml4dHVyZUxvb2t1cEVycm9yIHdoaWNoIHdvdWxkIGxlYWQg
dG8gYW4gaW50ZXJuYWwgZXJyb3IsCi0gIG9iZnVzY2F0aW5nIHRoZSBvcmlnaW5hbCBwcm9ibGVt
LiBUaGFua3MgdGFsbGpvc2ggZm9yIGluaXRpYWwKLSAgZGlhZ25vc2UvcGF0Y2ggYW5kIEJydW5v
IE9saXZlaXJhIGZvciBmaW5hbCBwYXRjaC4KLQotLSBmaXggaXNzdWU2NjA6IHByb3Blcmx5IHJl
cG9ydCBzY29wZS1taXNtYXRjaC1hY2Nlc3MgZXJyb3JzCi0gIGluZGVwZW5kZW50bHkgZnJvbSBv
cmRlcmluZyBvZiBmaXh0dXJlIGFyZ3VtZW50cy4gIEFsc28KLSAgYXZvaWQgdGhlIHB5dGVzdCBp
bnRlcm5hbCB0cmFjZWJhY2sgd2hpY2ggZG9lcyBub3QgcHJvdmlkZQotICBpbmZvcm1hdGlvbiB0
byB0aGUgdXNlci4gVGhhbmtzIEhvbGdlciBLcmVrZWwuCi0KLS0gc3RyZWFtbGluZWQgYW5kIGRv
Y3VtZW50ZWQgcmVsZWFzZSBwcm9jZXNzLiAgQWxzbyBhbGwgdmVyc2lvbnMKLSAgKGluIHNldHVw
LnB5IGFuZCBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24pIGFyZSBub3cgcmVhZAotICBmcm9tIF9w
eXRlc3QvX19pbml0X18ucHkuIFRoYW5rcyBIb2xnZXIgS3Jla2VsLgotCi0tIGZpeGVkIGRvY3Mg
dG8gcmVtb3ZlIHRoZSBub3Rpb24gdGhhdCB5aWVsZC1maXh0dXJlcyBhcmUgZXhwZXJpbWVudGFs
LgotICBUaGV5IGFyZSBoZXJlIHRvIHN0YXkgOikgIFRoYW5rcyBCcnVubyBPbGl2ZWlyYS4KLQot
LSBTdXBwb3J0IGJ1aWxkaW5nIHdoZWVscyBieSB1c2luZyBlbnZpcm9ubWVudCBtYXJrZXJzIGZv
ciB0aGUKLSAgcmVxdWlyZW1lbnRzLiAgVGhhbmtzIElvbmVsIE1hcmllcyBDcmlzdGlhbi4KLQot
LSBmaXhlZCByZWdyZXNzaW9uIHRvIDIuNi40IHdoaWNoIHN1cmZhY2VkIGUuZy4gaW4gbG9zdCBz
dGRvdXQgY2FwdHVyZSBwcmludGluZwotICB3aGVuIHRlc3RzIHJhaXNlZCBTeXN0ZW1FeGl0LiBU
aGFua3MgSG9sZ2VyIEtyZWtlbC4KLQotLSByZWludHJvZHVjZWQgX3B5dGVzdCBmaXh0dXJlIG9m
IHRoZSBweXRlc3RlciBwbHVnaW4gd2hpY2ggaXMgdXNlZAotICBhdCBsZWFzdCBieSBweXRlc3Qt
eGRpc3QuCi0KLTIuNy4wICgyMDE1LTAzLTI2KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4
IGlzc3VlNDM1OiBtYWtlIHJlbG9hZCgpIHdvcmsgd2hlbiBhc3NlcnQgcmV3cml0aW5nIGlzIGFj
dGl2ZS4KLSAgVGhhbmtzIERhbmllbCBIYWhsZXIuCi0KLS0gZml4IGlzc3VlNjE2OiBjb25mdGVz
dC5weSBmaWxlcyBhbmQgdGhlaXIgY29udGFpbmVkIGZpeHV0cmVzIGFyZSBub3cKLSAgcHJvcGVy
bHkgY29uc2lkZXJlZCBmb3IgdmlzaWJpbGl0eSwgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBleGFj
dAotICBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCB0ZXN0IGFyZ3VtZW50cyB0aGF0IGFy
ZSB1c2VkLgotICBNYW55IHRoYW5rcyB0byBFcmljIFNpZWdlcm1hbiBhbmQgaGlzIFBSMjM1IHdo
aWNoIGNvbnRhaW5zCi0gIHN5c3RlbWF0aWMgdGVzdHMgZm9yIGNvbmZ0ZXN0IHZpc2liaWxpdHkg
YW5kIG5vdyBwYXNzZXMuCi0gIFRoaXMgY2hhbmdlIGFsc28gaW50cm9kdWNlcyB0aGUgY29uY2Vw
dCBvZiBhIGBgcm9vdGRpcmBgIHdoaWNoCi0gIGlzIHByaW50ZWQgYXMgYSBuZXcgcHl0ZXN0IGhl
YWRlciBhbmQgZG9jdW1lbnRlZCBpbiB0aGUgcHl0ZXN0Ci0gIGN1c3RvbWl6ZSB3ZWIgcGFnZS4K
LQotLSBjaGFuZ2UgcmVwb3J0aW5nIG9mICJkaXZlcnRlZCIgdGVzdHMsIGkuZS4gdGVzdHMgdGhh
dCBhcmUgY29sbGVjdGVkCi0gIGluIG9uZSBmaWxlIGJ1dCBhY3R1YWxseSBjb21lIGZyb20gYW5v
dGhlciAoZS5nLiB3aGVuIHRlc3RzIGluIGEgdGVzdCBjbGFzcwotICBjb21lIGZyb20gYSBiYXNl
IGNsYXNzIGluIGEgZGlmZmVyZW50IGZpbGUpLiAgV2Ugbm93IHNob3cgdGhlIG5vZGVpZAotICBh
bmQgaW5kaWNhdGUgdmlhIGEgcG9zdGZpeCB0aGUgb3RoZXIgZmlsZS4KLQotLSBhZGQgYWJpbGl0
eSB0byBzZXQgY29tbWFuZCBsaW5lIG9wdGlvbnMgYnkgZW52aXJvbm1lbnQgdmFyaWFibGUgUFlU
RVNUX0FERE9QVFMuCi0KLS0gYWRkZWQgZG9jdW1lbnRhdGlvbiBvbiB0aGUgbmV3IHB5dGVzdC1k
ZXYgdGVhbXMgb24gYml0YnVja2V0IGFuZAotICBnaXRodWIuICBTZWUgaHR0cHM6Ly9weXRlc3Qu
b3JnL2xhdGVzdC9jb250cmlidXRpbmcuaHRtbCAuCi0gIFRoYW5rcyB0byBBbmF0b2x5IGZvciBw
dXNoaW5nIGFuZCBpbml0aWFsIHdvcmsgb24gdGhpcy4KLQotLSBmaXggaXNzdWU2NTA6IG5ldyBv
cHRpb24gYGAtLWRvY3R0ZXN0LWlnbm9yZS1pbXBvcnQtZXJyb3JzYGAgd2hpY2gKLSAgd2lsbCB0
dXJuIGltcG9ydCBlcnJvcnMgaW4gZG9jdGVzdHMgaW50byBza2lwcy4gIFRoYW5rcyBDaGFybGVz
IENsb3VkCi0gIGZvciB0aGUgY29tcGxldGUgUFIuCi0KLS0gZml4IGlzc3VlNjU1OiB3b3JrIGFy
b3VuZCBkaWZmZXJlbnQgd2F5cyB0aGF0IGNhdXNlIHB5dGhvbjIvMwotICB0byBsZWFrIHN5cy5l
eGNfaW5mbyBpbnRvIGZpeHR1cmVzL3Rlc3RzIGNhdXNpbmcgZmFpbHVyZXMgaW4gM3JkIHBhcnR5
IGNvZGUKLQotLSBmaXggaXNzdWU2MTU6IGFzc2VydGlvbiByZXdyaXRpbmcgZGlkIG5vdCBjb3Jy
ZWN0bHkgZXNjYXBlICUgc2lnbnMKLSAgd2hlbiBmb3JtYXR0aW5nIGJvb2xlYW4gb3BlcmF0aW9u
cywgd2hpY2ggdHJpcHBlZCBvdmVyIG1peGluZwotICBib29sZWFucyB3aXRoIG1vZHVsbyBvcGVy
YXRvcnMuICBUaGFua3MgdG8gVG9tIFZpbmVyIGZvciB0aGUgcmVwb3J0LAotICB0cmlhZ2luZyBh
bmQgZml4LgotCi0tIGltcGxlbWVudCBpc3N1ZTM1MTogYWRkIGFiaWxpdHkgdG8gc3BlY2lmeSBw
YXJhbWV0cml6ZSBpZHMgYXMgYSBjYWxsYWJsZQotICB0byBnZW5lcmF0ZSBjdXN0b20gdGVzdCBp
ZHMuICBUaGFua3MgQnJpYW5uYSBMYXVnaGVyIGZvciB0aGUgaWRlYSBhbmQKLSAgaW1wbGVtZW50
YXRpb24uCi0KLS0gaW50cm9kdWNlIGFuZCBkb2N1bWVudCBuZXcgaG9va3dyYXBwZXIgbWVjaGFu
aXNtIHVzZWZ1bCBmb3IgcGx1Z2lucwotICB3aGljaCB3YW50IHRvIHdyYXAgdGhlIGV4ZWN1dGlv
biBvZiBjZXJ0YWluIGhvb2tzIGZvciB0aGVpciBwdXJwb3Nlcy4KLSAgVGhpcyBzdXBlcnNlZGVz
IHRoZSB1bmRvY3VtZW50ZWQgYGBfX211bHRpY2FsbF9fYGAgcHJvdG9jb2wgd2hpY2gKLSAgcHl0
ZXN0IGl0c2VsZiBhbmQgc29tZSBleHRlcm5hbCBwbHVnaW5zIHVzZS4gIE5vdGUgdGhhdCBweXRl
c3QtMi44Ci0gIGlzIHNjaGVkdWxlZCB0byBkcm9wIHN1cHBvcnRpbmcgdGhlIG9sZCBgYF9fbXVs
dGljYWxsX19gYAotICBhbmQgb25seSBzdXBwb3J0IHRoZSBob29rd3JhcHBlciBwcm90b2NvbC4K
LQotLSBtYWpvcmx5IHNwZWVkIHVwIGludm9jYXRpb24gb2YgcGx1Z2luIGhvb2tzCi0KLS0gdXNl
IGhvb2t3cmFwcGVyIG1lY2hhbmlzbSBpbiBidWlsdGluIHB5dGVzdCBwbHVnaW5zLgotCi0tIGFk
ZCBhIGRvY3Rlc3QgaW5pIG9wdGlvbiBmb3IgZG9jdGVzdCBmbGFncywgdGhhbmtzIEhvbGdlciBQ
ZXRlcnMuCi0KLS0gYWRkIG5vdGUgdG8gZG9jcyB0aGF0IGlmIHlvdSB3YW50IHRvIG1hcmsgYSBw
YXJhbWV0ZXIgYW5kIHRoZQotICBwYXJhbWV0ZXIgaXMgYSBjYWxsYWJsZSwgeW91IGFsc28gbmVl
ZCB0byBwYXNzIGluIGEgcmVhc29uIHRvIGRpc2FtYmlndWF0ZQotICBpdCBmcm9tIHRoZSAiZGVj
b3JhdG9yIiBjYXNlLiAgVGhhbmtzIFRvbSBWaW5lci4KLQotLSAicHl0aG9uX2NsYXNzZXMiIGFu
ZCAicHl0aG9uX2Z1bmN0aW9ucyIgb3B0aW9ucyBub3cgc3VwcG9ydCBnbG9iLXBhdHRlcm5zCi0g
IGZvciB0ZXN0IGRpc2NvdmVyeSwgYXMgZGlzY3Vzc2VkIGluIGlzc3VlNjAwLiBUaGFua3MgTGRp
YXJ5IFRyYW5zbGF0aW9ucy4KLQotLSBhbGxvdyB0byBvdmVycmlkZSBwYXJhbWV0cml6ZWQgZml4
dHVyZXMgd2l0aCBub24tcGFyYW1ldHJpemVkIG9uZXMgYW5kIHZpY2UgdmVyc2EgKGJ1YmVua29m
ZikuCi0KLS0gZml4IGlzc3VlNDYzOiByYWlzZSBzcGVjaWZpYyBlcnJvciBmb3IgJ3BhcmFtZXRl
cml6ZScgbWlzc3BlbGxpbmcgKHBmY3RkYXllbGlzZSkuCi0KLS0gT24gZmFpbHVyZSwgdGhlIGBg
c3lzLmxhc3RfdmFsdWVgYCwgYGBzeXMubGFzdF90eXBlYGAgYW5kCi0gIGBgc3lzLmxhc3RfdHJh
Y2ViYWNrYGAgYXJlIHNldCwgc28gdGhhdCBhIHVzZXIgY2FuIGluc3BlY3QgdGhlIGVycm9yCi0g
IHZpYSBwb3N0bW9ydGVtIGRlYnVnZ2luZyAoYWxtYXJrbGVpbikuCi0KLTIuNi40ICgyMDE0LTEw
LTI0KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gSW1wcm92ZSBhc3NlcnRpb24gZmFpbHVyZSBy
ZXBvcnRpbmcgb24gaXRlcmFibGVzLCBieSB1c2luZyBuZGlmZiBhbmQKLSAgcHByaW50LgotCi0t
IHJlbW92ZWQgb3V0ZGF0ZWQgamFwYW5lc2UgZG9jcyBmcm9tIHNvdXJjZSB0cmVlLgotCi0tIGRv
Y3MgZm9yICJweXRlc3RfYWRkaG9va3MiIGhvb2suICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEuCi0K
LS0gdXBkYXRlZCBwbHVnaW4gaW5kZXggZG9jcy4gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYS4KLQot
LSBmaXggaXNzdWU1NTc6IHdpdGggIi1rIiB3ZSBvbmx5IGFsbG93IHRoZSBvbGQgc3R5bGUgIi0i
IGZvciBuZWdhdGlvbgotICBhdCB0aGUgYmVnaW5uaW5nIG9mIHN0cmluZ3MgYW5kIGV2ZW4gdGhh
dCBpcyBkZXByZWNhdGVkLiAgVXNlICJub3QiIGluc3RlYWQuCi0gIFRoaXMgc2hvdWxkIGFsbG93
IHRvIHBpY2sgcGFyYW1ldHJpemVkIHRlc3RzIHdoZXJlICItIiBhcHBlYXJlZCBpbiB0aGUgcGFy
YW1ldGVyLgotCi0tIGZpeCBpc3N1ZTYwNDogRXNjYXBlICUgY2hhcmFjdGVyIGluIHRoZSBhc3Nl
cnRpb24gbWVzc2FnZS4KLQotLSBmaXggaXNzdWU2MjA6IGFkZCBleHBsYW5hdGlvbiBpbiB0aGUg
LS1nZW5zY3JpcHQgdGFyZ2V0IGFib3V0IHdoYXQKLSAgdGhlIGJpbmFyeSBibG9iIG1lYW5zLiBU
aGFua3MgRGludSBHaGVybWFuLgotCi0tIGZpeCBpc3N1ZTYxNDogZml4ZWQgcGFzdGViaW4gc3Vw
cG9ydC4KLQotCi0tIGZpeCBpc3N1ZTYyMDogYWRkIGV4cGxhbmF0aW9uIGluIHRoZSAtLWdlbnNj
cmlwdCB0YXJnZXQgYWJvdXQgd2hhdAotICB0aGUgYmluYXJ5IGJsb2IgbWVhbnMuIFRoYW5rcyBE
aW51IEdoZXJtYW4uCi0KLS0gZml4IGlzc3VlNjE0OiBmaXhlZCBwYXN0ZWJpbiBzdXBwb3J0Lgot
Ci0yLjYuMyAoMjAxNC0wOS0yNCkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTU3
NTogeHVuaXQteG1sIHdhcyByZXBvcnRpbmcgY29sbGVjdGlvbiBlcnJvcnMgYXMgZmFpbHVyZXMK
LSAgaW5zdGVhZCBvZiBlcnJvcnMsIHRoYW5rcyBPbGVnIFNpbnlhdnNraXkuCi0KLS0gZml4IGlz
c3VlNTgyOiBmaXggc2V0dXB0b29scyBleGFtcGxlLCB0aGFua3MgTGFzemxvIFBhcHAgYW5kIFJv
bm55Ci0gIFBmYW5uc2NobWlkdC4KLQotLSBGaXggaW5maW5pdGUgcmVjdXJzaW9uIGJ1ZyB3aGVu
IHBpY2tsaW5nIGNhcHR1cmUuRW5jb2RlZEZpbGUsIHRoYW5rcwotICBVd2UgU2NobWl0dC4KLQot
LSBmaXggaXNzdWU1ODk6IGZpeCBiYWQgaW50ZXJhY3Rpb24gd2l0aCBudW1weSBhbmQgb3RoZXJz
IHdoZW4gc2hvd2luZwotICBleGNlcHRpb25zLiAgQ2hlY2sgZm9yIHByZWNpc2UgIm1heGltdW0g
cmVjdXJzaW9uIGRlcHRoIGV4Y2VlZCIgZXhjZXB0aW9uCi0gIGluc3RlYWQgb2YgcHJlc3VtaW5n
IGFueSBSdW50aW1lRXJyb3IgaXMgdGhhdCBvbmUgKGltcGxlbWVudGVkIGluIHB5Ci0gIGRlcCku
ICBUaGFua3MgQ2hhcmxlcyBDbG91ZCBmb3IgYW5hbHlzaW5nIHRoZSBpc3N1ZS4KLQotLSBmaXgg
Y29uZnRlc3QgcmVsYXRlZCBmaXh0dXJlIHZpc2liaWxpdHkgaXNzdWU6IHdoZW4gcnVubmluZyB3
aXRoIGEKLSAgQ1dEIG91dHNpZGUgb2YgYSB0ZXN0IHBhY2thZ2UgcHl0ZXN0IHdvdWxkIGdldCBm
aXh0dXJlIGRpc2NvdmVyeSB3cm9uZy4KLSAgVGhhbmtzIHRvIFdvbGZnYW5nIFNjaG5lcnJpbmcg
Zm9yIGZpZ3VyaW5nIG91dCBhIHJlcHJvZHVjaWJsZSBleGFtcGxlLgotCi0tIEludHJvZHVjZSBw
eXRlc3RfZW50ZXJfcGRiIGhvb2sgKG5lZWRlZCBlLmcuIGJ5IHB5dGVzdF90aW1lb3V0IHRvIGNh
bmNlbCB0aGUKLSAgdGltZW91dCB3aGVuIGludGVyYWN0aXZlbHkgZW50ZXJpbmcgcGRiKS4gIFRo
YW5rcyBXb2xmZ2FuZyBTY2huZXJyaW5nLgotCi0tIGNoZWNrIHhmYWlsL3NraXAgYWxzbyB3aXRo
IG5vbi1weXRob24gZnVuY3Rpb24gdGVzdCBpdGVtcy4gVGhhbmtzCi0gIEZsb3JpcyBCcnV5bm9v
Z2hlLgotCi0yLjYuMiAoMjAxNC0wOS0wNSkKLT09PT09PT09PT09PT09PT09PQotCi0tIEFkZGVk
IGZ1bmN0aW9uIHB5dGVzdC5mcmVlemVfaW5jbHVkZXMoKSwgd2hpY2ggbWFrZXMgaXQgZWFzeSB0
byBlbWJlZAotICBweXRlc3QgaW50byBleGVjdXRhYmxlcyB1c2luZyB0b29scyBsaWtlIGN4X2Zy
ZWV6ZS4KLSAgU2VlIGRvY3MgZm9yIGV4YW1wbGVzIGFuZCByYXRpb25hbGUuIFRoYW5rcyBCcnVu
byBPbGl2ZWlyYS4KLQotLSBJbXByb3ZlIGFzc2VydGlvbiByZXdyaXRpbmcgY2FjaGUgaW52YWxp
ZGF0aW9uIHByZWNpc2lvbi4KLQotLSBmaXhlZCBpc3N1ZTU2MTogYWRhcHQgYXV0b3VzZSBmaXh0
dXJlIGV4YW1wbGUgZm9yIHB5dGhvbjMuCi0KLS0gZml4ZWQgaXNzdWU0NTM6IGFzc2VydGlvbiBy
ZXdyaXRpbmcgaXNzdWUgd2l0aCBfX3JlcHJfXyBjb250YWluaW5nCi0gICJcbnsiLCAiXG59IiBh
bmQgIlxufiIuCi0KLS0gZml4IGlzc3VlNTYwOiBjb3JyZWN0bHkgZGlzcGxheSBjb2RlIGlmIGFu
ICJlbHNlOiIgb3IgImZpbmFsbHk6IiBpcwotICBmb2xsb3dlZCBieSBzdGF0ZW1lbnRzIG9uIHRo
ZSBzYW1lIGxpbmUuCi0KLS0gRml4IGV4YW1wbGUgaW4gbW9ua2V5cGF0Y2ggZG9jdW1lbnRhdGlv
biwgdGhhbmtzIHQtOGNoLgotCi0tIGZpeCBpc3N1ZTU3MjogY29ycmVjdCB0bXBkaXIgZG9jIGV4
YW1wbGUgZm9yIHB5dGhvbjMuCi0KLS0gRG8gbm90IG1hcmsgYXMgdW5pdmVyc2FsIHdoZWVsIGJl
Y2F1c2UgUHl0aG9uIDIuNiBpcyBkaWZmZXJlbnQgZnJvbQotICBvdGhlciBidWlsZHMgZHVlIHRv
IHRoZSBleHRyYSBhcmdwYXJzZSBkZXBlbmRlbmN5LiAgRml4ZXMgaXNzdWU1NjYuCi0gIFRoYW5r
cyBzb250ZWsuCi0KLS0gSW1wbGVtZW50IGlzc3VlNTQ5OiB1c2VyLXByb3ZpZGVkIGFzc2VydGlv
biBtZXNzYWdlcyBub3cgbm8gbG9uZ2VyCi0gIHJlcGxhY2UgdGhlIHB5LnRlc3QgaW50cm9zcGVj
dGlvbiBtZXNzYWdlIGJ1dCBhcmUgc2hvd24gaW4gYWRkaXRpb24KLSAgdG8gdGhlbS4KLQotMi42
LjEgKDIwMTQtMDgtMDcpCi09PT09PT09PT09PT09PT09PT0KLQotLSBObyBsb25nZXIgc2hvdyBs
aW5lIG51bWJlcnMgaW4gdGhlIC0tdmVyYm9zZSBvdXRwdXQsIHRoZSBvdXRwdXQgaXMgbm93Ci0g
IHB1cmVseSB0aGUgbm9kZWlkLiAgVGhlIGxpbmUgbnVtYmVyIGlzIHN0aWxsIHNob3duIGluIGZh
aWx1cmUgcmVwb3J0cy4KLSAgVGhhbmtzIEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIGZpeCBpc3N1
ZTQzNyB3aGVyZSBhc3NlcnRpb24gcmV3cml0aW5nIGNvdWxkIGNhdXNlIHB5dGVzdC14ZGlzdCBz
bGF2ZXMKLSAgdG8gY29sbGVjdCBkaWZmZXJlbnQgdGVzdHMuIFRoYW5rcyBCcnVubyBPbGl2ZWly
YS4KLQotLSBmaXggaXNzdWU1NTU6IGFkZCAiZXJyb3JzIiBhdHRyaWJ1dGUgdG8gY2FwdHVyZS1z
dHJlYW1zIHRvIHNhdGlzZnkKLSAgc29tZSBkaXN0dXRpbHMgYW5kIHBvc3NpYmx5IG90aGVyIGNv
ZGUgYWNjZXNzaW5nIHN5cy5zdGRvdXQuZXJyb3JzLgotCi0tIGZpeCBpc3N1ZTU0NyBjYXBzeXMv
Y2FwZmQgYWxzbyB3b3JrIHdoZW4gb3V0cHV0IGNhcHR1cmluZyAoIi1zIikgaXMgZGlzYWJsZWQu
Ci0KLS0gYWRkcmVzcyBpc3N1ZTE3MDogYWxsb3cgcHl0ZXN0Lm1hcmsueGZhaWwoLi4uKSB0byBz
cGVjaWZ5IGV4cGVjdGVkIGV4Y2VwdGlvbnMgdmlhCi0gIGFuIG9wdGlvbmFsICJyYWlzZXM9RVhD
IiBhcmd1bWVudCB3aGVyZSBFWEMgY2FuIGJlIGEgc2luZ2xlIGV4Y2VwdGlvbgotICBvciBhIHR1
cGxlIG9mIGV4Y2VwdGlvbiBjbGFzc2VzLiAgVGhhbmtzIERhdmlkIE1vaHIgZm9yIHRoZSBjb21w
bGV0ZQotICBQUi4KLQotLSBmaXggaW50ZWdyYXRpb24gb2YgcHl0ZXN0IHdpdGggdW5pdHRlc3Qu
bW9jay5wYXRjaCBkZWNvcmF0b3Igd2hlbgotICBpdCB1c2VzIHRoZSAibmV3IiBhcmd1bWVudC4g
IFRoYW5rcyBOaWNvbGFzIERlbGFieSBmb3IgdGVzdCBhbmQgUFIuCi0KLS0gZml4IGlzc3VlIHdp
dGggZGV0ZWN0aW5nIGNvbmZ0ZXN0IGZpbGVzIGlmIHRoZSBhcmd1bWVudHMgY29udGFpbgotICAi
OjoiIG5vZGUgaWQgc3BlY2lmaWNhdGlvbnMgKGNvcHkgcGFzdGVkIGZyb20gIi12IiBvdXRwdXQp
Ci0KLS0gZml4IGlzc3VlNTQ0IGJ5IG9ubHkgcmVtb3ZpbmcgIkBOVU0iIGF0IHRoZSBlbmQgb2Yg
Ijo6IiBzZXBhcmF0ZWQgcGFydHMKLSAgYW5kIGlmIHRoZSBwYXJ0IGhhcyBhICIucHkiIGV4dGVu
c2lvbgotCi0tIGRvbid0IHVzZSBweS5zdGQgaW1wb3J0IGhlbHBlciwgcmF0aGVyIGltcG9ydCB0
aGluZ3MgZGlyZWN0bHkuCi0gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYS4KLQotMi42Ci09PT0KLQot
LSBDYWNoZSBleGNlcHRpb25zIGZyb20gZml4dHVyZXMgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3Bl
IChpc3N1ZSA0NjcpLgotCi0tIGZpeCBpc3N1ZTUzNzogQXZvaWQgaW1wb3J0aW5nIG9sZCBhc3Nl
cnRpb24gcmVpbnRlcnByZXRhdGlvbiBjb2RlIGJ5IGRlZmF1bHQuCi0KLS0gZml4IGlzc3VlMzY0
OiBzaG9ydGVuIGFuZCBlbmhhbmNlIHRyYWNlYmFja3MgcmVwcmVzZW50YXRpb24gYnkgZGVmYXVs
dC4KLSAgVGhlIG5ldyAiLS10Yj1hdXRvIiBvcHRpb24gKGRlZmF1bHQpIHdpbGwgb25seSBkaXNw
bGF5IGxvbmcgdHJhY2ViYWNrcwotICBmb3IgdGhlIGZpcnN0IGFuZCBsYXN0IGVudHJ5LiAgWW91
IGNhbiBnZXQgdGhlIG9sZCBiZWhhdmlvdXIgb2YgcHJpbnRpbmcKLSAgYWxsIGVudHJpZXMgYXMg
bG9uZyBlbnRyaWVzIHdpdGggIi0tdGI9bG9uZyIuICBBbHNvIHNob3J0IGVudHJpZXMgYnkKLSAg
ZGVmYXVsdCBhcmUgbm93IHByaW50ZWQgdmVyeSBzaW1pbGFybHkgdG8gIi0tdGI9bmF0aXZlIiBv
bmVzLgotCi0tIGZpeCBpc3N1ZTUxNDogdGVhY2ggYXNzZXJ0aW9uIHJlaW50ZXJwcmV0YXRpb24g
YWJvdXQgcHJpdmF0ZSBjbGFzcyBhdHRyaWJ1dGVzCi0KLS0gY2hhbmdlIC12IG91dHB1dCB0byBp
bmNsdWRlIGZ1bGwgbm9kZSBJRHMgb2YgdGVzdHMuICBVc2VycyBjYW4gY29weQotICBhIG5vZGUg
SUQgZnJvbSBhIHRlc3QgcnVuLCBpbmNsdWRpbmcgbGluZSBudW1iZXIsIGFuZCB1c2UgaXQgYXMg
YQotICBwb3NpdGlvbmFsIGFyZ3VtZW50IGluIG9yZGVyIHRvIHJ1biBvbmx5IGEgc2luZ2xlIHRl
c3QuCi0KLS0gZml4IGlzc3VlIDQ3NTogZmFpbCBlYXJseSBhbmQgY29tcHJlaGVuc2libGUgaWYg
Y2FsbGluZwotICBweXRlc3QucmFpc2VzIHdpdGggd3JvbmcgZXhjZXB0aW9uIHR5cGUuCi0KLS0g
Zml4IGlzc3VlNTE2OiB0ZWxsIGluIGdldHRpbmctc3RhcnRlZCBhYm91dCBjdXJyZW50IGRlcGVu
ZGVuY2llcy4KLQotLSBjbGVhbnVwIHNldHVwLnB5IGEgYml0IGFuZCBzcGVjaWZ5IHN1cHBvcnRl
ZCB2ZXJzaW9ucy4gVGhhbmtzIEp1cmtvCi0gIEdvc3BvZG5ldGljIGZvciB0aGUgUFIuCi0KLS0g
Y2hhbmdlIFhQQVNTIGNvbG91ciB0byB5ZWxsb3cgcmF0aGVyIHRoZW4gcmVkIHdoZW4gdGVzdHMg
YXJlIHJ1bgotICB3aXRoIC12LgotCi0tIGZpeCBpc3N1ZTQ3Mzogd29yayBhcm91bmQgbW9jayBw
dXR0aW5nIGFuIHVuYm91bmQgbWV0aG9kIGludG8gYSBjbGFzcwotICBkaWN0IHdoZW4gZG91Ymxl
LXBhdGNoaW5nLgotCi0tIGZpeCBpc3N1ZTQ5ODogaWYgYSBmaXh0dXJlIGZpbmFsaXplciBmYWls
cywgbWFrZSBzdXJlIHRoYXQKLSAgdGhlIGZpeHR1cmUgaXMgc3RpbGwgaW52YWxpZGF0ZWQuCi0K
LS0gZml4IGlzc3VlNDUzOiB0aGUgcmVzdWx0IG9mIHRoZSBweXRlc3RfYXNzZXJ0cmVwcl9jb21w
YXJlIGhvb2sgbm93IGdldHMKLSAgaXQncyBuZXdsaW5lcyBlc2NhcGVkIHNvIHRoYXQgZm9ybWF0
X2V4Y2VwdGlvbiBkb2VzIG5vdCBibG93IHVwLgotCi0tIGludGVybmFsIG5ldyB3YXJuaW5nIHN5
c3RlbTogcHl0ZXN0IHdpbGwgbm93IHByb2R1Y2Ugd2FybmluZ3Mgd2hlbgotICBpdCBkZXRlY3Rz
IG9kZGl0aWVzIGluIHlvdXIgdGVzdCBjb2xsZWN0aW9uIG9yIGV4ZWN1dGlvbi4KLSAgV2Fybmlu
Z3MgYXJlIHVsdGltYXRlbHkgc2VudCB0byBhIG5ldyBweXRlc3RfbG9nd2FybmluZyBob29rIHdo
aWNoIGlzCi0gIGN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGJ5IHRoZSB0ZXJtaW5hbCBwbHVn
aW4gd2hpY2ggZGlzcGxheXMKLSAgd2FybmluZ3MgaW4gdGhlIHN1bW1hcnkgbGluZSBhbmQgc2hv
d3MgbW9yZSBkZXRhaWxzIHdoZW4gLXJ3IChyZXBvcnQgb24KLSAgd2FybmluZ3MpIGlzIHNwZWNp
ZmllZC4KLQotLSBjaGFuZ2Ugc2tpcHMgaW50byB3YXJuaW5ncyBmb3IgdGVzdCBjbGFzc2VzIHdp
dGggYW4gX19pbml0X18gYW5kCi0gIGNhbGxhYmxlcyBpbiB0ZXN0IG1vZHVsZXMgd2hpY2ggbG9v
ayBsaWtlIGEgdGVzdCBidXQgYXJlIG5vdCBmdW5jdGlvbnMuCi0KLS0gZml4IGlzc3VlNDM2OiBp
bXByb3ZlZCBmaW5kaW5nIG9mIGluaXRpYWwgY29uZnRlc3QgZmlsZXMgZnJvbSBjb21tYW5kCi0g
IGxpbmUgYXJndW1lbnRzIGJ5IHVzaW5nIHRoZSByZXN1bHQgb2YgcGFyc2Vfa25vd25fYXJncyBy
YXRoZXIgdGhhbgotICB0aGUgcHJldmlvdXMgZmxha3kgaGV1cmlzdGljcy4gIFRoYW5rcyBNYXJj
IEFicmFtb3dpdHogZm9yIHRlc3RzCi0gIGFuZCBpbml0aWFsIGZpeGluZyBhcHByb2FjaGVzIGlu
IHRoaXMgYXJlYS4KLQotLSBmaXggaXNzdWUgIzQ3OTogcHJvcGVybHkgaGFuZGxlIG5vc2UvdW5p
dHRlc3QoMikgU2tpcFRlc3QgZXhjZXB0aW9ucwotICBkdXJpbmcgY29sbGVjdGlvbi9sb2FkaW5n
IG9mIHRlc3QgbW9kdWxlcy4gIFRoYW5rcyB0byBNYXJjIFNjaGxhaWNoCi0gIGZvciB0aGUgY29t
cGxldGUgUFIuCi0KLS0gZml4IGlzc3VlNDkwOiBpbmNsdWRlIHB5dGVzdF9sb2FkX2luaXRpYWxf
Y29uZnRlc3RzIGluIGRvY3VtZW50YXRpb24KLSAgYW5kIGltcHJvdmUgZG9jc3RyaW5nLgotCi0t
IGZpeCBpc3N1ZTQ3MjogY2xhcmlmeSB0aGF0IGBgcHl0ZXN0LmNvbmZpZy5nZXR2YWx1ZSgpYGAg
Y2Fubm90IHdvcmsKLSAgaWYgaXQncyB0cmlnZ2VyZWQgYWhlYWQgb2YgY29tbWFuZCBsaW5lIHBh
cnNpbmcuCi0KLS0gbWVyZ2UgUFIxMjM6IGltcHJvdmVkIGludGVncmF0aW9uIHdpdGggbW9jay5w
YXRjaCBkZWNvcmF0b3Igb24gdGVzdHMuCi0KLS0gZml4IGlzc3VlNDEyOiBtZXNzaW5nIHdpdGgg
c3Rkb3V0L3N0ZGVyciBGRC1sZXZlbCBzdHJlYW1zIGlzIG5vdwotICBjYXB0dXJlZCB3aXRob3V0
IGNyYXNoZXMuCi0KLS0gZml4IGlzc3VlNDgzOiB0cmlhbC9weTMzIHdvcmtzIG5vdyBwcm9wZXJs
eS4gIFRoYW5rcyBEYW5pZWwgR3JhbmEgZm9yIFBSLgotCi0tIGltcHJvdmUgZXhhbXBsZSBmb3Ig
cHl0ZXN0IGludGVncmF0aW9uIHdpdGggInB5dGhvbiBzZXR1cC5weSB0ZXN0IgotICB3aGljaCBu
b3cgaGFzIGEgZ2VuZXJpYyAiLWEiIG9yICItLXB5dGVzdC1hcmdzIiBvcHRpb24gd2hlcmUgeW91
Ci0gIGNhbiBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucyBhcyBhIHF1b3RlZCBzdHJpbmcuICBUaGFu
a3MgVHJldm9yIEJla29sYXkuCi0KLS0gc2ltcGxpZmllZCBpbnRlcm5hbCBjYXB0dXJpbmcgbWVj
aGFuaXNtIGFuZCBtYWRlIGl0IG1vcmUgcm9idXN0Ci0gIGFnYWluc3QgdGVzdHMgb3Igc2V0dXBz
IGNoYW5naW5nIEZEMS9GRDIsIGFsc28gYmV0dGVyIGludGVncmF0ZWQKLSAgbm93IHdpdGggcHl0
ZXN0LnBkYigpIGluIHNpbmdsZSB0ZXN0cy4KLQotLSBpbXByb3ZlbWVudHMgdG8gcHl0ZXN0J3Mg
b3duIHRlc3Qtc3VpdGUgbGVha2FnZSBkZXRlY3Rpb24sIGNvdXJ0ZXN5IG9mIFBScwotICBmcm9t
IE1hcmMgQWJyYW1vd2l0egotCi0tIGZpeCBpc3N1ZTQ5MjogYXZvaWQgbGVhayBpbiB0ZXN0X3dy
aXRlb3JnLiAgVGhhbmtzIE1hcmMgQWJyYW1vd2l0ei4KLQotLSBmaXggaXNzdWU0OTM6IGRvbid0
IHJ1biB0ZXN0cyBpbiBkb2MgZGlyZWN0b3J5IHdpdGggYGBweXRob24gc2V0dXAucHkgdGVzdGBg
Ci0gICh1c2UgdG94IC1lIGRvY3Rlc3RpbmcgZm9yIHRoYXQpCi0KLS0gZml4IGlzc3VlNDg2OiBi
ZXR0ZXIgcmVwb3J0aW5nIGFuZCBoYW5kbGluZyBvZiBlYXJseSBjb25mdGVzdCBsb2FkaW5nIGZh
aWx1cmVzCi0KLS0gc29tZSBjbGVhbnVwIGFuZCBzaW1wbGlmaWNhdGlvbiBvZiBpbnRlcm5hbCBj
b25mdGVzdCBoYW5kbGluZy4KLQotLSB3b3JrIGEgYml0IGhhcmRlciB0byBicmVhayByZWZlcmVu
Y2UgY3ljbGVzIHdoZW4gY2F0Y2hpbmcgZXhjZXB0aW9ucy4KLSAgVGhhbmtzIEp1cmtvIEdvc3Bv
ZG5ldGljLgotCi0tIGZpeCBpc3N1ZTQ0MzogZml4IHNraXAgZXhhbXBsZXMgdG8gdXNlIHByb3Bl
ciBjb21wYXJpc29uLiAgVGhhbmtzIEFsZXgKLSAgR3JvZW5ob2xtLgotCi0tIHN1cHBvcnQgbm9z
ZS1zdHlsZSBgYF9fdGVzdF9fYGAgYXR0cmlidXRlIG9uIG1vZHVsZXMsIGNsYXNzZXMgYW5kCi0g
IGZ1bmN0aW9ucywgaW5jbHVkaW5nIHVuaXR0ZXN0LXN0eWxlIENsYXNzZXMuICBJZiBzZXQgdG8g
RmFsc2UsIHRoZQotICB0ZXN0IHdpbGwgbm90IGJlIGNvbGxlY3RlZC4KLQotLSBmaXggaXNzdWU1
MTI6IHNob3cgIjxub3RzZXQ+IiBmb3IgYXJndW1lbnRzIHdoaWNoIG1pZ2h0IG5vdCBiZSBzZXQK
LSAgaW4gbW9ua2V5cGF0Y2ggcGx1Z2luLiAgSW1wcm92ZXMgb3V0cHV0IGluIGRvY3VtZW50YXRp
b24uCi0KLQotMi41LjIgKDIwMTQtMDEtMjkpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXgg
aXNzdWU0MDkgLS0gYmV0dGVyIGludGVyb3BlcmF0ZSB3aXRoIGN4X2ZyZWV6ZSBieSBub3QKLSAg
dHJ5aW5nIHRvIGltcG9ydCBmcm9tIGNvbGxlY3Rpb25zLmFiYyB3aGljaCBjYXVzZXMgcHJvYmxl
bXMKLSAgZm9yIHB5MjcvY3hfZnJlZXplLiAgVGhhbmtzIFdvbGZnYW5nIEwuIGZvciByZXBvcnRp
bmcgYW5kIHRyYWNraW5nIGl0IGRvd24uCi0KLS0gZml4ZWQgZG9jcyBhbmQgY29kZSB0byB1c2Ug
InB5dGVzdCIgaW5zdGVhZCBvZiAicHkudGVzdCIgYWxtb3N0IGV2ZXJ5d2hlcmUuCi0gIFRoYW5r
cyBKdXJrbyBHb3Nwb2RuZXRpYyBmb3IgdGhlIGNvbXBsZXRlIFBSLgotCi0tIGZpeCBpc3N1ZTQy
NTogbWVudGlvbiBhdCBlbmQgb2YgInB5LnRlc3QgLWgiIHRoYXQgLS1tYXJrZXJzCi0gIGFuZCAt
LWZpeHR1cmVzIHdvcmsgYWNjb3JkaW5nIHRvIHNwZWNpZmllZCB0ZXN0IHBhdGggKG9yIGN1cnJl
bnQgZGlyKQotCi0tIGZpeCBpc3N1ZTQxMzogZXhjZXB0aW9ucyB3aXRoIHVuaWNvZGUgYXR0cmli
dXRlcyBhcmUgbm93IHByaW50ZWQKLSAgY29ycmVjdGx5IGFsc28gb24gcHl0aG9uMiBhbmQgd2l0
aCBweXRlc3QteGRpc3QgcnVucy4gKHRoZSBmaXgKLSAgcmVxdWlyZXMgcHktMS40LjIwKQotCi0t
IGNvcHksIGNsZWFudXAgYW5kIGludGVncmF0ZSBweS5pbyBjYXB0dXJlCi0gIGZyb20gcHlsaWIg
MS40LjIwLmRldjIgKHJldiAxM2Q5YWY5NTU0N2UpCi0KLS0gYWRkcmVzcyBpc3N1ZTQxNjogY2xh
cmlmeSBkb2NzIGFzIHRvIGNvbmZ0ZXN0LnB5IGxvYWRpbmcgc2VtYW50aWNzCi0KLS0gZml4IGlz
c3VlNDI5OiBjb21wYXJpbmcgYnl0ZSBzdHJpbmdzIHdpdGggbm9uLWFzY2lpIGNoYXJzIGluIGFz
c2VydAotICBleHByZXNzaW9ucyBub3cgd29yayBiZXR0ZXIuICBUaGFua3MgRmxvcmlzIEJydXlu
b29naGUuCi0KLS0gbWFrZSBjYXBmZC9jYXBzeXMuY2FwdHVyZSBwcml2YXRlLCBpdHMgdW51c2Vk
IGFuZCBzaG91bGRuJ3QgYmUgZXhwb3NlZAotCi0KLTIuNS4xICgyMDEzLTEyLTE3KQotPT09PT09
PT09PT09PT09PT09Ci0KLS0gbWVyZ2UgbmV3IGRvY3VtZW50YXRpb24gc3R5bGluZyBQUiBmcm9t
IFRvYmlhcyBCaWVuaWVrLgotCi0tIGZpeCBpc3N1ZTQwMzogYWxsb3cgcGFyYW1ldHJpemUgb2Yg
bXVsdGlwbGUgc2FtZS1uYW1lIGZ1bmN0aW9ucyB3aXRoaW4KLSAgYSBjb2xsZWN0aW9uIG5vZGUu
ICBUaGFua3MgQW5kcmVhcyBLbG9lY2tuZXIgYW5kIEFsZXggR2F5bm9yIGZvciByZXBvcnRpbmcK
LSAgYW5kIGFuYWx5c2lzLgotCi0tIEFsbG93IHBhcmFtZXRlcml6ZWQgZml4dHVyZXMgdG8gc3Bl
Y2lmeSB0aGUgSUQgb2YgdGhlIHBhcmFtZXRlcnMgYnkKLSAgYWRkaW5nIGFuIGlkcyBhcmd1bWVu
dCB0byBweXRlc3QuZml4dHVyZSgpIGFuZCBweXRlc3QueWllbGRfZml4dHVyZSgpLgotICBUaGFu
a3MgRmxvcmlzIEJydXlub29naGUuCi0KLS0gZml4IGlzc3VlNDA0IGJ5IGFsd2F5cyB1c2luZyB0
aGUgYmluYXJ5IHhtbCBlc2NhcGUgaW4gdGhlIGp1bml0eG1sCi0gIHBsdWdpbi4gIFRoYW5rcyBS
b25ueSBQZmFubnNjaG1pZHQuCi0KLS0gZml4IGlzc3VlNDA3OiBmaXggYWRkb3B0aW9uIGRvY3N0
cmluZyB0byBwb2ludCB0byBhcmdwYXJzZSBpbnN0ZWFkIG9mCi0gIG9wdHBhcnNlLiBUaGFua3Mg
RGFuaWVsIEQuIFdyaWdodC4KLQotCi0KLTIuNS4wICgyMDEzLTEyLTEyKQotPT09PT09PT09PT09
PT09PT09Ci0KLS0gZHJvcHBlZCBweXRob24yLjUgZnJvbSBhdXRvbWF0ZWQgcmVsZWFzZSB0ZXN0
aW5nIG9mIHB5dGVzdCBpdHNlbGYKLSAgd2hpY2ggbWVhbnMgaXQncyBwcm9iYWJseSBnb2luZyB0
byBicmVhayBzb29uIChidXQgc3RpbGwgd29ya3MKLSAgd2l0aCB0aGlzIHJlbGVhc2Ugd2UgYmVs
aWV2ZSkuCi0KLS0gc2ltcGxpZmllZCBhbmQgZml4ZWQgaW1wbGVtZW50YXRpb24gZm9yIGNhbGxp
bmcgZmluYWxpemVycyB3aGVuCi0gIHBhcmFtZXRyaXplZCBmaXh0dXJlcyBvciBmdW5jdGlvbiBh
cmd1bWVudHMgYXJlIGludm9sdmVkLiAgZmluYWxpemF0aW9uCi0gIGlzIG5vdyBwZXJmb3JtZWQg
bGF6aWx5IGF0IHNldHVwIHRpbWUgaW5zdGVhZCBvZiBpbiB0aGUgInRlYXJkb3duIHBoYXNlIi4K
LSAgV2hpbGUgdGhpcyBtaWdodCBzb3VuZCBvZGQgYXQgZmlyc3QsIGl0IGhlbHBzIHRvIGVuc3Vy
ZSB0aGF0IHdlIGFyZQotICBjb3JyZWN0bHkgaGFuZGxpbmcgc2V0dXAvdGVhcmRvd24gZXZlbiBp
biBjb21wbGV4IGNvZGUuICBVc2VyLWxldmVsIGNvZGUKLSAgc2hvdWxkIG5vdCBiZSBhZmZlY3Rl
ZCB1bmxlc3MgaXQncyBpbXBsZW1lbnRpbmcgdGhlIHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duCi0g
IGhvb2sgYW5kIGV4cGVjdGluZyBjZXJ0YWluIGZpeHR1cmUgaW5zdGFuY2VzIGFyZSB0b3JuIGRv
d24gd2l0aGluICh2ZXJ5Ci0gIHVubGlrZWx5IGFuZCB3b3VsZCBoYXZlIGJlZW4gdW5yZWxpYWJs
ZSBhbnl3YXkpLgotCi0tIFBSOTA6IGFkZCAtLWNvbG9yPXllc3xub3xhdXRvIG9wdGlvbiB0byBm
b3JjZSB0ZXJtaW5hbCBjb2xvcmluZwotICBtb2RlICgiYXV0byIgaXMgZGVmYXVsdCkuICBUaGFu
a3MgTWFyYyBBYnJhbW93aXR6LgotCi0tIGZpeCBpc3N1ZTMxOSAtIGNvcnJlY3RseSBzaG93IHVu
aWNvZGUgaW4gYXNzZXJ0aW9uIGVycm9ycy4gIE1hbnkKLSAgdGhhbmtzIHRvIEZsb3JpcyBCcnV5
bm9vZ2hlIGZvciB0aGUgY29tcGxldGUgUFIuICBBbHNvIG1lYW5zCi0gIHdlIGRlcGVuZCBvbiBw
eT49MS40LjE5IG5vdy4KLQotLSBmaXggaXNzdWUzOTYgLSBjb3JyZWN0bHkgc29ydCBhbmQgZmlu
YWxpemUgY2xhc3Mtc2NvcGVkIHBhcmFtZXRyaXplZAotICB0ZXN0cyBpbmRlcGVuZGVudGx5IGZy
b20gbnVtYmVyIG9mIG1ldGhvZHMgb24gdGhlIGNsYXNzLgotCi0tIHJlZml4IGlzc3VlMzIzIGlu
IGEgYmV0dGVyIHdheSAtLSBwYXJhbWV0cml6YXRpb24gc2hvdWxkIG5vdyBuZXZlcgotICBjYXVz
ZSBSdW50aW1lIFJlY3Vyc2lvbiBlcnJvcnMgYmVjYXVzZSB0aGUgdW5kZXJseWluZyBhbGdvcml0
aG0KLSAgZm9yIHJlLW9yZGVyaW5nIHRlc3RzIHBlci1zY29wZS9wZXItZml4dHVyZSBpcyBub3Qg
cmVjdXJzaXZlCi0gIGFueW1vcmUgKGl0IHdhcyB0YWlsLWNhbGwgcmVjdXJzaXZlIGJlZm9yZSB3
aGljaCBjb3VsZCBsZWFkCi0gIHRvIHByb2JsZW1zIGZvciBtb3JlIHRoYW4gPjk2NiBub24tZnVu
Y3Rpb24gc2NvcGVkIHBhcmFtZXRlcnMpLgotCi0tIGZpeCBpc3N1ZTI5MCAtIHRoZXJlIGlzIHBy
ZWxpbWluYXJ5IHN1cHBvcnQgbm93IGZvciBwYXJhbWV0cml6aW5nCi0gIHdpdGggcmVwZWF0ZWQg
c2FtZSB2YWx1ZXMgKHNvbWV0aW1lcyB1c2VmdWwgdG8gdGVzdCBpZiBjYWxsaW5nCi0gIGEgc2Vj
b25kIHRpbWUgd29ya3MgYXMgd2l0aCB0aGUgZmlyc3QgdGltZSkuCi0KLS0gY2xvc2UgaXNzdWUy
NDAgLSBkb2N1bWVudCBwcmVjaXNlbHkgaG93IHB5dGVzdCBtb2R1bGUgaW1wb3J0aW5nCi0gIHdv
cmtzLCBkaXNjdXNzIHRoZSB0d28gY29tbW9uIHRlc3QgZGlyZWN0b3J5IGxheW91dHMsIGFuZCBo
b3cgaXQKLSAgaW50ZXJhY3RzIHdpdGggUEVQNDIwLW5hbWVzcGFjZSBwYWNrYWdlcy4KLQotLSBm
aXggaXNzdWUyNDYgZml4IGZpbmFsaXplciBvcmRlciB0byBiZSBMSUZPIG9uIGluZGVwZW5kZW50
IGZpeHR1cmVzCi0gIGRlcGVuZGluZyBvbiBhIHBhcmFtZXRyaXplZCBoaWdoZXItdGhhbi1mdW5j
dGlvbiBzY29wZWQgZml4dHVyZS4KLSAgKHdhcyBxdWl0ZSBzb21lIGVmZm9ydCBzbyBwbGVhc2Ug
YmVhciB3aXRoIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgc2VudGVuY2UgOikKLSAgVGhhbmtzIFJh
bHBoIFNjaG1pdHQgZm9yIHRoZSBwcmVjaXNlIGZhaWx1cmUgZXhhbXBsZS4KLQotLSBmaXggaXNz
dWUyNDQgYnkgaW1wbGVtZW50aW5nIHNwZWNpYWwgaW5kZXggZm9yIHBhcmFtZXRlcnMgdG8gb25s
eSB1c2UKLSAgaW5kaWNlcyBmb3IgcGFyYW1lbnRyaXplZCB0ZXN0IGlkcwotCi0tIGZpeCBpc3N1
ZTI4NyBieSBydW5uaW5nIGFsbCBmaW5hbGl6ZXJzIGJ1dCBzYXZpbmcgdGhlIGV4Y2VwdGlvbgot
ICBmcm9tIHRoZSBmaXJzdCBmYWlsaW5nIGZpbmFsaXplciBhbmQgcmUtcmFpc2luZyBpdCBzbyB0
ZWFyZG93biB3aWxsCi0gIHN0aWxsIGhhdmUgZmFpbGVkLiAgV2UgcmVyYWlzZSB0aGUgZmlyc3Qg
ZmFpbGluZyBleGNlcHRpb24gYmVjYXVzZQotICBpdCBtaWdodCBiZSB0aGUgY2F1c2UgZm9yIG90
aGVyIGZpbmFsaXplcnMgdG8gZmFpbC4KLQotLSBmaXggb3JkZXJpbmcgd2hlbiBtb2NrLnBhdGNo
IG9yIG90aGVyIHN0YW5kYXJkIGRlY29yYXRvci13cmFwcGluZ3MKLSAgYXJlIHVzZWQgd2l0aCB0
ZXN0IG1ldGhvZHMuICBUaGlzIGZpeHVlcyBpc3N1ZTM0NiBhbmQgc2hvdWxkCi0gIGhlbHAgd2l0
aCByYW5kb20gInhkaXN0IiBjb2xsZWN0aW9uIGZhaWx1cmVzLiAgVGhhbmtzIHRvCi0gIFJvbm55
IFBmYW5uc2NobWlkdCBhbmQgRG9uYWxkIFN0dWZmdCBmb3IgaGVscGluZyB0byBpc29sYXRlIGl0
LgotCi0tIGZpeCBpc3N1ZTM1NyAtIHNwZWNpYWwgY2FzZSAiLWsiIGV4cHJlc3Npb25zIHRvIGFs
bG93IGZvcgotICBmaWx0ZXJpbmcgd2l0aCBzaW1wbGUgc3RyaW5ncyB0aGF0IGFyZSBub3QgdmFs
aWQgcHl0aG9uIGV4cHJlc3Npb25zLgotICBFeGFtcGxlczogIi1rIDEuMyIgbWF0Y2hlcyBhbGwg
dGVzdHMgcGFyYW1ldHJpemVkIHdpdGggMS4zLgotICAiLWsgTm9uZSIgZmlsdGVycyBhbGwgdGVz
dHMgdGhhdCBoYXZlICJOb25lIiBpbiB0aGVpciBuYW1lCi0gIGFuZCBjb252ZXJzZWx5ICItayAn
bm90IE5vbmUnIi4KLSAgUHJldmlvdXNseSB0aGVzZSBleGFtcGxlcyB3b3VsZCByYWlzZSBzeW50
YXggZXJyb3JzLgotCi0tIGZpeCBpc3N1ZTM4NCBieSByZW1vdmluZyB0aGUgdHJpYWwgc3VwcG9y
dCBjb2RlCi0gIHNpbmNlIHRoZSB1bml0dGVzdCBjb21wYXQgZW5oYW5jZW1lbnRzIGFsbG93Ci0g
IHRyaWFsIHRvIGhhbmRsZSBpdCBvbiBpdHMgb3duCi0KLS0gZG9uJ3QgaGlkZSBhbiBJbXBvcnRF
cnJvciB3aGVuIGltcG9ydGluZyBhIHBsdWdpbiBwcm9kdWNlcyBvbmUuCi0gIGZpeGVzIGlzc3Vl
Mzc1LgotCi0tIGZpeCBpc3N1ZTI3NSAtIGFsbG93IHVzZWZpeHR1cmVzIGFuZCBhdXRvdXNlIGZp
eHR1cmVzCi0gIGZvciBydW5uaW5nIGRvY3Rlc3QgdGV4dCBmaWxlcy4KLQotLSBmaXggaXNzdWUz
ODAgYnkgbWFraW5nIC0tcmVzdWx0bG9nIG9ubHkgcmVseSBvbiBsb25ncmVwciBpbnN0ZWFkCi0g
IG9mIHRoZSAicmVwcmNyYXNoIiBhdHRyaWJ1dGUgd2hpY2ggb25seSBleGlzdHMgc29tZXRpbWVz
LgotCi0tIGFkZHJlc3MgaXNzdWUxMjI6IGFsbG93IEBweXRlc3QuZml4dHVyZShwYXJhbXM9aXRl
cmF0b3IpIGJ5IGV4cGxvZGluZwotICBpbnRvIGEgbGlzdCBlYXJseSBvbi4KLQotLSBmaXggcGV4
cGVjdC0zLjAgY29tcGF0aWJpbGl0eSBmb3IgcHl0ZXN0J3Mgb3duIHRlc3RzLgotICAoZml4ZXMg
aXNzdWUzODYpCi0KLS0gYWxsb3cgbmVzdGVkIHBhcmFtZXRyaXplLXZhbHVlIG1hcmtlcnMsIHRo
YW5rcyBKYW1lcyBMYW4gZm9yIHRoZSBQUi4KLQotLSBmaXggdW5pY29kZSBoYW5kbGluZyB3aXRo
IG5ldyBtb25rZXlwYXRjaC5zZXRhdHRyKGltcG9ydF9wYXRoLCB2YWx1ZSkKLSAgQVBJLiAgVGhh
bmtzIFJvYiBEZW5uaXMuICBGaXhlcyBpc3N1ZTM3MS4KLQotLSBmaXggdW5pY29kZSBoYW5kbGlu
ZyB3aXRoIGp1bml0eG1sLCBmaXhlcyBpc3N1ZTM2OC4KLQotLSBJbiBhc3NlcnRpb24gcmV3cml0
aW5nIG1vZGUgb24gUHl0aG9uIDIsIGZpeCB0aGUgZGV0ZWN0aW9uIG9mIGNvZGluZwotICBjb29r
aWVzLiBTZWUgaXNzdWUgIzMzMC4KLQotLSBtYWtlICItLXJ1bnhmYWlsIiB0dXJuIGltcGVyYXRp
dmUgcHl0ZXN0LnhmYWlsIGNhbGxzIGludG8gbm8gb3BzCi0gIChpdCBhbHJlYWR5IGRpZCBuZXV0
cmFsaXplIHB5dGVzdC5tYXJrLnhmYWlsIG1hcmtlcnMpCi0KLS0gcmVmaW5lIHB5dGVzdCAvIHBr
Z19yZXNvdXJjZXMgaW50ZXJhY3Rpb25zOiBUaGUgQXNzZXJ0aW9uUmV3cml0aW5nSG9vawotICBQ
RVAzMDIgY29tcGxpYW50IGxvYWRlciBub3cgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHNldHVwdG9v
bHMvcGtnX3Jlc291cmNlcwotICBwcm9wZXJseSBzbyB0aGF0IHRoZSBwa2dfcmVzb3VyY2VzLnJl
c291cmNlX3N0cmVhbSBtZXRob2Qgd29ya3MgcHJvcGVybHkuCi0gIEZpeGVzIGlzc3VlMzY2LiAg
VGhhbmtzIGZvciB0aGUgaW52ZXN0aWdhdGlvbnMgYW5kIGZ1bGwgUFIgdG8gSmFzb24gUi4gQ29v
bWJzLgotCi0tIHB5dGVzdGNvbmZpZyBmaXh0dXJlIGlzIG5vdyBzZXNzaW9uLXNjb3BlZCBhcyBp
dCBpcyB0aGUgc2FtZSBvYmplY3QgZHVyaW5nIHRoZQotICB3aG9sZSB0ZXN0IHJ1bi4gIEZpeGVz
IGlzc3VlMzcwLgotCi0tIGF2b2lkIG9uZSBzdXJwcmlzaW5nIGNhc2Ugb2YgbWFya2VyIG1hbGZ1
bmN0aW9uL2NvbmZ1c2lvbjo6Ci0KLSAgICAgIEBweXRlc3QubWFyay5zb21lKGxhbWJkYSBhcmc6
IC4uLikKLSAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0KLSAgd291bGQgbm90IHdvcmsgY29y
cmVjdGx5IGJlY2F1c2UgcHl0ZXN0IGFzc3VtZXMgQHB5dGVzdC5tYXJrLnNvbWUKLSAgZ2V0cyBh
IGZ1bmN0aW9uIHRvIGJlIGRlY29yYXRlZCBhbHJlYWR5LiAgV2Ugbm93IGF0IGxlYXN0IGRldGVj
dCBpZiB0aGlzCi0gIGFyZyBpcyBhIGxhbWJkYSBhbmQgdGh1cyB0aGUgZXhhbXBsZSB3aWxsIHdv
cmsuICBUaGFua3MgQWxleCBHYXlub3IKLSAgZm9yIGJyaW5naW5nIGl0IHVwLgotCi0tIHhmYWls
IGEgdGVzdCBvbiBweXB5IHRoYXQgY2hlY2tzIHdyb25nIGVuY29kaW5nL2FzY2lpIChweXB5IGRv
ZXMKLSAgbm90IGVycm9yIG91dCkuIGZpeGVzIGlzc3VlMzg1LgotCi0tIGludGVybmFsbHkgbWFr
ZSB2YXJuYW1lcygpIGRlYWwgd2l0aCBjbGFzc2VzJ3MgX19pbml0X18sCi0gIGFsdGhvdWdoIGl0
J3Mgbm90IG5lZWRlZCBieSBweXRlc3QgaXRzZWxmIGF0bS4gIEFsc28KLSAgZml4IGNhY2hpbmcu
ICBGaXhlcyBpc3N1ZTM3Ni4KLQotLSBmaXggaXNzdWUyMjEgLSBoYW5kbGUgaW1wb3J0aW5nIG9m
IG5hbWVzcGFjZS1wYWNrYWdlIHdpdGggbm8KLSAgX19pbml0X18ucHkgcHJvcGVybHkuCi0KLS0g
cmVmYWN0b3IgaW50ZXJuYWwgRml4dHVyZVJlcXVlc3QgaGFuZGxpbmcgdG8gYXZvaWQgbW9ua2V5
cGF0Y2hpbmcuCi0gIE9uZSBvZiB0aGUgcG9zaXRpdmUgdXNlci1mYWNpbmcgZWZmZWN0cyBpcyB0
aGF0IHRoZSAicmVxdWVzdCIgb2JqZWN0Ci0gIGNhbiBub3cgYmUgdXNlZCBpbiBjbG9zdXJlcy4K
LQotLSBmaXhlZCB2ZXJzaW9uIGNvbXBhcmlzb24gaW4gcHl0ZXN0LmltcG9ydHNraXAobW9kbmFt
ZSwgbWludmVyc3RyaW5nKQotCi0tIGZpeCBpc3N1ZTM3NyBieSBjbGFyaWZ5aW5nIGluIHRoZSBu
b3NlLWNvbXBhdCBkb2NzIHRoYXQgcHl0ZXN0Ci0gIGRvZXMgbm90IGR1cGxpY2F0ZSB0aGUgdW5p
dHRlc3QtQVBJIGludG8gdGhlICJwbGFpbiIgbmFtZXNwYWNlLgotCi0tIGZpeCB2ZXJib3NlIHJl
cG9ydGluZyBmb3IgQG1vY2snZCB0ZXN0IGZ1bmN0aW9ucwotCi0yLjQuMiAoMjAxMy0xMC0wNCkK
LT09PT09PT09PT09PT09PT09PQotCi0tIG9uIFdpbmRvd3MgcmVxdWlyZSBjb2xvcmFtYSBhbmQg
YSBuZXdlciBweSBsaWIgc28gdGhhdCBweS5pby5UZXJtaW5hbFdyaXRlcigpCi0gIG5vdyB1c2Vz
IGNvbG9yYW1hIGluc3RlYWQgb2YgaXRzIG93biBjdHlwZXMgaGFja3MuIChmaXhlcyBpc3N1ZTM2
NSkKLSAgdGhhbmtzIFBhdWwgTW9vcmUgZm9yIGJyaW5naW5nIGl0IHVwLgotCi0tIGZpeCAiLWsi
IG1hdGNoaW5nIG9mIHRlc3RzIHdoZXJlICJyZXByIiBhbmQgImF0dHIiIGFuZCBvdGhlciBuYW1l
cyB3b3VsZAotICBjYXVzZSB3cm9uZyBtYXRjaGVzIGJlY2F1c2Ugb2YgYW4gaW50ZXJuYWwgaW1w
bGVtZW50YXRpb24gcXVpcmsKLSAgKGRvbid0IGFzaykgd2hpY2ggaXMgbm93IHByb3Blcmx5IGlt
cGxlbWVudGVkLiBmaXhlcyBpc3N1ZTM0NS4KLQotLSBhdm9pZCB0bXBkaXIgZml4dHVyZSB0byBj
cmVhdGUgdG9vIGxvbmcgZmlsZW5hbWVzIGVzcGVjaWFsbHkKLSAgd2hlbiBwYXJhbWV0cml6YXRp
b24gaXMgdXNlZCAoaXNzdWUzNTQpCi0KLS0gZml4IHB5dGVzdC1wZXA4IGFuZCBweXRlc3QtZmxh
a2VzIC8gcHl0ZXN0IGludGVyYWN0aW9ucwotICAoY29sbGVjdGlvbiBuYW1lcyBpbiBtYXJrIHBs
dWdpbiB3YXMgYXNzdW1pbmcgYW4gaXRlbSBhbHdheXMKLSAgaGFzIGEgZnVuY3Rpb24gd2hpY2gg
aXMgbm90IHRydWUgZm9yIHRob3NlIHBsdWdpbnMgZXRjLikKLSAgVGhhbmtzIEFuZGkgWmVpZGxl
ci4KLQotLSBpbnRyb2R1Y2Ugbm9kZS5nZXRfbWFya2VyL25vZGUuYWRkX21hcmtlciBBUEkgZm9y
IHBsdWdpbnMKLSAgbGlrZSBweXRlc3QtcGVwOCBhbmQgcHl0ZXN0LWZsYWtlcyB0byBhdm9pZCB0
aGUgbWVzc3kKLSAgZGV0YWlscyBvZiB0aGUgbm9kZS5rZXl3b3JkcyAgcHNldWRvLWRpY3RzLiAg
QWRhcHRlZAotICBkb2NzLgotCi0tIHJlbW92ZSBhdHRlbXB0IHRvICJkdXAiIHN0ZG91dCBhdCBz
dGFydHVwIGFzIGl0J3MgaWNreS4KLSAgdGhlIG5vcm1hbCBjYXB0dXJpbmcgc2hvdWxkIGNhdGNo
IGVub3VnaCBwb3NzaWJpbGl0aWVzCi0gIG9mIHRlc3RzIG1lc3NpbmcgdXAgc3RhbmRhcmQgRkRz
LgotCi0tIGFkZCBwbHVnaW5tYW5hZ2VyLmRvX2NvbmZpZ3VyZShjb25maWcpIGFzIGEgbGluayB0
bwotICBjb25maWcuZG9fY29uZmlndXJlKCkgZm9yIHBsdWdpbi1jb21wYXRpYmlsaXR5Ci0KLTIu
NC4xICgyMDEzLTEwLTAyKQotPT09PT09PT09PT09PT09PT09Ci0KLS0gV2hlbiB1c2luZyBwYXJz
ZXIuYWRkb3B0aW9uKCkgdW5pY29kZSBhcmd1bWVudHMgdG8gdGhlCi0gICJ0eXBlIiBrZXl3b3Jk
IHNob3VsZCBhbHNvIGJlIGNvbnZlcnRlZCB0byB0aGUgcmVzcGVjdGl2ZSB0eXBlcy4KLSAgdGhh
bmtzIEZsb3JpcyBCcnV5bm9vZ2hlLCBAZG5vemF5LiAoZml4ZXMgaXNzdWUzNjAgYW5kIGlzc3Vl
MzYyKQotCi0tIGZpeCBkb3R0ZWQgZmlsZW5hbWUgY29tcGxldGlvbiB3aGVuIHVzaW5nIGFyZ2Nv
bXBsZXRlCi0gIHRoYW5rcyBBbnRob24gdmFuIGRlciBOZXV0aC4gKGZpeGVzIGlzc3VlMzYxKQot
Ci0tIGZpeCByZWdyZXNzaW9uIHdoZW4gYSAxLXR1cGxlICgiYXJnIiwpIGlzIHVzZWQgZm9yIHNw
ZWNpZnlpbmcKLSAgcGFyYW1ldHJpemF0aW9uICh0aGUgdmFsdWVzIG9mIHRoZSBwYXJhbWV0cml6
YXRpb24gd2VyZSBwYXNzZWQKLSAgbmVzdGVkIGluIGEgdHVwbGUpLiAgVGhhbmtzIERvbmFsZCBT
dHVmZnQuCi0KLS0gbWVyZ2UgZG9jIHR5cG8gZml4ZXMsIHRoYW5rcyBBbmR5IERpcm5iZXJnZXIK
LQotMi40Ci09PT0KLQota25vd24gaW5jb21wYXRpYmlsaXRpZXM6Ci0KLS0gaWYgY2FsbGluZyAt
LWdlbnNjcmlwdCBmcm9tIHB5dGhvbjIuNyBvciBhYm92ZSwgeW91IG9ubHkgZ2V0IGEKLSAgc3Rh
bmRhbG9uZSBzY3JpcHQgd2hpY2ggd29ya3Mgb24gcHl0aG9uMi43IG9yIGFib3ZlLiAgVXNlIFB5
dGhvbjIuNgotICB0byBhbHNvIGdldCBhIHB5dGhvbjIuNSBjb21wYXRpYmxlIHZlcnNpb24uCi0K
LS0gYWxsIHh1bml0LXN0eWxlIHRlYXJkb3duIG1ldGhvZHMgKG5vc2Utc3R5bGUsIHB5dGVzdC1z
dHlsZSwKLSAgdW5pdHRlc3Qtc3R5bGUpIHdpbGwgbm90IGJlIGNhbGxlZCBpZiB0aGUgY29ycmVz
cG9uZGluZyBzZXR1cCBtZXRob2QgZmFpbGVkLAotICBzZWUgaXNzdWUzMjIgYmVsb3cuCi0KLS0g
dGhlIHB5dGVzdF9wbHVnaW5fdW5yZWdpc3RlciBob29rIHdhc24ndCBldmVyIHByb3Blcmx5IGNh
bGxlZAotICBhbmQgdGhlcmUgaXMgbm8ga25vd24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGhvb2sg
LSBzbyBpdCBnb3QgcmVtb3ZlZC4KLQotLSBweXRlc3QuZml4dHVyZS1kZWNvcmF0ZWQgZnVuY3Rp
b25zIGNhbm5vdCBiZSBnZW5lcmF0b3JzIChpLmUuIHVzZQotICB5aWVsZCkgYW55bW9yZS4gIFRo
aXMgY2hhbmdlIG1pZ2h0IGJlIHJldmVyc2VkIGluIDIuNC4xIGlmIGl0IGNhdXNlcwotICB1bmZv
cmVzZWVuIHJlYWwtbGlmZSBpc3N1ZXMuICBIb3dldmVyLCB5b3UgY2FuIGFsd2F5cyB3cml0ZSBh
bmQgcmV0dXJuCi0gIGFuIGlubmVyIGZ1bmN0aW9uL2dlbmVyYXRvciBhbmQgY2hhbmdlIHRoZSBm
aXh0dXJlIGNvbnN1bWVyIHRvIGl0ZXJhdGUKLSAgb3ZlciB0aGUgcmV0dXJuZWQgZ2VuZXJhdG9y
LiAgVGhpcyBjaGFuZ2Ugd2FzIGRvbmUgaW4gbGlldSBvZiB0aGUgbmV3Ci0gIGBgcHl0ZXN0Lnlp
ZWxkX2ZpeHR1cmVgYCBkZWNvcmF0b3IsIHNlZSBiZWxvdy4KLQotbmV3IGZlYXR1cmVzOgotCi0t
IGV4cGVyaW1lbnRhbGx5IGludHJvZHVjZSBhIG5ldyBgYHB5dGVzdC55aWVsZF9maXh0dXJlYGAg
ZGVjb3JhdG9yCi0gIHdoaWNoIGFjY2VwdHMgZXhhY3RseSB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFz
IHB5dGVzdC5maXh0dXJlIGJ1dAotICBtYW5kYXRlcyBhIGBgeWllbGRgYCBzdGF0ZW1lbnQgaW5z
dGVhZCBvZiBhIGBgcmV0dXJuIHN0YXRlbWVudGBgIGZyb20KLSAgZml4dHVyZSBmdW5jdGlvbnMu
ICBUaGlzIGFsbG93cyBkaXJlY3QgaW50ZWdyYXRpb24gd2l0aCAid2l0aC1zdHlsZSIKLSAgY29u
dGV4dCBtYW5hZ2VycyBpbiBmaXh0dXJlIGZ1bmN0aW9ucyBhbmQgZ2VuZXJhbGx5IGF2b2lkcyBy
ZWdpc3RlcmluZwotICBvZiBmaW5hbGl6YXRpb24gY2FsbGJhY2tzIGluIGZhdm91ciBvZiB0cmVh
dGluZyB0aGUgImFmdGVyLXlpZWxkIiBhcwotICB0ZWFyZG93biBjb2RlLiAgVGhhbmtzIEFuZHJl
YXMgUGVsbWUsIFZsYWRpbWlyIEtlbGVzaGV2LCBGbG9yaXMKLSAgQnJ1eW5vb2doZSwgUm9ubnkg
UGZhbm5zY2htaWR0IGFuZCBtYW55IG90aGVycyBmb3IgZGlzY3Vzc2lvbnMuCi0KLS0gYWxsb3cg
Ym9vbGVhbiBleHByZXNzaW9uIGRpcmVjdGx5IHdpdGggc2tpcGlmL3hmYWlsCi0gIGlmIGEgInJl
YXNvbiIgaXMgYWxzbyBzcGVjaWZpZWQuICBSZXdvcmsgc2tpcHBpbmcgZG9jdW1lbnRhdGlvbgot
ICB0byByZWNvbW1lbmQgImNvbmRpdGlvbiBhcyBib29sZWFucyIgYmVjYXVzZSBpdCBwcmV2ZW50
cyBzdXJwcmlzZXMKLSAgd2hlbiBpbXBvcnRpbmcgbWFya2VycyBiZXR3ZWVuIG1vZHVsZXMuICBT
cGVjaWZ5aW5nIGNvbmRpdGlvbnMKLSAgYXMgc3RyaW5ncyB3aWxsIHJlbWFpbiBmdWxseSBzdXBw
b3J0ZWQuCi0KLS0gcmVwb3J0aW5nOiBjb2xvciB0aGUgbGFzdCBsaW5lIHJlZCBvciBncmVlbiBk
ZXBlbmRpbmcgaWYKLSAgZmFpbHVyZXMvZXJyb3JzIG9jY3VycmVkIG9yIGV2ZXJ5dGhpbmcgcGFz
c2VkLiAgdGhhbmtzIENocmlzdGlhbgotICBUaGV1bmVydC4KLQotLSBtYWtlICJpbXBvcnQgcGRi
IDsgcGRiLnNldF90cmFjZSgpIiB3b3JrIG5hdGl2ZWx5IHdydCBjYXB0dXJpbmcgKG5vCi0gICIt
cyIgbmVlZGVkIGFueW1vcmUpLCBtYWtpbmcgYGBweXRlc3Quc2V0X3RyYWNlKClgYCBhIG1lcmUg
c2hvcnRjdXQuCi0KLS0gZml4IGlzc3VlMTgxOiAtLXBkYiBub3cgYWxzbyB3b3JrcyBvbiBjb2xs
ZWN0IGVycm9ycyAoYW5kCi0gIG9uIGludGVybmFsIGVycm9ycykgLiAgVGhpcyB3YXMgaW1wbGVt
ZW50ZWQgYnkgYSBzbGlnaHQgaW50ZXJuYWwKLSAgcmVmYWN0b3JpbmcgYW5kIHRoZSBpbnRyb2R1
Y3Rpb24gb2YgYSBuZXcgaG9vawotICBgYHB5dGVzdF9leGNlcHRpb25faW50ZXJhY3RgYCBob29r
IChzZWUgbmV4dCBpdGVtKS4KLQotLSBmaXggaXNzdWUzNDE6IGludHJvZHVjZSBuZXcgZXhwZXJp
bWVudGFsIGhvb2sgZm9yIElERXMvdGVybWluYWxzIHRvCi0gIGludGVyY2VwdCBkZWJ1Z2dpbmc6
IGBgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChub2RlLCBjYWxsLCByZXBvcnQpYGAuCi0KLS0g
bmV3IG1vbmtleXBhdGNoLnNldGF0dHIoKSB2YXJpYW50IHRvIHByb3ZpZGUgYSBzaG9ydGVyCi0g
IGludm9jYXRpb24gZm9yIHBhdGNoaW5nIG91dCBjbGFzc2VzL2Z1bmN0aW9ucyBmcm9tIG1vZHVs
ZXM6Ci0KLSAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigicmVxdWVzdHMuZ2V0IiwgbXlmdW5jKQot
Ci0gIHdpbGwgcmVwbGFjZSB0aGUgImdldCIgZnVuY3Rpb24gb2YgdGhlICJyZXF1ZXN0cyIgbW9k
dWxlIHdpdGggYGBteWZ1bmNgYC4KLQotLSBmaXggaXNzdWUzMjI6IHRlYXJEb3duQ2xhc3MgaXMg
bm90IHJ1biBpZiBzZXRVcENsYXNzIGZhaWxlZC4gVGhhbmtzCi0gIE1hdGhpZXUgQWdvcGlhbiBm
b3IgdGhlIGluaXRpYWwgZml4LiAgQWxzbyBtYWtlIGFsbCBvZiBweXRlc3Qvbm9zZQotICBmaW5h
bGl6ZXIgbWltaWMgdGhlIHNhbWUgZ2VuZXJpYyBiZWhhdmlvdXI6IGlmIGEgc2V0dXBYIGV4aXN0
cyBhbmQKLSAgZmFpbHMsIGRvbid0IHJ1biB0ZWFyZG93blguICBUaGlzIGludGVybmFsbHkgaW50
cm9kdWNlcyBhIG5ldyBtZXRob2QKLSAgIm5vZGUuYWRkZmluYWxpemVyKCkiIGhlbHBlciB3aGlj
aCBjYW4gb25seSBiZSBjYWxsZWQgZHVyaW5nIHRoZSBzZXR1cAotICBwaGFzZSBvZiBhIG5vZGUu
Ci0KLS0gc2ltcGxpZnkgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKSBzaWduYXR1cmU6IGFsbG93
IHRvIHBhc3MgYQotICBDU1Ytc2VwYXJhdGVkIHN0cmluZyB0byBzcGVjaWZ5IGFyZ25hbWVzLiAg
Rm9yIGV4YW1wbGU6Ci0gIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVk
IiwgIFsoMSwyKSwgKDIsMyldKWBgCi0gIHdvcmtzIGFzIHdlbGwgYXMgdGhlIHByZXZpb3VzOgot
ICBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgiaW5wdXQiLCAiZXhwZWN0ZWQiKSwgLi4uKWBg
LgotCi0tIGFkZCBzdXBwb3J0IGZvciBzZXRVcE1vZHVsZS90ZWFyRG93bk1vZHVsZSBkZXRlY3Rp
b24sIHRoYW5rcyBCcmlhbiBPa2tlbi4KLQotLSBpbnRlZ3JhdGUgdGFiLWNvbXBsZXRpb24gb24g
b3B0aW9ucyB0aHJvdWdoIHVzZSBvZiAiYXJnY29tcGxldGUiLgotICBUaGFua3MgQW50aG9uIHZh
biBkZXIgTmV1dCBmb3IgdGhlIFBSLgotCi0tIGNoYW5nZSBvcHRpb24gbmFtZXMgdG8gYmUgaHlw
aGVuLXNlcGFyYXRlZCBsb25nIG9wdGlvbnMgYnV0IGtlZXAgdGhlCi0gIG9sZCBzcGVsbGluZyBi
YWNrd2FyZCBjb21wYXRpYmxlLiAgcHkudGVzdCAtaCB3aWxsIG9ubHkgc2hvdyB0aGUKLSAgaHlw
aGVuYXRlZCB2ZXJzaW9uLCBmb3IgZXhhbXBsZSAiLS1jb2xsZWN0LW9ubHkiIGJ1dCAiLS1jb2xs
ZWN0b25seSIKLSAgd2lsbCByZW1haW4gdmFsaWQgYXMgd2VsbCAoZm9yIGJhY2t3YXJkLWNvbXBh
dCByZWFzb25zKS4gIE1hbnkgdGhhbmtzIHRvCi0gIEFudGhvbiB2YW4gZGVyIE5ldXQgZm9yIHRo
ZSBpbXBsZW1lbnRhdGlvbiBhbmQgdG8gSHluZWsgU2NobGF3YWNrIGZvcgotICBwdXNoaW5nIHVz
LgotCi0tIGZpeCBpc3N1ZSAzMDggLSBhbGxvdyB0byBtYXJrL3hmYWlsL3NraXAgaW5kaXZpZHVh
bCBwYXJhbWV0ZXIgc2V0cwotICB3aGVuIHBhcmFtZXRyaXppbmcuICBUaGFua3MgQnJpYW5uYSBM
YXVnaGVyLgotCi0tIGNhbGwgbmV3IGV4cGVyaW1lbnRhbCBweXRlc3RfbG9hZF9pbml0aWFsX2Nv
bmZ0ZXN0cyBob29rIHRvIGFsbG93Ci0gIDNyZCBwYXJ0eSBwbHVnaW5zIHRvIGRvIHNvbWV0aGlu
ZyBiZWZvcmUgYSBjb25mdGVzdCBpcyBsb2FkZWQuCi0KLUJ1ZyBmaXhlczoKLQotLSBmaXggaXNz
dWUzNTggLSBjYXB0dXJpbmcgb3B0aW9ucyBhcmUgbm93IHBhcnNlZCBtb3JlIHByb3Blcmx5Ci0g
IGJ5IHVzaW5nIGEgbmV3IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzIG1ldGhvZC4KLQotLSBweXRl
c3Qgbm93IHVzZXMgYXJncGFyc2UgaW5zdGVhZCBvZiBvcHRwYXJzZSAodGhhbmtzIEFudGhvbikg
d2hpY2gKLSAgbWVhbnMgdGhhdCAiYXJncGFyc2UiIGlzIGFkZGVkIGFzIGEgZGVwZW5kZW5jeSBp
ZiBpbnN0YWxsaW5nIGludG8gcHl0aG9uMi42Ci0gIGVudmlyb25tZW50cyBvciBiZWxvdy4KLQot
LSBmaXggaXNzdWUzMzM6IGZpeCBhIGNhc2Ugb2YgYmFkIHVuaXR0ZXN0L3B5dGVzdCBob29rIGlu
dGVyYWN0aW9uLgotCi0tIFBSMjc6IGNvcnJlY3RseSBoYW5kbGUgbm9zZS5Ta2lwVGVzdCBkdXJp
bmcgY29sbGVjdGlvbi4gIFRoYW5rcwotICBBbnRvbmlvIEN1bmksIFJvbm55IFBmYW5uc2NobWlk
dC4KLQotLSBmaXggaXNzdWUzNTU6IGp1bml0eG1sIHB1dHMgbmFtZT0icHl0ZXN0IiBhdHRyaWJ1
dGUgdG8gdGVzdHN1aXRlIHRhZy4KLQotLSBmaXggaXNzdWUzMzY6IGF1dG91c2UgZml4dHVyZSBp
biBwbHVnaW5zIHNob3VsZCB3b3JrIGFnYWluLgotCi0tIGZpeCBpc3N1ZTI3OTogaW1wcm92ZSBv
YmplY3QgY29tcGFyaXNvbnMgb24gYXNzZXJ0aW9uIGZhaWx1cmUKLSAgZm9yIHN0YW5kYXJkIGRh
dGF0eXBlcyBhbmQgcmVjb2duaXNlIGNvbGxlY3Rpb25zLmFiYy4gIFRoYW5rcyB0bwotICBCcmlh
bm5hIExhdWdoZXIgYW5kIE1hdGhpZXUgQWdvcGlhbi4KLQotLSBmaXggaXNzdWUzMTc6IGFzc2Vy
dGlvbiByZXdyaXRlciBzdXBwb3J0IGZvciB0aGUgaXNfcGFja2FnZSBtZXRob2QKLQotLSBmaXgg
aXNzdWUzMzU6IGRvY3VtZW50IHB5LmNvZGUuRXhjZXB0aW9uSW5mbygpIG9iamVjdCByZXR1cm5l
ZAotICBmcm9tIHB5dGVzdC5yYWlzZXMoKSwgdGhhbmtzIE1hdGhpZXUgQWdvcGlhbi4KLQotLSBy
ZW1vdmUgaW1wbGljaXQgZGlzdHJpYnV0ZV9zZXR1cCBzdXBwb3J0IGZyb20gc2V0dXAucHkuCi0K
LS0gZml4IGlzc3VlMzA1OiBpZ25vcmUgYW55IHByb2JsZW1zIHdoZW4gd3JpdGluZyBweWMgZmls
ZXMuCi0KLS0gU08tMTc2NjQ3MDI6IGNhbGwgZml4dHVyZSBmaW5hbGl6ZXJzIGV2ZW4gaWYgdGhl
IGZpeHR1cmUgZnVuY3Rpb24KLSAgcGFydGlhbGx5IGZhaWxlZCAoZmluYWxpemVycyB3b3VsZCBu
b3QgYWx3YXlzIGJlIGNhbGxlZCBiZWZvcmUpCi0KLS0gZml4IGlzc3VlMzIwIC0gZml4IGNsYXNz
IHNjb3BlIGZvciBmaXh0dXJlcyB3aGVuIG1peGVkIHdpdGgKLSAgbW9kdWxlLWxldmVsIGZ1bmN0
aW9ucy4gIFRoYW5rcyBBbmF0bG95IEJ1YmVua29mZi4KLQotLSB5b3UgY2FuIHNwZWNpZnkgIi1x
IiBvciAiLXFxIiB0byBnZXQgZGlmZmVyZW50IGxldmVscyBvZiAicXVpZXRlciIKLSAgcmVwb3J0
aW5nICh0aGFua3MgS2F0YXJ6eW5hIEphY2hpbSkKLQotLSBmaXggaXNzdWUzMDAgLSBGaXggb3Jk
ZXIgb2YgY29uZnRlc3QgbG9hZGluZyB3aGVuIHN0YXJ0aW5nIHB5LnRlc3QKLSAgaW4gYSBzdWJk
aXJlY3RvcnkuCi0KLS0gZml4IGlzc3VlMzIzIC0gc29ydGluZyBvZiBtYW55IG1vZHVsZS1zY29w
ZWQgYXJnIHBhcmFtZXRyaXphdGlvbnMKLQotLSBtYWtlIHNlc3Npb25maW5pc2ggaG9va3MgZXhl
Y3V0ZSB3aXRoIHRoZSBzYW1lIGN3ZC1jb250ZXh0IGFzIGF0Ci0gIHNlc3Npb24gc3RhcnQgKGhl
bHBzIGZpeCBwbHVnaW4gYmVoYXZpb3VyIHdoaWNoIHdyaXRlIG91dHB1dCBmaWxlcwotICB3aXRo
IHJlbGF0aXZlIHBhdGggc3VjaCBhcyBweXRlc3QtY292KQotCi0tIGZpeCBpc3N1ZTMxNiAtIHBy
b3Blcmx5IHJlZmVyZW5jZSBjb2xsZWN0aW9uIGhvb2tzIGluIGRvY3MKLQotLSBmaXggaXNzdWUg
MzA2IC0gY2xlYW51cCBvZiAtay8tbSBvcHRpb25zIHRvIG9ubHkgbWF0Y2ggbWFya2Vycy90ZXN0
Ci0gIG5hbWVzL2tleXdvcmRzIHJlc3BlY3RpdmVseS4gIFRoYW5rcyBXb3V0ZXIgdmFuIEFja29v
eS4KLQotLSBpbXByb3ZlZCBkb2N0ZXN0IGNvdW50aW5nIGZvciBkb2N0ZXN0cyBpbiBweXRob24g
bW9kdWxlcyAtLQotICBmaWxlcyB3aXRob3V0IGFueSBkb2N0ZXN0IGl0ZW1zIHdpbGwgbm90IHNo
b3cgdXAgYW55bW9yZQotICBhbmQgZG9jdGVzdCBleGFtcGxlcyBhcmUgY291bnRlZCBhcyBzZXBh
cmF0ZSB0ZXN0IGl0ZW1zLgotICB0aGFua3MgRGFuaWxvIEJlbGxpbmkuCi0KLS0gZml4IGlzc3Vl
MjQ1IGJ5IGRlcGVuZGluZyBvbiB0aGUgcmVsZWFzZWQgcHktMS40LjE0Ci0gIHdoaWNoIGZpeGVz
IHB5LmlvLmR1cGZpbGUgdG8gd29yayB3aXRoIGZpbGVzIHdpdGggbm8KLSAgbW9kZS4gVGhhbmtz
IEphc29uIFIuIENvb21icy4KLQotLSBmaXgganVuaXR4bWwgZ2VuZXJhdGlvbiB3aGVuIHRlc3Qg
b3V0cHV0IGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVycywKLSAgYWRkcmVzc2luZyBpc3N1ZTI2
NywgdGhhbmtzIEphYXAgQnJvZWtodWl6ZW4KLQotLSBmaXggaXNzdWUzMzg6IGhvbm9yIC0tdGIg
c3R5bGUgZm9yIHNldHVwL3RlYXJkb3duIGVycm9ycyBhcyB3ZWxsLiAgVGhhbmtzIE1haG8uCi0K
LS0gZml4IGlzc3VlMzA3IC0gdXNlIHlhbWwuc2FmZV9sb2FkIGluIGV4YW1wbGUsIHRoYW5rcyBN
YXJrIEVpY2hpbi4KLQotLSBiZXR0ZXIgcGFyYW1ldHJpemUgZXJyb3IgbWVzc2FnZXMsIHRoYW5r
cyBCcmlhbm5hIExhdWdoZXIKLQotLSBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5hbHJl
cG9ydGVyKSBob29rcyBjYW4gbm93IHVzZQotICAiLnNlY3Rpb24odGl0bGUpIiBhbmQgIi5saW5l
KG1zZykiIG1ldGhvZHMgdG8gcHJpbnQgZXh0cmEKLSAgaW5mb3JtYXRpb24gYXQgdGhlIGVuZCBv
ZiBhIHRlc3QgcnVuLgotCi0yLjMuNSAoMjAxMy0wNC0zMCkKLT09PT09PT09PT09PT09PT09PQot
Ci0tIGZpeCBpc3N1ZTE2OTogcmVzcGVjdCAtLXRiPXN0eWxlIHdpdGggc2V0dXAvdGVhcmRvd24g
ZXJyb3JzIGFzIHdlbGwuCi0KLS0gbmV2ZXIgY29uc2lkZXIgYSBmaXh0dXJlIGZ1bmN0aW9uIGZv
ciB0ZXN0IGZ1bmN0aW9uIGNvbGxlY3Rpb24KLQotLSBhbGxvdyByZS1ydW5uaW5nIG9mIHRlc3Qg
aXRlbXMgLyBoZWxwcyB0byBmaXggcHl0ZXN0LXJlcnVudGVzdHMgcGx1Z2luCi0gIGFuZCBhbHNv
IGhlbHAgdG8ga2VlcCBsZXNzIGZpeHR1cmUvcmVzb3VyY2UgcmVmZXJlbmNlcyBhbGl2ZQotCi0t
IHB1dCBjYXB0dXJlZCBzdGRvdXQvc3RkZXJyIGludG8ganVuaXR4bWwgb3V0cHV0IGV2ZW4gZm9y
IHBhc3NpbmcgdGVzdHMKLSAgKHRoYW5rcyBBZGFtIEdvdWNoZXIpCi0KLS0gSXNzdWUgMjY1IC0g
aW50ZWdyYXRlIG5vc2Ugc2V0dXAvdGVhcmRvd24gd2l0aCBzZXR1cHN0YXRlCi0gIHNvIGl0IGRv
ZXNuJ3QgdHJ5IHRvIHRlYXJkb3duIGlmIGl0IGRpZCBub3Qgc2V0dXAKLQotLSBpc3N1ZSAyNzEg
LSBkb24ndCB3cml0ZSBqdW5pdHhtbCBvbiBzbGF2ZSBub2RlcwotCi0tIElzc3VlIDI3NCAtIGRv
bid0IHRyeSB0byBzaG93IGZ1bGwgZG9jdGVzdCBleGFtcGxlCi0gIHdoZW4gZG9jdGVzdCBkb2Vz
IG5vdCBrbm93IHRoZSBleGFtcGxlIGxvY2F0aW9uCi0KLS0gaXNzdWUgMjgwIC0gZGlzYWJsZSBh
c3NlcnRpb24gcmV3cml0aW5nIG9uIGJ1Z2d5IENQeXRob24gMi42LjAKLQotLSBpbmplY3QgImdl
dGZpeHR1cmUoKSIgaGVscGVyIHRvIHJldHJpZXZlIGZpeHR1cmVzIGZyb20gZG9jdGVzdHMsCi0g
IHRoYW5rcyBBbmRyZWFzIFplaWRsZXIKLQotLSBpc3N1ZSAyNTkgLSB3aGVuIGFzc2VydGlvbiBy
ZXdyaXRpbmcsIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgZGVmYXVsdAotICBzb3VyY2UgZW5jb2Rp
bmcgb2YgQVNDSUkgb24gUHl0aG9uIDIKLQotLSBpc3N1ZSAyNTEgLSByZXBvcnQgYSBza2lwIGlu
c3RlYWQgb2YgaWdub3JpbmcgY2xhc3NlcyB3aXRoIGluaXQKLQotLSBpc3N1ZTI1MCB1bmljb2Rl
L3N0ciBtaXhlcyBpbiBwYXJhbWV0cml6YXRpb24gbmFtZXMgYW5kIHZhbHVlcyBub3cgd29ya3MK
LQotLSBpc3N1ZTI1NywgYXNzZXJ0aW9uLXRyaWdnZXJlZCBjb21waWxhdGlvbiBvZiBzb3VyY2Ug
ZW5kaW5nIGluIGEKLSAgY29tbWVudCBsaW5lIGRvZXNuJ3QgYmxvdyB1cCBpbiBweXRob24yLjUg
KGZpeGVkIHRocm91Z2ggcHk+PTEuNC4xMy5kZXY2KQotCi0tIGZpeCAtLWdlbnNjcmlwdCBvcHRp
b24gdG8gZ2VuZXJhdGUgc3RhbmRhbG9uZSBzY3JpcHRzIHRoYXQgYWxzbwotICB3b3JrIHdpdGgg
cHl0aG9uMy4zIChpbXBvcnRlciBvcmRlcmluZykKLQotLSBpc3N1ZTE3MSAtIGluIGFzc2VydGlv
biByZXdyaXRpbmcsIHNob3cgdGhlIHJlcHIgb2Ygc29tZQotICBnbG9iYWwgdmFyaWFibGVzCi0K
LS0gZml4IG9wdGlvbiBoZWxwIGZvciAiLWsiCi0KLS0gbW92ZSBsb25nIGRlc2NyaXB0aW9uIG9m
IGRpc3RyaWJ1dGlvbiBpbnRvIFJFQURNRS5yc3QKLQotLSBpbXByb3ZlIGRvY3N0cmluZyBmb3Ig
bWV0YWZ1bmMucGFyYW1ldHJpemUoKQotCi0tIGZpeCBidWcgd2hlcmUgdXNpbmcgY2Fwc3lzIHdp
dGggcHl0ZXN0LnNldF90cmFjZSgpIGluIGEgdGVzdAotICBmdW5jdGlvbiB3b3VsZCBicmVhayB3
aGVuIGxvb2tpbmcgYXQgY2Fwc3lzLnJlYWRvdXRlcnIoKQotCi0tIGFsbG93IHRvIHNwZWNpZnkg
cHJlZml4ZXMgc3RhcnRpbmcgd2l0aCAiXyIgd2hlbgotICBjdXN0b21pemluZyBweXRob25fZnVu
Y3Rpb25zIHRlc3QgZGlzY292ZXJ5LiAodGhhbmtzIEdyYWhhbSBIb3JsZXIpCi0KLS0gaW1wcm92
ZSBQWVRFU1RfREVCVUcgdHJhY2luZyBvdXRwdXQgYnkgcHV0dGluZwotICBleHRyYSBkYXRhIG9u
IGEgbmV3IGxpbmVzIHdpdGggYWRkaXRpb25hbCBpbmRlbnQKLQotLSBlbnN1cmUgT3V0Y29tZUV4
Y2VwdGlvbnMgbGlrZSBza2lwL2ZhaWwgaGF2ZSBpbml0aWFsaXplZCBleGNlcHRpb24gYXR0cmli
dXRlcwotCi0tIGlzc3VlIDI2MCAtIGRvbid0IHVzZSBub3NlIHNwZWNpYWwgc2V0dXAgb24gcGxh
aW4gdW5pdHRlc3QgY2FzZXMKLQotLSBmaXggaXNzdWUxMzQgLSBwcmludCB0aGUgY29sbGVjdCBl
cnJvcnMgdGhhdCBwcmV2ZW50IHJ1bm5pbmcgc3BlY2lmaWVkIHRlc3QgaXRlbXMKLQotLSBmaXgg
aXNzdWUyNjYgLSBhY2NlcHQgdW5pY29kZSBpbiBNYXJrRXZhbHVhdG9yIGV4cHJlc3Npb25zCi0K
LTIuMy40ICgyMDEyLTExLTIwKQotPT09PT09PT09PT09PT09PT09Ci0KLS0geWllbGRlZCB0ZXN0
IGZ1bmN0aW9ucyB3aWxsIG5vdyBoYXZlIGF1dG91c2UtZml4dHVyZXMgYWN0aXZlIGJ1dAotICBj
YW5ub3QgYWNjZXB0IGZpeHR1cmVzIGFzIGZ1bmNhcmdzIC0gaXQncyBhbnl3YXkgcmVjb21tZW5k
ZWQgdG8KLSAgcmF0aGVyIHVzZSB0aGUgcG9zdC0yLjAgcGFyYW1ldHJpemUgZmVhdHVyZXMgaW5z
dGVhZCBvZiB5aWVsZCwgc2VlOgotICBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZXhhbXBsZS9w
YXJhbWV0cml6ZS5odG1sCi0tIGZpeCBhdXRvdXNlLWlzc3VlIHdoZXJlIGF1dG91c2UtZml4dHVy
ZXMgd291bGQgbm90IGJlIGRpc2NvdmVyZWQKLSAgaWYgZGVmaW5lZCBpbiBhbiBhL2NvbmZ0ZXN0
LnB5IGZpbGUgYW5kIHRlc3RzIGluIGEvdGVzdHMvdGVzdF9zb21lLnB5Ci0tIGZpeCBpc3N1ZTIy
NiAtIExJRk8gb3JkZXJpbmcgZm9yIGZpeHR1cmUgdGVhcmRvd25zCi0tIGZpeCBpc3N1ZTIyNCAt
IGludm9jYXRpb25zIHdpdGggPjI1NiBjaGFyIGFyZ3VtZW50cyBub3cgd29yawotLSBmaXggaXNz
dWU5MSAtIGFkZC9kaXNjdXNzIHBhY2thZ2UvZGlyZWN0b3J5IGxldmVsIHNldHVwcyBpbiBleGFt
cGxlCi0tIGFsbG93IHRvIGR5bmFtaWNhbGx5IGRlZmluZSBtYXJrZXJzIHZpYQotICBpdGVtLmtl
eXdvcmRzWy4uLl09YXNzaWdubWVudCBpbnRlZ3JhdGluZyB3aXRoICItbSIgb3B0aW9uCi0tIG1h
a2UgIi1rIiBhY2NlcHQgYW4gZXhwcmVzc2lvbnMgdGhlIHNhbWUgYXMgd2l0aCAiLW0iIHNvIHRo
YXQgb25lCi0gIGNhbiB3cml0ZTogLWsgIm5hbWUxIG9yIG5hbWUyIiBldGMuICBUaGlzIGlzIGEg
c2xpZ2h0IGluY29tcGF0aWJpbGl0eQotICBpZiB5b3UgdXNlZCBzcGVjaWFsIHN5bnRheCBsaWtl
ICJUZXN0Q2xhc3MudGVzdF9tZXRob2QiIHdoaWNoIHlvdSBub3cKLSAgbmVlZCB0byB3cml0ZSBh
cyAtayAiVGVzdENsYXNzIGFuZCB0ZXN0X21ldGhvZCIgdG8gbWF0Y2ggYSBjZXJ0YWluCi0gIG1l
dGhvZCBpbiBhIGNlcnRhaW4gdGVzdCBjbGFzcy4KLQotMi4zLjMgKDIwMTItMTEtMDYpCi09PT09
PT09PT09PT09PT09PT0KLQotLSBmaXggaXNzdWUyMTQgLSBwYXJzZSBtb2R1bGVzIHRoYXQgY29u
dGFpbiBzcGVjaWFsIG9iamVjdHMgbGlrZSBlLiBnLgotICBmbGFzaydzIHJlcXVlc3Qgb2JqZWN0
IHdoaWNoIGJsb3dzIHVwIG9uIGdldGF0dHIgYWNjZXNzIGlmIG5vIHJlcXVlc3QKLSAgaXMgYWN0
aXZlLiB0aGFua3MgVGhvbWFzIFdhbGRtYW5uLgotCi0tIGZpeCBpc3N1ZTIxMyAtIGFsbG93IHRv
IHBhcmFtZXRyaXplIHdpdGggdmFsdWVzIGxpa2UgbnVtcHkgYXJyYXlzIHRoYXQKLSAgZG8gbm90
IHN1cHBvcnQgYW4gX19lcV9fIG9wZXJhdG9yCi0KLS0gZml4IGlzc3VlMjE1IC0gc3BsaXQgdGVz
dF9weXRob24ub3JnIGludG8gbXVsdGlwbGUgZmlsZXMKLQotLSBmaXggaXNzdWUxNDggLSBAdW5p
dHRlc3Quc2tpcCBvbiBjbGFzc2VzIGlzIG5vdyByZWNvZ25pemVkIGFuZCBhdm9pZHMKLSAgY2Fs
bGluZyBzZXRVcENsYXNzL3RlYXJEb3duQ2xhc3MsIHRoYW5rcyBQYXZlbCBSZXBpbgotCi0tIGZp
eCBpc3N1ZTIwOSAtIHJlaW50cm9kdWNlIHB5dGhvbjIuNCBzdXBwb3J0IGJ5IGRlcGVuZGluZyBv
biBuZXdlcgotICBweWxpYiB3aGljaCByZS1pbnRyb2R1Y2VkIHN0YXRlbWVudC1maW5kaW5nIGZv
ciBwcmUtQVNUIGludGVycHJldGVycwotCi0tIG5vc2Ugc3VwcG9ydDogb25seSBjYWxsIHNldHVw
IGlmIGl0J3MgYSBjYWxsYWJsZSwgdGhhbmtzIEFuZHJldwotICBUYXVtb2Vmb2xhdQotCi0tIGZp
eCBpc3N1ZTIxOSAtIGFkZCBweTIuNC0zLjMgY2xhc3NpZmllcnMgdG8gVFJPVkUgbGlzdAotCi0t
IGluIHRyYWNlYmFja3MgKiwqKiBhcmcgdmFsdWVzIGFyZSBub3cgc2hvd24gbmV4dCB0byBub3Jt
YWwgYXJndW1lbnRzCi0gICh0aGFua3MgTWFudWVsIEphY29iKQotCi0tIGZpeCBpc3N1ZTIxNyAt
IHN1cHBvcnQgbW9jay5wYXRjaCB3aXRoIHB5dGVzdCdzIGZpeHR1cmVzIC0gbm90ZSB0aGF0Ci0g
IHlvdSBuZWVkIGVpdGhlciBtb2NrLTEuMC4xIG9yIHRoZSBweXRob24zLjMgYnVpbHRpbiB1bml0
dGVzdC5tb2NrLgotCi0tIGZpeCBpc3N1ZTEyNyAtIGltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3Ig
cHl0ZXN0X2FkZG9wdGlvbigpIGFuZAotICBhZGQgYSBgYGNvbmZpZy5nZXRvcHRpb24obmFtZSlg
YCBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnNpc3RlbmN5LgotCi0yLjMuMiAoMjAxMi0xMC0yNSkK
LT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTIwOCBhbmQgZml4IGlzc3VlMjkgdXNl
IG5ldyBweSB2ZXJzaW9uIHRvIGF2b2lkIGxvbmcgcGF1c2VzCi0gIHdoZW4gcHJpbnRpbmcgdHJh
Y2ViYWNrcyBpbiBsb25nIG1vZHVsZXMKLQotLSBmaXggaXNzdWUyMDUgLSBjb25mdGVzdHMgaW4g
c3ViZGlycyBjdXN0b21pemluZwotICBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUgYW5kIHB5
dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0KLSAgbm93IHdvcmsgcHJvcGVybHkKLQotLSBmaXggdGVh
cmRvd24tb3JkZXJpbmcgZm9yIHBhcmFtZXRyaXplZCBzZXR1cHMKLQotLSBmaXggaXNzdWUxMjcg
LSBiZXR0ZXIgZG9jdW1lbnRhdGlvbiBmb3IgcHl0ZXN0X2FkZG9wdGlvbgotICBhbmQgcmVsYXRl
ZCBvYmplY3RzLgotCi0tIGZpeCB1bml0dGVzdCBiZWhhdmlvdXI6IFRlc3RDYXNlLnJ1bnRlc3Qg
b25seSBjYWxsZWQgaWYgdGhlcmUgYXJlCi0gIHRlc3QgbWV0aG9kcyBkZWZpbmVkCi0KLS0gaW1w
cm92ZSB0cmlhbCBzdXBwb3J0OiBkb24ndCBjb2xsZWN0IGl0cyBlbXB0eQotICB1bml0dGVzdC5U
ZXN0Q2FzZS5ydW5UZXN0KCkgbWV0aG9kCi0KLS0gInB5dGhvbiBzZXR1cC5weSB0ZXN0IiBub3cg
d29ya3Mgd2l0aCBweXRlc3QgaXRzZWxmCi0KLS0gZml4L2ltcHJvdmUgaW50ZXJuYWwvcGFja2Fn
aW5nIHJlbGF0ZWQgYml0czoKLQotICAtIGV4Y2VwdGlvbiBtZXNzYWdlIGNoZWNrIG9mIHRlc3Rf
bm9zZS5weSBub3cgcGFzc2VzIG9uIHB5dGhvbjMzIGFzIHdlbGwKLQotICAtIGlzc3VlMjA2IC0g
Zml4IHRlc3RfYXNzZXJ0cmV3cml0ZS5weSB0byB3b3JrIHdoZW4gYSBnbG9iYWwKLSAgICBQWVRI
T05ET05UV1JJVEVCWVRFQ09ERT0xIGlzIHByZXNlbnQKLQotICAtIGFkZCB0b3guaW5pIHRvIHB5
dGVzdCBkaXN0cmlidXRpb24gc28gdGhhdCBpZ25vcmUtZGlycyBhbmQgb3RoZXJzIGNvbmZpZwot
ICAgIGJpdHMgYXJlIHByb3Blcmx5IGRpc3RyaWJ1dGVkIGZvciBtYWludGFpbmVycyB3aG8gcnVu
IHB5dGVzdC1vd24gdGVzdHMKLQotMi4zLjEgKDIwMTItMTAtMjApCi09PT09PT09PT09PT09PT09
PT0KLQotLSBmaXggaXNzdWUyMDIgLSBmaXggcmVncmVzc2lvbjogdXNpbmcgInNlbGYiIGZyb20g
Zml4dHVyZSBmdW5jdGlvbnMgbm93Ci0gIHdvcmtzIGFzIGV4cGVjdGVkIChpdCdzIHRoZSBzYW1l
ICJzZWxmIiBpbnN0YW5jZSB0aGF0IGEgdGVzdCBtZXRob2QKLSAgd2hpY2ggdXNlcyB0aGUgZml4
dHVyZSBzZWVzKQotCi0tIHNraXAgcGV4cGVjdCB1c2luZyB0ZXN0cyAodGVzdF9wZGIucHkgbW9z
dGx5KSBvbiBmcmVlYnNkKiBzeXN0ZW1zCi0gIGR1ZSB0byBwZXhwZWN0IG5vdCBzdXBwb3J0aW5n
IGl0IHByb3Blcmx5IChoYW5naW5nKQotCi0tIGxpbmsgdG8gd2ViIHBhZ2VzIGZyb20gLS1tYXJr
ZXJzIG91dHB1dCB3aGljaCBwcm92aWRlcyBoZWxwIGZvcgotICBweXRlc3QubWFyay4qIHVzYWdl
LgotCi0yLjMuMCAoMjAxMi0xMC0xOSkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1
ZTIwMiAtIGJldHRlciBhdXRvbWF0aWMgbmFtZXMgZm9yIHBhcmFtZXRyaXplZCB0ZXN0IGZ1bmN0
aW9ucwotLSBmaXggaXNzdWUxMzkgLSBpbnRyb2R1Y2UgQHB5dGVzdC5maXh0dXJlIHdoaWNoIGFs
bG93cyBkaXJlY3Qgc2NvcGluZwotICBhbmQgcGFyYW1ldHJpemF0aW9uIG9mIGZ1bmNhcmcgZmFj
dG9yaWVzLgotLSBmaXggaXNzdWUxOTggLSBjb25mdGVzdCBmaXh0dXJlcyB3ZXJlIG5vdCBmb3Vu
ZCBvbiB3aW5kb3dzMzIgaW4gc29tZQotICBjaXJjdW1zdGFuY2VzIHdpdGggbmVzdGVkIGRpcmVj
dG9yeSBzdHJ1Y3R1cmVzIGR1ZSB0byBwYXRoIG1hbmlwdWxhdGlvbiBpc3N1ZXMKLS0gZml4IGlz
c3VlMTkzIHNraXAgdGVzdCBmdW5jdGlvbnMgd2l0aCB3ZXJlIHBhcmFtZXRyaXplZCB3aXRoIGVt
cHR5Ci0gIHBhcmFtZXRlciBzZXRzCi0tIGZpeCBweXRob24zLjMgY29tcGF0LCBtb3N0bHkgcmVw
b3J0aW5nIGJpdHMgdGhhdCBwcmV2aW91c2x5IGRlcGVuZGVkCi0gIG9uIGRpY3Qgb3JkZXJpbmcK
LS0gaW50cm9kdWNlIHJlLW9yZGVyaW5nIG9mIHRlc3RzIGJ5IHJlc291cmNlIGFuZCBwYXJhbWV0
cml6YXRpb24gc2V0dXAKLSAgd2hpY2ggdGFrZXMgcHJlY2VkZW5jZSB0byB0aGUgdXN1YWwgZmls
ZS1vcmRlcmluZwotLSBmaXggaXNzdWUxODUgbW9ua2V5cGF0Y2hpbmcgdGltZS50aW1lIGRvZXMg
bm90IGNhdXNlIHB5dGVzdCB0byBmYWlsCi0tIGZpeCBpc3N1ZTE3MiBkdXBsaWNhdGUgY2FsbCBv
ZiBweXRlc3QuZml4dHVyZSBkZWNvcmF0b3JlZCBzZXR1cF9tb2R1bGUKLSAgZnVuY3Rpb25zCi0t
IGZpeCBqdW5pdHhtbD1wYXRoIGNvbnN0cnVjdGlvbiBzbyB0aGF0IGlmIHRlc3RzIGNoYW5nZSB0
aGUKLSAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgdGhlIHBhdGggaXMgYSByZWxhdGl2
ZSBwYXRoCi0gIGl0IGlzIGNvbnN0cnVjdGVkIGNvcnJlY3RseSBmcm9tIHRoZSBvcmlnaW5hbCBj
dXJyZW50IHdvcmtpbmcgZGlyLgotLSBmaXggInB5dGhvbiBzZXR1cC5weSB0ZXN0IiBleGFtcGxl
IHRvIGNhdXNlIGEgcHJvcGVyICJlcnJubyIgcmV0dXJuCi0tIGZpeCBpc3N1ZTE2NSAtIGZpeCBi
cm9rZW4gZG9jIGxpbmtzIGFuZCBtZW50aW9uIHN0YWNrb3ZlcmZsb3cgZm9yIEZBUQotLSBjYXRj
aCB1bmljb2RlLWlzc3VlcyB3aGVuIHdyaXRpbmcgZmFpbHVyZSByZXByZXNlbnRhdGlvbnMKLSAg
dG8gdGVybWluYWwgdG8gcHJldmVudCB0aGUgd2hvbGUgc2Vzc2lvbiBmcm9tIGNyYXNoaW5nCi0t
IGZpeCB4ZmFpbC9za2lwIGNvbmZ1c2lvbjogYSBza2lwLW1hcmsgb3IgYW4gaW1wZXJhdGl2ZSBw
eXRlc3Quc2tpcAotICB3aWxsIG5vdyB0YWtlIHByZWNlZGVuY2UgYmVmb3JlIHhmYWlsLW1hcmtl
cnMgYmVjYXVzZSB3ZQotICBjYW4ndCBkZXRlcm1pbmUgeGZhaWwveHBhc3Mgc3RhdHVzIGluIGNh
c2Ugb2YgYSBza2lwLiBzZWUgYWxzbzoKLSAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0
aW9ucy8xMTEwNTgyOC9pbi1weS10ZXN0LXdoZW4taS1leHBsaWNpdGx5LXNraXAtYS10ZXN0LXRo
YXQtaXMtbWFya2VkLWFzLXhmYWlsLWhvdy1jYW4taS1nZXQKLQotLSBhbHdheXMgcmVwb3J0IGlu
c3RhbGxlZCAzcmQgcGFydHkgcGx1Z2lucyBpbiB0aGUgaGVhZGVyIG9mIGEgdGVzdCBydW4KLQot
LSBmaXggaXNzdWUxNjA6IGEgZmFpbGluZyBzZXR1cCBvZiBhbiB4ZmFpbC1tYXJrZWQgdGVzdHMg
c2hvdWxkCi0gIGJlIHJlcG9ydGVkIGFzIHhmYWlsIChub3QgeHBhc3MpCi0KLS0gZml4IGlzc3Vl
MTI4OiBzaG93IGNhcHR1cmVkIG91dHB1dCB3aGVuIGNhcHN5cy9jYXBmZCBhcmUgdXNlZAotCi0t
IGZpeCBpc3N1ZTE3OTogcHJvcGVybHkgc2hvdyB0aGUgZGVwZW5kZW5jeSBjaGFpbiBvZiBmYWN0
b3JpZXMKLQotLSBwbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKC4uLikgbm93IHJhaXNlcyBWYWx1ZUVy
cm9yIGlmIHRoZQotICBwbHVnaW4gaGFzIGJlZW4gYWxyZWFkeSByZWdpc3RlcmVkIG9yIHRoZSBu
YW1lIGlzIHRha2VuCi0KLS0gZml4IGlzc3VlMTU5OiBpbXByb3ZlIGh0dHA6Ly9weXRlc3Qub3Jn
L2xhdGVzdC9mYXEuaHRtbAotICBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdCB0byB0aGUgIm1hZ2lj
IiBoaXN0b3J5LCBhbHNvIG1lbnRpb24KLSAgcHl0ZXN0LWRqYW5nbywgdHJpYWwgYW5kIHVuaXR0
ZXN0IGludGVncmF0aW9uLgotCi0tIG1ha2UgcmVxdWVzdC5rZXl3b3JkcyBhbmQgbm9kZS5rZXl3
b3JkcyB3cml0YWJsZS4gIEFsbCBkZXNjZW5kYW50Ci0gIGNvbGxlY3Rpb24gbm9kZXMgd2lsbCBz
ZWUga2V5d29yZCB2YWx1ZXMuICBLZXl3b3JkcyBhcmUgZGljdGlvbmFyaWVzCi0gIGNvbnRhaW5p
bmcgbWFya2VycyBhbmQgb3RoZXIgaW5mby4KLQotLSBmaXggaXNzdWUgMTc4OiB4bWwgYmluYXJ5
IGVzY2FwZXMgYXJlIG5vdyB3cmFwcGVkIGluIHB5LnhtbC5yYXcKLQotLSBmaXggaXNzdWUgMTc2
OiBjb3JyZWN0bHkgY2F0Y2ggdGhlIGJ1aWx0aW4gQXNzZXJ0aW9uRXJyb3IKLSAgZXZlbiB3aGVu
IHdlIHJlcGxhY2VkIEFzc2VydGlvbkVycm9yIHdpdGggYSBzdWJjbGFzcyBvbiB0aGUKLSAgcHl0
aG9uIGxldmVsCi0KLS0gZmFjdG9yeSBkaXNjb3Zlcnkgbm8gbG9uZ2VyIGZhaWxzIHdpdGggbWFn
aWMgZ2xvYmFsIGNhbGxhYmxlcwotICB0aGF0IHByb3ZpZGUgbm8gc2FuZSBfX2NvZGVfXyBvYmpl
Y3QgKG1vY2suY2FsbCBmb3IgZXhhbXBsZSkKLQotLSBmaXggaXNzdWUgMTgyOiB0ZXN0ZGlyLmlu
cHJvY2Vzc19ydW4gbm93IGNvbnNpZGVycyBwYXNzZWQgcGx1Z2lucwotCi0tIGZpeCBpc3N1ZSAx
ODg6IGVuc3VyZSBzeXMuZXhjX2luZm8gaXMgY2xlYXIgb24gcHl0aG9uMgotICAgICAgICAgICAg
ICAgICBiZWZvcmUgY2FsbGluZyBpbnRvIGEgdGVzdAotCi0tIGZpeCBpc3N1ZSAxOTE6IGFkZCB1
bml0dGVzdCBUZXN0Q2FzZSBydW5UZXN0IG1ldGhvZCBzdXBwb3J0Ci0tIGZpeCBpc3N1ZSAxNTY6
IG1vbmtleXBhdGNoIGNvcnJlY3RseSBoYW5kbGVzIGNsYXNzIGxldmVsIGRlc2NyaXB0b3JzCi0K
LS0gcmVwb3J0aW5nIHJlZmluZW1lbnRzOgotCi0gIC0gcHl0ZXN0X3JlcG9ydF9oZWFkZXIgbm93
IHJlY2VpdmVzIGEgInN0YXJ0ZGlyIiBzbyB0aGF0Ci0gICAgeW91IGNhbiB1c2Ugc3RhcnRkaXIu
YmVzdHJlbHBhdGgoeW91cnBhdGgpIHRvIHNob3cKLSAgICBuaWNlIHJlbGF0aXZlIHBhdGgKLQot
ICAtIGFsbG93IHBsdWdpbnMgdG8gaW1wbGVtZW50IGJvdGggcHl0ZXN0X3JlcG9ydF9oZWFkZXIg
YW5kCi0gICAgcHl0ZXN0X3Nlc3Npb25zdGFydCAoc2Vzc2lvbnN0YXJ0IGlzIGludm9rZWQgZmly
c3QpLgotCi0gIC0gZG9uJ3Qgc2hvdyBkZXNlbGVjdGVkIHJlYXNvbiBsaW5lIGlmIHRoZXJlIGlz
IG5vbmUKLQotICAtIHB5LnRlc3QgLXZ2IHdpbGwgc2hvdyBhbGwgb2YgYXNzZXJ0IGNvbXBhcmlz
b25zIGluc3RlYWQgb2YgdHJ1bmNhdGluZwotCi0yLjIuNCAoMjAxMi0wNS0yMikKLT09PT09PT09
PT09PT09PT09PQotCi0tIGZpeCBlcnJvciBtZXNzYWdlIGZvciByZXdyaXR0ZW4gYXNzZXJ0aW9u
cyBpbnZvbHZpbmcgdGhlICUgb3BlcmF0b3IKLS0gZml4IGlzc3VlIDEyNjogY29ycmVjdGx5IG1h
dGNoIGFsbCBpbnZhbGlkIHhtbCBjaGFyYWN0ZXJzIGZvciBqdW5pdHhtbAotICBiaW5hcnkgZXNj
YXBlCi0tIGZpeCBpc3N1ZSB3aXRoIHVuaXR0ZXN0OiBub3cgQHVuaXR0ZXN0LmV4cGVjdGVkRmFp
bHVyZSBtYXJrZXJzIHNob3VsZAotICBiZSBwcm9jZXNzZWQgY29ycmVjdGx5ICh5b3UgY2FuIGFs
c28gdXNlIEBweXRlc3QubWFyayBtYXJrZXJzKQotLSBkb2N1bWVudCBpbnRlZ3JhdGlvbiB3aXRo
IHRoZSBleHRlbmRlZCBkaXN0cmlidXRlL3NldHVwdG9vbHMgdGVzdCBjb21tYW5kcwotLSBmaXgg
aXNzdWUgMTQwOiBwcm9wZXJseSBnZXQgdGhlIHJlYWwgZnVuY3Rpb25zCi0gIG9mIGJvdW5kIGNs
YXNzbWV0aG9kcyBmb3Igc2V0dXAvdGVhcmRvd25fY2xhc3MKLS0gZml4IGlzc3VlICMxNDE6IHN3
aXRjaCBmcm9tIHRoZSBkZWNlYXNlZCBwYXN0ZS5wb2Nvby5vcmcgdG8gYnBhc3RlLm5ldAotLSBm
aXggaXNzdWUgIzE0MzogY2FsbCB1bmNvbmZpZ3VyZS9zZXNzaW9uZmluaXNoIGFsd2F5cyB3aGVu
Ci0gIGNvbmZpZ3VyZS9zZXNzaW9uc3RhcnQgd2hlcmUgY2FsbGVkCi0tIGZpeCBpc3N1ZSAjMTQ0
OiBiZXR0ZXIgbWFuZ2xlIHRlc3QgaWRzIHRvIGp1bml0eG1sIGNsYXNzbmFtZXMKLS0gdXBncmFk
ZSBkaXN0cmlidXRlX3NldHVwLnB5IHRvIDAuNi4yNwotCi0yLjIuMyAoMjAxMi0wMi0wNSkKLT09
PT09PT09PT09PT09PT09PQotCi0tIGZpeCB1cGxvYWRlZCBwYWNrYWdlIHRvIG9ubHkgaW5jbHVk
ZSBuZWNlc3NhcnkgZmlsZXMKLQotMi4yLjIgKDIwMTItMDItMDUpCi09PT09PT09PT09PT09PT09
PT0KLQotLSBmaXggaXNzdWUxMDE6IHdyb25nIGFyZ3MgdG8gdW5pdHRlc3QuVGVzdENhc2UgdGVz
dCBmdW5jdGlvbiBub3cKLSAgcHJvZHVjZSBiZXR0ZXIgb3V0cHV0Ci0tIGZpeCBpc3N1ZTEwMjog
cmVwb3J0IG1vcmUgdXNlZnVsIGVycm9ycyBhbmQgaGludHMgZm9yIHdoZW4gYQotICB0ZXN0IGRp
cmVjdG9yeSB3YXMgcmVuYW1lZCBhbmQgc29tZSBweWMvX19weWNhY2hlX18gcmVtYWluCi0tIGZp
eCBpc3N1ZTEwNjogYWxsb3cgcGFyYW1ldHJpemUgdG8gYmUgYXBwbGllZCBtdWx0aXBsZSB0aW1l
cwotICBlLmcuIGZyb20gbW9kdWxlLCBjbGFzcyBhbmQgYXQgZnVuY3Rpb24gbGV2ZWwuCi0tIGZp
eCBpc3N1ZTEwNzogYWN0dWFsbHkgcGVyZm9ybSBzZXNzaW9uIHNjb3BlIGZpbmFsaXphdGlvbgot
LSBkb24ndCBjaGVjayBpbiBwYXJhbWV0cml6ZSBpZiBpbmRpcmVjdCBwYXJhbWV0ZXJzIGFyZSBm
dW5jYXJnIG5hbWVzCi0tIGFkZCBjaGRpciBtZXRob2QgdG8gbW9ua2V5cGF0Y2ggZnVuY2FyZwot
LSBmaXggY3Jhc2ggcmVzdWx0aW5nIGZyb20gY2FsbGluZyBtb25rZXlwYXRjaCB1bmRvIGEgc2Vj
b25kIHRpbWUKLS0gZml4IGlzc3VlMTE1OiBtYWtlIC0tY29sbGVjdG9ubHkgcm9idXN0IGFnYWlu
c3QgZWFybHkgZmFpbHVyZQotICAobWlzc2luZyBmaWxlcy9kaXJlY3RvcmllcykKLS0gIi1xcSAt
LWNvbGxlY3Rvbmx5IiBub3cgc2hvd3Mgb25seSBmaWxlcyBhbmQgdGhlIG51bWJlciBvZiB0ZXN0
cyBpbiB0aGVtCi0tICItcSAtLWNvbGxlY3Rvbmx5IiBub3cgc2hvd3MgdGVzdCBpZHMKLS0gYWxs
b3cgYWRkaW5nIG9mIGF0dHJpYnV0ZXMgdG8gdGVzdCByZXBvcnRzIHN1Y2ggdGhhdCBpdCBhbHNv
IHdvcmtzCi0gIHdpdGggZGlzdHJpYnV0ZWQgdGVzdGluZyAobm8gdXBncmFkZSBvZiBweXRlc3Qt
eGRpc3QgbmVlZGVkKQotCi0yLjIuMSAoMjAxMS0xMi0xNikKLT09PT09PT09PT09PT09PT09PQot
Ci0tIGZpeCBpc3N1ZTk5IChpbiBweXRlc3QgYW5kIHB5KSBpbnRlcm5hbGxlcnJvcnMgd2l0aCBy
ZXN1bHRsb2cgbm93Ci0gIHByb2R1Y2UgYmV0dGVyIG91dHB1dCAtIGZpeGVkIGJ5IG5vcm1hbGl6
aW5nIHB5dGVzdF9pbnRlcm5hbGVycm9yCi0gIGlucHV0IGFyZ3VtZW50cy4KLS0gZml4IGlzc3Vl
OTcgLyB0cmFjZWJhY2sgaXNzdWVzIChpbiBweXRlc3QgYW5kIHB5KSBpbXByb3ZlIHRyYWNlYmFj
ayBvdXRwdXQKLSAgaW4gY29uanVuY3Rpb24gd2l0aCBqaW5qYTIgYW5kIGN5dGhvbiB3aGljaCBo
YWNrIHRyYWNlYmFja3MKLS0gZml4IGlzc3VlOTMgKGluIHB5dGVzdCBhbmQgcHl0ZXN0LXhkaXN0
KSBhdm9pZCAiZGVsYXllZCB0ZWFyZG93bnMiOgotICB0aGUgZmluYWwgdGVzdCBpbiBhIHRlc3Qg
bm9kZSB3aWxsIG5vdyBydW4gaXRzIHRlYXJkb3duIGRpcmVjdGx5Ci0gIGluc3RlYWQgb2Ygd2Fp
dGluZyBmb3IgdGhlIGVuZCBvZiB0aGUgc2Vzc2lvbi4gVGhhbmtzIERhdmUgSHVudCBmb3IKLSAg
dGhlIGdvb2QgcmVwb3J0aW5nIGFuZCBmZWVkYmFjay4gIFRoZSBweXRlc3RfcnVudGVzdF9wcm90
b2NvbCBhcyB3ZWxsCi0gIGFzIHRoZSBweXRlc3RfcnVudGVzdF90ZWFyZG93biBob29rcyBub3cg
aGF2ZSAibmV4dGl0ZW0iIGF2YWlsYWJsZQotICB3aGljaCB3aWxsIGJlIE5vbmUgaW5kaWNhdGlu
ZyB0aGUgZW5kIG9mIHRoZSB0ZXN0IHJ1bi4KLS0gZml4IGNvbGxlY3Rpb24gY3Jhc2ggZHVlIHRv
IHVua25vd24tc291cmNlIGNvbGxlY3RlZCBpdGVtcywgdGhhbmtzCi0gIHRvIFJhbGYgU2NobWl0
dCAoZml4ZWQgYnkgZGVwZW5kaW5nIG9uIGEgbW9yZSByZWNlbnQgcHlsaWIpCi0KLTIuMi4wICgy
MDExLTExLTE4KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4IGlzc3VlOTA6IGludHJvZHVj
ZSBlYWdlciB0ZWFyaW5nIGRvd24gb2YgdGVzdCBpdGVtcyBzbyB0aGF0Ci0gIHRlYXJkb3duIGZ1
bmN0aW9uIGFyZSBjYWxsZWQgZWFybGllci4KLS0gYWRkIGFuIGFsbC1wb3dlcmZ1bCBtZXRhZnVu
Yy5wYXJhbWV0cml6ZSBmdW5jdGlvbiB3aGljaCBhbGxvd3MgdG8KLSAgcGFyYW1ldHJpemUgdGVz
dCBmdW5jdGlvbiBhcmd1bWVudHMgaW4gbXVsdGlwbGUgc3RlcHMgYW5kIHRoZXJlZm9yZQotICBm
cm9tIGluZGVwZW5kZW50IHBsdWdpbnMgYW5kIHBsYWNlcy4KLS0gYWRkIGEgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplIGhlbHBlciB3aGljaCBhbGxvd3MgdG8gZWFzaWx5Ci0gIGNhbGwgYSB0ZXN0
IGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IGFyZ3VtZW50IHZhbHVlcwotLSBBZGQgZXhhbXBsZXMg
dG8gdGhlICJwYXJhbWV0cml6ZSIgZXhhbXBsZSBwYWdlLCBpbmNsdWRpbmcgYSBxdWljayBwb3J0
Ci0gIG9mIFRlc3Qgc2NlbmFyaW9zIGFuZCB0aGUgbmV3IHBhcmFtZXRyaXplIGZ1bmN0aW9uIGFu
ZCBkZWNvcmF0b3IuCi0tIGludHJvZHVjZSByZWdpc3RyYXRpb24gZm9yICJweXRlc3QubWFyay4q
IiBoZWxwZXJzIHZpYSBpbmktZmlsZXMKLSAgb3IgdGhyb3VnaCBwbHVnaW4gaG9va3MuICBBbHNv
IGludHJvZHVjZSBhICItLXN0cmljdCIgb3B0aW9uIHdoaWNoCi0gIHdpbGwgdHJlYXQgdW5yZWdp
c3RlcmVkIG1hcmtlcnMgYXMgZXJyb3JzCi0gIGFsbG93aW5nIHRvIGF2b2lkIHR5cG9zIGFuZCBt
YWludGFpbiBhIHdlbGwgZGVzY3JpYmVkIHNldCBvZiBtYXJrZXJzCi0gIGZvciB5b3VyIHRlc3Qg
c3VpdGUuICBTZWUgZXhhcGxlcyBhdCBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvbWFyay5odG1s
Ci0gIGFuZCBpdHMgbGlua3MuCi0tIGlzc3VlNTA6IGludHJvZHVjZSAiLW0gbWFya2VyIiBvcHRp
b24gdG8gc2VsZWN0IHRlc3RzIGJhc2VkIG9uIG1hcmtlcnMKLSAgKHRoaXMgaXMgYSBzdHJpY3Rl
ciBhbmQgbW9yZSBwcmVkaWN0YWJsZSB2ZXJzaW9uIG9mICctaycgaW4gdGhhdCAiLW0iCi0gIG9u
bHkgbWF0Y2hlcyBjb21wbGV0ZSBtYXJrZXJzIGFuZCBoYXMgbW9yZSBvYnZpb3VzIHJ1bGVzIGZv
ciBhbmQvb3IKLSAgc2VtYW50aWNzLgotLSBuZXcgZmVhdHVyZSB0byBoZWxwIG9wdGltaXppbmcg
dGhlIHNwZWVkIG9mIHlvdXIgdGVzdHM6Ci0gIC0tZHVyYXRpb25zPU4gb3B0aW9uIGZvciBkaXNw
bGF5aW5nIE4gc2xvd2VzdCB0ZXN0IGNhbGxzCi0gIGFuZCBzZXR1cC90ZWFyZG93biBtZXRob2Rz
LgotLSBmaXggaXNzdWU4NzogLS1wYXN0ZWJpbiBub3cgd29ya3Mgd2l0aCBweXRob24zCi0tIGZp
eCBpc3N1ZTg5OiAtLXBkYiB3aXRoIHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyBpbiBkb2N0ZXN0IHdv
cmsgbW9yZSBzZW5zaWJseQotLSBmaXggYW5kIGNsZWFudXAgcHl0ZXN0J3Mgb3duIHRlc3Qgc3Vp
dGUgdG8gbm90IGxlYWsgRkRzCi0tIGZpeCBpc3N1ZTgzOiBsaW5rIHRvIGdlbmVyYXRlZCBmdW5j
YXJnIGxpc3QKLS0gZml4IGlzc3VlNzQ6IHB5YXJnIG1vZHVsZSBuYW1lcyBhcmUgbm93IGNoZWNr
ZWQgYWdhaW5zdCBpbXAuZmluZF9tb2R1bGUgZmFsc2UgcG9zaXRpdmVzCi0tIGZpeCBjb21wYXRp
YmlsaXR5IHdpdGggdHdpc3RlZC90cmlhbC0xMS4xLjAgdXNlIGNhc2VzCi0tIHNpbXBsaWZ5IE5v
ZGUubGlzdGNoYWluCi0tIHNpbXBsaWZ5IGp1bml0eG1sIG91dHB1dCBjb2RlIGJ5IHJlbHlpbmcg
b24gcHkueG1sCi0tIGFkZCBzdXBwb3J0IGZvciBza2lwIHByb3BlcnRpZXMgb24gdW5pdHRlc3Qg
Y2xhc3NlcyBhbmQgZnVuY3Rpb25zCi0KLTIuMS4zICgyMDExLTEwLTE4KQotPT09PT09PT09PT09
PT09PT09Ci0KLS0gZml4IGlzc3VlNzk6IGFzc2VydGlvbiByZXdyaXRpbmcgZmFpbGVkIG9uIHNv
bWUgY29tcGFyaXNvbnMgaW4gYm9vbG9wcwotLSBjb3JyZWN0bHkgaGFuZGxlIHplcm8gbGVuZ3Ro
IGFyZ3VtZW50cyAoYSBsYSBweXRlc3QgJycpCi0tIGZpeCBpc3N1ZTY3IC8ganVuaXR4bWwgbm93
IGNvbnRhaW5zIGNvcnJlY3QgdGVzdCBkdXJhdGlvbnMsIHRoYW5rcyByb25ueQotLSBmaXggaXNz
dWU3NSAvIHNraXBwaW5nIHRlc3QgZmFpbHVyZSBvbiBqeXRob24KLS0gZml4IGlzc3VlNzcgLyBB
bGxvdyBhc3NlcnRyZXByX2NvbXBhcmUgaG9vayB0byBhcHBseSB0byBhIHN1YnNldCBvZiB0ZXN0
cwotCi0yLjEuMiAoMjAxMS0wOS0yNCkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBhc3Nl
cnRpb24gcmV3cml0aW5nIG9uIGZpbGVzIHdpdGggd2luZG93cyBuZXdsaW5lcyBvbiBzb21lIFB5
dGhvbiB2ZXJzaW9ucwotLSByZWZpbmUgdGVzdCBkaXNjb3ZlcnkgYnkgcGFja2FnZS9tb2R1bGUg
bmFtZSAoLS1weWFyZ3MpLCB0aGFua3MgRmxvcmlhbiBNYXllcgotLSBmaXggaXNzdWU2OSAvIGFz
c2VydGlvbiByZXdyaXRpbmcgZml4ZWQgb24gc29tZSBib29sZWFuIG9wZXJhdGlvbnMKLS0gZml4
IGlzc3VlNjggLyBwYWNrYWdlcyBub3cgd29yayB3aXRoIGFzc2VydGlvbiByZXdyaXRpbmcKLS0g
Zml4IGlzc3VlNjY6IHVzZSBkaWZmZXJlbnQgYXNzZXJ0aW9uIHJld3JpdGluZyBjYWNoZXMgd2hl
biB0aGUgLU8gb3B0aW9uIGlzIHBhc3NlZAotLSBkb24ndCB0cnkgYXNzZXJ0aW9uIHJld3JpdGlu
ZyBvbiBKeXRob24sIHVzZSByZWludGVycAotCi0yLjEuMQotPT09PT0KLQotLSBmaXggaXNzdWU2
NCAvIHB5dGVzdC5zZXRfdHJhY2Ugbm93IHdvcmtzIHdpdGhpbiBweXRlc3RfZ2VuZXJhdGVfdGVz
dHMgaG9va3MKLS0gZml4IGlzc3VlNjAgLyBmaXggZXJyb3IgY29uZGl0aW9ucyBpbnZvbHZpbmcg
dGhlIGNyZWF0aW9uIG9mIF9fcHljYWNoZV9fCi0tIGZpeCBpc3N1ZTYzIC8gYXNzZXJ0aW9uIHJl
d3JpdGluZyBvbiBpbnNlcnRzIGludm9sdmluZyBzdHJpbmdzIGNvbnRhaW5pbmcgJyUnCi0tIGZp
eCBhc3NlcnRpb24gcmV3cml0aW5nIG9uIGNhbGxzIHdpdGggYSAqKiBhcmcKLS0gZG9uJ3QgY2Fj
aGUgcmV3cml0dGVuIG1vZHVsZXMgaWYgYnl0ZWNvZGUgZ2VuZXJhdGlvbiBpcyBkaXNhYmxlZAot
LSBmaXggYXNzZXJ0aW9uIHJld3JpdGluZyBpbiByZWFkLW9ubHkgZGlyZWN0b3JpZXMKLS0gZml4
IGlzc3VlNTk6IHByb3ZpZGUgc3lzdGVtLW91dC9lcnIgdGFncyBmb3IganVuaXR4bWwgb3V0cHV0
Ci0tIGZpeCBpc3N1ZTYxOiBhc3NlcnRpb24gcmV3cml0aW5nIG9uIGJvb2xlYW4gb3BlcmF0aW9u
cyB3aXRoIDMgb3IgbW9yZSBvcGVyYW5kcwotLSB5b3UgY2FuIG5vdyBidWlsZCBhIG1hbiBwYWdl
IHdpdGggImNkIGRvYyA7IG1ha2UgbWFuIgotCi0yLjEuMCAoMjAxMS0wNy0wOSkKLT09PT09PT09
PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTUzIGNhbGwgbm9zZXN0eWxlIHNldHVwIGZ1bmN0aW9u
cyB3aXRoIGNvcnJlY3Qgb3JkZXJpbmcKLS0gZml4IGlzc3VlNTggYW5kIGlzc3VlNTk6IG5ldyBh
c3NlcnRpb24gY29kZSBmaXhlcwotLSBtZXJnZSBCZW5qYW1pbidzIGFzc2VydGlvbnJld3JpdGUg
YnJhbmNoOiBub3cgYXNzZXJ0aW9ucwotICBmb3IgdGVzdCBtb2R1bGVzIG9uIHB5dGhvbiAyLjYg
YW5kIGFib3ZlIGFyZSBkb25lIGJ5IHJld3JpdGluZwotICB0aGUgQVNUIGFuZCBzYXZpbmcgdGhl
IHB5YyBmaWxlIGJlZm9yZSB0aGUgdGVzdCBtb2R1bGUgaXMgaW1wb3J0ZWQuCi0gIHNlZSBkb2Mv
YXNzZXJ0LnR4dCBmb3IgbW9yZSBpbmZvLgotLSBmaXggaXNzdWU0MzogaW1wcm92ZSBkb2N0ZXN0
cyB3aXRoIGJldHRlciB0cmFjZWJhY2sgcmVwb3J0aW5nIG9uCi0gIHVuZXhwZWN0ZWQgZXhjZXB0
aW9ucwotLSBmaXggaXNzdWU0NzogdGltaW5nIG91dHB1dCBpbiBqdW5pdHhtbCBmb3IgdGVzdCBj
YXNlcyBpcyBub3cgY29ycmVjdAotLSBmaXggaXNzdWU0ODogdHlwbyBpbiBNYXJrSW5mbyByZXBy
IGxlYWRpbmcgdG8gZXhjZXB0aW9uCi0tIGZpeCBpc3N1ZTQ5OiBhdm9pZCBjb25mdXNpbmcgZXJy
b3Igd2hlbiBpbml0aXphbGlhdGlvbiBwYXJ0aWFsbHkgZmFpbHMKLS0gZml4IGlzc3VlNDQ6IGVu
di91c2VybmFtZSBleHBhbnNpb24gZm9yIGp1bml0eG1sIGZpbGUgcGF0aAotLSBzaG93IHJlbGVh
c2VsZXZlbCBpbmZvcm1hdGlvbiBpbiB0ZXN0IHJ1bnMgZm9yIHB5cHkKLS0gcmV3b3JrZWQgZG9j
IHBhZ2VzIGZvciBiZXR0ZXIgbmF2aWdhdGlvbiBhbmQgUERGIGdlbmVyYXRpb24KLS0gcmVwb3J0
IEtleWJvYXJkSW50ZXJydXB0IGV2ZW4gaWYgaW50ZXJydXB0ZWQgZHVyaW5nIHNlc3Npb24gc3Rh
cnR1cAotLSBmaXggaXNzdWUgMzUgLSBwcm92aWRlIFBERiBkb2MgdmVyc2lvbiBhbmQgZG93bmxv
YWQgbGluayBmcm9tIGluZGV4IHBhZ2UKLQotMi4wLjMgKDIwMTEtMDUtMTEpCi09PT09PT09PT09
PT09PT09PT0KLQotLSBmaXggaXNzdWUzODogbmljZXIgdHJhY2ViYWNrcyBvbiBjYWxscyB0byBo
b29rcywgcGFydGljdWxhcmx5IGVhcmx5Ci0gIGNvbmZpZ3VyZS9zZXNzaW9uc3RhcnQgb25lcwot
Ci0tIGZpeCBtaXNzaW5nIHNraXAgcmVhc29uL21ldGEgaW5mb3JtYXRpb24gaW4ganVuaXR4bWwg
ZmlsZXMsIHJlcG9ydGVkCi0gIHZpYSBodHRwOi8vbGlzdHMuaWR5bGwub3JnL3BpcGVybWFpbC90
ZXN0aW5nLWluLXB5dGhvbi8yMDExLU1hcmNoLzAwMzkyOC5odG1sCi0KLS0gZml4IGlzc3VlMzQ6
IGF2b2lkIGNvbGxlY3Rpb24gZmFpbHVyZSB3aXRoICJ0ZXN0IiBwcmVmaXhlZCBjbGFzc2VzCi0g
IGRlcml2aW5nIGZyb20gb2JqZWN0LgotCi0tIGRvbid0IHJlcXVpcmUgemxpYiAoYW5kIG90aGVy
IGxpYnMpIGZvciBnZW5zY3JpcHQgcGx1Z2luIHdpdGhvdXQKLSAgLS1nZW5zY3JpcHQgYWN0dWFs
bHkgYmVpbmcgdXNlZC4KLQotLSBzcGVlZCB1cCBza2lwcyAoYnkgbm90IGRvaW5nIGEgZnVsbCB0
cmFjZWJhY2sgcmVwcmVzZW50YXRpb24KLSAgaW50ZXJuYWxseSkKLQotLSBmaXggaXNzdWUzNzog
YXZvaWQgaW52YWxpZCBjaGFyYWN0ZXJzIGluIGp1bml0eG1sJ3Mgb3V0cHV0Ci0KLTIuMC4yICgy
MDExLTAzLTA5KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gdGFja2xlIGlzc3VlMzIgLSBzcGVl
ZCB1cCB0ZXN0IHJ1bnMgb2YgdmVyeSBxdWljayB0ZXN0IGZ1bmN0aW9ucwotICBieSByZWR1Y2lu
ZyB0aGUgcmVsYXRpdmUgb3ZlcmhlYWQKLQotLSBmaXggaXNzdWUzMCAtIGV4dGVuZGVkIHhmYWls
L3NraXBpZiBoYW5kbGluZyBhbmQgaW1wcm92ZWQgcmVwb3J0aW5nLgotICBJZiB5b3UgaGF2ZSBh
IHN5bnRheCBlcnJvciBpbiB5b3VyIHNraXAveGZhaWwKLSAgZXhwcmVzc2lvbnMgeW91IG5vdyBn
ZXQgbmljZSBlcnJvciByZXBvcnRzLgotCi0gIEFsc28geW91IGNhbiBub3cgYWNjZXNzIG1vZHVs
ZSBnbG9iYWxzIGZyb20geGZhaWwvc2tpcGlmCi0gIGV4cHJlc3Npb25zIHNvIHRoYXQgdGhpcyBm
b3IgZXhhbXBsZSB3b3JrcyBub3c6OgotCi0gICAgaW1wb3J0IHB5dGVzdAotICAgIGltcG9ydCBt
eW1vZHVsZQotICAgIEBweXRlc3QubWFyay5za2lwaWYoIm15bW9kdWxlLl9fdmVyc2lvbl9fWzBd
ID09ICIxIikKLSAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgICBwYXNzCi0KLSAgVGhp
cyB3aWxsIG5vdCBydW4gdGhlIHRlc3QgZnVuY3Rpb24gaWYgdGhlIG1vZHVsZSdzIHZlcnNpb24g
c3RyaW5nCi0gIGRvZXMgbm90IHN0YXJ0IHdpdGggYSAiMSIuICBOb3RlIHRoYXQgc3BlY2lmeWlu
ZyBhIHN0cmluZyBpbnN0ZWFkCi0gIG9mIGEgYm9vbGVhbiBleHByZXNzaW9ucyBhbGxvd3MgcHku
dGVzdCB0byByZXBvcnQgbWVhbmluZ2Z1bCBpbmZvcm1hdGlvbgotICB3aGVuIHN1bW1hcml6aW5n
IGEgdGVzdCBydW4gYXMgdG8gd2hhdCBjb25kaXRpb25zIGxlYWQgdG8gc2tpcHBpbmcKLSAgKG9y
IHhmYWlsLWluZykgdGVzdHMuCi0KLS0gZml4IGlzc3VlMjggLSBzZXR1cF9tZXRob2QgYW5kIHB5
dGVzdF9nZW5lcmF0ZV90ZXN0cyB3b3JrIHRvZ2V0aGVyCi0gIFRoZSBzZXR1cF9tZXRob2QgZml4
dHVyZSBtZXRob2Qgbm93IGdldHMgY2FsbGVkIGFsc28gZm9yCi0gIHRlc3QgZnVuY3Rpb24gaW52
b2NhdGlvbnMgZ2VuZXJhdGVkIGZyb20gdGhlIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cwotICBob29r
LgotCi0tIGZpeCBpc3N1ZTI3IC0gY29sbGVjdG9ubHkgYW5kIGtleXdvcmQtc2VsZWN0aW9uICgt
aykgbm93IHdvcmsgdG9nZXRoZXIKLSAgQWxzbywgaWYgeW91IGRvICJweS50ZXN0IC0tY29sbGVj
dG9ubHkgLXEiIHlvdSBub3cgZ2V0IGEgZmxhdCBsaXN0Ci0gIG9mIHRlc3QgaWRzIHRoYXQgeW91
IGNhbiB1c2UgdG8gcGFzdGUgdG8gdGhlIHB5LnRlc3QgY29tbWFuZGxpbmUKLSAgaW4gb3JkZXIg
dG8gZXhlY3V0ZSBhIHBhcnRpY3VsYXIgdGVzdC4KLQotLSBmaXggaXNzdWUyNSBhdm9pZCByZXBv
cnRlZCBwcm9ibGVtcyB3aXRoIC0tcGRiIGFuZCBweXRob24zLjIvZW5jb2RpbmdzIG91dHB1dAot
Ci0tIGZpeCBpc3N1ZTIzIC0gdG1wZGlyIGFyZ3VtZW50IG5vdyB3b3JrcyBvbiBQeXRob24zLjIg
YW5kIFdpbmRvd3NYUAotICBTdGFydGluZyB3aXRoIFB5dGhvbjMuMiBvcy5zeW1saW5rIG1heSBi
ZSBzdXBwb3J0ZWQuIEJ5IHJlcXVpcmluZwotICBhIG5ld2VyIHB5IGxpYiB2ZXJzaW9uIHRoZSBw
eS5wYXRoLmxvY2FsKCkgaW1wbGVtZW50YXRpb24gYWNrbm93bGVkZ2VzCi0gIHRoaXMuCi0KLS0g
Zml4ZWQgdHlwb3MgaW4gdGhlIGRvY3MgKHRoYW5rcyBWaWN0b3IgR2FyY2lhLCBCcmlhbm5hIExh
dWdoZXIpIGFuZCBwYXJ0aWN1bGFyCi0gIHRoYW5rcyB0byBMYXVyYSBDcmVpZ2h0b24gd2hvIGFs
c28gcmV2aWV3ZWQgcGFydHMgb2YgdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gZml4IHNsaWdodGx5
IHdyb25nIG91dHB1dCBvZiB2ZXJib3NlIHByb2dyZXNzIHJlcG9ydGluZyBmb3IgY2xhc3Nlcwot
ICAodGhhbmtzIEFtYXVyeSkKLQotLSBtb3JlIHByZWNpc2UgKGF2b2lkaW5nIG9mKSBkZXByZWNh
dGlvbiB3YXJuaW5ncyBmb3Igbm9kZS5DbGFzc3xGdW5jdGlvbiBhY2Nlc3NlcwotCi0tIGF2b2lk
IHN0ZCB1bml0dGVzdCBhc3NlcnRpb24gaGVscGVyIGNvZGUgaW4gdHJhY2ViYWNrcyAodGhhbmtz
IFJvbm55KQotCi0yLjAuMSAoMjAxMS0wMi0wNykKLT09PT09PT09PT09PT09PT09PQotCi0tIHJl
ZmluZSBhbmQgdW5pZnkgaW5pdGlhbCBjYXB0dXJpbmcgc28gdGhhdCBpdCB3b3JrcyBuaWNlbHkK
LSAgZXZlbiBpZiB0aGUgbG9nZ2luZyBtb2R1bGUgaXMgdXNlZCBvbiBhbiBlYXJseS1sb2FkZWQg
Y29uZnRlc3QucHkKLSAgZmlsZSBvciBwbHVnaW4uCi0tIGFsbG93IHRvIG9taXQgIigpIiBpbiB0
ZXN0IGlkcyB0byBhbGxvdyBmb3IgdW5pZm9ybSB0ZXN0IGlkcwotICBhcyBwcm9kdWNlZCBieSBB
bGZyZWRvJ3MgbmljZSBweXRlc3QudmltIHBsdWdpbi4KLS0gZml4IGlzc3VlMTIgLSBzaG93IHBs
dWdpbiB2ZXJzaW9ucyB3aXRoICItLXZlcnNpb24iIGFuZAotICAiLS10cmFjZWNvbmZpZyIgYW5k
IGFsc28gZG9jdW1lbnQgaG93IHRvIGFkZCBleHRyYSBpbmZvcm1hdGlvbgotICB0byByZXBvcnRp
bmcgdGVzdCBoZWFkZXIKLS0gZml4IGlzc3VlMTcgKGltcG9ydC0qIHJlcG9ydGluZyBpc3N1ZSBv
biBweXRob24zKSBieQotICByZXF1aXJpbmcgcHk+MS40LjAgKDEuNC4xIGlzIGdvaW5nIHRvIGlu
Y2x1ZGUgaXQpCi0tIGZpeCBpc3N1ZTEwIChudW1weSBhcnJheXMgdHJ1dGggY2hlY2tpbmcpIGJ5
IHJlZmluaW5nCi0gIGFzc2VydGlvbiBpbnRlcnByZXRhdGlvbiBpbiBweSBsaWIKLS0gZml4IGlz
c3VlMTU6IG1ha2Ugbm9zZSBjb21wYXRpYmlsaXR5IHRlc3RzIGNvbXBhdGlibGUKLSAgd2l0aCBw
eXRob24zIChub3cgdGhhdCBub3NlLTEuMCBzdXBwb3J0cyBweXRob24zKQotLSByZW1vdmUgc29t
ZXdoYXQgc3VycHJpc2luZyAic2FtZS1jb25mdGVzdCIgZGV0ZWN0aW9uIGJlY2F1c2UKLSAgaXQg
aWdub3JlcyBjb25mdGVzdC5weSB3aGVuIHRoZXkgYXBwZWFyIGluIHNldmVyYWwgc3ViZGlycy4K
LS0gaW1wcm92ZSBhc3NlcnRpb25zICgibm90IGluIiksIHRoYW5rcyBGbG9yaXMgQnJ1eW5vb2do
ZQotLSBpbXByb3ZlIGJlaGF2aW91ci93YXJuaW5ncyB3aGVuIHJ1bm5pbmcgb24gdG9wIG9mICJw
eXRob24gLU9PIgotICAoYXNzZXJ0aW9ucyBhbmQgZG9jc3RyaW5ncyBhcmUgdHVybmVkIG9mZiwg
bGVhZGluZyB0byBwb3RlbnRpYWwKLSAgZmFsc2UgcG9zaXRpdmVzKQotLSBpbnRyb2R1Y2UgYSBw
eXRlc3RfY21kbGluZV9wcm9jZXNzYXJncyhhcmdzKSBob29rCi0gIHRvIGFsbG93IGR5bmFtaWMg
Y29tcHV0YXRpb24gb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgVGhpcyBmaXhlcyBhIHJl
Z3Jlc3Npb24gYmVjYXVzZSBweS50ZXN0IHByaW9yIHRvIDIuMAotICBhbGxvd2VkIHRvIHNldCBj
b21tYW5kIGxpbmUgb3B0aW9ucyBmcm9tIGNvbmZ0ZXN0LnB5Ci0gIGZpbGVzIHdoaWNoIHNvIGZh
ciBweXRlc3QtMi4wIG9ubHkgYWxsb3dlZCBmcm9tIGluaS1maWxlcyBub3cuCi0tIGZpeCBpc3N1
ZTc6IGFzc2VydCBmYWlsdXJlcyBpbiBkb2N0ZXN0IG1vZHVsZXMuCi0gIHVuZXhwZWN0ZWQgZmFp
bHVyZXMgaW4gZG9jdGVzdHMgd2lsbCBub3QgZ2VuZXJhbGx5Ci0gIHNob3cgbmljZXIsIGkuZS4g
d2l0aGluIHRoZSBkb2N0ZXN0IGZhaWxpbmcgY29udGV4dC4KLS0gZml4IGlzc3VlOTogc2V0dXAv
dGVhcmRvd24gZnVuY3Rpb25zIGZvciBhbiB4ZmFpbC1tYXJrZWQKLSAgdGVzdCB3aWxsIHJlcG9y
dCBhcyB4ZmFpbCBpZiB0aGV5IGZhaWwgYnV0IHJlcG9ydCBhcyBub3JtYWxseQotICBwYXNzaW5n
IChub3QgeHBhc3NpbmcpIGlmIHRoZXkgc3VjY2VlZC4gIFRoaXMgb25seSBpcyB0cnVlCi0gIGZv
ciAiZGlyZWN0IiBzZXR1cC90ZWFyZG93biBpbnZvY2F0aW9ucyBiZWNhdXNlIHRlYXJkb3duX2Ns
YXNzLwotICB0ZWFyZG93bl9tb2R1bGUgY2Fubm90IGNsb3NlbHkgcmVsYXRlIHRvIGEgc2luZ2xl
IHRlc3QuCi0tIGZpeCBpc3N1ZTE0OiBubyBsb2dnaW5nIGVycm9ycyBhdCBwcm9jZXNzIGV4aXQK
LS0gcmVmaW5lbWVudHMgdG8gImNvbGxlY3RpbmciIG91dHB1dCBvbiBub24tdHR5cwotLSByZWZp
bmUgaW50ZXJuYWwgcGx1Z2luIHJlZ2lzdHJhdGlvbiBhbmQgLS10cmFjZWNvbmZpZyBvdXRwdXQK
LS0gaW50cm9kdWNlIGEgbWVjaGFuaXNtIHRvIHByZXZlbnQvdW5yZWdpc3RlciBwbHVnaW5zIGZy
b20gdGhlCi0gIGNvbW1hbmQgbGluZSwgc2VlIGh0dHA6Ly9weXRlc3Qub3JnL3BsdWdpbnMuaHRt
bCNjbWR1bnJlZ2lzdGVyCi0tIGFjdGl2YXRlIHJlc3VsdGxvZyBwbHVnaW4gYnkgZGVmYXVsdAot
LSBmaXggcmVncmVzc2lvbiB3cnQgeWllbGRlZCB0ZXN0cyB3aGljaCBkdWUgdG8gdGhlCi0gIGNv
bGxlY3Rpb24tYmVmb3JlLXJ1bm5pbmcgc2VtYW50aWNzIHdlcmUgbm90Ci0gIHNldHVwIGFzIHdp
dGggcHl0ZXN0IDEuMy40LiAgTm90ZSwgaG93ZXZlciwgdGhhdAotICB0aGUgcmVjb21tZW5kZWQg
YW5kIG11Y2ggY2xlYW5lciB3YXkgdG8gZG8gdGVzdAotICBwYXJhbWV0cmFpemF0aW9uIHJlbWFp
bnMgdGhlICJweXRlc3RfZ2VuZXJhdGVfdGVzdHMiCi0gIG1lY2hhbmlzbSwgc2VlIHRoZSBkb2Nz
LgotCi0yLjAuMCAoMjAxMC0xMS0yNSkKLT09PT09PT09PT09PT09PT09PQotCi0tIHB5dGVzdC0y
LjAgaXMgbm93IGl0cyBvd24gcGFja2FnZSBhbmQgZGVwZW5kcyBvbiBweWxpYi0yLjAKLS0gbmV3
IGFiaWxpdHk6IHB5dGhvbiAtbSBweXRlc3QgLyBweXRob24gLW0gcHl0ZXN0Lm1haW4gYWJpbGl0
eQotLSBuZXcgcHl0aG9uIGludm9jYXRpb246IHB5dGVzdC5tYWluKGFyZ3MsIHBsdWdpbnMpIHRv
IGxvYWQKLSAgc29tZSBjdXN0b20gcGx1Z2lucyBlYXJseS4KLS0gdHJ5IGhhcmRlciB0byBydW4g
dW5pdHRlc3QgdGVzdCBzdWl0ZXMgaW4gYSBtb3JlIGNvbXBhdGlibGUgbWFubmVyCi0gIGJ5IGRl
ZmVycmluZyBzZXR1cC90ZWFyZG93biBzZW1hbnRpY3MgdG8gdGhlIHVuaXR0ZXN0IHBhY2thZ2Uu
Ci0gIGFsc28gd29yayBoYXJkZXIgdG8gcnVuIHR3aXN0ZWQvdHJpYWwgYW5kIERqYW5nbyB0ZXN0
cyB3aGljaAotICBzaG91bGQgbm93IGJhc2ljYWxseSB3b3JrIGJ5IGRlZmF1bHQuCi0tIGludHJv
ZHVjZSBhIG5ldyB3YXkgdG8gc2V0IGNvbmZpZyBvcHRpb25zIHZpYSBpbmktc3R5bGUgZmlsZXMs
Ci0gIGJ5IGRlZmF1bHQgc2V0dXAuY2ZnIGFuZCB0b3guaW5pIGZpbGVzIGFyZSBzZWFyY2hlZC4g
IFRoZSBvbGQKLSAgd2F5cyAoY2VydGFpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGR5bmFtaWMg
Y29uZnRlc3QucHkgcmVhZGluZwotICBpcyByZW1vdmVkKS4KLS0gYWRkIGEgbmV3ICItcSIgb3B0
aW9uIHdoaWNoIGRlY3JlYXNlcyB2ZXJib3NpdHkgYW5kIHByaW50cyBhIG1vcmUKLSAgbm9zZS91
bml0dGVzdC1zdHlsZSAiZG90IiBvdXRwdXQuCi0tIGZpeCBpc3N1ZTEzNSAtIG1hcmtzIG5vdyB3
b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBjYXNlcyBhcyB3ZWxsCi0tIGZpeCBpc3N1ZTEyNiAtIGlu
dHJvZHVjZSBweS50ZXN0LnNldF90cmFjZSgpIHRvIHRyYWNlIGV4ZWN1dGlvbiB2aWEKLSAgUERC
IGR1cmluZyB0aGUgcnVubmluZyBvZiB0ZXN0cyBldmVuIGlmIGNhcHR1cmluZyBpcyBvbmdvaW5n
LgotLSBmaXggaXNzdWUxMjMgLSBuZXcgInB5dGhvbiAtbSBweS50ZXN0IiBpbnZvY2F0aW9uIGZv
ciBweS50ZXN0Ci0gIChyZXF1aXJlcyBQeXRob24gMi41IG9yIGFib3ZlKQotLSBmaXggaXNzdWUx
MjQgLSBtYWtlIHJlcG9ydGluZyBtb3JlIHJlc2lsaWVudCBhZ2FpbnN0IHRlc3RzIG9wZW5pbmcK
LSAgZmlsZXMgb24gZmlsZWRlc2NyaXB0b3IgMSAoc3Rkb3V0KS4KLS0gZml4IGlzc3VlMTA5IC0g
c2libGluZyBjb25mdGVzdC5weSBmaWxlcyB3aWxsIG5vdCBiZSBsb2FkZWQuCi0gIChhbmQgRGly
ZWN0b3J5IGNvbGxlY3RvcnMgY2Fubm90IGJlIGN1c3RvbWl6ZWQgYW55bW9yZSBmcm9tIGEgRGly
ZWN0b3J5J3MKLSAgY29uZnRlc3QucHkgLSB0aGlzIG5lZWRzIHRvIGhhcHBlbiBhdCBsZWFzdCBv
bmUgbGV2ZWwgdXApLgotLSBpbnRyb2R1Y2UgKGN1c3RvbWl6YWJsZSkgYXNzZXJ0aW9uIGZhaWx1
cmUgcmVwcmVzZW50YXRpb25zIGFuZCBlbmhhbmNlCi0gIG91dHB1dCBvbiBhc3NlcnRpb24gZmFp
bHVyZXMgZm9yIGNvbXBhcmlzb25zIGFuZCBvdGhlciBjYXNlcyAoRmxvcmlzIEJydXlub29naGUp
Ci0tIG5vc2UtcGx1Z2luOiBwYXNzIHRocm91Z2ggdHlwZS1zaWduYXR1cmUgZmFpbHVyZXMgaW4g
c2V0dXAvdGVhcmRvd24KLSAgZnVuY3Rpb25zIGluc3RlYWQgb2Ygbm90IGNhbGxpbmcgdGhlbSAo
RWQgU2luZ2xldG9uKQotLSByZW1vdmUgcHkudGVzdC5jb2xsZWN0LkRpcmVjdG9yeSAoZm9sbG93
cyBmcm9tIGEgbWFqb3IgcmVmYWN0b3JpbmcKLSAgYW5kIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBj
b2xsZWN0aW9uIHByb2Nlc3MpCi0tIG1ham9ybHkgcmVkdWNlIHB5LnRlc3QgY29yZSBjb2RlLCBz
aGlmdCBmdW5jdGlvbi9weXRob24gdGVzdGluZyB0byBvd24gcGx1Z2luCi0tIGZpeCBpc3N1ZTg4
IChmaW5kaW5nIGN1c3RvbSB0ZXN0IG5vZGVzIGZyb20gY29tbWFuZCBsaW5lIGFyZykKLS0gcmVm
aW5lICd0bXBkaXInIGNyZWF0aW9uLCB3aWxsIG5vdyBjcmVhdGUgYmFzZW5hbWVzIGJldHRlciBh
c3NvY2lhdGVkCi0gIHdpdGggdGVzdCBuYW1lcyAodGhhbmtzIFJvbm55KQotLSAieHBhc3MiICh1
bmV4cGVjdGVkIHBhc3MpIHRlc3RzIGRvbid0IGNhdXNlIGV4aXRjb2RlIT0wCi0tIGZpeCBpc3N1
ZTEzMSAvIGlzc3VlNjAgLSBpbXBvcnRpbmcgZG9jdGVzdHMgaW4gX19pbml0X18gZmlsZXMgdXNl
ZCBhcyBuYW1lc3BhY2UgcGFja2FnZXMKLS0gZml4IGlzc3VlOTMgc3Rkb3V0L3N0ZGVyciBpcyBj
YXB0dXJlZCB3aGlsZSBpbXBvcnRpbmcgY29uZnRlc3QucHkKLS0gZml4IGJ1ZzogdW5pdHRlc3Qg
Y29sbGVjdGVkIGZ1bmN0aW9ucyBub3cgYWxzbyBjYW4gaGF2ZSAicHl0ZXN0bWFyayIKLSAgYXBw
bGllZCBhdCBjbGFzcy9tb2R1bGUgbGV2ZWwKLS0gYWRkIGFiaWxpdHkgdG8gdXNlICJjbGFzcyIg
bGV2ZWwgZm9yIGNhY2hlZF9zZXR1cCBoZWxwZXIKLS0gZml4IHN0cmFuZ2VuZXNzOiBtYXJrLiog
b2JqZWN0cyBhcmUgbm93IGltbXV0YWJsZSwgY3JlYXRlIG5ldyBpbnN0YW5jZXMKLQotMS4zLjQg
KDIwMTAtMDktMTQpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggaXNzdWUxMTE6IGltcHJv
dmUgaW5zdGFsbCBkb2N1bWVudGF0aW9uIGZvciB3aW5kb3dzCi0tIGZpeCBpc3N1ZTExOTogZml4
IGN1c3RvbSBjb2xsZWN0YWJpbGl0eSBvZiBfX2luaXRfXy5weSBhcyBhIG1vZHVsZQotLSBmaXgg
aXNzdWUxMTY6IC0tZG9jdGVzdG1vZHVsZXMgd29yayB3aXRoIF9faW5pdF9fLnB5IGZpbGVzIGFz
IHdlbGwKLS0gZml4IGlzc3VlMTE1OiB1bmlmeSBpbnRlcm5hbCBleGNlcHRpb24gcGFzc3Rocm91
Z2gvY2F0Y2hpbmcvR2VuZXJhdG9yRXhpdAotLSBmaXggaXNzdWUxMTg6IG5ldyAtLXRiPW5hdGl2
ZSBmb3IgcHJlc2VudGluZyBjcHl0aG9uLXN0YW5kYXJkIGV4Y2VwdGlvbnMKLQotMS4zLjMgKDIw
MTAtMDctMzApCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggaXNzdWUxMTM6IGFzc2VydGlv
biByZXByZXNlbnRhdGlvbiBwcm9ibGVtIHdpdGggdHJpcGxlLXF1b3RlZCBzdHJpbmdzCi0gIChh
bmQgcG9zc2libHkgb3RoZXIgY2FzZXMpCi0tIG1ha2UgY29uZnRlc3QgbG9hZGluZyBkZXRlY3Qg
dGhhdCBhIGNvbmZ0ZXN0IGZpbGUgd2l0aCB0aGUgc2FtZQotICBjb250ZW50IHdhcyBhbHJlYWR5
IGxvYWRlZCwgYXZvaWRzIHN1cnByaXNlcyBpbiBuZXN0ZWQgZGlyZWN0b3J5IHN0cnVjdHVyZXMK
LSAgd2hpY2ggY2FuIGJlIHByb2R1Y2VkIGUuZy4gYnkgSHVkc29uLiBJdCBwcm9iYWJseSByZW1v
dmVzIHRoZSBuZWVkIHRvIHVzZQotICAtLWNvbmZjdXRkaXIgaW4gbW9zdCBjYXNlcy4KLS0gZml4
IHRlcm1pbmFsIGNvbG9yaW5nIGZvciB3aW4zMgotICAodGhhbmtzIE1pY2hhZWwgRm9vcmQgZm9y
IHJlcG9ydGluZykKLS0gZml4IHdlaXJkbmVzczogbWFrZSB0ZXJtaW5hbCB3aWR0aCBkZXRlY3Rp
b24gd29yayBvbiBzdGRvdXQgaW5zdGVhZCBvZiBzdGRpbgotICAodGhhbmtzIEFybWluIFJvbmFj
aGVyIGZvciByZXBvcnRpbmcpCi0tIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIGFsbCBw
eS90ZXh0IGRpc3RyaWJ1dGlvbiBmaWxlcwotCi0xLjMuMiAoMjAxMC0wNy0wOCkKLT09PT09PT09
PT09PT09PT09PQotCi0qKk5ldyBmZWF0dXJlcyoqCi0KLS0gZml4IGlzc3VlMTAzOiAgaW50cm9k
dWNlIHB5LnRlc3QucmFpc2VzIGFzIGNvbnRleHQgbWFuYWdlciwgZXhhbXBsZXM6OgotCi0gICAg
d2l0aCBweS50ZXN0LnJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6Ci0gICAgICAgIHggPSAwCi0g
ICAgICAgIDEgLyB4Ci0KLSAgICB3aXRoIHB5LnRlc3QucmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMg
ZXhjaW5mbzoKLSAgICAgICAgY2FsbF9zb21ldGhpbmcoKQotCi0gICAgIyB5b3UgbWF5IGRvIGV4
dHJhIGNoZWNrcyBvbiBleGNpbmZvLnZhbHVlfHR5cGV8dHJhY2ViYWNrIGhlcmUKLQotICAodGhh
bmtzIFJvbm55IFBmYW5uc2NobWlkdCkKLQotLSBGdW5jYXJnIGZhY3RvcmllcyBjYW4gbm93IGR5
bmFtaWNhbGx5IGFwcGx5IGEgbWFya2VyIHRvIGEKLSAgdGVzdCBpbnZvY2F0aW9uLiAgVGhpcyBp
cyBmb3IgZXhhbXBsZSB1c2VmdWwgaWYgYSBmYWN0b3J5Ci0gIHByb3ZpZGVzIHBhcmFtZXRlcnMg
dG8gYSB0ZXN0IHdoaWNoIGFyZSBleHBlY3RlZC10by1mYWlsOjoKLQotICAgIGRlZiBweXRlc3Rf
ZnVuY2FyZ19fYXJnKHJlcXVlc3QpOgotICAgICAgICByZXF1ZXN0LmFwcGx5bWFya2VyKHB5LnRl
c3QubWFyay54ZmFpbChyZWFzb249ImZsYWt5IGNvbmZpZyIpKQotICAgICAgICAuLi4KLQotICAg
IGRlZiB0ZXN0X2Z1bmN0aW9uKGFyZyk6Ci0gICAgICAgIC4uLgotCi0tIGltcHJvdmVkIGVycm9y
IHJlcG9ydGluZyBvbiBjb2xsZWN0aW9uIGFuZCBpbXBvcnQgZXJyb3JzLiBUaGlzIG1ha2VzCi0g
IHVzZSBvZiBhIG1vcmUgZ2VuZXJhbCBtZWNoYW5pc20sIG5hbWVseSB0aGF0IGZvciBjdXN0b20g
dGVzdCBpdGVtL2NvbGxlY3QKLSAgbm9kZXMgYGBub2RlLnJlcHJfZmFpbHVyZShleGNpbmZvKWBg
IGlzIG5vdyB1bmlmb3JtbHkgY2FsbGVkIHNvIHRoYXQgeW91IGNhbgotICBvdmVycmlkZSBpdCB0
byByZXR1cm4gYSBzdHJpbmcgZXJyb3IgcmVwcmVzZW50YXRpb24gb2YgeW91ciBjaG9pY2UKLSAg
d2hpY2ggaXMgZ29pbmcgdG8gYmUgcmVwb3J0ZWQgYXMgYSAocmVkKSBzdHJpbmcuCi0KLS0gaW50
cm9kdWNlICctLWp1bml0cHJlZml4PVNUUicgb3B0aW9uIHRvIHByZXBlbmQgYSBwcmVmaXgKLSAg
dG8gYWxsIHJlcG9ydHMgaW4gdGhlIGp1bml0eG1sIGZpbGUuCi0KLSoqQnVnIGZpeGVzKioKLQot
LSBtYWtlIHRlc3RzIGFuZCB0aGUgYGBweXRlc3RfcmVjd2FybmBgIHBsdWdpbiBpbiBwYXJ0aWN1
bGFyIGZ1bGx5IGNvbXBhdGlibGUKLSAgdG8gUHl0aG9uMi43IChpZiB5b3UgdXNlIHRoZSBgYHJl
Y3dhcm5gYCBmdW5jYXJnIHdhcm5pbmdzIHdpbGwgYmUgZW5hYmxlZCBzbyB0aGF0Ci0gIHlvdSBj
YW4gcHJvcGVybHkgY2hlY2sgZm9yIHRoZWlyIGV4aXN0ZW5jZSBpbiBhIGNyb3NzLXB5dGhvbiBt
YW5uZXIpLgotLSByZWZpbmUgLS1wZGI6IGlnbm9yZSB4ZmFpbGVkIHRlc3RzLCB1bmlmeSBpdHMg
VEItcmVwb3J0aW5nIGFuZAotICBkb24ndCBkaXNwbGF5IGZhaWx1cmVzIGFnYWluIGF0IHRoZSBl
bmQuCi0tIGZpeCBhc3NlcnRpb24gaW50ZXJwcmV0YXRpb24gd2l0aCB0aGUgKiogb3BlcmF0b3Ig
KHRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKLS0gZml4IGlzc3VlMTA1IGFzc2lnbm1lbnQgb24g
dGhlIHNhbWUgbGluZSBhcyBhIGZhaWxpbmcgYXNzZXJ0aW9uICh0aGFua3MgQmVuamFtaW4gUGV0
ZXJzb24pCi0tIGZpeCBpc3N1ZTEwNCBwcm9wZXIgZXNjYXBpbmcgZm9yIHRlc3QgbmFtZXMgaW4g
anVuaXR4bWwgcGx1Z2luICh0aGFua3MgYW5vbnltb3VzKQotLSBmaXggaXNzdWU1NyAtZnwtLWxv
b3BvbmZhaWwgdG8gd29yayB3aXRoIHhwYXNzaW5nIHRlc3RzICh0aGFua3MgUm9ubnkpCi0tIGZp
eCBpc3N1ZTkyIGNvbGxlY3Rvbmx5IHJlcG9ydGVyIGFuZCAtLXBhc3RlYmluICh0aGFua3MgQmVu
amFtaW4gUGV0ZXJzb24pCi0tIGZpeCBweS5jb2RlLmNvbXBpbGUoc291cmNlKSB0byBnZW5lcmF0
ZSB1bmlxdWUgZmlsZW5hbWVzCi0tIGZpeCBhc3NlcnRpb24gcmUtaW50ZXJwIHByb2JsZW1zIG9u
IFB5UHksIGJ5IGRlZmVyaW5nIGNvZGUKLSAgY29tcGlsYXRpb24gdG8gdGhlIChvdmVycmlkYWJs
ZSkgRnJhbWUuZXZhbCBjbGFzcy4gKHRoYW5rcyBBbWF1cnkgRm9yZ2VvdCkKLS0gZml4IHB5LnBh
dGgubG9jYWwucHlpbXBvcnQoKSB0byB3b3JrIHdpdGggZGlyZWN0b3JpZXMKLS0gc3RyZWFtbGlu
ZSBweS5wYXRoLmxvY2FsLm1rZHRlbXAgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCi0tIGRvbid0
IHByaW50IGVtcHR5IGxpbmVzIHdoZW4gc2hvd2luZyBqdW5pdHhtbC1maWxlbmFtZQotLSBhZGQg
b3B0aW9uYWwgYm9vbGVhbiBpZ25vcmVfZXJyb3JzIHBhcmFtZXRlciB0byBweS5wYXRoLmxvY2Fs
LnJlbW92ZQotLSBmaXggdGVybWluYWwgd3JpdGluZyBvbiB3aW4zMi9weXRob24yLjQKLS0gcHku
cHJvY2Vzcy5jbWRleGVjKCkgbm93IHRyaWVzIGhhcmRlciB0byByZXR1cm4gcHJvcGVybHkgZW5j
b2RlZCB1bmljb2RlIG9iamVjdHMKLSAgb24gYWxsIHB5dGhvbiB2ZXJzaW9ucwotLSBpbnN0YWxs
IHBsYWluIHB5LnRlc3QvcHkud2hpY2ggc2NyaXB0cyBhbHNvIGZvciBKeXRob24sIHRoaXMgaGVs
cHMgdG8KLSAgZ2V0IGNhbm9uaWNhbCBzY3JpcHQgcGF0aHMgaW4gdmlydHVhbGVudiBzaXR1YXRp
b25zCi0tIG1ha2UgcGF0aC5iZXN0cmVscGF0aChwYXRoKSByZXR1cm4gIi4iLCBub3RlIHRoYXQg
d2hlbiBjYWxsaW5nCi0gIFguYmVzdHJlbHBhdGggdGhlIGFzc3VtcHRpb24gaXMgdGhhdCBYIGlz
IGEgZGlyZWN0b3J5LgotLSBtYWtlIGluaXRpYWwgY29uZnRlc3QgZGlzY292ZXJ5IGlnbm9yZSAi
LS0iIHByZWZpeGVkIGFyZ3VtZW50cwotLSBmaXggcmVzdWx0bG9nIHBsdWdpbiB3aGVuIHVzZWQg
aW4gYSBtdWx0aWNwdS9tdWx0aWhvc3QgeGRpc3Qgc2l0dWF0aW9uCi0gICh0aGFua3MgSmFrdWIg
R3VzdGFrKQotLSBwZXJmb3JtIGRpc3RyaWJ1dGVkIHRlc3RpbmcgcmVsYXRlZCByZXBvcnRpbmcg
aW4gdGhlIHhkaXN0LXBsdWdpbgotICByYXRoZXIgdGhhbiBoYXZpbmcgZGlzdC1yZWxhdGVkIGNv
ZGUgaW4gdGhlIGdlbmVyaWMgcHkudGVzdAotICBkaXN0cmlidXRpb24KLS0gZml4IGhvbWVkaXIg
ZGV0ZWN0aW9uIG9uIFdpbmRvd3MKLS0gc2hpcCBkaXN0cmlidXRlX3NldHVwLnB5IHZlcnNpb24g
MC42LjEzCi0KLTEuMy4xICgyMDEwLTA1LTI1KQotPT09PT09PT09PT09PT09PT09Ci0KLSoqTmV3
IGZlYXR1cmVzKioKLQotLSBpc3N1ZTkxOiBpbnRyb2R1Y2UgbmV3IHB5LnRlc3QueGZhaWwocmVh
c29uKSBoZWxwZXIKLSAgdG8gaW1wZXJhdGl2ZWx5IG1hcmsgYSB0ZXN0IGFzIGV4cGVjdGVkIHRv
IGZhaWwuIENhbgotICBiZSB1c2VkIGZyb20gd2l0aGluIHNldHVwIGFuZCB0ZXN0IGZ1bmN0aW9u
cy4gVGhpcyBpcwotICB1c2VmdWwgZXNwZWNpYWxseSBmb3IgcGFyYW1ldHJpemVkIHRlc3RzIHdo
ZW4gY2VydGFpbgotICBjb25maWd1cmF0aW9ucyBhcmUgZXhwZWN0ZWQtdG8tZmFpbC4gIEluIHRo
aXMgY2FzZSB0aGUKLSAgZGVjbGFyYXRpdmUgYXBwcm9hY2ggd2l0aCB0aGUgQHB5LnRlc3QubWFy
ay54ZmFpbCBjYW5ub3QKLSAgYmUgdXNlZCBhcyBpdCB3b3VsZCBtYXJrIGFsbCBjb25maWd1cmF0
aW9ucyBhcyB4ZmFpbC4KLQotLSBpc3N1ZTEwMjogaW50cm9kdWNlIG5ldyAtLW1heGZhaWw9TlVN
IG9wdGlvbiB0byBzdG9wCi0gIHRlc3QgcnVucyBhZnRlciBOVU0gZmFpbHVyZXMuICBUaGlzIGlz
IGEgZ2VuZXJhbGl6YXRpb24KLSAgb2YgdGhlICcteCcgb3IgJy0tZXhpdGZpcnN0JyBvcHRpb24g
d2hpY2ggaXMgbm93IGVxdWl2YWxlbnQKLSAgdG8gJy0tbWF4ZmFpbD0xJy4gIEJvdGggJy14JyBh
bmQgJy0tbWF4ZmFpbCcgd2lsbAotICBub3cgYWxzbyBwcmludCBhIGxpbmUgbmVhciB0aGUgZW5k
IGluZGljYXRpbmcgdGhlIEludGVycnVwdGlvbi4KLQotLSBpc3N1ZTg5OiBhbGxvdyBweS50ZXN0
Lm1hcmsgZGVjb3JhdG9ycyB0byBiZSB1c2VkIG9uIGNsYXNzZXMKLSAgKGNsYXNzIGRlY29yYXRv
cnMgd2VyZSBpbnRyb2R1Y2VkIHdpdGggcHl0aG9uMi42KSBhbmQKLSAgYWxzbyBhbGxvdyB0byBo
YXZlIG11bHRpcGxlIG1hcmtlcnMgYXBwbGllZCBhdCBjbGFzcy9tb2R1bGUgbGV2ZWwKLSAgYnkg
c3BlY2lmeWluZyBhIGxpc3QuCi0KLS0gaW1wcm92ZSBhbmQgcmVmaW5lIGxldHRlciByZXBvcnRp
bmcgaW4gdGhlIHByb2dyZXNzIGJhcjoKLSAgLiAgcGFzcwotICBmICBmYWlsZWQgdGVzdAotICBz
ICBza2lwcGVkIHRlc3RzIChyZW1pbmRlcjogdXNlIGZvciBkZXBlbmRlbmN5L3BsYXRmb3JtIG1p
c21hdGNoIG9ubHkpCi0gIHggIHhmYWlsZWQgdGVzdCAodGVzdCB0aGF0IHdhcyBleHBlY3RlZCB0
byBmYWlsKQotICBYICB4cGFzc2VkIHRlc3QgKHRlc3QgdGhhdCB3YXMgZXhwZWN0ZWQgdG8gZmFp
bCBidXQgcGFzc2VkKQotCi0gIFlvdSBjYW4gdXNlIGFueSBjb21iaW5hdGlvbiBvZiAnZnN4WCcg
d2l0aCB0aGUgJy1yJyBleHRlbmRlZAotICByZXBvcnRpbmcgb3B0aW9uLiBUaGUgeGZhaWwveHBh
c3MgcmVzdWx0cyB3aWxsIHNob3cgdXAgYXMKLSAgc2tpcHBlZCB0ZXN0cyBpbiB0aGUganVuaXR4
bWwgb3V0cHV0IC0gd2hpY2ggYWxzbyBmaXhlcwotICBpc3N1ZTk5LgotCi0tIG1ha2UgcHkudGVz
dC5jbWRsaW5lLm1haW4oKSByZXR1cm4gdGhlIGV4aXRzdGF0dXMgaW5zdGVhZCBvZiByYWlzaW5n
Ci0gIFN5c3RlbUV4aXQgYW5kIGFsc28gYWxsb3cgaXQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRp
bWVzLiAgVGhpcyBvZgotICBjb3Vyc2UgcmVxdWlyZXMgdGhhdCB5b3VyIGFwcGxpY2F0aW9uIGFu
ZCB0ZXN0cyBhcmUgcHJvcGVybHkgdGVhcmVkCi0gIGRvd24gYW5kIGRvbid0IGhhdmUgZ2xvYmFs
IHN0YXRlLgotCi0qKkJ1ZyBGaXhlcyoqCi0KLS0gaW1wcm92ZWQgdHJhY2ViYWNrIHByZXNlbnRh
dGlvbjoKLSAgLSBpbXByb3ZlZCBhbmQgdW5pZmllZCByZXBvcnRpbmcgZm9yICItLXRiPXNob3J0
IiBvcHRpb24KLSAgLSBFcnJvcnMgZHVyaW5nIHRlc3QgbW9kdWxlIGltcG9ydHMgYXJlIG11Y2gg
c2hvcnRlciwgKHVzaW5nIC0tdGI9c2hvcnQgc3R5bGUpCi0gIC0gcmFpc2VzIHNob3dzIHNob3J0
ZXIgbW9yZSByZWxldmFudCB0cmFjZWJhY2tzCi0gIC0gLS1mdWxsdHJhY2Ugbm93IG1vcmUgc3lz
dGVtYXRpY2FsbHkgbWFrZXMgdHJhY2VzIGxvbmdlciAvIGluaGliaXRzIGN1dHRpbmcKLQotLSBp
bXByb3ZlIHN1cHBvcnQgZm9yIHJhaXNlcyBhbmQgb3RoZXIgZHluYW1pY2FsbHkgY29tcGlsZWQg
Y29kZSBieQotICBtYW5pcHVsYXRpbmcgcHl0aG9uJ3MgbGluZWNhY2hlLmNhY2hlIGluc3RlYWQg
b2YgdGhlIHByZXZpb3VzCi0gIHJhdGhlciBoYWNreSB3YXkgb2YgY3JlYXRpbmcgY3VzdG9tIGNv
ZGUgb2JqZWN0cy4gIFRoaXMgbWFrZXMKLSAgaXQgc2VlbWxlc3NseSB3b3JrIG9uIEp5dGhvbiBh
bmQgUHlQeSB3aGVyZSBpdCBwcmV2aW91c2x5IGRpZG4ndC4KLQotLSBmaXggaXNzdWU5NjogbWFr
ZSBjYXB0dXJpbmcgbW9yZSByZXNpbGllbnQgYWdhaW5zdCBDb250cm9sLUMKLSAgaW50ZXJydXB0
aW9ucyAoaW52b2x2ZWQgc29tZXdoYXQgc3Vic3RhbnRpYWwgcmVmYWN0b3JpbmcKLSAgdG8gdGhl
IHVuZGVybHlpbmcgY2FwdHVyaW5nIGZ1bmN0aW9uYWxpdHkgdG8gYXZvaWQgcmFjZQotICBjb25k
aXRpb25zKS4KLQotLSBmaXggY2hhaW5pbmcgb2YgY29uZGl0aW9uYWwgc2tpcGlmL3hmYWlsIGRl
Y29yYXRvcnMgLSBzbyBpdCB3b3JrcyBub3cKLSAgYXMgZXhwZWN0ZWQgdG8gdXNlIG11bHRpcGxl
IEBweS50ZXN0Lm1hcmsuc2tpcGlmKGNvbmRpdGlvbikgZGVjb3JhdG9ycywKLSAgaW5jbHVkaW5n
IHNwZWNpZmljIHJlcG9ydGluZyB3aGljaCBvZiB0aGUgY29uZGl0aW9ucyBsZWFkIHRvIHNraXBw
aW5nLgotCi0tIGZpeCBpc3N1ZTk1OiBsYXRlLWltcG9ydCB6bGliIHNvIHRoYXQgaXQncyBub3Qg
cmVxdWlyZWQKLSAgZm9yIGdlbmVyYWwgcHkudGVzdCBzdGFydHVwLgotCi0tIGZpeCBpc3N1ZTk0
OiBtYWtlIHJlcG9ydGluZyBtb3JlIHJvYnVzdCBhZ2FpbnN0IGJvZ3VzIHNvdXJjZSBjb2RlCi0g
IChhbmQgaW50ZXJuYWxseSBiZSBtb3JlIGNhcmVmdWwgd2hlbiBwcmVzZW50aW5nIHVuZXhwZWN0
ZWQgYnl0ZSBzZXF1ZW5jZXMpCi0KLQotMS4zLjAgKDIwMTAtMDUtMDUpCi09PT09PT09PT09PT09
PT09PT0KLQotLSBkZXByZWNhdGUgLS1yZXBvcnQgb3B0aW9uIGluIGZhdm91ciBvZiBhIG5ldyBz
aG9ydGVyIGFuZCBlYXNpZXIgdG8KLSAgcmVtZW1iZXIgLXIgb3B0aW9uOiBpdCB0YWtlcyBhIHN0
cmluZyBhcmd1bWVudCBjb25zaXN0aW5nIG9mIGFueQotICBjb21iaW5hdGlvbiBvZiAneGZzWCcg
Y2hhcmFjdGVycy4gIFRoZXkgcmVsYXRlIHRvIHRoZSBzaW5nbGUgY2hhcnMKLSAgeW91IHNlZSBk
dXJpbmcgdGhlIGRvdHRlZCBwcm9ncmVzcyBwcmludGluZyBhbmQgd2lsbCBwcmludCBhbiBleHRy
YSBsaW5lCi0gIHBlciB0ZXN0IGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgcnVuLiAgVGhpcyBleHRy
YSBsaW5lIGluZGljYXRlcyB0aGUgZXhhY3QKLSAgcG9zaXRpb24gb3IgdGVzdCBJRCB0aGF0IHlv
dSBkaXJlY3RseSBwYXN0ZSB0byB0aGUgcHkudGVzdCBjbWRsaW5lIGluIG9yZGVyCi0gIHRvIHJl
LXJ1biBhIHBhcnRpY3VsYXIgdGVzdC4KLQotLSBhbGxvdyBleHRlcm5hbCBwbHVnaW5zIHRvIHJl
Z2lzdGVyIG5ldyBob29rcyB2aWEgdGhlIG5ldwotICBweXRlc3RfYWRkaG9va3MocGx1Z2lubWFu
YWdlcikgaG9vay4gIFRoZSBuZXcgcmVsZWFzZSBvZgotICB0aGUgcHl0ZXN0LXhkaXN0IHBsdWdp
biBmb3IgZGlzdHJpYnV0ZWQgYW5kIGxvb3BvbmZhaWxpbmcKLSAgdGVzdGluZyByZXF1aXJlcyB0
aGlzIGZlYXR1cmUuCi0KLS0gYWRkIGEgbmV3IHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoLCBj
b25maWcpIGhvb2sgdG8gYWxsb3cgcHJvamVjdHMgYW5kCi0gIHBsdWdpbnMgdG8gZGVmaW5lIGV4
Y2x1c2lvbiBiZWhhdmlvdXIgZm9yIHRoZWlyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgLQotICBmb3Ig
ZXhhbXBsZSB5b3UgbWF5IGRlZmluZSBpbiBhIGNvbmZ0ZXN0LnB5IHRoaXMgbWV0aG9kOjoKLQot
ICAgICAgICBkZWYgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGgpOgotICAgICAgICAgICAgcmV0
dXJuIHBhdGguY2hlY2sobGluaz0xKQotCi0gIHRvIHByZXZlbnQgZXZlbiBhIGNvbGxlY3Rpb24g
dHJ5IG9mIGFueSB0ZXN0cyBpbiBzeW1saW5rZWQgZGlycy4KLQotLSBuZXcgcHl0ZXN0X3B5Y29s
bGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVudCkgaG9vayBmb3IKLSAgYWxsb3dpbmcgY3VzdG9t
aXphdGlvbiBvZiB0aGUgTW9kdWxlIGNvbGxlY3Rpb24gb2JqZWN0IGZvciBhCi0gIG1hdGNoaW5n
IHRlc3QgbW9kdWxlLgotCi0tIGV4dGVuZCBhbmQgcmVmaW5lIHhmYWlsIG1lY2hhbmlzbToKLSAg
YGBAcHkudGVzdC5tYXJrLnhmYWlsKHJ1bj1GYWxzZSlgYCBkbyBub3QgcnVuIHRoZSBkZWNvcmF0
ZWQgdGVzdAotICBgYEBweS50ZXN0Lm1hcmsueGZhaWwocmVhc29uPSIuLi4iKWBgIHByaW50cyB0
aGUgcmVhc29uIHN0cmluZyBpbiB4ZmFpbCBzdW1tYXJpZXMKLSAgc3BlY2lmeWluZyBgYC0tcnVu
eGZhaWxgYCBvbiBjb21tYW5kIGxpbmUgdmlydHVhbGx5IGlnbm9yZXMgeGZhaWwgbWFya2Vycwot
Ci0tIGV4cG9zZSAocHJldmlvdXNseSBpbnRlcm5hbCkgY29tbW9ubHkgdXNlZnVsIG1ldGhvZHM6
Ci0gIHB5LmlvLmdldF90ZXJtaW5hbF93aXRoKCkgLT4gcmV0dXJuIHRlcm1pbmFsIHdpZHRoCi0g
IHB5LmlvLmFuc2lfcHJpbnQoLi4uKSAtPiBwcmludCBjb2xvcmVkL2JvbGQgdGV4dCBvbiBsaW51
eC93aW4zMgotICBweS5pby5zYWZlcmVwcihvYmopIC0+IHJldHVybiBsaW1pdGVkIHJlcHJlc2Vu
dGF0aW9uIHN0cmluZwotCi0tIGV4cG9zZSB0ZXN0IG91dGNvbWUgcmVsYXRlZCBleGNlcHRpb25z
IGFzIHB5LnRlc3Quc2tpcC5FeGNlcHRpb24sCi0gIHB5LnRlc3QucmFpc2VzLkV4Y2VwdGlvbiBl
dGMuLCB1c2VmdWwgbW9zdGx5IGZvciBwbHVnaW5zCi0gIGRvaW5nIHNwZWNpYWwgb3V0Y29tZSBp
bnRlcnByZXRhdGlvbi90d2Vha2luZwotCi0tIChpc3N1ZTg1KSBmaXgganVuaXR4bWwgcGx1Z2lu
IHRvIGhhbmRsZSB0ZXN0cyB3aXRoIG5vbi1hc2NpaSBvdXRwdXQKLQotLSBmaXgvcmVmaW5lIHB5
dGhvbjMgY29tcGF0aWJpbGl0eSAodGhhbmtzIEJlbmphbWluIFBldGVyc29uKQotCi0tIGZpeGVz
IGZvciBtYWtpbmcgdGhlIGp5dGhvbi93aW4zMiBjb21iaW5hdGlvbiB3b3JrLCBub3RlIGhvd2V2
ZXI6Ci0gIGp5dGhvbjIuNS4xL3dpbjMyIGRvZXMgbm90IHByb3ZpZGUgYSBjb21tYW5kIGxpbmUg
bGF1bmNoZXIsIHNlZQotICBodHRwOi8vYnVncy5qeXRob24ub3JnL2lzc3VlMTQ5MSAuIFNlZSBw
eWxpYiBpbnN0YWxsIGRvY3VtZW50YXRpb24KLSAgZm9yIGhvdyB0byB3b3JrIGFyb3VuZC4KLQot
LSBmaXhlcyBmb3IgaGFuZGxpbmcgb2YgdW5pY29kZSBleGNlcHRpb24gdmFsdWVzIGFuZCB1bnBy
aW50YWJsZSBvYmplY3RzCi0KLS0gKGlzc3VlODcpIGZpeCB1bmJvdW5kbG9jYWwgZXJyb3IgaW4g
YXNzZXJ0aW9ub2xkIGNvZGUKLQotLSAoaXNzdWU4NikgaW1wcm92ZSBkb2N1bWVudGF0aW9uIGZv
ciBsb29wb25mYWlsaW5nCi0KLS0gcmVmaW5lIElPIGNhcHR1cmluZzogc3RkaW4tcmVkaXJlY3Qg
cHNldWRvLWZpbGUgbm93IGhhcyBhIE5PUCBjbG9zZSgpIG1ldGhvZAotCi0tIHNoaXAgZGlzdHJp
YnV0ZV9zZXR1cC5weSB2ZXJzaW9uIDAuNi4xMAotCi0tIGFkZGVkIGxpbmtzIHRvIHRoZSBuZXcg
Y2FwdHVyZWxvZyBhbmQgY292ZXJhZ2UgcGx1Z2lucwotCi0KLTEuMi4wICgyMDEwLTAxLTE4KQot
PT09PT09PT09PT09PT09PT09Ci0KLS0gcmVmaW5lZCB1c2FnZSBhbmQgb3B0aW9ucyBmb3IgInB5
LmNsZWFudXAiOjoKLQotICAgIHB5LmNsZWFudXAgICAgICMgcmVtb3ZlICIqLnB5YyIgYW5kICIq
JHB5LmNsYXNzIiAoanl0aG9uKSBmaWxlcwotICAgIHB5LmNsZWFudXAgLWUgLnN3cCAtZSAuY2Fj
aGUgIyBhbHNvIHJlbW92ZSBmaWxlcyB3aXRoIHRoZXNlIGV4dGVuc2lvbnMKLSAgICBweS5jbGVh
bnVwIC1zICAjIHJlbW92ZSAiYnVpbGQiIGFuZCAiZGlzdCIgZGlyZWN0b3J5IG5leHQgdG8gc2V0
dXAucHkgZmlsZXMKLSAgICBweS5jbGVhbnVwIC1kICAjIGFsc28gcmVtb3ZlIGVtcHR5IGRpcmVj
dG9yaWVzCi0gICAgcHkuY2xlYW51cCAtYSAgIyBzeW5vbnltIGZvciAiLXMgLWQgLWUgJ3BpcC1s
b2cudHh0JyIKLSAgICBweS5jbGVhbnVwIC1uICAjIGRyeSBydW4sIG9ubHkgc2hvdyB3aGF0IHdv
dWxkIGJlIHJlbW92ZWQKLQotLSBhZGQgYSBuZXcgb3B0aW9uICJweS50ZXN0IC0tZnVuY2FyZ3Mi
IHdoaWNoIHNob3dzIGF2YWlsYWJsZSBmdW5jYXJncwotICBhbmQgdGhlaXIgaGVscCBzdHJpbmdz
IChkb2NzdHJpbmdzIG9uIHRoZWlyIHJlc3BlY3RpdmUgZmFjdG9yeSBmdW5jdGlvbikKLSAgZm9y
IGEgZ2l2ZW4gdGVzdCBwYXRoCi0KLS0gZGlzcGxheSBhIHNob3J0IGFuZCBjb25jaXNlIHRyYWNl
YmFjayBpZiBhIGZ1bmNhcmcgbG9va3VwIGZhaWxzCi0KLS0gZWFybHktbG9hZCAiY29uZnRlc3Qu
cHkiIGZpbGVzIGluIG5vbi1kb3QgZmlyc3QtbGV2ZWwgc3ViIGRpcmVjdG9yaWVzLgotICBhbGxv
d3MgdG8gY29udmVuaWVudGx5IGtlZXAgYW5kIGFjY2VzcyB0ZXN0LXJlbGF0ZWQgb3B0aW9ucyBp
biBhIGBgdGVzdGBgCi0gIHN1YmRpciBhbmQgc3RpbGwgYWRkIGNvbW1hbmQgbGluZSBvcHRpb25z
LgotCi0tIGZpeCBpc3N1ZTY3OiBuZXcgc3VwZXItc2hvcnQgdHJhY2ViYWNrLXByaW50aW5nIG9w
dGlvbjogIi0tdGI9bGluZSIgd2lsbCBwcmludCBhIHNpbmdsZSBsaW5lIGZvciBlYWNoIGZhaWxp
bmcgKHB5dGhvbikgdGVzdCBpbmRpY2F0aW5nIGl0cyBmaWxlbmFtZSwgbGluZW5vIGFuZCB0aGUg
ZmFpbHVyZSB2YWx1ZQotCi0tIGZpeCBpc3N1ZTc4OiBhbHdheXMgY2FsbCBweXRob24tbGV2ZWwg
dGVhcmRvd24gZnVuY3Rpb25zIGV2ZW4gaWYgdGhlCi0gIGFjY29yZGluZyBzZXR1cCBmYWlsZWQu
ICBUaGlzIGluY2x1ZGVzIHJlZmluZW1lbnRzIGZvciBjYWxsaW5nIHNldHVwX21vZHVsZS9jbGFz
cyBmdW5jdGlvbnMKLSAgd2hpY2ggd2lsbCBub3cgb25seSBiZSBjYWxsZWQgb25jZSBpbnN0ZWFk
IG9mIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgd2hlcmUgdGhleSdkIGJlIGNhbGxlZAotICBtdWx0
aXBsZSB0aW1lcyBpZiB0aGV5IHJhaXNlIGFuIGV4Y2VwdGlvbiAoaW5jbHVkaW5nIGEgU2tpcHBl
ZCBleGNlcHRpb24pLiAgQW55IGV4Y2VwdGlvbgotICB3aWxsIGJlIHJlLWNvcmRlZCBhbmQgYXNz
b2NpYXRlZCB3aXRoIGFsbCB0ZXN0cyBpbiB0aGUgYWNjb3JkaW5nIG1vZHVsZS9jbGFzcyBzY29w
ZS4KLQotLSBmaXggaXNzdWU2MzogYXNzdW1lIDw0MCBjb2x1bW5zIHRvIGJlIGEgYm9ndXMgdGVy
bWluYWwgd2lkdGgsIGRlZmF1bHQgdG8gODAKLQotLSBmaXggcGRiIGRlYnVnZ2luZyB0byBiZSBp
biB0aGUgY29ycmVjdCBmcmFtZSBvbiByYWlzZXMtcmVsYXRlZCBlcnJvcnMKLQotLSB1cGRhdGUg
YXBpcGtnLnB5IHRvIGZpeCBhbiBpc3N1ZSB3aGVyZSByZWN1cnNpdmUgaW1wb3J0cyBtaWdodAot
ICB1bm5lY2Vzc2FyaWx5IGJyZWFrIGltcG9ydGluZwotCi0tIGZpeCBwbHVnaW4gbGlua3MKLQot
MS4xLjEgKDIwMDktMTEtMjQpCi09PT09PT09PT09PT09PT09PT0KLQotLSBtb3ZlZCBkaXN0L2xv
b3BvbmZhaWxpbmcgZnJvbSBweS50ZXN0IGNvcmUgaW50byBhIG5ldwotICBzZXBhcmF0ZWx5IHJl
bGVhc2VkIHB5dGVzdC14ZGlzdCBwbHVnaW4uCi0KLS0gbmV3IGp1bml0eG1sIHBsdWdpbjogLS1q
dW5pdHhtbD1wYXRoIHdpbGwgZ2VuZXJhdGUgYSBqdW5pdCBzdHlsZSB4bWwgZmlsZQotICB3aGlj
aCBpcyBwcm9jZXNzYWJsZSBlLmcuIGJ5IHRoZSBIdWRzb24gQ0kgc3lzdGVtLgotCi0tIG5ldyBv
cHRpb246IC0tZ2Vuc2NyaXB0PXBhdGggd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYWxvbmUgcHkudGVz
dCBzY3JpcHQKLSAgd2hpY2ggd2lsbCBub3QgbmVlZCBhbnkgbGlicmFyaWVzIGluc3RhbGxlZC4g
IHRoYW5rcyB0byBSYWxmIFNjaG1pdHQuCi0KLS0gbmV3IG9wdGlvbjogLS1pZ25vcmUgd2lsbCBw
cmV2ZW50IHNwZWNpZmllZCBwYXRoIGZyb20gY29sbGVjdGlvbi4KLSAgQ2FuIGJlIHNwZWNpZmll
ZCBtdWx0aXBsZSB0aW1lcy4KLQotLSBuZXcgb3B0aW9uOiAtLWNvbmZjdXRkaXI9ZGlyIHdpbGwg
bWFrZSBweS50ZXN0IG9ubHkgY29uc2lkZXIgY29uZnRlc3QKLSAgZmlsZXMgdGhhdCBhcmUgcmVs
YXRpdmUgdG8gdGhlIHNwZWNpZmllZCBkaXIuCi0KLS0gbmV3IGZ1bmNhcmc6ICJweXRlc3Rjb25m
aWciIGlzIHRoZSBweXRlc3QgY29uZmlnIG9iamVjdCBmb3IgYWNjZXNzCi0gIHRvIGNvbW1hbmQg
bGluZSBhcmdzIGFuZCBjYW4gbm93IGJlIGVhc2lseSB1c2VkIGluIGEgdGVzdC4KLQotLSBpbnN0
YWxsIGBgcHkudGVzdGBgIGFuZCBgYHB5LndoaWNoYGAgd2l0aCBhIGBgLSRWRVJTSU9OYGAgc3Vm
Zml4IHRvCi0gIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIFB5dGhvbjMsIHB5dGhvbjIuWCwgSnl0aG9u
IGFuZCBQeVB5IGluc3RhbGxlZCB2ZXJzaW9ucy4KLQotLSBuZXcgInB5dGVzdGNvbmZpZyIgZnVu
Y2FyZyBhbGxvd3MgYWNjZXNzIHRvIHRlc3QgY29uZmlnIG9iamVjdAotCi0tIG5ldyAicHl0ZXN0
X3JlcG9ydF9oZWFkZXIiIGhvb2sgY2FuIHJldHVybiBhZGRpdGlvbmFsIGxpbmVzCi0gIHRvIGJl
IGRpc3BsYXllZCBhdCB0aGUgaGVhZGVyIG9mIGEgdGVzdCBydW4uCi0KLS0gKGV4cGVyaW1lbnRh
bCkgYWxsb3cgInB5LnRlc3QgcGF0aDo6bmFtZTE6Om5hbWUyOjouLi4iIGZvciBwb2ludGluZwot
ICB0byBhIHRlc3Qgd2l0aGluIGEgdGVzdCBjb2xsZWN0aW9uIGRpcmVjdGx5LiAgVGhpcyBtaWdo
dCBldmVudHVhbGx5Ci0gIGV2b2x2ZSBhcyBhIGZ1bGwgc3Vic3RpdHV0ZSB0byAiLWsiIHNwZWNp
ZmljYXRpb25zLgotCi0tIHN0cmVhbWxpbmVkIHBsdWdpbiBsb2FkaW5nOiBvcmRlciBpcyBub3cg
YXMgZG9jdW1lbnRlZCBpbgotICBjdXN0b21pemUuaHRtbDogc2V0dXB0b29scywgRU5WLCBjb21t
YW5kbGluZSwgY29uZnRlc3QuCi0gIGFsc28gc2V0dXB0b29scyBlbnRyeSBwb2ludCBuYW1lcyBh
cmUgdHVybmVkIHRvIGNhbm9uaWNhbCBuYW1lZXMgKCJweXRlc3RfKiIpCi0KLS0gYXV0b21hdGlj
YWxseSBza2lwIHRlc3RzIHRoYXQgbmVlZCAnY2FwZmQnIGJ1dCBoYXZlIG5vIG9zLmR1cAotCi0t
IGFsbG93IHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyB0byBiZSBkZWZpbmVkIGluIGNsYXNzZXMgYXMg
d2VsbAotCi0tIGRlcHJlY2F0ZSB1c2FnZSBvZiAnZGlzYWJsZWQnIGF0dHJpYnV0ZSBpbiBmYXZv
dXIgb2YgcHl0ZXN0bWFyawotLSBkZXByZWNhdGUgZGVmaW5pdGlvbiBvZiBEaXJlY3RvcnksIE1v
ZHVsZSwgQ2xhc3MgYW5kIEZ1bmN0aW9uIG5vZGVzCi0gIGluIGNvbmZ0ZXN0LnB5IGZpbGVzLiAg
VXNlIHB5dGVzdCBjb2xsZWN0IGhvb2tzIGluc3RlYWQuCi0KLS0gY29sbGVjdGlvbi9pdGVtIG5v
ZGUgc3BlY2lmaWMgcnVudGVzdC9jb2xsZWN0IGhvb2tzIGFyZSBvbmx5IGNhbGxlZCBleGFjdGx5
Ci0gIG9uIG1hdGNoaW5nIGNvbmZ0ZXN0LnB5IGZpbGVzLCBpLmUuIG9uZXMgd2hpY2ggYXJlIGV4
YWN0bHkgYmVsb3cKLSAgdGhlIGZpbGVzeXN0ZW0gcGF0aCBvZiBhbiBpdGVtCi0KLS0gY2hhbmdl
OiB0aGUgZmlyc3QgcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5IGhvb2sgdG8gcmV0dXJuIHNvbWV0
aGluZwotICB3aWxsIG5vdyBwcmV2ZW50IGZ1cnRoZXIgaG9va3MgdG8gYmUgY2FsbGVkLgotCi0t
IGNoYW5nZTogZmlnbGVhZiBwbHVnaW4gbm93IHJlcXVpcmVzIC0tZmlnbGVhZiB0byBydW4uICBB
bHNvCi0gIGNoYW5nZSBpdHMgbG9uZyBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBiZSBhIGJpdCBz
aG9ydGVyIChzZWUgcHkudGVzdCAtaCkuCi0KLS0gY2hhbmdlOiBweXRlc3QgZG9jdGVzdCBwbHVn
aW4gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQgaGFzIGEKLSAgbmV3IG9wdGlvbiAtLWRv
Y3Rlc3QtZ2xvYiB0byBzZXQgYSBwYXR0ZXJuIGZvciBmaWxlIG1hdGNoZXMuCi0KLS0gY2hhbmdl
OiByZW1vdmUgaW50ZXJuYWwgcHkuXyogaGVscGVyIHZhcnMsIG9ubHkga2VlcCBweS5fcHlkaXIK
LQotLSByb2J1c3RpZnkgY2FwdHVyaW5nIHRvIHN1cnZpdmUgaWYgY3VzdG9tIHB5dGVzdF9ydW50
ZXN0X3NldHVwCi0gIGNvZGUgZmFpbGVkIGFuZCBwcmV2ZW50ZWQgdGhlIGNhcHR1cmluZyBzZXR1
cCBjb2RlIGZyb20gcnVubmluZy4KLQotLSBtYWtlIHB5LnRlc3QuKiBoZWxwZXJzIHByb3ZpZGVk
IGJ5IGRlZmF1bHQgcGx1Z2lucyB2aXNpYmxlIGVhcmx5IC0KLSAgd29ya3MgdHJhbnNwYXJlbnRs
eSBib3RoIGZvciBweWRvYyBhbmQgZm9yIGludGVyYWN0aXZlIHNlc3Npb25zCi0gIHdoaWNoIHdp
bGwgcmVndWxhcmx5IHNlZSBlLmcuIHB5LnRlc3QubWFyayBhbmQgcHkudGVzdC5pbXBvcnRvcnNr
aXAuCi0KLS0gc2ltcGxpZnkgaW50ZXJuYWwgcGx1Z2luIG1hbmFnZXIgbWFjaGluZXJ5Ci0tIHNp
bXBsaWZ5IGludGVybmFsIGNvbGxlY3Rpb24gdHJlZSBieSBpbnRyb2R1Y2luZyBhIFJvb3RDb2xs
ZWN0b3Igbm9kZQotCi0tIGZpeCBhc3NlcnQgcmVpbnRlcnByZWF0aW9uIHRoYXQgc2VlcyBhIGNh
bGwgY29udGFpbmluZyAia2V5d29yZD0uLi4iCi0KLS0gZml4IGlzc3VlNjY6IGludm9rZSBweXRl
c3Rfc2Vzc2lvbnN0YXJ0IGFuZCBweXRlc3Rfc2Vzc2lvbmZpbmlzaAotICBob29rcyBvbiBzbGF2
ZXMgZHVyaW5nIGRpc3QtdGVzdGluZywgcmVwb3J0IG1vZHVsZS9zZXNzaW9uIHRlYXJkb3duCi0g
IGhvb2tzIGNvcnJlY3RseS4KLQotLSBmaXggaXNzdWU2NTogcHJvcGVybHkgaGFuZGxlIGRpc3Qt
dGVzdGluZyBpZiBubwotICBleGVjbmV0L3B5IGxpYiBpbnN0YWxsZWQgcmVtb3RlbHkuCi0KLS0g
c2tpcCBzb21lIGluc3RhbGwtdGVzdHMgaWYgbm8gZXhlY25ldCBpcyBhdmFpbGFibGUKLQotLSBm
aXggZG9jcywgZml4IGludGVybmFsIGJpbi8gc2NyaXB0IGdlbmVyYXRpb24KLQotCi0xLjEuMCAo
MjAwOS0xMS0wNSkKLT09PT09PT09PT09PT09PT09PQotCi0tIGludHJvZHVjZSBhdXRvbWF0aWMg
cGx1Z2luIHJlZ2lzdHJhdGlvbiB2aWEgJ3B5dGVzdDExJwotICBlbnRyeXBvaW50cyB2aWEgc2V0
dXB0b29scycgcGtnX3Jlc291cmNlcy5pdGVyX2VudHJ5X3BvaW50cwotCi0tIGZpeCBweS50ZXN0
IGRpc3QtdGVzdGluZyB0byB3b3JrIHdpdGggZXhlY25ldCA+PSAxLjAuMGI0Ci0KLS0gcmUtaW50
cm9kdWNlIHB5LnRlc3QuY21kbGluZS5tYWluKCkgZm9yIGJldHRlciBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5Ci0KLS0gc3ZuIHBhdGhzOiBmaXggYSBidWcgd2l0aCBwYXRoLmNoZWNrKHZlcnNpb25l
ZD1UcnVlKSBmb3Igc3ZuIHBhdGhzLAotICBhbGxvdyAnJScgaW4gc3ZuIHBhdGhzLCBtYWtlIHN2
bndjLnVwZGF0ZSgpIGRlZmF1bHQgdG8gaW50ZXJhY3RpdmUgbW9kZQotICBsaWtlIGluIDEuMC54
IGFuZCBhZGQgc3Zud2MudXBkYXRlKGludGVyYWN0aXZlPUZhbHNlKSB0byBpbmhpYml0IGludGVy
YWN0aW9uLgotCi0tIHJlZmluZSBkaXN0cmlidXRlZCB0YXJiYWxsIHRvIGNvbnRhaW4gdGVzdCBh
bmQgbm8gcHljIGZpbGVzCi0KLS0gdHJ5IGhhcmRlciB0byBoYXZlIGRlcHJlY2F0aW9uIHdhcm5p
bmdzIGZvciBweS5jb21wYXQuKiBhY2Nlc3NlcwotICByZXBvcnQgYSBjb3JyZWN0IGxvY2F0aW9u
Ci0KLTEuMC4zCi09PT09PQotCi0qIGFkanVzdCBhbmQgaW1wcm92ZSBkb2NzCi0KLSogcmVtb3Zl
IHB5LnJlc3QgdG9vbCBhbmQgaW50ZXJuYWwgbmFtZXNwYWNlIC0gaXQgd2FzCi0gIG5ldmVyIHJl
YWxseSBhZHZlcnRpc2VkIGFuZCBjYW4gc3RpbGwgYmUgdXNlZCB3aXRoCi0gIHRoZSBvbGQgcmVs
ZWFzZSBpZiBuZWVkZWQuICBJZiB0aGVyZSBpcyBpbnRlcmVzdAotICBpdCBjb3VsZCBiZSByZXZp
dmVkIGludG8gaXRzIG93biB0b29sIGkgZ3Vlc3MuCi0KLSogZml4IGlzc3VlNDggYW5kIGlzc3Vl
NTk6IHJhaXNlIGFuIEVycm9yIGlmIHRoZSBtb2R1bGUKLSAgZnJvbSBhbiBpbXBvcnRlZCB0ZXN0
IGZpbGUgZG9lcyBub3Qgc2VlbSB0byBjb21lIGZyb20KLSAgdGhlIGZpbGVwYXRoIC0gYXZvaWRz
ICJzYW1lLW5hbWUiIGNvbmZ1c2lvbiB0aGF0IGhhcwotICBiZWVuIHJlcG9ydGVkIHJlcGVhdGVk
bHkKLQotKiBtZXJnZWQgUm9ubnkncyBub3NlLWNvbXBhdGliaWxpdHkgaGFja3M6IG5vdwotICBu
b3NlLXN0eWxlIHNldHVwX21vZHVsZSgpIGFuZCBzZXR1cCgpIGZ1bmN0aW9ucyBhcmUKLSAgc3Vw
cG9ydGVkCi0KLSogaW50cm9kdWNlIGdlbmVyYWxpemVkIHB5LnRlc3QubWFyayBmdW5jdGlvbiBt
YXJraW5nCi0KLSogcmVzaHVmZmxlIC8gcmVmaW5lIGNvbW1hbmQgbGluZSBncm91cGluZwotCi0q
IGRlcHJlY2F0ZSBwYXJzZXIuYWRkZ3JvdXAgaW4gZmF2b3VyIG9mIGdldGdyb3VwIHdoaWNoIGNy
ZWF0ZXMgb3B0aW9uIGdyb3VwCi0KLSogYWRkIC0tcmVwb3J0IGNvbW1hbmQgbGluZSBvcHRpb24g
dGhhdCBhbGxvd3MgdG8gY29udHJvbCBzaG93aW5nIG9mIHNraXBwZWQveGZhaWxlZCBzZWN0aW9u
cwotCi0qIGdlbmVyYWxpemVkIHNraXBwaW5nOiBhIG5ldyB3YXkgdG8gbWFyayBweXRob24gZnVu
Y3Rpb25zIHdpdGggc2tpcGlmIG9yIHhmYWlsCi0gIGF0IGZ1bmN0aW9uLCBjbGFzcyBhbmQgbW9k
dWxlcyBsZXZlbCBiYXNlZCBvbiBwbGF0Zm9ybSBvciBzeXMtbW9kdWxlIGF0dHJpYnV0ZXMuCi0K
LSogZXh0ZW5kIHB5LnRlc3QubWFyayBkZWNvcmF0b3IgdG8gYWxsb3cgZm9yIHBvc2l0aW9uYWwg
YXJncwotCi0qIGludHJvZHVjZSBhbmQgdGVzdCAicHkuY2xlYW51cCAtZCIgdG8gcmVtb3ZlIGVt
cHR5IGRpcmVjdG9yaWVzCi0KLSogZml4IGlzc3VlICM1OSAtIHJvYnVzdGlmeSB1bml0dGVzdCB0
ZXN0IGNvbGxlY3Rpb24KLQotKiBtYWtlIGJweXRob24vaGVscCBpbnRlcmFjdGlvbiB3b3JrIGJ5
IGFkZGluZyBhbiBfX2FsbF9fIGF0dHJpYnV0ZQotICB0byBBcGlNb2R1bGUsIGNsZWFudXAgaW5p
dHBrZwotCi0qIHVzZSBNSVQgbGljZW5zZSBmb3IgcHlsaWIsIGFkZCBzb21lIGNvbnRyaWJ1dG9y
cwotCi0qIHJlbW92ZSBweS5leGVjbmV0IGNvZGUgYW5kIHN1YnN0aXR1dGUgYWxsIHVzYWdlcyB3
aXRoICdleGVjbmV0JyBwcm9wZXIKLQotKiBmaXggaXNzdWU1MCAtIGNhY2hlZF9zZXR1cCBub3cg
Y2FjaGVzIG1vcmUgdG8gZXhwZWN0YXRpb25zCi0gIGZvciB0ZXN0IGZ1bmN0aW9ucyB3aXRoIG11
bHRpcGxlIGFyZ3VtZW50cy4KLQotKiBtZXJnZSBKYXJrbydzIGZpeGVzLCBpc3N1ZSAjNDUgYW5k
ICM0NgotCi0qIGFkZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgcGF0aCBmb3IgcHkubG9va3Vw
IHRvIHNlYXJjaCBpbgotCi0qIGZpeCBhIGZ1bmNhcmcgY2FjaGVkX3NldHVwIGJ1ZyBwcm9iYWJs
eSBvbmx5IG9jY3VycmluZwotICBpbiBkaXN0cmlidXRlZCB0ZXN0aW5nIGFuZCAibW9kdWxlIiBz
Y29wZSB3aXRoIHRlYXJkb3duLgotCi0qIG1hbnkgZml4ZXMgYW5kIGNoYW5nZXMgZm9yIG1ha2lu
ZyB0aGUgY29kZSBiYXNlIHB5dGhvbjMgY29tcGF0aWJsZSwKLSAgbWFueSB0aGFua3MgdG8gQmVu
amFtaW4gUGV0ZXJzb24gZm9yIGhlbHBpbmcgd2l0aCB0aGlzLgotCi0qIGNvbnNvbGlkYXRlIGJ1
aWx0aW5zIGltcGxlbWVudGF0aW9uIHRvIGJlIGNvbXBhdGlibGUgd2l0aCA+PTIuMywKLSAgYWRk
IGhlbHBlcnMgdG8gZWFzZSBrZWVwaW5nIDIgYW5kIDNrIGNvbXBhdGlibGUgY29kZQotCi0qIGRl
cHJlY2F0ZSBweS5jb21wYXQuZG9jdGVzdHxzdWJwcm9jZXNzfHRleHR3cmFwfG9wdHBhcnNlCi0K
LSogZGVwcmVjYXRlIHB5Lm1hZ2ljLmF1dG9wYXRoLCByZW1vdmUgcHkvbWFnaWMgZGlyZWN0b3J5
Ci0KLSogbW92ZSBweXRlc3QgYXNzZXJ0aW9uIGhhbmRsaW5nIHRvIHB5L2NvZGUgYW5kIGEgcHl0
ZXN0X2Fzc2VydGlvbgotICBwbHVnaW4sIGFkZCAiLS1uby1hc3NlcnQiIG9wdGlvbiwgZGVwcmVj
YXRlIHB5Lm1hZ2ljIG5hbWVzcGFjZXMKLSAgaW4gZmF2b3VyIG9mIChsZXNzKSBweS5jb2RlIG9u
ZXMuCi0KLSogY29uc29saWRhdGUgYW5kIGNsZWFudXAgcHkvY29kZSBjbGFzc2VzIGFuZCBmaWxl
cwotCi0qIGNsZWFudXAgcHkvbWlzYywgbW92ZSB0ZXN0cyB0byBiaW4tZm9yLWRpc3QKLQotKiBp
bnRyb2R1Y2UgZGVsYXR0ci9kZWxpdGVtL2RlbGVudiBtZXRob2RzIHRvIHB5LnRlc3QncyBtb25r
ZXlwYXRjaCBmdW5jYXJnCi0KLSogY29uc29saWRhdGUgcHkubG9nIGltcGxlbWVudGF0aW9uLCBy
ZW1vdmUgb2xkIGFwcHJvYWNoLgotCi0qIGludHJvZHVjZSBweS5pby5UZXh0SU8gYW5kIHB5Lmlv
LkJ5dGVzSU8gZm9yIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4KLSAgdGV4dC91bmljb2RlIGFuZCBi
eXRlLXN0cmVhbXMgKHVzZXMgdW5kZXJseWluZyBzdGFuZGFyZCBsaWIgaW8uKgotICBpZiBhdmFp
bGFibGUpCi0KLSogbWFrZSBweS51bml0dGVzdF9jb252ZXJ0IGhlbHBlciBzY3JpcHQgYXZhaWxh
YmxlIHdoaWNoIGNvbnZlcnRzICJ1bml0dGVzdC5weSIKLSAgc3R5bGUgZmlsZXMgaW50byB0aGUg
c2ltcGxlciBhc3NlcnQvZGlyZWN0LXRlc3QtY2xhc3NlcyBweS50ZXN0L25vc2V0ZXN0cwotICBz
dHlsZS4gIFRoZSBzY3JpcHQgd2FzIHdyaXR0ZW4gYnkgTGF1cmEgQ3JlaWdodG9uLgotCi0qIHNp
bXBsaWZpZWQgaW50ZXJuYWwgbG9jYWxwYXRoIGltcGxlbWVudGF0aW9uCi0KLTEuMC4yICgyMDA5
LTA4LTI3KQotPT09PT09PT09PT09PT09PT09Ci0KLSogZml4aW5nIHBhY2thZ2luZyBpc3N1ZXMs
IHRyaWdnZXJlZCBieSBmZWRvcmEgcmVkaGF0IHBhY2thZ2luZywKLSAgYWxzbyBhZGRlZCBkb2Ms
IGV4YW1wbGVzIGFuZCBjb250cmliIGRpcnMgdG8gdGhlIHRhcmJhbGwuCi0KLSogYWRkZWQgYSBk
b2N1bWVudGF0aW9uIGxpbmsgdG8gdGhlIG5ldyBkamFuZ28gcGx1Z2luLgotCi0xLjAuMSAoMjAw
OS0wOC0xOSkKLT09PT09PT09PT09PT09PT09PQotCi0qIGFkZGVkIGEgJ3B5dGVzdF9ub3NlJyBw
bHVnaW4gd2hpY2ggaGFuZGxlcyBub3NlLlNraXBUZXN0LAotICBub3NlLXN0eWxlIGZ1bmN0aW9u
L21ldGhvZC9nZW5lcmF0b3Igc2V0dXAvdGVhcmRvd24gYW5kCi0gIHRyaWVzIHRvIHJlcG9ydCBm
dW5jdGlvbnMgY29ycmVjdGx5LgotCi0qIGNhcHR1cmluZyBvZiB1bmljb2RlIHdyaXRlcyBvciBl
bmNvZGVkIHN0cmluZ3MgdG8gc3lzLnN0ZG91dC9lcnIKLSAgd29yayBiZXR0ZXIsIGFsc28gdGVy
bWluYWx3cml0aW5nIHdhcyBhZGFwdGVkIGFuZCBzb21ld2hhdAotICB1bmlmaWVkIGJldHdlZW4g
d2luZG93cyBhbmQgbGludXguCi0KLSogaW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBsYXlvdXQgYW5k
IGNvbnRlbnQgYSBsb3QKLQotKiBhZGRlZCBhICItLWhlbHAtY29uZmlnIiBvcHRpb24gdG8gc2hv
dyBjb25mdGVzdC5weSAvIEVOVi12YXIgbmFtZXMgZm9yCi0gIGFsbCBsb25nb3B0IGNtZGxpbmUg
b3B0aW9ucywgYW5kIHNvbWUgc3BlY2lhbCBjb25mdGVzdC5weSB2YXJpYWJsZXMuCi0gIHJlbmFt
ZWQgJ2NvbmZfY2FwdHVyZScgY29uZnRlc3Qgc2V0dGluZyB0byAnb3B0aW9uX2NhcHR1cmUnIGFj
Y29yZGluZ2x5LgotCi0qIGZpeCBpc3N1ZSAjMjc6IGJldHRlciByZXBvcnRpbmcgb24gbm9uLWNv
bGxlY3RhYmxlIGl0ZW1zIGdpdmVuIG9uIGNvbW1hbmRsaW5lCi0gIChlLmcuIHB5YyBmaWxlcykK
LQotKiBmaXggaXNzdWUgIzMzOiBhZGRlZCAtLXZlcnNpb24gZmxhZyAodGhhbmtzIEJlbmphbWlu
IFBldGVyc29uKQotCi0qIGZpeCBpc3N1ZSAjMzI6IGFkZGluZyBzdXBwb3J0IGZvciAiaW5jb21w
bGV0ZSIgcGF0aHMgdG8gd2NwYXRoLnN0YXR1cygpCi0KLSogIlRlc3QiIHByZWZpeGVkIGNsYXNz
ZXMgYXJlICpub3QqIGNvbGxlY3RlZCBieSBkZWZhdWx0IGFueW1vcmUgaWYgdGhleQotICBoYXZl
IGFuIF9faW5pdF9fIG1ldGhvZAotCi0qIG1vbmtleXBhdGNoIHNldGVudigpIG5vdyBhY2NlcHRz
IGEgInByZXBlbmQiIHBhcmFtZXRlcgotCi0qIGltcHJvdmVkIHJlcG9ydGluZyBvZiBjb2xsZWN0
aW9uIGVycm9yIHRyYWNlYmFja3MKLQotKiBzaW1wbGlmaWVkIG11bHRpY2FsbCBtZWNoYW5pc20g
YW5kIHBsdWdpbiBhcmNoaXRlY3R1cmUsCi0gIHJlbmFtZWQgc29tZSBpbnRlcm5hbCBtZXRob2Rz
IGFuZCBhcmduYW1lcwotCi0xLjAuMCAoMjAwOS0wOC0wNCkKLT09PT09PT09PT09PT09PT09PQot
Ci0qIG1vcmUgdGVyc2UgcmVwb3J0aW5nIHRyeSB0byBzaG93IGZpbGVzeXN0ZW0gcGF0aCByZWxh
dGl2ZWx5IHRvIGN1cnJlbnQgZGlyCi0qIGltcHJvdmUgeGZhaWwgb3V0cHV0IGEgYml0Ci0KLTEu
MC4wYjkgKDIwMDktMDctMzEpCi09PT09PT09PT09PT09PT09PT09PQotCi0qIGNsZWFubHkgaGFu
ZGxlIGFuZCByZXBvcnQgZmluYWwgdGVhcmRvd24gb2YgdGVzdCBzZXR1cAotCi0qIGZpeCBzdm4t
MS42IGNvbXBhdCBpc3N1ZSB3aXRoIHB5LnBhdGguc3Zud2MoKS52ZXJzaW9uZWQoKQotICAodGhh
bmtzIFdvdXRlciBWYW5kZW4gSG92ZSkKLQotKiBzZXR1cC90ZWFyZG93biBvciBjb2xsZWN0aW9u
IHByb2JsZW1zIG5vdyBzaG93IGFzIEVSUk9ScwotICBvciB3aXRoIGJpZyAiRSIncyBpbiB0aGUg
cHJvZ3Jlc3MgbGluZXMuICB0aGV5IGFyZSByZXBvcnRlZAotICBhbmQgY291bnRlZCBzZXBhcmF0
ZWx5LgotCi0qIGRpc3QtdGVzdGluZzogcHJvcGVybHkgaGFuZGxlIHRlc3QgaXRlbXMgdGhhdCBn
ZXQgbG9jYWxseQotICBjb2xsZWN0ZWQgYnV0IGNhbm5vdCBiZSBjb2xsZWN0ZWQgb24gdGhlIHJl
bW90ZSBzaWRlIC0gb2Z0ZW4KLSAgZHVlIHRvIHBsYXRmb3JtL2RlcGVuZGVuY3kgcmVhc29ucwot
Ci0qIHNpbXBsaWZpZWQgcHkudGVzdC5tYXJrIEFQSSAtIHNlZSBrZXl3b3JkIHBsdWdpbiBkb2N1
bWVudGF0aW9uCi0KLSogaW50ZWdyYXRlIGJldHRlciB3aXRoIGxvZ2dpbmc6IGNhcHR1cmluZyBu
b3cgYnkgZGVmYXVsdCBjYXB0dXJlcwotICB0ZXN0IGZ1bmN0aW9ucyBhbmQgdGhlaXIgaW1tZWRp
YXRlIHNldHVwL3RlYXJkb3duIGluIGEgc2luZ2xlIHN0cmVhbQotCi0qIGNhcHN5cyBhbmQgY2Fw
ZmQgZnVuY2FyZ3Mgbm93IGhhdmUgYSByZWFkb3V0ZXJyKCkgYW5kIGEgY2xvc2UoKSBtZXRob2QK
LSAgKHVuZGVybHlpbmdseSBweS5pby5TdGRDYXB0dXJlL0ZEIG9iamVjdHMgYXJlIHVzZWQgd2hp
Y2ggZ3JldyBhCi0gIHJlYWRvdXRlcnIoKSBtZXRob2QgYXMgd2VsbCB0byByZXR1cm4gc25hcHNo
b3RzIG9mIGNhcHR1cmVkIG91dC9lcnIpCi0KLSogbWFrZSBhc3NlcnQtcmVpbnRlcnByZXRhdGlv
biB3b3JrIGJldHRlciB3aXRoIGNvbXBhcmlzb25zIG5vdAotICByZXR1cm5pbmcgYm9vbHMgKHJl
cG9ydGVkIHdpdGggbnVtcHkgZnJvbSB0aGFua3MgbWFjaWVqIGZpamFsa293c2tpKQotCi0qIHJl
d29ya2VkIHBlci10ZXN0IG91dHB1dCBjYXB0dXJpbmcgaW50byB0aGUgcHl0ZXN0X2lvY2FwdHVy
ZS5weSBwbHVnaW4KLSAgYW5kIHRodXMgcmVtb3ZlZCBjYXB0dXJpbmcgY29kZSBmcm9tIGNvbmZp
ZyBvYmplY3QKLQotKiBpdGVtLnJlcHJfZmFpbHVyZShleGNpbmZvKSBpbnN0ZWFkIG9mIGl0ZW0u
cmVwcl9mYWlsdXJlKGV4Y2luZm8sIG91dGVycikKLQotCi0xLjAuMGI4ICgyMDA5LTA3LTIyKQot
PT09PT09PT09PT09PT09PT09PT0KLQotKiBweXRlc3RfdW5pdHRlc3QtcGx1Z2luIGlzIG5vdyBl
bmFibGVkIGJ5IGRlZmF1bHQKLQotKiBpbnRyb2R1Y2VkIHB5dGVzdF9rZXlib2FyZGludGVycnVw
dCBob29rIGFuZAotICByZWZpbmVkIHB5dGVzdF9zZXNzaW9uZmluaXNoIGhvb2tlZCwgYWRkZWQg
dGVzdHMuCi0KLSogd29ya2Fyb3VuZCBhIGJ1Z2d5IGxvZ2dpbmcgbW9kdWxlIGludGVyYWN0aW9u
ICgiY2xvc2luZyBhbHJlYWR5IGNsb3NlZAotICBmaWxlcyIpLiAgVGhhbmtzIHRvIFNyaWRoYXIg
UmF0bmFrdW1hciBmb3IgdHJpZ2dlcmluZy4KLQotKiBpZiBwbHVnaW5zIHVzZSAicHkudGVzdC5p
bXBvcnRvcnNraXAiIGZvciBpbXBvcnRpbmcKLSAgYSBkZXBlbmRlbmN5IG9ubHkgYSB3YXJuaW5n
IHdpbGwgYmUgaXNzdWVkIGluc3RlYWQKLSAgb2YgZXhpdGluZyB0aGUgdGVzdGluZyBwcm9jZXNz
LgotCi0qIG1hbnkgaW1wcm92ZW1lbnRzIHRvIGRvY3M6Ci0gIC0gcmVmaW5lZCBmdW5jYXJncyBk
b2MgLCB1c2UgdGhlIHRlcm0gImZhY3RvcnkiIGluc3RlYWQgb2YgInByb3ZpZGVyIgotICAtIGFk
ZGVkIGEgbmV3IHRhbGsvdHV0b3JpYWwgZG9jIHBhZ2UKLSAgLSBiZXR0ZXIgZG93bmxvYWQgcGFn
ZQotICAtIGJldHRlciBwbHVnaW4gZG9jc3RyaW5ncwotICAtIGFkZGVkIG5ldyBwbHVnaW5zIHBh
Z2UgYW5kIGF1dG9tYXRpYyBkb2MgZ2VuZXJhdGlvbiBzY3JpcHQKLQotKiBmaXhlZCB0ZWFyZG93
biBwcm9ibGVtIHJlbGF0ZWQgdG8gcGFydGlhbGx5IGZhaWxpbmcgZnVuY2FyZyBzZXR1cHMKLSAg
KHRoYW5rcyBNclRvcGYgZm9yIHJlcG9ydGluZyksICJweXRlc3RfcnVudGVzdF90ZWFyZG93biIg
aXMgbm93Ci0gIGFsd2F5cyBpbnZva2VkIGV2ZW4gaWYgdGhlICJweXRlc3RfcnVudGVzdF9zZXR1
cCIgZmFpbGVkLgotCi0qIHR3ZWFrZWQgZG9jdGVzdCBvdXRwdXQgZm9yIGRvY3N0cmluZ3MgaW4g
cHkgbW9kdWxlcywKLSAgdGhhbmtzIFJhZG9taXIuCi0KLTEuMC4wYjcKLT09PT09PT0KLQotKiBy
ZW5hbWVkIHB5LnRlc3QueGZhaWwgYmFjayB0byBweS50ZXN0Lm1hcmsueGZhaWwgdG8gYXZvaWQK
LSAgdHdvIHdheXMgdG8gZGVjb3JhdGUgZm9yIHhmYWlsCi0KLSogcmUtYWRkZWQgcHkudGVzdC5t
YXJrIGRlY29yYXRvciBmb3Igc2V0dGluZyBrZXl3b3JkcyBvbiBmdW5jdGlvbnMKLSAgKGl0IHdh
cyBhY3R1YWxseSBkb2N1bWVudGVkIHNvIHJlbW92aW5nIGl0IHdhcyBub3QgbmljZSkKLQotKiBy
ZW1vdmUgc2NvcGUtYXJndW1lbnQgZnJvbSByZXF1ZXN0LmFkZGZpbmFsaXplcigpIGJlY2F1c2UK
LSAgcmVxdWVzdC5jYWNoZWRfc2V0dXAgaGFzIHRoZSBzY29wZSBhcmcuIFRPT1dUREkuCi0KLSog
cGVyZm9ybSBzZXR1cCBmaW5hbGl6YXRpb24gYmVmb3JlIHJlcG9ydGluZyBmYWlsdXJlcwotCi0q
IGFwcGx5IG1vZGlmaWVkIHBhdGNoZXMgZnJvbSBBbmRyZWFzIEtsb2Vja25lciB0byBhbGxvdwot
ICB0ZXN0IGZ1bmN0aW9ucyB0byBoYXZlIG5vIGZ1bmNfY29kZSAoIzIyKSBhbmQgdG8gbWFrZQot
ICAiLWsiIGFuZCBmdW5jdGlvbiBrZXl3b3JkcyB3b3JrICAoIzIwKQotCi0qIGFwcGx5IHBhdGNo
IGZyb20gRGFuaWVsIFBlb2x6bGVpdGhuZXIgKGlzc3VlICMyMykKLQotKiByZXNvbHZlIGlzc3Vl
ICMxOCwgbXVsdGlwcm9jZXNzaW5nLk1hbmFnZXIoKSBhbmQKLSAgcmVkaXJlY3Rpb24gY2xhc2gK
LQotKiBtYWtlIF9fbmFtZV9fID09ICJfX2NoYW5uZWxleGVjX18iIGZvciByZW1vdGVfZXhlYyBj
b2RlCi0KLTEuMC4wYjMgKDIwMDktMDYtMTkpCi09PT09PT09PT09PT09PT09PT09PQotCi0qIHBs
dWdpbiBjbGFzc2VzIGFyZSByZW1vdmVkOiBvbmUgbm93IGRlZmluZXMKLSAgaG9va3MgZGlyZWN0
bHkgaW4gY29uZnRlc3QucHkgb3IgZ2xvYmFsIHB5dGVzdF8qLnB5Ci0gIGZpbGVzLgotCi0qIGFk
ZGVkIG5ldyBweXRlc3RfbmFtZXNwYWNlKGNvbmZpZykgaG9vayB0aGF0IGFsbG93cwotICB0byBp
bmplY3QgaGVscGVycyBkaXJlY3RseSB0byB0aGUgcHkudGVzdC4qIG5hbWVzcGFjZS4KLQotKiBk
b2N1bWVudGVkIGFuZCByZWZpbmVkIG1hbnkgaG9va3MKLQotKiBhZGRlZCBuZXcgc3R5bGUgb2Yg
Z2VuZXJhdGl2ZSB0ZXN0cyB2aWEKLSAgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIGhvb2sgdGhhdCBp
bnRlZ3JhdGVzCi0gIHdlbGwgd2l0aCBmdW5jdGlvbiBhcmd1bWVudHMuCi0KLQotMS4wLjBiMQot
PT09PT09PQotCi0qIGludHJvZHVjZWQgbmV3ICJmdW5jYXJnIiBzZXR1cCBtZXRob2QsCi0gIHNl
ZSBkb2MvdGVzdC9mdW5jYXJnLnR4dAotCi0qIGludHJvZHVjZWQgcGx1Z2luIGFyY2hpdGVjdHVy
ZSBhbmQgbWFueQotICBuZXcgcHkudGVzdCBwbHVnaW5zLCBzZWUKLSAgZG9jL3Rlc3QvcGx1Z2lu
cy50eHQKLQotKiB0ZWFyZG93bl9tZXRob2QgaXMgbm93IGd1YXJhbnRlZWQgdG8gZ2V0Ci0gIGNh
bGxlZCBhZnRlciBhIHRlc3QgbWV0aG9kIGhhcyBydW4uCi0KLSogbmV3IG1ldGhvZDogcHkudGVz
dC5pbXBvcnRvcnNraXAobW9kLG1pbnZlcnNpb24pCi0gIHdpbGwgZWl0aGVyIGltcG9ydCBvciBj
YWxsIHB5LnRlc3Quc2tpcCgpCi0KLSogY29tcGxldGVseSByZXZpc2VkIGludGVybmFsIHB5LnRl
c3QgYXJjaGl0ZWN0dXJlCi0KLSogbmV3IHB5LnByb2Nlc3MuRm9ya2VkRnVuYyBvYmplY3QgYWxs
b3dpbmcgdG8KLSAgZm9yayBleGVjdXRpb24gb2YgYSBmdW5jdGlvbiB0byBhIHN1YiBwcm9jZXNz
Ci0gIGFuZCBnZXR0aW5nIGEgcmVzdWx0IGJhY2suCi0KLVhYWCBsb3RzIG9mIHRoaW5ncyBtaXNz
aW5nIGhlcmUgWFhYCi0KLTAuOS4yCi09PT09PQotCi0qIHJlZmluZWQgaW5zdGFsbGF0aW9uIGFu
ZCBtZXRhZGF0YSwgY3JlYXRlZCBuZXcgc2V0dXAucHksCi0gIG5vdyBiYXNlZCBvbiBzZXR1cHRv
b2xzL2V6X3NldHVwICh0aGFua3MgdG8gUmFsZiBTY2htaXR0Ci0gIGZvciBoaXMgc3VwcG9ydCku
Ci0KLSogaW1wcm92ZWQgdGhlIHdheSBvZiBtYWtpbmcgcHkuKiBzY3JpcHRzIGF2YWlsYWJsZSBp
bgotICB3aW5kb3dzIGVudmlyb25tZW50cywgdGhleSBhcmUgbm93IGFkZGVkIHRvIHRoZQotICBT
Y3JpcHRzIGRpcmVjdG9yeSBhcyAiLmNtZCIgZmlsZXMuCi0KLSogcHkucGF0aC5zdm53Yy5zdGF0
dXMoKSBub3cgaXMgbW9yZSBjb21wbGV0ZSBhbmQKLSAgdXNlcyB4bWwgb3V0cHV0IGZyb20gdGhl
ICdzdm4nIGNvbW1hbmQgaWYgYXZhaWxhYmxlCi0gIChHdWlkbyBXZXNkb3JwKQotCi0qIGZpeCBm
b3IgcHkucGF0aC5zdm4qIHRvIHdvcmsgd2l0aCBzdm4gMS41Ci0gIChDaHJpcyBMYW1iKQotCi0q
IGZpeCBwYXRoLnJlbHRvKG90aGVycGF0aCkgbWV0aG9kIG9uIHdpbmRvd3MgdG8KLSAgdXNlIG5v
cm1jYXNlIGZvciBjaGVja2luZyBpZiBhIHBhdGggaXMgcmVsYXRpdmUuCi0KLSogcHkudGVzdCdz
IHRyYWNlYmFjayBpcyBiZXR0ZXIgcGFyc2VhYmxlIGZyb20gZWRpdG9ycwotICAoZm9sbG93cyB0
aGUgZmlsZW5hbWVzOkxJTkVOTzogTVNHIGNvbnZlbnRpb24pCi0gICh0aGFua3MgdG8gT3NtbyBT
YWxvbWFhKQotCi0qIGZpeCB0byBqYXZhc2NyaXB0LWdlbmVyYXRpb24sICJweS50ZXN0IC0tcnVu
YnJvd3NlciIKLSAgc2hvdWxkIHdvcmsgbW9yZSByZWxpYWJseSBub3cKLQotKiByZW1vdmVkIHBy
ZXZpb3VzbHkgYWNjaWRlbnRhbGx5IGFkZGVkCi0gIHB5LnRlc3QuYnJva2VuIGFuZCBweS50ZXN0
Lm5vdGltcGxlbWVudGVkIGhlbHBlcnMuCi0KLSogdGhlcmUgbm93IGlzIGEgcHkuX192ZXJzaW9u
X18gYXR0cmlidXRlCi0KLTAuOS4xCi09PT09PQotCi1UaGlzIGlzIGEgZmFpcmx5IGNvbXBsZXRl
IGxpc3Qgb2YgdjAuOS4xLCB3aGljaCBjYW4KLXNlcnZlIGFzIGEgcmVmZXJlbmNlIGZvciBkZXZl
bG9wZXJzLgotCi0qIGFsbG93aW5nICsgc2lnbnMgaW4gcHkucGF0aC5zdm4gdXJscyBbMzkxMDZd
Ci0qIGZpeGVkIHN1cHBvcnQgZm9yIEZhaWxlZCBleGNlcHRpb25zIHdpdGhvdXQgZXhjaW5mbyBp
biBweS50ZXN0IFszOTM0MF0KLSogYWRkZWQgc3VwcG9ydCBmb3Iga2lsbGluZyBwcm9jZXNzZXMg
Zm9yIFdpbmRvd3MgKGFzIHdlbGwgYXMgcGxhdGZvcm1zIHRoYXQKLSAgc3VwcG9ydCBvcy5raWxs
KSBpbiBweS5taXNjLmtpbGxwcm9jIFszOTY1NV0KLSogYWRkZWQgc2V0dXAvdGVhcmRvd24gZm9y
IGdlbmVyYXRpdmUgdGVzdHMgdG8gcHkudGVzdCBbNDA3MDJdCi0qIGFkZGVkIGRldGVjdGlvbiBv
ZiBGQUlMRUQgVE8gTE9BRCBNT0RVTEUgdG8gcHkudGVzdCBbNDA3MDMsIDQwNzM4LCA0MDczOV0K
LSogZml4ZWQgcHJvYmxlbSB3aXRoIGNhbGxpbmcgLnJlbW92ZSgpIG9uIHdjcGF0aHMgb2Ygbm9u
LXZlcnNpb25lZCBmaWxlcyBpbgotICBweS5wYXRoIFs0NDI0OF0KLSogZml4ZWQgc29tZSBpbXBv
cnQgYW5kIGluaGVyaXRhbmNlIGlzc3VlcyBpbiBweS50ZXN0IFs0MTQ4MCwgNDQ2NDgsIDQ0NjU1
XQotKiBmYWlsIHRvIHJ1biBncmVlbmxldCB0ZXN0cyB3aGVuIHB5cHkgaXMgYXZhaWxhYmxlLCBi
dXQgd2l0aG91dCBzdGFja2xlc3MKLSAgWzQ1Mjk0XQotKiBzbWFsbCBmaXhlcyBpbiByc2Vzc2lv
biB0ZXN0cyBbNDUyOTVdCi0qIGZpeGVkIGlzc3VlIHdpdGggMi41IHR5cGUgcmVwcmVzZW50YXRp
b25zIGluIHB5LnRlc3QgWzQ1NDgzLCA0NTQ4NF0KLSogbWFkZSB0aGF0IGludGVybmFsIHJlcG9y
dGluZyBpc3N1ZXMgZGlzcGxheWluZyBpcyBkb25lIGF0b21pY2FsbHkgaW4gcHkudGVzdAotICBb
NDU1MThdCi0qIG1hZGUgdGhhdCBub24tZXhpc3RpbmcgZmlsZXMgYXJlIGlnbm9yZWQgYnkgdGhl
IHB5Lmxvb2t1cCBzY3JpcHQgWzQ1NTE5XQotKiBpbXByb3ZlZCBleGNlcHRpb24gbmFtZSBjcmVh
dGlvbiBpbiBweS50ZXN0IFs0NTUzNV0KLSogbWFkZSB0aGF0IGxlc3MgdGhyZWFkcyBhcmUgdXNl
ZCBpbiBleGVjbmV0IFttZXJnZSBpbiA0NTUzOV0KLSogcmVtb3ZlZCBsb2NrIHJlcXVpcmVkIGZv
ciBhdG9taWMgcmVwb3J0aW5nIGlzc3VlIGRpc3BsYXlpbmcgaW4gcHkudGVzdAotICBbNDU1NDVd
Ci0qIHJlbW92ZWQgZ2xvYmFscyBmcm9tIGV4ZWNuZXQgWzQ1NTQxLCA0NTU0N10KLSogcmVmYWN0
b3JlZCBjbGVhbnVwIG1lY2hhbmljcywgbWFkZSB0aGF0IHNldERhZW1vbiBpcyBzZXQgdG8gMSB0
byBtYWtlIGF0ZXhpdAotICBnZXQgY2FsbGVkIGluIDIuNSAocHkuZXhlY25ldCkgWzQ1NTQ4XQot
KiBmaXhlZCBidWcgaW4gam9pbmluZyB0aHJlYWRzIGluIHB5LmV4ZWNuZXQncyBzZXJ2ZW1haW4g
WzQ1NTQ5XQotKiByZWZhY3RvcmVkIHB5LnRlc3QucnNlc3Npb24gdGVzdHMgdG8gbm90IHJlbHkg
b24gZXhhY3Qgb3V0cHV0IGZvcm1hdCBhbnltb3JlCi0gIFs0NTY0Nl0KLSogdXNpbmcgcmVwcigp
IG9uIHRlc3Qgb3V0Y29tZSBbNDU2NDddCi0qIGFkZGVkICdSZWFzb24nIGNsYXNzZXMgZm9yIHB5
LnRlc3Quc2tpcCgpIFs0NTY0OCwgNDU2NDldCi0qIGtpbGxlZCBzb21lIHVubmVjZXNzYXJ5IHNh
bml0eSBjaGVjayBpbiBweS50ZXN0LmNvbGxlY3QgWzQ1NjU1XQotKiBhdm9pZCB1c2luZyBvcy50
bXBmaWxlKCkgaW4gcHkuaW8uZmRjYXB0dXJlIGJlY2F1c2Ugb24gV2luZG93cyBpdCdzIG9ubHkK
LSAgdXNhYmxlIGJ5IEFkbWluaXN0cmF0b3JzIFs0NTkwMV0KLSogYWRkZWQgc3VwcG9ydCBmb3Ig
bG9ja2luZyBhbmQgbm9uLXJlY3Vyc2l2ZSBjb21taXRzIHRvIHB5LnBhdGguc3Zud2MgWzQ1OTk0
XQotKiBsb2NraW5nIGZpbGVzIGluIHB5LmV4ZWNuZXQgdG8gcHJldmVudCBDUHl0aG9uIGZyb20g
c2VnZmF1bHRpbmcgWzQ2MDEwXQotKiBhZGRlZCBleHBvcnQoKSBtZXRob2QgdG8gcHkucGF0aC5z
dm51cmwKLSogZml4ZWQgLWQgLXggaW4gcHkudGVzdCBbNDcyNzddCi0qIGZpeGVkIGFyZ3VtZW50
IGNvbmNhdGVuYXRpb24gcHJvYmxlbSBpbiBweS5wYXRoLnN2bndjIFs0OTQyM10KLSogcmVzdG9y
ZSBweS50ZXN0IGJlaGF2aW91ciB0aGF0IGl0IGV4aXRzIHdpdGggY29kZSAxIHdoZW4gdGhlcmUg
YXJlIGZhaWx1cmVzCi0gIFs0OTk3NF0KLSogZG9uJ3QgZmFpbCBvbiBodG1sIGZpbGVzIHRoYXQg
ZG9uJ3QgaGF2ZSBhbiBhY2NvbXBhbnlpbmcgLnR4dCBmaWxlIFs1MDYwNl0KLSogZml4ZWQgJ3V0
ZXN0Y29udmVydC5weSA8IGlucHV0JyBbNTA2NDVdCi0qIHNtYWxsIGZpeCBmb3IgY29kZSBpbmRl
bnRhdGlvbiBpbiBweS5jb2RlLnNvdXJjZSBbNTA3NTVdCi0qIGZpeCBfZG9jZ2VuLnB5IGRvY3Vt
ZW50YXRpb24gYnVpbGRpbmcgWzUxMjg1XQotKiBpbXByb3ZlZCBjaGVja3MgZm9yIHNvdXJjZSBy
ZXByZXNlbnRhdGlvbiBvZiBjb2RlIGJsb2NrcyBpbiBweS50ZXN0IFs1MTI5Ml0KLSogYWRkZWQg
c3VwcG9ydCBmb3IgcGFzc2luZyBhdXRoZW50aWNhdGlvbiB0byBweS5wYXRoLnN2biogb2JqZWN0
cyBbNTIwMDAsCi0gIDUyMDAxXQotKiByZW1vdmVkIHNvcnRlZCgpIGNhbGwgZm9yIHB5LmFwaWdl
biB0ZXN0cyBpbiBmYXZvdXIgb2YgW10uc29ydCgpIHRvIHN1cHBvcnQKLSAgUHl0aG9uIDIuMyBb
NTI0ODFdCitUaGUgc291cmNlIGRvY3VtZW50IGNhbiBiZSBmb3VuZCBhdDogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2Jsb2IvbWFzdGVyL2RvYy9lbi9jaGFuZ2Vsb2cucnN0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DSVRBVElPTiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NJVEFUSU9O
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDRlOWQ4ZWM3YTEzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQ0lUQVRJT04KQEAgLTAsMCArMSwxNiBAQAor
Tk9URTogQ2hhbmdlICJ4LnkiIGJ5IHRoZSB2ZXJzaW9uIHlvdSB1c2UuIElmIHlvdSBhcmUgdW5z
dXJlIGFib3V0IHdoaWNoIHZlcnNpb24KK3lvdSBhcmUgdXNpbmcgcnVuOiBgcGlwIHNob3cgcHl0
ZXN0YC4KKworVGV4dDoKKworW3B5dGVzdF0gcHl0ZXN0IHgueSwgMjAwNAorS3Jla2VsIGV0IGFs
LiwgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0CisKK0JpYlRlWDoKKworQG1p
c2N7cHl0ZXN0eC55LAorICB0aXRsZSA9ICAgICAgICB7cHl0ZXN0IHgueX0sCisgIGF1dGhvciA9
IHtLcmVrZWwsIEhvbGdlciBhbmQgT2xpdmVpcmEsIEJydW5vIGFuZCBQZmFubnNjaG1pZHQsIFJv
bm55IGFuZCBCcnV5bm9vZ2hlLCBGbG9yaXMgYW5kIExhdWdoZXIsIEJyaWFubmEgYW5kIEJydWhp
biwgRmxvcmlhbn0sCisgIHllYXIgPSAgICAgICAgIHsyMDA0fSwKKyAgdXJsID0ge2h0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdH0sCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9DT0RFX09GX0NPTkRVQ1QubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DT0RFX09GX0NPTkRVQ1QubWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMGNhMzA0YmU0ZWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DT0RFX09GX0NPTkRVQ1QubWQKQEAgLTAsMCArMSw4
MyBAQAorIyBDb250cmlidXRvciBDb3ZlbmFudCBDb2RlIG9mIENvbmR1Y3QKKworIyMgT3VyIFBs
ZWRnZQorCitJbiB0aGUgaW50ZXJlc3Qgb2YgZm9zdGVyaW5nIGFuIG9wZW4gYW5kIHdlbGNvbWlu
ZyBlbnZpcm9ubWVudCwgd2UgYXMKK2NvbnRyaWJ1dG9ycyBhbmQgbWFpbnRhaW5lcnMgcGxlZGdl
IHRvIG1ha2luZyBwYXJ0aWNpcGF0aW9uIGluIG91ciBwcm9qZWN0IGFuZAorb3VyIGNvbW11bml0
eSBhIGhhcmFzc21lbnQtZnJlZSBleHBlcmllbmNlIGZvciBldmVyeW9uZSwgcmVnYXJkbGVzcyBv
ZiBhZ2UsIGJvZHkKK3NpemUsIGRpc2FiaWxpdHksIGV0aG5pY2l0eSwgc2V4IGNoYXJhY3Rlcmlz
dGljcywgZ2VuZGVyIGlkZW50aXR5IGFuZCBleHByZXNzaW9uLAorbGV2ZWwgb2YgZXhwZXJpZW5j
ZSwgZWR1Y2F0aW9uLCBzb2Npby1lY29ub21pYyBzdGF0dXMsIG5hdGlvbmFsaXR5LCBwZXJzb25h
bAorYXBwZWFyYW5jZSwgcmFjZSwgcmVsaWdpb24sIG9yIHNleHVhbCBpZGVudGl0eSBhbmQgb3Jp
ZW50YXRpb24uCisKKyMjIE91ciBTdGFuZGFyZHMKKworRXhhbXBsZXMgb2YgYmVoYXZpb3IgdGhh
dCBjb250cmlidXRlcyB0byBjcmVhdGluZyBhIHBvc2l0aXZlIGVudmlyb25tZW50CitpbmNsdWRl
OgorCisqIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1YWdlCisqIEJlaW5nIHJl
c3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVyaWVuY2VzCisqIEdyYWNl
ZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KKyogRm9jdXNpbmcgb24gd2hh
dCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5CisqIFNob3dpbmcgZW1wYXRoeSB0b3dhcmRzIG90
aGVyIGNvbW11bml0eSBtZW1iZXJzCisKK0V4YW1wbGVzIG9mIHVuYWNjZXB0YWJsZSBiZWhhdmlv
ciBieSBwYXJ0aWNpcGFudHMgaW5jbHVkZToKKworKiBUaGUgdXNlIG9mIHNleHVhbGl6ZWQgbGFu
Z3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbCBhdHRlbnRpb24gb3IKKyBhZHZh
bmNlcworKiBUcm9sbGluZywgaW5zdWx0aW5nL2Rlcm9nYXRvcnkgY29tbWVudHMsIGFuZCBwZXJz
b25hbCBvciBwb2xpdGljYWwgYXR0YWNrcworKiBQdWJsaWMgb3IgcHJpdmF0ZSBoYXJhc3NtZW50
CisqIFB1Ymxpc2hpbmcgb3RoZXJzJyBwcml2YXRlIGluZm9ybWF0aW9uLCBzdWNoIGFzIGEgcGh5
c2ljYWwgb3IgZWxlY3Ryb25pYworIGFkZHJlc3MsIHdpdGhvdXQgZXhwbGljaXQgcGVybWlzc2lv
bgorKiBPdGhlciBjb25kdWN0IHdoaWNoIGNvdWxkIHJlYXNvbmFibHkgYmUgY29uc2lkZXJlZCBp
bmFwcHJvcHJpYXRlIGluIGEKKyBwcm9mZXNzaW9uYWwgc2V0dGluZworCisjIyBPdXIgUmVzcG9u
c2liaWxpdGllcworCitQcm9qZWN0IG1haW50YWluZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgY2xh
cmlmeWluZyB0aGUgc3RhbmRhcmRzIG9mIGFjY2VwdGFibGUKK2JlaGF2aW9yIGFuZCBhcmUgZXhw
ZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBhbmQgZmFpciBjb3JyZWN0aXZlIGFjdGlvbiBpbgor
cmVzcG9uc2UgdG8gYW55IGluc3RhbmNlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IuCisKK1By
b2plY3QgbWFpbnRhaW5lcnMgaGF2ZSB0aGUgcmlnaHQgYW5kIHJlc3BvbnNpYmlsaXR5IHRvIHJl
bW92ZSwgZWRpdCwgb3IKK3JlamVjdCBjb21tZW50cywgY29tbWl0cywgY29kZSwgd2lraSBlZGl0
cywgaXNzdWVzLCBhbmQgb3RoZXIgY29udHJpYnV0aW9ucwordGhhdCBhcmUgbm90IGFsaWduZWQg
dG8gdGhpcyBDb2RlIG9mIENvbmR1Y3QsIG9yIHRvIGJhbiB0ZW1wb3JhcmlseSBvcgorcGVybWFu
ZW50bHkgYW55IGNvbnRyaWJ1dG9yIGZvciBvdGhlciBiZWhhdmlvcnMgdGhhdCB0aGV5IGRlZW0g
aW5hcHByb3ByaWF0ZSwKK3RocmVhdGVuaW5nLCBvZmZlbnNpdmUsIG9yIGhhcm1mdWwuCisKKyMj
IFNjb3BlCisKK1RoaXMgQ29kZSBvZiBDb25kdWN0IGFwcGxpZXMgYm90aCB3aXRoaW4gcHJvamVj
dCBzcGFjZXMgYW5kIGluIHB1YmxpYyBzcGFjZXMKK3doZW4gYW4gaW5kaXZpZHVhbCBpcyByZXBy
ZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11bml0eS4gRXhhbXBsZXMgb2YKK3JlcHJl
c2VudGluZyBhIHByb2plY3Qgb3IgY29tbXVuaXR5IGluY2x1ZGUgdXNpbmcgYW4gb2ZmaWNpYWwg
cHJvamVjdCBlLW1haWwKK2FkZHJlc3MsIHBvc3RpbmcgdmlhIGFuIG9mZmljaWFsIHNvY2lhbCBt
ZWRpYSBhY2NvdW50LCBvciBhY3RpbmcgYXMgYW4gYXBwb2ludGVkCityZXByZXNlbnRhdGl2ZSBh
dCBhbiBvbmxpbmUgb3Igb2ZmbGluZSBldmVudC4gUmVwcmVzZW50YXRpb24gb2YgYSBwcm9qZWN0
IG1heSBiZQorZnVydGhlciBkZWZpbmVkIGFuZCBjbGFyaWZpZWQgYnkgcHJvamVjdCBtYWludGFp
bmVycy4KKworIyMgRW5mb3JjZW1lbnQKKworSW5zdGFuY2VzIG9mIGFidXNpdmUsIGhhcmFzc2lu
Zywgb3Igb3RoZXJ3aXNlIHVuYWNjZXB0YWJsZSBiZWhhdmlvciBtYXkgYmUKK3JlcG9ydGVkIGJ5
IGNvbnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBjb2NAcHl0ZXN0Lm9yZy4gQWxsCitjb21w
bGFpbnRzIHdpbGwgYmUgcmV2aWV3ZWQgYW5kIGludmVzdGlnYXRlZCBhbmQgd2lsbCByZXN1bHQg
aW4gYSByZXNwb25zZSB0aGF0CitpcyBkZWVtZWQgbmVjZXNzYXJ5IGFuZCBhcHByb3ByaWF0ZSB0
byB0aGUgY2lyY3Vtc3RhbmNlcy4gVGhlIHByb2plY3QgdGVhbSBpcworb2JsaWdhdGVkIHRvIG1h
aW50YWluIGNvbmZpZGVudGlhbGl0eSB3aXRoIHJlZ2FyZCB0byB0aGUgcmVwb3J0ZXIgb2YgYW4g
aW5jaWRlbnQuCitGdXJ0aGVyIGRldGFpbHMgb2Ygc3BlY2lmaWMgZW5mb3JjZW1lbnQgcG9saWNp
ZXMgbWF5IGJlIHBvc3RlZCBzZXBhcmF0ZWx5LgorCitQcm9qZWN0IG1haW50YWluZXJzIHdobyBk
byBub3QgZm9sbG93IG9yIGVuZm9yY2UgdGhlIENvZGUgb2YgQ29uZHVjdCBpbiBnb29kCitmYWl0
aCBtYXkgZmFjZSB0ZW1wb3Jhcnkgb3IgcGVybWFuZW50IHJlcGVyY3Vzc2lvbnMgYXMgZGV0ZXJt
aW5lZCBieSBvdGhlcgorbWVtYmVycyBvZiB0aGUgcHJvamVjdCdzIGxlYWRlcnNoaXAuCisKK1Ro
ZSBjb2NAcHl0ZXN0Lm9yZyBhZGRyZXNzIGlzIHJvdXRlZCB0byB0aGUgZm9sbG93aW5nIHBlb3Bs
ZSB3aG8gY2FuIGFsc28gYmUKK2NvbnRhY3RlZCBpbmRpdmlkdWFsbHk6CisKKy0gQnJpYW5uYSBM
YXVnaGVyIChbQHBmY3RkYXllbGlzZV0oaHR0cHM6Ly9naXRodWIuY29tL3BmY3RkYXllbGlzZSkp
OiBicmlhbm5hQGxhdWdoZXIuaWQuYXUKKy0gQnJ1bm8gT2xpdmVpcmEgKFtAbmljb2RkZW11c10o
aHR0cHM6Ly9naXRodWIuY29tL25pY29kZGVtdXMpKTogbmljb2RkZW11c0BnbWFpbC5jb20KKy0g
RmxvcmlhbiBCcnVoaW4gKFtAdGhlLWNvbXBpbGVyXShodHRwczovL2dpdGh1Yi5jb20vdGhlLWNv
bXBpbGVyKSk6IHB5dGVzdEB0aGUtY29tcGlsZXIub3JnCisKKyMjIEF0dHJpYnV0aW9uCisKK1Ro
aXMgQ29kZSBvZiBDb25kdWN0IGlzIGFkYXB0ZWQgZnJvbSB0aGUgW0NvbnRyaWJ1dG9yIENvdmVu
YW50XVtob21lcGFnZV0sIHZlcnNpb24gMS40LAorYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmNv
bnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy92ZXJzaW9uLzEvNC9jb2RlLW9mLWNvbmR1Y3QuaHRtbAor
CitbaG9tZXBhZ2VdOiBodHRwczovL3d3dy5jb250cmlidXRvci1jb3ZlbmFudC5vcmcKKworRm9y
IGFuc3dlcnMgdG8gY29tbW9uIHF1ZXN0aW9ucyBhYm91dCB0aGlzIGNvZGUgb2YgY29uZHVjdCwg
c2VlCitodHRwczovL3d3dy5jb250cmlidXRvci1jb3ZlbmFudC5vcmcvZmFxCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9DT05UUklCVVRJTkcucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQ09OVFJJQlVUSU5H
LnJzdAppbmRleCBjMDA1YzJmYjI1NDUuLjQ4YmExNDdiN2RiOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvQ09OVFJJQlVUSU5HLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DT05UUklCVVRJTkcucnN0
CkBAIC0yLDExICsyLDEyIEBACiBDb250cmlidXRpb24gZ2V0dGluZyBzdGFydGVkCiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09CiAKLUNvbnRyaWJ1dGlvbnMgYXJlIGhpZ2hseSB3ZWxjb21l
ZCBhbmQgYXBwcmVjaWF0ZWQuICBFdmVyeSBsaXR0bGUgaGVscCBjb3VudHMsCitDb250cmlidXRp
b25zIGFyZSBoaWdobHkgd2VsY29tZWQgYW5kIGFwcHJlY2lhdGVkLiAgRXZlcnkgbGl0dGxlIGJp
dCBvZiBoZWxwIGNvdW50cywKIHNvIGRvIG5vdCBoZXNpdGF0ZSEKIAotLi4gY29udGVudHM6OiBD
b250cmlidXRpb24gbGlua3MKKy4uIGNvbnRlbnRzOjoKICAgIDpkZXB0aDogMgorICAgOmJhY2ts
aW5rczogbm9uZQogCiAKIC4uIF9zdWJtaXRmZWVkYmFjazoKQEAgLTUwLDcgKzUxLDggQEAgRml4
IGJ1Z3MKIAogTG9vayB0aHJvdWdoIHRoZSBgR2l0SHViIGlzc3VlcyBmb3IgYnVncyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2xhYmVscy90eXBlOiUyMGJ1Zz5gXy4KIAot
OnJlZjpgVGFsayA8Y29udGFjdD5gIHRvIGRldmVsb3BlcnMgdG8gZmluZCBvdXQgaG93IHlvdSBj
YW4gZml4IHNwZWNpZmljIGJ1Z3MuCis6cmVmOmBUYWxrIDxjb250YWN0PmAgdG8gZGV2ZWxvcGVy
cyB0byBmaW5kIG91dCBob3cgeW91IGNhbiBmaXggc3BlY2lmaWMgYnVncy4gVG8gaW5kaWNhdGUg
dGhhdCB5b3UgYXJlIGdvaW5nCit0byB3b3JrIG9uIGEgcGFydGljdWxhciBpc3N1ZSwgYWRkIGEg
Y29tbWVudCB0byB0aGF0IGVmZmVjdCBvbiB0aGUgc3BlY2lmaWMgaXNzdWUuCiAKIERvbid0IGZv
cmdldCB0byBjaGVjayB0aGUgaXNzdWUgdHJhY2tlcnMgb2YgeW91ciBmYXZvdXJpdGUgcGx1Z2lu
cywgdG9vIQogCkBAIC04NCw5ICs4Niw0MCBAQCB3aXRob3V0IHVzaW5nIGEgbG9jYWwgY29weS4g
IFRoaXMgY2FuIGJlIGNvbnZlbmllbnQgZm9yIHNtYWxsIGZpeGVzLgogCiAgICAgICAgICQgdG94
IC1lIGRvY3MKIAotICAgIFRoZSBidWlsdCBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSBhdmFpbGFi
bGUgaW4gdGhlIGBgZG9jL2VuL19idWlsZC9gYC4KKyAgICBUaGUgYnVpbHQgZG9jdW1lbnRhdGlv
biBzaG91bGQgYmUgYXZhaWxhYmxlIGluIGBgZG9jL2VuL19idWlsZC9odG1sYGAsCisgICAgd2hl
cmUgJ2VuJyByZWZlcnMgdG8gdGhlIGRvY3VtZW50YXRpb24gbGFuZ3VhZ2UuCisKK1B5dGVzdCBo
YXMgYW4gQVBJIHJlZmVyZW5jZSB3aGljaCBpbiBsYXJnZSBwYXJ0IGlzCitgZ2VuZXJhdGVkIGF1
dG9tYXRpY2FsbHkgPGh0dHBzOi8vd3d3LnNwaGlueC1kb2Mub3JnL2VuL21hc3Rlci91c2FnZS9l
eHRlbnNpb25zL2F1dG9kb2MuaHRtbD5gXworZnJvbSB0aGUgZG9jc3RyaW5ncyBvZiB0aGUgZG9j
dW1lbnRlZCBpdGVtcy4gUHl0ZXN0IHVzZXMgdGhlCitgU3BoaW54IGRvY3N0cmluZyBmb3JtYXQg
PGh0dHBzOi8vc3BoaW54LXJ0ZC10dXRvcmlhbC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvZG9j
c3RyaW5ncy5odG1sPmBfLgorRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
KworICAgIGRlZiBteV9mdW5jdGlvbihhcmc6IEFyZ1R5cGUpIC0+IEZvbzoKKyAgICAgICAgIiIi
RG8gaW1wb3J0YW50IHN0dWZmLgorCisgICAgICAgIE1vcmUgZGV0YWlsZWQgaW5mbyBoZXJlLCBp
biBzZXBhcmF0ZSBwYXJhZ3JhcGhzIGZyb20gdGhlIHN1YmplY3QgbGluZS4KKyAgICAgICAgVXNl
IHByb3BlciBzZW50ZW5jZXMgLS0gc3RhcnQgc2VudGVuY2VzIHdpdGggY2FwaXRhbCBsZXR0ZXJz
IGFuZCBlbmQKKyAgICAgICAgd2l0aCBwZXJpb2RzLgorCisgICAgICAgIENhbiBpbmNsdWRlIGFu
bm90YXRlZCBkb2N1bWVudGF0aW9uOgorCisgICAgICAgIDpwYXJhbSBzaG9ydF9hcmc6IEFuIGFy
Z3VtZW50IHdoaWNoIGRldGVybWluZXMgc3R1ZmYuCisgICAgICAgIDpwYXJhbSBsb25nX2FyZzoK
KyAgICAgICAgICAgIEEgbG9uZyBleHBsYW5hdGlvbiB3aGljaCBzcGFucyBtdWx0aXBsZSBsaW5l
cywgb3ZlcmZsb3dzCisgICAgICAgICAgICBsaWtlIHRoaXMuCisgICAgICAgIDpyZXR1cm5zOiBU
aGUgcmVzdWx0LgorICAgICAgICA6cmFpc2VzIFZhbHVlRXJyb3I6CisgICAgICAgICAgICBEZXRh
aWxlZCBpbmZvcm1hdGlvbiB3aGVuIHRoaXMgY2FuIGhhcHBlbi4KKworICAgICAgICAuLiB2ZXJz
aW9uYWRkZWQ6OiA2LjAKKworICAgICAgICBJbmNsdWRpbmcgdHlwZXMgaW50byB0aGUgYW5ub3Rh
dGlvbnMgYWJvdmUgaXMgbm90IG5lY2Vzc2FyeSB3aGVuCisgICAgICAgIHR5cGUtaGludGluZyBp
cyBiZWluZyB1c2VkIChhcyBpbiB0aGlzIGV4YW1wbGUpLgorICAgICAgICAiIiIKIAotICAgIFdo
ZXJlICdlbicgcmVmZXJzIHRvIHRoZSBkb2N1bWVudGF0aW9uIGxhbmd1YWdlLgogCiAuLiBfc3Vi
bWl0cGx1Z2luOgogCkBAIC05OCw4ICsxMzEsNiBAQCBpbiByZXBvc2l0b3JpZXMgbGl2aW5nIHVu
ZGVyIHRoZSBgYHB5dGVzdC1kZXZgYCBvcmdhbmlzYXRpb25zOgogCiAtIGBweXRlc3QtZGV2IG9u
IEdpdEh1YiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXY+YF8KIAotLSBgcHl0ZXN0LWRl
diBvbiBCaXRidWNrZXQgPGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXRlc3QtZGV2PmBfCi0KIEFs
bCBweXRlc3QtZGV2IENvbnRyaWJ1dG9ycyB0ZWFtIG1lbWJlcnMgaGF2ZSB3cml0ZSBhY2Nlc3Mg
dG8gYWxsIGNvbnRhaW5lZAogcmVwb3NpdG9yaWVzLiAgUHl0ZXN0IGNvcmUgYW5kIHBsdWdpbnMg
YXJlIGdlbmVyYWxseSBkZXZlbG9wZWQKIHVzaW5nIGBwdWxsIHJlcXVlc3RzYF8gdG8gcmVzcGVj
dGl2ZSByZXBvc2l0b3JpZXMuCkBAIC0xMTUsMjAgKzE0NiwyMSBAQCBZb3UgY2FuIHN1Ym1pdCB5
b3VyIHBsdWdpbiBieSBzdWJzY3JpYmluZyB0byB0aGUgYHB5dGVzdC1kZXYgbWFpbCBsaXN0CiBt
YWlsIHBvaW50aW5nIHRvIHlvdXIgZXhpc3RpbmcgcHl0ZXN0IHBsdWdpbiByZXBvc2l0b3J5IHdo
aWNoIG11c3QgaGF2ZQogdGhlIGZvbGxvd2luZzoKIAotLSBQeVBJIHByZXNlbmNlIHdpdGggYSBg
YHNldHVwLnB5YGAgdGhhdCBjb250YWlucyBhIGxpY2Vuc2UsIGBgcHl0ZXN0LWBgCistIFB5UEkg
cHJlc2VuY2Ugd2l0aCBwYWNrYWdpbmcgbWV0YWRhdGEgdGhhdCBjb250YWlucyBhIGBgcHl0ZXN0
LWBgCiAgIHByZWZpeGVkIG5hbWUsIHZlcnNpb24gbnVtYmVyLCBhdXRob3JzLCBzaG9ydCBhbmQg
bG9uZyBkZXNjcmlwdGlvbi4KIAotLSBhIGBgdG94LmluaWBgIGZvciBydW5uaW5nIHRlc3RzIHVz
aW5nIGB0b3ggPGh0dHBzOi8vdG94LnJlYWR0aGVkb2NzLmlvPmBfLgorLSBhICBgdG94IGNvbmZp
Z3VyYXRpb24gPGh0dHBzOi8vdG94LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9jb25maWcuaHRt
bCNjb25maWd1cmF0aW9uLWRpc2NvdmVyeT5gXworICBmb3IgcnVubmluZyB0ZXN0cyB1c2luZyBg
dG94IDxodHRwczovL3RveC5yZWFkdGhlZG9jcy5pbz5gXy4KIAotLSBhIGBgUkVBRE1FLnR4dGBg
IGRlc2NyaWJpbmcgaG93IHRvIHVzZSB0aGUgcGx1Z2luIGFuZCBvbiB3aGljaAorLSBhIGBgUkVB
RE1FYGAgZGVzY3JpYmluZyBob3cgdG8gdXNlIHRoZSBwbHVnaW4gYW5kIG9uIHdoaWNoCiAgIHBs
YXRmb3JtcyBpdCBydW5zLgogCi0tIGEgYGBMSUNFTlNFLnR4dGBgIGZpbGUgb3IgZXF1aXZhbGVu
dCBjb250YWluaW5nIHRoZSBsaWNlbnNpbmcKLSAgaW5mb3JtYXRpb24sIHdpdGggbWF0Y2hpbmcg
aW5mbyBpbiBgYHNldHVwLnB5YGAuCistIGEgYGBMSUNFTlNFYGAgZmlsZSBjb250YWluaW5nIHRo
ZSBsaWNlbnNpbmcgaW5mb3JtYXRpb24sIHdpdGgKKyAgbWF0Y2hpbmcgaW5mbyBpbiBpdHMgcGFj
a2FnaW5nIG1ldGFkYXRhLgogCiAtIGFuIGlzc3VlIHRyYWNrZXIgZm9yIGJ1ZyByZXBvcnRzIGFu
ZCBlbmhhbmNlbWVudCByZXF1ZXN0cy4KIAotLSBhIGBjaGFuZ2Vsb2cgPGh0dHA6Ly9rZWVwYWNo
YW5nZWxvZy5jb20vPmBfCistIGEgYGNoYW5nZWxvZyA8aHR0cDovL2tlZXBhY2hhbmdlbG9nLmNv
bS8+YF8uCiAKIElmIG5vIGNvbnRyaWJ1dG9yIHN0cm9uZ2x5IG9iamVjdHMgYW5kIHR3byBhZ3Jl
ZSwgdGhlIHJlcG9zaXRvcnkgY2FuIHRoZW4gYmUKIHRyYW5zZmVycmVkIHRvIHRoZSBgYHB5dGVz
dC1kZXZgYCBvcmdhbmlzYXRpb24uCkBAIC0xNjQsMTggKzE5NiwxOCBAQCBTaG9ydCB2ZXJzaW9u
CiAKICMuIEZvcmsgdGhlIHJlcG9zaXRvcnkuCiAjLiBFbmFibGUgYW5kIGluc3RhbGwgYHByZS1j
b21taXQgPGh0dHBzOi8vcHJlLWNvbW1pdC5jb20+YF8gdG8gZW5zdXJlIHN0eWxlLWd1aWRlcyBh
bmQgY29kZSBjaGVja3MgYXJlIGZvbGxvd2VkLgotIy4gVGFyZ2V0IGBgbWFzdGVyYGAgZm9yIGJ1
Z2ZpeGVzIGFuZCBkb2MgY2hhbmdlcy4KLSMuIFRhcmdldCBgYGZlYXR1cmVzYGAgZm9yIG5ldyBm
ZWF0dXJlcyBvciBmdW5jdGlvbmFsaXR5IGNoYW5nZXMuCi0jLiBGb2xsb3cgKipQRVAtOCoqIGZv
ciBuYW1pbmcgYW5kIGBibGFjayA8aHR0cHM6Ly9naXRodWIuY29tL2FtYnYvYmxhY2s+YF8gZm9y
IGZvcm1hdHRpbmcuCisjLiBGb2xsb3cgKipQRVAtOCoqIGZvciBuYW1pbmcgYW5kIGBibGFjayA8
aHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaz5gXyBmb3IgZm9ybWF0dGluZy4KICMuIFRlc3Rz
IGFyZSBydW4gdXNpbmcgYGB0b3hgYDo6CiAKLSAgICB0b3ggLWUgbGludGluZyxweTI3LHB5MzYK
KyAgICB0b3ggLWUgbGludGluZyxweTM3CiAKICAgIFRoZSB0ZXN0IGVudmlyb25tZW50cyBhYm92
ZSBhcmUgdXN1YWxseSBlbm91Z2ggdG8gY292ZXIgbW9zdCBjYXNlcyBsb2NhbGx5LgogCi0jLiBX
cml0ZSBhIGBgY2hhbmdlbG9nYGAgZW50cnk6IGBgY2hhbmdlbG9nLzI1NzQuYnVnZml4YGAsIHVz
ZSBpc3N1ZSBpZCBudW1iZXIKLSAgIGFuZCBvbmUgb2YgYGBidWdmaXhgYCwgYGByZW1vdmFsYGAs
IGBgZmVhdHVyZWBgLCBgYHZlbmRvcmBgLCBgYGRvY2BgIG9yCi0gICBgYHRyaXZpYWxgYCBmb3Ig
dGhlIGlzc3VlIHR5cGUuCisjLiBXcml0ZSBhIGBgY2hhbmdlbG9nYGAgZW50cnk6IGBgY2hhbmdl
bG9nLzI1NzQuYnVnZml4LnJzdGBgLCB1c2UgaXNzdWUgaWQgbnVtYmVyCisgICBhbmQgb25lIG9m
IGBgZmVhdHVyZWBgLCBgYGltcHJvdmVtZW50YGAsIGBgYnVnZml4YGAsIGBgZG9jYGAsIGBgZGVw
cmVjYXRpb25gYCwKKyAgIGBgYnJlYWtpbmdgYCwgYGB2ZW5kb3JgYCBvciBgYHRyaXZpYWxgYCBm
b3IgdGhlIGlzc3VlIHR5cGUuCisKKwogIy4gVW5sZXNzIHlvdXIgY2hhbmdlIGlzIGEgdHJpdmlh
bCBvciBhIGRvY3VtZW50YXRpb24gZml4IChlLmcuLCBhIHR5cG8gb3IgcmV3b3JkIG9mIGEgc21h
bGwgc2VjdGlvbikgcGxlYXNlCiAgICBhZGQgeW91cnNlbGYgdG8gdGhlIGBgQVVUSE9SU2BgIGZp
bGUsIGluIGFscGhhYmV0aWNhbCBvcmRlci4KIApAQCAtMjAyLDE1ICsyMzQsMTEgQEAgSGVyZSBp
cyBhIHNpbXBsZSBvdmVydmlldywgd2l0aCBweXRlc3Qtc3BlY2lmaWMgYml0czoKIAogICAgICQg
Z2l0IGNsb25lIGdpdEBnaXRodWIuY29tOllPVVJfR0lUSFVCX1VTRVJOQU1FL3B5dGVzdC5naXQK
ICAgICAkIGNkIHB5dGVzdAotICAgICMgbm93LCB0byBmaXggYSBidWcgY3JlYXRlIHlvdXIgb3du
IGJyYW5jaCBvZmYgIm1hc3RlciI6CisgICAgIyBub3csIGNyZWF0ZSB5b3VyIG93biBicmFuY2gg
b2ZmICJtYXN0ZXIiOgogCiAgICAgICAgICQgZ2l0IGNoZWNrb3V0IC1iIHlvdXItYnVnZml4LWJy
YW5jaC1uYW1lIG1hc3RlcgogCi0gICAgIyBvciB0byBpbnN0ZWFkIGFkZCBhIGZlYXR1cmUgY3Jl
YXRlIHlvdXIgb3duIGJyYW5jaCBvZmYgImZlYXR1cmVzIjoKLQotICAgICAgICAkIGdpdCBjaGVj
a291dCAtYiB5b3VyLWZlYXR1cmUtYnJhbmNoLW5hbWUgZmVhdHVyZXMKLQotICAgR2l2ZW4gd2Ug
aGF2ZSAibWFqb3IubWlub3IubWljcm8iIHZlcnNpb24gbnVtYmVycywgYnVnZml4ZXMgd2lsbCB1
c3VhbGx5CisgICBHaXZlbiB3ZSBoYXZlICJtYWpvci5taW5vci5taWNybyIgdmVyc2lvbiBudW1i
ZXJzLCBidWcgZml4ZXMgd2lsbCB1c3VhbGx5CiAgICBiZSByZWxlYXNlZCBpbiBtaWNybyByZWxl
YXNlcyB3aGVyZWFzIGZlYXR1cmVzIHdpbGwgYmUgcmVsZWFzZWQgaW4KICAgIG1pbm9yIHJlbGVh
c2VzIGFuZCBpbmNvbXBhdGlibGUgY2hhbmdlcyBpbiBtYWpvciByZWxlYXNlcy4KIApAQCAtMjM3
LDM2ICsyNjUsNTEgQEAgSGVyZSBpcyBhIHNpbXBsZSBvdmVydmlldywgd2l0aCBweXRlc3Qtc3Bl
Y2lmaWMgYml0czoKIAogIy4gUnVuIGFsbCB0aGUgdGVzdHMKIAotICAgWW91IG5lZWQgdG8gaGF2
ZSBQeXRob24gMi43IGFuZCAzLjYgYXZhaWxhYmxlIGluIHlvdXIgc3lzdGVtLiAgTm93CisgICBZ
b3UgbmVlZCB0byBoYXZlIFB5dGhvbiAzLjcgYXZhaWxhYmxlIGluIHlvdXIgc3lzdGVtLiAgTm93
CiAgICBydW5uaW5nIHRlc3RzIGlzIGFzIHNpbXBsZSBhcyBpc3N1aW5nIHRoaXMgY29tbWFuZDo6
CiAKLSAgICAkIHRveCAtZSBsaW50aW5nLHB5MjcscHkzNgorICAgICQgdG94IC1lIGxpbnRpbmcs
cHkzNwogCi0gICBUaGlzIGNvbW1hbmQgd2lsbCBydW4gdGVzdHMgdmlhIHRoZSAidG94IiB0b29s
IGFnYWluc3QgUHl0aG9uIDIuNyBhbmQgMy42CisgICBUaGlzIGNvbW1hbmQgd2lsbCBydW4gdGVz
dHMgdmlhIHRoZSAidG94IiB0b29sIGFnYWluc3QgUHl0aG9uIDMuNwogICAgYW5kIGFsc28gcGVy
Zm9ybSAibGludCIgY29kaW5nLXN0eWxlIGNoZWNrcy4KIAogIy4gWW91IGNhbiBub3cgZWRpdCB5
b3VyIGxvY2FsIHdvcmtpbmcgY29weSBhbmQgcnVuIHRoZSB0ZXN0cyBhZ2FpbiBhcyBuZWNlc3Nh
cnkuIFBsZWFzZSBmb2xsb3cgUEVQLTggZm9yIG5hbWluZy4KIAotICAgWW91IGNhbiBwYXNzIGRp
ZmZlcmVudCBvcHRpb25zIHRvIGBgdG94YGAuIEZvciBleGFtcGxlLCB0byBydW4gdGVzdHMgb24g
UHl0aG9uIDIuNyBhbmQgcGFzcyBvcHRpb25zIHRvIHB5dGVzdAorICAgWW91IGNhbiBwYXNzIGRp
ZmZlcmVudCBvcHRpb25zIHRvIGBgdG94YGAuIEZvciBleGFtcGxlLCB0byBydW4gdGVzdHMgb24g
UHl0aG9uIDMuNyBhbmQgcGFzcyBvcHRpb25zIHRvIHB5dGVzdAogICAgKGUuZy4gZW50ZXIgcGRi
IG9uIGZhaWx1cmUpIHRvIHB5dGVzdCB5b3UgY2FuIGRvOjoKIAotICAgICQgdG94IC1lIHB5Mjcg
LS0gLS1wZGIKKyAgICAkIHRveCAtZSBweTM3IC0tIC0tcGRiCiAKLSAgIE9yIHRvIG9ubHkgcnVu
IHRlc3RzIGluIGEgcGFydGljdWxhciB0ZXN0IG1vZHVsZSBvbiBQeXRob24gMy42OjoKKyAgIE9y
IHRvIG9ubHkgcnVuIHRlc3RzIGluIGEgcGFydGljdWxhciB0ZXN0IG1vZHVsZSBvbiBQeXRob24g
My43OjoKIAotICAgICQgdG94IC1lIHB5MzYgLS0gdGVzdGluZy90ZXN0X2NvbmZpZy5weQorICAg
ICQgdG94IC1lIHB5MzcgLS0gdGVzdGluZy90ZXN0X2NvbmZpZy5weQogCiAKICAgIFdoZW4gY29t
bWl0dGluZywgYGBwcmUtY29tbWl0YGAgd2lsbCByZS1mb3JtYXQgdGhlIGZpbGVzIGlmIG5lY2Vz
c2FyeS4KIAorIy4gSWYgaW5zdGVhZCBvZiB1c2luZyBgYHRveGBgIHlvdSBwcmVmZXIgdG8gcnVu
IHRoZSB0ZXN0cyBkaXJlY3RseSwgdGhlbiB3ZSBzdWdnZXN0IHRvIGNyZWF0ZSBhIHZpcnR1YWwg
ZW52aXJvbm1lbnQgYW5kIHVzZQorICAgYW4gZWRpdGFibGUgaW5zdGFsbCB3aXRoIHRoZSBgYHRl
c3RpbmdgYCBleHRyYTo6CisKKyAgICAgICAkIHB5dGhvbjMgLW0gdmVudiAudmVudgorICAgICAg
ICQgc291cmNlIC52ZW52L2Jpbi9hY3RpdmF0ZSAgIyBMaW51eAorICAgICAgICQgLnZlbnYvU2Ny
aXB0cy9hY3RpdmF0ZS5iYXQgICMgV2luZG93cworICAgICAgICQgcGlwIGluc3RhbGwgLWUgIi5b
dGVzdGluZ10iCisKKyAgIEFmdGVyd2FyZHMsIHlvdSBjYW4gZWRpdCB0aGUgZmlsZXMgYW5kIHJ1
biBweXRlc3Qgbm9ybWFsbHk6OgorCisgICAgICAgJCBweXRlc3QgdGVzdGluZy90ZXN0X2NvbmZp
Zy5weQorCisKICMuIENvbW1pdCBhbmQgcHVzaCBvbmNlIHlvdXIgdGVzdHMgcGFzcyBhbmQgeW91
IGFyZSBoYXBweSB3aXRoIHlvdXIgY2hhbmdlKHMpOjoKIAogICAgICQgZ2l0IGNvbW1pdCAtYSAt
bSAiPGNvbW1pdCBtZXNzYWdlPiIKICAgICAkIGdpdCBwdXNoIC11CiAKLSMuIENyZWF0ZSBhIG5l
dyBjaGFuZ2Vsb2cgZW50cnkgaW4gYGBjaGFuZ2Vsb2dgYC4gVGhlIGZpbGUgc2hvdWxkIGJlIG5h
bWVkIGBgPGlzc3VlaWQ+Ljx0eXBlPmBgLAorIy4gQ3JlYXRlIGEgbmV3IGNoYW5nZWxvZyBlbnRy
eSBpbiBgYGNoYW5nZWxvZ2BgLiBUaGUgZmlsZSBzaG91bGQgYmUgbmFtZWQgYGA8aXNzdWVpZD4u
PHR5cGU+LnJzdGBgLAogICAgd2hlcmUgKmlzc3VlaWQqIGlzIHRoZSBudW1iZXIgb2YgdGhlIGlz
c3VlIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZSBhbmQgKnR5cGUqIGlzIG9uZSBvZgotICAgYGBidWdm
aXhgYCwgYGByZW1vdmFsYGAsIGBgZmVhdHVyZWBgLCBgYHZlbmRvcmBgLCBgYGRvY2BgIG9yIGBg
dHJpdmlhbGBgLgorICAgYGBmZWF0dXJlYGAsIGBgaW1wcm92ZW1lbnRgYCwgYGBidWdmaXhgYCwg
YGBkb2NgYCwgYGBkZXByZWNhdGlvbmBgLCBgYGJyZWFraW5nYGAsIGBgdmVuZG9yYGAKKyAgIG9y
IGBgdHJpdmlhbGBgLiBZb3UgbWF5IHNraXAgY3JlYXRpbmcgdGhlIGNoYW5nZWxvZyBlbnRyeSBp
ZiB0aGUgY2hhbmdlIGRvZXNuJ3QgYWZmZWN0IHRoZQorICAgZG9jdW1lbnRlZCBiZWhhdmlvdXIg
b2YgcHl0ZXN0LgogCiAjLiBBZGQgeW91cnNlbGYgdG8gYGBBVVRIT1JTYGAgZmlsZSBpZiBub3Qg
dGhlcmUgeWV0LCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCiAKQEAgLTI3NiwxOSArMzE5LDE2NCBA
QCBIZXJlIGlzIGEgc2ltcGxlIG92ZXJ2aWV3LCB3aXRoIHB5dGVzdC1zcGVjaWZpYyBiaXRzOgog
ICAgIGNvbXBhcmU6IHlvdXItYnJhbmNoLW5hbWUKIAogICAgIGJhc2UtZm9yazogcHl0ZXN0LWRl
di9weXRlc3QKLSAgICBiYXNlOiBtYXN0ZXIgICAgICAgICAgIyBpZiBpdCdzIGEgYnVnZml4Ci0g
ICAgYmFzZTogZmVhdHVyZXMgICAgICAgICMgaWYgaXQncyBhIGZlYXR1cmUKKyAgICBiYXNlOiBt
YXN0ZXIKKworCitXcml0aW5nIFRlc3RzCit+fn5+fn5+fn5+fn5+CisKK1dyaXRpbmcgdGVzdHMg
Zm9yIHBsdWdpbnMgb3IgZm9yIHB5dGVzdCBpdHNlbGYgaXMgb2Z0ZW4gZG9uZSB1c2luZyB0aGUg
YHRlc3RkaXIgZml4dHVyZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3JlZmVy
ZW5jZS5odG1sI3Rlc3RkaXI+YF8sIGFzIGEgImJsYWNrLWJveCIgdGVzdC4KKworRm9yIGV4YW1w
bGUsIHRvIGVuc3VyZSBhIHNpbXBsZSB0ZXN0IHBhc3NlcyB5b3UgY2FuIHdyaXRlOgorCisuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgdGVzdF90cnVlX2Fzc2VydGlvbih0ZXN0ZGly
KToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAgICAg
ICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisg
ICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMoZmFpbGVkPTAsIHBhc3NlZD0xKQogCiAKK0Fs
dGVybmF0aXZlbHksIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgY2hlY2tzIGJhc2VkIG9uIHRoZSBh
Y3R1YWwgb3V0cHV0IG9mIHRoZSB0ZXJtYWwgdXNpbmcKKypnbG9iLWxpa2UqIGV4cHJlc3Npb25z
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgdGVzdF90cnVlX2Fzc2VydGlv
bih0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIi
CisgICAgICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFs
c2UKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqYXNzZXJ0IEZh
bHNlKiIsICIqMSBmYWlsZWQqIl0pCisKK1doZW4gY2hvb3NpbmcgYSBmaWxlIHdoZXJlIHRvIHdy
aXRlIGEgbmV3IHRlc3QsIHRha2UgYSBsb29rIGF0IHRoZSBleGlzdGluZyBmaWxlcyBhbmQgc2Vl
IGlmIHRoZXJlJ3MKK29uZSBmaWxlIHdoaWNoIGxvb2tzIGxpa2UgYSBnb29kIGZpdC4gRm9yIGV4
YW1wbGUsIGEgcmVncmVzc2lvbiB0ZXN0IGFib3V0IGEgYnVnIGluIHRoZSBgYC0tbGZgYCBvcHRp
b24KK3Nob3VsZCBnbyBpbnRvIGBgdGVzdF9jYWNoZXByb3ZpZGVyLnB5YGAsIGdpdmVuIHRoYXQg
dGhpcyBvcHRpb24gaXMgaW1wbGVtZW50ZWQgaW4gYGBjYWNoZXByb3ZpZGVyLnB5YGAuCitJZiBp
biBkb3VidCwgZ28gYWhlYWQgYW5kIG9wZW4gYSBQUiB3aXRoIHlvdXIgYmVzdCBndWVzcyBhbmQg
d2UgY2FuIGRpc2N1c3MgdGhpcyBvdmVyIHRoZSBjb2RlLgorCiBKb2luaW5nIHRoZSBEZXZlbG9w
bWVudCBUZWFtCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEFueW9uZSB3aG8gaGFz
IHN1Y2Nlc3NmdWxseSBzZWVuIHRocm91Z2ggYSBwdWxsIHJlcXVlc3Qgd2hpY2ggZGlkIG5vdAog
cmVxdWlyZSBhbnkgZXh0cmEgd29yayBmcm9tIHRoZSBkZXZlbG9wbWVudCB0ZWFtIHRvIG1lcmdl
IHdpbGwKIHRoZW1zZWx2ZXMgZ2FpbiBjb21taXQgYWNjZXNzIGlmIHRoZXkgc28gd2lzaCAoaWYg
d2UgZm9yZ2V0IHRvIGFzayBwbGVhc2Ugc2VuZCBhIGZyaWVuZGx5Ci1yZW1pbmRlcikuICBUaGlz
IGRvZXMgbm90IG1lYW4geW91ciB3b3JrZmxvdyB0byBjb250cmlidXRlIGNoYW5nZXMsCityZW1p
bmRlcikuICBUaGlzIGRvZXMgbm90IG1lYW4gdGhlcmUgaXMgYW55IGNoYW5nZSBpbiB5b3VyIGNv
bnRyaWJ1dGlvbiB3b3JrZmxvdzoKIGV2ZXJ5b25lIGdvZXMgdGhyb3VnaCB0aGUgc2FtZSBwdWxs
LXJlcXVlc3QtYW5kLXJldmlldyBwcm9jZXNzIGFuZAogbm8tb25lIG1lcmdlcyB0aGVpciBvd24g
cHVsbCByZXF1ZXN0cyB1bmxlc3MgYWxyZWFkeSBhcHByb3ZlZC4gIEl0IGRvZXMgaG93ZXZlciBt
ZWFuIHlvdSBjYW4KIHBhcnRpY2lwYXRlIGluIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIG1vcmUg
ZnVsbHkgc2luY2UgeW91IGNhbiBtZXJnZQogcHVsbCByZXF1ZXN0cyBmcm9tIG90aGVyIGNvbnRy
aWJ1dG9ycyB5b3Vyc2VsZiBhZnRlciBoYXZpbmcgcmV2aWV3ZWQKIHRoZW0uCisKKworQmFja3Bv
cnRpbmcgYnVnIGZpeGVzIGZvciB0aGUgbmV4dCBwYXRjaCByZWxlYXNlCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0ZXN0IG1ha2VzIGZlYXR1
cmUgcmVsZWFzZSBldmVyeSBmZXcgd2Vla3Mgb3IgbW9udGhzLiBJbiBiZXR3ZWVuLCBwYXRjaCBy
ZWxlYXNlcworYXJlIG1hZGUgdG8gdGhlIHByZXZpb3VzIGZlYXR1cmUgcmVsZWFzZSwgY29udGFp
bmluZyBidWcgZml4ZXMgb25seS4gVGhlIGJ1ZyBmaXhlcwordXN1YWxseSBmaXggcmVncmVzc2lv
bnMsIGJ1dCBtYXkgYmUgYW55IGNoYW5nZSB0aGF0IHNob3VsZCByZWFjaCB1c2VycyBiZWZvcmUg
dGhlCituZXh0IGZlYXR1cmUgcmVsZWFzZS4KKworU3VwcG9zZSBmb3IgZXhhbXBsZSB0aGF0IHRo
ZSBsYXRlc3QgcmVsZWFzZSB3YXMgMS4yLjMsIGFuZCB5b3Ugd2FudCB0byBpbmNsdWRlCithIGJ1
ZyBmaXggaW4gMS4yLjQgKGNoZWNrIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9yZWxlYXNlcyBmb3IgdGhlCithY3R1YWwgbGF0ZXN0IHJlbGVhc2UpLiBUaGUgcHJvY2VkdXJl
IGZvciB0aGlzIGlzOgorCisjLiBGaXJzdCwgbWFrZSBzdXJlIHRoZSBidWcgaXMgZml4ZWQgdGhl
IGBgbWFzdGVyYGAgYnJhbmNoLCB3aXRoIGEgcmVndWxhciBwdWxsCisgICByZXF1ZXN0LCBhcyBk
ZXNjcmliZWQgYWJvdmUuIEFuIGV4Y2VwdGlvbiB0byB0aGlzIGlzIGlmIHRoZSBidWcgZml4IGlz
IG5vdAorICAgYXBwbGljYWJsZSB0byBgYG1hc3RlcmBgIGFueW1vcmUuCisKKyMuIGBgZ2l0IGNo
ZWNrb3V0IG9yaWdpbi8xLjIueCAtYiBiYWNrcG9ydC1YWFhYYGAgIyB1c2UgdGhlIG1hc3RlciBQ
UiBudW1iZXIgaGVyZQorCisjLiBMb2NhdGUgdGhlIG1lcmdlIGNvbW1pdCBvbiB0aGUgUFIsIGlu
IHRoZSAqbWVyZ2VkKiBtZXNzYWdlLCBmb3IgZXhhbXBsZToKKworICAgIG5pY29kZGVtdXMgbWVy
Z2VkIGNvbW1pdCAwZjhiNDYyIGludG8gcHl0ZXN0LWRldjptYXN0ZXIKKworIy4gYGBnaXQgY2hl
cnJ5LXBpY2sgLXggLW0xIFJFVklTSU9OYGAgIyB1c2UgdGhlIHJldmlzaW9uIHlvdSBmb3VuZCBh
Ym92ZSAoYGAwZjhiNDYyYGApLgorCisjLiBPcGVuIGEgUFIgdGFyZ2V0aW5nIGBgMS4yLnhgYDoK
KworICAgKiBQcmVmaXggdGhlIG1lc3NhZ2Ugd2l0aCBgYFsxLjIueF1gYC4KKyAgICogRGVsZXRl
IHRoZSBQUiBib2R5LCBpdCB1c3VhbGx5IGNvbnRhaW5zIGEgZHVwbGljYXRlIGNvbW1pdCBtZXNz
YWdlLgorCisKK1dobyBkb2VzIHRoZSBiYWNrcG9ydGluZworfn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+CisKK0FzIG1lbnRpb25lZCBhYm92ZSwgYnVncyBzaG91bGQgZmlyc3QgYmUgZml4ZWQgb24g
YGBtYXN0ZXJgYCAoZXhjZXB0IGluIHJhcmUgb2NjYXNpb25zCit0aGF0IGEgYnVnIG9ubHkgaGFw
cGVucyBpbiBhIHByZXZpb3VzIHJlbGVhc2UpLiBTbyB3aG8gc2hvdWxkIGRvIHRoZSBiYWNrcG9y
dCBwcm9jZWR1cmUgZGVzY3JpYmVkCithYm92ZT8KKworMS4gSWYgdGhlIGJ1ZyB3YXMgZml4ZWQg
YnkgYSBjb3JlIGRldmVsb3BlciwgaXQgaXMgdGhlIG1haW4gcmVzcG9uc2liaWxpdHkgb2YgdGhh
dCBjb3JlIGRldmVsb3BlcgorICAgdG8gZG8gdGhlIGJhY2twb3J0LgorMi4gSG93ZXZlciwgb2Z0
ZW4gdGhlIG1lcmdlIGlzIGRvbmUgYnkgYW5vdGhlciBtYWludGFpbmVyLCBpbiB3aGljaCBjYXNl
IGl0IGlzIG5pY2Ugb2YgdGhlbSB0bworICAgZG8gdGhlIGJhY2twb3J0IHByb2NlZHVyZSBpZiB0
aGV5IGhhdmUgdGhlIHRpbWUuCiszLiBGb3IgYnVncyBzdWJtaXR0ZWQgYnkgbm9uLW1haW50YWlu
ZXJzLCBpdCBpcyBleHBlY3RlZCB0aGF0IGEgY29yZSBkZXZlbG9wZXIgd2lsbCB0byBkbworICAg
dGhlIGJhY2twb3J0LCBub3JtYWxseSB0aGUgb25lIHRoYXQgbWVyZ2VkIHRoZSBQUiBvbiBgYG1h
c3RlcmBgLgorNC4gSWYgYSBub24tbWFpbnRhaW5lcnMgbm90aWNlcyBhIGJ1ZyB3aGljaCBpcyBm
aXhlZCBvbiBgYG1hc3RlcmBgIGJ1dCBoYXMgbm90IGJlZW4gYmFja3BvcnRlZAorICAgKGR1ZSB0
byBtYWludGFpbmVycyBmb3JnZXR0aW5nIHRvIGFwcGx5IHRoZSAqbmVlZHMgYmFja3BvcnQqIGxh
YmVsLCBvciBqdXN0IHBsYWluIG1pc3NpbmcgaXQpLAorICAgdGhleSBhcmUgYWxzbyB3ZWxjb21l
IHRvIG9wZW4gYSBQUiB3aXRoIHRoZSBiYWNrcG9ydC4gVGhlIHByb2NlZHVyZSBpcyBzaW1wbGUg
YW5kIHJlYWxseQorICAgaGVscHMgd2l0aCB0aGUgbWFpbnRlbmFuY2Ugb2YgdGhlIHByb2plY3Qu
CisKK0FsbCB0aGUgYWJvdmUgYXJlIG5vdCBydWxlcywgYnV0IG1lcmVseSBzb21lIGd1aWRlbGlu
ZXMvc3VnZ2VzdGlvbnMgb24gd2hhdCB3ZSBzaG91bGQgZXhwZWN0CithYm91dCBiYWNrcG9ydHMu
CisKK0hhbmRsaW5nIHN0YWxlIGlzc3Vlcy9QUnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworU3RhbGUgaXNzdWVzL1BScyBhcmUgdGhvc2Ugd2hlcmUgcHl0ZXN0IGNvbnRyaWJ1dG9ycyBo
YXZlIGFza2VkIGZvciBxdWVzdGlvbnMvY2hhbmdlcworYW5kIHRoZSBhdXRob3JzIGRpZG4ndCBn
ZXQgYXJvdW5kIHRvIGFuc3dlci9pbXBsZW1lbnQgdGhlbSB5ZXQgYWZ0ZXIgYSBzb21ld2hhdCBs
b25nIHRpbWUsIG9yCit0aGUgZGlzY3Vzc2lvbiBzaW1wbHkgZGllZCBiZWNhdXNlIHBlb3BsZSBz
ZWVtZWQgdG8gbG9zZSBpbnRlcmVzdC4KKworVGhlcmUgYXJlIG1hbnkgcmVhc29ucyB3aHkgcGVv
cGxlIGRvbid0IGFuc3dlciBxdWVzdGlvbnMgb3IgaW1wbGVtZW50IHJlcXVlc3RlZCBjaGFuZ2Vz
OgordGhleSBtaWdodCBnZXQgYnVzeSwgbG9zZSBpbnRlcmVzdCwgb3IganVzdCBmb3JnZXQgYWJv
dXQgaXQsCitidXQgdGhlIGZhY3QgaXMgdGhhdCB0aGlzIGlzIHZlcnkgY29tbW9uIGluIG9wZW4g
c291cmNlIHNvZnR3YXJlLgorCitUaGUgcHl0ZXN0IHRlYW0gcmVhbGx5IGFwcHJlY2lhdGVzIGV2
ZXJ5IGlzc3VlIGFuZCBwdWxsIHJlcXVlc3QsIGJ1dCBiZWluZyBhIGhpZ2gtdm9sdW1lIHByb2pl
Y3QKK3dpdGggbWFueSBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgYmVpbmcgc3VibWl0dGVkIGRh
aWx5LCB3ZSB0cnkgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc3RhbGUKK2lzc3VlcyBhbmQgUFJz
IGJ5IHJlZ3VsYXJseSBjbG9zaW5nIHRoZW0uIFdoZW4gYW4gaXNzdWUvcHVsbCByZXF1ZXN0IGlz
IGNsb3NlZCBpbiB0aGlzIG1hbm5lciwKK2l0IGlzIGJ5IG5vIG1lYW5zIGEgZGlzbWlzc2FsIG9m
IHRoZSB0b3BpYyBiZWluZyB0YWNrbGVkIGJ5IHRoZSBpc3N1ZS9wdWxsIHJlcXVlc3QsIGJ1dCBp
dAoraXMganVzdCBhIHdheSBmb3IgdXMgdG8gY2xlYXIgdXAgdGhlIHF1ZXVlIGFuZCBtYWtlIHRo
ZSBtYWludGFpbmVycycgd29yayBtb3JlIG1hbmFnZWFibGUuIFN1Ym1pdHRlcnMKK2NhbiBhbHdh
eXMgcmVvcGVuIHRoZSBpc3N1ZS9wdWxsIHJlcXVlc3QgaW4gdGhlaXIgb3duIHRpbWUgbGF0ZXIg
aWYgaXQgbWFrZXMgc2Vuc2UuCisKK1doZW4gdG8gY2xvc2UKK35+fn5+fn5+fn5+fn4KKworSGVy
ZSBhcmUgYSBmZXcgZ2VuZXJhbCBydWxlcyB0aGUgbWFpbnRhaW5lcnMgdXNlIHRvIGRlY2lkZSB3
aGVuIHRvIGNsb3NlIGlzc3Vlcy9QUnMgYmVjYXVzZQorb2YgbGFjayBvZiBpbmFjdGl2aXR5Ogor
CisqIElzc3VlcyBsYWJlbGVkIGBgcXVlc3Rpb25gYCBvciBgYG5lZWRzIGluZm9ybWF0aW9uYGA6
IGNsb3NlZCBhZnRlciAxNCBkYXlzIGluYWN0aXZlLgorKiBJc3N1ZXMgbGFiZWxlZCBgYHByb3Bv
c2FsYGA6IGNsb3NlZCBhZnRlciBzaXggbW9udGhzIGluYWN0aXZlLgorKiBQdWxsIHJlcXVlc3Rz
OiBhZnRlciBvbmUgbW9udGgsIGNvbnNpZGVyIHBpbmdpbmcgdGhlIGF1dGhvciwgdXBkYXRlIGxp
bmtlZCBpc3N1ZSwgb3IgY29uc2lkZXIgY2xvc2luZy4gRm9yIHB1bGwgcmVxdWVzdHMgd2hpY2gg
YXJlIG5lYXJseSBmaW5pc2hlZCwgdGhlIHRlYW0gc2hvdWxkIGNvbnNpZGVyIGZpbmlzaGluZyBp
dCB1cCBhbmQgbWVyZ2luZyBpdC4KKworVGhlIGFib3ZlIGFyZSAqKm5vdCBoYXJkIHJ1bGVzKios
IGJ1dCBtZXJlbHkgKipndWlkZWxpbmVzKiosIGFuZCBjYW4gYmUgKGFuZCBvZnRlbiBhcmUhKSBy
ZXZpZXdlZCBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcy4KKworQ2xvc2luZyBwdWxsIHJlcXVlc3Rz
Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworV2hlbiBjbG9zaW5nIGEgUHVsbCBSZXF1ZXN0LCBp
dCBuZWVkcyB0byBiZSBhY2tub3dsZWRnZSB0aGUgdGltZSwgZWZmb3J0LCBhbmQgaW50ZXJlc3Qg
ZGVtb25zdHJhdGVkIGJ5IHRoZSBwZXJzb24gd2hpY2ggc3VibWl0dGVkIGl0LiBBcyBtZW50aW9u
ZWQgcHJldmlvdXNseSwgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhlIHRlYW0gdG8gZGlzbWlz
cyBzdGFsbGVkIHB1bGwgcmVxdWVzdCBlbnRpcmVseSBidXQgdG8gbWVyZWx5IHRvIGNsZWFyIHVw
IG91ciBxdWV1ZSwgc28gYSBtZXNzYWdlIGxpa2UgdGhlIG9uZSBiZWxvdyBpcyB3YXJyYW50ZWQg
d2hlbiBjbG9zaW5nIGEgcHVsbCByZXF1ZXN0IHRoYXQgd2VudCBzdGFsZToKKworICAgIEhpIDxj
b250cmlidXRvcj4sCisKKyAgICBGaXJzdCBvZiBhbGwgd2Ugd291bGQgbGlrZSB0byB0aGFuayB5
b3UgZm9yIHlvdXIgdGltZSBhbmQgZWZmb3J0IG9uIHdvcmtpbmcgb24gdGhpcywgdGhlIHB5dGVz
dCB0ZWFtIGRlZXBseSBhcHByZWNpYXRlcyBpdC4KKworICAgIFdlIG5vdGljZWQgaXQgaGFzIGJl
ZW4gYXdoaWxlIHNpbmNlIHlvdSBoYXZlIHVwZGF0ZWQgdGhpcyBQUiwgaG93ZXZlci4gcHl0ZXN0
IGlzIGEgaGlnaCBhY3Rpdml0eSBwcm9qZWN0LCB3aXRoIG1hbnkgaXNzdWVzL1BScyBiZWluZyBv
cGVuZWQgZGFpbHksIHNvIGl0IGlzIGhhcmQgZm9yIHVzIG1haW50YWluZXJzIHRvIHRyYWNrIHdo
aWNoIFBScyBhcmUgcmVhZHkgZm9yIG1lcmdpbmcsIGZvciByZXZpZXcsIG9yIG5lZWQgbW9yZSBh
dHRlbnRpb24uCisKKyAgICBTbyBmb3IgdGhvc2UgcmVhc29ucyB3ZSB0aGluayBpdCBpcyBiZXN0
IHRvIGNsb3NlIHRoZSBQUiBmb3Igbm93LCBidXQgd2l0aCB0aGUgb25seSBpbnRlbnRpb24gdG8g
Y2xlYW51cCBvdXIgcXVldWUsIGl0IGlzIGJ5IG5vIG1lYW5zIGEgcmVqZWN0aW9uIG9mIHlvdXIg
Y2hhbmdlcy4gV2Ugc3RpbGwgZW5jb3VyYWdlIHlvdSB0byByZS1vcGVuIHRoaXMgUFIgKGl0IGlz
IGp1c3QgYSBjbGljayBvZiBhIGJ1dHRvbiBhd2F5KSB3aGVuIHlvdSBhcmUgcmVhZHkgdG8gZ2V0
IGJhY2sgdG8gaXQuCisKKyAgICBBZ2FpbiB3ZSBhcHByZWNpYXRlIHlvdXIgdGltZSBmb3Igd29y
a2luZyBvbiB0aGlzLCBhbmQgaG9wZSB5b3UgbWlnaHQgZ2V0IGJhY2sgdG8gdGhpcyBhdCBhIGxh
dGVyIHRpbWUhCisKKyAgICA8YnllPgorCitDbG9zaW5nIElzc3VlcworLS0tLS0tLS0tLS0tLS0K
KworV2hlbiBhIHB1bGwgcmVxdWVzdCBpcyBzdWJtaXR0ZWQgdG8gZml4IGFuIGlzc3VlLCBhZGQg
dGV4dCBsaWtlIGBgY2xvc2VzICNYWVpXYGAgdG8gdGhlIFBSIGRlc2NyaXB0aW9uIGFuZC9vciBj
b21taXRzICh3aGVyZSBgYFhZWldgYCBpcyB0aGUgaXNzdWUgbnVtYmVyKS4gU2VlIHRoZSBgR2l0
SHViIGRvY3MgPGh0dHBzOi8vaGVscC5naXRodWIuY29tL2VuL2dpdGh1Yi9tYW5hZ2luZy15b3Vy
LXdvcmstb24tZ2l0aHViL2xpbmtpbmctYS1wdWxsLXJlcXVlc3QtdG8tYW4taXNzdWUjbGlua2lu
Zy1hLXB1bGwtcmVxdWVzdC10by1hbi1pc3N1ZS11c2luZy1hLWtleXdvcmQ+YF8gZm9yIG1vcmUg
aW5mb3JtYXRpb24uCisKK1doZW4gYW4gaXNzdWUgaXMgZHVlIHRvIHVzZXIgZXJyb3IgKGUuZy4g
bWlzdW5kZXJzdGFuZGluZyBvZiBhIGZ1bmN0aW9uYWxpdHkpLCBwbGVhc2UgcG9saXRlbHkgZXhw
bGFpbiB0byB0aGUgdXNlciB3aHkgdGhlIGlzc3VlIHJhaXNlZCBpcyByZWFsbHkgYSBub24taXNz
dWUgYW5kIGFzayB0aGVtIHRvIGNsb3NlIHRoZSBpc3N1ZSBpZiB0aGV5IGhhdmUgbm8gZnVydGhl
ciBxdWVzdGlvbnMuIElmIHRoZSBvcmlnaW5hbCByZXF1ZXN0b3IgaXMgdW5yZXNwb25zaXZlLCB0
aGUgaXNzdWUgd2lsbCBiZSBoYW5kbGVkIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBgSGFu
ZGxpbmcgc3RhbGUgaXNzdWVzL1BSc2BfIGFib3ZlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
SE9XVE9SRUxFQVNFLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0hPV1RPUkVMRUFTRS5yc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YmRkZjcyMDJiMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L0hPV1RPUkVMRUFTRS5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci1SZWxlYXNlIFByb2NlZHVyZQotLS0tLS0tLS0tLS0tLS0tLS0KLQotT3VyIGN1cnJlbnQgcG9s
aWN5IGZvciByZWxlYXNpbmcgaXMgdG8gYWltIGZvciBhIGJ1Z2ZpeCBldmVyeSBmZXcgd2Vla3Mg
YW5kIGEgbWlub3IgcmVsZWFzZSBldmVyeSAyLTMgbW9udGhzLiBUaGUgaWRlYQotaXMgdG8gZ2V0
IGZpeGVzIGFuZCBuZXcgZmVhdHVyZXMgb3V0IGluc3RlYWQgb2YgdHJ5aW5nIHRvIGNyYW0gYSB0
b24gb2YgZmVhdHVyZXMgaW50byBhIHJlbGVhc2UgYW5kIGJ5IGNvbnNlcXVlbmNlCi10YWtpbmcg
YSBsb3Qgb2YgdGltZSB0byBtYWtlIGEgbmV3IG9uZS4KLQotLi4gaW1wb3J0YW50OjoKLQotICAg
IHB5dGVzdCByZWxlYXNlcyBtdXN0IGJlIHByZXBhcmVkIG9uICoqTGludXgqKiBiZWNhdXNlIHRo
ZSBkb2NzIGFuZCBleGFtcGxlcyBleHBlY3QKLSAgICB0byBiZSBleGVjdXRlZCBpbiB0aGF0IHBs
YXRmb3JtLgotCi0jLiBJbnN0YWxsIGRldmVsb3BtZW50IGRlcGVuZGVuY2llcyBpbiBhIHZpcnR1
YWwgZW52aXJvbm1lbnQgd2l0aDo6Ci0KLSAgICBwaXAzIGluc3RhbGwgLVUgLXIgdGFza3MvcmVx
dWlyZW1lbnRzLnR4dAotCi0jLiBDcmVhdGUgYSBicmFuY2ggYGByZWxlYXNlLVguWS5aYGAgd2l0
aCB0aGUgdmVyc2lvbiBmb3IgdGhlIHJlbGVhc2UuCi0KLSAgICogKipwYXRjaCByZWxlYXNlcyoq
OiBmcm9tIHRoZSBsYXRlc3QgYGBtYXN0ZXJgYDsKLQotICAgKiAqKm1pbm9yIHJlbGVhc2VzKio6
IGZyb20gdGhlIGxhdGVzdCBgYGZlYXR1cmVzYGA7IHRoZW4gbWVyZ2Ugd2l0aCB0aGUgbGF0ZXN0
IGBgbWFzdGVyYGA7Ci0KLSAgIEVuc3VyZSB5b3VyIGFyZSBpbiBhIGNsZWFuIHdvcmsgdHJlZS4K
LQotIy4gR2VuZXJhdGUgZG9jcywgY2hhbmdlbG9nLCBhbm5vdW5jZW1lbnRzIGFuZCBhICoqbG9j
YWwqKiB0YWc6OgotCi0gICAgIGludm9rZSBnZW5lcmF0ZS5wcmUtcmVsZWFzZSA8VkVSU0lPTj4K
LQotIy4gT3BlbiBhIFBSIGZvciB0aGlzIGJyYW5jaCB0YXJnZXRpbmcgYGBtYXN0ZXJgYC4KLQot
Iy4gQWZ0ZXIgYWxsIHRlc3RzIHBhc3MgYW5kIHRoZSBQUiBoYXMgYmVlbiBhcHByb3ZlZCwgcHVi
bGlzaCB0byBQeVBJIGJ5IHB1c2hpbmcgdGhlIHRhZzo6Ci0KLSAgICAgZ2l0IHB1c2ggZ2l0QGdp
dGh1Yi5jb206cHl0ZXN0LWRldi9weXRlc3QuZ2l0IDxWRVJTSU9OPgotCi0gICBXYWl0IGZvciB0
aGUgZGVwbG95IHRvIGNvbXBsZXRlLCB0aGVuIG1ha2Ugc3VyZSBpdCBpcyBgYXZhaWxhYmxlIG9u
IFB5UEkgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3Q+YF8uCi0KLSMuIFNlbmQgYW4g
ZW1haWwgYW5ub3VuY2VtZW50IHdpdGggdGhlIGNvbnRlbnRzIGZyb206OgotCi0gICAgIGRvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTxWRVJTSU9OPi5yc3QKLQotICAgVG8gdGhlIGZvbGxvd2luZyBt
YWlsaW5nIGxpc3RzOgotCi0gICAqIHB5dGVzdC1kZXZAcHl0aG9uLm9yZyAoYWxsIHJlbGVhc2Vz
KQotICAgKiBweXRob24tYW5ub3VuY2UtbGlzdEBweXRob24ub3JnIChhbGwgcmVsZWFzZXMpCi0g
ICAqIHRlc3RpbmctaW4tcHl0aG9uQGxpc3RzLmlkeWxsLm9yZyAob25seSBtYWpvci9taW5vciBy
ZWxlYXNlcykKLQotICAgQW5kIGFubm91bmNlIGl0IG9uIGBUd2l0dGVyIDxodHRwczovL3R3aXR0
ZXIuY29tLz5gXyB3aXRoIHRoZSBgYCNweXRlc3RgYCBoYXNodGFnLgotCi0jLiBBZnRlciBhIG1p
bm9yL21ham9yIHJlbGVhc2UsIG1lcmdlIGBgcmVsZWFzZS1YLlkuWmBgIGludG8gYGBtYXN0ZXJg
YCBhbmQgcHVzaCAob3Igb3BlbiBhIFBSKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0xJQ0VO
U0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9MSUNFTlNFCmluZGV4IDYyOWRmNDVhYzQwNS4uZDE0ZmI3ZmY0YjM0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9MSUNFTlNFCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0xJQ0VO
U0UKQEAgLTEsNiArMSw2IEBACiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKIAotQ29weXJpZ2h0IChj
KSAyMDA0LTIwMTcgSG9sZ2VyIEtyZWtlbCBhbmQgb3RoZXJzCitDb3B5cmlnaHQgKGMpIDIwMDQt
MjAyMCBIb2xnZXIgS3Jla2VsIGFuZCBvdGhlcnMKIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgog
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwgaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L09QRU5DT0xMRUNU
SVZFLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L09QRU5DT0xMRUNUSVZFLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhjMWM5MDI4MWU0NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L09QRU5DT0xMRUNUSVZFLnJzdApAQCAtMCwwICsxLDQ0IEBACis9PT09PT09
PT09PT09PQorT3BlbkNvbGxlY3RpdmUKKz09PT09PT09PT09PT09CisKK3B5dGVzdCBoYXMgYSBj
b2xsZWN0aXZlIHNldHVwIGF0IGBPcGVuQ29sbGVjdGl2ZWBfLiBUaGlzIGRvY3VtZW50IGRlc2Ny
aWJlcyBob3cgdGhlIGNvcmUgdGVhbSBtYW5hZ2VzCitPcGVuQ29sbGVjdGl2ZS1yZWxhdGVkIGFj
dGl2aXRpZXMuCisKK1doYXQgaXMgaXQKKz09PT09PT09PT0KKworT3BlbiBDb2xsZWN0aXZlIGlz
IGFuIG9ubGluZSBmdW5kaW5nIHBsYXRmb3JtIGZvciBvcGVuIGFuZCB0cmFuc3BhcmVudCBjb21t
dW5pdGllcy4KK0l0IHByb3ZpZGVzIHRvb2xzIHRvIHJhaXNlIG1vbmV5IGFuZCBzaGFyZSB5b3Vy
IGZpbmFuY2VzIGluIGZ1bGwgdHJhbnNwYXJlbmN5LgorCitJdCBpcyB0aGUgcGxhdGZvcm0gb2Yg
Y2hvaWNlIGZvciBpbmRpdmlkdWFscyBhbmQgY29tcGFuaWVzIHRoYXQgd2FudCB0byBtYWtlIG9u
ZS10aW1lIG9yCittb250aGx5IGRvbmF0aW9ucyBkaXJlY3RseSB0byB0aGUgcHJvamVjdC4KKwor
RnVuZHMKKz09PT09CisKK1RoZSBPcGVuQ29sbGVjdGl2ZSBmdW5kcyBkb25hdGVkIHRvIHB5dGVz
dCB3aWxsIGJlIHVzZWQgdG8gZnVuZCBvdmVyYWxsIG1haW50ZW5hbmNlLAorbG9jYWwgc3ByaW50
cywgbWVyY2hhbmRpc2luZyAoc3RpY2tlcnMgdG8gZGlzdHJpYnV0ZSBpbiBjb25mZXJlbmNlcyBm
b3IgZXhhbXBsZSksIGFuZCBmdXR1cmUKK2dhdGhlcmluZ3Mgb2YgcHl0ZXN0IGRldmVsb3BlcnMg
KHNwcmludHMpLgorCitgQ29yZSBjb250cmlidXRvcnNgXyB3aGljaCBhcmUgY29udHJpYnV0aW5n
IG9uIGEgY29udGludW91cyBiYXNpcyBhcmUgZnJlZSB0byBzdWJtaXQgaW52b2ljZXMKK3RvIGJp
bGwgbWFpbnRlbmFuY2UgaG91cnMgdXNpbmcgdGhlIHBsYXRmb3JtLiBIb3cgbXVjaCBlYWNoIGNv
bnRyaWJ1dG9yIHNob3VsZCByZXF1ZXN0IGlzIHN0aWxsIGFuCitvcGVuIHF1ZXN0aW9uLCBidXQg
d2Ugc2hvdWxkIHVzZSBjb21tb24gc2Vuc2UgYW5kIHRydXN0IGluIHRoZSBjb250cmlidXRvcnMs
IG1vc3Qgb2Ygd2hpY2gga25vdwordGhlbXNlbHZlcyBpbi1wZXJzb24uIEEgZ29vZCBydWxlIG9m
IHRodW1iIGlzIHRvIGJpbGwgdGhlIHNhbWUgYW1vdW50IGFzIG1vbnRobHkgcGF5bWVudHMKK2Nv
bnRyaWJ1dG9ycyB3aGljaCBwYXJ0aWNpcGF0ZSBpbiB0aGUgYFRpZGVsaWZ0YF8gc3Vic2NyaXB0
aW9uLiBJZiBpbiBkb3VidCwganVzdCBhc2suCisKK0FkbWlucworPT09PT09CisKK0EgZmV3IHBl
b3BsZSBoYXZlIGFkbWluIGFjY2VzcyB0byB0aGUgT3BlbkNvbGxlY3RpdmUgZGFzaGJvYXJkIHRv
IG1ha2UgY2hhbmdlcy4gVGhvc2UgcGVvcGxlCithcmUgcGFydCBvZiB0aGUgYEBweXRlc3QtZGV2
L29wZW5jb2xsZWN0aXZlLWFkbWluc2BfIHRlYW0uCisKK2BDb3JlIGNvbnRyaWJ1dG9yc2BfIGlu
dGVyZXN0ZWQgaW4gaGVscGluZyBvdXQgd2l0aCBPcGVuQ29sbGVjdGl2ZSBtYWludGVuYW5jZSBh
cmUgd2VsY29tZSEgV2UgZG9uJ3QKK2V4cGVjdCBtdWNoIHdvcmsgaGVyZSBvdGhlciB0aGFuIHRo
ZSBvY2Nhc2lvbmFsIGFwcHJvdmFsIG9mIGV4cGVuc2VzIGZyb20gb3RoZXIgY29yZSBjb250cmli
dXRvcnMuCitKdXN0IGRyb3AgYSBsaW5lIHRvIG9uZSBvZiB0aGUgYEBweXRlc3QtZGV2L29wZW5j
b2xsZWN0aXZlLWFkbWluc2BfIG9yIHVzZSB0aGUgbWFpbGluZyBsaXN0LgorCisKKy4uIF9gT3Bl
bkNvbGxlY3RpdmVgOiBodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9weXRlc3QKKy4uIF9gVGlk
ZWxpZnRgOiBodHRwczovL3RpZGVsaWZ0LmNvbQorLi4gX2Bjb3JlIGNvbnRyaWJ1dG9yc2A6IGh0
dHBzOi8vZ2l0aHViLmNvbS9vcmdzL3B5dGVzdC1kZXYvdGVhbXMvY29yZS9tZW1iZXJzCisuLiBf
YEBweXRlc3QtZGV2L29wZW5jb2xsZWN0aXZlLWFkbWluc2A6IGh0dHBzOi8vZ2l0aHViLmNvbS9v
cmdzL3B5dGVzdC1kZXYvdGVhbXMvb3BlbmNvbGxlY3RpdmUtYWRtaW5zL21lbWJlcnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvUEtHLUlORk8KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YTM4N2JmYWYyYzAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9QS0ctSU5GTwpAQCAtMCwwICsxLDE5MiBAQAorTWV0YWRh
dGEtVmVyc2lvbjogMi4xCitOYW1lOiBweXRlc3QKK1ZlcnNpb246IDYuMS4xCitTdW1tYXJ5OiBw
eXRlc3Q6IHNpbXBsZSBwb3dlcmZ1bCB0ZXN0aW5nIHdpdGggUHl0aG9uCitIb21lLXBhZ2U6IGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC8KK0F1dGhvcjogSG9sZ2VyIEtyZWtlbCwg
QnJ1bm8gT2xpdmVpcmEsIFJvbm55IFBmYW5uc2NobWlkdCwgRmxvcmlzIEJydXlub29naGUsIEJy
aWFubmEgTGF1Z2hlciwgRmxvcmlhbiBCcnVoaW4gYW5kIG90aGVycworTGljZW5zZTogTUlUCitQ
cm9qZWN0LVVSTDogU291cmNlLCBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QK
K1Byb2plY3QtVVJMOiBUcmFja2VyLCBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzCitEZXNjcmlwdGlvbjogLi4gaW1hZ2U6OiBodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvX3N0YXRpYy9weXRlc3QxLnBuZworICAgICAgICAgICA6dGFyZ2V0OiBodHRw
czovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvCisgICAgICAgICAgIDphbGlnbjogY2VudGVy
CisgICAgICAgICAgIDphbHQ6IHB5dGVzdAorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIC0t
LS0tLQorICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlv
L3B5cGkvdi9weXRlc3Quc3ZnCisgICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkub3Jn
L3Byb2plY3QvcHl0ZXN0LworICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL2lt
Zy5zaGllbGRzLmlvL2NvbmRhL3ZuL2NvbmRhLWZvcmdlL3B5dGVzdC5zdmcKKyAgICAgICAgICAg
IDp0YXJnZXQ6IGh0dHBzOi8vYW5hY29uZGEub3JnL2NvbmRhLWZvcmdlL3B5dGVzdAorICAgICAg
ICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJz
aW9ucy9weXRlc3Quc3ZnCisgICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkub3JnL3By
b2plY3QvcHl0ZXN0LworICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL2NvZGVj
b3YuaW8vZ2gvcHl0ZXN0LWRldi9weXRlc3QvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcK
KyAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNvdi5pby9naC9weXRlc3QtZGV2L3B5
dGVzdAorICAgICAgICAgICAgOmFsdDogQ29kZSBjb3ZlcmFnZSBTdGF0dXMKKyAgICAgICAgCisg
ICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3B5dGVzdC1kZXYvcHl0ZXN0
LnN2Zz9icmFuY2g9bWFzdGVyCisgICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1j
aS5vcmcvcHl0ZXN0LWRldi9weXRlc3QKKyAgICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3dvcmtmbG93cy9tYWluL2JhZGdlLnN2
ZworICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FtYWluCisgICAgICAgIAorICAgICAgICAuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAw
MDAwMC5zdmcKKyAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxh
Y2sKKyAgICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly93d3cuY29kZXRyaWFnZS5j
b20vcHl0ZXN0LWRldi9weXRlc3QvYmFkZ2VzL3VzZXJzLnN2ZworICAgICAgICAgICAgOnRhcmdl
dDogaHR0cHM6Ly93d3cuY29kZXRyaWFnZS5jb20vcHl0ZXN0LWRldi9weXRlc3QKKyAgICAgICAg
CisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvcHl0
ZXN0L2JhZGdlLz92ZXJzaW9uPWxhdGVzdAorICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9w
eXRlc3QucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lz9iYWRnZT1sYXRlc3QKKyAgICAgICAgICAg
IDphbHQ6IERvY3VtZW50YXRpb24gU3RhdHVzCisgICAgICAgIAorICAgICAgICBUaGUgYGBweXRl
c3RgYCBmcmFtZXdvcmsgbWFrZXMgaXQgZWFzeSB0byB3cml0ZSBzbWFsbCB0ZXN0cywgeWV0Cisg
ICAgICAgIHNjYWxlcyB0byBzdXBwb3J0IGNvbXBsZXggZnVuY3Rpb25hbCB0ZXN0aW5nIGZvciBh
cHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcy4KKyAgICAgICAgCisgICAgICAgIEFuIGV4YW1wbGUg
b2YgYSBzaW1wbGUgdGVzdDoKKyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRo
b24KKyAgICAgICAgCisgICAgICAgICAgICAjIGNvbnRlbnQgb2YgdGVzdF9zYW1wbGUucHkKKyAg
ICAgICAgICAgIGRlZiBpbmMoeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKyAxCisgICAg
ICAgIAorICAgICAgICAKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Fuc3dlcigpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBpbmMoMykgPT0gNQorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIFRv
IGV4ZWN1dGUgaXQ6OgorICAgICAgICAKKyAgICAgICAgICAgICQgcHl0ZXN0CisgICAgICAgICAg
ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICBjb2xsZWN0ZWQgMSBpdGVtcwor
ICAgICAgICAKKyAgICAgICAgICAgIHRlc3Rfc2FtcGxlLnB5IEYKKyAgICAgICAgCisgICAgICAg
ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICBfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18gdGVzdF9hbnN3ZXIgX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCisgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Fuc3dlcigpOgorICAg
ICAgICAgICAgPiAgICAgICBhc3NlcnQgaW5jKDMpID09IDUKKyAgICAgICAgICAgIEUgICAgICAg
YXNzZXJ0IDQgPT0gNQorICAgICAgICAgICAgRSAgICAgICAgKyAgd2hlcmUgNCA9IGluYygzKQor
ICAgICAgICAKKyAgICAgICAgICAgIHRlc3Rfc2FtcGxlLnB5OjU6IEFzc2VydGlvbkVycm9yCisg
ICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAwLjA0IHNl
Y29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgIAorICAgICAgICAKKyAg
ICAgICAgRHVlIHRvIGBgcHl0ZXN0YGAncyBkZXRhaWxlZCBhc3NlcnRpb24gaW50cm9zcGVjdGlv
biwgb25seSBwbGFpbiBgYGFzc2VydGBgIHN0YXRlbWVudHMgYXJlIHVzZWQuIFNlZSBgZ2V0dGlu
Zy1zdGFydGVkIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZ2V0dGluZy1zdGFy
dGVkLmh0bWwjb3VyLWZpcnN0LXRlc3QtcnVuPmBfIGZvciBtb3JlIGV4YW1wbGVzLgorICAgICAg
ICAKKyAgICAgICAgCisgICAgICAgIEZlYXR1cmVzCisgICAgICAgIC0tLS0tLS0tCisgICAgICAg
IAorICAgICAgICAtIERldGFpbGVkIGluZm8gb24gZmFpbGluZyBgYXNzZXJ0IHN0YXRlbWVudHMg
PGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9hc3NlcnQuaHRtbD5gXyAobm8gbmVl
ZCB0byByZW1lbWJlciBgYHNlbGYuYXNzZXJ0KmBgIG5hbWVzKQorICAgICAgICAKKyAgICAgICAg
LSBgQXV0by1kaXNjb3ZlcnkKKyAgICAgICAgICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2dvb2RwcmFjdGljZXMuaHRtbCNweXRob24tdGVzdC1kaXNjb3Zlcnk+YF8KKyAgICAg
ICAgICBvZiB0ZXN0IG1vZHVsZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICAKKyAgICAgICAgLSBg
TW9kdWxhciBmaXh0dXJlcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2ZpeHR1
cmUuaHRtbD5gXyBmb3IKKyAgICAgICAgICBtYW5hZ2luZyBzbWFsbCBvciBwYXJhbWV0cml6ZWQg
bG9uZy1saXZlZCB0ZXN0IHJlc291cmNlcworICAgICAgICAKKyAgICAgICAgLSBDYW4gcnVuIGB1
bml0dGVzdCA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3VuaXR0ZXN0Lmh0bWw+
YF8gKG9yIHRyaWFsKSwKKyAgICAgICAgICBgbm9zZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL25vc2UuaHRtbD5gXyB0ZXN0IHN1aXRlcyBvdXQgb2YgdGhlIGJveAorICAgICAg
ICAKKyAgICAgICAgLSBQeXRob24gMy41KyBhbmQgUHlQeTMKKyAgICAgICAgCisgICAgICAgIC0g
UmljaCBwbHVnaW4gYXJjaGl0ZWN0dXJlLCB3aXRoIG92ZXIgODUwKyBgZXh0ZXJuYWwgcGx1Z2lu
cyA8aHR0cDovL3BsdWdpbmNvbXBhdC5oZXJva3VhcHAuY29tPmBfIGFuZCB0aHJpdmluZyBjb21t
dW5pdHkKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBEb2N1bWVudGF0aW9uCisgICAgICAg
IC0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIEZvciBmdWxsIGRvY3VtZW50YXRpb24s
IGluY2x1ZGluZyBpbnN0YWxsYXRpb24sIHR1dG9yaWFscyBhbmQgUERGIGRvY3VtZW50cywgcGxl
YXNlIHNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvLgorICAgICAgICAKKyAg
ICAgICAgCisgICAgICAgIEJ1Z3MvUmVxdWVzdHMKKyAgICAgICAgLS0tLS0tLS0tLS0tLQorICAg
ICAgICAKKyAgICAgICAgUGxlYXNlIHVzZSB0aGUgYEdpdEh1YiBpc3N1ZSB0cmFja2VyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzPmBfIHRvIHN1Ym1pdCBidWdz
IG9yIHJlcXVlc3QgZmVhdHVyZXMuCisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQ2hhbmdl
bG9nCisgICAgICAgIC0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgQ29uc3VsdCB0aGUgYENo
YW5nZWxvZyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1s
PmBfXyBwYWdlIGZvciBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzIG9mIGVhY2ggdmVyc2lvbi4KKyAg
ICAgICAgCisgICAgICAgIAorICAgICAgICBTdXBwb3J0IHB5dGVzdAorICAgICAgICAtLS0tLS0t
LS0tLS0tLQorICAgICAgICAKKyAgICAgICAgYE9wZW4gQ29sbGVjdGl2ZWBfIGlzIGFuIG9ubGlu
ZSBmdW5kaW5nIHBsYXRmb3JtIGZvciBvcGVuIGFuZCB0cmFuc3BhcmVudCBjb21tdW5pdGllcy4K
KyAgICAgICAgSXQgcHJvdmlkZXMgdG9vbHMgdG8gcmFpc2UgbW9uZXkgYW5kIHNoYXJlIHlvdXIg
ZmluYW5jZXMgaW4gZnVsbCB0cmFuc3BhcmVuY3kuCisgICAgICAgIAorICAgICAgICBJdCBpcyB0
aGUgcGxhdGZvcm0gb2YgY2hvaWNlIGZvciBpbmRpdmlkdWFscyBhbmQgY29tcGFuaWVzIHRoYXQg
d2FudCB0byBtYWtlIG9uZS10aW1lIG9yCisgICAgICAgIG1vbnRobHkgZG9uYXRpb25zIGRpcmVj
dGx5IHRvIHRoZSBwcm9qZWN0LgorICAgICAgICAKKyAgICAgICAgU2VlIG1vcmUgZGV0YWlscyBp
biB0aGUgYHB5dGVzdCBjb2xsZWN0aXZlYF8uCisgICAgICAgIAorICAgICAgICAuLiBfT3BlbiBD
b2xsZWN0aXZlOiBodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbQorICAgICAgICAuLiBfcHl0ZXN0
IGNvbGxlY3RpdmU6IGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL3B5dGVzdAorICAgICAgICAK
KyAgICAgICAgCisgICAgICAgIHB5dGVzdCBmb3IgZW50ZXJwcmlzZQorICAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIEF2YWlsYWJsZSBhcyBwYXJ0IG9mIHRo
ZSBUaWRlbGlmdCBTdWJzY3JpcHRpb24uCisgICAgICAgIAorICAgICAgICBUaGUgbWFpbnRhaW5l
cnMgb2YgcHl0ZXN0IGFuZCB0aG91c2FuZHMgb2Ygb3RoZXIgcGFja2FnZXMgYXJlIHdvcmtpbmcg
d2l0aCBUaWRlbGlmdCB0byBkZWxpdmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBhbmQKKyAgICAgICAg
bWFpbnRlbmFuY2UgZm9yIHRoZSBvcGVuIHNvdXJjZSBkZXBlbmRlbmNpZXMgeW91IHVzZSB0byBi
dWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgU2F2ZSB0aW1lLCByZWR1Y2Ugcmlzaywg
YW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2Yg
dGhlIGV4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLgorICAgICAgICAKKyAgICAgICAgYExlYXJu
IG1vcmUuIDxodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vcGtnL3B5cGktcHl0ZXN0
P3V0bV9zb3VyY2U9cHlwaS1weXRlc3QmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249
ZW50ZXJwcmlzZSZ1dG1fdGVybT1yZXBvPmBfCisgICAgICAgIAorICAgICAgICBTZWN1cml0eQor
ICAgICAgICBeXl5eXl5eXgorICAgICAgICAKKyAgICAgICAgcHl0ZXN0IGhhcyBuZXZlciBiZWVu
IGFzc29jaWF0ZWQgd2l0aCBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIGJ1dCBpbiBhbnkgY2Fz
ZSwgdG8gcmVwb3J0IGEKKyAgICAgICAgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBwbGVhc2UgdXNl
IHRoZSBgVGlkZWxpZnQgc2VjdXJpdHkgY29udGFjdCA8aHR0cHM6Ly90aWRlbGlmdC5jb20vc2Vj
dXJpdHk+YF8uCisgICAgICAgIFRpZGVsaWZ0IHdpbGwgY29vcmRpbmF0ZSB0aGUgZml4IGFuZCBk
aXNjbG9zdXJlLgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIExpY2Vuc2UKKyAgICAgICAg
LS0tLS0tLQorICAgICAgICAKKyAgICAgICAgQ29weXJpZ2h0IEhvbGdlciBLcmVrZWwgYW5kIG90
aGVycywgMjAwNC0yMDIwLgorICAgICAgICAKKyAgICAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBgTUlUYF8gbGljZW5zZSwgcHl0ZXN0IGlzIGZyZWUgYW5kIG9wZW4gc291
cmNlIHNvZnR3YXJlLgorICAgICAgICAKKyAgICAgICAgLi4gX2BNSVRgOiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvYmxvYi9tYXN0ZXIvTElDRU5TRQorICAgICAgICAKK0tl
eXdvcmRzOiB0ZXN0LHVuaXR0ZXN0CitQbGF0Zm9ybTogdW5peAorUGxhdGZvcm06IGxpbnV4CitQ
bGF0Zm9ybTogb3N4CitQbGF0Zm9ybTogY3lnd2luCitQbGF0Zm9ybTogd2luMzIKK0NsYXNzaWZp
ZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA2IC0gTWF0dXJlCitDbGFzc2lmaWVyOiBJbnRlbmRl
ZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHBy
b3ZlZCA6OiBNSVQgTGljZW5zZQorQ2xhc3NpZmllcjogT3BlcmF0aW5nIFN5c3RlbSA6OiBNYWNP
UyA6OiBNYWNPUyBYCitDbGFzc2lmaWVyOiBPcGVyYXRpbmcgU3lzdGVtIDo6IE1pY3Jvc29mdCA6
OiBXaW5kb3dzCitDbGFzc2lmaWVyOiBPcGVyYXRpbmcgU3lzdGVtIDo6IFBPU0lYCitDbGFzc2lm
aWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworQ2xhc3NpZmllcjogUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMgOjogT25seQorQ2xhc3NpZmllcjogUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNQorQ2xhc3NpZmllcjogUHJvZ3JhbW1p
bmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNgorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDMuNworQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDMuOAorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0
aG9uIDo6IDMuOQorQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjog
TGlicmFyaWVzCitDbGFzc2lmaWVyOiBUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBU
ZXN0aW5nCitDbGFzc2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMKK1JlcXVpcmVzLVB5dGhvbjog
Pj0zLjUKK0Rlc2NyaXB0aW9uLUNvbnRlbnQtVHlwZTogdGV4dC94LXJzdAorUHJvdmlkZXMtRXh0
cmE6IGNoZWNrcWFfbXlweQorUHJvdmlkZXMtRXh0cmE6IHRlc3RpbmcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9SRUFETUUucnN0CmluZGV4IDU2NGZm
ZmY2YzkxZS4uMDU3Mjc4YTkyNmIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9SRUFETUUucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L1JFQURNRS5yc3QKQEAgLTEsOCArMSw5IEBACi0uLiBpbWFnZTo6
IGh0dHA6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L19zdGF0aWMvcHl0ZXN0MS5wbmcKLSAg
IDp0YXJnZXQ6IGh0dHA6Ly9kb2NzLnB5dGVzdC5vcmcKKy4uIGltYWdlOjogaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL19zdGF0aWMvcHl0ZXN0MS5wbmcKKyAgIDp0YXJnZXQ6IGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KICAgIDphbGlnbjogY2VudGVyCiAgICA6
YWx0OiBweXRlc3QKIAorCiAtLS0tLS0KIAogLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRz
LmlvL3B5cGkvdi9weXRlc3Quc3ZnCkBAIC0xNCwyMSArMTUsMjYgQEAKIC4uIGltYWdlOjogaHR0
cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvcHl0ZXN0LnN2ZwogICAgIDp0YXJn
ZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QvCiAKLS4uIGltYWdlOjogaHR0cHM6
Ly9pbWcuc2hpZWxkcy5pby9jb3ZlcmFsbHMvcHl0ZXN0LWRldi9weXRlc3QvbWFzdGVyLnN2Zwot
ICAgIDp0YXJnZXQ6IGh0dHBzOi8vY292ZXJhbGxzLmlvL3IvcHl0ZXN0LWRldi9weXRlc3QKKy4u
IGltYWdlOjogaHR0cHM6Ly9jb2RlY292LmlvL2doL3B5dGVzdC1kZXYvcHl0ZXN0L2JyYW5jaC9t
YXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2do
L3B5dGVzdC1kZXYvcHl0ZXN0CisgICAgOmFsdDogQ29kZSBjb3ZlcmFnZSBTdGF0dXMKIAogLi4g
aW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvcHl0ZXN0LWRldi9weXRlc3Quc3ZnP2JyYW5j
aD1tYXN0ZXIKICAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvcHl0ZXN0LWRldi9w
eXRlc3QKIAotLi4gaW1hZ2U6OiBodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMv
c3RhdHVzL21yZ2JqYXVhN3QzM3BnNmI/c3ZnPXRydWUKLSAgICA6dGFyZ2V0OiBodHRwczovL2Np
LmFwcHZleW9yLmNvbS9wcm9qZWN0L3B5dGVzdGJvdC9weXRlc3QKKy4uIGltYWdlOjogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3dvcmtmbG93cy9tYWluL2JhZGdlLnN2Zwor
ICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9hY3Rpb25z
P3F1ZXJ5PXdvcmtmbG93JTNBbWFpbgogCiAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMu
aW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAwMDAwMC5zdmcKLSAgOnRhcmdldDogaHR0cHM6
Ly9naXRodWIuY29tL2FtYnYvYmxhY2sKKyAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20v
cHNmL2JsYWNrCiAKIC4uIGltYWdlOjogaHR0cHM6Ly93d3cuY29kZXRyaWFnZS5jb20vcHl0ZXN0
LWRldi9weXRlc3QvYmFkZ2VzL3VzZXJzLnN2ZwogICAgIDp0YXJnZXQ6IGh0dHBzOi8vd3d3LmNv
ZGV0cmlhZ2UuY29tL3B5dGVzdC1kZXYvcHl0ZXN0CiAKKy4uIGltYWdlOjogaHR0cHM6Ly9yZWFk
dGhlZG9jcy5vcmcvcHJvamVjdHMvcHl0ZXN0L2JhZGdlLz92ZXJzaW9uPWxhdGVzdAorICAgIDp0
YXJnZXQ6IGh0dHBzOi8vcHl0ZXN0LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8/YmFkZ2U9bGF0
ZXN0CisgICAgOmFsdDogRG9jdW1lbnRhdGlvbiBTdGF0dXMKKwogVGhlIGBgcHl0ZXN0YGAgZnJh
bWV3b3JrIG1ha2VzIGl0IGVhc3kgdG8gd3JpdGUgc21hbGwgdGVzdHMsIHlldAogc2NhbGVzIHRv
IHN1cHBvcnQgY29tcGxleCBmdW5jdGlvbmFsIHRlc3RpbmcgZm9yIGFwcGxpY2F0aW9ucyBhbmQg
bGlicmFyaWVzLgogCkBAIC02NSwzMyArNzEsMzMgQEAgVG8gZXhlY3V0ZSBpdDo6CiAgICAgPT09
PT09PT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQgaW4gMC4wNCBzZWNvbmRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PQogCiAKLUR1ZSB0byBgYHB5dGVzdGBgJ3MgZGV0YWlsZWQgYXNz
ZXJ0aW9uIGludHJvc3BlY3Rpb24sIG9ubHkgcGxhaW4gYGBhc3NlcnRgYCBzdGF0ZW1lbnRzIGFy
ZSB1c2VkLiBTZWUgYGdldHRpbmctc3RhcnRlZCA8aHR0cDovL2RvY3MucHl0ZXN0Lm9yZy9lbi9s
YXRlc3QvZ2V0dGluZy1zdGFydGVkLmh0bWwjb3VyLWZpcnN0LXRlc3QtcnVuPmBfIGZvciBtb3Jl
IGV4YW1wbGVzLgorRHVlIHRvIGBgcHl0ZXN0YGAncyBkZXRhaWxlZCBhc3NlcnRpb24gaW50cm9z
cGVjdGlvbiwgb25seSBwbGFpbiBgYGFzc2VydGBgIHN0YXRlbWVudHMgYXJlIHVzZWQuIFNlZSBg
Z2V0dGluZy1zdGFydGVkIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZ2V0dGlu
Zy1zdGFydGVkLmh0bWwjb3VyLWZpcnN0LXRlc3QtcnVuPmBfIGZvciBtb3JlIGV4YW1wbGVzLgog
CiAKIEZlYXR1cmVzCiAtLS0tLS0tLQogCi0tIERldGFpbGVkIGluZm8gb24gZmFpbGluZyBgYXNz
ZXJ0IHN0YXRlbWVudHMgPGh0dHA6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2Fzc2VydC5o
dG1sPmBfIChubyBuZWVkIHRvIHJlbWVtYmVyIGBgc2VsZi5hc3NlcnQqYGAgbmFtZXMpOworLSBE
ZXRhaWxlZCBpbmZvIG9uIGZhaWxpbmcgYGFzc2VydCBzdGF0ZW1lbnRzIDxodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvYXNzZXJ0Lmh0bWw+YF8gKG5vIG5lZWQgdG8gcmVtZW1iZXIg
YGBzZWxmLmFzc2VydCpgYCBuYW1lcykKIAogLSBgQXV0by1kaXNjb3ZlcnkKLSAgPGh0dHA6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2dvb2RwcmFjdGljZXMuaHRtbCNweXRob24tdGVzdC1k
aXNjb3Zlcnk+YF8KLSAgb2YgdGVzdCBtb2R1bGVzIGFuZCBmdW5jdGlvbnM7CisgIDxodHRwczov
L2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZ29vZHByYWN0aWNlcy5odG1sI3B5dGhvbi10ZXN0
LWRpc2NvdmVyeT5gXworICBvZiB0ZXN0IG1vZHVsZXMgYW5kIGZ1bmN0aW9ucwogCi0tIGBNb2R1
bGFyIGZpeHR1cmVzIDxodHRwOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9maXh0dXJlLmh0
bWw+YF8gZm9yCi0gIG1hbmFnaW5nIHNtYWxsIG9yIHBhcmFtZXRyaXplZCBsb25nLWxpdmVkIHRl
c3QgcmVzb3VyY2VzOworLSBgTW9kdWxhciBmaXh0dXJlcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vc3RhYmxlL2ZpeHR1cmUuaHRtbD5gXyBmb3IKKyAgbWFuYWdpbmcgc21hbGwgb3IgcGFy
YW1ldHJpemVkIGxvbmctbGl2ZWQgdGVzdCByZXNvdXJjZXMKIAotLSBDYW4gcnVuIGB1bml0dGVz
dCA8aHR0cDovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvdW5pdHRlc3QuaHRtbD5gXyAob3Ig
dHJpYWwpLAotICBgbm9zZSA8aHR0cDovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvbm9zZS5o
dG1sPmBfIHRlc3Qgc3VpdGVzIG91dCBvZiB0aGUgYm94OworLSBDYW4gcnVuIGB1bml0dGVzdCA8
aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3VuaXR0ZXN0Lmh0bWw+YF8gKG9yIHRy
aWFsKSwKKyAgYG5vc2UgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9ub3NlLmh0
bWw+YF8gdGVzdCBzdWl0ZXMgb3V0IG9mIHRoZSBib3gKIAotLSBQeXRob24gMi43LCBQeXRob24g
My40KywgUHlQeSAyLjMsIEp5dGhvbiAyLjUgKHVudGVzdGVkKTsKKy0gUHl0aG9uIDMuNSsgYW5k
IFB5UHkzCiAKLS0gUmljaCBwbHVnaW4gYXJjaGl0ZWN0dXJlLCB3aXRoIG92ZXIgMzE1KyBgZXh0
ZXJuYWwgcGx1Z2lucyA8aHR0cDovL3BsdWdpbmNvbXBhdC5oZXJva3VhcHAuY29tPmBfIGFuZCB0
aHJpdmluZyBjb21tdW5pdHk7CistIFJpY2ggcGx1Z2luIGFyY2hpdGVjdHVyZSwgd2l0aCBvdmVy
IDg1MCsgYGV4dGVybmFsIHBsdWdpbnMgPGh0dHA6Ly9wbHVnaW5jb21wYXQuaGVyb2t1YXBwLmNv
bT5gXyBhbmQgdGhyaXZpbmcgY29tbXVuaXR5CiAKIAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0t
LS0tLQogCi1Gb3IgZnVsbCBkb2N1bWVudGF0aW9uLCBpbmNsdWRpbmcgaW5zdGFsbGF0aW9uLCB0
dXRvcmlhbHMgYW5kIFBERiBkb2N1bWVudHMsIHBsZWFzZSBzZWUgaHR0cDovL2RvY3MucHl0ZXN0
Lm9yZy4KK0ZvciBmdWxsIGRvY3VtZW50YXRpb24sIGluY2x1ZGluZyBpbnN0YWxsYXRpb24sIHR1
dG9yaWFscyBhbmQgUERGIGRvY3VtZW50cywgcGxlYXNlIHNlZSBodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvLgogCiAKIEJ1Z3MvUmVxdWVzdHMKQEAgLTEwMywxMyArMTA5LDQ3IEBA
IFBsZWFzZSB1c2UgdGhlIGBHaXRIdWIgaXNzdWUgdHJhY2tlciA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3VlCiBDaGFuZ2Vsb2cKIC0tLS0tLS0tLQogCi1Db25zdWx0
IHRoZSBgQ2hhbmdlbG9nIDxodHRwOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vs
b2cuaHRtbD5gX18gcGFnZSBmb3IgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyBvZiBlYWNoIHZlcnNp
b24uCitDb25zdWx0IHRoZSBgQ2hhbmdlbG9nIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvY2hhbmdlbG9nLmh0bWw+YF9fIHBhZ2UgZm9yIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMg
b2YgZWFjaCB2ZXJzaW9uLgorCisKK1N1cHBvcnQgcHl0ZXN0CistLS0tLS0tLS0tLS0tLQorCitg
T3BlbiBDb2xsZWN0aXZlYF8gaXMgYW4gb25saW5lIGZ1bmRpbmcgcGxhdGZvcm0gZm9yIG9wZW4g
YW5kIHRyYW5zcGFyZW50IGNvbW11bml0aWVzLgorSXQgcHJvdmlkZXMgdG9vbHMgdG8gcmFpc2Ug
bW9uZXkgYW5kIHNoYXJlIHlvdXIgZmluYW5jZXMgaW4gZnVsbCB0cmFuc3BhcmVuY3kuCisKK0l0
IGlzIHRoZSBwbGF0Zm9ybSBvZiBjaG9pY2UgZm9yIGluZGl2aWR1YWxzIGFuZCBjb21wYW5pZXMg
dGhhdCB3YW50IHRvIG1ha2Ugb25lLXRpbWUgb3IKK21vbnRobHkgZG9uYXRpb25zIGRpcmVjdGx5
IHRvIHRoZSBwcm9qZWN0LgorCitTZWUgbW9yZSBkZXRhaWxzIGluIHRoZSBgcHl0ZXN0IGNvbGxl
Y3RpdmVgXy4KKworLi4gX09wZW4gQ29sbGVjdGl2ZTogaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5j
b20KKy4uIF9weXRlc3QgY29sbGVjdGl2ZTogaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vcHl0
ZXN0CisKKworcHl0ZXN0IGZvciBlbnRlcnByaXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
QXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbi4KKworVGhlIG1h
aW50YWluZXJzIG9mIHB5dGVzdCBhbmQgdGhvdXNhbmRzIG9mIG90aGVyIHBhY2thZ2VzIGFyZSB3
b3JraW5nIHdpdGggVGlkZWxpZnQgdG8gZGVsaXZlciBjb21tZXJjaWFsIHN1cHBvcnQgYW5kCitt
YWludGVuYW5jZSBmb3IgdGhlIG9wZW4gc291cmNlIGRlcGVuZGVuY2llcyB5b3UgdXNlIHRvIGJ1
aWxkIHlvdXIgYXBwbGljYXRpb25zLgorU2F2ZSB0aW1lLCByZWR1Y2UgcmlzaywgYW5kIGltcHJv
dmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlIGV4YWN0
IGRlcGVuZGVuY2llcyB5b3UgdXNlLgorCitgTGVhcm4gbW9yZS4gPGh0dHBzOi8vdGlkZWxpZnQu
Y29tL3N1YnNjcmlwdGlvbi9wa2cvcHlwaS1weXRlc3Q/dXRtX3NvdXJjZT1weXBpLXB5dGVzdCZ1
dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlJnV0bV90ZXJtPXJlcG8+
YF8KKworU2VjdXJpdHkKK15eXl5eXl5eCisKK3B5dGVzdCBoYXMgbmV2ZXIgYmVlbiBhc3NvY2lh
dGVkIHdpdGggYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCBidXQgaW4gYW55IGNhc2UsIHRvIHJl
cG9ydCBhCitzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHBsZWFzZSB1c2UgdGhlIGBUaWRlbGlmdCBz
ZWN1cml0eSBjb250YWN0IDxodHRwczovL3RpZGVsaWZ0LmNvbS9zZWN1cml0eT5gXy4KK1RpZGVs
aWZ0IHdpbGwgY29vcmRpbmF0ZSB0aGUgZml4IGFuZCBkaXNjbG9zdXJlLgogCiAKIExpY2Vuc2UK
IC0tLS0tLS0KIAotQ29weXJpZ2h0IEhvbGdlciBLcmVrZWwgYW5kIG90aGVycywgMjAwNC0yMDE3
LgorQ29weXJpZ2h0IEhvbGdlciBLcmVrZWwgYW5kIG90aGVycywgMjAwNC0yMDIwLgogCiBEaXN0
cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGBNSVRgXyBsaWNlbnNlLCBweXRlc3QgaXMg
ZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L1JFTEVBU0lORy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9SRUxFQVNJTkcucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWZmOTViZTkyZWRkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvUkVMRUFTSU5HLnJzdApAQCAtMCwwICsxLDEzNSBAQAorUmVsZWFzZSBQ
cm9jZWR1cmUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK091ciBjdXJyZW50IHBvbGljeSBmb3IgcmVs
ZWFzaW5nIGlzIHRvIGFpbSBmb3IgYSBidWctZml4IHJlbGVhc2UgZXZlcnkgZmV3IHdlZWtzIGFu
ZCBhIG1pbm9yIHJlbGVhc2UgZXZlcnkgMi0zIG1vbnRocy4gVGhlIGlkZWEKK2lzIHRvIGdldCBm
aXhlcyBhbmQgbmV3IGZlYXR1cmVzIG91dCBpbnN0ZWFkIG9mIHRyeWluZyB0byBjcmFtIGEgdG9u
IG9mIGZlYXR1cmVzIGludG8gYSByZWxlYXNlIGFuZCBieSBjb25zZXF1ZW5jZQordGFraW5nIGEg
bG90IG9mIHRpbWUgdG8gbWFrZSBhIG5ldyBvbmUuCisKK1RoZSBnaXQgY29tbWFuZHMgYXNzdW1l
IHRoZSBmb2xsb3dpbmcgcmVtb3RlcyBhcmUgc2V0dXA6CisKKyogYGBvcmlnaW5gYDogeW91ciBv
d24gZm9yayBvZiB0aGUgcmVwb3NpdG9yeS4KKyogYGB1cHN0cmVhbWBgOiB0aGUgYGBweXRlc3Qt
ZGV2L3B5dGVzdGBgIG9mZmljaWFsIHJlcG9zaXRvcnkuCisKK1ByZXBhcmluZzogQXV0b21hdGlj
IE1ldGhvZAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1dlIGhhdmUgZGV2ZWxvcGVk
IGFuIGF1dG9tYXRlZCB3b3JrZmxvdyBmb3IgcmVsZWFzZXMsIHRoYXQgdXNlcyBHaXRIdWIgd29y
a2Zsb3dzIGFuZCBpcyB0cmlnZ2VyZWQKK2J5IG9wZW5pbmcgYW4gaXNzdWUuCisKK0J1Zy1maXgg
cmVsZWFzZXMKK15eXl5eXl5eXl5eXl5eXl4KKworQSBidWctZml4IHJlbGVhc2UgaXMgYWx3YXlz
IGRvbmUgZnJvbSBhIG1haW50ZW5hbmNlIGJyYW5jaCwgc28gZm9yIGV4YW1wbGUgdG8gcmVsZWFz
ZSBidWctZml4CitgYDUuMS4yYGAsIG9wZW4gYSBuZXcgaXNzdWUgYW5kIGFkZCB0aGlzIGNvbW1l
bnQgdG8gdGhlIGJvZHk6OgorCisgICAgQHB5dGVzdGJvdCBwbGVhc2UgcHJlcGFyZSByZWxlYXNl
IGZyb20gNS4xLngKKworV2hlcmUgYGA1LjEueGBgIGlzIHRoZSBtYWludGVuYW5jZSBicmFuY2gg
Zm9yIHRoZSBgYDUuMWBgIHNlcmllcy4KKworVGhlIGF1dG9tYXRlZCB3b3JrZmxvdyB3aWxsIHB1
Ymxpc2ggYSBQUiBmb3IgYSBicmFuY2ggYGByZWxlYXNlLTUuMS4yYGAKK2FuZCBub3RpZnkgaXQg
YXMgYSBjb21tZW50IGluIHRoZSBpc3N1ZS4KKworTWlub3IgcmVsZWFzZXMKK15eXl5eXl5eXl5e
Xl5eCisKKzEuIENyZWF0ZSBhIG5ldyBtYWludGVuYW5jZSBicmFuY2ggZnJvbSBgYG1hc3RlcmBg
OjoKKworICAgICAgICBnaXQgZmV0Y2ggLS1hbGwKKyAgICAgICAgZ2l0IGJyYW5jaCA1LjIueCB1
cHN0cmVhbS9tYXN0ZXIKKyAgICAgICAgZ2l0IHB1c2ggdXBzdHJlYW0gNS4yLngKKworMi4gT3Bl
biBhIG5ldyBpc3N1ZSBhbmQgYWRkIHRoaXMgY29tbWVudCB0byB0aGUgYm9keTo6CisKKyAgICBA
cHl0ZXN0Ym90IHBsZWFzZSBwcmVwYXJlIHJlbGVhc2UgZnJvbSA1LjIueAorCitUaGUgYXV0b21h
dGVkIHdvcmtmbG93IHdpbGwgcHVibGlzaCBhIFBSIGZvciBhIGJyYW5jaCBgYHJlbGVhc2UtNS4y
LjBgYCBhbmQKK25vdGlmeSBpdCBhcyBhIGNvbW1lbnQgaW4gdGhlIGlzc3VlLgorCitNYWpvciBh
bmQgcmVsZWFzZSBjYW5kaWRhdGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzEu
IENyZWF0ZSBhIG5ldyBtYWludGVuYW5jZSBicmFuY2ggZnJvbSBgYG1hc3RlcmBgOjoKKworICAg
ICAgICBnaXQgZmV0Y2ggLS1hbGwKKyAgICAgICAgZ2l0IGJyYW5jaCA2LjAueCB1cHN0cmVhbS9t
YXN0ZXIKKyAgICAgICAgZ2l0IHB1c2ggdXBzdHJlYW0gNi4wLngKKworMi4gRm9yIGEgKiptYWpv
ciByZWxlYXNlKiosIG9wZW4gYSBuZXcgaXNzdWUgYW5kIGFkZCB0aGlzIGNvbW1lbnQgaW4gdGhl
IGJvZHk6OgorCisgICAgICAgIEBweXRlc3Rib3QgcGxlYXNlIHByZXBhcmUgbWFqb3IgcmVsZWFz
ZSBmcm9tIDYuMC54CisKKyAgIEZvciBhICoqcmVsZWFzZSBjYW5kaWRhdGUqKiwgdGhlIGNvbW1l
bnQgbXVzdCBiZSAoVE9ETzogYCM3NTUxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzc1NTE+YF9fKTo6CisKKyAgICAgICAgQHB5dGVzdGJvdCBwbGVhc2UgcHJl
cGFyZSByZWxlYXNlIGNhbmRpZGF0ZSBmcm9tIDYuMC54CisKK1RoZSBhdXRvbWF0ZWQgd29ya2Zs
b3cgd2lsbCBwdWJsaXNoIGEgUFIgZm9yIGEgYnJhbmNoIGBgcmVsZWFzZS02LjAuMGBgIGFuZAor
bm90aWZ5IGl0IGFzIGEgY29tbWVudCBpbiB0aGUgaXNzdWUuCisKK0F0IHRoaXMgcG9pbnQgb24s
IHRoaXMgZm9sbG93cyB0aGUgc2FtZSB3b3JrZmxvdyBhcyBvdGhlciBtYWludGVuYW5jZSBicmFu
Y2hlczogYnVnLWZpeGVzIGFyZSBtZXJnZWQKK2ludG8gYGBtYXN0ZXJgYCBhbmQgcG9ydGVkIGJh
Y2sgdG8gdGhlIG1haW50ZW5hbmNlIGJyYW5jaCwgZXZlbiBmb3IgcmVsZWFzZSBjYW5kaWRhdGVz
LgorCisqKkEgbm90ZSBhYm91dCByZWxlYXNlIGNhbmRpZGF0ZXMqKgorCitEdXJpbmcgcmVsZWFz
ZSBjYW5kaWRhdGVzIHdlIGNhbiBtZXJnZSBzbWFsbCBpbXByb3ZlbWVudHMgaW50bwordGhlIG1h
aW50ZW5hbmNlIGJyYW5jaCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBmaW5hbCBtYWpvciB2ZXJzaW9u
LCBob3dldmVyIHdlIG11c3QgdGFrZSBjYXJlCit0byBhdm9pZCBpbnRyb2R1Y2luZyBiaWcgY2hh
bmdlcyBhdCB0aGlzIHN0YWdlLgorCitQcmVwYXJpbmc6IE1hbnVhbCBNZXRob2QKK35+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fgorCisqKkltcG9ydGFudCoqOiBweXRlc3QgcmVsZWFzZXMgbXVzdCBi
ZSBwcmVwYXJlZCBvbiAqKkxpbnV4KiogYmVjYXVzZSB0aGUgZG9jcyBhbmQgZXhhbXBsZXMgZXhw
ZWN0Cit0byBiZSBleGVjdXRlZCBvbiB0aGF0IHBsYXRmb3JtLgorCitUbyByZWxlYXNlIGEgdmVy
c2lvbiBgYE1BSk9SLk1JTk9SLlBBVENIYGAsIGZvbGxvdyB0aGVzZSBzdGVwczoKKworIy4gRm9y
IG1ham9yIGFuZCBtaW5vciByZWxlYXNlcywgY3JlYXRlIGEgbmV3IGJyYW5jaCBgYE1BSk9SLk1J
Tk9SLnhgYCBmcm9tCisgICBgYHVwc3RyZWFtL21hc3RlcmBgIGFuZCBwdXNoIGl0IHRvIGBgdXBz
dHJlYW1gYC4KKworIy4gQ3JlYXRlIGEgYnJhbmNoIGBgcmVsZWFzZS1NQUpPUi5NSU5PUi5QQVRD
SGBgIGZyb20gdGhlIGBgTUFKT1IuTUlOT1IueGBgIGJyYW5jaC4KKworICAgRW5zdXJlIHlvdXIg
YXJlIHVwZGF0ZWQgYW5kIGluIGEgY2xlYW4gd29ya2luZyB0cmVlLgorCisjLiBVc2luZyBgYHRv
eGBgLCBnZW5lcmF0ZSBkb2NzLCBjaGFuZ2Vsb2csIGFubm91bmNlbWVudHM6OgorCisgICAgJCB0
b3ggLWUgcmVsZWFzZSAtLSBNQUpPUi5NSU5PUi5QQVRDSAorCisgICBUaGlzIHdpbGwgZ2VuZXJh
dGUgYSBjb21taXQgd2l0aCBhbGwgdGhlIGNoYW5nZXMgcmVhZHkgZm9yIHB1c2hpbmcuCisKKyMu
IE9wZW4gYSBQUiBmb3IgdGhlIGBgcmVsZWFzZS1NQUpPUi5NSU5PUi5QQVRDSGBgIGJyYW5jaCB0
YXJnZXRpbmcgYGBNQUpPUi5NSU5PUi54YGAuCisKKworUmVsZWFzaW5nCit+fn5+fn5+fn4KKwor
Qm90aCBhdXRvbWF0aWMgYW5kIG1hbnVhbCBwcm9jZXNzZXMgZGVzY3JpYmVkIGFib3ZlIGZvbGxv
dyB0aGUgc2FtZSBzdGVwcyBmcm9tIHRoaXMgcG9pbnQgb253YXJkLgorCisjLiBBZnRlciBhbGwg
dGVzdHMgcGFzcyBhbmQgdGhlIFBSIGhhcyBiZWVuIGFwcHJvdmVkLCB0YWcgdGhlIHJlbGVhc2Ug
Y29tbWl0CisgICBpbiB0aGUgYGByZWxlYXNlLU1BSk9SLk1JTk9SLlBBVENIYGAgYnJhbmNoIGFu
ZCBwdXNoIGl0LiBUaGlzIHdpbGwgcHVibGlzaCB0byBQeVBJOjoKKworICAgICBnaXQgZmV0Y2gg
LS1hbGwKKyAgICAgZ2l0IHRhZyBNQUpPUi5NSU5PUi5QQVRDSCB1cHN0cmVhbS9yZWxlYXNlLU1B
Sk9SLk1JTk9SLlBBVENICisgICAgIGdpdCBwdXNoIGdpdEBnaXRodWIuY29tOnB5dGVzdC1kZXYv
cHl0ZXN0LmdpdCBNQUpPUi5NSU5PUi5QQVRDSAorCisgICBXYWl0IGZvciB0aGUgZGVwbG95IHRv
IGNvbXBsZXRlLCB0aGVuIG1ha2Ugc3VyZSBpdCBpcyBgYXZhaWxhYmxlIG9uIFB5UEkgPGh0dHBz
Oi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3Q+YF8uCisKKyMuIE1lcmdlIHRoZSBQUi4KKworIy4g
Q2hlcnJ5LXBpY2sgdGhlIENIQU5HRUxPRyAvIGFubm91bmNlIGZpbGVzIHRvIHRoZSBgYG1hc3Rl
cmBgIGJyYW5jaDo6CisKKyAgICAgICBnaXQgZmV0Y2ggLS1hbGwgLS1wcnVuZQorICAgICAgIGdp
dCBjaGVja291dCBvcmlnaW4vbWFzdGVyIC1iIGNoZXJyeS1waWNrLXJlbGVhc2UKKyAgICAgICBn
aXQgY2hlcnJ5LXBpY2sgLXggLW0xIHVwc3RyZWFtL01BSk9SLk1JTk9SLngKKworIy4gT3BlbiBh
IFBSIGZvciBgYGNoZXJyeS1waWNrLXJlbGVhc2VgYCBhbmQgbWVyZ2UgaXQgb25jZSBDSSBwYXNz
ZXMuIE5vIG5lZWQgdG8gd2FpdCBmb3IgYXBwcm92YWxzIGlmIHRoZXJlIHdlcmUgbm8gY29uZmxp
Y3RzIG9uIHRoZSBwcmV2aW91cyBzdGVwLgorCisjLiBTZW5kIGFuIGVtYWlsIGFubm91bmNlbWVu
dCB3aXRoIHRoZSBjb250ZW50cyBmcm9tOjoKKworICAgICBkb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS08VkVSU0lPTj4ucnN0CisKKyAgIFRvIHRoZSBmb2xsb3dpbmcgbWFpbGluZyBsaXN0czoKKwor
ICAgKiBweXRlc3QtZGV2QHB5dGhvbi5vcmcgKGFsbCByZWxlYXNlcykKKyAgICogcHl0aG9uLWFu
bm91bmNlLWxpc3RAcHl0aG9uLm9yZyAoYWxsIHJlbGVhc2VzKQorICAgKiB0ZXN0aW5nLWluLXB5
dGhvbkBsaXN0cy5pZHlsbC5vcmcgKG9ubHkgbWFqb3IvbWlub3IgcmVsZWFzZXMpCisKKyAgIEFu
ZCBhbm5vdW5jZSBpdCBvbiBgVHdpdHRlciA8aHR0cHM6Ly90d2l0dGVyLmNvbS8+YF8gd2l0aCB0
aGUgYGAjcHl0ZXN0YGAgaGFzaHRhZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L1RJREVMSUZU
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L1RJREVMSUZULnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmIxOGY0NzkzZjgxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L1RJREVMSUZULnJzdApAQCAtMCwwICsxLDU4IEBACis9PT09PT09PQorVGlkZWxpZnQKKz09
PT09PT09CisKK3B5dGVzdCBpcyBhIG1lbWJlciBvZiBgVGlkZWxpZnRgXy4gVGhpcyBkb2N1bWVu
dCBkZXNjcmliZXMgaG93IHRoZSBjb3JlIHRlYW0gbWFuYWdlcworVGlkZWxpZnQtcmVsYXRlZCBh
Y3Rpdml0aWVzLgorCitXaGF0IGlzIGl0Cis9PT09PT09PT09CisKK1RpZGVsaWZ0IGFpbXMgdG8g
bWFrZSBPcGVuIFNvdXJjZSBzdXN0YWluYWJsZSBieSBvZmZlcmluZyBzdWJzY3JpcHRpb25zIHRv
IGNvbXBhbmllcyB3aGljaCByZWx5CitvbiBPcGVuIFNvdXJjZSBwYWNrYWdlcy4gVGhpcyBzdWJz
Y3JpcHRpb24gYWxsb3dzIGl0IHRvIHBheSBtYWludGFpbmVycyBvZiB0aG9zZSBPcGVuIFNvdXJj
ZQorcGFja2FnZXMgdG8gYWlkIHN1c3RhaW5hYmlsaXR5IG9mIHRoZSB3b3JrLgorCitJdCBpcyB0
aGUgcGVyZmVjdCBwbGF0Zm9ybSBmb3IgY29tcGFuaWVzIHRoYXQgd2FudCB0byBzdXBwb3J0IE9w
ZW4gU291cmNlIHBhY2thZ2VzIGFuZCBhdCB0aGUgc2FtZQordGltZSBvYnRhaW4gYXNzdXJhbmNl
cyByZWdhcmRpbmcgbWFpbnRlbmFuY2UsIHF1YWxpdHkgYW5kIHNlY3VyaXR5LgorCitGdW5kcwor
PT09PT0KKworSXQgd2FzIGRlY2lkZWQgaW4gdGhlIGBtYWlsaW5nIGxpc3RgXyB0aGF0IHRoZSBU
aWRlbGlmdCBjb250cmlidXRpb24gd2lsbCBiZSBzcGxpdCBldmVubHkgYmV0d2VlbgorbWVtYmVy
cyBvZiB0aGUgYGNvbnRyaWJ1dG9ycyB0ZWFtYF8gaW50ZXJlc3RlZCBpbiByZWNlaXZpbmcgZnVu
ZGluZy4KKworVGhlIGN1cnJlbnQgbGlzdCBvZiBjb250cmlidXRvcnMgcmVjZWl2aW5nIGZ1bmRp
bmcgYXJlOgorCisqIGBAYXNvdHRpbGVgXworKiBgQG5pY29kZGVtdXNgXworCitDb250cmlidXRv
cnMgaW50ZXJlc3RlZCBpbiByZWNlaXZpbmcgYSBwYXJ0IG9mIHRoZSBmdW5kcyBqdXN0IG5lZWQg
dG8gc3VibWl0IGEgUFIgYWRkaW5nIHRoZWlyCituYW1lIHRvIHRoZSBsaXN0LiBDb250cmlidXRv
cnMgdGhhdCB3YW50IHRvIHN0b3AgcmVjZWl2aW5nIHRoZSBmdW5kcyBzaG91bGQgYWxzbyBzdWJt
aXQgYSBQUgoraW4gdGhlIHNhbWUgd2F5LgorCitUaGUgUFIgc2hvdWxkIG1lbnRpb24gYEBweXRl
c3QtZGV2L3RpZGVsaWZ0LWFkbWluc2BfIHNvIGFwcHJvcHJpYXRlIGNoYW5nZXMKK2NhbiBiZSBt
YWRlIGluIHRoZSBUaWRlbGlmdCBwbGF0Zm9ybS4KKworQWZ0ZXIgdGhlIFBSIGhhcyBiZWVuIGFj
Y2VwdGVkIGFuZCBtZXJnZWQsIHRoZSBjb250cmlidXRvciBzaG91bGQgcmVnaXN0ZXIgaW4gdGhl
IGBUaWRlbGlmdGBfCitwbGF0Zm9ybSBhbmQgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgdGhlcmUs
IGluY2x1ZGluZyBzaWduaW5nIGFuIGBhZ3JlZW1lbnRgXy4KKworQWRtaW5zCis9PT09PT0KKwor
QSBmZXcgcGVvcGxlIGhhdmUgYWRtaW4gYWNjZXNzIHRvIHRoZSBUaWRlbGlmdCBkYXNoYm9hcmQg
dG8gbWFrZSBjaGFuZ2VzLiBUaG9zZSBwZW9wbGUKK2FyZSBwYXJ0IG9mIHRoZSBgQHB5dGVzdC1k
ZXYvdGlkZWxpZnQtYWRtaW5zYF8gdGVhbS4KKworYENvcmUgY29udHJpYnV0b3JzYF8gaW50ZXJl
c3RlZCBpbiBoZWxwaW5nIG91dCB3aXRoIFRpZGVsaWZ0IG1haW50ZW5hbmNlIGFyZSB3ZWxjb21l
ISBXZSBkb24ndAorZXhwZWN0IG11Y2ggd29yayBoZXJlIG90aGVyIHRoYW4gdGhlIG9jY2FzaW9u
YWwgYWRkaW5nL3JlbW92YWwgb2YgYSBjb250cmlidXRvciBmcm9tIHJlY2VpdmluZworZnVuZHMu
IEp1c3QgZHJvcCBhIGxpbmUgdG8gb25lIG9mIHRoZSBgQHB5dGVzdC1kZXYvdGlkZWxpZnQtYWRt
aW5zYF8gb3IgdXNlIHRoZSBtYWlsaW5nIGxpc3QuCisKKworLi4gX2BUaWRlbGlmdGA6IGh0dHBz
Oi8vdGlkZWxpZnQuY29tCisuLiBfYG1haWxpbmcgbGlzdGA6IGh0dHBzOi8vbWFpbC5weXRob24u
b3JnL3BpcGVybWFpbC9weXRlc3QtZGV2LzIwMTktTWF5LzAwNDcxNi5odG1sCisuLiBfYGNvbnRy
aWJ1dG9ycyB0ZWFtYDogaHR0cHM6Ly9naXRodWIuY29tL29yZ3MvcHl0ZXN0LWRldi90ZWFtcy9j
b250cmlidXRvcnMKKy4uIF9gY29yZSBjb250cmlidXRvcnNgOiBodHRwczovL2dpdGh1Yi5jb20v
b3Jncy9weXRlc3QtZGV2L3RlYW1zL2NvcmUvbWVtYmVycworLi4gX2BAcHl0ZXN0LWRldi90aWRl
bGlmdC1hZG1pbnNgOiBodHRwczovL2dpdGh1Yi5jb20vb3Jncy9weXRlc3QtZGV2L3RlYW1zL3Rp
ZGVsaWZ0LWFkbWlucy9tZW1iZXJzCisuLiBfYGFncmVlbWVudGA6IGh0dHBzOi8vdGlkZWxpZnQu
Y29tL2RvY3MvbGlmdGluZy9hZ3JlZW1lbnQKKworLi4gX2BAYXNvdHRpbGVgOiBodHRwczovL2dp
dGh1Yi5jb20vYXNvdHRpbGUKKy4uIF9gQG5pY29kZGVtdXNgOiBodHRwczovL2dpdGh1Yi5jb20v
bmljb2RkZW11cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZlNDFmMDUwNGU0Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLV9fYWxsX18gPSBb
J19fdmVyc2lvbl9fJ10KLQotdHJ5OgotICAgIGZyb20gLl92ZXJzaW9uIGltcG9ydCB2ZXJzaW9u
IGFzIF9fdmVyc2lvbl9fCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBicm9rZW4gaW5zdGFs
bGF0aW9uLCB3ZSBkb24ndCBldmVuIHRyeQotICAgICMgdW5rbm93biBvbmx5IHdvcmtzIGJlY2F1
c2Ugd2UgZG8gcG9vciBtYW5zIHZlcnNpb24gY29tcGFyZQotICAgIF9fdmVyc2lvbl9fID0gJ3Vu
a25vd24nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19hcmdjb21wbGV0ZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwNjI1YTc1ZjlmMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L19hcmdjb21wbGV0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0K
LSIiImFsbG93IGJhc2gtY29tcGxldGlvbiBmb3IgYXJncGFyc2Ugd2l0aCBhcmdjb21wbGV0ZSBp
ZiBpbnN0YWxsZWQKLW5lZWRzIGFyZ2NvbXBsZXRlPj0wLjUuNiBmb3IgcHl0aG9uIDMuMi8zLjMg
KG9sZGVyIHZlcnNpb25zIGZhaWwKLXRvIGZpbmQgdGhlIG1hZ2ljIHN0cmluZywgc28gX0FSR0NP
TVBMRVRFIGVudi4gdmFyIGlzIG5ldmVyIHNldCwgYW5kCi10aGlzIGRvZXMgbm90IG5lZWQgc3Bl
Y2lhbCBjb2RlLgotCi1GdW5jdGlvbiB0cnlfYXJnY29tcGxldGUocGFyc2VyKSBzaG91bGQgYmUg
Y2FsbGVkIGRpcmVjdGx5IGJlZm9yZQotdGhlIGNhbGwgdG8gQXJndW1lbnRQYXJzZXIucGFyc2Vf
YXJncygpLgotCi1UaGUgZmlsZXNjb21wbGV0ZXIgaXMgd2hhdCB5b3Ugbm9ybWFsbHkgd291bGQg
dXNlIG9uIHRoZSBwb3NpdGlvbmFsCi1hcmd1bWVudHMgc3BlY2lmaWNhdGlvbiwgaW4gb3JkZXIg
dG8gZ2V0ICJkaXJuYW1lLyIgYWZ0ZXIgImRpcm48VEFCPiIKLWluc3RlYWQgb2YgdGhlIGRlZmF1
bHQgImRpcm5hbWUgIjoKLQotICAgb3B0cGFyc2VyLmFkZF9hcmd1bWVudChDb25maWcuX2ZpbGVf
b3JfZGlyLCBuYXJncz0nKicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmNvbXBs
ZXRlcj1maWxlc2NvbXBsZXRlcgotCi1PdGhlciwgYXBwbGljYXRpb24gc3BlY2lmaWMsIGNvbXBs
ZXRlcnMgc2hvdWxkIGdvIGluIHRoZSBmaWxlCi1kb2luZyB0aGUgYWRkX2FyZ3VtZW50IGNhbGxz
IGFzIHRoZXkgbmVlZCB0byBiZSBzcGVjaWZpZWQgYXMgLmNvbXBsZXRlcgotYXR0cmlidXRlcyBh
cyB3ZWxsLiAoSWYgYXJnY29tcGxldGUgaXMgbm90IGluc3RhbGxlZCwgdGhlIGZ1bmN0aW9uIHRo
ZQotYXR0cmlidXRlIHBvaW50cyB0byB3aWxsIG5vdCBiZSB1c2VkKS4KLQotU1BFRURVUAotPT09
PT09PQotVGhlIGdlbmVyaWMgYXJnY29tcGxldGUgc2NyaXB0IGZvciBiYXNoLWNvbXBsZXRpb24K
LSgvZXRjL2Jhc2hfY29tcGxldGlvbi5kL3B5dGhvbi1hcmdjb21wbGV0ZS5zaCApCi11c2VzIGEg
cHl0aG9uIHByb2dyYW0gdG8gZGV0ZXJtaW5lIHN0YXJ0dXAgc2NyaXB0IGdlbmVyYXRlZCBieSBw
aXAuCi1Zb3UgY2FuIHNwZWVkIHVwIGNvbXBsZXRpb24gc29tZXdoYXQgYnkgY2hhbmdpbmcgdGhp
cyBzY3JpcHQgdG8gaW5jbHVkZQotICAjIFBZVEhPTl9BUkdDT01QTEVURV9PSwotc28gdGhlIHRo
ZSBweXRob24tYXJnY29tcGxldGUtY2hlY2stZWFzeS1pbnN0YWxsLXNjcmlwdCBkb2VzIG5vdAot
bmVlZCB0byBiZSBjYWxsZWQgdG8gZmluZCB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIGNvZGUgYW5k
IHNlZSBpZiB0aGF0IGlzCi1tYXJrZWQgIHdpdGggUFlUSE9OX0FSR0NPTVBMRVRFX09LCi0KLUlO
U1RBTEwvREVCVUdHSU5HCi09PT09PT09PT09PT09PT09PQotVG8gaW5jbHVkZSB0aGlzIHN1cHBv
cnQgaW4gYW5vdGhlciBhcHBsaWNhdGlvbiB0aGF0IGhhcyBzZXR1cC5weSBnZW5lcmF0ZWQKLXNj
cmlwdHM6Ci0tIGFkZCB0aGUgbGluZToKLSAgICAjIFBZVEhPTl9BUkdDT01QTEVURV9PSwotICBu
ZWFyIHRoZSB0b3Agb2YgdGhlIG1haW4gcHl0aG9uIGVudHJ5IHBvaW50Ci0tIGluY2x1ZGUgaW4g
dGhlIGZpbGUgY2FsbGluZyBwYXJzZV9hcmdzKCk6Ci0gICAgZnJvbSBfYXJnY29tcGxldGUgaW1w
b3J0IHRyeV9hcmdjb21wbGV0ZSwgZmlsZXNjb21wbGV0ZXIKLSAgICwgY2FsbCB0cnlfYXJnY29t
cGxldGUganVzdCBiZWZvcmUgcGFyc2VfYXJncygpLCBhbmQgb3B0aW9uYWxseSBhZGQKLSAgIGZp
bGVzY29tcGxldGVyIHRvIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cycgYWRkX2FyZ3VtZW50KCkK
LUlmIHRoaW5ncyBkbyBub3Qgd29yayByaWdodCBhd2F5OgotLSBzd2l0Y2ggb24gYXJnY29tcGxl
dGUgZGVidWdnaW5nIHdpdGggKGFsc28gaGVscGZ1bCB3aGVuIGRvaW5nIGN1c3RvbQotICBjb21w
bGV0ZXJzKToKLSAgICBleHBvcnQgX0FSQ19ERUJVRz0xCi0tIHJ1bjoKLSAgICBweXRob24tYXJn
Y29tcGxldGUtY2hlY2stZWFzeS1pbnN0YWxsLXNjcmlwdCAkKHdoaWNoIGFwcG5hbWUpCi0gICAg
ZWNobyAkPwotICB3aWxsIGVjaG8gMCBpZiB0aGUgbWFnaWMgbGluZSBoYXMgYmVlbiBmb3VuZCwg
MSBpZiBub3QKLS0gc29tZXRpbWVzIGl0IGhlbHBzIHRvIGZpbmQgZWFybHkgb24gZXJyb3JzIHVz
aW5nOgotICAgIF9BUkdDT01QTEVURT0xIF9BUkNfREVCVUc9MSBhcHBuYW1lCi0gIHdoaWNoIHNo
b3VsZCB0aHJvdyBhIEtleUVycm9yOiAnQ09NUExJTkUnICh3aGljaCBpcyBwcm9wZXJseSBzZXQg
YnkgdGhlCi0gIGdsb2JhbCBhcmdjb21wbGV0ZSBzY3JpcHQpLgotIiIiCi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBv
cnQgc3lzCi1pbXBvcnQgb3MKLWZyb20gZ2xvYiBpbXBvcnQgZ2xvYgotCi0KLWNsYXNzIEZhc3RG
aWxlc0NvbXBsZXRlcjoKLSAgICAnRmFzdCBmaWxlIGNvbXBsZXRlciBjbGFzcycKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBkaXJlY3Rvcmllcz1UcnVlKToKLSAgICAgICAgc2VsZi5kaXJlY3Rv
cmllcyA9IGRpcmVjdG9yaWVzCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcHJlZml4LCAqKmt3
YXJncyk6Ci0gICAgICAgICIiIm9ubHkgY2FsbGVkIG9uIG5vbiBvcHRpb24gY29tcGxldGlvbnMi
IiIKLSAgICAgICAgaWYgb3MucGF0aC5zZXAgaW4gcHJlZml4WzE6XToKLSAgICAgICAgICAgIHBy
ZWZpeF9kaXIgPSBsZW4ob3MucGF0aC5kaXJuYW1lKHByZWZpeCkgKyBvcy5wYXRoLnNlcCkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHByZWZpeF9kaXIgPSAwCi0gICAgICAgIGNvbXBsZXRp
b24gPSBbXQotICAgICAgICBnbG9iYmVkID0gW10KLSAgICAgICAgaWYgJyonIG5vdCBpbiBwcmVm
aXggYW5kICc/JyBub3QgaW4gcHJlZml4OgotICAgICAgICAgICAgIyB3ZSBhcmUgb24gdW5peCwg
b3RoZXJ3aXNlIG5vIGJhc2gKLSAgICAgICAgICAgIGlmIG5vdCBwcmVmaXggb3IgcHJlZml4Wy0x
XSA9PSBvcy5wYXRoLnNlcDoKLSAgICAgICAgICAgICAgICBnbG9iYmVkLmV4dGVuZChnbG9iKHBy
ZWZpeCArICcuKicpKQotICAgICAgICAgICAgcHJlZml4ICs9ICcqJwotICAgICAgICBnbG9iYmVk
LmV4dGVuZChnbG9iKHByZWZpeCkpCi0gICAgICAgIGZvciB4IGluIHNvcnRlZChnbG9iYmVkKToK
LSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoeCk6Ci0gICAgICAgICAgICAgICAgeCArPSAn
LycKLSAgICAgICAgICAgICMgYXBwZW5kIHN0cmlwcGluZyB0aGUgcHJlZml4IChsaWtlIGJhc2gs
IG5vdCBsaWtlIGNvbXBnZW4pCi0gICAgICAgICAgICBjb21wbGV0aW9uLmFwcGVuZCh4W3ByZWZp
eF9kaXI6XSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24KLQotCi1pZiBvcy5lbnZpcm9uLmdl
dCgnX0FSR0NPTVBMRVRFJyk6Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgYXJnY29tcGxldGUu
Y29tcGxldGVycwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgc3lzLmV4aXQoLTEp
Ci0gICAgZmlsZXNjb21wbGV0ZXIgPSBGYXN0RmlsZXNDb21wbGV0ZXIoKQotCi0gICAgZGVmIHRy
eV9hcmdjb21wbGV0ZShwYXJzZXIpOgotICAgICAgICBhcmdjb21wbGV0ZS5hdXRvY29tcGxldGUo
cGFyc2VyLCBhbHdheXNfY29tcGxldGVfb3B0aW9ucz1GYWxzZSkKLWVsc2U6Ci0gICAgZGVmIHRy
eV9hcmdjb21wbGV0ZShwYXJzZXIpOgotICAgICAgICBwYXNzCi0gICAgZmlsZXNjb21wbGV0ZXIg
PSBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODE1YzEzYjQyYzI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAg
QEAKLSIiIiBweXRob24gaW5zcGVjdGlvbi9jb2RlIGdlbmVyYXRpb24gQVBJICIiIgotZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlv
bgotZnJvbSAuY29kZSBpbXBvcnQgQ29kZSAgIyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBFeGNl
cHRpb25JbmZvICAjIG5vcWEKLWZyb20gLmNvZGUgaW1wb3J0IEZyYW1lICAjIG5vcWEKLWZyb20g
LmNvZGUgaW1wb3J0IFRyYWNlYmFjayAgIyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBnZXRyYXdj
b2RlICAjIG5vcWEKLWZyb20gLnNvdXJjZSBpbXBvcnQgU291cmNlICAjIG5vcWEKLWZyb20gLnNv
dXJjZSBpbXBvcnQgY29tcGlsZV8gYXMgY29tcGlsZSAgIyBub3FhCi1mcm9tIC5zb3VyY2UgaW1w
b3J0IGdldGZzbGluZW5vICAjIG5vcWEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
X2NvZGUvX3B5MnRyYWNlYmFjay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvX3B5MnRy
YWNlYmFjay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFhY2YwYTQyOGQ4Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9fcHkydHJhY2ViYWNr
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotIyBjb3BpZWQgZnJvbSBweXRob24t
Mi43LjMncyB0cmFjZWJhY2sucHkKLSMgQ0hBTkdFUzoKLSMgLSBzb21lX3N0ciBpcyByZXBsYWNl
ZCwgdHJ5aW5nIHRvIGNyZWF0ZSB1bmljb2RlIHN0cmluZ3MKLSMKLWZyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCB0
eXBlcwotCi0KLWRlZiBmb3JtYXRfZXhjZXB0aW9uX29ubHkoZXR5cGUsIHZhbHVlKToKLSAgICAi
IiJGb3JtYXQgdGhlIGV4Y2VwdGlvbiBwYXJ0IG9mIGEgdHJhY2ViYWNrLgotCi0gICAgVGhlIGFy
Z3VtZW50cyBhcmUgdGhlIGV4Y2VwdGlvbiB0eXBlIGFuZCB2YWx1ZSBzdWNoIGFzIGdpdmVuIGJ5
Ci0gICAgc3lzLmxhc3RfdHlwZSBhbmQgc3lzLmxhc3RfdmFsdWUuIFRoZSByZXR1cm4gdmFsdWUg
aXMgYSBsaXN0IG9mCi0gICAgc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lLgotCi0g
ICAgTm9ybWFsbHksIHRoZSBsaXN0IGNvbnRhaW5zIGEgc2luZ2xlIHN0cmluZzsgaG93ZXZlciwg
Zm9yCi0gICAgU3ludGF4RXJyb3IgZXhjZXB0aW9ucywgaXQgY29udGFpbnMgc2V2ZXJhbCBsaW5l
cyB0aGF0ICh3aGVuCi0gICAgcHJpbnRlZCkgZGlzcGxheSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBh
Ym91dCB3aGVyZSB0aGUgc3ludGF4Ci0gICAgZXJyb3Igb2NjdXJyZWQuCi0KLSAgICBUaGUgbWVz
c2FnZSBpbmRpY2F0aW5nIHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxh
c3QKLSAgICBzdHJpbmcgaW4gdGhlIGxpc3QuCi0KLSAgICAiIiIKLQotICAgICMgQW4gaW5zdGFu
Y2Ugc2hvdWxkIG5vdCBoYXZlIGEgbWVhbmluZ2Z1bCB2YWx1ZSBwYXJhbWV0ZXIsIGJ1dAotICAg
ICMgc29tZXRpbWVzIGRvZXMsIHBhcnRpY3VsYXJseSBmb3Igc3RyaW5nIGV4Y2VwdGlvbnMsIHN1
Y2ggYXMKLSAgICAjID4+PiByYWlzZSBzdHJpbmcxLCBzdHJpbmcyICAjIGRlcHJlY2F0ZWQKLSAg
ICAjCi0gICAgIyBDbGVhciB0aGVzZSBvdXQgZmlyc3QgYmVjYXVzZSBpc3N1YnR5cGUoc3RyaW5n
MSwgU3ludGF4RXJyb3IpCi0gICAgIyB3b3VsZCB0aHJvdyBhbm90aGVyIGV4Y2VwdGlvbiBhbmQg
bWFzayB0aGUgb3JpZ2luYWwgcHJvYmxlbS4KLSAgICBpZiAoaXNpbnN0YW5jZShldHlwZSwgQmFz
ZUV4Y2VwdGlvbikgb3IKLSAgICAgICAgaXNpbnN0YW5jZShldHlwZSwgdHlwZXMuSW5zdGFuY2VU
eXBlKSBvcgotICAgICAgICAgICAgZXR5cGUgaXMgTm9uZSBvciB0eXBlKGV0eXBlKSBpcyBzdHIp
OgotICAgICAgICByZXR1cm4gW19mb3JtYXRfZmluYWxfZXhjX2xpbmUoZXR5cGUsIHZhbHVlKV0K
LQotICAgIHN0eXBlID0gZXR5cGUuX19uYW1lX18KLQotICAgIGlmIG5vdCBpc3N1YmNsYXNzKGV0
eXBlLCBTeW50YXhFcnJvcik6Ci0gICAgICAgIHJldHVybiBbX2Zvcm1hdF9maW5hbF9leGNfbGlu
ZShzdHlwZSwgdmFsdWUpXQotCi0gICAgIyBJdCB3YXMgYSBzeW50YXggZXJyb3I7IHNob3cgZXhh
Y3RseSB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQuCi0gICAgbGluZXMgPSBbXQotICAgIHRy
eToKLSAgICAgICAgbXNnLCAoZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBiYWRsaW5lKSA9IHZh
bHVlLmFyZ3MKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBwYXNzCi0gICAgZWxzZToK
LSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSBvciAiPHN0cmluZz4iCi0gICAgICAgIGxpbmVz
LmFwcGVuZCgnICBGaWxlICIlcyIsIGxpbmUgJWRcbicgJSAoZmlsZW5hbWUsIGxpbmVubykpCi0g
ICAgICAgIGlmIGJhZGxpbmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNl
KGJhZGxpbmUsIGJ5dGVzKTogICMgcHl0aG9uIDIgb25seQotICAgICAgICAgICAgICAgIGJhZGxp
bmUgPSBiYWRsaW5lLmRlY29kZSgndXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICBsaW5l
cy5hcHBlbmQodScgICAgJXNcbicgJSBiYWRsaW5lLnN0cmlwKCkpCi0gICAgICAgICAgICBpZiBv
ZmZzZXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGJhZGxpbmUu
cnN0cmlwKCdcbicpWzpvZmZzZXRdLmxzdHJpcCgpCi0gICAgICAgICAgICAgICAgIyBub24tc3Bh
Y2Ugd2hpdGVzcGFjZSAobGlrZXMgdGFicykgbXVzdCBiZSBrZXB0IGZvciBhbGlnbm1lbnQKLSAg
ICAgICAgICAgICAgICBjYXJldHNwYWNlID0gKChjLmlzc3BhY2UoKSBhbmQgYyBvciAnICcpIGZv
ciBjIGluIGNhcmV0c3BhY2UpCi0gICAgICAgICAgICAgICAgIyBvbmx5IHRocmVlIHNwYWNlcyB0
byBhY2NvdW50IGZvciBvZmZzZXQxID09IHBvcyAwCi0gICAgICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAlc15cbicgJSAnJy5qb2luKGNhcmV0c3BhY2UpKQotICAgICAgICB2YWx1ZSA9IG1z
ZwotCi0gICAgbGluZXMuYXBwZW5kKF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUsIHZhbHVl
KSkKLSAgICByZXR1cm4gbGluZXMKLQotCi1kZWYgX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlw
ZSwgdmFsdWUpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYSBzaW5nbGUgbGluZSAtLSBub3Jt
YWwgY2FzZSBmb3IgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5IiIiCi0gICAgdmFsdWVzdHIgPSBfc29t
ZV9zdHIodmFsdWUpCi0gICAgaWYgdmFsdWUgaXMgTm9uZSBvciBub3QgdmFsdWVzdHI6Ci0gICAg
ICAgIGxpbmUgPSAiJXNcbiIgJSBldHlwZQotICAgIGVsc2U6Ci0gICAgICAgIGxpbmUgPSAiJXM6
ICVzXG4iICUgKGV0eXBlLCB2YWx1ZXN0cikKLSAgICByZXR1cm4gbGluZQotCi0KLWRlZiBfc29t
ZV9zdHIodmFsdWUpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHVuaWNvZGUodmFsdWUpCi0g
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0
cih2YWx1ZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHBhc3MKLSAg
ICByZXR1cm4gJzx1bnByaW50YWJsZSAlcyBvYmplY3Q+JyAlIHR5cGUodmFsdWUpLl9fbmFtZV9f
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL2NvZGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L19jb2RlL2NvZGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNmYjIzMmJkNDMwZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2Nv
ZGUvY29kZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDkwNiArMCwwIEBACi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBv
cnQgc3lzCi1mcm9tIGluc3BlY3QgaW1wb3J0IENPX1ZBUkFSR1MsIENPX1ZBUktFWVdPUkRTCi1p
bXBvcnQgcmUKLWZyb20gd2Vha3JlZiBpbXBvcnQgcmVmCi1mcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBfUFkyLCBfUFkzLCBQWTM1LCBzYWZlX3N0cgotCi1pbXBvcnQgcHkKLWJ1aWx0aW5fcmVw
ciA9IHJlcHIKLQotaWYgX1BZMzoKLSAgICBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4
Y2VwdGlvbl9vbmx5Ci1lbHNlOgotICAgIGZyb20gLl9weTJ0cmFjZWJhY2sgaW1wb3J0IGZvcm1h
dF9leGNlcHRpb25fb25seQotCi0KLWNsYXNzIENvZGUob2JqZWN0KToKLSAgICAiIiIgd3JhcHBl
ciBhcm91bmQgUHl0aG9uIGNvZGUgb2JqZWN0cyAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByYXdjb2RlKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIocmF3Y29kZSwgImNvX2ZpbGVuYW1l
Iik6Ci0gICAgICAgICAgICByYXdjb2RlID0gZ2V0cmF3Y29kZShyYXdjb2RlKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gcmF3Y29kZS5jb19maWxlbmFtZQotICAg
ICAgICAgICAgc2VsZi5maXJzdGxpbmVubyA9IHJhd2NvZGUuY29fZmlyc3RsaW5lbm8gLSAxCi0g
ICAgICAgICAgICBzZWxmLm5hbWUgPSByYXdjb2RlLmNvX25hbWUKLSAgICAgICAgZXhjZXB0IEF0
dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgYSBjb2RlIG9i
amVjdDogJXIiICUgKHJhd2NvZGUsKSkKLSAgICAgICAgc2VsZi5yYXcgPSByYXdjb2RlCi0KLSAg
ICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYucmF3ID09IG90
aGVyLnJhdwotCi0gICAgX19oYXNoX18gPSBOb25lCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90
aGVyKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmID09IG90aGVyCi0KLSAgICBAcHJvcGVydHkK
LSAgICBkZWYgcGF0aChzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBhIHBhdGggb2JqZWN0IHBv
aW50aW5nIHRvIHNvdXJjZSBjb2RlIChub3RlIHRoYXQgaXQKLSAgICAgICAgbWlnaHQgbm90IHBv
aW50IHRvIGFuIGFjdHVhbGx5IGV4aXN0aW5nIGZpbGUpLiAiIiIKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwoc2VsZi5yYXcuY29fZmlsZW5hbWUpCi0gICAgICAg
ICAgICAjIG1heWJlIGRvbid0IHRyeSB0aGlzIGNoZWNraW5nCi0gICAgICAgICAgICBpZiBub3Qg
cC5jaGVjaygpOgotICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoInB5LnBhdGggY2hlY2sg
ZmFpbGVkLiIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgIyBYWFggbWF5
YmUgdHJ5IGhhcmRlciBsaWtlIHRoZSB3ZWlyZCBsb2dpYwotICAgICAgICAgICAgIyBpbiB0aGUg
c3RhbmRhcmQgbGliIFtsaW5lY2FjaGUudXBkYXRlY2FjaGVdIGRvZXM/Ci0gICAgICAgICAgICBw
ID0gc2VsZi5yYXcuY29fZmlsZW5hbWUKLQotICAgICAgICByZXR1cm4gcAotCi0gICAgQHByb3Bl
cnR5Ci0gICAgZGVmIGZ1bGxzb3VyY2Uoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gYSBfcHl0
ZXN0Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9yIHRoZSBmdWxsIHNvdXJjZSBmaWxlIG9mIHRoZSBj
b2RlCi0gICAgICAgICIiIgotICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IHNvdXJj
ZQotICAgICAgICBmdWxsLCBfID0gc291cmNlLmZpbmRzb3VyY2Uoc2VsZi5yYXcpCi0gICAgICAg
IHJldHVybiBmdWxsCi0KLSAgICBkZWYgc291cmNlKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJu
IGEgX3B5dGVzdC5fY29kZS5Tb3VyY2Ugb2JqZWN0IGZvciB0aGUgY29kZSBvYmplY3QncyBzb3Vy
Y2Ugb25seQotICAgICAgICAiIiIKLSAgICAgICAgIyByZXR1cm4gc291cmNlIG9ubHkgZm9yIHRo
YXQgcGFydCBvZiBjb2RlCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0gICAgICAgIHJl
dHVybiBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShzZWxmLnJhdykKLQotICAgIGRlZiBnZXRhcmdzKHNl
bGYsIHZhcj1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gYSB0dXBsZSB3aXRoIHRoZSBhcmd1
bWVudCBuYW1lcyBmb3IgdGhlIGNvZGUgb2JqZWN0Ci0KLSAgICAgICAgICAgIGlmICd2YXInIGlz
IHNldCBUcnVlIGFsc28gcmV0dXJuIHRoZSBuYW1lcyBvZiB0aGUgdmFyaWFibGUgYW5kCi0gICAg
ICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyB3aGVuIHByZXNlbnQKLSAgICAgICAgIiIiCi0gICAg
ICAgICMgaGFuZGZ1bGwgc2hvcnRjdXQgZm9yIGdldHRpbmcgYXJncwotICAgICAgICByYXcgPSBz
ZWxmLnJhdwotICAgICAgICBhcmdjb3VudCA9IHJhdy5jb19hcmdjb3VudAotICAgICAgICBpZiB2
YXI6Ci0gICAgICAgICAgICBhcmdjb3VudCArPSByYXcuY29fZmxhZ3MgJiBDT19WQVJBUkdTCi0g
ICAgICAgICAgICBhcmdjb3VudCArPSByYXcuY29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUwotICAg
ICAgICByZXR1cm4gcmF3LmNvX3Zhcm5hbWVzWzphcmdjb3VudF0KLQotCi1jbGFzcyBGcmFtZShv
YmplY3QpOgotICAgICIiIldyYXBwZXIgYXJvdW5kIGEgUHl0aG9uIGZyYW1lIGhvbGRpbmcgZl9s
b2NhbHMgYW5kIGZfZ2xvYmFscwotICAgIGluIHdoaWNoIGV4cHJlc3Npb25zIGNhbiBiZSBldmFs
dWF0ZWQuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWUpOgotICAgICAgICBzZWxm
LmxpbmVubyA9IGZyYW1lLmZfbGluZW5vIC0gMQotICAgICAgICBzZWxmLmZfZ2xvYmFscyA9IGZy
YW1lLmZfZ2xvYmFscwotICAgICAgICBzZWxmLmZfbG9jYWxzID0gZnJhbWUuZl9sb2NhbHMKLSAg
ICAgICAgc2VsZi5yYXcgPSBmcmFtZQotICAgICAgICBzZWxmLmNvZGUgPSBDb2RlKGZyYW1lLmZf
Y29kZSkKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBzdGF0ZW1lbnQoc2VsZik6Ci0gICAgICAg
ICIiIiBzdGF0ZW1lbnQgdGhpcyBmcmFtZSBpcyBhdCAiIiIKLSAgICAgICAgaW1wb3J0IF9weXRl
c3QuX2NvZGUKLSAgICAgICAgaWYgc2VsZi5jb2RlLmZ1bGxzb3VyY2UgaXMgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgiIikKLSAgICAgICAgcmV0dXJuIHNl
bGYuY29kZS5mdWxsc291cmNlLmdldHN0YXRlbWVudChzZWxmLmxpbmVubykKLQotICAgIGRlZiBl
dmFsKHNlbGYsIGNvZGUsICoqdmFycyk6Ci0gICAgICAgICIiIiBldmFsdWF0ZSAnY29kZScgaW4g
dGhlIGZyYW1lCi0KLSAgICAgICAgICAgICd2YXJzJyBhcmUgb3B0aW9uYWwgYWRkaXRpb25hbCBs
b2NhbCB2YXJpYWJsZXMKLQotICAgICAgICAgICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBl
dmFsdWF0aW9uCi0gICAgICAgICIiIgotICAgICAgICBmX2xvY2FscyA9IHNlbGYuZl9sb2NhbHMu
Y29weSgpCi0gICAgICAgIGZfbG9jYWxzLnVwZGF0ZSh2YXJzKQotICAgICAgICByZXR1cm4gZXZh
bChjb2RlLCBzZWxmLmZfZ2xvYmFscywgZl9sb2NhbHMpCi0KLSAgICBkZWYgZXhlY18oc2VsZiwg
Y29kZSwgKip2YXJzKToKLSAgICAgICAgIiIiIGV4ZWMgJ2NvZGUnIGluIHRoZSBmcmFtZQotCi0g
ICAgICAgICAgICAndmFycycgYXJlIG9wdGlvbmE7IGFkZGl0aW9uYWwgbG9jYWwgdmFyaWFibGVz
Ci0gICAgICAgICIiIgotICAgICAgICBmX2xvY2FscyA9IHNlbGYuZl9sb2NhbHMuY29weSgpCi0g
ICAgICAgIGZfbG9jYWxzLnVwZGF0ZSh2YXJzKQotICAgICAgICBweS5idWlsdGluLmV4ZWNfKGNv
ZGUsIHNlbGYuZl9nbG9iYWxzLCBmX2xvY2FscykKLQotICAgIGRlZiByZXByKHNlbGYsIG9iamVj
dCk6Ci0gICAgICAgICIiIiByZXR1cm4gYSAnc2FmZScgKG5vbi1yZWN1cnNpdmUsIG9uZS1saW5l
KSBzdHJpbmcgcmVwciBmb3IgJ29iamVjdCcKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBw
eS5pby5zYWZlcmVwcihvYmplY3QpCi0KLSAgICBkZWYgaXNfdHJ1ZShzZWxmLCBvYmplY3QpOgot
ICAgICAgICByZXR1cm4gb2JqZWN0Ci0KLSAgICBkZWYgZ2V0YXJncyhzZWxmLCB2YXI9RmFsc2Up
OgotICAgICAgICAiIiIgcmV0dXJuIGEgbGlzdCBvZiB0dXBsZXMgKG5hbWUsIHZhbHVlKSBmb3Ig
YWxsIGFyZ3VtZW50cwotCi0gICAgICAgICAgICBpZiAndmFyJyBpcyBzZXQgVHJ1ZSBhbHNvIGlu
Y2x1ZGUgdGhlIHZhcmlhYmxlIGFuZCBrZXl3b3JkCi0gICAgICAgICAgICBhcmd1bWVudHMgd2hl
biBwcmVzZW50Ci0gICAgICAgICIiIgotICAgICAgICByZXR2YWwgPSBbXQotICAgICAgICBmb3Ig
YXJnIGluIHNlbGYuY29kZS5nZXRhcmdzKHZhcik6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgcmV0dmFsLmFwcGVuZCgoYXJnLCBzZWxmLmZfbG9jYWxzW2FyZ10pKQotICAgICAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MgICAgICMgdGhpcyBj
YW4gb2NjdXIgd2hlbiB1c2luZyBQc3ljbwotICAgICAgICByZXR1cm4gcmV0dmFsCi0KLQotY2xh
c3MgVHJhY2ViYWNrRW50cnkob2JqZWN0KToKLSAgICAiIiIgYSBzaW5nbGUgZW50cnkgaW4gYSB0
cmFjZWJhY2sgIiIiCi0KLSAgICBfcmVwcl9zdHlsZSA9IE5vbmUKLSAgICBleHByaW5mbyA9IE5v
bmUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXdlbnRyeSwgZXhjaW5mbz1Ob25lKToKLSAg
ICAgICAgc2VsZi5fZXhjaW5mbyA9IGV4Y2luZm8KLSAgICAgICAgc2VsZi5fcmF3ZW50cnkgPSBy
YXdlbnRyeQotICAgICAgICBzZWxmLmxpbmVubyA9IHJhd2VudHJ5LnRiX2xpbmVubyAtIDEKLQot
ICAgIGRlZiBzZXRfcmVwcl9zdHlsZShzZWxmLCBtb2RlKToKLSAgICAgICAgYXNzZXJ0IG1vZGUg
aW4gKCJzaG9ydCIsICJsb25nIikKLSAgICAgICAgc2VsZi5fcmVwcl9zdHlsZSA9IG1vZGUKLQot
ICAgIEBwcm9wZXJ0eQotICAgIGRlZiBmcmFtZShzZWxmKToKLSAgICAgICAgaW1wb3J0IF9weXRl
c3QuX2NvZGUKLSAgICAgICAgcmV0dXJuIF9weXRlc3QuX2NvZGUuRnJhbWUoc2VsZi5fcmF3ZW50
cnkudGJfZnJhbWUpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgcmVsbGluZShzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYubGluZW5vIC0gc2VsZi5mcmFtZS5jb2RlLmZpcnN0bGluZW5vCi0K
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFRyYWNlYmFja0VudHJ5
ICVzOiVkPiIgJSAoc2VsZi5mcmFtZS5jb2RlLnBhdGgsIHNlbGYubGluZW5vICsgMSkKLQotICAg
IEBwcm9wZXJ0eQotICAgIGRlZiBzdGF0ZW1lbnQoc2VsZik6Ci0gICAgICAgICIiIiBfcHl0ZXN0
Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHN0YXRlbWVudCAiIiIKLSAgICAg
ICAgc291cmNlID0gc2VsZi5mcmFtZS5jb2RlLmZ1bGxzb3VyY2UKLSAgICAgICAgcmV0dXJuIHNv
dXJjZS5nZXRzdGF0ZW1lbnQoc2VsZi5saW5lbm8pCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYg
cGF0aChzZWxmKToKLSAgICAgICAgIiIiIHBhdGggdG8gdGhlIHNvdXJjZSBjb2RlICIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5mcmFtZS5jb2RlLnBhdGgKLQotICAgIGRlZiBnZXRsb2NhbHMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLmZyYW1lLmZfbG9jYWxzCi0gICAgbG9jYWxzID0gcHJv
cGVydHkoZ2V0bG9jYWxzLCBOb25lLCBOb25lLCAibG9jYWxzIG9mIHVuZGVybGF5aW5nIGZyYW1l
IikKLQotICAgIGRlZiBnZXRmaXJzdGxpbmVzb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgb24gSnl0
aG9uIHRoaXMgZmlyc3RsaW5lbm8gY2FuIGJlIC0xIGFwcGFyZW50bHkKLSAgICAgICAgcmV0dXJu
IG1heChzZWxmLmZyYW1lLmNvZGUuZmlyc3RsaW5lbm8sIDApCi0KLSAgICBkZWYgZ2V0c291cmNl
KHNlbGYsIGFzdGNhY2hlPU5vbmUpOgotICAgICAgICAiIiIgcmV0dXJuIGZhaWxpbmcgc291cmNl
IGNvZGUuICIiIgotICAgICAgICAjIHdlIHVzZSB0aGUgcGFzc2VkIGluIGFzdGNhY2hlIHRvIG5v
dCByZXBhcnNlIGFzdHRyZWVzCi0gICAgICAgICMgd2l0aGluIGV4Y2VwdGlvbiBpbmZvIHByaW50
aW5nCi0gICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IGdldHN0YXRlbWVu
dHJhbmdlX2FzdAotICAgICAgICBzb3VyY2UgPSBzZWxmLmZyYW1lLmNvZGUuZnVsbHNvdXJjZQot
ICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgIGtleSA9IGFzdG5vZGUgPSBOb25lCi0gICAgICAgIGlmIGFzdGNhY2hlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAga2V5ID0gc2VsZi5mcmFtZS5jb2RlLnBhdGgKLSAgICAgICAgICAgIGlm
IGtleSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBhc3Rub2RlID0gYXN0Y2FjaGUuZ2V0
KGtleSwgTm9uZSkKLSAgICAgICAgc3RhcnQgPSBzZWxmLmdldGZpcnN0bGluZXNvdXJjZSgpCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIGFzdG5vZGUsIF8sIGVuZCA9IGdldHN0YXRlbWVudHJh
bmdlX2FzdChzZWxmLmxpbmVubywgc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFzdG5vZGU9YXN0bm9kZSkKLSAgICAgICAgZXhjZXB0
IFN5bnRheEVycm9yOgotICAgICAgICAgICAgZW5kID0gc2VsZi5saW5lbm8gKyAxCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBpZiBrZXkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
YXN0Y2FjaGVba2V5XSA9IGFzdG5vZGUKLSAgICAgICAgcmV0dXJuIHNvdXJjZVtzdGFydDplbmRd
Ci0KLSAgICBzb3VyY2UgPSBwcm9wZXJ0eShnZXRzb3VyY2UpCi0KLSAgICBkZWYgaXNoaWRkZW4o
c2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBoYXMg
YSB2YXIgX190cmFjZWJhY2toaWRlX18KLSAgICAgICAgICAgIHJlc29sdmluZyB0byBUcnVlCi0K
LSAgICAgICAgICAgIElmIF9fdHJhY2ViYWNraGlkZV9fIGlzIGEgY2FsbGFibGUsIGl0IGdldHMg
Y2FsbGVkIHdpdGggdGhlCi0gICAgICAgICAgICBFeGNlcHRpb25JbmZvIGluc3RhbmNlIGFuZCBj
YW4gZGVjaWRlIHdoZXRoZXIgdG8gaGlkZSB0aGUgdHJhY2ViYWNrLgotCi0gICAgICAgICAgICBt
b3N0bHkgZm9yIGludGVybmFsIHVzZQotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgdGJoID0gc2VsZi5mcmFtZS5mX2xvY2Fsc1snX190cmFjZWJhY2toaWRlX18nXQotICAg
ICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
dGJoID0gc2VsZi5mcmFtZS5mX2dsb2JhbHNbJ19fdHJhY2ViYWNraGlkZV9fJ10KLSAgICAgICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
ICAgICBpZiBjYWxsYWJsZSh0YmgpOgotICAgICAgICAgICAgcmV0dXJuIHRiaChOb25lIGlmIHNl
bGYuX2V4Y2luZm8gaXMgTm9uZSBlbHNlIHNlbGYuX2V4Y2luZm8oKSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJldHVybiB0YmgKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBmbiA9IHN0cihzZWxmLnBhdGgpCi0gICAgICAgIGV4Y2VwdCBw
eS5lcnJvci5FcnJvcjoKLSAgICAgICAgICAgIGZuID0gJz8/PycKLSAgICAgICAgbmFtZSA9IHNl
bGYuZnJhbWUuY29kZS5uYW1lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxpbmUgPSBzdHIo
c2VsZi5zdGF0ZW1lbnQpLmxzdHJpcCgpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVw
dDoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAg
ICAgbGluZSA9ICI/Pz8iCi0gICAgICAgIHJldHVybiAiICBGaWxlICVyOiVkIGluICVzXG4gICVz
XG4iICUgKGZuLCBzZWxmLmxpbmVubyArIDEsIG5hbWUsIGxpbmUpCi0KLSAgICBkZWYgbmFtZShz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZnJhbWUuY29kZS5yYXcuY29fbmFtZQotICAgIG5h
bWUgPSBwcm9wZXJ0eShuYW1lLCBOb25lLCBOb25lLCAiY29fbmFtZSBvZiB1bmRlcmxheWluZyBj
b2RlIikKLQotCi1jbGFzcyBUcmFjZWJhY2sobGlzdCk6Ci0gICAgIiIiIFRyYWNlYmFjayBvYmpl
Y3RzIGVuY2Fwc3VsYXRlIGFuZCBvZmZlciBoaWdoZXIgbGV2ZWwKLSAgICAgICAgYWNjZXNzIHRv
IFRyYWNlYmFjayBlbnRyaWVzLgotICAgICIiIgotICAgIEVudHJ5ID0gVHJhY2ViYWNrRW50cnkK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YiwgZXhjaW5mbz1Ob25lKToKLSAgICAgICAgIiIi
IGluaXRpYWxpemUgZnJvbSBnaXZlbiBweXRob24gdHJhY2ViYWNrIG9iamVjdCBhbmQgRXhjZXB0
aW9uSW5mbyAiIiIKLSAgICAgICAgc2VsZi5fZXhjaW5mbyA9IGV4Y2luZm8KLSAgICAgICAgaWYg
aGFzYXR0cih0YiwgJ3RiX25leHQnKToKLSAgICAgICAgICAgIGRlZiBmKGN1cik6Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgY3VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICB5aWVs
ZCBzZWxmLkVudHJ5KGN1ciwgZXhjaW5mbz1leGNpbmZvKQotICAgICAgICAgICAgICAgICAgICBj
dXIgPSBjdXIudGJfbmV4dAotICAgICAgICAgICAgbGlzdC5fX2luaXRfXyhzZWxmLCBmKHRiKSkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpc3QuX19pbml0X18oc2VsZiwgdGIpCi0KLSAg
ICBkZWYgY3V0KHNlbGYsIHBhdGg9Tm9uZSwgbGluZW5vPU5vbmUsIGZpcnN0bGluZW5vPU5vbmUs
IGV4Y2x1ZGVwYXRoPU5vbmUpOgotICAgICAgICAiIiIgcmV0dXJuIGEgVHJhY2ViYWNrIGluc3Rh
bmNlIHdyYXBwaW5nIHBhcnQgb2YgdGhpcyBUcmFjZWJhY2sKLQotICAgICAgICAgICAgYnkgcHJv
dmRpbmcgYW55IGNvbWJpbmF0aW9uIG9mIHBhdGgsIGxpbmVubyBhbmQgZmlyc3RsaW5lbm8sIHRo
ZQotICAgICAgICAgICAgZmlyc3QgZnJhbWUgdG8gc3RhcnQgdGhlIHRvLWJlLXJldHVybmVkIHRy
YWNlYmFjayBpcyBkZXRlcm1pbmVkCi0KLSAgICAgICAgICAgIHRoaXMgYWxsb3dzIGN1dHRpbmcg
dGhlIGZpcnN0IHBhcnQgb2YgYSBUcmFjZWJhY2sgaW5zdGFuY2UgZS5nLgotICAgICAgICAgICAg
Zm9yIGZvcm1hdHRpbmcgcmVhc29ucyAocmVtb3Zpbmcgc29tZSB1bmludGVyZXN0aW5nIGJpdHMg
dGhhdCBkZWFsCi0gICAgICAgICAgICB3aXRoIGhhbmRsaW5nIG9mIHRoZSBleGNlcHRpb24vdHJh
Y2ViYWNrKQotICAgICAgICAiIiIKLSAgICAgICAgZm9yIHggaW4gc2VsZjoKLSAgICAgICAgICAg
IGNvZGUgPSB4LmZyYW1lLmNvZGUKLSAgICAgICAgICAgIGNvZGVwYXRoID0gY29kZS5wYXRoCi0g
ICAgICAgICAgICBpZiAoKHBhdGggaXMgTm9uZSBvciBjb2RlcGF0aCA9PSBwYXRoKSBhbmQKLSAg
ICAgICAgICAgICAgICAoZXhjbHVkZXBhdGggaXMgTm9uZSBvciBub3QgaGFzYXR0cihjb2RlcGF0
aCwgJ3JlbHRvJykgb3IKLSAgICAgICAgICAgICAgICAgbm90IGNvZGVwYXRoLnJlbHRvKGV4Y2x1
ZGVwYXRoKSkgYW5kCi0gICAgICAgICAgICAgICAgKGxpbmVubyBpcyBOb25lIG9yIHgubGluZW5v
ID09IGxpbmVubykgYW5kCi0gICAgICAgICAgICAgICAgICAgIChmaXJzdGxpbmVubyBpcyBOb25l
IG9yIHguZnJhbWUuY29kZS5maXJzdGxpbmVubyA9PSBmaXJzdGxpbmVubykpOgotICAgICAgICAg
ICAgICAgIHJldHVybiBUcmFjZWJhY2soeC5fcmF3ZW50cnksIHNlbGYuX2V4Y2luZm8pCi0gICAg
ICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAg
ICAgdmFsID0gc3VwZXIoVHJhY2ViYWNrLCBzZWxmKS5fX2dldGl0ZW1fXyhrZXkpCi0gICAgICAg
IGlmIGlzaW5zdGFuY2Uoa2V5LCB0eXBlKHNsaWNlKDApKSk6Ci0gICAgICAgICAgICB2YWwgPSBz
ZWxmLl9fY2xhc3NfXyh2YWwpCi0gICAgICAgIHJldHVybiB2YWwKLQotICAgIGRlZiBmaWx0ZXIo
c2VsZiwgZm49bGFtYmRhIHg6IG5vdCB4LmlzaGlkZGVuKCkpOgotICAgICAgICAiIiIgcmV0dXJu
IGEgVHJhY2ViYWNrIGluc3RhbmNlIHdpdGggY2VydGFpbiBpdGVtcyByZW1vdmVkCi0KLSAgICAg
ICAgICAgIGZuIGlzIGEgZnVuY3Rpb24gdGhhdCBnZXRzIGEgc2luZ2xlIGFyZ3VtZW50LCBhIFRy
YWNlYmFja0VudHJ5Ci0gICAgICAgICAgICBpbnN0YW5jZSwgYW5kIHNob3VsZCByZXR1cm4gVHJ1
ZSB3aGVuIHRoZSBpdGVtIHNob3VsZCBiZSBhZGRlZAotICAgICAgICAgICAgdG8gdGhlIFRyYWNl
YmFjaywgRmFsc2Ugd2hlbiBub3QKLQotICAgICAgICAgICAgYnkgZGVmYXVsdCB0aGlzIHJlbW92
ZXMgYWxsIHRoZSBUcmFjZWJhY2tFbnRyaWVzIHdoaWNoIGFyZSBoaWRkZW4KLSAgICAgICAgICAg
IChzZWUgaXNoaWRkZW4oKSBhYm92ZSkKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBUcmFj
ZWJhY2soZmlsdGVyKGZuLCBzZWxmKSwgc2VsZi5fZXhjaW5mbykKLQotICAgIGRlZiBnZXRjcmFz
aGVudHJ5KHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIGxhc3Qgbm9uLWhpZGRlbiB0cmFjZWJh
Y2sgZW50cnkgdGhhdCBsZWFkCi0gICAgICAgIHRvIHRoZSBleGNlcHRpb24gb2YgYSB0cmFjZWJh
Y2suCi0gICAgICAgICIiIgotICAgICAgICBmb3IgaSBpbiByYW5nZSgtMSwgLWxlbihzZWxmKSAt
IDEsIC0xKToKLSAgICAgICAgICAgIGVudHJ5ID0gc2VsZltpXQotICAgICAgICAgICAgaWYgbm90
IGVudHJ5LmlzaGlkZGVuKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5Ci0gICAgICAg
IHJldHVybiBzZWxmWy0xXQotCi0gICAgZGVmIHJlY3Vyc2lvbmluZGV4KHNlbGYpOgotICAgICAg
ICAiIiIgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZnJhbWUvVHJhY2ViYWNrRW50cnkgd2hlcmUg
cmVjdXJzaW9uCi0gICAgICAgICAgICBvcmlnaW5hdGVzIGlmIGFwcHJvcHJpYXRlLCBOb25lIGlm
IG5vIHJlY3Vyc2lvbiBvY2N1cnJlZAotICAgICAgICAiIiIKLSAgICAgICAgY2FjaGUgPSB7fQot
ICAgICAgICBmb3IgaSwgZW50cnkgaW4gZW51bWVyYXRlKHNlbGYpOgotICAgICAgICAgICAgIyBp
ZCBmb3IgdGhlIGNvZGUucmF3IGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZAotICAgICAgICAgICAg
IyB0aGUgc3RyYW5nZSBtZXRhcHJvZ3JhbW1pbmcgaW4gdGhlIGRlY29yYXRvciBsaWIgZnJvbSBw
eXBpCi0gICAgICAgICAgICAjIHdoaWNoIGdlbmVyYXRlcyBjb2RlIG9iamVjdHMgdGhhdCBoYXZl
IGhhc2gvdmFsdWUgZXF1YWxpdHkKLSAgICAgICAgICAgICMgWFhYIG5lZWRzIGEgdGVzdAotICAg
ICAgICAgICAga2V5ID0gZW50cnkuZnJhbWUuY29kZS5wYXRoLCBpZChlbnRyeS5mcmFtZS5jb2Rl
LnJhdyksIGVudHJ5LmxpbmVubwotICAgICAgICAgICAgIyBwcmludCAiY2hlY2tpbmcgZm9yIHJl
Y3Vyc2lvbiBhdCIsIGtleQotICAgICAgICAgICAgdmFsdWVzID0gY2FjaGUuc2V0ZGVmYXVsdChr
ZXksIFtdKQotICAgICAgICAgICAgaWYgdmFsdWVzOgotICAgICAgICAgICAgICAgIGYgPSBlbnRy
eS5mcmFtZQotICAgICAgICAgICAgICAgIGxvYyA9IGYuZl9sb2NhbHMKLSAgICAgICAgICAgICAg
ICBmb3Igb3RoZXJsb2MgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICBpZiBmLmlzX3Ry
dWUoZi5ldmFsKGNvX2VxdWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVjdXJzaW9uY2FjaGVfbG9jYWxzXzE9bG9jLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVjdXJzaW9uY2FjaGVfbG9jYWxzXzI9b3RoZXJsb2MpKToK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgICAgICB2YWx1ZXMuYXBw
ZW5kKGVudHJ5LmZyYW1lLmZfbG9jYWxzKQotICAgICAgICByZXR1cm4gTm9uZQotCi0KLWNvX2Vx
dWFsID0gY29tcGlsZSgnX19yZWN1cnNpb25jYWNoZV9sb2NhbHNfMSA9PSBfX3JlY3Vyc2lvbmNh
Y2hlX2xvY2Fsc18yJywKLSAgICAgICAgICAgICAgICAgICAnPycsICdldmFsJykKLQotCi1jbGFz
cyBFeGNlcHRpb25JbmZvKG9iamVjdCk6Ci0gICAgIiIiIHdyYXBzIHN5cy5leGNfaW5mbygpIG9i
amVjdHMgYW5kIG9mZmVycwotICAgICAgICBoZWxwIGZvciBuYXZpZ2F0aW5nIHRoZSB0cmFjZWJh
Y2suCi0gICAgIiIiCi0gICAgX3N0cmlwdGV4dCA9ICcnCi0gICAgX2Fzc2VydF9zdGFydF9yZXBy
ID0gIkFzc2VydGlvbkVycm9yKHVcJ2Fzc2VydCAiIGlmIF9QWTIgZWxzZSAiQXNzZXJ0aW9uRXJy
b3IoXCdhc3NlcnQgIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHR1cD1Ob25lLCBleHByaW5m
bz1Ob25lKToKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAgICAgICAgaWYgdHVwIGlz
IE5vbmU6Ci0gICAgICAgICAgICB0dXAgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgaWYg
ZXhwcmluZm8gaXMgTm9uZSBhbmQgaXNpbnN0YW5jZSh0dXBbMV0sIEFzc2VydGlvbkVycm9yKToK
LSAgICAgICAgICAgICAgICBleHByaW5mbyA9IGdldGF0dHIodHVwWzFdLCAnbXNnJywgTm9uZSkK
LSAgICAgICAgICAgICAgICBpZiBleHByaW5mbyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAg
ICBleHByaW5mbyA9IHB5LmlvLnNhZmVyZXByKHR1cFsxXSkKLSAgICAgICAgICAgICAgICBpZiBl
eHByaW5mbyBhbmQgZXhwcmluZm8uc3RhcnRzd2l0aChzZWxmLl9hc3NlcnRfc3RhcnRfcmVwcik6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmlwdGV4dCA9ICdBc3NlcnRpb25FcnJvcjog
JwotICAgICAgICBzZWxmLl9leGNpbmZvID0gdHVwCi0gICAgICAgICM6IHRoZSBleGNlcHRpb24g
Y2xhc3MKLSAgICAgICAgc2VsZi50eXBlID0gdHVwWzBdCi0gICAgICAgICM6IHRoZSBleGNlcHRp
b24gaW5zdGFuY2UKLSAgICAgICAgc2VsZi52YWx1ZSA9IHR1cFsxXQotICAgICAgICAjOiB0aGUg
ZXhjZXB0aW9uIHJhdyB0cmFjZWJhY2sKLSAgICAgICAgc2VsZi50YiA9IHR1cFsyXQotICAgICAg
ICAjOiB0aGUgZXhjZXB0aW9uIHR5cGUgbmFtZQotICAgICAgICBzZWxmLnR5cGVuYW1lID0gc2Vs
Zi50eXBlLl9fbmFtZV9fCi0gICAgICAgICM6IHRoZSBleGNlcHRpb24gdHJhY2ViYWNrIChfcHl0
ZXN0Ll9jb2RlLlRyYWNlYmFjayBpbnN0YW5jZSkKLSAgICAgICAgc2VsZi50cmFjZWJhY2sgPSBf
cHl0ZXN0Ll9jb2RlLlRyYWNlYmFjayhzZWxmLnRiLCBleGNpbmZvPXJlZihzZWxmKSkKLQotICAg
IGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RXhjZXB0aW9uSW5mbyAlcyB0
Ymxlbj0lZD4iICUgKHNlbGYudHlwZW5hbWUsIGxlbihzZWxmLnRyYWNlYmFjaykpCi0KLSAgICBk
ZWYgZXhjb25seShzZWxmLCB0cnlzaG9ydD1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gdGhl
IGV4Y2VwdGlvbiBhcyBhIHN0cmluZwotCi0gICAgICAgICAgICB3aGVuICd0cnlzaG9ydCcgcmVz
b2x2ZXMgdG8gVHJ1ZSwgYW5kIHRoZSBleGNlcHRpb24gaXMgYQotICAgICAgICAgICAgX3B5dGVz
dC5fY29kZS5fQXNzZXJ0aW9uRXJyb3IsIG9ubHkgdGhlIGFjdHVhbCBleGNlcHRpb24gcGFydCBv
ZgotICAgICAgICAgICAgdGhlIGV4Y2VwdGlvbiByZXByZXNlbnRhdGlvbiBpcyByZXR1cm5lZCAo
c28gJ0Fzc2VydGlvbkVycm9yOiAnIGlzCi0gICAgICAgICAgICByZW1vdmVkIGZyb20gdGhlIGJl
Z2lubmluZykKLSAgICAgICAgIiIiCi0gICAgICAgIGxpbmVzID0gZm9ybWF0X2V4Y2VwdGlvbl9v
bmx5KHNlbGYudHlwZSwgc2VsZi52YWx1ZSkKLSAgICAgICAgdGV4dCA9ICcnLmpvaW4obGluZXMp
Ci0gICAgICAgIHRleHQgPSB0ZXh0LnJzdHJpcCgpCi0gICAgICAgIGlmIHRyeXNob3J0OgotICAg
ICAgICAgICAgaWYgdGV4dC5zdGFydHN3aXRoKHNlbGYuX3N0cmlwdGV4dCk6Ci0gICAgICAgICAg
ICAgICAgdGV4dCA9IHRleHRbbGVuKHNlbGYuX3N0cmlwdGV4dCk6XQotICAgICAgICByZXR1cm4g
dGV4dAotCi0gICAgZGVmIGVycmlzaW5zdGFuY2Uoc2VsZiwgZXhjKToKLSAgICAgICAgIiIiIHJl
dHVybiBUcnVlIGlmIHRoZSBleGNlcHRpb24gaXMgYW4gaW5zdGFuY2Ugb2YgZXhjICIiIgotICAg
ICAgICByZXR1cm4gaXNpbnN0YW5jZShzZWxmLnZhbHVlLCBleGMpCi0KLSAgICBkZWYgX2dldHJl
cHJjcmFzaChzZWxmKToKLSAgICAgICAgZXhjb25seSA9IHNlbGYuZXhjb25seSh0cnlzaG9ydD1U
cnVlKQotICAgICAgICBlbnRyeSA9IHNlbGYudHJhY2ViYWNrLmdldGNyYXNoZW50cnkoKQotICAg
ICAgICBwYXRoLCBsaW5lbm8gPSBlbnRyeS5mcmFtZS5jb2RlLnJhdy5jb19maWxlbmFtZSwgZW50
cnkubGluZW5vCi0gICAgICAgIHJldHVybiBSZXByRmlsZUxvY2F0aW9uKHBhdGgsIGxpbmVubyAr
IDEsIGV4Y29ubHkpCi0KLSAgICBkZWYgZ2V0cmVwcihzZWxmLCBzaG93bG9jYWxzPUZhbHNlLCBz
dHlsZT0ibG9uZyIsCi0gICAgICAgICAgICAgICAgYWJzcGF0aD1GYWxzZSwgdGJmaWx0ZXI9VHJ1
ZSwgZnVuY2FyZ3M9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIHN0cigpYWJsZSByZXByZXNl
bnRhdGlvbiBvZiB0aGlzIGV4Y2VwdGlvbiBpbmZvLgotICAgICAgICAgICAgc2hvd2xvY2Fsczog
c2hvdyBsb2NhbHMgcGVyIHRyYWNlYmFjayBlbnRyeQotICAgICAgICAgICAgc3R5bGU6IGxvbmd8
c2hvcnR8bm98bmF0aXZlIHRyYWNlYmFjayBzdHlsZQotICAgICAgICAgICAgdGJmaWx0ZXI6IGhp
ZGUgZW50cmllcyAod2hlcmUgX190cmFjZWJhY2toaWRlX18gaXMgdHJ1ZSkKLQotICAgICAgICAg
ICAgaW4gY2FzZSBvZiBzdHlsZT09bmF0aXZlLCB0YmZpbHRlciBhbmQgc2hvd2xvY2FscyBpcyBp
Z25vcmVkLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc3R5bGUgPT0gJ25hdGl2ZSc6Ci0gICAg
ICAgICAgICByZXR1cm4gUmVwckV4Y2VwdGlvbkluZm8oUmVwclRyYWNlYmFja05hdGl2ZSgKLSAg
ICAgICAgICAgICAgICBweS5zdGQudHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi50cmFjZWJhY2tbMF0uX3Jhd2VudHJ5LAotICAgICAg
ICAgICAgICAgICkpLCBzZWxmLl9nZXRyZXByY3Jhc2goKSkKLQotICAgICAgICBmbXQgPSBGb3Jt
YXR0ZWRFeGNpbmZvKHNob3dsb2NhbHM9c2hvd2xvY2Fscywgc3R5bGU9c3R5bGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzcGF0aD1hYnNwYXRoLCB0YmZpbHRlcj10YmZpbHRl
ciwgZnVuY2FyZ3M9ZnVuY2FyZ3MpCi0gICAgICAgIHJldHVybiBmbXQucmVwcl9leGNpbmZvKHNl
bGYpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgZW50cnkgPSBzZWxmLnRyYWNl
YmFja1stMV0KLSAgICAgICAgbG9jID0gUmVwckZpbGVMb2NhdGlvbihlbnRyeS5wYXRoLCBlbnRy
eS5saW5lbm8gKyAxLCBzZWxmLmV4Y29ubHkoKSkKLSAgICAgICAgcmV0dXJuIHN0cihsb2MpCi0K
LSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIGVudHJ5ID0gc2VsZi50cmFjZWJh
Y2tbLTFdCi0gICAgICAgIGxvYyA9IFJlcHJGaWxlTG9jYXRpb24oZW50cnkucGF0aCwgZW50cnku
bGluZW5vICsgMSwgc2VsZi5leGNvbmx5KCkpCi0gICAgICAgIHJldHVybiB1bmljb2RlKGxvYykK
LQotICAgIGRlZiBtYXRjaChzZWxmLCByZWdleHApOgotICAgICAgICAiIiIKLSAgICAgICAgTWF0
Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAncmVnZXhwJyBvbiB0aGUgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mCi0gICAgICAgIHRoZSBleGNlcHRpb24uIElmIGl0IG1hdGNoZXMgdGhlbiBUcnVl
IGlzIHJldHVybmVkIChzbyB0aGF0IGl0IGlzCi0gICAgICAgIHBvc3NpYmxlIHRvIHdyaXRlICdh
c3NlcnQgZXhjaW5mby5tYXRjaCgpJykuIElmIGl0IGRvZXNuJ3QgbWF0Y2ggYW4KLSAgICAgICAg
QXNzZXJ0aW9uRXJyb3IgaXMgcmFpc2VkLgotICAgICAgICAiIiIKLSAgICAgICAgX190cmFjZWJh
Y2toaWRlX18gPSBUcnVlCi0gICAgICAgIGlmIG5vdCByZS5zZWFyY2gocmVnZXhwLCBzdHIoc2Vs
Zi52YWx1ZSkpOgotICAgICAgICAgICAgYXNzZXJ0IDAsICJQYXR0ZXJuICd7MCFzfScgbm90IGZv
dW5kIGluICd7MSFzfSciLmZvcm1hdCgKLSAgICAgICAgICAgICAgICByZWdleHAsIHNlbGYudmFs
dWUpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLQotY2xhc3MgRm9ybWF0dGVkRXhjaW5mbyhvYmpl
Y3QpOgotICAgICIiIiBwcmVzZW50aW5nIGluZm9ybWF0aW9uIGFib3V0IGZhaWxpbmcgRnVuY3Rp
b25zIGFuZCBHZW5lcmF0b3JzLiAiIiIKLSAgICAjIGZvciB0cmFjZWJhY2sgZW50cmllcwotICAg
IGZsb3dfbWFya2VyID0gIj4iCi0gICAgZmFpbF9tYXJrZXIgPSAiRSIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBzaG93bG9jYWxzPUZhbHNlLCBzdHlsZT0ibG9uZyIsIGFic3BhdGg9VHJ1ZSwg
dGJmaWx0ZXI9VHJ1ZSwgZnVuY2FyZ3M9RmFsc2UpOgotICAgICAgICBzZWxmLnNob3dsb2NhbHMg
PSBzaG93bG9jYWxzCi0gICAgICAgIHNlbGYuc3R5bGUgPSBzdHlsZQotICAgICAgICBzZWxmLnRi
ZmlsdGVyID0gdGJmaWx0ZXIKLSAgICAgICAgc2VsZi5mdW5jYXJncyA9IGZ1bmNhcmdzCi0gICAg
ICAgIHNlbGYuYWJzcGF0aCA9IGFic3BhdGgKLSAgICAgICAgc2VsZi5hc3RjYWNoZSA9IHt9Ci0K
LSAgICBkZWYgX2dldGluZGVudChzZWxmLCBzb3VyY2UpOgotICAgICAgICAjIGZpZ3VyZSBvdXQg
aW5kZW50IGZvciBnaXZlbiBzb3VyY2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcyA9IHN0
cihzb3VyY2UuZ2V0c3RhdGVtZW50KGxlbihzb3VyY2UpIC0gMSkpCi0gICAgICAgIGV4Y2VwdCBL
ZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDogICMg
bm9xYQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMgPSBzdHIoc291cmNlWy0x
XSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDAKLSAgICAgICAgcmV0dXJuIDQgKyAobGVuKHMpIC0gbGVuKHMubHN0cmlwKCkpKQotCi0g
ICAgZGVmIF9nZXRlbnRyeXNvdXJjZShzZWxmLCBlbnRyeSk6Ci0gICAgICAgIHNvdXJjZSA9IGVu
dHJ5LmdldHNvdXJjZShzZWxmLmFzdGNhY2hlKQotICAgICAgICBpZiBzb3VyY2UgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2UuZGVpbmRlbnQoKQotICAgICAgICByZXR1
cm4gc291cmNlCi0KLSAgICBkZWYgX3NhZmVyZXByKHNlbGYsIG9iaik6Ci0gICAgICAgIHJldHVy
biBweS5pby5zYWZlcmVwcihvYmopCi0KLSAgICBkZWYgcmVwcl9hcmdzKHNlbGYsIGVudHJ5KToK
LSAgICAgICAgaWYgc2VsZi5mdW5jYXJnczoKLSAgICAgICAgICAgIGFyZ3MgPSBbXQotICAgICAg
ICAgICAgZm9yIGFyZ25hbWUsIGFyZ3ZhbHVlIGluIGVudHJ5LmZyYW1lLmdldGFyZ3ModmFyPVRy
dWUpOgotICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKChhcmduYW1lLCBzZWxmLl9zYWZlcmVw
cihhcmd2YWx1ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFJlcHJGdW5jQXJncyhhcmdzKQotCi0g
ICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgc291cmNlLCBsaW5lX2luZGV4PS0xLCBleGNpbmZvPU5v
bmUsIHNob3J0PUZhbHNlKToKLSAgICAgICAgIiIiIHJldHVybiBmb3JtYXR0ZWQgYW5kIG1hcmtl
ZCB1cCBzb3VyY2UgbGluZXMuICIiIgotICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAg
ICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGlmIHNvdXJjZSBpcyBOb25lIG9yIGxpbmVfaW5kZXgg
Pj0gbGVuKHNvdXJjZS5saW5lcyk6Ci0gICAgICAgICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2Rl
LlNvdXJjZSgiPz8/IikKLSAgICAgICAgICAgIGxpbmVfaW5kZXggPSAwCi0gICAgICAgIGlmIGxp
bmVfaW5kZXggPCAwOgotICAgICAgICAgICAgbGluZV9pbmRleCArPSBsZW4oc291cmNlKQotICAg
ICAgICBzcGFjZV9wcmVmaXggPSAiICAgICIKLSAgICAgICAgaWYgc2hvcnQ6Ci0gICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoc3BhY2VfcHJlZml4ICsgc291cmNlLmxpbmVzW2xpbmVfaW5kZXhdLnN0
cmlwKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBzb3VyY2UubGlu
ZXNbOmxpbmVfaW5kZXhdOgotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzcGFjZV9wcmVm
aXggKyBsaW5lKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuZmxvd19tYXJrZXIgKyAi
ICAgIiArIHNvdXJjZS5saW5lc1tsaW5lX2luZGV4XSkKLSAgICAgICAgICAgIGZvciBsaW5lIGlu
IHNvdXJjZS5saW5lc1tsaW5lX2luZGV4ICsgMTpdOgotICAgICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZChzcGFjZV9wcmVmaXggKyBsaW5lKQotICAgICAgICBpZiBleGNpbmZvIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgaW5kZW50ID0gNCBpZiBzaG9ydCBlbHNlIHNlbGYuX2dldGluZGVudChz
b3VyY2UpCi0gICAgICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZXRfZXhjb25seShleGNpbmZv
LCBpbmRlbnQ9aW5kZW50LCBtYXJrYWxsPVRydWUpKQotICAgICAgICByZXR1cm4gbGluZXMKLQot
ICAgIGRlZiBnZXRfZXhjb25seShzZWxmLCBleGNpbmZvLCBpbmRlbnQ9NCwgbWFya2FsbD1GYWxz
ZSk6Ci0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgaW5kZW50ID0gIiAiICogaW5kZW50Ci0g
ICAgICAgICMgZ2V0IHRoZSByZWFsIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBvdXQKLSAgICAgICAg
ZXhsaW5lcyA9IGV4Y2luZm8uZXhjb25seSh0cnlzaG9ydD1UcnVlKS5zcGxpdCgnXG4nKQotICAg
ICAgICBmYWlsaW5kZW50ID0gc2VsZi5mYWlsX21hcmtlciArIGluZGVudFsxOl0KLSAgICAgICAg
Zm9yIGxpbmUgaW4gZXhsaW5lczoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZChmYWlsaW5kZW50
ICsgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtYXJrYWxsOgotICAgICAgICAgICAgICAgIGZh
aWxpbmRlbnQgPSBpbmRlbnQKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0KLSAgICBkZWYgcmVwcl9s
b2NhbHMoc2VsZiwgbG9jYWxzKToKLSAgICAgICAgaWYgc2VsZi5zaG93bG9jYWxzOgotICAgICAg
ICAgICAgbGluZXMgPSBbXQotICAgICAgICAgICAga2V5cyA9IFtsb2MgZm9yIGxvYyBpbiBsb2Nh
bHMgaWYgbG9jWzBdICE9ICJAIl0KLSAgICAgICAgICAgIGtleXMuc29ydCgpCi0gICAgICAgICAg
ICBmb3IgbmFtZSBpbiBrZXlzOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbG9jYWxzW25hbWVd
Ci0gICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAnX19idWlsdGluc19fJzoKLSAgICAgICAgICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCJfX2J1aWx0aW5zX18gPSA8YnVpbHRpbnM+IikKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZm9ybWF0dGluZyBj
b3VsZCBhbGwgYmUgaGFuZGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBfcmVwcigp
IGZ1bmN0aW9uLCB3aGljaCBpcyBvbmx5IHJlcHJsaWIuUmVwciBpbgotICAgICAgICAgICAgICAg
ICAgICAjIGRpc2d1aXNlLCBzbyBpcyB2ZXJ5IGNvbmZpZ3VyYWJsZS4KLSAgICAgICAgICAgICAg
ICAgICAgc3RyX3JlcHIgPSBzZWxmLl9zYWZlcmVwcih2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgIyBpZiBsZW4oc3RyX3JlcHIpIDwgNzAgb3Igbm90IGlzaW5zdGFuY2UodmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QsIHR1cGxl
LCBkaWN0KSk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJS0xMHMgPSAlcyIg
JSAobmFtZSwgc3RyX3JlcHIpKQotICAgICAgICAgICAgICAgICAgICAjIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgICMgICAgc2VsZi5fbGluZSgiJS0xMHMgPVxcIiAlIChuYW1lLCkpCi0gICAg
ICAgICAgICAgICAgICAgICMgICAgIyBYWFgKLSAgICAgICAgICAgICAgICAgICAgIyAgICBweS5z
dGQucHByaW50LnBwcmludCh2YWx1ZSwgc3RyZWFtPXNlbGYuZXhjaW5mb3dyaXRlcikKLSAgICAg
ICAgICAgIHJldHVybiBSZXByTG9jYWxzKGxpbmVzKQotCi0gICAgZGVmIHJlcHJfdHJhY2ViYWNr
X2VudHJ5KHNlbGYsIGVudHJ5LCBleGNpbmZvPU5vbmUpOgotICAgICAgICBpbXBvcnQgX3B5dGVz
dC5fY29kZQotICAgICAgICBzb3VyY2UgPSBzZWxmLl9nZXRlbnRyeXNvdXJjZShlbnRyeSkKLSAg
ICAgICAgaWYgc291cmNlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9j
b2RlLlNvdXJjZSgiPz8/IikKLSAgICAgICAgICAgIGxpbmVfaW5kZXggPSAwCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAjIGVudHJ5LmdldGZpcnN0bGluZXNvdXJjZSgpIGNhbiBiZSAtMSwg
c2hvdWxkIGJlIDAgb24ganl0aG9uCi0gICAgICAgICAgICBsaW5lX2luZGV4ID0gZW50cnkubGlu
ZW5vIC0gbWF4KGVudHJ5LmdldGZpcnN0bGluZXNvdXJjZSgpLCAwKQotCi0gICAgICAgIGxpbmVz
ID0gW10KLSAgICAgICAgc3R5bGUgPSBlbnRyeS5fcmVwcl9zdHlsZQotICAgICAgICBpZiBzdHls
ZSBpcyBOb25lOgotICAgICAgICAgICAgc3R5bGUgPSBzZWxmLnN0eWxlCi0gICAgICAgIGlmIHN0
eWxlIGluICgic2hvcnQiLCAibG9uZyIpOgotICAgICAgICAgICAgc2hvcnQgPSBzdHlsZSA9PSAi
c2hvcnQiCi0gICAgICAgICAgICByZXByYXJncyA9IHNlbGYucmVwcl9hcmdzKGVudHJ5KSBpZiBu
b3Qgc2hvcnQgZWxzZSBOb25lCi0gICAgICAgICAgICBzID0gc2VsZi5nZXRfc291cmNlKHNvdXJj
ZSwgbGluZV9pbmRleCwgZXhjaW5mbywgc2hvcnQ9c2hvcnQpCi0gICAgICAgICAgICBsaW5lcy5l
eHRlbmQocykKLSAgICAgICAgICAgIGlmIHNob3J0OgotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
PSAiaW4gJXMiICUgKGVudHJ5Lm5hbWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgPSBleGNpbmZvIGFuZCBleGNpbmZvLnR5cGVuYW1lIG9yICIiCi0gICAgICAg
ICAgICBwYXRoID0gc2VsZi5fbWFrZXBhdGgoZW50cnkucGF0aCkKLSAgICAgICAgICAgIGZpbGVs
b2NyZXByID0gUmVwckZpbGVMb2NhdGlvbihwYXRoLCBlbnRyeS5saW5lbm8gKyAxLCBtZXNzYWdl
KQotICAgICAgICAgICAgbG9jYWxzcmVwciA9IE5vbmUKLSAgICAgICAgICAgIGlmIG5vdCBzaG9y
dDoKLSAgICAgICAgICAgICAgICBsb2NhbHNyZXByID0gc2VsZi5yZXByX2xvY2FscyhlbnRyeS5s
b2NhbHMpCi0gICAgICAgICAgICByZXR1cm4gUmVwckVudHJ5KGxpbmVzLCByZXByYXJncywgbG9j
YWxzcmVwciwgZmlsZWxvY3JlcHIsIHN0eWxlKQotICAgICAgICBpZiBleGNpbmZvOgotICAgICAg
ICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2V0X2V4Y29ubHkoZXhjaW5mbywgaW5kZW50PTQpKQot
ICAgICAgICByZXR1cm4gUmVwckVudHJ5KGxpbmVzLCBOb25lLCBOb25lLCBOb25lLCBzdHlsZSkK
LQotICAgIGRlZiBfbWFrZXBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmFi
c3BhdGg6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbnAgPSBweS5wYXRoLmxv
Y2FsKCkuYmVzdHJlbHBhdGgocGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAg
ICAgICAgICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgICAgICBpZiBsZW4obnApIDwgbGVuKHN0
cihwYXRoKSk6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IG5wCi0gICAgICAgIHJldHVybiBwYXRo
Ci0KLSAgICBkZWYgcmVwcl90cmFjZWJhY2soc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIHRyYWNl
YmFjayA9IGV4Y2luZm8udHJhY2ViYWNrCi0gICAgICAgIGlmIHNlbGYudGJmaWx0ZXI6Ci0gICAg
ICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2suZmlsdGVyKCkKLQotICAgICAgICBpZiBpc19y
ZWN1cnNpb25fZXJyb3IoZXhjaW5mbyk6Ci0gICAgICAgICAgICB0cmFjZWJhY2ssIGV4dHJhbGlu
ZSA9IHNlbGYuX3RydW5jYXRlX3JlY3Vyc2l2ZV90cmFjZWJhY2sodHJhY2ViYWNrKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgZXh0cmFsaW5lID0gTm9uZQotCi0gICAgICAgIGxhc3QgPSB0
cmFjZWJhY2tbLTFdCi0gICAgICAgIGVudHJpZXMgPSBbXQotICAgICAgICBmb3IgaW5kZXgsIGVu
dHJ5IGluIGVudW1lcmF0ZSh0cmFjZWJhY2spOgotICAgICAgICAgICAgZWluZm8gPSAobGFzdCA9
PSBlbnRyeSkgYW5kIGV4Y2luZm8gb3IgTm9uZQotICAgICAgICAgICAgcmVwcmVudHJ5ID0gc2Vs
Zi5yZXByX3RyYWNlYmFja19lbnRyeShlbnRyeSwgZWluZm8pCi0gICAgICAgICAgICBlbnRyaWVz
LmFwcGVuZChyZXByZW50cnkpCi0gICAgICAgIHJldHVybiBSZXByVHJhY2ViYWNrKGVudHJpZXMs
IGV4dHJhbGluZSwgc3R5bGU9c2VsZi5zdHlsZSkKLQotICAgIGRlZiBfdHJ1bmNhdGVfcmVjdXJz
aXZlX3RyYWNlYmFjayhzZWxmLCB0cmFjZWJhY2spOgotICAgICAgICAiIiIKLSAgICAgICAgVHJ1
bmNhdGUgdGhlIGdpdmVuIHJlY3Vyc2l2ZSB0cmFjZWJhY2sgdHJ5aW5nIHRvIGZpbmQgdGhlIHN0
YXJ0aW5nIHBvaW50Ci0gICAgICAgIG9mIHRoZSByZWN1cnNpb24uCi0KLSAgICAgICAgVGhlIGRl
dGVjdGlvbiBpcyBkb25lIGJ5IGdvaW5nIHRocm91Z2ggZWFjaCB0cmFjZWJhY2sgZW50cnkgYW5k
IGZpbmRpbmcgdGhlCi0gICAgICAgIHBvaW50IGluIHdoaWNoIHRoZSBsb2NhbHMgb2YgdGhlIGZy
YW1lIGFyZSBlcXVhbCB0byB0aGUgbG9jYWxzIG9mIGEgcHJldmlvdXMgZnJhbWUgKHNlZSBgYHJl
Y3Vyc2lvbmluZGV4KClgYC4KLQotICAgICAgICBIYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVyZSB0
aGUgcmVjdXJzaW9uIHByb2Nlc3MgbWlnaHQgcmFpc2UgYW4gZXhjZXB0aW9uIChmb3IgZXhhbXBs
ZQotICAgICAgICBjb21wYXJpbmcgbnVtcHkgYXJyYXlzIHVzaW5nIGVxdWFsaXR5IHJhaXNlcyBh
IFR5cGVFcnJvciksIGluIHdoaWNoIGNhc2Ugd2UgZG8gb3VyIGJlc3QgdG8KLSAgICAgICAgd2Fy
biB0aGUgdXNlciBvZiB0aGUgZXJyb3IgYW5kIHNob3cgYSBsaW1pdGVkIHRyYWNlYmFjay4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlY3Vyc2lvbmluZGV4ID0gdHJh
Y2ViYWNrLnJlY3Vyc2lvbmluZGV4KCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgbWF4X2ZyYW1lcyA9IDEwCi0gICAgICAgICAgICBleHRyYWxpbmUgPSAoCi0g
ICAgICAgICAgICAgICAgJyEhISBSZWN1cnNpb24gZXJyb3IgZGV0ZWN0ZWQsIGJ1dCBhbiBlcnJv
ciBvY2N1cnJlZCBsb2NhdGluZyB0aGUgb3JpZ2luIG9mIHJlY3Vyc2lvbi5cbicKLSAgICAgICAg
ICAgICAgICAnICBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbiBoYXBwZW5lZCB3aGVuIGNvbXBhcmlu
ZyBsb2NhbHMgaW4gdGhlIHN0YWNrIGZyYW1lOlxuJwotICAgICAgICAgICAgICAgICcgICAge2V4
Y190eXBlfToge2V4Y19tc2d9XG4nCi0gICAgICAgICAgICAgICAgJyAgRGlzcGxheWluZyBmaXJz
dCBhbmQgbGFzdCB7bWF4X2ZyYW1lc30gc3RhY2sgZnJhbWVzIG91dCBvZiB7dG90YWx9LicKLSAg
ICAgICAgICAgICkuZm9ybWF0KGV4Y190eXBlPXR5cGUoZSkuX19uYW1lX18sIGV4Y19tc2c9c2Fm
ZV9zdHIoZSksIG1heF9mcmFtZXM9bWF4X2ZyYW1lcywgdG90YWw9bGVuKHRyYWNlYmFjaykpCi0g
ICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tbOm1heF9mcmFtZXNdICsgdHJhY2ViYWNr
Wy1tYXhfZnJhbWVzOl0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHJlY3Vyc2lvbmlu
ZGV4IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGV4dHJhbGluZSA9ICIhISEgUmVjdXJz
aW9uIGRldGVjdGVkIChzYW1lIGxvY2FscyAmIHBvc2l0aW9uKSIKLSAgICAgICAgICAgICAgICB0
cmFjZWJhY2sgPSB0cmFjZWJhY2tbOnJlY3Vyc2lvbmluZGV4ICsgMV0KLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgZXh0cmFsaW5lID0gTm9uZQotCi0gICAgICAgIHJldHVybiB0
cmFjZWJhY2ssIGV4dHJhbGluZQotCi0gICAgZGVmIHJlcHJfZXhjaW5mbyhzZWxmLCBleGNpbmZv
KToKLSAgICAgICAgaWYgX1BZMjoKLSAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBzZWxmLnJl
cHJfdHJhY2ViYWNrKGV4Y2luZm8pCi0gICAgICAgICAgICByZXByY3Jhc2ggPSBleGNpbmZvLl9n
ZXRyZXByY3Jhc2goKQotCi0gICAgICAgICAgICByZXR1cm4gUmVwckV4Y2VwdGlvbkluZm8ocmVw
cnRyYWNlYmFjaywgcmVwcmNyYXNoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVwcl9j
aGFpbiA9IFtdCi0gICAgICAgICAgICBlID0gZXhjaW5mby52YWx1ZQotICAgICAgICAgICAgZGVz
Y3IgPSBOb25lCi0gICAgICAgICAgICB3aGlsZSBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
ICAgIGlmIGV4Y2luZm86Ci0gICAgICAgICAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBzZWxm
LnJlcHJfdHJhY2ViYWNrKGV4Y2luZm8pCi0gICAgICAgICAgICAgICAgICAgIHJlcHJjcmFzaCA9
IGV4Y2luZm8uX2dldHJlcHJjcmFzaCgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgIyBmYWxsYmFjayB0byBuYXRpdmUgcmVwciBpZiB0aGUgZXhjZXB0aW9uIGRv
ZXNuJ3QgaGF2ZSBhIHRyYWNlYmFjazoKLSAgICAgICAgICAgICAgICAgICAgIyBFeGNlcHRpb25J
bmZvIG9iamVjdHMgcmVxdWlyZSBhIGZ1bGwgdHJhY2ViYWNrIHRvIHdvcmsKLSAgICAgICAgICAg
ICAgICAgICAgcmVwcnRyYWNlYmFjayA9IFJlcHJUcmFjZWJhY2tOYXRpdmUocHkuc3RkLnRyYWNl
YmFjay5mb3JtYXRfZXhjZXB0aW9uKHR5cGUoZSksIGUsIE5vbmUpKQotICAgICAgICAgICAgICAg
ICAgICByZXByY3Jhc2ggPSBOb25lCi0KLSAgICAgICAgICAgICAgICByZXByX2NoYWluICs9IFso
cmVwcnRyYWNlYmFjaywgcmVwcmNyYXNoLCBkZXNjcildCi0gICAgICAgICAgICAgICAgaWYgZS5f
X2NhdXNlX18gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBlLl9fY2F1c2Vf
XwotICAgICAgICAgICAgICAgICAgICBleGNpbmZvID0gRXhjZXB0aW9uSW5mbygodHlwZShlKSwg
ZSwgZS5fX3RyYWNlYmFja19fKSkgaWYgZS5fX3RyYWNlYmFja19fIGVsc2UgTm9uZQotICAgICAg
ICAgICAgICAgICAgICBkZXNjciA9ICdUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0
IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOicKLSAgICAgICAgICAgICAgICBlbGlm
IChlLl9fY29udGV4dF9fIGlzIG5vdCBOb25lIGFuZCBub3QgZS5fX3N1cHByZXNzX2NvbnRleHRf
Xyk6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBlLl9fY29udGV4dF9fCi0gICAgICAgICAgICAg
ICAgICAgIGV4Y2luZm8gPSBFeGNlcHRpb25JbmZvKCh0eXBlKGUpLCBlLCBlLl9fdHJhY2ViYWNr
X18pKSBpZiBlLl9fdHJhY2ViYWNrX18gZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGRl
c2NyID0gJ0R1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4
Y2VwdGlvbiBvY2N1cnJlZDonCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgZSA9IE5vbmUKLSAgICAgICAgICAgIHJlcHJfY2hhaW4ucmV2ZXJzZSgpCi0gICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uQ2hhaW5SZXByKHJlcHJfY2hhaW4pCi0KLQotY2xhc3MgVGVy
bWluYWxSZXByKG9iamVjdCk6Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHMgPSBz
ZWxmLl9fdW5pY29kZV9fKCkKLSAgICAgICAgaWYgX1BZMjoKLSAgICAgICAgICAgIHMgPSBzLmVu
Y29kZSgndXRmLTgnKQotICAgICAgICByZXR1cm4gcwotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNl
bGYpOgotICAgICAgICAjIEZZSSB0aGlzIGlzIGNhbGxlZCBmcm9tIHB5dGVzdC14ZGlzdCdzIHNl
cmlhbGl6YXRpb24gb2YgZXhjZXB0aW9uCi0gICAgICAgICMgaW5mb3JtYXRpb24uCi0gICAgICAg
IGlvID0gcHkuaW8uVGV4dElPKCkKLSAgICAgICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcihm
aWxlPWlvKQotICAgICAgICBzZWxmLnRvdGVybWluYWwodHcpCi0gICAgICAgIHJldHVybiBpby5n
ZXR2YWx1ZSgpLnN0cmlwKCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuICI8JXMgaW5zdGFuY2UgYXQgJTB4PiIgJSAoc2VsZi5fX2NsYXNzX18sIGlkKHNlbGYpKQot
Ci0KLWNsYXNzIEV4Y2VwdGlvblJlcHIoVGVybWluYWxSZXByKToKLSAgICBkZWYgX19pbml0X18o
c2VsZik6Ci0gICAgICAgIHNlbGYuc2VjdGlvbnMgPSBbXQotCi0gICAgZGVmIGFkZHNlY3Rpb24o
c2VsZiwgbmFtZSwgY29udGVudCwgc2VwPSItIik6Ci0gICAgICAgIHNlbGYuc2VjdGlvbnMuYXBw
ZW5kKChuYW1lLCBjb250ZW50LCBzZXApKQotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcp
OgotICAgICAgICBmb3IgbmFtZSwgY29udGVudCwgc2VwIGluIHNlbGYuc2VjdGlvbnM6Ci0gICAg
ICAgICAgICB0dy5zZXAoc2VwLCBuYW1lKQotICAgICAgICAgICAgdHcubGluZShjb250ZW50KQot
Ci0KLWNsYXNzIEV4Y2VwdGlvbkNoYWluUmVwcihFeGNlcHRpb25SZXByKToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgY2hhaW4pOgotICAgICAgICBzdXBlcihFeGNlcHRpb25DaGFpblJlcHIsIHNl
bGYpLl9faW5pdF9fKCkKLSAgICAgICAgc2VsZi5jaGFpbiA9IGNoYWluCi0gICAgICAgICMgcmVw
cmNyYXNoIGFuZCByZXBydHJhY2ViYWNrIG9mIHRoZSBvdXRlcm1vc3QgKHRoZSBuZXdlc3QpIGV4
Y2VwdGlvbgotICAgICAgICAjIGluIHRoZSBjaGFpbgotICAgICAgICBzZWxmLnJlcHJ0cmFjZWJh
Y2sgPSBjaGFpblstMV1bMF0KLSAgICAgICAgc2VsZi5yZXByY3Jhc2ggPSBjaGFpblstMV1bMV0K
LQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgZm9yIGVsZW1lbnQgaW4g
c2VsZi5jaGFpbjoKLSAgICAgICAgICAgIGVsZW1lbnRbMF0udG90ZXJtaW5hbCh0dykKLSAgICAg
ICAgICAgIGlmIGVsZW1lbnRbMl0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgdHcubGlu
ZSgiIikKLSAgICAgICAgICAgICAgICB0dy5saW5lKGVsZW1lbnRbMl0sIHllbGxvdz1UcnVlKQot
ICAgICAgICBzdXBlcihFeGNlcHRpb25DaGFpblJlcHIsIHNlbGYpLnRvdGVybWluYWwodHcpCi0K
LQotY2xhc3MgUmVwckV4Y2VwdGlvbkluZm8oRXhjZXB0aW9uUmVwcik6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlcHJ0cmFjZWJhY2ssIHJlcHJjcmFzaCk6Ci0gICAgICAgIHN1cGVyKFJlcHJF
eGNlcHRpb25JbmZvLCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIHNlbGYucmVwcnRyYWNlYmFj
ayA9IHJlcHJ0cmFjZWJhY2sKLSAgICAgICAgc2VsZi5yZXByY3Jhc2ggPSByZXByY3Jhc2gKLQot
ICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgc2VsZi5yZXBydHJhY2ViYWNr
LnRvdGVybWluYWwodHcpCi0gICAgICAgIHN1cGVyKFJlcHJFeGNlcHRpb25JbmZvLCBzZWxmKS50
b3Rlcm1pbmFsKHR3KQotCi0KLWNsYXNzIFJlcHJUcmFjZWJhY2soVGVybWluYWxSZXByKToKLSAg
ICBlbnRyeXNlcCA9ICJfICIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXByZW50cmllcywg
ZXh0cmFsaW5lLCBzdHlsZSk6Ci0gICAgICAgIHNlbGYucmVwcmVudHJpZXMgPSByZXByZW50cmll
cwotICAgICAgICBzZWxmLmV4dHJhbGluZSA9IGV4dHJhbGluZQotICAgICAgICBzZWxmLnN0eWxl
ID0gc3R5bGUKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgIyB0aGUg
ZW50cmllcyBtaWdodCBoYXZlIGRpZmZlcmVudCBzdHlsZXMKLSAgICAgICAgZm9yIGksIGVudHJ5
IGluIGVudW1lcmF0ZShzZWxmLnJlcHJlbnRyaWVzKToKLSAgICAgICAgICAgIGlmIGVudHJ5LnN0
eWxlID09ICJsb25nIjoKLSAgICAgICAgICAgICAgICB0dy5saW5lKCIiKQotICAgICAgICAgICAg
ZW50cnkudG90ZXJtaW5hbCh0dykKLSAgICAgICAgICAgIGlmIGkgPCBsZW4oc2VsZi5yZXByZW50
cmllcykgLSAxOgotICAgICAgICAgICAgICAgIG5leHRfZW50cnkgPSBzZWxmLnJlcHJlbnRyaWVz
W2kgKyAxXQotICAgICAgICAgICAgICAgIGlmIGVudHJ5LnN0eWxlID09ICJsb25nIiBvciBcCi0g
ICAgICAgICAgICAgICAgICAgZW50cnkuc3R5bGUgPT0gInNob3J0IiBhbmQgbmV4dF9lbnRyeS5z
dHlsZSA9PSAibG9uZyI6Ci0gICAgICAgICAgICAgICAgICAgIHR3LnNlcChzZWxmLmVudHJ5c2Vw
KQotCi0gICAgICAgIGlmIHNlbGYuZXh0cmFsaW5lOgotICAgICAgICAgICAgdHcubGluZShzZWxm
LmV4dHJhbGluZSkKLQotCi1jbGFzcyBSZXByVHJhY2ViYWNrTmF0aXZlKFJlcHJUcmFjZWJhY2sp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YmxpbmVzKToKLSAgICAgICAgc2VsZi5zdHlsZSA9
ICJuYXRpdmUiCi0gICAgICAgIHNlbGYucmVwcmVudHJpZXMgPSBbUmVwckVudHJ5TmF0aXZlKHRi
bGluZXMpXQotICAgICAgICBzZWxmLmV4dHJhbGluZSA9IE5vbmUKLQotCi1jbGFzcyBSZXByRW50
cnlOYXRpdmUoVGVybWluYWxSZXByKToKLSAgICBzdHlsZSA9ICJuYXRpdmUiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGJsaW5lcyk6Ci0gICAgICAgIHNlbGYubGluZXMgPSB0YmxpbmVzCi0K
LSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIHR3LndyaXRlKCIiLmpvaW4o
c2VsZi5saW5lcykpCi0KLQotY2xhc3MgUmVwckVudHJ5KFRlcm1pbmFsUmVwcik6Ci0gICAgbG9j
YWxzc2VwID0gIl8gIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzLCByZXByZnVuY2Fy
Z3MsIHJlcHJsb2NhbHMsIGZpbGVsb2NyZXByLCBzdHlsZSk6Ci0gICAgICAgIHNlbGYubGluZXMg
PSBsaW5lcwotICAgICAgICBzZWxmLnJlcHJmdW5jYXJncyA9IHJlcHJmdW5jYXJncwotICAgICAg
ICBzZWxmLnJlcHJsb2NhbHMgPSByZXBybG9jYWxzCi0gICAgICAgIHNlbGYucmVwcmZpbGVsb2Mg
PSBmaWxlbG9jcmVwcgotICAgICAgICBzZWxmLnN0eWxlID0gc3R5bGUKLQotICAgIGRlZiB0b3Rl
cm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgaWYgc2VsZi5zdHlsZSA9PSAic2hvcnQiOgotICAg
ICAgICAgICAgc2VsZi5yZXByZmlsZWxvYy50b3Rlcm1pbmFsKHR3KQotICAgICAgICAgICAgZm9y
IGxpbmUgaW4gc2VsZi5saW5lczoKLSAgICAgICAgICAgICAgICByZWQgPSBsaW5lLnN0YXJ0c3dp
dGgoIkUgICAiKQotICAgICAgICAgICAgICAgIHR3LmxpbmUobGluZSwgYm9sZD1UcnVlLCByZWQ9
cmVkKQotICAgICAgICAgICAgIyB0dy5saW5lKCIiKQotICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgIGlmIHNlbGYucmVwcmZ1bmNhcmdzOgotICAgICAgICAgICAgc2VsZi5yZXByZnVuY2FyZ3Mu
dG90ZXJtaW5hbCh0dykKLSAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5lczoKLSAgICAgICAg
ICAgIHJlZCA9IGxpbmUuc3RhcnRzd2l0aCgiRSAgICIpCi0gICAgICAgICAgICB0dy5saW5lKGxp
bmUsIGJvbGQ9VHJ1ZSwgcmVkPXJlZCkKLSAgICAgICAgaWYgc2VsZi5yZXBybG9jYWxzOgotICAg
ICAgICAgICAgIyB0dy5zZXAoc2VsZi5sb2NhbHNzZXAsICJMb2NhbHMiKQotICAgICAgICAgICAg
dHcubGluZSgiIikKLSAgICAgICAgICAgIHNlbGYucmVwcmxvY2Fscy50b3Rlcm1pbmFsKHR3KQot
ICAgICAgICBpZiBzZWxmLnJlcHJmaWxlbG9jOgotICAgICAgICAgICAgaWYgc2VsZi5saW5lczoK
LSAgICAgICAgICAgICAgICB0dy5saW5lKCIiKQotICAgICAgICAgICAgc2VsZi5yZXByZmlsZWxv
Yy50b3Rlcm1pbmFsKHR3KQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVy
biAiJXNcbiVzXG4lcyIgJSAoIlxuIi5qb2luKHNlbGYubGluZXMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVwcmxvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLnJlcHJmaWxlbG9jKQotCi0KLWNsYXNzIFJlcHJGaWxlTG9jYXRpb24oVGVy
bWluYWxSZXByKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbGluZW5vLCBtZXNzYWdl
KToKLSAgICAgICAgc2VsZi5wYXRoID0gc3RyKHBhdGgpCi0gICAgICAgIHNlbGYubGluZW5vID0g
bGluZW5vCi0gICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKLQotICAgIGRlZiB0b3Rlcm1p
bmFsKHNlbGYsIHR3KToKLSAgICAgICAgIyBmaWxlbmFtZSBhbmQgbGluZW5vIG91dHB1dCBmb3Ig
ZWFjaCBlbnRyeSwKLSAgICAgICAgIyB1c2luZyBhbiBvdXRwdXQgZm9ybWF0IHRoYXQgbW9zdCBl
ZGl0b3JzIHVudGVyc3RhbmQKLSAgICAgICAgbXNnID0gc2VsZi5tZXNzYWdlCi0gICAgICAgIGkg
PSBtc2cuZmluZCgiXG4iKQotICAgICAgICBpZiBpICE9IC0xOgotICAgICAgICAgICAgbXNnID0g
bXNnWzppXQotICAgICAgICB0dy53cml0ZShzZWxmLnBhdGgsIGJvbGQ9VHJ1ZSwgcmVkPVRydWUp
Ci0gICAgICAgIHR3LmxpbmUoIjolczogJXMiICUgKHNlbGYubGluZW5vLCBtc2cpKQotCi0KLWNs
YXNzIFJlcHJMb2NhbHMoVGVybWluYWxSZXByKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGlu
ZXMpOgotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNl
bGYsIHR3KToKLSAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5lczoKLSAgICAgICAgICAgIHR3
LmxpbmUobGluZSkKLQotCi1jbGFzcyBSZXByRnVuY0FyZ3MoVGVybWluYWxSZXByKToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgYXJncyk6Ci0gICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKLQotICAg
IGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgaWYgc2VsZi5hcmdzOgotICAgICAg
ICAgICAgbGluZXNvZmFyID0gIiIKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxm
LmFyZ3M6Ci0gICAgICAgICAgICAgICAgbnMgPSAiJXMgPSAlcyIgJSAoc2FmZV9zdHIobmFtZSks
IHNhZmVfc3RyKHZhbHVlKSkKLSAgICAgICAgICAgICAgICBpZiBsZW4obnMpICsgbGVuKGxpbmVz
b2ZhcikgKyAyID4gdHcuZnVsbHdpZHRoOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lc29m
YXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0dy5saW5lKGxpbmVzb2ZhcikKLSAgICAgICAg
ICAgICAgICAgICAgbGluZXNvZmFyID0gbnMKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICBpZiBsaW5lc29mYXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5l
c29mYXIgKz0gIiwgIiArIG5zCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lc29mYXIgPSBucwotICAgICAgICAgICAgaWYgbGluZXNvZmFyOgot
ICAgICAgICAgICAgICAgIHR3LmxpbmUobGluZXNvZmFyKQotICAgICAgICAgICAgdHcubGluZSgi
IikKLQotCi1kZWYgZ2V0cmF3Y29kZShvYmosIHRyeWNhbGw9VHJ1ZSk6Ci0gICAgIiIiIHJldHVy
biBjb2RlIG9iamVjdCBmb3IgZ2l2ZW4gZnVuY3Rpb24uICIiIgotICAgIHRyeToKLSAgICAgICAg
cmV0dXJuIG9iai5fX2NvZGVfXwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAg
b2JqID0gZ2V0YXR0cihvYmosICdpbV9mdW5jJywgb2JqKQotICAgICAgICBvYmogPSBnZXRhdHRy
KG9iaiwgJ2Z1bmNfY29kZScsIG9iaikKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICdmX2Nv
ZGUnLCBvYmopCi0gICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAnX19jb2RlX18nLCBvYmopCi0g
ICAgICAgIGlmIHRyeWNhbGwgYW5kIG5vdCBoYXNhdHRyKG9iaiwgJ2NvX2ZpcnN0bGluZW5vJyk6
Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKG9iaiwgJ19fY2FsbF9fJykgYW5kIG5vdCBweS5zdGQu
aW5zcGVjdC5pc2NsYXNzKG9iaik6Ci0gICAgICAgICAgICAgICAgeCA9IGdldHJhd2NvZGUob2Jq
Ll9fY2FsbF9fLCB0cnljYWxsPUZhbHNlKQotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoeCwg
J2NvX2ZpcnN0bGluZW5vJyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAg
IHJldHVybiBvYmoKLQotCi1pZiBQWTM1OiAgIyBSZWN1cnNpb25FcnJvciBpbnRyb2R1Y2VkIGlu
IDMuNQotICAgIGRlZiBpc19yZWN1cnNpb25fZXJyb3IoZXhjaW5mbyk6Ci0gICAgICAgIHJldHVy
biBleGNpbmZvLmVycmlzaW5zdGFuY2UoUmVjdXJzaW9uRXJyb3IpICAjIG5vcWEKLWVsc2U6Ci0g
ICAgZGVmIGlzX3JlY3Vyc2lvbl9lcnJvcihleGNpbmZvKToKLSAgICAgICAgaWYgbm90IGV4Y2lu
Zm8uZXJyaXNpbnN0YW5jZShSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiAibWF4aW11bSByZWN1cnNpb24gZGVw
dGggZXhjZWVkZWQiIGluIHN0cihleGNpbmZvLnZhbHVlKQotICAgICAgICBleGNlcHQgVW5pY29k
ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvc291
cmNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjM4YzU5OGI3NDkuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQorKysgL2Rl
di9udWxsCkBAIC0xLDQxNSArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydCwgZGl2aXNpb24sIGdlbmVyYXRvcnMsIHByaW50X2Z1bmN0aW9uCi0KLWZyb20gYmlz
ZWN0IGltcG9ydCBiaXNlY3RfcmlnaHQKLWltcG9ydCBzeXMKLWltcG9ydCBzaXgKLWltcG9ydCBp
bnNwZWN0Ci1pbXBvcnQgdG9rZW5pemUKLWltcG9ydCBweQotY3B5X2NvbXBpbGUgPSBjb21waWxl
Ci0KLXRyeToKLSAgICBpbXBvcnQgX2FzdAotICAgIGZyb20gX2FzdCBpbXBvcnQgUHlDRl9PTkxZ
X0FTVCBhcyBfQVNUX0ZMQUcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfQVNUX0ZMQUcgPSAw
Ci0gICAgX2FzdCA9IE5vbmUKLQotCi1jbGFzcyBTb3VyY2Uob2JqZWN0KToKLSAgICAiIiIgYSBp
bW11dGFibGUgb2JqZWN0IGhvbGRpbmcgYSBzb3VyY2UgY29kZSBmcmFnbWVudCwKLSAgICAgICAg
cG9zc2libHkgZGVpbmRlbnRpbmcgaXQuCi0gICAgIiIiCi0gICAgX2NvbXBpbGVjb3VudGVyID0g
MAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICpwYXJ0cywgKiprd2FyZ3MpOgotICAgICAgICBz
ZWxmLmxpbmVzID0gbGluZXMgPSBbXQotICAgICAgICBkZSA9IGt3YXJncy5nZXQoJ2RlaW5kZW50
JywgVHJ1ZSkKLSAgICAgICAgcnN0cmlwID0ga3dhcmdzLmdldCgncnN0cmlwJywgVHJ1ZSkKLSAg
ICAgICAgZm9yIHBhcnQgaW4gcGFydHM6Ci0gICAgICAgICAgICBpZiBub3QgcGFydDoKLSAgICAg
ICAgICAgICAgICBwYXJ0bGluZXMgPSBbXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJ0
LCBTb3VyY2UpOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IHBhcnQubGluZXMKLSAgICAg
ICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXJ0LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAg
ICAgICBwYXJ0bGluZXMgPSBbeC5yc3RyaXAoIlxuIikgZm9yIHggaW4gcGFydF0KLSAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShwYXJ0LCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAg
ICAgICBwYXJ0bGluZXMgPSBwYXJ0LnNwbGl0KCdcbicpCi0gICAgICAgICAgICAgICAgaWYgcnN0
cmlwOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSBwYXJ0bGluZXM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiBwYXJ0bGluZXNbLTFdLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRsaW5lcy5wb3AoKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBnZXRzb3VyY2Uo
cGFydCwgZGVpbmRlbnQ9ZGUpLmxpbmVzCi0gICAgICAgICAgICBpZiBkZToKLSAgICAgICAgICAg
ICAgICBwYXJ0bGluZXMgPSBkZWluZGVudChwYXJ0bGluZXMpCi0gICAgICAgICAgICBsaW5lcy5l
eHRlbmQocGFydGxpbmVzKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmxpbmVzID09IG90aGVyLmxpbmVzCi0gICAg
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3Ro
ZXIsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmKSA9PSBvdGhlcgotICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIGRlZiBf
X2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgaW50KToK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLmxpbmVzW2tleV0KLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGlmIGtleS5zdGVwIG5vdCBpbiAoTm9uZSwgMSk6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgSW5kZXhFcnJvcigiY2Fubm90IHNsaWNlIGEgU291cmNlIHdpdGggYSBzdGVwIikKLSAgICAg
ICAgICAgIG5ld3NvdXJjZSA9IFNvdXJjZSgpCi0gICAgICAgICAgICBuZXdzb3VyY2UubGluZXMg
PSBzZWxmLmxpbmVzW2tleS5zdGFydDprZXkuc3RvcF0KLSAgICAgICAgICAgIHJldHVybiBuZXdz
b3VyY2UKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYu
bGluZXMpCi0KLSAgICBkZWYgc3RyaXAoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gbmV3IHNv
dXJjZSBvYmplY3Qgd2l0aCB0cmFpbGluZwotICAgICAgICAgICAgYW5kIGxlYWRpbmcgYmxhbmsg
bGluZXMgcmVtb3ZlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHN0YXJ0LCBlbmQgPSAwLCBsZW4o
c2VsZikKLSAgICAgICAgd2hpbGUgc3RhcnQgPCBlbmQgYW5kIG5vdCBzZWxmLmxpbmVzW3N0YXJ0
XS5zdHJpcCgpOgotICAgICAgICAgICAgc3RhcnQgKz0gMQotICAgICAgICB3aGlsZSBlbmQgPiBz
dGFydCBhbmQgbm90IHNlbGYubGluZXNbZW5kIC0gMV0uc3RyaXAoKToKLSAgICAgICAgICAgIGVu
ZCAtPSAxCi0gICAgICAgIHNvdXJjZSA9IFNvdXJjZSgpCi0gICAgICAgIHNvdXJjZS5saW5lc1s6
XSA9IHNlbGYubGluZXNbc3RhcnQ6ZW5kXQotICAgICAgICByZXR1cm4gc291cmNlCi0KLSAgICBk
ZWYgcHV0YXJvdW5kKHNlbGYsIGJlZm9yZT0nJywgYWZ0ZXI9JycsIGluZGVudD0nICcgKiA0KToK
LSAgICAgICAgIiIiIHJldHVybiBhIGNvcHkgb2YgdGhlIHNvdXJjZSBvYmplY3Qgd2l0aAotICAg
ICAgICAgICAgJ2JlZm9yZScgYW5kICdhZnRlcicgd3JhcHBlZCBhcm91bmQgaXQuCi0gICAgICAg
ICIiIgotICAgICAgICBiZWZvcmUgPSBTb3VyY2UoYmVmb3JlKQotICAgICAgICBhZnRlciA9IFNv
dXJjZShhZnRlcikKLSAgICAgICAgbmV3c291cmNlID0gU291cmNlKCkKLSAgICAgICAgbGluZXMg
PSBbKGluZGVudCArIGxpbmUpIGZvciBsaW5lIGluIHNlbGYubGluZXNdCi0gICAgICAgIG5ld3Nv
dXJjZS5saW5lcyA9IGJlZm9yZS5saW5lcyArIGxpbmVzICsgYWZ0ZXIubGluZXMKLSAgICAgICAg
cmV0dXJuIG5ld3NvdXJjZQotCi0gICAgZGVmIGluZGVudChzZWxmLCBpbmRlbnQ9JyAnICogNCk6
Ci0gICAgICAgICIiIiByZXR1cm4gYSBjb3B5IG9mIHRoZSBzb3VyY2Ugb2JqZWN0IHdpdGgKLSAg
ICAgICAgICAgIGFsbCBsaW5lcyBpbmRlbnRlZCBieSB0aGUgZ2l2ZW4gaW5kZW50LXN0cmluZy4K
LSAgICAgICAgIiIiCi0gICAgICAgIG5ld3NvdXJjZSA9IFNvdXJjZSgpCi0gICAgICAgIG5ld3Nv
dXJjZS5saW5lcyA9IFsoaW5kZW50ICsgbGluZSkgZm9yIGxpbmUgaW4gc2VsZi5saW5lc10KLSAg
ICAgICAgcmV0dXJuIG5ld3NvdXJjZQotCi0gICAgZGVmIGdldHN0YXRlbWVudChzZWxmLCBsaW5l
bm8sIGFzc2VydGlvbj1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gU291cmNlIHN0YXRlbWVu
dCB3aGljaCBjb250YWlucyB0aGUKLSAgICAgICAgICAgIGdpdmVuIGxpbmVudW1iZXIgKGNvdW50
ZWQgZnJvbSAwKS4KLSAgICAgICAgIiIiCi0gICAgICAgIHN0YXJ0LCBlbmQgPSBzZWxmLmdldHN0
YXRlbWVudHJhbmdlKGxpbmVubywgYXNzZXJ0aW9uKQotICAgICAgICByZXR1cm4gc2VsZltzdGFy
dDplbmRdCi0KLSAgICBkZWYgZ2V0c3RhdGVtZW50cmFuZ2Uoc2VsZiwgbGluZW5vLCBhc3NlcnRp
b249RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBz
cGFucyB0aGUgbWluaW1hbAotICAgICAgICAgICAgc3RhdGVtZW50IHJlZ2lvbiB3aGljaCBjb250
YWluaW5nIHRoZSBnaXZlbiBsaW5lbm8uCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgKDAg
PD0gbGluZW5vIDwgbGVuKHNlbGYpKToKLSAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoImxp
bmVubyBvdXQgb2YgcmFuZ2UiKQotICAgICAgICBhc3QsIHN0YXJ0LCBlbmQgPSBnZXRzdGF0ZW1l
bnRyYW5nZV9hc3QobGluZW5vLCBzZWxmKQotICAgICAgICByZXR1cm4gc3RhcnQsIGVuZAotCi0g
ICAgZGVmIGRlaW5kZW50KHNlbGYsIG9mZnNldD1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBh
IG5ldyBzb3VyY2Ugb2JqZWN0IGRlaW5kZW50ZWQgYnkgb2Zmc2V0LgotICAgICAgICAgICAgSWYg
b2Zmc2V0IGlzIE5vbmUgdGhlbiBndWVzcyBhbiBpbmRlbnRhdGlvbiBvZmZzZXQgZnJvbQotICAg
ICAgICAgICAgdGhlIGZpcnN0IG5vbi1ibGFuayBsaW5lLiAgU3Vic2VxdWVudCBsaW5lcyB3aGlj
aCBoYXZlIGEKLSAgICAgICAgICAgIGxvd2VyIGluZGVudGF0aW9uIG9mZnNldCB3aWxsIGJlIGNv
cGllZCB2ZXJiYXRpbSBhcwotICAgICAgICAgICAgdGhleSBhcmUgYXNzdW1lZCB0byBiZSBwYXJ0
IG9mIG11bHRpbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICAjIFhYWCBtYXliZSB1c2UgdGhl
IHRva2VuaXplciB0byBwcm9wZXJseSBoYW5kbGUgbXVsdGlsaW5lCi0gICAgICAgICMgICAgIHN0
cmluZ3MgZXRjLnBwPwotICAgICAgICBuZXdzb3VyY2UgPSBTb3VyY2UoKQotICAgICAgICBuZXdz
b3VyY2UubGluZXNbOl0gPSBkZWluZGVudChzZWxmLmxpbmVzLCBvZmZzZXQpCi0gICAgICAgIHJl
dHVybiBuZXdzb3VyY2UKLQotICAgIGRlZiBpc3BhcnNlYWJsZShzZWxmLCBkZWluZGVudD1UcnVl
KToKLSAgICAgICAgIiIiIHJldHVybiBUcnVlIGlmIHNvdXJjZSBpcyBwYXJzZWFibGUsIGhldXJp
c3RpY2FsbHkKLSAgICAgICAgICAgIGRlaW5kZW50aW5nIGl0IGJ5IGRlZmF1bHQuCi0gICAgICAg
ICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgcGFyc2VyCi0gICAgICAgIGV4
Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIGRlZiBzeW50YXhfY2hlY2tlcih4KToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZSh4LCAnYXNkJywgJ2V4ZWMnKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc3ludGF4X2NoZWNrZXIgPSBwYXJzZXIuc3VpdGUKLQotICAgICAg
ICBpZiBkZWluZGVudDoKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0cihzZWxmLmRlaW5kZW50KCkp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzb3VyY2UgPSBzdHIoc2VsZikKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgIyBjb21waWxlKHNvdXJjZSsnXG4nLCAieCIsICJleGVjIikKLSAg
ICAgICAgICAgIHN5bnRheF9jaGVja2VyKHNvdXJjZSArICdcbicpCi0gICAgICAgIGV4Y2VwdCBL
ZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNl
cHRpb246Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICJcbiIuam9pbihzZWxmLmxpbmVzKQotCi0gICAgZGVmIGNvbXBpbGUoc2VsZiwgZmlsZW5hbWU9
Tm9uZSwgbW9kZT0nZXhlYycsCi0gICAgICAgICAgICAgICAgZmxhZz1nZW5lcmF0b3JzLmNvbXBp
bGVyX2ZsYWcsCi0gICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PTAsIF9nZW5mcmFtZT1Ob25l
KToKLSAgICAgICAgIiIiIHJldHVybiBjb21waWxlZCBjb2RlIG9iamVjdC4gaWYgZmlsZW5hbWUg
aXMgTm9uZQotICAgICAgICAgICAgaW52ZW50IGFuIGFydGlmaWNpYWwgZmlsZW5hbWUgd2hpY2gg
ZGlzcGxheXMKLSAgICAgICAgICAgIHRoZSBzb3VyY2UvbGluZSBwb3NpdGlvbiBvZiB0aGUgY2Fs
bGVyIGZyYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIHB5LnBh
dGgubG9jYWwoZmlsZW5hbWUpLmNoZWNrKGZpbGU9MCk6Ci0gICAgICAgICAgICBpZiBfZ2VuZnJh
bWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBfZ2VuZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEp
ICAjIHRoZSBjYWxsZXIKLSAgICAgICAgICAgIGZuLCBsaW5lbm8gPSBfZ2VuZnJhbWUuZl9jb2Rl
LmNvX2ZpbGVuYW1lLCBfZ2VuZnJhbWUuZl9saW5lbm8KLSAgICAgICAgICAgIGJhc2UgPSAiPCVk
LWNvZGVnZW4gIiAlIHNlbGYuX2NvbXBpbGVjb3VudGVyCi0gICAgICAgICAgICBzZWxmLl9fY2xh
c3NfXy5fY29tcGlsZWNvdW50ZXIgKz0gMQotICAgICAgICAgICAgaWYgbm90IGZpbGVuYW1lOgot
ICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gYmFzZSArICclczolZD4nICUgKGZuLCBsaW5lbm8p
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gYmFzZSArICcl
ciAlczolZD4nICUgKGZpbGVuYW1lLCBmbiwgbGluZW5vKQotICAgICAgICBzb3VyY2UgPSAiXG4i
LmpvaW4oc2VsZi5saW5lcykgKyAnXG4nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvID0g
Y3B5X2NvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZykKLSAgICAgICAgZXhjZXB0
IFN5bnRheEVycm9yOgotICAgICAgICAgICAgZXggPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAg
ICAgICAgIyByZS1yZXByZXNlbnQgc3ludGF4IGVycm9ycyBmcm9tIHBhcnNpbmcgcHl0aG9uIHN0
cmluZ3MKLSAgICAgICAgICAgIG1zZ2xpbmVzID0gc2VsZi5saW5lc1s6ZXgubGluZW5vXQotICAg
ICAgICAgICAgaWYgZXgub2Zmc2V0OgotICAgICAgICAgICAgICAgIG1zZ2xpbmVzLmFwcGVuZCgi
ICIgKiBleC5vZmZzZXQgKyAnXicpCi0gICAgICAgICAgICBtc2dsaW5lcy5hcHBlbmQoIihjb2Rl
IHdhcyBjb21waWxlZCBwcm9iYWJseSBmcm9tIGhlcmU6ICVzKSIgJSBmaWxlbmFtZSkKLSAgICAg
ICAgICAgIG5ld2V4ID0gU3ludGF4RXJyb3IoJ1xuJy5qb2luKG1zZ2xpbmVzKSkKLSAgICAgICAg
ICAgIG5ld2V4Lm9mZnNldCA9IGV4Lm9mZnNldAotICAgICAgICAgICAgbmV3ZXgubGluZW5vID0g
ZXgubGluZW5vCi0gICAgICAgICAgICBuZXdleC50ZXh0ID0gZXgudGV4dAotICAgICAgICAgICAg
cmFpc2UgbmV3ZXgKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGZsYWcgJiBfQVNUX0ZM
QUc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvCi0gICAgICAgICAgICBsaW5lcyA9IFsoeCAr
ICJcbiIpIGZvciB4IGluIHNlbGYubGluZXNdCi0gICAgICAgICAgICBweS5zdGQubGluZWNhY2hl
LmNhY2hlW2ZpbGVuYW1lXSA9ICgxLCBOb25lLCBsaW5lcywgZmlsZW5hbWUpCi0gICAgICAgICAg
ICByZXR1cm4gY28KLQotIwotIyBwdWJsaWMgQVBJIHNob3J0Y3V0IGZ1bmN0aW9ucwotIwotCi0K
LWRlZiBjb21waWxlXyhzb3VyY2UsIGZpbGVuYW1lPU5vbmUsIG1vZGU9J2V4ZWMnLCBmbGFncz1n
ZW5lcmF0b3JzLmNvbXBpbGVyX2ZsYWcsIGRvbnRfaW5oZXJpdD0wKToKLSAgICAiIiIgY29tcGls
ZSB0aGUgZ2l2ZW4gc291cmNlIHRvIGEgcmF3IGNvZGUgb2JqZWN0LAotICAgICAgICBhbmQgbWFp
bnRhaW4gYW4gaW50ZXJuYWwgY2FjaGUgd2hpY2ggYWxsb3dzIGxhdGVyCi0gICAgICAgIHJldHJp
ZXZhbCBvZiB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBjb2RlIG9iamVjdAotICAgICAgICBhbmQg
YW55IHJlY3Vyc2l2ZWx5IGNyZWF0ZWQgY29kZSBvYmplY3RzLgotICAgICIiIgotICAgIGlmIF9h
c3QgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2Uoc291cmNlLCBfYXN0LkFTVCk6Ci0gICAgICAg
ICMgWFhYIHNob3VsZCBTb3VyY2Ugc3VwcG9ydCBoYXZpbmcgQVNUPwotICAgICAgICByZXR1cm4g
Y3B5X2NvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCkK
LSAgICBfZ2VuZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpICAjIHRoZSBjYWxsZXIKLSAgICBzID0g
U291cmNlKHNvdXJjZSkKLSAgICBjbyA9IHMuY29tcGlsZShmaWxlbmFtZSwgbW9kZSwgZmxhZ3Ms
IF9nZW5mcmFtZT1fZ2VuZnJhbWUpCi0gICAgcmV0dXJuIGNvCi0KLQotZGVmIGdldGZzbGluZW5v
KG9iaik6Ci0gICAgIiIiIFJldHVybiBzb3VyY2UgbG9jYXRpb24gKHBhdGgsIGxpbmVubykgZm9y
IHRoZSBnaXZlbiBvYmplY3QuCi0gICAgSWYgdGhlIHNvdXJjZSBjYW5ub3QgYmUgZGV0ZXJtaW5l
ZCByZXR1cm4gKCIiLCAtMSkKLSAgICAiIiIKLSAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAg
IHRyeToKLSAgICAgICAgY29kZSA9IF9weXRlc3QuX2NvZGUuQ29kZShvYmopCi0gICAgZXhjZXB0
IFR5cGVFcnJvcjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm4gPSAocHkuc3RkLmluc3Bl
Y3QuZ2V0c291cmNlZmlsZShvYmopIG9yCi0gICAgICAgICAgICAgICAgICBweS5zdGQuaW5zcGVj
dC5nZXRmaWxlKG9iaikpCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICBy
ZXR1cm4gIiIsIC0xCi0KLSAgICAgICAgZnNwYXRoID0gZm4gYW5kIHB5LnBhdGgubG9jYWwoZm4p
IG9yIE5vbmUKLSAgICAgICAgbGluZW5vID0gLTEKLSAgICAgICAgaWYgZnNwYXRoOgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF8sIGxpbmVubyA9IGZpbmRzb3VyY2Uob2JqKQot
ICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgIGVs
c2U6Ci0gICAgICAgIGZzcGF0aCA9IGNvZGUucGF0aAotICAgICAgICBsaW5lbm8gPSBjb2RlLmZp
cnN0bGluZW5vCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZW5vLCBpbnQpCi0gICAgcmV0dXJu
IGZzcGF0aCwgbGluZW5vCi0KLSMKLSMgaGVscGVyIGZ1bmN0aW9ucwotIwotCi0KLWRlZiBmaW5k
c291cmNlKG9iaik6Ci0gICAgdHJ5OgotICAgICAgICBzb3VyY2VsaW5lcywgbGluZW5vID0gcHku
c3RkLmluc3BlY3QuZmluZHNvdXJjZShvYmopCi0gICAgZXhjZXB0IHB5LmJ1aWx0aW4uX3N5c2V4
OgotICAgICAgICByYWlzZQotICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICByZXR1cm4gTm9u
ZSwgLTEKLSAgICBzb3VyY2UgPSBTb3VyY2UoKQotICAgIHNvdXJjZS5saW5lcyA9IFtsaW5lLnJz
dHJpcCgpIGZvciBsaW5lIGluIHNvdXJjZWxpbmVzXQotICAgIHJldHVybiBzb3VyY2UsIGxpbmVu
bwotCi0KLWRlZiBnZXRzb3VyY2Uob2JqLCAqKmt3YXJncyk6Ci0gICAgaW1wb3J0IF9weXRlc3Qu
X2NvZGUKLSAgICBvYmogPSBfcHl0ZXN0Ll9jb2RlLmdldHJhd2NvZGUob2JqKQotICAgIHRyeToK
LSAgICAgICAgc3Ryc3JjID0gaW5zcGVjdC5nZXRzb3VyY2Uob2JqKQotICAgIGV4Y2VwdCBJbmRl
bnRhdGlvbkVycm9yOgotICAgICAgICBzdHJzcmMgPSAiXCJCdWdneSBweXRob24gdmVyc2lvbiBj
b25zaWRlciB1cGdyYWRpbmcsIGNhbm5vdCBnZXQgc291cmNlXCIiCi0gICAgYXNzZXJ0IGlzaW5z
dGFuY2Uoc3Ryc3JjLCBzdHIpCi0gICAgcmV0dXJuIFNvdXJjZShzdHJzcmMsICoqa3dhcmdzKQot
Ci0KLWRlZiBkZWluZGVudChsaW5lcywgb2Zmc2V0PU5vbmUpOgotICAgIGlmIG9mZnNldCBpcyBO
b25lOgotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGxpbmUgPSBsaW5l
LmV4cGFuZHRhYnMoKQotICAgICAgICAgICAgcyA9IGxpbmUubHN0cmlwKCkKLSAgICAgICAgICAg
IGlmIHM6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbGVuKGxpbmUpIC0gbGVuKHMpCi0gICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9mZnNldCA9IDAK
LSAgICBpZiBvZmZzZXQgPT0gMDoKLSAgICAgICAgcmV0dXJuIGxpc3QobGluZXMpCi0gICAgbmV3
bGluZXMgPSBbXQotCi0gICAgZGVmIHJlYWRsaW5lX2dlbmVyYXRvcihsaW5lcyk6Ci0gICAgICAg
IGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgeWllbGQgbGluZSArICdcbicKLSAgICAg
ICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHlpZWxkICcnCi0KLSAgICBpdCA9IHJlYWRsaW5l
X2dlbmVyYXRvcihsaW5lcykKLQotICAgIHRyeToKLSAgICAgICAgZm9yIF8sIF8sIChzbGluZSwg
XyksIChlbGluZSwgXyksIF8gaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKGxhbWJkYTogbmV4
dChpdCkpOgotICAgICAgICAgICAgaWYgc2xpbmUgPiBsZW4obGluZXMpOgotICAgICAgICAgICAg
ICAgIGJyZWFrICAjIEVuZCBvZiBpbnB1dCByZWFjaGVkCi0gICAgICAgICAgICBpZiBzbGluZSA+
IGxlbihuZXdsaW5lcyk6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVzW3NsaW5lIC0gMV0u
ZXhwYW5kdGFicygpCi0gICAgICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKSBhbmQgbGluZVs6
b2Zmc2V0XS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lW29mZnNl
dDpdICAjIERlaW5kZW50Ci0gICAgICAgICAgICAgICAgbmV3bGluZXMuYXBwZW5kKGxpbmUpCi0K
LSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNsaW5lLCBlbGluZSk6Ci0gICAgICAgICAgICAg
ICAgIyBEb24ndCBkZWluZGVudCBjb250aW51aW5nIGxpbmVzIG9mCi0gICAgICAgICAgICAgICAg
IyBtdWx0aWxpbmUgdG9rZW5zIChpLmUuIG11bHRpbGluZSBzdHJpbmdzKQotICAgICAgICAgICAg
ICAgIG5ld2xpbmVzLmFwcGVuZChsaW5lc1tpXSkKLSAgICBleGNlcHQgKEluZGVudGF0aW9uRXJy
b3IsIHRva2VuaXplLlRva2VuRXJyb3IpOgotICAgICAgICBwYXNzCi0gICAgIyBBZGQgYW55IGxp
bmVzIHdlIGRpZG4ndCBzZWUuIEUuZy4gaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQuCi0gICAg
bmV3bGluZXMuZXh0ZW5kKGxpbmVzW2xlbihuZXdsaW5lcyk6XSkKLSAgICByZXR1cm4gbmV3bGlu
ZXMKLQotCi1kZWYgZ2V0X3N0YXRlbWVudF9zdGFydGVuZDIobGluZW5vLCBub2RlKToKLSAgICBp
bXBvcnQgYXN0Ci0gICAgIyBmbGF0dGVuIGFsbCBzdGF0ZW1lbnRzIGFuZCBleGNlcHQgaGFuZGxl
cnMgaW50byBvbmUgbGluZW5vLWxpc3QKLSAgICAjIEFTVCdzIGxpbmUgbnVtYmVycyBzdGFydCBp
bmRleGluZyBhdCAxCi0gICAgdmFsdWVzID0gW10KLSAgICBmb3IgeCBpbiBhc3Qud2Fsayhub2Rl
KToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCBfYXN0LnN0bXQpIG9yIGlzaW5zdGFuY2UoeCwg
X2FzdC5FeGNlcHRIYW5kbGVyKToKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoeC5saW5lbm8g
LSAxKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gImZpbmFsYm9keSIsICJvcmVsc2UiOgotICAg
ICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoeCwgbmFtZSwgTm9uZSkKLSAgICAgICAgICAgICAg
ICBpZiB2YWw6Ci0gICAgICAgICAgICAgICAgICAgICMgdHJlYXQgdGhlIGZpbmFsbHkvb3JlbHNl
IHBhcnQgYXMgaXRzIG93biBzdGF0ZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZCh2YWxbMF0ubGluZW5vIC0gMSAtIDEpCi0gICAgdmFsdWVzLnNvcnQoKQotICAgIGluc2Vy
dF9pbmRleCA9IGJpc2VjdF9yaWdodCh2YWx1ZXMsIGxpbmVubykKLSAgICBzdGFydCA9IHZhbHVl
c1tpbnNlcnRfaW5kZXggLSAxXQotICAgIGlmIGluc2VydF9pbmRleCA+PSBsZW4odmFsdWVzKToK
LSAgICAgICAgZW5kID0gTm9uZQotICAgIGVsc2U6Ci0gICAgICAgIGVuZCA9IHZhbHVlc1tpbnNl
cnRfaW5kZXhdCi0gICAgcmV0dXJuIHN0YXJ0LCBlbmQKLQotCi1kZWYgZ2V0c3RhdGVtZW50cmFu
Z2VfYXN0KGxpbmVubywgc291cmNlLCBhc3NlcnRpb249RmFsc2UsIGFzdG5vZGU9Tm9uZSk6Ci0g
ICAgaWYgYXN0bm9kZSBpcyBOb25lOgotICAgICAgICBjb250ZW50ID0gc3RyKHNvdXJjZSkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgYXN0bm9kZSA9IGNvbXBpbGUoY29udGVudCwgInNvdXJj
ZSIsICJleGVjIiwgMTAyNCkgICMgMTAyNCBmb3IgQVNUCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yOgotICAgICAgICAgICAgc3RhcnQsIGVuZCA9IGdldHN0YXRlbWVudHJhbmdlX29sZChsaW5l
bm8sIHNvdXJjZSwgYXNzZXJ0aW9uKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHN0YXJ0LCBl
bmQKLSAgICBzdGFydCwgZW5kID0gZ2V0X3N0YXRlbWVudF9zdGFydGVuZDIobGluZW5vLCBhc3Ru
b2RlKQotICAgICMgd2UgbmVlZCB0byBjb3JyZWN0IHRoZSBlbmQ6Ci0gICAgIyAtIGFzdC1wYXJz
aW5nIHN0cmlwcyBjb21tZW50cwotICAgICMgLSB0aGVyZSBtaWdodCBiZSBlbXB0eSBsaW5lcwot
ICAgICMgLSB3ZSBtaWdodCBoYXZlIGxlc3NlciBpbmRlbnRlZCBjb2RlIGJsb2NrcyBhdCB0aGUg
ZW5kCi0gICAgaWYgZW5kIGlzIE5vbmU6Ci0gICAgICAgIGVuZCA9IGxlbihzb3VyY2UubGluZXMp
Ci0KLSAgICBpZiBlbmQgPiBzdGFydCArIDE6Ci0gICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0
IHNwYW4gZGlmZmVyZW50bHkgaW5kZW50ZWQgY29kZSBibG9ja3MKLSAgICAgICAgIyBieSB1c2lu
ZyB0aGUgQmxvY2tGaW5kZXIgaGVscGVyIHVzZWQgd2hpY2ggaW5zcGVjdC5nZXRzb3VyY2UoKSB1
c2VzIGl0c2VsZgotICAgICAgICBibG9ja19maW5kZXIgPSBpbnNwZWN0LkJsb2NrRmluZGVyKCkK
LSAgICAgICAgIyBpZiB3ZSBzdGFydCB3aXRoIGFuIGluZGVudGVkIGxpbmUsIHB1dCBibG9ja2Zp
bmRlciB0byAic3RhcnRlZCIgbW9kZQotICAgICAgICBibG9ja19maW5kZXIuc3RhcnRlZCA9IHNv
dXJjZS5saW5lc1tzdGFydF1bMF0uaXNzcGFjZSgpCi0gICAgICAgIGl0ID0gKCh4ICsgIlxuIikg
Zm9yIHggaW4gc291cmNlLmxpbmVzW3N0YXJ0OmVuZF0pCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIGZvciB0b2sgaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKGxhbWJkYTogbmV4dChpdCkp
OgotICAgICAgICAgICAgICAgIGJsb2NrX2ZpbmRlci50b2tlbmVhdGVyKCp0b2spCi0gICAgICAg
IGV4Y2VwdCAoaW5zcGVjdC5FbmRPZkJsb2NrLCBJbmRlbnRhdGlvbkVycm9yKToKLSAgICAgICAg
ICAgIGVuZCA9IGJsb2NrX2ZpbmRlci5sYXN0ICsgc3RhcnQKLSAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICMgdGhlIGVuZCBtaWdodCBzdGlsbCBwb2lu
dCB0byBhIGNvbW1lbnQgb3IgZW1wdHkgbGluZSwgY29ycmVjdCBpdAotICAgIHdoaWxlIGVuZDoK
LSAgICAgICAgbGluZSA9IHNvdXJjZS5saW5lc1tlbmQgLSAxXS5sc3RyaXAoKQotICAgICAgICBp
ZiBsaW5lLnN0YXJ0c3dpdGgoIiMiKSBvciBub3QgbGluZToKLSAgICAgICAgICAgIGVuZCAtPSAx
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBicmVhawotICAgIHJldHVybiBhc3Rub2RlLCBz
dGFydCwgZW5kCi0KLQotZGVmIGdldHN0YXRlbWVudHJhbmdlX29sZChsaW5lbm8sIHNvdXJjZSwg
YXNzZXJ0aW9uPUZhbHNlKToKLSAgICAiIiIgcmV0dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGlj
aCBzcGFucyB0aGUgbWluaW1hbAotICAgICAgICBzdGF0ZW1lbnQgcmVnaW9uIHdoaWNoIGNvbnRh
aW5pbmcgdGhlIGdpdmVuIGxpbmVuby4KLSAgICAgICAgcmFpc2UgYW4gSW5kZXhFcnJvciBpZiBu
byBzdWNoIHN0YXRlbWVudHJhbmdlIGNhbiBiZSBmb3VuZC4KLSAgICAiIiIKLSAgICAjIFhYWCB0
aGlzIGxvZ2ljIGlzIG9ubHkgdXNlZCBvbiBweXRob24yLjQgYW5kIGJlbG93Ci0gICAgIyAxLiBm
aW5kIHRoZSBzdGFydCBvZiB0aGUgc3RhdGVtZW50Ci0gICAgZnJvbSBjb2Rlb3AgaW1wb3J0IGNv
bXBpbGVfY29tbWFuZAotICAgIGZvciBzdGFydCBpbiByYW5nZShsaW5lbm8sIC0xLCAtMSk6Ci0g
ICAgICAgIGlmIGFzc2VydGlvbjoKLSAgICAgICAgICAgIGxpbmUgPSBzb3VyY2UubGluZXNbc3Rh
cnRdCi0gICAgICAgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZXMgYXJlIG5vdCBmdWxseSB0ZXN0
ZWQsIGNoYW5nZSB3aXRoIGNhcmUKLSAgICAgICAgICAgIGlmICdzdXBlcicgaW4gbGluZSBhbmQg
J3NlbGYnIGluIGxpbmUgYW5kICdfX2luaXRfXycgaW4gbGluZToKLSAgICAgICAgICAgICAgICBy
YWlzZSBJbmRleEVycm9yKCJsaWtlbHkgYSBzdWJjbGFzcyIpCi0gICAgICAgICAgICBpZiAiYXNz
ZXJ0IiBub3QgaW4gbGluZSBhbmQgInJhaXNlIiBub3QgaW4gbGluZToKLSAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICB0cnlsaW5lcyA9IHNvdXJjZS5saW5lc1tzdGFydDpsaW5lbm8g
KyAxXQotICAgICAgICAjIHF1aWNrIGhhY2sgdG8gcHJlcGFyZSBwYXJzaW5nIGFuIGluZGVudGVk
IGxpbmUgd2l0aAotICAgICAgICAjIGNvbXBpbGVfY29tbWFuZCgpICh3aGljaCBlcnJvcnMgb24g
InJldHVybiIgb3V0c2lkZSBkZWZzKQotICAgICAgICB0cnlsaW5lcy5pbnNlcnQoMCwgJ2RlZiB4
eHgoKTonKQotICAgICAgICB0cnlzb3VyY2UgPSAnXG4gJy5qb2luKHRyeWxpbmVzKQotICAgICAg
ICAjICAgICAgICAgICAgICBeIHNwYWNlIGhlcmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
Y29tcGlsZV9jb21tYW5kKHRyeXNvdXJjZSkKLSAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwg
T3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAg
ICAgICMgMi4gZmluZCB0aGUgZW5kIG9mIHRoZSBzdGF0ZW1lbnQKLSAgICAgICAgZm9yIGVuZCBp
biByYW5nZShsaW5lbm8gKyAxLCBsZW4oc291cmNlKSArIDEpOgotICAgICAgICAgICAgdHJ5c291
cmNlID0gc291cmNlW3N0YXJ0OmVuZF0KLSAgICAgICAgICAgIGlmIHRyeXNvdXJjZS5pc3BhcnNl
YWJsZSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBzdGFydCwgZW5kCi0gICAgcmFpc2UgU3lu
dGF4RXJyb3IoIm5vIHZhbGlkIHNvdXJjZSByYW5nZSBhcm91bmQgbGluZSAlZCAiICUgKGxpbmVu
bywpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgyMjMzNGYzZjhlZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvX2NvZGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9fcHkydHJhY2ViYWNrLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9fY29kZS9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9zb3Vy
Y2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0OGU5OGM4NWFhMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMTQ2ICswLDAgQEAKLSIiIgotc3VwcG9ydCBmb3IgcHJlc2VudGluZyBkZXRhaWxlZCBpbmZv
cm1hdGlvbiBpbiBmYWlsaW5nIGFzc2VydGlvbnMuCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBzeXMK
LWltcG9ydCBzaXgKLQotZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgdXRpbAotZnJvbSBf
cHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgcmV3cml0ZQotZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBp
bXBvcnQgdHJ1bmNhdGUKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdy
b3VwID0gcGFyc2VyLmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIpCi0gICAgZ3JvdXAuYWRkb3B0aW9u
KCctLWFzc2VydCcsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLAotICAgICAg
ICAgICAgICAgICAgICBkZXN0PSJhc3NlcnRtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgY2hv
aWNlcz0oInJld3JpdGUiLCAicGxhaW4iLCksCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
InJld3JpdGUiLAotICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJNT0RFIiwKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0iIiJDb250cm9sIGFzc2VydGlvbiBkZWJ1Z2dpbmcgdG9vbHMuICAn
cGxhaW4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybXMgbm8gYXNzZXJ0aW9u
IGRlYnVnZ2luZy4gICdyZXdyaXRlJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGUg
ZGVmYXVsdCkgcmV3cml0ZXMgYXNzZXJ0IHN0YXRlbWVudHMgaW4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0IG1vZHVsZXMgb24gaW1wb3J0IHRvIHByb3ZpZGUgYXNzZXJ0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiBpbmZvcm1hdGlvbi4iIiIpCi0KLQot
ZGVmIHJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlKCpuYW1lcyk6Ci0gICAgIiIiUmVnaXN0ZXIgb25l
IG9yIG1vcmUgbW9kdWxlIG5hbWVzIHRvIGJlIHJld3JpdHRlbiBvbiBpbXBvcnQuCi0KLSAgICBU
aGlzIGZ1bmN0aW9uIHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhpcyBtb2R1bGUgb3IgYWxsIG1vZHVs
ZXMgaW5zaWRlCi0gICAgdGhlIHBhY2thZ2Ugd2lsbCBnZXQgdGhlaXIgYXNzZXJ0IHN0YXRlbWVu
dHMgcmV3cml0dGVuLgotICAgIFRodXMgeW91IHNob3VsZCBtYWtlIHN1cmUgdG8gY2FsbCB0aGlz
IGJlZm9yZSB0aGUgbW9kdWxlIGlzCi0gICAgYWN0dWFsbHkgaW1wb3J0ZWQsIHVzdWFsbHkgaW4g
eW91ciBfX2luaXRfXy5weSBpZiB5b3UgYXJlIGEgcGx1Z2luCi0gICAgdXNpbmcgYSBwYWNrYWdl
LgotCi0gICAgOnJhaXNlIFR5cGVFcnJvcjogaWYgdGhlIGdpdmVuIG1vZHVsZSBuYW1lcyBhcmUg
bm90IHN0cmluZ3MuCi0gICAgIiIiCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6Ci0gICAgICAgICAgICBtc2cgPSAnZXhwZWN0ZWQg
bW9kdWxlIG5hbWVzIGFzICphcmdzLCBnb3QgezB9IGluc3RlYWQnCi0gICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IobXNnLmZvcm1hdChyZXByKG5hbWVzKSkpCi0gICAgZm9yIGhvb2sgaW4gc3lz
Lm1ldGFfcGF0aDoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShob29rLCByZXdyaXRlLkFzc2VydGlv
blJld3JpdGluZ0hvb2spOgotICAgICAgICAgICAgaW1wb3J0aG9vayA9IGhvb2sKLSAgICAgICAg
ICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgaW1wb3J0aG9vayA9IER1bW15UmV3cml0ZUhv
b2soKQotICAgIGltcG9ydGhvb2subWFya19yZXdyaXRlKCpuYW1lcykKLQotCi1jbGFzcyBEdW1t
eVJld3JpdGVIb29rKG9iamVjdCk6Ci0gICAgIiIiQSBuby1vcCBpbXBvcnQgaG9vayBmb3Igd2hl
biByZXdyaXRpbmcgaXMgZGlzYWJsZWQuIiIiCi0KLSAgICBkZWYgbWFya19yZXdyaXRlKHNlbGYs
ICpuYW1lcyk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBBc3NlcnRpb25TdGF0ZToKLSAgICAi
IiJTdGF0ZSBmb3IgdGhlIGFzc2VydGlvbiBwbHVnaW4uIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY29uZmlnLCBtb2RlKToKLSAgICAgICAgc2VsZi5tb2RlID0gbW9kZQotICAgICAgICBz
ZWxmLnRyYWNlID0gY29uZmlnLnRyYWNlLnJvb3QuZ2V0KCJhc3NlcnRpb24iKQotICAgICAgICBz
ZWxmLmhvb2sgPSBOb25lCi0KLQotZGVmIGluc3RhbGxfaW1wb3J0aG9vayhjb25maWcpOgotICAg
ICIiIlRyeSB0byBpbnN0YWxsIHRoZSByZXdyaXRlIGhvb2ssIHJhaXNlIFN5c3RlbUVycm9yIGlm
IGl0IGZhaWxzLiIiIgotICAgICMgSnl0aG9uIGhhcyBhbiBBU1QgYnVnIHRoYXQgbWFrZSB0aGUg
YXNzZXJ0aW9uIHJld3JpdGluZyBob29rIG1hbGZ1bmN0aW9uLgotICAgIGlmIChzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnamF2YScpKToKLSAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoJ3Jld3Jp
dGUgbm90IHN1cHBvcnRlZCcpCi0KLSAgICBjb25maWcuX2Fzc2VydHN0YXRlID0gQXNzZXJ0aW9u
U3RhdGUoY29uZmlnLCAncmV3cml0ZScpCi0gICAgY29uZmlnLl9hc3NlcnRzdGF0ZS5ob29rID0g
aG9vayA9IHJld3JpdGUuQXNzZXJ0aW9uUmV3cml0aW5nSG9vayhjb25maWcpCi0gICAgc3lzLm1l
dGFfcGF0aC5pbnNlcnQoMCwgaG9vaykKLSAgICBjb25maWcuX2Fzc2VydHN0YXRlLnRyYWNlKCdp
bnN0YWxsZWQgcmV3cml0ZSBpbXBvcnQgaG9vaycpCi0KLSAgICBkZWYgdW5kbygpOgotICAgICAg
ICBob29rID0gY29uZmlnLl9hc3NlcnRzdGF0ZS5ob29rCi0gICAgICAgIGlmIGhvb2sgaXMgbm90
IE5vbmUgYW5kIGhvb2sgaW4gc3lzLm1ldGFfcGF0aDoKLSAgICAgICAgICAgIHN5cy5tZXRhX3Bh
dGgucmVtb3ZlKGhvb2spCi0KLSAgICBjb25maWcuYWRkX2NsZWFudXAodW5kbykKLSAgICByZXR1
cm4gaG9vawotCi0KLWRlZiBweXRlc3RfY29sbGVjdGlvbihzZXNzaW9uKToKLSAgICAjIHRoaXMg
aG9vayBpcyBvbmx5IGNhbGxlZCB3aGVuIHRlc3QgbW9kdWxlcyBhcmUgY29sbGVjdGVkCi0gICAg
IyBzbyBmb3IgZXhhbXBsZSBub3QgaW4gdGhlIG1hc3RlciBwcm9jZXNzIG9mIHB5dGVzdC14ZGlz
dAotICAgICMgKHdoaWNoIGRvZXMgbm90IGNvbGxlY3QgdGVzdCBtb2R1bGVzKQotICAgIGFzc2Vy
dHN0YXRlID0gZ2V0YXR0cihzZXNzaW9uLmNvbmZpZywgJ19hc3NlcnRzdGF0ZScsIE5vbmUpCi0g
ICAgaWYgYXNzZXJ0c3RhdGU6Ci0gICAgICAgIGlmIGFzc2VydHN0YXRlLmhvb2sgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBhc3NlcnRzdGF0ZS5ob29rLnNldF9zZXNzaW9uKHNlc3Npb24pCi0K
LQotZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICIiIlNldHVwIHRoZSBweXRl
c3RfYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2sKLQotICAgIFRoZSBuZXdpbnRlcnByZXQgYW5kIHJl
d3JpdGUgbW9kdWxlcyB3aWxsIHVzZSB1dGlsLl9yZXByY29tcGFyZSBpZgotICAgIGl0IGV4aXN0
cyB0byB1c2UgY3VzdG9tIHJlcG9ydGluZyB2aWEgdGhlCi0gICAgcHl0ZXN0X2Fzc2VydHJlcHJf
Y29tcGFyZSBob29rLiAgVGhpcyBzZXRzIHVwIHRoaXMgY3VzdG9tCi0gICAgY29tcGFyaXNvbiBm
b3IgdGhlIHRlc3QuCi0gICAgIiIiCi0gICAgZGVmIGNhbGxiaW5yZXByKG9wLCBsZWZ0LCByaWdo
dCk6Ci0gICAgICAgICIiIkNhbGwgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vayBh
bmQgcHJlcGFyZSB0aGUgcmVzdWx0Ci0KLSAgICAgICAgVGhpcyB1c2VzIHRoZSBmaXJzdCByZXN1
bHQgZnJvbSB0aGUgaG9vayBhbmQgdGhlbiBlbnN1cmVzIHRoZQotICAgICAgICBmb2xsb3dpbmc6
Ci0gICAgICAgICogT3Zlcmx5IHZlcmJvc2UgZXhwbGFuYXRpb25zIGFyZSB0cnVuY2F0ZWQgdW5s
ZXNzIGNvbmZpZ3VyZWQgb3RoZXJ3aXNlCi0gICAgICAgICAgKGVnLiBpZiBydW5uaW5nIGluIHZl
cmJvc2UgbW9kZSkuCi0gICAgICAgICogRW1iZWRkZWQgbmV3bGluZXMgYXJlIGVzY2FwZWQgdG8g
aGVscCB1dGlsLmZvcm1hdF9leHBsYW5hdGlvbigpCi0gICAgICAgICAgbGF0ZXIuCi0gICAgICAg
ICogSWYgdGhlIHJld3JpdGUgbW9kZSBpcyB1c2VkIGVtYmVkZGVkICUtY2hhcmFjdGVycyBhcmUg
cmVwbGFjZWQKLSAgICAgICAgICB0byBwcm90ZWN0IGxhdGVyICUgZm9ybWF0dGluZy4KLQotICAg
ICAgICBUaGUgcmVzdWx0IGNhbiBiZSBmb3JtYXR0ZWQgYnkgdXRpbC5mb3JtYXRfZXhwbGFuYXRp
b24oKSBmb3IKLSAgICAgICAgcHJldHR5IHByaW50aW5nLgotICAgICAgICAiIiIKLSAgICAgICAg
aG9va19yZXN1bHQgPSBpdGVtLmlob29rLnB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUoCi0gICAg
ICAgICAgICBjb25maWc9aXRlbS5jb25maWcsIG9wPW9wLCBsZWZ0PWxlZnQsIHJpZ2h0PXJpZ2h0
KQotICAgICAgICBmb3IgbmV3X2V4cGwgaW4gaG9va19yZXN1bHQ6Ci0gICAgICAgICAgICBpZiBu
ZXdfZXhwbDoKLSAgICAgICAgICAgICAgICBuZXdfZXhwbCA9IHRydW5jYXRlLnRydW5jYXRlX2lm
X3JlcXVpcmVkKG5ld19leHBsLCBpdGVtKQotICAgICAgICAgICAgICAgIG5ld19leHBsID0gW2xp
bmUucmVwbGFjZSgiXG4iLCAiXFxuIikgZm9yIGxpbmUgaW4gbmV3X2V4cGxdCi0gICAgICAgICAg
ICAgICAgcmVzID0gc2l4LnRleHRfdHlwZSgiXG5+Iikuam9pbihuZXdfZXhwbCkKLSAgICAgICAg
ICAgICAgICBpZiBpdGVtLmNvbmZpZy5nZXR2YWx1ZSgiYXNzZXJ0bW9kZSIpID09ICJyZXdyaXRl
IjoKLSAgICAgICAgICAgICAgICAgICAgcmVzID0gcmVzLnJlcGxhY2UoIiUiLCAiJSUiKQotICAg
ICAgICAgICAgICAgIHJldHVybiByZXMKLSAgICB1dGlsLl9yZXByY29tcGFyZSA9IGNhbGxiaW5y
ZXByCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duKGl0ZW0pOgotICAgIHV0aWwuX3Jl
cHJjb21wYXJlID0gTm9uZQotCi0KLWRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uKToK
LSAgICBhc3NlcnRzdGF0ZSA9IGdldGF0dHIoc2Vzc2lvbi5jb25maWcsICdfYXNzZXJ0c3RhdGUn
LCBOb25lKQotICAgIGlmIGFzc2VydHN0YXRlOgotICAgICAgICBpZiBhc3NlcnRzdGF0ZS5ob29r
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXNzZXJ0c3RhdGUuaG9vay5zZXRfc2Vzc2lvbihO
b25lKQotCi0KLSMgRXhwb3NlIHRoaXMgcGx1Z2luJ3MgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBw
eXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2sKLXB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUg
PSB1dGlsLmFzc2VydHJlcHJfY29tcGFyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9hc3NlcnRpb24vcmV3cml0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3Jl
d3JpdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NDM1OGY0OTBiYy4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw5NDggKzAsMCBAQAotIiIiUmV3cml0ZSBhc3NlcnRpb24gQVNU
IHRvIHByb2R1Y2UgbmljZSBlcnJvciBtZXNzYWdlcyIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IGFzdAot
aW1wb3J0IF9hc3QKLWltcG9ydCBlcnJubwotaW1wb3J0IGl0ZXJ0b29scwotaW1wb3J0IGltcAot
aW1wb3J0IG1hcnNoYWwKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2l4Ci1pbXBvcnQg
c3RydWN0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdHlwZXMKLQotaW1wb3J0IHB5Ci1mcm9tIF9weXRl
c3QuYXNzZXJ0aW9uIGltcG9ydCB1dGlsCi0KLQotIyBweXRlc3QgY2FjaGVzIHJld3JpdHRlbiBw
eWNzIGluIF9fcHljYWNoZV9fLgotaWYgaGFzYXR0cihpbXAsICJnZXRfdGFnIik6Ci0gICAgUFlU
RVNUX1RBRyA9IGltcC5nZXRfdGFnKCkgKyAiLVBZVEVTVCIKLWVsc2U6Ci0gICAgaWYgaGFzYXR0
cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgotICAgICAgICBpbXBsID0gInB5cHkiCi0gICAg
ZWxpZiBzeXMucGxhdGZvcm0gPT0gImphdmEiOgotICAgICAgICBpbXBsID0gImp5dGhvbiIKLSAg
ICBlbHNlOgotICAgICAgICBpbXBsID0gImNweXRob24iCi0gICAgdmVyID0gc3lzLnZlcnNpb25f
aW5mbwotICAgIFBZVEVTVF9UQUcgPSAiJXMtJXMlcy1QWVRFU1QiICUgKGltcGwsIHZlclswXSwg
dmVyWzFdKQotICAgIGRlbCB2ZXIsIGltcGwKLQotUFlDX0VYVCA9ICIucHkiICsgKF9fZGVidWdf
XyBhbmQgImMiIG9yICJvIikKLVBZQ19UQUlMID0gIi4iICsgUFlURVNUX1RBRyArIFBZQ19FWFQK
LQotQVNDSUlfSVNfREVGQVVMVF9FTkNPRElORyA9IHN5cy52ZXJzaW9uX2luZm9bMF0gPCAzCi0K
LWlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDUpOgotICAgIGFzdF9DYWxsID0gYXN0LkNhbGwK
LWVsc2U6Ci0gICAgZGVmIGFzdF9DYWxsKGEsIGIsIGMpOgotICAgICAgICByZXR1cm4gYXN0LkNh
bGwoYSwgYiwgYywgTm9uZSwgTm9uZSkKLQotCi1jbGFzcyBBc3NlcnRpb25SZXdyaXRpbmdIb29r
KG9iamVjdCk6Ci0gICAgIiIiUEVQMzAyIEltcG9ydCBob29rIHdoaWNoIHJld3JpdGVzIGFzc2Vy
dHMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgc2VsZi5j
b25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5mbnBhdHMgPSBjb25maWcuZ2V0aW5pKCJweXRo
b25fZmlsZXMiKQotICAgICAgICBzZWxmLnNlc3Npb24gPSBOb25lCi0gICAgICAgIHNlbGYubW9k
dWxlcyA9IHt9Ci0gICAgICAgIHNlbGYuX3Jld3JpdHRlbl9uYW1lcyA9IHNldCgpCi0gICAgICAg
IHNlbGYuX3JlZ2lzdGVyX3dpdGhfcGtnX3Jlc291cmNlcygpCi0gICAgICAgIHNlbGYuX211c3Rf
cmV3cml0ZSA9IHNldCgpCi0KLSAgICBkZWYgc2V0X3Nlc3Npb24oc2VsZiwgc2Vzc2lvbik6Ci0g
ICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24KLQotICAgIGRlZiBmaW5kX21vZHVsZShzZWxm
LCBuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICBzdGF0ZSA9IHNlbGYuY29uZmlnLl9hc3NlcnRz
dGF0ZQotICAgICAgICBzdGF0ZS50cmFjZSgiZmluZF9tb2R1bGUgY2FsbGVkIGZvcjogJXMiICUg
bmFtZSkKLSAgICAgICAgbmFtZXMgPSBuYW1lLnJzcGxpdCgiLiIsIDEpCi0gICAgICAgIGxhc3Ru
YW1lID0gbmFtZXNbLTFdCi0gICAgICAgIHB0aCA9IE5vbmUKLSAgICAgICAgaWYgcGF0aCBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCBQeXRob24gMy4zLCBwYXRoIGlz
IGEgX05hbWVzcGFjZVBhdGgoKSwgd2hpY2gKLSAgICAgICAgICAgICMgY2F1c2VzIHByb2JsZW1z
IGlmIG5vdCBjb252ZXJ0ZWQgdG8gbGlzdC4KLSAgICAgICAgICAgIHBhdGggPSBsaXN0KHBhdGgp
Ci0gICAgICAgICAgICBpZiBsZW4ocGF0aCkgPT0gMToKLSAgICAgICAgICAgICAgICBwdGggPSBw
YXRoWzBdCi0gICAgICAgIGlmIHB0aCBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIGZkLCBmbiwgZGVzYyA9IGltcC5maW5kX21vZHVsZShsYXN0bmFtZSwgcGF0aCkK
LSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZmQu
Y2xvc2UoKQotICAgICAgICAgICAgdHAgPSBkZXNjWzJdCi0gICAgICAgICAgICBpZiB0cCA9PSBp
bXAuUFlfQ09NUElMRUQ6Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihpbXAsICJzb3VyY2Vf
ZnJvbV9jYWNoZSIpOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmbiA9IGltcC5zb3VyY2VfZnJvbV9jYWNoZShmbikKLSAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiAz
IGRvZXNuJ3QgbGlrZSBvcnBoYW5lZCBidXQgc3RpbGwtaW1wb3J0YWJsZQotICAgICAgICAgICAg
ICAgICAgICAgICAgIyAucHljIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBm
bls6LTFdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZm4gPSBm
bls6LTFdCi0gICAgICAgICAgICBlbGlmIHRwICE9IGltcC5QWV9TT1VSQ0U6Ci0gICAgICAgICAg
ICAgICAgIyBEb24ndCBrbm93IHdoYXQgdGhpcyBpcy4KLSAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4ocHRoLCBu
YW1lLnJwYXJ0aXRpb24oIi4iKVsyXSArICIucHkiKQotCi0gICAgICAgIGZuX3B5cGF0aCA9IHB5
LnBhdGgubG9jYWwoZm4pCi0gICAgICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfcmV3cml0ZShuYW1l
LCBmbl9weXBhdGgsIHN0YXRlKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAg
c2VsZi5fcmV3cml0dGVuX25hbWVzLmFkZChuYW1lKQotCi0gICAgICAgICMgVGhlIHJlcXVlc3Rl
ZCBtb2R1bGUgbG9va3MgbGlrZSBhIHRlc3QgZmlsZSwgc28gcmV3cml0ZSBpdC4gVGhpcyBpcwot
ICAgICAgICAjIHRoZSBtb3N0IG1hZ2ljYWwgcGFydCBvZiB0aGUgcHJvY2VzczogbG9hZCB0aGUg
c291cmNlLCByZXdyaXRlIHRoZQotICAgICAgICAjIGFzc2VydHMsIGFuZCBsb2FkIHRoZSByZXdy
aXR0ZW4gc291cmNlLiBXZSBhbHNvIGNhY2hlIHRoZSByZXdyaXR0ZW4KLSAgICAgICAgIyBtb2R1
bGUgY29kZSBpbiBhIHNwZWNpYWwgcHljLiBXZSBtdXN0IGJlIGF3YXJlIG9mIHRoZSBwb3NzaWJp
bGl0eSBvZgotICAgICAgICAjIGNvbmN1cnJlbnQgcHl0ZXN0IHByb2Nlc3NlcyByZXdyaXRpbmcg
YW5kIGxvYWRpbmcgcHljcy4gVG8gYXZvaWQKLSAgICAgICAgIyB0cmlja3kgcmFjZSBjb25kaXRp
b25zLCB3ZSBtYWludGFpbiB0aGUgZm9sbG93aW5nIGludmFyaWFudDogVGhlCi0gICAgICAgICMg
Y2FjaGVkIHB5YyBpcyBhbHdheXMgYSBjb21wbGV0ZSwgdmFsaWQgcHljLiBPcGVyYXRpb25zIG9u
IGl0IG11c3QgYmUKLSAgICAgICAgIyBhdG9taWMuIFBPU0lYJ3MgYXRvbWljIHJlbmFtZSBjb21l
cyBpbiBoYW5keS4KLSAgICAgICAgd3JpdGUgPSBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUK
LSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5qb2luKGZuX3B5cGF0aC5kaXJuYW1lLCAiX19w
eWNhY2hlX18iKQotICAgICAgICBpZiB3cml0ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBvcy5ta2RpcihjYWNoZV9kaXIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoK
LSAgICAgICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0uZXJybm8KLSAgICAgICAgICAg
ICAgICBpZiBlID09IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgIyBFaXRoZXIg
dGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyAodGhlCi0gICAgICAgICAg
ICAgICAgICAgICMgY29tbW9uIGNhc2UpIG9yIGl0J3MgYmxvY2tlZCBieSBhIG5vbi1kaXIgbm9k
ZS4gSW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICMgbGF0dGVyIGNhc2UsIHdlJ2xsIGlnbm9y
ZSBpdCBpbiBfd3JpdGVfcHljLgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAg
ICAgICAgZWxpZiBlIGluIFtlcnJuby5FTk9FTlQsIGVycm5vLkVOT1RESVJdOgotICAgICAgICAg
ICAgICAgICAgICAjIE9uZSBvZiB0aGUgcGF0aCBjb21wb25lbnRzIHdhcyBub3QgYSBkaXJlY3Rv
cnksIGxpa2VseQotICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugd2UncmUgaW4gYSB6aXAg
ZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgd3JpdGUgPSBGYWxzZQotICAgICAgICAgICAgICAg
IGVsaWYgZSBpbiBbZXJybm8uRUFDQ0VTLCBlcnJuby5FUk9GUywgZXJybm8uRVBFUk1dOgotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZSgicmVhZCBvbmx5IGRpcmVjdG9yeTogJXIiICUg
Zm5fcHlwYXRoLmRpcm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlID0gRmFsc2UKLSAg
ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBj
YWNoZV9uYW1lID0gZm5fcHlwYXRoLmJhc2VuYW1lWzotM10gKyBQWUNfVEFJTAotICAgICAgICBw
eWMgPSBvcy5wYXRoLmpvaW4oY2FjaGVfZGlyLCBjYWNoZV9uYW1lKQotICAgICAgICAjIE5vdGlj
ZSB0aGF0IGV2ZW4gaWYgd2UncmUgaW4gYSByZWFkLW9ubHkgZGlyZWN0b3J5LCBJJ20gZ29pbmcK
LSAgICAgICAgIyB0byBjaGVjayBmb3IgYSBjYWNoZWQgcHljLiBUaGlzIG1heSBub3QgYmUgb3B0
aW1hbC4uLgotICAgICAgICBjbyA9IF9yZWFkX3B5Yyhmbl9weXBhdGgsIHB5Yywgc3RhdGUudHJh
Y2UpCi0gICAgICAgIGlmIGNvIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0ZS50cmFjZSgicmV3
cml0aW5nICVyIiAlIChmbiwpKQotICAgICAgICAgICAgc291cmNlX3N0YXQsIGNvID0gX3Jld3Jp
dGVfdGVzdChzZWxmLmNvbmZpZywgZm5fcHlwYXRoKQotICAgICAgICAgICAgaWYgY28gaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGEgU3ludGF4RXJyb3IgaW4gdGhlIHRlc3Qu
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGlmIHdyaXRlOgotICAg
ICAgICAgICAgICAgIF9tYWtlX3Jld3JpdHRlbl9weWMoc3RhdGUsIHNvdXJjZV9zdGF0LCBweWMs
IGNvKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RhdGUudHJhY2UoImZvdW5kIGNhY2hl
ZCByZXdyaXR0ZW4gcHljIGZvciAlciIgJSAoZm4sKSkKLSAgICAgICAgc2VsZi5tb2R1bGVzW25h
bWVdID0gY28sIHB5YwotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9zaG91bGRfcmV3
cml0ZShzZWxmLCBuYW1lLCBmbl9weXBhdGgsIHN0YXRlKToKLSAgICAgICAgIyBhbHdheXMgcmV3
cml0ZSBjb25mdGVzdCBmaWxlcwotICAgICAgICBmbiA9IHN0cihmbl9weXBhdGgpCi0gICAgICAg
IGlmIGZuX3B5cGF0aC5iYXNlbmFtZSA9PSAnY29uZnRlc3QucHknOgotICAgICAgICAgICAgc3Rh
dGUudHJhY2UoInJld3JpdGluZyBjb25mdGVzdCBmaWxlOiAlciIgJSAoZm4sKSkKLSAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgaWYgc2VsZi5zZXNzaW9uIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgaWYgc2VsZi5zZXNzaW9uLmlzaW5pdHBhdGgoZm4pOgotICAgICAgICAgICAg
ICAgIHN0YXRlLnRyYWNlKCJtYXRjaGVkIHRlc3QgZmlsZSAod2FzIHNwZWNpZmllZCBvbiBjbWRs
aW5lKTogJXIiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm4sKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICMgbW9kdWxlcyBub3QgcGFzc2VkIGV4cGxp
Y2l0bHkgb24gdGhlIGNvbW1hbmQgbGluZSBhcmUgb25seQotICAgICAgICAjIHJld3JpdHRlbiBp
ZiB0aGV5IG1hdGNoIHRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IgdGVzdCBmaWxlcwotICAgICAg
ICBmb3IgcGF0IGluIHNlbGYuZm5wYXRzOgotICAgICAgICAgICAgaWYgZm5fcHlwYXRoLmZubWF0
Y2gocGF0KToKLSAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZSgibWF0Y2hlZCB0ZXN0IGZpbGUg
JXIiICUgKGZuLCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBmb3Ig
bWFya2VkIGluIHNlbGYuX211c3RfcmV3cml0ZToKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gbWFy
a2VkIG9yIG5hbWUuc3RhcnRzd2l0aChtYXJrZWQgKyAnLicpOgotICAgICAgICAgICAgICAgIHN0
YXRlLnRyYWNlKCJtYXRjaGVkIG1hcmtlZCBmaWxlICVyIChmcm9tICVyKSIgJSAobmFtZSwgbWFy
a2VkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIHJldHVybiBGYWxz
ZQotCi0gICAgZGVmIG1hcmtfcmV3cml0ZShzZWxmLCAqbmFtZXMpOgotICAgICAgICAiIiJNYXJr
IGltcG9ydCBuYW1lcyBhcyBuZWVkaW5nIHRvIGJlIHJld3JpdHRlbi4KLQotICAgICAgICBUaGUg
bmFtZWQgbW9kdWxlIG9yIHBhY2thZ2UgYXMgd2VsbCBhcyBhbnkgbmVzdGVkIG1vZHVsZXMgd2ls
bAotICAgICAgICBiZSByZXdyaXR0ZW4gb24gaW1wb3J0LgotICAgICAgICAiIiIKLSAgICAgICAg
YWxyZWFkeV9pbXBvcnRlZCA9IHNldChuYW1lcykuaW50ZXJzZWN0aW9uKHNldChzeXMubW9kdWxl
cykpCi0gICAgICAgIGlmIGFscmVhZHlfaW1wb3J0ZWQ6Ci0gICAgICAgICAgICBmb3IgbmFtZSBp
biBhbHJlYWR5X2ltcG9ydGVkOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYu
X3Jld3JpdHRlbl9uYW1lczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2Fybl9hbHJlYWR5
X2ltcG9ydGVkKG5hbWUpCi0gICAgICAgIHNlbGYuX211c3RfcmV3cml0ZS51cGRhdGUobmFtZXMp
Ci0KLSAgICBkZWYgX3dhcm5fYWxyZWFkeV9pbXBvcnRlZChzZWxmLCBuYW1lKToKLSAgICAgICAg
c2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICdQMScsCi0gICAgICAgICAgICAnTW9kdWxl
IGFscmVhZHkgaW1wb3J0ZWQgc28gY2Fubm90IGJlIHJld3JpdHRlbjogJXMnICUgbmFtZSkKLQot
ICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgIyBJZiB0aGVyZSBpcyBh
biBleGlzdGluZyBtb2R1bGUgb2JqZWN0IG5hbWVkICdmdWxsbmFtZScgaW4KLSAgICAgICAgIyBz
eXMubW9kdWxlcywgdGhlIGxvYWRlciBtdXN0IHVzZSB0aGF0IGV4aXN0aW5nIG1vZHVsZS4gKE90
aGVyd2lzZSwKLSAgICAgICAgIyB0aGUgcmVsb2FkKCkgYnVpbHRpbiB3aWxsIG5vdCB3b3JrIGNv
cnJlY3RseS4pCi0gICAgICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0KLQotICAgICAgICBjbywgcHljID0gc2VsZi5tb2R1bGVz
LnBvcChuYW1lKQotICAgICAgICAjIEkgd2lzaCBJIGNvdWxkIGp1c3QgY2FsbCBpbXAubG9hZF9j
b21waWxlZCBoZXJlLCBidXQgX19maWxlX18gaGFzIHRvCi0gICAgICAgICMgYmUgc2V0IHByb3Bl
cmx5LiBJbiBQeXRob24gMy4yKywgdGhpcyBhbGwgd291bGQgYmUgaGFuZGxlZCBjb3JyZWN0bHkK
LSAgICAgICAgIyBieSBsb2FkX2NvbXBpbGVkLgotICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1tu
YW1lXSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1v
ZC5fX2ZpbGVfXyA9IGNvLmNvX2ZpbGVuYW1lCi0gICAgICAgICAgICAjIE5vcm1hbGx5LCB0aGlz
IGF0dHJpYnV0ZSBpcyAzLjIrLgotICAgICAgICAgICAgbW9kLl9fY2FjaGVkX18gPSBweWMKLSAg
ICAgICAgICAgIG1vZC5fX2xvYWRlcl9fID0gc2VsZgotICAgICAgICAgICAgcHkuYnVpbHRpbi5l
eGVjXyhjbywgbW9kLl9fZGljdF9fKQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAg
ICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1
bGVzW25hbWVdCi0gICAgICAgICAgICByYWlzZQotICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNb
bmFtZV0KLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBmZCwgZm4sIGRlc2MgPSBpbXAuZmluZF9tb2R1bGUobmFtZSkKLSAgICAgICAg
ZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlm
IGZkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmQuY2xvc2UoKQotICAgICAgICB0cCA9IGRl
c2NbMl0KLSAgICAgICAgcmV0dXJuIHRwID09IGltcC5QS0dfRElSRUNUT1JZCi0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgX3JlZ2lzdGVyX3dpdGhfcGtnX3Jlc291cmNlcyhjbHMpOgotICAg
ICAgICAiIiIKLSAgICAgICAgRW5zdXJlIHBhY2thZ2UgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQg
ZnJvbSB0aGlzIGxvYWRlci4gTWF5IGJlIGNhbGxlZAotICAgICAgICBtdWx0aXBsZSB0aW1lcywg
YXMgdGhlIG9wZXJhdGlvbiBpcyBpZGVtcG90ZW50LgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgaW1wb3J0IHBrZ19yZXNvdXJjZXMKLSAgICAgICAgICAgICMgYWNjZXNz
IGFuIGF0dHJpYnV0ZSBpbiBjYXNlIGEgZGVmZXJyZWQgaW1wb3J0ZXIgaXMgcHJlc2VudAotICAg
ICAgICAgICAgcGtnX3Jlc291cmNlcy5fX25hbWVfXwotICAgICAgICBleGNlcHQgSW1wb3J0RXJy
b3I6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIFNpbmNlIHB5dGVzdCB0ZXN0cyBh
cmUgYWx3YXlzIGxvY2F0ZWQgaW4gdGhlIGZpbGUgc3lzdGVtLCB0aGUKLSAgICAgICAgIyAgRGVm
YXVsdFByb3ZpZGVyIGlzIGFwcHJvcHJpYXRlLgotICAgICAgICBwa2dfcmVzb3VyY2VzLnJlZ2lz
dGVyX2xvYWRlcl90eXBlKGNscywgcGtnX3Jlc291cmNlcy5EZWZhdWx0UHJvdmlkZXIpCi0KLSAg
ICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aG5hbWUpOgotICAgICAgICAiIiJPcHRpb25hbCBQRVAz
MDIgZ2V0X2RhdGEgQVBJLgotICAgICAgICAiIiIKLSAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1l
LCAncmInKSBhcyBmOgotICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCi0KLQotZGVmIF93cml0
ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3RhdCwgcHljKToKLSAgICAjIFRlY2huaWNhbGx5LCB3
ZSBkb24ndCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUgcHljIGZvcm1hdCBhcwotICAgICMgKEMpUHl0
aG9uLCBzaW5jZSB0aGVzZSAicHljcyIgc2hvdWxkIG5ldmVyIGJlIHNlZW4gYnkgYnVpbHRpbgot
ICAgICMgaW1wb3J0LiBIb3dldmVyLCB0aGVyZSdzIGxpdHRsZSByZWFzb24gZGV2aWF0ZSwgYW5k
IEkgaG9wZQotICAgICMgc29tZXRpbWUgdG8gYmUgYWJsZSB0byB1c2UgaW1wLmxvYWRfY29tcGls
ZWQgdG8gbG9hZCB0aGVtLiAoU2VlCi0gICAgIyB0aGUgY29tbWVudCBpbiBsb2FkX21vZHVsZSBh
Ym92ZS4pCi0gICAgdHJ5OgotICAgICAgICBmcCA9IG9wZW4ocHljLCAid2IiKQotICAgIGV4Y2Vw
dCBJT0Vycm9yOgotICAgICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKVsxXS5lcnJubwotICAgICAg
ICBzdGF0ZS50cmFjZSgiZXJyb3Igd3JpdGluZyBweWMgZmlsZSBhdCAlczogZXJybm89JXMiICUg
KHB5YywgZXJyKSkKLSAgICAgICAgIyB3ZSBpZ25vcmUgYW55IGZhaWx1cmUgdG8gd3JpdGUgdGhl
IGNhY2hlIGZpbGUKLSAgICAgICAgIyB0aGVyZSBhcmUgbWFueSByZWFzb25zLCBwZXJtaXNzaW9u
LWRlbmllZCwgX19weWNhY2hlX18gYmVpbmcgYQotICAgICAgICAjIGZpbGUgZXRjLgotICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICB0cnk6Ci0gICAgICAgIGZwLndyaXRlKGltcC5nZXRfbWFnaWMo
KSkKLSAgICAgICAgbXRpbWUgPSBpbnQoc291cmNlX3N0YXQubXRpbWUpCi0gICAgICAgIHNpemUg
PSBzb3VyY2Vfc3RhdC5zaXplICYgMHhGRkZGRkZGRgotICAgICAgICBmcC53cml0ZShzdHJ1Y3Qu
cGFjaygiPGxsIiwgbXRpbWUsIHNpemUpKQotICAgICAgICBtYXJzaGFsLmR1bXAoY28sIGZwKQot
ICAgIGZpbmFsbHk6Ci0gICAgICAgIGZwLmNsb3NlKCkKLSAgICByZXR1cm4gVHJ1ZQotCi0KLVJO
ID0gIlxyXG4iLmVuY29kZSgidXRmLTgiKQotTiA9ICJcbiIuZW5jb2RlKCJ1dGYtOCIpCi0KLWNv
b2tpZV9yZSA9IHJlLmNvbXBpbGUociJeWyBcdFxmXSojLipjb2RpbmdbOj1dWyBcdF0qWy1cdy5d
KyIpCi1CT01fVVRGOCA9ICdceGVmXHhiYlx4YmYnCi0KLQotZGVmIF9yZXdyaXRlX3Rlc3QoY29u
ZmlnLCBmbik6Ci0gICAgIiIiVHJ5IHRvIHJlYWQgYW5kIHJld3JpdGUgKmZuKiBhbmQgcmV0dXJu
IHRoZSBjb2RlIG9iamVjdC4iIiIKLSAgICBzdGF0ZSA9IGNvbmZpZy5fYXNzZXJ0c3RhdGUKLSAg
ICB0cnk6Ci0gICAgICAgIHN0YXQgPSBmbi5zdGF0KCkKLSAgICAgICAgc291cmNlID0gZm4ucmVh
ZCgicmIiKQotICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgotICAgICAgICByZXR1cm4gTm9u
ZSwgTm9uZQotICAgIGlmIEFTQ0lJX0lTX0RFRkFVTFRfRU5DT0RJTkc6Ci0gICAgICAgICMgQVND
SUkgaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcgaW4gUHl0aG9uIDIuIFdpdGhvdXQgYSBjb2RpbmcK
LSAgICAgICAgIyBkZWNsYXJhdGlvbiwgUHl0aG9uIDIgd2lsbCBjb21wbGFpbiBhYm91dCBhbnkg
Ynl0ZXMgaW4gdGhlIGZpbGUKLSAgICAgICAgIyBvdXRzaWRlIHRoZSBBU0NJSSByYW5nZS4gU2Fk
bHksIHRoaXMgYmVoYXZpb3IgZG9lcyBub3QgZXh0ZW5kIHRvCi0gICAgICAgICMgY29tcGlsZSgp
IG9yIGFzdC5wYXJzZSgpLCB3aGljaCBwcmVmZXIgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcwot
ICAgICAgICAjIGxhdGluLTEuIChBdCBsZWFzdCB0aGV5IHByb3Blcmx5IGhhbmRsZSBleHBsaWNp
dCBjb2RpbmcgY29va2llcy4pIFRvCi0gICAgICAgICMgcHJlc2VydmUgdGhpcyBlcnJvciBiZWhh
dmlvciwgd2UgY291bGQgZm9yY2UgYXN0LnBhcnNlKCkgdG8gdXNlIEFTQ0lJCi0gICAgICAgICMg
YXMgdGhlIGVuY29kaW5nIGJ5IGluc2VydGluZyBhIGNvZGluZyBjb29raWUuIFVuZm9ydHVuYXRl
bHksIHRoYXQKLSAgICAgICAgIyBtZXNzZXMgdXAgbGluZSBudW1iZXJzLiBUaHVzLCB3ZSBoYXZl
IHRvIGNoZWNrIG91cnNlbHZlcyBpZiBhbnl0aGluZwotICAgICAgICAjIGlzIG91dHNpZGUgdGhl
IEFTQ0lJIHJhbmdlIGluIHRoZSBjYXNlIG5vIGVuY29kaW5nIGlzIGV4cGxpY2l0bHkKLSAgICAg
ICAgIyBkZWNsYXJlZC4gRm9yIG1vcmUgY29udGV4dCwgc2VlIGlzc3VlICMyNjkuIFlheSBmb3Ig
UHl0aG9uIDMgd2hpY2gKLSAgICAgICAgIyBnZXRzIHRoaXMgcmlnaHQuCi0gICAgICAgIGVuZDEg
PSBzb3VyY2UuZmluZCgiXG4iKQotICAgICAgICBlbmQyID0gc291cmNlLmZpbmQoIlxuIiwgZW5k
MSArIDEpCi0gICAgICAgIGlmIChub3Qgc291cmNlLnN0YXJ0c3dpdGgoQk9NX1VURjgpIGFuZAot
ICAgICAgICAgICAgY29va2llX3JlLm1hdGNoKHNvdXJjZVswOmVuZDFdKSBpcyBOb25lIGFuZAot
ICAgICAgICAgICAgICAgIGNvb2tpZV9yZS5tYXRjaChzb3VyY2VbZW5kMSArIDE6ZW5kMl0pIGlz
IE5vbmUpOgotICAgICAgICAgICAgaWYgaGFzYXR0cihzdGF0ZSwgIl9pbmRlY29kZSIpOgotICAg
ICAgICAgICAgICAgICMgZW5jb2RpbmdzIGltcG9ydGVkIHVzIGFnYWluLCBzbyBkb24ndCByZXdy
aXRlLgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCi0gICAgICAgICAgICBzdGF0
ZS5faW5kZWNvZGUgPSBUcnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZGVjb2RlKCJhc2NpaSIpCi0gICAgICAgICAg
ICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBM
ZXQgaXQgZmFpbCBpbiByZWFsIGltcG9ydC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5v
bmUsIE5vbmUKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIHN0YXRl
Ll9pbmRlY29kZQotICAgIHRyeToKLSAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShzb3VyY2UpCi0g
ICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICAjIExldCB0aGlzIHBvcCB1cCBhZ2FpbiBp
biB0aGUgcmVhbCBpbXBvcnQuCi0gICAgICAgIHN0YXRlLnRyYWNlKCJmYWlsZWQgdG8gcGFyc2U6
ICVyIiAlIChmbiwpKQotICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgIHJld3JpdGVfYXNz
ZXJ0cyh0cmVlLCBmbiwgY29uZmlnKQotICAgIHRyeToKLSAgICAgICAgY28gPSBjb21waWxlKHRy
ZWUsIGZuLnN0cnBhdGgsICJleGVjIiwgZG9udF9pbmhlcml0PVRydWUpCi0gICAgZXhjZXB0IFN5
bnRheEVycm9yOgotICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0aGlzIGVycm9yIGlzIGZy
b20gc29tZSBidWcgaW4gdGhlCi0gICAgICAgICMgYXNzZXJ0aW9uIHJld3JpdGluZywgYnV0IEkg
ZG9uJ3Qga25vdyBvZiBhIGZhc3Qgd2F5IHRvIHRlbGwuCi0gICAgICAgIHN0YXRlLnRyYWNlKCJm
YWlsZWQgdG8gY29tcGlsZTogJXIiICUgKGZuLCkpCi0gICAgICAgIHJldHVybiBOb25lLCBOb25l
Ci0gICAgcmV0dXJuIHN0YXQsIGNvCi0KLQotZGVmIF9tYWtlX3Jld3JpdHRlbl9weWMoc3RhdGUs
IHNvdXJjZV9zdGF0LCBweWMsIGNvKToKLSAgICAiIiJUcnkgdG8gZHVtcCByZXdyaXR0ZW4gY29k
ZSB0byAqcHljKi4iIiIKLSAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luIik6Ci0g
ICAgICAgICMgV2luZG93cyBncmFudHMgZXhjbHVzaXZlIGFjY2VzcyB0byBvcGVuIGZpbGVzIGFu
ZCBkb2Vzbid0IGhhdmUgYXRvbWljCi0gICAgICAgICMgcmVuYW1lLCBzbyBqdXN0IHdyaXRlIGlu
dG8gdGhlIGZpbmFsIGZpbGUuCi0gICAgICAgIF93cml0ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vf
c3RhdCwgcHljKQotICAgIGVsc2U6Ci0gICAgICAgICMgV2hlbiBub3Qgb24gd2luZG93cywgYXNz
dW1lIHJlbmFtZSBpcyBhdG9taWMuIER1bXAgdGhlIGNvZGUgb2JqZWN0Ci0gICAgICAgICMgaW50
byBhIGZpbGUgc3BlY2lmaWMgdG8gdGhpcyBwcm9jZXNzIGFuZCBhdG9taWNhbGx5IHJlcGxhY2Ug
aXQuCi0gICAgICAgIHByb2NfcHljID0gcHljICsgIi4iICsgc3RyKG9zLmdldHBpZCgpKQotICAg
ICAgICBpZiBfd3JpdGVfcHljKHN0YXRlLCBjbywgc291cmNlX3N0YXQsIHByb2NfcHljKToKLSAg
ICAgICAgICAgIG9zLnJlbmFtZShwcm9jX3B5YywgcHljKQotCi0KLWRlZiBfcmVhZF9weWMoc291
cmNlLCBweWMsIHRyYWNlPWxhbWJkYSB4OiBOb25lKToKLSAgICAiIiJQb3NzaWJseSByZWFkIGEg
cHl0ZXN0IHB5YyBjb250YWluaW5nIHJld3JpdHRlbiBjb2RlLgotCi0gICAgUmV0dXJuIHJld3Jp
dHRlbiBjb2RlIGlmIHN1Y2Nlc3NmdWwgb3IgTm9uZSBpZiBub3QuCi0gICAgIiIiCi0gICAgdHJ5
OgotICAgICAgICBmcCA9IG9wZW4ocHljLCAicmIiKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAg
ICAgICByZXR1cm4gTm9uZQotICAgIHdpdGggZnA6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IG10aW1lID0gaW50KHNvdXJjZS5tdGltZSgpKQotICAgICAgICAgICAgc2l6ZSA9IHNvdXJjZS5z
aXplKCkKLSAgICAgICAgICAgIGRhdGEgPSBmcC5yZWFkKDEyKQotICAgICAgICBleGNlcHQgRW52
aXJvbm1lbnRFcnJvciBhcyBlOgotICAgICAgICAgICAgdHJhY2UoJ19yZWFkX3B5Yyglcyk6IEVu
dmlyb25tZW50RXJyb3IgJXMnICUgKHNvdXJjZSwgZSkpCi0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotICAgICAgICAjIENoZWNrIGZvciBpbnZhbGlkIG9yIG91dCBvZiBkYXRlIHB5YyBmaWxlLgot
ICAgICAgICBpZiAobGVuKGRhdGEpICE9IDEyIG9yIGRhdGFbOjRdICE9IGltcC5nZXRfbWFnaWMo
KSBvcgotICAgICAgICAgICAgICAgIHN0cnVjdC51bnBhY2soIjxsbCIsIGRhdGFbNDpdKSAhPSAo
bXRpbWUsIHNpemUpKToKLSAgICAgICAgICAgIHRyYWNlKCdfcmVhZF9weWMoJXMpOiBpbnZhbGlk
IG9yIG91dCBvZiBkYXRlIHB5YycgJSBzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjbyA9IG1hcnNoYWwubG9hZChmcCkKLSAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgdHJhY2UoJ19yZWFkX3B5Yyglcyk6
IG1hcnNoYWwubG9hZCBlcnJvciAlcycgJSAoc291cmNlLCBlKSkKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvLCB0eXBlcy5Db2RlVHlwZSk6Ci0g
ICAgICAgICAgICB0cmFjZSgnX3JlYWRfcHljKCVzKTogbm90IGEgY29kZSBvYmplY3QnICUgc291
cmNlKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGNvCi0KLQotZGVm
IHJld3JpdGVfYXNzZXJ0cyhtb2QsIG1vZHVsZV9wYXRoPU5vbmUsIGNvbmZpZz1Ob25lKToKLSAg
ICAiIiJSZXdyaXRlIHRoZSBhc3NlcnQgc3RhdGVtZW50cyBpbiBtb2QuIiIiCi0gICAgQXNzZXJ0
aW9uUmV3cml0ZXIobW9kdWxlX3BhdGgsIGNvbmZpZykucnVuKG1vZCkKLQotCi1kZWYgX3NhZmVy
ZXByKG9iaik6Ci0gICAgIiIiR2V0IGEgc2FmZSByZXByIG9mIGFuIG9iamVjdCBmb3IgYXNzZXJ0
aW9uIGVycm9yIG1lc3NhZ2VzLgotCi0gICAgVGhlIGFzc2VydGlvbiBmb3JtYXR0aW5nICh1dGls
LmZvcm1hdF9leHBsYW5hdGlvbigpKSByZXF1aXJlcwotICAgIG5ld2xpbmVzIHRvIGJlIGVzY2Fw
ZWQgc2luY2UgdGhleSBhcmUgYSBzcGVjaWFsIGNoYXJhY3RlciBmb3IgaXQuCi0gICAgTm9ybWFs
bHkgYXNzZXJ0aW9uLnV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgZG9lcyB0aGlzIGJ1dCBmb3Ig
YQotICAgIGN1c3RvbSByZXByIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRhaW4gb25lIG9mIHRoZSBz
cGVjaWFsIGVzY2FwZQotICAgIHNlcXVlbmNlcywgZXNwZWNpYWxseSAnXG57JyBhbmQgJ1xufScg
YXJlIGxpa2VseSB0byBiZSBwcmVzZW50IGluCi0gICAgSlNPTiByZXBycy4KLQotICAgICIiIgot
ICAgIHJlcHIgPSBweS5pby5zYWZlcmVwcihvYmopCi0gICAgaWYgaXNpbnN0YW5jZShyZXByLCBz
aXgudGV4dF90eXBlKToKLSAgICAgICAgdCA9IHNpeC50ZXh0X3R5cGUKLSAgICBlbHNlOgotICAg
ICAgICB0ID0gc2l4LmJpbmFyeV90eXBlCi0gICAgcmV0dXJuIHJlcHIucmVwbGFjZSh0KCJcbiIp
LCB0KCJcXG4iKSkKLQotCi1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnV0aWwgaW1wb3J0IGZvcm1h
dF9leHBsYW5hdGlvbiBhcyBfZm9ybWF0X2V4cGxhbmF0aW9uICAjIG5vcWEKLQotCi1kZWYgX2Zv
cm1hdF9hc3NlcnRtc2cob2JqKToKLSAgICAiIiJGb3JtYXQgdGhlIGN1c3RvbSBhc3NlcnRpb24g
bWVzc2FnZSBnaXZlbi4KLQotICAgIEZvciBzdHJpbmdzIHRoaXMgc2ltcGx5IHJlcGxhY2VzIG5l
d2xpbmVzIHdpdGggJ1xuficgc28gdGhhdAotICAgIHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkg
d2lsbCBwcmVzZXJ2ZSB0aGVtIGluc3RlYWQgb2YgZXNjYXBpbmcKLSAgICBuZXdsaW5lcy4gIEZv
ciBvdGhlciBvYmplY3RzIHB5LmlvLnNhZmVyZXByKCkgaXMgdXNlZCBmaXJzdC4KLQotICAgICIi
IgotICAgICMgcmVwcmxpYiBhcHBlYXJzIHRvIGhhdmUgYSBidWcgd2hpY2ggbWVhbnMgdGhhdCBp
ZiBhIHN0cmluZwotICAgICMgY29udGFpbnMgYSBuZXdsaW5lIGl0IGdldHMgZXNjYXBlZCwgaG93
ZXZlciBpZiBhbiBvYmplY3QgaGFzIGEKLSAgICAjIC5fX3JlcHJfXygpIHdoaWNoIGNvbnRhaW5z
IG5ld2xpbmVzIGl0IGRvZXMgbm90IGdldCBlc2NhcGVkLgotICAgICMgSG93ZXZlciBpbiBlaXRo
ZXIgY2FzZSB3ZSB3YW50IHRvIHByZXNlcnZlIHRoZSBuZXdsaW5lLgotICAgIGlmIGlzaW5zdGFu
Y2Uob2JqLCBzaXgudGV4dF90eXBlKSBvciBpc2luc3RhbmNlKG9iaiwgc2l4LmJpbmFyeV90eXBl
KToKLSAgICAgICAgcyA9IG9iagotICAgICAgICBpc19yZXByID0gRmFsc2UKLSAgICBlbHNlOgot
ICAgICAgICBzID0gcHkuaW8uc2FmZXJlcHIob2JqKQotICAgICAgICBpc19yZXByID0gVHJ1ZQot
ICAgIGlmIGlzaW5zdGFuY2Uocywgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgIHQgPSBzaXgudGV4
dF90eXBlCi0gICAgZWxzZToKLSAgICAgICAgdCA9IHNpeC5iaW5hcnlfdHlwZQotICAgIHMgPSBz
LnJlcGxhY2UodCgiXG4iKSwgdCgiXG5+IikpLnJlcGxhY2UodCgiJSIpLCB0KCIlJSIpKQotICAg
IGlmIGlzX3JlcHI6Ci0gICAgICAgIHMgPSBzLnJlcGxhY2UodCgiXFxuIiksIHQoIlxufiIpKQot
ICAgIHJldHVybiBzCi0KLQotZGVmIF9zaG91bGRfcmVwcl9nbG9iYWxfbmFtZShvYmopOgotICAg
IHJldHVybiBub3QgaGFzYXR0cihvYmosICJfX25hbWVfXyIpIGFuZCBub3QgY2FsbGFibGUob2Jq
KQotCi0KLWRlZiBfZm9ybWF0X2Jvb2xvcChleHBsYW5hdGlvbnMsIGlzX29yKToKLSAgICBleHBs
YW5hdGlvbiA9ICIoIiArIChpc19vciBhbmQgIiBvciAiIG9yICIgYW5kICIpLmpvaW4oZXhwbGFu
YXRpb25zKSArICIpIgotICAgIGlmIGlzaW5zdGFuY2UoZXhwbGFuYXRpb24sIHNpeC50ZXh0X3R5
cGUpOgotICAgICAgICB0ID0gc2l4LnRleHRfdHlwZQotICAgIGVsc2U6Ci0gICAgICAgIHQgPSBz
aXguYmluYXJ5X3R5cGUKLSAgICByZXR1cm4gZXhwbGFuYXRpb24ucmVwbGFjZSh0KCclJyksIHQo
JyUlJykpCi0KLQotZGVmIF9jYWxsX3JlcHJjb21wYXJlKG9wcywgcmVzdWx0cywgZXhwbHMsIGVh
Y2hfb2JqKToKLSAgICBmb3IgaSwgcmVzLCBleHBsIGluIHppcChyYW5nZShsZW4ob3BzKSksIHJl
c3VsdHMsIGV4cGxzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZG9uZSA9IG5vdCByZXMK
LSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGRvbmUgPSBUcnVlCi0gICAg
ICAgIGlmIGRvbmU6Ci0gICAgICAgICAgICBicmVhawotICAgIGlmIHV0aWwuX3JlcHJjb21wYXJl
IGlzIG5vdCBOb25lOgotICAgICAgICBjdXN0b20gPSB1dGlsLl9yZXByY29tcGFyZShvcHNbaV0s
IGVhY2hfb2JqW2ldLCBlYWNoX29ialtpICsgMV0pCi0gICAgICAgIGlmIGN1c3RvbSBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgIHJldHVybiBjdXN0b20KLSAgICByZXR1cm4gZXhwbAotCi0KLXVu
YXJ5X21hcCA9IHsKLSAgICBhc3QuTm90OiAibm90ICVzIiwKLSAgICBhc3QuSW52ZXJ0OiAifiVz
IiwKLSAgICBhc3QuVVN1YjogIi0lcyIsCi0gICAgYXN0LlVBZGQ6ICIrJXMiCi19Ci0KLWJpbm9w
X21hcCA9IHsKLSAgICBhc3QuQml0T3I6ICJ8IiwKLSAgICBhc3QuQml0WG9yOiAiXiIsCi0gICAg
YXN0LkJpdEFuZDogIiYiLAotICAgIGFzdC5MU2hpZnQ6ICI8PCIsCi0gICAgYXN0LlJTaGlmdDog
Ij4+IiwKLSAgICBhc3QuQWRkOiAiKyIsCi0gICAgYXN0LlN1YjogIi0iLAotICAgIGFzdC5NdWx0
OiAiKiIsCi0gICAgYXN0LkRpdjogIi8iLAotICAgIGFzdC5GbG9vckRpdjogIi8vIiwKLSAgICBh
c3QuTW9kOiAiJSUiLCAgIyBlc2NhcGVkIGZvciBzdHJpbmcgZm9ybWF0dGluZwotICAgIGFzdC5F
cTogIj09IiwKLSAgICBhc3QuTm90RXE6ICIhPSIsCi0gICAgYXN0Lkx0OiAiPCIsCi0gICAgYXN0
Lkx0RTogIjw9IiwKLSAgICBhc3QuR3Q6ICI+IiwKLSAgICBhc3QuR3RFOiAiPj0iLAotICAgIGFz
dC5Qb3c6ICIqKiIsCi0gICAgYXN0LklzOiAiaXMiLAotICAgIGFzdC5Jc05vdDogImlzIG5vdCIs
Ci0gICAgYXN0LkluOiAiaW4iLAotICAgIGFzdC5Ob3RJbjogIm5vdCBpbiIKLX0KLSMgUHl0aG9u
IDMuNSsgY29tcGF0aWJpbGl0eQotdHJ5OgotICAgIGJpbm9wX21hcFthc3QuTWF0TXVsdF0gPSAi
QCIKLWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICBwYXNzCi0KLSMgUHl0aG9uIDMuNCsgY29t
cGF0aWJpbGl0eQotaWYgaGFzYXR0cihhc3QsICJOYW1lQ29uc3RhbnQiKToKLSAgICBfTmFtZUNv
bnN0YW50ID0gYXN0Lk5hbWVDb25zdGFudAotZWxzZToKLSAgICBkZWYgX05hbWVDb25zdGFudChj
KToKLSAgICAgICAgcmV0dXJuIGFzdC5OYW1lKHN0cihjKSwgYXN0LkxvYWQoKSkKLQotCi1kZWYg
c2V0X2xvY2F0aW9uKG5vZGUsIGxpbmVubywgY29sX29mZnNldCk6Ci0gICAgIiIiU2V0IG5vZGUg
bG9jYXRpb24gaW5mb3JtYXRpb24gcmVjdXJzaXZlbHkuIiIiCi0gICAgZGVmIF9maXgobm9kZSwg
bGluZW5vLCBjb2xfb2Zmc2V0KToKLSAgICAgICAgaWYgImxpbmVubyIgaW4gbm9kZS5fYXR0cmli
dXRlczoKLSAgICAgICAgICAgIG5vZGUubGluZW5vID0gbGluZW5vCi0gICAgICAgIGlmICJjb2xf
b2Zmc2V0IiBpbiBub2RlLl9hdHRyaWJ1dGVzOgotICAgICAgICAgICAgbm9kZS5jb2xfb2Zmc2V0
ID0gY29sX29mZnNldAotICAgICAgICBmb3IgY2hpbGQgaW4gYXN0Lml0ZXJfY2hpbGRfbm9kZXMo
bm9kZSk6Ci0gICAgICAgICAgICBfZml4KGNoaWxkLCBsaW5lbm8sIGNvbF9vZmZzZXQpCi0gICAg
X2ZpeChub2RlLCBsaW5lbm8sIGNvbF9vZmZzZXQpCi0gICAgcmV0dXJuIG5vZGUKLQotCi1jbGFz
cyBBc3NlcnRpb25SZXdyaXRlcihhc3QuTm9kZVZpc2l0b3IpOgotICAgICIiIkFzc2VydGlvbiBy
ZXdyaXRpbmcgaW1wbGVtZW50YXRpb24uCi0KLSAgICBUaGUgbWFpbiBlbnRyeXBvaW50IGlzIHRv
IGNhbGwgLnJ1bigpIHdpdGggYW4gYXN0Lk1vZHVsZSBpbnN0YW5jZSwKLSAgICB0aGlzIHdpbGwg
dGhlbiBmaW5kIGFsbCB0aGUgYXNzZXJ0IHN0YXRlbWVudHMgYW5kIHJld3JpdGUgdGhlbSB0bwot
ICAgIHByb3ZpZGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBhbmQgYSBkZXRhaWxlZCBhc3NlcnRpb24g
ZXJyb3IuICBTZWUKLSAgICBodHRwOi8vcHliaXRlcy5ibG9nc3BvdC5iZS8yMDExLzA3L2JlaGlu
ZC1zY2VuZXMtb2YtcHl0ZXN0cy1uZXctYXNzZXJ0aW9uLmh0bWwKLSAgICBmb3IgYW4gb3ZlcnZp
ZXcgb2YgaG93IHRoaXMgd29ya3MuCi0KLSAgICBUaGUgZW50cnkgcG9pbnQgaGVyZSBpcyAucnVu
KCkgd2hpY2ggd2lsbCBpdGVyYXRlIG92ZXIgYWxsIHRoZQotICAgIHN0YXRlbWVudHMgaW4gYW4g
YXN0Lk1vZHVsZSBhbmQgZm9yIGVhY2ggYXN0LkFzc2VydCBzdGF0ZW1lbnQgaXQKLSAgICBmaW5k
cyBjYWxsIC52aXNpdCgpIHdpdGggaXQuICBUaGVuIC52aXNpdF9Bc3NlcnQoKSB0YWtlcyBvdmVy
IGFuZAotICAgIGlzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBuZXcgYXN0IHN0YXRlbWVudHMg
dG8gcmVwbGFjZSB0aGUKLSAgICBvcmlnaW5hbCBhc3NlcnQgc3RhdGVtZW50OiBpdCByZXdyaXRl
cyB0aGUgdGVzdCBvZiBhbiBhc3NlcnRpb24KLSAgICB0byBwcm92aWRlIGludGVybWVkaWF0ZSB2
YWx1ZXMgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiBpZiBzdGF0ZW1lbnQKLSAgICB3aGljaCByYWlz
ZXMgYW4gYXNzZXJ0aW9uIGVycm9yIHdpdGggYSBkZXRhaWxlZCBleHBsYW5hdGlvbiBpbgotICAg
IGNhc2UgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UuCi0KLSAgICBGb3IgdGhpcyAudmlzaXRfQXNz
ZXJ0KCkgdXNlcyB0aGUgdmlzaXRvciBwYXR0ZXJuIHRvIHZpc2l0IGFsbCB0aGUKLSAgICBBU1Qg
bm9kZXMgb2YgdGhlIGFzdC5Bc3NlcnQudGVzdCBmaWVsZCwgZWFjaCB2aXNpdCBjYWxsIHJldHVy
bmluZwotICAgIGFuIEFTVCBub2RlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBleHBsYW5hdGlvbiBz
dHJpbmcuICBEdXJpbmcgdGhpcwotICAgIHN0YXRlIGlzIGtlcHQgaW4gc2V2ZXJhbCBpbnN0YW5j
ZSBhdHRyaWJ1dGVzOgotCi0gICAgOnN0YXRlbWVudHM6IEFsbCB0aGUgQVNUIHN0YXRlbWVudHMg
d2hpY2ggd2lsbCByZXBsYWNlIHRoZSBhc3NlcnQKLSAgICAgICBzdGF0ZW1lbnQuCi0KLSAgICA6
dmFyaWFibGVzOiBUaGlzIGlzIHBvcHVsYXRlZCBieSAudmFyaWFibGUoKSB3aXRoIGVhY2ggdmFy
aWFibGUKLSAgICAgICB1c2VkIGJ5IHRoZSBzdGF0ZW1lbnRzIHNvIHRoYXQgdGhleSBjYW4gYWxs
IGJlIHNldCB0byBOb25lIGF0Ci0gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RhdGVtZW50cy4KLQot
ICAgIDp2YXJpYWJsZV9jb3VudGVyOiBDb3VudGVyIHRvIGNyZWF0ZSBuZXcgdW5pcXVlIHZhcmlh
YmxlcyBuZWVkZWQKLSAgICAgICBieSBzdGF0ZW1lbnRzLiAgVmFyaWFibGVzIGFyZSBjcmVhdGVk
IHVzaW5nIC52YXJpYWJsZSgpIGFuZAotICAgICAgIGhhdmUgdGhlIGZvcm0gb2YgIkBweV9hc3Nl
cnQwIi4KLQotICAgIDpvbl9mYWlsdXJlOiBUaGUgQVNUIHN0YXRlbWVudHMgd2hpY2ggd2lsbCBi
ZSBleGVjdXRlZCBpZiB0aGUKLSAgICAgICBhc3NlcnRpb24gdGVzdCBmYWlscy4gIFRoaXMgaXMg
dGhlIGNvZGUgd2hpY2ggd2lsbCBjb25zdHJ1Y3QKLSAgICAgICB0aGUgZmFpbHVyZSBtZXNzYWdl
IGFuZCByYWlzZXMgdGhlIEFzc2VydGlvbkVycm9yLgotCi0gICAgOmV4cGxhbmF0aW9uX3NwZWNp
ZmllcnM6IEEgZGljdCBmaWxsZWQgYnkgLmV4cGxhbmF0aW9uX3BhcmFtKCkKLSAgICAgICB3aXRo
ICUtZm9ybWF0dGluZyBwbGFjZWhvbGRlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgICAg
ICBleHByZXNzaW9ucyB0byB1c2UgaW4gdGhlIGJ1aWxkaW5nIG9mIGFuIGFzc2VydGlvbiBtZXNz
YWdlLgotICAgICAgIFRoaXMgaXMgdXNlZCBieSAucG9wX2Zvcm1hdF9jb250ZXh0KCkgdG8gYnVp
bGQgYSBtZXNzYWdlLgotCi0gICAgOnN0YWNrOiBBIHN0YWNrIG9mIHRoZSBleHBsYW5hdGlvbl9z
cGVjaWZpZXJzIGRpY3RzIG1haW50YWluZWQgYnkKLSAgICAgICAucHVzaF9mb3JtYXRfY29udGV4
dCgpIGFuZCAucG9wX2Zvcm1hdF9jb250ZXh0KCkgd2hpY2ggYWxsb3dzCi0gICAgICAgdG8gYnVp
bGQgYW5vdGhlciAlLWZvcm1hdHRlZCBzdHJpbmcgd2hpbGUgYWxyZWFkeSBidWlsZGluZyBvbmUu
Ci0KLSAgICBUaGlzIHN0YXRlIGlzIHJlc2V0IG9uIGV2ZXJ5IG5ldyBhc3NlcnQgc3RhdGVtZW50
IHZpc2l0ZWQgYW5kIHVzZWQKLSAgICBieSB0aGUgb3RoZXIgdmlzaXRvcnMuCi0KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGVfcGF0aCwgY29uZmlnKToKLSAgICAgICAg
c3VwZXIoQXNzZXJ0aW9uUmV3cml0ZXIsIHNlbGYpLl9faW5pdF9fKCkKLSAgICAgICAgc2VsZi5t
b2R1bGVfcGF0aCA9IG1vZHVsZV9wYXRoCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0K
LSAgICBkZWYgcnVuKHNlbGYsIG1vZCk6Ci0gICAgICAgICIiIkZpbmQgYWxsIGFzc2VydCBzdGF0
ZW1lbnRzIGluICptb2QqIGFuZCByZXdyaXRlIHRoZW0uIiIiCi0gICAgICAgIGlmIG5vdCBtb2Qu
Ym9keToKLSAgICAgICAgICAgICMgTm90aGluZyB0byBkby4KLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICAjIEluc2VydCBzb21lIHNwZWNpYWwgaW1wb3J0cyBhdCB0aGUgdG9wIG9mIHRoZSBt
b2R1bGUgYnV0IGFmdGVyIGFueQotICAgICAgICAjIGRvY3N0cmluZ3MgYW5kIF9fZnV0dXJlX18g
aW1wb3J0cy4KLSAgICAgICAgYWxpYXNlcyA9IFthc3QuYWxpYXMocHkuYnVpbHRpbi5idWlsdGlu
cy5fX25hbWVfXywgIkBweV9idWlsdGlucyIpLAotICAgICAgICAgICAgICAgICAgIGFzdC5hbGlh
cygiX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSIsICJAcHl0ZXN0X2FyIildCi0gICAgICAgIGRv
YyA9IGdldGF0dHIobW9kLCAiZG9jc3RyaW5nIiwgTm9uZSkKLSAgICAgICAgZXhwZWN0X2RvY3N0
cmluZyA9IGRvYyBpcyBOb25lCi0gICAgICAgIGlmIGRvYyBpcyBub3QgTm9uZSBhbmQgc2VsZi5p
c19yZXdyaXRlX2Rpc2FibGVkKGRvYyk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcG9z
ID0gMAotICAgICAgICBsaW5lbm8gPSAxCi0gICAgICAgIGZvciBpdGVtIGluIG1vZC5ib2R5Ogot
ICAgICAgICAgICAgaWYgKGV4cGVjdF9kb2NzdHJpbmcgYW5kIGlzaW5zdGFuY2UoaXRlbSwgYXN0
LkV4cHIpIGFuZAotICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGl0ZW0udmFsdWUsIGFz
dC5TdHIpKToKLSAgICAgICAgICAgICAgICBkb2MgPSBpdGVtLnZhbHVlLnMKLSAgICAgICAgICAg
ICAgICBpZiBzZWxmLmlzX3Jld3JpdGVfZGlzYWJsZWQoZG9jKToKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZXhwZWN0X2RvY3N0cmluZyA9IEZhbHNlCi0gICAg
ICAgICAgICBlbGlmIChub3QgaXNpbnN0YW5jZShpdGVtLCBhc3QuSW1wb3J0RnJvbSkgb3IgaXRl
bS5sZXZlbCA+IDAgb3IKLSAgICAgICAgICAgICAgICAgIGl0ZW0ubW9kdWxlICE9ICJfX2Z1dHVy
ZV9fIik6Ci0gICAgICAgICAgICAgICAgbGluZW5vID0gaXRlbS5saW5lbm8KLSAgICAgICAgICAg
ICAgICBicmVhawotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGxpbmVubyA9IGl0ZW0ubGluZW5vCi0gICAgICAgIGltcG9ydHMgPSBbYXN0LkltcG9ydChb
YWxpYXNdLCBsaW5lbm89bGluZW5vLCBjb2xfb2Zmc2V0PTApCi0gICAgICAgICAgICAgICAgICAg
Zm9yIGFsaWFzIGluIGFsaWFzZXNdCi0gICAgICAgIG1vZC5ib2R5W3Bvczpwb3NdID0gaW1wb3J0
cwotICAgICAgICAjIENvbGxlY3QgYXNzZXJ0cy4KLSAgICAgICAgbm9kZXMgPSBbbW9kXQotICAg
ICAgICB3aGlsZSBub2RlczoKLSAgICAgICAgICAgIG5vZGUgPSBub2Rlcy5wb3AoKQotICAgICAg
ICAgICAgZm9yIG5hbWUsIGZpZWxkIGluIGFzdC5pdGVyX2ZpZWxkcyhub2RlKToKLSAgICAgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKGZpZWxkLCBsaXN0KToKLSAgICAgICAgICAgICAgICAgICAg
bmV3ID0gW10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGksIGNoaWxkIGluIGVudW1lcmF0ZShm
aWVsZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBhc3Qu
QXNzZXJ0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBhc3NlcnQu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LmV4dGVuZChzZWxmLnZpc2l0KGNoaWxk
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3LmFwcGVuZChjaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKGNoaWxkLCBhc3QuQVNUKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZXMuYXBwZW5kKGNoaWxkKQotICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKG5vZGUs
IG5hbWUsIG5ldykKLSAgICAgICAgICAgICAgICBlbGlmIChpc2luc3RhbmNlKGZpZWxkLCBhc3Qu
QVNUKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAjIERvbid0IHJlY3Vyc2UgaW50byBleHBy
ZXNzaW9ucyBhcyB0aGV5IGNhbid0IGNvbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgICAjIGFz
c2VydHMuCi0gICAgICAgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZmllbGQsIGFzdC5l
eHByKSk6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChmaWVsZCkKLQotICAgIGRl
ZiBpc19yZXdyaXRlX2Rpc2FibGVkKHNlbGYsIGRvY3N0cmluZyk6Ci0gICAgICAgIHJldHVybiAi
UFlURVNUX0RPTlRfUkVXUklURSIgaW4gZG9jc3RyaW5nCi0KLSAgICBkZWYgdmFyaWFibGUoc2Vs
Zik6Ci0gICAgICAgICIiIkdldCBhIG5ldyB2YXJpYWJsZS4iIiIKLSAgICAgICAgIyBVc2UgYSBj
aGFyYWN0ZXIgaW52YWxpZCBpbiBweXRob24gaWRlbnRpZmllcnMgdG8gYXZvaWQgY2xhc2hpbmcu
Ci0gICAgICAgIG5hbWUgPSAiQHB5X2Fzc2VydCIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2Nv
dW50ZXIpKQotICAgICAgICBzZWxmLnZhcmlhYmxlcy5hcHBlbmQobmFtZSkKLSAgICAgICAgcmV0
dXJuIG5hbWUKLQotICAgIGRlZiBhc3NpZ24oc2VsZiwgZXhwcik6Ci0gICAgICAgICIiIkdpdmUg
KmV4cHIqIGEgbmFtZS4iIiIKLSAgICAgICAgbmFtZSA9IHNlbGYudmFyaWFibGUoKQotICAgICAg
ICBzZWxmLnN0YXRlbWVudHMuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5OYW1lKG5hbWUsIGFzdC5T
dG9yZSgpKV0sIGV4cHIpKQotICAgICAgICByZXR1cm4gYXN0Lk5hbWUobmFtZSwgYXN0LkxvYWQo
KSkKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIGV4cHIpOgotICAgICAgICAiIiJDYWxsIHB5Lmlv
LnNhZmVyZXByIG9uIHRoZSBleHByZXNzaW9uLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5oZWxw
ZXIoInNhZmVyZXByIiwgZXhwcikKLQotICAgIGRlZiBoZWxwZXIoc2VsZiwgbmFtZSwgKmFyZ3Mp
OgotICAgICAgICAiIiJDYWxsIGEgaGVscGVyIGluIHRoaXMgbW9kdWxlLiIiIgotICAgICAgICBw
eV9uYW1lID0gYXN0Lk5hbWUoIkBweXRlc3RfYXIiLCBhc3QuTG9hZCgpKQotICAgICAgICBhdHRy
ID0gYXN0LkF0dHJpYnV0ZShweV9uYW1lLCAiXyIgKyBuYW1lLCBhc3QuTG9hZCgpKQotICAgICAg
ICByZXR1cm4gYXN0X0NhbGwoYXR0ciwgbGlzdChhcmdzKSwgW10pCi0KLSAgICBkZWYgYnVpbHRp
bihzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBidWlsdGluIGNhbGxlZCAqbmFt
ZSouIiIiCi0gICAgICAgIGJ1aWx0aW5fbmFtZSA9IGFzdC5OYW1lKCJAcHlfYnVpbHRpbnMiLCBh
c3QuTG9hZCgpKQotICAgICAgICByZXR1cm4gYXN0LkF0dHJpYnV0ZShidWlsdGluX25hbWUsIG5h
bWUsIGFzdC5Mb2FkKCkpCi0KLSAgICBkZWYgZXhwbGFuYXRpb25fcGFyYW0oc2VsZiwgZXhwcik6
Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBuYW1lZCAlLWZvcm1hdHRpbmcgcGxhY2Vob2xkZXIg
Zm9yIGV4cHIuCi0KLSAgICAgICAgVGhpcyBjcmVhdGVzIGEgJS1mb3JtYXR0aW5nIHBsYWNlaG9s
ZGVyIGZvciBleHByIGluIHRoZQotICAgICAgICBjdXJyZW50IGZvcm1hdHRpbmcgY29udGV4dCwg
ZS5nLiBgYCUocHkwKXNgYC4gIFRoZSBwbGFjZWhvbGRlcgotICAgICAgICBhbmQgZXhwciBhcmUg
cGxhY2VkIGluIHRoZSBjdXJyZW50IGZvcm1hdCBjb250ZXh0IHNvIHRoYXQgaXQKLSAgICAgICAg
Y2FuIGJlIHVzZWQgb24gdGhlIG5leHQgY2FsbCB0byAucG9wX2Zvcm1hdF9jb250ZXh0KCkuCi0K
LSAgICAgICAgIiIiCi0gICAgICAgIHNwZWNpZmllciA9ICJweSIgKyBzdHIobmV4dChzZWxmLnZh
cmlhYmxlX2NvdW50ZXIpKQotICAgICAgICBzZWxmLmV4cGxhbmF0aW9uX3NwZWNpZmllcnNbc3Bl
Y2lmaWVyXSA9IGV4cHIKLSAgICAgICAgcmV0dXJuICIlKCIgKyBzcGVjaWZpZXIgKyAiKXMiCi0K
LSAgICBkZWYgcHVzaF9mb3JtYXRfY29udGV4dChzZWxmKToKLSAgICAgICAgIiIiQ3JlYXRlIGEg
bmV3IGZvcm1hdHRpbmcgY29udGV4dC4KLQotICAgICAgICBUaGUgZm9ybWF0IGNvbnRleHQgaXMg
dXNlZCBmb3Igd2hlbiBhbiBleHBsYW5hdGlvbiB3YW50cyB0bwotICAgICAgICBoYXZlIGEgdmFy
aWFibGUgdmFsdWUgZm9ybWF0dGVkIGluIHRoZSBhc3NlcnRpb24gbWVzc2FnZS4gIEluCi0gICAg
ICAgIHRoaXMgY2FzZSB0aGUgdmFsdWUgcmVxdWlyZWQgY2FuIGJlIGFkZGVkIHVzaW5nCi0gICAg
ICAgIC5leHBsYW5hdGlvbl9wYXJhbSgpLiAgRmluYWxseSAucG9wX2Zvcm1hdF9jb250ZXh0KCkg
aXMgdXNlZAotICAgICAgICB0byBmb3JtYXQgYSBzdHJpbmcgb2YgJS1mb3JtYXR0ZWQgdmFsdWVz
IGFzIGFkZGVkIGJ5Ci0gICAgICAgIC5leHBsYW5hdGlvbl9wYXJhbSgpLgotCi0gICAgICAgICIi
IgotICAgICAgICBzZWxmLmV4cGxhbmF0aW9uX3NwZWNpZmllcnMgPSB7fQotICAgICAgICBzZWxm
LnN0YWNrLmFwcGVuZChzZWxmLmV4cGxhbmF0aW9uX3NwZWNpZmllcnMpCi0KLSAgICBkZWYgcG9w
X2Zvcm1hdF9jb250ZXh0KHNlbGYsIGV4cGxfZXhwcik6Ci0gICAgICAgICIiIkZvcm1hdCB0aGUg
JS1mb3JtYXR0ZWQgc3RyaW5nIHdpdGggY3VycmVudCBmb3JtYXQgY29udGV4dC4KLQotICAgICAg
ICBUaGUgZXhwbF9leHByIHNob3VsZCBiZSBhbiBhc3QuU3RyIGluc3RhbmNlIGNvbnN0cnVjdGVk
IGZyb20KLSAgICAgICAgdGhlICUtcGxhY2Vob2xkZXJzIGNyZWF0ZWQgYnkgLmV4cGxhbmF0aW9u
X3BhcmFtKCkuICBUaGlzIHdpbGwKLSAgICAgICAgYWRkIHRoZSByZXF1aXJlZCBjb2RlIHRvIGZv
cm1hdCBzYWlkIHN0cmluZyB0byAub25fZmFpbHVyZSBhbmQKLSAgICAgICAgcmV0dXJuIHRoZSBh
c3QuTmFtZSBpbnN0YW5jZSBvZiB0aGUgZm9ybWF0dGVkIHN0cmluZy4KLQotICAgICAgICAiIiIK
LSAgICAgICAgY3VycmVudCA9IHNlbGYuc3RhY2sucG9wKCkKLSAgICAgICAgaWYgc2VsZi5zdGFj
azoKLSAgICAgICAgICAgIHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVycyA9IHNlbGYuc3RhY2tb
LTFdCi0gICAgICAgIGtleXMgPSBbYXN0LlN0cihrZXkpIGZvciBrZXkgaW4gY3VycmVudC5rZXlz
KCldCi0gICAgICAgIGZvcm1hdF9kaWN0ID0gYXN0LkRpY3Qoa2V5cywgbGlzdChjdXJyZW50LnZh
bHVlcygpKSkKLSAgICAgICAgZm9ybSA9IGFzdC5CaW5PcChleHBsX2V4cHIsIGFzdC5Nb2QoKSwg
Zm9ybWF0X2RpY3QpCi0gICAgICAgIG5hbWUgPSAiQHB5X2Zvcm1hdCIgKyBzdHIobmV4dChzZWxm
LnZhcmlhYmxlX2NvdW50ZXIpKQotICAgICAgICBzZWxmLm9uX2ZhaWx1cmUuYXBwZW5kKGFzdC5B
c3NpZ24oW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKV0sIGZvcm0pKQotICAgICAgICByZXR1
cm4gYXN0Lk5hbWUobmFtZSwgYXN0LkxvYWQoKSkKLQotICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNl
bGYsIG5vZGUpOgotICAgICAgICAiIiJIYW5kbGUgZXhwcmVzc2lvbnMgd2UgZG9uJ3QgaGF2ZSBj
dXN0b20gY29kZSBmb3IuIiIiCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGFzdC5l
eHByKQotICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihub2RlKQotICAgICAgICByZXR1cm4gcmVz
LCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYuZGlzcGxheShyZXMpKQotCi0gICAgZGVmIHZp
c2l0X0Fzc2VydChzZWxmLCBhc3NlcnRfKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBBU1Qgc3Rh
dGVtZW50cyB0byByZXBsYWNlIHRoZSBhc3QuQXNzZXJ0IGluc3RhbmNlLgotCi0gICAgICAgIFRo
aXMgcmV3cml0ZXMgdGhlIHRlc3Qgb2YgYW4gYXNzZXJ0aW9uIHRvIHByb3ZpZGUKLSAgICAgICAg
aW50ZXJtZWRpYXRlIHZhbHVlcyBhbmQgcmVwbGFjZSBpdCB3aXRoIGFuIGlmIHN0YXRlbWVudCB3
aGljaAotICAgICAgICByYWlzZXMgYW4gYXNzZXJ0aW9uIGVycm9yIHdpdGggYSBkZXRhaWxlZCBl
eHBsYW5hdGlvbiBpbiBjYXNlCi0gICAgICAgIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlLgotCi0g
ICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGFzc2VydF8udGVzdCwgYXN0LlR1cGxl
KSBhbmQgc2VsZi5jb25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmc2xvY2F0aW9uID0g
KHNlbGYubW9kdWxlX3BhdGgsIGFzc2VydF8ubGluZW5vKQotICAgICAgICAgICAgc2VsZi5jb25m
aWcud2FybignUjEnLCAnYXNzZXJ0aW9uIGlzIGFsd2F5cyB0cnVlLCBwZXJoYXBzICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW92ZSBwYXJlbnRoZXNlcz8nLCBmc2xvY2F0aW9u
PWZzbG9jYXRpb24pCi0gICAgICAgIHNlbGYuc3RhdGVtZW50cyA9IFtdCi0gICAgICAgIHNlbGYu
dmFyaWFibGVzID0gW10KLSAgICAgICAgc2VsZi52YXJpYWJsZV9jb3VudGVyID0gaXRlcnRvb2xz
LmNvdW50KCkKLSAgICAgICAgc2VsZi5zdGFjayA9IFtdCi0gICAgICAgIHNlbGYub25fZmFpbHVy
ZSA9IFtdCi0gICAgICAgIHNlbGYucHVzaF9mb3JtYXRfY29udGV4dCgpCi0gICAgICAgICMgUmV3
cml0ZSBhc3NlcnQgaW50byBhIGJ1bmNoIG9mIHN0YXRlbWVudHMuCi0gICAgICAgIHRvcF9jb25k
aXRpb24sIGV4cGxhbmF0aW9uID0gc2VsZi52aXNpdChhc3NlcnRfLnRlc3QpCi0gICAgICAgICMg
Q3JlYXRlIGZhaWx1cmUgbWVzc2FnZS4KLSAgICAgICAgYm9keSA9IHNlbGYub25fZmFpbHVyZQot
ICAgICAgICBuZWdhdGlvbiA9IGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgdG9wX2NvbmRpdGlvbikK
LSAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuSWYobmVnYXRpb24sIGJvZHksIFtd
KSkKLSAgICAgICAgaWYgYXNzZXJ0Xy5tc2c6Ci0gICAgICAgICAgICBhc3NlcnRtc2cgPSBzZWxm
LmhlbHBlcignZm9ybWF0X2Fzc2VydG1zZycsIGFzc2VydF8ubXNnKQotICAgICAgICAgICAgZXhw
bGFuYXRpb24gPSAiXG4+YXNzZXJ0ICIgKyBleHBsYW5hdGlvbgotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgYXNzZXJ0bXNnID0gYXN0LlN0cigiIikKLSAgICAgICAgICAgIGV4cGxhbmF0aW9u
ID0gImFzc2VydCAiICsgZXhwbGFuYXRpb24KLSAgICAgICAgdGVtcGxhdGUgPSBhc3QuQmluT3Ao
YXNzZXJ0bXNnLCBhc3QuQWRkKCksIGFzdC5TdHIoZXhwbGFuYXRpb24pKQotICAgICAgICBtc2cg
PSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dCh0ZW1wbGF0ZSkKLSAgICAgICAgZm10ID0gc2VsZi5o
ZWxwZXIoImZvcm1hdF9leHBsYW5hdGlvbiIsIG1zZykKLSAgICAgICAgZXJyX25hbWUgPSBhc3Qu
TmFtZSgiQXNzZXJ0aW9uRXJyb3IiLCBhc3QuTG9hZCgpKQotICAgICAgICBleGMgPSBhc3RfQ2Fs
bChlcnJfbmFtZSwgW2ZtdF0sIFtdKQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49
IDM6Ci0gICAgICAgICAgICByYWlzZV8gPSBhc3QuUmFpc2UoZXhjLCBOb25lKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmFpc2VfID0gYXN0LlJhaXNlKGV4YywgTm9uZSwgTm9uZSkKLSAg
ICAgICAgYm9keS5hcHBlbmQocmFpc2VfKQotICAgICAgICAjIENsZWFyIHRlbXBvcmFyeSB2YXJp
YWJsZXMgYnkgc2V0dGluZyB0aGVtIHRvIE5vbmUuCi0gICAgICAgIGlmIHNlbGYudmFyaWFibGVz
OgotICAgICAgICAgICAgdmFyaWFibGVzID0gW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNlbGYudmFyaWFibGVzXQotICAg
ICAgICAgICAgY2xlYXIgPSBhc3QuQXNzaWduKHZhcmlhYmxlcywgX05hbWVDb25zdGFudChOb25l
KSkKLSAgICAgICAgICAgIHNlbGYuc3RhdGVtZW50cy5hcHBlbmQoY2xlYXIpCi0gICAgICAgICMg
Rml4IGxpbmUgbnVtYmVycy4KLSAgICAgICAgZm9yIHN0bXQgaW4gc2VsZi5zdGF0ZW1lbnRzOgot
ICAgICAgICAgICAgc2V0X2xvY2F0aW9uKHN0bXQsIGFzc2VydF8ubGluZW5vLCBhc3NlcnRfLmNv
bF9vZmZzZXQpCi0gICAgICAgIHJldHVybiBzZWxmLnN0YXRlbWVudHMKLQotICAgIGRlZiB2aXNp
dF9OYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICAjIERpc3BsYXkgdGhlIHJlcHIgb2YgdGhlIG5h
bWUgaWYgaXQncyBhIGxvY2FsIHZhcmlhYmxlIG9yCi0gICAgICAgICMgX3Nob3VsZF9yZXByX2ds
b2JhbF9uYW1lKCkgdGhpbmtzIGl0J3MgYWNjZXB0YWJsZS4KLSAgICAgICAgbG9jcyA9IGFzdF9D
YWxsKHNlbGYuYnVpbHRpbigibG9jYWxzIiksIFtdLCBbXSkKLSAgICAgICAgaW5sb2NzID0gYXN0
LkNvbXBhcmUoYXN0LlN0cihuYW1lLmlkKSwgW2FzdC5JbigpXSwgW2xvY3NdKQotICAgICAgICBk
b3JlcHIgPSBzZWxmLmhlbHBlcigic2hvdWxkX3JlcHJfZ2xvYmFsX25hbWUiLCBuYW1lKQotICAg
ICAgICB0ZXN0ID0gYXN0LkJvb2xPcChhc3QuT3IoKSwgW2lubG9jcywgZG9yZXByXSkKLSAgICAg
ICAgZXhwciA9IGFzdC5JZkV4cCh0ZXN0LCBzZWxmLmRpc3BsYXkobmFtZSksIGFzdC5TdHIobmFt
ZS5pZCkpCi0gICAgICAgIHJldHVybiBuYW1lLCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKGV4cHIp
Ci0KLSAgICBkZWYgdmlzaXRfQm9vbE9wKHNlbGYsIGJvb2xvcCk6Ci0gICAgICAgIHJlc192YXIg
PSBzZWxmLnZhcmlhYmxlKCkKLSAgICAgICAgZXhwbF9saXN0ID0gc2VsZi5hc3NpZ24oYXN0Lkxp
c3QoW10sIGFzdC5Mb2FkKCkpKQotICAgICAgICBhcHAgPSBhc3QuQXR0cmlidXRlKGV4cGxfbGlz
dCwgImFwcGVuZCIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIGlzX29yID0gaW50KGlzaW5zdGFuY2Uo
Ym9vbG9wLm9wLCBhc3QuT3IpKQotICAgICAgICBib2R5ID0gc2F2ZSA9IHNlbGYuc3RhdGVtZW50
cwotICAgICAgICBmYWlsX3NhdmUgPSBzZWxmLm9uX2ZhaWx1cmUKLSAgICAgICAgbGV2ZWxzID0g
bGVuKGJvb2xvcC52YWx1ZXMpIC0gMQotICAgICAgICBzZWxmLnB1c2hfZm9ybWF0X2NvbnRleHQo
KQotICAgICAgICAjIFByb2Nlc3MgZWFjaCBvcGVyYW5kLCBzaG9ydC1jaXJjdXRpbmcgaWYgbmVl
ZGVkLgotICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUoYm9vbG9wLnZhbHVlcyk6Ci0gICAg
ICAgICAgICBpZiBpOgotICAgICAgICAgICAgICAgIGZhaWxfaW5uZXIgPSBbXQotICAgICAgICAg
ICAgICAgICMgY29uZCBpcyBzZXQgaW4gYSBwcmlvciBsb29wIGl0ZXJhdGlvbiBiZWxvdwotICAg
ICAgICAgICAgICAgIHNlbGYub25fZmFpbHVyZS5hcHBlbmQoYXN0LklmKGNvbmQsIGZhaWxfaW5u
ZXIsIFtdKSkgICMgbm9xYQotICAgICAgICAgICAgICAgIHNlbGYub25fZmFpbHVyZSA9IGZhaWxf
aW5uZXIKLSAgICAgICAgICAgIHNlbGYucHVzaF9mb3JtYXRfY29udGV4dCgpCi0gICAgICAgICAg
ICByZXMsIGV4cGwgPSBzZWxmLnZpc2l0KHYpCi0gICAgICAgICAgICBib2R5LmFwcGVuZChhc3Qu
QXNzaWduKFthc3QuTmFtZShyZXNfdmFyLCBhc3QuU3RvcmUoKSldLCByZXMpKQotICAgICAgICAg
ICAgZXhwbF9mb3JtYXQgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChhc3QuU3RyKGV4cGwpKQot
ICAgICAgICAgICAgY2FsbCA9IGFzdF9DYWxsKGFwcCwgW2V4cGxfZm9ybWF0XSwgW10pCi0gICAg
ICAgICAgICBzZWxmLm9uX2ZhaWx1cmUuYXBwZW5kKGFzdC5FeHByKGNhbGwpKQotICAgICAgICAg
ICAgaWYgaSA8IGxldmVsczoKLSAgICAgICAgICAgICAgICBjb25kID0gcmVzCi0gICAgICAgICAg
ICAgICAgaWYgaXNfb3I6Ci0gICAgICAgICAgICAgICAgICAgIGNvbmQgPSBhc3QuVW5hcnlPcChh
c3QuTm90KCksIGNvbmQpCi0gICAgICAgICAgICAgICAgaW5uZXIgPSBbXQotICAgICAgICAgICAg
ICAgIHNlbGYuc3RhdGVtZW50cy5hcHBlbmQoYXN0LklmKGNvbmQsIGlubmVyLCBbXSkpCi0gICAg
ICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0gYm9keSA9IGlubmVyCi0gICAgICAgIHNlbGYu
c3RhdGVtZW50cyA9IHNhdmUKLSAgICAgICAgc2VsZi5vbl9mYWlsdXJlID0gZmFpbF9zYXZlCi0g
ICAgICAgIGV4cGxfdGVtcGxhdGUgPSBzZWxmLmhlbHBlcigiZm9ybWF0X2Jvb2xvcCIsIGV4cGxf
bGlzdCwgYXN0Lk51bShpc19vcikpCi0gICAgICAgIGV4cGwgPSBzZWxmLnBvcF9mb3JtYXRfY29u
dGV4dChleHBsX3RlbXBsYXRlKQotICAgICAgICByZXR1cm4gYXN0Lk5hbWUocmVzX3ZhciwgYXN0
LkxvYWQoKSksIHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oZXhwbCkKLQotICAgIGRlZiB2aXNpdF9V
bmFyeU9wKHNlbGYsIHVuYXJ5KToKLSAgICAgICAgcGF0dGVybiA9IHVuYXJ5X21hcFt1bmFyeS5v
cC5fX2NsYXNzX19dCi0gICAgICAgIG9wZXJhbmRfcmVzLCBvcGVyYW5kX2V4cGwgPSBzZWxmLnZp
c2l0KHVuYXJ5Lm9wZXJhbmQpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKGFzdC5VbmFyeU9w
KHVuYXJ5Lm9wLCBvcGVyYW5kX3JlcykpCi0gICAgICAgIHJldHVybiByZXMsIHBhdHRlcm4gJSAo
b3BlcmFuZF9leHBsLCkKLQotICAgIGRlZiB2aXNpdF9CaW5PcChzZWxmLCBiaW5vcCk6Ci0gICAg
ICAgIHN5bWJvbCA9IGJpbm9wX21hcFtiaW5vcC5vcC5fX2NsYXNzX19dCi0gICAgICAgIGxlZnRf
ZXhwciwgbGVmdF9leHBsID0gc2VsZi52aXNpdChiaW5vcC5sZWZ0KQotICAgICAgICByaWdodF9l
eHByLCByaWdodF9leHBsID0gc2VsZi52aXNpdChiaW5vcC5yaWdodCkKLSAgICAgICAgZXhwbGFu
YXRpb24gPSAiKCVzICVzICVzKSIgJSAobGVmdF9leHBsLCBzeW1ib2wsIHJpZ2h0X2V4cGwpCi0g
ICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKGFzdC5CaW5PcChsZWZ0X2V4cHIsIGJpbm9wLm9wLCBy
aWdodF9leHByKSkKLSAgICAgICAgcmV0dXJuIHJlcywgZXhwbGFuYXRpb24KLQotICAgIGRlZiB2
aXNpdF9DYWxsXzM1KHNlbGYsIGNhbGwpOgotICAgICAgICAiIiIKLSAgICAgICAgdmlzaXQgYGFz
dC5DYWxsYCBub2RlcyBvbiBQeXRob24zLjUgYW5kIGFmdGVyCi0gICAgICAgICIiIgotICAgICAg
ICBuZXdfZnVuYywgZnVuY19leHBsID0gc2VsZi52aXNpdChjYWxsLmZ1bmMpCi0gICAgICAgIGFy
Z19leHBscyA9IFtdCi0gICAgICAgIG5ld19hcmdzID0gW10KLSAgICAgICAgbmV3X2t3YXJncyA9
IFtdCi0gICAgICAgIGZvciBhcmcgaW4gY2FsbC5hcmdzOgotICAgICAgICAgICAgcmVzLCBleHBs
ID0gc2VsZi52aXNpdChhcmcpCi0gICAgICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKGV4cGwpCi0g
ICAgICAgICAgICBuZXdfYXJncy5hcHBlbmQocmVzKQotICAgICAgICBmb3Iga2V5d29yZCBpbiBj
YWxsLmtleXdvcmRzOgotICAgICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChrZXl3b3Jk
LnZhbHVlKQotICAgICAgICAgICAgbmV3X2t3YXJncy5hcHBlbmQoYXN0LmtleXdvcmQoa2V5d29y
ZC5hcmcsIHJlcykpCi0gICAgICAgICAgICBpZiBrZXl3b3JkLmFyZzoKLSAgICAgICAgICAgICAg
ICBhcmdfZXhwbHMuYXBwZW5kKGtleXdvcmQuYXJnICsgIj0iICsgZXhwbCkKLSAgICAgICAgICAg
IGVsc2U6ICAjICoqYXJncyBoYXZlIGBhcmdgIGtleXdvcmRzIHdpdGggYW4gLmFyZyBvZiBOb25l
Ci0gICAgICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZCgiKioiICsgZXhwbCkKLQotICAgICAg
ICBleHBsID0gIiVzKCVzKSIgJSAoZnVuY19leHBsLCAnLCAnLmpvaW4oYXJnX2V4cGxzKSkKLSAg
ICAgICAgbmV3X2NhbGwgPSBhc3QuQ2FsbChuZXdfZnVuYywgbmV3X2FyZ3MsIG5ld19rd2FyZ3Mp
Ci0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKG5ld19jYWxsKQotICAgICAgICByZXNfZXhwbCA9
IHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAgIG91dGVy
X2V4cGwgPSAiJXNcbnslcyA9ICVzXG59IiAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4cGwpCi0g
ICAgICAgIHJldHVybiByZXMsIG91dGVyX2V4cGwKLQotICAgIGRlZiB2aXNpdF9TdGFycmVkKHNl
bGYsIHN0YXJyZWQpOgotICAgICAgICAjIEZyb20gUHl0aG9uIDMuNSwgYSBTdGFycmVkIG5vZGUg
Y2FuIGFwcGVhciBpbiBhIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgcmVzLCBleHBsID0gc2VsZi52
aXNpdChzdGFycmVkLnZhbHVlKQotICAgICAgICByZXR1cm4gc3RhcnJlZCwgJyonICsgZXhwbAot
Ci0gICAgZGVmIHZpc2l0X0NhbGxfbGVnYWN5KHNlbGYsIGNhbGwpOgotICAgICAgICAiIiIKLSAg
ICAgICAgdmlzaXQgYGFzdC5DYWxsIG5vZGVzIG9uIDMuNCBhbmQgYmVsb3dgCi0gICAgICAgICIi
IgotICAgICAgICBuZXdfZnVuYywgZnVuY19leHBsID0gc2VsZi52aXNpdChjYWxsLmZ1bmMpCi0g
ICAgICAgIGFyZ19leHBscyA9IFtdCi0gICAgICAgIG5ld19hcmdzID0gW10KLSAgICAgICAgbmV3
X2t3YXJncyA9IFtdCi0gICAgICAgIG5ld19zdGFyID0gbmV3X2t3YXJnID0gTm9uZQotICAgICAg
ICBmb3IgYXJnIGluIGNhbGwuYXJnczoKLSAgICAgICAgICAgIHJlcywgZXhwbCA9IHNlbGYudmlz
aXQoYXJnKQotICAgICAgICAgICAgbmV3X2FyZ3MuYXBwZW5kKHJlcykKLSAgICAgICAgICAgIGFy
Z19leHBscy5hcHBlbmQoZXhwbCkKLSAgICAgICAgZm9yIGtleXdvcmQgaW4gY2FsbC5rZXl3b3Jk
czoKLSAgICAgICAgICAgIHJlcywgZXhwbCA9IHNlbGYudmlzaXQoa2V5d29yZC52YWx1ZSkKLSAg
ICAgICAgICAgIG5ld19rd2FyZ3MuYXBwZW5kKGFzdC5rZXl3b3JkKGtleXdvcmQuYXJnLCByZXMp
KQotICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZChrZXl3b3JkLmFyZyArICI9IiArIGV4cGwp
Ci0gICAgICAgIGlmIGNhbGwuc3RhcmFyZ3M6Ci0gICAgICAgICAgICBuZXdfc3RhciwgZXhwbCA9
IHNlbGYudmlzaXQoY2FsbC5zdGFyYXJncykKLSAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQo
IioiICsgZXhwbCkKLSAgICAgICAgaWYgY2FsbC5rd2FyZ3M6Ci0gICAgICAgICAgICBuZXdfa3dh
cmcsIGV4cGwgPSBzZWxmLnZpc2l0KGNhbGwua3dhcmdzKQotICAgICAgICAgICAgYXJnX2V4cGxz
LmFwcGVuZCgiKioiICsgZXhwbCkKLSAgICAgICAgZXhwbCA9ICIlcyglcykiICUgKGZ1bmNfZXhw
bCwgJywgJy5qb2luKGFyZ19leHBscykpCi0gICAgICAgIG5ld19jYWxsID0gYXN0LkNhbGwobmV3
X2Z1bmMsIG5ld19hcmdzLCBuZXdfa3dhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld19zdGFyLCBuZXdfa3dhcmcpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKG5ld19jYWxs
KQotICAgICAgICByZXNfZXhwbCA9IHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oc2VsZi5kaXNwbGF5
KHJlcykpCi0gICAgICAgIG91dGVyX2V4cGwgPSAiJXNcbnslcyA9ICVzXG59IiAlIChyZXNfZXhw
bCwgcmVzX2V4cGwsIGV4cGwpCi0gICAgICAgIHJldHVybiByZXMsIG91dGVyX2V4cGwKLQotICAg
ICMgYXN0LkNhbGwgc2lnbmF0dXJlIGNoYW5nZWQgb24gMy41LAotICAgICMgY29uZGl0aW9uYWxs
eSBjaGFuZ2UgIHdoaWNoIG1ldGhvZHMgaXMgbmFtZWQKLSAgICAjIHZpc2l0X0NhbGwgZGVwZW5k
aW5nIG9uIFB5dGhvbiB2ZXJzaW9uCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNSk6
Ci0gICAgICAgIHZpc2l0X0NhbGwgPSB2aXNpdF9DYWxsXzM1Ci0gICAgZWxzZToKLSAgICAgICAg
dmlzaXRfQ2FsbCA9IHZpc2l0X0NhbGxfbGVnYWN5Ci0KLSAgICBkZWYgdmlzaXRfQXR0cmlidXRl
KHNlbGYsIGF0dHIpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyLmN0eCwgYXN0Lkxv
YWQpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2VuZXJpY192aXNpdChhdHRyKQotICAgICAg
ICB2YWx1ZSwgdmFsdWVfZXhwbCA9IHNlbGYudmlzaXQoYXR0ci52YWx1ZSkKLSAgICAgICAgcmVz
ID0gc2VsZi5hc3NpZ24oYXN0LkF0dHJpYnV0ZSh2YWx1ZSwgYXR0ci5hdHRyLCBhc3QuTG9hZCgp
KSkKLSAgICAgICAgcmVzX2V4cGwgPSBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYuZGlzcGxh
eShyZXMpKQotICAgICAgICBwYXQgPSAiJXNcbnslcyA9ICVzLiVzXG59IgotICAgICAgICBleHBs
ID0gcGF0ICUgKHJlc19leHBsLCByZXNfZXhwbCwgdmFsdWVfZXhwbCwgYXR0ci5hdHRyKQotICAg
ICAgICByZXR1cm4gcmVzLCBleHBsCi0KLSAgICBkZWYgdmlzaXRfQ29tcGFyZShzZWxmLCBjb21w
KToKLSAgICAgICAgc2VsZi5wdXNoX2Zvcm1hdF9jb250ZXh0KCkKLSAgICAgICAgbGVmdF9yZXMs
IGxlZnRfZXhwbCA9IHNlbGYudmlzaXQoY29tcC5sZWZ0KQotICAgICAgICBpZiBpc2luc3RhbmNl
KGNvbXAubGVmdCwgKF9hc3QuQ29tcGFyZSwgX2FzdC5Cb29sT3ApKToKLSAgICAgICAgICAgIGxl
ZnRfZXhwbCA9ICIoezB9KSIuZm9ybWF0KGxlZnRfZXhwbCkKLSAgICAgICAgcmVzX3ZhcmlhYmxl
cyA9IFtzZWxmLnZhcmlhYmxlKCkgZm9yIGkgaW4gcmFuZ2UobGVuKGNvbXAub3BzKSldCi0gICAg
ICAgIGxvYWRfbmFtZXMgPSBbYXN0Lk5hbWUodiwgYXN0LkxvYWQoKSkgZm9yIHYgaW4gcmVzX3Zh
cmlhYmxlc10KLSAgICAgICAgc3RvcmVfbmFtZXMgPSBbYXN0Lk5hbWUodiwgYXN0LlN0b3JlKCkp
IGZvciB2IGluIHJlc192YXJpYWJsZXNdCi0gICAgICAgIGl0ID0gemlwKHJhbmdlKGxlbihjb21w
Lm9wcykpLCBjb21wLm9wcywgY29tcC5jb21wYXJhdG9ycykKLSAgICAgICAgZXhwbHMgPSBbXQot
ICAgICAgICBzeW1zID0gW10KLSAgICAgICAgcmVzdWx0cyA9IFtsZWZ0X3Jlc10KLSAgICAgICAg
Zm9yIGksIG9wLCBuZXh0X29wZXJhbmQgaW4gaXQ6Ci0gICAgICAgICAgICBuZXh0X3JlcywgbmV4
dF9leHBsID0gc2VsZi52aXNpdChuZXh0X29wZXJhbmQpCi0gICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKG5leHRfb3BlcmFuZCwgKF9hc3QuQ29tcGFyZSwgX2FzdC5Cb29sT3ApKToKLSAgICAgICAg
ICAgICAgICBuZXh0X2V4cGwgPSAiKHswfSkiLmZvcm1hdChuZXh0X2V4cGwpCi0gICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChuZXh0X3JlcykKLSAgICAgICAgICAgIHN5bSA9IGJpbm9wX21hcFtv
cC5fX2NsYXNzX19dCi0gICAgICAgICAgICBzeW1zLmFwcGVuZChhc3QuU3RyKHN5bSkpCi0gICAg
ICAgICAgICBleHBsID0gIiVzICVzICVzIiAlIChsZWZ0X2V4cGwsIHN5bSwgbmV4dF9leHBsKQot
ICAgICAgICAgICAgZXhwbHMuYXBwZW5kKGFzdC5TdHIoZXhwbCkpCi0gICAgICAgICAgICByZXNf
ZXhwciA9IGFzdC5Db21wYXJlKGxlZnRfcmVzLCBbb3BdLCBbbmV4dF9yZXNdKQotICAgICAgICAg
ICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuQXNzaWduKFtzdG9yZV9uYW1lc1tpXV0sIHJl
c19leHByKSkKLSAgICAgICAgICAgIGxlZnRfcmVzLCBsZWZ0X2V4cGwgPSBuZXh0X3JlcywgbmV4
dF9leHBsCi0gICAgICAgICMgVXNlIHB5dGVzdC5hc3NlcnRpb24udXRpbC5fcmVwcmNvbXBhcmUg
aWYgdGhhdCdzIGF2YWlsYWJsZS4KLSAgICAgICAgZXhwbF9jYWxsID0gc2VsZi5oZWxwZXIoImNh
bGxfcmVwcmNvbXBhcmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuVHVw
bGUoc3ltcywgYXN0LkxvYWQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFz
dC5UdXBsZShsb2FkX25hbWVzLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXN0LlR1cGxlKGV4cGxzLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXN0LlR1cGxlKHJlc3VsdHMsIGFzdC5Mb2FkKCkpKQotICAgICAgICBp
ZiBsZW4oY29tcC5vcHMpID4gMToKLSAgICAgICAgICAgIHJlcyA9IGFzdC5Cb29sT3AoYXN0LkFu
ZCgpLCBsb2FkX25hbWVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzID0gbG9hZF9u
YW1lc1swXQotICAgICAgICByZXR1cm4gcmVzLCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYu
cG9wX2Zvcm1hdF9jb250ZXh0KGV4cGxfY2FsbCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2Fzc2VydGlvbi90cnVuY2F0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0
aW9uL3RydW5jYXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWQxMmUyZTVh
OTYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi90cnVu
Y2F0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0iIiIKLVV0aWxpdGllcyBm
b3IgdHJ1bmNhdGluZyBhc3NlcnRpb24gb3V0cHV0LgotCi1DdXJyZW50IGRlZmF1bHQgYmVoYXZp
b3VyIGlzIHRvIHRydW5jYXRlIGFzc2VydGlvbiBleHBsYW5hdGlvbnMgYXQKLX44IHRlcm1pbmFs
IGxpbmVzLCB1bmxlc3MgcnVubmluZyBpbiAiLXZ2IiBtb2RlIG9yIHJ1bm5pbmcgb24gQ0kuCi0i
IiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLWltcG9ydCBvcwotCi1pbXBvcnQgc2l4Ci0KLQotREVGQVVMVF9NQVhfTElO
RVMgPSA4Ci1ERUZBVUxUX01BWF9DSEFSUyA9IDggKiA4MAotVVNBR0VfTVNHID0gInVzZSAnLXZ2
JyB0byBzaG93IgotCi0KLWRlZiB0cnVuY2F0ZV9pZl9yZXF1aXJlZChleHBsYW5hdGlvbiwgaXRl
bSwgbWF4X2xlbmd0aD1Ob25lKToKLSAgICAiIiIKLSAgICBUcnVuY2F0ZSB0aGlzIGFzc2VydGlv
biBleHBsYW5hdGlvbiBpZiB0aGUgZ2l2ZW4gdGVzdCBpdGVtIGlzIGVsaWdpYmxlLgotICAgICIi
IgotICAgIGlmIF9zaG91bGRfdHJ1bmNhdGVfaXRlbShpdGVtKToKLSAgICAgICAgcmV0dXJuIF90
cnVuY2F0ZV9leHBsYW5hdGlvbihleHBsYW5hdGlvbikKLSAgICByZXR1cm4gZXhwbGFuYXRpb24K
LQotCi1kZWYgX3Nob3VsZF90cnVuY2F0ZV9pdGVtKGl0ZW0pOgotICAgICIiIgotICAgIFdoZXRo
ZXIgb3Igbm90IHRoaXMgdGVzdCBpdGVtIGlzIGVsaWdpYmxlIGZvciB0cnVuY2F0aW9uLgotICAg
ICIiIgotICAgIHZlcmJvc2UgPSBpdGVtLmNvbmZpZy5vcHRpb24udmVyYm9zZQotICAgIHJldHVy
biB2ZXJib3NlIDwgMiBhbmQgbm90IF9ydW5uaW5nX29uX2NpKCkKLQotCi1kZWYgX3J1bm5pbmdf
b25fY2koKToKLSAgICAiIiJDaGVjayBpZiB3ZSdyZSBjdXJyZW50bHkgcnVubmluZyBvbiBhIENJ
IHN5c3RlbS4iIiIKLSAgICBlbnZfdmFycyA9IFsnQ0knLCAnQlVJTERfTlVNQkVSJ10KLSAgICBy
ZXR1cm4gYW55KHZhciBpbiBvcy5lbnZpcm9uIGZvciB2YXIgaW4gZW52X3ZhcnMpCi0KLQotZGVm
IF90cnVuY2F0ZV9leHBsYW5hdGlvbihpbnB1dF9saW5lcywgbWF4X2xpbmVzPU5vbmUsIG1heF9j
aGFycz1Ob25lKToKLSAgICAiIiIKLSAgICBUcnVuY2F0ZSBnaXZlbiBsaXN0IG9mIHN0cmluZ3Mg
dGhhdCBtYWtlcyB1cCB0aGUgYXNzZXJ0aW9uIGV4cGxhbmF0aW9uLgotCi0gICAgVHJ1bmNhdGVz
IHRvIGVpdGhlciA4IGxpbmVzLCBvciA2NDAgY2hhcmFjdGVycyAtIHdoaWNoZXZlciB0aGUgaW5w
dXQgcmVhY2hlcwotICAgIGZpcnN0LiBUaGUgcmVtYWluaW5nIGxpbmVzIHdpbGwgYmUgcmVwbGFj
ZWQgYnkgYSB1c2FnZSBtZXNzYWdlLgotICAgICIiIgotCi0gICAgaWYgbWF4X2xpbmVzIGlzIE5v
bmU6Ci0gICAgICAgIG1heF9saW5lcyA9IERFRkFVTFRfTUFYX0xJTkVTCi0gICAgaWYgbWF4X2No
YXJzIGlzIE5vbmU6Ci0gICAgICAgIG1heF9jaGFycyA9IERFRkFVTFRfTUFYX0NIQVJTCi0KLSAg
ICAjIENoZWNrIGlmIHRydW5jYXRpb24gcmVxdWlyZWQKLSAgICBpbnB1dF9jaGFyX2NvdW50ID0g
bGVuKCIiLmpvaW4oaW5wdXRfbGluZXMpKQotICAgIGlmIGxlbihpbnB1dF9saW5lcykgPD0gbWF4
X2xpbmVzIGFuZCBpbnB1dF9jaGFyX2NvdW50IDw9IG1heF9jaGFyczoKLSAgICAgICAgcmV0dXJu
IGlucHV0X2xpbmVzCi0KLSAgICAjIFRydW5jYXRlIGZpcnN0IHRvIG1heF9saW5lcywgYW5kIHRo
ZW4gdHJ1bmNhdGUgdG8gbWF4X2NoYXJzIGlmIG1heF9jaGFycwotICAgICMgaXMgZXhjZWVkZWQu
Ci0gICAgdHJ1bmNhdGVkX2V4cGxhbmF0aW9uID0gaW5wdXRfbGluZXNbOm1heF9saW5lc10KLSAg
ICB0cnVuY2F0ZWRfZXhwbGFuYXRpb24gPSBfdHJ1bmNhdGVfYnlfY2hhcl9jb3VudCh0cnVuY2F0
ZWRfZXhwbGFuYXRpb24sIG1heF9jaGFycykKLQotICAgICMgQWRkIGVsbGlwc2lzIHRvIGZpbmFs
IGxpbmUKLSAgICB0cnVuY2F0ZWRfZXhwbGFuYXRpb25bLTFdID0gdHJ1bmNhdGVkX2V4cGxhbmF0
aW9uWy0xXSArICIuLi4iCi0KLSAgICAjIEFwcGVuZCB1c2VmdWwgbWVzc2FnZSB0byBleHBsYW5h
dGlvbgotICAgIHRydW5jYXRlZF9saW5lX2NvdW50ID0gbGVuKGlucHV0X2xpbmVzKSAtIGxlbih0
cnVuY2F0ZWRfZXhwbGFuYXRpb24pCi0gICAgdHJ1bmNhdGVkX2xpbmVfY291bnQgKz0gMSAgIyBB
Y2NvdW50IGZvciB0aGUgcGFydC10cnVuY2F0ZWQgZmluYWwgbGluZQotICAgIG1zZyA9ICcuLi5G
dWxsIG91dHB1dCB0cnVuY2F0ZWQnCi0gICAgaWYgdHJ1bmNhdGVkX2xpbmVfY291bnQgPT0gMToK
LSAgICAgICAgbXNnICs9ICcgKHswfSBsaW5lIGhpZGRlbiknLmZvcm1hdCh0cnVuY2F0ZWRfbGlu
ZV9jb3VudCkKLSAgICBlbHNlOgotICAgICAgICBtc2cgKz0gJyAoezB9IGxpbmVzIGhpZGRlbikn
LmZvcm1hdCh0cnVuY2F0ZWRfbGluZV9jb3VudCkKLSAgICBtc2cgKz0gIiwgezB9IiAuZm9ybWF0
KFVTQUdFX01TRykKLSAgICB0cnVuY2F0ZWRfZXhwbGFuYXRpb24uZXh0ZW5kKFsKLSAgICAgICAg
c2l4LnRleHRfdHlwZSgiIiksCi0gICAgICAgIHNpeC50ZXh0X3R5cGUobXNnKSwKLSAgICBdKQot
ICAgIHJldHVybiB0cnVuY2F0ZWRfZXhwbGFuYXRpb24KLQotCi1kZWYgX3RydW5jYXRlX2J5X2No
YXJfY291bnQoaW5wdXRfbGluZXMsIG1heF9jaGFycyk6Ci0gICAgIyBDaGVjayBpZiB0cnVuY2F0
aW9uIHJlcXVpcmVkCi0gICAgaWYgbGVuKCIiLmpvaW4oaW5wdXRfbGluZXMpKSA8PSBtYXhfY2hh
cnM6Ci0gICAgICAgIHJldHVybiBpbnB1dF9saW5lcwotCi0gICAgIyBGaW5kIHBvaW50IGF0IHdo
aWNoIGlucHV0IGxlbmd0aCBleGNlZWRzIHRvdGFsIGFsbG93ZWQgbGVuZ3RoCi0gICAgaXRlcmF0
ZWRfY2hhcl9jb3VudCA9IDAKLSAgICBmb3IgaXRlcmF0ZWRfaW5kZXgsIGlucHV0X2xpbmUgaW4g
ZW51bWVyYXRlKGlucHV0X2xpbmVzKToKLSAgICAgICAgaWYgaXRlcmF0ZWRfY2hhcl9jb3VudCAr
IGxlbihpbnB1dF9saW5lKSA+IG1heF9jaGFyczoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
IGl0ZXJhdGVkX2NoYXJfY291bnQgKz0gbGVuKGlucHV0X2xpbmUpCi0KLSAgICAjIENyZWF0ZSB0
cnVuY2F0ZWQgZXhwbGFuYXRpb24gd2l0aCBtb2RpZmllZCBmaW5hbCBsaW5lCi0gICAgdHJ1bmNh
dGVkX3Jlc3VsdCA9IGlucHV0X2xpbmVzWzppdGVyYXRlZF9pbmRleF0KLSAgICBmaW5hbF9saW5l
ID0gaW5wdXRfbGluZXNbaXRlcmF0ZWRfaW5kZXhdCi0gICAgaWYgZmluYWxfbGluZToKLSAgICAg
ICAgZmluYWxfbGluZV90cnVuY2F0ZV9wb2ludCA9IG1heF9jaGFycyAtIGl0ZXJhdGVkX2NoYXJf
Y291bnQKLSAgICAgICAgZmluYWxfbGluZSA9IGZpbmFsX2xpbmVbOmZpbmFsX2xpbmVfdHJ1bmNh
dGVfcG9pbnRdCi0gICAgdHJ1bmNhdGVkX3Jlc3VsdC5hcHBlbmQoZmluYWxfbGluZSkKLSAgICBy
ZXR1cm4gdHJ1bmNhdGVkX3Jlc3VsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9h
c3NlcnRpb24vdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3V0aWwucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMWQ5OGVmMWZkZi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3V0aWwucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwzMDggKzAsMCBAQAotIiIiVXRpbGl0aWVzIGZvciBhc3NlcnRpb24gZGVidWdnaW5n
IiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCi1pbXBvcnQgcHByaW50Ci0KLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBv
cnQgcHkKLWltcG9ydCBzaXgKLXRyeToKLSAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTZXF1
ZW5jZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIFNlcXVlbmNlID0gbGlzdAotCi0KLXUgPSBz
aXgudGV4dF90eXBlCi0KLSMgVGhlIF9yZXByY29tcGFyZSBhdHRyaWJ1dGUgb24gdGhlIHV0aWwg
bW9kdWxlIGlzIHVzZWQgYnkgdGhlIG5ldyBhc3NlcnRpb24KLSMgaW50ZXJwcmV0YXRpb24gY29k
ZSBhbmQgYXNzZXJ0aW9uIHJld3JpdGVyIHRvIGRldGVjdCB0aGlzIHBsdWdpbiB3YXMKLSMgbG9h
ZGVkIGFuZCBpbiB0dXJuIGNhbGwgdGhlIGhvb2tzIGRlZmluZWQgaGVyZSBhcyBwYXJ0IG9mIHRo
ZQotIyBEZWJ1Z0ludGVycHJldGVyLgotX3JlcHJjb21wYXJlID0gTm9uZQotCi0KLSMgdGhlIHJl
LWVuY29kaW5nIGlzIG5lZWRlZCBmb3IgcHl0aG9uMiByZXByCi0jIHdpdGggbm9uLWFzY2lpIGNo
YXJhY3RlcnMgKHNlZSBpc3N1ZSA4NzcgYW5kIDEzNzkpCi1kZWYgZWN1KHMpOgotICAgIHRyeToK
LSAgICAgICAgcmV0dXJuIHUocywgJ3V0Zi04JywgJ3JlcGxhY2UnKQotICAgIGV4Y2VwdCBUeXBl
RXJyb3I6Ci0gICAgICAgIHJldHVybiBzCi0KLQotZGVmIGZvcm1hdF9leHBsYW5hdGlvbihleHBs
YW5hdGlvbik6Ci0gICAgIiIiVGhpcyBmb3JtYXRzIGFuIGV4cGxhbmF0aW9uCi0KLSAgICBOb3Jt
YWxseSBhbGwgZW1iZWRkZWQgbmV3bGluZXMgYXJlIGVzY2FwZWQsIGhvd2V2ZXIgdGhlcmUgYXJl
Ci0gICAgdGhyZWUgZXhjZXB0aW9uczogXG57LCBcbn0gYW5kIFxufi4gIFRoZSBmaXJzdCB0d28g
YXJlIGludGVuZGVkCi0gICAgY292ZXIgbmVzdGVkIGV4cGxhbmF0aW9ucywgc2VlIGZ1bmN0aW9u
IGFuZCBhdHRyaWJ1dGUgZXhwbGFuYXRpb25zCi0gICAgZm9yIGV4YW1wbGVzICgudmlzaXRfQ2Fs
bCgpLCB2aXNpdF9BdHRyaWJ1dGUoKSkuICBUaGUgbGFzdCBvbmUgaXMKLSAgICBmb3Igd2hlbiBv
bmUgZXhwbGFuYXRpb24gbmVlZHMgdG8gc3BhbiBtdWx0aXBsZSBsaW5lcywgZS5nLiB3aGVuCi0g
ICAgZGlzcGxheWluZyBkaWZmcy4KLSAgICAiIiIKLSAgICBleHBsYW5hdGlvbiA9IGVjdShleHBs
YW5hdGlvbikKLSAgICBsaW5lcyA9IF9zcGxpdF9leHBsYW5hdGlvbihleHBsYW5hdGlvbikKLSAg
ICByZXN1bHQgPSBfZm9ybWF0X2xpbmVzKGxpbmVzKQotICAgIHJldHVybiB1KCdcbicpLmpvaW4o
cmVzdWx0KQotCi0KLWRlZiBfc3BsaXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pOgotICAgICIi
IlJldHVybiBhIGxpc3Qgb2YgaW5kaXZpZHVhbCBsaW5lcyBpbiB0aGUgZXhwbGFuYXRpb24KLQot
ICAgIFRoaXMgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGxpbmVzIHNwbGl0IG9uICdcbnsnLCAnXG59
JyBhbmQgJ1xuficuCi0gICAgQW55IG90aGVyIG5ld2xpbmVzIHdpbGwgYmUgZXNjYXBlZCBhbmQg
YXBwZWFyIGluIHRoZSBsaW5lIGFzIHRoZQotICAgIGxpdGVyYWwgJ1xuJyBjaGFyYWN0ZXJzLgot
ICAgICIiIgotICAgIHJhd19saW5lcyA9IChleHBsYW5hdGlvbiBvciB1KCcnKSkuc3BsaXQoJ1xu
JykKLSAgICBsaW5lcyA9IFtyYXdfbGluZXNbMF1dCi0gICAgZm9yIHZhbHVlcyBpbiByYXdfbGlu
ZXNbMTpdOgotICAgICAgICBpZiB2YWx1ZXMgYW5kIHZhbHVlc1swXSBpbiBbJ3snLCAnfScsICd+
JywgJz4nXToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCh2YWx1ZXMpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBsaW5lc1stMV0gKz0gJ1xcbicgKyB2YWx1ZXMKLSAgICByZXR1cm4gbGlu
ZXMKLQotCi1kZWYgX2Zvcm1hdF9saW5lcyhsaW5lcyk6Ci0gICAgIiIiRm9ybWF0IHRoZSBpbmRp
dmlkdWFsIGxpbmVzCi0KLSAgICBUaGlzIHdpbGwgcmVwbGFjZSB0aGUgJ3snLCAnfScgYW5kICd+
JyBjaGFyYWN0ZXJzIG9mIG91ciBtaW5pCi0gICAgZm9ybWF0dGluZyBsYW5ndWFnZSB3aXRoIHRo
ZSBwcm9wZXIgJ3doZXJlIC4uLicsICdhbmQgLi4uJyBhbmQgJyArCi0gICAgLi4uJyB0ZXh0LCB0
YWtpbmcgY2FyZSBvZiBpbmRlbnRhdGlvbiBhbG9uZyB0aGUgd2F5LgotCi0gICAgUmV0dXJuIGEg
bGlzdCBvZiBmb3JtYXR0ZWQgbGluZXMuCi0gICAgIiIiCi0gICAgcmVzdWx0ID0gbGluZXNbOjFd
Ci0gICAgc3RhY2sgPSBbMF0KLSAgICBzdGFja2NudCA9IFswXQotICAgIGZvciBsaW5lIGluIGxp
bmVzWzE6XToKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCd7Jyk6Ci0gICAgICAgICAgICBp
ZiBzdGFja2NudFstMV06Ci0gICAgICAgICAgICAgICAgcyA9IHUoJ2FuZCAgICcpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHMgPSB1KCd3aGVyZSAnKQotICAgICAgICAgICAg
c3RhY2suYXBwZW5kKGxlbihyZXN1bHQpKQotICAgICAgICAgICAgc3RhY2tjbnRbLTFdICs9IDEK
LSAgICAgICAgICAgIHN0YWNrY250LmFwcGVuZCgwKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCh1KCcgKycpICsgdSgnICAnKSAqIChsZW4oc3RhY2spIC0gMSkgKyBzICsgbGluZVsxOl0pCi0g
ICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCd9Jyk6Ci0gICAgICAgICAgICBzdGFjay5wb3Ao
KQotICAgICAgICAgICAgc3RhY2tjbnQucG9wKCkKLSAgICAgICAgICAgIHJlc3VsdFtzdGFja1st
MV1dICs9IGxpbmVbMTpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgbGluZVsw
XSBpbiBbJ34nLCAnPiddCi0gICAgICAgICAgICBzdGFja1stMV0gKz0gMQotICAgICAgICAgICAg
aW5kZW50ID0gbGVuKHN0YWNrKSBpZiBsaW5lLnN0YXJ0c3dpdGgoJ34nKSBlbHNlIGxlbihzdGFj
aykgLSAxCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUoJyAgJykgKiBpbmRlbnQgKyBsaW5l
WzE6XSkKLSAgICBhc3NlcnQgbGVuKHN0YWNrKSA9PSAxCi0gICAgcmV0dXJuIHJlc3VsdAotCi0K
LSMgUHJvdmlkZSBiYXNlc3RyaW5nIGluIHB5dGhvbjMKLXRyeToKLSAgICBiYXNlc3RyaW5nID0g
YmFzZXN0cmluZwotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBiYXNlc3RyaW5nID0gc3RyCi0KLQot
ZGVmIGFzc2VydHJlcHJfY29tcGFyZShjb25maWcsIG9wLCBsZWZ0LCByaWdodCk6Ci0gICAgIiIi
UmV0dXJuIHNwZWNpYWxpc2VkIGV4cGxhbmF0aW9ucyBmb3Igc29tZSBvcGVyYXRvcnMvb3BlcmFu
ZHMiIiIKLSAgICB3aWR0aCA9IDgwIC0gMTUgLSBsZW4ob3ApIC0gMiAgIyAxNSBjaGFycyBpbmRl
bnRhdGlvbiwgMSBzcGFjZSBhcm91bmQgb3AKLSAgICBsZWZ0X3JlcHIgPSBweS5pby5zYWZlcmVw
cihsZWZ0LCBtYXhzaXplPWludCh3aWR0aCAvLyAyKSkKLSAgICByaWdodF9yZXByID0gcHkuaW8u
c2FmZXJlcHIocmlnaHQsIG1heHNpemU9d2lkdGggLSBsZW4obGVmdF9yZXByKSkKLQotICAgIHN1
bW1hcnkgPSB1KCclcyAlcyAlcycpICUgKGVjdShsZWZ0X3JlcHIpLCBvcCwgZWN1KHJpZ2h0X3Jl
cHIpKQotCi0gICAgZGVmIGlzc2VxdWVuY2UoeCk6Ci0gICAgICAgIHJldHVybiAoaXNpbnN0YW5j
ZSh4LCAobGlzdCwgdHVwbGUsIFNlcXVlbmNlKSkgYW5kIG5vdCBpc2luc3RhbmNlKHgsIGJhc2Vz
dHJpbmcpKQotCi0gICAgZGVmIGlzdGV4dCh4KToKLSAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uo
eCwgYmFzZXN0cmluZykKLQotICAgIGRlZiBpc2RpY3QoeCk6Ci0gICAgICAgIHJldHVybiBpc2lu
c3RhbmNlKHgsIGRpY3QpCi0KLSAgICBkZWYgaXNzZXQoeCk6Ci0gICAgICAgIHJldHVybiBpc2lu
c3RhbmNlKHgsIChzZXQsIGZyb3plbnNldCkpCi0KLSAgICBkZWYgaXNpdGVyYWJsZShvYmopOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpdGVyKG9iaikKLSAgICAgICAgICAgIHJldHVybiBu
b3QgaXN0ZXh0KG9iaikKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCi0gICAgdmVyYm9zZSA9IGNvbmZpZy5nZXRvcHRpb24oJ3ZlcmJvc2UnKQot
ICAgIGV4cGxhbmF0aW9uID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgaWYgb3AgPT0gJz09JzoK
LSAgICAgICAgICAgIGlmIGlzdGV4dChsZWZ0KSBhbmQgaXN0ZXh0KHJpZ2h0KToKLSAgICAgICAg
ICAgICAgICBleHBsYW5hdGlvbiA9IF9kaWZmX3RleHQobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzc2VxdWVuY2UobGVmdCkgYW5k
IGlzc2VxdWVuY2UocmlnaHQpOgotICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IF9j
b21wYXJlX2VxX3NlcXVlbmNlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAg
IGVsaWYgaXNzZXQobGVmdCkgYW5kIGlzc2V0KHJpZ2h0KToKLSAgICAgICAgICAgICAgICAgICAg
ZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXQobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgZWxpZiBpc2RpY3QobGVmdCkgYW5kIGlzZGljdChyaWdodCk6Ci0gICAgICAg
ICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2NvbXBhcmVfZXFfZGljdChsZWZ0LCByaWdodCwg
dmVyYm9zZSkKLSAgICAgICAgICAgICAgICBpZiBpc2l0ZXJhYmxlKGxlZnQpIGFuZCBpc2l0ZXJh
YmxlKHJpZ2h0KToKLSAgICAgICAgICAgICAgICAgICAgZXhwbCA9IF9jb21wYXJlX2VxX2l0ZXJh
YmxlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBpZiBleHBsYW5h
dGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uLmV4
dGVuZChleHBsKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwbGFuYXRpb24gPSBleHBsCi0gICAgICAgIGVsaWYgb3AgPT0gJ25vdCBpbic6Ci0g
ICAgICAgICAgICBpZiBpc3RleHQobGVmdCkgYW5kIGlzdGV4dChyaWdodCk6Ci0gICAgICAgICAg
ICAgICAgZXhwbGFuYXRpb24gPSBfbm90aW5fdGV4dChsZWZ0LCByaWdodCwgdmVyYm9zZSkKLSAg
ICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBleHBsYW5hdGlvbiA9IFsKLSAgICAgICAgICAg
IHUoJyhweXRlc3RfYXNzZXJ0aW9uIHBsdWdpbjogcmVwcmVzZW50YXRpb24gb2YgZGV0YWlscyBm
YWlsZWQuICAnCi0gICAgICAgICAgICAgICdQcm9iYWJseSBhbiBvYmplY3QgaGFzIGEgZmF1bHR5
IF9fcmVwcl9fLiknKSwKLSAgICAgICAgICAgIHUoX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZv
KCkpXQotCi0gICAgaWYgbm90IGV4cGxhbmF0aW9uOgotICAgICAgICByZXR1cm4gTm9uZQotCi0g
ICAgcmV0dXJuIFtzdW1tYXJ5XSArIGV4cGxhbmF0aW9uCi0KLQotZGVmIF9kaWZmX3RleHQobGVm
dCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgotICAgICIiIlJldHVybiB0aGUgZXhwbGFuYXRpb24g
Zm9yIHRoZSBkaWZmIGJldHdlZW4gdGV4dCBvciBieXRlcwotCi0gICAgVW5sZXNzIC0tdmVyYm9z
ZSBpcyB1c2VkIHRoaXMgd2lsbCBza2lwIGxlYWRpbmcgYW5kIHRyYWlsaW5nCi0gICAgY2hhcmFj
dGVycyB3aGljaCBhcmUgaWRlbnRpY2FsIHRvIGtlZXAgdGhlIGRpZmYgbWluaW1hbC4KLQotICAg
IElmIHRoZSBpbnB1dCBhcmUgYnl0ZXMgdGhleSB3aWxsIGJlIHNhZmVseSBjb252ZXJ0ZWQgdG8g
dGV4dC4KLSAgICAiIiIKLSAgICBmcm9tIGRpZmZsaWIgaW1wb3J0IG5kaWZmCi0gICAgZXhwbGFu
YXRpb24gPSBbXQotICAgIGlmIGlzaW5zdGFuY2UobGVmdCwgc2l4LmJpbmFyeV90eXBlKToKLSAg
ICAgICAgbGVmdCA9IHUocmVwcihsZWZ0KVsxOi0xXSkucmVwbGFjZShyJ1xuJywgJ1xuJykKLSAg
ICBpZiBpc2luc3RhbmNlKHJpZ2h0LCBzaXguYmluYXJ5X3R5cGUpOgotICAgICAgICByaWdodCA9
IHUocmVwcihyaWdodClbMTotMV0pLnJlcGxhY2UocidcbicsICdcbicpCi0gICAgaWYgbm90IHZl
cmJvc2U6Ci0gICAgICAgIGkgPSAwICAjIGp1c3QgaW4gY2FzZSBsZWZ0IG9yIHJpZ2h0IGhhcyB6
ZXJvIGxlbmd0aAotICAgICAgICBmb3IgaSBpbiByYW5nZShtaW4obGVuKGxlZnQpLCBsZW4ocmln
aHQpKSk6Ci0gICAgICAgICAgICBpZiBsZWZ0W2ldICE9IHJpZ2h0W2ldOgotICAgICAgICAgICAg
ICAgIGJyZWFrCi0gICAgICAgIGlmIGkgPiA0MjoKLSAgICAgICAgICAgIGkgLT0gMTAgICAgICAg
ICAgICAgICAgICMgUHJvdmlkZSBzb21lIGNvbnRleHQKLSAgICAgICAgICAgIGV4cGxhbmF0aW9u
ID0gW3UoJ1NraXBwaW5nICVzIGlkZW50aWNhbCBsZWFkaW5nICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2NoYXJhY3RlcnMgaW4gZGlmZiwgdXNlIC12IHRvIHNob3cnKSAlIGldCi0g
ICAgICAgICAgICBsZWZ0ID0gbGVmdFtpOl0KLSAgICAgICAgICAgIHJpZ2h0ID0gcmlnaHRbaTpd
Ci0gICAgICAgIGlmIGxlbihsZWZ0KSA9PSBsZW4ocmlnaHQpOgotICAgICAgICAgICAgZm9yIGkg
aW4gcmFuZ2UobGVuKGxlZnQpKToKLSAgICAgICAgICAgICAgICBpZiBsZWZ0Wy1pXSAhPSByaWdo
dFstaV06Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBpID4gNDI6
Ci0gICAgICAgICAgICAgICAgaSAtPSAxMCAgICAgIyBQcm92aWRlIHNvbWUgY29udGV4dAotICAg
ICAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFt1KCdTa2lwcGluZyAlcyBpZGVudGljYWwgdHJh
aWxpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGlu
IGRpZmYsIHVzZSAtdiB0byBzaG93JykgJSBpXQotICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0
WzotaV0KLSAgICAgICAgICAgICAgICByaWdodCA9IHJpZ2h0WzotaV0KLSAgICBrZWVwZW5kcyA9
IFRydWUKLSAgICBleHBsYW5hdGlvbiArPSBbbGluZS5zdHJpcCgnXG4nKQotICAgICAgICAgICAg
ICAgICAgICBmb3IgbGluZSBpbiBuZGlmZihsZWZ0LnNwbGl0bGluZXMoa2VlcGVuZHMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodC5zcGxpdGxpbmVzKGtlZXBl
bmRzKSldCi0gICAgcmV0dXJuIGV4cGxhbmF0aW9uCi0KLQotZGVmIF9jb21wYXJlX2VxX2l0ZXJh
YmxlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICBpZiBub3QgdmVyYm9zZToKLSAg
ICAgICAgcmV0dXJuIFt1KCdVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYnKV0KLSAgICAjIGR5
bmFtaWMgaW1wb3J0IHRvIHNwZWVkdXAgcHl0ZXN0Ci0gICAgaW1wb3J0IGRpZmZsaWIKLQotICAg
IHRyeToKLSAgICAgICAgbGVmdF9mb3JtYXR0aW5nID0gcHByaW50LnBmb3JtYXQobGVmdCkuc3Bs
aXRsaW5lcygpCi0gICAgICAgIHJpZ2h0X2Zvcm1hdHRpbmcgPSBwcHJpbnQucGZvcm1hdChyaWdo
dCkuc3BsaXRsaW5lcygpCi0gICAgICAgIGV4cGxhbmF0aW9uID0gW3UoJ0Z1bGwgZGlmZjonKV0K
LSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAjIGhhY2s6IFByZXR0eVByaW50ZXIucGZv
cm1hdCgpIGluIHB5dGhvbiAyIGZhaWxzIHdoZW4gZm9ybWF0dGluZyBpdGVtcyB0aGF0IGNhbid0
IGJlIHNvcnRlZCgpLCBpZSwgY2FsbGluZwotICAgICAgICAjIHNvcnRlZCgpIG9uIGEgbGlzdCB3
b3VsZCByYWlzZS4gU2VlIGlzc3VlICM3MTguCi0gICAgICAgICMgQXMgYSB3b3JrYXJvdW5kLCB0
aGUgZnVsbCBkaWZmIGlzIGdlbmVyYXRlZCBieSB1c2luZyB0aGUgcmVwcigpIHN0cmluZyBvZiBl
YWNoIGl0ZW0gb2YgZWFjaCBjb250YWluZXIuCi0gICAgICAgIGxlZnRfZm9ybWF0dGluZyA9IHNv
cnRlZChyZXByKHgpIGZvciB4IGluIGxlZnQpCi0gICAgICAgIHJpZ2h0X2Zvcm1hdHRpbmcgPSBz
b3J0ZWQocmVwcih4KSBmb3IgeCBpbiByaWdodCkKLSAgICAgICAgZXhwbGFuYXRpb24gPSBbdSgn
RnVsbCBkaWZmIChmYWxsYmFjayB0byBjYWxsaW5nIHJlcHIgb24gZWFjaCBpdGVtKTonKV0KLSAg
ICBleHBsYW5hdGlvbi5leHRlbmQobGluZS5zdHJpcCgpIGZvciBsaW5lIGluIGRpZmZsaWIubmRp
ZmYobGVmdF9mb3JtYXR0aW5nLCByaWdodF9mb3JtYXR0aW5nKSkKLSAgICByZXR1cm4gZXhwbGFu
YXRpb24KLQotCi1kZWYgX2NvbXBhcmVfZXFfc2VxdWVuY2UobGVmdCwgcmlnaHQsIHZlcmJvc2U9
RmFsc2UpOgotICAgIGV4cGxhbmF0aW9uID0gW10KLSAgICBmb3IgaSBpbiByYW5nZShtaW4obGVu
KGxlZnQpLCBsZW4ocmlnaHQpKSk6Ci0gICAgICAgIGlmIGxlZnRbaV0gIT0gcmlnaHRbaV06Ci0g
ICAgICAgICAgICBleHBsYW5hdGlvbiArPSBbdSgnQXQgaW5kZXggJXMgZGlmZjogJXIgIT0gJXIn
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGksIGxlZnRbaV0sIHJpZ2h0W2ldKV0K
LSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYgbGVuKGxlZnQpID4gbGVuKHJpZ2h0KToKLSAgICAg
ICAgZXhwbGFuYXRpb24gKz0gW3UoJ0xlZnQgY29udGFpbnMgbW9yZSBpdGVtcywgZmlyc3QgZXh0
cmEgaXRlbTogJXMnKQotICAgICAgICAgICAgICAgICAgICAgICAgJSBweS5pby5zYWZlcmVwcihs
ZWZ0W2xlbihyaWdodCldLCldCi0gICAgZWxpZiBsZW4obGVmdCkgPCBsZW4ocmlnaHQpOgotICAg
ICAgICBleHBsYW5hdGlvbiArPSBbCi0gICAgICAgICAgICB1KCdSaWdodCBjb250YWlucyBtb3Jl
IGl0ZW1zLCBmaXJzdCBleHRyYSBpdGVtOiAlcycpICUKLSAgICAgICAgICAgIHB5LmlvLnNhZmVy
ZXByKHJpZ2h0W2xlbihsZWZ0KV0sKV0KLSAgICByZXR1cm4gZXhwbGFuYXRpb24KLQotCi1kZWYg
X2NvbXBhcmVfZXFfc2V0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICBleHBsYW5h
dGlvbiA9IFtdCi0gICAgZGlmZl9sZWZ0ID0gbGVmdCAtIHJpZ2h0Ci0gICAgZGlmZl9yaWdodCA9
IHJpZ2h0IC0gbGVmdAotICAgIGlmIGRpZmZfbGVmdDoKLSAgICAgICAgZXhwbGFuYXRpb24uYXBw
ZW5kKHUoJ0V4dHJhIGl0ZW1zIGluIHRoZSBsZWZ0IHNldDonKSkKLSAgICAgICAgZm9yIGl0ZW0g
aW4gZGlmZl9sZWZ0OgotICAgICAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHB5LmlvLnNhZmVy
ZXByKGl0ZW0pKQotICAgIGlmIGRpZmZfcmlnaHQ6Ci0gICAgICAgIGV4cGxhbmF0aW9uLmFwcGVu
ZCh1KCdFeHRyYSBpdGVtcyBpbiB0aGUgcmlnaHQgc2V0OicpKQotICAgICAgICBmb3IgaXRlbSBp
biBkaWZmX3JpZ2h0OgotICAgICAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHB5LmlvLnNhZmVy
ZXByKGl0ZW0pKQotICAgIHJldHVybiBleHBsYW5hdGlvbgotCi0KLWRlZiBfY29tcGFyZV9lcV9k
aWN0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICBleHBsYW5hdGlvbiA9IFtdCi0g
ICAgY29tbW9uID0gc2V0KGxlZnQpLmludGVyc2VjdGlvbihzZXQocmlnaHQpKQotICAgIHNhbWUg
PSBkaWN0KChrLCBsZWZ0W2tdKSBmb3IgayBpbiBjb21tb24gaWYgbGVmdFtrXSA9PSByaWdodFtr
XSkKLSAgICBpZiBzYW1lIGFuZCB2ZXJib3NlIDwgMjoKLSAgICAgICAgZXhwbGFuYXRpb24gKz0g
W3UoJ09taXR0aW5nICVzIGlkZW50aWNhbCBpdGVtcywgdXNlIC12diB0byBzaG93JykgJQotICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuKHNhbWUpXQotICAgIGVsaWYgc2FtZToKLSAgICAgICAg
ZXhwbGFuYXRpb24gKz0gW3UoJ0NvbW1vbiBpdGVtczonKV0KLSAgICAgICAgZXhwbGFuYXRpb24g
Kz0gcHByaW50LnBmb3JtYXQoc2FtZSkuc3BsaXRsaW5lcygpCi0gICAgZGlmZiA9IHNldChrIGZv
ciBrIGluIGNvbW1vbiBpZiBsZWZ0W2tdICE9IHJpZ2h0W2tdKQotICAgIGlmIGRpZmY6Ci0gICAg
ICAgIGV4cGxhbmF0aW9uICs9IFt1KCdEaWZmZXJpbmcgaXRlbXM6JyldCi0gICAgICAgIGZvciBr
IGluIGRpZmY6Ci0gICAgICAgICAgICBleHBsYW5hdGlvbiArPSBbcHkuaW8uc2FmZXJlcHIoe2s6
IGxlZnRba119KSArICcgIT0gJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHkuaW8u
c2FmZXJlcHIoe2s6IHJpZ2h0W2tdfSldCi0gICAgZXh0cmFfbGVmdCA9IHNldChsZWZ0KSAtIHNl
dChyaWdodCkKLSAgICBpZiBleHRyYV9sZWZ0OgotICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQo
dSgnTGVmdCBjb250YWlucyBtb3JlIGl0ZW1zOicpKQotICAgICAgICBleHBsYW5hdGlvbi5leHRl
bmQocHByaW50LnBmb3JtYXQoCi0gICAgICAgICAgICBkaWN0KChrLCBsZWZ0W2tdKSBmb3IgayBp
biBleHRyYV9sZWZ0KSkuc3BsaXRsaW5lcygpKQotICAgIGV4dHJhX3JpZ2h0ID0gc2V0KHJpZ2h0
KSAtIHNldChsZWZ0KQotICAgIGlmIGV4dHJhX3JpZ2h0OgotICAgICAgICBleHBsYW5hdGlvbi5h
cHBlbmQodSgnUmlnaHQgY29udGFpbnMgbW9yZSBpdGVtczonKSkKLSAgICAgICAgZXhwbGFuYXRp
b24uZXh0ZW5kKHBwcmludC5wZm9ybWF0KAotICAgICAgICAgICAgZGljdCgoaywgcmlnaHRba10p
IGZvciBrIGluIGV4dHJhX3JpZ2h0KSkuc3BsaXRsaW5lcygpKQotICAgIHJldHVybiBleHBsYW5h
dGlvbgotCi0KLWRlZiBfbm90aW5fdGV4dCh0ZXJtLCB0ZXh0LCB2ZXJib3NlPUZhbHNlKToKLSAg
ICBpbmRleCA9IHRleHQuZmluZCh0ZXJtKQotICAgIGhlYWQgPSB0ZXh0WzppbmRleF0KLSAgICB0
YWlsID0gdGV4dFtpbmRleCArIGxlbih0ZXJtKTpdCi0gICAgY29ycmVjdF90ZXh0ID0gaGVhZCAr
IHRhaWwKLSAgICBkaWZmID0gX2RpZmZfdGV4dChjb3JyZWN0X3RleHQsIHRleHQsIHZlcmJvc2Up
Ci0gICAgbmV3ZGlmZiA9IFt1KCclcyBpcyBjb250YWluZWQgaGVyZTonKSAlIHB5LmlvLnNhZmVy
ZXByKHRlcm0sIG1heHNpemU9NDIpXQotICAgIGZvciBsaW5lIGluIGRpZmY6Ci0gICAgICAgIGlm
IGxpbmUuc3RhcnRzd2l0aCh1KCdTa2lwcGluZycpKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCh1KCctICcpKToKLSAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCh1KCcrICcpKToKLSAgICAgICAgICAgIG5ld2Rp
ZmYuYXBwZW5kKHUoJyAgJykgKyBsaW5lWzI6XSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IG5ld2RpZmYuYXBwZW5kKGxpbmUpCi0gICAgcmV0dXJuIG5ld2RpZmYKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQxMzA3ZDNhYmM3Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9yZXdyaXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlv
bi91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NhY2hlcHJvdmlkZXIu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM1MzdjMTQ0NzJiMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvY2FjaGVwcm92aWRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2MCArMCww
IEBACi0iIiIKLW1lcmdlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY2FjaGUgcHJvdmlkZXIKLQot
dGhlIG5hbWUgY2FjaGUgd2FzIG5vdCBjaG9zZW4gdG8gZW5zdXJlIHBsdWdneSBhdXRvbWF0aWNh
bGx5Ci1pZ25vcmVzIHRoZSBleHRlcm5hbCBweXRlc3QtY2FjaGUKLSIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1w
b3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1mcm9tIG9zLnBh
dGggaW1wb3J0IHNlcCBhcyBfc2VwLCBhbHRzZXAgYXMgX2FsdHNlcAotCi0KLWNsYXNzIENhY2hl
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgIHNlbGYu
Y29uZmlnID0gY29uZmlnCi0gICAgICAgIHNlbGYuX2NhY2hlZGlyID0gQ2FjaGUuY2FjaGVfZGly
X2Zyb21fY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5y
b290LmdldCgiY2FjaGUiKQotICAgICAgICBpZiBjb25maWcuZ2V0dmFsdWUoImNhY2hlY2xlYXIi
KToKLSAgICAgICAgICAgIHNlbGYudHJhY2UoImNsZWFyaW5nIGNhY2hlZGlyIikKLSAgICAgICAg
ICAgIGlmIHNlbGYuX2NhY2hlZGlyLmNoZWNrKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2Fj
aGVkaXIucmVtb3ZlKCkKLSAgICAgICAgICAgIHNlbGYuX2NhY2hlZGlyLm1rZGlyKCkKLQotICAg
IEBzdGF0aWNtZXRob2QKLSAgICBkZWYgY2FjaGVfZGlyX2Zyb21fY29uZmlnKGNvbmZpZyk6Ci0g
ICAgICAgIGNhY2hlX2RpciA9IGNvbmZpZy5nZXRpbmkoImNhY2hlX2RpciIpCi0gICAgICAgIGNh
Y2hlX2RpciA9IG9zLnBhdGguZXhwYW5kdXNlcihjYWNoZV9kaXIpCi0gICAgICAgIGNhY2hlX2Rp
ciA9IG9zLnBhdGguZXhwYW5kdmFycyhjYWNoZV9kaXIpCi0gICAgICAgIGlmIG9zLnBhdGguaXNh
YnMoY2FjaGVfZGlyKToKLSAgICAgICAgICAgIHJldHVybiBweS5wYXRoLmxvY2FsKGNhY2hlX2Rp
cikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBjb25maWcucm9vdGRpci5qb2lu
KGNhY2hlX2RpcikKLQotICAgIGRlZiBtYWtlZGlyKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiIg
cmV0dXJuIGEgZGlyZWN0b3J5IHBhdGggb2JqZWN0IHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiB0
aGUKLSAgICAgICAgZGlyZWN0b3J5IGRvZXMgbm90IHlldCBleGlzdCwgaXQgd2lsbCBiZSBjcmVh
dGVkLiAgWW91IGNhbiB1c2UgaXQKLSAgICAgICAgdG8gbWFuYWdlIGZpbGVzIGxpa2VzIGUuIGcu
IHN0b3JlL3JldHJpZXZlIGRhdGFiYXNlCi0gICAgICAgIGR1bXBzIGFjcm9zcyB0ZXN0IHNlc3Np
b25zLgotCi0gICAgICAgIDpwYXJhbSBuYW1lOiBtdXN0IGJlIGEgc3RyaW5nIG5vdCBjb250YWlu
aW5nIGEgYGAvYGAgc2VwYXJhdG9yLgotICAgICAgICAgICAgIE1ha2Ugc3VyZSB0aGUgbmFtZSBj
b250YWlucyB5b3VyIHBsdWdpbiBvciBhcHBsaWNhdGlvbgotICAgICAgICAgICAgIGlkZW50aWZp
ZXJzIHRvIHByZXZlbnQgY2xhc2hlcyB3aXRoIG90aGVyIGNhY2hlIHVzZXJzLgotICAgICAgICAi
IiIKLSAgICAgICAgaWYgX3NlcCBpbiBuYW1lIG9yIF9hbHRzZXAgaXMgbm90IE5vbmUgYW5kIF9h
bHRzZXAgaW4gbmFtZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5hbWUgaXMgbm90
IGFsbG93ZWQgdG8gY29udGFpbiBwYXRoIHNlcGFyYXRvcnMiKQotICAgICAgICByZXR1cm4gc2Vs
Zi5fY2FjaGVkaXIuZW5zdXJlX2RpcigiZCIsIG5hbWUpCi0KLSAgICBkZWYgX2dldHZhbHVlcGF0
aChzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkaXIuam9pbigndicsICpr
ZXkuc3BsaXQoJy8nKSkKLQotICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0KToKLSAgICAg
ICAgIiIiIHJldHVybiBjYWNoZWQgdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkuICBJZiBubyB2YWx1
ZQotICAgICAgICB3YXMgeWV0IGNhY2hlZCBvciB0aGUgdmFsdWUgY2Fubm90IGJlIHJlYWQsIHRo
ZSBzcGVjaWZpZWQKLSAgICAgICAgZGVmYXVsdCBpcyByZXR1cm5lZC4KLQotICAgICAgICA6cGFy
YW0ga2V5OiBtdXN0IGJlIGEgYGAvYGAgc2VwYXJhdGVkIHZhbHVlLiBVc3VhbGx5IHRoZSBmaXJz
dAotICAgICAgICAgICAgIG5hbWUgaXMgdGhlIG5hbWUgb2YgeW91ciBwbHVnaW4gb3IgeW91ciBh
cHBsaWNhdGlvbi4KLSAgICAgICAgOnBhcmFtIGRlZmF1bHQ6IG11c3QgYmUgcHJvdmlkZWQgaW4g
Y2FzZSBvZiBhIGNhY2hlLW1pc3Mgb3IKLSAgICAgICAgICAgICBpbnZhbGlkIGNhY2hlIHZhbHVl
cy4KLQotICAgICAgICAiIiIKLSAgICAgICAgcGF0aCA9IHNlbGYuX2dldHZhbHVlcGF0aChrZXkp
Ci0gICAgICAgIGlmIHBhdGguY2hlY2soKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICB3aXRoIHBhdGgub3BlbigiciIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBqc29uLmxvYWQoZikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAg
ICAgICAgIHNlbGYudHJhY2UoImNhY2hlLWludmFsaWQgYXQgJXMiICUgKHBhdGgsKSkKLSAgICAg
ICAgcmV0dXJuIGRlZmF1bHQKLQotICAgIGRlZiBzZXQoc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAg
ICAgICIiIiBzYXZlIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LgotCi0gICAgICAgIDpwYXJhbSBr
ZXk6IG11c3QgYmUgYSBgYC9gYCBzZXBhcmF0ZWQgdmFsdWUuIFVzdWFsbHkgdGhlIGZpcnN0Ci0g
ICAgICAgICAgICAgbmFtZSBpcyB0aGUgbmFtZSBvZiB5b3VyIHBsdWdpbiBvciB5b3VyIGFwcGxp
Y2F0aW9uLgotICAgICAgICA6cGFyYW0gdmFsdWU6IG11c3QgYmUgb2YgYW55IGNvbWJpbmF0aW9u
IG9mIGJhc2ljCi0gICAgICAgICAgICAgICBweXRob24gdHlwZXMsIGluY2x1ZGluZyBuZXN0ZWQg
dHlwZXMKLSAgICAgICAgICAgICAgIGxpa2UgZS4gZy4gbGlzdHMgb2YgZGljdGlvbmFyaWVzLgot
ICAgICAgICAiIiIKLSAgICAgICAgcGF0aCA9IHNlbGYuX2dldHZhbHVlcGF0aChrZXkpCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHBhdGguZGlycGF0aCgpLmVuc3VyZV9kaXIoKQotICAgICAg
ICBleGNlcHQgKHB5LmVycm9yLkVFWElTVCwgcHkuZXJyb3IuRUFDQ0VTKToKLSAgICAgICAgICAg
IHNlbGYuY29uZmlnLndhcm4oCi0gICAgICAgICAgICAgICAgY29kZT0nSTknLCBtZXNzYWdlPSdj
b3VsZCBub3QgY3JlYXRlIGNhY2hlIHBhdGggJXMnICUgKHBhdGgsKQotICAgICAgICAgICAgKQot
ICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBwYXRoLm9w
ZW4oJ3cnKQotICAgICAgICBleGNlcHQgcHkuZXJyb3IuRU5PVERJUjoKLSAgICAgICAgICAgIHNl
bGYuY29uZmlnLndhcm4oCi0gICAgICAgICAgICAgICAgY29kZT0nSTknLCBtZXNzYWdlPSdjYWNo
ZSBjb3VsZCBub3Qgd3JpdGUgcGF0aCAlcycgJSAocGF0aCwpKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgd2l0aCBmOgotICAgICAgICAgICAgICAgIHNlbGYudHJhY2UoImNhY2hlLXdyaXRl
ICVzOiAlciIgJSAoa2V5LCB2YWx1ZSwpKQotICAgICAgICAgICAgICAgIGpzb24uZHVtcCh2YWx1
ZSwgZiwgaW5kZW50PTIsIHNvcnRfa2V5cz1UcnVlKQotCi0KLWNsYXNzIExGUGx1Z2luOgotICAg
ICIiIiBQbHVnaW4gd2hpY2ggaW1wbGVtZW50cyB0aGUgLS1sZiAocnVuIGxhc3QtZmFpbGluZykg
b3B0aW9uICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgIHNl
bGYuY29uZmlnID0gY29uZmlnCi0gICAgICAgIGFjdGl2ZV9rZXlzID0gJ2xmJywgJ2ZhaWxlZGZp
cnN0JwotICAgICAgICBzZWxmLmFjdGl2ZSA9IGFueShjb25maWcuZ2V0dmFsdWUoa2V5KSBmb3Ig
a2V5IGluIGFjdGl2ZV9rZXlzKQotICAgICAgICBzZWxmLmxhc3RmYWlsZWQgPSBjb25maWcuY2Fj
aGUuZ2V0KCJjYWNoZS9sYXN0ZmFpbGVkIiwge30pCi0gICAgICAgIHNlbGYuX3ByZXZpb3VzbHlf
ZmFpbGVkX2NvdW50ID0gTm9uZQotCi0gICAgZGVmIHB5dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZp
bmlzaChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5hY3RpdmU6Ci0gICAgICAgICAgICBpZiBub3Qg
c2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQ6Ci0gICAgICAgICAgICAgICAgbW9kZSA9ICJy
dW4gYWxsIChubyByZWNvcmRlZCBmYWlsdXJlcykiCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIG5vdW4gPSAnZmFpbHVyZScgaWYgc2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291
bnQgPT0gMSBlbHNlICdmYWlsdXJlcycKLSAgICAgICAgICAgICAgICBzdWZmaXggPSAiIGZpcnN0
IiBpZiBzZWxmLmNvbmZpZy5nZXR2YWx1ZSgiZmFpbGVkZmlyc3QiKSBlbHNlICIiCi0gICAgICAg
ICAgICAgICAgbW9kZSA9ICJyZXJ1biBwcmV2aW91cyB7Y291bnR9IHtub3VufXtzdWZmaXh9Ii5m
b3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGNvdW50PXNlbGYuX3ByZXZpb3VzbHlfZmFpbGVk
X2NvdW50LCBzdWZmaXg9c3VmZml4LCBub3VuPW5vdW4KLSAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICByZXR1cm4gInJ1bi1sYXN0LWZhaWx1cmU6ICVzIiAlIG1vZGUKLQotICAgIGRlZiBw
eXRlc3RfcnVudGVzdF9sb2dyZXBvcnQoc2VsZiwgcmVwb3J0KToKLSAgICAgICAgaWYgKHJlcG9y
dC53aGVuID09ICdjYWxsJyBhbmQgcmVwb3J0LnBhc3NlZCkgb3IgcmVwb3J0LnNraXBwZWQ6Ci0g
ICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWQucG9wKHJlcG9ydC5ub2RlaWQsIE5vbmUpCi0gICAg
ICAgIGVsaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAgIHNlbGYubGFzdGZhaWxlZFtyZXBv
cnQubm9kZWlkXSA9IFRydWUKLQotICAgIGRlZiBweXRlc3RfY29sbGVjdHJlcG9ydChzZWxmLCBy
ZXBvcnQpOgotICAgICAgICBwYXNzZWQgPSByZXBvcnQub3V0Y29tZSBpbiAoJ3Bhc3NlZCcsICdz
a2lwcGVkJykKLSAgICAgICAgaWYgcGFzc2VkOgotICAgICAgICAgICAgaWYgcmVwb3J0Lm5vZGVp
ZCBpbiBzZWxmLmxhc3RmYWlsZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkLnBv
cChyZXBvcnQubm9kZWlkKQotICAgICAgICAgICAgICAgIHNlbGYubGFzdGZhaWxlZC51cGRhdGUo
Ci0gICAgICAgICAgICAgICAgICAgIChpdGVtLm5vZGVpZCwgVHJ1ZSkKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIGl0ZW0gaW4gcmVwb3J0LnJlc3VsdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYubGFzdGZhaWxlZFtyZXBvcnQubm9kZWlkXSA9IFRydWUKLQotICAgIGRlZiBweXRl
c3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhzZWxmLCBzZXNzaW9uLCBjb25maWcsIGl0ZW1zKToK
LSAgICAgICAgaWYgc2VsZi5hY3RpdmUgYW5kIHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAg
IHByZXZpb3VzbHlfZmFpbGVkID0gW10KLSAgICAgICAgICAgIHByZXZpb3VzbHlfcGFzc2VkID0g
W10KLSAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgICAgIGlmIGl0
ZW0ubm9kZWlkIGluIHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgICAgICAgICAgcHJldmlv
dXNseV9mYWlsZWQuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgcHJldmlvdXNseV9wYXNzZWQuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICBz
ZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudCA9IGxlbihwcmV2aW91c2x5X2ZhaWxlZCkKLSAg
ICAgICAgICAgIGlmIG5vdCBwcmV2aW91c2x5X2ZhaWxlZDoKLSAgICAgICAgICAgICAgICAjIHJ1
bm5pbmcgYSBzdWJzZXQgb2YgYWxsIHRlc3RzIHdpdGggcmVjb3JkZWQgZmFpbHVyZXMgb3V0c2lk
ZQotICAgICAgICAgICAgICAgICMgb2YgdGhlIHNldCBvZiB0ZXN0cyBjdXJyZW50bHkgZXhlY3V0
aW5nCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5n
ZXR2YWx1ZSgibGYiKToKLSAgICAgICAgICAgICAgICBpdGVtc1s6XSA9IHByZXZpb3VzbHlfZmFp
bGVkCi0gICAgICAgICAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X2Rlc2VsZWN0ZWQoaXRlbXM9
cHJldmlvdXNseV9wYXNzZWQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGl0
ZW1zWzpdID0gcHJldmlvdXNseV9mYWlsZWQgKyBwcmV2aW91c2x5X3Bhc3NlZAotCi0gICAgZGVm
IHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYsIHNlc3Npb24pOgotICAgICAgICBjb25maWcgPSBz
ZWxmLmNvbmZpZwotICAgICAgICBpZiBjb25maWcuZ2V0dmFsdWUoImNhY2hlc2hvdyIpIG9yIGhh
c2F0dHIoY29uZmlnLCAic2xhdmVpbnB1dCIpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgc2F2ZWRfbGFzdGZhaWxlZCA9IGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL2xhc3RmYWlsZWQi
LCB7fSkKLSAgICAgICAgaWYgc2F2ZWRfbGFzdGZhaWxlZCAhPSBzZWxmLmxhc3RmYWlsZWQ6Ci0g
ICAgICAgICAgICBjb25maWcuY2FjaGUuc2V0KCJjYWNoZS9sYXN0ZmFpbGVkIiwgc2VsZi5sYXN0
ZmFpbGVkKQotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBw
YXJzZXIuZ2V0Z3JvdXAoImdlbmVyYWwiKQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAg
Jy0tbGYnLCAnLS1sYXN0LWZhaWxlZCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9ImxmIiwK
LSAgICAgICAgaGVscD0icmVydW4gb25seSB0aGUgdGVzdHMgdGhhdCBmYWlsZWQgIgotICAgICAg
ICAgICAgICJhdCB0aGUgbGFzdCBydW4gKG9yIGFsbCBpZiBub25lIGZhaWxlZCkiKQotICAgIGdy
b3VwLmFkZG9wdGlvbigKLSAgICAgICAgJy0tZmYnLCAnLS1mYWlsZWQtZmlyc3QnLCBhY3Rpb249
J3N0b3JlX3RydWUnLCBkZXN0PSJmYWlsZWRmaXJzdCIsCi0gICAgICAgIGhlbHA9InJ1biBhbGwg
dGVzdHMgYnV0IHJ1biB0aGUgbGFzdCBmYWlsdXJlcyBmaXJzdC4gICIKLSAgICAgICAgICAgICAi
VGhpcyBtYXkgcmUtb3JkZXIgdGVzdHMgYW5kIHRodXMgbGVhZCB0byAiCi0gICAgICAgICAgICAg
InJlcGVhdGVkIGZpeHR1cmUgc2V0dXAvdGVhcmRvd24iKQotICAgIGdyb3VwLmFkZG9wdGlvbigK
LSAgICAgICAgJy0tY2FjaGUtc2hvdycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9ImNhY2hl
c2hvdyIsCi0gICAgICAgIGhlbHA9InNob3cgY2FjaGUgY29udGVudHMsIGRvbid0IHBlcmZvcm0g
Y29sbGVjdGlvbiBvciB0ZXN0cyIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1j
YWNoZS1jbGVhcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9ImNhY2hlY2xlYXIiLAotICAg
ICAgICBoZWxwPSJyZW1vdmUgYWxsIGNhY2hlIGNvbnRlbnRzIGF0IHN0YXJ0IG9mIHRlc3QgcnVu
LiIpCi0gICAgcGFyc2VyLmFkZGluaSgKLSAgICAgICAgImNhY2hlX2RpciIsIGRlZmF1bHQ9Jy5j
YWNoZScsCi0gICAgICAgIGhlbHA9ImNhY2hlIGRpcmVjdG9yeSBwYXRoLiIpCi0KLQotZGVmIHB5
dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0aW9uLmNhY2hlc2hv
dzoKLSAgICAgICAgZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IHdyYXBfc2Vzc2lvbgotICAgICAg
ICByZXR1cm4gd3JhcF9zZXNzaW9uKGNvbmZpZywgY2FjaGVzaG93KQotCi0KLUBweXRlc3QuaG9v
a2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAg
Y29uZmlnLmNhY2hlID0gQ2FjaGUoY29uZmlnKQotICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJl
Z2lzdGVyKExGUGx1Z2luKGNvbmZpZyksICJsZnBsdWdpbiIpCi0KLQotQHB5dGVzdC5maXh0dXJl
Ci1kZWYgY2FjaGUocmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgY2FjaGUgb2JqZWN0
IHRoYXQgY2FuIHBlcnNpc3Qgc3RhdGUgYmV0d2VlbiB0ZXN0aW5nIHNlc3Npb25zLgotCi0gICAg
Y2FjaGUuZ2V0KGtleSwgZGVmYXVsdCkKLSAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSkKLQotICAg
IEtleXMgbXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZSwgd2hlcmUgdGhlIGZpcnN0IHBh
cnQgaXMgdXN1YWxseSB0aGUKLSAgICBuYW1lIG9mIHlvdXIgcGx1Z2luIG9yIGFwcGxpY2F0aW9u
IHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBvdGhlciBjYWNoZSB1c2Vycy4KLQotICAgIFZhbHVlcyBj
YW4gYmUgYW55IG9iamVjdCBoYW5kbGVkIGJ5IHRoZSBqc29uIHN0ZGxpYiBtb2R1bGUuCi0gICAg
IiIiCi0gICAgcmV0dXJuIHJlcXVlc3QuY29uZmlnLmNhY2hlCi0KLQotZGVmIHB5dGVzdF9yZXBv
cnRfaGVhZGVyKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi52ZXJib3NlOgotICAgICAg
ICByZWxwYXRoID0gcHkucGF0aC5sb2NhbCgpLmJlc3RyZWxwYXRoKGNvbmZpZy5jYWNoZS5fY2Fj
aGVkaXIpCi0gICAgICAgIHJldHVybiAiY2FjaGVkaXI6ICVzIiAlIHJlbHBhdGgKLQotCi1kZWYg
Y2FjaGVzaG93KGNvbmZpZywgc2Vzc2lvbik6Ci0gICAgZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmlu
dAotICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoKQotICAgIHR3LmxpbmUoImNhY2hlZGly
OiAiICsgc3RyKGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIpKQotICAgIGlmIG5vdCBjb25maWcuY2Fj
aGUuX2NhY2hlZGlyLmNoZWNrKCk6Ci0gICAgICAgIHR3LmxpbmUoImNhY2hlIGlzIGVtcHR5IikK
LSAgICAgICAgcmV0dXJuIDAKLSAgICBkdW1teSA9IG9iamVjdCgpCi0gICAgYmFzZWRpciA9IGNv
bmZpZy5jYWNoZS5fY2FjaGVkaXIKLSAgICB2ZGlyID0gYmFzZWRpci5qb2luKCJ2IikKLSAgICB0
dy5zZXAoIi0iLCAiY2FjaGUgdmFsdWVzIikKLSAgICBmb3IgdmFscGF0aCBpbiBzb3J0ZWQodmRp
ci52aXNpdChsYW1iZGEgeDogeC5pc2ZpbGUoKSkpOgotICAgICAgICBrZXkgPSB2YWxwYXRoLnJl
bHRvKHZkaXIpLnJlcGxhY2UodmFscGF0aC5zZXAsICIvIikKLSAgICAgICAgdmFsID0gY29uZmln
LmNhY2hlLmdldChrZXksIGR1bW15KQotICAgICAgICBpZiB2YWwgaXMgZHVtbXk6Ci0gICAgICAg
ICAgICB0dy5saW5lKCIlcyBjb250YWlucyB1bnJlYWRhYmxlIGNvbnRlbnQsICIKLSAgICAgICAg
ICAgICAgICAgICAgIndpbGwgYmUgaWdub3JlZCIgJSBrZXkpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICB0dy5saW5lKCIlcyBjb250YWluczoiICUga2V5KQotICAgICAgICAgICAgc3RyZWFt
ID0gcHkuaW8uVGV4dElPKCkKLSAgICAgICAgICAgIHBwcmludCh2YWwsIHN0cmVhbT1zdHJlYW0p
Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBzdHJlYW0uZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCk6
Ci0gICAgICAgICAgICAgICAgdHcubGluZSgiICAiICsgbGluZSkKLQotICAgIGRkaXIgPSBiYXNl
ZGlyLmpvaW4oImQiKQotICAgIGlmIGRkaXIuaXNkaXIoKSBhbmQgZGRpci5saXN0ZGlyKCk6Ci0g
ICAgICAgIHR3LnNlcCgiLSIsICJjYWNoZSBkaXJlY3RvcmllcyIpCi0gICAgICAgIGZvciBwIGlu
IHNvcnRlZChiYXNlZGlyLmpvaW4oImQiKS52aXNpdCgpKToKLSAgICAgICAgICAgICMgaWYgcC5j
aGVjayhkaXI9MSk6Ci0gICAgICAgICAgICAjICAgIHByaW50KCIlcy8iICUgcC5yZWx0byhiYXNl
ZGlyKSkKLSAgICAgICAgICAgIGlmIHAuaXNmaWxlKCk6Ci0gICAgICAgICAgICAgICAga2V5ID0g
cC5yZWx0byhiYXNlZGlyKQotICAgICAgICAgICAgICAgIHR3LmxpbmUoIiVzIGlzIGEgZmlsZSBv
ZiBsZW5ndGggJWQiICUgKAotICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBwLnNpemUoKSkp
Ci0gICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY2FwdHVyZS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY2FwdHVyZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjJlYmUzOGM4YzA5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9jYXB0dXJlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjgzICswLDAgQEAKLSIiIgotcGVy
LXRlc3Qgc3Rkb3V0L3N0ZGVyciBjYXB0dXJpbmcgbWVjaGFuaXNtLgotCi0iIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IHN5cwotaW1w
b3J0IG9zCi1pbXBvcnQgaW8KLWZyb20gaW8gaW1wb3J0IFVuc3VwcG9ydGVkT3BlcmF0aW9uCi1m
cm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCi0KLWltcG9ydCBzaXgKLWltcG9ydCBw
eXRlc3QKLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IENhcHR1cmVJTwotCi0KLXBhdGNoc3lz
ZGljdCA9IHswOiAnc3RkaW4nLCAxOiAnc3Rkb3V0JywgMjogJ3N0ZGVycid9Ci0KLQotZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2Vu
ZXJhbCIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigKLSAgICAgICAgJy0tY2FwdHVyZScsIGFjdGlv
bj0ic3RvcmUiLAotICAgICAgICBkZWZhdWx0PSJmZCIgaWYgaGFzYXR0cihvcywgImR1cCIpIGVs
c2UgInN5cyIsCi0gICAgICAgIG1ldGF2YXI9Im1ldGhvZCIsIGNob2ljZXM9WydmZCcsICdzeXMn
LCAnbm8nXSwKLSAgICAgICAgaGVscD0icGVyLXRlc3QgY2FwdHVyaW5nIG1ldGhvZDogb25lIG9m
IGZkfHN5c3xuby4iKQotICAgIGdyb3VwLl9hZGRvcHRpb24oCi0gICAgICAgICctcycsIGFjdGlv
bj0ic3RvcmVfY29uc3QiLCBjb25zdD0ibm8iLCBkZXN0PSJjYXB0dXJlIiwKLSAgICAgICAgaGVs
cD0ic2hvcnRjdXQgZm9yIC0tY2FwdHVyZT1uby4iKQotCi0KLUBweXRlc3QuaG9va2ltcGwoaG9v
a3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhlYXJseV9j
b25maWcsIHBhcnNlciwgYXJncyk6Ci0gICAgbnMgPSBlYXJseV9jb25maWcua25vd25fYXJnc19u
YW1lc3BhY2UKLSAgICBpZiBucy5jYXB0dXJlID09ICJmZCI6Ci0gICAgICAgIF9weTM2X3dpbmRv
d3Njb25zb2xlaW9fd29ya2Fyb3VuZChzeXMuc3Rkb3V0KQotICAgIF9jb2xvcmFtYV93b3JrYXJv
dW5kKCkKLSAgICBfcmVhZGxpbmVfd29ya2Fyb3VuZCgpCi0gICAgcGx1Z2lubWFuYWdlciA9IGVh
cmx5X2NvbmZpZy5wbHVnaW5tYW5hZ2VyCi0gICAgY2FwbWFuID0gQ2FwdHVyZU1hbmFnZXIobnMu
Y2FwdHVyZSkKLSAgICBwbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKGNhcG1hbiwgImNhcHR1cmVtYW5h
Z2VyIikKLQotICAgICMgbWFrZSBzdXJlIHRoYXQgY2FwdHVyZW1hbmFnZXIgaXMgcHJvcGVybHkg
cmVzZXQgYXQgZmluYWwgc2h1dGRvd24KLSAgICBlYXJseV9jb25maWcuYWRkX2NsZWFudXAoY2Fw
bWFuLnN0b3BfZ2xvYmFsX2NhcHR1cmluZykKLQotICAgICMgbWFrZSBzdXJlIGxvZ2dpbmcgZG9l
cyBub3QgcmFpc2UgZXhjZXB0aW9ucyBhdCB0aGUgZW5kCi0gICAgZGVmIHNpbGVuY2VfbG9nZ2lu
Z19hdF9zaHV0ZG93bigpOgotICAgICAgICBpZiAibG9nZ2luZyIgaW4gc3lzLm1vZHVsZXM6Ci0g
ICAgICAgICAgICBzeXMubW9kdWxlc1sibG9nZ2luZyJdLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNl
Ci0gICAgZWFybHlfY29uZmlnLmFkZF9jbGVhbnVwKHNpbGVuY2VfbG9nZ2luZ19hdF9zaHV0ZG93
bikKLQotICAgICMgZmluYWxseSB0cmlnZ2VyIGNvbmZ0ZXN0IGxvYWRpbmcgYnV0IHdoaWxlIGNh
cHR1cmluZyAoaXNzdWU5MykKLSAgICBjYXBtYW4uc3RhcnRfZ2xvYmFsX2NhcHR1cmluZygpCi0g
ICAgb3V0Y29tZSA9IHlpZWxkCi0gICAgb3V0LCBlcnIgPSBjYXBtYW4uc3VzcGVuZF9nbG9iYWxf
Y2FwdHVyZSgpCi0gICAgaWYgb3V0Y29tZS5leGNpbmZvIGlzIG5vdCBOb25lOgotICAgICAgICBz
eXMuc3Rkb3V0LndyaXRlKG91dCkKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZShlcnIpCi0KLQot
Y2xhc3MgQ2FwdHVyZU1hbmFnZXI6Ci0gICAgIiIiCi0gICAgQ2FwdHVyZSBwbHVnaW4sIG1hbmFn
ZXMgdGhhdCB0aGUgYXBwcm9wcmlhdGUgY2FwdHVyZSBtZXRob2QgaXMgZW5hYmxlZC9kaXNhYmxl
ZCBkdXJpbmcgY29sbGVjdGlvbiBhbmQgZWFjaAotICAgIHRlc3QgcGhhc2UgKHNldHVwLCBjYWxs
LCB0ZWFyZG93bikuIEFmdGVyIGVhY2ggb2YgdGhvc2UgcG9pbnRzLCB0aGUgY2FwdHVyZWQgb3V0
cHV0IGlzIG9idGFpbmVkIGFuZAotICAgIGF0dGFjaGVkIHRvIHRoZSBjb2xsZWN0aW9uL3J1bnRl
c3QgcmVwb3J0LgotCi0gICAgVGhlcmUgYXJlIHR3byBsZXZlbHMgb2YgY2FwdHVyZToKLSAgICAq
IGdsb2JhbDogd2hpY2ggaXMgZW5hYmxlZCBieSBkZWZhdWx0IGFuZCBjYW4gYmUgc3VwcHJlc3Nl
ZCBieSB0aGUgYGAtc2BgIG9wdGlvbi4gVGhpcyBpcyBhbHdheXMgZW5hYmxlZC9kaXNhYmxlZAot
ICAgICAgZHVyaW5nIGNvbGxlY3Rpb24gYW5kIGVhY2ggdGVzdCBwaGFzZS4KLSAgICAqIGZpeHR1
cmU6IHdoZW4gYSB0ZXN0IGZ1bmN0aW9uIG9yIG9uZSBvZiBpdHMgZml4dHVyZSBkZXBlbmQgb24g
dGhlIGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1cmVzLiBJbiB0aGlzCi0gICAgICBjYXNl
IHNwZWNpYWwgaGFuZGxpbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgZml4dHVyZXMgdGFrZSBw
cmVjZWRlbmNlIG92ZXIgdGhlIGdsb2JhbCBjYXB0dXJlLgotICAgICIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG1ldGhvZCk6Ci0gICAgICAgIHNlbGYuX21ldGhvZCA9IG1ldGhvZAotICAg
ICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gTm9uZQotCi0gICAgZGVmIF9nZXRjYXB0dXJl
KHNlbGYsIG1ldGhvZCk6Ci0gICAgICAgIGlmIG1ldGhvZCA9PSAiZmQiOgotICAgICAgICAgICAg
cmV0dXJuIE11bHRpQ2FwdHVyZShvdXQ9VHJ1ZSwgZXJyPVRydWUsIENhcHR1cmU9RkRDYXB0dXJl
KQotICAgICAgICBlbGlmIG1ldGhvZCA9PSAic3lzIjoKLSAgICAgICAgICAgIHJldHVybiBNdWx0
aUNhcHR1cmUob3V0PVRydWUsIGVycj1UcnVlLCBDYXB0dXJlPVN5c0NhcHR1cmUpCi0gICAgICAg
IGVsaWYgbWV0aG9kID09ICJubyI6Ci0gICAgICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJlKG91
dD1GYWxzZSwgZXJyPUZhbHNlLCBpbl89RmFsc2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGNhcHR1cmluZyBtZXRob2Q6ICVyIiAlIG1ldGhv
ZCkKLQotICAgIGRlZiBzdGFydF9nbG9iYWxfY2FwdHVyaW5nKHNlbGYpOgotICAgICAgICBhc3Nl
cnQgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBpcyBOb25lCi0gICAgICAgIHNlbGYuX2dsb2JhbF9j
YXB0dXJpbmcgPSBzZWxmLl9nZXRjYXB0dXJlKHNlbGYuX21ldGhvZCkKLSAgICAgICAgc2VsZi5f
Z2xvYmFsX2NhcHR1cmluZy5zdGFydF9jYXB0dXJpbmcoKQotCi0gICAgZGVmIHN0b3BfZ2xvYmFs
X2NhcHR1cmluZyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcucG9wX291dGVycl90
b19vcmlnKCkKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcuc3RvcF9jYXB0dXJp
bmcoKQotICAgICAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyA9IE5vbmUKLQotICAgIGRl
ZiByZXN1bWVfZ2xvYmFsX2NhcHR1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0
dXJpbmcucmVzdW1lX2NhcHR1cmluZygpCi0KLSAgICBkZWYgc3VzcGVuZF9nbG9iYWxfY2FwdHVy
ZShzZWxmLCBpdGVtPU5vbmUsIGluXz1GYWxzZSk6Ci0gICAgICAgIGlmIGl0ZW0gaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBzZWxmLmRlYWN0aXZhdGVfZml4dHVyZShpdGVtKQotICAgICAgICBj
YXAgPSBnZXRhdHRyKHNlbGYsICJfZ2xvYmFsX2NhcHR1cmluZyIsIE5vbmUpCi0gICAgICAgIGlm
IGNhcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXRl
cnIgPSBjYXAucmVhZG91dGVycigpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAg
ICAgIGNhcC5zdXNwZW5kX2NhcHR1cmluZyhpbl89aW5fKQotICAgICAgICAgICAgcmV0dXJuIG91
dGVycgotCi0gICAgZGVmIGFjdGl2YXRlX2ZpeHR1cmUoc2VsZiwgaXRlbSk6Ci0gICAgICAgICIi
IklmIHRoZSBjdXJyZW50IGl0ZW0gaXMgdXNpbmcgYGBjYXBzeXNgYCBvciBgYGNhcGZkYGAsIGFj
dGl2YXRlIHRoZW0gc28gdGhleSB0YWtlIHByZWNlZGVuY2Ugb3ZlcgotICAgICAgICB0aGUgZ2xv
YmFsIGNhcHR1cmUuCi0gICAgICAgICIiIgotICAgICAgICBmaXh0dXJlID0gZ2V0YXR0cihpdGVt
LCAiX2NhcHR1cmVfZml4dHVyZSIsIE5vbmUpCi0gICAgICAgIGlmIGZpeHR1cmUgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBmaXh0dXJlLl9zdGFydCgpCi0KLSAgICBkZWYgZGVhY3RpdmF0ZV9m
aXh0dXJlKHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJEZWFjdGl2YXRlcyB0aGUgYGBjYXBzeXNg
YCBvciBgYGNhcGZkYGAgZml4dHVyZSBvZiB0aGlzIGl0ZW0sIGlmIGFueS4iIiIKLSAgICAgICAg
Zml4dHVyZSA9IGdldGF0dHIoaXRlbSwgIl9jYXB0dXJlX2ZpeHR1cmUiLCBOb25lKQotICAgICAg
ICBpZiBmaXh0dXJlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZml4dHVyZS5jbG9zZSgpCi0K
LSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9t
YWtlX2NvbGxlY3RfcmVwb3J0KHNlbGYsIGNvbGxlY3Rvcik6Ci0gICAgICAgIGlmIGlzaW5zdGFu
Y2UoY29sbGVjdG9yLCBweXRlc3QuRmlsZSk6Ci0gICAgICAgICAgICBzZWxmLnJlc3VtZV9nbG9i
YWxfY2FwdHVyZSgpCi0gICAgICAgICAgICBvdXRjb21lID0geWllbGQKLSAgICAgICAgICAgIG91
dCwgZXJyID0gc2VsZi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgICAgIHJlcCA9
IG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0gICAgICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAgICAg
ICAgcmVwLnNlY3Rpb25zLmFwcGVuZCgoIkNhcHR1cmVkIHN0ZG91dCIsIG91dCkpCi0gICAgICAg
ICAgICBpZiBlcnI6Ci0gICAgICAgICAgICAgICAgcmVwLnNlY3Rpb25zLmFwcGVuZCgoIkNhcHR1
cmVkIHN0ZGVyciIsIGVycikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB5aWVsZAotCi0g
ICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVu
dGVzdF9zZXR1cChzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1
cmUoKQotICAgICAgICAjIG5vIG5lZWQgdG8gYWN0aXZhdGUgYSBjYXB0dXJlIGZpeHR1cmUgYmVj
YXVzZSB0aGV5IGFjdGl2YXRlIHRoZW1zZWx2ZXMgZHVyaW5nIGNyZWF0aW9uOyB0aGlzCi0gICAg
ICAgICMgb25seSBtYWtlcyBzZW5zZSB3aGVuIGEgZml4dHVyZSB1c2VzIGEgY2FwdHVyZSBmaXh0
dXJlLCBvdGhlcndpc2UgdGhlIGNhcHR1cmUgZml4dHVyZSB3aWxsCi0gICAgICAgICMgYmUgYWN0
aXZhdGVkIGR1cmluZyBweXRlc3RfcnVudGVzdF9jYWxsCi0gICAgICAgIHlpZWxkCi0gICAgICAg
IHNlbGYuc3VzcGVuZF9jYXB0dXJlX2l0ZW0oaXRlbSwgInNldHVwIikKLQotICAgIEBweXRlc3Qu
aG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChz
ZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAg
ICAjIGl0IGlzIGltcG9ydGFudCB0byBhY3RpdmF0ZSB0aGlzIGZpeHR1cmUgZHVyaW5nIHRoZSBj
YWxsIHBoYXNlIHNvIGl0IG92ZXJ3cml0ZXMgdGhlICJnbG9iYWwiCi0gICAgICAgICMgY2FwdHVy
ZQotICAgICAgICBzZWxmLmFjdGl2YXRlX2ZpeHR1cmUoaXRlbSkKLSAgICAgICAgeWllbGQKLSAg
ICAgICAgc2VsZi5zdXNwZW5kX2NhcHR1cmVfaXRlbShpdGVtLCAiY2FsbCIpCi0KLSAgICBAcHl0
ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Rl
YXJkb3duKHNlbGYsIGl0ZW0pOgotICAgICAgICBzZWxmLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgp
Ci0gICAgICAgIHNlbGYuYWN0aXZhdGVfZml4dHVyZShpdGVtKQotICAgICAgICB5aWVsZAotICAg
ICAgICBzZWxmLnN1c3BlbmRfY2FwdHVyZV9pdGVtKGl0ZW0sICJ0ZWFyZG93biIpCi0KLSAgICBA
cHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIHB5dGVzdF9rZXlib2FyZF9p
bnRlcnJ1cHQoc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIHNlbGYuc3RvcF9nbG9iYWxfY2FwdHVy
aW5nKCkKLQotICAgIEBweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0
ZXN0X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIHNlbGYuc3RvcF9nbG9i
YWxfY2FwdHVyaW5nKCkKLQotICAgIGRlZiBzdXNwZW5kX2NhcHR1cmVfaXRlbShzZWxmLCBpdGVt
LCB3aGVuLCBpbl89RmFsc2UpOgotICAgICAgICBvdXQsIGVyciA9IHNlbGYuc3VzcGVuZF9nbG9i
YWxfY2FwdHVyZShpdGVtLCBpbl89aW5fKQotICAgICAgICBpdGVtLmFkZF9yZXBvcnRfc2VjdGlv
bih3aGVuLCAic3Rkb3V0Iiwgb3V0KQotICAgICAgICBpdGVtLmFkZF9yZXBvcnRfc2VjdGlvbih3
aGVuLCAic3RkZXJyIiwgZXJyKQotCi0KLWNhcHR1cmVfZml4dHVyZXMgPSB7J2NhcGZkJywgJ2Nh
cGZkYmluYXJ5JywgJ2NhcHN5cycsICdjYXBzeXNiaW5hcnknfQotCi0KLWRlZiBfZW5zdXJlX29u
bHlfb25lX2NhcHR1cmVfZml4dHVyZShyZXF1ZXN0LCBuYW1lKToKLSAgICBmaXh0dXJlcyA9IHNl
dChyZXF1ZXN0LmZpeHR1cmVuYW1lcykgJiBjYXB0dXJlX2ZpeHR1cmVzIC0gc2V0KChuYW1lLCkp
Ci0gICAgaWYgZml4dHVyZXM6Ci0gICAgICAgIGZpeHR1cmVzID0gc29ydGVkKGZpeHR1cmVzKQot
ICAgICAgICBmaXh0dXJlcyA9IGZpeHR1cmVzWzBdIGlmIGxlbihmaXh0dXJlcykgPT0gMSBlbHNl
IGZpeHR1cmVzCi0gICAgICAgIHJhaXNlIHJlcXVlc3QucmFpc2VlcnJvcigKLSAgICAgICAgICAg
ICJjYW5ub3QgdXNlIHswfSBhbmQgezF9IGF0IHRoZSBzYW1lIHRpbWUiLmZvcm1hdCgKLSAgICAg
ICAgICAgICAgICBmaXh0dXJlcywgbmFtZSwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQot
Ci1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBzeXMocmVxdWVzdCk6Ci0gICAgIiIiRW5hYmxlIGNh
cHR1cmluZyBvZiB3cml0ZXMgdG8gc3lzLnN0ZG91dC9zeXMuc3RkZXJyIGFuZCBtYWtlCi0gICAg
Y2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVhZG91dGVycigpYGAgbWV0
aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBgYG91
dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGB0ZXh0YGAKLSAgICBvYmplY3RzLgotICAgICIiIgot
ICAgIF9lbnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICdjYXBzeXMnKQot
ICAgIHdpdGggX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVzdCwgU3lzQ2Fw
dHVyZSkgYXMgZml4dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQotCi0KLUBweXRlc3QuZml4
dHVyZQotZGVmIGNhcHN5c2JpbmFyeShyZXF1ZXN0KToKLSAgICAiIiJFbmFibGUgY2FwdHVyaW5n
IG9mIHdyaXRlcyB0byBzeXMuc3Rkb3V0L3N5cy5zdGRlcnIgYW5kIG1ha2UKLSAgICBjYXB0dXJl
ZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcHN5cy5yZWFkb3V0ZXJyKClgYCBtZXRob2QgY2Fs
bHMKLSAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0YGAgYW5k
IGBgZXJyYGAgd2lsbCBiZSBgYGJ5dGVzYGAKLSAgICBvYmplY3RzLgotICAgICIiIgotICAgIF9l
bnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICdjYXBzeXNiaW5hcnknKQot
ICAgICMgQ3VycmVudGx5LCB0aGUgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgcHl0aG9uMyBzcGVj
aWZpYyBgLmJ1ZmZlcmAKLSAgICAjIHByb3BlcnR5IG9mIENhcHR1cmVJTy4KLSAgICBpZiBzeXMu
dmVyc2lvbl9pbmZvIDwgKDMsKToKLSAgICAgICAgcmFpc2UgcmVxdWVzdC5yYWlzZWVycm9yKCdj
YXBzeXNiaW5hcnkgaXMgb25seSBzdXBwb3J0ZWQgb24gcHl0aG9uIDMnKQotICAgIHdpdGggX2lu
c3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVzdCwgU3lzQ2FwdHVyZUJpbmFyeSkg
YXMgZml4dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQotCi0KLUBweXRlc3QuZml4dHVyZQot
ZGVmIGNhcGZkKHJlcXVlc3QpOgotICAgICIiIkVuYWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRv
IGZpbGUgZGVzY3JpcHRvcnMgMSBhbmQgMiBhbmQgbWFrZQotICAgIGNhcHR1cmVkIG91dHB1dCBh
dmFpbGFibGUgdmlhIGBgY2FwZmQucmVhZG91dGVycigpYGAgbWV0aG9kIGNhbGxzCi0gICAgd2hp
Y2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdp
bGwgYmUgYGB0ZXh0YGAKLSAgICBvYmplY3RzLgotICAgICIiIgotICAgIF9lbnN1cmVfb25seV9v
bmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICdjYXBmZCcpCi0gICAgaWYgbm90IGhhc2F0dHIo
b3MsICdkdXAnKToKLSAgICAgICAgcHl0ZXN0LnNraXAoImNhcGZkIGZpeHR1cmUgbmVlZHMgb3Mu
ZHVwIGZ1bmN0aW9uIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBzeXN0ZW0iKQotICAg
IHdpdGggX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVzdCwgRkRDYXB0dXJl
KSBhcyBmaXh0dXJlOgotICAgICAgICB5aWVsZCBmaXh0dXJlCi0KLQotQHB5dGVzdC5maXh0dXJl
Ci1kZWYgY2FwZmRiaW5hcnkocmVxdWVzdCk6Ci0gICAgIiIiRW5hYmxlIGNhcHR1cmluZyBvZiB3
cml0ZSB0byBmaWxlIGRlc2NyaXB0b3JzIDEgYW5kIDIgYW5kIG1ha2UKLSAgICBjYXB0dXJlZCBv
dXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcGZkYmluYXJ5LnJlYWRvdXRlcnJgYCBtZXRob2QgY2Fs
bHMKLSAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0YGAgYW5k
IGBgZXJyYGAgd2lsbCBiZQotICAgIGBgYnl0ZXNgYCBvYmplY3RzLgotICAgICIiIgotICAgIF9l
bnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICdjYXBmZGJpbmFyeScpCi0g
ICAgaWYgbm90IGhhc2F0dHIob3MsICdkdXAnKToKLSAgICAgICAgcHl0ZXN0LnNraXAoImNhcGZk
YmluYXJ5IGZpeHR1cmUgbmVlZHMgb3MuZHVwIGZ1bmN0aW9uIHdoaWNoIGlzIG5vdCBhdmFpbGFi
bGUgaW4gdGhpcyBzeXN0ZW0iKQotICAgIHdpdGggX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29u
X2l0ZW0ocmVxdWVzdCwgRkRDYXB0dXJlQmluYXJ5KSBhcyBmaXh0dXJlOgotICAgICAgICB5aWVs
ZCBmaXh0dXJlCi0KLQotQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLWRlZiBfaW5zdGFsbF9j
YXB0dXJlX2ZpeHR1cmVfb25faXRlbShyZXF1ZXN0LCBjYXB0dXJlX2NsYXNzKToKLSAgICAiIiIK
LSAgICBDb250ZXh0IG1hbmFnZXIgd2hpY2ggY3JlYXRlcyBhIGBgQ2FwdHVyZUZpeHR1cmVgYCBp
bnN0YW5jZSBhbmQgImluc3RhbGxzIiBpdCBvbgotICAgIHRoZSBpdGVtL25vZGUgb2YgdGhlIGdp
dmVuIHJlcXVlc3QuIFVzZWQgYnkgYGBjYXBzeXNgYCBhbmQgYGBjYXBmZGBgLgotCi0gICAgVGhl
IENhcHR1cmVGaXh0dXJlIGlzIGFkZGVkIGFzIGF0dHJpYnV0ZSBvZiB0aGUgaXRlbSBiZWNhdXNl
IGl0IG5lZWRzIHRvIGFjY2Vzc2VkCi0gICAgYnkgYGBDYXB0dXJlTWFuYWdlcmBgIGR1cmluZyBp
dHMgYGBweXRlc3RfcnVudGVzdF8qYGAgaG9va3MuCi0gICAgIiIiCi0gICAgcmVxdWVzdC5ub2Rl
Ll9jYXB0dXJlX2ZpeHR1cmUgPSBmaXh0dXJlID0gQ2FwdHVyZUZpeHR1cmUoY2FwdHVyZV9jbGFz
cywgcmVxdWVzdCkKLSAgICBjYXBtYW5hZ2VyID0gcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdl
ci5nZXRwbHVnaW4oJ2NhcHR1cmVtYW5hZ2VyJykKLSAgICAjIG5lZWQgdG8gYWN0aXZlIHRoaXMg
Zml4dHVyZSByaWdodCBhd2F5IGluIGNhc2UgaXQgaXMgYmVpbmcgdXNlZCBieSBhbm90aGVyIGZp
eHR1cmUgKHNldHVwIHBoYXNlKQotICAgICMgaWYgdGhpcyBmaXh0dXJlIGlzIGJlaW5nIHVzZWQg
b25seSBieSBhIHRlc3QgZnVuY3Rpb24gKGNhbGwgcGhhc2UpLCB0aGVuIHdlIHdvdWxkbid0IG5l
ZWQgdGhpcwotICAgICMgYWN0aXZhdGlvbiwgYnV0IGl0IGRvZXNuJ3QgaHVydAotICAgIGNhcG1h
bmFnZXIuYWN0aXZhdGVfZml4dHVyZShyZXF1ZXN0Lm5vZGUpCi0gICAgeWllbGQgZml4dHVyZQot
ICAgIGZpeHR1cmUuY2xvc2UoKQotICAgIGRlbCByZXF1ZXN0Lm5vZGUuX2NhcHR1cmVfZml4dHVy
ZQotCi0KLWNsYXNzIENhcHR1cmVGaXh0dXJlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXB0
dXJlY2xhc3MsIHJlcXVlc3QpOgotICAgICAgICBzZWxmLmNhcHR1cmVjbGFzcyA9IGNhcHR1cmVj
bGFzcwotICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0Ci0KLSAgICBkZWYgX3N0YXJ0KHNl
bGYpOgotICAgICAgICBzZWxmLl9jYXB0dXJlID0gTXVsdGlDYXB0dXJlKG91dD1UcnVlLCBlcnI9
VHJ1ZSwgaW5fPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENh
cHR1cmU9c2VsZi5jYXB0dXJlY2xhc3MpCi0gICAgICAgIHNlbGYuX2NhcHR1cmUuc3RhcnRfY2Fw
dHVyaW5nKCkKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgY2FwID0gc2VsZi5fX2Rp
Y3RfXy5wb3AoIl9jYXB0dXJlIiwgTm9uZSkKLSAgICAgICAgaWYgY2FwIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgc2VsZi5fb3V0ZXJyID0gY2FwLnBvcF9vdXRlcnJfdG9fb3JpZygpCi0gICAg
ICAgICAgICBjYXAuc3RvcF9jYXB0dXJpbmcoKQotCi0gICAgZGVmIHJlYWRvdXRlcnIoc2VsZik6
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYXB0dXJlLnJlYWRvdXRl
cnIoKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4g
c2VsZi5fb3V0ZXJyCi0KLSAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotICAgIGRlZiBk
aXNhYmxlZChzZWxmKToKLSAgICAgICAgc2VsZi5fY2FwdHVyZS5zdXNwZW5kX2NhcHR1cmluZygp
Ci0gICAgICAgIGNhcG1hbmFnZXIgPSBzZWxmLnJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIu
Z2V0cGx1Z2luKCdjYXB0dXJlbWFuYWdlcicpCi0gICAgICAgIGNhcG1hbmFnZXIuc3VzcGVuZF9n
bG9iYWxfY2FwdHVyZShpdGVtPU5vbmUsIGluXz1GYWxzZSkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgeWllbGQKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNhcG1hbmFnZXIucmVz
dW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgICAgIHNlbGYuX2NhcHR1cmUucmVzdW1lX2Nh
cHR1cmluZygpCi0KLQotZGVmIHNhZmVfdGV4dF9kdXBmaWxlKGYsIG1vZGUsIGRlZmF1bHRfZW5j
b2Rpbmc9IlVURjgiKToKLSAgICAiIiIgcmV0dXJuIGEgb3BlbiB0ZXh0IGZpbGUgb2JqZWN0IHRo
YXQncyBhIGR1cGxpY2F0ZSBvZiBmIG9uIHRoZQotICAgICAgICBGRC1sZXZlbCBpZiBwb3NzaWJs
ZS4KLSAgICAiIiIKLSAgICBlbmNvZGluZyA9IGdldGF0dHIoZiwgImVuY29kaW5nIiwgTm9uZSkK
LSAgICB0cnk6Ci0gICAgICAgIGZkID0gZi5maWxlbm8oKQotICAgIGV4Y2VwdCBFeGNlcHRpb246
Ci0gICAgICAgIGlmICJiIiBub3QgaW4gZ2V0YXR0cihmLCAibW9kZSIsICIiKSBhbmQgaGFzYXR0
cihmLCAiZW5jb2RpbmciKToKLSAgICAgICAgICAgICMgd2Ugc2VlbSB0byBoYXZlIGEgdGV4dCBz
dHJlYW0sIGxldCdzIGp1c3QgdXNlIGl0Ci0gICAgICAgICAgICByZXR1cm4gZgotICAgIGVsc2U6
Ci0gICAgICAgIG5ld2ZkID0gb3MuZHVwKGZkKQotICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6
Ci0gICAgICAgICAgICBtb2RlICs9ICJiIgotICAgICAgICBmID0gb3MuZmRvcGVuKG5ld2ZkLCBt
b2RlLCAwKSAgIyBubyBidWZmZXJpbmcKLSAgICByZXR1cm4gRW5jb2RlZEZpbGUoZiwgZW5jb2Rp
bmcgb3IgZGVmYXVsdF9lbmNvZGluZykKLQotCi1jbGFzcyBFbmNvZGVkRmlsZShvYmplY3QpOgot
ICAgIGVycm9ycyA9ICJzdHJpY3QiICAjIHBvc3NpYmx5IG5lZWRlZCBieSBweTMgY29kZSAoaXNz
dWU1NTUpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnVmZmVyLCBlbmNvZGluZyk6Ci0gICAg
ICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCi0gICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGlu
ZwotCi0gICAgZGVmIHdyaXRlKHNlbGYsIG9iaik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob2Jq
LCBzaXgudGV4dF90eXBlKToKLSAgICAgICAgICAgIG9iaiA9IG9iai5lbmNvZGUoc2VsZi5lbmNv
ZGluZywgInJlcGxhY2UiKQotICAgICAgICBzZWxmLmJ1ZmZlci53cml0ZShvYmopCi0KLSAgICBk
ZWYgd3JpdGVsaW5lcyhzZWxmLCBsaW5lbGlzdCk6Ci0gICAgICAgIGRhdGEgPSAnJy5qb2luKGxp
bmVsaXN0KQotICAgICAgICBzZWxmLndyaXRlKGRhdGEpCi0KLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbmFtZShzZWxmKToKLSAgICAgICAgIiIiRW5zdXJlIHRoYXQgZmlsZS5uYW1lIGlzIGEgc3Ry
aW5nLiIiIgotICAgICAgICByZXR1cm4gcmVwcihzZWxmLmJ1ZmZlcikKLQotICAgIGRlZiBfX2dl
dGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqZWN0Ll9fZ2V0
YXR0cmlidXRlX18oc2VsZiwgImJ1ZmZlciIpLCBuYW1lKQotCi0KLUNhcHR1cmVSZXN1bHQgPSBj
b2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJDYXB0dXJlUmVzdWx0IiwgWyJvdXQiLCAiZXJyIl0pCi0K
LQotY2xhc3MgTXVsdGlDYXB0dXJlKG9iamVjdCk6Ci0gICAgb3V0ID0gZXJyID0gaW5fID0gTm9u
ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dD1UcnVlLCBlcnI9VHJ1ZSwgaW5fPVRydWUs
IENhcHR1cmU9Tm9uZSk6Ci0gICAgICAgIGlmIGluXzoKLSAgICAgICAgICAgIHNlbGYuaW5fID0g
Q2FwdHVyZSgwKQotICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dCA9IENhcHR1
cmUoMSkKLSAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIgPSBDYXB0dXJlKDIp
Ci0KLSAgICBkZWYgc3RhcnRfY2FwdHVyaW5nKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmluXzoK
LSAgICAgICAgICAgIHNlbGYuaW5fLnN0YXJ0KCkKLSAgICAgICAgaWYgc2VsZi5vdXQ6Ci0gICAg
ICAgICAgICBzZWxmLm91dC5zdGFydCgpCi0gICAgICAgIGlmIHNlbGYuZXJyOgotICAgICAgICAg
ICAgc2VsZi5lcnIuc3RhcnQoKQotCi0gICAgZGVmIHBvcF9vdXRlcnJfdG9fb3JpZyhzZWxmKToK
LSAgICAgICAgIiIiIHBvcCBjdXJyZW50IHNuYXBzaG90IG91dC9lcnIgY2FwdHVyZSBhbmQgZmx1
c2ggdG8gb3JpZyBzdHJlYW1zLiAiIiIKLSAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnJlYWRvdXRl
cnIoKQotICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dC53cml0ZW9yZyhvdXQp
Ci0gICAgICAgIGlmIGVycjoKLSAgICAgICAgICAgIHNlbGYuZXJyLndyaXRlb3JnKGVycikKLSAg
ICAgICAgcmV0dXJuIG91dCwgZXJyCi0KLSAgICBkZWYgc3VzcGVuZF9jYXB0dXJpbmcoc2VsZiwg
aW5fPUZhbHNlKToKLSAgICAgICAgaWYgc2VsZi5vdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dC5z
dXNwZW5kKCkKLSAgICAgICAgaWYgc2VsZi5lcnI6Ci0gICAgICAgICAgICBzZWxmLmVyci5zdXNw
ZW5kKCkKLSAgICAgICAgaWYgaW5fIGFuZCBzZWxmLmluXzoKLSAgICAgICAgICAgIHNlbGYuaW5f
LnN1c3BlbmQoKQotICAgICAgICAgICAgc2VsZi5faW5fc3VzcGVuZGVkID0gVHJ1ZQotCi0gICAg
ZGVmIHJlc3VtZV9jYXB0dXJpbmcoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYub3V0OgotICAgICAg
ICAgICAgc2VsZi5vdXQucmVzdW1lKCkKLSAgICAgICAgaWYgc2VsZi5lcnI6Ci0gICAgICAgICAg
ICBzZWxmLmVyci5yZXN1bWUoKQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJfaW5fc3VzcGVu
ZGVkIik6Ci0gICAgICAgICAgICBzZWxmLmluXy5yZXN1bWUoKQotICAgICAgICAgICAgZGVsIHNl
bGYuX2luX3N1c3BlbmRlZAotCi0gICAgZGVmIHN0b3BfY2FwdHVyaW5nKHNlbGYpOgotICAgICAg
ICAiIiIgc3RvcCBjYXB0dXJpbmcgYW5kIHJlc2V0IGNhcHR1cmluZyBzdHJlYW1zICIiIgotICAg
ICAgICBpZiBoYXNhdHRyKHNlbGYsICdfcmVzZXQnKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoIndhcyBhbHJlYWR5IHN0b3BwZWQiKQotICAgICAgICBzZWxmLl9yZXNldCA9IFRydWUK
LSAgICAgICAgaWYgc2VsZi5vdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dC5kb25lKCkKLSAgICAg
ICAgaWYgc2VsZi5lcnI6Ci0gICAgICAgICAgICBzZWxmLmVyci5kb25lKCkKLSAgICAgICAgaWYg
c2VsZi5pbl86Ci0gICAgICAgICAgICBzZWxmLmluXy5kb25lKCkKLQotICAgIGRlZiByZWFkb3V0
ZXJyKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIHNuYXBzaG90IHVuaWNvZGUgdmFsdWUgb2Yg
c3Rkb3V0L3N0ZGVyciBjYXB0dXJpbmdzLiAiIiIKLSAgICAgICAgcmV0dXJuIENhcHR1cmVSZXN1
bHQoc2VsZi5vdXQuc25hcCgpIGlmIHNlbGYub3V0IGlzIG5vdCBOb25lIGVsc2UgIiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyLnNuYXAoKSBpZiBzZWxmLmVyciBpcyBu
b3QgTm9uZSBlbHNlICIiKQotCi0KLWNsYXNzIE5vQ2FwdHVyZToKLSAgICBfX2luaXRfXyA9IHN0
YXJ0ID0gZG9uZSA9IHN1c3BlbmQgPSByZXN1bWUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKLQotCi1j
bGFzcyBGRENhcHR1cmVCaW5hcnk6Ci0gICAgIiIiQ2FwdHVyZSBJTyB0by9mcm9tIGEgZ2l2ZW4g
b3MtbGV2ZWwgZmlsZWRlc2NyaXB0b3IuCi0KLSAgICBzbmFwKCkgcHJvZHVjZXMgYGJ5dGVzYAot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldGZkLCB0bXBmaWxlPU5vbmUp
OgotICAgICAgICBzZWxmLnRhcmdldGZkID0gdGFyZ2V0ZmQKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi50YXJnZXRmZF9zYXZlID0gb3MuZHVwKHNlbGYudGFyZ2V0ZmQpCi0gICAgICAg
IGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5zdGFydCA9IGxhbWJkYTogTm9uZQot
ICAgICAgICAgICAgc2VsZi5kb25lID0gbGFtYmRhOiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBpZiB0YXJnZXRmZCA9PSAwOgotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG1w
ZmlsZSwgImNhbm5vdCBzZXQgdG1wZmlsZSB3aXRoIHN0ZGluIgotICAgICAgICAgICAgICAgIHRt
cGZpbGUgPSBvcGVuKG9zLmRldm51bGwsICJyIikKLSAgICAgICAgICAgICAgICBzZWxmLnN5c2Nh
cHR1cmUgPSBTeXNDYXB0dXJlKHRhcmdldGZkKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBpZiB0bXBmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBUZW1w
b3JhcnlGaWxlKCkKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBmOgotICAgICAgICAgICAgICAg
ICAgICAgICAgdG1wZmlsZSA9IHNhZmVfdGV4dF9kdXBmaWxlKGYsIG1vZGU9IndiKyIpCi0gICAg
ICAgICAgICAgICAgaWYgdGFyZ2V0ZmQgaW4gcGF0Y2hzeXNkaWN0OgotICAgICAgICAgICAgICAg
ICAgICBzZWxmLnN5c2NhcHR1cmUgPSBTeXNDYXB0dXJlKHRhcmdldGZkLCB0bXBmaWxlKQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9
IE5vQ2FwdHVyZSgpCi0gICAgICAgICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlCi0gICAgICAg
ICAgICBzZWxmLnRtcGZpbGVfZmQgPSB0bXBmaWxlLmZpbGVubygpCi0KLSAgICBkZWYgX19yZXBy
X18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPEZEQ2FwdHVyZSAlcyBvbGRmZD0lcz4iICUgKHNl
bGYudGFyZ2V0ZmQsIHNlbGYudGFyZ2V0ZmRfc2F2ZSkKLQotICAgIGRlZiBzdGFydChzZWxmKToK
LSAgICAgICAgIiIiIFN0YXJ0IGNhcHR1cmluZyBvbiB0YXJnZXRmZCB1c2luZyBtZW1vcml6ZWQg
dG1wZmlsZS4gIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmZzdGF0KHNlbGYudGFy
Z2V0ZmRfc2F2ZSkKLSAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6Ci0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzYXZlZCBmaWxlZGVzY3JpcHRvciBub3QgdmFs
aWQgYW55bW9yZSIpCi0gICAgICAgIG9zLmR1cDIoc2VsZi50bXBmaWxlX2ZkLCBzZWxmLnRhcmdl
dGZkKQotICAgICAgICBzZWxmLnN5c2NhcHR1cmUuc3RhcnQoKQotCi0gICAgZGVmIHNuYXAoc2Vs
Zik6Ci0gICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCi0gICAgICAgIHJlcyA9IHNlbGYudG1w
ZmlsZS5yZWFkKCkKLSAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKLSAgICAgICAgc2VsZi50
bXBmaWxlLnRydW5jYXRlKCkKLSAgICAgICAgcmV0dXJuIHJlcwotCi0gICAgZGVmIGRvbmUoc2Vs
Zik6Ci0gICAgICAgICIiIiBzdG9wIGNhcHR1cmluZywgcmVzdG9yZSBzdHJlYW1zLCByZXR1cm4g
b3JpZ2luYWwgY2FwdHVyZSBmaWxlLAotICAgICAgICBzZWVrZWQgdG8gcG9zaXRpb24gemVyby4g
IiIiCi0gICAgICAgIHRhcmdldGZkX3NhdmUgPSBzZWxmLl9fZGljdF9fLnBvcCgidGFyZ2V0ZmRf
c2F2ZSIpCi0gICAgICAgIG9zLmR1cDIodGFyZ2V0ZmRfc2F2ZSwgc2VsZi50YXJnZXRmZCkKLSAg
ICAgICAgb3MuY2xvc2UodGFyZ2V0ZmRfc2F2ZSkKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLmRv
bmUoKQotICAgICAgICBzZWxmLnRtcGZpbGUuY2xvc2UoKQotCi0gICAgZGVmIHN1c3BlbmQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuc3lzY2FwdHVyZS5zdXNwZW5kKCkKLSAgICAgICAgb3MuZHVwMihz
ZWxmLnRhcmdldGZkX3NhdmUsIHNlbGYudGFyZ2V0ZmQpCi0KLSAgICBkZWYgcmVzdW1lKHNlbGYp
OgotICAgICAgICBzZWxmLnN5c2NhcHR1cmUucmVzdW1lKCkKLSAgICAgICAgb3MuZHVwMihzZWxm
LnRtcGZpbGVfZmQsIHNlbGYudGFyZ2V0ZmQpCi0KLSAgICBkZWYgd3JpdGVvcmcoc2VsZiwgZGF0
YSk6Ci0gICAgICAgICIiIiB3cml0ZSB0byBvcmlnaW5hbCBmaWxlIGRlc2NyaXB0b3IuICIiIgot
ICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICAgICAg
ZGF0YSA9IGRhdGEuZW5jb2RlKCJ1dGY4IikgICMgWFhYIHVzZSBlbmNvZGluZyBvZiBvcmlnaW5h
bCBzdHJlYW0KLSAgICAgICAgb3Mud3JpdGUoc2VsZi50YXJnZXRmZF9zYXZlLCBkYXRhKQotCi0K
LWNsYXNzIEZEQ2FwdHVyZShGRENhcHR1cmVCaW5hcnkpOgotICAgICIiIkNhcHR1cmUgSU8gdG8v
ZnJvbSBhIGdpdmVuIG9zLWxldmVsIGZpbGVkZXNjcmlwdG9yLgotCi0gICAgc25hcCgpIHByb2R1
Y2VzIHRleHQKLSAgICAiIiIKLSAgICBkZWYgc25hcChzZWxmKToKLSAgICAgICAgcmVzID0gRkRD
YXB0dXJlQmluYXJ5LnNuYXAoc2VsZikKLSAgICAgICAgZW5jID0gZ2V0YXR0cihzZWxmLnRtcGZp
bGUsICJlbmNvZGluZyIsIE5vbmUpCi0gICAgICAgIGlmIGVuYyBhbmQgaXNpbnN0YW5jZShyZXMs
IGJ5dGVzKToKLSAgICAgICAgICAgIHJlcyA9IHNpeC50ZXh0X3R5cGUocmVzLCBlbmMsICJyZXBs
YWNlIikKLSAgICAgICAgcmV0dXJuIHJlcwotCi0KLWNsYXNzIFN5c0NhcHR1cmU6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGZkLCB0bXBmaWxlPU5vbmUpOgotICAgICAgICBuYW1lID0gcGF0Y2hz
eXNkaWN0W2ZkXQotICAgICAgICBzZWxmLl9vbGQgPSBnZXRhdHRyKHN5cywgbmFtZSkKLSAgICAg
ICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBpZiB0bXBmaWxlIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBpZiBuYW1lID09ICJzdGRpbiI6Ci0gICAgICAgICAgICAgICAgdG1wZmlsZSA9IERvbnRS
ZWFkRnJvbUlucHV0KCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdG1wZmls
ZSA9IENhcHR1cmVJTygpCi0gICAgICAgIHNlbGYudG1wZmlsZSA9IHRtcGZpbGUKLQotICAgIGRl
ZiBzdGFydChzZWxmKToKLSAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2VsZi50bXBm
aWxlKQotCi0gICAgZGVmIHNuYXAoc2VsZik6Ci0gICAgICAgIHJlcyA9IHNlbGYudG1wZmlsZS5n
ZXR2YWx1ZSgpCi0gICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCi0gICAgICAgIHNlbGYudG1w
ZmlsZS50cnVuY2F0ZSgpCi0gICAgICAgIHJldHVybiByZXMKLQotICAgIGRlZiBkb25lKHNlbGYp
OgotICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBzZWxmLl9vbGQpCi0gICAgICAgIGRl
bCBzZWxmLl9vbGQKLSAgICAgICAgc2VsZi50bXBmaWxlLmNsb3NlKCkKLQotICAgIGRlZiBzdXNw
ZW5kKHNlbGYpOgotICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBzZWxmLl9vbGQpCi0K
LSAgICBkZWYgcmVzdW1lKHNlbGYpOgotICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBz
ZWxmLnRtcGZpbGUpCi0KLSAgICBkZWYgd3JpdGVvcmcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNl
bGYuX29sZC53cml0ZShkYXRhKQotICAgICAgICBzZWxmLl9vbGQuZmx1c2goKQotCi0KLWNsYXNz
IFN5c0NhcHR1cmVCaW5hcnkoU3lzQ2FwdHVyZSk6Ci0gICAgZGVmIHNuYXAoc2VsZik6Ci0gICAg
ICAgIHJlcyA9IHNlbGYudG1wZmlsZS5idWZmZXIuZ2V0dmFsdWUoKQotICAgICAgICBzZWxmLnRt
cGZpbGUuc2VlaygwKQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQotICAgICAgICBy
ZXR1cm4gcmVzCi0KLQotY2xhc3MgRG9udFJlYWRGcm9tSW5wdXQ6Ci0gICAgIiIiVGVtcG9yYXJ5
IHN0dWIgY2xhc3MuICBJZGVhbGx5IHdoZW4gc3RkaW4gaXMgYWNjZXNzZWQsIHRoZQotICAgIGNh
cHR1cmluZyBzaG91bGQgYmUgdHVybmVkIG9mZiwgd2l0aCBwb3NzaWJseSBhbGwgZGF0YSBjYXB0
dXJlZAotICAgIHNvIGZhciBzZW50IHRvIHRoZSBzY3JlZW4uICBUaGlzIHNob3VsZCBiZSBjb25m
aWd1cmFibGUsIHRob3VnaCwKLSAgICBiZWNhdXNlIGluIGF1dG9tYXRlZCB0ZXN0IHJ1bnMgaXQg
aXMgYmV0dGVyIHRvIGNyYXNoIHRoYW4KLSAgICBoYW5nIGluZGVmaW5pdGVseS4KLSAgICAiIiIK
LQotICAgIGVuY29kaW5nID0gTm9uZQotCi0gICAgZGVmIHJlYWQoc2VsZiwgKmFyZ3MpOgotICAg
ICAgICByYWlzZSBJT0Vycm9yKCJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0IGlzIGNh
cHR1cmVkIikKLSAgICByZWFkbGluZSA9IHJlYWQKLSAgICByZWFkbGluZXMgPSByZWFkCi0gICAg
X19pdGVyX18gPSByZWFkCi0KLSAgICBkZWYgZmlsZW5vKHNlbGYpOgotICAgICAgICByYWlzZSBV
bnN1cHBvcnRlZE9wZXJhdGlvbigicmVkaXJlY3RlZCBzdGRpbiBpcyBwc2V1ZG9maWxlLCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXMgbm8gZmlsZW5vKCkiKQotCi0g
ICAgZGVmIGlzYXR0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgY2xv
c2Uoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBidWZmZXIo
c2VsZik6Ci0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0
ZUVycm9yKCdyZWRpcmVjdGVkIHN0ZGluIGhhcyBubyBhdHRyaWJ1dGUgYnVmZmVyJykKLQotCi1k
ZWYgX2NvbG9yYW1hX3dvcmthcm91bmQoKToKLSAgICAiIiIKLSAgICBFbnN1cmUgY29sb3JhbWEg
aXMgaW1wb3J0ZWQgc28gdGhhdCBpdCBhdHRhY2hlcyB0byB0aGUgY29ycmVjdCBzdGRpbwotICAg
IGhhbmRsZXMgb24gV2luZG93cy4KLQotICAgIGNvbG9yYW1hIHVzZXMgdGhlIHRlcm1pbmFsIG9u
IGltcG9ydCB0aW1lLiBTbyBpZiBzb21ldGhpbmcgZG9lcyB0aGUKLSAgICBmaXJzdCBpbXBvcnQg
b2YgY29sb3JhbWEgd2hpbGUgSS9PIGNhcHR1cmUgaXMgYWN0aXZlLCBjb2xvcmFtYSB3aWxsCi0g
ICAgZmFpbCBpbiB2YXJpb3VzIHdheXMuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3lzLnBsYXRm
b3JtLnN0YXJ0c3dpdGgoJ3dpbjMyJyk6Ci0gICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAg
ICAgaW1wb3J0IGNvbG9yYW1hICAjIG5vcWEKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAg
ICAgIHBhc3MKLQotCi1kZWYgX3JlYWRsaW5lX3dvcmthcm91bmQoKToKLSAgICAiIiIKLSAgICBF
bnN1cmUgcmVhZGxpbmUgaXMgaW1wb3J0ZWQgc28gdGhhdCBpdCBhdHRhY2hlcyB0byB0aGUgY29y
cmVjdCBzdGRpbwotICAgIGhhbmRsZXMgb24gV2luZG93cy4KLQotICAgIFBkYiB1c2VzIHJlYWRs
aW5lIHN1cHBvcnQgd2hlcmUgYXZhaWxhYmxlLS13aGVuIG5vdCBydW5uaW5nIGZyb20gdGhlIFB5
dGhvbgotICAgIHByb21wdCwgdGhlIHJlYWRsaW5lIG1vZHVsZSBpcyBub3QgaW1wb3J0ZWQgdW50
aWwgcnVubmluZyB0aGUgcGRiIFJFUEwuICBJZgotICAgIHJ1bm5pbmcgcHl0ZXN0IHdpdGggdGhl
IC0tcGRiIG9wdGlvbiB0aGlzIG1lYW5zIHRoZSByZWFkbGluZSBtb2R1bGUgaXMgbm90Ci0gICAg
aW1wb3J0ZWQgdW50aWwgYWZ0ZXIgSS9PIGNhcHR1cmUgaGFzIGJlZW4gc3RhcnRlZC4KLQotICAg
IFRoaXMgaXMgYSBwcm9ibGVtIGZvciBweXJlYWRsaW5lLCB3aGljaCBpcyBvZnRlbiB1c2VkIHRv
IGltcGxlbWVudCByZWFkbGluZQotICAgIHN1cHBvcnQgb24gV2luZG93cywgYXMgaXQgZG9lcyBu
b3QgYXR0YWNoIHRvIHRoZSBjb3JyZWN0IGhhbmRsZXMgZm9yIHN0ZG91dAotICAgIGFuZC9vciBz
dGRpbiBpZiB0aGV5IGhhdmUgYmVlbiByZWRpcmVjdGVkIGJ5IHRoZSBGRENhcHR1cmUgbWVjaGFu
aXNtLiAgVGhpcwotICAgIHdvcmthcm91bmQgZW5zdXJlcyB0aGF0IHJlYWRsaW5lIGlzIGltcG9y
dGVkIGJlZm9yZSBJL08gY2FwdHVyZSBpcyBzZXR1cCBzbwotICAgIHRoYXQgaXQgY2FuIGF0dGFj
aCB0byB0aGUgYWN0dWFsIHN0ZGluL291dCBmb3IgdGhlIGNvbnNvbGUuCi0KLSAgICBTZWUgaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTI4MQotICAgICIiIgotCi0g
ICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4zMicpOgotICAgICAgICByZXR1
cm4KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCByZWFkbGluZSAgIyBub3FhCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KLQotZGVmIF9weTM2X3dpbmRvd3Njb25zb2xl
aW9fd29ya2Fyb3VuZChzdHJlYW0pOgotICAgICIiIgotICAgIFB5dGhvbiAzLjYgaW1wbGVtZW50
ZWQgdW5pY29kZSBjb25zb2xlIGhhbmRsaW5nIGZvciBXaW5kb3dzLiBUaGlzIHdvcmtzCi0gICAg
YnkgcmVhZGluZy93cml0aW5nIHRvIHRoZSByYXcgY29uc29sZSBoYW5kbGUgdXNpbmcKLSAgICBg
YHtSZWFkLFdyaXRlfUNvbnNvbGVXYGAuCi0KLSAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGFy
ZSBnb2luZyB0byBgYGR1cDJgYCBvdmVyIHRoZSBzdGRpbyBmaWxlCi0gICAgZGVzY3JpcHRvcnMg
d2hlbiBkb2luZyBgYEZEQ2FwdHVyZWBgIGFuZCB0aGlzIHdpbGwgYGBDbG9zZUhhbmRsZWBgIHRo
ZQotICAgIGhhbmRsZXMgdXNlZCBieSBQeXRob24gdG8gd3JpdGUgdG8gdGhlIGNvbnNvbGUuIFRo
b3VnaCB0aGVyZSBpcyBzdGlsbCBzb21lCi0gICAgd2VpcmRuZXNzIGFuZCB0aGUgY29uc29sZSBo
YW5kbGUgc2VlbXMgdG8gb25seSBiZSBjbG9zZWQgcmFuZG9tbHkgYW5kIG5vdAotICAgIG9uIHRo
ZSBmaXJzdCBjYWxsIHRvIGBgQ2xvc2VIYW5kbGVgYCwgb3IgbWF5YmUgaXQgZ2V0cyByZW9wZW5l
ZCB3aXRoIHRoZQotICAgIHNhbWUgaGFuZGxlIHZhbHVlIHdoZW4gd2Ugc3VzcGVuZCBjYXB0dXJp
bmcuCi0KLSAgICBUaGUgd29ya2Fyb3VuZCBpbiB0aGlzIGNhc2Ugd2lsbCByZW9wZW4gc3RkaW8g
d2l0aCBhIGRpZmZlcmVudCBmZCB3aGljaAotICAgIGFsc28gbWVhbnMgYSBkaWZmZXJlbnQgaGFu
ZGxlIGJ5IHJlcGxpY2F0aW5nIHRoZSBsb2dpYyBpbgotICAgICJQeV9saWZlY3ljbGUuYzppbml0
c3RkaW8vY3JlYXRlX3N0ZGlvIi4KLQotICAgIDpwYXJhbSBzdHJlYW06IGluIHByYWN0aWNlIGBg
c3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLCBidXQgZ2l2ZW4KLSAgICAgICAgaGVyZSBh
cyBwYXJhbWV0ZXIgZm9yIHVuaXR0ZXN0aW5nIHB1cnBvc2VzLgotCi0gICAgU2VlIGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5L2lzc3Vlcy8xMDMKLSAgICAiIiIKLSAgICBpZiBub3Qg
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbjMyJykgb3Igc3lzLnZlcnNpb25faW5mb1s6Ml0g
PCAoMywgNik6Ci0gICAgICAgIHJldHVybgotCi0gICAgIyBiYWlsIG91dCBpZiBgYHN0cmVhbWBg
IGRvZXNuJ3Qgc2VlbSBsaWtlIGEgcHJvcGVyIGBgaW9gYCBzdHJlYW0gKCMyNjY2KQotICAgIGlm
IG5vdCBoYXNhdHRyKHN0cmVhbSwgJ2J1ZmZlcicpOgotICAgICAgICByZXR1cm4KLQotICAgIGJ1
ZmZlcmVkID0gaGFzYXR0cihzdHJlYW0uYnVmZmVyLCAncmF3JykKLSAgICByYXdfc3Rkb3V0ID0g
c3RyZWFtLmJ1ZmZlci5yYXcgaWYgYnVmZmVyZWQgZWxzZSBzdHJlYW0uYnVmZmVyCi0KLSAgICBp
ZiBub3QgaXNpbnN0YW5jZShyYXdfc3Rkb3V0LCBpby5fV2luZG93c0NvbnNvbGVJTyk6Ci0gICAg
ICAgIHJldHVybgotCi0gICAgZGVmIF9yZW9wZW5fc3RkaW8oZiwgbW9kZSk6Ci0gICAgICAgIGlm
IG5vdCBidWZmZXJlZCBhbmQgbW9kZVswXSA9PSAndyc6Ci0gICAgICAgICAgICBidWZmZXJpbmcg
PSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBidWZmZXJpbmcgPSAtMQotCi0gICAgICAg
IHJldHVybiBpby5UZXh0SU9XcmFwcGVyKAotICAgICAgICAgICAgb3Blbihvcy5kdXAoZi5maWxl
bm8oKSksIG1vZGUsIGJ1ZmZlcmluZyksCi0gICAgICAgICAgICBmLmVuY29kaW5nLAotICAgICAg
ICAgICAgZi5lcnJvcnMsCi0gICAgICAgICAgICBmLm5ld2xpbmVzLAotICAgICAgICAgICAgZi5s
aW5lX2J1ZmZlcmluZykKLQotICAgIHN5cy5fX3N0ZGluX18gPSBzeXMuc3RkaW4gPSBfcmVvcGVu
X3N0ZGlvKHN5cy5zdGRpbiwgJ3JiJykKLSAgICBzeXMuX19zdGRvdXRfXyA9IHN5cy5zdGRvdXQg
PSBfcmVvcGVuX3N0ZGlvKHN5cy5zdGRvdXQsICd3YicpCi0gICAgc3lzLl9fc3RkZXJyX18gPSBz
eXMuc3RkZXJyID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3RkZXJyLCAnd2InKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9jb21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbXBh
dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU2MGZiZWMzOTc1Li4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jb21wYXQucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzMjIgKzAsMCBAQAotIiIiCi1weXRob24gdmVyc2lvbiBjb21wYXRpYmlsaXR5IGNvZGUK
LSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBw
cmludF9mdW5jdGlvbgotCi1pbXBvcnQgY29kZWNzCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQg
aW5zcGVjdAotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBweQotCi1pbXBvcnQgX3B5
dGVzdAotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBURVNUX09VVENPTUUKLQotdHJ5Ogot
ICAgIGltcG9ydCBlbnVtCi1leGNlcHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIK
LSAgICAjIE9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAzLjQrIG9yIGFzIGEgYmFja3BvcnQKLSAg
ICBlbnVtID0gTm9uZQotCi0KLV9QWTMgPSBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApCi1fUFky
ID0gbm90IF9QWTMKLQotCi1pZiBfUFkzOgotICAgIGZyb20gaW5zcGVjdCBpbXBvcnQgc2lnbmF0
dXJlLCBQYXJhbWV0ZXIgYXMgUGFyYW1ldGVyCi1lbHNlOgotICAgIGZyb20gZnVuY3NpZ3MgaW1w
b3J0IHNpZ25hdHVyZSwgUGFyYW1ldGVyIGFzIFBhcmFtZXRlcgotCi0KLU5vbmVUeXBlID0gdHlw
ZShOb25lKQotTk9UU0VUID0gb2JqZWN0KCkKLQotUFkzNSA9IHN5cy52ZXJzaW9uX2luZm9bOjJd
ID49ICgzLCA1KQotUFkzNiA9IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA2KQotTU9EVUxF
X05PVF9GT1VORF9FUlJPUiA9ICdNb2R1bGVOb3RGb3VuZEVycm9yJyBpZiBQWTM2IGVsc2UgJ0lt
cG9ydEVycm9yJwotCi0KLWRlZiBfZm9ybWF0X2FyZ3MoZnVuYyk6Ci0gICAgcmV0dXJuIHN0cihz
aWduYXR1cmUoZnVuYykpCi0KLQotaXNmdW5jdGlvbiA9IGluc3BlY3QuaXNmdW5jdGlvbgotaXNj
bGFzcyA9IGluc3BlY3QuaXNjbGFzcwotIyB1c2VkIHRvIHdvcmsgYXJvdW5kIGEgcHl0aG9uMiBl
eGNlcHRpb24gaW5mbyBsZWFrCi1leGNfY2xlYXIgPSBnZXRhdHRyKHN5cywgJ2V4Y19jbGVhcics
IGxhbWJkYTogTm9uZSkKLSMgVGhlIHR5cGUgb2YgcmUuY29tcGlsZSBvYmplY3RzIGlzIG5vdCBl
eHBvc2VkIGluIFB5dGhvbi4KLVJFR0VYX1RZUEUgPSB0eXBlKHJlLmNvbXBpbGUoJycpKQotCi0K
LWRlZiBpc19nZW5lcmF0b3IoZnVuYyk6Ci0gICAgZ2VuZnVuYyA9IGluc3BlY3QuaXNnZW5lcmF0
b3JmdW5jdGlvbihmdW5jKQotICAgIHJldHVybiBnZW5mdW5jIGFuZCBub3QgaXNjb3JvdXRpbmVm
dW5jdGlvbihmdW5jKQotCi0KLWRlZiBpc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpOgotICAgICIi
IlJldHVybiBUcnVlIGlmIGZ1bmMgaXMgYSBkZWNvcmF0ZWQgY29yb3V0aW5lIGZ1bmN0aW9uLgot
Ci0gICAgTm90ZTogY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIFB5dGhvbiAzLjUncyBidWlsdGlu
IGNvdXJvdXRpbmVzLnB5IHRvIGF2b2lkIGltcG9ydCBhc3luY2lvIGRpcmVjdGx5LAotICAgIHdo
aWNoIGluIHR1cm5zIGFsc28gaW5pdGlhbGl6ZXMgdGhlICJsb2dnaW5nIiBtb2R1bGUgYXMgc2lk
ZS1lZmZlY3QgKHNlZSBpc3N1ZSAjOCkuCi0gICAgIiIiCi0gICAgcmV0dXJuIChnZXRhdHRyKGZ1
bmMsICdfaXNfY29yb3V0aW5lJywgRmFsc2UpIG9yCi0gICAgICAgICAgICAoaGFzYXR0cihpbnNw
ZWN0LCAnaXNjb3JvdXRpbmVmdW5jdGlvbicpIGFuZCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rp
b24oZnVuYykpKQotCi0KLWRlZiBnZXRsb2NhdGlvbihmdW5jdGlvbiwgY3VyZGlyKToKLSAgICBm
biA9IHB5LnBhdGgubG9jYWwoaW5zcGVjdC5nZXRmaWxlKGZ1bmN0aW9uKSkKLSAgICBsaW5lbm8g
PSBweS5idWlsdGluLl9nZXRjb2RlKGZ1bmN0aW9uKS5jb19maXJzdGxpbmVubwotICAgIGlmIGZu
LnJlbHRvKGN1cmRpcik6Ci0gICAgICAgIGZuID0gZm4ucmVsdG8oY3VyZGlyKQotICAgIHJldHVy
biAiJXM6JWQiICUgKGZuLCBsaW5lbm8gKyAxKQotCi0KLWRlZiBudW1fbW9ja19wYXRjaF9hcmdz
KGZ1bmN0aW9uKToKLSAgICAiIiIgcmV0dXJuIG51bWJlciBvZiBhcmd1bWVudHMgdXNlZCB1cCBi
eSBtb2NrIGFyZ3VtZW50cyAoaWYgYW55KSAiIiIKLSAgICBwYXRjaGluZ3MgPSBnZXRhdHRyKGZ1
bmN0aW9uLCAicGF0Y2hpbmdzIiwgTm9uZSkKLSAgICBpZiBub3QgcGF0Y2hpbmdzOgotICAgICAg
ICByZXR1cm4gMAotICAgIG1vY2sgPSBzeXMubW9kdWxlcy5nZXQoIm1vY2siLCBzeXMubW9kdWxl
cy5nZXQoInVuaXR0ZXN0Lm1vY2siLCBOb25lKSkKLSAgICBpZiBtb2NrIGlzIG5vdCBOb25lOgot
ICAgICAgICByZXR1cm4gbGVuKFtwIGZvciBwIGluIHBhdGNoaW5ncwotICAgICAgICAgICAgICAg
ICAgICBpZiBub3QgcC5hdHRyaWJ1dGVfbmFtZSBhbmQgcC5uZXcgaXMgbW9jay5ERUZBVUxUXSkK
LSAgICByZXR1cm4gbGVuKHBhdGNoaW5ncykKLQotCi1kZWYgZ2V0ZnVuY2FyZ25hbWVzKGZ1bmN0
aW9uLCBpc19tZXRob2Q9RmFsc2UsIGNscz1Ob25lKToKLSAgICAiIiJSZXR1cm5zIHRoZSBuYW1l
cyBvZiBhIGZ1bmN0aW9uJ3MgbWFuZGF0b3J5IGFyZ3VtZW50cy4KLQotICAgIFRoaXMgc2hvdWxk
IHJldHVybiB0aGUgbmFtZXMgb2YgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cyB0aGF0OgotICAgICAg
ICAqIEFyZW4ndCBib3VuZCB0byBhbiBpbnN0YW5jZSBvciB0eXBlIGFzIGluIGluc3RhbmNlIG9y
IGNsYXNzIG1ldGhvZHMuCi0gICAgICAgICogRG9uJ3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KLSAg
ICAgICAgKiBBcmVuJ3QgYm91bmQgd2l0aCBmdW5jdG9vbHMucGFydGlhbC4KLSAgICAgICAgKiBB
cmVuJ3QgcmVwbGFjZWQgd2l0aCBtb2Nrcy4KLQotICAgIFRoZSBpc19tZXRob2QgYW5kIGNscyBh
cmd1bWVudHMgaW5kaWNhdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkCi0gICAgYmUgdHJlYXRl
ZCBhcyBhIGJvdW5kIG1ldGhvZCBldmVuIHRob3VnaCBpdCdzIG5vdCB1bmxlc3MsIG9ubHkgaW4K
LSAgICB0aGUgY2FzZSBvZiBjbHMsIHRoZSBmdW5jdGlvbiBpcyBhIHN0YXRpYyBtZXRob2QuCi0K
LSAgICBAUm9ubnlQZmFubnNjaG1pZHQ6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9y
ZWQgd2hlbiB3ZQotICAgIHJldmlzaXQgZml4dHVyZXMuIFRoZSBmaXh0dXJlIG1lY2hhbmlzbSBz
aG91bGQgYXNrIHRoZSBub2RlIGZvcgotICAgIHRoZSBmaXh0dXJlIG5hbWVzLCBhbmQgbm90IHRy
eSB0byBvYnRhaW4gZGlyZWN0bHkgZnJvbSB0aGUKLSAgICBmdW5jdGlvbiBvYmplY3Qgd2VsbCBh
ZnRlciBjb2xsZWN0aW9uIGhhcyBvY2N1cnJlZC4KLQotICAgICIiIgotICAgICMgVGhlIHBhcmFt
ZXRlcnMgYXR0cmlidXRlIG9mIGEgU2lnbmF0dXJlIG9iamVjdCBjb250YWlucyBhbgotICAgICMg
b3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlciBuYW1lcyB0byBQYXJhbWV0ZXIgaW5zdGFuY2Vz
LiAgVGhpcwotICAgICMgY3JlYXRlcyBhIHR1cGxlIG9mIHRoZSBuYW1lcyBvZiB0aGUgcGFyYW1l
dGVycyB0aGF0IGRvbid0IGhhdmUKLSAgICAjIGRlZmF1bHRzLgotICAgIGFyZ19uYW1lcyA9IHR1
cGxlKHAubmFtZSBmb3IgcCBpbiBzaWduYXR1cmUoZnVuY3Rpb24pLnBhcmFtZXRlcnMudmFsdWVz
KCkKLSAgICAgICAgICAgICAgICAgICAgICBpZiAocC5raW5kIGlzIFBhcmFtZXRlci5QT1NJVElP
TkFMX09SX0tFWVdPUkQgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcC5raW5kIGlzIFBh
cmFtZXRlci5LRVlXT1JEX09OTFkpIGFuZAotICAgICAgICAgICAgICAgICAgICAgIHAuZGVmYXVs
dCBpcyBQYXJhbWV0ZXIuZW1wdHkpCi0gICAgIyBJZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB0
cmVhdGVkIGFzIGEgYm91bmQgbWV0aG9kIGV2ZW4gdGhvdWdoCi0gICAgIyBpdCdzIHBhc3NlZCBh
cyBhbiB1bmJvdW5kIG1ldGhvZCBvciBmdW5jdGlvbiwgcmVtb3ZlIHRoZSBmaXJzdAotICAgICMg
cGFyYW1ldGVyIG5hbWUuCi0gICAgaWYgKGlzX21ldGhvZCBvcgotICAgICAgICAoY2xzIGFuZCBu
b3QgaXNpbnN0YW5jZShjbHMuX19kaWN0X18uZ2V0KGZ1bmN0aW9uLl9fbmFtZV9fLCBOb25lKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljbWV0aG9kKSkpOgotICAgICAg
ICBhcmdfbmFtZXMgPSBhcmdfbmFtZXNbMTpdCi0gICAgIyBSZW1vdmUgYW55IG5hbWVzIHRoYXQg
d2lsbCBiZSByZXBsYWNlZCB3aXRoIG1vY2tzLgotICAgIGlmIGhhc2F0dHIoZnVuY3Rpb24sICJf
X3dyYXBwZWRfXyIpOgotICAgICAgICBhcmdfbmFtZXMgPSBhcmdfbmFtZXNbbnVtX21vY2tfcGF0
Y2hfYXJncyhmdW5jdGlvbik6XQotICAgIHJldHVybiBhcmdfbmFtZXMKLQotCi1pZiBfUFkzOgot
ICAgIFNUUklOR19UWVBFUyA9IGJ5dGVzLCBzdHIKLSAgICBVTklDT0RFX1RZUEVTID0gc3RyLAot
Ci0gICAgaWYgUFkzNToKLSAgICAgICAgZGVmIF9ieXRlc190b19hc2NpaSh2YWwpOgotICAgICAg
ICAgICAgcmV0dXJuIHZhbC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQotICAg
IGVsc2U6Ci0gICAgICAgIGRlZiBfYnl0ZXNfdG9fYXNjaWkodmFsKToKLSAgICAgICAgICAgIGlm
IHZhbDoKLSAgICAgICAgICAgICAgICAjIHNvdXJjZTogaHR0cDovL2dvby5nbC9iR3Nud0MKLSAg
ICAgICAgICAgICAgICBlbmNvZGVkX2J5dGVzLCBfID0gY29kZWNzLmVzY2FwZV9lbmNvZGUodmFs
KQotICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkX2J5dGVzLmRlY29kZSgnYXNjaWknKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIGVtcHR5IGJ5dGVzIGNyYXNoZXMg
Y29kZWNzLmVzY2FwZV9lbmNvZGUgKCMxMDg3KQotICAgICAgICAgICAgICAgIHJldHVybiAnJwot
Ci0gICAgZGVmIGFzY2lpX2VzY2FwZWQodmFsKToKLSAgICAgICAgIiIiSWYgdmFsIGlzIHB1cmUg
YXNjaWksIHJldHVybnMgaXQgYXMgYSBzdHIoKS4gIE90aGVyd2lzZSwgZXNjYXBlcwotICAgICAg
ICBieXRlcyBvYmplY3RzIGludG8gYSBzZXF1ZW5jZSBvZiBlc2NhcGVkIGJ5dGVzOgotCi0gICAg
ICAgIGInXHhjM1x4YjRceGM1XHhkNicgLT4gdSdcXHhjM1xceGI0XFx4YzVcXHhkNicKLQotICAg
ICAgICBhbmQgZXNjYXBlcyB1bmljb2RlIG9iamVjdHMgaW50byBhIHNlcXVlbmNlIG9mIGVzY2Fw
ZWQgdW5pY29kZQotICAgICAgICBpZHMsIGUuZy46Ci0KLSAgICAgICAgJzRcXG5WXFxVMDAwNDNl
ZmFcXHgwZU1YV0JcXHgxZVxcdTMwMjhcXHUxNWZkXFx4Y2RcXFUwMDA3ZDk0NCcKLQotICAgICAg
ICBub3RlOgotICAgICAgICAgICB0aGUgb2J2aW91cyAidi5kZWNvZGUoJ3VuaWNvZGUtZXNjYXBl
JykiIHdpbGwgcmV0dXJuCi0gICAgICAgICAgIHZhbGlkIHV0Zi04IHVuaWNvZGUgaWYgaXQgZmlu
ZHMgdGhlbSBpbiBieXRlcywgYnV0IHdlCi0gICAgICAgICAgIHdhbnQgdG8gcmV0dXJuIGVzY2Fw
ZWQgYnl0ZXMgZm9yIGFueSBieXRlLCBldmVuIGlmIHRoZXkgbWF0Y2gKLSAgICAgICAgICAgYSB1
dGYtOCBzdHJpbmcuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBi
eXRlcyk6Ci0gICAgICAgICAgICByZXR1cm4gX2J5dGVzX3RvX2FzY2lpKHZhbCkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCd1bmljb2RlX2VzY2FwZScpLmRl
Y29kZSgnYXNjaWknKQotZWxzZToKLSAgICBTVFJJTkdfVFlQRVMgPSBieXRlcywgc3RyLCB1bmlj
b2RlCi0gICAgVU5JQ09ERV9UWVBFUyA9IHVuaWNvZGUsCi0KLSAgICBkZWYgYXNjaWlfZXNjYXBl
ZCh2YWwpOgotICAgICAgICAiIiJJbiBweTIgYnl0ZXMgYW5kIHN0ciBhcmUgdGhlIHNhbWUgdHlw
ZSwgc28gcmV0dXJuIGlmIGl0J3MgYSBieXRlcwotICAgICAgICBvYmplY3QsIHJldHVybiBpdCB1
bmNoYW5nZWQgaWYgaXQgaXMgYSBmdWxsIGFzY2lpIHN0cmluZywKLSAgICAgICAgb3RoZXJ3aXNl
IGVzY2FwZSBpdCBpbnRvIGl0cyBiaW5hcnkgZm9ybS4KLQotICAgICAgICBJZiBpdCdzIGEgdW5p
Y29kZSBzdHJpbmcsIGNoYW5nZSB0aGUgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8KLSAgICAgICAg
dW5pY29kZSBlc2NhcGVzLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHZh
bCwgYnl0ZXMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiB2YWwu
ZW5jb2RlKCdhc2NpaScpCi0gICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgot
ICAgICAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCdzdHJpbmctZXNjYXBlJykKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCd1bmljb2RlLWVzY2FwZScp
Ci0KLQotZGVmIGdldF9yZWFsX2Z1bmMob2JqKToKLSAgICAiIiIgZ2V0cyB0aGUgcmVhbCBmdW5j
dGlvbiBvYmplY3Qgb2YgdGhlIChwb3NzaWJseSkgd3JhcHBlZCBvYmplY3QgYnkKLSAgICBmdW5j
dG9vbHMud3JhcHMgb3IgZnVuY3Rvb2xzLnBhcnRpYWwuCi0gICAgIiIiCi0gICAgc3RhcnRfb2Jq
ID0gb2JqCi0gICAgZm9yIGkgaW4gcmFuZ2UoMTAwKToKLSAgICAgICAgbmV3X29iaiA9IGdldGF0
dHIob2JqLCAnX193cmFwcGVkX18nLCBOb25lKQotICAgICAgICBpZiBuZXdfb2JqIGlzIE5vbmU6
Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBvYmogPSBuZXdfb2JqCi0gICAgZWxzZToKLSAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICgiY291bGQgbm90IGZpbmQgcmVh
bCBmdW5jdGlvbiBvZiB7c3RhcnR9IgotICAgICAgICAgICAgICJcbnN0b3BwZWQgYXQge2N1cnJl
bnR9IikuZm9ybWF0KAotICAgICAgICAgICAgICAgIHN0YXJ0PXB5LmlvLnNhZmVyZXByKHN0YXJ0
X29iaiksCi0gICAgICAgICAgICAgICAgY3VycmVudD1weS5pby5zYWZlcmVwcihvYmopKSkKLSAg
ICBpZiBpc2luc3RhbmNlKG9iaiwgZnVuY3Rvb2xzLnBhcnRpYWwpOgotICAgICAgICBvYmogPSBv
YmouZnVuYwotICAgIHJldHVybiBvYmoKLQotCi1kZWYgZ2V0ZnNsaW5lbm8ob2JqKToKLSAgICAj
IHh4eCBsZXQgZGVjb3JhdG9ycyBldGMgc3BlY2lmeSBhIHNhbmUgb3JkZXJpbmcKLSAgICBvYmog
PSBnZXRfcmVhbF9mdW5jKG9iaikKLSAgICBpZiBoYXNhdHRyKG9iaiwgJ3BsYWNlX2FzJyk6Ci0g
ICAgICAgIG9iaiA9IG9iai5wbGFjZV9hcwotICAgIGZzbGluZW5vID0gX3B5dGVzdC5fY29kZS5n
ZXRmc2xpbmVubyhvYmopCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UoZnNsaW5lbm9bMV0sIGludCks
IG9iagotICAgIHJldHVybiBmc2xpbmVubwotCi0KLWRlZiBnZXRpbWZ1bmMoZnVuYyk6Ci0gICAg
dHJ5OgotICAgICAgICByZXR1cm4gZnVuYy5fX2Z1bmNfXwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVF
cnJvcjoKLSAgICAgICAgcmV0dXJuIGZ1bmMKLQotCi1kZWYgc2FmZV9nZXRhdHRyKG9iamVjdCwg
bmFtZSwgZGVmYXVsdCk6Ci0gICAgIiIiIExpa2UgZ2V0YXR0ciBidXQgcmV0dXJuIGRlZmF1bHQg
dXBvbiBhbnkgRXhjZXB0aW9uIG9yIGFueSBPdXRjb21lRXhjZXB0aW9uLgotCi0gICAgQXR0cmli
dXRlIGFjY2VzcyBjYW4gcG90ZW50aWFsbHkgZmFpbCBmb3IgJ2V2aWwnIFB5dGhvbiBvYmplY3Rz
LgotICAgIFNlZSBpc3N1ZSAjMjE0LgotICAgIEl0IGNhdGNoZXMgT3V0Y29tZUV4Y2VwdGlvbiBi
ZWNhdXNlIG9mICMyNDkwIChpc3N1ZSAjNTgwKSwgbmV3IG91dGNvbWVzIGFyZSBkZXJpdmVkIGZy
b20gQmFzZUV4Y2VwdGlvbgotICAgIGluc3RlYWQgb2YgRXhjZXB0aW9uIChmb3IgbW9yZSBkZXRh
aWxzIGNoZWNrICMyNzA3KQotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGdldGF0
dHIob2JqZWN0LCBuYW1lLCBkZWZhdWx0KQotICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAg
ICAgIHJldHVybiBkZWZhdWx0Ci0KLQotZGVmIF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nl
c3NfYV9mYWlsdXJlKCk6Ci0gICAgIiIiUmV0dXJuIGlmIHRoZSB0ZXN0IHN1aXRlIHNob3VsZCBm
YWlsIGlmIGEgQGV4cGVjdGVkRmFpbHVyZSB1bml0dGVzdCB0ZXN0IFBBU1NFUy4KLQotICAgIEZy
b20gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWw/aGlnaGxp
Z2h0PXVuaXR0ZXN0I3VuaXR0ZXN0LlRlc3RSZXN1bHQud2FzU3VjY2Vzc2Z1bDoKLSAgICAgICAg
Q2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogUmV0dXJucyBGYWxzZSBpZiB0aGVyZSB3ZXJlIGFueQot
ICAgICAgICB1bmV4cGVjdGVkU3VjY2Vzc2VzIGZyb20gdGVzdHMgbWFya2VkIHdpdGggdGhlIGV4
cGVjdGVkRmFpbHVyZSgpIGRlY29yYXRvci4KLSAgICAiIiIKLSAgICByZXR1cm4gc3lzLnZlcnNp
b25faW5mbyA+PSAoMywgNCkKLQotCi1pZiBfUFkzOgotICAgIGRlZiBzYWZlX3N0cih2KToKLSAg
ICAgICAgIiIicmV0dXJucyB2IGFzIHN0cmluZyIiIgotICAgICAgICByZXR1cm4gc3RyKHYpCi1l
bHNlOgotICAgIGRlZiBzYWZlX3N0cih2KToKLSAgICAgICAgIiIicmV0dXJucyB2IGFzIHN0cmlu
ZywgY29udmVydGluZyB0byBhc2NpaSBpZiBuZWNlc3NhcnkiIiIKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcmV0dXJuIHN0cih2KQotICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yOgotICAg
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodiwgdW5pY29kZSk6Ci0gICAgICAgICAgICAgICAg
diA9IHVuaWNvZGUodikKLSAgICAgICAgICAgIGVycm9ycyA9ICdyZXBsYWNlJwotICAgICAgICAg
ICAgcmV0dXJuIHYuZW5jb2RlKCd1dGYtOCcsIGVycm9ycykKLQotCi1DT0xMRUNUX0ZBS0VNT0RV
TEVfQVRUUklCVVRFUyA9ICgKLSAgICAnQ29sbGVjdG9yJywKLSAgICAnTW9kdWxlJywKLSAgICAn
R2VuZXJhdG9yJywKLSAgICAnRnVuY3Rpb24nLAotICAgICdJbnN0YW5jZScsCi0gICAgJ1Nlc3Np
b24nLAotICAgICdJdGVtJywKLSAgICAnQ2xhc3MnLAotICAgICdGaWxlJywKLSAgICAnX2ZpbGxm
dW5jYXJncycsCi0pCi0KLQotZGVmIF9zZXR1cF9jb2xsZWN0X2Zha2Vtb2R1bGUoKToKLSAgICBm
cm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCi0gICAgaW1wb3J0IHB5dGVzdAotICAgIHB5dGVz
dC5jb2xsZWN0ID0gTW9kdWxlVHlwZSgncHl0ZXN0LmNvbGxlY3QnKQotICAgIHB5dGVzdC5jb2xs
ZWN0Ll9fYWxsX18gPSBbXSAgIyB1c2VkIGZvciBzZXRucwotICAgIGZvciBhdHRyIGluIENPTExF
Q1RfRkFLRU1PRFVMRV9BVFRSSUJVVEVTOgotICAgICAgICBzZXRhdHRyKHB5dGVzdC5jb2xsZWN0
LCBhdHRyLCBnZXRhdHRyKHB5dGVzdCwgYXR0cikpCi0KLQotaWYgX1BZMjoKLSAgICAjIFdpdGhv
dXQgdGhpcyB0aGUgdGVzdF9kdXBmaWxlX29uX3RleHRpbyB3aWxsIGZhaWwsIG90aGVyd2lzZSBD
YXB0dXJlSU8gY291bGQgZGlyZWN0bHkgaW5oZXJpdCBmcm9tIFN0cmluZ0lPLgotICAgIGZyb20g
cHkuaW8gaW1wb3J0IFRleHRJTwotCi0gICAgY2xhc3MgQ2FwdHVyZUlPKFRleHRJTyk6Ci0KLSAg
ICAgICAgQHByb3BlcnR5Ci0gICAgICAgIGRlZiBlbmNvZGluZyhzZWxmKToKLSAgICAgICAgICAg
IHJldHVybiBnZXRhdHRyKHNlbGYsICdfZW5jb2RpbmcnLCAnVVRGLTgnKQotCi1lbHNlOgotICAg
IGltcG9ydCBpbwotCi0gICAgY2xhc3MgQ2FwdHVyZUlPKGlvLlRleHRJT1dyYXBwZXIpOgotICAg
ICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICBzdXBlcihDYXB0dXJlSU8sIHNl
bGYpLl9faW5pdF9fKAotICAgICAgICAgICAgICAgIGlvLkJ5dGVzSU8oKSwKLSAgICAgICAgICAg
ICAgICBlbmNvZGluZz0nVVRGLTgnLCBuZXdsaW5lPScnLCB3cml0ZV90aHJvdWdoPVRydWUsCi0g
ICAgICAgICAgICApCi0KLSAgICAgICAgZGVmIGdldHZhbHVlKHNlbGYpOgotICAgICAgICAgICAg
cmV0dXJuIHNlbGYuYnVmZmVyLmdldHZhbHVlKCkuZGVjb2RlKCdVVEYtOCcpCi0KLQotY2xhc3Mg
RnVuY2FyZ25hbWVzQ29tcGF0QXR0cihvYmplY3QpOgotICAgICIiIiBoZWxwZXIgY2xhc3Mgc28g
dGhhdCBNZXRhZnVuYywgRnVuY3Rpb24gYW5kIEZpeHR1cmVSZXF1ZXN0Ci0gICAgZG9uJ3QgbmVl
ZCB0byBlYWNoIGRlZmluZSB0aGUgImZ1bmNhcmduYW1lcyIgY29tcGF0aWJpbGl0eSBhdHRyaWJ1
dGUuCi0gICAgIiIiCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGZ1bmNhcmduYW1lcyhzZWxmKToK
LSAgICAgICAgIiIiIGFsaWFzIGF0dHJpYnV0ZSBmb3IgYGBmaXh0dXJlbmFtZXNgYCBmb3IgcHJl
LTIuMyBjb21wYXRpYmlsaXR5IiIiCi0gICAgICAgIHJldHVybiBzZWxmLmZpeHR1cmVuYW1lcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2NvbmZpZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk5YzgwNzlk
NDE1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jb25maWcucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDAwICswLDAgQEAKLSIiIiBjb21tYW5kIGxpbmUgb3B0aW9ucywg
aW5pLWZpbGUgYW5kIGNvbmZ0ZXN0LnB5IHByb2Nlc3NpbmcuICIiIgotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0
IGFyZ3BhcnNlCi1pbXBvcnQgc2hsZXgKLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB0eXBlcwot
aW1wb3J0IHdhcm5pbmdzCi0KLWltcG9ydCBzaXgKLWltcG9ydCBweQotIyBET04ndCBpbXBvcnQg
cHl0ZXN0IGhlcmUgYmVjYXVzZSBpdCBjYXVzZXMgaW1wb3J0IGN5Y2xlIHRyb3VibGVzCi1pbXBv
cnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBvcnQgX3B5dGVzdC5o
b29rc3BlYyAgIyB0aGUgZXh0ZW5zaW9uIHBvaW50IGRlZmluaXRpb25zCi1pbXBvcnQgX3B5dGVz
dC5hc3NlcnRpb24KLWZyb20gcGx1Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBIb29raW1wbE1h
cmtlciwgSG9va3NwZWNNYXJrZXIKLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IHNhZmVfc3Ry
Ci0KLWhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoInB5dGVzdCIpCi1ob29rc3BlYyA9IEhvb2tz
cGVjTWFya2VyKCJweXRlc3QiKQotCi0jIHB5dGVzdCBzdGFydHVwCi0jCi0KLQotY2xhc3MgQ29u
ZnRlc3RJbXBvcnRGYWlsdXJlKEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
dGgsIGV4Y2luZm8pOgotICAgICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgcGF0aCwgZXhj
aW5mbykKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotICAgICAgICBzZWxmLmV4Y2luZm8gPSBl
eGNpbmZvCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgZXR5cGUsIGV2YWx1ZSwg
ZXRiID0gc2VsZi5leGNpbmZvCi0gICAgICAgIGZvcm1hdHRlZCA9IHRyYWNlYmFjay5mb3JtYXRf
dGIoZXRiKQotICAgICAgICAjIFRoZSBsZXZlbCBvZiB0aGUgdHJhY2ViYWNrcyB3ZSB3YW50IHRv
IHByaW50IGlzIGhhbmQgY3JhZnRlZCA6KAotICAgICAgICByZXR1cm4gcmVwcihldmFsdWUpICsg
J1xuJyArICcnLmpvaW4oZm9ybWF0dGVkWzI6XSkKLQotCi1kZWYgbWFpbihhcmdzPU5vbmUsIHBs
dWdpbnM9Tm9uZSk6Ci0gICAgIiIiIHJldHVybiBleGl0IGNvZGUsIGFmdGVyIHBlcmZvcm1pbmcg
YW4gaW4tcHJvY2VzcyB0ZXN0IHJ1bi4KLQotICAgIDphcmcgYXJnczogbGlzdCBvZiBjb21tYW5k
IGxpbmUgYXJndW1lbnRzLgotCi0gICAgOmFyZyBwbHVnaW5zOiBsaXN0IG9mIHBsdWdpbiBvYmpl
Y3RzIHRvIGJlIGF1dG8tcmVnaXN0ZXJlZCBkdXJpbmcKLSAgICAgICAgICAgICAgICAgIGluaXRp
YWxpemF0aW9uLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
Y29uZmlnID0gX3ByZXBhcmVjb25maWcoYXJncywgcGx1Z2lucykKLSAgICAgICAgZXhjZXB0IENv
bmZ0ZXN0SW1wb3J0RmFpbHVyZSBhcyBlOgotICAgICAgICAgICAgdHcgPSBweS5pby5UZXJtaW5h
bFdyaXRlcihzeXMuc3RkZXJyKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gdHJhY2ViYWNrLmZv
cm1hdF9leGNlcHRpb24oKmUuZXhjaW5mbyk6Ci0gICAgICAgICAgICAgICAgdHcubGluZShsaW5l
LnJzdHJpcCgpLCByZWQ9VHJ1ZSkKLSAgICAgICAgICAgIHR3LmxpbmUoIkVSUk9SOiBjb3VsZCBu
b3QgbG9hZCAlc1xuIiAlIChlLnBhdGgpLCByZWQ9VHJ1ZSkKLSAgICAgICAgICAgIHJldHVybiA0
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGNvbmZpZy5ob29rLnB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnPWNvbmZpZykKLSAgICAgICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUo
KQotICAgIGV4Y2VwdCBVc2FnZUVycm9yIGFzIGU6Ci0gICAgICAgIGZvciBtc2cgaW4gZS5hcmdz
OgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRVJST1I6ICVzXG4iICUgKG1zZywpKQot
ICAgICAgICByZXR1cm4gNAotCi0KLWNsYXNzIGNtZGxpbmU6ICAjIGNvbXBhdGliaWxpdHkgbmFt
ZXNwYWNlCi0gICAgbWFpbiA9IHN0YXRpY21ldGhvZChtYWluKQotCi0KLWNsYXNzIFVzYWdlRXJy
b3IoRXhjZXB0aW9uKToKLSAgICAiIiIgZXJyb3IgaW4gcHl0ZXN0IHVzYWdlIG9yIGludm9jYXRp
b24iIiIKLQotCi1jbGFzcyBQcmludEhlbHAoRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hl
biBweXRlc3Qgc2hvdWxkIHByaW50IGl0J3MgaGVscCB0byBza2lwIHRoZSByZXN0IG9mIHRoZQot
ICAgIGFyZ3VtZW50IHBhcnNpbmcgYW5kIHZhbGlkYXRpb24uIiIiCi0gICAgcGFzcwotCi0KLWRl
ZiBmaWxlbmFtZV9hcmcocGF0aCwgb3B0bmFtZSk6Ci0gICAgIiIiIEFyZ3BhcnNlIHR5cGUgdmFs
aWRhdG9yIGZvciBmaWxlbmFtZSBhcmd1bWVudHMuCi0KLSAgICA6cGF0aDogcGF0aCBvZiBmaWxl
bmFtZQotICAgIDpvcHRuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24KLSAgICAiIiIKLSAgICBpZiBv
cy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJ7MH0gbXVzdCBi
ZSBhIGZpbGVuYW1lLCBnaXZlbjogezF9Ii5mb3JtYXQob3B0bmFtZSwgcGF0aCkpCi0gICAgcmV0
dXJuIHBhdGgKLQotCi1kZWYgZGlyZWN0b3J5X2FyZyhwYXRoLCBvcHRuYW1lKToKLSAgICAiIiJB
cmdwYXJzZSB0eXBlIHZhbGlkYXRvciBmb3IgZGlyZWN0b3J5IGFyZ3VtZW50cy4KLQotICAgIDpw
YXRoOiBwYXRoIG9mIGRpcmVjdG9yeQotICAgIDpvcHRuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24K
LSAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgcmFpc2Ug
VXNhZ2VFcnJvcigiezB9IG11c3QgYmUgYSBkaXJlY3RvcnksIGdpdmVuOiB7MX0iLmZvcm1hdChv
cHRuYW1lLCBwYXRoKSkKLSAgICByZXR1cm4gcGF0aAotCi0KLWRlZmF1bHRfcGx1Z2lucyA9ICgK
LSAgICAibWFyayBtYWluIHRlcm1pbmFsIHJ1bm5lciBweXRob24gZml4dHVyZXMgZGVidWdnaW5n
IHVuaXR0ZXN0IGNhcHR1cmUgc2tpcHBpbmcgIgotICAgICJ0bXBkaXIgbW9ua2V5cGF0Y2ggcmVj
d2FybiBwYXN0ZWJpbiBoZWxwY29uZmlnIG5vc2UgYXNzZXJ0aW9uICIKLSAgICAianVuaXR4bWwg
cmVzdWx0bG9nIGRvY3Rlc3QgY2FjaGVwcm92aWRlciBmcmVlemVfc3VwcG9ydCAiCi0gICAgInNl
dHVwb25seSBzZXR1cHBsYW4gd2FybmluZ3MgbG9nZ2luZyIpLnNwbGl0KCkKLQotCi1idWlsdGlu
X3BsdWdpbnMgPSBzZXQoZGVmYXVsdF9wbHVnaW5zKQotYnVpbHRpbl9wbHVnaW5zLmFkZCgicHl0
ZXN0ZXIiKQotCi0KLWRlZiBnZXRfY29uZmlnKCk6Ci0gICAgIyBzdWJzZXF1ZW50IGNhbGxzIHRv
IG1haW4gd2lsbCBjcmVhdGUgYSBmcmVzaCBpbnN0YW5jZQotICAgIHBsdWdpbm1hbmFnZXIgPSBQ
eXRlc3RQbHVnaW5NYW5hZ2VyKCkKLSAgICBjb25maWcgPSBDb25maWcocGx1Z2lubWFuYWdlcikK
LSAgICBmb3Igc3BlYyBpbiBkZWZhdWx0X3BsdWdpbnM6Ci0gICAgICAgIHBsdWdpbm1hbmFnZXIu
aW1wb3J0X3BsdWdpbihzcGVjKQotICAgIHJldHVybiBjb25maWcKLQotCi1kZWYgZ2V0X3BsdWdp
bl9tYW5hZ2VyKCk6Ci0gICAgIiIiCi0gICAgT2J0YWluIGEgbmV3IGluc3RhbmNlIG9mIHRoZQot
ICAgIDpweTpjbGFzczpgX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlcmAsIHdpdGgg
ZGVmYXVsdCBwbHVnaW5zCi0gICAgYWxyZWFkeSBsb2FkZWQuCi0KLSAgICBUaGlzIGZ1bmN0aW9u
IGNhbiBiZSB1c2VkIGJ5IGludGVncmF0aW9uIHdpdGggb3RoZXIgdG9vbHMsIGxpa2UgaG9va2lu
ZwotICAgIGludG8gcHl0ZXN0IHRvIHJ1biB0ZXN0cyBpbnRvIGFuIElERS4KLSAgICAiIiIKLSAg
ICByZXR1cm4gZ2V0X2NvbmZpZygpLnBsdWdpbm1hbmFnZXIKLQotCi1kZWYgX3ByZXBhcmVjb25m
aWcoYXJncz1Ob25lLCBwbHVnaW5zPU5vbmUpOgotICAgIHdhcm5pbmcgPSBOb25lCi0gICAgaWYg
YXJncyBpcyBOb25lOgotICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCi0gICAgZWxpZiBpc2lu
c3RhbmNlKGFyZ3MsIHB5LnBhdGgubG9jYWwpOgotICAgICAgICBhcmdzID0gW3N0cihhcmdzKV0K
LSAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsICh0dXBsZSwgbGlzdCkpOgotICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShhcmdzLCBzdHIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigibm90IGEgc3RyaW5nIG9yIGFyZ3VtZW50IGxpc3Q6ICVyIiAlIChhcmdzLCkpCi0gICAgICAg
IGFyZ3MgPSBzaGxleC5zcGxpdChhcmdzLCBwb3NpeD1zeXMucGxhdGZvcm0gIT0gIndpbjMyIikK
LSAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBkZXByZWNhdGVkCi0gICAgICAgIHdhcm5pbmcg
PSBkZXByZWNhdGVkLk1BSU5fU1RSX0FSR1MKLSAgICBjb25maWcgPSBnZXRfY29uZmlnKCkKLSAg
ICBwbHVnaW5tYW5hZ2VyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIKLSAgICB0cnk6Ci0gICAgICAg
IGlmIHBsdWdpbnM6Ci0gICAgICAgICAgICBmb3IgcGx1Z2luIGluIHBsdWdpbnM6Ci0gICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShwbHVnaW4sIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAg
ICAgICAgICAgICAgICBwbHVnaW5tYW5hZ2VyLmNvbnNpZGVyX3BsdWdpbmFyZyhwbHVnaW4pCi0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2lubWFuYWdlci5y
ZWdpc3RlcihwbHVnaW4pCi0gICAgICAgIGlmIHdhcm5pbmc6Ci0gICAgICAgICAgICBjb25maWcu
d2FybignQzEnLCB3YXJuaW5nKQotICAgICAgICByZXR1cm4gcGx1Z2lubWFuYWdlci5ob29rLnB5
dGVzdF9jbWRsaW5lX3BhcnNlKAotICAgICAgICAgICAgcGx1Z2lubWFuYWdlcj1wbHVnaW5tYW5h
Z2VyLCBhcmdzPWFyZ3MpCi0gICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgIGNvbmZp
Zy5fZW5zdXJlX3VuY29uZmlndXJlKCkKLSAgICAgICAgcmFpc2UKLQotCi1jbGFzcyBQeXRlc3RQ
bHVnaW5NYW5hZ2VyKFBsdWdpbk1hbmFnZXIpOgotICAgICIiIgotICAgIE92ZXJ3cml0ZXMgOnB5
OmNsYXNzOmBwbHVnZ3kuUGx1Z2luTWFuYWdlciA8cGx1Z2d5LlBsdWdpbk1hbmFnZXI+YCB0byBh
ZGQgcHl0ZXN0LXNwZWNpZmljCi0gICAgZnVuY3Rpb25hbGl0eToKLQotICAgICogbG9hZGluZyBw
bHVnaW5zIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYGBQWVRFU1RfUExVR0lOYGAgZW52IHZhcmlh
YmxlIGFuZAotICAgICAgYGBweXRlc3RfcGx1Z2luc2BgIGdsb2JhbCB2YXJpYWJsZXMgZm91bmQg
aW4gcGx1Z2lucyBiZWluZyBsb2FkZWQ7Ci0gICAgKiBgYGNvbmZ0ZXN0LnB5YGAgbG9hZGluZyBk
dXJpbmcgc3RhcnQtdXA7Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCJweXRlc3QiLCBp
bXBscHJlZml4PSJweXRlc3RfIikKLSAgICAgICAgc2VsZi5fY29uZnRlc3RfcGx1Z2lucyA9IHNl
dCgpCi0KLSAgICAgICAgIyBzdGF0ZSByZWxhdGVkIHRvIGxvY2FsIGNvbmZ0ZXN0IHBsdWdpbnMK
LSAgICAgICAgc2VsZi5fcGF0aDJjb25mbW9kcyA9IHt9Ci0gICAgICAgIHNlbGYuX2NvbmZ0ZXN0
cGF0aDJtb2QgPSB7fQotICAgICAgICBzZWxmLl9jb25mY3V0ZGlyID0gTm9uZQotICAgICAgICBz
ZWxmLl9ub2NvbmZ0ZXN0ID0gRmFsc2UKLSAgICAgICAgc2VsZi5fZHVwbGljYXRlcGF0aHMgPSBz
ZXQoKQotCi0gICAgICAgIHNlbGYuYWRkX2hvb2tzcGVjcyhfcHl0ZXN0Lmhvb2tzcGVjKQotICAg
ICAgICBzZWxmLnJlZ2lzdGVyKHNlbGYpCi0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCdQWVRF
U1RfREVCVUcnKToKLSAgICAgICAgICAgIGVyciA9IHN5cy5zdGRlcnIKLSAgICAgICAgICAgIGVu
Y29kaW5nID0gZ2V0YXR0cihlcnIsICdlbmNvZGluZycsICd1dGY4JykKLSAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICBlcnIgPSBweS5pby5kdXBmaWxlKGVyciwgZW5jb2Rpbmc9ZW5j
b2RpbmcpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHBh
c3MKLSAgICAgICAgICAgIHNlbGYudHJhY2Uucm9vdC5zZXR3cml0ZXIoZXJyLndyaXRlKQotICAg
ICAgICAgICAgc2VsZi5lbmFibGVfdHJhY2luZygpCi0KLSAgICAgICAgIyBDb25maWcuX2NvbnNp
ZGVyX2ltcG9ydGhvb2sgd2lsbCBzZXQgYSByZWFsIG9iamVjdCBpZiByZXF1aXJlZC4KLSAgICAg
ICAgc2VsZi5yZXdyaXRlX2hvb2sgPSBfcHl0ZXN0LmFzc2VydGlvbi5EdW1teVJld3JpdGVIb29r
KCkKLQotICAgIGRlZiBhZGRob29rcyhzZWxmLCBtb2R1bGVfb3JfY2xhc3MpOgotICAgICAgICAi
IiIKLSAgICAgICAgLi4gZGVwcmVjYXRlZDo6IDIuOAotCi0gICAgICAgIFVzZSA6cHk6bWV0aDpg
cGx1Z2d5LlBsdWdpbk1hbmFnZXIuYWRkX2hvb2tzcGVjcyA8UGx1Z2luTWFuYWdlci5hZGRfaG9v
a3NwZWNzPmAKLSAgICAgICAgaW5zdGVhZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmcg
PSBkaWN0KGNvZGU9IkkyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgZnNsb2NhdGlvbj1fcHl0
ZXN0Ll9jb2RlLmdldGZzbGluZW5vKHN5cy5fZ2V0ZnJhbWUoMSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICBub2RlaWQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0idXNl
IHBsdWdpbm1hbmFnZXIuYWRkX2hvb2tzcGVjcyBpbnN0ZWFkIG9mICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVwcmVjYXRlZCBhZGRob29rcygpIG1ldGhvZC4iKQotICAgICAg
ICBzZWxmLl93YXJuKHdhcm5pbmcpCi0gICAgICAgIHJldHVybiBzZWxmLmFkZF9ob29rc3BlY3Mo
bW9kdWxlX29yX2NsYXNzKQotCi0gICAgZGVmIHBhcnNlX2hvb2tpbXBsX29wdHMoc2VsZiwgcGx1
Z2luLCBuYW1lKToKLSAgICAgICAgIyBweXRlc3QgaG9va3MgYXJlIGFsd2F5cyBwcmVmaXhlZCB3
aXRoIHB5dGVzdF8KLSAgICAgICAgIyBzbyB3ZSBhdm9pZCBhY2Nlc3NpbmcgcG9zc2libHkgbm9u
LXJlYWRhYmxlIGF0dHJpYnV0ZXMKLSAgICAgICAgIyAoc2VlIGlzc3VlICMxMDczKQotICAgICAg
ICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCJweXRlc3RfIik6Ci0gICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgIyBpZ25vcmUgc29tZSBoaXN0b3JpYyBzcGVjaWFsIG5hbWVzIHdoaWNoIGNhbiBu
b3QgYmUgaG9va3MgYW55d2F5Ci0gICAgICAgIGlmIG5hbWUgPT0gInB5dGVzdF9wbHVnaW5zIiBv
ciBuYW1lLnN0YXJ0c3dpdGgoInB5dGVzdF9mdW5jYXJnX18iKToKLSAgICAgICAgICAgIHJldHVy
bgotCi0gICAgICAgIG1ldGhvZCA9IGdldGF0dHIocGx1Z2luLCBuYW1lKQotICAgICAgICBvcHRz
ID0gc3VwZXIoUHl0ZXN0UGx1Z2luTWFuYWdlciwgc2VsZikucGFyc2VfaG9va2ltcGxfb3B0cyhw
bHVnaW4sIG5hbWUpCi0gICAgICAgIGlmIG9wdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBm
b3IgbmFtZSBpbiAoInRyeWZpcnN0IiwgInRyeWxhc3QiLCAib3B0aW9uYWxob29rIiwgImhvb2t3
cmFwcGVyIik6Ci0gICAgICAgICAgICAgICAgb3B0cy5zZXRkZWZhdWx0KG5hbWUsIGhhc2F0dHIo
bWV0aG9kLCBuYW1lKSkKLSAgICAgICAgcmV0dXJuIG9wdHMKLQotICAgIGRlZiBwYXJzZV9ob29r
c3BlY19vcHRzKHNlbGYsIG1vZHVsZV9vcl9jbGFzcywgbmFtZSk6Ci0gICAgICAgIG9wdHMgPSBz
dXBlcihQeXRlc3RQbHVnaW5NYW5hZ2VyLCBzZWxmKS5wYXJzZV9ob29rc3BlY19vcHRzKAotICAg
ICAgICAgICAgbW9kdWxlX29yX2NsYXNzLCBuYW1lKQotICAgICAgICBpZiBvcHRzIGlzIE5vbmU6
Ci0gICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1vZHVsZV9vcl9jbGFzcywgbmFtZSkKLSAg
ICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0XyIpOgotICAgICAgICAgICAgICAg
IG9wdHMgPSB7ImZpcnN0cmVzdWx0IjogaGFzYXR0cihtZXRob2QsICJmaXJzdHJlc3VsdCIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgImhpc3RvcmljIjogaGFzYXR0cihtZXRob2QsICJoaXN0
b3JpYyIpfQotICAgICAgICByZXR1cm4gb3B0cwotCi0gICAgZGVmIHJlZ2lzdGVyKHNlbGYsIHBs
dWdpbiwgbmFtZT1Ob25lKToKLSAgICAgICAgaWYgbmFtZSA9PSAncHl0ZXN0X2NhdGNobG9nJzoK
LSAgICAgICAgICAgIHNlbGYuX3dhcm4oJ3B5dGVzdC1jYXRjaGxvZyBwbHVnaW4gaGFzIGJlZW4g
bWVyZ2VkIGludG8gdGhlIGNvcmUsICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZSBy
ZW1vdmUgaXQgZnJvbSB5b3VyIHJlcXVpcmVtZW50cy4nKQotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIHJldCA9IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLnJlZ2lzdGVyKHBs
dWdpbiwgbmFtZSkKLSAgICAgICAgaWYgcmV0OgotICAgICAgICAgICAgc2VsZi5ob29rLnB5dGVz
dF9wbHVnaW5fcmVnaXN0ZXJlZC5jYWxsX2hpc3RvcmljKAotICAgICAgICAgICAgICAgIGt3YXJn
cz1kaWN0KHBsdWdpbj1wbHVnaW4sIG1hbmFnZXI9c2VsZikpCi0KLSAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UocGx1Z2luLCB0eXBlcy5Nb2R1bGVUeXBlKToKLSAgICAgICAgICAgICAgICBzZWxm
LmNvbnNpZGVyX21vZHVsZShwbHVnaW4pCi0gICAgICAgIHJldHVybiByZXQKLQotICAgIGRlZiBn
ZXRwbHVnaW4oc2VsZiwgbmFtZSk6Ci0gICAgICAgICMgc3VwcG9ydCBkZXByZWNhdGVkIG5hbWlu
ZyBiZWNhdXNlIHBsdWdpbnMgKHhkaXN0IGUuZy4pIHVzZSBpdAotICAgICAgICByZXR1cm4gc2Vs
Zi5nZXRfcGx1Z2luKG5hbWUpCi0KLSAgICBkZWYgaGFzcGx1Z2luKHNlbGYsIG5hbWUpOgotICAg
ICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgcGx1Z2luIHdpdGggdGhlIGdpdmVuIG5hbWUgaXMg
cmVnaXN0ZXJlZC4iIiIKLSAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5nZXRfcGx1Z2luKG5hbWUp
KQotCi0gICAgZGVmIHB5dGVzdF9jb25maWd1cmUoc2VsZiwgY29uZmlnKToKLSAgICAgICAgIyBY
WFggbm93IHRoYXQgdGhlIHBsdWdpbm1hbmFnZXIgZXhwb3NlcyBob29raW1wbCh0cnlmaXJzdC4u
LikKLSAgICAgICAgIyB3ZSBzaG91bGQgcmVtb3ZlIHRyeWZpcnN0L3RyeWxhc3QgYXMgbWFya2Vy
cwotICAgICAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0cnlmaXJzdDogbWFyayBhIGhvb2sgaW1wbGVtZW50YXRp
b24gZnVuY3Rpb24gc3VjaCB0aGF0IHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwbHVnaW4gbWFjaGluZXJ5IHdpbGwgdHJ5IHRvIGNhbGwgaXQgZmlyc3QvYXMgZWFybHkg
YXMgcG9zc2libGUuIikKLSAgICAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoIm1hcmtlcnMi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJ5bGFzdDogbWFyayBhIGhvb2sg
aW1wbGVtZW50YXRpb24gZnVuY3Rpb24gc3VjaCB0aGF0IHRoZSAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwbHVnaW4gbWFjaGluZXJ5IHdpbGwgdHJ5IHRvIGNhbGwgaXQgbGFz
dC9hcyBsYXRlIGFzIHBvc3NpYmxlLiIpCi0KLSAgICBkZWYgX3dhcm4oc2VsZiwgbWVzc2FnZSk6
Ci0gICAgICAgIGt3YXJncyA9IG1lc3NhZ2UgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBkaWN0KSBl
bHNlIHsKLSAgICAgICAgICAgICdjb2RlJzogJ0kxJywKLSAgICAgICAgICAgICdtZXNzYWdlJzog
bWVzc2FnZSwKLSAgICAgICAgICAgICdmc2xvY2F0aW9uJzogTm9uZSwKLSAgICAgICAgICAgICdu
b2RlaWQnOiBOb25lLAotICAgICAgICB9Ci0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfbG9nd2Fy
bmluZy5jYWxsX2hpc3RvcmljKGt3YXJncz1rd2FyZ3MpCi0KLSAgICAjCi0gICAgIyBpbnRlcm5h
bCBBUEkgZm9yIGxvY2FsIGNvbmZ0ZXN0IHBsdWdpbiBoYW5kbGluZwotICAgICMKLSAgICBkZWYg
X3NldF9pbml0aWFsX2NvbmZ0ZXN0cyhzZWxmLCBuYW1lc3BhY2UpOgotICAgICAgICAiIiIgbG9h
ZCBpbml0aWFsIGNvbmZ0ZXN0IGZpbGVzIGdpdmVuIGEgcHJlcGFyc2VkICJuYW1lc3BhY2UiLgot
ICAgICAgICAgICAgQXMgY29uZnRlc3QgZmlsZXMgbWF5IGFkZCB0aGVpciBvd24gY29tbWFuZCBs
aW5lIG9wdGlvbnMKLSAgICAgICAgICAgIHdoaWNoIGhhdmUgYXJndW1lbnRzICgnLS1teS1vcHQg
c29tZXBhdGgnKSB3ZSBtaWdodCBnZXQgc29tZQotICAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVz
LiAgQWxsIGJ1aWx0aW4gYW5kIDNyZCBwYXJ0eSBwbHVnaW5zIHdpbGwgaGF2ZQotICAgICAgICAg
ICAgYmVlbiBsb2FkZWQsIGhvd2V2ZXIsIHNvIGNvbW1vbiBvcHRpb25zIHdpbGwgbm90IGNvbmZ1
c2Ugb3VyIGxvZ2ljCi0gICAgICAgICAgICBoZXJlLgotICAgICAgICAiIiIKLSAgICAgICAgY3Vy
cmVudCA9IHB5LnBhdGgubG9jYWwoKQotICAgICAgICBzZWxmLl9jb25mY3V0ZGlyID0gY3VycmVu
dC5qb2luKG5hbWVzcGFjZS5jb25mY3V0ZGlyLCBhYnM9VHJ1ZSkgXAotICAgICAgICAgICAgaWYg
bmFtZXNwYWNlLmNvbmZjdXRkaXIgZWxzZSBOb25lCi0gICAgICAgIHNlbGYuX25vY29uZnRlc3Qg
PSBuYW1lc3BhY2Uubm9jb25mdGVzdAotICAgICAgICB0ZXN0cGF0aHMgPSBuYW1lc3BhY2UuZmls
ZV9vcl9kaXIKLSAgICAgICAgZm91bmRhbmNob3IgPSBGYWxzZQotICAgICAgICBmb3IgcGF0aCBp
biB0ZXN0cGF0aHM6Ci0gICAgICAgICAgICBwYXRoID0gc3RyKHBhdGgpCi0gICAgICAgICAgICAj
IHJlbW92ZSBub2RlLWlkIHN5bnRheAotICAgICAgICAgICAgaSA9IHBhdGguZmluZCgiOjoiKQot
ICAgICAgICAgICAgaWYgaSAhPSAtMToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs6aV0K
LSAgICAgICAgICAgIGFuY2hvciA9IGN1cnJlbnQuam9pbihwYXRoLCBhYnM9MSkKLSAgICAgICAg
ICAgIGlmIGV4aXN0cyhhbmNob3IpOiAgIyB3ZSBmb3VuZCBzb21lIGZpbGUgb2JqZWN0Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fdHJ5X2xvYWRfY29uZnRlc3QoYW5jaG9yKQotICAgICAgICAgICAg
ICAgIGZvdW5kYW5jaG9yID0gVHJ1ZQotICAgICAgICBpZiBub3QgZm91bmRhbmNob3I6Ci0gICAg
ICAgICAgICBzZWxmLl90cnlfbG9hZF9jb25mdGVzdChjdXJyZW50KQotCi0gICAgZGVmIF90cnlf
bG9hZF9jb25mdGVzdChzZWxmLCBhbmNob3IpOgotICAgICAgICBzZWxmLl9nZXRjb25mdGVzdG1v
ZHVsZXMoYW5jaG9yKQotICAgICAgICAjIGxldCdzIGFsc28gY29uc2lkZXIgdGVzdCogc3ViZGly
cwotICAgICAgICBpZiBhbmNob3IuY2hlY2soZGlyPTEpOgotICAgICAgICAgICAgZm9yIHggaW4g
YW5jaG9yLmxpc3RkaXIoInRlc3QqIik6Ci0gICAgICAgICAgICAgICAgaWYgeC5jaGVjayhkaXI9
MSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldGNvbmZ0ZXN0bW9kdWxlcyh4KQotCi0g
ICAgZGVmIF9nZXRjb25mdGVzdG1vZHVsZXMoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlmIHNlbGYu
X25vY29uZnRlc3Q6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3BhdGgyY29uZm1vZHNbcGF0aF0KLSAgICAgICAgZXhjZXB0IEtl
eUVycm9yOgotICAgICAgICAgICAgaWYgcGF0aC5pc2ZpbGUoKToKLSAgICAgICAgICAgICAgICBj
bGlzdCA9IHNlbGYuX2dldGNvbmZ0ZXN0bW9kdWxlcyhwYXRoLmRpcnBhdGgoKSkKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBYWFggdGhlc2UgZGF5cyB3ZSBtYXkgcmF0aGVy
IHdhbnQgdG8gdXNlIGNvbmZpZy5yb290ZGlyCi0gICAgICAgICAgICAgICAgIyBhbmQgYWxsb3cg
dXNlcnMgdG8gb3B0IGludG8gbG9va2luZyBpbnRvIHRoZSByb290ZGlyIHBhcmVudAotICAgICAg
ICAgICAgICAgICMgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiByZXF1aXJpbmcgdG8gc3BlY2lmeSBj
b25mY3V0ZGlyCi0gICAgICAgICAgICAgICAgY2xpc3QgPSBbXQotICAgICAgICAgICAgICAgIGZv
ciBwYXJlbnQgaW4gcGF0aC5wYXJ0cygpOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9j
b25mY3V0ZGlyIGFuZCBzZWxmLl9jb25mY3V0ZGlyLnJlbHRvKHBhcmVudCk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBjb25mdGVzdHBhdGgg
PSBwYXJlbnQuam9pbigiY29uZnRlc3QucHkiKQotICAgICAgICAgICAgICAgICAgICBpZiBjb25m
dGVzdHBhdGguaXNmaWxlKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBzZWxmLl9p
bXBvcnRjb25mdGVzdChjb25mdGVzdHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBjbGlz
dC5hcHBlbmQobW9kKQotCi0gICAgICAgICAgICBzZWxmLl9wYXRoMmNvbmZtb2RzW3BhdGhdID0g
Y2xpc3QKLSAgICAgICAgICAgIHJldHVybiBjbGlzdAotCi0gICAgZGVmIF9yZ2V0X3dpdGhfY29u
Zm1vZChzZWxmLCBuYW1lLCBwYXRoKToKLSAgICAgICAgbW9kdWxlcyA9IHNlbGYuX2dldGNvbmZ0
ZXN0bW9kdWxlcyhwYXRoKQotICAgICAgICBmb3IgbW9kIGluIHJldmVyc2VkKG1vZHVsZXMpOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBtb2QsIGdldGF0dHIobW9k
LCBuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgIHJhaXNlIEtleUVycm9yKG5hbWUpCi0KLSAgICBkZWYgX2lt
cG9ydGNvbmZ0ZXN0KHNlbGYsIGNvbmZ0ZXN0cGF0aCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9jb25mdGVzdHBhdGgybW9kW2NvbmZ0ZXN0cGF0aF0KLSAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGtncGF0aCA9IGNvbmZ0ZXN0cGF0aC5weXBr
Z3BhdGgoKQotICAgICAgICAgICAgaWYgcGtncGF0aCBpcyBOb25lOgotICAgICAgICAgICAgICAg
IF9lbnN1cmVfcmVtb3ZlZF9zeXNtb2R1bGUoY29uZnRlc3RwYXRoLnB1cmViYXNlbmFtZSkKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBjb25mdGVzdHBhdGgucHlpbXBv
cnQoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICByYWlz
ZSBDb25mdGVzdEltcG9ydEZhaWx1cmUoY29uZnRlc3RwYXRoLCBzeXMuZXhjX2luZm8oKSkKLQot
ICAgICAgICAgICAgc2VsZi5fY29uZnRlc3RfcGx1Z2lucy5hZGQobW9kKQotICAgICAgICAgICAg
c2VsZi5fY29uZnRlc3RwYXRoMm1vZFtjb25mdGVzdHBhdGhdID0gbW9kCi0gICAgICAgICAgICBk
aXJwYXRoID0gY29uZnRlc3RwYXRoLmRpcnBhdGgoKQotICAgICAgICAgICAgaWYgZGlycGF0aCBp
biBzZWxmLl9wYXRoMmNvbmZtb2RzOgotICAgICAgICAgICAgICAgIGZvciBwYXRoLCBtb2RzIGlu
IHNlbGYuX3BhdGgyY29uZm1vZHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgaWYgcGF0
aCBhbmQgcGF0aC5yZWx0byhkaXJwYXRoKSBvciBwYXRoID09IGRpcnBhdGg6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgbW9kIG5vdCBpbiBtb2RzCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtb2RzLmFwcGVuZChtb2QpCi0gICAgICAgICAgICBzZWxmLnRyYWNlKCJsb2FkZWQgY29u
ZnRlc3Rtb2R1bGUgJXIiICUgKG1vZCkpCi0gICAgICAgICAgICBzZWxmLmNvbnNpZGVyX2NvbmZ0
ZXN0KG1vZCkKLSAgICAgICAgICAgIHJldHVybiBtb2QKLQotICAgICMKLSAgICAjIEFQSSBmb3Ig
Ym9vdHN0cmFwcGluZyBwbHVnaW4gbG9hZGluZwotICAgICMKLSAgICAjCi0KLSAgICBkZWYgY29u
c2lkZXJfcHJlcGFyc2Uoc2VsZiwgYXJncyk6Ci0gICAgICAgIGZvciBvcHQxLCBvcHQyIGluIHpp
cChhcmdzLCBhcmdzWzE6XSk6Ci0gICAgICAgICAgICBpZiBvcHQxID09ICItcCI6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5jb25zaWRlcl9wbHVnaW5hcmcob3B0MikKLQotICAgIGRlZiBjb25zaWRl
cl9wbHVnaW5hcmcoc2VsZiwgYXJnKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoIm5vOiIp
OgotICAgICAgICAgICAgbmFtZSA9IGFyZ1szOl0KLSAgICAgICAgICAgIHNlbGYuc2V0X2Jsb2Nr
ZWQobmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoInB5dGVzdF8iKToK
LSAgICAgICAgICAgICAgICBzZWxmLnNldF9ibG9ja2VkKCJweXRlc3RfIiArIG5hbWUpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmltcG9ydF9wbHVnaW4oYXJnKQotCi0gICAgZGVm
IGNvbnNpZGVyX2NvbmZ0ZXN0KHNlbGYsIGNvbmZ0ZXN0bW9kdWxlKToKLSAgICAgICAgc2VsZi5y
ZWdpc3Rlcihjb25mdGVzdG1vZHVsZSwgbmFtZT1jb25mdGVzdG1vZHVsZS5fX2ZpbGVfXykKLQot
ICAgIGRlZiBjb25zaWRlcl9lbnYoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ltcG9ydF9wbHVnaW5f
c3BlY3Mob3MuZW52aXJvbi5nZXQoIlBZVEVTVF9QTFVHSU5TIikpCi0KLSAgICBkZWYgY29uc2lk
ZXJfbW9kdWxlKHNlbGYsIG1vZCk6Ci0gICAgICAgIHNlbGYuX2ltcG9ydF9wbHVnaW5fc3BlY3Mo
Z2V0YXR0cihtb2QsICdweXRlc3RfcGx1Z2lucycsIFtdKSkKLQotICAgIGRlZiBfaW1wb3J0X3Bs
dWdpbl9zcGVjcyhzZWxmLCBzcGVjKToKLSAgICAgICAgcGx1Z2lucyA9IF9nZXRfcGx1Z2luX3Nw
ZWNzX2FzX2xpc3Qoc3BlYykKLSAgICAgICAgZm9yIGltcG9ydF9zcGVjIGluIHBsdWdpbnM6Ci0g
ICAgICAgICAgICBzZWxmLmltcG9ydF9wbHVnaW4oaW1wb3J0X3NwZWMpCi0KLSAgICBkZWYgaW1w
b3J0X3BsdWdpbihzZWxmLCBtb2RuYW1lKToKLSAgICAgICAgIyBtb3N0IG9mdGVuIG1vZG5hbWUg
cmVmZXJzIHRvIGJ1aWx0aW4gbW9kdWxlcywgZS5nLiAicHl0ZXN0ZXIiLAotICAgICAgICAjICJ0
ZXJtaW5hbCIgb3IgImNhcHR1cmUiLiAgVGhvc2UgcGx1Z2lucyBhcmUgcmVnaXN0ZXJlZCB1bmRl
ciB0aGVpcgotICAgICAgICAjIGJhc2VuYW1lIGZvciBoaXN0b3JpYyBwdXJwb3NlcyBidXQgbXVz
dCBiZSBpbXBvcnRlZCB3aXRoIHRoZQotICAgICAgICAjIF9weXRlc3QgcHJlZml4LgotICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShtb2RuYW1lLCAoc2l4LnRleHRfdHlwZSwgc3RyKSksICJtb2R1
bGUgbmFtZSBhcyB0ZXh0IHJlcXVpcmVkLCBnb3QgJXIiICUgbW9kbmFtZQotICAgICAgICBtb2Ru
YW1lID0gc3RyKG1vZG5hbWUpCi0gICAgICAgIGlmIHNlbGYuaXNfYmxvY2tlZChtb2RuYW1lKSBv
ciBzZWxmLmdldF9wbHVnaW4obW9kbmFtZSkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1
cm4KLSAgICAgICAgaWYgbW9kbmFtZSBpbiBidWlsdGluX3BsdWdpbnM6Ci0gICAgICAgICAgICBp
bXBvcnRzcGVjID0gIl9weXRlc3QuIiArIG1vZG5hbWUKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGltcG9ydHNwZWMgPSBtb2RuYW1lCi0gICAgICAgIHNlbGYucmV3cml0ZV9ob29rLm1hcmtf
cmV3cml0ZShpbXBvcnRzcGVjKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfX2ltcG9ydF9f
KGltcG9ydHNwZWMpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAg
ICAgbmV3X2V4Y190eXBlID0gSW1wb3J0RXJyb3IKLSAgICAgICAgICAgIG5ld19leGNfbWVzc2Fn
ZSA9ICdFcnJvciBpbXBvcnRpbmcgcGx1Z2luICIlcyI6ICVzJyAlIChtb2RuYW1lLCBzYWZlX3N0
cihlLmFyZ3NbMF0pKQotICAgICAgICAgICAgbmV3X2V4YyA9IG5ld19leGNfdHlwZShuZXdfZXhj
X21lc3NhZ2UpCi0KLSAgICAgICAgICAgIHNpeC5yZXJhaXNlKG5ld19leGNfdHlwZSwgbmV3X2V4
Yywgc3lzLmV4Y19pbmZvKClbMl0pCi0KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIocHl0
ZXN0LCAnc2tpcCcpIG9yIG5vdCBpc2luc3RhbmNlKGUsIHB5dGVzdC5za2lwLkV4Y2VwdGlvbik6
Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHNlbGYuX3dhcm4oInNraXBwZWQg
cGx1Z2luICVyOiAlcyIgJSAoKG1vZG5hbWUsIGUubXNnKSkpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1tpbXBvcnRzcGVjXQotICAgICAgICAgICAgc2VsZi5y
ZWdpc3Rlcihtb2QsIG1vZG5hbWUpCi0KLQotZGVmIF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3Qo
c3BlY3MpOgotICAgICIiIgotICAgIFBhcnNlcyBhIGxpc3Qgb2YgInBsdWdpbiBzcGVjcyIgYW5k
IHJldHVybnMgYSBsaXN0IG9mIHBsdWdpbiBuYW1lcy4KLQotICAgIFBsdWdpbiBzcGVjcyBjYW4g
YmUgZ2l2ZW4gYXMgYSBsaXN0IG9mIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5ICIsIiBvciBhbHJlYWR5
IGFzIGEgbGlzdC90dXBsZSBpbgotICAgIHdoaWNoIGNhc2UgaXQgaXMgcmV0dXJuZWQgYXMgYSBs
aXN0LiBTcGVjcyBjYW4gYWxzbyBiZSBgTm9uZWAgaW4gd2hpY2ggY2FzZSBhbgotICAgIGVtcHR5
IGxpc3QgaXMgcmV0dXJuZWQuCi0gICAgIiIiCi0gICAgaWYgc3BlY3MgaXMgbm90IE5vbmU6Ci0g
ICAgICAgIGlmIGlzaW5zdGFuY2Uoc3BlY3MsIHN0cik6Ci0gICAgICAgICAgICBzcGVjcyA9IHNw
ZWNzLnNwbGl0KCcsJykgaWYgc3BlY3MgZWxzZSBbXQotICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShzcGVjcywgKGxpc3QsIHR1cGxlKSk6Ci0gICAgICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJQ
bHVnaW4gc3BlY3MgbXVzdCBiZSBhICcsJy1zZXBhcmF0ZWQgc3RyaW5nIG9yIGEgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibGlzdC90dXBsZSBvZiBzdHJpbmdzIGZvciBwbHVnaW4g
bmFtZXMuIEdpdmVuOiAlciIgJSBzcGVjcykKLSAgICAgICAgcmV0dXJuIGxpc3Qoc3BlY3MpCi0g
ICAgcmV0dXJuIFtdCi0KLQotY2xhc3MgUGFyc2VyOgotICAgICIiIiBQYXJzZXIgZm9yIGNvbW1h
bmQgbGluZSBhcmd1bWVudHMgYW5kIGluaS1maWxlIHZhbHVlcy4KLQotICAgIDppdmFyIGV4dHJh
X2luZm86IGRpY3Qgb2YgZ2VuZXJpYyBwYXJhbSAtPiB2YWx1ZSB0byBkaXNwbGF5IGluIGNhc2UK
LSAgICAgICAgdGhlcmUncyBhbiBlcnJvciBwcm9jZXNzaW5nIHRoZSBjb21tYW5kIGxpbmUgYXJn
dW1lbnRzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzYWdlPU5vbmUsIHBy
b2Nlc3NvcHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Fub255bW91cyA9IE9wdGlvbkdyb3VwKCJj
dXN0b20gb3B0aW9ucyIsIHBhcnNlcj1zZWxmKQotICAgICAgICBzZWxmLl9ncm91cHMgPSBbXQot
ICAgICAgICBzZWxmLl9wcm9jZXNzb3B0ID0gcHJvY2Vzc29wdAotICAgICAgICBzZWxmLl91c2Fn
ZSA9IHVzYWdlCi0gICAgICAgIHNlbGYuX2luaWRpY3QgPSB7fQotICAgICAgICBzZWxmLl9pbmlu
YW1lcyA9IFtdCi0gICAgICAgIHNlbGYuZXh0cmFfaW5mbyA9IHt9Ci0KLSAgICBkZWYgcHJvY2Vz
c29wdGlvbihzZWxmLCBvcHRpb24pOgotICAgICAgICBpZiBzZWxmLl9wcm9jZXNzb3B0OgotICAg
ICAgICAgICAgaWYgb3B0aW9uLmRlc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc29w
dChvcHRpb24pCi0KLSAgICBkZWYgZ2V0Z3JvdXAoc2VsZiwgbmFtZSwgZGVzY3JpcHRpb249IiIs
IGFmdGVyPU5vbmUpOgotICAgICAgICAiIiIgZ2V0IChvciBjcmVhdGUpIGEgbmFtZWQgb3B0aW9u
IEdyb3VwLgotCi0gICAgICAgIDpuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24gZ3JvdXAuCi0gICAg
ICAgIDpkZXNjcmlwdGlvbjogbG9uZyBkZXNjcmlwdGlvbiBmb3IgLS1oZWxwIG91dHB1dC4KLSAg
ICAgICAgOmFmdGVyOiBuYW1lIG9mIG90aGVyIGdyb3VwLCB1c2VkIGZvciBvcmRlcmluZyAtLWhl
bHAgb3V0cHV0LgotCi0gICAgICAgIFRoZSByZXR1cm5lZCBncm91cCBvYmplY3QgaGFzIGFuIGBg
YWRkb3B0aW9uYGAgbWV0aG9kIHdpdGggdGhlIHNhbWUKLSAgICAgICAgc2lnbmF0dXJlIGFzIDpw
eTpmdW5jOmBwYXJzZXIuYWRkb3B0aW9uCi0gICAgICAgIDxfcHl0ZXN0LmNvbmZpZy5QYXJzZXIu
YWRkb3B0aW9uPmAgYnV0IHdpbGwgYmUgc2hvd24gaW4gdGhlCi0gICAgICAgIHJlc3BlY3RpdmUg
Z3JvdXAgaW4gdGhlIG91dHB1dCBvZiBgYHB5dGVzdC4gLS1oZWxwYGAuCi0gICAgICAgICIiIgot
ICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fZ3JvdXBzOgotICAgICAgICAgICAgaWYgZ3JvdXAu
bmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBncm91cAotICAgICAgICBncm91
cCA9IE9wdGlvbkdyb3VwKG5hbWUsIGRlc2NyaXB0aW9uLCBwYXJzZXI9c2VsZikKLSAgICAgICAg
aSA9IDAKLSAgICAgICAgZm9yIGksIGdycCBpbiBlbnVtZXJhdGUoc2VsZi5fZ3JvdXBzKToKLSAg
ICAgICAgICAgIGlmIGdycC5uYW1lID09IGFmdGVyOgotICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgIHNlbGYuX2dyb3Vwcy5pbnNlcnQoaSArIDEsIGdyb3VwKQotICAgICAgICByZXR1cm4g
Z3JvdXAKLQotICAgIGRlZiBhZGRvcHRpb24oc2VsZiwgKm9wdHMsICoqYXR0cnMpOgotICAgICAg
ICAiIiIgcmVnaXN0ZXIgYSBjb21tYW5kIGxpbmUgb3B0aW9uLgotCi0gICAgICAgIDpvcHRzOiBv
cHRpb24gbmFtZXMsIGNhbiBiZSBzaG9ydCBvciBsb25nIG9wdGlvbnMuCi0gICAgICAgIDphdHRy
czogc2FtZSBhdHRyaWJ1dGVzIHdoaWNoIHRoZSBgYGFkZF9vcHRpb24oKWBgIGZ1bmN0aW9uIG9m
IHRoZQotICAgICAgICAgICBgYXJncGFyc2UgbGlicmFyeQotICAgICAgICAgICA8aHR0cDovL2Rv
Y3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvYXJncGFyc2UuaHRtbD5gXwotICAgICAgICAgICBhY2Nl
cHRzLgotCi0gICAgICAgIEFmdGVyIGNvbW1hbmQgbGluZSBwYXJzaW5nIG9wdGlvbnMgYXJlIGF2
YWlsYWJsZSBvbiB0aGUgcHl0ZXN0IGNvbmZpZwotICAgICAgICBvYmplY3QgdmlhIGBgY29uZmln
Lm9wdGlvbi5OQU1FYGAgd2hlcmUgYGBOQU1FYGAgaXMgdXN1YWxseSBzZXQKLSAgICAgICAgYnkg
cGFzc2luZyBhIGBgZGVzdGBgIGF0dHJpYnV0ZSwgZm9yIGV4YW1wbGUKLSAgICAgICAgYGBhZGRv
cHRpb24oIi0tbG9uZyIsIGRlc3Q9Ik5BTUUiLCAuLi4pYGAuCi0gICAgICAgICIiIgotICAgICAg
ICBzZWxmLl9hbm9ueW1vdXMuYWRkb3B0aW9uKCpvcHRzLCAqKmF0dHJzKQotCi0gICAgZGVmIHBh
cnNlKHNlbGYsIGFyZ3MsIG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9h
cmdjb21wbGV0ZSBpbXBvcnQgdHJ5X2FyZ2NvbXBsZXRlCi0gICAgICAgIHNlbGYub3B0cGFyc2Vy
ID0gc2VsZi5fZ2V0cGFyc2VyKCkKLSAgICAgICAgdHJ5X2FyZ2NvbXBsZXRlKHNlbGYub3B0cGFy
c2VyKQotICAgICAgICByZXR1cm4gc2VsZi5vcHRwYXJzZXIucGFyc2VfYXJncyhbc3RyKHgpIGZv
ciB4IGluIGFyZ3NdLCBuYW1lc3BhY2U9bmFtZXNwYWNlKQotCi0gICAgZGVmIF9nZXRwYXJzZXIo
c2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5fYXJnY29tcGxldGUgaW1wb3J0IGZpbGVzY29t
cGxldGVyCi0gICAgICAgIG9wdHBhcnNlciA9IE15T3B0aW9uUGFyc2VyKHNlbGYsIHNlbGYuZXh0
cmFfaW5mbykKLSAgICAgICAgZ3JvdXBzID0gc2VsZi5fZ3JvdXBzICsgW3NlbGYuX2Fub255bW91
c10KLSAgICAgICAgZm9yIGdyb3VwIGluIGdyb3VwczoKLSAgICAgICAgICAgIGlmIGdyb3VwLm9w
dGlvbnM6Ci0gICAgICAgICAgICAgICAgZGVzYyA9IGdyb3VwLmRlc2NyaXB0aW9uIG9yIGdyb3Vw
Lm5hbWUKLSAgICAgICAgICAgICAgICBhcmdncm91cCA9IG9wdHBhcnNlci5hZGRfYXJndW1lbnRf
Z3JvdXAoZGVzYykKLSAgICAgICAgICAgICAgICBmb3Igb3B0aW9uIGluIGdyb3VwLm9wdGlvbnM6
Ci0gICAgICAgICAgICAgICAgICAgIG4gPSBvcHRpb24ubmFtZXMoKQotICAgICAgICAgICAgICAg
ICAgICBhID0gb3B0aW9uLmF0dHJzKCkKLSAgICAgICAgICAgICAgICAgICAgYXJnZ3JvdXAuYWRk
X2FyZ3VtZW50KCpuLCAqKmEpCi0gICAgICAgICMgYmFzaCBsaWtlIGF1dG9jb21wbGV0aW9uIGZv
ciBkaXJzIChhcHBlbmRpbmcgJy8nKQotICAgICAgICBvcHRwYXJzZXIuYWRkX2FyZ3VtZW50KEZJ
TEVfT1JfRElSLCBuYXJncz0nKicpLmNvbXBsZXRlciA9IGZpbGVzY29tcGxldGVyCi0gICAgICAg
IHJldHVybiBvcHRwYXJzZXIKLQotICAgIGRlZiBwYXJzZV9zZXRvcHRpb24oc2VsZiwgYXJncywg
b3B0aW9uLCBuYW1lc3BhY2U9Tm9uZSk6Ci0gICAgICAgIHBhcnNlZG9wdGlvbiA9IHNlbGYucGFy
c2UoYXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSkKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGlu
IHBhcnNlZG9wdGlvbi5fX2RpY3RfXy5pdGVtcygpOgotICAgICAgICAgICAgc2V0YXR0cihvcHRp
b24sIG5hbWUsIHZhbHVlKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihwYXJzZWRvcHRpb24sIEZJ
TEVfT1JfRElSKQotCi0gICAgZGVmIHBhcnNlX2tub3duX2FyZ3Moc2VsZiwgYXJncywgbmFtZXNw
YWNlPU5vbmUpOgotICAgICAgICAiIiJwYXJzZXMgYW5kIHJldHVybnMgYSBuYW1lc3BhY2Ugb2Jq
ZWN0IHdpdGgga25vd24gYXJndW1lbnRzIGF0IHRoaXMKLSAgICAgICAgcG9pbnQuCi0gICAgICAg
ICIiIgotICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9rbm93bl9hbmRfdW5rbm93bl9hcmdzKGFy
Z3MsIG5hbWVzcGFjZT1uYW1lc3BhY2UpWzBdCi0KLSAgICBkZWYgcGFyc2Vfa25vd25fYW5kX3Vu
a25vd25fYXJncyhzZWxmLCBhcmdzLCBuYW1lc3BhY2U9Tm9uZSk6Ci0gICAgICAgICIiInBhcnNl
cyBhbmQgcmV0dXJucyBhIG5hbWVzcGFjZSBvYmplY3Qgd2l0aCBrbm93biBhcmd1bWVudHMsIGFu
ZAotICAgICAgICB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB1bmtub3duIGF0IHRoaXMgcG9pbnQu
Ci0gICAgICAgICIiIgotICAgICAgICBvcHRwYXJzZXIgPSBzZWxmLl9nZXRwYXJzZXIoKQotICAg
ICAgICBhcmdzID0gW3N0cih4KSBmb3IgeCBpbiBhcmdzXQotICAgICAgICByZXR1cm4gb3B0cGFy
c2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSkKLQotICAgIGRl
ZiBhZGRpbmkoc2VsZiwgbmFtZSwgaGVscCwgdHlwZT1Ob25lLCBkZWZhdWx0PU5vbmUpOgotICAg
ICAgICAiIiIgcmVnaXN0ZXIgYW4gaW5pLWZpbGUgb3B0aW9uLgotCi0gICAgICAgIDpuYW1lOiBu
YW1lIG9mIHRoZSBpbmktdmFyaWFibGUKLSAgICAgICAgOnR5cGU6IHR5cGUgb2YgdGhlIHZhcmlh
YmxlLCBjYW4gYmUgYGBwYXRobGlzdGBgLCBgYGFyZ3NgYCwgYGBsaW5lbGlzdGBgCi0gICAgICAg
ICAgICAgICBvciBgYGJvb2xgYC4KLSAgICAgICAgOmRlZmF1bHQ6IGRlZmF1bHQgdmFsdWUgaWYg
bm8gaW5pLWZpbGUgb3B0aW9uIGV4aXN0cyBidXQgaXMgcXVlcmllZC4KLQotICAgICAgICBUaGUg
dmFsdWUgb2YgaW5pLXZhcmlhYmxlcyBjYW4gYmUgcmV0cmlldmVkIHZpYSBhIGNhbGwgdG8KLSAg
ICAgICAgOnB5OmZ1bmM6YGNvbmZpZy5nZXRpbmkobmFtZSkgPF9weXRlc3QuY29uZmlnLkNvbmZp
Zy5nZXRpbmk+YC4KLSAgICAgICAgIiIiCi0gICAgICAgIGFzc2VydCB0eXBlIGluIChOb25lLCAi
cGF0aGxpc3QiLCAiYXJncyIsICJsaW5lbGlzdCIsICJib29sIikKLSAgICAgICAgc2VsZi5faW5p
ZGljdFtuYW1lXSA9IChoZWxwLCB0eXBlLCBkZWZhdWx0KQotICAgICAgICBzZWxmLl9pbmluYW1l
cy5hcHBlbmQobmFtZSkKLQotCi1jbGFzcyBBcmd1bWVudEVycm9yKEV4Y2VwdGlvbik6Ci0gICAg
IiIiCi0gICAgUmFpc2VkIGlmIGFuIEFyZ3VtZW50IGluc3RhbmNlIGlzIGNyZWF0ZWQgd2l0aCBp
bnZhbGlkIG9yCi0gICAgaW5jb25zaXN0ZW50IGFyZ3VtZW50cy4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtc2csIG9wdGlvbik6Ci0gICAgICAgIHNlbGYubXNnID0gbXNnCi0g
ICAgICAgIHNlbGYub3B0aW9uX2lkID0gc3RyKG9wdGlvbikKLQotICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgotICAgICAgICBpZiBzZWxmLm9wdGlvbl9pZDoKLSAgICAgICAgICAgIHJldHVybiAib3B0
aW9uICVzOiAlcyIgJSAoc2VsZi5vcHRpb25faWQsIHNlbGYubXNnKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYubXNnCi0KLQotY2xhc3MgQXJndW1lbnQ6Ci0gICAgIiIi
Y2xhc3MgdGhhdCBtaW1pY3MgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvdXIgb2Ygb3B0cGFyc2UuT3B0
aW9uCi0KLSAgICBpdHMgY3VycmVudGx5IGEgbGVhc3QgZWZmb3J0IGltcGxlbWVudGF0aW9uCi0g
ICAgYW5kIGlnbm9yaW5nIGNob2ljZXMgYW5kIGludGVnZXIgcHJlZml4ZXMKLSAgICBodHRwczov
L2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvb3B0cGFyc2UuaHRtbCNvcHRwYXJzZS1zdGFuZGFy
ZC1vcHRpb24tdHlwZXMKLSAgICAiIiIKLSAgICBfdHlwX21hcCA9IHsKLSAgICAgICAgJ2ludCc6
IGludCwKLSAgICAgICAgJ3N0cmluZyc6IHN0ciwKLSAgICAgICAgJ2Zsb2F0JzogZmxvYXQsCi0g
ICAgICAgICdjb21wbGV4JzogY29tcGxleCwKLSAgICB9Ci0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKm5hbWVzLCAqKmF0dHJzKToKLSAgICAgICAgIiIic3RvcmUgcGFybXMgaW4gcHJpdmF0ZSB2
YXJzIGZvciB1c2UgaW4gYWRkX2FyZ3VtZW50IiIiCi0gICAgICAgIHNlbGYuX2F0dHJzID0gYXR0
cnMKLSAgICAgICAgc2VsZi5fc2hvcnRfb3B0cyA9IFtdCi0gICAgICAgIHNlbGYuX2xvbmdfb3B0
cyA9IFtdCi0gICAgICAgIHNlbGYuZGVzdCA9IGF0dHJzLmdldCgnZGVzdCcpCi0gICAgICAgIGlm
ICclZGVmYXVsdCcgaW4gKGF0dHJzLmdldCgnaGVscCcpIG9yICcnKToKLSAgICAgICAgICAgIHdh
cm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgJ3B5dGVzdCBub3cgdXNlcyBhcmdwYXJzZS4g
IiVkZWZhdWx0IiBzaG91bGQgYmUnCi0gICAgICAgICAgICAgICAgJyBjaGFuZ2VkIHRvICIlKGRl
ZmF1bHQpcyIgJywKLSAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAg
ICAgICAgICAgc3RhY2tsZXZlbD0zKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0eXAgPSBh
dHRyc1sndHlwZSddCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgdGhpcyBtaWdodCByYWlzZSBhIGtleWVycm9y
IGFzIHdlbGwsIGRvbid0IHdhbnQgdG8gY2F0Y2ggdGhhdAotICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZSh0eXAsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgICAgIGlmIHR5cCA9PSAn
Y2hvaWNlJzoKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICd0eXBlIGFyZ3VtZW50IHRvIGFkZG9wdGlvbigpIGlzIGEgc3RyaW5nICVy
LicKLSAgICAgICAgICAgICAgICAgICAgICAgICcgRm9yIHBhcnNlYXJnIHRoaXMgaXMgb3B0aW9u
YWwgYW5kIHdoZW4gc3VwcGxpZWQnCi0gICAgICAgICAgICAgICAgICAgICAgICAnIHNob3VsZCBi
ZSBhIHR5cGUuJwotICAgICAgICAgICAgICAgICAgICAgICAgJyAob3B0aW9uczogJXMpJyAlICh0
eXAsIG5hbWVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MykKLSAgICAgICAgICAgICAgICAg
ICAgIyBhcmdwYXJzZSBleHBlY3RzIGEgdHlwZSBoZXJlIHRha2UgaXQgZnJvbQotICAgICAgICAg
ICAgICAgICAgICAjIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBlbGVtZW50Ci0gICAgICAgICAgICAg
ICAgICAgIGF0dHJzWyd0eXBlJ10gPSB0eXBlKGF0dHJzWydjaG9pY2VzJ11bMF0pCi0gICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICd0eXBlIGFyZ3VtZW50IHRvIGFkZG9wdGlvbigpIGlzIGEgc3Ry
aW5nICVyLicKLSAgICAgICAgICAgICAgICAgICAgICAgICcgRm9yIHBhcnNlYXJnIHRoaXMgc2hv
dWxkIGJlIGEgdHlwZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAnIChvcHRpb25zOiAlcykn
ICUgKHR5cCwgbmFtZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJu
aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0zKQotICAgICAgICAgICAg
ICAgICAgICBhdHRyc1sndHlwZSddID0gQXJndW1lbnQuX3R5cF9tYXBbdHlwXQotICAgICAgICAg
ICAgICAgICMgdXNlZCBpbiB0ZXN0X3BhcnNlb3B0IC0+IHRlc3RfcGFyc2VfZGVmYXVsdGdldHRl
cgotICAgICAgICAgICAgICAgIHNlbGYudHlwZSA9IGF0dHJzWyd0eXBlJ10KLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi50eXBlID0gdHlwCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgICMgYXR0cmlidXRlIGV4aXN0ZW5jZSBpcyB0ZXN0ZWQgaW4gQ29uZmlnLl9wcm9j
ZXNzb3B0Ci0gICAgICAgICAgICBzZWxmLmRlZmF1bHQgPSBhdHRyc1snZGVmYXVsdCddCi0gICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5fc2V0
X29wdF9zdHJpbmdzKG5hbWVzKQotICAgICAgICBpZiBub3Qgc2VsZi5kZXN0OgotICAgICAgICAg
ICAgaWYgc2VsZi5fbG9uZ19vcHRzOgotICAgICAgICAgICAgICAgIHNlbGYuZGVzdCA9IHNlbGYu
X2xvbmdfb3B0c1swXVsyOl0ucmVwbGFjZSgnLScsICdfJykKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmRlc3QgPSBzZWxm
Ll9zaG9ydF9vcHRzWzBdWzE6XQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgot
ICAgICAgICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKAotICAgICAgICAgICAgICAg
ICAgICAgICAgJ25lZWQgYSBsb25nIG9yIHNob3J0IG9wdGlvbicsIHNlbGYpCi0KLSAgICBkZWYg
bmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zaG9ydF9vcHRzICsgc2VsZi5fbG9u
Z19vcHRzCi0KLSAgICBkZWYgYXR0cnMoc2VsZik6Ci0gICAgICAgICMgdXBkYXRlIGFueSBhdHRy
aWJ1dGVzIHNldCBieSBwcm9jZXNzb3B0Ci0gICAgICAgIGF0dHJzID0gJ2RlZmF1bHQgZGVzdCBo
ZWxwJy5zcGxpdCgpCi0gICAgICAgIGlmIHNlbGYuZGVzdDoKLSAgICAgICAgICAgIGF0dHJzLmFw
cGVuZChzZWxmLmRlc3QpCi0gICAgICAgIGZvciBhdHRyIGluIGF0dHJzOgotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2F0dHJzW2F0dHJdID0gZ2V0YXR0cihzZWxmLCBh
dHRyKQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAg
IHBhc3MKLSAgICAgICAgaWYgc2VsZi5fYXR0cnMuZ2V0KCdoZWxwJyk6Ci0gICAgICAgICAgICBh
ID0gc2VsZi5fYXR0cnNbJ2hlbHAnXQotICAgICAgICAgICAgYSA9IGEucmVwbGFjZSgnJWRlZmF1
bHQnLCAnJShkZWZhdWx0KXMnKQotICAgICAgICAgICAgIyBhID0gYS5yZXBsYWNlKCclcHJvZycs
ICclKHByb2cpcycpCi0gICAgICAgICAgICBzZWxmLl9hdHRyc1snaGVscCddID0gYQotICAgICAg
ICByZXR1cm4gc2VsZi5fYXR0cnMKLQotICAgIGRlZiBfc2V0X29wdF9zdHJpbmdzKHNlbGYsIG9w
dHMpOgotICAgICAgICAiIiJkaXJlY3RseSBmcm9tIG9wdHBhcnNlCi0KLSAgICAgICAgbWlnaHQg
bm90IGJlIG5lY2Vzc2FyeSBhcyB0aGlzIGlzIHBhc3NlZCB0byBhcmdwYXJzZSBsYXRlciBvbiIi
IgotICAgICAgICBmb3Igb3B0IGluIG9wdHM6Ci0gICAgICAgICAgICBpZiBsZW4ob3B0KSA8IDI6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRFcnJvcigKLSAgICAgICAgICAgICAgICAg
ICAgImludmFsaWQgb3B0aW9uIHN0cmluZyAlcjogIgotICAgICAgICAgICAgICAgICAgICAibXVz
dCBiZSBhdCBsZWFzdCB0d28gY2hhcmFjdGVycyBsb25nIiAlIG9wdCwgc2VsZikKLSAgICAgICAg
ICAgIGVsaWYgbGVuKG9wdCkgPT0gMjoKLSAgICAgICAgICAgICAgICBpZiBub3QgKG9wdFswXSA9
PSAiLSIgYW5kIG9wdFsxXSAhPSAiLSIpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBcmd1
bWVudEVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc2hvcnQgb3B0aW9u
IHN0cmluZyAlcjogIgotICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgb2YgdGhlIGZv
cm0gLXgsICh4IGFueSBub24tZGFzaCBjaGFyKSIgJSBvcHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX3Nob3J0X29wdHMuYXBwZW5kKG9wdCkK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbm90IChvcHRbMDoyXSA9PSAi
LS0iIGFuZCBvcHRbMl0gIT0gIi0iKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXJndW1l
bnRFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvbmcgb3B0aW9uIHN0
cmluZyAlcjogIgotICAgICAgICAgICAgICAgICAgICAgICAgIm11c3Qgc3RhcnQgd2l0aCAtLSwg
Zm9sbG93ZWQgYnkgbm9uLWRhc2giICUgb3B0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZikKLSAgICAgICAgICAgICAgICBzZWxmLl9sb25nX29wdHMuYXBwZW5kKG9wdCkKLQotICAgIGRl
ZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgYXJncyA9IFtdCi0gICAgICAgIGlmIHNlbGYuX3No
b3J0X29wdHM6Ci0gICAgICAgICAgICBhcmdzICs9IFsnX3Nob3J0X29wdHM6ICcgKyByZXByKHNl
bGYuX3Nob3J0X29wdHMpXQotICAgICAgICBpZiBzZWxmLl9sb25nX29wdHM6Ci0gICAgICAgICAg
ICBhcmdzICs9IFsnX2xvbmdfb3B0czogJyArIHJlcHIoc2VsZi5fbG9uZ19vcHRzKV0KLSAgICAg
ICAgYXJncyArPSBbJ2Rlc3Q6ICcgKyByZXByKHNlbGYuZGVzdCldCi0gICAgICAgIGlmIGhhc2F0
dHIoc2VsZiwgJ3R5cGUnKToKLSAgICAgICAgICAgIGFyZ3MgKz0gWyd0eXBlOiAnICsgcmVwcihz
ZWxmLnR5cGUpXQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdkZWZhdWx0Jyk6Ci0gICAgICAg
ICAgICBhcmdzICs9IFsnZGVmYXVsdDogJyArIHJlcHIoc2VsZi5kZWZhdWx0KV0KLSAgICAgICAg
cmV0dXJuICdBcmd1bWVudCh7MH0pJy5mb3JtYXQoJywgJy5qb2luKGFyZ3MpKQotCi0KLWNsYXNz
IE9wdGlvbkdyb3VwOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbj0i
IiwgcGFyc2VyPU5vbmUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYu
ZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgotICAgICAgICBzZWxmLm9wdGlvbnMgPSBbXQotICAg
ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcgotCi0gICAgZGVmIGFkZG9wdGlvbihzZWxmLCAqb3B0
bmFtZXMsICoqYXR0cnMpOgotICAgICAgICAiIiIgYWRkIGFuIG9wdGlvbiB0byB0aGlzIGdyb3Vw
LgotCi0gICAgICAgIGlmIGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgYSBsb25nIG9wdGlvbiBpcyBz
cGVjaWZpZWQgaXQgd2lsbAotICAgICAgICBiZSBzdXBwcmVzc2VkIGluIHRoZSBoZWxwLiBhZGRv
cHRpb24oJy0tdHdvd29yZHMnLCAnLS10d28td29yZHMnKQotICAgICAgICByZXN1bHRzIGluIGhl
bHAgc2hvd2luZyAnLS10d28td29yZHMnIG9ubHksIGJ1dCAtLXR3b3dvcmRzIGdldHMKLSAgICAg
ICAgYWNjZXB0ZWQgKiphbmQqKiB0aGUgYXV0b21hdGljIGRlc3RpbmF0aW9uIGlzIGluIGFyZ3Mu
dHdvd29yZHMKLSAgICAgICAgIiIiCi0gICAgICAgIGNvbmZsaWN0ID0gc2V0KG9wdG5hbWVzKS5p
bnRlcnNlY3Rpb24oCi0gICAgICAgICAgICBuYW1lIGZvciBvcHQgaW4gc2VsZi5vcHRpb25zIGZv
ciBuYW1lIGluIG9wdC5uYW1lcygpKQotICAgICAgICBpZiBjb25mbGljdDoKLSAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIm9wdGlvbiBuYW1lcyAlcyBhbHJlYWR5IGFkZGVkIiAlIGNvbmZs
aWN0KQotICAgICAgICBvcHRpb24gPSBBcmd1bWVudCgqb3B0bmFtZXMsICoqYXR0cnMpCi0gICAg
ICAgIHNlbGYuX2FkZG9wdGlvbl9pbnN0YW5jZShvcHRpb24sIHNob3J0dXBwZXI9RmFsc2UpCi0K
LSAgICBkZWYgX2FkZG9wdGlvbihzZWxmLCAqb3B0bmFtZXMsICoqYXR0cnMpOgotICAgICAgICBv
cHRpb24gPSBBcmd1bWVudCgqb3B0bmFtZXMsICoqYXR0cnMpCi0gICAgICAgIHNlbGYuX2FkZG9w
dGlvbl9pbnN0YW5jZShvcHRpb24sIHNob3J0dXBwZXI9VHJ1ZSkKLQotICAgIGRlZiBfYWRkb3B0
aW9uX2luc3RhbmNlKHNlbGYsIG9wdGlvbiwgc2hvcnR1cHBlcj1GYWxzZSk6Ci0gICAgICAgIGlm
IG5vdCBzaG9ydHVwcGVyOgotICAgICAgICAgICAgZm9yIG9wdCBpbiBvcHRpb24uX3Nob3J0X29w
dHM6Ci0gICAgICAgICAgICAgICAgaWYgb3B0WzBdID09ICctJyBhbmQgb3B0WzFdLmlzbG93ZXIo
KToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibG93ZXJjYXNlIHNob3J0
b3B0aW9ucyByZXNlcnZlZCIpCi0gICAgICAgIGlmIHNlbGYucGFyc2VyOgotICAgICAgICAgICAg
c2VsZi5wYXJzZXIucHJvY2Vzc29wdGlvbihvcHRpb24pCi0gICAgICAgIHNlbGYub3B0aW9ucy5h
cHBlbmQob3B0aW9uKQotCi0KLWNsYXNzIE15T3B0aW9uUGFyc2VyKGFyZ3BhcnNlLkFyZ3VtZW50
UGFyc2VyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBleHRyYV9pbmZvPU5vbmUp
OgotICAgICAgICBpZiBub3QgZXh0cmFfaW5mbzoKLSAgICAgICAgICAgIGV4dHJhX2luZm8gPSB7
fQotICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKLSAgICAgICAgYXJncGFyc2UuQXJndW1l
bnRQYXJzZXIuX19pbml0X18oc2VsZiwgdXNhZ2U9cGFyc2VyLl91c2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UsIGZvcm1hdHRlcl9j
bGFzcz1Ecm9wU2hvcnRlckxvbmdIZWxwRm9ybWF0dGVyKQotICAgICAgICAjIGV4dHJhX2luZm8g
aXMgYSBkaWN0IG9mIChwYXJhbSAtPiB2YWx1ZSkgdG8gZGlzcGxheSBpZiB0aGVyZSdzCi0gICAg
ICAgICMgYW4gdXNhZ2UgZXJyb3IgdG8gcHJvdmlkZSBtb3JlIGNvbnRleHR1YWwgaW5mb3JtYXRp
b24gdG8gdGhlIHVzZXIKLSAgICAgICAgc2VsZi5leHRyYV9pbmZvID0gZXh0cmFfaW5mbwotCi0g
ICAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwgYXJncz1Ob25lLCBuYW1lc3BhY2U9Tm9uZSk6Ci0gICAg
ICAgICIiImFsbG93IHNwbGl0dGluZyBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyIiIgotICAgICAg
ICBhcmdzLCBhcmd2ID0gc2VsZi5wYXJzZV9rbm93bl9hcmdzKGFyZ3MsIG5hbWVzcGFjZSkKLSAg
ICAgICAgaWYgYXJndjoKLSAgICAgICAgICAgIGZvciBhcmcgaW4gYXJndjoKLSAgICAgICAgICAg
ICAgICBpZiBhcmcgYW5kIGFyZ1swXSA9PSAnLSc6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVz
ID0gWyd1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcycgJSAoJyAnLmpvaW4oYXJndikpXQotICAg
ICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzb3J0ZWQoc2VsZi5leHRyYV9pbmZvLml0ZW1z
KCkpOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICVzOiAlcycgJSAo
aywgdikpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoJ1xuJy5qb2luKGxpbmVzKSkK
LSAgICAgICAgICAgIGdldGF0dHIoYXJncywgRklMRV9PUl9ESVIpLmV4dGVuZChhcmd2KQotICAg
ICAgICByZXR1cm4gYXJncwotCi0KLWNsYXNzIERyb3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIo
YXJncGFyc2UuSGVscEZvcm1hdHRlcik6Ci0gICAgIiIic2hvcnRlbiBoZWxwIGZvciBsb25nIG9w
dGlvbnMgdGhhdCBkaWZmZXIgb25seSBpbiBleHRyYSBoeXBoZW5zCi0KLSAgICAtIGNvbGxhcHNl
ICoqbG9uZyoqIG9wdGlvbnMgdGhhdCBhcmUgdGhlIHNhbWUgZXhjZXB0IGZvciBleHRyYSBoeXBo
ZW5zCi0gICAgLSBzcGVjaWFsIGFjdGlvbiBhdHRyaWJ1dGUgbWFwX2xvbmdfb3B0aW9uIGFsbG93
cyBzdXJwcmVzc2luZyBhZGRpdGlvbmFsCi0gICAgICBsb25nIG9wdGlvbnMKLSAgICAtIHNob3J0
Y3V0IGlmIHRoZXJlIGFyZSBvbmx5IHR3byBvcHRpb25zIGFuZCBvbmUgb2YgdGhlbSBpcyBhIHNo
b3J0IG9uZQotICAgIC0gY2FjaGUgcmVzdWx0IG9uIGFjdGlvbiBvYmplY3QgYXMgdGhpcyBpcyBj
YWxsZWQgYXQgbGVhc3QgMiB0aW1lcwotICAgICIiIgotCi0gICAgZGVmIF9mb3JtYXRfYWN0aW9u
X2ludm9jYXRpb24oc2VsZiwgYWN0aW9uKToKLSAgICAgICAgb3Jnc3RyID0gYXJncGFyc2UuSGVs
cEZvcm1hdHRlci5fZm9ybWF0X2FjdGlvbl9pbnZvY2F0aW9uKHNlbGYsIGFjdGlvbikKLSAgICAg
ICAgaWYgb3Jnc3RyIGFuZCBvcmdzdHJbMF0gIT0gJy0nOiAgIyBvbmx5IG9wdGlvbmFsIGFyZ3Vt
ZW50cwotICAgICAgICAgICAgcmV0dXJuIG9yZ3N0cgotICAgICAgICByZXMgPSBnZXRhdHRyKGFj
dGlvbiwgJ19mb3JtYXR0ZWRfYWN0aW9uX2ludm9jYXRpb24nLCBOb25lKQotICAgICAgICBpZiBy
ZXM6Ci0gICAgICAgICAgICByZXR1cm4gcmVzCi0gICAgICAgIG9wdGlvbnMgPSBvcmdzdHIuc3Bs
aXQoJywgJykKLSAgICAgICAgaWYgbGVuKG9wdGlvbnMpID09IDIgYW5kIChsZW4ob3B0aW9uc1sw
XSkgPT0gMiBvciBsZW4ob3B0aW9uc1sxXSkgPT0gMik6Ci0gICAgICAgICAgICAjIGEgc2hvcnRj
dXQgZm9yICctaCwgLS1oZWxwJyBvciAnLS1hYmMnLCAnLWEnCi0gICAgICAgICAgICBhY3Rpb24u
X2Zvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiA9IG9yZ3N0cgotICAgICAgICAgICAgcmV0dXJu
IG9yZ3N0cgotICAgICAgICByZXR1cm5fbGlzdCA9IFtdCi0gICAgICAgIG9wdGlvbl9tYXAgPSBn
ZXRhdHRyKGFjdGlvbiwgJ21hcF9sb25nX29wdGlvbicsIHt9KQotICAgICAgICBpZiBvcHRpb25f
bWFwIGlzIE5vbmU6Ci0gICAgICAgICAgICBvcHRpb25fbWFwID0ge30KLSAgICAgICAgc2hvcnRf
bG9uZyA9IHt9Ci0gICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGlm
IGxlbihvcHRpb24pID09IDIgb3Igb3B0aW9uWzJdID09ICcgJzoKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgaWYgbm90IG9wdGlvbi5zdGFydHN3aXRoKCctLScpOgotICAg
ICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoJ2xvbmcgb3B0aW9uYWwgYXJndW1lbnQg
d2l0aG91dCAiLS0iOiBbJXNdJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JSAob3B0aW9uKSwgc2VsZikKLSAgICAgICAgICAgIHh4b3B0aW9uID0gb3B0aW9uWzI6XQotICAg
ICAgICAgICAgaWYgeHhvcHRpb24uc3BsaXQoKVswXSBub3QgaW4gb3B0aW9uX21hcDoKLSAgICAg
ICAgICAgICAgICBzaG9ydGVuZWQgPSB4eG9wdGlvbi5yZXBsYWNlKCctJywgJycpCi0gICAgICAg
ICAgICAgICAgaWYgc2hvcnRlbmVkIG5vdCBpbiBzaG9ydF9sb25nIG9yIFwKLSAgICAgICAgICAg
ICAgICAgICBsZW4oc2hvcnRfbG9uZ1tzaG9ydGVuZWRdKSA8IGxlbih4eG9wdGlvbik6Ci0gICAg
ICAgICAgICAgICAgICAgIHNob3J0X2xvbmdbc2hvcnRlbmVkXSA9IHh4b3B0aW9uCi0gICAgICAg
ICMgbm93IHNob3J0X2xvbmcgaGFzIGJlZW4gZmlsbGVkIG91dCB0byB0aGUgbG9uZ2VzdCB3aXRo
IGRhc2hlcwotICAgICAgICAjICoqYW5kKiogd2Uga2VlcCB0aGUgcmlnaHQgb3B0aW9uIG9yZGVy
aW5nIGZyb20gYWRkX2FyZ3VtZW50Ci0gICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9uczoKLSAg
ICAgICAgICAgIGlmIGxlbihvcHRpb24pID09IDIgb3Igb3B0aW9uWzJdID09ICcgJzoKLSAgICAg
ICAgICAgICAgICByZXR1cm5fbGlzdC5hcHBlbmQob3B0aW9uKQotICAgICAgICAgICAgaWYgb3B0
aW9uWzI6XSA9PSBzaG9ydF9sb25nLmdldChvcHRpb24ucmVwbGFjZSgnLScsICcnKSk6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuX2xpc3QuYXBwZW5kKG9wdGlvbi5yZXBsYWNlKCcgJywgJz0nLCAx
KSkKLSAgICAgICAgYWN0aW9uLl9mb3JtYXR0ZWRfYWN0aW9uX2ludm9jYXRpb24gPSAnLCAnLmpv
aW4ocmV0dXJuX2xpc3QpCi0gICAgICAgIHJldHVybiBhY3Rpb24uX2Zvcm1hdHRlZF9hY3Rpb25f
aW52b2NhdGlvbgotCi0KLWRlZiBfZW5zdXJlX3JlbW92ZWRfc3lzbW9kdWxlKG1vZG5hbWUpOgot
ICAgIHRyeToKLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzW21vZG5hbWVdCi0gICAgZXhjZXB0IEtl
eUVycm9yOgotICAgICAgICBwYXNzCi0KLQotY2xhc3MgQ21kT3B0aW9ucyhvYmplY3QpOgotICAg
ICIiIiBob2xkcyBjbWRsaW5lIG9wdGlvbnMgYXMgYXR0cmlidXRlcy4iIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB2YWx1ZXM9KCkpOgotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZSh2
YWx1ZXMpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPENtZE9w
dGlvbnMgJXI+IiAlIChzZWxmLl9fZGljdF9fLCkKLQotICAgIGRlZiBjb3B5KHNlbGYpOgotICAg
ICAgICByZXR1cm4gQ21kT3B0aW9ucyhzZWxmLl9fZGljdF9fKQotCi0KLWNsYXNzIE5vdHNldDoK
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPE5PVFNFVD4iCi0KLQot
bm90c2V0ID0gTm90c2V0KCkKLUZJTEVfT1JfRElSID0gJ2ZpbGVfb3JfZGlyJwotCi0KLWRlZiBf
aXRlcl9yZXdyaXRhYmxlX21vZHVsZXMocGFja2FnZV9maWxlcyk6Ci0gICAgZm9yIGZuIGluIHBh
Y2thZ2VfZmlsZXM6Ci0gICAgICAgIGlzX3NpbXBsZV9tb2R1bGUgPSAnLycgbm90IGluIGZuIGFu
ZCBmbi5lbmRzd2l0aCgnLnB5JykKLSAgICAgICAgaXNfcGFja2FnZSA9IGZuLmNvdW50KCcvJykg
PT0gMSBhbmQgZm4uZW5kc3dpdGgoJ19faW5pdF9fLnB5JykKLSAgICAgICAgaWYgaXNfc2ltcGxl
X21vZHVsZToKLSAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBfID0gb3MucGF0aC5zcGxpdGV4dChm
bikKLSAgICAgICAgICAgIHlpZWxkIG1vZHVsZV9uYW1lCi0gICAgICAgIGVsaWYgaXNfcGFja2Fn
ZToKLSAgICAgICAgICAgIHBhY2thZ2VfbmFtZSA9IG9zLnBhdGguZGlybmFtZShmbikKLSAgICAg
ICAgICAgIHlpZWxkIHBhY2thZ2VfbmFtZQotCi0KLWNsYXNzIENvbmZpZyhvYmplY3QpOgotICAg
ICIiIiBhY2Nlc3MgdG8gY29uZmlndXJhdGlvbiB2YWx1ZXMsIHBsdWdpbm1hbmFnZXIgYW5kIHBs
dWdpbiBob29rcy4gICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsdWdpbm1hbmFnZXIp
OgotICAgICAgICAjOiBhY2Nlc3MgdG8gY29tbWFuZCBsaW5lIG9wdGlvbiBhcyBhdHRyaWJ1dGVz
LgotICAgICAgICAjOiAoZGVwcmVjYXRlZCksIHVzZSA6cHk6ZnVuYzpgZ2V0b3B0aW9uKCkgPF9w
eXRlc3QuY29uZmlnLkNvbmZpZy5nZXRvcHRpb24+YCBpbnN0ZWFkCi0gICAgICAgIHNlbGYub3B0
aW9uID0gQ21kT3B0aW9ucygpCi0gICAgICAgIF9hID0gRklMRV9PUl9ESVIKLSAgICAgICAgc2Vs
Zi5fcGFyc2VyID0gUGFyc2VyKAotICAgICAgICAgICAgdXNhZ2U9IiUlKHByb2cpcyBbb3B0aW9u
c10gWyVzXSBbJXNdIFsuLi5dIiAlIChfYSwgX2EpLAotICAgICAgICAgICAgcHJvY2Vzc29wdD1z
ZWxmLl9wcm9jZXNzb3B0LAotICAgICAgICApCi0gICAgICAgICM6IGEgcGx1Z2lubWFuYWdlciBp
bnN0YW5jZQotICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIgPSBwbHVnaW5tYW5hZ2VyCi0gICAg
ICAgIHNlbGYudHJhY2UgPSBzZWxmLnBsdWdpbm1hbmFnZXIudHJhY2Uucm9vdC5nZXQoImNvbmZp
ZyIpCi0gICAgICAgIHNlbGYuaG9vayA9IHNlbGYucGx1Z2lubWFuYWdlci5ob29rCi0gICAgICAg
IHNlbGYuX2luaWNhY2hlID0ge30KLSAgICAgICAgc2VsZi5fb3ZlcnJpZGVfaW5pID0gKCkKLSAg
ICAgICAgc2VsZi5fb3B0MmRlc3QgPSB7fQotICAgICAgICBzZWxmLl9jbGVhbnVwID0gW10KLSAg
ICAgICAgc2VsZi5fd2FybiA9IHNlbGYucGx1Z2lubWFuYWdlci5fd2FybgotICAgICAgICBzZWxm
LnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoc2VsZiwgInB5dGVzdGNvbmZpZyIpCi0gICAgICAgIHNl
bGYuX2NvbmZpZ3VyZWQgPSBGYWxzZQotCi0gICAgICAgIGRlZiBkb19zZXRucyhkaWMpOgotICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgc2V0bnMocHl0ZXN0LCBkaWMpCi0K
LSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9uYW1lc3BhY2UuY2FsbF9oaXN0b3JpYyhkb19zZXRu
cywge30pCi0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfYWRkb3B0aW9uLmNhbGxfaGlzdG9yaWMo
a3dhcmdzPWRpY3QocGFyc2VyPXNlbGYuX3BhcnNlcikpCi0KLSAgICBkZWYgYWRkX2NsZWFudXAo
c2VsZiwgZnVuYyk6Ci0gICAgICAgICIiIiBBZGQgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hl
biB0aGUgY29uZmlnIG9iamVjdCBnZXRzIG91dCBvZgotICAgICAgICB1c2UgKHVzdWFsbHkgY29u
aW5jaWRpbmcgd2l0aCBweXRlc3RfdW5jb25maWd1cmUpLiIiIgotICAgICAgICBzZWxmLl9jbGVh
bnVwLmFwcGVuZChmdW5jKQotCi0gICAgZGVmIF9kb19jb25maWd1cmUoc2VsZik6Ci0gICAgICAg
IGFzc2VydCBub3Qgc2VsZi5fY29uZmlndXJlZAotICAgICAgICBzZWxmLl9jb25maWd1cmVkID0g
VHJ1ZQotICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2NvbmZpZ3VyZS5jYWxsX2hpc3RvcmljKGt3
YXJncz1kaWN0KGNvbmZpZz1zZWxmKSkKLQotICAgIGRlZiBfZW5zdXJlX3VuY29uZmlndXJlKHNl
bGYpOgotICAgICAgICBpZiBzZWxmLl9jb25maWd1cmVkOgotICAgICAgICAgICAgc2VsZi5fY29u
ZmlndXJlZCA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X3VuY29uZmlndXJl
KGNvbmZpZz1zZWxmKQotICAgICAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9jb25maWd1cmUuX2Nh
bGxfaGlzdG9yeSA9IFtdCi0gICAgICAgIHdoaWxlIHNlbGYuX2NsZWFudXA6Ci0gICAgICAgICAg
ICBmaW4gPSBzZWxmLl9jbGVhbnVwLnBvcCgpCi0gICAgICAgICAgICBmaW4oKQotCi0gICAgZGVm
IHdhcm4oc2VsZiwgY29kZSwgbWVzc2FnZSwgZnNsb2NhdGlvbj1Ob25lLCBub2RlaWQ9Tm9uZSk6
Ci0gICAgICAgICIiIiBnZW5lcmF0ZSBhIHdhcm5pbmcgZm9yIHRoaXMgdGVzdCBzZXNzaW9uLiAi
IiIKLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9sb2d3YXJuaW5nLmNhbGxfaGlzdG9yaWMoa3dh
cmdzPWRpY3QoCi0gICAgICAgICAgICBjb2RlPWNvZGUsIG1lc3NhZ2U9bWVzc2FnZSwKLSAgICAg
ICAgICAgIGZzbG9jYXRpb249ZnNsb2NhdGlvbiwgbm9kZWlkPW5vZGVpZCkpCi0KLSAgICBkZWYg
Z2V0X3Rlcm1pbmFsX3dyaXRlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGx1Z2lubWFu
YWdlci5nZXRfcGx1Z2luKCJ0ZXJtaW5hbHJlcG9ydGVyIikuX3R3Ci0KLSAgICBkZWYgcHl0ZXN0
X2NtZGxpbmVfcGFyc2Uoc2VsZiwgcGx1Z2lubWFuYWdlciwgYXJncyk6Ci0gICAgICAgICMgUkVG
MSBhc3NlcnQgc2VsZiA9PSBwbHVnaW5tYW5hZ2VyLmNvbmZpZywgKHNlbGYsIHBsdWdpbm1hbmFn
ZXIuY29uZmlnKQotICAgICAgICBzZWxmLnBhcnNlKGFyZ3MpCi0gICAgICAgIHJldHVybiBzZWxm
Ci0KLSAgICBkZWYgbm90aWZ5X2V4Y2VwdGlvbihzZWxmLCBleGNpbmZvLCBvcHRpb249Tm9uZSk6
Ci0gICAgICAgIGlmIG9wdGlvbiBhbmQgb3B0aW9uLmZ1bGx0cmFjZToKLSAgICAgICAgICAgIHN0
eWxlID0gImxvbmciCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdHlsZSA9ICJuYXRpdmUi
Ci0gICAgICAgIGV4Y3JlcHIgPSBleGNpbmZvLmdldHJlcHIoZnVuY2FyZ3M9VHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93bG9jYWxzPWdldGF0dHIob3B0aW9uLCAn
c2hvd2xvY2FscycsIEZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHlsZT1zdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
IHJlcyA9IHNlbGYuaG9vay5weXRlc3RfaW50ZXJuYWxlcnJvcihleGNyZXByPWV4Y3JlcHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNpbmZvPWV4Y2lu
Zm8pCi0gICAgICAgIGlmIG5vdCBhbnkocmVzKToKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHN0
cihleGNyZXByKS5zcGxpdCgiXG4iKToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCJJTlRFUk5BTEVSUk9SPiAlc1xuIiAlIGxpbmUpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVy
ci5mbHVzaCgpCi0KLSAgICBkZWYgY3dkX3JlbGF0aXZlX25vZGVpZChzZWxmLCBub2RlaWQpOgot
ICAgICAgICAjIG5vZGVpZCdzIGFyZSByZWxhdGl2ZSB0byB0aGUgcm9vdHBhdGgsIGNvbXB1dGUg
cmVsYXRpdmUgdG8gY3dkCi0gICAgICAgIGlmIHNlbGYuaW52b2NhdGlvbl9kaXIgIT0gc2VsZi5y
b290ZGlyOgotICAgICAgICAgICAgZnVsbHBhdGggPSBzZWxmLnJvb3RkaXIuam9pbihub2RlaWQp
Ci0gICAgICAgICAgICBub2RlaWQgPSBzZWxmLmludm9jYXRpb25fZGlyLmJlc3RyZWxwYXRoKGZ1
bGxwYXRoKQotICAgICAgICByZXR1cm4gbm9kZWlkCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgZnJvbWRpY3RhcmdzKGNscywgb3B0aW9uX2RpY3QsIGFyZ3MpOgotICAgICAgICAiIiIgY29u
c3RydWN0b3IgdXNlYWJsZSBmb3Igc3VicHJvY2Vzc2VzLiAiIiIKLSAgICAgICAgY29uZmlnID0g
Z2V0X2NvbmZpZygpCi0gICAgICAgIGNvbmZpZy5vcHRpb24uX19kaWN0X18udXBkYXRlKG9wdGlv
bl9kaWN0KQotICAgICAgICBjb25maWcucGFyc2UoYXJncywgYWRkb3B0cz1GYWxzZSkKLSAgICAg
ICAgZm9yIHggaW4gY29uZmlnLm9wdGlvbi5wbHVnaW5zOgotICAgICAgICAgICAgY29uZmlnLnBs
dWdpbm1hbmFnZXIuY29uc2lkZXJfcGx1Z2luYXJnKHgpCi0gICAgICAgIHJldHVybiBjb25maWcK
LQotICAgIGRlZiBfcHJvY2Vzc29wdChzZWxmLCBvcHQpOgotICAgICAgICBmb3IgbmFtZSBpbiBv
cHQuX3Nob3J0X29wdHMgKyBvcHQuX2xvbmdfb3B0czoKLSAgICAgICAgICAgIHNlbGYuX29wdDJk
ZXN0W25hbWVdID0gb3B0LmRlc3QKLQotICAgICAgICBpZiBoYXNhdHRyKG9wdCwgJ2RlZmF1bHQn
KSBhbmQgb3B0LmRlc3Q6Ci0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLm9wdGlvbiwg
b3B0LmRlc3QpOgotICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5vcHRpb24sIG9wdC5kZXN0
LCBvcHQuZGVmYXVsdCkKLQotICAgIEBob29raW1wbCh0cnlsYXN0PVRydWUpCi0gICAgZGVmIHB5
dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKHNlbGYsIGVhcmx5X2NvbmZpZyk6Ci0gICAgICAg
IHNlbGYucGx1Z2lubWFuYWdlci5fc2V0X2luaXRpYWxfY29uZnRlc3RzKGVhcmx5X2NvbmZpZy5r
bm93bl9hcmdzX25hbWVzcGFjZSkKLQotICAgIGRlZiBfaW5pdGluaShzZWxmLCBhcmdzKToKLSAg
ICAgICAgbnMsIHVua25vd25fYXJncyA9IHNlbGYuX3BhcnNlci5wYXJzZV9rbm93bl9hbmRfdW5r
bm93bl9hcmdzKGFyZ3MsIG5hbWVzcGFjZT1zZWxmLm9wdGlvbi5jb3B5KCkpCi0gICAgICAgIHIg
PSBkZXRlcm1pbmVfc2V0dXAobnMuaW5pZmlsZW5hbWUsIG5zLmZpbGVfb3JfZGlyICsgdW5rbm93
bl9hcmdzLCB3YXJuZnVuYz1zZWxmLndhcm4pCi0gICAgICAgIHNlbGYucm9vdGRpciwgc2VsZi5p
bmlmaWxlLCBzZWxmLmluaWNmZyA9IHIKLSAgICAgICAgc2VsZi5fcGFyc2VyLmV4dHJhX2luZm9b
J3Jvb3RkaXInXSA9IHNlbGYucm9vdGRpcgotICAgICAgICBzZWxmLl9wYXJzZXIuZXh0cmFfaW5m
b1snaW5pZmlsZSddID0gc2VsZi5pbmlmaWxlCi0gICAgICAgIHNlbGYuaW52b2NhdGlvbl9kaXIg
PSBweS5wYXRoLmxvY2FsKCkKLSAgICAgICAgc2VsZi5fcGFyc2VyLmFkZGluaSgnYWRkb3B0cycs
ICdleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucycsICdhcmdzJykKLSAgICAgICAgc2VsZi5fcGFy
c2VyLmFkZGluaSgnbWludmVyc2lvbicsICdtaW5pbWFsbHkgcmVxdWlyZWQgcHl0ZXN0IHZlcnNp
b24nKQotICAgICAgICBzZWxmLl9vdmVycmlkZV9pbmkgPSBucy5vdmVycmlkZV9pbmkgb3IgKCkK
LQotICAgIGRlZiBfY29uc2lkZXJfaW1wb3J0aG9vayhzZWxmLCBhcmdzKToKLSAgICAgICAgIiIi
SW5zdGFsbCB0aGUgUEVQIDMwMiBpbXBvcnQgaG9vayBpZiB1c2luZyBhc3NlcnRpb24gcmV3cml0
aW5nLgotCi0gICAgICAgIE5lZWRzIHRvIHBhcnNlIHRoZSAtLWFzc2VydD08bW9kZT4gb3B0aW9u
IGZyb20gdGhlIGNvbW1hbmRsaW5lCi0gICAgICAgIGFuZCBmaW5kIGFsbCB0aGUgaW5zdGFsbGVk
IHBsdWdpbnMgdG8gbWFyayB0aGVtIGZvciByZXdyaXRpbmcKLSAgICAgICAgYnkgdGhlIGltcG9y
dGhvb2suCi0gICAgICAgICIiIgotICAgICAgICBucywgdW5rbm93bl9hcmdzID0gc2VsZi5fcGFy
c2VyLnBhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoYXJncykKLSAgICAgICAgbW9kZSA9IG5z
LmFzc2VydG1vZGUKLSAgICAgICAgaWYgbW9kZSA9PSAncmV3cml0ZSc6Ci0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgaG9vayA9IF9weXRlc3QuYXNzZXJ0aW9uLmluc3RhbGxfaW1w
b3J0aG9vayhzZWxmKQotICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yOgotICAgICAgICAg
ICAgICAgIG1vZGUgPSAncGxhaW4nCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHNlbGYuX21hcmtfcGx1Z2luc19mb3JfcmV3cml0ZShob29rKQotICAgICAgICBzZWxmLl93YXJu
X2Fib3V0X21pc3NpbmdfYXNzZXJ0aW9uKG1vZGUpCi0KLSAgICBkZWYgX21hcmtfcGx1Z2luc19m
b3JfcmV3cml0ZShzZWxmLCBob29rKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdpdmVuIGFuIGlt
cG9ydGhvb2ssIG1hcmsgZm9yIHJld3JpdGUgYW55IHRvcC1sZXZlbAotICAgICAgICBtb2R1bGVz
IG9yIHBhY2thZ2VzIGluIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZSBmb3IKLSAgICAgICAgYWxs
IHB5dGVzdCBwbHVnaW5zLgotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHBrZ19yZXNvdXJj
ZXMKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLnJld3JpdGVfaG9vayA9IGhvb2sKLQotICAg
ICAgICAjICdSRUNPUkQnIGF2YWlsYWJsZSBmb3IgcGx1Z2lucyBpbnN0YWxsZWQgbm9ybWFsbHkg
KHBpcCBpbnN0YWxsKQotICAgICAgICAjICdTT1VSQ0VTLnR4dCcgYXZhaWxhYmxlIGZvciBwbHVn
aW5zIGluc3RhbGxlZCBpbiBkZXYgbW9kZSAocGlwIGluc3RhbGwgLWUpCi0gICAgICAgICMgZm9y
IGluc3RhbGxlZCBwbHVnaW5zICdTT1VSQ0VTLnR4dCcgcmV0dXJucyBhbiBlbXB0eSBsaXN0LCBh
bmQgdmljZS12ZXJzYQotICAgICAgICAjIHNvIGl0IHNob3VsZG4ndCBiZSBhbiBpc3N1ZQotICAg
ICAgICBtZXRhZGF0YV9maWxlcyA9ICdSRUNPUkQnLCAnU09VUkNFUy50eHQnCi0KLSAgICAgICAg
cGFja2FnZV9maWxlcyA9ICgKLSAgICAgICAgICAgIGVudHJ5LnNwbGl0KCcsJylbMF0KLSAgICAg
ICAgICAgIGZvciBlbnRyeXBvaW50IGluIHBrZ19yZXNvdXJjZXMuaXRlcl9lbnRyeV9wb2ludHMo
J3B5dGVzdDExJykKLSAgICAgICAgICAgIGZvciBtZXRhZGF0YSBpbiBtZXRhZGF0YV9maWxlcwot
ICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJ5cG9pbnQuZGlzdC5fZ2V0X21ldGFkYXRhKG1l
dGFkYXRhKQotICAgICAgICApCi0KLSAgICAgICAgZm9yIG5hbWUgaW4gX2l0ZXJfcmV3cml0YWJs
ZV9tb2R1bGVzKHBhY2thZ2VfZmlsZXMpOgotICAgICAgICAgICAgaG9vay5tYXJrX3Jld3JpdGUo
bmFtZSkKLQotICAgIGRlZiBfd2Fybl9hYm91dF9taXNzaW5nX2Fzc2VydGlvbihzZWxmLCBtb2Rl
KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCi0gICAgICAgIGV4Y2Vw
dCBBc3NlcnRpb25FcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGlmIG1vZGUgPT0gJ3BsYWluJzoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCJXQVJOSU5HOiBBU1NFUlRJT05TIEFSRSBOT1QgRVhFQ1VURUQiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIGFuZCBGQUlMSU5HIFRFU1RTIFdJTEwgUEFTUy4gIEFyZSB5
b3UiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHVzaW5nIHB5dGhvbiAtTz8i
KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJX
QVJOSU5HOiBhc3NlcnRpb25zIG5vdCBpbiB0ZXN0IG1vZHVsZXMgb3IiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIHBsdWdpbnMgd2lsbCBiZSBpZ25vcmVkIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIGFzc2VydCBzdGF0ZW1lbnRzIGFyZSBu
b3QgZXhlY3V0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5IHRoZSB1
bmRlcmx5aW5nIFB5dGhvbiBpbnRlcnByZXRlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKGFyZSB5b3UgdXNpbmcgcHl0aG9uIC1PPylcbiIpCi0KLSAgICBkZWYgX3ByZXBh
cnNlKHNlbGYsIGFyZ3MsIGFkZG9wdHM9VHJ1ZSk6Ci0gICAgICAgIGlmIGFkZG9wdHM6Ci0gICAg
ICAgICAgICBhcmdzWzpdID0gc2hsZXguc3BsaXQob3MuZW52aXJvbi5nZXQoJ1BZVEVTVF9BRERP
UFRTJywgJycpKSArIGFyZ3MKLSAgICAgICAgc2VsZi5faW5pdGluaShhcmdzKQotICAgICAgICBp
ZiBhZGRvcHRzOgotICAgICAgICAgICAgYXJnc1s6XSA9IHNlbGYuZ2V0aW5pKCJhZGRvcHRzIikg
KyBhcmdzCi0gICAgICAgIHNlbGYuX2NoZWNrdmVyc2lvbigpCi0gICAgICAgIHNlbGYuX2NvbnNp
ZGVyX2ltcG9ydGhvb2soYXJncykKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLmNvbnNpZGVy
X3ByZXBhcnNlKGFyZ3MpCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5sb2FkX3NldHVwdG9v
bHNfZW50cnlwb2ludHMoJ3B5dGVzdDExJykKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLmNv
bnNpZGVyX2VudigpCi0gICAgICAgIHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UgPSBucyA9IHNl
bGYuX3BhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3MsIG5hbWVzcGFjZT1zZWxmLm9wdGlvbi5j
b3B5KCkpCi0gICAgICAgIGlmIHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UuY29uZmN1dGRpciBp
cyBOb25lIGFuZCBzZWxmLmluaWZpbGU6Ci0gICAgICAgICAgICBjb25mY3V0ZGlyID0gcHkucGF0
aC5sb2NhbChzZWxmLmluaWZpbGUpLmRpcm5hbWUKLSAgICAgICAgICAgIHNlbGYua25vd25fYXJn
c19uYW1lc3BhY2UuY29uZmN1dGRpciA9IGNvbmZjdXRkaXIKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5ob29rLnB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKGVhcmx5X2NvbmZp
Zz1zZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3M9YXJncywgcGFyc2VyPXNlbGYuX3BhcnNlcikKLSAgICAgICAgZXhjZXB0IENvbmZ0
ZXN0SW1wb3J0RmFpbHVyZToKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAg
ICAgICAgICAgaWYgbnMuaGVscCBvciBucy52ZXJzaW9uOgotICAgICAgICAgICAgICAgICMgd2Ug
ZG9uJ3Qgd2FudCB0byBwcmV2ZW50IC0taGVscC8tLXZlcnNpb24gdG8gd29yawotICAgICAgICAg
ICAgICAgICMgc28ganVzdCBsZXQgaXMgcGFzcyBhbmQgcHJpbnQgYSB3YXJuaW5nIGF0IHRoZSBl
bmQKLSAgICAgICAgICAgICAgICBzZWxmLl93YXJuKCJjb3VsZCBub3QgbG9hZCBpbml0aWFsIGNv
bmZ0ZXN0cyAoJXMpXG4iICUgZS5wYXRoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICByYWlzZQotCi0gICAgZGVmIF9jaGVja3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGltcG9y
dCBweXRlc3QKLSAgICAgICAgbWludmVyID0gc2VsZi5pbmljZmcuZ2V0KCdtaW52ZXJzaW9uJywg
Tm9uZSkKLSAgICAgICAgaWYgbWludmVyOgotICAgICAgICAgICAgdmVyID0gbWludmVyLnNwbGl0
KCIuIikKLSAgICAgICAgICAgIG15dmVyID0gcHl0ZXN0Ll9fdmVyc2lvbl9fLnNwbGl0KCIuIikK
LSAgICAgICAgICAgIGlmIG15dmVyIDwgdmVyOgotICAgICAgICAgICAgICAgIHJhaXNlIHB5dGVz
dC5Vc2FnZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiJXM6JWQ6IHJlcXVpcmVzIHB5dGVz
dC0lcywgYWN0dWFsIHB5dGVzdC0lcyciICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5pbmljZmcuY29uZmlnLnBhdGgsIHNlbGYuaW5pY2ZnLmxpbmVvZignbWludmVyc2lvbicpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbWludmVyLCBweXRlc3QuX192ZXJzaW9uX18pKQotCi0g
ICAgZGVmIHBhcnNlKHNlbGYsIGFyZ3MsIGFkZG9wdHM9VHJ1ZSk6Ci0gICAgICAgICMgcGFyc2Ug
Z2l2ZW4gY21kbGluZSBhcmd1bWVudHMgaW50byB0aGlzIGNvbmZpZyBvYmplY3QuCi0gICAgICAg
IGFzc2VydCBub3QgaGFzYXR0cihzZWxmLCAnYXJncycpLCAoCi0gICAgICAgICAgICAiY2FuIG9u
bHkgcGFyc2UgY21kbGluZSBhcmdzIGF0IG1vc3Qgb25jZSBwZXIgQ29uZmlnIG9iamVjdCIpCi0g
ICAgICAgIHNlbGYuX29yaWdhcmdzID0gYXJncwotICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2Fk
ZGhvb2tzLmNhbGxfaGlzdG9yaWMoCi0gICAgICAgICAgICBrd2FyZ3M9ZGljdChwbHVnaW5tYW5h
Z2VyPXNlbGYucGx1Z2lubWFuYWdlcikpCi0gICAgICAgIHNlbGYuX3ByZXBhcnNlKGFyZ3MsIGFk
ZG9wdHM9YWRkb3B0cykKLSAgICAgICAgIyBYWFggZGVwcmVjYXRlZCBob29rOgotICAgICAgICBz
ZWxmLmhvb2sucHl0ZXN0X2NtZGxpbmVfcHJlcGFyc2UoY29uZmlnPXNlbGYsIGFyZ3M9YXJncykK
LSAgICAgICAgc2VsZi5fcGFyc2VyLmFmdGVyX3ByZXBhcnNlID0gVHJ1ZQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBhcmdzID0gc2VsZi5fcGFyc2VyLnBhcnNlX3NldG9wdGlvbihhcmdzLCBz
ZWxmLm9wdGlvbiwgbmFtZXNwYWNlPXNlbGYub3B0aW9uKQotICAgICAgICAgICAgaWYgbm90IGFy
Z3M6Ci0gICAgICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgICAgICBp
ZiBjd2QgPT0gc2VsZi5yb290ZGlyOgotICAgICAgICAgICAgICAgICAgICBhcmdzID0gc2VsZi5n
ZXRpbmkoJ3Rlc3RwYXRocycpCi0gICAgICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAg
ICAgICAgICAgICAgIGFyZ3MgPSBbY3dkXQotICAgICAgICAgICAgc2VsZi5hcmdzID0gYXJncwot
ICAgICAgICBleGNlcHQgUHJpbnRIZWxwOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGFk
ZGluaXZhbHVlX2xpbmUoc2VsZiwgbmFtZSwgbGluZSk6Ci0gICAgICAgICIiIiBhZGQgYSBsaW5l
IHRvIGFuIGluaS1maWxlIG9wdGlvbi4gVGhlIG9wdGlvbiBtdXN0IGhhdmUgYmVlbgotICAgICAg
ICBkZWNsYXJlZCBidXQgbWlnaHQgbm90IHlldCBiZSBzZXQgaW4gd2hpY2ggY2FzZSB0aGUgbGlu
ZSBiZWNvbWVzIHRoZQotICAgICAgICB0aGUgZmlyc3QgbGluZSBpbiBpdHMgdmFsdWUuICIiIgot
ICAgICAgICB4ID0gc2VsZi5nZXRpbmkobmFtZSkKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
eCwgbGlzdCkKLSAgICAgICAgeC5hcHBlbmQobGluZSkgICMgbW9kaWZpZXMgdGhlIGNhY2hlZCBs
aXN0IGlubGluZQotCi0gICAgZGVmIGdldGluaShzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiIHJl
dHVybiBjb25maWd1cmF0aW9uIHZhbHVlIGZyb20gYW4gOnJlZjpgaW5pIGZpbGUgPGluaWZpbGVz
PmAuIElmIHRoZQotICAgICAgICBzcGVjaWZpZWQgbmFtZSBoYXNuJ3QgYmVlbiByZWdpc3RlcmVk
IHRocm91Z2ggYSBwcmlvcgotICAgICAgICA6cHk6ZnVuYzpgcGFyc2VyLmFkZGluaSA8X3B5dGVz
dC5jb25maWcuUGFyc2VyLmFkZGluaT5gCi0gICAgICAgIGNhbGwgKHVzdWFsbHkgZnJvbSBhIHBs
dWdpbiksIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuICIiIgotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5faW5pY2FjaGVbbmFtZV0KLSAgICAgICAgZXhjZXB0IEtleUVycm9y
OgotICAgICAgICAgICAgc2VsZi5faW5pY2FjaGVbbmFtZV0gPSB2YWwgPSBzZWxmLl9nZXRpbmko
bmFtZSkKLSAgICAgICAgICAgIHJldHVybiB2YWwKLQotICAgIGRlZiBfZ2V0aW5pKHNlbGYsIG5h
bWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbiwgdHlwZSwgZGVmYXVs
dCA9IHNlbGYuX3BhcnNlci5faW5pZGljdFtuYW1lXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGNvbmZpZ3VyYXRpb24gdmFs
dWU6ICVyIiAlIChuYW1lLCkpCi0gICAgICAgIHZhbHVlID0gc2VsZi5fZ2V0X292ZXJyaWRlX2lu
aV92YWx1ZShuYW1lKQotICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5pbmljZmdbbmFtZV0KLSAgICAgICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAotICAgICAgICAgICAgICAgIGlm
IHR5cGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFtdCi0gICAgICAgIGlmIHR5cGUgPT0gInBhdGhsaXN0IjoKLSAgICAgICAg
ICAgIGRwID0gcHkucGF0aC5sb2NhbChzZWxmLmluaWNmZy5jb25maWcucGF0aCkuZGlycGF0aCgp
Ci0gICAgICAgICAgICB2YWx1ZXMgPSBbXQotICAgICAgICAgICAgZm9yIHJlbHBhdGggaW4gc2hs
ZXguc3BsaXQodmFsdWUpOgotICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZHAuam9pbihy
ZWxwYXRoLCBhYnM9VHJ1ZSkpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVzCi0gICAgICAgIGVs
aWYgdHlwZSA9PSAiYXJncyI6Ci0gICAgICAgICAgICByZXR1cm4gc2hsZXguc3BsaXQodmFsdWUp
Ci0gICAgICAgIGVsaWYgdHlwZSA9PSAibGluZWxpc3QiOgotICAgICAgICAgICAgcmV0dXJuIFt0
IGZvciB0IGluIG1hcChsYW1iZGEgeDogeC5zdHJpcCgpLCB2YWx1ZS5zcGxpdCgiXG4iKSkgaWYg
dF0KLSAgICAgICAgZWxpZiB0eXBlID09ICJib29sIjoKLSAgICAgICAgICAgIHJldHVybiBib29s
KF9zdHJ0b2Jvb2wodmFsdWUuc3RyaXAoKSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBh
c3NlcnQgdHlwZSBpcyBOb25lCi0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBf
Z2V0Y29uZnRlc3RfcGF0aGxpc3Qoc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIG1vZCwgcmVscm9vdHMgPSBzZWxmLnBsdWdpbm1hbmFnZXIuX3JnZXRfd2l0aF9j
b25mbW9kKG5hbWUsIHBhdGgpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAg
IHJldHVybiBOb25lCi0gICAgICAgIG1vZHBhdGggPSBweS5wYXRoLmxvY2FsKG1vZC5fX2ZpbGVf
XykuZGlycGF0aCgpCi0gICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIGZvciByZWxyb290IGlu
IHJlbHJvb3RzOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVscm9vdCwgcHkucGF0
aC5sb2NhbCk6Ci0gICAgICAgICAgICAgICAgcmVscm9vdCA9IHJlbHJvb3QucmVwbGFjZSgiLyIs
IHB5LnBhdGgubG9jYWwuc2VwKQotICAgICAgICAgICAgICAgIHJlbHJvb3QgPSBtb2RwYXRoLmpv
aW4ocmVscm9vdCwgYWJzPVRydWUpCi0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHJlbHJvb3Qp
Ci0gICAgICAgIHJldHVybiB2YWx1ZXMKLQotICAgIGRlZiBfZ2V0X292ZXJyaWRlX2luaV92YWx1
ZShzZWxmLCBuYW1lKToKLSAgICAgICAgdmFsdWUgPSBOb25lCi0gICAgICAgICMgb3ZlcnJpZGVf
aW5pIGlzIGEgbGlzdCBvZiBsaXN0LCB0byBzdXBwb3J0IGJvdGggLW8gZm9vMT1iYXIxIGZvbzI9
YmFyMiBhbmQKLSAgICAgICAgIyBhbmQgLW8gZm9vMT1iYXIxIC1vIGZvbzI9YmFyMiBvcHRpb25z
Ci0gICAgICAgICMgYWx3YXlzIHVzZSB0aGUgbGFzdCBpdGVtIGlmIG11bHRpcGxlIHZhbHVlIHNl
dCBmb3Igc2FtZSBpbmktbmFtZSwKLSAgICAgICAgIyBlLmcuIC1vIGZvbz1iYXIxIC1vIGZvbz1i
YXIyIHdpbGwgc2V0IGZvbyB0byBiYXIyCi0gICAgICAgIGZvciBpbmlfY29uZmlnX2xpc3QgaW4g
c2VsZi5fb3ZlcnJpZGVfaW5pOgotICAgICAgICAgICAgZm9yIGluaV9jb25maWcgaW4gaW5pX2Nv
bmZpZ19saXN0OgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgKGtl
eSwgdXNlcl9pbmlfdmFsdWUpID0gaW5pX2NvbmZpZy5zcGxpdCgiPSIsIDEpCi0gICAgICAgICAg
ICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFVzYWdl
RXJyb3IoIi1vLy0tb3ZlcnJpZGUtaW5pIGV4cGVjdHMgb3B0aW9uPXZhbHVlIHN0eWxlLiIpCi0g
ICAgICAgICAgICAgICAgaWYga2V5ID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gdXNlcl9pbmlfdmFsdWUKLSAgICAgICAgcmV0dXJuIHZhbHVlCi0KLSAgICBkZWYgZ2V0b3B0
aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHQ9bm90c2V0LCBza2lwPUZhbHNlKToKLSAgICAgICAgIiIi
IHJldHVybiBjb21tYW5kIGxpbmUgb3B0aW9uIHZhbHVlLgotCi0gICAgICAgIDphcmcgbmFtZTog
bmFtZSBvZiB0aGUgb3B0aW9uLiAgWW91IG1heSBhbHNvIHNwZWNpZnkKLSAgICAgICAgICAgIHRo
ZSBsaXRlcmFsIGBgLS1PUFRgYCBvcHRpb24gaW5zdGVhZCBvZiB0aGUgImRlc3QiIG9wdGlvbiBu
YW1lLgotICAgICAgICA6YXJnIGRlZmF1bHQ6IGRlZmF1bHQgdmFsdWUgaWYgbm8gb3B0aW9uIG9m
IHRoYXQgbmFtZSBleGlzdHMuCi0gICAgICAgIDphcmcgc2tpcDogaWYgVHJ1ZSByYWlzZSBweXRl
c3Quc2tpcCBpZiBvcHRpb24gZG9lcyBub3QgZXhpc3RzCi0gICAgICAgICAgICBvciBoYXMgYSBO
b25lIHZhbHVlLgotICAgICAgICAiIiIKLSAgICAgICAgbmFtZSA9IHNlbGYuX29wdDJkZXN0Lmdl
dChuYW1lLCBuYW1lKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHNl
bGYub3B0aW9uLCBuYW1lKQotICAgICAgICAgICAgaWYgdmFsIGlzIE5vbmUgYW5kIHNraXA6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiB2YWwKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgaWYg
ZGVmYXVsdCBpcyBub3Qgbm90c2V0OgotICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0g
ICAgICAgICAgICBpZiBza2lwOgotICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAg
ICAgICAgICAgICBweXRlc3Quc2tpcCgibm8gJXIgb3B0aW9uIGZvdW5kIiAlIChuYW1lLCkpCi0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBvcHRpb24gbmFtZWQgJXIiICUgKG5hbWUs
KSkKLQotICAgIGRlZiBnZXR2YWx1ZShzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAi
IiIgKGRlcHJlY2F0ZWQsIHVzZSBnZXRvcHRpb24oKSkgIiIiCi0gICAgICAgIHJldHVybiBzZWxm
LmdldG9wdGlvbihuYW1lKQotCi0gICAgZGVmIGdldHZhbHVlb3Jza2lwKHNlbGYsIG5hbWUsIHBh
dGg9Tm9uZSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCwgdXNlIGdldG9wdGlvbihza2lwPVRy
dWUpKSAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0b3B0aW9uKG5hbWUsIHNraXA9VHJ1ZSkK
LQotCi1kZWYgZXhpc3RzKHBhdGgsIGlnbm9yZT1FbnZpcm9ubWVudEVycm9yKToKLSAgICB0cnk6
Ci0gICAgICAgIHJldHVybiBwYXRoLmNoZWNrKCkKLSAgICBleGNlcHQgaWdub3JlOgotICAgICAg
ICByZXR1cm4gRmFsc2UKLQotCi1kZWYgZ2V0Y2ZnKGFyZ3MsIHdhcm5mdW5jPU5vbmUpOgotICAg
ICIiIgotICAgIFNlYXJjaCB0aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIGEgdmFsaWQgaW5pLWZp
bGUgZm9yIHB5dGVzdCwKLSAgICBhbmQgcmV0dXJuIGEgdHVwbGUgb2YgKHJvb3RkaXIsIGluaWZp
bGUsIGNmZy1kaWN0KS4KLQotICAgIG5vdGU6IHdhcm5mdW5jIGlzIGFuIG9wdGlvbmFsIGZ1bmN0
aW9uIHVzZWQgdG8gd2FybgotICAgICAgICBhYm91dCBpbmktZmlsZXMgdGhhdCB1c2UgZGVwcmVj
YXRlZCBmZWF0dXJlcy4KLSAgICAgICAgVGhpcyBwYXJhbWV0ZXIgc2hvdWxkIGJlIHJlbW92ZWQg
d2hlbiBweXRlc3QKLSAgICAgICAgYWRvcHRzIHN0YW5kYXJkIGRlcHJlY2F0aW9uIHdhcm5pbmdz
ICgjMTgwNCkuCi0gICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IFNF
VFVQX0NGR19QWVRFU1QKLSAgICBpbmliYXNlbmFtZXMgPSBbInB5dGVzdC5pbmkiLCAidG94Lmlu
aSIsICJzZXR1cC5jZmciXQotICAgIGFyZ3MgPSBbeCBmb3IgeCBpbiBhcmdzIGlmIG5vdCBzdHIo
eCkuc3RhcnRzd2l0aCgiLSIpXQotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBhcmdzID0gW3B5
LnBhdGgubG9jYWwoKV0KLSAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgIGFyZyA9IHB5LnBh
dGgubG9jYWwoYXJnKQotICAgICAgICBmb3IgYmFzZSBpbiBhcmcucGFydHMocmV2ZXJzZT1UcnVl
KToKLSAgICAgICAgICAgIGZvciBpbmliYXNlbmFtZSBpbiBpbmliYXNlbmFtZXM6Ci0gICAgICAg
ICAgICAgICAgcCA9IGJhc2Uuam9pbihpbmliYXNlbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBl
eGlzdHMocCk6Ci0gICAgICAgICAgICAgICAgICAgIGluaWNvbmZpZyA9IHB5LmluaWNvbmZpZy5J
bmlDb25maWcocCkKLSAgICAgICAgICAgICAgICAgICAgaWYgJ3B5dGVzdCcgaW4gaW5pY29uZmln
LnNlY3Rpb25zOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5pYmFzZW5hbWUgPT0gJ3Nl
dHVwLmNmZycgYW5kIHdhcm5mdW5jOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5m
dW5jKCdDMScsIFNFVFVQX0NGR19QWVRFU1QpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYmFzZSwgcCwgaW5pY29uZmlnWydweXRlc3QnXQotICAgICAgICAgICAgICAgICAgICBpZiBp
bmliYXNlbmFtZSA9PSAnc2V0dXAuY2ZnJyBhbmQgJ3Rvb2w6cHl0ZXN0JyBpbiBpbmljb25maWcu
c2VjdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZSwgcCwgaW5pY29u
ZmlnWyd0b29sOnB5dGVzdCddCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pYmFzZW5hbWUg
PT0gInB5dGVzdC5pbmkiOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvd2VkIHRvIGJl
IGVtcHR5Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZSwgcCwge30KLSAgICBy
ZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQotCi0KLWRlZiBnZXRfY29tbW9uX2FuY2VzdG9yKHBhdGhz
KToKLSAgICBjb21tb25fYW5jZXN0b3IgPSBOb25lCi0gICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0g
ICAgICAgIGlmIG5vdCBwYXRoLmV4aXN0cygpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgaWYgY29tbW9uX2FuY2VzdG9yIGlzIE5vbmU6Ci0gICAgICAgICAgICBjb21tb25fYW5jZXN0
b3IgPSBwYXRoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBwYXRoLnJlbHRvKGNvbW1v
bl9hbmNlc3Rvcikgb3IgcGF0aCA9PSBjb21tb25fYW5jZXN0b3I6Ci0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGVsaWYgY29tbW9uX2FuY2VzdG9yLnJlbHRvKHBhdGgpOgot
ICAgICAgICAgICAgICAgIGNvbW1vbl9hbmNlc3RvciA9IHBhdGgKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2hhcmVkID0gcGF0aC5jb21tb24oY29tbW9uX2FuY2VzdG9yKQot
ICAgICAgICAgICAgICAgIGlmIHNoYXJlZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAg
ICAgY29tbW9uX2FuY2VzdG9yID0gc2hhcmVkCi0gICAgaWYgY29tbW9uX2FuY2VzdG9yIGlzIE5v
bmU6Ci0gICAgICAgIGNvbW1vbl9hbmNlc3RvciA9IHB5LnBhdGgubG9jYWwoKQotICAgIGVsaWYg
Y29tbW9uX2FuY2VzdG9yLmlzZmlsZSgpOgotICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBjb21t
b25fYW5jZXN0b3IuZGlycGF0aCgpCi0gICAgcmV0dXJuIGNvbW1vbl9hbmNlc3RvcgotCi0KLWRl
ZiBnZXRfZGlyc19mcm9tX2FyZ3MoYXJncyk6Ci0gICAgZGVmIGlzX29wdGlvbih4KToKLSAgICAg
ICAgcmV0dXJuIHN0cih4KS5zdGFydHN3aXRoKCctJykKLQotICAgIGRlZiBnZXRfZmlsZV9wYXJ0
X2Zyb21fbm9kZV9pZCh4KToKLSAgICAgICAgcmV0dXJuIHN0cih4KS5zcGxpdCgnOjonKVswXQot
Ci0gICAgZGVmIGdldF9kaXJfZnJvbV9wYXRoKHBhdGgpOgotICAgICAgICBpZiBwYXRoLmlzZGly
KCk6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aAotICAgICAgICByZXR1cm4gcHkucGF0aC5sb2Nh
bChwYXRoLmRpcm5hbWUpCi0KLSAgICAjIFRoZXNlIGxvb2sgbGlrZSBwYXRocyBidXQgbWF5IG5v
dCBleGlzdAotICAgIHBvc3NpYmxlX3BhdGhzID0gKAotICAgICAgICBweS5wYXRoLmxvY2FsKGdl
dF9maWxlX3BhcnRfZnJvbV9ub2RlX2lkKGFyZykpCi0gICAgICAgIGZvciBhcmcgaW4gYXJncwot
ICAgICAgICBpZiBub3QgaXNfb3B0aW9uKGFyZykKLSAgICApCi0KLSAgICByZXR1cm4gWwotICAg
ICAgICBnZXRfZGlyX2Zyb21fcGF0aChwYXRoKQotICAgICAgICBmb3IgcGF0aCBpbiBwb3NzaWJs
ZV9wYXRocwotICAgICAgICBpZiBwYXRoLmV4aXN0cygpCi0gICAgXQotCi0KLWRlZiBkZXRlcm1p
bmVfc2V0dXAoaW5pZmlsZSwgYXJncywgd2FybmZ1bmM9Tm9uZSk6Ci0gICAgZGlycyA9IGdldF9k
aXJzX2Zyb21fYXJncyhhcmdzKQotICAgIGlmIGluaWZpbGU6Ci0gICAgICAgIGluaWNvbmZpZyA9
IHB5LmluaWNvbmZpZy5JbmlDb25maWcoaW5pZmlsZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgaW5pY2ZnID0gaW5pY29uZmlnWyJweXRlc3QiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6
Ci0gICAgICAgICAgICBpbmljZmcgPSBOb25lCi0gICAgICAgIHJvb3RkaXIgPSBnZXRfY29tbW9u
X2FuY2VzdG9yKGRpcnMpCi0gICAgZWxzZToKLSAgICAgICAgYW5jZXN0b3IgPSBnZXRfY29tbW9u
X2FuY2VzdG9yKGRpcnMpCi0gICAgICAgIHJvb3RkaXIsIGluaWZpbGUsIGluaWNmZyA9IGdldGNm
ZyhbYW5jZXN0b3JdLCB3YXJuZnVuYz13YXJuZnVuYykKLSAgICAgICAgaWYgcm9vdGRpciBpcyBO
b25lOgotICAgICAgICAgICAgZm9yIHJvb3RkaXIgaW4gYW5jZXN0b3IucGFydHMocmV2ZXJzZT1U
cnVlKToKLSAgICAgICAgICAgICAgICBpZiByb290ZGlyLmpvaW4oInNldHVwLnB5IikuZXhpc3Rz
KCk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHJvb3RkaXIsIGluaWZpbGUsIGluaWNmZyA9IGdldGNmZyhkaXJzLCB3YXJuZnVu
Yz13YXJuZnVuYykKLSAgICAgICAgICAgICAgICBpZiByb290ZGlyIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgICAgIHJvb3RkaXIgPSBnZXRfY29tbW9uX2FuY2VzdG9yKFtweS5wYXRoLmxvY2Fs
KCksIGFuY2VzdG9yXSkKLSAgICAgICAgICAgICAgICAgICAgaXNfZnNfcm9vdCA9IG9zLnBhdGgu
c3BsaXRkcml2ZShzdHIocm9vdGRpcikpWzFdID09ICcvJwotICAgICAgICAgICAgICAgICAgICBp
ZiBpc19mc19yb290OgotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGRpciA9IGFuY2VzdG9y
Ci0gICAgcmV0dXJuIHJvb3RkaXIsIGluaWZpbGUsIGluaWNmZyBvciB7fQotCi0KLWRlZiBzZXRu
cyhvYmosIGRpYyk6Ci0gICAgaW1wb3J0IHB5dGVzdAotICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBk
aWMuaXRlbXMoKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6Ci0gICAgICAg
ICAgICBtb2QgPSBnZXRhdHRyKG9iaiwgbmFtZSwgTm9uZSkKLSAgICAgICAgICAgIGlmIG1vZCBp
cyBOb25lOgotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSAicHl0ZXN0LiVzIiAlIG5hbWUKLSAg
ICAgICAgICAgICAgICBtb2QgPSB0eXBlcy5Nb2R1bGVUeXBlKG1vZG5hbWUpCi0gICAgICAgICAg
ICAgICAgc3lzLm1vZHVsZXNbbW9kbmFtZV0gPSBtb2QKLSAgICAgICAgICAgICAgICBtb2QuX19h
bGxfXyA9IFtdCi0gICAgICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIG1vZCkKLSAgICAg
ICAgICAgIG9iai5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2V0bnMobW9kLCB2
YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNldGF0dHIob2JqLCBuYW1lLCB2YWx1
ZSkKLSAgICAgICAgICAgIG9iai5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgIyBp
ZiBvYmogIT0gcHl0ZXN0OgotICAgICAgICAgICAgIyAgICBweXRlc3QuX19hbGxfXy5hcHBlbmQo
bmFtZSkKLSAgICAgICAgICAgIHNldGF0dHIocHl0ZXN0LCBuYW1lLCB2YWx1ZSkKLQotCi1kZWYg
Y3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihjb25maWcsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgIiIi
Q3JlYXRlIGEgVGVybWluYWxXcml0ZXIgaW5zdGFuY2UgY29uZmlndXJlZCBhY2NvcmRpbmcgdG8g
dGhlIG9wdGlvbnMKLSAgICBpbiB0aGUgY29uZmlnIG9iamVjdC4gRXZlcnkgY29kZSB3aGljaCBy
ZXF1aXJlcyBhIFRlcm1pbmFsV3JpdGVyIG9iamVjdAotICAgIGFuZCBoYXMgYWNjZXNzIHRvIGEg
Y29uZmlnIG9iamVjdCBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24uCi0gICAgIiIiCi0gICAgdHcg
PSBweS5pby5UZXJtaW5hbFdyaXRlcigqYXJncywgKiprd2FyZ3MpCi0gICAgaWYgY29uZmlnLm9w
dGlvbi5jb2xvciA9PSAneWVzJzoKLSAgICAgICAgdHcuaGFzbWFya3VwID0gVHJ1ZQotICAgIGlm
IGNvbmZpZy5vcHRpb24uY29sb3IgPT0gJ25vJzoKLSAgICAgICAgdHcuaGFzbWFya3VwID0gRmFs
c2UKLSAgICByZXR1cm4gdHcKLQotCi1kZWYgX3N0cnRvYm9vbCh2YWwpOgotICAgICIiIkNvbnZl
cnQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdHJ1dGggdG8gdHJ1ZSAoMSkgb3IgZmFsc2Ug
KDApLgotCi0gICAgVHJ1ZSB2YWx1ZXMgYXJlICd5JywgJ3llcycsICd0JywgJ3RydWUnLCAnb24n
LCBhbmQgJzEnOyBmYWxzZSB2YWx1ZXMKLSAgICBhcmUgJ24nLCAnbm8nLCAnZicsICdmYWxzZScs
ICdvZmYnLCBhbmQgJzAnLiAgUmFpc2VzIFZhbHVlRXJyb3IgaWYKLSAgICAndmFsJyBpcyBhbnl0
aGluZyBlbHNlLgotCi0gICAgLi4gbm90ZTo6IGNvcGllZCBmcm9tIGRpc3R1dGlscy51dGlsCi0g
ICAgIiIiCi0gICAgdmFsID0gdmFsLmxvd2VyKCkKLSAgICBpZiB2YWwgaW4gKCd5JywgJ3llcycs
ICd0JywgJ3RydWUnLCAnb24nLCAnMScpOgotICAgICAgICByZXR1cm4gMQotICAgIGVsaWYgdmFs
IGluICgnbicsICdubycsICdmJywgJ2ZhbHNlJywgJ29mZicsICcwJyk6Ci0gICAgICAgIHJldHVy
biAwCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB0cnV0aCB2
YWx1ZSAlciIgJSAodmFsLCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RlYnVn
Z2luZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkN2RjYTc4MDk1NmUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2RlYnVnZ2luZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBA
Ci0iIiIgaW50ZXJhY3RpdmUgZGVidWdnaW5nIHdpdGggUERCLCB0aGUgUHl0aG9uIERlYnVnZ2Vy
LiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLWltcG9ydCBwZGIKLWltcG9ydCBzeXMKLQotCi1kZWYgcHl0ZXN0X2Fk
ZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikK
LSAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAgICAnLS1wZGInLCBkZXN0PSJ1c2VwZGIiLCBh
Y3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICBoZWxwPSJzdGFydCB0aGUgaW50ZXJhY3RpdmUg
UHl0aG9uIGRlYnVnZ2VyIG9uIGVycm9ycy4iKQotICAgIGdyb3VwLl9hZGRvcHRpb24oCi0gICAg
ICAgICctLXBkYmNscycsIGRlc3Q9InVzZXBkYl9jbHMiLCBtZXRhdmFyPSJtb2R1bGVuYW1lOmNs
YXNzbmFtZSIsCi0gICAgICAgIGhlbHA9InN0YXJ0IGEgY3VzdG9tIGludGVyYWN0aXZlIFB5dGhv
biBkZWJ1Z2dlciBvbiBlcnJvcnMuICIKLSAgICAgICAgICAgICAiRm9yIGV4YW1wbGU6IC0tcGRi
Y2xzPUlQeXRob24udGVybWluYWwuZGVidWdnZXI6VGVybWluYWxQZGIiKQotCi0KLWRlZiBweXRl
c3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLmdldHZhbHVlKCJ1c2VwZGJfY2xz
Iik6Ci0gICAgICAgIG1vZG5hbWUsIGNsYXNzbmFtZSA9IGNvbmZpZy5nZXR2YWx1ZSgidXNlcGRi
X2NscyIpLnNwbGl0KCI6IikKLSAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQotICAgICAgICBw
ZGJfY2xzID0gZ2V0YXR0cihzeXMubW9kdWxlc1ttb2RuYW1lXSwgY2xhc3NuYW1lKQotICAgIGVs
c2U6Ci0gICAgICAgIHBkYl9jbHMgPSBwZGIuUGRiCi0KLSAgICBpZiBjb25maWcuZ2V0dmFsdWUo
InVzZXBkYiIpOgotICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihQZGJJbnZv
a2UoKSwgJ3BkYmludm9rZScpCi0KLSAgICBvbGQgPSAocGRiLnNldF90cmFjZSwgcHl0ZXN0UERC
Ll9wbHVnaW5tYW5hZ2VyKQotCi0gICAgZGVmIGZpbigpOgotICAgICAgICBwZGIuc2V0X3RyYWNl
LCBweXRlc3RQREIuX3BsdWdpbm1hbmFnZXIgPSBvbGQKLSAgICAgICAgcHl0ZXN0UERCLl9jb25m
aWcgPSBOb25lCi0gICAgICAgIHB5dGVzdFBEQi5fcGRiX2NscyA9IHBkYi5QZGIKLQotICAgIHBk
Yi5zZXRfdHJhY2UgPSBweXRlc3RQREIuc2V0X3RyYWNlCi0gICAgcHl0ZXN0UERCLl9wbHVnaW5t
YW5hZ2VyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIKLSAgICBweXRlc3RQREIuX2NvbmZpZyA9IGNv
bmZpZwotICAgIHB5dGVzdFBEQi5fcGRiX2NscyA9IHBkYl9jbHMKLSAgICBjb25maWcuX2NsZWFu
dXAuYXBwZW5kKGZpbikKLQotCi1jbGFzcyBweXRlc3RQREI6Ci0gICAgIiIiIFBzZXVkbyBQREIg
dGhhdCBkZWZlcnMgdG8gdGhlIHJlYWwgcGRiLiAiIiIKLSAgICBfcGx1Z2lubWFuYWdlciA9IE5v
bmUKLSAgICBfY29uZmlnID0gTm9uZQotICAgIF9wZGJfY2xzID0gcGRiLlBkYgotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHNldF90cmFjZShjbHMpOgotICAgICAgICAiIiIgaW52b2tlIFBE
QiBzZXRfdHJhY2UgZGVidWdnaW5nLCBkcm9wcGluZyBhbnkgSU8gY2FwdHVyaW5nLiAiIiIKLSAg
ICAgICAgaW1wb3J0IF9weXRlc3QuY29uZmlnCi0gICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFt
ZSgpLmZfYmFjawotICAgICAgICBpZiBjbHMuX3BsdWdpbm1hbmFnZXIgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBjYXBtYW4gPSBjbHMuX3BsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJjYXB0dXJl
bWFuYWdlciIpCi0gICAgICAgICAgICBpZiBjYXBtYW46Ci0gICAgICAgICAgICAgICAgY2FwbWFu
LnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaW5fPVRydWUpCi0gICAgICAgICAgICB0dyA9IF9weXRl
c3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5hbF93cml0ZXIoY2xzLl9jb25maWcpCi0gICAgICAgICAg
ICB0dy5saW5lKCkKLSAgICAgICAgICAgIHR3LnNlcCgiPiIsICJQREIgc2V0X3RyYWNlIChJTy1j
YXB0dXJpbmcgdHVybmVkIG9mZikiKQotICAgICAgICAgICAgY2xzLl9wbHVnaW5tYW5hZ2VyLmhv
b2sucHl0ZXN0X2VudGVyX3BkYihjb25maWc9Y2xzLl9jb25maWcpCi0gICAgICAgIGNscy5fcGRi
X2NscygpLnNldF90cmFjZShmcmFtZSkKLQotCi1jbGFzcyBQZGJJbnZva2U6Ci0gICAgZGVmIHB5
dGVzdF9leGNlcHRpb25faW50ZXJhY3Qoc2VsZiwgbm9kZSwgY2FsbCwgcmVwb3J0KToKLSAgICAg
ICAgY2FwbWFuID0gbm9kZS5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oImNhcHR1cmVt
YW5hZ2VyIikKLSAgICAgICAgaWYgY2FwbWFuOgotICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBt
YW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKLSAgICAgICAgICAgIHN5cy5zdGRv
dXQud3JpdGUob3V0KQotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShlcnIpCi0gICAgICAg
IF9lbnRlcl9wZGIobm9kZSwgY2FsbC5leGNpbmZvLCByZXBvcnQpCi0KLSAgICBkZWYgcHl0ZXN0
X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjcmVwciwgZXhjaW5mbyk6Ci0gICAgICAgIGZvciBsaW5l
IGluIHN0cihleGNyZXByKS5zcGxpdCgiXG4iKToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoIklOVEVSTkFMRVJST1I+ICVzXG4iICUgbGluZSkKLSAgICAgICAgICAgIHN5cy5zdGRlcnIu
Zmx1c2goKQotICAgICAgICB0YiA9IF9wb3N0bW9ydGVtX3RyYWNlYmFjayhleGNpbmZvKQotICAg
ICAgICBwb3N0X21vcnRlbSh0YikKLQotCi1kZWYgX2VudGVyX3BkYihub2RlLCBleGNpbmZvLCBy
ZXApOgotICAgICMgWFhYIHdlIHJlLXVzZSB0aGUgVGVybWluYWxSZXBvcnRlcidzIHRlcm1pbmFs
d3JpdGVyCi0gICAgIyBiZWNhdXNlIHRoaXMgc2VlbXMgdG8gYXZvaWQgc29tZSBlbmNvZGluZyBy
ZWxhdGVkIHRyb3VibGVzCi0gICAgIyBmb3Igbm90IGNvbXBsZXRlbHkgY2xlYXIgcmVhc29ucy4K
LSAgICB0dyA9IG5vZGUuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJ0ZXJtaW5hbHJl
cG9ydGVyIikuX3R3Ci0gICAgdHcubGluZSgpCi0gICAgdHcuc2VwKCI+IiwgInRyYWNlYmFjayIp
Ci0gICAgcmVwLnRvdGVybWluYWwodHcpCi0gICAgdHcuc2VwKCI+IiwgImVudGVyaW5nIFBEQiIp
Ci0gICAgdGIgPSBfcG9zdG1vcnRlbV90cmFjZWJhY2soZXhjaW5mbykKLSAgICBwb3N0X21vcnRl
bSh0YikKLSAgICByZXAuX3BkYnNob3duID0gVHJ1ZQotICAgIHJldHVybiByZXAKLQotCi1kZWYg
X3Bvc3Rtb3J0ZW1fdHJhY2ViYWNrKGV4Y2luZm8pOgotICAgICMgQSBkb2N0ZXN0LlVuZXhwZWN0
ZWRFeGNlcHRpb24gaXMgbm90IHVzZWZ1bCBmb3IgcG9zdF9tb3J0ZW0uCi0gICAgIyBVc2UgdGhl
IHVuZGVybHlpbmcgZXhjZXB0aW9uIGluc3RlYWQ6Ci0gICAgZnJvbSBkb2N0ZXN0IGltcG9ydCBV
bmV4cGVjdGVkRXhjZXB0aW9uCi0gICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBVbmV4
cGVjdGVkRXhjZXB0aW9uKToKLSAgICAgICAgcmV0dXJuIGV4Y2luZm8udmFsdWUuZXhjX2luZm9b
Ml0KLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gZXhjaW5mby5fZXhjaW5mb1syXQotCi0KLWRl
ZiBfZmluZF9sYXN0X25vbl9oaWRkZW5fZnJhbWUoc3RhY2spOgotICAgIGkgPSBtYXgoMCwgbGVu
KHN0YWNrKSAtIDEpCi0gICAgd2hpbGUgaSBhbmQgc3RhY2tbaV1bMF0uZl9sb2NhbHMuZ2V0KCJf
X3RyYWNlYmFja2hpZGVfXyIsIEZhbHNlKToKLSAgICAgICAgaSAtPSAxCi0gICAgcmV0dXJuIGkK
LQotCi1kZWYgcG9zdF9tb3J0ZW0odCk6Ci0gICAgY2xhc3MgUGRiKHB5dGVzdFBEQi5fcGRiX2Ns
cyk6Ci0gICAgICAgIGRlZiBnZXRfc3RhY2soc2VsZiwgZiwgdCk6Ci0gICAgICAgICAgICBzdGFj
aywgaSA9IHBkYi5QZGIuZ2V0X3N0YWNrKHNlbGYsIGYsIHQpCi0gICAgICAgICAgICBpZiBmIGlz
IE5vbmU6Ci0gICAgICAgICAgICAgICAgaSA9IF9maW5kX2xhc3Rfbm9uX2hpZGRlbl9mcmFtZShz
dGFjaykKLSAgICAgICAgICAgIHJldHVybiBzdGFjaywgaQotICAgIHAgPSBQZGIoKQotICAgIHAu
cmVzZXQoKQotICAgIHAuaW50ZXJhY3Rpb24oTm9uZSwgdCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvZGVwcmVjYXRlZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZGVwcmVjYXRl
ZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMwZmJlY2E3YmM5Li4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZXByZWNhdGVkLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNTIgKzAsMCBAQAotIiIiCi1UaGlzIG1vZHVsZSBjb250YWlucyBkZXByZWNhdGlv
biBtZXNzYWdlcyBhbmQgYml0cyBvZiBjb2RlIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFz
ZQotdGhhdCBpcyBwbGFubmVkIHRvIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcHl0ZXN0IHJlbGVh
c2UuCi0KLUtlZXBpbmcgaXQgaW4gYSBjZW50cmFsIGxvY2F0aW9uIG1ha2VzIGl0IGVhc3kgdG8g
dHJhY2sgd2hhdCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQKLWJlIHJlbW92ZWQgd2hlbiB0aGUg
dGltZSBjb21lcy4KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi0KLWNsYXNzIFJlbW92ZWRJblB5dGVzdDRXYXJu
aW5nKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgIiIid2FybmluZyBjbGFzcyBmb3IgZmVhdHVy
ZXMgcmVtb3ZlZCBpbiBweXRlc3QgNC4wIiIiCi0KLQotTUFJTl9TVFJfQVJHUyA9ICdwYXNzaW5n
IGEgc3RyaW5nIHRvIHB5dGVzdC5tYWluKCkgaXMgZGVwcmVjYXRlZCwgJyBcCi0gICAgJ3Bhc3Mg
YSBsaXN0IG9mIGFyZ3VtZW50cyBpbnN0ZWFkLicKLQotWUlFTERfVEVTVFMgPSAneWllbGQgdGVz
dHMgYXJlIGRlcHJlY2F0ZWQsIGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiBweXRlc3Qg
NC4wJwotCi1GVU5DQVJHX1BSRUZJWCA9ICgKLSAgICAne25hbWV9OiBkZWNsYXJpbmcgZml4dHVy
ZXMgdXNpbmcgInB5dGVzdF9mdW5jYXJnX18iIHByZWZpeCBpcyBkZXByZWNhdGVkICcKLSAgICAn
YW5kIHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGluIHB5dGVzdCA0LjAuICAnCi0gICAgJ1BsZWFz
ZSByZW1vdmUgdGhlIHByZWZpeCBhbmQgdXNlIHRoZSBAcHl0ZXN0LmZpeHR1cmUgZGVjb3JhdG9y
IGluc3RlYWQuJykKLQotU0VUVVBfQ0ZHX1BZVEVTVCA9ICdbcHl0ZXN0XSBzZWN0aW9uIGluIHNl
dHVwLmNmZyBmaWxlcyBpcyBkZXByZWNhdGVkLCB1c2UgW3Rvb2w6cHl0ZXN0XSBpbnN0ZWFkLicK
LQotR0VURlVOQ0FSR1ZBTFVFID0gInVzZSBvZiBnZXRmdW5jYXJndmFsdWUgaXMgZGVwcmVjYXRl
ZCwgdXNlIGdldGZpeHR1cmV2YWx1ZSIKLQotUkVTVUxUX0xPRyA9ICgKLSAgICAnLS1yZXN1bHQt
bG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBweXRlc3QgNC4w
LlxuJwotICAgICdTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3VzYWdlLmh0
bWwjY3JlYXRpbmctcmVzdWx0bG9nLWZvcm1hdC1maWxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4n
Ci0pCi0KLU1BUktfSU5GT19BVFRSSUJVVEUgPSBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZygKLSAg
ICAiTWFya0luZm8gb2JqZWN0cyBhcmUgZGVwcmVjYXRlZCBhcyB0aGV5IGNvbnRhaW4gdGhlIG1l
cmdlZCBtYXJrcyIKLSkKLQotTUFSS19QQVJBTUVURVJTRVRfVU5QQUNLSU5HID0gUmVtb3ZlZElu
UHl0ZXN0NFdhcm5pbmcoCi0gICAgIkFwcGx5aW5nIG1hcmtzIGRpcmVjdGx5IHRvIHBhcmFtZXRl
cnMgaXMgZGVwcmVjYXRlZCwiCi0gICAgIiBwbGVhc2UgdXNlIHB5dGVzdC5wYXJhbSguLi4sIG1h
cmtzPS4uLikgaW5zdGVhZC5cbiIKLSAgICAiRm9yIG1vcmUgZGV0YWlscywgc2VlOiBodHRwczov
L2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvcGFyYW1ldHJpemUuaHRtbCIKLSkKLQotQ09MTEVD
VE9SX01BS0VJVEVNID0gUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmcoCi0gICAgInB5Y29sbGVjdG9y
IG1ha2VpdGVtIHdhcyByZW1vdmVkICIKLSAgICAiYXMgaXQgaXMgYW4gYWNjaWRlbnRpYWxseSBs
ZWFrZWQgaW50ZXJuYWwgYXBpIgotKQotCi1NRVRBRlVOQ19BRERfQ0FMTCA9ICgKLSAgICAiTWV0
YWZ1bmMuYWRkY2FsbCBpcyBkZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBp
biBweXRlc3QgNC4wLlxuIgotICAgICJQbGVhc2UgdXNlIE1ldGFmdW5jLnBhcmFtZXRyaXplIGlu
c3RlYWQuIgotKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0ZXN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiYmE5MGU1NTFjNTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0
L2RvY3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNjkgKzAsMCBAQAotIiIiIGRpc2NvdmVy
IGFuZCBydW4gZG9jdGVzdHMgaW4gbW9kdWxlcyBhbmQgdGVzdCBmaWxlcy4iIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IHRyYWNlYmFjawotCi1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QuX2NvZGUu
Y29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbywgUmVwckZpbGVMb2NhdGlvbiwgVGVybWluYWxSZXBy
Ci1mcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZpeHR1cmVSZXF1ZXN0Ci0KLQotRE9DVEVT
VF9SRVBPUlRfQ0hPSUNFX05PTkUgPSAnbm9uZScKLURPQ1RFU1RfUkVQT1JUX0NIT0lDRV9DRElG
RiA9ICdjZGlmZicKLURPQ1RFU1RfUkVQT1JUX0NIT0lDRV9ORElGRiA9ICduZGlmZicKLURPQ1RF
U1RfUkVQT1JUX0NIT0lDRV9VRElGRiA9ICd1ZGlmZicKLURPQ1RFU1RfUkVQT1JUX0NIT0lDRV9P
TkxZX0ZJUlNUX0ZBSUxVUkUgPSAnb25seV9maXJzdF9mYWlsdXJlJwotCi1ET0NURVNUX1JFUE9S
VF9DSE9JQ0VTID0gKAotICAgIERPQ1RFU1RfUkVQT1JUX0NIT0lDRV9OT05FLAotICAgIERPQ1RF
U1RfUkVQT1JUX0NIT0lDRV9DRElGRiwKLSAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfTkRJRkYs
Ci0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX1VESUZGLAotICAgIERPQ1RFU1RfUkVQT1JUX0NI
T0lDRV9PTkxZX0ZJUlNUX0ZBSUxVUkUsCi0pCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFy
c2VyKToKLSAgICBwYXJzZXIuYWRkaW5pKCdkb2N0ZXN0X29wdGlvbmZsYWdzJywgJ29wdGlvbiBm
bGFncyBmb3IgZG9jdGVzdHMnLAotICAgICAgICAgICAgICAgICAgdHlwZT0iYXJncyIsIGRlZmF1
bHQ9WyJFTExJUFNJUyJdKQotICAgIHBhcnNlci5hZGRpbmkoImRvY3Rlc3RfZW5jb2RpbmciLCAn
ZW5jb2RpbmcgdXNlZCBmb3IgZG9jdGVzdCBmaWxlcycsIGRlZmF1bHQ9InV0Zi04IikKLSAgICBn
cm91cCA9IHBhcnNlci5nZXRncm91cCgiY29sbGVjdCIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCIt
LWRvY3Rlc3QtbW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9InJ1biBkb2N0ZXN0
cyBpbiBhbGwgLnB5IG1vZHVsZXMiLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSJkb2N0ZXN0
bW9kdWxlcyIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCItLWRvY3Rlc3QtcmVwb3J0IiwKLSAgICAg
ICAgICAgICAgICAgICAgdHlwZT1zdHIubG93ZXIsIGRlZmF1bHQ9InVkaWZmIiwKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0iY2hvb3NlIGFub3RoZXIgb3V0cHV0IGZvcm1hdCBmb3IgZGlmZnMg
b24gZG9jdGVzdCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1ET0NURVNU
X1JFUE9SVF9DSE9JQ0VTLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSJkb2N0ZXN0cmVwb3J0
IikKLSAgICBncm91cC5hZGRvcHRpb24oIi0tZG9jdGVzdC1nbG9iIiwKLSAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZWZhdWx0PVtdLCBtZXRhdmFyPSJwYXQiLAotICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJkb2N0ZXN0cyBmaWxlIG1hdGNoaW5nIHBhdHRlcm4sIGRlZmF1
bHQ6IHRlc3QqLnR4dCIsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9ImRvY3Rlc3RnbG9iIikK
LSAgICBncm91cC5hZGRvcHRpb24oIi0tZG9jdGVzdC1pZ25vcmUtaW1wb3J0LWVycm9ycyIsCi0g
ICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgIGhlbHA9Imlnbm9yZSBkb2N0ZXN0IEltcG9ydEVycm9ycyIsCi0g
ICAgICAgICAgICAgICAgICAgIGRlc3Q9ImRvY3Rlc3RfaWdub3JlX2ltcG9ydF9lcnJvcnMiKQot
Ci0KLWRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgY29uZmlnID0g
cGFyZW50LmNvbmZpZwotICAgIGlmIHBhdGguZXh0ID09ICIucHkiOgotICAgICAgICBpZiBjb25m
aWcub3B0aW9uLmRvY3Rlc3Rtb2R1bGVzIGFuZCBub3QgX2lzX3NldHVwX3B5KGNvbmZpZywgcGF0
aCwgcGFyZW50KToKLSAgICAgICAgICAgIHJldHVybiBEb2N0ZXN0TW9kdWxlKHBhdGgsIHBhcmVu
dCkKLSAgICBlbGlmIF9pc19kb2N0ZXN0KGNvbmZpZywgcGF0aCwgcGFyZW50KToKLSAgICAgICAg
cmV0dXJuIERvY3Rlc3RUZXh0ZmlsZShwYXRoLCBwYXJlbnQpCi0KLQotZGVmIF9pc19zZXR1cF9w
eShjb25maWcsIHBhdGgsIHBhcmVudCk6Ci0gICAgaWYgcGF0aC5iYXNlbmFtZSAhPSAic2V0dXAu
cHkiOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBjb250ZW50cyA9IHBhdGgucmVhZCgpCi0g
ICAgcmV0dXJuICdzZXR1cHRvb2xzJyBpbiBjb250ZW50cyBvciAnZGlzdHV0aWxzJyBpbiBjb250
ZW50cwotCi0KLWRlZiBfaXNfZG9jdGVzdChjb25maWcsIHBhdGgsIHBhcmVudCk6Ci0gICAgaWYg
cGF0aC5leHQgaW4gKCcudHh0JywgJy5yc3QnKSBhbmQgcGFyZW50LnNlc3Npb24uaXNpbml0cGF0
aChwYXRoKToKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBnbG9icyA9IGNvbmZpZy5nZXRvcHRp
b24oImRvY3Rlc3RnbG9iIikgb3IgWyd0ZXN0Ki50eHQnXQotICAgIGZvciBnbG9iIGluIGdsb2Jz
OgotICAgICAgICBpZiBwYXRoLmNoZWNrKGZubWF0Y2g9Z2xvYik6Ci0gICAgICAgICAgICByZXR1
cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIFJlcHJGYWlsRG9jdGVzdChUZXJt
aW5hbFJlcHIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcHJsb2NhdGlvbiwgbGluZXMp
OgotICAgICAgICBzZWxmLnJlcHJsb2NhdGlvbiA9IHJlcHJsb2NhdGlvbgotICAgICAgICBzZWxm
LmxpbmVzID0gbGluZXMKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAg
Zm9yIGxpbmUgaW4gc2VsZi5saW5lczoKLSAgICAgICAgICAgIHR3LmxpbmUobGluZSkKLSAgICAg
ICAgc2VsZi5yZXBybG9jYXRpb24udG90ZXJtaW5hbCh0dykKLQotCi1jbGFzcyBEb2N0ZXN0SXRl
bShweXRlc3QuSXRlbSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhcmVudCwgcnVu
bmVyPU5vbmUsIGR0ZXN0PU5vbmUpOgotICAgICAgICBzdXBlcihEb2N0ZXN0SXRlbSwgc2VsZiku
X19pbml0X18obmFtZSwgcGFyZW50KQotICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgotICAg
ICAgICBzZWxmLmR0ZXN0ID0gZHRlc3QKLSAgICAgICAgc2VsZi5vYmogPSBOb25lCi0gICAgICAg
IHNlbGYuZml4dHVyZV9yZXF1ZXN0ID0gTm9uZQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLmR0ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5maXh0dXJl
X3JlcXVlc3QgPSBfc2V0dXBfZml4dHVyZXMoc2VsZikKLSAgICAgICAgICAgIGdsb2JzID0gZGlj
dChnZXRmaXh0dXJlPXNlbGYuZml4dHVyZV9yZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSkKLSAgICAg
ICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLmZpeHR1cmVfcmVxdWVzdC5nZXRmaXh0dXJl
dmFsdWUoJ2RvY3Rlc3RfbmFtZXNwYWNlJykuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBnbG9i
c1tuYW1lXSA9IHZhbHVlCi0gICAgICAgICAgICBzZWxmLmR0ZXN0Lmdsb2JzLnVwZGF0ZShnbG9i
cykKLQotICAgIGRlZiBydW50ZXN0KHNlbGYpOgotICAgICAgICBfY2hlY2tfYWxsX3NraXBwZWQo
c2VsZi5kdGVzdCkKLSAgICAgICAgc2VsZi5ydW5uZXIucnVuKHNlbGYuZHRlc3QpCi0KLSAgICBk
ZWYgcmVwcl9mYWlsdXJlKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBpbXBvcnQgZG9jdGVzdAot
ICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoKGRvY3Rlc3QuRG9jVGVzdEZhaWx1cmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdGVzdC5VbmV4cGVjdGVkRXhj
ZXB0aW9uKSk6Ci0gICAgICAgICAgICBkb2N0ZXN0ZmFpbHVyZSA9IGV4Y2luZm8udmFsdWUKLSAg
ICAgICAgICAgIGV4YW1wbGUgPSBkb2N0ZXN0ZmFpbHVyZS5leGFtcGxlCi0gICAgICAgICAgICB0
ZXN0ID0gZG9jdGVzdGZhaWx1cmUudGVzdAotICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0LmZp
bGVuYW1lCi0gICAgICAgICAgICBpZiB0ZXN0LmxpbmVubyBpcyBOb25lOgotICAgICAgICAgICAg
ICAgIGxpbmVubyA9IE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbGlu
ZW5vID0gdGVzdC5saW5lbm8gKyBleGFtcGxlLmxpbmVubyArIDEKLSAgICAgICAgICAgIG1lc3Nh
Z2UgPSBleGNpbmZvLnR5cGUuX19uYW1lX18KLSAgICAgICAgICAgIHJlcHJsb2NhdGlvbiA9IFJl
cHJGaWxlTG9jYXRpb24oZmlsZW5hbWUsIGxpbmVubywgbWVzc2FnZSkKLSAgICAgICAgICAgIGNo
ZWNrZXIgPSBfZ2V0X2NoZWNrZXIoKQotICAgICAgICAgICAgcmVwb3J0X2Nob2ljZSA9IF9nZXRf
cmVwb3J0X2Nob2ljZShzZWxmLmNvbmZpZy5nZXRvcHRpb24oImRvY3Rlc3RyZXBvcnQiKSkKLSAg
ICAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBsaW5lcyA9
IGRvY3Rlc3RmYWlsdXJlLnRlc3QuZG9jc3RyaW5nLnNwbGl0bGluZXMoRmFsc2UpCi0gICAgICAg
ICAgICAgICAgIyBhZGQgbGluZSBudW1iZXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBlcnJvciBtZXNz
YWdlCi0gICAgICAgICAgICAgICAgbGluZXMgPSBbIiUwM2QgJXMiICUgKGkgKyB0ZXN0LmxpbmVu
byArIDEsIHgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpLCB4KSBpbiBlbnVtZXJh
dGUobGluZXMpXQotICAgICAgICAgICAgICAgICMgdHJpbSBkb2NzdHJpbmcgZXJyb3IgbGluZXMg
dG8gMTAKLSAgICAgICAgICAgICAgICBsaW5lcyA9IGxpbmVzW21heChleGFtcGxlLmxpbmVubyAt
IDksIDApOmV4YW1wbGUubGluZW5vICsgMV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgbGluZXMgPSBbJ0VYQU1QTEUgTE9DQVRJT04gVU5LTk9XTiwgbm90IHNob3dpbmcgYWxs
IHRlc3RzIG9mIHRoYXQgZXhhbXBsZSddCi0gICAgICAgICAgICAgICAgaW5kZW50ID0gJz4+PicK
LSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBleGFtcGxlLnNvdXJjZS5zcGxpdGxpbmVzKCk6
Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnPz8/ICVzICVzJyAlIChpbmRlbnQs
IGxpbmUpKQotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAnLi4uJwotICAgICAgICAgICAg
aWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKGRvY3Rlc3QuRG9jVGVzdEZhaWx1cmUpOgotICAgICAg
ICAgICAgICAgIGxpbmVzICs9IGNoZWNrZXIub3V0cHV0X2RpZmZlcmVuY2UoZXhhbXBsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Rlc3Rm
YWlsdXJlLmdvdCwgcmVwb3J0X2Nob2ljZSkuc3BsaXQoIlxuIikKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgaW5uZXJfZXhjaW5mbyA9IEV4Y2VwdGlvbkluZm8oZXhjaW5mby52
YWx1ZS5leGNfaW5mbykKLSAgICAgICAgICAgICAgICBsaW5lcyArPSBbIlVORVhQRUNURUQgRVhD
RVBUSU9OOiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGlubmVyX2V4Y2lu
Zm8udmFsdWUpXQotICAgICAgICAgICAgICAgIGxpbmVzICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
ZXB0aW9uKCpleGNpbmZvLnZhbHVlLmV4Y19pbmZvKQotICAgICAgICAgICAgcmV0dXJuIFJlcHJG
YWlsRG9jdGVzdChyZXBybG9jYXRpb24sIGxpbmVzKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmV0dXJuIHN1cGVyKERvY3Rlc3RJdGVtLCBzZWxmKS5yZXByX2ZhaWx1cmUoZXhjaW5mbykK
LQotICAgIGRlZiByZXBvcnRpbmZvKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5mc3BhdGgs
IHNlbGYuZHRlc3QubGluZW5vLCAiW2RvY3Rlc3RdICVzIiAlIHNlbGYubmFtZQotCi0KLWRlZiBf
Z2V0X2ZsYWdfbG9va3VwKCk6Ci0gICAgaW1wb3J0IGRvY3Rlc3QKLSAgICByZXR1cm4gZGljdChE
T05UX0FDQ0VQVF9UUlVFX0ZPUl8xPWRvY3Rlc3QuRE9OVF9BQ0NFUFRfVFJVRV9GT1JfMSwKLSAg
ICAgICAgICAgICAgICBET05UX0FDQ0VQVF9CTEFOS0xJTkU9ZG9jdGVzdC5ET05UX0FDQ0VQVF9C
TEFOS0xJTkUsCi0gICAgICAgICAgICAgICAgTk9STUFMSVpFX1dISVRFU1BBQ0U9ZG9jdGVzdC5O
T1JNQUxJWkVfV0hJVEVTUEFDRSwKLSAgICAgICAgICAgICAgICBFTExJUFNJUz1kb2N0ZXN0LkVM
TElQU0lTLAotICAgICAgICAgICAgICAgIElHTk9SRV9FWENFUFRJT05fREVUQUlMPWRvY3Rlc3Qu
SUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwsCi0gICAgICAgICAgICAgICAgQ09NUEFSSVNPTl9GTEFH
Uz1kb2N0ZXN0LkNPTVBBUklTT05fRkxBR1MsCi0gICAgICAgICAgICAgICAgQUxMT1dfVU5JQ09E
RT1fZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpLAotICAgICAgICAgICAgICAgIEFMTE9XX0JZVEVT
PV9nZXRfYWxsb3dfYnl0ZXNfZmxhZygpLAotICAgICAgICAgICAgICAgICkKLQotCi1kZWYgZ2V0
X29wdGlvbmZsYWdzKHBhcmVudCk6Ci0gICAgb3B0aW9uZmxhZ3Nfc3RyID0gcGFyZW50LmNvbmZp
Zy5nZXRpbmkoImRvY3Rlc3Rfb3B0aW9uZmxhZ3MiKQotICAgIGZsYWdfbG9va3VwX3RhYmxlID0g
X2dldF9mbGFnX2xvb2t1cCgpCi0gICAgZmxhZ19hY2MgPSAwCi0gICAgZm9yIGZsYWcgaW4gb3B0
aW9uZmxhZ3Nfc3RyOgotICAgICAgICBmbGFnX2FjYyB8PSBmbGFnX2xvb2t1cF90YWJsZVtmbGFn
XQotICAgIHJldHVybiBmbGFnX2FjYwotCi0KLWNsYXNzIERvY3Rlc3RUZXh0ZmlsZShweXRlc3Qu
TW9kdWxlKToKLSAgICBvYmogPSBOb25lCi0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAg
ICAgaW1wb3J0IGRvY3Rlc3QKLQotICAgICAgICAjIGluc3BpcmVkIGJ5IGRvY3Rlc3QudGVzdGZp
bGU7IGlkZWFsbHkgd2Ugd291bGQgdXNlIGl0IGRpcmVjdGx5LAotICAgICAgICAjIGJ1dCBpdCBk
b2Vzbid0IHN1cHBvcnQgcGFzc2luZyBhIGN1c3RvbSBjaGVja2VyCi0gICAgICAgIGVuY29kaW5n
ID0gc2VsZi5jb25maWcuZ2V0aW5pKCJkb2N0ZXN0X2VuY29kaW5nIikKLSAgICAgICAgdGV4dCA9
IHNlbGYuZnNwYXRoLnJlYWRfdGV4dChlbmNvZGluZykKLSAgICAgICAgZmlsZW5hbWUgPSBzdHIo
c2VsZi5mc3BhdGgpCi0gICAgICAgIG5hbWUgPSBzZWxmLmZzcGF0aC5iYXNlbmFtZQotICAgICAg
ICBnbG9icyA9IHsnX19uYW1lX18nOiAnX19tYWluX18nfQotCi0gICAgICAgIG9wdGlvbmZsYWdz
ID0gZ2V0X29wdGlvbmZsYWdzKHNlbGYpCi0gICAgICAgIHJ1bm5lciA9IGRvY3Rlc3QuRGVidWdS
dW5uZXIodmVyYm9zZT0wLCBvcHRpb25mbGFncz1vcHRpb25mbGFncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VyPV9nZXRfY2hlY2tlcigpKQotICAgICAgICBf
Zml4X3Nwb29mX3B5dGhvbjIocnVubmVyLCBlbmNvZGluZykKLQotICAgICAgICBwYXJzZXIgPSBk
b2N0ZXN0LkRvY1Rlc3RQYXJzZXIoKQotICAgICAgICB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0
KHRleHQsIGdsb2JzLCBuYW1lLCBmaWxlbmFtZSwgMCkKLSAgICAgICAgaWYgdGVzdC5leGFtcGxl
czoKLSAgICAgICAgICAgIHlpZWxkIERvY3Rlc3RJdGVtKHRlc3QubmFtZSwgc2VsZiwgcnVubmVy
LCB0ZXN0KQotCi0KLWRlZiBfY2hlY2tfYWxsX3NraXBwZWQodGVzdCk6Ci0gICAgIiIicmFpc2Vz
IHB5dGVzdC5za2lwKCkgaWYgYWxsIGV4YW1wbGVzIGluIHRoZSBnaXZlbiBEb2NUZXN0IGhhdmUg
dGhlIFNLSVAKLSAgICBvcHRpb24gc2V0LgotICAgICIiIgotICAgIGltcG9ydCBkb2N0ZXN0Ci0g
ICAgYWxsX3NraXBwZWQgPSBhbGwoeC5vcHRpb25zLmdldChkb2N0ZXN0LlNLSVAsIEZhbHNlKSBm
b3IgeCBpbiB0ZXN0LmV4YW1wbGVzKQotICAgIGlmIGFsbF9za2lwcGVkOgotICAgICAgICBweXRl
c3Quc2tpcCgnYWxsIHRlc3RzIHNraXBwZWQgYnkgK1NLSVAgb3B0aW9uJykKLQotCi1jbGFzcyBE
b2N0ZXN0TW9kdWxlKHB5dGVzdC5Nb2R1bGUpOgotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAg
ICAgICBpbXBvcnQgZG9jdGVzdAotICAgICAgICBpZiBzZWxmLmZzcGF0aC5iYXNlbmFtZSA9PSAi
Y29uZnRlc3QucHkiOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5jb25maWcucGx1Z2lubWFu
YWdlci5faW1wb3J0Y29uZnRlc3Qoc2VsZi5mc3BhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5mc3BhdGgucHlpbXBvcnQo
KQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIGlmIHNl
bGYuY29uZmlnLmdldHZhbHVlKCdkb2N0ZXN0X2lnbm9yZV9pbXBvcnRfZXJyb3JzJyk6Ci0gICAg
ICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCd1bmFibGUgdG8gaW1wb3J0IG1vZHVsZSAlcicg
JSBzZWxmLmZzcGF0aCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAjIHVzZXMgaW50ZXJuYWwgZG9jdGVzdCBtb2R1bGUgcGFyc2luZyBt
ZWNoYW5pc20KLSAgICAgICAgZmluZGVyID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKCkKLSAgICAg
ICAgb3B0aW9uZmxhZ3MgPSBnZXRfb3B0aW9uZmxhZ3Moc2VsZikKLSAgICAgICAgcnVubmVyID0g
ZG9jdGVzdC5EZWJ1Z1J1bm5lcih2ZXJib3NlPTAsIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZXI9X2dldF9jaGVja2Vy
KCkpCi0KLSAgICAgICAgZm9yIHRlc3QgaW4gZmluZGVyLmZpbmQobW9kdWxlLCBtb2R1bGUuX19u
YW1lX18pOgotICAgICAgICAgICAgaWYgdGVzdC5leGFtcGxlczogICMgc2tpcCBlbXB0eSBkb2N0
ZXN0cwotICAgICAgICAgICAgICAgIHlpZWxkIERvY3Rlc3RJdGVtKHRlc3QubmFtZSwgc2VsZiwg
cnVubmVyLCB0ZXN0KQotCi0KLWRlZiBfc2V0dXBfZml4dHVyZXMoZG9jdGVzdF9pdGVtKToKLSAg
ICAiIiIKLSAgICBVc2VkIGJ5IERvY3Rlc3RUZXh0ZmlsZSBhbmQgRG9jdGVzdEl0ZW0gdG8gc2V0
dXAgZml4dHVyZSBpbmZvcm1hdGlvbi4KLSAgICAiIiIKLSAgICBkZWYgZnVuYygpOgotICAgICAg
ICBwYXNzCi0KLSAgICBkb2N0ZXN0X2l0ZW0uZnVuY2FyZ3MgPSB7fQotICAgIGZtID0gZG9jdGVz
dF9pdGVtLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0gICAgZG9jdGVzdF9pdGVtLl9maXh0dXJl
aW5mbyA9IGZtLmdldGZpeHR1cmVpbmZvKG5vZGU9ZG9jdGVzdF9pdGVtLCBmdW5jPWZ1bmMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1Ob25l
LCBmdW5jYXJncz1GYWxzZSkKLSAgICBmaXh0dXJlX3JlcXVlc3QgPSBGaXh0dXJlUmVxdWVzdChk
b2N0ZXN0X2l0ZW0pCi0gICAgZml4dHVyZV9yZXF1ZXN0Ll9maWxsZml4dHVyZXMoKQotICAgIHJl
dHVybiBmaXh0dXJlX3JlcXVlc3QKLQotCi1kZWYgX2dldF9jaGVja2VyKCk6Ci0gICAgIiIiCi0g
ICAgUmV0dXJucyBhIGRvY3Rlc3QuT3V0cHV0Q2hlY2tlciBzdWJjbGFzcyB0aGF0IHRha2VzIGlu
IGFjY291bnQgdGhlCi0gICAgQUxMT1dfVU5JQ09ERSBvcHRpb24gdG8gaWdub3JlIHUnJyBwcmVm
aXhlcyBpbiBzdHJpbmdzIGFuZCBBTExPV19CWVRFUwotICAgIHRvIHN0cmlwIGInJyBwcmVmaXhl
cy4KLSAgICBVc2VmdWwgd2hlbiB0aGUgc2FtZSBkb2N0ZXN0IHNob3VsZCBydW4gaW4gUHl0aG9u
IDIgYW5kIFB5dGhvbiAzLgotCi0gICAgQW4gaW5uZXIgY2xhc3MgaXMgdXNlZCB0byBhdm9pZCBp
bXBvcnRpbmcgImRvY3Rlc3QiIGF0IHRoZSBtb2R1bGUKLSAgICBsZXZlbC4KLSAgICAiIiIKLSAg
ICBpZiBoYXNhdHRyKF9nZXRfY2hlY2tlciwgJ0xpdGVyYWxzT3V0cHV0Q2hlY2tlcicpOgotICAg
ICAgICByZXR1cm4gX2dldF9jaGVja2VyLkxpdGVyYWxzT3V0cHV0Q2hlY2tlcigpCi0KLSAgICBp
bXBvcnQgZG9jdGVzdAotICAgIGltcG9ydCByZQotCi0gICAgY2xhc3MgTGl0ZXJhbHNPdXRwdXRD
aGVja2VyKGRvY3Rlc3QuT3V0cHV0Q2hlY2tlcik6Ci0gICAgICAgICIiIgotICAgICAgICBDb3Bp
ZWQgZnJvbSBkb2N0ZXN0X25vc2VfcGx1Z2luLnB5IGZyb20gdGhlIG5sdGsgcHJvamVjdDoKLSAg
ICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9ubHRrL25sdGsKLQotICAgICAgICBGdXJ0aGVy
IGV4dGVuZGVkIHRvIGFsc28gc3VwcG9ydCBieXRlIGxpdGVyYWxzLgotICAgICAgICAiIiIKLQot
ICAgICAgICBfdW5pY29kZV9saXRlcmFsX3JlID0gcmUuY29tcGlsZShyIihcV3xeKVt1VV0oW3JS
XT9bXCdcIl0pIiwgcmUuVU5JQ09ERSkKLSAgICAgICAgX2J5dGVzX2xpdGVyYWxfcmUgPSByZS5j
b21waWxlKHIiKFxXfF4pW2JCXShbclJdP1tcJ1wiXSkiLCByZS5VTklDT0RFKQotCi0gICAgICAg
IGRlZiBjaGVja19vdXRwdXQoc2VsZiwgd2FudCwgZ290LCBvcHRpb25mbGFncyk6Ci0gICAgICAg
ICAgICByZXMgPSBkb2N0ZXN0Lk91dHB1dENoZWNrZXIuY2hlY2tfb3V0cHV0KHNlbGYsIHdhbnQs
IGdvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uZmxhZ3MpCi0gICAgICAgICAgICBpZiByZXM6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLQotICAgICAgICAgICAgYWxsb3dfdW5pY29kZSA9IG9wdGlvbmZsYWdzICYgX2dl
dF9hbGxvd191bmljb2RlX2ZsYWcoKQotICAgICAgICAgICAgYWxsb3dfYnl0ZXMgPSBvcHRpb25m
bGFncyAmIF9nZXRfYWxsb3dfYnl0ZXNfZmxhZygpCi0gICAgICAgICAgICBpZiBub3QgYWxsb3df
dW5pY29kZSBhbmQgbm90IGFsbG93X2J5dGVzOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotCi0gICAgICAgICAgICBlbHNlOiAgIyBwcmFnbWE6IG5vIGNvdmVyCi0gICAgICAgICAgICAg
ICAgZGVmIHJlbW92ZV9wcmVmaXhlcyhyZWdleCwgdHh0KToKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlLnN1YihyZWdleCwgcidcMVwyJywgdHh0KQotCi0gICAgICAgICAgICAgICAgaWYg
YWxsb3dfdW5pY29kZToKLSAgICAgICAgICAgICAgICAgICAgd2FudCA9IHJlbW92ZV9wcmVmaXhl
cyhzZWxmLl91bmljb2RlX2xpdGVyYWxfcmUsIHdhbnQpCi0gICAgICAgICAgICAgICAgICAgIGdv
dCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl91bmljb2RlX2xpdGVyYWxfcmUsIGdvdCkKLSAgICAg
ICAgICAgICAgICBpZiBhbGxvd19ieXRlczoKLSAgICAgICAgICAgICAgICAgICAgd2FudCA9IHJl
bW92ZV9wcmVmaXhlcyhzZWxmLl9ieXRlc19saXRlcmFsX3JlLCB3YW50KQotICAgICAgICAgICAg
ICAgICAgICBnb3QgPSByZW1vdmVfcHJlZml4ZXMoc2VsZi5fYnl0ZXNfbGl0ZXJhbF9yZSwgZ290
KQotICAgICAgICAgICAgICAgIHJlcyA9IGRvY3Rlc3QuT3V0cHV0Q2hlY2tlci5jaGVja19vdXRw
dXQoc2VsZiwgd2FudCwgZ290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uZmxhZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlcwotCi0gICAgX2dldF9jaGVja2VyLkxpdGVyYWxzT3V0cHV0Q2hlY2tlciA9IExpdGVyYWxz
T3V0cHV0Q2hlY2tlcgotICAgIHJldHVybiBfZ2V0X2NoZWNrZXIuTGl0ZXJhbHNPdXRwdXRDaGVj
a2VyKCkKLQotCi1kZWYgX2dldF9hbGxvd191bmljb2RlX2ZsYWcoKToKLSAgICAiIiIKLSAgICBS
ZWdpc3RlcnMgYW5kIHJldHVybnMgdGhlIEFMTE9XX1VOSUNPREUgZmxhZy4KLSAgICAiIiIKLSAg
ICBpbXBvcnQgZG9jdGVzdAotICAgIHJldHVybiBkb2N0ZXN0LnJlZ2lzdGVyX29wdGlvbmZsYWco
J0FMTE9XX1VOSUNPREUnKQotCi0KLWRlZiBfZ2V0X2FsbG93X2J5dGVzX2ZsYWcoKToKLSAgICAi
IiIKLSAgICBSZWdpc3RlcnMgYW5kIHJldHVybnMgdGhlIEFMTE9XX0JZVEVTIGZsYWcuCi0gICAg
IiIiCi0gICAgaW1wb3J0IGRvY3Rlc3QKLSAgICByZXR1cm4gZG9jdGVzdC5yZWdpc3Rlcl9vcHRp
b25mbGFnKCdBTExPV19CWVRFUycpCi0KLQotZGVmIF9nZXRfcmVwb3J0X2Nob2ljZShrZXkpOgot
ICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWN0dWFsIGBkb2N0ZXN0YCBt
b2R1bGUgZmxhZyB2YWx1ZSwgd2Ugd2FudCB0byBkbyBpdCBhcyBsYXRlIGFzIHBvc3NpYmxlIHRv
IGF2b2lkCi0gICAgaW1wb3J0aW5nIGBkb2N0ZXN0YCBhbmQgYWxsIGl0cyBkZXBlbmRlbmNpZXMg
d2hlbiBwYXJzaW5nIG9wdGlvbnMsIGFzIGl0IGFkZHMgb3ZlcmhlYWQgYW5kIGJyZWFrcyB0ZXN0
cy4KLSAgICAiIiIKLSAgICBpbXBvcnQgZG9jdGVzdAotCi0gICAgcmV0dXJuIHsKLSAgICAgICAg
RE9DVEVTVF9SRVBPUlRfQ0hPSUNFX1VESUZGOiBkb2N0ZXN0LlJFUE9SVF9VRElGRiwKLSAgICAg
ICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX0NESUZGOiBkb2N0ZXN0LlJFUE9SVF9DRElGRiwKLSAg
ICAgICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX05ESUZGOiBkb2N0ZXN0LlJFUE9SVF9ORElGRiwK
LSAgICAgICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRTogZG9jdGVz
dC5SRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9J
Q0VfTk9ORTogMCwKLSAgICB9W2tleV0KLQotCi1kZWYgX2ZpeF9zcG9vZl9weXRob24yKHJ1bm5l
ciwgZW5jb2RpbmcpOgotICAgICIiIgotICAgIEluc3RhbGxzIGEgIlNwb29mT3V0IiBpbnRvIHRo
ZSBnaXZlbiBEZWJ1Z1J1bm5lciBzbyBpdCBwcm9wZXJseSBkZWFscyB3aXRoIHVuaWNvZGUgb3V0
cHV0LiBUaGlzCi0gICAgc2hvdWxkIHBhdGNoIG9ubHkgZG9jdGVzdHMgZm9yIHRleHQgZmlsZXMg
YmVjYXVzZSB0aGV5IGRvbid0IGhhdmUgYSB3YXkgdG8gZGVjbGFyZSB0aGVpcgotICAgIGVuY29k
aW5nLiBEb2N0ZXN0cyBpbiBkb2NzdHJpbmdzIGZyb20gUHl0aG9uIG1vZHVsZXMgZG9uJ3QgaGF2
ZSB0aGUgc2FtZSBwcm9ibGVtIGdpdmVuIHRoYXQKLSAgICBQeXRob24gYWxyZWFkeSBkZWNvZGVk
IHRoZSBzdHJpbmdzLgotCi0gICAgVGhpcyBmaXhlcyB0aGUgcHJvYmxlbSByZWxhdGVkIGluIGlz
c3VlICMyNDM0LgotICAgICIiIgotICAgIGZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IF9QWTIK
LSAgICBpZiBub3QgX1BZMjoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBmcm9tIGRvY3Rlc3QgaW1w
b3J0IF9TcG9vZk91dAotCi0gICAgY2xhc3MgVW5pY29kZVNwb29mKF9TcG9vZk91dCk6Ci0KLSAg
ICAgICAgZGVmIGdldHZhbHVlKHNlbGYpOgotICAgICAgICAgICAgcmVzdWx0ID0gX1Nwb29mT3V0
LmdldHZhbHVlKHNlbGYpCi0gICAgICAgICAgICBpZiBlbmNvZGluZzoKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSByZXN1bHQuZGVjb2RlKGVuY29kaW5nKQotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdAotCi0gICAgcnVubmVyLl9mYWtlb3V0ID0gVW5pY29kZVNwb29mKCkKLQotCi1AcHl0ZXN0
LmZpeHR1cmUoc2NvcGU9J3Nlc3Npb24nKQotZGVmIGRvY3Rlc3RfbmFtZXNwYWNlKCk6Ci0gICAg
IiIiCi0gICAgSW5qZWN0IG5hbWVzIGludG8gdGhlIGRvY3Rlc3QgbmFtZXNwYWNlLgotICAgICIi
IgotICAgIHJldHVybiBkaWN0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZml4
dHVyZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2ZpeHR1cmVzLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlMDlmZmFkZGJhNzMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2ZpeHR1cmVzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTE0NyArMCwwIEBA
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50
X2Z1bmN0aW9uCi0KLWltcG9ydCBmdW5jdG9vbHMKLWltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgc3lz
Ci1pbXBvcnQgd2FybmluZ3MKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci0K
LWltcG9ydCBhdHRyCi1pbXBvcnQgcHkKLWZyb20gcHkuX2NvZGUuY29kZSBpbXBvcnQgRm9ybWF0
dGVkRXhjaW5mbwotCi1pbXBvcnQgX3B5dGVzdAotZnJvbSBfcHl0ZXN0IGltcG9ydCBub2Rlcwot
ZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgotZnJvbSBfcHl0ZXN0
LmNvbXBhdCBpbXBvcnQgKAotICAgIE5PVFNFVCwgZXhjX2NsZWFyLCBfZm9ybWF0X2FyZ3MsCi0g
ICAgZ2V0ZnNsaW5lbm8sIGdldF9yZWFsX2Z1bmMsCi0gICAgaXNfZ2VuZXJhdG9yLCBpc2NsYXNz
LCBnZXRpbWZ1bmMsCi0gICAgZ2V0bG9jYXRpb24sIGdldGZ1bmNhcmduYW1lcywKLSAgICBzYWZl
X2dldGF0dHIsCi0gICAgRnVuY2FyZ25hbWVzQ29tcGF0QXR0ciwKLSkKLWZyb20gX3B5dGVzdC5v
dXRjb21lcyBpbXBvcnQgZmFpbCwgVEVTVF9PVVRDT01FCi0KLQotZGVmIHB5dGVzdF9zZXNzaW9u
c3RhcnQoc2Vzc2lvbik6Ci0gICAgaW1wb3J0IF9weXRlc3QucHl0aG9uCi0KLSAgICBzY29wZW5h
bWUyY2xhc3MudXBkYXRlKHsKLSAgICAgICAgJ2NsYXNzJzogX3B5dGVzdC5weXRob24uQ2xhc3Ms
Ci0gICAgICAgICdtb2R1bGUnOiBfcHl0ZXN0LnB5dGhvbi5Nb2R1bGUsCi0gICAgICAgICdmdW5j
dGlvbic6IF9weXRlc3QubWFpbi5JdGVtLAotICAgICAgICAnc2Vzc2lvbic6IF9weXRlc3QubWFp
bi5TZXNzaW9uLAotICAgIH0pCi0gICAgc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIgPSBGaXh0dXJl
TWFuYWdlcihzZXNzaW9uKQotCi0KLXNjb3BlbmFtZTJjbGFzcyA9IHt9Ci0KLQotc2NvcGUycHJv
cHMgPSBkaWN0KHNlc3Npb249KCkpCi1zY29wZTJwcm9wc1sibW9kdWxlIl0gPSAoImZzcGF0aCIs
ICJtb2R1bGUiKQotc2NvcGUycHJvcHNbImNsYXNzIl0gPSBzY29wZTJwcm9wc1sibW9kdWxlIl0g
KyAoImNscyIsKQotc2NvcGUycHJvcHNbImluc3RhbmNlIl0gPSBzY29wZTJwcm9wc1siY2xhc3Mi
XSArICgiaW5zdGFuY2UiLCApCi1zY29wZTJwcm9wc1siZnVuY3Rpb24iXSA9IHNjb3BlMnByb3Bz
WyJpbnN0YW5jZSJdICsgKCJmdW5jdGlvbiIsICJrZXl3b3JkcyIpCi0KLQotZGVmIHNjb3BlcHJv
cGVydHkobmFtZT1Ob25lLCBkb2M9Tm9uZSk6Ci0gICAgZGVmIGRlY29yYXRlc2NvcGUoZnVuYyk6
Ci0gICAgICAgIHNjb3BlbmFtZSA9IG5hbWUgb3IgZnVuYy5fX25hbWVfXwotCi0gICAgICAgIGRl
ZiBwcm92aWRlKHNlbGYpOgotICAgICAgICAgICAgaWYgZnVuYy5fX25hbWVfXyBpbiBzY29wZTJw
cm9wc1tzZWxmLnNjb3BlXToKLSAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyhzZWxmKQotICAg
ICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIG5vdCBhdmFpbGFibGUgaW4gJXMtc2Nv
cGVkIGNvbnRleHQiICUgKAotICAgICAgICAgICAgICAgIHNjb3BlbmFtZSwgc2VsZi5zY29wZSkp
Ci0KLSAgICAgICAgcmV0dXJuIHByb3BlcnR5KHByb3ZpZGUsIE5vbmUsIE5vbmUsIGZ1bmMuX19k
b2NfXykKLSAgICByZXR1cm4gZGVjb3JhdGVzY29wZQotCi0KLWRlZiBnZXRfc2NvcGVfbm9kZShu
b2RlLCBzY29wZSk6Ci0gICAgY2xzID0gc2NvcGVuYW1lMmNsYXNzLmdldChzY29wZSkKLSAgICBp
ZiBjbHMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5rbm93biBzY29wZSIp
Ci0gICAgcmV0dXJuIG5vZGUuZ2V0cGFyZW50KGNscykKLQotCi1kZWYgYWRkX2Z1bmNhcmdfcHNl
dWRvX2ZpeHR1cmVfZGVmKGNvbGxlY3RvciwgbWV0YWZ1bmMsIGZpeHR1cmVtYW5hZ2VyKToKLSAg
ICAjIHRoaXMgZnVuY3Rpb24gd2lsbCB0cmFuc2Zvcm0gYWxsIGNvbGxlY3RlZCBjYWxscyB0byBh
IGZ1bmN0aW9ucwotICAgICMgaWYgdGhleSB1c2UgZGlyZWN0IGZ1bmNhcmdzIChpLmUuIGRpcmVj
dCBwYXJhbWV0cml6YXRpb24pCi0gICAgIyBiZWNhdXNlIHdlIHdhbnQgbGF0ZXIgdGVzdCBleGVj
dXRpb24gdG8gYmUgYWJsZSB0byByZWx5IG9uCi0gICAgIyBhbiBleGlzdGluZyBGaXh0dXJlRGVm
IHN0cnVjdHVyZSBmb3IgYWxsIGFyZ3VtZW50cy4KLSAgICAjIFhYWCB3ZSBjYW4gcHJvYmFibHkg
YXZvaWQgdGhpcyBhbGdvcml0aG0gIGlmIHdlIG1vZGlmeSBDYWxsU3BlYzIKLSAgICAjIHRvIGRp
cmVjdGx5IGNhcmUgZm9yIGNyZWF0aW5nIHRoZSBmaXh0dXJlZGVmcyB3aXRoaW4gaXRzIG1ldGhv
ZHMuCi0gICAgaWYgbm90IG1ldGFmdW5jLl9jYWxsc1swXS5mdW5jYXJnczoKLSAgICAgICAgcmV0
dXJuICAjIHRoaXMgZnVuY3Rpb24gY2FsbCBkb2VzIG5vdCBoYXZlIGRpcmVjdCBwYXJhbWV0cml6
YXRpb24KLSAgICAjIGNvbGxlY3QgZnVuY2FyZ3Mgb2YgYWxsIGNhbGxzcGVjcyBpbnRvIGEgbGlz
dCBvZiB2YWx1ZXMKLSAgICBhcmcycGFyYW1zID0ge30KLSAgICBhcmcyc2NvcGUgPSB7fQotICAg
IGZvciBjYWxsc3BlYyBpbiBtZXRhZnVuYy5fY2FsbHM6Ci0gICAgICAgIGZvciBhcmduYW1lLCBh
cmd2YWx1ZSBpbiBjYWxsc3BlYy5mdW5jYXJncy5pdGVtcygpOgotICAgICAgICAgICAgYXNzZXJ0
IGFyZ25hbWUgbm90IGluIGNhbGxzcGVjLnBhcmFtcwotICAgICAgICAgICAgY2FsbHNwZWMucGFy
YW1zW2FyZ25hbWVdID0gYXJndmFsdWUKLSAgICAgICAgICAgIGFyZzJwYXJhbXNfbGlzdCA9IGFy
ZzJwYXJhbXMuc2V0ZGVmYXVsdChhcmduYW1lLCBbXSkKLSAgICAgICAgICAgIGNhbGxzcGVjLmlu
ZGljZXNbYXJnbmFtZV0gPSBsZW4oYXJnMnBhcmFtc19saXN0KQotICAgICAgICAgICAgYXJnMnBh
cmFtc19saXN0LmFwcGVuZChhcmd2YWx1ZSkKLSAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGlu
IGFyZzJzY29wZToKLSAgICAgICAgICAgICAgICBzY29wZW51bSA9IGNhbGxzcGVjLl9hcmcyc2Nv
cGVudW0uZ2V0KGFyZ25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY29wZW51bV9mdW5jdGlvbikKLSAgICAgICAgICAgICAgICBhcmcy
c2NvcGVbYXJnbmFtZV0gPSBzY29wZXNbc2NvcGVudW1dCi0gICAgICAgIGNhbGxzcGVjLmZ1bmNh
cmdzLmNsZWFyKCkKLQotICAgICMgcmVnaXN0ZXIgYXJ0aWZpY2lhbCBGaXh0dXJlRGVmJ3Mgc28g
dGhhdCBsYXRlciBhdCB0ZXN0IGV4ZWN1dGlvbgotICAgICMgdGltZSB3ZSBjYW4gcmVseSBvbiBh
IHByb3BlciBGaXh0dXJlRGVmIHRvIGV4aXN0IGZvciBmaXh0dXJlIHNldHVwLgotICAgIGFyZzJm
aXh0dXJlZGVmcyA9IG1ldGFmdW5jLl9hcmcyZml4dHVyZWRlZnMKLSAgICBmb3IgYXJnbmFtZSwg
dmFsdWVsaXN0IGluIGFyZzJwYXJhbXMuaXRlbXMoKToKLSAgICAgICAgIyBpZiB3ZSBoYXZlIGEg
c2NvcGUgdGhhdCBpcyBoaWdoZXIgdGhhbiBmdW5jdGlvbiB3ZSBuZWVkCi0gICAgICAgICMgdG8g
bWFrZSBzdXJlIHdlIG9ubHkgZXZlciBjcmVhdGUgYW4gYWNjb3JkaW5nIGZpeHR1cmVkZWYgb24K
LSAgICAgICAgIyBhIHBlci1zY29wZSBiYXNpcy4gV2UgdGh1cyBzdG9yZSBhbmQgY2FjaGUgdGhl
IGZpeHR1cmVkZWYgb24gdGhlCi0gICAgICAgICMgbm9kZSByZWxhdGVkIHRvIHRoZSBzY29wZS4K
LSAgICAgICAgc2NvcGUgPSBhcmcyc2NvcGVbYXJnbmFtZV0KLSAgICAgICAgbm9kZSA9IE5vbmUK
LSAgICAgICAgaWYgc2NvcGUgIT0gImZ1bmN0aW9uIjoKLSAgICAgICAgICAgIG5vZGUgPSBnZXRf
c2NvcGVfbm9kZShjb2xsZWN0b3IsIHNjb3BlKQotICAgICAgICAgICAgaWYgbm9kZSBpcyBOb25l
OgotICAgICAgICAgICAgICAgIGFzc2VydCBzY29wZSA9PSAiY2xhc3MiIGFuZCBpc2luc3RhbmNl
KGNvbGxlY3RvciwgX3B5dGVzdC5weXRob24uTW9kdWxlKQotICAgICAgICAgICAgICAgICMgdXNl
IG1vZHVsZS1sZXZlbCBjb2xsZWN0b3IgZm9yIGNsYXNzLXNjb3BlIChmb3Igbm93KQotICAgICAg
ICAgICAgICAgIG5vZGUgPSBjb2xsZWN0b3IKLSAgICAgICAgaWYgbm9kZSBhbmQgYXJnbmFtZSBp
biBub2RlLl9uYW1lMnBzZXVkb2ZpeHR1cmVkZWY6Ci0gICAgICAgICAgICBhcmcyZml4dHVyZWRl
ZnNbYXJnbmFtZV0gPSBbbm9kZS5fbmFtZTJwc2V1ZG9maXh0dXJlZGVmW2FyZ25hbWVdXQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgZml4dHVyZWRlZiA9IEZpeHR1cmVEZWYoZml4dHVyZW1h
bmFnZXIsICcnLCBhcmduYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0X2RpcmVjdF9wYXJhbV9maXh0dXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmcyc2NvcGVbYXJnbmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZWxpc3QsIEZhbHNlLCBGYWxzZSkKLSAgICAgICAgICAgIGFyZzJmaXh0
dXJlZGVmc1thcmduYW1lXSA9IFtmaXh0dXJlZGVmXQotICAgICAgICAgICAgaWYgbm9kZSBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgICAgICBub2RlLl9uYW1lMnBzZXVkb2ZpeHR1cmVkZWZbYXJn
bmFtZV0gPSBmaXh0dXJlZGVmCi0KLQotZGVmIGdldGZpeHR1cmVtYXJrZXIob2JqKToKLSAgICAi
IiIgcmV0dXJuIGZpeHR1cmVtYXJrZXIgb3IgTm9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0IG9yIHJh
aXNlZAotICAgIGV4Y2VwdGlvbnMuIiIiCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZ2V0YXR0
cihvYmosICJfcHl0ZXN0Zml4dHVyZWZ1bmN0aW9uIiwgTm9uZSkKLSAgICBleGNlcHQgVEVTVF9P
VVRDT01FOgotICAgICAgICAjIHNvbWUgb2JqZWN0cyByYWlzZSBlcnJvcnMgbGlrZSByZXF1ZXN0
IChmcm9tIGZsYXNrIGltcG9ydCByZXF1ZXN0KQotICAgICAgICAjIHdlIGRvbid0IGV4cGVjdCB0
aGVtIHRvIGJlIGZpeHR1cmUgZnVuY3Rpb25zCi0gICAgICAgIHJldHVybiBOb25lCi0KLQotZGVm
IGdldF9wYXJhbWV0cml6ZWRfZml4dHVyZV9rZXlzKGl0ZW0sIHNjb3BlbnVtKToKLSAgICAiIiIg
cmV0dXJuIGxpc3Qgb2Yga2V5cyBmb3IgYWxsIHBhcmFtZXRyaXplZCBhcmd1bWVudHMgd2hpY2gg
bWF0Y2gKLSAgICB0aGUgc3BlY2lmaWVkIHNjb3BlLiAiIiIKLSAgICBhc3NlcnQgc2NvcGVudW0g
PCBzY29wZW51bV9mdW5jdGlvbiAgIyBmdW5jdGlvbgotICAgIHRyeToKLSAgICAgICAgY3MgPSBp
dGVtLmNhbGxzcGVjCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBwYXNzCi0g
ICAgZWxzZToKLSAgICAgICAgIyBjcy5pbmRpY2VzLml0ZW1zKCkgaXMgcmFuZG9tIG9yZGVyIG9m
IGFyZ25hbWVzLiAgTmVlZCB0bwotICAgICAgICAjIHNvcnQgdGhpcyBzbyB0aGF0IGRpZmZlcmVu
dCBjYWxscyB0bwotICAgICAgICAjIGdldF9wYXJhbWV0cml6ZWRfZml4dHVyZV9rZXlzIHdpbGwg
YmUgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgZm9yIGFyZ25hbWUsIHBhcmFtX2luZGV4IGluIHNv
cnRlZChjcy5pbmRpY2VzLml0ZW1zKCkpOgotICAgICAgICAgICAgaWYgY3MuX2FyZzJzY29wZW51
bVthcmduYW1lXSAhPSBzY29wZW51bToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgaWYgc2NvcGVudW0gPT0gMDogICAgIyBzZXNzaW9uCi0gICAgICAgICAgICAgICAga2V5
ID0gKGFyZ25hbWUsIHBhcmFtX2luZGV4KQotICAgICAgICAgICAgZWxpZiBzY29wZW51bSA9PSAx
OiAgIyBtb2R1bGUKLSAgICAgICAgICAgICAgICBrZXkgPSAoYXJnbmFtZSwgcGFyYW1faW5kZXgs
IGl0ZW0uZnNwYXRoKQotICAgICAgICAgICAgZWxpZiBzY29wZW51bSA9PSAyOiAgIyBjbGFzcwot
ICAgICAgICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRleCwgaXRlbS5mc3BhdGgs
IGl0ZW0uY2xzKQotICAgICAgICAgICAgeWllbGQga2V5Ci0KLQotIyBhbGdvcml0aG0gZm9yIHNv
cnRpbmcgb24gYSBwZXItcGFyYW1ldHJpemVkIHJlc291cmNlIHNldHVwIGJhc2lzCi0jIGl0IGlz
IGNhbGxlZCBmb3Igc2NvcGVudW09PTAgKHNlc3Npb24pIGZpcnN0IGFuZCBwZXJmb3JtcyBzb3J0
aW5nCi0jIGRvd24gdG8gdGhlIGxvd2VyIHNjb3BlcyBzdWNoIGFzIHRvIG1pbmltaXplIG51bWJl
ciBvZiAiaGlnaCBzY29wZSIKLSMgc2V0dXBzIGFuZCB0ZWFyZG93bnMKLQotZGVmIHJlb3JkZXJf
aXRlbXMoaXRlbXMpOgotICAgIGFyZ2tleXNfY2FjaGUgPSB7fQotICAgIGZvciBzY29wZW51bSBp
biByYW5nZSgwLCBzY29wZW51bV9mdW5jdGlvbik6Ci0gICAgICAgIGFyZ2tleXNfY2FjaGVbc2Nv
cGVudW1dID0gZCA9IHt9Ci0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAg
a2V5cyA9IE9yZGVyZWREaWN0LmZyb21rZXlzKGdldF9wYXJhbWV0cml6ZWRfZml4dHVyZV9rZXlz
KGl0ZW0sIHNjb3BlbnVtKSkKLSAgICAgICAgICAgIGlmIGtleXM6Ci0gICAgICAgICAgICAgICAg
ZFtpdGVtXSA9IGtleXMKLSAgICByZXR1cm4gcmVvcmRlcl9pdGVtc19hdHNjb3BlKGl0ZW1zLCBz
ZXQoKSwgYXJna2V5c19jYWNoZSwgMCkKLQotCi1kZWYgcmVvcmRlcl9pdGVtc19hdHNjb3BlKGl0
ZW1zLCBpZ25vcmUsIGFyZ2tleXNfY2FjaGUsIHNjb3BlbnVtKToKLSAgICBpZiBzY29wZW51bSA+
PSBzY29wZW51bV9mdW5jdGlvbiBvciBsZW4oaXRlbXMpIDwgMzoKLSAgICAgICAgcmV0dXJuIGl0
ZW1zCi0gICAgaXRlbXNfZG9uZSA9IFtdCi0gICAgd2hpbGUgMToKLSAgICAgICAgaXRlbXNfYmVm
b3JlLCBpdGVtc19zYW1lLCBpdGVtc19vdGhlciwgbmV3aWdub3JlID0gXAotICAgICAgICAgICAg
c2xpY2VfaXRlbXMoaXRlbXMsIGlnbm9yZSwgYXJna2V5c19jYWNoZVtzY29wZW51bV0pCi0gICAg
ICAgIGl0ZW1zX2JlZm9yZSA9IHJlb3JkZXJfaXRlbXNfYXRzY29wZSgKLSAgICAgICAgICAgIGl0
ZW1zX2JlZm9yZSwgaWdub3JlLCBhcmdrZXlzX2NhY2hlLCBzY29wZW51bSArIDEpCi0gICAgICAg
IGlmIGl0ZW1zX3NhbWUgaXMgTm9uZToKLSAgICAgICAgICAgICMgbm90aGluZyB0byByZW9yZGVy
IGluIHRoaXMgc2NvcGUKLSAgICAgICAgICAgIGFzc2VydCBpdGVtc19vdGhlciBpcyBOb25lCi0g
ICAgICAgICAgICByZXR1cm4gaXRlbXNfZG9uZSArIGl0ZW1zX2JlZm9yZQotICAgICAgICBpdGVt
c19kb25lLmV4dGVuZChpdGVtc19iZWZvcmUpCi0gICAgICAgIGl0ZW1zID0gaXRlbXNfc2FtZSAr
IGl0ZW1zX290aGVyCi0gICAgICAgIGlnbm9yZSA9IG5ld2lnbm9yZQotCi0KLWRlZiBzbGljZV9p
dGVtcyhpdGVtcywgaWdub3JlLCBzY29wZWRfYXJna2V5c19jYWNoZSk6Ci0gICAgIyB3ZSBwaWNr
IHRoZSBmaXJzdCBpdGVtIHdoaWNoIHVzZXMgYSBmaXh0dXJlIGluc3RhbmNlIGluIHRoZQotICAg
ICMgcmVxdWVzdGVkIHNjb3BlIGFuZCB3aGljaCB3ZSBoYXZlbid0IHNlZW4geWV0LiAgV2Ugc2xp
Y2UgdGhlIGlucHV0Ci0gICAgIyBpdGVtcyBsaXN0IGludG8gYSBsaXN0IG9mIGl0ZW1zX25vbWF0
Y2gsIGl0ZW1zX3NhbWUgYW5kCi0gICAgIyBpdGVtc19vdGhlcgotICAgIGlmIHNjb3BlZF9hcmdr
ZXlzX2NhY2hlOiAgIyBkbyB3ZSBuZWVkIHRvIGRvIHdvcmsgYXQgYWxsPwotICAgICAgICBpdCA9
IGl0ZXIoaXRlbXMpCi0gICAgICAgICMgZmlyc3QgZmluZCBhIHNsaWNpbmcga2V5Ci0gICAgICAg
IGZvciBpLCBpdGVtIGluIGVudW1lcmF0ZShpdCk6Ci0gICAgICAgICAgICBhcmdrZXlzID0gc2Nv
cGVkX2FyZ2tleXNfY2FjaGUuZ2V0KGl0ZW0pCi0gICAgICAgICAgICBpZiBhcmdrZXlzIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgICAgIG5ld2FyZ2tleXMgPSBPcmRlcmVkRGljdC5mcm9ta2V5
cyhrIGZvciBrIGluIGFyZ2tleXMgaWYgayBub3QgaW4gaWdub3JlKQotICAgICAgICAgICAgICAg
IGlmIG5ld2FyZ2tleXM6ICAjIGZvdW5kIGEgc2xpY2luZyBrZXkKLSAgICAgICAgICAgICAgICAg
ICAgc2xpY2luZ19hcmdrZXksIF8gPSBuZXdhcmdrZXlzLnBvcGl0ZW0oKQotICAgICAgICAgICAg
ICAgICAgICBpdGVtc19iZWZvcmUgPSBpdGVtc1s6aV0KLSAgICAgICAgICAgICAgICAgICAgaXRl
bXNfc2FtZSA9IFtpdGVtXQotICAgICAgICAgICAgICAgICAgICBpdGVtc19vdGhlciA9IFtdCi0g
ICAgICAgICAgICAgICAgICAgICMgbm93IHNsaWNlIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpc3QK
LSAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhcmdrZXlzID0gc2NvcGVkX2FyZ2tleXNfY2FjaGUuZ2V0KGl0ZW0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiBhcmdrZXlzIGFuZCBzbGljaW5nX2FyZ2tleSBpbiBhcmdrZXlzIGFu
ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNpbmdfYXJna2V5IG5vdCBp
biBpZ25vcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNfc2FtZS5hcHBlbmQo
aXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXRlbXNfb3RoZXIuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgIG5l
d2lnbm9yZSA9IGlnbm9yZS5jb3B5KCkKLSAgICAgICAgICAgICAgICAgICAgbmV3aWdub3JlLmFk
ZChzbGljaW5nX2FyZ2tleSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChpdGVtc19iZWZv
cmUsIGl0ZW1zX3NhbWUsIGl0ZW1zX290aGVyLCBuZXdpZ25vcmUpCi0gICAgcmV0dXJuIGl0ZW1z
LCBOb25lLCBOb25lLCBOb25lCi0KLQotZGVmIGZpbGxmaXh0dXJlcyhmdW5jdGlvbik6Ci0gICAg
IiIiIGZpbGwgbWlzc2luZyBmdW5jYXJncyBmb3IgYSB0ZXN0IGZ1bmN0aW9uLiAiIiIKLSAgICB0
cnk6Ci0gICAgICAgIHJlcXVlc3QgPSBmdW5jdGlvbi5fcmVxdWVzdAotICAgIGV4Y2VwdCBBdHRy
aWJ1dGVFcnJvcjoKLSAgICAgICAgIyBYWFggdGhpcyBzcGVjaWFsIGNvZGUgcGF0aCBpcyBvbmx5
IGV4cGVjdGVkIHRvIGV4ZWN1dGUKLSAgICAgICAgIyB3aXRoIHRoZSBvZWpza2l0IHBsdWdpbi4g
IEl0IHVzZXMgY2xhc3NlcyB3aXRoIGZ1bmNhcmdzCi0gICAgICAgICMgYW5kIHdlIHRodXMgaGF2
ZSB0byB3b3JrIGEgYml0IHRvIGFsbG93IHRoaXMuCi0gICAgICAgIGZtID0gZnVuY3Rpb24uc2Vz
c2lvbi5fZml4dHVyZW1hbmFnZXIKLSAgICAgICAgZmkgPSBmbS5nZXRmaXh0dXJlaW5mbyhmdW5j
dGlvbi5wYXJlbnQsIGZ1bmN0aW9uLm9iaiwgTm9uZSkKLSAgICAgICAgZnVuY3Rpb24uX2ZpeHR1
cmVpbmZvID0gZmkKLSAgICAgICAgcmVxdWVzdCA9IGZ1bmN0aW9uLl9yZXF1ZXN0ID0gRml4dHVy
ZVJlcXVlc3QoZnVuY3Rpb24pCi0gICAgICAgIHJlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCi0gICAg
ICAgICMgcHJ1bmUgb3V0IGZ1bmNhcmdzIGZvciBqc3Rlc3RzCi0gICAgICAgIG5ld2Z1bmNhcmdz
ID0ge30KLSAgICAgICAgZm9yIG5hbWUgaW4gZmkuYXJnbmFtZXM6Ci0gICAgICAgICAgICBuZXdm
dW5jYXJnc1tuYW1lXSA9IGZ1bmN0aW9uLmZ1bmNhcmdzW25hbWVdCi0gICAgICAgIGZ1bmN0aW9u
LmZ1bmNhcmdzID0gbmV3ZnVuY2FyZ3MKLSAgICBlbHNlOgotICAgICAgICByZXF1ZXN0Ll9maWxs
Zml4dHVyZXMoKQotCi0KLWRlZiBnZXRfZGlyZWN0X3BhcmFtX2ZpeHR1cmVfZnVuYyhyZXF1ZXN0
KToKLSAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQotCi0KLWNsYXNzIEZ1bmNGaXh0dXJlSW5mbzoK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnbmFtZXMsIG5hbWVzX2Nsb3N1cmUsIG5hbWUyZml4
dHVyZWRlZnMpOgotICAgICAgICBzZWxmLmFyZ25hbWVzID0gYXJnbmFtZXMKLSAgICAgICAgc2Vs
Zi5uYW1lc19jbG9zdXJlID0gbmFtZXNfY2xvc3VyZQotICAgICAgICBzZWxmLm5hbWUyZml4dHVy
ZWRlZnMgPSBuYW1lMmZpeHR1cmVkZWZzCi0KLQotY2xhc3MgRml4dHVyZVJlcXVlc3QoRnVuY2Fy
Z25hbWVzQ29tcGF0QXR0cik6Ci0gICAgIiIiIEEgcmVxdWVzdCBmb3IgYSBmaXh0dXJlIGZyb20g
YSB0ZXN0IG9yIGZpeHR1cmUgZnVuY3Rpb24uCi0KLSAgICBBIHJlcXVlc3Qgb2JqZWN0IGdpdmVz
IGFjY2VzcyB0byB0aGUgcmVxdWVzdGluZyB0ZXN0IGNvbnRleHQKLSAgICBhbmQgaGFzIGFuIG9w
dGlvbmFsIGBgcGFyYW1gYCBhdHRyaWJ1dGUgaW4gY2FzZQotICAgIHRoZSBmaXh0dXJlIGlzIHBh
cmFtZXRyaXplZCBpbmRpcmVjdGx5LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHB5ZnVuY2l0ZW0pOgotICAgICAgICBzZWxmLl9weWZ1bmNpdGVtID0gcHlmdW5jaXRlbQotICAg
ICAgICAjOiBmaXh0dXJlIGZvciB3aGljaCB0aGlzIHJlcXVlc3QgaXMgYmVpbmcgcGVyZm9ybWVk
Ci0gICAgICAgIHNlbGYuZml4dHVyZW5hbWUgPSBOb25lCi0gICAgICAgICM6IFNjb3BlIHN0cmlu
Zywgb25lIG9mICJmdW5jdGlvbiIsICJjbGFzcyIsICJtb2R1bGUiLCAic2Vzc2lvbiIKLSAgICAg
ICAgc2VsZi5zY29wZSA9ICJmdW5jdGlvbiIKLSAgICAgICAgc2VsZi5fZml4dHVyZV92YWx1ZXMg
PSB7fSAgIyBhcmduYW1lIC0+IGZpeHR1cmUgdmFsdWUKLSAgICAgICAgc2VsZi5fZml4dHVyZV9k
ZWZzID0ge30gICMgYXJnbmFtZSAtPiBGaXh0dXJlRGVmCi0gICAgICAgIGZpeHR1cmVpbmZvID0g
cHlmdW5jaXRlbS5fZml4dHVyZWluZm8KLSAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0g
Zml4dHVyZWluZm8ubmFtZTJmaXh0dXJlZGVmcy5jb3B5KCkKLSAgICAgICAgc2VsZi5fYXJnMmlu
ZGV4ID0ge30KLSAgICAgICAgc2VsZi5fZml4dHVyZW1hbmFnZXIgPSBweWZ1bmNpdGVtLnNlc3Np
b24uX2ZpeHR1cmVtYW5hZ2VyCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZml4dHVyZW5hbWVz
KHNlbGYpOgotICAgICAgICAjIGJhY2t3YXJkIGluY29tcGF0aWJsZSBub3RlOiBub3cgYSByZWFk
b25seSBwcm9wZXJ0eQotICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9weWZ1bmNpdGVtLl9maXh0
dXJlaW5mby5uYW1lc19jbG9zdXJlKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5vZGUoc2Vs
Zik6Ci0gICAgICAgICIiIiB1bmRlcmx5aW5nIGNvbGxlY3Rpb24gbm9kZSAoZGVwZW5kcyBvbiBj
dXJyZW50IHJlcXVlc3Qgc2NvcGUpIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9nZXRzY29wZWl0
ZW0oc2VsZi5zY29wZSkKLQotICAgIGRlZiBfZ2V0bmV4dGZpeHR1cmVkZWYoc2VsZiwgYXJnbmFt
ZSk6Ci0gICAgICAgIGZpeHR1cmVkZWZzID0gc2VsZi5fYXJnMmZpeHR1cmVkZWZzLmdldChhcmdu
YW1lLCBOb25lKQotICAgICAgICBpZiBmaXh0dXJlZGVmcyBpcyBOb25lOgotICAgICAgICAgICAg
IyB3ZSBhcnJpdmUgaGVyZSBiZWNhdXNlIG9mIGEgIGEgZHluYW1pYyBjYWxsIHRvCi0gICAgICAg
ICAgICAjIGdldGZpeHR1cmV2YWx1ZShhcmduYW1lKSB1c2FnZSB3aGljaCB3YXMgbmF0dXJhbGx5
Ci0gICAgICAgICAgICAjIG5vdCBrbm93biBhdCBwYXJzaW5nL2NvbGxlY3Rpb24gdGltZQotICAg
ICAgICAgICAgcGFyZW50aWQgPSBzZWxmLl9weWZ1bmNpdGVtLnBhcmVudC5ub2RlaWQKLSAgICAg
ICAgICAgIGZpeHR1cmVkZWZzID0gc2VsZi5fZml4dHVyZW1hbmFnZXIuZ2V0Zml4dHVyZWRlZnMo
YXJnbmFtZSwgcGFyZW50aWQpCi0gICAgICAgICAgICBzZWxmLl9hcmcyZml4dHVyZWRlZnNbYXJn
bmFtZV0gPSBmaXh0dXJlZGVmcwotICAgICAgICAjIGZpeHR1cmVkZWZzIGxpc3QgaXMgaW1tdXRh
YmxlIHNvIHdlIG1haW50YWluIGEgZGVjcmVhc2luZyBpbmRleAotICAgICAgICBpbmRleCA9IHNl
bGYuX2FyZzJpbmRleC5nZXQoYXJnbmFtZSwgMCkgLSAxCi0gICAgICAgIGlmIGZpeHR1cmVkZWZz
IGlzIE5vbmUgb3IgKC1pbmRleCA+IGxlbihmaXh0dXJlZGVmcykpOgotICAgICAgICAgICAgcmFp
c2UgRml4dHVyZUxvb2t1cEVycm9yKGFyZ25hbWUsIHNlbGYpCi0gICAgICAgIHNlbGYuX2FyZzJp
bmRleFthcmduYW1lXSA9IGluZGV4Ci0gICAgICAgIHJldHVybiBmaXh0dXJlZGVmc1tpbmRleF0K
LQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjb25maWcoc2VsZik6Ci0gICAgICAgICIiIiB0aGUg
cHl0ZXN0IGNvbmZpZyBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdC4gIiIiCi0g
ICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVtLmNvbmZpZwotCi0gICAgQHNjb3BlcHJvcGVy
dHkoKQotICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSAgICAgICAgIiIiIHRlc3QgZnVuY3Rpb24g
b2JqZWN0IGlmIHRoZSByZXF1ZXN0IGhhcyBhIHBlci1mdW5jdGlvbiBzY29wZS4gIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVtLm9iagotCi0gICAgQHNjb3BlcHJvcGVydHkoImNs
YXNzIikKLSAgICBkZWYgY2xzKHNlbGYpOgotICAgICAgICAiIiIgY2xhc3MgKGNhbiBiZSBOb25l
KSB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiB3YXMgY29sbGVjdGVkLiAiIiIKLSAgICAgICAgY2xz
Y29sID0gc2VsZi5fcHlmdW5jaXRlbS5nZXRwYXJlbnQoX3B5dGVzdC5weXRob24uQ2xhc3MpCi0g
ICAgICAgIGlmIGNsc2NvbDoKLSAgICAgICAgICAgIHJldHVybiBjbHNjb2wub2JqCi0KLSAgICBA
cHJvcGVydHkKLSAgICBkZWYgaW5zdGFuY2Uoc2VsZik6Ci0gICAgICAgICIiIiBpbnN0YW5jZSAo
Y2FuIGJlIE5vbmUpIG9uIHdoaWNoIHRlc3QgZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4gIiIiCi0g
ICAgICAgICMgdW5pdHRlc3Qgc3VwcG9ydCBoYWNrLCBzZWUgX3B5dGVzdC51bml0dGVzdC5UZXN0
Q2FzZUZ1bmN0aW9uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9weWZ1
bmNpdGVtLl90ZXN0Y2FzZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAg
ICAgICBmdW5jdGlvbiA9IGdldGF0dHIoc2VsZiwgImZ1bmN0aW9uIiwgTm9uZSkKLSAgICAgICAg
ICAgIGlmIGZ1bmN0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBweS5i
dWlsdGluLl9nZXRpbXNlbGYoZnVuY3Rpb24pCi0KLSAgICBAc2NvcGVwcm9wZXJ0eSgpCi0gICAg
ZGVmIG1vZHVsZShzZWxmKToKLSAgICAgICAgIiIiIHB5dGhvbiBtb2R1bGUgb2JqZWN0IHdoZXJl
IHRoZSB0ZXN0IGZ1bmN0aW9uIHdhcyBjb2xsZWN0ZWQuICIiIgotICAgICAgICByZXR1cm4gc2Vs
Zi5fcHlmdW5jaXRlbS5nZXRwYXJlbnQoX3B5dGVzdC5weXRob24uTW9kdWxlKS5vYmoKLQotICAg
IEBzY29wZXByb3BlcnR5KCkKLSAgICBkZWYgZnNwYXRoKHNlbGYpOgotICAgICAgICAiIiIgdGhl
IGZpbGUgc3lzdGVtIHBhdGggb2YgdGhlIHRlc3QgbW9kdWxlIHdoaWNoIGNvbGxlY3RlZCB0aGlz
IHRlc3QuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5mc3BhdGgKLQotICAg
IEBwcm9wZXJ0eQotICAgIGRlZiBrZXl3b3JkcyhzZWxmKToKLSAgICAgICAgIiIiIGtleXdvcmRz
L21hcmtlcnMgZGljdGlvbmFyeSBmb3IgdGhlIHVuZGVybHlpbmcgbm9kZS4gIiIiCi0gICAgICAg
IHJldHVybiBzZWxmLm5vZGUua2V5d29yZHMKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBzZXNz
aW9uKHNlbGYpOgotICAgICAgICAiIiIgcHl0ZXN0IHNlc3Npb24gb2JqZWN0LiAiIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uc2Vzc2lvbgotCi0gICAgZGVmIGFkZGZpbmFsaXpl
cihzZWxmLCBmaW5hbGl6ZXIpOgotICAgICAgICAiIiIgYWRkIGZpbmFsaXplci90ZWFyZG93biBm
dW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlCi0gICAgICAgIGxhc3QgdGVzdCB3aXRoaW4g
dGhlIHJlcXVlc3RpbmcgdGVzdCBjb250ZXh0IGZpbmlzaGVkCi0gICAgICAgIGV4ZWN1dGlvbi4g
IiIiCi0gICAgICAgICMgWFhYIHVzdWFsbHkgdGhpcyBtZXRob2QgaXMgc2hhZG93ZWQgYnkgZml4
dHVyZWRlZiBzcGVjaWZpYyBvbmVzCi0gICAgICAgIHNlbGYuX2FkZGZpbmFsaXplcihmaW5hbGl6
ZXIsIHNjb3BlPXNlbGYuc2NvcGUpCi0KLSAgICBkZWYgX2FkZGZpbmFsaXplcihzZWxmLCBmaW5h
bGl6ZXIsIHNjb3BlKToKLSAgICAgICAgY29saXRlbSA9IHNlbGYuX2dldHNjb3BlaXRlbShzY29w
ZSkKLSAgICAgICAgc2VsZi5fcHlmdW5jaXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlLmFkZGZpbmFs
aXplcigKLSAgICAgICAgICAgIGZpbmFsaXplcj1maW5hbGl6ZXIsIGNvbGl0ZW09Y29saXRlbSkK
LQotICAgIGRlZiBhcHBseW1hcmtlcihzZWxmLCBtYXJrZXIpOgotICAgICAgICAiIiIgQXBwbHkg
YSBtYXJrZXIgdG8gYSBzaW5nbGUgdGVzdCBmdW5jdGlvbiBpbnZvY2F0aW9uLgotICAgICAgICBU
aGlzIG1ldGhvZCBpcyB1c2VmdWwgaWYgeW91IGRvbid0IHdhbnQgdG8gaGF2ZSBhIGtleXdvcmQv
bWFya2VyCi0gICAgICAgIG9uIGFsbCBmdW5jdGlvbiBpbnZvY2F0aW9ucy4KLQotICAgICAgICA6
YXJnIG1hcmtlcjogYSA6cHk6Y2xhc3M6YF9weXRlc3QubWFyay5NYXJrRGVjb3JhdG9yYCBvYmpl
Y3QKLSAgICAgICAgICAgIGNyZWF0ZWQgYnkgYSBjYWxsIHRvIGBgcHl0ZXN0Lm1hcmsuTkFNRSgu
Li4pYGAuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLm5vZGUu
a2V5d29yZHNbbWFya2VyLm1hcmtuYW1lXSA9IG1hcmtlcgotICAgICAgICBleGNlcHQgQXR0cmli
dXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1hcmtlcikKLQotICAgIGRl
ZiByYWlzZWVycm9yKHNlbGYsIG1zZyk6Ci0gICAgICAgICIiIiByYWlzZSBhIEZpeHR1cmVMb29r
dXBFcnJvciB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLiAiIiIKLSAgICAgICAgcmFpc2Ugc2VsZi5f
Zml4dHVyZW1hbmFnZXIuRml4dHVyZUxvb2t1cEVycm9yKE5vbmUsIHNlbGYsIG1zZykKLQotICAg
IGRlZiBfZmlsbGZpeHR1cmVzKHNlbGYpOgotICAgICAgICBpdGVtID0gc2VsZi5fcHlmdW5jaXRl
bQotICAgICAgICBmaXh0dXJlbmFtZXMgPSBnZXRhdHRyKGl0ZW0sICJmaXh0dXJlbmFtZXMiLCBz
ZWxmLmZpeHR1cmVuYW1lcykKLSAgICAgICAgZm9yIGFyZ25hbWUgaW4gZml4dHVyZW5hbWVzOgot
ICAgICAgICAgICAgaWYgYXJnbmFtZSBub3QgaW4gaXRlbS5mdW5jYXJnczoKLSAgICAgICAgICAg
ICAgICBpdGVtLmZ1bmNhcmdzW2FyZ25hbWVdID0gc2VsZi5nZXRmaXh0dXJldmFsdWUoYXJnbmFt
ZSkKLQotICAgIGRlZiBjYWNoZWRfc2V0dXAoc2VsZiwgc2V0dXAsIHRlYXJkb3duPU5vbmUsIHNj
b3BlPSJtb2R1bGUiLCBleHRyYWtleT1Ob25lKToKLSAgICAgICAgIiIiIChkZXByZWNhdGVkKSBS
ZXR1cm4gYSB0ZXN0aW5nIHJlc291cmNlIG1hbmFnZWQgYnkgYGBzZXR1cGBgICYKLSAgICAgICAg
YGB0ZWFyZG93bmBgIGNhbGxzLiAgYGBzY29wZWBgIGFuZCBgYGV4dHJha2V5YGAgZGV0ZXJtaW5l
IHdoZW4gdGhlCi0gICAgICAgIGBgdGVhcmRvd25gYCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBz
byB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgdG8KLSAgICAgICAgYGBzZXR1cGBgIHdvdWxkIHJlY3Jl
YXRlIHRoZSByZXNvdXJjZS4gIFdpdGggcHl0ZXN0LTIuMyB5b3Ugb2Z0ZW4KLSAgICAgICAgZG8g
bm90IG5lZWQgYGBjYWNoZWRfc2V0dXAoKWBgIGFzIHlvdSBjYW4gZGlyZWN0bHkgZGVjbGFyZSBh
IHNjb3BlCi0gICAgICAgIG9uIGEgZml4dHVyZSBmdW5jdGlvbiBhbmQgcmVnaXN0ZXIgYSBmaW5h
bGl6ZXIgdGhyb3VnaAotICAgICAgICBgYHJlcXVlc3QuYWRkZmluYWxpemVyKClgYC4KLQotICAg
ICAgICA6YXJnIHRlYXJkb3duOiBmdW5jdGlvbiByZWNlaXZpbmcgYSBwcmV2aW91c2x5IHNldHVw
IHJlc291cmNlLgotICAgICAgICA6YXJnIHNldHVwOiBhIG5vLWFyZ3VtZW50IGZ1bmN0aW9uIGNy
ZWF0aW5nIGEgcmVzb3VyY2UuCi0gICAgICAgIDphcmcgc2NvcGU6IGEgc3RyaW5nIHZhbHVlIG91
dCBvZiBgYGZ1bmN0aW9uYGAsIGBgY2xhc3NgYCwgYGBtb2R1bGVgYAotICAgICAgICAgICAgb3Ig
YGBzZXNzaW9uYGAgaW5kaWNhdGluZyB0aGUgY2FjaGluZyBsaWZlY3ljbGUgb2YgdGhlIHJlc291
cmNlLgotICAgICAgICA6YXJnIGV4dHJha2V5OiBhZGRlZCB0byBpbnRlcm5hbCBjYWNoaW5nIGtl
eSBvZiAoZnVuY2FyZ25hbWUsIHNjb3BlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBo
YXNhdHRyKHNlbGYuY29uZmlnLCAnX3NldHVwY2FjaGUnKToKLSAgICAgICAgICAgIHNlbGYuY29u
ZmlnLl9zZXR1cGNhY2hlID0ge30gICMgWFhYIHdlYWtyZWY/Ci0gICAgICAgIGNhY2hla2V5ID0g
KHNlbGYuZml4dHVyZW5hbWUsIHNlbGYuX2dldHNjb3BlaXRlbShzY29wZSksIGV4dHJha2V5KQot
ICAgICAgICBjYWNoZSA9IHNlbGYuY29uZmlnLl9zZXR1cGNhY2hlCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHZhbCA9IGNhY2hlW2NhY2hla2V5XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6
Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19zY29wZShzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLnNj
b3BlLCBzY29wZSkKLSAgICAgICAgICAgIHZhbCA9IHNldHVwKCkKLSAgICAgICAgICAgIGNhY2hl
W2NhY2hla2V5XSA9IHZhbAotICAgICAgICAgICAgaWYgdGVhcmRvd24gaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICAgICAgZGVmIGZpbmFsaXplcigpOgotICAgICAgICAgICAgICAgICAgICBkZWwg
Y2FjaGVbY2FjaGVrZXldCi0gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duKHZhbCkKLSAgICAg
ICAgICAgICAgICBzZWxmLl9hZGRmaW5hbGl6ZXIoZmluYWxpemVyLCBzY29wZT1zY29wZSkKLSAg
ICAgICAgcmV0dXJuIHZhbAotCi0gICAgZGVmIGdldGZpeHR1cmV2YWx1ZShzZWxmLCBhcmduYW1l
KToKLSAgICAgICAgIiIiIER5bmFtaWNhbGx5IHJ1biBhIG5hbWVkIGZpeHR1cmUgZnVuY3Rpb24u
Ci0KLSAgICAgICAgRGVjbGFyaW5nIGZpeHR1cmVzIHZpYSBmdW5jdGlvbiBhcmd1bWVudCBpcyBy
ZWNvbW1lbmRlZCB3aGVyZSBwb3NzaWJsZS4KLSAgICAgICAgQnV0IGlmIHlvdSBjYW4gb25seSBk
ZWNpZGUgd2hldGhlciB0byB1c2UgYW5vdGhlciBmaXh0dXJlIGF0IHRlc3QKLSAgICAgICAgc2V0
dXAgdGltZSwgeW91IG1heSB1c2UgdGhpcyBmdW5jdGlvbiB0byByZXRyaWV2ZSBpdCBpbnNpZGUg
YSBmaXh0dXJlCi0gICAgICAgIG9yIHRlc3QgZnVuY3Rpb24gYm9keS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHJldHVybiBzZWxmLl9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkuY2FjaGVk
X3Jlc3VsdFswXQotCi0gICAgZGVmIGdldGZ1bmNhcmd2YWx1ZShzZWxmLCBhcmduYW1lKToKLSAg
ICAgICAgIiIiIERlcHJlY2F0ZWQsIHVzZSBnZXRmaXh0dXJldmFsdWUuICIiIgotICAgICAgICBm
cm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKLSAgICAgICAgd2FybmluZ3Mud2FybigKLSAg
ICAgICAgICAgIGRlcHJlY2F0ZWQuR0VURlVOQ0FSR1ZBTFVFLAotICAgICAgICAgICAgRGVwcmVj
YXRpb25XYXJuaW5nLAotICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQotICAgICAgICByZXR1cm4g
c2VsZi5nZXRmaXh0dXJldmFsdWUoYXJnbmFtZSkKLQotICAgIGRlZiBfZ2V0X2FjdGl2ZV9maXh0
dXJlZGVmKHNlbGYsIGFyZ25hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
c2VsZi5fZml4dHVyZV9kZWZzW2FyZ25hbWVdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmaXh0dXJlZGVmID0gc2VsZi5fZ2V0bmV4
dGZpeHR1cmVkZWYoYXJnbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBGaXh0dXJlTG9va3VwRXJy
b3I6Ci0gICAgICAgICAgICAgICAgaWYgYXJnbmFtZSA9PSAicmVxdWVzdCI6Ci0gICAgICAgICAg
ICAgICAgICAgIGNsYXNzIFBzZXVkb0ZpeHR1cmVEZWY6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjYWNoZWRfcmVzdWx0ID0gKHNlbGYsIFswXSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNjb3BlID0gImZ1bmN0aW9uIgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHNldWRv
Rml4dHVyZURlZgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICMgcmVtb3ZlIGluZGVu
dCB0byBwcmV2ZW50IHRoZSBweXRob24zIGV4Y2VwdGlvbgotICAgICAgICAjIGZyb20gbGVha2lu
ZyBpbnRvIHRoZSBjYWxsCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldGZpeHR1cmV2YWx1ZShm
aXh0dXJlZGVmKQotICAgICAgICBzZWxmLl9maXh0dXJlX3ZhbHVlc1thcmduYW1lXSA9IHJlc3Vs
dAotICAgICAgICBzZWxmLl9maXh0dXJlX2RlZnNbYXJnbmFtZV0gPSBmaXh0dXJlZGVmCi0gICAg
ICAgIHJldHVybiBmaXh0dXJlZGVmCi0KLSAgICBkZWYgX2dldF9maXh0dXJlc3RhY2soc2VsZik6
Ci0gICAgICAgIGN1cnJlbnQgPSBzZWxmCi0gICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIHdo
aWxlIDE6Ci0gICAgICAgICAgICBmaXh0dXJlZGVmID0gZ2V0YXR0cihjdXJyZW50LCAiX2ZpeHR1
cmVkZWYiLCBOb25lKQotICAgICAgICAgICAgaWYgZml4dHVyZWRlZiBpcyBOb25lOgotICAgICAg
ICAgICAgICAgIHZhbHVlcy5yZXZlcnNlKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVz
Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZpeHR1cmVkZWYpCi0gICAgICAgICAgICBjdXJy
ZW50ID0gY3VycmVudC5fcGFyZW50X3JlcXVlc3QKLQotICAgIGRlZiBfZ2V0Zml4dHVyZXZhbHVl
KHNlbGYsIGZpeHR1cmVkZWYpOgotICAgICAgICAjIHByZXBhcmUgYSBzdWJyZXF1ZXN0IG9iamVj
dCBiZWZvcmUgY2FsbGluZyBmaXh0dXJlIGZ1bmN0aW9uCi0gICAgICAgICMgKGxhdHRlciBtYW5h
Z2VkIGJ5IGZpeHR1cmVkZWYpCi0gICAgICAgIGFyZ25hbWUgPSBmaXh0dXJlZGVmLmFyZ25hbWUK
LSAgICAgICAgZnVuY2l0ZW0gPSBzZWxmLl9weWZ1bmNpdGVtCi0gICAgICAgIHNjb3BlID0gZml4
dHVyZWRlZi5zY29wZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXJhbSA9IGZ1bmNpdGVt
LmNhbGxzcGVjLmdldHBhcmFtKGFyZ25hbWUpCi0gICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJy
b3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgcGFyYW0gPSBOT1RTRVQKLSAgICAgICAgICAg
IHBhcmFtX2luZGV4ID0gMAotICAgICAgICAgICAgaWYgZml4dHVyZWRlZi5wYXJhbXMgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgZnJhbWUgPSBpbnNwZWN0LnN0YWNrKClbM10KLSAgICAg
ICAgICAgICAgICBmcmFtZWluZm8gPSBpbnNwZWN0LmdldGZyYW1laW5mbyhmcmFtZVswXSkKLSAg
ICAgICAgICAgICAgICBzb3VyY2VfcGF0aCA9IGZyYW1laW5mby5maWxlbmFtZQotICAgICAgICAg
ICAgICAgIHNvdXJjZV9saW5lbm8gPSBmcmFtZWluZm8ubGluZW5vCi0gICAgICAgICAgICAgICAg
c291cmNlX3BhdGggPSBweS5wYXRoLmxvY2FsKHNvdXJjZV9wYXRoKQotICAgICAgICAgICAgICAg
IGlmIHNvdXJjZV9wYXRoLnJlbHRvKGZ1bmNpdGVtLmNvbmZpZy5yb290ZGlyKToKLSAgICAgICAg
ICAgICAgICAgICAgc291cmNlX3BhdGggPSBzb3VyY2VfcGF0aC5yZWx0byhmdW5jaXRlbS5jb25m
aWcucm9vdGRpcikKLSAgICAgICAgICAgICAgICBtc2cgPSAoCi0gICAgICAgICAgICAgICAgICAg
ICJUaGUgcmVxdWVzdGVkIGZpeHR1cmUgaGFzIG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0aGUg
IgotICAgICAgICAgICAgICAgICAgICAiY3VycmVudCB0ZXN0LlxuXG5SZXF1ZXN0ZWQgZml4dHVy
ZSAnezB9JyBkZWZpbmVkIGluOlxuezF9IgotICAgICAgICAgICAgICAgICAgICAiXG5cblJlcXVl
c3RlZCBoZXJlOlxuezJ9OnszfSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgZml4
dHVyZWRlZi5hcmduYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0bG9jYXRpb24oZml4
dHVyZWRlZi5mdW5jLCBmdW5jaXRlbS5jb25maWcucm9vdGRpciksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9saW5l
bm8sCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICAgICAgZmFpbChtc2cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGluZGljZXMgbWln
aHQgbm90IGJlIHNldCBpZiBvbGQtc3R5bGUgbWV0YWZ1bmMuYWRkY2FsbCgpIHdhcyB1c2VkCi0g
ICAgICAgICAgICBwYXJhbV9pbmRleCA9IGZ1bmNpdGVtLmNhbGxzcGVjLmluZGljZXMuZ2V0KGFy
Z25hbWUsIDApCi0gICAgICAgICAgICAjIGlmIGEgcGFyYW1ldHJpemUgaW52b2NhdGlvbiBzZXQg
YSBzY29wZSBpdCB3aWxsIG92ZXJyaWRlCi0gICAgICAgICAgICAjIHRoZSBzdGF0aWMgc2NvcGUg
ZGVmaW5lZCB3aXRoIHRoZSBmaXh0dXJlIGZ1bmN0aW9uCi0gICAgICAgICAgICBwYXJhbXNjb3Bl
bnVtID0gZnVuY2l0ZW0uY2FsbHNwZWMuX2FyZzJzY29wZW51bS5nZXQoYXJnbmFtZSkKLSAgICAg
ICAgICAgIGlmIHBhcmFtc2NvcGVudW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2Nv
cGUgPSBzY29wZXNbcGFyYW1zY29wZW51bV0KLQotICAgICAgICBzdWJyZXF1ZXN0ID0gU3ViUmVx
dWVzdChzZWxmLCBzY29wZSwgcGFyYW0sIHBhcmFtX2luZGV4LCBmaXh0dXJlZGVmKQotCi0gICAg
ICAgICMgY2hlY2sgaWYgYSBoaWdoZXItbGV2ZWwgc2NvcGVkIGZpeHR1cmUgYWNjZXNzZXMgYSBs
b3dlciBsZXZlbCBvbmUKLSAgICAgICAgc3VicmVxdWVzdC5fY2hlY2tfc2NvcGUoYXJnbmFtZSwg
c2VsZi5zY29wZSwgc2NvcGUpCi0KLSAgICAgICAgIyBjbGVhciBzeXMuZXhjX2luZm8gYmVmb3Jl
IGludm9raW5nIHRoZSBmaXh0dXJlIChweXRob24gYnVnPykKLSAgICAgICAgIyBpZiBpdHMgbm90
IGV4cGxpY2l0bHkgY2xlYXJlZCBpdCB3aWxsIGxlYWsgaW50byB0aGUgY2FsbAotICAgICAgICBl
eGNfY2xlYXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGNhbGwgdGhlIGZpeHR1cmUg
ZnVuY3Rpb24KLSAgICAgICAgICAgIHZhbCA9IGZpeHR1cmVkZWYuZXhlY3V0ZShyZXF1ZXN0PXN1
YnJlcXVlc3QpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAjIGlmIGZpeHR1cmUgZnVu
Y3Rpb24gZmFpbGVkIGl0IG1pZ2h0IGhhdmUgcmVnaXN0ZXJlZCBmaW5hbGl6ZXJzCi0gICAgICAg
ICAgICBzZWxmLnNlc3Npb24uX3NldHVwc3RhdGUuYWRkZmluYWxpemVyKGZ1bmN0b29scy5wYXJ0
aWFsKGZpeHR1cmVkZWYuZmluaXNoLCByZXF1ZXN0PXN1YnJlcXVlc3QpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJyZXF1ZXN0Lm5vZGUpCi0g
ICAgICAgIHJldHVybiB2YWwKLQotICAgIGRlZiBfY2hlY2tfc2NvcGUoc2VsZiwgYXJnbmFtZSwg
aW52b2tpbmdfc2NvcGUsIHJlcXVlc3RlZF9zY29wZSk6Ci0gICAgICAgIGlmIGFyZ25hbWUgPT0g
InJlcXVlc3QiOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNjb3BlbWlzbWF0Y2go
aW52b2tpbmdfc2NvcGUsIHJlcXVlc3RlZF9zY29wZSk6Ci0gICAgICAgICAgICAjIHRyeSB0byBy
ZXBvcnQgc29tZXRoaW5nIGhlbHBmdWwKLSAgICAgICAgICAgIGxpbmVzID0gc2VsZi5fZmFjdG9y
eXRyYWNlYmFjaygpCi0gICAgICAgICAgICBmYWlsKCJTY29wZU1pc21hdGNoOiBZb3UgdHJpZWQg
dG8gYWNjZXNzIHRoZSAlciBzY29wZWQgIgotICAgICAgICAgICAgICAgICAiZml4dHVyZSAlciB3
aXRoIGEgJXIgc2NvcGVkIHJlcXVlc3Qgb2JqZWN0LCAiCi0gICAgICAgICAgICAgICAgICJpbnZv
bHZlZCBmYWN0b3JpZXNcbiVzIiAlICgKLSAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0ZWRf
c2NvcGUsIGFyZ25hbWUsIGludm9raW5nX3Njb3BlLCAiXG4iLmpvaW4obGluZXMpKSksCi0gICAg
ICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UpCi0KLSAgICBkZWYgX2ZhY3Rvcnl0cmFjZWJhY2so
c2VsZik6Ci0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgZm9yIGZpeHR1cmVkZWYgaW4gc2Vs
Zi5fZ2V0X2ZpeHR1cmVzdGFjaygpOgotICAgICAgICAgICAgZmFjdG9yeSA9IGZpeHR1cmVkZWYu
ZnVuYwotICAgICAgICAgICAgZnMsIGxpbmVubyA9IGdldGZzbGluZW5vKGZhY3RvcnkpCi0gICAg
ICAgICAgICBwID0gc2VsZi5fcHlmdW5jaXRlbS5zZXNzaW9uLmZzcGF0aC5iZXN0cmVscGF0aChm
cykKLSAgICAgICAgICAgIGFyZ3MgPSBfZm9ybWF0X2FyZ3MoZmFjdG9yeSkKLSAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgiJXM6JWQ6ICBkZWYgJXMlcyIgJSAoCi0gICAgICAgICAgICAgICAgcCwg
bGluZW5vLCBmYWN0b3J5Ll9fbmFtZV9fLCBhcmdzKSkKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0K
LSAgICBkZWYgX2dldHNjb3BlaXRlbShzZWxmLCBzY29wZSk6Ci0gICAgICAgIGlmIHNjb3BlID09
ICJmdW5jdGlvbiI6Ci0gICAgICAgICAgICAjIHRoaXMgbWlnaHQgYWxzbyBiZSBhIG5vbi1mdW5j
dGlvbiBJdGVtIGRlc3BpdGUgaXRzIGF0dHJpYnV0ZSBuYW1lCi0gICAgICAgICAgICByZXR1cm4g
c2VsZi5fcHlmdW5jaXRlbQotICAgICAgICBub2RlID0gZ2V0X3Njb3BlX25vZGUoc2VsZi5fcHlm
dW5jaXRlbSwgc2NvcGUpCi0gICAgICAgIGlmIG5vZGUgaXMgTm9uZSBhbmQgc2NvcGUgPT0gImNs
YXNzIjoKLSAgICAgICAgICAgICMgZmFsbGJhY2sgdG8gZnVuY3Rpb24gaXRlbSBpdHNlbGYKLSAg
ICAgICAgICAgIG5vZGUgPSBzZWxmLl9weWZ1bmNpdGVtCi0gICAgICAgIGFzc2VydCBub2RlLCAn
Q291bGQgbm90IG9idGFpbiBhIG5vZGUgZm9yIHNjb3BlICJ7fSIgZm9yIGZ1bmN0aW9uIHshcn0n
LmZvcm1hdChzY29wZSwgc2VsZi5fcHlmdW5jaXRlbSkKLSAgICAgICAgcmV0dXJuIG5vZGUKLQot
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8Rml4dHVyZVJlcXVlc3Qg
Zm9yICVyPiIgJSAoc2VsZi5ub2RlKQotCi0KLWNsYXNzIFN1YlJlcXVlc3QoRml4dHVyZVJlcXVl
c3QpOgotICAgICIiIiBhIHN1YiByZXF1ZXN0IGZvciBoYW5kbGluZyBnZXR0aW5nIGEgZml4dHVy
ZSBmcm9tIGEKLSAgICB0ZXN0IGZ1bmN0aW9uL2ZpeHR1cmUuICIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlcXVlc3QsIHNjb3BlLCBwYXJhbSwgcGFyYW1faW5kZXgsIGZpeHR1cmVkZWYp
OgotICAgICAgICBzZWxmLl9wYXJlbnRfcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5m
aXh0dXJlbmFtZSA9IGZpeHR1cmVkZWYuYXJnbmFtZQotICAgICAgICBpZiBwYXJhbSBpcyBub3Qg
Tk9UU0VUOgotICAgICAgICAgICAgc2VsZi5wYXJhbSA9IHBhcmFtCi0gICAgICAgIHNlbGYucGFy
YW1faW5kZXggPSBwYXJhbV9pbmRleAotICAgICAgICBzZWxmLnNjb3BlID0gc2NvcGUKLSAgICAg
ICAgc2VsZi5fZml4dHVyZWRlZiA9IGZpeHR1cmVkZWYKLSAgICAgICAgc2VsZi5fcHlmdW5jaXRl
bSA9IHJlcXVlc3QuX3B5ZnVuY2l0ZW0KLSAgICAgICAgc2VsZi5fZml4dHVyZV92YWx1ZXMgPSBy
ZXF1ZXN0Ll9maXh0dXJlX3ZhbHVlcwotICAgICAgICBzZWxmLl9maXh0dXJlX2RlZnMgPSByZXF1
ZXN0Ll9maXh0dXJlX2RlZnMKLSAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0gcmVxdWVz
dC5fYXJnMmZpeHR1cmVkZWZzCi0gICAgICAgIHNlbGYuX2FyZzJpbmRleCA9IHJlcXVlc3QuX2Fy
ZzJpbmRleAotICAgICAgICBzZWxmLl9maXh0dXJlbWFuYWdlciA9IHJlcXVlc3QuX2ZpeHR1cmVt
YW5hZ2VyCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFN1YlJl
cXVlc3QgJXIgZm9yICVyPiIgJSAoc2VsZi5maXh0dXJlbmFtZSwgc2VsZi5fcHlmdW5jaXRlbSkK
LQotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyKToKLSAgICAgICAgc2VsZi5f
Zml4dHVyZWRlZi5hZGRmaW5hbGl6ZXIoZmluYWxpemVyKQotCi0KLWNsYXNzIFNjb3BlTWlzbWF0
Y2hFcnJvcihFeGNlcHRpb24pOgotICAgICIiIiBBIGZpeHR1cmUgZnVuY3Rpb24gdHJpZXMgdG8g
dXNlIGEgZGlmZmVyZW50IGZpeHR1cmUgZnVuY3Rpb24gd2hpY2gKLSAgICB3aGljaCBoYXMgYSBs
b3dlciBzY29wZSAoZS5nLiBhIFNlc3Npb24gb25lIGNhbGxzIGEgZnVuY3Rpb24gb25lKQotICAg
ICIiIgotCi0KLXNjb3BlcyA9ICJzZXNzaW9uIG1vZHVsZSBjbGFzcyBmdW5jdGlvbiIuc3BsaXQo
KQotc2NvcGVudW1fZnVuY3Rpb24gPSBzY29wZXMuaW5kZXgoImZ1bmN0aW9uIikKLQotCi1kZWYg
c2NvcGVtaXNtYXRjaChjdXJyZW50c2NvcGUsIG5ld3Njb3BlKToKLSAgICByZXR1cm4gc2NvcGVz
LmluZGV4KG5ld3Njb3BlKSA+IHNjb3Blcy5pbmRleChjdXJyZW50c2NvcGUpCi0KLQotZGVmIHNj
b3BlMmluZGV4KHNjb3BlLCBkZXNjciwgd2hlcmU9Tm9uZSk6Ci0gICAgIiIiTG9vayB1cCB0aGUg
aW5kZXggb2YgYGBzY29wZWBgIGFuZCByYWlzZSBhIGRlc2NyaXB0aXZlIHZhbHVlIGVycm9yCi0g
ICAgaWYgbm90IGRlZmluZWQuCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gc2Nv
cGVzLmluZGV4KHNjb3BlKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKAotICAgICAgICAgICAgInswfSB7MX1oYXMgYW4gdW5zdXBwb3J0ZWQgc2NvcGUg
dmFsdWUgJ3syfSciLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBkZXNjciwgJ2Zyb20gezB9ICcu
Zm9ybWF0KHdoZXJlKSBpZiB3aGVyZSBlbHNlICcnLAotICAgICAgICAgICAgICAgIHNjb3BlKQot
ICAgICAgICApCi0KLQotY2xhc3MgRml4dHVyZUxvb2t1cEVycm9yKExvb2t1cEVycm9yKToKLSAg
ICAiIiIgY291bGQgbm90IHJldHVybiBhIHJlcXVlc3RlZCBGaXh0dXJlIChtaXNzaW5nIG9yIGlu
dmFsaWQpLiAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmduYW1lLCByZXF1ZXN0LCBt
c2c9Tm9uZSk6Ci0gICAgICAgIHNlbGYuYXJnbmFtZSA9IGFyZ25hbWUKLSAgICAgICAgc2VsZi5y
ZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLmZpeHR1cmVzdGFjayA9IHJlcXVlc3QuX2dl
dF9maXh0dXJlc3RhY2soKQotICAgICAgICBzZWxmLm1zZyA9IG1zZwotCi0gICAgZGVmIGZvcm1h
dHJlcHIoc2VsZik6Ci0gICAgICAgIHRibGluZXMgPSBbXQotICAgICAgICBhZGRsaW5lID0gdGJs
aW5lcy5hcHBlbmQKLSAgICAgICAgc3RhY2sgPSBbc2VsZi5yZXF1ZXN0Ll9weWZ1bmNpdGVtLm9i
al0KLSAgICAgICAgc3RhY2suZXh0ZW5kKG1hcChsYW1iZGEgeDogeC5mdW5jLCBzZWxmLmZpeHR1
cmVzdGFjaykpCi0gICAgICAgIG1zZyA9IHNlbGYubXNnCi0gICAgICAgIGlmIG1zZyBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgICMgdGhlIGxhc3QgZml4dHVyZSByYWlzZSBhbiBlcnJvciwgbGV0
J3MgcHJlc2VudAotICAgICAgICAgICAgIyBpdCBhdCB0aGUgcmVxdWVzdGluZyBzaWRlCi0gICAg
ICAgICAgICBzdGFjayA9IHN0YWNrWzotMV0KLSAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHN0YWNr
OgotICAgICAgICAgICAgZnNwYXRoLCBsaW5lbm8gPSBnZXRmc2xpbmVubyhmdW5jdGlvbikKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsaW5lcywgXyA9IGluc3BlY3QuZ2V0c291
cmNlbGluZXMoZ2V0X3JlYWxfZnVuYyhmdW5jdGlvbikpCi0gICAgICAgICAgICBleGNlcHQgKElP
RXJyb3IsIEluZGV4RXJyb3IsIFR5cGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgZXJyb3JfbXNn
ID0gImZpbGUgJXMsIGxpbmUgJXM6IHNvdXJjZSBjb2RlIG5vdCBhdmFpbGFibGUiCi0gICAgICAg
ICAgICAgICAgYWRkbGluZShlcnJvcl9tc2cgJSAoZnNwYXRoLCBsaW5lbm8gKyAxKSkKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWRkbGluZSgiZmlsZSAlcywgbGluZSAlcyIg
JSAoZnNwYXRoLCBsaW5lbm8gKyAxKSkKLSAgICAgICAgICAgICAgICBmb3IgaSwgbGluZSBpbiBl
bnVtZXJhdGUobGluZXMpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAo
KQotICAgICAgICAgICAgICAgICAgICBhZGRsaW5lKCIgICIgKyBsaW5lKQotICAgICAgICAgICAg
ICAgICAgICBpZiBsaW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJ2RlZicpOgotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBtc2cgaXMgTm9uZToKLSAgICAgICAgICAg
IGZtID0gc2VsZi5yZXF1ZXN0Ll9maXh0dXJlbWFuYWdlcgotICAgICAgICAgICAgYXZhaWxhYmxl
ID0gW10KLSAgICAgICAgICAgIHBhcmVudGlkID0gc2VsZi5yZXF1ZXN0Ll9weWZ1bmNpdGVtLnBh
cmVudC5ub2RlaWQKLSAgICAgICAgICAgIGZvciBuYW1lLCBmaXh0dXJlZGVmcyBpbiBmbS5fYXJn
MmZpeHR1cmVkZWZzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgZmFjbGlzdCA9IGxpc3QoZm0u
X21hdGNoZmFjdG9yaWVzKGZpeHR1cmVkZWZzLCBwYXJlbnRpZCkpCi0gICAgICAgICAgICAgICAg
aWYgZmFjbGlzdCBhbmQgbmFtZSBub3QgaW4gYXZhaWxhYmxlOgotICAgICAgICAgICAgICAgICAg
ICBhdmFpbGFibGUuYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICBtc2cgPSAiZml4dHVyZSAlciBu
b3QgZm91bmQiICUgKHNlbGYuYXJnbmFtZSwpCi0gICAgICAgICAgICBtc2cgKz0gIlxuIGF2YWls
YWJsZSBmaXh0dXJlczogJXMiICUgKCIsICIuam9pbihzb3J0ZWQoYXZhaWxhYmxlKSksKQotICAg
ICAgICAgICAgbXNnICs9ICJcbiB1c2UgJ3B5dGVzdCAtLWZpeHR1cmVzIFt0ZXN0cGF0aF0nIGZv
ciBoZWxwIG9uIHRoZW0uIgotCi0gICAgICAgIHJldHVybiBGaXh0dXJlTG9va3VwRXJyb3JSZXBy
KGZzcGF0aCwgbGluZW5vLCB0YmxpbmVzLCBtc2csIHNlbGYuYXJnbmFtZSkKLQotCi1jbGFzcyBG
aXh0dXJlTG9va3VwRXJyb3JSZXByKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZpbGVuYW1lLCBmaXJzdGxpbmVubywgdGJsaW5lcywgZXJyb3JzdHJpbmcsIGFyZ25hbWUp
OgotICAgICAgICBzZWxmLnRibGluZXMgPSB0YmxpbmVzCi0gICAgICAgIHNlbGYuZXJyb3JzdHJp
bmcgPSBlcnJvcnN0cmluZwotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAg
ICAgc2VsZi5maXJzdGxpbmVubyA9IGZpcnN0bGluZW5vCi0gICAgICAgIHNlbGYuYXJnbmFtZSA9
IGFyZ25hbWUKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgIyB0dy5s
aW5lKCJGaXh0dXJlTG9va3VwRXJyb3I6ICVzIiAlKHNlbGYuYXJnbmFtZSksIHJlZD1UcnVlKQot
ICAgICAgICBmb3IgdGJsaW5lIGluIHNlbGYudGJsaW5lczoKLSAgICAgICAgICAgIHR3LmxpbmUo
dGJsaW5lLnJzdHJpcCgpKQotICAgICAgICBsaW5lcyA9IHNlbGYuZXJyb3JzdHJpbmcuc3BsaXQo
IlxuIikKLSAgICAgICAgaWYgbGluZXM6Ci0gICAgICAgICAgICB0dy5saW5lKCd7MH0gICAgICAg
ezF9Jy5mb3JtYXQoRm9ybWF0dGVkRXhjaW5mby5mYWlsX21hcmtlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1swXS5zdHJpcCgpKSwgcmVkPVRydWUp
Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lc1sxOl06Ci0gICAgICAgICAgICAgICAgdHcu
bGluZSgnezB9ICAgICAgIHsxfScuZm9ybWF0KEZvcm1hdHRlZEV4Y2luZm8uZmxvd19tYXJrZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuc3Ry
aXAoKSksIHJlZD1UcnVlKQotICAgICAgICB0dy5saW5lKCkKLSAgICAgICAgdHcubGluZSgiJXM6
JWQiICUgKHNlbGYuZmlsZW5hbWUsIHNlbGYuZmlyc3RsaW5lbm8gKyAxKSkKLQotCi1kZWYgZmFp
bF9maXh0dXJlZnVuYyhmaXh0dXJlZnVuYywgbXNnKToKLSAgICBmcywgbGluZW5vID0gZ2V0ZnNs
aW5lbm8oZml4dHVyZWZ1bmMpCi0gICAgbG9jYXRpb24gPSAiJXM6JXMiICUgKGZzLCBsaW5lbm8g
KyAxKQotICAgIHNvdXJjZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKGZpeHR1cmVmdW5jKQotICAg
IGZhaWwobXNnICsgIjpcblxuIiArIHN0cihzb3VyY2UuaW5kZW50KCkpICsgIlxuIiArIGxvY2F0
aW9uLAotICAgICAgICAgcHl0cmFjZT1GYWxzZSkKLQotCi1kZWYgY2FsbF9maXh0dXJlX2Z1bmMo
Zml4dHVyZWZ1bmMsIHJlcXVlc3QsIGt3YXJncyk6Ci0gICAgeWllbGRjdHggPSBpc19nZW5lcmF0
b3IoZml4dHVyZWZ1bmMpCi0gICAgaWYgeWllbGRjdHg6Ci0gICAgICAgIGl0ID0gZml4dHVyZWZ1
bmMoKiprd2FyZ3MpCi0gICAgICAgIHJlcyA9IG5leHQoaXQpCi0KLSAgICAgICAgZGVmIHRlYXJk
b3duKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbmV4dChpdCkKLSAgICAg
ICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmFpbF9maXh0dXJlZnVuYyhmaXh0dXJlZnVu
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5aWVsZF9maXh0dXJlIGZ1bmN0
aW9uIGhhcyBtb3JlIHRoYW4gb25lICd5aWVsZCciKQotCi0gICAgICAgIHJlcXVlc3QuYWRkZmlu
YWxpemVyKHRlYXJkb3duKQotICAgIGVsc2U6Ci0gICAgICAgIHJlcyA9IGZpeHR1cmVmdW5jKCoq
a3dhcmdzKQotICAgIHJldHVybiByZXMKLQotCi1jbGFzcyBGaXh0dXJlRGVmOgotICAgICIiIiBB
IGNvbnRhaW5lciBmb3IgYSBmYWN0b3J5IGRlZmluaXRpb24uICIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZpeHR1cmVtYW5hZ2VyLCBiYXNlaWQsIGFyZ25hbWUsIGZ1bmMsIHNjb3BlLCBw
YXJhbXMsCi0gICAgICAgICAgICAgICAgIHVuaXR0ZXN0PUZhbHNlLCBpZHM9Tm9uZSk6Ci0gICAg
ICAgIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyID0gZml4dHVyZW1hbmFnZXIKLSAgICAgICAgc2VsZi5i
YXNlaWQgPSBiYXNlaWQgb3IgJycKLSAgICAgICAgc2VsZi5oYXNfbG9jYXRpb24gPSBiYXNlaWQg
aXMgbm90IE5vbmUKLSAgICAgICAgc2VsZi5mdW5jID0gZnVuYwotICAgICAgICBzZWxmLmFyZ25h
bWUgPSBhcmduYW1lCi0gICAgICAgIHNlbGYuc2NvcGUgPSBzY29wZQotICAgICAgICBzZWxmLnNj
b3BlbnVtID0gc2NvcGUyaW5kZXgoCi0gICAgICAgICAgICBzY29wZSBvciAiZnVuY3Rpb24iLAot
ICAgICAgICAgICAgZGVzY3I9J2ZpeHR1cmUgezB9Jy5mb3JtYXQoZnVuYy5fX25hbWVfXyksCi0g
ICAgICAgICAgICB3aGVyZT1iYXNlaWQKLSAgICAgICAgKQotICAgICAgICBzZWxmLnBhcmFtcyA9
IHBhcmFtcwotICAgICAgICBzZWxmLmFyZ25hbWVzID0gZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMsIGlz
X21ldGhvZD11bml0dGVzdCkKLSAgICAgICAgc2VsZi51bml0dGVzdCA9IHVuaXR0ZXN0Ci0gICAg
ICAgIHNlbGYuaWRzID0gaWRzCi0gICAgICAgIHNlbGYuX2ZpbmFsaXplcnMgPSBbXQotCi0gICAg
ZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXIpOgotICAgICAgICBzZWxmLl9maW5hbGl6
ZXJzLmFwcGVuZChmaW5hbGl6ZXIpCi0KLSAgICBkZWYgZmluaXNoKHNlbGYsIHJlcXVlc3QpOgot
ICAgICAgICBleGNlcHRpb25zID0gW10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUg
c2VsZi5fZmluYWxpemVyczoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ICAgIGZ1bmMgPSBzZWxmLl9maW5hbGl6ZXJzLnBvcCgpCi0gICAgICAgICAgICAgICAgICAgIGZ1
bmMoKQotICAgICAgICAgICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmFwcGVuZChzeXMuZXhjX2luZm8oKSkKLSAgICAgICAgICAgIGlmIGV4Y2Vw
dGlvbnM6Ci0gICAgICAgICAgICAgICAgZSA9IGV4Y2VwdGlvbnNbMF0KLSAgICAgICAgICAgICAg
ICBkZWwgZXhjZXB0aW9ucyAgIyBlbnN1cmUgd2UgZG9uJ3Qga2VlcCBhbGwgZnJhbWVzIGFsaXZl
IGJlY2F1c2Ugb2YgdGhlIHRyYWNlYmFjawotICAgICAgICAgICAgICAgIHB5LmJ1aWx0aW4uX3Jl
cmFpc2UoKmUpCi0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGhvb2sgPSBzZWxmLl9m
aXh0dXJlbWFuYWdlci5zZXNzaW9uLmdldGhvb2twcm94eShyZXF1ZXN0Lm5vZGUuZnNwYXRoKQot
ICAgICAgICAgICAgaG9vay5weXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFsaXplcihmaXh0dXJlZGVm
PXNlbGYsIHJlcXVlc3Q9cmVxdWVzdCkKLSAgICAgICAgICAgICMgZXZlbiBpZiBmaW5hbGl6YXRp
b24gZmFpbHMsIHdlIGludmFsaWRhdGUKLSAgICAgICAgICAgICMgdGhlIGNhY2hlZCBmaXh0dXJl
IHZhbHVlIGFuZCByZW1vdmUKLSAgICAgICAgICAgICMgYWxsIGZpbmFsaXplcnMgYmVjYXVzZSB0
aGV5IG1heSBiZSBib3VuZCBtZXRob2RzIHdoaWNoIHdpbGwKLSAgICAgICAgICAgICMga2VlcCBp
bnN0YW5jZXMgYWxpdmUKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgImNhY2hlZF9yZXN1
bHQiKToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5jYWNoZWRfcmVzdWx0Ci0gICAgICAgICAg
ICBzZWxmLl9maW5hbGl6ZXJzID0gW10KLQotICAgIGRlZiBleGVjdXRlKHNlbGYsIHJlcXVlc3Qp
OgotICAgICAgICAjIGdldCByZXF1aXJlZCBhcmd1bWVudHMgYW5kIHJlZ2lzdGVyIG91ciBvd24g
ZmluaXNoKCkKLSAgICAgICAgIyB3aXRoIHRoZWlyIGZpbmFsaXphdGlvbgotICAgICAgICBmb3Ig
YXJnbmFtZSBpbiBzZWxmLmFyZ25hbWVzOgotICAgICAgICAgICAgZml4dHVyZWRlZiA9IHJlcXVl
c3QuX2dldF9hY3RpdmVfZml4dHVyZWRlZihhcmduYW1lKQotICAgICAgICAgICAgaWYgYXJnbmFt
ZSAhPSAicmVxdWVzdCI6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWRlZi5hZGRmaW5hbGl6ZXIo
ZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5maW5pc2gsIHJlcXVlc3Q9cmVxdWVzdCkpCi0KLSAgICAg
ICAgbXlfY2FjaGVfa2V5ID0gcmVxdWVzdC5wYXJhbV9pbmRleAotICAgICAgICBjYWNoZWRfcmVz
dWx0ID0gZ2V0YXR0cihzZWxmLCAiY2FjaGVkX3Jlc3VsdCIsIE5vbmUpCi0gICAgICAgIGlmIGNh
Y2hlZF9yZXN1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQsIGNhY2hlX2tleSwg
ZXJyID0gY2FjaGVkX3Jlc3VsdAotICAgICAgICAgICAgaWYgbXlfY2FjaGVfa2V5ID09IGNhY2hl
X2tleToKLSAgICAgICAgICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoKmVycikKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAjIHdlIGhhdmUg
YSBwcmV2aW91cyBidXQgZGlmZmVyZW50bHkgcGFyYW1ldHJpemVkIGZpeHR1cmUgaW5zdGFuY2UK
LSAgICAgICAgICAgICMgc28gd2UgbmVlZCB0byB0ZWFyIGl0IGRvd24gYmVmb3JlIGNyZWF0aW5n
IGEgbmV3IG9uZQotICAgICAgICAgICAgc2VsZi5maW5pc2gocmVxdWVzdCkKLSAgICAgICAgICAg
IGFzc2VydCBub3QgaGFzYXR0cihzZWxmLCAiY2FjaGVkX3Jlc3VsdCIpCi0KLSAgICAgICAgaG9v
ayA9IHNlbGYuX2ZpeHR1cmVtYW5hZ2VyLnNlc3Npb24uZ2V0aG9va3Byb3h5KHJlcXVlc3Qubm9k
ZS5mc3BhdGgpCi0gICAgICAgIHJldHVybiBob29rLnB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1
cmVkZWY9c2VsZiwgcmVxdWVzdD1yZXF1ZXN0KQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgot
ICAgICAgICByZXR1cm4gKCI8Rml4dHVyZURlZiBuYW1lPSVyIHNjb3BlPSVyIGJhc2VpZD0lciA+
IiAlCi0gICAgICAgICAgICAgICAgKHNlbGYuYXJnbmFtZSwgc2VsZi5zY29wZSwgc2VsZi5iYXNl
aWQpKQotCi0KLWRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCByZXF1ZXN0KToK
LSAgICAiIiIgRXhlY3V0aW9uIG9mIGZpeHR1cmUgc2V0dXAuICIiIgotICAgIGt3YXJncyA9IHt9
Ci0gICAgZm9yIGFyZ25hbWUgaW4gZml4dHVyZWRlZi5hcmduYW1lczoKLSAgICAgICAgZml4ZGVm
ID0gcmVxdWVzdC5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVmKGFyZ25hbWUpCi0gICAgICAgIHJlc3Vs
dCwgYXJnX2NhY2hlX2tleSwgZXhjID0gZml4ZGVmLmNhY2hlZF9yZXN1bHQKLSAgICAgICAgcmVx
dWVzdC5fY2hlY2tfc2NvcGUoYXJnbmFtZSwgcmVxdWVzdC5zY29wZSwgZml4ZGVmLnNjb3BlKQot
ICAgICAgICBrd2FyZ3NbYXJnbmFtZV0gPSByZXN1bHQKLQotICAgIGZpeHR1cmVmdW5jID0gZml4
dHVyZWRlZi5mdW5jCi0gICAgaWYgZml4dHVyZWRlZi51bml0dGVzdDoKLSAgICAgICAgaWYgcmVx
dWVzdC5pbnN0YW5jZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgYmluZCB0aGUgdW5ib3Vu
ZCBtZXRob2QgdG8gdGhlIFRlc3RDYXNlIGluc3RhbmNlCi0gICAgICAgICAgICBmaXh0dXJlZnVu
YyA9IGZpeHR1cmVkZWYuZnVuYy5fX2dldF9fKHJlcXVlc3QuaW5zdGFuY2UpCi0gICAgZWxzZToK
LSAgICAgICAgIyB0aGUgZml4dHVyZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBib3VuZCB0byB0aGUg
YWN0dWFsCi0gICAgICAgICMgcmVxdWVzdC5pbnN0YW5jZSBzbyB0aGF0IGNvZGUgd29ya2luZyB3
aXRoICJmaXh0dXJlZGVmIiBiZWhhdmVzCi0gICAgICAgICMgYXMgZXhwZWN0ZWQuCi0gICAgICAg
IGlmIHJlcXVlc3QuaW5zdGFuY2UgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmaXh0dXJlZnVu
YyA9IGdldGltZnVuYyhmaXh0dXJlZGVmLmZ1bmMpCi0gICAgICAgICAgICBpZiBmaXh0dXJlZnVu
YyAhPSBmaXh0dXJlZGVmLmZ1bmM6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBmaXh0
dXJlZnVuYy5fX2dldF9fKHJlcXVlc3QuaW5zdGFuY2UpCi0gICAgbXlfY2FjaGVfa2V5ID0gcmVx
dWVzdC5wYXJhbV9pbmRleAotICAgIHRyeToKLSAgICAgICAgcmVzdWx0ID0gY2FsbF9maXh0dXJl
X2Z1bmMoZml4dHVyZWZ1bmMsIHJlcXVlc3QsIGt3YXJncykKLSAgICBleGNlcHQgVEVTVF9PVVRD
T01FOgotICAgICAgICBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQgPSAoTm9uZSwgbXlfY2FjaGVf
a2V5LCBzeXMuZXhjX2luZm8oKSkKLSAgICAgICAgcmFpc2UKLSAgICBmaXh0dXJlZGVmLmNhY2hl
ZF9yZXN1bHQgPSAocmVzdWx0LCBteV9jYWNoZV9rZXksIE5vbmUpCi0gICAgcmV0dXJuIHJlc3Vs
dAotCi0KLWRlZiBfZW5zdXJlX2ltbXV0YWJsZV9pZHMoaWRzKToKLSAgICBpZiBpZHMgaXMgTm9u
ZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgY2FsbGFibGUoaWRzKToKLSAgICAgICAgcmV0dXJu
IGlkcwotICAgIHJldHVybiB0dXBsZShpZHMpCi0KLQotQGF0dHIucyhmcm96ZW49VHJ1ZSkKLWNs
YXNzIEZpeHR1cmVGdW5jdGlvbk1hcmtlcihvYmplY3QpOgotICAgIHNjb3BlID0gYXR0ci5pYigp
Ci0gICAgcGFyYW1zID0gYXR0ci5pYihjb252ZXJ0PWF0dHIuY29udmVydGVycy5vcHRpb25hbCh0
dXBsZSkpCi0gICAgYXV0b3VzZSA9IGF0dHIuaWIoZGVmYXVsdD1GYWxzZSkKLSAgICBpZHMgPSBh
dHRyLmliKGRlZmF1bHQ9Tm9uZSwgY29udmVydD1fZW5zdXJlX2ltbXV0YWJsZV9pZHMpCi0gICAg
bmFtZSA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lKQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1
bmN0aW9uKToKLSAgICAgICAgaWYgaXNjbGFzcyhmdW5jdGlvbik6Ci0gICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICJjbGFzcyBmaXh0dXJlcyBub3Qgc3VwcG9y
dGVkIChtYXkgYmUgaW4gdGhlIGZ1dHVyZSkiKQotICAgICAgICBmdW5jdGlvbi5fcHl0ZXN0Zml4
dHVyZWZ1bmN0aW9uID0gc2VsZgotICAgICAgICByZXR1cm4gZnVuY3Rpb24KLQotCi1kZWYgZml4
dHVyZShzY29wZT0iZnVuY3Rpb24iLCBwYXJhbXM9Tm9uZSwgYXV0b3VzZT1GYWxzZSwgaWRzPU5v
bmUsIG5hbWU9Tm9uZSk6Ci0gICAgIiIiIChyZXR1cm4gYSkgZGVjb3JhdG9yIHRvIG1hcmsgYSBm
aXh0dXJlIGZhY3RvcnkgZnVuY3Rpb24uCi0KLSAgICBUaGlzIGRlY29yYXRvciBjYW4gYmUgdXNl
ZCAod2l0aCBvciB3aXRob3V0IHBhcmFtZXRlcnMpIHRvIGRlZmluZSBhCi0gICAgZml4dHVyZSBm
dW5jdGlvbi4gIFRoZSBuYW1lIG9mIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIGNhbiBsYXRlciBiZQot
ICAgIHJlZmVyZW5jZWQgdG8gY2F1c2UgaXRzIGludm9jYXRpb24gYWhlYWQgb2YgcnVubmluZyB0
ZXN0czogdGVzdAotICAgIG1vZHVsZXMgb3IgY2xhc3NlcyBjYW4gdXNlIHRoZSBweXRlc3QubWFy
ay51c2VmaXh0dXJlcyhmaXh0dXJlbmFtZSkKLSAgICBtYXJrZXIuICBUZXN0IGZ1bmN0aW9ucyBj
YW4gZGlyZWN0bHkgdXNlIGZpeHR1cmUgbmFtZXMgYXMgaW5wdXQKLSAgICBhcmd1bWVudHMgaW4g
d2hpY2ggY2FzZSB0aGUgZml4dHVyZSBpbnN0YW5jZSByZXR1cm5lZCBmcm9tIHRoZSBmaXh0dXJl
Ci0gICAgZnVuY3Rpb24gd2lsbCBiZSBpbmplY3RlZC4KLQotICAgIDphcmcgc2NvcGU6IHRoZSBz
Y29wZSBmb3Igd2hpY2ggdGhpcyBmaXh0dXJlIGlzIHNoYXJlZCwgb25lIG9mCi0gICAgICAgICAg
ICAgICAgImZ1bmN0aW9uIiAoZGVmYXVsdCksICJjbGFzcyIsICJtb2R1bGUiIG9yICJzZXNzaW9u
Ii4KLQotICAgIDphcmcgcGFyYW1zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHBhcmFtZXRlcnMgd2hp
Y2ggd2lsbCBjYXVzZSBtdWx0aXBsZQotICAgICAgICAgICAgICAgIGludm9jYXRpb25zIG9mIHRo
ZSBmaXh0dXJlIGZ1bmN0aW9uIGFuZCBhbGwgb2YgdGhlIHRlc3RzCi0gICAgICAgICAgICAgICAg
dXNpbmcgaXQuCi0KLSAgICA6YXJnIGF1dG91c2U6IGlmIFRydWUsIHRoZSBmaXh0dXJlIGZ1bmMg
aXMgYWN0aXZhdGVkIGZvciBhbGwgdGVzdHMgdGhhdAotICAgICAgICAgICAgICAgIGNhbiBzZWUg
aXQuICBJZiBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZW4gYW4gZXhwbGljaXQKLSAgICAgICAgICAg
ICAgICByZWZlcmVuY2UgaXMgbmVlZGVkIHRvIGFjdGl2YXRlIHRoZSBmaXh0dXJlLgotCi0gICAg
OmFyZyBpZHM6IGxpc3Qgb2Ygc3RyaW5nIGlkcyBlYWNoIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBh
cmFtcwotICAgICAgICAgICAgICAgIHNvIHRoYXQgdGhleSBhcmUgcGFydCBvZiB0aGUgdGVzdCBp
ZC4gSWYgbm8gaWRzIGFyZSBwcm92aWRlZAotICAgICAgICAgICAgICAgIHRoZXkgd2lsbCBiZSBn
ZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBwYXJhbXMuCi0KLSAgICA6YXJnIG5hbWU6
IHRoZSBuYW1lIG9mIHRoZSBmaXh0dXJlLiBUaGlzIGRlZmF1bHRzIHRvIHRoZSBuYW1lIG9mIHRo
ZQotICAgICAgICAgICAgICAgIGRlY29yYXRlZCBmdW5jdGlvbi4gSWYgYSBmaXh0dXJlIGlzIHVz
ZWQgaW4gdGhlIHNhbWUgbW9kdWxlIGluCi0gICAgICAgICAgICAgICAgd2hpY2ggaXQgaXMgZGVm
aW5lZCwgdGhlIGZ1bmN0aW9uIG5hbWUgb2YgdGhlIGZpeHR1cmUgd2lsbCBiZQotICAgICAgICAg
ICAgICAgIHNoYWRvd2VkIGJ5IHRoZSBmdW5jdGlvbiBhcmcgdGhhdCByZXF1ZXN0cyB0aGUgZml4
dHVyZTsgb25lIHdheQotICAgICAgICAgICAgICAgIHRvIHJlc29sdmUgdGhpcyBpcyB0byBuYW1l
IHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICBgYGZpeHR1cmVfPGZpeHR1
cmVuYW1lPmBgIGFuZCB0aGVuIHVzZQotICAgICAgICAgICAgICAgIGBgQHB5dGVzdC5maXh0dXJl
KG5hbWU9JzxmaXh0dXJlbmFtZT4nKWBgLgotCi0gICAgRml4dHVyZXMgY2FuIG9wdGlvbmFsbHkg
cHJvdmlkZSB0aGVpciB2YWx1ZXMgdG8gdGVzdCBmdW5jdGlvbnMgdXNpbmcgYSBgYHlpZWxkYGAg
c3RhdGVtZW50LAotICAgIGluc3RlYWQgb2YgYGByZXR1cm5gYC4gSW4gdGhpcyBjYXNlLCB0aGUg
Y29kZSBibG9jayBhZnRlciB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBleGVjdXRlZAotICAg
IGFzIHRlYXJkb3duIGNvZGUgcmVnYXJkbGVzcyBvZiB0aGUgdGVzdCBvdXRjb21lLiBBIGZpeHR1
cmUgZnVuY3Rpb24gbXVzdCB5aWVsZCBleGFjdGx5IG9uY2UuCi0gICAgIiIiCi0gICAgaWYgY2Fs
bGFibGUoc2NvcGUpIGFuZCBwYXJhbXMgaXMgTm9uZSBhbmQgYXV0b3VzZSBpcyBGYWxzZToKLSAg
ICAgICAgIyBkaXJlY3QgZGVjb3JhdGlvbgotICAgICAgICByZXR1cm4gRml4dHVyZUZ1bmN0aW9u
TWFya2VyKAotICAgICAgICAgICAgImZ1bmN0aW9uIiwgcGFyYW1zLCBhdXRvdXNlLCBuYW1lPW5h
bWUpKHNjb3BlKQotICAgIGlmIHBhcmFtcyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2Uo
cGFyYW1zLCAobGlzdCwgdHVwbGUpKToKLSAgICAgICAgcGFyYW1zID0gbGlzdChwYXJhbXMpCi0g
ICAgcmV0dXJuIEZpeHR1cmVGdW5jdGlvbk1hcmtlcihzY29wZSwgcGFyYW1zLCBhdXRvdXNlLCBp
ZHM9aWRzLCBuYW1lPW5hbWUpCi0KLQotZGVmIHlpZWxkX2ZpeHR1cmUoc2NvcGU9ImZ1bmN0aW9u
IiwgcGFyYW1zPU5vbmUsIGF1dG91c2U9RmFsc2UsIGlkcz1Ob25lLCBuYW1lPU5vbmUpOgotICAg
ICIiIiAocmV0dXJuIGEpIGRlY29yYXRvciB0byBtYXJrIGEgeWllbGQtZml4dHVyZSBmYWN0b3J5
IGZ1bmN0aW9uLgotCi0gICAgLi4gZGVwcmVjYXRlZDo6IDMuMAotICAgICAgICBVc2UgOnB5OmZ1
bmM6YHB5dGVzdC5maXh0dXJlYCBkaXJlY3RseSBpbnN0ZWFkLgotICAgICIiIgotICAgIGlmIGNh
bGxhYmxlKHNjb3BlKSBhbmQgcGFyYW1zIGlzIE5vbmUgYW5kIG5vdCBhdXRvdXNlOgotICAgICAg
ICAjIGRpcmVjdCBkZWNvcmF0aW9uCi0gICAgICAgIHJldHVybiBGaXh0dXJlRnVuY3Rpb25NYXJr
ZXIoCi0gICAgICAgICAgICAiZnVuY3Rpb24iLCBwYXJhbXMsIGF1dG91c2UsIGlkcz1pZHMsIG5h
bWU9bmFtZSkoc2NvcGUpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIEZpeHR1cmVGdW5jdGlv
bk1hcmtlcihzY29wZSwgcGFyYW1zLCBhdXRvdXNlLCBpZHM9aWRzLCBuYW1lPW5hbWUpCi0KLQot
ZGVmYXVsdGZ1bmNhcmdwcmVmaXhtYXJrZXIgPSBmaXh0dXJlKCkKLQotCi1AZml4dHVyZShzY29w
ZT0ic2Vzc2lvbiIpCi1kZWYgcHl0ZXN0Y29uZmlnKHJlcXVlc3QpOgotICAgICIiIiB0aGUgcHl0
ZXN0IGNvbmZpZyBvYmplY3Qgd2l0aCBhY2Nlc3MgdG8gY29tbWFuZCBsaW5lIG9wdHMuIiIiCi0g
ICAgcmV0dXJuIHJlcXVlc3QuY29uZmlnCi0KLQotY2xhc3MgRml4dHVyZU1hbmFnZXI6Ci0gICAg
IiIiCi0gICAgcHl0ZXN0IGZpeHR1cmVzIGRlZmluaXRpb25zIGFuZCBpbmZvcm1hdGlvbiBpcyBz
dG9yZWQgYW5kIG1hbmFnZWQKLSAgICBmcm9tIHRoaXMgY2xhc3MuCi0KLSAgICBEdXJpbmcgY29s
bGVjdGlvbiBmbS5wYXJzZWZhY3RvcmllcygpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBw
YXJzZQotICAgIGZpeHR1cmUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW50byBGaXh0dXJlRGVmIG9i
amVjdHMgYW5kIGludGVybmFsCi0gICAgZGF0YSBzdHJ1Y3R1cmVzLgotCi0gICAgRHVyaW5nIGNv
bGxlY3Rpb24gb2YgdGVzdCBmdW5jdGlvbnMsIG1ldGFmdW5jLW1lY2hhbmljcyBpbnN0YW50aWF0
ZQotICAgIGEgRnVuY0ZpeHR1cmVJbmZvIG9iamVjdCB3aGljaCBpcyBjYWNoZWQgcGVyIG5vZGUv
ZnVuYy1uYW1lLgotICAgIFRoaXMgRnVuY0ZpeHR1cmVJbmZvIG9iamVjdCBpcyBsYXRlciByZXRy
aWV2ZWQgYnkgRnVuY3Rpb24gbm9kZXMKLSAgICB3aGljaCB0aGVtc2VsdmVzIG9mZmVyIGEgZml4
dHVyZW5hbWVzIGF0dHJpYnV0ZS4KLQotICAgIFRoZSBGdW5jRml4dHVyZUluZm8gb2JqZWN0IGhv
bGRzIGluZm9ybWF0aW9uIGFib3V0IGZpeHR1cmVzIGFuZCBGaXh0dXJlRGVmcwotICAgIHJlbGV2
YW50IGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24uICBBbiBpbml0aWFsIGxpc3Qgb2YgZml4dHVy
ZXMgaXMKLSAgICBhc3NlbWJsZWQgbGlrZSB0aGlzOgotCi0gICAgLSBpbmktZGVmaW5lZCB1c2Vm
aXh0dXJlcwotICAgIC0gYXV0b3VzZS1tYXJrZWQgZml4dHVyZXMgYWxvbmcgdGhlIGNvbGxlY3Rp
b24gY2hhaW4gdXAgZnJvbSB0aGUgZnVuY3Rpb24KLSAgICAtIHVzZWZpeHR1cmVzIG1hcmtlcnMg
YXQgbW9kdWxlL2NsYXNzL2Z1bmN0aW9uIGxldmVsCi0gICAgLSB0ZXN0IGZ1bmN0aW9uIGZ1bmNh
cmdzCi0KLSAgICBTdWJzZXF1ZW50bHkgdGhlIGZ1bmNmaXh0dXJlaW5mby5maXh0dXJlbmFtZXMg
YXR0cmlidXRlIGlzIGNvbXB1dGVkCi0gICAgYXMgdGhlIGNsb3N1cmUgb2YgdGhlIGZpeHR1cmVz
IG5lZWRlZCB0byBzZXR1cCB0aGUgaW5pdGlhbCBmaXh0dXJlcywKLSAgICBpLiBlLiBmaXh0dXJl
cyBuZWVkZWQgYnkgZml4dHVyZSBmdW5jdGlvbnMgdGhlbXNlbHZlcyBhcmUgYXBwZW5kZWQKLSAg
ICB0byB0aGUgZml4dHVyZW5hbWVzIGxpc3QuCi0KLSAgICBVcG9uIHRoZSB0ZXN0LXNldHVwIHBo
YXNlcyBhbGwgZml4dHVyZW5hbWVzIGFyZSBpbnN0YW50aWF0ZWQsIHJldHJpZXZlZAotICAgIGJ5
IGEgbG9va3VwIG9mIHRoZWlyIEZ1bmNGaXh0dXJlSW5mby4KLSAgICAiIiIKLQotICAgIF9hcmdw
cmVmaXggPSAicHl0ZXN0X2Z1bmNhcmdfXyIKLSAgICBGaXh0dXJlTG9va3VwRXJyb3IgPSBGaXh0
dXJlTG9va3VwRXJyb3IKLSAgICBGaXh0dXJlTG9va3VwRXJyb3JSZXByID0gRml4dHVyZUxvb2t1
cEVycm9yUmVwcgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlc3Npb24pOgotICAgICAgICBz
ZWxmLnNlc3Npb24gPSBzZXNzaW9uCi0gICAgICAgIHNlbGYuY29uZmlnID0gc2Vzc2lvbi5jb25m
aWcKLSAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0ge30KLSAgICAgICAgc2VsZi5faG9s
ZGVyb2Jqc2VlbiA9IHNldCgpCi0gICAgICAgIHNlbGYuX2FyZzJmaW5pc2ggPSB7fQotICAgICAg
ICBzZWxmLl9ub2RlaWRfYW5kX2F1dG91c2VuYW1lcyA9IFsoIiIsIHNlbGYuY29uZmlnLmdldGlu
aSgidXNlZml4dHVyZXMiKSldCi0gICAgICAgIHNlc3Npb24uY29uZmlnLnBsdWdpbm1hbmFnZXIu
cmVnaXN0ZXIoc2VsZiwgImZ1bmNtYW5hZ2UiKQotCi0gICAgZGVmIGdldGZpeHR1cmVpbmZvKHNl
bGYsIG5vZGUsIGZ1bmMsIGNscywgZnVuY2FyZ3M9VHJ1ZSk6Ci0gICAgICAgIGlmIGZ1bmNhcmdz
IGFuZCBub3QgaGFzYXR0cihub2RlLCAibm9mdW5jYXJncyIpOgotICAgICAgICAgICAgYXJnbmFt
ZXMgPSBnZXRmdW5jYXJnbmFtZXMoZnVuYywgY2xzPWNscykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGFyZ25hbWVzID0gKCkKLSAgICAgICAgdXNlZml4dHVyZXMgPSBnZXRhdHRyKGZ1bmMs
ICJ1c2VmaXh0dXJlcyIsIE5vbmUpCi0gICAgICAgIGluaXRpYWxuYW1lcyA9IGFyZ25hbWVzCi0g
ICAgICAgIGlmIHVzZWZpeHR1cmVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaW5pdGlhbG5h
bWVzID0gdXNlZml4dHVyZXMuYXJncyArIGluaXRpYWxuYW1lcwotICAgICAgICBmbSA9IG5vZGUu
c2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAgICAgICAgbmFtZXNfY2xvc3VyZSwgYXJnMmZpeHR1
cmVkZWZzID0gZm0uZ2V0Zml4dHVyZWNsb3N1cmUoaW5pdGlhbG5hbWVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlKQot
ICAgICAgICByZXR1cm4gRnVuY0ZpeHR1cmVJbmZvKGFyZ25hbWVzLCBuYW1lc19jbG9zdXJlLCBh
cmcyZml4dHVyZWRlZnMpCi0KLSAgICBkZWYgcHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkKHNlbGYs
IHBsdWdpbik6Ci0gICAgICAgIG5vZGVpZCA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcCA9IHB5LnBhdGgubG9jYWwocGx1Z2luLl9fZmlsZV9fKQotICAgICAgICBleGNlcHQgQXR0
cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAjIGNvbnN0cnVjdCB0aGUgYmFzZSBub2RlaWQgd2hpY2ggaXMgbGF0ZXIgdXNlZCB0byBjaGVj
awotICAgICAgICAgICAgIyB3aGF0IGZpeHR1cmVzIGFyZSB2aXNpYmxlIGZvciBwYXJ0aWN1bGFy
IHRlc3RzIChhcyBkZW5vdGVkCi0gICAgICAgICAgICAjIGJ5IHRoZWlyIHRlc3QgaWQpCi0gICAg
ICAgICAgICBpZiBwLmJhc2VuYW1lLnN0YXJ0c3dpdGgoImNvbmZ0ZXN0LnB5Iik6Ci0gICAgICAg
ICAgICAgICAgbm9kZWlkID0gcC5kaXJwYXRoKCkucmVsdG8oc2VsZi5jb25maWcucm9vdGRpcikK
LSAgICAgICAgICAgICAgICBpZiBwLnNlcCAhPSBub2Rlcy5TRVA6Ci0gICAgICAgICAgICAgICAg
ICAgIG5vZGVpZCA9IG5vZGVpZC5yZXBsYWNlKHAuc2VwLCBub2Rlcy5TRVApCi0gICAgICAgIHNl
bGYucGFyc2VmYWN0b3JpZXMocGx1Z2luLCBub2RlaWQpCi0KLSAgICBkZWYgX2dldGF1dG91c2Vu
YW1lcyhzZWxmLCBub2RlaWQpOgotICAgICAgICAiIiIgcmV0dXJuIGEgdHVwbGUgb2YgZml4dHVy
ZSBuYW1lcyB0byBiZSB1c2VkLiAiIiIKLSAgICAgICAgYXV0b3VzZW5hbWVzID0gW10KLSAgICAg
ICAgZm9yIGJhc2VpZCwgYmFzZW5hbWVzIGluIHNlbGYuX25vZGVpZF9hbmRfYXV0b3VzZW5hbWVz
OgotICAgICAgICAgICAgaWYgbm9kZWlkLnN0YXJ0c3dpdGgoYmFzZWlkKToKLSAgICAgICAgICAg
ICAgICBpZiBiYXNlaWQ6Ci0gICAgICAgICAgICAgICAgICAgIGkgPSBsZW4oYmFzZWlkKQotICAg
ICAgICAgICAgICAgICAgICBuZXh0Y2hhciA9IG5vZGVpZFtpOmkgKyAxXQotICAgICAgICAgICAg
ICAgICAgICBpZiBuZXh0Y2hhciBhbmQgbmV4dGNoYXIgbm90IGluICI6LyI6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGF1dG91c2VuYW1lcy5leHRl
bmQoYmFzZW5hbWVzKQotICAgICAgICAjIG1ha2Ugc3VyZSBhdXRvdXNlbmFtZXMgYXJlIHNvcnRl
ZCBieSBzY29wZSwgc2NvcGVudW0gMCBpcyBzZXNzaW9uCi0gICAgICAgIGF1dG91c2VuYW1lcy5z
b3J0KAotICAgICAgICAgICAga2V5PWxhbWJkYSB4OiBzZWxmLl9hcmcyZml4dHVyZWRlZnNbeF1b
LTFdLnNjb3BlbnVtKQotICAgICAgICByZXR1cm4gYXV0b3VzZW5hbWVzCi0KLSAgICBkZWYgZ2V0
Zml4dHVyZWNsb3N1cmUoc2VsZiwgZml4dHVyZW5hbWVzLCBwYXJlbnRub2RlKToKLSAgICAgICAg
IyBjb2xsZWN0IHRoZSBjbG9zdXJlIG9mIGFsbCBmaXh0dXJlcyAsIHN0YXJ0aW5nIHdpdGggdGhl
IGdpdmVuCi0gICAgICAgICMgZml4dHVyZW5hbWVzIGFzIHRoZSBpbml0aWFsIHNldC4gIEFzIHdl
IGhhdmUgdG8gdmlzaXQgYWxsCi0gICAgICAgICMgZmFjdG9yeSBkZWZpbml0aW9ucyBhbnl3YXks
IHdlIGFsc28gcmV0dXJuIGEgYXJnMmZpeHR1cmVkZWZzCi0gICAgICAgICMgbWFwcGluZyBzbyB0
aGF0IHRoZSBjYWxsZXIgY2FuIHJldXNlIGl0IGFuZCBkb2VzIG5vdCBoYXZlCi0gICAgICAgICMg
dG8gcmUtZGlzY292ZXIgZml4dHVyZWRlZnMgYWdhaW4gZm9yIGVhY2ggZml4dHVyZW5hbWUKLSAg
ICAgICAgIyAoZGlzY292ZXJpbmcgbWF0Y2hpbmcgZml4dHVyZXMgZm9yIGEgZ2l2ZW4gbmFtZS9u
b2RlIGlzIGV4cGVuc2l2ZSkKLQotICAgICAgICBwYXJlbnRpZCA9IHBhcmVudG5vZGUubm9kZWlk
Ci0gICAgICAgIGZpeHR1cmVuYW1lc19jbG9zdXJlID0gc2VsZi5fZ2V0YXV0b3VzZW5hbWVzKHBh
cmVudGlkKQotCi0gICAgICAgIGRlZiBtZXJnZShvdGhlcmxpc3QpOgotICAgICAgICAgICAgZm9y
IGFyZyBpbiBvdGhlcmxpc3Q6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBmaXh0dXJl
bmFtZXNfY2xvc3VyZToKLSAgICAgICAgICAgICAgICAgICAgZml4dHVyZW5hbWVzX2Nsb3N1cmUu
YXBwZW5kKGFyZykKLQotICAgICAgICBtZXJnZShmaXh0dXJlbmFtZXMpCi0gICAgICAgIGFyZzJm
aXh0dXJlZGVmcyA9IHt9Ci0gICAgICAgIGxhc3RsZW4gPSAtMQotICAgICAgICB3aGlsZSBsYXN0
bGVuICE9IGxlbihmaXh0dXJlbmFtZXNfY2xvc3VyZSk6Ci0gICAgICAgICAgICBsYXN0bGVuID0g
bGVuKGZpeHR1cmVuYW1lc19jbG9zdXJlKQotICAgICAgICAgICAgZm9yIGFyZ25hbWUgaW4gZml4
dHVyZW5hbWVzX2Nsb3N1cmU6Ci0gICAgICAgICAgICAgICAgaWYgYXJnbmFtZSBpbiBhcmcyZml4
dHVyZWRlZnM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAg
Zml4dHVyZWRlZnMgPSBzZWxmLmdldGZpeHR1cmVkZWZzKGFyZ25hbWUsIHBhcmVudGlkKQotICAg
ICAgICAgICAgICAgIGlmIGZpeHR1cmVkZWZzOgotICAgICAgICAgICAgICAgICAgICBhcmcyZml4
dHVyZWRlZnNbYXJnbmFtZV0gPSBmaXh0dXJlZGVmcwotICAgICAgICAgICAgICAgICAgICBtZXJn
ZShmaXh0dXJlZGVmc1stMV0uYXJnbmFtZXMpCi0gICAgICAgIHJldHVybiBmaXh0dXJlbmFtZXNf
Y2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzCi0KLSAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3Rz
KHNlbGYsIG1ldGFmdW5jKToKLSAgICAgICAgZm9yIGFyZ25hbWUgaW4gbWV0YWZ1bmMuZml4dHVy
ZW5hbWVzOgotICAgICAgICAgICAgZmFjbGlzdCA9IG1ldGFmdW5jLl9hcmcyZml4dHVyZWRlZnMu
Z2V0KGFyZ25hbWUpCi0gICAgICAgICAgICBpZiBmYWNsaXN0OgotICAgICAgICAgICAgICAgIGZp
eHR1cmVkZWYgPSBmYWNsaXN0Wy0xXQotICAgICAgICAgICAgICAgIGlmIGZpeHR1cmVkZWYucGFy
YW1zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBwYXJhbWV0cml6ZV9mdW5jID0g
Z2V0YXR0cihtZXRhZnVuYy5mdW5jdGlvbiwgJ3BhcmFtZXRyaXplJywgTm9uZSkKLSAgICAgICAg
ICAgICAgICAgICAgZnVuY19wYXJhbXMgPSBnZXRhdHRyKHBhcmFtZXRyaXplX2Z1bmMsICdhcmdz
JywgW1tOb25lXV0pCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfa3dhcmdzID0gZ2V0YXR0cihw
YXJhbWV0cml6ZV9mdW5jLCAna3dhcmdzJywge30pCi0gICAgICAgICAgICAgICAgICAgICMgc2tp
cCBkaXJlY3RseSBwYXJhbWV0cml6ZWQgYXJndW1lbnRzCi0gICAgICAgICAgICAgICAgICAgIGlm
ICJhcmduYW1lcyIgaW4gZnVuY19rd2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdu
YW1lcyA9IHBhcmFtZXRyaXplX2Z1bmMua3dhcmdzWyJhcmduYW1lcyJdCi0gICAgICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmduYW1lcyA9IGZ1bmNfcGFy
YW1zWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ25hbWVzLCAo
dHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ25hbWVzID0gW3guc3Ry
aXAoKSBmb3IgeCBpbiBhcmduYW1lcy5zcGxpdCgiLCIpIGlmIHguc3RyaXAoKV0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgYXJnbmFtZSBub3QgaW4gZnVuY19wYXJhbXMgYW5kIGFyZ25hbWUgbm90
IGluIGFyZ25hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJp
emUoYXJnbmFtZSwgZml4dHVyZWRlZi5wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRpcmVjdD1UcnVlLCBzY29wZT1maXh0dXJlZGVmLnNjb3Bl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzPWZpeHR1
cmVkZWYuaWRzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb250aW51ZSAg
IyB3aWxsIHJhaXNlIEZpeHR1cmVMb29rdXBFcnJvciBhdCBzZXR1cCB0aW1lCi0KLSAgICBkZWYg
cHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2VsZiwgaXRlbXMpOgotICAgICAgICAjIHNl
cGFyYXRlIHBhcmFtZXRyaXplZCBzZXR1cHMKLSAgICAgICAgaXRlbXNbOl0gPSByZW9yZGVyX2l0
ZW1zKGl0ZW1zKQotCi0gICAgZGVmIHBhcnNlZmFjdG9yaWVzKHNlbGYsIG5vZGVfb3Jfb2JqLCBu
b2RlaWQ9Tk9UU0VULCB1bml0dGVzdD1GYWxzZSk6Ci0gICAgICAgIGlmIG5vZGVpZCBpcyBub3Qg
Tk9UU0VUOgotICAgICAgICAgICAgaG9sZGVyb2JqID0gbm9kZV9vcl9vYmoKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGhvbGRlcm9iaiA9IG5vZGVfb3Jfb2JqLm9iagotICAgICAgICAgICAg
bm9kZWlkID0gbm9kZV9vcl9vYmoubm9kZWlkCi0gICAgICAgIGlmIGhvbGRlcm9iaiBpbiBzZWxm
Ll9ob2xkZXJvYmpzZWVuOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX2hvbGRl
cm9ianNlZW4uYWRkKGhvbGRlcm9iaikKLSAgICAgICAgYXV0b3VzZW5hbWVzID0gW10KLSAgICAg
ICAgZm9yIG5hbWUgaW4gZGlyKGhvbGRlcm9iaik6Ci0gICAgICAgICAgICAjIFRoZSBhdHRyaWJ1
dGUgY2FuIGJlIGFuIGFyYml0cmFyeSBkZXNjcmlwdG9yLCBzbyB0aGUgYXR0cmlidXRlCi0gICAg
ICAgICAgICAjIGFjY2VzcyBiZWxvdyBjYW4gcmFpc2UuIHNhZmVfZ2V0YXR0KCkgaWdub3JlcyBz
dWNoIGV4Y2VwdGlvbnMuCi0gICAgICAgICAgICBvYmogPSBzYWZlX2dldGF0dHIoaG9sZGVyb2Jq
LCBuYW1lLCBOb25lKQotICAgICAgICAgICAgIyBmaXh0dXJlIGZ1bmN0aW9ucyBoYXZlIGEgcHl0
ZXN0X2Z1bmNhcmdfXyBwcmVmaXggKHByZS0yLjMgc3R5bGUpCi0gICAgICAgICAgICAjIG9yIGFy
ZSAiQHB5dGVzdC5maXh0dXJlIiBtYXJrZWQKLSAgICAgICAgICAgIG1hcmtlciA9IGdldGZpeHR1
cmVtYXJrZXIob2JqKQotICAgICAgICAgICAgaWYgbWFya2VyIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aChzZWxmLl9hcmdwcmVmaXgpOgotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBjYWxsYWJsZShvYmop
OgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIG1hcmtlciA9
IGRlZmF1bHRmdW5jYXJncHJlZml4bWFya2VyCi0gICAgICAgICAgICAgICAgZnJvbSBfcHl0ZXN0
IGltcG9ydCBkZXByZWNhdGVkCi0gICAgICAgICAgICAgICAgc2VsZi5jb25maWcud2FybignQzEn
LCBkZXByZWNhdGVkLkZVTkNBUkdfUFJFRklYLmZvcm1hdChuYW1lPW5hbWUpLCBub2RlaWQ9bm9k
ZWlkKQotICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lW2xlbihzZWxmLl9hcmdwcmVmaXgpOl0K
LSAgICAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UobWFya2VyLCBGaXh0dXJlRnVuY3Rpb25N
YXJrZXIpOgotICAgICAgICAgICAgICAgICMgbWFnaWMgZ2xvYmFscyAgd2l0aCBfX2dldGF0dHJf
XyBtaWdodCBoYXZlIGdvdCB1cyBhIHdyb25nCi0gICAgICAgICAgICAgICAgIyBmaXh0dXJlIGF0
dHJpYnV0ZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGlmIG1hcmtlci5uYW1lOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0g
bWFya2VyLm5hbWUKLSAgICAgICAgICAgICAgICBtc2cgPSAnZml4dHVyZXMgY2Fubm90IGhhdmUg
InB5dGVzdF9mdW5jYXJnX18iIHByZWZpeCAnIFwKLSAgICAgICAgICAgICAgICAgICAgICAnYW5k
IGJlIGRlY29yYXRlZCB3aXRoIEBweXRlc3QuZml4dHVyZTpcbiVzJyAlIG5hbWUKLSAgICAgICAg
ICAgICAgICBhc3NlcnQgbm90IG5hbWUuc3RhcnRzd2l0aChzZWxmLl9hcmdwcmVmaXgpLCBtc2cK
LQotICAgICAgICAgICAgZml4dHVyZV9kZWYgPSBGaXh0dXJlRGVmKHNlbGYsIG5vZGVpZCwgbmFt
ZSwgb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zY29w
ZSwgbWFya2VyLnBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bml0dGVzdD11bml0dGVzdCwgaWRzPW1hcmtlci5pZHMpCi0KLSAgICAgICAgICAgIGZhY2xpc3Qg
PSBzZWxmLl9hcmcyZml4dHVyZWRlZnMuc2V0ZGVmYXVsdChuYW1lLCBbXSkKLSAgICAgICAgICAg
IGlmIGZpeHR1cmVfZGVmLmhhc19sb2NhdGlvbjoKLSAgICAgICAgICAgICAgICBmYWNsaXN0LmFw
cGVuZChmaXh0dXJlX2RlZikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBm
aXh0dXJlZGVmcyB3aXRoIG5vIGxvY2F0aW9uIGFyZSBhdCB0aGUgZnJvbnQKLSAgICAgICAgICAg
ICAgICAjIHNvIHRoaXMgaW5zZXJ0cyB0aGUgY3VycmVudCBmaXh0dXJlZGVmIGFmdGVyIHRoZQot
ICAgICAgICAgICAgICAgICMgZXhpc3RpbmcgZml4dHVyZWRlZnMgZnJvbSBleHRlcm5hbCBwbHVn
aW5zIGJ1dAotICAgICAgICAgICAgICAgICMgYmVmb3JlIHRoZSBmaXh0dXJlZGVmcyBwcm92aWRl
ZCBpbiBjb25mdGVzdHMuCi0gICAgICAgICAgICAgICAgaSA9IGxlbihbZiBmb3IgZiBpbiBmYWNs
aXN0IGlmIG5vdCBmLmhhc19sb2NhdGlvbl0pCi0gICAgICAgICAgICAgICAgZmFjbGlzdC5pbnNl
cnQoaSwgZml4dHVyZV9kZWYpCi0gICAgICAgICAgICBpZiBtYXJrZXIuYXV0b3VzZToKLSAgICAg
ICAgICAgICAgICBhdXRvdXNlbmFtZXMuYXBwZW5kKG5hbWUpCi0KLSAgICAgICAgaWYgYXV0b3Vz
ZW5hbWVzOgotICAgICAgICAgICAgc2VsZi5fbm9kZWlkX2FuZF9hdXRvdXNlbmFtZXMuYXBwZW5k
KChub2RlaWQgb3IgJycsIGF1dG91c2VuYW1lcykpCi0KLSAgICBkZWYgZ2V0Zml4dHVyZWRlZnMo
c2VsZiwgYXJnbmFtZSwgbm9kZWlkKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdldHMgYSBsaXN0
IG9mIGZpeHR1cmVzIHdoaWNoIGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiBub2RlIGlkLgot
Ci0gICAgICAgIDpwYXJhbSBzdHIgYXJnbmFtZTogbmFtZSBvZiB0aGUgZml4dHVyZSB0byBzZWFy
Y2ggZm9yCi0gICAgICAgIDpwYXJhbSBzdHIgbm9kZWlkOiBmdWxsIG5vZGUgaWQgb2YgdGhlIHJl
cXVlc3RpbmcgdGVzdC4KLSAgICAgICAgOnJldHVybjogbGlzdFtGaXh0dXJlRGVmXQotICAgICAg
ICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZml4dHVyZWRlZnMgPSBzZWxmLl9hcmcy
Zml4dHVyZWRlZnNbYXJnbmFtZV0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB0dXBsZShz
ZWxmLl9tYXRjaGZhY3RvcmllcyhmaXh0dXJlZGVmcywgbm9kZWlkKSkKLQotICAgIGRlZiBfbWF0
Y2hmYWN0b3JpZXMoc2VsZiwgZml4dHVyZWRlZnMsIG5vZGVpZCk6Ci0gICAgICAgIGZvciBmaXh0
dXJlZGVmIGluIGZpeHR1cmVkZWZzOgotICAgICAgICAgICAgaWYgbm9kZXMuaXNjaGlsZG5vZGUo
Zml4dHVyZWRlZi5iYXNlaWQsIG5vZGVpZCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgZml4dHVy
ZWRlZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9mcmVlemVfc3VwcG9ydC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvZnJlZXplX3N1cHBvcnQucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk3MTQ3YTg4MjUwYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvZnJlZXplX3N1cHBvcnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBA
Ci0iIiIKLVByb3ZpZGVzIGEgZnVuY3Rpb24gdG8gcmVwb3J0IGFsbCBpbnRlcm5hbCBtb2R1bGVz
IGZvciB1c2luZyBmcmVlemluZyB0b29scwotcHl0ZXN0Ci0iIiIKLWZyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotCi1kZWYg
ZnJlZXplX2luY2x1ZGVzKCk6Ci0gICAgIiIiCi0gICAgUmV0dXJucyBhIGxpc3Qgb2YgbW9kdWxl
IG5hbWVzIHVzZWQgYnkgcHkudGVzdCB0aGF0IHNob3VsZCBiZQotICAgIGluY2x1ZGVkIGJ5IGN4
X2ZyZWV6ZS4KLSAgICAiIiIKLSAgICBpbXBvcnQgcHkKLSAgICBpbXBvcnQgX3B5dGVzdAotICAg
IHJlc3VsdCA9IGxpc3QoX2l0ZXJfYWxsX21vZHVsZXMocHkpKQotICAgIHJlc3VsdCArPSBsaXN0
KF9pdGVyX2FsbF9tb2R1bGVzKF9weXRlc3QpKQotICAgIHJldHVybiByZXN1bHQKLQotCi1kZWYg
X2l0ZXJfYWxsX21vZHVsZXMocGFja2FnZSwgcHJlZml4PScnKToKLSAgICAiIiIKLSAgICBJdGVy
YXRlcyBvdmVyIHRoZSBuYW1lcyBvZiBhbGwgbW9kdWxlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgZ2l2ZW4KLSAgICBwYWNrYWdlLCByZWN1cnNpdmVseS4KLSAgICBFeGFtcGxlOgotICAgICAg
ICBfaXRlcl9hbGxfbW9kdWxlcyhfcHl0ZXN0KSAtPgotICAgICAgICAgICAgWydfcHl0ZXN0LmFz
c2VydGlvbi5uZXdpbnRlcnByZXQnLAotICAgICAgICAgICAgICdfcHl0ZXN0LmNhcHR1cmUnLAot
ICAgICAgICAgICAgICdfcHl0ZXN0LmNvcmUnLAotICAgICAgICAgICAgIC4uLgotICAgICAgICAg
ICAgXQotICAgICIiIgotICAgIGltcG9ydCBvcwotICAgIGltcG9ydCBwa2d1dGlsCi0gICAgaWYg
dHlwZShwYWNrYWdlKSBpcyBub3Qgc3RyOgotICAgICAgICBwYXRoLCBwcmVmaXggPSBwYWNrYWdl
Ll9fcGF0aF9fWzBdLCBwYWNrYWdlLl9fbmFtZV9fICsgJy4nCi0gICAgZWxzZToKLSAgICAgICAg
cGF0aCA9IHBhY2thZ2UKLSAgICBmb3IgXywgbmFtZSwgaXNfcGFja2FnZSBpbiBwa2d1dGlsLml0
ZXJfbW9kdWxlcyhbcGF0aF0pOgotICAgICAgICBpZiBpc19wYWNrYWdlOgotICAgICAgICAgICAg
Zm9yIG0gaW4gX2l0ZXJfYWxsX21vZHVsZXMob3MucGF0aC5qb2luKHBhdGgsIG5hbWUpLCBwcmVm
aXg9bmFtZSArICcuJyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcHJlZml4ICsgbQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgeWllbGQgcHJlZml4ICsgbmFtZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvX3B5dGVzdC9oZWxwY29uZmlnLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9oZWxw
Y29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzQ0NjM3Zjg2NjAuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2hlbHBjb25maWcucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotIiIiIHZlcnNpb24gaW5mbywgaGVscCBtZXNzYWdl
cywgdHJhY2luZyBjb25maWd1cmF0aW9uLiAgIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFi
c29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBweQotaW1w
b3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgUHJpbnRIZWxwCi1pbXBvcnQg
b3MKLWltcG9ydCBzeXMKLWZyb20gYXJncGFyc2UgaW1wb3J0IEFjdGlvbgotCi0KLWNsYXNzIEhl
bHBBY3Rpb24oQWN0aW9uKToKLSAgICAiIiJUaGlzIGlzIGFuIGFyZ3BhcnNlIEFjdGlvbiB0aGF0
IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGluCi0gICAgb3JkZXIgdG8gc2tpcCB0aGUgcmVzdCBv
ZiB0aGUgYXJndW1lbnQgcGFyc2luZyB3aGVuIC0taGVscCBpcyBwYXNzZWQuCi0gICAgVGhpcyBw
cmV2ZW50cyBhcmdwYXJzZSBmcm9tIHF1aXR0aW5nIGR1ZSB0byBtaXNzaW5nIHJlcXVpcmVkIGFy
Z3VtZW50cwotICAgIHdoZW4gYW55IGFyZSBkZWZpbmVkLCBmb3IgZXhhbXBsZSBieSBgYHB5dGVz
dF9hZGRvcHRpb25gYC4KLSAgICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHdheSB0aGF0IHRoZSBi
dWlsdGluIGFyZ3BhcnNlIC0taGVscCBvcHRpb24gaXMKLSAgICBpbXBsZW1lbnRlZCBieSByYWlz
aW5nIFN5c3RlbUV4aXQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwKLSAgICAg
ICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCi0gICAgICAgICAgICAgICAgIGRlc3Q9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgaGVscD1O
b25lKToKLSAgICAgICAgc3VwZXIoSGVscEFjdGlvbiwgc2VsZikuX19pbml0X18oCi0gICAgICAg
ICAgICBvcHRpb25fc3RyaW5ncz1vcHRpb25fc3RyaW5ncywKLSAgICAgICAgICAgIGRlc3Q9ZGVz
dCwKLSAgICAgICAgICAgIGNvbnN0PVRydWUsCi0gICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQs
Ci0gICAgICAgICAgICBuYXJncz0wLAotICAgICAgICAgICAgaGVscD1oZWxwKQotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9
Tm9uZSk6Ci0gICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIHNlbGYuY29uc3Qp
Ci0KLSAgICAgICAgIyBXZSBzaG91bGQgb25seSBza2lwIHRoZSByZXN0IG9mIHRoZSBwYXJzaW5n
IGFmdGVyIHByZXBhcnNlIGlzIGRvbmUKLSAgICAgICAgaWYgZ2V0YXR0cihwYXJzZXIuX3BhcnNl
ciwgJ2FmdGVyX3ByZXBhcnNlJywgRmFsc2UpOgotICAgICAgICAgICAgcmFpc2UgUHJpbnRIZWxw
Ci0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5n
ZXRncm91cCgnZGVidWdjb25maWcnKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS12ZXJzaW9uJywg
YWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iZGlzcGxheSBw
eXRlc3QgbGliIHZlcnNpb24gYW5kIGltcG9ydCBpbmZvcm1hdGlvbi4iKQotICAgIGdyb3VwLl9h
ZGRvcHRpb24oIi1oIiwgIi0taGVscCIsIGFjdGlvbj1IZWxwQWN0aW9uLCBkZXN0PSJoZWxwIiwK
LSAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNob3cgaGVscCBtZXNzYWdlIGFuZCBjb25maWd1
cmF0aW9uIGluZm8iKQotICAgIGdyb3VwLl9hZGRvcHRpb24oJy1wJywgYWN0aW9uPSJhcHBlbmQi
LCBkZXN0PSJwbHVnaW5zIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgIG1ldGF2
YXI9Im5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0iZWFybHktbG9hZCBnaXZlbiBw
bHVnaW4gKG11bHRpLWFsbG93ZWQpLiAiCi0gICAgICAgICAgICAgICAgICAgICAiVG8gYXZvaWQg
bG9hZGluZyBvZiBwbHVnaW5zLCB1c2UgdGhlIGBubzpgIHByZWZpeCwgZS5nLiAiCi0gICAgICAg
ICAgICAgICAgICAgICAiYG5vOmRvY3Rlc3RgLiIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLXRy
YWNlY29uZmlnJywgJy0tdHJhY2UtY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0i
dHJhY2UgY29uc2lkZXJhdGlvbnMgb2YgY29uZnRlc3QucHkgZmlsZXMuIiksCi0gICAgZ3JvdXAu
YWRkb3B0aW9uKCctLWRlYnVnJywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVzdD0iZGVidWciLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJzdG9yZSBpbnRlcm5hbCB0cmFjaW5nIGRlYnVnIGluZm9ybWF0aW9uIGluICdweXRlc3Rk
ZWJ1Zy5sb2cnLiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigKLSAgICAgICAgJy1vJywgJy0tb3Zl
cnJpZGUtaW5pJywgbmFyZ3M9JyonLCBkZXN0PSJvdmVycmlkZV9pbmkiLAotICAgICAgICBhY3Rp
b249ImFwcGVuZCIsCi0gICAgICAgIGhlbHA9Im92ZXJyaWRlIGNvbmZpZyBvcHRpb24gd2l0aCBv
cHRpb249dmFsdWUgc3R5bGUsIGUuZy4gYC1vIHhmYWlsX3N0cmljdD1UcnVlYC4iKQotCi0KLUBw
eXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGluZV9wYXJz
ZSgpOgotICAgIG91dGNvbWUgPSB5aWVsZAotICAgIGNvbmZpZyA9IG91dGNvbWUuZ2V0X3Jlc3Vs
dCgpCi0gICAgaWYgY29uZmlnLm9wdGlvbi5kZWJ1ZzoKLSAgICAgICAgcGF0aCA9IG9zLnBhdGgu
YWJzcGF0aCgicHl0ZXN0ZGVidWcubG9nIikKLSAgICAgICAgZGVidWdmaWxlID0gb3BlbihwYXRo
LCAndycpCi0gICAgICAgIGRlYnVnZmlsZS53cml0ZSgidmVyc2lvbnMgcHl0ZXN0LSVzLCBweS0l
cywgIgotICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbi0lc1xuY3dkPSVzXG5hcmdzPSVz
XG5cbiIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0ZXN0Ll9fdmVyc2lvbl9f
LCBweS5fX3ZlcnNpb25fXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIuam9pbiht
YXAoc3RyLCBzeXMudmVyc2lvbl9pbmZvKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3MuZ2V0Y3dkKCksIGNvbmZpZy5fb3JpZ2FyZ3MpKQotICAgICAgICBjb25maWcudHJhY2Uucm9v
dC5zZXR3cml0ZXIoZGVidWdmaWxlLndyaXRlKQotICAgICAgICB1bmRvX3RyYWNpbmcgPSBjb25m
aWcucGx1Z2lubWFuYWdlci5lbmFibGVfdHJhY2luZygpCi0gICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoIndyaXRpbmcgcHl0ZXN0ZGVidWcgaW5mb3JtYXRpb24gdG8gJXNcbiIgJSBwYXRoKQotCi0g
ICAgICAgIGRlZiB1bnNldF90cmFjaW5nKCk6Ci0gICAgICAgICAgICBkZWJ1Z2ZpbGUuY2xvc2Uo
KQotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgid3JvdGUgcHl0ZXN0ZGVidWcgaW5mb3Jt
YXRpb24gdG8gJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2ZpbGUu
bmFtZSkKLSAgICAgICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNldHdyaXRlcihOb25lKQotICAg
ICAgICAgICAgdW5kb190cmFjaW5nKCkKLQotICAgICAgICBjb25maWcuYWRkX2NsZWFudXAodW5z
ZXRfdHJhY2luZykKLQotCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgotICAgIGlm
IGNvbmZpZy5vcHRpb24udmVyc2lvbjoKLSAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwocHl0ZXN0
Ll9fZmlsZV9fKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJUaGlzIGlzIHB5dGVzdCB2ZXJz
aW9uICVzLCBpbXBvcnRlZCBmcm9tICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAo
cHl0ZXN0Ll9fdmVyc2lvbl9fLCBwKSkKLSAgICAgICAgcGx1Z2luaW5mbyA9IGdldHBsdWdpbnZl
cnNpb25pbmZvKGNvbmZpZykKLSAgICAgICAgaWYgcGx1Z2luaW5mbzoKLSAgICAgICAgICAgIGZv
ciBsaW5lIGluIHBsdWdpbmluZm86Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShs
aW5lICsgIlxuIikKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbGlmIGNvbmZpZy5vcHRpb24uaGVs
cDoKLSAgICAgICAgY29uZmlnLl9kb19jb25maWd1cmUoKQotICAgICAgICBzaG93aGVscChjb25m
aWcpCi0gICAgICAgIGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkKLSAgICAgICAgcmV0dXJu
IDAKLQotCi1kZWYgc2hvd2hlbHAoY29uZmlnKToKLSAgICByZXBvcnRlciA9IGNvbmZpZy5wbHVn
aW5tYW5hZ2VyLmdldF9wbHVnaW4oJ3Rlcm1pbmFscmVwb3J0ZXInKQotICAgIHR3ID0gcmVwb3J0
ZXIuX3R3Ci0gICAgdHcud3JpdGUoY29uZmlnLl9wYXJzZXIub3B0cGFyc2VyLmZvcm1hdF9oZWxw
KCkpCi0gICAgdHcubGluZSgpCi0gICAgdHcubGluZSgpCi0gICAgdHcubGluZSgiW3B5dGVzdF0g
aW5pLW9wdGlvbnMgaW4gdGhlIGZpcnN0ICIKLSAgICAgICAgICAgICJweXRlc3QuaW5pfHRveC5p
bml8c2V0dXAuY2ZnIGZpbGUgZm91bmQ6IikKLSAgICB0dy5saW5lKCkKLQotICAgIGZvciBuYW1l
IGluIGNvbmZpZy5fcGFyc2VyLl9pbmluYW1lczoKLSAgICAgICAgaGVscCwgdHlwZSwgZGVmYXVs
dCA9IGNvbmZpZy5fcGFyc2VyLl9pbmlkaWN0W25hbWVdCi0gICAgICAgIGlmIHR5cGUgaXMgTm9u
ZToKLSAgICAgICAgICAgIHR5cGUgPSAic3RyaW5nIgotICAgICAgICBzcGVjID0gIiVzICglcyki
ICUgKG5hbWUsIHR5cGUpCi0gICAgICAgIGxpbmUgPSAiICAlLTI0cyAlcyIgJSAoc3BlYywgaGVs
cCkKLSAgICAgICAgdHcubGluZShsaW5lWzp0dy5mdWxsd2lkdGhdKQotCi0gICAgdHcubGluZSgp
Ci0gICAgdHcubGluZSgiZW52aXJvbm1lbnQgdmFyaWFibGVzOiIpCi0gICAgdmFycyA9IFsKLSAg
ICAgICAgKCJQWVRFU1RfQURET1BUUyIsICJleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucyIpLAot
ICAgICAgICAoIlBZVEVTVF9QTFVHSU5TIiwgImNvbW1hLXNlcGFyYXRlZCBwbHVnaW5zIHRvIGxv
YWQgZHVyaW5nIHN0YXJ0dXAiKSwKLSAgICAgICAgKCJQWVRFU1RfREVCVUciLCAic2V0IHRvIGVu
YWJsZSBkZWJ1ZyB0cmFjaW5nIG9mIHB5dGVzdCdzIGludGVybmFscyIpCi0gICAgXQotICAgIGZv
ciBuYW1lLCBoZWxwIGluIHZhcnM6Ci0gICAgICAgIHR3LmxpbmUoIiAgJS0yNHMgJXMiICUgKG5h
bWUsIGhlbHApKQotICAgIHR3LmxpbmUoKQotICAgIHR3LmxpbmUoKQotCi0gICAgdHcubGluZSgi
dG8gc2VlIGF2YWlsYWJsZSBtYXJrZXJzIHR5cGU6IHB5dGVzdCAtLW1hcmtlcnMiKQotICAgIHR3
LmxpbmUoInRvIHNlZSBhdmFpbGFibGUgZml4dHVyZXMgdHlwZTogcHl0ZXN0IC0tZml4dHVyZXMi
KQotICAgIHR3LmxpbmUoIihzaG93biBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIGZpbGVfb3JfZGly
IG9yIGN1cnJlbnQgZGlyICIKLSAgICAgICAgICAgICJpZiBub3Qgc3BlY2lmaWVkKSIpCi0KLSAg
ICBmb3Igd2FybmluZ3JlcG9ydCBpbiByZXBvcnRlci5zdGF0cy5nZXQoJ3dhcm5pbmdzJywgW10p
OgotICAgICAgICB0dy5saW5lKCJ3YXJuaW5nIDogIiArIHdhcm5pbmdyZXBvcnQubWVzc2FnZSwg
cmVkPVRydWUpCi0gICAgcmV0dXJuCi0KLQotY29uZnRlc3Rfb3B0aW9ucyA9IFsKLSAgICAoJ3B5
dGVzdF9wbHVnaW5zJywgJ2xpc3Qgb2YgcGx1Z2luIG5hbWVzIHRvIGxvYWQnKSwKLV0KLQotCi1k
ZWYgZ2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKToKLSAgICBsaW5lcyA9IFtdCi0gICAgcGx1
Z2luaW5mbyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmxpc3RfcGx1Z2luX2Rpc3RpbmZvKCkKLSAg
ICBpZiBwbHVnaW5pbmZvOgotICAgICAgICBsaW5lcy5hcHBlbmQoInNldHVwdG9vbHMgcmVnaXN0
ZXJlZCBwbHVnaW5zOiIpCi0gICAgICAgIGZvciBwbHVnaW4sIGRpc3QgaW4gcGx1Z2luaW5mbzoK
LSAgICAgICAgICAgIGxvYyA9IGdldGF0dHIocGx1Z2luLCAnX19maWxlX18nLCByZXByKHBsdWdp
bikpCi0gICAgICAgICAgICBjb250ZW50ID0gIiVzLSVzIGF0ICVzIiAlIChkaXN0LnByb2plY3Rf
bmFtZSwgZGlzdC52ZXJzaW9uLCBsb2MpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgIiAr
IGNvbnRlbnQpCi0gICAgcmV0dXJuIGxpbmVzCi0KLQotZGVmIHB5dGVzdF9yZXBvcnRfaGVhZGVy
KGNvbmZpZyk6Ci0gICAgbGluZXMgPSBbXQotICAgIGlmIGNvbmZpZy5vcHRpb24uZGVidWcgb3Ig
Y29uZmlnLm9wdGlvbi50cmFjZWNvbmZpZzoKLSAgICAgICAgbGluZXMuYXBwZW5kKCJ1c2luZzog
cHl0ZXN0LSVzIHB5bGliLSVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAocHl0ZXN0Ll9fdmVy
c2lvbl9fLCBweS5fX3ZlcnNpb25fXykpCi0KLSAgICAgICAgdmVyaW5mbyA9IGdldHBsdWdpbnZl
cnNpb25pbmZvKGNvbmZpZykKLSAgICAgICAgaWYgdmVyaW5mbzoKLSAgICAgICAgICAgIGxpbmVz
LmV4dGVuZCh2ZXJpbmZvKQotCi0gICAgaWYgY29uZmlnLm9wdGlvbi50cmFjZWNvbmZpZzoKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCJhY3RpdmUgcGx1Z2luczoiKQotICAgICAgICBpdGVtcyA9IGNv
bmZpZy5wbHVnaW5tYW5hZ2VyLmxpc3RfbmFtZV9wbHVnaW4oKQotICAgICAgICBmb3IgbmFtZSwg
cGx1Z2luIGluIGl0ZW1zOgotICAgICAgICAgICAgaWYgaGFzYXR0cihwbHVnaW4sICdfX2ZpbGVf
XycpOgotICAgICAgICAgICAgICAgIHIgPSBwbHVnaW4uX19maWxlX18KLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgciA9IHJlcHIocGx1Z2luKQotICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCIgICAgJS0yMHM6ICVzIiAlIChuYW1lLCByKSkKLSAgICByZXR1cm4gbGluZXMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvaG9va3NwZWMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2hvb2tzcGVjLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBiZjk5
ZDM3NWEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2hvb2tzcGVjLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsNDIzICswLDAgQEAKLSIiIiBob29rIHNwZWNpZmljYXRpb25z
IGZvciBweXRlc3QgcGx1Z2lucywgaW52b2tlZCBmcm9tIG1haW4ucHkgYW5kIGJ1aWx0aW4gcGx1
Z2lucy4gICIiIgotCi1mcm9tIHBsdWdneSBpbXBvcnQgSG9va3NwZWNNYXJrZXIKLQotaG9va3Nw
ZWMgPSBIb29rc3BlY01hcmtlcigicHl0ZXN0IikKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIElu
aXRpYWxpemF0aW9uIGhvb2tzIGNhbGxlZCBmb3IgZXZlcnkgcGx1Z2luCi0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotCi1AaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfYWRkaG9va3Mo
cGx1Z2lubWFuYWdlcik6Ci0gICAgIiIiY2FsbGVkIGF0IHBsdWdpbiByZWdpc3RyYXRpb24gdGlt
ZSB0byBhbGxvdyBhZGRpbmcgbmV3IGhvb2tzIHZpYSBhIGNhbGwgdG8KLSAgICBwbHVnaW5tYW5h
Z2VyLmFkZF9ob29rc3BlY3MobW9kdWxlX29yX2NsYXNzLCBwcmVmaXgpLiIiIgotCi0KLUBob29r
c3BlYyhoaXN0b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9uYW1lc3BhY2UoKToKLSAgICAiIiIKLSAg
ICBERVBSRUNBVEVEOiB0aGlzIGhvb2sgY2F1c2VzIGRpcmVjdCBtb25rZXlwYXRjaGluZyBvbiBw
eXRlc3QsIGl0cyB1c2UgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQKLSAgICByZXR1cm4gZGljdCBv
ZiBuYW1lLT5vYmplY3QgdG8gYmUgbWFkZSBnbG9iYWxseSBhdmFpbGFibGUgaW4KLSAgICB0aGUg
cHl0ZXN0IG5hbWVzcGFjZS4gIFRoaXMgaG9vayBpcyBjYWxsZWQgYXQgcGx1Z2luIHJlZ2lzdHJh
dGlvbgotICAgIHRpbWUuCi0gICAgIiIiCi0KLQotQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCi1k
ZWYgcHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkKHBsdWdpbiwgbWFuYWdlcik6Ci0gICAgIiIiIGEg
bmV3IHB5dGVzdCBwbHVnaW4gZ290IHJlZ2lzdGVyZWQuICIiIgotCi0KLUBob29rc3BlYyhoaXN0
b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICAiIiJyZWdpc3Rl
ciBhcmdwYXJzZS1zdHlsZSBvcHRpb25zIGFuZCBpbmktc3R5bGUgY29uZmlnIHZhbHVlcywKLSAg
ICBjYWxsZWQgb25jZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgdGVzdCBydW4uCi0KLSAgICAuLiBu
b3RlOjoKLQotICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBvbmx5
IGluIHBsdWdpbnMgb3IgYGBjb25mdGVzdC5weWBgCi0gICAgICAgIGZpbGVzIHNpdHVhdGVkIGF0
IHRoZSB0ZXN0cyByb290IGRpcmVjdG9yeSBkdWUgdG8gaG93IHB5dGVzdAotICAgICAgICA6cmVm
OmBkaXNjb3ZlcnMgcGx1Z2lucyBkdXJpbmcgc3RhcnR1cCA8cGx1Z2lub3JkZXI+YC4KLQotICAg
IDphcmcgcGFyc2VyOiBUbyBhZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMsIGNhbGwKLSAgICAgICAg
OnB5OmZ1bmM6YHBhcnNlci5hZGRvcHRpb24oLi4uKSA8X3B5dGVzdC5jb25maWcuUGFyc2VyLmFk
ZG9wdGlvbj5gLgotICAgICAgICBUbyBhZGQgaW5pLWZpbGUgdmFsdWVzIGNhbGwgOnB5OmZ1bmM6
YHBhcnNlci5hZGRpbmkoLi4uKQotICAgICAgICA8X3B5dGVzdC5jb25maWcuUGFyc2VyLmFkZGlu
aT5gLgotCi0gICAgT3B0aW9ucyBjYW4gbGF0ZXIgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUKLSAg
ICA6cHk6Y2xhc3M6YGNvbmZpZyA8X3B5dGVzdC5jb25maWcuQ29uZmlnPmAgb2JqZWN0LCByZXNw
ZWN0aXZlbHk6Ci0KLSAgICAtIDpweTpmdW5jOmBjb25maWcuZ2V0b3B0aW9uKG5hbWUpIDxfcHl0
ZXN0LmNvbmZpZy5Db25maWcuZ2V0b3B0aW9uPmAgdG8KLSAgICAgIHJldHJpZXZlIHRoZSB2YWx1
ZSBvZiBhIGNvbW1hbmQgbGluZSBvcHRpb24uCi0KLSAgICAtIDpweTpmdW5jOmBjb25maWcuZ2V0
aW5pKG5hbWUpIDxfcHl0ZXN0LmNvbmZpZy5Db25maWcuZ2V0aW5pPmAgdG8gcmV0cmlldmUKLSAg
ICAgIGEgdmFsdWUgcmVhZCBmcm9tIGFuIGluaS1zdHlsZSBmaWxlLgotCi0gICAgVGhlIGNvbmZp
ZyBvYmplY3QgaXMgcGFzc2VkIGFyb3VuZCBvbiBtYW55IGludGVybmFsIG9iamVjdHMgdmlhIHRo
ZSBgYC5jb25maWdgYAotICAgIGF0dHJpYnV0ZSBvciBjYW4gYmUgcmV0cmlldmVkIGFzIHRoZSBg
YHB5dGVzdGNvbmZpZ2BgIGZpeHR1cmUgb3IgYWNjZXNzZWQKLSAgICB2aWEgKGRlcHJlY2F0ZWQp
IGBgcHl0ZXN0LmNvbmZpZ2BgLgotICAgICIiIgotCi0KLUBob29rc3BlYyhoaXN0b3JpYz1UcnVl
KQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICAiIiIKLSAgICBBbGxvd3MgcGx1
Z2lucyBhbmQgY29uZnRlc3QgZmlsZXMgdG8gcGVyZm9ybSBpbml0aWFsIGNvbmZpZ3VyYXRpb24u
Ci0KLSAgICBUaGlzIGhvb2sgaXMgY2FsbGVkIGZvciBldmVyeSBwbHVnaW4gYW5kIGluaXRpYWwg
Y29uZnRlc3QgZmlsZQotICAgIGFmdGVyIGNvbW1hbmQgbGluZSBvcHRpb25zIGhhdmUgYmVlbiBw
YXJzZWQuCi0KLSAgICBBZnRlciB0aGF0LCB0aGUgaG9vayBpcyBjYWxsZWQgZm9yIG90aGVyIGNv
bmZ0ZXN0IGZpbGVzIGFzIHRoZXkgYXJlCi0gICAgaW1wb3J0ZWQuCi0KLSAgICA6YXJnIGNvbmZp
ZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKLSAgICA6dHlwZSBjb25maWc6IF9weXRlc3QuY29uZmln
LkNvbmZpZwotICAgICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQm9vdHN0cmFwcGluZyBo
b29rcyBjYWxsZWQgZm9yIHBsdWdpbnMgcmVnaXN0ZXJlZCBlYXJseSBlbm91Z2g6Ci0jIGludGVy
bmFsIGFuZCAzcmQgcGFydHkgcGx1Z2lucyBhcyB3ZWxsIGFzIGRpcmVjdGx5Ci0jIGRpc2NvdmVy
YWJsZSBjb25mdGVzdC5weSBsb2NhbCBwbHVnaW5zLgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQot
QGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2NtZGxpbmVfcGFyc2UocGx1
Z2lubWFuYWdlciwgYXJncyk6Ci0gICAgIiIicmV0dXJuIGluaXRpYWxpemVkIGNvbmZpZyBvYmpl
Y3QsIHBhcnNpbmcgdGhlIHNwZWNpZmllZCBhcmdzLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9u
LU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3Rf
Y21kbGluZV9wcmVwYXJzZShjb25maWcsIGFyZ3MpOgotICAgICIiIihkZXByZWNhdGVkKSBtb2Rp
ZnkgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBiZWZvcmUgb3B0aW9uIHBhcnNpbmcuICIiIgotCi0K
LUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29u
ZmlnKToKLSAgICAiIiIgY2FsbGVkIGZvciBwZXJmb3JtaW5nIHRoZSBtYWluIGNvbW1hbmQgbGlu
ZSBhY3Rpb24uIFRoZSBkZWZhdWx0Ci0gICAgaW1wbGVtZW50YXRpb24gd2lsbCBpbnZva2UgdGhl
IGNvbmZpZ3VyZSBob29rcyBhbmQgcnVudGVzdF9tYWlubG9vcC4KLQotICAgIFN0b3BzIGF0IGZp
cnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYg
cHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoZWFybHlfY29uZmlnLCBwYXJzZXIsIGFyZ3Mp
OgotICAgICIiIiBpbXBsZW1lbnRzIHRoZSBsb2FkaW5nIG9mIGluaXRpYWwgY29uZnRlc3QgZmls
ZXMgYWhlYWQKLSAgICBvZiBjb21tYW5kIGxpbmUgb3B0aW9uIHBhcnNpbmcuICIiIgotCi0KLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotIyBjb2xsZWN0aW9uIGhvb2tzCi0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vz
c2lvbik6Ci0gICAgIiIiIHBlcmZvcm0gdGhlIGNvbGxlY3Rpb24gcHJvdG9jb2wgZm9yIHRoZSBn
aXZlbiBzZXNzaW9uLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUg
OnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlp
dGVtcyhzZXNzaW9uLCBjb25maWcsIGl0ZW1zKToKLSAgICAiIiIgY2FsbGVkIGFmdGVyIGNvbGxl
Y3Rpb24gaGFzIGJlZW4gcGVyZm9ybWVkLCBtYXkgZmlsdGVyIG9yIHJlLW9yZGVyCi0gICAgdGhl
IGl0ZW1zIGluLXBsYWNlLiIiIgotCi0KLWRlZiBweXRlc3RfY29sbGVjdGlvbl9maW5pc2goc2Vz
c2lvbik6Ci0gICAgIiIiIGNhbGxlZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1l
ZCBhbmQgbW9kaWZpZWQuICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVm
IHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoLCBjb25maWcpOgotICAgICIiIiByZXR1cm4gVHJ1
ZSB0byBwcmV2ZW50IGNvbnNpZGVyaW5nIHRoaXMgcGF0aCBmb3IgY29sbGVjdGlvbi4KLSAgICBU
aGlzIGhvb2sgaXMgY29uc3VsdGVkIGZvciBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHByaW9y
IHRvIGNhbGxpbmcKLSAgICBtb3JlIHNwZWNpZmljIGhvb2tzLgotCi0gICAgU3RvcHMgYXQgZmly
c3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgCi0gICAgIiIiCi0KLQot
QGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5
KHBhdGgsIHBhcmVudCk6Ci0gICAgIiIiIGNhbGxlZCBiZWZvcmUgdHJhdmVyc2luZyBhIGRpcmVj
dG9yeSBmb3IgY29sbGVjdGlvbiBmaWxlcy4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25l
IHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X2NvbGxl
Y3RfZmlsZShwYXRoLCBwYXJlbnQpOgotICAgICIiIiByZXR1cm4gY29sbGVjdGlvbiBOb2RlIG9y
IE5vbmUgZm9yIHRoZSBnaXZlbiBwYXRoLiBBbnkgbmV3IG5vZGUKLSAgICBuZWVkcyB0byBoYXZl
IHRoZSBzcGVjaWZpZWQgYGBwYXJlbnRgYCBhcyBhIHBhcmVudC4iIiIKLQotIyBsb2dnaW5nIGhv
b2tzIGZvciBjb2xsZWN0aW9uCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0c3RhcnQoY29sbGVjdG9y
KToKLSAgICAiIiIgY29sbGVjdG9yIHN0YXJ0cyBjb2xsZWN0aW5nLiAiIiIKLQotCi1kZWYgcHl0
ZXN0X2l0ZW1jb2xsZWN0ZWQoaXRlbSk6Ci0gICAgIiIiIHdlIGp1c3QgY29sbGVjdGVkIGEgdGVz
dCBpdGVtLiAiIiIKLQotCi1kZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0KToKLSAgICAi
IiIgY29sbGVjdG9yIGZpbmlzaGVkIGNvbGxlY3RpbmcuICIiIgotCi0KLWRlZiBweXRlc3RfZGVz
ZWxlY3RlZChpdGVtcyk6Ci0gICAgIiIiIGNhbGxlZCBmb3IgdGVzdCBpdGVtcyBkZXNlbGVjdGVk
IGJ5IGtleXdvcmQuICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5
dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcik6Ci0gICAgIiIiIHBlcmZvcm0gYGBj
b2xsZWN0b3IuY29sbGVjdCgpYGAgYW5kIHJldHVybiBhIENvbGxlY3RSZXBvcnQuCi0KLSAgICBT
dG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIi
Ci0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBQeXRob24gdGVzdCBmdW5jdGlvbiByZWxhdGVkIGhv
b2tzCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkK
LWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aCwgcGFyZW50KToKLSAgICAiIiIg
cmV0dXJuIGEgTW9kdWxlIGNvbGxlY3RvciBvciBOb25lIGZvciB0aGUgZ2l2ZW4gcGF0aC4KLSAg
ICBUaGlzIGhvb2sgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggbWF0Y2hpbmcgdGVzdCBtb2R1bGUg
cGF0aC4KLSAgICBUaGUgcHl0ZXN0X2NvbGxlY3RfZmlsZSBob29rIG5lZWRzIHRvIGJlIHVzZWQg
aWYgeW91IHdhbnQgdG8KLSAgICBjcmVhdGUgdGVzdCBtb2R1bGVzIGZvciBmaWxlcyB0aGF0IGRv
IG5vdCBtYXRjaCBhcyBhIHRlc3QgbW9kdWxlLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5v
bmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLUBob29rc3BlYyhmaXJz
dHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yLCBu
YW1lLCBvYmopOgotICAgICIiIiByZXR1cm4gY3VzdG9tIGl0ZW0vY29sbGVjdG9yIGZvciBhIHB5
dGhvbiBvYmplY3QgaW4gYSBtb2R1bGUsIG9yIE5vbmUuCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBu
b24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotQGhvb2tzcGVj
KGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHB5ZnVuY2l0ZW0pOgot
ICAgICIiIiBjYWxsIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlvbi4KLQotICAgIFN0b3BzIGF0IGZp
cnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYg
cHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAiIiIgZ2VuZXJhdGUgKG11bHRp
cGxlKSBwYXJhbWV0cml6ZWQgY2FsbHMgdG8gYSB0ZXN0IGZ1bmN0aW9uLiIiIgotCi0KLUBob29r
c3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKGNv
bmZpZywgdmFsLCBhcmduYW1lKToKLSAgICAiIiJSZXR1cm4gYSB1c2VyLWZyaWVuZGx5IHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gYGB2YWxgYCB0aGF0IHdpbGwgYmUgdXNlZAot
ICAgIGJ5IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSBjYWxscy4gUmV0dXJuIE5vbmUgaWYgdGhl
IGhvb2sgZG9lc24ndCBrbm93IGFib3V0IGBgdmFsYGAuCi0gICAgVGhlIHBhcmFtZXRlciBuYW1l
IGlzIGF2YWlsYWJsZSBhcyBgYGFyZ25hbWVgYCwgaWYgcmVxdWlyZWQuCi0KLSAgICBTdG9wcyBh
dCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotIyBnZW5lcmljIHJ1bnRlc3QgcmVsYXRlZCBob29rcwotIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0
X3J1bnRlc3Rsb29wKHNlc3Npb24pOgotICAgICIiIiBjYWxsZWQgZm9yIHBlcmZvcm1pbmcgdGhl
IG1haW4gcnVudGVzdCBsb29wCi0gICAgKGFmdGVyIGNvbGxlY3Rpb24gZmluaXNoZWQpLgotCi0g
ICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRg
ICIiIgotCi0KLWRlZiBweXRlc3RfaXRlbXN0YXJ0KGl0ZW0sIG5vZGUpOgotICAgICIiIiAoZGVw
cmVjYXRlZCwgdXNlIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KS4gIiIiCi0KLQotQGhvb2tzcGVj
KGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSwgbmV4
dGl0ZW0pOgotICAgICIiIiBpbXBsZW1lbnRzIHRoZSBydW50ZXN0X3NldHVwL2NhbGwvdGVhcmRv
d24gcHJvdG9jb2wgZm9yCi0gICAgdGhlIGdpdmVuIHRlc3QgaXRlbSwgaW5jbHVkaW5nIGNhcHR1
cmluZyBleGNlcHRpb25zIGFuZCBjYWxsaW5nCi0gICAgcmVwb3J0aW5nIGhvb2tzLgotCi0gICAg
OmFyZyBpdGVtOiB0ZXN0IGl0ZW0gZm9yIHdoaWNoIHRoZSBydW50ZXN0IHByb3RvY29sIGlzIHBl
cmZvcm1lZC4KLQotICAgIDphcmcgbmV4dGl0ZW06IHRoZSBzY2hlZHVsZWQtdG8tYmUtbmV4dCB0
ZXN0IGl0ZW0gKG9yIE5vbmUgaWYgdGhpcwotICAgICAgICAgICAgICAgICAgIGlzIHRoZSBlbmQg
bXkgZnJpZW5kKS4gIFRoaXMgYXJndW1lbnQgaXMgcGFzc2VkIG9uIHRvCi0gICAgICAgICAgICAg
ICAgICAgOnB5OmZ1bmM6YHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duYC4KLQotICAgIDpyZXR1cm4g
Ym9vbGVhbjogVHJ1ZSBpZiBubyBmdXJ0aGVyIGhvb2sgaW1wbGVtZW50YXRpb25zIHNob3VsZCBi
ZSBpbnZva2VkLgotCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6
cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KG5v
ZGVpZCwgbG9jYXRpb24pOgotICAgICIiIiBzaWduYWwgdGhlIHN0YXJ0IG9mIHJ1bm5pbmcgYSBz
aW5nbGUgdGVzdCBpdGVtLiAiIiIKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6
Ci0gICAgIiIiIGNhbGxlZCBiZWZvcmUgYGBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pYGAuICIi
IgotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pOgotICAgICIiIiBjYWxsZWQgdG8g
ZXhlY3V0ZSB0aGUgdGVzdCBgYGl0ZW1gYC4gIiIiCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X3Rl
YXJkb3duKGl0ZW0sIG5leHRpdGVtKToKLSAgICAiIiIgY2FsbGVkIGFmdGVyIGBgcHl0ZXN0X3J1
bnRlc3RfY2FsbGBgLgotCi0gICAgOmFyZyBuZXh0aXRlbTogdGhlIHNjaGVkdWxlZC10by1iZS1u
ZXh0IHRlc3QgaXRlbSAoTm9uZSBpZiBubyBmdXJ0aGVyCi0gICAgICAgICAgICAgICAgICAgdGVz
dCBpdGVtIGlzIHNjaGVkdWxlZCkuICBUaGlzIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvCi0gICAg
ICAgICAgICAgICAgICAgcGVyZm9ybSBleGFjdCB0ZWFyZG93bnMsIGkuZS4gY2FsbGluZyBqdXN0
IGVub3VnaCBmaW5hbGl6ZXJzCi0gICAgICAgICAgICAgICAgICAgc28gdGhhdCBuZXh0aXRlbSBv
bmx5IG5lZWRzIHRvIGNhbGwgc2V0dXAtZnVuY3Rpb25zLgotICAgICIiIgotCi0KLUBob29rc3Bl
YyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwg
Y2FsbCk6Ci0gICAgIiIiIHJldHVybiBhIDpweTpjbGFzczpgX3B5dGVzdC5ydW5uZXIuVGVzdFJl
cG9ydGAgb2JqZWN0Ci0gICAgZm9yIHRoZSBnaXZlbiA6cHk6Y2xhc3M6YHB5dGVzdC5JdGVtIDxf
cHl0ZXN0Lm1haW4uSXRlbT5gIGFuZAotICAgIDpweTpjbGFzczpgX3B5dGVzdC5ydW5uZXIuQ2Fs
bEluZm9gLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpg
Zmlyc3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0
KToKLSAgICAiIiIgcHJvY2VzcyBhIHRlc3Qgc2V0dXAvY2FsbC90ZWFyZG93biByZXBvcnQgcmVs
YXRpbmcgdG8KLSAgICB0aGUgcmVzcGVjdGl2ZSBwaGFzZSBvZiBleGVjdXRpbmcgYSB0ZXN0LiAi
IiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEZpeHR1cmUgcmVsYXRlZCBob29rcwotIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0
X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0gICAgIiIiIHBlcmZvcm1zIGZp
eHR1cmUgc2V0dXAgZXhlY3V0aW9uLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVz
dWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3RfZml4dHVyZV9w
b3N0X2ZpbmFsaXplcihmaXh0dXJlZGVmLCByZXF1ZXN0KToKLSAgICAiIiIgY2FsbGVkIGFmdGVy
IGZpeHR1cmUgdGVhcmRvd24sIGJ1dCBiZWZvcmUgdGhlIGNhY2hlIGlzIGNsZWFyZWQgc28KLSAg
ICB0aGUgZml4dHVyZSByZXN1bHQgY2FjaGUgYGBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHRgYCBj
YW4KLSAgICBzdGlsbCBiZSBhY2Nlc3NlZC4iIiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHRl
c3Qgc2Vzc2lvbiByZWxhdGVkIGhvb2tzCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1kZWYgcHl0
ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKLSAgICAiIiIgYmVmb3JlIHNlc3Npb24ubWFpbigp
IGlzIGNhbGxlZC4gIiIiCi0KLQotZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb24sIGV4
aXRzdGF0dXMpOgotICAgICIiIiB3aG9sZSB0ZXN0IHJ1biBmaW5pc2hlcy4gIiIiCi0KLQotZGVm
IHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgotICAgICIiIiBjYWxsZWQgYmVmb3JlIHRlc3Qg
cHJvY2VzcyBpcyBleGl0ZWQuICAiIiIKLQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaG9va3Mg
Zm9yIGN1c3RvbWl6aW5nIHRoZSBhc3NlcnQgbWV0aG9kcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LWRlZiBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlKGNvbmZpZywgb3AsIGxlZnQsIHJpZ2h0KToK
LSAgICAiIiJyZXR1cm4gZXhwbGFuYXRpb24gZm9yIGNvbXBhcmlzb25zIGluIGZhaWxpbmcgYXNz
ZXJ0IGV4cHJlc3Npb25zLgotCi0gICAgUmV0dXJuIE5vbmUgZm9yIG5vIGN1c3RvbSBleHBsYW5h
dGlvbiwgb3RoZXJ3aXNlIHJldHVybiBhIGxpc3QKLSAgICBvZiBzdHJpbmdzLiAgVGhlIHN0cmlu
Z3Mgd2lsbCBiZSBqb2luZWQgYnkgbmV3bGluZXMgYnV0IGFueSBuZXdsaW5lcwotICAgICppbiog
YSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVkLiAgTm90ZSB0aGF0IGFsbCBidXQgdGhlIGZpcnN0IGxp
bmUgd2lsbAotICAgIGJlIGluZGVudGVkIHNsaWdodGx5LCB0aGUgaW50ZW50aW9uIGlzIGZvciB0
aGUgZmlyc3QgbGluZSB0byBiZSBhIHN1bW1hcnkuCi0gICAgIiIiCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotIyBob29rcyBmb3IgaW5mbHVlbmNpbmcgcmVwb3J0aW5nIChpbnZva2VkIGZyb20gX3B5
dGVzdF90ZXJtaW5hbCkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLWRlZiBweXRlc3RfcmVwb3J0
X2hlYWRlcihjb25maWcsIHN0YXJ0ZGlyKToKLSAgICAiIiIgcmV0dXJuIGEgc3RyaW5nIG9yIGxp
c3Qgb2Ygc3RyaW5ncyB0byBiZSBkaXNwbGF5ZWQgYXMgaGVhZGVyIGluZm8gZm9yIHRlcm1pbmFs
IHJlcG9ydGluZy4KLQotICAgIDpwYXJhbSBjb25maWc6IHRoZSBweXRlc3QgY29uZmlnIG9iamVj
dC4KLSAgICA6cGFyYW0gc3RhcnRkaXI6IHB5LnBhdGggb2JqZWN0IHdpdGggdGhlIHN0YXJ0aW5n
IGRpcgotCi0gICAgLi4gbm90ZTo6Ci0KLSAgICAgICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
aW1wbGVtZW50ZWQgb25seSBpbiBwbHVnaW5zIG9yIGBgY29uZnRlc3QucHlgYAotICAgICAgICBm
aWxlcyBzaXR1YXRlZCBhdCB0aGUgdGVzdHMgcm9vdCBkaXJlY3RvcnkgZHVlIHRvIGhvdyBweXRl
c3QKLSAgICAgICAgOnJlZjpgZGlzY292ZXJzIHBsdWdpbnMgZHVyaW5nIHN0YXJ0dXAgPHBsdWdp
bm9yZGVyPmAuCi0gICAgIiIiCi0KLQotZGVmIHB5dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZpbmlz
aChjb25maWcsIHN0YXJ0ZGlyLCBpdGVtcyk6Ci0gICAgIiIiCi0gICAgLi4gdmVyc2lvbmFkZGVk
OjogMy4yCi0KLSAgICByZXR1cm4gYSBzdHJpbmcgb3IgbGlzdCBvZiBzdHJpbmdzIHRvIGJlIGRp
c3BsYXllZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCi0KLSAg
ICBUaGlzIHN0cmluZ3Mgd2lsbCBiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIHN0YW5kYXJkICJjb2xs
ZWN0ZWQgWCBpdGVtcyIgbWVzc2FnZS4KLQotICAgIDpwYXJhbSBjb25maWc6IHRoZSBweXRlc3Qg
Y29uZmlnIG9iamVjdC4KLSAgICA6cGFyYW0gc3RhcnRkaXI6IHB5LnBhdGggb2JqZWN0IHdpdGgg
dGhlIHN0YXJ0aW5nIGRpcgotICAgIDpwYXJhbSBpdGVtczogbGlzdCBvZiBweXRlc3QgaXRlbXMg
dGhhdCBhcmUgZ29pbmcgdG8gYmUgZXhlY3V0ZWQ7IHRoaXMgbGlzdCBzaG91bGQgbm90IGJlIG1v
ZGlmaWVkLgotICAgICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5
dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQpOgotICAgICIiIiByZXR1cm4gcmVzdWx0LWNh
dGVnb3J5LCBzaG9ydGxldHRlciBhbmQgdmVyYm9zZSB3b3JkIGZvciByZXBvcnRpbmcuCi0KLSAg
ICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAg
IiIiCi0KLQotZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXIsIGV4
aXRzdGF0dXMpOgotICAgICIiIiBhZGQgYWRkaXRpb25hbCBzZWN0aW9uIGluIHRlcm1pbmFsIHN1
bW1hcnkgcmVwb3J0aW5nLiAgIiIiCi0KLQotQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCi1kZWYg
cHl0ZXN0X2xvZ3dhcm5pbmcobWVzc2FnZSwgY29kZSwgbm9kZWlkLCBmc2xvY2F0aW9uKToKLSAg
ICAiIiIgcHJvY2VzcyBhIHdhcm5pbmcgc3BlY2lmaWVkIGJ5IGEgbWVzc2FnZSwgYSBjb2RlIHN0
cmluZywKLSAgICBhIG5vZGVpZCBhbmQgZnNsb2NhdGlvbiAoYm90aCBvZiB3aGljaCBtYXkgYmUg
Tm9uZQotICAgIGlmIHRoZSB3YXJuaW5nIGlzIG5vdCB0aWVkIHRvIGEgcGFydGlsYXIgbm9kZS9s
b2NhdGlvbikuIiIiCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBkb2N0ZXN0IGhvb2tzCi0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRl
c3RfZG9jdGVzdF9wcmVwYXJlX2NvbnRlbnQoY29udGVudCk6Ci0gICAgIiIiIHJldHVybiBwcm9j
ZXNzZWQgY29udGVudCBmb3IgYSBnaXZlbiBkb2N0ZXN0Ci0KLSAgICBTdG9wcyBhdCBmaXJzdCBu
b24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotIyBlcnJvciBoYW5kbGluZyBhbmQgaW50ZXJuYWwgZGVidWdnaW5nIGhvb2tzCi0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotCi1kZWYgcHl0ZXN0X2ludGVybmFsZXJyb3IoZXhjcmVwciwg
ZXhjaW5mbyk6Ci0gICAgIiIiIGNhbGxlZCBmb3IgaW50ZXJuYWwgZXJyb3JzLiAiIiIKLQotCi1k
ZWYgcHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdChleGNpbmZvKToKLSAgICAiIiIgY2FsbGVkIGZv
ciBrZXlib2FyZCBpbnRlcnJ1cHQuICIiIgotCi0KLWRlZiBweXRlc3RfZXhjZXB0aW9uX2ludGVy
YWN0KG5vZGUsIGNhbGwsIHJlcG9ydCk6Ci0gICAgIiIiY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9u
IHdhcyByYWlzZWQgd2hpY2ggY2FuIHBvdGVudGlhbGx5IGJlCi0gICAgaW50ZXJhY3RpdmVseSBo
YW5kbGVkLgotCi0gICAgVGhpcyBob29rIGlzIG9ubHkgY2FsbGVkIGlmIGFuIGV4Y2VwdGlvbiB3
YXMgcmFpc2VkCi0gICAgdGhhdCBpcyBub3QgYW4gaW50ZXJuYWwgZXhjZXB0aW9uIGxpa2UgYGBz
a2lwLkV4Y2VwdGlvbmBgLgotICAgICIiIgotCi0KLWRlZiBweXRlc3RfZW50ZXJfcGRiKGNvbmZp
Zyk6Ci0gICAgIiIiIGNhbGxlZCB1cG9uIHBkYi5zZXRfdHJhY2UoKSwgY2FuIGJlIHVzZWQgYnkg
cGx1Z2lucyB0byB0YWtlIHNwZWNpYWwKLSAgICBhY3Rpb24ganVzdCBiZWZvcmUgdGhlIHB5dGhv
biBkZWJ1Z2dlciBlbnRlcnMgaW4gaW50ZXJhY3RpdmUgbW9kZS4KLQotICAgIDphcmcgY29uZmln
OiBweXRlc3QgY29uZmlnIG9iamVjdAotICAgIDp0eXBlIGNvbmZpZzogX3B5dGVzdC5jb25maWcu
Q29uZmlnCi0gICAgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2p1bml0eG1s
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9qdW5pdHhtbC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2ZiNDBkYzM1NDg3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9qdW5pdHhtbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1MyArMCwwIEBACi0iIiIK
LSAgICByZXBvcnQgdGVzdCByZXN1bHRzIGluIEpVbml0LVhNTCBmb3JtYXQsCi0gICAgZm9yIHVz
ZSB3aXRoIEplbmtpbnMgYW5kIGJ1aWxkIGludGVncmF0aW9uIHNlcnZlcnMuCi0KLQotQmFzZWQg
b24gaW5pdGlhbCBjb2RlIGZyb20gUm9zcyBMYXdsZXkuCi0KLU91dHB1dCBjb25mb3JtcyB0byBo
dHRwczovL2dpdGh1Yi5jb20vamVua2luc2NpL3h1bml0LXBsdWdpbi9ibG9iL21hc3Rlci8KLXNy
Yy9tYWluL3Jlc291cmNlcy9vcmcvamVua2luc2NpL3BsdWdpbnMveHVuaXQvdHlwZXMvbW9kZWwv
eHNkL2p1bml0LTEwLnhzZAotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBmdW5jdG9vbHMKLWltcG9y
dCBweQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBv
cnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCi1mcm9tIF9weXRlc3QuY29uZmln
IGltcG9ydCBmaWxlbmFtZV9hcmcKLQotIyBQeXRob24gMi5YIGFuZCAzLlggY29tcGF0aWJpbGl0
eQotaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDM6Ci0gICAgZnJvbSBjb2RlY3MgaW1wb3J0IG9w
ZW4KLWVsc2U6Ci0gICAgdW5pY2hyID0gY2hyCi0gICAgdW5pY29kZSA9IHN0cgotICAgIGxvbmcg
PSBpbnQKLQotCi1jbGFzcyBKdW5pdChweS54bWwuTmFtZXNwYWNlKToKLSAgICBwYXNzCi0KLQot
IyBXZSBuZWVkIHRvIGdldCB0aGUgc3Vic2V0IG9mIHRoZSBpbnZhbGlkIHVuaWNvZGUgcmFuZ2Vz
IGFjY29yZGluZyB0bwotIyBYTUwgMS4wIHdoaWNoIGFyZSB2YWxpZCBpbiB0aGlzIHB5dGhvbiBi
dWlsZC4gIEhlbmNlIHdlIGNhbGN1bGF0ZQotIyB0aGlzIGR5bmFtaWNhbGx5IGluc3RlYWQgb2Yg
aGFyZGNvZGluZyBpdC4gIFRoZSBzcGVjIHJhbmdlIG9mIHZhbGlkCi0jIGNoYXJzIGlzOiBDaGFy
IDo6PSAjeDkgfCAjeEEgfCAjeEQgfCBbI3gyMC0jeEQ3RkZdIHwgWyN4RTAwMC0jeEZGRkRdCi0j
ICAgICAgICAgICAgICAgICAgICB8IFsjeDEwMDAwLSN4MTBGRkZGXQotX2xlZ2FsX2NoYXJzID0g
KDB4MDksIDB4MEEsIDB4MGQpCi1fbGVnYWxfcmFuZ2VzID0gKAotICAgICgweDIwLCAweDdFKSwg
KDB4ODAsIDB4RDdGRiksICgweEUwMDAsIDB4RkZGRCksICgweDEwMDAwLCAweDEwRkZGRiksCi0p
Ci1fbGVnYWxfeG1sX3JlID0gWwotICAgIHVuaWNvZGUoIiVzLSVzIikgJSAodW5pY2hyKGxvdyks
IHVuaWNocihoaWdoKSkKLSAgICBmb3IgKGxvdywgaGlnaCkgaW4gX2xlZ2FsX3JhbmdlcyBpZiBs
b3cgPCBzeXMubWF4dW5pY29kZQotXQotX2xlZ2FsX3htbF9yZSA9IFt1bmljaHIoeCkgZm9yIHgg
aW4gX2xlZ2FsX2NoYXJzXSArIF9sZWdhbF94bWxfcmUKLWlsbGVnYWxfeG1sX3JlID0gcmUuY29t
cGlsZSh1bmljb2RlKCdbXiVzXScpICUgdW5pY29kZSgnJykuam9pbihfbGVnYWxfeG1sX3JlKSkK
LWRlbCBfbGVnYWxfY2hhcnMKLWRlbCBfbGVnYWxfcmFuZ2VzCi1kZWwgX2xlZ2FsX3htbF9yZQot
Ci1fcHlfZXh0X3JlID0gcmUuY29tcGlsZShyIlwucHkkIikKLQotCi1kZWYgYmluX3htbF9lc2Nh
cGUoYXJnKToKLSAgICBkZWYgcmVwbChtYXRjaG9iaik6Ci0gICAgICAgIGkgPSBvcmQobWF0Y2hv
YmouZ3JvdXAoKSkKLSAgICAgICAgaWYgaSA8PSAweEZGOgotICAgICAgICAgICAgcmV0dXJuIHVu
aWNvZGUoJyN4JTAyWCcpICUgaQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHVu
aWNvZGUoJyN4JTA0WCcpICUgaQotCi0gICAgcmV0dXJuIHB5LnhtbC5yYXcoaWxsZWdhbF94bWxf
cmUuc3ViKHJlcGwsIHB5LnhtbC5lc2NhcGUoYXJnKSkpCi0KLQotY2xhc3MgX05vZGVSZXBvcnRl
cihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlaWQsIHhtbCk6Ci0KLSAgICAg
ICAgc2VsZi5pZCA9IG5vZGVpZAotICAgICAgICBzZWxmLnhtbCA9IHhtbAotICAgICAgICBzZWxm
LmFkZF9zdGF0cyA9IHNlbGYueG1sLmFkZF9zdGF0cwotICAgICAgICBzZWxmLmR1cmF0aW9uID0g
MAotICAgICAgICBzZWxmLnByb3BlcnRpZXMgPSBbXQotICAgICAgICBzZWxmLm5vZGVzID0gW10K
LSAgICAgICAgc2VsZi50ZXN0Y2FzZSA9IE5vbmUKLSAgICAgICAgc2VsZi5hdHRycyA9IHt9Ci0K
LSAgICBkZWYgYXBwZW5kKHNlbGYsIG5vZGUpOgotICAgICAgICBzZWxmLnhtbC5hZGRfc3RhdHMo
dHlwZShub2RlKS5fX25hbWVfXykKLSAgICAgICAgc2VsZi5ub2Rlcy5hcHBlbmQobm9kZSkKLQot
ICAgIGRlZiBhZGRfcHJvcGVydHkoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLnBy
b3BlcnRpZXMuYXBwZW5kKChzdHIobmFtZSksIGJpbl94bWxfZXNjYXBlKHZhbHVlKSkpCi0KLSAg
ICBkZWYgbWFrZV9wcm9wZXJ0aWVzX25vZGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIEp1
bml0IG5vZGUgY29udGFpbmluZyBjdXN0b20gcHJvcGVydGllcywgaWYgYW55LgotICAgICAgICAi
IiIKLSAgICAgICAgaWYgc2VsZi5wcm9wZXJ0aWVzOgotICAgICAgICAgICAgcmV0dXJuIEp1bml0
LnByb3BlcnRpZXMoWwotICAgICAgICAgICAgICAgIEp1bml0LnByb3BlcnR5KG5hbWU9bmFtZSwg
dmFsdWU9dmFsdWUpCi0gICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYucHJv
cGVydGllcwotICAgICAgICAgICAgXSkKLSAgICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgcmVj
b3JkX3Rlc3RyZXBvcnQoc2VsZiwgdGVzdHJlcG9ydCk6Ci0gICAgICAgIGFzc2VydCBub3Qgc2Vs
Zi50ZXN0Y2FzZQotICAgICAgICBuYW1lcyA9IG1hbmdsZV90ZXN0X2FkZHJlc3ModGVzdHJlcG9y
dC5ub2RlaWQpCi0gICAgICAgIGNsYXNzbmFtZXMgPSBuYW1lc1s6LTFdCi0gICAgICAgIGlmIHNl
bGYueG1sLnByZWZpeDoKLSAgICAgICAgICAgIGNsYXNzbmFtZXMuaW5zZXJ0KDAsIHNlbGYueG1s
LnByZWZpeCkKLSAgICAgICAgYXR0cnMgPSB7Ci0gICAgICAgICAgICAiY2xhc3NuYW1lIjogIi4i
LmpvaW4oY2xhc3NuYW1lcyksCi0gICAgICAgICAgICAibmFtZSI6IGJpbl94bWxfZXNjYXBlKG5h
bWVzWy0xXSksCi0gICAgICAgICAgICAiZmlsZSI6IHRlc3RyZXBvcnQubG9jYXRpb25bMF0sCi0g
ICAgICAgIH0KLSAgICAgICAgaWYgdGVzdHJlcG9ydC5sb2NhdGlvblsxXSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIGF0dHJzWyJsaW5lIl0gPSB0ZXN0cmVwb3J0LmxvY2F0aW9uWzFdCi0gICAg
ICAgIGlmIGhhc2F0dHIodGVzdHJlcG9ydCwgInVybCIpOgotICAgICAgICAgICAgYXR0cnNbInVy
bCJdID0gdGVzdHJlcG9ydC51cmwKLSAgICAgICAgc2VsZi5hdHRycyA9IGF0dHJzCi0KLSAgICBk
ZWYgdG9feG1sKHNlbGYpOgotICAgICAgICB0ZXN0Y2FzZSA9IEp1bml0LnRlc3RjYXNlKHRpbWU9
c2VsZi5kdXJhdGlvbiwgKipzZWxmLmF0dHJzKQotICAgICAgICB0ZXN0Y2FzZS5hcHBlbmQoc2Vs
Zi5tYWtlX3Byb3BlcnRpZXNfbm9kZSgpKQotICAgICAgICBmb3Igbm9kZSBpbiBzZWxmLm5vZGVz
OgotICAgICAgICAgICAgdGVzdGNhc2UuYXBwZW5kKG5vZGUpCi0gICAgICAgIHJldHVybiB0ZXN0
Y2FzZQotCi0gICAgZGVmIF9hZGRfc2ltcGxlKHNlbGYsIGtpbmQsIG1lc3NhZ2UsIGRhdGE9Tm9u
ZSk6Ci0gICAgICAgIGRhdGEgPSBiaW5feG1sX2VzY2FwZShkYXRhKQotICAgICAgICBub2RlID0g
a2luZChkYXRhLCBtZXNzYWdlPW1lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXBwZW5kKG5vZGUpCi0K
LSAgICBkZWYgd3JpdGVfY2FwdHVyZWRfb3V0cHV0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGZv
ciBjYXBuYW1lIGluICgnb3V0JywgJ2VycicpOgotICAgICAgICAgICAgY29udGVudCA9IGdldGF0
dHIocmVwb3J0LCAnY2Fwc3RkJyArIGNhcG5hbWUpCi0gICAgICAgICAgICBpZiBjb250ZW50Ogot
ICAgICAgICAgICAgICAgIHRhZyA9IGdldGF0dHIoSnVuaXQsICdzeXN0ZW0tJyArIGNhcG5hbWUp
Ci0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQodGFnKGJpbl94bWxfZXNjYXBlKGNvbnRlbnQp
KSkKLQotICAgIGRlZiBhcHBlbmRfcGFzcyhzZWxmLCByZXBvcnQpOgotICAgICAgICBzZWxmLmFk
ZF9zdGF0cygncGFzc2VkJykKLQotICAgIGRlZiBhcHBlbmRfZmFpbHVyZShzZWxmLCByZXBvcnQp
OgotICAgICAgICAjIG1zZyA9IHN0cihyZXBvcnQubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5leHRy
YWxpbmUpCi0gICAgICAgIGlmIGhhc2F0dHIocmVwb3J0LCAid2FzeGZhaWwiKToKLSAgICAgICAg
ICAgIHNlbGYuX2FkZF9zaW1wbGUoCi0gICAgICAgICAgICAgICAgSnVuaXQuc2tpcHBlZCwKLSAg
ICAgICAgICAgICAgICAieGZhaWwtbWFya2VkIHRlc3QgcGFzc2VzIHVuZXhwZWN0ZWRseSIpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHJlcG9ydC5sb25ncmVwciwgInJl
cHJjcmFzaCIpOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSByZXBvcnQubG9uZ3JlcHIucmVw
cmNyYXNoLm1lc3NhZ2UKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXBvcnQubG9uZ3Jl
cHIsICh1bmljb2RlLCBzdHIpKToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gcmVwb3J0Lmxv
bmdyZXByCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIo
cmVwb3J0LmxvbmdyZXByKQotICAgICAgICAgICAgbWVzc2FnZSA9IGJpbl94bWxfZXNjYXBlKG1l
c3NhZ2UpCi0gICAgICAgICAgICBmYWlsID0gSnVuaXQuZmFpbHVyZShtZXNzYWdlPW1lc3NhZ2Up
Ci0gICAgICAgICAgICBmYWlsLmFwcGVuZChiaW5feG1sX2VzY2FwZShyZXBvcnQubG9uZ3JlcHIp
KQotICAgICAgICAgICAgc2VsZi5hcHBlbmQoZmFpbCkKLQotICAgIGRlZiBhcHBlbmRfY29sbGVj
dF9lcnJvcihzZWxmLCByZXBvcnQpOgotICAgICAgICAjIG1zZyA9IHN0cihyZXBvcnQubG9uZ3Jl
cHIucmVwcnRyYWNlYmFjay5leHRyYWxpbmUpCi0gICAgICAgIHNlbGYuYXBwZW5kKEp1bml0LmVy
cm9yKGJpbl94bWxfZXNjYXBlKHJlcG9ydC5sb25ncmVwciksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2U9ImNvbGxlY3Rpb24gZmFpbHVyZSIpKQotCi0gICAgZGVmIGFw
cGVuZF9jb2xsZWN0X3NraXBwZWQoc2VsZiwgcmVwb3J0KToKLSAgICAgICAgc2VsZi5fYWRkX3Np
bXBsZSgKLSAgICAgICAgICAgIEp1bml0LnNraXBwZWQsICJjb2xsZWN0aW9uIHNraXBwZWQiLCBy
ZXBvcnQubG9uZ3JlcHIpCi0KLSAgICBkZWYgYXBwZW5kX2Vycm9yKHNlbGYsIHJlcG9ydCk6Ci0g
ICAgICAgIGlmIGdldGF0dHIocmVwb3J0LCAnd2hlbicsIE5vbmUpID09ICd0ZWFyZG93bic6Ci0g
ICAgICAgICAgICBtc2cgPSAidGVzdCB0ZWFyZG93biBmYWlsdXJlIgotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgbXNnID0gInRlc3Qgc2V0dXAgZmFpbHVyZSIKLSAgICAgICAgc2VsZi5fYWRk
X3NpbXBsZSgKLSAgICAgICAgICAgIEp1bml0LmVycm9yLCBtc2csIHJlcG9ydC5sb25ncmVwcikK
LQotICAgIGRlZiBhcHBlbmRfc2tpcHBlZChzZWxmLCByZXBvcnQpOgotICAgICAgICBpZiBoYXNh
dHRyKHJlcG9ydCwgIndhc3hmYWlsIik6Ci0gICAgICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKAot
ICAgICAgICAgICAgICAgIEp1bml0LnNraXBwZWQsICJleHBlY3RlZCB0ZXN0IGZhaWx1cmUiLCBy
ZXBvcnQud2FzeGZhaWwKLSAgICAgICAgICAgICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGZpbGVuYW1lLCBsaW5lbm8sIHNraXByZWFzb24gPSByZXBvcnQubG9uZ3JlcHIKLSAgICAgICAg
ICAgIGlmIHNraXByZWFzb24uc3RhcnRzd2l0aCgiU2tpcHBlZDogIik6Ci0gICAgICAgICAgICAg
ICAgc2tpcHJlYXNvbiA9IGJpbl94bWxfZXNjYXBlKHNraXByZWFzb25bOTpdKQotICAgICAgICAg
ICAgc2VsZi5hcHBlbmQoCi0gICAgICAgICAgICAgICAgSnVuaXQuc2tpcHBlZCgiJXM6JXM6ICVz
IiAlIChmaWxlbmFtZSwgbGluZW5vLCBza2lwcmVhc29uKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU9InB5dGVzdC5za2lwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2U9c2tpcHJlYXNvbikpCi0gICAgICAgIHNlbGYud3JpdGVfY2FwdHVyZWRfb3V0
cHV0KHJlcG9ydCkKLQotICAgIGRlZiBmaW5hbGl6ZShzZWxmKToKLSAgICAgICAgZGF0YSA9IHNl
bGYudG9feG1sKCkudW5pY29kZShpbmRlbnQ9MCkKLSAgICAgICAgc2VsZi5fX2RpY3RfXy5jbGVh
cigpCi0gICAgICAgIHNlbGYudG9feG1sID0gbGFtYmRhOiBweS54bWwucmF3KGRhdGEpCi0KLQot
QHB5dGVzdC5maXh0dXJlCi1kZWYgcmVjb3JkX3htbF9wcm9wZXJ0eShyZXF1ZXN0KToKLSAgICAi
IiJBZGQgZXh0cmEgeG1sIHByb3BlcnRpZXMgdG8gdGhlIHRhZyBmb3IgdGhlIGNhbGxpbmcgdGVz
dC4KLSAgICBUaGUgZml4dHVyZSBpcyBjYWxsYWJsZSB3aXRoIGBgKG5hbWUsIHZhbHVlKWBgLCB3
aXRoIHZhbHVlIGJlaW5nIGF1dG9tYXRpY2FsbHkKLSAgICB4bWwtZW5jb2RlZC4KLSAgICAiIiIK
LSAgICByZXF1ZXN0Lm5vZGUud2FybigKLSAgICAgICAgY29kZT0nQzMnLAotICAgICAgICBtZXNz
YWdlPSdyZWNvcmRfeG1sX3Byb3BlcnR5IGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlJywKLSAg
ICApCi0gICAgeG1sID0gZ2V0YXR0cihyZXF1ZXN0LmNvbmZpZywgIl94bWwiLCBOb25lKQotICAg
IGlmIHhtbCBpcyBub3QgTm9uZToKLSAgICAgICAgbm9kZV9yZXBvcnRlciA9IHhtbC5ub2RlX3Jl
cG9ydGVyKHJlcXVlc3Qubm9kZS5ub2RlaWQpCi0gICAgICAgIHJldHVybiBub2RlX3JlcG9ydGVy
LmFkZF9wcm9wZXJ0eQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBhZGRfcHJvcGVydHlfbm9vcChu
YW1lLCB2YWx1ZSk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIGFkZF9wcm9w
ZXJ0eV9ub29wCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9
IHBhcnNlci5nZXRncm91cCgidGVybWluYWwgcmVwb3J0aW5nIikKLSAgICBncm91cC5hZGRvcHRp
b24oCi0gICAgICAgICctLWp1bml0eG1sJywgJy0tanVuaXQteG1sJywKLSAgICAgICAgYWN0aW9u
PSJzdG9yZSIsCi0gICAgICAgIGRlc3Q9InhtbHBhdGgiLAotICAgICAgICBtZXRhdmFyPSJwYXRo
IiwKLSAgICAgICAgdHlwZT1mdW5jdG9vbHMucGFydGlhbChmaWxlbmFtZV9hcmcsIG9wdG5hbWU9
Ii0tanVuaXR4bWwiKSwKLSAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICBoZWxwPSJjcmVh
dGUganVuaXQteG1sIHN0eWxlIHJlcG9ydCBmaWxlIGF0IGdpdmVuIHBhdGguIikKLSAgICBncm91
cC5hZGRvcHRpb24oCi0gICAgICAgICctLWp1bml0cHJlZml4JywgJy0tanVuaXQtcHJlZml4JywK
LSAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgIG1ldGF2YXI9InN0ciIsCi0gICAgICAg
IGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0icHJlcGVuZCBwcmVmaXggdG8gY2xhc3NuYW1l
cyBpbiBqdW5pdC14bWwgb3V0cHV0IikKLSAgICBwYXJzZXIuYWRkaW5pKCJqdW5pdF9zdWl0ZV9u
YW1lIiwgIlRlc3Qgc3VpdGUgbmFtZSBmb3IgSlVuaXQgcmVwb3J0IiwgZGVmYXVsdD0icHl0ZXN0
IikKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIHhtbHBhdGggPSBjb25m
aWcub3B0aW9uLnhtbHBhdGgKLSAgICAjIHByZXZlbnQgb3BlbmluZyB4bWxsb2cgb24gc2xhdmUg
bm9kZXMgKHhkaXN0KQotICAgIGlmIHhtbHBhdGggYW5kIG5vdCBoYXNhdHRyKGNvbmZpZywgJ3Ns
YXZlaW5wdXQnKToKLSAgICAgICAgY29uZmlnLl94bWwgPSBMb2dYTUwoeG1scGF0aCwgY29uZmln
Lm9wdGlvbi5qdW5pdHByZWZpeCwgY29uZmlnLmdldGluaSgianVuaXRfc3VpdGVfbmFtZSIpKQot
ICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3Rlcihjb25maWcuX3htbCkKLQotCi1k
ZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgeG1sID0gZ2V0YXR0cihjb25maWcs
ICdfeG1sJywgTm9uZSkKLSAgICBpZiB4bWw6Ci0gICAgICAgIGRlbCBjb25maWcuX3htbAotICAg
ICAgICBjb25maWcucGx1Z2lubWFuYWdlci51bnJlZ2lzdGVyKHhtbCkKLQotCi1kZWYgbWFuZ2xl
X3Rlc3RfYWRkcmVzcyhhZGRyZXNzKToKLSAgICBwYXRoLCBwb3NzaWJsZV9vcGVuX2JyYWNrZXQs
IHBhcmFtcyA9IGFkZHJlc3MucGFydGl0aW9uKCdbJykKLSAgICBuYW1lcyA9IHBhdGguc3BsaXQo
Ijo6IikKLSAgICB0cnk6Ci0gICAgICAgIG5hbWVzLnJlbW92ZSgnKCknKQotICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgotICAgICAgICBwYXNzCi0gICAgIyBjb252ZXJ0IGZpbGUgcGF0aCB0byBkb3R0
ZWQgcGF0aAotICAgIG5hbWVzWzBdID0gbmFtZXNbMF0ucmVwbGFjZShub2Rlcy5TRVAsICcuJykK
LSAgICBuYW1lc1swXSA9IF9weV9leHRfcmUuc3ViKCIiLCBuYW1lc1swXSkKLSAgICAjIHB1dCBh
bnkgcGFyYW1zIGJhY2sKLSAgICBuYW1lc1stMV0gKz0gcG9zc2libGVfb3Blbl9icmFja2V0ICsg
cGFyYW1zCi0gICAgcmV0dXJuIG5hbWVzCi0KLQotY2xhc3MgTG9nWE1MKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2ZpbGUsIHByZWZpeCwgc3VpdGVfbmFtZT0icHl0ZXN0Iik6
Ci0gICAgICAgIGxvZ2ZpbGUgPSBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJz
KGxvZ2ZpbGUpKQotICAgICAgICBzZWxmLmxvZ2ZpbGUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBh
dGguYWJzcGF0aChsb2dmaWxlKSkKLSAgICAgICAgc2VsZi5wcmVmaXggPSBwcmVmaXgKLSAgICAg
ICAgc2VsZi5zdWl0ZV9uYW1lID0gc3VpdGVfbmFtZQotICAgICAgICBzZWxmLnN0YXRzID0gZGlj
dC5mcm9ta2V5cyhbCi0gICAgICAgICAgICAnZXJyb3InLAotICAgICAgICAgICAgJ3Bhc3NlZCcs
Ci0gICAgICAgICAgICAnZmFpbHVyZScsCi0gICAgICAgICAgICAnc2tpcHBlZCcsCi0gICAgICAg
IF0sIDApCi0gICAgICAgIHNlbGYubm9kZV9yZXBvcnRlcnMgPSB7fSAgIyBub2RlaWQgLT4gX05v
ZGVSZXBvcnRlcgotICAgICAgICBzZWxmLm5vZGVfcmVwb3J0ZXJzX29yZGVyZWQgPSBbXQotICAg
ICAgICBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzID0gW10KLSAgICAgICAgIyBMaXN0IG9mIHJlcG9y
dHMgdGhhdCBmYWlsZWQgb24gY2FsbCBidXQgdGVhcmRvd24gaXMgcGVuZGluZy4KLSAgICAgICAg
c2VsZi5vcGVuX3JlcG9ydHMgPSBbXQotICAgICAgICBzZWxmLmNudF9kb3VibGVfZmFpbF90ZXN0
cyA9IDAKLQotICAgIGRlZiBmaW5hbGl6ZShzZWxmLCByZXBvcnQpOgotICAgICAgICBub2RlaWQg
PSBnZXRhdHRyKHJlcG9ydCwgJ25vZGVpZCcsIHJlcG9ydCkKLSAgICAgICAgIyBsb2NhbCBoYWNr
IHRvIGhhbmRsZSB4ZGlzdCByZXBvcnQgb3JkZXIKLSAgICAgICAgc2xhdmVub2RlID0gZ2V0YXR0
cihyZXBvcnQsICdub2RlJywgTm9uZSkKLSAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLm5vZGVfcmVw
b3J0ZXJzLnBvcCgobm9kZWlkLCBzbGF2ZW5vZGUpKQotICAgICAgICBpZiByZXBvcnRlciBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHJlcG9ydGVyLmZpbmFsaXplKCkKLQotICAgIGRlZiBub2Rl
X3JlcG9ydGVyKHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIG5vZGVpZCA9IGdldGF0dHIocmVwb3J0
LCAnbm9kZWlkJywgcmVwb3J0KQotICAgICAgICAjIGxvY2FsIGhhY2sgdG8gaGFuZGxlIHhkaXN0
IHJlcG9ydCBvcmRlcgotICAgICAgICBzbGF2ZW5vZGUgPSBnZXRhdHRyKHJlcG9ydCwgJ25vZGUn
LCBOb25lKQotCi0gICAgICAgIGtleSA9IG5vZGVpZCwgc2xhdmVub2RlCi0KLSAgICAgICAgaWYg
a2V5IGluIHNlbGYubm9kZV9yZXBvcnRlcnM6Ci0gICAgICAgICAgICAjIFRPRE86IGJyZWFza3Mg
Zm9yIC0tZGlzdD1lYWNoCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5ub2RlX3JlcG9ydGVyc1tr
ZXldCi0KLSAgICAgICAgcmVwb3J0ZXIgPSBfTm9kZVJlcG9ydGVyKG5vZGVpZCwgc2VsZikKLQot
ICAgICAgICBzZWxmLm5vZGVfcmVwb3J0ZXJzW2tleV0gPSByZXBvcnRlcgotICAgICAgICBzZWxm
Lm5vZGVfcmVwb3J0ZXJzX29yZGVyZWQuYXBwZW5kKHJlcG9ydGVyKQotCi0gICAgICAgIHJldHVy
biByZXBvcnRlcgotCi0gICAgZGVmIGFkZF9zdGF0cyhzZWxmLCBrZXkpOgotICAgICAgICBpZiBr
ZXkgaW4gc2VsZi5zdGF0czoKLSAgICAgICAgICAgIHNlbGYuc3RhdHNba2V5XSArPSAxCi0KLSAg
ICBkZWYgX29wZW50ZXN0Y2FzZShzZWxmLCByZXBvcnQpOgotICAgICAgICByZXBvcnRlciA9IHNl
bGYubm9kZV9yZXBvcnRlcihyZXBvcnQpCi0gICAgICAgIHJlcG9ydGVyLnJlY29yZF90ZXN0cmVw
b3J0KHJlcG9ydCkKLSAgICAgICAgcmV0dXJuIHJlcG9ydGVyCi0KLSAgICBkZWYgcHl0ZXN0X3J1
bnRlc3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgICIiImhhbmRsZSBhIHNldHVw
L2NhbGwvdGVhcmRvd24gcmVwb3J0LCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZQotICAgICAg
ICB4bWwgdGFncyBhcyBuZWNlc3NhcnkuCi0KLSAgICAgICAgbm90ZTogZHVlIHRvIHBsdWdpbnMg
bGlrZSB4ZGlzdCwgdGhpcyBob29rIG1heSBiZSBjYWxsZWQgaW4gaW50ZXJsYWNlZAotICAgICAg
ICBvcmRlciB3aXRoIHJlcG9ydHMgZnJvbSBvdGhlciBub2Rlcy4gZm9yIGV4YW1wbGU6Ci0KLSAg
ICAgICAgdXN1YWwgY2FsbCBvcmRlcjoKLSAgICAgICAgICAgIC0+IHNldHVwIG5vZGUxCi0gICAg
ICAgICAgICAtPiBjYWxsIG5vZGUxCi0gICAgICAgICAgICAtPiB0ZWFyZG93biBub2RlMQotICAg
ICAgICAgICAgLT4gc2V0dXAgbm9kZTIKLSAgICAgICAgICAgIC0+IGNhbGwgbm9kZTIKLSAgICAg
ICAgICAgIC0+IHRlYXJkb3duIG5vZGUyCi0KLSAgICAgICAgcG9zc2libGUgY2FsbCBvcmRlciBp
biB4ZGlzdDoKLSAgICAgICAgICAgIC0+IHNldHVwIG5vZGUxCi0gICAgICAgICAgICAtPiBjYWxs
IG5vZGUxCi0gICAgICAgICAgICAtPiBzZXR1cCBub2RlMgotICAgICAgICAgICAgLT4gY2FsbCBu
b2RlMgotICAgICAgICAgICAgLT4gdGVhcmRvd24gbm9kZTIKLSAgICAgICAgICAgIC0+IHRlYXJk
b3duIG5vZGUxCi0gICAgICAgICIiIgotICAgICAgICBjbG9zZV9yZXBvcnQgPSBOb25lCi0gICAg
ICAgIGlmIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAgICAgICBpZiByZXBvcnQud2hlbiA9PSAiY2Fs
bCI6ICAjIGlnbm9yZSBzZXR1cC90ZWFyZG93bgotICAgICAgICAgICAgICAgIHJlcG9ydGVyID0g
c2VsZi5fb3BlbnRlc3RjYXNlKHJlcG9ydCkKLSAgICAgICAgICAgICAgICByZXBvcnRlci5hcHBl
bmRfcGFzcyhyZXBvcnQpCi0gICAgICAgIGVsaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAg
IGlmIHJlcG9ydC53aGVuID09ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICAgICAgIyBUaGUgZm9s
bG93aW5nIHZhcnMgYXJlIG5lZWRlZCB3aGVuIHhkaXN0IHBsdWdpbiBpcyB1c2VkCi0gICAgICAg
ICAgICAgICAgcmVwb3J0X3dpZCA9IGdldGF0dHIocmVwb3J0LCAid29ya2VyX2lkIiwgTm9uZSkK
LSAgICAgICAgICAgICAgICByZXBvcnRfaWkgPSBnZXRhdHRyKHJlcG9ydCwgIml0ZW1faW5kZXgi
LCBOb25lKQotICAgICAgICAgICAgICAgIGNsb3NlX3JlcG9ydCA9IG5leHQoCi0gICAgICAgICAg
ICAgICAgICAgIChyZXAgZm9yIHJlcCBpbiBzZWxmLm9wZW5fcmVwb3J0cwotICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlcC5ub2RlaWQgPT0gcmVwb3J0Lm5vZGVpZCBhbmQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBnZXRhdHRyKHJlcCwgIml0ZW1faW5kZXgiLCBOb25lKSA9PSByZXBvcnRf
aWkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihyZXAsICJ3b3JrZXJfaWQi
LCBOb25lKSA9PSByZXBvcnRfd2lkCi0gICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgICAgICAgICAgKSwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiBjbG9zZV9yZXBvcnQ6
Ci0gICAgICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBvcGVuIG5ldyB0ZXN0Y2FzZSBpbiBj
YXNlIHdlIGhhdmUgZmFpbHVyZSBpbgotICAgICAgICAgICAgICAgICAgICAjIGNhbGwgYW5kIGVy
cm9yIGluIHRlYXJkb3duIGluIG9yZGVyIHRvIGZvbGxvdyBqdW5pdAotICAgICAgICAgICAgICAg
ICAgICAjIHNjaGVtYQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmFsaXplKGNsb3NlX3Jl
cG9ydCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jbnRfZG91YmxlX2ZhaWxfdGVzdHMgKz0g
MQotICAgICAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLl9vcGVudGVzdGNhc2UocmVwb3J0KQotICAg
ICAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gImNhbGwiOgotICAgICAgICAgICAgICAgIHJlcG9y
dGVyLmFwcGVuZF9mYWlsdXJlKHJlcG9ydCkKLSAgICAgICAgICAgICAgICBzZWxmLm9wZW5fcmVw
b3J0cy5hcHBlbmQocmVwb3J0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBy
ZXBvcnRlci5hcHBlbmRfZXJyb3IocmVwb3J0KQotICAgICAgICBlbGlmIHJlcG9ydC5za2lwcGVk
OgotICAgICAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLl9vcGVudGVzdGNhc2UocmVwb3J0KQotICAg
ICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX3NraXBwZWQocmVwb3J0KQotICAgICAgICBzZWxmLnVw
ZGF0ZV90ZXN0Y2FzZV9kdXJhdGlvbihyZXBvcnQpCi0gICAgICAgIGlmIHJlcG9ydC53aGVuID09
ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICByZXBvcnRlciA9IHNlbGYuX29wZW50ZXN0Y2FzZShy
ZXBvcnQpCi0gICAgICAgICAgICByZXBvcnRlci53cml0ZV9jYXB0dXJlZF9vdXRwdXQocmVwb3J0
KQotICAgICAgICAgICAgc2VsZi5maW5hbGl6ZShyZXBvcnQpCi0gICAgICAgICAgICByZXBvcnRf
d2lkID0gZ2V0YXR0cihyZXBvcnQsICJ3b3JrZXJfaWQiLCBOb25lKQotICAgICAgICAgICAgcmVw
b3J0X2lpID0gZ2V0YXR0cihyZXBvcnQsICJpdGVtX2luZGV4IiwgTm9uZSkKLSAgICAgICAgICAg
IGNsb3NlX3JlcG9ydCA9IG5leHQoCi0gICAgICAgICAgICAgICAgKHJlcCBmb3IgcmVwIGluIHNl
bGYub3Blbl9yZXBvcnRzCi0gICAgICAgICAgICAgICAgIGlmIChyZXAubm9kZWlkID09IHJlcG9y
dC5ub2RlaWQgYW5kCi0gICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHJlcCwgIml0ZW1faW5k
ZXgiLCBOb25lKSA9PSByZXBvcnRfaWkgYW5kCi0gICAgICAgICAgICAgICAgICAgICBnZXRhdHRy
KHJlcCwgIndvcmtlcl9pZCIsIE5vbmUpID09IHJlcG9ydF93aWQKLSAgICAgICAgICAgICAgICAg
ICAgICkKLSAgICAgICAgICAgICAgICAgKSwgTm9uZSkKLSAgICAgICAgICAgIGlmIGNsb3NlX3Jl
cG9ydDoKLSAgICAgICAgICAgICAgICBzZWxmLm9wZW5fcmVwb3J0cy5yZW1vdmUoY2xvc2VfcmVw
b3J0KQotCi0gICAgZGVmIHVwZGF0ZV90ZXN0Y2FzZV9kdXJhdGlvbihzZWxmLCByZXBvcnQpOgot
ICAgICAgICAiIiJhY2N1bXVsYXRlcyB0b3RhbCBkdXJhdGlvbiBmb3Igbm9kZWlkIGZyb20gZ2l2
ZW4gcmVwb3J0IGFuZCB1cGRhdGVzCi0gICAgICAgIHRoZSBKdW5pdC50ZXN0Y2FzZSB3aXRoIHRo
ZSBuZXcgdG90YWwgaWYgYWxyZWFkeSBjcmVhdGVkLgotICAgICAgICAiIiIKLSAgICAgICAgcmVw
b3J0ZXIgPSBzZWxmLm5vZGVfcmVwb3J0ZXIocmVwb3J0KQotICAgICAgICByZXBvcnRlci5kdXJh
dGlvbiArPSBnZXRhdHRyKHJlcG9ydCwgJ2R1cmF0aW9uJywgMC4wKQotCi0gICAgZGVmIHB5dGVz
dF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIG5vdCByZXBvcnQucGFz
c2VkOgotICAgICAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLl9vcGVudGVzdGNhc2UocmVwb3J0KQot
ICAgICAgICAgICAgaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAgICAgICByZXBvcnRlci5h
cHBlbmRfY29sbGVjdF9lcnJvcihyZXBvcnQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIHJlcG9ydGVyLmFwcGVuZF9jb2xsZWN0X3NraXBwZWQocmVwb3J0KQotCi0gICAgZGVm
IHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIpOgotICAgICAgICByZXBvcnRlciA9
IHNlbGYubm9kZV9yZXBvcnRlcignaW50ZXJuYWwnKQotICAgICAgICByZXBvcnRlci5hdHRycy51
cGRhdGUoY2xhc3NuYW1lPSJweXRlc3QiLCBuYW1lPSdpbnRlcm5hbCcpCi0gICAgICAgIHJlcG9y
dGVyLl9hZGRfc2ltcGxlKEp1bml0LmVycm9yLCAnaW50ZXJuYWwgZXJyb3InLCBleGNyZXByKQot
Ci0gICAgZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc3VpdGVf
c3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0KLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2go
c2VsZik6Ci0gICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRo
KHNlbGYubG9nZmlsZSkpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcm5hbWUpOgot
ICAgICAgICAgICAgb3MubWFrZWRpcnMoZGlybmFtZSkKLSAgICAgICAgbG9nZmlsZSA9IG9wZW4o
c2VsZi5sb2dmaWxlLCAndycsIGVuY29kaW5nPSd1dGYtOCcpCi0gICAgICAgIHN1aXRlX3N0b3Bf
dGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHN1aXRlX3RpbWVfZGVsdGEgPSBzdWl0ZV9zdG9w
X3RpbWUgLSBzZWxmLnN1aXRlX3N0YXJ0X3RpbWUKLQotICAgICAgICBudW10ZXN0cyA9IChzZWxm
LnN0YXRzWydwYXNzZWQnXSArIHNlbGYuc3RhdHNbJ2ZhaWx1cmUnXSArCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuc3RhdHNbJ3NraXBwZWQnXSArIHNlbGYuc3RhdHNbJ2Vycm9yJ10gLQotICAg
ICAgICAgICAgICAgICAgICBzZWxmLmNudF9kb3VibGVfZmFpbF90ZXN0cykKLSAgICAgICAgbG9n
ZmlsZS53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nKQotCi0g
ICAgICAgIGxvZ2ZpbGUud3JpdGUoSnVuaXQudGVzdHN1aXRlKAotICAgICAgICAgICAgc2VsZi5f
Z2V0X2dsb2JhbF9wcm9wZXJ0aWVzX25vZGUoKSwKLSAgICAgICAgICAgIFt4LnRvX3htbCgpIGZv
ciB4IGluIHNlbGYubm9kZV9yZXBvcnRlcnNfb3JkZXJlZF0sCi0gICAgICAgICAgICBuYW1lPXNl
bGYuc3VpdGVfbmFtZSwKLSAgICAgICAgICAgIGVycm9ycz1zZWxmLnN0YXRzWydlcnJvciddLAot
ICAgICAgICAgICAgZmFpbHVyZXM9c2VsZi5zdGF0c1snZmFpbHVyZSddLAotICAgICAgICAgICAg
c2tpcHM9c2VsZi5zdGF0c1snc2tpcHBlZCddLAotICAgICAgICAgICAgdGVzdHM9bnVtdGVzdHMs
Ci0gICAgICAgICAgICB0aW1lPSIlLjNmIiAlIHN1aXRlX3RpbWVfZGVsdGEsICkudW5pY29kZShp
bmRlbnQ9MCkpCi0gICAgICAgIGxvZ2ZpbGUuY2xvc2UoKQotCi0gICAgZGVmIHB5dGVzdF90ZXJt
aW5hbF9zdW1tYXJ5KHNlbGYsIHRlcm1pbmFscmVwb3J0ZXIpOgotICAgICAgICB0ZXJtaW5hbHJl
cG9ydGVyLndyaXRlX3NlcCgiLSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJnZW5lcmF0ZWQgeG1sIGZpbGU6ICVzIiAlIChzZWxmLmxvZ2ZpbGUpKQotCi0gICAgZGVmIGFk
ZF9nbG9iYWxfcHJvcGVydHkoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLmdsb2Jh
bF9wcm9wZXJ0aWVzLmFwcGVuZCgoc3RyKG5hbWUpLCBiaW5feG1sX2VzY2FwZSh2YWx1ZSkpKQot
Ci0gICAgZGVmIF9nZXRfZ2xvYmFsX3Byb3BlcnRpZXNfbm9kZShzZWxmKToKLSAgICAgICAgIiIi
UmV0dXJuIGEgSnVuaXQgbm9kZSBjb250YWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzLCBpZiBhbnku
Ci0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzOgotICAgICAg
ICAgICAgcmV0dXJuIEp1bml0LnByb3BlcnRpZXMoCi0gICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICBKdW5pdC5wcm9wZXJ0eShuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKQotICAg
ICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5nbG9iYWxfcHJvcGVydGll
cwotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuICcnCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2xvZ2dpbmcucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2xvZ2dpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNGRiMjVh
ZDQ0My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbG9nZ2luZy5weQor
KysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFi
c29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBsb2dnaW5n
Ci1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcsIGNvbnRleHRtYW5hZ2VyCi1pbXBvcnQg
c3lzCi1pbXBvcnQgc2l4Ci0KLWltcG9ydCBweXRlc3QKLWltcG9ydCBweQotCi0KLURFRkFVTFRf
TE9HX0ZPUk1BVCA9ICclKGZpbGVuYW1lKS0yNXMgJShsaW5lbm8pNGQgJShsZXZlbG5hbWUpLThz
ICUobWVzc2FnZSlzJwotREVGQVVMVF9MT0dfREFURV9GT1JNQVQgPSAnJUg6JU06JVMnCi0KLQot
ZGVmIGdldF9vcHRpb25faW5pKGNvbmZpZywgKm5hbWVzKToKLSAgICBmb3IgbmFtZSBpbiBuYW1l
czoKLSAgICAgICAgcmV0ID0gY29uZmlnLmdldG9wdGlvbihuYW1lKSAgIyAnZGVmYXVsdCcgYXJn
IHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQKLSAgICAgICAgaWYgcmV0IGlzIE5vbmU6Ci0gICAgICAg
ICAgICByZXQgPSBjb25maWcuZ2V0aW5pKG5hbWUpCi0gICAgICAgIGlmIHJldDoKLSAgICAgICAg
ICAgIHJldHVybiByZXQKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgICIi
IkFkZCBvcHRpb25zIHRvIGNvbnRyb2wgbG9nIGNhcHR1cmluZy4iIiIKLSAgICBncm91cCA9IHBh
cnNlci5nZXRncm91cCgnbG9nZ2luZycpCi0KLSAgICBkZWYgYWRkX29wdGlvbl9pbmkob3B0aW9u
LCBkZXN0LCBkZWZhdWx0PU5vbmUsIHR5cGU9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBwYXJz
ZXIuYWRkaW5pKGRlc3QsIGRlZmF1bHQ9ZGVmYXVsdCwgdHlwZT10eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J2RlZmF1bHQgdmFsdWUgZm9yICcgKyBvcHRpb24pCi0gICAgICAgIGdy
b3VwLmFkZG9wdGlvbihvcHRpb24sIGRlc3Q9ZGVzdCwgKiprd2FyZ3MpCi0KLSAgICBhZGRfb3B0
aW9uX2luaSgKLSAgICAgICAgJy0tbm8tcHJpbnQtbG9ncycsCi0gICAgICAgIGRlc3Q9J2xvZ19w
cmludCcsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD1GYWxzZSwgZGVmYXVsdD1UcnVlLAot
ICAgICAgICB0eXBlPSdib29sJywKLSAgICAgICAgaGVscD0nZGlzYWJsZSBwcmludGluZyBjYXVn
aHQgbG9ncyBvbiBmYWlsZWQgdGVzdHMuJykKLSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAg
Jy0tbG9nLWxldmVsJywKLSAgICAgICAgZGVzdD0nbG9nX2xldmVsJywgZGVmYXVsdD1Ob25lLAot
ICAgICAgICBoZWxwPSdsb2dnaW5nIGxldmVsIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlJykK
LSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWZvcm1hdCcsCi0gICAgICAgIGRl
c3Q9J2xvZ19mb3JtYXQnLCBkZWZhdWx0PURFRkFVTFRfTE9HX0ZPUk1BVCwKLSAgICAgICAgaGVs
cD0nbG9nIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9v
cHRpb25faW5pKAotICAgICAgICAnLS1sb2ctZGF0ZS1mb3JtYXQnLAotICAgICAgICBkZXN0PSds
b2dfZGF0ZV9mb3JtYXQnLCBkZWZhdWx0PURFRkFVTFRfTE9HX0RBVEVfRk9STUFULAotICAgICAg
ICBoZWxwPSdsb2cgZGF0ZSBmb3JtYXQgYXMgdXNlZCBieSB0aGUgbG9nZ2luZyBtb2R1bGUuJykK
LSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWNsaS1sZXZlbCcsCi0gICAgICAg
IGRlc3Q9J2xvZ19jbGlfbGV2ZWwnLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9J2NsaSBs
b2dnaW5nIGxldmVsLicpCi0gICAgYWRkX29wdGlvbl9pbmkoCi0gICAgICAgICctLWxvZy1jbGkt
Zm9ybWF0JywKLSAgICAgICAgZGVzdD0nbG9nX2NsaV9mb3JtYXQnLCBkZWZhdWx0PU5vbmUsCi0g
ICAgICAgIGhlbHA9J2xvZyBmb3JtYXQgYXMgdXNlZCBieSB0aGUgbG9nZ2luZyBtb2R1bGUuJykK
LSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWNsaS1kYXRlLWZvcm1hdCcsCi0g
ICAgICAgIGRlc3Q9J2xvZ19jbGlfZGF0ZV9mb3JtYXQnLCBkZWZhdWx0PU5vbmUsCi0gICAgICAg
IGhlbHA9J2xvZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4nKQot
ICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctZmlsZScsCi0gICAgICAgIGRlc3Q9
J2xvZ19maWxlJywgZGVmYXVsdD1Ob25lLAotICAgICAgICBoZWxwPSdwYXRoIHRvIGEgZmlsZSB3
aGVuIGxvZ2dpbmcgd2lsbCBiZSB3cml0dGVuIHRvLicpCi0gICAgYWRkX29wdGlvbl9pbmkoCi0g
ICAgICAgICctLWxvZy1maWxlLWxldmVsJywKLSAgICAgICAgZGVzdD0nbG9nX2ZpbGVfbGV2ZWwn
LCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9J2xvZyBmaWxlIGxvZ2dpbmcgbGV2ZWwuJykK
LSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWZpbGUtZm9ybWF0JywKLSAgICAg
ICAgZGVzdD0nbG9nX2ZpbGVfZm9ybWF0JywgZGVmYXVsdD1ERUZBVUxUX0xPR19GT1JNQVQsCi0g
ICAgICAgIGhlbHA9J2xvZyBmb3JtYXQgYXMgdXNlZCBieSB0aGUgbG9nZ2luZyBtb2R1bGUuJykK
LSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWZpbGUtZGF0ZS1mb3JtYXQnLAot
ICAgICAgICBkZXN0PSdsb2dfZmlsZV9kYXRlX2Zvcm1hdCcsIGRlZmF1bHQ9REVGQVVMVF9MT0df
REFURV9GT1JNQVQsCi0gICAgICAgIGhlbHA9J2xvZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRo
ZSBsb2dnaW5nIG1vZHVsZS4nKQotCi0KLUBjb250ZXh0bWFuYWdlcgotZGVmIGxvZ2dpbmdfdXNp
bmdfaGFuZGxlcihoYW5kbGVyLCBsb2dnZXI9Tm9uZSk6Ci0gICAgIiIiQ29udGV4dCBtYW5hZ2Vy
IHRoYXQgc2FmZWx5IHJlZ2lzdGVycyBhIGdpdmVuIGhhbmRsZXIuIiIiCi0gICAgbG9nZ2VyID0g
bG9nZ2VyIG9yIGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcikKLQotICAgIGlmIGhhbmRsZXIgaW4g
bG9nZ2VyLmhhbmRsZXJzOiAgIyByZWVudHJhbmN5Ci0gICAgICAgICMgQWRkaW5nIHRoZSBzYW1l
IGhhbmRsZXIgdHdpY2Ugd291bGQgY29uZnVzZSBsb2dnaW5nIHN5c3RlbS4KLSAgICAgICAgIyBK
dXN0IGRvbid0IGRvIHRoYXQuCi0gICAgICAgIHlpZWxkCi0gICAgZWxzZToKLSAgICAgICAgbG9n
Z2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeWllbGQK
LSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRs
ZXIpCi0KLQotQGNvbnRleHRtYW5hZ2VyCi1kZWYgY2F0Y2hpbmdfbG9ncyhoYW5kbGVyLCBmb3Jt
YXR0ZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgIGxldmVsPWxvZ2dpbmcuTk9UU0VULCBsb2dn
ZXI9Tm9uZSk6Ci0gICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgcHJlcGFyZXMgdGhlIHdob2xl
IGxvZ2dpbmcgbWFjaGluZXJ5IHByb3Blcmx5LiIiIgotICAgIGxvZ2dlciA9IGxvZ2dlciBvciBs
b2dnaW5nLmdldExvZ2dlcihsb2dnZXIpCi0KLSAgICBpZiBmb3JtYXR0ZXIgaXMgbm90IE5vbmU6
Ci0gICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKLSAgICBoYW5kbGVyLnNl
dExldmVsKGxldmVsKQotCi0gICAgd2l0aCBsb2dnaW5nX3VzaW5nX2hhbmRsZXIoaGFuZGxlciwg
bG9nZ2VyKToKLSAgICAgICAgb3JpZ19sZXZlbCA9IGxvZ2dlci5sZXZlbAotICAgICAgICBsb2dn
ZXIuc2V0TGV2ZWwobWluKG9yaWdfbGV2ZWwsIGxldmVsKSkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgeWllbGQgaGFuZGxlcgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgbG9nZ2Vy
LnNldExldmVsKG9yaWdfbGV2ZWwpCi0KLQotY2xhc3MgTG9nQ2FwdHVyZUhhbmRsZXIobG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKToKLSAgICAiIiJBIGxvZ2dpbmcgaGFuZGxlciB0aGF0IHN0b3JlcyBs
b2cgcmVjb3JkcyBhbmQgdGhlIGxvZyB0ZXh0LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IGxvZyBoYW5kbGVyLiIiIgotICAgICAgICBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIuX19pbml0X18oc2VsZiwgcHkuaW8uVGV4dElPKCkpCi0gICAgICAg
IHNlbGYucmVjb3JkcyA9IFtdCi0KLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAg
ICAiIiJLZWVwIHRoZSBsb2cgcmVjb3JkcyBpbiBhIGxpc3QgaW4gYWRkaXRpb24gdG8gdGhlIGxv
ZyB0ZXh0LiIiIgotICAgICAgICBzZWxmLnJlY29yZHMuYXBwZW5kKHJlY29yZCkKLSAgICAgICAg
bG9nZ2luZy5TdHJlYW1IYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQotCi0KLWNsYXNzIExvZ0Nh
cHR1cmVGaXh0dXJlKG9iamVjdCk6Ci0gICAgIiIiUHJvdmlkZXMgYWNjZXNzIGFuZCBjb250cm9s
IG9mIGxvZyBjYXB0dXJpbmcuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbSk6Ci0g
ICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgZnVuY2FyZy4iIiIKLSAgICAgICAgc2VsZi5faXRlbSA9
IGl0ZW0KLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoYW5kbGVyKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5faXRlbS5jYXRjaF9sb2dfaGFuZGxlcgotCi0gICAgQHByb3BlcnR5Ci0gICAg
ZGVmIHRleHQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxvZyB0ZXh0LiIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5oYW5kbGVyLnN0cmVhbS5nZXR2YWx1ZSgpCi0KLSAgICBAcHJvcGVy
dHkKLSAgICBkZWYgcmVjb3JkcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbGlzdCBv
ZiBsb2cgcmVjb3Jkcy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlci5yZWNvcmRzCi0K
LSAgICBAcHJvcGVydHkKLSAgICBkZWYgcmVjb3JkX3R1cGxlcyhzZWxmKToKLSAgICAgICAgIiIi
UmV0dXJucyBhIGxpc3Qgb2YgYSBzdHJpcGVkIGRvd24gdmVyc2lvbiBvZiBsb2cgcmVjb3JkcyBp
bnRlbmRlZAotICAgICAgICBmb3IgdXNlIGluIGFzc2VydGlvbiBjb21wYXJpc29uLgotCi0gICAg
ICAgIFRoZSBmb3JtYXQgb2YgdGhlIHR1cGxlIGlzOgotCi0gICAgICAgICAgICAobG9nZ2VyX25h
bWUsIGxvZ19sZXZlbCwgbWVzc2FnZSkKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbKHIu
bmFtZSwgci5sZXZlbG5vLCByLmdldE1lc3NhZ2UoKSkgZm9yIHIgaW4gc2VsZi5yZWNvcmRzXQot
Ci0gICAgZGVmIGNsZWFyKHNlbGYpOgotICAgICAgICAiIiJSZXNldCB0aGUgbGlzdCBvZiBsb2cg
cmVjb3Jkcy4iIiIKLSAgICAgICAgc2VsZi5oYW5kbGVyLnJlY29yZHMgPSBbXQotCi0gICAgZGVm
IHNldF9sZXZlbChzZWxmLCBsZXZlbCwgbG9nZ2VyPU5vbmUpOgotICAgICAgICAiIiJTZXRzIHRo
ZSBsZXZlbCBmb3IgY2FwdHVyaW5nIG9mIGxvZ3MuCi0KLSAgICAgICAgQnkgZGVmYXVsdCwgdGhl
IGxldmVsIGlzIHNldCBvbiB0aGUgaGFuZGxlciB1c2VkIHRvIGNhcHR1cmUKLSAgICAgICAgbG9n
cy4gU3BlY2lmeSBhIGxvZ2dlciBuYW1lIHRvIGluc3RlYWQgc2V0IHRoZSBsZXZlbCBvZiBhbnkK
LSAgICAgICAgbG9nZ2VyLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbG9nZ2VyIGlzIE5vbmU6
Ci0gICAgICAgICAgICBsb2dnZXIgPSBzZWxmLmhhbmRsZXIKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcikKLSAgICAgICAgbG9nZ2Vy
LnNldExldmVsKGxldmVsKQotCi0gICAgQGNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIGF0X2xldmVs
KHNlbGYsIGxldmVsLCBsb2dnZXI9Tm9uZSk6Ci0gICAgICAgICIiIkNvbnRleHQgbWFuYWdlciB0
aGF0IHNldHMgdGhlIGxldmVsIGZvciBjYXB0dXJpbmcgb2YgbG9ncy4KLQotICAgICAgICBCeSBk
ZWZhdWx0LCB0aGUgbGV2ZWwgaXMgc2V0IG9uIHRoZSBoYW5kbGVyIHVzZWQgdG8gY2FwdHVyZQot
ICAgICAgICBsb2dzLiBTcGVjaWZ5IGEgbG9nZ2VyIG5hbWUgdG8gaW5zdGVhZCBzZXQgdGhlIGxl
dmVsIG9mIGFueQotICAgICAgICBsb2dnZXIuCi0gICAgICAgICIiIgotICAgICAgICBpZiBsb2dn
ZXIgaXMgTm9uZToKLSAgICAgICAgICAgIGxvZ2dlciA9IHNlbGYuaGFuZGxlcgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIobG9nZ2VyKQotCi0g
ICAgICAgIG9yaWdfbGV2ZWwgPSBsb2dnZXIubGV2ZWwKLSAgICAgICAgbG9nZ2VyLnNldExldmVs
KGxldmVsKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZAotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKG9yaWdfbGV2ZWwpCi0KLQotQHB5dGVzdC5m
aXh0dXJlCi1kZWYgY2FwbG9nKHJlcXVlc3QpOgotICAgICIiIkFjY2VzcyBhbmQgY29udHJvbCBs
b2cgY2FwdHVyaW5nLgotCi0gICAgQ2FwdHVyZWQgbG9ncyBhcmUgYXZhaWxhYmxlIHRocm91Z2gg
dGhlIGZvbGxvd2luZyBtZXRob2RzOjoKLQotICAgICogY2FwbG9nLnRleHQoKSAgICAgICAgICAt
PiBzdHJpbmcgY29udGFpbmluZyBmb3JtYXR0ZWQgbG9nIG91dHB1dAotICAgICogY2FwbG9nLnJl
Y29yZHMoKSAgICAgICAtPiBsaXN0IG9mIGxvZ2dpbmcuTG9nUmVjb3JkIGluc3RhbmNlcwotICAg
ICogY2FwbG9nLnJlY29yZF90dXBsZXMoKSAtPiBsaXN0IG9mIChsb2dnZXJfbmFtZSwgbGV2ZWws
IG1lc3NhZ2UpIHR1cGxlcwotICAgICIiIgotICAgIHJldHVybiBMb2dDYXB0dXJlRml4dHVyZShy
ZXF1ZXN0Lm5vZGUpCi0KLQotZGVmIGdldF9hY3R1YWxfbG9nX2xldmVsKGNvbmZpZywgKnNldHRp
bmdfbmFtZXMpOgotICAgICIiIlJldHVybiB0aGUgYWN0dWFsIGxvZ2dpbmcgbGV2ZWwuIiIiCi0K
LSAgICBmb3Igc2V0dGluZ19uYW1lIGluIHNldHRpbmdfbmFtZXM6Ci0gICAgICAgIGxvZ19sZXZl
bCA9IGNvbmZpZy5nZXRvcHRpb24oc2V0dGluZ19uYW1lKQotICAgICAgICBpZiBsb2dfbGV2ZWwg
aXMgTm9uZToKLSAgICAgICAgICAgIGxvZ19sZXZlbCA9IGNvbmZpZy5nZXRpbmkoc2V0dGluZ19u
YW1lKQotICAgICAgICBpZiBsb2dfbGV2ZWw6Ci0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgaXNpbnN0YW5jZShsb2dfbGV2ZWwsIHNpeC5zdHJp
bmdfdHlwZXMpOgotICAgICAgICBsb2dfbGV2ZWwgPSBsb2dfbGV2ZWwudXBwZXIoKQotICAgIHRy
eToKLSAgICAgICAgcmV0dXJuIGludChnZXRhdHRyKGxvZ2dpbmcsIGxvZ19sZXZlbCwgbG9nX2xl
dmVsKSkKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgIyBQeXRob24gbG9nZ2luZyBk
b2VzIG5vdCByZWNvZ25pc2UgdGhpcyBhcyBhIGxvZ2dpbmcgbGV2ZWwKLSAgICAgICAgcmFpc2Ug
cHl0ZXN0LlVzYWdlRXJyb3IoCi0gICAgICAgICAgICAiJ3swfScgaXMgbm90IHJlY29nbml6ZWQg
YXMgYSBsb2dnaW5nIGxldmVsIG5hbWUgZm9yICIKLSAgICAgICAgICAgICInezF9Jy4gUGxlYXNl
IGNvbnNpZGVyIHBhc3NpbmcgdGhlICIKLSAgICAgICAgICAgICJsb2dnaW5nIGxldmVsIG51bSBp
bnN0ZWFkLiIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGxvZ19sZXZlbCwKLSAgICAgICAgICAg
ICAgICBzZXR0aW5nX25hbWUpKQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0g
ICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoTG9nZ2luZ1BsdWdpbihjb25maWcpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnaW5nLXBsdWdpbicpCi0KLQot
Y2xhc3MgTG9nZ2luZ1BsdWdpbihvYmplY3QpOgotICAgICIiIkF0dGFjaGVzIHRvIHRoZSBsb2dn
aW5nIG1vZHVsZSBhbmQgY2FwdHVyZXMgbG9nIG1lc3NhZ2VzIGZvciBlYWNoIHRlc3QuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgIiIiQ3JlYXRl
cyBhIG5ldyBwbHVnaW4gdG8gY2FwdHVyZSBsb2cgbWVzc2FnZXMuCi0KLSAgICAgICAgVGhlIGZv
cm1hdHRlciBjYW4gYmUgc2FmZWx5IHNoYXJlZCBhY3Jvc3MgYWxsIGhhbmRsZXJzIHNvCi0gICAg
ICAgIGNyZWF0ZSBhIHNpbmdsZSBvbmUgZm9yIHRoZSBlbnRpcmUgdGVzdCBzZXNzaW9uIGhlcmUu
Ci0gICAgICAgICIiIgotICAgICAgICBzZWxmLmxvZ19jbGlfbGV2ZWwgPSBnZXRfYWN0dWFsX2xv
Z19sZXZlbCgKLSAgICAgICAgICAgIGNvbmZpZywgJ2xvZ19jbGlfbGV2ZWwnLCAnbG9nX2xldmVs
Jykgb3IgbG9nZ2luZy5XQVJOSU5HCi0KLSAgICAgICAgc2VsZi5wcmludF9sb2dzID0gZ2V0X29w
dGlvbl9pbmkoY29uZmlnLCAnbG9nX3ByaW50JykKLSAgICAgICAgc2VsZi5mb3JtYXR0ZXIgPSBs
b2dnaW5nLkZvcm1hdHRlcigKLSAgICAgICAgICAgIGdldF9vcHRpb25faW5pKGNvbmZpZywgJ2xv
Z19mb3JtYXQnKSwKLSAgICAgICAgICAgIGdldF9vcHRpb25faW5pKGNvbmZpZywgJ2xvZ19kYXRl
X2Zvcm1hdCcpKQotCi0gICAgICAgIGxvZ19jbGlfaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFu
ZGxlcihzeXMuc3RkZXJyKQotICAgICAgICBsb2dfY2xpX2Zvcm1hdCA9IGdldF9vcHRpb25faW5p
KAotICAgICAgICAgICAgY29uZmlnLCAnbG9nX2NsaV9mb3JtYXQnLCAnbG9nX2Zvcm1hdCcpCi0g
ICAgICAgIGxvZ19jbGlfZGF0ZV9mb3JtYXQgPSBnZXRfb3B0aW9uX2luaSgKLSAgICAgICAgICAg
IGNvbmZpZywgJ2xvZ19jbGlfZGF0ZV9mb3JtYXQnLCAnbG9nX2RhdGVfZm9ybWF0JykKLSAgICAg
ICAgbG9nX2NsaV9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigKLSAgICAgICAgICAgIGxv
Z19jbGlfZm9ybWF0LAotICAgICAgICAgICAgZGF0ZWZtdD1sb2dfY2xpX2RhdGVfZm9ybWF0KQot
ICAgICAgICBzZWxmLmxvZ19jbGlfaGFuZGxlciA9IGxvZ19jbGlfaGFuZGxlciAgIyBuZWVkZWQg
Zm9yIGEgc2luZ2xlIHVuaXR0ZXN0Ci0gICAgICAgIHNlbGYubGl2ZV9sb2dzID0gY2F0Y2hpbmdf
bG9ncyhsb2dfY2xpX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JtYXR0ZXI9bG9nX2NsaV9mb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbD1zZWxmLmxvZ19jbGlfbGV2ZWwpCi0KLSAgICAgICAgbG9n
X2ZpbGUgPSBnZXRfb3B0aW9uX2luaShjb25maWcsICdsb2dfZmlsZScpCi0gICAgICAgIGlmIGxv
Z19maWxlOgotICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9sZXZlbCA9IGdldF9hY3R1YWxfbG9n
X2xldmVsKAotICAgICAgICAgICAgICAgIGNvbmZpZywgJ2xvZ19maWxlX2xldmVsJykgb3IgbG9n
Z2luZy5XQVJOSU5HCi0KLSAgICAgICAgICAgIGxvZ19maWxlX2Zvcm1hdCA9IGdldF9vcHRpb25f
aW5pKAotICAgICAgICAgICAgICAgIGNvbmZpZywgJ2xvZ19maWxlX2Zvcm1hdCcsICdsb2dfZm9y
bWF0JykKLSAgICAgICAgICAgIGxvZ19maWxlX2RhdGVfZm9ybWF0ID0gZ2V0X29wdGlvbl9pbmko
Ci0gICAgICAgICAgICAgICAgY29uZmlnLCAnbG9nX2ZpbGVfZGF0ZV9mb3JtYXQnLCAnbG9nX2Rh
dGVfZm9ybWF0JykKLSAgICAgICAgICAgIHNlbGYubG9nX2ZpbGVfaGFuZGxlciA9IGxvZ2dpbmcu
RmlsZUhhbmRsZXIoCi0gICAgICAgICAgICAgICAgbG9nX2ZpbGUsCi0gICAgICAgICAgICAgICAg
IyBFYWNoIHB5dGVzdCBydW50ZXN0cyBzZXNzaW9uIHdpbGwgd3JpdGUgdG8gYSBjbGVhbiBsb2dm
aWxlCi0gICAgICAgICAgICAgICAgbW9kZT0ndycpCi0gICAgICAgICAgICBsb2dfZmlsZV9mb3Jt
YXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigKLSAgICAgICAgICAgICAgICBsb2dfZmlsZV9mb3Jt
YXQsCi0gICAgICAgICAgICAgICAgZGF0ZWZtdD1sb2dfZmlsZV9kYXRlX2Zvcm1hdCkKLSAgICAg
ICAgICAgIHNlbGYubG9nX2ZpbGVfaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nX2ZpbGVfZm9ybWF0
dGVyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyID0g
Tm9uZQotCi0gICAgQGNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIF9ydW50ZXN0X2ZvcihzZWxmLCBp
dGVtLCB3aGVuKToKLSAgICAgICAgIiIiSW1wbGVtZW50cyB0aGUgaW50ZXJuYWxzIG9mIHB5dGVz
dF9ydW50ZXN0X3h4eCgpIGhvb2suIiIiCi0gICAgICAgIHdpdGggY2F0Y2hpbmdfbG9ncyhMb2dD
YXB0dXJlSGFuZGxlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyPXNl
bGYuZm9ybWF0dGVyKSBhcyBsb2dfaGFuZGxlcjoKLSAgICAgICAgICAgIGl0ZW0uY2F0Y2hfbG9n
X2hhbmRsZXIgPSBsb2dfaGFuZGxlcgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHlpZWxkICAjIHJ1biB0ZXN0Ci0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAg
IGRlbCBpdGVtLmNhdGNoX2xvZ19oYW5kbGVyCi0KLSAgICAgICAgICAgIGlmIHNlbGYucHJpbnRf
bG9nczoKLSAgICAgICAgICAgICAgICAjIEFkZCBhIGNhcHR1cmVkIGxvZyBzZWN0aW9uIHRvIHRo
ZSByZXBvcnQuCi0gICAgICAgICAgICAgICAgbG9nID0gbG9nX2hhbmRsZXIuc3RyZWFtLmdldHZh
bHVlKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIGl0ZW0uYWRkX3JlcG9ydF9zZWN0aW9uKHdo
ZW4sICdsb2cnLCBsb2cpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUp
Ci0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKHNlbGYsIGl0ZW0pOgotICAgICAgICB3aXRo
IHNlbGYuX3J1bnRlc3RfZm9yKGl0ZW0sICdzZXR1cCcpOgotICAgICAgICAgICAgeWllbGQKLQot
ICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1
bnRlc3RfY2FsbChzZWxmLCBpdGVtKToKLSAgICAgICAgd2l0aCBzZWxmLl9ydW50ZXN0X2Zvcihp
dGVtLCAnY2FsbCcpOgotICAgICAgICAgICAgeWllbGQKLQotICAgIEBweXRlc3QuaG9va2ltcGwo
aG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oc2VsZiwg
aXRlbSk6Ci0gICAgICAgIHdpdGggc2VsZi5fcnVudGVzdF9mb3IoaXRlbSwgJ3RlYXJkb3duJyk6
Ci0gICAgICAgICAgICB5aWVsZAotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1U
cnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdGxvb3Aoc2VsZiwgc2Vzc2lvbik6Ci0gICAgICAg
ICIiIlJ1bnMgYWxsIGNvbGxlY3RlZCB0ZXN0IGl0ZW1zLiIiIgotICAgICAgICB3aXRoIHNlbGYu
bGl2ZV9sb2dzOgotICAgICAgICAgICAgaWYgc2VsZi5sb2dfZmlsZV9oYW5kbGVyIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhzZWxmLmxvZ19maWxlX2hhbmRsZXIp
OgotICAgICAgICAgICAgICAgICAgICB3aXRoIGNhdGNoaW5nX2xvZ3Moc2VsZi5sb2dfZmlsZV9o
YW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9c2Vs
Zi5sb2dfZmlsZV9sZXZlbCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAgIyBydW4g
YWxsIHRoZSB0ZXN0cwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB5aWVsZCAg
IyBydW4gYWxsIHRoZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYWlu
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYWluLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNTU1NDA5OGRhYzIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L21haW4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MjEgKzAsMCBAQAotIiIiIGNvcmUgaW1w
bGVtZW50YXRpb24gb2YgdGVzdGluZyBwcm9jZXNzOiBpbml0LCBzZXNzaW9uLCBydW50ZXN0IGxv
b3AuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9u
LCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCBz
aXgKLWltcG9ydCBzeXMKLQotaW1wb3J0IF9weXRlc3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9k
ZXMKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBvcnQgcHkKLXRyeToKLSAgICBmcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZyBhcyBNYXBwaW5nTWl4aW4KLWV4Y2VwdCBJbXBv
cnRFcnJvcjoKLSAgICBmcm9tIFVzZXJEaWN0IGltcG9ydCBEaWN0TWl4aW4gYXMgTWFwcGluZ01p
eGluCi0KLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGRpcmVjdG9yeV9hcmcsIFVzYWdlRXJy
b3IsIGhvb2tpbXBsCi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGV4aXQKLWZyb20gX3B5
dGVzdC5ydW5uZXIgaW1wb3J0IGNvbGxlY3Rfb25lX25vZGUKLQotdHJhY2ViYWNrY3V0ZGlyID0g
cHkucGF0aC5sb2NhbChfcHl0ZXN0Ll9fZmlsZV9fKS5kaXJwYXRoKCkKLQotIyBleGl0Y29kZXMg
Zm9yIHRoZSBjb21tYW5kIGxpbmUKLUVYSVRfT0sgPSAwCi1FWElUX1RFU1RTRkFJTEVEID0gMQot
RVhJVF9JTlRFUlJVUFRFRCA9IDIKLUVYSVRfSU5URVJOQUxFUlJPUiA9IDMKLUVYSVRfVVNBR0VF
UlJPUiA9IDQKLUVYSVRfTk9URVNUU0NPTExFQ1RFRCA9IDUKLQotCi1kZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgotICAgIHBhcnNlci5hZGRpbmkoIm5vcmVjdXJzZWRpcnMiLCAiZGlyZWN0
b3J5IHBhdHRlcm5zIHRvIGF2b2lkIGZvciByZWN1cnNpb24iLAotICAgICAgICAgICAgICAgICAg
dHlwZT0iYXJncyIsIGRlZmF1bHQ9WycuKicsICdidWlsZCcsICdkaXN0JywgJ0NWUycsICdfZGFy
Y3MnLCAne2FyY2h9JywgJyouZWdnJywgJ3ZlbnYnXSkKLSAgICBwYXJzZXIuYWRkaW5pKCJ0ZXN0
cGF0aHMiLCAiZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciB0ZXN0cyB3aGVuIG5vIGZpbGVzIG9y
IGRpcmVjdG9yaWVzIGFyZSBnaXZlbiBpbiB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjb21tYW5kIGxpbmUuIiwKLSAgICAgICAgICAgICAgICAgIHR5cGU9ImFyZ3MiLCBk
ZWZhdWx0PVtdKQotICAgICMgcGFyc2VyLmFkZGluaSgiZGlycGF0dGVybnMiLAotICAgICMgICAg
InBhdHRlcm5zIHNwZWNpZnlpbmcgcG9zc2libGUgbG9jYXRpb25zIG9mIHRlc3QgZmlsZXMiLAot
ICAgICMgICAgdHlwZT0ibGluZWxpc3QiLCBkZWZhdWx0PVsiKiovdGVzdF8qLnR4dCIsCi0gICAg
IyAgICAgICAgICAgICIqKi90ZXN0XyoucHkiLCAiKiovKl90ZXN0LnB5Il0KLSAgICAjICkKLSAg
ICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIsICJydW5uaW5nIGFuZCBzZWxlY3Rp
b24gb3B0aW9ucyIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLXgnLCAnLS1leGl0Zmlyc3QnLCBh
Y3Rpb249InN0b3JlX2NvbnN0IiwKLSAgICAgICAgICAgICAgICAgICAgIGRlc3Q9Im1heGZhaWwi
LCBjb25zdD0xLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXhpdCBpbnN0YW50bHkgb24g
Zmlyc3QgZXJyb3Igb3IgZmFpbGVkIHRlc3QuIiksCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLS1t
YXhmYWlsJywgbWV0YXZhcj0ibnVtIiwKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3Rv
cmUiLCB0eXBlPWludCwgZGVzdD0ibWF4ZmFpbCIsIGRlZmF1bHQ9MCwKLSAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9ImV4aXQgYWZ0ZXIgZmlyc3QgbnVtIGZhaWx1cmVzIG9yIGVycm9ycy4iKQot
ICAgIGdyb3VwLl9hZGRvcHRpb24oJy0tc3RyaWN0JywgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9Im1hcmtzIG5vdCByZWdpc3RlcmVkIGluIGNvbmZpZ3Vy
YXRpb24gZmlsZSByYWlzZSBlcnJvcnMuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCItYyIsIG1l
dGF2YXI9ImZpbGUiLCB0eXBlPXN0ciwgZGVzdD0iaW5pZmlsZW5hbWUiLAotICAgICAgICAgICAg
ICAgICAgICAgaGVscD0ibG9hZCBjb25maWd1cmF0aW9uIGZyb20gYGZpbGVgIGluc3RlYWQgb2Yg
dHJ5aW5nIHRvIGxvY2F0ZSBvbmUgb2YgdGhlIGltcGxpY2l0ICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgImNvbmZpZ3VyYXRpb24gZmlsZXMuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCIt
LWNvbnRpbnVlLW9uLWNvbGxlY3Rpb24tZXJyb3JzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGRlc3Q9ImNvbnRpbnVlX29uX2NvbGxl
Y3Rpb25fZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZvcmNlIHRlc3QgZXhl
Y3V0aW9uIGV2ZW4gaWYgY29sbGVjdGlvbiBlcnJvcnMgb2NjdXIuIikKLQotICAgIGdyb3VwID0g
cGFyc2VyLmdldGdyb3VwKCJjb2xsZWN0IiwgImNvbGxlY3Rpb24iKQotICAgIGdyb3VwLmFkZG9w
dGlvbignLS1jb2xsZWN0b25seScsICctLWNvbGxlY3Qtb25seScsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgY29sbGVjdCB0ZXN0cywgZG9uJ3Qg
ZXhlY3V0ZSB0aGVtLiIpLAotICAgIGdyb3VwLmFkZG9wdGlvbignLS1weWFyZ3MnLCBhY3Rpb249
InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJ0cnkgdG8gaW50ZXJwcmV0
IGFsbCBhcmd1bWVudHMgYXMgcHl0aG9uIHBhY2thZ2VzLiIpCi0gICAgZ3JvdXAuYWRkb3B0aW9u
KCItLWlnbm9yZSIsIGFjdGlvbj0iYXBwZW5kIiwgbWV0YXZhcj0icGF0aCIsCi0gICAgICAgICAg
ICAgICAgICAgIGhlbHA9Imlnbm9yZSBwYXRoIGR1cmluZyBjb2xsZWN0aW9uIChtdWx0aS1hbGxv
d2VkKS4iKQotICAgICMgd2hlbiBjaGFuZ2luZyB0aGlzIHRvIC0tY29uZi1jdXQtZGlyLCBjb25m
aWcucHkgQ29uZnRlc3Quc2V0aW5pdGlhbAotICAgICMgbmVlZHMgdXBncmFkaW5nIGFzIHdlbGwK
LSAgICBncm91cC5hZGRvcHRpb24oJy0tY29uZmN1dGRpcicsIGRlc3Q9ImNvbmZjdXRkaXIiLCBk
ZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9ImRpciIsIHR5cGU9ZnVu
Y3Rvb2xzLnBhcnRpYWwoZGlyZWN0b3J5X2FyZywgb3B0bmFtZT0iLS1jb25mY3V0ZGlyIiksCi0g
ICAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgbG9hZCBjb25mdGVzdC5weSdzIHJlbGF0aXZl
IHRvIHNwZWNpZmllZCBkaXIuIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tbm9jb25mdGVzdCcs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9Im5vY29uZnRl
c3QiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJEb24ndCBsb2Fk
IGFueSBjb25mdGVzdC5weSBmaWxlcy4iKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1rZWVwZHVw
bGljYXRlcycsICctLWtlZXAtZHVwbGljYXRlcycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAg
ICAgICAgICAgICAgICAgIGRlc3Q9ImtlZXBkdXBsaWNhdGVzIiwgZGVmYXVsdD1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgaGVscD0iS2VlcCBkdXBsaWNhdGUgdGVzdHMuIikKLSAgICBncm91
cC5hZGRvcHRpb24oJy0tY29sbGVjdC1pbi12aXJ0dWFsZW52JywgYWN0aW9uPSdzdG9yZV90cnVl
JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29sbGVjdF9pbl92aXJ0dWFsZW52JywgZGVm
YXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgaWdub3JlIHRlc3Rz
IGluIGEgbG9jYWwgdmlydHVhbGVudiBkaXJlY3RvcnkiKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIu
Z2V0Z3JvdXAoImRlYnVnY29uZmlnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVz
dCBzZXNzaW9uIGRlYnVnZ2luZyBhbmQgY29uZmlndXJhdGlvbiIpCi0gICAgZ3JvdXAuYWRkb3B0
aW9uKCctLWJhc2V0ZW1wJywgZGVzdD0iYmFzZXRlbXAiLCBkZWZhdWx0PU5vbmUsIG1ldGF2YXI9
ImRpciIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9ImJhc2UgdGVtcG9yYXJ5IGRpcmVjdG9y
eSBmb3IgdGhpcyB0ZXN0IHJ1bi4iKQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6
Ci0gICAgX19pbXBvcnRfXygncHl0ZXN0JykuY29uZmlnID0gY29uZmlnICAjIGNvbXBhdGliaWx0
aXkKLQotCi1kZWYgd3JhcF9zZXNzaW9uKGNvbmZpZywgZG9pdCk6Ci0gICAgIiIiU2tlbGV0b24g
Y29tbWFuZCBsaW5lIHByb2dyYW0iIiIKLSAgICBzZXNzaW9uID0gU2Vzc2lvbihjb25maWcpCi0g
ICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gRVhJVF9PSwotICAgIGluaXRzdGF0ZSA9IDAKLSAgICB0
cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbmZpZy5fZG9fY29uZmlndXJlKCkKLSAg
ICAgICAgICAgIGluaXRzdGF0ZSA9IDEKLSAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9z
ZXNzaW9uc3RhcnQoc2Vzc2lvbj1zZXNzaW9uKQotICAgICAgICAgICAgaW5pdHN0YXRlID0gMgot
ICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gZG9pdChjb25maWcsIHNlc3Npb24pIG9y
IDAKLSAgICAgICAgZXhjZXB0IFVzYWdlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZQotICAgICAg
ICBleGNlcHQgRmFpbGVkOgotICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gRVhJVF9U
RVNUU0ZBSUxFRAotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAg
ICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKLSAgICAgICAgICAgIGlm
IGluaXRzdGF0ZSA8IDIgYW5kIGlzaW5zdGFuY2UoZXhjaW5mby52YWx1ZSwgZXhpdC5FeGNlcHRp
b24pOgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3swfTogezF9XG4nLmZvcm1h
dCgKLSAgICAgICAgICAgICAgICAgICAgZXhjaW5mby50eXBlbmFtZSwgZXhjaW5mby52YWx1ZS5t
c2cpKQotICAgICAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdChl
eGNpbmZvPWV4Y2luZm8pCi0gICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFWElUX0lO
VEVSUlVQVEVECi0gICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAgICAgZXhjaW5mbyA9
IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCi0gICAgICAgICAgICBjb25maWcubm90aWZ5
X2V4Y2VwdGlvbihleGNpbmZvLCBjb25maWcub3B0aW9uKQotICAgICAgICAgICAgc2Vzc2lvbi5l
eGl0c3RhdHVzID0gRVhJVF9JTlRFUk5BTEVSUk9SCi0gICAgICAgICAgICBpZiBleGNpbmZvLmVy
cmlzaW5zdGFuY2UoU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgibWFpbmxvb3A6IGNhdWdodCBTcHVyaW91cyBTeXN0ZW1FeGl0IVxuIikKLQotICAgIGZpbmFs
bHk6Ci0gICAgICAgIGV4Y2luZm8gPSBOb25lICAjIEV4cGxpY2l0bHkgYnJlYWsgcmVmZXJlbmNl
IGN5Y2xlLgotICAgICAgICBzZXNzaW9uLnN0YXJ0ZGlyLmNoZGlyKCkKLSAgICAgICAgaWYgaW5p
dHN0YXRlID49IDI6Ci0gICAgICAgICAgICBjb25maWcuaG9vay5weXRlc3Rfc2Vzc2lvbmZpbmlz
aCgKLSAgICAgICAgICAgICAgICBzZXNzaW9uPXNlc3Npb24sCi0gICAgICAgICAgICAgICAgZXhp
dHN0YXR1cz1zZXNzaW9uLmV4aXRzdGF0dXMpCi0gICAgICAgIGNvbmZpZy5fZW5zdXJlX3VuY29u
ZmlndXJlKCkKLSAgICByZXR1cm4gc2Vzc2lvbi5leGl0c3RhdHVzCi0KLQotZGVmIHB5dGVzdF9j
bWRsaW5lX21haW4oY29uZmlnKToKLSAgICByZXR1cm4gd3JhcF9zZXNzaW9uKGNvbmZpZywgX21h
aW4pCi0KLQotZGVmIF9tYWluKGNvbmZpZywgc2Vzc2lvbik6Ci0gICAgIiIiIGRlZmF1bHQgY29t
bWFuZCBsaW5lIHByb3RvY29sIGZvciBpbml0aWFsaXphdGlvbiwgc2Vzc2lvbiwKLSAgICBydW5u
aW5nIHRlc3RzIGFuZCByZXBvcnRpbmcuICIiIgotICAgIGNvbmZpZy5ob29rLnB5dGVzdF9jb2xs
ZWN0aW9uKHNlc3Npb249c2Vzc2lvbikKLSAgICBjb25maWcuaG9vay5weXRlc3RfcnVudGVzdGxv
b3Aoc2Vzc2lvbj1zZXNzaW9uKQotCi0gICAgaWYgc2Vzc2lvbi50ZXN0c2ZhaWxlZDoKLSAgICAg
ICAgcmV0dXJuIEVYSVRfVEVTVFNGQUlMRUQKLSAgICBlbGlmIHNlc3Npb24udGVzdHNjb2xsZWN0
ZWQgPT0gMDoKLSAgICAgICAgcmV0dXJuIEVYSVRfTk9URVNUU0NPTExFQ1RFRAotCi0KLWRlZiBw
eXRlc3RfY29sbGVjdGlvbihzZXNzaW9uKToKLSAgICByZXR1cm4gc2Vzc2lvbi5wZXJmb3JtX2Nv
bGxlY3QoKQotCi0KLWRlZiBweXRlc3RfcnVudGVzdGxvb3Aoc2Vzc2lvbik6Ci0gICAgaWYgKHNl
c3Npb24udGVzdHNmYWlsZWQgYW5kCi0gICAgICAgICAgICBub3Qgc2Vzc2lvbi5jb25maWcub3B0
aW9uLmNvbnRpbnVlX29uX2NvbGxlY3Rpb25fZXJyb3JzKToKLSAgICAgICAgcmFpc2Ugc2Vzc2lv
bi5JbnRlcnJ1cHRlZCgKLSAgICAgICAgICAgICIlZCBlcnJvcnMgZHVyaW5nIGNvbGxlY3Rpb24i
ICUgc2Vzc2lvbi50ZXN0c2ZhaWxlZCkKLQotICAgIGlmIHNlc3Npb24uY29uZmlnLm9wdGlvbi5j
b2xsZWN0b25seToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGZvciBpLCBpdGVtIGluIGVu
dW1lcmF0ZShzZXNzaW9uLml0ZW1zKToKLSAgICAgICAgbmV4dGl0ZW0gPSBzZXNzaW9uLml0ZW1z
W2kgKyAxXSBpZiBpICsgMSA8IGxlbihzZXNzaW9uLml0ZW1zKSBlbHNlIE5vbmUKLSAgICAgICAg
aXRlbS5jb25maWcuaG9vay5weXRlc3RfcnVudGVzdF9wcm90b2NvbChpdGVtPWl0ZW0sIG5leHRp
dGVtPW5leHRpdGVtKQotICAgICAgICBpZiBzZXNzaW9uLnNob3VsZGZhaWw6Ci0gICAgICAgICAg
ICByYWlzZSBzZXNzaW9uLkZhaWxlZChzZXNzaW9uLnNob3VsZGZhaWwpCi0gICAgICAgIGlmIHNl
c3Npb24uc2hvdWxkc3RvcDoKLSAgICAgICAgICAgIHJhaXNlIHNlc3Npb24uSW50ZXJydXB0ZWQo
c2Vzc2lvbi5zaG91bGRzdG9wKQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIF9pbl92ZW52KHBh
dGgpOgotICAgICIiIkF0dGVtcHRzIHRvIGRldGVjdCBpZiBgYHBhdGhgYCBpcyB0aGUgcm9vdCBv
ZiBhIFZpcnR1YWwgRW52aXJvbm1lbnQgYnkKLSAgICBjaGVja2luZyBmb3IgdGhlIGV4aXN0ZW5j
ZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWN0aXZhdGUgc2NyaXB0IiIiCi0gICAgYmluZGlyID0gcGF0
aC5qb2luKCdTY3JpcHRzJyBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgZWxzZSAn
YmluJykKLSAgICBpZiBub3QgYmluZGlyLmV4aXN0cygpOgotICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICBhY3RpdmF0ZXMgPSAoJ2FjdGl2YXRlJywgJ2FjdGl2YXRlLmNzaCcsICdhY3RpdmF0ZS5m
aXNoJywKLSAgICAgICAgICAgICAgICAgJ0FjdGl2YXRlJywgJ0FjdGl2YXRlLmJhdCcsICdBY3Rp
dmF0ZS5wczEnKQotICAgIHJldHVybiBhbnkoW2ZuYW1lLmJhc2VuYW1lIGluIGFjdGl2YXRlcyBm
b3IgZm5hbWUgaW4gYmluZGlyLmxpc3RkaXIoKV0pCi0KLQotZGVmIHB5dGVzdF9pZ25vcmVfY29s
bGVjdChwYXRoLCBjb25maWcpOgotICAgIGlnbm9yZV9wYXRocyA9IGNvbmZpZy5fZ2V0Y29uZnRl
c3RfcGF0aGxpc3QoImNvbGxlY3RfaWdub3JlIiwgcGF0aD1wYXRoLmRpcnBhdGgoKSkKLSAgICBp
Z25vcmVfcGF0aHMgPSBpZ25vcmVfcGF0aHMgb3IgW10KLSAgICBleGNsdWRlb3B0ID0gY29uZmln
LmdldG9wdGlvbigiaWdub3JlIikKLSAgICBpZiBleGNsdWRlb3B0OgotICAgICAgICBpZ25vcmVf
cGF0aHMuZXh0ZW5kKFtweS5wYXRoLmxvY2FsKHgpIGZvciB4IGluIGV4Y2x1ZGVvcHRdKQotCi0g
ICAgaWYgcHkucGF0aC5sb2NhbChwYXRoKSBpbiBpZ25vcmVfcGF0aHM6Ci0gICAgICAgIHJldHVy
biBUcnVlCi0KLSAgICBhbGxvd19pbl92ZW52ID0gY29uZmlnLmdldG9wdGlvbigiY29sbGVjdF9p
bl92aXJ0dWFsZW52IikKLSAgICBpZiBfaW5fdmVudihwYXRoKSBhbmQgbm90IGFsbG93X2luX3Zl
bnY6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFNraXAgZHVwbGljYXRlIHBhdGhzLgot
ICAgIGtlZXBkdXBsaWNhdGVzID0gY29uZmlnLmdldG9wdGlvbigia2VlcGR1cGxpY2F0ZXMiKQot
ICAgIGR1cGxpY2F0ZV9wYXRocyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9kdXBsaWNhdGVwYXRo
cwotICAgIGlmIG5vdCBrZWVwZHVwbGljYXRlczoKLSAgICAgICAgaWYgcGF0aCBpbiBkdXBsaWNh
dGVfcGF0aHM6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZHVwbGljYXRlX3BhdGhzLmFkZChwYXRoKQotCi0gICAgcmV0dXJuIEZhbHNlCi0KLQot
Y2xhc3MgRlNIb29rUHJveHk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzcGF0aCwgcG0sIHJl
bW92ZV9tb2RzKToKLSAgICAgICAgc2VsZi5mc3BhdGggPSBmc3BhdGgKLSAgICAgICAgc2VsZi5w
bSA9IHBtCi0gICAgICAgIHNlbGYucmVtb3ZlX21vZHMgPSByZW1vdmVfbW9kcwotCi0gICAgZGVm
IF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgotICAgICAgICB4ID0gc2VsZi5wbS5zdWJzZXRfaG9v
a19jYWxsZXIobmFtZSwgcmVtb3ZlX3BsdWdpbnM9c2VsZi5yZW1vdmVfbW9kcykKLSAgICAgICAg
c2VsZi5fX2RpY3RfX1tuYW1lXSA9IHgKLSAgICAgICAgcmV0dXJuIHgKLQotCi1jbGFzcyBfQ29t
cGF0UHJvcGVydHkob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAg
ICAgIHNlbGYubmFtZSA9IG5hbWUKLQotICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgb3duZXIp
OgotICAgICAgICBpZiBvYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAg
ICAgICAgIyBUT0RPOiByZWVuYWJsZSBpbiB0aGUgZmVhdHVyZXMgYnJhbmNoCi0gICAgICAgICMg
d2FybmluZ3Mud2FybigKLSAgICAgICAgIyAgICAgInVzYWdlIG9mIHtvd25lciFyfS57bmFtZX0g
aXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBweXRlc3Que25hbWV9IGluc3RlYWQiLmZvcm1hdCgK
LSAgICAgICAgIyAgICAgICAgIG5hbWU9c2VsZi5uYW1lLCBvd25lcj10eXBlKG93bmVyKS5fX25h
bWVfXyksCi0gICAgICAgICMgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2
ZWw9MikKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoX19pbXBvcnRfXygncHl0ZXN0JyksIHNlbGYu
bmFtZSkKLQotCi1jbGFzcyBOb2RlS2V5d29yZHMoTWFwcGluZ01peGluKToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbm9kZSk6Ci0gICAgICAgIHNlbGYubm9kZSA9IG5vZGUKLSAgICAgICAgc2Vs
Zi5wYXJlbnQgPSBub2RlLnBhcmVudAotICAgICAgICBzZWxmLl9tYXJrZXJzID0ge25vZGUubmFt
ZTogVHJ1ZX0KLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbWFya2Vyc1trZXldCi0gICAgICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKLSAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcmVudC5rZXl3b3Jkc1trZXld
Ci0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYu
X21hcmtlcnNba2V5XSA9IHZhbHVlCi0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToK
LSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IGRlbGV0ZSBrZXkgaW4ga2V5d29yZHMg
ZGljdCIpCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIHNlZW4gPSBzZXQoc2Vs
Zi5fbWFya2VycykKLSAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICBzZWVuLnVwZGF0ZShzZWxmLnBhcmVudC5rZXl3b3JkcykKLSAgICAgICAgcmV0dXJuIGl0
ZXIoc2VlbikKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNl
bGYuX19pdGVyX18oKSkKLQotICAgIGRlZiBrZXlzKHNlbGYpOgotICAgICAgICByZXR1cm4gbGlz
dChzZWxmKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxOb2Rl
S2V5d29yZHMgZm9yIG5vZGUgJXM+IiAlIChzZWxmLm5vZGUsICkKLQotCi1jbGFzcyBOb2RlKG9i
amVjdCk6Ci0gICAgIiIiIGJhc2UgY2xhc3MgZm9yIENvbGxlY3RvciBhbmQgSXRlbSB0aGUgdGVz
dCBjb2xsZWN0aW9uIHRyZWUuCi0gICAgQ29sbGVjdG9yIHN1YmNsYXNzZXMgaGF2ZSBjaGlsZHJl
biwgSXRlbXMgYXJlIHRlcm1pbmFsIG5vZGVzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHBhcmVudD1Ob25lLCBjb25maWc9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKLSAgICAgICAg
IzogYSB1bmlxdWUgbmFtZSB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBwYXJlbnQgbm9kZQotICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICAgICAgIzogdGhlIHBhcmVudCBjb2xsZWN0b3Ig
bm9kZS4KLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAjOiB0aGUgcHl0
ZXN0IGNvbmZpZyBvYmplY3QKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcgb3IgcGFyZW50
LmNvbmZpZwotCi0gICAgICAgICM6IHRoZSBzZXNzaW9uIHRoaXMgbm9kZSBpcyBwYXJ0IG9mCi0g
ICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24gb3IgcGFyZW50LnNlc3Npb24KLQotICAgICAg
ICAjOiBmaWxlc3lzdGVtIHBhdGggd2hlcmUgdGhpcyBub2RlIHdhcyBjb2xsZWN0ZWQgZnJvbSAo
Y2FuIGJlIE5vbmUpCi0gICAgICAgIHNlbGYuZnNwYXRoID0gZ2V0YXR0cihwYXJlbnQsICdmc3Bh
dGgnLCBOb25lKQotCi0gICAgICAgICM6IGtleXdvcmRzL21hcmtlcnMgY29sbGVjdGVkIGZyb20g
YWxsIHNjb3BlcwotICAgICAgICBzZWxmLmtleXdvcmRzID0gTm9kZUtleXdvcmRzKHNlbGYpCi0K
LSAgICAgICAgIzogYWxsb3cgYWRkaW5nIG9mIGV4dHJhIGtleXdvcmRzIHRvIHVzZSBmb3IgbWF0
Y2hpbmcKLSAgICAgICAgc2VsZi5leHRyYV9rZXl3b3JkX21hdGNoZXMgPSBzZXQoKQotCi0gICAg
ICAgICMgdXNlZCBmb3Igc3RvcmluZyBhcnRpZmljaWFsIGZpeHR1cmVkZWZzIGZvciBkaXJlY3Qg
cGFyYW1ldHJpemF0aW9uCi0gICAgICAgIHNlbGYuX25hbWUycHNldWRvZml4dHVyZWRlZiA9IHt9
Ci0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgaWhvb2soc2VsZik6Ci0gICAgICAgICIiIiBmc3Bh
dGggc2Vuc2l0aXZlIGhvb2sgcHJveHkgdXNlZCB0byBjYWxsIHB5dGVzdCBob29rcyIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5zZXNzaW9uLmdldGhvb2twcm94eShzZWxmLmZzcGF0aCkKLQotICAg
IE1vZHVsZSA9IF9Db21wYXRQcm9wZXJ0eSgiTW9kdWxlIikKLSAgICBDbGFzcyA9IF9Db21wYXRQ
cm9wZXJ0eSgiQ2xhc3MiKQotICAgIEluc3RhbmNlID0gX0NvbXBhdFByb3BlcnR5KCJJbnN0YW5j
ZSIpCi0gICAgRnVuY3Rpb24gPSBfQ29tcGF0UHJvcGVydHkoIkZ1bmN0aW9uIikKLSAgICBGaWxl
ID0gX0NvbXBhdFByb3BlcnR5KCJGaWxlIikKLSAgICBJdGVtID0gX0NvbXBhdFByb3BlcnR5KCJJ
dGVtIikKLQotICAgIGRlZiBfZ2V0Y3VzdG9tY2xhc3Moc2VsZiwgbmFtZSk6Ci0gICAgICAgIG1h
eWJlX2NvbXBhdHByb3AgPSBnZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUpCi0gICAgICAgIGlmIGlz
aW5zdGFuY2UobWF5YmVfY29tcGF0cHJvcCwgX0NvbXBhdFByb3BlcnR5KToKLSAgICAgICAgICAg
IHJldHVybiBnZXRhdHRyKF9faW1wb3J0X18oJ3B5dGVzdCcpLCBuYW1lKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgY2xzID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgIyBU
T0RPOiByZWVuYWJsZSBpbiB0aGUgZmVhdHVyZXMgYnJhbmNoCi0gICAgICAgICAgICAjIHdhcm5p
bmdzLndhcm4oInVzZSBvZiBub2RlLiVzIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICMg
ICAgInVzZSBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKC4uLikgdG8gY3JlYXRlIGN1c3RvbSAi
Ci0gICAgICAgICAgICAjICAgICJjb2xsZWN0aW9uIG5vZGVzIiAlIG5hbWUsIGNhdGVnb3J5PURl
cHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgcmV0dXJuIGNscwotCi0gICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gIjwlcyAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFt
ZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgJ25hbWUnLCBO
b25lKSkKLQotICAgIGRlZiB3YXJuKHNlbGYsIGNvZGUsIG1lc3NhZ2UpOgotICAgICAgICAiIiIg
Z2VuZXJhdGUgYSB3YXJuaW5nIHdpdGggdGhlIGdpdmVuIGNvZGUgYW5kIG1lc3NhZ2UgZm9yIHRo
aXMKLSAgICAgICAgaXRlbS4gIiIiCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNvZGUsIHN0
cikKLSAgICAgICAgZnNsb2NhdGlvbiA9IGdldGF0dHIoc2VsZiwgImxvY2F0aW9uIiwgTm9uZSkK
LSAgICAgICAgaWYgZnNsb2NhdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgZnNsb2NhdGlvbiA9
IGdldGF0dHIoc2VsZiwgImZzcGF0aCIsIE5vbmUpCi0gICAgICAgIHNlbGYuaWhvb2sucHl0ZXN0
X2xvZ3dhcm5pbmcuY2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdCgKLSAgICAgICAgICAgIGNvZGU9
Y29kZSwgbWVzc2FnZT1tZXNzYWdlLAotICAgICAgICAgICAgbm9kZWlkPXNlbGYubm9kZWlkLCBm
c2xvY2F0aW9uPWZzbG9jYXRpb24pKQotCi0gICAgIyBtZXRob2RzIGZvciBvcmRlcmluZyBub2Rl
cwotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBub2RlaWQoc2VsZik6Ci0gICAgICAgICIiIiBhIDo6
LXNlcGFyYXRlZCBzdHJpbmcgZGVub3RpbmcgaXRzIGNvbGxlY3Rpb24gdHJlZSBhZGRyZXNzLiAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25vZGVpZAotICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9ub2RlaWQgPSB4ID0g
c2VsZi5fbWFrZWlkKCkKLSAgICAgICAgICAgIHJldHVybiB4Ci0KLSAgICBkZWYgX21ha2VpZChz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGFyZW50Lm5vZGVpZCArICI6OiIgKyBzZWxmLm5h
bWUKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5u
b2RlaWQpCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0
ZWFyZG93bihzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGxpc3RjaGFpbihzZWxmKToK
LSAgICAgICAgIiIiIHJldHVybiBsaXN0IG9mIGFsbCBwYXJlbnQgY29sbGVjdG9ycyB1cCB0byBz
ZWxmLAotICAgICAgICAgICAgc3RhcnRpbmcgZnJvbSByb290IG9mIGNvbGxlY3Rpb24gdHJlZS4g
IiIiCi0gICAgICAgIGNoYWluID0gW10KLSAgICAgICAgaXRlbSA9IHNlbGYKLSAgICAgICAgd2hp
bGUgaXRlbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNoYWluLmFwcGVuZChpdGVtKQotICAg
ICAgICAgICAgaXRlbSA9IGl0ZW0ucGFyZW50Ci0gICAgICAgIGNoYWluLnJldmVyc2UoKQotICAg
ICAgICByZXR1cm4gY2hhaW4KLQotICAgIGRlZiBhZGRfbWFya2VyKHNlbGYsIG1hcmtlcik6Ci0g
ICAgICAgICIiIiBkeW5hbWljYWxseSBhZGQgYSBtYXJrZXIgb2JqZWN0IHRvIHRoZSBub2RlLgot
Ci0gICAgICAgIGBgbWFya2VyYGAgY2FuIGJlIGEgc3RyaW5nIG9yIHB5dGVzdC5tYXJrLiogaW5z
dGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgTWFy
a0RlY29yYXRvciwgTUFSS19HRU4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShtYXJrZXIsIHNpeC5z
dHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgbWFya2VyID0gZ2V0YXR0cihNQVJLX0dFTiwgbWFy
a2VyKQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG1hcmtlciwgTWFya0RlY29yYXRvcik6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpcyBub3QgYSBzdHJpbmcgb3IgcHl0ZXN0
Lm1hcmsuKiBNYXJrZXIiKQotICAgICAgICBzZWxmLmtleXdvcmRzW21hcmtlci5uYW1lXSA9IG1h
cmtlcgotCi0gICAgZGVmIGdldF9tYXJrZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIiBnZXQg
YSBtYXJrZXIgb2JqZWN0IGZyb20gdGhpcyBub2RlIG9yIE5vbmUgaWYKLSAgICAgICAgdGhlIG5v
ZGUgZG9lc24ndCBoYXZlIGEgbWFya2VyIHdpdGggdGhhdCBuYW1lLiAiIiIKLSAgICAgICAgdmFs
ID0gc2VsZi5rZXl3b3Jkcy5nZXQobmFtZSwgTm9uZSkKLSAgICAgICAgaWYgdmFsIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1hcmtJbmZvLCBNYXJr
RGVjb3JhdG9yCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgKE1hcmtEZWNvcmF0b3Is
IE1hcmtJbmZvKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbAotCi0gICAgZGVmIGxpc3Rl
eHRyYWtleXdvcmRzKHNlbGYpOgotICAgICAgICAiIiIgUmV0dXJuIGEgc2V0IG9mIGFsbCBleHRy
YSBrZXl3b3JkcyBpbiBzZWxmIGFuZCBhbnkgcGFyZW50cy4iIiIKLSAgICAgICAgZXh0cmFfa2V5
d29yZHMgPSBzZXQoKQotICAgICAgICBpdGVtID0gc2VsZgotICAgICAgICBmb3IgaXRlbSBpbiBz
ZWxmLmxpc3RjaGFpbigpOgotICAgICAgICAgICAgZXh0cmFfa2V5d29yZHMudXBkYXRlKGl0ZW0u
ZXh0cmFfa2V5d29yZF9tYXRjaGVzKQotICAgICAgICByZXR1cm4gZXh0cmFfa2V5d29yZHMKLQot
ICAgIGRlZiBsaXN0bmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbeC5uYW1lIGZvciB4IGlu
IHNlbGYubGlzdGNoYWluKCldCi0KLSAgICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbik6Ci0g
ICAgICAgICIiIiByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoaXMgbm9k
ZSBpcyBmaW5hbGl6ZWQuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVk
IHdoZW4gdGhpcyBub2RlIGlzIGFjdGl2ZQotICAgICAgICBpbiBhIHNldHVwIGNoYWluLCBmb3Ig
ZXhhbXBsZSBkdXJpbmcgc2VsZi5zZXR1cCgpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5z
ZXNzaW9uLl9zZXR1cHN0YXRlLmFkZGZpbmFsaXplcihmaW4sIHNlbGYpCi0KLSAgICBkZWYgZ2V0
cGFyZW50KHNlbGYsIGNscyk6Ci0gICAgICAgICIiIiBnZXQgdGhlIG5leHQgcGFyZW50IG5vZGUg
KGluY2x1ZGluZyBvdXJzZWxmKQotICAgICAgICB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUg
Z2l2ZW4gY2xhc3MiIiIKLSAgICAgICAgY3VycmVudCA9IHNlbGYKLSAgICAgICAgd2hpbGUgY3Vy
cmVudCBhbmQgbm90IGlzaW5zdGFuY2UoY3VycmVudCwgY2xzKToKLSAgICAgICAgICAgIGN1cnJl
bnQgPSBjdXJyZW50LnBhcmVudAotICAgICAgICByZXR1cm4gY3VycmVudAotCi0gICAgZGVmIF9w
cnVuZXRyYWNlYmFjayhzZWxmLCBleGNpbmZvKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIF9y
ZXByX2ZhaWx1cmVfcHkoc2VsZiwgZXhjaW5mbywgc3R5bGU9Tm9uZSk6Ci0gICAgICAgIGZtID0g
c2VsZi5zZXNzaW9uLl9maXh0dXJlbWFuYWdlcgotICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5z
dGFuY2UoZm0uRml4dHVyZUxvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHJldHVybiBleGNpbmZv
LnZhbHVlLmZvcm1hdHJlcHIoKQotICAgICAgICB0YmZpbHRlciA9IFRydWUKLSAgICAgICAgaWYg
c2VsZi5jb25maWcub3B0aW9uLmZ1bGx0cmFjZToKLSAgICAgICAgICAgIHN0eWxlID0gImxvbmci
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0YiA9IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNr
KFtleGNpbmZvLnRyYWNlYmFja1stMV1dKQotICAgICAgICAgICAgc2VsZi5fcHJ1bmV0cmFjZWJh
Y2soZXhjaW5mbykKLSAgICAgICAgICAgIGlmIGxlbihleGNpbmZvLnRyYWNlYmFjaykgPT0gMDoK
LSAgICAgICAgICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IHRiCi0gICAgICAgICAgICB0YmZp
bHRlciA9IEZhbHNlICAjIHBydW5ldHJhY2ViYWNrIGFscmVhZHkgZG9lcyBpdAotICAgICAgICAg
ICAgaWYgc3R5bGUgPT0gImF1dG8iOgotICAgICAgICAgICAgICAgIHN0eWxlID0gImxvbmciCi0g
ICAgICAgICMgWFhYIHNob3VsZCBleGNpbmZvLmdldHJlcHIgcmVjb3JkIGFsbCBkYXRhIGFuZCB0
b3Rlcm1pbmFsKCkgcHJvY2VzcyBpdD8KLSAgICAgICAgaWYgc3R5bGUgaXMgTm9uZToKLSAgICAg
ICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi50YnN0eWxlID09ICJzaG9ydCI6Ci0gICAgICAg
ICAgICAgICAgc3R5bGUgPSAic2hvcnQiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHN0eWxlID0gImxvbmciCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuZ2V0Y3dk
KCkKLSAgICAgICAgICAgIGFic3BhdGggPSBGYWxzZQotICAgICAgICBleGNlcHQgT1NFcnJvcjoK
LSAgICAgICAgICAgIGFic3BhdGggPSBUcnVlCi0KLSAgICAgICAgcmV0dXJuIGV4Y2luZm8uZ2V0
cmVwcihmdW5jYXJncz1UcnVlLCBhYnNwYXRoPWFic3BhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd2xvY2Fscz1zZWxmLmNvbmZpZy5vcHRpb24uc2hvd2xvY2FscywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1zdHlsZSwgdGJmaWx0ZXI9dGJmaWx0
ZXIpCi0KLSAgICByZXByX2ZhaWx1cmUgPSBfcmVwcl9mYWlsdXJlX3B5Ci0KLQotY2xhc3MgQ29s
bGVjdG9yKE5vZGUpOgotICAgICIiIiBDb2xsZWN0b3IgaW5zdGFuY2VzIGNyZWF0ZSBjaGlsZHJl
biB0aHJvdWdoIGNvbGxlY3QoKQotICAgICAgICBhbmQgdGh1cyBpdGVyYXRpdmVseSBidWlsZCBh
IHRyZWUuCi0gICAgIiIiCi0KLSAgICBjbGFzcyBDb2xsZWN0RXJyb3IoRXhjZXB0aW9uKToKLSAg
ICAgICAgIiIiIGFuIGVycm9yIGR1cmluZyBjb2xsZWN0aW9uLCBjb250YWlucyBhIGN1c3RvbSBt
ZXNzYWdlLiAiIiIKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJu
cyBhIGxpc3Qgb2YgY2hpbGRyZW4gKGl0ZW1zIGFuZCBjb2xsZWN0b3JzKQotICAgICAgICAgICAg
Zm9yIHRoaXMgY29sbGVjdGlvbiBub2RlLgotICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigiYWJzdHJhY3QiKQotCi0gICAgZGVmIHJlcHJfZmFpbHVyZShzZWxm
LCBleGNpbmZvKToKLSAgICAgICAgIiIiIHJlcHJlc2VudCBhIGNvbGxlY3Rpb24gZmFpbHVyZS4g
IiIiCi0gICAgICAgIGlmIGV4Y2luZm8uZXJyaXNpbnN0YW5jZShzZWxmLkNvbGxlY3RFcnJvcik6
Ci0gICAgICAgICAgICBleGMgPSBleGNpbmZvLnZhbHVlCi0gICAgICAgICAgICByZXR1cm4gc3Ry
KGV4Yy5hcmdzWzBdKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9mYWlsdXJlX3B5KGV4Y2lu
Zm8sIHN0eWxlPSJzaG9ydCIpCi0KLSAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2lu
Zm8pOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdmc3BhdGgnKToKLSAgICAgICAgICAgIHRy
YWNlYmFjayA9IGV4Y2luZm8udHJhY2ViYWNrCi0gICAgICAgICAgICBudHJhY2ViYWNrID0gdHJh
Y2ViYWNrLmN1dChwYXRoPXNlbGYuZnNwYXRoKQotICAgICAgICAgICAgaWYgbnRyYWNlYmFjayA9
PSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IG50cmFjZWJhY2suY3V0
KGV4Y2x1ZGVwYXRoPXRyYWNlYmFja2N1dGRpcikKLSAgICAgICAgICAgIGV4Y2luZm8udHJhY2Vi
YWNrID0gbnRyYWNlYmFjay5maWx0ZXIoKQotCi0KLWNsYXNzIEZTQ29sbGVjdG9yKENvbGxlY3Rv
cik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzcGF0aCwgcGFyZW50PU5vbmUsIGNvbmZpZz1O
b25lLCBzZXNzaW9uPU5vbmUpOgotICAgICAgICBmc3BhdGggPSBweS5wYXRoLmxvY2FsKGZzcGF0
aCkgICMgeHh4IG9ubHkgZm9yIHRlc3RfcmVzdWx0bG9nLnB5PwotICAgICAgICBuYW1lID0gZnNw
YXRoLmJhc2VuYW1lCi0gICAgICAgIGlmIHBhcmVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IHJlbCA9IGZzcGF0aC5yZWx0byhwYXJlbnQuZnNwYXRoKQotICAgICAgICAgICAgaWYgcmVsOgot
ICAgICAgICAgICAgICAgIG5hbWUgPSByZWwKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnJlcGxh
Y2Uob3Muc2VwLCBub2Rlcy5TRVApCi0gICAgICAgIHN1cGVyKEZTQ29sbGVjdG9yLCBzZWxmKS5f
X2luaXRfXyhuYW1lLCBwYXJlbnQsIGNvbmZpZywgc2Vzc2lvbikKLSAgICAgICAgc2VsZi5mc3Bh
dGggPSBmc3BhdGgKLQotICAgIGRlZiBfY2hlY2tfaW5pdGlhbHBhdGhzX2Zvcl9yZWxwYXRoKHNl
bGYpOgotICAgICAgICBmb3IgaW5pdGlhbHBhdGggaW4gc2VsZi5zZXNzaW9uLl9pbml0aWFscGF0
aHM6Ci0gICAgICAgICAgICBpZiBzZWxmLmZzcGF0aC5jb21tb24oaW5pdGlhbHBhdGgpID09IGlu
aXRpYWxwYXRoOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZzcGF0aC5yZWx0byhpbml0
aWFscGF0aC5kaXJuYW1lKQotCi0gICAgZGVmIF9tYWtlaWQoc2VsZik6Ci0gICAgICAgIHJlbHBh
dGggPSBzZWxmLmZzcGF0aC5yZWx0byhzZWxmLmNvbmZpZy5yb290ZGlyKQotCi0gICAgICAgIGlm
IG5vdCByZWxwYXRoOgotICAgICAgICAgICAgcmVscGF0aCA9IHNlbGYuX2NoZWNrX2luaXRpYWxw
YXRoc19mb3JfcmVscGF0aCgpCi0gICAgICAgIGlmIG9zLnNlcCAhPSBub2Rlcy5TRVA6Ci0gICAg
ICAgICAgICByZWxwYXRoID0gcmVscGF0aC5yZXBsYWNlKG9zLnNlcCwgbm9kZXMuU0VQKQotICAg
ICAgICByZXR1cm4gcmVscGF0aAotCi0KLWNsYXNzIEZpbGUoRlNDb2xsZWN0b3IpOgotICAgICIi
IiBiYXNlIGNsYXNzIGZvciBjb2xsZWN0aW5nIHRlc3RzIGZyb20gYSBmaWxlLiAiIiIKLQotCi1j
bGFzcyBJdGVtKE5vZGUpOgotICAgICIiIiBhIGJhc2ljIHRlc3QgaW52b2NhdGlvbiBpdGVtLiBO
b3RlIHRoYXQgZm9yIGEgc2luZ2xlIGZ1bmN0aW9uCi0gICAgdGhlcmUgbWlnaHQgYmUgbXVsdGlw
bGUgdGVzdCBpbnZvY2F0aW9uIGl0ZW1zLgotICAgICIiIgotICAgIG5leHRpdGVtID0gTm9uZQot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhcmVudD1Ob25lLCBjb25maWc9Tm9uZSwg
c2Vzc2lvbj1Ob25lKToKLSAgICAgICAgc3VwZXIoSXRlbSwgc2VsZikuX19pbml0X18obmFtZSwg
cGFyZW50LCBjb25maWcsIHNlc3Npb24pCi0gICAgICAgIHNlbGYuX3JlcG9ydF9zZWN0aW9ucyA9
IFtdCi0KLSAgICBkZWYgYWRkX3JlcG9ydF9zZWN0aW9uKHNlbGYsIHdoZW4sIGtleSwgY29udGVu
dCk6Ci0gICAgICAgICIiIgotICAgICAgICBBZGRzIGEgbmV3IHJlcG9ydCBzZWN0aW9uLCBzaW1p
bGFyIHRvIHdoYXQncyBkb25lIGludGVybmFsbHkgdG8gYWRkIHN0ZG91dCBhbmQKLSAgICAgICAg
c3RkZXJyIGNhcHR1cmVkIG91dHB1dDo6Ci0KLSAgICAgICAgICAgIGl0ZW0uYWRkX3JlcG9ydF9z
ZWN0aW9uKCJjYWxsIiwgInN0ZG91dCIsICJyZXBvcnQgc2VjdGlvbiBjb250ZW50cyIpCi0KLSAg
ICAgICAgOnBhcmFtIHN0ciB3aGVuOgotICAgICAgICAgICAgT25lIG9mIHRoZSBwb3NzaWJsZSBj
YXB0dXJlIHN0YXRlcywgYGAic2V0dXAiYGAsIGBgImNhbGwiYGAsIGBgInRlYXJkb3duImBgLgot
ICAgICAgICA6cGFyYW0gc3RyIGtleToKLSAgICAgICAgICAgIE5hbWUgb2YgdGhlIHNlY3Rpb24s
IGNhbiBiZSBjdXN0b21pemVkIGF0IHdpbGwuIFB5dGVzdCB1c2VzIGBgInN0ZG91dCJgYCBhbmQK
LSAgICAgICAgICAgIGBgInN0ZGVyciJgYCBpbnRlcm5hbGx5LgotCi0gICAgICAgIDpwYXJhbSBz
dHIgY29udGVudDoKLSAgICAgICAgICAgIFRoZSBmdWxsIGNvbnRlbnRzIGFzIGEgc3RyaW5nLgot
ICAgICAgICAiIiIKLSAgICAgICAgaWYgY29udGVudDoKLSAgICAgICAgICAgIHNlbGYuX3JlcG9y
dF9zZWN0aW9ucy5hcHBlbmQoKHdoZW4sIGtleSwgY29udGVudCkpCi0KLSAgICBkZWYgcmVwb3J0
aW5mbyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZnNwYXRoLCBOb25lLCAiIgotCi0gICAg
QHByb3BlcnR5Ci0gICAgZGVmIGxvY2F0aW9uKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5fbG9jYXRpb24KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgotICAgICAgICAgICAgbG9jYXRpb24gPSBzZWxmLnJlcG9ydGluZm8oKQotICAgICAgICAgICAg
IyBiZXN0cmVscGF0aCBpcyBhIHF1aXRlIHNsb3cgZnVuY3Rpb24KLSAgICAgICAgICAgIGNhY2hl
ID0gc2VsZi5jb25maWcuX19kaWN0X18uc2V0ZGVmYXVsdCgiX2Jlc3RyZWxwYXRoY2FjaGUiLCB7
fSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmc3BhdGggPSBjYWNoZVtsb2Nh
dGlvblswXV0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBm
c3BhdGggPSBzZWxmLnNlc3Npb24uZnNwYXRoLmJlc3RyZWxwYXRoKGxvY2F0aW9uWzBdKQotICAg
ICAgICAgICAgICAgIGNhY2hlW2xvY2F0aW9uWzBdXSA9IGZzcGF0aAotICAgICAgICAgICAgbG9j
YXRpb24gPSAoZnNwYXRoLCBsb2NhdGlvblsxXSwgc3RyKGxvY2F0aW9uWzJdKSkKLSAgICAgICAg
ICAgIHNlbGYuX2xvY2F0aW9uID0gbG9jYXRpb24KLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlv
bgotCi0KLWNsYXNzIE5vTWF0Y2goRXhjZXB0aW9uKToKLSAgICAiIiIgcmFpc2VkIGlmIG1hdGNo
aW5nIGNhbm5vdCBsb2NhdGUgYSBtYXRjaGluZyBuYW1lcy4gIiIiCi0KLQotY2xhc3MgSW50ZXJy
dXB0ZWQoS2V5Ym9hcmRJbnRlcnJ1cHQpOgotICAgICIiIiBzaWduYWxzIGFuIGludGVycnVwdGVk
IHRlc3QgcnVuLiAiIiIKLSAgICBfX21vZHVsZV9fID0gJ2J1aWx0aW5zJyAgIyBmb3IgcHkzCi0K
LQotY2xhc3MgRmFpbGVkKEV4Y2VwdGlvbik6Ci0gICAgIiIiIHNpZ25hbHMgYW4gc3RvcCBhcyBm
YWlsZWQgdGVzdCBydW4uICIiIgotCi0KLWNsYXNzIFNlc3Npb24oRlNDb2xsZWN0b3IpOgotICAg
IEludGVycnVwdGVkID0gSW50ZXJydXB0ZWQKLSAgICBGYWlsZWQgPSBGYWlsZWQKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgotICAgICAgICBGU0NvbGxlY3Rvci5fX2luaXRfXyhz
ZWxmLCBjb25maWcucm9vdGRpciwgcGFyZW50PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZz1jb25maWcsIHNlc3Npb249c2VsZikKLSAgICAgICAgc2VsZi50ZXN0c2Zh
aWxlZCA9IDAKLSAgICAgICAgc2VsZi50ZXN0c2NvbGxlY3RlZCA9IDAKLSAgICAgICAgc2VsZi5z
aG91bGRzdG9wID0gRmFsc2UKLSAgICAgICAgc2VsZi5zaG91bGRmYWlsID0gRmFsc2UKLSAgICAg
ICAgc2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5yb290LmdldCgiY29sbGVjdGlvbiIpCi0gICAg
ICAgIHNlbGYuX25vcmVjdXJzZXBhdHRlcm5zID0gY29uZmlnLmdldGluaSgibm9yZWN1cnNlZGly
cyIpCi0gICAgICAgIHNlbGYuc3RhcnRkaXIgPSBweS5wYXRoLmxvY2FsKCkKLSAgICAgICAgc2Vs
Zi5jb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihzZWxmLCBuYW1lPSJzZXNzaW9uIikKLQot
ICAgIGRlZiBfbWFrZWlkKHNlbGYpOgotICAgICAgICByZXR1cm4gIiIKLQotICAgIEBob29raW1w
bCh0cnlmaXJzdD1UcnVlKQotICAgIGRlZiBweXRlc3RfY29sbGVjdHN0YXJ0KHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLnNob3VsZGZhaWw6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkZhaWxlZChz
ZWxmLnNob3VsZGZhaWwpCi0gICAgICAgIGlmIHNlbGYuc2hvdWxkc3RvcDoKLSAgICAgICAgICAg
IHJhaXNlIHNlbGYuSW50ZXJydXB0ZWQoc2VsZi5zaG91bGRzdG9wKQotCi0gICAgQGhvb2tpbXBs
KHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCBy
ZXBvcnQpOgotICAgICAgICBpZiByZXBvcnQuZmFpbGVkIGFuZCBub3QgaGFzYXR0cihyZXBvcnQs
ICd3YXN4ZmFpbCcpOgotICAgICAgICAgICAgc2VsZi50ZXN0c2ZhaWxlZCArPSAxCi0gICAgICAg
ICAgICBtYXhmYWlsID0gc2VsZi5jb25maWcuZ2V0dmFsdWUoIm1heGZhaWwiKQotICAgICAgICAg
ICAgaWYgbWF4ZmFpbCBhbmQgc2VsZi50ZXN0c2ZhaWxlZCA+PSBtYXhmYWlsOgotICAgICAgICAg
ICAgICAgIHNlbGYuc2hvdWxkZmFpbCA9ICJzdG9wcGluZyBhZnRlciAlZCBmYWlsdXJlcyIgJSAo
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHNmYWlsZWQpCi0gICAgcHl0ZXN0X2NvbGxl
Y3RyZXBvcnQgPSBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQKLQotICAgIGRlZiBpc2luaXRwYXRo
KHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4gcGF0aCBpbiBzZWxmLl9pbml0aWFscGF0aHMK
LQotICAgIGRlZiBnZXRob29rcHJveHkoc2VsZiwgZnNwYXRoKToKLSAgICAgICAgIyBjaGVjayBp
ZiB3ZSBoYXZlIHRoZSBjb21tb24gY2FzZSBvZiBydW5uaW5nCi0gICAgICAgICMgaG9va3Mgd2l0
aCBhbGwgY29uZnRlc3QucHkgZmlsZXNhbGwgY29uZnRlc3QucHkKLSAgICAgICAgcG0gPSBzZWxm
LmNvbmZpZy5wbHVnaW5tYW5hZ2VyCi0gICAgICAgIG15X2NvbmZ0ZXN0bW9kdWxlcyA9IHBtLl9n
ZXRjb25mdGVzdG1vZHVsZXMoZnNwYXRoKQotICAgICAgICByZW1vdmVfbW9kcyA9IHBtLl9jb25m
dGVzdF9wbHVnaW5zLmRpZmZlcmVuY2UobXlfY29uZnRlc3Rtb2R1bGVzKQotICAgICAgICBpZiBy
ZW1vdmVfbW9kczoKLSAgICAgICAgICAgICMgb25lIG9yIG1vcmUgY29uZnRlc3RzIGFyZSBub3Qg
aW4gdXNlIGF0IHRoaXMgZnNwYXRoCi0gICAgICAgICAgICBwcm94eSA9IEZTSG9va1Byb3h5KGZz
cGF0aCwgcG0sIHJlbW92ZV9tb2RzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBhbGwg
cGx1Z2lzIGFyZSBhY3RpdmUgZm9yIHRoaXMgZnNwYXRoCi0gICAgICAgICAgICBwcm94eSA9IHNl
bGYuY29uZmlnLmhvb2sKLSAgICAgICAgcmV0dXJuIHByb3h5Ci0KLSAgICBkZWYgcGVyZm9ybV9j
b2xsZWN0KHNlbGYsIGFyZ3M9Tm9uZSwgZ2VuaXRlbXM9VHJ1ZSk6Ci0gICAgICAgIGhvb2sgPSBz
ZWxmLmNvbmZpZy5ob29rCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGl0ZW1zID0gc2VsZi5f
cGVyZm9ybV9jb2xsZWN0KGFyZ3MsIGdlbml0ZW1zKQotICAgICAgICAgICAgc2VsZi5jb25maWcu
cGx1Z2lubWFuYWdlci5jaGVja19wZW5kaW5nKCkKLSAgICAgICAgICAgIGhvb2sucHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2Vzc2lvbj1zZWxmLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9c2VsZi5jb25maWcsIGl0ZW1zPWl0ZW1z
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaG9vay5weXRlc3RfY29sbGVjdGlvbl9m
aW5pc2goc2Vzc2lvbj1zZWxmKQotICAgICAgICBzZWxmLnRlc3RzY29sbGVjdGVkID0gbGVuKGl0
ZW1zKQotICAgICAgICByZXR1cm4gaXRlbXMKLQotICAgIGRlZiBfcGVyZm9ybV9jb2xsZWN0KHNl
bGYsIGFyZ3MsIGdlbml0ZW1zKToKLSAgICAgICAgaWYgYXJncyBpcyBOb25lOgotICAgICAgICAg
ICAgYXJncyA9IHNlbGYuY29uZmlnLmFyZ3MKLSAgICAgICAgc2VsZi50cmFjZSgicGVyZm9ybV9j
b2xsZWN0Iiwgc2VsZiwgYXJncykKLSAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCArPSAx
Ci0gICAgICAgIHNlbGYuX25vdGZvdW5kID0gW10KLSAgICAgICAgc2VsZi5faW5pdGlhbHBhdGhz
ID0gc2V0KCkKLSAgICAgICAgc2VsZi5faW5pdGlhbHBhcnRzID0gW10KLSAgICAgICAgc2VsZi5p
dGVtcyA9IGl0ZW1zID0gW10KLSAgICAgICAgZm9yIGFyZyBpbiBhcmdzOgotICAgICAgICAgICAg
cGFydHMgPSBzZWxmLl9wYXJzZWFyZyhhcmcpCi0gICAgICAgICAgICBzZWxmLl9pbml0aWFscGFy
dHMuYXBwZW5kKHBhcnRzKQotICAgICAgICAgICAgc2VsZi5faW5pdGlhbHBhdGhzLmFkZChwYXJ0
c1swXSkKLSAgICAgICAgcmVwID0gY29sbGVjdF9vbmVfbm9kZShzZWxmKQotICAgICAgICBzZWxm
Lmlob29rLnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydD1yZXApCi0gICAgICAgIHNlbGYudHJh
Y2Uucm9vdC5pbmRlbnQgLT0gMQotICAgICAgICBpZiBzZWxmLl9ub3Rmb3VuZDoKLSAgICAgICAg
ICAgIGVycm9ycyA9IFtdCi0gICAgICAgICAgICBmb3IgYXJnLCBleGMgaW4gc2VsZi5fbm90Zm91
bmQ6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICIobm8gbmFtZSAlciBpbiBhbnkgb2YgJXIpIiAl
IChhcmcsIGV4Yy5hcmdzWzBdKQotICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIm5vdCBm
b3VuZDogJXNcbiVzIiAlIChhcmcsIGxpbmUpKQotICAgICAgICAgICAgICAgICMgWFhYOiB0ZXN0
IHRoaXMKLSAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoKmVycm9ycykKLSAgICAgICAgaWYg
bm90IGdlbml0ZW1zOgotICAgICAgICAgICAgcmV0dXJuIHJlcC5yZXN1bHQKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAgICAgICAgZm9yIG5vZGUg
aW4gcmVwLnJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pdGVtcy5leHRlbmQoc2Vs
Zi5nZW5pdGVtcyhub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBpdGVtcwotCi0gICAgZGVmIGNv
bGxlY3Qoc2VsZik6Ci0gICAgICAgIGZvciBwYXJ0cyBpbiBzZWxmLl9pbml0aWFscGFydHM6Ci0g
ICAgICAgICAgICBhcmcgPSAiOjoiLmpvaW4obWFwKHN0ciwgcGFydHMpKQotICAgICAgICAgICAg
c2VsZi50cmFjZSgicHJvY2Vzc2luZyBhcmd1bWVudCIsIGFyZykKLSAgICAgICAgICAgIHNlbGYu
dHJhY2Uucm9vdC5pbmRlbnQgKz0gMQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IGZvciB4IGluIHNlbGYuX2NvbGxlY3QoYXJnKToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQg
eAotICAgICAgICAgICAgZXhjZXB0IE5vTWF0Y2g6Ci0gICAgICAgICAgICAgICAgIyB3ZSBhcmUg
aW5zaWRlIGEgbWFrZV9yZXBvcnQgaG9vayBzbwotICAgICAgICAgICAgICAgICMgd2UgY2Fubm90
IGRpcmVjdGx5IHBhc3MgdGhyb3VnaCB0aGUgZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fbm90Zm91bmQuYXBwZW5kKChhcmcsIHN5cy5leGNfaW5mbygpWzFdKSkKLQotICAgICAgICAg
ICAgc2VsZi50cmFjZS5yb290LmluZGVudCAtPSAxCi0KLSAgICBkZWYgX2NvbGxlY3Qoc2VsZiwg
YXJnKToKLSAgICAgICAgbmFtZXMgPSBzZWxmLl9wYXJzZWFyZyhhcmcpCi0gICAgICAgIHBhdGgg
PSBuYW1lcy5wb3AoMCkKLSAgICAgICAgaWYgcGF0aC5jaGVjayhkaXI9MSk6Ci0gICAgICAgICAg
ICBhc3NlcnQgbm90IG5hbWVzLCAiaW52YWxpZCBhcmcgJXIiICUgKGFyZywpCi0gICAgICAgICAg
ICBmb3IgcGF0aCBpbiBwYXRoLnZpc2l0KGZpbD1sYW1iZGEgeDogeC5jaGVjayhmaWxlPTEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWM9c2VsZi5fcmVjdXJzZSwgYmY9
VHJ1ZSwgc29ydD1UcnVlKToKLSAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmLl9jb2xsZWN0
ZmlsZShwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgeAotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgYXNzZXJ0IHBhdGguY2hlY2soZmlsZT0xKQotICAgICAgICAgICAgZm9yIHgg
aW4gc2VsZi5tYXRjaG5vZGVzKHNlbGYuX2NvbGxlY3RmaWxlKHBhdGgpLCBuYW1lcyk6Ci0gICAg
ICAgICAgICAgICAgeWllbGQgeAotCi0gICAgZGVmIF9jb2xsZWN0ZmlsZShzZWxmLCBwYXRoKToK
LSAgICAgICAgaWhvb2sgPSBzZWxmLmdldGhvb2twcm94eShwYXRoKQotICAgICAgICBpZiBub3Qg
c2VsZi5pc2luaXRwYXRoKHBhdGgpOgotICAgICAgICAgICAgaWYgaWhvb2sucHl0ZXN0X2lnbm9y
ZV9jb2xsZWN0KHBhdGg9cGF0aCwgY29uZmlnPXNlbGYuY29uZmlnKToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gKCkKLSAgICAgICAgcmV0dXJuIGlob29rLnB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0
aD1wYXRoLCBwYXJlbnQ9c2VsZikKLQotICAgIGRlZiBfcmVjdXJzZShzZWxmLCBwYXRoKToKLSAg
ICAgICAgaWhvb2sgPSBzZWxmLmdldGhvb2twcm94eShwYXRoLmRpcnBhdGgoKSkKLSAgICAgICAg
aWYgaWhvb2sucHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGg9cGF0aCwgY29uZmlnPXNlbGYuY29u
ZmlnKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmb3IgcGF0IGluIHNlbGYuX25vcmVj
dXJzZXBhdHRlcm5zOgotICAgICAgICAgICAgaWYgcGF0aC5jaGVjayhmbm1hdGNoPXBhdCk6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlob29rID0gc2VsZi5nZXRob29r
cHJveHkocGF0aCkKLSAgICAgICAgaWhvb2sucHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5KHBhdGg9
cGF0aCwgcGFyZW50PXNlbGYpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX3RyeWNv
bnZlcnRweWFyZyhzZWxmLCB4KToKLSAgICAgICAgIiIiQ29udmVydCBhIGRvdHRlZCBtb2R1bGUg
bmFtZSB0byBwYXRoLgotCi0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcGtndXRpbAotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBwa2d1dGlsLmZpbmRfbG9hZGVyKHgpCi0g
ICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAg
IGlmIGxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgIyBUaGlz
IG1ldGhvZCBpcyBzb21ldGltZXMgaW52b2tlZCB3aGVuIEFzc2VydGlvblJld3JpdGluZ0hvb2ss
IHdoaWNoCi0gICAgICAgICMgZG9lcyBub3QgZGVmaW5lIGEgZ2V0X2ZpbGVuYW1lIG1ldGhvZCwg
aXMgYWxyZWFkeSBpbiBwbGFjZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0aCA9IGxv
YWRlci5nZXRfZmlsZW5hbWUoeCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAg
ICAgICAgICAgIyBSZXRyaWV2ZSBwYXRoIGZyb20gQXNzZXJ0aW9uUmV3cml0aW5nSG9vazoKLSAg
ICAgICAgICAgIHBhdGggPSBsb2FkZXIubW9kdWxlc1t4XVswXS5jb19maWxlbmFtZQotICAgICAg
ICBpZiBsb2FkZXIuaXNfcGFja2FnZSh4KToKLSAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmRp
cm5hbWUocGF0aCkKLSAgICAgICAgcmV0dXJuIHBhdGgKLQotICAgIGRlZiBfcGFyc2Vhcmcoc2Vs
ZiwgYXJnKToKLSAgICAgICAgIiIiIHJldHVybiAoZnNwYXRoLCBuYW1lcykgdHVwbGUgYWZ0ZXIg
Y2hlY2tpbmcgdGhlIGZpbGUgZXhpc3RzLiAiIiIKLSAgICAgICAgcGFydHMgPSBzdHIoYXJnKS5z
cGxpdCgiOjoiKQotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24ucHlhcmdzOgotICAgICAg
ICAgICAgcGFydHNbMF0gPSBzZWxmLl90cnljb252ZXJ0cHlhcmcocGFydHNbMF0pCi0gICAgICAg
IHJlbHBhdGggPSBwYXJ0c1swXS5yZXBsYWNlKCIvIiwgb3Muc2VwKQotICAgICAgICBwYXRoID0g
c2VsZi5jb25maWcuaW52b2NhdGlvbl9kaXIuam9pbihyZWxwYXRoLCBhYnM9VHJ1ZSkKLSAgICAg
ICAgaWYgbm90IHBhdGguY2hlY2soKToKLSAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlv
bi5weWFyZ3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgImZpbGUgb3IgcGFja2FnZSBub3QgZm91bmQ6ICIgKyBhcmcgKwotICAgICAgICAg
ICAgICAgICAgICAiIChtaXNzaW5nIF9faW5pdF9fLnB5PykiKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJmaWxlIG5vdCBmb3VuZDogIiArIGFy
ZykKLSAgICAgICAgcGFydHNbMF0gPSBwYXRoCi0gICAgICAgIHJldHVybiBwYXJ0cwotCi0gICAg
ZGVmIG1hdGNobm9kZXMoc2VsZiwgbWF0Y2hpbmcsIG5hbWVzKToKLSAgICAgICAgc2VsZi50cmFj
ZSgibWF0Y2hub2RlcyIsIG1hdGNoaW5nLCBuYW1lcykKLSAgICAgICAgc2VsZi50cmFjZS5yb290
LmluZGVudCArPSAxCi0gICAgICAgIG5vZGVzID0gc2VsZi5fbWF0Y2hub2RlcyhtYXRjaGluZywg
bmFtZXMpCi0gICAgICAgIG51bSA9IGxlbihub2RlcykKLSAgICAgICAgc2VsZi50cmFjZSgibWF0
Y2hub2RlcyBmaW5pc2hlZCAtPiAiLCBudW0sICJub2RlcyIpCi0gICAgICAgIHNlbGYudHJhY2Uu
cm9vdC5pbmRlbnQgLT0gMQotICAgICAgICBpZiBudW0gPT0gMDoKLSAgICAgICAgICAgIHJhaXNl
IE5vTWF0Y2gobWF0Y2hpbmcsIG5hbWVzWzoxXSkKLSAgICAgICAgcmV0dXJuIG5vZGVzCi0KLSAg
ICBkZWYgX21hdGNobm9kZXMoc2VsZiwgbWF0Y2hpbmcsIG5hbWVzKToKLSAgICAgICAgaWYgbm90
IG1hdGNoaW5nIG9yIG5vdCBuYW1lczoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGluZwotICAg
ICAgICBuYW1lID0gbmFtZXNbMF0KLSAgICAgICAgYXNzZXJ0IG5hbWUKLSAgICAgICAgbmV4dG5h
bWVzID0gbmFtZXNbMTpdCi0gICAgICAgIHJlc3VsdG5vZGVzID0gW10KLSAgICAgICAgZm9yIG5v
ZGUgaW4gbWF0Y2hpbmc6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIEl0ZW0pOgot
ICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
bm9kZXMuYXBwZW5kKG5vZGUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIENvbGxlY3RvcikKLSAgICAgICAgICAgIHJlcCA9IGNv
bGxlY3Rfb25lX25vZGUobm9kZSkKLSAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAg
ICAgICAgICAgaGFzX21hdGNoZWQgPSBGYWxzZQotICAgICAgICAgICAgICAgIGZvciB4IGluIHJl
cC5yZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICMgVE9ETzogcmVtb3ZlIHBhcmFtZXRyaXpl
ZCB3b3JrYXJvdW5kIG9uY2UgY29sbGVjdGlvbiBzdHJ1Y3R1cmUgY29udGFpbnMgcGFyYW1ldHJp
emF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGlmIHgubmFtZSA9PSBuYW1lIG9yIHgubmFtZS5z
cGxpdCgiWyIpWzBdID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRub2Rl
cy5leHRlbmQoc2VsZi5tYXRjaG5vZGVzKFt4XSwgbmV4dG5hbWVzKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhhc19tYXRjaGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgWFhYIGFjY2Vw
dCBJRHMgdGhhdCBkb24ndCBoYXZlICIoKSIgZm9yIGNsYXNzIGluc3RhbmNlcwotICAgICAgICAg
ICAgICAgIGlmIG5vdCBoYXNfbWF0Y2hlZCBhbmQgbGVuKHJlcC5yZXN1bHQpID09IDEgYW5kIHgu
bmFtZSA9PSAiKCkiOgotICAgICAgICAgICAgICAgICAgICBuZXh0bmFtZXMuaW5zZXJ0KDAsIG5h
bWUpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdG5vZGVzLmV4dGVuZChzZWxmLm1hdGNobm9k
ZXMoW3hdLCBuZXh0bmFtZXMpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAj
IHJlcG9ydCBjb2xsZWN0aW9uIGZhaWx1cmVzIGhlcmUgdG8gYXZvaWQgZmFpbGluZyB0byBydW4g
c29tZSB0ZXN0Ci0gICAgICAgICAgICAgICAgIyBzcGVjaWZpZWQgaW4gdGhlIGNvbW1hbmQgbGlu
ZSBiZWNhdXNlIHRoZSBtb2R1bGUgY291bGQgbm90IGJlCi0gICAgICAgICAgICAgICAgIyBpbXBv
cnRlZCAoIzEzNCkKLSAgICAgICAgICAgICAgICBub2RlLmlob29rLnB5dGVzdF9jb2xsZWN0cmVw
b3J0KHJlcG9ydD1yZXApCi0gICAgICAgIHJldHVybiByZXN1bHRub2RlcwotCi0gICAgZGVmIGdl
bml0ZW1zKHNlbGYsIG5vZGUpOgotICAgICAgICBzZWxmLnRyYWNlKCJnZW5pdGVtcyIsIG5vZGUp
Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgSXRlbSk6Ci0gICAgICAgICAgICBub2RlLmlo
b29rLnB5dGVzdF9pdGVtY29sbGVjdGVkKGl0ZW09bm9kZSkKLSAgICAgICAgICAgIHlpZWxkIG5v
ZGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIENv
bGxlY3RvcikKLSAgICAgICAgICAgIHJlcCA9IGNvbGxlY3Rfb25lX25vZGUobm9kZSkKLSAgICAg
ICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAgICAgICAgZm9yIHN1Ym5vZGUgaW4gcmVw
LnJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5nZW5pdGVtcyhzdWJu
b2RlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHgKLSAgICAgICAgICAgIG5vZGUu
aWhvb2sucHl0ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvbWFyay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbWFyay5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YxZjAxYjFhMmUzLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYXJrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDk2ICsw
LDAgQEAKLSIiIiBnZW5lcmljIG1lY2hhbmlzbSBmb3IgbWFya2luZyBhbmQgc2VsZWN0aW5nIHB5
dGhvbiBmdW5jdGlvbnMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IHdh
cm5pbmdzCi1pbXBvcnQgYXR0cgotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQot
ZnJvbSBvcGVyYXRvciBpbXBvcnQgYXR0cmdldHRlcgotZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1h
cAotZnJvbSAuZGVwcmVjYXRlZCBpbXBvcnQgTUFSS19QQVJBTUVURVJTRVRfVU5QQUNLSU5HCi1m
cm9tIC5jb21wYXQgaW1wb3J0IE5PVFNFVCwgZ2V0ZnNsaW5lbm8KLQotCi1kZWYgYWxpYXMobmFt
ZSwgd2FybmluZz1Ob25lKToKLSAgICBnZXR0ZXIgPSBhdHRyZ2V0dGVyKG5hbWUpCi0KLSAgICBk
ZWYgd2FybmVkKHNlbGYpOgotICAgICAgICB3YXJuaW5ncy53YXJuKHdhcm5pbmcsIHN0YWNrbGV2
ZWw9MikKLSAgICAgICAgcmV0dXJuIGdldHRlcihzZWxmKQotCi0gICAgcmV0dXJuIHByb3BlcnR5
KGdldHRlciBpZiB3YXJuaW5nIGlzIE5vbmUgZWxzZSB3YXJuZWQsIGRvYz0nYWxpYXMgZm9yICcg
KyBuYW1lKQotCi0KLWNsYXNzIFBhcmFtZXRlclNldChuYW1lZHR1cGxlKCdQYXJhbWV0ZXJTZXQn
LCAndmFsdWVzLCBtYXJrcywgaWQnKSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBhcmFt
KGNscywgKnZhbHVlcywgKiprdyk6Ci0gICAgICAgIG1hcmtzID0ga3cucG9wKCdtYXJrcycsICgp
KQotICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmtzLCBNYXJrRGVjb3JhdG9yKToKLSAgICAgICAg
ICAgIG1hcmtzID0gbWFya3MsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShtYXJrcywgKHR1cGxlLCBsaXN0LCBzZXQpKQotCi0gICAgICAgIGRlZiBwYXJhbV9l
eHRyYWN0X2lkKGlkPU5vbmUpOgotICAgICAgICAgICAgcmV0dXJuIGlkCi0KLSAgICAgICAgaWQg
PSBwYXJhbV9leHRyYWN0X2lkKCoqa3cpCi0gICAgICAgIHJldHVybiBjbHModmFsdWVzLCBtYXJr
cywgaWQpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZXh0cmFjdF9mcm9tKGNscywgcGFy
YW1ldGVyc2V0LCBsZWdhY3lfZm9yY2VfdHVwbGU9RmFsc2UpOgotICAgICAgICAiIiIKLSAgICAg
ICAgOnBhcmFtIHBhcmFtZXRlcnNldDoKLSAgICAgICAgICAgIGEgbGVnYWN5IHN0eWxlIHBhcmFt
ZXRlcnNldCB0aGF0IG1heSBvciBtYXkgbm90IGJlIGEgdHVwbGUsCi0gICAgICAgICAgICBhbmQg
bWF5IG9yIG1heSBub3QgYmUgd3JhcHBlZCBpbnRvIGEgbWVzcyBvZiBtYXJrIG9iamVjdHMKLQot
ICAgICAgICA6cGFyYW0gbGVnYWN5X2ZvcmNlX3R1cGxlOgotICAgICAgICAgICAgZW5mb3JjZSB0
dXBsZSB3cmFwcGluZyBzbyBzaW5nbGUgYXJndW1lbnQgdHVwbGUgdmFsdWVzCi0gICAgICAgICAg
ICBkb24ndCBnZXQgZGVjb21wb3NlZCBhbmQgYnJlYWsgdGVzdHMKLQotICAgICAgICAiIiIKLQot
ICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlcnNldCwgY2xzKToKLSAgICAgICAgICAgIHJl
dHVybiBwYXJhbWV0ZXJzZXQKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVyc2V0
LCBNYXJrRGVjb3JhdG9yKSBhbmQgbGVnYWN5X2ZvcmNlX3R1cGxlOgotICAgICAgICAgICAgcmV0
dXJuIGNscy5wYXJhbShwYXJhbWV0ZXJzZXQpCi0KLSAgICAgICAgbmV3bWFya3MgPSBbXQotICAg
ICAgICBhcmd2YWwgPSBwYXJhbWV0ZXJzZXQKLSAgICAgICAgd2hpbGUgaXNpbnN0YW5jZShhcmd2
YWwsIE1hcmtEZWNvcmF0b3IpOgotICAgICAgICAgICAgbmV3bWFya3MuYXBwZW5kKE1hcmtEZWNv
cmF0b3IoTWFyaygKLSAgICAgICAgICAgICAgICBhcmd2YWwubWFya25hbWUsIGFyZ3ZhbC5hcmdz
WzotMV0sIGFyZ3ZhbC5rd2FyZ3MpKSkKLSAgICAgICAgICAgIGFyZ3ZhbCA9IGFyZ3ZhbC5hcmdz
Wy0xXQotICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoYXJndmFsLCBQYXJhbWV0ZXJTZXQp
Ci0gICAgICAgIGlmIGxlZ2FjeV9mb3JjZV90dXBsZToKLSAgICAgICAgICAgIGFyZ3ZhbCA9IGFy
Z3ZhbCwKLQotICAgICAgICBpZiBuZXdtYXJrczoKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4o
TUFSS19QQVJBTUVURVJTRVRfVU5QQUNLSU5HKQotCi0gICAgICAgIHJldHVybiBjbHMoYXJndmFs
LCBtYXJrcz1uZXdtYXJrcywgaWQ9Tm9uZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBf
Zm9yX3BhcmFtZXRlcml6ZShjbHMsIGFyZ25hbWVzLCBhcmd2YWx1ZXMsIGZ1bmN0aW9uKToKLSAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnbmFtZXMsICh0dXBsZSwgbGlzdCkpOgotICAgICAg
ICAgICAgYXJnbmFtZXMgPSBbeC5zdHJpcCgpIGZvciB4IGluIGFyZ25hbWVzLnNwbGl0KCIsIikg
aWYgeC5zdHJpcCgpXQotICAgICAgICAgICAgZm9yY2VfdHVwbGUgPSBsZW4oYXJnbmFtZXMpID09
IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvcmNlX3R1cGxlID0gRmFsc2UKLSAgICAg
ICAgcGFyYW1ldGVycyA9IFsKLSAgICAgICAgICAgIFBhcmFtZXRlclNldC5leHRyYWN0X2Zyb20o
eCwgbGVnYWN5X2ZvcmNlX3R1cGxlPWZvcmNlX3R1cGxlKQotICAgICAgICAgICAgZm9yIHggaW4g
YXJndmFsdWVzXQotICAgICAgICBkZWwgYXJndmFsdWVzCi0KLSAgICAgICAgaWYgbm90IHBhcmFt
ZXRlcnM6Ci0gICAgICAgICAgICBmcywgbGluZW5vID0gZ2V0ZnNsaW5lbm8oZnVuY3Rpb24pCi0g
ICAgICAgICAgICByZWFzb24gPSAiZ290IGVtcHR5IHBhcmFtZXRlciBzZXQgJXIsIGZ1bmN0aW9u
ICVzIGF0ICVzOiVkIiAlICgKLSAgICAgICAgICAgICAgICBhcmduYW1lcywgZnVuY3Rpb24uX19u
YW1lX18sIGZzLCBsaW5lbm8pCi0gICAgICAgICAgICBtYXJrID0gTUFSS19HRU4uc2tpcChyZWFz
b249cmVhc29uKQotICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyU2V0KAot
ICAgICAgICAgICAgICAgIHZhbHVlcz0oTk9UU0VULCkgKiBsZW4oYXJnbmFtZXMpLAotICAgICAg
ICAgICAgICAgIG1hcmtzPVttYXJrXSwKLSAgICAgICAgICAgICAgICBpZD1Ob25lLAotICAgICAg
ICAgICAgKSkKLSAgICAgICAgcmV0dXJuIGFyZ25hbWVzLCBwYXJhbWV0ZXJzCi0KLQotY2xhc3Mg
TWFya2VyRXJyb3IoRXhjZXB0aW9uKToKLQotICAgICIiIkVycm9yIGluIHVzZSBvZiBhIHB5dGVz
dCBtYXJrZXIvYXR0cmlidXRlLiIiIgotCi0KLWRlZiBwYXJhbSgqdmFsdWVzLCAqKmt3KToKLSAg
ICByZXR1cm4gUGFyYW1ldGVyU2V0LnBhcmFtKCp2YWx1ZXMsICoqa3cpCi0KLQotZGVmIHB5dGVz
dF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJh
bCIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigKLSAgICAgICAgJy1rJywKLSAgICAgICAgYWN0aW9u
PSJzdG9yZSIsIGRlc3Q9ImtleXdvcmQiLCBkZWZhdWx0PScnLCBtZXRhdmFyPSJFWFBSRVNTSU9O
IiwKLSAgICAgICAgaGVscD0ib25seSBydW4gdGVzdHMgd2hpY2ggbWF0Y2ggdGhlIGdpdmVuIHN1
YnN0cmluZyBleHByZXNzaW9uLiAiCi0gICAgICAgICAgICAgIkFuIGV4cHJlc3Npb24gaXMgYSBw
eXRob24gZXZhbHVhdGFibGUgZXhwcmVzc2lvbiAiCi0gICAgICAgICAgICAgIndoZXJlIGFsbCBu
YW1lcyBhcmUgc3Vic3RyaW5nLW1hdGNoZWQgYWdhaW5zdCB0ZXN0IG5hbWVzICIKLSAgICAgICAg
ICAgICAiYW5kIHRoZWlyIHBhcmVudCBjbGFzc2VzLiBFeGFtcGxlOiAtayAndGVzdF9tZXRob2Qg
b3IgdGVzdF8iCi0gICAgICAgICAgICAgIm90aGVyJyBtYXRjaGVzIGFsbCB0ZXN0IGZ1bmN0aW9u
cyBhbmQgY2xhc3NlcyB3aG9zZSBuYW1lICIKLSAgICAgICAgICAgICAiY29udGFpbnMgJ3Rlc3Rf
bWV0aG9kJyBvciAndGVzdF9vdGhlcicsIHdoaWxlIC1rICdub3QgdGVzdF9tZXRob2QnICIKLSAg
ICAgICAgICAgICAibWF0Y2hlcyB0aG9zZSB0aGF0IGRvbid0IGNvbnRhaW4gJ3Rlc3RfbWV0aG9k
JyBpbiB0aGVpciBuYW1lcy4gIgotICAgICAgICAgICAgICJBZGRpdGlvbmFsbHkga2V5d29yZHMg
YXJlIG1hdGNoZWQgdG8gY2xhc3NlcyBhbmQgZnVuY3Rpb25zICIKLSAgICAgICAgICAgICAiY29u
dGFpbmluZyBleHRyYSBuYW1lcyBpbiB0aGVpciAnZXh0cmFfa2V5d29yZF9tYXRjaGVzJyBzZXQs
ICIKLSAgICAgICAgICAgICAiYXMgd2VsbCBhcyBmdW5jdGlvbnMgd2hpY2ggaGF2ZSBuYW1lcyBh
c3NpZ25lZCBkaXJlY3RseSB0byB0aGVtLiIKLSAgICApCi0KLSAgICBncm91cC5fYWRkb3B0aW9u
KAotICAgICAgICAiLW0iLAotICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibWFya2V4cHIi
LCBkZWZhdWx0PSIiLCBtZXRhdmFyPSJNQVJLRVhQUiIsCi0gICAgICAgIGhlbHA9Im9ubHkgcnVu
IHRlc3RzIG1hdGNoaW5nIGdpdmVuIG1hcmsgZXhwcmVzc2lvbi4gICIKLSAgICAgICAgICAgICAi
ZXhhbXBsZTogLW0gJ21hcmsxIGFuZCBub3QgbWFyazInLiIKLSAgICApCi0KLSAgICBncm91cC5h
ZGRvcHRpb24oCi0gICAgICAgICItLW1hcmtlcnMiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAg
ICAgICBoZWxwPSJzaG93IG1hcmtlcnMgKGJ1aWx0aW4sIHBsdWdpbiBhbmQgcGVyLXByb2plY3Qg
b25lcykuIgotICAgICkKLQotICAgIHBhcnNlci5hZGRpbmkoIm1hcmtlcnMiLCAibWFya2VycyBm
b3IgdGVzdCBmdW5jdGlvbnMiLCAnbGluZWxpc3QnKQotCi0KLWRlZiBweXRlc3RfY21kbGluZV9t
YWluKGNvbmZpZyk6Ci0gICAgaW1wb3J0IF9weXRlc3QuY29uZmlnCi0gICAgaWYgY29uZmlnLm9w
dGlvbi5tYXJrZXJzOgotICAgICAgICBjb25maWcuX2RvX2NvbmZpZ3VyZSgpCi0gICAgICAgIHR3
ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihjb25maWcpCi0gICAgICAg
IGZvciBsaW5lIGluIGNvbmZpZy5nZXRpbmkoIm1hcmtlcnMiKToKLSAgICAgICAgICAgIHBhcnRz
ID0gbGluZS5zcGxpdCgiOiIsIDEpCi0gICAgICAgICAgICBuYW1lID0gcGFydHNbMF0KLSAgICAg
ICAgICAgIHJlc3QgPSBwYXJ0c1sxXSBpZiBsZW4ocGFydHMpID09IDIgZWxzZSAnJwotICAgICAg
ICAgICAgdHcud3JpdGUoIkBweXRlc3QubWFyay4lczoiICUgbmFtZSwgYm9sZD1UcnVlKQotICAg
ICAgICAgICAgdHcubGluZShyZXN0KQotICAgICAgICAgICAgdHcubGluZSgpCi0gICAgICAgIGNv
bmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkKLSAgICAgICAgcmV0dXJuIDAKLQotCi1weXRlc3Rf
Y21kbGluZV9tYWluLnRyeWZpcnN0ID0gVHJ1ZQotCi0KLWRlZiBweXRlc3RfY29sbGVjdGlvbl9t
b2RpZnlpdGVtcyhpdGVtcywgY29uZmlnKToKLSAgICBrZXl3b3JkZXhwciA9IGNvbmZpZy5vcHRp
b24ua2V5d29yZC5sc3RyaXAoKQotICAgIG1hdGNoZXhwciA9IGNvbmZpZy5vcHRpb24ubWFya2V4
cHIKLSAgICBpZiBub3Qga2V5d29yZGV4cHIgYW5kIG5vdCBtYXRjaGV4cHI6Ci0gICAgICAgIHJl
dHVybgotICAgICMgcHl0ZXN0IHVzZWQgdG8gYWxsb3cgIi0iIGZvciBuZWdhdGluZwotICAgICMg
YnV0IHRvZGF5IHdlIGp1c3QgYWxsb3cgIi0iIGF0IHRoZSBiZWdpbm5pbmcsIHVzZSAibm90IiBp
bnN0ZWFkCi0gICAgIyB3ZSBwcm9iYWJseSByZW1vdmUgIi0iIGFsdG9nZXRoZXIgc29vbgotICAg
IGlmIGtleXdvcmRleHByLnN0YXJ0c3dpdGgoIi0iKToKLSAgICAgICAga2V5d29yZGV4cHIgPSAi
bm90ICIgKyBrZXl3b3JkZXhwclsxOl0KLSAgICBzZWxlY3R1bnRpbCA9IEZhbHNlCi0gICAgaWYg
a2V5d29yZGV4cHJbLTE6XSA9PSAiOiI6Ci0gICAgICAgIHNlbGVjdHVudGlsID0gVHJ1ZQotICAg
ICAgICBrZXl3b3JkZXhwciA9IGtleXdvcmRleHByWzotMV0KLQotICAgIHJlbWFpbmluZyA9IFtd
Ci0gICAgZGVzZWxlY3RlZCA9IFtdCi0gICAgZm9yIGNvbGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAg
IGlmIGtleXdvcmRleHByIGFuZCBub3QgbWF0Y2hrZXl3b3JkKGNvbGl0ZW0sIGtleXdvcmRleHBy
KToKLSAgICAgICAgICAgIGRlc2VsZWN0ZWQuYXBwZW5kKGNvbGl0ZW0pCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBpZiBzZWxlY3R1bnRpbDoKLSAgICAgICAgICAgICAgICBrZXl3b3JkZXhw
ciA9IE5vbmUKLSAgICAgICAgICAgIGlmIG1hdGNoZXhwcjoKLSAgICAgICAgICAgICAgICBpZiBu
b3QgbWF0Y2htYXJrKGNvbGl0ZW0sIG1hdGNoZXhwcik6Ci0gICAgICAgICAgICAgICAgICAgIGRl
c2VsZWN0ZWQuYXBwZW5kKGNvbGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKGNvbGl0ZW0pCi0KLSAgICBpZiBkZXNlbGVjdGVk
OgotICAgICAgICBjb25maWcuaG9vay5weXRlc3RfZGVzZWxlY3RlZChpdGVtcz1kZXNlbGVjdGVk
KQotICAgICAgICBpdGVtc1s6XSA9IHJlbWFpbmluZwotCi0KLUBhdHRyLnMKLWNsYXNzIE1hcmtN
YXBwaW5nKG9iamVjdCk6Ci0gICAgIiIiUHJvdmlkZXMgYSBsb2NhbCBtYXBwaW5nIGZvciBtYXJr
ZXJzIHdoZXJlIGl0ZW0gYWNjZXNzCi0gICAgcmVzb2x2ZXMgdG8gVHJ1ZSBpZiB0aGUgbWFya2Vy
IGlzIHByZXNlbnQuICIiIgotCi0gICAgb3duX21hcmtfbmFtZXMgPSBhdHRyLmliKCkKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2tleXdvcmRzKGNscywga2V5d29yZHMpOgotICAg
ICAgICBtYXJrX25hbWVzID0gc2V0KCkKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga2V5d29y
ZHMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIE1hcmtJbmZvKSBv
ciBpc2luc3RhbmNlKHZhbHVlLCBNYXJrRGVjb3JhdG9yKToKLSAgICAgICAgICAgICAgICBtYXJr
X25hbWVzLmFkZChrZXkpCi0gICAgICAgIHJldHVybiBjbHMobWFya19uYW1lcykKLQotICAgIGRl
ZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5v
d25fbWFya19uYW1lcwotCi0KLWNsYXNzIEtleXdvcmRNYXBwaW5nKG9iamVjdCk6Ci0gICAgIiIi
UHJvdmlkZXMgYSBsb2NhbCBtYXBwaW5nIGZvciBrZXl3b3Jkcy4KLSAgICBHaXZlbiBhIGxpc3Qg
b2YgbmFtZXMsIG1hcCBhbnkgc3Vic3RyaW5nIG9mIG9uZSBvZiB0aGVzZSBuYW1lcyB0byBUcnVl
LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzKToKLSAgICAgICAgc2Vs
Zi5fbmFtZXMgPSBuYW1lcwotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHN1Ym5hbWUpOgot
ICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLl9uYW1lczoKLSAgICAgICAgICAgIGlmIHN1Ym5hbWUg
aW4gbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFs
c2UKLQotCi1kZWYgbWF0Y2htYXJrKGNvbGl0ZW0sIG1hcmtleHByKToKLSAgICAiIiJUcmllcyB0
byBtYXRjaCBvbiBhbnkgbWFya2VyIG5hbWVzLCBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gY29saXRl
bS4iIiIKLSAgICByZXR1cm4gZXZhbChtYXJrZXhwciwge30sIE1hcmtNYXBwaW5nLmZyb21fa2V5
d29yZHMoY29saXRlbS5rZXl3b3JkcykpCi0KLQotZGVmIG1hdGNoa2V5d29yZChjb2xpdGVtLCBr
ZXl3b3JkZXhwcik6Ci0gICAgIiIiVHJpZXMgdG8gbWF0Y2ggZ2l2ZW4ga2V5d29yZCBleHByZXNz
aW9uIHRvIGdpdmVuIGNvbGxlY3RvciBpdGVtLgotCi0gICAgV2lsbCBtYXRjaCBvbiB0aGUgbmFt
ZSBvZiBjb2xpdGVtLCBpbmNsdWRpbmcgdGhlIG5hbWVzIG9mIGl0cyBwYXJlbnRzLgotICAgIE9u
bHkgbWF0Y2hlcyBuYW1lcyBvZiBpdGVtcyB3aGljaCBhcmUgZWl0aGVyIGEgOmNsYXNzOmBDbGFz
c2Agb3IgYQotICAgIDpjbGFzczpgRnVuY3Rpb25gLgotICAgIEFkZGl0aW9uYWxseSwgbWF0Y2hl
cyBvbiBuYW1lcyBpbiB0aGUgJ2V4dHJhX2tleXdvcmRfbWF0Y2hlcycgc2V0IG9mCi0gICAgYW55
IGl0ZW0sIGFzIHdlbGwgYXMgbmFtZXMgZGlyZWN0bHkgYXNzaWduZWQgdG8gdGVzdCBmdW5jdGlv
bnMuCi0gICAgIiIiCi0gICAgbWFwcGVkX25hbWVzID0gc2V0KCkKLQotICAgICMgQWRkIHRoZSBu
YW1lcyBvZiB0aGUgY3VycmVudCBpdGVtIGFuZCBhbnkgcGFyZW50IGl0ZW1zCi0gICAgaW1wb3J0
IHB5dGVzdAotICAgIGZvciBpdGVtIGluIGNvbGl0ZW0ubGlzdGNoYWluKCk6Ci0gICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKGl0ZW0sIHB5dGVzdC5JbnN0YW5jZSk6Ci0gICAgICAgICAgICBtYXBw
ZWRfbmFtZXMuYWRkKGl0ZW0ubmFtZSkKLQotICAgICMgQWRkIHRoZSBuYW1lcyBhZGRlZCBhcyBl
eHRyYSBrZXl3b3JkcyB0byBjdXJyZW50IG9yIHBhcmVudCBpdGVtcwotICAgIGZvciBuYW1lIGlu
IGNvbGl0ZW0ubGlzdGV4dHJha2V5d29yZHMoKToKLSAgICAgICAgbWFwcGVkX25hbWVzLmFkZChu
YW1lKQotCi0gICAgIyBBZGQgdGhlIG5hbWVzIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IGZ1bmN0
aW9uIHRocm91Z2ggZGlyZWN0IGFzc2lnbm1lbnQKLSAgICBpZiBoYXNhdHRyKGNvbGl0ZW0sICdm
dW5jdGlvbicpOgotICAgICAgICBmb3IgbmFtZSBpbiBjb2xpdGVtLmZ1bmN0aW9uLl9fZGljdF9f
OgotICAgICAgICAgICAgbWFwcGVkX25hbWVzLmFkZChuYW1lKQotCi0gICAgbWFwcGluZyA9IEtl
eXdvcmRNYXBwaW5nKG1hcHBlZF9uYW1lcykKLSAgICBpZiAiICIgbm90IGluIGtleXdvcmRleHBy
OgotICAgICAgICAjIHNwZWNpYWwgY2FzZSB0byBhbGxvdyBmb3Igc2ltcGxlICItayBwYXNzIiBh
bmQgIi1rIDEuMyIKLSAgICAgICAgcmV0dXJuIG1hcHBpbmdba2V5d29yZGV4cHJdCi0gICAgZWxp
ZiBrZXl3b3JkZXhwci5zdGFydHN3aXRoKCJub3QgIikgYW5kICIgIiBub3QgaW4ga2V5d29yZGV4
cHJbNDpdOgotICAgICAgICByZXR1cm4gbm90IG1hcHBpbmdba2V5d29yZGV4cHJbNDpdXQotICAg
IHJldHVybiBldmFsKGtleXdvcmRleHByLCB7fSwgbWFwcGluZykKLQotCi1kZWYgcHl0ZXN0X2Nv
bmZpZ3VyZShjb25maWcpOgotICAgIGNvbmZpZy5fb2xkX21hcmtfY29uZmlnID0gTUFSS19HRU4u
X2NvbmZpZwotICAgIGlmIGNvbmZpZy5vcHRpb24uc3RyaWN0OgotICAgICAgICBNQVJLX0dFTi5f
Y29uZmlnID0gY29uZmlnCi0KLQotZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgotICAg
IE1BUktfR0VOLl9jb25maWcgPSBnZXRhdHRyKGNvbmZpZywgJ19vbGRfbWFya19jb25maWcnLCBO
b25lKQotCi0KLWNsYXNzIE1hcmtHZW5lcmF0b3I6Ci0gICAgIiIiIEZhY3RvcnkgZm9yIDpjbGFz
czpgTWFya0RlY29yYXRvcmAgb2JqZWN0cyAtIGV4cG9zZWQgYXMKLSAgICBhIGBgcHl0ZXN0Lm1h
cmtgYCBzaW5nbGV0b24gaW5zdGFuY2UuICBFeGFtcGxlOjoKLQotICAgICAgICAgaW1wb3J0IHB5
dGVzdAotICAgICAgICAgQHB5dGVzdC5tYXJrLnNsb3d0ZXN0Ci0gICAgICAgICBkZWYgdGVzdF9m
dW5jdGlvbigpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgd2lsbCBzZXQgYSAnc2xvd3Rlc3Qn
IDpjbGFzczpgTWFya0luZm9gIG9iamVjdAotICAgIG9uIHRoZSBgYHRlc3RfZnVuY3Rpb25gYCBv
YmplY3QuICIiIgotICAgIF9jb25maWcgPSBOb25lCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2Vs
ZiwgbmFtZSk6Ci0gICAgICAgIGlmIG5hbWVbMF0gPT0gIl8iOgotICAgICAgICAgICAgcmFpc2Ug
QXR0cmlidXRlRXJyb3IoIk1hcmtlciBuYW1lIG11c3QgTk9UIHN0YXJ0IHdpdGggdW5kZXJzY29y
ZSIpCi0gICAgICAgIGlmIHNlbGYuX2NvbmZpZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNl
bGYuX2NoZWNrKG5hbWUpCi0gICAgICAgIHJldHVybiBNYXJrRGVjb3JhdG9yKE1hcmsobmFtZSwg
KCksIHt9KSkKLQotICAgIGRlZiBfY2hlY2soc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5fbWFya2VyczoKLSAgICAgICAgICAgICAgICByZXR1
cm4KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAg
ICAgICBzZWxmLl9tYXJrZXJzID0gdmFsdWVzID0gc2V0KCkKLSAgICAgICAgZm9yIGxpbmUgaW4g
c2VsZi5fY29uZmlnLmdldGluaSgibWFya2VycyIpOgotICAgICAgICAgICAgbWFya2VyID0gbGlu
ZS5zcGxpdCgiOiIsIDEpWzBdCi0gICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXIucnN0cmlwKCkK
LSAgICAgICAgICAgIHggPSBtYXJrZXIuc3BsaXQoIigiLCAxKVswXQotICAgICAgICAgICAgdmFs
dWVzLmFkZCh4KQotICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tYXJrZXJzOgotICAgICAg
ICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVyIG5vdCBhIHJlZ2lzdGVyZWQgbWFya2VyIiAl
IChuYW1lLCkpCi0KLQotZGVmIGlzdGVzdGZ1bmMoZnVuYyk6Ci0gICAgcmV0dXJuIGhhc2F0dHIo
ZnVuYywgIl9fY2FsbF9fIikgYW5kIFwKLSAgICAgICAgZ2V0YXR0cihmdW5jLCAiX19uYW1lX18i
LCAiPGxhbWJkYT4iKSAhPSAiPGxhbWJkYT4iCi0KLQotQGF0dHIucyhmcm96ZW49VHJ1ZSkKLWNs
YXNzIE1hcmsob2JqZWN0KToKLSAgICBuYW1lID0gYXR0ci5pYigpCi0gICAgYXJncyA9IGF0dHIu
aWIoKQotICAgIGt3YXJncyA9IGF0dHIuaWIoKQotCi0gICAgZGVmIGNvbWJpbmVkX3dpdGgoc2Vs
Ziwgb3RoZXIpOgotICAgICAgICBhc3NlcnQgc2VsZi5uYW1lID09IG90aGVyLm5hbWUKLSAgICAg
ICAgcmV0dXJuIE1hcmsoCi0gICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYuYXJncyArIG90aGVy
LmFyZ3MsCi0gICAgICAgICAgICBkaWN0KHNlbGYua3dhcmdzLCAqKm90aGVyLmt3YXJncykpCi0K
LQotQGF0dHIucwotY2xhc3MgTWFya0RlY29yYXRvcihvYmplY3QpOgotICAgICIiIiBBIGRlY29y
YXRvciBmb3IgdGVzdCBmdW5jdGlvbnMgYW5kIHRlc3QgY2xhc3Nlcy4gIFdoZW4gYXBwbGllZAot
ICAgIGl0IHdpbGwgY3JlYXRlIDpjbGFzczpgTWFya0luZm9gIG9iamVjdHMgd2hpY2ggbWF5IGJl
Ci0gICAgOnJlZjpgcmV0cmlldmVkIGJ5IGhvb2tzIGFzIGl0ZW0ga2V5d29yZHMgPGV4Y29udHJv
bHNraXA+YC4KLSAgICBNYXJrRGVjb3JhdG9yIGluc3RhbmNlcyBhcmUgb2Z0ZW4gY3JlYXRlZCBs
aWtlIHRoaXM6OgotCi0gICAgICAgIG1hcmsxID0gcHl0ZXN0Lm1hcmsuTkFNRSAgICAgICAgICAg
ICAgIyBzaW1wbGUgTWFya0RlY29yYXRvcgotICAgICAgICBtYXJrMiA9IHB5dGVzdC5tYXJrLk5B
TUUobmFtZTE9dmFsdWUpICMgcGFyYW1ldHJpemVkIE1hcmtEZWNvcmF0b3IKLQotICAgIGFuZCBj
YW4gdGhlbiBiZSBhcHBsaWVkIGFzIGRlY29yYXRvcnMgdG8gdGVzdCBmdW5jdGlvbnM6OgotCi0g
ICAgICAgIEBtYXJrMgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgICAgICAg
cGFzcwotCi0gICAgV2hlbiBhIE1hcmtEZWNvcmF0b3IgaW5zdGFuY2UgaXMgY2FsbGVkIGl0IGRv
ZXMgdGhlIGZvbGxvd2luZzoKLSAgICAgIDEuIElmIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGNsYXNz
IGFzIGl0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kIG5vCi0gICAgICAgICBhZGRpdGlv
bmFsIGtleXdvcmQgYXJndW1lbnRzLCBpdCBhdHRhY2hlcyBpdHNlbGYgdG8gdGhlIGNsYXNzIHNv
IGl0Ci0gICAgICAgICBnZXRzIGFwcGxpZWQgYXV0b21hdGljYWxseSB0byBhbGwgdGVzdCBjYXNl
cyBmb3VuZCBpbiB0aGF0IGNsYXNzLgotICAgICAgMi4gSWYgY2FsbGVkIHdpdGggYSBzaW5nbGUg
ZnVuY3Rpb24gYXMgaXRzIG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQKLSAgICAgICAgIG5v
IGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGl0IGF0dGFjaGVzIGEgTWFya0luZm8gb2Jq
ZWN0IHRvIHRoZQotICAgICAgICAgZnVuY3Rpb24sIGNvbnRhaW5pbmcgYWxsIHRoZSBhcmd1bWVu
dHMgYWxyZWFkeSBzdG9yZWQgaW50ZXJuYWxseSBpbgotICAgICAgICAgdGhlIE1hcmtEZWNvcmF0
b3IuCi0gICAgICAzLiBXaGVuIGNhbGxlZCBpbiBhbnkgb3RoZXIgY2FzZSwgaXQgcGVyZm9ybXMg
YSAnZmFrZSBjb25zdHJ1Y3Rpb24nIGNhbGwsCi0gICAgICAgICBpLmUuIGl0IHJldHVybnMgYSBu
ZXcgTWFya0RlY29yYXRvciBpbnN0YW5jZSB3aXRoIHRoZSBvcmlnaW5hbAotICAgICAgICAgTWFy
a0RlY29yYXRvcidzIGNvbnRlbnQgdXBkYXRlZCB3aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRv
IHRoaXMKLSAgICAgICAgIGNhbGwuCi0KLSAgICBOb3RlOiBUaGUgcnVsZXMgYWJvdmUgcHJldmVu
dCBNYXJrRGVjb3JhdG9yIG9iamVjdHMgZnJvbSBzdG9yaW5nIG9ubHkgYQotICAgIHNpbmdsZSBm
dW5jdGlvbiBvciBjbGFzcyByZWZlcmVuY2UgYXMgdGhlaXIgcG9zaXRpb25hbCBhcmd1bWVudCB3
aXRoIG5vCi0gICAgYWRkaXRpb25hbCBrZXl3b3JkIG9yIHBvc2l0aW9uYWwgYXJndW1lbnRzLgot
Ci0gICAgIiIiCi0KLSAgICBtYXJrID0gYXR0ci5pYih2YWxpZGF0b3I9YXR0ci52YWxpZGF0b3Jz
Lmluc3RhbmNlX29mKE1hcmspKQotCi0gICAgbmFtZSA9IGFsaWFzKCdtYXJrLm5hbWUnKQotICAg
IGFyZ3MgPSBhbGlhcygnbWFyay5hcmdzJykKLSAgICBrd2FyZ3MgPSBhbGlhcygnbWFyay5rd2Fy
Z3MnKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG1hcmtuYW1lKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5uYW1lICAjIGZvciBiYWNrd2FyZC1jb21wYXQgKDIuNC4xIGhhZCB0aGlzIGF0
dHIpCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
bWFyayA9PSBvdGhlci5tYXJrIGlmIGlzaW5zdGFuY2Uob3RoZXIsIE1hcmtEZWNvcmF0b3IpIGVs
c2UgRmFsc2UKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8TWFy
a0RlY29yYXRvciAlcj4iICUgKHNlbGYubWFyaywpCi0KLSAgICBkZWYgd2l0aF9hcmdzKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIiByZXR1cm4gYSBNYXJrRGVjb3JhdG9yIHdp
dGggZXh0cmEgYXJndW1lbnRzIGFkZGVkCi0KLSAgICAgICAgdW5saWtlIGNhbGwgdGhpcyBjYW4g
YmUgdXNlZCBldmVuIGlmIHRoZSBzb2xlIGFyZ3VtZW50IGlzIGEgY2FsbGFibGUvY2xhc3MKLQot
ICAgICAgICA6cmV0dXJuOiBNYXJrRGVjb3JhdG9yCi0gICAgICAgICIiIgotCi0gICAgICAgIG1h
cmsgPSBNYXJrKHNlbGYubmFtZSwgYXJncywga3dhcmdzKQotICAgICAgICByZXR1cm4gc2VsZi5f
X2NsYXNzX18oc2VsZi5tYXJrLmNvbWJpbmVkX3dpdGgobWFyaykpCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIiIGlmIHBhc3NlZCBhIHNpbmds
ZSBjYWxsYWJsZSBhcmd1bWVudDogZGVjb3JhdGUgaXQgd2l0aCBtYXJrIGluZm8uCi0gICAgICAg
ICAgICBvdGhlcndpc2UgYWRkICphcmdzLyoqa3dhcmdzIGluLXBsYWNlIHRvIG1hcmsgaW5mb3Jt
YXRpb24uICIiIgotICAgICAgICBpZiBhcmdzIGFuZCBub3Qga3dhcmdzOgotICAgICAgICAgICAg
ZnVuYyA9IGFyZ3NbMF0KLSAgICAgICAgICAgIGlzX2NsYXNzID0gaW5zcGVjdC5pc2NsYXNzKGZ1
bmMpCi0gICAgICAgICAgICBpZiBsZW4oYXJncykgPT0gMSBhbmQgKGlzdGVzdGZ1bmMoZnVuYykg
b3IgaXNfY2xhc3MpOgotICAgICAgICAgICAgICAgIGlmIGlzX2NsYXNzOgotICAgICAgICAgICAg
ICAgICAgICBzdG9yZV9tYXJrKGZ1bmMsIHNlbGYubWFyaykKLSAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICBzdG9yZV9sZWdhY3lfbWFya2luZm8oZnVuYywgc2VsZi5t
YXJrKQotICAgICAgICAgICAgICAgICAgICBzdG9yZV9tYXJrKGZ1bmMsIHNlbGYubWFyaykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuYwotICAgICAgICByZXR1cm4gc2VsZi53aXRoX2FyZ3Mo
KmFyZ3MsICoqa3dhcmdzKQotCi0KLWRlZiBnZXRfdW5wYWNrZWRfbWFya3Mob2JqKToKLSAgICAi
IiIKLSAgICBvYnRhaW4gdGhlIHVucGFja2VkIG1hcmtzIHRoYXQgYXJlIHN0b3JlZCBvbiBhIG9i
amVjdAotICAgICIiIgotICAgIG1hcmtfbGlzdCA9IGdldGF0dHIob2JqLCAncHl0ZXN0bWFyaycs
IFtdKQotCi0gICAgaWYgbm90IGlzaW5zdGFuY2UobWFya19saXN0LCBsaXN0KToKLSAgICAgICAg
bWFya19saXN0ID0gW21hcmtfbGlzdF0KLSAgICByZXR1cm4gWwotICAgICAgICBnZXRhdHRyKG1h
cmssICdtYXJrJywgbWFyaykgICMgdW5wYWNrIE1hcmtEZWNvcmF0b3IKLSAgICAgICAgZm9yIG1h
cmsgaW4gbWFya19saXN0Ci0gICAgXQotCi0KLWRlZiBzdG9yZV9tYXJrKG9iaiwgbWFyayk6Ci0g
ICAgIiIic3RvcmUgYSBNYXJrIG9uIGEgb2JqZWN0Ci0gICAgdGhpcyBpcyB1c2VkIHRvIGltcGxl
bWVudCB0aGUgTWFyayBkZWNsYXJhdGlvbnMvZGVjb3JhdG9ycyBjb3JyZWN0bHkKLSAgICAiIiIK
LSAgICBhc3NlcnQgaXNpbnN0YW5jZShtYXJrLCBNYXJrKSwgbWFyawotICAgICMgYWx3YXlzIHJl
YXNzaWduIG5hbWUgdG8gYXZvaWQgdXBkYXRpbmcgcHl0ZXN0bWFyawotICAgICMgaW4gYSByZWZl
cmVuY2UgdGhhdCB3YXMgb25seSBib3Jyb3dlZAotICAgIG9iai5weXRlc3RtYXJrID0gZ2V0X3Vu
cGFja2VkX21hcmtzKG9iaikgKyBbbWFya10KLQotCi1kZWYgc3RvcmVfbGVnYWN5X21hcmtpbmZv
KGZ1bmMsIG1hcmspOgotICAgICIiImNyZWF0ZSB0aGUgbGVnYWN5IE1hcmtJbmZvIG9iamVjdHMg
YW5kIHB1dCB0aGVtIG9udG8gdGhlIGZ1bmN0aW9uCi0gICAgIiIiCi0gICAgaWYgbm90IGlzaW5z
dGFuY2UobWFyaywgTWFyayk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZ290IHttYXJrIXJ9
IGluc3RlYWQgb2YgYSBNYXJrIi5mb3JtYXQobWFyaz1tYXJrKSkKLSAgICBob2xkZXIgPSBnZXRh
dHRyKGZ1bmMsIG1hcmsubmFtZSwgTm9uZSkKLSAgICBpZiBob2xkZXIgaXMgTm9uZToKLSAgICAg
ICAgaG9sZGVyID0gTWFya0luZm8obWFyaykKLSAgICAgICAgc2V0YXR0cihmdW5jLCBtYXJrLm5h
bWUsIGhvbGRlcikKLSAgICBlbHNlOgotICAgICAgICBob2xkZXIuYWRkX21hcmsobWFyaykKLQot
Ci1jbGFzcyBNYXJrSW5mbyhvYmplY3QpOgotICAgICIiIiBNYXJraW5nIG9iamVjdCBjcmVhdGVk
IGJ5IDpjbGFzczpgTWFya0RlY29yYXRvcmAgaW5zdGFuY2VzLiAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtYXJrKToKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWFyaywgTWFyayks
IHJlcHIobWFyaykKLSAgICAgICAgc2VsZi5jb21iaW5lZCA9IG1hcmsKLSAgICAgICAgc2VsZi5f
bWFya3MgPSBbbWFya10KLQotICAgIG5hbWUgPSBhbGlhcygnY29tYmluZWQubmFtZScpCi0gICAg
YXJncyA9IGFsaWFzKCdjb21iaW5lZC5hcmdzJykKLSAgICBrd2FyZ3MgPSBhbGlhcygnY29tYmlu
ZWQua3dhcmdzJykKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8
TWFya0luZm8gezAhcn0+Ii5mb3JtYXQoc2VsZi5jb21iaW5lZCkKLQotICAgIGRlZiBhZGRfbWFy
ayhzZWxmLCBtYXJrKToKLSAgICAgICAgIiIiIGFkZCBhIE1hcmtJbmZvIHdpdGggdGhlIGdpdmVu
IGFyZ3MgYW5kIGt3YXJncy4gIiIiCi0gICAgICAgIHNlbGYuX21hcmtzLmFwcGVuZChtYXJrKQot
ICAgICAgICBzZWxmLmNvbWJpbmVkID0gc2VsZi5jb21iaW5lZC5jb21iaW5lZF93aXRoKG1hcmsp
Ci0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIiB5aWVsZCBNYXJrSW5mbyBv
YmplY3RzIGVhY2ggcmVsYXRpbmcgdG8gYSBtYXJraW5nLWNhbGwuICIiIgotICAgICAgICByZXR1
cm4gbWFwKE1hcmtJbmZvLCBzZWxmLl9tYXJrcykKLQotCi1NQVJLX0dFTiA9IE1hcmtHZW5lcmF0
b3IoKQotCi0KLWRlZiBfbWFya2VkKGZ1bmMsIG1hcmspOgotICAgICIiIiBSZXR1cm5zIFRydWUg
aWYgOmZ1bmM6IGlzIGFscmVhZHkgbWFya2VkIHdpdGggOm1hcms6LCBGYWxzZSBvdGhlcndpc2Uu
Ci0gICAgVGhpcyBjYW4gaGFwcGVuIGlmIG1hcmtlciBpcyBhcHBsaWVkIHRvIGNsYXNzIGFuZCB0
aGUgdGVzdCBmaWxlIGlzCi0gICAgaW52b2tlZCBtb3JlIHRoYW4gb25jZS4KLSAgICAiIiIKLSAg
ICB0cnk6Ci0gICAgICAgIGZ1bmNfbWFyayA9IGdldGF0dHIoZnVuYywgbWFyay5uYW1lKQotICAg
IGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJu
IG1hcmsuYXJncyA9PSBmdW5jX21hcmsuYXJncyBhbmQgbWFyay5rd2FyZ3MgPT0gZnVuY19tYXJr
Lmt3YXJncwotCi0KLWRlZiB0cmFuc2Zlcl9tYXJrZXJzKGZ1bmNvYmosIGNscywgbW9kKToKLSAg
ICAiIiIKLSAgICB0aGlzIGZ1bmN0aW9uIHRyYW5zZmVycyBjbGFzcyBsZXZlbCBtYXJrZXJzIGFu
ZCBtb2R1bGUgbGV2ZWwgbWFya2VycwotICAgIGludG8gZnVuY3Rpb24gbGV2ZWwgbWFya2luZm8g
b2JqZWN0cwotCi0gICAgdGhpcyBpcyB0aGUgbWFpbiByZWFzb24gd2h5IG1hcmtzIGFyZSBzbyBi
cm9rZW4KLSAgICB0aGUgcmVzb2x1dGlvbiB3aWxsIGludm9sdmUgcGhhc2luZyBvdXQgZnVuY3Rp
b24gbGV2ZWwgTWFya0luZm8gb2JqZWN0cwotCi0gICAgIiIiCi0gICAgZm9yIG9iaiBpbiAoY2xz
LCBtb2QpOgotICAgICAgICBmb3IgbWFyayBpbiBnZXRfdW5wYWNrZWRfbWFya3Mob2JqKToKLSAg
ICAgICAgICAgIGlmIG5vdCBfbWFya2VkKGZ1bmNvYmosIG1hcmspOgotICAgICAgICAgICAgICAg
IHN0b3JlX2xlZ2FjeV9tYXJraW5mbyhmdW5jb2JqLCBtYXJrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9tb25rZXlwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbW9ua2V5
cGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYWU1NjBmMDcwMi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbW9ua2V5cGF0Y2gucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotIiIiIG1vbmtleXBhdGNoaW5nIGFuZCBtb2NraW5n
IGZ1bmN0aW9uYWxpdHkuICAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1p
bXBvcnQgcmUKLWltcG9ydCBzaXgKLWZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgZml4dHVy
ZQotCi1SRV9JTVBPUlRfRVJST1JfTkFNRSA9IHJlLmNvbXBpbGUoIl5ObyBtb2R1bGUgbmFtZWQg
KC4qKSQiKQotCi0KLUBmaXh0dXJlCi1kZWYgbW9ua2V5cGF0Y2goKToKLSAgICAiIiJUaGUgcmV0
dXJuZWQgYGBtb25rZXlwYXRjaGBgIGZpeHR1cmUgcHJvdmlkZXMgdGhlc2UKLSAgICBoZWxwZXIg
bWV0aG9kcyB0byBtb2RpZnkgb2JqZWN0cywgZGljdGlvbmFyaWVzIG9yIG9zLmVudmlyb246Ogot
Ci0gICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIob2JqLCBuYW1lLCB2YWx1ZSwgcmFpc2luZz1U
cnVlKQotICAgICAgICBtb25rZXlwYXRjaC5kZWxhdHRyKG9iaiwgbmFtZSwgcmFpc2luZz1UcnVl
KQotICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKG1hcHBpbmcsIG5hbWUsIHZhbHVlKQotICAg
ICAgICBtb25rZXlwYXRjaC5kZWxpdGVtKG9iaiwgbmFtZSwgcmFpc2luZz1UcnVlKQotICAgICAg
ICBtb25rZXlwYXRjaC5zZXRlbnYobmFtZSwgdmFsdWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgICAg
IG1vbmtleXBhdGNoLmRlbGVudihuYW1lLCB2YWx1ZSwgcmFpc2luZz1UcnVlKQotICAgICAgICBt
b25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQocGF0aCkKLSAgICAgICAgbW9ua2V5cGF0Y2guY2hk
aXIocGF0aCkKLQotICAgIEFsbCBtb2RpZmljYXRpb25zIHdpbGwgYmUgdW5kb25lIGFmdGVyIHRo
ZSByZXF1ZXN0aW5nCi0gICAgdGVzdCBmdW5jdGlvbiBvciBmaXh0dXJlIGhhcyBmaW5pc2hlZC4g
VGhlIGBgcmFpc2luZ2BgCi0gICAgcGFyYW1ldGVyIGRldGVybWluZXMgaWYgYSBLZXlFcnJvciBv
ciBBdHRyaWJ1dGVFcnJvcgotICAgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBzZXQvZGVsZXRpb24g
b3BlcmF0aW9uIGhhcyBubyB0YXJnZXQuCi0gICAgIiIiCi0gICAgbXBhdGNoID0gTW9ua2V5UGF0
Y2goKQotICAgIHlpZWxkIG1wYXRjaAotICAgIG1wYXRjaC51bmRvKCkKLQotCi1kZWYgcmVzb2x2
ZShuYW1lKToKLSAgICAjIHNpbXBsaWZpZWQgZnJvbSB6b3BlLmRvdHRlZG5hbWUKLSAgICBwYXJ0
cyA9IG5hbWUuc3BsaXQoJy4nKQotCi0gICAgdXNlZCA9IHBhcnRzLnBvcCgwKQotICAgIGZvdW5k
ID0gX19pbXBvcnRfXyh1c2VkKQotICAgIGZvciBwYXJ0IGluIHBhcnRzOgotICAgICAgICB1c2Vk
ICs9ICcuJyArIHBhcnQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm91bmQgPSBnZXRhdHRy
KGZvdW5kLCBwYXJ0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAg
ICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAjIHdl
IHVzZSBleHBsaWNpdCB1bi1uZXN0aW5nIG9mIHRoZSBoYW5kbGluZyBibG9jayBpbiBvcmRlcgot
ICAgICAgICAjIHRvIGF2b2lkIG5lc3RlZCBleGNlcHRpb25zIG9uIHB5dGhvbiAzCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIF9faW1wb3J0X18odXNlZCkKLSAgICAgICAgZXhjZXB0IEltcG9y
dEVycm9yIGFzIGV4OgotICAgICAgICAgICAgIyBzdHIgaXMgdXNlZCBmb3IgcHkyIHZzIHB5Mwot
ICAgICAgICAgICAgZXhwZWN0ZWQgPSBzdHIoZXgpLnNwbGl0KClbLTFdCi0gICAgICAgICAgICBp
ZiBleHBlY3RlZCA9PSB1c2VkOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAotICAgICAgICAgICAgICAg
ICAgICAnaW1wb3J0IGVycm9yIGluICVzOiAlcycgJSAodXNlZCwgZXgpCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICBmb3VuZCA9IGFubm90YXRlZF9nZXRhdHRyKGZvdW5kLCBwYXJ0LCB1c2Vk
KQotICAgIHJldHVybiBmb3VuZAotCi0KLWRlZiBhbm5vdGF0ZWRfZ2V0YXR0cihvYmosIG5hbWUs
IGFubik6Ci0gICAgdHJ5OgotICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgbmFtZSkKLSAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAotICAg
ICAgICAgICAgJyVyIG9iamVjdCBhdCAlcyBoYXMgbm8gYXR0cmlidXRlICVyJyAlICgKLSAgICAg
ICAgICAgICAgICB0eXBlKG9iaikuX19uYW1lX18sIGFubiwgbmFtZQotICAgICAgICAgICAgKQot
ICAgICAgICApCi0gICAgcmV0dXJuIG9iagotCi0KLWRlZiBkZXJpdmVfaW1wb3J0cGF0aChpbXBv
cnRfcGF0aCwgcmFpc2luZyk6Ci0gICAgaWYgbm90IGlzaW5zdGFuY2UoaW1wb3J0X3BhdGgsIHNp
eC5zdHJpbmdfdHlwZXMpIG9yICIuIiBub3QgaW4gaW1wb3J0X3BhdGg6Ci0gICAgICAgIHJhaXNl
IFR5cGVFcnJvcigibXVzdCBiZSBhYnNvbHV0ZSBpbXBvcnQgcGF0aCBzdHJpbmcsIG5vdCAlciIg
JQotICAgICAgICAgICAgICAgICAgICAgICAgKGltcG9ydF9wYXRoLCkpCi0gICAgbW9kdWxlLCBh
dHRyID0gaW1wb3J0X3BhdGgucnNwbGl0KCcuJywgMSkKLSAgICB0YXJnZXQgPSByZXNvbHZlKG1v
ZHVsZSkKLSAgICBpZiByYWlzaW5nOgotICAgICAgICBhbm5vdGF0ZWRfZ2V0YXR0cih0YXJnZXQs
IGF0dHIsIGFubj1tb2R1bGUpCi0gICAgcmV0dXJuIGF0dHIsIHRhcmdldAotCi0KLWNsYXNzIE5v
dHNldDoKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPG5vdHNldD4i
Ci0KLQotbm90c2V0ID0gTm90c2V0KCkKLQotCi1jbGFzcyBNb25rZXlQYXRjaDoKLSAgICAiIiIg
T2JqZWN0IHJldHVybmVkIGJ5IHRoZSBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBrZWVwaW5nIGEg
cmVjb3JkIG9mIHNldGF0dHIvaXRlbS9lbnYvc3lzcGF0aCBjaGFuZ2VzLgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9zZXRhdHRyID0gW10KLSAgICAg
ICAgc2VsZi5fc2V0aXRlbSA9IFtdCi0gICAgICAgIHNlbGYuX2N3ZCA9IE5vbmUKLSAgICAgICAg
c2VsZi5fc2F2ZXN5c3BhdGggPSBOb25lCi0KLSAgICBkZWYgc2V0YXR0cihzZWxmLCB0YXJnZXQs
IG5hbWUsIHZhbHVlPW5vdHNldCwgcmFpc2luZz1UcnVlKToKLSAgICAgICAgIiIiIFNldCBhdHRy
aWJ1dGUgdmFsdWUgb24gdGFyZ2V0LCBtZW1vcml6aW5nIHRoZSBvbGQgdmFsdWUuCi0gICAgICAg
IEJ5IGRlZmF1bHQgcmFpc2UgQXR0cmlidXRlRXJyb3IgaWYgdGhlIGF0dHJpYnV0ZSBkaWQgbm90
IGV4aXN0LgotCi0gICAgICAgIEZvciBjb252ZW5pZW5jZSB5b3UgY2FuIHNwZWNpZnkgYSBzdHJp
bmcgYXMgYGB0YXJnZXRgYCB3aGljaAotICAgICAgICB3aWxsIGJlIGludGVycHJldGVkIGFzIGEg
ZG90dGVkIGltcG9ydCBwYXRoLCB3aXRoIHRoZSBsYXN0IHBhcnQKLSAgICAgICAgYmVpbmcgdGhl
IGF0dHJpYnV0ZSBuYW1lLiAgRXhhbXBsZToKLSAgICAgICAgYGBtb25rZXlwYXRjaC5zZXRhdHRy
KCJvcy5nZXRjd2QiLCBsYW1iZGEgeDogIi8iKWBgCi0gICAgICAgIHdvdWxkIHNldCB0aGUgYGBn
ZXRjd2RgYCBmdW5jdGlvbiBvZiB0aGUgYGBvc2BgIG1vZHVsZS4KLQotICAgICAgICBUaGUgYGBy
YWlzaW5nYGAgdmFsdWUgZGV0ZXJtaW5lcyBpZiB0aGUgc2V0YXR0ciBzaG91bGQgZmFpbAotICAg
ICAgICBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBhbHJlYWR5IHByZXNlbnQgKGRlZmF1bHRzIHRv
IFRydWUKLSAgICAgICAgd2hpY2ggbWVhbnMgaXQgd2lsbCByYWlzZSkuCi0gICAgICAgICIiIgot
ICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgaW1wb3J0IGluc3BlY3QK
LQotICAgICAgICBpZiB2YWx1ZSBpcyBub3RzZXQ6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZSh0YXJnZXQsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcigidXNlIHNldGF0dHIodGFyZ2V0LCBuYW1lLCB2YWx1ZSkgb3IgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic2V0YXR0cih0YXJnZXQsIHZhbHVlKSB3aXRoIHRhcmdl
dCBiZWluZyBhIGRvdHRlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBv
cnQgc3RyaW5nIikKLSAgICAgICAgICAgIHZhbHVlID0gbmFtZQotICAgICAgICAgICAgbmFtZSwg
dGFyZ2V0ID0gZGVyaXZlX2ltcG9ydHBhdGgodGFyZ2V0LCByYWlzaW5nKQotCi0gICAgICAgIG9s
ZHZhbCA9IGdldGF0dHIodGFyZ2V0LCBuYW1lLCBub3RzZXQpCi0gICAgICAgIGlmIHJhaXNpbmcg
YW5kIG9sZHZhbCBpcyBub3RzZXQ6Ci0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigi
JXIgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKSkKLQotICAgICAgICAjIGF2
b2lkIGNsYXNzIGRlc2NyaXB0b3JzIGxpa2Ugc3RhdGljbWV0aG9kL2NsYXNzbWV0aG9kCi0gICAg
ICAgIGlmIGluc3BlY3QuaXNjbGFzcyh0YXJnZXQpOgotICAgICAgICAgICAgb2xkdmFsID0gdGFy
Z2V0Ll9fZGljdF9fLmdldChuYW1lLCBub3RzZXQpCi0gICAgICAgIHNlbGYuX3NldGF0dHIuYXBw
ZW5kKCh0YXJnZXQsIG5hbWUsIG9sZHZhbCkpCi0gICAgICAgIHNldGF0dHIodGFyZ2V0LCBuYW1l
LCB2YWx1ZSkKLQotICAgIGRlZiBkZWxhdHRyKHNlbGYsIHRhcmdldCwgbmFtZT1ub3RzZXQsIHJh
aXNpbmc9VHJ1ZSk6Ci0gICAgICAgICIiIiBEZWxldGUgYXR0cmlidXRlIGBgbmFtZWBgIGZyb20g
YGB0YXJnZXRgYCwgYnkgZGVmYXVsdCByYWlzZQotICAgICAgICBBdHRyaWJ1dGVFcnJvciBpdCB0
aGUgYXR0cmlidXRlIGRpZCBub3QgcHJldmlvdXNseSBleGlzdC4KLQotICAgICAgICBJZiBubyBg
YG5hbWVgYCBpcyBzcGVjaWZpZWQgYW5kIGBgdGFyZ2V0YGAgaXMgYSBzdHJpbmcKLSAgICAgICAg
aXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIGRvdHRlZCBpbXBvcnQgcGF0aCB3aXRoIHRoZQot
ICAgICAgICBsYXN0IHBhcnQgYmVpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lLgotCi0gICAgICAgIElm
IGBgcmFpc2luZ2BgIGlzIHNldCB0byBGYWxzZSwgbm8gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2Vk
IGlmIHRoZQotICAgICAgICBhdHRyaWJ1dGUgaXMgbWlzc2luZy4KLSAgICAgICAgIiIiCi0gICAg
ICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICBpZiBuYW1lIGlzIG5vdHNldDoK
LSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgc2l4LnN0cmluZ190eXBlcyk6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ1c2UgZGVsYXR0cih0YXJnZXQsIG5h
bWUpIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGF0dHIodGFyZ2V0
KSB3aXRoIHRhcmdldCBiZWluZyBhIGRvdHRlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJpbXBvcnQgc3RyaW5nIikKLSAgICAgICAgICAgIG5hbWUsIHRhcmdldCA9IGRlcml2
ZV9pbXBvcnRwYXRoKHRhcmdldCwgcmFpc2luZykKLQotICAgICAgICBpZiBub3QgaGFzYXR0cih0
YXJnZXQsIG5hbWUpOgotICAgICAgICAgICAgaWYgcmFpc2luZzoKLSAgICAgICAgICAgICAgICBy
YWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2Vs
Zi5fc2V0YXR0ci5hcHBlbmQoKHRhcmdldCwgbmFtZSwgZ2V0YXR0cih0YXJnZXQsIG5hbWUsIG5v
dHNldCkpKQotICAgICAgICAgICAgZGVsYXR0cih0YXJnZXQsIG5hbWUpCi0KLSAgICBkZWYgc2V0
aXRlbShzZWxmLCBkaWMsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgIiIiIFNldCBkaWN0aW9uYXJ5
IGVudHJ5IGBgbmFtZWBgIHRvIHZhbHVlLiAiIiIKLSAgICAgICAgc2VsZi5fc2V0aXRlbS5hcHBl
bmQoKGRpYywgbmFtZSwgZGljLmdldChuYW1lLCBub3RzZXQpKSkKLSAgICAgICAgZGljW25hbWVd
ID0gdmFsdWUKLQotICAgIGRlZiBkZWxpdGVtKHNlbGYsIGRpYywgbmFtZSwgcmFpc2luZz1UcnVl
KToKLSAgICAgICAgIiIiIERlbGV0ZSBgYG5hbWVgYCBmcm9tIGRpY3QuIFJhaXNlIEtleUVycm9y
IGlmIGl0IGRvZXNuJ3QgZXhpc3QuCi0KLSAgICAgICAgSWYgYGByYWlzaW5nYGAgaXMgc2V0IHRv
IEZhbHNlLCBubyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaWYgdGhlCi0gICAgICAgIGtleSBp
cyBtaXNzaW5nLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbmFtZSBub3QgaW4gZGljOgotICAg
ICAgICAgICAgaWYgcmFpc2luZzoKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihuYW1l
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc2V0aXRlbS5hcHBlbmQoKGRpYywg
bmFtZSwgZGljLmdldChuYW1lLCBub3RzZXQpKSkKLSAgICAgICAgICAgIGRlbCBkaWNbbmFtZV0K
LQotICAgIGRlZiBzZXRlbnYoc2VsZiwgbmFtZSwgdmFsdWUsIHByZXBlbmQ9Tm9uZSk6Ci0gICAg
ICAgICIiIiBTZXQgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBuYW1lYGAgdG8gYGB2YWx1ZWBgLiAg
SWYgYGBwcmVwZW5kYGAKLSAgICAgICAgaXMgYSBjaGFyYWN0ZXIsIHJlYWQgdGhlIGN1cnJlbnQg
ZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWUKLSAgICAgICAgYW5kIHByZXBlbmQgdGhlIGBgdmFs
dWVgYCBhZGpvaW5lZCB3aXRoIHRoZSBgYHByZXBlbmRgYCBjaGFyYWN0ZXIuIiIiCi0gICAgICAg
IHZhbHVlID0gc3RyKHZhbHVlKQotICAgICAgICBpZiBwcmVwZW5kIGFuZCBuYW1lIGluIG9zLmVu
dmlyb246Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgcHJlcGVuZCArIG9zLmVudmlyb25b
bmFtZV0KLSAgICAgICAgc2VsZi5zZXRpdGVtKG9zLmVudmlyb24sIG5hbWUsIHZhbHVlKQotCi0g
ICAgZGVmIGRlbGVudihzZWxmLCBuYW1lLCByYWlzaW5nPVRydWUpOgotICAgICAgICAiIiIgRGVs
ZXRlIGBgbmFtZWBgIGZyb20gdGhlIGVudmlyb25tZW50LiBSYWlzZSBLZXlFcnJvciBpdCBkb2Vz
IG5vdAotICAgICAgICBleGlzdC4KLQotICAgICAgICBJZiBgYHJhaXNpbmdgYCBpcyBzZXQgdG8g
RmFsc2UsIG5vIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0aGUKLSAgICAgICAgZW52aXJv
bm1lbnQgdmFyaWFibGUgaXMgbWlzc2luZy4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZGVs
aXRlbShvcy5lbnZpcm9uLCBuYW1lLCByYWlzaW5nPXJhaXNpbmcpCi0KLSAgICBkZWYgc3lzcGF0
aF9wcmVwZW5kKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiIgUHJlcGVuZCBgYHBhdGhgYCB0byBg
YHN5cy5wYXRoYGAgbGlzdCBvZiBpbXBvcnQgbG9jYXRpb25zLiAiIiIKLSAgICAgICAgaWYgc2Vs
Zi5fc2F2ZXN5c3BhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3NhdmVzeXNwYXRoID0g
c3lzLnBhdGhbOl0KLSAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHN0cihwYXRoKSkKLQotICAg
IGRlZiBjaGRpcihzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiIENoYW5nZSB0aGUgY3VycmVudCB3
b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguCi0gICAgICAgIFBhdGggY2Fu
IGJlIGEgc3RyaW5nIG9yIGEgcHkucGF0aC5sb2NhbCBvYmplY3QuCi0gICAgICAgICIiIgotICAg
ICAgICBpZiBzZWxmLl9jd2QgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2N3ZCA9IG9zLmdl
dGN3ZCgpCi0gICAgICAgIGlmIGhhc2F0dHIocGF0aCwgImNoZGlyIik6Ci0gICAgICAgICAgICBw
YXRoLmNoZGlyKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLmNoZGlyKHBhdGgpCi0K
LSAgICBkZWYgdW5kbyhzZWxmKToKLSAgICAgICAgIiIiIFVuZG8gcHJldmlvdXMgY2hhbmdlcy4g
IFRoaXMgY2FsbCBjb25zdW1lcyB0aGUKLSAgICAgICAgdW5kbyBzdGFjay4gQ2FsbGluZyBpdCBh
IHNlY29uZCB0aW1lIGhhcyBubyBlZmZlY3QgdW5sZXNzCi0gICAgICAgIHlvdSBkbyBtb3JlIG1v
bmtleXBhdGNoaW5nIGFmdGVyIHRoZSB1bmRvIGNhbGwuCi0KLSAgICAgICAgVGhlcmUgaXMgZ2Vu
ZXJhbGx5IG5vIG5lZWQgdG8gY2FsbCBgdW5kbygpYCwgc2luY2UgaXQgaXMKLSAgICAgICAgY2Fs
bGVkIGF1dG9tYXRpY2FsbHkgZHVyaW5nIHRlYXItZG93bi4KLQotICAgICAgICBOb3RlIHRoYXQg
dGhlIHNhbWUgYG1vbmtleXBhdGNoYCBmaXh0dXJlIGlzIHVzZWQgYWNyb3NzIGEKLSAgICAgICAg
c2luZ2xlIHRlc3QgZnVuY3Rpb24gaW52b2NhdGlvbi4gSWYgYG1vbmtleXBhdGNoYCBpcyB1c2Vk
IGJvdGggYnkKLSAgICAgICAgdGhlIHRlc3QgZnVuY3Rpb24gaXRzZWxmIGFuZCBvbmUgb2YgdGhl
IHRlc3QgZml4dHVyZXMsCi0gICAgICAgIGNhbGxpbmcgYHVuZG8oKWAgd2lsbCB1bmRvIGFsbCBv
ZiB0aGUgY2hhbmdlcyBtYWRlIGluCi0gICAgICAgIGJvdGggZnVuY3Rpb25zLgotICAgICAgICAi
IiIKLSAgICAgICAgZm9yIG9iaiwgbmFtZSwgdmFsdWUgaW4gcmV2ZXJzZWQoc2VsZi5fc2V0YXR0
cik6Ci0gICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3Qgbm90c2V0OgotICAgICAgICAgICAgICAg
IHNldGF0dHIob2JqLCBuYW1lLCB2YWx1ZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgZGVsYXR0cihvYmosIG5hbWUpCi0gICAgICAgIHNlbGYuX3NldGF0dHJbOl0gPSBbXQot
ICAgICAgICBmb3IgZGljdGlvbmFyeSwgbmFtZSwgdmFsdWUgaW4gcmV2ZXJzZWQoc2VsZi5fc2V0
aXRlbSk6Ci0gICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3RzZXQ6Ci0gICAgICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgICAgICBkZWwgZGljdGlvbmFyeVtuYW1lXQotICAgICAgICAg
ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcyAgIyB3YXMg
YWxyZWFkeSBkZWxldGVkLCBzbyB3ZSBoYXZlIHRoZSBkZXNpcmVkIHN0YXRlCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlbbmFtZV0gPSB2YWx1ZQotICAgICAg
ICBzZWxmLl9zZXRpdGVtWzpdID0gW10KLSAgICAgICAgaWYgc2VsZi5fc2F2ZXN5c3BhdGggaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBzeXMucGF0aFs6XSA9IHNlbGYuX3NhdmVzeXNwYXRoCi0g
ICAgICAgICAgICBzZWxmLl9zYXZlc3lzcGF0aCA9IE5vbmUKLQotICAgICAgICBpZiBzZWxmLl9j
d2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBvcy5jaGRpcihzZWxmLl9jd2QpCi0gICAgICAg
ICAgICBzZWxmLl9jd2QgPSBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25v
ZGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ub2Rlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWQzYWYyY2U2N2M4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9ub2Rlcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNFUCA9ICIv
IgotCi0KLWRlZiBfc3BsaXRub2RlKG5vZGVpZCk6Ci0gICAgIiIiU3BsaXQgYSBub2RlaWQgaW50
byBjb25zdGl0dWVudCAncGFydHMnLgotCi0gICAgTm9kZSBJRHMgYXJlIHN0cmluZ3MsIGFuZCBj
YW4gYmUgdGhpbmdzIGxpa2U6Ci0gICAgICAgICcnCi0gICAgICAgICd0ZXN0aW5nL2NvZGUnCi0g
ICAgICAgICd0ZXN0aW5nL2NvZGUvdGVzdF9leGNpbmZvLnB5JwotICAgICAgICAndGVzdGluZy9j
b2RlL3Rlc3RfZXhjaW5mby5weTo6VGVzdEZvcm1hdHRlZEV4Y2luZm86OigpJwotCi0gICAgUmV0
dXJuIHZhbHVlcyBhcmUgbGlzdHMgZS5nLgotICAgICAgICBbXQotICAgICAgICBbJ3Rlc3Rpbmcn
LCAnY29kZSddCi0gICAgICAgIFsndGVzdGluZycsICdjb2RlJywgJ3Rlc3RfZXhjaW5mby5weSdd
Ci0gICAgICAgIFsndGVzdGluZycsICdjb2RlJywgJ3Rlc3RfZXhjaW5mby5weScsICdUZXN0Rm9y
bWF0dGVkRXhjaW5mbycsICcoKSddCi0gICAgIiIiCi0gICAgaWYgbm9kZWlkID09ICcnOgotICAg
ICAgICAjIElmIHRoZXJlIGlzIG5vIHJvb3Qgbm9kZSBhdCBhbGwsIHJldHVybiBhbiBlbXB0eSBs
aXN0IHNvIHRoZSBjYWxsZXIncyBsb2dpYyBjYW4gcmVtYWluIHNhbmUKLSAgICAgICAgcmV0dXJu
IFtdCi0gICAgcGFydHMgPSBub2RlaWQuc3BsaXQoU0VQKQotICAgICMgUmVwbGFjZSBzaW5nbGUg
bGFzdCBlbGVtZW50ICd0ZXN0X2Zvby5weTo6QmFyOjooKScgd2l0aCBtdWx0aXBsZSBlbGVtZW50
cyAndGVzdF9mb28ucHknLCAnQmFyJywgJygpJwotICAgIHBhcnRzWy0xOl0gPSBwYXJ0c1stMV0u
c3BsaXQoIjo6IikKLSAgICByZXR1cm4gcGFydHMKLQotCi1kZWYgaXNjaGlsZG5vZGUoYmFzZWlk
LCBub2RlaWQpOgotICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBub2RlaWQgaXMgYSBjaGlsZCBu
b2RlIG9mIHRoZSBiYXNlaWQuCi0KLSAgICBFLmcuICdmb28vYmFyOjpCYXo6OigpJyBpcyBhIGNo
aWxkIG9mICdmb28nLCAnZm9vL2JhcicgYW5kICdmb28vYmFyOjpCYXonLCBidXQgbm90IG9mICdm
b28vYmxvcnAnCi0gICAgIiIiCi0gICAgYmFzZV9wYXJ0cyA9IF9zcGxpdG5vZGUoYmFzZWlkKQot
ICAgIG5vZGVfcGFydHMgPSBfc3BsaXRub2RlKG5vZGVpZCkKLSAgICBpZiBsZW4obm9kZV9wYXJ0
cykgPCBsZW4oYmFzZV9wYXJ0cyk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBu
b2RlX3BhcnRzWzpsZW4oYmFzZV9wYXJ0cyldID09IGJhc2VfcGFydHMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3Qvbm9zZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvbm9zZS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxNTQyZWFkZjM3Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ub3NlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzIg
KzAsMCBAQAotIiIiIHJ1biB0ZXN0IHN1aXRlcyB3cml0dGVuIGZvciBub3NlLiAiIiIKLWZyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rp
b24KLQotaW1wb3J0IHN5cwotCi1mcm9tIF9weXRlc3QgaW1wb3J0IHVuaXR0ZXN0LCBydW5uZXIs
IHB5dGhvbgotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va2ltcGwKLQotCi1kZWYgZ2V0
X3NraXBfZXhjZXB0aW9ucygpOgotICAgIHNraXBfY2xhc3NlcyA9IHNldCgpCi0gICAgZm9yIG1v
ZHVsZV9uYW1lIGluICgndW5pdHRlc3QnLCAndW5pdHRlc3QyJywgJ25vc2UnKToKLSAgICAgICAg
bW9kID0gc3lzLm1vZHVsZXMuZ2V0KG1vZHVsZV9uYW1lKQotICAgICAgICBpZiBoYXNhdHRyKG1v
ZCwgJ1NraXBUZXN0Jyk6Ci0gICAgICAgICAgICBza2lwX2NsYXNzZXMuYWRkKG1vZC5Ta2lwVGVz
dCkKLSAgICByZXR1cm4gdHVwbGUoc2tpcF9jbGFzc2VzKQotCi0KLWRlZiBweXRlc3RfcnVudGVz
dF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgotICAgIGlmIGNhbGwuZXhjaW5mbyBhbmQgY2FsbC5l
eGNpbmZvLmVycmlzaW5zdGFuY2UoZ2V0X3NraXBfZXhjZXB0aW9ucygpKToKLSAgICAgICAgIyBs
ZXQncyBzdWJzdGl0dXRlIHRoZSBleGNpbmZvIHdpdGggYSBweXRlc3Quc2tpcCBvbmUKLSAgICAg
ICAgY2FsbDIgPSBjYWxsLl9fY2xhc3NfXygKLSAgICAgICAgICAgIGxhbWJkYTogcnVubmVyLnNr
aXAoc3RyKGNhbGwuZXhjaW5mby52YWx1ZSkpLCBjYWxsLndoZW4pCi0gICAgICAgIGNhbGwuZXhj
aW5mbyA9IGNhbGwyLmV4Y2luZm8KLQotCi1AaG9va2ltcGwodHJ5bGFzdD1UcnVlKQotZGVmIHB5
dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgIGlmIGlzX3BvdGVudGlhbF9ub3NldGVzdChp
dGVtKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLnBhcmVudCwgcHl0aG9uLkdlbmVyYXRv
cik6Ci0gICAgICAgICAgICBnZW4gPSBpdGVtLnBhcmVudAotICAgICAgICAgICAgaWYgbm90IGhh
c2F0dHIoZ2VuLCAnX25vc2VnZW5zZXR1cCcpOgotICAgICAgICAgICAgICAgIGNhbGxfb3B0aW9u
YWwoZ2VuLm9iaiwgJ3NldHVwJykKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdlbi5w
YXJlbnQsIHB5dGhvbi5JbnN0YW5jZSk6Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxfb3B0aW9u
YWwoZ2VuLnBhcmVudC5vYmosICdzZXR1cCcpCi0gICAgICAgICAgICAgICAgZ2VuLl9ub3NlZ2Vu
c2V0dXAgPSBUcnVlCi0gICAgICAgIGlmIG5vdCBjYWxsX29wdGlvbmFsKGl0ZW0ub2JqLCAnc2V0
dXAnKToKLSAgICAgICAgICAgICMgY2FsbCBtb2R1bGUgbGV2ZWwgc2V0dXAgaWYgdGhlcmUgaXMg
bm8gb2JqZWN0IGxldmVsIG9uZQotICAgICAgICAgICAgY2FsbF9vcHRpb25hbChpdGVtLnBhcmVu
dC5vYmosICdzZXR1cCcpCi0gICAgICAgICMgWFhYIHRoaXMgaW1wbGllcyB3ZSBvbmx5IGNhbGwg
dGVhcmRvd24gd2hlbiBzZXR1cCB3b3JrZWQKLSAgICAgICAgaXRlbS5zZXNzaW9uLl9zZXR1cHN0
YXRlLmFkZGZpbmFsaXplcigobGFtYmRhOiB0ZWFyZG93bl9ub3NlKGl0ZW0pKSwgaXRlbSkKLQot
Ci1kZWYgdGVhcmRvd25fbm9zZShpdGVtKToKLSAgICBpZiBpc19wb3RlbnRpYWxfbm9zZXRlc3Qo
aXRlbSk6Ci0gICAgICAgIGlmIG5vdCBjYWxsX29wdGlvbmFsKGl0ZW0ub2JqLCAndGVhcmRvd24n
KToKLSAgICAgICAgICAgIGNhbGxfb3B0aW9uYWwoaXRlbS5wYXJlbnQub2JqLCAndGVhcmRvd24n
KQotICAgICAgICAjIGlmIGhhc2F0dHIoaXRlbS5wYXJlbnQsICdfbm9zZWdlbnNldHVwJyk6Ci0g
ICAgICAgICMgICAgI2NhbGxfb3B0aW9uYWwoaXRlbS5fbm9zZWdlbnNldHVwLCAndGVhcmRvd24n
KQotICAgICAgICAjICAgIGRlbCBpdGVtLnBhcmVudC5fbm9zZWdlbnNldHVwCi0KLQotZGVmIHB5
dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcik6Ci0gICAgaWYgaXNpbnN0YW5jZShj
b2xsZWN0b3IsIHB5dGhvbi5HZW5lcmF0b3IpOgotICAgICAgICBjYWxsX29wdGlvbmFsKGNvbGxl
Y3Rvci5vYmosICdzZXR1cCcpCi0KLQotZGVmIGlzX3BvdGVudGlhbF9ub3NldGVzdChpdGVtKToK
LSAgICAjIGV4dHJhIGNoZWNrIG5lZWRlZCBzaW5jZSB3ZSBkbyBub3QgZG8gbm9zZSBzdHlsZSBz
ZXR1cC90ZWFyZG93bgotICAgICMgb24gZGlyZWN0IHVuaXR0ZXN0IHN0eWxlIGNsYXNzZXMKLSAg
ICByZXR1cm4gaXNpbnN0YW5jZShpdGVtLCBweXRob24uRnVuY3Rpb24pIGFuZCBcCi0gICAgICAg
IG5vdCBpc2luc3RhbmNlKGl0ZW0sIHVuaXR0ZXN0LlRlc3RDYXNlRnVuY3Rpb24pCi0KLQotZGVm
IGNhbGxfb3B0aW9uYWwob2JqLCBuYW1lKToKLSAgICBtZXRob2QgPSBnZXRhdHRyKG9iaiwgbmFt
ZSwgTm9uZSkKLSAgICBpc2ZpeHR1cmUgPSBoYXNhdHRyKG1ldGhvZCwgIl9weXRlc3RmaXh0dXJl
ZnVuY3Rpb24iKQotICAgIGlmIG1ldGhvZCBpcyBub3QgTm9uZSBhbmQgbm90IGlzZml4dHVyZSBh
bmQgY2FsbGFibGUobWV0aG9kKToKLSAgICAgICAgIyBJZiB0aGVyZSdzIGFueSBwcm9ibGVtcyBh
bGxvdyB0aGUgZXhjZXB0aW9uIHRvIHJhaXNlIHJhdGhlciB0aGFuCi0gICAgICAgICMgc2lsZW50
bHkgaWdub3JpbmcgdGhlbQotICAgICAgICBtZXRob2QoKQotICAgICAgICByZXR1cm4gVHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9vdXRjb21lcy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3Qvb3V0Y29tZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMGMx
OGZhNmMxYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvb3V0Y29tZXMu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotIiIiCi1leGNlcHRpb24gY2xhc3Nl
cyBhbmQgY29uc3RhbnRzIGhhbmRsaW5nIHRlc3Qgb3V0Y29tZXMKLWFzIHdlbGwgYXMgZnVuY3Rp
b25zIGNyZWF0aW5nIHRoZW0KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHB5Ci1pbXBvcnQgc3lzCi0K
LQotY2xhc3MgT3V0Y29tZUV4Y2VwdGlvbihCYXNlRXhjZXB0aW9uKToKLSAgICAiIiIgT3V0Y29t
ZUV4Y2VwdGlvbiBhbmQgaXRzIHN1YmNsYXNzIGluc3RhbmNlcyBpbmRpY2F0ZSBhbmQKLSAgICAg
ICAgY29udGFpbiBpbmZvIGFib3V0IHRlc3QgYW5kIGNvbGxlY3Rpb24gb3V0Y29tZXMuCi0gICAg
IiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZz1Ob25lLCBweXRyYWNlPVRydWUpOgotICAg
ICAgICBCYXNlRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKLSAgICAgICAgc2VsZi5tc2cg
PSBtc2cKLSAgICAgICAgc2VsZi5weXRyYWNlID0gcHl0cmFjZQotCi0gICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1zZzoKLSAgICAgICAgICAgIHZhbCA9IHNlbGYubXNn
Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgYnl0ZXMpOgotICAgICAgICAgICAgICAg
IHZhbCA9IHB5Ll9idWlsdGluLl90b3RleHQodmFsLCBlcnJvcnM9J3JlcGxhY2UnKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbAotICAgICAgICByZXR1cm4gIjwlcyBpbnN0YW5jZT4iICUgKHNlbGYu
X19jbGFzc19fLl9fbmFtZV9fLCkKLSAgICBfX3N0cl9fID0gX19yZXByX18KLQotCi1URVNUX09V
VENPTUUgPSAoT3V0Y29tZUV4Y2VwdGlvbiwgRXhjZXB0aW9uKQotCi0KLWNsYXNzIFNraXBwZWQo
T3V0Y29tZUV4Y2VwdGlvbik6Ci0gICAgIyBYWFggaGFja2lzaDogb24gM2sgd2UgZmFrZSB0byBs
aXZlIGluIHRoZSBidWlsdGlucwotICAgICMgaW4gb3JkZXIgdG8gaGF2ZSBTa2lwcGVkIGV4Y2Vw
dGlvbiBwcmludGluZyBzaG9ydGVyL25pY2VyCi0gICAgX19tb2R1bGVfXyA9ICdidWlsdGlucycK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2c9Tm9uZSwgcHl0cmFjZT1UcnVlLCBhbGxvd19t
b2R1bGVfbGV2ZWw9RmFsc2UpOgotICAgICAgICBPdXRjb21lRXhjZXB0aW9uLl9faW5pdF9fKHNl
bGYsIG1zZz1tc2csIHB5dHJhY2U9cHl0cmFjZSkKLSAgICAgICAgc2VsZi5hbGxvd19tb2R1bGVf
bGV2ZWwgPSBhbGxvd19tb2R1bGVfbGV2ZWwKLQotCi1jbGFzcyBGYWlsZWQoT3V0Y29tZUV4Y2Vw
dGlvbik6Ci0gICAgIiIiIHJhaXNlZCBmcm9tIGFuIGV4cGxpY2l0IGNhbGwgdG8gcHl0ZXN0LmZh
aWwoKSAiIiIKLSAgICBfX21vZHVsZV9fID0gJ2J1aWx0aW5zJwotCi0KLWNsYXNzIEV4aXQoS2V5
Ym9hcmRJbnRlcnJ1cHQpOgotICAgICIiIiByYWlzZWQgZm9yIGltbWVkaWF0ZSBwcm9ncmFtIGV4
aXRzIChubyB0cmFjZWJhY2tzL3N1bW1hcmllcykiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
bXNnPSJ1bmtub3duIHJlYXNvbiIpOgotICAgICAgICBzZWxmLm1zZyA9IG1zZwotICAgICAgICBL
ZXlib2FyZEludGVycnVwdC5fX2luaXRfXyhzZWxmLCBtc2cpCi0KLSMgZXhwb3NlZCBoZWxwZXIg
bWV0aG9kcwotCi0KLWRlZiBleGl0KG1zZyk6Ci0gICAgIiIiIGV4aXQgdGVzdGluZyBwcm9jZXNz
IGFzIGlmIEtleWJvYXJkSW50ZXJydXB0IHdhcyB0cmlnZ2VyZWQuICIiIgotICAgIF9fdHJhY2Vi
YWNraGlkZV9fID0gVHJ1ZQotICAgIHJhaXNlIEV4aXQobXNnKQotCi0KLWV4aXQuRXhjZXB0aW9u
ID0gRXhpdAotCi0KLWRlZiBza2lwKG1zZz0iIiwgKiprd2FyZ3MpOgotICAgICIiIiBza2lwIGFu
IGV4ZWN1dGluZyB0ZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuICBOb3RlOiBpdCdzIHVzdWFs
bHkKLSAgICBiZXR0ZXIgdG8gdXNlIHRoZSBweXRlc3QubWFyay5za2lwaWYgbWFya2VyIHRvIGRl
Y2xhcmUgYSB0ZXN0IHRvIGJlCi0gICAgc2tpcHBlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMg
bGlrZSBtaXNtYXRjaGluZyBwbGF0Zm9ybXMgb3IKLSAgICBkZXBlbmRlbmNpZXMuICBTZWUgdGhl
IHB5dGVzdF9za2lwcGluZyBwbHVnaW4gZm9yIGRldGFpbHMuCi0KLSAgICA6a3dhcmcgYm9vbCBh
bGxvd19tb2R1bGVfbGV2ZWw6IGFsbG93cyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhdAot
ICAgICAgICBtb2R1bGUgbGV2ZWwsIHNraXBwaW5nIHRoZSByZXN0IG9mIHRoZSBtb2R1bGUuIERl
ZmF1bHQgdG8gRmFsc2UuCi0gICAgIiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0g
ICAgYWxsb3dfbW9kdWxlX2xldmVsID0ga3dhcmdzLnBvcCgnYWxsb3dfbW9kdWxlX2xldmVsJywg
RmFsc2UpCi0gICAgaWYga3dhcmdzOgotICAgICAgICBrZXlzID0gW2sgZm9yIGsgaW4ga3dhcmdz
LmtleXMoKV0KLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1bmV4cGVjdGVkIGtleXdvcmQgYXJn
dW1lbnRzOiB7MH0nLmZvcm1hdChrZXlzKSkKLSAgICByYWlzZSBTa2lwcGVkKG1zZz1tc2csIGFs
bG93X21vZHVsZV9sZXZlbD1hbGxvd19tb2R1bGVfbGV2ZWwpCi0KLQotc2tpcC5FeGNlcHRpb24g
PSBTa2lwcGVkCi0KLQotZGVmIGZhaWwobXNnPSIiLCBweXRyYWNlPVRydWUpOgotICAgICIiIiBl
eHBsaWNpdGx5IGZhaWwgYW4gY3VycmVudGx5LWV4ZWN1dGluZyB0ZXN0IHdpdGggdGhlIGdpdmVu
IE1lc3NhZ2UuCi0KLSAgICA6YXJnIHB5dHJhY2U6IGlmIGZhbHNlIHRoZSBtc2cgcmVwcmVzZW50
cyB0aGUgZnVsbCBmYWlsdXJlIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICBhbmQgbm8g
cHl0aG9uIHRyYWNlYmFjayB3aWxsIGJlIHJlcG9ydGVkLgotICAgICIiIgotICAgIF9fdHJhY2Vi
YWNraGlkZV9fID0gVHJ1ZQotICAgIHJhaXNlIEZhaWxlZChtc2c9bXNnLCBweXRyYWNlPXB5dHJh
Y2UpCi0KLQotZmFpbC5FeGNlcHRpb24gPSBGYWlsZWQKLQotCi1jbGFzcyBYRmFpbGVkKGZhaWwu
RXhjZXB0aW9uKToKLSAgICAiIiIgcmFpc2VkIGZyb20gYW4gZXhwbGljaXQgY2FsbCB0byBweXRl
c3QueGZhaWwoKSAiIiIKLQotCi1kZWYgeGZhaWwocmVhc29uPSIiKToKLSAgICAiIiIgeGZhaWwg
YW4gZXhlY3V0aW5nIHRlc3Qgb3Igc2V0dXAgZnVuY3Rpb25zIHdpdGggdGhlIGdpdmVuIHJlYXNv
bi4iIiIKLSAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICByYWlzZSBYRmFpbGVkKHJl
YXNvbikKLQotCi14ZmFpbC5FeGNlcHRpb24gPSBYRmFpbGVkCi0KLQotZGVmIGltcG9ydG9yc2tp
cChtb2RuYW1lLCBtaW52ZXJzaW9uPU5vbmUpOgotICAgICIiIiByZXR1cm4gaW1wb3J0ZWQgbW9k
dWxlIGlmIGl0IGhhcyBhdCBsZWFzdCAibWludmVyc2lvbiIgYXMgaXRzCi0gICAgX192ZXJzaW9u
X18gYXR0cmlidXRlLiAgSWYgbm8gbWludmVyc2lvbiBpcyBzcGVjaWZpZWQgdGhlIGEgc2tpcAot
ICAgIGlzIG9ubHkgdHJpZ2dlcmVkIGlmIHRoZSBtb2R1bGUgY2FuIG5vdCBiZSBpbXBvcnRlZC4K
LSAgICAiIiIKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKLSAgICBjb21waWxlKG1vZG5hbWUsICcnLCAnZXZhbCcpICAjIHRvIGNhdGNoIHN5bnRheGVy
cm9ycwotICAgIHNob3VsZF9za2lwID0gRmFsc2UKLQotICAgIHdpdGggd2FybmluZ3MuY2F0Y2hf
d2FybmluZ3MoKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdG8gaWdub3JlIEltcG9ydFdhcm5pbmdz
IHRoYXQgbWlnaHQgaGFwcGVuIGJlY2F1c2UKLSAgICAgICAgIyBvZiBleGlzdGluZyBkaXJlY3Rv
cmllcyB3aXRoIHRoZSBzYW1lIG5hbWUgd2UncmUgdHJ5aW5nIHRvCi0gICAgICAgICMgaW1wb3J0
IGJ1dCB3aXRob3V0IGEgX19pbml0X18ucHkgZmlsZQotICAgICAgICB3YXJuaW5ncy5zaW1wbGVm
aWx0ZXIoJ2lnbm9yZScpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF9faW1wb3J0X18obW9k
bmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgIyBEbyBub3Qg
cmFpc2UgY2hhaW5lZCBleGNlcHRpb24gaGVyZSgjMTQ4NSkKLSAgICAgICAgICAgIHNob3VsZF9z
a2lwID0gVHJ1ZQotICAgIGlmIHNob3VsZF9za2lwOgotICAgICAgICByYWlzZSBTa2lwcGVkKCJj
b3VsZCBub3QgaW1wb3J0ICVyIiAlIChtb2RuYW1lLCksIGFsbG93X21vZHVsZV9sZXZlbD1UcnVl
KQotICAgIG1vZCA9IHN5cy5tb2R1bGVzW21vZG5hbWVdCi0gICAgaWYgbWludmVyc2lvbiBpcyBO
b25lOgotICAgICAgICByZXR1cm4gbW9kCi0gICAgdmVyYXR0ciA9IGdldGF0dHIobW9kLCAnX192
ZXJzaW9uX18nLCBOb25lKQotICAgIGlmIG1pbnZlcnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGZyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgcGFyc2VfdmVyc2lv
biBhcyBwdgotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBT
a2lwcGVkKCJ3ZSBoYXZlIGEgcmVxdWlyZWQgdmVyc2lvbiBmb3IgJXIgYnV0IGNhbiBub3QgaW1w
b3J0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInBrZ19yZXNvdXJjZXMgdG8gcGFyc2Ug
dmVyc2lvbiBzdHJpbmdzLiIgJSAobW9kbmFtZSwpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSkKLSAgICAgICAgaWYgdmVyYXR0ciBpcyBOb25lIG9y
IHB2KHZlcmF0dHIpIDwgcHYobWludmVyc2lvbik6Ci0gICAgICAgICAgICByYWlzZSBTa2lwcGVk
KCJtb2R1bGUgJXIgaGFzIF9fdmVyc2lvbl9fICVyLCByZXF1aXJlZCBpczogJXIiICUgKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLCB2ZXJhdHRyLCBtaW52ZXJzaW9uKSwgYWxs
b3dfbW9kdWxlX2xldmVsPVRydWUpCi0gICAgcmV0dXJuIG1vZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9wYXN0ZWJpbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcGFzdGViaW4u
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ODhiMDIxYjEyNC4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcGFzdGViaW4ucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDAgKzAsMCBAQAotIiIiIHN1Ym1pdCBmYWlsdXJlIG9yIHRlc3Qgc2Vzc2lvbiBpbmZv
cm1hdGlvbiB0byBhIHBhc3RlYmluIHNlcnZpY2UuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgcHl0
ZXN0Ci1pbXBvcnQgc2l4Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLQotCi1kZWYgcHl0
ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJt
aW5hbCByZXBvcnRpbmciKQotICAgIGdyb3VwLl9hZGRvcHRpb24oJy0tcGFzdGViaW4nLCBtZXRh
dmFyPSJtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLCBkZXN0PSJw
YXN0ZWJpbiIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9Wydm
YWlsZWQnLCAnYWxsJ10sCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJzZW5kIGZhaWxlZHxh
bGwgaW5mbyB0byBicGFzdGUubmV0IHBhc3RlYmluIHNlcnZpY2UuIikKLQotCi1AcHl0ZXN0Lmhv
b2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAg
aWYgY29uZmlnLm9wdGlvbi5wYXN0ZWJpbiA9PSAiYWxsIjoKLSAgICAgICAgdHIgPSBjb25maWcu
cGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oJ3Rlcm1pbmFscmVwb3J0ZXInKQotICAgICAgICAjIGlm
IG5vIHRlcm1pbmFsIHJlcG9ydGVyIHBsdWdpbiBpcyBwcmVzZW50LCBub3RoaW5nIHdlIGNhbiBk
byBoZXJlOwotICAgICAgICAjIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoaXMgZnVuY3Rpb24gZXhl
Y3V0ZXMgaW4gYSBzbGF2ZSBub2RlCi0gICAgICAgICMgd2hlbiB1c2luZyBweXRlc3QteGRpc3Qs
IGZvciBleGFtcGxlCi0gICAgICAgIGlmIHRyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBw
YXN0ZWJpbiBmaWxlIHdpbGwgYmUgdXRmLTggZW5jb2RlZCBiaW5hcnkgZmlsZQotICAgICAgICAg
ICAgY29uZmlnLl9wYXN0ZWJpbmZpbGUgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3K2InKQot
ICAgICAgICAgICAgb2xkd3JpdGUgPSB0ci5fdHcud3JpdGUKLQotICAgICAgICAgICAgZGVmIHRl
ZV93cml0ZShzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAgICAgb2xkd3JpdGUocywgKiprd2Fy
Z3MpCi0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzaXgudGV4dF90eXBlKToKLSAg
ICAgICAgICAgICAgICAgICAgcyA9IHMuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICAgICAg
Y29uZmlnLl9wYXN0ZWJpbmZpbGUud3JpdGUocykKLQotICAgICAgICAgICAgdHIuX3R3LndyaXRl
ID0gdGVlX3dyaXRlCi0KLQotZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgotICAgIGlm
IGhhc2F0dHIoY29uZmlnLCAnX3Bhc3RlYmluZmlsZScpOgotICAgICAgICAjIGdldCB0ZXJtaW5h
bCBjb250ZW50cyBhbmQgZGVsZXRlIGZpbGUKLSAgICAgICAgY29uZmlnLl9wYXN0ZWJpbmZpbGUu
c2VlaygwKQotICAgICAgICBzZXNzaW9ubG9nID0gY29uZmlnLl9wYXN0ZWJpbmZpbGUucmVhZCgp
Ci0gICAgICAgIGNvbmZpZy5fcGFzdGViaW5maWxlLmNsb3NlKCkKLSAgICAgICAgZGVsIGNvbmZp
Zy5fcGFzdGViaW5maWxlCi0gICAgICAgICMgdW5kbyBvdXIgcGF0Y2hpbmcgaW4gdGhlIHRlcm1p
bmFsIHJlcG9ydGVyCi0gICAgICAgIHRyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2lu
KCd0ZXJtaW5hbHJlcG9ydGVyJykKLSAgICAgICAgZGVsIHRyLl90dy5fX2RpY3RfX1snd3JpdGUn
XQotICAgICAgICAjIHdyaXRlIHN1bW1hcnkKLSAgICAgICAgdHIud3JpdGVfc2VwKCI9IiwgIlNl
bmRpbmcgaW5mb3JtYXRpb24gdG8gUGFzdGUgU2VydmljZSIpCi0gICAgICAgIHBhc3RlYmludXJs
ID0gY3JlYXRlX25ld19wYXN0ZShzZXNzaW9ubG9nKQotICAgICAgICB0ci53cml0ZV9saW5lKCJw
YXN0ZWJpbiBzZXNzaW9uLWxvZzogJXNcbiIgJSBwYXN0ZWJpbnVybCkKLQotCi1kZWYgY3JlYXRl
X25ld19wYXN0ZShjb250ZW50cyk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlcyBhIG5ldyBwYXN0ZSB1
c2luZyBicGFzdGUubmV0IHNlcnZpY2UuCi0KLSAgICA6Y29udGVudHM6IHBhc3RlIGNvbnRlbnRz
IGFzIHV0Zi04IGVuY29kZWQgYnl0ZXMKLSAgICA6cmV0dXJuczogdXJsIHRvIHRoZSBwYXN0ZWQg
Y29udGVudHMKLSAgICAiIiIKLSAgICBpbXBvcnQgcmUKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZv
IDwgKDMsIDApOgotICAgICAgICBmcm9tIHVybGxpYiBpbXBvcnQgdXJsb3BlbiwgdXJsZW5jb2Rl
Ci0gICAgZWxzZToKLSAgICAgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3Blbgot
ICAgICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsZW5jb2RlCi0KLSAgICBwYXJhbXMg
PSB7Ci0gICAgICAgICdjb2RlJzogY29udGVudHMsCi0gICAgICAgICdsZXhlcic6ICdweXRob24z
JyBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID09IDMgZWxzZSAncHl0aG9uJywKLSAgICAgICAgJ2V4
cGlyeSc6ICcxd2VlaycsCi0gICAgfQotICAgIHVybCA9ICdodHRwczovL2JwYXN0ZS5uZXQnCi0g
ICAgcmVzcG9uc2UgPSB1cmxvcGVuKHVybCwgZGF0YT11cmxlbmNvZGUocGFyYW1zKS5lbmNvZGUo
J2FzY2lpJykpLnJlYWQoKQotICAgIG0gPSByZS5zZWFyY2gocidocmVmPSIvcmF3LyhcdyspIics
IHJlc3BvbnNlLmRlY29kZSgndXRmLTgnKSkKLSAgICBpZiBtOgotICAgICAgICByZXR1cm4gJyVz
L3Nob3cvJXMnICUgKHVybCwgbS5ncm91cCgxKSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4g
J2JhZCByZXNwb25zZTogJyArIHJlc3BvbnNlCi0KLQotZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1t
YXJ5KHRlcm1pbmFscmVwb3J0ZXIpOgotICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwotICAgIGlm
IHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLm9wdGlvbi5wYXN0ZWJpbiAhPSAiZmFpbGVkIjoKLSAg
ICAgICAgcmV0dXJuCi0gICAgdHIgPSB0ZXJtaW5hbHJlcG9ydGVyCi0gICAgaWYgJ2ZhaWxlZCcg
aW4gdHIuc3RhdHM6Ci0gICAgICAgIHRlcm1pbmFscmVwb3J0ZXIud3JpdGVfc2VwKCI9IiwgIlNl
bmRpbmcgaW5mb3JtYXRpb24gdG8gUGFzdGUgU2VydmljZSIpCi0gICAgICAgIGZvciByZXAgaW4g
dGVybWluYWxyZXBvcnRlci5zdGF0cy5nZXQoJ2ZhaWxlZCcpOgotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIG1zZyA9IHJlcC5sb25ncmVwci5yZXBydHJhY2ViYWNrLnJlcHJlbnRy
aWVzWy0xXS5yZXByZmlsZWxvYwotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgot
ICAgICAgICAgICAgICAgIG1zZyA9IHRyLl9nZXRmYWlsdXJlaGVhZGxpbmUocmVwKQotICAgICAg
ICAgICAgdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWluYWxfd3JpdGVyKHRlcm1pbmFs
cmVwb3J0ZXIuY29uZmlnLCBzdHJpbmdpbz1UcnVlKQotICAgICAgICAgICAgcmVwLnRvdGVybWlu
YWwodHcpCi0gICAgICAgICAgICBzID0gdHcuc3RyaW5naW8uZ2V0dmFsdWUoKQotICAgICAgICAg
ICAgYXNzZXJ0IGxlbihzKQotICAgICAgICAgICAgcGFzdGViaW51cmwgPSBjcmVhdGVfbmV3X3Bh
c3RlKHMpCi0gICAgICAgICAgICB0ci53cml0ZV9saW5lKCIlcyAtLT4gJXMiICUgKG1zZywgcGFz
dGViaW51cmwpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRlc3Rlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvcHl0ZXN0ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYyZGQ1OTk0ZjFiYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvcHl0ZXN0ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTg3ICswLDAgQEAKLSIiIiAoZGlz
YWJsZWQgYnkgZGVmYXVsdCkgc3VwcG9ydCBmb3IgdGVzdGluZyBweXRlc3QgYW5kIHB5dGVzdCBw
bHVnaW5zLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZp
c2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGNvZGVjcwotaW1wb3J0IGdjCi1pbXBvcnQg
b3MKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0
IHNpeAotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKLWZyb20gZm5t
YXRjaCBpbXBvcnQgZm5tYXRjaAotCi1mcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtLZXlEaWN0aW9u
YXJ5Ci0KLWZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBNdWx0aUNhcHR1cmUsIFN5c0NhcHR1
cmUKLWZyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgU291cmNlCi1pbXBvcnQgcHkKLWltcG9ydCBw
eXRlc3QKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uLCBFWElUX09LCi1mcm9tIF9w
eXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IEFzc2VydGlvblJld3JpdGluZ0hvb2sKLQot
Ci1QWVRFU1RfRlVMTFBBVEggPSBvcy5wYXRoLmFic3BhdGgocHl0ZXN0Ll9fZmlsZV9fLnJzdHJp
cCgib2MiKSkucmVwbGFjZSgiJHB5LmNsYXNzIiwgIi5weSIpCi0KLQotZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyKToKLSAgICAjIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJweXRlc3RlciIs
ICJweXRlc3RlciAoc2VsZi10ZXN0cykgb3B0aW9ucyIpCi0gICAgcGFyc2VyLmFkZG9wdGlvbign
LS1sc29mJywKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9
Imxzb2YiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0oInJ1biBG
RCBjaGVja3MgaWYgbHNvZiBpcyBhdmFpbGFibGUiKSkKLQotICAgIHBhcnNlci5hZGRvcHRpb24o
Jy0tcnVucHl0ZXN0JywgZGVmYXVsdD0iaW5wcm9jZXNzIiwgZGVzdD0icnVucHl0ZXN0IiwKLSAg
ICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCJpbnByb2Nlc3MiLCAic3VicHJvY2VzcyIsICks
Ci0gICAgICAgICAgICAgICAgICAgICBoZWxwPSgicnVuIHB5dGVzdCBzdWIgcnVucyBpbiB0ZXN0
cyB1c2luZyBhbiAnaW5wcm9jZXNzJyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAib3Ig
J3N1YnByb2Nlc3MnIChweXRob24gLW0gbWFpbikgbWV0aG9kIikpCi0KLQotZGVmIHB5dGVzdF9j
b25maWd1cmUoY29uZmlnKToKLSAgICBpZiBjb25maWcuZ2V0dmFsdWUoImxzb2YiKToKLSAgICAg
ICAgY2hlY2tlciA9IExzb2ZGZExlYWtDaGVja2VyKCkKLSAgICAgICAgaWYgY2hlY2tlci5tYXRj
aGluZ19wbGF0Zm9ybSgpOgotICAgICAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0
ZXIoY2hlY2tlcikKLQotCi1jbGFzcyBMc29mRmRMZWFrQ2hlY2tlcihvYmplY3QpOgotICAgIGRl
ZiBnZXRfb3Blbl9maWxlcyhzZWxmKToKLSAgICAgICAgb3V0ID0gc2VsZi5fZXhlY19sc29mKCkK
LSAgICAgICAgb3Blbl9maWxlcyA9IHNlbGYuX3BhcnNlX2xzb2Zfb3V0cHV0KG91dCkKLSAgICAg
ICAgcmV0dXJuIG9wZW5fZmlsZXMKLQotICAgIGRlZiBfZXhlY19sc29mKHNlbGYpOgotICAgICAg
ICBwaWQgPSBvcy5nZXRwaWQoKQotICAgICAgICByZXR1cm4gcHkucHJvY2Vzcy5jbWRleGVjKCJs
c29mIC1GZm4wIC1wICVkIiAlIHBpZCkKLQotICAgIGRlZiBfcGFyc2VfbHNvZl9vdXRwdXQoc2Vs
Ziwgb3V0KToKLSAgICAgICAgZGVmIGlzb3BlbihsaW5lKToKLSAgICAgICAgICAgIHJldHVybiBs
aW5lLnN0YXJ0c3dpdGgoJ2YnKSBhbmQgKCJkZWxldGVkIiBub3QgaW4gbGluZSBhbmQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZW0nIG5vdCBpbiBsaW5l
IGFuZCAidHh0IiBub3QgaW4gbGluZSBhbmQgJ2N3ZCcgbm90IGluIGxpbmUpCi0KLSAgICAgICAg
b3Blbl9maWxlcyA9IFtdCi0KLSAgICAgICAgZm9yIGxpbmUgaW4gb3V0LnNwbGl0KCJcbiIpOgot
ICAgICAgICAgICAgaWYgaXNvcGVuKGxpbmUpOgotICAgICAgICAgICAgICAgIGZpZWxkcyA9IGxp
bmUuc3BsaXQoJ1wwJykKLSAgICAgICAgICAgICAgICBmZCA9IGZpZWxkc1swXVsxOl0KLSAgICAg
ICAgICAgICAgICBmaWxlbmFtZSA9IGZpZWxkc1sxXVsxOl0KLSAgICAgICAgICAgICAgICBpZiBm
aWxlbmFtZS5zdGFydHN3aXRoKCcvJyk6Ci0gICAgICAgICAgICAgICAgICAgIG9wZW5fZmlsZXMu
YXBwZW5kKChmZCwgZmlsZW5hbWUpKQotCi0gICAgICAgIHJldHVybiBvcGVuX2ZpbGVzCi0KLSAg
ICBkZWYgbWF0Y2hpbmdfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHB5LnByb2Nlc3MuY21kZXhlYygibHNvZiAtdiIpCi0gICAgICAgIGV4Y2VwdCAocHkucHJvY2Vz
cy5jbWRleGVjLkVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpOgotICAgICAgICAgICAgIyBjbWRl
eGVjIG1heSByYWlzZSBVbmljb2RlRGVjb2RlRXJyb3Igb24gV2luZG93cyBzeXN0ZW1zCi0gICAg
ICAgICAgICAjIHdpdGggbG9jYWxlIG90aGVyIHRoYW4gZW5nbGlzaDoKLSAgICAgICAgICAgICMg
aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5dGVzdC1kZXYvcHkvaXNzdWVzLzY2Ci0gICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0K
LSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRydWUpCi0g
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKHNlbGYsIGl0ZW0pOgotICAgICAgICBsaW5l
czEgPSBzZWxmLmdldF9vcGVuX2ZpbGVzKCkKLSAgICAgICAgeWllbGQKLSAgICAgICAgaWYgaGFz
YXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgotICAgICAgICAgICAgZ2MuY29sbGVjdCgp
Ci0gICAgICAgIGxpbmVzMiA9IHNlbGYuZ2V0X29wZW5fZmlsZXMoKQotCi0gICAgICAgIG5ld19m
ZHMgPSBzZXQoW3RbMF0gZm9yIHQgaW4gbGluZXMyXSkgLSBzZXQoW3RbMF0gZm9yIHQgaW4gbGlu
ZXMxXSkKLSAgICAgICAgbGVha2VkX2ZpbGVzID0gW3QgZm9yIHQgaW4gbGluZXMyIGlmIHRbMF0g
aW4gbmV3X2Zkc10KLSAgICAgICAgaWYgbGVha2VkX2ZpbGVzOgotICAgICAgICAgICAgZXJyb3Ig
PSBbXQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKioqKiAlcyBGRCBsZWFrYWdlIGRldGVj
dGVkIiAlIGxlbihsZWFrZWRfZmlsZXMpKQotICAgICAgICAgICAgZXJyb3IuZXh0ZW5kKFtzdHIo
ZikgZm9yIGYgaW4gbGVha2VkX2ZpbGVzXSkKLSAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiKioq
IEJlZm9yZToiKQotICAgICAgICAgICAgZXJyb3IuZXh0ZW5kKFtzdHIoZikgZm9yIGYgaW4gbGlu
ZXMxXSkKLSAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiKioqIEFmdGVyOiIpCi0gICAgICAgICAg
ICBlcnJvci5leHRlbmQoW3N0cihmKSBmb3IgZiBpbiBsaW5lczJdKQotICAgICAgICAgICAgZXJy
b3IuYXBwZW5kKGVycm9yWzBdKQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKiogZnVuY3Rp
b24gJXM6JXM6ICVzICIgJSBpdGVtLmxvY2F0aW9uKQotICAgICAgICAgICAgZXJyb3IuYXBwZW5k
KCJTZWUgaXNzdWUgIzIzNjYiKQotICAgICAgICAgICAgaXRlbS53YXJuKCcnLCAiXG4iLmpvaW4o
ZXJyb3IpKQotCi0KLSMgWFhYIGNvcGllZCBmcm9tIGV4ZWNuZXQncyBjb25mdGVzdC5weSAtIG5l
ZWRzIHRvIGJlIG1lcmdlZAotd2lucHltYXAgPSB7Ci0gICAgJ3B5dGhvbjIuNyc6IHInQzpcUHl0
aG9uMjdccHl0aG9uLmV4ZScsCi0gICAgJ3B5dGhvbjMuNCc6IHInQzpcUHl0aG9uMzRccHl0aG9u
LmV4ZScsCi0gICAgJ3B5dGhvbjMuNSc6IHInQzpcUHl0aG9uMzVccHl0aG9uLmV4ZScsCi0gICAg
J3B5dGhvbjMuNic6IHInQzpcUHl0aG9uMzZccHl0aG9uLmV4ZScsCi19Ci0KLQotZGVmIGdldGV4
ZWN1dGFibGUobmFtZSwgY2FjaGU9e30pOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGNhY2hl
W25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBleGVjdXRhYmxlID0gcHkucGF0
aC5sb2NhbC5zeXNmaW5kKG5hbWUpCi0gICAgICAgIGlmIGV4ZWN1dGFibGU6Ci0gICAgICAgICAg
ICBpbXBvcnQgc3VicHJvY2VzcwotICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVu
KFtzdHIoZXhlY3V0YWJsZSksICItLXZlcnNpb24iXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3Mu
UElQRSkKLSAgICAgICAgICAgIG91dCwgZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgICAg
ICAgICAgaWYgbmFtZSA9PSAianl0aG9uIjoKLSAgICAgICAgICAgICAgICBpZiBub3QgZXJyIG9y
ICIyLjUiIG5vdCBpbiBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBOb25l
Ci0gICAgICAgICAgICAgICAgaWYgIjIuNS4yIiBpbiBlcnI6Ci0gICAgICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUgPSBOb25lICAjIGh0dHA6Ly9idWdzLmp5dGhvbi5vcmcvaXNzdWUxNzkwCi0g
ICAgICAgICAgICBlbGlmIHBvcGVuLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAgICAgICAj
IEhhbmRsZSBweWVudidzIDEyNy4KLSAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gTm9uZQot
ICAgICAgICBjYWNoZVtuYW1lXSA9IGV4ZWN1dGFibGUKLSAgICAgICAgcmV0dXJuIGV4ZWN1dGFi
bGUKLQotCi1AcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsncHl0aG9uMi43JywgJ3B5dGhvbjMuNCcs
ICdweXB5JywgJ3B5cHkzJ10pCi1kZWYgYW55cHl0aG9uKHJlcXVlc3QpOgotICAgIG5hbWUgPSBy
ZXF1ZXN0LnBhcmFtCi0gICAgZXhlY3V0YWJsZSA9IGdldGV4ZWN1dGFibGUobmFtZSkKLSAgICBp
ZiBleGVjdXRhYmxlIGlzIE5vbmU6Ci0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
OgotICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHdpbnB5bWFwLmdldChuYW1lLCBOb25lKQotICAg
ICAgICAgICAgaWYgZXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gcHku
cGF0aC5sb2NhbChleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgIGlmIGV4ZWN1dGFibGUuY2hl
Y2soKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUKLSAgICAgICAgcHl0
ZXN0LnNraXAoIm5vIHN1aXRhYmxlICVzIGZvdW5kIiAlIChuYW1lLCkpCi0gICAgcmV0dXJuIGV4
ZWN1dGFibGUKLQotIyB1c2VkIGF0IGxlYXN0IGJ5IHB5dGVzdC14ZGlzdCBwbHVnaW4KLQotCi1A
cHl0ZXN0LmZpeHR1cmUKLWRlZiBfcHl0ZXN0KHJlcXVlc3QpOgotICAgICIiIiBSZXR1cm4gYSBo
ZWxwZXIgd2hpY2ggb2ZmZXJzIGEgZ2V0aG9va3JlY29yZGVyKGhvb2spCi0gICAgbWV0aG9kIHdo
aWNoIHJldHVybnMgYSBIb29rUmVjb3JkZXIgaW5zdGFuY2Ugd2hpY2ggaGVscHMKLSAgICB0byBt
YWtlIGFzc2VydGlvbnMgYWJvdXQgY2FsbGVkIGhvb2tzLgotICAgICIiIgotICAgIHJldHVybiBQ
eXRlc3RBcmcocmVxdWVzdCkKLQotCi1jbGFzcyBQeXRlc3RBcmc6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0Ci0KLSAgICBk
ZWYgZ2V0aG9va3JlY29yZGVyKHNlbGYsIGhvb2spOgotICAgICAgICBob29rcmVjb3JkZXIgPSBI
b29rUmVjb3JkZXIoaG9vay5fcG0pCi0gICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIo
aG9va3JlY29yZGVyLmZpbmlzaF9yZWNvcmRpbmcpCi0gICAgICAgIHJldHVybiBob29rcmVjb3Jk
ZXIKLQotCi1kZWYgZ2V0X3B1YmxpY19uYW1lcyh2YWx1ZXMpOgotICAgICIiIk9ubHkgcmV0dXJu
IG5hbWVzIGZyb20gaXRlcmF0b3IgdmFsdWVzIHdpdGhvdXQgYSBsZWFkaW5nIHVuZGVyc2NvcmUu
IiIiCi0gICAgcmV0dXJuIFt4IGZvciB4IGluIHZhbHVlcyBpZiB4WzBdICE9ICJfIl0KLQotCi1j
bGFzcyBQYXJzZWRDYWxsOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBrd2FyZ3MpOgot
ICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrd2FyZ3MpCi0gICAgICAgIHNlbGYuX25hbWUg
PSBuYW1lCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGlj
dF9fLmNvcHkoKQotICAgICAgICBkZWwgZFsnX25hbWUnXQotICAgICAgICByZXR1cm4gIjxQYXJz
ZWRDYWxsICVyKCoqJXIpPiIgJSAoc2VsZi5fbmFtZSwgZCkKLQotCi1jbGFzcyBIb29rUmVjb3Jk
ZXI6Ci0gICAgIiIiUmVjb3JkIGFsbCBob29rcyBjYWxsZWQgaW4gYSBwbHVnaW4gbWFuYWdlci4K
LQotICAgIFRoaXMgd3JhcHMgYWxsIHRoZSBob29rIGNhbGxzIGluIHRoZSBwbHVnaW4gbWFuYWdl
ciwgcmVjb3JkaW5nCi0gICAgZWFjaCBjYWxsIGJlZm9yZSBwcm9wYWdhdGluZyB0aGUgbm9ybWFs
IGNhbGxzLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGx1Z2lubWFuYWdl
cik6Ci0gICAgICAgIHNlbGYuX3BsdWdpbm1hbmFnZXIgPSBwbHVnaW5tYW5hZ2VyCi0gICAgICAg
IHNlbGYuY2FsbHMgPSBbXQotCi0gICAgICAgIGRlZiBiZWZvcmUoaG9va19uYW1lLCBob29rX2lt
cGxzLCBrd2FyZ3MpOgotICAgICAgICAgICAgc2VsZi5jYWxscy5hcHBlbmQoUGFyc2VkQ2FsbCho
b29rX25hbWUsIGt3YXJncykpCi0KLSAgICAgICAgZGVmIGFmdGVyKG91dGNvbWUsIGhvb2tfbmFt
ZSwgaG9va19pbXBscywga3dhcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBzZWxm
Ll91bmRvX3dyYXBwaW5nID0gcGx1Z2lubWFuYWdlci5hZGRfaG9va2NhbGxfbW9uaXRvcmluZyhi
ZWZvcmUsIGFmdGVyKQotCi0gICAgZGVmIGZpbmlzaF9yZWNvcmRpbmcoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3VuZG9fd3JhcHBpbmcoKQotCi0gICAgZGVmIGdldGNhbGxzKHNlbGYsIG5hbWVzKToK
LSAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKLSAgICAgICAgICAgIG5hbWVzID0g
bmFtZXMuc3BsaXQoKQotICAgICAgICByZXR1cm4gW2NhbGwgZm9yIGNhbGwgaW4gc2VsZi5jYWxs
cyBpZiBjYWxsLl9uYW1lIGluIG5hbWVzXQotCi0gICAgZGVmIGFzc2VydF9jb250YWlucyhzZWxm
LCBlbnRyaWVzKToKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIGkg
PSAwCi0gICAgICAgIGVudHJpZXMgPSBsaXN0KGVudHJpZXMpCi0gICAgICAgIGJhY2tsb2NhbHMg
PSBzeXMuX2dldGZyYW1lKDEpLmZfbG9jYWxzCi0gICAgICAgIHdoaWxlIGVudHJpZXM6Ci0gICAg
ICAgICAgICBuYW1lLCBjaGVjayA9IGVudHJpZXMucG9wKDApCi0gICAgICAgICAgICBmb3IgaW5k
LCBjYWxsIGluIGVudW1lcmF0ZShzZWxmLmNhbGxzW2k6XSk6Ci0gICAgICAgICAgICAgICAgaWYg
Y2FsbC5fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiTkFNRU1BVENI
IiwgbmFtZSwgY2FsbCkKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZhbChjaGVjaywgYmFja2xv
Y2FscywgY2FsbC5fX2RpY3RfXyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiQ0hF
Q0tFUk1BVENIIiwgcmVwcihjaGVjayksICItPiIsIGNhbGwpCi0gICAgICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiTk9DSEVDS0VSTUFUQ0giLCBy
ZXByKGNoZWNrKSwgIi0iLCBjYWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgICAgICAgICAgaSArPSBpbmQgKyAxCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICAgICAgcHJpbnQoIk5PTkFNRU1BVENIIiwgbmFtZSwgIndpdGgiLCBj
YWxsKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBweXRlc3QuZmFpbCgiY291
bGQgbm90IGZpbmQgJXIgY2hlY2sgJXIiICUgKG5hbWUsIGNoZWNrKSkKLQotICAgIGRlZiBwb3Bj
YWxsKHNlbGYsIG5hbWUpOgotICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAg
ICAgZm9yIGksIGNhbGwgaW4gZW51bWVyYXRlKHNlbGYuY2FsbHMpOgotICAgICAgICAgICAgaWYg
Y2FsbC5fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNhbGxzW2ldCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGwKLSAgICAgICAgbGluZXMgPSBbImNvdWxkIG5vdCBm
aW5kIGNhbGwgJXIsIGluOiIgJSAobmFtZSwpXQotICAgICAgICBsaW5lcy5leHRlbmQoWyIgICVz
IiAlIHN0cih4KSBmb3IgeCBpbiBzZWxmLmNhbGxzXSkKLSAgICAgICAgcHl0ZXN0LmZhaWwoIlxu
Ii5qb2luKGxpbmVzKSkKLQotICAgIGRlZiBnZXRjYWxsKHNlbGYsIG5hbWUpOgotICAgICAgICB2
YWx1ZXMgPSBzZWxmLmdldGNhbGxzKG5hbWUpCi0gICAgICAgIGFzc2VydCBsZW4odmFsdWVzKSA9
PSAxLCAobmFtZSwgdmFsdWVzKQotICAgICAgICByZXR1cm4gdmFsdWVzWzBdCi0KLSAgICAjIGZ1
bmN0aW9uYWxpdHkgZm9yIHRlc3QgcmVwb3J0cwotCi0gICAgZGVmIGdldHJlcG9ydHMoc2VsZiwK
LSAgICAgICAgICAgICAgICAgICBuYW1lcz0icHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IHB5dGVz
dF9jb2xsZWN0cmVwb3J0Iik6Ci0gICAgICAgIHJldHVybiBbeC5yZXBvcnQgZm9yIHggaW4gc2Vs
Zi5nZXRjYWxscyhuYW1lcyldCi0KLSAgICBkZWYgbWF0Y2hyZXBvcnQoc2VsZiwgaW5hbWVwYXJ0
PSIiLAotICAgICAgICAgICAgICAgICAgICBuYW1lcz0icHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0
IHB5dGVzdF9jb2xsZWN0cmVwb3J0Iiwgd2hlbj1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBh
IHRlc3RyZXBvcnQgd2hvc2UgZG90dGVkIGltcG9ydCBwYXRoIG1hdGNoZXMgIiIiCi0gICAgICAg
IHZhbHVlcyA9IFtdCi0gICAgICAgIGZvciByZXAgaW4gc2VsZi5nZXRyZXBvcnRzKG5hbWVzPW5h
bWVzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBub3Qgd2hlbiBhbmQg
cmVwLndoZW4gIT0gImNhbGwiIGFuZCByZXAucGFzc2VkOgotICAgICAgICAgICAgICAgICAgICAj
IHNldHVwL3RlYXJkb3duIHBhc3NpbmcgcmVwb3J0cyAtIGxldCdzIGlnbm9yZSB0aG9zZQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVy
cm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGlmIHdoZW4gYW5kIGdldGF0
dHIocmVwLCAnd2hlbicsIE5vbmUpICE9IHdoZW46Ci0gICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIGlmIG5vdCBpbmFtZXBhcnQgb3IgaW5hbWVwYXJ0IGluIHJlcC5ub2RlaWQu
c3BsaXQoIjo6Iik6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChyZXApCi0gICAgICAg
IGlmIG5vdCB2YWx1ZXM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb3VsZCBub3Qg
ZmluZCB0ZXN0IHJlcG9ydCBtYXRjaGluZyAlcjogIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibm8gdGVzdCByZXBvcnRzIGF0IGFsbCEiICUgKGluYW1lcGFydCwpKQotICAgICAgICBp
ZiBsZW4odmFsdWVzKSA+IDE6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAg
ICAgICAgICAgICJmb3VuZCAyIG9yIG1vcmUgdGVzdHJlcG9ydHMgbWF0Y2hpbmcgJXI6ICVzIiAl
IChpbmFtZXBhcnQsIHZhbHVlcykpCi0gICAgICAgIHJldHVybiB2YWx1ZXNbMF0KLQotICAgIGRl
ZiBnZXRmYWlsdXJlcyhzZWxmLAotICAgICAgICAgICAgICAgICAgICBuYW1lcz0ncHl0ZXN0X3J1
bnRlc3RfbG9ncmVwb3J0IHB5dGVzdF9jb2xsZWN0cmVwb3J0Jyk6Ci0gICAgICAgIHJldHVybiBb
cmVwIGZvciByZXAgaW4gc2VsZi5nZXRyZXBvcnRzKG5hbWVzKSBpZiByZXAuZmFpbGVkXQotCi0g
ICAgZGVmIGdldGZhaWxlZGNvbGxlY3Rpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5n
ZXRmYWlsdXJlcygncHl0ZXN0X2NvbGxlY3RyZXBvcnQnKQotCi0gICAgZGVmIGxpc3RvdXRjb21l
cyhzZWxmKToKLSAgICAgICAgcGFzc2VkID0gW10KLSAgICAgICAgc2tpcHBlZCA9IFtdCi0gICAg
ICAgIGZhaWxlZCA9IFtdCi0gICAgICAgIGZvciByZXAgaW4gc2VsZi5nZXRyZXBvcnRzKAotICAg
ICAgICAgICAgICAgICJweXRlc3RfY29sbGVjdHJlcG9ydCBweXRlc3RfcnVudGVzdF9sb2dyZXBv
cnQiKToKLSAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAgICAgICAgaWYgZ2V0
YXR0cihyZXAsICJ3aGVuIiwgTm9uZSkgPT0gImNhbGwiOgotICAgICAgICAgICAgICAgICAgICBw
YXNzZWQuYXBwZW5kKHJlcCkKLSAgICAgICAgICAgIGVsaWYgcmVwLnNraXBwZWQ6Ci0gICAgICAg
ICAgICAgICAgc2tpcHBlZC5hcHBlbmQocmVwKQotICAgICAgICAgICAgZWxpZiByZXAuZmFpbGVk
OgotICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQocmVwKQotICAgICAgICByZXR1cm4gcGFz
c2VkLCBza2lwcGVkLCBmYWlsZWQKLQotICAgIGRlZiBjb3VudG91dGNvbWVzKHNlbGYpOgotICAg
ICAgICByZXR1cm4gW2xlbih4KSBmb3IgeCBpbiBzZWxmLmxpc3RvdXRjb21lcygpXQotCi0gICAg
ZGVmIGFzc2VydG91dGNvbWUoc2VsZiwgcGFzc2VkPTAsIHNraXBwZWQ9MCwgZmFpbGVkPTApOgot
ICAgICAgICByZWFscGFzc2VkLCByZWFsc2tpcHBlZCwgcmVhbGZhaWxlZCA9IHNlbGYubGlzdG91
dGNvbWVzKCkKLSAgICAgICAgYXNzZXJ0IHBhc3NlZCA9PSBsZW4ocmVhbHBhc3NlZCkKLSAgICAg
ICAgYXNzZXJ0IHNraXBwZWQgPT0gbGVuKHJlYWxza2lwcGVkKQotICAgICAgICBhc3NlcnQgZmFp
bGVkID09IGxlbihyZWFsZmFpbGVkKQotCi0gICAgZGVmIGNsZWFyKHNlbGYpOgotICAgICAgICBz
ZWxmLmNhbGxzWzpdID0gW10KLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBsaW5lY29tcChyZXF1
ZXN0KToKLSAgICByZXR1cm4gTGluZUNvbXAoKQotCi0KLUBweXRlc3QuZml4dHVyZShuYW1lPSdM
aW5lTWF0Y2hlcicpCi1kZWYgTGluZU1hdGNoZXJfZml4dHVyZShyZXF1ZXN0KToKLSAgICByZXR1
cm4gTGluZU1hdGNoZXIKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiB0ZXN0ZGlyKHJlcXVlc3Qs
IHRtcGRpcl9mYWN0b3J5KToKLSAgICByZXR1cm4gVGVzdGRpcihyZXF1ZXN0LCB0bXBkaXJfZmFj
dG9yeSkKLQotCi1yZXhfb3V0Y29tZSA9IHJlLmNvbXBpbGUociIoXGQrKSAoW1x3LV0rKSIpCi0K
LQotY2xhc3MgUnVuUmVzdWx0OgotICAgICIiIlRoZSByZXN1bHQgb2YgcnVubmluZyBhIGNvbW1h
bmQuCi0KLSAgICBBdHRyaWJ1dGVzOgotCi0gICAgOnJldDogVGhlIHJldHVybiB2YWx1ZS4KLSAg
ICA6b3V0bGluZXM6IExpc3Qgb2YgbGluZXMgY2FwdHVyZWQgZnJvbSBzdGRvdXQuCi0gICAgOmVy
cmxpbmVzOiBMaXN0IG9mIGxpbmVzIGNhcHR1cmVzIGZyb20gc3RkZXJyLgotICAgIDpzdGRvdXQ6
IDpweTpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZG91dCwgdXNlIGBgc3Rkb3V0LnN0cigpYGAg
dG8KLSAgICAgICByZWNvbnN0cnVjdCBzdGRvdXQgb3IgdGhlIGNvbW1vbmx5IHVzZWQKLSAgICAg
ICBgYHN0ZG91dC5mbm1hdGNoX2xpbmVzKClgYCBtZXRob2QuCi0gICAgOnN0ZGVycnI6IDpweTpj
bGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZGVyci4KLSAgICA6ZHVyYXRpb246IER1cmF0aW9uIGlu
IHNlY29uZHMuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXQsIG91dGxp
bmVzLCBlcnJsaW5lcywgZHVyYXRpb24pOgotICAgICAgICBzZWxmLnJldCA9IHJldAotICAgICAg
ICBzZWxmLm91dGxpbmVzID0gb3V0bGluZXMKLSAgICAgICAgc2VsZi5lcnJsaW5lcyA9IGVycmxp
bmVzCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gTGluZU1hdGNoZXIob3V0bGluZXMpCi0gICAgICAg
IHNlbGYuc3RkZXJyID0gTGluZU1hdGNoZXIoZXJybGluZXMpCi0gICAgICAgIHNlbGYuZHVyYXRp
b24gPSBkdXJhdGlvbgotCi0gICAgZGVmIHBhcnNlb3V0Y29tZXMoc2VsZik6Ci0gICAgICAgICIi
IiBSZXR1cm4gYSBkaWN0aW9uYXJ5IG9mIG91dGNvbWVzdHJpbmctPm51bSBmcm9tIHBhcnNpbmcK
LSAgICAgICAgdGhlIHRlcm1pbmFsIG91dHB1dCB0aGF0IHRoZSB0ZXN0IHByb2Nlc3MgcHJvZHVj
ZWQuIiIiCi0gICAgICAgIGZvciBsaW5lIGluIHJldmVyc2VkKHNlbGYub3V0bGluZXMpOgotICAg
ICAgICAgICAgaWYgJ3NlY29uZHMnIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgb3V0Y29tZXMg
PSByZXhfb3V0Y29tZS5maW5kYWxsKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgb3V0Y29tZXM6
Ci0gICAgICAgICAgICAgICAgICAgIGQgPSB7fQotICAgICAgICAgICAgICAgICAgICBmb3IgbnVt
LCBjYXQgaW4gb3V0Y29tZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkW2NhdF0gPSBpbnQo
bnVtKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZAotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJQeXRlc3QgdGVybWluYWwgcmVwb3J0IG5vdCBmb3VuZCIpCi0KLSAgICBkZWYgYXNzZXJ0
X291dGNvbWVzKHNlbGYsIHBhc3NlZD0wLCBza2lwcGVkPTAsIGZhaWxlZD0wLCBlcnJvcj0wKToK
LSAgICAgICAgIiIiIGFzc2VydCB0aGF0IHRoZSBzcGVjaWZpZWQgb3V0Y29tZXMgYXBwZWFyIHdp
dGggdGhlIHJlc3BlY3RpdmUKLSAgICAgICAgbnVtYmVycyAoMCBtZWFucyBpdCBkaWRuJ3Qgb2Nj
dXIpIGluIHRoZSB0ZXh0IG91dHB1dCBmcm9tIGEgdGVzdCBydW4uIiIiCi0gICAgICAgIGQgPSBz
ZWxmLnBhcnNlb3V0Y29tZXMoKQotICAgICAgICBvYnRhaW5lZCA9IHsKLSAgICAgICAgICAgICdw
YXNzZWQnOiBkLmdldCgncGFzc2VkJywgMCksCi0gICAgICAgICAgICAnc2tpcHBlZCc6IGQuZ2V0
KCdza2lwcGVkJywgMCksCi0gICAgICAgICAgICAnZmFpbGVkJzogZC5nZXQoJ2ZhaWxlZCcsIDAp
LAotICAgICAgICAgICAgJ2Vycm9yJzogZC5nZXQoJ2Vycm9yJywgMCksCi0gICAgICAgIH0KLSAg
ICAgICAgYXNzZXJ0IG9idGFpbmVkID09IGRpY3QocGFzc2VkPXBhc3NlZCwgc2tpcHBlZD1za2lw
cGVkLCBmYWlsZWQ9ZmFpbGVkLCBlcnJvcj1lcnJvcikKLQotCi1jbGFzcyBUZXN0ZGlyOgotICAg
ICIiIlRlbXBvcmFyeSB0ZXN0IGRpcmVjdG9yeSB3aXRoIHRvb2xzIHRvIHRlc3QvcnVuIHB5dGVz
dCBpdHNlbGYuCi0KLSAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSBgYHRtcGRpcmBgIGZpeHR1cmUg
YnV0IHByb3ZpZGVzIGEgbnVtYmVyIG9mCi0gICAgbWV0aG9kcyB3aGljaCBhaWQgd2l0aCB0ZXN0
aW5nIHB5dGVzdCBpdHNlbGYuICBVbmxlc3MKLSAgICA6cHk6bWV0aDpgY2hkaXJgIGlzIHVzZWQg
YWxsIG1ldGhvZHMgd2lsbCB1c2UgOnB5OmF0dHI6YHRtcGRpcmAgYXMKLSAgICBjdXJyZW50IHdv
cmtpbmcgZGlyZWN0b3J5LgotCi0gICAgQXR0cmlidXRlczoKLQotICAgIDp0bXBkaXI6IFRoZSA6
cHk6Y2xhc3M6YHB5LnBhdGgubG9jYWxgIGluc3RhbmNlIG9mIHRoZSB0ZW1wb3JhcnkKLSAgICAg
ICBkaXJlY3RvcnkuCi0KLSAgICA6cGx1Z2luczogQSBsaXN0IG9mIHBsdWdpbnMgdG8gdXNlIHdp
dGggOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBhbmQKLSAgICAgICA6cHk6bWV0aDpgcnVucHl0ZXN0
YC4gIEluaXRpYWxseSB0aGlzIGlzIGFuIGVtcHR5IGxpc3QgYnV0Ci0gICAgICAgcGx1Z2lucyBj
YW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QuICBUaGUgdHlwZSBvZiBpdGVtcyB0byBhZGQgdG8KLSAg
ICAgICB0aGUgbGlzdCBkZXBlbmQgb24gdGhlIG1ldGhvZCB3aGljaCB1c2VzIHRoZW0gc28gcmVm
ZXIgdG8gdGhlbQotICAgICAgIGZvciBkZXRhaWxzLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVxdWVzdCwgdG1wZGlyX2ZhY3RvcnkpOgotICAgICAgICBzZWxmLnJlcXVl
c3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX21vZF9jb2xsZWN0aW9ucyA9IFdlYWtLZXlEaWN0
aW9uYXJ5KCkKLSAgICAgICAgbmFtZSA9IHJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX18KLSAgICAg
ICAgc2VsZi50bXBkaXIgPSB0bXBkaXJfZmFjdG9yeS5ta3RlbXAobmFtZSwgbnVtYmVyZWQ9VHJ1
ZSkKLSAgICAgICAgc2VsZi5wbHVnaW5zID0gW10KLSAgICAgICAgc2VsZi5fc2F2ZXN5c3BhdGgg
PSAobGlzdChzeXMucGF0aCksIGxpc3Qoc3lzLm1ldGFfcGF0aCkpCi0gICAgICAgIHNlbGYuX3Nh
dmVtb2R1bGVrZXlzID0gc2V0KHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmNoZGlyKCkgICMg
YWx3YXlzIGNoZGlyCi0gICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIoc2VsZi5maW5h
bGl6ZSkKLSAgICAgICAgbWV0aG9kID0gc2VsZi5yZXF1ZXN0LmNvbmZpZy5nZXRvcHRpb24oIi0t
cnVucHl0ZXN0IikKLSAgICAgICAgaWYgbWV0aG9kID09ICJpbnByb2Nlc3MiOgotICAgICAgICAg
ICAgc2VsZi5fcnVucHl0ZXN0X21ldGhvZCA9IHNlbGYucnVucHl0ZXN0X2lucHJvY2VzcwotICAg
ICAgICBlbGlmIG1ldGhvZCA9PSAic3VicHJvY2VzcyI6Ci0gICAgICAgICAgICBzZWxmLl9ydW5w
eXRlc3RfbWV0aG9kID0gc2VsZi5ydW5weXRlc3Rfc3VicHJvY2VzcwotCi0gICAgZGVmIF9fcmVw
cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxUZXN0ZGlyICVyPiIgJSAoc2VsZi50bXBkaXIs
KQotCi0gICAgZGVmIGZpbmFsaXplKHNlbGYpOgotICAgICAgICAiIiJDbGVhbiB1cCBnbG9iYWwg
c3RhdGUgYXJ0aWZhY3RzLgotCi0gICAgICAgIFNvbWUgbWV0aG9kcyBtb2RpZnkgdGhlIGdsb2Jh
bCBpbnRlcnByZXRlciBzdGF0ZSBhbmQgdGhpcwotICAgICAgICB0cmllcyB0byBjbGVhbiB0aGlz
IHVwLiAgSXQgZG9lcyBub3QgcmVtb3ZlIHRoZSB0ZW1wb3JhcnkKLSAgICAgICAgZGlyZWN0b3J5
IGhvd2V2ZXIgc28gaXQgY2FuIGJlIGxvb2tlZCBhdCBhZnRlciB0aGUgdGVzdCBydW4KLSAgICAg
ICAgaGFzIGZpbmlzaGVkLgotCi0gICAgICAgICIiIgotICAgICAgICBzeXMucGF0aFs6XSwgc3lz
Lm1ldGFfcGF0aFs6XSA9IHNlbGYuX3NhdmVzeXNwYXRoCi0gICAgICAgIGlmIGhhc2F0dHIoc2Vs
ZiwgJ19vbGRkaXInKToKLSAgICAgICAgICAgIHNlbGYuX29sZGRpci5jaGRpcigpCi0gICAgICAg
IHNlbGYuZGVsZXRlX2xvYWRlZF9tb2R1bGVzKCkKLQotICAgIGRlZiBkZWxldGVfbG9hZGVkX21v
ZHVsZXMoc2VsZik6Ci0gICAgICAgICIiIkRlbGV0ZSBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGxv
YWRlZCBkdXJpbmcgYSB0ZXN0LgotCi0gICAgICAgIFRoaXMgYWxsb3dzIHRoZSBpbnRlcnByZXRl
ciB0byBjYXRjaCBtb2R1bGUgY2hhbmdlcyBpbiBjYXNlCi0gICAgICAgIHRoZSBtb2R1bGUgaXMg
cmUtaW1wb3J0ZWQuCi0gICAgICAgICIiIgotICAgICAgICBmb3IgbmFtZSBpbiBzZXQoc3lzLm1v
ZHVsZXMpLmRpZmZlcmVuY2Uoc2VsZi5fc2F2ZW1vZHVsZWtleXMpOgotICAgICAgICAgICAgIyBz
b21lIHpvcGUgbW9kdWxlcyB1c2VkIGJ5IHR3aXN0ZWQtcmVsYXRlZCB0ZXN0cyBrZWVwcyBpbnRl
cm5hbAotICAgICAgICAgICAgIyBzdGF0ZSBhbmQgY2FuJ3QgYmUgZGVsZXRlZDsgd2UgaGFkIHNv
bWUgdHJvdWJsZSBpbiB0aGUgcGFzdAotICAgICAgICAgICAgIyB3aXRoIHpvcGUuaW50ZXJmYWNl
IGZvciBleGFtcGxlCi0gICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCJ6b3BlIik6
Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCi0KLSAgICBkZWYgbWFrZV9o
b29rX3JlY29yZGVyKHNlbGYsIHBsdWdpbm1hbmFnZXIpOgotICAgICAgICAiIiJDcmVhdGUgYSBu
ZXcgOnB5OmNsYXNzOmBIb29rUmVjb3JkZXJgIGZvciBhIFBsdWdpbk1hbmFnZXIuIiIiCi0gICAg
ICAgIGFzc2VydCBub3QgaGFzYXR0cihwbHVnaW5tYW5hZ2VyLCAicmVwcmVjIikKLSAgICAgICAg
cGx1Z2lubWFuYWdlci5yZXByZWMgPSByZXByZWMgPSBIb29rUmVjb3JkZXIocGx1Z2lubWFuYWdl
cikKLSAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihyZXByZWMuZmluaXNoX3JlY29y
ZGluZykKLSAgICAgICAgcmV0dXJuIHJlcHJlYwotCi0gICAgZGVmIGNoZGlyKHNlbGYpOgotICAg
ICAgICAiIiJDZCBpbnRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgotCi0gICAgICAgIFRoaXMg
aXMgZG9uZSBhdXRvbWF0aWNhbGx5IHVwb24gaW5zdGFudGlhdGlvbi4KLQotICAgICAgICAiIiIK
LSAgICAgICAgb2xkID0gc2VsZi50bXBkaXIuY2hkaXIoKQotICAgICAgICBpZiBub3QgaGFzYXR0
cihzZWxmLCAnX29sZGRpcicpOgotICAgICAgICAgICAgc2VsZi5fb2xkZGlyID0gb2xkCi0KLSAg
ICBkZWYgX21ha2VmaWxlKHNlbGYsIGV4dCwgYXJncywga3dhcmdzLCBlbmNvZGluZz0ndXRmLTgn
KToKLSAgICAgICAgaXRlbXMgPSBsaXN0KGt3YXJncy5pdGVtcygpKQotCi0gICAgICAgIGRlZiB0
b190ZXh0KHMpOgotICAgICAgICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nKSBpZiBpc2lu
c3RhbmNlKHMsIGJ5dGVzKSBlbHNlIHNpeC50ZXh0X3R5cGUocykKLQotICAgICAgICBpZiBhcmdz
OgotICAgICAgICAgICAgc291cmNlID0gdSJcbiIuam9pbih0b190ZXh0KHgpIGZvciB4IGluIGFy
Z3MpCi0gICAgICAgICAgICBiYXNlbmFtZSA9IHNlbGYucmVxdWVzdC5mdW5jdGlvbi5fX25hbWVf
XwotICAgICAgICAgICAgaXRlbXMuaW5zZXJ0KDAsIChiYXNlbmFtZSwgc291cmNlKSkKLQotICAg
ICAgICByZXQgPSBOb25lCi0gICAgICAgIGZvciBiYXNlbmFtZSwgdmFsdWUgaW4gaXRlbXM6Ci0g
ICAgICAgICAgICBwID0gc2VsZi50bXBkaXIuam9pbihiYXNlbmFtZSkubmV3KGV4dD1leHQpCi0g
ICAgICAgICAgICBwLmRpcnBhdGgoKS5lbnN1cmVfZGlyKCkKLSAgICAgICAgICAgIHNvdXJjZSA9
IFNvdXJjZSh2YWx1ZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHUiXG4iLmpvaW4odG9fdGV4dChs
aW5lKSBmb3IgbGluZSBpbiBzb3VyY2UubGluZXMpCi0gICAgICAgICAgICBwLndyaXRlKHNvdXJj
ZS5zdHJpcCgpLmVuY29kZShlbmNvZGluZyksICJ3YiIpCi0gICAgICAgICAgICBpZiByZXQgaXMg
Tm9uZToKLSAgICAgICAgICAgICAgICByZXQgPSBwCi0gICAgICAgIHJldHVybiByZXQKLQotICAg
IGRlZiBtYWtlZmlsZShzZWxmLCBleHQsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIkNy
ZWF0ZSBhIG5ldyBmaWxlIGluIHRoZSB0ZXN0ZGlyLgotCi0gICAgICAgIGV4dDogVGhlIGV4dGVu
c2lvbiB0aGUgZmlsZSBzaG91bGQgdXNlLCBpbmNsdWRpbmcgdGhlIGRvdC4KLSAgICAgICAgICAg
RS5nLiAiLnB5Ii4KLQotICAgICAgICBhcmdzOiBBbGwgYXJncyB3aWxsIGJlIHRyZWF0ZWQgYXMg
c3RyaW5ncyBhbmQgam9pbmVkIHVzaW5nCi0gICAgICAgICAgIG5ld2xpbmVzLiAgVGhlIHJlc3Vs
dCB3aWxsIGJlIHdyaXR0ZW4gYXMgY29udGVudHMgdG8gdGhlCi0gICAgICAgICAgIGZpbGUuICBU
aGUgbmFtZSBvZiB0aGUgZmlsZSB3aWxsIGJlIGJhc2VkIG9uIHRoZSB0ZXN0Ci0gICAgICAgICAg
IGZ1bmN0aW9uIHJlcXVlc3RpbmcgdGhpcyBmaXh0dXJlLgotICAgICAgICAgICBFLmcuICJ0ZXN0
ZGlyLm1ha2VmaWxlKCcudHh0JywgJ2xpbmUxJywgJ2xpbmUyJykiCi0KLSAgICAgICAga3dhcmdz
OiBFYWNoIGtleXdvcmQgaXMgdGhlIG5hbWUgb2YgYSBmaWxlLCB3aGlsZSB0aGUgdmFsdWUgb2YK
LSAgICAgICAgICAgaXQgd2lsbCBiZSB3cml0dGVuIGFzIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgot
ICAgICAgICAgICBFLmcuICJ0ZXN0ZGlyLm1ha2VmaWxlKCcuaW5pJywgcHl0ZXN0PSdbcHl0ZXN0
XVxuYWRkb3B0cz0tcnNcbicpIgotCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5f
bWFrZWZpbGUoZXh0LCBhcmdzLCBrd2FyZ3MpCi0KLSAgICBkZWYgbWFrZWNvbmZ0ZXN0KHNlbGYs
IHNvdXJjZSk6Ci0gICAgICAgICIiIldyaXRlIGEgY29udGVzdC5weSBmaWxlIHdpdGggJ3NvdXJj
ZScgYXMgY29udGVudHMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLm1ha2VweWZpbGUoY29uZnRl
c3Q9c291cmNlKQotCi0gICAgZGVmIG1ha2Vpbmkoc2VsZiwgc291cmNlKToKLSAgICAgICAgIiIi
V3JpdGUgYSB0b3guaW5pIGZpbGUgd2l0aCAnc291cmNlJyBhcyBjb250ZW50cy4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYubWFrZWZpbGUoJy5pbmknLCB0b3g9c291cmNlKQotCi0gICAgZGVmIGdl
dGluaWNmZyhzZWxmLCBzb3VyY2UpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHB5dGVzdCBzZWN0
aW9uIGZyb20gdGhlIHRveC5pbmkgY29uZmlnIGZpbGUuIiIiCi0gICAgICAgIHAgPSBzZWxmLm1h
a2Vpbmkoc291cmNlKQotICAgICAgICByZXR1cm4gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhwKVsn
cHl0ZXN0J10KLQotICAgIGRlZiBtYWtlcHlmaWxlKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0g
ICAgICAgICIiIlNob3J0Y3V0IGZvciAubWFrZWZpbGUoKSB3aXRoIGEgLnB5IGV4dGVuc2lvbi4i
IiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKCcucHknLCBhcmdzLCBrd2FyZ3MpCi0K
LSAgICBkZWYgbWFrZXR4dGZpbGUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIi
U2hvcnRjdXQgZm9yIC5tYWtlZmlsZSgpIHdpdGggYSAudHh0IGV4dGVuc2lvbi4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKCcudHh0JywgYXJncywga3dhcmdzKQotCi0gICAgZGVm
IHN5c3BhdGhpbnNlcnQoc2VsZiwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiUHJlcGVuZCBhIGRp
cmVjdG9yeSB0byBzeXMucGF0aCwgZGVmYXVsdHMgdG8gOnB5OmF0dHI6YHRtcGRpcmAuCi0KLSAg
ICAgICAgVGhpcyBpcyB1bmRvbmUgYXV0b21hdGljYWxseSBhZnRlciB0aGUgdGVzdC4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHBhdGggPSBzZWxm
LnRtcGRpcgotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc3RyKHBhdGgpKQotICAgICAgICAj
IGEgY2FsbCB0byBzeXNwYXRoaW5zZXJ0KCkgdXN1YWxseSBtZWFucyB0aGF0IHRoZSBjYWxsZXIK
LSAgICAgICAgIyB3YW50cyB0byBpbXBvcnQgc29tZSBkeW5hbWljYWxseSBjcmVhdGVkIGZpbGVz
LgotICAgICAgICAjIHdpdGggcHl0aG9uMyB3ZSB0aHVzIGludmFsaWRhdGUgaW1wb3J0IGNhY2hl
cy4KLSAgICAgICAgc2VsZi5fcG9zc2libHlfaW52YWxpZGF0ZV9pbXBvcnRfY2FjaGVzKCkKLQot
ICAgIGRlZiBfcG9zc2libHlfaW52YWxpZGF0ZV9pbXBvcnRfY2FjaGVzKHNlbGYpOgotICAgICAg
ICAjIGludmFsaWRhdGUgY2FjaGVzIGlmIHdlIGNhbiAocHkzMyBhbmQgYWJvdmUpCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKLSAgICAgICAgZXhjZXB0IEltcG9y
dEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYg
aGFzYXR0cihpbXBvcnRsaWIsICJpbnZhbGlkYXRlX2NhY2hlcyIpOgotICAgICAgICAgICAgICAg
IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCi0KLSAgICBkZWYgbWtkaXIoc2VsZiwgbmFt
ZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyAoc3ViKWRpcmVjdG9yeS4iIiIKLSAgICAgICAg
cmV0dXJuIHNlbGYudG1wZGlyLm1rZGlyKG5hbWUpCi0KLSAgICBkZWYgbWtweWRpcihzZWxmLCBu
YW1lKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IHB5dGhvbiBwYWNrYWdlLgotCi0gICAgICAg
IFRoaXMgY3JlYXRlcyBhIChzdWIpZGlyZWN0b3J5IHdpdGggYW4gZW1wdHkgYGBfX2luaXRfXy5w
eWBgCi0gICAgICAgIGZpbGUgc28gdGhhdCBpcyByZWNvZ25pc2VkIGFzIGEgcHl0aG9uIHBhY2th
Z2UuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHAgPSBzZWxmLm1rZGlyKG5hbWUpCi0gICAgICAg
IHAuZW5zdXJlKCJfX2luaXRfXy5weSIpCi0gICAgICAgIHJldHVybiBwCi0KLSAgICBTZXNzaW9u
ID0gU2Vzc2lvbgotCi0gICAgZGVmIGdldG5vZGUoc2VsZiwgY29uZmlnLCBhcmcpOgotICAgICAg
ICAiIiJSZXR1cm4gdGhlIGNvbGxlY3Rpb24gbm9kZSBvZiBhIGZpbGUuCi0KLSAgICAgICAgOnBh
cmFtIGNvbmZpZzogOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5Db25maWdgIGluc3RhbmNlLCBz
ZWUKLSAgICAgICAgICAgOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBhbmQgOnB5Om1ldGg6YHBhcnNl
Y29uZmlndXJlYCB0bwotICAgICAgICAgICBjcmVhdGUgdGhlIGNvbmZpZ3VyYXRpb24uCi0KLSAg
ICAgICAgOnBhcmFtIGFyZzogQSA6cHk6Y2xhc3M6YHB5LnBhdGgubG9jYWxgIGluc3RhbmNlIG9m
IHRoZSBmaWxlLgotCi0gICAgICAgICIiIgotICAgICAgICBzZXNzaW9uID0gU2Vzc2lvbihjb25m
aWcpCi0gICAgICAgIGFzc2VydCAnOjonIG5vdCBpbiBzdHIoYXJnKQotICAgICAgICBwID0gcHku
cGF0aC5sb2NhbChhcmcpCi0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9zZXNzaW9uc3RhcnQo
c2Vzc2lvbj1zZXNzaW9uKQotICAgICAgICByZXMgPSBzZXNzaW9uLnBlcmZvcm1fY29sbGVjdChb
c3RyKHApXSwgZ2VuaXRlbXM9RmFsc2UpWzBdCi0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9z
ZXNzaW9uZmluaXNoKHNlc3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1cz1FWElUX09LKQotICAgICAg
ICByZXR1cm4gcmVzCi0KLSAgICBkZWYgZ2V0cGF0aG5vZGUoc2VsZiwgcGF0aCk6Ci0gICAgICAg
ICIiIlJldHVybiB0aGUgY29sbGVjdGlvbiBub2RlIG9mIGEgZmlsZS4KLQotICAgICAgICBUaGlz
IGlzIGxpa2UgOnB5Om1ldGg6YGdldG5vZGVgIGJ1dCB1c2VzCi0gICAgICAgIDpweTptZXRoOmBw
YXJzZWNvbmZpZ3VyZWAgdG8gY3JlYXRlIHRoZSAoY29uZmlndXJlZCkgcHl0ZXN0Ci0gICAgICAg
IENvbmZpZyBpbnN0YW5jZS4KLQotICAgICAgICA6cGFyYW0gcGF0aDogQSA6cHk6Y2xhc3M6YHB5
LnBhdGgubG9jYWxgIGluc3RhbmNlIG9mIHRoZSBmaWxlLgotCi0gICAgICAgICIiIgotICAgICAg
ICBjb25maWcgPSBzZWxmLnBhcnNlY29uZmlndXJlKHBhdGgpCi0gICAgICAgIHNlc3Npb24gPSBT
ZXNzaW9uKGNvbmZpZykKLSAgICAgICAgeCA9IHNlc3Npb24uZnNwYXRoLmJlc3RyZWxwYXRoKHBh
dGgpCi0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lvbj1zZXNz
aW9uKQotICAgICAgICByZXMgPSBzZXNzaW9uLnBlcmZvcm1fY29sbGVjdChbeF0sIGdlbml0ZW1z
PUZhbHNlKVswXQotICAgICAgICBjb25maWcuaG9vay5weXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNz
aW9uPXNlc3Npb24sIGV4aXRzdGF0dXM9RVhJVF9PSykKLSAgICAgICAgcmV0dXJuIHJlcwotCi0g
ICAgZGVmIGdlbml0ZW1zKHNlbGYsIGNvbGl0ZW1zKToKLSAgICAgICAgIiIiR2VuZXJhdGUgYWxs
IHRlc3QgaXRlbXMgZnJvbSBhIGNvbGxlY3Rpb24gbm9kZS4KLQotICAgICAgICBUaGlzIHJlY3Vy
c2VzIGludG8gdGhlIGNvbGxlY3Rpb24gbm9kZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YKLSAgICAg
ICAgYWxsIHRoZSB0ZXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4uCi0KLSAgICAgICAgIiIiCi0g
ICAgICAgIHNlc3Npb24gPSBjb2xpdGVtc1swXS5zZXNzaW9uCi0gICAgICAgIHJlc3VsdCA9IFtd
Ci0gICAgICAgIGZvciBjb2xpdGVtIGluIGNvbGl0ZW1zOgotICAgICAgICAgICAgcmVzdWx0LmV4
dGVuZChzZXNzaW9uLmdlbml0ZW1zKGNvbGl0ZW0pKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0K
LSAgICBkZWYgcnVuaXRlbShzZWxmLCBzb3VyY2UpOgotICAgICAgICAiIiJSdW4gdGhlICJ0ZXN0
X2Z1bmMiIEl0ZW0uCi0KLSAgICAgICAgVGhlIGNhbGxpbmcgdGVzdCBpbnN0YW5jZSAodGhlIGNs
YXNzIHdoaWNoIGNvbnRhaW5zIHRoZSB0ZXN0Ci0gICAgICAgIG1ldGhvZCkgbXVzdCBwcm92aWRl
IGEgYGAuZ2V0cnVubmVyKClgYCBtZXRob2Qgd2hpY2ggc2hvdWxkCi0gICAgICAgIHJldHVybiBh
IHJ1bm5lciB3aGljaCBjYW4gcnVuIHRoZSB0ZXN0IHByb3RvY29sIGZvciBhIHNpbmdsZQotICAg
ICAgICBpdGVtLCBsaWtlIGUuZy4gOnB5OmZ1bmM6YF9weXRlc3QucnVubmVyLnJ1bnRlc3Rwcm90
b2NvbGAuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgdXNlZCBmcm9tIHJ1bm5lciBmdW5jdGlv
bmFsIHRlc3RzCi0gICAgICAgIGl0ZW0gPSBzZWxmLmdldGl0ZW0oc291cmNlKQotICAgICAgICAj
IHRoZSB0ZXN0IGNsYXNzIHdoZXJlIHdlIGFyZSBjYWxsZWQgZnJvbSB3YW50cyB0byBwcm92aWRl
IHRoZSBydW5uZXIKLSAgICAgICAgdGVzdGNsYXNzaW5zdGFuY2UgPSBzZWxmLnJlcXVlc3QuaW5z
dGFuY2UKLSAgICAgICAgcnVubmVyID0gdGVzdGNsYXNzaW5zdGFuY2UuZ2V0cnVubmVyKCkKLSAg
ICAgICAgcmV0dXJuIHJ1bm5lcihpdGVtKQotCi0gICAgZGVmIGlubGluZV9ydW5zb3VyY2Uoc2Vs
Ziwgc291cmNlLCAqY21kbGluZWFyZ3MpOgotICAgICAgICAiIiJSdW4gYSB0ZXN0IG1vZHVsZSBp
biBwcm9jZXNzIHVzaW5nIGBgcHl0ZXN0Lm1haW4oKWBgLgotCi0gICAgICAgIFRoaXMgcnVuIHdy
aXRlcyAic291cmNlIiBpbnRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHJ1bnMKLSAgICAgICAgYGBw
eXRlc3QubWFpbigpYGAgb24gaXQsIHJldHVybmluZyBhIDpweTpjbGFzczpgSG9va1JlY29yZGVy
YAotICAgICAgICBpbnN0YW5jZSBmb3IgdGhlIHJlc3VsdC4KLQotICAgICAgICA6cGFyYW0gc291
cmNlOiBUaGUgc291cmNlIGNvZGUgb2YgdGhlIHRlc3QgbW9kdWxlLgotCi0gICAgICAgIDpwYXJh
bSBjbWRsaW5lYXJnczogQW55IGV4dHJhIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gdXNlLgot
Ci0gICAgICAgIDpyZXR1cm46IDpweTpjbGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZSBvZiB0
aGUgcmVzdWx0LgotCi0gICAgICAgICIiIgotICAgICAgICBwID0gc2VsZi5tYWtlcHlmaWxlKHNv
dXJjZSkKLSAgICAgICAgdmFsdWVzID0gbGlzdChjbWRsaW5lYXJncykgKyBbcF0KLSAgICAgICAg
cmV0dXJuIHNlbGYuaW5saW5lX3J1bigqdmFsdWVzKQotCi0gICAgZGVmIGlubGluZV9nZW5pdGVt
cyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICIiIlJ1biBgYHB5dGVzdC5tYWluKFsnLS1jb2xsZWN0
b25seSddKWBgIGluLXByb2Nlc3MuCi0KLSAgICAgICAgUmV0dXJucyBhIHR1cGxlIG9mIHRoZSBj
b2xsZWN0ZWQgaXRlbXMgYW5kIGEKLSAgICAgICAgOnB5OmNsYXNzOmBIb29rUmVjb3JkZXJgIGlu
c3RhbmNlLgotCi0gICAgICAgIFRoaXMgcnVucyB0aGUgOnB5OmZ1bmM6YHB5dGVzdC5tYWluYCBm
dW5jdGlvbiB0byBydW4gYWxsIG9mCi0gICAgICAgIHB5dGVzdCBpbnNpZGUgdGhlIHRlc3QgcHJv
Y2VzcyBpdHNlbGYgbGlrZQotICAgICAgICA6cHk6bWV0aDpgaW5saW5lX3J1bmAuICBIb3dldmVy
IHRoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZgotICAgICAgICB0aGUgY29sbGVjdGlvbiBp
dGVtcyBhbmQgYSA6cHk6Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5zdGFuY2UuCi0KLSAgICAgICAg
IiIiCi0gICAgICAgIHJlYyA9IHNlbGYuaW5saW5lX3J1bigiLS1jb2xsZWN0LW9ubHkiLCAqYXJn
cykKLSAgICAgICAgaXRlbXMgPSBbeC5pdGVtIGZvciB4IGluIHJlYy5nZXRjYWxscygicHl0ZXN0
X2l0ZW1jb2xsZWN0ZWQiKV0KLSAgICAgICAgcmV0dXJuIGl0ZW1zLCByZWMKLQotICAgIGRlZiBp
bmxpbmVfcnVuKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlJ1biBgYHB5dGVz
dC5tYWluKClgYCBpbi1wcm9jZXNzLCByZXR1cm5pbmcgYSBIb29rUmVjb3JkZXIuCi0KLSAgICAg
ICAgVGhpcyBydW5zIHRoZSA6cHk6ZnVuYzpgcHl0ZXN0Lm1haW5gIGZ1bmN0aW9uIHRvIHJ1biBh
bGwgb2YKLSAgICAgICAgcHl0ZXN0IGluc2lkZSB0aGUgdGVzdCBwcm9jZXNzIGl0c2VsZi4gIFRo
aXMgbWVhbnMgaXQgY2FuCi0gICAgICAgIHJldHVybiBhIDpweTpjbGFzczpgSG9va1JlY29yZGVy
YCBpbnN0YW5jZSB3aGljaCBnaXZlcyBtb3JlCi0gICAgICAgIGRldGFpbGVkIHJlc3VsdHMgZnJv
bSB0aGVuIHJ1biB0aGVuIGNhbiBiZSBkb25lIGJ5IG1hdGNoaW5nCi0gICAgICAgIHN0ZG91dC9z
dGRlcnIgZnJvbSA6cHk6bWV0aDpgcnVucHl0ZXN0YC4KLQotICAgICAgICA6cGFyYW0gYXJnczog
QW55IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gcGFzcyB0bwotICAgICAgICAgICA6cHk6ZnVu
YzpgcHl0ZXN0Lm1haW5gLgotCi0gICAgICAgIDpwYXJhbSBwbHVnaW46IChrZXl3b3JkLW9ubHkp
IEV4dHJhIHBsdWdpbiBpbnN0YW5jZXMgdGhlCi0gICAgICAgICAgIGBgcHl0ZXN0Lm1haW4oKWBg
IGluc3RhbmNlIHNob3VsZCB1c2UuCi0KLSAgICAgICAgOnJldHVybjogQSA6cHk6Y2xhc3M6YEhv
b2tSZWNvcmRlcmAgaW5zdGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICAjIFdoZW4gcnVubmlu
ZyBweS50ZXN0IGlubGluZSBhbnkgcGx1Z2lucyBhY3RpdmUgaW4gdGhlIG1haW4KLSAgICAgICAg
IyB0ZXN0IHByb2Nlc3MgYXJlIGFscmVhZHkgaW1wb3J0ZWQuICBTbyB0aGlzIGRpc2FibGVzIHRo
ZQotICAgICAgICAjIHdhcm5pbmcgd2hpY2ggd2lsbCB0cmlnZ2VyIHRvIHNheSB0aGV5IGNhbiBu
byBsb25nZXIgYmUKLSAgICAgICAgIyByZXdyaXR0ZW4sIHdoaWNoIGlzIGZpbmUgYXMgdGhleSBh
cmUgYWxyZWFkeSByZXdyaXR0ZW4uCi0gICAgICAgIG9yaWdfd2FybiA9IEFzc2VydGlvblJld3Jp
dGluZ0hvb2suX3dhcm5fYWxyZWFkeV9pbXBvcnRlZAotCi0gICAgICAgIGRlZiByZXZlcnQoKToK
LSAgICAgICAgICAgIEFzc2VydGlvblJld3JpdGluZ0hvb2suX3dhcm5fYWxyZWFkeV9pbXBvcnRl
ZCA9IG9yaWdfd2FybgotCi0gICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIocmV2ZXJ0
KQotICAgICAgICBBc3NlcnRpb25SZXdyaXRpbmdIb29rLl93YXJuX2FscmVhZHlfaW1wb3J0ZWQg
PSBsYW1iZGEgKmE6IE5vbmUKLQotICAgICAgICByZWMgPSBbXQotCi0gICAgICAgIGNsYXNzIENv
bGxlY3Q6Ci0gICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZSh4LCBjb25maWcpOgotICAg
ICAgICAgICAgICAgIHJlYy5hcHBlbmQoc2VsZi5tYWtlX2hvb2tfcmVjb3JkZXIoY29uZmlnLnBs
dWdpbm1hbmFnZXIpKQotCi0gICAgICAgIHBsdWdpbnMgPSBrd2FyZ3MuZ2V0KCJwbHVnaW5zIikg
b3IgW10KLSAgICAgICAgcGx1Z2lucy5hcHBlbmQoQ29sbGVjdCgpKQotICAgICAgICByZXQgPSBw
eXRlc3QubWFpbihsaXN0KGFyZ3MpLCBwbHVnaW5zPXBsdWdpbnMpCi0gICAgICAgIHNlbGYuZGVs
ZXRlX2xvYWRlZF9tb2R1bGVzKCkKLSAgICAgICAgaWYgbGVuKHJlYykgPT0gMToKLSAgICAgICAg
ICAgIHJlcHJlYyA9IHJlYy5wb3AoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2xhc3Mg
cmVwcmVjOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmVwcmVjLnJldCA9IHJldAot
Ci0gICAgICAgICMgdHlwaWNhbGx5IHdlIHJlcmFpc2Uga2V5Ym9hcmQgaW50ZXJydXB0cyBmcm9t
IHRoZSBjaGlsZCBydW4KLSAgICAgICAgIyBiZWNhdXNlIGl0J3Mgb3VyIHVzZXIgcmVxdWVzdGlu
ZyBpbnRlcnJ1cHRpb24gb2YgdGhlIHRlc3RpbmcKLSAgICAgICAgaWYgcmV0ID09IDIgYW5kIG5v
dCBrd2FyZ3MuZ2V0KCJub19yZXJhaXNlX2N0cmxjIik6Ci0gICAgICAgICAgICBjYWxscyA9IHJl
cHJlYy5nZXRjYWxscygicHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdCIpCi0gICAgICAgICAgICBp
ZiBjYWxscyBhbmQgY2FsbHNbLTFdLmV4Y2luZm8udHlwZSA9PSBLZXlib2FyZEludGVycnVwdDoK
LSAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdCgpCi0gICAgICAgIHJldHVy
biByZXByZWMKLQotICAgIGRlZiBydW5weXRlc3RfaW5wcm9jZXNzKHNlbGYsICphcmdzLCAqKmt3
YXJncyk6Ci0gICAgICAgICIiIiBSZXR1cm4gcmVzdWx0IG9mIHJ1bm5pbmcgcHl0ZXN0IGluLXBy
b2Nlc3MsIHByb3ZpZGluZyBhIHNpbWlsYXIKLSAgICAgICAgaW50ZXJmYWNlIHRvIHdoYXQgc2Vs
Zi5ydW5weXRlc3QoKSBwcm92aWRlcy4gIiIiCi0gICAgICAgIGlmIGt3YXJncy5nZXQoInN5c3Bh
dGhpbnNlcnQiKToKLSAgICAgICAgICAgIHNlbGYuc3lzcGF0aGluc2VydCgpCi0gICAgICAgIG5v
dyA9IHRpbWUudGltZSgpCi0gICAgICAgIGNhcHR1cmUgPSBNdWx0aUNhcHR1cmUoQ2FwdHVyZT1T
eXNDYXB0dXJlKQotICAgICAgICBjYXB0dXJlLnN0YXJ0X2NhcHR1cmluZygpCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXByZWMgPSBzZWxmLmlubGlu
ZV9ydW4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQgYXMg
ZToKLQotICAgICAgICAgICAgICAgIGNsYXNzIHJlcHJlYzoKLSAgICAgICAgICAgICAgICAgICAg
cmV0ID0gZS5hcmdzWzBdCi0KLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAg
ICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0KLSAgICAgICAgICAgICAgICBjbGFzcyBy
ZXByZWM6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IDMKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIG91dCwgZXJyID0gY2FwdHVyZS5yZWFkb3V0ZXJyKCkKLSAgICAgICAgICAgIGNh
cHR1cmUuc3RvcF9jYXB0dXJpbmcoKQotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvdXQp
Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycikKLQotICAgICAgICByZXMgPSBSdW5S
ZXN1bHQocmVwcmVjLnJldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5zcGxpdCgiXG4i
KSwgZXJyLnNwbGl0KCJcbiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50aW1lKCkg
LSBub3cpCi0gICAgICAgIHJlcy5yZXByZWMgPSByZXByZWMKLSAgICAgICAgcmV0dXJuIHJlcwot
Ci0gICAgZGVmIHJ1bnB5dGVzdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAiIiIg
UnVuIHB5dGVzdCBpbmxpbmUgb3IgaW4gYSBzdWJwcm9jZXNzLCBkZXBlbmRpbmcgb24gdGhlIGNv
bW1hbmQgbGluZQotICAgICAgICBvcHRpb24gIi0tcnVucHl0ZXN0IiBhbmQgcmV0dXJuIGEgOnB5
OmNsYXNzOmBSdW5SZXN1bHRgLgotCi0gICAgICAgICIiIgotICAgICAgICBhcmdzID0gc2VsZi5f
ZW5zdXJlX2Jhc2V0ZW1wKGFyZ3MpCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5weXRlc3RfbWV0
aG9kKCphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBfZW5zdXJlX2Jhc2V0ZW1wKHNlbGYsIGFy
Z3MpOgotICAgICAgICBhcmdzID0gW3N0cih4KSBmb3IgeCBpbiBhcmdzXQotICAgICAgICBmb3Ig
eCBpbiBhcmdzOgotICAgICAgICAgICAgaWYgc3RyKHgpLnN0YXJ0c3dpdGgoJy0tYmFzZXRlbXAn
KToKLSAgICAgICAgICAgICAgICAjIHByaW50KCJiYXNlZHRlbXAgZXhpc3RzOiAlcyIgJShhcmdz
LCkpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKCItLWJhc2V0ZW1wPSVzIiAlIHNlbGYudG1wZGlyLmRpcnBhdGgoJ2Jhc2V0ZW1w
JykpCi0gICAgICAgICAgICAjIHByaW50KCJhZGRlZCBiYXNldGVtcDogJXMiICUoYXJncywpKQot
ICAgICAgICByZXR1cm4gYXJncwotCi0gICAgZGVmIHBhcnNlY29uZmlnKHNlbGYsICphcmdzKToK
LSAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHB5dGVzdCBDb25maWcgaW5zdGFuY2UgZnJvbSBnaXZl
biBjb21tYW5kbGluZSBhcmdzLgotCi0gICAgICAgIFRoaXMgaW52b2tlcyB0aGUgcHl0ZXN0IGJv
b3RzdHJhcHBpbmcgY29kZSBpbiBfcHl0ZXN0LmNvbmZpZwotICAgICAgICB0byBjcmVhdGUgYSBu
ZXcgOnB5OmNsYXNzOmBfcHl0ZXN0LmNvcmUuUGx1Z2luTWFuYWdlcmAgYW5kCi0gICAgICAgIGNh
bGwgdGhlIHB5dGVzdF9jbWRsaW5lX3BhcnNlIGhvb2sgdG8gY3JlYXRlIG5ldwotICAgICAgICA6
cHk6Y2xhc3M6YF9weXRlc3QuY29uZmlnLkNvbmZpZ2AgaW5zdGFuY2UuCi0KLSAgICAgICAgSWYg
OnB5OmF0dHI6YHBsdWdpbnNgIGhhcyBiZWVuIHBvcHVsYXRlZCB0aGV5IHNob3VsZCBiZSBwbHVn
aW4KLSAgICAgICAgbW9kdWxlcyB3aGljaCB3aWxsIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgUGx1
Z2luTWFuYWdlci4KLQotICAgICAgICAiIiIKLSAgICAgICAgYXJncyA9IHNlbGYuX2Vuc3VyZV9i
YXNldGVtcChhcmdzKQotCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwotICAgICAgICBj
b25maWcgPSBfcHl0ZXN0LmNvbmZpZy5fcHJlcGFyZWNvbmZpZyhhcmdzLCBzZWxmLnBsdWdpbnMp
Ci0gICAgICAgICMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSB0ZXN0IHdpbGwgZG8gd2l0aCB0aGlz
IGhhbGYtc2V0dXAgY29uZmlnCi0gICAgICAgICMgb2JqZWN0IGFuZCB0aHVzIHdlIG1ha2Ugc3Vy
ZSBpdCBnZXRzIHVuY29uZmlndXJlZCBwcm9wZXJseSBpbiBhbnkKLSAgICAgICAgIyBjYXNlIChv
dGhlcndpc2UgY2FwdHVyaW5nIGNvdWxkIHN0aWxsIGJlIGFjdGl2ZSwgZm9yIGV4YW1wbGUpCi0g
ICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIoY29uZmlnLl9lbnN1cmVfdW5jb25maWd1
cmUpCi0gICAgICAgIHJldHVybiBjb25maWcKLQotICAgIGRlZiBwYXJzZWNvbmZpZ3VyZShzZWxm
LCAqYXJncyk6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBweXRlc3QgY29uZmlndXJlZCBDb25m
aWcgaW5zdGFuY2UuCi0KLSAgICAgICAgVGhpcyByZXR1cm5zIGEgbmV3IDpweTpjbGFzczpgX3B5
dGVzdC5jb25maWcuQ29uZmlnYCBpbnN0YW5jZQotICAgICAgICBsaWtlIDpweTptZXRoOmBwYXJz
ZWNvbmZpZ2AsIGJ1dCBhbHNvIGNhbGxzIHRoZQotICAgICAgICBweXRlc3RfY29uZmlndXJlIGhv
b2suCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGNvbmZpZyA9IHNlbGYucGFyc2Vjb25maWcoKmFy
Z3MpCi0gICAgICAgIGNvbmZpZy5fZG9fY29uZmlndXJlKCkKLSAgICAgICAgc2VsZi5yZXF1ZXN0
LmFkZGZpbmFsaXplcihjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3VyZSkKLSAgICAgICAgcmV0dXJu
IGNvbmZpZwotCi0gICAgZGVmIGdldGl0ZW0oc2VsZiwgc291cmNlLCBmdW5jbmFtZT0idGVzdF9m
dW5jIik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgdGVzdCBpdGVtIGZvciBhIHRlc3QgZnVuY3Rp
b24uCi0KLSAgICAgICAgVGhpcyB3cml0ZXMgdGhlIHNvdXJjZSB0byBhIHB5dGhvbiBmaWxlIGFu
ZCBydW5zIHB5dGVzdCdzCi0gICAgICAgIGNvbGxlY3Rpb24gb24gdGhlIHJlc3VsdGluZyBtb2R1
bGUsIHJldHVybmluZyB0aGUgdGVzdCBpdGVtCi0gICAgICAgIGZvciB0aGUgcmVxdWVzdGVkIGZ1
bmN0aW9uIG5hbWUuCi0KLSAgICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIG1vZHVsZSBzb3VyY2Uu
Ci0KLSAgICAgICAgOnBhcmFtIGZ1bmNuYW1lOiBUaGUgbmFtZSBvZiB0aGUgdGVzdCBmdW5jdGlv
biBmb3Igd2hpY2ggdGhlCi0gICAgICAgICAgIEl0ZW0gbXVzdCBiZSByZXR1cm5lZC4KLQotICAg
ICAgICAiIiIKLSAgICAgICAgaXRlbXMgPSBzZWxmLmdldGl0ZW1zKHNvdXJjZSkKLSAgICAgICAg
Zm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICBpZiBpdGVtLm5hbWUgPT0gZnVuY25hbWU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICAgICAgYXNzZXJ0IDAsICIlciBpdGVt
IG5vdCBmb3VuZCBpbiBtb2R1bGU6XG4lc1xuaXRlbXM6ICVzIiAlICgKLSAgICAgICAgICAgICAg
ICAgIGZ1bmNuYW1lLCBzb3VyY2UsIGl0ZW1zKQotCi0gICAgZGVmIGdldGl0ZW1zKHNlbGYsIHNv
dXJjZSk6Ci0gICAgICAgICIiIlJldHVybiBhbGwgdGVzdCBpdGVtcyBjb2xsZWN0ZWQgZnJvbSB0
aGUgbW9kdWxlLgotCi0gICAgICAgIFRoaXMgd3JpdGVzIHRoZSBzb3VyY2UgdG8gYSBweXRob24g
ZmlsZSBhbmQgcnVucyBweXRlc3QncwotICAgICAgICBjb2xsZWN0aW9uIG9uIHRoZSByZXN1bHRp
bmcgbW9kdWxlLCByZXR1cm5pbmcgYWxsIHRlc3QgaXRlbXMKLSAgICAgICAgY29udGFpbmVkIHdp
dGhpbi4KLQotICAgICAgICAiIiIKLSAgICAgICAgbW9kY29sID0gc2VsZi5nZXRtb2R1bGVjb2wo
c291cmNlKQotICAgICAgICByZXR1cm4gc2VsZi5nZW5pdGVtcyhbbW9kY29sXSkKLQotICAgIGRl
ZiBnZXRtb2R1bGVjb2woc2VsZiwgc291cmNlLCBjb25maWdhcmdzPSgpLCB3aXRoaW5pdD1GYWxz
ZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbW9kdWxlIGNvbGxlY3Rpb24gbm9kZSBmb3IgYGBz
b3VyY2VgYC4KLQotICAgICAgICBUaGlzIHdyaXRlcyBgYHNvdXJjZWBgIHRvIGEgZmlsZSB1c2lu
ZyA6cHk6bWV0aDpgbWFrZXB5ZmlsZWAKLSAgICAgICAgYW5kIHRoZW4gcnVucyB0aGUgcHl0ZXN0
IGNvbGxlY3Rpb24gb24gaXQsIHJldHVybmluZyB0aGUKLSAgICAgICAgY29sbGVjdGlvbiBub2Rl
IGZvciB0aGUgdGVzdCBtb2R1bGUuCi0KLSAgICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIHNvdXJj
ZSBjb2RlIG9mIHRoZSBtb2R1bGUgdG8gY29sbGVjdC4KLQotICAgICAgICA6cGFyYW0gY29uZmln
YXJnczogQW55IGV4dHJhIGFyZ3VtZW50cyB0byBwYXNzIHRvCi0gICAgICAgICAgIDpweTptZXRo
OmBwYXJzZWNvbmZpZ3VyZWAuCi0KLSAgICAgICAgOnBhcmFtIHdpdGhpbml0OiBXaGV0aGVyIHRv
IGFsc28gd3JpdGUgYSBgYF9faW5pdF9fLnB5YGAgZmlsZQotICAgICAgICAgICB0byB0aGUgdGVt
cG9yYXJ5IGRpcmVjdG9yeSB0byBlbnN1cmUgaXQgaXMgYSBwYWNrYWdlLgotCi0gICAgICAgICIi
IgotICAgICAgICBrdyA9IHtzZWxmLnJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX186IFNvdXJjZShz
b3VyY2UpLnN0cmlwKCl9Ci0gICAgICAgIHBhdGggPSBzZWxmLm1ha2VweWZpbGUoKiprdykKLSAg
ICAgICAgaWYgd2l0aGluaXQ6Ci0gICAgICAgICAgICBzZWxmLm1ha2VweWZpbGUoX19pbml0X189
IiMiKQotICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZyA9IHNlbGYucGFyc2Vjb25maWd1cmUo
cGF0aCwgKmNvbmZpZ2FyZ3MpCi0gICAgICAgIG5vZGUgPSBzZWxmLmdldG5vZGUoY29uZmlnLCBw
YXRoKQotCi0gICAgICAgIHJldHVybiBub2RlCi0KLSAgICBkZWYgY29sbGVjdF9ieV9uYW1lKHNl
bGYsIG1vZGNvbCwgbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29sbGVjdGlvbiBub2Rl
IGZvciBuYW1lIGZyb20gdGhlIG1vZHVsZSBjb2xsZWN0aW9uLgotCi0gICAgICAgIFRoaXMgd2ls
bCBzZWFyY2ggYSBtb2R1bGUgY29sbGVjdGlvbiBub2RlIGZvciBhIGNvbGxlY3Rpb24KLSAgICAg
ICAgbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gbmFtZS4KLQotICAgICAgICA6cGFyYW0gbW9kY29s
OiBBIG1vZHVsZSBjb2xsZWN0aW9uIG5vZGUsIHNlZQotICAgICAgICAgICA6cHk6bWV0aDpgZ2V0
bW9kdWxlY29sYC4KLQotICAgICAgICA6cGFyYW0gbmFtZTogVGhlIG5hbWUgb2YgdGhlIG5vZGUg
dG8gcmV0dXJuLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBtb2Rjb2wgbm90IGluIHNlbGYu
X21vZF9jb2xsZWN0aW9uczoKLSAgICAgICAgICAgIHNlbGYuX21vZF9jb2xsZWN0aW9uc1ttb2Rj
b2xdID0gbGlzdChtb2Rjb2wuY29sbGVjdCgpKQotICAgICAgICBmb3IgY29saXRlbSBpbiBzZWxm
Ll9tb2RfY29sbGVjdGlvbnNbbW9kY29sXToKLSAgICAgICAgICAgIGlmIGNvbGl0ZW0ubmFtZSA9
PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBjb2xpdGVtCi0KLSAgICBkZWYgcG9wZW4o
c2VsZiwgY21kYXJncywgc3Rkb3V0LCBzdGRlcnIsICoqa3cpOgotICAgICAgICAiIiJJbnZva2Ug
c3VicHJvY2Vzcy5Qb3Blbi4KLQotICAgICAgICBUaGlzIGNhbGxzIHN1YnByb2Nlc3MuUG9wZW4g
bWFraW5nIHN1cmUgdGhlIGN1cnJlbnQgd29ya2luZwotICAgICAgICBkaXJlY3RvcnkgaXMgdGhl
IFBZVEhPTlBBVEguCi0KLSAgICAgICAgWW91IHByb2JhYmx5IHdhbnQgdG8gdXNlIDpweTptZXRo
OmBydW5gIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGVudiA9IG9zLmVudmlyb24u
Y29weSgpCi0gICAgICAgIGVudlsnUFlUSE9OUEFUSCddID0gb3MucGF0aHNlcC5qb2luKGZpbHRl
cihOb25lLCBbCi0gICAgICAgICAgICBzdHIob3MuZ2V0Y3dkKCkpLCBlbnYuZ2V0KCdQWVRIT05Q
QVRIJywgJycpXSkpCi0gICAgICAgIGt3WydlbnYnXSA9IGVudgotCi0gICAgICAgIHBvcGVuID0g
c3VicHJvY2Vzcy5Qb3BlbihjbWRhcmdzLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1z
dGRvdXQsIHN0ZGVycj1zdGRlcnIsICoqa3cpCi0gICAgICAgIHBvcGVuLnN0ZGluLmNsb3NlKCkK
LQotICAgICAgICByZXR1cm4gcG9wZW4KLQotICAgIGRlZiBydW4oc2VsZiwgKmNtZGFyZ3MpOgot
ICAgICAgICAiIiJSdW4gYSBjb21tYW5kIHdpdGggYXJndW1lbnRzLgotCi0gICAgICAgIFJ1biBh
IHByb2Nlc3MgdXNpbmcgc3VicHJvY2Vzcy5Qb3BlbiBzYXZpbmcgdGhlIHN0ZG91dCBhbmQKLSAg
ICAgICAgc3RkZXJyLgotCi0gICAgICAgIFJldHVybnMgYSA6cHk6Y2xhc3M6YFJ1blJlc3VsdGAu
Ci0KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW4oKmNtZGFyZ3MpCi0KLSAg
ICBkZWYgX3J1bihzZWxmLCAqY21kYXJncyk6Ci0gICAgICAgIGNtZGFyZ3MgPSBbc3RyKHgpIGZv
ciB4IGluIGNtZGFyZ3NdCi0gICAgICAgIHAxID0gc2VsZi50bXBkaXIuam9pbigic3Rkb3V0IikK
LSAgICAgICAgcDIgPSBzZWxmLnRtcGRpci5qb2luKCJzdGRlcnIiKQotICAgICAgICBwcmludCgi
cnVubmluZzoiLCAnICcuam9pbihjbWRhcmdzKSkKLSAgICAgICAgcHJpbnQoIiAgICAgaW46Iiwg
c3RyKHB5LnBhdGgubG9jYWwoKSkpCi0gICAgICAgIGYxID0gY29kZWNzLm9wZW4oc3RyKHAxKSwg
InciLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIGYyID0gY29kZWNzLm9wZW4oc3RyKHAyKSwg
InciLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5vdyA9IHRp
bWUudGltZSgpCi0gICAgICAgICAgICBwb3BlbiA9IHNlbGYucG9wZW4oY21kYXJncywgc3Rkb3V0
PWYxLCBzdGRlcnI9ZjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRz
PShzeXMucGxhdGZvcm0gIT0gIndpbjMyIikpCi0gICAgICAgICAgICByZXQgPSBwb3Blbi53YWl0
KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYxLmNsb3NlKCkKLSAgICAgICAgICAg
IGYyLmNsb3NlKCkKLSAgICAgICAgZjEgPSBjb2RlY3Mub3BlbihzdHIocDEpLCAiciIsIGVuY29k
aW5nPSJ1dGY4IikKLSAgICAgICAgZjIgPSBjb2RlY3Mub3BlbihzdHIocDIpLCAiciIsIGVuY29k
aW5nPSJ1dGY4IikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0ID0gZjEucmVhZCgpLnNw
bGl0bGluZXMoKQotICAgICAgICAgICAgZXJyID0gZjIucmVhZCgpLnNwbGl0bGluZXMoKQotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZjEuY2xvc2UoKQotICAgICAgICAgICAgZjIuY2xv
c2UoKQotICAgICAgICBzZWxmLl9kdW1wX2xpbmVzKG91dCwgc3lzLnN0ZG91dCkKLSAgICAgICAg
c2VsZi5fZHVtcF9saW5lcyhlcnIsIHN5cy5zdGRlcnIpCi0gICAgICAgIHJldHVybiBSdW5SZXN1
bHQocmV0LCBvdXQsIGVyciwgdGltZS50aW1lKCkgLSBub3cpCi0KLSAgICBkZWYgX2R1bXBfbGlu
ZXMoc2VsZiwgbGluZXMsIGZwKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGxpbmUg
aW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1mcCkKLSAgICAgICAg
ZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJjb3VsZG4ndCBw
cmludCB0byAlcyBiZWNhdXNlIG9mIGVuY29kaW5nIiAlIChmcCwpKQotCi0gICAgZGVmIF9nZXRw
eXRlc3RhcmdzKHNlbGYpOgotICAgICAgICAjIHdlIGNhbm5vdCB1c2UgIihzeXMuZXhlY3V0YWJs
ZSxzY3JpcHQpIgotICAgICAgICAjIGJlY2F1c2Ugb24gd2luZG93cyB0aGUgc2NyaXB0IGlzIGUu
Zy4gYSBweXRlc3QuZXhlCi0gICAgICAgIHJldHVybiAoc3lzLmV4ZWN1dGFibGUsIFBZVEVTVF9G
VUxMUEFUSCkgIyBub3FhCi0KLSAgICBkZWYgcnVucHl0aG9uKHNlbGYsIHNjcmlwdCk6Ci0gICAg
ICAgICIiIlJ1biBhIHB5dGhvbiBzY3JpcHQgdXNpbmcgc3lzLmV4ZWN1dGFibGUgYXMgaW50ZXJw
cmV0ZXIuCi0KLSAgICAgICAgUmV0dXJucyBhIDpweTpjbGFzczpgUnVuUmVzdWx0YC4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bihzeXMuZXhlY3V0YWJsZSwgc2NyaXB0KQot
Ci0gICAgZGVmIHJ1bnB5dGhvbl9jKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICAiIiJSdW4gcHl0
aG9uIC1jICJjb21tYW5kIiwgcmV0dXJuIGEgOnB5OmNsYXNzOmBSdW5SZXN1bHRgLiIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5ydW4oc3lzLmV4ZWN1dGFibGUsICItYyIsIGNvbW1hbmQpCi0KLSAg
ICBkZWYgcnVucHl0ZXN0X3N1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAg
ICAgIiIiUnVuIHB5dGVzdCBhcyBhIHN1YnByb2Nlc3Mgd2l0aCBnaXZlbiBhcmd1bWVudHMuCi0K
LSAgICAgICAgQW55IHBsdWdpbnMgYWRkZWQgdG8gdGhlIDpweTphdHRyOmBwbHVnaW5zYCBsaXN0
IHdpbGwgYWRkZWQKLSAgICAgICAgdXNpbmcgdGhlIGBgLXBgYCBjb21tYW5kIGxpbmUgb3B0aW9u
LiAgQWRkdGlvbmFsbHkKLSAgICAgICAgYGAtLWJhc2V0ZW1wYGAgaXMgdXNlZCBwdXQgYW55IHRl
bXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMKLSAgICAgICAgaW4gYSBudW1iZXJlZCBkaXJl
Y3RvcnkgcHJlZml4ZWQgd2l0aCAicnVucHl0ZXN0LSIgc28gdGhleSBkbwotICAgICAgICBub3Qg
Y29uZmxpY3Qgd2l0aCB0aGUgbm9ybWFsIG51bWJlcmQgcHl0ZXN0IGxvY2F0aW9uIGZvcgotICAg
ICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgotCi0gICAgICAgIFJldHVybnMg
YSA6cHk6Y2xhc3M6YFJ1blJlc3VsdGAuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHAgPSBweS5w
YXRoLmxvY2FsLm1ha2VfbnVtYmVyZWRfZGlyKHByZWZpeD0icnVucHl0ZXN0LSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXA9Tm9uZSwgcm9vdGRpcj1z
ZWxmLnRtcGRpcikKLSAgICAgICAgYXJncyA9ICgnLS1iYXNldGVtcD0lcycgJSBwLCApICsgYXJn
cwotICAgICAgICAjIGZvciB4IGluIGFyZ3M6Ci0gICAgICAgICMgICAgaWYgJy0tY29uZmN1dGRp
cicgaW4gc3RyKHgpOgotICAgICAgICAjICAgICAgICBicmVhawotICAgICAgICAjIGVsc2U6Ci0g
ICAgICAgICMgICAgcGFzcwotICAgICAgICAjICAgIGFyZ3MgPSAoJy0tY29uZmN1dGRpcj0uJywp
ICsgYXJncwotICAgICAgICBwbHVnaW5zID0gW3ggZm9yIHggaW4gc2VsZi5wbHVnaW5zIGlmIGlz
aW5zdGFuY2UoeCwgc3RyKV0KLSAgICAgICAgaWYgcGx1Z2luczoKLSAgICAgICAgICAgIGFyZ3Mg
PSAoJy1wJywgcGx1Z2luc1swXSkgKyBhcmdzCi0gICAgICAgIGFyZ3MgPSBzZWxmLl9nZXRweXRl
c3RhcmdzKCkgKyBhcmdzCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bigqYXJncykKLQotICAgIGRl
ZiBzcGF3bl9weXRlc3Qoc2VsZiwgc3RyaW5nLCBleHBlY3RfdGltZW91dD0xMC4wKToKLSAgICAg
ICAgIiIiUnVuIHB5dGVzdCB1c2luZyBwZXhwZWN0LgotCi0gICAgICAgIFRoaXMgbWFrZXMgc3Vy
ZSB0byB1c2UgdGhlIHJpZ2h0IHB5dGVzdCBhbmQgc2V0cyB1cCB0aGUKLSAgICAgICAgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBsb2NhdGlvbnMuCi0KLSAgICAgICAgVGhlIHBleHBlY3QgY2hpbGQgaXMg
cmV0dXJuZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGJhc2V0ZW1wID0gc2VsZi50bXBkaXIu
bWtkaXIoInRlbXAtcGV4cGVjdCIpCi0gICAgICAgIGludm9rZSA9ICIgIi5qb2luKG1hcChzdHIs
IHNlbGYuX2dldHB5dGVzdGFyZ3MoKSkpCi0gICAgICAgIGNtZCA9ICIlcyAtLWJhc2V0ZW1wPSVz
ICVzIiAlIChpbnZva2UsIGJhc2V0ZW1wLCBzdHJpbmcpCi0gICAgICAgIHJldHVybiBzZWxmLnNw
YXduKGNtZCwgZXhwZWN0X3RpbWVvdXQ9ZXhwZWN0X3RpbWVvdXQpCi0KLSAgICBkZWYgc3Bhd24o
c2VsZiwgY21kLCBleHBlY3RfdGltZW91dD0xMC4wKToKLSAgICAgICAgIiIiUnVuIGEgY29tbWFu
ZCB1c2luZyBwZXhwZWN0LgotCi0gICAgICAgIFRoZSBwZXhwZWN0IGNoaWxkIGlzIHJldHVybmVk
LgotICAgICAgICAiIiIKLSAgICAgICAgcGV4cGVjdCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoInBl
eHBlY3QiLCAiMy4wIikKLSAgICAgICAgaWYgaGFzYXR0cihzeXMsICdweXB5X3ZlcnNpb25faW5m
bycpIGFuZCAnNjQnIGluIHBsYXRmb3JtLm1hY2hpbmUoKToKLSAgICAgICAgICAgIHB5dGVzdC5z
a2lwKCJweXB5LTY0IGJpdCBub3Qgc3VwcG9ydGVkIikKLSAgICAgICAgaWYgc3lzLnBsYXRmb3Jt
LnN0YXJ0c3dpdGgoImZyZWVic2QiKToKLSAgICAgICAgICAgIHB5dGVzdC54ZmFpbCgicGV4cGVj
dCBkb2VzIG5vdCB3b3JrIHJlbGlhYmx5IG9uIGZyZWVic2QiKQotICAgICAgICBsb2dmaWxlID0g
c2VsZi50bXBkaXIuam9pbigic3Bhd24ub3V0Iikub3Blbigid2IiKQotICAgICAgICBjaGlsZCA9
IHBleHBlY3Quc3Bhd24oY21kLCBsb2dmaWxlPWxvZ2ZpbGUpCi0gICAgICAgIHNlbGYucmVxdWVz
dC5hZGRmaW5hbGl6ZXIobG9nZmlsZS5jbG9zZSkKLSAgICAgICAgY2hpbGQudGltZW91dCA9IGV4
cGVjdF90aW1lb3V0Ci0gICAgICAgIHJldHVybiBjaGlsZAotCi0KLWRlZiBnZXRkZWNvZGVkKG91
dCk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gb3V0LmRlY29kZSgidXRmLTgiKQotICAgIGV4
Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgIHJldHVybiAiSU5URVJOQUwgbm90LXV0
ZjgtZGVjb2RlYWJsZSwgdHJ1bmNhdGVkIHN0cmluZzpcbiVzIiAlICgKLSAgICAgICAgICAgIHB5
LmlvLnNhZmVyZXByKG91dCksKQotCi0KLWNsYXNzIExpbmVDb21wOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKLSAgICAgICAgc2VsZi5zdHJpbmdpbyA9IHB5LmlvLlRleHRJTygpCi0KLSAgICBk
ZWYgYXNzZXJ0X2NvbnRhaW5zX2xpbmVzKHNlbGYsIGxpbmVzMik6Ci0gICAgICAgICIiIiBhc3Nl
cnQgdGhhdCBsaW5lczIgYXJlIGNvbnRhaW5lZCAobGluZWFybHkpIGluIGxpbmVzMS4KLSAgICAg
ICAgICAgIHJldHVybiBhIGxpc3Qgb2YgZXh0cmFsaW5lcyBmb3VuZC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICB2YWwgPSBzZWxmLnN0cmlu
Z2lvLmdldHZhbHVlKCkKLSAgICAgICAgc2VsZi5zdHJpbmdpby50cnVuY2F0ZSgwKQotICAgICAg
ICBzZWxmLnN0cmluZ2lvLnNlZWsoMCkKLSAgICAgICAgbGluZXMxID0gdmFsLnNwbGl0KCJcbiIp
Ci0gICAgICAgIHJldHVybiBMaW5lTWF0Y2hlcihsaW5lczEpLmZubWF0Y2hfbGluZXMobGluZXMy
KQotCi0KLWNsYXNzIExpbmVNYXRjaGVyOgotICAgICIiIkZsZXhpYmxlIG1hdGNoaW5nIG9mIHRl
eHQuCi0KLSAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgY2xhc3MgdG8gdGVzdCBsYXJnZSB0ZXh0
cyBsaWtlIHRoZSBvdXRwdXQgb2YKLSAgICBjb21tYW5kcy4KLQotICAgIFRoZSBjb25zdHJ1Y3Rv
ciB0YWtlcyBhIGxpc3Qgb2YgbGluZXMgd2l0aG91dCB0aGVpciB0cmFpbGluZwotICAgIG5ld2xp
bmVzLCBpLmUuIGBgdGV4dC5zcGxpdGxpbmVzKClgYC4KLQotICAgICIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCi0gICAgICAg
IHNlbGYuX2xvZ19vdXRwdXQgPSBbXQotCi0gICAgZGVmIHN0cihzZWxmKToKLSAgICAgICAgIiIi
UmV0dXJuIHRoZSBlbnRpcmUgb3JpZ2luYWwgdGV4dC4iIiIKLSAgICAgICAgcmV0dXJuICJcbiIu
am9pbihzZWxmLmxpbmVzKQotCi0gICAgZGVmIF9nZXRsaW5lcyhzZWxmLCBsaW5lczIpOgotICAg
ICAgICBpZiBpc2luc3RhbmNlKGxpbmVzMiwgc3RyKToKLSAgICAgICAgICAgIGxpbmVzMiA9IFNv
dXJjZShsaW5lczIpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZXMyLCBTb3VyY2UpOgotICAg
ICAgICAgICAgbGluZXMyID0gbGluZXMyLnN0cmlwKCkubGluZXMKLSAgICAgICAgcmV0dXJuIGxp
bmVzMgotCi0gICAgZGVmIGZubWF0Y2hfbGluZXNfcmFuZG9tKHNlbGYsIGxpbmVzMik6Ci0gICAg
ICAgICIiIkNoZWNrIGxpbmVzIGV4aXN0IGluIHRoZSBvdXRwdXQgdXNpbmcgYGBmbm1hdGNoLmZu
bWF0Y2hgYCwgaW4gYW55IG9yZGVyLgotCi0gICAgICAgIFRoZSBhcmd1bWVudCBpcyBhIGxpc3Qg
b2YgbGluZXMgd2hpY2ggaGF2ZSB0byBvY2N1ciBpbiB0aGUKLSAgICAgICAgb3V0cHV0LCBpbiBh
bnkgb3JkZXIuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9tYXRjaF9saW5lc19yYW5kb20o
bGluZXMyLCBmbm1hdGNoKQotCi0gICAgZGVmIHJlX21hdGNoX2xpbmVzX3JhbmRvbShzZWxmLCBs
aW5lczIpOgotICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlzdCBpbiB0aGUgb3V0cHV0IHVzaW5n
IGBgcmUubWF0Y2hgYCwgaW4gYW55IG9yZGVyLgotCi0gICAgICAgIFRoZSBhcmd1bWVudCBpcyBh
IGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBvY2N1ciBpbiB0aGUKLSAgICAgICAgb3V0cHV0
LCBpbiBhbnkgb3JkZXIuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21hdGNoX2xpbmVz
X3JhbmRvbShsaW5lczIsIGxhbWJkYSBuYW1lLCBwYXQ6IHJlLm1hdGNoKHBhdCwgbmFtZSkpCi0K
LSAgICBkZWYgX21hdGNoX2xpbmVzX3JhbmRvbShzZWxmLCBsaW5lczIsIG1hdGNoX2Z1bmMpOgot
ICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlzdCBpbiB0aGUgb3V0cHV0LgotCi0gICAgICAgIFRo
ZSBhcmd1bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBvY2N1ciBpbiB0aGUK
LSAgICAgICAgb3V0cHV0LCBpbiBhbnkgb3JkZXIuICBFYWNoIGxpbmUgY2FuIGNvbnRhaW4gZ2xv
YiB3aGlsZGNhcmRzLgotCi0gICAgICAgICIiIgotICAgICAgICBsaW5lczIgPSBzZWxmLl9nZXRs
aW5lcyhsaW5lczIpCi0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzMjoKLSAgICAgICAgICAgIGZv
ciB4IGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICAgICAgaWYgbGluZSA9PSB4IG9yIG1hdGNo
X2Z1bmMoeCwgbGluZSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZygibWF0Y2hlZDog
IiwgcmVwcihsaW5lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nKCJsaW5lICVyIG5vdCBmb3VuZCBpbiBvdXRw
dXQiICUgbGluZSkKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHNlbGYuX2xvZ190
ZXh0KQotCi0gICAgZGVmIGdldF9saW5lc19hZnRlcihzZWxmLCBmbmxpbmUpOgotICAgICAgICAi
IiJSZXR1cm4gYWxsIGxpbmVzIGZvbGxvd2luZyB0aGUgZ2l2ZW4gbGluZSBpbiB0aGUgdGV4dC4K
LQotICAgICAgICBUaGUgZ2l2ZW4gbGluZSBjYW4gY29udGFpbiBnbG9iIHdpbGRjYXJkcy4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShzZWxmLmxpbmVzKToK
LSAgICAgICAgICAgIGlmIGZubGluZSA9PSBsaW5lIG9yIGZubWF0Y2gobGluZSwgZm5saW5lKToK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5saW5lc1tpICsgMTpdCi0gICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoImxpbmUgJXIgbm90IGZvdW5kIGluIG91dHB1dCIgJSBmbmxpbmUpCi0KLSAg
ICBkZWYgX2xvZyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHNlbGYuX2xvZ19vdXRwdXQuYXBwZW5k
KCcgJy5qb2luKChzdHIoeCkgZm9yIHggaW4gYXJncykpKQotCi0gICAgQHByb3BlcnR5Ci0gICAg
ZGVmIF9sb2dfdGV4dChzZWxmKToKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLl9sb2df
b3V0cHV0KQotCi0gICAgZGVmIGZubWF0Y2hfbGluZXMoc2VsZiwgbGluZXMyKToKLSAgICAgICAg
IiIiU2VhcmNoIGNhcHR1cmVkIHRleHQgZm9yIG1hdGNoaW5nIGxpbmVzIHVzaW5nIGBgZm5tYXRj
aC5mbm1hdGNoYGAuCi0KLSAgICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgbGlzdCBvZiBsaW5lcyB3
aGljaCBoYXZlIHRvIG1hdGNoIGFuZCBjYW4KLSAgICAgICAgdXNlIGdsb2Igd2lsZGNhcmRzLiAg
SWYgdGhleSBkbyBub3QgbWF0Y2ggYSBweXRlc3QuZmFpbCgpIGlzCi0gICAgICAgIGNhbGxlZC4g
IFRoZSBtYXRjaGVzIGFuZCBub24tbWF0Y2hlcyBhcmUgYWxzbyBwcmludGVkIG9uCi0gICAgICAg
IHN0ZG91dC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWF0Y2hfbGluZXMobGluZXMy
LCBmbm1hdGNoLCAnZm5tYXRjaCcpCi0KLSAgICBkZWYgcmVfbWF0Y2hfbGluZXMoc2VsZiwgbGlu
ZXMyKToKLSAgICAgICAgIiIiU2VhcmNoIGNhcHR1cmVkIHRleHQgZm9yIG1hdGNoaW5nIGxpbmVz
IHVzaW5nIGBgcmUubWF0Y2hgYC4KLQotICAgICAgICBUaGUgYXJndW1lbnQgaXMgYSBsaXN0IG9m
IGxpbmVzIHdoaWNoIGhhdmUgdG8gbWF0Y2ggdXNpbmcgYGByZS5tYXRjaGBgLgotICAgICAgICBJ
ZiB0aGV5IGRvIG5vdCBtYXRjaCBhIHB5dGVzdC5mYWlsKCkgaXMgY2FsbGVkLgotCi0gICAgICAg
IFRoZSBtYXRjaGVzIGFuZCBub24tbWF0Y2hlcyBhcmUgYWxzbyBwcmludGVkIG9uCi0gICAgICAg
IHN0ZG91dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21hdGNoX2xpbmVzKGxpbmVzMiwg
bGFtYmRhIG5hbWUsIHBhdDogcmUubWF0Y2gocGF0LCBuYW1lKSwgJ3JlLm1hdGNoJykKLQotICAg
IGRlZiBfbWF0Y2hfbGluZXMoc2VsZiwgbGluZXMyLCBtYXRjaF9mdW5jLCBtYXRjaF9uaWNrbmFt
ZSk6Ci0gICAgICAgICIiIlVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2YgYGBmbm1hdGNoX2xp
bmVzYGAgYW5kIGBgcmVfbWF0Y2hfbGluZXNgYC4KLQotICAgICAgICA6cGFyYW0gbGlzdFtzdHJd
IGxpbmVzMjogbGlzdCBvZiBzdHJpbmcgcGF0dGVybnMgdG8gbWF0Y2guIFRoZSBhY3R1YWwgZm9y
bWF0IGRlcGVuZHMgb24KLSAgICAgICAgICAgIGBgbWF0Y2hfZnVuY2BgLgotICAgICAgICA6cGFy
YW0gbWF0Y2hfZnVuYzogYSBjYWxsYWJsZSBgYG1hdGNoX2Z1bmMobGluZSwgcGF0dGVybilgYCB3
aGVyZSBsaW5lIGlzIHRoZSBjYXB0dXJlZAotICAgICAgICAgICAgbGluZSBmcm9tIHN0ZG91dC9z
dGRlcnIgYW5kIHBhdHRlcm4gaXMgdGhlIG1hdGNoaW5nIHBhdHRlcm4uCi0KLSAgICAgICAgOnBh
cmFtIHN0ciBtYXRjaF9uaWNrbmFtZTogdGhlIG5pY2tuYW1lIGZvciB0aGUgbWF0Y2ggZnVuY3Rp
b24gdGhhdCB3aWxsIGJlIGxvZ2dlZAotICAgICAgICAgICAgdG8gc3Rkb3V0IHdoZW4gYSBtYXRj
aCBvY2N1cnMuCi0gICAgICAgICIiIgotICAgICAgICBsaW5lczIgPSBzZWxmLl9nZXRsaW5lcyhs
aW5lczIpCi0gICAgICAgIGxpbmVzMSA9IHNlbGYubGluZXNbOl0KLSAgICAgICAgbmV4dGxpbmUg
PSBOb25lCi0gICAgICAgIGV4dHJhbGluZXMgPSBbXQotICAgICAgICBfX3RyYWNlYmFja2hpZGVf
XyA9IFRydWUKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXMyOgotICAgICAgICAgICAgbm9tYXRj
aHByaW50ZWQgPSBGYWxzZQotICAgICAgICAgICAgd2hpbGUgbGluZXMxOgotICAgICAgICAgICAg
ICAgIG5leHRsaW5lID0gbGluZXMxLnBvcCgwKQotICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0g
bmV4dGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZygiZXhhY3QgbWF0Y2g6Iiwg
cmVwcihsaW5lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBl
bGlmIG1hdGNoX2Z1bmMobmV4dGxpbmUsIGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9sb2coIiVzOiIgJSBtYXRjaF9uaWNrbmFtZSwgcmVwcihsaW5lKSkKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fbG9nKCIgICB3aXRoOiIsIHJlcHIobmV4dGxpbmUpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIG5vdCBub21hdGNocHJpbnRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xv
Zygibm9tYXRjaDoiLCByZXByKGxpbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9tYXRj
aHByaW50ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZygiICAgIGFuZDoi
LCByZXByKG5leHRsaW5lKSkKLSAgICAgICAgICAgICAgICBleHRyYWxpbmVzLmFwcGVuZChuZXh0
bGluZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nKCJyZW1h
aW5zIHVubWF0Y2hlZDogJXIiICUgKGxpbmUsKSkKLSAgICAgICAgICAgICAgICBweXRlc3QuZmFp
bChzZWxmLl9sb2dfdGV4dCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcHl0aG9u
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRob24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY1MDE3MWE5ZTljOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19w
eXRlc3QvcHl0aG9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTE3NSArMCwwIEBACi0iIiIgUHl0
aG9uIHRlc3QgZGlzY292ZXJ5LCBzZXR1cCBhbmQgcnVuIG9mIHRlc3QgZnVuY3Rpb25zLiAiIiIK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRf
ZnVuY3Rpb24KLQotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgc3lzCi1p
bXBvcnQgb3MKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIHRleHR3
cmFwIGltcG9ydCBkZWRlbnQKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBjb3VudAotCi0KLWltcG9y
dCBweQotaW1wb3J0IHNpeAotZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1hcmtlckVycm9yCi1m
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBob29raW1wbAotCi1pbXBvcnQgX3B5dGVzdAotaW1w
b3J0IHBsdWdneQotZnJvbSBfcHl0ZXN0IGltcG9ydCBmaXh0dXJlcwotZnJvbSBfcHl0ZXN0IGlt
cG9ydCBtYWluCi1mcm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKLWZyb20gX3B5dGVzdC5j
b21wYXQgaW1wb3J0ICgKLSAgICBpc2NsYXNzLCBpc2Z1bmN0aW9uLCBpc19nZW5lcmF0b3IsIGFz
Y2lpX2VzY2FwZWQsCi0gICAgUkVHRVhfVFlQRSwgU1RSSU5HX1RZUEVTLCBOb25lVHlwZSwgTk9U
U0VULAotICAgIGdldF9yZWFsX2Z1bmMsIGdldGZzbGluZW5vLCBzYWZlX2dldGF0dHIsCi0gICAg
c2FmZV9zdHIsIGdldGxvY2F0aW9uLCBlbnVtLAotKQotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGlt
cG9ydCBmYWlsCi1mcm9tIF9weXRlc3QubWFyayBpbXBvcnQgdHJhbnNmZXJfbWFya2VycwotCi1j
dXRkaXIxID0gcHkucGF0aC5sb2NhbChwbHVnZ3kuX19maWxlX18ucnN0cmlwKCJvYyIpKQotY3V0
ZGlyMiA9IHB5LnBhdGgubG9jYWwoX3B5dGVzdC5fX2ZpbGVfXykuZGlycGF0aCgpCi1jdXRkaXIz
ID0gcHkucGF0aC5sb2NhbChweS5fX2ZpbGVfXykuZGlycGF0aCgpCi0KLQotZGVmIGZpbHRlcl90
cmFjZWJhY2soZW50cnkpOgotICAgICIiIlJldHVybiBUcnVlIGlmIGEgVHJhY2ViYWNrRW50cnkg
aW5zdGFuY2Ugc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0cmFjZWJhY2tzOgotICAgICogZHluYW1p
Y2FsbHkgZ2VuZXJhdGVkIGNvZGUgKG5vIGNvZGUgdG8gc2hvdyB1cCBmb3IgaXQpOwotICAgICog
aW50ZXJuYWwgdHJhY2ViYWNrIGZyb20gcHl0ZXN0IG9yIGl0cyBpbnRlcm5hbCBsaWJyYXJpZXMs
IHB5IGFuZCBwbHVnZ3kuCi0gICAgIiIiCi0gICAgIyBlbnRyeS5wYXRoIG1pZ2h0IHNvbWV0aW1l
cyByZXR1cm4gYSBzdHIgb2JqZWN0IHdoZW4gdGhlIGVudHJ5Ci0gICAgIyBwb2ludHMgdG8gZHlu
YW1pY2FsbHkgZ2VuZXJhdGVkIGNvZGUKLSAgICAjIHNlZSBodHRwczovL2JpdGJ1Y2tldC5vcmcv
cHl0ZXN0LWRldi9weS9pc3N1ZXMvNzEKLSAgICByYXdfZmlsZW5hbWUgPSBlbnRyeS5mcmFtZS5j
b2RlLnJhdy5jb19maWxlbmFtZQotICAgIGlzX2dlbmVyYXRlZCA9ICc8JyBpbiByYXdfZmlsZW5h
bWUgYW5kICc+JyBpbiByYXdfZmlsZW5hbWUKLSAgICBpZiBpc19nZW5lcmF0ZWQ6Ci0gICAgICAg
IHJldHVybiBGYWxzZQotICAgICMgZW50cnkucGF0aCBtaWdodCBwb2ludCB0byBhbiBpbmV4aXN0
aW5nIGZpbGUsIGluIHdoaWNoIGNhc2UgaXQgd2lsbAotICAgICMgYWxzc28gcmV0dXJuIGEgc3Ry
IG9iamVjdC4gc2VlICMxMTMzCi0gICAgcCA9IHB5LnBhdGgubG9jYWwoZW50cnkucGF0aCkKLSAg
ICByZXR1cm4gcCAhPSBjdXRkaXIxIGFuZCBub3QgcC5yZWx0byhjdXRkaXIyKSBhbmQgbm90IHAu
cmVsdG8oY3V0ZGlyMykKLQotCi1kZWYgcHlvYmpfcHJvcGVydHkobmFtZSk6Ci0gICAgZGVmIGdl
dChzZWxmKToKLSAgICAgICAgbm9kZSA9IHNlbGYuZ2V0cGFyZW50KGdldGF0dHIoX19pbXBvcnRf
XygncHl0ZXN0JyksIG5hbWUpKQotICAgICAgICBpZiBub2RlIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgcmV0dXJuIG5vZGUub2JqCi0gICAgZG9jID0gInB5dGhvbiAlcyBvYmplY3QgdGhpcyBu
b2RlIHdhcyBjb2xsZWN0ZWQgZnJvbSAoY2FuIGJlIE5vbmUpLiIgJSAoCi0gICAgICAgICAgbmFt
ZS5sb3dlcigpLCkKLSAgICByZXR1cm4gcHJvcGVydHkoZ2V0LCBOb25lLCBOb25lLCBkb2MpCi0K
LQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRn
cm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLWZpeHR1cmVzJywgJy0tZnVu
Y2FyZ3MnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJz
aG93Zml4dHVyZXMiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJz
aG93IGF2YWlsYWJsZSBmaXh0dXJlcywgc29ydGVkIGJ5IHBsdWdpbiBhcHBlYXJhbmNlIikKLSAg
ICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICctLWZpeHR1cmVzLXBlci10ZXN0JywKLSAgICAg
ICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgZGVzdD0ic2hvd19maXh0dXJlc19wZXJf
dGVzdCIsCi0gICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgIGhlbHA9InNob3cgZml4dHVy
ZXMgcGVyIHRlc3QiLAotICAgICkKLSAgICBwYXJzZXIuYWRkaW5pKCJ1c2VmaXh0dXJlcyIsIHR5
cGU9ImFyZ3MiLCBkZWZhdWx0PVtdLAotICAgICAgICAgICAgICAgICAgaGVscD0ibGlzdCBvZiBk
ZWZhdWx0IGZpeHR1cmVzIHRvIGJlIHVzZWQgd2l0aCB0aGlzIHByb2plY3QiKQotICAgIHBhcnNl
ci5hZGRpbmkoInB5dGhvbl9maWxlcyIsIHR5cGU9ImFyZ3MiLAotICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1bJ3Rlc3RfKi5weScsICcqX3Rlc3QucHknXSwKLSAgICAgICAgICAgICAgICAgIGhl
bHA9Imdsb2Itc3R5bGUgZmlsZSBwYXR0ZXJucyBmb3IgUHl0aG9uIHRlc3QgbW9kdWxlIGRpc2Nv
dmVyeSIpCi0gICAgcGFyc2VyLmFkZGluaSgicHl0aG9uX2NsYXNzZXMiLCB0eXBlPSJhcmdzIiwg
ZGVmYXVsdD1bIlRlc3QiLCBdLAotICAgICAgICAgICAgICAgICAgaGVscD0icHJlZml4ZXMgb3Ig
Z2xvYiBuYW1lcyBmb3IgUHl0aG9uIHRlc3QgY2xhc3MgZGlzY292ZXJ5IikKLSAgICBwYXJzZXIu
YWRkaW5pKCJweXRob25fZnVuY3Rpb25zIiwgdHlwZT0iYXJncyIsIGRlZmF1bHQ9WyJ0ZXN0Iiwg
XSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9InByZWZpeGVzIG9yIGdsb2IgbmFtZXMgZm9yIFB5
dGhvbiB0ZXN0IGZ1bmN0aW9uIGFuZCAiCi0gICAgICAgICAgICAgICAgICAibWV0aG9kIGRpc2Nv
dmVyeSIpCi0KLSAgICBncm91cC5hZGRvcHRpb24oIi0taW1wb3J0LW1vZGUiLCBkZWZhdWx0PSJw
cmVwZW5kIiwKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bInByZXBlbmQiLCAiYXBwZW5k
Il0sIGRlc3Q9ImltcG9ydG1vZGUiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJwcmVwZW5k
L2FwcGVuZCB0byBzeXMucGF0aCB3aGVuIGltcG9ydGluZyB0ZXN0IG1vZHVsZXMsICIKLSAgICAg
ICAgICAgICAgICAgICAgImRlZmF1bHQgaXMgdG8gcHJlcGVuZC4iKQotCi0KLWRlZiBweXRlc3Rf
Y21kbGluZV9tYWluKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi5zaG93Zml4dHVyZXM6
Ci0gICAgICAgIHNob3dmaXh0dXJlcyhjb25maWcpCi0gICAgICAgIHJldHVybiAwCi0gICAgaWYg
Y29uZmlnLm9wdGlvbi5zaG93X2ZpeHR1cmVzX3Blcl90ZXN0OgotICAgICAgICBzaG93X2ZpeHR1
cmVzX3Blcl90ZXN0KGNvbmZpZykKLSAgICAgICAgcmV0dXJuIDAKLQotCi1kZWYgcHl0ZXN0X2dl
bmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAjIHRob3NlIGFsdGVybmF0aXZlIHNwZWxsaW5n
cyBhcmUgY29tbW9uIC0gcmFpc2UgYSBzcGVjaWZpYyBlcnJvciB0byBhbGVydAotICAgICMgdGhl
IHVzZXIKLSAgICBhbHRfc3BlbGxpbmdzID0gWydwYXJhbWV0ZXJpemUnLCAncGFyYW1ldHJpc2Un
LCAncGFyYW1ldGVyaXNlJ10KLSAgICBmb3IgYXR0ciBpbiBhbHRfc3BlbGxpbmdzOgotICAgICAg
ICBpZiBoYXNhdHRyKG1ldGFmdW5jLmZ1bmN0aW9uLCBhdHRyKToKLSAgICAgICAgICAgIG1zZyA9
ICJ7MH0gaGFzICd7MX0nLCBzcGVsbGluZyBzaG91bGQgYmUgJ3BhcmFtZXRyaXplJyIKLSAgICAg
ICAgICAgIHJhaXNlIE1hcmtlckVycm9yKG1zZy5mb3JtYXQobWV0YWZ1bmMuZnVuY3Rpb24uX19u
YW1lX18sIGF0dHIpKQotICAgIHRyeToKLSAgICAgICAgbWFya2VycyA9IG1ldGFmdW5jLmZ1bmN0
aW9uLnBhcmFtZXRyaXplCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICByZXR1
cm4KLSAgICBmb3IgbWFya2VyIGluIG1hcmtlcnM6Ci0gICAgICAgIG1ldGFmdW5jLnBhcmFtZXRy
aXplKCptYXJrZXIuYXJncywgKiptYXJrZXIua3dhcmdzKQotCi0KLWRlZiBweXRlc3RfY29uZmln
dXJlKGNvbmZpZyk6Ci0gICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoIm1hcmtlcnMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0cml6ZShhcmduYW1lcywgYXJndmFsdWVz
KTogY2FsbCBhIHRlc3QgZnVuY3Rpb24gbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0aW1lcyBwYXNzaW5nIGluIGRpZmZlcmVudCBhcmd1bWVudHMgaW4gdHVybi4gYXJn
dmFsdWVzIGdlbmVyYWxseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIHRv
IGJlIGEgbGlzdCBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG9ubHkgb25lIG5hbWUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIGxpc3Qgb2YgdHVwbGVzIG9mIHZh
bHVlcyBpZiBhcmduYW1lcyBzcGVjaWZpZXMgbXVsdGlwbGUgbmFtZXMuICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhhbXBsZTogQHBhcmFtZXRyaXplKCdhcmcxJywgWzEsMl0pIHdv
dWxkIGxlYWQgdG8gdHdvIGNhbGxzIG9mIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9uLCBvbmUgd2l0aCBhcmcxPTEgYW5kIGFub3RoZXIg
d2l0aCBhcmcxPTIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWUgaHR0cDovL3B5
dGVzdC5vcmcvbGF0ZXN0L3BhcmFtZXRyaXplLmh0bWwgZm9yIG1vcmUgaW5mbyBhbmQgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleGFtcGxlcy4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKQotICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKCJtYXJrZXJzIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidXNlZml4dHVyZXMoZml4dHVyZW5hbWUxLCBmaXh0dXJl
bmFtZTIsIC4uLik6IG1hcmsgdGVzdHMgYXMgbmVlZGluZyAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImFsbCBvZiB0aGUgc3BlY2lmaWVkIGZpeHR1cmVzLiBzZWUgaHR0cDovL3B5dGVz
dC5vcmcvbGF0ZXN0L2ZpeHR1cmUuaHRtbCN1c2VmaXh0dXJlcyAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKQotCi0KLUBob29raW1wbCh0cnlsYXN0PVRydWUpCi1kZWYgcHl0ZXN0X3B5
ZnVuY19jYWxsKHB5ZnVuY2l0ZW0pOgotICAgIHRlc3RmdW5jdGlvbiA9IHB5ZnVuY2l0ZW0ub2Jq
Ci0gICAgaWYgcHlmdW5jaXRlbS5faXN5aWVsZGVkZnVuY3Rpb24oKToKLSAgICAgICAgdGVzdGZ1
bmN0aW9uKCpweWZ1bmNpdGVtLl9hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIGZ1bmNhcmdzID0g
cHlmdW5jaXRlbS5mdW5jYXJncwotICAgICAgICB0ZXN0YXJncyA9IHt9Ci0gICAgICAgIGZvciBh
cmcgaW4gcHlmdW5jaXRlbS5fZml4dHVyZWluZm8uYXJnbmFtZXM6Ci0gICAgICAgICAgICB0ZXN0
YXJnc1thcmddID0gZnVuY2FyZ3NbYXJnXQotICAgICAgICB0ZXN0ZnVuY3Rpb24oKip0ZXN0YXJn
cykKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBh
cmVudCk6Ci0gICAgZXh0ID0gcGF0aC5leHQKLSAgICBpZiBleHQgPT0gIi5weSI6Ci0gICAgICAg
IGlmIG5vdCBwYXJlbnQuc2Vzc2lvbi5pc2luaXRwYXRoKHBhdGgpOgotICAgICAgICAgICAgZm9y
IHBhdCBpbiBwYXJlbnQuY29uZmlnLmdldGluaSgncHl0aG9uX2ZpbGVzJyk6Ci0gICAgICAgICAg
ICAgICAgaWYgcGF0aC5mbm1hdGNoKHBhdCk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpaG9vayA9
IHBhcmVudC5zZXNzaW9uLmdldGhvb2twcm94eShwYXRoKQotICAgICAgICByZXR1cm4gaWhvb2su
cHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKLQot
Ci1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgcmV0
dXJuIE1vZHVsZShwYXRoLCBwYXJlbnQpCi0KLQotQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUp
Ci1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3IsIG5hbWUsIG9iaik6Ci0g
ICAgb3V0Y29tZSA9IHlpZWxkCi0gICAgcmVzID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICBp
ZiByZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJldHVybgotICAgICMgbm90aGluZyB3YXMgY29s
bGVjdGVkIGVsc2V3aGVyZSwgbGV0J3MgZG8gaXQgaGVyZQotICAgIGlmIGlzY2xhc3Mob2JqKToK
LSAgICAgICAgaWYgY29sbGVjdG9yLmlzdGVzdGNsYXNzKG9iaiwgbmFtZSk6Ci0gICAgICAgICAg
ICBDbGFzcyA9IGNvbGxlY3Rvci5fZ2V0Y3VzdG9tY2xhc3MoIkNsYXNzIikKLSAgICAgICAgICAg
IG91dGNvbWUuZm9yY2VfcmVzdWx0KENsYXNzKG5hbWUsIHBhcmVudD1jb2xsZWN0b3IpKQotICAg
IGVsaWYgY29sbGVjdG9yLmlzdGVzdGZ1bmN0aW9uKG9iaiwgbmFtZSk6Ci0gICAgICAgICMgbW9j
ayBzZWVtcyB0byBzdG9yZSB1bmJvdW5kIG1ldGhvZHMgKGlzc3VlNDczKSwgbm9ybWFsaXplIGl0
Ci0gICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAiX19mdW5jX18iLCBvYmopCi0gICAgICAgICMg
V2UgbmVlZCB0byB0cnkgYW5kIHVud3JhcCB0aGUgZnVuY3Rpb24gaWYgaXQncyBhIGZ1bmN0b29s
cy5wYXJ0aWFsCi0gICAgICAgICMgb3IgYSBmdW50b29scy53cmFwcGVkLgotICAgICAgICAjIFdl
IG11c24ndCBpZiBpdCdzIGJlZW4gd3JhcHBlZCB3aXRoIG1vY2sucGF0Y2ggKHB5dGhvbiAyIG9u
bHkpCi0gICAgICAgIGlmIG5vdCAoaXNmdW5jdGlvbihvYmopIG9yIGlzZnVuY3Rpb24oZ2V0X3Jl
YWxfZnVuYyhvYmopKSk6Ci0gICAgICAgICAgICBjb2xsZWN0b3Iud2Fybihjb2RlPSJDMiIsIG1l
c3NhZ2U9ImNhbm5vdCBjb2xsZWN0ICVyIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBuYW1lLCApCi0gICAgICAgIGVsaWYgZ2V0YXR0
cihvYmosICJfX3Rlc3RfXyIsIFRydWUpOgotICAgICAgICAgICAgaWYgaXNfZ2VuZXJhdG9yKG9i
aik6Ci0gICAgICAgICAgICAgICAgcmVzID0gR2VuZXJhdG9yKG5hbWUsIHBhcmVudD1jb2xsZWN0
b3IpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlcyA9IGxpc3QoY29sbGVj
dG9yLl9nZW5mdW5jdGlvbnMobmFtZSwgb2JqKSkKLSAgICAgICAgICAgIG91dGNvbWUuZm9yY2Vf
cmVzdWx0KHJlcykKLQotCi1kZWYgcHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQoY29uZmlnLCB2
YWwsIGFyZ25hbWU9Tm9uZSk6Ci0gICAgcmV0dXJuIE5vbmUKLQotCi1jbGFzcyBQeW9iakNvbnRl
eHQob2JqZWN0KToKLSAgICBtb2R1bGUgPSBweW9ial9wcm9wZXJ0eSgiTW9kdWxlIikKLSAgICBj
bHMgPSBweW9ial9wcm9wZXJ0eSgiQ2xhc3MiKQotICAgIGluc3RhbmNlID0gcHlvYmpfcHJvcGVy
dHkoIkluc3RhbmNlIikKLQotCi1jbGFzcyBQeW9iak1peGluKFB5b2JqQ29udGV4dCk6Ci0gICAg
ZGVmIG9iaigpOgotICAgICAgICBkZWYgZmdldChzZWxmKToKLSAgICAgICAgICAgIG9iaiA9IGdl
dGF0dHIoc2VsZiwgJ19vYmonLCBOb25lKQotICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fb2JqID0gb2JqID0gc2VsZi5fZ2V0b2JqKCkKLSAgICAgICAg
ICAgIHJldHVybiBvYmoKLQotICAgICAgICBkZWYgZnNldChzZWxmLCB2YWx1ZSk6Ci0gICAgICAg
ICAgICBzZWxmLl9vYmogPSB2YWx1ZQotCi0gICAgICAgIHJldHVybiBwcm9wZXJ0eShmZ2V0LCBm
c2V0LCBOb25lLCAidW5kZXJseWluZyBweXRob24gb2JqZWN0IikKLQotICAgIG9iaiA9IG9iaigp
Ci0KLSAgICBkZWYgX2dldG9iaihzZWxmKToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5w
YXJlbnQub2JqLCBzZWxmLm5hbWUpCi0KLSAgICBkZWYgZ2V0bW9kcGF0aChzZWxmLCBzdG9wYXRt
b2R1bGU9VHJ1ZSwgaW5jbHVkZW1vZHVsZT1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gcHl0
aG9uIHBhdGggcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgbW9kdWxlLiAiIiIKLSAgICAgICAg
Y2hhaW4gPSBzZWxmLmxpc3RjaGFpbigpCi0gICAgICAgIGNoYWluLnJldmVyc2UoKQotICAgICAg
ICBwYXJ0cyA9IFtdCi0gICAgICAgIGZvciBub2RlIGluIGNoYWluOgotICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShub2RlLCBJbnN0YW5jZSk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIG5hbWUgPSBub2RlLm5hbWUKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9k
ZSwgTW9kdWxlKToKLSAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5zcGxpdGV4dChuYW1l
KVswXQotICAgICAgICAgICAgICAgIGlmIHN0b3BhdG1vZHVsZToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgaW5jbHVkZW1vZHVsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVu
ZChuYW1lKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcGFydHMuYXBw
ZW5kKG5hbWUpCi0gICAgICAgIHBhcnRzLnJldmVyc2UoKQotICAgICAgICBzID0gIi4iLmpvaW4o
cGFydHMpCi0gICAgICAgIHJldHVybiBzLnJlcGxhY2UoIi5bIiwgIlsiKQotCi0gICAgZGVmIF9n
ZXRmc2xpbmVubyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGdldGZzbGluZW5vKHNlbGYub2JqKQot
Ci0gICAgZGVmIHJlcG9ydGluZm8oc2VsZik6Ci0gICAgICAgICMgWFhYIGNhY2hpbmc/Ci0gICAg
ICAgIG9iaiA9IHNlbGYub2JqCi0gICAgICAgIGNvbXBhdF9jb19maXJzdGxpbmVubyA9IGdldGF0
dHIob2JqLCAnY29tcGF0X2NvX2ZpcnN0bGluZW5vJywgTm9uZSkKLSAgICAgICAgaWYgaXNpbnN0
YW5jZShjb21wYXRfY29fZmlyc3RsaW5lbm8sIGludCk6Ci0gICAgICAgICAgICAjIG5vc2UgY29t
cGF0aWJpbGl0eQotICAgICAgICAgICAgZnNwYXRoID0gc3lzLm1vZHVsZXNbb2JqLl9fbW9kdWxl
X19dLl9fZmlsZV9fCi0gICAgICAgICAgICBpZiBmc3BhdGguZW5kc3dpdGgoIi5weWMiKToKLSAg
ICAgICAgICAgICAgICBmc3BhdGggPSBmc3BhdGhbOi0xXQotICAgICAgICAgICAgbGluZW5vID0g
Y29tcGF0X2NvX2ZpcnN0bGluZW5vCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmc3BhdGgs
IGxpbmVubyA9IGdldGZzbGluZW5vKG9iaikKLSAgICAgICAgbW9kcGF0aCA9IHNlbGYuZ2V0bW9k
cGF0aCgpCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmVubywgaW50KQotICAgICAgICBy
ZXR1cm4gZnNwYXRoLCBsaW5lbm8sIG1vZHBhdGgKLQotCi1jbGFzcyBQeUNvbGxlY3RvcihQeW9i
ak1peGluLCBtYWluLkNvbGxlY3Rvcik6Ci0KLSAgICBkZWYgZnVuY25hbWVmaWx0ZXIoc2VsZiwg
bmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYXRjaGVzX3ByZWZpeF9vcl9nbG9iX29wdGlv
bigncHl0aG9uX2Z1bmN0aW9ucycsIG5hbWUpCi0KLSAgICBkZWYgaXNub3NldGVzdChzZWxmLCBv
YmopOgotICAgICAgICAiIiIgTG9vayBmb3IgdGhlIF9fdGVzdF9fIGF0dHJpYnV0ZSwgd2hpY2gg
aXMgYXBwbGllZCBieSB0aGUKLSAgICAgICAgQG5vc2UudG9vbHMuaXN0ZXN0IGRlY29yYXRvcgot
ICAgICAgICAiIiIKLSAgICAgICAgIyBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciAiaXMgVHJ1ZSIg
aGVyZSB0byBub3QgbWlzdGFrZW5seSB0cmVhdAotICAgICAgICAjIGNsYXNzZXMgd2l0aCBhIGN1
c3RvbSBfX2dldGF0dHJfXyByZXR1cm5pbmcgc29tZXRoaW5nIHRydXRoeSAobGlrZSBhCi0gICAg
ICAgICMgZnVuY3Rpb24pIGFzIHRlc3QgY2xhc3Nlcy4KLSAgICAgICAgcmV0dXJuIHNhZmVfZ2V0
YXR0cihvYmosICdfX3Rlc3RfXycsIEZhbHNlKSBpcyBUcnVlCi0KLSAgICBkZWYgY2xhc3NuYW1l
ZmlsdGVyKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fbWF0Y2hlc19wcmVmaXhf
b3JfZ2xvYl9vcHRpb24oJ3B5dGhvbl9jbGFzc2VzJywgbmFtZSkKLQotICAgIGRlZiBpc3Rlc3Rm
dW5jdGlvbihzZWxmLCBvYmosIG5hbWUpOgotICAgICAgICBpZiBzZWxmLmZ1bmNuYW1lZmlsdGVy
KG5hbWUpIG9yIHNlbGYuaXNub3NldGVzdChvYmopOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShvYmosIHN0YXRpY21ldGhvZCk6Ci0gICAgICAgICAgICAgICAgIyBzdGF0aWMgbWV0aG9kcyBu
ZWVkIHRvIGJlIHVud3JhcHBlZAotICAgICAgICAgICAgICAgIG9iaiA9IHNhZmVfZ2V0YXR0cihv
YmosICdfX2Z1bmNfXycsIEZhbHNlKQotICAgICAgICAgICAgICAgIGlmIG9iaiBpcyBGYWxzZToK
LSAgICAgICAgICAgICAgICAgICAgIyBQeXRob24gMi42IHdyYXBzIGluIGEgZGlmZmVyZW50IHdh
eSB0aGF0IHdlIHdvbid0IHRyeSB0byBoYW5kbGUKLSAgICAgICAgICAgICAgICAgICAgbXNnID0g
ImNhbm5vdCBjb2xsZWN0IHN0YXRpYyBtZXRob2QgJXIgYmVjYXVzZSAiIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIml0IGlzIG5vdCBhIGZ1bmN0aW9uIChhbHdheXMgdGhlIGNhc2UgaW4g
UHl0aG9uIDIuNikiCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud2FybigKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvZGU9IkMyIiwgbWVzc2FnZT1tc2cgJSBuYW1lKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICAg
ICAgc2FmZV9nZXRhdHRyKG9iaiwgIl9fY2FsbF9fIiwgRmFsc2UpIGFuZCBmaXh0dXJlcy5nZXRm
aXh0dXJlbWFya2VyKG9iaikgaXMgTm9uZQotICAgICAgICAgICAgKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgaXN0ZXN0Y2xhc3Moc2VsZiwgb2Jq
LCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY2xhc3NuYW1lZmlsdGVyKG5hbWUpIG9yIHNl
bGYuaXNub3NldGVzdChvYmopCi0KLSAgICBkZWYgX21hdGNoZXNfcHJlZml4X29yX2dsb2Jfb3B0
aW9uKHNlbGYsIG9wdGlvbl9uYW1lLCBuYW1lKToKLSAgICAgICAgIiIiCi0gICAgICAgIGNoZWNr
cyBpZiB0aGUgZ2l2ZW4gbmFtZSBtYXRjaGVzIHRoZSBwcmVmaXggb3IgZ2xvYi1wYXR0ZXJuIGRl
ZmluZWQKLSAgICAgICAgaW4gaW5pIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICIiIgotICAgICAg
ICBmb3Igb3B0aW9uIGluIHNlbGYuY29uZmlnLmdldGluaShvcHRpb25fbmFtZSk6Ci0gICAgICAg
ICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgob3B0aW9uKToKLSAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgICAgICAgICAgIyBjaGVjayB0aGF0IG5hbWUgbG9va3MgbGlrZSBhIGdsb2Itc3Ry
aW5nIGJlZm9yZSBjYWxsaW5nIGZubWF0Y2gKLSAgICAgICAgICAgICMgYmVjYXVzZSB0aGlzIGlz
IGNhbGxlZCBmb3IgZXZlcnkgbmFtZSBpbiBlYWNoIGNvbGxlY3RlZCBtb2R1bGUsCi0gICAgICAg
ICAgICAjIGFuZCBmbm1hdGNoIGlzIHNvbWV3aGF0IGV4cGVuc2l2ZSB0byBjYWxsCi0gICAgICAg
ICAgICBlbGlmICgnKicgaW4gb3B0aW9uIG9yICc/JyBpbiBvcHRpb24gb3IgJ1snIGluIG9wdGlv
bikgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgZm5tYXRjaC5mbm1hdGNoKG5hbWUsIG9wdGlv
bik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0K
LSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgaWYgbm90IGdldGF0dHIoc2VsZi5vYmos
ICJfX3Rlc3RfXyIsIFRydWUpOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0KLSAgICAgICAgIyBO
Qi4gd2UgYXZvaWQgcmFuZG9tIGdldGF0dHJzIGFuZCBwZWVrIGluIHRoZSBfX2RpY3RfXyBpbnN0
ZWFkCi0gICAgICAgICMgKFhYWCBvcmlnaW5hbGx5IGludHJvZHVjZWQgZnJvbSBhIFB5UHkgbmVl
ZCwgc3RpbGwgdHJ1ZT8pCi0gICAgICAgIGRpY3RzID0gW2dldGF0dHIoc2VsZi5vYmosICdfX2Rp
Y3RfXycsIHt9KV0KLSAgICAgICAgZm9yIGJhc2VjbHMgaW4gaW5zcGVjdC5nZXRtcm8oc2VsZi5v
YmouX19jbGFzc19fKToKLSAgICAgICAgICAgIGRpY3RzLmFwcGVuZChiYXNlY2xzLl9fZGljdF9f
KQotICAgICAgICBzZWVuID0ge30KLSAgICAgICAgdmFsdWVzID0gW10KLSAgICAgICAgZm9yIGRp
YyBpbiBkaWN0czoKLSAgICAgICAgICAgIGZvciBuYW1lLCBvYmogaW4gbGlzdChkaWMuaXRlbXMo
KSk6Ci0gICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgICAgIHNlZW5bbmFtZV0gPSBUcnVlCi0gICAgICAgICAg
ICAgICAgcmVzID0gc2VsZi5fbWFrZWl0ZW0obmFtZSwgb2JqKQotICAgICAgICAgICAgICAgIGlm
IHJlcyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKHJlcywgbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgIHJl
cyA9IFtyZXNdCi0gICAgICAgICAgICAgICAgdmFsdWVzLmV4dGVuZChyZXMpCi0gICAgICAgIHZh
bHVlcy5zb3J0KGtleT1sYW1iZGEgaXRlbTogaXRlbS5yZXBvcnRpbmZvKClbOjJdKQotICAgICAg
ICByZXR1cm4gdmFsdWVzCi0KLSAgICBkZWYgbWFrZWl0ZW0oc2VsZiwgbmFtZSwgb2JqKToKLSAg
ICAgICAgd2FybmluZ3Mud2FybihkZXByZWNhdGVkLkNPTExFQ1RPUl9NQUtFSVRFTSwgc3RhY2ts
ZXZlbD0yKQotICAgICAgICBzZWxmLl9tYWtlaXRlbShuYW1lLCBvYmopCi0KLSAgICBkZWYgX21h
a2VpdGVtKHNlbGYsIG5hbWUsIG9iaik6Ci0gICAgICAgICMgYXNzZXJ0IHNlbGYuaWhvb2suZnNw
YXRoID09IHNlbGYuZnNwYXRoLCBzZWxmCi0gICAgICAgIHJldHVybiBzZWxmLmlob29rLnB5dGVz
dF9weWNvbGxlY3RfbWFrZWl0ZW0oCi0gICAgICAgICAgICBjb2xsZWN0b3I9c2VsZiwgbmFtZT1u
YW1lLCBvYmo9b2JqKQotCi0gICAgZGVmIF9nZW5mdW5jdGlvbnMoc2VsZiwgbmFtZSwgZnVuY29i
aik6Ci0gICAgICAgIG1vZHVsZSA9IHNlbGYuZ2V0cGFyZW50KE1vZHVsZSkub2JqCi0gICAgICAg
IGNsc2NvbCA9IHNlbGYuZ2V0cGFyZW50KENsYXNzKQotICAgICAgICBjbHMgPSBjbHNjb2wgYW5k
IGNsc2NvbC5vYmogb3IgTm9uZQotICAgICAgICB0cmFuc2Zlcl9tYXJrZXJzKGZ1bmNvYmosIGNs
cywgbW9kdWxlKQotICAgICAgICBmbSA9IHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAg
ICAgICAgZml4dHVyZWluZm8gPSBmbS5nZXRmaXh0dXJlaW5mbyhzZWxmLCBmdW5jb2JqLCBjbHMp
Ci0gICAgICAgIG1ldGFmdW5jID0gTWV0YWZ1bmMoZnVuY29iaiwgZml4dHVyZWluZm8sIHNlbGYu
Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1jbHMsIG1vZHVsZT1tb2R1
bGUpCi0gICAgICAgIG1ldGhvZHMgPSBbXQotICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgInB5
dGVzdF9nZW5lcmF0ZV90ZXN0cyIpOgotICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQobW9kdWxl
LnB5dGVzdF9nZW5lcmF0ZV90ZXN0cykKLSAgICAgICAgaWYgaGFzYXR0cihjbHMsICJweXRlc3Rf
Z2VuZXJhdGVfdGVzdHMiKToKLSAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKGNscygpLnB5dGVz
dF9nZW5lcmF0ZV90ZXN0cykKLSAgICAgICAgaWYgbWV0aG9kczoKLSAgICAgICAgICAgIHNlbGYu
aWhvb2sucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzLmNhbGxfZXh0cmEobWV0aG9kcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRh
ZnVuYz1tZXRhZnVuYykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmlob29rLnB5
dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYz1tZXRhZnVuYykKLQotICAgICAgICBGdW5jdGlv
biA9IHNlbGYuX2dldGN1c3RvbWNsYXNzKCJGdW5jdGlvbiIpCi0gICAgICAgIGlmIG5vdCBtZXRh
ZnVuYy5fY2FsbHM6Ci0gICAgICAgICAgICB5aWVsZCBGdW5jdGlvbihuYW1lLCBwYXJlbnQ9c2Vs
ZiwgZml4dHVyZWluZm89Zml4dHVyZWluZm8pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAj
IGFkZCBmdW5jYXJncygpIGFzIGZpeHR1cmVkZWZzIHRvIGZpeHR1cmVpbmZvLmFyZzJmaXh0dXJl
ZGVmcwotICAgICAgICAgICAgZml4dHVyZXMuYWRkX2Z1bmNhcmdfcHNldWRvX2ZpeHR1cmVfZGVm
KHNlbGYsIG1ldGFmdW5jLCBmbSkKLQotICAgICAgICAgICAgZm9yIGNhbGxzcGVjIGluIG1ldGFm
dW5jLl9jYWxsczoKLSAgICAgICAgICAgICAgICBzdWJuYW1lID0gIiVzWyVzXSIgJSAobmFtZSwg
Y2FsbHNwZWMuaWQpCi0gICAgICAgICAgICAgICAgeWllbGQgRnVuY3Rpb24obmFtZT1zdWJuYW1l
LCBwYXJlbnQ9c2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsc3BlYz1j
YWxsc3BlYywgY2FsbG9iaj1mdW5jb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpeHR1cmVpbmZvPWZpeHR1cmVpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtleXdvcmRzPXtjYWxsc3BlYy5pZDogVHJ1ZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxuYW1lPW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KQotCi0KLWNsYXNzIE1vZHVsZShtYWluLkZpbGUsIFB5Q29sbGVjdG9yKToKLSAgICAiIiIgQ29s
bGVjdG9yIGZvciB0ZXN0IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4gIiIiCi0KLSAgICBkZWYgX2dl
dG9iaihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ltcG9ydHRlc3Rtb2R1bGUoKQotCi0g
ICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFn
ZXIucGFyc2VmYWN0b3JpZXMoc2VsZikKLSAgICAgICAgcmV0dXJuIHN1cGVyKE1vZHVsZSwgc2Vs
ZikuY29sbGVjdCgpCi0KLSAgICBkZWYgX2ltcG9ydHRlc3Rtb2R1bGUoc2VsZik6Ci0gICAgICAg
ICMgd2UgYXNzdW1lIHdlIGFyZSBvbmx5IGNhbGxlZCBvbmNlIHBlciBtb2R1bGUKLSAgICAgICAg
aW1wb3J0bW9kZSA9IHNlbGYuY29uZmlnLmdldG9wdGlvbigiLS1pbXBvcnQtbW9kZSIpCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIG1vZCA9IHNlbGYuZnNwYXRoLnB5aW1wb3J0KGVuc3VyZXN5
c3BhdGg9aW1wb3J0bW9kZSkKLSAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5Db2xsZWN0RXJyb3IoCi0gICAgICAgICAgICAgICAgX3B5dGVzdC5fY29k
ZS5FeGNlcHRpb25JbmZvKCkuZ2V0cmVwcihzdHlsZT0ic2hvcnQiKSkKLSAgICAgICAgZXhjZXB0
IHNlbGYuZnNwYXRoLkltcG9ydE1pc21hdGNoRXJyb3I6Ci0gICAgICAgICAgICBlID0gc3lzLmV4
Y19pbmZvKClbMV0KLSAgICAgICAgICAgIHJhaXNlIHNlbGYuQ29sbGVjdEVycm9yKAotICAgICAg
ICAgICAgICAgICJpbXBvcnQgZmlsZSBtaXNtYXRjaDpcbiIKLSAgICAgICAgICAgICAgICAiaW1w
b3J0ZWQgbW9kdWxlICVyIGhhcyB0aGlzIF9fZmlsZV9fIGF0dHJpYnV0ZTpcbiIKLSAgICAgICAg
ICAgICAgICAiICAlc1xuIgotICAgICAgICAgICAgICAgICJ3aGljaCBpcyBub3QgdGhlIHNhbWUg
YXMgdGhlIHRlc3QgZmlsZSB3ZSB3YW50IHRvIGNvbGxlY3Q6XG4iCi0gICAgICAgICAgICAgICAg
IiAgJXNcbiIKLSAgICAgICAgICAgICAgICAiSElOVDogcmVtb3ZlIF9fcHljYWNoZV9fIC8gLnB5
YyBmaWxlcyBhbmQvb3IgdXNlIGEgIgotICAgICAgICAgICAgICAgICJ1bmlxdWUgYmFzZW5hbWUg
Zm9yIHlvdXIgdGVzdCBmaWxlIG1vZHVsZXMiCi0gICAgICAgICAgICAgICAgJSBlLmFyZ3MKLSAg
ICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgZnJv
bSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8KLSAgICAgICAgICAgIGV4
Y19pbmZvID0gRXhjZXB0aW9uSW5mbygpCi0gICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXRv
cHRpb24oJ3ZlcmJvc2UnKSA8IDI6Ci0gICAgICAgICAgICAgICAgZXhjX2luZm8udHJhY2ViYWNr
ID0gZXhjX2luZm8udHJhY2ViYWNrLmZpbHRlcihmaWx0ZXJfdHJhY2ViYWNrKQotICAgICAgICAg
ICAgZXhjX3JlcHIgPSBleGNfaW5mby5nZXRyZXByKHN0eWxlPSdzaG9ydCcpIGlmIGV4Y19pbmZv
LnRyYWNlYmFjayBlbHNlIGV4Y19pbmZvLmV4Y29ubHkoKQotICAgICAgICAgICAgZm9ybWF0dGVk
X3RiID0gc2FmZV9zdHIoZXhjX3JlcHIpCi0gICAgICAgICAgICByYWlzZSBzZWxmLkNvbGxlY3RF
cnJvcigKLSAgICAgICAgICAgICAgICAiSW1wb3J0RXJyb3Igd2hpbGUgaW1wb3J0aW5nIHRlc3Qg
bW9kdWxlICd7ZnNwYXRofScuXG4iCi0gICAgICAgICAgICAgICAgIkhpbnQ6IG1ha2Ugc3VyZSB5
b3VyIHRlc3QgbW9kdWxlcy9wYWNrYWdlcyBoYXZlIHZhbGlkIFB5dGhvbiBuYW1lcy5cbiIKLSAg
ICAgICAgICAgICAgICAiVHJhY2ViYWNrOlxuIgotICAgICAgICAgICAgICAgICJ7dHJhY2ViYWNr
fSIuZm9ybWF0KGZzcGF0aD1zZWxmLmZzcGF0aCwgdHJhY2ViYWNrPWZvcm1hdHRlZF90YikKLSAg
ICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IF9weXRlc3QucnVubmVyLlNraXBwZWQgYXMgZToK
LSAgICAgICAgICAgIGlmIGUuYWxsb3dfbW9kdWxlX2xldmVsOgotICAgICAgICAgICAgICAgIHJh
aXNlCi0gICAgICAgICAgICByYWlzZSBzZWxmLkNvbGxlY3RFcnJvcigKLSAgICAgICAgICAgICAg
ICAiVXNpbmcgcHl0ZXN0LnNraXAgb3V0c2lkZSBvZiBhIHRlc3QgaXMgbm90IGFsbG93ZWQuICIK
LSAgICAgICAgICAgICAgICAiVG8gZGVjb3JhdGUgYSB0ZXN0IGZ1bmN0aW9uLCB1c2UgdGhlIEBw
eXRlc3QubWFyay5za2lwICIKLSAgICAgICAgICAgICAgICAib3IgQHB5dGVzdC5tYXJrLnNraXBp
ZiBkZWNvcmF0b3JzIGluc3RlYWQsIGFuZCB0byBza2lwIGEgIgotICAgICAgICAgICAgICAgICJt
b2R1bGUgdXNlIGBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsue3NraXAsc2tpcGlmfS4iCi0gICAg
ICAgICAgICApCi0gICAgICAgIHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIuY29uc2lkZXJfbW9k
dWxlKG1vZCkKLSAgICAgICAgcmV0dXJuIG1vZAotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAg
ICAgICBzZXR1cF9tb2R1bGUgPSBfZ2V0X3h1bml0X3NldHVwX3RlYXJkb3duKHNlbGYub2JqLCAi
c2V0VXBNb2R1bGUiKQotICAgICAgICBpZiBzZXR1cF9tb2R1bGUgaXMgTm9uZToKLSAgICAgICAg
ICAgIHNldHVwX21vZHVsZSA9IF9nZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24oc2VsZi5vYmosICJz
ZXR1cF9tb2R1bGUiKQotICAgICAgICBpZiBzZXR1cF9tb2R1bGUgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZXR1cF9tb2R1bGUoKQotCi0gICAgICAgIHRlYXJkb3duX21vZHVsZSA9IF9nZXRf
eHVuaXRfc2V0dXBfdGVhcmRvd24oc2VsZi5vYmosICd0ZWFyRG93bk1vZHVsZScpCi0gICAgICAg
IGlmIHRlYXJkb3duX21vZHVsZSBpcyBOb25lOgotICAgICAgICAgICAgdGVhcmRvd25fbW9kdWxl
ID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihzZWxmLm9iaiwgJ3RlYXJkb3duX21vZHVsZScp
Ci0gICAgICAgIGlmIHRlYXJkb3duX21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNl
bGYuYWRkZmluYWxpemVyKHRlYXJkb3duX21vZHVsZSkKLQotCi1kZWYgX2dldF94dW5pdF9zZXR1
cF90ZWFyZG93bihob2xkZXIsIGF0dHJfbmFtZSwgcGFyYW1fb2JqPU5vbmUpOgotICAgICIiIgot
ICAgIFJldHVybiBhIGNhbGxhYmxlIHRvIHBlcmZvcm0geHVuaXQtc3R5bGUgc2V0dXAgb3IgdGVh
cmRvd24gaWYKLSAgICB0aGUgZnVuY3Rpb24gZXhpc3RzIGluIHRoZSBgYGhvbGRlcmBgIG9iamVj
dC4KLSAgICBUaGUgYGBwYXJhbV9vYmpgYCBwYXJhbWV0ZXIgaXMgdGhlIHBhcmFtZXRlciB3aGlj
aCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24KLSAgICB3aGVuIHRoZSBjYWxsYWJsZSBp
cyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGRlZmF1bHRzIHRvIHRoZSBgYGhvbGRlcmBgIG9i
amVjdC4KLSAgICBSZXR1cm4gYGBOb25lYGAgaWYgYSBzdWl0YWJsZSBjYWxsYWJsZSBpcyBub3Qg
Zm91bmQuCi0gICAgIiIiCi0gICAgcGFyYW1fb2JqID0gcGFyYW1fb2JqIGlmIHBhcmFtX29iaiBp
cyBub3QgTm9uZSBlbHNlIGhvbGRlcgotICAgIHJlc3VsdCA9IF9nZXRfeHVuaXRfZnVuYyhob2xk
ZXIsIGF0dHJfbmFtZSkKLSAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGFyZ19j
b3VudCA9IHJlc3VsdC5fX2NvZGVfXy5jb19hcmdjb3VudAotICAgICAgICBpZiBpbnNwZWN0Lmlz
bWV0aG9kKHJlc3VsdCk6Ci0gICAgICAgICAgICBhcmdfY291bnQgLT0gMQotICAgICAgICBpZiBh
cmdfY291bnQ6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhOiByZXN1bHQocGFyYW1fb2JqKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBfZ2V0X3h1
bml0X2Z1bmMob2JqLCBuYW1lKToKLSAgICAiIiJSZXR1cm4gdGhlIGF0dHJpYnV0ZSBmcm9tIHRo
ZSBnaXZlbiBvYmplY3QgdG8gYmUgdXNlZCBhcyBhIHNldHVwL3RlYXJkb3duCi0gICAgeHVuaXQt
c3R5bGUgZnVuY3Rpb24sIGJ1dCBvbmx5IGlmIG5vdCBtYXJrZWQgYXMgYSBmaXh0dXJlIHRvCi0g
ICAgYXZvaWQgY2FsbGluZyBpdCB0d2ljZS4KLSAgICAiIiIKLSAgICBtZXRoID0gZ2V0YXR0cihv
YmosIG5hbWUsIE5vbmUpCi0gICAgaWYgZml4dHVyZXMuZ2V0Zml4dHVyZW1hcmtlcihtZXRoKSBp
cyBOb25lOgotICAgICAgICByZXR1cm4gbWV0aAotCi0KLWNsYXNzIENsYXNzKFB5Q29sbGVjdG9y
KToKLSAgICAiIiIgQ29sbGVjdG9yIGZvciB0ZXN0IG1ldGhvZHMuICIiIgotCi0gICAgZGVmIGNv
bGxlY3Qoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzYWZlX2dldGF0dHIoc2VsZi5vYmosICJfX3Rl
c3RfXyIsIFRydWUpOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIGlmIGhhc2luaXQo
c2VsZi5vYmopOgotICAgICAgICAgICAgc2VsZi53YXJuKCJDMSIsICJjYW5ub3QgY29sbGVjdCB0
ZXN0IGNsYXNzICVyIGJlY2F1c2UgaXQgaGFzIGEgIgotICAgICAgICAgICAgICAgICAgICAgICJf
X2luaXRfXyBjb25zdHJ1Y3RvciIgJSBzZWxmLm9iai5fX25hbWVfXykKLSAgICAgICAgICAgIHJl
dHVybiBbXQotICAgICAgICBlbGlmIGhhc25ldyhzZWxmLm9iaik6Ci0gICAgICAgICAgICBzZWxm
Lndhcm4oIkMxIiwgImNhbm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJXIgYmVjYXVzZSBpdCBoYXMg
YSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmV3X18gY29uc3RydWN0b3IiICUg
c2VsZi5vYmouX19uYW1lX18pCi0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgcmV0dXJu
IFtzZWxmLl9nZXRjdXN0b21jbGFzcygiSW5zdGFuY2UiKShuYW1lPSIoKSIsIHBhcmVudD1zZWxm
KV0KLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgc2V0dXBfY2xhc3MgPSBfZ2V0X3h1
bml0X2Z1bmMoc2VsZi5vYmosICdzZXR1cF9jbGFzcycpCi0gICAgICAgIGlmIHNldHVwX2NsYXNz
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2V0dXBfY2xhc3MgPSBnZXRhdHRyKHNldHVwX2Ns
YXNzLCAnaW1fZnVuYycsIHNldHVwX2NsYXNzKQotICAgICAgICAgICAgc2V0dXBfY2xhc3MgPSBn
ZXRhdHRyKHNldHVwX2NsYXNzLCAnX19mdW5jX18nLCBzZXR1cF9jbGFzcykKLSAgICAgICAgICAg
IHNldHVwX2NsYXNzKHNlbGYub2JqKQotCi0gICAgICAgIGZpbl9jbGFzcyA9IGdldGF0dHIoc2Vs
Zi5vYmosICd0ZWFyZG93bl9jbGFzcycsIE5vbmUpCi0gICAgICAgIGlmIGZpbl9jbGFzcyBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIGZpbl9jbGFzcyA9IGdldGF0dHIoZmluX2NsYXNzLCAnaW1f
ZnVuYycsIGZpbl9jbGFzcykKLSAgICAgICAgICAgIGZpbl9jbGFzcyA9IGdldGF0dHIoZmluX2Ns
YXNzLCAnX19mdW5jX18nLCBmaW5fY2xhc3MpCi0gICAgICAgICAgICBzZWxmLmFkZGZpbmFsaXpl
cihsYW1iZGE6IGZpbl9jbGFzcyhzZWxmLm9iaikpCi0KLQotY2xhc3MgSW5zdGFuY2UoUHlDb2xs
ZWN0b3IpOgotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wYXJl
bnQub2JqKCkKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBzZWxmLnNlc3Npb24u
X2ZpeHR1cmVtYW5hZ2VyLnBhcnNlZmFjdG9yaWVzKHNlbGYpCi0gICAgICAgIHJldHVybiBzdXBl
cihJbnN0YW5jZSwgc2VsZikuY29sbGVjdCgpCi0KLSAgICBkZWYgbmV3aW5zdGFuY2Uoc2VsZik6
Ci0gICAgICAgIHNlbGYub2JqID0gc2VsZi5fZ2V0b2JqKCkKLSAgICAgICAgcmV0dXJuIHNlbGYu
b2JqCi0KLQotY2xhc3MgRnVuY3Rpb25NaXhpbihQeW9iak1peGluKToKLSAgICAiIiIgbWl4aW4g
Zm9yIHRoZSBjb2RlIGNvbW1vbiB0byBGdW5jdGlvbiBhbmQgR2VuZXJhdG9yLgotICAgICIiIgot
Ci0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICAiIiIgcGVyZm9ybSBzZXR1cCBmb3IgdGhp
cyB0ZXN0IGZ1bmN0aW9uLiAiIiIKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX3ByZXNlcnZl
ZHBhcmVudCcpOgotICAgICAgICAgICAgb2JqID0gc2VsZi5fcHJlc2VydmVkcGFyZW50Ci0gICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLnBhcmVudCwgSW5zdGFuY2UpOgotICAgICAgICAgICAg
b2JqID0gc2VsZi5wYXJlbnQubmV3aW5zdGFuY2UoKQotICAgICAgICAgICAgc2VsZi5vYmogPSBz
ZWxmLl9nZXRvYmooKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb2JqID0gc2VsZi5wYXJl
bnQub2JqCi0gICAgICAgIGlmIGluc3BlY3QuaXNtZXRob2Qoc2VsZi5vYmopOgotICAgICAgICAg
ICAgc2V0dXBfbmFtZSA9ICdzZXR1cF9tZXRob2QnCi0gICAgICAgICAgICB0ZWFyZG93bl9uYW1l
ID0gJ3RlYXJkb3duX21ldGhvZCcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNldHVwX25h
bWUgPSAnc2V0dXBfZnVuY3Rpb24nCi0gICAgICAgICAgICB0ZWFyZG93bl9uYW1lID0gJ3RlYXJk
b3duX2Z1bmN0aW9uJwotICAgICAgICBzZXR1cF9mdW5jX29yX21ldGhvZCA9IF9nZXRfeHVuaXRf
c2V0dXBfdGVhcmRvd24ob2JqLCBzZXR1cF9uYW1lLCBwYXJhbV9vYmo9c2VsZi5vYmopCi0gICAg
ICAgIGlmIHNldHVwX2Z1bmNfb3JfbWV0aG9kIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2V0
dXBfZnVuY19vcl9tZXRob2QoKQotICAgICAgICB0ZWFyZG93bl9mdW5jX29yX21ldGhvZCA9IF9n
ZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24ob2JqLCB0ZWFyZG93bl9uYW1lLCBwYXJhbV9vYmo9c2Vs
Zi5vYmopCi0gICAgICAgIGlmIHRlYXJkb3duX2Z1bmNfb3JfbWV0aG9kIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgc2VsZi5hZGRmaW5hbGl6ZXIodGVhcmRvd25fZnVuY19vcl9tZXRob2QpCi0K
LSAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBpZiBoYXNh
dHRyKHNlbGYsICdfb2JqJykgYW5kIG5vdCBzZWxmLmNvbmZpZy5vcHRpb24uZnVsbHRyYWNlOgot
ICAgICAgICAgICAgY29kZSA9IF9weXRlc3QuX2NvZGUuQ29kZShnZXRfcmVhbF9mdW5jKHNlbGYu
b2JqKSkKLSAgICAgICAgICAgIHBhdGgsIGZpcnN0bGluZW5vID0gY29kZS5wYXRoLCBjb2RlLmZp
cnN0bGluZW5vCi0gICAgICAgICAgICB0cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjawotICAg
ICAgICAgICAgbnRyYWNlYmFjayA9IHRyYWNlYmFjay5jdXQocGF0aD1wYXRoLCBmaXJzdGxpbmVu
bz1maXJzdGxpbmVubykKLSAgICAgICAgICAgIGlmIG50cmFjZWJhY2sgPT0gdHJhY2ViYWNrOgot
ICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSBudHJhY2ViYWNrLmN1dChwYXRoPXBhdGgpCi0g
ICAgICAgICAgICAgICAgaWYgbnRyYWNlYmFjayA9PSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAg
ICAgICAgICMgbnRyYWNlYmFjayA9IG50cmFjZWJhY2suY3V0KGV4Y2x1ZGVwYXRoPWN1dGRpcjIp
Ci0gICAgICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSBudHJhY2ViYWNrLmZpbHRlcihmaWx0
ZXJfdHJhY2ViYWNrKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbnRyYWNlYmFjazoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSB0cmFjZWJhY2sKLQotICAgICAgICAg
ICAgZXhjaW5mby50cmFjZWJhY2sgPSBudHJhY2ViYWNrLmZpbHRlcigpCi0gICAgICAgICAgICAj
IGlzc3VlMzY0OiBtYXJrIGFsbCBidXQgZmlyc3QgYW5kIGxhc3QgZnJhbWVzIHRvCi0gICAgICAg
ICAgICAjIG9ubHkgc2hvdyBhIHNpbmdsZS1saW5lIG1lc3NhZ2UgZm9yIGVhY2ggZnJhbWUKLSAg
ICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi50YnN0eWxlID09ICJhdXRvIjoKLSAgICAg
ICAgICAgICAgICBpZiBsZW4oZXhjaW5mby50cmFjZWJhY2spID4gMjoKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIGVudHJ5IGluIGV4Y2luZm8udHJhY2ViYWNrWzE6LTFdOgotICAgICAgICAgICAg
ICAgICAgICAgICAgZW50cnkuc2V0X3JlcHJfc3R5bGUoJ3Nob3J0JykKLQotICAgIGRlZiBfcmVw
cl9mYWlsdXJlX3B5KHNlbGYsIGV4Y2luZm8sIHN0eWxlPSJsb25nIik6Ci0gICAgICAgIGlmIGV4
Y2luZm8uZXJyaXNpbnN0YW5jZShmYWlsLkV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBpZiBub3Qg
ZXhjaW5mby52YWx1ZS5weXRyYWNlOgotICAgICAgICAgICAgICAgIHJldHVybiBweS5fYnVpbHRp
bi5fdG90ZXh0KGV4Y2luZm8udmFsdWUpCi0gICAgICAgIHJldHVybiBzdXBlcihGdW5jdGlvbk1p
eGluLCBzZWxmKS5fcmVwcl9mYWlsdXJlX3B5KGV4Y2luZm8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlKQotCi0g
ICAgZGVmIHJlcHJfZmFpbHVyZShzZWxmLCBleGNpbmZvLCBvdXRlcnI9Tm9uZSk6Ci0gICAgICAg
IGFzc2VydCBvdXRlcnIgaXMgTm9uZSwgIlhYWCBvdXRlcnIgdXNhZ2UgaXMgZGVwcmVjYXRlZCIK
LSAgICAgICAgc3R5bGUgPSBzZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZQotICAgICAgICBpZiBz
dHlsZSA9PSAiYXV0byI6Ci0gICAgICAgICAgICBzdHlsZSA9ICJsb25nIgotICAgICAgICByZXR1
cm4gc2VsZi5fcmVwcl9mYWlsdXJlX3B5KGV4Y2luZm8sIHN0eWxlPXN0eWxlKQotCi0KLWNsYXNz
IEdlbmVyYXRvcihGdW5jdGlvbk1peGluLCBQeUNvbGxlY3Rvcik6Ci0gICAgZGVmIGNvbGxlY3Qo
c2VsZik6Ci0gICAgICAgICMgdGVzdCBnZW5lcmF0b3JzIGFyZSBzZWVuIGFzIGNvbGxlY3RvcnMg
YnV0IHRoZXkgYWxzbwotICAgICAgICAjIGludm9rZSBzZXR1cC90ZWFyZG93biBvbiBwb3B1bGFy
IHJlcXVlc3QKLSAgICAgICAgIyAoaW5kdWNlZCBieSB0aGUgY29tbW9uICJ0ZXN0XyoiIG5hbWlu
ZyBzaGFyZWQgd2l0aCBub3JtYWwgdGVzdHMpCi0gICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQg
ZGVwcmVjYXRlZAotICAgICAgICBzZWxmLnNlc3Npb24uX3NldHVwc3RhdGUucHJlcGFyZShzZWxm
KQotICAgICAgICAjIHNlZSBGdW5jdGlvbk1peGluLnNldHVwIGFuZCB0ZXN0X3NldHVwc3RhdGVf
aXNfcHJlc2VydmVkXzEzNAotICAgICAgICBzZWxmLl9wcmVzZXJ2ZWRwYXJlbnQgPSBzZWxmLnBh
cmVudC5vYmoKLSAgICAgICAgdmFsdWVzID0gW10KLSAgICAgICAgc2VlbiA9IHt9Ci0gICAgICAg
IGZvciBpLCB4IGluIGVudW1lcmF0ZShzZWxmLm9iaigpKToKLSAgICAgICAgICAgIG5hbWUsIGNh
bGwsIGFyZ3MgPSBzZWxmLmdldGNhbGxhcmdzKHgpCi0gICAgICAgICAgICBpZiBub3QgY2FsbGFi
bGUoY2FsbCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlciB5aWVsZGVkIG5v
biBjYWxsYWJsZSB0ZXN0ICVyIiAlIChzZWxmLm9iaiwgY2FsbCwpKQotICAgICAgICAgICAgaWYg
bmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIG5hbWUgPSAiWyVkXSIgJSBpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5hbWUgPSAiWyclcyddIiAlIG5hbWUKLSAgICAg
ICAgICAgIGlmIG5hbWUgaW4gc2VlbjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCIlciBnZW5lcmF0ZWQgdGVzdHMgd2l0aCBub24tdW5pcXVlIG5hbWUgJXIiICUgKHNlbGYsIG5h
bWUpKQotICAgICAgICAgICAgc2VlbltuYW1lXSA9IFRydWUKLSAgICAgICAgICAgIHZhbHVlcy5h
cHBlbmQoc2VsZi5GdW5jdGlvbihuYW1lLCBzZWxmLCBhcmdzPWFyZ3MsIGNhbGxvYmo9Y2FsbCkp
Ci0gICAgICAgIHNlbGYud2FybignQzEnLCBkZXByZWNhdGVkLllJRUxEX1RFU1RTKQotICAgICAg
ICByZXR1cm4gdmFsdWVzCi0KLSAgICBkZWYgZ2V0Y2FsbGFyZ3Moc2VsZiwgb2JqKToKLSAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIG9i
aiA9IChvYmosKQotICAgICAgICAjIGV4cGxpY2l0IG5hbWluZwotICAgICAgICBpZiBpc2luc3Rh
bmNlKG9ialswXSwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBuYW1lID0gb2JqWzBd
Ci0gICAgICAgICAgICBvYmogPSBvYmpbMTpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBu
YW1lID0gTm9uZQotICAgICAgICBjYWxsLCBhcmdzID0gb2JqWzBdLCBvYmpbMTpdCi0gICAgICAg
IHJldHVybiBuYW1lLCBjYWxsLCBhcmdzCi0KLQotZGVmIGhhc2luaXQob2JqKToKLSAgICBpbml0
ID0gZ2V0YXR0cihvYmosICdfX2luaXRfXycsIE5vbmUpCi0gICAgaWYgaW5pdDoKLSAgICAgICAg
cmV0dXJuIGluaXQgIT0gb2JqZWN0Ll9faW5pdF9fCi0KLQotZGVmIGhhc25ldyhvYmopOgotICAg
IG5ldyA9IGdldGF0dHIob2JqLCAnX19uZXdfXycsIE5vbmUpCi0gICAgaWYgbmV3OgotICAgICAg
ICByZXR1cm4gbmV3ICE9IG9iamVjdC5fX25ld19fCi0KLQotY2xhc3MgQ2FsbFNwZWMyKG9iamVj
dCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGFmdW5jKToKLSAgICAgICAgc2VsZi5tZXRh
ZnVuYyA9IG1ldGFmdW5jCi0gICAgICAgIHNlbGYuZnVuY2FyZ3MgPSB7fQotICAgICAgICBzZWxm
Ll9pZGxpc3QgPSBbXQotICAgICAgICBzZWxmLnBhcmFtcyA9IHt9Ci0gICAgICAgIHNlbGYuX2ds
b2JhbGlkID0gTk9UU0VUCi0gICAgICAgIHNlbGYuX2dsb2JhbGlkX2FyZ3MgPSBzZXQoKQotICAg
ICAgICBzZWxmLl9nbG9iYWxwYXJhbSA9IE5PVFNFVAotICAgICAgICBzZWxmLl9hcmcyc2NvcGVu
dW0gPSB7fSAgIyB1c2VkIGZvciBzb3J0aW5nIHBhcmFtZXRyaXplZCByZXNvdXJjZXMKLSAgICAg
ICAgc2VsZi5tYXJrcyA9IFtdCi0gICAgICAgIHNlbGYuaW5kaWNlcyA9IHt9Ci0KLSAgICBkZWYg
Y29weShzZWxmLCBtZXRhZnVuYyk6Ci0gICAgICAgIGNzID0gQ2FsbFNwZWMyKHNlbGYubWV0YWZ1
bmMpCi0gICAgICAgIGNzLmZ1bmNhcmdzLnVwZGF0ZShzZWxmLmZ1bmNhcmdzKQotICAgICAgICBj
cy5wYXJhbXMudXBkYXRlKHNlbGYucGFyYW1zKQotICAgICAgICBjcy5tYXJrcy5leHRlbmQoc2Vs
Zi5tYXJrcykKLSAgICAgICAgY3MuaW5kaWNlcy51cGRhdGUoc2VsZi5pbmRpY2VzKQotICAgICAg
ICBjcy5fYXJnMnNjb3BlbnVtLnVwZGF0ZShzZWxmLl9hcmcyc2NvcGVudW0pCi0gICAgICAgIGNz
Ll9pZGxpc3QgPSBsaXN0KHNlbGYuX2lkbGlzdCkKLSAgICAgICAgY3MuX2dsb2JhbGlkID0gc2Vs
Zi5fZ2xvYmFsaWQKLSAgICAgICAgY3MuX2dsb2JhbGlkX2FyZ3MgPSBzZWxmLl9nbG9iYWxpZF9h
cmdzCi0gICAgICAgIGNzLl9nbG9iYWxwYXJhbSA9IHNlbGYuX2dsb2JhbHBhcmFtCi0gICAgICAg
IHJldHVybiBjcwotCi0gICAgZGVmIF9jaGVja2FyZ25vdGNvbnRhaW5lZChzZWxmLCBhcmcpOgot
ICAgICAgICBpZiBhcmcgaW4gc2VsZi5wYXJhbXMgb3IgYXJnIGluIHNlbGYuZnVuY2FyZ3M6Ci0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdXBsaWNhdGUgJXIiICUgKGFyZywpKQotCi0g
ICAgZGVmIGdldHBhcmFtKHNlbGYsIG5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5wYXJhbXNbbmFtZV0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAg
ICAgICAgaWYgc2VsZi5fZ2xvYmFscGFyYW0gaXMgTk9UU0VUOgotICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IobmFtZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nbG9iYWxwYXJh
bQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gIi0i
LmpvaW4obWFwKHN0ciwgZmlsdGVyKE5vbmUsIHNlbGYuX2lkbGlzdCkpKQotCi0gICAgZGVmIHNl
dG11bHRpMihzZWxmLCB2YWx0eXBlcywgYXJnbmFtZXMsIHZhbHNldCwgaWQsIG1hcmtzLCBzY29w
ZW51bSwKLSAgICAgICAgICAgICAgICAgIHBhcmFtX2luZGV4KToKLSAgICAgICAgZm9yIGFyZywg
dmFsIGluIHppcChhcmduYW1lcywgdmFsc2V0KToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrYXJn
bm90Y29udGFpbmVkKGFyZykKLSAgICAgICAgICAgIHZhbHR5cGVfZm9yX2FyZyA9IHZhbHR5cGVz
W2FyZ10KLSAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgdmFsdHlwZV9mb3JfYXJnKVthcmddID0g
dmFsCi0gICAgICAgICAgICBzZWxmLmluZGljZXNbYXJnXSA9IHBhcmFtX2luZGV4Ci0gICAgICAg
ICAgICBzZWxmLl9hcmcyc2NvcGVudW1bYXJnXSA9IHNjb3BlbnVtCi0gICAgICAgIHNlbGYuX2lk
bGlzdC5hcHBlbmQoaWQpCi0gICAgICAgIHNlbGYubWFya3MuZXh0ZW5kKG1hcmtzKQotCi0gICAg
ZGVmIHNldGFsbChzZWxmLCBmdW5jYXJncywgaWQsIHBhcmFtKToKLSAgICAgICAgZm9yIHggaW4g
ZnVuY2FyZ3M6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja2FyZ25vdGNvbnRhaW5lZCh4KQotICAg
ICAgICBzZWxmLmZ1bmNhcmdzLnVwZGF0ZShmdW5jYXJncykKLSAgICAgICAgaWYgaWQgaXMgbm90
IE5PVFNFVDoKLSAgICAgICAgICAgIHNlbGYuX2lkbGlzdC5hcHBlbmQoaWQpCi0gICAgICAgIGlm
IHBhcmFtIGlzIG5vdCBOT1RTRVQ6Ci0gICAgICAgICAgICBhc3NlcnQgc2VsZi5fZ2xvYmFscGFy
YW0gaXMgTk9UU0VUCi0gICAgICAgICAgICBzZWxmLl9nbG9iYWxwYXJhbSA9IHBhcmFtCi0gICAg
ICAgIGZvciBhcmcgaW4gZnVuY2FyZ3M6Ci0gICAgICAgICAgICBzZWxmLl9hcmcyc2NvcGVudW1b
YXJnXSA9IGZpeHR1cmVzLnNjb3BlbnVtX2Z1bmN0aW9uCi0KLQotY2xhc3MgTWV0YWZ1bmMoZml4
dHVyZXMuRnVuY2FyZ25hbWVzQ29tcGF0QXR0cik6Ci0gICAgIiIiCi0gICAgTWV0YWZ1bmMgb2Jq
ZWN0cyBhcmUgcGFzc2VkIHRvIHRoZSBgYHB5dGVzdF9nZW5lcmF0ZV90ZXN0c2BgIGhvb2suCi0g
ICAgVGhleSBoZWxwIHRvIGluc3BlY3QgYSB0ZXN0IGZ1bmN0aW9uIGFuZCB0byBnZW5lcmF0ZSB0
ZXN0cyBhY2NvcmRpbmcgdG8KLSAgICB0ZXN0IGNvbmZpZ3VyYXRpb24gb3IgdmFsdWVzIHNwZWNp
ZmllZCBpbiB0aGUgY2xhc3Mgb3IgbW9kdWxlIHdoZXJlIGEKLSAgICB0ZXN0IGZ1bmN0aW9uIGlz
IGRlZmluZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3Rpb24sIGZp
eHR1cmVpbmZvLCBjb25maWcsIGNscz1Ob25lLCBtb2R1bGU9Tm9uZSk6Ci0gICAgICAgICM6IGFj
Y2VzcyB0byB0aGUgOmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5Db25maWdgIG9iamVjdCBmb3IgdGhl
IHRlc3Qgc2Vzc2lvbgotICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwotCi0gICAgICAgICM6
IHRoZSBtb2R1bGUgb2JqZWN0IHdoZXJlIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4u
Ci0gICAgICAgIHNlbGYubW9kdWxlID0gbW9kdWxlCi0KLSAgICAgICAgIzogdW5kZXJseWluZyBw
eXRob24gdGVzdCBmdW5jdGlvbgotICAgICAgICBzZWxmLmZ1bmN0aW9uID0gZnVuY3Rpb24KLQot
ICAgICAgICAjOiBzZXQgb2YgZml4dHVyZSBuYW1lcyByZXF1aXJlZCBieSB0aGUgdGVzdCBmdW5j
dGlvbgotICAgICAgICBzZWxmLmZpeHR1cmVuYW1lcyA9IGZpeHR1cmVpbmZvLm5hbWVzX2Nsb3N1
cmUKLQotICAgICAgICAjOiBjbGFzcyBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24gaXMg
ZGVmaW5lZCBpbiBvciBgYE5vbmVgYC4KLSAgICAgICAgc2VsZi5jbHMgPSBjbHMKLQotICAgICAg
ICBzZWxmLl9jYWxscyA9IFtdCi0gICAgICAgIHNlbGYuX2lkcyA9IHNldCgpCi0gICAgICAgIHNl
bGYuX2FyZzJmaXh0dXJlZGVmcyA9IGZpeHR1cmVpbmZvLm5hbWUyZml4dHVyZWRlZnMKLQotICAg
IGRlZiBwYXJhbWV0cml6ZShzZWxmLCBhcmduYW1lcywgYXJndmFsdWVzLCBpbmRpcmVjdD1GYWxz
ZSwgaWRzPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIHNjb3BlPU5vbmUpOgotICAgICAgICAi
IiIgQWRkIG5ldyBpbnZvY2F0aW9ucyB0byB0aGUgdW5kZXJseWluZyB0ZXN0IGZ1bmN0aW9uIHVz
aW5nIHRoZSBsaXN0Ci0gICAgICAgIG9mIGFyZ3ZhbHVlcyBmb3IgdGhlIGdpdmVuIGFyZ25hbWVz
LiAgUGFyYW1ldHJpemF0aW9uIGlzIHBlcmZvcm1lZAotICAgICAgICBkdXJpbmcgdGhlIGNvbGxl
Y3Rpb24gcGhhc2UuICBJZiB5b3UgbmVlZCB0byBzZXR1cCBleHBlbnNpdmUgcmVzb3VyY2VzCi0g
ICAgICAgIHNlZSBhYm91dCBzZXR0aW5nIGluZGlyZWN0IHRvIGRvIGl0IHJhdGhlciBhdCB0ZXN0
IHNldHVwIHRpbWUuCi0KLSAgICAgICAgOmFyZyBhcmduYW1lczogYSBjb21tYS1zZXBhcmF0ZWQg
c3RyaW5nIGRlbm90aW5nIG9uZSBvciBtb3JlIGFyZ3VtZW50Ci0gICAgICAgICAgICAgICAgICAg
ICAgIG5hbWVzLCBvciBhIGxpc3QvdHVwbGUgb2YgYXJndW1lbnQgc3RyaW5ncy4KLQotICAgICAg
ICA6YXJnIGFyZ3ZhbHVlczogVGhlIGxpc3Qgb2YgYXJndmFsdWVzIGRldGVybWluZXMgaG93IG9m
dGVuIGEKLSAgICAgICAgICAgIHRlc3QgaXMgaW52b2tlZCB3aXRoIGRpZmZlcmVudCBhcmd1bWVu
dCB2YWx1ZXMuICBJZiBvbmx5IG9uZQotICAgICAgICAgICAgYXJnbmFtZSB3YXMgc3BlY2lmaWVk
IGFyZ3ZhbHVlcyBpcyBhIGxpc3Qgb2YgdmFsdWVzLiAgSWYgTgotICAgICAgICAgICAgYXJnbmFt
ZXMgd2VyZSBzcGVjaWZpZWQsIGFyZ3ZhbHVlcyBtdXN0IGJlIGEgbGlzdCBvZiBOLXR1cGxlcywK
LSAgICAgICAgICAgIHdoZXJlIGVhY2ggdHVwbGUtZWxlbWVudCBzcGVjaWZpZXMgYSB2YWx1ZSBm
b3IgaXRzIHJlc3BlY3RpdmUKLSAgICAgICAgICAgIGFyZ25hbWUuCi0KLSAgICAgICAgOmFyZyBp
bmRpcmVjdDogVGhlIGxpc3Qgb2YgYXJnbmFtZXMgb3IgYm9vbGVhbi4gQSBsaXN0IG9mIGFyZ3Vt
ZW50cycKLSAgICAgICAgICAgIG5hbWVzIChzdWJzZXQgb2YgYXJnbmFtZXMpLiBJZiBUcnVlIHRo
ZSBsaXN0IGNvbnRhaW5zIGFsbCBuYW1lcyBmcm9tCi0gICAgICAgICAgICB0aGUgYXJnbmFtZXMu
IEVhY2ggYXJndmFsdWUgY29ycmVzcG9uZGluZyB0byBhbiBhcmduYW1lIGluIHRoaXMgbGlzdCB3
aWxsCi0gICAgICAgICAgICBiZSBwYXNzZWQgYXMgcmVxdWVzdC5wYXJhbSB0byBpdHMgcmVzcGVj
dGl2ZSBhcmduYW1lIGZpeHR1cmUKLSAgICAgICAgICAgIGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2Fu
IHBlcmZvcm0gbW9yZSBleHBlbnNpdmUgc2V0dXBzIGR1cmluZyB0aGUKLSAgICAgICAgICAgIHNl
dHVwIHBoYXNlIG9mIGEgdGVzdCByYXRoZXIgdGhhbiBhdCBjb2xsZWN0aW9uIHRpbWUuCi0KLSAg
ICAgICAgOmFyZyBpZHM6IGxpc3Qgb2Ygc3RyaW5nIGlkcywgb3IgYSBjYWxsYWJsZS4KLSAgICAg
ICAgICAgIElmIHN0cmluZ3MsIGVhY2ggaXMgY29ycmVzcG9uZGluZyB0byB0aGUgYXJndmFsdWVz
IHNvIHRoYXQgdGhleSBhcmUKLSAgICAgICAgICAgIHBhcnQgb2YgdGhlIHRlc3QgaWQuIElmIE5v
bmUgaXMgZ2l2ZW4gYXMgaWQgb2Ygc3BlY2lmaWMgdGVzdCwgdGhlCi0gICAgICAgICAgICBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBpZCBmb3IgdGhhdCBhcmd1bWVudCB3aWxsIGJlIHVzZWQuCi0g
ICAgICAgICAgICBJZiBjYWxsYWJsZSwgaXQgc2hvdWxkIHRha2Ugb25lIGFyZ3VtZW50IChhIHNp
bmdsZSBhcmd2YWx1ZSkgYW5kIHJldHVybgotICAgICAgICAgICAgYSBzdHJpbmcgb3IgcmV0dXJu
IE5vbmUuIElmIE5vbmUsIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZCBmb3IgdGhhdAot
ICAgICAgICAgICAgYXJndW1lbnQgd2lsbCBiZSB1c2VkLgotICAgICAgICAgICAgSWYgbm8gaWRz
IGFyZSBwcm92aWRlZCB0aGV5IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbQot
ICAgICAgICAgICAgdGhlIGFyZ3ZhbHVlcy4KLQotICAgICAgICA6YXJnIHNjb3BlOiBpZiBzcGVj
aWZpZWQgaXQgZGVub3RlcyB0aGUgc2NvcGUgb2YgdGhlIHBhcmFtZXRlcnMuCi0gICAgICAgICAg
ICBUaGUgc2NvcGUgaXMgdXNlZCBmb3IgZ3JvdXBpbmcgdGVzdHMgYnkgcGFyYW1ldGVyIGluc3Rh
bmNlcy4KLSAgICAgICAgICAgIEl0IHdpbGwgYWxzbyBvdmVycmlkZSBhbnkgZml4dHVyZS1mdW5j
dGlvbiBkZWZpbmVkIHNjb3BlLCBhbGxvd2luZwotICAgICAgICAgICAgdG8gc2V0IGEgZHluYW1p
YyBzY29wZSB1c2luZyB0ZXN0IGNvbnRleHQgb3IgY29uZmlndXJhdGlvbi4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgc2NvcGUyaW5kZXgKLSAgICAg
ICAgZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IFBhcmFtZXRlclNldAotICAgICAgICBmcm9tIHB5
LmlvIGltcG9ydCBzYWZlcmVwcgotICAgICAgICBhcmduYW1lcywgcGFyYW1ldGVycyA9IFBhcmFt
ZXRlclNldC5fZm9yX3BhcmFtZXRlcml6ZSgKLSAgICAgICAgICAgIGFyZ25hbWVzLCBhcmd2YWx1
ZXMsIHNlbGYuZnVuY3Rpb24pCi0gICAgICAgIGRlbCBhcmd2YWx1ZXMKLQotICAgICAgICBpZiBz
Y29wZSBpcyBOb25lOgotICAgICAgICAgICAgc2NvcGUgPSBfZmluZF9wYXJhbWV0cml6ZWRfc2Nv
cGUoYXJnbmFtZXMsIHNlbGYuX2FyZzJmaXh0dXJlZGVmcywgaW5kaXJlY3QpCi0KLSAgICAgICAg
c2NvcGVudW0gPSBzY29wZTJpbmRleChzY29wZSwgZGVzY3I9J2NhbGwgdG8gezB9Jy5mb3JtYXQo
c2VsZi5wYXJhbWV0cml6ZSkpCi0gICAgICAgIHZhbHR5cGVzID0ge30KLSAgICAgICAgZm9yIGFy
ZyBpbiBhcmduYW1lczoKLSAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gc2VsZi5maXh0dXJlbmFt
ZXM6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpbmRpcmVjdCwgKHR1cGxlLCBsaXN0
KSk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSAnZml4dHVyZScgaWYgYXJnIGluIGluZGly
ZWN0IGVsc2UgJ2FyZ3VtZW50JwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIG5hbWUgPSAnZml4dHVyZScgaWYgaW5kaXJlY3QgZWxzZSAnYXJndW1lbnQnCi0gICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgIiVyIHVz
ZXMgbm8gJXMgJXIiICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mdW5jdGlvbiwg
bmFtZSwgYXJnKSkKLQotICAgICAgICBpZiBpbmRpcmVjdCBpcyBUcnVlOgotICAgICAgICAgICAg
dmFsdHlwZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAicGFyYW1zIikKLSAgICAgICAgZWxp
ZiBpbmRpcmVjdCBpcyBGYWxzZToKLSAgICAgICAgICAgIHZhbHR5cGVzID0gZGljdC5mcm9ta2V5
cyhhcmduYW1lcywgImZ1bmNhcmdzIikKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGluZGlyZWN0
LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHZhbHR5cGVzID0gZGljdC5mcm9ta2V5cyhh
cmduYW1lcywgImZ1bmNhcmdzIikKLSAgICAgICAgICAgIGZvciBhcmcgaW4gaW5kaXJlY3Q6Ci0g
ICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBhcmduYW1lczoKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiaW5kaXJlY3QgZ2l2ZW4gdG8gJXI6IGZpeHR1cmUgJXIgZG9l
c24ndCBleGlzdCIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5mdW5jdGlvbiwgYXJnKSkKLSAgICAgICAgICAgICAgICB2YWx0eXBlc1thcmddID0gInBhcmFt
cyIKLSAgICAgICAgaWRmbiA9IE5vbmUKLSAgICAgICAgaWYgY2FsbGFibGUoaWRzKToKLSAgICAg
ICAgICAgIGlkZm4gPSBpZHMKLSAgICAgICAgICAgIGlkcyA9IE5vbmUKLSAgICAgICAgaWYgaWRz
OgotICAgICAgICAgICAgaWYgbGVuKGlkcykgIT0gbGVuKHBhcmFtZXRlcnMpOgotICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVkIHRlc3RzIHNwZWNpZmllZCB3aXRoICVkIGlkcycg
JSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4ocGFyYW1ldGVycyksIGxl
bihpZHMpKSkKLSAgICAgICAgICAgIGZvciBpZF92YWx1ZSBpbiBpZHM6Ci0gICAgICAgICAgICAg
ICAgaWYgaWRfdmFsdWUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGlkX3ZhbHVlLCBz
aXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2lkcyBtdXN0IGJl
IGxpc3Qgb2Ygc3RyaW5ncywgZm91bmQ6ICVzICh0eXBlOiAlcyknCi0gICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgKHNhZmVyZXByKGlkX3ZhbHVlKSwgdHlwZShpZF92
YWx1ZSkuX19uYW1lX18pKQotICAgICAgICBpZHMgPSBpZG1ha2VyKGFyZ25hbWVzLCBwYXJhbWV0
ZXJzLCBpZGZuLCBpZHMsIHNlbGYuY29uZmlnKQotICAgICAgICBuZXdjYWxscyA9IFtdCi0gICAg
ICAgIGZvciBjYWxsc3BlYyBpbiBzZWxmLl9jYWxscyBvciBbQ2FsbFNwZWMyKHNlbGYpXToKLSAg
ICAgICAgICAgIGVsZW1lbnRzID0gemlwKGlkcywgcGFyYW1ldGVycywgY291bnQoKSkKLSAgICAg
ICAgICAgIGZvciBhX2lkLCBwYXJhbSwgcGFyYW1faW5kZXggaW4gZWxlbWVudHM6Ci0gICAgICAg
ICAgICAgICAgaWYgbGVuKHBhcmFtLnZhbHVlcykgIT0gbGVuKGFyZ25hbWVzKToKLSAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdJ
biAicGFyYW1ldHJpemUiIHRoZSBudW1iZXIgb2YgdmFsdWVzICh7MH0pIG11c3QgYmUgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgJ2VxdWFsIHRvIHRoZSBudW1iZXIgb2YgbmFtZXMgKHsxfSkn
LmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZXMsIGFyZ25h
bWVzKSkKLSAgICAgICAgICAgICAgICBuZXdjYWxsc3BlYyA9IGNhbGxzcGVjLmNvcHkoc2VsZikK
LSAgICAgICAgICAgICAgICBuZXdjYWxsc3BlYy5zZXRtdWx0aTIodmFsdHlwZXMsIGFyZ25hbWVz
LCBwYXJhbS52YWx1ZXMsIGFfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtLm1hcmtzLCBzY29wZW51bSwgcGFyYW1faW5kZXgpCi0gICAgICAgICAgICAgICAg
bmV3Y2FsbHMuYXBwZW5kKG5ld2NhbGxzcGVjKQotICAgICAgICBzZWxmLl9jYWxscyA9IG5ld2Nh
bGxzCi0KLSAgICBkZWYgYWRkY2FsbChzZWxmLCBmdW5jYXJncz1Ob25lLCBpZD1OT1RTRVQsIHBh
cmFtPU5PVFNFVCk6Ci0gICAgICAgICIiIiBBZGQgYSBuZXcgY2FsbCB0byB0aGUgdW5kZXJseWlu
ZyB0ZXN0IGZ1bmN0aW9uIGR1cmluZyB0aGUgY29sbGVjdGlvbiBwaGFzZSBvZiBhIHRlc3QgcnVu
LgotCi0gICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKLQotICAgICAgICAgICAgVXNlIDptZXRo
OmBwYXJhbWV0cml6ZWAgaW5zdGVhZC4KLQotICAgICAgICBOb3RlIHRoYXQgcmVxdWVzdC5hZGRj
YWxsKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgdGVzdCBjb2xsZWN0aW9uIHBoYXNlIHByaW9yIGFu
ZAotICAgICAgICBpbmRlcGVuZGVudGx5IHRvIGFjdHVhbCB0ZXN0IGV4ZWN1dGlvbi4gIFlvdSBz
aG91bGQgb25seSB1c2UgYWRkY2FsbCgpCi0gICAgICAgIGlmIHlvdSBuZWVkIHRvIHNwZWNpZnkg
bXVsdGlwbGUgYXJndW1lbnRzIG9mIGEgdGVzdCBmdW5jdGlvbi4KLQotICAgICAgICA6YXJnIGZ1
bmNhcmdzOiBhcmd1bWVudCBrZXl3b3JkIGRpY3Rpb25hcnkgdXNlZCB3aGVuIGludm9raW5nCi0g
ICAgICAgICAgICB0aGUgdGVzdCBmdW5jdGlvbi4KLQotICAgICAgICA6YXJnIGlkOiB1c2VkIGZv
ciByZXBvcnRpbmcgYW5kIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLiAgSWYgeW91Ci0gICAgICAg
ICAgICBkb24ndCBzdXBwbHkgYW4gYGlkYCBhbiBhdXRvbWF0aWMgdW5pcXVlIGlkIHdpbGwgYmUg
Z2VuZXJhdGVkLgotCi0gICAgICAgIDphcmcgcGFyYW06IGEgcGFyYW1ldGVyIHdoaWNoIHdpbGwg
YmUgZXhwb3NlZCB0byBhIGxhdGVyIGZpeHR1cmUgZnVuY3Rpb24KLSAgICAgICAgICAgIGludm9j
YXRpb24gdGhyb3VnaCB0aGUgYGByZXF1ZXN0LnBhcmFtYGAgYXR0cmlidXRlLgotICAgICAgICAi
IiIKLSAgICAgICAgaWYgc2VsZi5jb25maWc6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZy53YXJu
KCdDMScsIG1lc3NhZ2U9ZGVwcmVjYXRlZC5NRVRBRlVOQ19BRERfQ0FMTCwgZnNsb2NhdGlvbj1O
b25lKQotICAgICAgICBhc3NlcnQgZnVuY2FyZ3MgaXMgTm9uZSBvciBpc2luc3RhbmNlKGZ1bmNh
cmdzLCBkaWN0KQotICAgICAgICBpZiBmdW5jYXJncyBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IGZvciBuYW1lIGluIGZ1bmNhcmdzOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNl
bGYuZml4dHVyZW5hbWVzOgotICAgICAgICAgICAgICAgICAgICBmYWlsKCJmdW5jYXJnICVyIG5v
dCB1c2VkIGluIHRoaXMgZnVuY3Rpb24uIiAlIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBmdW5jYXJncyA9IHt9Ci0gICAgICAgIGlmIGlkIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJpZD1Ob25lIG5vdCBhbGxvd2VkIikKLSAgICAgICAgaWYgaWQgaXMg
Tk9UU0VUOgotICAgICAgICAgICAgaWQgPSBsZW4oc2VsZi5fY2FsbHMpCi0gICAgICAgIGlkID0g
c3RyKGlkKQotICAgICAgICBpZiBpZCBpbiBzZWxmLl9pZHM6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCJkdXBsaWNhdGUgaWQgJXIiICUgaWQpCi0gICAgICAgIHNlbGYuX2lkcy5hZGQo
aWQpCi0KLSAgICAgICAgY3MgPSBDYWxsU3BlYzIoc2VsZikKLSAgICAgICAgY3Muc2V0YWxsKGZ1
bmNhcmdzLCBpZCwgcGFyYW0pCi0gICAgICAgIHNlbGYuX2NhbGxzLmFwcGVuZChjcykKLQotCi1k
ZWYgX2ZpbmRfcGFyYW1ldHJpemVkX3Njb3BlKGFyZ25hbWVzLCBhcmcyZml4dHVyZWRlZnMsIGlu
ZGlyZWN0KToKLSAgICAiIiJGaW5kIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHNjb3BlIGZvciBhIHBh
cmFtZXRyaXplZCBjYWxsIGJhc2VkIG9uIGl0cyBhcmd1bWVudHMuCi0KLSAgICBXaGVuIHRoZXJl
J3MgYXQgbGVhc3Qgb25lIGRpcmVjdCBhcmd1bWVudCwgYWx3YXlzIHVzZSAiZnVuY3Rpb24iIHNj
b3BlLgotCi0gICAgV2hlbiBhIHRlc3QgZnVuY3Rpb24gaXMgcGFyYW1ldHJpemVkIGFuZCBhbGwg
aXRzIGFyZ3VtZW50cyBhcmUgaW5kaXJlY3QKLSAgICAoZS5nLiBmaXh0dXJlcyksIHJldHVybiB0
aGUgbW9zdCBuYXJyb3cgc2NvcGUgYmFzZWQgb24gdGhlIGZpeHR1cmVzIHVzZWQuCi0KLSAgICBS
ZWxhdGVkIHRvIGlzc3VlICMxODMyLCBiYXNlZCBvbiBjb2RlIHBvc3RlZCBieSBAS2luZ2RyZWFk
LgotICAgICIiIgotICAgIGZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgc2NvcGVzCi0gICAg
aW5kaXJlY3RfYXNfbGlzdCA9IGlzaW5zdGFuY2UoaW5kaXJlY3QsIChsaXN0LCB0dXBsZSkpCi0g
ICAgYWxsX2FyZ3VtZW50c19hcmVfZml4dHVyZXMgPSBpbmRpcmVjdCBpcyBUcnVlIG9yIFwKLSAg
ICAgICAgaW5kaXJlY3RfYXNfbGlzdCBhbmQgbGVuKGluZGlyZWN0KSA9PSBhcmduYW1lcwotICAg
IGlmIGFsbF9hcmd1bWVudHNfYXJlX2ZpeHR1cmVzOgotICAgICAgICBmaXh0dXJlZGVmcyA9IGFy
ZzJmaXh0dXJlZGVmcyBvciB7fQotICAgICAgICB1c2VkX3Njb3BlcyA9IFtmaXh0dXJlZGVmWzBd
LnNjb3BlIGZvciBuYW1lLCBmaXh0dXJlZGVmIGluIGZpeHR1cmVkZWZzLml0ZW1zKCldCi0gICAg
ICAgIGlmIHVzZWRfc2NvcGVzOgotICAgICAgICAgICAgIyBUYWtlcyB0aGUgbW9zdCBuYXJyb3cg
c2NvcGUgZnJvbSB1c2VkIGZpeHR1cmVzCi0gICAgICAgICAgICBmb3Igc2NvcGUgaW4gcmV2ZXJz
ZWQoc2NvcGVzKToKLSAgICAgICAgICAgICAgICBpZiBzY29wZSBpbiB1c2VkX3Njb3BlczoKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlCi0KLSAgICByZXR1cm4gJ2Z1bmN0aW9uJwot
Ci0KLWRlZiBfaWR2YWwodmFsLCBhcmduYW1lLCBpZHgsIGlkZm4sIGNvbmZpZz1Ob25lKToKLSAg
ICBpZiBpZGZuOgotICAgICAgICBzID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBz
ID0gaWRmbih2YWwpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAjIFNl
ZSBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxNjkK
LSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgbXNnID0gIlJhaXNlZCB3
aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlkIG9mIHBhcmFtZXRlciAlcyBhdCBwb3NpdGlvbiAl
ZC4iICUgKGFyZ25hbWUsIGlkeCkKLSAgICAgICAgICAgIG1zZyArPSAnXG5VcGRhdGUgeW91ciBj
b2RlIGFzIHRoaXMgd2lsbCByYWlzZSBhbiBlcnJvciBpbiBweXRlc3QtNC4wLicKLSAgICAgICAg
ICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGlmIHM6
Ci0gICAgICAgICAgICByZXR1cm4gYXNjaWlfZXNjYXBlZChzKQotCi0gICAgaWYgY29uZmlnOgot
ICAgICAgICBob29rX2lkID0gY29uZmlnLmhvb2sucHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQo
Ci0gICAgICAgICAgICBjb25maWc9Y29uZmlnLCB2YWw9dmFsLCBhcmduYW1lPWFyZ25hbWUpCi0g
ICAgICAgIGlmIGhvb2tfaWQ6Ci0gICAgICAgICAgICByZXR1cm4gaG9va19pZAotCi0gICAgaWYg
aXNpbnN0YW5jZSh2YWwsIFNUUklOR19UWVBFUyk6Ci0gICAgICAgIHJldHVybiBhc2NpaV9lc2Nh
cGVkKHZhbCkKLSAgICBlbGlmIGlzaW5zdGFuY2UodmFsLCAoZmxvYXQsIGludCwgYm9vbCwgTm9u
ZVR5cGUpKToKLSAgICAgICAgcmV0dXJuIHN0cih2YWwpCi0gICAgZWxpZiBpc2luc3RhbmNlKHZh
bCwgUkVHRVhfVFlQRSk6Ci0gICAgICAgIHJldHVybiBhc2NpaV9lc2NhcGVkKHZhbC5wYXR0ZXJu
KQotICAgIGVsaWYgZW51bSBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZSh2YWwsIGVudW0uRW51
bSk6Ci0gICAgICAgIHJldHVybiBzdHIodmFsKQotICAgIGVsaWYgaXNjbGFzcyh2YWwpIGFuZCBo
YXNhdHRyKHZhbCwgJ19fbmFtZV9fJyk6Ci0gICAgICAgIHJldHVybiB2YWwuX19uYW1lX18KLSAg
ICByZXR1cm4gc3RyKGFyZ25hbWUpICsgc3RyKGlkeCkKLQotCi1kZWYgX2lkdmFsc2V0KGlkeCwg
cGFyYW1ldGVyc2V0LCBhcmduYW1lcywgaWRmbiwgaWRzLCBjb25maWc9Tm9uZSk6Ci0gICAgaWYg
cGFyYW1ldGVyc2V0LmlkIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gcGFyYW1ldGVyc2V0
LmlkCi0gICAgaWYgaWRzIGlzIE5vbmUgb3IgKGlkeCA+PSBsZW4oaWRzKSBvciBpZHNbaWR4XSBp
cyBOb25lKToKLSAgICAgICAgdGhpc19pZCA9IFtfaWR2YWwodmFsLCBhcmduYW1lLCBpZHgsIGlk
Zm4sIGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICBmb3IgdmFsLCBhcmduYW1lIGluIHppcChw
YXJhbWV0ZXJzZXQudmFsdWVzLCBhcmduYW1lcyldCi0gICAgICAgIHJldHVybiAiLSIuam9pbih0
aGlzX2lkKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBhc2NpaV9lc2NhcGVkKGlkc1tpZHhd
KQotCi0KLWRlZiBpZG1ha2VyKGFyZ25hbWVzLCBwYXJhbWV0ZXJzZXRzLCBpZGZuPU5vbmUsIGlk
cz1Ob25lLCBjb25maWc9Tm9uZSk6Ci0gICAgaWRzID0gW19pZHZhbHNldCh2YWxpbmRleCwgcGFy
YW1ldGVyc2V0LCBhcmduYW1lcywgaWRmbiwgaWRzLCBjb25maWcpCi0gICAgICAgICAgIGZvciB2
YWxpbmRleCwgcGFyYW1ldGVyc2V0IGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzZXRzKV0KLSAgICBp
ZiBsZW4oc2V0KGlkcykpICE9IGxlbihpZHMpOgotICAgICAgICAjIFRoZSBpZHMgYXJlIG5vdCB1
bmlxdWUKLSAgICAgICAgZHVwbGljYXRlcyA9IFt0ZXN0aWQgZm9yIHRlc3RpZCBpbiBpZHMgaWYg
aWRzLmNvdW50KHRlc3RpZCkgPiAxXQotICAgICAgICBjb3VudGVycyA9IGNvbGxlY3Rpb25zLmRl
ZmF1bHRkaWN0KGxhbWJkYTogMCkKLSAgICAgICAgZm9yIGluZGV4LCB0ZXN0aWQgaW4gZW51bWVy
YXRlKGlkcyk6Ci0gICAgICAgICAgICBpZiB0ZXN0aWQgaW4gZHVwbGljYXRlczoKLSAgICAgICAg
ICAgICAgICBpZHNbaW5kZXhdID0gdGVzdGlkICsgc3RyKGNvdW50ZXJzW3Rlc3RpZF0pCi0gICAg
ICAgICAgICAgICAgY291bnRlcnNbdGVzdGlkXSArPSAxCi0gICAgcmV0dXJuIGlkcwotCi0KLWRl
ZiBzaG93X2ZpeHR1cmVzX3Blcl90ZXN0KGNvbmZpZyk6Ci0gICAgZnJvbSBfcHl0ZXN0Lm1haW4g
aW1wb3J0IHdyYXBfc2Vzc2lvbgotICAgIHJldHVybiB3cmFwX3Nlc3Npb24oY29uZmlnLCBfc2hv
d19maXh0dXJlc19wZXJfdGVzdCkKLQotCi1kZWYgX3Nob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29u
ZmlnLCBzZXNzaW9uKToKLSAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcKLSAgICBzZXNzaW9uLnBl
cmZvcm1fY29sbGVjdCgpCi0gICAgY3VyZGlyID0gcHkucGF0aC5sb2NhbCgpCi0gICAgdHcgPSBf
cHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWluYWxfd3JpdGVyKGNvbmZpZykKLSAgICB2ZXJib3Nl
ID0gY29uZmlnLmdldHZhbHVlKCJ2ZXJib3NlIikKLQotICAgIGRlZiBnZXRfYmVzdF9yZWxwYXRo
KGZ1bmMpOgotICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihmdW5jLCBjdXJkaXIpCi0gICAgICAg
IHJldHVybiBjdXJkaXIuYmVzdHJlbHBhdGgobG9jKQotCi0gICAgZGVmIHdyaXRlX2ZpeHR1cmUo
Zml4dHVyZV9kZWYpOgotICAgICAgICBhcmduYW1lID0gZml4dHVyZV9kZWYuYXJnbmFtZQotICAg
ICAgICBpZiB2ZXJib3NlIDw9IDAgYW5kIGFyZ25hbWUuc3RhcnRzd2l0aCgiXyIpOgotICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHZlcmJvc2UgPiAwOgotICAgICAgICAgICAgYmVzdHJl
bCA9IGdldF9iZXN0X3JlbHBhdGgoZml4dHVyZV9kZWYuZnVuYykKLSAgICAgICAgICAgIGZ1bmNh
cmdzcGVjID0gInswfSAtLSB7MX0iLmZvcm1hdChhcmduYW1lLCBiZXN0cmVsKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgZnVuY2FyZ3NwZWMgPSBhcmduYW1lCi0gICAgICAgIHR3LmxpbmUo
ZnVuY2FyZ3NwZWMsIGdyZWVuPVRydWUpCi0gICAgICAgIGZpeHR1cmVfZG9jID0gZml4dHVyZV9k
ZWYuZnVuYy5fX2RvY19fCi0gICAgICAgIGlmIGZpeHR1cmVfZG9jOgotICAgICAgICAgICAgd3Jp
dGVfZG9jc3RyaW5nKHR3LCBmaXh0dXJlX2RvYykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHR3LmxpbmUoJyAgICBubyBkb2NzdHJpbmcgYXZhaWxhYmxlJywgcmVkPVRydWUpCi0KLSAgICBk
ZWYgd3JpdGVfaXRlbShpdGVtKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5mbyA9IGl0
ZW0uX2ZpeHR1cmVpbmZvCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAg
ICAgICMgZG9jdGVzdHMgaXRlbXMgaGF2ZSBubyBfZml4dHVyZWluZm8gYXR0cmlidXRlCi0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbm90IGluZm8ubmFtZTJmaXh0dXJlZGVmczoKLSAg
ICAgICAgICAgICMgdGhpcyB0ZXN0IGl0ZW0gZG9lcyBub3QgdXNlIGFueSBmaXh0dXJlcwotICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgIHR3LmxpbmUoKQotICAgICAgICB0dy5zZXAoJy0nLCAn
Zml4dHVyZXMgdXNlZCBieSB7MH0nLmZvcm1hdChpdGVtLm5hbWUpKQotICAgICAgICB0dy5zZXAo
Jy0nLCAnKHswfSknLmZvcm1hdChnZXRfYmVzdF9yZWxwYXRoKGl0ZW0uZnVuY3Rpb24pKSkKLSAg
ICAgICAgIyBkaWN0IGtleSBub3QgdXNlZCBpbiBsb29wIGJ1dCBuZWVkZWQgZm9yIHNvcnRpbmcK
LSAgICAgICAgZm9yIF8sIGZpeHR1cmVkZWZzIGluIHNvcnRlZChpbmZvLm5hbWUyZml4dHVyZWRl
ZnMuaXRlbXMoKSk6Ci0gICAgICAgICAgICBhc3NlcnQgZml4dHVyZWRlZnMgaXMgbm90IE5vbmUK
LSAgICAgICAgICAgIGlmIG5vdCBmaXh0dXJlZGVmczoKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgIyBsYXN0IGl0ZW0gaXMgZXhwZWN0ZWQgdG8gYmUgdGhlIG9uZSB1c2Vk
IGJ5IHRoZSB0ZXN0IGl0ZW0KLSAgICAgICAgICAgIHdyaXRlX2ZpeHR1cmUoZml4dHVyZWRlZnNb
LTFdKQotCi0gICAgZm9yIHNlc3Npb25faXRlbSBpbiBzZXNzaW9uLml0ZW1zOgotICAgICAgICB3
cml0ZV9pdGVtKHNlc3Npb25faXRlbSkKLQotCi1kZWYgc2hvd2ZpeHR1cmVzKGNvbmZpZyk6Ci0g
ICAgZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IHdyYXBfc2Vzc2lvbgotICAgIHJldHVybiB3cmFw
X3Nlc3Npb24oY29uZmlnLCBfc2hvd2ZpeHR1cmVzX21haW4pCi0KLQotZGVmIF9zaG93Zml4dHVy
ZXNfbWFpbihjb25maWcsIHNlc3Npb24pOgotICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwotICAg
IHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KCkKLSAgICBjdXJkaXIgPSBweS5wYXRoLmxvY2FsKCkK
LSAgICB0dyA9IF9weXRlc3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5hbF93cml0ZXIoY29uZmlnKQot
ICAgIHZlcmJvc2UgPSBjb25maWcuZ2V0dmFsdWUoInZlcmJvc2UiKQotCi0gICAgZm0gPSBzZXNz
aW9uLl9maXh0dXJlbWFuYWdlcgotCi0gICAgYXZhaWxhYmxlID0gW10KLSAgICBzZWVuID0gc2V0
KCkKLQotICAgIGZvciBhcmduYW1lLCBmaXh0dXJlZGVmcyBpbiBmbS5fYXJnMmZpeHR1cmVkZWZz
Lml0ZW1zKCk6Ci0gICAgICAgIGFzc2VydCBmaXh0dXJlZGVmcyBpcyBub3QgTm9uZQotICAgICAg
ICBpZiBub3QgZml4dHVyZWRlZnM6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmb3Ig
Zml4dHVyZWRlZiBpbiBmaXh0dXJlZGVmczoKLSAgICAgICAgICAgIGxvYyA9IGdldGxvY2F0aW9u
KGZpeHR1cmVkZWYuZnVuYywgY3VyZGlyKQotICAgICAgICAgICAgaWYgKGZpeHR1cmVkZWYuYXJn
bmFtZSwgbG9jKSBpbiBzZWVuOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAg
ICBzZWVuLmFkZCgoZml4dHVyZWRlZi5hcmduYW1lLCBsb2MpKQotICAgICAgICAgICAgYXZhaWxh
YmxlLmFwcGVuZCgobGVuKGZpeHR1cmVkZWYuYmFzZWlkKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpeHR1cmVkZWYuZnVuYy5fX21vZHVsZV9fLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VyZGlyLmJlc3RyZWxwYXRoKGxvYyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaXh0dXJlZGVmLmFyZ25hbWUsIGZpeHR1cmVkZWYpKQotCi0gICAgYXZhaWxh
YmxlLnNvcnQoKQotICAgIGN1cnJlbnRtb2R1bGUgPSBOb25lCi0gICAgZm9yIGJhc2VpZCwgbW9k
dWxlLCBiZXN0cmVsLCBhcmduYW1lLCBmaXh0dXJlZGVmIGluIGF2YWlsYWJsZToKLSAgICAgICAg
aWYgY3VycmVudG1vZHVsZSAhPSBtb2R1bGU6Ci0gICAgICAgICAgICBpZiBub3QgbW9kdWxlLnN0
YXJ0c3dpdGgoIl9weXRlc3QuIik6Ci0gICAgICAgICAgICAgICAgdHcubGluZSgpCi0gICAgICAg
ICAgICAgICAgdHcuc2VwKCItIiwgImZpeHR1cmVzIGRlZmluZWQgZnJvbSAlcyIgJSAobW9kdWxl
LCkpCi0gICAgICAgICAgICAgICAgY3VycmVudG1vZHVsZSA9IG1vZHVsZQotICAgICAgICBpZiB2
ZXJib3NlIDw9IDAgYW5kIGFyZ25hbWVbMF0gPT0gIl8iOgotICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgaWYgdmVyYm9zZSA+IDA6Ci0gICAgICAgICAgICBmdW5jYXJnc3BlYyA9ICIlcyAt
LSAlcyIgJSAoYXJnbmFtZSwgYmVzdHJlbCwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBm
dW5jYXJnc3BlYyA9IGFyZ25hbWUKLSAgICAgICAgdHcubGluZShmdW5jYXJnc3BlYywgZ3JlZW49
VHJ1ZSkKLSAgICAgICAgbG9jID0gZ2V0bG9jYXRpb24oZml4dHVyZWRlZi5mdW5jLCBjdXJkaXIp
Ci0gICAgICAgIGRvYyA9IGZpeHR1cmVkZWYuZnVuYy5fX2RvY19fIG9yICIiCi0gICAgICAgIGlm
IGRvYzoKLSAgICAgICAgICAgIHdyaXRlX2RvY3N0cmluZyh0dywgZG9jKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgdHcubGluZSgiICAgICVzOiBubyBkb2NzdHJpbmcgYXZhaWxhYmxlIiAl
IChsb2MsKSwKLSAgICAgICAgICAgICAgICAgICAgcmVkPVRydWUpCi0KLQotZGVmIHdyaXRlX2Rv
Y3N0cmluZyh0dywgZG9jKToKLSAgICBJTkRFTlQgPSAiICAgICIKLSAgICBkb2MgPSBkb2MucnN0
cmlwKCkKLSAgICBpZiAiXG4iIGluIGRvYzoKLSAgICAgICAgZmlyc3RsaW5lLCByZXN0ID0gZG9j
LnNwbGl0KCJcbiIsIDEpCi0gICAgZWxzZToKLSAgICAgICAgZmlyc3RsaW5lLCByZXN0ID0gZG9j
LCAiIgotCi0gICAgaWYgZmlyc3RsaW5lLnN0cmlwKCk6Ci0gICAgICAgIHR3LmxpbmUoSU5ERU5U
ICsgZmlyc3RsaW5lLnN0cmlwKCkpCi0KLSAgICBpZiByZXN0OgotICAgICAgICBmb3IgbGluZSBp
biBkZWRlbnQocmVzdCkuc3BsaXQoIlxuIik6Ci0gICAgICAgICAgICB0dy53cml0ZShJTkRFTlQg
KyBsaW5lICsgIlxuIikKLQotCi1jbGFzcyBGdW5jdGlvbihGdW5jdGlvbk1peGluLCBtYWluLkl0
ZW0sIGZpeHR1cmVzLkZ1bmNhcmduYW1lc0NvbXBhdEF0dHIpOgotICAgICIiIiBhIEZ1bmN0aW9u
IEl0ZW0gaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgYW5kIGV4ZWN1dGluZyBhCi0gICAg
UHl0aG9uIHRlc3QgZnVuY3Rpb24uCi0gICAgIiIiCi0gICAgX2dlbmlkID0gTm9uZQotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhcmVudCwgYXJncz1Ob25lLCBjb25maWc9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgY2FsbHNwZWM9Tm9uZSwgY2FsbG9iaj1OT1RTRVQsIGtleXdvcmRz
PU5vbmUsIHNlc3Npb249Tm9uZSwKLSAgICAgICAgICAgICAgICAgZml4dHVyZWluZm89Tm9uZSwg
b3JpZ2luYWxuYW1lPU5vbmUpOgotICAgICAgICBzdXBlcihGdW5jdGlvbiwgc2VsZikuX19pbml0
X18obmFtZSwgcGFyZW50LCBjb25maWc9Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2Vzc2lvbj1zZXNzaW9uKQotICAgICAgICBzZWxmLl9hcmdzID0gYXJn
cwotICAgICAgICBpZiBjYWxsb2JqIGlzIG5vdCBOT1RTRVQ6Ci0gICAgICAgICAgICBzZWxmLm9i
aiA9IGNhbGxvYmoKLQotICAgICAgICBzZWxmLmtleXdvcmRzLnVwZGF0ZShzZWxmLm9iai5fX2Rp
Y3RfXykKLSAgICAgICAgaWYgY2FsbHNwZWM6Ci0gICAgICAgICAgICBzZWxmLmNhbGxzcGVjID0g
Y2FsbHNwZWMKLSAgICAgICAgICAgICMgdGhpcyBpcyB0b3RhbCBob3N0aWxlIGFuZCBhIG1lc3MK
LSAgICAgICAgICAgICMga2V5d29yZHMgYXJlIGJyb2tlbiBieSBkZXNpZ24gYnkgbm93Ci0gICAg
ICAgICAgICAjIHRoaXMgd2lsbCBiZSByZWRlZW1lZCBsYXRlcgotICAgICAgICAgICAgZm9yIG1h
cmsgaW4gY2FsbHNwZWMubWFya3M6Ci0gICAgICAgICAgICAgICAgIyBmZWVsIGZyZWUgdG8gY3J5
LCB0aGlzIHdhcyBicm9rZW4gZm9yIHllYXJzIGJlZm9yZQotICAgICAgICAgICAgICAgICMgYW5k
IGtleXdvcmRzIGNhbnQgZml4IGl0IHBlciBkZXNpZ24KLSAgICAgICAgICAgICAgICBzZWxmLmtl
eXdvcmRzW21hcmsubmFtZV0gPSBtYXJrCi0gICAgICAgIGlmIGtleXdvcmRzOgotICAgICAgICAg
ICAgc2VsZi5rZXl3b3Jkcy51cGRhdGUoa2V5d29yZHMpCi0KLSAgICAgICAgaWYgZml4dHVyZWlu
Zm8gaXMgTm9uZToKLSAgICAgICAgICAgIGZpeHR1cmVpbmZvID0gc2VsZi5zZXNzaW9uLl9maXh0
dXJlbWFuYWdlci5nZXRmaXh0dXJlaW5mbygKLSAgICAgICAgICAgICAgICBzZWxmLnBhcmVudCwg
c2VsZi5vYmosIHNlbGYuY2xzLAotICAgICAgICAgICAgICAgIGZ1bmNhcmdzPW5vdCBzZWxmLl9p
c3lpZWxkZWRmdW5jdGlvbigpKQotICAgICAgICBzZWxmLl9maXh0dXJlaW5mbyA9IGZpeHR1cmVp
bmZvCi0gICAgICAgIHNlbGYuZml4dHVyZW5hbWVzID0gZml4dHVyZWluZm8ubmFtZXNfY2xvc3Vy
ZQotICAgICAgICBzZWxmLl9pbml0cmVxdWVzdCgpCi0KLSAgICAgICAgIzogb3JpZ2luYWwgZnVu
Y3Rpb24gbmFtZSwgd2l0aG91dCBhbnkgZGVjb3JhdGlvbnMgKGZvciBleGFtcGxlCi0gICAgICAg
ICM6IHBhcmFtZXRyaXphdGlvbiBhZGRzIGEgYGAiWy4uLl0iYGAgc3VmZml4IHRvIGZ1bmN0aW9u
IG5hbWVzKS4KLSAgICAgICAgIzoKLSAgICAgICAgIzogLi4gdmVyc2lvbmFkZGVkOjogMy4wCi0g
ICAgICAgIHNlbGYub3JpZ2luYWxuYW1lID0gb3JpZ2luYWxuYW1lCi0KLSAgICBkZWYgX2luaXRy
ZXF1ZXN0KHNlbGYpOgotICAgICAgICBzZWxmLmZ1bmNhcmdzID0ge30KLSAgICAgICAgaWYgc2Vs
Zi5faXN5aWVsZGVkZnVuY3Rpb24oKToKLSAgICAgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihz
ZWxmLCAiY2FsbHNwZWMiKSwgKAotICAgICAgICAgICAgICAgICJ5aWVsZGVkIGZ1bmN0aW9ucyAo
ZGVwcmVjYXRlZCkgY2Fubm90IGhhdmUgZnVuY2FyZ3MiKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgaWYgaGFzYXR0cihzZWxmLCAiY2FsbHNwZWMiKToKLSAgICAgICAgICAgICAgICBjYWxs
c3BlYyA9IHNlbGYuY2FsbHNwZWMKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGNhbGxzcGVj
LmZ1bmNhcmdzCi0gICAgICAgICAgICAgICAgc2VsZi5fZ2VuaWQgPSBjYWxsc3BlYy5pZAotICAg
ICAgICAgICAgICAgIGlmIGhhc2F0dHIoY2FsbHNwZWMsICJwYXJhbSIpOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLnBhcmFtID0gY2FsbHNwZWMucGFyYW0KLSAgICAgICAgc2VsZi5fcmVxdWVz
dCA9IGZpeHR1cmVzLkZpeHR1cmVSZXF1ZXN0KHNlbGYpCi0KLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgZnVuY3Rpb24oc2VsZik6Ci0gICAgICAgICJ1bmRlcmx5aW5nIHB5dGhvbiAnZnVuY3Rpb24n
IG9iamVjdCIKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5vYmosICdpbV9mdW5jJywgc2Vs
Zi5vYmopCi0KLSAgICBkZWYgX2dldG9iaihzZWxmKToKLSAgICAgICAgbmFtZSA9IHNlbGYubmFt
ZQotICAgICAgICBpID0gbmFtZS5maW5kKCJbIikgICMgcGFyYW1ldHJpemF0aW9uCi0gICAgICAg
IGlmIGkgIT0gLTE6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZVs6aV0KLSAgICAgICAgcmV0dXJu
IGdldGF0dHIoc2VsZi5wYXJlbnQub2JqLCBuYW1lKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVm
IF9weWZ1bmNpdGVtKHNlbGYpOgotICAgICAgICAiKGNvbXBhdG9ubHkpIGZvciBjb2RlIGV4cGVj
dGluZyBweXRlc3QtMi4yIHN0eWxlIHJlcXVlc3Qgb2JqZWN0cyIKLSAgICAgICAgcmV0dXJuIHNl
bGYKLQotICAgIGRlZiBfaXN5aWVsZGVkZnVuY3Rpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBn
ZXRhdHRyKHNlbGYsICJfYXJncyIsIE5vbmUpIGlzIG5vdCBOb25lCi0KLSAgICBkZWYgcnVudGVz
dChzZWxmKToKLSAgICAgICAgIiIiIGV4ZWN1dGUgdGhlIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlv
bi4gIiIiCi0gICAgICAgIHNlbGYuaWhvb2sucHl0ZXN0X3B5ZnVuY19jYWxsKHB5ZnVuY2l0ZW09
c2VsZikKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgc3VwZXIoRnVuY3Rpb24sIHNl
bGYpLnNldHVwKCkKLSAgICAgICAgZml4dHVyZXMuZmlsbGZpeHR1cmVzKHNlbGYpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5dGhvbl9hcGkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3B5dGhvbl9hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOTYwMjk1
YjM4MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcHl0aG9uX2FwaS5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDYxOSArMCwwIEBACi1pbXBvcnQgbWF0aAotaW1wb3J0IHN5
cwotCi1pbXBvcnQgcHkKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCB6aXAKLQotZnJvbSBfcHl0ZXN0
LmNvbXBhdCBpbXBvcnQgaXNjbGFzcwotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWls
Ci1pbXBvcnQgX3B5dGVzdC5fY29kZQotCi0KLWRlZiBfY21wX3JhaXNlc190eXBlX2Vycm9yKHNl
bGYsIG90aGVyKToKLSAgICAiIiJfX2NtcF9fIGltcGxlbWVudGF0aW9uIHdoaWNoIHJhaXNlcyBU
eXBlRXJyb3IuIFVzZWQKLSAgICBieSBBcHByb3ggYmFzZSBjbGFzc2VzIHRvIGltcGxlbWVudCBv
bmx5ID09IGFuZCAhPSBhbmQgcmFpc2UgYQotICAgIFR5cGVFcnJvciBmb3Igb3RoZXIgY29tcGFy
aXNvbnMuCi0KLSAgICBOZWVkZWQgaW4gUHl0aG9uIDIgb25seSwgUHl0aG9uIDMgYWxsIGl0IHRh
a2VzIGlzIG5vdCBpbXBsZW1lbnRpbmcgdGhlCi0gICAgb3RoZXIgb3BlcmF0b3JzIGF0IGFsbC4K
LSAgICAiIiIKLSAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICByYWlzZSBUeXBlRXJy
b3IoJ0NvbXBhcmlzb24gb3BlcmF0b3JzIG90aGVyIHRoYW4gPT0gYW5kICE9IG5vdCBzdXBwb3J0
ZWQgYnkgYXBwcm94IG9iamVjdHMnKQotCi0KLSMgYnVpbHRpbiBweXRlc3QuYXBwcm94IGhlbHBl
cgotCi0KLWNsYXNzIEFwcHJveEJhc2Uob2JqZWN0KToKLSAgICAiIiIKLSAgICBQcm92aWRlIHNo
YXJlZCB1dGlsaXRpZXMgZm9yIG1ha2luZyBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyBiZXR3ZWVu
IG51bWJlcnMKLSAgICBvciBzZXF1ZW5jZXMgb2YgbnVtYmVycy4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgcmVsPU5vbmUsIGFicz1Ob25lLCBuYW5fb2s9RmFs
c2UpOgotICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKLSAgICAgICAgc2VsZi5hYnMg
PSBhYnMKLSAgICAgICAgc2VsZi5yZWwgPSByZWwKLSAgICAgICAgc2VsZi5uYW5fb2sgPSBuYW5f
b2sKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcgotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBhY3R1YWwpOgotICAgICAgICByZXR1cm4g
YWxsKAotICAgICAgICAgICAgYSA9PSBzZWxmLl9hcHByb3hfc2NhbGFyKHgpCi0gICAgICAgICAg
ICBmb3IgYSwgeCBpbiBzZWxmLl95aWVsZF9jb21wYXJpc29ucyhhY3R1YWwpKQotCi0gICAgX19o
YXNoX18gPSBOb25lCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgIHJl
dHVybiBub3QgKGFjdHVhbCA9PSBzZWxmKQotCi0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9
PSAyOgotICAgICAgICBfX2NtcF9fID0gX2NtcF9yYWlzZXNfdHlwZV9lcnJvcgotCi0gICAgZGVm
IF9hcHByb3hfc2NhbGFyKHNlbGYsIHgpOgotICAgICAgICByZXR1cm4gQXBwcm94U2NhbGFyKHgs
IHJlbD1zZWxmLnJlbCwgYWJzPXNlbGYuYWJzLCBuYW5fb2s9c2VsZi5uYW5fb2spCi0KLSAgICBk
ZWYgX3lpZWxkX2NvbXBhcmlzb25zKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgICIiIgotICAgICAg
ICBZaWVsZCBhbGwgdGhlIHBhaXJzIG9mIG51bWJlcnMgdG8gYmUgY29tcGFyZWQuICBUaGlzIGlz
IHVzZWQgdG8KLSAgICAgICAgaW1wbGVtZW50IHRoZSBgX19lcV9fYCBtZXRob2QuCi0gICAgICAg
ICIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0KLQotY2xhc3MgQXBwcm94
TnVtcHkoQXBwcm94QmFzZSk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBhcHByb3hpbWF0ZSBjb21w
YXJpc29ucyBmb3IgbnVtcHkgYXJyYXlzLgotICAgICIiIgotCi0gICAgIyBUZWxsIG51bXB5IHRv
IHVzZSBvdXIgYF9fZXFfX2Agb3BlcmF0b3IgaW5zdGVhZCBvZiBpdHMuCi0gICAgX19hcnJheV9w
cmlvcml0eV9fID0gMTAwCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICMgSXQg
bWlnaHQgYmUgbmljZSB0byByZXdyaXRlIHRoaXMgZnVuY3Rpb24gdG8gYWNjb3VudCBmb3IgdGhl
Ci0gICAgICAgICMgc2hhcGUgb2YgdGhlIGFycmF5Li4uCi0gICAgICAgIHJldHVybiAiYXBwcm94
KHswIXJ9KSIuZm9ybWF0KGxpc3QoCi0gICAgICAgICAgICBzZWxmLl9hcHByb3hfc2NhbGFyKHgp
IGZvciB4IGluIHNlbGYuZXhwZWN0ZWQpKQotCi0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9
PSAyOgotICAgICAgICBfX2NtcF9fID0gX2NtcF9yYWlzZXNfdHlwZV9lcnJvcgotCi0gICAgZGVm
IF9fZXFfXyhzZWxmLCBhY3R1YWwpOgotICAgICAgICBpbXBvcnQgbnVtcHkgYXMgbnAKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBhY3R1YWwgPSBucC5hc2FycmF5KGFjdHVhbCkKLSAgICAg
ICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBj
b21wYXJlICd7MH0nIHRvIG51bXB5Lm5kYXJyYXkiLmZvcm1hdChhY3R1YWwpKQotCi0gICAgICAg
IGlmIGFjdHVhbC5zaGFwZSAhPSBzZWxmLmV4cGVjdGVkLnNoYXBlOgotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIEFwcHJveEJhc2UuX19lcV9fKHNlbGYsIGFjdHVh
bCkKLQotICAgIGRlZiBfeWllbGRfY29tcGFyaXNvbnMoc2VsZiwgYWN0dWFsKToKLSAgICAgICAg
aW1wb3J0IG51bXB5IGFzIG5wCi0KLSAgICAgICAgIyBXZSBjYW4gYmUgc3VyZSB0aGF0IGBhY3R1
YWxgIGlzIGEgbnVtcHkgYXJyYXksIGJlY2F1c2UgaXQncwotICAgICAgICAjIGNhc3RlZCBpbiBg
X19lcV9fYCBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIGBBcHByb3hCYXNlLl9fZXFfX2AsCi0gICAg
ICAgICMgd2hpY2ggaXMgdGhlIG9ubHkgbWV0aG9kIHRoYXQgY2FsbHMgdGhpcyBvbmUuCi0gICAg
ICAgIGZvciBpIGluIG5wLm5kaW5kZXgoc2VsZi5leHBlY3RlZC5zaGFwZSk6Ci0gICAgICAgICAg
ICB5aWVsZCBhY3R1YWxbaV0sIHNlbGYuZXhwZWN0ZWRbaV0KLQotCi1jbGFzcyBBcHByb3hNYXBw
aW5nKEFwcHJveEJhc2UpOgotICAgICIiIgotICAgIFBlcmZvcm0gYXBwcm94aW1hdGUgY29tcGFy
aXNvbnMgZm9yIG1hcHBpbmdzIHdoZXJlIHRoZSB2YWx1ZXMgYXJlIG51bWJlcnMKLSAgICAodGhl
IGtleXMgY2FuIGJlIGFueXRoaW5nKS4KLSAgICAiIiIKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICJhcHByb3goezAhcn0pIi5mb3JtYXQoZGljdCgKLSAgICAgICAg
ICAgIChrLCBzZWxmLl9hcHByb3hfc2NhbGFyKHYpKQotICAgICAgICAgICAgZm9yIGssIHYgaW4g
c2VsZi5leHBlY3RlZC5pdGVtcygpKSkKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToK
LSAgICAgICAgaWYgc2V0KGFjdHVhbC5rZXlzKCkpICE9IHNldChzZWxmLmV4cGVjdGVkLmtleXMo
KSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICByZXR1cm4gQXBwcm94QmFz
ZS5fX2VxX18oc2VsZiwgYWN0dWFsKQotCi0gICAgZGVmIF95aWVsZF9jb21wYXJpc29ucyhzZWxm
LCBhY3R1YWwpOgotICAgICAgICBmb3IgayBpbiBzZWxmLmV4cGVjdGVkLmtleXMoKToKLSAgICAg
ICAgICAgIHlpZWxkIGFjdHVhbFtrXSwgc2VsZi5leHBlY3RlZFtrXQotCi0KLWNsYXNzIEFwcHJv
eFNlcXVlbmNlKEFwcHJveEJhc2UpOgotICAgICIiIgotICAgIFBlcmZvcm0gYXBwcm94aW1hdGUg
Y29tcGFyaXNvbnMgZm9yIHNlcXVlbmNlcyBvZiBudW1iZXJzLgotICAgICIiIgotCi0gICAgIyBU
ZWxsIG51bXB5IHRvIHVzZSBvdXIgYF9fZXFfX2Agb3BlcmF0b3IgaW5zdGVhZCBvZiBpdHMuCi0g
ICAgX19hcnJheV9wcmlvcml0eV9fID0gMTAwCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0g
ICAgICAgIHNlcV90eXBlID0gdHlwZShzZWxmLmV4cGVjdGVkKQotICAgICAgICBpZiBzZXFfdHlw
ZSBub3QgaW4gKHR1cGxlLCBsaXN0LCBzZXQpOgotICAgICAgICAgICAgc2VxX3R5cGUgPSBsaXN0
Ci0gICAgICAgIHJldHVybiAiYXBwcm94KHswIXJ9KSIuZm9ybWF0KHNlcV90eXBlKAotICAgICAg
ICAgICAgc2VsZi5fYXBwcm94X3NjYWxhcih4KSBmb3IgeCBpbiBzZWxmLmV4cGVjdGVkKSkKLQot
ICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToKLSAgICAgICAgaWYgbGVuKGFjdHVhbCkgIT0g
bGVuKHNlbGYuZXhwZWN0ZWQpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJl
dHVybiBBcHByb3hCYXNlLl9fZXFfXyhzZWxmLCBhY3R1YWwpCi0KLSAgICBkZWYgX3lpZWxkX2Nv
bXBhcmlzb25zKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgIHJldHVybiB6aXAoYWN0dWFsLCBzZWxm
LmV4cGVjdGVkKQotCi0KLWNsYXNzIEFwcHJveFNjYWxhcihBcHByb3hCYXNlKToKLSAgICAiIiIK
LSAgICBQZXJmb3JtIGFwcHJveGltYXRlIGNvbXBhcmlzb25zIGZvciBzaW5nbGUgbnVtYmVycyBv
bmx5LgotICAgICIiIgotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAiIiIKLSAg
ICAgICAgUmV0dXJuIGEgc3RyaW5nIGNvbW11bmljYXRpbmcgYm90aCB0aGUgZXhwZWN0ZWQgdmFs
dWUgYW5kIHRoZSB0b2xlcmFuY2UKLSAgICAgICAgZm9yIHRoZSBjb21wYXJpc29uIGJlaW5nIG1h
ZGUsIGUuZy4gJzEuMCArLSAxZS02Jy4gIFVzZSB0aGUgdW5pY29kZQotICAgICAgICBwbHVzL21p
bnVzIHN5bWJvbCBpZiB0aGlzIGlzIHB5dGhvbjMgKGl0J3MgdG9vIGhhcmQgdG8gZ2V0IHJpZ2h0
IGZvcgotICAgICAgICBweXRob24yKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFu
Y2Uoc2VsZi5leHBlY3RlZCwgY29tcGxleCk6Ci0gICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYu
ZXhwZWN0ZWQpCi0KLSAgICAgICAgIyBJbmZpbml0aWVzIGFyZW4ndCBjb21wYXJlZCB1c2luZyB0
b2xlcmFuY2VzLCBzbyBkb24ndCBzaG93IGEKLSAgICAgICAgIyB0b2xlcmFuY2UuCi0gICAgICAg
IGlmIG1hdGguaXNpbmYoc2VsZi5leHBlY3RlZCk6Ci0gICAgICAgICAgICByZXR1cm4gc3RyKHNl
bGYuZXhwZWN0ZWQpCi0KLSAgICAgICAgIyBJZiBhIHNlbnNpYmxlIHRvbGVyYW5jZSBjYW4ndCBi
ZSBjYWxjdWxhdGVkLCBzZWxmLnRvbGVyYW5jZSB3aWxsCi0gICAgICAgICMgcmFpc2UgYSBWYWx1
ZUVycm9yLiAgSW4gdGhpcyBjYXNlLCBkaXNwbGF5ICc/Pz8nLgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB2ZXR0ZWRfdG9sZXJhbmNlID0gJ3s6LjFlfScuZm9ybWF0KHNlbGYudG9sZXJhbmNl
KQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHZldHRlZF90b2xlcmFu
Y2UgPSAnPz8/JwotCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMjoKLSAgICAg
ICAgICAgIHJldHVybiAnezB9ICstIHsxfScuZm9ybWF0KHNlbGYuZXhwZWN0ZWQsIHZldHRlZF90
b2xlcmFuY2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdSd7MH0gXHUwMGIx
IHsxfScuZm9ybWF0KHNlbGYuZXhwZWN0ZWQsIHZldHRlZF90b2xlcmFuY2UpCi0KLSAgICBkZWYg
X19lcV9fKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gdHJ1ZSBp
ZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGV4cGVjdGVkIHZhbHVlIHdpdGhpbgot
ICAgICAgICB0aGUgcHJlLXNwZWNpZmllZCB0b2xlcmFuY2UuCi0gICAgICAgICIiIgotCi0gICAg
ICAgICMgU2hvcnQtY2lyY3VpdCBleGFjdCBlcXVhbGl0eS4KLSAgICAgICAgaWYgYWN0dWFsID09
IHNlbGYuZXhwZWN0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICMgQWxs
b3cgdGhlIHVzZXIgdG8gY29udHJvbCB3aGV0aGVyIE5hTnMgYXJlIGNvbnNpZGVyZWQgZXF1YWwg
dG8gZWFjaAotICAgICAgICAjIG90aGVyIG9yIG5vdC4gIFRoZSBhYnMoKSBjYWxscyBhcmUgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCBjb21wbGV4Ci0gICAgICAgICMgbnVtYmVycy4KLSAgICAgICAg
aWYgbWF0aC5pc25hbihhYnMoc2VsZi5leHBlY3RlZCkpOgotICAgICAgICAgICAgcmV0dXJuIHNl
bGYubmFuX29rIGFuZCBtYXRoLmlzbmFuKGFicyhhY3R1YWwpKQotCi0gICAgICAgICMgSW5maW5p
dHkgc2hvdWxkbid0IGJlIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYW55dGhpbmcgYnV0IGl0c2Vs
ZiwgYnV0Ci0gICAgICAgICMgaWYgdGhlcmUncyBhIHJlbGF0aXZlIHRvbGVyYW5jZSwgaXQgd2ls
bCBiZSBpbmZpbml0ZSBhbmQgaW5maW5pdHkKLSAgICAgICAgIyB3aWxsIHNlZW0gYXBwcm94aW1h
dGVseSBlcXVhbCB0byBldmVyeXRoaW5nLiAgVGhlIGVxdWFsLXRvLWl0c2VsZgotICAgICAgICAj
IGNhc2Ugd291bGQgaGF2ZSBiZWVuIHNob3J0IGNpcmN1aXRlZCBhYm92ZSwgc28gaGVyZSB3ZSBj
YW4ganVzdAotICAgICAgICAjIHJldHVybiBmYWxzZSBpZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMg
aW5maW5pdGUuICBUaGUgYWJzKCkgY2FsbCBpcwotICAgICAgICAjIGZvciBjb21wYXRpYmlsaXR5
IHdpdGggY29tcGxleCBudW1iZXJzLgotICAgICAgICBpZiBtYXRoLmlzaW5mKGFicyhzZWxmLmV4
cGVjdGVkKSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAjIFJldHVybiB0
cnVlIGlmIHRoZSB0d28gbnVtYmVycyBhcmUgd2l0aGluIHRoZSB0b2xlcmFuY2UuCi0gICAgICAg
IHJldHVybiBhYnMoc2VsZi5leHBlY3RlZCAtIGFjdHVhbCkgPD0gc2VsZi50b2xlcmFuY2UKLQot
ICAgIF9faGFzaF9fID0gTm9uZQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHRvbGVyYW5jZShz
ZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUgdG9sZXJhbmNlIGZvciB0aGUg
Y29tcGFyaXNvbi4gIFRoaXMgY291bGQgYmUgZWl0aGVyIGFuCi0gICAgICAgIGFic29sdXRlIHRv
bGVyYW5jZSBvciBhIHJlbGF0aXZlIHRvbGVyYW5jZSwgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIHVz
ZXIKLSAgICAgICAgc3BlY2lmaWVkIG9yIHdoaWNoIHdvdWxkIGJlIGxhcmdlci4KLSAgICAgICAg
IiIiCi0gICAgICAgIGRlZiBzZXRfZGVmYXVsdCh4LCBkZWZhdWx0KToKLSAgICAgICAgICAgIHJl
dHVybiB4IGlmIHggaXMgbm90IE5vbmUgZWxzZSBkZWZhdWx0Ci0KLSAgICAgICAgIyBGaWd1cmUg
b3V0IHdoYXQgdGhlIGFic29sdXRlIHRvbGVyYW5jZSBzaG91bGQgYmUuICBgYHNlbGYuYWJzYGAg
aXMKLSAgICAgICAgIyBlaXRoZXIgTm9uZSBvciBhIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgdXNl
ci4KLSAgICAgICAgYWJzb2x1dGVfdG9sZXJhbmNlID0gc2V0X2RlZmF1bHQoc2VsZi5hYnMsIDFl
LTEyKQotCi0gICAgICAgIGlmIGFic29sdXRlX3RvbGVyYW5jZSA8IDA6Ci0gICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJhYnNvbHV0ZSB0b2xlcmFuY2UgY2FuJ3QgYmUgbmVnYXRpdmU6IHt9
Ii5mb3JtYXQoYWJzb2x1dGVfdG9sZXJhbmNlKSkKLSAgICAgICAgaWYgbWF0aC5pc25hbihhYnNv
bHV0ZV90b2xlcmFuY2UpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWJzb2x1dGUg
dG9sZXJhbmNlIGNhbid0IGJlIE5hTi4iKQotCi0gICAgICAgICMgSWYgdGhlIHVzZXIgc3BlY2lm
aWVkIGFuIGFic29sdXRlIHRvbGVyYW5jZSBidXQgbm90IGEgcmVsYXRpdmUgb25lLAotICAgICAg
ICAjIGp1c3QgcmV0dXJuIHRoZSBhYnNvbHV0ZSB0b2xlcmFuY2UuCi0gICAgICAgIGlmIHNlbGYu
cmVsIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLmFicyBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gYWJzb2x1dGVfdG9sZXJhbmNlCi0KLSAgICAgICAgIyBGaWd1cmUg
b3V0IHdoYXQgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZSBzaG91bGQgYmUuICBgYHNlbGYucmVsYGAg
aXMKLSAgICAgICAgIyBlaXRoZXIgTm9uZSBvciBhIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgdXNl
ci4gIFRoaXMgaXMgZG9uZSBhZnRlcgotICAgICAgICAjIHdlJ3ZlIG1hZGUgc3VyZSB0aGUgdXNl
ciBkaWRuJ3QgYXNrIGZvciBhbiBhYnNvbHV0ZSB0b2xlcmFuY2Ugb25seSwKLSAgICAgICAgIyBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmFpc2UgZXJyb3JzIGFib3V0IHRoZSByZWxhdGl2ZSB0
b2xlcmFuY2UgaWYKLSAgICAgICAgIyB3ZSBhcmVuJ3QgZXZlbiBnb2luZyB0byB1c2UgaXQuCi0g
ICAgICAgIHJlbGF0aXZlX3RvbGVyYW5jZSA9IHNldF9kZWZhdWx0KHNlbGYucmVsLCAxZS02KSAq
IGFicyhzZWxmLmV4cGVjdGVkKQotCi0gICAgICAgIGlmIHJlbGF0aXZlX3RvbGVyYW5jZSA8IDA6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWxhdGl2ZSB0b2xlcmFuY2UgY2FuJ3Qg
YmUgbmVnYXRpdmU6IHt9Ii5mb3JtYXQoYWJzb2x1dGVfdG9sZXJhbmNlKSkKLSAgICAgICAgaWYg
bWF0aC5pc25hbihyZWxhdGl2ZV90b2xlcmFuY2UpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigicmVsYXRpdmUgdG9sZXJhbmNlIGNhbid0IGJlIE5hTi4iKQotCi0gICAgICAgICMgUmV0
dXJuIHRoZSBsYXJnZXIgb2YgdGhlIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSB0b2xlcmFuY2VzLgot
ICAgICAgICByZXR1cm4gbWF4KHJlbGF0aXZlX3RvbGVyYW5jZSwgYWJzb2x1dGVfdG9sZXJhbmNl
KQotCi0KLWRlZiBhcHByb3goZXhwZWN0ZWQsIHJlbD1Ob25lLCBhYnM9Tm9uZSwgbmFuX29rPUZh
bHNlKToKLSAgICAiIiIKLSAgICBBc3NlcnQgdGhhdCB0d28gbnVtYmVycyAob3IgdHdvIHNldHMg
b2YgbnVtYmVycykgYXJlIGVxdWFsIHRvIGVhY2ggb3RoZXIKLSAgICB3aXRoaW4gc29tZSB0b2xl
cmFuY2UuCi0KLSAgICBEdWUgdG8gdGhlIGBpbnRyaWNhY2llcyBvZiBmbG9hdGluZy1wb2ludCBh
cml0aG1ldGljYF9fLCBudW1iZXJzIHRoYXQgd2UKLSAgICB3b3VsZCBpbnR1aXRpdmVseSBleHBl
Y3QgdG8gYmUgZXF1YWwgYXJlIG5vdCBhbHdheXMgc286OgotCi0gICAgICAgID4+PiAwLjEgKyAw
LjIgPT0gMC4zCi0gICAgICAgIEZhbHNlCi0KLSAgICBfXyBodHRwczovL2RvY3MucHl0aG9uLm9y
Zy8zL3R1dG9yaWFsL2Zsb2F0aW5ncG9pbnQuaHRtbAotCi0gICAgVGhpcyBwcm9ibGVtIGlzIGNv
bW1vbmx5IGVuY291bnRlcmVkIHdoZW4gd3JpdGluZyB0ZXN0cywgZS5nLiB3aGVuIG1ha2luZwot
ICAgIHN1cmUgdGhhdCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYXJlIHdoYXQgeW91IGV4cGVjdCB0
aGVtIHRvIGJlLiAgT25lIHdheSB0bwotICAgIGRlYWwgd2l0aCB0aGlzIHByb2JsZW0gaXMgdG8g
YXNzZXJ0IHRoYXQgdHdvIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXJlCi0gICAgZXF1YWwgdG8g
d2l0aGluIHNvbWUgYXBwcm9wcmlhdGUgdG9sZXJhbmNlOjoKLQotICAgICAgICA+Pj4gYWJzKCgw
LjEgKyAwLjIpIC0gMC4zKSA8IDFlLTYKLSAgICAgICAgVHJ1ZQotCi0gICAgSG93ZXZlciwgY29t
cGFyaXNvbnMgbGlrZSB0aGlzIGFyZSB0ZWRpb3VzIHRvIHdyaXRlIGFuZCBkaWZmaWN1bHQgdG8K
LSAgICB1bmRlcnN0YW5kLiAgRnVydGhlcm1vcmUsIGFic29sdXRlIGNvbXBhcmlzb25zIGxpa2Ug
dGhlIG9uZSBhYm92ZSBhcmUKLSAgICB1c3VhbGx5IGRpc2NvdXJhZ2VkIGJlY2F1c2UgdGhlcmUn
cyBubyB0b2xlcmFuY2UgdGhhdCB3b3JrcyB3ZWxsIGZvciBhbGwKLSAgICBzaXR1YXRpb25zLiAg
YGAxZS02YGAgaXMgZ29vZCBmb3IgbnVtYmVycyBhcm91bmQgYGAxYGAsIGJ1dCB0b28gc21hbGwg
Zm9yCi0gICAgdmVyeSBiaWcgbnVtYmVycyBhbmQgdG9vIGJpZyBmb3IgdmVyeSBzbWFsbCBvbmVz
LiAgSXQncyBiZXR0ZXIgdG8gZXhwcmVzcwotICAgIHRoZSB0b2xlcmFuY2UgYXMgYSBmcmFjdGlv
biBvZiB0aGUgZXhwZWN0ZWQgdmFsdWUsIGJ1dCByZWxhdGl2ZSBjb21wYXJpc29ucwotICAgIGxp
a2UgdGhhdCBhcmUgZXZlbiBtb3JlIGRpZmZpY3VsdCB0byB3cml0ZSBjb3JyZWN0bHkgYW5kIGNv
bmNpc2VseS4KLQotICAgIFRoZSBgYGFwcHJveGBgIGNsYXNzIHBlcmZvcm1zIGZsb2F0aW5nLXBv
aW50IGNvbXBhcmlzb25zIHVzaW5nIGEgc3ludGF4Ci0gICAgdGhhdCdzIGFzIGludHVpdGl2ZSBh
cyBwb3NzaWJsZTo6Ci0KLSAgICAgICAgPj4+IGZyb20gcHl0ZXN0IGltcG9ydCBhcHByb3gKLSAg
ICAgICAgPj4+IDAuMSArIDAuMiA9PSBhcHByb3goMC4zKQotICAgICAgICBUcnVlCi0KLSAgICBU
aGUgc2FtZSBzeW50YXggYWxzbyB3b3JrcyBmb3Igc2VxdWVuY2VzIG9mIG51bWJlcnM6OgotCi0g
ICAgICAgID4+PiAoMC4xICsgMC4yLCAwLjIgKyAwLjQpID09IGFwcHJveCgoMC4zLCAwLjYpKQot
ICAgICAgICBUcnVlCi0KLSAgICBEaWN0aW9uYXJ5ICp2YWx1ZXMqOjoKLQotICAgICAgICA+Pj4g
eydhJzogMC4xICsgMC4yLCAnYic6IDAuMiArIDAuNH0gPT0gYXBwcm94KHsnYSc6IDAuMywgJ2In
OiAwLjZ9KQotICAgICAgICBUcnVlCi0KLSAgICBBbmQgYGBudW1weWBgIGFycmF5czo6Ci0KLSAg
ICAgICAgPj4+IGltcG9ydCBudW1weSBhcyBucCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRvY3Rlc3Q6ICtTS0lQCi0gICAgICAgID4+
PiBucC5hcnJheShbMC4xLCAwLjJdKSArIG5wLmFycmF5KFswLjIsIDAuNF0pID09IGFwcHJveChu
cC5hcnJheShbMC4zLCAwLjZdKSkgIyBkb2N0ZXN0OiArU0tJUAotICAgICAgICBUcnVlCi0KLSAg
ICBCeSBkZWZhdWx0LCBgYGFwcHJveGBgIGNvbnNpZGVycyBudW1iZXJzIHdpdGhpbiBhIHJlbGF0
aXZlIHRvbGVyYW5jZSBvZgotICAgIGBgMWUtNmBgIChpLmUuIG9uZSBwYXJ0IGluIGEgbWlsbGlv
bikgb2YgaXRzIGV4cGVjdGVkIHZhbHVlIHRvIGJlIGVxdWFsLgotICAgIFRoaXMgdHJlYXRtZW50
IHdvdWxkIGxlYWQgdG8gc3VycHJpc2luZyByZXN1bHRzIGlmIHRoZSBleHBlY3RlZCB2YWx1ZSB3
YXMKLSAgICBgYDAuMGBgLCBiZWNhdXNlIG5vdGhpbmcgYnV0IGBgMC4wYGAgaXRzZWxmIGlzIHJl
bGF0aXZlbHkgY2xvc2UgdG8gYGAwLjBgYC4KLSAgICBUbyBoYW5kbGUgdGhpcyBjYXNlIGxlc3Mg
c3VycHJpc2luZ2x5LCBgYGFwcHJveGBgIGFsc28gY29uc2lkZXJzIG51bWJlcnMKLSAgICB3aXRo
aW4gYW4gYWJzb2x1dGUgdG9sZXJhbmNlIG9mIGBgMWUtMTJgYCBvZiBpdHMgZXhwZWN0ZWQgdmFs
dWUgdG8gYmUKLSAgICBlcXVhbC4gIEluZmluaXR5IGFuZCBOYU4gYXJlIHNwZWNpYWwgY2FzZXMu
ICBJbmZpbml0eSBpcyBvbmx5IGNvbnNpZGVyZWQKLSAgICBlcXVhbCB0byBpdHNlbGYsIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZS4gIE5hTiBpcyBub3QKLSAgICBjb25zaWRl
cmVkIGVxdWFsIHRvIGFueXRoaW5nIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgY2FuIG1ha2UgaXQgYmUg
ZXF1YWwgdG8KLSAgICBpdHNlbGYgYnkgc2V0dGluZyB0aGUgYGBuYW5fb2tgYCBhcmd1bWVudCB0
byBUcnVlLiAgKFRoaXMgaXMgbWVhbnQgdG8KLSAgICBmYWNpbGl0YXRlIGNvbXBhcmluZyBhcnJh
eXMgdGhhdCB1c2UgTmFOIHRvIG1lYW4gIm5vIGRhdGEiLikKLQotICAgIEJvdGggdGhlIHJlbGF0
aXZlIGFuZCBhYnNvbHV0ZSB0b2xlcmFuY2VzIGNhbiBiZSBjaGFuZ2VkIGJ5IHBhc3NpbmcKLSAg
ICBhcmd1bWVudHMgdG8gdGhlIGBgYXBwcm94YGAgY29uc3RydWN0b3I6OgotCi0gICAgICAgID4+
PiAxLjAwMDEgPT0gYXBwcm94KDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiAxLjAwMDEg
PT0gYXBwcm94KDEsIHJlbD0xZS0zKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiAxLjAwMDEg
PT0gYXBwcm94KDEsIGFicz0xZS0zKQotICAgICAgICBUcnVlCi0KLSAgICBJZiB5b3Ugc3BlY2lm
eSBgYGFic2BgIGJ1dCBub3QgYGByZWxgYCwgdGhlIGNvbXBhcmlzb24gd2lsbCBub3QgY29uc2lk
ZXIKLSAgICB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIGF0IGFsbC4gIEluIG90aGVyIHdvcmRzLCB0
d28gbnVtYmVycyB0aGF0IGFyZSB3aXRoaW4KLSAgICB0aGUgZGVmYXVsdCByZWxhdGl2ZSB0b2xl
cmFuY2Ugb2YgYGAxZS02YGAgd2lsbCBzdGlsbCBiZSBjb25zaWRlcmVkIHVuZXF1YWwKLSAgICBp
ZiB0aGV5IGV4Y2VlZCB0aGUgc3BlY2lmaWVkIGFic29sdXRlIHRvbGVyYW5jZS4gIElmIHlvdSBz
cGVjaWZ5IGJvdGgKLSAgICBgYGFic2BgIGFuZCBgYHJlbGBgLCB0aGUgbnVtYmVycyB3aWxsIGJl
IGNvbnNpZGVyZWQgZXF1YWwgaWYgZWl0aGVyCi0gICAgdG9sZXJhbmNlIGlzIG1ldDo6Ci0KLSAg
ICAgICAgPj4+IDEgKyAxZS04ID09IGFwcHJveCgxKQotICAgICAgICBUcnVlCi0gICAgICAgID4+
PiAxICsgMWUtOCA9PSBhcHByb3goMSwgYWJzPTFlLTEyKQotICAgICAgICBGYWxzZQotICAgICAg
ICA+Pj4gMSArIDFlLTggPT0gYXBwcm94KDEsIHJlbD0xZS02LCBhYnM9MWUtMTIpCi0gICAgICAg
IFRydWUKLQotICAgIElmIHlvdSdyZSB0aGlua2luZyBhYm91dCB1c2luZyBgYGFwcHJveGBgLCB0
aGVuIHlvdSBtaWdodCB3YW50IHRvIGtub3cgaG93Ci0gICAgaXQgY29tcGFyZXMgdG8gb3RoZXIg
Z29vZCB3YXlzIG9mIGNvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzLiAgQWxsIG9mCi0g
ICAgdGhlc2UgYWxnb3JpdGhtcyBhcmUgYmFzZWQgb24gcmVsYXRpdmUgYW5kIGFic29sdXRlIHRv
bGVyYW5jZXMgYW5kIHNob3VsZAotICAgIGFncmVlIGZvciB0aGUgbW9zdCBwYXJ0LCBidXQgdGhl
eSBkbyBoYXZlIG1lYW5pbmdmdWwgZGlmZmVyZW5jZXM6Ci0KLSAgICAtIGBgbWF0aC5pc2Nsb3Nl
KGEsIGIsIHJlbF90b2w9MWUtOSwgYWJzX3RvbD0wLjApYGA6ICBUcnVlIGlmIHRoZSByZWxhdGl2
ZQotICAgICAgdG9sZXJhbmNlIGlzIG1ldCB3LnIudC4gZWl0aGVyIGBgYWBgIG9yIGBgYmBgIG9y
IGlmIHRoZSBhYnNvbHV0ZQotICAgICAgdG9sZXJhbmNlIGlzIG1ldC4gIEJlY2F1c2UgdGhlIHJl
bGF0aXZlIHRvbGVyYW5jZSBpcyBjYWxjdWxhdGVkIHcuci50LgotICAgICAgYm90aCBgYGFgYCBh
bmQgYGBiYGAsIHRoaXMgdGVzdCBpcyBzeW1tZXRyaWMgKGkuZS4gIG5laXRoZXIgYGBhYGAgbm9y
Ci0gICAgICBgYGJgYCBpcyBhICJyZWZlcmVuY2UgdmFsdWUiKS4gIFlvdSBoYXZlIHRvIHNwZWNp
ZnkgYW4gYWJzb2x1dGUgdG9sZXJhbmNlCi0gICAgICBpZiB5b3Ugd2FudCB0byBjb21wYXJlIHRv
IGBgMC4wYGAgYmVjYXVzZSB0aGVyZSBpcyBubyB0b2xlcmFuY2UgYnkKLSAgICAgIGRlZmF1bHQu
ICBPbmx5IGF2YWlsYWJsZSBpbiBweXRob24+PTMuNS4gIGBNb3JlIGluZm9ybWF0aW9uLi4uYF9f
Ci0KLSAgICAgIF9fIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9tYXRoLmh0bWwj
bWF0aC5pc2Nsb3NlCi0KLSAgICAtIGBgbnVtcHkuaXNjbG9zZShhLCBiLCBydG9sPTFlLTUsIGF0
b2w9MWUtOClgYDogVHJ1ZSBpZiB0aGUgZGlmZmVyZW5jZQotICAgICAgYmV0d2VlbiBgYGFgYCBh
bmQgYGBiYGAgaXMgbGVzcyB0aGF0IHRoZSBzdW0gb2YgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZQot
ICAgICAgdy5yLnQuIGBgYmBgIGFuZCB0aGUgYWJzb2x1dGUgdG9sZXJhbmNlLiAgQmVjYXVzZSB0
aGUgcmVsYXRpdmUgdG9sZXJhbmNlCi0gICAgICBpcyBvbmx5IGNhbGN1bGF0ZWQgdy5yLnQuIGBg
YmBgLCB0aGlzIHRlc3QgaXMgYXN5bW1ldHJpYyBhbmQgeW91IGNhbgotICAgICAgdGhpbmsgb2Yg
YGBiYGAgYXMgdGhlIHJlZmVyZW5jZSB2YWx1ZS4gIFN1cHBvcnQgZm9yIGNvbXBhcmluZyBzZXF1
ZW5jZXMKLSAgICAgIGlzIHByb3ZpZGVkIGJ5IGBgbnVtcHkuYWxsY2xvc2VgYC4gIGBNb3JlIGlu
Zm9ybWF0aW9uLi4uYF9fCi0KLSAgICAgIF9fIGh0dHA6Ly9kb2NzLnNjaXB5Lm9yZy9kb2MvbnVt
cHktMS4xMC4wL3JlZmVyZW5jZS9nZW5lcmF0ZWQvbnVtcHkuaXNjbG9zZS5odG1sCi0KLSAgICAt
IGBgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0QWxtb3N0RXF1YWwoYSwgYilgYDogVHJ1ZSBpZiBg
YGFgYCBhbmQgYGBiYGAKLSAgICAgIGFyZSB3aXRoaW4gYW4gYWJzb2x1dGUgdG9sZXJhbmNlIG9m
IGBgMWUtN2BgLiAgTm8gcmVsYXRpdmUgdG9sZXJhbmNlIGlzCi0gICAgICBjb25zaWRlcmVkIGFu
ZCB0aGUgYWJzb2x1dGUgdG9sZXJhbmNlIGNhbm5vdCBiZSBjaGFuZ2VkLCBzbyB0aGlzIGZ1bmN0
aW9uCi0gICAgICBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIHZlcnkgbGFyZ2Ugb3IgdmVyeSBzbWFs
bCBudW1iZXJzLiAgQWxzbywgaXQncyBvbmx5Ci0gICAgICBhdmFpbGFibGUgaW4gc3ViY2xhc3Nl
cyBvZiBgYHVuaXR0ZXN0LlRlc3RDYXNlYGAgYW5kIGl0J3MgdWdseSBiZWNhdXNlIGl0Ci0gICAg
ICBkb2Vzbid0IGZvbGxvdyBQRVA4LiAgYE1vcmUgaW5mb3JtYXRpb24uLi5gX18KLQotICAgICAg
X18gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWwjdW5pdHRl
c3QuVGVzdENhc2UuYXNzZXJ0QWxtb3N0RXF1YWwKLQotICAgIC0gYGBhID09IHB5dGVzdC5hcHBy
b3goYiwgcmVsPTFlLTYsIGFicz0xZS0xMilgYDogVHJ1ZSBpZiB0aGUgcmVsYXRpdmUKLSAgICAg
IHRvbGVyYW5jZSBpcyBtZXQgdy5yLnQuIGBgYmBgIG9yIGlmIHRoZSBhYnNvbHV0ZSB0b2xlcmFu
Y2UgaXMgbWV0LgotICAgICAgQmVjYXVzZSB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIGlzIG9ubHkg
Y2FsY3VsYXRlZCB3LnIudC4gYGBiYGAsIHRoaXMgdGVzdAotICAgICAgaXMgYXN5bW1ldHJpYyBh
bmQgeW91IGNhbiB0aGluayBvZiBgYGJgYCBhcyB0aGUgcmVmZXJlbmNlIHZhbHVlLiAgSW4gdGhl
Ci0gICAgICBzcGVjaWFsIGNhc2UgdGhhdCB5b3UgZXhwbGljaXRseSBzcGVjaWZ5IGFuIGFic29s
dXRlIHRvbGVyYW5jZSBidXQgbm90IGEKLSAgICAgIHJlbGF0aXZlIHRvbGVyYW5jZSwgb25seSB0
aGUgYWJzb2x1dGUgdG9sZXJhbmNlIGlzIGNvbnNpZGVyZWQuCi0KLSAgICAuLiB3YXJuaW5nOjoK
LQotICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0KLSAgICAgICBJbiBvcmRlciB0byBh
dm9pZCBpbmNvbnNpc3RlbnQgYmVoYXZpb3IsIGBgVHlwZUVycm9yYGAgaXMKLSAgICAgICByYWlz
ZWQgZm9yIGBgPmBgLCBgYD49YGAsIGBgPGBgIGFuZCBgYDw9YGAgY29tcGFyaXNvbnMuCi0gICAg
ICAgVGhlIGV4YW1wbGUgYmVsb3cgaWxsdXN0cmF0ZXMgdGhlIHByb2JsZW06OgotCi0gICAgICAg
ICAgIGFzc2VydCBhcHByb3goMC4xKSA+IDAuMSArIDFlLTEwICAjIGNhbGxzIGFwcHJveCgwLjEp
Ll9fZ3RfXygwLjEgKyAxZS0xMCkKLSAgICAgICAgICAgYXNzZXJ0IDAuMSArIDFlLTEwID4gYXBw
cm94KDAuMSkgICMgY2FsbHMgYXBwcm94KDAuMSkuX19sdF9fKDAuMSArIDFlLTEwKQotCi0gICAg
ICAgSW4gdGhlIHNlY29uZCBleGFtcGxlIG9uZSBleHBlY3RzIGBgYXBwcm94KDAuMSkuX19sZV9f
KDAuMSArIDFlLTEwKWBgCi0gICAgICAgdG8gYmUgY2FsbGVkLiBCdXQgaW5zdGVhZCwgYGBhcHBy
b3goMC4xKS5fX2x0X18oMC4xICsgMWUtMTApYGAgaXMgdXNlZCB0bwotICAgICAgIGNvbXBhcmlz
b24uIFRoaXMgaXMgYmVjYXVzZSB0aGUgY2FsbCBoaWVyYXJjaHkgb2YgcmljaCBjb21wYXJpc29u
cwotICAgICAgIGZvbGxvd3MgYSBmaXhlZCBiZWhhdmlvci4gYE1vcmUgaW5mb3JtYXRpb24uLi5g
X18KLQotICAgICAgIF9fIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvcmVmZXJlbmNlL2RhdGFt
b2RlbC5odG1sI29iamVjdC5fX2dlX18KLSAgICAiIiIKLQotICAgIGZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IE1hcHBpbmcsIFNlcXVlbmNlCi0gICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQg
U1RSSU5HX1RZUEVTIGFzIFN0cmluZwotCi0gICAgIyBEZWxlZ2F0ZSB0aGUgY29tcGFyaXNvbiB0
byBhIGNsYXNzIHRoYXQga25vd3MgaG93IHRvIGRlYWwgd2l0aCB0aGUgdHlwZQotICAgICMgb2Yg
dGhlIGV4cGVjdGVkIHZhbHVlIChlLmcuIGludCwgZmxvYXQsIGxpc3QsIGRpY3QsIG51bXB5LmFy
cmF5LCBldGMpLgotICAgICMKLSAgICAjIFRoaXMgYXJjaGl0ZWN0dXJlIGlzIHJlYWxseSBkcml2
ZW4gYnkgdGhlIG5lZWQgdG8gc3VwcG9ydCBudW1weSBhcnJheXMuCi0gICAgIyBUaGUgb25seSB3
YXkgdG8gb3ZlcnJpZGUgYD09YCBmb3IgYXJyYXlzIHdpdGhvdXQgcmVxdWlyaW5nIHRoYXQgYXBw
cm94IGJlCi0gICAgIyB0aGUgbGVmdCBvcGVyYW5kIGlzIHRvIGluaGVyaXQgdGhlIGFwcHJveCBv
YmplY3QgZnJvbSBgbnVtcHkubmRhcnJheWAuCi0gICAgIyBCdXQgdGhhdCBjYW4ndCBiZSBhIGdl
bmVyYWwgc29sdXRpb24sIGJlY2F1c2UgaXQgcmVxdWlyZXMgKDEpIG51bXB5IHRvIGJlCi0gICAg
IyBpbnN0YWxsZWQgYW5kICgyKSB0aGUgZXhwZWN0ZWQgdmFsdWUgdG8gYmUgYSBudW1weSBhcnJh
eS4gIFNvIHRoZSBnZW5lcmFsCi0gICAgIyBzb2x1dGlvbiBpcyB0byBkZWxlZ2F0ZSBlYWNoIHR5
cGUgb2YgZXhwZWN0ZWQgdmFsdWUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuCi0gICAgIwotICAgICMg
VGhpcyBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IG1hZGUgaXQgZWFzeSB0byBzdXBwb3J0IG1h
cHBpbmcgdHlwZXMKLSAgICAjIChpLmUuIGRpY3QpLiAgVGhlIG9sZCBjb2RlIGFjY2VwdGVkIG1h
cHBpbmcgdHlwZXMsIGJ1dCB3b3VsZCBvbmx5IGNvbXBhcmUKLSAgICAjIHRoZWlyIGtleXMsIHdo
aWNoIGlzIHByb2JhYmx5IG5vdCB3aGF0IG1vc3QgcGVvcGxlIHdvdWxkIGV4cGVjdC4KLQotICAg
IGlmIF9pc19udW1weV9hcnJheShleHBlY3RlZCk6Ci0gICAgICAgIGNscyA9IEFwcHJveE51bXB5
Ci0gICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBNYXBwaW5nKToKLSAgICAgICAgY2xzID0g
QXBwcm94TWFwcGluZwotICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgU2VxdWVuY2UpIGFu
ZCBub3QgaXNpbnN0YW5jZShleHBlY3RlZCwgU3RyaW5nKToKLSAgICAgICAgY2xzID0gQXBwcm94
U2VxdWVuY2UKLSAgICBlbHNlOgotICAgICAgICBjbHMgPSBBcHByb3hTY2FsYXIKLQotICAgIHJl
dHVybiBjbHMoZXhwZWN0ZWQsIHJlbCwgYWJzLCBuYW5fb2spCi0KLQotZGVmIF9pc19udW1weV9h
cnJheShvYmopOgotICAgICIiIgotICAgIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3Qg
aXMgYSBudW1weSBhcnJheS4gIE1ha2UgYSBzcGVjaWFsIGVmZm9ydCB0bwotICAgIGF2b2lkIGlt
cG9ydGluZyBudW1weSB1bmxlc3MgaXQncyByZWFsbHkgbmVjZXNzYXJ5LgotICAgICIiIgotICAg
IGltcG9ydCBpbnNwZWN0Ci0KLSAgICBmb3IgY2xzIGluIGluc3BlY3QuZ2V0bXJvKHR5cGUob2Jq
KSk6Ci0gICAgICAgIGlmIGNscy5fX21vZHVsZV9fID09ICdudW1weSc6Ci0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IG51bXB5IGFzIG5wCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGlzaW5zdGFuY2Uob2JqLCBucC5uZGFycmF5KQotICAgICAgICAgICAgZXhjZXB0IElt
cG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIHJldHVybiBGYWxzZQotCi0K
LSMgYnVpbHRpbiBweXRlc3QucmFpc2VzIGhlbHBlcgotCi1kZWYgcmFpc2VzKGV4cGVjdGVkX2V4
Y2VwdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiIKLSAgICBBc3NlcnQgdGhhdCBhIGNv
ZGUgYmxvY2svZnVuY3Rpb24gY2FsbCByYWlzZXMgYGBleHBlY3RlZF9leGNlcHRpb25gYAotICAg
IGFuZCByYWlzZSBhIGZhaWx1cmUgZXhjZXB0aW9uIG90aGVyd2lzZS4KLQotICAgIFRoaXMgaGVs
cGVyIHByb2R1Y2VzIGEgYGBFeGNlcHRpb25JbmZvKClgYCBvYmplY3QgKHNlZSBiZWxvdykuCi0K
LSAgICBZb3UgbWF5IHVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgY29udGV4dCBtYW5hZ2VyOjoKLQot
ICAgICAgICA+Pj4gd2l0aCByYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICAgICAuLi4g
ICAgMS8wCi0KLSAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMTAKLQotICAgIEluIHRoZSBjb250
ZXh0IG1hbmFnZXIgZm9ybSB5b3UgbWF5IHVzZSB0aGUga2V5d29yZCBhcmd1bWVudAotICAgIGBg
bWVzc2FnZWBgIHRvIHNwZWNpZnkgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlOjoKLQotICAgICAg
ICA+Pj4gd2l0aCByYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIG1lc3NhZ2U9IkV4cGVjdGluZyBa
ZXJvRGl2aXNpb25FcnJvciIpOgotICAgICAgICAuLi4gICAgcGFzcwotICAgICAgICBUcmFjZWJh
Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgLi4uCi0gICAgICAgIEZhaWxl
ZDogRXhwZWN0aW5nIFplcm9EaXZpc2lvbkVycm9yCi0KLSAgICAuLiBub3RlOjoKLQotICAgICAg
IFdoZW4gdXNpbmcgYGBweXRlc3QucmFpc2VzYGAgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGl0J3Mg
d29ydGh3aGlsZSB0bwotICAgICAgIG5vdGUgdGhhdCBub3JtYWwgY29udGV4dCBtYW5hZ2VyIHJ1
bGVzIGFwcGx5IGFuZCB0aGF0IHRoZSBleGNlcHRpb24KLSAgICAgICByYWlzZWQgKm11c3QqIGJl
IHRoZSBmaW5hbCBsaW5lIGluIHRoZSBzY29wZSBvZiB0aGUgY29udGV4dCBtYW5hZ2VyLgotICAg
ICAgIExpbmVzIG9mIGNvZGUgYWZ0ZXIgdGhhdCwgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgY29u
dGV4dCBtYW5hZ2VyIHdpbGwKLSAgICAgICBub3QgYmUgZXhlY3V0ZWQuIEZvciBleGFtcGxlOjoK
LQotICAgICAgICAgICA+Pj4gdmFsdWUgPSAxNQotICAgICAgICAgICA+Pj4gd2l0aCByYWlzZXMo
VmFsdWVFcnJvcikgYXMgZXhjX2luZm86Ci0gICAgICAgICAgIC4uLiAgICAgaWYgdmFsdWUgPiAx
MDoKLSAgICAgICAgICAgLi4uICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidmFsdWUgbXVzdCBi
ZSA8PSAxMCIpCi0gICAgICAgICAgIC4uLiAgICAgYXNzZXJ0IGV4Y19pbmZvLnR5cGUgPT0gVmFs
dWVFcnJvciAgIyB0aGlzIHdpbGwgbm90IGV4ZWN1dGUKLQotICAgICAgIEluc3RlYWQsIHRoZSBm
b2xsb3dpbmcgYXBwcm9hY2ggbXVzdCBiZSB0YWtlbiAobm90ZSB0aGUgZGlmZmVyZW5jZSBpbgot
ICAgICAgIHNjb3BlKTo6Ci0KLSAgICAgICAgICAgPj4+IHdpdGggcmFpc2VzKFZhbHVlRXJyb3Ip
IGFzIGV4Y19pbmZvOgotICAgICAgICAgICAuLi4gICAgIGlmIHZhbHVlID4gMTA6Ci0gICAgICAg
ICAgIC4uLiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgPD0gMTAiKQot
ICAgICAgICAgICAuLi4KLSAgICAgICAgICAgPj4+IGFzc2VydCBleGNfaW5mby50eXBlID09IFZh
bHVlRXJyb3IKLQotCi0gICAgU2luY2UgdmVyc2lvbiBgYDMuMWBgIHlvdSBjYW4gdXNlIHRoZSBr
ZXl3b3JkIGFyZ3VtZW50IGBgbWF0Y2hgYCB0byBhc3NlcnQgdGhhdCB0aGUKLSAgICBleGNlcHRp
b24gbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXg6OgotCi0gICAgICAgID4+PiB3aXRoIHJhaXNlcyhW
YWx1ZUVycm9yLCBtYXRjaD0nbXVzdCBiZSAwIG9yIE5vbmUnKToKLSAgICAgICAgLi4uICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBtdXN0IGJlIDAgb3IgTm9uZSIpCi0KLSAgICAgICAgPj4+
IHdpdGggcmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNoPXInbXVzdCBiZSBcZCskJyk6Ci0gICAgICAg
IC4uLiAgICAgcmFpc2UgVmFsdWVFcnJvcigidmFsdWUgbXVzdCBiZSA0MiIpCi0KLSAgICAqKkxl
Z2FjeSBmb3JtcyoqCi0KLSAgICBUaGUgZm9ybXMgYmVsb3cgYXJlIGZ1bGx5IHN1cHBvcnRlZCBi
dXQgYXJlIGRpc2NvdXJhZ2VkIGZvciBuZXcgY29kZSBiZWNhdXNlIHRoZQotICAgIGNvbnRleHQg
bWFuYWdlciBmb3JtIGlzIHJlZ2FyZGVkIGFzIG1vcmUgcmVhZGFibGUgYW5kIGxlc3MgZXJyb3It
cHJvbmUuCi0KLSAgICBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2FsbGFibGUgYnkgcGFz
c2luZyBhIHRvLWJlLWNhbGxlZCBsYW1iZGE6OgotCi0gICAgICAgID4+PiByYWlzZXMoWmVyb0Rp
dmlzaW9uRXJyb3IsIGxhbWJkYTogMS8wKQotICAgICAgICA8RXhjZXB0aW9uSW5mbyAuLi4+Ci0K
LSAgICBvciB5b3UgY2FuIHNwZWNpZnkgYW4gYXJiaXRyYXJ5IGNhbGxhYmxlIHdpdGggYXJndW1l
bnRzOjoKLQotICAgICAgICA+Pj4gZGVmIGYoeCk6IHJldHVybiAxL3gKLSAgICAgICAgLi4uCi0g
ICAgICAgID4+PiByYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIGYsIDApCi0gICAgICAgIDxFeGNl
cHRpb25JbmZvIC4uLj4KLSAgICAgICAgPj4+IHJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgZiwg
eD0wKQotICAgICAgICA8RXhjZXB0aW9uSW5mbyAuLi4+Ci0KLSAgICBJdCBpcyBhbHNvIHBvc3Np
YmxlIHRvIHBhc3MgYSBzdHJpbmcgdG8gYmUgZXZhbHVhdGVkIGF0IHJ1bnRpbWU6OgotCi0gICAg
ICAgID4+PiByYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsICJmKDApIikKLSAgICAgICAgPEV4Y2Vw
dGlvbkluZm8gLi4uPgotCi0gICAgVGhlIHN0cmluZyB3aWxsIGJlIGV2YWx1YXRlZCB1c2luZyB0
aGUgc2FtZSBgYGxvY2FscygpYGAgYW5kIGBgZ2xvYmFscygpYGAKLSAgICBhdCB0aGUgbW9tZW50
IG9mIHRoZSBgYHJhaXNlc2BgIGNhbGwuCi0KLSAgICAuLiBhdXRvY2xhc3M6OiBfcHl0ZXN0Ll9j
b2RlLkV4Y2VwdGlvbkluZm8KLSAgICAgICAgOm1lbWJlcnM6Ci0KLSAgICAuLiBub3RlOjoKLSAg
ICAgICAgU2ltaWxhciB0byBjYXVnaHQgZXhjZXB0aW9uIG9iamVjdHMgaW4gUHl0aG9uLCBleHBs
aWNpdGx5IGNsZWFyaW5nCi0gICAgICAgIGxvY2FsIHJlZmVyZW5jZXMgdG8gcmV0dXJuZWQgYGBF
eGNlcHRpb25JbmZvYGAgb2JqZWN0cyBjYW4KLSAgICAgICAgaGVscCB0aGUgUHl0aG9uIGludGVy
cHJldGVyIHNwZWVkIHVwIGl0cyBnYXJiYWdlIGNvbGxlY3Rpb24uCi0KLSAgICAgICAgQ2xlYXJp
bmcgdGhvc2UgcmVmZXJlbmNlcyBicmVha3MgYSByZWZlcmVuY2UgY3ljbGUKLSAgICAgICAgKGBg
RXhjZXB0aW9uSW5mb2BgIC0tPiBjYXVnaHQgZXhjZXB0aW9uIC0tPiBmcmFtZSBzdGFjayByYWlz
aW5nCi0gICAgICAgIHRoZSBleGNlcHRpb24gLS0+IGN1cnJlbnQgZnJhbWUgc3RhY2sgLS0+IGxv
Y2FsIHZhcmlhYmxlcyAtLT4KLSAgICAgICAgYGBFeGNlcHRpb25JbmZvYGApIHdoaWNoIG1ha2Vz
IFB5dGhvbiBrZWVwIGFsbCBvYmplY3RzIHJlZmVyZW5jZWQKLSAgICAgICAgZnJvbSB0aGF0IGN5
Y2xlIChpbmNsdWRpbmcgYWxsIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudAotICAgICAg
ICBmcmFtZSkgYWxpdmUgdW50aWwgdGhlIG5leHQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbiBy
dW4uIFNlZSB0aGUKLSAgICAgICAgb2ZmaWNpYWwgUHl0aG9uIGBgdHJ5YGAgc3RhdGVtZW50IGRv
Y3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsZWQKLSAgICAgICAgaW5mb3JtYXRpb24uCi0KLSAg
ICAiIiIKLSAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICBtc2cgPSAoImV4Y2VwdGlv
bnMgbXVzdCBiZSBvbGQtc3R5bGUgY2xhc3NlcyBvciIKLSAgICAgICAgICAgIiBkZXJpdmVkIGZy
b20gQmFzZUV4Y2VwdGlvbiwgbm90ICVzIikKLSAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkX2V4
Y2VwdGlvbiwgdHVwbGUpOgotICAgICAgICBmb3IgZXhjIGluIGV4cGVjdGVkX2V4Y2VwdGlvbjoK
LSAgICAgICAgICAgIGlmIG5vdCBpc2NsYXNzKGV4Yyk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKG1zZyAlIHR5cGUoZXhjKSkKLSAgICBlbGlmIG5vdCBpc2NsYXNzKGV4cGVjdGVk
X2V4Y2VwdGlvbik6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cgJSB0eXBlKGV4cGVjdGVk
X2V4Y2VwdGlvbikpCi0KLSAgICBtZXNzYWdlID0gIkRJRCBOT1QgUkFJU0UgezB9Ii5mb3JtYXQo
ZXhwZWN0ZWRfZXhjZXB0aW9uKQotICAgIG1hdGNoX2V4cHIgPSBOb25lCi0KLSAgICBpZiBub3Qg
YXJnczoKLSAgICAgICAgaWYgIm1lc3NhZ2UiIGluIGt3YXJnczoKLSAgICAgICAgICAgIG1lc3Nh
Z2UgPSBrd2FyZ3MucG9wKCJtZXNzYWdlIikKLSAgICAgICAgaWYgIm1hdGNoIiBpbiBrd2FyZ3M6
Ci0gICAgICAgICAgICBtYXRjaF9leHByID0ga3dhcmdzLnBvcCgibWF0Y2giKQotICAgICAgICAg
ICAgbWVzc2FnZSArPSAiIG1hdGNoaW5nICd7MH0nIi5mb3JtYXQobWF0Y2hfZXhwcikKLSAgICAg
ICAgcmV0dXJuIFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBtZXNzYWdlLCBtYXRj
aF9leHByKQotICAgIGVsaWYgaXNpbnN0YW5jZShhcmdzWzBdLCBzdHIpOgotICAgICAgICBjb2Rl
LCA9IGFyZ3MKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY29kZSwgc3RyKQotICAgICAgICBm
cmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKLSAgICAgICAgbG9jID0gZnJhbWUuZl9sb2NhbHMuY29w
eSgpCi0gICAgICAgIGxvYy51cGRhdGUoa3dhcmdzKQotICAgICAgICAjIHByaW50ICJyYWlzZXMg
ZnJhbWUgc2NvcGU6ICVyIiAlIGZyYW1lLmZfbG9jYWxzCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShjb2RlKS5jb21waWxlKCkKLSAgICAgICAg
ICAgIHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgZnJhbWUuZl9nbG9iYWxzLCBsb2MpCi0gICAgICAg
ICAgICAjIFhYWCBkaWRuJ1QgbWVhbiBmX2dsb2JhbHMgPT0gZl9sb2NhbHMgc29tZXRoaW5nIHNw
ZWNpYWw/Ci0gICAgICAgICAgICAjICAgICB0aGlzIGlzIGRlc3Ryb3llZCBoZXJlIC4uLgotICAg
ICAgICBleGNlcHQgZXhwZWN0ZWRfZXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuIF9weXRl
c3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCi0gICAgZWxzZToKLSAgICAgICAgZnVuYyA9IGFyZ3Nb
MF0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnVuYygqYXJnc1sxOl0sICoqa3dhcmdzKQot
ICAgICAgICBleGNlcHQgZXhwZWN0ZWRfZXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuIF9w
eXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCi0gICAgZmFpbChtZXNzYWdlKQotCi0KLXJhaXNl
cy5FeGNlcHRpb24gPSBmYWlsLkV4Y2VwdGlvbgotCi0KLWNsYXNzIFJhaXNlc0NvbnRleHQob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWRfZXhjZXB0aW9uLCBtZXNzYWdl
LCBtYXRjaF9leHByKToKLSAgICAgICAgc2VsZi5leHBlY3RlZF9leGNlcHRpb24gPSBleHBlY3Rl
ZF9leGNlcHRpb24KLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICBzZWxm
Lm1hdGNoX2V4cHIgPSBtYXRjaF9leHByCi0gICAgICAgIHNlbGYuZXhjaW5mbyA9IE5vbmUKLQot
ICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuZXhjaW5mbyA9IG9iamVjdC5f
X25ld19fKF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbykKLSAgICAgICAgcmV0dXJuIHNlbGYu
ZXhjaW5mbwotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICp0cCk6Ci0gICAgICAgIF9fdHJhY2Vi
YWNraGlkZV9fID0gVHJ1ZQotICAgICAgICBpZiB0cFswXSBpcyBOb25lOgotICAgICAgICAgICAg
ZmFpbChzZWxmLm1lc3NhZ2UpCi0gICAgICAgIHNlbGYuZXhjaW5mby5fX2luaXRfXyh0cCkKLSAg
ICAgICAgc3VwcHJlc3NfZXhjZXB0aW9uID0gaXNzdWJjbGFzcyhzZWxmLmV4Y2luZm8udHlwZSwg
c2VsZi5leHBlY3RlZF9leGNlcHRpb24pCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0g
PT0gMiBhbmQgc3VwcHJlc3NfZXhjZXB0aW9uOgotICAgICAgICAgICAgc3lzLmV4Y19jbGVhcigp
Ci0gICAgICAgIGlmIHNlbGYubWF0Y2hfZXhwcjoKLSAgICAgICAgICAgIHNlbGYuZXhjaW5mby5t
YXRjaChzZWxmLm1hdGNoX2V4cHIpCi0gICAgICAgIHJldHVybiBzdXBwcmVzc19leGNlcHRpb24K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVjd2Fybi5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvcmVjd2Fybi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZjZWIx
MGE3ZjM0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9yZWN3YXJuLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLSIiIiByZWNvcmRpbmcgd2FybmluZ3Mg
ZHVyaW5nIHRlc3QgZnVuY3Rpb24gZXhlY3V0aW9uLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGlu
c3BlY3QKLQotaW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQotaW1wb3J0IHN5cwotaW1w
b3J0IHdhcm5pbmdzCi0KLWltcG9ydCByZQotCi1mcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0
IHlpZWxkX2ZpeHR1cmUKLWZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbAotCi0KLUB5
aWVsZF9maXh0dXJlCi1kZWYgcmVjd2FybigpOgotICAgICIiIlJldHVybiBhIFdhcm5pbmdzUmVj
b3JkZXIgaW5zdGFuY2UgdGhhdCBwcm92aWRlcyB0aGVzZSBtZXRob2RzOgotCi0gICAgKiBgYHBv
cChjYXRlZ29yeT1Ob25lKWBgOiByZXR1cm4gbGFzdCB3YXJuaW5nIG1hdGNoaW5nIHRoZSBjYXRl
Z29yeS4KLSAgICAqIGBgY2xlYXIoKWBgOiBjbGVhciBsaXN0IG9mIHdhcm5pbmdzCi0KLSAgICBT
ZWUgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3dhcm5pbmdzLmh0bWwgZm9yIGluZm9y
bWF0aW9uCi0gICAgb24gd2FybmluZyBjYXRlZ29yaWVzLgotICAgICIiIgotICAgIHdyZWMgPSBX
YXJuaW5nc1JlY29yZGVyKCkKLSAgICB3aXRoIHdyZWM6Ci0gICAgICAgIHdhcm5pbmdzLnNpbXBs
ZWZpbHRlcignZGVmYXVsdCcpCi0gICAgICAgIHlpZWxkIHdyZWMKLQotCi1kZWYgZGVwcmVjYXRl
ZF9jYWxsKGZ1bmM9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiJjb250ZXh0IG1hbmFn
ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBlbnN1cmUgYSBibG9jayBvZiBjb2RlIHRyaWdnZXJzIGEK
LSAgICBgYERlcHJlY2F0aW9uV2FybmluZ2BgIG9yIGBgUGVuZGluZ0RlcHJlY2F0aW9uV2Fybmlu
Z2BgOjoKLQotICAgICAgICA+Pj4gaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgID4+PiBkZWYgYXBp
X2NhbGxfdjIoKToKLSAgICAgICAgLi4uICAgICB3YXJuaW5ncy53YXJuKCd1c2UgdjMgb2YgdGhp
cyBhcGknLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIC4uLiAgICAgcmV0dXJuIDIwMAot
Ci0gICAgICAgID4+PiB3aXRoIGRlcHJlY2F0ZWRfY2FsbCgpOgotICAgICAgICAuLi4gICAgYXNz
ZXJ0IGFwaV9jYWxsX3YyKCkgPT0gMjAwCi0KLSAgICBgYGRlcHJlY2F0ZWRfY2FsbGBgIGNhbiBh
bHNvIGJlIHVzZWQgYnkgcGFzc2luZyBhIGZ1bmN0aW9uIGFuZCBgYCphcmdzYGAgYW5kIGBgKmt3
YXJnc2BgLAotICAgIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBlbnN1cmUgY2FsbGluZyBgYGZ1bmMo
KmFyZ3MsICoqa3dhcmdzKWBgIHByb2R1Y2VzIG9uZSBvZiB0aGUgd2FybmluZ3MKLSAgICB0eXBl
cyBhYm92ZS4KLSAgICAiIiIKLSAgICBpZiBub3QgZnVuYzoKLSAgICAgICAgcmV0dXJuIF9EZXBy
ZWNhdGVkQ2FsbENvbnRleHQoKQotICAgIGVsc2U6Ci0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9f
ID0gVHJ1ZQotICAgICAgICB3aXRoIF9EZXByZWNhdGVkQ2FsbENvbnRleHQoKToKLSAgICAgICAg
ICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKLQotCi1jbGFzcyBfRGVwcmVjYXRlZENh
bGxDb250ZXh0KG9iamVjdCk6Ci0gICAgIiIiSW1wbGVtZW50cyB0aGUgbG9naWMgdG8gY2FwdHVy
ZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBhcyBhIGNvbnRleHQgbWFuYWdlci4iIiIKLQotICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMgPSBb
XQotICAgICAgICBzZWxmLl9vbGRfd2FybiA9IHdhcm5pbmdzLndhcm4KLSAgICAgICAgc2VsZi5f
b2xkX3dhcm5fZXhwbGljaXQgPSB3YXJuaW5ncy53YXJuX2V4cGxpY2l0Ci0gICAgICAgIHdhcm5p
bmdzLndhcm5fZXhwbGljaXQgPSBzZWxmLl93YXJuX2V4cGxpY2l0Ci0gICAgICAgIHdhcm5pbmdz
Lndhcm4gPSBzZWxmLl93YXJuCi0KLSAgICBkZWYgX3dhcm5fZXhwbGljaXQoc2VsZiwgbWVzc2Fn
ZSwgY2F0ZWdvcnksICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmVkX2Nh
dGVnb3JpZXMuYXBwZW5kKGNhdGVnb3J5KQotCi0gICAgZGVmIF93YXJuKHNlbGYsIG1lc3NhZ2Us
IGNhdGVnb3J5PU5vbmUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uo
bWVzc2FnZSwgV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLl9jYXB0dXJlZF9jYXRlZ29yaWVz
LmFwcGVuZChtZXNzYWdlLl9fY2xhc3NfXykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
bGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMuYXBwZW5kKGNhdGVnb3J5KQotCi0gICAgZGVmIF9fZXhp
dF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgotICAgICAgICB3YXJuaW5ncy53
YXJuX2V4cGxpY2l0ID0gc2VsZi5fb2xkX3dhcm5fZXhwbGljaXQKLSAgICAgICAgd2FybmluZ3Mu
d2FybiA9IHNlbGYuX29sZF93YXJuCi0KLSAgICAgICAgaWYgZXhjX3R5cGUgaXMgTm9uZToKLSAg
ICAgICAgICAgIGRlcHJlY2F0aW9uX2NhdGVnb3JpZXMgPSAoRGVwcmVjYXRpb25XYXJuaW5nLCBQ
ZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgaWYgbm90IGFueShpc3N1YmNs
YXNzKGMsIGRlcHJlY2F0aW9uX2NhdGVnb3JpZXMpIGZvciBjIGluIHNlbGYuX2NhcHR1cmVkX2Nh
dGVnb3JpZXMpOgotICAgICAgICAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAg
ICAgICAgICAgICAgIG1zZyA9ICJEaWQgbm90IHByb2R1Y2UgRGVwcmVjYXRpb25XYXJuaW5nIG9y
IFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmciCi0gICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IobXNnKQotCi0KLWRlZiB3YXJucyhleHBlY3RlZF93YXJuaW5nLCAqYXJncywgKipr
d2FyZ3MpOgotICAgICIiIkFzc2VydCB0aGF0IGNvZGUgcmFpc2VzIGEgcGFydGljdWxhciBjbGFz
cyBvZiB3YXJuaW5nLgotCi0gICAgU3BlY2lmaWNhbGx5LCB0aGUgaW5wdXQgQGV4cGVjdGVkX3dh
cm5pbmcgY2FuIGJlIGEgd2FybmluZyBjbGFzcyBvcgotICAgIHR1cGxlIG9mIHdhcm5pbmcgY2xh
c3NlcywgYW5kIHRoZSBjb2RlIG11c3QgcmV0dXJuIHRoYXQgd2FybmluZwotICAgIChpZiBhIHNp
bmdsZSBjbGFzcykgb3Igb25lIG9mIHRob3NlIHdhcm5pbmdzIChpZiBhIHR1cGxlKS4KLQotICAg
IFRoaXMgaGVscGVyIHByb2R1Y2VzIGEgbGlzdCBvZiBgYHdhcm5pbmdzLldhcm5pbmdNZXNzYWdl
YGAgb2JqZWN0cywKLSAgICBvbmUgZm9yIGVhY2ggd2FybmluZyByYWlzZWQuCi0KLSAgICBUaGlz
IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCBvciBhbnkgb2YgdGhl
IG90aGVyIHdheXMKLSAgICBgYHB5dGVzdC5yYWlzZXNgYCBjYW4gYmUgdXNlZDo6Ci0KLSAgICAg
ICAgPj4+IHdpdGggd2FybnMoUnVudGltZVdhcm5pbmcpOgotICAgICAgICAuLi4gICAgd2Fybmlu
Z3Mud2FybigibXkgd2FybmluZyIsIFJ1bnRpbWVXYXJuaW5nKQotCi0gICAgSW4gdGhlIGNvbnRl
eHQgbWFuYWdlciBmb3JtIHlvdSBtYXkgdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBgbWF0Y2hg
YCB0byBhc3NlcnQKLSAgICB0aGF0IHRoZSBleGNlcHRpb24gbWF0Y2hlcyBhIHRleHQgb3IgcmVn
ZXg6OgotCi0gICAgICAgID4+PiB3aXRoIHdhcm5zKFVzZXJXYXJuaW5nLCBtYXRjaD0nbXVzdCBi
ZSAwIG9yIE5vbmUnKToKLSAgICAgICAgLi4uICAgICB3YXJuaW5ncy53YXJuKCJ2YWx1ZSBtdXN0
IGJlIDAgb3IgTm9uZSIsIFVzZXJXYXJuaW5nKQotCi0gICAgICAgID4+PiB3aXRoIHdhcm5zKFVz
ZXJXYXJuaW5nLCBtYXRjaD1yJ211c3QgYmUgXGQrJCcpOgotICAgICAgICAuLi4gICAgIHdhcm5p
bmdzLndhcm4oInZhbHVlIG11c3QgYmUgNDIiLCBVc2VyV2FybmluZykKLQotICAgICAgICA+Pj4g
d2l0aCB3YXJucyhVc2VyV2FybmluZywgbWF0Y2g9cidtdXN0IGJlIFxkKyQnKToKLSAgICAgICAg
Li4uICAgICB3YXJuaW5ncy53YXJuKCJ0aGlzIGlzIG5vdCBoZXJlIiwgVXNlcldhcm5pbmcpCi0g
ICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAuLi4K
LSAgICAgICAgRmFpbGVkOiBESUQgTk9UIFdBUk4uIE5vIHdhcm5pbmdzIG9mIHR5cGUgLi4uVXNl
cldhcm5pbmcuLi4gd2FzIGVtaXR0ZWQuLi4KLQotICAgICIiIgotICAgIG1hdGNoX2V4cHIgPSBO
b25lCi0gICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgIGlmICJtYXRjaCIgaW4ga3dhcmdzOgotICAg
ICAgICAgICAgbWF0Y2hfZXhwciA9IGt3YXJncy5wb3AoIm1hdGNoIikKLSAgICAgICAgcmV0dXJu
IFdhcm5pbmdzQ2hlY2tlcihleHBlY3RlZF93YXJuaW5nLCBtYXRjaF9leHByPW1hdGNoX2V4cHIp
Ci0gICAgZWxpZiBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cik6Ci0gICAgICAgIGNvZGUsID0gYXJn
cwotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2RlLCBzdHIpCi0gICAgICAgIGZyYW1lID0g
c3lzLl9nZXRmcmFtZSgxKQotICAgICAgICBsb2MgPSBmcmFtZS5mX2xvY2Fscy5jb3B5KCkKLSAg
ICAgICAgbG9jLnVwZGF0ZShrd2FyZ3MpCi0KLSAgICAgICAgd2l0aCBXYXJuaW5nc0NoZWNrZXIo
ZXhwZWN0ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaF9leHByKToKLSAgICAgICAgICAgIGNv
ZGUgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShjb2RlKS5jb21waWxlKCkKLSAgICAgICAgICAgIHB5
LmJ1aWx0aW4uZXhlY18oY29kZSwgZnJhbWUuZl9nbG9iYWxzLCBsb2MpCi0gICAgZWxzZToKLSAg
ICAgICAgZnVuYyA9IGFyZ3NbMF0KLSAgICAgICAgd2l0aCBXYXJuaW5nc0NoZWNrZXIoZXhwZWN0
ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaF9leHByKToKLSAgICAgICAgICAgIHJldHVybiBm
dW5jKCphcmdzWzE6XSwgKiprd2FyZ3MpCi0KLQotY2xhc3MgV2FybmluZ3NSZWNvcmRlcih3YXJu
aW5ncy5jYXRjaF93YXJuaW5ncyk6Ci0gICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgdG8gcmVjb3Jk
IHJhaXNlZCB3YXJuaW5ncy4KLQotICAgIEFkYXB0ZWQgZnJvbSBgd2FybmluZ3MuY2F0Y2hfd2Fy
bmluZ3NgLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBl
cihXYXJuaW5nc1JlY29yZGVyLCBzZWxmKS5fX2luaXRfXyhyZWNvcmQ9VHJ1ZSkKLSAgICAgICAg
c2VsZi5fZW50ZXJlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2xpc3QgPSBbXQotCi0gICAgQHBy
b3BlcnR5Ci0gICAgZGVmIGxpc3Qoc2VsZik6Ci0gICAgICAgICIiIlRoZSBsaXN0IG9mIHJlY29y
ZGVkIHdhcm5pbmdzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbGlzdAotCi0gICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGkpOgotICAgICAgICAiIiJHZXQgYSByZWNvcmRlZCB3YXJuaW5nIGJ5
IGluZGV4LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbGlzdFtpXQotCi0gICAgZGVmIF9faXRl
cl9fKHNlbGYpOgotICAgICAgICAiIiJJdGVyYXRlIHRocm91Z2ggdGhlIHJlY29yZGVkIHdhcm5p
bmdzLiIiIgotICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9saXN0KQotCi0gICAgZGVmIF9fbGVu
X18oc2VsZik6Ci0gICAgICAgICIiIlRoZSBudW1iZXIgb2YgcmVjb3JkZWQgd2FybmluZ3MuIiIi
Ci0gICAgICAgIHJldHVybiBsZW4oc2VsZi5fbGlzdCkKLQotICAgIGRlZiBwb3Aoc2VsZiwgY2xz
PVdhcm5pbmcpOgotICAgICAgICAiIiJQb3AgdGhlIGZpcnN0IHJlY29yZGVkIHdhcm5pbmcsIHJh
aXNlIGV4Y2VwdGlvbiBpZiBub3QgZXhpc3RzLiIiIgotICAgICAgICBmb3IgaSwgdyBpbiBlbnVt
ZXJhdGUoc2VsZi5fbGlzdCk6Ci0gICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHcuY2F0ZWdvcnks
IGNscyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3QucG9wKGkpCi0gICAgICAg
IF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigi
JXIgbm90IGZvdW5kIGluIHdhcm5pbmcgbGlzdCIgJSBjbHMpCi0KLSAgICBkZWYgY2xlYXIoc2Vs
Zik6Ci0gICAgICAgICIiIkNsZWFyIHRoZSBsaXN0IG9mIHJlY29yZGVkIHdhcm5pbmdzLiIiIgot
ICAgICAgICBzZWxmLl9saXN0WzpdID0gW10KLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgIGlmIHNlbGYuX2VudGVyZWQ6Ci0gICAgICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9
IFRydWUKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGVudGVyICVyIHR3
aWNlIiAlIHNlbGYpCi0gICAgICAgIHNlbGYuX2xpc3QgPSBzdXBlcihXYXJuaW5nc1JlY29yZGVy
LCBzZWxmKS5fX2VudGVyX18oKQotICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5
cycpCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19p
bmZvKToKLSAgICAgICAgaWYgbm90IHNlbGYuX2VudGVyZWQ6Ci0gICAgICAgICAgICBfX3RyYWNl
YmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90
IGV4aXQgJXIgd2l0aG91dCBlbnRlcmluZyBmaXJzdCIgJSBzZWxmKQotICAgICAgICBzdXBlcihX
YXJuaW5nc1JlY29yZGVyLCBzZWxmKS5fX2V4aXRfXygqZXhjX2luZm8pCi0KLQotY2xhc3MgV2Fy
bmluZ3NDaGVja2VyKFdhcm5pbmdzUmVjb3JkZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBl
eHBlY3RlZF93YXJuaW5nPU5vbmUsIG1hdGNoX2V4cHI9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKFdh
cm5pbmdzQ2hlY2tlciwgc2VsZikuX19pbml0X18oKQotCi0gICAgICAgIG1zZyA9ICgiZXhjZXB0
aW9ucyBtdXN0IGJlIG9sZC1zdHlsZSBjbGFzc2VzIG9yICIKLSAgICAgICAgICAgICAgICJkZXJp
dmVkIGZyb20gV2FybmluZywgbm90ICVzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3Rl
ZF93YXJuaW5nLCB0dXBsZSk6Ci0gICAgICAgICAgICBmb3IgZXhjIGluIGV4cGVjdGVkX3dhcm5p
bmc6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGluc3BlY3QuaXNjbGFzcyhleGMpOgotICAgICAg
ICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnICUgdHlwZShleGMpKQotICAgICAgICBl
bGlmIGluc3BlY3QuaXNjbGFzcyhleHBlY3RlZF93YXJuaW5nKToKLSAgICAgICAgICAgIGV4cGVj
dGVkX3dhcm5pbmcgPSAoZXhwZWN0ZWRfd2FybmluZywpCi0gICAgICAgIGVsaWYgZXhwZWN0ZWRf
d2FybmluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cgJSB0
eXBlKGV4cGVjdGVkX3dhcm5pbmcpKQotCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRfd2FybmluZyA9
IGV4cGVjdGVkX3dhcm5pbmcKLSAgICAgICAgc2VsZi5tYXRjaF9leHByID0gbWF0Y2hfZXhwcgot
Ci0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6Ci0gICAgICAgIHN1cGVyKFdhcm5p
bmdzQ2hlY2tlciwgc2VsZikuX19leGl0X18oKmV4Y19pbmZvKQotCi0gICAgICAgICMgb25seSBj
aGVjayBpZiB3ZSdyZSBub3QgY3VycmVudGx5IGhhbmRsaW5nIGFuIGV4Y2VwdGlvbgotICAgICAg
ICBpZiBhbGwoYSBpcyBOb25lIGZvciBhIGluIGV4Y19pbmZvKToKLSAgICAgICAgICAgIGlmIHNl
bGYuZXhwZWN0ZWRfd2FybmluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBub3Qg
YW55KGlzc3ViY2xhc3Moci5jYXRlZ29yeSwgc2VsZi5leHBlY3RlZF93YXJuaW5nKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gc2VsZik6Ci0gICAgICAgICAgICAgICAgICAg
IF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBmYWlsKCJESUQg
Tk9UIFdBUk4uIE5vIHdhcm5pbmdzIG9mIHR5cGUgezB9IHdhcyBlbWl0dGVkLiAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBsaXN0IG9mIGVtaXR0ZWQgd2FybmluZ3MgaXM6IHsxfS4i
LmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZF93YXJu
aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWFjaC5tZXNzYWdlIGZvciBlYWNo
IGluIHNlbGZdKSkKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYubWF0Y2hfZXhwciBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gc2VsZjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGlzc3ViY2xhc3Moci5jYXRlZ29yeSwgc2VsZi5leHBlY3RlZF93YXJuaW5n
KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZS5jb21waWxlKHNlbGYubWF0Y2hf
ZXhwcikuc2VhcmNoKHN0cihyLm1lc3NhZ2UpKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWwoIkRJRCBOT1QgV0FSTi4gTm8gd2FybmluZ3Mgb2YgdHlwZSB7MH0gbWF0Y2hp
bmciCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCd7MX0nKSB3YXMgZW1pdHRlZC4g
VGhlIGxpc3Qgb2YgZW1pdHRlZCB3YXJuaW5ncyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiBpczogezJ9LiIuZm9ybWF0KHNlbGYuZXhwZWN0ZWRfd2FybmluZywgc2VsZi5tYXRjaF9l
eHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vh
Y2gubWVzc2FnZSBmb3IgZWFjaCBpbiBzZWxmXSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L3Jlc3VsdGxvZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVzdWx0bG9nLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjljMmQxZjY1MzYuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Jlc3VsdGxvZy5weQorKysgL2Rldi9udWxsCkBAIC0x
LDExMyArMCwwIEBACi0iIiIgbG9nIG1hY2hpbmUtcGFyc2VhYmxlIHRlc3Qgc2Vzc2lvbiByZXN1
bHQgaW5mb3JtYXRpb24gaW4gYSBwbGFpbgotdGV4dCBmaWxlLgotIiIiCi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWlt
cG9ydCBweQotaW1wb3J0IG9zCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAg
ICBncm91cCA9IHBhcnNlci5nZXRncm91cCgidGVybWluYWwgcmVwb3J0aW5nIiwgInJlc3VsdGxv
ZyBwbHVnaW4gb3B0aW9ucyIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLXJlc3VsdGxvZycsICct
LXJlc3VsdC1sb2cnLCBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAgICAgICAgICAgbWV0YXZh
cj0icGF0aCIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iREVQUkVD
QVRFRCBwYXRoIGZvciBtYWNoaW5lLXJlYWRhYmxlIHJlc3VsdCBsb2cuIikKLQotCi1kZWYgcHl0
ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIHJlc3VsdGxvZyA9IGNvbmZpZy5vcHRpb24ucmVz
dWx0bG9nCi0gICAgIyBwcmV2ZW50IG9wZW5pbmcgcmVzdWx0bG9nIG9uIHNsYXZlIG5vZGVzICh4
ZGlzdCkKLSAgICBpZiByZXN1bHRsb2cgYW5kIG5vdCBoYXNhdHRyKGNvbmZpZywgJ3NsYXZlaW5w
dXQnKToKLSAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgo
cmVzdWx0bG9nKSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlybmFtZSk6Ci0gICAg
ICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQotICAgICAgICBsb2dmaWxlID0gb3BlbihyZXN1
bHRsb2csICd3JywgMSkgICMgbGluZSBidWZmZXJlZAotICAgICAgICBjb25maWcuX3Jlc3VsdGxv
ZyA9IFJlc3VsdExvZyhjb25maWcsIGxvZ2ZpbGUpCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5h
Z2VyLnJlZ2lzdGVyKGNvbmZpZy5fcmVzdWx0bG9nKQotCi0gICAgICAgIGZyb20gX3B5dGVzdC5k
ZXByZWNhdGVkIGltcG9ydCBSRVNVTFRfTE9HCi0gICAgICAgIGNvbmZpZy53YXJuKCdDMScsIFJF
U1VMVF9MT0cpCi0KLQotZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgotICAgIHJlc3Vs
dGxvZyA9IGdldGF0dHIoY29uZmlnLCAnX3Jlc3VsdGxvZycsIE5vbmUpCi0gICAgaWYgcmVzdWx0
bG9nOgotICAgICAgICByZXN1bHRsb2cubG9nZmlsZS5jbG9zZSgpCi0gICAgICAgIGRlbCBjb25m
aWcuX3Jlc3VsdGxvZwotICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci51bnJlZ2lzdGVyKHJl
c3VsdGxvZykKLQotCi1kZWYgZ2VuZXJpY19wYXRoKGl0ZW0pOgotICAgIGNoYWluID0gaXRlbS5s
aXN0Y2hhaW4oKQotICAgIGdwYXRoID0gW2NoYWluWzBdLm5hbWVdCi0gICAgZnNwYXRoID0gY2hh
aW5bMF0uZnNwYXRoCi0gICAgZnNwYXJ0ID0gRmFsc2UKLSAgICBmb3Igbm9kZSBpbiBjaGFpblsx
Ol06Ci0gICAgICAgIG5ld2ZzcGF0aCA9IG5vZGUuZnNwYXRoCi0gICAgICAgIGlmIG5ld2ZzcGF0
aCA9PSBmc3BhdGg6Ci0gICAgICAgICAgICBpZiBmc3BhcnQ6Ci0gICAgICAgICAgICAgICAgZ3Bh
dGguYXBwZW5kKCc6JykKLSAgICAgICAgICAgICAgICBmc3BhcnQgPSBGYWxzZQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBncGF0aC5hcHBlbmQoJy4nKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgZ3BhdGguYXBwZW5kKCcvJykKLSAgICAgICAgICAgIGZzcGFydCA9IFRy
dWUKLSAgICAgICAgbmFtZSA9IG5vZGUubmFtZQotICAgICAgICBpZiBuYW1lWzBdIGluICcoWyc6
Ci0gICAgICAgICAgICBncGF0aC5wb3AoKQotICAgICAgICBncGF0aC5hcHBlbmQobmFtZSkKLSAg
ICAgICAgZnNwYXRoID0gbmV3ZnNwYXRoCi0gICAgcmV0dXJuICcnLmpvaW4oZ3BhdGgpCi0KLQot
Y2xhc3MgUmVzdWx0TG9nKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZywg
bG9nZmlsZSk6Ci0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0gICAgICAgIHNlbGYubG9n
ZmlsZSA9IGxvZ2ZpbGUgICMgcHJlZmVyYWJseSBsaW5lIGJ1ZmZlcmVkCi0KLSAgICBkZWYgd3Jp
dGVfbG9nX2VudHJ5KHNlbGYsIHRlc3RwYXRoLCBsZXR0ZXJjb2RlLCBsb25ncmVwcik6Ci0gICAg
ICAgIHByaW50KCIlcyAlcyIgJSAobGV0dGVyY29kZSwgdGVzdHBhdGgpLCBmaWxlPXNlbGYubG9n
ZmlsZSkKLSAgICAgICAgZm9yIGxpbmUgaW4gbG9uZ3JlcHIuc3BsaXRsaW5lcygpOgotICAgICAg
ICAgICAgcHJpbnQoIiAlcyIgJSBsaW5lLCBmaWxlPXNlbGYubG9nZmlsZSkKLQotICAgIGRlZiBs
b2dfb3V0Y29tZShzZWxmLCByZXBvcnQsIGxldHRlcmNvZGUsIGxvbmdyZXByKToKLSAgICAgICAg
dGVzdHBhdGggPSBnZXRhdHRyKHJlcG9ydCwgJ25vZGVpZCcsIE5vbmUpCi0gICAgICAgIGlmIHRl
c3RwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICB0ZXN0cGF0aCA9IHJlcG9ydC5mc3BhdGgKLSAg
ICAgICAgc2VsZi53cml0ZV9sb2dfZW50cnkodGVzdHBhdGgsIGxldHRlcmNvZGUsIGxvbmdyZXBy
KQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQpOgotICAg
ICAgICBpZiByZXBvcnQud2hlbiAhPSAiY2FsbCIgYW5kIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgcmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0
X3Rlc3RzdGF0dXMocmVwb3J0PXJlcG9ydCkKLSAgICAgICAgY29kZSA9IHJlc1sxXQotICAgICAg
ICBpZiBjb2RlID09ICd4JzoKLSAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25n
cmVwcikKLSAgICAgICAgZWxpZiBjb2RlID09ICdYJzoKLSAgICAgICAgICAgIGxvbmdyZXByID0g
JycKLSAgICAgICAgZWxpZiByZXBvcnQucGFzc2VkOgotICAgICAgICAgICAgbG9uZ3JlcHIgPSAi
IgotICAgICAgICBlbGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICBsb25ncmVwciA9IHN0
cihyZXBvcnQubG9uZ3JlcHIpCi0gICAgICAgIGVsaWYgcmVwb3J0LnNraXBwZWQ6Ci0gICAgICAg
ICAgICBsb25ncmVwciA9IHN0cihyZXBvcnQubG9uZ3JlcHJbMl0pCi0gICAgICAgIHNlbGYubG9n
X291dGNvbWUocmVwb3J0LCBjb2RlLCBsb25ncmVwcikKLQotICAgIGRlZiBweXRlc3RfY29sbGVj
dHJlcG9ydChzZWxmLCByZXBvcnQpOgotICAgICAgICBpZiBub3QgcmVwb3J0LnBhc3NlZDoKLSAg
ICAgICAgICAgIGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgY29kZSA9ICJGIgot
ICAgICAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwcikKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHJlcG9ydC5za2lwcGVkCi0gICAgICAg
ICAgICAgICAgY29kZSA9ICJTIgotICAgICAgICAgICAgICAgIGxvbmdyZXByID0gIiVzOiVkOiAl
cyIgJSByZXBvcnQubG9uZ3JlcHIKLSAgICAgICAgICAgIHNlbGYubG9nX291dGNvbWUocmVwb3J0
LCBjb2RlLCBsb25ncmVwcikKLQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCBl
eGNyZXByKToKLSAgICAgICAgcmVwcmNyYXNoID0gZ2V0YXR0cihleGNyZXByLCAncmVwcmNyYXNo
JywgTm9uZSkKLSAgICAgICAgcGF0aCA9IGdldGF0dHIocmVwcmNyYXNoLCAicGF0aCIsIE5vbmUp
Ci0gICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHBhdGggPSAiY3dkOiVzIiAl
IHB5LnBhdGgubG9jYWwoKQotICAgICAgICBzZWxmLndyaXRlX2xvZ19lbnRyeShwYXRoLCAnIScs
IHN0cihleGNyZXByKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcnVubmVyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ydW5uZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUwN2VkMmEyNDhiMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvcnVubmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTA2ICswLDAgQEAKLSIiIiBiYXNpYyBj
b2xsZWN0IGFuZCBydW50ZXN0IHByb3RvY29sIGltcGxlbWVudGF0aW9ucyAiIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IGJkYgotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1mcm9tIHRpbWUgaW1wb3J0IHRp
bWUKLQotaW1wb3J0IHB5Ci1mcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgVGVybWluYWxS
ZXByLCBFeGNlcHRpb25JbmZvCi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IHNraXAsIFNr
aXBwZWQsIFRFU1RfT1VUQ09NRQotCi0jCi0jIHB5dGVzdCBwbHVnaW4gaG9va3MKLQotCi1kZWYg
cHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0
ZXJtaW5hbCByZXBvcnRpbmciLCAicmVwb3J0aW5nIiwgYWZ0ZXI9ImdlbmVyYWwiKQotICAgIGdy
b3VwLmFkZG9wdGlvbignLS1kdXJhdGlvbnMnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249
InN0b3JlIiwgdHlwZT1pbnQsIGRlZmF1bHQ9Tm9uZSwgbWV0YXZhcj0iTiIsCi0gICAgICAgICAg
ICAgICAgICAgIGhlbHA9InNob3cgTiBzbG93ZXN0IHNldHVwL3Rlc3QgZHVyYXRpb25zIChOPTAg
Zm9yIGFsbCkuIiksCi0KLQotZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVw
b3J0ZXIpOgotICAgIGR1cmF0aW9ucyA9IHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLm9wdGlvbi5k
dXJhdGlvbnMKLSAgICBpZiBkdXJhdGlvbnMgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAg
dHIgPSB0ZXJtaW5hbHJlcG9ydGVyCi0gICAgZGxpc3QgPSBbXQotICAgIGZvciByZXBsaXN0IGlu
IHRyLnN0YXRzLnZhbHVlcygpOgotICAgICAgICBmb3IgcmVwIGluIHJlcGxpc3Q6Ci0gICAgICAg
ICAgICBpZiBoYXNhdHRyKHJlcCwgJ2R1cmF0aW9uJyk6Ci0gICAgICAgICAgICAgICAgZGxpc3Qu
YXBwZW5kKHJlcCkKLSAgICBpZiBub3QgZGxpc3Q6Ci0gICAgICAgIHJldHVybgotICAgIGRsaXN0
LnNvcnQoa2V5PWxhbWJkYSB4OiB4LmR1cmF0aW9uKQotICAgIGRsaXN0LnJldmVyc2UoKQotICAg
IGlmIG5vdCBkdXJhdGlvbnM6Ci0gICAgICAgIHRyLndyaXRlX3NlcCgiPSIsICJzbG93ZXN0IHRl
c3QgZHVyYXRpb25zIikKLSAgICBlbHNlOgotICAgICAgICB0ci53cml0ZV9zZXAoIj0iLCAic2xv
d2VzdCAlcyB0ZXN0IGR1cmF0aW9ucyIgJSBkdXJhdGlvbnMpCi0gICAgICAgIGRsaXN0ID0gZGxp
c3RbOmR1cmF0aW9uc10KLQotICAgIGZvciByZXAgaW4gZGxpc3Q6Ci0gICAgICAgIG5vZGVpZCA9
IHJlcC5ub2RlaWQucmVwbGFjZSgiOjooKTo6IiwgIjo6IikKLSAgICAgICAgdHIud3JpdGVfbGlu
ZSgiJTAyLjJmcyAlLThzICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgKHJlcC5kdXJhdGlv
biwgcmVwLndoZW4sIG5vZGVpZCkpCi0KLQotZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lv
bik6Ci0gICAgc2Vzc2lvbi5fc2V0dXBzdGF0ZSA9IFNldHVwU3RhdGUoKQotCi0KLWRlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uKToKLSAgICBzZXNzaW9uLl9zZXR1cHN0YXRlLnRlYXJk
b3duX2FsbCgpCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0sIG5leHRpdGVt
KToKLSAgICBpdGVtLmlob29rLnB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KAotICAgICAgICBub2Rl
aWQ9aXRlbS5ub2RlaWQsIGxvY2F0aW9uPWl0ZW0ubG9jYXRpb24sCi0gICAgKQotICAgIHJ1bnRl
c3Rwcm90b2NvbChpdGVtLCBuZXh0aXRlbT1uZXh0aXRlbSkKLSAgICByZXR1cm4gVHJ1ZQotCi0K
LWRlZiBydW50ZXN0cHJvdG9jb2woaXRlbSwgbG9nPVRydWUsIG5leHRpdGVtPU5vbmUpOgotICAg
IGhhc3JlcXVlc3QgPSBoYXNhdHRyKGl0ZW0sICJfcmVxdWVzdCIpCi0gICAgaWYgaGFzcmVxdWVz
dCBhbmQgbm90IGl0ZW0uX3JlcXVlc3Q6Ci0gICAgICAgIGl0ZW0uX2luaXRyZXF1ZXN0KCkKLSAg
ICByZXAgPSBjYWxsX2FuZF9yZXBvcnQoaXRlbSwgInNldHVwIiwgbG9nKQotICAgIHJlcG9ydHMg
PSBbcmVwXQotICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgIGlmIGl0ZW0uY29uZmlnLm9wdGlv
bi5zZXR1cHNob3c6Ci0gICAgICAgICAgICBzaG93X3Rlc3RfaXRlbShpdGVtKQotICAgICAgICBp
ZiBub3QgaXRlbS5jb25maWcub3B0aW9uLnNldHVwb25seToKLSAgICAgICAgICAgIHJlcG9ydHMu
YXBwZW5kKGNhbGxfYW5kX3JlcG9ydChpdGVtLCAiY2FsbCIsIGxvZykpCi0gICAgcmVwb3J0cy5h
cHBlbmQoY2FsbF9hbmRfcmVwb3J0KGl0ZW0sICJ0ZWFyZG93biIsIGxvZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGl0ZW09bmV4dGl0ZW0pKQotICAgICMgYWZ0ZXIg
YWxsIHRlYXJkb3duIGhvb2tzIGhhdmUgYmVlbiBjYWxsZWQKLSAgICAjIHdhbnQgZnVuY2FyZ3Mg
YW5kIHJlcXVlc3QgaW5mbyB0byBnbyBhd2F5Ci0gICAgaWYgaGFzcmVxdWVzdDoKLSAgICAgICAg
aXRlbS5fcmVxdWVzdCA9IEZhbHNlCi0gICAgICAgIGl0ZW0uZnVuY2FyZ3MgPSBOb25lCi0gICAg
cmV0dXJuIHJlcG9ydHMKLQotCi1kZWYgc2hvd190ZXN0X2l0ZW0oaXRlbSk6Ci0gICAgIiIiU2hv
dyB0ZXN0IGZ1bmN0aW9uLCBwYXJhbWV0ZXJzIGFuZCB0aGUgZml4dHVyZXMgb2YgdGhlIHRlc3Qg
aXRlbS4iIiIKLSAgICB0dyA9IGl0ZW0uY29uZmlnLmdldF90ZXJtaW5hbF93cml0ZXIoKQotICAg
IHR3LmxpbmUoKQotICAgIHR3LndyaXRlKCcgJyAqIDgpCi0gICAgdHcud3JpdGUoaXRlbS5fbm9k
ZWlkKQotICAgIHVzZWRfZml4dHVyZXMgPSBzb3J0ZWQoaXRlbS5fZml4dHVyZWluZm8ubmFtZTJm
aXh0dXJlZGVmcy5rZXlzKCkpCi0gICAgaWYgdXNlZF9maXh0dXJlczoKLSAgICAgICAgdHcud3Jp
dGUoJyAoZml4dHVyZXMgdXNlZDogezB9KScuZm9ybWF0KCcsICcuam9pbih1c2VkX2ZpeHR1cmVz
KSkpCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgIF91cGRhdGVfY3Vy
cmVudF90ZXN0X3ZhcihpdGVtLCAnc2V0dXAnKQotICAgIGl0ZW0uc2Vzc2lvbi5fc2V0dXBzdGF0
ZS5wcmVwYXJlKGl0ZW0pCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoaXRlbSk6Ci0gICAg
X3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sICdjYWxsJykKLSAgICB0cnk6Ci0gICAgICAg
IGl0ZW0ucnVudGVzdCgpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgIyBTdG9yZSB0
cmFjZSBpbmZvIHRvIGFsbG93IHBvc3Rtb3J0ZW0gZGVidWdnaW5nCi0gICAgICAgIHR5cGUsIHZh
bHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgIHRiID0gdGIudGJfbmV4dCAgIyBTa2lw
ICp0aGlzKiBmcmFtZQotICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQotICAgICAgICBzeXMu
bGFzdF92YWx1ZSA9IHZhbHVlCi0gICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCi0gICAg
ICAgIGRlbCB0YiAgIyBHZXQgcmlkIG9mIGl0IGluIHRoaXMgbmFtZXNwYWNlCi0gICAgICAgIHJh
aXNlCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duKGl0ZW0sIG5leHRpdGVtKToKLSAg
ICBfdXBkYXRlX2N1cnJlbnRfdGVzdF92YXIoaXRlbSwgJ3RlYXJkb3duJykKLSAgICBpdGVtLnNl
c3Npb24uX3NldHVwc3RhdGUudGVhcmRvd25fZXhhY3QoaXRlbSwgbmV4dGl0ZW0pCi0gICAgX3Vw
ZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sIE5vbmUpCi0KLQotZGVmIF91cGRhdGVfY3VycmVu
dF90ZXN0X3ZhcihpdGVtLCB3aGVuKToKLSAgICAiIiIKLSAgICBVcGRhdGUgUFlURVNUX0NVUlJF
TlRfVEVTVCB0byByZWZsZWN0IHRoZSBjdXJyZW50IGl0ZW0gYW5kIHN0YWdlLgotCi0gICAgSWYg
YGB3aGVuYGAgaXMgTm9uZSwgZGVsZXRlIFBZVEVTVF9DVVJSRU5UX1RFU1QgZnJvbSB0aGUgZW52
aXJvbm1lbnQuCi0gICAgIiIiCi0gICAgdmFyX25hbWUgPSAnUFlURVNUX0NVUlJFTlRfVEVTVCcK
LSAgICBpZiB3aGVuOgotICAgICAgICB2YWx1ZSA9ICd7MH0gKHsxfSknLmZvcm1hdChpdGVtLm5v
ZGVpZCwgd2hlbikKLSAgICAgICAgIyBkb24ndCBhbGxvdyBudWxsIGJ5dGVzIG9uIGVudmlyb25t
ZW50IHZhcmlhYmxlcyAoc2VlICMyNjQ0LCAjMjk1NykKLSAgICAgICAgdmFsdWUgPSB2YWx1ZS5y
ZXBsYWNlKCdceDAwJywgJyhudWxsKScpCi0gICAgICAgIG9zLmVudmlyb25bdmFyX25hbWVdID0g
dmFsdWUKLSAgICBlbHNlOgotICAgICAgICBvcy5lbnZpcm9uLnBvcCh2YXJfbmFtZSkKLQotCi1k
ZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6Ci0gICAgaWYgcmVwb3J0LndoZW4g
aW4gKCJzZXR1cCIsICJ0ZWFyZG93biIpOgotICAgICAgICBpZiByZXBvcnQuZmFpbGVkOgotICAg
ICAgICAgICAgIyAgICAgIGNhdGVnb3J5LCBzaG9ydGxldHRlciwgdmVyYm9zZS13b3JkCi0gICAg
ICAgICAgICByZXR1cm4gImVycm9yIiwgIkUiLCAiRVJST1IiCi0gICAgICAgIGVsaWYgcmVwb3J0
LnNraXBwZWQ6Ci0gICAgICAgICAgICByZXR1cm4gInNraXBwZWQiLCAicyIsICJTS0lQUEVEIgot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIiLCAiIiwgIiIKLQotCi0jCi0jIElt
cGxlbWVudGF0aW9uCi0KLWRlZiBjYWxsX2FuZF9yZXBvcnQoaXRlbSwgd2hlbiwgbG9nPVRydWUs
ICoqa3dkcyk6Ci0gICAgY2FsbCA9IGNhbGxfcnVudGVzdF9ob29rKGl0ZW0sIHdoZW4sICoqa3dk
cykKLSAgICBob29rID0gaXRlbS5paG9vawotICAgIHJlcG9ydCA9IGhvb2sucHl0ZXN0X3J1bnRl
c3RfbWFrZXJlcG9ydChpdGVtPWl0ZW0sIGNhbGw9Y2FsbCkKLSAgICBpZiBsb2c6Ci0gICAgICAg
IGhvb2sucHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHJlcG9ydD1yZXBvcnQpCi0gICAgaWYgY2hl
Y2tfaW50ZXJhY3RpdmVfZXhjZXB0aW9uKGNhbGwsIHJlcG9ydCk6Ci0gICAgICAgIGhvb2sucHl0
ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChub2RlPWl0ZW0sIGNhbGw9Y2FsbCwgcmVwb3J0PXJlcG9y
dCkKLSAgICByZXR1cm4gcmVwb3J0Ci0KLQotZGVmIGNoZWNrX2ludGVyYWN0aXZlX2V4Y2VwdGlv
bihjYWxsLCByZXBvcnQpOgotICAgIHJldHVybiBjYWxsLmV4Y2luZm8gYW5kIG5vdCAoCi0gICAg
ICAgIGhhc2F0dHIocmVwb3J0LCAid2FzeGZhaWwiKSBvcgotICAgICAgICBjYWxsLmV4Y2luZm8u
ZXJyaXNpbnN0YW5jZShza2lwLkV4Y2VwdGlvbikgb3IKLSAgICAgICAgY2FsbC5leGNpbmZvLmVy
cmlzaW5zdGFuY2UoYmRiLkJkYlF1aXQpKQotCi0KLWRlZiBjYWxsX3J1bnRlc3RfaG9vayhpdGVt
LCB3aGVuLCAqKmt3ZHMpOgotICAgIGhvb2tuYW1lID0gInB5dGVzdF9ydW50ZXN0XyIgKyB3aGVu
Ci0gICAgaWhvb2sgPSBnZXRhdHRyKGl0ZW0uaWhvb2ssIGhvb2tuYW1lKQotICAgIHJldHVybiBD
YWxsSW5mbyhsYW1iZGE6IGlob29rKGl0ZW09aXRlbSwgKiprd2RzKSwgd2hlbj13aGVuKQotCi0K
LWNsYXNzIENhbGxJbmZvOgotICAgICIiIiBSZXN1bHQvRXhjZXB0aW9uIGluZm8gYSBmdW5jdGlv
biBpbnZvY2F0aW9uLiAiIiIKLSAgICAjOiBOb25lIG9yIEV4Y2VwdGlvbkluZm8gb2JqZWN0Lgot
ICAgIGV4Y2luZm8gPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgd2hlbik6
Ci0gICAgICAgICM6IGNvbnRleHQgb2YgaW52b2NhdGlvbjogb25lIG9mICJzZXR1cCIsICJjYWxs
IiwKLSAgICAgICAgIzogInRlYXJkb3duIiwgIm1lbW9jb2xsZWN0IgotICAgICAgICBzZWxmLndo
ZW4gPSB3aGVuCi0gICAgICAgIHNlbGYuc3RhcnQgPSB0aW1lKCkKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgc2VsZi5yZXN1bHQgPSBmdW5jKCkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50
ZXJydXB0OgotICAgICAgICAgICAgc2VsZi5zdG9wID0gdGltZSgpCi0gICAgICAgICAgICByYWlz
ZQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIHNlbGYuZXhjaW5mbyA9IEV4
Y2VwdGlvbkluZm8oKQotICAgICAgICBzZWxmLnN0b3AgPSB0aW1lKCkKLQotICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5leGNpbmZvOgotICAgICAgICAgICAgc3RhdHVz
ID0gImV4Y2VwdGlvbjogJXMiICUgc3RyKHNlbGYuZXhjaW5mby52YWx1ZSkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHN0YXR1cyA9ICJyZXN1bHQ6ICVyIiAlIChzZWxmLnJlc3VsdCwpCi0g
ICAgICAgIHJldHVybiAiPENhbGxJbmZvIHdoZW49JXIgJXM+IiAlIChzZWxmLndoZW4sIHN0YXR1
cykKLQotCi1kZWYgZ2V0c2xhdmVpbmZvbGluZShub2RlKToKLSAgICB0cnk6Ci0gICAgICAgIHJl
dHVybiBub2RlLl9zbGF2ZWluZm9jYWNoZQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAg
ICAgICAgZCA9IG5vZGUuc2xhdmVpbmZvCi0gICAgICAgIHZlciA9ICIlcy4lcy4lcyIgJSBkWyd2
ZXJzaW9uX2luZm8nXVs6M10KLSAgICAgICAgbm9kZS5fc2xhdmVpbmZvY2FjaGUgPSBzID0gIlsl
c10gJXMgLS0gUHl0aG9uICVzICVzIiAlICgKLSAgICAgICAgICAgIGRbJ2lkJ10sIGRbJ3N5c3Bs
YXRmb3JtJ10sIHZlciwgZFsnZXhlY3V0YWJsZSddKQotICAgICAgICByZXR1cm4gcwotCi0KLWNs
YXNzIEJhc2VSZXBvcnQob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToK
LSAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoa3cpCi0KLSAgICBkZWYgdG90ZXJtaW5hbChz
ZWxmLCBvdXQpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdub2RlJyk6Ci0gICAgICAgICAg
ICBvdXQubGluZShnZXRzbGF2ZWluZm9saW5lKHNlbGYubm9kZSkpCi0KLSAgICAgICAgbG9uZ3Jl
cHIgPSBzZWxmLmxvbmdyZXByCi0gICAgICAgIGlmIGxvbmdyZXByIGlzIE5vbmU6Ci0gICAgICAg
ICAgICByZXR1cm4KLQotICAgICAgICBpZiBoYXNhdHRyKGxvbmdyZXByLCAndG90ZXJtaW5hbCcp
OgotICAgICAgICAgICAgbG9uZ3JlcHIudG90ZXJtaW5hbChvdXQpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3V0LmxpbmUobG9uZ3JlcHIpCi0gICAg
ICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgotICAgICAgICAgICAgICAgIG91dC5s
aW5lKCI8dW5wcmludGFibGUgbG9uZ3JlcHI+IikKLQotICAgIGRlZiBnZXRfc2VjdGlvbnMoc2Vs
ZiwgcHJlZml4KToKLSAgICAgICAgZm9yIG5hbWUsIGNvbnRlbnQgaW4gc2VsZi5zZWN0aW9uczoK
LSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgICAg
IHlpZWxkIHByZWZpeCwgY29udGVudAotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGxvbmdyZXBy
dGV4dChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJlYWQtb25seSBwcm9wZXJ0eSB0aGF0
IHJldHVybnMgdGhlIGZ1bGwgc3RyaW5nIHJlcHJlc2VudGF0aW9uCi0gICAgICAgIG9mIGBgbG9u
Z3JlcHJgYC4KLQotICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjAKLSAgICAgICAgIiIiCi0g
ICAgICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoc3RyaW5naW89VHJ1ZSkKLSAgICAgICAg
dHcuaGFzbWFya3VwID0gRmFsc2UKLSAgICAgICAgc2VsZi50b3Rlcm1pbmFsKHR3KQotICAgICAg
ICBleGMgPSB0dy5zdHJpbmdpby5nZXR2YWx1ZSgpCi0gICAgICAgIHJldHVybiBleGMuc3RyaXAo
KQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGNhcHN0ZG91dChzZWxmKToKLSAgICAgICAgIiIi
UmV0dXJuIGNhcHR1cmVkIHRleHQgZnJvbSBzdGRvdXQsIGlmIGNhcHR1cmluZyBpcyBlbmFibGVk
Ci0KLSAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4wCi0gICAgICAgICIiIgotICAgICAgICBy
ZXR1cm4gJycuam9pbihjb250ZW50IGZvciAocHJlZml4LCBjb250ZW50KSBpbiBzZWxmLmdldF9z
ZWN0aW9ucygnQ2FwdHVyZWQgc3Rkb3V0JykpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgY2Fw
c3RkZXJyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gY2FwdHVyZWQgdGV4dCBmcm9tIHN0ZGVy
ciwgaWYgY2FwdHVyaW5nIGlzIGVuYWJsZWQKLQotICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAz
LjAKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAnJy5qb2luKGNvbnRlbnQgZm9yIChwcmVm
aXgsIGNvbnRlbnQpIGluIHNlbGYuZ2V0X3NlY3Rpb25zKCdDYXB0dXJlZCBzdGRlcnInKSkKLQot
ICAgIHBhc3NlZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0gInBhc3NlZCIpCi0g
ICAgZmFpbGVkID0gcHJvcGVydHkobGFtYmRhIHg6IHgub3V0Y29tZSA9PSAiZmFpbGVkIikKLSAg
ICBza2lwcGVkID0gcHJvcGVydHkobGFtYmRhIHg6IHgub3V0Y29tZSA9PSAic2tpcHBlZCIpCi0K
LSAgICBAcHJvcGVydHkKLSAgICBkZWYgZnNwYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5ub2RlaWQuc3BsaXQoIjo6IilbMF0KLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9y
dChpdGVtLCBjYWxsKToKLSAgICB3aGVuID0gY2FsbC53aGVuCi0gICAgZHVyYXRpb24gPSBjYWxs
LnN0b3AgLSBjYWxsLnN0YXJ0Ci0gICAga2V5d29yZHMgPSBkaWN0KFsoeCwgMSkgZm9yIHggaW4g
aXRlbS5rZXl3b3Jkc10pCi0gICAgZXhjaW5mbyA9IGNhbGwuZXhjaW5mbwotICAgIHNlY3Rpb25z
ID0gW10KLSAgICBpZiBub3QgY2FsbC5leGNpbmZvOgotICAgICAgICBvdXRjb21lID0gInBhc3Nl
ZCIKLSAgICAgICAgbG9uZ3JlcHIgPSBOb25lCi0gICAgZWxzZToKLSAgICAgICAgaWYgbm90IGlz
aW5zdGFuY2UoZXhjaW5mbywgRXhjZXB0aW9uSW5mbyk6Ci0gICAgICAgICAgICBvdXRjb21lID0g
ImZhaWxlZCIKLSAgICAgICAgICAgIGxvbmdyZXByID0gZXhjaW5mbwotICAgICAgICBlbGlmIGV4
Y2luZm8uZXJyaXNpbnN0YW5jZShza2lwLkV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBvdXRjb21l
ID0gInNraXBwZWQiCi0gICAgICAgICAgICByID0gZXhjaW5mby5fZ2V0cmVwcmNyYXNoKCkKLSAg
ICAgICAgICAgIGxvbmdyZXByID0gKHN0cihyLnBhdGgpLCByLmxpbmVubywgci5tZXNzYWdlKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0Y29tZSA9ICJmYWlsZWQiCi0gICAgICAgICAg
ICBpZiBjYWxsLndoZW4gPT0gImNhbGwiOgotICAgICAgICAgICAgICAgIGxvbmdyZXByID0gaXRl
bS5yZXByX2ZhaWx1cmUoZXhjaW5mbykKLSAgICAgICAgICAgIGVsc2U6ICAjIGV4Y2VwdGlvbiBp
biBzZXR1cCBvciB0ZWFyZG93bgotICAgICAgICAgICAgICAgIGxvbmdyZXByID0gaXRlbS5fcmVw
cl9mYWlsdXJlX3B5KGV4Y2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3R5bGU9aXRlbS5jb25maWcub3B0aW9uLnRic3R5bGUpCi0gICAgZm9y
IHJ3aGVuLCBrZXksIGNvbnRlbnQgaW4gaXRlbS5fcmVwb3J0X3NlY3Rpb25zOgotICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCAlcyAlcyIgJSAoa2V5LCByd2hlbiksIGNvbnRlbnQp
KQotICAgIHJldHVybiBUZXN0UmVwb3J0KGl0ZW0ubm9kZWlkLCBpdGVtLmxvY2F0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLCBvdXRjb21lLCBsb25ncmVwciwgd2hlbiwKLSAg
ICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucywgZHVyYXRpb24pCi0KLQotY2xhc3MgVGVzdFJl
cG9ydChCYXNlUmVwb3J0KToKLSAgICAiIiIgQmFzaWMgdGVzdCByZXBvcnQgb2JqZWN0IChhbHNv
IHVzZWQgZm9yIHNldHVwIGFuZCB0ZWFyZG93biBjYWxscyBpZgotICAgIHRoZXkgZmFpbCkuCi0g
ICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZWlkLCBsb2NhdGlvbiwga2V5d29y
ZHMsIG91dGNvbWUsCi0gICAgICAgICAgICAgICAgIGxvbmdyZXByLCB3aGVuLCBzZWN0aW9ucz0o
KSwgZHVyYXRpb249MCwgKipleHRyYSk6Ci0gICAgICAgICM6IG5vcm1hbGl6ZWQgY29sbGVjdGlv
biBub2RlIGlkCi0gICAgICAgIHNlbGYubm9kZWlkID0gbm9kZWlkCi0KLSAgICAgICAgIzogYSAo
ZmlsZXN5c3RlbXBhdGgsIGxpbmVubywgZG9tYWluaW5mbykgdHVwbGUgaW5kaWNhdGluZyB0aGUK
LSAgICAgICAgIzogYWN0dWFsIGxvY2F0aW9uIG9mIGEgdGVzdCBpdGVtIC0gaXQgbWlnaHQgYmUg
ZGlmZmVyZW50IGZyb20gdGhlCi0gICAgICAgICM6IGNvbGxlY3RlZCBvbmUgZS5nLiBpZiBhIG1l
dGhvZCBpcyBpbmhlcml0ZWQgZnJvbSBhIGRpZmZlcmVudCBtb2R1bGUuCi0gICAgICAgIHNlbGYu
bG9jYXRpb24gPSBsb2NhdGlvbgotCi0gICAgICAgICM6IGEgbmFtZSAtPiB2YWx1ZSBkaWN0aW9u
YXJ5IGNvbnRhaW5pbmcgYWxsIGtleXdvcmRzIGFuZAotICAgICAgICAjOiBtYXJrZXJzIGFzc29j
aWF0ZWQgd2l0aCBhIHRlc3QgaW52b2NhdGlvbi4KLSAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGtl
eXdvcmRzCi0KLSAgICAgICAgIzogdGVzdCBvdXRjb21lLCBhbHdheXMgb25lIG9mICJwYXNzZWQi
LCAiZmFpbGVkIiwgInNraXBwZWQiLgotICAgICAgICBzZWxmLm91dGNvbWUgPSBvdXRjb21lCi0K
LSAgICAgICAgIzogTm9uZSBvciBhIGZhaWx1cmUgcmVwcmVzZW50YXRpb24uCi0gICAgICAgIHNl
bGYubG9uZ3JlcHIgPSBsb25ncmVwcgotCi0gICAgICAgICM6IG9uZSBvZiAnc2V0dXAnLCAnY2Fs
bCcsICd0ZWFyZG93bicgdG8gaW5kaWNhdGUgcnVudGVzdCBwaGFzZS4KLSAgICAgICAgc2VsZi53
aGVuID0gd2hlbgotCi0gICAgICAgICM6IGxpc3Qgb2YgcGFpcnMgYGAoc3RyLCBzdHIpYGAgb2Yg
ZXh0cmEgaW5mb3JtYXRpb24gd2hpY2ggbmVlZHMgdG8KLSAgICAgICAgIzogbWFyc2hhbGxhYmxl
LiBVc2VkIGJ5IHB5dGVzdCB0byBhZGQgY2FwdHVyZWQgdGV4dAotICAgICAgICAjOiBmcm9tIGBg
c3Rkb3V0YGAgYW5kIGBgc3RkZXJyYGAsIGJ1dCBtYXkgYmUgdXNlZCBieSBvdGhlciBwbHVnaW5z
Ci0gICAgICAgICM6IHRvIGFkZCBhcmJpdHJhcnkgaW5mb3JtYXRpb24gdG8gcmVwb3J0cy4KLSAg
ICAgICAgc2VsZi5zZWN0aW9ucyA9IGxpc3Qoc2VjdGlvbnMpCi0KLSAgICAgICAgIzogdGltZSBp
dCB0b29rIHRvIHJ1biBqdXN0IHRoZSB0ZXN0Ci0gICAgICAgIHNlbGYuZHVyYXRpb24gPSBkdXJh
dGlvbgotCi0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGV4dHJhKQotCi0gICAgZGVmIF9f
cmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxUZXN0UmVwb3J0ICVyIHdoZW49JXIgb3V0
Y29tZT0lcj4iICUgKAotICAgICAgICAgICAgc2VsZi5ub2RlaWQsIHNlbGYud2hlbiwgc2VsZi5v
dXRjb21lKQotCi0KLWNsYXNzIFRlYXJkb3duRXJyb3JSZXBvcnQoQmFzZVJlcG9ydCk6Ci0gICAg
b3V0Y29tZSA9ICJmYWlsZWQiCi0gICAgd2hlbiA9ICJ0ZWFyZG93biIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb25ncmVwciwgKipleHRyYSk6Ci0gICAgICAgIHNlbGYubG9uZ3JlcHIgPSBs
b25ncmVwcgotICAgICAgICBzZWxmLnNlY3Rpb25zID0gW10KLSAgICAgICAgc2VsZi5fX2RpY3Rf
Xy51cGRhdGUoZXh0cmEpCi0KLQotZGVmIHB5dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxl
Y3Rvcik6Ci0gICAgY2FsbCA9IENhbGxJbmZvKAotICAgICAgICBsYW1iZGE6IGxpc3QoY29sbGVj
dG9yLmNvbGxlY3QoKSksCi0gICAgICAgICdjb2xsZWN0JykKLSAgICBsb25ncmVwciA9IE5vbmUK
LSAgICBpZiBub3QgY2FsbC5leGNpbmZvOgotICAgICAgICBvdXRjb21lID0gInBhc3NlZCIKLSAg
ICBlbHNlOgotICAgICAgICBmcm9tIF9weXRlc3QgaW1wb3J0IG5vc2UKLSAgICAgICAgc2tpcF9l
eGNlcHRpb25zID0gKFNraXBwZWQsKSArIG5vc2UuZ2V0X3NraXBfZXhjZXB0aW9ucygpCi0gICAg
ICAgIGlmIGNhbGwuZXhjaW5mby5lcnJpc2luc3RhbmNlKHNraXBfZXhjZXB0aW9ucyk6Ci0gICAg
ICAgICAgICBvdXRjb21lID0gInNraXBwZWQiCi0gICAgICAgICAgICByID0gY29sbGVjdG9yLl9y
ZXByX2ZhaWx1cmVfcHkoY2FsbC5leGNpbmZvLCAibGluZSIpLnJlcHJjcmFzaAotICAgICAgICAg
ICAgbG9uZ3JlcHIgPSAoc3RyKHIucGF0aCksIHIubGluZW5vLCByLm1lc3NhZ2UpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBvdXRjb21lID0gImZhaWxlZCIKLSAgICAgICAgICAgIGVycm9y
aW5mbyA9IGNvbGxlY3Rvci5yZXByX2ZhaWx1cmUoY2FsbC5leGNpbmZvKQotICAgICAgICAgICAg
aWYgbm90IGhhc2F0dHIoZXJyb3JpbmZvLCAidG90ZXJtaW5hbCIpOgotICAgICAgICAgICAgICAg
IGVycm9yaW5mbyA9IENvbGxlY3RFcnJvclJlcHIoZXJyb3JpbmZvKQotICAgICAgICAgICAgbG9u
Z3JlcHIgPSBlcnJvcmluZm8KLSAgICByZXAgPSBDb2xsZWN0UmVwb3J0KGNvbGxlY3Rvci5ub2Rl
aWQsIG91dGNvbWUsIGxvbmdyZXByLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihj
YWxsLCAncmVzdWx0JywgTm9uZSkpCi0gICAgcmVwLmNhbGwgPSBjYWxsICAjIHNlZSBjb2xsZWN0
X29uZV9ub2RlCi0gICAgcmV0dXJuIHJlcAotCi0KLWNsYXNzIENvbGxlY3RSZXBvcnQoQmFzZVJl
cG9ydCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGVpZCwgb3V0Y29tZSwgbG9uZ3JlcHIs
IHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgc2VjdGlvbnM9KCksICoqZXh0cmEpOgotICAgICAg
ICBzZWxmLm5vZGVpZCA9IG5vZGVpZAotICAgICAgICBzZWxmLm91dGNvbWUgPSBvdXRjb21lCi0g
ICAgICAgIHNlbGYubG9uZ3JlcHIgPSBsb25ncmVwcgotICAgICAgICBzZWxmLnJlc3VsdCA9IHJl
c3VsdCBvciBbXQotICAgICAgICBzZWxmLnNlY3Rpb25zID0gbGlzdChzZWN0aW9ucykKLSAgICAg
ICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZXh0cmEpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYg
bG9jYXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5mc3BhdGgsIE5vbmUsIHNlbGYu
ZnNwYXRoKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxDb2xs
ZWN0UmVwb3J0ICVyIGxlbnJlc3VsdD0lcyBvdXRjb21lPSVyPiIgJSAoCi0gICAgICAgICAgICBz
ZWxmLm5vZGVpZCwgbGVuKHNlbGYucmVzdWx0KSwgc2VsZi5vdXRjb21lKQotCi0KLWNsYXNzIENv
bGxlY3RFcnJvclJlcHIoVGVybWluYWxSZXByKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNn
KToKLSAgICAgICAgc2VsZi5sb25ncmVwciA9IG1zZwotCi0gICAgZGVmIHRvdGVybWluYWwoc2Vs
Ziwgb3V0KToKLSAgICAgICAgb3V0LmxpbmUoc2VsZi5sb25ncmVwciwgcmVkPVRydWUpCi0KLQot
Y2xhc3MgU2V0dXBTdGF0ZShvYmplY3QpOgotICAgICIiIiBzaGFyZWQgc3RhdGUgZm9yIHNldHRp
bmcgdXAvdGVhcmluZyBkb3duIHRlc3QgaXRlbXMgb3IgY29sbGVjdG9ycy4gIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc3RhY2sgPSBbXQotICAgICAgICBzZWxm
Ll9maW5hbGl6ZXJzID0ge30KLQotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVy
LCBjb2xpdGVtKToKLSAgICAgICAgIiIiIGF0dGFjaCBhIGZpbmFsaXplciB0byB0aGUgZ2l2ZW4g
Y29saXRlbS4KLSAgICAgICAgaWYgY29saXRlbSBpcyBOb25lLCB0aGlzIHdpbGwgYWRkIGEgZmlu
YWxpemVyIHRoYXQKLSAgICAgICAgaXMgY2FsbGVkIGF0IHRoZSBlbmQgb2YgdGVhcmRvd25fYWxs
KCkuCi0gICAgICAgICIiIgotICAgICAgICBhc3NlcnQgY29saXRlbSBhbmQgbm90IGlzaW5zdGFu
Y2UoY29saXRlbSwgdHVwbGUpCi0gICAgICAgIGFzc2VydCBjYWxsYWJsZShmaW5hbGl6ZXIpCi0g
ICAgICAgICMgYXNzZXJ0IGNvbGl0ZW0gaW4gc2VsZi5zdGFjayAgIyBzb21lIHVuaXQgdGVzdHMg
ZG9uJ3Qgc2V0dXAgc3RhY2sgOi8KLSAgICAgICAgc2VsZi5fZmluYWxpemVycy5zZXRkZWZhdWx0
KGNvbGl0ZW0sIFtdKS5hcHBlbmQoZmluYWxpemVyKQotCi0gICAgZGVmIF9wb3BfYW5kX3RlYXJk
b3duKHNlbGYpOgotICAgICAgICBjb2xpdGVtID0gc2VsZi5zdGFjay5wb3AoKQotICAgICAgICBz
ZWxmLl90ZWFyZG93bl93aXRoX2ZpbmFsaXphdGlvbihjb2xpdGVtKQotCi0gICAgZGVmIF9jYWxs
ZmluYWxpemVycyhzZWxmLCBjb2xpdGVtKToKLSAgICAgICAgZmluYWxpemVycyA9IHNlbGYuX2Zp
bmFsaXplcnMucG9wKGNvbGl0ZW0sIE5vbmUpCi0gICAgICAgIGV4YyA9IE5vbmUKLSAgICAgICAg
d2hpbGUgZmluYWxpemVyczoKLSAgICAgICAgICAgIGZpbiA9IGZpbmFsaXplcnMucG9wKCkKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmaW4oKQotICAgICAgICAgICAgZXhjZXB0
IFRFU1RfT1VUQ09NRToKLSAgICAgICAgICAgICAgICAjIFhYWCBPbmx5IGZpcnN0IGV4Y2VwdGlv
biB3aWxsIGJlIHNlZW4gYnkgdXNlciwKLSAgICAgICAgICAgICAgICAjICAgICBpZGVhbGx5IGFs
bCBzaG91bGQgYmUgcmVwb3J0ZWQuCi0gICAgICAgICAgICAgICAgaWYgZXhjIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgICAgIGV4YyA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgIGlmIGV4YzoK
LSAgICAgICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoKmV4YykKLQotICAgIGRlZiBfdGVhcmRv
d25fd2l0aF9maW5hbGl6YXRpb24oc2VsZiwgY29saXRlbSk6Ci0gICAgICAgIHNlbGYuX2NhbGxm
aW5hbGl6ZXJzKGNvbGl0ZW0pCi0gICAgICAgIGlmIGhhc2F0dHIoY29saXRlbSwgInRlYXJkb3du
Iik6Ci0gICAgICAgICAgICBjb2xpdGVtLnRlYXJkb3duKCkKLSAgICAgICAgZm9yIGNvbGl0ZW0g
aW4gc2VsZi5fZmluYWxpemVyczoKLSAgICAgICAgICAgIGFzc2VydCBjb2xpdGVtIGlzIE5vbmUg
b3IgY29saXRlbSBpbiBzZWxmLnN0YWNrIFwKLSAgICAgICAgICAgICAgICBvciBpc2luc3RhbmNl
KGNvbGl0ZW0sIHR1cGxlKQotCi0gICAgZGVmIHRlYXJkb3duX2FsbChzZWxmKToKLSAgICAgICAg
d2hpbGUgc2VsZi5zdGFjazoKLSAgICAgICAgICAgIHNlbGYuX3BvcF9hbmRfdGVhcmRvd24oKQot
ICAgICAgICBmb3Iga2V5IGluIGxpc3Qoc2VsZi5fZmluYWxpemVycyk6Ci0gICAgICAgICAgICBz
ZWxmLl90ZWFyZG93bl93aXRoX2ZpbmFsaXphdGlvbihrZXkpCi0gICAgICAgIGFzc2VydCBub3Qg
c2VsZi5fZmluYWxpemVycwotCi0gICAgZGVmIHRlYXJkb3duX2V4YWN0KHNlbGYsIGl0ZW0sIG5l
eHRpdGVtKToKLSAgICAgICAgbmVlZGVkX2NvbGxlY3RvcnMgPSBuZXh0aXRlbSBhbmQgbmV4dGl0
ZW0ubGlzdGNoYWluKCkgb3IgW10KLSAgICAgICAgc2VsZi5fdGVhcmRvd25fdG93YXJkcyhuZWVk
ZWRfY29sbGVjdG9ycykKLQotICAgIGRlZiBfdGVhcmRvd25fdG93YXJkcyhzZWxmLCBuZWVkZWRf
Y29sbGVjdG9ycyk6Ci0gICAgICAgIHdoaWxlIHNlbGYuc3RhY2s6Ci0gICAgICAgICAgICBpZiBz
ZWxmLnN0YWNrID09IG5lZWRlZF9jb2xsZWN0b3JzWzpsZW4oc2VsZi5zdGFjayldOgotICAgICAg
ICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzZWxmLl9wb3BfYW5kX3RlYXJkb3duKCkKLQot
ICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbGl0ZW0pOgotICAgICAgICAiIiIgc2V0dXAgb2JqZWN0
cyBhbG9uZyB0aGUgY29sbGVjdG9yIGNoYWluIHRvIHRoZSB0ZXN0LW1ldGhvZAotICAgICAgICAg
ICAgYW5kIHRlYXJkb3duIHByZXZpb3VzbHkgc2V0dXAgb2JqZWN0cy4iIiIKLSAgICAgICAgbmVl
ZGVkX2NvbGxlY3RvcnMgPSBjb2xpdGVtLmxpc3RjaGFpbigpCi0gICAgICAgIHNlbGYuX3RlYXJk
b3duX3Rvd2FyZHMobmVlZGVkX2NvbGxlY3RvcnMpCi0KLSAgICAgICAgIyBjaGVjayBpZiB0aGUg
bGFzdCBjb2xsZWN0aW9uIG5vZGUgaGFzIHJhaXNlZCBhbiBlcnJvcgotICAgICAgICBmb3IgY29s
IGluIHNlbGYuc3RhY2s6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKGNvbCwgJ19wcmVwYXJlX2V4
YycpOgotICAgICAgICAgICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoKmNvbC5fcHJlcGFyZV9l
eGMpCi0gICAgICAgIGZvciBjb2wgaW4gbmVlZGVkX2NvbGxlY3RvcnNbbGVuKHNlbGYuc3RhY2sp
Ol06Ci0gICAgICAgICAgICBzZWxmLnN0YWNrLmFwcGVuZChjb2wpCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgY29sLnNldHVwKCkKLSAgICAgICAgICAgIGV4Y2VwdCBURVNUX09V
VENPTUU6Ci0gICAgICAgICAgICAgICAgY29sLl9wcmVwYXJlX2V4YyA9IHN5cy5leGNfaW5mbygp
Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotCi1kZWYgY29sbGVjdF9vbmVfbm9kZShjb2xsZWN0
b3IpOgotICAgIGlob29rID0gY29sbGVjdG9yLmlob29rCi0gICAgaWhvb2sucHl0ZXN0X2NvbGxl
Y3RzdGFydChjb2xsZWN0b3I9Y29sbGVjdG9yKQotICAgIHJlcCA9IGlob29rLnB5dGVzdF9tYWtl
X2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcj1jb2xsZWN0b3IpCi0gICAgY2FsbCA9IHJlcC5fX2Rp
Y3RfXy5wb3AoImNhbGwiLCBOb25lKQotICAgIGlmIGNhbGwgYW5kIGNoZWNrX2ludGVyYWN0aXZl
X2V4Y2VwdGlvbihjYWxsLCByZXApOgotICAgICAgICBpaG9vay5weXRlc3RfZXhjZXB0aW9uX2lu
dGVyYWN0KG5vZGU9Y29sbGVjdG9yLCBjYWxsPWNhbGwsIHJlcG9ydD1yZXApCi0gICAgcmV0dXJu
IHJlcApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9zZXR1cG9ubHkucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L3NldHVwb25seS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTFjNzQ1N2Q3ZTUwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9z
ZXR1cG9ubHkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWlt
cG9ydCBweXRlc3QKLWltcG9ydCBzeXMKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIp
OgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIpCi0gICAgZ3JvdXAu
YWRkb3B0aW9uKCctLXNldHVwb25seScsICctLXNldHVwLW9ubHknLCBhY3Rpb249InN0b3JlX3Ry
dWUiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IHNldHVwIGZpeHR1cmVzLCBkbyBu
b3QgZXhlY3V0ZSB0ZXN0cy4iKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1zZXR1cHNob3cnLCAn
LS1zZXR1cC1zaG93JywgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAg
aGVscD0ic2hvdyBzZXR1cCBvZiBmaXh0dXJlcyB3aGlsZSBleGVjdXRpbmcgdGVzdHMuIikKLQot
Ci1AcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0ZXN0X2ZpeHR1cmVf
c2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0gICAgeWllbGQKLSAgICBjb25maWcgPSByZXF1
ZXN0LmNvbmZpZwotICAgIGlmIGNvbmZpZy5vcHRpb24uc2V0dXBzaG93OgotICAgICAgICBpZiBo
YXNhdHRyKHJlcXVlc3QsICdwYXJhbScpOgotICAgICAgICAgICAgIyBTYXZlIHRoZSBmaXh0dXJl
IHBhcmFtZXRlciBzbyAuX3Nob3dfZml4dHVyZV9hY3Rpb24oKSBjYW4KLSAgICAgICAgICAgICMg
ZGlzcGxheSBpdCBub3cgYW5kIGR1cmluZyB0aGUgdGVhcmRvd24gKGluIC5maW5pc2goKSkuCi0g
ICAgICAgICAgICBpZiBmaXh0dXJlZGVmLmlkczoKLSAgICAgICAgICAgICAgICBpZiBjYWxsYWJs
ZShmaXh0dXJlZGVmLmlkcyk6Ci0gICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuY2FjaGVk
X3BhcmFtID0gZml4dHVyZWRlZi5pZHMocmVxdWVzdC5wYXJhbSkKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmLmNhY2hlZF9wYXJhbSA9IGZpeHR1
cmVkZWYuaWRzWwotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5wYXJhbV9pbmRleF0K
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcGFy
YW0gPSByZXF1ZXN0LnBhcmFtCi0gICAgICAgIF9zaG93X2ZpeHR1cmVfYWN0aW9uKGZpeHR1cmVk
ZWYsICdTRVRVUCcpCi0KLQotZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1
cmVkZWYpOgotICAgIGlmIGhhc2F0dHIoZml4dHVyZWRlZiwgImNhY2hlZF9yZXN1bHQiKToKLSAg
ICAgICAgY29uZmlnID0gZml4dHVyZWRlZi5fZml4dHVyZW1hbmFnZXIuY29uZmlnCi0gICAgICAg
IGlmIGNvbmZpZy5vcHRpb24uc2V0dXBzaG93OgotICAgICAgICAgICAgX3Nob3dfZml4dHVyZV9h
Y3Rpb24oZml4dHVyZWRlZiwgJ1RFQVJET1dOJykKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoZml4
dHVyZWRlZiwgImNhY2hlZF9wYXJhbSIpOgotICAgICAgICAgICAgICAgIGRlbCBmaXh0dXJlZGVm
LmNhY2hlZF9wYXJhbQotCi0KLWRlZiBfc2hvd19maXh0dXJlX2FjdGlvbihmaXh0dXJlZGVmLCBt
c2cpOgotICAgIGNvbmZpZyA9IGZpeHR1cmVkZWYuX2ZpeHR1cmVtYW5hZ2VyLmNvbmZpZwotICAg
IGNhcG1hbiA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbignY2FwdHVyZW1hbmFnZXIn
KQotICAgIGlmIGNhcG1hbjoKLSAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4uc3VzcGVuZF9nbG9i
YWxfY2FwdHVyZSgpCi0KLSAgICB0dyA9IGNvbmZpZy5nZXRfdGVybWluYWxfd3JpdGVyKCkKLSAg
ICB0dy5saW5lKCkKLSAgICB0dy53cml0ZSgnICcgKiAyICogZml4dHVyZWRlZi5zY29wZW51bSkK
LSAgICB0dy53cml0ZSgne3N0ZXB9IHtzY29wZX0ge2ZpeHR1cmV9Jy5mb3JtYXQoCi0gICAgICAg
IHN0ZXA9bXNnLmxqdXN0KDgpLCAgIyBhbGlnbiB0aGUgb3V0cHV0IHRvIFRFQVJET1dOCi0gICAg
ICAgIHNjb3BlPWZpeHR1cmVkZWYuc2NvcGVbMF0udXBwZXIoKSwKLSAgICAgICAgZml4dHVyZT1m
aXh0dXJlZGVmLmFyZ25hbWUpKQotCi0gICAgaWYgbXNnID09ICdTRVRVUCc6Ci0gICAgICAgIGRl
cHMgPSBzb3J0ZWQoYXJnIGZvciBhcmcgaW4gZml4dHVyZWRlZi5hcmduYW1lcyBpZiBhcmcgIT0g
J3JlcXVlc3QnKQotICAgICAgICBpZiBkZXBzOgotICAgICAgICAgICAgdHcud3JpdGUoJyAoZml4
dHVyZXMgdXNlZDogezB9KScuZm9ybWF0KCcsICcuam9pbihkZXBzKSkpCi0KLSAgICBpZiBoYXNh
dHRyKGZpeHR1cmVkZWYsICdjYWNoZWRfcGFyYW0nKToKLSAgICAgICAgdHcud3JpdGUoJ1t7MH1d
Jy5mb3JtYXQoZml4dHVyZWRlZi5jYWNoZWRfcGFyYW0pKQotCi0gICAgaWYgY2FwbWFuOgotICAg
ICAgICBjYXBtYW4ucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgc3lzLnN0ZG91dC53
cml0ZShvdXQpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQotCi0KLUBweXRlc3QuaG9v
a2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6Ci0g
ICAgaWYgY29uZmlnLm9wdGlvbi5zZXR1cG9ubHk6Ci0gICAgICAgIGNvbmZpZy5vcHRpb24uc2V0
dXBzaG93ID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9zZXR1cHBsYW4u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NldHVwcGxhbi5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTExYmQ0MDY5OGI3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9zZXR1cHBsYW4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCi0KLWltcG9ydCBweXRlc3QKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgot
ICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIpCi0gICAgZ3JvdXAuYWRk
b3B0aW9uKCctLXNldHVwcGxhbicsICctLXNldHVwLXBsYW4nLCBhY3Rpb249InN0b3JlX3RydWUi
LAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IHdoYXQgZml4dHVyZXMgYW5kIHRlc3Rz
IHdvdWxkIGJlIGV4ZWN1dGVkIGJ1dCAiCi0gICAgICAgICAgICAgICAgICAgICJkb24ndCBleGVj
dXRlIGFueXRoaW5nLiIpCi0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVm
IHB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgotICAgICMgV2lsbCBy
ZXR1cm4gYSBkdW1teSBmaXh0dXJlIGlmIHRoZSBzZXR1cG9ubHkgb3B0aW9uIGlzIHByb3ZpZGVk
LgotICAgIGlmIHJlcXVlc3QuY29uZmlnLm9wdGlvbi5zZXR1cHBsYW46Ci0gICAgICAgIGZpeHR1
cmVkZWYuY2FjaGVkX3Jlc3VsdCA9IChOb25lLCBOb25lLCBOb25lKQotICAgICAgICByZXR1cm4g
Zml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0Ci0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1U
cnVlKQotZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0
aW9uLnNldHVwcGxhbjoKLSAgICAgICAgY29uZmlnLm9wdGlvbi5zZXR1cG9ubHkgPSBUcnVlCi0g
ICAgICAgIGNvbmZpZy5vcHRpb24uc2V0dXBzaG93ID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9za2lwcGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2tpcHBpbmcu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZTViNDM4MDBiNS4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2tpcHBpbmcucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzOTcgKzAsMCBAQAotIiIiIHN1cHBvcnQgZm9yIHNraXAveGZhaWwgZnVuY3Rpb25zIGFu
ZCBtYXJrZXJzLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IG9zCi1pbXBvcnQgc2l4Ci1pbXBvcnQg
c3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tp
bXBsCi1mcm9tIF9weXRlc3QubWFyayBpbXBvcnQgTWFya0luZm8sIE1hcmtEZWNvcmF0b3IKLWZy
b20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbCwgc2tpcCwgeGZhaWwsIFRFU1RfT1VUQ09N
RQotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIu
Z2V0Z3JvdXAoImdlbmVyYWwiKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1ydW54ZmFpbCcsCi0g
ICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJ1bnhmYWlsIiwg
ZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0icnVuIHRlc3RzIGV2ZW4g
aWYgdGhleSBhcmUgbWFya2VkIHhmYWlsIikKLQotICAgIHBhcnNlci5hZGRpbmkoInhmYWlsX3N0
cmljdCIsICJkZWZhdWx0IGZvciB0aGUgc3RyaWN0IHBhcmFtZXRlciBvZiB4ZmFpbCAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hcmtlcnMgd2hlbiBub3QgZ2l2ZW4gZXhw
bGljaXRseSAoZGVmYXVsdDogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJG
YWxzZSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iYm9vbCIpCi0KLQotZGVm
IHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0aW9uLnJ1bnhmYWls
OgotICAgICAgICAjIHlheSBhIGhhY2sKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBv
bGQgPSBweXRlc3QueGZhaWwKLSAgICAgICAgY29uZmlnLl9jbGVhbnVwLmFwcGVuZChsYW1iZGE6
IHNldGF0dHIocHl0ZXN0LCAieGZhaWwiLCBvbGQpKQotCi0gICAgICAgIGRlZiBub3AoKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBub3AuRXhjZXB0aW9uID0g
eGZhaWwuRXhjZXB0aW9uCi0gICAgICAgIHNldGF0dHIocHl0ZXN0LCAieGZhaWwiLCBub3ApCi0K
LSAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInNraXAocmVhc29uPU5vbmUpOiBza2lwIHRoZSBnaXZlbiB0ZXN0IGZ1bmN0
aW9uIHdpdGggYW4gb3B0aW9uYWwgcmVhc29uLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkV4YW1wbGU6IHNraXAocmVhc29uPVwibm8gd2F5IG9mIGN1cnJlbnRseSB0ZXN0aW5nIHRo
aXNcIikgc2tpcHMgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdC4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5l
KCJtYXJrZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2tpcGlmKGNvbmRpdGlv
bik6IHNraXAgdGhlIGdpdmVuIHRlc3QgZnVuY3Rpb24gaWYgZXZhbChjb25kaXRpb24pICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0cyBpbiBhIFRydWUgdmFsdWUuICBFdmFs
dWF0aW9uIGhhcHBlbnMgd2l0aGluIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1vZHVsZSBnbG9iYWwgY29udGV4dC4gRXhhbXBsZTogc2tpcGlmKCdzeXMucGxhdGZvcm0gPT0g
XCJ3aW4zMlwiJykgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJza2lwcyB0aGUgdGVz
dCBpZiB3ZSBhcmUgb24gdGhlIHdpbjMyIHBsYXRmb3JtLiBzZWUgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3Qvc2tpcHBpbmcuaHRtbCIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUo
Im1hcmtlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4ZmFpbChjb25kaXRpb24s
IHJlYXNvbj1Ob25lLCBydW49VHJ1ZSwgcmFpc2VzPU5vbmUsIHN0cmljdD1GYWxzZSk6ICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAibWFyayB0aGUgdGVzdCBmdW5jdGlvbiBhcyBhbiBl
eHBlY3RlZCBmYWlsdXJlIGlmIGV2YWwoY29uZGl0aW9uKSAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImhhcyBhIFRydWUgdmFsdWUuIE9wdGlvbmFsbHkgc3BlY2lmeSBhIHJlYXNvbiBm
b3IgYmV0dGVyIHJlcG9ydGluZyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBy
dW49RmFsc2UgaWYgeW91IGRvbid0IGV2ZW4gd2FudCB0byBleGVjdXRlIHRoZSB0ZXN0IGZ1bmN0
aW9uLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIG9ubHkgc3BlY2lmaWMgZXhj
ZXB0aW9uKHMpIGFyZSBleHBlY3RlZCwgeW91IGNhbiBsaXN0IHRoZW0gaW4gIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJyYWlzZXMsIGFuZCBpZiB0aGUgdGVzdCBmYWlscyBpbiBvdGhl
ciB3YXlzLCBpdCB3aWxsIGJlIHJlcG9ydGVkIGFzICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYSB0cnVlIGZhaWx1cmUuIFNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3Qvc2tpcHBp
bmcuaHRtbCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KLQotY2xhc3MgTWFya0V2
YWx1YXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtLCBuYW1lKToKLSAg
ICAgICAgc2VsZi5pdGVtID0gaXRlbQotICAgICAgICBzZWxmLl9tYXJrcyA9IE5vbmUKLSAgICAg
ICAgc2VsZi5fbWFyayA9IE5vbmUKLSAgICAgICAgc2VsZi5fbWFya19uYW1lID0gbmFtZQotCi0g
ICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9tYXJrcyA9IHNlbGYuX2dldF9t
YXJrcygpCi0gICAgICAgIHJldHVybiBib29sKHNlbGYuX21hcmtzKQotICAgIF9fbm9uemVyb19f
ID0gX19ib29sX18KLQotICAgIGRlZiB3YXN2YWxpZChzZWxmKToKLSAgICAgICAgcmV0dXJuIG5v
dCBoYXNhdHRyKHNlbGYsICdleGMnKQotCi0gICAgZGVmIF9nZXRfbWFya3Moc2VsZik6Ci0KLSAg
ICAgICAga2V5d29yZCA9IHNlbGYuaXRlbS5rZXl3b3Jkcy5nZXQoc2VsZi5fbWFya19uYW1lKQot
ICAgICAgICBpZiBpc2luc3RhbmNlKGtleXdvcmQsIE1hcmtEZWNvcmF0b3IpOgotICAgICAgICAg
ICAgcmV0dXJuIFtrZXl3b3JkLm1hcmtdCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShrZXl3b3Jk
LCBNYXJrSW5mbyk6Ci0gICAgICAgICAgICByZXR1cm4gW3guY29tYmluZWQgZm9yIHggaW4ga2V5
d29yZF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIGlu
dmFsaWRyYWlzZShzZWxmLCBleGMpOgotICAgICAgICByYWlzZXMgPSBzZWxmLmdldCgncmFpc2Vz
JykKLSAgICAgICAgaWYgbm90IHJhaXNlczoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBy
ZXR1cm4gbm90IGlzaW5zdGFuY2UoZXhjLCByYWlzZXMpCi0KLSAgICBkZWYgaXN0cnVlKHNlbGYp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5faXN0cnVlKCkKLSAgICAg
ICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgICAgIHNlbGYuZXhjID0gc3lzLmV4Y19p
bmZvKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leGNbMV0sIFN5bnRheEVycm9y
KToKLSAgICAgICAgICAgICAgICBtc2cgPSBbIiAiICogKHNlbGYuZXhjWzFdLm9mZnNldCArIDQp
ICsgIl4iLCBdCi0gICAgICAgICAgICAgICAgbXNnLmFwcGVuZCgiU3ludGF4RXJyb3I6IGludmFs
aWQgc3ludGF4IikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gdHJh
Y2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSgqc2VsZi5leGNbOjJdKQotICAgICAgICAgICAg
ZmFpbCgiRXJyb3IgZXZhbHVhdGluZyAlciBleHByZXNzaW9uXG4iCi0gICAgICAgICAgICAgICAg
ICIgICAgJXNcbiIKLSAgICAgICAgICAgICAgICAgIiVzIgotICAgICAgICAgICAgICAgICAlIChz
ZWxmLl9tYXJrX25hbWUsIHNlbGYuZXhwciwgIlxuIi5qb2luKG1zZykpLAotICAgICAgICAgICAg
ICAgICBweXRyYWNlPUZhbHNlKQotCi0gICAgZGVmIF9nZXRnbG9iYWxzKHNlbGYpOgotICAgICAg
ICBkID0geydvcyc6IG9zLCAnc3lzJzogc3lzLCAnY29uZmlnJzogc2VsZi5pdGVtLmNvbmZpZ30K
LSAgICAgICAgaWYgaGFzYXR0cihzZWxmLml0ZW0sICdvYmonKToKLSAgICAgICAgICAgIGQudXBk
YXRlKHNlbGYuaXRlbS5vYmouX19nbG9iYWxzX18pCi0gICAgICAgIHJldHVybiBkCi0KLSAgICBk
ZWYgX2lzdHJ1ZShzZWxmKToKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAncmVzdWx0Jyk6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQKLSAgICAgICAgc2VsZi5fbWFya3MgPSBzZWxm
Ll9nZXRfbWFya3MoKQotCi0gICAgICAgIGlmIHNlbGYuX21hcmtzOgotICAgICAgICAgICAgc2Vs
Zi5yZXN1bHQgPSBGYWxzZQotICAgICAgICAgICAgZm9yIG1hcmsgaW4gc2VsZi5fbWFya3M6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fbWFyayA9IG1hcmsKLSAgICAgICAgICAgICAgICBpZiAnY29u
ZGl0aW9uJyBpbiBtYXJrLmt3YXJnczoKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IChtYXJr
Lmt3YXJnc1snY29uZGl0aW9uJ10sKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIGFyZ3MgPSBtYXJrLmFyZ3MKLQotICAgICAgICAgICAgICAgIGZvciBleHByIGlu
IGFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwciA9IGV4cHIKLSAgICAgICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShleHByLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGQgPSBzZWxmLl9nZXRnbG9iYWxzKCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNhY2hlZF9ldmFsKHNlbGYuaXRlbS5jb25maWcsIGV4cHIsIGQpCi0g
ICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAicmVh
c29uIiBub3QgaW4gbWFyay5rd2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBY
WFggYmV0dGVyIGJlIGNoZWNrZWQgYXQgY29sbGVjdGlvbiB0aW1lCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNnID0gInlvdSBuZWVkIHRvIHNwZWNpZnkgcmVhc29uPVNUUklORyAiIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2hlbiB1c2luZyBib29sZWFucyBh
cyBjb25kaXRpb25zLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKG1zZykKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJvb2woZXhwcikKLSAgICAgICAgICAgICAg
ICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBU
cnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYXNvbiA9IG1hcmsua3dhcmdzLmdl
dCgncmVhc29uJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwciA9IGV4
cHIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdAotCi0gICAgICAg
ICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0g
VHJ1ZQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYXNvbiA9IG1hcmsua3dhcmdzLmdldCgn
cmVhc29uJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0Ci0g
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGdldChzZWxmLCBhdHRyLCBkZWZhdWx0PU5v
bmUpOgotICAgICAgICBpZiBzZWxmLl9tYXJrIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4g
ZGVmYXVsdAotICAgICAgICByZXR1cm4gc2VsZi5fbWFyay5rd2FyZ3MuZ2V0KGF0dHIsIGRlZmF1
bHQpCi0KLSAgICBkZWYgZ2V0ZXhwbGFuYXRpb24oc2VsZik6Ci0gICAgICAgIGV4cGwgPSBnZXRh
dHRyKHNlbGYsICdyZWFzb24nLCBOb25lKSBvciBzZWxmLmdldCgncmVhc29uJywgTm9uZSkKLSAg
ICAgICAgaWYgbm90IGV4cGw6Ci0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnZXhw
cicpOgotICAgICAgICAgICAgICAgIHJldHVybiAiIgotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gImNvbmRpdGlvbjogIiArIHN0cihzZWxmLmV4cHIpCi0gICAgICAg
IHJldHVybiBleHBsCi0KLQotQGhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X3J1
bnRlc3Rfc2V0dXAoaXRlbSk6Ci0gICAgIyBDaGVjayBpZiBza2lwIG9yIHNraXBpZiBhcmUgc3Bl
Y2lmaWVkIGFzIHB5dGVzdCBtYXJrcwotICAgIGl0ZW0uX3NraXBwZWRfYnlfbWFyayA9IEZhbHNl
Ci0gICAgc2tpcGlmX2luZm8gPSBpdGVtLmtleXdvcmRzLmdldCgnc2tpcGlmJykKLSAgICBpZiBp
c2luc3RhbmNlKHNraXBpZl9pbmZvLCAoTWFya0luZm8sIE1hcmtEZWNvcmF0b3IpKToKLSAgICAg
ICAgZXZhbF9za2lwaWYgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICdza2lwaWYnKQotICAgICAgICBp
ZiBldmFsX3NraXBpZi5pc3RydWUoKToKLSAgICAgICAgICAgIGl0ZW0uX3NraXBwZWRfYnlfbWFy
ayA9IFRydWUKLSAgICAgICAgICAgIHNraXAoZXZhbF9za2lwaWYuZ2V0ZXhwbGFuYXRpb24oKSkK
LQotICAgIHNraXBfaW5mbyA9IGl0ZW0ua2V5d29yZHMuZ2V0KCdza2lwJykKLSAgICBpZiBpc2lu
c3RhbmNlKHNraXBfaW5mbywgKE1hcmtJbmZvLCBNYXJrRGVjb3JhdG9yKSk6Ci0gICAgICAgIGl0
ZW0uX3NraXBwZWRfYnlfbWFyayA9IFRydWUKLSAgICAgICAgaWYgJ3JlYXNvbicgaW4gc2tpcF9p
bmZvLmt3YXJnczoKLSAgICAgICAgICAgIHNraXAoc2tpcF9pbmZvLmt3YXJnc1sncmVhc29uJ10p
Ci0gICAgICAgIGVsaWYgc2tpcF9pbmZvLmFyZ3M6Ci0gICAgICAgICAgICBza2lwKHNraXBfaW5m
by5hcmdzWzBdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2tpcCgidW5jb25kaXRpb25h
bCBza2lwIikKLQotICAgIGl0ZW0uX2V2YWx4ZmFpbCA9IE1hcmtFdmFsdWF0b3IoaXRlbSwgJ3hm
YWlsJykKLSAgICBjaGVja194ZmFpbF9ub19ydW4oaXRlbSkKLQotCi1AaG9va2ltcGwoaG9va3dy
YXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcHlmdW5jX2NhbGwocHlmdW5jaXRlbSk6Ci0gICAgY2hl
Y2tfeGZhaWxfbm9fcnVuKHB5ZnVuY2l0ZW0pCi0gICAgb3V0Y29tZSA9IHlpZWxkCi0gICAgcGFz
c2VkID0gb3V0Y29tZS5leGNpbmZvIGlzIE5vbmUKLSAgICBpZiBwYXNzZWQ6Ci0gICAgICAgIGNo
ZWNrX3N0cmljdF94ZmFpbChweWZ1bmNpdGVtKQotCi0KLWRlZiBjaGVja194ZmFpbF9ub19ydW4o
aXRlbSk6Ci0gICAgIiIiY2hlY2sgeGZhaWwocnVuPUZhbHNlKSIiIgotICAgIGlmIG5vdCBpdGVt
LmNvbmZpZy5vcHRpb24ucnVueGZhaWw6Ci0gICAgICAgIGV2YWx4ZmFpbCA9IGl0ZW0uX2V2YWx4
ZmFpbAotICAgICAgICBpZiBldmFseGZhaWwuaXN0cnVlKCk6Ci0gICAgICAgICAgICBpZiBub3Qg
ZXZhbHhmYWlsLmdldCgncnVuJywgVHJ1ZSk6Ci0gICAgICAgICAgICAgICAgeGZhaWwoIltOT1RS
VU5dICIgKyBldmFseGZhaWwuZ2V0ZXhwbGFuYXRpb24oKSkKLQotCi1kZWYgY2hlY2tfc3RyaWN0
X3hmYWlsKHB5ZnVuY2l0ZW0pOgotICAgICIiImNoZWNrIHhmYWlsKHN0cmljdD1UcnVlKSBmb3Ig
dGhlIGdpdmVuIFBBU1NJTkcgdGVzdCIiIgotICAgIGV2YWx4ZmFpbCA9IHB5ZnVuY2l0ZW0uX2V2
YWx4ZmFpbAotICAgIGlmIGV2YWx4ZmFpbC5pc3RydWUoKToKLSAgICAgICAgc3RyaWN0X2RlZmF1
bHQgPSBweWZ1bmNpdGVtLmNvbmZpZy5nZXRpbmkoJ3hmYWlsX3N0cmljdCcpCi0gICAgICAgIGlz
X3N0cmljdF94ZmFpbCA9IGV2YWx4ZmFpbC5nZXQoJ3N0cmljdCcsIHN0cmljdF9kZWZhdWx0KQot
ICAgICAgICBpZiBpc19zdHJpY3RfeGZhaWw6Ci0gICAgICAgICAgICBkZWwgcHlmdW5jaXRlbS5f
ZXZhbHhmYWlsCi0gICAgICAgICAgICBleHBsYW5hdGlvbiA9IGV2YWx4ZmFpbC5nZXRleHBsYW5h
dGlvbigpCi0gICAgICAgICAgICBmYWlsKCdbWFBBU1Moc3RyaWN0KV0gJyArIGV4cGxhbmF0aW9u
LCBweXRyYWNlPUZhbHNlKQotCi0KLUBob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5
dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6Ci0gICAgb3V0Y29tZSA9IHlpZWxk
Ci0gICAgcmVwID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICBldmFseGZhaWwgPSBnZXRhdHRy
KGl0ZW0sICdfZXZhbHhmYWlsJywgTm9uZSkKLSAgICAjIHVuaXR0dGVzdCBzcGVjaWFsIGNhc2Us
IHNlZSBzZXR0aW5nIG9mIF91bmV4cGVjdGVkc3VjY2VzcwotICAgIGlmIGhhc2F0dHIoaXRlbSwg
J191bmV4cGVjdGVkc3VjY2VzcycpIGFuZCByZXAud2hlbiA9PSAiY2FsbCI6Ci0gICAgICAgIGZy
b20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nlc3Nf
YV9mYWlsdXJlCi0gICAgICAgIGlmIGl0ZW0uX3VuZXhwZWN0ZWRzdWNjZXNzOgotICAgICAgICAg
ICAgcmVwLmxvbmdyZXByID0gIlVuZXhwZWN0ZWQgc3VjY2VzczogezB9Ii5mb3JtYXQoaXRlbS5f
dW5leHBlY3RlZHN1Y2Nlc3MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXAubG9uZ3Jl
cHIgPSAiVW5leHBlY3RlZCBzdWNjZXNzIgotICAgICAgICBpZiBfaXNfdW5pdHRlc3RfdW5leHBl
Y3RlZF9zdWNjZXNzX2FfZmFpbHVyZSgpOgotICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAiZmFp
bGVkIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAicGFzc2VkIgot
ICAgICAgICAgICAgcmVwLndhc3hmYWlsID0gcmVwLmxvbmdyZXByCi0gICAgZWxpZiBpdGVtLmNv
bmZpZy5vcHRpb24ucnVueGZhaWw6Ci0gICAgICAgIHBhc3MgICAjIGRvbid0IGludGVyZWZlcmUK
LSAgICBlbGlmIGNhbGwuZXhjaW5mbyBhbmQgY2FsbC5leGNpbmZvLmVycmlzaW5zdGFuY2UoeGZh
aWwuRXhjZXB0aW9uKToKLSAgICAgICAgcmVwLndhc3hmYWlsID0gInJlYXNvbjogIiArIGNhbGwu
ZXhjaW5mby52YWx1ZS5tc2cKLSAgICAgICAgcmVwLm91dGNvbWUgPSAic2tpcHBlZCIKLSAgICBl
bGlmIGV2YWx4ZmFpbCBhbmQgbm90IHJlcC5za2lwcGVkIGFuZCBldmFseGZhaWwud2FzdmFsaWQo
KSBhbmQgXAotICAgICAgICAgICAgZXZhbHhmYWlsLmlzdHJ1ZSgpOgotICAgICAgICBpZiBjYWxs
LmV4Y2luZm86Ci0gICAgICAgICAgICBpZiBldmFseGZhaWwuaW52YWxpZHJhaXNlKGNhbGwuZXhj
aW5mby52YWx1ZSk6Ci0gICAgICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAiZmFpbGVkIgotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXAub3V0Y29tZSA9ICJza2lwcGVkIgot
ICAgICAgICAgICAgICAgIHJlcC53YXN4ZmFpbCA9IGV2YWx4ZmFpbC5nZXRleHBsYW5hdGlvbigp
Ci0gICAgICAgIGVsaWYgY2FsbC53aGVuID09ICJjYWxsIjoKLSAgICAgICAgICAgIHN0cmljdF9k
ZWZhdWx0ID0gaXRlbS5jb25maWcuZ2V0aW5pKCd4ZmFpbF9zdHJpY3QnKQotICAgICAgICAgICAg
aXNfc3RyaWN0X3hmYWlsID0gZXZhbHhmYWlsLmdldCgnc3RyaWN0Jywgc3RyaWN0X2RlZmF1bHQp
Ci0gICAgICAgICAgICBleHBsYW5hdGlvbiA9IGV2YWx4ZmFpbC5nZXRleHBsYW5hdGlvbigpCi0g
ICAgICAgICAgICBpZiBpc19zdHJpY3RfeGZhaWw6Ci0gICAgICAgICAgICAgICAgcmVwLm91dGNv
bWUgPSAiZmFpbGVkIgotICAgICAgICAgICAgICAgIHJlcC5sb25ncmVwciA9ICJbWFBBU1Moc3Ry
aWN0KV0gezB9Ii5mb3JtYXQoZXhwbGFuYXRpb24pCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHJlcC5vdXRjb21lID0gInBhc3NlZCIKLSAgICAgICAgICAgICAgICByZXAud2Fz
eGZhaWwgPSBleHBsYW5hdGlvbgotICAgIGVsaWYgaXRlbS5fc2tpcHBlZF9ieV9tYXJrIGFuZCBy
ZXAuc2tpcHBlZCBhbmQgdHlwZShyZXAubG9uZ3JlcHIpIGlzIHR1cGxlOgotICAgICAgICAjIHNr
aXBwZWQgYnkgbWFyay5za2lwaWY7IGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgdGhlIGZhaWx1cmUK
LSAgICAgICAgIyB0byBwb2ludCB0byB0aGUgaXRlbSBkZWZpbml0aW9uLCBvdGhlcndpc2UgaXQg
d2lsbCBkaXNwbGF5Ci0gICAgICAgICMgdGhlIGxvY2F0aW9uIG9mIHdoZXJlIHRoZSBza2lwIGV4
Y2VwdGlvbiB3YXMgcmFpc2VkIHdpdGhpbiBweXRlc3QKLSAgICAgICAgZmlsZW5hbWUsIGxpbmUs
IHJlYXNvbiA9IHJlcC5sb25ncmVwcgotICAgICAgICBmaWxlbmFtZSwgbGluZSA9IGl0ZW0ubG9j
YXRpb25bOjJdCi0gICAgICAgIHJlcC5sb25ncmVwciA9IGZpbGVuYW1lLCBsaW5lLCByZWFzb24K
LQotIyBjYWxsZWQgYnkgdGVybWluYWxyZXBvcnRlciBwcm9ncmVzcyByZXBvcnRpbmcKLQotCi1k
ZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6Ci0gICAgaWYgaGFzYXR0cihyZXBv
cnQsICJ3YXN4ZmFpbCIpOgotICAgICAgICBpZiByZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAg
IHJldHVybiAieGZhaWxlZCIsICJ4IiwgInhmYWlsIgotICAgICAgICBlbGlmIHJlcG9ydC5wYXNz
ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gInhwYXNzZWQiLCAiWCIsICgiWFBBU1MiLCB7J3llbGxv
dyc6IFRydWV9KQotCi0jIGNhbGxlZCBieSB0aGUgdGVybWluYWxyZXBvcnRlciBpbnN0YW5jZS9w
bHVnaW4KLQotCi1kZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVybWluYWxyZXBvcnRlcik6
Ci0gICAgdHIgPSB0ZXJtaW5hbHJlcG9ydGVyCi0gICAgaWYgbm90IHRyLnJlcG9ydGNoYXJzOgot
ICAgICAgICAjIGZvciBuYW1lIGluICJ4ZmFpbGVkIHNraXBwZWQgZmFpbGVkIHhwYXNzZWQiOgot
ICAgICAgICAjICAgIGlmIG5vdCB0ci5zdGF0cy5nZXQobmFtZSwgMCk6Ci0gICAgICAgICMgICAg
ICAgIHRyLndyaXRlX2xpbmUoIkhJTlQ6IHVzZSAnLXInIG9wdGlvbiB0byBzZWUgZXh0cmEgIgot
ICAgICAgICAjICAgICAgICAgICAgICAic3VtbWFyeSBpbmZvIGFib3V0IHRlc3RzIikKLSAgICAg
ICAgIyAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuCi0KLSAgICBsaW5lcyA9IFtdCi0gICAg
Zm9yIGNoYXIgaW4gdHIucmVwb3J0Y2hhcnM6Ci0gICAgICAgIGlmIGNoYXIgPT0gIngiOgotICAg
ICAgICAgICAgc2hvd194ZmFpbGVkKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzKQotICAgICAgICBl
bGlmIGNoYXIgPT0gIlgiOgotICAgICAgICAgICAgc2hvd194cGFzc2VkKHRlcm1pbmFscmVwb3J0
ZXIsIGxpbmVzKQotICAgICAgICBlbGlmIGNoYXIgaW4gImZGIjoKLSAgICAgICAgICAgIHNob3df
c2ltcGxlKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzLCAnZmFpbGVkJywgIkZBSUwgJXMiKQotICAg
ICAgICBlbGlmIGNoYXIgaW4gInNTIjoKLSAgICAgICAgICAgIHNob3dfc2tpcHBlZCh0ZXJtaW5h
bHJlcG9ydGVyLCBsaW5lcykKLSAgICAgICAgZWxpZiBjaGFyID09ICJFIjoKLSAgICAgICAgICAg
IHNob3dfc2ltcGxlKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzLCAnZXJyb3InLCAiRVJST1IgJXMi
KQotICAgICAgICBlbGlmIGNoYXIgPT0gJ3AnOgotICAgICAgICAgICAgc2hvd19zaW1wbGUodGVy
bWluYWxyZXBvcnRlciwgbGluZXMsICdwYXNzZWQnLCAiUEFTU0VEICVzIikKLQotICAgIGlmIGxp
bmVzOgotICAgICAgICB0ci5fdHcuc2VwKCI9IiwgInNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvIikK
LSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICB0ci5fdHcubGluZShsaW5l
KQotCi0KLWRlZiBzaG93X3NpbXBsZSh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcywgc3RhdCwgZm9y
bWF0KToKLSAgICBmYWlsZWQgPSB0ZXJtaW5hbHJlcG9ydGVyLnN0YXRzLmdldChzdGF0KQotICAg
IGlmIGZhaWxlZDoKLSAgICAgICAgZm9yIHJlcCBpbiBmYWlsZWQ6Ci0gICAgICAgICAgICBwb3Mg
PSB0ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZy5jd2RfcmVsYXRpdmVfbm9kZWlkKHJlcC5ub2RlaWQp
Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoZm9ybWF0ICUgKHBvcywpKQotCi0KLWRlZiBzaG93
X3hmYWlsZWQodGVybWluYWxyZXBvcnRlciwgbGluZXMpOgotICAgIHhmYWlsZWQgPSB0ZXJtaW5h
bHJlcG9ydGVyLnN0YXRzLmdldCgieGZhaWxlZCIpCi0gICAgaWYgeGZhaWxlZDoKLSAgICAgICAg
Zm9yIHJlcCBpbiB4ZmFpbGVkOgotICAgICAgICAgICAgcG9zID0gdGVybWluYWxyZXBvcnRlci5j
b25maWcuY3dkX3JlbGF0aXZlX25vZGVpZChyZXAubm9kZWlkKQotICAgICAgICAgICAgcmVhc29u
ID0gcmVwLndhc3hmYWlsCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIlhGQUlMICVzIiAlIChw
b3MsKSkKLSAgICAgICAgICAgIGlmIHJlYXNvbjoKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiAgIiArIHN0cihyZWFzb24pKQotCi0KLWRlZiBzaG93X3hwYXNzZWQodGVybWluYWxyZXBv
cnRlciwgbGluZXMpOgotICAgIHhwYXNzZWQgPSB0ZXJtaW5hbHJlcG9ydGVyLnN0YXRzLmdldCgi
eHBhc3NlZCIpCi0gICAgaWYgeHBhc3NlZDoKLSAgICAgICAgZm9yIHJlcCBpbiB4cGFzc2VkOgot
ICAgICAgICAgICAgcG9zID0gdGVybWluYWxyZXBvcnRlci5jb25maWcuY3dkX3JlbGF0aXZlX25v
ZGVpZChyZXAubm9kZWlkKQotICAgICAgICAgICAgcmVhc29uID0gcmVwLndhc3hmYWlsCi0gICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoIlhQQVNTICVzICVzIiAlIChwb3MsIHJlYXNvbikpCi0KLQot
ZGVmIGNhY2hlZF9ldmFsKGNvbmZpZywgZXhwciwgZCk6Ci0gICAgaWYgbm90IGhhc2F0dHIoY29u
ZmlnLCAnX2V2YWxjYWNoZScpOgotICAgICAgICBjb25maWcuX2V2YWxjYWNoZSA9IHt9Ci0gICAg
dHJ5OgotICAgICAgICByZXR1cm4gY29uZmlnLl9ldmFsY2FjaGVbZXhwcl0KLSAgICBleGNlcHQg
S2V5RXJyb3I6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0gICAgICAgIGV4cHJjb2Rl
ID0gX3B5dGVzdC5fY29kZS5jb21waWxlKGV4cHIsIG1vZGU9ImV2YWwiKQotICAgICAgICBjb25m
aWcuX2V2YWxjYWNoZVtleHByXSA9IHggPSBldmFsKGV4cHJjb2RlLCBkKQotICAgICAgICByZXR1
cm4geAotCi0KLWRlZiBmb2xkZWRfc2tpcHMoc2tpcHBlZCk6Ci0gICAgZCA9IHt9Ci0gICAgZm9y
IGV2ZW50IGluIHNraXBwZWQ6Ci0gICAgICAgIGtleSA9IGV2ZW50LmxvbmdyZXByCi0gICAgICAg
IGFzc2VydCBsZW4oa2V5KSA9PSAzLCAoZXZlbnQsIGtleSkKLSAgICAgICAga2V5d29yZHMgPSBn
ZXRhdHRyKGV2ZW50LCAna2V5d29yZHMnLCB7fSkKLSAgICAgICAgIyBmb2xkaW5nIHJlcG9ydHMg
d2l0aCBnbG9iYWwgcHl0ZXN0bWFyayB2YXJpYWJsZQotICAgICAgICAjIHRoaXMgaXMgd29ya2Fy
b3VuZCwgYmVjYXVzZSBmb3Igbm93IHdlIGNhbm5vdCBpZGVudGlmeSB0aGUgc2NvcGUgb2YgYSBz
a2lwIG1hcmtlcgotICAgICAgICAjIFRPRE86IHJldmlzaXQgYWZ0ZXIgbWFya3Mgc2NvcGUgd291
bGQgYmUgZml4ZWQKLSAgICAgICAgd2hlbiA9IGdldGF0dHIoZXZlbnQsICd3aGVuJywgTm9uZSkK
LSAgICAgICAgaWYgd2hlbiA9PSAnc2V0dXAnIGFuZCAnc2tpcCcgaW4ga2V5d29yZHMgYW5kICdw
eXRlc3RtYXJrJyBub3QgaW4ga2V5d29yZHM6Ci0gICAgICAgICAgICBrZXkgPSAoa2V5WzBdLCBO
b25lLCBrZXlbMl0sICkKLSAgICAgICAgZC5zZXRkZWZhdWx0KGtleSwgW10pLmFwcGVuZChldmVu
dCkKLSAgICB2YWx1ZXMgPSBbXQotICAgIGZvciBrZXksIGV2ZW50cyBpbiBkLml0ZW1zKCk6Ci0g
ICAgICAgIHZhbHVlcy5hcHBlbmQoKGxlbihldmVudHMpLCkgKyBrZXkpCi0gICAgcmV0dXJuIHZh
bHVlcwotCi0KLWRlZiBzaG93X3NraXBwZWQodGVybWluYWxyZXBvcnRlciwgbGluZXMpOgotICAg
IHRyID0gdGVybWluYWxyZXBvcnRlcgotICAgIHNraXBwZWQgPSB0ci5zdGF0cy5nZXQoJ3NraXBw
ZWQnLCBbXSkKLSAgICBpZiBza2lwcGVkOgotICAgICAgICAjIGlmIG5vdCB0ci5oYXNvcHQoJ3Nr
aXBwZWQnKToKLSAgICAgICAgIyAgICB0ci53cml0ZV9saW5lKAotICAgICAgICAjICAgICAgICAi
JWQgc2tpcHBlZCB0ZXN0cywgc3BlY2lmeSAtcnMgZm9yIG1vcmUgaW5mbyIgJQotICAgICAgICAj
ICAgICAgICBsZW4oc2tpcHBlZCkpCi0gICAgICAgICMgICAgcmV0dXJuCi0gICAgICAgIGZza2lw
cyA9IGZvbGRlZF9za2lwcyhza2lwcGVkKQotICAgICAgICBpZiBmc2tpcHM6Ci0gICAgICAgICAg
ICAjIHRyLndyaXRlX3NlcCgiXyIsICJza2lwcGVkIHRlc3Qgc3VtbWFyeSIpCi0gICAgICAgICAg
ICBmb3IgbnVtLCBmc3BhdGgsIGxpbmVubywgcmVhc29uIGluIGZza2lwczoKLSAgICAgICAgICAg
ICAgICBpZiByZWFzb24uc3RhcnRzd2l0aCgiU2tpcHBlZDogIik6Ci0gICAgICAgICAgICAgICAg
ICAgIHJlYXNvbiA9IHJlYXNvbls5Ol0KLSAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJTS0lQIFslZF0gJXM6JWQ6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAobnVtLCBmc3BhdGgsIGxpbmVubyArIDEsIHJlYXNvbikpCi0gICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAg
ICAgICAgIlNLSVAgWyVkXSAlczogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChudW0s
IGZzcGF0aCwgcmVhc29uKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdGVybWlu
YWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Rlcm1pbmFsLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxYWJhNWU4NDVlNTEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L3Rlcm1pbmFsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAzICswLDAgQEAKLSIi
IiB0ZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9jZXNzLgotCi1UaGlz
IGlzIGEgZ29vZCBzb3VyY2UgZm9yIGxvb2tpbmcgYXQgdGhlIHZhcmlvdXMgcmVwb3J0aW5nIGhv
b2tzLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNp
b24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBpdGVydG9vbHMKLWltcG9ydCBwbGF0Zm9ybQot
aW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQotaW1wb3J0IHBsdWdneQotaW1wb3J0IHB5Ci1pbXBv
cnQgc2l4Ci0KLWltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKLWZyb20g
X3B5dGVzdC5tYWluIGltcG9ydCBFWElUX09LLCBFWElUX1RFU1RTRkFJTEVELCBFWElUX0lOVEVS
UlVQVEVELCBcCi0gICAgRVhJVF9VU0FHRUVSUk9SLCBFWElUX05PVEVTVFNDT0xMRUNURUQKLQot
Ci1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdy
b3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmciLCAicmVwb3J0aW5nIiwgYWZ0ZXI9ImdlbmVyYWwiKQot
ICAgIGdyb3VwLl9hZGRvcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0iY291bnQiLAot
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0idmVyYm9zZSIsIGRlZmF1bHQ9MCwgaGVscD0iaW5j
cmVhc2UgdmVyYm9zaXR5LiIpLAotICAgIGdyb3VwLl9hZGRvcHRpb24oJy1xJywgJy0tcXVpZXQn
LCBhY3Rpb249ImNvdW50IiwKLSAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InF1aWV0IiwgZGVm
YXVsdD0wLCBoZWxwPSJkZWNyZWFzZSB2ZXJib3NpdHkuIiksCi0gICAgZ3JvdXAuX2FkZG9wdGlv
bignLXInLAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InJlcG9y
dGNoYXJzIiwgZGVmYXVsdD0nJywgbWV0YXZhcj0iY2hhcnMiLAotICAgICAgICAgICAgICAgICAg
ICAgaGVscD0ic2hvdyBleHRyYSB0ZXN0IHN1bW1hcnkgaW5mbyBhcyBzcGVjaWZpZWQgYnkgY2hh
cnMgKGYpYWlsZWQsICIKLSAgICAgICAgICAgICAgICAgICAgICIoRSllcnJvciwgKHMpc2tpcHBl
ZCwgKHgpZmFpbGVkLCAoWClwYXNzZWQsICIKLSAgICAgICAgICAgICAgICAgICAgICIocClwYXNz
ZWQsIChQKXBhc3NlZCB3aXRoIG91dHB1dCwgKGEpYWxsIGV4Y2VwdCBwUC4gIgotICAgICAgICAg
ICAgICAgICAgICAgIldhcm5pbmdzIGFyZSBkaXNwbGF5ZWQgYXQgYWxsIHRpbWVzIGV4Y2VwdCB3
aGVuICIKLSAgICAgICAgICAgICAgICAgICAgICItLWRpc2FibGUtd2FybmluZ3MgaXMgc2V0IikK
LSAgICBncm91cC5fYWRkb3B0aW9uKCctLWRpc2FibGUtd2FybmluZ3MnLCAnLS1kaXNhYmxlLXB5
dGVzdC13YXJuaW5ncycsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBkZXN0
PSdkaXNhYmxlX3dhcm5pbmdzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J2Rpc2FibGUgd2FybmluZ3Mgc3VtbWFyeScpCi0gICAgZ3JvdXAuX2FkZG9w
dGlvbignLWwnLCAnLS1zaG93bG9jYWxzJywKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dsb2NhbHMiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgaGVscD0ic2hvdyBsb2NhbHMgaW4gdHJhY2ViYWNrcyAoZGlzYWJsZWQgYnkg
ZGVmYXVsdCkuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCctLXRiJywgbWV0YXZhcj0ic3R5bGUi
LAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InRic3R5bGUiLCBk
ZWZhdWx0PSdhdXRvJywKLSAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydhdXRvJywgJ2xv
bmcnLCAnc2hvcnQnLCAnbm8nLCAnbGluZScsICduYXRpdmUnXSwKLSAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9InRyYWNlYmFjayBwcmludCBtb2RlIChhdXRvL2xvbmcvc2hvcnQvbGluZS9uYXRp
dmUvbm8pLiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLS1mdWxsdHJhY2UnLCAnLS1mdWxsLXRy
YWNlJywKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBjdXQgYW55IHRyYWNlYmFj
a3MgKGRlZmF1bHQgaXMgdG8gY3V0KS4iKQotICAgIGdyb3VwLl9hZGRvcHRpb24oJy0tY29sb3In
LCBtZXRhdmFyPSJjb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwg
ZGVzdD0iY29sb3IiLCBkZWZhdWx0PSdhdXRvJywKLSAgICAgICAgICAgICAgICAgICAgIGNob2lj
ZXM9Wyd5ZXMnLCAnbm8nLCAnYXV0byddLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0iY29s
b3IgdGVybWluYWwgb3V0cHV0ICh5ZXMvbm8vYXV0bykuIikKLQotICAgIHBhcnNlci5hZGRpbmko
ImNvbnNvbGVfb3V0cHV0X3N0eWxlIiwKLSAgICAgICAgICAgICAgICAgIGhlbHA9ImNvbnNvbGUg
b3V0cHV0OiBjbGFzc2ljIG9yIHdpdGggYWRkaXRpb25hbCBwcm9ncmVzcyBpbmZvcm1hdGlvbiAo
Y2xhc3NpY3xwcm9ncmVzcykuIiwKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3Byb2dyZXNz
JykKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGNvbmZpZy5vcHRpb24u
dmVyYm9zZSAtPSBjb25maWcub3B0aW9uLnF1aWV0Ci0gICAgcmVwb3J0ZXIgPSBUZXJtaW5hbFJl
cG9ydGVyKGNvbmZpZywgc3lzLnN0ZG91dCkKLSAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdp
c3RlcihyZXBvcnRlciwgJ3Rlcm1pbmFscmVwb3J0ZXInKQotICAgIGlmIGNvbmZpZy5vcHRpb24u
ZGVidWcgb3IgY29uZmlnLm9wdGlvbi50cmFjZWNvbmZpZzoKLSAgICAgICAgZGVmIG15d3JpdGVy
KHRhZ3MsIGFyZ3MpOgotICAgICAgICAgICAgbXNnID0gIiAiLmpvaW4obWFwKHN0ciwgYXJncykp
Ci0gICAgICAgICAgICByZXBvcnRlci53cml0ZV9saW5lKCJbdHJhY2Vjb25maWddICIgKyBtc2cp
Ci0gICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNldHByb2Nlc3NvcigicHl0ZXN0OmNvbmZpZyIs
IG15d3JpdGVyKQotCi0KLWRlZiBnZXRyZXBvcnRvcHQoY29uZmlnKToKLSAgICByZXBvcnRvcHRz
ID0gIiIKLSAgICByZXBvcnRjaGFycyA9IGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMKLSAgICBp
ZiBub3QgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdzIGFuZCAndycgbm90IGluIHJlcG9y
dGNoYXJzOgotICAgICAgICByZXBvcnRjaGFycyArPSAndycKLSAgICBlbGlmIGNvbmZpZy5vcHRp
b24uZGlzYWJsZV93YXJuaW5ncyBhbmQgJ3cnIGluIHJlcG9ydGNoYXJzOgotICAgICAgICByZXBv
cnRjaGFycyA9IHJlcG9ydGNoYXJzLnJlcGxhY2UoJ3cnLCAnJykKLSAgICBpZiByZXBvcnRjaGFy
czoKLSAgICAgICAgZm9yIGNoYXIgaW4gcmVwb3J0Y2hhcnM6Ci0gICAgICAgICAgICBpZiBjaGFy
IG5vdCBpbiByZXBvcnRvcHRzIGFuZCBjaGFyICE9ICdhJzoKLSAgICAgICAgICAgICAgICByZXBv
cnRvcHRzICs9IGNoYXIKLSAgICAgICAgICAgIGVsaWYgY2hhciA9PSAnYSc6Ci0gICAgICAgICAg
ICAgICAgcmVwb3J0b3B0cyA9ICdmRXN4WHcnCi0gICAgcmV0dXJuIHJlcG9ydG9wdHMKLQotCi1k
ZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6Ci0gICAgaWYgcmVwb3J0LnBhc3Nl
ZDoKLSAgICAgICAgbGV0dGVyID0gIi4iCi0gICAgZWxpZiByZXBvcnQuc2tpcHBlZDoKLSAgICAg
ICAgbGV0dGVyID0gInMiCi0gICAgZWxpZiByZXBvcnQuZmFpbGVkOgotICAgICAgICBsZXR0ZXIg
PSAiRiIKLSAgICAgICAgaWYgcmVwb3J0LndoZW4gIT0gImNhbGwiOgotICAgICAgICAgICAgbGV0
dGVyID0gImYiCi0gICAgcmV0dXJuIHJlcG9ydC5vdXRjb21lLCBsZXR0ZXIsIHJlcG9ydC5vdXRj
b21lLnVwcGVyKCkKLQotCi1jbGFzcyBXYXJuaW5nUmVwb3J0OgotICAgICIiIgotICAgIFNpbXBs
ZSBzdHJ1Y3R1cmUgdG8gaG9sZCB3YXJuaW5ncyBpbmZvcm1hdGlvbiBjYXB0dXJlZCBieSBgYHB5
dGVzdF9sb2d3YXJuaW5nYGAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29k
ZSwgbWVzc2FnZSwgbm9kZWlkPU5vbmUsIGZzbG9jYXRpb249Tm9uZSk6Ci0gICAgICAgICIiIgot
ICAgICAgICA6cGFyYW0gY29kZTogdW51c2VkCi0gICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTog
dXNlciBmcmllbmRseSBtZXNzYWdlIGFib3V0IHRoZSB3YXJuaW5nCi0gICAgICAgIDpwYXJhbSBz
dHJ8Tm9uZSBub2RlaWQ6IG5vZGUgaWQgdGhhdCBnZW5lcmF0ZWQgdGhlIHdhcm5pbmcgKHNlZSBg
YGdldF9sb2NhdGlvbmBgKS4KLSAgICAgICAgOnBhcmFtIHR1cGxlfHB5LnBhdGgubG9jYWwgZnNs
b2NhdGlvbjoKLSAgICAgICAgICAgIGZpbGUgc3lzdGVtIGxvY2F0aW9uIG9mIHRoZSBzb3VyY2Ug
b2YgdGhlIHdhcm5pbmcgKHNlZSBgYGdldF9sb2NhdGlvbmBgKS4KLSAgICAgICAgIiIiCi0gICAg
ICAgIHNlbGYuY29kZSA9IGNvZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotICAg
ICAgICBzZWxmLm5vZGVpZCA9IG5vZGVpZAotICAgICAgICBzZWxmLmZzbG9jYXRpb24gPSBmc2xv
Y2F0aW9uCi0KLSAgICBkZWYgZ2V0X2xvY2F0aW9uKHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgICIi
IgotICAgICAgICBSZXR1cm5zIHRoZSBtb3JlIHVzZXItZnJpZW5kbHkgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGxvY2F0aW9uCi0gICAgICAgIG9mIGEgd2FybmluZywgb3IgTm9uZS4KLSAgICAgICAg
IiIiCi0gICAgICAgIGlmIHNlbGYubm9kZWlkOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubm9k
ZWlkCi0gICAgICAgIGlmIHNlbGYuZnNsb2NhdGlvbjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uoc2VsZi5mc2xvY2F0aW9uLCB0dXBsZSkgYW5kIGxlbihzZWxmLmZzbG9jYXRpb24pID49IDI6
Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVudW0gPSBzZWxmLmZzbG9jYXRpb25bOjJd
Ci0gICAgICAgICAgICAgICAgcmVscGF0aCA9IHB5LnBhdGgubG9jYWwoZmlsZW5hbWUpLnJlbHRv
KGNvbmZpZy5pbnZvY2F0aW9uX2RpcikKLSAgICAgICAgICAgICAgICByZXR1cm4gJyVzOiVzJyAl
IChyZWxwYXRoLCBsaW5lbnVtKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RyKHNlbGYuZnNsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi1jbGFz
cyBUZXJtaW5hbFJlcG9ydGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcsIGZpbGU9
Tm9uZSk6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwotICAgICAgICBzZWxmLmNvbmZp
ZyA9IGNvbmZpZwotICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHNlbGYuY29uZmlnLm9wdGlvbi52
ZXJib3NlCi0gICAgICAgIHNlbGYuc2hvd2hlYWRlciA9IHNlbGYudmVyYm9zaXR5ID49IDAKLSAg
ICAgICAgc2VsZi5zaG93ZnNwYXRoID0gc2VsZi52ZXJib3NpdHkgPj0gMAotICAgICAgICBzZWxm
LnNob3dsb25ndGVzdGluZm8gPSBzZWxmLnZlcmJvc2l0eSA+IDAKLSAgICAgICAgc2VsZi5fbnVt
Y29sbGVjdGVkID0gMAotICAgICAgICBzZWxmLl9zZXNzaW9uID0gTm9uZQotCi0gICAgICAgIHNl
bGYuc3RhdHMgPSB7fQotICAgICAgICBzZWxmLnN0YXJ0ZGlyID0gcHkucGF0aC5sb2NhbCgpCi0g
ICAgICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgIGZpbGUgPSBzeXMuc3Rkb3V0Ci0g
ICAgICAgIHNlbGYuX3R3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihj
b25maWcsIGZpbGUpCi0gICAgICAgICMgc2VsZi53cml0ZXIgd2lsbCBiZSBkZXByZWNhdGVkIGlu
IHB5dGVzdC0zLjQKLSAgICAgICAgc2VsZi53cml0ZXIgPSBzZWxmLl90dwotICAgICAgICBzZWxm
Ll9zY3JlZW5fd2lkdGggPSBzZWxmLl90dy5mdWxsd2lkdGgKLSAgICAgICAgc2VsZi5jdXJyZW50
ZnNwYXRoID0gTm9uZQotICAgICAgICBzZWxmLnJlcG9ydGNoYXJzID0gZ2V0cmVwb3J0b3B0KGNv
bmZpZykKLSAgICAgICAgc2VsZi5oYXNtYXJrdXAgPSBzZWxmLl90dy5oYXNtYXJrdXAKLSAgICAg
ICAgc2VsZi5pc2F0dHkgPSBmaWxlLmlzYXR0eSgpCi0gICAgICAgIHNlbGYuX3Byb2dyZXNzX2l0
ZW1zX3JlcG9ydGVkID0gMAotICAgICAgICBzZWxmLl9zaG93X3Byb2dyZXNzX2luZm8gPSBzZWxm
LmNvbmZpZy5nZXRpbmkoJ2NvbnNvbGVfb3V0cHV0X3N0eWxlJykgPT0gJ3Byb2dyZXNzJwotCi0g
ICAgZGVmIGhhc29wdChzZWxmLCBjaGFyKToKLSAgICAgICAgY2hhciA9IHsneGZhaWxlZCc6ICd4
JywgJ3NraXBwZWQnOiAncyd9LmdldChjaGFyLCBjaGFyKQotICAgICAgICByZXR1cm4gY2hhciBp
biBzZWxmLnJlcG9ydGNoYXJzCi0KLSAgICBkZWYgd3JpdGVfZnNwYXRoX3Jlc3VsdChzZWxmLCBu
b2RlaWQsIHJlcyk6Ci0gICAgICAgIGZzcGF0aCA9IHNlbGYuY29uZmlnLnJvb3RkaXIuam9pbihu
b2RlaWQuc3BsaXQoIjo6IilbMF0pCi0gICAgICAgIGlmIGZzcGF0aCAhPSBzZWxmLmN1cnJlbnRm
c3BhdGg6Ci0gICAgICAgICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGggaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19z
cGFjZSgpCi0gICAgICAgICAgICBzZWxmLmN1cnJlbnRmc3BhdGggPSBmc3BhdGgKLSAgICAgICAg
ICAgIGZzcGF0aCA9IHNlbGYuc3RhcnRkaXIuYmVzdHJlbHBhdGgoZnNwYXRoKQotICAgICAgICAg
ICAgc2VsZi5fdHcubGluZSgpCi0gICAgICAgICAgICBzZWxmLl90dy53cml0ZShmc3BhdGggKyAi
ICIpCi0gICAgICAgIHNlbGYuX3R3LndyaXRlKHJlcykKLQotICAgIGRlZiB3cml0ZV9lbnN1cmVf
cHJlZml4KHNlbGYsIHByZWZpeCwgZXh0cmE9IiIsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2Vs
Zi5jdXJyZW50ZnNwYXRoICE9IHByZWZpeDoKLSAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoKQot
ICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0gcHJlZml4Ci0gICAgICAgICAgICBzZWxm
Ll90dy53cml0ZShwcmVmaXgpCi0gICAgICAgIGlmIGV4dHJhOgotICAgICAgICAgICAgc2VsZi5f
dHcud3JpdGUoZXh0cmEsICoqa3dhcmdzKQotICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRo
ID0gLTIKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Byb2dyZXNzX2luZm9ybWF0aW9uX2ZpbGxp
bmdfc3BhY2UoKQotCi0gICAgZGVmIGVuc3VyZV9uZXdsaW5lKHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLmN1cnJlbnRmc3BhdGg6Ci0gICAgICAgICAgICBzZWxmLl90dy5saW5lKCkKLSAgICAgICAg
ICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IE5vbmUKLQotICAgIGRlZiB3cml0ZShzZWxmLCBjb250
ZW50LCAqKm1hcmt1cCk6Ci0gICAgICAgIHNlbGYuX3R3LndyaXRlKGNvbnRlbnQsICoqbWFya3Vw
KQotCi0gICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSwgKiptYXJrdXApOgotICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShsaW5lLCBzaXgudGV4dF90eXBlKToKLSAgICAgICAgICAgIGxpbmUg
PSBzaXgudGV4dF90eXBlKGxpbmUsIGVycm9ycz0icmVwbGFjZSIpCi0gICAgICAgIHNlbGYuZW5z
dXJlX25ld2xpbmUoKQotICAgICAgICBzZWxmLl90dy5saW5lKGxpbmUsICoqbWFya3VwKQotCi0g
ICAgZGVmIHJld3JpdGUoc2VsZiwgbGluZSwgKiptYXJrdXApOgotICAgICAgICAiIiIKLSAgICAg
ICAgUmV3aW5kcyB0aGUgdGVybWluYWwgY3Vyc29yIHRvIHRoZSBiZWdpbm5pbmcgYW5kIHdyaXRl
cyB0aGUgZ2l2ZW4gbGluZS4KLQotICAgICAgICA6a3dhcmcgZXJhc2U6IGlmIFRydWUsIHdpbGwg
YWxzbyBhZGQgc3BhY2VzIHVudGlsIHRoZSBmdWxsIHRlcm1pbmFsIHdpZHRoIHRvIGVuc3VyZQot
ICAgICAgICAgICAgcHJldmlvdXMgbGluZXMgYXJlIHByb3Blcmx5IGVyYXNlZC4KLQotICAgICAg
ICBUaGUgcmVzdCBvZiB0aGUga2V5d29yZCBhcmd1bWVudHMgYXJlIG1hcmt1cCBpbnN0cnVjdGlv
bnMuCi0gICAgICAgICIiIgotICAgICAgICBlcmFzZSA9IG1hcmt1cC5wb3AoJ2VyYXNlJywgRmFs
c2UpCi0gICAgICAgIGlmIGVyYXNlOgotICAgICAgICAgICAgZmlsbF9jb3VudCA9IHNlbGYuX3R3
LmZ1bGx3aWR0aCAtIGxlbihsaW5lKSAtIDEKLSAgICAgICAgICAgIGZpbGwgPSAnICcgKiBmaWxs
X2NvdW50Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxsID0gJycKLSAgICAgICAgbGlu
ZSA9IHN0cihsaW5lKQotICAgICAgICBzZWxmLl90dy53cml0ZSgiXHIiICsgbGluZSArIGZpbGws
ICoqbWFya3VwKQotCi0gICAgZGVmIHdyaXRlX3NlcChzZWxmLCBzZXAsIHRpdGxlPU5vbmUsICoq
bWFya3VwKToKLSAgICAgICAgc2VsZi5lbnN1cmVfbmV3bGluZSgpCi0gICAgICAgIHNlbGYuX3R3
LnNlcChzZXAsIHRpdGxlLCAqKm1hcmt1cCkKLQotICAgIGRlZiBzZWN0aW9uKHNlbGYsIHRpdGxl
LCBzZXA9Ij0iLCAqKmt3KToKLSAgICAgICAgc2VsZi5fdHcuc2VwKHNlcCwgdGl0bGUsICoqa3cp
Ci0KLSAgICBkZWYgbGluZShzZWxmLCBtc2csICoqa3cpOgotICAgICAgICBzZWxmLl90dy5saW5l
KG1zZywgKiprdykKLQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCBleGNyZXBy
KToKLSAgICAgICAgZm9yIGxpbmUgaW4gc2l4LnRleHRfdHlwZShleGNyZXByKS5zcGxpdCgiXG4i
KToKLSAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZSgiSU5URVJOQUxFUlJPUj4gIiArIGxpbmUp
Ci0gICAgICAgIHJldHVybiAxCi0KLSAgICBkZWYgcHl0ZXN0X2xvZ3dhcm5pbmcoc2VsZiwgY29k
ZSwgZnNsb2NhdGlvbiwgbWVzc2FnZSwgbm9kZWlkKToKLSAgICAgICAgd2FybmluZ3MgPSBzZWxm
LnN0YXRzLnNldGRlZmF1bHQoIndhcm5pbmdzIiwgW10pCi0gICAgICAgIHdhcm5pbmcgPSBXYXJu
aW5nUmVwb3J0KGNvZGU9Y29kZSwgZnNsb2NhdGlvbj1mc2xvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsIG5vZGVpZD1ub2RlaWQpCi0gICAg
ICAgIHdhcm5pbmdzLmFwcGVuZCh3YXJuaW5nKQotCi0gICAgZGVmIHB5dGVzdF9wbHVnaW5fcmVn
aXN0ZXJlZChzZWxmLCBwbHVnaW4pOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udHJh
Y2Vjb25maWc6Ci0gICAgICAgICAgICBtc2cgPSAiUExVR0lOIHJlZ2lzdGVyZWQ6ICVzIiAlIChw
bHVnaW4sKQotICAgICAgICAgICAgIyBYWFggdGhpcyBldmVudCBtYXkgaGFwcGVuIGR1cmluZyBz
ZXR1cC90ZWFyZG93biB0aW1lCi0gICAgICAgICAgICAjICAgICB3aGljaCB1bmZvcnR1bmF0ZWx5
IGNhcHR1cmVzIG91ciBvdXRwdXQgaGVyZQotICAgICAgICAgICAgIyAgICAgd2hpY2ggZ2FyYmxl
cyBvdXIgb3V0cHV0IGlmIHdlIHVzZSBzZWxmLndyaXRlX2xpbmUKLSAgICAgICAgICAgIHNlbGYu
d3JpdGVfbGluZShtc2cpCi0KLSAgICBkZWYgcHl0ZXN0X2Rlc2VsZWN0ZWQoc2VsZiwgaXRlbXMp
OgotICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoJ2Rlc2VsZWN0ZWQnLCBbXSkuZXh0ZW5k
KGl0ZW1zKQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KHNlbGYsIG5vZGVpZCwg
bG9jYXRpb24pOgotICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZSBwYXRoIGlzIHByaW50ZWQgYmVm
b3JlIHRoZQotICAgICAgICAjIDFzdCB0ZXN0IG9mIGEgbW9kdWxlIHN0YXJ0cyBydW5uaW5nCi0g
ICAgICAgIGlmIHNlbGYuc2hvd2xvbmd0ZXN0aW5mbzoKLSAgICAgICAgICAgIGxpbmUgPSBzZWxm
Ll9sb2NhdGlvbmxpbmUobm9kZWlkLCAqbG9jYXRpb24pCi0gICAgICAgICAgICBzZWxmLndyaXRl
X2Vuc3VyZV9wcmVmaXgobGluZSwgIiIpCi0gICAgICAgIGVsaWYgc2VsZi5zaG93ZnNwYXRoOgot
ICAgICAgICAgICAgZnNpZCA9IG5vZGVpZC5zcGxpdCgiOjoiKVswXQotICAgICAgICAgICAgc2Vs
Zi53cml0ZV9mc3BhdGhfcmVzdWx0KGZzaWQsICIiKQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0
X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQpOgotICAgICAgICByZXAgPSByZXBvcnQKLSAgICAgICAg
cmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0PXJl
cCkKLSAgICAgICAgY2F0LCBsZXR0ZXIsIHdvcmQgPSByZXMKLSAgICAgICAgaWYgaXNpbnN0YW5j
ZSh3b3JkLCB0dXBsZSk6Ci0gICAgICAgICAgICB3b3JkLCBtYXJrdXAgPSB3b3JkCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBtYXJrdXAgPSBOb25lCi0gICAgICAgIHNlbGYuc3RhdHMuc2V0
ZGVmYXVsdChjYXQsIFtdKS5hcHBlbmQocmVwKQotICAgICAgICBzZWxmLl90ZXN0c19yYW4gPSBU
cnVlCi0gICAgICAgIGlmIG5vdCBsZXR0ZXIgYW5kIG5vdCB3b3JkOgotICAgICAgICAgICAgIyBw
cm9iYWJseSBwYXNzZWQgc2V0dXAvdGVhcmRvd24KLSAgICAgICAgICAgIHJldHVybgotICAgICAg
ICBydW5uaW5nX3hkaXN0ID0gaGFzYXR0cihyZXAsICdub2RlJykKLSAgICAgICAgc2VsZi5fcHJv
Z3Jlc3NfaXRlbXNfcmVwb3J0ZWQgKz0gMQotICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA8PSAw
OgotICAgICAgICAgICAgaWYgbm90IHJ1bm5pbmdfeGRpc3QgYW5kIHNlbGYuc2hvd2ZzcGF0aDoK
LSAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2ZzcGF0aF9yZXN1bHQocmVwLm5vZGVpZCwgbGV0
dGVyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl90dy53cml0ZShs
ZXR0ZXIpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9wcm9ncmVzc19pZl9wYXN0X2VkZ2UoKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbWFya3VwIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgaWYgcmVwLnBhc3NlZDoKLSAgICAgICAgICAgICAgICAgICAgbWFya3VwID0geydncmVl
bic6IFRydWV9Ci0gICAgICAgICAgICAgICAgZWxpZiByZXAuZmFpbGVkOgotICAgICAgICAgICAg
ICAgICAgICBtYXJrdXAgPSB7J3JlZCc6IFRydWV9Ci0gICAgICAgICAgICAgICAgZWxpZiByZXAu
c2tpcHBlZDoKLSAgICAgICAgICAgICAgICAgICAgbWFya3VwID0geyd5ZWxsb3cnOiBUcnVlfQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1hcmt1cCA9IHt9Ci0g
ICAgICAgICAgICBsaW5lID0gc2VsZi5fbG9jYXRpb25saW5lKHJlcC5ub2RlaWQsICpyZXAubG9j
YXRpb24pCi0gICAgICAgICAgICBpZiBub3QgcnVubmluZ194ZGlzdDoKLSAgICAgICAgICAgICAg
ICBzZWxmLndyaXRlX2Vuc3VyZV9wcmVmaXgobGluZSwgd29yZCwgKiptYXJrdXApCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZW5zdXJlX25ld2xpbmUoKQotICAgICAg
ICAgICAgICAgIHNlbGYuX3R3LndyaXRlKCJbJXNdIiAlIHJlcC5ub2RlLmdhdGV3YXkuaWQpCi0g
ICAgICAgICAgICAgICAgaWYgc2VsZi5fc2hvd19wcm9ncmVzc19pbmZvOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl90dy53cml0ZShzZWxmLl9nZXRfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fbWVz
c2FnZSgpICsgIiAiLCBjeWFuPVRydWUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUoJyAnKQotICAgICAgICAgICAgICAgIHNlbGYuX3R3
LndyaXRlKHdvcmQsICoqbWFya3VwKQotICAgICAgICAgICAgICAgIHNlbGYuX3R3LndyaXRlKCIg
IiArIGxpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0gLTIKLQotICAg
IGRlZiBfd3JpdGVfcHJvZ3Jlc3NfaWZfcGFzdF9lZGdlKHNlbGYpOgotICAgICAgICBpZiBub3Qg
c2VsZi5fc2hvd19wcm9ncmVzc19pbmZvOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGxh
c3RfaXRlbSA9IHNlbGYuX3Byb2dyZXNzX2l0ZW1zX3JlcG9ydGVkID09IHNlbGYuX3Nlc3Npb24u
dGVzdHNjb2xsZWN0ZWQKLSAgICAgICAgaWYgbGFzdF9pdGVtOgotICAgICAgICAgICAgc2VsZi5f
d3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZSgpCi0gICAgICAgICAgICBy
ZXR1cm4KLQotICAgICAgICBwYXN0X2VkZ2UgPSBzZWxmLl90dy5jaGFyc19vbl9jdXJyZW50X2xp
bmUgKyBzZWxmLl9QUk9HUkVTU19MRU5HVEggKyAxID49IHNlbGYuX3NjcmVlbl93aWR0aAotICAg
ICAgICBpZiBwYXN0X2VkZ2U6Ci0gICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRfcHJvZ3Jlc3Nf
aW5mb3JtYXRpb25fbWVzc2FnZSgpCi0gICAgICAgICAgICBzZWxmLl90dy53cml0ZShtc2cgKyAn
XG4nLCBjeWFuPVRydWUpCi0KLSAgICBfUFJPR1JFU1NfTEVOR1RIID0gbGVuKCcgWzEwMCVdJykK
LQotICAgIGRlZiBfZ2V0X3Byb2dyZXNzX2luZm9ybWF0aW9uX21lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIGNvbGxlY3RlZCA9IHNlbGYuX3Nlc3Npb24udGVzdHNjb2xsZWN0ZWQKLSAgICAgICAgaWYg
Y29sbGVjdGVkOgotICAgICAgICAgICAgcHJvZ3Jlc3MgPSBzZWxmLl9wcm9ncmVzc19pdGVtc19y
ZXBvcnRlZCAqIDEwMCAvLyBjb2xsZWN0ZWQKLSAgICAgICAgICAgIHJldHVybiAnIFt7OjNkfSVd
Jy5mb3JtYXQocHJvZ3Jlc3MpCi0gICAgICAgIHJldHVybiAnIFsxMDAlXScKLQotICAgIGRlZiBf
d3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZShzZWxmKToKLSAgICAgICAg
aWYgbm90IHNlbGYuX3Nob3dfcHJvZ3Jlc3NfaW5mbzoKLSAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBtc2cgPSBzZWxmLl9nZXRfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fbWVzc2FnZSgpCi0gICAg
ICAgIGZpbGwgPSAnICcgKiAoc2VsZi5fdHcuZnVsbHdpZHRoIC0gc2VsZi5fdHcuY2hhcnNfb25f
Y3VycmVudF9saW5lIC0gbGVuKG1zZykgLSAxKQotICAgICAgICBzZWxmLndyaXRlKGZpbGwgKyBt
c2csIGN5YW49VHJ1ZSkKLQotICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbihzZWxmKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuaXNhdHR5IGFuZCBzZWxmLmNvbmZpZy5vcHRpb24udmVyYm9zZSA+PSAx
OgotICAgICAgICAgICAgc2VsZi53cml0ZSgiY29sbGVjdGluZyAuLi4gIiwgYm9sZD1UcnVlKQot
Ci0gICAgZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlm
IHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoImVycm9y
IiwgW10pLmFwcGVuZChyZXBvcnQpCi0gICAgICAgIGVsaWYgcmVwb3J0LnNraXBwZWQ6Ci0gICAg
ICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoInNraXBwZWQiLCBbXSkuYXBwZW5kKHJlcG9y
dCkKLSAgICAgICAgaXRlbXMgPSBbeCBmb3IgeCBpbiByZXBvcnQucmVzdWx0IGlmIGlzaW5zdGFu
Y2UoeCwgcHl0ZXN0Lkl0ZW0pXQotICAgICAgICBzZWxmLl9udW1jb2xsZWN0ZWQgKz0gbGVuKGl0
ZW1zKQotICAgICAgICBpZiBzZWxmLmlzYXR0eToKLSAgICAgICAgICAgICMgc2VsZi53cml0ZV9m
c3BhdGhfcmVzdWx0KHJlcG9ydC5ub2RlaWQsICdFJykKLSAgICAgICAgICAgIHNlbGYucmVwb3J0
X2NvbGxlY3QoKQotCi0gICAgZGVmIHJlcG9ydF9jb2xsZWN0KHNlbGYsIGZpbmFsPUZhbHNlKToK
LSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPCAwOgotICAgICAgICAgICAg
cmV0dXJuCi0KLSAgICAgICAgZXJyb3JzID0gbGVuKHNlbGYuc3RhdHMuZ2V0KCdlcnJvcicsIFtd
KSkKLSAgICAgICAgc2tpcHBlZCA9IGxlbihzZWxmLnN0YXRzLmdldCgnc2tpcHBlZCcsIFtdKSkK
LSAgICAgICAgaWYgZmluYWw6Ci0gICAgICAgICAgICBsaW5lID0gImNvbGxlY3RlZCAiCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gImNvbGxlY3RpbmcgIgotICAgICAgICBsaW5l
ICs9IHN0cihzZWxmLl9udW1jb2xsZWN0ZWQpICsgIiBpdGVtIiArICgnJyBpZiBzZWxmLl9udW1j
b2xsZWN0ZWQgPT0gMSBlbHNlICdzJykKLSAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAg
bGluZSArPSAiIC8gJWQgZXJyb3JzIiAlIGVycm9ycwotICAgICAgICBpZiBza2lwcGVkOgotICAg
ICAgICAgICAgbGluZSArPSAiIC8gJWQgc2tpcHBlZCIgJSBza2lwcGVkCi0gICAgICAgIGlmIHNl
bGYuaXNhdHR5OgotICAgICAgICAgICAgc2VsZi5yZXdyaXRlKGxpbmUsIGJvbGQ9VHJ1ZSwgZXJh
c2U9VHJ1ZSkKLSAgICAgICAgICAgIGlmIGZpbmFsOgotICAgICAgICAgICAgICAgIHNlbGYud3Jp
dGUoJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShsaW5l
KQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYpOgotICAgICAg
ICBzZWxmLnJlcG9ydF9jb2xsZWN0KFRydWUpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxh
c3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxmLCBzZXNzaW9uKToKLSAg
ICAgICAgc2VsZi5fc2Vzc2lvbiA9IHNlc3Npb24KLSAgICAgICAgc2VsZi5fc2Vzc2lvbnN0YXJ0
dGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIGlmIG5vdCBzZWxmLnNob3doZWFkZXI6Ci0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi53cml0ZV9zZXAoIj0iLCAidGVzdCBzZXNzaW9u
IHN0YXJ0cyIsIGJvbGQ9VHJ1ZSkKLSAgICAgICAgdmVyaW5mbyA9IHBsYXRmb3JtLnB5dGhvbl92
ZXJzaW9uKCkKLSAgICAgICAgbXNnID0gInBsYXRmb3JtICVzIC0tIFB5dGhvbiAlcyIgJSAoc3lz
LnBsYXRmb3JtLCB2ZXJpbmZvKQotICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ3B5cHlfdmVyc2lv
bl9pbmZvJyk6Ci0gICAgICAgICAgICB2ZXJpbmZvID0gIi4iLmpvaW4obWFwKHN0ciwgc3lzLnB5
cHlfdmVyc2lvbl9pbmZvWzozXSkpCi0gICAgICAgICAgICBtc2cgKz0gIltweXB5LSVzLSVzXSIg
JSAodmVyaW5mbywgc3lzLnB5cHlfdmVyc2lvbl9pbmZvWzNdKQotICAgICAgICBtc2cgKz0gIiwg
cHl0ZXN0LSVzLCBweS0lcywgcGx1Z2d5LSVzIiAlICgKLSAgICAgICAgICAgICAgIHB5dGVzdC5f
X3ZlcnNpb25fXywgcHkuX192ZXJzaW9uX18sIHBsdWdneS5fX3ZlcnNpb25fXykKLSAgICAgICAg
aWYgc2VsZi52ZXJib3NpdHkgPiAwIG9yIHNlbGYuY29uZmlnLm9wdGlvbi5kZWJ1ZyBvciBcCi0g
ICAgICAgICAgIGdldGF0dHIoc2VsZi5jb25maWcub3B0aW9uLCAncGFzdGViaW4nLCBOb25lKToK
LSAgICAgICAgICAgIG1zZyArPSAiIC0tICIgKyBzdHIoc3lzLmV4ZWN1dGFibGUpCi0gICAgICAg
IHNlbGYud3JpdGVfbGluZShtc2cpCi0gICAgICAgIGxpbmVzID0gc2VsZi5jb25maWcuaG9vay5w
eXRlc3RfcmVwb3J0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbmZpZz1zZWxmLmNvbmZpZywgc3Rh
cnRkaXI9c2VsZi5zdGFydGRpcikKLSAgICAgICAgc2VsZi5fd3JpdGVfcmVwb3J0X2xpbmVzX2Zy
b21faG9va3MobGluZXMpCi0KLSAgICBkZWYgX3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hvb2tz
KHNlbGYsIGxpbmVzKToKLSAgICAgICAgbGluZXMucmV2ZXJzZSgpCi0gICAgICAgIGZvciBsaW5l
IGluIGZsYXR0ZW4obGluZXMpOgotICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGxpbmUpCi0K
LSAgICBkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoc2VsZiwgY29uZmlnKToKLSAgICAgICAgaW5p
ZmlsZSA9ICIiCi0gICAgICAgIGlmIGNvbmZpZy5pbmlmaWxlOgotICAgICAgICAgICAgaW5pZmls
ZSA9ICIgIiArIGNvbmZpZy5yb290ZGlyLmJlc3RyZWxwYXRoKGNvbmZpZy5pbmlmaWxlKQotICAg
ICAgICBsaW5lcyA9IFsicm9vdGRpcjogJXMsIGluaWZpbGU6JXMiICUgKGNvbmZpZy5yb290ZGly
LCBpbmlmaWxlKV0KLQotICAgICAgICBwbHVnaW5pbmZvID0gY29uZmlnLnBsdWdpbm1hbmFnZXIu
bGlzdF9wbHVnaW5fZGlzdGluZm8oKQotICAgICAgICBpZiBwbHVnaW5pbmZvOgotCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgInBsdWdpbnM6ICVzIiAlICIsICIu
am9pbihfcGx1Z2luX25hbWV2ZXJzaW9ucyhwbHVnaW5pbmZvKSkpCi0gICAgICAgIHJldHVybiBs
aW5lcwotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX2ZpbmlzaChzZWxmLCBzZXNzaW9uKToK
LSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLmNvbGxlY3Rvbmx5OgotICAgICAgICAgICAg
c2VsZi5fcHJpbnRjb2xsZWN0ZWRpdGVtcyhzZXNzaW9uLml0ZW1zKQotICAgICAgICAgICAgaWYg
c2VsZi5zdGF0cy5nZXQoJ2ZhaWxlZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LnNlcCgi
ISIsICJjb2xsZWN0aW9uIGZhaWx1cmVzIikKLSAgICAgICAgICAgICAgICBmb3IgcmVwIGluIHNl
bGYuc3RhdHMuZ2V0KCdmYWlsZWQnKToKLSAgICAgICAgICAgICAgICAgICAgcmVwLnRvdGVybWlu
YWwoc2VsZi5fdHcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgICAgIHJldHVy
biAwCi0gICAgICAgIGxpbmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X2NvbGxl
Y3Rpb25maW5pc2goCi0gICAgICAgICAgICBjb25maWc9c2VsZi5jb25maWcsIHN0YXJ0ZGlyPXNl
bGYuc3RhcnRkaXIsIGl0ZW1zPXNlc3Npb24uaXRlbXMpCi0gICAgICAgIHNlbGYuX3dyaXRlX3Jl
cG9ydF9saW5lc19mcm9tX2hvb2tzKGxpbmVzKQotCi0gICAgZGVmIF9wcmludGNvbGxlY3RlZGl0
ZW1zKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIyB0byBwcmludCBvdXQgaXRlbXMgYW5kIHRoZWly
IHBhcmVudCBjb2xsZWN0b3JzCi0gICAgICAgICMgd2UgdGFrZSBjYXJlIHRvIGxlYXZlIG91dCBJ
bnN0YW5jZXMgYWthICgpCi0gICAgICAgICMgYmVjYXVzZSBsYXRlciB2ZXJzaW9ucyBhcmUgZ29p
bmcgdG8gZ2V0IHJpZCBvZiB0aGVtIGFueXdheQotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRp
b24udmVyYm9zZSA8IDA6Ci0gICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udmVyYm9z
ZSA8IC0xOgotICAgICAgICAgICAgICAgIGNvdW50cyA9IHt9Ci0gICAgICAgICAgICAgICAgZm9y
IGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpdGVtLm5vZGVpZC5z
cGxpdCgnOjonLCAxKVswXQotICAgICAgICAgICAgICAgICAgICBjb3VudHNbbmFtZV0gPSBjb3Vu
dHMuZ2V0KG5hbWUsIDApICsgMQotICAgICAgICAgICAgICAgIGZvciBuYW1lLCBjb3VudCBpbiBz
b3J0ZWQoY291bnRzLml0ZW1zKCkpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5l
KCIlczogJWQiICUgKG5hbWUsIGNvdW50KSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVpZCA9IGl0
ZW0ubm9kZWlkCi0gICAgICAgICAgICAgICAgICAgIG5vZGVpZCA9IG5vZGVpZC5yZXBsYWNlKCI6
OigpOjoiLCAiOjoiKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKG5vZGVpZCkK
LSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzdGFjayA9IFtdCi0gICAgICAgIGluZGVudCA9
ICIiCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgbmVlZGVkX2NvbGxl
Y3RvcnMgPSBpdGVtLmxpc3RjaGFpbigpWzE6XSAgIyBzdHJpcCByb290IG5vZGUKLSAgICAgICAg
ICAgIHdoaWxlIHN0YWNrOgotICAgICAgICAgICAgICAgIGlmIHN0YWNrID09IG5lZWRlZF9jb2xs
ZWN0b3JzWzpsZW4oc3RhY2spXToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgICAgICBzdGFjay5wb3AoKQotICAgICAgICAgICAgZm9yIGNvbCBpbiBuZWVkZWRfY29sbGVj
dG9yc1tsZW4oc3RhY2spOl06Ci0gICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKGNvbCkKLSAg
ICAgICAgICAgICAgICAjIGlmIGNvbC5uYW1lID09ICIoKSI6Ci0gICAgICAgICAgICAgICAgIyAg
ICBjb250aW51ZQotICAgICAgICAgICAgICAgIGluZGVudCA9IChsZW4oc3RhY2spIC0gMSkgKiAi
ICAiCi0gICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZSgiJXMlcyIgJSAoaW5kZW50LCBjb2wp
KQotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaChzZWxmLCBleGl0c3RhdHVzKToKLSAgICAgICAgb3V0Y29tZSA9IHlp
ZWxkCi0gICAgICAgIG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0gICAgICAgIHNlbGYuX3R3LmxpbmUo
IiIpCi0gICAgICAgIHN1bW1hcnlfZXhpdF9jb2RlcyA9ICgKLSAgICAgICAgICAgIEVYSVRfT0ss
IEVYSVRfVEVTVFNGQUlMRUQsIEVYSVRfSU5URVJSVVBURUQsIEVYSVRfVVNBR0VFUlJPUiwKLSAg
ICAgICAgICAgIEVYSVRfTk9URVNUU0NPTExFQ1RFRCkKLSAgICAgICAgaWYgZXhpdHN0YXR1cyBp
biBzdW1tYXJ5X2V4aXRfY29kZXM6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZy5ob29rLnB5dGVz
dF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXI9c2VsZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdHN0YXR1cz1leGl0c3Rh
dHVzKQotICAgICAgICAgICAgc2VsZi5zdW1tYXJ5X2Vycm9ycygpCi0gICAgICAgICAgICBzZWxm
LnN1bW1hcnlfZmFpbHVyZXMoKQotICAgICAgICAgICAgc2VsZi5zdW1tYXJ5X3dhcm5pbmdzKCkK
LSAgICAgICAgICAgIHNlbGYuc3VtbWFyeV9wYXNzZXMoKQotICAgICAgICBpZiBleGl0c3RhdHVz
ID09IEVYSVRfSU5URVJSVVBURUQ6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfa2V5Ym9hcmRp
bnRlcnJ1cHQoKQotICAgICAgICAgICAgZGVsIHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8K
LSAgICAgICAgc2VsZi5zdW1tYXJ5X2Rlc2VsZWN0ZWQoKQotICAgICAgICBzZWxmLnN1bW1hcnlf
c3RhdHMoKQotCi0gICAgZGVmIHB5dGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQoc2VsZiwgZXhjaW5m
byk6Ci0gICAgICAgIHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8gPSBleGNpbmZvLmdldHJl
cHIoZnVuY2FyZ3M9VHJ1ZSkKLQotICAgIGRlZiBweXRlc3RfdW5jb25maWd1cmUoc2VsZik6Ci0g
ICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19rZXlib2FyZGludGVycnVwdF9tZW1vJyk6Ci0gICAg
ICAgICAgICBzZWxmLl9yZXBvcnRfa2V5Ym9hcmRpbnRlcnJ1cHQoKQotCi0gICAgZGVmIF9yZXBv
cnRfa2V5Ym9hcmRpbnRlcnJ1cHQoc2VsZik6Ci0gICAgICAgIGV4Y3JlcHIgPSBzZWxmLl9rZXli
b2FyZGludGVycnVwdF9tZW1vCi0gICAgICAgIG1zZyA9IGV4Y3JlcHIucmVwcmNyYXNoLm1lc3Nh
Z2UKLSAgICAgICAgc2VsZi53cml0ZV9zZXAoIiEiLCBtc2cpCi0gICAgICAgIGlmICJLZXlib2Fy
ZEludGVycnVwdCIgaW4gbXNnOgotICAgICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLmZ1
bGx0cmFjZToKLSAgICAgICAgICAgICAgICBleGNyZXByLnRvdGVybWluYWwoc2VsZi5fdHcpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoInRvIHNob3cg
YSBmdWxsIHRyYWNlYmFjayBvbiBLZXlib2FyZEludGVycnVwdCB1c2UgLS1mdWxsdHJhY2UiLCB5
ZWxsb3c9VHJ1ZSkKLSAgICAgICAgICAgICAgICBleGNyZXByLnJlcHJjcmFzaC50b3Rlcm1pbmFs
KHNlbGYuX3R3KQotCi0gICAgZGVmIF9sb2NhdGlvbmxpbmUoc2VsZiwgbm9kZWlkLCBmc3BhdGgs
IGxpbmVubywgZG9tYWluKToKLSAgICAgICAgZGVmIG1rcmVsKG5vZGVpZCk6Ci0gICAgICAgICAg
ICBsaW5lID0gc2VsZi5jb25maWcuY3dkX3JlbGF0aXZlX25vZGVpZChub2RlaWQpCi0gICAgICAg
ICAgICBpZiBkb21haW4gYW5kIGxpbmUuZW5kc3dpdGgoZG9tYWluKToKLSAgICAgICAgICAgICAg
ICBsaW5lID0gbGluZVs6LWxlbihkb21haW4pXQotICAgICAgICAgICAgICAgIHZhbHVlcyA9IGRv
bWFpbi5zcGxpdCgiWyIpCi0gICAgICAgICAgICAgICAgdmFsdWVzWzBdID0gdmFsdWVzWzBdLnJl
cGxhY2UoJy4nLCAnOjonKSAgIyBkb24ndCByZXBsYWNlICcuJyBpbiBwYXJhbXMKLSAgICAgICAg
ICAgICAgICBsaW5lICs9ICJbIi5qb2luKHZhbHVlcykKLSAgICAgICAgICAgIHJldHVybiBsaW5l
Ci0gICAgICAgICMgY29sbGVjdF9mc3BhdGggY29tZXMgZnJvbSB0ZXN0aWQgd2hpY2ggaGFzIGEg
Ii8iLW5vcm1hbGl6ZWQgcGF0aAotCi0gICAgICAgIGlmIGZzcGF0aDoKLSAgICAgICAgICAgIHJl
cyA9IG1rcmVsKG5vZGVpZCkucmVwbGFjZSgiOjooKSIsICIiKSAgIyBwYXJlbnMtbm9ybWFsaXph
dGlvbgotICAgICAgICAgICAgaWYgbm9kZWlkLnNwbGl0KCI6OiIpWzBdICE9IGZzcGF0aC5yZXBs
YWNlKCJcXCIsIG5vZGVzLlNFUCk6Ci0gICAgICAgICAgICAgICAgcmVzICs9ICIgPC0gIiArIHNl
bGYuc3RhcnRkaXIuYmVzdHJlbHBhdGgoZnNwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmVzID0gIltsb2NhdGlvbl0iCi0gICAgICAgIHJldHVybiByZXMgKyAiICIKLQotICAgIGRl
ZiBfZ2V0ZmFpbHVyZWhlYWRsaW5lKHNlbGYsIHJlcCk6Ci0gICAgICAgIGlmIGhhc2F0dHIocmVw
LCAnbG9jYXRpb24nKToKLSAgICAgICAgICAgIGZzcGF0aCwgbGluZW5vLCBkb21haW4gPSByZXAu
bG9jYXRpb24KLSAgICAgICAgICAgIHJldHVybiBkb21haW4KLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJldHVybiAidGVzdCBzZXNzaW9uIiAgIyBYWFg/Ci0KLSAgICBkZWYgX2dldGNyYXNo
bGluZShzZWxmLCByZXApOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RyKHJl
cC5sb25ncmVwci5yZXByY3Jhc2gpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHJlcC5sb25ncmVwcilb
OjUwXQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAg
IHJldHVybiAiIgotCi0gICAgIwotICAgICMgc3VtbWFyaWVzIGZvciBzZXNzaW9uZmluaXNoCi0g
ICAgIwotICAgIGRlZiBnZXRyZXBvcnRzKHNlbGYsIG5hbWUpOgotICAgICAgICB2YWx1ZXMgPSBb
XQotICAgICAgICBmb3IgeCBpbiBzZWxmLnN0YXRzLmdldChuYW1lLCBbXSk6Ci0gICAgICAgICAg
ICBpZiBub3QgaGFzYXR0cih4LCAnX3BkYnNob3duJyk6Ci0gICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZCh4KQotICAgICAgICByZXR1cm4gdmFsdWVzCi0KLSAgICBkZWYgc3VtbWFyeV93YXJu
aW5ncyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5oYXNvcHQoInciKToKLSAgICAgICAgICAgIGFs
bF93YXJuaW5ncyA9IHNlbGYuc3RhdHMuZ2V0KCJ3YXJuaW5ncyIpCi0gICAgICAgICAgICBpZiBu
b3QgYWxsX3dhcm5pbmdzOgotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBn
cm91cGVkID0gaXRlcnRvb2xzLmdyb3VwYnkoYWxsX3dhcm5pbmdzLCBrZXk9bGFtYmRhIHdyOiB3
ci5nZXRfbG9jYXRpb24oc2VsZi5jb25maWcpKQotCi0gICAgICAgICAgICBzZWxmLndyaXRlX3Nl
cCgiPSIsICJ3YXJuaW5ncyBzdW1tYXJ5IiwgeWVsbG93PVRydWUsIGJvbGQ9RmFsc2UpCi0gICAg
ICAgICAgICBmb3IgbG9jYXRpb24sIHdhcm5pbmdfcmVjb3JkcyBpbiBncm91cGVkOgotICAgICAg
ICAgICAgICAgIHNlbGYuX3R3LmxpbmUoc3RyKGxvY2F0aW9uKSBvciAnPHVuZGV0ZXJtaW5lZCBs
b2NhdGlvbj4nKQotICAgICAgICAgICAgICAgIGZvciB3IGluIHdhcm5pbmdfcmVjb3JkczoKLSAg
ICAgICAgICAgICAgICAgICAgbGluZXMgPSB3Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpCi0gICAgICAg
ICAgICAgICAgICAgIGluZGVudGVkID0gJ1xuJy5qb2luKCcgICcgKyB4IGZvciB4IGluIGxpbmVz
KQotICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKGluZGVudGVkKQotICAgICAgICAg
ICAgICAgIHNlbGYuX3R3LmxpbmUoKQotICAgICAgICAgICAgc2VsZi5fdHcubGluZSgnLS0gRG9j
czogaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC93YXJuaW5ncy5odG1sJykKLQotICAg
IGRlZiBzdW1tYXJ5X3Bhc3NlcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9u
LnRic3R5bGUgIT0gIm5vIjoKLSAgICAgICAgICAgIGlmIHNlbGYuaGFzb3B0KCJQIik6Ci0gICAg
ICAgICAgICAgICAgcmVwb3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygncGFzc2VkJykKLSAgICAgICAg
ICAgICAgICBpZiBub3QgcmVwb3J0czoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIj0iLCAiUEFTU0VTIikKLSAgICAgICAgICAgICAg
ICBmb3IgcmVwIGluIHJlcG9ydHM6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2dl
dGZhaWx1cmVoZWFkbGluZShyZXApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfc2Vw
KCJfIiwgbXNnKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vdXRyZXBfc3VtbWFyeShyZXAp
Ci0KLSAgICBkZWYgcHJpbnRfdGVhcmRvd25fc2VjdGlvbnMoc2VsZiwgcmVwKToKLSAgICAgICAg
Zm9yIHNlY25hbWUsIGNvbnRlbnQgaW4gcmVwLnNlY3Rpb25zOgotICAgICAgICAgICAgaWYgJ3Rl
YXJkb3duJyBpbiBzZWNuYW1lOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LnNlcCgnLScsIHNl
Y25hbWUpCi0gICAgICAgICAgICAgICAgaWYgY29udGVudFstMTpdID09ICJcbiI6Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50WzotMV0KLSAgICAgICAgICAgICAgICBzZWxm
Ll90dy5saW5lKGNvbnRlbnQpCi0KLSAgICBkZWYgc3VtbWFyeV9mYWlsdXJlcyhzZWxmKToKLSAg
ICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgIT0gIm5vIjoKLSAgICAgICAgICAg
IHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoJ2ZhaWxlZCcpCi0gICAgICAgICAgICBpZiBub3Qg
cmVwb3J0czoKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHNlbGYud3JpdGVf
c2VwKCI9IiwgIkZBSUxVUkVTIikKLSAgICAgICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKLSAg
ICAgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSA9PSAibGluZSI6Ci0g
ICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9nZXRjcmFzaGxpbmUocmVwKQotICAgICAg
ICAgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRmYWlsdXJlaGVhZGxpbmUocmVw
KQotICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7J3JlZCc6IFRydWUsICdib2xkJzogVHJ1
ZX0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIl8iLCBtc2csICoqbWFya3Vw
KQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vdXRyZXBfc3VtbWFyeShyZXApCi0gICAgICAg
ICAgICAgICAgICAgIGZvciByZXBvcnQgaW4gc2VsZi5nZXRyZXBvcnRzKCcnKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIHJlcG9ydC5ub2RlaWQgPT0gcmVwLm5vZGVpZCBhbmQgcmVwb3J0
LndoZW4gPT0gJ3RlYXJkb3duJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBy
aW50X3RlYXJkb3duX3NlY3Rpb25zKHJlcG9ydCkKLQotICAgIGRlZiBzdW1tYXJ5X2Vycm9ycyhz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgIT0gIm5vIjoKLSAg
ICAgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoJ2Vycm9yJykKLSAgICAgICAgICAg
IGlmIG5vdCByZXBvcnRzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgc2Vs
Zi53cml0ZV9zZXAoIj0iLCAiRVJST1JTIikKLSAgICAgICAgICAgIGZvciByZXAgaW4gc2VsZi5z
dGF0c1snZXJyb3InXToKLSAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRmYWlsdXJlaGVh
ZGxpbmUocmVwKQotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHJlcCwgJ3doZW4nKToK
LSAgICAgICAgICAgICAgICAgICAgIyBjb2xsZWN0Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9
ICJFUlJPUiBjb2xsZWN0aW5nICIgKyBtc2cKLSAgICAgICAgICAgICAgICBlbGlmIHJlcC53aGVu
ID09ICJzZXR1cCI6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9ICJFUlJPUiBhdCBzZXR1cCBv
ZiAiICsgbXNnCi0gICAgICAgICAgICAgICAgZWxpZiByZXAud2hlbiA9PSAidGVhcmRvd24iOgot
ICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRVJST1IgYXQgdGVhcmRvd24gb2YgIiArIG1zZwot
ICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCJfIiwgbXNnKQotICAgICAgICAgICAgICAg
IHNlbGYuX291dHJlcF9zdW1tYXJ5KHJlcCkKLQotICAgIGRlZiBfb3V0cmVwX3N1bW1hcnkoc2Vs
ZiwgcmVwKToKLSAgICAgICAgcmVwLnRvdGVybWluYWwoc2VsZi5fdHcpCi0gICAgICAgIGZvciBz
ZWNuYW1lLCBjb250ZW50IGluIHJlcC5zZWN0aW9uczoKLSAgICAgICAgICAgIHNlbGYuX3R3LnNl
cCgiLSIsIHNlY25hbWUpCi0gICAgICAgICAgICBpZiBjb250ZW50Wy0xOl0gPT0gIlxuIjoKLSAg
ICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudFs6LTFdCi0gICAgICAgICAgICBzZWxmLl90
dy5saW5lKGNvbnRlbnQpCi0KLSAgICBkZWYgc3VtbWFyeV9zdGF0cyhzZWxmKToKLSAgICAgICAg
c2Vzc2lvbl9kdXJhdGlvbiA9IHRpbWUudGltZSgpIC0gc2VsZi5fc2Vzc2lvbnN0YXJ0dGltZQot
ICAgICAgICAobGluZSwgY29sb3IpID0gYnVpbGRfc3VtbWFyeV9zdGF0c19saW5lKHNlbGYuc3Rh
dHMpCi0gICAgICAgIG1zZyA9ICIlcyBpbiAlLjJmIHNlY29uZHMiICUgKGxpbmUsIHNlc3Npb25f
ZHVyYXRpb24pCi0gICAgICAgIG1hcmt1cCA9IHtjb2xvcjogVHJ1ZSwgJ2JvbGQnOiBUcnVlfQot
Ci0gICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID49IDA6Ci0gICAgICAgICAgICBzZWxmLndyaXRl
X3NlcCgiPSIsIG1zZywgKiptYXJrdXApCi0gICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID09IC0x
OgotICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKG1zZywgKiptYXJrdXApCi0KLSAgICBkZWYg
c3VtbWFyeV9kZXNlbGVjdGVkKHNlbGYpOgotICAgICAgICBpZiAnZGVzZWxlY3RlZCcgaW4gc2Vs
Zi5zdGF0czoKLSAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgIiVkIHRlc3RzIGRlc2Vs
ZWN0ZWQiICUgKAotICAgICAgICAgICAgICAgIGxlbihzZWxmLnN0YXRzWydkZXNlbGVjdGVkJ10p
KSwgYm9sZD1UcnVlKQotCi0KLWRlZiByZXByX3B5dGhvbnZlcnNpb24odj1Ob25lKToKLSAgICBp
ZiB2IGlzIE5vbmU6Ci0gICAgICAgIHYgPSBzeXMudmVyc2lvbl9pbmZvCi0gICAgdHJ5OgotICAg
ICAgICByZXR1cm4gIiVzLiVzLiVzLSVzLSVzIiAlIHYKLSAgICBleGNlcHQgKFR5cGVFcnJvciwg
VmFsdWVFcnJvcik6Ci0gICAgICAgIHJldHVybiBzdHIodikKLQotCi1kZWYgZmxhdHRlbih2YWx1
ZXMpOgotICAgIGZvciB4IGluIHZhbHVlczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCAobGlz
dCwgdHVwbGUpKToKLSAgICAgICAgICAgIGZvciB5IGluIGZsYXR0ZW4oeCk6Ci0gICAgICAgICAg
ICAgICAgeWllbGQgeQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgeAotCi0KLWRl
ZiBidWlsZF9zdW1tYXJ5X3N0YXRzX2xpbmUoc3RhdHMpOgotICAgIGtleXMgPSAoImZhaWxlZCBw
YXNzZWQgc2tpcHBlZCBkZXNlbGVjdGVkICIKLSAgICAgICAgICAgICJ4ZmFpbGVkIHhwYXNzZWQg
d2FybmluZ3MgZXJyb3IiKS5zcGxpdCgpCi0gICAgdW5rbm93bl9rZXlfc2VlbiA9IEZhbHNlCi0g
ICAgZm9yIGtleSBpbiBzdGF0cy5rZXlzKCk6Ci0gICAgICAgIGlmIGtleSBub3QgaW4ga2V5czoK
LSAgICAgICAgICAgIGlmIGtleTogICMgc2V0dXAvdGVhcmRvd24gcmVwb3J0cyBoYXZlIGFuIGVt
cHR5IGtleSwgaWdub3JlIHRoZW0KLSAgICAgICAgICAgICAgICBrZXlzLmFwcGVuZChrZXkpCi0g
ICAgICAgICAgICAgICAgdW5rbm93bl9rZXlfc2VlbiA9IFRydWUKLSAgICBwYXJ0cyA9IFtdCi0g
ICAgZm9yIGtleSBpbiBrZXlzOgotICAgICAgICB2YWwgPSBzdGF0cy5nZXQoa2V5LCBOb25lKQot
ICAgICAgICBpZiB2YWw6Ci0gICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIiVkICVzIiAlIChsZW4o
dmFsKSwga2V5KSkKLQotICAgIGlmIHBhcnRzOgotICAgICAgICBsaW5lID0gIiwgIi5qb2luKHBh
cnRzKQotICAgIGVsc2U6Ci0gICAgICAgIGxpbmUgPSAibm8gdGVzdHMgcmFuIgotCi0gICAgaWYg
J2ZhaWxlZCcgaW4gc3RhdHMgb3IgJ2Vycm9yJyBpbiBzdGF0czoKLSAgICAgICAgY29sb3IgPSAn
cmVkJwotICAgIGVsaWYgJ3dhcm5pbmdzJyBpbiBzdGF0cyBvciB1bmtub3duX2tleV9zZWVuOgot
ICAgICAgICBjb2xvciA9ICd5ZWxsb3cnCi0gICAgZWxpZiAncGFzc2VkJyBpbiBzdGF0czoKLSAg
ICAgICAgY29sb3IgPSAnZ3JlZW4nCi0gICAgZWxzZToKLSAgICAgICAgY29sb3IgPSAneWVsbG93
JwotCi0gICAgcmV0dXJuIChsaW5lLCBjb2xvcikKLQotCi1kZWYgX3BsdWdpbl9uYW1ldmVyc2lv
bnMocGx1Z2luaW5mbyk6Ci0gICAgdmFsdWVzID0gW10KLSAgICBmb3IgcGx1Z2luLCBkaXN0IGlu
IHBsdWdpbmluZm86Ci0gICAgICAgICMgZ2V0cyB1cyBuYW1lIGFuZCB2ZXJzaW9uIQotICAgICAg
ICBuYW1lID0gJ3tkaXN0LnByb2plY3RfbmFtZX0te2Rpc3QudmVyc2lvbn0nLmZvcm1hdChkaXN0
PWRpc3QpCi0gICAgICAgICMgcXVlc3Rpb25hYmxlIGNvbnZlbmllbmNlLCBidXQgaXQga2VlcHMg
dGhpbmdzIHNob3J0Ci0gICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0LSIpOgotICAg
ICAgICAgICAgbmFtZSA9IG5hbWVbNzpdCi0gICAgICAgICMgd2UgZGVjaWRlZCB0byBwcmludCBw
eXRob24gcGFja2FnZSBuYW1lcwotICAgICAgICAjIHRoZXkgY2FuIGhhdmUgbW9yZSB0aGFuIG9u
ZSBwbHVnaW4KLSAgICAgICAgaWYgbmFtZSBub3QgaW4gdmFsdWVzOgotICAgICAgICAgICAgdmFs
dWVzLmFwcGVuZChuYW1lKQotICAgIHJldHVybiB2YWx1ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvdG1wZGlyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBkaXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMWIwMzIyMzdhZi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdG1wZGlyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI2
ICswLDAgQEAKLSIiIiBzdXBwb3J0IGZvciBwcm92aWRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yaWVz
IHRvIHRlc3QgZnVuY3Rpb25zLiAgIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCByZQotCi1pbXBvcnQg
cHl0ZXN0Ci1pbXBvcnQgcHkKLWZyb20gX3B5dGVzdC5tb25rZXlwYXRjaCBpbXBvcnQgTW9ua2V5
UGF0Y2gKLQotCi1jbGFzcyBUZW1wZGlyRmFjdG9yeToKLSAgICAiIiJGYWN0b3J5IGZvciB0ZW1w
b3JhcnkgZGlyZWN0b3JpZXMgdW5kZXIgdGhlIGNvbW1vbiBiYXNlIHRlbXAgZGlyZWN0b3J5Lgot
Ci0gICAgVGhlIGJhc2UgZGlyZWN0b3J5IGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSBgYC0t
YmFzZXRlbXBgYCBvcHRpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29u
ZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi50cmFjZSA9
IGNvbmZpZy50cmFjZS5nZXQoInRtcGRpciIpCi0KLSAgICBkZWYgZW5zdXJldGVtcChzZWxmLCBz
dHJpbmcsIGRpcj0xKToKLSAgICAgICAgIiIiIChkZXByZWNhdGVkKSByZXR1cm4gdGVtcG9yYXJ5
IGRpcmVjdG9yeSBwYXRoIHdpdGgKLSAgICAgICAgICAgIHRoZSBnaXZlbiBzdHJpbmcgYXMgdGhl
IHRyYWlsaW5nIHBhcnQuICBJdCBpcyB1c3VhbGx5Ci0gICAgICAgICAgICBiZXR0ZXIgdG8gdXNl
IHRoZSAndG1wZGlyJyBmdW5jdGlvbiBhcmd1bWVudCB3aGljaAotICAgICAgICAgICAgcHJvdmlk
ZXMgYW4gZW1wdHkgdW5pcXVlLXBlci10ZXN0LWludm9jYXRpb24gZGlyZWN0b3J5Ci0gICAgICAg
ICAgICBhbmQgaXMgZ3VhcmFudGVlZCB0byBiZSBlbXB0eS4KLSAgICAgICAgIiIiCi0gICAgICAg
ICMgcHkubG9nLl9hcGl3YXJuKCI+MS4xIiwgInVzZSB0bXBkaXIgZnVuY3Rpb24gYXJndW1lbnQi
KQotICAgICAgICByZXR1cm4gc2VsZi5nZXRiYXNldGVtcCgpLmVuc3VyZShzdHJpbmcsIGRpcj1k
aXIpCi0KLSAgICBkZWYgbWt0ZW1wKHNlbGYsIGJhc2VuYW1lLCBudW1iZXJlZD1UcnVlKToKLSAg
ICAgICAgIiIiQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBiYXNlIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgYW5kIHJldHVybiBpdC4KLSAgICAgICAgSWYgYGBudW1iZXJlZGBgLCBlbnN1cmUgdGhl
IGRpcmVjdG9yeSBpcyB1bmlxdWUgYnkgYWRkaW5nIGEgbnVtYmVyCi0gICAgICAgIHByZWZpeCBn
cmVhdGVyIHRoYW4gYW55IGV4aXN0aW5nIG9uZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGJhc2V0
ZW1wID0gc2VsZi5nZXRiYXNldGVtcCgpCi0gICAgICAgIGlmIG5vdCBudW1iZXJlZDoKLSAgICAg
ICAgICAgIHAgPSBiYXNldGVtcC5ta2RpcihiYXNlbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHAgPSBweS5wYXRoLmxvY2FsLm1ha2VfbnVtYmVyZWRfZGlyKHByZWZpeD1iYXNlbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXA9
MCwgcm9vdGRpcj1iYXNldGVtcCwgbG9ja190aW1lb3V0PU5vbmUpCi0gICAgICAgIHNlbGYudHJh
Y2UoIm1rdGVtcCIsIHApCi0gICAgICAgIHJldHVybiBwCi0KLSAgICBkZWYgZ2V0YmFzZXRlbXAo
c2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gYmFzZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAiIiIK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Jhc2V0ZW1wCi0gICAgICAg
IGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGJhc2V0ZW1wID0gc2VsZi5jb25m
aWcub3B0aW9uLmJhc2V0ZW1wCi0gICAgICAgICAgICBpZiBiYXNldGVtcDoKLSAgICAgICAgICAg
ICAgICBiYXNldGVtcCA9IHB5LnBhdGgubG9jYWwoYmFzZXRlbXApCi0gICAgICAgICAgICAgICAg
aWYgYmFzZXRlbXAuY2hlY2soKToKLSAgICAgICAgICAgICAgICAgICAgYmFzZXRlbXAucmVtb3Zl
KCkKLSAgICAgICAgICAgICAgICBiYXNldGVtcC5ta2RpcigpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHRlbXByb290ID0gcHkucGF0aC5sb2NhbC5nZXRfdGVtcHJvb3QoKQot
ICAgICAgICAgICAgICAgIHVzZXIgPSBnZXRfdXNlcigpCi0gICAgICAgICAgICAgICAgaWYgdXNl
cjoKLSAgICAgICAgICAgICAgICAgICAgIyB1c2UgYSBzdWItZGlyZWN0b3J5IGluIHRoZSB0ZW1w
cm9vdCB0byBzcGVlZC11cAotICAgICAgICAgICAgICAgICAgICAjIG1ha2VfbnVtYmVyZWRfZGly
KCkgY2FsbAotICAgICAgICAgICAgICAgICAgICByb290ZGlyID0gdGVtcHJvb3Quam9pbigncHl0
ZXN0LW9mLSVzJyAlIHVzZXIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgcm9vdGRpciA9IHRlbXByb290Ci0gICAgICAgICAgICAgICAgcm9vdGRpci5lbnN1cmUo
ZGlyPTEpCi0gICAgICAgICAgICAgICAgYmFzZXRlbXAgPSBweS5wYXRoLmxvY2FsLm1ha2VfbnVt
YmVyZWRfZGlyKHByZWZpeD0ncHl0ZXN0LScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RkaXI9cm9vdGRpcikKLSAgICAgICAg
ICAgIHNlbGYuX2Jhc2V0ZW1wID0gdCA9IGJhc2V0ZW1wLnJlYWxwYXRoKCkKLSAgICAgICAgICAg
IHNlbGYudHJhY2UoIm5ldyBiYXNldGVtcCIsIHQpCi0gICAgICAgICAgICByZXR1cm4gdAotCi0g
ICAgZGVmIGZpbmlzaChzZWxmKToKLSAgICAgICAgc2VsZi50cmFjZSgiZmluaXNoIikKLQotCi1k
ZWYgZ2V0X3VzZXIoKToKLSAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBuYW1lLCBvciBO
b25lIGlmIGdldHVzZXIoKSBkb2VzIG5vdCB3b3JrCi0gICAgaW4gdGhlIGN1cnJlbnQgZW52aXJv
bm1lbnQgKHNlZSAjMTAxMCkuCi0gICAgIiIiCi0gICAgaW1wb3J0IGdldHBhc3MKLSAgICB0cnk6
Ci0gICAgICAgIHJldHVybiBnZXRwYXNzLmdldHVzZXIoKQotICAgIGV4Y2VwdCAoSW1wb3J0RXJy
b3IsIEtleUVycm9yKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi0jIGJhY2t3YXJkIGNvbXBh
dGliaWxpdHkKLVRlbXBkaXJIYW5kbGVyID0gVGVtcGRpckZhY3RvcnkKLQotCi1kZWYgcHl0ZXN0
X2NvbmZpZ3VyZShjb25maWcpOgotICAgICIiIkNyZWF0ZSBhIFRlbXBkaXJGYWN0b3J5IGFuZCBh
dHRhY2ggaXQgdG8gdGhlIGNvbmZpZyBvYmplY3QuCi0KLSAgICBUaGlzIGlzIHRvIGNvbXBseSB3
aXRoIGV4aXN0aW5nIHBsdWdpbnMgd2hpY2ggZXhwZWN0IHRoZSBoYW5kbGVyIHRvIGJlCi0gICAg
YXZhaWxhYmxlIGF0IHB5dGVzdF9jb25maWd1cmUgdGltZSwgYnV0IGlkZWFsbHkgc2hvdWxkIGJl
IG1vdmVkIGVudGlyZWx5Ci0gICAgdG8gdGhlIHRtcGRpcl9mYWN0b3J5IHNlc3Npb24gZml4dHVy
ZS4KLSAgICAiIiIKLSAgICBtcCA9IE1vbmtleVBhdGNoKCkKLSAgICB0ID0gVGVtcGRpckZhY3Rv
cnkoY29uZmlnKQotICAgIGNvbmZpZy5fY2xlYW51cC5leHRlbmQoW21wLnVuZG8sIHQuZmluaXNo
XSkKLSAgICBtcC5zZXRhdHRyKGNvbmZpZywgJ190bXBkaXJoYW5kbGVyJywgdCwgcmFpc2luZz1G
YWxzZSkKLSAgICBtcC5zZXRhdHRyKHB5dGVzdCwgJ2Vuc3VyZXRlbXAnLCB0LmVuc3VyZXRlbXAs
IHJhaXNpbmc9RmFsc2UpCi0KLQotQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdzZXNzaW9uJykKLWRl
ZiB0bXBkaXJfZmFjdG9yeShyZXF1ZXN0KToKLSAgICAiIiJSZXR1cm4gYSBUZW1wZGlyRmFjdG9y
eSBpbnN0YW5jZSBmb3IgdGhlIHRlc3Qgc2Vzc2lvbi4KLSAgICAiIiIKLSAgICByZXR1cm4gcmVx
dWVzdC5jb25maWcuX3RtcGRpcmhhbmRsZXIKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiB0bXBk
aXIocmVxdWVzdCwgdG1wZGlyX2ZhY3RvcnkpOgotICAgICIiIlJldHVybiBhIHRlbXBvcmFyeSBk
aXJlY3RvcnkgcGF0aCBvYmplY3QKLSAgICB3aGljaCBpcyB1bmlxdWUgdG8gZWFjaCB0ZXN0IGZ1
bmN0aW9uIGludm9jYXRpb24sCi0gICAgY3JlYXRlZCBhcyBhIHN1YiBkaXJlY3Rvcnkgb2YgdGhl
IGJhc2UgdGVtcG9yYXJ5Ci0gICAgZGlyZWN0b3J5LiAgVGhlIHJldHVybmVkIG9iamVjdCBpcyBh
IGBweS5wYXRoLmxvY2FsYF8KLSAgICBwYXRoIG9iamVjdC4KLSAgICAiIiIKLSAgICBuYW1lID0g
cmVxdWVzdC5ub2RlLm5hbWUKLSAgICBuYW1lID0gcmUuc3ViKHIiW1xXXSIsICJfIiwgbmFtZSkK
LSAgICBNQVhWQUwgPSAzMAotICAgIGlmIGxlbihuYW1lKSA+IE1BWFZBTDoKLSAgICAgICAgbmFt
ZSA9IG5hbWVbOk1BWFZBTF0KLSAgICB4ID0gdG1wZGlyX2ZhY3RvcnkubWt0ZW1wKG5hbWUsIG51
bWJlcmVkPVRydWUpCi0gICAgcmV0dXJuIHgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvdW5pdHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3VuaXR0ZXN0LnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGRiMzk0OTVlMzkuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjM3ICsw
LDAgQEAKLSIiIiBkaXNjb3ZlcnkgYW5kIHJ1bm5pbmcgb2Ygc3RkLWxpYnJhcnkgInVuaXR0ZXN0
IiBzdHlsZSB0ZXN0cy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBzeXMKLWltcG9ydCB0cmFjZWJh
Y2sKLQotIyBmb3IgdHJhbnNmZXJyaW5nIG1hcmtlcnMKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1m
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBob29raW1wbAotZnJvbSBfcHl0ZXN0Lm91dGNvbWVz
IGltcG9ydCBmYWlsLCBza2lwLCB4ZmFpbAotZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgdHJh
bnNmZXJfbWFya2VycywgQ2xhc3MsIE1vZHVsZSwgRnVuY3Rpb24KLQotCi1kZWYgcHl0ZXN0X3B5
Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3IsIG5hbWUsIG9iaik6Ci0gICAgIyBoYXMgdW5pdHRl
c3QgYmVlbiBpbXBvcnRlZCBhbmQgaXMgb2JqIGEgc3ViY2xhc3Mgb2YgaXRzIFRlc3RDYXNlPwot
ICAgIHRyeToKLSAgICAgICAgaWYgbm90IGlzc3ViY2xhc3Mob2JqLCBzeXMubW9kdWxlc1sidW5p
dHRlc3QiXS5UZXN0Q2FzZSk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICByZXR1cm4KLSAgICAjIHllcywgc28gbGV0J3MgY29sbGVjdCBpdAotICAg
IHJldHVybiBVbml0VGVzdENhc2UobmFtZSwgcGFyZW50PWNvbGxlY3RvcikKLQotCi1jbGFzcyBV
bml0VGVzdENhc2UoQ2xhc3MpOgotICAgICMgbWFya2VyIGZvciBmaXh0dXJlbWFuZ2VyLmdldGZp
eHR1cmVpbmZvKCkKLSAgICAjIHRvIGRlY2xhcmUgdGhhdCBvdXIgY2hpbGRyZW4gZG8gbm90IHN1
cHBvcnQgZnVuY2FyZ3MKLSAgICBub2Z1bmNhcmdzID0gVHJ1ZQotCi0gICAgZGVmIHNldHVwKHNl
bGYpOgotICAgICAgICBjbHMgPSBzZWxmLm9iagotICAgICAgICBpZiBnZXRhdHRyKGNscywgJ19f
dW5pdHRlc3Rfc2tpcF9fJywgRmFsc2UpOgotICAgICAgICAgICAgcmV0dXJuICAjIHNraXBwZWQK
LSAgICAgICAgc2V0dXAgPSBnZXRhdHRyKGNscywgJ3NldFVwQ2xhc3MnLCBOb25lKQotICAgICAg
ICBpZiBzZXR1cCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNldHVwKCkKLSAgICAgICAgdGVh
cmRvd24gPSBnZXRhdHRyKGNscywgJ3RlYXJEb3duQ2xhc3MnLCBOb25lKQotICAgICAgICBpZiB0
ZWFyZG93biBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuYWRkZmluYWxpemVyKHRlYXJk
b3duKQotICAgICAgICBzdXBlcihVbml0VGVzdENhc2UsIHNlbGYpLnNldHVwKCkKLQotICAgIGRl
ZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0TG9hZGVy
Ci0gICAgICAgIGNscyA9IHNlbGYub2JqCi0gICAgICAgIGlmIG5vdCBnZXRhdHRyKGNscywgIl9f
dGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5zZXNzaW9u
Ll9maXh0dXJlbWFuYWdlci5wYXJzZWZhY3RvcmllcyhzZWxmLCB1bml0dGVzdD1UcnVlKQotICAg
ICAgICBsb2FkZXIgPSBUZXN0TG9hZGVyKCkKLSAgICAgICAgbW9kdWxlID0gc2VsZi5nZXRwYXJl
bnQoTW9kdWxlKS5vYmoKLSAgICAgICAgZm91bmRzb21ldGhpbmcgPSBGYWxzZQotICAgICAgICBm
b3IgbmFtZSBpbiBsb2FkZXIuZ2V0VGVzdENhc2VOYW1lcyhzZWxmLm9iaik6Ci0gICAgICAgICAg
ICB4ID0gZ2V0YXR0cihzZWxmLm9iaiwgbmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRy
KHgsICdfX3Rlc3RfXycsIFRydWUpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBmdW5jb2JqID0gZ2V0YXR0cih4LCAnaW1fZnVuYycsIHgpCi0gICAgICAgICAgICB0cmFu
c2Zlcl9tYXJrZXJzKGZ1bmNvYmosIGNscywgbW9kdWxlKQotICAgICAgICAgICAgeWllbGQgVGVz
dENhc2VGdW5jdGlvbihuYW1lLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIGZvdW5kc29tZXRo
aW5nID0gVHJ1ZQotCi0gICAgICAgIGlmIG5vdCBmb3VuZHNvbWV0aGluZzoKLSAgICAgICAgICAg
IHJ1bnRlc3QgPSBnZXRhdHRyKHNlbGYub2JqLCAncnVuVGVzdCcsIE5vbmUpCi0gICAgICAgICAg
ICBpZiBydW50ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHV0ID0gc3lzLm1vZHVs
ZXMuZ2V0KCJ0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0IiwgTm9uZSkKLSAgICAgICAgICAgICAgICBp
ZiB1dCBpcyBOb25lIG9yIHJ1bnRlc3QgIT0gdXQuVGVzdENhc2UucnVuVGVzdDoKLSAgICAgICAg
ICAgICAgICAgICAgeWllbGQgVGVzdENhc2VGdW5jdGlvbigncnVuVGVzdCcsIHBhcmVudD1zZWxm
KQotCi0KLWNsYXNzIFRlc3RDYXNlRnVuY3Rpb24oRnVuY3Rpb24pOgotICAgIF9leGNpbmZvID0g
Tm9uZQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0Y2FzZSA9IHNl
bGYucGFyZW50Lm9iaihzZWxmLm5hbWUpCi0gICAgICAgIHNlbGYuX2ZpeF91bml0dGVzdF9za2lw
X2RlY29yYXRvcigpCi0gICAgICAgIHNlbGYuX29iaiA9IGdldGF0dHIoc2VsZi5fdGVzdGNhc2Us
IHNlbGYubmFtZSkKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLl90ZXN0Y2FzZSwgJ3NldHVwX21l
dGhvZCcpOgotICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2Uuc2V0dXBfbWV0aG9kKHNlbGYuX29i
aikKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX3JlcXVlc3QiKToKLSAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCi0KLSAgICBkZWYgX2ZpeF91bml0dGVzdF9za2lw
X2RlY29yYXRvcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBAdW5pdHRlc3Quc2tp
cCBkZWNvcmF0b3IgY2FsbHMgZnVuY3Rvb2xzLndyYXBzKHNlbGYuX3Rlc3RjYXNlKQotICAgICAg
ICBUaGUgY2FsbCB0byBmdW5jdG9vbHMud3JhcHMoKSBmYWlscyB1bmxlc3Mgc2VsZi5fdGVzdGNh
c2UKLSAgICAgICAgaGFzIGEgX19uYW1lX18gYXR0cmlidXRlLiBUaGlzIGlzIHVzdWFsbHkgYXV0
b21hdGljYWxseSBzdXBwbGllZAotICAgICAgICBpZiB0aGUgdGVzdCBpcyBhIGZ1bmN0aW9uIG9y
IG1ldGhvZCwgYnV0IHdlIG5lZWQgdG8gYWRkIG1hbnVhbGx5Ci0gICAgICAgIGhlcmUuCi0KLSAg
ICAgICAgU2VlIGlzc3VlICMxMTY5Ci0gICAgICAgICIiIgotICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvWzBdID09IDI6Ci0gICAgICAgICAgICBzZXRhdHRyKHNlbGYuX3Rlc3RjYXNlLCAiX19u
YW1lX18iLCBzZWxmLm5hbWUpCi0KLSAgICBkZWYgdGVhcmRvd24oc2VsZik6Ci0gICAgICAgIGlm
IGhhc2F0dHIoc2VsZi5fdGVzdGNhc2UsICd0ZWFyZG93bl9tZXRob2QnKToKLSAgICAgICAgICAg
IHNlbGYuX3Rlc3RjYXNlLnRlYXJkb3duX21ldGhvZChzZWxmLl9vYmopCi0gICAgICAgICMgQWxs
b3cgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIFRlc3RDYXNlIGluc3RhbmNlIGF0dHJpYnV0ZXMuCi0g
ICAgICAgIHNlbGYuX3Rlc3RjYXNlID0gTm9uZQotICAgICAgICBzZWxmLl9vYmogPSBOb25lCi0K
LSAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3RjYXNlKToKLSAgICAgICAgcGFzcwotCi0gICAg
ZGVmIF9hZGRleGNpbmZvKHNlbGYsIHJhd2V4Y2luZm8pOgotICAgICAgICAjIHVud3JhcCBwb3Rl
bnRpYWwgZXhjZXB0aW9uIGluZm8gKHNlZSB0d2lzdGVkIHRyaWFsIHN1cHBvcnQgYmVsb3cpCi0g
ICAgICAgIHJhd2V4Y2luZm8gPSBnZXRhdHRyKHJhd2V4Y2luZm8sICdfcmF3ZXhjaW5mbycsIHJh
d2V4Y2luZm8pCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9j
b2RlLkV4Y2VwdGlvbkluZm8ocmF3ZXhjaW5mbykKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ICAgIHZhbHVlcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCpyYXdleGNpbmZvKQotICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMuaW5zZXJ0KDAsICJOT1RFOiBJbmNvbXBhdGlibGUgRXhj
ZXB0aW9uIFJlcHJlc2VudGF0aW9uLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRpc3BsYXlpbmcgbmF0aXZlbHk6XG5cbiIpCi0gICAgICAgICAgICAgICAgICAgIGZhaWwo
IiIuam9pbih2YWx1ZXMpLCBweXRyYWNlPUZhbHNlKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAo
ZmFpbC5FeGNlcHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UKLSAgICAgICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgICAgICAg
ICAgZmFpbCgiRVJST1I6IFVua25vd24gSW5jb21wYXRpYmxlIEV4Y2VwdGlvbiAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgInJlcHJlc2VudGF0aW9uOlxuJXIiICUgKHJhd2V4Y2luZm8sKSwg
cHl0cmFjZT1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAg
ICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZXhjZXB0IGZhaWwuRXhjZXB0aW9uOgot
ICAgICAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQot
ICAgICAgICBzZWxmLl9fZGljdF9fLnNldGRlZmF1bHQoJ19leGNpbmZvJywgW10pLmFwcGVuZChl
eGNpbmZvKQotCi0gICAgZGVmIGFkZEVycm9yKHNlbGYsIHRlc3RjYXNlLCByYXdleGNpbmZvKToK
LSAgICAgICAgc2VsZi5fYWRkZXhjaW5mbyhyYXdleGNpbmZvKQotCi0gICAgZGVmIGFkZEZhaWx1
cmUoc2VsZiwgdGVzdGNhc2UsIHJhd2V4Y2luZm8pOgotICAgICAgICBzZWxmLl9hZGRleGNpbmZv
KHJhd2V4Y2luZm8pCi0KLSAgICBkZWYgYWRkU2tpcChzZWxmLCB0ZXN0Y2FzZSwgcmVhc29uKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2tpcChyZWFzb24pCi0gICAgICAgIGV4Y2VwdCBz
a2lwLkV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYuX3NraXBwZWRfYnlfbWFyayA9IFRydWUK
LSAgICAgICAgICAgIHNlbGYuX2FkZGV4Y2luZm8oc3lzLmV4Y19pbmZvKCkpCi0KLSAgICBkZWYg
YWRkRXhwZWN0ZWRGYWlsdXJlKHNlbGYsIHRlc3RjYXNlLCByYXdleGNpbmZvLCByZWFzb249IiIp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB4ZmFpbChzdHIocmVhc29uKSkKLSAgICAgICAg
ZXhjZXB0IHhmYWlsLkV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYuX2FkZGV4Y2luZm8oc3lz
LmV4Y19pbmZvKCkpCi0KLSAgICBkZWYgYWRkVW5leHBlY3RlZFN1Y2Nlc3Moc2VsZiwgdGVzdGNh
c2UsIHJlYXNvbj0iIik6Ci0gICAgICAgIHNlbGYuX3VuZXhwZWN0ZWRzdWNjZXNzID0gcmVhc29u
Ci0KLSAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCB0ZXN0Y2FzZSk6Ci0gICAgICAgIHBhc3MKLQot
ICAgIGRlZiBzdG9wVGVzdChzZWxmLCB0ZXN0Y2FzZSk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRl
ZiBfaGFuZGxlX3NraXAoc2VsZik6Ci0gICAgICAgICMgaW1wbGVtZW50cyB0aGUgc2tpcHBpbmcg
bWFjaGluZXJ5IChzZWUgIzIxMzcpCi0gICAgICAgICMgYW5hbG9nIHRvIHB5dGhvbnMgTGliL3Vu
aXR0ZXN0L2Nhc2UucHk6cnVuCi0gICAgICAgIHRlc3RNZXRob2QgPSBnZXRhdHRyKHNlbGYuX3Rl
c3RjYXNlLCBzZWxmLl90ZXN0Y2FzZS5fdGVzdE1ldGhvZE5hbWUpCi0gICAgICAgIGlmIChnZXRh
dHRyKHNlbGYuX3Rlc3RjYXNlLl9fY2xhc3NfXywgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2Up
IG9yCi0gICAgICAgICAgICAgICAgZ2V0YXR0cih0ZXN0TWV0aG9kLCAiX191bml0dGVzdF9za2lw
X18iLCBGYWxzZSkpOgotICAgICAgICAgICAgIyBJZiB0aGUgY2xhc3Mgb3IgbWV0aG9kIHdhcyBz
a2lwcGVkLgotICAgICAgICAgICAgc2tpcF93aHkgPSAoZ2V0YXR0cihzZWxmLl90ZXN0Y2FzZS5f
X2NsYXNzX18sICdfX3VuaXR0ZXN0X3NraXBfd2h5X18nLCAnJykgb3IKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGdldGF0dHIodGVzdE1ldGhvZCwgJ19fdW5pdHRlc3Rfc2tpcF93aHlfXycsICcn
KSkKLSAgICAgICAgICAgIHRyeTogICMgUFkzLCB1bml0dGVzdDIgb24gUFkyCi0gICAgICAgICAg
ICAgICAgc2VsZi5fdGVzdGNhc2UuX2FkZFNraXAoc2VsZiwgc2VsZi5fdGVzdGNhc2UsIHNraXBf
d2h5KQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjogICMgUFkyCi0gICAgICAgICAgICAg
ICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSAhPSAyOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZQotICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RjYXNlLl9hZGRTa2lwKHNlbGYsIHNraXBfd2h5
KQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBk
ZWYgcnVudGVzdChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcucGx1Z2lubWFuYWdlci5n
ZXRfcGx1Z2luKCJwZGJpbnZva2UiKSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fdGVzdGNh
c2UocmVzdWx0PXNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGRpc2FibGVzIHRl
YXJEb3duIGFuZCBjbGVhbnVwcyBmb3IgcG9zdCBtb3J0ZW0gZGVidWdnaW5nIChzZWUgIzE4OTAp
Ci0gICAgICAgICAgICBpZiBzZWxmLl9oYW5kbGVfc2tpcCgpOgotICAgICAgICAgICAgICAgIHJl
dHVybgotICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2UuZGVidWcoKQotCi0gICAgZGVmIF9wcnVu
ZXRyYWNlYmFjayhzZWxmLCBleGNpbmZvKToKLSAgICAgICAgRnVuY3Rpb24uX3BydW5ldHJhY2Vi
YWNrKHNlbGYsIGV4Y2luZm8pCi0gICAgICAgIHRyYWNlYmFjayA9IGV4Y2luZm8udHJhY2ViYWNr
LmZpbHRlcigKLSAgICAgICAgICAgIGxhbWJkYSB4OiBub3QgeC5mcmFtZS5mX2dsb2JhbHMuZ2V0
KCdfX3VuaXR0ZXN0JykpCi0gICAgICAgIGlmIHRyYWNlYmFjazoKLSAgICAgICAgICAgIGV4Y2lu
Zm8udHJhY2ViYWNrID0gdHJhY2ViYWNrCi0KLQotQGhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi1k
ZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxsKToKLSAgICBpZiBpc2luc3Rh
bmNlKGl0ZW0sIFRlc3RDYXNlRnVuY3Rpb24pOgotICAgICAgICBpZiBpdGVtLl9leGNpbmZvOgot
ICAgICAgICAgICAgY2FsbC5leGNpbmZvID0gaXRlbS5fZXhjaW5mby5wb3AoMCkKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwgY2FsbC5yZXN1bHQKLSAgICAgICAgICAgIGV4
Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSMgdHdpc3RlZCB0
cmlhbCBzdXBwb3J0Ci0KLQotQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0ZXN0
X3J1bnRlc3RfcHJvdG9jb2woaXRlbSk6Ci0gICAgaWYgaXNpbnN0YW5jZShpdGVtLCBUZXN0Q2Fz
ZUZ1bmN0aW9uKSBhbmQgXAotICAgICAgICd0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0JyBpbiBzeXMu
bW9kdWxlczoKLSAgICAgICAgdXQgPSBzeXMubW9kdWxlc1sndHdpc3RlZC5weXRob24uZmFpbHVy
ZSddCi0gICAgICAgIEZhaWx1cmVfX2luaXRfXyA9IHV0LkZhaWx1cmUuX19pbml0X18KLSAgICAg
ICAgY2hlY2tfdGVzdGNhc2VfaW1wbGVtZW50c190cmlhbF9yZXBvcnRlcigpCi0KLSAgICAgICAg
ZGVmIGV4Y3N0b3JlKHNlbGYsIGV4Y192YWx1ZT1Ob25lLCBleGNfdHlwZT1Ob25lLCBleGNfdGI9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVWYXJzPU5vbmUpOgotICAgICAgICAg
ICAgaWYgZXhjX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmF3ZXhjaW5m
byA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlm
IGV4Y190eXBlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGV4Y190eXBlID0gdHlwZShl
eGNfdmFsdWUpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmF3ZXhjaW5mbyA9IChleGNfdHlwZSwg
ZXhjX3ZhbHVlLCBleGNfdGIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgRmFp
bHVyZV9faW5pdF9fKHNlbGYsIGV4Y192YWx1ZSwgZXhjX3R5cGUsIGV4Y190YiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZVZhcnM9Y2FwdHVyZVZhcnMpCi0gICAgICAg
ICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgIEZhaWx1cmVfX2luaXRfXyhz
ZWxmLCBleGNfdmFsdWUsIGV4Y190eXBlLCBleGNfdGIpCi0KLSAgICAgICAgdXQuRmFpbHVyZS5f
X2luaXRfXyA9IGV4Y3N0b3JlCi0gICAgICAgIHlpZWxkCi0gICAgICAgIHV0LkZhaWx1cmUuX19p
bml0X18gPSBGYWlsdXJlX19pbml0X18KLSAgICBlbHNlOgotICAgICAgICB5aWVsZAotCi0KLWRl
ZiBjaGVja190ZXN0Y2FzZV9pbXBsZW1lbnRzX3RyaWFsX3JlcG9ydGVyKGRvbmU9W10pOgotICAg
IGlmIGRvbmU6Ci0gICAgICAgIHJldHVybgotICAgIGZyb20gem9wZS5pbnRlcmZhY2UgaW1wb3J0
IGNsYXNzSW1wbGVtZW50cwotICAgIGZyb20gdHdpc3RlZC50cmlhbC5pdHJpYWwgaW1wb3J0IElS
ZXBvcnRlcgotICAgIGNsYXNzSW1wbGVtZW50cyhUZXN0Q2FzZUZ1bmN0aW9uLCBJUmVwb3J0ZXIp
Ci0gICAgZG9uZS5hcHBlbmQoMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODBlZmMwYzkxMGYuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsNTEg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYWNo
ZXByb3ZpZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYXB0dXJlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbmZpZy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZXBy
ZWNhdGVkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9maXh0dXJlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZnJlZXplX3N1cHBvcnQu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2hlbHBjb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L2hvb2tzcGVjLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9qdW5pdHhtbC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvbG9nZ2luZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbWFpbi5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvbWFyay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbW9ua2V5
cGF0Y2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vZGVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9ub3NlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9vdXRjb21lcy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvcGFzdGViaW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5dGVzdGVyLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRob24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5
dGhvbl9hcGkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3JlY3dhcm4ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L3Jlc3VsdGxvZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcnVubmVyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9zZXR1cG9ubHkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Nl
dHVwcGxhbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2tpcHBpbmcucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L3Rlcm1pbmFsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBkaXIucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L3VuaXR0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC93YXJu
aW5ncy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC93YXJuaW5ncy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3Qvd2FybmluZ3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNjMmIxOTE0ZmI2OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
d2FybmluZ3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWlt
cG9ydCB3YXJuaW5ncwotZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgotCi1p
bXBvcnQgcHl0ZXN0Ci0KLWZyb20gX3B5dGVzdCBpbXBvcnQgY29tcGF0Ci0KLQotZGVmIF9zZXRv
cHRpb24od21vZCwgYXJnKToKLSAgICAiIiIKLSAgICBDb3B5IG9mIHRoZSB3YXJuaW5nLl9zZXRv
cHRpb24gZnVuY3Rpb24gYnV0IGRvZXMgbm90IGVzY2FwZSBhcmd1bWVudHMuCi0gICAgIiIiCi0g
ICAgcGFydHMgPSBhcmcuc3BsaXQoJzonKQotICAgIGlmIGxlbihwYXJ0cykgPiA1OgotICAgICAg
ICByYWlzZSB3bW9kLl9PcHRpb25FcnJvcigidG9vIG1hbnkgZmllbGRzIChtYXggNSk6ICVyIiAl
IChhcmcsKSkKLSAgICB3aGlsZSBsZW4ocGFydHMpIDwgNToKLSAgICAgICAgcGFydHMuYXBwZW5k
KCcnKQotICAgIGFjdGlvbiwgbWVzc2FnZSwgY2F0ZWdvcnksIG1vZHVsZSwgbGluZW5vID0gW3Mu
c3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBzIGluIHBhcnRzXQotICAgIGFjdGlvbiA9IHdtb2QuX2dldGFjdGlvbihhY3Rpb24pCi0g
ICAgY2F0ZWdvcnkgPSB3bW9kLl9nZXRjYXRlZ29yeShjYXRlZ29yeSkKLSAgICBpZiBsaW5lbm86
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxpbmVubyA9IGludChsaW5lbm8pCi0gICAgICAg
ICAgICBpZiBsaW5lbm8gPCAwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAg
ICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKLSAgICAgICAgICAgIHJh
aXNlIHdtb2QuX09wdGlvbkVycm9yKCJpbnZhbGlkIGxpbmVubyAlciIgJSAobGluZW5vLCkpCi0g
ICAgZWxzZToKLSAgICAgICAgbGluZW5vID0gMAotICAgIHdtb2QuZmlsdGVyd2FybmluZ3MoYWN0
aW9uLCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8pCi0KLQotZGVmIHB5dGVzdF9h
ZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgicHl0ZXN0LXdh
cm5pbmdzIikKLSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICctVycsICctLXB5dGhvbndh
cm5pbmdzJywgYWN0aW9uPSdhcHBlbmQnLAotICAgICAgICBoZWxwPSJzZXQgd2hpY2ggd2Fybmlu
Z3MgdG8gcmVwb3J0LCBzZWUgLVcgb3B0aW9uIG9mIHB5dGhvbiBpdHNlbGYuIikKLSAgICBwYXJz
ZXIuYWRkaW5pKCJmaWx0ZXJ3YXJuaW5ncyIsIHR5cGU9ImxpbmVsaXN0IiwKLSAgICAgICAgICAg
ICAgICAgIGhlbHA9IkVhY2ggbGluZSBzcGVjaWZpZXMgYSBwYXR0ZXJuIGZvciAiCi0gICAgICAg
ICAgICAgICAgICAid2FybmluZ3MuZmlsdGVyd2FybmluZ3MuICIKLSAgICAgICAgICAgICAgICAg
ICJQcm9jZXNzZWQgYWZ0ZXIgLVcgYW5kIC0tcHl0aG9ud2FybmluZ3MuIikKLQotCi1AY29udGV4
dG1hbmFnZXIKLWRlZiBjYXRjaF93YXJuaW5nc19mb3JfaXRlbShpdGVtKToKLSAgICAiIiIKLSAg
ICBjYXRjaGVzIHRoZSB3YXJuaW5ncyBnZW5lcmF0ZWQgZHVyaW5nIHNldHVwL2NhbGwvdGVhcmRv
d24gZXhlY3V0aW9uCi0gICAgb2YgdGhlIGdpdmVuIGl0ZW0gYW5kIGFmdGVyIGl0IGlzIGRvbmUg
cG9zdHMgdGhlbSBhcyB3YXJuaW5ncyB0byB0aGlzCi0gICAgaXRlbS4KLSAgICAiIiIKLSAgICBh
cmdzID0gaXRlbS5jb25maWcuZ2V0b3B0aW9uKCdweXRob253YXJuaW5ncycpIG9yIFtdCi0gICAg
aW5pZmlsdGVycyA9IGl0ZW0uY29uZmlnLmdldGluaSgiZmlsdGVyd2FybmluZ3MiKQotICAgIHdp
dGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIGxvZzoKLSAgICAgICAg
Zm9yIGFyZyBpbiBhcmdzOgotICAgICAgICAgICAgd2FybmluZ3MuX3NldG9wdGlvbihhcmcpCi0K
LSAgICAgICAgZm9yIGFyZyBpbiBpbmlmaWx0ZXJzOgotICAgICAgICAgICAgX3NldG9wdGlvbih3
YXJuaW5ncywgYXJnKQotCi0gICAgICAgIG1hcmsgPSBpdGVtLmdldF9tYXJrZXIoJ2ZpbHRlcndh
cm5pbmdzJykKLSAgICAgICAgaWYgbWFyazoKLSAgICAgICAgICAgIGZvciBhcmcgaW4gbWFyay5h
cmdzOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLl9zZXRvcHRpb24oYXJnKQotCi0gICAgICAg
IHlpZWxkCi0KLSAgICAgICAgZm9yIHdhcm5pbmcgaW4gbG9nOgotICAgICAgICAgICAgd2Fybl9t
c2cgPSB3YXJuaW5nLm1lc3NhZ2UKLSAgICAgICAgICAgIHVuaWNvZGVfd2FybmluZyA9IEZhbHNl
Ci0KLSAgICAgICAgICAgIGlmIGNvbXBhdC5fUFkyIGFuZCBhbnkoaXNpbnN0YW5jZShtLCBjb21w
YXQuVU5JQ09ERV9UWVBFUykgZm9yIG0gaW4gd2Fybl9tc2cuYXJncyk6Ci0gICAgICAgICAgICAg
ICAgbmV3X2FyZ3MgPSBbXQotICAgICAgICAgICAgICAgIGZvciBtIGluIHdhcm5fbXNnLmFyZ3M6
Ci0gICAgICAgICAgICAgICAgICAgIG5ld19hcmdzLmFwcGVuZChjb21wYXQuYXNjaWlfZXNjYXBl
ZChtKSBpZiBpc2luc3RhbmNlKG0sIGNvbXBhdC5VTklDT0RFX1RZUEVTKSBlbHNlIG0pCi0gICAg
ICAgICAgICAgICAgdW5pY29kZV93YXJuaW5nID0gbGlzdCh3YXJuX21zZy5hcmdzKSAhPSBuZXdf
YXJncwotICAgICAgICAgICAgICAgIHdhcm5fbXNnLmFyZ3MgPSBuZXdfYXJncwotCi0gICAgICAg
ICAgICBtc2cgPSB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nKAotICAgICAgICAgICAgICAgIHdhcm5f
bXNnLCB3YXJuaW5nLmNhdGVnb3J5LAotICAgICAgICAgICAgICAgIHdhcm5pbmcuZmlsZW5hbWUs
IHdhcm5pbmcubGluZW5vLCB3YXJuaW5nLmxpbmUpCi0gICAgICAgICAgICBpdGVtLndhcm4oInVu
dXNlZCIsIG1zZykKLQotICAgICAgICAgICAgaWYgdW5pY29kZV93YXJuaW5nOgotICAgICAgICAg
ICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgICAgICJXYXJuaW5nIGlzIHVz
aW5nIHVuaWNvZGUgbm9uIGNvbnZlcnRpYmxlIHRvIGFzY2lpLCAiCi0gICAgICAgICAgICAgICAg
ICAgICJjb252ZXJ0aW5nIHRvIGEgc2FmZSByZXByZXNlbnRhdGlvbjpcbiAgJXMiICUgbXNnLAot
ICAgICAgICAgICAgICAgICAgICBVbmljb2RlV2FybmluZykKLQotCi1AcHl0ZXN0Lmhvb2tpbXBs
KGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSk6Ci0g
ICAgd2l0aCBjYXRjaF93YXJuaW5nc19mb3JfaXRlbShpdGVtKToKLSAgICAgICAgeWllbGQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2FwcHZleW9yLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2FwcHZleW9y
LnltbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwOGZhNmQ5MWE5Li4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYXBwdmV5b3IueW1sCisrKyAvZGV2L251bGwKQEAgLTEs
NDggKzAsMCBAQAotZW52aXJvbm1lbnQ6Ci0gIENPVkVSQUxMU19SRVBPX1RPS0VOOgotICAgIHNl
Y3VyZTogMk5KNUN0NTVjSEo5V0VnM3hiU3FDdXYwcmRnenpiNnBuek9JRzVPa01iVG5kdzN3T0Jy
WG50V0ZvUXJYaU1GaQotICAgICMgdGhpcyBpcyBweXRlc3QncyB0b2tlbiBpbiBjb3ZlcmFsbHMu
aW8sIGVuY3J5cHRlZAotICAgICMgdXNpbmcgcHl0ZXN0Ym90IGFjY291bnQgYXMgZGV0YWlsZWQg
aGVyZToKLSAgICAjIGh0dHBzOi8vd3d3LmFwcHZleW9yLmNvbS9kb2NzL2J1aWxkLWNvbmZpZ3Vy
YXRpb24jc2VjdXJlLXZhcmlhYmxlcwotCi0gIG1hdHJpeDoKLSAgIyBjb3ZlcmFsbHMgaXMgbm90
IGluIHRoZSBkZWZhdWx0IGVudiBsaXN0Ci0gIC0gVE9YRU5WOiAiY292ZXJhbGxzIgotICAjIG5v
dGU6IHBsZWFzZSB1c2UgInRveCAtLWxpc3RlbnZzIiB0byBwb3B1bGF0ZSB0aGUgYnVpbGQgbWF0
cml4IGJlbG93Ci0gIC0gVE9YRU5WOiAibGludGluZyIKLSAgLSBUT1hFTlY6ICJweTI3IgotICAt
IFRPWEVOVjogInB5MzQiCi0gIC0gVE9YRU5WOiAicHkzNSIKLSAgLSBUT1hFTlY6ICJweTM2Igot
ICAtIFRPWEVOVjogInB5cHkiCi0gIC0gVE9YRU5WOiAicHkyNy1wZXhwZWN0IgotICAtIFRPWEVO
VjogInB5MjcteGRpc3QiCi0gIC0gVE9YRU5WOiAicHkyNy10cmlhbCIKLSAgLSBUT1hFTlY6ICJw
eTI3LW51bXB5IgotICAtIFRPWEVOVjogInB5MjctcGx1Z2d5bWFzdGVyIgotICAtIFRPWEVOVjog
InB5MzYtcGV4cGVjdCIKLSAgLSBUT1hFTlY6ICJweTM2LXhkaXN0IgotICAtIFRPWEVOVjogInB5
MzYtdHJpYWwiCi0gIC0gVE9YRU5WOiAicHkzNi1udW1weSIKLSAgLSBUT1hFTlY6ICJweTM2LXBs
dWdneW1hc3RlciIKLSAgLSBUT1hFTlY6ICJweTI3LW5vYnl0ZSIKLSAgLSBUT1hFTlY6ICJkb2N0
ZXN0aW5nIgotICAtIFRPWEVOVjogInB5MzUtZnJlZXplIgotICAtIFRPWEVOVjogImRvY3MiCi0K
LWluc3RhbGw6Ci0gIC0gZWNobyBJbnN0YWxsZWQgUHl0aG9ucwotICAtIGRpciBjOlxQeXRob24q
Ci0KLSAgLSBpZiAiJVRPWEVOViUiID09ICJweXB5IiBjYWxsIHNjcmlwdHNcaW5zdGFsbC1weXB5
LmJhdAotCi0gIC0gQzpcUHl0aG9uMzZccHl0aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSAt
LXByZSB0b3gKLQotYnVpbGQ6IGZhbHNlICAjIE5vdCBhIEMjIHByb2plY3QsIGJ1aWxkIHN0dWZm
IGF0IHRoZSB0ZXN0IHN0ZXAgaW5zdGVhZC4KLQotdGVzdF9zY3JpcHQ6Ci0gIC0gY2FsbCBzY3Jp
cHRzXGNhbGwtdG94LmJhdAotCi1jYWNoZToKLSAgLSAnJUxPQ0FMQVBQREFUQSVccGlwXGNhY2hl
JwotICAtICclVVNFUlBST0ZJTEUlXC5jYWNoZVxwcmUtY29tbWl0JwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvYmVuY2gvYmVuY2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9iZW5jaC5weQppbmRl
eCA0ZTcyNDQ0ZTdkN2EuLmM0MGZjODYzNmMwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVu
Y2gvYmVuY2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvYmVuY2gucHkKQEAgLTUsOCArNSw4
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHB5dGVzdCAgIyBOT1FB
CiAgICAgaW1wb3J0IHBzdGF0cwogCi0gICAgc2NyaXB0ID0gc3lzLmFyZ3ZbMTpdIGlmIGxlbihz
eXMuYXJndikgPiAxIGVsc2UgImVtcHR5LnB5IgotICAgIHN0YXRzID0gY1Byb2ZpbGUucnVuKCJw
eXRlc3QuY21kbGluZS5tYWluKCVyKSIgJSBzY3JpcHQsICJwcm9mIikKKyAgICBzY3JpcHQgPSBz
eXMuYXJndlsxOl0gaWYgbGVuKHN5cy5hcmd2KSA+IDEgZWxzZSBbImVtcHR5LnB5Il0KKyAgICBj
UHJvZmlsZS5ydW4oInB5dGVzdC5jbWRsaW5lLm1haW4oJXIpIiAlIHNjcmlwdCwgInByb2YiKQog
ICAgIHAgPSBwc3RhdHMuU3RhdHMoInByb2YiKQogICAgIHAuc3RyaXBfZGlycygpCiAgICAgcC5z
b3J0X3N0YXRzKCJjdW11bGF0aXZlIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL2Jl
bmNoX2FyZ2NvbXBsZXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvYmVuY2hfYXJnY29tcGxldGUu
cHkKaW5kZXggNDk1ZTJjNGVkM2IxLi4zMzU3MzNkZjcyYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2JlbmNoL2JlbmNoX2FyZ2NvbXBsZXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL2Jl
bmNoX2FyZ2NvbXBsZXRlLnB5CkBAIC0xLDEwICsxLDcgQEAKLQotCiAjIDEwMDAwIGl0ZXJhdGlv
bnMsIGp1c3QgZm9yIHJlbGF0aXZlIGNvbXBhcmlzb24KICMgICAgICAgICAgICAgICAgICAgICAg
Mi43LjUgICAgIDMuMy4yCiAjIEZpbGVzQ29tcGxldGVyICAgICAgIDc1LjExMDkgICA2OS4yMTE2
CiAjIEZhc3RGaWxlc0NvbXBsZXRlciAgICAwLjczODMgICAgMS4wNzYwCi0KIGltcG9ydCB0aW1l
aXQKIAogaW1wb3J0cyA9IFsKQEAgLTE5LDQgKzE2LDQgQEAgcnVuID0gJ2ZjKCIvZCIpJwogCiBp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHByaW50KHRpbWVpdC50aW1laXQocnVuLCBz
ZXR1cD1zZXR1cCAlIGltcG9ydHNbMF0sIG51bWJlcj1jb3VudCkpCi0gICAgcHJpbnQoKHRpbWVp
dC50aW1laXQocnVuLCBzZXR1cD1zZXR1cCAlIGltcG9ydHNbMV0sIG51bWJlcj1jb3VudCkpKQor
ICAgIHByaW50KHRpbWVpdC50aW1laXQocnVuLCBzZXR1cD1zZXR1cCAlIGltcG9ydHNbMV0sIG51
bWJlcj1jb3VudCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9lbXB0eS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2JlbmNoL2VtcHR5LnB5CmluZGV4IGI5MDMxOTkzNmIzZS4uNGU3MzcxYjZmODA1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9lbXB0eS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9iZW5jaC9lbXB0eS5weQpAQCAtMSw0ICsxLDIgQEAKLWltcG9ydCBweQotCiBmb3IgaSBpbiBy
YW5nZSgxMDAwKToKLSAgICBweS5idWlsdGluLmV4ZWNfKCJkZWYgdGVzdF9mdW5jXyVkKCk6IHBh
c3MiICUgaSkKKyAgICBleGVjKCJkZWYgdGVzdF9mdW5jXyVkKCk6IHBhc3MiICUgaSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL21hbnlwYXJhbS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNo
L21hbnlwYXJhbS5weQppbmRleCBhMjViMDk4ZGU4NjguLjEyMjZjNzNiZDljZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvYmVuY2gvbWFueXBhcmFtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNo
L21hbnlwYXJhbS5weQpAQCAtMSw0ICsxLDMgQEAKLQogaW1wb3J0IHB5dGVzdAogCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL3NraXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9za2lw
LnB5CmluZGV4IGIxMDVlNzlmODJlYi4uZjBjOWQxZGRiZWZmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9iZW5jaC9za2lwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL3NraXAucHkKQEAgLTEs
NyArMSw1IEBACi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIGltcG9ydCBweXRlc3QKIAot
CiBTS0lQID0gVHJ1ZQogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI3NzI3YTc3NzQzYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2JlbmNoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvYmVuY2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9i
ZW5jaF9hcmdjb21wbGV0ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL2VtcHR5LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvYmVuY2gvbWFueXBhcmFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvc2tpcC5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvY2hhbmdlbG9nL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9j
aGFuZ2Vsb2cvUkVBRE1FLnJzdAppbmRleCBlMzRiZDRkYTI2N2MuLjZkMDI2ZjU3ZWYzZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvY2hhbmdlbG9nL1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvY2hhbmdlbG9nL1JFQURNRS5yc3QKQEAgLTEsMjAgKzEsMjQgQEAKIFRoaXMgZGlyZWN0b3J5
IGNvbnRhaW5zICJuZXdzZnJhZ21lbnRzIiB3aGljaCBhcmUgc2hvcnQgZmlsZXMgdGhhdCBjb250
YWluIGEgc21hbGwgKipSZVNUKiotZm9ybWF0dGVkCiB0ZXh0IHRoYXQgd2lsbCBiZSBhZGRlZCB0
byB0aGUgbmV4dCBgYENIQU5HRUxPR2BgLgogCi1UaGUgYGBDSEFOR0VMT0dgYCB3aWxsIGJlIHJl
YWQgYnkgdXNlcnMsIHNvIHRoaXMgZGVzY3JpcHRpb24gc2hvdWxkIGJlIGFpbWVkIHRvIHB5dGVz
dCB1c2VycworVGhlIGBgQ0hBTkdFTE9HYGAgd2lsbCBiZSByZWFkIGJ5ICoqdXNlcnMqKiwgc28g
dGhpcyBkZXNjcmlwdGlvbiBzaG91bGQgYmUgYWltZWQgdG8gcHl0ZXN0IHVzZXJzCiBpbnN0ZWFk
IG9mIGRlc2NyaWJpbmcgaW50ZXJuYWwgY2hhbmdlcyB3aGljaCBhcmUgb25seSByZWxldmFudCB0
byB0aGUgZGV2ZWxvcGVycy4KIAotTWFrZSBzdXJlIHRvIHVzZSBmdWxsIHNlbnRlbmNlcyB3aXRo
IGNvcnJlY3QgY2FzZSBhbmQgcHVuY3R1YXRpb24sIGZvciBleGFtcGxlOjoKK01ha2Ugc3VyZSB0
byB1c2UgZnVsbCBzZW50ZW5jZXMgaW4gdGhlICoqcGFzdCBvciBwcmVzZW50IHRlbnNlKiogYW5k
IHVzZSBwdW5jdHVhdGlvbiwgZXhhbXBsZXM6OgogCi0gICAgRml4IGlzc3VlIHdpdGggbm9uLWFz
Y2lpIG1lc3NhZ2VzIGZyb20gdGhlIGBgd2FybmluZ3NgYCBtb2R1bGUuCisgICAgSW1wcm92ZWQg
dmVyYm9zZSBkaWZmIG91dHB1dCB3aXRoIHNlcXVlbmNlcy4KKworICAgIFRlcm1pbmFsIHN1bW1h
cnkgc3RhdGlzdGljcyBub3cgdXNlIG11bHRpcGxlIGNvbG9ycy4KIAogRWFjaCBmaWxlIHNob3Vs
ZCBiZSBuYW1lZCBsaWtlIGBgPElTU1VFPi48VFlQRT4ucnN0YGAsIHdoZXJlCiBgYDxJU1NVRT5g
YCBpcyBhbiBpc3N1ZSBudW1iZXIsIGFuZCBgYDxUWVBFPmBgIGlzIG9uZSBvZjoKIAogKiBgYGZl
YXR1cmVgYDogbmV3IHVzZXIgZmFjaW5nIGZlYXR1cmVzLCBsaWtlIG5ldyBjb21tYW5kLWxpbmUg
b3B0aW9ucyBhbmQgbmV3IGJlaGF2aW9yLgotKiBgYGJ1Z2ZpeGBgOiBmaXhlcyBhIHJlcG9ydGVk
IGJ1Zy4KKyogYGBpbXByb3ZlbWVudGBgOiBpbXByb3ZlbWVudCBvZiBleGlzdGluZyBmdW5jdGlv
bmFsaXR5LCB1c3VhbGx5IHdpdGhvdXQgcmVxdWlyaW5nIHVzZXIgaW50ZXJ2ZW50aW9uIChmb3Ig
ZXhhbXBsZSwgbmV3IGZpZWxkcyBiZWluZyB3cml0dGVuIGluIGBgLS1qdW5pdHhtbGBgLCBpbXBy
b3ZlZCBjb2xvcnMgaW4gdGVybWluYWwsIGV0YykuCisqIGBgYnVnZml4YGA6IGZpeGVzIGEgYnVn
LgogKiBgYGRvY2BgOiBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50LCBsaWtlIHJld29yZGluZyBh
biBlbnRpcmUgc2Vzc2lvbiBvciBhZGRpbmcgbWlzc2luZyBkb2NzLgotKiBgYHJlbW92YWxgYDog
ZmVhdHVyZSBkZXByZWNhdGlvbiBvciByZW1vdmFsLgorKiBgYGRlcHJlY2F0aW9uYGA6IGZlYXR1
cmUgZGVwcmVjYXRpb24uCisqIGBgYnJlYWtpbmdgYDogYSBjaGFuZ2Ugd2hpY2ggbWF5IGJyZWFr
IGV4aXN0aW5nIHN1aXRlcywgc3VjaCBhcyBmZWF0dXJlIHJlbW92YWwgb3IgYmVoYXZpb3IgY2hh
bmdlLgogKiBgYHZlbmRvcmBgOiBjaGFuZ2VzIGluIHBhY2thZ2VzIHZlbmRvcmVkIGluIHB5dGVz
dC4KICogYGB0cml2aWFsYGA6IGZpeGluZyBhIHNtYWxsIHR5cG8gb3IgaW50ZXJuYWwgY2hhbmdl
IHRoYXQgbWlnaHQgYmUgbm90ZXdvcnRoeS4KIApAQCAtMjYsNyArMzAsOCBAQCBjaGFuZ2Vsb2cg
dXNpbmcgdGhhdCBpbnN0ZWFkLgogCiBJZiB5b3UgYXJlIG5vdCBzdXJlIHdoYXQgaXNzdWUgdHlw
ZSB0byB1c2UsIGRvbid0IGhlc2l0YXRlIHRvIGFzayBpbiB5b3VyIFBSLgogCi1Ob3RlIHRoYXQg
dGhlIGBgdG93bmNyaWVyYGAgdG9vbCB3aWxsIGF1dG9tYXRpY2FsbHkKLXJlZmxvdyB5b3VyIHRl
eHQsIHNvIGl0IHdpbGwgd29yayBiZXN0IGlmIHlvdSBzdGljayB0byBhIHNpbmdsZSBwYXJhZ3Jh
cGgsIGJ1dCBtdWx0aXBsZSBzZW50ZW5jZXMgYW5kIGxpbmtzIGFyZSBPSwotYW5kIGVuY291cmFn
ZWQuIFlvdSBjYW4gaW5zdGFsbCBgYHRvd25jcmllcmBgIGFuZCB0aGVuIHJ1biBgYHRvd25jcmll
ciAtLWRyYWZ0YGAKLWlmIHlvdSB3YW50IHRvIGdldCBhIHByZXZpZXcgb2YgaG93IHlvdXIgY2hh
bmdlIHdpbGwgbG9vayBpbiB0aGUgZmluYWwgcmVsZWFzZSBub3Rlcy4KK2BgdG93bmNyaWVyYGAg
cHJlc2VydmVzIG11bHRpcGxlIHBhcmFncmFwaHMgYW5kIGZvcm1hdHRpbmcgKGNvZGUgYmxvY2tz
LCBsaXN0cywgYW5kIHNvIG9uKSwgYnV0IGZvciBlbnRyaWVzCitvdGhlciB0aGFuIGBgZmVhdHVy
ZXNgYCBpdCBpcyB1c3VhbGx5IGJldHRlciB0byBzdGljayB0byBhIHNpbmdsZSBwYXJhZ3JhcGgg
dG8ga2VlcCBpdCBjb25jaXNlLgorCitZb3UgY2FuIGFsc28gcnVuIGBgdG94IC1lIGRvY3NgYCB0
byBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbgord2l0aCB0aGUgZHJhZnQgY2hhbmdlbG9nIChgYGRv
Yy9lbi9fYnVpbGQvaHRtbC9jaGFuZ2Vsb2cuaHRtbGBgKSBpZiB5b3Ugd2FudCB0byBnZXQgYSBw
cmV2aWV3IG9mIGhvdyB5b3VyIGNoYW5nZSB3aWxsIGxvb2sgaW4gdGhlIGZpbmFsIHJlbGVhc2Ug
bm90ZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvX3RlbXBsYXRlLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2NoYW5nZWxvZy9fdGVtcGxhdGUucnN0CmluZGV4IGE4OThhYmMxNWFmMS4u
NWRlNGFlOTdlYThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvX3RlbXBsYXRl
LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvX3RlbXBsYXRlLnJzdApAQCAtMTQsNyAr
MTQsNyBAQAogeyUgaWYgZGVmaW5pdGlvbnNbY2F0ZWdvcnldWydzaG93Y29udGVudCddICV9CiB7
JSBmb3IgdGV4dCwgdmFsdWVzIGluIHNlY3Rpb25zW3NlY3Rpb25dW2NhdGVnb3J5XXxkaWN0c29y
dChieT0ndmFsdWUnKSAlfQogeyUgc2V0IGlzc3VlX2pvaW5lciA9IGpvaW5lcignLCAnKSAlfQot
LSB7eyB0ZXh0IH19eyUgaWYgY2F0ZWdvcnkgIT0gJ3ZlbmRvcicgJX0gKHslIGZvciB2YWx1ZSBp
biB2YWx1ZXN8c29ydCAlfXt7IGlzc3VlX2pvaW5lcigpIH19YHt7IHZhbHVlIH19IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzL3t7IHZhbHVlWzE6XSB9fT5gX3sl
IGVuZGZvciAlfSl7JSBlbmRpZiAlfQorLSB7JSBmb3IgdmFsdWUgaW4gdmFsdWVzfHNvcnQgJX17
eyBpc3N1ZV9qb2luZXIoKSB9fWB7eyB2YWx1ZSB9fSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy97eyB2YWx1ZVsxOl0gfX0+YF97JSBlbmRmb3IgJX06IHt7IHRl
eHQgfX0KIAogCiB7JSBlbmRmb3IgJX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxv
Zy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxvZy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM5OTE2YWE1ZWUwLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvY2hhbmdlbG9nL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvY2hhbmdlbG9nL1JFQURNRS5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvX3RlbXBsYXRlLnJzdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvY29kZWNvdi55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jb2RlY292LnltbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYxY2M4Njk3MzM4OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2NvZGVjb3YueW1sCkBAIC0wLDAgKzEsNiBAQAorIyByZWZlcmVu
Y2U6IGh0dHBzOi8vZG9jcy5jb2RlY292LmlvL2RvY3MvY29kZWNvdnltbC1yZWZlcmVuY2UKK2Nv
dmVyYWdlOgorICBzdGF0dXM6CisgICAgcGF0Y2g6IHRydWUKKyAgICBwcm9qZWN0OiBmYWxzZQor
Y29tbWVudDogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9NYWtlZmlsZSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9NYWtlZmlsZQppbmRleCBmYThlODI2NmEyOWUuLjFjZmZiZDQ2
M2Q4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL01ha2VmaWxlCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9NYWtlZmlsZQpAQCAtMSwxNTAgKzEsMzkgQEAKLSMgTWFrZWZpbGUgZm9y
IFNwaGlueCBkb2N1bWVudGF0aW9uCisjIE1pbmltYWwgbWFrZWZpbGUgZm9yIFNwaGlueCBkb2N1
bWVudGF0aW9uCiAjCiAKLSMgWW91IGNhbiBzZXQgdGhlc2UgdmFyaWFibGVzIGZyb20gdGhlIGNv
bW1hbmQgbGluZS4KLVNQSElOWE9QVFMgICAgPQotU1BISU5YQlVJTEQgICA9IHNwaGlueC1idWls
ZAotUEFQRVIgICAgICAgICA9CisjIFlvdSBjYW4gc2V0IHRoZXNlIHZhcmlhYmxlcyBmcm9tIHRo
ZSBjb21tYW5kIGxpbmUsIGFuZCBhbHNvCisjIGZyb20gdGhlIGVudmlyb25tZW50IGZvciB0aGUg
Zmlyc3QgdHdvLgorU1BISU5YT1BUUyAgICA/PQorU1BISU5YQlVJTEQgICA/PSBzcGhpbngtYnVp
bGQKK1NPVVJDRURJUiAgICAgPSAuCiBCVUlMRERJUiAgICAgID0gX2J1aWxkCiAKLSMgSW50ZXJu
YWwgdmFyaWFibGVzLgotUEFQRVJPUFRfYTQgICAgID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1hNAot
UEFQRVJPUFRfbGV0dGVyID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1sZXR0ZXIKLUFMTFNQSElOWE9Q
VFMgICA9IC1kICQoQlVJTERESVIpL2RvY3RyZWVzICQoUEFQRVJPUFRfJChQQVBFUikpICQoU1BI
SU5YT1BUUykgLgorIyBQdXQgaXQgZmlyc3Qgc28gdGhhdCAibWFrZSIgd2l0aG91dCBhcmd1bWVu
dCBpcyBsaWtlICJtYWtlIGhlbHAiLgoraGVscDoKKwlAJChTUEhJTlhCVUlMRCkgLU0gaGVscCAi
JChTT1VSQ0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5YT1BUUykgJChPKQorCisuUEhPTlk6
IGhlbHAgTWFrZWZpbGUKKworIyBDYXRjaC1hbGwgdGFyZ2V0OiByb3V0ZSBhbGwgdW5rbm93biB0
YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0aGUgbmV3CisjICJtYWtlIG1vZGUiIG9wdGlvbi4gICQo
TykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJTlhPUFRTKS4KKyU6IE1ha2VmaWxl
CisJQCQoU1BISU5YQlVJTEQpIC1NICRAICIkKFNPVVJDRURJUikiICIkKEJVSUxERElSKSIgJChT
UEhJTlhPUFRTKSAkKE8pCisKIAogUkVHRU5ET0NfQVJHUyA6PSBcCi0JLS1ub3JtYWxpemUgIi9p
biBcZCsuXGQrIHNlY29uZHMvaW4gMC4xMiBzZWNvbmRzLyIgXAorCS0tbm9ybWFsaXplICIvWyBc
dF0rXG4vXG4vIiBcCisJLS1ub3JtYWxpemUgIn5cJCRSRUdFTkRPQ19UTVBESVJ+L2hvbWUvc3dl
ZXQvcHJvamVjdH4iIFwKKwktLW5vcm1hbGl6ZSAifi9wYXRoL3RvL2V4YW1wbGV+L2hvbWUvc3dl
ZXQvcHJvamVjdH4iIFwKKwktLW5vcm1hbGl6ZSAiL2luIFxkLlxkXGRzL2luIDAuMTJzLyIgXAog
CS0tbm9ybWFsaXplICJAL3RtcC9weXRlc3Qtb2YtLiovcHl0ZXN0LVxkK0BQWVRFU1RfVE1QRElS
QCIgXAogCS0tbm9ybWFsaXplICJAcHl0ZXN0LShcZCspXFwuW14gLF0rQHB5dGVzdC1cMS54LnlA
IiBcCi0JLS1ub3JtYWxpemUgIkAoVGhpcyBpcyBweXRlc3QgdmVyc2lvbiApKFxkKylcXC5bXiAs
XStAXDFcMi54LnlAIiBcCiAJLS1ub3JtYWxpemUgIkBweS0oXGQrKVxcLlteICxdK0BweS1cMS54
LnlAIiBcCiAJLS1ub3JtYWxpemUgIkBwbHVnZ3ktKFxkKylcXC5bLlxkLF0rQHBsdWdneS1cMS54
LnlAIiBcCiAJLS1ub3JtYWxpemUgIkBoeXBvdGhlc2lzLShcZCspXFwuWy5cZCxdK0BoeXBvdGhl
c2lzLVwxLngueUAiIFwKIAktLW5vcm1hbGl6ZSAiQFB5dGhvbiAoXGQrKVxcLlteICxdK0BQeXRo
b24gXDEueC55QCIKIAotLlBIT05ZOiBoZWxwIGNsZWFuIGh0bWwgZGlyaHRtbCBzaW5nbGVodG1s
IHBpY2tsZSBqc29uIGh0bWxoZWxwIHF0aGVscCBkZXZoZWxwIGVwdWIgbGF0ZXggbGF0ZXhwZGYg
dGV4dCBtYW4gY2hhbmdlcyBsaW5rY2hlY2sgZG9jdGVzdAotCi0KLWhlbHA6Ci0JQGVjaG8gIlBs
ZWFzZSB1c2UgXGBtYWtlIDx0YXJnZXQ+JyB3aGVyZSA8dGFyZ2V0PiBpcyBvbmUgb2YiCi0JQGVj
aG8gIiAgaHRtbCAgICAgICB0byBtYWtlIHN0YW5kYWxvbmUgSFRNTCBmaWxlcyIKLQlAZWNobyAi
ICBsYXRleHBkZiAgIHRvIG1ha2UgTGFUZVggZmlsZXMgYW5kIHJ1biB0aGVtIHRocm91Z2ggcGRm
bGF0ZXgiCi0JQGVjaG8gIiAgc2hvd3RhcmdldCB0byBzaG93IHRoZSBweXRlc3Qub3JnIHRhcmdl
dCBkaXJlY3RvcnkiCi0JQGVjaG8gIiAgaW5zdGFsbCAgICB0byBpbnN0YWxsIGRvY3MgdG8gcHl0
ZXN0Lm9yZy9TSVRFVEFSR0VUIgotCUBlY2hvICIgIGluc3RhbGwtbGRmIHRvIGluc3RhbGwgdGhl
IGRvYyBwZGYgdG8gcHl0ZXN0Lm9yZy9TSVRFVEFSR0VUIgotCUBlY2hvICIgIHJlZ2VuICAgICAg
dG8gcmVnZW5lcmF0ZSBweXRlc3QgZXhhbXBsZXMgdXNpbmcgdGhlIGluc3RhbGxlZCBweXRlc3Qi
Ci0JQGVjaG8gIiAgbGlua2NoZWNrICB0byBjaGVjayBhbGwgZXh0ZXJuYWwgbGlua3MgZm9yIGlu
dGVncml0eSIKLQotY2xlYW46Ci0JLXJtIC1yZiAkKEJVSUxERElSKS8qCi0KK3JlZ2VuOiBSRUdF
TkRPQ19GSUxFUzo9Ki5yc3QgKi8qLnJzdAogcmVnZW46Ci0JUFlUSE9ORE9OVFdSSVRFQllURUNP
REU9MSBQWVRFU1RfQURET1BUPS1wbm86aHlwb3RoZXNpcyBDT0xVTU5TPTc2IHJlZ2VuZG9jIC0t
dXBkYXRlICoucnN0ICovKi5yc3QgJHtSRUdFTkRPQ19BUkdTfQotCi1odG1sOgotCSQoU1BISU5Y
QlVJTEQpIC1iIGh0bWwgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9odG1sCi0JQGVjaG8K
LQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElS
KS9odG1sLiIKLQotZGlyaHRtbDoKLQkkKFNQSElOWEJVSUxEKSAtYiBkaXJodG1sICQoQUxMU1BI
SU5YT1BUUykgJChCVUlMRERJUikvZGlyaHRtbAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlz
aGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvZGlyaHRtbC4iCi0KLXNpbmds
ZWh0bWw6Ci0JJChTUEhJTlhCVUlMRCkgLWIgc2luZ2xlaHRtbCAkKEFMTFNQSElOWE9QVFMpICQo
QlVJTERESVIpL3NpbmdsZWh0bWwKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhl
IEhUTUwgcGFnZSBpcyBpbiAkKEJVSUxERElSKS9zaW5nbGVodG1sLiIKLQotcGlja2xlOgotCSQo
U1BISU5YQlVJTEQpIC1iIHBpY2tsZSAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3BpY2ts
ZQotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBwcm9jZXNzIHRo
ZSBwaWNrbGUgZmlsZXMuIgotCi1qc29uOgotCSQoU1BISU5YQlVJTEQpIC1iIGpzb24gJChBTExT
UEhJTlhPUFRTKSAkKEJVSUxERElSKS9qc29uCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNo
ZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIEpTT04gZmlsZXMuIgotCi1odG1saGVscDoKLQkk
KFNQSElOWEJVSUxEKSAtYiBodG1saGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2h0
bWxoZWxwCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHJ1biBI
VE1MIEhlbHAgV29ya3Nob3Agd2l0aCB0aGUiIFwKLQkgICAgICAiLmhocCBwcm9qZWN0IGZpbGUg
aW4gJChCVUlMRERJUikvaHRtbGhlbHAuIgotCi1xdGhlbHA6Ci0JJChTUEhJTlhCVUlMRCkgLWIg
cXRoZWxwICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvcXRoZWxwCi0JQGVjaG8KLQlAZWNo
byAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHJ1biAicWNvbGxlY3Rpb25nZW5lcmF0b3Ii
IHdpdGggdGhlIiBcCi0JICAgICAgIi5xaGNwIHByb2plY3QgZmlsZSBpbiAkKEJVSUxERElSKS9x
dGhlbHAsIGxpa2UgdGhpczoiCi0JQGVjaG8gIiMgcWNvbGxlY3Rpb25nZW5lcmF0b3IgJChCVUlM
RERJUikvcXRoZWxwL3B5dGVzdC5xaGNwIgotCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6
IgotCUBlY2hvICIjIGFzc2lzdGFudCAtY29sbGVjdGlvbkZpbGUgJChCVUlMRERJUikvcXRoZWxw
L3B5dGVzdC5xaGMiCi0KLWRldmhlbHA6Ci0JJChTUEhJTlhCVUlMRCkgLWIgZGV2aGVscCAkKEFM
TFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RldmhlbHAKLQlAZWNobwotCUBlY2hvICJCdWlsZCBm
aW5pc2hlZC4iCi0JQGVjaG8gIlRvIHZpZXcgdGhlIGhlbHAgZmlsZToiCi0JQGVjaG8gIiMgbWtk
aXIgLXAgJCRIT01FLy5sb2NhbC9zaGFyZS9kZXZoZWxwL3B5dGVzdCIKLQlAZWNobyAiIyBsbiAt
cyAkKEJVSUxERElSKS9kZXZoZWxwICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC9weXRlc3Qi
Ci0JQGVjaG8gIiMgZGV2aGVscCIKLQotZXB1YjoKLQkkKFNQSElOWEJVSUxEKSAtYiBlcHViICQo
QUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZXB1YgotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZp
bmlzaGVkLiBUaGUgZXB1YiBmaWxlIGlzIGluICQoQlVJTERESVIpL2VwdWIuIgotCi1sYXRleDoK
LQkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2xh
dGV4Ci0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IHRoZSBMYVRlWCBmaWxlcyBhcmUg
aW4gJChCVUlMRERJUikvbGF0ZXguIgotCUBlY2hvICJSdW4gXGBtYWtlJyBpbiB0aGF0IGRpcmVj
dG9yeSB0byBydW4gdGhlc2UgdGhyb3VnaCAocGRmKWxhdGV4IiBcCi0JICAgICAgIih1c2UgXGBt
YWtlIGxhdGV4cGRmJyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGljYWxseSkuIgotCi1sYXRleHBk
ZjoKLQkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIp
L2xhdGV4Ci0JQGVjaG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMgdGhyb3VnaCBwZGZsYXRleC4uLiIK
LQltYWtlIC1DICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYKLQlAZWNobyAicGRmbGF0ZXggZmlu
aXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4LiIKLQotdGV4dDoK
LQkkKFNQSElOWEJVSUxEKSAtYiB0ZXh0ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvdGV4
dAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgdGV4dCBmaWxlcyBhcmUgaW4g
JChCVUlMRERJUikvdGV4dC4iCi0KLW1hbjoKLQkkKFNQSElOWEJVSUxEKSAtYiBtYW4gJChBTExT
UEhJTlhPUFRTKSAkKEJVSUxERElSKS9tYW4KLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hl
ZC4gVGhlIG1hbnVhbCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvbWFuLiIKLQotY2hhbmdlczoK
LQkkKFNQSElOWEJVSUxEKSAtYiBjaGFuZ2VzICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikv
Y2hhbmdlcwotCUBlY2hvCi0JQGVjaG8gIlRoZSBvdmVydmlldyBmaWxlIGlzIGluICQoQlVJTERE
SVIpL2NoYW5nZXMuIgotCi1saW5rY2hlY2s6Ci0JJChTUEhJTlhCVUlMRCkgLWIgbGlua2NoZWNr
ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvbGlua2NoZWNrCi0JQGVjaG8KLQlAZWNobyAi
TGluayBjaGVjayBjb21wbGV0ZTsgbG9vayBmb3IgYW55IGVycm9ycyBpbiB0aGUgYWJvdmUgb3V0
cHV0ICIgXAotCSAgICAgICJvciBpbiAkKEJVSUxERElSKS9saW5rY2hlY2svb3V0cHV0LnR4dC4i
Ci0KLWRvY3Rlc3Q6Ci0JJChTUEhJTlhCVUlMRCkgLWIgZG9jdGVzdCAkKEFMTFNQSElOWE9QVFMp
ICQoQlVJTERESVIpL2RvY3Rlc3QKLQlAZWNobyAiVGVzdGluZyBvZiBkb2N0ZXN0cyBpbiB0aGUg
c291cmNlcyBmaW5pc2hlZCwgbG9vayBhdCB0aGUgIiBcCi0JICAgICAgInJlc3VsdHMgaW4gJChC
VUlMRERJUikvZG9jdGVzdC9vdXRwdXQudHh0LiIKLQotdGV4aW5mbzoKLQlta2RpciAtcCAkKEJV
SUxERElSKS90ZXhpbmZvCi0JJChTUEhJTlhCVUlMRCkgLWIgdGV4aW5mbyAkKEFMTFNQSElOWE9Q
VFMpICQoQlVJTERESVIpL3RleGluZm8KLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4g
VGhlIFRleGluZm8gZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3RleGluZm8uIgotCUBlY2hvICJS
dW4gXGBtYWtlJyBpbiB0aGF0IGRpcmVjdG9yeSB0byBydW4gdGhlc2UgdGhyb3VnaCBtYWtlaW5m
byIgXAotCSAgICAgICIodXNlIFxgbWFrZSBpbmZvJyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGlj
YWxseSkuIgorCVBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEgUFlURVNUX0FERE9QVFM9Ii1wbm86
aHlwb3RoZXNpcyAtV2lnbm9yZTo6cHl0ZXN0LlB5dGVzdFVua25vd25NYXJrV2FybmluZyIgQ09M
VU1OUz03NiByZWdlbmRvYyAtLXVwZGF0ZSAke1JFR0VORE9DX0ZJTEVTfSAke1JFR0VORE9DX0FS
R1N9CiAKLWluZm86Ci0JbWtkaXIgLXAgJChCVUlMRERJUikvdGV4aW5mbwotCSQoU1BISU5YQlVJ
TEQpIC1iIHRleGluZm8gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS90ZXhpbmZvCi0JQGVj
aG8gIlJ1bm5pbmcgVGV4aW5mbyBmaWxlcyB0aHJvdWdoIG1ha2VpbmZvLi4uIgotCW1ha2UgLUMg
JChCVUlMRERJUikvdGV4aW5mbyBpbmZvCi0JQGVjaG8gIm1ha2VpbmZvIGZpbmlzaGVkOyB0aGUg
SW5mbyBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4aW5mby4iCisuUEhPTlk6IHJlZ2VuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy9nbG9iYWx0b2MuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2dsb2JhbHRvYy5odG1sCmluZGV4IDBlMDg4
ZDY3ZWYzNi4uNDUyMmViMmRlYzliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3Rl
bXBsYXRlcy9nbG9iYWx0b2MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRl
cy9nbG9iYWx0b2MuaHRtbApAQCAtNCwxMiArNCwxNSBAQAogICA8bGk+PGEgaHJlZj0ie3sgcGF0
aHRvKCdpbmRleCcpIH19Ij5Ib21lPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJ7eyBwYXRodG8o
J2dldHRpbmctc3RhcnRlZCcpIH19Ij5JbnN0YWxsPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJ7
eyBwYXRodG8oJ2NvbnRlbnRzJykgfX0iPkNvbnRlbnRzPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVm
PSJ7eyBwYXRodG8oJ3JlZmVyZW5jZScpIH19Ij5SZWZlcmVuY2U8L2E+PC9saT4KKyAgPGxpPjxh
IGhyZWY9Int7IHBhdGh0bygncmVmZXJlbmNlJykgfX0iPkFQSSBSZWZlcmVuY2U8L2E+PC9saT4K
ICAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygnZXhhbXBsZS9pbmRleCcpIH19Ij5FeGFtcGxlczwv
YT48L2xpPgogICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdjdXN0b21pemUnKSB9fSI+Q3VzdG9t
aXplPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJ7eyBwYXRodG8oJ2NoYW5nZWxvZycpIH19Ij5D
aGFuZ2Vsb2c8L2E+PC9saT4KICAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygnY29udHJpYnV0aW5n
JykgfX0iPkNvbnRyaWJ1dGluZzwvYT48L2xpPgogICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdi
YWNrd2FyZHMtY29tcGF0aWJpbGl0eScpIH19Ij5CYWNrd2FyZHMgQ29tcGF0aWJpbGl0eTwvYT48
L2xpPgorICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdweTI3LXB5MzQtZGVwcmVjYXRpb24nKSB9
fSI+UHl0aG9uIDIuNyBhbmQgMy40IFN1cHBvcnQ8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Int7
IHBhdGh0bygnc3BvbnNvcicpIH19Ij5TcG9uc29yPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSJ7
eyBwYXRodG8oJ3RpZGVsaWZ0JykgfX0iPnB5dGVzdCBmb3IgRW50ZXJwcmlzZTwvYT48L2xpPgog
ICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdsaWNlbnNlJykgfX0iPkxpY2Vuc2U8L2E+PC9saT4K
ICAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygnY29udGFjdCcpIH19Ij5Db250YWN0IENoYW5uZWxz
PC9hPjwvbGk+CiA8L3VsPgpAQCAtMTgsMyArMjEsNyBAQAogICA8aHI+CiAgIHt7IHRvYyB9fQog
eyUtIGVuZGlmICV9CisKKzxocj4KKzxhIGhyZWY9Int7IHBhdGh0bygnZ2VuaW5kZXgnKSB9fSI+
SW5kZXg8L2E+Cis8aHI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRl
cy9sYXlvdXQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2xheW91dC5odG1s
CmluZGV4IDJmYzhlMmE3ZmI0Yy4uZjcwOTZlYWFhNWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vX3RlbXBsYXRlcy9sYXlvdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
X3RlbXBsYXRlcy9sYXlvdXQuaHRtbApAQCAtMSwyMCArMSw1MiBAQAoteyUgZXh0ZW5kcyAiIWxh
eW91dC5odG1sIiAlfQoteyUgYmxvY2sgaGVhZGVyICV9Ci0gIHt7c3VwZXIoKX19Cit7IworCisg
ICAgQ29waWVkIGZyb206CisKKyAgICAgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29t
L3BhbGxldHMvcGFsbGV0cy1zcGhpbngtdGhlbWVzL2IwYzZjNDE4NDliNGUxNWNiZjYyY2MxZDk1
YzA1ZWYyYjNlMTU1Yzgvc3JjL3BhbGxldHNfc3BoaW54X3RoZW1lcy90aGVtZXMvcG9jb28vbGF5
b3V0Lmh0bWwKKworICAgIEFuZCByZW1vdmVkIHRoZSB3YXJuaW5nIHZlcnNpb24gKHNlZSAjNzMz
MSkuCisKKyN9CisKK3slIGV4dGVuZHMgImJhc2ljL2xheW91dC5odG1sIiAlfQorCit7JSBzZXQg
bWV0YXRhZ3MgJX0KKyAge3stIG1ldGF0YWdzIH19CisgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cit7JS0gZW5kc2V0
ICV9CisKK3slIGJsb2NrIGV4dHJhaGVhZCAlfQorICB7JS0gaWYgcGFnZV9jYW5vbmljYWxfdXJs
ICV9CisgICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Int7IHBhZ2VfY2Fub25pY2FsX3Vy
bCB9fSI+CisgIHslLSBlbmRpZiAlfQorICA8c2NyaXB0PkRPQ1VNRU5UQVRJT05fT1BUSU9OUy5V
UkxfUk9PVCA9ICd7eyB1cmxfcm9vdCB9fSc7PC9zY3JpcHQ+CisgIHt7IHN1cGVyKCkgfX0KK3sl
LSBlbmRibG9jayAlfQorCit7JSBibG9jayBzaWRlYmFybG9nbyAlfQorICB7JSBpZiBwYWdlbmFt
ZSAhPSAiaW5kZXgiIG9yIHRoZW1lX2luZGV4X3NpZGViYXJfbG9nbyAlfQorICAgIHt7IHN1cGVy
KCkgfX0KKyAgeyUgZW5kaWYgJX0KIHslIGVuZGJsb2NrICV9Ci17JSBibG9jayBmb290ZXIgJX0K
LXt7IHN1cGVyKCkgfX0KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAotICB2YXIg
X2dhcSA9IF9nYXEgfHwgW107Ci0gIF9nYXEucHVzaChbJ19zZXRBY2NvdW50JywgJ1VBLTc1OTcy
NzQtMTMnXSk7Ci0gIF9nYXEucHVzaChbJ190cmFja1BhZ2V2aWV3J10pOworeyUgYmxvY2sgcmVs
YmFyMiAlfXslIGVuZGJsb2NrICV9CiAKLSAgKGZ1bmN0aW9uKCkgewotICAgIHZhciBnYSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOyBnYS50eXBlID0gJ3RleHQvamF2YXNjcmlw
dCc7IGdhLmFzeW5jID0gdHJ1ZTsKLSAgICBnYS5zcmMgPSAoJ2h0dHBzOicgPT0gZG9jdW1lbnQu
bG9jYXRpb24ucHJvdG9jb2wgPyAnaHR0cHM6Ly9zc2wnIDogJ2h0dHA6Ly93d3cnKSArICcuZ29v
Z2xlLWFuYWx5dGljcy5jb20vZ2EuanMnOwotICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhLCBz
KTsKLSAgfSkoKTsKK3slIGJsb2NrIHNpZGViYXIyICV9CisgIDxzcGFuIGlkPSJzaWRlYmFyLXRv
cCI+PC9zcGFuPgorICB7ey0gc3VwZXIoKSB9fQoreyUtIGVuZGJsb2NrICV9CiAKLTwvc2NyaXB0
PgoreyUgYmxvY2sgZm9vdGVyICV9CisgIHt7IHN1cGVyKCkgfX0KKyAgeyUtIGlmIFJFQURUSEVE
T0NTIGFuZCBub3QgcmVhZHRoZWRvY3NfZG9jc2VhcmNoICV9CisgICAgPHNjcmlwdD4KKyAgICAg
IGlmICh0eXBlb2YgUkVBRFRIRURPQ1NfREFUQSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAg
aWYgKCFSRUFEVEhFRE9DU19EQVRBLmZlYXR1cmVzKSB7CisgICAgICAgICAgUkVBRFRIRURPQ1Nf
REFUQS5mZWF0dXJlcyA9IHt9OworICAgICAgICB9CisgICAgICAgIFJFQURUSEVET0NTX0RBVEEu
ZmVhdHVyZXMuZG9jc2VhcmNoX2Rpc2FibGVkID0gdHJ1ZTsKKyAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKyAgeyUtIGVuZGlmICV9CisgIHt7IGpzX3RhZygiX3N0YXRpYy92ZXJzaW9uX3dhcm5pbmdf
b2Zmc2V0LmpzIikgfX0KIHslIGVuZGJsb2NrICV9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vX3RoZW1lcy9mbGFzay9yZWxhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9f
dGVtcGxhdGVzL3JlbGF0aW9ucy5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay9yZWxhdGlvbnMuaHRtbApyZW5hbWUg
dG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvcmVsYXRpb25zLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL3NsaW1fc2VhcmNoYm94Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy9zbGltX3NlYXJjaGJveC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTk4YWQ0ZWQ5MDVkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvc2xpbV9zZWFyY2hib3guaHRt
bApAQCAtMCwwICsxLDE1IEBACit7IworICAgIGJhc2ljL3NlYXJjaGJveC5odG1sIHdpdGggaGVh
ZGluZyByZW1vdmVkLgorI30KK3slLSBpZiBwYWdlbmFtZSAhPSAic2VhcmNoIiBhbmQgYnVpbGRl
ciAhPSAic2luZ2xlaHRtbCIgJX0KKzxkaXYgaWQ9InNlYXJjaGJveCIgc3R5bGU9ImRpc3BsYXk6
IG5vbmUiIHJvbGU9InNlYXJjaCI+CisgIDxkaXYgY2xhc3M9InNlYXJjaGZvcm13cmFwcGVyIj4K
KyAgICA8Zm9ybSBjbGFzcz0ic2VhcmNoIiBhY3Rpb249Int7IHBhdGh0bygnc2VhcmNoJykgfX0i
IG1ldGhvZD0iZ2V0Ij4KKyAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiBhcmlhLWxh
YmVsbGVkYnk9InNlYXJjaGxhYmVsIgorICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIi8+Cisg
ICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ie3sgXygnR28nKSB9fSIgLz4KKyAgICA8
L2Zvcm0+CisgIDwvZGl2PgorPC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
JCgnI3NlYXJjaGJveCcpLnNob3coMCk7PC9zY3JpcHQ+Cit7JS0gZW5kaWYgJX0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE0MzY2MDRiNGE1My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvZ2xvYmFsdG9j
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy9sYXlvdXQuaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2xpbmtzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
X3RlbXBsYXRlcy9zaWRlYmFyaW50cm8uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL190aGVtZXMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL0xJQ0VOU0UK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYWFiN2VlNmVmZS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApA
QCAtMSwzNyArMCwwIEBACi1Db3B5cmlnaHQgKGMpIDIwMTAgYnkgQXJtaW4gUm9uYWNoZXIuCi0K
LVNvbWUgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zIG9mIHRoZSB0aGVtZSwgd2l0aCBvcgotd2l0aG91dCBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLWFyZSBtZXQ6Ci0KLSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0qIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0gIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotKiBUaGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycyBt
YXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvcgotICBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMKLSAgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotCi1XZSBraW5kbHkgYXNrIHlvdSB0byBvbmx5IHVzZSB0aGVzZSB0aGVtZXMgaW4g
YW4gdW5tb2RpZmllZCBtYW5uZXIganVzdAotZm9yIEZsYXNrIGFuZCBGbGFzay1yZWxhdGVkIHBy
b2R1Y3RzLCBub3QgZm9yIHVucmVsYXRlZCBwcm9qZWN0cy4gIElmIHlvdQotbGlrZSB0aGUgdmlz
dWFsIHN0eWxlIGFuZCB3YW50IHRvIHVzZSBpdCBmb3IgeW91ciBvd24gcHJvamVjdHMsIHBsZWFz
ZQotY29uc2lkZXIgbWFraW5nIHNvbWUgbGFyZ2VyIGNoYW5nZXMgdG8gdGhlIHRoZW1lcyAoc3Vj
aCBhcyBjaGFuZ2luZwotZm9udCBmYWNlcywgc2l6ZXMsIGNvbG9ycyBvciBtYXJnaW5zKS4KLQot
VEhJUyBUSEVNRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiCi1BTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi1JTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi1J
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFRIRU1FLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi1QT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVz
L1JFQURNRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL1JFQURNRQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjMyOTJiZGZmOGVkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL190aGVtZXMvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBA
QAotRmxhc2sgU3BoaW54IFN0eWxlcwotPT09PT09PT09PT09PT09PT09PQotCi1UaGlzIHJlcG9z
aXRvcnkgY29udGFpbnMgc3BoaW54IHN0eWxlcyBmb3IgRmxhc2sgYW5kIEZsYXNrIHJlbGF0ZWQK
LXByb2plY3RzLiAgVG8gdXNlIHRoaXMgc3R5bGUgaW4geW91ciBTcGhpbnggZG9jdW1lbnRhdGlv
biwgZm9sbG93Ci10aGlzIGd1aWRlOgotCi0xLiBwdXQgdGhpcyBmb2xkZXIgYXMgX3RoZW1lcyBp
bnRvIHlvdXIgZG9jcyBmb2xkZXIuICBBbHRlcm5hdGl2ZWx5Ci0gICB5b3UgY2FuIGFsc28gdXNl
IGdpdCBzdWJtb2R1bGVzIHRvIGNoZWNrIG91dCB0aGUgY29udGVudHMgdGhlcmUuCi0yLiBhZGQg
dGhpcyB0byB5b3VyIGNvbmYucHk6Ci0KLSAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3Bh
dGgoJ190aGVtZXMnKSkKLSAgIGh0bWxfdGhlbWVfcGF0aCA9IFsnX3RoZW1lcyddCi0gICBodG1s
X3RoZW1lID0gJ2ZsYXNrJwotCi1UaGUgZm9sbG93aW5nIHRoZW1lcyBleGlzdDoKLQotLSAnZmxh
c2snIC0gdGhlIHN0YW5kYXJkIGZsYXNrIGRvY3VtZW50YXRpb24gdGhlbWUgZm9yIGxhcmdlCi0g
IHByb2plY3RzCi0tICdmbGFza19zbWFsbCcgLSBzbWFsbCBvbmUtcGFnZSB0aGVtZS4gIEludGVu
ZGVkIHRvIGJlIHVzZWQgYnkKLSAgdmVyeSBzbWFsbCBhZGRvbiBsaWJyYXJpZXMgZm9yIGZsYXNr
LgotCi1UaGUgZm9sbG93aW5nIG9wdGlvbnMgZXhpc3QgZm9yIHRoZSBmbGFza19zbWFsbCB0aGVt
ZToKLQotICAgW29wdGlvbnNdCi0gICBpbmRleF9sb2dvID0gJycgICAgICAgICAgICAgIGZpbGVu
YW1lIG9mIGEgcGljdHVyZSBpbiBfc3RhdGljCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvIGJlIHVzZWQgYXMgcmVwbGFjZW1lbnQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoMSBpbiB0aGUgaW5kZXgucnN0IGZpbGUuCi0gICBpbmRleF9sb2dvX2hl
aWdodCA9IDEyMHB4ICAgIGhlaWdodCBvZiB0aGUgaW5kZXggbG9nbwotICAgZ2l0aHViX2Zvcmsg
PSAnJyAgICAgICAgICAgICByZXBvc2l0b3J5IG5hbWUgb24gZ2l0aHViIGZvciB0aGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcmsgbWUiIGJhZGdlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay9sYXlvdXQuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL2xheW91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxOWM0M2ZiYmVmYzEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vX3RoZW1lcy9mbGFzay9sYXlvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAg
QEAKLXslLSBleHRlbmRzICJiYXNpYy9sYXlvdXQuaHRtbCIgJX0KLXslLSBibG9jayBleHRyYWhl
YWQgJX0KLSAge3sgc3VwZXIoKSB9fQotICB7JSBpZiB0aGVtZV90b3VjaF9pY29uICV9Ci0gIDxs
aW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0ie3sgcGF0aHRvKCdfc3RhdGljLycgfiB0
aGVtZV90b3VjaF9pY29uLCAxKSB9fSIgLz4KLSAgeyUgZW5kaWYgJX0KLSAgPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0wLjks
IG1heGltdW0tc2NhbGU9MC45Ij4KLXslIGVuZGJsb2NrICV9Ci17JS0gYmxvY2sgcmVsYmFyMiAl
fXslIGVuZGJsb2NrICV9Ci17JSBibG9jayBoZWFkZXIgJX0KLSAge3sgc3VwZXIoKSB9fQotICB7
JSBpZiBwYWdlbmFtZSA9PSAnaW5kZXgnICV9Ci0gIDxkaXYgY2xhc3M9aW5kZXh3cmFwcGVyPgot
ICB7JSBlbmRpZiAlfQoteyUgZW5kYmxvY2sgJX0KLXslLSBibG9jayBmb290ZXIgJX0KLSAgPGRp
diBjbGFzcz0iZm9vdGVyIj4KLSAgICAmY29weTsgQ29weXJpZ2h0IHt7IGNvcHlyaWdodCB9fS4K
LSAgICBDcmVhdGVkIHVzaW5nIDxhIGhyZWY9Imh0dHA6Ly9zcGhpbngucG9jb28ub3JnLyI+U3Bo
aW54PC9hPi4KLSAgPC9kaXY+Ci0gIHslIGlmIHBhZ2VuYW1lID09ICdpbmRleCcgJX0KLSAgPC9k
aXY+Ci0gIHslIGVuZGlmICV9Ci17JS0gZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRpYy9mbGFza3kuY3NzX3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vX3RoZW1lcy9mbGFzay9zdGF0aWMvZmxhc2t5LmNzc190CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YjU5M2RhMjk5YTguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay9zdGF0aWMvZmxhc2t5LmNzc190CisrKyAvZGV2L251
bGwKQEAgLTEsNTU3ICswLDAgQEAKLS8qCi0gKiBmbGFza3kuY3NzX3QKLSAqIH5+fn5+fn5+fn5+
fgotICoKLSAqIDpjb3B5cmlnaHQ6IENvcHlyaWdodCAyMDEwIGJ5IEFybWluIFJvbmFjaGVyLgot
ICogOmxpY2Vuc2U6IEZsYXNrIERlc2lnbiBMaWNlbnNlLCBzZWUgTElDRU5TRSBmb3IgZGV0YWls
cy4KLSAqLwotCi17JSBzZXQgcGFnZV93aWR0aCA9ICcxMDIwcHgnICV9Ci17JSBzZXQgc2lkZWJh
cl93aWR0aCA9ICcyMjBweCcgJX0KLS8qIG9yYW5nZSBvZiBsb2dvIGlzICNkNjdjMjkgYnV0IHdl
IHVzZSBibGFjayBmb3IgbGlua3MgZm9yIG5vdyAqLwoteyUgc2V0IGxpbmtfY29sb3IgPSAnIzAw
MCcgJX0KLXslIHNldCBsaW5rX2hvdmVyX2NvbG9yID0gJyMwMDAnICV9Ci17JSBzZXQgYmFzZV9m
b250ID0gJ3NhbnMtc2VyaWYnICV9Ci17JSBzZXQgaGVhZGVyX2ZvbnQgPSAnc2VyaWYnICV9Ci0K
LUBpbXBvcnQgdXJsKCJiYXNpYy5jc3MiKTsKLQotLyogLS0gcGFnZSBsYXlvdXQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQot
Ym9keSB7Ci0gICAgZm9udC1mYW1pbHk6IHt7IGJhc2VfZm9udCB9fTsKLSAgICBmb250LXNpemU6
IDE3cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci0gICAgY29sb3I6ICMwMDA7Ci0g
ICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLWRpdi5kb2N1bWVudCB7Ci0gICAg
d2lkdGg6IHt7IHBhZ2Vfd2lkdGggfX07Ci0gICAgbWFyZ2luOiAzMHB4IGF1dG8gMCBhdXRvOwot
fQotCi1kaXYuZG9jdW1lbnR3cmFwcGVyIHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICB3aWR0aDog
MTAwJTsKLX0KLQotZGl2LmJvZHl3cmFwcGVyIHsKLSAgICBtYXJnaW46IDAgMCAwIHt7IHNpZGVi
YXJfd2lkdGggfX07Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFyIHsKLSAgICB3aWR0aDoge3sgc2lk
ZWJhcl93aWR0aCB9fTsKLX0KLQotaHIgewotICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXItdG9w
OiAxcHggc29saWQgI0IxQjRCNjsKLX0KLQotZGl2LmJvZHkgewotICAgIGJhY2tncm91bmQtY29s
b3I6ICNmZmZmZmY7Ci0gICAgY29sb3I6ICMzRTQzNDk7Ci0gICAgcGFkZGluZzogMCAzMHB4IDAg
MzBweDsKLX0KLQotaW1nLmZsb2F0aW5nZmxhc2sgewotICAgIHBhZGRpbmc6IDAgMCAxMHB4IDEw
cHg7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotfQotCi1kaXYuZm9vdGVyIHsKLSAgICB3aWR0aDoge3sg
cGFnZV93aWR0aCB9fTsKLSAgICBtYXJnaW46IDIwcHggYXV0byAzMHB4IGF1dG87Ci0gICAgZm9u
dC1zaXplOiAxNHB4OwotICAgIGNvbG9yOiAjODg4OwotICAgIHRleHQtYWxpZ246IHJpZ2h0Owot
fQotCi1kaXYuZm9vdGVyIGEgewotICAgIGNvbG9yOiAjODg4OwotfQotCi1kaXYucmVsYXRlZCB7
Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotZGl2LnNwaGlueHNpZGViYXIgYSB7Ci0gICAgY29s
b3I6ICM0NDQ7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGJvcmRlci1ib3R0b206
IDFweCBkb3R0ZWQgIzk5OTsKLX0KLQotZGl2LnNwaGlueHNpZGViYXIgYTpob3ZlciB7Ci0gICAg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5OTk7Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFyIHsK
LSAgICBmb250LXNpemU6IDE0cHg7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNTsKLX0KLQotZGl2LnNw
aGlueHNpZGViYXJ3cmFwcGVyIHsKLSAgICBwYWRkaW5nOiAxOHB4IDEwcHg7Ci19Ci0KLWRpdi5z
cGhpbnhzaWRlYmFyd3JhcHBlciBwLmxvZ28gewotICAgIHBhZGRpbmc6IDAgMCAyMHB4IDA7Ci0g
ICAgbWFyZ2luOiAwOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotZGl2LnNwaGlueHNp
ZGViYXIgaDMsCi1kaXYuc3BoaW54c2lkZWJhciBoNCB7Ci0gICAgZm9udC1mYW1pbHk6IHt7IGhl
YWRlcl9mb250IH19OwotICAgIGNvbG9yOiAjNDQ0OwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAg
ICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIG1hcmdpbjogMCAwIDVweCAwOwotICAgIHBhZGRp
bmc6IDA7Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFyIGg0IHsKLSAgICBmb250LXNpemU6IDIwcHg7
Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFyIGgzIGEgewotICAgIGNvbG9yOiAjNDQ0OwotfQotCi1k
aXYuc3BoaW54c2lkZWJhciBwLmxvZ28gYSwKLWRpdi5zcGhpbnhzaWRlYmFyIGgzIGEsCi1kaXYu
c3BoaW54c2lkZWJhciBwLmxvZ28gYTpob3ZlciwKLWRpdi5zcGhpbnhzaWRlYmFyIGgzIGE6aG92
ZXIgewotICAgIGJvcmRlcjogbm9uZTsKLX0KLQotZGl2LnNwaGlueHNpZGViYXIgcCB7Ci0gICAg
Y29sb3I6ICM1NTU7Ci0gICAgbWFyZ2luOiAxMHB4IDA7Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFy
IHVsIHsKLSAgICBtYXJnaW46IDEwcHggMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGNvbG9yOiAj
MDAwOwotfQotCi1kaXYuc3BoaW54c2lkZWJhciBpbnB1dCB7Ci0gICAgYm9yZGVyOiAxcHggc29s
aWQgI2NjYzsKLSAgICBmb250LWZhbWlseToge3sgYmFzZV9mb250IH19OwotICAgIGZvbnQtc2l6
ZTogMWVtOwotfQotCi0vKiAtLSBib2R5IHN0eWxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1hIHsKLSAgICBjb2xvcjog
e3sgbGlua19jb2xvciB9fTsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLX0KLQot
YTpob3ZlciB7Ci0gICAgY29sb3I6IHt7IGxpbmtfaG92ZXJfY29sb3IgfX07Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci19Ci0KLWEucmVmZXJlbmNlLmludGVybmFsIGVtIHsKLSAg
ICBmb250LXN0eWxlOiBub3JtYWw7Ci19Ci0KLWRpdi5ib2R5IGgxLAotZGl2LmJvZHkgaDIsCi1k
aXYuYm9keSBoMywKLWRpdi5ib2R5IGg0LAotZGl2LmJvZHkgaDUsCi1kaXYuYm9keSBoNiB7Ci0g
ICAgZm9udC1mYW1pbHk6IHt7IGhlYWRlcl9mb250IH19OwotICAgIGZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ci0gICAgbWFyZ2luOiAzMHB4IDBweCAxMHB4IDBweDsKLSAgICBwYWRkaW5nOiAwOwotfQot
Ci17JSBpZiB0aGVtZV9pbmRleF9sb2dvICV9Ci1kaXYuaW5kZXh3cmFwcGVyIGgxIHsKLSAgICB0
ZXh0LWluZGVudDogLTk5OTk5OXB4OwotICAgIGJhY2tncm91bmQ6IHVybCh7eyB0aGVtZV9pbmRl
eF9sb2dvIH19KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKLSAgICBoZWlnaHQ6IHt7IHRoZW1l
X2luZGV4X2xvZ29faGVpZ2h0IH19OwotfQoteyUgZWxzZSAlfQotZGl2LmluZGV4d3JhcHBlciBk
aXYuYm9keSBoMSB7Ci0gICAgZm9udC1zaXplOiAyMDAlOwotfQoteyUgZW5kaWYgJX0KLWRpdi5i
b2R5IGgxIHsgbWFyZ2luLXRvcDogMDsgcGFkZGluZy10b3A6IDA7IGZvbnQtc2l6ZTogMjQwJTsg
fQotZGl2LmJvZHkgaDIgeyBmb250LXNpemU6IDE4MCU7IH0KLWRpdi5ib2R5IGgzIHsgZm9udC1z
aXplOiAxNTAlOyB9Ci1kaXYuYm9keSBoNCB7IGZvbnQtc2l6ZTogMTMwJTsgfQotZGl2LmJvZHkg
aDUgeyBmb250LXNpemU6IDEwMCU7IH0KLWRpdi5ib2R5IGg2IHsgZm9udC1zaXplOiAxMDAlOyB9
Ci0KLWEuaGVhZGVybGluayB7Ci0gICAgY29sb3I6ICNkZGQ7Ci0gICAgcGFkZGluZzogMCA0cHg7
Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi1hLmhlYWRlcmxpbms6aG92ZXIgewot
ICAgIGNvbG9yOiAjNDQ0OwotICAgIGJhY2tncm91bmQ6ICNlYWVhZWE7Ci19Ci0KLWRpdi5ib2R5
IHAsIGRpdi5ib2R5IGRkLCBkaXYuYm9keSBsaSB7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwot
fQotCi1kaXYuYWRtb25pdGlvbiB7Ci0gICAgYmFja2dyb3VuZDogI2ZhZmFmYTsKLSAgICBtYXJn
aW46IDIwcHggLTMwcHg7Ci0gICAgcGFkZGluZzogMTBweCAzMHB4OwotICAgIGJvcmRlci10b3A6
IDFweCBzb2xpZCAjY2NjOwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjOwotfQot
Ci1kaXYuYWRtb25pdGlvbiB0dC54cmVmLCBkaXYuYWRtb25pdGlvbiBhIHR0IHsKLSAgICBib3Jk
ZXItYm90dG9tOiAxcHggc29saWQgI2ZhZmFmYTsKLX0KLQotZGQgZGl2LmFkbW9uaXRpb24gewot
ICAgIG1hcmdpbi1sZWZ0OiAtNjBweDsKLSAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7Ci19Ci0KLWRp
di5hZG1vbml0aW9uIHAuYWRtb25pdGlvbi10aXRsZSB7Ci0gICAgZm9udC1mYW1pbHk6IHt7IGhl
YWRlcl9mb250IH19OwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgZm9udC1zaXplOiAy
NHB4OwotICAgIG1hcmdpbjogMCAwIDEwcHggMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpbmUt
aGVpZ2h0OiAxOwotfQotCi1kaXYuYWRtb25pdGlvbiBwLmxhc3QgewotICAgIG1hcmdpbi1ib3R0
b206IDA7Ci19Ci0KLWRpdi5oaWdobGlnaHQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OwotfQotCi1kdDp0YXJnZXQsIC5oaWdobGlnaHQgewotICAgIGJhY2tncm91bmQ6ICNGQUYzRTg7
Ci19Ci0KLWRpdi5ub3RlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotICAgIGJvcmRl
cjogMXB4IHNvbGlkICNjY2M7Ci19Ci0KLWRpdi5zZWVhbHNvIHsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjZmZjOwotICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZjY7Ci19Ci0KLWRpdi50b3BpYyB7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKLX0KLQotcC5hZG1vbml0aW9uLXRpdGxlIHsK
LSAgICBkaXNwbGF5OiBpbmxpbmU7Ci19Ci0KLXAuYWRtb25pdGlvbi10aXRsZTphZnRlciB7Ci0g
ICAgY29udGVudDogIjoiOwotfQotCi1wcmUsIHR0LCBjb2RlIHsKLSAgICBmb250LWZhbWlseTog
J0NvbnNvbGFzJywgJ01lbmxvJywgJ0RlamEgVnUgU2FucyBNb25vJywgJ0JpdHN0cmVhbSBWZXJh
IFNhbnMgTW9ubycsIG1vbm9zcGFjZTsKLSAgICBmb250LXNpemU6IDAuOWVtOwotICAgIGJhY2tn
cm91bmQ6ICNlZWU7Ci19Ci0KLWltZy5zY3JlZW5zaG90IHsKLX0KLQotdHQuZGVzY25hbWUsIHR0
LmRlc2NjbGFzc25hbWUgewotICAgIGZvbnQtc2l6ZTogMC45NWVtOwotfQotCi10dC5kZXNjbmFt
ZSB7Ci0gICAgcGFkZGluZy1yaWdodDogMC4wOGVtOwotfQotCi1pbWcuc2NyZWVuc2hvdCB7Ci0g
ICAgLW1vei1ib3gtc2hhZG93OiAycHggMnB4IDRweCAjZWVlOwotICAgIC13ZWJraXQtYm94LXNo
YWRvdzogMnB4IDJweCA0cHggI2VlZTsKLSAgICBib3gtc2hhZG93OiAycHggMnB4IDRweCAjZWVl
OwotfQotCi10YWJsZS5kb2N1dGlscyB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzg4ODsKLSAg
ICAtbW96LWJveC1zaGFkb3c6IDJweCAycHggNHB4ICNlZWU7Ci0gICAgLXdlYmtpdC1ib3gtc2hh
ZG93OiAycHggMnB4IDRweCAjZWVlOwotICAgIGJveC1zaGFkb3c6IDJweCAycHggNHB4ICNlZWU7
Ci19Ci0KLXRhYmxlLmRvY3V0aWxzIHRkLCB0YWJsZS5kb2N1dGlscyB0aCB7Ci0gICAgYm9yZGVy
OiAxcHggc29saWQgIzg4ODsKLSAgICBwYWRkaW5nOiAwLjI1ZW0gMC43ZW07Ci19Ci0KLXRhYmxl
LmZpZWxkLWxpc3QsIHRhYmxlLmZvb3Rub3RlIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgLW1v
ei1ib3gtc2hhZG93OiBub25lOwotICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKLSAgICBi
b3gtc2hhZG93OiBub25lOwotfQotCi10YWJsZS5mb290bm90ZSB7Ci0gICAgbWFyZ2luOiAxNXB4
IDA7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTsKLSAgICBi
YWNrZ3JvdW5kOiAjZmRmZGZkOwotICAgIGZvbnQtc2l6ZTogMC45ZW07Ci19Ci0KLXRhYmxlLmZv
b3Rub3RlICsgdGFibGUuZm9vdG5vdGUgewotICAgIG1hcmdpbi10b3A6IC0xNXB4OwotICAgIGJv
cmRlci10b3A6IG5vbmU7Ci19Ci0KLXRhYmxlLmZpZWxkLWxpc3QgdGggewotICAgIHBhZGRpbmc6
IDAgMC44ZW0gMCAwOwotfQotCi10YWJsZS5maWVsZC1saXN0IHRkIHsKLSAgICBwYWRkaW5nOiAw
OwotfQotCi10YWJsZS5mb290bm90ZSB0ZC5sYWJlbCB7Ci0gICAgd2lkdGg6IDBweDsKLSAgICBw
YWRkaW5nOiAwLjNlbSAwIDAuM2VtIDAuNWVtOwotfQotCi10YWJsZS5mb290bm90ZSB0ZCB7Ci0g
ICAgcGFkZGluZzogMC4zZW0gMC41ZW07Ci19Ci0KLWRsIHsKLSAgICBtYXJnaW46IDA7Ci0gICAg
cGFkZGluZzogMDsKLX0KLQotZGwgZGQgewotICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwotfQotCi1i
bG9ja3F1b3RlIHsKLSAgICBtYXJnaW46IDAgMCAwIDMwcHg7Ci0gICAgcGFkZGluZzogMDsKLX0K
LQotdWwsIG9sIHsKLSAgICBtYXJnaW46IDEwcHggMCAxMHB4IDMwcHg7Ci0gICAgcGFkZGluZzog
MDsKLX0KLQotcHJlIHsKLSAgICBiYWNrZ3JvdW5kOiAjZWVlOwotICAgIHBhZGRpbmc6IDdweCAz
MHB4OwotICAgIG1hcmdpbjogMTVweCAtMzBweDsKLSAgICBsaW5lLWhlaWdodDogMS4zZW07Ci19
Ci0KLWRsIHByZSwgYmxvY2txdW90ZSBwcmUsIGxpIHByZSB7Ci0gICAgbWFyZ2luLWxlZnQ6IC02
MHB4OwotICAgIHBhZGRpbmctbGVmdDogNjBweDsKLX0KLQotZGwgZGwgcHJlIHsKLSAgICBtYXJn
aW4tbGVmdDogLTkwcHg7Ci0gICAgcGFkZGluZy1sZWZ0OiA5MHB4OwotfQotCi10dCB7Ci0gICAg
YmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMzsKLSAgICBjb2xvcjogIzIyMjsKLSAgICAvKiBwYWRk
aW5nOiAxcHggMnB4OyAqLwotfQotCi10dC54cmVmLCBhIHR0IHsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjRkJGQkZCOwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZTsKLX0KLQot
YS5yZWZlcmVuY2UgewotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBib3JkZXItYm90
dG9tOiAxcHggZG90dGVkIHt7IGxpbmtfY29sb3IgfX07Ci19Ci0KLWEucmVmZXJlbmNlOmhvdmVy
IHsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQge3sgbGlua19ob3Zlcl9jb2xvciB9fTsK
LX0KLQotYS5mb290bm90ZS1yZWZlcmVuY2UgewotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
LSAgICBmb250LXNpemU6IDAuN2VtOwotICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Ci0gICAgYm9y
ZGVyLWJvdHRvbTogMXB4IGRvdHRlZCB7eyBsaW5rX2NvbG9yIH19OwotfQotCi1hLmZvb3Rub3Rl
LXJlZmVyZW5jZTpob3ZlciB7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHt7IGxpbmtf
aG92ZXJfY29sb3IgfX07Ci19Ci0KLWE6aG92ZXIgdHQgewotICAgIGJhY2tncm91bmQ6ICNFRUU7
Ci19Ci0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODcwcHgpIHsKLQotICAgIGRp
di5zcGhpbnhzaWRlYmFyIHsKLSAgICAgICAgZGlzcGxheTogbm9uZTsKLSAgICB9Ci0KLSAgICBk
aXYuZG9jdW1lbnQgewotICAgICAgIHdpZHRoOiAxMDAlOwotCi0gICAgfQotCi0gICAgZGl2LmRv
Y3VtZW50d3JhcHBlciB7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiAwOwotICAgICAgICBtYXJnaW4t
dG9wOiAwOwotICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206
IDA7Ci0gICAgfQotCi0gICAgZGl2LmJvZHl3cmFwcGVyIHsKLSAgICAgICAgbWFyZ2luLXRvcDog
MDsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwotICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwot
ICAgICAgICBtYXJnaW4tbGVmdDogMDsKLSAgICB9Ci0KLSAgICB1bCB7Ci0gICAgICAgIG1hcmdp
bi1sZWZ0OiAwOwotICAgIH0KLQotICAgIC5kb2N1bWVudCB7Ci0gICAgICAgIHdpZHRoOiBhdXRv
OwotICAgIH0KLQotICAgIC5mb290ZXIgewotICAgICAgICB3aWR0aDogYXV0bzsKLSAgICB9Ci0K
LSAgICAuYm9keXdyYXBwZXIgewotICAgICAgICBtYXJnaW46IDA7Ci0gICAgfQotCi0gICAgLmZv
b3RlciB7Ci0gICAgICAgIHdpZHRoOiBhdXRvOwotICAgIH0KLQotICAgIC5naXRodWIgewotICAg
ICAgICBkaXNwbGF5OiBub25lOwotICAgIH0KLQotCi0KLX0KLQotCi0KLUBtZWRpYSBzY3JlZW4g
YW5kIChtYXgtd2lkdGg6IDg3NXB4KSB7Ci0KLSAgICBib2R5IHsKLSAgICAgICAgbWFyZ2luOiAw
OwotICAgICAgICBwYWRkaW5nOiAyMHB4IDMwcHg7Ci0gICAgfQotCi0gICAgZGl2LmRvY3VtZW50
d3JhcHBlciB7Ci0gICAgICAgIGZsb2F0OiBub25lOwotICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0
ZTsKLSAgICB9Ci0KLSAgICBkaXYuc3BoaW54c2lkZWJhciB7Ci0gICAgICAgIGRpc3BsYXk6IGJs
b2NrOwotICAgICAgICBmbG9hdDogbm9uZTsKLSAgICAgICAgd2lkdGg6IDEwMi41JTsKLSAgICAg
ICAgbWFyZ2luOiA1MHB4IC0zMHB4IC0yMHB4IC0zMHB4OwotICAgICAgICBwYWRkaW5nOiAxMHB4
IDIwcHg7Ci0gICAgICAgIGJhY2tncm91bmQ6ICMzMzM7Ci0gICAgICAgIGNvbG9yOiB3aGl0ZTsK
LSAgICB9Ci0KLSAgICBkaXYuc3BoaW54c2lkZWJhciBoMywgZGl2LnNwaGlueHNpZGViYXIgaDQs
IGRpdi5zcGhpbnhzaWRlYmFyIHAsCi0gICAgZGl2LnNwaGlueHNpZGViYXIgaDMgYSwgZGl2LnNw
aGlueHNpZGViYXIgdWwgewotICAgICAgICBjb2xvcjogd2hpdGU7Ci0gICAgfQotCi0gICAgZGl2
LnNwaGlueHNpZGViYXIgYSB7Ci0gICAgICAgIGNvbG9yOiAjYWFhOwotICAgIH0KLQotICAgIGRp
di5zcGhpbnhzaWRlYmFyIHAubG9nbyB7Ci0gICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgfQot
Ci0gICAgZGl2LmRvY3VtZW50IHsKLSAgICAgICAgd2lkdGg6IDEwMCU7Ci0gICAgICAgIG1hcmdp
bjogMDsKLSAgICB9Ci0KLSAgICBkaXYucmVsYXRlZCB7Ci0gICAgICAgIGRpc3BsYXk6IGJsb2Nr
OwotICAgICAgICBtYXJnaW46IDA7Ci0gICAgICAgIHBhZGRpbmc6IDEwcHggMCAyMHB4IDA7Ci0g
ICAgfQotCi0gICAgZGl2LnJlbGF0ZWQgdWwsCi0gICAgZGl2LnJlbGF0ZWQgdWwgbGkgewotICAg
ICAgICBtYXJnaW46IDA7Ci0gICAgICAgIHBhZGRpbmc6IDA7Ci0gICAgfQotCi0gICAgZGl2LmZv
b3RlciB7Ci0gICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgfQotCi0gICAgZGl2LmJvZHl3cmFw
cGVyIHsKLSAgICAgICAgbWFyZ2luOiAwOwotICAgIH0KLQotICAgIGRpdi5ib2R5IHsKLSAgICAg
ICAgbWluLWhlaWdodDogMDsKLSAgICAgICAgcGFkZGluZzogMDsKLSAgICB9Ci0KLSAgICAucnRk
X2RvY19mb290ZXIgewotICAgICAgICBkaXNwbGF5OiBub25lOwotICAgIH0KLQotICAgIC5kb2N1
bWVudCB7Ci0gICAgICAgIHdpZHRoOiBhdXRvOwotICAgIH0KLQotICAgIC5mb290ZXIgewotICAg
ICAgICB3aWR0aDogYXV0bzsKLSAgICB9Ci0KLSAgICAuZm9vdGVyIHsKLSAgICAgICAgd2lkdGg6
IGF1dG87Ci0gICAgfQotCi0gICAgLmdpdGh1YiB7Ci0gICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0g
ICAgfQotfQotCi0vKiBtaXNjLiAqLwotCi0ucmV2c3lzLWlubGluZSB7Ci0gICAgZGlzcGxheTog
bm9uZSFpbXBvcnRhbnQ7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1l
cy9mbGFzay9zdGF0aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1l
cy9mbGFzay9zdGF0aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI4NDc0Zjk3MGVhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9f
dGhlbWVzL2ZsYXNrL3N0YXRpYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRp
Yy9mbGFza3kuY3NzX3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2Zs
YXNrL3RoZW1lLmNvbmYgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay90aGVtZS5j
b25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzJiMDAyODM5MzAuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay90aGVtZS5jb25mCisr
KyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1bdGhlbWVdCi1pbmhlcml0ID0gYmFzaWMKLXN0
eWxlc2hlZXQgPSBmbGFza3kuY3NzCi1weWdtZW50c19zdHlsZSA9IGZsYXNrX3RoZW1lX3N1cHBv
cnQuRmxhc2t5U3R5bGUKLQotW29wdGlvbnNdCi1pbmRleF9sb2dvID0gJycKLWluZGV4X2xvZ29f
aGVpZ2h0ID0gMTIwcHgKLXRvdWNoX2ljb24gPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL190aGVtZXMvZmxhc2svdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3Ro
ZW1lcy9mbGFzay93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDM2MjZhYmEzNmY2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVt
ZXMvZmxhc2svdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay9sYXlvdXQuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3JlbGF0aW9ucy5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL190aGVtZXMvZmxhc2svdGhlbWUuY29uZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL190aGVtZXMvZmxhc2tfdGhlbWVfc3VwcG9ydC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9fdGhlbWVzL2ZsYXNrX3RoZW1lX3N1cHBvcnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDBkY2Y1M2I3NTQyYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9fdGhlbWVzL2ZsYXNrX3RoZW1lX3N1cHBvcnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4
OSArMCwwIEBACi0jIGZsYXNreSBleHRlbnNpb25zLiAgZmxhc2t5IHB5Z21lbnRzIHN0eWxlIGJh
c2VkIG9uIHRhbmdvIHN0eWxlCi1mcm9tIHB5Z21lbnRzLnN0eWxlIGltcG9ydCBTdHlsZQotZnJv
bSBweWdtZW50cy50b2tlbiBpbXBvcnQgKAotICAgIEtleXdvcmQsCi0gICAgTmFtZSwKLSAgICBD
b21tZW50LAotICAgIFN0cmluZywKLSAgICBFcnJvciwKLSAgICBOdW1iZXIsCi0gICAgT3BlcmF0
b3IsCi0gICAgR2VuZXJpYywKLSAgICBXaGl0ZXNwYWNlLAotICAgIFB1bmN0dWF0aW9uLAotICAg
IE90aGVyLAotICAgIExpdGVyYWwsCi0pCi0KLQotY2xhc3MgRmxhc2t5U3R5bGUoU3R5bGUpOgot
ICAgIGJhY2tncm91bmRfY29sb3IgPSAiI2Y4ZjhmOCIKLSAgICBkZWZhdWx0X3N0eWxlID0gIiIK
LQotICAgIHN0eWxlcyA9IHsKLSAgICAgICAgIyBObyBjb3JyZXNwb25kaW5nIGNsYXNzIGZvciB0
aGUgZm9sbG93aW5nOgotICAgICAgICAjIFRleHQ6ICAgICAgICAgICAgICAgICAgICAgIiIsICMg
Y2xhc3M6ICAnJwotICAgICAgICBXaGl0ZXNwYWNlOiAidW5kZXJsaW5lICNmOGY4ZjgiLCAgIyBj
bGFzczogJ3cnCi0gICAgICAgIEVycm9yOiAiI2E0MDAwMCBib3JkZXI6I2VmMjkyOSIsICAjIGNs
YXNzOiAnZXJyJwotICAgICAgICBPdGhlcjogIiMwMDAwMDAiLCAgIyBjbGFzcyAneCcKLSAgICAg
ICAgQ29tbWVudDogIml0YWxpYyAjOGY1OTAyIiwgICMgY2xhc3M6ICdjJwotICAgICAgICBDb21t
ZW50LlByZXByb2M6ICJub2l0YWxpYyIsICAjIGNsYXNzOiAnY3AnCi0gICAgICAgIEtleXdvcmQ6
ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ2snCi0gICAgICAgIEtleXdvcmQuQ29uc3RhbnQ6
ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ2tjJwotICAgICAgICBLZXl3b3JkLkRlY2xhcmF0
aW9uOiAiYm9sZCAjMDA0NDYxIiwgICMgY2xhc3M6ICdrZCcKLSAgICAgICAgS2V5d29yZC5OYW1l
c3BhY2U6ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ2tuJwotICAgICAgICBLZXl3b3JkLlBz
ZXVkbzogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAna3AnCi0gICAgICAgIEtleXdvcmQuUmVz
ZXJ2ZWQ6ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ2tyJwotICAgICAgICBLZXl3b3JkLlR5
cGU6ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ2t0JwotICAgICAgICBPcGVyYXRvcjogIiM1
ODI4MDAiLCAgIyBjbGFzczogJ28nCi0gICAgICAgIE9wZXJhdG9yLldvcmQ6ICJib2xkICMwMDQ0
NjEiLCAgIyBjbGFzczogJ293JyAtIGxpa2Uga2V5d29yZHMKLSAgICAgICAgUHVuY3R1YXRpb246
ICJib2xkICMwMDAwMDAiLCAgIyBjbGFzczogJ3AnCi0gICAgICAgICMgYmVjYXVzZSBzcGVjaWFs
IG5hbWVzIHN1Y2ggYXMgTmFtZS5DbGFzcywgTmFtZS5GdW5jdGlvbiwgZXRjLgotICAgICAgICAj
IGFyZSBub3QgcmVjb2duaXplZCBhcyBzdWNoIGxhdGVyIGluIHRoZSBwYXJzaW5nLCB3ZSBjaG9v
c2UgdGhlbQotICAgICAgICAjIHRvIGxvb2sgdGhlIHNhbWUgYXMgb3JkaW5hcnkgdmFyaWFibGVz
LgotICAgICAgICBOYW1lOiAiIzAwMDAwMCIsICAjIGNsYXNzOiAnbicKLSAgICAgICAgTmFtZS5B
dHRyaWJ1dGU6ICIjYzRhMDAwIiwgICMgY2xhc3M6ICduYScgLSB0byBiZSByZXZpc2VkCi0gICAg
ICAgIE5hbWUuQnVpbHRpbjogIiMwMDQ0NjEiLCAgIyBjbGFzczogJ25iJwotICAgICAgICBOYW1l
LkJ1aWx0aW4uUHNldWRvOiAiIzM0NjVhNCIsICAjIGNsYXNzOiAnYnAnCi0gICAgICAgIE5hbWUu
Q2xhc3M6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICduYycgLSB0byBiZSByZXZpc2VkCi0gICAgICAg
IE5hbWUuQ29uc3RhbnQ6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICdubycgLSB0byBiZSByZXZpc2Vk
Ci0gICAgICAgIE5hbWUuRGVjb3JhdG9yOiAiIzg4OCIsICAjIGNsYXNzOiAnbmQnIC0gdG8gYmUg
cmV2aXNlZAotICAgICAgICBOYW1lLkVudGl0eTogIiNjZTVjMDAiLCAgIyBjbGFzczogJ25pJwot
ICAgICAgICBOYW1lLkV4Y2VwdGlvbjogImJvbGQgI2NjMDAwMCIsICAjIGNsYXNzOiAnbmUnCi0g
ICAgICAgIE5hbWUuRnVuY3Rpb246ICIjMDAwMDAwIiwgICMgY2xhc3M6ICduZicKLSAgICAgICAg
TmFtZS5Qcm9wZXJ0eTogIiMwMDAwMDAiLCAgIyBjbGFzczogJ3B5JwotICAgICAgICBOYW1lLkxh
YmVsOiAiI2Y1NzkwMCIsICAjIGNsYXNzOiAnbmwnCi0gICAgICAgIE5hbWUuTmFtZXNwYWNlOiAi
IzAwMDAwMCIsICAjIGNsYXNzOiAnbm4nIC0gdG8gYmUgcmV2aXNlZAotICAgICAgICBOYW1lLk90
aGVyOiAiIzAwMDAwMCIsICAjIGNsYXNzOiAnbngnCi0gICAgICAgIE5hbWUuVGFnOiAiYm9sZCAj
MDA0NDYxIiwgICMgY2xhc3M6ICdudCcgLSBsaWtlIGEga2V5d29yZAotICAgICAgICBOYW1lLlZh
cmlhYmxlOiAiIzAwMDAwMCIsICAjIGNsYXNzOiAnbnYnIC0gdG8gYmUgcmV2aXNlZAotICAgICAg
ICBOYW1lLlZhcmlhYmxlLkNsYXNzOiAiIzAwMDAwMCIsICAjIGNsYXNzOiAndmMnIC0gdG8gYmUg
cmV2aXNlZAotICAgICAgICBOYW1lLlZhcmlhYmxlLkdsb2JhbDogIiMwMDAwMDAiLCAgIyBjbGFz
czogJ3ZnJyAtIHRvIGJlIHJldmlzZWQKLSAgICAgICAgTmFtZS5WYXJpYWJsZS5JbnN0YW5jZTog
IiMwMDAwMDAiLCAgIyBjbGFzczogJ3ZpJyAtIHRvIGJlIHJldmlzZWQKLSAgICAgICAgTnVtYmVy
OiAiIzk5MDAwMCIsICAjIGNsYXNzOiAnbScKLSAgICAgICAgTGl0ZXJhbDogIiMwMDAwMDAiLCAg
IyBjbGFzczogJ2wnCi0gICAgICAgIExpdGVyYWwuRGF0ZTogIiMwMDAwMDAiLCAgIyBjbGFzczog
J2xkJwotICAgICAgICBTdHJpbmc6ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzJwotICAgICAgICBT
dHJpbmcuQmFja3RpY2s6ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzYicKLSAgICAgICAgU3RyaW5n
LkNoYXI6ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzYycKLSAgICAgICAgU3RyaW5nLkRvYzogIml0
YWxpYyAjOGY1OTAyIiwgICMgY2xhc3M6ICdzZCcgLSBsaWtlIGEgY29tbWVudAotICAgICAgICBT
dHJpbmcuRG91YmxlOiAiIzRlOWEwNiIsICAjIGNsYXNzOiAnczInCi0gICAgICAgIFN0cmluZy5F
c2NhcGU6ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzZScKLSAgICAgICAgU3RyaW5nLkhlcmVkb2M6
ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzaCcKLSAgICAgICAgU3RyaW5nLkludGVycG9sOiAiIzRl
OWEwNiIsICAjIGNsYXNzOiAnc2knCi0gICAgICAgIFN0cmluZy5PdGhlcjogIiM0ZTlhMDYiLCAg
IyBjbGFzczogJ3N4JwotICAgICAgICBTdHJpbmcuUmVnZXg6ICIjNGU5YTA2IiwgICMgY2xhc3M6
ICdzcicKLSAgICAgICAgU3RyaW5nLlNpbmdsZTogIiM0ZTlhMDYiLCAgIyBjbGFzczogJ3MxJwot
ICAgICAgICBTdHJpbmcuU3ltYm9sOiAiIzRlOWEwNiIsICAjIGNsYXNzOiAnc3MnCi0gICAgICAg
IEdlbmVyaWM6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICdnJwotICAgICAgICBHZW5lcmljLkRlbGV0
ZWQ6ICIjYTQwMDAwIiwgICMgY2xhc3M6ICdnZCcKLSAgICAgICAgR2VuZXJpYy5FbXBoOiAiaXRh
bGljICMwMDAwMDAiLCAgIyBjbGFzczogJ2dlJwotICAgICAgICBHZW5lcmljLkVycm9yOiAiI2Vm
MjkyOSIsICAjIGNsYXNzOiAnZ3InCi0gICAgICAgIEdlbmVyaWMuSGVhZGluZzogImJvbGQgIzAw
MDA4MCIsICAjIGNsYXNzOiAnZ2gnCi0gICAgICAgIEdlbmVyaWMuSW5zZXJ0ZWQ6ICIjMDBBMDAw
IiwgICMgY2xhc3M6ICdnaScKLSAgICAgICAgR2VuZXJpYy5PdXRwdXQ6ICIjODg4IiwgICMgY2xh
c3M6ICdnbycKLSAgICAgICAgR2VuZXJpYy5Qcm9tcHQ6ICIjNzQ1MzM0IiwgICMgY2xhc3M6ICdn
cCcKLSAgICAgICAgR2VuZXJpYy5TdHJvbmc6ICJib2xkICMwMDAwMDAiLCAgIyBjbGFzczogJ2dz
JwotICAgICAgICBHZW5lcmljLlN1YmhlYWRpbmc6ICJib2xkICM4MDAwODAiLCAgIyBjbGFzczog
J2d1JwotICAgICAgICBHZW5lcmljLlRyYWNlYmFjazogImJvbGQgI2E0MDAwMCIsICAjIGNsYXNz
OiAnZ3QnCi0gICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1NjU0OGQwZGE3Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1l
cy9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvUkVBRE1FCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL190aGVtZXMvZmxhc2tfdGhlbWVfc3VwcG9ydC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fkb3B0LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hZG9wdC5yc3QK
aW5kZXggNzEwZjQzMWJlMzBiLi44MmUyMTExZWQzYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hZG9wdC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fkb3B0LnJzdApAQCAt
MjQsMTEgKzI0LDkgQEAgVGhlIGlkZWFsIHB5dGVzdCBoZWxwZXIKICAtIGZlZWxzIGNvbmZpZGVu
dCBpbiB1c2luZyBweXRlc3QgKGUuZy4gaGFzIGV4cGxvcmVkIGNvbW1hbmQgbGluZSBvcHRpb25z
LCBrbm93cyBob3cgdG8gd3JpdGUgcGFyYW1ldHJpemVkIHRlc3RzLCBoYXMgYW4gaWRlYSBhYm91
dCBjb25mdGVzdCBjb250ZW50cykKICAtIGRvZXMgbm90IG5lZWQgdG8gYmUgYW4gZXhwZXJ0IGlu
IGV2ZXJ5IGFzcGVjdCEKIAotYFB5dGVzdCBoZWxwZXJzLCBzaWduIHVwIGhlcmVgXyEgKHByZWZl
cmFibHkgaW4gRmVicnVhcnksIGhhcmQgZGVhZGxpbmUgMjIgTWFyY2gpCitQeXRlc3QgaGVscGVy
cywgc2lnbiB1cCBoZXJlISAocHJlZmVyYWJseSBpbiBGZWJydWFyeSwgaGFyZCBkZWFkbGluZSAy
MiBNYXJjaCkKIAogCi0uLiBfYFB5dGVzdCBoZWxwZXJzLCBzaWduIHVwIGhlcmVgOiBodHRwOi8v
Z29vLmdsL2Zvcm1zL254cUFocVd0MVAKLQogCiBUaGUgaWRlYWwgcGFydG5lciBwcm9qZWN0CiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDAsMTYgKzM4LDE0
IEBAIFRoZSBpZGVhbCBwYXJ0bmVyIHByb2plY3QKICAtIGhhcyB0aGUgc3VwcG9ydCBvZiB0aGUg
Y29yZSBkZXZlbG9wbWVudCB0ZWFtLCBpbiB0cnlpbmcgb3V0IHB5dGVzdCBhZG9wdGlvbgogIC0g
aGFzIG5vIHRlc3RzLi4uIG9yIDEwMCUgdGVzdCBjb3ZlcmFnZS4uLiBvciBzb21ld2hlcmUgaW4g
YmV0d2VlbiEKIAotYFBhcnRuZXIgcHJvamVjdHMsIHNpZ24gdXAgaGVyZWBfISAoYnkgMjIgTWFy
Y2gpCi0KK1BhcnRuZXIgcHJvamVjdHMsIHNpZ24gdXAgaGVyZSEgKGJ5IDIyIE1hcmNoKQogCi0u
LiBfYFBhcnRuZXIgcHJvamVjdHMsIHNpZ24gdXAgaGVyZWA6ICBodHRwOi8vZ29vLmdsL2Zvcm1z
L1pHeXFsSGl3azMKIAogCiBXaGF0IGRvZXMgaXQgbWVhbiB0byAiYWRvcHQgcHl0ZXN0Ij8KIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoZXJlIGNhbiBiZSBt
YW55IGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiAic3VjY2VzcyIuIFB5dGVzdCBjYW4gcnVuIG1h
bnkgYG5vc2UgYW5kIHVuaXR0ZXN0YF8gdGVzdHMgYnkgZGVmYXVsdCwgc28gdXNpbmcgcHl0ZXN0
IGFzIHlvdXIgdGVzdHJ1bm5lciBtYXkgYmUgcG9zc2libGUgZnJvbSBkYXkgMS4gSm9iIGRvbmUs
IHJpZ2h0PworVGhlcmUgY2FuIGJlIG1hbnkgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mICJzdWNj
ZXNzIi4gUHl0ZXN0IGNhbiBydW4gbWFueSBub3NlXyBhbmQgdW5pdHRlc3RfIHRlc3RzIGJ5IGRl
ZmF1bHQsIHNvIHVzaW5nIHB5dGVzdCBhcyB5b3VyIHRlc3RydW5uZXIgbWF5IGJlIHBvc3NpYmxl
IGZyb20gZGF5IDEuIEpvYiBkb25lLCByaWdodD8KIAogUHJvZ3Jlc3NpdmUgc3VjY2VzcyBtaWdo
dCBsb29rIGxpa2U6CiAKQEAgLTY3LDEyICs2MywxMyBAQCBQcm9ncmVzc2l2ZSBzdWNjZXNzIG1p
Z2h0IGxvb2sgbGlrZToKIAogSXQgbWF5IGJlIGFmdGVyIHRoZSBtb250aCBpcyB1cCwgdGhlIHBh
cnRuZXIgcHJvamVjdCBkZWNpZGVzIHRoYXQgcHl0ZXN0IGlzIG5vdCByaWdodCBmb3IgaXQuIFRo
YXQncyBva2F5IC0gaG9wZWZ1bGx5IHRoZSBweXRlc3QgdGVhbSB3aWxsIGFsc28gbGVhcm4gc29t
ZXRoaW5nIGFib3V0IGl0cyB3ZWFrbmVzc2VzIG9yIGRlZmljaWVuY2llcy4KIAotLi4gX2Bub3Nl
IGFuZCB1bml0dGVzdGA6IGZhcS5odG1sI2hvdy1kb2VzLXB5dGVzdC1yZWxhdGUtdG8tbm9zZS1h
bmQtdW5pdHRlc3QKLS4uIF9hc3NlcnQ6IGFzc2VydHMuaHRtbAorLi4gX25vc2U6IG5vc2UuaHRt
bAorLi4gX3VuaXR0ZXN0OiB1bml0dGVzdC5odG1sCisuLiBfYXNzZXJ0OiBhc3NlcnQuaHRtbAog
Li4gX3B5Y21kOiBodHRwczovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHljbWQvb3ZlcnZpZXcKIC4u
IF9gc2V0VXAvdGVhckRvd24gbWV0aG9kc2A6IHh1bml0X3NldHVwLmh0bWwKIC4uIF9maXh0dXJl
czogZml4dHVyZS5odG1sCi0uLiBfbWFya2VyczogbWFya2Vycy5odG1sCisuLiBfbWFya2Vyczog
bWFyay5odG1sCiAuLiBfZGlzdHJpYnV0ZWQ6IHhkaXN0Lmh0bWwKIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL2luZGV4LnJzdAppbmRleCAxMDdmY2QyYWQzM2YuLmJkYTM4OWNkOGJlYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL2luZGV4LnJzdAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvaW5kZXgucnN0CkBAIC02LDYgKzYsNzIgQEAgUmVsZWFz
ZSBhbm5vdW5jZW1lbnRzCiAgICA6bWF4ZGVwdGg6IDIKIAogCisgICByZWxlYXNlLTYuMS4xCisg
ICByZWxlYXNlLTYuMS4wCisgICByZWxlYXNlLTYuMC4yCisgICByZWxlYXNlLTYuMC4xCisgICBy
ZWxlYXNlLTYuMC4wCisgICByZWxlYXNlLTYuMC4wcmMxCisgICByZWxlYXNlLTUuNC4zCisgICBy
ZWxlYXNlLTUuNC4yCisgICByZWxlYXNlLTUuNC4xCisgICByZWxlYXNlLTUuNC4wCisgICByZWxl
YXNlLTUuMy41CisgICByZWxlYXNlLTUuMy40CisgICByZWxlYXNlLTUuMy4zCisgICByZWxlYXNl
LTUuMy4yCisgICByZWxlYXNlLTUuMy4xCisgICByZWxlYXNlLTUuMy4wCisgICByZWxlYXNlLTUu
Mi40CisgICByZWxlYXNlLTUuMi4zCisgICByZWxlYXNlLTUuMi4yCisgICByZWxlYXNlLTUuMi4x
CisgICByZWxlYXNlLTUuMi4wCisgICByZWxlYXNlLTUuMS4zCisgICByZWxlYXNlLTUuMS4yCisg
ICByZWxlYXNlLTUuMS4xCisgICByZWxlYXNlLTUuMS4wCisgICByZWxlYXNlLTUuMC4xCisgICBy
ZWxlYXNlLTUuMC4wCisgICByZWxlYXNlLTQuNi45CisgICByZWxlYXNlLTQuNi44CisgICByZWxl
YXNlLTQuNi43CisgICByZWxlYXNlLTQuNi42CisgICByZWxlYXNlLTQuNi41CisgICByZWxlYXNl
LTQuNi40CisgICByZWxlYXNlLTQuNi4zCisgICByZWxlYXNlLTQuNi4yCisgICByZWxlYXNlLTQu
Ni4xCisgICByZWxlYXNlLTQuNi4wCisgICByZWxlYXNlLTQuNS4wCisgICByZWxlYXNlLTQuNC4y
CisgICByZWxlYXNlLTQuNC4xCisgICByZWxlYXNlLTQuNC4wCisgICByZWxlYXNlLTQuMy4xCisg
ICByZWxlYXNlLTQuMy4wCisgICByZWxlYXNlLTQuMi4xCisgICByZWxlYXNlLTQuMi4wCisgICBy
ZWxlYXNlLTQuMS4xCisgICByZWxlYXNlLTQuMS4wCisgICByZWxlYXNlLTQuMC4yCisgICByZWxl
YXNlLTQuMC4xCisgICByZWxlYXNlLTQuMC4wCisgICByZWxlYXNlLTMuMTAuMQorICAgcmVsZWFz
ZS0zLjEwLjAKKyAgIHJlbGVhc2UtMy45LjMKKyAgIHJlbGVhc2UtMy45LjIKKyAgIHJlbGVhc2Ut
My45LjEKKyAgIHJlbGVhc2UtMy45LjAKKyAgIHJlbGVhc2UtMy44LjIKKyAgIHJlbGVhc2UtMy44
LjEKKyAgIHJlbGVhc2UtMy44LjAKKyAgIHJlbGVhc2UtMy43LjQKKyAgIHJlbGVhc2UtMy43LjMK
KyAgIHJlbGVhc2UtMy43LjIKKyAgIHJlbGVhc2UtMy43LjEKKyAgIHJlbGVhc2UtMy43LjAKKyAg
IHJlbGVhc2UtMy42LjQKKyAgIHJlbGVhc2UtMy42LjMKICAgIHJlbGVhc2UtMy42LjIKICAgIHJl
bGVhc2UtMy42LjEKICAgIHJlbGVhc2UtMy42LjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuMC4wLnJzdAppbmRleCBhZjc0NWZjNTliMjguLjFhYWFkNzQwYTRmYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4wLjAucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4wLnJzdApAQCAt
Nyw3ICs3LDcgQEAgc2VlIGJlbG93IGZvciBzdW1tYXJ5IGFuZCBkZXRhaWxlZCBsaXN0cy4gIEEg
bG90IG9mIGxvbmctZGVwcmVjYXRlZCBjb2RlCiBoYXMgYmVlbiByZW1vdmVkLCByZXN1bHRpbmcg
aW4gYSBtdWNoIHNtYWxsZXIgYW5kIGNsZWFuZXIKIGltcGxlbWVudGF0aW9uLiAgU2VlIHRoZSBu
ZXcgZG9jcyB3aXRoIGV4YW1wbGVzIGhlcmU6CiAKLSAgICBodHRwOi8vcHl0ZXN0Lm9yZy8yLjAu
MC9pbmRleC5odG1sCisgICAgaHR0cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL2luZGV4Lmh0bWwK
IAogQSBub3RlIG9uIHBhY2thZ2luZzogcHl0ZXN0IHVzZWQgdG8gcGFydCBvZiB0aGUgInB5IiBk
aXN0cmlidXRpb24gdXAKIHVudGlsIHZlcnNpb24gcHktMS4zLjQgYnV0IHRoaXMgaGFzIGNoYW5n
ZWQgbm93OiAgcHl0ZXN0LTIuMC4wIG9ubHkKQEAgLTM2LDEyICszNiwxMiBAQCBOZXcgRmVhdHVy
ZXMKIAogICAgIGltcG9ydCBweXRlc3QgOyBweXRlc3QubWFpbihhcmdsaXN0LCBwbHVnaW5saXN0
KQogCi0gIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy8yLjAuMC91c2FnZS5odG1sIGZvciBkZXRhaWxz
LgorICBzZWUgaHR0cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL3VzYWdlLmh0bWwgZm9yIGRldGFp
bHMuCiAKIC0gbmV3IGFuZCBiZXR0ZXIgcmVwb3J0aW5nIGluZm9ybWF0aW9uIGluIGFzc2VydCBl
eHByZXNzaW9ucwogICBpZiBjb21wYXJpbmcgbGlzdHMsIHNlcXVlbmNlcyBvciBzdHJpbmdzLgog
Ci0gIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy8yLjAuMC9hc3NlcnQuaHRtbCNuZXdyZXBvcnQKKyAg
c2VlIGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS9hc3NlcnQuaHRtbCNuZXdyZXBvcnQKIAog
LSBuZXcgY29uZmlndXJhdGlvbiB0aHJvdWdoIGluaS1maWxlcyAoc2V0dXAuY2ZnIG9yIHRveC5p
bmkgcmVjb2duaXplZCksCiAgIGZvciBleGFtcGxlOjoKQEAgLTUwLDcgKzUwLDcgQEAgTmV3IEZl
YXR1cmVzCiAgICAgbm9yZWN1cnNlZGlycyA9IC5oZyBkYXRhKiAgIyBkb24ndCBldmVyIHJlY3Vy
c2UgaW4gc3VjaCBkaXJzCiAgICAgYWRkb3B0cyA9IC14IC0tcHlhcmdzICAgICAgIyBhZGQgdGhl
c2UgY29tbWFuZCBsaW5lIG9wdGlvbnMgYnkgZGVmYXVsdAogCi0gIHNlZSBodHRwOi8vcHl0ZXN0
Lm9yZy8yLjAuMC9jdXN0b21pemUuaHRtbAorICBzZWUgaHR0cDovL3B5dGVzdC5vcmcvZW4vc3Rh
YmxlL2N1c3RvbWl6ZS5odG1sCiAKIC0gaW1wcm92ZWQgc3RhbmRhcmQgdW5pdHRlc3Qgc3VwcG9y
dC4gIEluIGdlbmVyYWwgcHkudGVzdCBzaG91bGQgbm93CiAgIGJldHRlciBiZSBhYmxlIHRvIHJ1
biBjdXN0b20gdW5pdHRlc3QuVGVzdENhc2VzIGxpa2UgdHdpc3RlZCB0cmlhbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4wLjEucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4wLjEucnN0CmluZGV4IDJmNDFlZjk0MzVl
ZC4uNzI0MDFkODA5OGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjAuMS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMi4wLjEucnN0CkBAIC01Nyw3ICs1Nyw3IEBAIENoYW5nZXMgYmV0d2VlbiAyLjAuMCBhbmQg
Mi4wLjEKIC0gcmVmaW5lbWVudHMgdG8gImNvbGxlY3RpbmciIG91dHB1dCBvbiBub24tdHR5cwog
LSByZWZpbmUgaW50ZXJuYWwgcGx1Z2luIHJlZ2lzdHJhdGlvbiBhbmQgLS10cmFjZWNvbmZpZyBv
dXRwdXQKIC0gaW50cm9kdWNlIGEgbWVjaGFuaXNtIHRvIHByZXZlbnQvdW5yZWdpc3RlciBwbHVn
aW5zIGZyb20gdGhlCi0gIGNvbW1hbmQgbGluZSwgc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVz
dC9wbHVnaW5zLmh0bWwjY21kdW5yZWdpc3RlcgorICBjb21tYW5kIGxpbmUsIHNlZSBodHRwOi8v
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvcGx1Z2lucy5odG1sI2NtZHVucmVnaXN0ZXIKIC0gYWN0aXZh
dGUgcmVzdWx0bG9nIHBsdWdpbiBieSBkZWZhdWx0CiAtIGZpeCByZWdyZXNzaW9uIHdydCB5aWVs
ZGVkIHRlc3RzIHdoaWNoIGR1ZSB0byB0aGUKICAgY29sbGVjdGlvbi1iZWZvcmUtcnVubmluZyBz
ZW1hbnRpY3Mgd2VyZSBub3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuMS4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTIuMS4wLnJzdAppbmRleCA4MzE1NDhhYzJmZjQuLjI5NDYzYWI1MzNlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4xLjAucnN0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4wLnJzdApAQCAtMTIsNyArMTIsNyBA
QCBjb3VydGVzeSBvZiBCZW5qYW1pbiBQZXRlcnNvbi4gIFlvdSBjYW4gbm93IHNhZmVseSB1c2Ug
YGBhc3NlcnRgYAogc3RhdGVtZW50cyBpbiB0ZXN0IG1vZHVsZXMgd2l0aG91dCBoYXZpbmcgdG8g
d29ycnkgYWJvdXQgc2lkZSBlZmZlY3RzCiBvciBweXRob24gb3B0aW1pemF0aW9uICgiLU9PIikg
b3B0aW9ucy4gIFRoaXMgaXMgYWNoaWV2ZWQgYnkgcmV3cml0aW5nCiBhc3NlcnQgc3RhdGVtZW50
cyBpbiB0ZXN0IG1vZHVsZXMgdXBvbiBpbXBvcnQsIHVzaW5nIGEgUEVQMzAyIGhvb2suCi1TZWUg
aHR0cDovL3B5dGVzdC5vcmcvYXNzZXJ0Lmh0bWwjYWR2YW5jZWQtYXNzZXJ0aW9uLWludHJvc3Bl
Y3Rpb24gZm9yCitTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2Fzc2VydC5o
dG1sIGZvcgogZGV0YWlsZWQgaW5mb3JtYXRpb24uICBUaGUgd29yayBoYXMgYmVlbiBwYXJ0bHkg
c3BvbnNvcmVkIGJ5IG15IGNvbXBhbnksCiBtZXJsaW51eCBHbWJILgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjIuMC5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjIuMC5yc3QKaW5kZXggMjBiZmUwYTE5MTU3Li4w
MTkzZmZiMzQ2NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuMi4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0y
LjIuMC5yc3QKQEAgLTksNyArOSw3IEBAIHdpdGggdGhlc2UgaW1wcm92ZW1lbnRzOgogCiAgIC0g
bmV3IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSBkZWNvcmF0b3IgdG8gcnVuIHRlc3RzIHdpdGgg
ZGlmZmVyZW50IGFyZ3VtZW50cwogICAtIG5ldyBtZXRhZnVuYy5wYXJhbWV0cml6ZSgpIEFQSSBm
b3IgcGFyYW1ldHJpemluZyBhcmd1bWVudHMgaW5kZXBlbmRlbnRseQotICAtIHNlZSBleGFtcGxl
cyBhdCBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZXhhbXBsZS9wYXJhbWV0cml6ZS5odG1sCisg
IC0gc2VlIGV4YW1wbGVzIGF0IGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS9leGFtcGxlL3Bh
cmFtZXRyaXplLmh0bWwKICAgLSBOT1RFIHRoYXQgcGFyYW1ldHJpemUoKSByZWxhdGVkIEFQSXMg
YXJlIHN0aWxsIGEgYml0IGV4cGVyaW1lbnRhbAogICAgIGFuZCBtaWdodCBjaGFuZ2UgaW4gZnV0
dXJlIHJlbGVhc2VzLgogCkBAIC0xOCw3ICsxOCw3IEBAIHdpdGggdGhlc2UgaW1wcm92ZW1lbnRz
OgogICAtICItbSBtYXJrZXhwciIgb3B0aW9uIGZvciBzZWxlY3RpbmcgdGVzdHMgYWNjb3JkaW5n
IHRvIHRoZWlyIG1hcmsKICAgLSBhIG5ldyAibWFya2VycyIgaW5pLXZhcmlhYmxlIGZvciByZWdp
c3RlcmluZyB0ZXN0IG1hcmtlcnMgZm9yIHlvdXIgcHJvamVjdAogICAtIHRoZSBuZXcgIi0tc3Ry
aWN0IiBiYWlscyBvdXQgd2l0aCBhbiBlcnJvciBpZiB1c2luZyB1bnJlZ2lzdGVyZWQgbWFya2Vy
cy4KLSAgLSBzZWUgZXhhbXBsZXMgYXQgaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L2V4YW1wbGUv
bWFya2Vycy5odG1sCisgIC0gc2VlIGV4YW1wbGVzIGF0IGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0
YWJsZS9leGFtcGxlL21hcmtlcnMuaHRtbAogCiAqIGR1cmF0aW9uIHByb2ZpbGluZzogbmV3ICIt
LWR1cmF0aW9uPU4iIG9wdGlvbiBzaG93aW5nIHRoZSBOIHNsb3dlc3QgdGVzdAogICBleGVjdXRp
b24gb3Igc2V0dXAvdGVhcmRvd24gY2FsbHMuIFRoaXMgaXMgbW9zdCB1c2VmdWwgaWYgeW91IHdh
bnQgdG8KQEAgLTc4LDcgKzc4LDcgQEAgQ2hhbmdlcyBiZXR3ZWVuIDIuMS4zIGFuZCAyLjIuMAog
ICBvciB0aHJvdWdoIHBsdWdpbiBob29rcy4gIEFsc28gaW50cm9kdWNlIGEgIi0tc3RyaWN0IiBv
cHRpb24gd2hpY2gKICAgd2lsbCB0cmVhdCB1bnJlZ2lzdGVyZWQgbWFya2VycyBhcyBlcnJvcnMK
ICAgYWxsb3dpbmcgdG8gYXZvaWQgdHlwb3MgYW5kIG1haW50YWluIGEgd2VsbCBkZXNjcmliZWQg
c2V0IG9mIG1hcmtlcnMKLSAgZm9yIHlvdXIgdGVzdCBzdWl0ZS4gIFNlZSBleGFtcGxlcyBhdCBo
dHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvbWFyay5odG1sCisgIGZvciB5b3VyIHRlc3Qgc3VpdGUu
ICBTZWUgZXhhbXBsZXMgYXQgaHR0cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL21hcmsuaHRtbAog
ICBhbmQgaXRzIGxpbmtzLgogLSBpc3N1ZTUwOiBpbnRyb2R1Y2UgIi1tIG1hcmtlciIgb3B0aW9u
IHRvIHNlbGVjdCB0ZXN0cyBiYXNlZCBvbiBtYXJrZXJzCiAgICh0aGlzIGlzIGEgc3RyaWN0ZXIg
YW5kIG1vcmUgcHJlZGljdGFibGUgdmVyc2lvbiBvZiAiLWsiIGluIHRoYXQgIi1tIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4zLjAucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4zLjAucnN0CmluZGV4IDA2MWFhMDI1
YzFlNC4uYmRkOTJhOThmZGUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0yLjMuMC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMi4zLjAucnN0CkBAIC0zLDIyICszLDIyIEBAIHB5dGVzdC0yLjM6IGltcHJvdmVkIGZp
eHR1cmVzIC8gYmV0dGVyIHVuaXR0ZXN0IGludGVncmF0aW9uCiAKIHB5dGVzdC0yLjMgY29tZXMg
d2l0aCBtYW55IG1ham9yIGltcHJvdmVtZW50cyBmb3IgZml4dHVyZS9mdW5jYXJnIG1hbmFnZW1l
bnQKIGFuZCBwYXJhbWV0cml6ZWQgdGVzdGluZyBpbiBQeXRob24uICBJdCBpcyBub3cgZWFzaWVy
LCBtb3JlIGVmZmljaWVudCBhbmQKLW1vcmUgcHJlZGljYXRhYmxlIHRvIHJlLXJ1biB0aGUgc2Ft
ZSB0ZXN0cyB3aXRoIGRpZmZlcmVudCBmaXh0dXJlCittb3JlIHByZWRpY3RhYmxlIHRvIHJlLXJ1
biB0aGUgc2FtZSB0ZXN0cyB3aXRoIGRpZmZlcmVudCBmaXh0dXJlCiBpbnN0YW5jZXMuICBBbHNv
LCB5b3UgY2FuIGRpcmVjdGx5IGRlY2xhcmUgdGhlIGNhY2hpbmcgInNjb3BlIiBvZgogZml4dHVy
ZXMgc28gdGhhdCBkZXBlbmRlbnQgdGVzdHMgdGhyb3VnaG91dCB5b3VyIHdob2xlIHRlc3Qgc3Vp
dGUgY2FuCiByZS11c2UgZGF0YWJhc2Ugb3Igb3RoZXIgZXhwZW5zaXZlIGZpeHR1cmUgb2JqZWN0
cyB3aXRoIGVhc2UuICBMYXN0bHksCiBpdCdzIHBvc3NpYmxlIGZvciBmaXh0dXJlIGZ1bmN0aW9u
cyAoZm9ybWVybHkga25vd24gYXMgZnVuY2FyZwogZmFjdG9yaWVzKSB0byB1c2Ugb3RoZXIgZml4
dHVyZXMsIGFsbG93aW5nIGZvciBhIGNvbXBsZXRlbHkgbW9kdWxhciBhbmQKLXJlLXVzZWFibGUg
Zml4dHVyZSBkZXNpZ24uCityZS11c2FibGUgZml4dHVyZSBkZXNpZ24uCiAKIEZvciBkZXRhaWxl
ZCBpbmZvIGFuZCB0dXRvcmlhbC1zdHlsZSBleGFtcGxlcywgc2VlOgogCi0gICAgaHR0cDovL3B5
dGVzdC5vcmcvbGF0ZXN0L2ZpeHR1cmUuaHRtbAorICAgIGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0
YWJsZS9maXh0dXJlLmh0bWwKIAogTW9yZW92ZXIsIHRoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciB1
c2luZyBweXRlc3QgZml4dHVyZXMvZnVuY2FyZ3Mgd2l0aAogdW5pdHRlc3Qtc3R5bGUgc3VpdGVz
LCBzZWUgaGVyZSBmb3IgZXhhbXBsZXM6CiAKLSAgICBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3Qv
dW5pdHRlc3QuaHRtbAorICAgIGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS91bml0dGVzdC5o
dG1sCiAKIEJlc2lkZXMsIG1vcmUgdW5pdHRlc3QtdGVzdCBzdWl0ZXMgYXJlIG5vdyBleHBlY3Rl
ZCB0byAic2ltcGx5IHdvcmsiCiB3aXRoIHB5dGVzdC4KQEAgLTI5LDExICsyOSwxMSBAQCBweXRl
c3QtMi4yLjQuCiAKIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgcHJlY2lzZSByZWFzb25p
bmcgKGluY2x1ZGluZyBleGFtcGxlcykgb2YgdGhlCiBweXRlc3QtMi4zIGZpeHR1cmUgZXZvbHV0
aW9uLCBwbGVhc2UgY29uc3VsdAotaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L2Z1bmNhcmdfY29t
cGFyZS5odG1sCitodHRwOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvZnVuY2FyZ19jb21wYXJlLmh0
bWwKIAogRm9yIGdlbmVyYWwgaW5mbyBvbiBpbnN0YWxsYXRpb24gYW5kIGdldHRpbmcgc3RhcnRl
ZDoKIAotICAgIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9nZXR0aW5nLXN0YXJ0ZWQuaHRtbAor
ICAgIGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS9nZXR0aW5nLXN0YXJ0ZWQuaHRtbAogCiBE
b2NzIGFuZCBQREYgYWNjZXNzIGFzIHVzdWFsIGF0OgogCkBAIC05NCw3ICs5NCw3IEBAIENoYW5n
ZXMgYmV0d2VlbiAyLjIuNCBhbmQgMi4zLjAKIC0gcGx1Z2lubWFuYWdlci5yZWdpc3RlciguLi4p
IG5vdyByYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUKICAgcGx1Z2luIGhhcyBiZWVuIGFscmVhZHkg
cmVnaXN0ZXJlZCBvciB0aGUgbmFtZSBpcyB0YWtlbgogCi0tIGZpeCBpc3N1ZTE1OTogaW1wcm92
ZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZmFxLmh0bWwKKy0gZml4IGlzc3VlMTU5OiBpbXBy
b3ZlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuLzYuMC4xL2ZhcS5odG1sCiAgIGVzcGVjaWFs
bHkgd2l0aCByZXNwZWN0IHRvIHRoZSAibWFnaWMiIGhpc3RvcnksIGFsc28gbWVudGlvbgogICBw
eXRlc3QtZGphbmdvLCB0cmlhbCBhbmQgdW5pdHRlc3QgaW50ZWdyYXRpb24uCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy40LnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy40LnJzdAppbmRleCBlMmU4Y2IxNDNh
MzMuLjI2Zjc2NjMwZTg0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi4zLjQucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuMy40LnJzdApAQCAtMTYsNyArMTYsNyBAQCBjb21lcyB3aXRoIHRoZSBmb2xsb3dpbmcg
Zml4ZXMgYW5kIGZlYXR1cmVzOgogLSB5aWVsZGVkIHRlc3QgZnVuY3Rpb25zIHdpbGwgbm93IGhh
dmUgYXV0b3VzZS1maXh0dXJlcyBhY3RpdmUgYnV0CiAgIGNhbm5vdCBhY2NlcHQgZml4dHVyZXMg
YXMgZnVuY2FyZ3MgLSBpdCdzIGFueXdheSByZWNvbW1lbmRlZCB0bwogICByYXRoZXIgdXNlIHRo
ZSBwb3N0LTIuMCBwYXJhbWV0cml6ZSBmZWF0dXJlcyBpbnN0ZWFkIG9mIHlpZWxkLCBzZWU6Ci0g
IGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9leGFtcGxlL3BhcmFtZXRyaXplLmh0bWwKKyAgaHR0
cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL2V4YW1wbGUvcGFyYW1ldHJpemUuaHRtbAogLSBmaXgg
YXV0b3VzZS1pc3N1ZSB3aGVyZSBhdXRvdXNlLWZpeHR1cmVzIHdvdWxkIG5vdCBiZSBkaXNjb3Zl
cmVkCiAgIGlmIGRlZmluZWQgaW4gYW4gYS9jb25mdGVzdC5weSBmaWxlIGFuZCB0ZXN0cyBpbiBh
L3Rlc3RzL3Rlc3Rfc29tZS5weQogLSBmaXggaXNzdWUyMjYgLSBMSUZPIG9yZGVyaW5nIGZvciBm
aXh0dXJlIHRlYXJkb3ducwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi4zLjUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi4zLjUucnN0CmluZGV4IDQ2NWRkODI2ZWQ0Ny4uZDY4NzgwYTI0NDBlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuNS5yc3QKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4zLjUucnN0CkBAIC00Niw3ICs0Niw3IEBA
IENoYW5nZXMgYmV0d2VlbiAyLjMuNCBhbmQgMi4zLjUKIC0gSXNzdWUgMjY1IC0gaW50ZWdyYXRl
IG5vc2Ugc2V0dXAvdGVhcmRvd24gd2l0aCBzZXR1cHN0YXRlCiAgIHNvIGl0IGRvZXNuJ3QgdHJ5
IHRvIHRlYXJkb3duIGlmIGl0IGRpZCBub3Qgc2V0dXAKIAotLSBpc3N1ZSAyNzEgLSBkb24ndCB3
cml0ZSBqdW5pdHhtbCBvbiBzbGF2ZSBub2RlcworLSBpc3N1ZSAyNzEgLSBkb24ndCB3cml0ZSBq
dW5pdHhtbCBvbiB3b3JrZXIgbm9kZXMKIAogLSBJc3N1ZSAyNzQgLSBkb24ndCB0cnkgdG8gc2hv
dyBmdWxsIGRvY3Rlc3QgZXhhbXBsZQogICB3aGVuIGRvY3Rlc3QgZG9lcyBub3Qga25vdyB0aGUg
ZXhhbXBsZSBsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi40LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi40LjAucnN0CmluZGV4IDI1ZjYyNTRjNTI5OS4uNjgyOTdiMjZjNGUzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjQuMC5yc3QKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi40LjAucnN0CkBAIC03LDcgKzcsNyBAQCBm
cm9tIGEgZmV3IHN1cHBvc2VkbHkgdmVyeSBtaW5vciBpbmNvbXBhdGliaWxpdGllcy4gIFNlZSBi
ZWxvdyBmb3IKIGEgZnVsbCBsaXN0IG9mIGRldGFpbHMuICBBIGZldyBmZWF0dXJlIGhpZ2hsaWdo
dHM6CiAKIC0gbmV3IHlpZWxkLXN0eWxlIGZpeHR1cmVzIGBweXRlc3QueWllbGRfZml4dHVyZQot
ICA8aHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L3lpZWxkZml4dHVyZS5odG1sPmBfLCBhbGxvd2lu
ZyB0byB1c2UKKyAgPGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS95aWVsZGZpeHR1cmUuaHRt
bD5gXywgYWxsb3dpbmcgdG8gdXNlCiAgIGV4aXN0aW5nIHdpdGgtc3R5bGUgY29udGV4dCBtYW5h
Z2VycyBpbiBmaXh0dXJlIGZ1bmN0aW9ucy4KIAogLSBpbXByb3ZlZCBwZGIgc3VwcG9ydDogYGBp
bXBvcnQgcGRiIDsgcGRiLnNldF90cmFjZSgpYGAgbm93IHdvcmtzCkBAIC0yMyw3ICsyMyw3IEBA
IGEgZnVsbCBsaXN0IG9mIGRldGFpbHMuICBBIGZldyBmZWF0dXJlIGhpZ2hsaWdodHM6CiAgIGNh
bGxlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBzZXR1cCBtZXRob2Qgc3VjY2VlZGVkLgogCiAtIGlu
dGVncmF0ZSB0YWItY29tcGxldGlvbiBvbiBjb21tYW5kIGxpbmUgb3B0aW9ucyBpZiB5b3UKLSAg
aGF2ZSBgYXJnY29tcGxldGUgPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9hcmdjb21wbGV0
ZT5gXworICBoYXZlIGBhcmdjb21wbGV0ZSA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2FyZ2Nv
bXBsZXRlLz5gXwogICBjb25maWd1cmVkLgogCiAtIGFsbG93IGJvb2xlYW4gZXhwcmVzc2lvbiBk
aXJlY3RseSB3aXRoIHNraXBpZi94ZmFpbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMi41LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi41LjAucnN0CmluZGV4IDI5MDY0ZTA1ZTZkYi4uYmM4M2ZkYzEyMmM5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMC5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi41LjAucnN0CkBAIC05MSw3
ICs5MSw3IEBAIGhvbGdlciBrcmVrZWwKICAgaXQgbWlnaHQgYmUgdGhlIGNhdXNlIGZvciBvdGhl
ciBmaW5hbGl6ZXJzIHRvIGZhaWwuCiAKIC0gZml4IG9yZGVyaW5nIHdoZW4gbW9jay5wYXRjaCBv
ciBvdGhlciBzdGFuZGFyZCBkZWNvcmF0b3Itd3JhcHBpbmdzCi0gIGFyZSB1c2VkIHdpdGggdGVz
dCBtZXRob2RzLiAgVGhpcyBmaXh1ZXMgaXNzdWUzNDYgYW5kIHNob3VsZAorICBhcmUgdXNlZCB3
aXRoIHRlc3QgbWV0aG9kcy4gIFRoaXMgZml4ZXMgaXNzdWUzNDYgYW5kIHNob3VsZAogICBoZWxw
IHdpdGggcmFuZG9tICJ4ZGlzdCIgY29sbGVjdGlvbiBmYWlsdXJlcy4gIFRoYW5rcyB0bwogICBS
b25ueSBQZmFubnNjaG1pZHQgYW5kIERvbmFsZCBTdHVmZnQgZm9yIGhlbHBpbmcgdG8gaXNvbGF0
ZSBpdC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi41LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi41LjEucnN0
CmluZGV4IDIyZTY5YTgzNmI5NC4uZmYzOWRiMmQ1MmRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMi41LjEucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIu
NS4xOiBmaXhlcyBhbmQgbmV3IGhvbWUgcGFnZSBzdHlsaW5nCiA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4g
YSAxMDAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRo
IG1vcmUgdGhhbiAxMDAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRp
ZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAogVGhlIDIuNS4xIHJlbGVhc2Ug
bWFpbnRhaW5zIHRoZSAiemVyby1yZXBvcnRlZC1idWdzIiBwcm9taXNlIGJ5IGZpeGluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi41LjIucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi41LjIucnN0CmluZGV4IGMzODlm
NWY1NDAzOC4uZWRjNGRhNmUxOWZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0yLjUuMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi41LjIucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIuNS4yOiBmaXhlcwog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0
b29sIHdpdGggbW9yZSB0aGFuIGEgMTAwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhv
biB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTAwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYs
IHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAK
IFRoZSAyLjUuMiByZWxlYXNlIGZpeGVzIGEgZmV3IGJ1Z3Mgd2l0aCB0d28gbWF5YmUtYnVncyBy
ZW1haW5pbmcgYW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0yLjYuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYu
MC5yc3QKaW5kZXggMzZiNTQ1YTI4YjRiLi41NmZiZDZjYzFlNGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4wLnJzdAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMC5yc3QKQEAgLTEsNyArMSw3IEBACiBweXRl
c3QtMi42LjA6IHNob3J0ZXIgdHJhY2ViYWNrcywgbmV3IHdhcm5pbmcgc3lzdGVtLCB0ZXN0IHJ1
bm5lciBjb21wYXQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0
aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDEwMDAgdGVzdHMKK3B5dGVzdCBpcyBh
IG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDEwMDAgdGVzdHMKIGFn
YWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQg
cGxhdGZvcm1zLgogCiBUaGUgMi42LjAgcmVsZWFzZSBzaG91bGQgYmUgZHJvcC1pbiBiYWNrd2Fy
ZCBjb21wYXRpYmxlIHRvIDIuNS4yIGFuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMi42LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi42LjEucnN0CmluZGV4IGZiYTZmMjk5M2E1Yy4uNzQ2OWM0ODhlNWY2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMS5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi42LjEucnN0CkBAIC0xLDcg
KzEsNyBAQAogcHl0ZXN0LTIuNi4xOiBmaXhlcyBhbmQgbmV3IHhmYWlsIGZlYXR1cmUKID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3
aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVz
dGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMKIGFnYWluc3QgaXRzZWxmLCBwYXNz
aW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgogVGhlIDIu
Ni4xIHJlbGVhc2UgaXMgZHJvcC1pbiBjb21wYXRpYmxlIHRvIDIuNS4yIGFuZCBhY3R1YWxseSBm
aXhlcyBzb21lCiByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIHdpdGggMi42LjAuICBJdCBhbHNvIGJy
aW5ncyBhIGxpdHRsZSBmZWF0dXJlCkBAIC0zMiw3ICszMiw3IEBAIENoYW5nZXMgMi42LjEKICAg
cHVyZWx5IHRoZSBub2RlaWQuICBUaGUgbGluZSBudW1iZXIgaXMgc3RpbGwgc2hvd24gaW4gZmFp
bHVyZSByZXBvcnRzLgogICBUaGFua3MgRmxvcmlzIEJydXlub29naGUuCiAKLS0gZml4IGlzc3Vl
NDM3IHdoZXJlIGFzc2VydGlvbiByZXdyaXRpbmcgY291bGQgY2F1c2UgcHl0ZXN0LXhkaXN0IHNs
YXZlcworLSBmaXggaXNzdWU0Mzcgd2hlcmUgYXNzZXJ0aW9uIHJld3JpdGluZyBjb3VsZCBjYXVz
ZSBweXRlc3QteGRpc3Qgd29ya2VyIG5vZGVzCiAgIHRvIGNvbGxlY3QgZGlmZmVyZW50IHRlc3Rz
LiBUaGFua3MgQnJ1bm8gT2xpdmVpcmEuCiAKIC0gZml4IGlzc3VlNTU1OiBhZGQgImVycm9ycyIg
YXR0cmlidXRlIHRvIGNhcHR1cmUtc3RyZWFtcyB0byBzYXRpc2Z5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMi5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMi5yc3QKaW5kZXggZjZjZTE3OGExMDcwLi45YzNi
N2Q5NmIwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTIuNi4yLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYu
Mi5yc3QKQEAgLTEsNyArMSw3IEBACiBweXRlc3QtMi42LjI6IGZldyBmaXhlcyBhbmQgY3hfZnJl
ZXplIHN1cHBvcnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0
aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBpcyBh
IG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMKIGFn
YWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQg
cGxhdGZvcm1zLgogVGhpcyByZWxlYXNlIGlzIGRyb3AtaW4gY29tcGF0aWJsZSB0byAyLjUuMiBh
bmQgMi42LlguICBJdCBhbHNvCiBicmluZ3Mgc3VwcG9ydCBmb3IgaW5jbHVkaW5nIHB5dGVzdCB3
aXRoIGN4X2ZyZWV6ZSBvciBzaW1pbGFyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjYuMy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjYuMy5yc3QKaW5kZXggNzM1M2RmZWU3MWNkLi41Njk3M2EyYjJmN2YgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4zLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMy5yc3QKQEAgLTEsNyAr
MSw3IEBACiBweXRlc3QtMi42LjM6IGZpeGVzIGFuZCBsaXR0bGUgaW1wcm92ZW1lbnRzCiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wg
d2l0aCBtb3JlIHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRl
c3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFz
c2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIFRoaXMg
cmVsZWFzZSBpcyBkcm9wLWluIGNvbXBhdGlibGUgdG8gMi41LjIgYW5kIDIuNi5YLgogU2VlIGJl
bG93IGZvciB0aGUgY2hhbmdlcyBhbmQgc2VlIGRvY3MgYXQ6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMC5yc3QKaW5kZXggZDYzMDgxZWRiMWI0Li4yODQwMTc4
YTA3ZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
Ny4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMC5y
c3QKQEAgLTEsNyArMSw3IEBACiBweXRlc3QtMi43LjA6IGZpeGVzLCBmZWF0dXJlcywgc3BlZWQg
aW1wcm92ZW1lbnRzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5
dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMg
YSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBh
Z2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5k
IHBsYXRmb3Jtcy4KIFRoaXMgcmVsZWFzZSBpcyBzdXBwb3NlZCB0byBiZSBkcm9wLWluIGNvbXBh
dGlibGUgdG8gMi42LlguCiAKQEAgLTM1LDcgKzM1LDcgQEAgaG9sZ2VyIGtyZWtlbAogLSBmaXgg
aXNzdWU0MzU6IG1ha2UgcmVsb2FkKCkgd29yayB3aGVuIGFzc2VydCByZXdyaXRpbmcgaXMgYWN0
aXZlLgogICBUaGFua3MgRGFuaWVsIEhhaGxlci4KIAotLSBmaXggaXNzdWU2MTY6IGNvbmZ0ZXN0
LnB5IGZpbGVzIGFuZCB0aGVpciBjb250YWluZWQgZml4dXRyZXMgYXJlIG5vdworLSBmaXggaXNz
dWU2MTY6IGNvbmZ0ZXN0LnB5IGZpbGVzIGFuZCB0aGVpciBjb250YWluZWQgZml4dHVyZXMgYXJl
IG5vdwogICBwcm9wZXJseSBjb25zaWRlcmVkIGZvciB2aXNpYmlsaXR5LCBpbmRlcGVuZGVudGx5
IGZyb20gdGhlIGV4YWN0CiAgIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHRlc3QgYXJn
dW1lbnRzIHRoYXQgYXJlIHVzZWQuCiAgIE1hbnkgdGhhbmtzIHRvIEVyaWMgU2llZ2VybWFuIGFu
ZCBoaXMgUFIyMzUgd2hpY2ggY29udGFpbnMKQEAgLTUyLDcgKzUyLDcgQEAgaG9sZ2VyIGtyZWtl
bAogLSBhZGQgYWJpbGl0eSB0byBzZXQgY29tbWFuZCBsaW5lIG9wdGlvbnMgYnkgZW52aXJvbm1l
bnQgdmFyaWFibGUgUFlURVNUX0FERE9QVFMuCiAKIC0gYWRkZWQgZG9jdW1lbnRhdGlvbiBvbiB0
aGUgbmV3IHB5dGVzdC1kZXYgdGVhbXMgb24gYml0YnVja2V0IGFuZAotICBnaXRodWIuICBTZWUg
aHR0cHM6Ly9weXRlc3Qub3JnL2xhdGVzdC9jb250cmlidXRpbmcuaHRtbCAuCisgIGdpdGh1Yi4g
IFNlZSBodHRwczovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL2NvbnRyaWJ1dGluZy5odG1sIC4KICAg
VGhhbmtzIHRvIEFuYXRvbHkgZm9yIHB1c2hpbmcgYW5kIGluaXRpYWwgd29yayBvbiB0aGlzLgog
CiAtIGZpeCBpc3N1ZTY1MDogbmV3IG9wdGlvbiBgYC0tZG9jdHRlc3QtaWdub3JlLWltcG9ydC1l
cnJvcnNgYCB3aGljaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMi43LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi43
LjEucnN0CmluZGV4IGZkYzcxZWViYmE5NS4uNTExMGMwODVlMDFkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMS5yc3QKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi43LjEucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0
ZXN0LTIuNy4xOiBidWcgZml4ZXMKID09PT09PT09PT09PT09PT09PT09PT09CiAKLXB5dGVzdCBp
cyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0
cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4g
MTEwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50
ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiBUaGlzIHJlbGVhc2UgaXMgc3VwcG9zZWQgdG8gYmUg
ZHJvcC1pbiBjb21wYXRpYmxlIHRvIDIuNy4wLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0yLjcuMi5yc3QKaW5kZXggMWUzOTUwZGU0ZDBjLi45M2U1YjY0ZWVlZDAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4yLnJz
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMi5yc3QKQEAg
LTEsNyArMSw3IEBACiBweXRlc3QtMi43LjI6IGJ1ZyBmaXhlcwogPT09PT09PT09PT09PT09PT09
PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3Jl
IHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9v
bCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBt
YW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIFRoaXMgcmVsZWFzZSBp
cyBzdXBwb3NlZCB0byBiZSBkcm9wLWluIGNvbXBhdGlibGUgdG8gMi43LjEuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4yLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4yLnJzdAppbmRleCBkNzAyODYxNjE0
MjIuLmU0NzI2MzM4ODUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi44LjIucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuOC4yLnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjguMjogYnVnIGZpeGVzCiA9
PT09PT09PT09PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3Rp
bmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQ
eXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMKIGFnYWluc3QgaXRz
ZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1z
LgogVGhpcyByZWxlYXNlIGlzIHN1cHBvc2VkIHRvIGJlIGRyb3AtaW4gY29tcGF0aWJsZSB0byAy
LjguMS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi44LjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjMucnN0
CmluZGV4IGIxMzFhN2UxZjE0ZC4uM2YzNTcyNTJiYjYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguMy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjMucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIu
OC4zOiBidWcgZml4ZXMKID09PT09PT09PT09PT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1h
dHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0cworcHl0
ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTEwMCB0
ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0
ZXJzIGFuZCBwbGF0Zm9ybXMuCiBUaGlzIHJlbGVhc2UgaXMgc3VwcG9zZWQgdG8gYmUgZHJvcC1p
biBjb21wYXRpYmxlIHRvIDIuOC4yLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjguNC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjguNC5yc3QKaW5kZXggYTA5NjI5Y2VmMDk5Li5hZGJkZWNjODdlYTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC40LnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNC5yc3QKQEAgLTEsNyAr
MSw3IEBACiBweXRlc3QtMi44LjQKID09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUg
UHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBp
cyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMK
IGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBh
bmQgcGxhdGZvcm1zLgogVGhpcyByZWxlYXNlIGlzIHN1cHBvc2VkIHRvIGJlIGRyb3AtaW4gY29t
cGF0aWJsZSB0byAyLjguMi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMi44LjUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMi44LjUucnN0CmluZGV4IDc0MDkwMjJhMTM3MS4uYzUzNDNkMWVhNzI3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNS5yc3QKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjUucnN0CkBAIC0xLDcgKzEsNyBA
QAogcHl0ZXN0LTIuOC41CiA9PT09PT09PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhv
biB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBt
YXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2Fp
bnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBs
YXRmb3Jtcy4KIFRoaXMgcmVsZWFzZSBpcyBzdXBwb3NlZCB0byBiZSBkcm9wLWluIGNvbXBhdGli
bGUgdG8gMi44LjQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTIuOC42LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
OC42LnJzdAppbmRleCAyMTVmYWU1MWVhYzAuLjVkNjU2NWIxNmEzOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjYucnN0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC42LnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5
dGVzdC0yLjguNgogPT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVz
dGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJl
IFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTEwMCB0ZXN0cwogYWdhaW5zdCBp
dHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9y
bXMuCiBUaGlzIHJlbGVhc2UgaXMgc3VwcG9zZWQgdG8gYmUgZHJvcC1pbiBjb21wYXRpYmxlIHRv
IDIuOC41LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0yLjguNy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNy5y
c3QKaW5kZXggOTAwNWY1NjM2M2EzLi44MjM2YTA5NjY2OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC43LnJzdAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNy5yc3QKQEAgLTQsNyArNCw3IEBAIHB5dGVzdC0y
LjguNwogVGhpcyBpcyBhIGhvdGZpeCByZWxlYXNlIHRvIHNvbHZlIGEgcmVncmVzc2lvbgogaW4g
dGhlIGJ1aWx0aW4gbW9ua2V5cGF0Y2ggcGx1Z2luIHRoYXQgZ290IGludHJvZHVjZWQgaW4gMi44
LjYuCiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0
aGFuIGEgMTEwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wg
d2l0aCBtb3JlIHRoYW4gMTEwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFu
eSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiBUaGlzIHJlbGVhc2UgaXMg
c3VwcG9zZWQgdG8gYmUgZHJvcC1pbiBjb21wYXRpYmxlIHRvIDIuOC41LgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjkuMC5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjkuMC5yc3QKaW5kZXggOGQ4Mjk5OTZkODNj
Li44YzJlZTA1ZjliZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTIuOS4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0yLjkuMC5yc3QKQEAgLTEsNyArMSw3IEBACiBweXRlc3QtMi45LjAKID09PT09PT09PT09PQog
Ci1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBh
IDExMDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGgg
bW9yZSB0aGFuIDExMDAgdGVzdHMKIGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlm
ZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgogCiBTZWUgYmVsb3cgZm9yIHRoZSBj
aGFuZ2VzIGFuZCBzZWUgZG9jcyBhdDoKQEAgLTc1LDcgKzc1LDcgQEAgVGhlIHB5LnRlc3QgRGV2
ZWxvcG1lbnQgVGVhbQogCiAqKkNoYW5nZXMqKgogCi0qICoqSW1wb3J0YW50Kio6IGBweS5jb2Rl
IDxodHRwczovL3B5bGliLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9jb2RlLmh0bWw+YF8gaGFz
IGJlZW4KKyogKipJbXBvcnRhbnQqKjogYHB5LmNvZGUgPGh0dHBzOi8vcHlsaWIucmVhZHRoZWRv
Y3MuaW8vZW4vc3RhYmxlL2NvZGUuaHRtbD5gXyBoYXMgYmVlbgogICBtZXJnZWQgaW50byB0aGUg
YGBweXRlc3RgYCByZXBvc2l0b3J5IGFzIGBgcHl0ZXN0Ll9jb2RlYGAuIFRoaXMgZGVjaXNpb24K
ICAgd2FzIG1hZGUgYmVjYXVzZSBgYHB5LmNvZGVgYCBoYWQgdmVyeSBmZXcgdXNlcyBvdXRzaWRl
IGBgcHl0ZXN0YGAgYW5kIHRoZQogICBmYWN0IHRoYXQgaXQgd2FzIGluIGEgZGlmZmVyZW50IHJl
cG9zaXRvcnkgbWFkZSBpdCBkaWZmaWN1bHQgdG8gZml4IGJ1Z3Mgb24KQEAgLTg4LDcgKzg4LDcg
QEAgVGhlIHB5LnRlc3QgRGV2ZWxvcG1lbnQgVGVhbQogICAqKmV4cGVyaW1lbnRhbCoqLCBzbyB5
b3UgZGVmaW5pdGVseSBzaG91bGQgbm90IGltcG9ydCBpdCBleHBsaWNpdGx5IQogCiAgIFBsZWFz
ZSBub3RlIHRoYXQgdGhlIG9yaWdpbmFsIGBgcHkuY29kZWBgIGlzIHN0aWxsIGF2YWlsYWJsZSBp
bgotICBgcHlsaWIgPGh0dHBzOi8vcHlsaWIucmVhZHRoZWRvY3MuaW8+YF8uCisgIGBweWxpYiA8
aHR0cHM6Ly9weWxpYi5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvPmBfLgogCiAqIGBgcHl0ZXN0
X2VudGVyX3BkYmBgIG5vdyBvcHRpb25hbGx5IHJlY2VpdmVzIHRoZSBweXRlc3QgY29uZmlnIG9i
amVjdC4KICAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCkBAIC0xMjQsMTQgKzEy
NCwxNCBAQCBUaGUgcHkudGVzdCBEZXZlbG9wbWVudCBUZWFtCiAgIFRoYW5rcyBgQGJpZXJuYF8g
Zm9yIHRoZSBQUi4KIAogKiBGaXggYHRyYWNlYmFjayBzdHlsZSBkb2NzYF8gdG8gZGVzY3JpYmUg
YWxsIG9mIHRoZSBhdmFpbGFibGUgb3B0aW9ucwotICAoYXV0by9sb25nL3Nob3J0L2xpbmUvbmF0
aXZlL25vKSwgd2l0aCBgYXV0b2AgYmVpbmcgdGhlIGRlZmF1bHQgc2luY2UgdjIuNi4KKyAgKGF1
dG8vbG9uZy9zaG9ydC9saW5lL25hdGl2ZS9ubyksIHdpdGggYGBhdXRvYGAgYmVpbmcgdGhlIGRl
ZmF1bHQgc2luY2UgdjIuNi4KICAgVGhhbmtzIGBAaGFja2Vicm90YF8gZm9yIHRoZSBQUi4KIAog
KiBGaXggKGAjMTQyMmBfKToganVuaXQgcmVjb3JkX3htbF9wcm9wZXJ0eSBkb2Vzbid0IGFsbG93
IG11bHRpcGxlIHJlY29yZHMKICAgd2l0aCBzYW1lIG5hbWUuCiAKIAotLi4gX2B0cmFjZWJhY2sg
c3R5bGUgZG9jc2A6IGh0dHBzOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvdXNhZ2UuaHRtbCNtb2RpZnlp
bmctcHl0aG9uLXRyYWNlYmFjay1wcmludGluZworLi4gX2B0cmFjZWJhY2sgc3R5bGUgZG9jc2A6
IGh0dHBzOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvdXNhZ2UuaHRtbCNtb2RpZnlpbmctcHl0aG9u
LXRyYWNlYmFjay1wcmludGluZwogCiAuLiBfIzE0MjI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQyMgogLi4gXyMxMzc5OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEzNzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuOS4xLnJzdAppbmRleCBjNzFmMzg1MTYzODIuLjQ3YmMyZTZkMzhiYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi45LjEucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4xLnJzdApAQCAt
MSw3ICsxLDcgQEAKIHB5dGVzdC0yLjkuMQogPT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1h
dHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0cworcHl0
ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTEwMCB0
ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0
ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFNlZSBiZWxvdyBmb3IgdGhlIGNoYW5nZXMgYW5kIHNlZSBk
b2NzIGF0OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi45LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi45LjIucnN0
CmluZGV4IDhmMjc0Y2RmMzk4MS4uZmZkOGRjNThlZDUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjkuMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMi45LjIucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIu
OS4yCiA9PT09PT09PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRv
b2wgd2l0aCBtb3JlIHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9u
IHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwg
cGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAog
U2VlIGJlbG93IGZvciB0aGUgY2hhbmdlcyBhbmQgc2VlIGRvY3MgYXQ6CkBAIC02Niw4ICs2Niw4
IEBAIFRoZSBweS50ZXN0IERldmVsb3BtZW50IFRlYW0KIAogLi4gXyM1MTA6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTEwCiAuLiBfIzE1MDY6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MDYKLS4uIF8jMTQ5NjogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3VlLzE0OTYKLS4uIF8jMTUyNDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3VlLzE1MjQKKy4uIF8jMTQ5Njog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDk2CisuLiBfIzE1
MjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MjQKIAogLi4g
X0Bhc3RyYXczODogaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhdzM4CiAuLiBfQGhhY2tlYnJvdDog
aHR0cHM6Ly9naXRodWIuY29tL2hhY2tlYnJvdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMy4wLjAucnN0CmluZGV4IGNhM2U5ZTMyNzYzMi4uNWRlMzg5MTE0ODI4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMC5yc3QK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjAucnN0CkBAIC0z
LDcgKzMsNyBAQCBweXRlc3QtMy4wLjAKIAogVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFu
bm91bmNlIHRoZSAzLjAuMCByZWxlYXNlIQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRl
c3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDE2MDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVy
ZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDE2MDAgdGVzdHMKIGFnYWluc3Qg
aXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZv
cm1zLgogCiBUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBsb3Qgb2YgYnVncyBmaXhlcyBhbmQgaW1w
cm92ZW1lbnRzLCBhbmQgbXVjaCBvZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy4wLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMy4wLjEucnN0CmluZGV4IGViNmY2YTUwZWY3Zi4uOGY1Y2ZlNDExYWEwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMS5yc3QKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjEucnN0CkBAIC04LDcgKzgs
NyBAQCBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOgogCiAgIHBpcCBpbnN0YWxsIC0t
dXBncmFkZSBweXRlc3QKIAotVGhlIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2Rv
Yy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBjaGFuZ2Vsb2cgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMy4wLjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjIu
cnN0CmluZGV4IDRhZjQxMmZjNWVlNS4uODZiYTgyY2E2ZTY4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjIucnN0CkBAIC04LDcgKzgsNyBAQCBkcm9wLWlu
IHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0
ZXN0CiAKLVRoZSBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9y
Zy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBh
dCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFu
a3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4zLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4zLnJzdAppbmRleCA4
OTZkNDc4NzMwNGMuLjg5YTJlMGM3NDRlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy4wLjMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuMC4zLnJzdApAQCAtOCw3ICs4LDcgQEAgYmVpbmcgYSBkcm9wLWluIHJl
cGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0
CiAKLVRoZSBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9l
bi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFua3Mg
dG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC40LnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC40LnJzdAppbmRleCA4NTVi
YzU2ZDViODcuLjcyYzJkMjk0NjRkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy4wLjQucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMC40LnJzdApAQCAtOCw3ICs4LDcgQEAgYmVpbmcgYSBkcm9wLWluIHJlcGxh
Y2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAK
LVRoZSBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9s
YXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRw
Oi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFua3MgdG8g
YWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC41LnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC41LnJzdAppbmRleCAyZjM2OTgy
NzU4ODkuLjk3ZWRiN2Q0NjI4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMy4wLjUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMC41LnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFz
ZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5z
dGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0
dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgY2hhbmdl
bG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5n
ZWxvZy5odG1sLgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVh
c2UsIGFtb25nIHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMC42LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMC42LnJzdAppbmRleCAxNDljMmQ2NWUxYTkuLjljMDcyY2VkY2NhYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjYucnN0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC42LnJzdApAQCAtNyw3ICs3LDcgQEAg
VGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBU
byB1cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxs
IGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVz
dC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0
cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogCiBUaGFua3Mg
dG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuNy5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuNy5yc3QKaW5kZXggYjM3ZTRm
NjFkZWUzLi40YjdlMDc1ZTc2YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuMC43LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0zLjAuNy5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVh
c2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGlu
c3RhbGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxl
IGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUg
ZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRv
IHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMy4xLjAucnN0CmluZGV4IDk5Y2M2YmRiZTIwNy4uNTUyNzcwNjc5NDhiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMC5yc3QK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjAucnN0CkBAIC0z
LDEzICszLDEzIEBAIHB5dGVzdC0zLjEuMAogCiBUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8g
YW5ub3VuY2UgdGhlIDMuMS4wIHJlbGVhc2UhCiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24g
dGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTYwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0
dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTYwMCB0ZXN0cwogYWdhaW5z
dCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0
Zm9ybXMuCiAKIFRoaXMgcmVsZWFzZSBjb250YWlucyBhIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVt
ZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKIHRvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFO
R0VMT0c6CiAKLWh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwK
K2h0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKIAogRm9yIGNv
bXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjEucnN0CmluZGV4IDRjZTc1MzE5NzdjMy4uMTM1YjJm
ZTg0NDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0z
LjEuMS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjEu
cnN0CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRy
b3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFk
ZSBweXRlc3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9j
LnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9n
IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxv
Zy5odG1sLgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2Us
IGFtb25nIHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMS4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
MS4yLnJzdAppbmRleCA4ZWQwYzkzZTlhZDIuLmE5Yjg1YzQ3MTVjNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjIucnN0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4yLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhp
cyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1
cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNo
YW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9j
aGFuZ2Vsb2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDov
L2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFs
bCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMy5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMy5yc3QKaW5kZXggZDc3NzFmOTIy
MzI2Li5iYzJiODVmY2ZkNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMS4zLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjEuMy5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVs
bCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRo
aXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy4xMC4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMTAuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5mZjNjMDAwYjBlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjEwLjAucnN0CkBAIC0wLDAgKzEsNDMgQEAKK3B5dGVzdC0zLjEw
LjAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0
IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDMuMTAuMCByZWxlYXNlIQorCitweXRlc3Qg
aXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3Rz
CithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMg
YW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3Mg
Zml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2Ug
YSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBs
ZWFzZSB2aXNpdDoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKwor
QXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3Rh
bGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVs
ZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbmRlcnMgSG92bcO2bGxlcgorKiBBbmRyZXUgVmFsbGJv
bmEgUGxhemFzCisqIEFua2l0IEdvZWwKKyogQW50aG9ueSBTb3R0aWxlCisqIEJlcm5hcmRvIEdv
bWVzCisqIEJyaWFubmEgTGF1Z2hlcgorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVy
CisqIERhdmlkIFN6b3R0ZW4KKyogTWljayBLb2NoCisqIE5pY2xhcyBPbG9mc3NvbgorKiBQYWxh
c2ggQ2hhdHRlcmplZQorKiBSb25ueSBQZmFubnNjaG1pZHQKKyogU3Zlbi1IZW5kcmlrIEhhYXNl
CisqIFZpbGxlIFNreXR0w6QKKyogV2lsbGlhbSBKYW1pciBTaWx2YQorCisKK0hhcHB5IHRlc3Rp
bmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMTAuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjEwLjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYWQzNjVmNjM0NzRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xMC4xLnJzdApAQCAtMCwwICsxLDI0IEBACitweXRl
c3QtMy4xMC4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0
ZXN0IDMuMTAuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBi
dWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6
CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cg
aXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vs
b2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNl
LCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCb3JpcyBGZWxkCisqIEJydW5v
IE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogRmFiaWVuIFpBUklGSUFOCisqIEpvbiBEdWZy
ZXNuZQorKiBSb25ueSBQZmFubnNjaG1pZHQKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVz
dCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjIuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjIuMC5yc3QKaW5kZXggNGQyODMwZWRkMmRlLi5lZGM2NmEyOGU3ODkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4wLnJzdAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMC5yc3QKQEAgLTMsMTMgKzMsMTMg
QEAgcHl0ZXN0LTMuMi4wCiAKIFRoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0
aGUgMy4yLjAgcmVsZWFzZSEKIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRv
b2wgd2l0aCBtb3JlIHRoYW4gYSAxNjAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9u
IHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxNjAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwg
cGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAog
VGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVt
ZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKIHRvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFO
R0VMT0c6CiAKLSAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5o
dG1sCisgICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAog
CiBGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMS5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMS5yc3QKaW5kZXggYWZlMmM1YmZlMmMx
Li5jNDAyMTdkMzExZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMi4xLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjIuMS5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJl
aW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3RhbGwg
LS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0
dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVsbCBj
aGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
Y2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMg
cmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy4yLjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMy4yLjIucnN0CmluZGV4IDg4ZTMyODczYTFiNC4uNWU2YzQzYWIxNzdjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMi5yc3QKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4yLjIucnN0CkBAIC03LDcgKzcs
NyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1l
bnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKIAotVGhl
IGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4v
bGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBh
dCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFu
a3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4zLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4zLnJzdAppbmRleCBk
ZGZkYTRkMTMyZmIuLjUwZGNlMjljMWFkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy4yLjMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuMi4zLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBhIGJ1Zy1maXgg
cmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBw
aXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFp
bGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4K
K1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0
ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuNC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjIuNC5yc3QKaW5kZXggNjVlNDg2YjdhYTIyLi5mZjBiMzU3ODFi
MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi40
LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuNC5yc3QK
QEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1p
biByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5
dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0
ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMy4yLjUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4yLjUu
cnN0CmluZGV4IDJlNTMwNGM2ZjI3MC4uNjhjYWNjYmRiYzVhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuNS5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4yLjUucnN0CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlz
IGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3Jh
ZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGZ1bGwgY2hhbmdl
bG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5n
ZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9j
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFua3MgdG8gYWxsIHdo
byBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4wLnJzdCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4wLnJzdAppbmRleCBlMDc0MGU3ZDU5Mjku
LjFjYmYyYzQ0OGM4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMy4zLjAucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMy4wLnJzdApAQCAtMywxMyArMywxMyBAQCBweXRlc3QtMy4zLjAKIAogVGhlIHB5dGVzdCB0
ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSAzLjMuMCByZWxlYXNlIQogCi1weXRlc3QgaXMg
YSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDE2MDAgdGVzdHMK
K3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDE2
MDAgdGVzdHMKIGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVy
cHJldGVycyBhbmQgcGxhdGZvcm1zLgogCiBUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIg
b2YgYnVncyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAog
dG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKIAotICAgIGh0dHA6Ly9kb2MucHl0ZXN0
Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwKKyAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCiAKIEZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBw
bGVhc2UgdmlzaXQ6CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMy4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
My4xLnJzdAppbmRleCA3ZWVkODM2YWU2ZDUuLjk4YjZmYTZjMWJhZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4zLjEucnN0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4xLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhp
cyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1
cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNo
YW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9j
aGFuZ2Vsb2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDov
L2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFs
bCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjMuMi5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjMuMi5yc3QKaW5kZXggZDlhY2VmOTQ3
ZGRkLi43YTI1NzdkMWZmODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMy4yLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjMuMi5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVs
bCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRo
aXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy40LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy40LjAucnN0CmluZGV4IGRmMWUwMDRmMWNjMS4uNmFiNWIxMjRhMjVlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQuMC5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy40LjAucnN0CkBAIC0zLDEz
ICszLDEzIEBAIHB5dGVzdC0zLjQuMAogCiBUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5u
b3VuY2UgdGhlIDMuNC4wIHJlbGVhc2UhCiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVz
dGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTYwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJl
IFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTYwMCB0ZXN0cwogYWdhaW5zdCBp
dHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9y
bXMuCiAKIFRoaXMgcmVsZWFzZSBjb250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBp
bXByb3ZlbWVudHMsIHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCiB0byB0YWtlIGEgbG9vayBhdCB0
aGUgQ0hBTkdFTE9HOgogCi0gICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFu
Z2Vsb2cuaHRtbAorICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwKIAogRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy40LjEucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy40LjEucnN0CmluZGV4IGUzN2Y1
ZDdlMjQwNS4uZDgzOTQ5NDUzYTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0zLjQuMS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy40LjEucnN0CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxl
YXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBp
bnN0YWxsIC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJs
ZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhl
IGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0
byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuNC4yLnJzdAppbmRleCA4ZTk5ODgyMjhmYWMuLjA3Y2Q5ZDNhOGJhOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy40LjIucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4yLnJzdApAQCAt
Nyw3ICs3LDcgQEAgVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJl
cGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0
CiAKLVRoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qu
b3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFp
bGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4K
IAogVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0
aGVtOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0z
LjUuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjUuMC5yc3QK
aW5kZXggNTRhMDVjZWEyNGQ5Li42YmMyZjNjZDBjYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjUuMC5yc3QKQEAgLTMsMTMgKzMsMTMgQEAgcHl0ZXN0LTMu
NS4wCiAKIFRoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgMy41LjAgcmVs
ZWFzZSEKIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3Jl
IHRoYW4gYSAxNjAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9v
bCB3aXRoIG1vcmUgdGhhbiAxNjAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBt
YW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAogVGhpcyByZWxlYXNl
IGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNl
cnMgYXJlIGVuY291cmFnZWQKIHRvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CiAKLSAg
ICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sCisgICAgaHR0
cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAogCiBGb3IgY29tcGxl
dGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjUuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjUuMS5yc3QKaW5kZXggOTFmMTQzOTBlZWI1Li44MDJiZTAzNjg0
ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4x
LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjUuMS5yc3QK
QEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1p
biByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5
dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0
ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMy42LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjAu
cnN0CmluZGV4IDM3MzYxY2Y0YWRkOC4uNDRiMTc4YzE2OWZkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMC5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjAucnN0CkBAIC0zLDEzICszLDEzIEBAIHB5dGVz
dC0zLjYuMAogCiBUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDMuNi4w
IHJlbGVhc2UhCiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGgg
bW9yZSB0aGFuIGEgMTYwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5n
IHRvb2wgd2l0aCBtb3JlIHRoYW4gMTYwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcg
b24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFRoaXMgcmVs
ZWFzZSBjb250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNv
IHVzZXJzIGFyZSBlbmNvdXJhZ2VkCiB0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgog
Ci0gICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbAorICAg
IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKIAogRm9yIGNv
bXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjEucnN0CmluZGV4IDNiZWRjZjQ2YTg1ZS4uZDk3MWEz
ZDQ5MDcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0z
LjYuMS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjEu
cnN0CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRy
b3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFk
ZSBweXRlc3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9j
LnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9n
IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxv
Zy5odG1sLgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2Us
IGFtb25nIHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuNi4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
Ni4yLnJzdAppbmRleCBhMTIxNWY1NzY4OWMuLjlkOTE5OTU3OTM5MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjIucnN0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi4yLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhp
cyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1
cGdyYWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNo
YW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9j
aGFuZ2Vsb2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDov
L2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFs
bCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMy5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMy5yc3QKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZGRhMjQ2MGRhY2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMy5yc3QKQEAgLTAsMCAr
MSwyNyBAQAorcHl0ZXN0LTMuNi4zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKworcHl0ZXN0IDMuNi4zIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKwor
VGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBU
byB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxs
IGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhp
cyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFkYW1FcjgKKyogQW50aG9ueSBTb3R0aWxlCisq
IEJydW5vIE9saXZlaXJhCisqIEplYW4tUGF1bCBDYWxkZXJvbmUKKyogSm9uIER1ZnJlc25lCisq
IE1hcmNlbG8gRHVhcnRlIFRyZXZpc2FuaQorKiBPbmTFmWVqIFPDumt1cAorKiBSb25ueSBQZmFu
bnNjaG1pZHQKKyogVC5FLkEgZGUgU291emEKKyogVmljdG9yIE1hcnlhbWEKKworCitIYXBweSB0
ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuNC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuNC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4yYzBmOWVmZWNjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuNC5yc3QKQEAgLTAsMCArMSwyNCBAQAorcHl0
ZXN0LTMuNi40Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0
ZXN0IDMuNi40IGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1
Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoK
KworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBp
cyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cu
aHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBh
bW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCZXJuaGFyZCBNLiBXaWVkZW1hbm4K
KyogQnJ1bm8gT2xpdmVpcmEKKyogRHJldworKiBFIEhlcnNoZXkKKyogSHVnbyBNYXJ0aW5zCisq
IFZsYWQgU2hjaGVyYmluYQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3Bt
ZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuNy4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNy4wLnJz
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5OTA4YTkxMDFjOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
Ny4wLnJzdApAQCAtMCwwICsxLDQxIEBACitweXRlc3QtMy43LjAKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5u
b3VuY2UgdGhlIDMuNy4wIHJlbGVhc2UhCisKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVz
dGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWluc3QgaXRzZWxmLCBwYXNz
aW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgorCitUaGlz
IHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRz
LCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxP
RzoKKworICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwK
KworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHA6
Ly9kb2NzLnB5dGVzdC5vcmcKKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkg
dmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hvIGNv
bnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbGFuCisqIEFsYW4g
QnJhbW1lcgorKiBBbW1hciBOYWpqYXIKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZl
aXJhCisqIEplZmZyZXkgUmFja2F1Y2thcworKiBLYWxlIEt1bmRlcnQKKyogUm9ubnkgUGZhbm5z
Y2htaWR0CisqIFNlcmhpaSBNb3pnaG92eWkKKyogVGFkZWsgVGVsZcW8ecWEc2tpCisqIFdpbCBD
b29sZXkKKyogYWJyYW1tZXIKKyogYXZpcmxybWEKKyogdHVydHVyaWNhCisKKworSGFwcHkgdGVz
dGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy43LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy43LjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uN2RhNWEzZTFmN2RmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy43LjEucnN0CkBAIC0wLDAgKzEsMjEgQEAKK3B5dGVz
dC0zLjcuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVz
dCAzLjcuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWct
Zml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisK
KyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogS2FsZSBL
dW5kZXJ0CisqIFJvbm55IFBmYW5uc2NobWlkdAorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0
ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuNy4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuNy4yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZj
YzYxMjE3NTJkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuNy4yLnJzdApAQCAtMCwwICsxLDI1IEBACitweXRlc3QtMy43LjIKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgMy43LjIgaGFzIGp1
c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3Mg
dG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyog
QW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogSm9z
aCBIb2xsYW5kCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBTYW5rdCBQZXRlcnNidWcKKyogV2Vz
IFRob21hcworKiB0dXJ0dXJpY2EKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZl
bG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjcuMy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjcu
My5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTg3ZGE2MGQy
MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjcuMy5yc3QKQEAgLTAsMCArMSwzMiBAQAorcHl0ZXN0LTMuNy4zCis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDMuNy4zIGhhcyBqdXN0IGJlZW4g
cmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBk
cm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3Jh
ZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2Rv
Yy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3
aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFuZHJldyBD
aGFtcGlvbgorKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhh
aGxlcgorKiBHYW5kYWxmIFNheGUKKyogSmVubmlmZXIgUmlua2VyCisqIE5hdGFuIExhbworKiBP
bmTFmWVqIFPDumt1cAorKiBSb25ueSBQZmFubnNjaG1pZHQKKyogU2Fua3QgUGV0ZXJzYnVnCisq
IFR5bGVyIFJpY2hhcmQKKyogVmljdG9yIE1hcnlhbWEKKyogVmxhZCBTaGNoZXJiaW5hCisqIHR1
cnR1cmljYQorKiB3aW0gZ2xlbm4KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZl
bG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjcuNC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjcu
NC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NWJlNDI5Mzg4
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjcuNC5yc3QKQEAgLTAsMCArMSwyMiBAQAorcHl0ZXN0LTMuNy40Cis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDMuNy40IGhhcyBqdXN0IGJlZW4g
cmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBk
cm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3Jh
ZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxs
IHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9u
eSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogSmlyaSBLdW5j
YXIKKyogU3RldmUgUGllcmN5CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxv
cG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMy44LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy44LjAu
cnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGMzNWE0NGY2ZDVh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
My44LjAucnN0CkBAIC0wLDAgKzEsMzggQEAKK3B5dGVzdC0zLjguMAorPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBh
bm5vdW5jZSB0aGUgMy44LjAgcmVsZWFzZSEKKworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0
ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMjAwMCB0ZXN0cworYWdhaW5zdCBpdHNlbGYsIHBh
c3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCisKK1Ro
aXMgcmVsZWFzZSBjb250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVu
dHMsIHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdF
TE9HOgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5o
dG1sCisKK0ZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVw
Z3JhZGUgZnJvbSBweXBpIHZpYToKKworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFu
a3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisK
KyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIENyYXp5TWVybHluCisqIERh
bmllbCBIYWhsZXIKKyogRmFiaW8gWmFkcm96bnkKKyogSmVmZnJleSBSYWNrYXVja2FzCisqIFJv
bm55IFBmYW5uc2NobWlkdAorKiBWaXJnaWwgRHVwcmFzCisqIGRoaXJlbnNyCisqIGhvZWZsaW5n
CisqIHdpbSBnbGVubgorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50
IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
OC4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuOC4xLnJzdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY4ZjhhY2NjNGM5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuOC4x
LnJzdApAQCAtMCwwICsxLDI1IEBACitweXRlc3QtMy44LjEKKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgMy44LjEgaGFzIGp1c3QgYmVlbiByZWxlYXNl
ZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4g
cmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRl
c3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0
ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNv
bnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbmtpdCBHb2VsCisq
IEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIE1h
eGltaWxpYW4gQWxiZXJ0CisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBXaWxsaWFtIEphbWlyIFNp
bHZhCisqIHdpbSBnbGVubgorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3Bt
ZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuOC4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuOC4yLnJz
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjllYTk0Yzk4YTIxMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
OC4yLnJzdApAQCAtMCwwICsxLDI4IEBACitweXRlc3QtMy44LjIKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgMy44LjIgaGFzIGp1c3QgYmVlbiByZWxl
YXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3At
aW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBw
eXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hv
IGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbmtpdCBHb2Vs
CisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisq
IERlbmlzIE90a2lkYWNoCisqIEhhcnJ5IFBlcmNpdmFsCisqIEplZmZyZXkgUmFja2F1Y2thcwor
KiBKb3NlIENhcmxvcyBNZW5lemVzCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBaYWMgSGF0Zmll
bGQtRG9kZHMKKyogaXdhbmIKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9w
bWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjkuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjkuMC5y
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYmU2Y2Y1YmU4YTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0z
LjkuMC5yc3QKQEAgLTAsMCArMSw0MyBAQAorcHl0ZXN0LTMuOS4wCis9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFu
bm91bmNlIHRoZSAzLjkuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRl
c3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFz
c2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhp
cyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50
cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VM
T0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBn
cmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5r
cyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKwor
KiBBbmRyZWEgQ2ltYXRvcmlidXMKKyogQW5raXQgR29lbAorKiBBbnRob255IFNvdHRpbGUKKyog
QmVuIEV5YWwKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBKZWZmcmV5IFJh
Y2thdWNrYXMKKyogSm9zZSBDYXJsb3MgTWVuZXplcworKiBLeWxlIEFsdGVuZG9yZgorKiBOaWts
YXMgSlEKKyogUGFsYXNoIENoYXR0ZXJqZWUKKyogUm9ubnkgUGZhbm5zY2htaWR0CisqIFRob21h
cyBIZXNzCisqIFRob21hcyBIaXNjaAorKiBUb21lciBLZXJlbgorKiBWaWN0b3IgTWFyeWFtYQor
CisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuOS4xLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuOS4xLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUxYWZiMzc1OWQyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuOS4xLnJzdApAQCAtMCwwICsx
LDIwIEBACitweXRlc3QtMy45LjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorCitweXRlc3QgMy45LjEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitU
aGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRv
IHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwg
Y2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRo
aXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBCcnVubyBPbGl2ZWlyYQorKiBSb25ueSBQZmFu
bnNjaG1pZHQKKyogVGhvbWFzIEhpc2NoCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3Qg
RGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy45LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
My45LjIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjNlOTRl
NWFhYmJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMy45LjIucnN0CkBAIC0wLDAgKzEsMjMgQEAKK3B5dGVzdC0zLjkuMgorPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCAzLjkuMiBoYXMganVzdCBi
ZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5n
IGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11
cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRv
IGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFu
a2l0IEdvZWwKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIFJvbm55IFBm
YW5uc2NobWlkdAorKiBWaW5jZW50IEJhcmJhcmVzaQorKiB5a2FudG9yCisKKworSGFwcHkgdGVz
dGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy45LjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy45LjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNjYxZGRiNWNiNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy45LjMucnN0CkBAIC0wLDAgKzEsMjQgQEAKK3B5dGVz
dC0zLjkuMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVz
dCAzLjkuMyBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWct
Zml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisK
KyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMg
YXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cu
aHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBh
bW9uZyB0aGVtOgorCisqIEFuZHJlYXMgUHJvZm91cworKiBBbmtpdCBHb2VsCisqIEFudGhvbnkg
U290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIEpvbiBEdWZyZXNu
ZQorKiBSb25ueSBQZmFubnNjaG1pZHQKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBE
ZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9yZWxlYXNlLm1p
bm9yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuMC4wLnJzdApz
aW1pbGFyaXR5IGluZGV4IDYxJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9yZWxlYXNl
Lm1pbm9yLnJzdApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
NC4wLjAucnN0CmluZGV4IGJkZDgyODJjZmFkOS4uNWViMDEwNzc1OGE0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90YXNrcy9yZWxlYXNlLm1pbm9yLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS00LjAuMC5yc3QKQEAgLTEsMTkgKzEsMTkgQEAKLXB5dGVzdC17
dmVyc2lvbn0KK3B5dGVzdC00LjAuMAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CiAKLVRoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUge3ZlcnNp
b259IHJlbGVhc2UhCitUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDQu
MC4wIHJlbGVhc2UhCiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdp
dGggbW9yZSB0aGFuIGEgMjAwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0
aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMjAwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Np
bmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFRoaXMg
cmVsZWFzZSBjb250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMs
IHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCiB0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9H
OgogCi0gICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbAor
ICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAogCiBG
b3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgogCi0gICAgaHR0cDovL2Rv
Y3MucHl0ZXN0Lm9yZworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KIAog
QXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgogCkBAIC0yMSw3ICsyMSwx
MCBAQCBBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6CiAKIFRoYW5rcyB0
byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIAote2Nv
bnRyaWJ1dG9yc30KKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBSb25ueSBQ
ZmFubnNjaG1pZHQKKwogCiBIYXBweSB0ZXN0aW5nLAogVGhlIFB5dGVzdCBEZXZlbG9wbWVudCBU
ZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjAu
MS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjAuMS5yc3QKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yOTAyYTZkYjlmYjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjAuMS5y
c3QKQEAgLTAsMCArMSwyMyBAQAorcHl0ZXN0LTQuMC4xCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDQuMC4xIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQg
dG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJl
cGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0
CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250
cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxl
CisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogTWljaGFlbCBELiBIb3lsZQor
KiBSb25ueSBQZmFubnNjaG1pZHQKKyogU2xhbQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0
ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTQuMC4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTQuMC4yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY0
MzliODhmZTJjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTQuMC4yLnJzdApAQCAtMCwwICsxLDI0IEBACitweXRlc3QtNC4wLjIKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNC4wLjIgaGFzIGp1
c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5r
cyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKwor
KiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBQ
ZWRybyBBbGdhcnZpbworKiBSb25ueSBQZmFubnNjaG1pZHQKKyogVG9tZXIgS2VyZW4KKyogWWFz
aCBUb2RpCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4xLjAucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4xLjAucnN0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzE0NTY0ZWViNmY3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4xLjAucnN0CkBA
IC0wLDAgKzEsNDQgQEAKK3B5dGVzdC00LjEuMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUg
NC4xLjAgcmVsZWFzZSEKKworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wg
d2l0aCBtb3JlIHRoYW4gMjAwMCB0ZXN0cworYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFu
eSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCisKK1RoaXMgcmVsZWFzZSBj
b250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJz
IGFyZSBlbmNvdXJhZ2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgorCisgICAg
aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCisKK0ZvciBj
b21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBw
eXBpIHZpYToKKworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxsIHdo
byBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQWRhbSBKb2hu
c29uCisqIEFseSBTaXZqaQorKiBBbmRyZXkgUGFyYW1vbm92CisqIEFudGhvbnkgU290dGlsZQor
KiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIERhdmlkIFZvCisqIEh5dW5jaGVs
IEtpbQorKiBKZWZmcmV5IFJhY2thdWNrYXMKKyogS2FuZ3Vyb3MKKyogTmljaG9sYXMgRGV2ZW5p
c2gKKyogUGVkcm8gQWxnYXJ2aW8KKyogUmFuZHkgQmFybG93CisqIFJvbm55IFBmYW5uc2NobWlk
dAorKiBUb21lciBLZXJlbgorKiBmZXVpbGxlbW9ydGUKKyogd2ltIGdsZW5uCisKKworSGFwcHkg
dGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4xLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtNC4xLjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMWY0NWUwODJmODkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4xLjEucnN0CkBAIC0wLDAgKzEsMjcgQEAKK3B5
dGVzdC00LjEuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5
dGVzdCA0LjEuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBi
dWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6
CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cg
aXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vs
b2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNl
LCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBBbnRvbiBMb2RkZXIKKyogQnJ1
bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBEYXZpZCBWbworKiBPc2NhciBCZW5qYW1p
bgorKiBSb25ueSBQZmFubnNjaG1pZHQKKyogVmljdG9yIE1hcnlhbWEKKyogWW9hdiBDYXNwaQor
KiBkbWl0cnkuZHlnYWxvCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1l
bnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
NC4yLjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4yLjAucnN0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmNkN2Y3NzU0NzkzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4y
LjAucnN0CkBAIC0wLDAgKzEsMzcgQEAKK3B5dGVzdC00LjIuMAorPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5v
dW5jZSB0aGUgNC4yLjAgcmVsZWFzZSEKKworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0
aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMjAwMCB0ZXN0cworYWdhaW5zdCBpdHNlbGYsIHBhc3Np
bmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCisKK1RoaXMg
cmVsZWFzZSBjb250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMs
IHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9H
OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1s
CisKK0ZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRw
czovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3Jh
ZGUgZnJvbSBweXBpIHZpYToKKworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3Mg
dG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyog
QWRhbSBVaGxpcgorKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogQ2hyaXN0
b3BoZXIgRGlnbmFtCisqIERhbmllbCBIYWhsZXIKKyogSm9zZXBoIEh1bmtlbGVyCisqIEtyaXN0
b2ZmZXIgTm9yZHN0cm9lbQorKiBSb25ueSBQZmFubnNjaG1pZHQKKyogVGhvbWFzIEhpc2NoCisq
IHdpbSBnbGVubgorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRl
YW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuMi4x
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuMi4xLnJzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM2YmVhZmUxMWQyZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuMi4xLnJz
dApAQCAtMCwwICsxLDMwIEBACitweXRlc3QtNC4yLjEKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitweXRlc3QgNC4yLjEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0
byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVw
bGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QK
KworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRy
aWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUK
KyogQXJlbCBDb3JkZXJvCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogSG9s
Z2VyIEtvaHIKKyogS2V2aW4gSi4gRm9sZXkKKyogTmljayBNdXJwaHkKKyogUGF3ZcWCIFN0cmFk
b21za2kKKyogUmFwaGFlbCBQaWVyemluYQorKiBSb25ueSBQZmFubnNjaG1pZHQKKyogU2FtIEJy
aWdodG1hbgorKiBUaG9tYXMgSGlzY2gKKyogWmFjIEhhdGZpZWxkLURvZGRzCisKKworSGFwcHkg
dGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4zLjAucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtNC4zLjAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uM2IwYjQyODA5MjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4zLjAucnN0CkBAIC0wLDAgKzEsMzYgQEAKK3B5
dGVzdC00LjMuMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1Ro
ZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgNC4zLjAgcmVsZWFzZSEKKwor
cHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMjAw
MCB0ZXN0cworYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJw
cmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCisKK1RoaXMgcmVsZWFzZSBjb250YWlucyBhIG51bWJlciBv
ZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCit0
byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCisKK0ZvciBjb21wbGV0ZSBkb2N1bWVudGF0
aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBweXBpIHZpYToKKworICAgIHBp
cCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0
aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW5kcmFzIE1pdHpraQorKiBBbnRob255IFNv
dHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogQ2hyaXN0aWFuIEZldHplcgorKiBEYW5pZWwgSGFo
bGVyCisqIEdyeWdvcmlpIEllcm1vbGVua28KKyogUi4gQWxleCBNYXRldmlzaAorKiBSb25ueSBQ
ZmFubnNjaG1pZHQKKyogY2NsYXVzcworCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0ZXN0IERl
dmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTQuMy4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQu
My4xLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQyNTFjNzQ0
ZTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTQuMy4xLnJzdApAQCAtMCwwICsxLDI4IEBACitweXRlc3QtNC4zLjEKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNC4zLjEgaGFzIGp1c3QgYmVl
biByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBh
IGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBn
cmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczov
L2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBh
bGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbmRy
YXMgTWl0emtpCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwg
SGFobGVyCisqIERhbmlsbyBIb3J0YQorKiBHcnlnb3JpaSBJZXJtb2xlbmtvCisqIEplZmYgSGFs
ZQorKiBLeWxlIEFsdGVuZG9yZgorKiBTdGVwaGFuIEhveWVyCisqIFphYyBIYXRmaWVsZC1Eb2Rk
cworKiBzb25nYm93ZW4KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVu
dCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00
LjQuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjQuMC5yc3QK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYzg5NzM5ZDBhYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjQu
MC5yc3QKQEAgLTAsMCArMSwzOSBAQAorcHl0ZXN0LTQuNC4wCis9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91
bmNlIHRoZSA0LjQuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3Rp
bmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFzc2lu
ZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhpcyBy
ZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywg
c28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6
CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwK
KworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFk
ZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0
byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBB
bnRob255IFNvdHRpbGUKKyogQXBhRG9jdG9yCisqIEJlcm5oYXJkIE0uIFdpZWRlbWFubgorKiBC
cmlhbiBTa2lubgorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIEdhcnkgVHls
ZXIKKyogSmVvbmcgWXVuV29uCisqIE1pcm8gSHJvbsSNb2sKKyogVGFrYWZ1bWkgQXJha2FraQor
KiBoZW5yeWtpcm9uZGUKKyogc21oZWlkcmljaAorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0
ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTQuNC4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTQuNC4xLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEy
NzJjZDhmZGUxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTQuNC4xLnJzdApAQCAtMCwwICsxLDIwIEBACitweXRlc3QtNC40LjEKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNC40LjEgaGFzIGp1
c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5r
cyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKwor
KiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorCisK
K0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNC4yLnJzdCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNC4yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjU4NzZlODNiM2I2YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNC4yLnJzdApAQCAtMCwwICsxLDMz
IEBACitweXRlc3QtNC40LjIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorCitweXRlc3QgNC40LjIgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlz
IGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVw
Z3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hh
bmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
Y2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMg
cmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbGxhbiBMZXdpcworKiBBbnRob255IFNvdHRpbGUK
KyogQnJ1bm8gT2xpdmVpcmEKKyogRGFtaWFuU2tyenlwY3phaworKiBEYW5pZWwgSGFobGVyCisq
IERvbiBLaXJrYnkKKyogRG91Z2xhcyBUaG9yCisqIEh1Z28KKyogSWx5YSBLb25zdGFudGlub3YK
KyogSm9uIER1ZnJlc25lCisqIE1hdHQgQ29vcGVyCisqIE5pa29sYXkgS29uZHJhdHlldgorKiBP
bmTFmWVqIFPDumt1cAorKiBQZXRlciBTY2h1dHQKKyogUm9tYWluIENob3NzYXJ0CisqIFNpdGFr
dGlmCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC41LjAucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC41LjAucnN0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDJhMDVkNGY3OTUyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC41LjAucnN0CkBAIC0w
LDAgKzEsMzQgQEAKK3B5dGVzdC00LjUuMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgNC41
LjAgcmVsZWFzZSEKKworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0
aCBtb3JlIHRoYW4gMjAwMCB0ZXN0cworYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBk
aWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCisKK1RoaXMgcmVsZWFzZSBjb250
YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJzIGFy
ZSBlbmNvdXJhZ2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgorCisgICAgaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCisKK0ZvciBjb21w
bGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2RvY3MucHl0
ZXN0Lm9yZy9lbi9zdGFibGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBweXBp
IHZpYToKKworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxsIHdobyBj
b250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0
aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogRmxvcmlzIEJydXlub29n
aGUKKyogUHVsa2l0IEdveWFsCisqIFNhbXVlbCBTZWFybGVzLUJyeWFudAorKiBaYWMgSGF0Zmll
bGQtRG9kZHMKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIFB5dGVzdCBEZXZlbG9wbWVudCBUZWFt
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMC5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMC5yc3QKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hODJmZGQ0N2Q2ZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMC5yc3QK
QEAgLTAsMCArMSw0MyBAQAorcHl0ZXN0LTQuNi4wCis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRo
ZSA0LjYuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9v
bCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBt
YW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNl
IGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNl
cnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CisKKyAg
ICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKKworRm9y
IGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9t
IHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwg
d2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBa2lvbWkg
S2FtYWt1cmEKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBI
YWhsZXIKKyogRGF2aWQgUsO2dGhsaXNiZXJnZXIKKyogRXZhbiBLZXBuZXIKKyogSmVmZnJleSBS
YWNrYXVja2FzCisqIE15Q29tcHV0ZXIKKyogTmlraXRhIEtyb2tvc2gKKyogUmF1bCBUYW1icmUK
KyogVGhvbWFzIEhpc2NoCisqIFRpbSBIb2ZmbWFubgorKiBUb21lciBLZXJlbgorKiBWaWN0b3Ig
TWFyeWFtYQorKiBkYW5pZWx4MTIzCisqIG9sZWcteWVnb3JvdgorCisKK0hhcHB5IHRlc3Rpbmcs
CitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTQuNi4xLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmM3OTgzOWI3YjUyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTQuNi4xLnJzdApAQCAtMCwwICsxLDE5IEBACitweXRlc3QtNC42
LjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNC42
LjEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCBy
ZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBp
cCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWls
YWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwu
CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcg
dGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKworCitIYXBweSB0
ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5jZmM1OTUyOTNhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMi5yc3QKQEAgLTAsMCArMSwxOCBAQAorcHl0
ZXN0LTQuNi4yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0
ZXN0IDQuNi4yIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1
Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoK
KworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBp
cyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxv
Zy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2Us
IGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisKKworSGFwcHkgdGVzdGluZywKK1Ro
ZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtNC42LjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtNC42LjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZjU3ODQ2NGE3YTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNC42LjMucnN0CkBAIC0wLDAgKzEsMjEgQEAKK3B5dGVzdC00LjYuMwor
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjYuMyBo
YXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVh
c2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGlu
c3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxl
IGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKwor
VGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVt
OgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVy
CisqIERpcmsgVGhvbWFzCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1l
bnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
NC42LjQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjQucnN0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGVlZmNiZWIxYzI3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42
LjQucnN0CkBAIC0wLDAgKzEsMjIgQEAKK3B5dGVzdC00LjYuNAorPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjYuNCBoYXMganVzdCBiZWVuIHJlbGVh
c2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1p
biByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5
dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8g
Y29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290
dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIFRob21hcyBHcmFpbmdl
cgorKiBaYWMgSGF0ZmllbGQtRG9kZHMKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBE
ZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS00LjYuNS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00
LjYuNS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xZWJmMzYx
ZmRmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS00LjYuNS5yc3QKQEAgLTAsMCArMSwyMSBAQAorcHl0ZXN0LTQuNi41Cis9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDQuNi41IGhhcyBqdXN0IGJl
ZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcg
YSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVw
Z3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8g
YWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50
aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogVGhvbWFz
IEdyYWluZ2VyCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVh
bQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjYu
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjYucnN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjNiZjFlNDMxYzdiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjYucnN0
CkBAIC0wLDAgKzEsMjAgQEAKK3B5dGVzdC00LjYuNgorPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjYuNiBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRv
IFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBs
YWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAor
CitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJp
YnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQor
KiBCcnVubyBPbGl2ZWlyYQorKiBNaWNoYWVsIEdvZXJ6CisKKworSGFwcHkgdGVzdGluZywKK1Ro
ZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtNC42LjcucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtNC42LjcucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZjlkMDE4NDVlYzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNC42LjcucnN0CkBAIC0wLDAgKzEsMTkgQEAKK3B5dGVzdC00LjYuNwor
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjYuNyBo
YXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVh
c2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGlu
c3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxl
IGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKwor
VGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVt
OgorCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKworCitIYXBweSB0ZXN0aW5n
LAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuOC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS00LjYuOC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi41Y2FiZTc4MjZlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuOC5yc3QKQEAgLTAsMCArMSwyMCBAQAorcHl0ZXN0LTQu
Ni44Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDQu
Ni44IGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXgg
cmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBw
aXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFp
bGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1s
LgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25n
IHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIFJ5YW4gTWFz
dAorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi45LnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi45LnJzdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmN2JiNTk5NmVhZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi45LnJzdApAQCAtMCww
ICsxLDIxIEBACitweXRlc3QtNC42LjkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorCitweXRlc3QgNC42LjkgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgor
CitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQu
IFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1
bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRv
IHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8g
T2xpdmVpcmEKKyogRmVsaXggWWFuCisqIEh1Z28KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5
dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS01LjAuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS01LjAuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m
NWU1OTNlOWQ4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS01LjAuMC5yc3QKQEAgLTAsMCArMSw0NiBAQAorcHl0ZXN0LTUuMC4wCis9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlz
IHByb3VkIHRvIGFubm91bmNlIHRoZSA1LjAuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1
cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0
IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRm
b3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5k
IGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0
IHRoZSBDSEFOR0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
Y2hhbmdlbG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNp
dDoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWws
IHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0
ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVs
IEhhaGxlcgorKiBEaXJrIFRob21hcworKiBFdmFuIEtlcG5lcgorKiBGbG9yaWFuIEJydWhpbgor
KiBIdWdvCisqIEtldmluIEouIEZvbGV5CisqIFB1bGtpdCBHb3lhbAorKiBSYWxwaCBHaWxlcwor
KiBSb25ueSBQZmFubnNjaG1pZHQKKyogVGhvbWFzIEdyYWluZ2VyCisqIFRob21hcyBIaXNjaAor
KiBUaW0gR2F0ZXMKKyogVmljdG9yIE1hcnlhbWEKKyogWXVyaSBBcG9sbG92CisqIFphYyBIYXRm
aWVsZC1Eb2RkcworKiBjdXJpb3VzamF6ejc3CisqIHBhdHJpa3NldmFsbGl1cworCisKK0hhcHB5
IHRlc3RpbmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMC4xLnJzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMC4xLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmUxNmE4ZjcxNmYxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMC4xLnJzdApAQCAtMCwwICsxLDI1IEBACitw
eXRlc3QtNS4wLjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitw
eXRlc3QgNS4wLjEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEg
YnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6
OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9n
IGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdl
bG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFz
ZSwgYW1vbmcgdGhlbToKKworKiBBbWlyRWxrZXNzCisqIEFuZHJldSBWYWxsYm9uYSBQbGF6YXMK
KyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIEZsb3JpYW4gQnJ1aGluCisq
IE1pY2hhZWwgTW9vcmUKKyogTmlrbGFzIE1laW56ZXIKKyogVGhvbWFzIEdyYWluZ2VyCisKKwor
SGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjAucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uOWFiNTRmZjk3MzA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjAucnN0CkBAIC0wLDAgKzEsNTYg
QEAKK3B5dGVzdC01LjEuMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgNS4xLjAgcmVsZWFz
ZSEKKworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRo
YW4gMjAwMCB0ZXN0cworYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQg
aW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCisKK1RoaXMgcmVsZWFzZSBjb250YWlucyBhIG51
bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJzIGFyZSBlbmNvdXJh
Z2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgorCisgICAgaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCisKK0ZvciBjb21wbGV0ZSBkb2N1
bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBweXBpIHZpYToKKwor
ICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRl
ZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQWxiZXJ0IFR1Z3VzaGV2CisqIEFs
ZXhleSBaYW5rZXZpY2gKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERh
bmllbCBIYWhsZXIKKyogRGF2aWQgUsO2dGhsaXNiZXJnZXIKKyogRmxvcmlhbiBCcnVoaW4KKyog
SWx5YSBTdGVwaW4KKyogSm9uIER1ZnJlc25lCisqIEthaXFpCisqIE1heCBSCisqIE1pcm8gSHJv
bsSNb2sKKyogT2xpdmVyIEJlc3R3YWx0ZXIKKyogUmFuIEJlbml0YQorKiBSb25ueSBQZmFubnNj
aG1pZHQKKyogU2FtdWVsIFNlYXJsZXMtQnJ5YW50CisqIFNlbWVuIFpoeWRlbmtvCisqIFN0ZWZm
ZW4gU2Nocm9lZGVyCisqIFRob21hcyBHcmFpbmdlcgorKiBUaW0gSG9mZm1hbm4KKyogV2lsbGlh
bSBXb29kYWxsCisqIFdvanRlayBFcmJldG93c2tpCisqIFhpeGkgWmhhbworKiBZYXNoIFRvZGkK
KyogYm9yaXMKKyogZG1pdHJ5LmR5Z2FsbworKiBoZWxsb29jYworKiBtYXJ0YmxuCisqIG1laS1s
aQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMS4xLnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMS4xLnJzdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiOGRlNDgwMTRhYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMS4xLnJzdApAQCAtMCww
ICsxLDI0IEBACitweXRlc3QtNS4xLjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorCitweXRlc3QgNS4xLjEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgor
CitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQu
IFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1
bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRv
IHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8g
T2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBGbG9yaWFuIEJydWhpbgorKiBIdWdvIHZhbiBL
ZW1lbmFkZQorKiBSYW4gQmVuaXRhCisqIFJvbm55IFBmYW5uc2NobWlkdAorCisKK0hhcHB5IHRl
c3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMS4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTUuMS4yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmM0Y2I4ZTNmYjQ0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMS4yLnJzdApAQCAtMCwwICsxLDIzIEBACitweXRl
c3QtNS4xLjIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRl
c3QgNS4xLjIgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVn
LWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6Ogor
CisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlz
IGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwg
YW1vbmcgdGhlbToKKworKiBBbmRyemVqIEtsYWpuZXJ0CisqIEFudGhvbnkgU290dGlsZQorKiBC
cnVubyBPbGl2ZWlyYQorKiBDaHJpc3RpYW4gTmV1bcO8bGxlcgorKiBSb2JlcnQgSG9sdAorKiBs
aW5jaGl3ZWkxMjMKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBU
ZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjEu
My5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjEuMy5yc3QKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNGU4OGFlZDI4ZWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjEuMy5y
c3QKQEAgLTAsMCArMSwyMyBAQAorcHl0ZXN0LTUuMS4zCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDUuMS4zIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQg
dG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJl
cGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0
CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250
cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxl
CisqIEJydW5vIE9saXZlaXJhCisqIENocmlzdGlhbiBOZXVtw7xsbGVyCisqIERhbmllbCBIYWhs
ZXIKKyogR2VuZSBXb29kCisqIEh1Z28KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBE
ZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS01LjIuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01
LjIuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNDM3Njdi
NzUwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS01LjIuMC5yc3QKQEAgLTAsMCArMSwzNSBAQAorcHl0ZXN0LTUuMi4wCis9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3Vk
IHRvIGFubm91bmNlIHRoZSA1LjIuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0
aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2Vs
ZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4K
KworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJv
dmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBD
SEFOR0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdl
bG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKwor
ICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBj
YW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisK
K1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhl
bToKKworKiBBbmRyemVqIEtsYWpuZXJ0CisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2
ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIEphbWVzIENvb2tlCisqIE1pY2hhZWwgR29lcnoKKyog
UmFuIEJlbml0YQorKiBUb23DocWhIENodsOhdGFsCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQ
eXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNS4yLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtNS4yLjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZmU0MmI5YmYxNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtNS4yLjEucnN0CkBAIC0wLDAgKzEsMjMgQEAKK3B5dGVzdC01LjIuMQorPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjIuMSBoYXMg
anVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhh
bmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgor
CisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBGbG9yaWFuIEJydWhpbgor
KiBIeW5layBTY2hsYXdhY2sKKyogS2V2aW4gSi4gRm9sZXkKKyogdGFkYXNoaWdha2kKKworCitI
YXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuMi5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi44OWZkNmE1MzRkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuMi5yc3QKQEAgLTAsMCArMSwyOSBA
QAorcHl0ZXN0LTUuMi4yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworcHl0ZXN0IDUuMi4yIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBp
cyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdy
YWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5n
ZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2No
YW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJl
bGVhc2UsIGFtb25nIHRoZW06CisKKyogQWxiZXJ0IFR1Z3VzaGV2CisqIEFuZHJ6ZWogS2xham5l
cnQKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIK
KyogRmxvcmlhbiBCcnVoaW4KKyogTmF0dGFwaG9vbSBDaGFpcHJlZWNoYQorKiBPbGl2ZXIgQmVz
dHdhbHRlcgorKiBQaGlsaXBwIExvb3NlCisqIFJhbiBCZW5pdGEKKyogVmljdG9yIE1hcnlhbWEK
KyogWW9hdiBDYXNwaQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50
IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUu
Mi4zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4zLnJzdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJhYjE3NDQ5NWQ5NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4z
LnJzdApAQCAtMCwwICsxLDI4IEBACitweXRlc3QtNS4yLjMKKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNS4yLjMgaGFzIGp1c3QgYmVlbiByZWxlYXNl
ZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4g
cmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRl
c3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0
ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNv
bnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRp
bGUKKyogQnJldHQgQ2Fubm9uCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyog
RGFuaWlsIEdhbGlldgorKiBEYXZpZCBTem90dGVuCisqIEZsb3JpYW4gQnJ1aGluCisqIFBhdHJp
Y2sgSGFybW9uCisqIFJhbiBCZW5pdGEKKyogWmFjIEhhdGZpZWxkLURvZGRzCisqIFphayBIYXNz
YW4KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuNC5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuNC5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjUxODk2Nzk3NWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuNC5yc3QKQEAgLTAs
MCArMSwyMiBAQAorcHl0ZXN0LTUuMi40Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKworcHl0ZXN0IDUuMi40IGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4K
KworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50
LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBm
dWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0
byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5v
IE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogSHVnbworKiBNaWNoYWVsIFNoaWVsZHMKKwor
CitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuMC5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMTNhNzFmMDlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuMC5yc3QKQEAgLTAsMCArMSw0
NSBAQAorcHl0ZXN0LTUuMy4wCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSA1LjMuMCByZWxl
YXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUg
dGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVu
dCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEg
bnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291
cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CisKKyAgICBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRv
Y3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgor
CisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1
dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbmpvTWFuCisqIEFudGhvbnkg
U290dGlsZQorKiBBbnRvbiBMb2RkZXIKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxl
cgorKiBHcmVnb3J5IExlZQorKiBKb3NoIEthcnBlbAorKiBKb3NoS2FycGVsCisqIEpvc2h1YSBT
dG9yY2sKKyogS2FsZSBLdW5kZXJ0CisqIE1hcmNvR29yZWxsaQorKiBNaWNoYWVsIEtyZWJzCisq
IE5OUmVwb3MKKyogUmFuIEJlbml0YQorKiBUSDNDSEFSTGllCisqIFRpYm9yIEFycGFzCisqIFph
YyBIYXRmaWVsZC1Eb2RkcworKiDmnpfnjq4KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIFB5dGVz
dCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS01LjMuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS01LjMuMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNTc1
YmI3MGUzZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS01LjMuMS5yc3QKQEAgLTAsMCArMSwyNiBAQAorcHl0ZXN0LTUuMy4xCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDUuMy4xIGhhcyBqdXN0
IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVp
bmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAt
LXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3Mg
dG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyog
QW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogRmVs
aXggWWFuCisqIEZsb3JpYW4gQnJ1aGluCisqIE1hcmsgRGlja2luc29uCisqIE5pa29sYXkgS29u
ZHJhdHlldgorKiBTdGVmZmVuIFNjaHJvZWRlcgorKiBaYWMgSGF0ZmllbGQtRG9kZHMKKworCitI
YXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuMi5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kNTYyYTMzZmIwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuMi5yc3QKQEAgLTAsMCArMSwyNiBA
QAorcHl0ZXN0LTUuMy4yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworcHl0ZXN0IDUuMy4yIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBp
cyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdy
YWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5n
ZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2No
YW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJl
bGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJh
CisqIENsYXVkaW8gTWFkb3R0bworKiBEYW5pZWwgSGFobGVyCisqIEphcmVkIFZhc3F1ZXoKKyog
TWljaGFlbCBSb3NlCisqIFJhbiBCZW5pdGEKKyogUm9ubnkgUGZhbm5zY2htaWR0CisqIFphYyBI
YXRmaWVsZC1Eb2RkcworCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50
IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUu
My4zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4zLnJzdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQwYTZmYjViNTYwYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4z
LnJzdApAQCAtMCwwICsxLDMwIEBACitweXRlc3QtNS4zLjMKKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNS4zLjMgaGFzIGp1c3QgYmVlbiByZWxlYXNl
ZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4g
cmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRl
c3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0
ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNv
bnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBZGFtIEpvaG5zb24K
KyogQWxleGFuZHJlIE11bGF0aW5obworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVp
cmEKKyogQ2hyaXMgTmVKYW1lCisqIERhbmllbCBIYWhsZXIKKyogSHVnbyB2YW4gS2VtZW5hZGUK
KyogTWFyY2VsbyBEdWFydGUgVHJldmlzYW5pCisqIFBhdWxDCisqIFJhbiBCZW5pdGEKKyogUnlh
biBCYXJuZXIKKyogU2V0aCBKdW5vdAorKiBtYXJjCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBw
eXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNS4zLjQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtNS4zLjQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MDc1MGE5ZDQwNGVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtNS4zLjQucnN0CkBAIC0wLDAgKzEsMjAgQEAKK3B5dGVzdC01LjMuNAorPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjMuNCBoYXMg
anVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhh
bmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgor
CisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogUmFuIEJlbml0YQorCisKK0hh
cHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy41LnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy41LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmU2MzJjZTg1Mzg4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy41LnJzdApAQCAtMCwwICsxLDE5IEBA
CitweXRlc3QtNS4zLjUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
CitweXRlc3QgNS4zLjUgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlz
IGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3Jh
ZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdl
bG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hh
bmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVs
ZWFzZSwgYW1vbmcgdGhlbToKKworKiBEYW5pZWwgSGFobGVyCisqIFJhbiBCZW5pdGEKKworCitI
YXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjQuMC5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjQuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi40M2RmZmM5MjkwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjQuMC5yc3QKQEAgLTAsMCArMSw1OSBA
QAorcHl0ZXN0LTUuNC4wCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSA1LjQuMCByZWxlYXNl
IQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhh
biAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBp
bnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVt
YmVyIG9mIGJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdl
ZAordG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1l
bnRhdGlvbiwgcGxlYXNlIHZpc2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlLworCitBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gUHlQSSB2aWE6CisKKyAg
ICBwaXAgaW5zdGFsbCAtVSBweXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQg
dG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVu
byBPbGl2ZWlyYQorKiBDaHJpc3RvcGggQnVlbHRlcgorKiBDaHJpc3RvcGggQsO8bHRlcgorKiBE
YW5pZWwgQXJuZHQKKyogRGFuaWVsIEhhaGxlcgorKiBIb2xnZXIgS29ocgorKiBIdWdvCisqIEh1
Z28gdmFuIEtlbWVuYWRlCisqIEpha3ViIE1pdG9yYWoKKyogS3lsZSBBbHRlbmRvcmYKKyogTWlu
dWRkaW4gQWhtZWQgUmFuYQorKiBOYXRoYW5pZWwgQ29tcHRvbgorKiBQYXJldG9MaWZlCisqIFBh
dWxpIFZpcnRhbmVuCisqIFBoaWxpcHAgTG9vc2UKKyogUmFuIEJlbml0YQorKiBSb25ueSBQZmFu
bnNjaG1pZHQKKyogU3RlZmFuIFNjaGVyZmtlCisqIFN0ZWZhbm8gTWF6enVjY28KKyogVFdvb2Q2
NworKiBUb2JpYXMgU2NobWlkdAorKiBUb23DocWhIEdhdmVuxI1pYWsKKyogVmluYXkgQ2FsYXN0
cnkKKyogVmxhZHlzbGF2IFJhY2hlaworKiBaYWMgSGF0ZmllbGQtRG9kZHMKKyogY2FwdGFpbkNh
cGl0YWxpc20KKyogY21hY2hhbG8KKyogZ2Z0ZWEKKyoga3BpbmMKKyogcmViZWNjYS1wYWxtZXIK
Kyogc2RlbWVudGVuCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQg
VGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40
LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjEucnN0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjZhNjRlZmE0OTI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjEu
cnN0CkBAIC0wLDAgKzEsMTggQEAKK3B5dGVzdC01LjQuMQorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjQuMSBoYXMganVzdCBiZWVuIHJlbGVhc2Vk
IHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiBy
ZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVz
dAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29u
dHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEJydW5vIE9saXZlaXJh
CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjIucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjIucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDc0MmRkNGFhZDQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjIucnN0CkBAIC0wLDAg
KzEsMjIgQEAKK3B5dGVzdC01LjQuMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisKK3B5dGVzdCA1LjQuMiBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisK
K1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4g
VG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVs
bCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBP
bGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIFJhbiBCZW5pdGEKKyogUm9ubnkgUGZhbm5zY2ht
aWR0CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjMucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjMucnN0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmM5OTVjMTYzMzkyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS40LjMucnN0CkBAIC0w
LDAgKzEsMjEgQEAKK3B5dGVzdC01LjQuMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CisKK3B5dGVzdCA1LjQuMyBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEku
CisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVu
dC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUg
ZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQg
dG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVu
byBPbGl2ZWlyYQorKiBSYW4gQmVuaXRhCisqIFRvciBDb2x2aW4KKworCitIYXBweSB0ZXN0aW5n
LAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02LjAuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS02LjAuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45NzA2ZmU1OWJjNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS02LjAuMC5yc3QKQEAgLTAsMCArMSw0MCBAQAorcHl0ZXN0LTYu
MC4wCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVz
dCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSA2LjAuMCByZWxlYXNlIQorCitweXRlc3Qg
aXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3Rz
CithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMg
YW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1ZyBm
aXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFrZSBh
IGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxl
YXNlIHZpc2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0LworCitB
cyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gUHlQSSB2aWE6CisKKyAgICBwaXAgaW5zdGFs
bCAtVSBweXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxl
YXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBBcnZpbiBGaXJvdXppCisq
IEJydW5vIE9saXZlaXJhCisqIERlYmkgTWlzaHJhCisqIEdhcnJldHQgVGhvbWFzCisqIEh1Z28g
dmFuIEtlbWVuYWRlCisqIEtlbHRvbiBCYXNzaW5ndGh3YWl0ZQorKiBLb3N0aXMgQW5hZ25vc3Rv
cG91bG9zCisqIExld2lzIENvd2xlcworKiBNaXJvIEhyb27EjW9rCisqIFJhbiBCZW5pdGEKKyog
U2ltb24gSworKiBaYWMgSGF0ZmllbGQtRG9kZHMKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5
dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS02LjAuMHJjMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS02LjAuMHJjMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi41NjkwYjUxNGJhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS02LjAuMHJjMS5yc3QKQEAgLTAsMCArMSw2NyBAQAorcHl0ZXN0LTYu
MC4wcmMxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0
IDYuMC4wcmMxIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1
Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoK
KworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBp
cyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxv
Zy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2Us
IGFtb25nIHRoZW06CisKKyogQWxmcmVkbyBEZXphCisqIEFuZHJlYXMgTWFpZXIKKyogQW5kcmV3
CisqIEFudGhvbnkgU290dGlsZQorKiBBcnR5b21LYWx0b3ZpY2gKKyogQnJ1bm8gT2xpdmVpcmEK
KyogQ2xhaXJlIENlY2lsCisqIEN1cnQgSi4gU2FtcHNvbgorKiBEYW5pZWwKKyogRGFuaWVsIEhh
aGxlcgorKiBEYW5ueSBTZXBsZXIKKyogRGF2aWQgRGlheiBCYXJxdWVybworKiBGYWJpbyBaYWRy
b3pueQorKiBGZWxpeCBOaWV1d2VuaHVpemVuCisqIEZsb3JpYW4gQnJ1aGluCisqIEZsb3JpYW4g
RGFobGl0egorKiBHbGViIE5pa29ub3JvdgorKiBIdWdvIHZhbiBLZW1lbmFkZQorKiBIdW50ZXIg
UmljaGFyZHMKKyogS2F0YXJ6eW5hIEtyw7NsCisqIEthdHJpbiBMZWlud2ViZXIKKyogS2VyaSBW
b2xhbnMKKyogTGV3aXMgQmVsY2hlcgorKiBMdWthcyBHZWlnZXIKKyogTWFydGluIE1pY2hsbWF5
cgorKiBNYXR0d21hc3RlcjU4CisqIE1heGltaWxpYW4gQ29zbW8gU2l0dGVyCisqIE5pa29sYXkg
S29uZHJhdHlldgorKiBQYXZlbCBLYXJhdGVldgorKiBQYXdlxYIgV2lsY3p5xYRza2kKKyogUHJh
c2hhbnQgQW5hbmQKKyogUmFtIFJhY2h1bQorKiBSYW4gQmVuaXRhCisqIFJvbm55IFBmYW5uc2No
bWlkdAorKiBSdWFyaWRoIFdpbGxpYW1zb24KKyogU2ltb24gSworKiBUaW0gSG9mZm1hbm4KKyog
VG9yIENvbHZpbgorKiBWbGFkLVJhZHoKKyogWGluYmluIEh1YW5nCisqIFphYyBIYXRmaWVsZC1E
b2RkcworKiBlYXJvbmVzdHkKKyogZ2F1cmF2IGRoYW1lZWphCisqIGdkaGFtZWVqYQorKiBpYnJp
cXVlbQorKiBtY3NpdHRlcgorKiBwaW90cmhtCisqIHNtYXJpZQorKiBzeW1vbmsKKyogeHVpcXp5
CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNi4wLjEucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNi4wLjEucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzNmZGJlZDNmNjE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNi4wLjEucnN0CkBAIC0wLDAg
KzEsMjEgQEAKK3B5dGVzdC02LjAuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisKK3B5dGVzdCA2LjAuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisK
K1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4g
VG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVs
bCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xh
dGVzdC9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEJydW5vIE9saXZlaXJhCisqIE1hdHRyZWV4
CisqIFJhbiBCZW5pdGEKKyogaHAzMTA3ODAKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVz
dCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS02LjAuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS02LjAuMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNmVh
YmM1ODYzZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS02LjAuMi5yc3QKQEAgLTAsMCArMSwxOSBAQAorcHl0ZXN0LTYuMC4yCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDYuMC4yIGhhcyBqdXN0
IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVp
bmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAt
LXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3Mg
dG8gYWxsIG9mIHRoZSBjb250cmlidXRvcnMgdG8gdGhpcyByZWxlYXNlOgorCisqIEJydW5vIE9s
aXZlaXJhCisqIFJhbiBCZW5pdGEKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZl
bG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS02LjEuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02LjEu
MC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNGI1NzFhZTg0
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS02LjEuMC5yc3QKQEAgLTAsMCArMSw0NCBAQAorcHl0ZXN0LTYuMS4wCis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRv
IGFubm91bmNlIHRoZSA2LjEuMCByZWxlYXNlIQorCitUaGlzIHJlbGVhc2UgY29udGFpbnMgbmV3
IGZlYXR1cmVzLCBpbXByb3ZlbWVudHMsIGJ1ZyBmaXhlcywgYW5kIGJyZWFraW5nIGNoYW5nZXMs
IHNvIHVzZXJzCithcmUgZW5jb3VyYWdlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9H
IGNhcmVmdWxseToKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFu
Z2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0Ogor
CisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLworCitBcyB1c3VhbCwgeW91
IGNhbiB1cGdyYWRlIGZyb20gUHlQSSB2aWE6CisKKyAgICBwaXAgaW5zdGFsbCAtVSBweXRlc3QK
KworVGhhbmtzIHRvIGFsbCBvZiB0aGUgY29udHJpYnV0b3JzIHRvIHRoaXMgcmVsZWFzZToKKwor
KiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogQy4gVGl0dXMgQnJvd24KKyog
RHJldyBEZXZlcmV1eAorKiBGYXJpcyBBIENodWd0aGFpCisqIEZsb3JpYW4gQnJ1aGluCisqIEh1
Z28gdmFuIEtlbWVuYWRlCisqIEh5bmVrIFNjaGxhd2FjaworKiBKb3NlcGggTHVjYXMKKyogS2Ft
cmFuIEFobWFkCisqIE1hdHRyZWV4CisqIE1heGltaWxpYW4gQ29zbW8gU2l0dGVyCisqIFJhbiBC
ZW5pdGEKKyogUsO8ZGlnZXIgQnVzY2hlCisqIFNhbSBFc3RlcAorKiBTb3JpbiBTYmFybmVhCisq
IFRob21hcyBHcmFpbmdlcgorKiBWaXB1bCBLdW1hcgorKiBZdXRhcm8gSWtlZGEKKyogaHAzMTA3
ODAKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02LjEuMS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02LjEuMS5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMDk0MDhmZGVlYWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02LjEuMS5yc3QKQEAgLTAs
MCArMSwxOCBAQAorcHl0ZXN0LTYuMS4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKworcHl0ZXN0IDYuMS4xIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4K
KworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50
LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBm
dWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIG9mIHRoZSBjb250cmlidXRv
cnMgdG8gdGhpcyByZWxlYXNlOgorCisqIFJhbiBCZW5pdGEKKworCitIYXBweSB0ZXN0aW5nLAor
VGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2NGM4YmNkNGRj
Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0yLjAuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0yLjAuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjAuMi5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjAuMy5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjEuMC5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjEuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0yLjEuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0yLjEuMy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjIu
MC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjIuMS5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjIuMi5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjIuNC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjMuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjMuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0y
LjMuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuMy5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuNC5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuNS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjQuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0yLjQuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0yLjQuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMC5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMi5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0yLjYuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0yLjYuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYu
My5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMC5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjguMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjguMy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0y
LjguNC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNi5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjkuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0yLjkuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0yLjkuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMC5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMi5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0zLjAuNC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjAuNS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAu
Ni5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuNy5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMC5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjEuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0zLjEuMy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0z
LjIuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMi5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuNC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjIuNS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjMuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjMuMS5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjMuMi5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQuMC5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQuMS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0zLjQuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjUuMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjUu
MS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMC5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2Uvc3ByaW50MjAxNi5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
c3NlcnQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fzc2VydC5yc3QKaW5kZXggZTBlOWI5MzA1
ODc1Li43ZTQzYjA3ZmQ3NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hc3NlcnQu
cnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hc3NlcnQucnN0CkBAIC0xMiwyMiArMTIsMjgg
QEAgQXNzZXJ0aW5nIHdpdGggdGhlIGBgYXNzZXJ0YGAgc3RhdGVtZW50CiAKIGBgcHl0ZXN0YGAg
YWxsb3dzIHlvdSB0byB1c2UgdGhlIHN0YW5kYXJkIHB5dGhvbiBgYGFzc2VydGBgIGZvciB2ZXJp
ZnlpbmcKIGV4cGVjdGF0aW9ucyBhbmQgdmFsdWVzIGluIFB5dGhvbiB0ZXN0cy4gIEZvciBleGFt
cGxlLCB5b3UgY2FuIHdyaXRlIHRoZQotZm9sbG93aW5nOjoKK2ZvbGxvd2luZzoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3RfYXNzZXJ0MS5weQogICAg
IGRlZiBmKCk6CiAgICAgICAgIHJldHVybiAzCiAKKwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6
CiAgICAgICAgIGFzc2VydCBmKCkgPT0gNAogCiB0byBhc3NlcnQgdGhhdCB5b3VyIGZ1bmN0aW9u
IHJldHVybnMgYSBjZXJ0YWluIHZhbHVlLiBJZiB0aGlzIGFzc2VydGlvbiBmYWlscwoteW91IHdp
bGwgc2VlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGw6OgoreW91IHdpbGwg
c2VlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGw6CisKKy4uIGNvZGUtYmxv
Y2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3RfYXNzZXJ0MS5weQogICAgID09PT09PT09
PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0z
LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBE
SVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
Ni54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVG
SVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xs
ZWN0ZWQgMSBpdGVtCiAKICAgICB0ZXN0X2Fzc2VydDEucHkgRiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTQwLDggKzQ2LDEwIEBA
IHlvdSB3aWxsIHNlZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsOjoKICAg
ICBFICAgICAgIGFzc2VydCAzID09IDQKICAgICBFICAgICAgICArICB3aGVyZSAzID0gZigpCiAK
LSAgICB0ZXN0X2Fzc2VydDEucHk6NTogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09IDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09
PT09PT09CisgICAgdGVzdF9hc3NlcnQxLnB5OjY6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X2Fzc2VydDEucHk6OnRlc3RfZnVuY3Rpb24g
LSBhc3NlcnQgMyA9PSA0CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxl
ZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBgYHB5dGVzdGBgIGhh
cyBzdXBwb3J0IGZvciBzaG93aW5nIHRoZSB2YWx1ZXMgb2YgdGhlIG1vc3QgY29tbW9uIHN1YmV4
cHJlc3Npb25zCiBpbmNsdWRpbmcgY2FsbHMsIGF0dHJpYnV0ZXMsIGNvbXBhcmlzb25zLCBhbmQg
YmluYXJ5IGFuZCB1bmFyeQpAQCAtNDksNyArNTcsOSBAQCBvcGVyYXRvcnMuIChTZWUgOnJlZjpg
dGJyZXBvcnRkZW1vYCkuICBUaGlzIGFsbG93cyB5b3UgdG8gdXNlIHRoZQogaWRpb21hdGljIHB5
dGhvbiBjb25zdHJ1Y3RzIHdpdGhvdXQgYm9pbGVycGxhdGUgY29kZSB3aGlsZSBub3QgbG9zaW5n
CiBpbnRyb3NwZWN0aW9uIGluZm9ybWF0aW9uLgogCi1Ib3dldmVyLCBpZiB5b3Ugc3BlY2lmeSBh
IG1lc3NhZ2Ugd2l0aCB0aGUgYXNzZXJ0aW9uIGxpa2UgdGhpczo6CitIb3dldmVyLCBpZiB5b3Ug
c3BlY2lmeSBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXNzZXJ0aW9uIGxpa2UgdGhpczoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCiAgICAgYXNzZXJ0IGEgJSAyID09IDAsICJ2YWx1ZSB3YXMgb2Rk
LCBzaG91bGQgYmUgZXZlbiIKIApAQCAtNjQsNTAgKzc0LDcxIEBAIEFzc2VydGlvbnMgYWJvdXQg
ZXhwZWN0ZWQgZXhjZXB0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIEluIG9yZGVyIHRvIHdyaXRlIGFzc2VydGlvbnMgYWJvdXQgcmFpc2VkIGV4Y2Vw
dGlvbnMsIHlvdSBjYW4gdXNlCi1gYHB5dGVzdC5yYWlzZXNgYCBhcyBhIGNvbnRleHQgbWFuYWdl
ciBsaWtlIHRoaXM6OgorYGBweXRlc3QucmFpc2VzYGAgYXMgYSBjb250ZXh0IG1hbmFnZXIgbGlr
ZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBpbXBvcnQgcHl0ZXN0CiAK
KwogICAgIGRlZiB0ZXN0X3plcm9fZGl2aXNpb24oKToKICAgICAgICAgd2l0aCBweXRlc3QucmFp
c2VzKFplcm9EaXZpc2lvbkVycm9yKToKICAgICAgICAgICAgIDEgLyAwCiAKLWFuZCBpZiB5b3Ug
bmVlZCB0byBoYXZlIGFjY2VzcyB0byB0aGUgYWN0dWFsIGV4Y2VwdGlvbiBpbmZvIHlvdSBtYXkg
dXNlOjoKK2FuZCBpZiB5b3UgbmVlZCB0byBoYXZlIGFjY2VzcyB0byB0aGUgYWN0dWFsIGV4Y2Vw
dGlvbiBpbmZvIHlvdSBtYXkgdXNlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBk
ZWYgdGVzdF9yZWN1cnNpb25fZGVwdGgoKToKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFJ1
bnRpbWVFcnJvcikgYXMgZXhjaW5mbzoKKwogICAgICAgICAgICAgZGVmIGYoKToKICAgICAgICAg
ICAgICAgICBmKCkKKwogICAgICAgICAgICAgZigpCi0gICAgICAgIGFzc2VydCAnbWF4aW11bSBy
ZWN1cnNpb24nIGluIHN0cihleGNpbmZvLnZhbHVlKQorICAgICAgICBhc3NlcnQgIm1heGltdW0g
cmVjdXJzaW9uIiBpbiBzdHIoZXhjaW5mby52YWx1ZSkKIAotYGBleGNpbmZvYGAgaXMgYSBgYEV4
Y2VwdGlvbkluZm9gYCBpbnN0YW5jZSwgd2hpY2ggaXMgYSB3cmFwcGVyIGFyb3VuZAorYGBleGNp
bmZvYGAgaXMgYW4gYGBFeGNlcHRpb25JbmZvYGAgaW5zdGFuY2UsIHdoaWNoIGlzIGEgd3JhcHBl
ciBhcm91bmQKIHRoZSBhY3R1YWwgZXhjZXB0aW9uIHJhaXNlZC4gIFRoZSBtYWluIGF0dHJpYnV0
ZXMgb2YgaW50ZXJlc3QgYXJlCiBgYC50eXBlYGAsIGBgLnZhbHVlYGAgYW5kIGBgLnRyYWNlYmFj
a2BgLgogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAorWW91IGNhbiBwYXNzIGEgYGBtYXRjaGBg
IGtleXdvcmQgcGFyYW1ldGVyIHRvIHRoZSBjb250ZXh0LW1hbmFnZXIgdG8gdGVzdAordGhhdCBh
IHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzIG9uIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgYW4gZXhjZXB0aW9uCisoc2ltaWxhciB0byB0aGUgYGBUZXN0Q2FzZS5hc3NlcnRSYWlzZXNS
ZWdleHBgYCBtZXRob2QgZnJvbSBgYHVuaXR0ZXN0YGApOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCisKKyAgICBpbXBvcnQgcHl0ZXN0CisKIAotSW4gdGhlIGNvbnRleHQgbWFuYWdlciBmb3Jt
IHlvdSBtYXkgdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50Ci1gYG1lc3NhZ2VgYCB0byBzcGVjaWZ5
IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZTo6CisgICAgZGVmIG15ZnVuYygpOgorICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJFeGNlcHRpb24gMTIzIHJhaXNlZCIpCisKKworICAgIGRlZiB0ZXN0
X21hdGNoKCk6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBtYXRjaD1y
Ii4qIDEyMyAuKiIpOgorICAgICAgICAgICAgbXlmdW5jKCkKKworVGhlIHJlZ2V4cCBwYXJhbWV0
ZXIgb2YgdGhlIGBgbWF0Y2hgYCBtZXRob2QgaXMgbWF0Y2hlZCB3aXRoIHRoZSBgYHJlLnNlYXJj
aGBgCitmdW5jdGlvbiwgc28gaW4gdGhlIGFib3ZlIGV4YW1wbGUgYGBtYXRjaD0nMTIzJ2BgIHdv
dWxkIGhhdmUgd29ya2VkIGFzCit3ZWxsLgogCi0gICAgID4+PiB3aXRoIHJhaXNlcyhaZXJvRGl2
aXNpb25FcnJvciwgbWVzc2FnZT0iRXhwZWN0aW5nIFplcm9EaXZpc2lvbkVycm9yIik6Ci0gICAg
IC4uLiAgICAgcGFzcwotICAgICAuLi4gRmFpbGVkOiBFeHBlY3RpbmcgWmVyb0RpdmlzaW9uRXJy
b3IKK1RoZXJlJ3MgYW4gYWx0ZXJuYXRlIGZvcm0gb2YgdGhlIGBgcHl0ZXN0LnJhaXNlc2BgIGZ1
bmN0aW9uIHdoZXJlIHlvdSBwYXNzCithIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3
aXRoIHRoZSBnaXZlbiBgYCphcmdzYGAgYW5kIGBgKiprd2FyZ3NgYCBhbmQKK2Fzc2VydCB0aGF0
IHRoZSBnaXZlbiBleGNlcHRpb24gaXMgcmFpc2VkOgogCi1JZiB5b3Ugd2FudCB0byB3cml0ZSB0
ZXN0IGNvZGUgdGhhdCB3b3JrcyBvbiBQeXRob24gMi40IGFzIHdlbGwsCi15b3UgbWF5IGFsc28g
dXNlIHR3byBvdGhlciB3YXlzIHRvIHRlc3QgZm9yIGFuIGV4cGVjdGVkIGV4Y2VwdGlvbjo6Cisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBweXRlc3QucmFpc2VzKEV4cGVjdGVkRXhjZXB0
aW9uLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpCi0gICAgcHl0ZXN0LnJhaXNlcyhFeHBlY3RlZEV4
Y2VwdGlvbiwgImZ1bmMoKmFyZ3MsICoqa3dhcmdzKSIpCiAKLWJvdGggb2Ygd2hpY2ggZXhlY3V0
ZSB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIHdpdGggYXJncyBhbmQga3dhcmdzIGFuZAotYXNzZXJ0
cyB0aGF0IHRoZSBnaXZlbiBgYEV4cGVjdGVkRXhjZXB0aW9uYGAgaXMgcmFpc2VkLiAgVGhlIHJl
cG9ydGVyIHdpbGwKLXByb3ZpZGUgeW91IHdpdGggaGVscGZ1bCBvdXRwdXQgaW4gY2FzZSBvZiBm
YWlsdXJlcyBzdWNoIGFzICpubworVGhlIHJlcG9ydGVyIHdpbGwgcHJvdmlkZSB5b3Ugd2l0aCBo
ZWxwZnVsIG91dHB1dCBpbiBjYXNlIG9mIGZhaWx1cmVzIHN1Y2ggYXMgKm5vCiBleGNlcHRpb24q
IG9yICp3cm9uZyBleGNlcHRpb24qLgogCiBOb3RlIHRoYXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0
byBzcGVjaWZ5IGEgInJhaXNlcyIgYXJndW1lbnQgdG8KIGBgcHl0ZXN0Lm1hcmsueGZhaWxgYCwg
d2hpY2ggY2hlY2tzIHRoYXQgdGhlIHRlc3QgaXMgZmFpbGluZyBpbiBhIG1vcmUKLXNwZWNpZmlj
IHdheSB0aGFuIGp1c3QgaGF2aW5nIGFueSBleGNlcHRpb24gcmFpc2VkOjoKK3NwZWNpZmljIHdh
eSB0aGFuIGp1c3QgaGF2aW5nIGFueSBleGNlcHRpb24gcmFpc2VkOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCiAKICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocmFpc2VzPUluZGV4RXJyb3IpCiAg
ICAgZGVmIHRlc3RfZigpOgpAQCAtMTE5LDMwICsxNTAsMTMgQEAgZXhjZXB0aW9ucyB5b3VyIG93
biBjb2RlIGlzIGRlbGliZXJhdGVseSByYWlzaW5nLCB3aGVyZWFzIHVzaW5nCiBsaWtlIGRvY3Vt
ZW50aW5nIHVuZml4ZWQgYnVncyAod2hlcmUgdGhlIHRlc3QgZGVzY3JpYmVzIHdoYXQgInNob3Vs
ZCIgaGFwcGVuKQogb3IgYnVncyBpbiBkZXBlbmRlbmNpZXMuCiAKLUFsc28sIHRoZSBjb250ZXh0
IG1hbmFnZXIgZm9ybSBhY2NlcHRzIGEgYGBtYXRjaGBgIGtleXdvcmQgcGFyYW1ldGVyIHRvIHRl
c3QKLXRoYXQgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hlcyBvbiB0aGUgc3RyaW5nIHJlcHJl
c2VudGF0aW9uIG9mIGFuIGV4Y2VwdGlvbgotKGxpa2UgdGhlIGBgVGVzdENhc2UuYXNzZXJ0UmFp
c2VzUmVnZXhwYGAgbWV0aG9kIGZyb20gYGB1bml0dGVzdGBgKTo6Ci0KLSAgICBpbXBvcnQgcHl0
ZXN0Ci0KLSAgICBkZWYgbXlmdW5jKCk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4Y2Vw
dGlvbiAxMjMgcmFpc2VkIikKLQotICAgIGRlZiB0ZXN0X21hdGNoKCk6Ci0gICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBtYXRjaD1yJy4qIDEyMyAuKicpOgotICAgICAgICAg
ICAgbXlmdW5jKCkKLQotVGhlIHJlZ2V4cCBwYXJhbWV0ZXIgb2YgdGhlIGBgbWF0Y2hgYCBtZXRo
b2QgaXMgbWF0Y2hlZCB3aXRoIHRoZSBgYHJlLnNlYXJjaGBgCi1mdW5jdGlvbi4gU28gaW4gdGhl
IGFib3ZlIGV4YW1wbGUgYGBtYXRjaD0nMTIzJ2BgIHdvdWxkIGhhdmUgd29ya2VkIGFzCi13ZWxs
LgotCiAKIC4uIF9gYXNzZXJ0d2FybnNgOgogCiBBc3NlcnRpb25zIGFib3V0IGV4cGVjdGVkIHdh
cm5pbmdzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2
ZXJzaW9uYWRkZWQ6OiAyLjgKKwogCiBZb3UgY2FuIGNoZWNrIHRoYXQgY29kZSByYWlzZXMgYSBw
YXJ0aWN1bGFyIHdhcm5pbmcgdXNpbmcKIDpyZWY6YHB5dGVzdC53YXJucyA8d2FybnM+YC4KQEAg
LTE1MywyNCArMTY3LDMwIEBAIFlvdSBjYW4gY2hlY2sgdGhhdCBjb2RlIHJhaXNlcyBhIHBhcnRp
Y3VsYXIgd2FybmluZyB1c2luZwogTWFraW5nIHVzZSBvZiBjb250ZXh0LXNlbnNpdGl2ZSBjb21w
YXJpc29ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKKwogCiBgYHB5dGVzdGBgIGhhcyByaWNoIHN1cHBv
cnQgZm9yIHByb3ZpZGluZyBjb250ZXh0LXNlbnNpdGl2ZSBpbmZvcm1hdGlvbgotd2hlbiBpdCBl
bmNvdW50ZXJzIGNvbXBhcmlzb25zLiAgRm9yIGV4YW1wbGU6Ogord2hlbiBpdCBlbmNvdW50ZXJz
IGNvbXBhcmlzb25zLiAgRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAog
ICAgICMgY29udGVudCBvZiB0ZXN0X2Fzc2VydDIucHkKIAorCiAgICAgZGVmIHRlc3Rfc2V0X2Nv
bXBhcmlzb24oKToKICAgICAgICAgc2V0MSA9IHNldCgiMTMwOCIpCiAgICAgICAgIHNldDIgPSBz
ZXQoIjgwMzUiKQogICAgICAgICBhc3NlcnQgc2V0MSA9PSBzZXQyCiAKLWlmIHlvdSBydW4gdGhp
cyBtb2R1bGU6OgoraWYgeW91IHJ1biB0aGlzIG1vZHVsZToKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgdGVzdF9hc3NlcnQyLnB5CiAgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5p
ZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwg
cHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0
ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAx
IGl0ZW0KIAogICAgIHRlc3RfYXNzZXJ0Mi5weSBGICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtMTg5LDggKzIwOSwxMCBAQCBpZiB5
b3UgcnVuIHRoaXMgbW9kdWxlOjoKICAgICBFICAgICAgICAgJzUnCiAgICAgRSAgICAgICAgIFVz
ZSAtdiB0byBnZXQgdGhlIGZ1bGwgZGlmZgogCi0gICAgdGVzdF9hc3NlcnQyLnB5OjU6IEFzc2Vy
dGlvbkVycm9yCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAwLjEy
IHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHRlc3RfYXNzZXJ0Mi5weTo2
OiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVz
dCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVz
dF9hc3NlcnQyLnB5Ojp0ZXN0X3NldF9jb21wYXJpc29uIC0gQXNzZXJ0aW9uRXJyb3I6IGFzc2Vy
dCB7JzAnLi4uCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAw
LjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBTcGVjaWFsIGNvbXBhcmlzb25z
IGFyZSBkb25lIGZvciBhIG51bWJlciBvZiBjYXNlczoKIApAQCAtMjAwLDggKzIyMiw4IEBAIFNw
ZWNpYWwgY29tcGFyaXNvbnMgYXJlIGRvbmUgZm9yIGEgbnVtYmVyIG9mIGNhc2VzOgogCiBTZWUg
dGhlIDpyZWY6YHJlcG9ydGluZyBkZW1vIDx0YnJlcG9ydGRlbW8+YCBmb3IgbWFueSBtb3JlIGV4
YW1wbGVzLgogCi1EZWZpbmluZyB5b3VyIG93biBhc3NlcnRpb24gY29tcGFyaXNvbgotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGVmaW5pbmcgeW91ciBv
d24gZXhwbGFuYXRpb24gZm9yIGZhaWxlZCBhc3NlcnRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSXQgaXMgcG9zc2libGUgdG8gYWRk
IHlvdXIgb3duIGRldGFpbGVkIGV4cGxhbmF0aW9ucyBieSBpbXBsZW1lbnRpbmcKIHRoZSBgYHB5
dGVzdF9hc3NlcnRyZXByX2NvbXBhcmVgYCBob29rLgpAQCAtMjEwLDMyICsyMzIsNDMgQEAgdGhl
IGBgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZWBgIGhvb2suCiAgICA6bm9pbmRleDoKIAogQXMg
YW4gZXhhbXBsZSBjb25zaWRlciBhZGRpbmcgdGhlIGZvbGxvd2luZyBob29rIGluIGEgOnJlZjpg
Y29uZnRlc3QucHkgPGNvbmZ0ZXN0LnB5PmAKLWZpbGUgd2hpY2ggcHJvdmlkZXMgYW4gYWx0ZXJu
YXRpdmUgZXhwbGFuYXRpb24gZm9yIGBgRm9vYGAgb2JqZWN0czo6CitmaWxlIHdoaWNoIHByb3Zp
ZGVzIGFuIGFsdGVybmF0aXZlIGV4cGxhbmF0aW9uIGZvciBgYEZvb2BgIG9iamVjdHM6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAgICBm
cm9tIHRlc3RfZm9vY29tcGFyZSBpbXBvcnQgRm9vCisKKwogICAgZGVmIHB5dGVzdF9hc3NlcnRy
ZXByX2NvbXBhcmUob3AsIGxlZnQsIHJpZ2h0KToKICAgICAgICBpZiBpc2luc3RhbmNlKGxlZnQs
IEZvbykgYW5kIGlzaW5zdGFuY2UocmlnaHQsIEZvbykgYW5kIG9wID09ICI9PSI6Ci0gICAgICAg
ICAgIHJldHVybiBbJ0NvbXBhcmluZyBGb28gaW5zdGFuY2VzOicsCi0gICAgICAgICAgICAgICAg
ICAgJyAgIHZhbHM6ICVzICE9ICVzJyAlIChsZWZ0LnZhbCwgcmlnaHQudmFsKV0KKyAgICAgICAg
ICAgcmV0dXJuIFsKKyAgICAgICAgICAgICAgICJDb21wYXJpbmcgRm9vIGluc3RhbmNlczoiLAor
ICAgICAgICAgICAgICAgIiAgIHZhbHM6IHt9ICE9IHt9Ii5mb3JtYXQobGVmdC52YWwsIHJpZ2h0
LnZhbCksCisgICAgICAgICAgIF0KKworbm93LCBnaXZlbiB0aGlzIHRlc3QgbW9kdWxlOgogCi1u
b3csIGdpdmVuIHRoaXMgdGVzdCBtb2R1bGU6OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAg
ICAjIGNvbnRlbnQgb2YgdGVzdF9mb29jb21wYXJlLnB5Ci0gICBjbGFzcyBGb28ob2JqZWN0KToK
KyAgIGNsYXNzIEZvbzoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKICAgICAgICAg
ICAgc2VsZi52YWwgPSB2YWwKIAogICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAg
ICAgICAgICByZXR1cm4gc2VsZi52YWwgPT0gb3RoZXIudmFsCiAKKwogICAgZGVmIHRlc3RfY29t
cGFyZSgpOgogICAgICAgIGYxID0gRm9vKDEpCiAgICAgICAgZjIgPSBGb28oMikKICAgICAgICBh
c3NlcnQgZjEgPT0gZjIKIAogeW91IGNhbiBydW4gdGhlIHRlc3QgbW9kdWxlIGFuZCBnZXQgdGhl
IGN1c3RvbSBvdXRwdXQgZGVmaW5lZCBpbgotdGhlIGNvbmZ0ZXN0IGZpbGU6OgordGhlIGNvbmZ0
ZXN0IGZpbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgJCBweXRlc3QgLXEgdGVz
dF9mb29jb21wYXJlLnB5CiAgICBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTI0OSw1MSArMjgyLDYx
IEBAIHRoZSBjb25mdGVzdCBmaWxlOjoKICAgIEUgICAgICAgYXNzZXJ0IENvbXBhcmluZyBGb28g
aW5zdGFuY2VzOgogICAgRSAgICAgICAgICAgIHZhbHM6IDEgIT0gMgogCi0gICB0ZXN0X2Zvb2Nv
bXBhcmUucHk6MTE6IEFzc2VydGlvbkVycm9yCi0gICAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMK
KyAgIHRlc3RfZm9vY29tcGFyZS5weToxMjogQXNzZXJ0aW9uRXJyb3IKKyAgID09PT09PT09PT09
PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyAgIEZBSUxFRCB0ZXN0X2Zvb2NvbXBhcmUucHk6OnRlc3RfY29tcGFyZSAtIGFz
c2VydCBDb21wYXJpbmcgRm9vIGluc3RhbmNlczoKKyAgIDEgZmFpbGVkIGluIDAuMTJzCiAKIC4u
IF9hc3NlcnQtZGV0YWlsczoKIC4uIF9gYXNzZXJ0IGludHJvc3BlY3Rpb25gOgogCi1BZHZhbmNl
ZCBhc3NlcnRpb24gaW50cm9zcGVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjEKK0Fzc2VydGlvbiBpbnRyb3NwZWN0aW9uIGRl
dGFpbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCiBSZXBvcnRpbmcgZGV0
YWlscyBhYm91dCBhIGZhaWxpbmcgYXNzZXJ0aW9uIGlzIGFjaGlldmVkIGJ5IHJld3JpdGluZyBh
c3NlcnQKIHN0YXRlbWVudHMgYmVmb3JlIHRoZXkgYXJlIHJ1bi4gIFJld3JpdHRlbiBhc3NlcnQg
c3RhdGVtZW50cyBwdXQgaW50cm9zcGVjdGlvbgogaW5mb3JtYXRpb24gaW50byB0aGUgYXNzZXJ0
aW9uIGZhaWx1cmUgbWVzc2FnZS4gIGBgcHl0ZXN0YGAgb25seSByZXdyaXRlcyB0ZXN0Ci1tb2R1
bGVzIGRpcmVjdGx5IGRpc2NvdmVyZWQgYnkgaXRzIHRlc3QgY29sbGVjdGlvbiBwcm9jZXNzLCBz
byBhc3NlcnRzIGluCi1zdXBwb3J0aW5nIG1vZHVsZXMgd2hpY2ggYXJlIG5vdCB0aGVtc2VsdmVz
IHRlc3QgbW9kdWxlcyB3aWxsIG5vdCBiZSByZXdyaXR0ZW4uCittb2R1bGVzIGRpcmVjdGx5IGRp
c2NvdmVyZWQgYnkgaXRzIHRlc3QgY29sbGVjdGlvbiBwcm9jZXNzLCBzbyAqKmFzc2VydHMgaW4K
K3N1cHBvcnRpbmcgbW9kdWxlcyB3aGljaCBhcmUgbm90IHRoZW1zZWx2ZXMgdGVzdCBtb2R1bGVz
IHdpbGwgbm90IGJlIHJld3JpdHRlbioqLgogCi0uLiBub3RlOjoKK1lvdSBjYW4gbWFudWFsbHkg
ZW5hYmxlIGFzc2VydGlvbiByZXdyaXRpbmcgZm9yIGFuIGltcG9ydGVkIG1vZHVsZSBieSBjYWxs
aW5nCitgcmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS93cml0aW5nX3BsdWdpbnMuaHRtbCNhc3NlcnRpb24tcmV3cml0aW5nPmBfCitiZWZv
cmUgeW91IGltcG9ydCBpdCAoYSBnb29kIHBsYWNlIHRvIGRvIHRoYXQgaXMgaW4geW91ciByb290
IGBgY29uZnRlc3QucHlgYCkuCiAKLSAgIGBgcHl0ZXN0YGAgcmV3cml0ZXMgdGVzdCBtb2R1bGVz
IG9uIGltcG9ydCBieSB1c2luZyBhbiBpbXBvcnQKLSAgIGhvb2sgdG8gd3JpdGUgbmV3IGBgcHlj
YGAgZmlsZXMuIE1vc3Qgb2YgdGhlIHRpbWUgdGhpcyB3b3JrcyB0cmFuc3BhcmVudGx5LgotICAg
SG93ZXZlciwgaWYgeW91IGFyZSBtZXNzaW5nIHdpdGggaW1wb3J0IHlvdXJzZWxmLCB0aGUgaW1w
b3J0IGhvb2sgbWF5Ci0gICBpbnRlcmZlcmUuCitGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgQmVu
amFtaW4gUGV0ZXJzb24gd3JvdGUgdXAgYEJlaGluZCB0aGUgc2NlbmVzIG9mIHB5dGVzdCdzIG5l
dyBhc3NlcnRpb24gcmV3cml0aW5nIDxodHRwOi8vcHliaXRlcy5ibG9nc3BvdC5jb20vMjAxMS8w
Ny9iZWhpbmQtc2NlbmVzLW9mLXB5dGVzdHMtbmV3LWFzc2VydGlvbi5odG1sPmBfLgogCi0gICBJ
ZiB0aGlzIGlzIHRoZSBjYXNlIHlvdSBoYXZlIHR3byBvcHRpb25zOgorQXNzZXJ0aW9uIHJld3Jp
dGluZyBjYWNoZXMgZmlsZXMgb24gZGlzaworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fgogCi0gICAqIERpc2FibGUgcmV3cml0aW5nIGZvciBhIHNwZWNpZmljIG1vZHVs
ZSBieSBhZGRpbmcgdGhlIHN0cmluZwotICAgICBgYFBZVEVTVF9ET05UX1JFV1JJVEVgYCB0byBp
dHMgZG9jc3RyaW5nLgorYGBweXRlc3RgYCB3aWxsIHdyaXRlIGJhY2sgdGhlIHJld3JpdHRlbiBt
b2R1bGVzIHRvIGRpc2sgZm9yIGNhY2hpbmcuIFlvdSBjYW4gZGlzYWJsZQordGhpcyBiZWhhdmlv
ciAoZm9yIGV4YW1wbGUgdG8gYXZvaWQgbGVhdmluZyBzdGFsZSBgYC5weWNgYCBmaWxlcyBhcm91
bmQgaW4gcHJvamVjdHMgdGhhdAorbW92ZSBmaWxlcyBhcm91bmQgYSBsb3QpIGJ5IGFkZGluZyB0
aGlzIHRvIHRoZSB0b3Agb2YgeW91ciBgYGNvbmZ0ZXN0LnB5YGAgZmlsZToKIAotICAgKiBEaXNh
YmxlIHJld3JpdGluZyBmb3IgYWxsIG1vZHVsZXMgYnkgdXNpbmcgYGAtLWFzc2VydD1wbGFpbmBg
LgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0gICBBZGRpdGlvbmFsbHksIHJld3JpdGluZyB3
aWxsIGZhaWwgc2lsZW50bHkgaWYgaXQgY2Fubm90IHdyaXRlIG5ldyBgYC5weWNgYCBmaWxlcywK
LSAgIGkuZS4gaW4gYSByZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBhIHppcGZpbGUuCisgICBpbXBv
cnQgc3lzCiAKKyAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQogCi1Gb3IgZnVydGhl
ciBpbmZvcm1hdGlvbiwgQmVuamFtaW4gUGV0ZXJzb24gd3JvdGUgdXAgYEJlaGluZCB0aGUgc2Nl
bmVzIG9mIHB5dGVzdCdzIG5ldyBhc3NlcnRpb24gcmV3cml0aW5nIDxodHRwOi8vcHliaXRlcy5i
bG9nc3BvdC5jb20vMjAxMS8wNy9iZWhpbmQtc2NlbmVzLW9mLXB5dGVzdHMtbmV3LWFzc2VydGlv
bi5odG1sPmBfLgorTm90ZSB0aGF0IHlvdSBzdGlsbCBnZXQgdGhlIGJlbmVmaXRzIG9mIGFzc2Vy
dGlvbiBpbnRyb3NwZWN0aW9uLCB0aGUgb25seSBjaGFuZ2UgaXMgdGhhdAordGhlIGBgLnB5Y2Bg
IGZpbGVzIHdvbid0IGJlIGNhY2hlZCBvbiBkaXNrLgorCitBZGRpdGlvbmFsbHksIHJld3JpdGlu
ZyB3aWxsIHNpbGVudGx5IHNraXAgY2FjaGluZyBpZiBpdCBjYW5ub3Qgd3JpdGUgbmV3IGBgLnB5
Y2BgIGZpbGVzLAoraS5lLiBpbiBhIHJlYWQtb25seSBmaWxlc3lzdGVtIG9yIGEgemlwZmlsZS4K
KworCitEaXNhYmxpbmcgYXNzZXJ0IHJld3JpdGluZworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn4KKworYGBweXRlc3RgYCByZXdyaXRlcyB0ZXN0IG1vZHVsZXMgb24gaW1wb3J0IGJ5IHVzaW5n
IGFuIGltcG9ydAoraG9vayB0byB3cml0ZSBuZXcgYGBweWNgYCBmaWxlcy4gTW9zdCBvZiB0aGUg
dGltZSB0aGlzIHdvcmtzIHRyYW5zcGFyZW50bHkuCitIb3dldmVyLCBpZiB5b3UgYXJlIHdvcmtp
bmcgd2l0aCB0aGUgaW1wb3J0IG1hY2hpbmVyeSB5b3Vyc2VsZiwgdGhlIGltcG9ydCBob29rIG1h
eQoraW50ZXJmZXJlLgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjEKLSAgIEFkZCBhc3NlcnQgcmV3
cml0aW5nIGFzIGFuIGFsdGVybmF0ZSBpbnRyb3NwZWN0aW9uIHRlY2huaXF1ZS4KK0lmIHRoaXMg
aXMgdGhlIGNhc2UgeW91IGhhdmUgdHdvIG9wdGlvbnM6CiAKLS4uIHZlcnNpb25jaGFuZ2VkOjog
Mi4xCi0gICBJbnRyb2R1Y2UgdGhlIGBgLS1hc3NlcnRgYCBvcHRpb24uIERlcHJlY2F0ZSBgYC0t
bm8tYXNzZXJ0YGAgYW5kCi0gICBgYC0tbm9tYWdpY2BgLgorKiBEaXNhYmxlIHJld3JpdGluZyBm
b3IgYSBzcGVjaWZpYyBtb2R1bGUgYnkgYWRkaW5nIHRoZSBzdHJpbmcKKyAgYGBQWVRFU1RfRE9O
VF9SRVdSSVRFYGAgdG8gaXRzIGRvY3N0cmluZy4KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAK
LSAgIFJlbW92ZXMgdGhlIGBgLS1uby1hc3NlcnRgYCBhbmQgYGAtLW5vbWFnaWNgYCBvcHRpb25z
LgotICAgUmVtb3ZlcyB0aGUgYGAtLWFzc2VydD1yZWludGVycGBgIG9wdGlvbi4KKyogRGlzYWJs
ZSByZXdyaXRpbmcgZm9yIGFsbCBtb2R1bGVzIGJ5IHVzaW5nIGBgLS1hc3NlcnQ9cGxhaW5gYC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9iYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYmFja3dhcmRzLWNvbXBhdGliaWxpdHkucnN0CmluZGV4
IDU1NTA2ZTdjMzM4ZS4uZDViMmQ3OWQ2MzM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYmFja3dhcmRzLWNvbXBhdGliaWxpdHkucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9i
YWNrd2FyZHMtY29tcGF0aWJpbGl0eS5yc3QKQEAgLTMsMTggKzMsNzggQEAKIEJhY2t3YXJkcyBD
b21wYXRpYmlsaXR5IFBvbGljeQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKy4u
IHZlcnNpb25hZGRlZDogNi4wCisKK3B5dGVzdCBpcyBhY3RpdmVseSBldm9sdmluZyBhbmQgaXMg
YSBwcm9qZWN0IHRoYXQgaGFzIGJlZW4gZGVjYWRlcyBpbiB0aGUgbWFraW5nLAord2Uga2VlcCBs
ZWFybmluZyBhYm91dCBuZXcgYW5kIGJldHRlciBzdHJ1Y3R1cmVzIHRvIGV4cHJlc3MgZGlmZmVy
ZW50IGRldGFpbHMgYWJvdXQgdGVzdGluZy4KKworV2hpbGUgd2UgaW1wbGVtZW50IHRob3NlIG1v
ZGlmaWNhdGlvbnMgd2UgdHJ5IHRvIGVuc3VyZSBhbiBlYXN5IHRyYW5zaXRpb24gYW5kIGRvbid0
IHdhbnQgdG8gaW1wb3NlIHVubmVjZXNzYXJ5IGNodXJuIG9uIG91ciB1c2VycyBhbmQgY29tbXVu
aXR5L3BsdWdpbiBhdXRob3JzLgorCitBcyBvZiBub3csIHB5dGVzdCBjb25zaWRlcnMgbXVsdGlw
ZSB0eXBlcyBvZiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRyYW5zaXRpb25zOgorCithKSB0cml2
aWFsOiBBUElzIHdoaWNoIHRyaXZpYWxseSB0cmFuc2xhdGUgdG8gdGhlIG5ldyBtZWNoYW5pc20s
CisgICBhbmQgZG8gbm90IGNhdXNlIHByb2JsZW1hdGljIGNoYW5nZXMuCisKKyAgIFdlIHRyeSB0
byBzdXBwb3J0IHRob3NlIGluZGVmaW5pdGVseSB3aGlsZSBlbmNvdXJhZ2luZyB1c2VycyB0byBz
d2l0Y2ggdG8gbmV3ZXIvYmV0dGVyIG1lY2hhbmlzbXMgdGhyb3VnaCBkb2N1bWVudGF0aW9uLgor
CitiKSB0cmFuc2l0aW9uYWw6IHRoZSBvbGQgYW5kIG5ldyBBUEkgZG9uJ3QgY29uZmxpY3QKKyAg
IGFuZCB3ZSBjYW4gaGVscCB1c2VycyB0cmFuc2l0aW9uIGJ5IHVzaW5nIHdhcm5pbmdzLCB3aGls
ZSBzdXBwb3J0aW5nIGJvdGggZm9yIGEgcHJvbG9uZ2VkIHRpbWUuCisKKyAgIFdlIHdpbGwgb25s
eSBzdGFydCB0aGUgcmVtb3ZhbCBvZiBkZXByZWNhdGVkIGZ1bmN0aW9uYWxpdHkgaW4gbWFqb3Ig
cmVsZWFzZXMgKGUuZy4gaWYgd2UgZGVwcmVjYXRlIHNvbWV0aGluZyBpbiAzLjAgd2Ugd2lsbCBz
dGFydCB0byByZW1vdmUgaXQgaW4gNC4wKSwgYW5kIGtlZXAgaXQgYXJvdW5kIGZvciBhdCBsZWFz
dCB0d28gbWlub3IgcmVsZWFzZXMgKGUuZy4gaWYgd2UgZGVwcmVjYXRlIHNvbWV0aGluZyBpbiAz
LjkgYW5kIDQuMCBpcyB0aGUgbmV4dCByZWxlYXNlLCB3ZSBzdGFydCB0byByZW1vdmUgaXQgaW4g
NS4wLCBub3QgaW4gNC4wKS4KKworICAgV2hlbiB0aGUgZGVwcmVjYXRpb24gZXhwaXJlcyAoZS5n
LiA0LjAgaXMgcmVsZWFzZWQpLCB3ZSB3b24ndCByZW1vdmUgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rp
b25hbGl0eSBpbW1lZGlhdGVseSwgYnV0IHdpbGwgdXNlIHRoZSBzdGFuZGFyZCB3YXJuaW5nIGZp
bHRlcnMgdG8gdHVybiB0aGVtIGludG8gKiplcnJvcnMqKiBieSBkZWZhdWx0LiBUaGlzIGFwcHJv
YWNoIG1ha2VzIGl0IGV4cGxpY2l0IHRoYXQgcmVtb3ZhbCBpcyBpbW1pbmVudCwgYW5kIHN0aWxs
IGdpdmVzIHlvdSB0aW1lIHRvIHR1cm4gdGhlIGRlcHJlY2F0ZWQgZmVhdHVyZSBpbnRvIGEgd2Fy
bmluZyBpbnN0ZWFkIG9mIGFuIGVycm9yIHNvIGl0IGNhbiBiZSBkZWFsdCB3aXRoIGluIHlvdXIg
b3duIHRpbWUuIEluIHRoZSBuZXh0IG1pbm9yIHJlbGVhc2UgKGUuZy4gNC4xKSwgdGhlIGZlYXR1
cmUgd2lsbCBiZSBlZmZlY3RpdmVseSByZW1vdmVkLgorCisKK2MpIHRydWUgYnJlYWthZ2U6IHNo
b3VsZCBvbmx5IHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBub3JtYWwgdHJhbnNpdGlvbiBpcyB1bnJl
YXNvbmFibHkgdW5zdXN0YWluYWJsZSBhbmQgd291bGQgb2Zmc2V0IGltcG9ydGFudCBkZXZlbG9w
bWVudC9mZWF0dXJlcyBieSB5ZWFycy4KKyAgIEluIGFkZGl0aW9uLCB0aGV5IHNob3VsZCBiZSBs
aW1pdGVkIHRvIEFQSXMgd2hlcmUgdGhlIG51bWJlciBvZiBhY3R1YWwgdXNlcnMgaXMgdmVyeSBz
bWFsbCAoZm9yIGV4YW1wbGUgb25seSBpbXBhY3Rpbmcgc29tZSBwbHVnaW5zKSwgYW5kIGNhbiBi
ZSBjb29yZGluYXRlZCB3aXRoIHRoZSBjb21tdW5pdHkgaW4gYWR2YW5jZS4KKworICAgRXhhbXBs
ZXMgZm9yIHN1Y2ggdXBjb21pbmcgY2hhbmdlczoKKworICAgKiByZW1vdmFsIG9mIGBgcHl0ZXN0
X3J1bnRlc3RfcHJvdG9jb2wvbmV4dGl0ZW1gYCAtIGAjODk1YF8KKyAgICogcmVhcnJhbmdpbmcg
b2YgdGhlIG5vZGUgdHJlZSB0byBpbmNsdWRlIGBgRnVuY3Rpb25EZWZpbml0aW9uYGAKKyAgICog
cmVhcnJhbmdpbmcgb2YgYGBTZXR1cFN0YXRlYGAgYCM4OTVgXworCisgICBUcnVlIGJyZWFrYWdl
cyBtdXN0IGJlIGFubm91bmNlZCBmaXJzdCBpbiBhbiBpc3N1ZSBjb250YWluaW5nOgorCisgICAq
IERldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGFuZ2UKKyAgICogUmF0aW9uYWxlCisgICAq
IEV4cGVjdGVkIGltcGFjdCBvbiB1c2VycyBhbmQgcGx1Z2luIGF1dGhvcnMgKGV4YW1wbGUgaW4g
YCM4OTVgXykKKworICAgQWZ0ZXIgdGhlcmUncyBubyBoYXJkICotMSogb24gdGhlIGlzc3VlIGl0
IHNob3VsZCBiZSBmb2xsb3dlZCB1cCBieSBhbiBpbml0aWFsIHByb29mLW9mLWNvbmNlcHQgUHVs
bCBSZXF1ZXN0LgorCisgICBUaGlzIFBPQyBzZXJ2ZXMgYXMgYm90aCBhIGNvb3JkaW5hdGlvbiBw
b2ludCB0byBhc3Nlc3MgaW1wYWN0IGFuZCBwb3RlbnRpYWwgaW5zcHJpYXRpb24gdG8gY29tZSB1
cCB3aXRoIGEgdHJhbnNpdGlvbmFsIHNvbHV0aW9uIGFmdGVyIGFsbC4KKworICAgQWZ0ZXIgYSBy
ZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lIHRoZSBQUiBjYW4gYmUgbWVyZ2VkIHRvIGJhc2UgYSBu
ZXcgbWFqb3IgcmVsZWFzZS4KKworICAgRm9yIHRoZSBQUiB0byBtYXR1cmUgZnJvbSBQT0MgdG8g
YWNjZXB0YW5jZSwgaXQgbXVzdCBjb250YWluOgorICAgKiBTZXR1cCBvZiBkZXByZWNhdGlvbiBl
cnJvcnMvd2FybmluZ3MgdGhhdCBoZWxwIHVzZXJzIGZpeCBhbmQgcG9ydCB0aGVpciBjb2RlLiBJ
ZiBpdCBpcyBwb3NzaWJsZSB0byBpbnRyb2R1Y2UgYSBkZXByZWNhdGlvbiBwZXJpb2QgdW5kZXIg
dGhlIGN1cnJlbnQgc2VyaWVzLCBiZWZvcmUgdGhlIHRydWUgYnJlYWthZ2UsIGl0IHNob3VsZCBi
ZSBpbnRyb2R1Y2VkIGluIGEgc2VwYXJhdGUgUFIgYW5kIGJlIHBhcnQgb2YgdGhlIGN1cnJlbnQg
cmVsZWFzZSBzdHJlYW0uCisgICAqIERldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSByYXRpb25h
bGUgYW5kIGV4YW1wbGVzIG9uIGhvdyB0byBwb3J0IGNvZGUgaW4gYGBkb2MvZW4vZGVwcmVjYXRp
b25zLnJzdGBgLgorCisKK0hpc3RvcnkKKz09PT09PT09PQorCisKK0ZvY3VzIHByaW1hcnkgb24g
c21vb3RoIHRyYW5zaXRpb24gLSBzdGFuY2UgKHByZSA2LjApCit+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCiBLZWVwaW5nIGJhY2t3YXJkcyBj
b21wYXRpYmlsaXR5IGhhcyBhIHZlcnkgaGlnaCBwcmlvcml0eSBpbiB0aGUgcHl0ZXN0IHByb2pl
Y3QuIEFsdGhvdWdoIHdlIGhhdmUgZGVwcmVjYXRlZCBmdW5jdGlvbmFsaXR5IG92ZXIgdGhlIHll
YXJzLCBtb3N0IG9mIGl0IGlzIHN0aWxsIHN1cHBvcnRlZC4gQWxsIGRlcHJlY2F0aW9ucyBpbiBw
eXRlc3Qgd2VyZSBkb25lIGJlY2F1c2Ugc2ltcGxlciBvciBtb3JlIGVmZmljaWVudCB3YXlzIG9m
IGFjY29tcGxpc2hpbmcgdGhlIHNhbWUgdGFza3MgaGF2ZSBlbWVyZ2VkLCBtYWtpbmcgdGhlIG9s
ZCB3YXkgb2YgZG9pbmcgdGhpbmdzIHVubmVjZXNzYXJ5LgogCiBXaXRoIHRoZSBweXRlc3QgMy4w
IHJlbGVhc2Ugd2UgaW50cm9kdWNlZCBhIGNsZWFyIGNvbW11bmljYXRpb24gc2NoZW1lIGZvciB3
aGVuIHdlIHdpbGwgYWN0dWFsbHkgcmVtb3ZlIHRoZSBvbGQgYnVzdGVkIGpvaW50IGFuZCBwb2xp
dGVseSBhc2sgeW91IHRvIHVzZSB0aGUgbmV3IGhvdG5lc3MgaW5zdGVhZCwgd2hpbGUgZ2l2aW5n
IHlvdSBlbm91Z2ggdGltZSB0byBhZGp1c3QgeW91ciB0ZXN0cyBvciByYWlzZSBjb25jZXJucyBp
ZiB0aGVyZSBhcmUgdmFsaWQgcmVhc29ucyB0byBrZWVwIGRlcHJlY2F0ZWQgZnVuY3Rpb25hbGl0
eSBhcm91bmQuCiAKLVRvIGNvbW11bmljYXRlIGNoYW5nZXMgd2UgYXJlIGFscmVhZHkgaXNzdWlu
ZyBkZXByZWNhdGlvbiB3YXJuaW5ncywgYnV0IHRoZXkgYXJlIG5vdCBkaXNwbGF5ZWQgYnkgZGVm
YXVsdC4gSW4gcHl0ZXN0IDMuMCB3ZSBjaGFuZ2VkIHRoZSBkZWZhdWx0IHNldHRpbmcgc28gdGhh
dCBweXRlc3QgZGVwcmVjYXRpb24gd2FybmluZ3MgYXJlIGRpc3BsYXllZCBpZiBub3QgZXhwbGlj
aXRseSBzaWxlbmNlZCAod2l0aCBgYC0tZGlzYWJsZS1weXRlc3Qtd2FybmluZ3NgYCkuCitUbyBj
b21tdW5pY2F0ZSBjaGFuZ2VzIHdlIGlzc3VlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIHVzaW5nIGEg
Y3VzdG9tIHdhcm5pbmcgaGllcmFyY2h5IChzZWUgOnJlZjpgaW50ZXJuYWwtd2FybmluZ3NgKS4g
VGhlc2Ugd2FybmluZ3MgbWF5IGJlIHN1cHByZXNzZWQgdXNpbmcgdGhlIHN0YW5kYXJkIG1lYW5z
OiBgYC1XYGAgY29tbWFuZC1saW5lIGZsYWcgb3IgYGBmaWx0ZXJ3YXJuaW5nc2BgIGluaSBvcHRp
b25zIChzZWUgOnJlZjpgd2FybmluZ3NgKSwgYnV0IHdlIHN1Z2dlc3QgdG8gdXNlIHRoZXNlIHNw
YXJpbmdseSBhbmQgdGVtcG9yYXJpbHksIGFuZCBoZWVkIHRoZSB3YXJuaW5ncyB3aGVuIHBvc3Np
YmxlLgogCi1XZSB3aWxsIG9ubHkgcmVtb3ZlIGRlcHJlY2F0ZWQgZnVuY3Rpb25hbGl0eSBpbiBt
YWpvciByZWxlYXNlcyAoZS5nLiBpZiB3ZSBkZXByZWNhdGUgc29tZXRoaW5nIGluIDMuMCB3ZSB3
aWxsIHJlbW92ZSBpdCBpbiA0LjApLCBhbmQga2VlcCBpdCBhcm91bmQgZm9yIGF0IGxlYXN0IHR3
byBtaW5vciByZWxlYXNlcyAoZS5nLiBpZiB3ZSBkZXByZWNhdGUgc29tZXRoaW5nIGluIDMuOSBh
bmQgNC4wIGlzIHRoZSBuZXh0IHJlbGVhc2UsIHdlIHdpbGwgbm90IHJlbW92ZSBpdCBpbiA0LjAg
YnV0IGluIDUuMCkuCitXZSB3aWxsIG9ubHkgc3RhcnQgdGhlIHJlbW92YWwgb2YgZGVwcmVjYXRl
ZCBmdW5jdGlvbmFsaXR5IGluIG1ham9yIHJlbGVhc2VzIChlLmcuIGlmIHdlIGRlcHJlY2F0ZSBz
b21ldGhpbmcgaW4gMy4wIHdlIHdpbGwgc3RhcnQgdG8gcmVtb3ZlIGl0IGluIDQuMCksIGFuZCBr
ZWVwIGl0IGFyb3VuZCBmb3IgYXQgbGVhc3QgdHdvIG1pbm9yIHJlbGVhc2VzIChlLmcuIGlmIHdl
IGRlcHJlY2F0ZSBzb21ldGhpbmcgaW4gMy45IGFuZCA0LjAgaXMgdGhlIG5leHQgcmVsZWFzZSwg
d2Ugc3RhcnQgdG8gcmVtb3ZlIGl0IGluIDUuMCwgbm90IGluIDQuMCkuCisKK1doZW4gdGhlIGRl
cHJlY2F0aW9uIGV4cGlyZXMgKGUuZy4gNC4wIGlzIHJlbGVhc2VkKSwgd2Ugd29uJ3QgcmVtb3Zl
IHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9uYWxpdHkgaW1tZWRpYXRlbHksIGJ1dCB3aWxsIHVzZSB0
aGUgc3RhbmRhcmQgd2FybmluZyBmaWx0ZXJzIHRvIHR1cm4gdGhlbSBpbnRvICoqZXJyb3JzKiog
YnkgZGVmYXVsdC4gVGhpcyBhcHByb2FjaCBtYWtlcyBpdCBleHBsaWNpdCB0aGF0IHJlbW92YWwg
aXMgaW1taW5lbnQsIGFuZCBzdGlsbCBnaXZlcyB5b3UgdGltZSB0byB0dXJuIHRoZSBkZXByZWNh
dGVkIGZlYXR1cmUgaW50byBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBlcnJvciBzbyBpdCBjYW4g
YmUgZGVhbHQgd2l0aCBpbiB5b3VyIG93biB0aW1lLiBJbiB0aGUgbmV4dCBtaW5vciByZWxlYXNl
IChlLmcuIDQuMSksIHRoZSBmZWF0dXJlIHdpbGwgYmUgZWZmZWN0aXZlbHkgcmVtb3ZlZC4KIAog
CiBEZXByZWNhdGlvbiBSb2FkbWFwCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlIHRyYWNrIGRl
cHJlY2F0aW9uIGFuZCByZW1vdmFsIG9mIGZlYXR1cmVzIHVzaW5nIG1pbGVzdG9uZXMgYW5kIHRo
ZSBgZGVwcmVjYXRpb24gPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXM/cT1sYWJlbCUzQSUyMnR5cGUlM0ErZGVwcmVjYXRpb24lMjI+YF8gYW5kIGByZW1vdmFsIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvbGFiZWxzL3R5cGUlM0ElMjByZW1v
dmFsPmBfIGxhYmVscyBvbiBHaXRIdWIuCitGZWF0dXJlcyBjdXJyZW50bHkgZGVwcmVjYXRlZCBh
bmQgcmVtb3ZlZCBpbiBwcmV2aW91cyByZWxlYXNlcyBjYW4gYmUgZm91bmQgaW4gOnJlZjpgZGVw
cmVjYXRpb25zYC4KKworV2UgdHJhY2sgZnV0dXJlIGRlcHJlY2F0aW9uIGFuZCByZW1vdmFsIG9m
IGZlYXR1cmVzIHVzaW5nIG1pbGVzdG9uZXMgYW5kIHRoZSBgZGVwcmVjYXRpb24gPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXM/cT1sYWJlbCUzQSUyMnR5cGUlM0Er
ZGVwcmVjYXRpb24lMjI+YF8gYW5kIGByZW1vdmFsIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvbGFiZWxzL3R5cGUlM0ElMjByZW1vdmFsPmBfIGxhYmVscyBvbiBHaXRIdWIu
CisKIAotRm9sbG93aW5nIG91ciBkZXByZWNhdGlvbiBwb2xpY3ksIGFmdGVyIHN0YXJ0aW5nIGlz
c3VpbmcgZGVwcmVjYXRpb24gd2FybmluZ3Mgd2Uga2VlcCBmZWF0dXJlcyBmb3IgKmF0IGxlYXN0
KiB0d28gbWlub3IgdmVyc2lvbnMgYmVmb3JlIGNvbnNpZGVyaW5nIHJlbW92YWwuCisuLiBfYCM4
OTVgOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzg5NQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Jhc2gtY29tcGxldGlvbi5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYmFzaC1jb21wbGV0aW9uLnJzdAppbmRleCAwOGQ5NzgyMDkwY2EuLmVhYTA3
ODgxNDE0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Jhc2gtY29tcGxldGlvbi5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Jhc2gtY29tcGxldGlvbi5yc3QKQEAgLTgsMTgg
KzgsMjYgQEAgV2hlbiB1c2luZyBiYXNoIGFzIHlvdXIgc2hlbGwsIGBgcHl0ZXN0YGAgY2FuIHVz
ZSBhcmdjb21wbGV0ZQogKGh0dHBzOi8vYXJnY29tcGxldGUucmVhZHRoZWRvY3MuaW8vKSBmb3Ig
YXV0by1jb21wbGV0aW9uLgogRm9yIHRoaXMgYGBhcmdjb21wbGV0ZWBgIG5lZWRzIHRvIGJlIGlu
c3RhbGxlZCAqKmFuZCoqIGVuYWJsZWQuCiAKLUluc3RhbGwgYXJnY29tcGxldGUgdXNpbmc6Ogor
SW5zdGFsbCBhcmdjb21wbGV0ZSB1c2luZzoKIAotICAgICAgICBzdWRvIHBpcCBpbnN0YWxsICdh
cmdjb21wbGV0ZT49MC41LjcnCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCi1Gb3IgZ2xvYmFsIGFj
dGl2YXRpb24gb2YgYWxsIGFyZ2NvbXBsZXRlIGVuYWJsZWQgcHl0aG9uIGFwcGxpY2F0aW9ucyBy
dW46OgorICAgIHN1ZG8gcGlwIGluc3RhbGwgJ2FyZ2NvbXBsZXRlPj0wLjUuNycKKworRm9yIGds
b2JhbCBhY3RpdmF0aW9uIG9mIGFsbCBhcmdjb21wbGV0ZSBlbmFibGVkIHB5dGhvbiBhcHBsaWNh
dGlvbnMgcnVuOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgc3VkbyBhY3RpdmF0ZS1n
bG9iYWwtcHl0aG9uLWFyZ2NvbXBsZXRlCiAKLUZvciBwZXJtYW5lbnQgKGJ1dCBub3QgZ2xvYmFs
KSBgYHB5dGVzdGBgIGFjdGl2YXRpb24sIHVzZTo6CitGb3IgcGVybWFuZW50IChidXQgbm90IGds
b2JhbCkgYGBweXRlc3RgYCBhY3RpdmF0aW9uLCB1c2U6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNo
CisKKyAgICByZWdpc3Rlci1weXRob24tYXJnY29tcGxldGUgcHl0ZXN0ID4+IH4vLmJhc2hyYwog
Ci0gICAgICAgIHJlZ2lzdGVyLXB5dGhvbi1hcmdjb21wbGV0ZSBweXRlc3QgPj4gfi8uYmFzaHJj
CitGb3Igb25lLXRpbWUgYWN0aXZhdGlvbiBvZiBhcmdjb21wbGV0ZSBmb3IgYGBweXRlc3RgYCBv
bmx5LCB1c2U6CiAKLUZvciBvbmUtdGltZSBhY3RpdmF0aW9uIG9mIGFyZ2NvbXBsZXRlIGZvciBg
YHB5dGVzdGBgIG9ubHksIHVzZTo6CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCi0gICAgICAgIGV2
YWwgIiQocmVnaXN0ZXItcHl0aG9uLWFyZ2NvbXBsZXRlIHB5dGVzdCkiCisgICAgZXZhbCAiJChy
ZWdpc3Rlci1weXRob24tYXJnY29tcGxldGUgcHl0ZXN0KSIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9idWlsdGluLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9idWlsdGluLnJzdApp
bmRleCBjMmQyMzQ2OWJjODQuLjBmZDU4MTY0Yzc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2J1aWx0aW4ucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9idWlsdGluLnJzdApA
QCAtMTIsNyArMTIsOSBAQCBGb3IgaW5mb3JtYXRpb24gb24gcGx1Z2luIGhvb2tzIGFuZCBvYmpl
Y3RzLCBzZWUgOnJlZjpgcGx1Z2luc2AuCiAKIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgYGBweXRl
c3QubWFya2BgIG1lY2hhbmlzbSwgc2VlIDpyZWY6YG1hcmtgLgogCi1Gb3IgaW5mb3JtYXRpb24g
YWJvdXQgZml4dHVyZXMsIHNlZSA6cmVmOmBmaXh0dXJlc2AuIFRvIHNlZSBhIGNvbXBsZXRlIGxp
c3Qgb2YgYXZhaWxhYmxlIGZpeHR1cmVzIChhZGQgYGAtdmBgIHRvIGFsc28gc2VlIGZpeHR1cmVz
IHdpdGggbGVhZGluZyBgYF9gYCksIHR5cGUgOjoKK0ZvciBpbmZvcm1hdGlvbiBhYm91dCBmaXh0
dXJlcywgc2VlIDpyZWY6YGZpeHR1cmVzYC4gVG8gc2VlIGEgY29tcGxldGUgbGlzdCBvZiBhdmFp
bGFibGUgZml4dHVyZXMgKGFkZCBgYC12YGAgdG8gYWxzbyBzZWUgZml4dHVyZXMgd2l0aCBsZWFk
aW5nIGBgX2BgKSwgdHlwZSA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0
ZXN0IC1xIC0tZml4dHVyZXMKICAgICBjYWNoZQpAQCAtMjEsMTAyICsyMywxNjMgQEAgRm9yIGlu
Zm9ybWF0aW9uIGFib3V0IGZpeHR1cmVzLCBzZWUgOnJlZjpgZml4dHVyZXNgLiBUbyBzZWUgYSBj
b21wbGV0ZSBsaXN0IG9mIGEKICAgICAgICAgY2FjaGUuZ2V0KGtleSwgZGVmYXVsdCkKICAgICAg
ICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpCiAKLSAgICAgICAgS2V5cyBtdXN0IGJlIGEgYGAvYGAg
c2VwYXJhdGVkIHZhbHVlLCB3aGVyZSB0aGUgZmlyc3QgcGFydCBpcyB1c3VhbGx5IHRoZQorICAg
ICAgICBLZXlzIG11c3QgYmUgYGAvYGAgc2VwYXJhdGVkIHN0cmluZ3MsIHdoZXJlIHRoZSBmaXJz
dCBwYXJ0IGlzIHVzdWFsbHkgdGhlCiAgICAgICAgIG5hbWUgb2YgeW91ciBwbHVnaW4gb3IgYXBw
bGljYXRpb24gdG8gYXZvaWQgY2xhc2hlcyB3aXRoIG90aGVyIGNhY2hlIHVzZXJzLgogCiAgICAg
ICAgIFZhbHVlcyBjYW4gYmUgYW55IG9iamVjdCBoYW5kbGVkIGJ5IHRoZSBqc29uIHN0ZGxpYiBt
b2R1bGUuCisKICAgICBjYXBzeXMKLSAgICAgICAgRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMg
dG8gYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFuZCBtYWtlCi0gICAgICAgIGNh
cHR1cmVkIG91dHB1dCBhdmFpbGFibGUgdmlhIGBgY2Fwc3lzLnJlYWRvdXRlcnIoKWBgIG1ldGhv
ZCBjYWxscwotICAgICAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCBuYW1lZHR1cGxl
LiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgCi0gICAgICAgIG9iamVjdHMu
CisgICAgICAgIEVuYWJsZSB0ZXh0IGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gYGBzeXMuc3Rkb3V0
YGAgYW5kIGBgc3lzLnN0ZGVycmBgLgorCisgICAgICAgIFRoZSBjYXB0dXJlZCBvdXRwdXQgaXMg
bWFkZSBhdmFpbGFibGUgdmlhIGBgY2Fwc3lzLnJlYWRvdXRlcnIoKWBgIG1ldGhvZAorICAgICAg
ICBjYWxscywgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgbmFtZWR0dXBsZS4KKyAgICAg
ICAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgIG9iamVjdHMuCisKICAgICBj
YXBzeXNiaW5hcnkKLSAgICAgICAgRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gYGBzeXMu
c3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFuZCBtYWtlCi0gICAgICAgIGNhcHR1cmVkIG91
dHB1dCBhdmFpbGFibGUgdmlhIGBgY2Fwc3lzLnJlYWRvdXRlcnIoKWBgIG1ldGhvZCBjYWxscwot
ICAgICAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0YGAgYW5k
IGBgZXJyYGAgd2lsbCBiZSBgYGJ5dGVzYGAKLSAgICAgICAgb2JqZWN0cy4KKyAgICAgICAgRW5h
YmxlIGJ5dGVzIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lz
LnN0ZGVycmBgLgorCisgICAgICAgIFRoZSBjYXB0dXJlZCBvdXRwdXQgaXMgbWFkZSBhdmFpbGFi
bGUgdmlhIGBgY2Fwc3lzYmluYXJ5LnJlYWRvdXRlcnIoKWBgCisgICAgICAgIG1ldGhvZCBjYWxs
cywgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgbmFtZWR0dXBsZS4KKyAgICAgICAgYGBv
dXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgYnl0ZXNgYCBvYmplY3RzLgorCiAgICAgY2FwZmQK
LSAgICAgICAgRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gZmlsZSBkZXNjcmlwdG9ycyBg
YDFgYCBhbmQgYGAyYGAgYW5kIG1ha2UKLSAgICAgICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJs
ZSB2aWEgYGBjYXBmZC5yZWFkb3V0ZXJyKClgYCBtZXRob2QgY2FsbHMKLSAgICAgICAgd2hpY2gg
cmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwg
YmUgYGB0ZXh0YGAKLSAgICAgICAgb2JqZWN0cy4KKyAgICAgICAgRW5hYmxlIHRleHQgY2FwdHVy
aW5nIG9mIHdyaXRlcyB0byBmaWxlIGRlc2NyaXB0b3JzIGBgMWBgIGFuZCBgYDJgYC4KKworICAg
ICAgICBUaGUgY2FwdHVyZWQgb3V0cHV0IGlzIG1hZGUgYXZhaWxhYmxlIHZpYSBgYGNhcGZkLnJl
YWRvdXRlcnIoKWBgIG1ldGhvZAorICAgICAgICBjYWxscywgd2hpY2ggcmV0dXJuIGEgYGAob3V0
LCBlcnIpYGAgbmFtZWR0dXBsZS4KKyAgICAgICAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJl
IGBgdGV4dGBgIG9iamVjdHMuCisKICAgICBjYXBmZGJpbmFyeQotICAgICAgICBFbmFibGUgY2Fw
dHVyaW5nIG9mIHdyaXRlIHRvIGZpbGUgZGVzY3JpcHRvcnMgMSBhbmQgMiBhbmQgbWFrZQotICAg
ICAgICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcGZkYmluYXJ5LnJlYWRvdXRl
cnJgYCBtZXRob2QgY2FsbHMKLSAgICAgICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAg
dHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUKLSAgICAgICAgYGBieXRlc2BgIG9i
amVjdHMuCi0gICAgZG9jdGVzdF9uYW1lc3BhY2UKLSAgICAgICAgRml4dHVyZSB0aGF0IHJldHVy
bnMgYSA6cHk6Y2xhc3M6YGRpY3RgIHRoYXQgd2lsbCBiZSBpbmplY3RlZCBpbnRvIHRoZSBuYW1l
c3BhY2Ugb2YgZG9jdGVzdHMuCi0gICAgcHl0ZXN0Y29uZmlnCisgICAgICAgIEVuYWJsZSBieXRl
cyBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRvIGZpbGUgZGVzY3JpcHRvcnMgYGAxYGAgYW5kIGBgMmBg
LgorCisgICAgICAgIFRoZSBjYXB0dXJlZCBvdXRwdXQgaXMgbWFkZSBhdmFpbGFibGUgdmlhIGBg
Y2FwZmQucmVhZG91dGVycigpYGAgbWV0aG9kCisgICAgICAgIGNhbGxzLCB3aGljaCByZXR1cm4g
YSBgYChvdXQsIGVycilgYCBuYW1lZHR1cGxlLgorICAgICAgICBgYG91dGBgIGFuZCBgYGVycmBg
IHdpbGwgYmUgYGBieXRlYGAgb2JqZWN0cy4KKworICAgIGRvY3Rlc3RfbmFtZXNwYWNlIFtzZXNz
aW9uIHNjb3BlXQorICAgICAgICBGaXh0dXJlIHRoYXQgcmV0dXJucyBhIDpweTpjbGFzczpgZGlj
dGAgdGhhdCB3aWxsIGJlIGluamVjdGVkIGludG8gdGhlCisgICAgICAgIG5hbWVzcGFjZSBvZiBk
b2N0ZXN0cy4KKworICAgIHB5dGVzdGNvbmZpZyBbc2Vzc2lvbiBzY29wZV0KICAgICAgICAgU2Vz
c2lvbi1zY29wZWQgZml4dHVyZSB0aGF0IHJldHVybnMgdGhlIDpjbGFzczpgX3B5dGVzdC5jb25m
aWcuQ29uZmlnYCBvYmplY3QuCiAKICAgICAgICAgRXhhbXBsZTo6CiAKICAgICAgICAgICAgIGRl
ZiB0ZXN0X2ZvbyhweXRlc3Rjb25maWcpOgotICAgICAgICAgICAgICAgIGlmIHB5dGVzdGNvbmZp
Zy5nZXRvcHRpb24oInZlcmJvc2UiKToKKyAgICAgICAgICAgICAgICBpZiBweXRlc3Rjb25maWcu
Z2V0b3B0aW9uKCJ2ZXJib3NlIikgPiAwOgogICAgICAgICAgICAgICAgICAgICAuLi4KKwogICAg
IHJlY29yZF9wcm9wZXJ0eQotICAgICAgICBBZGQgYW4gZXh0cmEgcHJvcGVydGllcyB0aGUgY2Fs
bGluZyB0ZXN0LgorICAgICAgICBBZGQgZXh0cmEgcHJvcGVydGllcyB0byB0aGUgY2FsbGluZyB0
ZXN0LgorCiAgICAgICAgIFVzZXIgcHJvcGVydGllcyBiZWNvbWUgcGFydCBvZiB0aGUgdGVzdCBy
ZXBvcnQgYW5kIGFyZSBhdmFpbGFibGUgdG8gdGhlCiAgICAgICAgIGNvbmZpZ3VyZWQgcmVwb3J0
ZXJzLCBsaWtlIEpVbml0IFhNTC4KLSAgICAgICAgVGhlIGZpeHR1cmUgaXMgY2FsbGFibGUgd2l0
aCBgYChuYW1lLCB2YWx1ZSlgYCwgd2l0aCB2YWx1ZSBiZWluZyBhdXRvbWF0aWNhbGx5Ci0gICAg
ICAgIHhtbC1lbmNvZGVkLgorCisgICAgICAgIFRoZSBmaXh0dXJlIGlzIGNhbGxhYmxlIHdpdGgg
YGBuYW1lLCB2YWx1ZWBgLiBUaGUgdmFsdWUgaXMgYXV0b21hdGljYWxseQorICAgICAgICBYTUwt
ZW5jb2RlZC4KIAogICAgICAgICBFeGFtcGxlOjoKIAogICAgICAgICAgICAgZGVmIHRlc3RfZnVu
Y3Rpb24ocmVjb3JkX3Byb3BlcnR5KToKICAgICAgICAgICAgICAgICByZWNvcmRfcHJvcGVydHko
ImV4YW1wbGVfa2V5IiwgMSkKLSAgICByZWNvcmRfeG1sX3Byb3BlcnR5Ci0gICAgICAgIChEZXBy
ZWNhdGVkKSB1c2UgcmVjb3JkX3Byb3BlcnR5LgorCiAgICAgcmVjb3JkX3htbF9hdHRyaWJ1dGUK
ICAgICAgICAgQWRkIGV4dHJhIHhtbCBhdHRyaWJ1dGVzIHRvIHRoZSB0YWcgZm9yIHRoZSBjYWxs
aW5nIHRlc3QuCi0gICAgICAgIFRoZSBmaXh0dXJlIGlzIGNhbGxhYmxlIHdpdGggYGAobmFtZSwg
dmFsdWUpYGAsIHdpdGggdmFsdWUgYmVpbmcKLSAgICAgICAgYXV0b21hdGljYWxseSB4bWwtZW5j
b2RlZAorCisgICAgICAgIFRoZSBmaXh0dXJlIGlzIGNhbGxhYmxlIHdpdGggYGBuYW1lLCB2YWx1
ZWBgLiBUaGUgdmFsdWUgaXMKKyAgICAgICAgYXV0b21hdGljYWxseSBYTUwtZW5jb2RlZC4KKwor
ICAgIHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkgW3Nlc3Npb24gc2NvcGVdCisgICAgICAgIFJl
Y29yZCBhIG5ldyBgYDxwcm9wZXJ0eT5gYCB0YWcgYXMgY2hpbGQgb2YgdGhlIHJvb3QgYGA8dGVz
dHN1aXRlPmBgLgorCisgICAgICAgIFRoaXMgaXMgc3VpdGFibGUgdG8gd3JpdGluZyBnbG9iYWwg
aW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBlbnRpcmUgdGVzdAorICAgICAgICBzdWl0ZSwgYW5k
IGlzIGNvbXBhdGlibGUgd2l0aCBgYHh1bml0MmBgIEpVbml0IGZhbWlseS4KKworICAgICAgICBU
aGlzIGlzIGEgYGBzZXNzaW9uYGAtc2NvcGVkIGZpeHR1cmUgd2hpY2ggaXMgY2FsbGVkIHdpdGgg
YGAobmFtZSwgdmFsdWUpYGAuIEV4YW1wbGU6CisKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5
dGhvbgorCisgICAgICAgICAgICBkZWYgdGVzdF9mb28ocmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0
eSk6CisgICAgICAgICAgICAgICAgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSgiQVJDSCIsICJQ
UEMiKQorICAgICAgICAgICAgICAgIHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkoIlNUT1JBR0Vf
VFlQRSIsICJDRVBIIikKKworICAgICAgICBgYG5hbWVgYCBtdXN0IGJlIGEgc3RyaW5nLCBgYHZh
bHVlYGAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgYW5kIHByb3Blcmx5IHhtbC1lc2Nh
cGVkLgorCisgICAgICAgIC4uIHdhcm5pbmc6OgorCisgICAgICAgICAgICBDdXJyZW50bHkgdGhp
cyBmaXh0dXJlICoqZG9lcyBub3Qgd29yayoqIHdpdGggdGhlCisgICAgICAgICAgICBgcHl0ZXN0
LXhkaXN0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QteGRpc3Q+YF9fIHBs
dWdpbi4gU2VlIGlzc3VlCisgICAgICAgICAgICBgIzc3NjcgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzc2Nz5gX18gZm9yIGRldGFpbHMuCisKICAgICBjYXBs
b2cKICAgICAgICAgQWNjZXNzIGFuZCBjb250cm9sIGxvZyBjYXB0dXJpbmcuCiAKLSAgICAgICAg
Q2FwdHVyZWQgbG9ncyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGZvbGxvd2luZyBtZXRob2Rz
OjoKKyAgICAgICAgQ2FwdHVyZWQgbG9ncyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzL21ldGhvZHM6OgogCisgICAgICAgICogY2FwbG9nLm1lc3NhZ2VzICAg
ICAgICAtPiBsaXN0IG9mIGZvcm1hdC1pbnRlcnBvbGF0ZWQgbG9nIG1lc3NhZ2VzCiAgICAgICAg
ICogY2FwbG9nLnRleHQgICAgICAgICAgICAtPiBzdHJpbmcgY29udGFpbmluZyBmb3JtYXR0ZWQg
bG9nIG91dHB1dAogICAgICAgICAqIGNhcGxvZy5yZWNvcmRzICAgICAgICAgLT4gbGlzdCBvZiBs
b2dnaW5nLkxvZ1JlY29yZCBpbnN0YW5jZXMKICAgICAgICAgKiBjYXBsb2cucmVjb3JkX3R1cGxl
cyAgIC0+IGxpc3Qgb2YgKGxvZ2dlcl9uYW1lLCBsZXZlbCwgbWVzc2FnZSkgdHVwbGVzCiAgICAg
ICAgICogY2FwbG9nLmNsZWFyKCkgICAgICAgICAtPiBjbGVhciBjYXB0dXJlZCByZWNvcmRzIGFu
ZCBmb3JtYXR0ZWQgbG9nIG91dHB1dCBzdHJpbmcKKwogICAgIG1vbmtleXBhdGNoCi0gICAgICAg
IFRoZSByZXR1cm5lZCBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBwcm92aWRlcyB0aGVzZQotICAg
ICAgICBoZWxwZXIgbWV0aG9kcyB0byBtb2RpZnkgb2JqZWN0cywgZGljdGlvbmFyaWVzIG9yIG9z
LmVudmlyb246OgorICAgICAgICBBIGNvbnZlbmllbnQgZml4dHVyZSBmb3IgbW9ua2V5LXBhdGNo
aW5nLgorCisgICAgICAgIFRoZSBmaXh0dXJlIHByb3ZpZGVzIHRoZXNlIG1ldGhvZHMgdG8gbW9k
aWZ5IG9iamVjdHMsIGRpY3Rpb25hcmllcyBvcgorICAgICAgICBvcy5lbnZpcm9uOjoKIAogICAg
ICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlLCByYWlzaW5nPVRy
dWUpCiAgICAgICAgICAgICBtb25rZXlwYXRjaC5kZWxhdHRyKG9iaiwgbmFtZSwgcmFpc2luZz1U
cnVlKQogICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShtYXBwaW5nLCBuYW1lLCB2YWx1
ZSkKICAgICAgICAgICAgIG1vbmtleXBhdGNoLmRlbGl0ZW0ob2JqLCBuYW1lLCByYWlzaW5nPVRy
dWUpCiAgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYobmFtZSwgdmFsdWUsIHByZXBlbmQ9
RmFsc2UpCi0gICAgICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYobmFtZSwgdmFsdWUsIHJhaXNp
bmc9VHJ1ZSkKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLmRlbGVudihuYW1lLCByYWlzaW5nPVRy
dWUpCiAgICAgICAgICAgICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQocGF0aCkKICAgICAg
ICAgICAgIG1vbmtleXBhdGNoLmNoZGlyKHBhdGgpCiAKLSAgICAgICAgQWxsIG1vZGlmaWNhdGlv
bnMgd2lsbCBiZSB1bmRvbmUgYWZ0ZXIgdGhlIHJlcXVlc3RpbmcKLSAgICAgICAgdGVzdCBmdW5j
dGlvbiBvciBmaXh0dXJlIGhhcyBmaW5pc2hlZC4gVGhlIGBgcmFpc2luZ2BgCi0gICAgICAgIHBh
cmFtZXRlciBkZXRlcm1pbmVzIGlmIGEgS2V5RXJyb3Igb3IgQXR0cmlidXRlRXJyb3IKLSAgICAg
ICAgd2lsbCBiZSByYWlzZWQgaWYgdGhlIHNldC9kZWxldGlvbiBvcGVyYXRpb24gaGFzIG5vIHRh
cmdldC4KKyAgICAgICAgQWxsIG1vZGlmaWNhdGlvbnMgd2lsbCBiZSB1bmRvbmUgYWZ0ZXIgdGhl
IHJlcXVlc3RpbmcgdGVzdCBmdW5jdGlvbiBvcgorICAgICAgICBmaXh0dXJlIGhhcyBmaW5pc2hl
ZC4gVGhlIGBgcmFpc2luZ2BgIHBhcmFtZXRlciBkZXRlcm1pbmVzIGlmIGEgS2V5RXJyb3IKKyAg
ICAgICAgb3IgQXR0cmlidXRlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgdGhlIHNldC9kZWxldGlv
biBvcGVyYXRpb24gaGFzIG5vIHRhcmdldC4KKwogICAgIHJlY3dhcm4KICAgICAgICAgUmV0dXJu
IGEgOmNsYXNzOmBXYXJuaW5nc1JlY29yZGVyYCBpbnN0YW5jZSB0aGF0IHJlY29yZHMgYWxsIHdh
cm5pbmdzIGVtaXR0ZWQgYnkgdGVzdCBmdW5jdGlvbnMuCiAKICAgICAgICAgU2VlIGh0dHA6Ly9k
b2NzLnB5dGhvbi5vcmcvbGlicmFyeS93YXJuaW5ncy5odG1sIGZvciBpbmZvcm1hdGlvbgogICAg
ICAgICBvbiB3YXJuaW5nIGNhdGVnb3JpZXMuCi0gICAgdG1wZGlyX2ZhY3RvcnkKLSAgICAgICAg
UmV0dXJuIGEgVGVtcGRpckZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSB0ZXN0IHNlc3Npb24uCisK
KyAgICB0bXBkaXJfZmFjdG9yeSBbc2Vzc2lvbiBzY29wZV0KKyAgICAgICAgUmV0dXJuIGEgOmNs
YXNzOmBfcHl0ZXN0LnRtcGRpci5UZW1wZGlyRmFjdG9yeWAgaW5zdGFuY2UgZm9yIHRoZSB0ZXN0
IHNlc3Npb24uCisKKyAgICB0bXBfcGF0aF9mYWN0b3J5IFtzZXNzaW9uIHNjb3BlXQorICAgICAg
ICBSZXR1cm4gYSA6Y2xhc3M6YF9weXRlc3QudG1wZGlyLlRlbXBQYXRoRmFjdG9yeWAgaW5zdGFu
Y2UgZm9yIHRoZSB0ZXN0IHNlc3Npb24uCisKICAgICB0bXBkaXIKLSAgICAgICAgUmV0dXJuIGEg
dGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoIG9iamVjdAotICAgICAgICB3aGljaCBpcyB1bmlxdWUg
dG8gZWFjaCB0ZXN0IGZ1bmN0aW9uIGludm9jYXRpb24sCi0gICAgICAgIGNyZWF0ZWQgYXMgYSBz
dWIgZGlyZWN0b3J5IG9mIHRoZSBiYXNlIHRlbXBvcmFyeQotICAgICAgICBkaXJlY3RvcnkuICBU
aGUgcmV0dXJuZWQgb2JqZWN0IGlzIGEgYHB5LnBhdGgubG9jYWxgXwotICAgICAgICBwYXRoIG9i
amVjdC4KKyAgICAgICAgUmV0dXJuIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoIG9iamVjdCB3
aGljaCBpcyB1bmlxdWUgdG8gZWFjaCB0ZXN0CisgICAgICAgIGZ1bmN0aW9uIGludm9jYXRpb24s
IGNyZWF0ZWQgYXMgYSBzdWIgZGlyZWN0b3J5IG9mIHRoZSBiYXNlIHRlbXBvcmFyeQorICAgICAg
ICBkaXJlY3RvcnkuCisKKyAgICAgICAgVGhlIHJldHVybmVkIG9iamVjdCBpcyBhIGBweS5wYXRo
LmxvY2FsYF8gcGF0aCBvYmplY3QuCiAKICAgICAgICAgLi4gX2BweS5wYXRoLmxvY2FsYDogaHR0
cHM6Ly9weS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGF0aC5odG1sCiAKLSAgICBubyB0ZXN0
cyByYW4gaW4gMC4xMiBzZWNvbmRzCisgICAgdG1wX3BhdGgKKyAgICAgICAgUmV0dXJuIGEgdGVt
cG9yYXJ5IGRpcmVjdG9yeSBwYXRoIG9iamVjdCB3aGljaCBpcyB1bmlxdWUgdG8gZWFjaCB0ZXN0
CisgICAgICAgIGZ1bmN0aW9uIGludm9jYXRpb24sIGNyZWF0ZWQgYXMgYSBzdWIgZGlyZWN0b3J5
IG9mIHRoZSBiYXNlIHRlbXBvcmFyeQorICAgICAgICBkaXJlY3RvcnkuCisKKyAgICAgICAgVGhl
IHJldHVybmVkIG9iamVjdCBpcyBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYCBvYmplY3QuCisKKyAg
ICAgICAgLi4gbm90ZTo6CisKKyAgICAgICAgICAgIEluIHB5dGhvbiA8IDMuNiB0aGlzIGlzIGEg
cGF0aGxpYjIuUGF0aC4KIAotWW91IGNhbiBhbHNvIGludGVyYWN0aXZlbHkgYXNrIGZvciBoZWxw
LCBlLmcuIGJ5IHR5cGluZyBvbiB0aGUgUHl0aG9uIGludGVyYWN0aXZlIHByb21wdCBzb21ldGhp
bmcgbGlrZTo6CisKKyAgICBubyB0ZXN0cyByYW4gaW4gMC4xMnMKKworWW91IGNhbiBhbHNvIGlu
dGVyYWN0aXZlbHkgYXNrIGZvciBoZWxwLCBlLmcuIGJ5IHR5cGluZyBvbiB0aGUgUHl0aG9uIGlu
dGVyYWN0aXZlIHByb21wdCBzb21ldGhpbmcgbGlrZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhv
bgogCiAgICAgaW1wb3J0IHB5dGVzdAorCiAgICAgaGVscChweXRlc3QpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vY2FjaGUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NhY2hlLnJz
dAppbmRleCAzN2JjZjcwNzBkNDIuLjQyY2E0NzM1NDVkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2NhY2hlLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY2FjaGUucnN0CkBA
IC01LDcgKzUsNyBAQAogQ2FjaGU6IHdvcmtpbmcgd2l0aCBjcm9zcy10ZXN0cnVuIHN0YXRlCiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotLi4gdmVyc2lvbmFkZGVk
OjogMi44CisKIAogVXNhZ2UKIC0tLS0tLS0tLQpAQCAtMzMsMTcgKzMzLDIyIEBAIE90aGVyIHBs
dWdpbnMgbWF5IGFjY2VzcyB0aGUgYGNvbmZpZy5jYWNoZWBfIG9iamVjdCB0byBzZXQvZ2V0CiBS
ZXJ1bm5pbmcgb25seSBmYWlsdXJlcyBvciBmYWlsdXJlcyBmaXJzdAogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRmlyc3QsIGxldCdzIGNyZWF0ZSA1
MCB0ZXN0IGludm9jYXRpb24gb2Ygd2hpY2ggb25seSAyIGZhaWw6OgorRmlyc3QsIGxldCdzIGNy
ZWF0ZSA1MCB0ZXN0IGludm9jYXRpb24gb2Ygd2hpY2ggb25seSAyIGZhaWw6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0XzUwLnB5CiAgICAgaW1wb3J0
IHB5dGVzdAogCisKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1MCkp
CiAgICAgZGVmIHRlc3RfbnVtKGkpOgogICAgICAgICBpZiBpIGluICgxNywgMjUpOgotICAgICAg
ICAgICBweXRlc3QuZmFpbCgiYmFkIGx1Y2siKQorICAgICAgICAgICAgcHl0ZXN0LmZhaWwoImJh
ZCBsdWNrIikKKworSWYgeW91IHJ1biB0aGlzIGZvciB0aGUgZmlyc3QgdGltZSB5b3Ugd2lsbCBz
ZWUgdHdvIGZhaWx1cmVzOgogCi1JZiB5b3UgcnVuIHRoaXMgZm9yIHRoZSBmaXJzdCB0aW1lIHlv
dSB3aWxsIHNlZSB0d28gZmFpbHVyZXM6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAg
JCBweXRlc3QgLXEKICAgICAuLi4uLi4uLi4uLi4uLi4uLkYuLi4uLi4uRi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLiAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTU1LDEwICs2MCwxMCBAQCBJ
ZiB5b3UgcnVuIHRoaXMgZm9yIHRoZSBmaXJzdCB0aW1lIHlvdSB3aWxsIHNlZSB0d28gZmFpbHVy
ZXM6OgogICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1MCkpCiAg
ICAgICAgIGRlZiB0ZXN0X251bShpKToKICAgICAgICAgICAgIGlmIGkgaW4gKDE3LCAyNSk6Ci0g
ICAgPiAgICAgICAgICBweXRlc3QuZmFpbCgiYmFkIGx1Y2siKQotICAgIEUgICAgICAgICAgRmFp
bGVkOiBiYWQgbHVjaworICAgID4gICAgICAgICAgIHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCisg
ICAgRSAgICAgICAgICAgRmFpbGVkOiBiYWQgbHVjawogCi0gICAgdGVzdF81MC5weTo2OiBGYWls
ZWQKKyAgICB0ZXN0XzUwLnB5Ojc6IEZhaWxlZAogICAgIF9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18gdGVzdF9udW1bMjVdIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIAog
ICAgIGkgPSAyNQpAQCAtNjYsMTkgKzcxLDI1IEBAIElmIHlvdSBydW4gdGhpcyBmb3IgdGhlIGZp
cnN0IHRpbWUgeW91IHdpbGwgc2VlIHR3byBmYWlsdXJlczo6CiAgICAgICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgiaSIsIHJhbmdlKDUwKSkKICAgICAgICAgZGVmIHRlc3RfbnVtKGkpOgog
ICAgICAgICAgICAgaWYgaSBpbiAoMTcsIDI1KToKLSAgICA+ICAgICAgICAgIHB5dGVzdC5mYWls
KCJiYWQgbHVjayIpCi0gICAgRSAgICAgICAgICBGYWlsZWQ6IGJhZCBsdWNrCisgICAgPiAgICAg
ICAgICAgcHl0ZXN0LmZhaWwoImJhZCBsdWNrIikKKyAgICBFICAgICAgICAgICBGYWlsZWQ6IGJh
ZCBsdWNrCiAKLSAgICB0ZXN0XzUwLnB5OjY6IEZhaWxlZAotICAgIDIgZmFpbGVkLCA0OCBwYXNz
ZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgdGVzdF81MC5weTo3OiBGYWlsZWQKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfNTAucHk6OnRlc3RfbnVtWzE3XSAtIEZhaWxl
ZDogYmFkIGx1Y2sKKyAgICBGQUlMRUQgdGVzdF81MC5weTo6dGVzdF9udW1bMjVdIC0gRmFpbGVk
OiBiYWQgbHVjaworICAgIDIgZmFpbGVkLCA0OCBwYXNzZWQgaW4gMC4xMnMKIAotSWYgeW91IHRo
ZW4gcnVuIGl0IHdpdGggYGAtLWxmYGA6OgorSWYgeW91IHRoZW4gcnVuIGl0IHdpdGggYGAtLWxm
YGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC0tbGYKICAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBw
eXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5E
T0NfVE1QRElSLCBpbmlmaWxlOgotICAgIGNvbGxlY3RlZCA1MCBpdGVtcyAvIDQ4IGRlc2VsZWN0
ZWQKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHkt
MS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0
X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCAyIGl0
ZW1zCiAgICAgcnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlvdXMgMiBmYWlsdXJlcwogCiAg
ICAgdGVzdF81MC5weSBGRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWzEwMCVdCkBAIC05MSwxMCArMTAyLDEwIEBAIElmIHlvdSB0aGVuIHJ1
biBpdCB3aXRoIGBgLS1sZmBgOjoKICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
IiwgcmFuZ2UoNTApKQogICAgICAgICBkZWYgdGVzdF9udW0oaSk6CiAgICAgICAgICAgICBpZiBp
IGluICgxNywgMjUpOgotICAgID4gICAgICAgICAgcHl0ZXN0LmZhaWwoImJhZCBsdWNrIikKLSAg
ICBFICAgICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKKyAgICA+ICAgICAgICAgICBweXRlc3QuZmFp
bCgiYmFkIGx1Y2siKQorICAgIEUgICAgICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKIAotICAgIHRl
c3RfNTAucHk6NjogRmFpbGVkCisgICAgdGVzdF81MC5weTo3OiBGYWlsZWQKICAgICBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfbnVtWzI1XSBfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCiAKICAgICBpID0gMjUKQEAgLTEwMiwyMyArMTEzLDI5IEBAIElmIHlvdSB0
aGVuIHJ1biBpdCB3aXRoIGBgLS1sZmBgOjoKICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpIiwgcmFuZ2UoNTApKQogICAgICAgICBkZWYgdGVzdF9udW0oaSk6CiAgICAgICAgICAg
ICBpZiBpIGluICgxNywgMjUpOgotICAgID4gICAgICAgICAgcHl0ZXN0LmZhaWwoImJhZCBsdWNr
IikKLSAgICBFICAgICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKKyAgICA+ICAgICAgICAgICBweXRl
c3QuZmFpbCgiYmFkIGx1Y2siKQorICAgIEUgICAgICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKIAot
ICAgIHRlc3RfNTAucHk6NjogRmFpbGVkCi0gICAgPT09PT09PT09PT09PT09PT0gMiBmYWlsZWQs
IDQ4IGRlc2VsZWN0ZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PQorICAgIHRl
c3RfNTAucHk6NzogRmFpbGVkCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0
ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0
ZXN0XzUwLnB5Ojp0ZXN0X251bVsxN10gLSBGYWlsZWQ6IGJhZCBsdWNrCisgICAgRkFJTEVEIHRl
c3RfNTAucHk6OnRlc3RfbnVtWzI1XSAtIEZhaWxlZDogYmFkIGx1Y2sKKyAgICA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAKLVlvdSBoYXZlIHJ1biBvbmx5IHRoZSB0d28gZmFpbGluZyB0ZXN0IGZyb20g
dGhlIGxhc3QgcnVuLCB3aGlsZSA0OCB0ZXN0cyBoYXZlCi1ub3QgYmVlbiBydW4gKCJkZXNlbGVj
dGVkIikuCitZb3UgaGF2ZSBydW4gb25seSB0aGUgdHdvIGZhaWxpbmcgdGVzdHMgZnJvbSB0aGUg
bGFzdCBydW4sIHdoaWxlIHRoZSA0OCBwYXNzaW5nCit0ZXN0cyBoYXZlIG5vdCBiZWVuIHJ1biAo
ImRlc2VsZWN0ZWQiKS4KIAogTm93LCBpZiB5b3UgcnVuIHdpdGggdGhlIGBgLS1mZmBgIG9wdGlv
biwgYWxsIHRlc3RzIHdpbGwgYmUgcnVuIGJ1dCB0aGUgZmlyc3QKIHByZXZpb3VzIGZhaWx1cmVz
IHdpbGwgYmUgZXhlY3V0ZWQgZmlyc3QgKGFzIGNhbiBiZSBzZWVuIGZyb20gdGhlIHNlcmllcwot
b2YgYGBGRmBgIGFuZCBkb3RzKTo6CitvZiBgYEZGYGAgYW5kIGRvdHMpOgorCisuLiBjb2RlLWJs
b2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtLWZmCiAgICAgPT09PT09PT09PT09PT09PT09
PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0x
LngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmls
ZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHkt
MS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0
X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCA1MCBp
dGVtcwogICAgIHJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDIgZmFpbHVyZXMgZmly
c3QKIApAQCAtMTMyLDEwICsxNDksMTAgQEAgb2YgYGBGRmBgIGFuZCBkb3RzKTo6CiAgICAgICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaSIsIHJhbmdlKDUwKSkKICAgICAgICAgZGVmIHRl
c3RfbnVtKGkpOgogICAgICAgICAgICAgaWYgaSBpbiAoMTcsIDI1KToKLSAgICA+ICAgICAgICAg
IHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCi0gICAgRSAgICAgICAgICBGYWlsZWQ6IGJhZCBsdWNr
CisgICAgPiAgICAgICAgICAgcHl0ZXN0LmZhaWwoImJhZCBsdWNrIikKKyAgICBFICAgICAgICAg
ICBGYWlsZWQ6IGJhZCBsdWNrCiAKLSAgICB0ZXN0XzUwLnB5OjY6IEZhaWxlZAorICAgIHRlc3Rf
NTAucHk6NzogRmFpbGVkCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0
X251bVsyNV0gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgaSA9IDI1CkBA
IC0xNDMsMTEgKzE2MCwxNCBAQCBvZiBgYEZGYGAgYW5kIGRvdHMpOjoKICAgICAgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJpIiwgcmFuZ2UoNTApKQogICAgICAgICBkZWYgdGVzdF9udW0o
aSk6CiAgICAgICAgICAgICBpZiBpIGluICgxNywgMjUpOgotICAgID4gICAgICAgICAgcHl0ZXN0
LmZhaWwoImJhZCBsdWNrIikKLSAgICBFICAgICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKKyAgICA+
ICAgICAgICAgICBweXRlc3QuZmFpbCgiYmFkIGx1Y2siKQorICAgIEUgICAgICAgICAgIEZhaWxl
ZDogYmFkIGx1Y2sKIAotICAgIHRlc3RfNTAucHk6NjogRmFpbGVkCi0gICAgPT09PT09PT09PT09
PT09PT09PSAyIGZhaWxlZCwgNDggcGFzc2VkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09
PT09PT09PQorICAgIHRlc3RfNTAucHk6NzogRmFpbGVkCisgICAgPT09PT09PT09PT09PT09PT09
PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09
PQorICAgIEZBSUxFRCB0ZXN0XzUwLnB5Ojp0ZXN0X251bVsxN10gLSBGYWlsZWQ6IGJhZCBsdWNr
CisgICAgRkFJTEVEIHRlc3RfNTAucHk6OnRlc3RfbnVtWzI1XSAtIEZhaWxlZDogYmFkIGx1Y2sK
KyAgICA9PT09PT09PT09PT09PT09PT09PT09PSAyIGZhaWxlZCwgNDggcGFzc2VkIGluIDAuMTJz
ID09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIF9gY29uZmlnLmNhY2hlYDoKIApAQCAtMTYw
LDEwICsxODAsMTIgQEAgQmVoYXZpb3Igd2hlbiBubyB0ZXN0cyBmYWlsZWQgaW4gdGhlIGxhc3Qg
cnVuCiAKIFdoZW4gbm8gdGVzdHMgZmFpbGVkIGluIHRoZSBsYXN0IHJ1biwgb3Igd2hlbiBubyBj
YWNoZWQgYGBsYXN0ZmFpbGVkYGAgZGF0YSB3YXMKIGZvdW5kLCBgYHB5dGVzdGBgIGNhbiBiZSBj
b25maWd1cmVkIGVpdGhlciB0byBydW4gYWxsIG9mIHRoZSB0ZXN0cyBvciBubyB0ZXN0cywKLXVz
aW5nIHRoZSBgYC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXNgYCBvcHRpb24sIHdoaWNoIHRha2Vz
IG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczo6Cit1c2luZyB0aGUgYGAtLWxhc3QtZmFpbGVk
LW5vLWZhaWx1cmVzYGAgb3B0aW9uLCB3aGljaCB0YWtlcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB2
YWx1ZXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKLSAgICBweXRlc3QgLS1sYXN0LWZhaWxl
ZC1uby1mYWlsdXJlcyBhbGwgICAgIyBydW4gYWxsIHRlc3RzIChkZWZhdWx0IGJlaGF2aW9yKQot
ICAgIHB5dGVzdCAtLWxhc3QtZmFpbGVkLW5vLWZhaWx1cmVzIG5vbmUgICAjIHJ1biBubyB0ZXN0
cyBhbmQgZXhpdAorICAgIHB5dGVzdCAtLWxhc3QtZmFpbGVkIC0tbGFzdC1mYWlsZWQtbm8tZmFp
bHVyZXMgYWxsICAgICMgcnVuIGFsbCB0ZXN0cyAoZGVmYXVsdCBiZWhhdmlvcikKKyAgICBweXRl
c3QgLS1sYXN0LWZhaWxlZCAtLWxhc3QtZmFpbGVkLW5vLWZhaWx1cmVzIG5vbmUgICAjIHJ1biBu
byB0ZXN0cyBhbmQgZXhpdAogCiBUaGUgbmV3IGNvbmZpZy5jYWNoZSBvYmplY3QKIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzIsMjcgKzE5NCwzNiBAQCBUaGUgbmV3IGNv
bmZpZy5jYWNoZSBvYmplY3QKIAogUGx1Z2lucyBvciBjb25mdGVzdC5weSBzdXBwb3J0IGNvZGUg
Y2FuIGdldCBhIGNhY2hlZCB2YWx1ZSB1c2luZyB0aGUKIHB5dGVzdCBgYGNvbmZpZ2BgIG9iamVj
dC4gIEhlcmUgaXMgYSBiYXNpYyBleGFtcGxlIHBsdWdpbiB3aGljaAotaW1wbGVtZW50cyBhIDpy
ZWY6YGZpeHR1cmVgIHdoaWNoIHJlLXVzZXMgcHJldmlvdXNseSBjcmVhdGVkIHN0YXRlCi1hY3Jv
c3MgcHl0ZXN0IGludm9jYXRpb25zOjoKK2ltcGxlbWVudHMgYSA6cmVmOmBmaXh0dXJlIDxmaXh0
dXJlPmAgd2hpY2ggcmUtdXNlcyBwcmV2aW91c2x5IGNyZWF0ZWQgc3RhdGUKK2Fjcm9zcyBweXRl
c3QgaW52b2NhdGlvbnM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVu
dCBvZiB0ZXN0X2NhY2hpbmcucHkKICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgaW1wb3J0IHRpbWUK
IAorCisgICAgZGVmIGV4cGVuc2l2ZV9jb21wdXRhdGlvbigpOgorICAgICAgICBwcmludCgicnVu
bmluZyBleHBlbnNpdmUgY29tcHV0YXRpb24uLi4iKQorCisKICAgICBAcHl0ZXN0LmZpeHR1cmUK
ICAgICBkZWYgbXlkYXRhKHJlcXVlc3QpOgogICAgICAgICB2YWwgPSByZXF1ZXN0LmNvbmZpZy5j
YWNoZS5nZXQoImV4YW1wbGUvdmFsdWUiLCBOb25lKQogICAgICAgICBpZiB2YWwgaXMgTm9uZToK
LSAgICAgICAgICAgIHRpbWUuc2xlZXAoOSowLjYpICMgZXhwZW5zaXZlIGNvbXB1dGF0aW9uIDop
CisgICAgICAgICAgICBleHBlbnNpdmVfY29tcHV0YXRpb24oKQogICAgICAgICAgICAgdmFsID0g
NDIKICAgICAgICAgICAgIHJlcXVlc3QuY29uZmlnLmNhY2hlLnNldCgiZXhhbXBsZS92YWx1ZSIs
IHZhbCkKICAgICAgICAgcmV0dXJuIHZhbAogCisKICAgICBkZWYgdGVzdF9mdW5jdGlvbihteWRh
dGEpOgogICAgICAgICBhc3NlcnQgbXlkYXRhID09IDIzCiAKLUlmIHlvdSBydW4gdGhpcyBjb21t
YW5kIG9uY2UsIGl0IHdpbGwgdGFrZSBhIHdoaWxlIGJlY2F1c2UKLW9mIHRoZSBzbGVlcDo6CitJ
ZiB5b3UgcnVuIHRoaXMgY29tbWFuZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHlvdSBjYW4gc2VlIHRo
ZSBwcmludCBzdGF0ZW1lbnQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0
ZXN0IC1xCiAgICAgRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC0yMDUsMTEgKzIzNiwxNyBAQCBvZiB0
aGUgc2xlZXA6OgogICAgID4gICAgICAgYXNzZXJ0IG15ZGF0YSA9PSAyMwogICAgIEUgICAgICAg
YXNzZXJ0IDQyID09IDIzCiAKLSAgICB0ZXN0X2NhY2hpbmcucHk6MTQ6IEFzc2VydGlvbkVycm9y
Ci0gICAgMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgdGVzdF9jYWNoaW5nLnB5OjIwOiBB
c3NlcnRpb25FcnJvcgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0
ZG91dCBzZXR1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBydW5uaW5nIGV4cGVu
c2l2ZSBjb21wdXRhdGlvbi4uLgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQg
dGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQg
dGVzdF9jYWNoaW5nLnB5Ojp0ZXN0X2Z1bmN0aW9uIC0gYXNzZXJ0IDQyID09IDIzCisgICAgMSBm
YWlsZWQgaW4gMC4xMnMKIAotSWYgeW91IHJ1biBpdCBhIHNlY29uZCB0aW1lIHRoZSB2YWx1ZSB3
aWxsIGJlIHJldHJpZXZlZCBmcm9tCi10aGUgY2FjaGUgYW5kIHRoaXMgd2lsbCBiZSBxdWljazo6
CitJZiB5b3UgcnVuIGl0IGEgc2Vjb25kIHRpbWUsIHRoZSB2YWx1ZSB3aWxsIGJlIHJldHJpZXZl
ZCBmcm9tCit0aGUgY2FjaGUgYW5kIG5vdGhpbmcgd2lsbCBiZSBwcmludGVkOgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcQogICAgIEYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAl
XQpAQCAtMjIyLDQxICsyNTksMTMxIEBAIHRoZSBjYWNoZSBhbmQgdGhpcyB3aWxsIGJlIHF1aWNr
OjoKICAgICA+ICAgICAgIGFzc2VydCBteWRhdGEgPT0gMjMKICAgICBFICAgICAgIGFzc2VydCA0
MiA9PSAyMwogCi0gICAgdGVzdF9jYWNoaW5nLnB5OjE0OiBBc3NlcnRpb25FcnJvcgotICAgIDEg
ZmFpbGVkIGluIDAuMTIgc2Vjb25kcworICAgIHRlc3RfY2FjaGluZy5weToyMDogQXNzZXJ0aW9u
RXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBp
bmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfY2FjaGluZy5w
eTo6dGVzdF9mdW5jdGlvbiAtIGFzc2VydCA0MiA9PSAyMworICAgIDEgZmFpbGVkIGluIDAuMTJz
CiAKLVNlZSB0aGUgOnJlZjpgY2FjaGUtYXBpYCBmb3IgbW9yZSBkZXRhaWxzLgorU2VlIHRoZSA6
Zml4dHVyZTpgY29uZmlnLmNhY2hlIGZpeHR1cmUgPGNhY2hlPmAgZm9yIG1vcmUgZGV0YWlscy4K
IAogCiBJbnNwZWN0aW5nIENhY2hlIGNvbnRlbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3UgY2FuIGFsd2F5cyBwZWVrIGF0
IHRoZSBjb250ZW50IG9mIHRoZSBjYWNoZSB1c2luZyB0aGUKLWBgLS1jYWNoZS1zaG93YGAgY29t
bWFuZCBsaW5lIG9wdGlvbjo6CitgYC0tY2FjaGUtc2hvd2BgIGNvbW1hbmQgbGluZSBvcHRpb246
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC0tY2FjaGUtc2hvdwog
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54
LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRS
RUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gICAgY2FjaGVkaXI6ICRSRUdFTkRPQ19UTVBESVIv
LnB5dGVzdF9jYWNoZQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2FjaGUg
dmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBwbGF0Zm9ybSBsaW51
eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQor
ICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjog
JFJFR0VORE9DX1RNUERJUgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2Nh
Y2hlCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNhY2hlIHZhbHVlcyBmb3IgJyon
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIGNhY2hlL2xhc3RmYWlsZWQgY29udGFp
bnM6Ci0gICAgICB7J3Rlc3RfY2FjaGluZy5weTo6dGVzdF9mdW5jdGlvbic6IFRydWV9CisgICAg
ICB7J3Rlc3RfNTAucHk6OnRlc3RfbnVtWzE3XSc6IFRydWUsCisgICAgICAgJ3Rlc3RfNTAucHk6
OnRlc3RfbnVtWzI1XSc6IFRydWUsCisgICAgICAgJ3Rlc3RfYXNzZXJ0MS5weTo6dGVzdF9mdW5j
dGlvbic6IFRydWUsCisgICAgICAgJ3Rlc3RfYXNzZXJ0Mi5weTo6dGVzdF9zZXRfY29tcGFyaXNv
bic6IFRydWUsCisgICAgICAgJ3Rlc3RfY2FjaGluZy5weTo6dGVzdF9mdW5jdGlvbic6IFRydWUs
CisgICAgICAgJ3Rlc3RfZm9vY29tcGFyZS5weTo6dGVzdF9jb21wYXJlJzogVHJ1ZX0KICAgICBj
YWNoZS9ub2RlaWRzIGNvbnRhaW5zOgotICAgICAgWyd0ZXN0X2NhY2hpbmcucHk6OnRlc3RfZnVu
Y3Rpb24nXQorICAgICAgWyd0ZXN0XzUwLnB5Ojp0ZXN0X251bVswXScsCisgICAgICAgJ3Rlc3Rf
NTAucHk6OnRlc3RfbnVtWzEwXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzExXScs
CisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzEyXScsCisgICAgICAgJ3Rlc3RfNTAucHk6
OnRlc3RfbnVtWzEzXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzE0XScsCisgICAg
ICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzE1XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3Rf
bnVtWzE2XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzE3XScsCisgICAgICAgJ3Rl
c3RfNTAucHk6OnRlc3RfbnVtWzE4XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzE5
XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzFdJywKKyAgICAgICAndGVzdF81MC5w
eTo6dGVzdF9udW1bMjBdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMjFdJywKKyAg
ICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMjJdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVz
dF9udW1bMjNdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMjRdJywKKyAgICAgICAn
dGVzdF81MC5weTo6dGVzdF9udW1bMjVdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1b
MjZdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMjddJywKKyAgICAgICAndGVzdF81
MC5weTo6dGVzdF9udW1bMjhdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMjldJywK
KyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMl0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0
ZXN0X251bVszMF0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszMV0nLAorICAgICAg
ICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszMl0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251
bVszM10nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszNF0nLAorICAgICAgICd0ZXN0
XzUwLnB5Ojp0ZXN0X251bVszNV0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszNl0n
LAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszN10nLAorICAgICAgICd0ZXN0XzUwLnB5
Ojp0ZXN0X251bVszOF0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszOV0nLAorICAg
ICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVszXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3Rf
bnVtWzQwXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzQxXScsCisgICAgICAgJ3Rl
c3RfNTAucHk6OnRlc3RfbnVtWzQyXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzQz
XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzQ0XScsCisgICAgICAgJ3Rlc3RfNTAu
cHk6OnRlc3RfbnVtWzQ1XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzQ2XScsCisg
ICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzQ3XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRl
c3RfbnVtWzQ4XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzQ5XScsCisgICAgICAg
J3Rlc3RfNTAucHk6OnRlc3RfbnVtWzRdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1b
NV0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVs2XScsCisgICAgICAgJ3Rlc3RfNTAu
cHk6OnRlc3RfbnVtWzddJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bOF0nLAorICAg
ICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVs5XScsCisgICAgICAgJ3Rlc3RfYXNzZXJ0MS5weTo6
dGVzdF9mdW5jdGlvbicsCisgICAgICAgJ3Rlc3RfYXNzZXJ0Mi5weTo6dGVzdF9zZXRfY29tcGFy
aXNvbicsCisgICAgICAgJ3Rlc3RfY2FjaGluZy5weTo6dGVzdF9mdW5jdGlvbicsCisgICAgICAg
J3Rlc3RfZm9vY29tcGFyZS5weTo6dGVzdF9jb21wYXJlJ10KKyAgICBjYWNoZS9zdGVwd2lzZSBj
b250YWluczoKKyAgICAgIFtdCiAgICAgZXhhbXBsZS92YWx1ZSBjb250YWluczoKICAgICAgIDQy
CiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNv
bmRzID09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitg
YC0tY2FjaGUtc2hvd2BgIHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIHNwZWNpZnkgYSBn
bG9iIHBhdHRlcm4gZm9yCitmaWx0ZXJpbmc6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKKwor
ICAgICQgcHl0ZXN0IC0tY2FjaGUtc2hvdyBleGFtcGxlLyoKKyAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVz
dF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBjYWNoZWRpcjogJFBZ
VEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNh
Y2hlIHZhbHVlcyBmb3IgJ2V4YW1wbGUvKicgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBl
eGFtcGxlL3ZhbHVlIGNvbnRhaW5zOgorICAgICAgNDIKKworICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT0KIAogQ2xlYXJpbmcgQ2FjaGUgY29udGVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3UgY2FuIGluc3RydWN0IHB5dGVzdCB0
byBjbGVhciBhbGwgY2FjaGUgZmlsZXMgYW5kIHZhbHVlcwotYnkgYWRkaW5nIHRoZSBgYC0tY2Fj
aGUtY2xlYXJgYCBvcHRpb24gbGlrZSB0aGlzOjoKK2J5IGFkZGluZyB0aGUgYGAtLWNhY2hlLWNs
ZWFyYGAgb3B0aW9uIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5
dGVzdCAtLWNhY2hlLWNsZWFyCiAKIFRoaXMgaXMgcmVjb21tZW5kZWQgZm9yIGludm9jYXRpb25z
IGZyb20gQ29udGludW91cyBJbnRlZ3JhdGlvbgogc2VydmVycyB3aGVyZSBpc29sYXRpb24gYW5k
IGNvcnJlY3RuZXNzIGlzIG1vcmUgaW1wb3J0YW50CiB0aGFuIHNwZWVkLgorCisKK1N0ZXB3aXNl
CistLS0tLS0tLQorCitBcyBhbiBhbHRlcm5hdGl2ZSB0byBgYC0tbGYgLXhgYCwgZXNwZWNpYWxs
eSBmb3IgY2FzZXMgd2hlcmUgeW91IGV4cGVjdCBhIGxhcmdlIHBhcnQgb2YgdGhlIHRlc3Qgc3Vp
dGUgd2lsbCBmYWlsLCBgYC0tc3dgYCwgYGAtLXN0ZXB3aXNlYGAgYWxsb3dzIHlvdSB0byBmaXgg
dGhlbSBvbmUgYXQgYSB0aW1lLiBUaGUgdGVzdCBzdWl0ZSB3aWxsIHJ1biB1bnRpbCB0aGUgZmly
c3QgZmFpbHVyZSBhbmQgdGhlbiBzdG9wLiBBdCB0aGUgbmV4dCBpbnZvY2F0aW9uLCB0ZXN0cyB3
aWxsIGNvbnRpbnVlIGZyb20gdGhlIGxhc3QgZmFpbGluZyB0ZXN0IGFuZCB0aGVuIHJ1biB1bnRp
bCB0aGUgbmV4dCBmYWlsaW5nIHRlc3QuIFlvdSBtYXkgdXNlIHRoZSBgYC0tc3RlcHdpc2Utc2tp
cGBgIG9wdGlvbiB0byBpZ25vcmUgb25lIGZhaWxpbmcgdGVzdCBhbmQgc3RvcCB0aGUgdGVzdCBl
eGVjdXRpb24gb24gdGhlIHNlY29uZCBmYWlsaW5nIHRlc3QgaW5zdGVhZC4gVGhpcyBpcyB1c2Vm
dWwgaWYgeW91IGdldCBzdHVjayBvbiBhIGZhaWxpbmcgdGVzdCBhbmQganVzdCB3YW50IHRvIGln
bm9yZSBpdCB1bnRpbCBsYXRlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYXB0
dXJlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYXB0dXJlLnJzdAppbmRleCBhYjg2ZmI1NWYz
ZDguLmNhYWViZGY4MWE4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NhcHR1cmUu
cnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYXB0dXJlLnJzdApAQCAtMjEsMjUgKzIxLDM2
IEBAIGZpbGUgZGVzY3JpcHRvcnMuICBUaGlzIGFsbG93cyB0byBjYXB0dXJlIG91dHB1dCBmcm9t
IHNpbXBsZQogcHJpbnQgc3RhdGVtZW50cyBhcyB3ZWxsIGFzIG91dHB1dCBmcm9tIGEgc3VicHJv
Y2VzcyBzdGFydGVkIGJ5CiBhIHRlc3QuCiAKKy4uIF9jYXB0dXJlLW1ldGhvZDoKKwogU2V0dGlu
ZyBjYXB0dXJpbmcgbWV0aG9kcyBvciBkaXNhYmxpbmcgY2FwdHVyaW5nCiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoZXJlIGFyZSB0d28gd2F5
cyBpbiB3aGljaCBgYHB5dGVzdGBgIGNhbiBwZXJmb3JtIGNhcHR1cmluZzoKK1RoZXJlIGFyZSB0
aHJlZSB3YXlzIGluIHdoaWNoIGBgcHl0ZXN0YGAgY2FuIHBlcmZvcm0gY2FwdHVyaW5nOgogCi0q
IGZpbGUgZGVzY3JpcHRvciAoRkQpIGxldmVsIGNhcHR1cmluZyAoZGVmYXVsdCk6IEFsbCB3cml0
ZXMgZ29pbmcgdG8gdGhlCisqIGBgZmRgYCAoZmlsZSBkZXNjcmlwdG9yKSBsZXZlbCBjYXB0dXJp
bmcgKGRlZmF1bHQpOiBBbGwgd3JpdGVzIGdvaW5nIHRvIHRoZQogICBvcGVyYXRpbmcgc3lzdGVt
IGZpbGUgZGVzY3JpcHRvcnMgMSBhbmQgMiB3aWxsIGJlIGNhcHR1cmVkLgogCiAqIGBgc3lzYGAg
bGV2ZWwgY2FwdHVyaW5nOiBPbmx5IHdyaXRlcyB0byBQeXRob24gZmlsZXMgYGBzeXMuc3Rkb3V0
YGAKICAgYW5kIGBgc3lzLnN0ZGVycmBgIHdpbGwgYmUgY2FwdHVyZWQuICBObyBjYXB0dXJpbmcg
b2Ygd3JpdGVzIHRvCiAgIGZpbGVkZXNjcmlwdG9ycyBpcyBwZXJmb3JtZWQuCiAKKyogYGB0ZWUt
c3lzYGAgY2FwdHVyaW5nOiBQeXRob24gd3JpdGVzIHRvIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5
cy5zdGRlcnJgYAorICB3aWxsIGJlIGNhcHR1cmVkLCBob3dldmVyIHRoZSB3cml0ZXMgd2lsbCBh
bHNvIGJlIHBhc3NlZC10aHJvdWdoIHRvCisgIHRoZSBhY3R1YWwgYGBzeXMuc3Rkb3V0YGAgYW5k
IGBgc3lzLnN0ZGVycmBgLiBUaGlzIGFsbG93cyBvdXRwdXQgdG8gYmUKKyAgJ2xpdmUgcHJpbnRl
ZCcgYW5kIGNhcHR1cmVkIGZvciBwbHVnaW4gdXNlLCBzdWNoIGFzIGp1bml0eG1sIChuZXcgaW4g
cHl0ZXN0IDUuNCkuCisKIC4uIF9gZGlzYWJsZSBjYXB0dXJpbmdgOgogCi1Zb3UgY2FuIGluZmx1
ZW5jZSBvdXRwdXQgY2FwdHVyaW5nIG1lY2hhbmlzbXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lOjoK
K1lvdSBjYW4gaW5mbHVlbmNlIG91dHB1dCBjYXB0dXJpbmcgbWVjaGFuaXNtcyBmcm9tIHRoZSBj
b21tYW5kIGxpbmU6CiAKLSAgICBweXRlc3QgLXMgICAgICAgICAgICAjIGRpc2FibGUgYWxsIGNh
cHR1cmluZwotICAgIHB5dGVzdCAtLWNhcHR1cmU9c3lzICMgcmVwbGFjZSBzeXMuc3Rkb3V0L3N0
ZGVyciB3aXRoIGluLW1lbSBmaWxlcwotICAgIHB5dGVzdCAtLWNhcHR1cmU9ZmQgICMgYWxzbyBw
b2ludCBmaWxlZGVzY3JpcHRvcnMgMSBhbmQgMiB0byB0ZW1wIGZpbGUKKy4uIGNvZGUtYmxvY2s6
OiBiYXNoCisKKyAgICBweXRlc3QgLXMgICAgICAgICAgICAgICAgICAjIGRpc2FibGUgYWxsIGNh
cHR1cmluZworICAgIHB5dGVzdCAtLWNhcHR1cmU9c3lzICAgICAgICMgcmVwbGFjZSBzeXMuc3Rk
b3V0L3N0ZGVyciB3aXRoIGluLW1lbSBmaWxlcworICAgIHB5dGVzdCAtLWNhcHR1cmU9ZmQgICAg
ICAgICMgYWxzbyBwb2ludCBmaWxlZGVzY3JpcHRvcnMgMSBhbmQgMiB0byB0ZW1wIGZpbGUKKyAg
ICBweXRlc3QgLS1jYXB0dXJlPXRlZS1zeXMgICAjIGNvbWJpbmVzICdzeXMnIGFuZCAnLXMnLCBj
YXB0dXJpbmcgc3lzLnN0ZG91dC9zdGRlcnIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIGFuZCBwYXNzaW5nIGl0IGFsb25nIHRvIHRoZSBhY3R1YWwgc3lzLnN0ZG91dC9zdGRlcnIK
IAogLi4gX3ByaW50ZGVidWdnaW5nOgogCkBAIC00NywyNiArNTgsMzQgQEAgVXNpbmcgcHJpbnQg
c3RhdGVtZW50cyBmb3IgZGVidWdnaW5nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogT25lIHByaW1hcnkgYmVuZWZpdCBvZiB0aGUgZGVmYXVs
dCBjYXB0dXJpbmcgb2Ygc3Rkb3V0L3N0ZGVyciBvdXRwdXQKLWlzIHRoYXQgeW91IGNhbiB1c2Ug
cHJpbnQgc3RhdGVtZW50cyBmb3IgZGVidWdnaW5nOjoKK2lzIHRoYXQgeW91IGNhbiB1c2UgcHJp
bnQgc3RhdGVtZW50cyBmb3IgZGVidWdnaW5nOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAK
ICAgICAjIGNvbnRlbnQgb2YgdGVzdF9tb2R1bGUucHkKIAorCiAgICAgZGVmIHNldHVwX2Z1bmN0
aW9uKGZ1bmN0aW9uKToKLSAgICAgICAgcHJpbnQgKCJzZXR0aW5nIHVwICVzIiAlIGZ1bmN0aW9u
KQorICAgICAgICBwcmludCgic2V0dGluZyB1cCIsIGZ1bmN0aW9uKQorCiAKICAgICBkZWYgdGVz
dF9mdW5jMSgpOgogICAgICAgICBhc3NlcnQgVHJ1ZQogCisKICAgICBkZWYgdGVzdF9mdW5jMigp
OgogICAgICAgICBhc3NlcnQgRmFsc2UKIAogYW5kIHJ1bm5pbmcgdGhpcyBtb2R1bGUgd2lsbCBz
aG93IHlvdSBwcmVjaXNlbHkgdGhlIG91dHB1dAotb2YgdGhlIGZhaWxpbmcgZnVuY3Rpb24gYW5k
IGhpZGUgdGhlIG90aGVyIG9uZTo6CitvZiB0aGUgZmFpbGluZyBmdW5jdGlvbiBhbmQgaGlkZSB0
aGUgb3RoZXIgb25lOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdAog
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54
LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRS
RUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMu
eC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjog
JFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBE
SVIKICAgICBjb2xsZWN0ZWQgMiBpdGVtcwogCiAgICAgdGVzdF9tb2R1bGUucHkgLkYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC03
OCwxMCArOTcsMTIgQEAgb2YgdGhlIGZhaWxpbmcgZnVuY3Rpb24gYW5kIGhpZGUgdGhlIG90aGVy
IG9uZTo6CiAgICAgPiAgICAgICBhc3NlcnQgRmFsc2UKICAgICBFICAgICAgIGFzc2VydCBGYWxz
ZQogCi0gICAgdGVzdF9tb2R1bGUucHk6OTogQXNzZXJ0aW9uRXJyb3IKKyAgICB0ZXN0X21vZHVs
ZS5weToxMjogQXNzZXJ0aW9uRXJyb3IKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBD
YXB0dXJlZCBzdGRvdXQgc2V0dXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc2V0
dGluZyB1cCA8ZnVuY3Rpb24gdGVzdF9mdW5jMiBhdCAweGRlYWRiZWVmPgotICAgID09PT09PT09
PT09PT09PT09PT09IDEgZmFpbGVkLCAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09
PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3Vt
bWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfbW9k
dWxlLnB5Ojp0ZXN0X2Z1bmMyIC0gYXNzZXJ0IEZhbHNlCisgICAgPT09PT09PT09PT09PT09PT09
PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09
PQogCiBBY2Nlc3NpbmcgY2FwdHVyZWQgb3V0cHV0IGZyb20gYSB0ZXN0IGZ1bmN0aW9uCiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExNiwx
OSArMTM3LDE4IEBAIHNhbWUgaW50ZXJmYWNlIGJ1dCBhbGxvd3MgdG8gYWxzbyBjYXB0dXJlIG91
dHB1dCBmcm9tCiBsaWJyYXJpZXMgb3Igc3VicHJvY2Vzc2VzIHRoYXQgZGlyZWN0bHkgd3JpdGUg
dG8gb3BlcmF0aW5nCiBzeXN0ZW0gbGV2ZWwgb3V0cHV0IHN0cmVhbXMgKEZEMSBhbmQgRkQyKS4K
IAotLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogVGhlIHJldHVybiB2YWx1ZSBmcm9tIGBgcmVh
ZG91dGVycmBgIGNoYW5nZWQgdG8gYSBgYG5hbWVkdHVwbGVgYCB3aXRoIHR3byBhdHRyaWJ1dGVz
LCBgYG91dGBgIGFuZCBgYGVycmBgLgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiBJZiB0
aGUgY29kZSB1bmRlciB0ZXN0IHdyaXRlcyBub24tdGV4dHVhbCBkYXRhLCB5b3UgY2FuIGNhcHR1
cmUgdGhpcyB1c2luZwogdGhlIGBgY2Fwc3lzYmluYXJ5YGAgZml4dHVyZSB3aGljaCBpbnN0ZWFk
IHJldHVybnMgYGBieXRlc2BgIGZyb20KLXRoZSBgYHJlYWRvdXRlcnJgYCBtZXRob2QuICBUaGUg
YGBjYXBmc3lzYmluYXJ5YGAgZml4dHVyZSBpcyBjdXJyZW50bHkgb25seQotYXZhaWxhYmxlIGlu
IHB5dGhvbiAzLgordGhlIGBgcmVhZG91dGVycmBgIG1ldGhvZC4KKwogCiAKLS4uIHZlcnNpb25h
ZGRlZDo6IDMuMwogCiBJZiB0aGUgY29kZSB1bmRlciB0ZXN0IHdyaXRlcyBub24tdGV4dHVhbCBk
YXRhLCB5b3UgY2FuIGNhcHR1cmUgdGhpcyB1c2luZwogdGhlIGBgY2FwZmRiaW5hcnlgYCBmaXh0
dXJlIHdoaWNoIGluc3RlYWQgcmV0dXJucyBgYGJ5dGVzYGAgZnJvbQpAQCAtMTM2LDcgKzE1Niw3
IEBAIHRoZSBgYHJlYWRvdXRlcnJgYCBtZXRob2QuICBUaGUgYGBjYXBmZGJpbmFyeWBgIGZpeHR1
cmUgb3BlcmF0ZXMgb24gdGhlCiBmaWxlZGVzY3JpcHRvciBsZXZlbC4KIAogCi0uLiB2ZXJzaW9u
YWRkZWQ6OiAzLjAKKwogCiBUbyB0ZW1wb3JhcmlseSBkaXNhYmxlIGNhcHR1cmUgd2l0aGluIGEg
dGVzdCwgYm90aCBgYGNhcHN5c2BgCiBhbmQgYGBjYXBmZGBgIGhhdmUgYSBgYGRpc2FibGVkKClg
YCBtZXRob2QgdGhhdCBjYW4gYmUgdXNlZApAQCAtMTQ5LDUgKzE2OSwzIEBAIGFzIGEgY29udGV4
dCBtYW5hZ2VyLCBkaXNhYmxpbmcgY2FwdHVyZSBpbnNpZGUgdGhlIGBgd2l0aGBgIGJsb2NrOgog
ICAgICAgICB3aXRoIGNhcHN5cy5kaXNhYmxlZCgpOgogICAgICAgICAgICAgcHJpbnQoIm91dHB1
dCBub3QgY2FwdHVyZWQsIGdvaW5nIGRpcmVjdGx5IHRvIHN5cy5zdGRvdXQiKQogICAgICAgICBw
cmludCgidGhpcyBvdXRwdXQgaXMgYWxzbyBjYXB0dXJlZCIpCi0KLS4uIGluY2x1ZGU6OiBsaW5r
cy5pbmMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jaGFuZ2Vsb2cucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2NoYW5nZWxvZy5yc3QKaW5kZXggYTU5YjNjN2UyNTBlLi4yYTI2YjVj
M2ZiOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jaGFuZ2Vsb2cucnN0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9jaGFuZ2Vsb2cucnN0CkBAIC0xLDcgKzEsODY2OCBAQAorLi4g
X2BjaGFuZ2Vsb2dgOgogCi0uLiBfY2hhbmdlbG9nOgorPT09PT09PT09CitDaGFuZ2Vsb2cKKz09
PT09PT09PQogCi1DaGFuZ2Vsb2cgaGlzdG9yeQotPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CitWZXJzaW9ucyBmb2xsb3cgYFNlbWFudGljIFZlcnNpb25pbmcgPGh0dHBzOi8vc2Vt
dmVyLm9yZy8+YF8gKGBgPG1ham9yPi48bWlub3I+LjxwYXRjaD5gYCkuCiAKLS4uIGluY2x1ZGU6
OiAuLi8uLi9DSEFOR0VMT0cucnN0CitCYWNrd2FyZCBpbmNvbXBhdGlibGUgKGJyZWFraW5nKSBj
aGFuZ2VzIHdpbGwgb25seSBiZSBpbnRyb2R1Y2VkIGluIG1ham9yIHZlcnNpb25zCit3aXRoIGFk
dmFuY2Ugbm90aWNlIGluIHRoZSAqKkRlcHJlY2F0aW9ucyoqIHNlY3Rpb24gb2YgcmVsZWFzZXMu
CisKKworLi4KKyAgICBZb3Ugc2hvdWxkICpOT1QqIGJlIGFkZGluZyBuZXcgY2hhbmdlIGxvZyBl
bnRyaWVzIHRvIHRoaXMgZmlsZSwgdGhpcworICAgIGZpbGUgaXMgbWFuYWdlZCBieSB0b3duY3Jp
ZXIuIFlvdSAqbWF5KiBlZGl0IHByZXZpb3VzIGNoYW5nZSBsb2dzIHRvCisgICAgZml4IHByb2Js
ZW1zIGxpa2UgdHlwbyBjb3JyZWN0aW9ucyBvciBzdWNoLgorICAgIFRvIGFkZCBhIG5ldyBjaGFu
Z2UgbG9nIGVudHJ5LCBwbGVhc2Ugc2VlCisgICAgaHR0cHM6Ly9waXAucHlwYS5pby9lbi9sYXRl
c3QvZGV2ZWxvcG1lbnQvY29udHJpYnV0aW5nLyNuZXdzLWVudHJpZXMKKyAgICB3ZSBuYW1lZCB0
aGUgbmV3cyBmb2xkZXIgY2hhbmdlbG9nCisKKworLi4gb25seTo6IGNoYW5nZWxvZ190b3duY3Jp
ZXJfZHJhZnQKKworICAgIC4uIFRoZSAnY2hhbmdlbG9nX3Rvd25jcmllcl9kcmFmdCcgdGFnIGlz
IGluY2x1ZGVkIGJ5IG91ciAndG94IC1lIGRvY3MnLAorICAgICAgIGJ1dCBub3Qgb24gcmVhZHRo
ZWRvY3MuCisKKyAgICAuLiBpbmNsdWRlOjogX2NoYW5nZWxvZ190b3duY3JpZXJfZHJhZnQucnN0
CisKKy4uIHRvd25jcmllciByZWxlYXNlIG5vdGVzIHN0YXJ0CisKK3B5dGVzdCA2LjEuMSAoMjAy
MC0xMC0wMykKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0t
LS0KKworLSBgIzc4MDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNzgwNz5gXzogRml4ZWQgcmVncmVzc2lvbiBpbiBweXRlc3QgNi4xLjAgY2F1c2luZyBpbmNv
cnJlY3Qgcm9vdGRpciB0byBiZSBkZXRlcm1pbmVkIGluIHNvbWUgbm9uLXRyaXZpYWwgY2FzZXMg
d2hlcmUgcGFyZW50IGRpcmVjdG9yaWVzIGhhdmUgY29uZmlnIGZpbGVzIGFzIHdlbGwuCisKKwor
LSBgIzc4MTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzgx
ND5gXzogRml4ZWQgY3Jhc2ggaW4gaGVhZGVyIHJlcG9ydGluZyB3aGVuIDpjb25mdmFsOmB0ZXN0
cGF0aHNgIGlzIHVzZWQgYW5kIGNvbnRhaW5zIGFic29sdXRlIHBhdGhzIChyZWdyZXNzaW9uIGlu
IDYuMS4wKS4KKworCitweXRlc3QgNi4xLjAgKDIwMjAtMDktMjYpCis9PT09PT09PT09PT09PT09
PT09PT09PT09CisKK0JyZWFraW5nIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzU1
ODUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTU4NT5gXzog
QXMgcGVyIG91ciBwb2xpY3ksIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgd2hpY2ggaGF2ZSBiZWVu
IGRlcHJlY2F0ZWQgaW4gdGhlIDUuWCBzZXJpZXMgYXJlIG5vdworICByZW1vdmVkOgorCisgICog
VGhlIGBgZnVuY2FyZ25hbWVzYGAgcmVhZC1vbmx5IHByb3BlcnR5IG9mIGBgRml4dHVyZVJlcXVl
c3RgYCwgYGBNZXRhZnVuY2BgLCBhbmQgYGBGdW5jdGlvbmBgIGNsYXNzZXMuIFVzZSBgYGZpeHR1
cmVuYW1lc2BgIGF0dHJpYnV0ZS4KKworICAqIGBgQHB5dGVzdC5maXh0dXJlYGAgbm8gbG9uZ2Vy
IHN1cHBvcnRzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBwYXNzIGFsbCBhcmd1bWVudHMgYnkga2V5
d29yZCBpbnN0ZWFkLgorCisgICogRGlyZWN0IGNvbnN0cnVjdGlvbiBvZiBgYE5vZGVgYCBzdWJj
bGFzc2VzIG5vdyByYWlzZSBhbiBlcnJvciwgdXNlIGBgZnJvbV9wYXJlbnRgYCBpbnN0ZWFkLgor
CisgICogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGBganVuaXRfZmFtaWx5YGAgaGFzIGNoYW5nZWQg
dG8gYGB4dW5pdDJgYC4gSWYgeW91IHJlcXVpcmUgdGhlIG9sZCBmb3JtYXQsIGFkZCBgYGp1bml0
X2ZhbWlseT14dW5pdDFgYCB0byB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworICAqIFRoZSBg
YFRlcm1pbmFsUmVwb3J0ZXJgYCBubyBsb25nZXIgaGFzIGEgYGB3cml0ZXJgYCBhdHRyaWJ1dGUu
IFBsdWdpbiBhdXRob3JzIG1heSB1c2UgdGhlIHB1YmxpYyBmdW5jdGlvbnMgb2YgdGhlIGBgVGVy
bWluYWxSZXBvcnRlcmBgIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBgYFRlcm1pbmFsV3JpdGVy
YGAgb2JqZWN0IGRpcmVjdGx5LgorCisgICogVGhlIGBgLS1yZXN1bHQtbG9nYGAgb3B0aW9uIGhh
cyBiZWVuIHJlbW92ZWQuIFVzZXJzIGFyZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBweXRlc3Qt
cmVwb3J0bG9nIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtcmVwb3J0bG9n
PmBfXyBwbHVnaW4gaW5zdGVhZC4KKworCisgIEZvciBtb3JlIGluZm9ybWF0aW9uIGNvbnN1bHQK
KyAgYERlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbD5gX18gaW4gdGhlIGRvY3MuCisKKworCitEZXByZWNh
dGlvbnMKKy0tLS0tLS0tLS0tLQorCistIGAjNjk4MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTgxPmBfOiBUaGUgYGBweXRlc3QuY29sbGVjdGBgIG1vZHVs
ZSBpcyBkZXByZWNhdGVkOiBhbGwgaXRzIG5hbWVzIGNhbiBiZSBpbXBvcnRlZCBmcm9tIGBgcHl0
ZXN0YGAgZGlyZWN0bHkuCisKKworLSBgIzcwOTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNzA5Nz5gXzogVGhlIGBgcHl0ZXN0Ll9maWxsZnVuY2FyZ3NgYCBm
dW5jdGlvbiBpcyBkZXByZWNhdGVkLiBUaGlzIGZ1bmN0aW9uIHdhcyBrZXB0CisgIGZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggYW4gb2xkZXIgcGx1Z2luLgorCisgIEl0J3MgZnVuY3Rp
b25hbGl0eSBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseSwgYnV0IGlmIHlvdSBtdXN0
IHJlcGxhY2UKKyAgaXQsIHVzZSBgZnVuY3Rpb24uX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpYCBp
bnN0ZWFkLCB0aG91Z2ggbm90ZSB0aGlzIGlzIG5vdAorICBhIHB1YmxpYyBBUEkgYW5kIG1heSBi
cmVhayBpbiB0aGUgZnV0dXJlLgorCisKKy0gYCM3MjEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyMTA+YF86IFRoZSBzcGVjaWFsIGBgLWsgJy1leHByJ2Bg
IHN5bnRheCB0byBgYC1rYGAgaXMgZGVwcmVjYXRlZC4gVXNlIGBgLWsgJ25vdCBleHByJ2BgCisg
IGluc3RlYWQuCisKKyAgVGhlIHNwZWNpYWwgYGAtayAnZXhwcjonYGAgc3ludGF4IHRvIGBgLWtg
YCBpcyBkZXByZWNhdGVkLiBQbGVhc2Ugb3BlbiBhbiBpc3N1ZQorICBpZiB5b3UgdXNlIHRoaXMg
YW5kIHdhbnQgYSByZXBsYWNlbWVudC4KKworCistIGAjNzI1NSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjU1PmBfOiBUaGUgOmZ1bmM6YHB5dGVzdF93YXJu
aW5nX2NhcHR1cmVkIDxfcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF93YXJuaW5nX2NhcHR1cmVkPmAg
aG9vayBpcyBkZXByZWNhdGVkIGluIGZhdm9yCisgIG9mIDpmdW5jOmBweXRlc3Rfd2FybmluZ19y
ZWNvcmRlZCA8X3B5dGVzdC5ob29rc3BlYy5weXRlc3Rfd2FybmluZ19yZWNvcmRlZD5gLCBhbmQg
d2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCisKKworLSBgIzc2NDggPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzY0OD5gXzogVGhlIGBgZ2V0
aG9va3Byb3h5KClgYCBhbmQgYGBpc2luaXRwYXRoKClgYCBtZXRob2RzIG9mIGBgRlNDb2xsZWN0
b3JgYCBhbmQgYGBQYWNrYWdlYGAgYXJlIGRlcHJlY2F0ZWQ7CisgIHVzZSBgYHNlbGYuc2Vzc2lv
bi5nZXRob29rcHJveHkoKWBgIGFuZCBgYHNlbGYuc2Vzc2lvbi5pc2luaXRwYXRoKClgYCBpbnN0
ZWFkLgorICBUaGlzIHNob3VsZCB3b3JrIG9uIGFsbCBweXRlc3QgdmVyc2lvbnMuCisKKworCitG
ZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzc2NjcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNzY2Nz5gXzogTmV3IGBgLS1kdXJhdGlvbnMtbWluYGAgY29tbWFu
ZC1saW5lIGZsYWcgY29udHJvbHMgdGhlIG1pbmltYWwgZHVyYXRpb24gZm9yIGluY2x1c2lvbiBp
biB0aGUgc2xvd2VzdCBsaXN0IG9mIHRlc3RzIHNob3duIGJ5IGBgLS1kdXJhdGlvbnNgYC4gUHJl
dmlvdXNseSB0aGlzIHdhcyBoYXJkLWNvZGVkIHRvIGBgMC4wMDVzYGAuCisKKworCitJbXByb3Zl
bWVudHMKKy0tLS0tLS0tLS0tLQorCistIGAjNjY4MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy82NjgxPmBfOiBJbnRlcm5hbCBweXRlc3Qgd2FybmluZ3MgaXNz
dWVkIGR1cmluZyB0aGUgZWFybHkgc3RhZ2VzIG9mIGluaXRpYWxpemF0aW9uIGFyZSBub3cgcHJv
cGVybHkgaGFuZGxlZCBhbmQgY2FuIGZpbHRlcmVkIHRocm91Z2ggOmNvbmZ2YWw6YGZpbHRlcndh
cm5pbmdzYCBvciBgYC0tcHl0aG9ud2FybmluZ3MvLVdgYC4KKworICBUaGlzIGFsc28gZml4ZXMg
YSBudW1iZXIgb2YgbG9uZyBzdGFuZGluZyBpc3N1ZXM6IGAjMjg5MSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODkxPmBfXywgYCM3NjIwIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc2MjA+YF9fLCBgIzc0MjYgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzQyNj5gX18uCisKKworLSBg
Izc1NzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzU3Mj5g
XzogV2hlbiBhIHBsdWdpbiBsaXN0ZWQgaW4gYGByZXF1aXJlZF9wbHVnaW5zYGAgaXMgbWlzc2lu
ZyBvciBhbiB1bmtub3duIGNvbmZpZyBrZXkgaXMgdXNlZCB3aXRoIGBgLS1zdHJpY3QtY29uZmln
YGAsIGEgc2ltcGxlIGVycm9yIG1lc3NhZ2UgaXMgbm93IHNob3duIGluc3RlYWQgb2YgYSBzdGFj
a3RyYWNlLgorCisKKy0gYCM3Njg1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzc2ODU+YF86IEFkZGVkIHR3byBuZXcgYXR0cmlidXRlcyA6YXR0cjpgcm9vdHBh
dGggPF9weXRlc3QuY29uZmlnLkNvbmZpZy5yb290cGF0aD5gIGFuZCA6YXR0cjpgaW5pcGF0aCA8
X3B5dGVzdC5jb25maWcuQ29uZmlnLmluaXBhdGg+YCB0byA6Y2xhc3M6YENvbmZpZyA8X3B5dGVz
dC5jb25maWcuQ29uZmlnPmAuCisgIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIDpjbGFzczpgcGF0aGxp
Yi5QYXRoYCB2ZXJzaW9ucyBvZiB0aGUgZXhpc3RpbmcgOmF0dHI6YHJvb3RkaXIgPF9weXRlc3Qu
Y29uZmlnLkNvbmZpZy5yb290ZGlyPmAgYW5kIDphdHRyOmBpbmlmaWxlIDxfcHl0ZXN0LmNvbmZp
Zy5Db25maWcuaW5pZmlsZT5gIGF0dHJpYnV0ZXMsCisgIGFuZCBzaG91bGQgYmUgcHJlZmVycmVk
IG92ZXIgdGhlbSB3aGVuIHBvc3NpYmxlLgorCisKKy0gYCM3NzgwIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc3ODA+YF86IFB1YmxpYyBjbGFzc2VzIHdoaWNo
IGFyZSBub3QgZGVzaWduZWQgdG8gYmUgaW5oZXJpdGVkIGZyb20gYXJlIG5vdyBtYXJrZWQgYEBm
aW5hbCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3R5cGluZy5odG1sI3R5cGlu
Zy5maW5hbD5gXy4KKyAgQ29kZSB3aGljaCBpbmhlcml0cyBmcm9tIHRoZXNlIGNsYXNzZXMgd2ls
bCB0cmlnZ2VyIGEgdHlwZS1jaGVja2luZyAoZS5nLiBteXB5KSBlcnJvciwgYnV0IHdpbGwgc3Rp
bGwgd29yayBpbiBydW50aW1lLgorICBDdXJyZW50bHkgdGhlIGBgZmluYWxgYCBkZXNpZ25hdGlv
biBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIEFQSSBSZWZlcmVuY2UgYnV0IGhvcGVmdWxseSB3aWxs
IGluIHRoZSBmdXR1cmUuCisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMTk1MyA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTUzPmBfOiBGaXhl
ZCBlcnJvciB3aGVuIG92ZXJ3cml0aW5nIGEgcGFyYW1ldHJpemVkIGZpeHR1cmUsIHdoaWxlIGFs
c28gcmV1c2luZyB0aGUgc3VwZXIgZml4dHVyZSB2YWx1ZS4KKworICAuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCisKKyAgICAgICMgY29uZnRlc3QucHkKKyAgICAgIGltcG9ydCBweXRlc3QKKworCisg
ICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsxLCAyXSkKKyAgICAgIGRlZiBmb28ocmVxdWVz
dCk6CisgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KKworCisgICAgICAjIHRlc3RfZm9v
LnB5CisgICAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICBkZWYgZm9vKGZvbyk6CisgICAgICAgICAgcmV0dXJuIGZvbyAqIDIKKworCistIGAjNDk4NCA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTg0PmBfOiBGaXhl
ZCBhbiBpbnRlcm5hbCBlcnJvciBjcmFzaCB3aXRoIGBgSW5kZXhFcnJvcjogbGlzdCBpbmRleCBv
dXQgb2YgcmFuZ2VgYCB3aGVuCisgIGNvbGxlY3RpbmcgYSBtb2R1bGUgd2hpY2ggc3RhcnRzIHdp
dGggYSBkZWNvcmF0ZWQgZnVuY3Rpb24sIHRoZSBkZWNvcmF0b3IKKyAgcmFpc2VzLCBhbmQgYXNz
ZXJ0aW9uIHJld3JpdGluZyBpcyBlbmFibGVkLgorCisKKy0gYCM3NTkxIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc1OTE+YF86IHB5bGludCBzaG91bGRuJ3Qg
Y29tcGxhaW4gYW55bW9yZSBhYm91dCB1bmltcGxlbWVudGVkIGFic3RyYWN0IG1ldGhvZHMgd2hl
biBpbmhlcml0aW5nIGZyb20gOnJlZjpgRmlsZSA8bm9uLXB5dGhvbiB0ZXN0cz5gLgorCisKKy0g
YCM3NjI4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc2Mjg+
YF86IEZpeGVkIHRlc3QgY29sbGVjdGlvbiB3aGVuIGEgZnVsbCBwYXRoIHdpdGhvdXQgYSBkcml2
ZSBsZXR0ZXIgd2FzIHBhc3NlZCB0byBweXRlc3Qgb24gV2luZG93cyAoZm9yIGV4YW1wbGUgYGBc
cHJvamVjdHNcdGVzdHNcdGVzdC5weWBgIGluc3RlYWQgb2YgYGBjOlxwcm9qZWN0c1x0ZXN0c1xw
eXRlc3QucHlgYCkuCisKKworLSBgIzc2MzggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNzYzOD5gXzogRml4IGhhbmRsaW5nIG9mIGNvbW1hbmQtbGluZSBvcHRp
b25zIHRoYXQgYXBwZWFyIGFzIHBhdGhzIGJ1dCB0cmlnZ2VyIGFuIE9TLWxldmVsIHN5bnRheCBl
cnJvciBvbiBXaW5kb3dzLCBzdWNoIGFzIHRoZSBvcHRpb25zIHVzZWQgaW50ZXJuYWxseSBieSBg
YHB5dGVzdC14ZGlzdGBgLgorCisKKy0gYCM3NzQyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzc3NDI+YF86IEZpeGVkIElOVEVSTkFMRVJST1Igd2hlbiBhY2Nl
c3NpbmcgbG9jYWxzIC8gZ2xvYmFscyB3aXRoIGZhdWx0eSBgYGV4ZWNgYC4KKworCisKK0ltcHJv
dmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzE0NzcgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ3Nz5gXzogUmVtb3Zl
ZCBmYXEucnN0IGFuZCBpdHMgcmVmZXJlbmNlIGluIGNvbnRlbnRzLnJzdC4KKworCisKK1RyaXZp
YWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM3NTM2
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc1MzY+YF86IFRo
ZSBpbnRlcm5hbCBgYGp1bml0eG1sYGAgcGx1Z2luIGhhcyByZXdyaXR0ZW4gdG8gdXNlIGBgeG1s
LmV0cmVlLkVsZW1lbnRUcmVlYGAuCisgIFRoZSBvcmRlciBvZiBhdHRyaWJ1dGVzIGluIFhNTCBl
bGVtZW50cyBtaWdodCBkaWZmZXIuIFNvbWUgdW5uZWVkZWQgZXNjYXBpbmcgaXMKKyAgbm8gbG9u
Z2VyIHBlcmZvcm1lZC4KKworCistIGAjNzU4NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy83NTg3PmBfOiBUaGUgZGVwZW5kZW5jeSBvbiB0aGUgYGBtb3JlLWl0
ZXJ0b29sc2BgIHBhY2thZ2UgaGFzIGJlZW4gcmVtb3ZlZC4KKworCistIGAjNzYzMSA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NjMxPmBfOiBUaGUgcmVzdWx0
IHR5cGUgb2YgOm1ldGg6YGNhcGZkLnJlYWRvdXRlcnIoKSA8X3B5dGVzdC5jYXB0dXJlLkNhcHR1
cmVGaXh0dXJlLnJlYWRvdXRlcnI+YCAoYW5kIHNpbWlsYXIpIGlzIG5vIGxvbmdlciBhIG5hbWVk
dHVwbGUsCisgIGJ1dCBzaG91bGQgYmVoYXZlIGxpa2Ugb25lIGluIGFsbCByZXNwZWN0cy4gVGhp
cyB3YXMgZG9uZSBmb3IgdGVjaG5pY2FsIHJlYXNvbnMuCisKKworLSBgIzc2NzEgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzY3MT5gXzogV2hlbiBjb2xsZWN0
aW5nIHRlc3RzLCBweXRlc3QgZmluZHMgdGVzdCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgYnkgZXhh
bWluaW5nIHRoZQorICBhdHRyaWJ1dGVzIG9mIHB5dGhvbiBvYmplY3RzIChtb2R1bGVzLCBjbGFz
c2VzIGFuZCBpbnN0YW5jZXMpLiBUbyBzcGVlZCB1cCB0aGlzCisgIHByb2Nlc3MsIHB5dGVzdCBu
b3cgaWdub3JlcyBidWlsdGluIGF0dHJpYnV0ZXMgKGxpa2UgYGBfX2NsYXNzX19gYCwKKyAgYGBf
X2RlbGF0dHJfX2BgIGFuZCBgYF9fbmV3X19gYCkgd2l0aG91dCBjb25zdWx0aW5nIHRoZSA6Y29u
ZnZhbDpgcHl0aG9uX2NsYXNzZXNgIGFuZAorICA6Y29uZnZhbDpgcHl0aG9uX2Z1bmN0aW9uc2Ag
Y29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB3aXRob3V0IHBhc3NpbmcgdGhlbSB0byBwbHVnaW5z
CisgIHVzaW5nIHRoZSA6ZnVuYzpgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbSA8X3B5dGVzdC5o
b29rc3BlYy5weXRlc3RfcHljb2xsZWN0X21ha2VpdGVtPmAgaG9vay4KKworCitweXRlc3QgNi4w
LjIgKDIwMjAtMDktMDQpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcwor
LS0tLS0tLS0tCisKKy0gYCM3MTQ4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzcxNDg+YF86IEZpeGVkIGBgLS1sb2ctY2xpYGAgcG90ZW50aWFsbHkgY2F1c2lu
ZyB1bnJlbGF0ZWQgYGBwcmludGBgIG91dHB1dCB0byBiZSBzd2FsbG93ZWQuCisKKworLSBgIzc2
NzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzY3Mj5gXzog
Rml4ZWQgbG9nLWNhcHR1cmluZyBsZXZlbCByZXN0b3JlZCBpbmNvcnJlY3RseSBpZiBgYGNhcGxv
Zy5zZXRfbGV2ZWxgYCBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCisKKworLSBgIzc2ODYgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzY4Nj5gXzogRml4ZWQg
YE5vdFNldFR5cGUudG9rZW5gIGJlaW5nIHVzZWQgYXMgdGhlIHBhcmFtZXRlciBJRCB3aGVuIHRo
ZSBwYXJhbWV0cml6YXRpb24gbGlzdCBpcyBlbXB0eS4KKyAgUmVncmVzc2VkIGluIHB5dGVzdCA2
LjAuMC4KKworCistIGAjNzcwNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy83NzA3PmBfOiBGaXggaW50ZXJuYWwgZXJyb3Igd2hlbiBoYW5kbGluZyBzb21lIGV4
Y2VwdGlvbnMgdGhhdCBjb250YWluIG11bHRpcGxlIGxpbmVzIG9yIHRoZSBzdHlsZSB1c2VzIG11
bHRpcGxlIGxpbmVzIChgYC0tdGI9bGluZWBgIGZvciBleGFtcGxlKS4KKworCitweXRlc3QgNi4w
LjEgKDIwMjAtMDctMzApCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcwor
LS0tLS0tLS0tCisKKy0gYCM3Mzk0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzczOTQ+YF86IFBhc3NpbmcgYW4gZW1wdHkgYGBoZWxwYGAgdmFsdWUgdG8gYGBQ
YXJzZXIuYWRkX29wdGlvbmBgIGlzIG5vdyBhY2NlcHRlZCBpbnN0ZWFkIG9mIGNyYXNoaW5nIHdo
ZW4gcnVubmluZyBgYHB5dGVzdCAtLWhlbHBgYC4KKyAgUGFzc2luZyBgYE5vbmVgYCByYWlzZXMg
YSBtb3JlIGluZm9ybWF0aXZlIGBgVHlwZUVycm9yYGAuCisKKworLSBgIzc1NTggPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzU1OD5gXzogRml4IHB5bGludCBg
YG5vdC1jYWxsYWJsZWBgIGxpbnQgb24gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgpYGAgYW5k
IHRoZSBvdGhlciBidWlsdGluIG1hcmtzOgorICBgYHNraXBgYCwgYGBza2lwaWZgYCwgYGB4ZmFp
bGBgLCBgYHVzZWZpeHR1cmVzYGAsIGBgZmlsdGVyd2FybmluZ3NgYC4KKworCistIGAjNzU1OSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NTU5PmBfOiBGaXgg
cmVncmVzc2lvbiBpbiBwbHVnaW5zIHVzaW5nIGBgVGVzdFJlcG9ydC5sb25ncmVwcnRleHRgYCAo
c3VjaCBhcyBgYHB5dGVzdC1odG1sYGApIHdoZW4gYGBUZXN0UmVwb3J0LmxvbmdyZXByYGAgaXMg
bm90IGEgc3RyaW5nLgorCisKKy0gYCM3NTY5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzc1Njk+YF86IEZpeCBsb2dnaW5nIGNhcHR1cmUgaGFuZGxlcidzIGxl
dmVsIG5vdCByZXNldCBvbiB0ZWFyZG93biBhZnRlciBhIGNhbGwgdG8gYGBjYXBsb2cuc2V0X2xl
dmVsKClgYC4KKworCitweXRlc3QgNi4wLjAgKDIwMjAtMDctMjgpCis9PT09PT09PT09PT09PT09
PT09PT09PT09CisKKygqKlBsZWFzZSBzZWUgdGhlIGZ1bGwgc2V0IG9mIGNoYW5nZXMgZm9yIHRo
aXMgcmVsZWFzZSBhbHNvIGluIHRoZSA2LjAuMHJjMSBub3RlcyBiZWxvdyoqKQorCitCcmVha2lu
ZyBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM1NTg0IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1ODQ+YF86ICoqUHl0ZXN0RGVwcmVjYXRpb25X
YXJuaW5nIGFyZSBub3cgZXJyb3JzIGJ5IGRlZmF1bHQuKioKKworICBGb2xsb3dpbmcgb3VyIHBs
YW4gdG8gcmVtb3ZlIGRlcHJlY2F0ZWQgZmVhdHVyZXMgd2l0aCBhcyBsaXR0bGUgZGlzcnVwdGlv
biBhcworICBwb3NzaWJsZSwgYWxsIHdhcm5pbmdzIG9mIHR5cGUgYGBQeXRlc3REZXByZWNhdGlv
bldhcm5pbmdgYCBub3cgZ2VuZXJhdGUgZXJyb3JzCisgIGluc3RlYWQgb2Ygd2FybmluZyBtZXNz
YWdlcy4KKworICAqKlRoZSBhZmZlY3RlZCBmZWF0dXJlcyB3aWxsIGJlIGVmZmVjdGl2ZWx5IHJl
bW92ZWQgaW4gcHl0ZXN0IDYuMSoqLCBzbyBwbGVhc2UgY29uc3VsdCB0aGUKKyAgYERlcHJlY2F0
aW9ucyBhbmQgUmVtb3ZhbHMgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9kZXBy
ZWNhdGlvbnMuaHRtbD5gX18KKyAgc2VjdGlvbiBpbiB0aGUgZG9jcyBmb3IgZGlyZWN0aW9ucyBv
biBob3cgdG8gdXBkYXRlIGV4aXN0aW5nIGNvZGUuCisKKyAgSW4gdGhlIHB5dGVzdCBgYDYuMC5Y
YGAgc2VyaWVzLCBpdCBpcyBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIGVycm9ycyBiYWNrIGludG8g
d2FybmluZ3MgYXMgYQorICBzdG9wZ2FwIG1lYXN1cmUgYnkgYWRkaW5nIHRoaXMgdG8geW91ciBg
YHB5dGVzdC5pbmlgYCBmaWxlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgW3B5
dGVzdF0KKyAgICAgIGZpbHRlcndhcm5pbmdzID0KKyAgICAgICAgICBpZ25vcmU6OnB5dGVzdC5Q
eXRlc3REZXByZWNhdGlvbldhcm5pbmcKKworICBCdXQgdGhpcyB3aWxsIHN0b3Agd29ya2luZyB3
aGVuIHB5dGVzdCBgYDYuMWBgIGlzIHJlbGVhc2VkLgorCisgICoqSWYgeW91IGhhdmUgY29uY2Vy
bnMqKiBhYm91dCB0aGUgcmVtb3ZhbCBvZiBhIHNwZWNpZmljIGZlYXR1cmUsIHBsZWFzZSBhZGQg
YQorICBjb21tZW50IHRvIGAjNTU4NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81NTg0PmBfXy4KKworCistIGAjNzQ3MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NDcyPmBfOiBUaGUgYGBleGVjXygpYGAgYW5kIGBgaXNf
dHJ1ZSgpYGAgbWV0aG9kcyBvZiBgYF9weXRlc3QuX2NvZGUuRnJhbWVgYCBoYXZlIGJlZW4gcmVt
b3ZlZC4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjNzQ2NCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NDY0PmBfOiBBZGRlZCBzdXBwb3J0IGZv
ciA6ZW52dmFyOmBOT19DT0xPUmAgYW5kIDplbnZ2YXI6YEZPUkNFX0NPTE9SYCBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgdG8gY29udHJvbCBjb2xvcmVkIG91dHB1dC4KKworCisKK0ltcHJvdmVtZW50
cworLS0tLS0tLS0tLS0tCisKKy0gYCM3NDY3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzc0Njc+YF86IGBgLS1sb2ctZmlsZWBgIENMSSBvcHRpb24gYW5kIGBg
bG9nX2ZpbGVgYCBpbmkgbWFya2VyIG5vdyBjcmVhdGUgc3ViZGlyZWN0b3JpZXMgaWYgbmVlZGVk
LgorCisKKy0gYCM3NDg5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzc0ODk+YF86IFRoZSA6ZnVuYzpgcHl0ZXN0LnJhaXNlc2AgZnVuY3Rpb24gaGFzIGEgY2xl
YXJlciBlcnJvciBtZXNzYWdlIHdoZW4gYGBtYXRjaGBgIGVxdWFscyB0aGUgb2J0YWluZWQgc3Ry
aW5nIGJ1dCBpcyBub3QgYSByZWdleCBtYXRjaC4gSW4gdGhpcyBjYXNlIGl0IGlzIHN1Z2dlc3Rl
ZCB0byBlc2NhcGUgdGhlIHJlZ2V4LgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBg
IzczOTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM5Mj5g
XzogRml4IHRoZSByZXBvcnRlZCBsb2NhdGlvbiBvZiB0ZXN0cyBza2lwcGVkIHdpdGggYGBAcHl0
ZXN0Lm1hcmsuc2tpcGBgIHdoZW4gYGAtLXJ1bnhmYWlsYGAgaXMgdXNlZC4KKworCistIGAjNzQ5
MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NDkxPmBfOiA6
Zml4dHVyZTpgdG1wZGlyYCBhbmQgOmZpeHR1cmU6YHRtcF9wYXRoYCBubyBsb25nZXIgcmFpc2Ug
YW4gZXJyb3IgaWYgdGhlIGxvY2sgdG8gY2hlY2sgZm9yCisgIHN0YWxlIHRlbXBvcmFyeSBkaXJl
Y3RvcmllcyBpcyBub3QgYWNjZXNzaWJsZS4KKworCistIGAjNzUxNyA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NTE3PmBfOiBQcmVzZXJ2ZSBsaW5lIGVuZGlu
Z3Mgd2hlbiBjYXB0dXJlZCB2aWEgYGBjYXBmZGBgLgorCisKKy0gYCM3NTM0IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc1MzQ+YF86IFJlc3RvcmVkIHRoZSBw
cmV2aW91cyBmb3JtYXR0aW5nIG9mIGBgVHJhY2ViYWNrRW50cnkuX19zdHJfX2BgIHdoaWNoIHdh
cyBjaGFuZ2VkIGJ5IGFjY2lkZW50LgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNzQyMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy83NDIyPmBfOiBDbGFyaWZpZWQgd2hlbiB0aGUgYGB1c2VmaXh0
dXJlc2BgIG1hcmsgY2FuIGFwcGx5IGZpeHR1cmVzIHRvIHRlc3QuCisKKworLSBgIzc0NDEgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzQ0MT5gXzogQWRkIGEg
bm90ZSBhYm91dCBgYC1xYGAgb3B0aW9uIHVzZWQgaW4gZ2V0dGluZyBzdGFydGVkIGd1aWRlLgor
CisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLSBgIzczODkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NzM4OT5gXzogRml4dHVyZSBzY29wZSBgYHBhY2thZ2VgYCBpcyBubyBsb25nZXIgY29uc2lkZXJl
ZCBleHBlcmltZW50YWwuCisKKworcHl0ZXN0IDYuMC4wcmMxICgyMDIwLTA3LTA4KQorPT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorCitCcmVha2luZyBDaGFuZ2VzCistLS0tLS0tLS0tLS0t
LS0tCisKKy0gYCMxMzE2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzEzMTY+YF86IGBgVGVzdFJlcG9ydC5sb25ncmVwcmBgIGlzIG5vdyBhbHdheXMgYW4gaW5z
dGFuY2Ugb2YgYGBSZXByRXhjZXB0aW9uSW5mb2BgLiBQcmV2aW91c2x5IGl0IHdhcyBhIGBgc3Ry
YGAgd2hlbiBhIHRlc3QgZmFpbGVkIHdpdGggYGBweXRlc3QuZmFpbCguLi4sIHB5dHJhY2U9RmFs
c2UpYGAuCisKKworLSBgIzU5NjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNTk2NT5gXzogc3ltbGlua3MgYXJlIG5vIGxvbmdlciByZXNvbHZlZCBkdXJpbmcg
Y29sbGVjdGlvbiBhbmQgbWF0Y2hpbmcgYGNvbmZ0ZXN0LnB5YCBmaWxlcyB3aXRoIHRlc3QgZmls
ZSBwYXRocy4KKworICBSZXNvbHZpbmcgc3ltbGlua3MgZm9yIHRoZSBjdXJyZW50IGRpcmVjdG9y
eSBhbmQgZHVyaW5nIGNvbGxlY3Rpb24gd2FzIGludHJvZHVjZWQgYXMgYSBidWdmaXggaW4gMy45
LjAsIGJ1dCBpdCBhY3R1YWxseSBpcyBhIG5ldyBmZWF0dXJlIHdoaWNoIGhhZCB1bmZvcnR1bmF0
ZSBjb25zZXF1ZW5jZXMgaW4gV2luZG93cyBhbmQgc3VycHJpc2luZyByZXN1bHRzIGluIG90aGVy
IHBsYXRmb3Jtcy4KKworICBUaGUgdGVhbSBkZWNpZGVkIHRvIHN0ZXAgYmFjayBvbiByZXNvbHZp
bmcgc3ltbGlua3MgYXQgYWxsLCBwbGFubmluZyB0byByZXZpZXcgdGhpcyBpbiB0aGUgZnV0dXJl
IHdpdGggYSBtb3JlIHNvbGlkIHNvbHV0aW9uIChzZWUgZGlzY3Vzc2lvbiBpbgorICBgIzY1MjMg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzY1MjM+YF9fIGZvciBk
ZXRhaWxzKS4KKworICBUaGlzIG1pZ2h0IGJyZWFrIHRlc3Qgc3VpdGVzIHdoaWNoIG1hZGUgdXNl
IG9mIHRoaXMgZmVhdHVyZTsgdGhlIGZpeCBpcyB0byBjcmVhdGUgYSBzeW1saW5rCisgIGZvciB0
aGUgZW50aXJlIHRlc3QgdHJlZSwgYW5kIG5vdCBvbmx5IHRvIHBhcnRpYWwgZmlsZXMvdHJlc3Mg
YXMgaXQgd2FzIHBvc3NpYmxlIHByZXZpb3VzbHkuCisKKworLSBgIzY1MDUgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjUwNT5gXzogYGBUZXN0ZGlyLnJ1bigp
LnBhcnNlb3V0Y29tZXMoKWBgIG5vdyBhbHdheXMgcmV0dXJucyB0aGUgcGFyc2VkIG5vdW5zIGlu
IHBsdXJhbCBmb3JtLgorCisgIE9yaWdpbmFsbHkgYGBwYXJzZW91dGNvbWVzKClgYCB3b3VsZCBh
bHdheXMgcmV0dXJucyB0aGUgbm91bnMgaW4gcGx1cmFsIGZvcm0sIGJ1dCBhIGNoYW5nZQorICBt
ZWFudCB0byBpbXByb3ZlIHRoZSB0ZXJtaW5hbCBzdW1tYXJ5IGJ5IHVzaW5nIHNpbmd1bGFyIGZv
cm0gc2luZ2xlIGl0ZW1zIChgYDEgd2FybmluZ2BgIG9yIGBgMSBlcnJvcmBgKQorICBjYXVzZWQg
YW4gdW5pbnRlbmRlZCByZWdyZXNzaW9uIGJ5IGNoYW5naW5nIHRoZSBrZXlzIHJldHVybmVkIGJ5
IGBgcGFyc2VvdXRjb21lcygpYGAuCisKKyAgTm93IHRoZSBBUEkgZ3VhcmFudGVlcyB0byBhbHdh
eXMgcmV0dXJuIHRoZSBwbHVyYWwgZm9ybSwgc28gY2FsbHMgbGlrZSB0aGlzOgorCisgIC4uIGNv
ZGUtYmxvY2s6OiBweXRob24KKworICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQor
ICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhlcnJvcj0xKQorCisgIE5lZWQgdG8gYmUgY2hh
bmdlZCB0bzoKKworCisgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhlcnJvcnM9
MSkKKworCistIGAjNjkwMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy82OTAzPmBfOiBUaGUgYGBvcy5kdXAoKWBgIGZ1bmN0aW9uIGlzIG5vdyBhc3N1bWVkIHRv
IGV4aXN0LiBXZSBhcmUgbm90IGF3YXJlIG9mIGFueQorICBzdXBwb3J0ZWQgUHl0aG9uIDMgaW1w
bGVtZW50YXRpb25zIHdoaWNoIGRvIG5vdCBwcm92aWRlIGl0LgorCisKKy0gYCM3MDQwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcwNDA+YF86IGBgLWtgYCBu
byBsb25nZXIgbWF0Y2hlcyBhZ2FpbnN0IHRoZSBuYW1lcyBvZiB0aGUgZGlyZWN0b3JpZXMgb3V0
c2lkZSB0aGUgdGVzdCBzZXNzaW9uIHJvb3QuCisKKyAgQWxzbywgYGBweXRlc3QuUGFja2FnZS5u
YW1lYGAgaXMgbm93IGp1c3QgdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRo
ZSBwYWNrYWdlJ3MKKyAgYGBfX2luaXRfXy5weWBgIGZpbGUsIGluc3RlYWQgb2YgdGhlIGZ1bGwg
cGF0aC4gVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggaG93IHRoZSBvdGhlciBub2RlcworICBhcmUg
bmFtZWQsIGFuZCBhbHNvIG9uZSBvZiB0aGUgcmVhc29ucyB3aHkgYGAta2BgIHdvdWxkIG1hdGNo
IGFnYWluc3QgYW55IGRpcmVjdG9yeSBjb250YWluaW5nCisgIHRoZSB0ZXN0IHN1aXRlLgorCisK
Ky0gYCM3MTIyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcx
MjI+YF86IEV4cHJlc3Npb25zIGdpdmVuIHRvIHRoZSBgYC1tYGAgYW5kIGBgLWtgYCBvcHRpb25z
IGFyZSBubyBsb25nZXIgZXZhbHVhdGVkIHVzaW5nIFB5dGhvbidzIDpmdW5jOmBldmFsYC4KKyAg
VGhlIGZvcm1hdCBzdXBwb3J0cyBgYG9yYGAsIGBgYW5kYGAsIGBgbm90YGAsIHBhcmVudGhlc2lz
IGFuZCBnZW5lcmFsIGlkZW50aWZpZXJzIHRvIG1hdGNoIGFnYWluc3QuCisgIFB5dGhvbiBjb25z
dGFudHMsIGtleXdvcmRzIG9yIG90aGVyIG9wZXJhdG9ycyBhcmUgbm8gbG9uZ2VyIGV2YWx1YXRl
ZCBkaWZmZXJlbnRseS4KKworCistIGAjNzEzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy83MTM1PmBfOiBQeXRlc3Qgbm93IHVzZXMgaXRzIG93biBgYFRlcm1p
bmFsV3JpdGVyYGAgY2xhc3MgaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lIGZyb20gdGhlIGBgcHlg
YCBsaWJyYXJ5LgorICBQbHVnaW5zIGdlbmVyYWxseSBhY2Nlc3MgdGhpcyBjbGFzcyB0aHJvdWdo
IGBgVGVybWluYWxSZXBvcnRlci53cml0ZXJgYCwgYGBUZXJtaW5hbFJlcG9ydGVyLndyaXRlKClg
YAorICAoYW5kIHNpbWlsYXIgbWV0aG9kcyksIG9yIGBgX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rl
cm1pbmFsX3dyaXRlcigpYGAuCisKKyAgVGhlIGZvbGxvd2luZyBicmVha2luZyBjaGFuZ2VzIHdl
cmUgbWFkZToKKworICAtIE91dHB1dCAoYGB3cml0ZSgpYGAgbWV0aG9kIGFuZCBvdGhlcnMpIG5v
IGxvbmdlciBmbHVzaCBpbXBsaWNpdGx5OyB0aGUgZmx1c2hpbmcgYmVoYXZpb3IKKyAgICBvZiB0
aGUgdW5kZXJseWluZyBmaWxlIGlzIHJlc3BlY3RlZC4gVG8gZmx1c2ggZXhwbGljaXRseSAoZm9y
IGV4YW1wbGUsIGlmIHlvdQorICAgIHdhbnQgb3V0cHV0IHRvIGJlIHNob3duIGJlZm9yZSBhbiBl
bmQtb2YtbGluZSBpcyBwcmludGVkKSwgdXNlIGBgd3JpdGUoZmx1c2g9VHJ1ZSlgYCBvcgorICAg
IGBgdGVybWluYWxfd3JpdGVyLmZsdXNoKClgYC4KKyAgLSBFeHBsaWNpdCBXaW5kb3dzIGNvbnNv
bGUgc3VwcG9ydCB3YXMgcmVtb3ZlZCwgZGVsZWdhdGVkIHRvIHRoZSBjb2xvcmFtYSBsaWJyYXJ5
LgorICAtIFN1cHBvcnQgZm9yIHdyaXRpbmcgYGBieXRlc2BgIHdhcyByZW1vdmVkLgorICAtIFRo
ZSBgYHJlbGluZWBgIG1ldGhvZCBhbmQgYGBjaGFyc19vbl9jdXJyZW50X2xpbmVgYCBwcm9wZXJ0
eSB3ZXJlIHJlbW92ZWQuCisgIC0gVGhlIGBgc3RyaW5naW9gYCBhbmQgYGBlbmNvZGluZ2BgIGFy
Z3VtZW50cyB3YXMgcmVtb3ZlZC4KKyAgLSBTdXBwb3J0IGZvciBwYXNzaW5nIGEgY2FsbGFibGUg
aW5zdGVhZCBvZiBhIGZpbGUgd2FzIHJlbW92ZWQuCisKKworLSBgIzcyMjQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzIyND5gXzogVGhlIGBpdGVtLmNhdGNo
X2xvZ19oYW5kbGVyYCBhbmQgYGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXJzYCBhdHRyaWJ1dGVzLCBz
ZXQgYnkgdGhlCisgIGxvZ2dpbmcgcGx1Z2luIGFuZCBuZXZlciBtZWFudCB0byBiZSBwdWJsaWMs
IGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLgorCisgIFRoZSBkZXByZWNhdGVkIGBgLS1uby1wcmlu
dC1sb2dzYGAgb3B0aW9uIGFuZCBgYGxvZ19wcmludGBgIGluaSBvcHRpb24gYXJlIHJlbW92ZWQu
IFVzZSBgYC0tc2hvdy1jYXB0dXJlYGAgaW5zdGVhZC4KKworCistIGAjNzIyNiA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjI2PmBfOiBSZW1vdmVkIHRoZSB1
bnVzZWQgYGBhcmdzYGAgcGFyYW1ldGVyIGZyb20gYGBweXRlc3QuRnVuY3Rpb24uX19pbml0X19g
YC4KKworCistIGAjNzQxOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy83NDE4PmBfOiBSZW1vdmVkIHRoZSBgcHl0ZXN0X2RvY3Rlc3RfcHJlcGFyZV9jb250ZW50
YCBob29rIHNwZWNpZmljYXRpb24uIFRoaXMgaG9vaworICBoYXNuJ3QgYmVlbiB0cmlnZ2VyZWQg
YnkgcHl0ZXN0IGZvciBhdCBsZWFzdCAxMCB5ZWFycy4KKworCistIGAjNzQzOCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NDM4PmBfOiBTb21lIGNoYW5nZXMg
d2VyZSBtYWRlIHRvIHRoZSBpbnRlcm5hbCBgYF9weXRlc3QuX2NvZGUuc291cmNlYGAsIGxpc3Rl
ZCBoZXJlCisgIGZvciB0aGUgYmVuZWZpdCBvZiBwbHVnaW4gYXV0aG9ycyB3aG8gbWF5IGJlIHVz
aW5nIGl0OgorCisgIC0gVGhlIGBgZGVpbmRlbnRgYCBhcmd1bWVudCB0byBgYFNvdXJjZSgpYGAg
aGFzIGJlZW4gcmVtb3ZlZCwgbm93IGl0IGlzIGFsd2F5cyB0cnVlLgorICAtIFN1cHBvcnQgZm9y
IHplcm8gb3IgbXVsdGlwbGUgYXJndW1lbnRzIHRvIGBgU291cmNlKClgYCBoYXMgYmVlbiByZW1v
dmVkLgorICAtIFN1cHBvcnQgZm9yIGNvbXBhcmluZyBgYFNvdXJjZWBgIHdpdGggYW4gYGBzdHJg
YCBoYXMgYmVlbiByZW1vdmVkLgorICAtIFRoZSBtZXRob2RzIGBgU291cmNlLmlzcGFyc2VhYmxl
KClgYCBhbmQgYGBTb3VyY2UucHV0YXJvdW5kKClgYCBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgLSBU
aGUgbWV0aG9kIGBgU291cmNlLmNvbXBpbGUoKWBgIGFuZCBmdW5jdGlvbiBgYF9weXRlc3QuX2Nv
ZGUuY29tcGlsZSgpYGAgaGF2ZQorICAgIGJlZW4gcmVtb3ZlZDsgdXNlIHBsYWluIGBgY29tcGls
ZSgpYGAgaW5zdGVhZC4KKyAgLSBUaGUgZnVuY3Rpb24gYGBfcHl0ZXN0Ll9jb2RlLnNvdXJjZS5n
ZXRzb3VyY2UoKWBgIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZQorICAgIGBgU291cmNlKClgYCBkaXJl
Y3RseSBpbnN0ZWFkLgorCisKKworRGVwcmVjYXRpb25zCistLS0tLS0tLS0tLS0KKworLSBgIzcy
MTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzIxMD5gXzog
VGhlIHNwZWNpYWwgYGAtayAnLWV4cHInYGAgc3ludGF4IHRvIGBgLWtgYCBpcyBkZXByZWNhdGVk
LiBVc2UgYGAtayAnbm90IGV4cHInYGAKKyAgaW5zdGVhZC4KKworICBUaGUgc3BlY2lhbCBgYC1r
ICdleHByOidgYCBzeW50YXggdG8gYGAta2BgIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBvcGVuIGFu
IGlzc3VlCisgIGlmIHlvdSB1c2UgdGhpcyBhbmQgd2FudCBhIHJlcGxhY2VtZW50LgorCistIGAj
NDA0OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDQ5PmBf
OiBgYHB5dGVzdF93YXJuaW5nX2NhcHR1cmVkYGAgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0
aGUgYGBweXRlc3Rfd2FybmluZ19yZWNvcmRlZGBgIGhvb2suCisKKworRmVhdHVyZXMKKy0tLS0t
LS0tCisKKy0gYCMxNTU2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE1NTY+YF86IHB5dGVzdCBub3cgc3VwcG9ydHMgYGBweXByb2plY3QudG9tbGBgIGZpbGVz
IGZvciBjb25maWd1cmF0aW9uLgorCisgIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgc2lt
aWxhciB0byB0aGUgb25lIGF2YWlsYWJsZSBpbiBvdGhlciBmb3JtYXRzLCBidXQgbXVzdCBiZSBk
ZWZpbmVkCisgIGluIGEgYGBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdYGAgdGFibGUgdG8gYmUg
cGlja2VkIHVwIGJ5IHB5dGVzdDoKKworICAuLiBjb2RlLWJsb2NrOjogdG9tbAorCisgICAgICAj
IHB5cHJvamVjdC50b21sCisgICAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgICBt
aW52ZXJzaW9uID0gIjYuMCIKKyAgICAgIGFkZG9wdHMgPSAiLXJhIC1xIgorICAgICAgdGVzdHBh
dGhzID0gWworICAgICAgICAgICJ0ZXN0cyIsCisgICAgICAgICAgImludGVncmF0aW9uIiwKKyAg
ICAgIF0KKworICBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBgaW4gdGhlIGRvY3MgPGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jdXN0b21pemUuaHRtbCNjb25maWd1cmF0
aW9uLWZpbGUtZm9ybWF0cz5gX18uCisKKworLSBgIzMzNDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzM0Mj5gXzogcHl0ZXN0IG5vdyBpbmNsdWRlcyBpbmxp
bmUgdHlwZSBhbm5vdGF0aW9ucyBhbmQgZXhwb3NlcyB0aGVtIHRvIHVzZXIgcHJvZ3JhbXMuCisg
IE1vc3Qgb2YgdGhlIHVzZXItZmFjaW5nIEFQSSBpcyBjb3ZlcmVkLCBhcyB3ZWxsIGFzIGludGVy
bmFsIGNvZGUuCisKKyAgSWYgeW91IGFyZSBydW5uaW5nIGEgdHlwZSBjaGVja2VyIHN1Y2ggYXMg
bXlweSBvbiB5b3VyIHRlc3RzLCB5b3UgbWF5IHN0YXJ0CisgIG5vdGljaW5nIHR5cGUgZXJyb3Jz
IGluZGljYXRpbmcgaW5jb3JyZWN0IHVzYWdlLiBJZiB5b3UgcnVuIGludG8gYW4gZXJyb3IgdGhh
dAorICB5b3UgYmVsaWV2ZSB0byBiZSBpbmNvcnJlY3QsIHBsZWFzZSBsZXQgdXMga25vdyBpbiBh
biBpc3N1ZS4KKworICBUaGUgdHlwZXMgd2VyZSBkZXZlbG9wZWQgYWdhaW5zdCBteXB5IHZlcnNp
b24gMC43ODAuIFZlcnNpb25zIGJlZm9yZSAwLjc1MAorICBhcmUga25vd24gbm90IHRvIHdvcmsu
IFdlIHJlY29tbWVuZCB1c2luZyB0aGUgbGF0ZXN0IHZlcnNpb24uIE90aGVyIHR5cGUKKyAgY2hl
Y2tlcnMgbWF5IHdvcmsgYXMgd2VsbCwgYnV0IHRoZXkgYXJlIG5vdCBvZmZpY2lhbGx5IHZlcmlm
aWVkIHRvIHdvcmsgYnkKKyAgcHl0ZXN0IHlldC4KKworCistIGAjNDA0OSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDQ5PmBfOiBJbnRyb2R1Y2VkIGEgbmV3
IGhvb2sgbmFtZWQgYHB5dGVzdF93YXJuaW5nX3JlY29yZGVkYCB0byBjb252ZXkgaW5mb3JtYXRp
b24gYWJvdXQgd2FybmluZ3MgY2FwdHVyZWQgYnkgdGhlIGludGVybmFsIGBweXRlc3RgIHdhcm5p
bmdzIHBsdWdpbi4KKworICBUaGlzIGhvb2sgaXMgbWVhbnQgdG8gcmVwbGFjZSBgcHl0ZXN0X3dh
cm5pbmdfY2FwdHVyZWRgLCB3aGljaCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQg
aW4gYSBmdXR1cmUgcmVsZWFzZS4KKworCistIGAjNjQ3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NDcxPmBfOiBOZXcgY29tbWFuZC1saW5lIGZsYWdzOgor
CisgICogYC0tbm8taGVhZGVyYDogZGlzYWJsZXMgdGhlIGluaXRpYWwgaGVhZGVyLCBpbmNsdWRp
bmcgcGxhdGZvcm0sIHZlcnNpb24sIGFuZCBwbHVnaW5zLgorICAqIGAtLW5vLXN1bW1hcnlgOiBk
aXNhYmxlcyB0aGUgZmluYWwgdGVzdCBzdW1tYXJ5LCBpbmNsdWRpbmcgd2FybmluZ3MuCisKKwor
LSBgIzY4NTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjg1
Nj5gXzogQSB3YXJuaW5nIGlzIG5vdyBzaG93biB3aGVuIGFuIHVua25vd24ga2V5IGlzIHJlYWQg
ZnJvbSBhIGNvbmZpZyBJTkkgZmlsZS4KKworICBUaGUgYC0tc3RyaWN0LWNvbmZpZ2AgZmxhZyBo
YXMgYmVlbiBhZGRlZCB0byB0cmVhdCB0aGVzZSB3YXJuaW5ncyBhcyBlcnJvcnMuCisKKworLSBg
IzY5MDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjkwNj5g
XzogQWRkZWQgYC0tY29kZS1oaWdobGlnaHRgIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxl
L2Rpc2FibGUgY29kZSBoaWdobGlnaHRpbmcgaW4gdGVybWluYWwgb3V0cHV0LgorCisKKy0gYCM3
MjQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyNDU+YF86
IE5ldyBgYC0taW1wb3J0LW1vZGU9aW1wb3J0bGliYGAgb3B0aW9uIHRoYXQgdXNlcyBgaW1wb3J0
bGliIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvaW1wb3J0bGliLmh0bWw+YF9f
IHRvIGltcG9ydCB0ZXN0IG1vZHVsZXMuCisKKyAgVHJhZGl0aW9uYWxseSBweXRlc3QgdXNlZCBg
YF9faW1wb3J0X19gYCB3aGlsZSBjaGFuZ2luZyBgYHN5cy5wYXRoYGAgdG8gaW1wb3J0IHRlc3Qg
bW9kdWxlcyAod2hpY2gKKyAgYWxzbyBjaGFuZ2VzIGBgc3lzLm1vZHVsZXNgYCBhcyBhIHNpZGUt
ZWZmZWN0KSwgd2hpY2ggd29ya3MgYnV0IGhhcyBhIG51bWJlciBvZiBkcmF3YmFja3MsIGxpa2Ug
cmVxdWlyaW5nIHRlc3QgbW9kdWxlcworICB0aGF0IGRvbid0IGxpdmUgaW4gcGFja2FnZXMgdG8g
aGF2ZSB1bmlxdWUgbmFtZXMgKGFzIHRoZXkgbmVlZCB0byByZXNpZGUgdW5kZXIgYSB1bmlxdWUg
bmFtZSBpbiBgYHN5cy5tb2R1bGVzYGApLgorCisgIGBgLS1pbXBvcnQtbW9kZT1pbXBvcnRsaWJg
YCB1c2VzIG1vcmUgZmluZSBncmFpbmVkIGltcG9ydCBtZWNoYW5pc21zIGZyb20gYGBpbXBvcnRs
aWJgYCB3aGljaCBkb24ndAorICByZXF1aXJlIHB5dGVzdCB0byBjaGFuZ2UgYGBzeXMucGF0aGBg
IG9yIGBgc3lzLm1vZHVsZXNgYCBhdCBhbGwsIGVsaW1pbmF0aW5nIG11Y2ggb2YgdGhlIGRyYXdi
YWNrcworICBvZiB0aGUgcHJldmlvdXMgbW9kZS4KKworICBXZSBpbnRlbmQgdG8gbWFrZSBgYC0t
aW1wb3J0LW1vZGU9aW1wb3J0bGliYGAgdGhlIGRlZmF1bHQgaW4gZnV0dXJlIHZlcnNpb25zLCBz
byB1c2VycyBhcmUgZW5jb3VyYWdlZAorICB0byB0cnkgdGhlIG5ldyBtb2RlIGFuZCBwcm92aWRl
IGZlZWRiYWNrIChib3RoIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSBpbiBpc3N1ZSBgIzcyNDUgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzI0NT5gX18uCisKKyAg
WW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBvcHRpb24gaW4gYHRoZSBkb2N1bWVudGF0aW9u
IDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvcHl0aG9ucGF0aC5odG1sI2ltcG9y
dC1tb2Rlcz5gX18uCisKKworLSBgIzczMDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNzMwNT5gXzogTmV3IGBgcmVxdWlyZWRfcGx1Z2luc2BgIGNvbmZpZ3Vy
YXRpb24gb3B0aW9uIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgbGlzdCBvZiBwbHVnaW5z
LCBpbmNsdWRpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIHB5
dGVzdCB0byBydW4uIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBhbnkgcmVxdWlyZWQgcGx1Z2lucyBh
cmUgbm90IGZvdW5kIHdoZW4gcnVubmluZyBweXRlc3QuCisKKworSW1wcm92ZW1lbnRzCistLS0t
LS0tLS0tLS0KKworLSBgIzQzNzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNDM3NT5gXzogVGhlIGBgcHl0ZXN0YGAgY29tbWFuZCBub3cgc3VwcHJlc3NlcyB0
aGUgYGBCcm9rZW5QaXBlRXJyb3JgYCBlcnJvciBtZXNzYWdlIHRoYXQKKyAgaXMgcHJpbnRlZCB0
byBzdGRlcnIgd2hlbiB0aGUgb3V0cHV0IG9mIGBgcHl0ZXN0YGAgaXMgcGlwZWQgYW5kIGFuZCB0
aGUgcGlwZSBpcworICBjbG9zZWQgYnkgdGhlIHBpcGVkLXRvIHByb2dyYW0gKGNvbW1vbiBleGFt
cGxlcyBhcmUgYGBsZXNzYGAgYW5kIGBgaGVhZGBgKS4KKworCistIGAjNDM5MSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MzkxPmBfOiBJbXByb3ZlZCBwcmVj
aXNpb24gb2YgdGVzdCBkdXJhdGlvbnMgbWVhc3VyZW1lbnQuIGBgQ2FsbEluZm9gYCBpdGVtcyBu
b3cgaGF2ZSBhIG5ldyBgYDxDYWxsSW5mbz4uZHVyYXRpb25gYCBhdHRyaWJ1dGUsIGNyZWF0ZWQg
dXNpbmcgYGB0aW1lLnBlcmZfY291bnRlcigpYGAuIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8g
ZmlsbCB0aGUgYGA8VGVzdFJlcG9ydD4uZHVyYXRpb25gYCBhdHRyaWJ1dGUsIHdoaWNoIGlzIG1v
cmUgYWNjdXJhdGUgdGhhbiB0aGUgcHJldmlvdXMgYGA8Q2FsbEluZm8+LnN0b3AgLSA8Q2FsbElu
Zm8+LnN0YXJ0YGAgKGFzIHRoZXNlIGFyZSBiYXNlZCBvbiBgYHRpbWUudGltZSgpYGApLgorCisK
Ky0gYCM0Njc1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2
NzU+YF86IFJpY2ggY29tcGFyaXNvbiBmb3IgZGF0YWNsYXNzZXMgYW5kIGBhdHRyc2AtY2xhc3Nl
cyBpcyBub3cgcmVjdXJzaXZlLgorCisKKy0gYCM2Mjg1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYyODU+YF86IEV4cG9zZWQgdGhlIGBweXRlc3QuRml4dHVy
ZUxvb2t1cEVycm9yYCBleGNlcHRpb24gd2hpY2ggaXMgcmFpc2VkIGJ5IGByZXF1ZXN0LmdldGZp
eHR1cmV2YWx1ZSgpYAorICAod2hlcmUgYHJlcXVlc3RgIGlzIGEgYEZpeHR1cmVSZXF1ZXN0YCBm
aXh0dXJlKSB3aGVuIGEgZml4dHVyZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGNhbm5vdCBiZSByZXR1
cm5lZC4KKworCistIGAjNjQzMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy82NDMzPmBfOiBJZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZCB3aGlsZSBmb3JtYXR0
aW5nIHRoZSBtZXNzYWdlIGluIGEgbG9nZ2luZyBjYWxsLCBmb3IKKyAgZXhhbXBsZSBgYGxvZ2dp
bmcud2FybmluZygib2ggbm8hOiAlczogJXMiLCAiZmlyc3QiKWBgIChhIHNlY29uZCBhcmd1bWVu
dCBpcworICBtaXNzaW5nKSwgcHl0ZXN0IG5vdyBwcm9wYWdhdGVzIHRoZSBlcnJvciwgbGlrZWx5
IGNhdXNpbmcgdGhlIHRlc3QgdG8gZmFpbC4KKworICBQcmV2aW91c2x5LCBzdWNoIGEgbWlzdGFr
ZSB3b3VsZCBjYXVzZSBhbiBlcnJvciB0byBiZSBwcmludGVkIHRvIHN0ZGVyciwgd2hpY2gKKyAg
aXMgbm90IGRpc3BsYXllZCBieSBkZWZhdWx0IGZvciBwYXNzaW5nIHRlc3RzLiBUaGlzIGNoYW5n
ZSBtYWtlcyB0aGUgbWlzdGFrZQorICB2aXNpYmxlIGR1cmluZyB0ZXN0aW5nLgorCisgIFlvdSBt
YXkgc3VwcmVzcyB0aGlzIGJlaGF2aW9yIHRlbXBvcmFyaWx5IG9yIHBlcm1hbmVudGx5IGJ5IHNl
dHRpbmcKKyAgYGBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlYGAuCisKKworLSBgIzY4
MTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjgxNz5gXzog
RXhwbGljaXQgbmV3LWxpbmVzIGluIGhlbHAgdGV4dHMgb2YgY29tbWFuZC1saW5lIG9wdGlvbnMg
YXJlIHByZXNlcnZlZCwgYWxsb3dpbmcgcGx1Z2lucyBiZXR0ZXIgY29udHJvbAorICBvZiB0aGUg
aGVscCBkaXNwbGF5ZWQgdG8gdXNlcnMuCisKKworLSBgIzY5NDAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjk0MD5gXzogV2hlbiB1c2luZyB0aGUgYGAtLWR1
cmF0aW9uYGAgb3B0aW9uLCB0aGUgdGVybWluYWwgbWVzc2FnZSBvdXRwdXQgaXMgbm93IG1vcmUg
cHJlY2lzZSBhYm91dCB0aGUgbnVtYmVyIGFuZCBkdXJhdGlvbiBvZiBoaWRkZW4gaXRlbXMuCisK
KworLSBgIzY5OTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Njk5MT5gXzogQ29sbGVjdGVkIGZpbGVzIGFyZSBkaXNwbGF5ZWQgYWZ0ZXIgYW55IHJlcG9ydHMg
ZnJvbSBob29rcywgZS5nLiB0aGUgc3RhdHVzIGZyb20gYGAtLWxmYGAuCisKKworLSBgIzcwOTEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzA5MT5gXzogV2hl
biBgYGZkYGAgY2FwdHVyaW5nIGlzIHVzZWQsIHRocm91Z2ggYGAtLWNhcHR1cmU9ZmRgYCBvciB0
aGUgYGBjYXBmZGBgIGFuZAorICBgYGNhcGZkYmluYXJ5YGAgZml4dHVyZXMsIGFuZCB0aGUgZmls
ZSBkZXNjcmlwdG9yICgwLCAxLCAyKSBjYW5ub3QgYmUKKyAgZHVwbGljYXRlZCwgRkQgY2FwdHVy
aW5nIGlzIHN0aWxsIHBlcmZvcm1lZC4gUHJldmlvdXNseSwgZGlyZWN0IHdyaXRlcyB0byB0aGUK
KyAgZmlsZSBkZXNjcmlwdG9ycyB3b3VsZCBmYWlsIG9yIGJlIGxvc3QgaW4gdGhpcyBjYXNlLgor
CisKKy0gYCM3MTE5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzcxMTk+YF86IEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUgYGAtLWJhc2V0ZW1wYGAgYXJndW1l
bnQgaXMgZW1wdHksIGlzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9yIGlzIG9uZSBv
ZiB0aGUgcGFyZW50IGRpcmVjdG9yaWVzLgorICBUaGlzIGlzIGRvbmUgdG8gcHJvdGVjdCBhZ2Fp
bnN0IGFjY2lkZW50YWwgZGF0YSBsb3NzLCBhcyBhbnkgZGlyZWN0b3J5IHBhc3NlZCB0byB0aGlz
IGFyZ3VtZW50IGlzIGNsZWFyZWQuCisKKworLSBgIzcxMjggPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzEyOD5gXzogYHB5dGVzdCAtLXZlcnNpb25gIG5vdyBk
aXNwbGF5cyBqdXN0IHRoZSBweXRlc3QgdmVyc2lvbiwgd2hpbGUgYHB5dGVzdCAtLXZlcnNpb24g
LS12ZXJzaW9uYCBkaXNwbGF5cyBtb3JlIHZlcmJvc2UgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHBs
dWdpbnMuIFRoaXMgaXMgbW9yZSBjb25zaXN0ZW50IHdpdGggaG93IG90aGVyIHRvb2xzIHNob3cg
YC0tdmVyc2lvbmAuCisKKworLSBgIzcxMzMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNzEzMz5gXzogOm1ldGg6YGNhcGxvZy5zZXRfbGV2ZWwoKSA8X3B5dGVz
dC5sb2dnaW5nLkxvZ0NhcHR1cmVGaXh0dXJlLnNldF9sZXZlbD5gIHdpbGwgbm93IG92ZXJyaWRl
IGFueSA6Y29uZnZhbDpgbG9nX2xldmVsYCBzZXQgdmlhIHRoZSBDTEkgb3IgY29uZmlndXJhdGlv
biBmaWxlLgorCisKKy0gYCM3MTU5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzcxNTk+YF86IDptZXRoOmBjYXBsb2cuc2V0X2xldmVsKCkgPF9weXRlc3QubG9n
Z2luZy5Mb2dDYXB0dXJlRml4dHVyZS5zZXRfbGV2ZWw+YCBhbmQgOm1ldGg6YGNhcGxvZy5hdF9s
ZXZlbCgpIDxfcHl0ZXN0LmxvZ2dpbmcuTG9nQ2FwdHVyZUZpeHR1cmUuYXRfbGV2ZWw+YCBubyBs
b25nZXIgYWZmZWN0CisgIHRoZSBsZXZlbCBvZiBsb2dzIHRoYXQgYXJlIHNob3duIGluIHRoZSAq
Q2FwdHVyZWQgbG9nIHJlcG9ydCogcmVwb3J0IHNlY3Rpb24uCisKKworLSBgIzczNDggPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM0OD5gXzogSW1wcm92ZSBy
ZWN1cnNpdmUgZGlmZiByZXBvcnQgZm9yIGNvbXBhcmlzb24gYXNzZXJ0cyBvbiBkYXRhY2xhc3Nl
cyAvIGF0dHJzLgorCisKKy0gYCM3Mzg1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzczODU+YF86IGBgLS1qdW5pdHhtbGBgIG5vdyBpbmNsdWRlcyB0aGUgZXhj
ZXB0aW9uIGNhdXNlIGluIHRoZSBgYG1lc3NhZ2VgYCBYTUwgYXR0cmlidXRlIGZvciBmYWlsdXJl
cyBkdXJpbmcgc2V0dXAgYW5kIHRlYXJkb3duLgorCisgIFByZXZpb3VzbHk6CisKKyAgLi4gY29k
ZS1ibG9jazo6IHhtbAorCisgICAgICA8ZXJyb3IgbWVzc2FnZT0idGVzdCBzZXR1cCBmYWlsdXJl
Ij4KKworICBOb3c6CisKKyAgLi4gY29kZS1ibG9jazo6IHhtbAorCisgICAgICA8ZXJyb3IgbWVz
c2FnZT0iZmFpbGVkIG9uIHNldHVwIHdpdGggJnF1b3Q7VmFsdWVFcnJvcjogU29tZSBlcnJvciBk
dXJpbmcgc2V0dXAmcXVvdDsiPgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzEx
MjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTEyMD5gXzog
Rml4IGlzc3VlIHdoZXJlIGRpcmVjdG9yaWVzIGZyb20gOmZpeHR1cmU6YHRtcGRpcmAgYXJlIG5v
dCByZW1vdmVkIHByb3Blcmx5IHdoZW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHB5dGVzdCBhcmUg
cnVubmluZyBpbiBwYXJhbGxlbC4KKworCistIGAjNDU4MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTgzPmBfOiBQcmV2ZW50IGNyYXNoaW5nIGFuZCBwcm92
aWRlIGEgdXNlci1mcmllbmRseSBlcnJvciB3aGVuIGEgbWFya2VyIGV4cHJlc3Npb24gKGAtbWAp
IGludm9raW5nIG9mIDpmdW5jOmBldmFsYCByYWlzZXMgYW55IGV4Y2VwdGlvbi4KKworCistIGAj
NDY3NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Njc3PmBf
OiBUaGUgcGF0aCBzaG93biBpbiB0aGUgc3VtbWFyeSByZXBvcnQgZm9yIFNLSVBQRUQgdGVzdHMg
aXMgbm93IGFsd2F5cyByZWxhdGl2ZS4gUHJldmlvdXNseSBpdCB3YXMgc29tZXRpbWVzIGFic29s
dXRlLgorCisKKy0gYCM1NDU2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzU0NTY+YF86IEZpeCBhIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIHdoZW4gdHJ5aW5n
IHRvIHJlbW92ZSBsb2NrIGZpbGVzIHVzZWQgdG8gY29udHJvbCBhY2Nlc3MgdG8gZm9sZGVycwor
ICBjcmVhdGVkIGJ5IDpmaXh0dXJlOmB0bXBfcGF0aGAgYW5kIDpmaXh0dXJlOmB0bXBkaXJgLgor
CisKKy0gYCM2MjQwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzYyNDA+YF86IEZpeGVzIGFuIGlzc3VlIHdoZXJlIGxvZ2dpbmcgZHVyaW5nIGNvbGxlY3Rpb24g
c3RlcCBjYXVzZWQgZHVwbGljYXRpb24gb2YgbG9nCisgIG1lc3NhZ2VzIHRvIHN0ZGVyci4KKwor
CistIGAjNjQyOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82
NDI4PmBfOiBQYXRocyBhcHBlYXJpbmcgaW4gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdyBjb3JyZWN0
IGluIGNhc2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaGFzCisgIGNoYW5nZWQgc2lu
Y2UgdGhlIHN0YXJ0IG9mIHRoZSBzZXNzaW9uLgorCisKKy0gYCM2NzU1IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY3NTU+YF86IFN1cHBvcnQgZGVsZXRpbmcg
cGF0aHMgbG9uZ2VyIHRoYW4gMjYwIGNoYXJhY3RlcnMgb24gd2luZG93cyBjcmVhdGVkIGluc2lk
ZSA6Zml4dHVyZTpgdG1wZGlyYC4KKworCistIGAjNjg3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82ODcxPmBfOiBGaXggY3Jhc2ggd2l0aCBjYXB0dXJlZCBv
dXRwdXQgd2hlbiB1c2luZyA6Zml4dHVyZTpgY2Fwc3lzYmluYXJ5YC4KKworCistIGAjNjkwOSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTA5PmBfOiBSZXZl
cnQgdGhlIGNoYW5nZSBpbnRyb2R1Y2VkIGJ5IGAjNjMzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L3B1bGwvNjMzMD5gXywgd2hpY2ggcmVxdWlyZWQgYWxsIGFyZ3VtZW50
cyB0byBgYEBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5l
ZCBpbiB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLgorCisgIFRoZSBpbnRlbnRpb24gb2YgdGhlIG9y
aWdpbmFsIGNoYW5nZSB3YXMgdG8gcmVtb3ZlIHdoYXQgd2FzIGV4cGVjdGVkIHRvIGJlIGFuIHVu
aW50ZW5kZWQvc3VycHJpc2luZyBiZWhhdmlvciwgYnV0IGl0IHR1cm5zIG91dCBtYW55IHBlb3Bs
ZSByZWxpZWQgb24gaXQsIHNvIHRoZSByZXN0cmljdGlvbiBoYXMgYmVlbiByZXZlcnRlZC4KKwor
CistIGAjNjkxMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82
OTEwPmBfOiBGaXggY3Jhc2ggd2hlbiBwbHVnaW5zIHJldHVybiBhbiB1bmtub3duIHN0YXRzIHdo
aWxlIHVzaW5nIHRoZSBgYC0tcmVwb3J0bG9nYGAgb3B0aW9uLgorCisKKy0gYCM2OTI0IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5MjQ+YF86IEVuc3VyZSBh
IGBgdW5pdHRlc3QuSXNvbGF0ZWRBc3luY2lvVGVzdENhc2VgYCBpcyBhY3R1YWxseSBhd2FpdGVk
LgorCisKKy0gYCM2OTI1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzY5MjU+YF86IEZpeCBgVGVybWluYWxSZXByYCBpbnN0YW5jZXMgdG8gYmUgaGFzaGFibGUg
YWdhaW4uCisKKworLSBgIzY5NDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNjk0Nz5gXzogRml4IHJlZ3Jlc3Npb24gd2hlcmUgZnVuY3Rpb25zIHJlZ2lzdGVy
ZWQgd2l0aCA6bWV0aDpgdW5pdHRlc3QuVGVzdENhc2UuYWRkQ2xlYW51cGAgd2VyZSBub3QgYmVp
bmcgY2FsbGVkIG9uIHRlc3QgZmFpbHVyZXMuCisKKworLSBgIzY5NTEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjk1MT5gXzogQWxsb3cgdXNlcnMgdG8gc3Rp
bGwgc2V0IHRoZSBkZXByZWNhdGVkIGBgVGVybWluYWxSZXBvcnRlci53cml0ZXJgYCBhdHRyaWJ1
dGUuCisKKworLSBgIzY5NTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNjk1Nj5gXzogUHJldmVudCBweXRlc3QgZnJvbSBwcmludGluZyBgQ29uZnRlc3RJbXBv
cnRGYWlsdXJlYCB0cmFjZWJhY2sgdG8gc3Rkb3V0LgorCisKKy0gYCM2OTkxIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5OTE+YF86IEZpeCByZWdyZXNzaW9u
cyB3aXRoIGAtLWxmYCBmaWx0ZXJpbmcgdG9vIG11Y2ggc2luY2UgcHl0ZXN0IDUuNC4KKworCist
IGAjNjk5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTky
PmBfOiBSZXZlcnQgInRtcGRpcjogY2xlYW4gdXAgaW5kaXJlY3Rpb24gdmlhIGNvbmZpZyBmb3Ig
ZmFjdG9yaWVzIiBgIzY3NjcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNjc2Nz5gXyBhcyBpdCBicmVha3MgcHl0ZXN0LXhkaXN0LgorCisKKy0gYCM3MDYxIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcwNjE+YF86IFdoZW4g
YSB5aWVsZGluZyBmaXh0dXJlIGZhaWxzIHRvIHlpZWxkIGEgdmFsdWUsIHJlcG9ydCBhIHRlc3Qg
c2V0dXAgZXJyb3IgaW5zdGVhZCBvZiBjcmFzaGluZy4KKworCistIGAjNzA3NiA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MDc2PmBfOiBUaGUgcGF0aCBvZiBm
aWxlIHNraXBwZWQgYnkgYGBAcHl0ZXN0Lm1hcmsuc2tpcGBgIGluIHRoZSBTS0lQUEVEIHJlcG9y
dCBpcyBub3cgcmVsYXRpdmUgdG8gaW52b2NhdGlvbiBkaXJlY3RvcnkuIFByZXZpb3VzbHkgaXQg
d2FzIHJlbGF0aXZlIHRvIHJvb3QgZGlyZWN0b3J5LgorCisKKy0gYCM3MTEwIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcxMTA+YF86IEZpeGVkIHJlZ3Jlc3Np
b246IGBgYXN5bmNiYXNlLlRlc3RDYXNlYGAgdGVzdHMgYXJlIGV4ZWN1dGVkIGNvcnJlY3RseSBh
Z2Fpbi4KKworCistIGAjNzEyNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy83MTI2PmBfOiBgYC0tc2V0dXAtc2hvd2BgIG5vdyBkb2Vzbid0IHJhaXNlIGFuIGVy
cm9yIHdoZW4gYSBieXRlcyB2YWx1ZSBpcyB1c2VkIGFzIGEgYGBwYXJhbWV0cml6ZWBgCisgIHBh
cmFtZXRlciB3aGVuIFB5dGhvbiBpcyBjYWxsZWQgd2l0aCB0aGUgYGAtYmJgYCBmbGFnLgorCisK
Ky0gYCM3MTQzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcx
NDM+YF86IEZpeCA6bWV0aDpgcHl0ZXN0LkZpbGUuZnJvbV9wYXJlbnRgIHNvIGl0IGZvcndhcmRz
IGV4dHJhIGtleXdvcmQgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKworCistIGAjNzE0
NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTQ1PmBfOiBD
bGFzc2VzIHdpdGggYnJva2VuIGBgX19nZXRhdHRyaWJ1dGVfX2BgIG1ldGhvZHMgYXJlIGRpc3Bs
YXllZCBjb3JyZWN0bHkgZHVyaW5nIGZhaWx1cmVzLgorCisKKy0gYCM3MTUwIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcxNTA+YF86IFByZXZlbnQgaGlkaW5n
IHRoZSB1bmRlcmx5aW5nIGV4Y2VwdGlvbiB3aGVuIGBgQ29uZlRlc3RJbXBvcnRGYWlsdXJlYGAg
aXMgcmFpc2VkLgorCisKKy0gYCM3MTgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzcxODA+YF86IEZpeCBgYF9pc19zZXR1cF9weWBgIGZvciBmaWxlcyBlbmNv
ZGVkIGRpZmZlcmVudGx5IHRoYW4gbG9jYWxlLgorCisKKy0gYCM3MjE1IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyMTU+YF86IEZpeCByZWdyZXNzaW9uIHdo
ZXJlIHJ1bm5pbmcgd2l0aCBgYC0tcGRiYGAgd291bGQgY2FsbCA6bWV0aDpgdW5pdHRlc3QuVGVz
dENhc2UudGVhckRvd25gIGZvciBza2lwcGVkIHRlc3RzLgorCisKKy0gYCM3MjUzIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyNTM+YF86IFdoZW4gdXNpbmcg
YGBweXRlc3QuZml4dHVyZWBgIG9uIGEgZnVuY3Rpb24gZGlyZWN0bHksIGFzIGluIGBgcHl0ZXN0
LmZpeHR1cmUoZnVuYylgYCwKKyAgaWYgdGhlIGBgYXV0b3VzZWBgIG9yIGBgcGFyYW1zYGAgYXJn
dW1lbnRzIGFyZSBhbHNvIHBhc3NlZCwgdGhlIGZ1bmN0aW9uIGlzIG5vIGxvbmdlcgorICBpZ25v
cmVkLCBidXQgaXMgbWFya2VkIGFzIGEgZml4dHVyZS4KKworCistIGAjNzM2MCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MzYwPmBfOiBGaXggcG9zc2libHkg
aW5jb3JyZWN0IGV2YWx1YXRpb24gb2Ygc3RyaW5nIGV4cHJlc3Npb25zIHBhc3NlZCB0byBgYHB5
dGVzdC5tYXJrLnNraXBpZmBgIGFuZCBgYHB5dGVzdC5tYXJrLnhmYWlsYGAsCisgIGluIHJhcmUg
Y2lyY3Vtc3RhbmNlcyB3aGVyZSB0aGUgZXhhY3Qgc2FtZSBzdHJpbmcgaXMgdXNlZCBidXQgcmVm
ZXJzIHRvIGRpZmZlcmVudCBnbG9iYWwgdmFsdWVzLgorCisKKy0gYCM3MzgzIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzczODM+YF86IEZpeGVkIGV4Y2VwdGlv
biBjYXVzZXMgYWxsIG92ZXIgdGhlIGNvZGViYXNlLCBpLmUuIHVzZSBgcmFpc2UgbmV3X2V4Y2Vw
dGlvbiBmcm9tIG9sZF9leGNlcHRpb25gIHdoZW4gd3JhcHBpbmcgYW4gZXhjZXB0aW9uLgorCisK
KworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAj
NzIwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjAyPmBf
OiBUaGUgZGV2ZWxvcG1lbnQgZ3VpZGUgbm93IGxpbmtzIHRvIHRoZSBjb250cmlidXRpbmcgc2Vj
dGlvbiBvZiB0aGUgZG9jcyBhbmQgYFJFTEVBU0lORy5yc3RgIG9uIEdpdEh1Yi4KKworCistIGAj
NzIzMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjMzPmBf
OiBBZGQgYSBub3RlIGFib3V0IGBgLS1zdHJpY3RgYCBhbmQgYGAtLXN0cmljdC1tYXJrZXJzYGAg
YW5kIHRoZSBwcmVmZXJlbmNlIGZvciB0aGUgbGF0dGVyIG9uZS4KKworCistIGAjNzM0NSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MzQ1PmBfOiBFeHBsYWlu
IGluZGlyZWN0IHBhcmFtZXRyaXphdGlvbiBhbmQgbWFya2VycyBmb3IgZml4dHVyZXMuCisKKwor
CitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCist
IGAjNzAzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MDM1
PmBfOiBUaGUgYGBvcmlnaW5hbG5hbWVgYCBhdHRyaWJ1dGUgb2YgYGBfcHl0ZXN0LnB5dGhvbi5G
dW5jdGlvbmBgIG5vdyBkZWZhdWx0cyB0byBgYG5hbWVgYCBpZiBub3QKKyAgcHJvdmlkZWQgZXhw
bGljaXRseSwgYW5kIGlzIGFsd2F5cyBzZXQuCisKKworLSBgIzcyNjQgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzI2ND5gXzogVGhlIGRlcGVuZGVuY3kgb24g
dGhlIGBgd2N3aWR0aGBgIHBhY2thZ2UgaGFzIGJlZW4gcmVtb3ZlZC4KKworCistIGAjNzI5MSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjkxPmBfOiBSZXBs
YWNlZCBgYHB5LmluaWNvbmZpZ2BgIHdpdGggYGluaWNvbmZpZyA8aHR0cHM6Ly9weXBpLm9yZy9w
cm9qZWN0L2luaWNvbmZpZy8+YF9fLgorCisKKy0gYCM3Mjk1IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyOTU+YF86IGBgc3JjL19weXRlc3QvY29uZmlnL19f
aW5pdF9fLnB5YGAgbm93IHVzZXMgdGhlIGBgd2FybmluZ3NgYCBtb2R1bGUgdG8gcmVwb3J0IHdh
cm5pbmdzIGluc3RlYWQgb2YgYGBzeXMuc3RkZXJyLndyaXRlYGAuCisKKworLSBgIzczNTYgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM1Nj5gXzogUmVtb3Zl
IGxhc3QgaW50ZXJuYWwgdXNlcyBvZiBkZXByZWNhdGVkICpzbGF2ZSogdGVybSBmcm9tIG9sZCBg
YHB5dGVzdC14ZGlzdGBgLgorCisKKy0gYCM3MzU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzczNTc+YF86IGBgcHlgYD49MS44LjIgaXMgbm93IHJlcXVpcmVk
LgorCisKK3B5dGVzdCA1LjQuMyAoMjAyMC0wNi0wMikKKz09PT09PT09PT09PT09PT09PT09PT09
PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzY0MjggPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQyOD5gXzogUGF0aHMgYXBwZWFyaW5nIGluIGVy
cm9yIG1lc3NhZ2VzIGFyZSBub3cgY29ycmVjdCBpbiBjYXNlIHRoZSBjdXJyZW50IHdvcmtpbmcg
ZGlyZWN0b3J5IGhhcworICBjaGFuZ2VkIHNpbmNlIHRoZSBzdGFydCBvZiB0aGUgc2Vzc2lvbi4K
KworCistIGAjNjc1NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy82NzU1PmBfOiBTdXBwb3J0IGRlbGV0aW5nIHBhdGhzIGxvbmdlciB0aGFuIDI2MCBjaGFyYWN0
ZXJzIG9uIHdpbmRvd3MgY3JlYXRlZCBpbnNpZGUgdG1wZGlyLgorCisKKy0gYCM2OTU2IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5NTY+YF86IFByZXZlbnQg
cHl0ZXN0IGZyb20gcHJpbnRpbmcgQ29uZnRlc3RJbXBvcnRGYWlsdXJlIHRyYWNlYmFjayB0byBz
dGRvdXQuCisKKworLSBgIzcxNTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNzE1MD5gXzogUHJldmVudCBoaWRpbmcgdGhlIHVuZGVybHlpbmcgZXhjZXB0aW9u
IHdoZW4gYGBDb25mVGVzdEltcG9ydEZhaWx1cmVgYCBpcyByYWlzZWQuCisKKworLSBgIzcyMTUg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzIxNT5gXzogRml4
IHJlZ3Jlc3Npb24gd2hlcmUgcnVubmluZyB3aXRoIGBgLS1wZGJgYCB3b3VsZCBjYWxsIHRoZSBg
YHRlYXJEb3duYGAgbWV0aG9kcyBvZiBgYHVuaXR0ZXN0LlRlc3RDYXNlYGAKKyAgc3ViY2xhc3Nl
cyBmb3Igc2tpcHBlZCB0ZXN0cy4KKworCitweXRlc3QgNS40LjIgKDIwMjAtMDUtMDgpCis9PT09
PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM2ODcx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY4NzE+YF86IEZp
eCBjcmFzaCB3aXRoIGNhcHR1cmVkIG91dHB1dCB3aGVuIHVzaW5nIHRoZSA6Zml4dHVyZTpgY2Fw
c3lzYmluYXJ5IGZpeHR1cmUgPGNhcHN5c2JpbmFyeT5gLgorCisKKy0gYCM2OTI0IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5MjQ+YF86IEVuc3VyZSBhIGBg
dW5pdHRlc3QuSXNvbGF0ZWRBc3luY2lvVGVzdENhc2VgYCBpcyBhY3R1YWxseSBhd2FpdGVkLgor
CisKKy0gYCM2OTI1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzY5MjU+YF86IEZpeCBUZXJtaW5hbFJlcHIgaW5zdGFuY2VzIHRvIGJlIGhhc2hhYmxlIGFnYWlu
LgorCisKKy0gYCM2OTQ3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzY5NDc+YF86IEZpeCByZWdyZXNzaW9uIHdoZXJlIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHdp
dGggYGBUZXN0Q2FzZS5hZGRDbGVhbnVwYGAgd2VyZSBub3QgYmVpbmcgY2FsbGVkIG9uIHRlc3Qg
ZmFpbHVyZXMuCisKKworLSBgIzY5NTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNjk1MT5gXzogQWxsb3cgdXNlcnMgdG8gc3RpbGwgc2V0IHRoZSBkZXByZWNh
dGVkIGBgVGVybWluYWxSZXBvcnRlci53cml0ZXJgYCBhdHRyaWJ1dGUuCisKKworLSBgIzY5OTIg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjk5Mj5gXzogUmV2
ZXJ0ICJ0bXBkaXI6IGNsZWFuIHVwIGluZGlyZWN0aW9uIHZpYSBjb25maWcgZm9yIGZhY3Rvcmll
cyIgIzY3NjcgYXMgaXQgYnJlYWtzIHB5dGVzdC14ZGlzdC4KKworCistIGAjNzExMCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTEwPmBfOiBGaXhlZCByZWdy
ZXNzaW9uOiBgYGFzeW5jYmFzZS5UZXN0Q2FzZWBgIHRlc3RzIGFyZSBleGVjdXRlZCBjb3JyZWN0
bHkgYWdhaW4uCisKKworLSBgIzcxNDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNzE0Mz5gXzogRml4IGBgRmlsZS5mcm9tX2NvbnN0cnVjdG9yYGAgc28gaXQg
Zm9yd2FyZHMgZXh0cmEga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yLgorCisK
Ky0gYCM3MTQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcx
NDU+YF86IENsYXNzZXMgd2l0aCBicm9rZW4gYGBfX2dldGF0dHJpYnV0ZV9fYGAgbWV0aG9kcyBh
cmUgZGlzcGxheWVkIGNvcnJlY3RseSBkdXJpbmcgZmFpbHVyZXMuCisKKworLSBgIzcxODAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE4MD5gXzogRml4IGBg
X2lzX3NldHVwX3B5YGAgZm9yIGZpbGVzIGVuY29kZWQgZGlmZmVyZW50bHkgdGhhbiBsb2NhbGUu
CisKKworcHl0ZXN0IDUuNC4xICgyMDIwLTAzLTEzKQorPT09PT09PT09PT09PT09PT09PT09PT09
PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNjkwOSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTA5PmBfOiBSZXZlcnQgdGhlIGNoYW5nZSBpbnRy
b2R1Y2VkIGJ5IGAjNjMzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1
bGwvNjMzMD5gXywgd2hpY2ggcmVxdWlyZWQgYWxsIGFyZ3VtZW50cyB0byBgYEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZWBgIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24g
c2lnbmF0dXJlLgorCisgIFRoZSBpbnRlbnRpb24gb2YgdGhlIG9yaWdpbmFsIGNoYW5nZSB3YXMg
dG8gcmVtb3ZlIHdoYXQgd2FzIGV4cGVjdGVkIHRvIGJlIGFuIHVuaW50ZW5kZWQvc3VycHJpc2lu
ZyBiZWhhdmlvciwgYnV0IGl0IHR1cm5zIG91dCBtYW55IHBlb3BsZSByZWxpZWQgb24gaXQsIHNv
IHRoZSByZXN0cmljdGlvbiBoYXMgYmVlbiByZXZlcnRlZC4KKworCistIGAjNjkxMCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTEwPmBfOiBGaXggY3Jhc2gg
d2hlbiBwbHVnaW5zIHJldHVybiBhbiB1bmtub3duIHN0YXRzIHdoaWxlIHVzaW5nIHRoZSBgYC0t
cmVwb3J0bG9nYGAgb3B0aW9uLgorCisKK3B5dGVzdCA1LjQuMCAoMjAyMC0wMy0xMikKKz09PT09
PT09PT09PT09PT09PT09PT09PT0KKworQnJlYWtpbmcgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0t
LQorCistIGAjNjMxNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy82MzE2PmBfOiBNYXRjaGluZyBvZiBgYC1rIEVYUFJFU1NJT05gYCB0byB0ZXN0IG5hbWVzIGlz
IG5vdyBjYXNlLWluc2Vuc2l0aXZlLgorCisKKy0gYCM2NDQzIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0NDM+YF86IFBsdWdpbnMgc3BlY2lmaWVkIHdpdGgg
YGAtcGBgIGFyZSBub3cgbG9hZGVkIGFmdGVyIGludGVybmFsIHBsdWdpbnMsIHdoaWNoIHJlc3Vs
dHMgaW4gdGhlaXIgaG9va3MgYmVpbmcgY2FsbGVkICpiZWZvcmUqIHRoZSBpbnRlcm5hbCBvbmVz
LgorCisgIFRoaXMgbWFrZXMgdGhlIGBgLXBgYCBiZWhhdmlvciBjb25zaXN0ZW50IHdpdGggYGBQ
WVRFU1RfUExVR0lOU2BgLgorCisKKy0gYCM2NjM3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzY2Mzc+YF86IFJlbW92ZWQgdGhlIGxvbmctZGVwcmVjYXRlZCBg
YHB5dGVzdF9pdGVtc3RhcnRgYCBob29rLgorCisgIFRoaXMgaG9vayBoYXMgYmVlbiBtYXJrZWQg
YXMgZGVwcmVjYXRlZCBhbmQgbm90IGJlZW4gZXZlbiBjYWxsZWQgYnkgcHl0ZXN0IGZvciBvdmVy
IDEwIHllYXJzIG5vdy4KKworCistIGAjNjY3MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy82NjczPmBfOiBSZXZlcnNlZCAvIGZpeCBtZWFuaW5nIG9mICIrLy0i
IGluIGVycm9yIGRpZmZzLiAgIi0iIG1lYW5zIHRoYXQgc3RoLiBleHBlY3RlZCBpcyBtaXNzaW5n
IGluIHRoZSByZXN1bHQgYW5kICIrIiBtZWFucyB0aGF0IHRoZXJlIGFyZSB1bmV4cGVjdGVkIGV4
dHJhcyBpbiB0aGUgcmVzdWx0LgorCisKKy0gYCM2NzM3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY3Mzc+YF86IFRoZSBgYGNhY2hlZF9yZXN1bHRgYCBhdHRy
aWJ1dGUgb2YgYGBGaXh0dXJlRGVmYGAgaXMgbm93IHNldCB0byBgYE5vbmVgYCB3aGVuCisgIHRo
ZSByZXN1bHQgaXMgdW5hdmFpbGFibGUsIGluc3RlYWQgb2YgYmVpbmcgZGVsZXRlZC4KKworICBJ
ZiB5b3VyIHBsdWdpbiBwZXJmb3JtcyBjaGVja3MgbGlrZSBgYGhhc2F0dHIoZml4dHVyZWRlZiwg
J2NhY2hlZF9yZXN1bHQnKWBgLAorICBmb3IgZXhhbXBsZSBpbiBhIGBgcHl0ZXN0X2ZpeHR1cmVf
cG9zdF9maW5hbGl6ZXJgYCBob29rIGltcGxlbWVudGF0aW9uLCByZXBsYWNlCisgIGl0IHdpdGgg
YGBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQgaXMgbm90IE5vbmVgYC4gSWYgeW91IGBgZGVsYGAg
dGhlIGF0dHJpYnV0ZSwKKyAgc2V0IGl0IHRvIGBgTm9uZWBgIGluc3RlYWQuCisKKworCitEZXBy
ZWNhdGlvbnMKKy0tLS0tLS0tLS0tLQorCistIGAjMzIzOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjM4PmBfOiBPcHRpb24gYGAtLW5vLXByaW50LWxvZ3Ng
YCBpcyBkZXByZWNhdGVkIGFuZCBtZWFudCB0byBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVh
c2UuIElmIHlvdSB1c2UgYGAtLW5vLXByaW50LWxvZ3NgYCwgcGxlYXNlIHRyeSBvdXQgYGAtLXNo
b3ctY2FwdHVyZWBgIGFuZAorICBwcm92aWRlIGZlZWRiYWNrLgorCisgIGBgLS1zaG93LWNhcHR1
cmVgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHdhcyBhZGRlZCBpbiBgYHB5dGVzdCAzLjUuMGBgIGFu
ZCBhbGxvd3MgdG8gc3BlY2lmeSBob3cgdG8KKyAgZGlzcGxheSBjYXB0dXJlZCBvdXRwdXQgd2hl
biB0ZXN0cyBmYWlsOiBgYG5vYGAsIGBgc3Rkb3V0YGAsIGBgc3RkZXJyYGAsIGBgbG9nYGAgb3Ig
YGBhbGxgYCAodGhlIGRlZmF1bHQpLgorCisKKy0gYCM1NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTcxPmBfOiBEZXByZWNhdGUgdGhlIHVudXNlZC9icm9r
ZW4gYHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeWAgaG9vay4KKyAgSXQgd2FzIG1pc2FsaWduZWQg
c2luY2UgdGhlIHJlbW92YWwgb2YgdGhlIGBgRGlyZWN0b3J5YGAgY29sbGVjdG9yIGluIDIwMTAK
KyAgYW5kIGluY29ycmVjdC91bnVzYWJsZSBhcyBzb29uIGFzIGNvbGxlY3Rpb24gd2FzIHNwbGl0
IGZyb20gdGVzdCBleGVjdXRpb24uCisKKworLSBgIzU5NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTk3NT5gXzogRGVwcmVjYXRlIHVzaW5nIGRpcmVjdCBj
b25zdHJ1Y3RvcnMgZm9yIGBgTm9kZXNgYC4KKworICBJbnN0ZWFkIHRoZXkgYXJlIG5vdyBjb25z
dHJ1Y3RlZCB2aWEgYGBOb2RlLmZyb21fcGFyZW50YGAuCisKKyAgVGhpcyB0cmFuc2l0aW9uYWwg
bWVjaGFuaXNtIGVuYWJsZXMgdXMgdG8gdW50YW5nbGUgdGhlIHZlcnkgaW50ZW5zZWx5CisgIGVu
dGFuZ2xlZCBgYE5vZGVgYCByZWxhdGlvbnNoaXBzIGJ5IGVuZm9yY2luZyBtb3JlIGNvbnRyb2xs
ZWQgY3JlYXRpb24vY29uZmlndXJhdGlvbiBwYXR0ZXJucy4KKworICBBcyBwYXJ0IG9mIHRoaXMg
Y2hhbmdlLCBzZXNzaW9uL2NvbmZpZyBhcmUgYWxyZWFkeSBkaXNhbGxvd2VkIHBhcmFtZXRlcnMg
YW5kIGFzIHdlIHdvcmsgb24gdGhlIGRldGFpbHMgd2UgbWlnaHQgbmVlZCBkaXNhbGxvdyBhIGZl
dyBtb3JlIGFzIHdlbGwuCisKKyAgU3ViY2xhc3NlcyBhcmUgZXhwZWN0ZWQgdG8gdXNlIGBzdXBl
cigpLmZyb21fcGFyZW50YCBpZiB0aGV5IGludGVuZCB0byBleHBhbmQgdGhlIGNyZWF0aW9uIG9m
IGBOb2Rlc2AuCisKKworLSBgIzY3NzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNjc3OT5gXzogVGhlIGBgVGVybWluYWxSZXBvcnRlci53cml0ZXJgYCBhdHRy
aWJ1dGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLiBU
aGlzCisgIHdhcyBpbmFkdmVydGVudGx5IGV4cG9zZWQgYXMgcGFydCBvZiB0aGUgcHVibGljIEFQ
SSBvZiB0aGF0IHBsdWdpbiBhbmQgdGllcyBpdCB0b28gbXVjaAorICB3aXRoIGBgcHkuaW8uVGVy
bWluYWxXcml0ZXJgYC4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjNDU5NyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTk3PmBfOiBOZXcgOnJl
ZjpgLS1jYXB0dXJlPXRlZS1zeXMgPGNhcHR1cmUtbWV0aG9kPmAgb3B0aW9uIHRvIGFsbG93IGJv
dGggbGl2ZSBwcmludGluZyBhbmQgY2FwdHVyaW5nIG9mIHRlc3Qgb3V0cHV0LgorCisKKy0gYCM1
NzEyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU3MTI+YF86
IE5vdyBhbGwgYXJndW1lbnRzIHRvIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgbmVlZCB0
byBiZSBleHBsaWNpdGx5IGRlY2xhcmVkIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb3Igdmlh
IGBgaW5kaXJlY3RgYC4KKyAgUHJldmlvdXNseSBpdCB3YXMgcG9zc2libGUgdG8gb21pdCBhbiBh
cmd1bWVudCBpZiBhIGZpeHR1cmUgd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0ZWQsIHdoaWNoIHdh
cyBqdXN0IGFuIGFjY2lkZW50IG9mIGltcGxlbWVudGF0aW9uIGFuZCB3YXMgbm90IG1lYW50IHRv
IGJlIGEgcGFydCBvZiB0aGUgQVBJLgorCisKKy0gYCM2NDU0IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0NTQ+YF86IENoYW5nZWQgZGVmYXVsdCBmb3IgYC1y
YCB0byBgZkVgLCB3aGljaCBkaXNwbGF5cyBmYWlsdXJlcyBhbmQgZXJyb3JzIGluIHRoZSA6cmVm
OmBzaG9ydCB0ZXN0IHN1bW1hcnkgPHB5dGVzdC5kZXRhaWxlZF9mYWlsZWRfdGVzdHNfdXNhZ2U+
YC4gIGAtck5gIGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgaXQgKHRoZSBvbGQgYmVoYXZpb3IpLgor
CisKKy0gYCM2NDY5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzY0Njk+YF86IE5ldyBvcHRpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgOmNvbmZ2YWw6YGp1
bml0X2xvZ2dpbmdgIG9wdGlvbjogYGBsb2dgYCwgYGBvdXQtZXJyYGAsIGFuZCBgYGFsbGBgLgor
CisKKy0gYCM2ODM0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzY4MzQ+YF86IEV4Y2VzcyB3YXJuaW5nIHN1bW1hcmllcyBhcmUgbm93IGNvbGxhcHNlZCBwZXIg
ZmlsZSB0byBlbnN1cmUgcmVhZGFibGUgZGlzcGxheSBvZiB3YXJuaW5nIHN1bW1hcmllcy4KKwor
CisKK0ltcHJvdmVtZW50cworLS0tLS0tLS0tLS0tCisKKy0gYCMxODU3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4NTc+YF86IGBgcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemVgYCBhY2NlcHRzIGludGVnZXJzIGZvciBgYGlkc2BgIGFnYWluLCBjb252ZXJ0aW5n
IGl0IHRvIHN0cmluZ3MuCisKKworLSBgIzQ0OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy80NDk+YF86IFVzZSAieWVsbG93IiBtYWluIGNvbG9yIHdpdGggYW55
IFhQQVNTRUQgdGVzdHMuCisKKworLSBgIzQ2MzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNDYzOT5gXzogUmV2ZXJ0ICJBIHdhcm5pbmcgaXMgbm93IGlzc3Vl
ZCB3aGVuIGFzc2VydGlvbnMgYXJlIG1hZGUgZm9yIGBgTm9uZWBgIi4KKworICBUaGUgd2Fybmlu
ZyBwcm92ZWQgdG8gYmUgbGVzcyB1c2VmdWwgdGhhbiBpbml0aWFsbHkgZXhwZWN0ZWQgYW5kIGhh
ZCBxdWl0ZSBhCisgIGZldyBmYWxzZSBwb3NpdGl2ZSBjYXNlcy4KKworCistIGAjNTY4NiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Njg2PmBfOiBgYHRtcGRp
cl9mYWN0b3J5Lm1rdGVtcGBgIG5vdyBmYWlscyB3aGVuIGdpdmVuIGFic29sdXRlIGFuZCBub24t
bm9ybWFsaXplZCBwYXRocy4KKworCistIGAjNTk4NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTg0PmBfOiBUaGUgYGBweXRlc3Rfd2FybmluZ19jYXB0dXJl
ZGBgIGhvb2sgbm93IHJlY2VpdmVzIGEgYGBsb2NhdGlvbmBgIHBhcmFtZXRlciB3aXRoIHRoZSBj
b2RlIGxvY2F0aW9uIHRoYXQgZ2VuZXJhdGVkIHRoZSB3YXJuaW5nLgorCisKKy0gYCM2MjEzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYyMTM+YF86IHB5dGVz
dGVyOiB0aGUgYGB0ZXN0ZGlyYGAgZml4dHVyZSByZXNwZWN0cyBlbnZpcm9ubWVudCBzZXR0aW5n
cyBmcm9tIHRoZSBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBmb3IgaW5uZXIgcnVucy4KKworCist
IGAjNjI0NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MjQ3
PmBfOiBgYC0tZnVsbHRyYWNlYGAgaXMgaG9ub3JlZCB3aXRoIGNvbGxlY3Rpb24gZXJyb3JzLgor
CisKKy0gYCM2Mzg0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzYzODQ+YF86IE1ha2UgYC0tc2hvd2xvY2Fsc2Agd29yayBhbHNvIHdpdGggYC0tdGI9c2hvcnRg
LgorCisKKy0gYCM2NjUzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzY2NTM+YF86IEFkZCBzdXBwb3J0IGZvciBtYXRjaGluZyBsaW5lcyBjb25zZWN1dGl2ZWx5
IHdpdGggOmF0dHI6YExpbmVNYXRjaGVyIDxfcHl0ZXN0LnB5dGVzdGVyLkxpbmVNYXRjaGVyPmAn
cyA6ZnVuYzpgfl9weXRlc3QucHl0ZXN0ZXIuTGluZU1hdGNoZXIuZm5tYXRjaF9saW5lc2AgYW5k
IDpmdW5jOmB+X3B5dGVzdC5weXRlc3Rlci5MaW5lTWF0Y2hlci5yZV9tYXRjaF9saW5lc2AuCisK
KworLSBgIzY2NTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NjY1OD5gXzogQ29kZSBpcyBub3cgaGlnaGxpZ2h0ZWQgaW4gdHJhY2ViYWNrcyB3aGVuIGBgcHln
bWVudHNgYCBpcyBpbnN0YWxsZWQuCisKKyAgVXNlcnMgYXJlIGVuY291cmFnZWQgdG8gaW5zdGFs
bCBgYHB5Z21lbnRzYGAgaW50byB0aGVpciBlbnZpcm9ubWVudCBhbmQgcHJvdmlkZSBmZWVkYmFj
aywgYmVjYXVzZQorICB0aGUgcGxhbiBpcyB0byBtYWtlIGBgcHlnbWVudHNgYCBhIHJlZ3VsYXIg
ZGVwZW5kZW5jeSBpbiB0aGUgZnV0dXJlLgorCisKKy0gYCM2Nzk1IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY3OTU+YF86IEltcG9ydCB1c2FnZSBlcnJvciBt
ZXNzYWdlIHdpdGggaW52YWxpZCBgLW9gIG9wdGlvbi4KKworCistIGAjNzU5IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc1OT5gXzogYGBweXRlc3QubWFyay5w
YXJhbWV0cml6ZWBgIHN1cHBvcnRzIGl0ZXJhdG9ycyBhbmQgZ2VuZXJhdG9ycyBmb3IgYGBpZHNg
YC4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMzMTAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEwPmBfOiBBZGQgc3VwcG9ydCBmb3IgY2Fs
bGluZyBgcHl0ZXN0LnhmYWlsKClgIGFuZCBgcHl0ZXN0LmltcG9ydG9yc2tpcCgpYCB3aXRoIGRv
Y3Rlc3RzLgorCisKKy0gYCMzODIzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzM4MjM+YF86IGBgLS10cmFjZWBgIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0cy4K
KworCistIGAjNDQ0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80NDQ1PmBfOiBGaXhlZCBzb21lIHdhcm5pbmcgcmVwb3J0cyBwcm9kdWNlZCBieSBweXRlc3Qg
dG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgbG9jYXRpb24gb2YgdGhlIHdhcm5pbmcgaW4gdGhlIHVz
ZXIncyBjb2RlLgorCisKKy0gYCM1MzAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzUzMDE+YF86IEZpeCBgYC0tbGFzdC1mYWlsZWRgYCB0byBjb2xsZWN0IG5l
dyB0ZXN0cyBmcm9tIGZpbGVzIHdpdGgga25vd24gZmFpbHVyZXMuCisKKworLSBgIzU5MjggPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTkyOD5gXzogUmVwb3J0
IGBgUHl0ZXN0VW5rbm93bk1hcmtXYXJuaW5nYGAgYXQgdGhlIGxldmVsIG9mIHRoZSB1c2VyJ3Mg
Y29kZSwgbm90IGBgcHl0ZXN0YGAncy4KKworCistIGAjNTk5MSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTkxPmBfOiBGaXggaW50ZXJhY3Rpb24gd2l0aCBg
YC0tcGRiYGAgYW5kIHVuaXR0ZXN0czogZG8gbm90IHVzZSB1bml0dGVzdCdzIGBgVGVzdENhc2Uu
ZGVidWcoKWBgLgorCisKKy0gYCM2MzM0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzYzMzQ+YF86IEZpeCBzdW1tYXJ5IGVudHJpZXMgYXBwZWFyaW5nIHR3aWNl
IHdoZW4gYGBmL0ZgYCBhbmQgYGBzL1NgYCByZXBvcnQgY2hhcnMgd2VyZSB1c2VkIGF0IHRoZSBz
YW1lIHRpbWUgaW4gdGhlIGBgLXJgYCBjb21tYW5kLWxpbmUgb3B0aW9uIChmb3IgZXhhbXBsZSBg
YC1yRmZgYCkuCisKKyAgVGhlIHVwcGVyIGNhc2UgdmFyaWFudHMgd2VyZSBuZXZlciBkb2N1bWVu
dGVkIGFuZCB0aGUgcHJlZmVycmVkIGZvcm0gc2hvdWxkIGJlIHRoZSBsb3dlciBjYXNlLgorCisK
Ky0gYCM2NDA5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0
MDk+YF86IEZhbGxiYWNrIHRvIGdyZWVuIChpbnN0ZWFkIG9mIHllbGxvdykgZm9yIG5vbi1sYXN0
IGl0ZW1zIHdpdGhvdXQgcHJldmlvdXMgcGFzc2VzIHdpdGggY29sb3JlZCB0ZXJtaW5hbCBwcm9n
cmVzcyBpbmRpY2F0b3IuCisKKworLSBgIzY0NTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjQ1ND5gXzogYC0tZGlzYWJsZS13YXJuaW5nc2AgaXMgaG9ub3Jl
ZCB3aXRoIGAtcmFgIGFuZCBgLXJBYC4KKworCistIGAjNjQ5NyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NDk3PmBfOiBGaXggYnVnIGluIHRoZSBjb21wYXJp
c29uIG9mIHJlcXVlc3Qga2V5IHdpdGggY2FjaGVkIGtleSBpbiBmaXh0dXJlLgorCisgIEEgY29u
c3RydWN0IGBgaWYga2V5ID09IGNhY2hlZF9rZXk6YGAgY2FuIGZhaWwgZWl0aGVyIGJlY2F1c2Ug
YGA9PWBgIGlzIGV4cGxpY2l0bHkgZGlzYWxsb3dlZCwgb3IgZm9yLCBlLmcuLCBOdW1QeSBhcnJh
eXMsIHdoZXJlIHRoZSByZXN1bHQgb2YgYGBhID09IGJgYCBjYW5ub3QgZ2VuZXJhbGx5IGJlIGNv
bnZlcnRlZCB0byBgYm9vbGAuCisgIFRoZSBpbXBsZW1lbnRlZCBmaXggcmVwbGFjZXMgYD09YCB3
aXRoIGBgaXNgYC4KKworCistIGAjNjU1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy82NTU3PmBfOiBNYWtlIGNhcHR1cmUgb3V0cHV0IHN0cmVhbXMgYGAud3Jp
dGUoKWBgIG1ldGhvZCByZXR1cm4gdGhlIHNhbWUgcmV0dXJuIHZhbHVlIGZyb20gb3JpZ2luYWwg
c3RyZWFtcy4KKworCistIGAjNjU2NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy82NTY2PmBfOiBGaXggYGBFbmNvZGVkRmlsZS53cml0ZWxpbmVzYGAgdG8gY2Fs
bCB0aGUgdW5kZXJseWluZyBidWZmZXIncyBgYHdyaXRlbGluZXNgYCBtZXRob2QuCisKKworLSBg
IzY1NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjU3NT5g
XzogRml4IGludGVybmFsIGNyYXNoIHdoZW4gYGBmYXVsdGhhbmRsZXJgYCBzdGFydHMgaW5pdGlh
bGl6ZWQKKyAgKGZvciBleGFtcGxlIHdpdGggYGBQWVRIT05GQVVMVEhBTkRMRVI9MWBgIGVudmly
b25tZW50IHZhcmlhYmxlIHNldCkgYW5kIGBgZmF1bHRoYW5kbGVyX3RpbWVvdXRgYCBkZWZpbmVk
CisgIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisKKworLSBgIzY1OTcgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjU5Nz5gXzogRml4IG5vZGUgaWRzIHdo
aWNoIGNvbnRhaW4gYSBwYXJhbWV0cml6ZWQgZW1wdHktc3RyaW5nIHZhcmlhYmxlLgorCisKKy0g
YCM2NjQ2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY2NDY+
YF86IEFzc2VydGlvbiByZXdyaXRpbmcgaG9va3MgYXJlIChyZSlzdG9yZWQgZm9yIHRoZSBjdXJy
ZW50IGl0ZW0sIHdoaWNoIGZpeGVzIHRoZW0gYmVpbmcgc3RpbGwgdXNlZCBhZnRlciBlLmcuIHB5
dGVzdGVyJ3MgOmZ1bmM6YHRlc3RkaXIucnVucHl0ZXN0IDxfcHl0ZXN0LnB5dGVzdGVyLlRlc3Rk
aXIucnVucHl0ZXN0PmAgZXRjLgorCisKKy0gYCM2NjYwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY2NjA+YF86IDpweTpmdW5jOmBweXRlc3QuZXhpdGAgaXMg
aGFuZGxlZCB3aGVuIGVtaXR0ZWQgZnJvbSB0aGUgOmZ1bmM6YHB5dGVzdF9zZXNzaW9uZmluaXNo
IDxfcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF9zZXNzaW9uZmluaXNoPmAgaG9vay4gIFRoaXMgaW5j
bHVkZXMgcXVpdHRpbmcgZnJvbSBhIGRlYnVnZ2VyLgorCisKKy0gYCM2NzUyIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY3NTI+YF86IFdoZW4gOnB5OmZ1bmM6
YHB5dGVzdC5yYWlzZXNgIGlzIHVzZWQgYXMgYSBmdW5jdGlvbiAoYXMgb3Bwb3NlZCB0byBhIGNv
bnRleHQgbWFuYWdlciksCisgIGEgYG1hdGNoYCBrZXl3b3JkIGFyZ3VtZW50IGlzIG5vdyBwYXNz
ZWQgdGhyb3VnaCB0byB0aGUgdGVzdGVkIGZ1bmN0aW9uLiBQcmV2aW91c2x5CisgIGl0IHdhcyBz
d2FsbG93ZWQgYW5kIGlnbm9yZWQgKHJlZ3Jlc3Npb24gaW4gcHl0ZXN0IDUuMS4wKS4KKworCist
IGAjNjgwMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82ODAx
PmBfOiBEbyBub3QgZGlzcGxheSBlbXB0eSBsaW5lcyBpbmJldHdlZW4gdHJhY2ViYWNrIGZvciB1
bmV4cGVjdGVkIGV4Y2VwdGlvbnMgd2l0aCBkb2N0ZXN0cy4KKworCistIGAjNjgwMiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82ODAyPmBfOiBUaGUgOmZpeHR1
cmU6YHRlc3RkaXIgZml4dHVyZSA8dGVzdGRpcj5gIHdvcmtzIHdpdGhpbiBkb2N0ZXN0cyBub3cu
CisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gYCM2Njk2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY2
OTY+YF86IEFkZCBsaXN0IG9mIGZpeHR1cmVzIHRvIHN0YXJ0IG9mIGZpeHR1cmUgY2hhcHRlci4K
KworCistIGAjNjc0MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy82NzQyPmBfOiBFeHBhbmQgZmlyc3Qgc2VudGVuY2Ugb24gZml4dHVyZXMgaW50byBhIHBhcmFn
cmFwaC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy0gYCM2NDA0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzY0MDQ+YF86IFJlbW92ZSB1c2FnZSBvZiBgYHBhcnNlcmBgIG1vZHVsZSwgZGVwcmVj
YXRlZCBpbiBQeXRob24gMy45LgorCisKK3B5dGVzdCA1LjMuNSAoMjAyMC0wMS0yOSkKKz09PT09
PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzY1MTcg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjUxNz5gXzogRml4
IHJlZ3Jlc3Npb24gaW4gcHl0ZXN0IDUuMy40IGNhdXNpbmcgYW4gSU5URVJOQUxFUlJPUiBkdWUg
dG8gYSB3cm9uZyBhc3NlcnRpb24uCisKKworcHl0ZXN0IDUuMy40ICgyMDIwLTAxLTIwKQorPT09
PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNjQ5
NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NDk2PmBfOiBS
ZXZlcnQgYCM2NDM2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzY0MzY+YF9fOiB1bmZvcnR1bmF0ZWx5IHRoaXMgY2hhbmdlIGhhcyBjYXVzZWQgYSBudW1iZXIg
b2YgcmVncmVzc2lvbnMgaW4gbWFueSBzdWl0ZXMsCisgIHNvIHRoZSB0ZWFtIGRlY2lkZWQgdG8g
cmV2ZXJ0IHRoaXMgY2hhbmdlIGFuZCBtYWtlIGEgbmV3IHJlbGVhc2Ugd2hpbGUgd2UgY29udGlu
dWUgdG8gbG9vayBmb3IgYSBzb2x1dGlvbi4KKworCitweXRlc3QgNS4zLjMgKDIwMjAtMDEtMTYp
Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0g
YCMyNzgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3ODA+
YF86IENhcHR1cmVkIG91dHB1dCBkdXJpbmcgdGVhcmRvd24gaXMgc2hvd24gd2l0aCBgYC1yUGBg
LgorCisKKy0gYCM1OTcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzU5NzE+YF86IEZpeCBhIGBgcHl0ZXN0LXhkaXN0YGAgY3Jhc2ggd2hlbiBkZWFsaW5nIHdp
dGggZXhjZXB0aW9ucyByYWlzZWQgaW4gc3VicHJvY2Vzc2VzIGNyZWF0ZWQgYnkgdGhlCisgIGBg
bXVsdGlwcm9jZXNzaW5nYGAgbW9kdWxlLgorCisKKy0gYCM2NDM2IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0MzY+YF86IDpjbGFzczpgRml4dHVyZURlZiA8
X3B5dGVzdC5maXh0dXJlcy5GaXh0dXJlRGVmPmAgb2JqZWN0cyBub3cgcHJvcGVybHkgcmVnaXN0
ZXIgdGhlaXIgZmluYWxpemVycyB3aXRoIGF1dG91c2UgYW5kCisgIHBhcmFtZXRlcml6ZWQgZml4
dHVyZXMgdGhhdCBleGVjdXRlIGJlZm9yZSB0aGVtIGluIHRoZSBmaXh0dXJlIHN0YWNrIHNvIHRo
ZXkgYXJlIHRvcm4KKyAgZG93biBhdCB0aGUgcmlnaHQgdGltZXMsIGFuZCBpbiB0aGUgcmlnaHQg
b3JkZXIuCisKKworLSBgIzY1MzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNjUzMj5gXzogRml4IHBhcnNpbmcgb2Ygb3V0Y29tZXMgY29udGFpbmluZyBtdWx0
aXBsZSBlcnJvcnMgd2l0aCBgYHRlc3RkaXJgYCByZXN1bHRzIChyZWdyZXNzaW9uIGluIDUuMy4w
KS4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy0gYCM2MzUwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzYzNTA+YF86IE9wdGltaXplZCBhdXRvbWF0aWMgcmVuYW1pbmcgb2YgdGVzdCBwYXJhbWV0
ZXIgSURzLgorCisKK3B5dGVzdCA1LjMuMiAoMjAxOS0xMi0xMykKKz09PT09PT09PT09PT09PT09
PT09PT09PT0KKworSW1wcm92ZW1lbnRzCistLS0tLS0tLS0tLS0KKworLSBgIzQ2MzkgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDYzOT5gXzogUmV2ZXJ0ICJB
IHdhcm5pbmcgaXMgbm93IGlzc3VlZCB3aGVuIGFzc2VydGlvbnMgYXJlIG1hZGUgZm9yIGBgTm9u
ZWBgIi4KKworICBUaGUgd2FybmluZyBwcm92ZWQgdG8gYmUgbGVzcyB1c2VmdWwgdGhhbiBpbml0
aWFsbHkgZXhwZWN0ZWQgYW5kIGhhZCBxdWl0ZSBhCisgIGZldyBmYWxzZSBwb3NpdGl2ZSBjYXNl
cy4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1NDMwIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0MzA+YF86IGp1bml0eG1sOiBMb2dzIGZv
ciBmYWlsZWQgdGVzdCBhcmUgbm93IHBhc3NlZCB0byBqdW5pdCByZXBvcnQgaW4gY2FzZSB0aGUg
dGVzdCBmYWlscyBkdXJpbmcgY2FsbCBwaGFzZS4KKworCistIGAjNjI5MCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MjkwPmBfOiBUaGUgc3VwcG9ydGluZyBm
aWxlcyBpbiB0aGUgYGAucHl0ZXN0X2NhY2hlYGAgZGlyZWN0b3J5IGFyZSBrZXB0IHdpdGggYGAt
LWNhY2hlLWNsZWFyYGAsIHdoaWNoIG9ubHkgY2xlYXJzIGNhY2hlZCB2YWx1ZXMgbm93LgorCisK
Ky0gYCM2MzAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYz
MDE+YF86IEZpeCBhc3NlcnRpb24gcmV3cml0aW5nIGZvciBlZ2ctYmFzZWQgZGlzdHJpYnV0aW9u
cyBhbmQgYGBlZGl0YWJsZWBgIGluc3RhbGxzIChgYHBpcCBpbnN0YWxsIC0tZWRpdGFibGVgYCku
CisKKworcHl0ZXN0IDUuMy4xICgyMDE5LTExLTI1KQorPT09PT09PT09PT09PT09PT09PT09PT09
PQorCitJbXByb3ZlbWVudHMKKy0tLS0tLS0tLS0tLQorCistIGAjNjIzMSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MjMxPmBfOiBJbXByb3ZlIGNoZWNrIGZv
ciBtaXNzcGVsbGluZyBvZiA6cmVmOmBweXRlc3QubWFyay5wYXJhbWV0cml6ZSByZWZgLgorCisK
Ky0gYCM2MjU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYy
NTc+YF86IEhhbmRsZSA6cHk6ZnVuYzpgcHl0ZXN0LmV4aXRgIGJlaW5nIHVzZWQgdmlhIDpweTpm
dW5jOmB+X3B5dGVzdC5ob29rc3BlYy5weXRlc3RfaW50ZXJuYWxlcnJvcmAsIGUuZy4gd2hlbiBx
dWl0dGluZyBwZGIgZnJvbSBwb3N0IG1vcnRlbS4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0t
CisKKy0gYCM1OTE0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzU5MTQ+YF86IHB5dGVzdGVyOiBmaXggOnB5OmZ1bmM6YH5fcHl0ZXN0LnB5dGVzdGVyLkxpbmVN
YXRjaGVyLm5vX2ZubWF0Y2hfbGluZWAgd2hlbiB1c2VkIGFmdGVyIHBvc2l0aXZlIG1hdGNoaW5n
LgorCisKKy0gYCM2MDgyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzYwODI+YF86IEZpeCBsaW5lIGRldGVjdGlvbiBmb3IgZG9jdGVzdCBzYW1wbGVzIGluc2lk
ZSA6cHk6Y2xhc3M6YHB5dGhvbjpwcm9wZXJ0eWAgZG9jc3RyaW5ncywgYXMgYSB3b3JrYXJvdW5k
IHRvIGBicG8tMTc0NDYgPGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTc0NDY+YF9fLgor
CisKKy0gYCM2MjU0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzYyNTQ+YF86IEZpeCBjb21wYXRpYmlsaXR5IHdpdGggcHl0ZXN0LXBhcmFsbGVsIChyZWdyZXNz
aW9uIGluIHB5dGVzdCA1LjMuMCkuCisKKworLSBgIzYyNTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjI1NT5gXzogQ2xlYXIgdGhlIDpweTpkYXRhOmBzeXMu
bGFzdF90cmFjZWJhY2tgLCA6cHk6ZGF0YTpgc3lzLmxhc3RfdHlwZWAKKyAgYW5kIDpweTpkYXRh
OmBzeXMubGFzdF92YWx1ZWAgYXR0cmlidXRlcyBieSBkZWxldGluZyB0aGVtIGluc3RlYWQKKyAg
b2Ygc2V0dGluZyB0aGVtIHRvIGBgTm9uZWBgLiBUaGlzIGJldHRlciBtYXRjaGVzIHRoZSBiZWhh
dmlvdXIgb2YKKyAgdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5LgorCisKK3B5dGVzdCA1LjMu
MCAoMjAxOS0xMS0xOSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGVwcmVjYXRpb25z
CistLS0tLS0tLS0tLS0KKworLSBgIzYxNzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjE3OT5gXzogVGhlIGRlZmF1bHQgdmFsdWUgb2YgOmNvbmZ2YWw6YGp1
bml0X2ZhbWlseWAgb3B0aW9uIHdpbGwgY2hhbmdlIHRvIGBgInh1bml0MiJgYCBpbiBweXRlc3Qg
Ni4wLCBnaXZlbgorICB0aGF0IHRoaXMgaXMgdGhlIHZlcnNpb24gc3VwcG9ydGVkIGJ5IGRlZmF1
bHQgaW4gbW9kZXJuIHRvb2xzIHRoYXQgbWFuaXB1bGF0ZSB0aGlzIHR5cGUgb2YgZmlsZS4KKwor
ICBJbiBvcmRlciB0byBzbW9vdGggdGhlIHRyYW5zaXRpb24sIHB5dGVzdCB3aWxsIGlzc3VlIGEg
d2FybmluZyBpbiBjYXNlIHRoZSBgYC0tanVuaXR4bWxgYCBvcHRpb24KKyAgaXMgZ2l2ZW4gaW4g
dGhlIGNvbW1hbmQgbGluZSBidXQgOmNvbmZ2YWw6YGp1bml0X2ZhbWlseWAgaXMgbm90IGV4cGxp
Y2l0bHkgY29uZmlndXJlZCBpbiBgYHB5dGVzdC5pbmlgYC4KKworICBGb3IgbW9yZSBpbmZvcm1h
dGlvbiwgYHNlZSB0aGUgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2Rl
cHJlY2F0aW9ucy5odG1sI2p1bml0LWZhbWlseS1kZWZhdWx0LXZhbHVlLWNoYW5nZS10by14dW5p
dDI+YF9fLgorCisKKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCM0NDg4IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0ODg+YF86IFRoZSBweXRlc3QgdGVh
bSBoYXMgY3JlYXRlZCB0aGUgYHB5dGVzdC1yZXBvcnRsb2cgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC1yZXBvcnRsb2c+YF9fCisgIHBsdWdpbiwgd2hpY2ggcHJvdmlkZXMg
YSBuZXcgYGAtLXJlcG9ydC1sb2c9RklMRWBgIG9wdGlvbiB0aGF0IHdyaXRlcyAqcmVwb3J0IGxv
Z3MqIGludG8gYSBmaWxlIGFzIHRoZSB0ZXN0IHNlc3Npb24gZXhlY3V0ZXMuCisKKyAgRWFjaCBs
aW5lIG9mIHRoZSByZXBvcnQgbG9nIGNvbnRhaW5zIGEgc2VsZiBjb250YWluZWQgSlNPTiBvYmpl
Y3QgY29ycmVzcG9uZGluZyB0byBhIHRlc3RpbmcgZXZlbnQsCisgIHN1Y2ggYXMgYSBjb2xsZWN0
aW9uIG9yIGEgdGVzdCByZXN1bHQgcmVwb3J0LiBUaGUgZmlsZSBpcyBndWFyYW50ZWVkIHRvIGJl
IGZsdXNoZWQgYWZ0ZXIgd3JpdGluZworICBlYWNoIGxpbmUsIHNvIHN5c3RlbXMgY2FuIHJlYWQg
YW5kIHByb2Nlc3MgZXZlbnRzIGluIHJlYWwtdGltZS4KKworICBUaGUgcGx1Z2luIGlzIG1lYW50
IHRvIHJlcGxhY2UgdGhlIGBgLS1yZXN1bHRsb2dgYCBvcHRpb24sIHdoaWNoIGlzIGRlcHJlY2F0
ZWQgYW5kIG1lYW50IHRvIGJlIHJlbW92ZWQKKyAgaW4gYSBmdXR1cmUgcmVsZWFzZS4gSWYgeW91
IHVzZSBgYC0tcmVzdWx0bG9nYGAsIHBsZWFzZSB0cnkgb3V0IGBgcHl0ZXN0LXJlcG9ydGxvZ2Bg
IGFuZAorICBwcm92aWRlIGZlZWRiYWNrLgorCisKKy0gYCM0NzMwIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ3MzA+YF86IFdoZW4gOnB5OmRhdGE6YHN5cy5w
eWNhY2hlX3ByZWZpeGAgKFB5dGhvbiAzLjgrKSBpcyBzZXQsIGl0IHdpbGwgYmUgdXNlZCBieSBw
eXRlc3QgdG8gY2FjaGUgdGVzdCBmaWxlcyBjaGFuZ2VkIGJ5IHRoZSBhc3NlcnRpb24gcmV3cml0
aW5nIG1lY2hhbmlzbS4KKworICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBiZW5lZml0IG9mIGNh
Y2hlZCBgYC5weWNgYCBmaWxlcyBldmVuIG9uIGZpbGUgc3lzdGVtcyB3aXRob3V0IHBlcm1pc3Np
b25zLgorCisKKy0gYCM1NTE1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzU1MTU+YF86IEFsbG93IHNlbGVjdGl2ZSBhdXRvLWluZGVudGF0aW9uIG9mIG11bHRp
bGluZSBsb2cgbWVzc2FnZXMuCisKKyAgQWRkcyBjb21tYW5kIGxpbmUgb3B0aW9uIGBgLS1sb2ct
YXV0by1pbmRlbnRgYCwgY29uZmlnIG9wdGlvbgorICA6Y29uZnZhbDpgbG9nX2F1dG9faW5kZW50
YCBhbmQgc3VwcG9ydCBmb3IgcGVyLWVudHJ5IGNvbmZpZ3VyYXRpb24gb2YKKyAgaW5kZW50YXRp
b24gYmVoYXZpb3Igb24gY2FsbHMgdG8gOnB5OmZ1bmM6YHB5dGhvbjpsb2dnaW5nLmxvZygpYC4K
KworICBBbHRlcnMgdGhlIGRlZmF1bHQgZm9yIGF1dG8taW5kZW50aW9uIGZyb20gYGAib24iYGAg
dG8gYGAib2ZmImBgLiBUaGlzCisgIHJlc3RvcmVzIHRoZSBvbGRlciBiZWhhdmlvciB0aGF0IGV4
aXN0ZWQgcHJpb3IgdG8gdjQuNi4wLiBUaGlzCisgIHJldmVyc2lvbiB0byBlYXJsaWVyIGJlaGF2
aW9yIHdhcyBkb25lIGJlY2F1c2UgaXQgaXMgYmV0dGVyIHRvCisgIGFjdGl2YXRlIG5ldyBmZWF0
dXJlcyB0aGF0IG1heSBsZWFkIHRvIGJyb2tlbiB0ZXN0cyBleHBsaWNpdGx5CisgIHJhdGhlciB0
aGFuIGltcGxpY2l0bHkuCisKKworLSBgIzU5MTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTkxND5gXzogOmZpeHR1cmU6YHRlc3RkaXJgIGxlYXJuZWQgdHdv
IG5ldyBmdW5jdGlvbnMsIDpweTpmdW5jOmB+X3B5dGVzdC5weXRlc3Rlci5MaW5lTWF0Y2hlci5u
b19mbm1hdGNoX2xpbmVgIGFuZAorICA6cHk6ZnVuYzpgfl9weXRlc3QucHl0ZXN0ZXIuTGluZU1h
dGNoZXIubm9fcmVfbWF0Y2hfbGluZWAuCisKKyAgVGhlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBl
bnN1cmUgdGhlIGNhcHR1cmVkIHRleHQgKmRvZXMgbm90KiBtYXRjaCB0aGUgZ2l2ZW4KKyAgcGF0
dGVybi4KKworICBUaGUgcHJldmlvdXMgaWRpb20gd2FzIHRvIHVzZSA6cHk6ZnVuYzpgcHl0aG9u
OnJlLm1hdGNoYDoKKworICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgIGFzc2VydCByZS5tYXRjaChwYXQsIHJlc3VsdC5z
dGRvdXQuc3RyKCkpIGlzIE5vbmUKKworICBPciB0aGUgYGBpbmBgIG9wZXJhdG9yOgorCisgIC4u
IGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQorICAgICAgYXNzZXJ0IHRleHQgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorCisgIEJ1dCB0aGUg
bmV3IGZ1bmN0aW9ucyBwcm9kdWNlIGJlc3Qgb3V0cHV0IG9uIGZhaWx1cmUuCisKKworLSBgIzYw
NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA1Nz5gXzog
QWRkZWQgdG9sZXJhbmNlcyB0byBjb21wbGV4IHZhbHVlcyB3aGVuIHByaW50aW5nIGBgcHl0ZXN0
LmFwcHJveGBgLgorCisgIEZvciBleGFtcGxlLCBgYHJlcHIocHl0ZXN0LmFwcHJveCgzKzRqKSlg
YCByZXR1cm5zIGBgKDMrNGopIMKxIDVlLTA2IOKIoCDCsTE4MMKwYGAuIFRoaXMgaXMgcG9sYXIg
bm90YXRpb24gaW5kaWNhdGluZyBhIGNpcmNsZSBhcm91bmQgdGhlIGV4cGVjdGVkIHZhbHVlLCB3
aXRoIGEgcmFkaXVzIG9mIDVlLTA2LiBGb3IgYGBhcHByb3hgYCBjb21wYXJpc29ucyB0byByZXR1
cm4gYGBUcnVlYGAsIHRoZSBhY3R1YWwgdmFsdWUgc2hvdWxkIGZhbGwgd2l0aGluIHRoaXMgY2ly
Y2xlLgorCisKKy0gYCM2MDYxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzYwNjE+YF86IEFkZGVkIHRoZSBwbHVnaW5tYW5hZ2VyIGFzIGFuIGFyZ3VtZW50IHRv
IGBgcHl0ZXN0X2FkZG9wdGlvbmBgCisgIHNvIHRoYXQgaG9va3MgY2FuIGJlIGludm9rZWQgd2hl
biBzZXR0aW5nIHVwIGNvbW1hbmQgbGluZSBvcHRpb25zLiBUaGlzIGlzCisgIHVzZWZ1bCBmb3Ig
aGF2aW5nIG9uZSBwbHVnaW4gY29tbXVuaWNhdGUgdGhpbmdzIHRvIGFub3RoZXIgcGx1Z2luLAor
ICBzdWNoIGFzIGRlZmF1bHQgdmFsdWVzIG9yIHdoaWNoIHNldCBvZiBjb21tYW5kIGxpbmUgb3B0
aW9ucyB0byBhZGQuCisKKworCitJbXByb3ZlbWVudHMKKy0tLS0tLS0tLS0tLQorCistIGAjNTA2
MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDYxPmBfOiBV
c2UgbXVsdGlwbGUgY29sb3JzIHdpdGggdGVybWluYWwgc3VtbWFyeSBzdGF0aXN0aWNzLgorCisK
Ky0gYCM1NjMwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2
MzA+YF86IFF1aXR0aW5nIGZyb20gZGVidWdnZXJzIGlzIG5vdyBwcm9wZXJseSBoYW5kbGVkIGlu
IGBgZG9jdGVzdGBgIGl0ZW1zLgorCisKKy0gYCM1OTI0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5MjQ+YF86IEltcHJvdmVkIHZlcmJvc2UgZGlmZiBvdXRw
dXQgd2l0aCBzZXF1ZW5jZXMuCisKKyAgQmVmb3JlOgorCisgIDo6CisKKyAgICAgIEUgICBBc3Nl
cnRpb25FcnJvcjogYXNzZXJ0IFsndmVyc2lvbicsICcuLi52ZXJzaW9uX2luZm8nXSA9PSBbJ3Zl
cnNpb24nLCAnLi4udmVyc2lvbicsIC4uLl0KKyAgICAgIEUgICAgIFJpZ2h0IGNvbnRhaW5zIDMg
bW9yZSBpdGVtcywgZmlyc3QgZXh0cmEgaXRlbTogJyAnCisgICAgICBFICAgICBGdWxsIGRpZmY6
CisgICAgICBFICAgICAtIFsndmVyc2lvbicsICd2ZXJzaW9uX2luZm8nLCAnc3lzLnZlcnNpb24n
LCAnc3lzLnZlcnNpb25faW5mbyddCisgICAgICBFICAgICArIFsndmVyc2lvbicsCisgICAgICBF
ICAgICArICAndmVyc2lvbl9pbmZvJywKKyAgICAgIEUgICAgICsgICdzeXMudmVyc2lvbicsCisg
ICAgICBFICAgICArICAnc3lzLnZlcnNpb25faW5mbycsCisgICAgICBFICAgICArICAnICcsCisg
ICAgICBFICAgICArICAnc3lzLnZlcnNpb24nLAorICAgICAgRSAgICAgKyAgJ3N5cy52ZXJzaW9u
X2luZm8nXQorCisgIEFmdGVyOgorCisgIDo6CisKKyAgICAgIEUgICBBc3NlcnRpb25FcnJvcjog
YXNzZXJ0IFsndmVyc2lvbicsICcuLi52ZXJzaW9uX2luZm8nXSA9PSBbJ3ZlcnNpb24nLCAnLi4u
dmVyc2lvbicsIC4uLl0KKyAgICAgIEUgICAgIFJpZ2h0IGNvbnRhaW5zIDMgbW9yZSBpdGVtcywg
Zmlyc3QgZXh0cmEgaXRlbTogJyAnCisgICAgICBFICAgICBGdWxsIGRpZmY6CisgICAgICBFICAg
ICAgIFsKKyAgICAgIEUgICAgICAgICd2ZXJzaW9uJywKKyAgICAgIEUgICAgICAgICd2ZXJzaW9u
X2luZm8nLAorICAgICAgRSAgICAgICAgJ3N5cy52ZXJzaW9uJywKKyAgICAgIEUgICAgICAgICdz
eXMudmVyc2lvbl9pbmZvJywKKyAgICAgIEUgICAgICsgICcgJywKKyAgICAgIEUgICAgICsgICdz
eXMudmVyc2lvbicsCisgICAgICBFICAgICArICAnc3lzLnZlcnNpb25faW5mbycsCisgICAgICBF
ICAgICAgIF0KKworCistIGAjNTkzNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81OTM0PmBfOiBgYHJlcHJgYCBvZiBgYEV4Y2VwdGlvbkluZm9gYCBvYmplY3Rz
IGhhcyBiZWVuIGltcHJvdmVkIHRvIGhvbm9yIHRoZSBgYF9fcmVwcl9fYGAgbWV0aG9kIG9mIHRo
ZSB1bmRlcmx5aW5nIGV4Y2VwdGlvbi4KKworLSBgIzU5MzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTkzNj5gXzogRGlzcGxheSB1bnRydW5jYXRlZCBhc3Nl
cnRpb24gbWVzc2FnZSB3aXRoIGBgLXZ2YGAuCisKKworLSBgIzU5OTAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTk5MD5gXzogRml4ZWQgcGx1cmFsaXR5IG1p
c21hdGNoIGluIHRlc3Qgc3VtbWFyeSAoZS5nLiBkaXNwbGF5ICIxIGVycm9yIiBpbnN0ZWFkIG9m
ICIxIGVycm9ycyIpLgorCisKKy0gYCM2MDA4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzYwMDg+YF86IGBgQ29uZmlnLkludm9jYXRpb25QYXJhbXMuYXJnc2Bg
IGlzIG5vdyBhbHdheXMgYSBgYHR1cGxlYGAgdG8gYmV0dGVyIGNvbnZleSB0aGF0IGl0IHNob3Vs
ZCBiZQorICBpbW11dGFibGUgYW5kIGF2b2lkIGFjY2lkZW50YWwgbW9kaWZpY2F0aW9ucy4KKwor
CistIGAjNjAyMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82
MDIzPmBfOiBgYHB5dGVzdC5tYWluYGAgcmV0dXJucyBhIGBgcHl0ZXN0LkV4aXRDb2RlYGAgaW5z
dGFuY2Ugbm93LCBleGNlcHQgZm9yIHdoZW4gY3VzdG9tIGV4aXQgY29kZXMgYXJlIHVzZWQgKHdo
ZXJlIGl0IHJldHVybnMgYGBpbnRgYCB0aGVuIHN0aWxsKS4KKworCistIGAjNjAyNiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MDI2PmBfOiBBbGlnbiBwcmVm
aXhlcyBpbiBvdXRwdXQgb2YgcHl0ZXN0ZXIncyBgYExpbmVNYXRjaGVyYGAuCisKKworLSBgIzYw
NTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA1OT5gXzog
Q29sbGVjdGlvbiBlcnJvcnMgYXJlIHJlcG9ydGVkIGFzIGVycm9ycyAoYW5kIG5vdCBmYWlsdXJl
cyBsaWtlIGJlZm9yZSkgaW4gdGhlIHRlcm1pbmFsJ3Mgc2hvcnQgdGVzdCBzdW1tYXJ5LgorCisK
Ky0gYCM2MDY5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYw
Njk+YF86IGBgcHl0ZXN0ZXIuc3Bhd25gYCBkb2VzIG5vdCBza2lwL3hmYWlsIHRlc3RzIG9uIEZy
ZWVCU0QgYW55bW9yZSB1bmNvbmRpdGlvbmFsbHkuCisKKworLSBgIzYwOTcgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA5Nz5gXzogVGhlICJbLi4uJV0iIGlu
ZGljYXRvciBpbiB0aGUgdGVzdCBzdW1tYXJ5IGlzIG5vdyBjb2xvcmVkIGFjY29yZGluZyB0byB0
aGUgZmluYWwgKG5ldykgbXVsdGktY29sb3JlZCBsaW5lJ3MgbWFpbiBjb2xvci4KKworCistIGAj
NjExNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MTE2PmBf
OiBBZGRlZCBgYC0tY29gYCBhcyBhIHN5bm9ueW0gdG8gYGAtLWNvbGxlY3Qtb25seWBgLgorCisK
Ky0gYCM2MTQ4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYx
NDg+YF86IGBgYXRvbWljd3JpdGVzYGAgaXMgbm93IG9ubHkgdXNlZCBvbiBXaW5kb3dzLCBmaXhp
bmcgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggYXNzZXJ0aW9uIHJld3JpdGluZyBvbiBV
bml4LgorCisKKy0gYCM2MTUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzYxNTI+YF86IE5vdyBwYXJhbWV0cml6YXRpb24gd2lsbCB1c2UgdGhlIGBgX19uYW1l
X19gYCBhdHRyaWJ1dGUgb2YgYW55IG9iamVjdCBmb3IgdGhlIGlkLCBpZiBwcmVzZW50LiBQcmV2
aW91c2x5IGl0IHdvdWxkIG9ubHkgdXNlIGBgX19uYW1lX19gYCBmb3IgZnVuY3Rpb25zIGFuZCBj
bGFzc2VzLgorCisKKy0gYCM2MTc2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzYxNzY+YF86IEltcHJvdmVkIGZhaWx1cmUgcmVwb3J0aW5nIHdpdGggcHl0ZXN0
ZXIncyBgYEhvb2tyZWNvcmRlci5hc3NlcnRvdXRjb21lYGAuCisKKworLSBgIzYxODEgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjE4MT5gXzogVGhlIHJlYXNv
biBmb3IgYSBzdG9wcGVkIHNlc3Npb24sIGUuZy4gd2l0aCBgYC0tbWF4ZmFpbGBgIC8gYGAteGBg
LCBub3cgZ2V0cyByZXBvcnRlZCBpbiB0aGUgdGVzdCBzdW1tYXJ5LgorCisKKy0gYCM2MjA2IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYyMDY+YF86IEltcHJv
dmVkIGBgY2FjaGUuc2V0YGAgcm9idXN0bmVzcyBhbmQgcGVyZm9ybWFuY2UuCisKKworCitCdWcg
Rml4ZXMKKy0tLS0tLS0tLQorCistIGAjMjA0OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yMDQ5PmBfOiBGaXhlZCBgYC0tc2V0dXAtcGxhbmBgIHNob3dpbmcg
aW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBhYm91dCBmaXh0dXJlIGxpZmV0aW1lcy4KKworCistIGAj
MjU0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTQ4PmBf
OiBGaXhlZCBsaW5lIG9mZnNldCBtaXNtYXRjaCBvZiBza2lwcGVkIHRlc3RzIGluIHRlcm1pbmFs
IHN1bW1hcnkuCisKKworLSBgIzYwMzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNjAzOT5gXzogVGhlIGBgUHl0ZXN0RG9jdGVzdFJ1bm5lcmBgIGlzIG5vdyBw
cm9wZXJseSBpbnZhbGlkYXRlZCB3aGVuIHVuY29uZmlndXJpbmcgdGhlIGRvY3Rlc3QgcGx1Z2lu
LgorCisgIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gdXNlZCB3aXRoIGBgcHl0ZXN0ZXJgYCdzIGBg
cnVucHl0ZXN0X2lucHJvY2Vzc2BgLgorCisKKy0gYCM2MDQ3IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYwNDc+YF86IEJhc2VFeGNlcHRpb25zIGFyZSBub3cg
aGFuZGxlZCBpbiBgYHNhZmVyZXByYGAsIHdoaWNoIGluY2x1ZGVzIGBgcHl0ZXN0LmZhaWwuRXhj
ZXB0aW9uYGAgZXRjLgorCisKKy0gYCM2MDc0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzYwNzQ+YF86IHB5dGVzdGVyOiBmaXhlZCBvcmRlciBvZiBhcmd1bWVu
dHMgaW4gYGBybV9yZmBgIHdhcm5pbmcgd2hlbiBjbGVhbmluZyB1cCB0ZW1wb3JhcnkgZGlyZWN0
b3JpZXMsIGFuZCBkbyBub3QgZW1pdCB3YXJuaW5ncyBmb3IgZXJyb3JzIHdpdGggYGBvcy5vcGVu
YGAuCisKKworLSBgIzYxODkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNjE4OT5gXzogRml4ZWQgcmVzdWx0IG9mIGBgZ2V0bW9kcGF0aGBgIG1ldGhvZC4KKwor
CisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gYCM0OTAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5
MDE+YF86IGBgUnVuUmVzdWx0YGAgZnJvbSBgYHB5dGVzdGVyYGAgbm93IGRpc3BsYXlzIHRoZSBt
bmVtb25pYyBvZiB0aGUgYGByZXRgYCBhdHRyaWJ1dGUgd2hlbiBpdCBpcyBhCisgIHZhbGlkIGBg
cHl0ZXN0LkV4aXRDb2RlYGAgdmFsdWUuCisKKworcHl0ZXN0IDUuMi40ICgyMDE5LTExLTE1KQor
PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAj
NjE5NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MTk0PmBf
OiBGaXggaW5jb3JyZWN0IGRpc2NvdmVyeSBvZiBub24tdGVzdCBgYF9faW5pdF9fLnB5YGAgZmls
ZXMuCisKKworLSBgIzYxOTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNjE5Nz5gXzogUmV2ZXJ0ICJUaGUgZmlyc3QgdGVzdCBpbiBhIHBhY2thZ2UgKGBgX19p
bml0X18ucHlgYCkgbWFya2VkIHdpdGggYGBAcHl0ZXN0Lm1hcmsuc2tpcGBgIGlzIG5vdyBjb3Jy
ZWN0bHkgc2tpcHBlZC4iLgorCisKK3B5dGVzdCA1LjIuMyAoMjAxOS0xMS0xNCkKKz09PT09PT09
PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzU4MzAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTgzMD5gXzogVGhlIGZp
cnN0IHRlc3QgaW4gYSBwYWNrYWdlIChgYF9faW5pdF9fLnB5YGApIG1hcmtlZCB3aXRoIGBgQHB5
dGVzdC5tYXJrLnNraXBgYCBpcyBub3cgY29ycmVjdGx5IHNraXBwZWQuCisKKworLSBgIzYwOTkg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA5OT5gXzogRml4
IGBgLS10cmFjZWBgIHdoZW4gdXNlZCB3aXRoIHBhcmFtZXRyaXplZCBmdW5jdGlvbnMuCisKKwor
LSBgIzYxODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjE4
Mz5gXzogVXNpbmcgYGByZXF1ZXN0YGAgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBgYEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZWBgIG5vdyBwcm9kdWNlcyBhIG1vcmUKKyAgdXNlci1mcmllbmRseSBl
cnJvci4KKworCitweXRlc3QgNS4yLjIgKDIwMTktMTAtMjQpCis9PT09PT09PT09PT09PT09PT09
PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1MjA2IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUyMDY+YF86IEZpeCBgYC0tbmZgYCB0byBu
b3QgZm9yZ2V0IGFib3V0IGtub3duIG5vZGVpZHMgd2l0aCBwYXJ0aWFsIHRlc3Qgc2VsZWN0aW9u
LgorCisKKy0gYCM1OTA2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzU5MDY+YF86IEZpeCBjcmFzaCB3aXRoIGBgS2V5Ym9hcmRJbnRlcnJ1cHRgYCBkdXJpbmcg
YGAtLXNldHVwLXNob3dgYC4KKworCistIGAjNTk0NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTQ2PmBfOiBGaXhlZCBpc3N1ZSB3aGVuIHBhcmFtZXRyaXpp
bmcgZml4dHVyZXMgd2l0aCBudW1weSBhcnJheXMgKGFuZCBwb3NzaWJseSBvdGhlciBzZXF1ZW5j
ZS1saWtlIHR5cGVzKS4KKworCistIGAjNjA0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy82MDQ0PmBfOiBQcm9wZXJseSBpZ25vcmUgYGBGaWxlTm90Rm91bmRF
cnJvcmBgIGV4Y2VwdGlvbnMgd2hlbiB0cnlpbmcgdG8gcmVtb3ZlIG9sZCB0ZW1wb3JhcnkgZGly
ZWN0b3JpZXMsCisgIGZvciBpbnN0YW5jZSB3aGVuIG11bHRpcGxlIHByb2Nlc3NlcyB0cnkgdG8g
cmVtb3ZlIHRoZSBzYW1lIGRpcmVjdG9yeSAoY29tbW9uIHdpdGggYGBweXRlc3QteGRpc3RgYAor
ICBmb3IgZXhhbXBsZSkuCisKKworcHl0ZXN0IDUuMi4xICgyMDE5LTEwLTA2KQorPT09PT09PT09
PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTkwMiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTAyPmBfOiBGaXggd2Fy
bmluZ3MgYWJvdXQgZGVwcmVjYXRlZCBgYGNtcGBgIGF0dHJpYnV0ZSBpbiBgYGF0dHJzPj0xOS4y
YGAuCisKKworcHl0ZXN0IDUuMi4wICgyMDE5LTA5LTI4KQorPT09PT09PT09PT09PT09PT09PT09
PT09PQorCitEZXByZWNhdGlvbnMKKy0tLS0tLS0tLS0tLQorCistIGAjMTY4MiA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjgyPmBfOiBQYXNzaW5nIGFyZ3Vt
ZW50cyB0byBweXRlc3QuZml4dHVyZSgpIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzIGlzIGRlcHJl
Y2F0ZWQgLSBwYXNzIHRoZW0KKyAgYXMgYSBrZXl3b3JkIGFyZ3VtZW50IGluc3RlYWQuCisKKwor
CitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzE2ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTY4Mj5gXzogVGhlIGBgc2NvcGVgYCBwYXJhbWV0ZXIgb2Yg
YGBAcHl0ZXN0LmZpeHR1cmVgYCBjYW4gbm93IGJlIGEgY2FsbGFibGUgdGhhdCByZWNlaXZlcwor
ICB0aGUgZml4dHVyZSBuYW1lIGFuZCB0aGUgYGBjb25maWdgYCBvYmplY3QgYXMga2V5d29yZC1v
bmx5IHBhcmFtZXRlcnMuCisgIFNlZSBgdGhlIGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9maXh0dXJlLmh0bWwjZHluYW1pYy1zY29wZT5gX18gZm9yIG1vcmUgaW5mb3Jt
YXRpb24uCisKKworLSBgIzU3NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNTc2ND5gXzogTmV3IGJlaGF2aW9yIG9mIHRoZSBgYC0tcGFzdGViaW5gYCBvcHRp
b246IGZhaWx1cmVzIHRvIGNvbm5lY3QgdG8gdGhlIHBhc3RlYmluIHNlcnZlciBhcmUgcmVwb3J0
ZWQsIHdpdGhvdXQgZmFpbGluZyB0aGUgcHl0ZXN0IHJ1bgorCisKKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzU4MDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNTgwNj5gXzogRml4ICJsZXhlciIgYmVpbmcgdXNlZCB3aGVuIHVwbG9hZGluZyB0byBi
cGFzdGUubmV0IGZyb20gYGAtLXBhc3RlYmluYGAgdG8gInRleHQiLgorCisKKy0gYCM1ODg0IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU4ODQ+YF86IEZpeCBg
YC0tc2V0dXAtb25seWBgIGFuZCBgYC0tc2V0dXAtc2hvd2BgIGZvciBjdXN0b20gcHl0ZXN0IGl0
ZW1zLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworLSBgIzUwNTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNTA1Nj5gXzogVGhlIEhlbHBGb3JtYXR0ZXIgdXNlcyBgYHB5LmlvLmdldF90ZXJtaW5h
bF93aWR0aGBgIGZvciBiZXR0ZXIgd2lkdGggZGV0ZWN0aW9uLgorCisKK3B5dGVzdCA1LjEuMyAo
MjAxOS0wOS0xOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzU4MDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNTgwNz5gXzogRml4IHB5cHkzLjYgKG5pZ2h0bHkpIG9uIHdpbmRvd3MuCisKKworLSBg
IzU4MTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTgxMT5g
XzogSGFuZGxlIGBgLS1mdWxsdHJhY2VgYCBjb3JyZWN0bHkgd2l0aCBgYHB5dGVzdC5yYWlzZXNg
YC4KKworCistIGAjNTgxOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81ODE5PmBfOiBXaW5kb3dzOiBGaXggcmVncmVzc2lvbiB3aXRoIGNvbmZ0ZXN0IHdob3Nl
IHF1YWxpZmllZCBuYW1lIGNvbnRhaW5zIHVwcGVyY2FzZQorICBjaGFyYWN0ZXJzIChpbnRyb2R1
Y2VkIGJ5ICM1NzkyKS4KKworCitweXRlc3QgNS4xLjIgKDIwMTktMDgtMzApCis9PT09PT09PT09
PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMyMjcwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyNzA+YF86IEZpeGVkIGBg
c2VsZmBgIHJlZmVyZW5jZSBpbiBmdW5jdGlvbi1zY29wZWQgZml4dHVyZXMgZGVmaW5lZCBwbHVn
aW4gY2xhc3NlczogcHJldmlvdXNseSBgYHNlbGZgYAorICB3b3VsZCBiZSBhIHJlZmVyZW5jZSB0
byBhICp0ZXN0KiBjbGFzcywgbm90IHRoZSAqcGx1Z2luKiBjbGFzcy4KKworCistIGAjNTcwIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU3MD5gXzogRml4ZWQg
bG9uZyBzdGFuZGluZyBpc3N1ZSB3aGVyZSBmaXh0dXJlIHNjb3BlIHdhcyBub3QgcmVzcGVjdGVk
IHdoZW4gaW5kaXJlY3QgZml4dHVyZXMgd2VyZSB1c2VkIGR1cmluZworICBwYXJhbWV0cml6YXRp
b24uCisKKworLSBgIzU3ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNTc4Mj5gXzogRml4IGRlY29kaW5nIGVycm9yIHdoZW4gcHJpbnRpbmcgYW4gZXJyb3Ig
cmVzcG9uc2UgZnJvbSBgYC0tcGFzdGViaW5gYC4KKworCistIGAjNTc4NiA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Nzg2PmBfOiBDaGFpbmVkIGV4Y2VwdGlv
bnMgaW4gdGVzdCBhbmQgY29sbGVjdGlvbiByZXBvcnRzIGFyZSBub3cgY29ycmVjdGx5IHNlcmlh
bGl6ZWQsIGFsbG93aW5nIHBsdWdpbnMgbGlrZQorICBgYHB5dGVzdC14ZGlzdGBgIHRvIGRpc3Bs
YXkgdGhlbSBwcm9wZXJseS4KKworCistIGAjNTc5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy81NzkyPmBfOiBXaW5kb3dzOiBGaXggZXJyb3IgdGhhdCBvY2N1
cnMgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4gbG9hZGluZworICBgYGNvbmZ0ZXN0LnB5
YGAgZnJvbSBhIHdvcmtpbmcgZGlyZWN0b3J5IHRoYXQgaGFzIGNhc2luZyBvdGhlciB0aGFuIHRo
ZSBvbmUgc3RvcmVkCisgIGluIHRoZSBmaWxlc3lzdGVtIChlLmcuLCBgYGM6XHRlc3RgYCBpbnN0
ZWFkIG9mIGBgQzpcdGVzdGBgKS4KKworCitweXRlc3QgNS4xLjEgKDIwMTktMDgtMjApCis9PT09
PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1NzUx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU3NTE+YF86IEZp
eGVkIGBgVHlwZUVycm9yYGAgd2hlbiBpbXBvcnRpbmcgcHl0ZXN0IG9uIFB5dGhvbiAzLjUuMCBh
bmQgMy41LjEuCisKKworcHl0ZXN0IDUuMS4wICgyMDE5LTA4LTE1KQorPT09PT09PT09PT09PT09
PT09PT09PT09PQorCitSZW1vdmFscworLS0tLS0tLS0KKworLSBgIzUxODAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTE4MD5gXzogQXMgcGVyIG91ciBwb2xp
Y3ksIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIDQu
WCBzZXJpZXMgYW5kIGFyZSBub3cKKyAgcmVtb3ZlZDoKKworICAqIGBgUmVxdWVzdC5nZXRmdW5j
YXJndmFsdWVgYDogdXNlIGBgUmVxdWVzdC5nZXRmaXh0dXJldmFsdWVgYCBpbnN0ZWFkLgorCisg
ICogYGBweXRlc3QucmFpc2VzYGAgYW5kIGBgcHl0ZXN0Lndhcm5zYGAgbm8gbG9uZ2VyIHN1cHBv
cnQgc3RyaW5ncyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LgorCisgICogYGBtZXNzYWdlYGAgcGFy
YW1ldGVyIG9mIGBgcHl0ZXN0LnJhaXNlc2BgLgorCisgICogYGBweXRlc3QucmFpc2VzYGAsIGBg
cHl0ZXN0Lndhcm5zYGAgYW5kIGBgUGFyYW1ldGVyU2V0LnBhcmFtYGAgbm93IHVzZSBuYXRpdmUg
a2V5d29yZC1vbmx5CisgICAgc3ludGF4LiBUaGlzIG1pZ2h0IGNoYW5nZSB0aGUgZXhjZXB0aW9u
IG1lc3NhZ2UgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucywgYnV0IHRoZXkgc3RpbGwgcmFpc2UKKyAg
ICBgYFR5cGVFcnJvcmBgIG9uIHVua25vd24ga2V5d29yZCBhcmd1bWVudHMgYXMgYmVmb3JlLgor
CisgICogYGBweXRlc3QuY29uZmlnYGAgZ2xvYmFsIHZhcmlhYmxlLgorCisgICogYGB0bXBkaXJf
ZmFjdG9yeS5lbnN1cmV0ZW1wYGAgbWV0aG9kLgorCisgICogYGBweXRlc3RfbG9nd2FybmluZ2Bg
IGhvb2suCisKKyAgKiBgYFJlbW92ZWRJblB5dGVzdDRXYXJuaW5nYGAgd2FybmluZyB0eXBlLgor
CisgICogYGByZXF1ZXN0YGAgaXMgbm93IGEgcmVzZXJ2ZWQgbmFtZSBmb3IgZml4dHVyZXMuCisK
KworICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBjb25zdWx0CisgIGBEZXByZWNhdGlvbnMgYW5kIFJl
bW92YWxzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0
bWw+YF9fIGluIHRoZSBkb2NzLgorCisKKy0gYCM1NTY1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1NjU+YF86IFJlbW92ZWQgdW51c2VkIHN1cHBvcnQgY29k
ZSBmb3IgYHVuaXR0ZXN0MiA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3VuaXR0ZXN0Mi8+YF9f
LgorCisgIFRoZSBgYHVuaXR0ZXN0MmBgIGJhY2twb3J0IG1vZHVsZSBpcyBubyBsb25nZXIKKyAg
bmVjZXNzYXJ5IHNpbmNlIFB5dGhvbiAzLjMrLCBhbmQgdGhlIHNtYWxsIGFtb3VudCBvZiBjb2Rl
IGluIHB5dGVzdCB0byBzdXBwb3J0IGl0IGFsc28gZG9lc24ndCBzZWVtCisgIHRvIGJlIHVzZWQ6
IGFmdGVyIHJlbW92ZWQsIGFsbCB0ZXN0cyBzdGlsbCBwYXNzIHVuY2hhbmdlZC4KKworICBBbHRo
b3VnaCBvdXIgcG9saWN5IGlzIHRvIGludHJvZHVjZSBhIGRlcHJlY2F0aW9uIHBlcmlvZCBiZWZv
cmUgcmVtb3ZpbmcgYW55IGZlYXR1cmVzIG9yIHN1cHBvcnQKKyAgZm9yIHRoaXJkIHBhcnR5IGxp
YnJhcmllcywgYmVjYXVzZSB0aGlzIGNvZGUgaXMgYXBwYXJlbnRseSBub3QgdXNlZAorICBhdCBh
bGwgKGV2ZW4gaWYgYGB1bml0dGVzdDJgYCBpcyB1c2VkIGJ5IGEgdGVzdCBzdWl0ZSBleGVjdXRl
ZCBieSBweXRlc3QpLCBpdCB3YXMgZGVjaWRlZCB0bworICByZW1vdmUgaXQgaW4gdGhpcyByZWxl
YXNlLgorCisgIElmIHlvdSBleHBlcmllbmNlIGEgcmVncmVzc2lvbiBiZWNhdXNlIG9mIHRoaXMs
IHBsZWFzZQorICBgZmlsZSBhbiBpc3N1ZSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy9uZXc+YF9fLgorCisKKy0gYCM1NjE1IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2MTU+YF86IGBgcHl0ZXN0LmZhaWxgYCwgYGBweXRl
c3QueGZhaWxgYCBhbmQgYGBweXRlc3Quc2tpcGBgIG5vIGxvbmdlciBzdXBwb3J0IGJ5dGVzIGZv
ciB0aGUgbWVzc2FnZSBhcmd1bWVudC4KKworICBUaGlzIHdhcyBzdXBwb3J0ZWQgZm9yIFB5dGhv
biAyIHdoZXJlIGl0IHdhcyB0ZW1wdGluZyB0byB1c2UgYGAibWVzc2FnZSJgYAorICBpbnN0ZWFk
IG9mIGBgdSJtZXNzYWdlImBgLgorCisgIFB5dGhvbiAzIGNvZGUgaXMgdW5saWtlbHkgdG8gcGFz
cyBgYGJ5dGVzYGAgdG8gdGhlc2UgZnVuY3Rpb25zLiBJZiB5b3UgZG8sCisgIHBsZWFzZSBkZWNv
ZGUgaXQgdG8gYW4gYGBzdHJgYCBiZWZvcmVoYW5kLgorCisKKworRmVhdHVyZXMKKy0tLS0tLS0t
CisKKy0gYCM1NTY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzU1NjQ+YF86IE5ldyBgYENvbmZpZy5pbnZvY2F0aW9uX2FyZ3NgYCBhdHRyaWJ1dGUgY29udGFp
bmluZyB0aGUgdW5jaGFuZ2VkIGFyZ3VtZW50cyBwYXNzZWQgdG8gYGBweXRlc3QubWFpbigpYGAu
CisKKworLSBgIzU1NzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNTU3Nj5gXzogTmV3IGBOVU1CRVIgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9kb2N0ZXN0Lmh0bWwjdXNpbmctZG9jdGVzdC1vcHRpb25zPmBfXworICBvcHRpb24gZm9yIGRv
Y3Rlc3RzIHRvIGlnbm9yZSBpcnJlbGV2YW50IGRpZmZlcmVuY2VzIGluIGZsb2F0aW5nLXBvaW50
IG51bWJlcnMuCisgIEluc3BpcmVkIGJ5IFPDqWJhc3RpZW4gQm9pc2fDqXJhdWx0J3MgYG51bXRl
c3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9ib2lzZ2VyYS9udW10ZXN0PmBfXworICBleHRlbnNpb24g
Zm9yIGRvY3Rlc3QuCisKKworCitJbXByb3ZlbWVudHMKKy0tLS0tLS0tLS0tLQorCistIGAjNTQ3
MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDcxPmBfOiBK
VW5pdCBYTUwgbm93IGluY2x1ZGVzIGEgdGltZXN0YW1wIGFuZCBob3N0bmFtZSBpbiB0aGUgdGVz
dHN1aXRlIHRhZy4KKworCistIGAjNTcwNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81NzA3PmBfOiBUaW1lIHRha2VuIHRvIHJ1biB0aGUgdGVzdCBzdWl0ZSBu
b3cgaW5jbHVkZXMgYSBodW1hbi1yZWFkYWJsZSByZXByZXNlbnRhdGlvbiB3aGVuIGl0IHRha2Vz
IG92ZXIKKyAgNjAgc2Vjb25kcywgZm9yIGV4YW1wbGU6OgorCisgICAgICA9PT09PSAyIGZhaWxl
ZCBpbiAxMDIuNzBzICgwOjAxOjQyKSA9PT09PQorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0K
KworLSBgIzQzNDQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NDM0ND5gXzogRml4IFJ1bnRpbWVFcnJvci9TdG9wSXRlcmF0aW9uIHdoZW4gdHJ5aW5nIHRvIGNv
bGxlY3QgcGFja2FnZSB3aXRoICJfX2luaXRfXy5weSIgb25seS4KKworCistIGAjNTExNSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTE1PmBfOiBXYXJuaW5n
cyBpc3N1ZWQgZHVyaW5nIGBgcHl0ZXN0X2NvbmZpZ3VyZWBgIGFyZSBleHBsaWNpdGx5IG5vdCB0
cmVhdGVkIGFzIGVycm9ycywgZXZlbiBpZiBjb25maWd1cmVkIGFzIHN1Y2gsIGJlY2F1c2UgaXQg
b3RoZXJ3aXNlIGNvbXBsZXRlbHkgYnJlYWtzIHB5dGVzdC4KKworCistIGAjNTQ3NyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDc3PmBfOiBUaGUgWE1MIGZp
bGUgcHJvZHVjZWQgYnkgYGAtLWp1bml0eG1sYGAgbm93IGNvcnJlY3RseSBjb250YWluIGEgYGA8
dGVzdHN1aXRlcz5gYCByb290IGVsZW1lbnQuCisKKworLSBgIzU1MjQgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTUyND5gXzogRml4IGlzc3VlIHdoZXJlIGBg
dG1wX3BhdGhgYCBhbmQgYGB0bXBkaXJgYCB3b3VsZCBub3QgcmVtb3ZlIGRpcmVjdG9yaWVzIGNv
bnRhaW5pbmcgZmlsZXMgbWFya2VkIGFzIHJlYWQtb25seSwKKyAgd2hpY2ggY291bGQgbGVhZCB0
byBweXRlc3QgY3Jhc2hpbmcgd2hlbiBleGVjdXRlZCBhIHNlY29uZCB0aW1lIHdpdGggdGhlIGBg
LS1iYXNldGVtcGBgIG9wdGlvbi4KKworCistIGAjNTUzNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTM3PmBfOiBSZXBsYWNlIGBgaW1wb3J0bGliX21ldGFk
YXRhYGAgYmFja3BvcnQgd2l0aCBgYGltcG9ydGxpYi5tZXRhZGF0YWBgIGZyb20gdGhlCisgIHN0
YW5kYXJkIGxpYnJhcnkgb24gUHl0aG9uIDMuOCsuCisKKworLSBgIzU1NzggPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTU3OD5gXzogSW1wcm92ZSB0eXBlIGNo
ZWNraW5nIGZvciBzb21lIGV4Y2VwdGlvbi1yYWlzaW5nIGZ1bmN0aW9ucyAoYGBweXRlc3QueGZh
aWxgYCwgYGBweXRlc3Quc2tpcGBgLCBldGMpCisgIHNvIHRoZXkgcHJvdmlkZSBiZXR0ZXIgZXJy
b3IgbWVzc2FnZXMgd2hlbiB1c2VycyBtZWFudCB0byB1c2UgbWFya3MgKGZvciBleGFtcGxlIGBg
QHB5dGVzdC54ZmFpbGBgCisgIGluc3RlYWQgb2YgYGBAcHl0ZXN0Lm1hcmsueGZhaWxgYCkuCisK
KworLSBgIzU2MDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NTYwNj5gXzogRml4ZWQgaW50ZXJuYWwgZXJyb3Igd2hlbiB0ZXN0IGZ1bmN0aW9ucyB3ZXJlIHBh
dGNoZWQgd2l0aCBvYmplY3RzIHRoYXQgY2Fubm90IGJlIGNvbXBhcmVkCisgIGZvciB0cnV0aCB2
YWx1ZXMgYWdhaW5zdCBvdGhlcnMsIGxpa2UgYGBudW1weWBgIGFycmF5cy4KKworCistIGAjNTYz
NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NjM0PmBfOiBg
YHB5dGVzdC5leGl0YGAgaXMgbm93IGNvcnJlY3RseSBoYW5kbGVkIGluIGBgdW5pdHRlc3RgYCBj
YXNlcy4KKyAgVGhpcyBtYWtlcyBgYHVuaXR0ZXN0YGAgY2FzZXMgaGFuZGxlIGBgcXVpdGBgIGZy
b20gcHl0ZXN0J3MgcGRiIGNvcnJlY3RseS4KKworCistIGAjNTY1MCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NjUwPmBfOiBJbXByb3ZlZCBvdXRwdXQgd2hl
biBwYXJzaW5nIGFuIGluaSBjb25maWd1cmF0aW9uIGZpbGUgZmFpbHMuCisKKworLSBgIzU3MDEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTcwMT5gXzogRml4
IGNvbGxlY3Rpb24gb2YgYGBzdGF0aWNtZXRob2RgYCBvYmplY3RzIGRlZmluZWQgd2l0aCBgYGZ1
bmN0b29scy5wYXJ0aWFsYGAuCisKKworLSBgIzU3MzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTczND5gXzogU2tpcCBhc3luYyBnZW5lcmF0b3IgdGVzdCBm
dW5jdGlvbnMsIGFuZCB1cGRhdGUgdGhlIHdhcm5pbmcgbWVzc2FnZSB0byByZWZlciB0byBgYGFz
eW5jIGRlZmBgIGZ1bmN0aW9ucy4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzU2NjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTY2OT5gXzogQWRkIGRvY3N0cmluZyBmb3IgYGBUZXN0ZGlyLmNv
cHlfZXhhbXBsZWBgLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBgIzUwOTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNTA5NT5gXzogWE1MIGZpbGVzIG9mIHRoZSBgYHh1bml0MmBgIGZhbWls
eSBhcmUgbm93IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBzY2hlbWEgYnkgcHl0ZXN0J3Mgb3duIHRl
c3Qgc3VpdGUKKyAgdG8gYXZvaWQgZnV0dXJlIHJlZ3Jlc3Npb25zLgorCisKKy0gYCM1NTE2IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1MTY+YF86IENhY2hl
IG5vZGUgc3BsaXR0aW5nIGZ1bmN0aW9uIHdoaWNoIGNhbiBpbXByb3ZlIGNvbGxlY3Rpb24gcGVy
Zm9ybWFuY2UgaW4gdmVyeSBsYXJnZSB0ZXN0IHN1aXRlcy4KKworCistIGAjNTYwMyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NjAzPmBfOiBTaW1wbGlmaWVk
IGludGVybmFsIGBgU2FmZVJlcHJgYCBjbGFzcyBhbmQgcmVtb3ZlZCBzb21lIGRlYWQgY29kZS4K
KworCistIGAjNTY2NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy81NjY0PmBfOiBXaGVuIGludm9raW5nIHB5dGVzdCdzIG93biB0ZXN0c3VpdGUgd2l0aCBgYFBZ
VEhPTkRPTlRXUklURUJZVEVDT0RFPTFgYCwKKyAgdGhlIGBgdGVzdF94ZmFpbF9oYW5kbGluZ2Bg
IHRlc3Qgbm8gbG9uZ2VyIGZhaWxzLgorCisKKy0gYCM1Njg0IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2ODQ+YF86IFJlcGxhY2UgbWFudWFsIGhhbmRsaW5n
IG9mIGBgT1NFcnJvci5lcnJub2BgIGluIHRoZSBjb2RlYmFzZSBieSBuZXcgYGBPU0Vycm9yYGAg
c3ViY2xhc3NlcyAoYGBQZXJtaXNzaW9uRXJyb3JgYCwgYGBGaWxlTm90Rm91bmRFcnJvcmBgLCBl
dGMuKS4KKworCitweXRlc3QgNS4wLjEgKDIwMTktMDctMDQpCis9PT09PT09PT09PT09PT09PT09
PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1NDc5IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0Nzk+YF86IEltcHJvdmUgcXVvdGluZyBp
biBgYHJhaXNlc2BgIG1hdGNoIGZhaWx1cmUgbWVzc2FnZS4KKworCistIGAjNTUyMyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTIzPmBfOiBGaXhlZCB1c2lu
ZyBtdWx0aXBsZSBzaG9ydCBvcHRpb25zIHRvZ2V0aGVyIGluIHRoZSBjb21tYW5kLWxpbmUgKGZv
ciBleGFtcGxlIGBgLXZzYGApIGluIFB5dGhvbiAzLjgrLgorCisKKy0gYCM1NTQ3IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1NDc+YF86IGBgLS1zdGVwLXdp
c2VgYCBub3cgaGFuZGxlcyBgYHhmYWlsKHN0cmljdD1UcnVlKWBgIG1hcmtlcnMgcHJvcGVybHku
CisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gYCM1NTE3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1
MTc+YF86IEltcHJvdmUgIkRlY2xhcmluZyBuZXcgaG9va3MiIHNlY3Rpb24gaW4gY2hhcHRlciAi
V3JpdGluZyBQbHVnaW5zIgorCisKK3B5dGVzdCA1LjAuMCAoMjAxOS0wNi0yOCkKKz09PT09PT09
PT09PT09PT09PT09PT09PT0KKworSW1wb3J0YW50CistLS0tLS0tLS0KKworVGhpcyByZWxlYXNl
IGlzIGEgUHl0aG9uMy41KyBvbmx5IHJlbGVhc2UuCisKK0ZvciBtb3JlIGRldGFpbHMsIHNlZSBv
dXIgYFB5dGhvbiAyLjcgYW5kIDMuNCBzdXBwb3J0IHBsYW4gPGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL3N0YWJsZS9weTI3LXB5MzQtZGVwcmVjYXRpb24uaHRtbD5gX18uCisKK1JlbW92YWxz
CistLS0tLS0tLQorCistIGAjMTE0OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xMTQ5PmBfOiBQeXRlc3Qgbm8gbG9uZ2VyIGFjY2VwdHMgcHJlZml4ZXMgb2Yg
Y29tbWFuZC1saW5lIGFyZ3VtZW50cywgZm9yIGV4YW1wbGUKKyAgdHlwaW5nIGBgcHl0ZXN0IC0t
ZG9jdGVzdC1tb2RgYCBpbnBsYWNlIG9mIGBgLS1kb2N0ZXN0LW1vZHVsZXNgYC4KKyAgVGhpcyB3
YXMgcHJldmlvdXNseSBhbGxvd2VkIHdoZXJlIHRoZSBgYEFyZ3VtZW50UGFyc2VyYGAgdGhvdWdo
dCBpdCB3YXMgdW5hbWJpZ3VvdXMsCisgIGJ1dCB0aGlzIGNvdWxkIGJlIGluY29ycmVjdCBkdWUg
dG8gZGVsYXllZCBwYXJzaW5nIG9mIG9wdGlvbnMgZm9yIHBsdWdpbnMuCisgIFNlZSBmb3IgZXhh
bXBsZSBpc3N1ZXMgYCMxMTQ5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzExNDk+YF9fLAorICBgIzM0MTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzQxMz5gX18sIGFuZAorICBgIzQwMDkgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDAwOT5gX18uCisKKworLSBgIzU0MDIgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQwMj5gXzogKipQeXRlc3RE
ZXByZWNhdGlvbldhcm5pbmcgYXJlIG5vdyBlcnJvcnMgYnkgZGVmYXVsdC4qKgorCisgIEZvbGxv
d2luZyBvdXIgcGxhbiB0byByZW1vdmUgZGVwcmVjYXRlZCBmZWF0dXJlcyB3aXRoIGFzIGxpdHRs
ZSBkaXNydXB0aW9uIGFzCisgIHBvc3NpYmxlLCBhbGwgd2FybmluZ3Mgb2YgdHlwZSBgYFB5dGVz
dERlcHJlY2F0aW9uV2FybmluZ2BgIG5vdyBnZW5lcmF0ZSBlcnJvcnMKKyAgaW5zdGVhZCBvZiB3
YXJuaW5nIG1lc3NhZ2VzLgorCisgICoqVGhlIGFmZmVjdGVkIGZlYXR1cmVzIHdpbGwgYmUgZWZm
ZWN0aXZlbHkgcmVtb3ZlZCBpbiBweXRlc3QgNS4xKiosIHNvIHBsZWFzZSBjb25zdWx0IHRoZQor
ICBgRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sPmBfXworICBzZWN0aW9uIGluIHRoZSBkb2NzIGZvciBk
aXJlY3Rpb25zIG9uIGhvdyB0byB1cGRhdGUgZXhpc3RpbmcgY29kZS4KKworICBJbiB0aGUgcHl0
ZXN0IGBgNS4wLlhgYCBzZXJpZXMsIGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgZXJyb3Jz
IGJhY2sgaW50byB3YXJuaW5ncyBhcyBhIHN0b3AKKyAgZ2FwIG1lYXN1cmUgYnkgYWRkaW5nIHRo
aXMgdG8geW91ciBgYHB5dGVzdC5pbmlgYCBmaWxlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBpbmkK
KworICAgICAgW3B5dGVzdF0KKyAgICAgIGZpbHRlcndhcm5pbmdzID0KKyAgICAgICAgICBpZ25v
cmU6OnB5dGVzdC5QeXRlc3REZXByZWNhdGlvbldhcm5pbmcKKworICBCdXQgdGhpcyB3aWxsIHN0
b3Agd29ya2luZyB3aGVuIHB5dGVzdCBgYDUuMWBgIGlzIHJlbGVhc2VkLgorCisgICoqSWYgeW91
IGhhdmUgY29uY2VybnMqKiBhYm91dCB0aGUgcmVtb3ZhbCBvZiBhIHNwZWNpZmljIGZlYXR1cmUs
IHBsZWFzZSBhZGQgYQorICBjb21tZW50IHRvIGAjNTQwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDAyPmBfXy4KKworCistIGAjNTQxMiA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDEyPmBfOiBgYEV4Y2VwdGlvbklu
Zm9gYCBvYmplY3RzIChyZXR1cm5lZCBieSBgYHB5dGVzdC5yYWlzZXNgYCkgbm93IGhhdmUgdGhl
IHNhbWUgYGBzdHJgYCByZXByZXNlbnRhdGlvbiBhcyBgYHJlcHJgYCwgd2hpY2gKKyAgYXZvaWRz
IHNvbWUgY29uZnVzaW9uIHdoZW4gdXNlcnMgdXNlIGBgcHJpbnQoZSlgYCB0byBpbnNwZWN0IHRo
ZSBvYmplY3QuCisKKyAgVGhpcyBtZWFucyBjb2RlIGxpa2U6CisKKyAgLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTb21lRXhjZXB0aW9uKSBhcyBl
OgorICAgICAgICAgICAgLi4uCisgICAgICAgIGFzc2VydCAic29tZSBtZXNzYWdlIiBpbiBzdHIo
ZSkKKworCisgIE5lZWRzIHRvIGJlIGNoYW5nZWQgdG86CisKKyAgLi4gY29kZS1ibG9jazo6IHB5
dGhvbgorCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTb21lRXhjZXB0aW9uKSBhcyBlOgor
ICAgICAgICAgICAgLi4uCisgICAgICAgIGFzc2VydCAic29tZSBtZXNzYWdlIiBpbiBzdHIoZS52
YWx1ZSkKKworCisKKworRGVwcmVjYXRpb25zCistLS0tLS0tLS0tLS0KKworLSBgIzQ0ODggPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQ4OD5gXzogVGhlIHJl
bW92YWwgb2YgdGhlIGBgLS1yZXN1bHQtbG9nYGAgb3B0aW9uIGFuZCBtb2R1bGUgaGFzIGJlZW4g
cG9zdHBvbmVkIHRvICh0ZW50YXRpdmVseSkgcHl0ZXN0IDYuMCBhcworICB0aGUgdGVhbSBoYXMg
bm90IHlldCBnb3QgYXJvdW5kIHRvIGltcGxlbWVudCBhIGdvb2QgYWx0ZXJuYXRpdmUgZm9yIGl0
LgorCisKKy0gYCM0NjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDY2PmBfOiBUaGUgYGBmdW5jYXJnbmFtZXNgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gYW4gYWxp
YXMgZm9yIGBgZml4dHVyZW5hbWVzYGAgc2luY2UKKyAgcHl0ZXN0IDIuMywgYW5kIGlzIG5vdyBk
ZXByZWNhdGVkIGluIGNvZGUgdG9vLgorCisKKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCMz
NDU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM0NTc+YF86
IE5ldyBgcHl0ZXN0X2Fzc2VydGlvbl9wYXNzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvcmVmZXJlbmNlLmh0bWwjX3B5dGVzdC5ob29rc3BlYy5weXRlc3RfYXNzZXJ0aW9uX3Bh
c3M+YF9fCisgIGhvb2ssIGNhbGxlZCB3aXRoIGNvbnRleHQgaW5mb3JtYXRpb24gd2hlbiBhbiBh
c3NlcnRpb24gKnBhc3NlcyouCisKKyAgVGhpcyBob29rIGlzIHN0aWxsICoqZXhwZXJpbWVudGFs
Kiogc28gdXNlIGl0IHdpdGggY2F1dGlvbi4KKworCistIGAjNTQ0MCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDQwPmBfOiBUaGUgYGZhdWx0aGFuZGxlciA8
aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5odG1sPmBfXyBz
dGFuZGFyZCBsaWJyYXJ5CisgIG1vZHVsZSBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0IHRvIGhl
bHAgdXNlcnMgZGlhZ25vc2UgY3Jhc2hlcyBpbiBDIG1vZHVsZXMuCisKKyAgVGhpcyBmdW5jdGlv
bmFsaXR5IHdhcyBwcm92aWRlZCBieSBpbnRlZ3JhdGluZyB0aGUgZXh0ZXJuYWwKKyAgYHB5dGVz
dC1mYXVsdGhhbmRsZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1mYXVs
dGhhbmRsZXI+YF9fIHBsdWdpbiBpbnRvIHRoZSBjb3JlLAorICBzbyB1c2VycyBzaG91bGQgcmVt
b3ZlIHRoYXQgcGx1Z2luIGZyb20gdGhlaXIgcmVxdWlyZW1lbnRzIGlmIHVzZWQuCisKKyAgRm9y
IG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBkb2NzOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvdXNhZ2UuaHRtbCNmYXVsdC1oYW5kbGVyCisKKworLSBgIzU0NTIgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ1Mj5gXzogV2hlbiB3YXJuaW5n
cyBhcmUgY29uZmlndXJlZCBhcyBlcnJvcnMsIHB5dGVzdCB3YXJuaW5ncyBub3cgYXBwZWFyIGFz
IG9yaWdpbmF0aW5nIGZyb20gYGBweXRlc3QuYGAgaW5zdGVhZCBvZiB0aGUgaW50ZXJuYWwgYGBf
cHl0ZXN0Lndhcm5pbmdfdHlwZXMuYGAgbW9kdWxlLgorCisKKy0gYCM1MTI1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxMjU+YF86IGBgU2Vzc2lvbi5leGl0
Y29kZWBgIHZhbHVlcyBhcmUgbm93IGNvZGVkIGluIGBgcHl0ZXN0LkV4aXRDb2RlYGAsIGFuIGBg
SW50RW51bWBgLiBUaGlzIG1ha2VzIHRoZSBleGl0IGNvZGUgYXZhaWxhYmxlIGZvciBjb25zdW1l
ciBjb2RlIGFuZCBhcmUgbW9yZSBleHBsaWNpdCBvdGhlciB0aGFuIGp1c3QgZG9jdW1lbnRhdGlv
bi4gVXNlciBkZWZpbmVkIGV4aXQgY29kZXMgYXJlIHN0aWxsIHZhbGlkLCBidXQgc2hvdWxkIGJl
IHVzZWQgd2l0aCBjYXV0aW9uLgorCisgIFRoZSB0ZWFtIGRvZXNuJ3QgZXhwZWN0IHRoaXMgY2hh
bmdlIHRvIGJyZWFrIHRlc3Qgc3VpdGVzIG9yIHBsdWdpbnMgaW4gZ2VuZXJhbCwgZXhjZXB0IGlu
IGVzb3RlcmljL3NwZWNpZmljIHNjZW5hcmlvcy4KKworICAqKnB5dGVzdC14ZGlzdCoqIHVzZXJz
IHNob3VsZCB1cGdyYWRlIHRvIGBgMS4yOS4wYGAgb3IgbGF0ZXIsIGFzIGBgcHl0ZXN0LXhkaXN0
YGAgcmVxdWlyZWQgYSBjb21wYXRpYmlsaXR5IGZpeCBiZWNhdXNlIG9mIHRoaXMgY2hhbmdlLgor
CisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzE0MDMgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQwMz5gXzogU3dpdGNoIGZyb20gYGBpbXBgYCB0
byBgYGltcG9ydGxpYmBgLgorCisKKy0gYCMxNjcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzE2NzE+YF86IFRoZSBuYW1lIG9mIHRoZSBgYC5weWNgYCBmaWxl
cyBjYWNoZWQgYnkgdGhlIGFzc2VydGlvbiB3cml0ZXIgbm93IGluY2x1ZGVzIHRoZSBweXRlc3Qg
dmVyc2lvbgorICB0byBhdm9pZCBzdGFsZSBjYWNoZXMuCisKKworLSBgIzI3NjEgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc2MT5gXzogSG9ub3IgUEVQIDIz
NSBvbiBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KKworCistIGAjNTA3OCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDc4PmBfOiBUZXN0IG1vZHVs
ZSBpcyBubyBsb25nZXIgZG91YmxlLWltcG9ydGVkIHdoZW4gdXNpbmcgYGAtLXB5YXJnc2BgLgor
CisKKy0gYCM1MjYwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzUyNjA+YF86IEltcHJvdmVkIGNvbXBhcmlzb24gb2YgYnl0ZSBzdHJpbmdzLgorCisgIFdoZW4g
Y29tcGFyaW5nIGJ5dGVzLCB0aGUgYXNzZXJ0aW9uIG1lc3NhZ2UgdXNlZCB0byBzaG93IHRoZSBi
eXRlIG51bWVyaWMgdmFsdWUgd2hlbiBzaG93aW5nIHRoZSBkaWZmZXJlbmNlczo6CisKKyAgICAg
ICAgICBkZWYgdGVzdCgpOgorICAgICAgPiAgICAgICBhc3NlcnQgYidzcGFtJyA9PSBiJ2VnZ3Mn
CisgICAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgYidzcGFtJyA9PSBiJ2VnZ3Mn
CisgICAgICBFICAgICAgICAgQXQgaW5kZXggMCBkaWZmOiAxMTUgIT0gMTAxCisgICAgICBFICAg
ICAgICAgVXNlIC12IHRvIGdldCB0aGUgZnVsbCBkaWZmCisKKyAgSXQgbm93IHNob3dzIHRoZSBh
Y3R1YWwgYXNjaWkgcmVwcmVzZW50YXRpb24gaW5zdGVhZCwgd2hpY2ggaXMgb2Z0ZW4gbW9yZSB1
c2VmdWw6OgorCisgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgID4gICAgICAgYXNzZXJ0IGIn
c3BhbScgPT0gYidlZ2dzJworICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IGIn
c3BhbScgPT0gYidlZ2dzJworICAgICAgRSAgICAgICAgIEF0IGluZGV4IDAgZGlmZjogYidzJyAh
PSBiJ2UnCisgICAgICBFICAgICAgICAgVXNlIC12IHRvIGdldCB0aGUgZnVsbCBkaWZmCisKKwor
LSBgIzUzMzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTMz
NT5gXzogQ29sb3JpemUgbGV2ZWwgbmFtZXMgd2hlbiB0aGUgbGV2ZWwgaW4gdGhlIGxvZ2dpbmcg
Zm9ybWF0IGlzIGZvcm1hdHRlZCB1c2luZworICAnJShsZXZlbG5hbWUpLlhzJyAodHJ1bmNhdGVk
IGZpeGVkIHdpZHRoIGFsaWdubWVudCksIHdoZXJlIFggaXMgYW4gaW50ZWdlci4KKworCistIGAj
NTM1NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MzU0PmBf
OiBGaXggYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgIHdoZW4gdGhlIGFyZ3ZhbHVlcyBpcyBh
biBpdGVyYXRvci4KKworCistIGAjNTM3MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81MzcwPmBfOiBSZXZlcnQgdW5yb2xsaW5nIG9mIGBgYWxsKClgYCB0byBm
aXggYGBOYW1lRXJyb3JgYCBvbiBuZXN0ZWQgY29tcHJlaGVuc2lvbnMuCisKKworLSBgIzUzNzEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM3MT5gXzogUmV2
ZXJ0IHVucm9sbGluZyBvZiBgYGFsbCgpYGAgdG8gZml4IGluY29ycmVjdCBoYW5kbGluZyBvZiBn
ZW5lcmF0b3JzIHdpdGggYGBpZmBgLgorCisKKy0gYCM1MzcyIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzNzI+YF86IFJldmVydCB1bnJvbGxpbmcgb2YgYGBh
bGwoKWBgIHRvIGZpeCBpbmNvcnJlY3QgYXNzZXJ0aW9uIHdoZW4gdXNpbmcgYGBhbGwoKWBgIGlu
IGFuIGV4cHJlc3Npb24uCisKKworLSBgIzUzODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTM4Mz5gXzogYGAtcWBgIGhhcyBhZ2FpbiBhbiBpbXBhY3Qgb24g
dGhlIHN0eWxlIG9mIHRoZSBjb2xsZWN0ZWQgaXRlbXMKKyAgKGBgLS1jb2xsZWN0LW9ubHlgYCkg
d2hlbiBgYC0tbG9nLWNsaS1sZXZlbGBgIGlzIHVzZWQuCisKKworLSBgIzUzODkgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM4OT5gXzogRml4IHJlZ3Jlc3Np
b25zIG9mIGAjNTA2MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwv
NTA2Mz5gX18gZm9yIGBgaW1wb3J0bGliX21ldGFkYXRhLlBhdGhEaXN0cmlidXRpb25gYCB3aGlj
aCBoYXZlIHRoZWlyIGBgZmlsZXNgYCBhdHRyaWJ1dGUgYmVpbmcgYGBOb25lYGAuCisKKworLSBg
IzUzOTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM5MD5g
XzogRml4IHJlZ3Jlc3Npb24gd2hlcmUgdGhlIGBgb2JqYGAgYXR0cmlidXRlIG9mIGBgVGVzdENh
c2VgYCBpdGVtcyB3YXMgbm8gbG9uZ2VyIGJvdW5kIHRvIG1ldGhvZHMuCisKKworLSBgIzU0MDQg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQwND5gXzogRW1p
dCBhIHdhcm5pbmcgd2hlbiBhdHRlbXB0aW5nIHRvIHVud3JhcCBhIGJyb2tlbiBvYmplY3QgcmFp
c2VzIGFuIGV4Y2VwdGlvbiwKKyAgZm9yIGVhc2llciBkZWJ1Z2dpbmcgKGAjNTA4MCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDgwPmBfXykuCisKKworLSBg
IzU0MzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQzMj5g
XzogUHJldmVudCAiYWxyZWFkeSBpbXBvcnRlZCIgd2FybmluZ3MgZnJvbSBhc3NlcnRpb24gcmV3
cml0ZXIgd2hlbiBpbnZva2luZyBweXRlc3QgaW4tcHJvY2VzcyBtdWx0aXBsZSB0aW1lcy4KKwor
CistIGAjNTQzMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81
NDMzPmBfOiBGaXggYXNzZXJ0aW9uIHJld3JpdGluZyBpbiBwYWNrYWdlcyAoYGBfX2luaXRfXy5w
eWBgKS4KKworCistIGAjNTQ0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81NDQ0PmBfOiBGaXggYGAtLXN0ZXB3aXNlYGAgbW9kZSB3aGVuIHRoZSBmaXJzdCBm
aWxlIHBhc3NlZCBvbiB0aGUgY29tbWFuZC1saW5lIGZhaWxzIHRvIGNvbGxlY3QuCisKKworLSBg
IzU0ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ4Mj5g
XzogRml4IGJ1ZyBpbnRyb2R1Y2VkIGluIDQuNi4wIGNhdXNpbmcgY29sbGVjdGlvbiBlcnJvcnMg
d2hlbiBwYXNzaW5nCisgIG1vcmUgdGhhbiAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRvIGBgcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemVgYC4KKworCistIGAjNTUwNSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTA1PmBfOiBGaXggY3Jhc2ggd2hlbiBkaXNjb3Zl
cnkgZmFpbHMgd2hpbGUgdXNpbmcgYGAtcCBubzp0ZXJtaW5hbGBgLgorCisKKworSW1wcm92ZWQg
RG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNTMxNSA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MzE1PmBfOiBFeHBhbmQgZG9j
cyBvbiBtb2NraW5nIGNsYXNzZXMgYW5kIGRpY3Rpb25hcmllcyB3aXRoIGBgbW9ua2V5cGF0Y2hg
YC4KKworCistIGAjNTQxNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81NDE2PmBfOiBGaXggUHl0ZXN0VW5rbm93bk1hcmtXYXJuaW5nIGluIHJ1bi9za2lwIGV4
YW1wbGUuCisKKworcHl0ZXN0IDQuNi45ICgyMDIwLTAxLTA0KQorPT09PT09PT09PT09PT09PT09
PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNjMwMSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MzAxPmBfOiBGaXggYXNzZXJ0aW9uIHJl
d3JpdGluZyBmb3IgZWdnLWJhc2VkIGRpc3RyaWJ1dGlvbnMgYW5kIGBgZWRpdGFibGVgYCBpbnN0
YWxscyAoYGBwaXAgaW5zdGFsbCAtLWVkaXRhYmxlYGApLgorCisKK3B5dGVzdCA0LjYuOCAoMjAx
OS0xMi0xOSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRmVhdHVyZXMKKy0tLS0tLS0t
CisKKy0gYCM1NDcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzU0NzE+YF86IEpVbml0IFhNTCBub3cgaW5jbHVkZXMgYSB0aW1lc3RhbXAgYW5kIGhvc3RuYW1l
IGluIHRoZSB0ZXN0c3VpdGUgdGFnLgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBg
IzU0MzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQzMD5g
XzoganVuaXR4bWw6IExvZ3MgZm9yIGZhaWxlZCB0ZXN0IGFyZSBub3cgcGFzc2VkIHRvIGp1bml0
IHJlcG9ydCBpbiBjYXNlIHRoZSB0ZXN0IGZhaWxzIGR1cmluZyBjYWxsIHBoYXNlLgorCisKKwor
VHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBg
IzYzNDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjM0NT5g
XzogUGluIGBgY29sb3JhbWFgYCB0byBgYDAuNC4xYGAgb25seSBmb3IgUHl0aG9uIDMuNCBzbyBu
ZXdlciBQeXRob24gdmVyc2lvbnMgY2FuIHN0aWxsIHJlY2VpdmUgY29sb3JhbWEgdXBkYXRlcy4K
KworCitweXRlc3QgNC42LjcgKDIwMTktMTItMDUpCis9PT09PT09PT09PT09PT09PT09PT09PT09
CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1NDc3IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0Nzc+YF86IFRoZSBYTUwgZmlsZSBwcm9kdWNlZCBi
eSBgYC0tanVuaXR4bWxgYCBub3cgY29ycmVjdGx5IGNvbnRhaW4gYSBgYDx0ZXN0c3VpdGVzPmBg
IHJvb3QgZWxlbWVudC4KKworCistIGAjNjA0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy82MDQ0PmBfOiBQcm9wZXJseSBpZ25vcmUgYGBGaWxlTm90Rm91bmRF
cnJvcmBgIChgYE9TRXJyb3IuZXJybm8gPT0gTk9FTlRgYCBpbiBQeXRob24gMikgZXhjZXB0aW9u
cyB3aGVuIHRyeWluZyB0byByZW1vdmUgb2xkIHRlbXBvcmFyeSBkaXJlY3RvcmllcywKKyAgZm9y
IGluc3RhbmNlIHdoZW4gbXVsdGlwbGUgcHJvY2Vzc2VzIHRyeSB0byByZW1vdmUgdGhlIHNhbWUg
ZGlyZWN0b3J5IChjb21tb24gd2l0aCBgYHB5dGVzdC14ZGlzdGBgCisgIGZvciBleGFtcGxlKS4K
KworCitweXRlc3QgNC42LjYgKDIwMTktMTAtMTEpCis9PT09PT09PT09PT09PT09PT09PT09PT09
CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1NTIzIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1MjM+YF86IEZpeGVkIHVzaW5nIG11bHRpcGxlIHNo
b3J0IG9wdGlvbnMgdG9nZXRoZXIgaW4gdGhlIGNvbW1hbmQtbGluZSAoZm9yIGV4YW1wbGUgYGAt
dnNgYCkgaW4gUHl0aG9uIDMuOCsuCisKKworLSBgIzU1MzcgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTUzNz5gXzogUmVwbGFjZSBgYGltcG9ydGxpYl9tZXRh
ZGF0YWBgIGJhY2twb3J0IHdpdGggYGBpbXBvcnRsaWIubWV0YWRhdGFgYCBmcm9tIHRoZQorICBz
dGFuZGFyZCBsaWJyYXJ5IG9uIFB5dGhvbiAzLjgrLgorCisKKy0gYCM1ODA2IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU4MDY+YF86IEZpeCAibGV4ZXIiIGJl
aW5nIHVzZWQgd2hlbiB1cGxvYWRpbmcgdG8gYnBhc3RlLm5ldCBmcm9tIGBgLS1wYXN0ZWJpbmBg
IHRvICJ0ZXh0Ii4KKworCistIGAjNTkwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81OTAyPmBfOiBGaXggd2FybmluZ3MgYWJvdXQgZGVwcmVjYXRlZCBgYGNt
cGBgIGF0dHJpYnV0ZSBpbiBgYGF0dHJzPj0xOS4yYGAuCisKKworCitUcml2aWFsL0ludGVybmFs
IENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNTgwMSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81ODAxPmBfOiBGaXhlcyBweXRob24g
dmVyc2lvbiBjaGVja3MgKGRldGVjdGVkIGJ5IGBgZmxha2U4LTIwMjBgYCkgaW4gY2FzZSBweXRo
b240IGJlY29tZXMgYSB0aGluZy4KKworCitweXRlc3QgNC42LjUgKDIwMTktMDgtMDUpCis9PT09
PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM0MzQ0
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzNDQ+YF86IEZp
eCBSdW50aW1lRXJyb3IvU3RvcEl0ZXJhdGlvbiB3aGVuIHRyeWluZyB0byBjb2xsZWN0IHBhY2th
Z2Ugd2l0aCAiX19pbml0X18ucHkiIG9ubHkuCisKKworLSBgIzU0NzggPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ3OD5gXzogRml4IGVuY29kZSBlcnJvciB3
aGVuIHVzaW5nIHVuaWNvZGUgc3RyaW5ncyBpbiBleGNlcHRpb25zIHdpdGggYGBweXRlc3QucmFp
c2VzYGAuCisKKworLSBgIzU1MjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNTUyND5gXzogRml4IGlzc3VlIHdoZXJlIGBgdG1wX3BhdGhgYCBhbmQgYGB0bXBk
aXJgYCB3b3VsZCBub3QgcmVtb3ZlIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgZmlsZXMgbWFya2Vk
IGFzIHJlYWQtb25seSwKKyAgd2hpY2ggY291bGQgbGVhZCB0byBweXRlc3QgY3Jhc2hpbmcgd2hl
biBleGVjdXRlZCBhIHNlY29uZCB0aW1lIHdpdGggdGhlIGBgLS1iYXNldGVtcGBgIG9wdGlvbi4K
KworCistIGAjNTU0NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy81NTQ3PmBfOiBgYC0tc3RlcC13aXNlYGAgbm93IGhhbmRsZXMgYGB4ZmFpbChzdHJpY3Q9VHJ1
ZSlgYCBtYXJrZXJzIHByb3Blcmx5LgorCisKKy0gYCM1NjUwIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2NTA+YF86IEltcHJvdmVkIG91dHB1dCB3aGVuIHBh
cnNpbmcgYW4gaW5pIGNvbmZpZ3VyYXRpb24gZmlsZSBmYWlscy4KKworcHl0ZXN0IDQuNi40ICgy
MDE5LTA2LTI4KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0t
LS0tLQorCistIGAjNTQwNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81NDA0PmBfOiBFbWl0IGEgd2FybmluZyB3aGVuIGF0dGVtcHRpbmcgdG8gdW53cmFwIGEg
YnJva2VuIG9iamVjdCByYWlzZXMgYW4gZXhjZXB0aW9uLAorICBmb3IgZWFzaWVyIGRlYnVnZ2lu
ZyAoYCM1MDgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUw
ODA+YF9fKS4KKworCistIGAjNTQ0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81NDQ0PmBfOiBGaXggYGAtLXN0ZXB3aXNlYGAgbW9kZSB3aGVuIHRoZSBmaXJz
dCBmaWxlIHBhc3NlZCBvbiB0aGUgY29tbWFuZC1saW5lIGZhaWxzIHRvIGNvbGxlY3QuCisKKwor
LSBgIzU0ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ4
Mj5gXzogRml4IGJ1ZyBpbnRyb2R1Y2VkIGluIDQuNi4wIGNhdXNpbmcgY29sbGVjdGlvbiBlcnJv
cnMgd2hlbiBwYXNzaW5nCisgIG1vcmUgdGhhbiAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRvIGBg
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYC4KKworCistIGAjNTUwNSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTA1PmBfOiBGaXggY3Jhc2ggd2hlbiBkaXNj
b3ZlcnkgZmFpbHMgd2hpbGUgdXNpbmcgYGAtcCBubzp0ZXJtaW5hbGBgLgorCisKK3B5dGVzdCA0
LjYuMyAoMjAxOS0wNi0xMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVz
CistLS0tLS0tLS0KKworLSBgIzUzODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNTM4Mz5gXzogYGAtcWBgIGhhcyBhZ2FpbiBhbiBpbXBhY3Qgb24gdGhlIHN0
eWxlIG9mIHRoZSBjb2xsZWN0ZWQgaXRlbXMKKyAgKGBgLS1jb2xsZWN0LW9ubHlgYCkgd2hlbiBg
YC0tbG9nLWNsaS1sZXZlbGBgIGlzIHVzZWQuCisKKworLSBgIzUzODkgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM4OT5gXzogRml4IHJlZ3Jlc3Npb25zIG9m
IGAjNTA2MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvNTA2Mz5g
X18gZm9yIGBgaW1wb3J0bGliX21ldGFkYXRhLlBhdGhEaXN0cmlidXRpb25gYCB3aGljaCBoYXZl
IHRoZWlyIGBgZmlsZXNgYCBhdHRyaWJ1dGUgYmVpbmcgYGBOb25lYGAuCisKKworLSBgIzUzOTAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM5MD5gXzogRml4
IHJlZ3Jlc3Npb24gd2hlcmUgdGhlIGBgb2JqYGAgYXR0cmlidXRlIG9mIGBgVGVzdENhc2VgYCBp
dGVtcyB3YXMgbm8gbG9uZ2VyIGJvdW5kIHRvIG1ldGhvZHMuCisKKworcHl0ZXN0IDQuNi4yICgy
MDE5LTA2LTAzKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0t
LS0tLQorCistIGAjNTM3MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81MzcwPmBfOiBSZXZlcnQgdW5yb2xsaW5nIG9mIGBgYWxsKClgYCB0byBmaXggYGBOYW1l
RXJyb3JgYCBvbiBuZXN0ZWQgY29tcHJlaGVuc2lvbnMuCisKKworLSBgIzUzNzEgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM3MT5gXzogUmV2ZXJ0IHVucm9s
bGluZyBvZiBgYGFsbCgpYGAgdG8gZml4IGluY29ycmVjdCBoYW5kbGluZyBvZiBnZW5lcmF0b3Jz
IHdpdGggYGBpZmBgLgorCisKKy0gYCM1MzcyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzUzNzI+YF86IFJldmVydCB1bnJvbGxpbmcgb2YgYGBhbGwoKWBgIHRv
IGZpeCBpbmNvcnJlY3QgYXNzZXJ0aW9uIHdoZW4gdXNpbmcgYGBhbGwoKWBgIGluIGFuIGV4cHJl
c3Npb24uCisKKworcHl0ZXN0IDQuNi4xICgyMDE5LTA2LTAyKQorPT09PT09PT09PT09PT09PT09
PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTM1NCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MzU0PmBfOiBGaXggYGBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZWBgIHdoZW4gdGhlIGFyZ3ZhbHVlcyBpcyBhbiBpdGVyYXRvci4KKworCist
IGAjNTM1OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MzU4
PmBfOiBGaXggYXNzZXJ0aW9uIHJld3JpdGluZyBvZiBgYGFsbCgpYGAgY2FsbHMgdG8gZGVhbCB3
aXRoIG5vbi1nZW5lcmF0b3JzLgorCisKK3B5dGVzdCA0LjYuMCAoMjAxOS0wNS0zMSkKKz09PT09
PT09PT09PT09PT09PT09PT09PT0KKworSW1wb3J0YW50CistLS0tLS0tLS0KKworVGhlIGBgNC42
LlhgYCBzZXJpZXMgd2lsbCBiZSB0aGUgbGFzdCBzZXJpZXMgdG8gc3VwcG9ydCAqKlB5dGhvbiAy
IGFuZCBQeXRob24gMy40KiouCisKK0ZvciBtb3JlIGRldGFpbHMsIHNlZSBvdXIgYFB5dGhvbiAy
LjcgYW5kIDMuNCBzdXBwb3J0IHBsYW4gPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9weTI3LXB5MzQtZGVwcmVjYXRpb24uaHRtbD5gX18uCisKKworRmVhdHVyZXMKKy0tLS0tLS0t
CisKKy0gYCM0NTU5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQ1NTk+YF86IEFkZGVkIHRoZSBgYGp1bml0X2xvZ19wYXNzaW5nX3Rlc3RzYGAgaW5pIHZhbHVl
IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIGxvZ2dpbmcgb2YgcGFzc2lu
ZyB0ZXN0IG91dHB1dCBpbiB0aGUgSnVuaXQgWE1MIGZpbGUuCisKKworLSBgIzQ5NTYgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk1Nj5gXzogcHl0ZXN0ZXIn
cyBgYHRlc3RkaXIuc3Bhd25gYCB1c2VzIGBgdG1wZGlyYGAgYXMgSE9NRS9VU0VSUFJPRklMRSBk
aXJlY3RvcnkuCisKKworLSBgIzUwNjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNTA2Mj5gXzogVW5yb2xsIGNhbGxzIHRvIGBgYWxsYGAgdG8gZnVsbCBmb3It
bG9vcHMgd2l0aCBhc3NlcnRpb24gcmV3cml0aW5nIGZvciBiZXR0ZXIgZmFpbHVyZSBtZXNzYWdl
cywgZXNwZWNpYWxseSB3aGVuIHVzaW5nIEdlbmVyYXRvciBFeHByZXNzaW9ucy4KKworCistIGAj
NTA2MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDYzPmBf
OiBTd2l0Y2ggZnJvbSBgYHBrZ19yZXNvdXJjZXNgYCB0byBgYGltcG9ydGxpYi1tZXRhZGF0YWBg
IGZvciBlbnRyeXBvaW50IGRldGVjdGlvbiBmb3IgaW1wcm92ZWQgcGVyZm9ybWFuY2UgYW5kIGlt
cG9ydCB0aW1lLgorCisKKy0gYCM1MDkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzUwOTE+YF86IFRoZSBvdXRwdXQgZm9yIGluaSBvcHRpb25zIGluIGBgLS1o
ZWxwYGAgaGFzIGJlZW4gaW1wcm92ZWQuCisKKworLSBgIzUyNjkgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTI2OT5gXzogYGBweXRlc3QuaW1wb3J0b3Jza2lw
YGAgaW5jbHVkZXMgdGhlIGBgSW1wb3J0RXJyb3JgYCBub3cgaW4gdGhlIGRlZmF1bHQgYGByZWFz
b25gYC4KKworCistIGAjNTMxMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81MzExPmBfOiBDYXB0dXJlZCBsb2dzIHRoYXQgYXJlIG91dHB1dCBmb3IgZWFjaCBm
YWlsaW5nIHRlc3QgYXJlIGZvcm1hdHRlZCB1c2luZyB0aGUKKyAgQ29sb3JlZExldmVsRm9ybWF0
dGVyLgorCisKKy0gYCM1MzEyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzUzMTI+YF86IEltcHJvdmVkIGZvcm1hdHRpbmcgb2YgbXVsdGlsaW5lIGxvZyBtZXNz
YWdlcyBpbiBQeXRob24gMy4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMyMDY0
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwNjQ+YF86IFRo
ZSBkZWJ1Z2dpbmcgcGx1Z2luIGltcG9ydHMgdGhlIHdyYXBwZWQgYGBQZGJgYCBjbGFzcyAoYGAt
LXBkYmNsc2BgKSBvbi1kZW1hbmQgbm93LgorCisKKy0gYCM0OTA4IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5MDg+YF86IFRoZSBgYHB5dGVzdF9lbnRlcl9w
ZGJgYCBob29rIGdldHMgY2FsbGVkIHdpdGggcG9zdC1tb3J0ZW0gKGBgLS1wZGJgYCkuCisKKwor
LSBgIzUwMzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAz
Nj5gXzogRml4IGlzc3VlIHdoZXJlIGZpeHR1cmVzIGRlcGVuZGVudCBvbiBvdGhlciBwYXJhbWV0
cml6ZWQgZml4dHVyZXMgd291bGQgYmUgZXJyb25lb3VzbHkgcGFyYW1ldHJpemVkLgorCisKKy0g
YCM1MjU2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUyNTY+
YF86IEhhbmRsZSBpbnRlcm5hbCBlcnJvciBkdWUgdG8gYSBsb25lIHN1cnJvZ2F0ZSB1bmljb2Rl
IGNoYXJhY3RlciBub3QgYmVpbmcgcmVwcmVzZW50YWJsZSBpbiBKeXRob24uCisKKworLSBgIzUy
NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTI1Nz5gXzog
RW5zdXJlIHRoYXQgYGBzeXMuc3Rkb3V0Lm1vZGVgYCBkb2VzIG5vdCBpbmNsdWRlIGBgJ2InYGAg
YXMgaXQgaXMgYSB0ZXh0IHN0cmVhbS4KKworCistIGAjNTI3OCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Mjc4PmBfOiBQeXRlc3QncyBpbnRlcm5hbCBweXRo
b24gcGx1Z2luIGNhbiBiZSBkaXNhYmxlZCB1c2luZyBgYC1wIG5vOnB5dGhvbmBgIGFnYWluLgor
CisKKy0gYCM1Mjg2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzUyODY+YF86IEZpeCBpc3N1ZSB3aXRoIGBgZGlzYWJsZV90ZXN0X2lkX2VzY2FwaW5nX2FuZF9m
b3JmZWl0X2FsbF9yaWdodHNfdG9fY29tbXVuaXR5X3N1cHBvcnRgYCBvcHRpb24gbm90IHdvcmtp
bmcgd2hlbiB1c2luZyBhIGxpc3Qgb2YgdGVzdCBJRHMgaW4gcGFyYW1ldHJpemVkIHRlc3RzLgor
CisKKy0gYCM1MzMwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzUzMzA+YF86IFNob3cgdGhlIHRlc3QgbW9kdWxlIGJlaW5nIGNvbGxlY3RlZCB3aGVuIGVtaXR0
aW5nIGBgUHl0ZXN0Q29sbGVjdGlvbldhcm5pbmdgYCBtZXNzYWdlcyBmb3IKKyAgdGVzdCBjbGFz
c2VzIHdpdGggYGBfX2luaXRfX2BgIGFuZCBgYF9fbmV3X19gYCBtZXRob2RzIHRvIG1ha2UgaXQg
ZWFzaWVyIHRvIHBpbiBkb3duIHRoZSBwcm9ibGVtLgorCisKKy0gYCM1MzMzIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzMzM+YF86IEZpeCByZWdyZXNzaW9u
IGluIDQuNS4wIHdpdGggYGAtLWxmYGAgbm90IHJlLXJ1bm5pbmcgYWxsIHRlc3RzIHdpdGgga25v
d24gZmFpbHVyZXMgZnJvbSBub24tc2VsZWN0ZWQgdGVzdHMuCisKKworCitJbXByb3ZlZCBEb2N1
bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM1MjUwIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUyNTA+YF86IEV4cGFuZCBkb2NzIG9u
IHVzZSBvZiBgYHNldGVudmBgIGFuZCBgYGRlbGVudmBgIHdpdGggYGBtb25rZXlwYXRjaGBgLgor
CisKK3B5dGVzdCA0LjUuMCAoMjAxOS0wNS0xMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0K
KworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCM0ODI2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ4MjY+YF86IEEgd2FybmluZyBpcyBub3cgZW1pdHRlZCB3
aGVuIHVua25vd24gbWFya3MgYXJlIHVzZWQgYXMgYSBkZWNvcmF0b3IuCisgIFRoaXMgaXMgb2Z0
ZW4gZHVlIHRvIGEgdHlwbywgd2hpY2ggY2FuIGxlYWQgdG8gc2lsZW50bHkgYnJva2VuIHRlc3Rz
LgorCisKKy0gYCM0OTA3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzQ5MDc+YF86IFNob3cgWEZhaWwgcmVhc29uIGFzIHBhcnQgb2YgSlVuaXRYTUwgbWVzc2Fn
ZSBmaWVsZC4KKworCistIGAjNTAxMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81MDEzPmBfOiBNZXNzYWdlcyBmcm9tIGNyYXNoIHJlcG9ydHMgYXJlIGRpc3Bs
YXllZCB3aXRoaW4gdGVzdCBzdW1tYXJpZXMgbm93LCB0cnVuY2F0ZWQgdG8gdGhlIHRlcm1pbmFs
IHdpZHRoLgorCisKKy0gYCM1MDIzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzUwMjM+YF86IE5ldyBmbGFnIGBgLS1zdHJpY3QtbWFya2Vyc2BgIHRoYXQgdHJp
Z2dlcnMgYW4gZXJyb3Igd2hlbiB1bmtub3duIG1hcmtlcnMgKGUuZy4gdGhvc2Ugbm90IHJlZ2lz
dGVyZWQgdXNpbmcgdGhlIGBtYXJrZXJzIG9wdGlvbmBfIGluIHRoZSBjb25maWd1cmF0aW9uIGZp
bGUpIGFyZSB1c2VkIGluIHRoZSB0ZXN0IHN1aXRlLgorCisgIFRoZSBleGlzdGluZyBgYC0tc3Ry
aWN0YGAgb3B0aW9uIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBjdXJyZW50bHksIGJ1dCBjYW4gYmUg
YXVnbWVudGVkIGluIHRoZSBmdXR1cmUgZm9yIGFkZGl0aW9uYWwgY2hlY2tzLgorCisgIC4uIF9g
bWFya2VycyBvcHRpb25gOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvcmVmZXJl
bmNlLmh0bWwjY29uZnZhbC1tYXJrZXJzCisKKworLSBgIzUwMjYgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAyNj5gXzogQXNzZXJ0aW9uIGZhaWx1cmUgbWVz
c2FnZXMgZm9yIHNlcXVlbmNlcyBhbmQgZGljdHMgY29udGFpbiB0aGUgbnVtYmVyIG9mIGRpZmZl
cmVudCBpdGVtcyBub3cuCisKKworLSBgIzUwMzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTAzND5gXzogSW1wcm92ZSByZXBvcnRpbmcgd2l0aCBgYC0tbGZg
YCBhbmQgYGAtLWZmYGAgKHJ1bi1sYXN0LWZhaWx1cmUpLgorCisKKy0gYCM1MDM1IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMzU+YF86IFRoZSBgYC0tY2Fj
aGUtc2hvd2BgIG9wdGlvbi9hY3Rpb24gYWNjZXB0cyBhbiBvcHRpb25hbCBnbG9iIHRvIHNob3cg
b25seSBtYXRjaGluZyBjYWNoZSBlbnRyaWVzLgorCisKKy0gYCM1MDU5IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwNTk+YF86IFN0YW5kYXJkIGlucHV0IChz
dGRpbikgY2FuIGJlIGdpdmVuIHRvIHB5dGVzdGVyJ3MgYGBUZXN0ZGlyLnJ1bigpYGAgYW5kIGBg
VGVzdGRpci5wb3BlbigpYGAuCisKKworLSBgIzUwNjggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA2OD5gXzogVGhlIGBgLXJgYCBvcHRpb24gbGVhcm50IGFi
b3V0IGBgQWBgIHRvIGRpc3BsYXkgYWxsIHJlcG9ydHMgKGluY2x1ZGluZyBwYXNzZWQgb25lcykg
aW4gdGhlIHNob3J0IHRlc3Qgc3VtbWFyeS4KKworCistIGAjNTEwOCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTA4PmBfOiBUaGUgc2hvcnQgdGVzdCBzdW1t
YXJ5IGlzIGRpc3BsYXllZCBhZnRlciBwYXNzZXMgd2l0aCBvdXRwdXQgKGBgLXJQYGApLgorCisK
Ky0gYCM1MTcyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUx
NzI+YF86IFRoZSBgYC0tbGFzdC1mYWlsZWRgYCAoYGAtLWxmYGApIG9wdGlvbiBnb3Qgc21hcnRl
ciBhbmQgd2lsbCBub3cgc2tpcCBlbnRpcmUgZmlsZXMgaWYgYWxsIHRlc3RzCisgIG9mIHRoYXQg
dGVzdCBmaWxlIGhhdmUgcGFzc2VkIGluIHByZXZpb3VzIHJ1bnMsIGdyZWF0bHkgc3BlZWRpbmcg
dXAgY29sbGVjdGlvbi4KKworCistIGAjNTE3NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy81MTc3PmBfOiBJbnRyb2R1Y2UgbmV3IHNwZWNpZmljIHdhcm5pbmcg
YGBQeXRlc3RXYXJuaW5nYGAgc3ViY2xhc3NlcyB0byBtYWtlIGl0IGVhc2llciB0byBmaWx0ZXIg
d2FybmluZ3MgYmFzZWQgb24gdGhlIGNsYXNzLCByYXRoZXIgdGhhbiBvbiB0aGUgbWVzc2FnZS4g
VGhlIG5ldyBzdWJjbGFzc2VzIGFyZToKKworCisgICogYGBQeXRlc3RBc3NlcnRSZXdyaXRlV2Fy
bmluZ2BgCisKKyAgKiBgYFB5dGVzdENhY2hlV2FybmluZ2BgCisKKyAgKiBgYFB5dGVzdENvbGxl
Y3Rpb25XYXJuaW5nYGAKKworICAqIGBgUHl0ZXN0Q29uZmlnV2FybmluZ2BgCisKKyAgKiBgYFB5
dGVzdFVuaGFuZGxlZENvcm91dGluZVdhcm5pbmdgYAorCisgICogYGBQeXRlc3RVbmtub3duTWFy
a1dhcm5pbmdgYAorCisKKy0gYCM1MjAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzUyMDI+YF86IE5ldyBgYHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHlgYCBz
ZXNzaW9uLXNjb3BlZCBmaXh0dXJlIGFsbG93cyB1c2VycyB0byBsb2cgYGA8cHJvcGVydHk+YGAg
dGFncyBhdCB0aGUgYGB0ZXN0c3VpdGVgYAorICBsZXZlbCB3aXRoIHRoZSBgYGp1bml0eG1sYGAg
cGx1Z2luLgorCisgIFRoZSBnZW5lcmF0ZWQgWE1MIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0
ZXN0IHh1bml0IHN0YW5kYXJkLCBjb250cmFyeSB0bworICB0aGUgcHJvcGVydGllcyByZWNvcmRl
ZCBieSBgYHJlY29yZF9wcm9wZXJ0eWBgIGFuZCBgYHJlY29yZF94bWxfYXR0cmlidXRlYGAuCisK
KworLSBgIzUyMTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NTIxND5gXzogVGhlIGRlZmF1bHQgbG9nZ2luZyBmb3JtYXQgaGFzIGJlZW4gY2hhbmdlZCB0byBp
bXByb3ZlIHJlYWRhYmlsaXR5LiBIZXJlIGlzIGFuCisgIGV4YW1wbGUgb2YgYSBwcmV2aW91cyBs
b2dnaW5nIG1lc3NhZ2U6OgorCisgICAgICB0ZXN0X2xvZ19jbGlfZW5hYmxlZF9kaXNhYmxlZC5w
eSAgICAzIENSSVRJQ0FMIGNyaXRpY2FsIG1lc3NhZ2UgbG9nZ2VkIGJ5IHRlc3QKKworICBUaGlz
IGhhcyBub3cgYmVjb21lOjoKKworICAgICAgQ1JJVElDQUwgcm9vdDp0ZXN0X2xvZ19jbGlfZW5h
YmxlZF9kaXNhYmxlZC5weTozIGNyaXRpY2FsIG1lc3NhZ2UgbG9nZ2VkIGJ5IHRlc3QKKworICBU
aGUgZm9ybWF0dGluZyBjYW4gYmUgY2hhbmdlZCB0aHJvdWdoIHRoZSBgbG9nX2Zvcm1hdCA8aHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3JlZmVyZW5jZS5odG1sI2NvbmZ2YWwtbG9n
X2Zvcm1hdD5gX18gY29uZmlndXJhdGlvbiBvcHRpb24uCisKKworLSBgIzUyMjAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTIyMD5gXzogYGAtLWZpeHR1cmVz
YGAgbm93IGFsc28gc2hvd3MgZml4dHVyZSBzY29wZSBmb3Igc2NvcGVzIG90aGVyIHRoYW4gYGAi
ZnVuY3Rpb24iYGAuCisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTExMyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTEzPmBfOiBEZXNlbGVj
dGVkIGl0ZW1zIGZyb20gcGx1Z2lucyB1c2luZyBgYHB5dGVzdF9jb2xsZWN0X21vZGlmeWl0ZW1z
YGAgYXMgYSBob29rd3JhcHBlciBhcmUgY29ycmVjdGx5IHJlcG9ydGVkIG5vdy4KKworCistIGAj
NTE0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTQ0PmBf
OiBXaXRoIHVzYWdlIGVycm9ycyBgYGV4aXRzdGF0dXNgYCBpcyBzZXQgdG8gYGBFWElUX1VTQUdF
RVJST1JgYCBpbiB0aGUgYGBweXRlc3Rfc2Vzc2lvbmZpbmlzaGBgIGhvb2sgbm93IGFzIGV4cGVj
dGVkLgorCisKKy0gYCM1MjM1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzUyMzU+YF86IGBgb3V0Y29tZS5leGl0YGAgaXMgbm90IHVzZWQgd2l0aCBgYEVPRmBg
IGluIHRoZSBwZGIgd3JhcHBlciBhbnltb3JlLCBidXQgb25seSB3aXRoIGBgcXVpdGBgLgorCisK
KworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAj
NDkzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTM1PmBf
OiBFeHBhbmQgZG9jcyBvbiByZWdpc3RlcmluZyBtYXJrcyBhbmQgdGhlIGVmZmVjdCBvZiBgYC0t
c3RyaWN0YGAuCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCistIGAjNDk0MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy80OTQyPmBfOiBgYGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zYGAgaXMgbm90IHNl
dCB0byBgYEZhbHNlYGAgYW55bW9yZS4KKworCistIGAjNTAxMyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDEzPmBfOiBweXRlc3Qgbm93IGRlcGVuZHMgb24g
YHdjd2lkdGggPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC93Y3dpZHRoPmBfXyB0byBwcm9wZXJs
eSB0cmFjayB1bmljb2RlIGNoYXJhY3RlciBzaXplcyBmb3IgbW9yZSBwcmVjaXNlIHRlcm1pbmFs
IG91dHB1dC4KKworCistIGAjNTA1OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81MDU5PmBfOiBweXRlc3RlcidzIGBgVGVzdGRpci5wb3BlbigpYGAgdXNlcyBg
YHN0ZG91dGBgIGFuZCBgYHN0ZGVycmBgIHZpYSBrZXl3b3JkIGFyZ3VtZW50cyB3aXRoIGRlZmF1
bHRzIG5vdyAoYGBzdWJwcm9jZXNzLlBJUEVgYCkuCisKKworLSBgIzUwNjkgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA2OT5gXzogVGhlIGNvZGUgZm9yIHRo
ZSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW4gdGhlIHRlcm1pbmFsIHdhcyBtb3ZlZCB0byB0aGUgdGVy
bWluYWwgcGx1Z2luLgorCisKKy0gYCM1MDgyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzUwODI+YF86IEltcHJvdmVkIHZhbGlkYXRpb24gb2Yga3dhcmdzIGZv
ciB2YXJpb3VzIG1ldGhvZHMgaW4gdGhlIHB5dGVzdGVyIHBsdWdpbi4KKworCistIGAjNTIwMiA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MjAyPmBfOiBgYHJl
Y29yZF9wcm9wZXJ0eWBgIG5vdyBlbWl0cyBhIGBgUHl0ZXN0V2FybmluZ2BgIHdoZW4gdXNlZCB3
aXRoIGBganVuaXRfZmFtaWx5PXh1bml0MmBgOiB0aGUgZml4dHVyZSBnZW5lcmF0ZXMKKyAgYGBw
cm9wZXJ0eWBgIHRhZ3MgYXMgY2hpbGRyZW4gb2YgYGB0ZXN0Y2FzZWBgLCB3aGljaCBpcyBub3Qg
cGVybWl0dGVkIGFjY29yZGluZyB0byB0aGUgbW9zdAorICBgcmVjZW50IHNjaGVtYSA8aHR0cHM6
Ly9naXRodWIuY29tL2plbmtpbnNjaS94dW5pdC1wbHVnaW4vYmxvYi9tYXN0ZXIvCisgIHNyYy9t
YWluL3Jlc291cmNlcy9vcmcvamVua2luc2NpL3BsdWdpbnMveHVuaXQvdHlwZXMvbW9kZWwveHNk
L2p1bml0LTEwLnhzZD5gX18uCisKKworLSBgIzUyMzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTIzOT5gXzogUGluIGBgcGx1Z2d5YGAgdG8gYGA8IDEuMGBg
IHNvIHdlIGRvbid0IHVwZGF0ZSB0byBgYDEuMGBgIGF1dG9tYXRpY2FsbHkgd2hlbgorICBpdCBn
ZXRzIHJlbGVhc2VkOiB0aGVyZSBhcmUgcGxhbm5lZCBicmVha2luZyBjaGFuZ2VzLCBhbmQgd2Ug
d2FudCB0byBlbnN1cmUKKyAgcHl0ZXN0IHByb3Blcmx5IHN1cHBvcnRzIGBgcGx1Z2d5IDEuMGBg
LgorCisKK3B5dGVzdCA0LjQuMiAoMjAxOS0wNS0wOCkKKz09PT09PT09PT09PT09PT09PT09PT09
PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzUwODkgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA4OT5gXzogRml4IGNyYXNoIGNhdXNlZCBieSBl
cnJvciBpbiBgYF9fcmVwcl9fYGAgZnVuY3Rpb24gd2l0aCBib3RoIGBgc2hvd2xvY2Fsc2BgIGFu
ZCB2ZXJib3NlIG91dHB1dCBlbmFibGVkLgorCisKKy0gYCM1MTM5IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxMzk+YF86IEVsaW1pbmF0ZSBjb3JlIGRlcGVu
ZGVuY3kgb24gJ3Rlcm1pbmFsJyBwbHVnaW4uCisKKworLSBgIzUyMjkgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTIyOT5gXzogUmVxdWlyZSBgYHBsdWdneT49
MC4xMS4wYGAgd2hpY2ggcmV2ZXJ0cyBhIGRlcGVuZGVuY3kgdG8gYGBpbXBvcnRsaWItbWV0YWRh
dGFgYCBhZGRlZCBpbiBgYDAuMTAuMGBgLgorICBUaGUgYGBpbXBvcnRsaWItbWV0YWRhdGFgYCBw
YWNrYWdlIGNhbm5vdCBiZSBpbXBvcnRlZCB3aGVuIGluc3RhbGxlZCBhcyBhbiBlZ2cgYW5kIGNh
dXNlcyBpc3N1ZXMgd2hlbiByZWx5aW5nIG9uIGBgc2V0dXAucHlgYCB0byBpbnN0YWxsIHRlc3Qg
ZGVwZW5kZW5jaWVzLgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCistIGAjNTE3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81MTcxPmBfOiBEb2M6IGBgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0YGAsIGBgcHl0
ZXN0X2NvbGxlY3RfZGlyZWN0b3J5YGAsIGBgcHl0ZXN0X2NvbGxlY3RfZmlsZWBgIGFuZCBgYHB5
dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZWBgIGhvb2tzJ3MgJ3BhdGgnIHBhcmFtZXRlciBkb2N1
bWVudGVkIHR5cGUgaXMgbm93IGBgcHkucGF0aC5sb2NhbGBgCisKKworLSBgIzUxODggPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTE4OD5gXzogSW1wcm92ZSBo
ZWxwIGZvciBgYC0tcnVueGZhaWxgYCBmbGFnLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFu
Z2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzUxODIgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTE4Mj5gXzogUmVtb3ZlZCBpbnRlcm5hbCBh
bmQgdW51c2VkIGBgX3B5dGVzdC5kZXByZWNhdGVkLk1BUktfSU5GT19BVFRSSUJVVEVgYC4KKwor
CitweXRlc3QgNC40LjEgKDIwMTktMDQtMTUpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1MDMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMzE+YF86IEVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUg
cHJvcGVybHkgcmVzdG9yZWQgd2hlbiB1c2luZyBweXRlc3RlcidzIGBgdGVzdGRpcmBgIGZpeHR1
cmUuCisKKworLSBgIzUwMzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNTAzOT5gXzogRml4IHJlZ3Jlc3Npb24gd2l0aCBgYC0tcGRiY2xzYGAsIHdoaWNoIHN0
b3BwZWQgd29ya2luZyB3aXRoIGxvY2FsIG1vZHVsZXMgaW4gNC4wLjAuCisKKworLSBgIzUwOTIg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA5Mj5gXzogUHJv
ZHVjZSBhIHdhcm5pbmcgd2hlbiB1bmtub3duIGtleXdvcmRzIGFyZSBwYXNzZWQgdG8gYGBweXRl
c3QucGFyYW0oLi4uKWBgLgorCisKKy0gYCM1MDk4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzUwOTg+YF86IEludmFsaWRhdGUgaW1wb3J0IGNhY2hlcyB3aXRo
IGBgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5kYGAsIHdoaWNoIGlzIHJlcXVpcmVkIHdpdGgg
bmFtZXNwYWNlIHBhY2thZ2VzIGJlaW5nIHVzZWQuCisKKworcHl0ZXN0IDQuNC4wICgyMDE5LTAz
LTI5KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0tLS0KKwor
LSBgIzIyMjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIy
ND5gXzogYGBhc3luY2BgIHRlc3QgZnVuY3Rpb25zIGFyZSBza2lwcGVkIGFuZCBhIHdhcm5pbmcg
aXMgZW1pdHRlZCB3aGVuIGEgc3VpdGFibGUKKyAgYXN5bmMgcGx1Z2luIGlzIG5vdCBpbnN0YWxs
ZWQgKHN1Y2ggYXMgYGBweXRlc3QtYXN5bmNpb2BgIG9yIGBgcHl0ZXN0LXRyaW9gYCkuCisKKyAg
UHJldmlvdXNseSBgYGFzeW5jYGAgZnVuY3Rpb25zIHdvdWxkIG5vdCBleGVjdXRlIGF0IGFsbCBi
dXQgc3RpbGwgYmUgbWFya2VkIGFzICJwYXNzZWQiLgorCisKKy0gYCMyNDgyIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0ODI+YF86IEluY2x1ZGUgbmV3IGBg
ZGlzYWJsZV90ZXN0X2lkX2VzY2FwaW5nX2FuZF9mb3JmZWl0X2FsbF9yaWdodHNfdG9fY29tbXVu
aXR5X3N1cHBvcnRgYCBvcHRpb24gdG8gZGlzYWJsZSBhc2NpaS1lc2NhcGluZyBpbiBwYXJhbWV0
cml6ZWQgdmFsdWVzLiBUaGlzIG1heSBjYXVzZSBhIHNlcmllcyBvZiBwcm9ibGVtcyBhbmQgYXMg
dGhlIG5hbWUgbWFrZXMgY2xlYXIsIHVzZSBhdCB5b3VyIG93biByaXNrLgorCisKKy0gYCM0NzE4
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ3MTg+YF86IFRo
ZSBgYC1wYGAgb3B0aW9uIGNhbiBub3cgYmUgdXNlZCB0byBlYXJseS1sb2FkIHBsdWdpbnMgYWxz
byBieSBlbnRyeS1wb2ludCBuYW1lLCBpbnN0ZWFkIG9mIGp1c3QKKyAgYnkgbW9kdWxlIG5hbWUu
CisKKyAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBlYXJseSBsb2FkIGV4dGVybmFsIHBsdWdp
bnMgbGlrZSBgYHB5dGVzdC1jb3ZgYCBpbiB0aGUgY29tbWFuZC1saW5lOjoKKworICAgICAgcHl0
ZXN0IC1wIHB5dGVzdF9jb3YKKworCistIGAjNDg1NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80ODU1PmBfOiBUaGUgYGAtLXBkYmNsc2BgIG9wdGlvbiBoYW5k
bGVzIGNsYXNzZXMgdmlhIG1vZHVsZSBhdHRyaWJ1dGVzIG5vdyAoZS5nLgorICBgYHBkYjpwZGIu
UGRiYGAgd2l0aCBgcGRiKytgXyksIGFuZCBpdHMgdmFsaWRhdGlvbiB3YXMgaW1wcm92ZWQuCisK
KyAgLi4gX3BkYisrOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvcGRicHAvCisKKworLSBgIzQ4
NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDg3NT5gXzog
VGhlIGB0ZXN0cGF0aHMgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVu
Y2UuaHRtbCNjb25mdmFsLXRlc3RwYXRocz5gX18gY29uZmlndXJhdGlvbiBvcHRpb24gaXMgbm93
IGRpc3BsYXllZCBuZXh0CisgIHRvIHRoZSBgYHJvb3RkaXJgYCBhbmQgYGBpbmlmaWxlYGAgbGlu
ZXMgaW4gdGhlIHB5dGVzdCBoZWFkZXIgaWYgdGhlIG9wdGlvbiBpcyBpbiBlZmZlY3QsIGkuZS4s
IGRpcmVjdG9yaWVzIG9yIGZpbGUgbmFtZXMgd2VyZQorICBub3QgZXhwbGljaXRseSBwYXNzZWQg
aW4gdGhlIGNvbW1hbmQgbGluZS4KKworICBBbHNvLCBgYGluaWZpbGVgYCBpcyBvbmx5IGRpc3Bs
YXllZCBpZiB0aGVyZSdzIGEgY29uZmlndXJhdGlvbiBmaWxlLCBpbnN0ZWFkIG9mIGFuIGVtcHR5
IGBgaW5pZmlsZTpgYCBzdHJpbmcuCisKKworLSBgIzQ5MTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDkxMT5gXzogRG9jdGVzdHMgY2FuIGJlIHNraXBwZWQg
bm93IGR5bmFtaWNhbGx5IHVzaW5nIGBgcHl0ZXN0LnNraXAoKWBgLgorCisKKy0gYCM0OTIwIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5MjA+YF86IEludGVy
bmFsIHJlZmFjdG9yaW5ncyBoYXZlIGJlZW4gbWFkZSBpbiBvcmRlciB0byBtYWtlIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUKKyAgYHB5dGVzdC1zdWJ0ZXN0cyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0LXN1YnRlc3RzPmBfXyBwbHVnaW4KKyAgcG9zc2libGUsIHdoaWNo
IGFkZHMgdW5pdHRlc3Qgc3ViLXRlc3Qgc3VwcG9ydCBhbmQgYSBuZXcgYGBzdWJ0ZXN0c2BgIGZp
eHR1cmUgYXMgZGlzY3Vzc2VkIGluCisgIGAjMTM2NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzY3PmBfXy4KKworICBGb3IgZGV0YWlscyBvbiB0aGUgaW50
ZXJuYWwgcmVmYWN0b3JpbmdzLCBwbGVhc2Ugc2VlIHRoZSBkZXRhaWxzIG9uIHRoZSByZWxhdGVk
IFBSLgorCisKKy0gYCM0OTMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzQ5MzE+YF86IHB5dGVzdGVyJ3MgYGBMaW5lTWF0Y2hlcmBgIGFzc2VydHMgdGhhdCB0
aGUgcGFzc2VkIGxpbmVzIGFyZSBhIHNlcXVlbmNlLgorCisKKy0gYCM0OTM2IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5MzY+YF86IEhhbmRsZSBgYC1wIHBs
dWdgYCBhZnRlciBgYC1wIG5vOnBsdWdgYC4KKworICBUaGlzIGNhbiBiZSB1c2VkIHRvIG92ZXJy
aWRlIGEgYmxvY2tlZCBwbHVnaW4gKGUuZy4gaW4gImFkZG9wdHMiKSBmcm9tIHRoZQorICBjb21t
YW5kIGxpbmUgZXRjLgorCisKKy0gYCM0OTUxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzQ5NTE+YF86IE91dHB1dCBjYXB0dXJpbmcgaXMgaGFuZGxlZCBjb3Jy
ZWN0bHkgd2hlbiBvbmx5IGNhcHR1cmluZyB2aWEgZml4dHVyZXMgKGNhcHN5cywgY2FwZnMpIHdp
dGggYGBwZGIuc2V0X3RyYWNlKClgYC4KKworCistIGAjNDk1NiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTU2PmBfOiBgYHB5dGVzdGVyYGAgc2V0cyBgYCRI
T01FYGAgYW5kIGBgJFVTRVJQUk9GSUxFYGAgdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZHVy
aW5nIHRlc3QgcnVucy4KKworICBUaGlzIGVuc3VyZXMgdG8gbm90IGxvYWQgY29uZmlndXJhdGlv
biBmaWxlcyBmcm9tIHRoZSByZWFsIHVzZXIncyBob21lIGRpcmVjdG9yeS4KKworCistIGAjNDk4
MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTgwPmBfOiBO
YW1lc3BhY2UgcGFja2FnZXMgYXJlIGhhbmRsZWQgYmV0dGVyIHdpdGggYGBtb25rZXlwYXRjaC5z
eXNwYXRoX3ByZXBlbmRgYCBhbmQgYGB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnRgYCAodmlhIGBgcGtn
X3Jlc291cmNlcy5maXh1cF9uYW1lc3BhY2VfcGFja2FnZXNgYCkuCisKKworLSBgIzQ5OTMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk5Mz5gXzogVGhlIHN0
ZXB3aXNlIHBsdWdpbiByZXBvcnRzIHN0YXR1cyBpbmZvcm1hdGlvbiBub3cuCisKKworLSBgIzUw
MDggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAwOD5gXzog
SWYgYSBgYHNldHVwLmNmZ2BgIGZpbGUgY29udGFpbnMgYGBbdG9vbDpweXRlc3RdYGAgYW5kIGFs
c28gdGhlIG5vIGxvbmdlciBzdXBwb3J0ZWQgYGBbcHl0ZXN0XWBgIHNlY3Rpb24sIHB5dGVzdCB3
aWxsIHVzZSBgYFt0b29sOnB5dGVzdF1gYCBpZ25vcmluZyBgYFtweXRlc3RdYGAuIFByZXZpb3Vz
bHkgaXQgd291bGQgdW5jb25kaXRpb25hbGx5IGVycm9yIG91dC4KKworICBUaGlzIG1ha2VzIGl0
IHNpbXBsZXIgZm9yIHBsdWdpbnMgdG8gc3VwcG9ydCBvbGQgcHl0ZXN0IHZlcnNpb25zLgorCisK
KworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzE4OTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg5NT5gXzogRml4IGJ1ZyB3aGVyZSBmaXh0dXJlcyBy
ZXF1ZXN0ZWQgZHluYW1pY2FsbHkgdmlhIGBgcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoKWBgIG1p
Z2h0IGJlIHRlYXJkb3duCisgIGJlZm9yZSB0aGUgcmVxdWVzdGluZyBmaXh0dXJlLgorCisKKy0g
YCM0ODUxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ4NTE+
YF86IHB5dGVzdGVyIHVuc2V0cyBgYFBZVEVTVF9BRERPUFRTYGAgbm93IHRvIG5vdCB1c2Ugb3V0
ZXIgb3B0aW9ucyB3aXRoIGBgdGVzdGRpci5ydW5weXRlc3QoKWBgLgorCisKKy0gYCM0OTAzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5MDM+YF86IFVzZSB0
aGUgY29ycmVjdCBtb2RpZmllZCB0aW1lIGZvciB5ZWFycyBhZnRlciAyMDM4IGluIHJld3JpdHRl
biBgYC5weWNgYCBmaWxlcy4KKworCistIGAjNDkyOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTI4PmBfOiBGaXggbGluZSBvZmZzZXRzIHdpdGggYGBTY29w
ZU1pc21hdGNoYGAgZXJyb3JzLgorCisKKy0gYCM0OTU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5NTc+YF86IGBgLXAgbm86cGx1Z2luYGAgaXMgaGFuZGxl
ZCBjb3JyZWN0bHkgZm9yIGRlZmF1bHQgKGludGVybmFsKSBwbHVnaW5zIG5vdywgZS5nLiB3aXRo
IGBgLXAgbm86Y2FwdHVyZWBgLgorCisgIFByZXZpb3VzbHkgdGhleSB3ZXJlIGxvYWRlZCAoaW1w
b3J0ZWQpIGFsd2F5cywgbWFraW5nIGUuZy4gdGhlIGBgY2FwZmRgYCBmaXh0dXJlIGF2YWlsYWJs
ZS4KKworCistIGAjNDk2OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy80OTY4PmBfOiBUaGUgcGRiIGBgcXVpdGBgIGNvbW1hbmQgaXMgaGFuZGxlZCBwcm9wZXJs
eSB3aGVuIHVzZWQgYWZ0ZXIgdGhlIGBgZGVidWdgYCBjb21tYW5kIHdpdGggYHBkYisrYF8uCisK
KyAgLi4gX3BkYisrOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvcGRicHAvCisKKworLSBgIzQ5
NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk3NT5gXzog
Rml4IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBgYC1xcWBgIG9wdGlvbiB3aGVyZSBpdCB3YXMgYmVp
bmcgY29uc2lkZXJlZCBhcyBgYC12YGAgaW5zdGVhZC4KKworCistIGAjNDk3OCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTc4PmBfOiBgYG91dGNvbWVzLkV4
aXRgYCBpcyBub3Qgc3dhbGxvd2VkIGluIGBgYXNzZXJ0cmVwcl9jb21wYXJlYGAgYW55bW9yZS4K
KworCistIGAjNDk4OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80OTg4PmBfOiBDbG9zZSBsb2dnaW5nJ3MgZmlsZSBoYW5kbGVyIGV4cGxpY2l0bHkgd2hlbiB0
aGUgc2Vzc2lvbiBmaW5pc2hlcy4KKworCistIGAjNTAwMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDAzPmBfOiBGaXggbGluZSBvZmZzZXQgd2l0aCBtYXJr
IGNvbGxlY3Rpb24gZXJyb3IgKG9mZiBieSBvbmUpLgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRh
dGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNDk3NCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTc0PmBfOiBVcGRhdGUgZG9jcyBmb3IgYGBw
eXRlc3RfY21kbGluZV9wYXJzZWBgIGhvb2sgdG8gbm90ZSBhdmFpbGFiaWxpdHkgbGltaW5hdGlv
bnMKKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy0gYCM0NzE4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzQ3MTg+YF86IGBgcGx1Z2d5Pj0wLjlgYCBpcyBub3cgcmVxdWlyZWQuCisKKworLSBgIzQ4
MTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDgxNT5gXzog
YGBmdW5jc2lncz49MS4wYGAgaXMgbm93IHJlcXVpcmVkIGZvciBQeXRob24gMi43LgorCisKKy0g
YCM0ODI5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ4Mjk+
YF86IFNvbWUgbGVmdC1vdmVyIGludGVybmFsIGNvZGUgcmVsYXRlZCB0byBgYHlpZWxkYGAgdGVz
dHMgaGFzIGJlZW4gcmVtb3ZlZC4KKworCistIGAjNDg5MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80ODkwPmBfOiBSZW1vdmUgaW50ZXJuYWxseSB1bnVzZWQg
YGBhbnlweXRob25gYCBmaXh0dXJlIGZyb20gdGhlIHB5dGVzdGVyIHBsdWdpbi4KKworCistIGAj
NDkxMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTEyPmBf
OiBSZW1vdmUgZGVwcmVjYXRlZCBTcGhpbnggZGlyZWN0aXZlLCBgYGFkZF9kZXNjcmlwdGlvbl91
bml0KClgYCwKKyAgcGluIHNwaGlueC1yZW1vdmVkLWluIHRvID49IDAuMi4wIHRvIHN1cHBvcnQg
U3BoaW54IDIuMC4KKworCistIGAjNDkxMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy80OTEzPmBfOiBGaXggcHl0ZXN0IHRlc3RzIGludm9jYXRpb24gd2l0aCBj
dXN0b20gYGBQWVRIT05QQVRIYGAuCisKKworLSBgIzQ5NjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk2NT5gXzogTmV3IGBgcHl0ZXN0X3JlcG9ydF90b19z
ZXJpYWxpemFibGVgYCBhbmQgYGBweXRlc3RfcmVwb3J0X2Zyb21fc2VyaWFsaXphYmxlYGAgKipl
eHBlcmltZW50YWwqKiBob29rcy4KKworICBUaGVzZSBob29rcyB3aWxsIGJlIHVzZWQgYnkgYGBw
eXRlc3QteGRpc3RgYCwgYGBweXRlc3Qtc3VidGVzdHNgYCwgYW5kIHRoZSByZXBsYWNlbWVudCBm
b3IKKyAgcmVzdWx0bG9nIHRvIHNlcmlhbGl6ZSBhbmQgY3VzdG9taXplIHJlcG9ydHMuCisKKyAg
VGhleSBhcmUgZXhwZXJpbWVudGFsLCBtZWFuaW5nIHRoYXQgdGhlaXIgZGV0YWlscyBtaWdodCBj
aGFuZ2Ugb3IgZXZlbiBiZSByZW1vdmVkCisgIGNvbXBsZXRlbHkgaW4gZnV0dXJlIHBhdGNoIHJl
bGVhc2VzIHdpdGhvdXQgd2FybmluZy4KKworICBGZWVkYmFjayBpcyB3ZWxjb21lIGZyb20gcGx1
Z2luIGF1dGhvcnMgYW5kIHVzZXJzIGFsaWtlLgorCisKKy0gYCM0OTg3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5ODc+YF86IGBgQ29sbGVjdG9yLnJlcHJf
ZmFpbHVyZWBgIHJlc3BlY3RzIHRoZSBgYC0tdGJgYCBvcHRpb24sIGJ1dCBvbmx5IGRlZmF1bHRz
IHRvIGBgc2hvcnRgYCBub3cgKHdpdGggYGBhdXRvYGApLgorCisKK3B5dGVzdCA0LjMuMSAoMjAx
OS0wMy0xMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0t
LS0KKworLSBgIzQ4MTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDgxMD5gXzogTG9nZ2luZyBtZXNzYWdlcyBpbnNpZGUgYGBweXRlc3RfcnVudGVzdF9sb2dy
ZXBvcnQoKWBgIGFyZSBub3cgcHJvcGVybHkgY2FwdHVyZWQgYW5kIGRpc3BsYXllZC4KKworCist
IGAjNDg2MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80ODYx
PmBfOiBJbXByb3ZlIHZhbGlkYXRpb24gb2YgY29udGVudHMgd3JpdHRlbiB0byBjYXB0dXJlZCBv
dXRwdXQgc28gaXQgYmVoYXZlcyB0aGUgc2FtZSBhcyB3aGVuIGNhcHR1cmUgaXMgZGlzYWJsZWQu
CisKKworLSBgIzQ4OTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDg5OD5gXzogRml4IGBgQXR0cmlidXRlRXJyb3I6IEZpeHR1cmVSZXF1ZXN0IGhhcyBubyAn
Y29uZmcnIGF0dHJpYnV0ZWBgIGJ1ZyBpbiBgYHRlc3RkaXIuY29weV9leGFtcGxlYGAuCisKKwor
CitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCist
IGAjNDc2OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NzY4
PmBfOiBBdm9pZCBwa2dfcmVzb3VyY2VzIGltcG9ydCBhdCB0aGUgdG9wLWxldmVsLgorCisKK3B5
dGVzdCA0LjMuMCAoMjAxOS0wMi0xNikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGVw
cmVjYXRpb25zCistLS0tLS0tLS0tLS0KKworLSBgIzQ3MjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDcyND5gXzogYGBweXRlc3Qud2FybnMoKWBgIG5vdyBl
bWl0cyBhIHdhcm5pbmcgd2hlbiBpdCByZWNlaXZlcyB1bmtub3duIGtleXdvcmQgYXJndW1lbnRz
LgorCisgIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIGludG8gYW4gZXJyb3IgaW4gdGhlIGZ1dHVyZS4K
KworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjMjc1MyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzUzPmBfOiBVc2FnZSBlcnJvcnMgZnJvbSBhcmdw
YXJzZSBhcmUgbWFwcGVkIHRvIHB5dGVzdCdzIGBgVXNhZ2VFcnJvcmBgLgorCisKKy0gYCMzNzEx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3MTE+YF86IEFk
ZCB0aGUgYGAtLWlnbm9yZS1nbG9iYGAgcGFyYW1ldGVyIHRvIGV4Y2x1ZGUgdGVzdC1tb2R1bGVz
IHdpdGggVW5peCBzaGVsbC1zdHlsZSB3aWxkY2FyZHMuCisgIEFkZCB0aGUgOmdsb2JhbHZhcjpg
Y29sbGVjdF9pZ25vcmVfZ2xvYmAgZm9yIGBgY29uZnRlc3QucHlgYCB0byBleGNsdWRlIHRlc3Qt
bW9kdWxlcyB3aXRoIFVuaXggc2hlbGwtc3R5bGUgd2lsZGNhcmRzLgorCisKKy0gYCM0Njk4IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2OTg+YF86IFRoZSB3
YXJuaW5nIGFib3V0IFB5dGhvbiAyLjcgYW5kIDMuNCBub3QgYmVpbmcgc3VwcG9ydGVkIGluIHB5
dGVzdCA1LjAgaGFzIGJlZW4gcmVtb3ZlZC4KKworICBJbiB0aGUgZW5kIGl0IHdhcyBjb25zaWRl
cmVkIHRvIGJlIG1vcmUKKyAgb2YgYSBudWlzYW5jZSB0aGFuIGFjdHVhbCB1dGlsaXR5IGFuZCB1
c2VycyBvZiB0aG9zZSBQeXRob24gdmVyc2lvbnMgc2hvdWxkbid0IGhhdmUgcHJvYmxlbXMgYXMg
YGBwaXBgYCB3aWxsIG5vdAorICBpbnN0YWxsIHB5dGVzdCA1LjAgb24gdGhvc2UgaW50ZXJwcmV0
ZXJzLgorCisKKy0gYCM0NzA3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzQ3MDc+YF86IFdpdGggdGhlIGhlbHAgb2YgbmV3IGBgc2V0X2xvZ19wYXRoKClgYCBt
ZXRob2QgdGhlcmUgaXMgYSB3YXkgdG8gc2V0IGBgbG9nX2ZpbGVgYCBwYXRocyBmcm9tIGhvb2tz
LgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzQ2NTEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY1MT5gXzogYGAtLWhlbHBgYCBhbmQgYGAt
LXZlcnNpb25gYCBhcmUgaGFuZGxlZCB3aXRoIGBgVXNhZ2VFcnJvcmBgLgorCisKKy0gYCM0Nzgy
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ3ODI+YF86IEZp
eCBgYEFzc2VydGlvbkVycm9yYGAgd2l0aCBjb2xsZWN0aW9uIG9mIGJyb2tlbiBzeW1saW5rcyB3
aXRoIHBhY2thZ2VzLgorCisKK3B5dGVzdCA0LjIuMSAoMjAxOS0wMi0xMikKKz09PT09PT09PT09
PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzI4OTUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg5NT5gXzogVGhlIGBgcHl0
ZXN0X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoYGAgaG9vayBub3cgaXMgYWxzbyBjYWxsZWQgd2l0
aCBgYC0tY29sbGVjdC1vbmx5YGAuCisKKworLSBgIzM4OTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzg5OT5gXzogRG8gbm90IHJhaXNlIGBgVXNhZ2VFcnJv
cmBgIHdoZW4gYW4gaW1wb3J0ZWQgcGFja2FnZSBoYXMgYSBgYHB5dGVzdF9wbHVnaW5zLnB5YGAg
Y2hpbGQgbW9kdWxlLgorCisKKy0gYCM0MzQ3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzQzNDc+YF86IEZpeCBvdXRwdXQgY2FwdHVyaW5nIHdoZW4gdXNpbmcg
cGRiKysgd2l0aCByZWN1cnNpdmUgZGVidWdnaW5nLgorCisKKy0gYCM0NTkyIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1OTI+YF86IEZpeCBoYW5kbGluZyBv
ZiBgYGNvbGxlY3RfaWdub3JlYGAgdmlhIHBhcmVudCBgYGNvbmZ0ZXN0LnB5YGAuCisKKworLSBg
IzQ3MDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDcwMD5g
XzogRml4IHJlZ3Jlc3Npb24gd2hlcmUgYGBzZXRVcENsYXNzYGAgd291bGQgYWx3YXlzIGJlIGNh
bGxlZCBpbiBzdWJjbGFzc2VzIGV2ZW4gaWYgYWxsIHRlc3RzCisgIHdlcmUgc2tpcHBlZCBieSBh
IGBgdW5pdHRlc3Quc2tpcCgpYGAgZGVjb3JhdG9yIGFwcGxpZWQgaW4gdGhlIHN1YmNsYXNzLgor
CisKKy0gYCM0NzM5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQ3Mzk+YF86IEZpeCBgYHBhcmFtZXRyaXplKC4uLiBpZHM9PGZ1bmN0aW9uPilgYCB3aGVuIHRo
ZSBmdW5jdGlvbiByZXR1cm5zIG5vbi1zdHJpbmdzLgorCisKKy0gYCM0NzQ1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ3NDU+YF86IEZpeC9pbXByb3ZlIGNv
bGxlY3Rpb24gb2YgYXJncyB3aGVuIHBhc3NpbmcgaW4gYGBfX2luaXRfXy5weWBgIGFuZCBhIHRl
c3QgZmlsZS4KKworCistIGAjNDc3MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy80NzcwPmBfOiBgYG1vcmVfaXRlcnRvb2xzYGAgaXMgbm93IGNvbnN0cmFpbmVk
IHRvIDw2LjAuMCB3aGVuIHJlcXVpcmVkIGZvciBQeXRob24gMi43IGNvbXBhdGliaWxpdHkuCisK
KworLSBgIzUyNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81
MjY+YF86IEZpeCAiVmFsdWVFcnJvcjogUGx1Z2luIGFscmVhZHkgcmVnaXN0ZXJlZCIgZXhjZXB0
aW9ucyB3aGVuIHJ1bm5pbmcgaW4gYnVpbGQgZGlyZWN0b3JpZXMgdGhhdCBzeW1saW5rIHRvIGFj
dHVhbCBzb3VyY2UuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKy0gYCMzODk5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzM4OTk+YF86IEFkZCBub3RlIHRvIGBgcGx1Z2lucy5yc3RgYCB0aGF0IGBgcHl0
ZXN0X3BsdWdpbnNgYCBzaG91bGQgbm90IGJlIHVzZWQgYXMgYSBuYW1lIGZvciBhIHVzZXIgbW9k
dWxlIGNvbnRhaW5pbmcgcGx1Z2lucy4KKworCistIGAjNDMyNCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MzI0PmBfOiBEb2N1bWVudCBob3cgdG8gdXNlIGBg
cmFpc2VzYGAgYW5kIGBgZG9lc19ub3RfcmFpc2VgYCB0byB3cml0ZSBwYXJhbWV0cml6ZWQgdGVz
dHMgd2l0aCBjb25kaXRpb25hbCByYWlzZXMuCisKKworLSBgIzQ3MDkgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDcwOT5gXzogRG9jdW1lbnQgaG93IHRvIGN1
c3RvbWl6ZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMgd2hlbiB1c2luZworICBgYHB5dGVzdC53YXJu
c2BgLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworLSBgIzQ3NDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDc0MT5gXzogU29tZSB2ZXJib3NpdHkgcmVsYXRlZCBhdHRyaWJ1dGVzIG9mIHRoZSBU
ZXJtaW5hbFJlcG9ydGVyIHBsdWdpbiBhcmUgbm93CisgIHJlYWQgb25seSBwcm9wZXJ0aWVzLgor
CisKK3B5dGVzdCA0LjIuMCAoMjAxOS0wMS0zMCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0K
KworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCMzMDk0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwOTQ+YF86IGBDbGFzc2ljIHh1bml0LXN0eWxlIDxodHRw
czovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUveHVuaXRfc2V0dXAuaHRtbD5gX18gZnVuY3Rp
b25zIGFuZCBtZXRob2RzCisgIG5vdyBvYmV5IHRoZSBzY29wZSBvZiAqYXV0b3VzZSogZml4dHVy
ZXMuCisKKyAgVGhpcyBmaXhlcyBhIG51bWJlciBvZiBzdXJwcmlzaW5nIGlzc3VlcyBsaWtlIGBg
c2V0dXBfbWV0aG9kYGAgYmVpbmcgY2FsbGVkIGJlZm9yZSBzZXNzaW9uLXNjb3BlZAorICBhdXRv
dXNlIGZpeHR1cmVzIChzZWUgYCM1MTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNTE3PmBfXyBmb3IgYW4gZXhhbXBsZSkuCisKKworLSBgIzQ2MjcgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDYyNz5gXzogRGlzcGxheSBh
IG1lc3NhZ2UgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBzZXNzaW9uIHdoZW4gcnVubmluZyB1bmRl
ciBQeXRob24gMi43IGFuZCAzLjQgdGhhdCBweXRlc3QgNS4wIHdpbGwgbm8gbG9uZ2VyCisgIHN1
cHBvcnQgdGhvc2UgUHl0aG9uIHZlcnNpb25zLgorCisKKy0gYCM0NjYwIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2NjA+YF86IFRoZSBudW1iZXIgb2YgKnNl
bGVjdGVkKiB0ZXN0cyBub3cgYXJlIGFsc28gZGlzcGxheWVkIHdoZW4gdGhlIGBgLWtgYCBvciBg
YC1tYGAgZmxhZ3MgYXJlIHVzZWQuCisKKworLSBgIzQ2ODggPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY4OD5gXzogYGBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0
dXNgYCBob29rIG5vdyBjYW4gYWxzbyByZWNlaXZlIGEgYGBjb25maWdgYCBwYXJhbWV0ZXIuCisK
KworLSBgIzQ2OTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NDY5MT5gXzogYGBweXRlc3RfdGVybWluYWxfc3VtbWFyeWBgIGhvb2sgbm93IGNhbiBhbHNvIHJl
Y2VpdmUgYSBgYGNvbmZpZ2BgIHBhcmFtZXRlci4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0t
CisKKy0gYCMzNTQ3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzM1NDc+YF86IGBgLS1qdW5pdHhtbGBgIGNhbiBlbWl0IFhNTCBjb21wYXRpYmxlIHdpdGggSmVu
a2lucyB4VW5pdC4KKyAgYGBqdW5pdF9mYW1pbHlgYCBJTkkgb3B0aW9uIGFjY2VwdHMgYGBsZWdh
Y3l8eHVuaXQxYGAsIHdoaWNoIHByb2R1Y2VzIG9sZCBzdHlsZSBvdXRwdXQsIGFuZCBgYHh1bml0
MmBgIHRoYXQgY29uZm9ybXMgbW9yZSBzdHJpY3RseSB0byBodHRwczovL2dpdGh1Yi5jb20vamVu
a2luc2NpL3h1bml0LXBsdWdpbi9ibG9iL3h1bml0LTIuMy4yL3NyYy9tYWluL3Jlc291cmNlcy9v
cmcvamVua2luc2NpL3BsdWdpbnMveHVuaXQvdHlwZXMvbW9kZWwveHNkL2p1bml0LTEwLnhzZAor
CisKKy0gYCM0MjgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQyODA+YF86IEltcHJvdmUgcXVpdHRpbmcgZnJvbSBwZGIsIGVzcGVjaWFsbHkgd2l0aCBgYC0t
dHJhY2VgYC4KKworICBVc2luZyBgYHFbcXVpdF1gYCBhZnRlciBgYHBkYi5zZXRfdHJhY2UoKWBg
IHdpbGwgcXVpdCBweXRlc3QgYWxzby4KKworCistIGAjNDQwMiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDAyPmBfOiBXYXJuaW5nIHN1bW1hcnkgbm93IGdy
b3VwcyB3YXJuaW5ncyBieSBtZXNzYWdlIGluc3RlYWQgb2YgYnkgdGVzdCBpZC4KKworICBUaGlz
IG1ha2VzIHRoZSBvdXRwdXQgbW9yZSBjb21wYWN0IGFuZCBiZXR0ZXIgY29udmV5cyB0aGUgZ2Vu
ZXJhbCBpZGVhIG9mIGhvdyBtdWNoIGNvZGUgaXMKKyAgYWN0dWFsbHkgZ2VuZXJhdGluZyB3YXJu
aW5ncywgaW5zdGVhZCBvZiBob3cgbWFueSB0ZXN0cyBjYWxsIHRoYXQgY29kZS4KKworCistIGAj
NDUzNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTM2PmBf
OiBgYG1vbmtleXBhdGNoLmRlbGF0dHJgYCBoYW5kbGVzIGNsYXNzIGRlc2NyaXB0b3JzIGxpa2Ug
YGBzdGF0aWNtZXRob2RgYC9gYGNsYXNzbWV0aG9kYGAuCisKKworLSBgIzQ2NDkgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY0OT5gXzogUmVzdG9yZSBtYXJr
cyBiZWluZyBjb25zaWRlcmVkIGtleXdvcmRzIGZvciBrZXl3b3JkIGV4cHJlc3Npb25zLgorCisK
Ky0gYCM0NjUzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2
NTM+YF86IGBgdG1wX3BhdGhgYCBmaXh0dXJlIGFuZCBvdGhlciByZWxhdGVkIG9uZXMgcHJvdmlk
ZXMgcmVzb2x2ZWQgcGF0aCAoYS5rLmEgcmVhbCBwYXRoKQorCisKKy0gYCM0NjY3IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2Njc+YF86IGBgcHl0ZXN0X3Rl
cm1pbmFsX3N1bW1hcnlgYCB1c2VzIHJlc3VsdCBmcm9tIGBgcHl0ZXN0X3JlcG9ydF90ZXN0c3Rh
dHVzYGAgaG9vaywgcmF0aGVyIHRoYW4gaGFyZGNvZGVkIHN0cmluZ3MuCisKKworLSBgIzQ2Njkg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY2OT5gXzogQ29y
cmVjdGx5IGhhbmRsZSBgYHVuaXR0ZXN0LlNraXBUZXN0YGAgZXhjZXB0aW9uIGNvbnRhaW5pbmcg
bm9uLWFzY2lpIGNoYXJhY3RlcnMgb24gUHl0aG9uIDIuCisKKworLSBgIzQ2ODAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY4MD5gXzogRW5zdXJlIHRoZSBg
YHRtcGRpcmBgIGFuZCB0aGUgYGB0bXBfcGF0aGBgIGZpeHR1cmVzIGFyZSB0aGUgc2FtZSBmb2xk
ZXIuCisKKworLSBgIzQ2ODEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDY4MT5gXzogRW5zdXJlIGBgdG1wX3BhdGhgYCBpcyBhbHdheXMgYSByZWFsIHBhdGgu
CisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCistIGAjNDY0MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80NjQzPmBfOiBVc2UgYGBhLml0ZW0oKWBgIGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgYGBu
cC5hc3NjYWxhcihhKWBgIGluIGBgcHl0ZXN0LmFwcHJveGBgLgorCisgIGBgbnAuYXNzY2FsYXJg
YCBoYXMgYmVlbiBgZGVwcmVjYXRlZCA8aHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L2Js
b2IvbWFzdGVyL2RvYy9yZWxlYXNlLzEuMTYuMC1ub3Rlcy5yc3QjbmV3LWRlcHJlY2F0aW9ucz5g
X18gaW4gYGBudW1weSAxLjE2LmBgLgorCisKKy0gYCM0NjU3IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2NTc+YF86IENvcHkgc2FmZXJlcHIgZnJvbSBweWxp
YgorCisKKy0gYCM0NjY4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzQ2Njg+YF86IFRoZSB2ZXJib3NlIHdvcmQgZm9yIGV4cGVjdGVkIGZhaWx1cmVzIGluIHRo
ZSB0ZXN0c3RhdHVzIHJlcG9ydCBjaGFuZ2VzIGZyb20gYGB4ZmFpbGBgIHRvIGBgWEZBSUxgYCB0
byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgdGVzdCBvdXRjb21lcy4KKworCitweXRlc3QgNC4x
LjEgKDIwMTktMDEtMTIpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcwor
LS0tLS0tLS0tCisKKy0gYCMyMjU2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzIyNTY+YF86IFNob3cgZnVsbCByZXByIHdpdGggYGBhc3NlcnQgYT09YmBgIGFu
ZCBgYC12dmBgLgorCisKKy0gYCMzNDU2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzM0NTY+YF86IEV4dGVuZCBEb2N0ZXN0LW1vZHVsZXMgdG8gaWdub3JlIG1v
Y2sgb2JqZWN0cy4KKworCistIGAjNDYxNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy80NjE3PmBfOiBGaXhlZCBgYHB5dGVzdC53YXJuc2BgIGJ1ZyB3aGVuIGNv
bnRleHQgbWFuYWdlciBpcyByZXVzZWQgKGUuZy4gbXVsdGlwbGUgcGFyYW1ldHJpemF0aW9uKS4K
KworCistIGAjNDYzMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80NjMxPmBfOiBEb24ndCByZXdyaXRlIGFzc2VydGlvbiB3aGVuIGBgX19nZXRhdHRyX19gYCBp
cyBicm9rZW4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworLSBgIzMzNzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzM3NT5gXzogRG9jdW1lbnQgdGhhdCB1c2luZyBgYHNldHVwLmNmZ2BgIG1heSBjcmFz
aCBvdGhlciB0b29scyBvciBjYXVzZSBoYXJkIHRvIHRyYWNrIGRvd24gcHJvYmxlbXMgYmVjYXVz
ZSBpdCB1c2VzIGEgZGlmZmVyZW50IHBhcnNlciB0aGFuIGBgcHl0ZXN0LmluaWBgIG9yIGBgdG94
LmluaWBgIGZpbGVzLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBgIzQ2MDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDYwMj5gXzogVW5pbnN0YWxsIGBgaHlwb3RoZXNpc2BgIGluIHJlZ2Vu
IHRveCBlbnYuCisKKworcHl0ZXN0IDQuMS4wICgyMDE5LTAxLTA1KQorPT09PT09PT09PT09PT09
PT09PT09PT09PQorCitSZW1vdmFscworLS0tLS0tLS0KKworLSBgIzIxNjkgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjE2OT5gXzogYGBweXRlc3QubWFyay5w
YXJhbWV0cml6ZWBgOiBpbiBwcmV2aW91cyB2ZXJzaW9ucywgZXJyb3JzIHJhaXNlZCBieSBpZCBm
dW5jdGlvbnMgd2VyZSBzdXBwcmVzc2VkIGFuZCBjaGFuZ2VkIGludG8gd2FybmluZ3MuIE5vdyB0
aGUgZXhjZXB0aW9ucyBhcmUgcHJvcGFnYXRlZCwgYWxvbmcgd2l0aCBhIHB5dGVzdCBtZXNzYWdl
IGluZm9ybWluZyB0aGUgbm9kZSwgcGFyYW1ldGVyIHZhbHVlIGFuZCBpbmRleCB3aGVyZSB0aGUg
ZXhjZXB0aW9uIG9jY3VycmVkLgorCisKKy0gYCMzMDc4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNzg+YF86IFJlbW92ZSBsZWdhY3kgaW50ZXJuYWwgd2Fy
bmluZ3Mgc3lzdGVtOiBgYGNvbmZpZy53YXJuYGAsIGBgTm9kZS53YXJuYGAuIFRoZSBgYHB5dGVz
dF9sb2d3YXJuaW5nYGAgbm93IGlzc3VlcyBhIHdhcm5pbmcgd2hlbiBpbXBsZW1lbnRlZC4KKwor
ICBTZWUgb3VyIGBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVj
YXRpb25zLmh0bWwjY29uZmlnLXdhcm4tYW5kLW5vZGUtd2Fybj5gX18gb24gaW5mb3JtYXRpb24g
b24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUuCisKKworLSBgIzMwNzkgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA3OT5gXzogUmVtb3ZlZCBzdXBwb3J0IGZv
ciB5aWVsZCB0ZXN0cyAtIHRoZXkgYXJlIGZ1bmRhbWVudGFsbHkgYnJva2VuIGJlY2F1c2UgdGhl
eSBkb24ndCBzdXBwb3J0IGZpeHR1cmVzIHByb3Blcmx5IHNpbmNlIGNvbGxlY3Rpb24gYW5kIHRl
c3QgZXhlY3V0aW9uIHdlcmUgc2VwYXJhdGVkLgorCisgIFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8v
ZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCN5aWVsZC10ZXN0cz5g
X18gb24gaW5mb3JtYXRpb24gb24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUuCisKKworLSBgIzMw
ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA4Mj5gXzog
UmVtb3ZlZCBzdXBwb3J0IGZvciBhcHBseWluZyBtYXJrcyBkaXJlY3RseSB0byB2YWx1ZXMgaW4g
YGBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYC4gVXNlIGBgcHl0ZXN0LnBhcmFtYGAgaW5zdGVh
ZC4KKworICBTZWUgb3VyIGBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
ZGVwcmVjYXRpb25zLmh0bWwjbWFya3MtaW4tcHl0ZXN0LW1hcmstcGFyYW1ldHJpemU+YF9fIG9u
IGluZm9ybWF0aW9uIG9uIGhvdyB0byB1cGRhdGUgeW91ciBjb2RlLgorCisKKy0gYCMzMDgzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwODM+YF86IFJlbW92
ZWQgYGBNZXRhZnVuYy5hZGRjYWxsYGAuIFRoaXMgd2FzIHRoZSBwcmVkZWNlc3NvciBtZWNoYW5p
c20gdG8gYGBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYC4KKworICBTZWUgb3VyIGBkb2NzIDxo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjbWV0YWZ1
bmMtYWRkY2FsbD5gX18gb24gaW5mb3JtYXRpb24gb24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUu
CisKKworLSBgIzMwODUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzA4NT5gXzogUmVtb3ZlZCBzdXBwb3J0IGZvciBwYXNzaW5nIHN0cmluZ3MgdG8gYGBweXRl
c3QubWFpbmBgLiBOb3csIGFsd2F5cyBwYXNzIGEgbGlzdCBvZiBzdHJpbmdzIGluc3RlYWQuCisK
KyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJl
Y2F0aW9ucy5odG1sI3Bhc3NpbmctY29tbWFuZC1saW5lLXN0cmluZy10by1weXRlc3QtbWFpbj5g
X18gb24gaW5mb3JtYXRpb24gb24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUuCisKKworLSBgIzMw
ODYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA4Nj5gXzog
YGBbcHl0ZXN0XWBgIHNlY3Rpb24gaW4gKipzZXR1cC5jZmcqKiBmaWxlcyBpcyBubyBsb25nZXIg
c3VwcG9ydGVkLCB1c2UgYGBbdG9vbDpweXRlc3RdYGAgaW5zdGVhZC4gYGBzZXR1cC5jZmdgYCBm
aWxlcworICBhcmUgbWVhbnQgZm9yIHVzZSB3aXRoIGBgZGlzdHV0aWxzYGAsIGFuZCBhIHNlY3Rp
b24gbmFtZWQgYGBweXRlc3RgYCBoYXMgbm90b3Jpb3VzbHkgYmVlbiBhIHNvdXJjZSBvZiBjb25m
bGljdHMgYW5kIGJ1Z3MuCisKKyAgTm90ZSB0aGF0IGZvciAqKnB5dGVzdC5pbmkqKiBhbmQgKip0
b3guaW5pKiogZmlsZXMgdGhlIHNlY3Rpb24gcmVtYWlucyBgYFtweXRlc3RdYGAuCisKKworLSBg
IzM2MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzYxNj5g
XzogUmVtb3ZlZCB0aGUgZGVwcmVjYXRlZCBjb21wYXQgcHJvcGVydGllcyBmb3IgYGBub2RlLkNs
YXNzL0Z1bmN0aW9uL01vZHVsZWBgIC0gdXNlIGBgcHl0ZXN0LkNsYXNzL0Z1bmN0aW9uL01vZHVs
ZWBgIG5vdy4KKworICBTZWUgb3VyIGBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvZGVwcmVjYXRpb25zLmh0bWwjaW50ZXJuYWwtY2xhc3Nlcy1hY2Nlc3NlZC10aHJvdWdo
LW5vZGU+YF9fIG9uIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1cGRhdGUgeW91ciBjb2RlLgorCisK
Ky0gYCM0NDIxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0
MjE+YF86IFJlbW92ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgYHB5dGVzdF9uYW1lc3Bh
Y2VgYCBob29rLgorCisgIFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCNweXRlc3QtbmFtZXNwYWNlPmBfXyBvbiBpbmZvcm1h
dGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIgY29kZS4KKworCistIGAjNDQ4OSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDg5PmBfOiBSZW1vdmVkIGBgcmVx
dWVzdC5jYWNoZWRfc2V0dXBgYC4gVGhpcyB3YXMgdGhlIHByZWRlY2Vzc29yIG1lY2hhbmlzbSB0
byBtb2Rlcm4gZml4dHVyZXMuCisKKyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI2NhY2hlZC1zZXR1cD5gX18gb24gaW5m
b3JtYXRpb24gb24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUuCisKKworLSBgIzQ1MzUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDUzNT5gXzogUmVtb3ZlZCB0
aGUgZGVwcmVjYXRlZCBgYFB5Q29sbGVjdG9yLm1ha2VpdGVtYGAgbWV0aG9kLiBUaGlzIG1ldGhv
ZCB3YXMgbWFkZSBwdWJsaWMgYnkgbWlzdGFrZSBhIGxvbmcgdGltZSBhZ28uCisKKworLSBgIzQ1
NDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU0Mz5gXzog
UmVtb3ZlZCBzdXBwb3J0IHRvIGRlZmluZSBmaXh0dXJlcyB1c2luZyB0aGUgYGBweXRlc3RfZnVu
Y2FyZ19fYGAgcHJlZml4LiBVc2UgdGhlIGBgQHB5dGVzdC5maXh0dXJlYGAgZGVjb3JhdG9yIGlu
c3RlYWQuCisKKyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3Rh
YmxlL2RlcHJlY2F0aW9ucy5odG1sI3B5dGVzdC1mdW5jYXJnLXByZWZpeD5gX18gb24gaW5mb3Jt
YXRpb24gb24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUuCisKKworLSBgIzQ1NDUgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU0NT5gXzogQ2FsbGluZyBmaXh0
dXJlcyBkaXJlY3RseSBpcyBub3cgYWx3YXlzIGFuIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5n
LgorCisgIFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9k
ZXByZWNhdGlvbnMuaHRtbCNjYWxsaW5nLWZpeHR1cmVzLWRpcmVjdGx5PmBfXyBvbiBpbmZvcm1h
dGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIgY29kZS4KKworCistIGAjNDU0NiA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTQ2PmBfOiBSZW1vdmUgYGBOb2Rl
LmdldF9tYXJrZXIobmFtZSlgYCB0aGUgcmV0dXJuIHZhbHVlIHdhcyBub3QgdXNhYmxlIGZvciBt
b3JlIHRoYW4gYSBleGlzdGVuY2UgY2hlY2suCisKKyAgVXNlIGBgTm9kZS5nZXRfY2xvc2VzdF9t
YXJrZXIobmFtZSlgYCBhcyBhIHJlcGxhY2VtZW50LgorCisKKy0gYCM0NTQ3IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1NDc+YF86IFRoZSBkZXByZWNhdGVk
IGBgcmVjb3JkX3htbF9wcm9wZXJ0eWBgIGZpeHR1cmUgaGFzIGJlZW4gcmVtb3ZlZCwgdXNlIHRo
ZSBtb3JlIGdlbmVyaWMgYGByZWNvcmRfcHJvcGVydHlgYCBpbnN0ZWFkLgorCisgIFNlZSBvdXIg
YGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRt
bCNyZWNvcmQteG1sLXByb3BlcnR5PmBfXyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCistIGAj
NDU0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTQ4PmBf
OiBBbiBlcnJvciBpcyBub3cgcmFpc2VkIGlmIHRoZSBgYHB5dGVzdF9wbHVnaW5zYGAgdmFyaWFi
bGUgaXMgZGVmaW5lZCBpbiBhIG5vbi10b3AtbGV2ZWwgYGBjb25mdGVzdC5weWBgIGZpbGUgKGku
ZS4sIG5vdCByZXNpZGluZyBpbiB0aGUgYGByb290ZGlyYGApLgorCisgIFNlZSBvdXIgYGRvY3Mg
PGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCNweXRl
c3QtcGx1Z2lucy1pbi1ub24tdG9wLWxldmVsLWNvbmZ0ZXN0LWZpbGVzPmBfXyBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KKworCistIGAjODkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzg5MT5gXzogUmVtb3ZlIGBgdGVzdGZ1bmN0aW9uLm1hcmtlcm5hbWVgYCBh
dHRyaWJ1dGVzIC0gdXNlIGBgTm9kZS5pdGVyX21hcmtlcnMobmFtZT1Ob25lKWBgIHRvIGl0ZXJh
dGUgdGhlbS4KKworCisKK0RlcHJlY2F0aW9ucworLS0tLS0tLS0tLS0tCisKKy0gYCMzMDUwIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNTA+YF86IERlcHJl
Y2F0ZWQgdGhlIGBgcHl0ZXN0LmNvbmZpZ2BgIGdsb2JhbC4KKworICBTZWUgaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI3B5dGVzdC1jb25maWctZ2xv
YmFsIGZvciByYXRpb25hbGUuCisKKworLSBgIzM5NzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk3ND5gXzogUGFzc2luZyB0aGUgYGBtZXNzYWdlYGAgcGFy
YW1ldGVyIG9mIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyBpc3N1ZXMgYSBgYERlcHJlY2F0aW9uV2Fy
bmluZ2BgLgorCisgIEl0IGlzIGEgY29tbW9uIG1pc3Rha2UgdG8gdGhpbmsgdGhpcyBwYXJhbWV0
ZXIgd2lsbCBtYXRjaCB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UsIHdoaWxlIGluIGZhY3QKKyAgaXQg
b25seSBzZXJ2ZXMgdG8gcHJvdmlkZSBhIGN1c3RvbSBtZXNzYWdlIGluIGNhc2UgdGhlIGBgcHl0
ZXN0LnJhaXNlc2BgIGNoZWNrIGZhaWxzLiBUbyBhdm9pZCB0aGlzCisgIG1pc3Rha2UgYW5kIGJl
Y2F1c2UgaXQgaXMgYmVsaWV2ZWQgdG8gYmUgbGl0dGxlIHVzZWQsIHB5dGVzdCBpcyBkZXByZWNh
dGluZyBpdCB3aXRob3V0IHByb3ZpZGluZworICBhbiBhbHRlcm5hdGl2ZSBmb3IgdGhlIG1vbWVu
dC4KKworICBJZiB5b3UgaGF2ZSBjb25jZXJucyBhYm91dCB0aGlzLCBwbGVhc2UgY29tbWVudCBv
biBgaXNzdWUgIzM5NzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzk3ND5gX18uCisKKworLSBgIzQ0MzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDQzNT5gXzogRGVwcmVjYXRlZCBgYHJhaXNlcyguLi4sICdjb2RlKGFz
X2Ffc3RyaW5nKScpYGAgYW5kIGBgd2FybnMoLi4uLCAnY29kZShhc19hX3N0cmluZyknKWBgLgor
CisgIFNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0
bWwjcmFpc2VzLXdhcm5zLWV4ZWMgZm9yIHJhdGlvbmFsZSBhbmQgZXhhbXBsZXMuCisKKworCitG
ZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzMxOTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzE5MT5gXzogQSB3YXJuaW5nIGlzIG5vdyBpc3N1ZWQgd2hlbiBh
c3NlcnRpb25zIGFyZSBtYWRlIGZvciBgYE5vbmVgYC4KKworICBUaGlzIGlzIGEgY29tbW9uIHNv
dXJjZSBvZiBjb25mdXNpb24gYW1vbmcgbmV3IHVzZXJzLCB3aGljaCB3cml0ZToKKworICAuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgIGFzc2VydCBtb2NrZWRfb2JqZWN0LmFzc2VydF9j
YWxsZWRfd2l0aCgzLCA0LCA1LCBrZXk9InZhbHVlIikKKworICBXaGVuIHRoZXkgc2hvdWxkIHdy
aXRlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgbW9ja2VkX29iamVjdC5h
c3NlcnRfY2FsbGVkX3dpdGgoMywgNCwgNSwga2V5PSJ2YWx1ZSIpCisKKyAgQmVjYXVzZSB0aGUg
YGBhc3NlcnRfY2FsbGVkX3dpdGhgYCBtZXRob2Qgb2YgbW9jayBvYmplY3RzIGFscmVhZHkgZXhl
Y3V0ZXMgYW4gYXNzZXJ0aW9uLgorCisgIFRoaXMgd2FybmluZyB3aWxsIG5vdCBiZSBpc3N1ZWQg
d2hlbiBgYE5vbmVgYCBpcyBleHBsaWNpdGx5IGNoZWNrZWQuIEFuIGFzc2VydGlvbiBsaWtlOgor
CisgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgYXNzZXJ0IHZhcmlhYmxlIGlzIE5v
bmUKKworICB3aWxsIG5vdCBpc3N1ZSB0aGUgd2FybmluZy4KKworCistIGAjMzYzMiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjMyPmBfOiBSaWNoZXIgZXF1
YWxpdHkgY29tcGFyaXNvbiBpbnRyb3NwZWN0aW9uIG9uIGBgQXNzZXJ0aW9uRXJyb3JgYCBmb3Ig
b2JqZWN0cyBjcmVhdGVkIHVzaW5nIGBhdHRycyA8aHR0cDovL3d3dy5hdHRycy5vcmcvZW4vc3Rh
YmxlLz5gX18gb3IgYGRhdGFjbGFzc2VzIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJh
cnkvZGF0YWNsYXNzZXMuaHRtbD5gXyAoUHl0aG9uIDMuNyssIGBiYWNrcG9ydGVkIHRvIDMuNiA8
aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2RhdGFjbGFzc2VzPmBfXykuCisKKworLSBgIzQyNzgg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDI3OD5gXzogYGBD
QUNIRURJUi5UQUdgYCBmaWxlcyBhcmUgbm93IGNyZWF0ZWQgaW5zaWRlIGNhY2hlIGRpcmVjdG9y
aWVzLgorCisgIFRob3NlIGZpbGVzIGFyZSBwYXJ0IG9mIHRoZSBgQ2FjaGUgRGlyZWN0b3J5IFRh
Z2dpbmcgU3RhbmRhcmQgPGh0dHA6Ly93d3cuYmZvcmQuaW5mby9jYWNoZWRpci9zcGVjLmh0bWw+
YF9fLCBhbmQgY2FuCisgIGJlIHVzZWQgYnkgYmFja3VwIG9yIHN5bmNocm9uaXphdGlvbiBwcm9n
cmFtcyB0byBpZGVudGlmeSBweXRlc3QncyBjYWNoZSBkaXJlY3RvcnkgYXMgc3VjaC4KKworCist
IGAjNDI5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Mjky
PmBfOiBgYHB5dGVzdC5vdXRjb21lcy5FeGl0YGAgaXMgZGVyaXZlZCBmcm9tIGBgU3lzdGVtRXhp
dGBgIGluc3RlYWQgb2YgYGBLZXlib2FyZEludGVycnVwdGBgLiBUaGlzIGFsbG93cyB1cyB0byBi
ZXR0ZXIgaGFuZGxlIGBgcGRiYGAgZXhpdGluZy4KKworCistIGAjNDM3MSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MzcxPmBfOiBVcGRhdGVkIHRoZSBgYC0t
Y29sbGVjdC1vbmx5YGAgb3B0aW9uIHRvIGRpc3BsYXkgdGVzdCBkZXNjcmlwdGlvbnMgd2hlbiBy
YW4gdXNpbmcgYGAtLXZlcmJvc2VgYC4KKworCistIGAjNDM4NiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Mzg2PmBfOiBSZXN0cnVjdHVyZWQgYGBFeGNlcHRp
b25JbmZvYGAgb2JqZWN0IGNvbnN0cnVjdGlvbiBhbmQgZW5zdXJlIGluY29tcGxldGUgaW5zdGFu
Y2VzIGhhdmUgYSBgYHJlcHJgYC9gYHN0cmBgLgorCisKKy0gYCM0NDE2IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0MTY+YF86IHBkYjogYWRkZWQgc3VwcG9y
dCBmb3Iga2V5d29yZCBhcmd1bWVudHMgd2l0aCBgYHBkYi5zZXRfdHJhY2VgYC4KKworICBJdCBo
YW5kbGVzIGBgaGVhZGVyYGAgc2ltaWxhciB0byBQeXRob24gMy43IGRvZXMgaXQsIGFuZCBmb3J3
YXJkcyBhbnkKKyAgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIGBgUGRiYGAgY29uc3Ry
dWN0b3IuCisKKyAgVGhpcyBhbGxvd3MgZm9yIGBgX19pbXBvcnRfXygicGRiIikuc2V0X3RyYWNl
KHNraXA9WyJmb28uKiJdKWBgLgorCisKKy0gYCM0NDgzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0ODM+YF86IEFkZGVkIGluaSBwYXJhbWV0ZXIgYGBqdW5p
dF9kdXJhdGlvbl9yZXBvcnRgYCB0byBvcHRpb25hbGx5IHJlcG9ydCB0ZXN0IGNhbGwgZHVyYXRp
b25zLCBleGNsdWRpbmcgc2V0dXAgYW5kIHRlYXJkb3duIHRpbWVzLgorCisgIFRoZSBKVW5pdCBY
TUwgc3BlY2lmaWNhdGlvbiBhbmQgdGhlIGRlZmF1bHQgcHl0ZXN0IGJlaGF2aW9yIGlzIHRvIGlu
Y2x1ZGUgc2V0dXAgYW5kIHRlYXJkb3duIHRpbWVzIGluIHRoZSB0ZXN0IGR1cmF0aW9uCisgIHJl
cG9ydC4gWW91IGNhbiBpbmNsdWRlIGp1c3QgdGhlIGNhbGwgZHVyYXRpb25zIGluc3RlYWQgKGV4
Y2x1ZGluZyBzZXR1cCBhbmQgdGVhcmRvd24pIGJ5IGFkZGluZyB0aGlzIHRvIHlvdXIgYGBweXRl
c3QuaW5pYGAgZmlsZToKKworICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAgIFtweXRlc3Rd
CisgICAgICBqdW5pdF9kdXJhdGlvbl9yZXBvcnQgPSBjYWxsCisKKworLSBgIzQ1MzIgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDUzMj5gXzogYGAtcmFgYCBu
b3cgd2lsbCBzaG93IGVycm9ycyBhbmQgZmFpbHVyZXMgbGFzdCwgaW5zdGVhZCBvZiBhcyB0aGUg
Zmlyc3QgaXRlbXMgaW4gdGhlIHN1bW1hcnkuCisKKyAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8g
b2J0YWluIGEgbGlzdCBvZiBlcnJvcnMgYW5kIGZhaWx1cmVzIHRvIHJ1biB0ZXN0cyBzZWxlY3Rp
dmVseS4KKworCistIGAjNDU5OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80NTk5PmBfOiBgYHB5dGVzdC5pbXBvcnRvcnNraXBgYCBub3cgc3VwcG9ydHMgYSBg
YHJlYXNvbmBgIHBhcmFtZXRlciwgd2hpY2ggd2lsbCBiZSBzaG93biB3aGVuIHRoZQorICByZXF1
ZXN0ZWQgbW9kdWxlIGNhbm5vdCBiZSBpbXBvcnRlZC4KKworCisKK0J1ZyBGaXhlcworLS0tLS0t
LS0tCisKKy0gYCMzNTMyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM1MzI+YF86IGBgLXBgYCBub3cgYWNjZXB0cyBpdHMgYXJndW1lbnQgd2l0aG91dCBhIHNw
YWNlIGJldHdlZW4gdGhlIHZhbHVlLCBmb3IgZXhhbXBsZSBgYC1wbXlwbHVnaW5gYC4KKworCist
IGAjNDMyNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MzI3
PmBfOiBgYGFwcHJveGBgIGFnYWluIHdvcmtzIHdpdGggbW9yZSBnZW5lcmljIGNvbnRhaW5lcnMs
IG1vcmUgcHJlY2lzZWx5IGluc3RhbmNlcyBvZiBgYEl0ZXJhYmxlYGAgYW5kIGBgU2l6ZWRgYCBp
bnN0ZWFkIG9mIG1vcmUgcmVzdHJpY3RpdmUgYGBTZXF1ZW5jZWBgLgorCisKKy0gYCM0Mzk3IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzOTc+YF86IEVuc3Vy
ZSB0aGF0IG5vZGUgaWRzIGFyZSBwcmludGFibGUuCisKKworLSBgIzQ0MzUgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQzNT5gXzogRml4ZWQgYGByYWlzZXMo
Li4uLCAnY29kZShzdHJpbmcpJylgYCBmcmFtZSBmaWxlbmFtZS4KKworCistIGAjNDQ1OCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDU4PmBfOiBEaXNwbGF5
IGFjdHVhbCB0ZXN0IGlkcyBpbiBgYC0tY29sbGVjdC1vbmx5YGAuCisKKworCitJbXByb3ZlZCBE
b2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM0NTU3IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1NTc+YF86IE1hcmtlcnMgZXhh
bXBsZSBkb2N1bWVudGF0aW9uIHBhZ2UgdXBkYXRlZCB0byBzdXBwb3J0IGxhdGVzdCBweXRlc3Qg
dmVyc2lvbi4KKworCistIGAjNDU1OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy80NTU4PmBfOiBVcGRhdGUgY2FjaGUgZG9jdW1lbnRhdGlvbiBleGFtcGxlIHRv
IGNvcnJlY3RseSBzaG93IGNhY2hlIGhpdCBhbmQgbWlzcy4KKworCistIGAjNDU4MCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTgwPmBfOiBJbXByb3ZlZCBk
ZXRhaWxlZCBzdW1tYXJ5IHJlcG9ydCBkb2N1bWVudGF0aW9uLgorCisKKworVHJpdmlhbC9JbnRl
cm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQ0NDcgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQ0Nz5gXzogQ2hhbmdlZCB0
aGUgZGVwcmVjYXRpb24gdHlwZSBvZiBgYC0tcmVzdWx0LWxvZ2BgIHRvIGBgUHl0ZXN0RGVwcmVj
YXRpb25XYXJuaW5nYGAuCisKKyAgSXQgd2FzIGRlY2lkZWQgdG8gcmVtb3ZlIHRoaXMgZmVhdHVy
ZSBhdCB0aGUgbmV4dCBtYWpvciByZXZpc2lvbi4KKworCitweXRlc3QgNC4wLjIgKDIwMTgtMTIt
MTMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisK
Ky0gYCM0MjY1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQy
NjU+YF86IFZhbGlkYXRlIGFyZ3VtZW50cyBmcm9tIHRoZSBgYFBZVEVTVF9BRERPUFRTYGAgZW52
aXJvbm1lbnQgdmFyaWFibGUgYW5kIHRoZSBgYGFkZG9wdHNgYCBpbmkgb3B0aW9uIHNlcGFyYXRl
bHkuCisKKworLSBgIzQ0MzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDQzNT5gXzogRml4IGBgcmFpc2VzKC4uLiwgJ2NvZGUoc3RyaW5nKScpYGAgZnJhbWUg
ZmlsZW5hbWUuCisKKworLSBgIzQ1MDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNDUwMD5gXzogV2hlbiBhIGZpeHR1cmUgeWllbGRzIGFuZCBhIGxvZyBjYWxs
IGlzIG1hZGUgYWZ0ZXIgdGhlIHRlc3QgcnVucywgYW5kLCBpZiB0aGUgdGVzdCBpcyBpbnRlcnJ1
cHRlZCwgY2FwdHVyZSBhdHRyaWJ1dGVzIGFyZSBgYE5vbmVgYC4KKworCistIGAjNDUzOCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTM4PmBfOiBSYWlzZSBg
YFR5cGVFcnJvcmBgIGZvciBgYHdpdGggcmFpc2VzKC4uLiwgbWF0Y2g9PG5vbi1Ob25lIGZhbHNl
eSB2YWx1ZT4pYGAuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKy0gYCMxNDk1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzE0OTU+YF86IERvY3VtZW50IGNvbW1vbiBkb2N0ZXN0IGZpeHR1cmUgZGlyZWN0
b3J5IHRyZWUgc3RydWN0dXJlIHBpdGZhbGxzCisKKworcHl0ZXN0IDQuMC4xICgyMDE4LTExLTIz
KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCist
IGAjMzk1MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTUy
PmBfOiBEaXNwbGF5IHdhcm5pbmdzIGJlZm9yZSAic2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8iIGFn
YWluLCBidXQgc3RpbGwgbGF0ZXIgd2FybmluZ3MgaW4gdGhlIGVuZC4KKworCistIGAjNDM4NiA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Mzg2PmBfOiBIYW5k
bGUgdW5pbml0aWFsaXplZCBleGNlcHRpb25pbmZvIGluIHJlcHIvc3RyLgorCisKKy0gYCM0Mzkz
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzOTM+YF86IERv
IG5vdCBjcmVhdGUgYGAuZ2l0aWdub3JlYGAvYGBSRUFETUUubWRgYCBmaWxlcyBpbiBleGlzdGlu
ZyBjYWNoZSBkaXJlY3Rvcmllcy4KKworCistIGAjNDQwMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDAwPmBfOiBSZWFycmFuZ2Ugd2FybmluZyBoYW5kbGlu
ZyBmb3IgdGhlIHlpZWxkIHRlc3QgZXJyb3JzIHNvIHRoZSBvcHQtb3V0IGluIDQuMC54IGNvcnJl
Y3RseSB3b3Jrcy4KKworCistIGAjNDQwNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy80NDA1PmBfOiBGaXggY29sbGVjdGlvbiBvZiB0ZXN0cGF0aHMgd2l0aCBg
YC0tcHlhcmdzYGAuCisKKworLSBgIzQ0MTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDQxMj5gXzogRml4IGFzc2VydGlvbiByZXdyaXRpbmcgaW52b2x2aW5n
IGBgU3RhcnJlZGBgICsgc2lkZS1lZmZlY3RzLgorCisKKy0gYCM0NDI1IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0MjU+YF86IEVuc3VyZSB3ZSByZXNvbHZl
IHRoZSBhYnNvbHV0ZSBwYXRoIHdoZW4gdGhlIGdpdmVuIGBgLS1iYXNldGVtcGBgIGlzIGEgcmVs
YXRpdmUgcGF0aC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy0gYCM0MzE1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQzMTU+YF86IFVzZSBgYHBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbmBg
IGluc3RlYWQgb2YgYGBMb29zZVZlcnNpb25gYCBpbiBtaW52ZXJzaW9uIGNoZWNrLgorCisKKy0g
YCM0NDQwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0NDA+
YF86IEFkanVzdCB0aGUgc3RhY2sgbGV2ZWwgb2Ygc29tZSBpbnRlcm5hbCBweXRlc3Qgd2Fybmlu
Z3MuCisKKworcHl0ZXN0IDQuMC4wICgyMDE4LTExLTEzKQorPT09PT09PT09PT09PT09PT09PT09
PT09PQorCitSZW1vdmFscworLS0tLS0tLS0KKworLSBgIzM3MzcgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzczNz5gXzogKipSZW1vdmVkSW5QeXRlc3Q0V2Fy
bmluZ3MgYXJlIG5vdyBlcnJvcnMgYnkgZGVmYXVsdC4qKgorCisgIEZvbGxvd2luZyBvdXIgcGxh
biB0byByZW1vdmUgZGVwcmVjYXRlZCBmZWF0dXJlcyB3aXRoIGFzIGxpdHRsZSBkaXNydXB0aW9u
IGFzCisgIHBvc3NpYmxlLCBhbGwgd2FybmluZ3Mgb2YgdHlwZSBgYFJlbW92ZWRJblB5dGVzdDRX
YXJuaW5nc2BgIG5vdyBnZW5lcmF0ZSBlcnJvcnMKKyAgaW5zdGVhZCBvZiB3YXJuaW5nIG1lc3Nh
Z2VzLgorCisgICoqVGhlIGFmZmVjdGVkIGZlYXR1cmVzIHdpbGwgYmUgZWZmZWN0aXZlbHkgcmVt
b3ZlZCBpbiBweXRlc3QgNC4xKiosIHNvIHBsZWFzZSBjb25zdWx0IHRoZQorICBgRGVwcmVjYXRp
b25zIGFuZCBSZW1vdmFscyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJl
Y2F0aW9ucy5odG1sPmBfXworICBzZWN0aW9uIGluIHRoZSBkb2NzIGZvciBkaXJlY3Rpb25zIG9u
IGhvdyB0byB1cGRhdGUgZXhpc3RpbmcgY29kZS4KKworICBJbiB0aGUgcHl0ZXN0IGBgNC4wLlhg
YCBzZXJpZXMsIGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgZXJyb3JzIGJhY2sgaW50byB3
YXJuaW5ncyBhcyBhIHN0b3AKKyAgZ2FwIG1lYXN1cmUgYnkgYWRkaW5nIHRoaXMgdG8geW91ciBg
YHB5dGVzdC5pbmlgYCBmaWxlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgW3B5
dGVzdF0KKyAgICAgIGZpbHRlcndhcm5pbmdzID0KKyAgICAgICAgICBpZ25vcmU6OnB5dGVzdC5S
ZW1vdmVkSW5QeXRlc3Q0V2FybmluZworCisgIEJ1dCB0aGlzIHdpbGwgc3RvcCB3b3JraW5nIHdo
ZW4gcHl0ZXN0IGBgNC4xYGAgaXMgcmVsZWFzZWQuCisKKyAgKipJZiB5b3UgaGF2ZSBjb25jZXJu
cyoqIGFib3V0IHRoZSByZW1vdmFsIG9mIGEgc3BlY2lmaWMgZmVhdHVyZSwgcGxlYXNlIGFkZCBh
CisgIGNvbW1lbnQgdG8gYCM0MzQ4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQzNDg+YF9fLgorCisKKy0gYCM0MzU4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzNTg+YF86IFJlbW92ZSB0aGUgYGA6OigpYGAgbm90YXRp
b24gdG8gZGVub3RlIGEgdGVzdCBjbGFzcyBpbnN0YW5jZSBpbiBub2RlIGlkcy4KKworICBQcmV2
aW91c2x5LCBub2RlIGlkcyB0aGF0IGNvbnRhaW4gdGVzdCBpbnN0YW5jZXMgd291bGQgdXNlIGBg
OjooKWBgIHRvIGRlbm90ZSB0aGUgaW5zdGFuY2UgbGlrZSB0aGlzOjoKKworICAgICAgdGVzdF9m
b28ucHk6OlRlc3Q6OigpOjp0ZXN0X2JhcgorCisgIFRoZSBleHRyYSBgYDo6KClgYCB3YXMgcHV6
emxpbmcgdG8gbW9zdCB1c2VycyBhbmQgaGFzIGJlZW4gcmVtb3ZlZCwgc28gdGhhdCB0aGUgdGVz
dCBpZCBiZWNvbWVzIG5vdzo6CisKKyAgICAgIHRlc3RfZm9vLnB5OjpUZXN0Ojp0ZXN0X2Jhcgor
CisgIFRoaXMgY2hhbmdlIGNvdWxkIG5vdCBhY2NvbXBhbnkgYSBkZXByZWNhdGlvbiBwZXJpb2Qg
YXMgaXMgdXN1YWwgd2hlbiB1c2VyLWZhY2luZyBmdW5jdGlvbmFsaXR5IGNoYW5nZXMgYmVjYXVz
ZQorICBpdCB3YXMgbm90IHJlYWxseSBwb3NzaWJsZSB0byBkZXRlY3Qgd2hlbiB0aGUgZnVuY3Rp
b25hbGl0eSB3YXMgYmVpbmcgdXNlZCBleHBsaWNpdGx5LgorCisgIFRoZSBleHRyYSBgYDo6KClg
YCBtaWdodCBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBzb21lIHBsYWNlcyBpbnRlcm5hbGx5IGFscmVh
ZHksCisgIHdoaWNoIHRoZW4gbGVkIHRvIGNvbmZ1c2lvbiBpbiBwbGFjZXMgd2hlcmUgaXQgd2Fz
IGV4cGVjdGVkLCBlLmcuIHdpdGgKKyAgYGAtLWRlc2VsZWN0YGAgKGAjNDEyNyA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTI3PmBfKS4KKworICBUZXN0IGNs
YXNzIGluc3RhbmNlcyBhcmUgYWxzbyBub3QgbGlzdGVkIHdpdGggYGAtLWNvbGxlY3Qtb25seWBg
IGFueW1vcmUuCisKKworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzQyNzAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDI3MD5gXzogVGhlIGBgY2FjaGVf
ZGlyYGAgb3B0aW9uIHVzZXMgYGAkVE9YX0VOVl9ESVJgYCBhcyBwcmVmaXggKGlmIHNldCBpbiB0
aGUgZW52aXJvbm1lbnQpLgorCisgIFRoaXMgdXNlcyBhIGRpZmZlcmVudCBjYWNoZSBwZXIgdG94
IGVudmlyb25tZW50IGJ5IGRlZmF1bHQuCisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCist
IGAjMzU1NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTU0
PmBfOiBGaXggYGBDYWxsSW5mby5fX3JlcHJfX2BgIGZvciB3aGVuIHRoZSBjYWxsIGlzIG5vdCBm
aW5pc2hlZCB5ZXQuCisKKworcHl0ZXN0IDMuMTAuMSAoMjAxOC0xMS0xMSkKKz09PT09PT09PT09
PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM0Mjg3IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQyODc+YF86IEZpeCBuZXN0
ZWQgdXNhZ2Ugb2YgZGVidWdnaW5nIHBsdWdpbiAocGRiKSwgZS5nLiB3aXRoIHB5dGVzdGVyJ3Mg
YGB0ZXN0ZGlyLnJ1bnB5dGVzdGBgLgorCisKKy0gYCM0MzA0IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzMDQ+YF86IEJsb2NrIHRoZSBgYHN0ZXB3aXNlYGAg
cGx1Z2luIGlmIGBgY2FjaGVwcm92aWRlcmBgIGlzIGFsc28gYmxvY2tlZCwgYXMgb25lIGRlcGVu
ZHMgb24gdGhlIG90aGVyLgorCisKKy0gYCM0MzA2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQzMDY+YF86IFBhcnNlIGBgbWludmVyc2lvbmBgIGFzIGFuIGFj
dHVhbCB2ZXJzaW9uIGFuZCBub3QgYXMgZG90LXNlcGFyYXRlZCBzdHJpbmdzLgorCisKKy0gYCM0
MzEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzMTA+YF86
IEZpeCBkdXBsaWNhdGUgY29sbGVjdGlvbiBkdWUgdG8gbXVsdGlwbGUgYXJncyBtYXRjaGluZyB0
aGUgc2FtZSBwYWNrYWdlcy4KKworCistIGAjNDMyMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80MzIxPmBfOiBGaXggYGBpdGVtLm5vZGVpZGBgIHdpdGggcmVz
b2x2ZWQgc3ltbGlua3MuCisKKworLSBgIzQzMjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNDMyNT5gXzogRml4IGNvbGxlY3Rpb24gb2YgZGlyZWN0IHN5bWxp
bmtlZCBmaWxlcywgd2hlcmUgdGhlIHRhcmdldCBkb2VzIG5vdCBtYXRjaCBgYHB5dGhvbl9maWxl
c2BgLgorCisKKy0gYCM0MzI5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzQzMjk+YF86IEZpeCBUeXBlRXJyb3IgaW4gcmVwb3J0X2NvbGxlY3Qgd2l0aCBfY29s
bGVjdF9yZXBvcnRfbGFzdF93cml0ZS4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM0MzA1IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzMDU+YF86IFJlcGxhY2UgYnl0ZS91bmljb2RlIGhl
bHBlcnMgaW4gdGVzdF9jYXB0dXJlIHdpdGggcHl0aG9uIGxldmVsIHN5bnRheC4KKworCitweXRl
c3QgMy4xMC4wICgyMDE4LTExLTAzKQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRmVh
dHVyZXMKKy0tLS0tLS0tCisKKy0gYCMyNjE5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI2MTk+YF86IFJlc3VtZSBjYXB0dXJpbmcgb3V0cHV0IGFmdGVyIGBg
Y29udGludWVgYCB3aXRoIGBgX19pbXBvcnRfXygicGRiIikuc2V0X3RyYWNlKClgYC4KKworICBU
aGlzIGFsc28gYWRkcyBhIG5ldyBgYHB5dGVzdF9sZWF2ZV9wZGJgYCBob29rLCBhbmQgcGFzc2Vz
IGluIGBgcGRiYGAgdG8gdGhlCisgIGV4aXN0aW5nIGBgcHl0ZXN0X2VudGVyX3BkYmBgIGhvb2su
CisKKworLSBgIzQxNDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDE0Nz5gXzogQWRkIGBgLS1zd2BgLCBgYC0tc3RlcHdpc2VgYCBhcyBhbiBhbHRlcm5hdGl2
ZSB0byBgYC0tbGYgLXhgYCBmb3Igc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUsIGJ1dCBz
dGFydGluZyB0aGUgbmV4dCB0ZXN0IGludm9jYXRpb24gZnJvbSB0aGF0IHRlc3QuICBTZWUgYHRo
ZSBkb2N1bWVudGF0aW9uIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2FjaGUu
aHRtbCNzdGVwd2lzZT5gX18gZm9yIG1vcmUgaW5mby4KKworCistIGAjNDE4OCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTg4PmBfOiBNYWtlIGBgLS1jb2xv
cmBgIGVtaXQgY29sb3JmdWwgZG90cyB3aGVuIG5vdCBydW5uaW5nIGluIHZlcmJvc2UgbW9kZS4g
RWFybGllciwgaXQgd291bGQgb25seSBjb2xvcml6ZSB0aGUgdGVzdC1ieS10ZXN0IG91dHB1dCBp
ZiBgYC0tdmVyYm9zZWBgIHdhcyBhbHNvIHBhc3NlZC4KKworCistIGAjNDIyNSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MjI1PmBfOiBJbXByb3ZlIHBlcmZv
cm1hbmNlIHdpdGggY29sbGVjdGlvbiByZXBvcnRpbmcgaW4gbm9uLXF1aWV0IG1vZGUgd2l0aCB0
ZXJtaW5hbHMuCisKKyAgVGhlICJjb2xsZWN0aW5nIOKApiIgbWVzc2FnZSBpcyBvbmx5IHByaW50
ZWQvdXBkYXRlZCBldmVyeSAwLjVzLgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBg
IzI3MDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjcwMT5g
XzogRml4IGZhbHNlIGBgUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmc6IHVzYWdlIG9mIFNlc3Npb24u
Li4gaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBweXRlc3RgYCB3YXJuaW5ncy4KKworCistIGAj
NDA0NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDQ2PmBf
OiBGaXggcHJvYmxlbXMgd2l0aCBydW5uaW5nIHRlc3RzIGluIHBhY2thZ2UgYGBfX2luaXRfXy5w
eWBgIGZpbGVzLgorCisKKy0gYCM0MjYwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQyNjA+YF86IFN3YWxsb3cgd2FybmluZ3MgZHVyaW5nIGFub255bW91cyBj
b21waWxhdGlvbiBvZiBzb3VyY2UuCisKKworLSBgIzQyNjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDI2Mj5gXzogRml4IGFjY2VzcyBkZW5pZWQgZXJyb3Ig
d2hlbiBkZWxldGluZyBzdGFsZSBkaXJlY3RvcmllcyBjcmVhdGVkIGJ5IGBgdG1wZGlyYGAgLyBg
YHRtcF9wYXRoYGAuCisKKworLSBgIzYxMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy82MTE+YF86IE5hbWluZyBhIGZpeHR1cmUgYGByZXF1ZXN0YGAgd2lsbCBu
b3cgcmFpc2UgYSB3YXJuaW5nOiB0aGUgYGByZXF1ZXN0YGAgZml4dHVyZSBpcyBpbnRlcm5hbCBh
bmQKKyAgc2hvdWxkIG5vdCBiZSBvdmVyd3JpdHRlbiBhcyBpdCB3aWxsIGxlYWQgdG8gaW50ZXJu
YWwgZXJyb3JzLgorCistIGAjNDI2NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy80MjY2PmBfOiBIYW5kbGUgKGlnbm9yZSkgZXhjZXB0aW9ucyByYWlzZWQgZHVy
aW5nIGNvbGxlY3Rpb24sIGUuZy4gd2l0aCBEamFuZ28ncyBMYXp5U2V0dGluZ3MgcHJveHkgY2xh
c3MuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKy0gYCM0MjU1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQyNTU+YF86IEFkZGVkIG1pc3NpbmcgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgZmFjdCB0aGF0
IG1vZHVsZSBuYW1lcyBwYXNzZWQgdG8gZmlsdGVyIHdhcm5pbmdzIGFyZSBub3QgcmVnZXgtZXNj
YXBlZC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy0gYCM0MjcyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzQyNzI+YF86IERpc3BsYXkgY2FjaGVkaXIgYWxzbyBpbiBub24tdmVyYm9zZSBtb2Rl
IGlmIG5vbi1kZWZhdWx0LgorCisKKy0gYCM0Mjc3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQyNzc+YF86IHBkYjogaW1wcm92ZSBtZXNzYWdlIGFib3V0IG91
dHB1dCBjYXB0dXJpbmcgd2l0aCBgYHNldF90cmFjZWBgLgorCisgIERvIG5vdCBkaXNwbGF5ICJJ
Ty1jYXB0dXJpbmcgdHVybmVkIG9mZi9vbiIgd2hlbiBgYC1zYGAgaXMgdXNlZCB0byBhdm9pZAor
ICBjb25mdXNpb24uCisKKworLSBgIzQyNzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDI3OT5gXzogSW1wcm92ZSBtZXNzYWdlIGFuZCBzdGFjayBsZXZlbCBv
ZiB3YXJuaW5ncyBpc3N1ZWQgYnkgYGBtb25rZXlwYXRjaC5zZXRlbnZgYCB3aGVuIHRoZSB2YWx1
ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGEgYGBzdHJgYC4KKworCitweXRl
c3QgMy45LjMgKDIwMTgtMTAtMjcpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBG
aXhlcworLS0tLS0tLS0tCisKKy0gYCM0MTc0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzQxNzQ+YF86IEZpeCAiVmFsdWVFcnJvcjogUGx1Z2luIGFscmVhZHkg
cmVnaXN0ZXJlZCIgd2l0aCBjb25mdGVzdCBwbHVnaW5zIHZpYSBzeW1saW5rLgorCisKKy0gYCM0
MTgxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxODE+YF86
IEhhbmRsZSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIGNyZWF0aW9uIGFuZCBkZWxldGlvbiBvZiB0
ZW1wb3JhcnkgZm9sZGVycy4KKworCistIGAjNDIyMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80MjIxPmBfOiBGaXggYnVnIHdoZXJlIHRoZSB3YXJuaW5nIHN1
bW1hcnkgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBzZXNzaW9uIHdhcyBub3Qgc2hvd2luZyB0aGUg
dGVzdCB3aGVyZSB0aGUgd2FybmluZyB3YXMgb3JpZ2luYXRlZC4KKworCistIGAjNDI0MyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MjQzPmBfOiBGaXggcmVn
cmVzc2lvbiB3aGVuIGBgc3RhY2tsZXZlbGBgIGZvciB3YXJuaW5ncyB3YXMgcGFzc2VkIGFzIHBv
c2l0aW9uYWwgYXJndW1lbnQgb24gcHl0aG9uMi4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRp
b24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM4NTEgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzg1MT5gXzogQWRkIHJlZmVyZW5jZSB0byBgYGVt
cHR5X3BhcmFtZXRlcl9zZXRfbWFya2BgIGluaSBvcHRpb24gaW4gZG9jdW1lbnRhdGlvbiBvZiBg
YEBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5n
ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNDAyOCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDI4PmBfOiBSZXZlcnQgcGF0Y2hpbmcgb2Yg
YGBzeXMuYnJlYWtwb2ludGhvb2tgYCBzaW5jZSBpdCBhcHBlYXJzIHRvIGRvIG5vdGhpbmcuCisK
KworLSBgIzQyMzMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NDIzMz5gXzogQXBwbHkgYW4gaW1wb3J0IHNvcnRlciAoYGByZW9yZGVyLXB5dGhvbi1pbXBvcnRz
YGApIHRvIHRoZSBjb2RlYmFzZS4KKworCistIGAjNDI0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MjQ4PmBfOiBSZW1vdmUgdXNlIG9mIHVubmVjZXNzYXJ5
IGNvbXBhdCBzaGltLCBzaXguYmluYXJ5X3R5cGUKKworCitweXRlc3QgMy45LjIgKDIwMTgtMTAt
MjIpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisK
Ky0gYCMyOTA5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5
MDk+YF86IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIGEgcmVjdXJzaXZlIGRlcGVuZGVuY3kg
YmV0d2VlbiBmaXh0dXJlcyBpcyBkZXRlY3RlZC4KKworCistIGAjMzM0MCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzQwPmBfOiBGaXggbG9nZ2luZyBtZXNz
YWdlcyBub3Qgc2hvd24gaW4gaG9va3MgYGBweXRlc3Rfc2Vzc2lvbnN0YXJ0KClgYCBhbmQgYGBw
eXRlc3Rfc2Vzc2lvbmZpbmlzaCgpYGAuCisKKworLSBgIzM1MzMgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUzMz5gXzogRml4IHVuZXNjYXBlZCBYTUwgcmF3
IG9iamVjdHMgaW4gSlVuaXQgcmVwb3J0IGZvciBza2lwcGVkIHRlc3RzCisKKworLSBgIzM2OTEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzY5MT5gXzogUHl0
aG9uIDI6IHNhZmVseSBmb3JtYXQgd2FybmluZyBtZXNzYWdlIGFib3V0IHBhc3NpbmcgdW5pY29k
ZSBzdHJpbmdzIHRvIGBgd2FybmluZ3Mud2FybmBgLCB3aGljaCBtYXkgY2F1c2UKKyAgc3VycHJp
c2luZyBgYE1lbW9yeUVycm9yYGAgZXhjZXB0aW9uIHdoZW4gbW9ua2V5IHBhdGNoaW5nIGBgd2Fy
bmluZ3Mud2FybmBgIGl0c2VsZi4KKworCistIGAjNDAyNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDI2PmBfOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hl
biBpdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBzaWduYXR1cmUu
CisKKworLSBgIzQxNzcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDE3Nz5gXzogUGluIGBgc2V0dXB0b29scz49NDAuMGBgIHRvIHN1cHBvcnQgYGBweV9tb2R1
bGVzYGAgaW4gYGBzZXR1cC5jZmdgYAorCisKKy0gYCM0MTc5IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxNzk+YF86IFJlc3RvcmUgdGhlIHRtcGRpciBiZWhh
dmlvdXIgb2Ygc3ltbGlua2luZyB0aGUgY3VycmVudCB0ZXN0IHJ1bi4KKworCistIGAjNDE5MiA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTkyPmBfOiBGaXgg
ZmlsZW5hbWUgcmVwb3J0ZWQgYnkgYGB3YXJuaW5ncy53YXJuYGAgd2hlbiB1c2luZyBgYHJlY3dh
cm5gYCB1bmRlciBweXRob24yLgorCisKK3B5dGVzdCAzLjkuMSAoMjAxOC0xMC0xNikKKz09PT09
PT09PT09PT09PT09PT09PT09PT0KKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCM0MTU5IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxNTk+YF86IEZvciB0
ZXN0LXN1aXRlcyBjb250YWluaW5nIHRlc3QgY2xhc3NlcywgdGhlIGluZm9ybWF0aW9uIGFib3V0
IHRoZSBzdWJjbGFzc2VkCisgIG1vZHVsZSBpcyBub3cgb3V0cHV0IG9ubHkgaWYgYSBoaWdoZXIg
dmVyYm9zaXR5IGxldmVsIGlzIHNwZWNpZmllZCAoYXQgbGVhc3QKKyAgIi12diIpLgorCisKK3B5
dGVzdCAzLjkuMCAoMjAxOC0xMC0xNSAtIG5vdCBwdWJsaXNoZWQgZHVlIHRvIGEgcmVsZWFzZSBh
dXRvbWF0aW9uIGJ1ZykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGVwcmVjYXRpb25zCistLS0tLS0t
LS0tLS0KKworLSBgIzM2MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzYxNj5gXzogVGhlIGZvbGxvd2luZyBhY2Nlc3NlcyBoYXZlIGJlZW4gZG9jdW1lbnRl
ZCBhcyBkZXByZWNhdGVkIGZvciB5ZWFycywgYnV0IGFyZSBub3cgYWN0dWFsbHkgZW1pdHRpbmcg
ZGVwcmVjYXRpb24gd2FybmluZ3MuCisKKyAgKiBBY2Nlc3Mgb2YgYGBNb2R1bGVgYCwgYGBGdW5j
dGlvbmBgLCBgYENsYXNzYGAsIGBgSW5zdGFuY2VgYCwgYGBGaWxlYGAgYW5kIGBgSXRlbWBgIHRo
cm91Z2ggYGBOb2RlYGAgaW5zdGFuY2VzLiBOb3cKKyAgICB1c2VycyB3aWxsIHRoaXMgd2Fybmlu
Zzo6CisKKyAgICAgICAgICB1c2FnZSBvZiBGdW5jdGlvbi5Nb2R1bGUgaXMgZGVwcmVjYXRlZCwg
cGxlYXNlIHVzZSBweXRlc3QuTW9kdWxlIGluc3RlYWQKKworICAgIFVzZXJzIHNob3VsZCBqdXN0
IGBgaW1wb3J0IHB5dGVzdGBgIGFuZCBhY2Nlc3MgdGhvc2Ugb2JqZWN0cyB1c2luZyB0aGUgYGBw
eXRlc3RgYCBtb2R1bGUuCisKKyAgKiBgYHJlcXVlc3QuY2FjaGVkX3NldHVwYGAsIHRoaXMgd2Fz
IHRoZSBwcmVjdXJzb3Igb2YgdGhlIHNldHVwL3RlYXJkb3duIG1lY2hhbmlzbSBhdmFpbGFibGUg
dG8gZml4dHVyZXMuIFlvdSBjYW4KKyAgICBjb25zdWx0IGBmdW5jYXJnIGNvbXBhcmlzb24gc2Vj
dGlvbiBpbiB0aGUgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2Z1bmNh
cmdfY29tcGFyZS5odG1sPmBfLgorCisgICogVXNpbmcgb2JqZWN0cyBuYW1lZCBgYCJDbGFzcyJg
YCBhcyBhIHdheSB0byBjdXN0b21pemUgdGhlIHR5cGUgb2Ygbm9kZXMgdGhhdCBhcmUgY29sbGVj
dGVkIGluIGBgQ29sbGVjdG9yYGAKKyAgICBzdWJjbGFzc2VzIGhhcyBiZWVuIGRlcHJlY2F0ZWQu
IFVzZXJzIGluc3RlYWQgc2hvdWxkIHVzZSBgYHB5dGVzdF9jb2xsZWN0X21ha2VfaXRlbWBgIHRv
IGN1c3RvbWl6ZSBub2RlIHR5cGVzIGR1cmluZworICAgIGNvbGxlY3Rpb24uCisKKyAgICBUaGlz
IGlzc3VlIHNob3VsZCBhZmZlY3Qgb25seSBhZHZhbmNlZCBwbHVnaW5zIHdobyBjcmVhdGUgbmV3
IGNvbGxlY3Rpb24gdHlwZXMsIHNvIGlmIHlvdSBzZWUgdGhpcyB3YXJuaW5nCisgICAgbWVzc2Fn
ZSBwbGVhc2UgY29udGFjdCB0aGUgYXV0aG9ycyBzbyB0aGV5IGNhbiBjaGFuZ2UgdGhlIGNvZGUu
CisKKyAgKiBUaGUgd2FybmluZyB0aGF0IHByb2R1Y2VzIHRoZSBtZXNzYWdlIGJlbG93IGhhcyBj
aGFuZ2VkIHRvIGBgUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmdgYDo6CisKKyAgICAgICAgICBnZXRm
dW5jYXJndmFsdWUgaXMgZGVwcmVjYXRlZCwgdXNlIGdldGZpeHR1cmV2YWx1ZQorCisKKy0gYCMz
OTg4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5ODg+YF86
IEFkZCBhIERlcHJlY2F0aW9uIHdhcm5pbmcgZm9yIHB5dGVzdC5lbnN1cmV0ZW1wIGFzIGl0IHdh
cyBkZXByZWNhdGVkIHNpbmNlIGEgd2hpbGUuCisKKworCitGZWF0dXJlcworLS0tLS0tLS0KKwor
LSBgIzIyOTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjI5
Mz5gXzogSW1wcm92ZSB1c2FnZSBlcnJvcnMgbWVzc2FnZXMgYnkgaGlkaW5nIGludGVybmFsIGRl
dGFpbHMgd2hpY2ggY2FuIGJlIGRpc3RyYWN0aW5nIGFuZCBub2lzeS4KKworICBUaGlzIGhhcyB0
aGUgc2lkZSBlZmZlY3QgdGhhdCBzb21lIGVycm9yIGNvbmRpdGlvbnMgdGhhdCBwcmV2aW91c2x5
IHJhaXNlZCBnZW5lcmljIGVycm9ycyAoc3VjaCBhcworICBgYFZhbHVlRXJyb3JgYCBmb3IgdW5y
ZWdpc3RlcmVkIG1hcmtzKSBhcmUgbm93IHJhaXNpbmcgYGBGYWlsZWRgYCBleGNlcHRpb25zLgor
CisKKy0gYCMzMzMyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzMzMzI+YF86IEltcHJvdmUgdGhlIGVycm9yIGRpc3BsYXllZCB3aGVuIGEgYGBjb25mdGVzdC5w
eWBgIGZpbGUgY291bGQgbm90IGJlIGltcG9ydGVkLgorCisgIEluIG9yZGVyIHRvIGltcGxlbWVu
dCB0aGlzLCBhIG5ldyBgYGNoYWluYGAgcGFyYW1ldGVyIHdhcyBhZGRlZCB0byBgYEV4Y2VwdGlv
bkluZm8uZ2V0cmVwcmBgCisgIHRvIHNob3cgb3IgaGlkZSBjaGFpbmVkIHRyYWNlYmFja3MgaW4g
UHl0aG9uIDMgKGRlZmF1bHRzIHRvIGBgVHJ1ZWBgKS4KKworCistIGAjMzg0OSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODQ5PmBfOiBBZGQgYGBlbXB0eV9w
YXJhbWV0ZXJfc2V0X21hcms9ZmFpbF9hdF9jb2xsZWN0YGAgaW5pIG9wdGlvbiBmb3IgcmFpc2lu
ZyBhbiBleGNlcHRpb24gd2hlbiBwYXJhbWV0cml6ZSBjb2xsZWN0cyBhbiBlbXB0eSBzZXQuCisK
KworLSBgIzM5NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mzk2ND5gXzogTG9nIG1lc3NhZ2VzIGdlbmVyYXRlZCBpbiB0aGUgY29sbGVjdGlvbiBwaGFzZSBh
cmUgc2hvd24gd2hlbgorICBsaXZlLWxvZ2dpbmcgaXMgZW5hYmxlZCBhbmQvb3Igd2hlbiB0aGV5
IGFyZSBsb2dnZWQgdG8gYSBmaWxlLgorCisKKy0gYCMzOTg1IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5ODU+YF86IEludHJvZHVjZSBgYHRtcF9wYXRoYGAg
YXMgYSBmaXh0dXJlIHByb3ZpZGluZyBhIFBhdGggb2JqZWN0LiBBbHNvIGludHJvZHVjZSBgYHRt
cF9wYXRoX2ZhY3RvcnlgYCBhcworICBhIHNlc3Npb24tc2NvcGVkIGZpeHR1cmUgZm9yIGNyZWF0
aW5nIGFyYml0cmFyeSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgZnJvbSBhbnkgb3RoZXIgZml4dHVy
ZSBvciB0ZXN0LgorCisKKy0gYCM0MDEzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQwMTM+YF86IERlcHJlY2F0aW9uIHdhcm5pbmdzIGFyZSBub3cgc2hvd24g
ZXZlbiBpZiB5b3UgY3VzdG9taXplIHRoZSB3YXJuaW5ncyBmaWx0ZXJzIHlvdXJzZWxmLiBJbiB0
aGUgcHJldmlvdXMgdmVyc2lvbgorICBhbnkgY3VzdG9taXphdGlvbiB3b3VsZCBvdmVycmlkZSBw
eXRlc3QncyBmaWx0ZXJzIGFuZCBkZXByZWNhdGlvbiB3YXJuaW5ncyB3b3VsZCBmYWxsIGJhY2sg
dG8gYmVpbmcgaGlkZGVuIGJ5IGRlZmF1bHQuCisKKworLSBgIzQwNzMgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDA3Mz5gXzogQWxsb3cgc3BlY2lmaWNhdGlv
biBvZiB0aW1lb3V0IGZvciBgYFRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKWBgIGFuZCBg
YFRlc3RkaXIucnVuKClgYC4KKworCistIGAjNDA5OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDk4PmBfOiBBZGQgcmV0dXJuY29kZSBhcmd1bWVudCB0byBw
eXRlc3QuZXhpdCgpIHRvIGV4aXQgcHl0ZXN0IHdpdGggYSBzcGVjaWZpYyByZXR1cm4gY29kZS4K
KworCistIGAjNDEwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80MTAyPmBfOiBSZWltcGxlbWVudCBgYHB5dGVzdC5kZXByZWNhdGVkX2NhbGxgYCB1c2luZyBg
YHB5dGVzdC53YXJuc2BgIHNvIGl0IHN1cHBvcnRzIHRoZSBgYG1hdGNoPScuLi4nYGAga2V5d29y
ZCBhcmd1bWVudC4KKworICBUaGlzIGhhcyB0aGUgc2lkZSBlZmZlY3QgdGhhdCBgYHB5dGVzdC5k
ZXByZWNhdGVkX2NhbGxgYCBub3cgcmFpc2VzIGBgcHl0ZXN0LmZhaWwuRXhjZXB0aW9uYGAgaW5z
dGVhZAorICBvZiBgYEFzc2VydGlvbkVycm9yYGAuCisKKworLSBgIzQxNDkgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDE0OT5gXzogUmVxdWlyZSBzZXR1cHRv
b2xzPj0zMC4zIGFuZCBtb3ZlIG1vc3Qgb2YgdGhlIG1ldGFkYXRhIHRvIGBgc2V0dXAuY2ZnYGAu
CisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMjUzNSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTM1PmBfOiBJbXByb3ZlIGVycm9yIG1lc3Nh
Z2Ugd2hlbiB0ZXN0IGZ1bmN0aW9ucyBvZiBgYHVuaXR0ZXN0LlRlc3RDYXNlYGAgc3ViY2xhc3Nl
cyB1c2UgYSBwYXJhbWV0cml6ZWQgZml4dHVyZS4KKworCistIGAjMzA1NyA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDU3PmBfOiBgYHJlcXVlc3QuZml4dHVy
ZW5hbWVzYGAgbm93IGNvcnJlY3RseSByZXR1cm5zIHRoZSBuYW1lIG9mIGZpeHR1cmVzIGNyZWF0
ZWQgYnkgYGByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgpYGAuCisKKworLSBgIzM5NDYgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk0Nj5gXzogV2FybmluZyBm
aWx0ZXJzIHBhc3NlZCBhcyBjb21tYW5kIGxpbmUgb3B0aW9ucyB1c2luZyBgYC1XYGAgbm93IHRh
a2UgcHJlY2VkZW5jZSBvdmVyIGZpbHRlcnMgZGVmaW5lZCBpbiBgYGluaWBgCisgIGNvbmZpZ3Vy
YXRpb24gZmlsZXMuCisKKworLSBgIzQwNjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDA2Nj5gXzogRml4IHNvdXJjZSByZWluZGVudGluZyBieSB1c2luZyBg
YHRleHR3cmFwLmRlZGVudGBgIGRpcmVjdGx5LgorCisKKy0gYCM0MTAyIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxMDI+YF86IGBgcHl0ZXN0Lndhcm5gYCB3
aWxsIGNhcHR1cmUgcHJldmlvdXNseS13YXJuZWQgd2FybmluZ3MgaW4gUHl0aG9uIDIuIFByZXZp
b3VzbHkgdGhleSB3ZXJlIG5ldmVyIHJhaXNlZC4KKworCistIGAjNDEwOCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTA4PmBfOiBSZXNvbHZlIHN5bWJvbGlj
IGxpbmtzIGZvciBhcmdzLgorCisgIFRoaXMgZml4ZXMgcnVubmluZyBgYHB5dGVzdCB0ZXN0cy90
ZXN0X2Zvby5weTo6dGVzdF9iYXJgYCwgd2hlcmUgYGB0ZXN0c2BgCisgIGlzIGEgc3ltbGluayB0
byBgYHByb2plY3QvYXBwL3Rlc3RzYGA6CisgIHByZXZpb3VzbHkgYGBwcm9qZWN0L2FwcC9jb25m
dGVzdC5weWBgIHdvdWxkIGJlIGlnbm9yZWQgZm9yIGZpeHR1cmVzIHRoZW4uCisKKworLSBgIzQx
MzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDEzMj5gXzog
Rml4IGR1cGxpY2F0ZSBwcmludGluZyBvZiBpbnRlcm5hbCBlcnJvcnMgd2hlbiB1c2luZyBgYC0t
cGRiYGAuCisKKworLSBgIzQxMzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNDEzNT5gXzogcGF0aGxpYiBiYXNlZCB0bXBkaXIgY2xlYW51cCBub3cgY29ycmVj
dGx5IGhhbmRsZXMgc3ltbGlua3MgaW4gdGhlIGZvbGRlci4KKworCistIGAjNDE1MiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTUyPmBfOiBEaXNwbGF5IHRo
ZSBmaWxlbmFtZSB3aGVuIGVuY291bnRlcmluZyBgYFN5bnRheFdhcm5pbmdgYC4KKworCisKK0lt
cHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM3MTMg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzcxMz5gXzogVXBk
YXRlIHVzZWZpeHR1cmVzIGRvY3VtZW50YXRpb24gdG8gY2xhcmlmeSB0aGF0IGl0IGNhbid0IGJl
IHVzZWQgd2l0aCBmaXh0dXJlIGZ1bmN0aW9ucy4KKworCistIGAjNDA1OCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDU4PmBfOiBVcGRhdGUgZml4dHVyZSBk
b2N1bWVudGF0aW9uIHRvIHNwZWNpZnkgdGhhdCBhIGZpeHR1cmUgY2FuIGJlIGludm9rZWQgdHdp
Y2UgaW4gdGhlIHNjb3BlIGl0J3MgZGVmaW5lZCBmb3IuCisKKworLSBgIzQwNjQgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDA2ND5gXzogQWNjb3JkaW5nIHRv
IHVuaXR0ZXN0LnJzdCwgc2V0VXBNb2R1bGUgYW5kIHRlYXJEb3duTW9kdWxlIHdlcmUgbm90IGlt
cGxlbWVudGVkLCBidXQgaXQgdHVybnMgb3V0IHRoZXkgYXJlLiBTbyB1cGRhdGVkIHRoZSBkb2N1
bWVudGF0aW9uIGZvciB1bml0dGVzdC4KKworCistIGAjNDE1MSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTUxPmBfOiBBZGQgdGVtcGlyIHRlc3RpbmcgZXhh
bXBsZSB0byBDT05UUklCVVRJTkcucnN0IGd1aWRlCisKKworCitUcml2aWFsL0ludGVybmFsIENo
YW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMjI5MyA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjkzPmBfOiBUaGUgaW50ZXJuYWwgYGBN
YXJrZXJFcnJvcmBgIGV4Y2VwdGlvbiBoYXMgYmVlbiByZW1vdmVkLgorCisKKy0gYCMzOTg4IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5ODg+YF86IFBvcnQg
dGhlIGltcGxlbWVudGF0aW9uIG9mIHRtcGRpciB0byBwYXRobGliLgorCisKKy0gYCM0MDYzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwNjM+YF86IEV4Y2x1
ZGUgMC4wMCBzZWNvbmQgZW50cmllcyBmcm9tIGBgLS1kdXJhdGlvbmBgIG91dHB1dCB1bmxlc3Mg
YGAtdnZgYCBpcyBwYXNzZWQgb24gdGhlIGNvbW1hbmQtbGluZS4KKworCistIGAjNDA5MyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDkzPmBfOiBGaXhlZCBm
b3JtYXR0aW5nIG9mIHN0cmluZyBsaXRlcmFscyBpbiBpbnRlcm5hbCB0ZXN0cy4KKworCitweXRl
c3QgMy44LjIgKDIwMTgtMTAtMDIpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RlcHJl
Y2F0aW9ucyBhbmQgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQw
MzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDAzNj5gXzog
VGhlIGBgaXRlbWBgIHBhcmFtZXRlciBvZiBgYHB5dGVzdF93YXJuaW5nX2NhcHR1cmVkYGAgaG9v
ayBpcyBub3cgZG9jdW1lbnRlZCBhcyBkZXByZWNhdGVkLiBXZSByZWFsaXplZCBvbmx5IGFmdGVy
CisgIHRoZSBgYDMuOGBgIHJlbGVhc2UgdGhhdCB0aGlzIHBhcmFtZXRlciBpcyBpbmNvbXBhdGli
bGUgd2l0aCBgYHB5dGVzdC14ZGlzdGBgLgorCisgIE91ciBwb2xpY3kgaXMgdG8gbm90IGRlcHJl
Y2F0ZSBmZWF0dXJlcyBkdXJpbmcgYnVnLWZpeCByZWxlYXNlcywgYnV0IGluIHRoaXMgY2FzZSB3
ZSBiZWxpZXZlIGl0IG1ha2VzIHNlbnNlIGFzIHdlIGFyZQorICBvbmx5IGRvY3VtZW50aW5nIGl0
IGFzIGRlcHJlY2F0ZWQsIHdpdGhvdXQgaXNzdWluZyB3YXJuaW5ncyB3aGljaCBtaWdodCBwb3Rl
bnRpYWxseSBicmVhayB0ZXN0IHN1aXRlcy4gVGhpcyB3aWxsIGdldAorICB0aGUgd29yZCBvdXQg
dGhhdCBob29rIGltcGxlbWVudGVycyBzaG91bGQgbm90IHVzZSB0aGlzIHBhcmFtZXRlciBhdCBh
bGwuCisKKyAgSW4gYSBmdXR1cmUgcmVsZWFzZSBgYGl0ZW1gYCB3aWxsIGFsd2F5cyBiZSBgYE5v
bmVgYCBhbmQgd2lsbCBlbWl0IGEgcHJvcGVyIHdhcm5pbmcgd2hlbiBhIGhvb2sgaW1wbGVtZW50
YXRpb24KKyAgbWFrZXMgdXNlIG9mIGl0LgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKwor
LSBgIzM1MzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUz
OT5gXzogRml4IHJlbG9hZCBvbiBhc3NlcnRpb24gcmV3cml0dGVuIG1vZHVsZXMuCisKKworLSBg
IzQwMzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDAzND5g
XzogVGhlIGBgLnVzZXJfcHJvcGVydGllc2BgIGF0dHJpYnV0ZSBvZiBgYFRlc3RSZXBvcnRgYCBv
YmplY3RzIGlzIGEgbGlzdAorICBvZiAobmFtZSwgdmFsdWUpIHR1cGxlcywgYnV0IGNvdWxkIHNv
bWV0aW1lcyBiZSBpbnN0YW50aWF0ZWQgYXMgYSB0dXBsZQorICBvZiB0dXBsZXMuICBJdCBpcyBu
b3cgYWx3YXlzIGEgbGlzdC4KKworCistIGAjNDAzOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDM5PmBfOiBObyBsb25nZXIgaXNzdWUgd2FybmluZ3MgYWJv
dXQgdXNpbmcgYGBweXRlc3RfcGx1Z2luc2BgIGluIG5vbi10b3AtbGV2ZWwgZGlyZWN0b3JpZXMg
d2hlbiB1c2luZyBgYC0tcHlhcmdzYGA6IHRoZQorICBjdXJyZW50IGBgLS1weWFyZ3NgYCBtZWNo
YW5pc20gaXMgbm90IHJlbGlhYmxlIGFuZCBtaWdodCBnaXZlIGZhbHNlIG5lZ2F0aXZlcy4KKwor
CistIGAjNDA0MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
MDQwPmBfOiBFeGNsdWRlIGVtcHR5IHJlcG9ydHMgZm9yIHBhc3NlZCB0ZXN0cyB3aGVuIGBgLXJQ
YGAgb3B0aW9uIGlzIHVzZWQuCisKKworLSBgIzQwNTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDA1MT5gXzogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4g
YW4gaW52YWxpZCBQeXRob24gZXhwcmVzc2lvbiBpcyBwYXNzZWQgdG8gdGhlIGBgLW1gYCBvcHRp
b24uCisKKworLSBgIzQwNTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDA1Nj5gXzogYGBNb25rZXlQYXRjaC5zZXRlbnZgYCBhbmQgYGBNb25rZXlQYXRjaC5k
ZWxlbnZgYCBpc3N1ZSBhIHdhcm5pbmcgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUg
aXMgbm90IGBgc3RyYGAgb24gUHl0aG9uIDIuCisKKyAgSW4gUHl0aG9uIDIsIGFkZGluZyBgYHVu
aWNvZGVgYCBrZXlzIHRvIGBgb3MuZW52aXJvbmBgIGNhdXNlcyBwcm9ibGVtcyB3aXRoIGBgc3Vi
cHJvY2Vzc2BgIChhbmQgcG9zc2libGUgb3RoZXIgbW9kdWxlcyksCisgIG1ha2luZyB0aGlzIGEg
c3VidGxlIGJ1ZyBzcGVjaWFsbHkgc3VzY2VwdGlibGUgd2hlbiB1c2VkIHdpdGggYGBmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHNgYC4KKworCisKK0ltcHJvdmVkIERvY3Vt
ZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM5MjggPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzkyOD5gXzogQWRkIHBvc3NpYmxlIHZh
bHVlcyBmb3IgZml4dHVyZSBzY29wZSB0byBkb2NzLgorCisKK3B5dGVzdCAzLjguMSAoMjAxOC0w
OS0yMikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0K
KworLSBgIzMyODYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzI4Nj5gXzogYGAucHl0ZXN0X2NhY2hlYGAgZGlyZWN0b3J5IGlzIG5vdyBhdXRvbWF0aWNhbGx5
IGlnbm9yZWQgYnkgR2l0LiBVc2VycyB3aG8gd291bGQgbGlrZSB0byBjb250cmlidXRlIGEgc29s
dXRpb24gZm9yIG90aGVyIFNDTXMgcGxlYXNlIGNvbnN1bHQvY29tbWVudCBvbiB0aGlzIGlzc3Vl
LgorCisKKy0gYCMzNzQ5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM3NDk+YF86IEZpeCB0aGUgZm9sbG93aW5nIGVycm9yIGR1cmluZyBjb2xsZWN0aW9uIG9m
IHRlc3RzIGluc2lkZSBwYWNrYWdlczo6CisKKyAgICAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5
cGUgJ1BhY2thZ2UnIGhhcyBubyBsZW4oKQorCisKKy0gYCMzOTQxIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5NDE+YF86IEZpeCBidWcgd2hlcmUgaW5kaXJl
Y3QgcGFyYW1ldHJpemF0aW9uIHdvdWxkIGNvbnNpZGVyIHRoZSBzY29wZSBvZiBhbGwgZml4dHVy
ZXMgdXNlZCBieSB0aGUgdGVzdCBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHBhcmFtZXRyaXph
dGlvbiBzY29wZSwgYW5kIG5vdCBvbmx5IHRoZSBzY29wZSBvZiB0aGUgZml4dHVyZXMgYmVpbmcg
cGFyYW1ldHJpemVkLgorCisKKy0gYCMzOTczIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzM5NzM+YF86IEZpeCBjcmFzaCBvZiB0aGUgYXNzZXJ0aW9uIHJld3Jp
dGVyIGlmIGEgdGVzdCBjaGFuZ2VkIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHdpdGhv
dXQgcmVzdG9yaW5nIGl0IGFmdGVyd2FyZHMuCisKKworLSBgIzM5OTggPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk5OD5gXzogRml4IGlzc3VlIHRoYXQgcHJl
dmVudGVkIHNvbWUgY2FwbG9nIHByb3BlcnRpZXMgKGZvciBleGFtcGxlIGBgcmVjb3JkX3R1cGxl
c2BgKSBmcm9tIGJlaW5nIGF2YWlsYWJsZSB3aGVuIGVudGVyaW5nIHRoZSBkZWJ1Z2dlciB3aXRo
IGBgLS1wZGJgYC4KKworCistIGAjMzk5OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zOTk5PmBfOiBGaXggYGBVbmljb2RlRGVjb2RlRXJyb3JgYCBpbiBweXRo
b24yLnggd2hlbiBhIGNsYXNzIHJldHVybnMgYSBub24tYXNjaWkgYmluYXJ5IGBgX19yZXByX19g
YCBpbiBhbiBhc3NlcnRpb24gd2hpY2ggYWxzbyBjb250YWlucyBub24tYXNjaWkgdGV4dC4KKwor
CisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBg
IzM5OTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk5Nj5g
XzogTmV3IGBEZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWw+YF8gcGFnZSBzaG93cyBhbGwgY3VycmVudGx5
CisgIGRlcHJlY2F0ZWQgZmVhdHVyZXMsIHRoZSByYXRpb25hbGUgdG8gZG8gc28sIGFuZCBhbHRl
cm5hdGl2ZXMgdG8gdXBkYXRlIHlvdXIgY29kZS4gSXQgYWxzbyBsaXN0IGZlYXR1cmVzIHJlbW92
ZWQKKyAgZnJvbSBweXRlc3QgaW4gcGFzdCBtYWpvciByZWxlYXNlcyB0byBoZWxwIHRob3NlIHdp
dGggYW5jaWVudCBweXRlc3QgdmVyc2lvbnMgdG8gdXBncmFkZS4KKworCisKK1RyaXZpYWwvSW50
ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzOTU1IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5NTU+YF86IEltcHJvdmUg
cHJlLWNvbW1pdCBkZXRlY3Rpb24gZm9yIGNoYW5nZWxvZyBmaWxlbmFtZXMKKworCistIGAjMzk3
NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTc1PmBfOiBS
ZW1vdmUgbGVnYWN5IGNvZGUgYXJvdW5kIGltX2Z1bmMgYXMgdGhhdCB3YXMgcHl0aG9uMiBvbmx5
CisKKworcHl0ZXN0IDMuOC4wICgyMDE4LTA5LTA1KQorPT09PT09PT09PT09PT09PT09PT09PT09
PQorCitEZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKy0gYCMyNDUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI0NTI+YF86IGBgQ29uZmlnLndhcm5gYCBhbmQgYGBOb2RlLndhcm5gYCBoYXZlIGJlZW4KKyAg
ZGVwcmVjYXRlZCwgc2VlIGA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJl
Y2F0aW9ucy5odG1sI2NvbmZpZy13YXJuLWFuZC1ub2RlLXdhcm4+YF8gZm9yIHJhdGlvbmFsZSBh
bmQKKyAgZXhhbXBsZXMuCisKKy0gYCMzOTM2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzM5MzY+YF86IGBgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzYGAg
c2Vjb25kIHBhcmFtZXRlciBpcyBubyBsb25nZXIgcmVnZXgtZXNjYXBlZCwKKyAgbWFraW5nIGl0
IHBvc3NpYmxlIHRvIGFjdHVhbGx5IHVzZSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGNoZWNrIHRo
ZSB3YXJuaW5nIG1lc3NhZ2UuCisKKyAgKipOb3RlKio6IHJlZ2V4LWVzY2FwaW5nIHRoZSBtYXRj
aCBzdHJpbmcgd2FzIGFuIGltcGxlbWVudGF0aW9uIG92ZXJzaWdodCB0aGF0IG1pZ2h0IGJyZWFr
IHRlc3Qgc3VpdGVzIHdoaWNoIGRlcGVuZAorICBvbiB0aGUgb2xkIGJlaGF2aW9yLgorCisKKwor
RmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCMyNDUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI0NTI+YF86IEludGVybmFsIHB5dGVzdCB3YXJuaW5ncyBhcmUg
bm93IGlzc3VlZCB1c2luZyB0aGUgc3RhbmRhcmQgYGB3YXJuaW5nc2BgIG1vZHVsZSwgbWFraW5n
IGl0IHBvc3NpYmxlIHRvIHVzZQorICB0aGUgc3RhbmRhcmQgd2FybmluZ3MgZmlsdGVycyB0byBt
YW5hZ2UgdGhvc2Ugd2FybmluZ3MuIFRoaXMgaW50cm9kdWNlcyBgYFB5dGVzdFdhcm5pbmdgYCwK
KyAgYGBQeXRlc3REZXByZWNhdGlvbldhcm5pbmdgYCBhbmQgYGBSZW1vdmVkSW5QeXRlc3Q0V2Fy
bmluZ2BgIHdhcm5pbmcgdHlwZXMgYXMgcGFydCBvZiB0aGUgcHVibGljIEFQSS4KKworICBDb25z
dWx0IGB0aGUgZG9jdW1lbnRhdGlvbiA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxl
L3dhcm5pbmdzLmh0bWwjaW50ZXJuYWwtcHl0ZXN0LXdhcm5pbmdzPmBfXyBmb3IgbW9yZSBpbmZv
LgorCisKKy0gYCMyOTA4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzI5MDg+YF86IGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgYW5kIGBgUGVuZGluZ0RlcHJlY2F0
aW9uV2FybmluZ2BgIGFyZSBub3cgc2hvd24gYnkgZGVmYXVsdCBpZiBubyBvdGhlciB3YXJuaW5n
IGZpbHRlciBpcworICBjb25maWd1cmVkLiBUaGlzIG1ha2VzIHB5dGVzdCBtb3JlIGNvbXBsaWFu
dCB3aXRoCisgIGBQRVAtMDUwNiA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAt
MDU2NS8jcmVjb21tZW5kZWQtZmlsdGVyLXNldHRpbmdzLWZvci10ZXN0LXJ1bm5lcnM+YF8uIFNl
ZQorICBgdGhlIGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS93YXJuaW5n
cy5odG1sI2RlcHJlY2F0aW9ud2FybmluZy1hbmQtcGVuZGluZ2RlcHJlY2F0aW9ud2FybmluZz5g
XyBmb3IKKyAgbW9yZSBpbmZvLgorCisKKy0gYCMzMjUxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNTE+YF86IFdhcm5pbmdzIGFyZSBub3cgY2FwdHVyZWQg
YW5kIGRpc3BsYXllZCBkdXJpbmcgdGVzdCBjb2xsZWN0aW9uLgorCisKKy0gYCMzNzg0IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3ODQ+YF86IGBgUFlURVNU
X0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgZGlzYWJsZXMg
cGx1Z2luIGF1dG8tbG9hZGluZyB3aGVuIHNldC4KKworCistIGAjMzgyOSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODI5PmBfOiBBZGRlZCB0aGUgYGBjb3Vu
dGBgIG9wdGlvbiB0byBgYGNvbnNvbGVfb3V0cHV0X3N0eWxlYGAgdG8gZW5hYmxlIGRpc3BsYXlp
bmcgdGhlIHByb2dyZXNzIGFzIGEgY291bnQgaW5zdGVhZCBvZiBhIHBlcmNlbnRhZ2UuCisKKwor
LSBgIzM4MzcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzgz
Nz5gXzogQWRkZWQgc3VwcG9ydCBmb3IgJ3hmYWlsZWQnIGFuZCAneHBhc3NlZCcgb3V0Y29tZXMg
dG8gdGhlIGBgcHl0ZXN0ZXIuUnVuUmVzdWx0LmFzc2VydF9vdXRjb21lc2BgIHNpZ25hdHVyZS4K
KworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMzOTExIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5MTE+YF86IFRlcm1pbmFsIHdyaXRlciBub3cg
dGFrZXMgaW50byBhY2NvdW50IHVuaWNvZGUgY2hhcmFjdGVyIHdpZHRoIHdoZW4gd3JpdGluZyBv
dXQgcHJvZ3Jlc3MuCisKKworLSBgIzM5MTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzkxMz5gXzogUHl0ZXN0IG5vdyByZXR1cm5zIHdpdGggY29ycmVjdCBl
eGl0IGNvZGUgKEVYSVRfVVNBR0VFUlJPUiwgNCkgd2hlbiBjYWxsZWQgd2l0aCB1bmtub3duIGFy
Z3VtZW50cy4KKworCistIGAjMzkxOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zOTE4PmBfOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGFzc2VydGlvbiByZXdy
aXRpbmcuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy0gYCMzNTY2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM1NjY+YF86IEFkZGVkIGEgYmx1cmIgaW4gdXNhZ2UucnN0IGZvciB0aGUgdXNhZ2Ugb2Yg
LXIgZmxhZyB3aGljaCBpcyB1c2VkIHRvIHNob3cgYW4gZXh0cmEgdGVzdCBzdW1tYXJ5IGluZm8u
CisKKworLSBgIzM5MDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzkwNz5gXzogQ29ycmVjdGVkIHR5cGUgb2YgdGhlIGV4Y2VwdGlvbnMgY29sbGVjdGlvbiBw
YXNzZWQgdG8gYGB4ZmFpbGBgOiBgYHJhaXNlc2BgIGFyZ3VtZW50IGFjY2VwdHMgYSBgYHR1cGxl
YGAgaW5zdGVhZCBvZiBgYGxpc3RgYC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzODUzIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4NTM+YF86IFJlbW92ZWQgYGAicnVuIGFsbCAobm8g
cmVjb3JkZWQgZmFpbHVyZXMpImBgIG1lc3NhZ2UgcHJpbnRlZCB3aXRoIGBgLS1mYWlsZWQtZmly
c3RgYCBhbmQgYGAtLWxhc3QtZmFpbGVkYGAgd2hlbiB0aGVyZSBhcmUgbm8gZmFpbGVkIHRlc3Rz
LgorCisKK3B5dGVzdCAzLjcuNCAoMjAxOC0wOC0yOSkKKz09PT09PT09PT09PT09PT09PT09PT09
PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzM1MDYgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUwNj5gXzogRml4IHBvc3NpYmxlIGluZmluaXRl
IHJlY3Vyc2lvbiB3aGVuIHdyaXRpbmcgYGAucHljYGAgZmlsZXMuCisKKworLSBgIzM4NTMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzg1Mz5gXzogQ2FjaGUg
cGx1Z2luIG5vdyBvYmV5cyB0aGUgYGAtcWBgIGZsYWcgd2hlbiBgYC0tbGFzdC1mYWlsZWRgYCBh
bmQgYGAtLWZhaWxlZC1maXJzdGBgIGZsYWdzIGFyZSB1c2VkLgorCisKKy0gYCMzODgzIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4ODM+YF86IEZpeCBiYWQg
Y29uc29sZSBvdXRwdXQgd2hlbiB1c2luZyBgYGNvbnNvbGVfb3V0cHV0X3N0eWxlPWNsYXNzaWNg
YC4KKworCistIGAjMzg4OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zODg4PmBfOiBGaXggbWFjT1Mgc3BlY2lmaWMgY29kZSB1c2luZyBgYGNhcHR1cmVtYW5h
Z2VyYGAgcGx1Z2luIGluIGRvY3Rlc3RzLgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMzkwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTAyPmBfOiBGaXggcHl0ZXN0Lm9yZyBsaW5rcworCisK
K3B5dGVzdCAzLjcuMyAoMjAxOC0wOC0yNikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKwor
QnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzMwMzMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAzMz5gXzogRml4dHVyZXMgZHVyaW5nIHRlYXJkb3duIGNh
biBhZ2FpbiB1c2UgYGBjYXBzeXNgYCBhbmQgYGBjYXBmZGBgIHRvIGluc3BlY3Qgb3V0cHV0IGNh
cHR1cmVkIGR1cmluZyB0ZXN0cy4KKworCistIGAjMzc3MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzczPmBfOiBGaXggY29sbGVjdGlvbiBvZiB0ZXN0cyBm
cm9tIGBgX19pbml0X18ucHlgYCBmaWxlcyBpZiB0aGV5IG1hdGNoIHRoZSBgYHB5dGhvbl9maWxl
c2BgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgorCisKKy0gYCMzNzk2IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3OTY+YF86IEZpeCBpc3N1ZSB3aGVyZSB0ZWFy
ZG93biBvZiBmaXh0dXJlcyBvZiBjb25zZWN1dGl2ZSBzdWItcGFja2FnZXMgd2VyZSBleGVjdXRl
ZCBvbmNlLCBhdCB0aGUgZW5kIG9mIHRoZSBvdXRlcgorICBwYWNrYWdlLgorCisKKy0gYCMzODE2
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4MTY+YF86IEZp
eCBidWcgd2hlcmUgYGAtLXNob3ctY2FwdHVyZT1ub2BgIG9wdGlvbiB3b3VsZCBzdGlsbCBzaG93
IGxvZ3MgcHJpbnRlZCBkdXJpbmcgZml4dHVyZSB0ZWFyZG93bi4KKworCistIGAjMzgxOSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODE5PmBfOiBGaXggYGBz
dGRvdXQvc3RkZXJyYGAgbm90IGdldHRpbmcgY2FwdHVyZWQgd2hlbiByZWFsLXRpbWUgY2xpIGxv
Z2dpbmcgaXMgYWN0aXZlLgorCisKKy0gYCMzODQzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzM4NDM+YF86IEZpeCBjb2xsZWN0aW9uIGVycm9yIHdoZW4gc3Bl
Y2lmeWluZyB0ZXN0IGZ1bmN0aW9ucyBkaXJlY3RseSBpbiB0aGUgY29tbWFuZCBsaW5lIHVzaW5n
IGBgdGVzdC5weTo6dGVzdGBgIHN5bnRheCB0b2dldGhlciB3aXRoIGBgLS1kb2N0ZXN0LW1vZHVs
ZXNgYC4KKworCistIGAjMzg0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zODQ4PmBfOiBGaXggYnVncyB3aGVyZSB1bmljb2RlIGFyZ3VtZW50cyBjb3VsZCBu
b3QgYmUgcGFzc2VkIHRvIGBgdGVzdGRpci5ydW5weXRlc3RgYCBvbiBQeXRob24gMi4KKworCist
IGAjMzg1NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODU0
PmBfOiBGaXggZG91YmxlIGNvbGxlY3Rpb24gb2YgdGVzdHMgd2l0aGluIHBhY2thZ2VzIHdoZW4g
dGhlIGZpbGVuYW1lIHN0YXJ0cyB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuCisKKworCitJbXByb3Zl
ZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzODI0IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4MjQ+YF86IEFkZGVkIGV4
YW1wbGUgZm9yIG11bHRpcGxlIGdsb2IgcGF0dGVybiBtYXRjaGVzIGluIGBgcHl0aG9uX2ZpbGVz
YGAuCisKKworLSBgIzM4MzMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzgzMz5gXzogQWRkZWQgbWlzc2luZyBkb2NzIGZvciBgYHB5dGVzdGVyLlRlc3RkaXJg
YC4KKworCistIGAjMzg3MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zODcwPmBfOiBDb3JyZWN0IGRvY3VtZW50YXRpb24gZm9yIHNldHVwdG9vbHMgaW50ZWdy
YXRpb24uCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCistIGAjMzgyNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zODI2PmBfOiBSZXBsYWNlIGJyb2tlbiB0eXBlIGFubm90YXRpb25zIHdpdGggdHlw
ZSBjb21tZW50cy4KKworCistIGAjMzg0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zODQ1PmBfOiBSZW1vdmUgYSByZWZlcmVuY2UgdG8gaXNzdWUgYCM1Njgg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTY4PmBfIGZyb20g
dGhlIGRvY3VtZW50YXRpb24sIHdoaWNoIGhhcyBzaW5jZSBiZWVuCisgIGZpeGVkLgorCisKK3B5
dGVzdCAzLjcuMiAoMjAxOC0wOC0xNikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVn
IEZpeGVzCistLS0tLS0tLS0KKworLSBgIzM2NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzY3MT5gXzogRml4IGBgZmlsdGVyd2FybmluZ3NgYCBub3QgYmVp
bmcgcmVnaXN0ZXJlZCBhcyBhIGJ1aWx0aW4gbWFyay4KKworCistIGAjMzc2OCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzY4PmBfLCBgIzM3ODkgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc4OT5gXzogRml4IHRlc3Qg
Y29sbGVjdGlvbiBmcm9tIHBhY2thZ2VzIG1peGVkIHdpdGggbm9ybWFsIGRpcmVjdG9yaWVzLgor
CisKKy0gYCMzNzcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzM3NzE+YF86IEZpeCBpbmZpbml0ZSByZWN1cnNpb24gZHVyaW5nIGNvbGxlY3Rpb24gaWYgYSBg
YHB5dGVzdF9pZ25vcmVfY29sbGVjdGBgIGhvb2sgcmV0dXJucyBgYEZhbHNlYGAgaW5zdGVhZCBv
ZiBgYE5vbmVgYC4KKworCistIGAjMzc3NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zNzc0PmBfOiBGaXggYnVnIHdoZXJlIGRlY29yYXRlZCBmaXh0dXJlcyB3
b3VsZCBsb3NlIGZ1bmN0aW9uYWxpdHkgKGZvciBleGFtcGxlIGBgQG1vY2sucGF0Y2hgYCkuCisK
KworLSBgIzM3NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mzc3NT5gXzogRml4IGJ1ZyB3aGVyZSBpbXBvcnRpbmcgbW9kdWxlcyBvciBvdGhlciBvYmplY3Rz
IHdpdGggcHJlZml4IGBgcHl0ZXN0X2BgIHByZWZpeCB3b3VsZCByYWlzZSBhIGBgUGx1Z2luVmFs
aWRhdGlvbkVycm9yYGAuCisKKworLSBgIzM3ODggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzc4OD5gXzogRml4IGBgQXR0cmlidXRlRXJyb3JgYCBkdXJpbmcg
dGVhcmRvd24gb2YgYGBUZXN0Q2FzZWBgIHN1YmNsYXNzZXMgd2hpY2ggcmFpc2UgYW4gZXhjZXB0
aW9uIGR1cmluZyBgYF9faW5pdF9fYGAuCisKKworLSBgIzM4MDQgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzgwND5gXzogRml4IHRyYWNlYmFjayByZXBvcnRp
bmcgZm9yIGV4Y2VwdGlvbnMgd2l0aCBgYF9fY2F1c2VfX2BgIGN5Y2xlcy4KKworCisKK0ltcHJv
dmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM3NDYgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc0Nj5gXzogQWRkIGRv
Y3VtZW50YXRpb24gZm9yIGBgbWV0YWZ1bmMuY29uZmlnYGAgdGhhdCBoYWQgYmVlbiBtaXN0YWtl
bmx5IGhpZGRlbi4KKworCitweXRlc3QgMy43LjEgKDIwMTgtMDgtMDIpCis9PT09PT09PT09PT09
PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMzNDczIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM0NzM+YF86IFJhaXNlIGltbWVk
aWF0ZWx5IGlmIGBgYXBwcm94KClgYCBpcyBnaXZlbiBhbiBleHBlY3RlZCB2YWx1ZSBvZiBhIHR5
cGUgaXQgZG9lc24ndCB1bmRlcnN0YW5kIChlLmcuIHN0cmluZ3MsIG5lc3RlZCBkaWN0cywgZXRj
LikuCisKKworLSBgIzM3MTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzcxMj5gXzogQ29ycmVjdGx5IHJlcHJlc2VudCB0aGUgZGltZW5zaW9ucyBvZiBhIG51
bXB5IGFycmF5IHdoZW4gY2FsbGluZyBgYHJlcHIoKWBgIG9uIGBgYXBwcm94KClgYC4KKworLSBg
IzM3NDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc0Mj5g
XzogRml4IGluY29tcGF0aWJpbGl0eSB3aXRoIHRoaXJkIHBhcnR5IHBsdWdpbnMgZHVyaW5nIGNv
bGxlY3Rpb24sIHdoaWNoIHByb2R1Y2VkIHRoZSBlcnJvciBgYG9iamVjdCBoYXMgbm8gYXR0cmli
dXRlICdfY29sbGVjdGZpbGUnYGAuCisKKy0gYCMzNzQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3NDU+YF86IERpc3BsYXkgdGhlIGFic29sdXRlIHBhdGgg
aWYgYGBjYWNoZV9kaXJgYCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIGBgcm9vdGRpcmBgIGluc3Rl
YWQgb2YgZmFpbGluZy4KKworCistIGAjMzc0NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zNzQ3PmBfOiBGaXggY29tcGF0aWJpbGl0eSBwcm9ibGVtIHdpdGgg
cGx1Z2lucyBhbmQgdGhlIHdhcm5pbmcgY29kZSBpc3N1ZWQgYnkgZml4dHVyZSBmdW5jdGlvbnMg
d2hlbiB0aGV5IGFyZSBjYWxsZWQgZGlyZWN0bHkuCisKKworLSBgIzM3NDggPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc0OD5gXzogRml4IGluZmluaXRlIHJl
Y3Vyc2lvbiBpbiBgYHB5dGVzdC5hcHByb3hgYCB3aXRoIGFycmF5cyBpbiBgYG51bXB5PDEuMTNg
YC4KKworCistIGAjMzc1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNzU3PmBfOiBQaW4gcGF0aGxpYjIgdG8gYGA+PTIuMi4wYGAgYXMgd2UgcmVxdWlyZSBg
YF9fZnNwYXRoX19gYCBzdXBwb3J0LgorCisKKy0gYCMzNzYzIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3NjM+YF86IEZpeCBgYFR5cGVFcnJvcmBgIHdoZW4g
dGhlIGFzc2VydGlvbiBtZXNzYWdlIGlzIGBgYnl0ZXNgYCBpbiBweXRob24gMy4KKworCitweXRl
c3QgMy43LjAgKDIwMTgtMDctMzApCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RlcHJl
Y2F0aW9ucyBhbmQgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzI2
MzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYzOT5gXzog
YGBweXRlc3RfbmFtZXNwYWNlYGAgaGFzIGJlZW4gYGRlcHJlY2F0ZWQgPGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCNweXRlc3QtbmFtZXNwYWNlPmBf
LgorCisKKy0gYCMzNjYxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM2NjE+YF86IENhbGxpbmcgYSBmaXh0dXJlIGZ1bmN0aW9uIGRpcmVjdGx5LCBhcyBvcHBv
c2VkIHRvIHJlcXVlc3QgdGhlbSBpbiBhIHRlc3QgZnVuY3Rpb24sIG5vdyBpc3N1ZXMgYSBgYFJl
bW92ZWRJblB5dGVzdDRXYXJuaW5nYGAuIFNlZSBgdGhlIGRvY3VtZW50YXRpb24gZm9yIHJhdGlv
bmFsZSBhbmQgZXhhbXBsZXMgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXBy
ZWNhdGlvbnMuaHRtbCNjYWxsaW5nLWZpeHR1cmVzLWRpcmVjdGx5PmBfLgorCisKKworRmVhdHVy
ZXMKKy0tLS0tLS0tCisKKy0gYCMyMjgzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzIyODM+YF86IE5ldyBgYHBhY2thZ2VgYCBmaXh0dXJlIHNjb3BlOiBmaXh0
dXJlcyBhcmUgZmluYWxpemVkIHdoZW4gdGhlIGxhc3QgdGVzdCBvZiBhICpwYWNrYWdlKiBmaW5p
c2hlcy4gVGhpcyBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgKipleHBlcmltZW50YWwqKiwgc28gdXNl
IGl0IHNwYXJpbmdseS4KKworCistIGAjMzU3NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zNTc2PmBfOiBgYE5vZGUuYWRkX21hcmtlcmBgIG5vdyBzdXBwb3J0
cyBhbiBgYGFwcGVuZD1UcnVlL0ZhbHNlYGAgcGFyYW1ldGVyIHRvIGRldGVybWluZSB3aGV0aGVy
IHRoZSBtYXJrIGNvbWVzIGxhc3QgKGRlZmF1bHQpIG9yIGZpcnN0LgorCisKKy0gYCMzNTc5IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1Nzk+YF86IEZpeHR1
cmUgYGBjYXBsb2dgYCBub3cgaGFzIGEgYGBtZXNzYWdlc2BgIHByb3BlcnR5LCBwcm92aWRpbmcg
Y29udmVuaWVudCBhY2Nlc3MgdG8gdGhlIGZvcm1hdC1pbnRlcnBvbGF0ZWQgbG9nIG1lc3NhZ2Vz
IHdpdGhvdXQgdGhlIGV4dHJhIGRhdGEgcHJvdmlkZWQgYnkgdGhlIGZvcm1hdHRlci9oYW5kbGVy
LgorCisKKy0gYCMzNjEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM2MTA+YF86IE5ldyBgYC0tdHJhY2VgYCBvcHRpb24gdG8gZW50ZXIgdGhlIGRlYnVnZ2Vy
IGF0IHRoZSBzdGFydCBvZiBhIHRlc3QuCisKKworLSBgIzM2MjMgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzYyMz5gXzogSW50cm9kdWNlIGBgcHl0ZXN0ZXIu
Y29weV9leGFtcGxlYGAgYXMgaGVscGVyIHRvIGRvIGFjY2VwdGFuY2UgdGVzdHMgYWdhaW5zdCBl
eGFtcGxlcyBmcm9tIHRoZSBwcm9qZWN0LgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKwor
LSBgIzIyMjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIy
MD5gXzogRml4IGEgYnVnIHdoZXJlIGZpeHR1cmVzIG92ZXJyaWRkZW4gYnkgZGlyZWN0IHBhcmFt
ZXRlcnMgKGZvciBleGFtcGxlIHBhcmFtZXRyaXphdGlvbikgd2VyZSBiZWluZyBpbnN0YW50aWF0
ZWQgZXZlbiBpZiB0aGV5IHdlcmUgbm90IGJlaW5nIHVzZWQgYnkgYSB0ZXN0LgorCisKKy0gYCMz
Njk1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2OTU+YF86
IEZpeCBgYEFwcHJveE51bXB5YGAgaW5pdGlhbGlzYXRpb24gYXJndW1lbnQgbWl4dXAsIGBgYWJz
YGAgYW5kIGBgcmVsYGAgdG9sZXJhbmNlcyB3ZXJlIGZsaXBwZWQgY2F1c2luZyBzdHJhbmdlIGNv
bXBhcmlzb24gcmVzdWx0cy4KKyAgQWRkIHRlc3RzIHRvIGNoZWNrIGBgYWJzYGAgYW5kIGBgcmVs
YGAgdG9sZXJhbmNlcyBmb3IgYGBucC5hcnJheWBgIGFuZCB0ZXN0IGZvciBleHBlY3RpbmcgYGBu
YW5gYCB3aXRoIGBgbnAuYXJyYXkoKWBgCisKKworLSBgIzk4MCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85ODA+YF86IEZpeCB0cnVuY2F0ZWQgbG9jYWxzIG91
dHB1dCBpbiB2ZXJib3NlIG1vZGUuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzMjk1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzMyOTU+YF86IENvcnJlY3QgdGhlIHVzYWdlIGRvY3VtZW50YXRp
b24gb2YgYGAtLWxhc3QtZmFpbGVkLW5vLWZhaWx1cmVzYGAgYnkgYWRkaW5nIHRoZSBtaXNzaW5n
IGBgLS1sYXN0LWZhaWxlZGBgIGFyZ3VtZW50IGluIHRoZSBwcmVzZW50ZWQgZXhhbXBsZXMsIGJl
Y2F1c2UgdGhleSBhcmUgbWlzbGVhZGluZyBhbmQgbGVhZCB0byB0aGluayB0aGF0IHRoZSBtaXNz
aW5nIGFyZ3VtZW50IGlzIG5vdCBuZWVkZWQuCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5n
ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMzUxOSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTE5PmBfOiBOb3cgYSBgYFJFQURNRS5tZGBg
IGZpbGUgaXMgY3JlYXRlZCBpbiBgYC5weXRlc3RfY2FjaGVgYCB0byBtYWtlIGl0IGNsZWFyIHdo
eSB0aGUgZGlyZWN0b3J5IGV4aXN0cy4KKworCitweXRlc3QgMy42LjQgKDIwMTgtMDctMjgpCis9
PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gSW52
b2tlIHB5dGVzdCB1c2luZyBgYC1tcHl0ZXN0YGAgc28gYGBzeXMucGF0aGBgIGRvZXMgbm90IGdl
dCBwb2xsdXRlZCBieSBwYWNrYWdlcyBpbnN0YWxsZWQgaW4gYGBzaXRlLXBhY2thZ2VzYGAuIChg
Izc0MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NDI+YF8p
CisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCist
IFVzZSBgYHNtdHBfY29ubmVjdGlvbmBgIGluc3RlYWQgb2YgYGBzbXRwYGAgaW4gZml4dHVyZXMg
ZG9jdW1lbnRhdGlvbiB0byBhdm9pZCBwb3NzaWJsZSBjb25mdXNpb24uIChgIzM1OTIgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU5Mj5gXykKKworCitUcml2
aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIFJlbW92
ZSBvYnNvbGV0ZSBgYF9fZnV0dXJlX19gYCBpbXBvcnRzLiAoYCMyMzE5IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIzMTk+YF8pCisKKy0gQWRkIENJVEFUSU9O
IHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRvIGZvcm1hbGx5IGNpdGUgcHl0ZXN0LiAo
YCMzNDAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM0MDI+
YF8pCisKKy0gUmVwbGFjZSBicm9rZW4gdHlwZSBhbm5vdGF0aW9ucyB3aXRoIHR5cGUgY29tbWVu
dHMuIChgIzM2MzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzYzNT5gXykKKworLSBQaW4gYGBwbHVnZ3lgYCB0byBgYDwwLjhgYC4gKGAjMzcyNyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzI3PmBfKQorCisKK3B5dGVz
dCAzLjYuMyAoMjAxOC0wNy0wNCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZp
eGVzCistLS0tLS0tLS0KKworLSBGaXggYGBJbXBvcnRXYXJuaW5nYGAgdHJpZ2dlcmVkIGJ5IGV4
cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgaW4KKyAgYXNzZXJ0aW9uLXJld3JpdHRlbiBwYWNrYWdl
IG1vZHVsZXMuIChgIzMwNjEKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzA2MT5gXykKKworLSBGaXggZXJyb3IgaW4gYGBweXRlc3QuYXBwcm94YGAgd2hl
biBkZWFsaW5nIHdpdGggMC1kaW1lbnNpb24gbnVtcHkKKyAgYXJyYXlzLiAoYCMzNTkzIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1OTM+YF8pCisKKy0gTm8g
bG9uZ2VyIHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdXNpbmcgdGhlIGBgZ2V0X21hcmtlcmBg
IEFQSS4gKGAjMzYwNQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNjA1PmBfKQorCistIEZpeCBwcm9ibGVtIHdoZXJlIGxvZyBtZXNzYWdlcyB3aXRoIG5v
bi1hc2NpaSBjaGFyYWN0ZXJzIHdvdWxkIG5vdAorICBhcHBlYXIgaW4gdGhlIG91dHB1dCBsb2cg
ZmlsZS4KKyAgKGAjMzYzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNjMwPmBfKQorCistIE5vIGxvbmdlciByYWlzZSBgYEF0dHJpYnV0ZUVycm9yYGAgd2hl
biBsZWdhY3kgbWFya3MgY2FuJ3QgYmUgc3RvcmVkIGluCisgIGZ1bmN0aW9ucy4gKGAjMzYzMSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjMxPmBfKQorCisK
K0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBUaGUg
ZGVzY3JpcHRpb24gYWJvdmUgdGhlIGV4YW1wbGUgZm9yIGBgQHB5dGVzdC5tYXJrLnNraXBpZmBg
IG5vdyBiZXR0ZXIKKyAgbWF0Y2hlcyB0aGUgY29kZS4gKGAjMzYxMQorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjExPmBfKQorCisKK1RyaXZpYWwvSW50
ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSW50ZXJuYWwgcmVm
YWN0b3Jpbmc6IHJlbW92ZWQgdW51c2VkIGBgQ2FsbFNwZWMydG94IC5fZ2xvYmFsaWRfYXJnc2Bg
CisgIGF0dHJpYnV0ZSBhbmQgYGBtZXRhZnVuY2BgIHBhcmFtZXRlciBmcm9tIGBgQ2FsbFNwZWMy
LmNvcHkoKWBgLiAoYCMzNTk4CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzM1OTg+YF8pCisKKy0gU2lsZW5jZSB1c2FnZSBvZiBgYHJlZHVjZWBgIHdhcm5p
bmcgaW4gUHl0aG9uIDIgKGAjMzYwOQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zNjA5PmBfKQorCistIEZpeCB1c2FnZSBvZiBgYGF0dHIuaWJgYCBkZXBy
ZWNhdGVkIGBgY29udmVydGBgIHBhcmFtZXRlci4gKGAjMzY1MworICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjUzPmBfKQorCisKK3B5dGVzdCAzLjYuMiAo
MjAxOC0wNi0yMCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBGaXggcmVncmVzc2lvbiBpbiBgYE5vZGUuYWRkX21hcmtlcmBgIGJ5IGV4dHJh
Y3RpbmcgdGhlIG1hcmsgb2JqZWN0IG9mIGEKKyAgYGBNYXJrRGVjb3JhdG9yYGAuIChgIzM1NTUK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU1NT5gXykK
KworLSBXYXJuaW5ncyB3aXRob3V0IGBgbG9jYXRpb25gYCB3ZXJlIHJlcG9ydGVkIGFzIGBgTm9u
ZWBgLiBUaGlzIGlzIGNvcnJlY3RlZCB0bworICBub3cgcmVwb3J0IGBgPHVuZGV0ZXJtaW5lZCBs
b2NhdGlvbj5gYC4gKGAjMzU2MworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zNTYzPmBfKQorCistIENvbnRpbnVlIHRvIGNhbGwgZmluYWxpemVycyBpbiB0
aGUgc3RhY2sgd2hlbiBhIGZpbmFsaXplciBpbiBhIGZvcm1lciBzY29wZQorICByYWlzZXMgYW4g
ZXhjZXB0aW9uLiAoYCMzNTY5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzM1Njk+YF8pCisKKy0gRml4IGVuY29kaW5nIGVycm9yIHdpdGggYGBwcmludGBg
IHN0YXRlbWVudHMgaW4gZG9jdGVzdHMgKGAjMzU4MworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTgzPmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRp
b24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhl
IGBgLS1zdHJpY3RgYCBmbGFnLiAoYCMzNTQ5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzM1NDk+YF8pCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2Vz
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBVcGRhdGUgb2xkIHF1b3RhdGlvbiBzdHls
ZSB0byBwYXJlbnMgaW4gZml4dHVyZS5yc3QgZG9jdW1lbnRhdGlvbi4gKGAjMzUyNQorICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTI1PmBfKQorCistIElt
cHJvdmUgZGlzcGxheSBvZiBoaW50IGFib3V0IGBgLS1mdWxsdHJhY2VgYCB3aXRoIGBgS2V5Ym9h
cmRJbnRlcnJ1cHRgYC4KKyAgKGAjMzU0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zNTQ1PmBfKQorCistIHB5dGVzdCdzIHRlc3RzdWl0ZSBpcyBubyBsb25n
ZXIgcnVubmFibGUgdGhyb3VnaCBgYHB5dGhvbiBzZXR1cC5weSB0ZXN0YGAgLS0KKyAgaW5zdGVh
ZCBpbnZva2UgYGBweXRlc3RgYCBvciBgYHRveGBgIGRpcmVjdGx5LiAoYCMzNTUyCisgIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1NTI+YF8pCisKKy0gRml4
IHR5cG8gaW4gZG9jdW1lbnRhdGlvbiAoYCMzNTY3CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1Njc+YF8pCisKKworcHl0ZXN0IDMuNi4xICgyMDE4LTA2
LTA1KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQor
CistIEZpeGVkIGEgYnVnIHdoZXJlIHN0ZG91dCBhbmQgc3RkZXJyIHdlcmUgbG9nZ2VkIHR3aWNl
IGJ5IGp1bml0eG1sIHdoZW4gYSB0ZXN0CisgIHdhcyBtYXJrZWQgeGZhaWwuIChgIzM0OTEKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ5MT5gXykKKwor
LSBGaXggYGB1c2VmaXh0dXJlc2BgIG1hcmsgYXBwbHllZCB0byB1bml0dGVzdCB0ZXN0cyBieSBj
b3JyZWN0bHkgaW5zdGFudGlhdGluZworICBgYEZpeHR1cmVJbmZvYGAuIChgIzM0OTgKKyAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ5OD5gXykKKworLSBG
aXggYXNzZXJ0aW9uIHJld3JpdGVyIGNvbXBhdGliaWxpdHkgd2l0aCBsaWJyYXJpZXMgdGhhdCBt
b25rZXkgcGF0Y2gKKyAgYGBmaWxlYGAgb2JqZWN0cy4gKGAjMzUwMworICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTAzPmBfKQorCisKK0ltcHJvdmVkIERv
Y3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBBZGRlZCBhIHNlY3Rpb24g
b24gaG93IHRvIHVzZSBmaXh0dXJlcyBhcyBmYWN0b3JpZXMgdG8gdGhlIGZpeHR1cmUKKyAgZG9j
dW1lbnRhdGlvbi4gKGAjMzQ2MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zNDYxPmBfKQorCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKy0gRW5hYmxlIGNhY2hpbmcgZm9yIHBpcC9wcmUtY29tbWl0IGlu
IG9yZGVyIHRvIHJlZHVjZSBidWlsZCB0aW1lIG9uCisgIHRyYXZpcy9hcHB2ZXlvci4gKGAjMzUw
MgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTAyPmBf
KQorCistIFN3aXRjaCBweXRlc3QgdG8gdGhlIHNyYy8gbGF5b3V0IGFzIHdlIGFscmVhZHkgc3Vn
Z2VzdGVkIGl0IGZvciBnb29kIHByYWN0aWNlCisgIC0gbm93IHdlIGltcGxlbWVudCBpdCBhcyB3
ZWxsLiAoYCMzNTEzCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM1MTM+YF8pCisKKy0gRml4IGlmIGluIHRlc3RzIHRvIHN1cHBvcnQgMy43LjBiNSwgd2hl
cmUgYSBkb2NzdHJpbmcgaGFuZGxpbmcgaW4gQVNUIGdvdAorICByZXZlcnRlZC4gKGAjMzUzMCA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTMwPmBfKQorCist
IFJlbW92ZSBzb21lIHB5dGhvbjIuNSBjb21wYXRpYmlsaXR5IGNvZGUuIChgIzM1MjkKKyAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUyOT5gXykKKworCitw
eXRlc3QgMy42LjAgKDIwMTgtMDUtMjMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0Zl
YXR1cmVzCistLS0tLS0tLQorCistIFJldmFtcCB0aGUgaW50ZXJuYWxzIG9mIHRoZSBgYHB5dGVz
dC5tYXJrYGAgaW1wbGVtZW50YXRpb24gd2l0aCBjb3JyZWN0IHBlcgorICBub2RlIGhhbmRsaW5n
IHdoaWNoIGZpeGVzIGEgbnVtYmVyIG9mIGxvbmcgc3RhbmRpbmcgYnVncyBjYXVzZWQgYnkgdGhl
IG9sZAorICBkZXNpZ24uIFRoaXMgaW50cm9kdWNlcyBuZXcgYGBOb2RlLml0ZXJfbWFya2Vycyhu
YW1lKWBgIGFuZAorICBgYE5vZGUuZ2V0X2Nsb3Nlc3RfbWFya2VyKG5hbWUpYGAgQVBJcy4gVXNl
cnMgYXJlICoqc3Ryb25nbHkgZW5jb3VyYWdlZCoqIHRvCisgIHJlYWQgdGhlIGByZWFzb25zIGZv
ciB0aGUgcmV2YW1wIGluIHRoZSBkb2NzCisgIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvaGlzdG9yaWNhbC1ub3Rlcy5odG1sI21hcmtlci1yZXZhbXAtYW5kLWl0ZXJhdGlvbj5g
XywKKyAgb3IganVtcCBvdmVyIHRvIGRldGFpbHMgYWJvdXQgYHVwZGF0aW5nIGV4aXN0aW5nIGNv
ZGUgdG8gdXNlIHRoZSBuZXcgQVBJcworICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3Rh
YmxlL2hpc3RvcmljYWwtbm90ZXMuaHRtbCN1cGRhdGluZy1jb2RlPmBfLgorICAoYCMzMzE3IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMTc+YF8pCisKKy0g
Tm93IHdoZW4gYGBAcHl0ZXN0LmZpeHR1cmVgYCBpcyBhcHBsaWVkIG1vcmUgdGhhbiBvbmNlIHRv
IHRoZSBzYW1lIGZ1bmN0aW9uIGEKKyAgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiBUaGlzIGJ1
Z2d5IGJlaGF2aW9yIHdvdWxkIGNhdXNlIHN1cnByaXNpbmcgcHJvYmxlbXMKKyAgYW5kIGlmIHdh
cyB3b3JraW5nIGZvciBhIHRlc3Qgc3VpdGUgaXQgd2FzIG1vc3RseSBieSBhY2NpZGVudC4gKGAj
MjMzNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMzM0
PmBfKQorCistIFN1cHBvcnQgZm9yIFB5dGhvbiAzLjcncyBidWlsdGluIGBgYnJlYWtwb2ludCgp
YGAgbWV0aG9kLCBzZWUgYFVzaW5nIHRoZQorICBidWlsdGluIGJyZWFrcG9pbnQgZnVuY3Rpb24K
KyAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS91c2FnZS5odG1sI2JyZWFrcG9p
bnQtYnVpbHRpbj5gXyBmb3IKKyAgZGV0YWlscy4gKGAjMzE4MCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTgwPmBfKQorCistIGBgbW9ua2V5cGF0Y2hgYCBu
b3cgc3VwcG9ydHMgYSBgYGNvbnRleHQoKWBgIGZ1bmN0aW9uIHdoaWNoIGFjdHMgYXMgYSBjb250
ZXh0CisgIG1hbmFnZXIgd2hpY2ggdW5kb2VzIGFsbCBwYXRjaGluZyBkb25lIHdpdGhpbiB0aGUg
YGB3aXRoYGAgYmxvY2suIChgIzMyOTAKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzI5MD5gXykKKworLSBUaGUgYGAtLXBkYmBgIG9wdGlvbiBub3cgY2F1
c2VzIEtleWJvYXJkSW50ZXJydXB0IHRvIGVudGVyIHRoZSBkZWJ1Z2dlciwKKyAgaW5zdGVhZCBv
ZiBzdG9wcGluZyB0aGUgdGVzdCBzZXNzaW9uLiBPbiBweXRob24gMi43LCBoaXR0aW5nIENUUkwr
QyBhZ2FpbgorICBleGl0cyB0aGUgZGVidWdnZXIuIE9uIHB5dGhvbiAzLjIgYW5kIGhpZ2hlciwg
dXNlIENUUkwrRC4gKGAjMzI5OQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMjk5PmBfKQorCistIHB5dGVzdCBubyBsb25nZXIgY2hhbmdlcyB0aGUgbG9n
IGxldmVsIG9mIHRoZSByb290IGxvZ2dlciB3aGVuIHRoZQorICBgYGxvZy1sZXZlbGBgIHBhcmFt
ZXRlciBoYXMgZ3JlYXRlciBudW1lcmljIHZhbHVlIHRoYW4gdGhhdCBvZiB0aGUgbGV2ZWwgb2YK
KyAgdGhlIHJvb3QgbG9nZ2VyLCB3aGljaCBtYWtlcyBpdCBwbGF5IGJldHRlciB3aXRoIGN1c3Rv
bSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24KKyAgaW4gdXNlciBjb2RlLiAoYCMzMzA3IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMDc+YF8pCisKKworQnVnIEZp
eGVzCistLS0tLS0tLS0KKworLSBBIHJhcmUgcmFjZS1jb25kaXRpb24gd2hpY2ggbWlnaHQgcmVz
dWx0IGluIGNvcnJ1cHRlZCBgYC5weWNgYCBmaWxlcyBvbgorICBXaW5kb3dzIGhhcyBiZWVuIGhv
cGVmdWxseSBzb2x2ZWQuIChgIzMwMDgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzAwOD5gXykKKworLSBBbHNvIHVzZSBpdGVyX21hcmtlciBmb3IgZGlz
Y292ZXJpbmcgdGhlIG1hcmtzIGFwcGx5aW5nIGZvciBtYXJrZXIKKyAgZXhwcmVzc2lvbnMgZnJv
bSB0aGUgY2xpIHRvIGF2b2lkIHRoZSBiYWQgZGF0YSBmcm9tIHRoZSBsZWdhY3kgbWFyayBzdG9y
YWdlLgorICAoYCMzNDQxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM0NDE+YF8pCisKKy0gV2hlbiBzaG93aW5nIGRpZmZzIG9mIGZhaWxlZCBhc3NlcnRpb25z
IHdoZXJlIHRoZSBjb250ZW50cyBjb250YWluIG9ubHkKKyAgd2hpdGVzcGFjZSwgZXNjYXBlIHRo
ZW0gdXNpbmcgYGByZXByKClgYCBmaXJzdCB0byBtYWtlIGl0IGVhc3kgdG8gc3BvdCB0aGUKKyAg
ZGlmZmVyZW5jZXMuIChgIzM0NDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzQ0Mz5gXykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy0gQ2hhbmdlIGRvY3VtZW50YXRpb24gY29weXJpZ2h0IHllYXIgdG8g
YSByYW5nZSB3aGljaCBhdXRvLXVwZGF0ZXMgaXRzZWxmIGVhY2gKKyAgdGltZSBpdCBpcyBwdWJs
aXNoZWQuIChgIzMzMDMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzMwMz5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCistIGBgcHl0ZXN0YGAgbm93IGRlcGVuZHMgb24gdGhlIGBweXRob24t
YXRvbWljd3JpdGVzCisgIDxodHRwczovL2dpdGh1Yi5jb20vdW50aXRha2VyL3B5dGhvbi1hdG9t
aWN3cml0ZXM+YF8gbGlicmFyeS4gKGAjMzAwOAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDA4PmBfKQorCistIFVwZGF0ZSBhbGwgcHlwaS5weXRob24u
b3JnIFVSTHMgdG8gcHlwaS5vcmcuIChgIzM0MzEKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQzMT5gXykKKworLSBEZXRlY3QgYHB5dGVzdF9gIHByZWZp
eGVkIGhvb2tzIHVzaW5nIHRoZSBpbnRlcm5hbCBwbHVnaW4gbWFuYWdlciBzaW5jZQorICBgYHBs
dWdneWBgIGlzIGRlcHJlY2F0aW5nIHRoZSBgYGltcGxwcmVmaXhgYCBhcmd1bWVudCB0byBgYFBs
dWdpbk1hbmFnZXJgYC4KKyAgKGAjMzQ4NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zNDg3PmBfKQorCistIEltcG9ydCBgYE1hcHBpbmdgYCBhbmQgYGBTZXF1
ZW5jZWBgIGZyb20gYGBfcHl0ZXN0LmNvbXBhdGBgIGluc3RlYWQgb2YKKyAgZGlyZWN0bHkgZnJv
bSBgYGNvbGxlY3Rpb25zYGAgaW4gYGBweXRob25fYXBpLnB5OjphcHByb3hgYC4gQWRkIGBgTWFw
cGluZ2BgCisgIHRvIGBgX3B5dGVzdC5jb21wYXRgYCwgaW1wb3J0IGl0IGZyb20gYGBjb2xsZWN0
aW9uc2BgIG9uIHB5dGhvbiAyLCBidXQgZnJvbQorICBgYGNvbGxlY3Rpb25zLmFiY2BgIG9uIFB5
dGhvbiAzIHRvIGF2b2lkIGEgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBvbiBQeXRob24KKyAgMy43
IG9yIG5ld2VyLiAoYCMzNDk3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzM0OTc+YF8pCisKKworcHl0ZXN0IDMuNS4xICgyMDE4LTA0LTIzKQorPT09PT09PT09
PT09PT09PT09PT09PT09PQorCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gUmVzZXQgYGBz
eXMubGFzdF90eXBlYGAsIGBgc3lzLmxhc3RfdmFsdWVgYCBhbmQgYGBzeXMubGFzdF90cmFjZWJh
Y2tgYCBiZWZvcmUKKyAgZWFjaCB0ZXN0IGV4ZWN1dGVzLiBUaG9zZSBhdHRyaWJ1dGVzIGFyZSBh
ZGRlZCBieSBweXRlc3QgZHVyaW5nIHRoZSB0ZXN0IHJ1bgorICB0byBhaWQgZGVidWdnaW5nLCBi
dXQgd2VyZSBuZXZlciByZXNldCBzbyB0aGV5IHdvdWxkIGNyZWF0ZSBhIGxlYWtpbmcKKyAgcmVm
ZXJlbmNlIHRvIHRoZSBsYXN0IGZhaWxpbmcgdGVzdCdzIGZyYW1lIHdoaWNoIGluIHR1cm4gY291
bGQgbmV2ZXIgYmUKKyAgcmVjbGFpbWVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gKGAjMjc5
OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzk4PmBf
KQorCistIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyByYWlzZXMgYGBUeXBlRXJyb3JgYCB3aGVuIHJl
Y2VpdmluZyBhbiB1bmtub3duIGtleXdvcmQKKyAgYXJndW1lbnQuIChgIzMzNDggPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzM0OD5gXykKKworLSBgYHB5dGVz
dC5yYWlzZXNgYCBub3cgd29ya3Mgd2l0aCBleGNlcHRpb24gY2xhc3NlcyB0aGF0IGxvb2sgbGlr
ZSBpdGVyYWJsZXMuCisgIChgIzMzNzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzM3Mj5gXykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKy0gRml4IHR5cG8gaW4gYGBjYXBsb2dgYCBmaXh0dXJlIGRvY3Vt
ZW50YXRpb24sIHdoaWNoIGluY29ycmVjdGx5IGlkZW50aWZpZWQKKyAgY2VydGFpbiBhdHRyaWJ1
dGVzIGFzIG1ldGhvZHMuIChgIzM0MDYKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzQwNj5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEFkZGVkIGEgbW9yZSBpbmRpY2F0aXZlIGVycm9y
IG1lc3NhZ2Ugd2hlbiBwYXJhbWV0cml6aW5nIGEgZnVuY3Rpb24gd2hvc2UKKyAgYXJndW1lbnQg
dGFrZXMgYSBkZWZhdWx0IHZhbHVlLiAoYCMzMjIxCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyMjE+YF8pCisKKy0gUmVtb3ZlIGludGVybmFsIGBgX3B5
dGVzdC50ZXJtaW5hbC5mbGF0dGVuYGAgZnVuY3Rpb24gaW4gZmF2b3Igb2YKKyAgYGBtb3JlX2l0
ZXJ0b29scy5jb2xsYXBzZWBgLiAoYCMzMzMwCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzMzMzA+YF8pCisKKy0gSW1wb3J0IHNvbWUgbW9kdWxlcyBmcm9t
IGBgY29sbGVjdGlvbnMuYWJjYGAgaW5zdGVhZCBvZiBgYGNvbGxlY3Rpb25zYGAgYXMKKyAgdGhl
IGZvcm1lciBtb2R1bGVzIHRyaWdnZXIgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBpbiBQeXRob24g
My43LiAoYCMzMzM5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMzMzk+YF8pCisKKy0gcmVjb3JkX3Byb3BlcnR5IGlzIG5vIGxvbmdlciBleHBlcmltZW50
YWwsIHJlbW92aW5nIHRoZSB3YXJuaW5ncyB3YXMKKyAgZm9yZ290dGVuLiAoYCMzMzYwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzNjA+YF8pCisKKy0gTWVu
dGlvbiBpbiBkb2N1bWVudGF0aW9uIGFuZCBDTEkgaGVscCB0aGF0IGZpeHR1cmVzIHdpdGggbGVh
ZGluZyBgYF9gYCBhcmUKKyAgcHJpbnRlZCBieSBgYHB5dGVzdCAtLWZpeHR1cmVzYGAgb25seSBp
ZiB0aGUgYGAtdmBgIG9wdGlvbiBpcyBhZGRlZC4gKGAjMzM5OAorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzk4PmBfKQorCisKK3B5dGVzdCAzLjUuMCAo
MjAxOC0wMy0yMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGVwcmVjYXRpb25zIGFu
ZCBSZW1vdmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGBgcmVjb3JkX3htbF9w
cm9wZXJ0eWBgIGZpeHR1cmUgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIG1vcmUK
KyAgZ2VuZXJpYyBgYHJlY29yZF9wcm9wZXJ0eWBgLiAoYCMyNzcwCisgIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NzA+YF8pCisKKy0gRGVmaW5pbmcgYGBw
eXRlc3RfcGx1Z2luc2BgIGlzIG5vdyBkZXByZWNhdGVkIGluIG5vbi10b3AtbGV2ZWwgY29uZnRl
c3QucHkKKyAgZmlsZXMsIGJlY2F1c2UgdGhleSAibGVhayIgdG8gdGhlIGVudGlyZSBkaXJlY3Rv
cnkgdHJlZS4gYFNlZSB0aGUgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxl
L2RlcHJlY2F0aW9ucy5odG1sI3B5dGVzdC1wbHVnaW5zLWluLW5vbi10b3AtbGV2ZWwtY29uZnRl
c3QtZmlsZXM+YF8gZm9yIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgZGVjaXNpb24gKGAjMzA4
NAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDg0PmBf
KQorCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIE5ldyBgYC0tc2hvdy1jYXB0dXJlYGAgY29t
bWFuZC1saW5lIG9wdGlvbiB0aGF0IGFsbG93cyB0byBzcGVjaWZ5IGhvdyB0bworICBkaXNwbGF5
IGNhcHR1cmVkIG91dHB1dCB3aGVuIHRlc3RzIGZhaWw6IGBgbm9gYCwgYGBzdGRvdXRgYCwgYGBz
dGRlcnJgYCwKKyAgYGBsb2dgYCBvciBgYGFsbGBgICh0aGUgZGVmYXVsdCkuIChgIzE0NzgKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ3OD5gXykKKwor
LSBOZXcgYGAtLXJvb3RkaXJgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSBy
dWxlcyBmb3IgZGlzY292ZXJpbmcKKyAgdGhlIHJvb3QgZGlyZWN0b3J5LiBTZWUgYGN1c3RvbWl6
ZQorICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2N1c3RvbWl6ZS5odG1sPmBf
IGluIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorICBkZXRhaWxzLiAoYCMxNjQyIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2NDI+YF8pCisKKy0gRml4dHVyZXMg
YXJlIG5vdyBpbnN0YW50aWF0ZWQgYmFzZWQgb24gdGhlaXIgc2NvcGVzLCB3aXRoIGhpZ2hlci1z
Y29wZWQKKyAgZml4dHVyZXMgKHN1Y2ggYXMgYGBzZXNzaW9uYGApIGJlaW5nIGluc3RhbnRpYXRl
ZCBmaXJzdCB0aGFuIGxvd2VyLXNjb3BlZAorICBmaXh0dXJlcyAoc3VjaCBhcyBgYGZ1bmN0aW9u
YGApLiBUaGUgcmVsYXRpdmUgb3JkZXIgb2YgZml4dHVyZXMgb2YgdGhlIHNhbWUKKyAgc2NvcGUg
aXMga2VwdCB1bmNoYW5nZWQsIGJhc2VkIGluIHRoZWlyIGRlY2xhcmF0aW9uIG9yZGVyIGFuZCB0
aGVpcgorICBkZXBlbmRlbmNpZXMuIChgIzI0MDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjQwNT5gXykKKworLSBgYHJlY29yZF94bWxfcHJvcGVydHlgYCBy
ZW5hbWVkIHRvIGBgcmVjb3JkX3Byb3BlcnR5YGAgYW5kIGlzIG5vdyBjb21wYXRpYmxlCisgIHdp
dGggeGRpc3QsIG1hcmtlcnMgYW5kIGFueSByZXBvcnRlci4gYGByZWNvcmRfeG1sX3Byb3BlcnR5
YGAgbmFtZSBpcyBub3cKKyAgZGVwcmVjYXRlZC4gKGAjMjc3MCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzcwPmBfKQorCistIE5ldyBgYC0tbmZgYCwgYGAt
LW5ldy1maXJzdGBgIG9wdGlvbnM6IHJ1biBuZXcgdGVzdHMgZmlyc3QgZm9sbG93ZWQgYnkgdGhl
CisgIHJlc3Qgb2YgdGhlIHRlc3RzLCBpbiBib3RoIGNhc2VzIHRlc3RzIGFyZSBhbHNvIHNvcnRl
ZCBieSB0aGUgZmlsZSBtb2RpZmllZAorICB0aW1lLCB3aXRoIG1vcmUgcmVjZW50IGZpbGVzIGNv
bWluZyBmaXJzdC4gKGAjMzAzNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMDM0PmBfKQorCistIE5ldyBgYC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXNg
YCBjb21tYW5kLWxpbmUgb3B0aW9uIHRoYXQgYWxsb3dzIHRvIHNwZWNpZnkKKyAgdGhlIGJlaGF2
aW9yIG9mIHRoZSBjYWNoZSBwbHVnaW4ncyBgYGAtLWxhc3QtZmFpbGVkYGAgZmVhdHVyZSB3aGVu
IG5vIHRlc3RzCisgIGZhaWxlZCBpbiB0aGUgbGFzdCBydW4gKG9yIG5vIGNhY2hlIHdhcyBmb3Vu
ZCk6IGBgbm9uZWBgIG9yIGBgYWxsYGAgKHRoZQorICBkZWZhdWx0KS4gKGAjMzEzOSA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTM5PmBfKQorCistIE5ldyBg
YC0tZG9jdGVzdC1jb250aW51ZS1vbi1mYWlsdXJlYGAgY29tbWFuZC1saW5lIG9wdGlvbiB0byBl
bmFibGUgZG9jdGVzdHMKKyAgdG8gc2hvdyBtdWx0aXBsZSBmYWlsdXJlcyBmb3IgZWFjaCBzbmlw
cGV0LCBpbnN0ZWFkIG9mIHN0b3BwaW5nIGF0IHRoZSBmaXJzdAorICBmYWlsdXJlLiAoYCMzMTQ5
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNDk+YF8pCisK
Ky0gQ2FwdHVyZWQgbG9nIG1lc3NhZ2VzIGFyZSBhZGRlZCB0byB0aGUgYGA8c3lzdGVtLW91dD5g
YCB0YWcgaW4gdGhlIGdlbmVyYXRlZAorICBqdW5pdCB4bWwgZmlsZSBpZiB0aGUgYGBqdW5pdF9s
b2dnaW5nYGAgaW5pIG9wdGlvbiBpcyBzZXQgdG8gYGBzeXN0ZW0tb3V0YGAuCisgIElmIHRoZSB2
YWx1ZSBvZiB0aGlzIGluaSBvcHRpb24gaXMgYGBzeXN0ZW0tZXJyYGAsIHRoZSBsb2dzIGFyZSB3
cml0dGVuIHRvCisgIGBgPHN5c3RlbS1lcnI+YGAuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBgYGp1
bml0X2xvZ2dpbmdgYCBpcyBgYG5vYGAsIG1lYW5pbmcKKyAgY2FwdHVyZWQgbG9ncyBhcmUgbm90
IHdyaXR0ZW4gdG8gdGhlIG91dHB1dCBmaWxlLiAoYCMzMTU2CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNTY+YF8pCisKKy0gQWxsb3cgdGhlIGxvZ2dp
bmcgcGx1Z2luIHRvIGhhbmRsZSBgYHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0YGAgYW5kCisgIGBg
cHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoYGAgaG9va3Mgd2hlbiBsaXZlIGxvZ3MgYXJlIGVuYWJs
ZWQuIChgIzMxODkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzE4OT5gXykKKworLSBQYXNzaW5nIGBgLS1sb2ctY2xpLWxldmVsYGAgaW4gdGhlIGNvbW1h
bmQtbGluZSBub3cgYXV0b21hdGljYWxseSBhY3RpdmF0ZXMKKyAgbGl2ZSBsb2dnaW5nLiAoYCMz
MTkwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxOTA+YF8p
CisKKy0gQWRkIGNvbW1hbmQgbGluZSBvcHRpb24gYGAtLWRlc2VsZWN0YGAgdG8gYWxsb3cgZGVz
ZWxlY3Rpb24gb2YgaW5kaXZpZHVhbAorICB0ZXN0cyBhdCBjb2xsZWN0aW9uIHRpbWUuIChgIzMx
OTgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE5OD5g
XykKKworLSBDYXB0dXJlZCBsb2dzIGFyZSBwcmludGVkIGJlZm9yZSBlbnRlcmluZyBwZGIuIChg
IzMyMDQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIw
ND5gXykKKworLSBEZXNlbGVjdGVkIGl0ZW0gY291bnQgaXMgbm93IHNob3duIGJlZm9yZSB0ZXN0
cyBhcmUgcnVuLCBlLmcuIGBgY29sbGVjdGVkIFgKKyAgaXRlbXMgLyBZIGRlc2VsZWN0ZWRgYC4g
KGAjMzIxMworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
MjEzPmBfKQorCistIFRoZSBidWlsdGluIG1vZHVsZSBgYHBsYXRmb3JtYGAgaXMgbm93IGF2YWls
YWJsZSBmb3IgdXNlIGluIGV4cHJlc3Npb25zIGluCisgIGBgcHl0ZXN0Lm1hcmtgYC4gKGAjMzIz
NgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjM2PmBf
KQorCistIFRoZSAqc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8qIHNlY3Rpb24gbm93IGlzIGRpc3Bs
YXllZCBhZnRlciB0cmFjZWJhY2tzIGFuZAorICB3YXJuaW5ncyBpbiB0aGUgdGVybWluYWwuIChg
IzMyNTUKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI1
NT5gXykKKworLSBOZXcgYGAtLXZlcmJvc2l0eWBgIGZsYWcgdG8gc2V0IHZlcmJvc2l0eSBsZXZl
bCBleHBsaWNpdGx5LiAoYCMzMjk2CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzMyOTY+YF8pCisKKy0gYGBweXRlc3QuYXBwcm94YGAgbm93IGFjY2VwdHMg
Y29tcGFyaW5nIGEgbnVtcHkgYXJyYXkgd2l0aCBhIHNjYWxhci4gKGAjMzMxMgorICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzEyPmBfKQorCisKK0J1ZyBG
aXhlcworLS0tLS0tLS0tCisKKy0gU3VwcHJlc3MgYGBJT0Vycm9yYGAgd2hlbiBjbG9zaW5nIHRo
ZSB0ZW1wb3JhcnkgZmlsZSB1c2VkIGZvciBjYXB0dXJpbmcKKyAgc3RyZWFtcyBpbiBQeXRob24g
Mi43LiAoYCMyMzcwCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzIzNzA+YF8pCisKKy0gRml4ZWQgYGBjbGVhcigpYGAgbWV0aG9kIG9uIGBgY2FwbG9nYGAg
Zml4dHVyZSB3aGljaCBjbGVhcmVkIGBgcmVjb3Jkc2BgLCBidXQKKyAgbm90IHRoZSBgYHRleHRg
YCBwcm9wZXJ0eS4gKGAjMzI5NworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMjk3PmBfKQorCistIER1cmluZyB0ZXN0IGNvbGxlY3Rpb24sIHdoZW4gc3Rk
aW4gaXMgbm90IGFsbG93ZWQgdG8gYmUgcmVhZCwgdGhlCisgIGBgRG9udFJlYWRGcm9tU3RkaW5g
YCBvYmplY3Qgc3RpbGwgYWxsb3cgaXRzZWxmIHRvIGJlIGl0ZXJhYmxlIGFuZCByZXNvbHZlZAor
ICB0byBhbiBpdGVyYXRvciB3aXRob3V0IGNyYXNoaW5nLiAoYCMzMzE0CisgIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMTQ+YF8pCisKKworSW1wcm92ZWQg
RG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEFkZGVkIGEgYHJlZmVy
ZW5jZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3JlZmVyZW5jZS5odG1sPmBf
IHBhZ2UKKyAgdG8gdGhlIGRvY3MuIChgIzE3MTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTcxMz5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIENoYW5nZSBtaW5pbXVtIHJlcXVpcmVtZW50
IG9mIGBgYXR0cnNgYCB0byBgYDE3LjQuMGBgLiAoYCMzMjI4CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyMjg+YF8pCisKKy0gUmVuYW1lZCBleGFtcGxl
IGRpcmVjdG9yaWVzIHNvIGFsbCB0ZXN0cyBwYXNzIHdoZW4gcmFuIGZyb20gdGhlIGJhc2UKKyAg
ZGlyZWN0b3J5LiAoYCMzMjQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMyNDU+YF8pCisKKy0gSW50ZXJuYWwgYGBtYXJrLnB5YGAgbW9kdWxlIGhhcyBiZWVu
IHR1cm5lZCBpbnRvIGEgcGFja2FnZS4gKGAjMzI1MAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjUwPmBfKQorCistIGBgcHl0ZXN0YGAgbm93IGRlcGVu
ZHMgb24gdGhlIGBtb3JlLWl0ZXJ0b29scworICA8aHR0cHM6Ly9naXRodWIuY29tL2VyaWtyb3Nl
L21vcmUtaXRlcnRvb2xzPmBfIHBhY2thZ2UuIChgIzMyNjUKKyAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI2NT5gXykKKworLSBBZGRlZCB3YXJuaW5nIHdo
ZW4gYGBbcHl0ZXN0XWBgIHNlY3Rpb24gaXMgdXNlZCBpbiBhIGBgLmNmZ2BgIGZpbGUgcGFzc2Vk
CisgIHdpdGggYGAtY2BgIChgIzMyNjggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzI2OD5gXykKKworLSBgYG5vZGVpZHNgYCBjYW4gbm93IGJlIHBhc3NlZCBl
eHBsaWNpdGx5IHRvIGBgRlNDb2xsZWN0b3JgYCBhbmQgYGBOb2RlYGAKKyAgY29uc3RydWN0b3Jz
LiAoYCMzMjkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMy
OTE+YF8pCisKKy0gSW50ZXJuYWwgcmVmYWN0b3Jpbmcgb2YgYGBGb3JtYXR0ZWRFeGNpbmZvYGAg
dG8gdXNlIGBgYXR0cnNgYCBmYWNpbGl0aWVzIGFuZAorICByZW1vdmUgb2xkIHN1cHBvcnQgY29k
ZSBmb3IgbGVnYWN5IFB5dGhvbiB2ZXJzaW9ucy4gKGAjMzI5MgorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjkyPmBfKQorCistIFJlZmFjdG9yaW5nIHRv
IHVuaWZ5IGhvdyB2ZXJib3NpdHkgaXMgaGFuZGxlZCBpbnRlcm5hbGx5LiAoYCMzMjk2CisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTY+YF8pCisKKy0g
SW50ZXJuYWwgcmVmYWN0b3JpbmcgdG8gYmV0dGVyIGludGVncmF0ZSB3aXRoIGFyZ3BhcnNlLiAo
YCMzMzA0CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMz
MDQ+YF8pCisKKy0gRml4IGEgcHl0aG9uIGV4YW1wbGUgd2hlbiBjYWxsaW5nIGEgZml4dHVyZSBp
biBkb2MvZW4vdXNhZ2UucnN0IChgIzMzMDgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzMwOD5gXykKKworCitweXRlc3QgMy40LjIgKDIwMTgtMDMtMDQp
Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0g
UmVtb3ZlZCBwcm9ncmVzcyBpbmZvcm1hdGlvbiB3aGVuIGNhcHR1cmUgb3B0aW9uIGlzIGBgbm9g
YC4gKGAjMzIwMworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zMjAzPmBfKQorCistIFJlZmFjdG9yIGNoZWNrIG9mIGJpbmRpciBmcm9tIGBgZXhpc3RzYGAg
dG8gYGBpc2RpcmBgLiAoYCMzMjQxCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzMyNDE+YF8pCisKKy0gRml4IGBgVHlwZUVycm9yYGAgaXNzdWUgd2hlbiB1
c2luZyBgYGFwcHJveGBgIHdpdGggYSBgYERlY2ltYWxgYCB2YWx1ZS4KKyAgKGAjMzI0NyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjQ3PmBfKQorCistIEZp
eCByZWZlcmVuY2UgY3ljbGUgZ2VuZXJhdGVkIHdoZW4gdXNpbmcgdGhlIGBgcmVxdWVzdGBgIGZp
eHR1cmUuIChgIzMyNDkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzI0OT5gXykKKworLSBgYFt0b29sOnB5dGVzdF1gYCBzZWN0aW9ucyBpbiBgYCouY2Zn
YGAgZmlsZXMgcGFzc2VkIGJ5IHRoZSBgYC1jYGAgb3B0aW9uIGFyZQorICBub3cgcHJvcGVybHkg
cmVjb2duaXplZC4gKGAjMzI2MAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMjYwPmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBBZGQgbG9nZ2luZyBwbHVnaW4gdG8gcGx1Z2lucyBsaXN0LiAo
YCMzMjA5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMy
MDk+YF8pCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworLSBGaXggbWlub3IgdHlwbyBpbiBmaXh0dXJlLnJzdCAoYCMzMjU5CisgIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNTk+YF8pCisKKworcHl0
ZXN0IDMuNC4xICgyMDE4LTAyLTIwKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcg
Rml4ZXMKKy0tLS0tLS0tLQorCistIE1vdmUgaW1wb3J0IG9mIGBgZG9jdGVzdC5VbmV4cGVjdGVk
RXhjZXB0aW9uYGAgdG8gdG9wLWxldmVsIHRvIGF2b2lkIHBvc3NpYmxlCisgIGVycm9ycyB3aGVu
IHVzaW5nIGBgLS1wZGJgYC4gKGAjMTgxMAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xODEwPmBfKQorCistIEFkZGVkIHByaW50aW5nIG9mIGNhcHR1cmVk
IHN0ZG91dC9zdGRlcnIgYmVmb3JlIGVudGVyaW5nIHBkYiwgYW5kIGltcHJvdmVkIGEKKyAgdGVz
dCB3aGljaCB3YXMgZ2l2aW5nIGZhbHNlIG5lZ2F0aXZlcyBhYm91dCBvdXRwdXQgY2FwdHVyaW5n
LiAoYCMzMDUyCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzMwNTI+YF8pCisKKy0gRml4IG9yZGVyaW5nIG9mIHRlc3RzIHVzaW5nIHBhcmFtZXRyaXplZCBm
aXh0dXJlcyB3aGljaCBjYW4gbGVhZCB0byBmaXh0dXJlcworICBiZWluZyBjcmVhdGVkIG1vcmUg
dGhhbiBuZWNlc3NhcnkuIChgIzMxNjEKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzE2MT5gXykKKworLSBGaXggYnVnIHdoZXJlIGxvZ2dpbmcgaGFwcGVu
aW5nIGF0IGhvb2tzIG91dHNpZGUgb2YgInRlc3QgcnVuIiBob29rcyB3b3VsZAorICBjYXVzZSBh
biBpbnRlcm5hbCBlcnJvci4gKGAjMzE4NAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zMTg0PmBfKQorCistIERldGVjdCBhcmd1bWVudHMgaW5qZWN0ZWQg
YnkgYGB1bml0dGVzdC5tb2NrLnBhdGNoYGAgZGVjb3JhdG9yIGNvcnJlY3RseSB3aGVuCisgIHB5
cGkgYGBtb2NrLnBhdGNoYGAgaXMgaW5zdGFsbGVkIGFuZCBpbXBvcnRlZC4gKGAjMzIwNgorICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjA2PmBfKQorCist
IEVycm9ycyBzaG93biB3aGVuIGEgYGBweXRlc3QucmFpc2VzKClgYCB3aXRoIGBgbWF0Y2g9YGAg
ZmFpbHMgYXJlIG5vdyBjbGVhbmVyCisgIG9uIHdoYXQgaGFwcGVuZWQ6IFdoZW4gbm8gZXhjZXB0
aW9uIHdhcyByYWlzZWQsIHRoZSAibWF0Y2hpbmcgJy4uLiciIHBhcnQgZ290CisgIHJlbW92ZWQg
YXMgaXQgZmFsc2VseSBpbXBsaWVzIHRoYXQgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnV0IGl0
IGRpZG4ndAorICBtYXRjaC4gV2hlbiBhIHdyb25nIGV4Y2VwdGlvbiB3YXMgcmFpc2VkLCBpdCdz
IG5vdyB0aHJvd24gKGxpa2UKKyAgYGBweXRlc3QucmFpc2VkKClgYCB3aXRob3V0IGBgbWF0Y2g9
YGAgd291bGQpIGluc3RlYWQgb2YgY29tcGxhaW5pbmcgYWJvdXQKKyAgdGhlIHVubWF0Y2hlZCB0
ZXh0LiAoYCMzMjIyCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMyMjI+YF8pCisKKy0gRml4ZWQgb3V0cHV0IGNhcHR1cmUgaGFuZGxpbmcgaW4gZG9jdGVz
dHMgb24gbWFjT1MuIChgIzk4NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy85ODU+YF8pCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCistIEFkZCBTcGhpbnggcGFyYW1ldGVyIGRvY3MgZm9yIGBgbWF0Y2hg
YCBhbmQgYGBtZXNzYWdlYGAgYXJncyB0bworICBgYHB5dGVzdC5yYWlzZXNgYC4gKGAjMzIwMgor
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjAyPmBfKQor
CisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gcHl0ZXN0IGhhcyBjaGFuZ2VkIHRoZSBwdWJsaWNhdGlvbiBwcm9jZWR1cmUgYW5kIGlzIG5v
dyBiZWluZyBwdWJsaXNoZWQgdG8KKyAgUHlQSSBkaXJlY3RseSBmcm9tIFRyYXZpcy4gKGAjMzA2
MAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDYwPmBf
KQorCistIFJlbmFtZSBgYFBhcmFtZXRlclNldC5fZm9yX3BhcmFtZXRlcml6ZSgpYGAgdG8gYGBf
Zm9yX3BhcmFtZXRyaXplKClgYCBpbgorICBvcmRlciB0byBjb21wbHkgd2l0aCB0aGUgbmFtaW5n
IGNvbnZlbnRpb24uIChgIzMxNjYKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzE2Nj5gXykKKworLSBTa2lwIGZhaWxpbmcgcGRiL2RvY3Rlc3QgdGVzdCBv
biBtYWMuIChgIzk4NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy85ODU+YF8pCisKKworcHl0ZXN0IDMuNC4wICgyMDE4LTAxLTMwKQorPT09PT09PT09PT09
PT09PT09PT09PT09PQorCitEZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy0gQWxsIHB5dGVzdCBjbGFzc2VzIG5vdyBzdWJjbGFzcyBgYG9iamVj
dGBgIGZvciBiZXR0ZXIgUHl0aG9uIDIvMyBjb21wYXRpYmlsaXR5LgorICBUaGlzIHNob3VsZCBu
b3QgYWZmZWN0IHVzZXIgY29kZSBleGNlcHQgaW4gdmVyeSByYXJlIGVkZ2UgY2FzZXMuIChgIzIx
NDcKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjE0Nz5g
XykKKworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBJbnRyb2R1Y2UgYGBlbXB0eV9wYXJhbWV0
ZXJfc2V0X21hcmtgYCBpbmkgb3B0aW9uIHRvIHNlbGVjdCB3aGljaCBtYXJrIHRvCisgIGFwcGx5
IHdoZW4gYGBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYCBpcyBnaXZlbiBhbiBlbXB0eSBzZXQg
b2YgcGFyYW1ldGVycy4KKyAgVmFsaWQgb3B0aW9ucyBhcmUgYGBza2lwYGAgKGRlZmF1bHQpIGFu
ZCBgYHhmYWlsYGAuIE5vdGUgdGhhdCBpdCBpcyBwbGFubmVkCisgIHRvIGNoYW5nZSB0aGUgZGVm
YXVsdCB0byBgYHhmYWlsYGAgaW4gZnV0dXJlIHJlbGVhc2VzIGFzIHRoaXMgaXMgY29uc2lkZXJl
ZAorICBsZXNzIGVycm9yIHByb25lLiAoYCMyNTI3CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1Mjc+YF8pCisKKy0gKipJbmNvbXBhdGlibGUgY2hhbmdl
Kio6IGFmdGVyIGNvbW11bml0eSBmZWVkYmFjayB0aGUgYGxvZ2dpbmcKKyAgPGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9sb2dnaW5nLmh0bWw+YF8gZnVuY3Rpb25hbGl0eSBoYXMK
KyAgdW5kZXJnb25lIHNvbWUgY2hhbmdlcy4gUGxlYXNlIGNvbnN1bHQgdGhlIGBsb2dnaW5nIGRv
Y3VtZW50YXRpb24KKyAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9sb2dnaW5n
Lmh0bWwjaW5jb21wYXRpYmxlLWNoYW5nZXMtaW4tcHl0ZXN0LTMtND5gXworICBmb3IgZGV0YWls
cy4gKGAjMzAxMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
MDEzPmBfKQorCistIENvbnNvbGUgb3V0cHV0IGZhbGxzIGJhY2sgdG8gImNsYXNzaWMiIG1vZGUg
d2hlbiBjYXB0dXJpbmcgaXMgZGlzYWJsZWQgKGBgLXNgYCksCisgIG90aGVyd2lzZSB0aGUgb3V0
cHV0IGdldHMgZ2FyYmxlZCB0byB0aGUgcG9pbnQgb2YgYmVpbmcgdXNlbGVzcy4gKGAjMzAzOAor
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDM4PmBfKQor
CistIE5ldyBgcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoCisgIDxodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvcmVmZXJlbmNlLmh0bWwjX3B5dGVzdC5ob29rc3BlYy5weXRlc3RfcnVu
dGVzdF9sb2dmaW5pc2g+YF8KKyAgaG9vayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHRlc3QgaXRl
bSBoYXMgZmluaXNoZWQgZXhlY3V0aW5nLCBhbmFsb2dvdXMgdG8KKyAgYHB5dGVzdF9ydW50ZXN0
X2xvZ3N0YXJ0CisgIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvcmVmZXJlbmNl
Lmh0bWwjX3B5dGVzdC5ob29rc3BlYy5weXRlc3RfcnVudGVzdF9sb2dzdGFydD5gXy4KKyAgKGAj
MzEwMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTAxPmBf
KQorCistIEltcHJvdmUgcGVyZm9ybWFuY2Ugd2hlbiBjb2xsZWN0aW5nIHRlc3RzIHVzaW5nIG1h
bnkgZml4dHVyZXMuIChgIzMxMDcKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzEwNz5gXykKKworLSBOZXcgYGBjYXBsb2cuZ2V0X3JlY29yZHMod2hlbilg
YCBtZXRob2Qgd2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBjYXB0dXJlZAorICByZWNvcmRz
IGZvciB0aGUgYGAic2V0dXAiYGAsIGBgImNhbGwiYGAgYW5kIGBgInRlYXJkb3duImBgCisgIHRl
c3Rpbmcgc3RhZ2VzLiAoYCMzMTE3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMxMTc+YF8pCisKKy0gTmV3IGZpeHR1cmUgYGByZWNvcmRfeG1sX2F0dHJpYnV0
ZWBgIHRoYXQgYWxsb3dzIG1vZGlmeWluZyBhbmQgaW5zZXJ0aW5nCisgIGF0dHJpYnV0ZXMgb24g
dGhlIGBgPHRlc3RjYXNlPmBgIHhtbCBub2RlIGluIEpVbml0IHJlcG9ydHMuIChgIzMxMzAKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEzMD5gXykKKwor
LSBUaGUgZGVmYXVsdCBjYWNoZSBkaXJlY3RvcnkgaGFzIGJlZW4gcmVuYW1lZCBmcm9tIGBgLmNh
Y2hlYGAgdG8KKyAgYGAucHl0ZXN0X2NhY2hlYGAgYWZ0ZXIgY29tbXVuaXR5IGZlZWRiYWNrIHRo
YXQgdGhlIG5hbWUgYGAuY2FjaGVgYCBkaWQgbm90CisgIG1ha2UgaXQgY2xlYXIgdGhhdCBpdCB3
YXMgdXNlZCBieSBweXRlc3QuIChgIzMxMzgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzEzOD5gXykKKworLSBDb2xvcml6ZSB0aGUgbGV2ZWxuYW1lIGNv
bHVtbiBpbiB0aGUgbGl2ZS1sb2cgb3V0cHV0LiAoYCMzMTQyCisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNDI+YF8pCisKKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBGaXggaGFuZ2luZyBwZXhwZWN0IHRlc3Qgb24gTWFjT1MgYnkgdXNpbmcgZmx1
c2goKSBpbnN0ZWFkIG9mIHdhaXQoKS4KKyAgKGAjMjAyMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDIyPmBfKQorCistIEZpeCByZXN0b3JpbmcgUHl0aG9u
IHN0YXRlIGFmdGVyIGluLXByb2Nlc3MgcHl0ZXN0IHJ1bnMgd2l0aCB0aGUKKyAgYGBweXRlc3Rl
cmBgIHBsdWdpbjsgdGhpcyBtYXkgYnJlYWsgdGVzdHMgdXNpbmcgbXVsdGlwbGUgaW5wcm9jZXNz
CisgIHB5dGVzdCBydW5zIGlmIGxhdGVyIG9uZXMgZGVwZW5kIG9uIGVhcmxpZXIgb25lcyBsZWFr
aW5nIGdsb2JhbCBpbnRlcnByZXRlcgorICBjaGFuZ2VzLiAoYCMzMDE2IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMTY+YF8pCisKKy0gRml4IHNraXBwaW5n
IHBsdWdpbiByZXBvcnRpbmcgaG9vayB3aGVuIHRlc3QgYWJvcnRlZCBiZWZvcmUgcGx1Z2luIHNl
dHVwCisgIGhvb2suIChgIzMwNzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzA3ND5gXykKKworLSBGaXggcHJvZ3Jlc3MgcGVyY2VudGFnZSByZXBvcnRlZCB3
aGVuIHRlc3RzIGZhaWwgZHVyaW5nIHRlYXJkb3duLiAoYCMzMDg4CisgIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwODg+YF8pCisKKy0gKipJbmNvbXBhdGli
bGUgY2hhbmdlKio6IGBgLW8vLS1vdmVycmlkZWBgIG9wdGlvbiBubyBsb25nZXIgZWF0cyBhbGwg
dGhlCisgIHJlbWFpbmluZyBvcHRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdXJwcmlzaW5nIGJl
aGF2aW9yOiBmb3IgZXhhbXBsZSwKKyAgYGBweXRlc3QgLW8gZm9vPTEgL3BhdGgvdG8vdGVzdC5w
eWBgIHdvdWxkIGZhaWwgYmVjYXVzZSBgYC9wYXRoL3RvL3Rlc3QucHlgYAorICB3b3VsZCBiZSBj
b25zaWRlcmVkIGFzIHBhcnQgb2YgdGhlIGBgLW9gYCBjb21tYW5kLWxpbmUgYXJndW1lbnQuIE9u
ZQorICBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgbm93IG11bHRpcGxlIGNvbmZpZ3VyYXRp
b24gb3ZlcnJpZGVzIG5lZWQKKyAgbXVsdGlwbGUgYGAtb2BgIGZsYWdzOiBgYHB5dGVzdCAtbyBm
b289MSAtbyBiYXI9MmBgLiAoYCMzMTAzCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzMxMDM+YF8pCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCistIERvY3VtZW50IGhvb2tzIChkZWZpbmVkIHdpdGggYGBo
aXN0b3JpYz1UcnVlYGApIHdoaWNoIGNhbm5vdCBiZSB1c2VkIHdpdGgKKyAgYGBob29rd3JhcHBl
cj1UcnVlYGAuIChgIzI0MjMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjQyMz5gXykKKworLSBDbGFyaWZ5IHRoYXQgd2FybmluZyBjYXB0dXJpbmcgZG9l
c24ndCBjaGFuZ2UgdGhlIHdhcm5pbmcgZmlsdGVyIGJ5IGRlZmF1bHQuCisgIChgIzI0NTcgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ1Nz5gXykKKworLSBD
bGFyaWZ5IGEgcG9zc2libGUgY29uZnVzaW9uIHdoZW4gdXNpbmcgcHl0ZXN0X2ZpeHR1cmVfc2V0
dXAgd2l0aCBmaXh0dXJlCisgIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBOb25lLiAoYCMyNjk4Cisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2OTg+YF8pCisK
Ky0gRml4IHRoZSB3b3JkaW5nIG9mIGEgc2VudGVuY2Ugb24gZG9jdGVzdCBmbGFncyB1c2VkIGlu
IHB5dGVzdC4gKGAjMzA3NgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMDc2PmBfKQorCistIFByZWZlciBgYGh0dHBzOi8vKi5yZWFkdGhlZG9jcy5pb2Bg
IG92ZXIgYGBodHRwOi8vKi5ydGZkLm9yZ2BgIGZvciBsaW5rcyBpbgorICB0aGUgZG9jdW1lbnRh
dGlvbi4gKGAjMzA5MgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zMDkyPmBfKQorCistIEltcHJvdmUgcmVhZGFiaWxpdHkgKHdvcmRpbmcsIGdyYW1tYXIp
IG9mIEdldHRpbmcgU3RhcnRlZCBndWlkZSAoYCMzMTMxCisgIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxMzE+YF8pCisKKy0gQWRkZWQgbm90ZSB0aGF0IGNh
bGxpbmcgcHl0ZXN0Lm1haW4gbXVsdGlwbGUgdGltZXMgZnJvbSB0aGUgc2FtZSBwcm9jZXNzIGlz
CisgIG5vdCByZWNvbW1lbmRlZCBiZWNhdXNlIG9mIGltcG9ydCBjYWNoaW5nLiAoYCMzMTQzCisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNDM+YF8pCisK
KworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
LSBTaG93IGEgc2ltcGxlIGFuZCBlYXN5IGVycm9yIHdoZW4ga2V5d29yZCBleHByZXNzaW9ucyB0
cmlnZ2VyIGEgc3ludGF4IGVycm9yCisgIChmb3IgZXhhbXBsZSwgYGAiLWsgZm9vIGFuZCBpbXBv
cnQiYGAgd2lsbCBzaG93IGFuIGVycm9yIHRoYXQgeW91IGNhbiBub3QgdXNlCisgIHRoZSBgYGlt
cG9ydGBgIGtleXdvcmQgaW4gZXhwcmVzc2lvbnMpLiAoYCMyOTUzCisgIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5NTM+YF8pCisKKy0gQ2hhbmdlIHBhcmFt
ZXRyaXplZCBhdXRvbWF0aWMgdGVzdCBpZCBnZW5lcmF0aW9uIHRvIHVzZSB0aGUgYGBfX25hbWVf
X2BgCisgIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgZmFsbGJhY2sgYXJn
dW1lbnQgbmFtZSBwbHVzIGNvdW50ZXIuCisgIChgIzI5NzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk3Nj5gXykKKworLSBSZXBsYWNlIHB5LnN0ZCB3aXRo
IHN0ZGxpYiBpbXBvcnRzLiAoYCMzMDY3CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzMwNjc+YF8pCisKKy0gQ29ycmVjdGVkICd5b3UnIHRvICd5b3VyJyBp
biBsb2dnaW5nIGRvY3MuIChgIzMxMjkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzEyOT5gXykKKworCitweXRlc3QgMy4zLjIgKDIwMTctMTItMjUpCis9
PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gcHl0
ZXN0ZXI6IGlnbm9yZSBmaWxlcyB1c2VkIHRvIG9idGFpbiBjdXJyZW50IHVzZXIgbWV0YWRhdGEg
aW4gdGhlIGZkIGxlYWsKKyAgZGV0ZWN0b3IuIChgIzI3ODQgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc4ND5gXykKKworLSBGaXggKiptZW1vcnkgbGVhayoq
IHdoZXJlIG9iamVjdHMgcmV0dXJuZWQgYnkgZml4dHVyZXMgd2VyZSBuZXZlciBkZXN0cnVjdGVk
CisgIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gKGAjMjk4MQorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTgxPmBfKQorCistIEZpeCBjb252ZXJzaW9u
IG9mIHB5YXJncyB0byBmaWxlbmFtZSB0byBub3QgY29udmVydCBzeW1saW5rcyBvbiBQeXRob24g
Mi4gKGAjMjk4NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yOTg1PmBfKQorCistIGBgUFlURVNUX0RPTlRfUkVXUklURWBgIGlzIG5vdyBjaGVja2VkIGZv
ciBwbHVnaW5zIHRvbyByYXRoZXIgdGhhbiBvbmx5IGZvcgorICB0ZXN0IG1vZHVsZXMuIChgIzI5
OTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk5NT5gXykK
KworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0g
QWRkIGNsYXJpZnlpbmcgbm90ZSBhYm91dCBiZWhhdmlvciBvZiBtdWx0aXBsZSBwYXJhbWV0cml6
ZWQgYXJndW1lbnRzIChgIzMwMDEKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzAwMT5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCistIENvZGUgY2xlYW51cC4gKGAjMzAxNSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDE1PmBfLAorICBgIzMwMjEgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAyMT5gXykKKworLSBD
bGVhbiB1cCBjb2RlIGJ5IHJlcGxhY2luZyBpbXBvcnRzIGFuZCByZWZlcmVuY2VzIG9mIGBgX2Fz
dGBgIHRvIGBgYXN0YGAuCisgIChgIzMwMTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzAxOD5gXykKKworCitweXRlc3QgMy4zLjEgKDIwMTctMTItMDUpCis9
PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gRml4
IGlzc3VlIGFib3V0IGBgLXAgbm86PHBsdWdpbj5gYCBoYXZpbmcgbm8gZWZmZWN0LiAoYCMyOTIw
CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5MjA+YF8p
CisKKy0gRml4IHJlZ3Jlc3Npb24gd2l0aCB3YXJuaW5ncyB0aGF0IGNvbnRhaW5lZCBub24tc3Ry
aW5ncyBpbiB0aGVpciBhcmd1bWVudHMgaW4KKyAgUHl0aG9uIDIuIChgIzI5NTYgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk1Nj5gXykKKworLSBBbHdheXMg
ZXNjYXBlIG51bGwgYnl0ZXMgd2hlbiBzZXR0aW5nIGBgUFlURVNUX0NVUlJFTlRfVEVTVGBgLiAo
YCMyOTU3CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5
NTc+YF8pCisKKy0gRml4IGBgWmVyb0RpdmlzaW9uRXJyb3JgYCB3aGVuIHVzaW5nIHRoZSBgYHRl
c3Rtb25gYCBwbHVnaW4gd2hlbiBubyB0ZXN0cworICB3ZXJlIGFjdHVhbGx5IGNvbGxlY3RlZC4g
KGAjMjk3MQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
OTcxPmBfKQorCistIEJyaW5nIGJhY2sgYGBUZXJtaW5hbFJlcG9ydGVyLndyaXRlcmBgIGFzIGFu
IGFsaWFzIHRvCisgIGBgVGVybWluYWxSZXBvcnRlci5fdHdgYC4gVGhpcyBhbGlhcyB3YXMgcmVt
b3ZlZCBieSBhY2NpZGVudCBpbiB0aGUgYGAzLjMuMGBgCisgIHJlbGVhc2UuIChgIzI5ODQgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk4ND5gXykKKworLSBU
aGUgYGBweXRlc3QtY2FwdHVyZWxvZ2BgIHBsdWdpbiBpcyBub3cgYWxzbyBibGFja2xpc3RlZCwg
YXZvaWRpbmcgZXJyb3JzIHdoZW4KKyAgcnVubmluZyBweXRlc3Qgd2l0aCBpdCBzdGlsbCBpbnN0
YWxsZWQuIChgIzMwMDQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzAwND5gXykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKy0gRml4IGJyb2tlbiBsaW5rIHRvIHBsdWdpbiBgYHB5dGVzdC1sb2NhbHNl
cnZlcmBgLiAoYCMyOTYzCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI5NjM+YF8pCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBVcGRhdGUgZ2l0aHViICJidWdzIiBsaW5rIGluIGBgQ09OVFJJ
QlVUSU5HLnJzdGBgIChgIzI5NDkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjk0OT5gXykKKworCitweXRlc3QgMy4zLjAgKDIwMTctMTEtMjMpCis9PT09
PT09PT09PT09PT09PT09PT09PT09CisKK0RlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBweXRlc3Qgbm8gbG9uZ2VyIHN1cHBvcnRzIFB5dGhv
biAqKjIuNioqIGFuZCAqKjMuMyoqLiBUaG9zZSBQeXRob24gdmVyc2lvbnMKKyAgYXJlIEVPTCBm
b3Igc29tZSB0aW1lIG5vdyBhbmQgaW5jdXIgbWFpbnRlbmFuY2UgYW5kIGNvbXBhdGliaWxpdHkg
Y29zdHMgb24KKyAgdGhlIHB5dGVzdCBjb3JlIHRlYW0sIGFuZCBmb2xsb3dpbmcgdXAgd2l0aCB0
aGUgcmVzdCBvZiB0aGUgY29tbXVuaXR5IHdlCisgIGRlY2lkZWQgdGhhdCB0aGV5IHdpbGwgbm8g
bG9uZ2VyIGJlIHN1cHBvcnRlZCBzdGFydGluZyBvbiB0aGlzIHZlcnNpb24uIFVzZXJzCisgIHdo
aWNoIHN0aWxsIHJlcXVpcmUgdGhvc2UgdmVyc2lvbnMgc2hvdWxkIHBpbiBweXRlc3QgdG8gYGA8
My4zYGAuIChgIzI4MTIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjgxMj5gXykKKworLSBSZW1vdmUgaW50ZXJuYWwgYGBfcHJlbG9hZHBsdWdpbnMoKWBg
IGZ1bmN0aW9uLiBUaGlzIHJlbW92YWwgaXMgcGFydCBvZiB0aGUKKyAgYGBweXRlc3RfbmFtZXNw
YWNlKClgYCBob29rIGRlcHJlY2F0aW9uLiAoYCMyNjM2CisgIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MzY+YF8pCisKKy0gSW50ZXJuYWxseSBjaGFuZ2Ug
YGBDYWxsU3BlYzJgYCB0byBoYXZlIGEgbGlzdCBvZiBtYXJrcyBpbnN0ZWFkIG9mIGEgYnJva2Vu
CisgIG1hcHBpbmcgb2Yga2V5d29yZHMuIFRoaXMgcmVtb3ZlcyB0aGUga2V5d29yZHMgYXR0cmli
dXRlIG9mIHRoZSBpbnRlcm5hbAorICBgYENhbGxTcGVjMmBgIGNsYXNzLiAoYCMyNjcyCisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2NzI+YF8pCisKKy0g
UmVtb3ZlIFBhcmFtZXRlclNldC5kZXByZWNhdGVkX2FyZ19kaWN0IC0gaXRzIG5vdCBhIHB1Ymxp
YyBhcGkgYW5kIHRoZSBsYWNrCisgIG9mIHRoZSB1bmRlcnNjb3JlIHdhcyBhIG5hbWluZyBlcnJv
ci4gKGAjMjY3NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yNjc1PmBfKQorCistIFJlbW92ZSB0aGUgaW50ZXJuYWwgbXVsdGktdHlwZWQgYXR0cmlidXRl
IGBgTm9kZS5fZXZhbHNraXBgYCBhbmQgcmVwbGFjZSBpdAorICB3aXRoIHRoZSBib29sZWFuIGBg
Tm9kZS5fc2tpcHBlZF9ieV9tYXJrYGAuIChgIzI3NjcKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc2Nz5gXykKKworLSBUaGUgYGBwYXJhbXNgYCBsaXN0
IHBhc3NlZCB0byBgYHB5dGVzdC5maXh0dXJlYGAgaXMgbm93IGZvcgorICBhbGwgZWZmZWN0cyBj
b25zaWRlcmVkIGltbXV0YWJsZSBhbmQgZnJvemVuIGF0IHRoZSBtb21lbnQgb2YgdGhlIGBgcHl0
ZXN0LmZpeHR1cmVgYAorICBjYWxsLiBQcmV2aW91c2x5IHRoZSBsaXN0IGNvdWxkIGJlIGNoYW5n
ZWQgYmVmb3JlIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHRoZSBmaXh0dXJlCisgIGFsbG93aW5n
IGZvciBhIGZvcm0gb2YgZHluYW1pYyBwYXJhbWV0cml6YXRpb24gKGZvciBleGFtcGxlLCB1cGRh
dGVkIGZyb20gY29tbWFuZC1saW5lIG9wdGlvbnMpLAorICBidXQgdGhpcyB3YXMgYW4gdW53YW50
ZWQgaW1wbGVtZW50YXRpb24gZGV0YWlsIHdoaWNoIGNvbXBsaWNhdGVkIHRoZSBpbnRlcm5hbHMg
YW5kIHByZXZlbnRlZAorICBzb21lIGludGVybmFsIGNsZWFudXAuIFNlZSBpc3N1ZSBgIzI5NTkg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk1OT5gXworICBm
b3IgZGV0YWlscyBhbmQgYSByZWNvbW1lbmRlZCB3b3JrYXJvdW5kLgorCitGZWF0dXJlcworLS0t
LS0tLS0KKworLSBgYHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyYGAgaG9vayBjYW4gbm93
IHJlY2VpdmUgYSBgYHJlcXVlc3RgYAorICBhcmd1bWVudC4gKGAjMjEyNCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTI0PmBfKQorCistIFJlcGxhY2UgdGhl
IG9sZCBpbnRyb3NwZWN0aW9uIGNvZGUgaW4gY29tcGF0LnB5IHRoYXQgZGV0ZXJtaW5lcyB0aGUg
YXZhaWxhYmxlCisgIGFyZ3VtZW50cyBvZiBmaXh0dXJlcyB3aXRoIGluc3BlY3Quc2lnbmF0dXJl
IG9uIFB5dGhvbiAzIGFuZAorICBmdW5jc2lncy5zaWduYXR1cmUgb24gUHl0aG9uIDIuIFRoaXMg
c2hvdWxkIHJlc3BlY3QgYGBfX3NpZ25hdHVyZV9fYGAKKyAgZGVjbGFyYXRpb25zIG9uIGZ1bmN0
aW9ucy4gKGAjMjI2NworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yMjY3PmBfKQorCistIFJlcG9ydCB0ZXN0cyB3aXRoIGdsb2JhbCBgYHB5dGVzdG1hcmtg
YCB2YXJpYWJsZSBvbmx5IG9uY2UuIChgIzI1NDkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU0OT5gXykKKworLSBOb3cgcHl0ZXN0IGRpc3BsYXlzIHRo
ZSB0b3RhbCBwcm9ncmVzcyBwZXJjZW50YWdlIHdoaWxlIHJ1bm5pbmcgdGVzdHMuIFRoZQorICBw
cmV2aW91cyBvdXRwdXQgc3R5bGUgY2FuIGJlIHNldCBieSBjb25maWd1cmluZyB0aGUgYGBjb25z
b2xlX291dHB1dF9zdHlsZWBgCisgIHNldHRpbmcgdG8gYGBjbGFzc2ljYGAuIChgIzI2NTcgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY1Nz5gXykKKworLSBN
YXRjaCBgYHdhcm5zYGAgc2lnbmF0dXJlIHRvIGBgcmFpc2VzYGAgYnkgYWRkaW5nIGBgbWF0Y2hg
YCBrZXl3b3JkLiAoYCMyNzA4CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI3MDg+YF8pCisKKy0gcHl0ZXN0IG5vdyBjYXB0dXJlcyBhbmQgZGlzcGxheXMg
b3V0cHV0IGZyb20gdGhlIHN0YW5kYXJkIGBgbG9nZ2luZ2BgIG1vZHVsZS4KKyAgVGhlIHVzZXIg
Y2FuIGNvbnRyb2wgdGhlIGxvZ2dpbmcgbGV2ZWwgdG8gYmUgY2FwdHVyZWQgYnkgc3BlY2lmeWlu
ZyBvcHRpb25zCisgIGluIGBgcHl0ZXN0LmluaWBgLCB0aGUgY29tbWFuZCBsaW5lIGFuZCBhbHNv
IGR1cmluZyBpbmRpdmlkdWFsIHRlc3RzIHVzaW5nCisgIG1hcmtlcnMuIEFsc28sIGEgYGBjYXBs
b2dgYCBmaXh0dXJlIGlzIGF2YWlsYWJsZSB0aGF0IGVuYWJsZXMgdXNlcnMgdG8gdGVzdAorICB0
aGUgY2FwdHVyZWQgbG9nIGR1cmluZyBzcGVjaWZpYyB0ZXN0cyAoc2ltaWxhciB0byBgYGNhcHN5
c2BgIGZvciBleGFtcGxlKS4KKyAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhl
IGBsb2dnaW5nIGRvY3MKKyAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9sb2dn
aW5nLmh0bWw+YF8uIFRoaXMgZmVhdHVyZSB3YXMKKyAgaW50cm9kdWNlZCBieSBtZXJnaW5nIHRo
ZSBwb3B1bGFyIGBweXRlc3QtY2F0Y2hsb2cKKyAgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9w
eXRlc3QtY2F0Y2hsb2cvPmBfIHBsdWdpbiwgdGhhbmtzIHRvIGBUaG9tYXMgSGlzY2gKKyAgPGh0
dHBzOi8vZ2l0aHViLmNvbS90aGlzY2g+YF8uIEJlIGFkdmlzZWQgdGhhdCBkdXJpbmcgdGhlIG1l
cmdpbmcgdGhlCisgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW50ZXJmYWNlIHdpdGggdGhlIGRl
ZnVuY3QgYGBweXRlc3QtY2FwdHVyZWxvZ2BgIGhhcworICBiZWVuIGRyb3BwZWQuIChgIzI3OTQg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc5ND5gXykKKwor
LSBBZGQgYGBhbGxvd19tb2R1bGVfbGV2ZWxgYCBrd2FyZyB0byBgYHB5dGVzdC5za2lwKClgYCwg
ZW5hYmxpbmcgdG8gc2tpcCB0aGUKKyAgd2hvbGUgbW9kdWxlLiAoYCMyODA4IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4MDg+YF8pCisKKy0gQWxsb3cgc2V0
dGluZyBgYGZpbGVfb3JfZGlyYGAsIGBgLWNgYCwgYW5kIGBgLW9gYCBpbiBQWVRFU1RfQURET1BU
Uy4gKGAjMjgyNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yODI0PmBfKQorCistIFJldHVybiBzdGRvdXQvc3RkZXJyIGNhcHR1cmUgcmVzdWx0cyBhcyBh
IGBgbmFtZWR0dXBsZWBgLCBzbyBgYG91dGBgIGFuZAorICBgYGVycmBgIGNhbiBiZSBhY2Nlc3Nl
ZCBieSBhdHRyaWJ1dGUuIChgIzI4NzkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjg3OT5gXykKKworLSBBZGQgYGBjYXBmZGJpbmFyeWBgLCBhIHZlcnNp
b24gb2YgYGBjYXBmZGBgIHdoaWNoIHJldHVybnMgYnl0ZXMgZnJvbQorICBgYHJlYWRvdXRlcnIo
KWBgLiAoYCMyOTIzCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzI5MjM+YF8pCisKKy0gQWRkIGBgY2Fwc3lzYmluYXJ5YGAgYSB2ZXJzaW9uIG9mIGBgY2Fw
c3lzYGAgd2hpY2ggcmV0dXJucyBieXRlcyBmcm9tCisgIGBgcmVhZG91dGVycigpYGAuIChgIzI5
MzQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkzND5g
XykKKworLSBJbXBsZW1lbnQgZmVhdHVyZSB0byBza2lwIGBgc2V0dXAucHlgYCBmaWxlcyB3aGVu
IHJ1biB3aXRoCisgIGBgLS1kb2N0ZXN0LW1vZHVsZXNgYC4gKGAjNTAyCisgIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMj5gXykKKworCitCdWcgRml4ZXMK
Ky0tLS0tLS0tLQorCistIFJlc3VtZSBvdXRwdXQgY2FwdHVyaW5nIGFmdGVyIGBgY2Fwc3lzL2Nh
cGZkLmRpc2FibGVkKClgYCBjb250ZXh0IG1hbmFnZXIuCisgIChgIzE5OTMgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk5Mz5gXykKKworLSBgYHB5dGVzdF9m
aXh0dXJlX3NldHVwYGAgYW5kIGBgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXJgYCBob29r
cyBhcmUgbm93CisgIGNhbGxlZCBmb3IgYWxsIGBgY29uZnRlc3QucHlgYCBmaWxlcy4gKGAjMjEy
NAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTI0PmBf
KQorCistIElmIGFuIGV4Y2VwdGlvbiBoYXBwZW5zIHdoaWxlIGxvYWRpbmcgYSBwbHVnaW4sIHB5
dGVzdCBubyBsb25nZXIgaGlkZXMgdGhlCisgIG9yaWdpbmFsIHRyYWNlYmFjay4gSW4gUHl0aG9u
IDIgaXQgd2lsbCBzaG93IHRoZSBvcmlnaW5hbCB0cmFjZWJhY2sgd2l0aCBhIG5ldworICBtZXNz
YWdlIHRoYXQgZXhwbGFpbnMgaW4gd2hpY2ggcGx1Z2luLiBJbiBQeXRob24gMyBpdCB3aWxsIHNo
b3cgMiBjYW5vbml6ZWQKKyAgZXhjZXB0aW9ucywgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiB3aGls
ZSBsb2FkaW5nIHRoZSBwbHVnaW4gaW4gYWRkaXRpb24gdG8gYW4KKyAgZXhjZXB0aW9uIHRoYXQg
cHl0ZXN0IHRocm93cyBhYm91dCBsb2FkaW5nIGEgcGx1Z2luLiAoYCMyNDkxCisgIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0OTE+YF8pCisKKy0gYGBjYXBz
eXNgYCBhbmQgYGBjYXBmZGBgIGNhbiBub3cgYmUgdXNlZCBieSBvdGhlciBmaXh0dXJlcy4gKGAj
MjcwOQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzA5
PmBfKQorCistIEludGVybmFsIGBgcHl0ZXN0ZXJgYCBwbHVnaW4gcHJvcGVybHkgZW5jb2RlcyBg
YGJ5dGVzYGAgYXJndW1lbnRzIHRvCisgIGBgdXRmLThgYC4gKGAjMjczOCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzM4PmBfKQorCistIGBgdGVzdGRpcmBg
IG5vdyB1c2VzIHVzZSB0aGUgc2FtZSBtZXRob2QgdXNlZCBieSBgYHRtcGRpcmBgIHRvIGNyZWF0
ZSBpdHMKKyAgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gVGhpcyBjaGFuZ2VzIHRoZSBmaW5hbCBzdHJ1
Y3R1cmUgb2YgdGhlIGBgdGVzdGRpcmBgCisgIGRpcmVjdG9yeSBzbGlnaHRseSwgYnV0IHNob3Vs
ZCBub3QgYWZmZWN0IHVzYWdlIGluIG5vcm1hbCBzY2VuYXJpb3MgYW5kCisgIGF2b2lkcyBhIG51
bWJlciBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIChgIzI3NTEKKyAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc1MT5gXykKKworLSBweXRlc3Qgbm8gbG9uZ2Vy
IGNvbXBsYWlucyBhYm91dCB3YXJuaW5ncyB3aXRoIHVuaWNvZGUgbWVzc2FnZXMgYmVpbmcKKyAg
bm9uLWFzY2lpIGNvbXBhdGlibGUgZXZlbiBmb3IgYXNjaWktY29tcGF0aWJsZSBtZXNzYWdlcy4g
QXMgYSByZXN1bHQgb2YgdGhpcywKKyAgd2FybmluZ3Mgd2l0aCB1bmljb2RlIG1lc3NhZ2VzIGFy
ZSBjb252ZXJ0ZWQgZmlyc3QgdG8gYW4gYXNjaWkgcmVwcmVzZW50YXRpb24KKyAgZm9yIHNhZmV0
eS4gKGAjMjgwOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
ODA5PmBfKQorCistIENoYW5nZSByZXR1cm4gdmFsdWUgb2YgcHl0ZXN0IGNvbW1hbmQgd2hlbiBg
YC0tbWF4ZmFpbGBgIGlzIHJlYWNoZWQgZnJvbQorICBgYDJgYCAoaW50ZXJydXB0ZWQpIHRvIGBg
MWBgIChmYWlsZWQpLiAoYCMyODQ1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI4NDU+YF8pCisKKy0gRml4IGlzc3VlIGluIGFzc2VydGlvbiByZXdyaXRp
bmcgd2hpY2ggY291bGQgbGVhZCBpdCB0byByZXdyaXRlIG1vZHVsZXMgd2hpY2gKKyAgc2hvdWxk
IG5vdCBiZSByZXdyaXR0ZW4uIChgIzI5MzkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjkzOT5gXykKKworLSBIYW5kbGUgbWFya3Mgd2l0aG91dCBkZXNj
cmlwdGlvbiBpbiBgYHB5dGVzdC5pbmlgYC4gKGAjMjk0MgorICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTQyPmBfKQorCisKK1RyaXZpYWwvSW50ZXJuYWwg
Q2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gcHl0ZXN0IG5vdyBkZXBlbmRz
IG9uIGBhdHRycyA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2F0dHJzLz5gX18gZm9yIGludGVy
bmFsCisgIHN0cnVjdHVyZXMgdG8gZWFzZSBjb2RlIG1haW50YWluYWJpbGl0eS4gKGAjMjY0MQor
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjQxPmBfKQor
CistIFJlZmFjdG9yZWQgaW50ZXJuYWwgUHl0aG9uIDIvMyBjb21wYXRpYmlsaXR5IGNvZGUgdG8g
dXNlIGBgc2l4YGAuIChgIzI2NDIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjY0Mj5gXykKKworLSBTdG9wIHZlbmRvcmluZyBgYHBsdWdneWBgIC0gd2Un
cmUgbWlzc2luZyBvdXQgb24gaXRzIGxhdGVzdCBjaGFuZ2VzIGZvciBub3QKKyAgbXVjaCBiZW5l
Zml0IChgIzI3MTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjcxOT5gXykKKworLSBJbnRlcm5hbCByZWZhY3Rvcjogc2ltcGxpZnkgYXNjaWkgc3RyaW5nIGVz
Y2FwaW5nIGJ5IHVzaW5nIHRoZQorICBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIgaW4g
bmV3ZXIgUHl0aG9uIDMgdmVyc2lvbnMuIChgIzI3MzQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjczND5gXykKKworLSBSZW1vdmUgdW5uZWNlc3Nhcnkg
bWFyayBldmFsdWF0b3IgaW4gdW5pdHRlc3QgcGx1Z2luIChgIzI3NjcKKyAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc2Nz5gXykKKworLSBDYWxscyB0byBg
YE1ldGFmdW5jLmFkZGNhbGxgYCBub3cgZW1pdCBhIGRlcHJlY2F0aW9uIHdhcm5pbmcuIFRoaXMg
ZnVuY3Rpb24KKyAgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gYGBweXRlc3QtNC4wYGAu
IChgIzI4NzYKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mjg3Nj5gXykKKworLSBJbnRlcm5hbCBtb3ZlIG9mIHRoZSBwYXJhbWV0ZXJzZXQgZXh0cmFjdGlv
biB0byBhIG1vcmUgbWFpbnRhaW5hYmxlIHBsYWNlLgorICAoYCMyODc3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4Nzc+YF8pCisKKy0gSW50ZXJuYWwgcmVm
YWN0b3JpbmcgdG8gc2ltcGxpZnkgc2NvcGUgbm9kZSBsb29rdXAuIChgIzI5MTAKKyAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkxMD5gXykKKworLSBDb25m
aWd1cmUgYGBweXRlc3RgYCB0byBwcmV2ZW50IHBpcCBmcm9tIGluc3RhbGxpbmcgcHl0ZXN0IGlu
IHVuc3VwcG9ydGVkCisgIFB5dGhvbiB2ZXJzaW9ucy4gKGAjMjkyMgorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTIyPmBfKQorCisKK3B5dGVzdCAzLjIu
NSAoMjAxNy0xMS0xNSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCist
LS0tLS0tLS0KKworLSBSZW1vdmUgYGBweTwxLjVgYCByZXN0cmljdGlvbiBmcm9tIGBgcHl0ZXN0
YGAgYXMgdGhpcyBjYW4gY2F1c2UgdmVyc2lvbgorICBjb25mbGljdHMgaW4gc29tZSBpbnN0YWxs
YXRpb25zLiAoYCMyOTI2CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI5MjY+YF8pCisKKworcHl0ZXN0IDMuMi40ICgyMDE3LTExLTEzKQorPT09PT09PT09
PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEZpeCB0aGUgYnVn
IHdoZXJlIHJ1bm5pbmcgd2l0aCBgYC0tcHlhcmdzYGAgd2lsbCByZXN1bHQgaW4gaXRlbXMgd2l0
aAorICBlbXB0eSBgYHBhcmVudC5ub2RlaWRgYCBpZiBydW4gZnJvbSBhIGRpZmZlcmVudCByb290
IGRpcmVjdG9yeS4gKGAjMjc3NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNzc1PmBfKQorCistIEZpeCBpc3N1ZSB3aXRoIGBgQHB5dGVzdC5wYXJhbWV0
cml6ZWBgIGlmIGFyZ25hbWVzIHdhcyBzcGVjaWZpZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCisg
IChgIzI4MTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjgx
OT5gXykKKworLSBTdHJpcCB3aGl0ZXNwYWNlIGZyb20gbWFya2VyIG5hbWVzIHdoZW4gcmVhZGlu
ZyB0aGVtIGZyb20gSU5JIGNvbmZpZy4gKGAjMjg1NgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODU2PmBfKQorCistIFNob3cgZnVsbCBjb250ZXh0IG9m
IGRvY3Rlc3Qgc291cmNlIGluIHRoZSBweXRlc3Qgb3V0cHV0LCBpZiB0aGUgbGluZSBudW1iZXIg
b2YKKyAgZmFpbGVkIGV4YW1wbGUgaW4gdGhlIGRvY3N0cmluZyBpcyA8IDkuIChgIzI4ODIKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg4Mj5gXykKKwor
LSBNYXRjaCBmaXh0dXJlIHBhdGhzIGFnYWluc3QgYWN0dWFsIHBhdGggc2VnbWVudHMgaW4gb3Jk
ZXIgdG8gYXZvaWQgbWF0Y2hpbmcgZm9sZGVycyB3aGljaCBzaGFyZSBhIHByZWZpeC4KKyAgKGAj
MjgzNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODM2PmBf
KQorCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0g
SW50cm9kdWNlIGEgZGVkaWNhdGVkIHNlY3Rpb24gYWJvdXQgY29uZnRlc3QucHkuIChgIzE1MDUK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTUwNT5gXykK
KworLSBFeHBsaWNpdGx5IG1lbnRpb24gYGB4cGFzc2BgIGluIHRoZSBkb2N1bWVudGF0aW9uIG9m
IGBgeGZhaWxgYC4gKGAjMTk5NworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xOTk3PmBfKQorCistIEFwcGVuZCBleGFtcGxlIGZvciBweXRlc3QucGFyYW0g
aW4gdGhlIGV4YW1wbGUvcGFyYW1ldHJpemUgZG9jdW1lbnQuIChgIzI2NTgKKyAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY1OD5gXykKKworLSBDbGFyaWZ5
IGxhbmd1YWdlIG9mIHByb3Bvc2FsIGZvciBmaXh0dXJlcyBwYXJhbWV0ZXJzIChgIzI4OTMKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg5Mz5gXykKKwor
LSBMaXN0IHB5dGhvbiAzLjYgaW4gdGhlIGRvY3VtZW50ZWQgc3VwcG9ydGVkIHZlcnNpb25zIGlu
IHRoZSBnZXR0aW5nIHN0YXJ0ZWQKKyAgZG9jdW1lbnQuIChgIzI5MDMgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkwMz5gXykKKworLSBDbGFyaWZ5IHRoZSBk
b2N1bWVudGF0aW9uIG9mIGF2YWlsYWJsZSBmaXh0dXJlIHNjb3Blcy4gKGAjNTM4CisgIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzOD5gXykKKworLSBBZGQg
ZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgYGBweXRob24gLW0gcHl0ZXN0YGAgaW52b2NhdGlvbiBh
ZGRpbmcgdGhlCisgIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLiAoYCM5MTEKKyAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvOTExPmBfKQorCisKK3B5
dGVzdCAzLjIuMyAoMjAxNy0xMC0wMykKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVn
IEZpeGVzCistLS0tLS0tLS0KKworLSBGaXggY3Jhc2ggaW4gdGFiIGNvbXBsZXRpb24gd2hlbiBu
byBwcmVmaXggaXMgZ2l2ZW4uIChgIzI3NDgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjc0OD5gXykKKworLSBUaGUgZXF1YWxpdHkgY2hlY2tpbmcgZnVu
Y3Rpb24gKGBgX19lcV9fYGApIG9mIGBgTWFya0RlY29yYXRvcmBgIHJldHVybnMKKyAgYGBGYWxz
ZWBgIGlmIG9uZSBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIGBgTWFya0RlY29yYXRvcmBg
LiAoYCMyNzU4CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI3NTg+YF8pCisKKy0gV2hlbiBydW5uaW5nIGBgcHl0ZXN0IC0tZml4dHVyZXMtcGVyLXRlc3Rg
YDogZG9uJ3QgY3Jhc2ggaWYgYW4gaXRlbSBoYXMgbm8KKyAgX2ZpeHR1cmVpbmZvIGF0dHJpYnV0
ZSAoZS5nLiBkb2N0ZXN0cykgKGAjMjc4OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNzg4PmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJbiBoZWxwIHRleHQgb2YgYGAta2BgIG9wdGlvbiwg
YWRkIGV4YW1wbGUgb2YgdXNpbmcgYGBub3RgYCB0byBub3Qgc2VsZWN0CisgIGNlcnRhaW4gdGVz
dHMgd2hvc2UgbmFtZXMgbWF0Y2ggdGhlIHByb3ZpZGVkIGV4cHJlc3Npb24uIChgIzE0NDIKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ0Mj5gXykKKwor
LSBBZGQgbm90ZSBpbiBgYHBhcmFtZXRyaXplLnJzdGBgIGFib3V0IGNhbGxpbmcgYGBtZXRhZnVu
Yy5wYXJhbWV0cml6ZWBgCisgIG11bHRpcGxlIHRpbWVzLiAoYCMxNTQ4IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1NDg+YF8pCisKKworVHJpdmlhbC9JbnRl
cm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBTZXQgYGB4ZmFpbF9z
dHJpY3Q9VHJ1ZWBgIGluIHB5dGVzdCdzIG93biB0ZXN0IHN1aXRlIHRvIGNhdGNoIGV4cGVjdGVk
CisgIGZhaWx1cmVzIGFzIHNvb24gYXMgdGhleSBzdGFydCB0byBwYXNzLiAoYCMyNzIyCisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3MjI+YF8pCisKKy0g
Rml4IHR5cG8gaW4gZXhhbXBsZSBvZiBwYXNzaW5nIGEgY2FsbGFibGUgdG8gbWFya2VycyAoaW4g
ZXhhbXBsZS9tYXJrZXJzLnJzdCkKKyAgKGAjMjc2NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzY1PmBfKQorCisKK3B5dGVzdCAzLjIuMiAoMjAxNy0wOS0w
NikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKwor
LSBDYWxsaW5nIHRoZSBkZXByZWNhdGVkIGBgcmVxdWVzdC5nZXRmdW5jYXJndmFsdWUoKWBgIG5v
dyBzaG93cyB0aGUgc291cmNlIG9mCisgIHRoZSBjYWxsLiAoYCMyNjgxIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2ODE+YF8pCisKKy0gQWxsb3cgdGVzdHMg
ZGVjbGFyZWQgYXMgYGBAc3RhdGljbWV0aG9kYGAgdG8gdXNlIGZpeHR1cmVzLiAoYCMyNjk5Cisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2OTk+YF8pCisK
Ky0gRml4ZWQgZWRnZS1jYXNlIGR1cmluZyBjb2xsZWN0aW9uOiBhdHRyaWJ1dGVzIHdoaWNoIHJh
aXNlZCBgYHB5dGVzdC5mYWlsYGAKKyAgd2hlbiBhY2Nlc3NlZCB3b3VsZCBhYm9ydCB0aGUgZW50
aXJlIGNvbGxlY3Rpb24uIChgIzI3MDcKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjcwNz5gXykKKworLSBGaXggYGBSZXByRnVuY0FyZ3NgYCB3aXRoIG1p
eGVkIHVuaWNvZGUgYW5kIFVURi04IGFyZ3MuIChgIzI3MzEKKyAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjczMT5gXykKKworCitJbXByb3ZlZCBEb2N1bWVu
dGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSW4gZXhhbXBsZXMgb24gd29ya2lu
ZyB3aXRoIGN1c3RvbSBtYXJrZXJzLCBhZGQgZXhhbXBsZXMgZGVtb25zdHJhdGluZyB0aGUKKyAg
dXNhZ2Ugb2YgYGBweXRlc3QubWFyay5NQVJLRVJfTkFNRS53aXRoX2FyZ3NgYCBpbiBjb21wYXJp
c29uIHdpdGgKKyAgYGBweXRlc3QubWFyay5NQVJLRVJfTkFNRS5fX2NhbGxfX2BgIChgIzI2MDQK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYwND5gXykK
KworLSBJbiBvbmUgb2YgdGhlIHNpbXBsZSBleGFtcGxlcywgdXNlIGBgcHl0ZXN0X2NvbGxlY3Rp
b25fbW9kaWZ5aXRlbXMoKWBgIHRvIHNraXAKKyAgdGVzdHMgYmFzZWQgb24gYSBjb21tYW5kLWxp
bmUgb3B0aW9uLCBhbGxvd2luZyBpdHMgc2hhcmluZyB3aGlsZSBwcmV2ZW50aW5nIGEKKyAgdXNl
ciBlcnJvciB3aGVuIGFjZXNzaW5nIGBgcHl0ZXN0LmNvbmZpZ2BgIGJlZm9yZSB0aGUgYXJndW1l
bnQgcGFyc2luZy4KKyAgKGAjMjY1MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNjUzPmBfKQorCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gRml4ZWQgbWlub3IgZXJyb3IgaW4gJ0dvb2QgUHJhY3Rp
Y2VzL01hbnVhbCBJbnRlZ3JhdGlvbicgY29kZSBzbmlwcGV0LgorICAoYCMyNjkxIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2OTE+YF8pCisKKy0gRml4ZWQg
dHlwbyBpbiBnb29kcHJhY3RpY2VzLnJzdC4gKGAjMjcyMQorICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzIxPmBfKQorCistIEltcHJvdmUgdXNlciBndWlk
YW5jZSByZWdhcmRpbmcgYGAtLXJlc3VsdGxvZ2BgIGRlcHJlY2F0aW9uLiAoYCMyNzM5CisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3Mzk+YF8pCisKKwor
cHl0ZXN0IDMuMi4xICgyMDE3LTA4LTA4KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitC
dWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEZpeGVkIHNtYWxsIHRlcm1pbmFsIGdsaXRjaCB3aGVu
IGNvbGxlY3RpbmcgYSBzaW5nbGUgdGVzdCBpdGVtLiAoYCMyNTc5CisgIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1Nzk+YF8pCisKKy0gQ29ycmVjdGx5IGNv
bnNpZGVyIGBgL2BgIGFzIHRoZSBmaWxlIHNlcGFyYXRvciB0byBhdXRvbWF0aWNhbGx5IG1hcmsg
cGx1Z2luCisgIGZpbGVzIGZvciByZXdyaXRlIG9uIFdpbmRvd3MuIChgIzI1OTEgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3QvaXNzdWVzLzI1OTE+YF8pCisKKy0gUHJv
cGVybHkgZXNjYXBlIHRlc3QgbmFtZXMgd2hlbiBzZXR0aW5nIGBgUFlURVNUX0NVUlJFTlRfVEVT
VGBgIGVudmlyb25tZW50CisgIHZhcmlhYmxlLiAoYCMyNjQ0IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2NDQ+YF8pCisKKy0gRml4IGVycm9yIG9uIFdpbmRv
d3MgYW5kIFB5dGhvbiAzLjYrIHdoZW4gYGBzeXMuc3Rkb3V0YGAgaGFzIGJlZW4gcmVwbGFjZWQK
KyAgd2l0aCBhIHN0cmVhbS1saWtlIG9iamVjdCB3aGljaCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhl
IGZ1bGwgYGBpb2BgIG1vZHVsZQorICBidWZmZXIgcHJvdG9jb2wuIEluIHBhcnRpY3VsYXIgdGhp
cyBhZmZlY3RzIGBgcHl0ZXN0LXhkaXN0YGAgdXNlcnMgb24gdGhlCisgIGFmb3JlbWVudGlvbmVk
IHBsYXRmb3JtLiAoYCMyNjY2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0
ZXN0L2lzc3Vlcy8yNjY2PmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBFeHBsaWNpdGx5IGRvY3VtZW50IHdoaWNoIHB5dGVzdCBmZWF0
dXJlcyB3b3JrIHdpdGggYGB1bml0dGVzdGBgLiAoYCMyNjI2CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MjY+YF8pCisKKworcHl0ZXN0IDMuMi4wICgy
MDE3LTA3LTMwKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitEZXByZWNhdGlvbnMgYW5k
IFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYGBweXRlc3QuYXBwcm94
YGAgbm8gbG9uZ2VyIHN1cHBvcnRzIGBgPmBgLCBgYD49YGAsIGBgPGBgIGFuZCBgYDw9YGAKKyAg
b3BlcmF0b3JzIHRvIGF2b2lkIHN1cnByaXNpbmcvaW5jb25zaXN0ZW50IGJlaGF2aW9yLiBTZWUg
YHRoZSBhcHByb3ggZG9jcworICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3Jl
ZmVyZW5jZS5odG1sI3B5dGVzdC1hcHByb3g+YF8gZm9yIG1vcmUKKyAgaW5mb3JtYXRpb24uIChg
IzIwMDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAwMz5g
XykKKworLSBBbGwgb2xkLXN0eWxlIHNwZWNpZmljIGJlaGF2aW9yIGluIGN1cnJlbnQgY2xhc3Nl
cyBpbiB0aGUgcHl0ZXN0J3MgQVBJIGlzCisgIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhdCB0aGlz
IHBvaW50IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KKyAgVGhpcyBh
ZmZlY3RzIFB5dGhvbiAyIHVzZXJzIG9ubHkgYW5kIGluIHJhcmUgc2l0dWF0aW9ucy4gKGAjMjE0
NworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTQ3PmBf
KQorCistIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBub3cgcmFpc2VkIHdoZW4gdXNpbmcgbWFy
a3MgZm9yIHBhcmFtZXRlcnMKKyAgaW4gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgLiBVc2Ug
YGBweXRlc3QucGFyYW1gYCB0byBhcHBseSBtYXJrcyB0bworICBwYXJhbWV0ZXJzIGluc3RlYWQu
IChgIzI0MjcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQy
Nz5gXykKKworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBBZGQgc3VwcG9ydCBmb3IgbnVtcHkg
YXJyYXlzIChhbmQgZGljdHMpIHRvIGFwcHJveC4gKGAjMTk5NAorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTk0PmBfKQorCistIE5vdyB0ZXN0IGZ1bmN0
aW9uIG9iamVjdHMgaGF2ZSBhIGBgcHl0ZXN0bWFya2BgIGF0dHJpYnV0ZSBjb250YWluaW5nIGEg
bGlzdAorICBvZiBtYXJrcyBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSB0ZXN0IGZ1bmN0aW9uLCBh
cyBvcHBvc2VkIHRvIG1hcmtzIGluaGVyaXRlZAorICBmcm9tIHBhcmVudCBjbGFzc2VzIG9yIG1v
ZHVsZXMuIChgIzI1MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3Qv
aXNzdWVzLzI1MTY+YF8pCisKKy0gQ29sbGVjdGlvbiBpZ25vcmVzIGxvY2FsIHZpcnR1YWxlbnZz
IGJ5IGRlZmF1bHQ7IGBgLS1jb2xsZWN0LWluLXZpcnR1YWxlbnZgYAorICBvdmVycmlkZXMgdGhp
cyBiZWhhdmlvci4gKGAjMjUxOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KKyAgZGV2L3B5
dGVzdC9pc3N1ZXMvMjUxOD5gXykKKworLSBBbGxvdyBjbGFzcyBtZXRob2RzIGRlY29yYXRlZCBh
cyBgYEBzdGF0aWNtZXRob2RgYCB0byBiZSBjYW5kaWRhdGVzIGZvcgorICBjb2xsZWN0aW9uIGFz
IGEgdGVzdCBmdW5jdGlvbi4gKE9ubHkgZm9yIFB5dGhvbiAyLjcgYW5kIGFib3ZlLiBQeXRob24g
Mi42CisgIHdpbGwgc3RpbGwgaWdub3JlIHN0YXRpYyBtZXRob2RzLikgKGAjMjUyOCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC0KKyAgZGV2L3B5dGVzdC9pc3N1ZXMvMjUyOD5gXykKKworLSBJ
bnRyb2R1Y2UgYGBtYXJrLndpdGhfYXJnc2BgIGluIG9yZGVyIHRvIGFsbG93IHBhc3NpbmcgZnVu
Y3Rpb25zL2NsYXNzZXMgYXMKKyAgc29sZSBhcmd1bWVudCB0byBtYXJrcy4gKGAjMjU0MCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KKyAgZGV2L3B5dGVzdC9pc3N1ZXMvMjU0MD5gXykKKwor
LSBOZXcgYGBjYWNoZV9kaXJgYCBpbmkgb3B0aW9uOiBzZXRzIHRoZSBkaXJlY3Rvcnkgd2hlcmUg
dGhlIGNvbnRlbnRzIG9mIHRoZQorICBjYWNoZSBwbHVnaW4gYXJlIHN0b3JlZC4gRGlyZWN0b3J5
IG1heSBiZSByZWxhdGl2ZSBvciBhYnNvbHV0ZSBwYXRoOiBpZiByZWxhdGl2ZSBwYXRoLCB0aGVu
CisgIGRpcmVjdG9yeSBpcyBjcmVhdGVkIHJlbGF0aXZlIHRvIGBgcm9vdGRpcmBgLCBvdGhlcndp
c2UgaXQgaXMgdXNlZCBhcyBpcy4KKyAgQWRkaXRpb25hbGx5IHBhdGggbWF5IGNvbnRhaW4gZW52
aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIGFyZSBleHBhbmRlZCBkdXJpbmcKKyAgcnVudGltZS4g
KGAjMjU0MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTQz
PmBfKQorCistIEludHJvZHVjZSB0aGUgYGBQWVRFU1RfQ1VSUkVOVF9URVNUYGAgZW52aXJvbm1l
bnQgdmFyaWFibGUgdGhhdCBpcyBzZXQgd2l0aAorICB0aGUgYGBub2RlaWRgYCBhbmQgc3RhZ2Ug
KGBgc2V0dXBgYCwgYGBjYWxsYGAgYW5kIGBgdGVhcmRvd25gYCkgb2YgdGhlIHRlc3QKKyAgYmVp
bmcgY3VycmVudGx5IGV4ZWN1dGVkLiBTZWUgdGhlIGBkb2N1bWVudGF0aW9uCisgIDxodHRwczov
L2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZXhhbXBsZS9zaW1wbGUuaHRtbCNweXRlc3QtY3Vy
cmVudC10ZXN0LQorICBlbnZpcm9ubWVudC12YXJpYWJsZT5gXyBmb3IgbW9yZSBpbmZvLiAoYCMy
NTgzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNTgz
PmBfKQorCistIEludHJvZHVjZWQgYGBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3NgYCBtYXJr
IHdoaWNoIGFsbG93cyBvdmVyd3JpdGluZyB0aGUKKyAgd2FybmluZ3MgZmlsdGVyIG9uIGEgcGVy
IHRlc3QsIGNsYXNzIG9yIG1vZHVsZSBsZXZlbC4gU2VlIHRoZSBgZG9jcworICA8aHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3dhcm5pbmdzLmh0bWwjcHl0ZXN0LW1hcmstCisgIGZp
bHRlcndhcm5pbmdzPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLiAoYCMyNTk4IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNTk4PmBfKQorCistIGBgLS1s
YXN0LWZhaWxlZGBgIG5vdyByZW1lbWJlcnMgZm9yZXZlciB3aGVuIGEgdGVzdCBoYXMgZmFpbGVk
IGFuZCBvbmx5CisgIGZvcmdldHMgaXQgaWYgaXQgcGFzc2VzIGFnYWluLiBUaGlzIG1ha2VzIGl0
IGVhc3kgdG8gZml4IGEgdGVzdCBzdWl0ZSBieQorICBzZWxlY3RpdmVseSBydW5uaW5nIGZpbGVz
IGFuZCBmaXhpbmcgdGVzdHMgaW5jcmVtZW50YWxseS4gKGAjMjYyMQorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjIxPmBfKQorCistIE5ldyBgYHB5dGVz
dF9yZXBvcnRfY29sbGVjdGlvbmZpbmlzaGBgIGhvb2sgd2hpY2ggYWxsb3dzIHBsdWdpbnMgdG8g
YWRkCisgIG1lc3NhZ2VzIHRvIHRoZSB0ZXJtaW5hbCByZXBvcnRpbmcgYWZ0ZXIgY29sbGVjdGlv
biBoYXMgYmVlbiBmaW5pc2hlZAorICBzdWNjZXNzZnVsbHkuIChgIzI2MjIgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYyMj5gXykKKworLSBBZGRlZCBzdXBw
b3J0IGZvciBgUEVQLTQxNSdzIDxodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0w
NDE1Lz5gXworICBgYEV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfX2BgLiBOb3cgaWYgYSBg
YHJhaXNlIGV4Y2VwdGlvbiBmcm9tIE5vbmVgYCBpcworICBjYXVnaHQgYnkgcHl0ZXN0LCBweXRl
c3Qgd2lsbCBubyBsb25nZXIgY2hhaW4gdGhlIGNvbnRleHQgaW4gdGhlIHRlc3QgcmVwb3J0Lgor
ICBUaGUgYmVoYXZpb3Igbm93IG1hdGNoZXMgUHl0aG9uJ3MgdHJhY2ViYWNrIGJlaGF2aW9yLiAo
YCMyNjMxCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2
MzE+YF8pCisKKy0gRXhjZXB0aW9ucyByYWlzZWQgYnkgYGBweXRlc3QuZmFpbGBgLCBgYHB5dGVz
dC5za2lwYGAgYW5kIGBgcHl0ZXN0LnhmYWlsYGAKKyAgbm93IHN1YmNsYXNzIEJhc2VFeGNlcHRp
b24sIG1ha2luZyB0aGVtIGhhcmRlciB0byBiZSBjYXVnaHQgdW5pbnRlbnRpb25hbGx5CisgIGJ5
IG5vcm1hbCBjb2RlLiAoYCM1ODAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNTgwPmBfKQorCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gU2V0IGBgc3Rk
aW5gYCB0byBhIGNsb3NlZCBgYFBJUEVgYCBpbiBgYHB5dGVzdGVyLnB5LlRlc3RkaXIucG9wZW4o
KWBgIGZvcgorICBhdm9pZCB1bndhbnRlZCBpbnRlcmFjdGl2ZSBgYHBkYmBgIChgIzIwMjMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3QvaXNzdWVzLzIwMjM+YF8pCisK
Ky0gQWRkIG1pc3NpbmcgYGBlbmNvZGluZ2BgIGF0dHJpYnV0ZSB0byBgYHN5cy5zdGQqYGAgc3Ry
ZWFtcyB3aGVuIHVzaW5nCisgIGBgY2Fwc3lzYGAgY2FwdHVyZSBtb2RlLiAoYCMyMzc1IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8yMzc1PmBfKQorCist
IEZpeCB0ZXJtaW5hbCBjb2xvciBjaGFuZ2luZyB0byBibGFjayBvbiBXaW5kb3dzIGlmIGBgY29s
b3JhbWFgYCBpcyBpbXBvcnRlZAorICBpbiBhIGBgY29uZnRlc3QucHlgYCBmaWxlLiAoYCMyNTEw
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNTEwPmBf
KQorCistIEZpeCBsaW5lIG51bWJlciB3aGVuIHJlcG9ydGluZyBzdW1tYXJ5IG9mIHNraXBwZWQg
dGVzdHMuIChgIzI1NDgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjU0OD5gXykKKworLSBjYXB0dXJlOiBlbnN1cmUgdGhhdCBFbmNvZGVkRmlsZS5uYW1l
IGlzIGEgc3RyaW5nLiAoYCMyNTU1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI1NTU+YF8pCisKKy0gVGhlIG9wdGlvbnMgYGAtLWZpeHR1cmVzYGAgYW5k
IGBgLS1maXh0dXJlcy1wZXItdGVzdGBgIHdpbGwgbm93IGtlZXAKKyAgaW5kZW50YXRpb24gd2l0
aGluIGRvY3N0cmluZ3MuIChgIzI1NzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRl
di9weXRlc3QvaXNzdWVzLzI1NzQ+YF8pCisKKy0gZG9jdGVzdHMgbGluZSBudW1iZXJzIGFyZSBu
b3cgcmVwb3J0ZWQgY29ycmVjdGx5LCBmaXhpbmcgYHB5dGVzdC1zdWdhciMxMjIKKyAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9Gcm96ZW5iYWxsL3B5dGVzdC1zdWdhci9pc3N1ZXMvMTIyPmBfLiAoYCMy
NjEwCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MTA+
YF8pCisKKy0gRml4IG5vbi1kZXRlcm1pbmlzbSBpbiBvcmRlciBvZiBmaXh0dXJlIGNvbGxlY3Rp
b24uIEFkZHMgbmV3IGRlcGVuZGVuY3kKKyAgKG9yZGVyZWRkaWN0KSBmb3IgUHl0aG9uIDIuNi4g
KGAjOTIwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy85
MjA+YF8pCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCistIENsYXJpZnkgYGBweXRlc3RfY29uZmlndXJlYGAgaG9vayBjYWxsIG9yZGVyLiAoYCMy
NTM5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1Mzk+
YF8pCisKKy0gRXh0ZW5kIGRvY3VtZW50YXRpb24gZm9yIHRlc3RpbmcgcGx1Z2luIGNvZGUgd2l0
aCB0aGUgYGBweXRlc3RlcmBgIHBsdWdpbi4KKyAgKGAjOTcxIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzk3MT5gXykKKworCitUcml2aWFsL0ludGVybmFsIENo
YW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIFVwZGF0ZSBoZWxwIG1lc3NhZ2Ug
Zm9yIGBgLS1zdHJpY3RgYCB0byBtYWtlIGl0IGNsZWFyIGl0IG9ubHkgZGVhbHMgd2l0aAorICB1
bnJlZ2lzdGVyZWQgbWFya2Vycywgbm90IHdhcm5pbmdzLiAoYCMyNDQ0IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNDQ0PmBfKQorCistIEludGVybmFs
IGNvZGUgbW92ZTogbW92ZSBjb2RlIGZvciBweXRlc3QuYXBwcm94L3B5dGVzdC5yYWlzZXMgdG8g
b3duIGZpbGVzIGluCisgIG9yZGVyIHRvIGN1dCBkb3duIHRoZSBzaXplIG9mIHB5dGhvbi5weSAo
YCMyNDg5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8y
NDg5PmBfKQorCistIFJlbmFtZWQgdGhlIHV0aWxpdHkgZnVuY3Rpb24gYGBfcHl0ZXN0LmNvbXBh
dC5fZXNjYXBlX3N0cmluZ3NgYCB0bworICBgYF9hc2NpaV9lc2NhcGVkYGAgdG8gYmV0dGVyIGNv
bW11bmljYXRlIHRoZSBmdW5jdGlvbidzIHB1cnBvc2UuIChgIzI1MzMKKyAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjUzMz5gXykKKworLSBJbXByb3ZlIGVy
cm9yIG1lc3NhZ2UgZm9yIENvbGxlY3RFcnJvciB3aXRoIHNraXAvc2tpcGlmLiAoYCMyNTQ2Cisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1NDY+YF8pCisK
Ky0gRW1pdCB3YXJuaW5nIGFib3V0IGBgeWllbGRgYCB0ZXN0cyBiZWluZyBkZXByZWNhdGVkIG9u
bHkgb25jZSBwZXIgZ2VuZXJhdG9yLgorICAoYCMyNTYyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1NjI+YF8pCisKKy0gRW5zdXJlIGZpbmFsIGNvbGxlY3Rl
ZCBsaW5lIGRvZXNuJ3QgaW5jbHVkZSBhcnRpZmFjdHMgb2YgcHJldmlvdXMgd3JpdGUuCisgIChg
IzI1NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU3MT5g
XykKKworLSBGaXhlZCBhbGwgZmxha2U4IGVycm9ycyBhbmQgd2FybmluZ3MuIChgIzI1ODEgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3QvaXNzdWVzLzI1ODE+YF8pCisK
Ky0gQWRkZWQgYGBmaXgtbGludGBgIHRveCBlbnZpcm9ubWVudCB0byBydW4gYXV0b21hdGljIHBl
cDggZml4ZXMgb24gdGhlIGNvZGUuCisgIChgIzI1ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU4Mj5gXykKKworLSBUdXJuIHdhcm5pbmdzIGludG8gZXJy
b3JzIGluIHB5dGVzdCdzIG93biB0ZXN0IHN1aXRlIGluIG9yZGVyIHRvIGNhdGNoCisgIHJlZ3Jl
c3Npb25zIGR1ZSB0byBkZXByZWNhdGlvbnMgbW9yZSBwcm9tcHRseS4gKGAjMjU4OAorICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTg4PmBfKQorCistIFNo
b3cgbXVsdGlwbGUgaXNzdWUgbGlua3MgaW4gQ0hBTkdFTE9HIGVudHJpZXMuIChgIzI2MjAKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYyMD5gXykKKwor
CitweXRlc3QgMy4xLjMgKDIwMTctMDctMDMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gRml4IGRlY29kZSBlcnJvciBpbiBQeXRob24gMiBm
b3IgZG9jdGVzdHMgaW4gZG9jc3RyaW5ncy4gKGAjMjQzNAorICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDM0PmBfKQorCistIEV4Y2VwdGlvbnMgcmFpc2Vk
IGR1cmluZyB0ZWFyZG93biBieSBmaW5hbGl6ZXJzIGFyZSBub3cgc3VwcHJlc3NlZCB1bnRpbCBh
bGwKKyAgZmluYWxpemVycyBhcmUgY2FsbGVkLCB3aXRoIHRoZSBpbml0aWFsIGV4Y2VwdGlvbiBy
ZXJhaXNlZC4gKGAjMjQ0MAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yNDQwPmBfKQorCistIEZpeCBpbmNvcnJlY3QgImNvbGxlY3RlZCBpdGVtcyIgcmVw
b3J0IHdoZW4gc3BlY2lmeWluZyB0ZXN0cyBvbiB0aGUgY29tbWFuZC0KKyAgbGluZS4gKGAjMjQ2
NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDY0PmBfKQor
CistIGBgZGVwcmVjYXRlZF9jYWxsYGAgaW4gY29udGV4dC1tYW5hZ2VyIGZvcm0gbm93IGNhcHR1
cmVzIGRlcHJlY2F0aW9uIHdhcm5pbmdzCisgIGV2ZW4gaWYgdGhlIHNhbWUgd2FybmluZyBoYXMg
YWxyZWFkeSBiZWVuIHJhaXNlZC4gQWxzbywgYGBkZXByZWNhdGVkX2NhbGxgYAorICB3aWxsIGFs
d2F5cyBwcm9kdWNlIHRoZSBzYW1lIGVycm9yIG1lc3NhZ2UgKHByZXZpb3VzbHkgaXQgd291bGQg
cHJvZHVjZQorICBkaWZmZXJlbnQgbWVzc2FnZXMgaW4gY29udGV4dC1tYW5hZ2VyIHZzLiBmdW5j
dGlvbi1jYWxsIG1vZGUpLiAoYCMyNDY5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI0Njk+YF8pCisKKy0gRml4IGlzc3VlIHdoZXJlIHBhdGhzIGNvbGxl
Y3RlZCBieSBweXRlc3QgY291bGQgaGF2ZSB0cmlwbGUgbGVhZGluZyBgYC9gYAorICBjaGFyYWN0
ZXJzLiAoYCMyNDc1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI0NzU+YF8pCisKKy0gRml4IGludGVybmFsIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGRldGVjdCB0
aGUgc3RhcnQgb2YgYSByZWN1cnNpdmUgdHJhY2ViYWNrLgorICAoYCMyNDg2IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0ODY+YF8pCisKKworSW1wcm92ZWQg
RG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEV4cGxpY2l0bHkgc3Rh
dGUgZm9yIHdoaWNoIGhvb2tzIHRoZSBjYWxscyBzdG9wIGFmdGVyIHRoZSBmaXJzdCBub24tTm9u
ZQorICByZXN1bHQuIChgIzI0OTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjQ5Mz5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCistIENyZWF0ZSBpbnZva2UgdGFza3MgZm9yIHVwZGF0aW5nIHRo
ZSB2ZW5kb3JlZCBwYWNrYWdlcy4gKGAjMjQ3NAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDc0PmBfKQorCistIFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZXMg
aW4gTElDRU5TRSwgUkVBRE1FLnJzdCBhbmQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisgIChgIzI0
OTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ5OT5gXykK
KworCitweXRlc3QgMy4xLjIgKDIwMTctMDYtMDgpCis9PT09PT09PT09PT09PT09PT09PT09PT09
CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gUmVxdWlyZWQgb3B0aW9ucyBhZGRlZCB2aWEg
YGBweXRlc3RfYWRkb3B0aW9uYGAgd2lsbCBubyBsb25nZXIgcHJldmVudCB1c2luZworICAtLWhl
bHAgd2l0aG91dCBwYXNzaW5nIHRoZW0uICgjMTk5OSkKKworLSBSZXNwZWN0IGBgcHl0aG9uX2Zp
bGVzYGAgaW4gYXNzZXJ0aW9uIHJld3JpdGluZy4gKCMyMTIxKQorCistIEZpeCByZWN1cnNpb24g
ZXJyb3IgZGV0ZWN0aW9uIHdoZW4gZnJhbWVzIGluIHRoZSB0cmFjZWJhY2sgY29udGFpbiBvYmpl
Y3RzCisgIHRoYXQgY2FuJ3QgYmUgY29tcGFyZWQgKGxpa2UgYGBudW1weWBgIGFycmF5cykuICgj
MjQ1OSkKKworLSBgYFVuaWNvZGVXYXJuaW5nYGAgaXMgaXNzdWVkIGZyb20gdGhlIGludGVybmFs
IHB5dGVzdCB3YXJuaW5ncyBwbHVnaW4gb25seQorICB3aGVuIHRoZSBtZXNzYWdlIGNvbnRhaW5z
IG5vbi1hc2NpaSB1bmljb2RlIChQeXRob24gMiBvbmx5KS4gKCMyNDYzKQorCistIEFkZGVkIGEg
d29ya2Fyb3VuZCBmb3IgUHl0aG9uIDMuNiBgYFdpbmRvd3NDb25zb2xlSU9gYCBicmVha2luZyBk
dWUgdG8gUHl0ZXN0cydzCisgIGBgRkRDYXB0dXJlYGAuIE90aGVyIGNvZGUgdXNpbmcgY29uc29s
ZSBoYW5kbGVzIG1pZ2h0IHN0aWxsIGJlIGFmZmVjdGVkIGJ5IHRoZQorICB2ZXJ5IHNhbWUgaXNz
dWUgYW5kIG1pZ2h0IHJlcXVpcmUgZnVydGhlciB3b3JrYXJvdW5kcy9maXhlcywgaS5lLiBgYGNv
bG9yYW1hYGAuCisgICgjMjQ2NykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKy0gRml4IGludGVybmFsIEFQSSBsaW5rcyB0byBgYHBsdWdneWBg
IG9iamVjdHMuICgjMjMzMSkKKworLSBNYWtlIGl0IGNsZWFyIHRoYXQgYGBweXRlc3QueGZhaWxg
YCBzdG9wcyB0ZXN0IGV4ZWN1dGlvbiBhdCB0aGUgY2FsbGluZyBwb2ludAorICBhbmQgaW1wcm92
ZSBvdmVyYWxsIGZsb3cgb2YgdGhlIGBgc2tpcHBpbmdgYCBkb2NzLiAoIzgxMCkKKworCitweXRl
c3QgMy4xLjEgKDIwMTctMDUtMzApCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBG
aXhlcworLS0tLS0tLS0tCisKKy0gcHl0ZXN0IHdhcm5pbmcgY2FwdHVyZSBubyBsb25nZXIgb3Zl
cnJpZGVzIGV4aXN0aW5nIHdhcm5pbmcgZmlsdGVycy4gVGhlCisgIHByZXZpb3VzIGJlaGF2aW91
ciB3b3VsZCBvdmVycmlkZSBhbGwgZmlsdGVycyBhbmQgY2F1c2VkIHJlZ3Jlc3Npb25zIGluIHRl
c3QKKyAgc3VpdGVzIHdoaWNoIGNvbmZpZ3VyZSB3YXJuaW5nIGZpbHRlcnMgdG8gbWF0Y2ggdGhl
aXIgbmVlZHMuIE5vdGUgdGhhdCBhcyBhCisgIHNpZGUtZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCBg
YERlcHJlY2F0aW9uV2FybmluZ2BgIGFuZAorICBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdg
YCBhcmUgbm8gbG9uZ2VyIHNob3duIGJ5IGRlZmF1bHQuICgjMjQzMCkKKworLSBGaXggaXNzdWUg
d2l0aCBub24tYXNjaWkgY29udGVudHMgaW4gZG9jdGVzdCB0ZXh0IGZpbGVzLiAoIzI0MzQpCisK
Ky0gRml4IGVuY29kaW5nIGVycm9ycyBmb3IgdW5pY29kZSB3YXJuaW5ncyBpbiBQeXRob24gMi4g
KCMyNDM2KQorCistIGBgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbGBgIG5vdyBjYXB0dXJlcyBgYFBl
bmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYCBpbgorICBjb250ZXh0IG1hbmFnZXIgZm9ybS4gKCMy
NDQxKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLSBBZGRpdGlvbiBvZiB0b3duY3JpZXIgZm9yIGNoYW5nZWxvZyBtYW5hZ2VtZW50LiAoIzIz
OTApCisKKworMy4xLjAgKDIwMTctMDUtMjIpCis9PT09PT09PT09PT09PT09PT0KKworCitOZXcg
RmVhdHVyZXMKKy0tLS0tLS0tLS0tLQorCisqIFRoZSBgYHB5dGVzdC13YXJuaW5nc2BgIHBsdWdp
biBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gdGhlIGNvcmUgYW5kIG5vdyBgYHB5dGVzdGBgIGF1
dG9tYXRpY2FsbHkKKyAgY2FwdHVyZXMgYW5kIGRpc3BsYXlzIHdhcm5pbmdzIGF0IHRoZSBlbmQg
b2YgdGhlIHRlc3Qgc2Vzc2lvbi4KKworICAuLiB3YXJuaW5nOjoKKworICAgIFRoaXMgZmVhdHVy
ZSBtYXkgZGlzcnVwdCB0ZXN0IHN1aXRlcyB3aGljaCBhcHBseSBhbmQgdHJlYXQgd2FybmluZ3Mg
dGhlbXNlbHZlcywgYW5kIGNhbiBiZQorICAgIGRpc2FibGVkIGluIHlvdXIgYGBweXRlc3QuaW5p
YGA6CisKKyAgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAgIFtweXRlc3RdCisgICAgICBh
ZGRvcHRzID0gLXAgbm86d2FybmluZ3MKKworICAgIFNlZSB0aGUgYHdhcm5pbmdzIGRvY3VtZW50
YXRpb24gcGFnZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3dhcm5pbmdzLmh0
bWw+YF8gZm9yIG1vcmUKKyAgICBpbmZvcm1hdGlvbi4KKworICBUaGFua3MgYEBuaWNvZGRlbXVz
YF8gZm9yIHRoZSBQUi4KKworKiBBZGRlZCBgYGp1bml0X3N1aXRlX25hbWVgYCBpbmkgb3B0aW9u
IHRvIHNwZWNpZnkgcm9vdCBgYDx0ZXN0c3VpdGU+YGAgbmFtZSBmb3IgSlVuaXQgWE1MIHJlcG9y
dHMgKGAjNTMzYF8pLgorCisqIEFkZGVkIGFuIGluaSBvcHRpb24gYGBkb2N0ZXN0X2VuY29kaW5n
YGAgdG8gc3BlY2lmeSB3aGljaCBlbmNvZGluZyB0byB1c2UgZm9yIGRvY3Rlc3QgZmlsZXMuCisg
IFRoYW5rcyBgQHdoZWVyZGBfIGZvciB0aGUgUFIgKGAjMjEwMWBfKS4KKworKiBgYHB5dGVzdC53
YXJuc2BgIG5vdyBjaGVja3MgZm9yIHN1YmNsYXNzIHJlbGF0aW9uc2hpcCByYXRoZXIgdGhhbgor
ICBjbGFzcyBlcXVhbGl0eS4gVGhhbmtzIGBAbGVzdGV2ZWBfIGZvciB0aGUgUFIgKGAjMjE2NmBf
KQorCisqIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyBhc3NlcnRzIHRoYXQgdGhlIGVycm9yIG1lc3Nh
Z2UgbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXgKKyAgd2l0aCB0aGUgYGBtYXRjaGBgIGtleXdvcmQg
YXJndW1lbnQuIFRoYW5rcyBgQEtyaWVjaGlgXyBmb3IgdGhlIFBSLgorCisqIGBgcHl0ZXN0LnBh
cmFtYGAgY2FuIGJlIHVzZWQgdG8gZGVjbGFyZSB0ZXN0IHBhcmFtZXRlciBzZXRzIHdpdGggbWFy
a3MgYW5kIHRlc3QgaWRzLgorICBUaGFua3MgYEBSb25ueVBmYW5uc2NobWlkdGBfIGZvciB0aGUg
UFIuCisKKworQ2hhbmdlcworLS0tLS0tLQorCisqIHJlbW92ZSBhbGwgaW50ZXJuYWwgdXNlcyBv
ZiBweXRlc3RfbmFtZXNwYWNlIGhvb2tzLAorICB0aGlzIGlzIHRvIHByZXBhcmUgdGhlIHJlbW92
YWwgb2YgcHJlbG9hZGNvbmZpZyBpbiBweXRlc3QgNC4wCisgIFRoYW5rcyB0byBgQFJvbm55UGZh
bm5zY2htaWR0YF8gZm9yIHRoZSBQUi4KKworKiBweXRlc3Qgbm93IHdhcm5zIHdoZW4gYSBjYWxs
YWJsZSBpZHMgcmFpc2VzIGluIGEgcGFyYW1ldHJpemVkIHRlc3QuIFRoYW5rcyBgQGZvZ29gXyBm
b3IgdGhlIFBSLgorCisqIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBza2lwIHRlc3QgY2xhc3NlcyBm
cm9tIGJlaW5nIGNvbGxlY3RlZCBieSBzZXR0aW5nIGEKKyAgYGBfX3Rlc3RfX2BgIGF0dHJpYnV0
ZSB0byBgYEZhbHNlYGAgaW4gdGhlIGNsYXNzIGJvZHkgKGAjMjAwN2BfKS4gVGhhbmtzCisgIHRv
IGBAc3lyZWBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQGx3bWBfIGZvciB0aGUgUFIuCisKKyogQ2hh
bmdlIGp1bml0eG1sLnB5IHRvIHByb2R1Y2UgcmVwb3J0cyB0aGF0IGNvbXBseSB3aXRoIEp1bml0
eG1sIHNjaGVtYS4KKyAgSWYgdGhlIHNhbWUgdGVzdCBmYWlscyB3aXRoIGZhaWx1cmUgaW4gY2Fs
bCBhbmQgdGhlbiBlcnJvcnMgaW4gdGVhcmRvd24KKyAgd2Ugc3BsaXQgdGVzdGNhc2UgZWxlbWVu
dCBpbnRvIHR3bywgb25lIGNvbnRhaW5pbmcgdGhlIGVycm9yIGFuZCB0aGUgb3RoZXIKKyAgdGhl
IGZhaWx1cmUuIChgIzIyMjhgXykgVGhhbmtzIHRvIGBAa2tvdWtpb3VgXyBmb3IgdGhlIFBSLgor
CisqIFRlc3RjYXNlIHJlcG9ydHMgd2l0aCBhIGBgdXJsYGAgYXR0cmlidXRlIHdpbGwgbm93IHBy
b3Blcmx5IHdyaXRlIHRoaXMgdG8ganVuaXR4bWwuCisgIFRoYW5rcyBgQGZ1c2hpYF8gZm9yIHRo
ZSBQUiAoYCMxODc0YF8pLgorCisqIFJlbW92ZSBjb21tb24gaXRlbXMgZnJvbSBkaWN0IGNvbXBh
cmlzb24gb3V0cHV0IHdoZW4gdmVyYm9zaXR5PTEuIEFsc28gdXBkYXRlCisgIHRoZSB0cnVuY2F0
aW9uIG1lc3NhZ2UgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgcHl0ZXN0IHRydW5jYXRlcyBhbGwK
KyAgYXNzZXJ0aW9uIG1lc3NhZ2VzIGlmIHZlcmJvc2l0eSA8IDIgKGAjMTUxMmBfKS4KKyAgVGhh
bmtzIGBAbWF0dGR1Y2tgXyBmb3IgdGhlIFBSCisKKyogYGAtLXBkYmNsc2BgIG5vIGxvbmdlciBp
bXBsaWVzIGBgLS1wZGJgYC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UKKyAgYGBhZGRv
cHRzPS0tcGRiY2xzPW1vZHVsZS5Tb21lQ2xhc3NgYCBvbiBgYHB5dGVzdC5pbmlgYC4gVGhhbmtz
IGBAZGF2aWRzem90dGVuYF8gZm9yCisgIHRoZSBQUiAoYCMxOTUyYF8pLgorCisqIGZpeCBgIzIw
MTNgXzogdHVybiBSZWNvcmRlZFdhcm5pbmcgaW50byBgYG5hbWVkdHVwbGVgYCwKKyAgdG8gZ2l2
ZSBpdCBhIGNvbXByZWhlbnNpYmxlIHJlcHIgd2hpbGUgcHJldmVudGluZyB1bndhcnJhbnRlZCBt
b2RpZmljYXRpb24uCisKKyogZml4IGAjMjIwOGBfOiBlbnN1cmUgYW4gaXRlcmF0aW9uIGxpbWl0
IGZvciBfcHl0ZXN0LmNvbXBhdC5nZXRfcmVhbF9mdW5jLgorICBUaGFua3MgYEBSb25ueVBmYW5u
c2NobWlkdGBfIGZvciB0aGUgcmVwb3J0IGFuZCBQUi4KKworKiBIb29rcyBhcmUgbm93IHZlcmlm
aWVkIGFmdGVyIGNvbGxlY3Rpb24gaXMgY29tcGxldGUsIHJhdGhlciB0aGFuIHJpZ2h0IGFmdGVy
IGxvYWRpbmcgaW5zdGFsbGVkIHBsdWdpbnMuIFRoaXMKKyAgbWFrZXMgaXQgZWFzeSB0byB3cml0
ZSBob29rcyBmb3IgcGx1Z2lucyB3aGljaCB3aWxsIGJlIGxvYWRlZCBkdXJpbmcgY29sbGVjdGlv
biwgZm9yIGV4YW1wbGUgdXNpbmcgdGhlCisgIGBgcHl0ZXN0X3BsdWdpbnNgYCBzcGVjaWFsIHZh
cmlhYmxlIChgIzE4MjFgXykuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgor
CisqIE1vZGlmeSBgYHB5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKClgYCBob29rIHRvIGFjY2Vw
dCBgYGFyZ25hbWVgYCBhcyBhbgorICBhZGRpdGlvbmFsIHBhcmFtZXRlci4KKyAgVGhhbmtzIGBA
dW5zaWduZWRpbnRgXyBmb3IgdGhlIFBSLgorCisqIEFkZCBgYHZlbnZgYCB0byB0aGUgZGVmYXVs
dCBgYG5vcmVjdXJzZWRpcnNgYCBzZXR0aW5nLgorICBUaGFua3MgYEBUaGUtQ29tcGlsZXJgXyBm
b3IgdGhlIFBSLgorCisqIGBgUGx1Z2luTWFuYWdlci5pbXBvcnRfcGx1Z2luYGAgbm93IGFjY2Vw
dHMgdW5pY29kZSBwbHVnaW4gbmFtZXMgaW4gUHl0aG9uIDIuCisgIFRoYW5rcyBgQHJldXRzaGFy
YWJhbmlgXyBmb3IgdGhlIFBSLgorCisqIGZpeCBgIzIzMDhgXzogV2hlbiB1c2luZyBib3RoIGBg
LS1sZmBgIGFuZCBgYC0tZmZgYCwgb25seSB0aGUgbGFzdCBmYWlsZWQgdGVzdHMgYXJlIHJ1bi4K
KyAgVGhhbmtzIGBAb2ppaWBfIGZvciB0aGUgUFIuCisKKyogUmVwbGFjZSBtaW5vci9wYXRjaCBs
ZXZlbCB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRvY3VtZW50YXRpb24gd2l0aCBwbGFjZWhvbGRl
cnMuCisgIFRoaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VzIGNoYW5nZS1ub2lzZSBhcyBkaWZmZXJl
bnQgY29udHJpYnV0b3JzIHJlZ25lcmF0ZQorICB0aGUgZG9jdW1lbnRhdGlvbiBvbiBkaWZmZXJl
bnQgcGxhdGZvcm1zLgorICBUaGFua3MgYEBSb25ueVBmYW5uc2NobWlkdGBfIGZvciB0aGUgUFIu
CisKKyogZml4IGAjMjM5MWBfOiBjb25zaWRlciBweXRlc3RfcGx1Z2lucyBvbiBhbGwgcGx1Z2lu
IG1vZHVsZXMKKyAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3IgdGhlIFBSLgorCisK
K0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKyogRml4IGBgQXR0cmlidXRlRXJyb3JgYCBvbiBgYHN5
cy5zdGRvdXQuYnVmZmVyYGAgLyBgYHN5cy5zdGRlcnIuYnVmZmVyYGAKKyAgd2hpbGUgdXNpbmcg
YGBjYXBzeXNgYCBmaXh0dXJlIGluIHB5dGhvbiAzLiAoYCMxNDA3YF8pLgorICBUaGFua3MgdG8g
YEBhc290dGlsZWBfLgorCisqIENoYW5nZSBjYXB0dXJlLnB5J3MgYGBEb250UmVhZEZyb21JbnB1
dGBgIGNsYXNzIHRvIHRocm93IGBgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb25gYCBlcnJvcnMgcmF0
aGVyCisgIHRoYW4gVmFsdWVFcnJvcnMgaW4gdGhlIGBgZmlsZW5vYGAgbWV0aG9kIChgIzIyNzZg
XykuCisgIFRoYW5rcyBgQG1ldGFzeW5gXyBhbmQgYEB2bGFkLWRyYWdvc2BfIGZvciB0aGUgUFIu
CisKKyogRml4IGV4Y2VwdGlvbiBmb3JtYXR0aW5nIHdoaWxlIGltcG9ydGluZyBtb2R1bGVzIHdo
ZW4gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCisgIGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFyYWN0ZXJz
IChgIzIzMzZgXykuCisgIFRoYW5rcyBgQGZhYmlvemBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEFkZGVkIGRvY3VtZW50YXRpb24gcmVsYXRlZCB0
byBpc3N1ZSAoYCMxOTM3YF8pCisgIFRoYW5rcyBgQHNreWxhcmpoZG93bmVzYF8gZm9yIHRoZSBQ
Ui4KKworKiBBbGxvdyBjb2xsZWN0aW5nIGZpbGVzIHdpdGggYW55IGZpbGUgZXh0ZW5zaW9uIGFz
IFB5dGhvbiBtb2R1bGVzIChgIzIzNjlgXykuCisgIFRoYW5rcyBgQEtvZGlvbG9naXN0YF8gZm9y
IHRoZSBQUi4KKworKiBTaG93IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2Ugd2hlbiBjb2xsZWN0
ICJwYXJhbWV0cml6ZSIgZnVuYyB3aXRoIHdyb25nIGFyZ3MgKGAjMjM4M2BfKS4KKyAgVGhhbmtz
IGBAVGhlLUNvbXBpbGVyYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAcm9iaW4wMzcxYF8gZm9yIHRo
ZSBQUi4KKworCisuLiBfQGRhdmlkc3pvdHRlbjogaHR0cHM6Ly9naXRodWIuY29tL2Rhdmlkc3pv
dHRlbgorLi4gX0BmYWJpb3o6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpb3oKKy4uIF9AZm9nbzog
aHR0cHM6Ly9naXRodWIuY29tL2ZvZ28KKy4uIF9AZnVzaGk6IGh0dHBzOi8vZ2l0aHViLmNvbS9m
dXNoaQorLi4gX0BLb2Rpb2xvZ2lzdDogaHR0cHM6Ly9naXRodWIuY29tL0tvZGlvbG9naXN0Cisu
LiBfQEtyaWVjaGk6IGh0dHBzOi8vZ2l0aHViLmNvbS9LcmllY2hpCisuLiBfQG1hbmRlZXA6IGh0
dHBzOi8vZ2l0aHViLmNvbS9tYW5kZWVwCisuLiBfQG1hdHRkdWNrOiBodHRwczovL2dpdGh1Yi5j
b20vbWF0dGR1Y2sKKy4uIF9AbWV0YXN5bjogaHR0cHM6Ly9naXRodWIuY29tL21ldGFzeW4KKy4u
IF9ATWljaGFsVEhFRFVERTogaHR0cHM6Ly9naXRodWIuY29tL01pY2hhbFRIRURVREUKKy4uIF9A
b2ppaTogaHR0cHM6Ly9naXRodWIuY29tL29qaWkKKy4uIF9AcmV1dHNoYXJhYmFuaTogaHR0cHM6
Ly9naXRodWIuY29tL3JldXRzaGFyYWJhbmkKKy4uIF9Acm9iaW4wMzcxOiBodHRwczovL2dpdGh1
Yi5jb20vcm9iaW4wMzcxCisuLiBfQHNreWxhcmpoZG93bmVzOiBodHRwczovL2dpdGh1Yi5jb20v
c2t5bGFyamhkb3duZXMKKy4uIF9AdW5zaWduZWRpbnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS91bnNp
Z25lZGludAorLi4gX0B3aGVlcmQ6IGh0dHBzOi8vZ2l0aHViLmNvbS93aGVlcmQKKworCisuLiBf
IzE0MDc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQwNwor
Li4gXyMxNTEyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1
MTIKKy4uIF8jMTgyMTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xODIxCisuLiBfIzE4NzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9w
dWxsLzE4NzQKKy4uIF8jMTkzNzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xOTM3CisuLiBfIzE5NTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9wdWxsLzE5NTIKKy4uIF8jMjAwNzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMDA3CisuLiBfIzIwMTM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjAxMworLi4gXyMyMTAxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvcHVsbC8yMTAxCisuLiBfIzIxNjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9wdWxsLzIxNjYKKy4uIF8jMjIwODogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjA4CisuLiBfIzIyMjg6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIyOAorLi4gXyMyMjc2OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyNzYKKy4uIF8jMjMwODogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMzA4CisuLiBfIzIzMzY6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjMzNgorLi4gXyMyMzY5
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIzNjkKKy4uIF8j
MjM4MzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMzgzCisu
LiBfIzIzOTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjM5
MQorLi4gXyM1MzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NTMzCisKKworCiszLjAuNyAoMjAxNy0wMy0xNCkKKz09PT09PT09PT09PT09PT09PQorCisKKyog
Rml4IGlzc3VlIGluIGFzc2VydGlvbiByZXdyaXRpbmcgYnJlYWtpbmcgZHVlIHRvIG1vZHVsZXMg
c2lsZW50bHkgZGlzY2FyZGluZworICBvdGhlciBtb2R1bGVzIHdoZW4gaW1wb3J0aW5nIGZhaWxz
CisgIE5vdGFibHksIGltcG9ydGluZyB0aGUgYGBhbnlkYm1gYCBtb2R1bGUgaXMgZml4ZWQuIChg
IzIyNDhgXykuCisgIFRoYW5rcyBgQHBmaGF5ZXNgXyBmb3IgdGhlIFBSLgorCisqIGp1bml0eG1s
OiBGaXggcHJvYmxlbWF0aWMgY2FzZSB3aGVyZSBzeXN0ZW0tb3V0IHRhZyBvY2N1cnJlZCB0d2lj
ZSBwZXIgdGVzdGNhc2UKKyAgZWxlbWVudCBpbiB0aGUgWE1MIHJlcG9ydC4gVGhhbmtzIGBAa2tv
dWtpb3VgXyBmb3IgdGhlIFBSLgorCisqIEZpeCByZWdyZXNzaW9uLCBweXRlc3Qgbm93IHNraXBz
IHVuaXR0ZXN0IGNvcnJlY3RseSBpZiBydW4gd2l0aCBgYC0tcGRiYGAKKyAgKGAjMjEzN2BfKS4g
VGhhbmtzIHRvIGBAZ3N0YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbWJ5dGBfIGZvciB0aGUgUFIu
CisKKyogSWdub3JlIGV4Y2VwdGlvbnMgcmFpc2VkIGZyb20gZGVzY3JpcHRvcnMgKGUuZy4gcHJv
cGVydGllcykgZHVyaW5nIFB5dGhvbiB0ZXN0IGNvbGxlY3Rpb24gKGAjMjIzNGBfKS4KKyAgVGhh
bmtzIHRvIGBAYmx1ZXRlY2hgXy4KKworKiBgYC0tb3ZlcnJpZGUtaW5pYGAgbm93IGNvcnJlY3Rs
eSBvdmVycmlkZXMgc29tZSBmdW5kYW1lbnRhbCBvcHRpb25zIGxpa2UgYGBweXRob25fZmlsZXNg
YCAoYCMyMjM4YF8pLgorICBUaGFua3MgYEBzaXJleGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIFJlcGxhY2UgYGByYWlzZSBTdG9wSXRlcmF0aW9u
YGAgdXNhZ2VzIGluIHRoZSBjb2RlIGJ5IHNpbXBsZSBgYHJldHVybnNgYCB0byBmaW5pc2ggZ2Vu
ZXJhdG9ycywgaW4gYWNjb3JkYW5jZSB0byBgUEVQLTQ3OWBfIChgIzIxNjBgXykuCisgIFRoYW5r
cyB0byBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEZpeCBpbnRlcm5hbCBlcnJvcnMg
d2hlbiBhbiB1bnByaW50YWJsZSBgYEFzc2VydGlvbkVycm9yYGAgaXMgcmFpc2VkIGluc2lkZSBh
IHRlc3QuCisgIFRoYW5rcyBgQG9tZXJoYWRhcmlgXyBmb3IgdGhlIFBSLgorCisqIFNraXBwaW5n
IHBsdWdpbiBub3cgYWxzbyB3b3JrcyB3aXRoIHRlc3QgaXRlbXMgZ2VuZXJhdGVkIGJ5IGN1c3Rv
bSBjb2xsZWN0b3JzIChgIzIyMzFgXykuCisgIFRoYW5rcyB0byBgQHZpZGFydGZgXy4KKworKiBG
aXggdHJhaWxpbmcgd2hpdGVzcGFjZSBpbiBjb25zb2xlIG91dHB1dCBpZiBubyAuaW5pIGZpbGUg
cHJlc2VudGVkIChgIzIyODFgXykuIFRoYW5rcyBgQGZiam9ybmBfIGZvciB0aGUgUFIuCisKKyog
Q29uZGl0aW9ubGVzcyBgYHhmYWlsYGAgbWFya2VycyBubyBsb25nZXIgcmVseSBvbiB0aGUgdW5k
ZXJseWluZyB0ZXN0IGl0ZW0KKyAgYmVpbmcgYW4gaW5zdGFuY2Ugb2YgYGBQeW9iak1peGluYGAs
IGFuZCBjYW4gdGhlcmVmb3JlIGFwcGx5IHRvIHRlc3RzIG5vdAorICBjb2xsZWN0ZWQgYnkgdGhl
IGJ1aWx0LWluIHB5dGhvbiB0ZXN0IGNvbGxlY3Rvci4gVGhhbmtzIGBAYmFybmV5Z2FsZWBfIGZv
ciB0aGUKKyAgUFIuCisKKworLi4gX0BwZmhheWVzOiBodHRwczovL2dpdGh1Yi5jb20vcGZoYXll
cworLi4gX0BibHVldGVjaDogaHR0cHM6Ly9naXRodWIuY29tL2JsdWV0ZWNoCisuLiBfQGdzdDog
aHR0cHM6Ly9naXRodWIuY29tL2dzdAorLi4gX0BzaXJleDogaHR0cHM6Ly9naXRodWIuY29tL3Np
cmV4CisuLiBfQHZpZGFydGY6IGh0dHBzOi8vZ2l0aHViLmNvbS92aWRhcnRmCisuLiBfQGtrb3Vr
aW91OiBodHRwczovL2dpdGh1Yi5jb20vS0tvdWtpb3UKKy4uIF9Ab21lcmhhZGFyaTogaHR0cHM6
Ly9naXRodWIuY29tL29tZXJoYWRhcmkKKy4uIF9AZmJqb3JuOiBodHRwczovL2dpdGh1Yi5jb20v
ZmJqb3JuCisKKy4uIF8jMjI0ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yMjQ4CisuLiBfIzIxMzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjEzNworLi4gXyMyMTYwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzIxNjAKKy4uIF8jMjIzMTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjMxCisuLiBfIzIyMzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIzNAorLi4gXyMyMjM4OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyMzgKKy4uIF8jMjI4MTogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjgxCisKKy4uIF9QRVAtNDc5OiBodHRw
czovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDc5LworCisKKzMuMC42ICgyMDE3LTAx
LTIyKQorPT09PT09PT09PT09PT09PT09CisKKyogcHl0ZXN0IG5vIGxvbmdlciBnZW5lcmF0ZXMg
YGBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYGAgZnJvbSBpdHMgb3duIG9wZXJhdGlvbnMsIHdo
aWNoIHdhcyBpbnRyb2R1Y2VkIGJ5IG1pc3Rha2UgaW4gdmVyc2lvbiBgYDMuMC41YGAgKGAjMjEx
OGBfKS4KKyAgVGhhbmtzIHRvIGBAbmljb2RkZW11c2BfIGZvciB0aGUgcmVwb3J0IGFuZCBgQFJv
bm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUi4KKworCisqIHB5dGVzdCBubyBsb25nZXIgcmVj
b2duaXplcyBjb3JvdXRpbmUgZnVuY3Rpb25zIGFzIHlpZWxkIHRlc3RzIChgIzIxMjlgXykuCisg
IFRoYW5rcyB0byBgQG1hbGlub2ZmYF8gZm9yIHRoZSBQUi4KKworKiBQbHVnaW5zIGxvYWRlZCBi
eSB0aGUgYGBQWVRFU1RfUExVR0lOU2BgIGVudmlyb25tZW50IHZhcmlhYmxlIGFyZSBub3cgYXV0
b21hdGljYWxseQorICBjb25zaWRlcmVkIGZvciBhc3NlcnRpb24gcmV3cml0aW5nIChgIzIxODVg
XykuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEltcHJvdmUgZXJy
b3IgbWVzc2FnZSB3aGVuIHB5dGVzdC53YXJucyBmYWlscyAoYCMyMTUwYF8pLiBUaGUgdHlwZShz
KSBvZiB0aGUKKyAgZXhwZWN0ZWQgd2FybmluZ3MgYW5kIHRoZSBsaXN0IG9mIGNhdWdodCB3YXJu
aW5ncyBpcyBhZGRlZCB0byB0aGUKKyAgZXJyb3IgbWVzc2FnZS4gVGhhbmtzIGBAbGVzdGV2ZWBf
IGZvciB0aGUgUFIuCisKKyogRml4IGBgcHl0ZXN0ZXJgYCBpbnRlcm5hbCBwbHVnaW4gdG8gd29y
ayBjb3JyZWN0bHkgd2l0aCBsYXRlc3QgdmVyc2lvbnMgb2YKKyAgYGB6b3BlLmludGVyZmFjZWBg
IChgIzE5ODlgXykuIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEFzc2Vy
dCBzdGF0ZW1lbnRzIG9mIHRoZSBgYHB5dGVzdGVyYGAgcGx1Z2luIGFnYWluIGJlbmVmaXQgZnJv
bSBhc3NlcnRpb24gcmV3cml0aW5nIChgIzE5MjBgXykuCisgIFRoYW5rcyBgQFJvbm55UGZhbm5z
Y2htaWR0YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisK
KyogU3BlY2lmeWluZyB0ZXN0cyB3aXRoIGNvbG9ucyBsaWtlIGBgdGVzdF9mb28ucHk6OnRlc3Rf
YmFyYGAgZm9yIHRlc3RzIGluCisgIHN1YmRpcmVjdG9yaWVzIHdpdGggaW5pIGNvbmZpZ3VyYXRp
b24gZmlsZXMgbm93IHVzZXMgdGhlIGNvcnJlY3QgaW5pIGZpbGUKKyAgKGAjMjE0OGBfKS4gIFRo
YW5rcyBgQHBlbG1lYF8uCisKKyogRmFpbCBgYHRlc3RkaXIucnVucHl0ZXN0KCkuYXNzZXJ0X291
dGNvbWVzKClgYCBleHBsaWNpdGx5IGlmIHRoZSBweXRlc3QKKyAgdGVybWluYWwgb3V0cHV0IGl0
IHJlbGllcyBvbiBpcyBtaXNzaW5nLiBUaGFua3MgdG8gYEBlbGktYmBfIGZvciB0aGUgUFIuCisK
KworLi4gX0BiYXJuZXlnYWxlOiBodHRwczovL2dpdGh1Yi5jb20vYmFybmV5Z2FsZQorLi4gX0Bs
ZXN0ZXZlOiBodHRwczovL2dpdGh1Yi5jb20vbGVzdGV2ZQorLi4gX0BtYWxpbm9mZjogaHR0cHM6
Ly9naXRodWIuY29tL21hbGlub2ZmCisuLiBfQHBlbG1lOiBodHRwczovL2dpdGh1Yi5jb20vcGVs
bWUKKy4uIF9AZWxpLWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9lbGktYgorCisuLiBfIzIxMTg6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjExOAorCisuLiBfIzE5
ODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk4OQorLi4g
XyMxOTIwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5MjAK
Ky4uIF8jMjEyOTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
MTI5CisuLiBfIzIxNDg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjE0OAorLi4gXyMyMTUwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzIxNTAKKy4uIF8jMjE4NTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yMTg1CisKKworMy4wLjUgKDIwMTYtMTItMDUpCis9PT09PT09PT09PT09PT09
PT0KKworKiBBZGQgd2FybmluZyB3aGVuIG5vdCBwYXNzaW5nIGBgb3B0aW9uPXZhbHVlYGAgY29y
cmVjdGx5IHRvIGBgLW8vLS1vdmVycmlkZS1pbmlgYCAoYCMyMTA1YF8pLgorICBBbHNvIGltcHJv
dmVkIHRoZSBoZWxwIGRvY3VtZW50YXRpb24uIFRoYW5rcyB0byBgQG1idWthdG92YF8gZm9yIHRo
ZSByZXBvcnQgYW5kCisgIGBAbHdtYF8gZm9yIHRoZSBQUi4KKworKiBOb3cgYGAtLWNvbmZjdXRk
aXJgYCBhbmQgYGAtLWp1bml0LXhtbGBgIGFyZSBwcm9wZXJseSB2YWxpZGF0ZWQgaWYgdGhleSBh
cmUgZGlyZWN0b3JpZXMKKyAgYW5kIGZpbGVuYW1lcywgcmVzcGVjdGl2ZWx5IChgIzIwODlgXyBh
bmQgYCMyMDc4YF8pLiBUaGFua3MgdG8gYEBsd21gXyBmb3IgdGhlIFBSLgorCisqIEFkZCBoaW50
IHRvIGVycm9yIG1lc3NhZ2UgaGludGluZyBwb3NzaWJsZSBtaXNzaW5nIGBgX19pbml0X18ucHlg
YCAoYCM0NzhgXykuIFRoYW5rcyBgQER1bmNhbkJldHRzYF8uCisKKyogTW9yZSBhY2N1cmF0ZWx5
IGRlc2NyaWJlIHdoZW4gZml4dHVyZSBmaW5hbGl6YXRpb24gb2NjdXJzIGluIGRvY3VtZW50YXRp
b24gKGAjNjg3YF8pLiBUaGFua3MgYEBEdW5jYW5CZXR0c2BfLgorCisqIFByb3ZpZGUgYGA6cmVm
OmBgIHRhcmdldHMgZm9yIGBgcmVjd2Fybi5yc3RgYCBzbyB3ZSBjYW4gdXNlIGludGVyc3BoaW54
IHJlZmVyZW5jaW5nLgorICBUaGFua3MgdG8gYEBkdXB1eWBfIGZvciB0aGUgcmVwb3J0IGFuZCBg
QGx3bWBfIGZvciB0aGUgUFIuCisKKyogSW4gUHl0aG9uIDIsIHVzZSBhIHNpbXBsZSBgYCstYGAg
QVNDSUkgc3RyaW5nIGluIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYGBweXRlc3QuYXBw
cm94YGAgKGZvciBleGFtcGxlIGBgIjQgKy0gNC4wZS0wNiJgYCkKKyAgYmVjYXVzZSBpdCBpcyBi
cml0dGxlIHRvIGhhbmRsZSB0aGF0IGluIGRpZmZlcmVudCBjb250ZXh0cyBhbmQgcmVwcmVzZW50
YXRpb25zIGludGVybmFsbHkgaW4gcHl0ZXN0CisgIHdoaWNoIGNhbiByZXN1bHQgaW4gYnVncyBz
dWNoIGFzIGAjMjExMWBfLiBJbiBQeXRob24gMywgdGhlIHJlcHJlc2VudGF0aW9uIHN0aWxsIHVz
ZXMgYGDCsWBgIChmb3IgZXhhbXBsZSBgYDQgwrEgNC4wZS0wNmBgKS4KKyAgVGhhbmtzIGBAa2Vy
cmljay1seWZ0YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIu
CisKKyogVXNpbmcgYGBpdGVtLkZ1bmN0aW9uYGAsIGBgaXRlbS5Nb2R1bGVgYCwgZXRjLiwgaXMg
bm93IGlzc3VpbmcgZGVwcmVjYXRpb24gd2FybmluZ3MsIHByZWZlcgorICBgYHB5dGVzdC5GdW5j
dGlvbmBgLCBgYHB5dGVzdC5Nb2R1bGVgYCwgZXRjLiwgaW5zdGVhZCAoYCMyMDM0YF8pLgorICBU
aGFua3MgYEBubXVuZGFyYF8gZm9yIHRoZSBQUi4KKworKiBGaXggZXJyb3IgbWVzc2FnZSB1c2lu
ZyBgYGFwcHJveGBgIHdpdGggY29tcGxleCBudW1iZXJzIChgIzIwODJgXykuCisgIFRoYW5rcyBg
QGFkbGVyLWpgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4K
KworKiBGaXhlZCBmYWxzZS1wb3NpdGl2ZXMgd2FybmluZ3MgZnJvbSBhc3NlcnRpb24gcmV3cml0
ZSBob29rIGZvciBtb2R1bGVzIGltcG9ydGVkIG1vcmUgdGhhbgorICBvbmNlIGJ5IHRoZSBgYHB5
dGVzdF9wbHVnaW5zYGAgbWVjaGFuaXNtLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRo
ZSBQUi4KKworKiBSZW1vdmUgYW4gaW50ZXJuYWwgY2FjaGUgd2hpY2ggY291bGQgY2F1c2UgaG9v
a3MgZnJvbSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMgaW4KKyAgc3ViLWRpcmVjdG9yaWVzIHRvIGJl
IGNhbGxlZCBpbiBvdGhlciBkaXJlY3RvcmllcyBpbmNvcnJlY3RseSAoYCMyMDE2YF8pLgorICBU
aGFua3MgYEBkLWItd2BfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhl
IFBSLgorCisqIFJlbW92ZSBpbnRlcm5hbCBjb2RlIG1lYW50IHRvIHN1cHBvcnQgZWFybGllciBQ
eXRob24gMyB2ZXJzaW9ucyB0aGF0IHByb2R1Y2VkIHRoZSBzaWRlIGVmZmVjdAorICBvZiBsZWF2
aW5nIGBgTm9uZWBgIGluIGBgc3lzLm1vZHVsZXNgYCB3aGVuIGV4cHJlc3Npb25zIHdlcmUgZXZh
bHVhdGVkIGJ5IHB5dGVzdCAoZm9yIGV4YW1wbGUgcGFzc2luZyBhIGNvbmRpdGlvbgorICBhcyBh
IHN0cmluZyB0byBgYHB5dGVzdC5tYXJrLnNraXBpZmBgKShgIzIxMDNgXykuCisgIFRoYW5rcyBg
QGphcmFjb2BfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgor
CisqIENvcGUgZ3JhY2VmdWxseSB3aXRoIGEgLnB5YyBmaWxlIHdpdGggbm8gbWF0Y2hpbmcgLnB5
IGZpbGUgKGAjMjAzOGBfKS4gVGhhbmtzCisgIGBAbmVkYmF0YF8uCisKKy4uIF9Ac3lyZTogaHR0
cHM6Ly9naXRodWIuY29tL3N5cmUKKy4uIF9AYWRsZXItajogaHR0cHM6Ly9naXRodWIuY29tL2Fk
bGVyLWoKKy4uIF9AZC1iLXc6IGh0dHBzOi8vZ2l0aHViLmNvbS9kLWItdworLi4gX0BEdW5jYW5C
ZXR0czogaHR0cHM6Ly9naXRodWIuY29tL0R1bmNhbkJldHRzCisuLiBfQGR1cHV5OiBodHRwczov
L2JpdGJ1Y2tldC5vcmcvZHVwdXkvCisuLiBfQGtlcnJpY2stbHlmdDogaHR0cHM6Ly9naXRodWIu
Y29tL2tlcnJpY2stbHlmdAorLi4gX0Bsd206IGh0dHBzOi8vZ2l0aHViLmNvbS9sd20KKy4uIF9A
bWJ1a2F0b3Y6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYnVrYXRvdgorLi4gX0BuZWRiYXQ6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9uZWRiYXQKKy4uIF9Abm11bmRhcjogaHR0cHM6Ly9naXRodWIuY29tL25t
dW5kYXIKKworLi4gXyMyMDE2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzIwMTYKKy4uIF8jMjAzNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yMDM0CisuLiBfIzIwMzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjAzOAorLi4gXyMyMDc4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzIwNzgKKy4uIF8jMjA4MjogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDgyCisuLiBfIzIwODk6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjA4OQorLi4gXyMyMTAzOiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxMDMKKy4uIF8jMjEwNTogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTA1CisuLiBfIzIxMTE6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjExMQorLi4gXyM0Nzg6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDc4CisuLiBfIzY4Nzog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82ODcKKworCiszLjAu
NCAoMjAxNi0xMS0wOSkKKz09PT09PT09PT09PT09PT09PQorCisqIEltcG9ydCBlcnJvcnMgd2hl
biBjb2xsZWN0aW5nIHRlc3QgbW9kdWxlcyBub3cgZGlzcGxheSB0aGUgZnVsbCB0cmFjZWJhY2sg
KGAjMTk3NmBfKS4KKyAgVGhhbmtzIGBAY3dpdHR5YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmlj
b2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogRml4IGNvbmZ1c2luZyBjb21tYW5kLWxpbmUgaGVs
cCBtZXNzYWdlIGZvciBjdXN0b20gb3B0aW9ucyB3aXRoIHR3byBvciBtb3JlIGBgbWV0YXZhcmBg
IHByb3BlcnRpZXMgKGAjMjAwNGBfKS4KKyAgVGhhbmtzIGBAb2t1bHlueWFrYF8gYW5kIGBAZGF2
ZWh1bnRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKwor
KiBXaGVuIGxvYWRpbmcgcGx1Z2lucywgaW1wb3J0IGVycm9ycyB3aGljaCBjb250YWluIG5vbi1h
c2NpaSBtZXNzYWdlcyBhcmUgbm93IHByb3Blcmx5IGhhbmRsZWQgaW4gUHl0aG9uIDIgKGAjMTk5
OGBfKS4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogRml4ZWQgY3lj
bGljIHJlZmVyZW5jZSB3aGVuIGBgcHl0ZXN0LnJhaXNlc2BgIGlzIHVzZWQgaW4gY29udGV4dC1t
YW5hZ2VyIGZvcm0gKGAjMTk2NWBfKS4gQWxzbyBhcyBhCisgIHJlc3VsdCBvZiB0aGlzIGZpeCwg
YGBzeXMuZXhjX2luZm8oKWBgIGlzIGxlZnQgZW1wdHkgaW4gYm90aCBjb250ZXh0LW1hbmFnZXIg
YW5kIGZ1bmN0aW9uIGNhbGwgdXNhZ2VzLgorICBQcmV2aW91c2x5LCBgYHN5cy5leGNfaW5mb2Bg
IHdvdWxkIGNvbnRhaW4gdGhlIGV4Y2VwdGlvbiBjYXVnaHQgYnkgdGhlIGNvbnRleHQgbWFuYWdl
ciwKKyAgZXZlbiB3aGVuIHRoZSBleHBlY3RlZCBleGNlcHRpb24gb2NjdXJyZWQuCisgIFRoYW5r
cyBgQE1TZWlmZXJ0MDRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgdGhlIFBSLgorCisqIEZpeGVkIGZh
bHNlLXBvc2l0aXZlcyB3YXJuaW5ncyBmcm9tIGFzc2VydGlvbiByZXdyaXRlIGhvb2sgZm9yIG1v
ZHVsZXMgdGhhdCB3ZXJlIHJld3JpdHRlbiBidXQKKyAgd2VyZSBsYXRlciBtYXJrZWQgZXhwbGlj
aXRseSBieSBgYHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZWBgCisgIG9yIGltcGxpY2l0
bHkgYXMgYSBwbHVnaW4gKGAjMjAwNWBfKS4KKyAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1pZHRg
XyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBSZXBv
cnQgdGVhcmRvd24gb3V0cHV0IG9uIHRlc3QgZmFpbHVyZSAoYCM0NDJgXykuCisgIFRoYW5rcyBg
QG1hdGNsYWJgXyBmb3IgdGhlIFBSLgorCisqIEZpeCB0ZWFyZG93biBlcnJvciBtZXNzYWdlIGlu
IGdlbmVyYXRlZCB4VW5pdCBYTUwuCisgIFRoYW5rcyBgQGdkeXVsZGluYF8gZm9yIHRoZSBQUi4K
KworKiBQcm9wZXJseSBoYW5kbGUgZXhjZXB0aW9ucyBpbiBgYG11bHRpcHJvY2Vzc2luZ2BgIHRh
c2tzIChgIzE5ODRgXykuCisgIFRoYW5rcyBgQGFkYm9yZGVuYF8gZm9yIHRoZSByZXBvcnQgYW5k
IGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogQ2xlYW4gdXAgdW5pdHRlc3QgVGVzdENh
c2Ugb2JqZWN0cyBhZnRlciB0ZXN0cyBhcmUgY29tcGxldGUgKGAjMTY0OWBfKS4KKyAgVGhhbmtz
IGBAZF9iX3dgXyBmb3IgdGhlIHJlcG9ydCBhbmQgUFIuCisKKworLi4gX0BhZGJvcmRlbjogaHR0
cHM6Ly9naXRodWIuY29tL2FkYm9yZGVuCisuLiBfQGN3aXR0eTogaHR0cHM6Ly9naXRodWIuY29t
L2N3aXR0eQorLi4gX0BkX2JfdzogaHR0cHM6Ly9naXRodWIuY29tL2QtYi13CisuLiBfQGdkeXVs
ZGluOiBodHRwczovL2dpdGh1Yi5jb20vZ2R5dWxkaW4KKy4uIF9AbWF0Y2xhYjogaHR0cHM6Ly9n
aXRodWIuY29tL21hdGNsYWIKKy4uIF9ATVNlaWZlcnQwNDogaHR0cHM6Ly9naXRodWIuY29tL01T
ZWlmZXJ0MDQKKy4uIF9Ab2t1bHlueWFrOiBodHRwczovL2dpdGh1Yi5jb20vb2t1bHlueWFrCisK
Ky4uIF8jNDQyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0
MgorLi4gXyMxOTY1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzE5NjUKKy4uIF8jMTk3NjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xOTc2CisuLiBfIzE5ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMTk4NAorLi4gXyMxOTk4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE5OTgKKy4uIF8jMjAwNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yMDA0CisuLiBfIzIwMDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAwNQorLi4gXyMxNjQ5OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2NDkKKworCiszLjAuMyAoMjAxNi0wOS0yOCkKKz09
PT09PT09PT09PT09PT09PQorCisqIFRoZSBgYGlkc2BgIGFyZ3VtZW50IHRvIGBgcGFyYW1ldHJp
emVgYCBhZ2FpbiBhY2NlcHRzIGBgdW5pY29kZWBgIHN0cmluZ3MKKyAgaW4gUHl0aG9uIDIgKGAj
MTkwNWBfKS4KKyAgVGhhbmtzIGBAcGhpbHBlcGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29k
ZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEFzc2VydGlvbnMgYXJlIG5vdyBiZWluZyByZXdyaXR0
ZW4gZm9yIHBsdWdpbnMgaW4gZGV2ZWxvcG1lbnQgbW9kZQorICAoYGBwaXAgaW5zdGFsbCAtZWBg
KSAoYCMxOTM0YF8pLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBG
aXggcGtnX3Jlc291cmNlcyBpbXBvcnQgZXJyb3IgaW4gSnl0aG9uIHByb2plY3RzIChgIzE4NTNg
XykuCisgIFRoYW5rcyBgQHJhcXVlbC11Y2xgXyBmb3IgdGhlIFBSLgorCisqIEdvdCByaWQgb2Yg
YGBBdHRyaWJ1dGVFcnJvcjogJ01vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ19vYmon
YGAgZXhjZXB0aW9uCisgIGluIFB5dGhvbiAzIChgIzE5NDRgXykuCisgIFRoYW5rcyBgQGF4aWxg
XyBmb3IgdGhlIFBSLgorCisqIEV4cGxhaW4gYSBiYWQgc2NvcGUgdmFsdWUgcGFzc2VkIHRvIGBg
QGZpeHR1cmVgYCBkZWNsYXJhdGlvbnMgb3IKKyAgYSBgYE1ldGFGdW5jLnBhcmFtZXRyaXplKClg
YCBjYWxsLgorCisqIFRoaXMgdmVyc2lvbiBpbmNsdWRlcyBgYHBsdWdneS0wLjQuMGBgLCB3aGlj
aCBjb3JyZWN0bHkgaGFuZGxlcworICBgYFZlcnNpb25Db25mbGljdGBgIGVycm9ycyBpbiBwbHVn
aW5zIChgIzcwNGBfKS4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKwor
Li4gX0BwaGlscGVwOiBodHRwczovL2dpdGh1Yi5jb20vcGhpbHBlcAorLi4gX0ByYXF1ZWwtdWNs
OiBodHRwczovL2dpdGh1Yi5jb20vcmFxdWVsLXVjbAorLi4gX0BheGlsOiBodHRwczovL2dpdGh1
Yi5jb20vYXhpbAorLi4gX0B2bGFkLWRyYWdvczogaHR0cHM6Ly9naXRodWIuY29tL3ZsYWQtZHJh
Z29zCisKKy4uIF8jMTg1MzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xODUzCisuLiBfIzE5MDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMTkwNQorLi4gXyMxOTM0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE5MzQKKy4uIF8jMTk0NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xOTQ0CisuLiBfIzcwNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy83MDQKKworCisKKworMy4wLjIgKDIwMTYtMDktMDEpCis9PT09
PT09PT09PT09PT09PT0KKworKiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXNzaW5nIG5v
bi1zdHJpbmcgaWRzIHRvIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYCAoYCMxODU3YF8pLgor
ICBUaGFua3MgYEBva2tlbmBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgorCisqIEFkZCBgYGJ1ZmZlcmBgIGF0dHJpYnV0ZSB0byBzdGRpbiBzdHViIGNsYXNz
IGBgcHl0ZXN0LmNhcHR1cmUuRG9udFJlYWRGcm9tSW5wdXRgYAorICBUaGFua3MgYEBqb2d1U0Rg
XyBmb3IgdGhlIFBSLgorCisqIEZpeCBgYFVuaWNvZGVFbmNvZGVFcnJvcmBgIHdoZW4gc3RyaW5n
IGNvbXBhcmlzb24gd2l0aCB1bmljb2RlIGhhcyBmYWlsZWQuIChgIzE4NjRgXykKKyAgVGhhbmtz
IGBAQWlPT2BfIGZvciB0aGUgUFIuCisKKyogYGBweXRlc3RfcGx1Z2luc2BgIGlzIG5vdyBoYW5k
bGVkIGNvcnJlY3RseSBpZiBkZWZpbmVkIGFzIGEgc3RyaW5nIChhcyBvcHBvc2VkIGFzCisgIGEg
c2VxdWVuY2Ugb2Ygc3RyaW5ncykgd2hlbiBtb2R1bGVzIGFyZSBjb25zaWRlcmVkIGZvciBhc3Nl
cnRpb24gcmV3cml0aW5nLgorICBEdWUgdG8gdGhpcyBidWcsIG11Y2ggbW9yZSBtb2R1bGVzIHdl
cmUgYmVpbmcgcmV3cml0dGVuIHRoYW4gbmVjZXNzYXJ5CisgIGlmIGEgdGVzdCBzdWl0ZSB1c2Vz
IGBgcHl0ZXN0X3BsdWdpbnNgYCB0byBsb2FkIGludGVybmFsIHBsdWdpbnMgKGAjMTg4OGBfKS4K
KyAgVGhhbmtzIGBAamFyYWNvYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZv
ciB0aGUgUFIgKGAjMTg5MWBfKS4KKworKiBEbyBub3QgY2FsbCB0ZWFyRG93biBhbmQgY2xlYW51
cHMgd2hlbiBydW5uaW5nIHRlc3RzIGZyb20KKyAgYGB1bml0dGVzdC5UZXN0Q2FzZWBgIHN1YmNs
YXNzZXMgd2l0aCBgYC0tcGRiYGAKKyAgZW5hYmxlZC4gVGhpcyBhbGxvd3MgcHJvcGVyIHBvc3Qg
bW9ydGVtIGRlYnVnZ2luZyBmb3IgYWxsIGFwcGxpY2F0aW9ucworICB3aGljaCBoYXZlIHNpZ25p
ZmljYW50IGxvZ2ljIGluIHRoZWlyIHRlYXJEb3duIG1hY2hpbmVyeSAoYCMxODkwYF8pLiBUaGFu
a3MKKyAgYEBtYnl0YF8gZm9yIHRoZSBQUi4KKworKiBGaXggdXNlIG9mIGRlcHJlY2F0ZWQgYGBn
ZXRmdW5jYXJndmFsdWVgYCBtZXRob2QgaW4gdGhlIGludGVybmFsIGRvY3Rlc3QgcGx1Z2luLgor
ICBUaGFua3MgYEBWaXZpQ29kZXJgXyBmb3IgdGhlIHJlcG9ydCAoYCMxODk4YF8pLgorCisuLiBf
QGpvZ3VTRDogaHR0cHM6Ly9naXRodWIuY29tL2pvZ3VTRAorLi4gX0BBaU9POiBodHRwczovL2dp
dGh1Yi5jb20vQWlPTworLi4gX0BtYnl0OiBodHRwczovL2dpdGh1Yi5jb20vbWJ5dAorLi4gX0BW
aXZpQ29kZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9WaXZpQ29kZXIKKworLi4gXyMxODU3OiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4NTcKKy4uIF8jMTg2NDog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODY0CisuLiBfIzE4
ODg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg4OAorLi4g
XyMxODkxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xODkxCisu
LiBfIzE4OTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg5
MAorLi4gXyMxODk4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzE4OTgKKworCiszLjAuMSAoMjAxNi0wOC0yMykKKz09PT09PT09PT09PT09PT09PQorCisqIEZp
eCByZWdyZXNzaW9uIHdoZW4gYGBpbXBvcnRvcnNraXBgYCBpcyB1c2VkIGF0IG1vZHVsZSBsZXZl
bCAoYCMxODIyYF8pLgorICBUaGFua3MgYEBqYXJhY29gXyBhbmQgYEBUaGUtQ29tcGlsZXJgXyBm
b3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBGaXggcGFy
YW1ldHJpemF0aW9uIHNjb3BlIHdoZW4gc2Vzc2lvbiBmaXh0dXJlcyBhcmUgdXNlZCBpbiBjb25q
dW5jdGlvbgorICB3aXRoIG5vcm1hbCBwYXJhbWV0ZXJzIGluIHRoZSBzYW1lIGNhbGwgKGAjMTgz
MmBfKS4KKyAgVGhhbmtzIGBAVGhlLUNvbXBpbGVyYF8gZm9yIHRoZSByZXBvcnQsIGBAS2luZ2Ry
ZWFkYF8gYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogRml4IGludGVybmFsIGVy
cm9yIHdoZW4gcGFyYW1ldHJpemluZyB0ZXN0cyBvciBmaXh0dXJlcyB1c2luZyBhbiBlbXB0eSBg
YGlkc2BgIGFyZ3VtZW50IChgIzE4NDlgXykuCisgIFRoYW5rcyBgQE9QcHVvbGl0YWl2YWxgXyBm
b3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBGaXggbG9h
ZGVyIGVycm9yIHdoZW4gcnVubmluZyBgYHB5dGVzdGBgIGVtYmVkZGVkIGluIGEgemlwZmlsZS4K
KyAgVGhhbmtzIGBAbWJhY2hyeWBfIGZvciB0aGUgUFIuCisKKworLi4gX0BLaW5nZHJlYWQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9LaW5nZHJlYWQKKy4uIF9AbWJhY2hyeTogaHR0cHM6Ly9naXRodWIu
Y29tL21iYWNocnkKKy4uIF9AT1BwdW9saXRhaXZhbDogaHR0cHM6Ly9naXRodWIuY29tL09QcHVv
bGl0YWl2YWwKKworLi4gXyMxODIyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzE4MjIKKy4uIF8jMTgzMjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8xODMyCisuLiBfIzE4NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTg0OQorCisKKzMuMC4wICgyMDE2LTA4LTE4KQorPT09PT09PT09
PT09PT09PT09CisKKyoqSW5jb21wYXRpYmxlIGNoYW5nZXMqKgorCisKK0EgbnVtYmVyIG9mIGlu
Y29tcGF0aWJsZSBjaGFuZ2VzIHdlcmUgbWFkZSBpbiB0aGlzIHJlbGVhc2UsIHdpdGggdGhlIGlu
dGVudCBvZiByZW1vdmluZyBmZWF0dXJlcyBkZXByZWNhdGVkIGZvciBhIGxvbmcKK3RpbWUgb3Ig
Y2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9ycyBpbiBvcmRlciB0byBtYWtlIHRoZW0gbGVzcyBzdXJw
cmlzaW5nL21vcmUgdXNlZnVsLgorCisqIFJlaW50ZXJwcmV0YXRpb24gbW9kZSBoYXMgbm93IGJl
ZW4gcmVtb3ZlZC4gIE9ubHkgcGxhaW4gYW5kIHJld3JpdGUKKyAgbW9kZSBhcmUgYXZhaWxhYmxl
LCBjb25zZXF1ZW50bHkgdGhlIGBgLS1hc3NlcnQ9cmVpbnRlcnBgYCBvcHRpb24gaXMKKyAgbm8g
bG9uZ2VyIGF2YWlsYWJsZS4gIFRoaXMgYWxzbyBtZWFucyBmaWxlcyBpbXBvcnRlZCBmcm9tIHBs
dWdpbnMgb3IKKyAgYGBjb25mdGVzdC5weWBgIHdpbGwgbm90IGJlbmVmaXQgZnJvbSBpbXByb3Zl
ZCBhc3NlcnRpb25zIGJ5CisgIGRlZmF1bHQsIHlvdSBzaG91bGQgdXNlIGBgcHl0ZXN0LnJlZ2lz
dGVyX2Fzc2VydF9yZXdyaXRlKClgYCB0bworICBleHBsaWNpdGx5IHR1cm4gb24gYXNzZXJ0aW9u
IHJld3JpdGluZyBmb3IgdGhvc2UgZmlsZXMuICBUaGFua3MKKyAgYEBmbHViYF8gZm9yIHRoZSBQ
Ui4KKworKiBUaGUgZm9sbG93aW5nIGRlcHJlY2F0ZWQgY29tbWFuZGxpbmUgb3B0aW9ucyB3ZXJl
IHJlbW92ZWQ6CisKKyAgKiBgYC0tZ2Vuc2NyaXB0YGA6IG5vIGxvbmdlciBzdXBwb3J0ZWQ7Cisg
ICogYGAtLW5vLWFzc2VydGBgOiB1c2UgYGAtLWFzc2VydD1wbGFpbmBgIGluc3RlYWQ7CisgICog
YGAtLW5vbWFnaWNgYDogdXNlIGBgLS1hc3NlcnQ9cGxhaW5gYCBpbnN0ZWFkOworICAqIGBgLS1y
ZXBvcnRgYDogdXNlIGBgLXJgYCBpbnN0ZWFkOworCisgIFRoYW5rcyB0byBgQFJlZEJlYXJkQ29k
ZWBfIGZvciB0aGUgUFIgKGAjMTY2NGBfKS4KKworKiBJbXBvcnRFcnJvcnMgaW4gcGx1Z2lucyBu
b3cgYXJlIGEgZmF0YWwgZXJyb3IgaW5zdGVhZCBvZiBpc3N1aW5nIGEKKyAgcHl0ZXN0IHdhcm5p
bmcgKGAjMTQ3OWBfKS4gVGhhbmtzIHRvIGBAVGhlLUNvbXBpbGVyYF8gZm9yIHRoZSBQUi4KKwor
KiBSZW1vdmVkIHN1cHBvcnQgY29kZSBmb3IgUHl0aG9uIDMgdmVyc2lvbnMgPCAzLjMgKGAjMTYy
N2BfKS4KKworKiBSZW1vdmVkIGFsbCBgYHB5LnRlc3QtWCpgYCBlbnRyeSBwb2ludHMuIFRoZSB2
ZXJzaW9uZWQsIHN1ZmZpeGVkIGVudHJ5IHBvaW50cworICB3ZXJlIG5ldmVyIGRvY3VtZW50ZWQg
YW5kIGEgbGVmdG92ZXIgZnJvbSBhIHByZS12aXJ0dWFsZW52IGVyYS4gVGhlc2UgZW50cnkKKyAg
cG9pbnRzIGFsc28gY3JlYXRlZCBicm9rZW4gZW50cnkgcG9pbnRzIGluIHdoZWVscywgc28gcmVt
b3ZpbmcgdGhlbSBhbHNvCisgIHJlbW92ZXMgYSBzb3VyY2Ugb2YgY29uZnVzaW9uIGZvciB1c2Vy
cyAoYCMxNjMyYF8pLgorICBUaGFua3MgYEBvYmVzdHdhbHRlcmBfIGZvciB0aGUgUFIuCisKKyog
YGBweXRlc3Quc2tpcCgpYGAgbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIHVzZWQgdG8gZGVjb3Jh
dGUgYSB0ZXN0IGZ1bmN0aW9uLAorICBhcyBvcHBvc2VkIHRvIGl0cyBvcmlnaW5hbCBpbnRlbnQg
KHRvIGltcGVyYXRpdmVseSBza2lwIGEgdGVzdCBpbnNpZGUgYSB0ZXN0IGZ1bmN0aW9uKS4gUHJl
dmlvdXNseQorICB0aGlzIHVzYWdlIHdvdWxkIGNhdXNlIHRoZSBlbnRpcmUgbW9kdWxlIHRvIGJl
IHNraXBwZWQgKGAjNjA3YF8pLgorICBUaGFua3MgYEBvbWFya29obGBfIGZvciB0aGUgY29tcGxl
dGUgUFIgKGAjMTUxOWBfKS4KKworKiBFeGl0IHRlc3RzIGlmIGEgY29sbGVjdGlvbiBlcnJvciBv
Y2N1cnMuIEEgcG9sbCBpbmRpY2F0ZWQgbW9zdCB1c2VycyB3aWxsIGhpdCBDVFJMLUMKKyAgYW55
d2F5IGFzIHNvb24gYXMgdGhleSBzZWUgY29sbGVjdGlvbiBlcnJvcnMsIHNvIHB5dGVzdCBtaWdo
dCBhcyB3ZWxsIG1ha2UgdGhhdCB0aGUgZGVmYXVsdCBiZWhhdmlvciAoYCMxNDIxYF8pLgorICBB
IGBgLS1jb250aW51ZS1vbi1jb2xsZWN0aW9uLWVycm9yc2BgIG9wdGlvbiBoYXMgYmVlbiBhZGRl
ZCB0byByZXN0b3JlIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIuCisgIFRoYW5rcyBgQG9sZWdwaWRz
YWRueWlgXyBhbmQgYEBvbWFya29obGBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTYyOGBfKS4K
KworKiBSZW5hbWVkIHRoZSBweXRlc3QgYGBwZGJgYCBtb2R1bGUgKHBsdWdpbikgaW50byBgYGRl
YnVnZ2luZ2BgIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgYnVpbHRpbiBgYHBkYmBgIG1vZHVs
ZS4KKworKiBSYWlzZSBhIGhlbHBmdWwgZmFpbHVyZSBtZXNzYWdlIHdoZW4gcmVxdWVzdGluZyBh
IHBhcmFtZXRyaXplZCBmaXh0dXJlIGF0IHJ1bnRpbWUsCisgIGUuZy4gd2l0aCBgYHJlcXVlc3Qu
Z2V0Zml4dHVyZXZhbHVlYGAuIFByZXZpb3VzbHkgdGhlc2UgcGFyYW1ldGVycyB3ZXJlIHNpbXBs
eQorICBuZXZlciBkZWZpbmVkLCBzbyBhIGZpeHR1cmUgZGVjb3JhdGVkIGxpa2UgYGBAcHl0ZXN0
LmZpeHR1cmUocGFyYW1zPVswLCAxLCAyXSlgYAorICBvbmx5IHJhbiBvbmNlIChgIzQ2MGBfKS4K
KyAgVGhhbmtzIHRvIGBAbmlrcmF0aW9gXyBmb3IgdGhlIGJ1ZyByZXBvcnQsIGBAUmVkQmVhcmRD
b2RlYF8gYW5kIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSLgorCisqIGBgX3B5dGVzdC5tb25rZXlw
YXRjaC5tb25rZXlwYXRjaGBgIGNsYXNzIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBfcHl0ZXN0Lm1v
bmtleXBhdGNoLk1vbmtleVBhdGNoYGAKKyAgc28gaXQgZG9lc24ndCBjb25mbGljdCB3aXRoIHRo
ZSBgYG1vbmtleXBhdGNoYGAgZml4dHVyZS4KKworKiBgYC0tZXhpdGZpcnN0IC8gLXhgYCBjYW4g
bm93IGJlIG92ZXJyaWRkZW4gYnkgYSBmb2xsb3dpbmcgYGAtLW1heGZhaWw9TmBgCisgIGFuZCBp
cyBqdXN0IGEgc3lub255bSBmb3IgYGAtLW1heGZhaWw9MWBgLgorCisKKyoqTmV3IEZlYXR1cmVz
KioKKworKiBTdXBwb3J0IG5vc2Utc3R5bGUgYGBfX3Rlc3RfX2BgIGF0dHJpYnV0ZSBvbiBtZXRo
b2RzIG9mIGNsYXNzZXMsCisgIGluY2x1ZGluZyB1bml0dGVzdC1zdHlsZSBDbGFzc2VzLiBJZiBz
ZXQgdG8gYGBGYWxzZWBgLCB0aGUgdGVzdCB3aWxsIG5vdCBiZQorICBjb2xsZWN0ZWQuCisKKyog
TmV3IGBgZG9jdGVzdF9uYW1lc3BhY2VgYCBmaXh0dXJlIGZvciBpbmplY3RpbmcgbmFtZXMgaW50
byB0aGUKKyAgbmFtZXNwYWNlIGluIHdoaWNoIGRvY3Rlc3RzIHJ1bi4KKyAgVGhhbmtzIGBAbWls
bGlhbXNgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE0MjhgXykuCisKKyogTmV3IGBgLS1kb2N0
ZXN0LXJlcG9ydGBgIG9wdGlvbiBhdmFpbGFibGUgdG8gY2hhbmdlIHRoZSBvdXRwdXQgZm9ybWF0
IG9mIGRpZmZzCisgIHdoZW4gcnVubmluZyAoZmFpbGluZykgZG9jdGVzdHMgKGltcGxlbWVudHMg
YCMxNzQ5YF8pLgorICBUaGFua3MgYEBoYXJ0eW1gXyBmb3IgdGhlIFBSLgorCisqIE5ldyBgYG5h
bWVgYCBhcmd1bWVudCB0byBgYHB5dGVzdC5maXh0dXJlYGAgZGVjb3JhdG9yIHdoaWNoIGFsbG93
cyBhIGN1c3RvbSBuYW1lCisgIGZvciBhIGZpeHR1cmUgKHRvIHNvbHZlIHRoZSBmdW5jYXJnLXNo
YWRvd2luZy1maXh0dXJlIHByb2JsZW0pLgorICBUaGFua3MgYEBub3ZhczB4MmFgXyBmb3IgdGhl
IGNvbXBsZXRlIFBSIChgIzE0NDRgXykuCisKKyogTmV3IGBgYXBwcm94KClgYCBmdW5jdGlvbiBm
b3IgZWFzaWx5IGNvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGluCisgIHRlc3RzLgor
ICBUaGFua3MgYEBrYWxla3VuZGVydGBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTQ0MWBfKS4K
KworKiBBYmlsaXR5IHRvIGFkZCBnbG9iYWwgcHJvcGVydGllcyBpbiB0aGUgZmluYWwgeHVuaXQg
b3V0cHV0IGZpbGUgYnkgYWNjZXNzaW5nCisgIHRoZSBpbnRlcm5hbCBgYGp1bml0eG1sYGAgcGx1
Z2luIChleHBlcmltZW50YWwpLgorICBUaGFua3MgYEB0YXJlcWFsYXlhbmBfIGZvciB0aGUgY29t
cGxldGUgUFIgYCMxNDU0YF8pLgorCisqIE5ldyBgYEV4Y2VwdGlvbkluZm8ubWF0Y2goKWBgIG1l
dGhvZCB0byBtYXRjaCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvbiB0aGUKKyAgc3RyaW5nIHJlcHJl
c2VudGF0aW9uIG9mIGFuIGV4Y2VwdGlvbiAoYCMzNzJgXykuCisgIFRoYW5rcyBgQG9tYXJrb2hs
YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNTAyYF8pLgorCisqIGBgX190cmFjZWJhY2toaWRl
X19gYCBjYW4gbm93IGFsc28gYmUgc2V0IHRvIGEgY2FsbGFibGUgd2hpY2ggdGhlbiBjYW4gZGVj
aWRlCisgIHdoZXRoZXIgdG8gZmlsdGVyIHRoZSB0cmFjZWJhY2sgYmFzZWQgb24gdGhlIGBgRXhj
ZXB0aW9uSW5mb2BgIG9iamVjdCBwYXNzZWQKKyAgdG8gaXQuIFRoYW5rcyBgQFRoZS1Db21waWxl
cmBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTUyNmBfKS4KKworKiBOZXcgYGBweXRlc3RfbWFr
ZV9wYXJhbWV0cml6ZV9pZChjb25maWcsIHZhbClgYCBob29rIHdoaWNoIGNhbiBiZSB1c2VkIGJ5
IHBsdWdpbnMgdG8gcHJvdmlkZQorICBmcmllbmRseSBzdHJpbmdzIGZvciBjdXN0b20gdHlwZXMu
CisgIFRoYW5rcyBgQHBhbGF2aXZgXyBmb3IgdGhlIFBSLgorCisqIGBgY2Fwc3lzYGAgYW5kIGBg
Y2FwZmRgYCBub3cgaGF2ZSBhIGBgZGlzYWJsZWQoKWBgIGNvbnRleHQtbWFuYWdlciBtZXRob2Qs
IHdoaWNoCisgIGNhbiBiZSB1c2VkIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgY2FwdHVyZSB3aXRo
aW4gYSB0ZXN0LgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBOZXcg
Y2xpIGZsYWcgYGAtLWZpeHR1cmVzLXBlci10ZXN0YGA6IHNob3dzIHdoaWNoIGZpeHR1cmVzIGFy
ZSBiZWluZyB1c2VkCisgIGZvciBlYWNoIHNlbGVjdGVkIHRlc3QgaXRlbS4gRmVhdHVyZXMgZG9j
IHN0cmluZ3Mgb2YgZml4dHVyZXMgYnkgZGVmYXVsdC4KKyAgQ2FuIGFsc28gc2hvdyB3aGVyZSBm
aXh0dXJlcyBhcmUgZGVmaW5lZCBpZiBjb21iaW5lZCB3aXRoIGBgLXZgYC4KKyAgVGhhbmtzIGBA
aGFja2Vicm90YF8gZm9yIHRoZSBQUi4KKworKiBJbnRyb2R1Y2UgYGBweXRlc3RgYCBjb21tYW5k
IGFzIHJlY29tbWVuZGVkIGVudHJ5IHBvaW50LiBOb3RlIHRoYXQgYGBweS50ZXN0YGAKKyAgc3Rp
bGwgd29ya3MgYW5kIGlzIG5vdCBzY2hlZHVsZWQgZm9yIHJlbW92YWwuIENsb3NlcyBwcm9wb3Nh
bAorICBgIzE2MjlgXy4gVGhhbmtzIGBAb2Jlc3R3YWx0ZXJgXyBhbmQgYEBkYXZlaHVudGBfIGZv
ciB0aGUgY29tcGxldGUgUFIKKyAgKGAjMTYzM2BfKS4KKworKiBOZXcgY2xpIGZsYWdzOgorCisg
ICsgYGAtLXNldHVwLXBsYW5gYDogcGVyZm9ybXMgbm9ybWFsIGNvbGxlY3Rpb24gYW5kIHJlcG9y
dHMKKyAgICB0aGUgcG90ZW50aWFsIHNldHVwIGFuZCB0ZWFyZG93biBhbmQgZG9lcyBub3QgZXhl
Y3V0ZSBhbnkgZml4dHVyZXMgYW5kIHRlc3RzOworICArIGBgLS1zZXR1cC1vbmx5YGA6IHBlcmZv
cm1zIG5vcm1hbCBjb2xsZWN0aW9uLCBleGVjdXRlcyBzZXR1cCBhbmQgdGVhcmRvd24gb2YKKyAg
ICBmaXh0dXJlcyBhbmQgcmVwb3J0cyB0aGVtOworICArIGBgLS1zZXR1cC1zaG93YGA6IHBlcmZv
cm1zIG5vcm1hbCB0ZXN0IGV4ZWN1dGlvbiBhbmQgYWRkaXRpb25hbGx5IHNob3dzCisgICAgc2V0
dXAgYW5kIHRlYXJkb3duIG9mIGZpeHR1cmVzOworICArIGBgLS1rZWVwLWR1cGxpY2F0ZXNgYDog
cHkudGVzdCBub3cgaWdub3JlcyBkdXBsaWNhdGVkIHBhdGhzIGdpdmVuIGluIHRoZSBjb21tYW5k
CisgICAgbGluZS4gVG8gcmV0YWluIHRoZSBwcmV2aW91cyBiZWhhdmlvciB3aGVyZSB0aGUgc2Ft
ZSB0ZXN0IGNvdWxkIGJlIHJ1biBtdWx0aXBsZQorICAgIHRpbWVzIGJ5IHNwZWNpZnlpbmcgaXQg
aW4gdGhlIGNvbW1hbmQtbGluZSBtdWx0aXBsZSB0aW1lcywgcGFzcyB0aGUgYGAtLWtlZXAtZHVw
bGljYXRlc2BgCisgICAgYXJndW1lbnQgKGAjMTYwOWBfKTsKKworICBUaGFua3MgYEBkNmVgXywg
YEBrdmFzLWl0YF8sIGBAc2FsbG5lcmBfLCBgQGlvZ2dzdHJlYW1gXyBhbmQgYEBvbWFya29obGBf
IGZvciB0aGUgUFJzLgorCisqIE5ldyBDTEkgZmxhZyBgYC0tb3ZlcnJpZGUtaW5pYGAvYGAtb2Bg
OiBvdmVycmlkZXMgdmFsdWVzIGZyb20gdGhlIGluaSBmaWxlLgorICBGb3IgZXhhbXBsZTogYGAi
LW8geGZhaWxfc3RyaWN0PVRydWUiYGAnLgorICBUaGFua3MgYEBibHVleWVkYF8gYW5kIGBAZmVu
Z3h4YF8gZm9yIHRoZSBQUi4KKworKiBOZXcgaG9va3M6CisKKyAgKyBgYHB5dGVzdF9maXh0dXJl
X3NldHVwKGZpeHR1cmVkZWYsIHJlcXVlc3QpYGA6IGV4ZWN1dGVzIGZpeHR1cmUgc2V0dXA7Cisg
ICsgYGBweXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFsaXplcihmaXh0dXJlZGVmKWBgOiBjYWxsZWQg
YWZ0ZXIgdGhlIGZpeHR1cmUncworICAgIGZpbmFsaXplciBhbmQgaGFzIGFjY2VzcyB0byB0aGUg
Zml4dHVyZSdzIHJlc3VsdCBjYWNoZS4KKworICBUaGFua3MgYEBkNmVgXywgYEBzYWxsbmVyYF8u
CisKKyogSXNzdWUgd2FybmluZ3MgZm9yIGFzc2VydHMgd2hvc2UgdGVzdCBpcyBhIHR1cGxlIGxp
dGVyYWwuIFN1Y2ggYXNzZXJ0cyB3aWxsCisgIG5ldmVyIGZhaWwgYmVjYXVzZSB0dXBsZXMgYXJl
IGFsd2F5cyB0cnV0aHkgYW5kIGFyZSB1c3VhbGx5IGEgbWlzdGFrZQorICAoc2VlIGAjMTU2MmBf
KS4gVGhhbmtzIGBAa3Zhcy1pdGBfLCBmb3IgdGhlIFBSLgorCisqIEFsbG93IHBhc3NpbmcgYSBj
dXN0b20gZGVidWdnZXIgY2xhc3MgKGUuZy4gYGAtLXBkYmNscz1JUHl0aG9uLmNvcmUuZGVidWdn
ZXI6UGRiYGApLgorICBUaGFua3MgdG8gYEBhbm50emVyYF8gZm9yIHRoZSBQUi4KKworCisqKkNo
YW5nZXMqKgorCisqIFBsdWdpbnMgbm93IGJlbmVmaXQgZnJvbSBhc3NlcnRpb24gcmV3cml0aW5n
LiAgVGhhbmtzCisgIGBAc29iZXI3YF8sIGBAbmljb2RkZW11c2BfIGFuZCBgQGZsdWJgXyBmb3Ig
dGhlIFBSLgorCisqIENoYW5nZSBgYHJlcG9ydC5vdXRjb21lYGAgZm9yIGBgeHBhc3NlZGBgIHRl
c3RzIHRvIGBgInBhc3NlZCJgYCBpbiBub24tc3RyaWN0CisgIG1vZGUgYW5kIGBgImZhaWxlZCJg
YCBpbiBzdHJpY3QgbW9kZS4gVGhhbmtzIHRvIGBAaGFja2Vicm90YF8gZm9yIHRoZSBQUgorICAo
YCMxNzk1YF8pIGFuZCBgQGdwcmFzYWQ4NGBfIGZvciByZXBvcnQgKGAjMTU0NmBfKS4KKworKiBU
ZXN0cyBtYXJrZWQgd2l0aCBgYHhmYWlsKHN0cmljdD1GYWxzZSlgYCAodGhlIGRlZmF1bHQpIG5v
dyBhcHBlYXIgaW4KKyAgSlVuaXRYTUwgcmVwb3J0cyBhcyBwYXNzaW5nIHRlc3RzIGluc3RlYWQg
b2Ygc2tpcHBlZC4KKyAgVGhhbmtzIHRvIGBAaGFja2Vicm90YF8gZm9yIHRoZSBQUiAoYCMxNzk1
YF8pLgorCisqIEhpZ2hsaWdodCBwYXRoIG9mIHRoZSBmaWxlIGxvY2F0aW9uIGluIHRoZSBlcnJv
ciByZXBvcnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29weS9wYXN0ZS4KKyAgVGhhbmtzIGBAc3V6
YWt1YF8gZm9yIHRoZSBQUiAoYCMxNzc4YF8pLgorCisqIEZpeHR1cmVzIG1hcmtlZCB3aXRoIGBg
QHB5dGVzdC5maXh0dXJlYGAgY2FuIG5vdyB1c2UgYGB5aWVsZGBgIHN0YXRlbWVudHMgZXhhY3Rs
eSBsaWtlCisgIHRob3NlIG1hcmtlZCB3aXRoIHRoZSBgYEBweXRlc3QueWllbGRfZml4dHVyZWBg
IGRlY29yYXRvci4gVGhpcyBjaGFuZ2UgcmVuZGVycworICBgYEBweXRlc3QueWllbGRfZml4dHVy
ZWBgIGRlcHJlY2F0ZWQgYW5kIG1ha2VzIGBgQHB5dGVzdC5maXh0dXJlYGAgd2l0aCBgYHlpZWxk
YGAgc3RhdGVtZW50cworICB0aGUgcHJlZmVycmVkIHdheSB0byB3cml0ZSB0ZWFyZG93biBjb2Rl
IChgIzE0NjFgXykuCisgIFRoYW5rcyBgQGNzYWZ0b2l1YF8gZm9yIGJyaW5naW5nIHRoaXMgdG8g
YXR0ZW50aW9uIGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEV4cGxpY2l0bHkg
cGFzc2VkIHBhcmFtZXRyaXplIGlkcyBkbyBub3QgZ2V0IGVzY2FwZWQgdG8gYXNjaWkgKGAjMTM1
MWBfKS4KKyAgVGhhbmtzIGBAY2VyaWR3ZW5gXyBmb3IgdGhlIFBSLgorCisqIEZpeHR1cmVzIGFy
ZSBub3cgc29ydGVkIGluIHRoZSBlcnJvciBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIGFuIHVua25v
d24KKyAgZml4dHVyZSBpcyBkZWNsYXJlZCBpbiBhIHRlc3QgZnVuY3Rpb24uCisgIFRoYW5rcyBg
QG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIGBgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnlg
YCBob29rIG5vdyByZWNlaXZlcyB0aGUgYGBleGl0c3RhdHVzYGAKKyAgb2YgdGhlIHRlc3Qgc2Vz
c2lvbiBhcyBhcmd1bWVudC4gVGhhbmtzIGBAYmx1ZXllZGBfIGZvciB0aGUgUFIgKGAjMTgwOWBf
KS4KKworKiBQYXJhbWV0cml6ZSBpZHMgY2FuIGFjY2VwdCBgYE5vbmVgYCBhcyBzcGVjaWZpYyB0
ZXN0IGlkLCBpbiB3aGljaCBjYXNlIHRoZQorICBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZCBm
b3IgdGhhdCBhcmd1bWVudCB3aWxsIGJlIHVzZWQuCisgIFRoYW5rcyBgQHBhbGF2aXZgXyBmb3Ig
dGhlIGNvbXBsZXRlIFBSIChgIzE0NjhgXykuCisKKyogVGhlIHBhcmFtZXRlciB0byB4dW5pdC1z
dHlsZSBzZXR1cC90ZWFyZG93biBtZXRob2RzIChgYHNldHVwX21ldGhvZGBgLAorICBgYHNldHVw
X21vZHVsZWBgLCBldGMuKSBpcyBub3cgb3B0aW9uYWwgYW5kIG1heSBiZSBvbWl0dGVkLgorICBU
aGFua3MgYEBva2tlbmBfIGZvciBicmluZ2luZyB0aGlzIHRvIGF0dGVudGlvbiBhbmQgYEBuaWNv
ZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBJbXByb3ZlZCBhdXRvbWF0aWMgaWQgZ2VuZXJhdGlv
biBzZWxlY3Rpb24gaW4gY2FzZSBvZiBkdXBsaWNhdGUgaWRzIGluCisgIHBhcmFtZXRyaXplLgor
ICBUaGFua3MgYEBwYWxhdml2YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNDc0YF8pLgorCisq
IE5vdyBweXRlc3Qgd2FybmluZ3Mgc3VtbWFyeSBpcyBzaG93biB1cCBieSBkZWZhdWx0LiBBZGRl
ZCBhIG5ldyBmbGFnCisgIGBgLS1kaXNhYmxlLXB5dGVzdC13YXJuaW5nc2BgIHRvIGV4cGxpY2l0
bHkgZGlzYWJsZSB0aGUgd2FybmluZ3Mgc3VtbWFyeSAoYCMxNjY4YF8pLgorCisqIE1ha2UgSW1w
b3J0RXJyb3IgZHVyaW5nIGNvbGxlY3Rpb24gbW9yZSBleHBsaWNpdCBieSByZW1pbmRpbmcKKyAg
dGhlIHVzZXIgdG8gY2hlY2sgdGhlIG5hbWUgb2YgdGhlIHRlc3QgbW9kdWxlL3BhY2thZ2Uocykg
KGAjMTQyNmBfKS4KKyAgVGhhbmtzIGBAb21hcmtvaGxgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChg
IzE1MjBgXykuCisKKyogQWRkIGBgYnVpbGQvYGAgYW5kIGBgZGlzdC9gYCB0byB0aGUgZGVmYXVs
dCBgYC0tbm9yZWN1cnNlZGlyc2BgIGxpc3QuIFRoYW5rcworICBgQG1pa29mc2tpYF8gZm9yIHRo
ZSByZXBvcnQgYW5kIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSIChgIzE1NDRgXykuCisKKyogYGBw
eXRlc3QucmFpc2VzYGAgaW4gdGhlIGNvbnRleHQgbWFuYWdlciBmb3JtIGFjY2VwdHMgYSBjdXN0
b20KKyAgYGBtZXNzYWdlYGAgdG8gcmFpc2Ugd2hlbiBubyBleGNlcHRpb24gb2NjdXJyZWQuCisg
IFRoYW5rcyBgQHBhbGF2aXZgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE2MTZgXykuCisKKyog
YGBjb25mdGVzdC5weWBgIGZpbGVzIG5vdyBiZW5lZml0IGZyb20gYXNzZXJ0aW9uIHJld3JpdGlu
ZzsgcHJldmlvdXNseSBpdAorICB3YXMgb25seSBhdmFpbGFibGUgZm9yIHRlc3QgbW9kdWxlcy4g
VGhhbmtzIGBAZmx1YmBfLCBgQHNvYmVyN2BfIGFuZAorICBgQG5pY29kZGVtdXNgXyBmb3IgdGhl
IFBSIChgIzE2MTlgXykuCisKKyogVGV4dCBkb2N1bWVudHMgd2l0aG91dCBhbnkgZG9jdGVzdHMg
bm8gbG9uZ2VyIGFwcGVhciBhcyAic2tpcHBlZCIuCisgIFRoYW5rcyBgQGdyYWluZ2VydGBfIGZv
ciByZXBvcnRpbmcgYW5kIHByb3ZpZGluZyBhIGZ1bGwgUFIgKGAjMTU4MGBfKS4KKworKiBFbnN1
cmUgdGhhdCBhIG1vZHVsZSB3aXRoaW4gYSBuYW1lc3BhY2UgcGFja2FnZSBjYW4gYmUgZm91bmQg
d2hlbiBpdAorICBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSB0b2dldGhlciB3aXRo
IHRoZSBgYC0tcHlhcmdzYGAKKyAgb3B0aW9uLiAgVGhhbmtzIHRvIGBAdGFzY2hpbmlgXyBmb3Ig
dGhlIFBSIChgIzE1OTdgXykuCisKKyogQWx3YXlzIGluY2x1ZGUgZnVsbCBhc3NlcnRpb24gZXhw
bGFuYXRpb24gZHVyaW5nIGFzc2VydGlvbiByZXdyaXRpbmcuIFRoZSBwcmV2aW91cyBiZWhhdmlv
dXIgd2FzIGhpZGluZworICBzdWItZXhwcmVzc2lvbnMgdGhhdCBoYXBwZW5lZCB0byBiZSBgYEZh
bHNlYGAsIGFzc3VtaW5nIHRoaXMgd2FzIHJlZHVuZGFudCBpbmZvcm1hdGlvbi4KKyAgVGhhbmtz
IGBAYmFnZXJhcmRgXyBmb3IgcmVwb3J0aW5nIChgIzE1MDNgXykuIFRoYW5rcyB0byBgQGRhdmVo
dW50YF8gYW5kCisgIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSLgorCisqIGBgT3B0aW9uR3JvdXAu
YWRkb3B0aW9uKClgYCBub3cgY2hlY2tzIGlmIG9wdGlvbiBuYW1lcyB3ZXJlIGFscmVhZHkKKyAg
YWRkZWQgYmVmb3JlLCB0byBtYWtlIGl0IGVhc2llciB0byB0cmFjayBkb3duIGlzc3VlcyBsaWtl
IGAjMTYxOGBfLgorICBCZWZvcmUsIHlvdSBvbmx5IGdvdCBleGNlcHRpb25zIGxhdGVyIGZyb20g
YGBhcmdwYXJzZWBgIGxpYnJhcnksCisgIGdpdmluZyBubyBjbHVlIGFib3V0IHRoZSBhY3R1YWwg
cmVhc29uIGZvciBkb3VibGUtYWRkZWQgb3B0aW9ucy4KKworKiBgYHlpZWxkYGAtYmFzZWQgdGVz
dHMgYXJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHB5dGVz
dC00LjAuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIGBgW3B5dGVz
dF1gYCBzZWN0aW9ucyBpbiBgYHNldHVwLmNmZ2BgIGZpbGVzIHNob3VsZCBub3cgYmUgbmFtZWQg
YGBbdG9vbDpweXRlc3RdYGAKKyAgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgZGlzdHV0
aWxzIGNvbW1hbmRzIChzZWUgYCM1NjdgXykuIGBgW3B5dGVzdF1gYCBzZWN0aW9ucyBpbgorICBg
YHB5dGVzdC5pbmlgYCBvciBgYHRveC5pbmlgYCBmaWxlcyBhcmUgc3VwcG9ydGVkIGFuZCB1bmNo
YW5nZWQuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIFVzaW5nIGBg
cHl0ZXN0X2Z1bmNhcmdfX2BgIHByZWZpeCB0byBkZWNsYXJlIGZpeHR1cmVzIGlzIGNvbnNpZGVy
ZWQgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQorICByZW1vdmVkIGluIHB5dGVzdC00LjAgKGAjMTY4
NGBfKS4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogUGFzc2luZyBh
IGNvbW1hbmQtbGluZSBzdHJpbmcgdG8gYGBweXRlc3QubWFpbigpYGAgaXMgY29uc2lkZXJlZCBk
ZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQKKyAgZm9yIHJlbW92YWwgaW4gcHl0ZXN0LTQuMC4gSXQg
aXMgcmVjb21tZW5kZWQgdG8gcGFzcyBhIGxpc3Qgb2YgYXJndW1lbnRzIGluc3RlYWQgKGAjMTcy
M2BfKS4KKworKiBSZW5hbWUgYGBnZXRmdW5jYXJndmFsdWVgYCB0byBgYGdldGZpeHR1cmV2YWx1
ZWBgLiBgYGdldGZ1bmNhcmd2YWx1ZWBgIGlzCisgIHN0aWxsIHByZXNlbnQgYnV0IGlzIG5vdyBj
b25zaWRlcmVkIGRlcHJlY2F0ZWQuIFRoYW5rcyB0byBgQFJlZEJlYXJkQ29kZWBfIGFuZCBgQHRv
bXZpbmVyYF8KKyAgZm9yIHRoZSBQUiAoYCMxNjI2YF8pLgorCisqIGBgb3B0cGFyc2VgYCB0eXBl
IHVzYWdlIG5vdyB0cmlnZ2VycyBEZXByZWNhdGlvbldhcm5pbmdzIChgIzE3NDBgXykuCisKKwor
KiBgYG9wdHBhcnNlYGAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzdXBwb3J0cyBmbG9hdC9jb21w
bGV4IHR5cGVzIChgIzQ1N2BfKS4KKworKiBSZWZpbmVkIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB0
aGUgYGByb290ZGlyYGAsIGNvbnNpZGVyaW5nIG9ubHkgdmFsaWQKKyAgcGF0aHMgd2hpY2ggZml4
ZXMgYSBudW1iZXIgb2YgaXNzdWVzOiBgIzE1OTRgXywgYCMxNDM1YF8gYW5kIGAjMTQ3MWBfLgor
ICBVcGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFjY29yZGluZyB0byBjdXJyZW50IGJlaGF2aW9y
LiBUaGFua3MgdG8KKyAgYEBibHVleWVkYF8sIGBAZGF2ZWh1bnRgXyBhbmQgYEBtYXR0aGlhc2hh
YF8gZm9yIHRoZSBQUi4KKworKiBBbHdheXMgaW5jbHVkZSBmdWxsIGFzc2VydGlvbiBleHBsYW5h
dGlvbi4gVGhlIHByZXZpb3VzIGJlaGF2aW91ciB3YXMgaGlkaW5nCisgIHN1Yi1leHByZXNzaW9u
cyB0aGF0IGhhcHBlbmVkIHRvIGJlIEZhbHNlLCBhc3N1bWluZyB0aGlzIHdhcyByZWR1bmRhbnQg
aW5mb3JtYXRpb24uCisgIFRoYW5rcyBgQGJhZ2VyYXJkYF8gZm9yIHJlcG9ydGluZyAoYCMxNTAz
YF8pLiBUaGFua3MgdG8gYEBkYXZlaHVudGBfIGFuZAorICBgQHRvbXZpbmVyYF8gZm9yIFBSLgor
CisqIEJldHRlciBtZXNzYWdlIGluIGNhc2Ugb2Ygbm90IHVzaW5nIHBhcmFtZXRyaXplZCB2YXJp
YWJsZSAoc2VlIGAjMTUzOWBfKS4KKyAgVGhhbmtzIHRvIGBAdHJhbXdhajI5YF8gZm9yIHRoZSBQ
Ui4KKworKiBVcGRhdGVkIGRvY3N0cmluZ3Mgd2l0aCBhIG1vcmUgdW5pZm9ybSBzdHlsZS4KKwor
KiBBZGQgc3RkZXJyIHdyaXRlIGZvciBgYHB5dGVzdC5leGl0KG1zZylgYCBkdXJpbmcgc3RhcnR1
cC4gUHJldmlvdXNseSB0aGUgbWVzc2FnZSB3YXMgbmV2ZXIgc2hvd24uCisgIFRoYW5rcyBgQEJl
eW9uZEV2aWxgXyBmb3IgcmVwb3J0aW5nIGAjMTIxMGBfLiBUaGFua3MgdG8gQGpnc29uZXNlbiBh
bmQKKyAgYEB0b212aW5lcmBfIGZvciB0aGUgUFIuCisKKyogTm8gbG9uZ2VyIGRpc3BsYXkgdGhl
IGluY29ycmVjdCB0ZXN0IGRlc2VsZWN0aW9uIHJlYXNvbiAoYCMxMzcyYF8pLgorICBUaGFua3Mg
YEByb25ueXBmYW5uc2NobWlkdGBfIGZvciB0aGUgUFIuCisKKyogVGhlIGBgLS1yZXN1bHRsb2dg
YCBjb21tYW5kIGxpbmUgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IGl0IGlzIGxpdHRsZSB1
c2VkCisgIGFuZCB0aGVyZSBhcmUgbW9yZSBtb2Rlcm4gYW5kIGJldHRlciBhbHRlcm5hdGl2ZXMg
KHNlZSBgIzgzMGBfKS4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyog
SW1wcm92ZSBlcnJvciBtZXNzYWdlIHdpdGggZml4dHVyZSBsb29rdXAgZXJyb3JzOiBhZGQgYW4g
J0UnIHRvIHRoZSBmaXJzdAorICBsaW5lIGFuZCAnPicgdG8gdGhlIHJlc3QuIEZpeGVzIGAjNzE3
YF8uIFRoYW5rcyBgQGJsdWV5ZWRgXyBmb3IgcmVwb3J0aW5nIGFuZAorICBhIFBSLCBgQGVvbG85
OTlgXyBmb3IgdGhlIGluaXRpYWwgUFIgYW5kIGBAdG9tdmluZXJgXyBmb3IgaGlzIGd1aWRhbmNl
IGR1cmluZworICBFdXJvUHl0aG9uMjAxNiBzcHJpbnQuCisKKworKipCdWcgRml4ZXMqKgorCisq
IFBhcmFtZXRyaXplIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBkdXBsaWNhdGVkIHRlc3QgaWRzLgor
CisqIEZpeCBpbnRlcm5hbCBlcnJvciBpc3N1ZSB3aGVuIHRoZSBgYG1ldGhvZGBgIGFyZ3VtZW50
IGlzIG1pc3NpbmcgZm9yCisgIGBgdGVhcmRvd25fbWV0aG9kKClgYCAoYCMxNjA1YF8pLgorCisq
IEZpeCBleGNlcHRpb24gdmlzdWFsaXphdGlvbiBpbiBjYXNlIHRoZSBjdXJyZW50IHdvcmtpbmcg
ZGlyZWN0b3J5IChDV0QpIGdldHMKKyAgZGVsZXRlZCBkdXJpbmcgdGVzdGluZyAoYCMxMjM1YF8p
LiBUaGFua3MgYEBidWt6b3JgXyBmb3IgcmVwb3J0aW5nLiBQUiBieQorICBgQG1hcnNjaGVyYF8u
CisKKyogSW1wcm92ZSB0ZXN0IG91dHB1dCBmb3IgbG9naWNhbCBleHByZXNzaW9uIHdpdGggYnJh
Y2tldHMgKGAjOTI1YF8pLgorICBUaGFua3MgYEBEUk1hY0l2ZXJgXyBmb3IgcmVwb3J0aW5nIGFu
ZCBgQFJlZEJlYXJkQ29kZWBfIGZvciB0aGUgUFIuCisKKyogQ3JlYXRlIGNvcnJlY3QgZGlmZiBm
b3Igc3RyaW5ncyBlbmRpbmcgd2l0aCBuZXdsaW5lcyAoYCMxNTUzYF8pLgorICBUaGFua3MgYEBW
b2d0aW5hdG9yYF8gZm9yIHJlcG9ydGluZyBhbmQgYEBSZWRCZWFyZENvZGVgXyBhbmQKKyAgYEB0
b212aW5lcmBfIGZvciB0aGUgUFIuCisKKyogYGBDb25mdGVzdEltcG9ydEZhaWx1cmVgYCBub3cg
c2hvd3MgdGhlIHRyYWNlYmFjayBtYWtpbmcgaXQgZWFzaWVyIHRvCisgIGlkZW50aWZ5IGJ1Z3Mg
aW4gYGBjb25mdGVzdC5weWBgIGZpbGVzIChgIzE1MTZgXykuIFRoYW5rcyBgQHR4b21vbmBfIGZv
cgorICB0aGUgUFIuCisKKyogVGV4dCBkb2N1bWVudHMgd2l0aG91dCBhbnkgZG9jdGVzdHMgbm8g
bG9uZ2VyIGFwcGVhciBhcyAic2tpcHBlZCIuCisgIFRoYW5rcyBgQGdyYWluZ2VydGBfIGZvciBy
ZXBvcnRpbmcgYW5kIHByb3ZpZGluZyBhIGZ1bGwgUFIgKGAjMTU4MGBfKS4KKworKiBGaXhlZCBj
b2xsZWN0aW9uIG9mIGNsYXNzZXMgd2l0aCBjdXN0b20gYGBfX25ld19fYGAgbWV0aG9kLgorICBG
aXhlcyBgIzE1NzlgXy4gVGhhbmtzIHRvIGBAU3RyYW5nZXI2NjY3YF8gZm9yIHRoZSBQUi4KKwor
KiBGaXhlZCBzY29wZSBvdmVycmlkaW5nIGluc2lkZSBtZXRhZnVuYy5wYXJhbWV0cml6ZSAoYCM2
MzRgXykuCisgIFRoYW5rcyB0byBgQFN0cmFuZ2VyNjY2N2BfIGZvciB0aGUgUFIuCisKKyogRml4
ZWQgdGhlIHRvdGFsIHRlc3RzIHRhbGx5IGluIGp1bml0IHhtbCBvdXRwdXQgKGAjMTc5OGBfKS4K
KyAgVGhhbmtzIHRvIGBAY2JvZWxzZW5gXyBmb3IgdGhlIFBSLgorCisqIEZpeGVkIG9mZi1ieS1v
bmUgZXJyb3Igd2l0aCBsaW5lcyBmcm9tIGBgcmVxdWVzdC5ub2RlLndhcm5gYC4KKyAgVGhhbmtz
IHRvIGBAYmx1ZXllZGBfIGZvciB0aGUgUFIuCisKKworLi4gXyMxMjEwOiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEyMTAKKy4uIF8jMTIzNTogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMjM1CisuLiBfIzEzNTE6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM1MQorLi4gXyMxMzcyOiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEzNzIKKy4uIF8jMTQy
MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDIxCisuLiBf
IzE0MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQyNgor
Li4gXyMxNDI4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNDI4
CisuLiBfIzE0MzU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTQzNQorLi4gXyMxNDQxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVs
bC8xNDQxCisuLiBfIzE0NDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9w
dWxsLzE0NDQKKy4uIF8jMTQ1NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L3B1bGwvMTQ1NAorLi4gXyMxNDYxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvcHVsbC8xNDYxCisuLiBfIzE0Njg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9wdWxsLzE0NjgKKy4uIF8jMTQ3MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8xNDcxCisuLiBfIzE0NzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9wdWxsLzE0NzQKKy4uIF8jMTQ3OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDc5CisuLiBfIzE1MDI6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MDIKKy4uIF8jMTUwMzogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTAzCisuLiBfIzE1MTY6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MTYKKy4uIF8jMTUxOTogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUxOQorLi4gXyMxNTIwOiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTIwCisuLiBfIzE1MjY6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MjYKKy4uIF8jMTUzOTogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTM5CisuLiBfIzE1NDQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU0NAorLi4gXyMxNTQ2
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1NDYKKy4uIF8j
MTU1MzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTUzCisu
LiBfIzE1NjI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU2
MgorLi4gXyMxNTc5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzE1NzkKKy4uIF8jMTU4MDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1
bGwvMTU4MAorLi4gXyMxNTk0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzE1OTQKKy4uIF8jMTU5NzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L3B1bGwvMTU5NworLi4gXyMxNjA1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE2MDUKKy4uIF8jMTYxNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L3B1bGwvMTYxNgorLi4gXyMxNjE4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzE2MTgKKy4uIF8jMTYxOTogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjE5CisuLiBfIzE2MjY6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE2MjYKKy4uIF8jMTYyNzogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTYyNworLi4gXyMxNjI4OiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjI4CisuLiBfIzE2Mjk6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYyOQorLi4gXyMxNjMyOiBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2MzIKKy4uIF8jMTYzMzogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTYzMworLi4gXyMxNjY0OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjY0CisuLiBfIzE2Njg6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTY2OAorLi4gXyMx
Njg0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjg0CisuLiBf
IzE3MjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE3MjMKKy4u
IF8jMTc0MDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNzQw
CisuLiBfIzE3NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTc0OQorLi4gXyMxNzc4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVs
bC8xNzc4CisuLiBfIzE3OTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9w
dWxsLzE3OTUKKy4uIF8jMTc5ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L3B1bGwvMTc5OAorLi4gXyMxODA5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvcHVsbC8xODA5CisuLiBfIzM3MjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zNzIKKy4uIF8jNDU3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQ1NworLi4gXyM0NjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9wdWxsLzQ2MAorLi4gXyM1Njc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9wdWxsLzU2NworLi4gXyM2MDc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjA3CisuLiBfIzYzNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy82MzQKKy4uIF8jNzE3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzcxNworLi4gXyM4MzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvODMwCisuLiBfIzkyNTogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85MjUKKworCisuLiBfQGFubnR6ZXI6IGh0dHBzOi8vZ2l0
aHViLmNvbS9hbm50emVyCisuLiBfQGJhZ2VyYXJkOiBodHRwczovL2dpdGh1Yi5jb20vYmFnZXJh
cmQKKy4uIF9AQmV5b25kRXZpbDogaHR0cHM6Ly9naXRodWIuY29tL0JleW9uZEV2aWwKKy4uIF9A
Ymx1ZXllZDogaHR0cHM6Ly9naXRodWIuY29tL2JsdWV5ZWQKKy4uIF9AY2VyaWR3ZW46IGh0dHBz
Oi8vZ2l0aHViLmNvbS9jZXJpZHdlbgorLi4gX0BjYm9lbHNlbjogaHR0cHM6Ly9naXRodWIuY29t
L2Nib2Vsc2VuCisuLiBfQGNzYWZ0b2l1OiBodHRwczovL2dpdGh1Yi5jb20vY3NhZnRvaXUKKy4u
IF9AZDZlOiBodHRwczovL2dpdGh1Yi5jb20vZDZlCisuLiBfQGRhdmVodW50OiBodHRwczovL2dp
dGh1Yi5jb20vZGF2ZWh1bnQKKy4uIF9ARFJNYWNJdmVyOiBodHRwczovL2dpdGh1Yi5jb20vRFJN
YWNJdmVyCisuLiBfQGVvbG85OTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9lb2xvOTk5CisuLiBfQGZl
bmd4eDogaHR0cHM6Ly9naXRodWIuY29tL2Zlbmd4eAorLi4gX0BmbHViOiBodHRwczovL2dpdGh1
Yi5jb20vZmx1YgorLi4gX0BncHJhc2FkODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHJhc2FkODQK
Ky4uIF9AZ3JhaW5nZXJ0OiBodHRwczovL2dpdGh1Yi5jb20vZ3JhaW5nZXJ0CisuLiBfQGhhcnR5
bTogaHR0cHM6Ly9naXRodWIuY29tL2hhcnR5bQorLi4gX0BrYWxla3VuZGVydDogaHR0cHM6Ly9n
aXRodWIuY29tL2thbGVrdW5kZXJ0CisuLiBfQGt2YXMtaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9r
dmFzLWl0CisuLiBfQG1hcnNjaGVyOiBodHRwczovL2dpdGh1Yi5jb20vbWFyc2NoZXIKKy4uIF9A
bWlrb2Zza2k6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWtvZnNraQorLi4gX0BtaWxsaWFtczogaHR0
cHM6Ly9naXRodWIuY29tL21pbGxpYW1zCisuLiBfQG5pa3JhdGlvOiBodHRwczovL2dpdGh1Yi5j
b20vbmlrcmF0aW8KKy4uIF9Abm92YXMweDJhOiBodHRwczovL2dpdGh1Yi5jb20vbm92YXMweDJh
CisuLiBfQG9iZXN0d2FsdGVyOiBodHRwczovL2dpdGh1Yi5jb20vb2Jlc3R3YWx0ZXIKKy4uIF9A
b2trZW46IGh0dHBzOi8vZ2l0aHViLmNvbS9va2tlbgorLi4gX0BvbGVncGlkc2FkbnlpOiBodHRw
czovL2dpdGh1Yi5jb20vb2xlZ3BpZHNhZG55aQorLi4gX0BvbWFya29obDogaHR0cHM6Ly9naXRo
dWIuY29tL29tYXJrb2hsCisuLiBfQHBhbGF2aXY6IGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxhdml2
CisuLiBfQFJlZEJlYXJkQ29kZTogaHR0cHM6Ly9naXRodWIuY29tL1JlZEJlYXJkQ29kZQorLi4g
X0BzYWxsbmVyOiBodHRwczovL2dpdGh1Yi5jb20vc2FsbG5lcgorLi4gX0Bzb2Jlcjc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9zb2JlcjcKKy4uIF9AU3RyYW5nZXI2NjY3OiBodHRwczovL2dpdGh1Yi5j
b20vU3RyYW5nZXI2NjY3CisuLiBfQHN1emFrdTogaHR0cHM6Ly9naXRodWIuY29tL3N1emFrdQor
Li4gX0B0YXJlcWFsYXlhbjogaHR0cHM6Ly9naXRodWIuY29tL3RhcmVxYWxheWFuCisuLiBfQHRh
c2NoaW5pOiBodHRwczovL2dpdGh1Yi5jb20vdGFzY2hpbmkKKy4uIF9AdHJhbXdhajI5OiBodHRw
czovL2dpdGh1Yi5jb20vdHJhbXdhajI5CisuLiBfQHR4b21vbjogaHR0cHM6Ly9naXRodWIuY29t
L3R4b21vbgorLi4gX0BWb2d0aW5hdG9yOiBodHRwczovL2dpdGh1Yi5jb20vVm9ndGluYXRvcgor
Li4gX0BtYXR0aGlhc2hhOiBodHRwczovL2dpdGh1Yi5jb20vbWF0dGhpYXNoYQorCisKKzIuOS4y
ICgyMDE2LTA1LTMxKQorPT09PT09PT09PT09PT09PT09CisKKyoqQnVnIEZpeGVzKioKKworKiBm
aXggYCM1MTBgXzogc2tpcCB0ZXN0cyB3aGVyZSBvbmUgcGFyYW1ldGVyaXplIGRpbWVuc2lvbiB3
YXMgZW1wdHkKKyAgdGhhbmtzIEFsZXggU3RhcGxldG9uIGZvciB0aGUgUmVwb3J0IGFuZCBgQFJv
bm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUgorCisqIEZpeCBYZmFpbCBkb2VzIG5vdCB3b3Jr
IHdpdGggY29uZGl0aW9uIGtleXdvcmQgYXJndW1lbnQuCisgIFRoYW5rcyBgQGFzdHJhdzM4YF8g
Zm9yIHJlcG9ydGluZyB0aGUgaXNzdWUgKGAjMTQ5NmBfKSBhbmQgYEB0b212aW5lcmBfCisgIGZv
ciBQUiB0aGUgKGAjMTUyNGBfKS4KKworKiBGaXggd2luMzIgcGF0aCBpc3N1ZSB3aGVuIHB1dHRp
bmcgY3VzdG9tIGNvbmZpZyBmaWxlIHdpdGggYWJzb2x1dGUgcGF0aAorICBpbiBgYHB5dGVzdC5t
YWluKCItYyB5b3VyX2Fic29sdXRlX3BhdGgiKWBgLgorCisqIEZpeCBtYXhpbXVtIHJlY3Vyc2lv
biBkZXB0aCBkZXRlY3Rpb24gd2hlbiByYWlzZWQgZXJyb3IgY2xhc3MgaXMgbm90IGF3YXJlCisg
IG9mIHVuaWNvZGUvZW5jb2RlZCBieXRlcy4KKyAgVGhhbmtzIGBAcHJ1c3NlLW1hcnRpbmBfIGZv
ciB0aGUgUFIgKGAjMTUwNmBfKS4KKworKiBGaXggYGBweXRlc3QubWFyay5za2lwYGAgbWFyayB3
aGVuIHVzZWQgaW4gc3RyaWN0IG1vZGUuCisgIFRoYW5rcyBgQHBxdWVudGluYF8gZm9yIHRoZSBQ
UiBhbmQgYEBSb25ueVBmYW5uc2NobWlkdGBfIGZvcgorICBzaG93aW5nIGhvdyB0byBmaXggdGhl
IGJ1Zy4KKworKiBNaW5vciBpbXByb3ZlbWVudHMgYW5kIGZpeGVzIHRvIHRoZSBkb2N1bWVudGF0
aW9uLgorICBUaGFua3MgYEBvbWFya29obGBfIGZvciB0aGUgUFIuCisKKyogRml4IGBgLS1maXh0
dXJlc2BgIHRvIHNob3cgYWxsIGZpeHR1cmUgZGVmaW5pdGlvbnMgYXMgb3Bwb3NlZCB0byBqdXN0
CisgIG9uZSBwZXIgZml4dHVyZSBuYW1lLgorICBUaGFua3MgdG8gYEBoYWNrZWJyb3RgXyBmb3Ig
dGhlIFBSLgorCisuLiBfIzUxMDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81MTAKKy4uIF8jMTUwNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L3B1bGwvMTUwNgorLi4gXyMxNDk2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE0OTYKKy4uIF8jMTUyNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L3B1bGwvMTUyNAorCisuLiBfQHBydXNzZS1tYXJ0aW46IGh0dHBzOi8vZ2l0aHVi
LmNvbS9wcnVzc2UtbWFydGluCisuLiBfQGFzdHJhdzM4OiBodHRwczovL2dpdGh1Yi5jb20vYXN0
cmF3MzgKKworCisyLjkuMSAoMjAxNi0wMy0xNykKKz09PT09PT09PT09PT09PT09PQorCisqKkJ1
ZyBGaXhlcyoqCisKKyogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gYSBwbHVnaW4gZmFpbHMg
dG8gbG9hZC4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogRml4IChg
IzExNzggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTE3OD5g
Xyk6CisgIGBgcHl0ZXN0LmZhaWxgYCB3aXRoIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHJhaXNlcyBh
biBpbnRlcm5hbCBweXRlc3QgZXJyb3IuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhl
IFBSLgorCisqIEZpeCAoYCM0NjlgXyk6IGp1bml0IHBhcnNlcyByZXBvcnQubm9kZWlkIGluY29y
cmVjdGx5LCB3aGVuIHBhcmFtcyBJRHMKKyAgY29udGFpbiBgYDo6YGAuIFRoYW5rcyBgQHRvbXZp
bmVyYF8gZm9yIHRoZSBQUiAoYCMxNDMxYF8pLgorCisqIEZpeCAoYCM1NzggPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTc4PmBfKTogU3ludGF4RXJyb3JzCisg
IGNvbnRhaW5pbmcgbm9uLWFzY2lpIGxpbmVzIGF0IHRoZSBwb2ludCBvZiBmYWlsdXJlIGdlbmVy
YXRlZCBhbiBpbnRlcm5hbAorICBweS50ZXN0IGVycm9yLgorICBUaGFua3MgYEBhc290dGlsZWBf
IGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEZpeCAo
YCMxNDM3YF8pOiBXaGVuIHBhc3NpbmcgaW4gYSBieXRlc3RyaW5nIHJlZ2V4IHBhdHRlcm4gdG8g
cGFyYW1ldGVyaXplCisgIGF0dGVtcHQgdG8gZGVjb2RlIGl0IGFzIHV0Zi04IGlnbm9yaW5nIGVy
cm9ycy4KKworKiBGaXggKGAjNjQ5YF8pOiBwYXJhbWV0cml6ZWQgdGVzdCBub2RlcyBjYW5ub3Qg
YmUgc3BlY2lmaWVkIHRvIHJ1biBvbiB0aGUgY29tbWFuZCBsaW5lLgorCisqIEZpeCAoYCMxMzhg
Xyk6IGJldHRlciByZXBvcnRpbmcgZm9yIHB5dGhvbiAzLjMrIGNoYWluZWQgZXhjZXB0aW9ucwor
CisuLiBfIzE0Mzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTQzNworLi4gXyM0Njk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDY5CisuLiBfIzE0MzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9w
dWxsLzE0MzEKKy4uIF8jNjQ5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzY0OQorLi4gXyMxMzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMTM4CisKKy4uIF9AYXNvdHRpbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc290dGls
ZQorCisKKzIuOS4wICgyMDE2LTAyLTI5KQorPT09PT09PT09PT09PT09PT09CisKKyoqTmV3IEZl
YXR1cmVzKioKKworKiBOZXcgYGBweXRlc3QubWFyay5za2lwYGAgbWFyaywgd2hpY2ggdW5jb25k
aXRpb25hbGx5IHNraXBzIG1hcmtlZCB0ZXN0cy4KKyAgVGhhbmtzIGBATWljaGFlbEFxdWlsaW5h
YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxMDQwYF8pLgorCisqIGBgLS1kb2N0ZXN0LWdsb2Jg
YCBtYXkgbm93IGJlIHBhc3NlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgY29tbWFuZC1saW5lLgor
ICBUaGFua3MgYEBqYWJgXyBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBOZXcg
YGAtcnBgYCBhbmQgYGAtclBgYCByZXBvcnRpbmcgb3B0aW9ucyBnaXZlIHRoZSBzdW1tYXJ5IGFu
ZCBmdWxsIG91dHB1dAorICBvZiBwYXNzaW5nIHRlc3RzLCByZXNwZWN0aXZlbHkuIFRoYW5rcyB0
byBgQGNvZGV3YXJyaW9yMGBfIGZvciB0aGUgUFIuCisKKyogYGBweXRlc3QubWFyay54ZmFpbGBg
IG5vdyBoYXMgYSBgYHN0cmljdGBgIG9wdGlvbiwgd2hpY2ggbWFrZXMgYGBYUEFTU2BgCisgIHRl
c3RzIHRvIGZhaWwgdGhlIHRlc3Qgc3VpdGUgKGRlZmF1bHRpbmcgdG8gYGBGYWxzZWBgKS4gVGhl
cmUncyBhbHNvIGEKKyAgYGB4ZmFpbF9zdHJpY3RgYCBpbmkgb3B0aW9uIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gY29uZmlndXJlIGl0IHByb2plY3Qtd2lzZS4KKyAgVGhhbmtzIGBAcmFiYmJpdGBfIGZv
ciB0aGUgcmVxdWVzdCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUiAoYCMxMzU1YF8pLgor
CisqIGBgUGFyc2VyLmFkZGluaWBgIG5vdyBzdXBwb3J0cyBvcHRpb25zIG9mIHR5cGUgYGBib29s
YGAuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIE5ldyBgYEFMTE9X
X0JZVEVTYGAgZG9jdGVzdCBvcHRpb24uIFRoaXMgc3RyaXBzIGBgYmBgIHByZWZpeGVzIGZyb20g
Ynl0ZSBzdHJpbmdzCisgIGluIGRvY3Rlc3Qgb3V0cHV0IChzaW1pbGFyIHRvIGBgQUxMT1dfVU5J
Q09ERWBgKS4KKyAgVGhhbmtzIGBAamFyYWNvYF8gZm9yIHRoZSByZXF1ZXN0IGFuZCBgQG5pY29k
ZGVtdXNgXyBmb3IgdGhlIFBSIChgIzEyODdgXykuCisKKyogR2l2ZSBhIGhpbnQgb24gYGBLZXli
b2FyZEludGVycnVwdGBgIHRvIHVzZSB0aGUgYGAtLWZ1bGx0cmFjZWBgIG9wdGlvbiB0byBzaG93
IHRoZSBlcnJvcnMuCisgIEZpeGVzIGAjMTM2NmBfLgorICBUaGFua3MgdG8gYEBocGs0MmBfIGZv
ciB0aGUgcmVwb3J0IGFuZCBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUi4KKworKiBD
YXRjaCBgYEluZGV4RXJyb3JgYCBleGNlcHRpb25zIHdoZW4gZ2V0dGluZyBleGNlcHRpb24gc291
cmNlIGxvY2F0aW9uLgorICBGaXhlcyBhIHB5dGVzdCBpbnRlcm5hbCBlcnJvciBmb3IgZHluYW1p
Y2FsbHkgZ2VuZXJhdGVkIGNvZGUgKGZpeHR1cmVzIGFuZCB0ZXN0cykKKyAgd2hlcmUgc291cmNl
IGxpbmVzIGFyZSBmYWtlIGJ5IGludGVudGlvbi4KKworKipDaGFuZ2VzKioKKworKiAqKkltcG9y
dGFudCoqOiBgcHkuY29kZSA8aHR0cHM6Ly9weWxpYi5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUv
Y29kZS5odG1sPmBfIGhhcyBiZWVuCisgIG1lcmdlZCBpbnRvIHRoZSBgYHB5dGVzdGBgIHJlcG9z
aXRvcnkgYXMgYGBweXRlc3QuX2NvZGVgYC4gVGhpcyBkZWNpc2lvbgorICB3YXMgbWFkZSBiZWNh
dXNlIGBgcHkuY29kZWBgIGhhZCB2ZXJ5IGZldyB1c2VzIG91dHNpZGUgYGBweXRlc3RgYCBhbmQg
dGhlCisgIGZhY3QgdGhhdCBpdCB3YXMgaW4gYSBkaWZmZXJlbnQgcmVwb3NpdG9yeSBtYWRlIGl0
IGRpZmZpY3VsdCB0byBmaXggYnVncyBvbgorICBpdHMgY29kZSBpbiBhIHRpbWVseSBtYW5uZXIu
IFRoZSB0ZWFtIGhvcGVzIHdpdGggdGhpcyB0byBiZSBhYmxlIHRvIGJldHRlcgorICByZWZhY3Rv
ciBvdXQgYW5kIGltcHJvdmUgdGhhdCBjb2RlLgorICBUaGlzIGNoYW5nZSBzaG91bGRuJ3QgYWZm
ZWN0IHVzZXJzLCBidXQgaXQgaXMgdXNlZnVsIHRvIGxldCB1c2VycyBhd2FyZQorICBpZiB0aGV5
IGVuY291bnRlciBhbnkgc3RyYW5nZSBiZWhhdmlvci4KKworICBLZWVwIGluIG1pbmQgdGhhdCB0
aGUgY29kZSBmb3IgYGBweXRlc3QuX2NvZGVgYCBpcyAqKnByaXZhdGUqKiBhbmQKKyAgKipleHBl
cmltZW50YWwqKiwgc28geW91IGRlZmluaXRlbHkgc2hvdWxkIG5vdCBpbXBvcnQgaXQgZXhwbGlj
aXRseSEKKworICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBgYHB5LmNvZGVgYCBpcyBz
dGlsbCBhdmFpbGFibGUgaW4KKyAgYHB5bGliIDxodHRwczovL3B5bGliLnJlYWR0aGVkb2NzLmlv
PmBfLgorCisqIGBgcHl0ZXN0X2VudGVyX3BkYmBgIG5vdyBvcHRpb25hbGx5IHJlY2VpdmVzIHRo
ZSBweXRlc3QgY29uZmlnIG9iamVjdC4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUg
UFIuCisKKyogUmVtb3ZlZCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uIGZvciBQeXRob24gMi41IG9y
IGxvd2VyIHZlcnNpb25zLAorICBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgb2Jzb2xldGUgYGBf
cHl0ZXN0LmFzc2VydGlvbi5vbGRpbnRlcnByZXRgYCBtb2R1bGUuCisgIFRoYW5rcyBgQG5pY29k
ZGVtdXNgXyBmb3IgdGhlIFBSIChgIzEyMjZgXykuCisKKyogQ29tcGFyaXNvbnMgbm93IGFsd2F5
cyBzaG93IHVwIGluIGZ1bGwgd2hlbiBgYENJYGAgb3IgYGBCVUlMRF9OVU1CRVJgYCBpcworICBm
b3VuZCBpbiB0aGUgZW52aXJvbm1lbnQsIGV2ZW4gd2hlbiBgYC12dmBgIGlzbid0IHVzZWQuCisg
IFRoYW5rcyBgQFRoZS1Db21waWxlcmBfIGZvciB0aGUgUFIuCisKKyogYGAtLWxmYGAgYW5kIGBg
LS1mZmBgIG5vdyBzdXBwb3J0IGxvbmcgbmFtZXM6IGBgLS1sYXN0LWZhaWxlZGBgIGFuZAorICBg
YC0tZmFpbGVkLWZpcnN0YGAgcmVzcGVjdGl2ZWx5LgorICBUaGFua3MgYEBNaWNoYWVsQXF1aWxp
bmFgXyBmb3IgdGhlIFBSLgorCisqIEFkZGVkIGV4cGVjdGVkIGV4Y2VwdGlvbnMgdG8gYGBweXRl
c3QucmFpc2VzYGAgZmFpbCBtZXNzYWdlLgorCisqIENvbGxlY3Rpb24gb25seSBkaXNwbGF5cyBw
cm9ncmVzcyAoImNvbGxlY3RpbmcgWCBpdGVtcyIpIHdoZW4gaW4gYSB0ZXJtaW5hbC4KKyAgVGhp
cyBhdm9pZHMgY2x1dHRlcmluZyB0aGUgb3V0cHV0IHdoZW4gdXNpbmcgYGAtLWNvbG9yPXllc2Bg
IHRvIG9idGFpbgorICBjb2xvcnMgaW4gQ0kgaW50ZWdyYXRpb25zIHN5c3RlbXMgKGAjMTM5N2Bf
KS4KKworKipCdWcgRml4ZXMqKgorCisqIFRoZSBgYC1zYGAgYW5kIGBgLWNgYCBvcHRpb25zIHNo
b3VsZCBub3cgd29yayB1bmRlciBgYHhkaXN0YGA7CisgIGBgQ29uZmlnLmZyb21kaWN0YXJnc2Bg
IG5vdyByZXByZXNlbnRzIGl0cyBpbnB1dCBtdWNoIG1vcmUgZmFpdGhmdWxseS4KKyAgVGhhbmtz
IHRvIGBAYnVrem9yYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCM2ODBgXykuCisKKyogRml4IChg
IzEyOTBgXyk6IHN1cHBvcnQgUHl0aG9uIDMuNSdzIGBgQGBgIG9wZXJhdG9yIGluIGFzc2VydGlv
biByZXdyaXRpbmcuCisgIFRoYW5rcyBgQFNoaW5rZW5qb2VgXyBmb3IgcmVwb3J0IHdpdGggdGVz
dCBjYXNlIGFuZCBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KKworKiBGaXggZm9ybWF0dGluZyB1
dGYtOCBleHBsYW5hdGlvbiBtZXNzYWdlcyAoYCMxMzc5YF8pLgorICBUaGFua3MgYEBiaWVybmBf
IGZvciB0aGUgUFIuCisKKyogRml4IGB0cmFjZWJhY2sgc3R5bGUgZG9jc2BfIHRvIGRlc2NyaWJl
IGFsbCBvZiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMKKyAgKGF1dG8vbG9uZy9zaG9ydC9saW5lL25h
dGl2ZS9ubyksIHdpdGggYGBhdXRvYGAgYmVpbmcgdGhlIGRlZmF1bHQgc2luY2UgdjIuNi4KKyAg
VGhhbmtzIGBAaGFja2Vicm90YF8gZm9yIHRoZSBQUi4KKworKiBGaXggKGAjMTQyMmBfKToganVu
aXQgcmVjb3JkX3htbF9wcm9wZXJ0eSBkb2Vzbid0IGFsbG93IG11bHRpcGxlIHJlY29yZHMKKyAg
d2l0aCBzYW1lIG5hbWUuCisKKy4uIF9gdHJhY2ViYWNrIHN0eWxlIGRvY3NgOiBodHRwczovL3B5
dGVzdC5vcmcvZW4vc3RhYmxlL3VzYWdlLmh0bWwjbW9kaWZ5aW5nLXB5dGhvbi10cmFjZWJhY2st
cHJpbnRpbmcKKworLi4gXyMxNjA5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzE2MDkKKy4uIF8jMTQyMjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8xNDIyCisuLiBfIzEzNzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTM3OQorLi4gXyMxMzY2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEzNjYKKy4uIF8jMTA0MDogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTA0MAorLi4gXyM2ODA6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjgwCisuLiBfIzEyODc6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzEyODcKKy4uIF8jMTIyNjogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTIyNgorLi4gXyMxMjkwOiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xMjkwCisuLiBfIzEzNTU6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzEzNTUKKy4uIF8jMTM5NzogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzk3CisuLiBfQGJpZXJuOiBo
dHRwczovL2dpdGh1Yi5jb20vYmllcm4KKy4uIF9ATWljaGFlbEFxdWlsaW5hOiBodHRwczovL2dp
dGh1Yi5jb20vTWljaGFlbEFxdWlsaW5hCisuLiBfQGJ1a3pvcjogaHR0cHM6Ly9naXRodWIuY29t
L2J1a3pvcgorLi4gX0BocGs0MjogaHR0cHM6Ly9naXRodWIuY29tL2hwazQyCisuLiBfQG5pY29k
ZGVtdXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvZGRlbXVzCisuLiBfQGphYjogaHR0cHM6Ly9n
aXRodWIuY29tL2phYgorLi4gX0Bjb2Rld2FycmlvcjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb2Rl
d2FycmlvcjAKKy4uIF9AamFyYWNvOiBodHRwczovL2dpdGh1Yi5jb20vamFyYWNvCisuLiBfQFRo
ZS1Db21waWxlcjogaHR0cHM6Ly9naXRodWIuY29tL1RoZS1Db21waWxlcgorLi4gX0BTaGlua2Vu
am9lOiBodHRwczovL2dpdGh1Yi5jb20vU2hpbmtlbmpvZQorLi4gX0B0b212aW5lcjogaHR0cHM6
Ly9naXRodWIuY29tL3RvbXZpbmVyCisuLiBfQFJvbm55UGZhbm5zY2htaWR0OiBodHRwczovL2dp
dGh1Yi5jb20vUm9ubnlQZmFubnNjaG1pZHQKKy4uIF9AcmFiYmJpdDogaHR0cHM6Ly9naXRodWIu
Y29tL3JhYmJiaXQKKy4uIF9AaGFja2Vicm90OiBodHRwczovL2dpdGh1Yi5jb20vaGFja2Vicm90
CisuLiBfQHBxdWVudGluOiBodHRwczovL2dpdGh1Yi5jb20vcHF1ZW50aW4KKy4uIF9AaW9nZ3N0
cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL2lvZ2dzdHJlYW0KKworMi44LjcgKDIwMTYtMDEtMjQp
Cis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggIzEzMzg6IHVzZSBwcmVkaWN0YWJsZSBvYmpl
Y3QgcmVzb2x1dGlvbiBmb3IgbW9ua2V5cGF0Y2gKKworMi44LjYgKDIwMTYtMDEtMjEpCis9PT09
PT09PT09PT09PT09PT0KKworLSBmaXggIzEyNTk6IGFsbG93IGZvciBkb3VibGUgbm9kZWlkcyBp
biBqdW5pdHhtbCwKKyAgdGhpcyB3YXMgYSByZWdyZXNzaW9uIGZhaWxpbmcgcGx1Z2lucyBjb21i
aW5hdGlvbnMKKyAgbGlrZSBweXRlc3QtcGVwOCArIHB5dGVzdC1mbGFrZXMKKworLSBXb3JrYXJv
dW5kIGZvciBleGNlcHRpb24gdGhhdCBvY2N1cnMgaW4gcHlyZWFkbGluZSB3aGVuIHVzaW5nCisg
IGBgLS1wZGJgYCB3aXRoIHN0YW5kYXJkIEkvTyBjYXB0dXJlIGVuYWJsZWQuCisgIFRoYW5rcyBF
cmlrIE0uIEJyYXkgZm9yIHRoZSBQUi4KKworLSBmaXggIzkwMDogQmV0dGVyIGVycm9yIG1lc3Nh
Z2UgaW4gY2FzZSB0aGUgdGFyZ2V0IG9mIGEgYGBtb25rZXlwYXRjaGBgIGNhbGwKKyAgcmFpc2Vz
IGFuIGBgSW1wb3J0RXJyb3JgYC4KKworLSBmaXggIzEyOTI6IG1vbmtleXBhdGNoIGNhbGxzIChz
ZXRhdHRyLCBzZXRlbnYsIGV0Yy4pIGFyZSBub3cgTygxKS4KKyAgVGhhbmtzIERhdmlkIFIuIE1h
Y0l2ZXIgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0g
Zml4ICMxMjIzOiBjYXB0dXJlZCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgbm93IHByb3Blcmx5IGRp
c3BsYXllZCBiZWZvcmUKKyAgZW50ZXJpbmcgcGRiIHdoZW4gYGAtLXBkYmBgIGlzIHVzZWQgaW5z
dGVhZCBvZiBiZWluZyB0aHJvd24gYXdheS4KKyAgVGhhbmtzIENhbCBMZWVtaW5nIGZvciB0aGUg
UFIuCisKKy0gZml4ICMxMzA1OiBweXRlc3Qgd2FybmluZ3MgZW1pdHRlZCBkdXJpbmcgYGBweXRl
c3RfdGVybWluYWxfc3VtbWFyeWBgIGFyZSBub3cKKyAgcHJvcGVybHkgZGlzcGxheWVkLgorICBU
aGFua3MgSW9uZWwgTWFyaWVzIENyaXN0aWFuIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2
ZWlyYSBmb3IgdGhlIFBSLgorCistIGZpeCAjNjI4OiBmaXhlZCBpbnRlcm5hbCBVbmljb2RlRGVj
b2RlRXJyb3Igd2hlbiBkb2N0ZXN0cyBjb250YWluIHVuaWNvZGUuCisgIFRoYW5rcyBKYXNvbiBS
LiBDb29tYnMgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisK
Ky0gZml4ICMxMzM0OiBBZGQgY2FwdHVyZWQgc3Rkb3V0IHRvIGpVbml0IFhNTCByZXBvcnQgb24g
c2V0dXAgZXJyb3IuCisgIFRoYW5rcyBHZW9yZ3kgRHl1bGRpbiBmb3IgdGhlIFBSLgorCisKKzIu
OC41ICgyMDE1LTEyLTExKQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4ICMxMjQzOiBmaXhl
ZCBpc3N1ZSB3aGVyZSBjbGFzcyBhdHRyaWJ1dGVzIGluamVjdGVkIGR1cmluZyBjb2xsZWN0aW9u
IGNvdWxkIGJyZWFrIHB5dGVzdC4KKyAgUFIgYnkgQWxleGVpIEtvemxlbm9rLCB0aGFua3MgUm9u
bnkgUGZhbm5zY2htaWR0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIHJldmlldyBhbmQgaGVs
cC4KKworLSBmaXggIzEwNzQ6IHByZWNvbXB1dGUganVuaXR4bWwgY2h1bmtzIGluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgd2hvbGUgdHJlZSBpbiBvYmplY3RzCisgIFRoYW5rcyBCcnVubyBPbGl2ZWly
YSBmb3IgdGhlIHJlcG9ydCBhbmQgUm9ubnkgUGZhbm5zY2htaWR0IGZvciB0aGUgUFIKKworLSBm
aXggIzEyMzg6IGZpeCBgYHB5dGVzdC5kZXByZWNhdGVkX2NhbGwoKWBgIHJlY2VpdmluZyBtdWx0
aXBsZSBhcmd1bWVudHMKKyAgKFJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiAyLjguNCkuIFRoYW5r
cyBBbGV4IEdheW5vciBmb3IgdGhlIHJlcG9ydCBhbmQKKyAgQnJ1bm8gT2xpdmVpcmEgZm9yIHRo
ZSBQUi4KKworCisyLjguNCAoMjAxNS0xMi0wNikKKz09PT09PT09PT09PT09PT09PQorCistIGZp
eCAjMTE5MDogYGBkZXByZWNhdGVkX2NhbGwoKWBgIG5vdyB3b3JrcyB3aGVuIHRoZSBkZXByZWNh
dGVkCisgIGZ1bmN0aW9uIGhhcyBiZWVuIGFscmVhZHkgY2FsbGVkIGJ5IGFub3RoZXIgdGVzdCBp
biB0aGUgc2FtZQorICBtb2R1bGUuIFRoYW5rcyBNaWtoYWlsIENoZXJueWtoIGZvciB0aGUgcmVw
b3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlCisgIFBSLgorCistIGZpeCAjMTE5ODogYGAt
LXBhc3RlYmluYGAgb3B0aW9uIG5vdyB3b3JrcyBvbiBQeXRob24gMy4gVGhhbmtzCisgIE1laGR5
IEtob3Nobm9vZHkgZm9yIHRoZSBQUi4KKworLSBmaXggIzEyMTk6IGBgLS1wYXN0ZWJpbmBgIG5v
dyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBjYXB0dXJlZCBvdXRwdXQgY29udGFpbnMKKyAgbm9uLWFz
Y2lpIGNoYXJhY3RlcnMuIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIGZp
eCAjMTIwNDogYW5vdGhlciBlcnJvciB3aGVuIGNvbGxlY3Rpbmcgd2l0aCBhIG5hc3R5IF9fZ2V0
YXR0cl9fKCkuCisgIFRoYW5rcyBGbG9yaWFuIEJydWhpbiBmb3IgdGhlIFBSLgorCistIGZpeCB0
aGUgc3VtbWFyeSBwcmludGVkIHdoZW4gbm8gdGVzdHMgZGlkIHJ1bi4KKyAgVGhhbmtzIEZsb3Jp
YW4gQnJ1aGluIGZvciB0aGUgUFIuCistIGZpeCAjMTE4NSAtIGVuc3VyZSBNQU5JRkVTVC5pbiBl
eGFjdGx5IG1hdGNoZXMgd2hhdCBzaG91bGQgZ28gdG8gYSBzZGlzdAorCistIGEgbnVtYmVyIG9m
IGRvY3VtZW50YXRpb24gbW9kZXJuaXphdGlvbnMgd3J0IGdvb2QgcHJhY3RpY2VzLgorICBUaGFu
a3MgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworMi44LjMgKDIwMTUtMTEtMTgpCis9PT09
PT09PT09PT09PT09PT0KKworLSBmaXggIzExNjk6IGFkZCBfX25hbWVfXyBhdHRyaWJ1dGUgdG8g
dGVzdGNhc2VzIGluIFRlc3RDYXNlRnVuY3Rpb24gdG8KKyAgc3VwcG9ydCB0aGUgQHVuaXR0ZXN0
LnNraXAgZGVjb3JhdG9yIG9uIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy4KKyAgVGhhbmtzIExlZSBL
YW1lbnRza3kgZm9yIHRoZSBQUi4KKworLSBmaXggIzEwMzU6IGNvbGxlY3RpbmcgdGVzdHMgaWYg
dGVzdCBtb2R1bGUgbGV2ZWwgb2JqIGhhcyBfX2dldGF0dHJfXygpLgorICBUaGFua3MgU3VvciBm
b3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgLyBUb20gVmluZXIgZm9yIHRoZSBQUi4K
KworLSBmaXggIzMzMTogZG9uJ3QgY29sbGVjdCB0ZXN0cyBpZiB0aGVpciBmYWlsdXJlIGNhbm5v
dCBiZSByZXBvcnRlZCBjb3JyZWN0bHkKKyAgZS5nLiB0aGV5IGFyZSBhIGNhbGxhYmxlIGluc3Rh
bmNlIG9mIGEgY2xhc3MuCisKKy0gZml4ICMxMTMzOiBmaXhlZCBpbnRlcm5hbCBlcnJvciB3aGVu
IGZpbHRlcmluZyB0cmFjZWJhY2tzIHdoZXJlIG9uZSBlbnRyeQorICBiZWxvbmdzIHRvIGEgZmls
ZSB3aGljaCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLgorICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEg
Zm9yIHRoZSBQUi4KKworLSBlbmhhbmNlbWVudCBtYWRlIHRvIGhpZ2hsaWdodCBpbiByZWQgdGhl
IG5hbWUgb2YgdGhlIGZhaWxpbmcgdGVzdHMgc28KKyAgdGhleSBzdGFuZCBvdXQgaW4gdGhlIG91
dHB1dC4KKyAgVGhhbmtzIEdhYnJpZWwgUmVpcyBmb3IgdGhlIFBSLgorCistIGFkZCBtb3JlIHRh
bGtzIHRvIHRoZSBkb2N1bWVudGF0aW9uCistIGV4dGVuZCBkb2N1bWVudGF0aW9uIG9uIHRoZSAt
LWlnbm9yZSBjbGkgb3B0aW9uCistIHVzZSBweXRlc3QtcnVubmVyIGZvciBzZXR1cHRvb2xzIGlu
dGVncmF0aW9uCistIG1pbm9yIGZpeGVzIGZvciBpbnRlcmFjdGlvbiB3aXRoIE9TIFggRWwgQ2Fw
aXRhbgorICBzeXN0ZW0gaW50ZWdyaXR5IHByb3RlY3Rpb24gKHRoYW5rcyBGbG9yaWFuKQorCisK
KzIuOC4yICgyMDE1LTEwLTA3KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4ICMxMDg1OiBw
cm9wZXIgaGFuZGxpbmcgb2YgZW5jb2RpbmcgZXJyb3JzIHdoZW4gcGFzc2luZyBlbmNvZGVkIGJ5
dGUKKyAgc3RyaW5ncyB0byBweXRlc3QucGFyYW1ldHJpemUgaW4gUHl0aG9uIDIuCisgIFRoYW5r
cyBUaGVtYW53aXRob3V0YXBsYW4gZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZv
ciB0aGUgUFIuCisKKy0gZml4ICMxMDg3OiBoYW5kbGluZyBTeXN0ZW1FcnJvciB3aGVuIHBhc3Np
bmcgZW1wdHkgYnl0ZSBzdHJpbmdzIHRvCisgIHB5dGVzdC5wYXJhbWV0cml6ZSBpbiBQeXRob24g
My4KKyAgVGhhbmtzIFBhdWwgS2VocmVyIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWly
YSBmb3IgdGhlIFBSLgorCistIGZpeCAjOTk1OiBmaXhlZCBpbnRlcm5hbCBlcnJvciB3aGVuIGZp
bHRlcmluZyB0cmFjZWJhY2tzIHdoZXJlIG9uZSBlbnRyeQorICB3YXMgZ2VuZXJhdGVkIGJ5IGFu
IGV4ZWMoKSBzdGF0ZW1lbnQuCisgIFRoYW5rcyBEYW5pZWwgSGFobGVyLCBBc2hsZXkgQyBTdHJh
dywgUGhpbGlwcGUgR2F1dGhpZXIgYW5kIFBhdmVsIFNhdmNoZW5rbworICBmb3IgY29udHJpYnV0
aW5nIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIGZpeCAjMTEwMCBhbmQgIzEw
NTc6IGVycm9ycyB3aGVuIHVzaW5nIGF1dG91c2UgZml4dHVyZXMgYW5kIGRvY3Rlc3QgbW9kdWxl
cy4KKyAgVGhhbmtzIFNlcmdleSBCIEtpcnBpY2hldiBhbmQgVml0YWwgS3VkemVsa2EgZm9yIGNv
bnRyaWJ1dGluZyBhbmQgQnJ1bm8KKyAgT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworMi44LjEgKDIw
MTUtMDktMjkpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggIzEwMzQ6IEFkZCBtaXNzaW5n
IG5vZGVpZCBvbiBweXRlc3RfbG9nd2FybmluZyBjYWxsIGluCisgIGFkZGhvb2suICBUaGFua3Mg
U2ltb24gR29taXplbGogZm9yIHRoZSBQUi4KKworLSAnZGVwcmVjYXRlZF9jYWxsJyBpcyBub3cg
b25seSBzYXRpc2ZpZWQgd2l0aCBhIERlcHJlY2F0aW9uV2FybmluZyBvcgorICBQZW5kaW5nRGVw
cmVjYXRpb25XYXJuaW5nLiBCZWZvcmUgMi44LjAsIGl0IGFjY2VwdGVkIGFueSB3YXJuaW5nLCBh
bmQgMi44LjAKKyAgbWFkZSBpdCBhY2NlcHQgb25seSBEZXByZWNhdGlvbldhcm5pbmcgKGJ1dCBu
b3QgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykuCisgIFRoYW5rcyBBbGV4IEdheW5vciBmb3Ig
dGhlIGlzc3VlIGFuZCBFcmljIEh1bnNiZXJnZXIgZm9yIHRoZSBQUi4KKworLSBmaXggaXNzdWUg
IzEwNzM6IGF2b2lkIGNhbGxpbmcgX19nZXRhdHRyX18gb24gcG90ZW50aWFsIHBsdWdpbiBvYmpl
Y3RzLgorICBUaGlzIGZpeGVzIGFuIGluY29tcGF0aWJpbGl0eSB3aXRoIHB5dGVzdC1kamFuZ28u
ICBUaGFua3MgQW5kcmVhcyBQZWxtZSwKKyAgQnJ1bm8gT2xpdmVpcmEgYW5kIFJvbm55IFBmYW5u
c2NobWlkdCBmb3IgY29udHJpYnV0aW5nIGFuZCBIb2xnZXIgS3Jla2VsCisgIGZvciB0aGUgZml4
LgorCistIEZpeCBpc3N1ZSAjNzA0OiBoYW5kbGUgdmVyc2lvbmNvbmZsaWN0IGR1cmluZyBwbHVn
aW4gbG9hZGluZyBtb3JlCisgIGdyYWNlZnVsbHkuICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEgZm9y
IHRoZSBQUi4KKworLSBGaXggaXNzdWUgIzEwNjQ6ICIiLS1qdW5pdHhtbCIgcmVncmVzc2lvbiB3
aGVuIHVzZWQgd2l0aCB0aGUKKyAgInB5dGVzdC14ZGlzdCIgcGx1Z2luLCB3aXRoIHRlc3QgcmVw
b3J0cyBiZWluZyBhc3NpZ25lZCB0byB0aGUgd3JvbmcgdGVzdHMuCisgIFRoYW5rcyBEYW5pZWwg
R3J1bndhbGQgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisK
Ky0gKGV4cGVyaW1lbnRhbCkgYWRhcHQgbW9yZSBTRU1WRVIgc3R5bGUgdmVyc2lvbmluZyBhbmQg
Y2hhbmdlIG1lYW5pbmcgb2YKKyAgbWFzdGVyIGJyYW5jaCBpbiBnaXQgcmVwbzogIm1hc3RlciIg
YnJhbmNoIG5vdyBrZWVwcyB0aGUgYnVnIGZpeGVzLCBjaGFuZ2VzCisgIGFpbWVkIGZvciBtaWNy
byByZWxlYXNlcy4gICJmZWF0dXJlcyIgYnJhbmNoIHdpbGwgb25seSBiZSByZWxlYXNlZAorICB3
aXRoIG1pbm9yIG9yIG1ham9yIHB5dGVzdCByZWxlYXNlcy4KKworLSBGaXggaXNzdWUgIzc2NiBi
eSByZW1vdmluZyBkb2N1bWVudGF0aW9uIHJlZmVyZW5jZXMgdG8gZGlzdHV0aWxzLgorICBUaGFu
a3MgUnVzc2VsIFdpbmRlci4KKworLSBGaXggaXNzdWUgIzEwMzA6IG5vdyBieXRlLXN0cmluZ3Mg
YXJlIGVzY2FwZWQgdG8gcHJvZHVjZSBpdGVtIG5vZGUgaWRzCisgIHRvIG1ha2UgdGhlbSBhbHdh
eXMgc2VyaWFsaXphYmxlLgorICBUaGFua3MgQW5keSBGcmVlbGFuZCBmb3IgdGhlIHJlcG9ydCBh
bmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBQeXRob24gMjogaWYgdW5pY29kZSBw
YXJhbWV0cml6ZWQgdmFsdWVzIGFyZSBjb252ZXJ0aWJsZSB0byBhc2NpaSwgdGhlaXIKKyAgYXNj
aWkgcmVwcmVzZW50YXRpb24gaXMgdXNlZCBmb3IgdGhlIG5vZGUgaWQuCisKKy0gRml4IGlzc3Vl
ICM0MTE6IEFkZCBfX2VxX18gbWV0aG9kIHRvIGFzc2VydGlvbiBjb21wYXJpc29uIGV4YW1wbGUu
CisgIFRoYW5rcyBCZW4gV2ViYi4KKy0gRml4IGlzc3VlICM2NTM6IGRlcHJlY2F0ZWRfY2FsbCBj
YW4gYmUgdXNlZCBhcyBjb250ZXh0IG1hbmFnZXIuCisKKy0gZml4IGlzc3VlIDg3NzogcHJvcGVy
bHkgaGFuZGxlIGFzc2VydGlvbiBleHBsYW5hdGlvbnMgd2l0aCBub24tYXNjaWkgcmVwcgorICBU
aGFua3MgTWF0aGlldSBBZ29waWFuIGZvciB0aGUgcmVwb3J0IGFuZCBSb25ueSBQZmFubnNjaG1p
ZHQgZm9yIHRoZSBQUi4KKworLSBmaXggaXNzdWUgMTAyOTogdHJhbnNmb3JtIGVycm9ycyB3aGVu
IHdyaXRpbmcgY2FjaGUgdmFsdWVzIGludG8gcHl0ZXN0LXdhcm5pbmdzCisKKzIuOC4wICgyMDE1
LTA5LTE4KQorPT09PT09PT09PT09PT09PT09CisKKy0gbmV3IGBgLS1sZmBgIGFuZCBgYC1mZmBg
IG9wdGlvbnMgdG8gcnVuIG9ubHkgdGhlIGxhc3QgZmFpbGluZyB0ZXN0cyBvcgorICAiZmFpbGlu
ZyB0ZXN0cyBmaXJzdCIgZnJvbSB0aGUgbGFzdCBydW4uICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMg
cHJvdmlkZWQKKyAgdGhyb3VnaCBwb3J0aW5nIHRoZSBmb3JtZXJseSBleHRlcm5hbCBweXRlc3Qt
Y2FjaGUgcGx1Z2luIGludG8gcHl0ZXN0IGNvcmUuCisgIEJBQ0tXQVJEIElOQ09NUEFUOiBpZiB5
b3UgdXNlZCBweXRlc3QtY2FjaGUncyBmdW5jdGlvbmFsaXR5IHRvIHBlcnNpc3QKKyAgZGF0YSBi
ZXR3ZWVuIHRlc3QgcnVucyBiZSBhd2FyZSB0aGF0IHdlIGRvbid0IHNlcmlhbGl6ZSBzZXRzIGFu
eW1vcmUuCisgIFRoYW5rcyBSb25ueSBQZmFubnNjaG1pZHQgZm9yIG1vc3Qgb2YgdGhlIG1lcmdp
bmcgd29yay4KKworLSAiLXIiIG9wdGlvbiBub3cgYWNjZXB0cyAiYSIgdG8gaW5jbHVkZSBhbGwg
cG9zc2libGUgcmVwb3J0cywgc2ltaWxhcgorICB0byBwYXNzaW5nICJmRXN4WHciIGV4cGxpY2l0
bHkgKGlzc3VlOTYwKS4KKyAgVGhhbmtzIEFiaGlqZWV0IEthc3VyZGUgZm9yIHRoZSBQUi4KKwor
LSBhdm9pZCBweXRob24zLjUgZGVwcmVjYXRpb24gd2FybmluZ3MgYnkgaW50cm9kdWNpbmcgdmVy
c2lvbgorICBzcGVjaWZpYyBpbnNwZWN0aW9uIGhlbHBlcnMsIHRoYW5rcyBNaWNoYWVsIERyb2V0
dGJvb20uCisKKy0gZml4IGlzc3VlNTYyOiBAbm9zZS50b29scy5pc3Rlc3Qgbm93IGZ1bGx5IHJl
c3BlY3RlZC4KKworLSBmaXggaXNzdWU5MzQ6IHdoZW4gc3RyaW5nIGNvbXBhcmlzb24gZmFpbHMg
YW5kIGEgZGlmZiBpcyB0b28gbGFyZ2UgdG8gZGlzcGxheQorICB3aXRob3V0IHBhc3NpbmcgLXZ2
LCBzdGlsbCBzaG93IGEgZmV3IGxpbmVzIG9mIHRoZSBkaWZmLgorICBUaGFua3MgRmxvcmlhbiBC
cnVoaW4gZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0g
Zml4IGlzc3VlNzM2OiBGaXggYSBidWcgd2hlcmUgZml4dHVyZSBwYXJhbXMgd291bGQgYmUgZGlz
Y2FyZGVkIHdoZW4gY29tYmluZWQKKyAgd2l0aCBwYXJhbWV0cml6YXRpb24gbWFya2Vycy4KKyAg
VGhhbmtzIHRvIE1hcmt1cyBVbnRlcndhZGl0emVyIGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3Vl
NzEwOiBpbnRyb2R1Y2UgQUxMT1dfVU5JQ09ERSBkb2N0ZXN0IG9wdGlvbjogd2hlbiBlbmFibGVk
LCB0aGUKKyAgYGB1YGAgcHJlZml4IGlzIHN0cmlwcGVkIGZyb20gdW5pY29kZSBzdHJpbmdzIGlu
IGV4cGVjdGVkIGRvY3Rlc3Qgb3V0cHV0LiBUaGlzCisgIGFsbG93cyBkb2N0ZXN0cyB3aGljaCB1
c2UgdW5pY29kZSB0byBydW4gaW4gUHl0aG9uIDIgYW5kIDMgdW5jaGFuZ2VkLgorICBUaGFua3Mg
SmFzb24gUi4gQ29vbWJzIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhl
IFBSLgorCistIHBhcmFtZXRyaXplIG5vdyBhbHNvIGdlbmVyYXRlcyBtZWFuaW5nZnVsIHRlc3Qg
SURzIGZvciBlbnVtLCByZWdleCBhbmQgY2xhc3MKKyAgb2JqZWN0cyAoYXMgb3Bwb3NlZCB0byBj
bGFzcyBpbnN0YW5jZXMpLgorICBUaGFua3MgdG8gRmxvcmlhbiBCcnVoaW4gZm9yIHRoZSBQUi4K
KworLSBBZGQgJ3dhcm5zJyB0byBhc3NlcnQgdGhhdCB3YXJuaW5ncyBhcmUgdGhyb3duIChsaWtl
ICdyYWlzZXMnKS4KKyAgVGhhbmtzIHRvIEVyaWMgSHVuc2JlcmdlciBmb3IgdGhlIFBSLgorCist
IEZpeCBpc3N1ZTY4MzogRG8gbm90IGFwcGx5IGFuIGFscmVhZHkgYXBwbGllZCBtYXJrLiAgVGhh
bmtzIG9qYWtlIGZvciB0aGUgUFIuCisKKy0gRGVhbCB3aXRoIGNhcHR1cmluZyBmYWlsdXJlcyBi
ZXR0ZXIgc28gZmV3ZXIgZXhjZXB0aW9ucyBnZXQgbG9zdCB0bworICAvZGV2L251bGwuICBUaGFu
a3MgRGF2aWQgU3pvdHRlbiBmb3IgdGhlIFBSLgorCistIGZpeCBpc3N1ZTczMDogZGVwcmVjYXRl
IGFuZCB3YXJuIGFib3V0IHRoZSAtLWdlbnNjcmlwdCBvcHRpb24uCisgIFRoYW5rcyBSb25ueSBQ
ZmFubnNjaG1pZHQgZm9yIHRoZSByZXBvcnQgYW5kIENocmlzdGlhbiBQb21tcmFueiBmb3IgdGhl
IFBSLgorCistIGZpeCBpc3N1ZTc1MTogbXVsdGlwbGUgcGFyYW1ldHJpemUgd2l0aCBpZHMgYnVn
IGlmIGl0IHBhcmFtZXRyaXplcyBjbGFzcyB3aXRoCisgIHR3byBvciBtb3JlIHRlc3QgbWV0aG9k
cy4gVGhhbmtzIFNlcmdleSBDaGlwaWdhIGZvciByZXBvcnRpbmcgYW5kIEphbgorICBCZWRuYXJp
ayBmb3IgUFIuCisKKy0gZml4IGlzc3VlODI6IGF2b2lkIGxvYWRpbmcgY29uZnRlc3QgZmlsZXMg
ZnJvbSBzZXR1cC5jZmcvcHl0ZXN0LmluaS90b3guaW5pCisgIGZpbGVzIGFuZCB1cHdhcmRzIGJ5
IGRlZmF1bHQgKC0tY29uZmN1dGRpciBjYW4gc3RpbGwgYmUgc2V0IHRvIG92ZXJyaWRlIHRoaXMp
LgorICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBmaXggaXNzdWU3Njg6
IGRvY3N0cmluZ3MgZm91bmQgaW4gcHl0aG9uIG1vZHVsZXMgd2VyZSBub3Qgc2V0dGluZyB1cCBz
ZXNzaW9uCisgIGZpeHR1cmVzLiBUaGFua3MgSmFzb24gUi4gQ29vbWJzIGZvciByZXBvcnRpbmcg
YW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gYWRkZWQgYGB0bXBkaXJfZmFjdG9y
eWBgLCBhIHNlc3Npb24tc2NvcGVkIGZpeHR1cmUgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUK
KyAgZGlyZWN0b3JpZXMgdW5kZXIgdGhlIGJhc2UgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gUHJldmlv
dXNseSB0aGlzIG9iamVjdCB3YXMKKyAgaW5zdGFsbGVkIGFzIGEgYGBfdG1wZGlyaGFuZGxlcmBg
IGF0dHJpYnV0ZSBvZiB0aGUgYGBjb25maWdgYCBvYmplY3QsIGJ1dCBub3cgaXQKKyAgaXMgcGFy
dCBvZiB0aGUgb2ZmaWNpYWwgQVBJIGFuZCB1c2luZyBgYGNvbmZpZy5fdG1wZGlyaGFuZGxlcmBg
IGlzCisgIGRlcHJlY2F0ZWQuCisgIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgor
CistIGZpeCBpc3N1ZTgwODogcHl0ZXN0J3MgaW50ZXJuYWwgYXNzZXJ0aW9uIHJld3JpdGUgaG9v
ayBub3cgaW1wbGVtZW50cyB0aGUKKyAgb3B0aW9uYWwgUEVQMzAyIGdldF9kYXRhIEFQSSBzbyB0
ZXN0cyBjYW4gYWNjZXNzIGRhdGEgZmlsZXMgbmV4dCB0byB0aGVtLgorICBUaGFua3MgeG1vLW9k
b28gZm9yIHJlcXVlc3QgYW5kIGV4YW1wbGUgYW5kIEJydW5vIE9saXZlaXJhIGZvcgorICB0aGUg
UFIuCisKKy0gcm9vdGRpciBhbmQgaW5pZmlsZSBhcmUgbm93IGRpc3BsYXllZCBkdXJpbmcgdXNh
Z2UgZXJyb3JzIHRvIGhlbHAKKyAgdXNlcnMgZGlhZ25vc2UgcHJvYmxlbXMgc3VjaCBhcyB1bmV4
cGVjdGVkIGluaSBmaWxlcyB3aGljaCBhZGQKKyAgdW5rbm93biBvcHRpb25zIGJlaW5nIHBpY2tl
ZCB1cCBieSBweXRlc3QuIFRoYW5rcyB0byBQYXZlbCBTYXZjaGVua28gZm9yCisgIGJyaW5naW5n
IHRoZSBwcm9ibGVtIHRvIGF0dGVudGlvbiBpbiAjODIxIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3Ig
dGhlIFBSLgorCistIFN1bW1hcnkgYmFyIG5vdyBpcyBjb2xvcmVkIHllbGxvdyBmb3Igd2Fybmlu
ZworICBzaXR1YXRpb25zIHN1Y2ggYXM6IGFsbCB0ZXN0cyBlaXRoZXIgd2VyZSBza2lwcGVkIG9y
IHhwYXNzL3hmYWlsZWQsCisgIG9yIG5vIHRlc3RzIHdlcmUgcnVuIGF0IGFsbCAodGhpcyBpcyBh
IHBhcnRpYWwgZml4IGZvciBpc3N1ZTUwMCkuCisKKy0gZml4IGlzc3VlODEyOiBweXRlc3Qgbm93
IGV4aXRzIHdpdGggc3RhdHVzIGNvZGUgNSBpbiBzaXR1YXRpb25zIHdoZXJlIG5vCisgIHRlc3Rz
IHdlcmUgcnVuIGF0IGFsbCwgc3VjaCBhcyB0aGUgZGlyZWN0b3J5IGdpdmVuIGluIHRoZSBjb21t
YW5kIGxpbmUgZG9lcworICBub3QgY29udGFpbiBhbnkgdGVzdHMgb3IgYXMgcmVzdWx0IG9mIGEg
Y29tbWFuZCBsaW5lIG9wdGlvbiBmaWx0ZXJzCisgIGFsbCBvdXQgYWxsIHRlc3RzICgtayBmb3Ig
ZXhhbXBsZSkuCisgIFRoYW5rcyBFcmljIFNpZWdlcm1hbiAoaXNzdWU4MTIpIGFuZCBCcnVubyBP
bGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIFN1bW1hcnkgYmFyIG5vdyBpcyBjb2xvcmVkIHllbGxv
dyBmb3Igd2FybmluZworICBzaXR1YXRpb25zIHN1Y2ggYXM6IGFsbCB0ZXN0cyBlaXRoZXIgd2Vy
ZSBza2lwcGVkIG9yIHhwYXNzL3hmYWlsZWQsCisgIG9yIG5vIHRlc3RzIHdlcmUgcnVuIGF0IGFs
bCAocmVsYXRlZCB0byBpc3N1ZTUwMCkuCisgIFRoYW5rcyBFcmljIFNpZWdlcm1hbi4KKworLSBO
ZXcgYGB0ZXN0cGF0aHNgYCBpbmkgb3B0aW9uOiBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJj
aCBmb3IgdGVzdHMKKyAgd2hlbiBleGVjdXRpbmcgcHl0ZXN0IGZyb20gdGhlIHJvb3QgZGlyZWN0
b3J5LiBUaGlzIGNhbiBiZSB1c2VkCisgIHRvIHNwZWVkIHVwIHRlc3QgY29sbGVjdGlvbiB3aGVu
IGEgcHJvamVjdCBoYXMgd2VsbCBzcGVjaWZpZWQgZGlyZWN0b3JpZXMKKyAgZm9yIHRlc3RzLCBi
ZWluZyB1c3VhbGx5IG1vcmUgcHJhY3RpY2FsIHRoYW4gY29uZmlndXJpbmcgbm9yZWN1cnNlZGly
cyBmb3IKKyAgYWxsIGRpcmVjdG9yaWVzIHRoYXQgZG8gbm90IGNvbnRhaW4gdGVzdHMuCisgIFRo
YW5rcyB0byBBZHJpYW4gZm9yIGlkZWEgKCM2OTQpIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhl
IFBSLgorCistIGZpeCBpc3N1ZTcxMzogSlVuaXQgWE1MIHJlcG9ydHMgZm9yIGRvY3Rlc3QgZmFp
bHVyZXMuCisgIFRoYW5rcyBQdW55YXNobG9rYSBCaXN3YWwuCisKKy0gZml4IGlzc3VlOTcwOiBp
bnRlcm5hbCBweXRlc3Qgd2FybmluZ3Mgbm93IGFwcGVhciBhcyAicHl0ZXN0LXdhcm5pbmdzIiBp
bgorICB0aGUgdGVybWluYWwgaW5zdGVhZCBvZiAid2FybmluZ3MiLCBzbyBpdCBpcyBjbGVhciBm
b3IgdXNlcnMgdGhhdCB0aG9zZQorICB3YXJuaW5ncyBhcmUgZnJvbSBweXRlc3QgYW5kIG5vdCBm
cm9tIHRoZSBidWlsdGluICJ3YXJuaW5ncyIgbW9kdWxlLgorICBUaGFua3MgQnJ1bm8gT2xpdmVp
cmEuCisKKy0gSW5jbHVkZSBzZXR1cCBhbmQgdGVhcmRvd24gaW4ganVuaXR4bWwgdGVzdCBkdXJh
dGlvbnMuCisgIFRoYW5rcyBKYW5uZSBWYW5oYWxhLgorCistIGZpeCBpc3N1ZTczNTogYXNzZXJ0
aW9uIGZhaWx1cmVzIG9uIGRlYnVnIHZlcnNpb25zIG9mIFB5dGhvbiAzLjQrCisKKy0gbmV3IG9w
dGlvbiBgYC0taW1wb3J0LW1vZGVgYCB0byBhbGxvdyB0byBjaGFuZ2UgdGVzdCBtb2R1bGUgaW1w
b3J0aW5nCisgIGJlaGF2aW91ciB0byBhcHBlbmQgdG8gc3lzLnBhdGggaW5zdGVhZCBvZiBwcmVw
ZW5kaW5nLiAgVGhpcyBiZXR0ZXIgYWxsb3dzCisgIHRvIHJ1biB0ZXN0IG1vZHVsZXMgYWdhaW5z
dCBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgYSBwYWNrYWdlIGV2ZW4gaWYgdGhlCisgIHBhY2thZ2Ug
dW5kZXIgdGVzdCBoYXMgdGhlIHNhbWUgaW1wb3J0IHJvb3QuICBJbiB0aGlzIGV4YW1wbGU6Ogor
CisgICAgICAgIHRlc3RpbmcvX19pbml0X18ucHkKKyAgICAgICAgdGVzdGluZy90ZXN0X3BrZ191
bmRlcl90ZXN0LnB5CisgICAgICAgIHBrZ191bmRlcl90ZXN0LworCisgIHRoZSB0ZXN0cyB3aWxs
IHJ1biBhZ2FpbnN0IHRoZSBpbnN0YWxsZWQgdmVyc2lvbgorICBvZiBwa2dfdW5kZXJfdGVzdCB3
aGVuIGBgLS1pbXBvcnQtbW9kZT1hcHBlbmRgYCBpcyB1c2VkIHdoZXJlYXMKKyAgYnkgZGVmYXVs
dCB0aGV5IHdvdWxkIGFsd2F5cyBwaWNrIHVwIHRoZSBsb2NhbCB2ZXJzaW9uLiAgVGhhbmtzIEhv
bGdlciBLcmVrZWwuCisKKy0gcHl0ZXN0ZXI6IGFkZCBtZXRob2QgYGBUbXBUZXN0ZGlyLmRlbGV0
ZV9sb2FkZWRfbW9kdWxlcygpYGAsIGFuZCBjYWxsIGl0CisgIGZyb20gYGBpbmxpbmVfcnVuKClg
YCB0byBhbGxvdyB0ZW1wb3JhcnkgbW9kdWxlcyB0byBiZSByZWxvYWRlZC4KKyAgVGhhbmtzIEVk
dWFyZG8gU2NoZXR0aW5vLgorCistIGludGVybmFsbHkgcmVmYWN0b3IgcGx1Z2lubWFuYWdlciBB
UEkgYW5kIGNvZGUgc28gdGhhdCB0aGVyZQorICBpcyBhIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdl
ZW4gYSBweXRlc3QtYWdub3N0aWMgcmF0aGVyIHNpbXBsZQorICBwbHVnaW5tYW5hZ2VyIGFuZCB0
aGUgUHl0ZXN0UGx1Z2luTWFuYWdlciB3aGljaCBhZGRzIGEgbG90IG9mCisgIGJlaGF2aW91ciwg
YW1vbmcgaXQgaGFuZGxpbmcgb2YgdGhlIGxvY2FsIGNvbmZ0ZXN0IGZpbGVzLgorICBJbiB0ZXJt
cyBvZiBkb2N1bWVudGVkIG1ldGhvZHMgdGhpcyBpcyBhIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAg
Y2hhbmdlIGJ1dCBpdCBtaWdodCBzdGlsbCBicmVhayAzcmQgcGFydHkgcGx1Z2lucyB3aGljaCBy
ZWxpZWQgb24KKyAgZGV0YWlscyBsaWtlIGVzcGVjaWFsbHkgdGhlIHBsdWdpbm1hbmFnZXIuYWRk
X3NodXRkb3duKCkgQVBJLgorICBUaGFua3MgSG9sZ2VyIEtyZWtlbC4KKworLSBwbHVnaW5tYW5h
Z2VtZW50OiBpbnRyb2R1Y2UgYGBweXRlc3QuaG9va2ltcGxgYCBhbmQKKyAgYGBweXRlc3QuaG9v
a3NwZWNgYCBkZWNvcmF0b3JzIGZvciBzZXR0aW5nIGltcGwvc3BlYworICBzcGVjaWZpYyBwYXJh
bWV0ZXJzLiAgVGhpcyBzdWJzdGl0dXRlcyB0aGUgcHJldmlvdXMKKyAgbm93IGRlcHJlY2F0ZWQg
dXNlIG9mIGBgcHl0ZXN0Lm1hcmtgYCB3aGljaCBpcyBtZWFudCB0bworICBjb250YWluIG1hcmtl
cnMgZm9yIHRlc3QgZnVuY3Rpb25zIG9ubHkuCisKKy0gd3JpdGUvcmVmaW5lIGRvY3MgZm9yICJ3
cml0aW5nIHBsdWdpbnMiIHdoaWNoIG5vdyBoYXZlIHRoZWlyCisgIG93biBwYWdlIGFuZCBhcmUg
c2VwYXJhdGUgZnJvbSB0aGUgInVzaW5nL2luc3RhbGxpbmcgcGx1Z2luc2BgIHBhZ2UuCisKKy0g
Zml4IGlzc3VlNzMyOiBwcm9wZXJseSB1bnJlZ2lzdGVyIHBsdWdpbnMgZnJvbSBhbnkgaG9vayBj
YWxsaW5nCisgIHNpdGVzIGFsbG93aW5nIHRvIGhhdmUgdGVtcG9yYXJ5IHBsdWdpbnMgZHVyaW5n
IHRlc3QgZXhlY3V0aW9uLgorCistIGRlcHJlY2F0ZSBhbmQgd2FybiBhYm91dCBgYF9fbXVsdGlj
YWxsX19gYCBhcmd1bWVudCBpbiBob29rCisgIGltcGxlbWVudGF0aW9ucy4gIFVzZSB0aGUgYGBo
b29rd3JhcHBlcmBgIG1lY2hhbmlzbSBpbnN0ZWFkIGFscmVhZHkKKyAgaW50cm9kdWNlZCB3aXRo
IHB5dGVzdC0yLjcuCisKKy0gc3BlZWQgdXAgcHl0ZXN0J3Mgb3duIHRlc3Qgc3VpdGUgY29uc2lk
ZXJhYmx5IGJ5IHVzaW5nIGlucHJvY2VzcworICB0ZXN0cyBieSBkZWZhdWx0ICh0ZXN0cnVuIGNh
biBiZSBtb2RpZmllZCB3aXRoIC0tcnVucHl0ZXN0PXN1YnByb2Nlc3MKKyAgdG8gY3JlYXRlIHN1
YnByb2Nlc3NlcyBpbiBtYW55IHBsYWNlcyBpbnN0ZWFkKS4gIFRoZSBtYWluCisgIEFQSXMgdG8g
cnVuIHB5dGVzdCBpbiBhIHRlc3QgaXMgInJ1bnB5dGVzdCgpIiBvciAicnVucHl0ZXN0X3N1YnBy
b2Nlc3MiCisgIGFuZCAicnVucHl0ZXN0X2lucHJvY2VzcyIgaWYgeW91IG5lZWQgYSBwYXJ0aWN1
bGFyIHdheSBvZiBydW5uaW5nCisgIHRoZSB0ZXN0LiAgSW4gYWxsIGNhc2VzIHlvdSBnZXQgYmFj
ayBhIFJ1blJlc3VsdCBidXQgdGhlIGlucHJvY2VzcworICBvbmUgd2lsbCBhbHNvIGhhdmUgYSAi
cmVwcmVjIiBhdHRyaWJ1dGUgd2l0aCB0aGUgcmVjb3JkZWQgZXZlbnRzL3JlcG9ydHMuCisKKy0g
Zml4IG1vbmtleXBhdGNoLnNldGF0dHIoIngueSIsIHJhaXNpbmc9RmFsc2UpIHRvIGFjdHVhbGx5
IG5vdCByYWlzZQorICBpZiAieSIgaXMgbm90IGEgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZS4gVGhh
bmtzIEZsb3JpYW4gQnJ1aGluLgorCistIGZpeCBpc3N1ZTc0MTogbWFrZSBydW5uaW5nIG91dHB1
dCBmcm9tIHRlc3RkaXIucnVuIGNvcHkvcGFzdGVhYmxlCisgIFRoYW5rcyBCcnVubyBPbGl2ZWly
YS4KKworLSBhZGQgYSBuZXcgYGAtLW5vY29uZnRlc3RgYCBhcmd1bWVudCB3aGljaCBpZ25vcmVz
IGFsbCBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMuCisKKy0gYWRkIGBgZmlsZWBgIGFuZCBgYGxpbmVg
YCBhdHRyaWJ1dGVzIHRvIEpVbml0LVhNTCBvdXRwdXQuCisKKy0gZml4IGlzc3VlODkwOiBjaGFu
Z2VkIGV4dGVuc2lvbiBvZiBhbGwgZG9jdW1lbnRhdGlvbiBmaWxlcyBmcm9tIGBgdHh0YGAgdG8K
KyAgYGByc3RgYC4gVGhhbmtzIHRvIEFiaGlqZWV0IGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3Vl
NzE0OiBhZGQgYWJpbGl0eSB0byBhcHBseSBpbmRpcmVjdD1UcnVlIHBhcmFtZXRlciBvbiBwYXJ0
aWN1bGFyIGFyZ25hbWVzLgorICBUaGFua3MgRWxpemF2ZXRhMjM5LgorCistIGZpeCBpc3N1ZTg5
MDogY2hhbmdlZCBleHRlbnNpb24gb2YgYWxsIGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSBgYHR4
dGBgIHRvCisgIGBgcnN0YGAuIFRoYW5rcyB0byBBYmhpamVldCBmb3IgdGhlIFBSLgorCistIGZp
eCBpc3N1ZTk1NzogIiMgZG9jdGVzdDogU0tJUCIgb3B0aW9uIHdpbGwgbm93IHJlZ2lzdGVyIGRv
Y3Rlc3RzIGFzIFNLSVBQRUQKKyAgcmF0aGVyIHRoYW4gUEFTU0VELgorICBUaGFua3MgVGhvbWFz
IEdyYWluZ2VyIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgor
CistIGlzc3VlOTUxOiBhZGQgbmV3IHJlY29yZF94bWxfcHJvcGVydHkgZml4dHVyZSwgdGhhdCBz
dXBwb3J0cyBsb2dnaW5nCisgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24geG1sIG91dHB1dC4g
VGhhbmtzIERhdmlkIERpYXogZm9yIHRoZSBQUi4KKworLSBpc3N1ZTk0OTogcGF0aHMgYWZ0ZXIg
bm9ybWFsIG9wdGlvbnMgKGZvciBleGFtcGxlIGBgLXNgYCwgYGAtdmBgLCBldGMpIGFyZSBub3cK
KyAgcHJvcGVybHkgdXNlZCB0byBkaXNjb3ZlciBgYHJvb3RkaXJgYCBhbmQgYGBpbmlgYCBmaWxl
cy4KKyAgVGhhbmtzIFBldGVyIExhdXJpIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWly
YSBmb3IgdGhlIFBSLgorCisyLjcuMyAoMjAxNS0wOS0xNSkKKz09PT09PT09PT09PT09PT09PQor
CistIEFsbG93ICdkZXYnLCAncmMnLCBvciBvdGhlciBub24taW50ZWdlciB2ZXJzaW9uIHN0cmlu
Z3MgaW4gYGBpbXBvcnRvcnNraXBgYC4KKyAgVGhhbmtzIHRvIEVyaWMgSHVuc2JlcmdlciBmb3Ig
dGhlIFBSLgorCistIGZpeCBpc3N1ZTg1NjogY29uc2lkZXIgLS1jb2xvciBwYXJhbWV0ZXIgaW4g
YWxsIG91dHB1dHMgKGZvciBleGFtcGxlCisgIC0tZml4dHVyZXMpLiBUaGFua3MgQmFybmV5IEdh
bGUgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gZml4
IGlzc3VlODU1OiBwYXNzaW5nIHN0ciBvYmplY3RzIGFzIGBgcGx1Z2luc2BgIGFyZ3VtZW50IHRv
IHB5dGVzdC5tYWluCisgIGlzIG5vdyBpbnRlcnByZXRlZCBhcyBhIG1vZHVsZSBuYW1lIHRvIGJl
IGltcG9ydGVkIGFuZCByZWdpc3RlcmVkIGFzIGEKKyAgcGx1Z2luLCBpbnN0ZWFkIG9mIHNpbGVu
dGx5IGhhdmluZyBubyBlZmZlY3QuCisgIFRoYW5rcyB4bW8tb2RvbyBmb3IgdGhlIHJlcG9ydCBh
bmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBmaXggaXNzdWU3NDQ6IGZpeCBmb3Ig
YXN0LkNhbGwgY2hhbmdlcyBpbiBQeXRob24gMy41Ky4gIFRoYW5rcworICBHdWlkbyB2YW4gUm9z
c3VtLCBNYXR0aGlhcyBCdXNzb25uaWVyLCBTdGVmYW4gWmltbWVybWFubiBhbmQKKyAgVGhvbWFz
IEtsdXl2ZXIuCisKKy0gZml4IGlzc3VlODQyOiBhcHBseWluZyBtYXJrZXJzIGluIGNsYXNzZXMg
bm8gbG9uZ2VyIHByb3BhZ2F0ZSB0aGlzIG1hcmtlcnMKKyAgdG8gc3VwZXJjbGFzc2VzIHdoaWNo
IGFsc28gaGF2ZSBtYXJrZXJzLgorICBUaGFua3MgeG1vLW9kb28gZm9yIHRoZSByZXBvcnQgYW5k
IEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gcHJlc2VydmUgd2FybmluZyBmdW5jdGlv
bnMgYWZ0ZXIgY2FsbCB0byBweXRlc3QuZGVwcmVjYXRlZF9jYWxsLiBUaGFua3MKKyAgUGlldGVy
IE11bGRlciBmb3IgUFIuCisKKy0gZml4IGlzc3VlODU0OiBhdXRvdXNlIHlpZWxkX2ZpeHR1cmVz
IGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZgorICB1bml0dGVzdC5UZXN0Q2FzZSBzdWJjbGFz
c2VzIG5vdyB3b3JrIGFzIGV4cGVjdGVkLgorICBUaGFubmtzIHhtby1vZG9vIGZvciB0aGUgcmVw
b3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIGZpeCBpc3N1ZTgzMzogLS1m
aXh0dXJlcyBub3cgc2hvd3MgYWxsIGZpeHR1cmVzIG9mIGNvbGxlY3RlZCB0ZXN0IGZpbGVzLCBp
bnN0ZWFkIG9mIGp1c3QgdGhlCisgIGZpeHR1cmVzIGRlY2xhcmVkIG9uIHRoZSBmaXJzdCBvbmUu
CisgIFRoYW5rcyBGbG9yaWFuIEJydWhpbiBmb3IgcmVwb3J0aW5nIGFuZCBCcnVubyBPbGl2ZWly
YSBmb3IgdGhlIFBSLgorCistIGZpeCBpc3N1ZTg2Mzogc2tpcHBlZCB0ZXN0cyBub3cgcmVwb3J0
IHRoZSBjb3JyZWN0IHJlYXNvbiB3aGVuIGEgc2tpcC94ZmFpbAorICBjb25kaXRpb24gaXMgbWV0
IHdoZW4gdXNpbmcgbXVsdGlwbGUgbWFya2Vycy4KKyAgVGhhbmtzIFJhcGhhZWwgUGllcnppbmEg
Zm9yIHJlcG9ydGluZyBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBvcHRpbWl6
ZWQgdG1wZGlyIGZpeHR1cmUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIHNob3VsZCBtYWtlIHRlc3Qg
c2Vzc2lvbnMKKyAgZmFzdGVyIChzcGVjaWFsbHkgd2hlbiB1c2luZyBweXRlc3QteGRpc3QpLiBU
aGUgb25seSB2aXNpYmxlIGVmZmVjdAorICBpcyB0aGF0IG5vdyBweXRlc3QgdXNlcyBhIHN1YmRp
cmVjdG9yeSBpbiB0aGUgJFRFTVAgZGlyZWN0b3J5IGZvciBhbGwKKyAgZGlyZWN0b3JpZXMgY3Jl
YXRlZCBieSB0aGlzIGZpeHR1cmUgKGRlZmF1bHRzIHRvICRURU1QL3B5dGVzdC0kVVNFUikuCisg
IFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCisyLjcuMiAoMjAxNS0wNi0yMykK
Kz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTc2NzogcHl0ZXN0LnJhaXNlcyB2YWx1
ZSBhdHRyaWJ1dGUgZG9lcyBub3QgY29udGFpbiB0aGUgZXhjZXB0aW9uCisgIGluc3RhbmNlIG9u
IFB5dGhvbiAyLjYuIFRoYW5rcyBFcmljIFNpZWdlcm1hbiBmb3IgcHJvdmlkaW5nIHRoZSB0ZXN0
CisgIGNhc2UgYW5kIEJydW5vIE9saXZlaXJhIGZvciBQUi4KKworLSBBdXRvbWF0aWNhbGx5IGNy
ZWF0ZSBkaXJlY3RvcnkgZm9yIGp1bml0eG1sIGFuZCByZXN1bHRzIGxvZy4KKyAgVGhhbmtzIEFy
b24gQ3Vyem9uLgorCistIGZpeCBpc3N1ZTcxMzogSlVuaXQgWE1MIHJlcG9ydHMgZm9yIGRvY3Rl
c3QgZmFpbHVyZXMuCisgIFRoYW5rcyBQdW55YXNobG9rYSBCaXN3YWwuCisKKy0gZml4IGlzc3Vl
NzM1OiBhc3NlcnRpb24gZmFpbHVyZXMgb24gZGVidWcgdmVyc2lvbnMgb2YgUHl0aG9uIDMuNCsK
KyAgVGhhbmtzIEJlbmphbWluIFBldGVyc29uLgorCistIGZpeCBpc3N1ZTExNDogc2tpcGlmIG1h
cmtlciByZXBvcnRzIHRvIGludGVybmFsIHNraXBwaW5nIHBsdWdpbjsKKyAgVGhhbmtzIEZsb3Jp
cyBCcnV5bm9vZ2hlIGZvciByZXBvcnRpbmcgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIu
CisKKy0gZml4IGlzc3VlNzQ4OiB1bml0dGVzdC5Ta2lwVGVzdCByZXBvcnRzIHRvIGludGVybmFs
IHB5dGVzdCB1bml0dGVzdCBwbHVnaW4uCisgIFRoYW5rcyBUaG9tYXMgRGUgU2NoYW1waGVsZWly
ZSBmb3IgcmVwb3J0aW5nIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIGZpeCBp
c3N1ZTcxODogZmFpbGVkIHRvIGNyZWF0ZSByZXByZXNlbnRhdGlvbiBvZiBzZXRzIGNvbnRhaW5p
bmcgdW5zb3J0YWJsZQorICBlbGVtZW50cyBpbiBweXRob24gMi4gVGhhbmtzIEVkaXNvbiBHdXN0
YXZvIE11ZW56LgorCistIGZpeCBpc3N1ZTc1NiwgZml4IGlzc3VlNzUyIChhbmQgc2ltaWxhciBp
c3N1ZXMpOiBkZXBlbmQgb24gcHktMS40LjI5CisgIHdoaWNoIGhhcyBhIHJlZmluZWQgYWxnb3Jp
dGhtIGZvciB0cmFjZWJhY2sgZ2VuZXJhdGlvbi4KKworCisyLjcuMSAoMjAxNS0wNS0xOSkKKz09
PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTczMTogZG8gbm90IGdldCBjb25mdXNlZCBi
eSB0aGUgYnJhY2VzIHdoaWNoIG1heSBiZSBwcmVzZW50CisgIGFuZCB1bmJhbGFuY2VkIGluIGFu
IG9iamVjdCdzIHJlcHIgd2hpbGUgY29sbGFwc2luZyBGYWxzZQorICBleHBsYW5hdGlvbnMuICBU
aGFua3MgQ2FybCBNZXllciBmb3IgdGhlIHJlcG9ydCBhbmQgdGVzdCBjYXNlLgorCistIGZpeCBp
c3N1ZTU1MzogcHJvcGVybHkgaGFuZGxpbmcgaW5zcGVjdC5nZXRzb3VyY2VsaW5lcyBmYWlsdXJl
cyBpbgorICBGaXh0dXJlTG9va3VwRXJyb3Igd2hpY2ggd291bGQgbGVhZCB0byBhbiBpbnRlcm5h
bCBlcnJvciwKKyAgb2JmdXNjYXRpbmcgdGhlIG9yaWdpbmFsIHByb2JsZW0uIFRoYW5rcyB0YWxs
am9zaCBmb3IgaW5pdGlhbAorICBkaWFnbm9zZS9wYXRjaCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9y
IGZpbmFsIHBhdGNoLgorCistIGZpeCBpc3N1ZTY2MDogcHJvcGVybHkgcmVwb3J0IHNjb3BlLW1p
c21hdGNoLWFjY2VzcyBlcnJvcnMKKyAgaW5kZXBlbmRlbnRseSBmcm9tIG9yZGVyaW5nIG9mIGZp
eHR1cmUgYXJndW1lbnRzLiAgQWxzbworICBhdm9pZCB0aGUgcHl0ZXN0IGludGVybmFsIHRyYWNl
YmFjayB3aGljaCBkb2VzIG5vdCBwcm92aWRlCisgIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyLiBU
aGFua3MgSG9sZ2VyIEtyZWtlbC4KKworLSBzdHJlYW1saW5lZCBhbmQgZG9jdW1lbnRlZCByZWxl
YXNlIHByb2Nlc3MuICBBbHNvIGFsbCB2ZXJzaW9ucworICAoaW4gc2V0dXAucHkgYW5kIGRvY3Vt
ZW50YXRpb24gZ2VuZXJhdGlvbikgYXJlIG5vdyByZWFkCisgIGZyb20gX3B5dGVzdC9fX2luaXRf
Xy5weS4gVGhhbmtzIEhvbGdlciBLcmVrZWwuCisKKy0gZml4ZWQgZG9jcyB0byByZW1vdmUgdGhl
IG5vdGlvbiB0aGF0IHlpZWxkLWZpeHR1cmVzIGFyZSBleHBlcmltZW50YWwuCisgIFRoZXkgYXJl
IGhlcmUgdG8gc3RheSA6KSAgVGhhbmtzIEJydW5vIE9saXZlaXJhLgorCistIFN1cHBvcnQgYnVp
bGRpbmcgd2hlZWxzIGJ5IHVzaW5nIGVudmlyb25tZW50IG1hcmtlcnMgZm9yIHRoZQorICByZXF1
aXJlbWVudHMuICBUaGFua3MgSW9uZWwgTWFyaWVzIENyaXN0aWFuLgorCistIGZpeGVkIHJlZ3Jl
c3Npb24gdG8gMi42LjQgd2hpY2ggc3VyZmFjZWQgZS5nLiBpbiBsb3N0IHN0ZG91dCBjYXB0dXJl
IHByaW50aW5nCisgIHdoZW4gdGVzdHMgcmFpc2VkIFN5c3RlbUV4aXQuIFRoYW5rcyBIb2xnZXIg
S3Jla2VsLgorCistIHJlaW50cm9kdWNlZCBfcHl0ZXN0IGZpeHR1cmUgb2YgdGhlIHB5dGVzdGVy
IHBsdWdpbiB3aGljaCBpcyB1c2VkCisgIGF0IGxlYXN0IGJ5IHB5dGVzdC14ZGlzdC4KKworMi43
LjAgKDIwMTUtMDMtMjYpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggaXNzdWU0MzU6IG1h
a2UgcmVsb2FkKCkgd29yayB3aGVuIGFzc2VydCByZXdyaXRpbmcgaXMgYWN0aXZlLgorICBUaGFu
a3MgRGFuaWVsIEhhaGxlci4KKworLSBmaXggaXNzdWU2MTY6IGNvbmZ0ZXN0LnB5IGZpbGVzIGFu
ZCB0aGVpciBjb250YWluZWQgZml4dHVyZXMgYXJlIG5vdworICBwcm9wZXJseSBjb25zaWRlcmVk
IGZvciB2aXNpYmlsaXR5LCBpbmRlcGVuZGVudGx5IGZyb20gdGhlIGV4YWN0CisgIGN1cnJlbnQg
d29ya2luZyBkaXJlY3RvcnkgYW5kIHRlc3QgYXJndW1lbnRzIHRoYXQgYXJlIHVzZWQuCisgIE1h
bnkgdGhhbmtzIHRvIEVyaWMgU2llZ2VybWFuIGFuZCBoaXMgUFIyMzUgd2hpY2ggY29udGFpbnMK
KyAgc3lzdGVtYXRpYyB0ZXN0cyBmb3IgY29uZnRlc3QgdmlzaWJpbGl0eSBhbmQgbm93IHBhc3Nl
cy4KKyAgVGhpcyBjaGFuZ2UgYWxzbyBpbnRyb2R1Y2VzIHRoZSBjb25jZXB0IG9mIGEgYGByb290
ZGlyYGAgd2hpY2gKKyAgaXMgcHJpbnRlZCBhcyBhIG5ldyBweXRlc3QgaGVhZGVyIGFuZCBkb2N1
bWVudGVkIGluIHRoZSBweXRlc3QKKyAgY3VzdG9taXplIHdlYiBwYWdlLgorCistIGNoYW5nZSBy
ZXBvcnRpbmcgb2YgImRpdmVydGVkIiB0ZXN0cywgaS5lLiB0ZXN0cyB0aGF0IGFyZSBjb2xsZWN0
ZWQKKyAgaW4gb25lIGZpbGUgYnV0IGFjdHVhbGx5IGNvbWUgZnJvbSBhbm90aGVyIChlLmcuIHdo
ZW4gdGVzdHMgaW4gYSB0ZXN0IGNsYXNzCisgIGNvbWUgZnJvbSBhIGJhc2UgY2xhc3MgaW4gYSBk
aWZmZXJlbnQgZmlsZSkuICBXZSBub3cgc2hvdyB0aGUgbm9kZWlkCisgIGFuZCBpbmRpY2F0ZSB2
aWEgYSBwb3N0Zml4IHRoZSBvdGhlciBmaWxlLgorCistIGFkZCBhYmlsaXR5IHRvIHNldCBjb21t
YW5kIGxpbmUgb3B0aW9ucyBieSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQWVRFU1RfQURET1BUUy4K
KworLSBhZGRlZCBkb2N1bWVudGF0aW9uIG9uIHRoZSBuZXcgcHl0ZXN0LWRldiB0ZWFtcyBvbiBi
aXRidWNrZXQgYW5kCisgIGdpdGh1Yi4gIFNlZSBodHRwczovL3B5dGVzdC5vcmcvZW4vc3RhYmxl
L2NvbnRyaWJ1dGluZy5odG1sIC4KKyAgVGhhbmtzIHRvIEFuYXRvbHkgZm9yIHB1c2hpbmcgYW5k
IGluaXRpYWwgd29yayBvbiB0aGlzLgorCistIGZpeCBpc3N1ZTY1MDogbmV3IG9wdGlvbiBgYC0t
ZG9jdHRlc3QtaWdub3JlLWltcG9ydC1lcnJvcnNgYCB3aGljaAorICB3aWxsIHR1cm4gaW1wb3J0
IGVycm9ycyBpbiBkb2N0ZXN0cyBpbnRvIHNraXBzLiAgVGhhbmtzIENoYXJsZXMgQ2xvdWQKKyAg
Zm9yIHRoZSBjb21wbGV0ZSBQUi4KKworLSBmaXggaXNzdWU2NTU6IHdvcmsgYXJvdW5kIGRpZmZl
cmVudCB3YXlzIHRoYXQgY2F1c2UgcHl0aG9uMi8zCisgIHRvIGxlYWsgc3lzLmV4Y19pbmZvIGlu
dG8gZml4dHVyZXMvdGVzdHMgY2F1c2luZyBmYWlsdXJlcyBpbiAzcmQgcGFydHkgY29kZQorCist
IGZpeCBpc3N1ZTYxNTogYXNzZXJ0aW9uIHJld3JpdGluZyBkaWQgbm90IGNvcnJlY3RseSBlc2Nh
cGUgJSBzaWducworICB3aGVuIGZvcm1hdHRpbmcgYm9vbGVhbiBvcGVyYXRpb25zLCB3aGljaCB0
cmlwcGVkIG92ZXIgbWl4aW5nCisgIGJvb2xlYW5zIHdpdGggbW9kdWxvIG9wZXJhdG9ycy4gIFRo
YW5rcyB0byBUb20gVmluZXIgZm9yIHRoZSByZXBvcnQsCisgIHRyaWFnaW5nIGFuZCBmaXguCisK
Ky0gaW1wbGVtZW50IGlzc3VlMzUxOiBhZGQgYWJpbGl0eSB0byBzcGVjaWZ5IHBhcmFtZXRyaXpl
IGlkcyBhcyBhIGNhbGxhYmxlCisgIHRvIGdlbmVyYXRlIGN1c3RvbSB0ZXN0IGlkcy4gIFRoYW5r
cyBCcmlhbm5hIExhdWdoZXIgZm9yIHRoZSBpZGVhIGFuZAorICBpbXBsZW1lbnRhdGlvbi4KKwor
LSBpbnRyb2R1Y2UgYW5kIGRvY3VtZW50IG5ldyBob29rd3JhcHBlciBtZWNoYW5pc20gdXNlZnVs
IGZvciBwbHVnaW5zCisgIHdoaWNoIHdhbnQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGNlcnRh
aW4gaG9va3MgZm9yIHRoZWlyIHB1cnBvc2VzLgorICBUaGlzIHN1cGVyc2VkZXMgdGhlIHVuZG9j
dW1lbnRlZCBgYF9fbXVsdGljYWxsX19gYCBwcm90b2NvbCB3aGljaAorICBweXRlc3QgaXRzZWxm
IGFuZCBzb21lIGV4dGVybmFsIHBsdWdpbnMgdXNlLiAgTm90ZSB0aGF0IHB5dGVzdC0yLjgKKyAg
aXMgc2NoZWR1bGVkIHRvIGRyb3Agc3VwcG9ydGluZyB0aGUgb2xkIGBgX19tdWx0aWNhbGxfX2Bg
CisgIGFuZCBvbmx5IHN1cHBvcnQgdGhlIGhvb2t3cmFwcGVyIHByb3RvY29sLgorCistIG1ham9y
bHkgc3BlZWQgdXAgaW52b2NhdGlvbiBvZiBwbHVnaW4gaG9va3MKKworLSB1c2UgaG9va3dyYXBw
ZXIgbWVjaGFuaXNtIGluIGJ1aWx0aW4gcHl0ZXN0IHBsdWdpbnMuCisKKy0gYWRkIGEgZG9jdGVz
dCBpbmkgb3B0aW9uIGZvciBkb2N0ZXN0IGZsYWdzLCB0aGFua3MgSG9sZ2VyIFBldGVycy4KKwor
LSBhZGQgbm90ZSB0byBkb2NzIHRoYXQgaWYgeW91IHdhbnQgdG8gbWFyayBhIHBhcmFtZXRlciBh
bmQgdGhlCisgIHBhcmFtZXRlciBpcyBhIGNhbGxhYmxlLCB5b3UgYWxzbyBuZWVkIHRvIHBhc3Mg
aW4gYSByZWFzb24gdG8gZGlzYW1iaWd1YXRlCisgIGl0IGZyb20gdGhlICJkZWNvcmF0b3IiIGNh
c2UuICBUaGFua3MgVG9tIFZpbmVyLgorCistICJweXRob25fY2xhc3NlcyIgYW5kICJweXRob25f
ZnVuY3Rpb25zIiBvcHRpb25zIG5vdyBzdXBwb3J0IGdsb2ItcGF0dGVybnMKKyAgZm9yIHRlc3Qg
ZGlzY292ZXJ5LCBhcyBkaXNjdXNzZWQgaW4gaXNzdWU2MDAuIFRoYW5rcyBMZGlhcnkgVHJhbnNs
YXRpb25zLgorCistIGFsbG93IHRvIG92ZXJyaWRlIHBhcmFtZXRyaXplZCBmaXh0dXJlcyB3aXRo
IG5vbi1wYXJhbWV0cml6ZWQgb25lcyBhbmQgdmljZSB2ZXJzYSAoYnViZW5rb2ZmKS4KKworLSBm
aXggaXNzdWU0NjM6IHJhaXNlIHNwZWNpZmljIGVycm9yIGZvciAncGFyYW1ldGVyaXplJyBtaXNz
cGVsbGluZyAocGZjdGRheWVsaXNlKS4KKworLSBPbiBmYWlsdXJlLCB0aGUgYGBzeXMubGFzdF92
YWx1ZWBgLCBgYHN5cy5sYXN0X3R5cGVgYCBhbmQKKyAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBh
cmUgc2V0LCBzbyB0aGF0IGEgdXNlciBjYW4gaW5zcGVjdCB0aGUgZXJyb3IKKyAgdmlhIHBvc3Rt
b3J0ZW0gZGVidWdnaW5nIChhbG1hcmtsZWluKS4KKworMi42LjQgKDIwMTQtMTAtMjQpCis9PT09
PT09PT09PT09PT09PT0KKworLSBJbXByb3ZlIGFzc2VydGlvbiBmYWlsdXJlIHJlcG9ydGluZyBv
biBpdGVyYWJsZXMsIGJ5IHVzaW5nIG5kaWZmIGFuZAorICBwcHJpbnQuCisKKy0gcmVtb3ZlZCBv
dXRkYXRlZCBqYXBhbmVzZSBkb2NzIGZyb20gc291cmNlIHRyZWUuCisKKy0gZG9jcyBmb3IgInB5
dGVzdF9hZGRob29rcyIgaG9vay4gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYS4KKworLSB1cGRhdGVk
IHBsdWdpbiBpbmRleCBkb2NzLiAgVGhhbmtzIEJydW5vIE9saXZlaXJhLgorCistIGZpeCBpc3N1
ZTU1Nzogd2l0aCAiLWsiIHdlIG9ubHkgYWxsb3cgdGhlIG9sZCBzdHlsZSAiLSIgZm9yIG5lZ2F0
aW9uCisgIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc3RyaW5ncyBhbmQgZXZlbiB0aGF0IGlzIGRlcHJl
Y2F0ZWQuICBVc2UgIm5vdCIgaW5zdGVhZC4KKyAgVGhpcyBzaG91bGQgYWxsb3cgdG8gcGljayBw
YXJhbWV0cml6ZWQgdGVzdHMgd2hlcmUgIi0iIGFwcGVhcmVkIGluIHRoZSBwYXJhbWV0ZXIuCisK
Ky0gZml4IGlzc3VlNjA0OiBFc2NhcGUgJSBjaGFyYWN0ZXIgaW4gdGhlIGFzc2VydGlvbiBtZXNz
YWdlLgorCistIGZpeCBpc3N1ZTYyMDogYWRkIGV4cGxhbmF0aW9uIGluIHRoZSAtLWdlbnNjcmlw
dCB0YXJnZXQgYWJvdXQgd2hhdAorICB0aGUgYmluYXJ5IGJsb2IgbWVhbnMuIFRoYW5rcyBEaW51
IEdoZXJtYW4uCisKKy0gZml4IGlzc3VlNjE0OiBmaXhlZCBwYXN0ZWJpbiBzdXBwb3J0LgorCisK
Ky0gZml4IGlzc3VlNjIwOiBhZGQgZXhwbGFuYXRpb24gaW4gdGhlIC0tZ2Vuc2NyaXB0IHRhcmdl
dCBhYm91dCB3aGF0CisgIHRoZSBiaW5hcnkgYmxvYiBtZWFucy4gVGhhbmtzIERpbnUgR2hlcm1h
bi4KKworLSBmaXggaXNzdWU2MTQ6IGZpeGVkIHBhc3RlYmluIHN1cHBvcnQuCisKKzIuNi4zICgy
MDE0LTA5LTI0KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlNTc1OiB4dW5pdC14
bWwgd2FzIHJlcG9ydGluZyBjb2xsZWN0aW9uIGVycm9ycyBhcyBmYWlsdXJlcworICBpbnN0ZWFk
IG9mIGVycm9ycywgdGhhbmtzIE9sZWcgU2lueWF2c2tpeS4KKworLSBmaXggaXNzdWU1ODI6IGZp
eCBzZXR1cHRvb2xzIGV4YW1wbGUsIHRoYW5rcyBMYXN6bG8gUGFwcCBhbmQgUm9ubnkKKyAgUGZh
bm5zY2htaWR0LgorCistIEZpeCBpbmZpbml0ZSByZWN1cnNpb24gYnVnIHdoZW4gcGlja2xpbmcg
Y2FwdHVyZS5FbmNvZGVkRmlsZSwgdGhhbmtzCisgIFV3ZSBTY2htaXR0LgorCistIGZpeCBpc3N1
ZTU4OTogZml4IGJhZCBpbnRlcmFjdGlvbiB3aXRoIG51bXB5IGFuZCBvdGhlcnMgd2hlbiBzaG93
aW5nCisgIGV4Y2VwdGlvbnMuICBDaGVjayBmb3IgcHJlY2lzZSAibWF4aW11bSByZWN1cnNpb24g
ZGVwdGggZXhjZWVkIiBleGNlcHRpb24KKyAgaW5zdGVhZCBvZiBwcmVzdW1pbmcgYW55IFJ1bnRp
bWVFcnJvciBpcyB0aGF0IG9uZSAoaW1wbGVtZW50ZWQgaW4gcHkKKyAgZGVwKS4gIFRoYW5rcyBD
aGFybGVzIENsb3VkIGZvciBhbmFseXNpbmcgdGhlIGlzc3VlLgorCistIGZpeCBjb25mdGVzdCBy
ZWxhdGVkIGZpeHR1cmUgdmlzaWJpbGl0eSBpc3N1ZTogd2hlbiBydW5uaW5nIHdpdGggYQorICBD
V0Qgb3V0c2lkZSBvZiBhIHRlc3QgcGFja2FnZSBweXRlc3Qgd291bGQgZ2V0IGZpeHR1cmUgZGlz
Y292ZXJ5IHdyb25nLgorICBUaGFua3MgdG8gV29sZmdhbmcgU2NobmVycmluZyBmb3IgZmlndXJp
bmcgb3V0IGEgcmVwcm9kdWNpYmxlIGV4YW1wbGUuCisKKy0gSW50cm9kdWNlIHB5dGVzdF9lbnRl
cl9wZGIgaG9vayAobmVlZGVkIGUuZy4gYnkgcHl0ZXN0X3RpbWVvdXQgdG8gY2FuY2VsIHRoZQor
ICB0aW1lb3V0IHdoZW4gaW50ZXJhY3RpdmVseSBlbnRlcmluZyBwZGIpLiAgVGhhbmtzIFdvbGZn
YW5nIFNjaG5lcnJpbmcuCisKKy0gY2hlY2sgeGZhaWwvc2tpcCBhbHNvIHdpdGggbm9uLXB5dGhv
biBmdW5jdGlvbiB0ZXN0IGl0ZW1zLiBUaGFua3MKKyAgRmxvcmlzIEJydXlub29naGUuCisKKzIu
Ni4yICgyMDE0LTA5LTA1KQorPT09PT09PT09PT09PT09PT09CisKKy0gQWRkZWQgZnVuY3Rpb24g
cHl0ZXN0LmZyZWV6ZV9pbmNsdWRlcygpLCB3aGljaCBtYWtlcyBpdCBlYXN5IHRvIGVtYmVkCisg
IHB5dGVzdCBpbnRvIGV4ZWN1dGFibGVzIHVzaW5nIHRvb2xzIGxpa2UgY3hfZnJlZXplLgorICBT
ZWUgZG9jcyBmb3IgZXhhbXBsZXMgYW5kIHJhdGlvbmFsZS4gVGhhbmtzIEJydW5vIE9saXZlaXJh
LgorCistIEltcHJvdmUgYXNzZXJ0aW9uIHJld3JpdGluZyBjYWNoZSBpbnZhbGlkYXRpb24gcHJl
Y2lzaW9uLgorCistIGZpeGVkIGlzc3VlNTYxOiBhZGFwdCBhdXRvdXNlIGZpeHR1cmUgZXhhbXBs
ZSBmb3IgcHl0aG9uMy4KKworLSBmaXhlZCBpc3N1ZTQ1MzogYXNzZXJ0aW9uIHJld3JpdGluZyBp
c3N1ZSB3aXRoIF9fcmVwcl9fIGNvbnRhaW5pbmcKKyAgIlxueyIsICJcbn0iIGFuZCAiXG5+Ii4K
KworLSBmaXggaXNzdWU1NjA6IGNvcnJlY3RseSBkaXNwbGF5IGNvZGUgaWYgYW4gImVsc2U6IiBv
ciAiZmluYWxseToiIGlzCisgIGZvbGxvd2VkIGJ5IHN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGlu
ZS4KKworLSBGaXggZXhhbXBsZSBpbiBtb25rZXlwYXRjaCBkb2N1bWVudGF0aW9uLCB0aGFua3Mg
dC04Y2guCisKKy0gZml4IGlzc3VlNTcyOiBjb3JyZWN0IHRtcGRpciBkb2MgZXhhbXBsZSBmb3Ig
cHl0aG9uMy4KKworLSBEbyBub3QgbWFyayBhcyB1bml2ZXJzYWwgd2hlZWwgYmVjYXVzZSBQeXRo
b24gMi42IGlzIGRpZmZlcmVudCBmcm9tCisgIG90aGVyIGJ1aWxkcyBkdWUgdG8gdGhlIGV4dHJh
IGFyZ3BhcnNlIGRlcGVuZGVuY3kuICBGaXhlcyBpc3N1ZTU2Ni4KKyAgVGhhbmtzIHNvbnRlay4K
KworLSBJbXBsZW1lbnQgaXNzdWU1NDk6IHVzZXItcHJvdmlkZWQgYXNzZXJ0aW9uIG1lc3NhZ2Vz
IG5vdyBubyBsb25nZXIKKyAgcmVwbGFjZSB0aGUgcHkudGVzdCBpbnRyb3NwZWN0aW9uIG1lc3Nh
Z2UgYnV0IGFyZSBzaG93biBpbiBhZGRpdGlvbgorICB0byB0aGVtLgorCisyLjYuMSAoMjAxNC0w
OC0wNykKKz09PT09PT09PT09PT09PT09PQorCistIE5vIGxvbmdlciBzaG93IGxpbmUgbnVtYmVy
cyBpbiB0aGUgLS12ZXJib3NlIG91dHB1dCwgdGhlIG91dHB1dCBpcyBub3cKKyAgcHVyZWx5IHRo
ZSBub2RlaWQuICBUaGUgbGluZSBudW1iZXIgaXMgc3RpbGwgc2hvd24gaW4gZmFpbHVyZSByZXBv
cnRzLgorICBUaGFua3MgRmxvcmlzIEJydXlub29naGUuCisKKy0gZml4IGlzc3VlNDM3IHdoZXJl
IGFzc2VydGlvbiByZXdyaXRpbmcgY291bGQgY2F1c2UgcHl0ZXN0LXhkaXN0IHdvcmtlciBub2Rl
cworICB0byBjb2xsZWN0IGRpZmZlcmVudCB0ZXN0cy4gVGhhbmtzIEJydW5vIE9saXZlaXJhLgor
CistIGZpeCBpc3N1ZTU1NTogYWRkICJlcnJvcnMiIGF0dHJpYnV0ZSB0byBjYXB0dXJlLXN0cmVh
bXMgdG8gc2F0aXNmeQorICBzb21lIGRpc3R1dGlscyBhbmQgcG9zc2libHkgb3RoZXIgY29kZSBh
Y2Nlc3Npbmcgc3lzLnN0ZG91dC5lcnJvcnMuCisKKy0gZml4IGlzc3VlNTQ3IGNhcHN5cy9jYXBm
ZCBhbHNvIHdvcmsgd2hlbiBvdXRwdXQgY2FwdHVyaW5nICgiLXMiKSBpcyBkaXNhYmxlZC4KKwor
LSBhZGRyZXNzIGlzc3VlMTcwOiBhbGxvdyBweXRlc3QubWFyay54ZmFpbCguLi4pIHRvIHNwZWNp
ZnkgZXhwZWN0ZWQgZXhjZXB0aW9ucyB2aWEKKyAgYW4gb3B0aW9uYWwgInJhaXNlcz1FWEMiIGFy
Z3VtZW50IHdoZXJlIEVYQyBjYW4gYmUgYSBzaW5nbGUgZXhjZXB0aW9uCisgIG9yIGEgdHVwbGUg
b2YgZXhjZXB0aW9uIGNsYXNzZXMuICBUaGFua3MgRGF2aWQgTW9ociBmb3IgdGhlIGNvbXBsZXRl
CisgIFBSLgorCistIGZpeCBpbnRlZ3JhdGlvbiBvZiBweXRlc3Qgd2l0aCB1bml0dGVzdC5tb2Nr
LnBhdGNoIGRlY29yYXRvciB3aGVuCisgIGl0IHVzZXMgdGhlICJuZXciIGFyZ3VtZW50LiAgVGhh
bmtzIE5pY29sYXMgRGVsYWJ5IGZvciB0ZXN0IGFuZCBQUi4KKworLSBmaXggaXNzdWUgd2l0aCBk
ZXRlY3RpbmcgY29uZnRlc3QgZmlsZXMgaWYgdGhlIGFyZ3VtZW50cyBjb250YWluCisgICI6OiIg
bm9kZSBpZCBzcGVjaWZpY2F0aW9ucyAoY29weSBwYXN0ZWQgZnJvbSAiLXYiIG91dHB1dCkKKwor
LSBmaXggaXNzdWU1NDQgYnkgb25seSByZW1vdmluZyAiQE5VTSIgYXQgdGhlIGVuZCBvZiAiOjoi
IHNlcGFyYXRlZCBwYXJ0cworICBhbmQgaWYgdGhlIHBhcnQgaGFzIGEgIi5weSIgZXh0ZW5zaW9u
CisKKy0gZG9uJ3QgdXNlIHB5LnN0ZCBpbXBvcnQgaGVscGVyLCByYXRoZXIgaW1wb3J0IHRoaW5n
cyBkaXJlY3RseS4KKyAgVGhhbmtzIEJydW5vIE9saXZlaXJhLgorCisyLjYKKz09PQorCistIENh
Y2hlIGV4Y2VwdGlvbnMgZnJvbSBmaXh0dXJlcyBhY2NvcmRpbmcgdG8gdGhlaXIgc2NvcGUgKGlz
c3VlIDQ2NykuCisKKy0gZml4IGlzc3VlNTM3OiBBdm9pZCBpbXBvcnRpbmcgb2xkIGFzc2VydGlv
biByZWludGVycHJldGF0aW9uIGNvZGUgYnkgZGVmYXVsdC4KKworLSBmaXggaXNzdWUzNjQ6IHNo
b3J0ZW4gYW5kIGVuaGFuY2UgdHJhY2ViYWNrcyByZXByZXNlbnRhdGlvbiBieSBkZWZhdWx0Lgor
ICBUaGUgbmV3ICItLXRiPWF1dG8iIG9wdGlvbiAoZGVmYXVsdCkgd2lsbCBvbmx5IGRpc3BsYXkg
bG9uZyB0cmFjZWJhY2tzCisgIGZvciB0aGUgZmlyc3QgYW5kIGxhc3QgZW50cnkuICBZb3UgY2Fu
IGdldCB0aGUgb2xkIGJlaGF2aW91ciBvZiBwcmludGluZworICBhbGwgZW50cmllcyBhcyBsb25n
IGVudHJpZXMgd2l0aCAiLS10Yj1sb25nIi4gIEFsc28gc2hvcnQgZW50cmllcyBieQorICBkZWZh
dWx0IGFyZSBub3cgcHJpbnRlZCB2ZXJ5IHNpbWlsYXJseSB0byAiLS10Yj1uYXRpdmUiIG9uZXMu
CisKKy0gZml4IGlzc3VlNTE0OiB0ZWFjaCBhc3NlcnRpb24gcmVpbnRlcnByZXRhdGlvbiBhYm91
dCBwcml2YXRlIGNsYXNzIGF0dHJpYnV0ZXMKKworLSBjaGFuZ2UgLXYgb3V0cHV0IHRvIGluY2x1
ZGUgZnVsbCBub2RlIElEcyBvZiB0ZXN0cy4gIFVzZXJzIGNhbiBjb3B5CisgIGEgbm9kZSBJRCBm
cm9tIGEgdGVzdCBydW4sIGluY2x1ZGluZyBsaW5lIG51bWJlciwgYW5kIHVzZSBpdCBhcyBhCisg
IHBvc2l0aW9uYWwgYXJndW1lbnQgaW4gb3JkZXIgdG8gcnVuIG9ubHkgYSBzaW5nbGUgdGVzdC4K
KworLSBmaXggaXNzdWUgNDc1OiBmYWlsIGVhcmx5IGFuZCBjb21wcmVoZW5zaWJsZSBpZiBjYWxs
aW5nCisgIHB5dGVzdC5yYWlzZXMgd2l0aCB3cm9uZyBleGNlcHRpb24gdHlwZS4KKworLSBmaXgg
aXNzdWU1MTY6IHRlbGwgaW4gZ2V0dGluZy1zdGFydGVkIGFib3V0IGN1cnJlbnQgZGVwZW5kZW5j
aWVzLgorCistIGNsZWFudXAgc2V0dXAucHkgYSBiaXQgYW5kIHNwZWNpZnkgc3VwcG9ydGVkIHZl
cnNpb25zLiBUaGFua3MgSnVya28KKyAgR29zcG9kbmV0aWMgZm9yIHRoZSBQUi4KKworLSBjaGFu
Z2UgWFBBU1MgY29sb3VyIHRvIHllbGxvdyByYXRoZXIgdGhlbiByZWQgd2hlbiB0ZXN0cyBhcmUg
cnVuCisgIHdpdGggLXYuCisKKy0gZml4IGlzc3VlNDczOiB3b3JrIGFyb3VuZCBtb2NrIHB1dHRp
bmcgYW4gdW5ib3VuZCBtZXRob2QgaW50byBhIGNsYXNzCisgIGRpY3Qgd2hlbiBkb3VibGUtcGF0
Y2hpbmcuCisKKy0gZml4IGlzc3VlNDk4OiBpZiBhIGZpeHR1cmUgZmluYWxpemVyIGZhaWxzLCBt
YWtlIHN1cmUgdGhhdAorICB0aGUgZml4dHVyZSBpcyBzdGlsbCBpbnZhbGlkYXRlZC4KKworLSBm
aXggaXNzdWU0NTM6IHRoZSByZXN1bHQgb2YgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUg
aG9vayBub3cgZ2V0cworICBpdCdzIG5ld2xpbmVzIGVzY2FwZWQgc28gdGhhdCBmb3JtYXRfZXhj
ZXB0aW9uIGRvZXMgbm90IGJsb3cgdXAuCisKKy0gaW50ZXJuYWwgbmV3IHdhcm5pbmcgc3lzdGVt
OiBweXRlc3Qgd2lsbCBub3cgcHJvZHVjZSB3YXJuaW5ncyB3aGVuCisgIGl0IGRldGVjdHMgb2Rk
aXRpZXMgaW4geW91ciB0ZXN0IGNvbGxlY3Rpb24gb3IgZXhlY3V0aW9uLgorICBXYXJuaW5ncyBh
cmUgdWx0aW1hdGVseSBzZW50IHRvIGEgbmV3IHB5dGVzdF9sb2d3YXJuaW5nIGhvb2sgd2hpY2gg
aXMKKyAgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgYnkgdGhlIHRlcm1pbmFsIHBsdWdpbiB3
aGljaCBkaXNwbGF5cworICB3YXJuaW5ncyBpbiB0aGUgc3VtbWFyeSBsaW5lIGFuZCBzaG93cyBt
b3JlIGRldGFpbHMgd2hlbiAtcncgKHJlcG9ydCBvbgorICB3YXJuaW5ncykgaXMgc3BlY2lmaWVk
LgorCistIGNoYW5nZSBza2lwcyBpbnRvIHdhcm5pbmdzIGZvciB0ZXN0IGNsYXNzZXMgd2l0aCBh
biBfX2luaXRfXyBhbmQKKyAgY2FsbGFibGVzIGluIHRlc3QgbW9kdWxlcyB3aGljaCBsb29rIGxp
a2UgYSB0ZXN0IGJ1dCBhcmUgbm90IGZ1bmN0aW9ucy4KKworLSBmaXggaXNzdWU0MzY6IGltcHJv
dmVkIGZpbmRpbmcgb2YgaW5pdGlhbCBjb25mdGVzdCBmaWxlcyBmcm9tIGNvbW1hbmQKKyAgbGlu
ZSBhcmd1bWVudHMgYnkgdXNpbmcgdGhlIHJlc3VsdCBvZiBwYXJzZV9rbm93bl9hcmdzIHJhdGhl
ciB0aGFuCisgIHRoZSBwcmV2aW91cyBmbGFreSBoZXVyaXN0aWNzLiAgVGhhbmtzIE1hcmMgQWJy
YW1vd2l0eiBmb3IgdGVzdHMKKyAgYW5kIGluaXRpYWwgZml4aW5nIGFwcHJvYWNoZXMgaW4gdGhp
cyBhcmVhLgorCistIGZpeCBpc3N1ZSAjNDc5OiBwcm9wZXJseSBoYW5kbGUgbm9zZS91bml0dGVz
dCgyKSBTa2lwVGVzdCBleGNlcHRpb25zCisgIGR1cmluZyBjb2xsZWN0aW9uL2xvYWRpbmcgb2Yg
dGVzdCBtb2R1bGVzLiAgVGhhbmtzIHRvIE1hcmMgU2NobGFpY2gKKyAgZm9yIHRoZSBjb21wbGV0
ZSBQUi4KKworLSBmaXggaXNzdWU0OTA6IGluY2x1ZGUgcHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25m
dGVzdHMgaW4gZG9jdW1lbnRhdGlvbgorICBhbmQgaW1wcm92ZSBkb2NzdHJpbmcuCisKKy0gZml4
IGlzc3VlNDcyOiBjbGFyaWZ5IHRoYXQgYGBweXRlc3QuY29uZmlnLmdldHZhbHVlKClgYCBjYW5u
b3Qgd29yaworICBpZiBpdCdzIHRyaWdnZXJlZCBhaGVhZCBvZiBjb21tYW5kIGxpbmUgcGFyc2lu
Zy4KKworLSBtZXJnZSBQUjEyMzogaW1wcm92ZWQgaW50ZWdyYXRpb24gd2l0aCBtb2NrLnBhdGNo
IGRlY29yYXRvciBvbiB0ZXN0cy4KKworLSBmaXggaXNzdWU0MTI6IG1lc3Npbmcgd2l0aCBzdGRv
dXQvc3RkZXJyIEZELWxldmVsIHN0cmVhbXMgaXMgbm93CisgIGNhcHR1cmVkIHdpdGhvdXQgY3Jh
c2hlcy4KKworLSBmaXggaXNzdWU0ODM6IHRyaWFsL3B5MzMgd29ya3Mgbm93IHByb3Blcmx5LiAg
VGhhbmtzIERhbmllbCBHcmFuYSBmb3IgUFIuCisKKy0gaW1wcm92ZSBleGFtcGxlIGZvciBweXRl
c3QgaW50ZWdyYXRpb24gd2l0aCAicHl0aG9uIHNldHVwLnB5IHRlc3QiCisgIHdoaWNoIG5vdyBo
YXMgYSBnZW5lcmljICItYSIgb3IgIi0tcHl0ZXN0LWFyZ3MiIG9wdGlvbiB3aGVyZSB5b3UKKyAg
Y2FuIHBhc3MgYWRkaXRpb25hbCBvcHRpb25zIGFzIGEgcXVvdGVkIHN0cmluZy4gIFRoYW5rcyBU
cmV2b3IgQmVrb2xheS4KKworLSBzaW1wbGlmaWVkIGludGVybmFsIGNhcHR1cmluZyBtZWNoYW5p
c20gYW5kIG1hZGUgaXQgbW9yZSByb2J1c3QKKyAgYWdhaW5zdCB0ZXN0cyBvciBzZXR1cHMgY2hh
bmdpbmcgRkQxL0ZEMiwgYWxzbyBiZXR0ZXIgaW50ZWdyYXRlZAorICBub3cgd2l0aCBweXRlc3Qu
cGRiKCkgaW4gc2luZ2xlIHRlc3RzLgorCistIGltcHJvdmVtZW50cyB0byBweXRlc3QncyBvd24g
dGVzdC1zdWl0ZSBsZWFrYWdlIGRldGVjdGlvbiwgY291cnRlc3kgb2YgUFJzCisgIGZyb20gTWFy
YyBBYnJhbW93aXR6CisKKy0gZml4IGlzc3VlNDkyOiBhdm9pZCBsZWFrIGluIHRlc3Rfd3JpdGVv
cmcuICBUaGFua3MgTWFyYyBBYnJhbW93aXR6LgorCistIGZpeCBpc3N1ZTQ5MzogZG9uJ3QgcnVu
IHRlc3RzIGluIGRvYyBkaXJlY3Rvcnkgd2l0aCBgYHB5dGhvbiBzZXR1cC5weSB0ZXN0YGAKKyAg
KHVzZSB0b3ggLWUgZG9jdGVzdGluZyBmb3IgdGhhdCkKKworLSBmaXggaXNzdWU0ODY6IGJldHRl
ciByZXBvcnRpbmcgYW5kIGhhbmRsaW5nIG9mIGVhcmx5IGNvbmZ0ZXN0IGxvYWRpbmcgZmFpbHVy
ZXMKKworLSBzb21lIGNsZWFudXAgYW5kIHNpbXBsaWZpY2F0aW9uIG9mIGludGVybmFsIGNvbmZ0
ZXN0IGhhbmRsaW5nLgorCistIHdvcmsgYSBiaXQgaGFyZGVyIHRvIGJyZWFrIHJlZmVyZW5jZSBj
eWNsZXMgd2hlbiBjYXRjaGluZyBleGNlcHRpb25zLgorICBUaGFua3MgSnVya28gR29zcG9kbmV0
aWMuCisKKy0gZml4IGlzc3VlNDQzOiBmaXggc2tpcCBleGFtcGxlcyB0byB1c2UgcHJvcGVyIGNv
bXBhcmlzb24uICBUaGFua3MgQWxleAorICBHcm9lbmhvbG0uCisKKy0gc3VwcG9ydCBub3NlLXN0
eWxlIGBgX190ZXN0X19gYCBhdHRyaWJ1dGUgb24gbW9kdWxlcywgY2xhc3NlcyBhbmQKKyAgZnVu
Y3Rpb25zLCBpbmNsdWRpbmcgdW5pdHRlc3Qtc3R5bGUgQ2xhc3Nlcy4gIElmIHNldCB0byBGYWxz
ZSwgdGhlCisgIHRlc3Qgd2lsbCBub3QgYmUgY29sbGVjdGVkLgorCistIGZpeCBpc3N1ZTUxMjog
c2hvdyAiPG5vdHNldD4iIGZvciBhcmd1bWVudHMgd2hpY2ggbWlnaHQgbm90IGJlIHNldAorICBp
biBtb25rZXlwYXRjaCBwbHVnaW4uICBJbXByb3ZlcyBvdXRwdXQgaW4gZG9jdW1lbnRhdGlvbi4K
KworCisyLjUuMiAoMjAxNC0wMS0yOSkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1
ZTQwOSAtLSBiZXR0ZXIgaW50ZXJvcGVyYXRlIHdpdGggY3hfZnJlZXplIGJ5IG5vdAorICB0cnlp
bmcgdG8gaW1wb3J0IGZyb20gY29sbGVjdGlvbnMuYWJjIHdoaWNoIGNhdXNlcyBwcm9ibGVtcwor
ICBmb3IgcHkyNy9jeF9mcmVlemUuICBUaGFua3MgV29sZmdhbmcgTC4gZm9yIHJlcG9ydGluZyBh
bmQgdHJhY2tpbmcgaXQgZG93bi4KKworLSBmaXhlZCBkb2NzIGFuZCBjb2RlIHRvIHVzZSAicHl0
ZXN0IiBpbnN0ZWFkIG9mICJweS50ZXN0IiBhbG1vc3QgZXZlcnl3aGVyZS4KKyAgVGhhbmtzIEp1
cmtvIEdvc3BvZG5ldGljIGZvciB0aGUgY29tcGxldGUgUFIuCisKKy0gZml4IGlzc3VlNDI1OiBt
ZW50aW9uIGF0IGVuZCBvZiAicHkudGVzdCAtaCIgdGhhdCAtLW1hcmtlcnMKKyAgYW5kIC0tZml4
dHVyZXMgd29yayBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIHRlc3QgcGF0aCAob3IgY3VycmVudCBk
aXIpCisKKy0gZml4IGlzc3VlNDEzOiBleGNlcHRpb25zIHdpdGggdW5pY29kZSBhdHRyaWJ1dGVz
IGFyZSBub3cgcHJpbnRlZAorICBjb3JyZWN0bHkgYWxzbyBvbiBweXRob24yIGFuZCB3aXRoIHB5
dGVzdC14ZGlzdCBydW5zLiAodGhlIGZpeAorICByZXF1aXJlcyBweS0xLjQuMjApCisKKy0gY29w
eSwgY2xlYW51cCBhbmQgaW50ZWdyYXRlIHB5LmlvIGNhcHR1cmUKKyAgZnJvbSBweWxpYiAxLjQu
MjAuZGV2MiAocmV2IDEzZDlhZjk1NTQ3ZSkKKworLSBhZGRyZXNzIGlzc3VlNDE2OiBjbGFyaWZ5
IGRvY3MgYXMgdG8gY29uZnRlc3QucHkgbG9hZGluZyBzZW1hbnRpY3MKKworLSBmaXggaXNzdWU0
Mjk6IGNvbXBhcmluZyBieXRlIHN0cmluZ3Mgd2l0aCBub24tYXNjaWkgY2hhcnMgaW4gYXNzZXJ0
CisgIGV4cHJlc3Npb25zIG5vdyB3b3JrIGJldHRlci4gIFRoYW5rcyBGbG9yaXMgQnJ1eW5vb2do
ZS4KKworLSBtYWtlIGNhcGZkL2NhcHN5cy5jYXB0dXJlIHByaXZhdGUsIGl0cyB1bnVzZWQgYW5k
IHNob3VsZG4ndCBiZSBleHBvc2VkCisKKworMi41LjEgKDIwMTMtMTItMTcpCis9PT09PT09PT09
PT09PT09PT0KKworLSBtZXJnZSBuZXcgZG9jdW1lbnRhdGlvbiBzdHlsaW5nIFBSIGZyb20gVG9i
aWFzIEJpZW5pZWsuCisKKy0gZml4IGlzc3VlNDAzOiBhbGxvdyBwYXJhbWV0cml6ZSBvZiBtdWx0
aXBsZSBzYW1lLW5hbWUgZnVuY3Rpb25zIHdpdGhpbgorICBhIGNvbGxlY3Rpb24gbm9kZS4gIFRo
YW5rcyBBbmRyZWFzIEtsb2Vja25lciBhbmQgQWxleCBHYXlub3IgZm9yIHJlcG9ydGluZworICBh
bmQgYW5hbHlzaXMuCisKKy0gQWxsb3cgcGFyYW1ldGVyaXplZCBmaXh0dXJlcyB0byBzcGVjaWZ5
IHRoZSBJRCBvZiB0aGUgcGFyYW1ldGVycyBieQorICBhZGRpbmcgYW4gaWRzIGFyZ3VtZW50IHRv
IHB5dGVzdC5maXh0dXJlKCkgYW5kIHB5dGVzdC55aWVsZF9maXh0dXJlKCkuCisgIFRoYW5rcyBG
bG9yaXMgQnJ1eW5vb2doZS4KKworLSBmaXggaXNzdWU0MDQgYnkgYWx3YXlzIHVzaW5nIHRoZSBi
aW5hcnkgeG1sIGVzY2FwZSBpbiB0aGUganVuaXR4bWwKKyAgcGx1Z2luLiAgVGhhbmtzIFJvbm55
IFBmYW5uc2NobWlkdC4KKworLSBmaXggaXNzdWU0MDc6IGZpeCBhZGRvcHRpb24gZG9jc3RyaW5n
IHRvIHBvaW50IHRvIGFyZ3BhcnNlIGluc3RlYWQgb2YKKyAgb3B0cGFyc2UuIFRoYW5rcyBEYW5p
ZWwgRC4gV3JpZ2h0LgorCisKKworMi41LjAgKDIwMTMtMTItMTIpCis9PT09PT09PT09PT09PT09
PT0KKworLSBkcm9wcGVkIHB5dGhvbjIuNSBmcm9tIGF1dG9tYXRlZCByZWxlYXNlIHRlc3Rpbmcg
b2YgcHl0ZXN0IGl0c2VsZgorICB3aGljaCBtZWFucyBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIGJy
ZWFrIHNvb24gKGJ1dCBzdGlsbCB3b3JrcworICB3aXRoIHRoaXMgcmVsZWFzZSB3ZSBiZWxpZXZl
KS4KKworLSBzaW1wbGlmaWVkIGFuZCBmaXhlZCBpbXBsZW1lbnRhdGlvbiBmb3IgY2FsbGluZyBm
aW5hbGl6ZXJzIHdoZW4KKyAgcGFyYW1ldHJpemVkIGZpeHR1cmVzIG9yIGZ1bmN0aW9uIGFyZ3Vt
ZW50cyBhcmUgaW52b2x2ZWQuICBmaW5hbGl6YXRpb24KKyAgaXMgbm93IHBlcmZvcm1lZCBsYXpp
bHkgYXQgc2V0dXAgdGltZSBpbnN0ZWFkIG9mIGluIHRoZSAidGVhcmRvd24gcGhhc2UiLgorICBX
aGlsZSB0aGlzIG1pZ2h0IHNvdW5kIG9kZCBhdCBmaXJzdCwgaXQgaGVscHMgdG8gZW5zdXJlIHRo
YXQgd2UgYXJlCisgIGNvcnJlY3RseSBoYW5kbGluZyBzZXR1cC90ZWFyZG93biBldmVuIGluIGNv
bXBsZXggY29kZS4gIFVzZXItbGV2ZWwgY29kZQorICBzaG91bGQgbm90IGJlIGFmZmVjdGVkIHVu
bGVzcyBpdCdzIGltcGxlbWVudGluZyB0aGUgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24KKyAgaG9v
ayBhbmQgZXhwZWN0aW5nIGNlcnRhaW4gZml4dHVyZSBpbnN0YW5jZXMgYXJlIHRvcm4gZG93biB3
aXRoaW4gKHZlcnkKKyAgdW5saWtlbHkgYW5kIHdvdWxkIGhhdmUgYmVlbiB1bnJlbGlhYmxlIGFu
eXdheSkuCisKKy0gUFI5MDogYWRkIC0tY29sb3I9eWVzfG5vfGF1dG8gb3B0aW9uIHRvIGZvcmNl
IHRlcm1pbmFsIGNvbG9yaW5nCisgIG1vZGUgKCJhdXRvIiBpcyBkZWZhdWx0KS4gIFRoYW5rcyBN
YXJjIEFicmFtb3dpdHouCisKKy0gZml4IGlzc3VlMzE5IC0gY29ycmVjdGx5IHNob3cgdW5pY29k
ZSBpbiBhc3NlcnRpb24gZXJyb3JzLiAgTWFueQorICB0aGFua3MgdG8gRmxvcmlzIEJydXlub29n
aGUgZm9yIHRoZSBjb21wbGV0ZSBQUi4gIEFsc28gbWVhbnMKKyAgd2UgZGVwZW5kIG9uIHB5Pj0x
LjQuMTkgbm93LgorCistIGZpeCBpc3N1ZTM5NiAtIGNvcnJlY3RseSBzb3J0IGFuZCBmaW5hbGl6
ZSBjbGFzcy1zY29wZWQgcGFyYW1ldHJpemVkCisgIHRlc3RzIGluZGVwZW5kZW50bHkgZnJvbSBu
dW1iZXIgb2YgbWV0aG9kcyBvbiB0aGUgY2xhc3MuCisKKy0gcmVmaXggaXNzdWUzMjMgaW4gYSBi
ZXR0ZXIgd2F5IC0tIHBhcmFtZXRyaXphdGlvbiBzaG91bGQgbm93IG5ldmVyCisgIGNhdXNlIFJ1
bnRpbWUgUmVjdXJzaW9uIGVycm9ycyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIGFsZ29yaXRobQor
ICBmb3IgcmUtb3JkZXJpbmcgdGVzdHMgcGVyLXNjb3BlL3Blci1maXh0dXJlIGlzIG5vdCByZWN1
cnNpdmUKKyAgYW55bW9yZSAoaXQgd2FzIHRhaWwtY2FsbCByZWN1cnNpdmUgYmVmb3JlIHdoaWNo
IGNvdWxkIGxlYWQKKyAgdG8gcHJvYmxlbXMgZm9yIG1vcmUgdGhhbiA+OTY2IG5vbi1mdW5jdGlv
biBzY29wZWQgcGFyYW1ldGVycykuCisKKy0gZml4IGlzc3VlMjkwIC0gdGhlcmUgaXMgcHJlbGlt
aW5hcnkgc3VwcG9ydCBub3cgZm9yIHBhcmFtZXRyaXppbmcKKyAgd2l0aCByZXBlYXRlZCBzYW1l
IHZhbHVlcyAoc29tZXRpbWVzIHVzZWZ1bCB0byB0ZXN0IGlmIGNhbGxpbmcKKyAgYSBzZWNvbmQg
dGltZSB3b3JrcyBhcyB3aXRoIHRoZSBmaXJzdCB0aW1lKS4KKworLSBjbG9zZSBpc3N1ZTI0MCAt
IGRvY3VtZW50IHByZWNpc2VseSBob3cgcHl0ZXN0IG1vZHVsZSBpbXBvcnRpbmcKKyAgd29ya3Ms
IGRpc2N1c3MgdGhlIHR3byBjb21tb24gdGVzdCBkaXJlY3RvcnkgbGF5b3V0cywgYW5kIGhvdyBp
dAorICBpbnRlcmFjdHMgd2l0aCBQRVA0MjAtbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIGZpeCBp
c3N1ZTI0NiBmaXggZmluYWxpemVyIG9yZGVyIHRvIGJlIExJRk8gb24gaW5kZXBlbmRlbnQgZml4
dHVyZXMKKyAgZGVwZW5kaW5nIG9uIGEgcGFyYW1ldHJpemVkIGhpZ2hlci10aGFuLWZ1bmN0aW9u
IHNjb3BlZCBmaXh0dXJlLgorICAod2FzIHF1aXRlIHNvbWUgZWZmb3J0IHNvIHBsZWFzZSBiZWFy
IHdpdGggdGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBzZW50ZW5jZSA6KQorICBUaGFua3MgUmFscGgg
U2NobWl0dCBmb3IgdGhlIHByZWNpc2UgZmFpbHVyZSBleGFtcGxlLgorCistIGZpeCBpc3N1ZTI0
NCBieSBpbXBsZW1lbnRpbmcgc3BlY2lhbCBpbmRleCBmb3IgcGFyYW1ldGVycyB0byBvbmx5IHVz
ZQorICBpbmRpY2VzIGZvciBwYXJhbWVudHJpemVkIHRlc3QgaWRzCisKKy0gZml4IGlzc3VlMjg3
IGJ5IHJ1bm5pbmcgYWxsIGZpbmFsaXplcnMgYnV0IHNhdmluZyB0aGUgZXhjZXB0aW9uCisgIGZy
b20gdGhlIGZpcnN0IGZhaWxpbmcgZmluYWxpemVyIGFuZCByZS1yYWlzaW5nIGl0IHNvIHRlYXJk
b3duIHdpbGwKKyAgc3RpbGwgaGF2ZSBmYWlsZWQuICBXZSByZXJhaXNlIHRoZSBmaXJzdCBmYWls
aW5nIGV4Y2VwdGlvbiBiZWNhdXNlCisgIGl0IG1pZ2h0IGJlIHRoZSBjYXVzZSBmb3Igb3RoZXIg
ZmluYWxpemVycyB0byBmYWlsLgorCistIGZpeCBvcmRlcmluZyB3aGVuIG1vY2sucGF0Y2ggb3Ig
b3RoZXIgc3RhbmRhcmQgZGVjb3JhdG9yLXdyYXBwaW5ncworICBhcmUgdXNlZCB3aXRoIHRlc3Qg
bWV0aG9kcy4gIFRoaXMgZml4dWVzIGlzc3VlMzQ2IGFuZCBzaG91bGQKKyAgaGVscCB3aXRoIHJh
bmRvbSAieGRpc3QiIGNvbGxlY3Rpb24gZmFpbHVyZXMuICBUaGFua3MgdG8KKyAgUm9ubnkgUGZh
bm5zY2htaWR0IGFuZCBEb25hbGQgU3R1ZmZ0IGZvciBoZWxwaW5nIHRvIGlzb2xhdGUgaXQuCisK
Ky0gZml4IGlzc3VlMzU3IC0gc3BlY2lhbCBjYXNlICItayIgZXhwcmVzc2lvbnMgdG8gYWxsb3cg
Zm9yCisgIGZpbHRlcmluZyB3aXRoIHNpbXBsZSBzdHJpbmdzIHRoYXQgYXJlIG5vdCB2YWxpZCBw
eXRob24gZXhwcmVzc2lvbnMuCisgIEV4YW1wbGVzOiAiLWsgMS4zIiBtYXRjaGVzIGFsbCB0ZXN0
cyBwYXJhbWV0cml6ZWQgd2l0aCAxLjMuCisgICItayBOb25lIiBmaWx0ZXJzIGFsbCB0ZXN0cyB0
aGF0IGhhdmUgIk5vbmUiIGluIHRoZWlyIG5hbWUKKyAgYW5kIGNvbnZlcnNlbHkgIi1rICdub3Qg
Tm9uZSciLgorICBQcmV2aW91c2x5IHRoZXNlIGV4YW1wbGVzIHdvdWxkIHJhaXNlIHN5bnRheCBl
cnJvcnMuCisKKy0gZml4IGlzc3VlMzg0IGJ5IHJlbW92aW5nIHRoZSB0cmlhbCBzdXBwb3J0IGNv
ZGUKKyAgc2luY2UgdGhlIHVuaXR0ZXN0IGNvbXBhdCBlbmhhbmNlbWVudHMgYWxsb3cKKyAgdHJp
YWwgdG8gaGFuZGxlIGl0IG9uIGl0cyBvd24KKworLSBkb24ndCBoaWRlIGFuIEltcG9ydEVycm9y
IHdoZW4gaW1wb3J0aW5nIGEgcGx1Z2luIHByb2R1Y2VzIG9uZS4KKyAgZml4ZXMgaXNzdWUzNzUu
CisKKy0gZml4IGlzc3VlMjc1IC0gYWxsb3cgdXNlZml4dHVyZXMgYW5kIGF1dG91c2UgZml4dHVy
ZXMKKyAgZm9yIHJ1bm5pbmcgZG9jdGVzdCB0ZXh0IGZpbGVzLgorCistIGZpeCBpc3N1ZTM4MCBi
eSBtYWtpbmcgLS1yZXN1bHRsb2cgb25seSByZWx5IG9uIGxvbmdyZXByIGluc3RlYWQKKyAgb2Yg
dGhlICJyZXByY3Jhc2giIGF0dHJpYnV0ZSB3aGljaCBvbmx5IGV4aXN0cyBzb21ldGltZXMuCisK
Ky0gYWRkcmVzcyBpc3N1ZTEyMjogYWxsb3cgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1pdGVyYXRv
cikgYnkgZXhwbG9kaW5nCisgIGludG8gYSBsaXN0IGVhcmx5IG9uLgorCistIGZpeCBwZXhwZWN0
LTMuMCBjb21wYXRpYmlsaXR5IGZvciBweXRlc3QncyBvd24gdGVzdHMuCisgIChmaXhlcyBpc3N1
ZTM4NikKKworLSBhbGxvdyBuZXN0ZWQgcGFyYW1ldHJpemUtdmFsdWUgbWFya2VycywgdGhhbmtz
IEphbWVzIExhbiBmb3IgdGhlIFBSLgorCistIGZpeCB1bmljb2RlIGhhbmRsaW5nIHdpdGggbmV3
IG1vbmtleXBhdGNoLnNldGF0dHIoaW1wb3J0X3BhdGgsIHZhbHVlKQorICBBUEkuICBUaGFua3Mg
Um9iIERlbm5pcy4gIEZpeGVzIGlzc3VlMzcxLgorCistIGZpeCB1bmljb2RlIGhhbmRsaW5nIHdp
dGgganVuaXR4bWwsIGZpeGVzIGlzc3VlMzY4LgorCistIEluIGFzc2VydGlvbiByZXdyaXRpbmcg
bW9kZSBvbiBQeXRob24gMiwgZml4IHRoZSBkZXRlY3Rpb24gb2YgY29kaW5nCisgIGNvb2tpZXMu
IFNlZSBpc3N1ZSAjMzMwLgorCistIG1ha2UgIi0tcnVueGZhaWwiIHR1cm4gaW1wZXJhdGl2ZSBw
eXRlc3QueGZhaWwgY2FsbHMgaW50byBubyBvcHMKKyAgKGl0IGFscmVhZHkgZGlkIG5ldXRyYWxp
emUgcHl0ZXN0Lm1hcmsueGZhaWwgbWFya2VycykKKworLSByZWZpbmUgcHl0ZXN0IC8gcGtnX3Jl
c291cmNlcyBpbnRlcmFjdGlvbnM6IFRoZSBBc3NlcnRpb25SZXdyaXRpbmdIb29rCisgIFBFUDMw
MiBjb21wbGlhbnQgbG9hZGVyIG5vdyByZWdpc3RlcnMgaXRzZWxmIHdpdGggc2V0dXB0b29scy9w
a2dfcmVzb3VyY2VzCisgIHByb3Blcmx5IHNvIHRoYXQgdGhlIHBrZ19yZXNvdXJjZXMucmVzb3Vy
Y2Vfc3RyZWFtIG1ldGhvZCB3b3JrcyBwcm9wZXJseS4KKyAgRml4ZXMgaXNzdWUzNjYuICBUaGFu
a3MgZm9yIHRoZSBpbnZlc3RpZ2F0aW9ucyBhbmQgZnVsbCBQUiB0byBKYXNvbiBSLiBDb29tYnMu
CisKKy0gcHl0ZXN0Y29uZmlnIGZpeHR1cmUgaXMgbm93IHNlc3Npb24tc2NvcGVkIGFzIGl0IGlz
IHRoZSBzYW1lIG9iamVjdCBkdXJpbmcgdGhlCisgIHdob2xlIHRlc3QgcnVuLiAgRml4ZXMgaXNz
dWUzNzAuCisKKy0gYXZvaWQgb25lIHN1cnByaXNpbmcgY2FzZSBvZiBtYXJrZXIgbWFsZnVuY3Rp
b24vY29uZnVzaW9uOjoKKworICAgICAgQHB5dGVzdC5tYXJrLnNvbWUobGFtYmRhIGFyZzogLi4u
KQorICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKKworICB3b3VsZCBub3Qgd29yayBjb3JyZWN0
bHkgYmVjYXVzZSBweXRlc3QgYXNzdW1lcyBAcHl0ZXN0Lm1hcmsuc29tZQorICBnZXRzIGEgZnVu
Y3Rpb24gdG8gYmUgZGVjb3JhdGVkIGFscmVhZHkuICBXZSBub3cgYXQgbGVhc3QgZGV0ZWN0IGlm
IHRoaXMKKyAgYXJnIGlzIGEgbGFtYmRhIGFuZCB0aHVzIHRoZSBleGFtcGxlIHdpbGwgd29yay4g
IFRoYW5rcyBBbGV4IEdheW5vcgorICBmb3IgYnJpbmdpbmcgaXQgdXAuCisKKy0geGZhaWwgYSB0
ZXN0IG9uIHB5cHkgdGhhdCBjaGVja3Mgd3JvbmcgZW5jb2RpbmcvYXNjaWkgKHB5cHkgZG9lcwor
ICBub3QgZXJyb3Igb3V0KS4gZml4ZXMgaXNzdWUzODUuCisKKy0gaW50ZXJuYWxseSBtYWtlIHZh
cm5hbWVzKCkgZGVhbCB3aXRoIGNsYXNzZXMncyBfX2luaXRfXywKKyAgYWx0aG91Z2ggaXQncyBu
b3QgbmVlZGVkIGJ5IHB5dGVzdCBpdHNlbGYgYXRtLiAgQWxzbworICBmaXggY2FjaGluZy4gIEZp
eGVzIGlzc3VlMzc2LgorCistIGZpeCBpc3N1ZTIyMSAtIGhhbmRsZSBpbXBvcnRpbmcgb2YgbmFt
ZXNwYWNlLXBhY2thZ2Ugd2l0aCBubworICBfX2luaXRfXy5weSBwcm9wZXJseS4KKworLSByZWZh
Y3RvciBpbnRlcm5hbCBGaXh0dXJlUmVxdWVzdCBoYW5kbGluZyB0byBhdm9pZCBtb25rZXlwYXRj
aGluZy4KKyAgT25lIG9mIHRoZSBwb3NpdGl2ZSB1c2VyLWZhY2luZyBlZmZlY3RzIGlzIHRoYXQg
dGhlICJyZXF1ZXN0IiBvYmplY3QKKyAgY2FuIG5vdyBiZSB1c2VkIGluIGNsb3N1cmVzLgorCist
IGZpeGVkIHZlcnNpb24gY29tcGFyaXNvbiBpbiBweXRlc3QuaW1wb3J0c2tpcChtb2RuYW1lLCBt
aW52ZXJzdHJpbmcpCisKKy0gZml4IGlzc3VlMzc3IGJ5IGNsYXJpZnlpbmcgaW4gdGhlIG5vc2Ut
Y29tcGF0IGRvY3MgdGhhdCBweXRlc3QKKyAgZG9lcyBub3QgZHVwbGljYXRlIHRoZSB1bml0dGVz
dC1BUEkgaW50byB0aGUgInBsYWluIiBuYW1lc3BhY2UuCisKKy0gZml4IHZlcmJvc2UgcmVwb3J0
aW5nIGZvciBAbW9jaydkIHRlc3QgZnVuY3Rpb25zCisKKzIuNC4yICgyMDEzLTEwLTA0KQorPT09
PT09PT09PT09PT09PT09CisKKy0gb24gV2luZG93cyByZXF1aXJlIGNvbG9yYW1hIGFuZCBhIG5l
d2VyIHB5IGxpYiBzbyB0aGF0IHB5LmlvLlRlcm1pbmFsV3JpdGVyKCkKKyAgbm93IHVzZXMgY29s
b3JhbWEgaW5zdGVhZCBvZiBpdHMgb3duIGN0eXBlcyBoYWNrcy4gKGZpeGVzIGlzc3VlMzY1KQor
ICB0aGFua3MgUGF1bCBNb29yZSBmb3IgYnJpbmdpbmcgaXQgdXAuCisKKy0gZml4ICItayIgbWF0
Y2hpbmcgb2YgdGVzdHMgd2hlcmUgInJlcHIiIGFuZCAiYXR0ciIgYW5kIG90aGVyIG5hbWVzIHdv
dWxkCisgIGNhdXNlIHdyb25nIG1hdGNoZXMgYmVjYXVzZSBvZiBhbiBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiBxdWlyaworICAoZG9uJ3QgYXNrKSB3aGljaCBpcyBub3cgcHJvcGVybHkgaW1wbGVt
ZW50ZWQuIGZpeGVzIGlzc3VlMzQ1LgorCistIGF2b2lkIHRtcGRpciBmaXh0dXJlIHRvIGNyZWF0
ZSB0b28gbG9uZyBmaWxlbmFtZXMgZXNwZWNpYWxseQorICB3aGVuIHBhcmFtZXRyaXphdGlvbiBp
cyB1c2VkIChpc3N1ZTM1NCkKKworLSBmaXggcHl0ZXN0LXBlcDggYW5kIHB5dGVzdC1mbGFrZXMg
LyBweXRlc3QgaW50ZXJhY3Rpb25zCisgIChjb2xsZWN0aW9uIG5hbWVzIGluIG1hcmsgcGx1Z2lu
IHdhcyBhc3N1bWluZyBhbiBpdGVtIGFsd2F5cworICBoYXMgYSBmdW5jdGlvbiB3aGljaCBpcyBu
b3QgdHJ1ZSBmb3IgdGhvc2UgcGx1Z2lucyBldGMuKQorICBUaGFua3MgQW5kaSBaZWlkbGVyLgor
CistIGludHJvZHVjZSBub2RlLmdldF9tYXJrZXIvbm9kZS5hZGRfbWFya2VyIEFQSSBmb3IgcGx1
Z2lucworICBsaWtlIHB5dGVzdC1wZXA4IGFuZCBweXRlc3QtZmxha2VzIHRvIGF2b2lkIHRoZSBt
ZXNzeQorICBkZXRhaWxzIG9mIHRoZSBub2RlLmtleXdvcmRzICBwc2V1ZG8tZGljdHMuICBBZGFw
dGVkCisgIGRvY3MuCisKKy0gcmVtb3ZlIGF0dGVtcHQgdG8gImR1cCIgc3Rkb3V0IGF0IHN0YXJ0
dXAgYXMgaXQncyBpY2t5LgorICB0aGUgbm9ybWFsIGNhcHR1cmluZyBzaG91bGQgY2F0Y2ggZW5v
dWdoIHBvc3NpYmlsaXRpZXMKKyAgb2YgdGVzdHMgbWVzc2luZyB1cCBzdGFuZGFyZCBGRHMuCisK
Ky0gYWRkIHBsdWdpbm1hbmFnZXIuZG9fY29uZmlndXJlKGNvbmZpZykgYXMgYSBsaW5rIHRvCisg
IGNvbmZpZy5kb19jb25maWd1cmUoKSBmb3IgcGx1Z2luLWNvbXBhdGliaWxpdHkKKworMi40LjEg
KDIwMTMtMTAtMDIpCis9PT09PT09PT09PT09PT09PT0KKworLSBXaGVuIHVzaW5nIHBhcnNlci5h
ZGRvcHRpb24oKSB1bmljb2RlIGFyZ3VtZW50cyB0byB0aGUKKyAgInR5cGUiIGtleXdvcmQgc2hv
dWxkIGFsc28gYmUgY29udmVydGVkIHRvIHRoZSByZXNwZWN0aXZlIHR5cGVzLgorICB0aGFua3Mg
RmxvcmlzIEJydXlub29naGUsIEBkbm96YXkuIChmaXhlcyBpc3N1ZTM2MCBhbmQgaXNzdWUzNjIp
CisKKy0gZml4IGRvdHRlZCBmaWxlbmFtZSBjb21wbGV0aW9uIHdoZW4gdXNpbmcgYXJnY29tcGxl
dGUKKyAgdGhhbmtzIEFudGhvbiB2YW4gZGVyIE5ldXRoLiAoZml4ZXMgaXNzdWUzNjEpCisKKy0g
Zml4IHJlZ3Jlc3Npb24gd2hlbiBhIDEtdHVwbGUgKCJhcmciLCkgaXMgdXNlZCBmb3Igc3BlY2lm
eWluZworICBwYXJhbWV0cml6YXRpb24gKHRoZSB2YWx1ZXMgb2YgdGhlIHBhcmFtZXRyaXphdGlv
biB3ZXJlIHBhc3NlZAorICBuZXN0ZWQgaW4gYSB0dXBsZSkuICBUaGFua3MgRG9uYWxkIFN0dWZm
dC4KKworLSBtZXJnZSBkb2MgdHlwbyBmaXhlcywgdGhhbmtzIEFuZHkgRGlybmJlcmdlcgorCisy
LjQKKz09PQorCitrbm93biBpbmNvbXBhdGliaWxpdGllczoKKworLSBpZiBjYWxsaW5nIC0tZ2Vu
c2NyaXB0IGZyb20gcHl0aG9uMi43IG9yIGFib3ZlLCB5b3Ugb25seSBnZXQgYQorICBzdGFuZGFs
b25lIHNjcmlwdCB3aGljaCB3b3JrcyBvbiBweXRob24yLjcgb3IgYWJvdmUuICBVc2UgUHl0aG9u
Mi42CisgIHRvIGFsc28gZ2V0IGEgcHl0aG9uMi41IGNvbXBhdGlibGUgdmVyc2lvbi4KKworLSBh
bGwgeHVuaXQtc3R5bGUgdGVhcmRvd24gbWV0aG9kcyAobm9zZS1zdHlsZSwgcHl0ZXN0LXN0eWxl
LAorICB1bml0dGVzdC1zdHlsZSkgd2lsbCBub3QgYmUgY2FsbGVkIGlmIHRoZSBjb3JyZXNwb25k
aW5nIHNldHVwIG1ldGhvZCBmYWlsZWQsCisgIHNlZSBpc3N1ZTMyMiBiZWxvdy4KKworLSB0aGUg
cHl0ZXN0X3BsdWdpbl91bnJlZ2lzdGVyIGhvb2sgd2Fzbid0IGV2ZXIgcHJvcGVybHkgY2FsbGVk
CisgIGFuZCB0aGVyZSBpcyBubyBrbm93biBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaG9vayAtIHNv
IGl0IGdvdCByZW1vdmVkLgorCistIHB5dGVzdC5maXh0dXJlLWRlY29yYXRlZCBmdW5jdGlvbnMg
Y2Fubm90IGJlIGdlbmVyYXRvcnMgKGkuZS4gdXNlCisgIHlpZWxkKSBhbnltb3JlLiAgVGhpcyBj
aGFuZ2UgbWlnaHQgYmUgcmV2ZXJzZWQgaW4gMi40LjEgaWYgaXQgY2F1c2VzCisgIHVuZm9yZXNl
ZW4gcmVhbC1saWZlIGlzc3Vlcy4gIEhvd2V2ZXIsIHlvdSBjYW4gYWx3YXlzIHdyaXRlIGFuZCBy
ZXR1cm4KKyAgYW4gaW5uZXIgZnVuY3Rpb24vZ2VuZXJhdG9yIGFuZCBjaGFuZ2UgdGhlIGZpeHR1
cmUgY29uc3VtZXIgdG8gaXRlcmF0ZQorICBvdmVyIHRoZSByZXR1cm5lZCBnZW5lcmF0b3IuICBU
aGlzIGNoYW5nZSB3YXMgZG9uZSBpbiBsaWV1IG9mIHRoZSBuZXcKKyAgYGBweXRlc3QueWllbGRf
Zml4dHVyZWBgIGRlY29yYXRvciwgc2VlIGJlbG93LgorCituZXcgZmVhdHVyZXM6CisKKy0gZXhw
ZXJpbWVudGFsbHkgaW50cm9kdWNlIGEgbmV3IGBgcHl0ZXN0LnlpZWxkX2ZpeHR1cmVgYCBkZWNv
cmF0b3IKKyAgd2hpY2ggYWNjZXB0cyBleGFjdGx5IHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgcHl0
ZXN0LmZpeHR1cmUgYnV0CisgIG1hbmRhdGVzIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpbnN0ZWFk
IG9mIGEgYGByZXR1cm4gc3RhdGVtZW50YGAgZnJvbQorICBmaXh0dXJlIGZ1bmN0aW9ucy4gIFRo
aXMgYWxsb3dzIGRpcmVjdCBpbnRlZ3JhdGlvbiB3aXRoICJ3aXRoLXN0eWxlIgorICBjb250ZXh0
IG1hbmFnZXJzIGluIGZpeHR1cmUgZnVuY3Rpb25zIGFuZCBnZW5lcmFsbHkgYXZvaWRzIHJlZ2lz
dGVyaW5nCisgIG9mIGZpbmFsaXphdGlvbiBjYWxsYmFja3MgaW4gZmF2b3VyIG9mIHRyZWF0aW5n
IHRoZSAiYWZ0ZXIteWllbGQiIGFzCisgIHRlYXJkb3duIGNvZGUuICBUaGFua3MgQW5kcmVhcyBQ
ZWxtZSwgVmxhZGltaXIgS2VsZXNoZXYsIEZsb3JpcworICBCcnV5bm9vZ2hlLCBSb25ueSBQZmFu
bnNjaG1pZHQgYW5kIG1hbnkgb3RoZXJzIGZvciBkaXNjdXNzaW9ucy4KKworLSBhbGxvdyBib29s
ZWFuIGV4cHJlc3Npb24gZGlyZWN0bHkgd2l0aCBza2lwaWYveGZhaWwKKyAgaWYgYSAicmVhc29u
IiBpcyBhbHNvIHNwZWNpZmllZC4gIFJld29yayBza2lwcGluZyBkb2N1bWVudGF0aW9uCisgIHRv
IHJlY29tbWVuZCAiY29uZGl0aW9uIGFzIGJvb2xlYW5zIiBiZWNhdXNlIGl0IHByZXZlbnRzIHN1
cnByaXNlcworICB3aGVuIGltcG9ydGluZyBtYXJrZXJzIGJldHdlZW4gbW9kdWxlcy4gIFNwZWNp
ZnlpbmcgY29uZGl0aW9ucworICBhcyBzdHJpbmdzIHdpbGwgcmVtYWluIGZ1bGx5IHN1cHBvcnRl
ZC4KKworLSByZXBvcnRpbmc6IGNvbG9yIHRoZSBsYXN0IGxpbmUgcmVkIG9yIGdyZWVuIGRlcGVu
ZGluZyBpZgorICBmYWlsdXJlcy9lcnJvcnMgb2NjdXJyZWQgb3IgZXZlcnl0aGluZyBwYXNzZWQu
ICB0aGFua3MgQ2hyaXN0aWFuCisgIFRoZXVuZXJ0LgorCistIG1ha2UgImltcG9ydCBwZGIgOyBw
ZGIuc2V0X3RyYWNlKCkiIHdvcmsgbmF0aXZlbHkgd3J0IGNhcHR1cmluZyAobm8KKyAgIi1zIiBu
ZWVkZWQgYW55bW9yZSksIG1ha2luZyBgYHB5dGVzdC5zZXRfdHJhY2UoKWBgIGEgbWVyZSBzaG9y
dGN1dC4KKworLSBmaXggaXNzdWUxODE6IC0tcGRiIG5vdyBhbHNvIHdvcmtzIG9uIGNvbGxlY3Qg
ZXJyb3JzIChhbmQKKyAgb24gaW50ZXJuYWwgZXJyb3JzKSAuICBUaGlzIHdhcyBpbXBsZW1lbnRl
ZCBieSBhIHNsaWdodCBpbnRlcm5hbAorICByZWZhY3RvcmluZyBhbmQgdGhlIGludHJvZHVjdGlv
biBvZiBhIG5ldyBob29rCisgIGBgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdGBgIGhvb2sgKHNl
ZSBuZXh0IGl0ZW0pLgorCistIGZpeCBpc3N1ZTM0MTogaW50cm9kdWNlIG5ldyBleHBlcmltZW50
YWwgaG9vayBmb3IgSURFcy90ZXJtaW5hbHMgdG8KKyAgaW50ZXJjZXB0IGRlYnVnZ2luZzogYGBw
eXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KG5vZGUsIGNhbGwsIHJlcG9ydClgYC4KKworLSBuZXcg
bW9ua2V5cGF0Y2guc2V0YXR0cigpIHZhcmlhbnQgdG8gcHJvdmlkZSBhIHNob3J0ZXIKKyAgaW52
b2NhdGlvbiBmb3IgcGF0Y2hpbmcgb3V0IGNsYXNzZXMvZnVuY3Rpb25zIGZyb20gbW9kdWxlczoK
KworICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJyZXF1ZXN0cy5nZXQiLCBteWZ1bmMpCisKKyAg
d2lsbCByZXBsYWNlIHRoZSAiZ2V0IiBmdW5jdGlvbiBvZiB0aGUgInJlcXVlc3RzIiBtb2R1bGUg
d2l0aCBgYG15ZnVuY2BgLgorCistIGZpeCBpc3N1ZTMyMjogdGVhckRvd25DbGFzcyBpcyBub3Qg
cnVuIGlmIHNldFVwQ2xhc3MgZmFpbGVkLiBUaGFua3MKKyAgTWF0aGlldSBBZ29waWFuIGZvciB0
aGUgaW5pdGlhbCBmaXguICBBbHNvIG1ha2UgYWxsIG9mIHB5dGVzdC9ub3NlCisgIGZpbmFsaXpl
ciBtaW1pYyB0aGUgc2FtZSBnZW5lcmljIGJlaGF2aW91cjogaWYgYSBzZXR1cFggZXhpc3RzIGFu
ZAorICBmYWlscywgZG9uJ3QgcnVuIHRlYXJkb3duWC4gIFRoaXMgaW50ZXJuYWxseSBpbnRyb2R1
Y2VzIGEgbmV3IG1ldGhvZAorICAibm9kZS5hZGRmaW5hbGl6ZXIoKSIgaGVscGVyIHdoaWNoIGNh
biBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgdGhlIHNldHVwCisgIHBoYXNlIG9mIGEgbm9kZS4KKwor
LSBzaW1wbGlmeSBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgpIHNpZ25hdHVyZTogYWxsb3cgdG8g
cGFzcyBhCisgIENTVi1zZXBhcmF0ZWQgc3RyaW5nIHRvIHNwZWNpZnkgYXJnbmFtZXMuICBGb3Ig
ZXhhbXBsZToKKyAgYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXhwZWN0ZWQiLCAg
WygxLDIpLCAoMiwzKV0pYGAKKyAgd29ya3MgYXMgd2VsbCBhcyB0aGUgcHJldmlvdXM6CisgIGBg
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKCJpbnB1dCIsICJleHBlY3RlZCIpLCAuLi4pYGAuCisK
Ky0gYWRkIHN1cHBvcnQgZm9yIHNldFVwTW9kdWxlL3RlYXJEb3duTW9kdWxlIGRldGVjdGlvbiwg
dGhhbmtzIEJyaWFuIE9ra2VuLgorCistIGludGVncmF0ZSB0YWItY29tcGxldGlvbiBvbiBvcHRp
b25zIHRocm91Z2ggdXNlIG9mICJhcmdjb21wbGV0ZSIuCisgIFRoYW5rcyBBbnRob24gdmFuIGRl
ciBOZXV0IGZvciB0aGUgUFIuCisKKy0gY2hhbmdlIG9wdGlvbiBuYW1lcyB0byBiZSBoeXBoZW4t
c2VwYXJhdGVkIGxvbmcgb3B0aW9ucyBidXQga2VlcCB0aGUKKyAgb2xkIHNwZWxsaW5nIGJhY2t3
YXJkIGNvbXBhdGlibGUuICBweS50ZXN0IC1oIHdpbGwgb25seSBzaG93IHRoZQorICBoeXBoZW5h
dGVkIHZlcnNpb24sIGZvciBleGFtcGxlICItLWNvbGxlY3Qtb25seSIgYnV0ICItLWNvbGxlY3Rv
bmx5IgorICB3aWxsIHJlbWFpbiB2YWxpZCBhcyB3ZWxsIChmb3IgYmFja3dhcmQtY29tcGF0IHJl
YXNvbnMpLiAgTWFueSB0aGFua3MgdG8KKyAgQW50aG9uIHZhbiBkZXIgTmV1dCBmb3IgdGhlIGlt
cGxlbWVudGF0aW9uIGFuZCB0byBIeW5layBTY2hsYXdhY2sgZm9yCisgIHB1c2hpbmcgdXMuCisK
Ky0gZml4IGlzc3VlIDMwOCAtIGFsbG93IHRvIG1hcmsveGZhaWwvc2tpcCBpbmRpdmlkdWFsIHBh
cmFtZXRlciBzZXRzCisgIHdoZW4gcGFyYW1ldHJpemluZy4gIFRoYW5rcyBCcmlhbm5hIExhdWdo
ZXIuCisKKy0gY2FsbCBuZXcgZXhwZXJpbWVudGFsIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRl
c3RzIGhvb2sgdG8gYWxsb3cKKyAgM3JkIHBhcnR5IHBsdWdpbnMgdG8gZG8gc29tZXRoaW5nIGJl
Zm9yZSBhIGNvbmZ0ZXN0IGlzIGxvYWRlZC4KKworQnVnIGZpeGVzOgorCistIGZpeCBpc3N1ZTM1
OCAtIGNhcHR1cmluZyBvcHRpb25zIGFyZSBub3cgcGFyc2VkIG1vcmUgcHJvcGVybHkKKyAgYnkg
dXNpbmcgYSBuZXcgcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MgbWV0aG9kLgorCistIHB5dGVzdCBu
b3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIG9wdHBhcnNlICh0aGFua3MgQW50aG9uKSB3aGlj
aAorICBtZWFucyB0aGF0ICJhcmdwYXJzZSIgaXMgYWRkZWQgYXMgYSBkZXBlbmRlbmN5IGlmIGlu
c3RhbGxpbmcgaW50byBweXRob24yLjYKKyAgZW52aXJvbm1lbnRzIG9yIGJlbG93LgorCistIGZp
eCBpc3N1ZTMzMzogZml4IGEgY2FzZSBvZiBiYWQgdW5pdHRlc3QvcHl0ZXN0IGhvb2sgaW50ZXJh
Y3Rpb24uCisKKy0gUFIyNzogY29ycmVjdGx5IGhhbmRsZSBub3NlLlNraXBUZXN0IGR1cmluZyBj
b2xsZWN0aW9uLiAgVGhhbmtzCisgIEFudG9uaW8gQ3VuaSwgUm9ubnkgUGZhbm5zY2htaWR0Lgor
CistIGZpeCBpc3N1ZTM1NToganVuaXR4bWwgcHV0cyBuYW1lPSJweXRlc3QiIGF0dHJpYnV0ZSB0
byB0ZXN0c3VpdGUgdGFnLgorCistIGZpeCBpc3N1ZTMzNjogYXV0b3VzZSBmaXh0dXJlIGluIHBs
dWdpbnMgc2hvdWxkIHdvcmsgYWdhaW4uCisKKy0gZml4IGlzc3VlMjc5OiBpbXByb3ZlIG9iamVj
dCBjb21wYXJpc29ucyBvbiBhc3NlcnRpb24gZmFpbHVyZQorICBmb3Igc3RhbmRhcmQgZGF0YXR5
cGVzIGFuZCByZWNvZ25pc2UgY29sbGVjdGlvbnMuYWJjLiAgVGhhbmtzIHRvCisgIEJyaWFubmEg
TGF1Z2hlciBhbmQgTWF0aGlldSBBZ29waWFuLgorCistIGZpeCBpc3N1ZTMxNzogYXNzZXJ0aW9u
IHJld3JpdGVyIHN1cHBvcnQgZm9yIHRoZSBpc19wYWNrYWdlIG1ldGhvZAorCistIGZpeCBpc3N1
ZTMzNTogZG9jdW1lbnQgcHkuY29kZS5FeGNlcHRpb25JbmZvKCkgb2JqZWN0IHJldHVybmVkCisg
IGZyb20gcHl0ZXN0LnJhaXNlcygpLCB0aGFua3MgTWF0aGlldSBBZ29waWFuLgorCistIHJlbW92
ZSBpbXBsaWNpdCBkaXN0cmlidXRlX3NldHVwIHN1cHBvcnQgZnJvbSBzZXR1cC5weS4KKworLSBm
aXggaXNzdWUzMDU6IGlnbm9yZSBhbnkgcHJvYmxlbXMgd2hlbiB3cml0aW5nIHB5YyBmaWxlcy4K
KworLSBTTy0xNzY2NDcwMjogY2FsbCBmaXh0dXJlIGZpbmFsaXplcnMgZXZlbiBpZiB0aGUgZml4
dHVyZSBmdW5jdGlvbgorICBwYXJ0aWFsbHkgZmFpbGVkIChmaW5hbGl6ZXJzIHdvdWxkIG5vdCBh
bHdheXMgYmUgY2FsbGVkIGJlZm9yZSkKKworLSBmaXggaXNzdWUzMjAgLSBmaXggY2xhc3Mgc2Nv
cGUgZm9yIGZpeHR1cmVzIHdoZW4gbWl4ZWQgd2l0aAorICBtb2R1bGUtbGV2ZWwgZnVuY3Rpb25z
LiAgVGhhbmtzIEFuYXRsb3kgQnViZW5rb2ZmLgorCistIHlvdSBjYW4gc3BlY2lmeSAiLXEiIG9y
ICItcXEiIHRvIGdldCBkaWZmZXJlbnQgbGV2ZWxzIG9mICJxdWlldGVyIgorICByZXBvcnRpbmcg
KHRoYW5rcyBLYXRhcnp5bmEgSmFjaGltKQorCistIGZpeCBpc3N1ZTMwMCAtIEZpeCBvcmRlciBv
ZiBjb25mdGVzdCBsb2FkaW5nIHdoZW4gc3RhcnRpbmcgcHkudGVzdAorICBpbiBhIHN1YmRpcmVj
dG9yeS4KKworLSBmaXggaXNzdWUzMjMgLSBzb3J0aW5nIG9mIG1hbnkgbW9kdWxlLXNjb3BlZCBh
cmcgcGFyYW1ldHJpemF0aW9ucworCistIG1ha2Ugc2Vzc2lvbmZpbmlzaCBob29rcyBleGVjdXRl
IHdpdGggdGhlIHNhbWUgY3dkLWNvbnRleHQgYXMgYXQKKyAgc2Vzc2lvbiBzdGFydCAoaGVscHMg
Zml4IHBsdWdpbiBiZWhhdmlvdXIgd2hpY2ggd3JpdGUgb3V0cHV0IGZpbGVzCisgIHdpdGggcmVs
YXRpdmUgcGF0aCBzdWNoIGFzIHB5dGVzdC1jb3YpCisKKy0gZml4IGlzc3VlMzE2IC0gcHJvcGVy
bHkgcmVmZXJlbmNlIGNvbGxlY3Rpb24gaG9va3MgaW4gZG9jcworCistIGZpeCBpc3N1ZSAzMDYg
LSBjbGVhbnVwIG9mIC1rLy1tIG9wdGlvbnMgdG8gb25seSBtYXRjaCBtYXJrZXJzL3Rlc3QKKyAg
bmFtZXMva2V5d29yZHMgcmVzcGVjdGl2ZWx5LiAgVGhhbmtzIFdvdXRlciB2YW4gQWNrb295Lgor
CistIGltcHJvdmVkIGRvY3Rlc3QgY291bnRpbmcgZm9yIGRvY3Rlc3RzIGluIHB5dGhvbiBtb2R1
bGVzIC0tCisgIGZpbGVzIHdpdGhvdXQgYW55IGRvY3Rlc3QgaXRlbXMgd2lsbCBub3Qgc2hvdyB1
cCBhbnltb3JlCisgIGFuZCBkb2N0ZXN0IGV4YW1wbGVzIGFyZSBjb3VudGVkIGFzIHNlcGFyYXRl
IHRlc3QgaXRlbXMuCisgIHRoYW5rcyBEYW5pbG8gQmVsbGluaS4KKworLSBmaXggaXNzdWUyNDUg
YnkgZGVwZW5kaW5nIG9uIHRoZSByZWxlYXNlZCBweS0xLjQuMTQKKyAgd2hpY2ggZml4ZXMgcHku
aW8uZHVwZmlsZSB0byB3b3JrIHdpdGggZmlsZXMgd2l0aCBubworICBtb2RlLiBUaGFua3MgSmFz
b24gUi4gQ29vbWJzLgorCistIGZpeCBqdW5pdHhtbCBnZW5lcmF0aW9uIHdoZW4gdGVzdCBvdXRw
dXQgY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXJzLAorICBhZGRyZXNzaW5nIGlzc3VlMjY3LCB0
aGFua3MgSmFhcCBCcm9la2h1aXplbgorCistIGZpeCBpc3N1ZTMzODogaG9ub3IgLS10YiBzdHls
ZSBmb3Igc2V0dXAvdGVhcmRvd24gZXJyb3JzIGFzIHdlbGwuICBUaGFua3MgTWFoby4KKworLSBm
aXggaXNzdWUzMDcgLSB1c2UgeWFtbC5zYWZlX2xvYWQgaW4gZXhhbXBsZSwgdGhhbmtzIE1hcmsg
RWljaGluLgorCistIGJldHRlciBwYXJhbWV0cml6ZSBlcnJvciBtZXNzYWdlcywgdGhhbmtzIEJy
aWFubmEgTGF1Z2hlcgorCistIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0
ZXIpIGhvb2tzIGNhbiBub3cgdXNlCisgICIuc2VjdGlvbih0aXRsZSkiIGFuZCAiLmxpbmUobXNn
KSIgbWV0aG9kcyB0byBwcmludCBleHRyYQorICBpbmZvcm1hdGlvbiBhdCB0aGUgZW5kIG9mIGEg
dGVzdCBydW4uCisKKzIuMy41ICgyMDEzLTA0LTMwKQorPT09PT09PT09PT09PT09PT09CisKKy0g
Zml4IGlzc3VlMTY5OiByZXNwZWN0IC0tdGI9c3R5bGUgd2l0aCBzZXR1cC90ZWFyZG93biBlcnJv
cnMgYXMgd2VsbC4KKworLSBuZXZlciBjb25zaWRlciBhIGZpeHR1cmUgZnVuY3Rpb24gZm9yIHRl
c3QgZnVuY3Rpb24gY29sbGVjdGlvbgorCistIGFsbG93IHJlLXJ1bm5pbmcgb2YgdGVzdCBpdGVt
cyAvIGhlbHBzIHRvIGZpeCBweXRlc3QtcmVydW50ZXN0cyBwbHVnaW4KKyAgYW5kIGFsc28gaGVs
cCB0byBrZWVwIGxlc3MgZml4dHVyZS9yZXNvdXJjZSByZWZlcmVuY2VzIGFsaXZlCisKKy0gcHV0
IGNhcHR1cmVkIHN0ZG91dC9zdGRlcnIgaW50byBqdW5pdHhtbCBvdXRwdXQgZXZlbiBmb3IgcGFz
c2luZyB0ZXN0cworICAodGhhbmtzIEFkYW0gR291Y2hlcikKKworLSBJc3N1ZSAyNjUgLSBpbnRl
Z3JhdGUgbm9zZSBzZXR1cC90ZWFyZG93biB3aXRoIHNldHVwc3RhdGUKKyAgc28gaXQgZG9lc24n
dCB0cnkgdG8gdGVhcmRvd24gaWYgaXQgZGlkIG5vdCBzZXR1cAorCistIGlzc3VlIDI3MSAtIGRv
bid0IHdyaXRlIGp1bml0eG1sIG9uIHdvcmtlciBub2RlcworCistIElzc3VlIDI3NCAtIGRvbid0
IHRyeSB0byBzaG93IGZ1bGwgZG9jdGVzdCBleGFtcGxlCisgIHdoZW4gZG9jdGVzdCBkb2VzIG5v
dCBrbm93IHRoZSBleGFtcGxlIGxvY2F0aW9uCisKKy0gaXNzdWUgMjgwIC0gZGlzYWJsZSBhc3Nl
cnRpb24gcmV3cml0aW5nIG9uIGJ1Z2d5IENQeXRob24gMi42LjAKKworLSBpbmplY3QgImdldGZp
eHR1cmUoKSIgaGVscGVyIHRvIHJldHJpZXZlIGZpeHR1cmVzIGZyb20gZG9jdGVzdHMsCisgIHRo
YW5rcyBBbmRyZWFzIFplaWRsZXIKKworLSBpc3N1ZSAyNTkgLSB3aGVuIGFzc2VydGlvbiByZXdy
aXRpbmcsIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgZGVmYXVsdAorICBzb3VyY2UgZW5jb2Rpbmcg
b2YgQVNDSUkgb24gUHl0aG9uIDIKKworLSBpc3N1ZSAyNTEgLSByZXBvcnQgYSBza2lwIGluc3Rl
YWQgb2YgaWdub3JpbmcgY2xhc3NlcyB3aXRoIGluaXQKKworLSBpc3N1ZTI1MCB1bmljb2RlL3N0
ciBtaXhlcyBpbiBwYXJhbWV0cml6YXRpb24gbmFtZXMgYW5kIHZhbHVlcyBub3cgd29ya3MKKwor
LSBpc3N1ZTI1NywgYXNzZXJ0aW9uLXRyaWdnZXJlZCBjb21waWxhdGlvbiBvZiBzb3VyY2UgZW5k
aW5nIGluIGEKKyAgY29tbWVudCBsaW5lIGRvZXNuJ3QgYmxvdyB1cCBpbiBweXRob24yLjUgKGZp
eGVkIHRocm91Z2ggcHk+PTEuNC4xMy5kZXY2KQorCistIGZpeCAtLWdlbnNjcmlwdCBvcHRpb24g
dG8gZ2VuZXJhdGUgc3RhbmRhbG9uZSBzY3JpcHRzIHRoYXQgYWxzbworICB3b3JrIHdpdGggcHl0
aG9uMy4zIChpbXBvcnRlciBvcmRlcmluZykKKworLSBpc3N1ZTE3MSAtIGluIGFzc2VydGlvbiBy
ZXdyaXRpbmcsIHNob3cgdGhlIHJlcHIgb2Ygc29tZQorICBnbG9iYWwgdmFyaWFibGVzCisKKy0g
Zml4IG9wdGlvbiBoZWxwIGZvciAiLWsiCisKKy0gbW92ZSBsb25nIGRlc2NyaXB0aW9uIG9mIGRp
c3RyaWJ1dGlvbiBpbnRvIFJFQURNRS5yc3QKKworLSBpbXByb3ZlIGRvY3N0cmluZyBmb3IgbWV0
YWZ1bmMucGFyYW1ldHJpemUoKQorCistIGZpeCBidWcgd2hlcmUgdXNpbmcgY2Fwc3lzIHdpdGgg
cHl0ZXN0LnNldF90cmFjZSgpIGluIGEgdGVzdAorICBmdW5jdGlvbiB3b3VsZCBicmVhayB3aGVu
IGxvb2tpbmcgYXQgY2Fwc3lzLnJlYWRvdXRlcnIoKQorCistIGFsbG93IHRvIHNwZWNpZnkgcHJl
Zml4ZXMgc3RhcnRpbmcgd2l0aCAiXyIgd2hlbgorICBjdXN0b21pemluZyBweXRob25fZnVuY3Rp
b25zIHRlc3QgZGlzY292ZXJ5LiAodGhhbmtzIEdyYWhhbSBIb3JsZXIpCisKKy0gaW1wcm92ZSBQ
WVRFU1RfREVCVUcgdHJhY2luZyBvdXRwdXQgYnkgcHV0dGluZworICBleHRyYSBkYXRhIG9uIGEg
bmV3IGxpbmVzIHdpdGggYWRkaXRpb25hbCBpbmRlbnQKKworLSBlbnN1cmUgT3V0Y29tZUV4Y2Vw
dGlvbnMgbGlrZSBza2lwL2ZhaWwgaGF2ZSBpbml0aWFsaXplZCBleGNlcHRpb24gYXR0cmlidXRl
cworCistIGlzc3VlIDI2MCAtIGRvbid0IHVzZSBub3NlIHNwZWNpYWwgc2V0dXAgb24gcGxhaW4g
dW5pdHRlc3QgY2FzZXMKKworLSBmaXggaXNzdWUxMzQgLSBwcmludCB0aGUgY29sbGVjdCBlcnJv
cnMgdGhhdCBwcmV2ZW50IHJ1bm5pbmcgc3BlY2lmaWVkIHRlc3QgaXRlbXMKKworLSBmaXggaXNz
dWUyNjYgLSBhY2NlcHQgdW5pY29kZSBpbiBNYXJrRXZhbHVhdG9yIGV4cHJlc3Npb25zCisKKzIu
My40ICgyMDEyLTExLTIwKQorPT09PT09PT09PT09PT09PT09CisKKy0geWllbGRlZCB0ZXN0IGZ1
bmN0aW9ucyB3aWxsIG5vdyBoYXZlIGF1dG91c2UtZml4dHVyZXMgYWN0aXZlIGJ1dAorICBjYW5u
b3QgYWNjZXB0IGZpeHR1cmVzIGFzIGZ1bmNhcmdzIC0gaXQncyBhbnl3YXkgcmVjb21tZW5kZWQg
dG8KKyAgcmF0aGVyIHVzZSB0aGUgcG9zdC0yLjAgcGFyYW1ldHJpemUgZmVhdHVyZXMgaW5zdGVh
ZCBvZiB5aWVsZCwgc2VlOgorICBodHRwOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvZXhhbXBsZS9w
YXJhbWV0cml6ZS5odG1sCistIGZpeCBhdXRvdXNlLWlzc3VlIHdoZXJlIGF1dG91c2UtZml4dHVy
ZXMgd291bGQgbm90IGJlIGRpc2NvdmVyZWQKKyAgaWYgZGVmaW5lZCBpbiBhbiBhL2NvbmZ0ZXN0
LnB5IGZpbGUgYW5kIHRlc3RzIGluIGEvdGVzdHMvdGVzdF9zb21lLnB5CistIGZpeCBpc3N1ZTIy
NiAtIExJRk8gb3JkZXJpbmcgZm9yIGZpeHR1cmUgdGVhcmRvd25zCistIGZpeCBpc3N1ZTIyNCAt
IGludm9jYXRpb25zIHdpdGggPjI1NiBjaGFyIGFyZ3VtZW50cyBub3cgd29yaworLSBmaXggaXNz
dWU5MSAtIGFkZC9kaXNjdXNzIHBhY2thZ2UvZGlyZWN0b3J5IGxldmVsIHNldHVwcyBpbiBleGFt
cGxlCistIGFsbG93IHRvIGR5bmFtaWNhbGx5IGRlZmluZSBtYXJrZXJzIHZpYQorICBpdGVtLmtl
eXdvcmRzWy4uLl09YXNzaWdubWVudCBpbnRlZ3JhdGluZyB3aXRoICItbSIgb3B0aW9uCistIG1h
a2UgIi1rIiBhY2NlcHQgYW4gZXhwcmVzc2lvbnMgdGhlIHNhbWUgYXMgd2l0aCAiLW0iIHNvIHRo
YXQgb25lCisgIGNhbiB3cml0ZTogLWsgIm5hbWUxIG9yIG5hbWUyIiBldGMuICBUaGlzIGlzIGEg
c2xpZ2h0IGluY29tcGF0aWJpbGl0eQorICBpZiB5b3UgdXNlZCBzcGVjaWFsIHN5bnRheCBsaWtl
ICJUZXN0Q2xhc3MudGVzdF9tZXRob2QiIHdoaWNoIHlvdSBub3cKKyAgbmVlZCB0byB3cml0ZSBh
cyAtayAiVGVzdENsYXNzIGFuZCB0ZXN0X21ldGhvZCIgdG8gbWF0Y2ggYSBjZXJ0YWluCisgIG1l
dGhvZCBpbiBhIGNlcnRhaW4gdGVzdCBjbGFzcy4KKworMi4zLjMgKDIwMTItMTEtMDYpCis9PT09
PT09PT09PT09PT09PT0KKworLSBmaXggaXNzdWUyMTQgLSBwYXJzZSBtb2R1bGVzIHRoYXQgY29u
dGFpbiBzcGVjaWFsIG9iamVjdHMgbGlrZSBlLiBnLgorICBmbGFzaydzIHJlcXVlc3Qgb2JqZWN0
IHdoaWNoIGJsb3dzIHVwIG9uIGdldGF0dHIgYWNjZXNzIGlmIG5vIHJlcXVlc3QKKyAgaXMgYWN0
aXZlLiB0aGFua3MgVGhvbWFzIFdhbGRtYW5uLgorCistIGZpeCBpc3N1ZTIxMyAtIGFsbG93IHRv
IHBhcmFtZXRyaXplIHdpdGggdmFsdWVzIGxpa2UgbnVtcHkgYXJyYXlzIHRoYXQKKyAgZG8gbm90
IHN1cHBvcnQgYW4gX19lcV9fIG9wZXJhdG9yCisKKy0gZml4IGlzc3VlMjE1IC0gc3BsaXQgdGVz
dF9weXRob24ub3JnIGludG8gbXVsdGlwbGUgZmlsZXMKKworLSBmaXggaXNzdWUxNDggLSBAdW5p
dHRlc3Quc2tpcCBvbiBjbGFzc2VzIGlzIG5vdyByZWNvZ25pemVkIGFuZCBhdm9pZHMKKyAgY2Fs
bGluZyBzZXRVcENsYXNzL3RlYXJEb3duQ2xhc3MsIHRoYW5rcyBQYXZlbCBSZXBpbgorCistIGZp
eCBpc3N1ZTIwOSAtIHJlaW50cm9kdWNlIHB5dGhvbjIuNCBzdXBwb3J0IGJ5IGRlcGVuZGluZyBv
biBuZXdlcgorICBweWxpYiB3aGljaCByZS1pbnRyb2R1Y2VkIHN0YXRlbWVudC1maW5kaW5nIGZv
ciBwcmUtQVNUIGludGVycHJldGVycworCistIG5vc2Ugc3VwcG9ydDogb25seSBjYWxsIHNldHVw
IGlmIGl0J3MgYSBjYWxsYWJsZSwgdGhhbmtzIEFuZHJldworICBUYXVtb2Vmb2xhdQorCistIGZp
eCBpc3N1ZTIxOSAtIGFkZCBweTIuNC0zLjMgY2xhc3NpZmllcnMgdG8gVFJPVkUgbGlzdAorCist
IGluIHRyYWNlYmFja3MgKiwqKiBhcmcgdmFsdWVzIGFyZSBub3cgc2hvd24gbmV4dCB0byBub3Jt
YWwgYXJndW1lbnRzCisgICh0aGFua3MgTWFudWVsIEphY29iKQorCistIGZpeCBpc3N1ZTIxNyAt
IHN1cHBvcnQgbW9jay5wYXRjaCB3aXRoIHB5dGVzdCdzIGZpeHR1cmVzIC0gbm90ZSB0aGF0Cisg
IHlvdSBuZWVkIGVpdGhlciBtb2NrLTEuMC4xIG9yIHRoZSBweXRob24zLjMgYnVpbHRpbiB1bml0
dGVzdC5tb2NrLgorCistIGZpeCBpc3N1ZTEyNyAtIGltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3Ig
cHl0ZXN0X2FkZG9wdGlvbigpIGFuZAorICBhZGQgYSBgYGNvbmZpZy5nZXRvcHRpb24obmFtZSlg
YCBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnNpc3RlbmN5LgorCisyLjMuMiAoMjAxMi0xMC0yNSkK
Kz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTIwOCBhbmQgZml4IGlzc3VlMjkgdXNl
IG5ldyBweSB2ZXJzaW9uIHRvIGF2b2lkIGxvbmcgcGF1c2VzCisgIHdoZW4gcHJpbnRpbmcgdHJh
Y2ViYWNrcyBpbiBsb25nIG1vZHVsZXMKKworLSBmaXggaXNzdWUyMDUgLSBjb25mdGVzdHMgaW4g
c3ViZGlycyBjdXN0b21pemluZworICBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUgYW5kIHB5
dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0KKyAgbm93IHdvcmsgcHJvcGVybHkKKworLSBmaXggdGVh
cmRvd24tb3JkZXJpbmcgZm9yIHBhcmFtZXRyaXplZCBzZXR1cHMKKworLSBmaXggaXNzdWUxMjcg
LSBiZXR0ZXIgZG9jdW1lbnRhdGlvbiBmb3IgcHl0ZXN0X2FkZG9wdGlvbgorICBhbmQgcmVsYXRl
ZCBvYmplY3RzLgorCistIGZpeCB1bml0dGVzdCBiZWhhdmlvdXI6IFRlc3RDYXNlLnJ1bnRlc3Qg
b25seSBjYWxsZWQgaWYgdGhlcmUgYXJlCisgIHRlc3QgbWV0aG9kcyBkZWZpbmVkCisKKy0gaW1w
cm92ZSB0cmlhbCBzdXBwb3J0OiBkb24ndCBjb2xsZWN0IGl0cyBlbXB0eQorICB1bml0dGVzdC5U
ZXN0Q2FzZS5ydW5UZXN0KCkgbWV0aG9kCisKKy0gInB5dGhvbiBzZXR1cC5weSB0ZXN0IiBub3cg
d29ya3Mgd2l0aCBweXRlc3QgaXRzZWxmCisKKy0gZml4L2ltcHJvdmUgaW50ZXJuYWwvcGFja2Fn
aW5nIHJlbGF0ZWQgYml0czoKKworICAtIGV4Y2VwdGlvbiBtZXNzYWdlIGNoZWNrIG9mIHRlc3Rf
bm9zZS5weSBub3cgcGFzc2VzIG9uIHB5dGhvbjMzIGFzIHdlbGwKKworICAtIGlzc3VlMjA2IC0g
Zml4IHRlc3RfYXNzZXJ0cmV3cml0ZS5weSB0byB3b3JrIHdoZW4gYSBnbG9iYWwKKyAgICBQWVRI
T05ET05UV1JJVEVCWVRFQ09ERT0xIGlzIHByZXNlbnQKKworICAtIGFkZCB0b3guaW5pIHRvIHB5
dGVzdCBkaXN0cmlidXRpb24gc28gdGhhdCBpZ25vcmUtZGlycyBhbmQgb3RoZXJzIGNvbmZpZwor
ICAgIGJpdHMgYXJlIHByb3Blcmx5IGRpc3RyaWJ1dGVkIGZvciBtYWludGFpbmVycyB3aG8gcnVu
IHB5dGVzdC1vd24gdGVzdHMKKworMi4zLjEgKDIwMTItMTAtMjApCis9PT09PT09PT09PT09PT09
PT0KKworLSBmaXggaXNzdWUyMDIgLSBmaXggcmVncmVzc2lvbjogdXNpbmcgInNlbGYiIGZyb20g
Zml4dHVyZSBmdW5jdGlvbnMgbm93CisgIHdvcmtzIGFzIGV4cGVjdGVkIChpdCdzIHRoZSBzYW1l
ICJzZWxmIiBpbnN0YW5jZSB0aGF0IGEgdGVzdCBtZXRob2QKKyAgd2hpY2ggdXNlcyB0aGUgZml4
dHVyZSBzZWVzKQorCistIHNraXAgcGV4cGVjdCB1c2luZyB0ZXN0cyAodGVzdF9wZGIucHkgbW9z
dGx5KSBvbiBmcmVlYnNkKiBzeXN0ZW1zCisgIGR1ZSB0byBwZXhwZWN0IG5vdCBzdXBwb3J0aW5n
IGl0IHByb3Blcmx5IChoYW5naW5nKQorCistIGxpbmsgdG8gd2ViIHBhZ2VzIGZyb20gLS1tYXJr
ZXJzIG91dHB1dCB3aGljaCBwcm92aWRlcyBoZWxwIGZvcgorICBweXRlc3QubWFyay4qIHVzYWdl
LgorCisyLjMuMCAoMjAxMi0xMC0xOSkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1
ZTIwMiAtIGJldHRlciBhdXRvbWF0aWMgbmFtZXMgZm9yIHBhcmFtZXRyaXplZCB0ZXN0IGZ1bmN0
aW9ucworLSBmaXggaXNzdWUxMzkgLSBpbnRyb2R1Y2UgQHB5dGVzdC5maXh0dXJlIHdoaWNoIGFs
bG93cyBkaXJlY3Qgc2NvcGluZworICBhbmQgcGFyYW1ldHJpemF0aW9uIG9mIGZ1bmNhcmcgZmFj
dG9yaWVzLgorLSBmaXggaXNzdWUxOTggLSBjb25mdGVzdCBmaXh0dXJlcyB3ZXJlIG5vdCBmb3Vu
ZCBvbiB3aW5kb3dzMzIgaW4gc29tZQorICBjaXJjdW1zdGFuY2VzIHdpdGggbmVzdGVkIGRpcmVj
dG9yeSBzdHJ1Y3R1cmVzIGR1ZSB0byBwYXRoIG1hbmlwdWxhdGlvbiBpc3N1ZXMKKy0gZml4IGlz
c3VlMTkzIHNraXAgdGVzdCBmdW5jdGlvbnMgd2l0aCB3ZXJlIHBhcmFtZXRyaXplZCB3aXRoIGVt
cHR5CisgIHBhcmFtZXRlciBzZXRzCistIGZpeCBweXRob24zLjMgY29tcGF0LCBtb3N0bHkgcmVw
b3J0aW5nIGJpdHMgdGhhdCBwcmV2aW91c2x5IGRlcGVuZGVkCisgIG9uIGRpY3Qgb3JkZXJpbmcK
Ky0gaW50cm9kdWNlIHJlLW9yZGVyaW5nIG9mIHRlc3RzIGJ5IHJlc291cmNlIGFuZCBwYXJhbWV0
cml6YXRpb24gc2V0dXAKKyAgd2hpY2ggdGFrZXMgcHJlY2VkZW5jZSB0byB0aGUgdXN1YWwgZmls
ZS1vcmRlcmluZworLSBmaXggaXNzdWUxODUgbW9ua2V5cGF0Y2hpbmcgdGltZS50aW1lIGRvZXMg
bm90IGNhdXNlIHB5dGVzdCB0byBmYWlsCistIGZpeCBpc3N1ZTE3MiBkdXBsaWNhdGUgY2FsbCBv
ZiBweXRlc3QuZml4dHVyZSBkZWNvcmF0b3JlZCBzZXR1cF9tb2R1bGUKKyAgZnVuY3Rpb25zCist
IGZpeCBqdW5pdHhtbD1wYXRoIGNvbnN0cnVjdGlvbiBzbyB0aGF0IGlmIHRlc3RzIGNoYW5nZSB0
aGUKKyAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgdGhlIHBhdGggaXMgYSByZWxhdGl2
ZSBwYXRoCisgIGl0IGlzIGNvbnN0cnVjdGVkIGNvcnJlY3RseSBmcm9tIHRoZSBvcmlnaW5hbCBj
dXJyZW50IHdvcmtpbmcgZGlyLgorLSBmaXggInB5dGhvbiBzZXR1cC5weSB0ZXN0IiBleGFtcGxl
IHRvIGNhdXNlIGEgcHJvcGVyICJlcnJubyIgcmV0dXJuCistIGZpeCBpc3N1ZTE2NSAtIGZpeCBi
cm9rZW4gZG9jIGxpbmtzIGFuZCBtZW50aW9uIHN0YWNrb3ZlcmZsb3cgZm9yIEZBUQorLSBjYXRj
aCB1bmljb2RlLWlzc3VlcyB3aGVuIHdyaXRpbmcgZmFpbHVyZSByZXByZXNlbnRhdGlvbnMKKyAg
dG8gdGVybWluYWwgdG8gcHJldmVudCB0aGUgd2hvbGUgc2Vzc2lvbiBmcm9tIGNyYXNoaW5nCist
IGZpeCB4ZmFpbC9za2lwIGNvbmZ1c2lvbjogYSBza2lwLW1hcmsgb3IgYW4gaW1wZXJhdGl2ZSBw
eXRlc3Quc2tpcAorICB3aWxsIG5vdyB0YWtlIHByZWNlZGVuY2UgYmVmb3JlIHhmYWlsLW1hcmtl
cnMgYmVjYXVzZSB3ZQorICBjYW4ndCBkZXRlcm1pbmUgeGZhaWwveHBhc3Mgc3RhdHVzIGluIGNh
c2Ugb2YgYSBza2lwLiBzZWUgYWxzbzoKKyAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0
aW9ucy8xMTEwNTgyOC9pbi1weS10ZXN0LXdoZW4taS1leHBsaWNpdGx5LXNraXAtYS10ZXN0LXRo
YXQtaXMtbWFya2VkLWFzLXhmYWlsLWhvdy1jYW4taS1nZXQKKworLSBhbHdheXMgcmVwb3J0IGlu
c3RhbGxlZCAzcmQgcGFydHkgcGx1Z2lucyBpbiB0aGUgaGVhZGVyIG9mIGEgdGVzdCBydW4KKwor
LSBmaXggaXNzdWUxNjA6IGEgZmFpbGluZyBzZXR1cCBvZiBhbiB4ZmFpbC1tYXJrZWQgdGVzdHMg
c2hvdWxkCisgIGJlIHJlcG9ydGVkIGFzIHhmYWlsIChub3QgeHBhc3MpCisKKy0gZml4IGlzc3Vl
MTI4OiBzaG93IGNhcHR1cmVkIG91dHB1dCB3aGVuIGNhcHN5cy9jYXBmZCBhcmUgdXNlZAorCist
IGZpeCBpc3N1ZTE3OTogcHJvcGVybHkgc2hvdyB0aGUgZGVwZW5kZW5jeSBjaGFpbiBvZiBmYWN0
b3JpZXMKKworLSBwbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKC4uLikgbm93IHJhaXNlcyBWYWx1ZUVy
cm9yIGlmIHRoZQorICBwbHVnaW4gaGFzIGJlZW4gYWxyZWFkeSByZWdpc3RlcmVkIG9yIHRoZSBu
YW1lIGlzIHRha2VuCisKKy0gZml4IGlzc3VlMTU5OiBpbXByb3ZlIGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuLzYuMC4xL2ZhcS5odG1sCisgIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0IHRvIHRo
ZSAibWFnaWMiIGhpc3RvcnksIGFsc28gbWVudGlvbgorICBweXRlc3QtZGphbmdvLCB0cmlhbCBh
bmQgdW5pdHRlc3QgaW50ZWdyYXRpb24uCisKKy0gbWFrZSByZXF1ZXN0LmtleXdvcmRzIGFuZCBu
b2RlLmtleXdvcmRzIHdyaXRhYmxlLiAgQWxsIGRlc2NlbmRhbnQKKyAgY29sbGVjdGlvbiBub2Rl
cyB3aWxsIHNlZSBrZXl3b3JkIHZhbHVlcy4gIEtleXdvcmRzIGFyZSBkaWN0aW9uYXJpZXMKKyAg
Y29udGFpbmluZyBtYXJrZXJzIGFuZCBvdGhlciBpbmZvLgorCistIGZpeCBpc3N1ZSAxNzg6IHht
bCBiaW5hcnkgZXNjYXBlcyBhcmUgbm93IHdyYXBwZWQgaW4gcHkueG1sLnJhdworCistIGZpeCBp
c3N1ZSAxNzY6IGNvcnJlY3RseSBjYXRjaCB0aGUgYnVpbHRpbiBBc3NlcnRpb25FcnJvcgorICBl
dmVuIHdoZW4gd2UgcmVwbGFjZWQgQXNzZXJ0aW9uRXJyb3Igd2l0aCBhIHN1YmNsYXNzIG9uIHRo
ZQorICBweXRob24gbGV2ZWwKKworLSBmYWN0b3J5IGRpc2NvdmVyeSBubyBsb25nZXIgZmFpbHMg
d2l0aCBtYWdpYyBnbG9iYWwgY2FsbGFibGVzCisgIHRoYXQgcHJvdmlkZSBubyBzYW5lIF9fY29k
ZV9fIG9iamVjdCAobW9jay5jYWxsIGZvciBleGFtcGxlKQorCistIGZpeCBpc3N1ZSAxODI6IHRl
c3RkaXIuaW5wcm9jZXNzX3J1biBub3cgY29uc2lkZXJzIHBhc3NlZCBwbHVnaW5zCisKKy0gZml4
IGlzc3VlIDE4ODogZW5zdXJlIHN5cy5leGNfaW5mbyBpcyBjbGVhciBvbiBweXRob24yCisgICAg
ICAgICAgICAgICAgIGJlZm9yZSBjYWxsaW5nIGludG8gYSB0ZXN0CisKKy0gZml4IGlzc3VlIDE5
MTogYWRkIHVuaXR0ZXN0IFRlc3RDYXNlIHJ1blRlc3QgbWV0aG9kIHN1cHBvcnQKKy0gZml4IGlz
c3VlIDE1NjogbW9ua2V5cGF0Y2ggY29ycmVjdGx5IGhhbmRsZXMgY2xhc3MgbGV2ZWwgZGVzY3Jp
cHRvcnMKKworLSByZXBvcnRpbmcgcmVmaW5lbWVudHM6CisKKyAgLSBweXRlc3RfcmVwb3J0X2hl
YWRlciBub3cgcmVjZWl2ZXMgYSAic3RhcnRkaXIiIHNvIHRoYXQKKyAgICB5b3UgY2FuIHVzZSBz
dGFydGRpci5iZXN0cmVscGF0aCh5b3VycGF0aCkgdG8gc2hvdworICAgIG5pY2UgcmVsYXRpdmUg
cGF0aAorCisgIC0gYWxsb3cgcGx1Z2lucyB0byBpbXBsZW1lbnQgYm90aCBweXRlc3RfcmVwb3J0
X2hlYWRlciBhbmQKKyAgICBweXRlc3Rfc2Vzc2lvbnN0YXJ0IChzZXNzaW9uc3RhcnQgaXMgaW52
b2tlZCBmaXJzdCkuCisKKyAgLSBkb24ndCBzaG93IGRlc2VsZWN0ZWQgcmVhc29uIGxpbmUgaWYg
dGhlcmUgaXMgbm9uZQorCisgIC0gcHkudGVzdCAtdnYgd2lsbCBzaG93IGFsbCBvZiBhc3NlcnQg
Y29tcGFyaXNvbnMgaW5zdGVhZCBvZiB0cnVuY2F0aW5nCisKKzIuMi40ICgyMDEyLTA1LTIyKQor
PT09PT09PT09PT09PT09PT09CisKKy0gZml4IGVycm9yIG1lc3NhZ2UgZm9yIHJld3JpdHRlbiBh
c3NlcnRpb25zIGludm9sdmluZyB0aGUgJSBvcGVyYXRvcgorLSBmaXggaXNzdWUgMTI2OiBjb3Jy
ZWN0bHkgbWF0Y2ggYWxsIGludmFsaWQgeG1sIGNoYXJhY3RlcnMgZm9yIGp1bml0eG1sCisgIGJp
bmFyeSBlc2NhcGUKKy0gZml4IGlzc3VlIHdpdGggdW5pdHRlc3Q6IG5vdyBAdW5pdHRlc3QuZXhw
ZWN0ZWRGYWlsdXJlIG1hcmtlcnMgc2hvdWxkCisgIGJlIHByb2Nlc3NlZCBjb3JyZWN0bHkgKHlv
dSBjYW4gYWxzbyB1c2UgQHB5dGVzdC5tYXJrIG1hcmtlcnMpCistIGRvY3VtZW50IGludGVncmF0
aW9uIHdpdGggdGhlIGV4dGVuZGVkIGRpc3RyaWJ1dGUvc2V0dXB0b29scyB0ZXN0IGNvbW1hbmRz
CistIGZpeCBpc3N1ZSAxNDA6IHByb3Blcmx5IGdldCB0aGUgcmVhbCBmdW5jdGlvbnMKKyAgb2Yg
Ym91bmQgY2xhc3NtZXRob2RzIGZvciBzZXR1cC90ZWFyZG93bl9jbGFzcworLSBmaXggaXNzdWUg
IzE0MTogc3dpdGNoIGZyb20gdGhlIGRlY2Vhc2VkIHBhc3RlLnBvY29vLm9yZyB0byBicGFzdGUu
bmV0CistIGZpeCBpc3N1ZSAjMTQzOiBjYWxsIHVuY29uZmlndXJlL3Nlc3Npb25maW5pc2ggYWx3
YXlzIHdoZW4KKyAgY29uZmlndXJlL3Nlc3Npb25zdGFydCB3aGVyZSBjYWxsZWQKKy0gZml4IGlz
c3VlICMxNDQ6IGJldHRlciBtYW5nbGUgdGVzdCBpZHMgdG8ganVuaXR4bWwgY2xhc3NuYW1lcwor
LSB1cGdyYWRlIGRpc3RyaWJ1dGVfc2V0dXAucHkgdG8gMC42LjI3CisKKzIuMi4zICgyMDEyLTAy
LTA1KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IHVwbG9hZGVkIHBhY2thZ2UgdG8gb25s
eSBpbmNsdWRlIG5lY2Vzc2FyeSBmaWxlcworCisyLjIuMiAoMjAxMi0wMi0wNSkKKz09PT09PT09
PT09PT09PT09PQorCistIGZpeCBpc3N1ZTEwMTogd3JvbmcgYXJncyB0byB1bml0dGVzdC5UZXN0
Q2FzZSB0ZXN0IGZ1bmN0aW9uIG5vdworICBwcm9kdWNlIGJldHRlciBvdXRwdXQKKy0gZml4IGlz
c3VlMTAyOiByZXBvcnQgbW9yZSB1c2VmdWwgZXJyb3JzIGFuZCBoaW50cyBmb3Igd2hlbiBhCisg
IHRlc3QgZGlyZWN0b3J5IHdhcyByZW5hbWVkIGFuZCBzb21lIHB5Yy9fX3B5Y2FjaGVfXyByZW1h
aW4KKy0gZml4IGlzc3VlMTA2OiBhbGxvdyBwYXJhbWV0cml6ZSB0byBiZSBhcHBsaWVkIG11bHRp
cGxlIHRpbWVzCisgIGUuZy4gZnJvbSBtb2R1bGUsIGNsYXNzIGFuZCBhdCBmdW5jdGlvbiBsZXZl
bC4KKy0gZml4IGlzc3VlMTA3OiBhY3R1YWxseSBwZXJmb3JtIHNlc3Npb24gc2NvcGUgZmluYWxp
emF0aW9uCistIGRvbid0IGNoZWNrIGluIHBhcmFtZXRyaXplIGlmIGluZGlyZWN0IHBhcmFtZXRl
cnMgYXJlIGZ1bmNhcmcgbmFtZXMKKy0gYWRkIGNoZGlyIG1ldGhvZCB0byBtb25rZXlwYXRjaCBm
dW5jYXJnCistIGZpeCBjcmFzaCByZXN1bHRpbmcgZnJvbSBjYWxsaW5nIG1vbmtleXBhdGNoIHVu
ZG8gYSBzZWNvbmQgdGltZQorLSBmaXggaXNzdWUxMTU6IG1ha2UgLS1jb2xsZWN0b25seSByb2J1
c3QgYWdhaW5zdCBlYXJseSBmYWlsdXJlCisgIChtaXNzaW5nIGZpbGVzL2RpcmVjdG9yaWVzKQor
LSAiLXFxIC0tY29sbGVjdG9ubHkiIG5vdyBzaG93cyBvbmx5IGZpbGVzIGFuZCB0aGUgbnVtYmVy
IG9mIHRlc3RzIGluIHRoZW0KKy0gIi1xIC0tY29sbGVjdG9ubHkiIG5vdyBzaG93cyB0ZXN0IGlk
cworLSBhbGxvdyBhZGRpbmcgb2YgYXR0cmlidXRlcyB0byB0ZXN0IHJlcG9ydHMgc3VjaCB0aGF0
IGl0IGFsc28gd29ya3MKKyAgd2l0aCBkaXN0cmlidXRlZCB0ZXN0aW5nIChubyB1cGdyYWRlIG9m
IHB5dGVzdC14ZGlzdCBuZWVkZWQpCisKKzIuMi4xICgyMDExLTEyLTE2KQorPT09PT09PT09PT09
PT09PT09CisKKy0gZml4IGlzc3VlOTkgKGluIHB5dGVzdCBhbmQgcHkpIGludGVybmFsbGVycm9y
cyB3aXRoIHJlc3VsdGxvZyBub3cKKyAgcHJvZHVjZSBiZXR0ZXIgb3V0cHV0IC0gZml4ZWQgYnkg
bm9ybWFsaXppbmcgcHl0ZXN0X2ludGVybmFsZXJyb3IKKyAgaW5wdXQgYXJndW1lbnRzLgorLSBm
aXggaXNzdWU5NyAvIHRyYWNlYmFjayBpc3N1ZXMgKGluIHB5dGVzdCBhbmQgcHkpIGltcHJvdmUg
dHJhY2ViYWNrIG91dHB1dAorICBpbiBjb25qdW5jdGlvbiB3aXRoIGppbmphMiBhbmQgY3l0aG9u
IHdoaWNoIGhhY2sgdHJhY2ViYWNrcworLSBmaXggaXNzdWU5MyAoaW4gcHl0ZXN0IGFuZCBweXRl
c3QteGRpc3QpIGF2b2lkICJkZWxheWVkIHRlYXJkb3ducyI6CisgIHRoZSBmaW5hbCB0ZXN0IGlu
IGEgdGVzdCBub2RlIHdpbGwgbm93IHJ1biBpdHMgdGVhcmRvd24gZGlyZWN0bHkKKyAgaW5zdGVh
ZCBvZiB3YWl0aW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzZXNzaW9uLiBUaGFua3MgRGF2ZSBIdW50
IGZvcgorICB0aGUgZ29vZCByZXBvcnRpbmcgYW5kIGZlZWRiYWNrLiAgVGhlIHB5dGVzdF9ydW50
ZXN0X3Byb3RvY29sIGFzIHdlbGwKKyAgYXMgdGhlIHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duIGhv
b2tzIG5vdyBoYXZlICJuZXh0aXRlbSIgYXZhaWxhYmxlCisgIHdoaWNoIHdpbGwgYmUgTm9uZSBp
bmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIHRlc3QgcnVuLgorLSBmaXggY29sbGVjdGlvbiBjcmFz
aCBkdWUgdG8gdW5rbm93bi1zb3VyY2UgY29sbGVjdGVkIGl0ZW1zLCB0aGFua3MKKyAgdG8gUmFs
ZiBTY2htaXR0IChmaXhlZCBieSBkZXBlbmRpbmcgb24gYSBtb3JlIHJlY2VudCBweWxpYikKKwor
Mi4yLjAgKDIwMTEtMTEtMTgpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggaXNzdWU5MDog
aW50cm9kdWNlIGVhZ2VyIHRlYXJpbmcgZG93biBvZiB0ZXN0IGl0ZW1zIHNvIHRoYXQKKyAgdGVh
cmRvd24gZnVuY3Rpb24gYXJlIGNhbGxlZCBlYXJsaWVyLgorLSBhZGQgYW4gYWxsLXBvd2VyZnVs
IG1ldGFmdW5jLnBhcmFtZXRyaXplIGZ1bmN0aW9uIHdoaWNoIGFsbG93cyB0bworICBwYXJhbWV0
cml6ZSB0ZXN0IGZ1bmN0aW9uIGFyZ3VtZW50cyBpbiBtdWx0aXBsZSBzdGVwcyBhbmQgdGhlcmVm
b3JlCisgIGZyb20gaW5kZXBlbmRlbnQgcGx1Z2lucyBhbmQgcGxhY2VzLgorLSBhZGQgYSBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUgaGVscGVyIHdoaWNoIGFsbG93cyB0byBlYXNpbHkKKyAgY2Fs
bCBhIHRlc3QgZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdmFsdWVzCistIEFkZCBl
eGFtcGxlcyB0byB0aGUgInBhcmFtZXRyaXplIiBleGFtcGxlIHBhZ2UsIGluY2x1ZGluZyBhIHF1
aWNrIHBvcnQKKyAgb2YgVGVzdCBzY2VuYXJpb3MgYW5kIHRoZSBuZXcgcGFyYW1ldHJpemUgZnVu
Y3Rpb24gYW5kIGRlY29yYXRvci4KKy0gaW50cm9kdWNlIHJlZ2lzdHJhdGlvbiBmb3IgInB5dGVz
dC5tYXJrLioiIGhlbHBlcnMgdmlhIGluaS1maWxlcworICBvciB0aHJvdWdoIHBsdWdpbiBob29r
cy4gIEFsc28gaW50cm9kdWNlIGEgIi0tc3RyaWN0IiBvcHRpb24gd2hpY2gKKyAgd2lsbCB0cmVh
dCB1bnJlZ2lzdGVyZWQgbWFya2VycyBhcyBlcnJvcnMKKyAgYWxsb3dpbmcgdG8gYXZvaWQgdHlw
b3MgYW5kIG1haW50YWluIGEgd2VsbCBkZXNjcmliZWQgc2V0IG9mIG1hcmtlcnMKKyAgZm9yIHlv
dXIgdGVzdCBzdWl0ZS4gIFNlZSBleGFwbGVzIGF0IGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJs
ZS9tYXJrLmh0bWwKKyAgYW5kIGl0cyBsaW5rcy4KKy0gaXNzdWU1MDogaW50cm9kdWNlICItbSBt
YXJrZXIiIG9wdGlvbiB0byBzZWxlY3QgdGVzdHMgYmFzZWQgb24gbWFya2VycworICAodGhpcyBp
cyBhIHN0cmljdGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlIHZlcnNpb24gb2YgJy1rJyBpbiB0aGF0
ICItbSIKKyAgb25seSBtYXRjaGVzIGNvbXBsZXRlIG1hcmtlcnMgYW5kIGhhcyBtb3JlIG9idmlv
dXMgcnVsZXMgZm9yIGFuZC9vcgorICBzZW1hbnRpY3MuCistIG5ldyBmZWF0dXJlIHRvIGhlbHAg
b3B0aW1pemluZyB0aGUgc3BlZWQgb2YgeW91ciB0ZXN0czoKKyAgLS1kdXJhdGlvbnM9TiBvcHRp
b24gZm9yIGRpc3BsYXlpbmcgTiBzbG93ZXN0IHRlc3QgY2FsbHMKKyAgYW5kIHNldHVwL3RlYXJk
b3duIG1ldGhvZHMuCistIGZpeCBpc3N1ZTg3OiAtLXBhc3RlYmluIG5vdyB3b3JrcyB3aXRoIHB5
dGhvbjMKKy0gZml4IGlzc3VlODk6IC0tcGRiIHdpdGggdW5leHBlY3RlZCBleGNlcHRpb25zIGlu
IGRvY3Rlc3Qgd29yayBtb3JlIHNlbnNpYmx5CistIGZpeCBhbmQgY2xlYW51cCBweXRlc3QncyBv
d24gdGVzdCBzdWl0ZSB0byBub3QgbGVhayBGRHMKKy0gZml4IGlzc3VlODM6IGxpbmsgdG8gZ2Vu
ZXJhdGVkIGZ1bmNhcmcgbGlzdAorLSBmaXggaXNzdWU3NDogcHlhcmcgbW9kdWxlIG5hbWVzIGFy
ZSBub3cgY2hlY2tlZCBhZ2FpbnN0IGltcC5maW5kX21vZHVsZSBmYWxzZSBwb3NpdGl2ZXMKKy0g
Zml4IGNvbXBhdGliaWxpdHkgd2l0aCB0d2lzdGVkL3RyaWFsLTExLjEuMCB1c2UgY2FzZXMKKy0g
c2ltcGxpZnkgTm9kZS5saXN0Y2hhaW4KKy0gc2ltcGxpZnkganVuaXR4bWwgb3V0cHV0IGNvZGUg
YnkgcmVseWluZyBvbiBweS54bWwKKy0gYWRkIHN1cHBvcnQgZm9yIHNraXAgcHJvcGVydGllcyBv
biB1bml0dGVzdCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKworMi4xLjMgKDIwMTEtMTAtMTgpCis9
PT09PT09PT09PT09PT09PT0KKworLSBmaXggaXNzdWU3OTogYXNzZXJ0aW9uIHJld3JpdGluZyBm
YWlsZWQgb24gc29tZSBjb21wYXJpc29ucyBpbiBib29sb3BzCistIGNvcnJlY3RseSBoYW5kbGUg
emVybyBsZW5ndGggYXJndW1lbnRzIChhIGxhIHB5dGVzdCAnJykKKy0gZml4IGlzc3VlNjcgLyBq
dW5pdHhtbCBub3cgY29udGFpbnMgY29ycmVjdCB0ZXN0IGR1cmF0aW9ucywgdGhhbmtzIHJvbm55
CistIGZpeCBpc3N1ZTc1IC8gc2tpcHBpbmcgdGVzdCBmYWlsdXJlIG9uIGp5dGhvbgorLSBmaXgg
aXNzdWU3NyAvIEFsbG93IGFzc2VydHJlcHJfY29tcGFyZSBob29rIHRvIGFwcGx5IHRvIGEgc3Vi
c2V0IG9mIHRlc3RzCisKKzIuMS4yICgyMDExLTA5LTI0KQorPT09PT09PT09PT09PT09PT09CisK
Ky0gZml4IGFzc2VydGlvbiByZXdyaXRpbmcgb24gZmlsZXMgd2l0aCB3aW5kb3dzIG5ld2xpbmVz
IG9uIHNvbWUgUHl0aG9uIHZlcnNpb25zCistIHJlZmluZSB0ZXN0IGRpc2NvdmVyeSBieSBwYWNr
YWdlL21vZHVsZSBuYW1lICgtLXB5YXJncyksIHRoYW5rcyBGbG9yaWFuIE1heWVyCistIGZpeCBp
c3N1ZTY5IC8gYXNzZXJ0aW9uIHJld3JpdGluZyBmaXhlZCBvbiBzb21lIGJvb2xlYW4gb3BlcmF0
aW9ucworLSBmaXggaXNzdWU2OCAvIHBhY2thZ2VzIG5vdyB3b3JrIHdpdGggYXNzZXJ0aW9uIHJl
d3JpdGluZworLSBmaXggaXNzdWU2NjogdXNlIGRpZmZlcmVudCBhc3NlcnRpb24gcmV3cml0aW5n
IGNhY2hlcyB3aGVuIHRoZSAtTyBvcHRpb24gaXMgcGFzc2VkCistIGRvbid0IHRyeSBhc3NlcnRp
b24gcmV3cml0aW5nIG9uIEp5dGhvbiwgdXNlIHJlaW50ZXJwCisKKzIuMS4xCis9PT09PQorCist
IGZpeCBpc3N1ZTY0IC8gcHl0ZXN0LnNldF90cmFjZSBub3cgd29ya3Mgd2l0aGluIHB5dGVzdF9n
ZW5lcmF0ZV90ZXN0cyBob29rcworLSBmaXggaXNzdWU2MCAvIGZpeCBlcnJvciBjb25kaXRpb25z
IGludm9sdmluZyB0aGUgY3JlYXRpb24gb2YgX19weWNhY2hlX18KKy0gZml4IGlzc3VlNjMgLyBh
c3NlcnRpb24gcmV3cml0aW5nIG9uIGluc2VydHMgaW52b2x2aW5nIHN0cmluZ3MgY29udGFpbmlu
ZyAnJScKKy0gZml4IGFzc2VydGlvbiByZXdyaXRpbmcgb24gY2FsbHMgd2l0aCBhICoqIGFyZwor
LSBkb24ndCBjYWNoZSByZXdyaXR0ZW4gbW9kdWxlcyBpZiBieXRlY29kZSBnZW5lcmF0aW9uIGlz
IGRpc2FibGVkCistIGZpeCBhc3NlcnRpb24gcmV3cml0aW5nIGluIHJlYWQtb25seSBkaXJlY3Rv
cmllcworLSBmaXggaXNzdWU1OTogcHJvdmlkZSBzeXN0ZW0tb3V0L2VyciB0YWdzIGZvciBqdW5p
dHhtbCBvdXRwdXQKKy0gZml4IGlzc3VlNjE6IGFzc2VydGlvbiByZXdyaXRpbmcgb24gYm9vbGVh
biBvcGVyYXRpb25zIHdpdGggMyBvciBtb3JlIG9wZXJhbmRzCistIHlvdSBjYW4gbm93IGJ1aWxk
IGEgbWFuIHBhZ2Ugd2l0aCAiY2QgZG9jIDsgbWFrZSBtYW4iCisKKzIuMS4wICgyMDExLTA3LTA5
KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlNTMgY2FsbCBub3Nlc3R5bGUgc2V0
dXAgZnVuY3Rpb25zIHdpdGggY29ycmVjdCBvcmRlcmluZworLSBmaXggaXNzdWU1OCBhbmQgaXNz
dWU1OTogbmV3IGFzc2VydGlvbiBjb2RlIGZpeGVzCistIG1lcmdlIEJlbmphbWluJ3MgYXNzZXJ0
aW9ucmV3cml0ZSBicmFuY2g6IG5vdyBhc3NlcnRpb25zCisgIGZvciB0ZXN0IG1vZHVsZXMgb24g
cHl0aG9uIDIuNiBhbmQgYWJvdmUgYXJlIGRvbmUgYnkgcmV3cml0aW5nCisgIHRoZSBBU1QgYW5k
IHNhdmluZyB0aGUgcHljIGZpbGUgYmVmb3JlIHRoZSB0ZXN0IG1vZHVsZSBpcyBpbXBvcnRlZC4K
KyAgc2VlIGRvYy9hc3NlcnQudHh0IGZvciBtb3JlIGluZm8uCistIGZpeCBpc3N1ZTQzOiBpbXBy
b3ZlIGRvY3Rlc3RzIHdpdGggYmV0dGVyIHRyYWNlYmFjayByZXBvcnRpbmcgb24KKyAgdW5leHBl
Y3RlZCBleGNlcHRpb25zCistIGZpeCBpc3N1ZTQ3OiB0aW1pbmcgb3V0cHV0IGluIGp1bml0eG1s
IGZvciB0ZXN0IGNhc2VzIGlzIG5vdyBjb3JyZWN0CistIGZpeCBpc3N1ZTQ4OiB0eXBvIGluIE1h
cmtJbmZvIHJlcHIgbGVhZGluZyB0byBleGNlcHRpb24KKy0gZml4IGlzc3VlNDk6IGF2b2lkIGNv
bmZ1c2luZyBlcnJvciB3aGVuIGluaXRpemFsaWF0aW9uIHBhcnRpYWxseSBmYWlscworLSBmaXgg
aXNzdWU0NDogZW52L3VzZXJuYW1lIGV4cGFuc2lvbiBmb3IganVuaXR4bWwgZmlsZSBwYXRoCist
IHNob3cgcmVsZWFzZWxldmVsIGluZm9ybWF0aW9uIGluIHRlc3QgcnVucyBmb3IgcHlweQorLSBy
ZXdvcmtlZCBkb2MgcGFnZXMgZm9yIGJldHRlciBuYXZpZ2F0aW9uIGFuZCBQREYgZ2VuZXJhdGlv
bgorLSByZXBvcnQgS2V5Ym9hcmRJbnRlcnJ1cHQgZXZlbiBpZiBpbnRlcnJ1cHRlZCBkdXJpbmcg
c2Vzc2lvbiBzdGFydHVwCistIGZpeCBpc3N1ZSAzNSAtIHByb3ZpZGUgUERGIGRvYyB2ZXJzaW9u
IGFuZCBkb3dubG9hZCBsaW5rIGZyb20gaW5kZXggcGFnZQorCisyLjAuMyAoMjAxMS0wNS0xMSkK
Kz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTM4OiBuaWNlciB0cmFjZWJhY2tzIG9u
IGNhbGxzIHRvIGhvb2tzLCBwYXJ0aWN1bGFybHkgZWFybHkKKyAgY29uZmlndXJlL3Nlc3Npb25z
dGFydCBvbmVzCisKKy0gZml4IG1pc3Npbmcgc2tpcCByZWFzb24vbWV0YSBpbmZvcm1hdGlvbiBp
biBqdW5pdHhtbCBmaWxlcywgcmVwb3J0ZWQKKyAgdmlhIGh0dHA6Ly9saXN0cy5pZHlsbC5vcmcv
cGlwZXJtYWlsL3Rlc3RpbmctaW4tcHl0aG9uLzIwMTEtTWFyY2gvMDAzOTI4Lmh0bWwKKworLSBm
aXggaXNzdWUzNDogYXZvaWQgY29sbGVjdGlvbiBmYWlsdXJlIHdpdGggInRlc3QiIHByZWZpeGVk
IGNsYXNzZXMKKyAgZGVyaXZpbmcgZnJvbSBvYmplY3QuCisKKy0gZG9uJ3QgcmVxdWlyZSB6bGli
IChhbmQgb3RoZXIgbGlicykgZm9yIGdlbnNjcmlwdCBwbHVnaW4gd2l0aG91dAorICAtLWdlbnNj
cmlwdCBhY3R1YWxseSBiZWluZyB1c2VkLgorCistIHNwZWVkIHVwIHNraXBzIChieSBub3QgZG9p
bmcgYSBmdWxsIHRyYWNlYmFjayByZXByZXNlbnRhdGlvbgorICBpbnRlcm5hbGx5KQorCistIGZp
eCBpc3N1ZTM3OiBhdm9pZCBpbnZhbGlkIGNoYXJhY3RlcnMgaW4ganVuaXR4bWwncyBvdXRwdXQK
KworMi4wLjIgKDIwMTEtMDMtMDkpCis9PT09PT09PT09PT09PT09PT0KKworLSB0YWNrbGUgaXNz
dWUzMiAtIHNwZWVkIHVwIHRlc3QgcnVucyBvZiB2ZXJ5IHF1aWNrIHRlc3QgZnVuY3Rpb25zCisg
IGJ5IHJlZHVjaW5nIHRoZSByZWxhdGl2ZSBvdmVyaGVhZAorCistIGZpeCBpc3N1ZTMwIC0gZXh0
ZW5kZWQgeGZhaWwvc2tpcGlmIGhhbmRsaW5nIGFuZCBpbXByb3ZlZCByZXBvcnRpbmcuCisgIElm
IHlvdSBoYXZlIGEgc3ludGF4IGVycm9yIGluIHlvdXIgc2tpcC94ZmFpbAorICBleHByZXNzaW9u
cyB5b3Ugbm93IGdldCBuaWNlIGVycm9yIHJlcG9ydHMuCisKKyAgQWxzbyB5b3UgY2FuIG5vdyBh
Y2Nlc3MgbW9kdWxlIGdsb2JhbHMgZnJvbSB4ZmFpbC9za2lwaWYKKyAgZXhwcmVzc2lvbnMgc28g
dGhhdCB0aGlzIGZvciBleGFtcGxlIHdvcmtzIG5vdzo6CisKKyAgICBpbXBvcnQgcHl0ZXN0Cisg
ICAgaW1wb3J0IG15bW9kdWxlCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZigibXltb2R1bGUuX192
ZXJzaW9uX19bMF0gPT0gIjEiKQorICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6CisgICAgICAgIHBh
c3MKKworICBUaGlzIHdpbGwgbm90IHJ1biB0aGUgdGVzdCBmdW5jdGlvbiBpZiB0aGUgbW9kdWxl
J3MgdmVyc2lvbiBzdHJpbmcKKyAgZG9lcyBub3Qgc3RhcnQgd2l0aCBhICIxIi4gIE5vdGUgdGhh
dCBzcGVjaWZ5aW5nIGEgc3RyaW5nIGluc3RlYWQKKyAgb2YgYSBib29sZWFuIGV4cHJlc3Npb25z
IGFsbG93cyBweS50ZXN0IHRvIHJlcG9ydCBtZWFuaW5nZnVsIGluZm9ybWF0aW9uCisgIHdoZW4g
c3VtbWFyaXppbmcgYSB0ZXN0IHJ1biBhcyB0byB3aGF0IGNvbmRpdGlvbnMgbGVhZCB0byBza2lw
cGluZworICAob3IgeGZhaWwtaW5nKSB0ZXN0cy4KKworLSBmaXggaXNzdWUyOCAtIHNldHVwX21l
dGhvZCBhbmQgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIHdvcmsgdG9nZXRoZXIKKyAgVGhlIHNldHVw
X21ldGhvZCBmaXh0dXJlIG1ldGhvZCBub3cgZ2V0cyBjYWxsZWQgYWxzbyBmb3IKKyAgdGVzdCBm
dW5jdGlvbiBpbnZvY2F0aW9ucyBnZW5lcmF0ZWQgZnJvbSB0aGUgcHl0ZXN0X2dlbmVyYXRlX3Rl
c3RzCisgIGhvb2suCisKKy0gZml4IGlzc3VlMjcgLSBjb2xsZWN0b25seSBhbmQga2V5d29yZC1z
ZWxlY3Rpb24gKC1rKSBub3cgd29yayB0b2dldGhlcgorICBBbHNvLCBpZiB5b3UgZG8gInB5LnRl
c3QgLS1jb2xsZWN0b25seSAtcSIgeW91IG5vdyBnZXQgYSBmbGF0IGxpc3QKKyAgb2YgdGVzdCBp
ZHMgdGhhdCB5b3UgY2FuIHVzZSB0byBwYXN0ZSB0byB0aGUgcHkudGVzdCBjb21tYW5kbGluZQor
ICBpbiBvcmRlciB0byBleGVjdXRlIGEgcGFydGljdWxhciB0ZXN0LgorCistIGZpeCBpc3N1ZTI1
IGF2b2lkIHJlcG9ydGVkIHByb2JsZW1zIHdpdGggLS1wZGIgYW5kIHB5dGhvbjMuMi9lbmNvZGlu
Z3Mgb3V0cHV0CisKKy0gZml4IGlzc3VlMjMgLSB0bXBkaXIgYXJndW1lbnQgbm93IHdvcmtzIG9u
IFB5dGhvbjMuMiBhbmQgV2luZG93c1hQCisgIFN0YXJ0aW5nIHdpdGggUHl0aG9uMy4yIG9zLnN5
bWxpbmsgbWF5IGJlIHN1cHBvcnRlZC4gQnkgcmVxdWlyaW5nCisgIGEgbmV3ZXIgcHkgbGliIHZl
cnNpb24gdGhlIHB5LnBhdGgubG9jYWwoKSBpbXBsZW1lbnRhdGlvbiBhY2tub3dsZWRnZXMKKyAg
dGhpcy4KKworLSBmaXhlZCB0eXBvcyBpbiB0aGUgZG9jcyAodGhhbmtzIFZpY3RvciBHYXJjaWEs
IEJyaWFubmEgTGF1Z2hlcikgYW5kIHBhcnRpY3VsYXIKKyAgdGhhbmtzIHRvIExhdXJhIENyZWln
aHRvbiB3aG8gYWxzbyByZXZpZXdlZCBwYXJ0cyBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KKworLSBm
aXggc2xpZ2h0bHkgd3Jvbmcgb3V0cHV0IG9mIHZlcmJvc2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIGZv
ciBjbGFzc2VzCisgICh0aGFua3MgQW1hdXJ5KQorCistIG1vcmUgcHJlY2lzZSAoYXZvaWRpbmcg
b2YpIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBub2RlLkNsYXNzfEZ1bmN0aW9uIGFjY2Vzc2Vz
CisKKy0gYXZvaWQgc3RkIHVuaXR0ZXN0IGFzc2VydGlvbiBoZWxwZXIgY29kZSBpbiB0cmFjZWJh
Y2tzICh0aGFua3MgUm9ubnkpCisKKzIuMC4xICgyMDExLTAyLTA3KQorPT09PT09PT09PT09PT09
PT09CisKKy0gcmVmaW5lIGFuZCB1bmlmeSBpbml0aWFsIGNhcHR1cmluZyBzbyB0aGF0IGl0IHdv
cmtzIG5pY2VseQorICBldmVuIGlmIHRoZSBsb2dnaW5nIG1vZHVsZSBpcyB1c2VkIG9uIGFuIGVh
cmx5LWxvYWRlZCBjb25mdGVzdC5weQorICBmaWxlIG9yIHBsdWdpbi4KKy0gYWxsb3cgdG8gb21p
dCAiKCkiIGluIHRlc3QgaWRzIHRvIGFsbG93IGZvciB1bmlmb3JtIHRlc3QgaWRzCisgIGFzIHBy
b2R1Y2VkIGJ5IEFsZnJlZG8ncyBuaWNlIHB5dGVzdC52aW0gcGx1Z2luLgorLSBmaXggaXNzdWUx
MiAtIHNob3cgcGx1Z2luIHZlcnNpb25zIHdpdGggIi0tdmVyc2lvbiIgYW5kCisgICItLXRyYWNl
Y29uZmlnIiBhbmQgYWxzbyBkb2N1bWVudCBob3cgdG8gYWRkIGV4dHJhIGluZm9ybWF0aW9uCisg
IHRvIHJlcG9ydGluZyB0ZXN0IGhlYWRlcgorLSBmaXggaXNzdWUxNyAoaW1wb3J0LSogcmVwb3J0
aW5nIGlzc3VlIG9uIHB5dGhvbjMpIGJ5CisgIHJlcXVpcmluZyBweT4xLjQuMCAoMS40LjEgaXMg
Z29pbmcgdG8gaW5jbHVkZSBpdCkKKy0gZml4IGlzc3VlMTAgKG51bXB5IGFycmF5cyB0cnV0aCBj
aGVja2luZykgYnkgcmVmaW5pbmcKKyAgYXNzZXJ0aW9uIGludGVycHJldGF0aW9uIGluIHB5IGxp
YgorLSBmaXggaXNzdWUxNTogbWFrZSBub3NlIGNvbXBhdGliaWxpdHkgdGVzdHMgY29tcGF0aWJs
ZQorICB3aXRoIHB5dGhvbjMgKG5vdyB0aGF0IG5vc2UtMS4wIHN1cHBvcnRzIHB5dGhvbjMpCist
IHJlbW92ZSBzb21ld2hhdCBzdXJwcmlzaW5nICJzYW1lLWNvbmZ0ZXN0IiBkZXRlY3Rpb24gYmVj
YXVzZQorICBpdCBpZ25vcmVzIGNvbmZ0ZXN0LnB5IHdoZW4gdGhleSBhcHBlYXIgaW4gc2V2ZXJh
bCBzdWJkaXJzLgorLSBpbXByb3ZlIGFzc2VydGlvbnMgKCJub3QgaW4iKSwgdGhhbmtzIEZsb3Jp
cyBCcnV5bm9vZ2hlCistIGltcHJvdmUgYmVoYXZpb3VyL3dhcm5pbmdzIHdoZW4gcnVubmluZyBv
biB0b3Agb2YgInB5dGhvbiAtT08iCisgIChhc3NlcnRpb25zIGFuZCBkb2NzdHJpbmdzIGFyZSB0
dXJuZWQgb2ZmLCBsZWFkaW5nIHRvIHBvdGVudGlhbAorICBmYWxzZSBwb3NpdGl2ZXMpCistIGlu
dHJvZHVjZSBhIHB5dGVzdF9jbWRsaW5lX3Byb2Nlc3NhcmdzKGFyZ3MpIGhvb2sKKyAgdG8gYWxs
b3cgZHluYW1pYyBjb21wdXRhdGlvbiBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorICBUaGlz
IGZpeGVzIGEgcmVncmVzc2lvbiBiZWNhdXNlIHB5LnRlc3QgcHJpb3IgdG8gMi4wCisgIGFsbG93
ZWQgdG8gc2V0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZyb20gY29uZnRlc3QucHkKKyAgZmlsZXMg
d2hpY2ggc28gZmFyIHB5dGVzdC0yLjAgb25seSBhbGxvd2VkIGZyb20gaW5pLWZpbGVzIG5vdy4K
Ky0gZml4IGlzc3VlNzogYXNzZXJ0IGZhaWx1cmVzIGluIGRvY3Rlc3QgbW9kdWxlcy4KKyAgdW5l
eHBlY3RlZCBmYWlsdXJlcyBpbiBkb2N0ZXN0cyB3aWxsIG5vdCBnZW5lcmFsbHkKKyAgc2hvdyBu
aWNlciwgaS5lLiB3aXRoaW4gdGhlIGRvY3Rlc3QgZmFpbGluZyBjb250ZXh0LgorLSBmaXggaXNz
dWU5OiBzZXR1cC90ZWFyZG93biBmdW5jdGlvbnMgZm9yIGFuIHhmYWlsLW1hcmtlZAorICB0ZXN0
IHdpbGwgcmVwb3J0IGFzIHhmYWlsIGlmIHRoZXkgZmFpbCBidXQgcmVwb3J0IGFzIG5vcm1hbGx5
CisgIHBhc3NpbmcgKG5vdCB4cGFzc2luZykgaWYgdGhleSBzdWNjZWVkLiAgVGhpcyBvbmx5IGlz
IHRydWUKKyAgZm9yICJkaXJlY3QiIHNldHVwL3RlYXJkb3duIGludm9jYXRpb25zIGJlY2F1c2Ug
dGVhcmRvd25fY2xhc3MvCisgIHRlYXJkb3duX21vZHVsZSBjYW5ub3QgY2xvc2VseSByZWxhdGUg
dG8gYSBzaW5nbGUgdGVzdC4KKy0gZml4IGlzc3VlMTQ6IG5vIGxvZ2dpbmcgZXJyb3JzIGF0IHBy
b2Nlc3MgZXhpdAorLSByZWZpbmVtZW50cyB0byAiY29sbGVjdGluZyIgb3V0cHV0IG9uIG5vbi10
dHlzCistIHJlZmluZSBpbnRlcm5hbCBwbHVnaW4gcmVnaXN0cmF0aW9uIGFuZCAtLXRyYWNlY29u
ZmlnIG91dHB1dAorLSBpbnRyb2R1Y2UgYSBtZWNoYW5pc20gdG8gcHJldmVudC91bnJlZ2lzdGVy
IHBsdWdpbnMgZnJvbSB0aGUKKyAgY29tbWFuZCBsaW5lLCBzZWUgaHR0cDovL3B5dGVzdC5vcmcv
ZW4vc3RhYmxlL3BsdWdpbnMuaHRtbCNjbWR1bnJlZ2lzdGVyCistIGFjdGl2YXRlIHJlc3VsdGxv
ZyBwbHVnaW4gYnkgZGVmYXVsdAorLSBmaXggcmVncmVzc2lvbiB3cnQgeWllbGRlZCB0ZXN0cyB3
aGljaCBkdWUgdG8gdGhlCisgIGNvbGxlY3Rpb24tYmVmb3JlLXJ1bm5pbmcgc2VtYW50aWNzIHdl
cmUgbm90CisgIHNldHVwIGFzIHdpdGggcHl0ZXN0IDEuMy40LiAgTm90ZSwgaG93ZXZlciwgdGhh
dAorICB0aGUgcmVjb21tZW5kZWQgYW5kIG11Y2ggY2xlYW5lciB3YXkgdG8gZG8gdGVzdAorICBw
YXJhbWV0cmFpemF0aW9uIHJlbWFpbnMgdGhlICJweXRlc3RfZ2VuZXJhdGVfdGVzdHMiCisgIG1l
Y2hhbmlzbSwgc2VlIHRoZSBkb2NzLgorCisyLjAuMCAoMjAxMC0xMS0yNSkKKz09PT09PT09PT09
PT09PT09PQorCistIHB5dGVzdC0yLjAgaXMgbm93IGl0cyBvd24gcGFja2FnZSBhbmQgZGVwZW5k
cyBvbiBweWxpYi0yLjAKKy0gbmV3IGFiaWxpdHk6IHB5dGhvbiAtbSBweXRlc3QgLyBweXRob24g
LW0gcHl0ZXN0Lm1haW4gYWJpbGl0eQorLSBuZXcgcHl0aG9uIGludm9jYXRpb246IHB5dGVzdC5t
YWluKGFyZ3MsIHBsdWdpbnMpIHRvIGxvYWQKKyAgc29tZSBjdXN0b20gcGx1Z2lucyBlYXJseS4K
Ky0gdHJ5IGhhcmRlciB0byBydW4gdW5pdHRlc3QgdGVzdCBzdWl0ZXMgaW4gYSBtb3JlIGNvbXBh
dGlibGUgbWFubmVyCisgIGJ5IGRlZmVycmluZyBzZXR1cC90ZWFyZG93biBzZW1hbnRpY3MgdG8g
dGhlIHVuaXR0ZXN0IHBhY2thZ2UuCisgIGFsc28gd29yayBoYXJkZXIgdG8gcnVuIHR3aXN0ZWQv
dHJpYWwgYW5kIERqYW5nbyB0ZXN0cyB3aGljaAorICBzaG91bGQgbm93IGJhc2ljYWxseSB3b3Jr
IGJ5IGRlZmF1bHQuCistIGludHJvZHVjZSBhIG5ldyB3YXkgdG8gc2V0IGNvbmZpZyBvcHRpb25z
IHZpYSBpbmktc3R5bGUgZmlsZXMsCisgIGJ5IGRlZmF1bHQgc2V0dXAuY2ZnIGFuZCB0b3guaW5p
IGZpbGVzIGFyZSBzZWFyY2hlZC4gIFRoZSBvbGQKKyAgd2F5cyAoY2VydGFpbiBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMsIGR5bmFtaWMgY29uZnRlc3QucHkgcmVhZGluZworICBpcyByZW1vdmVkKS4K
Ky0gYWRkIGEgbmV3ICItcSIgb3B0aW9uIHdoaWNoIGRlY3JlYXNlcyB2ZXJib3NpdHkgYW5kIHBy
aW50cyBhIG1vcmUKKyAgbm9zZS91bml0dGVzdC1zdHlsZSAiZG90IiBvdXRwdXQuCistIGZpeCBp
c3N1ZTEzNSAtIG1hcmtzIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBjYXNlcyBhcyB3ZWxs
CistIGZpeCBpc3N1ZTEyNiAtIGludHJvZHVjZSBweS50ZXN0LnNldF90cmFjZSgpIHRvIHRyYWNl
IGV4ZWN1dGlvbiB2aWEKKyAgUERCIGR1cmluZyB0aGUgcnVubmluZyBvZiB0ZXN0cyBldmVuIGlm
IGNhcHR1cmluZyBpcyBvbmdvaW5nLgorLSBmaXggaXNzdWUxMjMgLSBuZXcgInB5dGhvbiAtbSBw
eS50ZXN0IiBpbnZvY2F0aW9uIGZvciBweS50ZXN0CisgIChyZXF1aXJlcyBQeXRob24gMi41IG9y
IGFib3ZlKQorLSBmaXggaXNzdWUxMjQgLSBtYWtlIHJlcG9ydGluZyBtb3JlIHJlc2lsaWVudCBh
Z2FpbnN0IHRlc3RzIG9wZW5pbmcKKyAgZmlsZXMgb24gZmlsZWRlc2NyaXB0b3IgMSAoc3Rkb3V0
KS4KKy0gZml4IGlzc3VlMTA5IC0gc2libGluZyBjb25mdGVzdC5weSBmaWxlcyB3aWxsIG5vdCBi
ZSBsb2FkZWQuCisgIChhbmQgRGlyZWN0b3J5IGNvbGxlY3RvcnMgY2Fubm90IGJlIGN1c3RvbWl6
ZWQgYW55bW9yZSBmcm9tIGEgRGlyZWN0b3J5J3MKKyAgY29uZnRlc3QucHkgLSB0aGlzIG5lZWRz
IHRvIGhhcHBlbiBhdCBsZWFzdCBvbmUgbGV2ZWwgdXApLgorLSBpbnRyb2R1Y2UgKGN1c3RvbWl6
YWJsZSkgYXNzZXJ0aW9uIGZhaWx1cmUgcmVwcmVzZW50YXRpb25zIGFuZCBlbmhhbmNlCisgIG91
dHB1dCBvbiBhc3NlcnRpb24gZmFpbHVyZXMgZm9yIGNvbXBhcmlzb25zIGFuZCBvdGhlciBjYXNl
cyAoRmxvcmlzIEJydXlub29naGUpCistIG5vc2UtcGx1Z2luOiBwYXNzIHRocm91Z2ggdHlwZS1z
aWduYXR1cmUgZmFpbHVyZXMgaW4gc2V0dXAvdGVhcmRvd24KKyAgZnVuY3Rpb25zIGluc3RlYWQg
b2Ygbm90IGNhbGxpbmcgdGhlbSAoRWQgU2luZ2xldG9uKQorLSByZW1vdmUgcHkudGVzdC5jb2xs
ZWN0LkRpcmVjdG9yeSAoZm9sbG93cyBmcm9tIGEgbWFqb3IgcmVmYWN0b3JpbmcKKyAgYW5kIHNp
bXBsaWZpY2F0aW9uIG9mIHRoZSBjb2xsZWN0aW9uIHByb2Nlc3MpCistIG1ham9ybHkgcmVkdWNl
IHB5LnRlc3QgY29yZSBjb2RlLCBzaGlmdCBmdW5jdGlvbi9weXRob24gdGVzdGluZyB0byBvd24g
cGx1Z2luCistIGZpeCBpc3N1ZTg4IChmaW5kaW5nIGN1c3RvbSB0ZXN0IG5vZGVzIGZyb20gY29t
bWFuZCBsaW5lIGFyZykKKy0gcmVmaW5lICd0bXBkaXInIGNyZWF0aW9uLCB3aWxsIG5vdyBjcmVh
dGUgYmFzZW5hbWVzIGJldHRlciBhc3NvY2lhdGVkCisgIHdpdGggdGVzdCBuYW1lcyAodGhhbmtz
IFJvbm55KQorLSAieHBhc3MiICh1bmV4cGVjdGVkIHBhc3MpIHRlc3RzIGRvbid0IGNhdXNlIGV4
aXRjb2RlIT0wCistIGZpeCBpc3N1ZTEzMSAvIGlzc3VlNjAgLSBpbXBvcnRpbmcgZG9jdGVzdHMg
aW4gX19pbml0X18gZmlsZXMgdXNlZCBhcyBuYW1lc3BhY2UgcGFja2FnZXMKKy0gZml4IGlzc3Vl
OTMgc3Rkb3V0L3N0ZGVyciBpcyBjYXB0dXJlZCB3aGlsZSBpbXBvcnRpbmcgY29uZnRlc3QucHkK
Ky0gZml4IGJ1ZzogdW5pdHRlc3QgY29sbGVjdGVkIGZ1bmN0aW9ucyBub3cgYWxzbyBjYW4gaGF2
ZSAicHl0ZXN0bWFyayIKKyAgYXBwbGllZCBhdCBjbGFzcy9tb2R1bGUgbGV2ZWwKKy0gYWRkIGFi
aWxpdHkgdG8gdXNlICJjbGFzcyIgbGV2ZWwgZm9yIGNhY2hlZF9zZXR1cCBoZWxwZXIKKy0gZml4
IHN0cmFuZ2VuZXNzOiBtYXJrLiogb2JqZWN0cyBhcmUgbm93IGltbXV0YWJsZSwgY3JlYXRlIG5l
dyBpbnN0YW5jZXMKKworMS4zLjQgKDIwMTAtMDktMTQpCis9PT09PT09PT09PT09PT09PT0KKwor
LSBmaXggaXNzdWUxMTE6IGltcHJvdmUgaW5zdGFsbCBkb2N1bWVudGF0aW9uIGZvciB3aW5kb3dz
CistIGZpeCBpc3N1ZTExOTogZml4IGN1c3RvbSBjb2xsZWN0YWJpbGl0eSBvZiBfX2luaXRfXy5w
eSBhcyBhIG1vZHVsZQorLSBmaXggaXNzdWUxMTY6IC0tZG9jdGVzdG1vZHVsZXMgd29yayB3aXRo
IF9faW5pdF9fLnB5IGZpbGVzIGFzIHdlbGwKKy0gZml4IGlzc3VlMTE1OiB1bmlmeSBpbnRlcm5h
bCBleGNlcHRpb24gcGFzc3Rocm91Z2gvY2F0Y2hpbmcvR2VuZXJhdG9yRXhpdAorLSBmaXggaXNz
dWUxMTg6IG5ldyAtLXRiPW5hdGl2ZSBmb3IgcHJlc2VudGluZyBjcHl0aG9uLXN0YW5kYXJkIGV4
Y2VwdGlvbnMKKworMS4zLjMgKDIwMTAtMDctMzApCis9PT09PT09PT09PT09PT09PT0KKworLSBm
aXggaXNzdWUxMTM6IGFzc2VydGlvbiByZXByZXNlbnRhdGlvbiBwcm9ibGVtIHdpdGggdHJpcGxl
LXF1b3RlZCBzdHJpbmdzCisgIChhbmQgcG9zc2libHkgb3RoZXIgY2FzZXMpCistIG1ha2UgY29u
ZnRlc3QgbG9hZGluZyBkZXRlY3QgdGhhdCBhIGNvbmZ0ZXN0IGZpbGUgd2l0aCB0aGUgc2FtZQor
ICBjb250ZW50IHdhcyBhbHJlYWR5IGxvYWRlZCwgYXZvaWRzIHN1cnByaXNlcyBpbiBuZXN0ZWQg
ZGlyZWN0b3J5IHN0cnVjdHVyZXMKKyAgd2hpY2ggY2FuIGJlIHByb2R1Y2VkIGUuZy4gYnkgSHVk
c29uLiBJdCBwcm9iYWJseSByZW1vdmVzIHRoZSBuZWVkIHRvIHVzZQorICAtLWNvbmZjdXRkaXIg
aW4gbW9zdCBjYXNlcy4KKy0gZml4IHRlcm1pbmFsIGNvbG9yaW5nIGZvciB3aW4zMgorICAodGhh
bmtzIE1pY2hhZWwgRm9vcmQgZm9yIHJlcG9ydGluZykKKy0gZml4IHdlaXJkbmVzczogbWFrZSB0
ZXJtaW5hbCB3aWR0aCBkZXRlY3Rpb24gd29yayBvbiBzdGRvdXQgaW5zdGVhZCBvZiBzdGRpbgor
ICAodGhhbmtzIEFybWluIFJvbmFjaGVyIGZvciByZXBvcnRpbmcpCistIHJlbW92ZSB0cmFpbGlu
ZyB3aGl0ZXNwYWNlIGluIGFsbCBweS90ZXh0IGRpc3RyaWJ1dGlvbiBmaWxlcworCisxLjMuMiAo
MjAxMC0wNy0wOCkKKz09PT09PT09PT09PT09PT09PQorCisqKk5ldyBmZWF0dXJlcyoqCisKKy0g
Zml4IGlzc3VlMTAzOiAgaW50cm9kdWNlIHB5LnRlc3QucmFpc2VzIGFzIGNvbnRleHQgbWFuYWdl
ciwgZXhhbXBsZXM6OgorCisgICAgd2l0aCBweS50ZXN0LnJhaXNlcyhaZXJvRGl2aXNpb25FcnJv
cik6CisgICAgICAgIHggPSAwCisgICAgICAgIDEgLyB4CisKKyAgICB3aXRoIHB5LnRlc3QucmFp
c2VzKFJ1bnRpbWVFcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgY2FsbF9zb21ldGhpbmcoKQor
CisgICAgIyB5b3UgbWF5IGRvIGV4dHJhIGNoZWNrcyBvbiBleGNpbmZvLnZhbHVlfHR5cGV8dHJh
Y2ViYWNrIGhlcmUKKworICAodGhhbmtzIFJvbm55IFBmYW5uc2NobWlkdCkKKworLSBGdW5jYXJn
IGZhY3RvcmllcyBjYW4gbm93IGR5bmFtaWNhbGx5IGFwcGx5IGEgbWFya2VyIHRvIGEKKyAgdGVz
dCBpbnZvY2F0aW9uLiAgVGhpcyBpcyBmb3IgZXhhbXBsZSB1c2VmdWwgaWYgYSBmYWN0b3J5Cisg
IHByb3ZpZGVzIHBhcmFtZXRlcnMgdG8gYSB0ZXN0IHdoaWNoIGFyZSBleHBlY3RlZC10by1mYWls
OjoKKworICAgIGRlZiBweXRlc3RfZnVuY2FyZ19fYXJnKHJlcXVlc3QpOgorICAgICAgICByZXF1
ZXN0LmFwcGx5bWFya2VyKHB5LnRlc3QubWFyay54ZmFpbChyZWFzb249ImZsYWt5IGNvbmZpZyIp
KQorICAgICAgICAuLi4KKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGFyZyk6CisgICAgICAgIC4u
LgorCistIGltcHJvdmVkIGVycm9yIHJlcG9ydGluZyBvbiBjb2xsZWN0aW9uIGFuZCBpbXBvcnQg
ZXJyb3JzLiBUaGlzIG1ha2VzCisgIHVzZSBvZiBhIG1vcmUgZ2VuZXJhbCBtZWNoYW5pc20sIG5h
bWVseSB0aGF0IGZvciBjdXN0b20gdGVzdCBpdGVtL2NvbGxlY3QKKyAgbm9kZXMgYGBub2RlLnJl
cHJfZmFpbHVyZShleGNpbmZvKWBgIGlzIG5vdyB1bmlmb3JtbHkgY2FsbGVkIHNvIHRoYXQgeW91
IGNhbgorICBvdmVycmlkZSBpdCB0byByZXR1cm4gYSBzdHJpbmcgZXJyb3IgcmVwcmVzZW50YXRp
b24gb2YgeW91ciBjaG9pY2UKKyAgd2hpY2ggaXMgZ29pbmcgdG8gYmUgcmVwb3J0ZWQgYXMgYSAo
cmVkKSBzdHJpbmcuCisKKy0gaW50cm9kdWNlICctLWp1bml0cHJlZml4PVNUUicgb3B0aW9uIHRv
IHByZXBlbmQgYSBwcmVmaXgKKyAgdG8gYWxsIHJlcG9ydHMgaW4gdGhlIGp1bml0eG1sIGZpbGUu
CisKKyoqQnVnIGZpeGVzKioKKworLSBtYWtlIHRlc3RzIGFuZCB0aGUgYGBweXRlc3RfcmVjd2Fy
bmBgIHBsdWdpbiBpbiBwYXJ0aWN1bGFyIGZ1bGx5IGNvbXBhdGlibGUKKyAgdG8gUHl0aG9uMi43
IChpZiB5b3UgdXNlIHRoZSBgYHJlY3dhcm5gYCBmdW5jYXJnIHdhcm5pbmdzIHdpbGwgYmUgZW5h
YmxlZCBzbyB0aGF0CisgIHlvdSBjYW4gcHJvcGVybHkgY2hlY2sgZm9yIHRoZWlyIGV4aXN0ZW5j
ZSBpbiBhIGNyb3NzLXB5dGhvbiBtYW5uZXIpLgorLSByZWZpbmUgLS1wZGI6IGlnbm9yZSB4ZmFp
bGVkIHRlc3RzLCB1bmlmeSBpdHMgVEItcmVwb3J0aW5nIGFuZAorICBkb24ndCBkaXNwbGF5IGZh
aWx1cmVzIGFnYWluIGF0IHRoZSBlbmQuCistIGZpeCBhc3NlcnRpb24gaW50ZXJwcmV0YXRpb24g
d2l0aCB0aGUgKiogb3BlcmF0b3IgKHRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKKy0gZml4IGlz
c3VlMTA1IGFzc2lnbm1lbnQgb24gdGhlIHNhbWUgbGluZSBhcyBhIGZhaWxpbmcgYXNzZXJ0aW9u
ICh0aGFua3MgQmVuamFtaW4gUGV0ZXJzb24pCistIGZpeCBpc3N1ZTEwNCBwcm9wZXIgZXNjYXBp
bmcgZm9yIHRlc3QgbmFtZXMgaW4ganVuaXR4bWwgcGx1Z2luICh0aGFua3MgYW5vbnltb3VzKQor
LSBmaXggaXNzdWU1NyAtZnwtLWxvb3BvbmZhaWwgdG8gd29yayB3aXRoIHhwYXNzaW5nIHRlc3Rz
ICh0aGFua3MgUm9ubnkpCistIGZpeCBpc3N1ZTkyIGNvbGxlY3Rvbmx5IHJlcG9ydGVyIGFuZCAt
LXBhc3RlYmluICh0aGFua3MgQmVuamFtaW4gUGV0ZXJzb24pCistIGZpeCBweS5jb2RlLmNvbXBp
bGUoc291cmNlKSB0byBnZW5lcmF0ZSB1bmlxdWUgZmlsZW5hbWVzCistIGZpeCBhc3NlcnRpb24g
cmUtaW50ZXJwIHByb2JsZW1zIG9uIFB5UHksIGJ5IGRlZmVyaW5nIGNvZGUKKyAgY29tcGlsYXRp
b24gdG8gdGhlIChvdmVycmlkYWJsZSkgRnJhbWUuZXZhbCBjbGFzcy4gKHRoYW5rcyBBbWF1cnkg
Rm9yZ2VvdCkKKy0gZml4IHB5LnBhdGgubG9jYWwucHlpbXBvcnQoKSB0byB3b3JrIHdpdGggZGly
ZWN0b3JpZXMKKy0gc3RyZWFtbGluZSBweS5wYXRoLmxvY2FsLm1rZHRlbXAgaW1wbGVtZW50YXRp
b24gYW5kIHVzYWdlCistIGRvbid0IHByaW50IGVtcHR5IGxpbmVzIHdoZW4gc2hvd2luZyBqdW5p
dHhtbC1maWxlbmFtZQorLSBhZGQgb3B0aW9uYWwgYm9vbGVhbiBpZ25vcmVfZXJyb3JzIHBhcmFt
ZXRlciB0byBweS5wYXRoLmxvY2FsLnJlbW92ZQorLSBmaXggdGVybWluYWwgd3JpdGluZyBvbiB3
aW4zMi9weXRob24yLjQKKy0gcHkucHJvY2Vzcy5jbWRleGVjKCkgbm93IHRyaWVzIGhhcmRlciB0
byByZXR1cm4gcHJvcGVybHkgZW5jb2RlZCB1bmljb2RlIG9iamVjdHMKKyAgb24gYWxsIHB5dGhv
biB2ZXJzaW9ucworLSBpbnN0YWxsIHBsYWluIHB5LnRlc3QvcHkud2hpY2ggc2NyaXB0cyBhbHNv
IGZvciBKeXRob24sIHRoaXMgaGVscHMgdG8KKyAgZ2V0IGNhbm9uaWNhbCBzY3JpcHQgcGF0aHMg
aW4gdmlydHVhbGVudiBzaXR1YXRpb25zCistIG1ha2UgcGF0aC5iZXN0cmVscGF0aChwYXRoKSBy
ZXR1cm4gIi4iLCBub3RlIHRoYXQgd2hlbiBjYWxsaW5nCisgIFguYmVzdHJlbHBhdGggdGhlIGFz
c3VtcHRpb24gaXMgdGhhdCBYIGlzIGEgZGlyZWN0b3J5LgorLSBtYWtlIGluaXRpYWwgY29uZnRl
c3QgZGlzY292ZXJ5IGlnbm9yZSAiLS0iIHByZWZpeGVkIGFyZ3VtZW50cworLSBmaXggcmVzdWx0
bG9nIHBsdWdpbiB3aGVuIHVzZWQgaW4gYSBtdWx0aWNwdS9tdWx0aWhvc3QgeGRpc3Qgc2l0dWF0
aW9uCisgICh0aGFua3MgSmFrdWIgR3VzdGFrKQorLSBwZXJmb3JtIGRpc3RyaWJ1dGVkIHRlc3Rp
bmcgcmVsYXRlZCByZXBvcnRpbmcgaW4gdGhlIHhkaXN0LXBsdWdpbgorICByYXRoZXIgdGhhbiBo
YXZpbmcgZGlzdC1yZWxhdGVkIGNvZGUgaW4gdGhlIGdlbmVyaWMgcHkudGVzdAorICBkaXN0cmli
dXRpb24KKy0gZml4IGhvbWVkaXIgZGV0ZWN0aW9uIG9uIFdpbmRvd3MKKy0gc2hpcCBkaXN0cmli
dXRlX3NldHVwLnB5IHZlcnNpb24gMC42LjEzCisKKzEuMy4xICgyMDEwLTA1LTI1KQorPT09PT09
PT09PT09PT09PT09CisKKyoqTmV3IGZlYXR1cmVzKioKKworLSBpc3N1ZTkxOiBpbnRyb2R1Y2Ug
bmV3IHB5LnRlc3QueGZhaWwocmVhc29uKSBoZWxwZXIKKyAgdG8gaW1wZXJhdGl2ZWx5IG1hcmsg
YSB0ZXN0IGFzIGV4cGVjdGVkIHRvIGZhaWwuIENhbgorICBiZSB1c2VkIGZyb20gd2l0aGluIHNl
dHVwIGFuZCB0ZXN0IGZ1bmN0aW9ucy4gVGhpcyBpcworICB1c2VmdWwgZXNwZWNpYWxseSBmb3Ig
cGFyYW1ldHJpemVkIHRlc3RzIHdoZW4gY2VydGFpbgorICBjb25maWd1cmF0aW9ucyBhcmUgZXhw
ZWN0ZWQtdG8tZmFpbC4gIEluIHRoaXMgY2FzZSB0aGUKKyAgZGVjbGFyYXRpdmUgYXBwcm9hY2gg
d2l0aCB0aGUgQHB5LnRlc3QubWFyay54ZmFpbCBjYW5ub3QKKyAgYmUgdXNlZCBhcyBpdCB3b3Vs
ZCBtYXJrIGFsbCBjb25maWd1cmF0aW9ucyBhcyB4ZmFpbC4KKworLSBpc3N1ZTEwMjogaW50cm9k
dWNlIG5ldyAtLW1heGZhaWw9TlVNIG9wdGlvbiB0byBzdG9wCisgIHRlc3QgcnVucyBhZnRlciBO
VU0gZmFpbHVyZXMuICBUaGlzIGlzIGEgZ2VuZXJhbGl6YXRpb24KKyAgb2YgdGhlICcteCcgb3Ig
Jy0tZXhpdGZpcnN0JyBvcHRpb24gd2hpY2ggaXMgbm93IGVxdWl2YWxlbnQKKyAgdG8gJy0tbWF4
ZmFpbD0xJy4gIEJvdGggJy14JyBhbmQgJy0tbWF4ZmFpbCcgd2lsbAorICBub3cgYWxzbyBwcmlu
dCBhIGxpbmUgbmVhciB0aGUgZW5kIGluZGljYXRpbmcgdGhlIEludGVycnVwdGlvbi4KKworLSBp
c3N1ZTg5OiBhbGxvdyBweS50ZXN0Lm1hcmsgZGVjb3JhdG9ycyB0byBiZSB1c2VkIG9uIGNsYXNz
ZXMKKyAgKGNsYXNzIGRlY29yYXRvcnMgd2VyZSBpbnRyb2R1Y2VkIHdpdGggcHl0aG9uMi42KSBh
bmQKKyAgYWxzbyBhbGxvdyB0byBoYXZlIG11bHRpcGxlIG1hcmtlcnMgYXBwbGllZCBhdCBjbGFz
cy9tb2R1bGUgbGV2ZWwKKyAgYnkgc3BlY2lmeWluZyBhIGxpc3QuCisKKy0gaW1wcm92ZSBhbmQg
cmVmaW5lIGxldHRlciByZXBvcnRpbmcgaW4gdGhlIHByb2dyZXNzIGJhcjoKKyAgLiAgcGFzcwor
ICBmICBmYWlsZWQgdGVzdAorICBzICBza2lwcGVkIHRlc3RzIChyZW1pbmRlcjogdXNlIGZvciBk
ZXBlbmRlbmN5L3BsYXRmb3JtIG1pc21hdGNoIG9ubHkpCisgIHggIHhmYWlsZWQgdGVzdCAodGVz
dCB0aGF0IHdhcyBleHBlY3RlZCB0byBmYWlsKQorICBYICB4cGFzc2VkIHRlc3QgKHRlc3QgdGhh
dCB3YXMgZXhwZWN0ZWQgdG8gZmFpbCBidXQgcGFzc2VkKQorCisgIFlvdSBjYW4gdXNlIGFueSBj
b21iaW5hdGlvbiBvZiAnZnN4WCcgd2l0aCB0aGUgJy1yJyBleHRlbmRlZAorICByZXBvcnRpbmcg
b3B0aW9uLiBUaGUgeGZhaWwveHBhc3MgcmVzdWx0cyB3aWxsIHNob3cgdXAgYXMKKyAgc2tpcHBl
ZCB0ZXN0cyBpbiB0aGUganVuaXR4bWwgb3V0cHV0IC0gd2hpY2ggYWxzbyBmaXhlcworICBpc3N1
ZTk5LgorCistIG1ha2UgcHkudGVzdC5jbWRsaW5lLm1haW4oKSByZXR1cm4gdGhlIGV4aXRzdGF0
dXMgaW5zdGVhZCBvZiByYWlzaW5nCisgIFN5c3RlbUV4aXQgYW5kIGFsc28gYWxsb3cgaXQgdG8g
YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiAgVGhpcyBvZgorICBjb3Vyc2UgcmVxdWlyZXMgdGhh
dCB5b3VyIGFwcGxpY2F0aW9uIGFuZCB0ZXN0cyBhcmUgcHJvcGVybHkgdGVhcmVkCisgIGRvd24g
YW5kIGRvbid0IGhhdmUgZ2xvYmFsIHN0YXRlLgorCisqKkJ1ZyBGaXhlcyoqCisKKy0gaW1wcm92
ZWQgdHJhY2ViYWNrIHByZXNlbnRhdGlvbjoKKyAgLSBpbXByb3ZlZCBhbmQgdW5pZmllZCByZXBv
cnRpbmcgZm9yICItLXRiPXNob3J0IiBvcHRpb24KKyAgLSBFcnJvcnMgZHVyaW5nIHRlc3QgbW9k
dWxlIGltcG9ydHMgYXJlIG11Y2ggc2hvcnRlciwgKHVzaW5nIC0tdGI9c2hvcnQgc3R5bGUpCisg
IC0gcmFpc2VzIHNob3dzIHNob3J0ZXIgbW9yZSByZWxldmFudCB0cmFjZWJhY2tzCisgIC0gLS1m
dWxsdHJhY2Ugbm93IG1vcmUgc3lzdGVtYXRpY2FsbHkgbWFrZXMgdHJhY2VzIGxvbmdlciAvIGlu
aGliaXRzIGN1dHRpbmcKKworLSBpbXByb3ZlIHN1cHBvcnQgZm9yIHJhaXNlcyBhbmQgb3RoZXIg
ZHluYW1pY2FsbHkgY29tcGlsZWQgY29kZSBieQorICBtYW5pcHVsYXRpbmcgcHl0aG9uJ3MgbGlu
ZWNhY2hlLmNhY2hlIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzCisgIHJhdGhlciBoYWNreSB3YXkg
b2YgY3JlYXRpbmcgY3VzdG9tIGNvZGUgb2JqZWN0cy4gIFRoaXMgbWFrZXMKKyAgaXQgc2VlbWxl
c3NseSB3b3JrIG9uIEp5dGhvbiBhbmQgUHlQeSB3aGVyZSBpdCBwcmV2aW91c2x5IGRpZG4ndC4K
KworLSBmaXggaXNzdWU5NjogbWFrZSBjYXB0dXJpbmcgbW9yZSByZXNpbGllbnQgYWdhaW5zdCBD
b250cm9sLUMKKyAgaW50ZXJydXB0aW9ucyAoaW52b2x2ZWQgc29tZXdoYXQgc3Vic3RhbnRpYWwg
cmVmYWN0b3JpbmcKKyAgdG8gdGhlIHVuZGVybHlpbmcgY2FwdHVyaW5nIGZ1bmN0aW9uYWxpdHkg
dG8gYXZvaWQgcmFjZQorICBjb25kaXRpb25zKS4KKworLSBmaXggY2hhaW5pbmcgb2YgY29uZGl0
aW9uYWwgc2tpcGlmL3hmYWlsIGRlY29yYXRvcnMgLSBzbyBpdCB3b3JrcyBub3cKKyAgYXMgZXhw
ZWN0ZWQgdG8gdXNlIG11bHRpcGxlIEBweS50ZXN0Lm1hcmsuc2tpcGlmKGNvbmRpdGlvbikgZGVj
b3JhdG9ycywKKyAgaW5jbHVkaW5nIHNwZWNpZmljIHJlcG9ydGluZyB3aGljaCBvZiB0aGUgY29u
ZGl0aW9ucyBsZWFkIHRvIHNraXBwaW5nLgorCistIGZpeCBpc3N1ZTk1OiBsYXRlLWltcG9ydCB6
bGliIHNvIHRoYXQgaXQncyBub3QgcmVxdWlyZWQKKyAgZm9yIGdlbmVyYWwgcHkudGVzdCBzdGFy
dHVwLgorCistIGZpeCBpc3N1ZTk0OiBtYWtlIHJlcG9ydGluZyBtb3JlIHJvYnVzdCBhZ2FpbnN0
IGJvZ3VzIHNvdXJjZSBjb2RlCisgIChhbmQgaW50ZXJuYWxseSBiZSBtb3JlIGNhcmVmdWwgd2hl
biBwcmVzZW50aW5nIHVuZXhwZWN0ZWQgYnl0ZSBzZXF1ZW5jZXMpCisKKworMS4zLjAgKDIwMTAt
MDUtMDUpCis9PT09PT09PT09PT09PT09PT0KKworLSBkZXByZWNhdGUgLS1yZXBvcnQgb3B0aW9u
IGluIGZhdm91ciBvZiBhIG5ldyBzaG9ydGVyIGFuZCBlYXNpZXIgdG8KKyAgcmVtZW1iZXIgLXIg
b3B0aW9uOiBpdCB0YWtlcyBhIHN0cmluZyBhcmd1bWVudCBjb25zaXN0aW5nIG9mIGFueQorICBj
b21iaW5hdGlvbiBvZiAneGZzWCcgY2hhcmFjdGVycy4gIFRoZXkgcmVsYXRlIHRvIHRoZSBzaW5n
bGUgY2hhcnMKKyAgeW91IHNlZSBkdXJpbmcgdGhlIGRvdHRlZCBwcm9ncmVzcyBwcmludGluZyBh
bmQgd2lsbCBwcmludCBhbiBleHRyYSBsaW5lCisgIHBlciB0ZXN0IGF0IHRoZSBlbmQgb2YgdGhl
IHRlc3QgcnVuLiAgVGhpcyBleHRyYSBsaW5lIGluZGljYXRlcyB0aGUgZXhhY3QKKyAgcG9zaXRp
b24gb3IgdGVzdCBJRCB0aGF0IHlvdSBkaXJlY3RseSBwYXN0ZSB0byB0aGUgcHkudGVzdCBjbWRs
aW5lIGluIG9yZGVyCisgIHRvIHJlLXJ1biBhIHBhcnRpY3VsYXIgdGVzdC4KKworLSBhbGxvdyBl
eHRlcm5hbCBwbHVnaW5zIHRvIHJlZ2lzdGVyIG5ldyBob29rcyB2aWEgdGhlIG5ldworICBweXRl
c3RfYWRkaG9va3MocGx1Z2lubWFuYWdlcikgaG9vay4gIFRoZSBuZXcgcmVsZWFzZSBvZgorICB0
aGUgcHl0ZXN0LXhkaXN0IHBsdWdpbiBmb3IgZGlzdHJpYnV0ZWQgYW5kIGxvb3BvbmZhaWxpbmcK
KyAgdGVzdGluZyByZXF1aXJlcyB0aGlzIGZlYXR1cmUuCisKKy0gYWRkIGEgbmV3IHB5dGVzdF9p
Z25vcmVfY29sbGVjdChwYXRoLCBjb25maWcpIGhvb2sgdG8gYWxsb3cgcHJvamVjdHMgYW5kCisg
IHBsdWdpbnMgdG8gZGVmaW5lIGV4Y2x1c2lvbiBiZWhhdmlvdXIgZm9yIHRoZWlyIGRpcmVjdG9y
eSBzdHJ1Y3R1cmUgLQorICBmb3IgZXhhbXBsZSB5b3UgbWF5IGRlZmluZSBpbiBhIGNvbmZ0ZXN0
LnB5IHRoaXMgbWV0aG9kOjoKKworICAgICAgICBkZWYgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBh
dGgpOgorICAgICAgICAgICAgcmV0dXJuIHBhdGguY2hlY2sobGluaz0xKQorCisgIHRvIHByZXZl
bnQgZXZlbiBhIGNvbGxlY3Rpb24gdHJ5IG9mIGFueSB0ZXN0cyBpbiBzeW1saW5rZWQgZGlycy4K
KworLSBuZXcgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVudCkgaG9vayBm
b3IKKyAgYWxsb3dpbmcgY3VzdG9taXphdGlvbiBvZiB0aGUgTW9kdWxlIGNvbGxlY3Rpb24gb2Jq
ZWN0IGZvciBhCisgIG1hdGNoaW5nIHRlc3QgbW9kdWxlLgorCistIGV4dGVuZCBhbmQgcmVmaW5l
IHhmYWlsIG1lY2hhbmlzbToKKyAgYGBAcHkudGVzdC5tYXJrLnhmYWlsKHJ1bj1GYWxzZSlgYCBk
byBub3QgcnVuIHRoZSBkZWNvcmF0ZWQgdGVzdAorICBgYEBweS50ZXN0Lm1hcmsueGZhaWwocmVh
c29uPSIuLi4iKWBgIHByaW50cyB0aGUgcmVhc29uIHN0cmluZyBpbiB4ZmFpbCBzdW1tYXJpZXMK
KyAgc3BlY2lmeWluZyBgYC0tcnVueGZhaWxgYCBvbiBjb21tYW5kIGxpbmUgdmlydHVhbGx5IGln
bm9yZXMgeGZhaWwgbWFya2VycworCistIGV4cG9zZSAocHJldmlvdXNseSBpbnRlcm5hbCkgY29t
bW9ubHkgdXNlZnVsIG1ldGhvZHM6CisgIHB5LmlvLmdldF90ZXJtaW5hbF93aXRoKCkgLT4gcmV0
dXJuIHRlcm1pbmFsIHdpZHRoCisgIHB5LmlvLmFuc2lfcHJpbnQoLi4uKSAtPiBwcmludCBjb2xv
cmVkL2JvbGQgdGV4dCBvbiBsaW51eC93aW4zMgorICBweS5pby5zYWZlcmVwcihvYmopIC0+IHJl
dHVybiBsaW1pdGVkIHJlcHJlc2VudGF0aW9uIHN0cmluZworCistIGV4cG9zZSB0ZXN0IG91dGNv
bWUgcmVsYXRlZCBleGNlcHRpb25zIGFzIHB5LnRlc3Quc2tpcC5FeGNlcHRpb24sCisgIHB5LnRl
c3QucmFpc2VzLkV4Y2VwdGlvbiBldGMuLCB1c2VmdWwgbW9zdGx5IGZvciBwbHVnaW5zCisgIGRv
aW5nIHNwZWNpYWwgb3V0Y29tZSBpbnRlcnByZXRhdGlvbi90d2Vha2luZworCistIChpc3N1ZTg1
KSBmaXgganVuaXR4bWwgcGx1Z2luIHRvIGhhbmRsZSB0ZXN0cyB3aXRoIG5vbi1hc2NpaSBvdXRw
dXQKKworLSBmaXgvcmVmaW5lIHB5dGhvbjMgY29tcGF0aWJpbGl0eSAodGhhbmtzIEJlbmphbWlu
IFBldGVyc29uKQorCistIGZpeGVzIGZvciBtYWtpbmcgdGhlIGp5dGhvbi93aW4zMiBjb21iaW5h
dGlvbiB3b3JrLCBub3RlIGhvd2V2ZXI6CisgIGp5dGhvbjIuNS4xL3dpbjMyIGRvZXMgbm90IHBy
b3ZpZGUgYSBjb21tYW5kIGxpbmUgbGF1bmNoZXIsIHNlZQorICBodHRwOi8vYnVncy5qeXRob24u
b3JnL2lzc3VlMTQ5MSAuIFNlZSBweWxpYiBpbnN0YWxsIGRvY3VtZW50YXRpb24KKyAgZm9yIGhv
dyB0byB3b3JrIGFyb3VuZC4KKworLSBmaXhlcyBmb3IgaGFuZGxpbmcgb2YgdW5pY29kZSBleGNl
cHRpb24gdmFsdWVzIGFuZCB1bnByaW50YWJsZSBvYmplY3RzCisKKy0gKGlzc3VlODcpIGZpeCB1
bmJvdW5kbG9jYWwgZXJyb3IgaW4gYXNzZXJ0aW9ub2xkIGNvZGUKKworLSAoaXNzdWU4NikgaW1w
cm92ZSBkb2N1bWVudGF0aW9uIGZvciBsb29wb25mYWlsaW5nCisKKy0gcmVmaW5lIElPIGNhcHR1
cmluZzogc3RkaW4tcmVkaXJlY3QgcHNldWRvLWZpbGUgbm93IGhhcyBhIE5PUCBjbG9zZSgpIG1l
dGhvZAorCistIHNoaXAgZGlzdHJpYnV0ZV9zZXR1cC5weSB2ZXJzaW9uIDAuNi4xMAorCistIGFk
ZGVkIGxpbmtzIHRvIHRoZSBuZXcgY2FwdHVyZWxvZyBhbmQgY292ZXJhZ2UgcGx1Z2lucworCisK
KzEuMi4wICgyMDEwLTAxLTE4KQorPT09PT09PT09PT09PT09PT09CisKKy0gcmVmaW5lZCB1c2Fn
ZSBhbmQgb3B0aW9ucyBmb3IgInB5LmNsZWFudXAiOjoKKworICAgIHB5LmNsZWFudXAgICAgICMg
cmVtb3ZlICIqLnB5YyIgYW5kICIqJHB5LmNsYXNzIiAoanl0aG9uKSBmaWxlcworICAgIHB5LmNs
ZWFudXAgLWUgLnN3cCAtZSAuY2FjaGUgIyBhbHNvIHJlbW92ZSBmaWxlcyB3aXRoIHRoZXNlIGV4
dGVuc2lvbnMKKyAgICBweS5jbGVhbnVwIC1zICAjIHJlbW92ZSAiYnVpbGQiIGFuZCAiZGlzdCIg
ZGlyZWN0b3J5IG5leHQgdG8gc2V0dXAucHkgZmlsZXMKKyAgICBweS5jbGVhbnVwIC1kICAjIGFs
c28gcmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVzCisgICAgcHkuY2xlYW51cCAtYSAgIyBzeW5vbnlt
IGZvciAiLXMgLWQgLWUgJ3BpcC1sb2cudHh0JyIKKyAgICBweS5jbGVhbnVwIC1uICAjIGRyeSBy
dW4sIG9ubHkgc2hvdyB3aGF0IHdvdWxkIGJlIHJlbW92ZWQKKworLSBhZGQgYSBuZXcgb3B0aW9u
ICJweS50ZXN0IC0tZnVuY2FyZ3MiIHdoaWNoIHNob3dzIGF2YWlsYWJsZSBmdW5jYXJncworICBh
bmQgdGhlaXIgaGVscCBzdHJpbmdzIChkb2NzdHJpbmdzIG9uIHRoZWlyIHJlc3BlY3RpdmUgZmFj
dG9yeSBmdW5jdGlvbikKKyAgZm9yIGEgZ2l2ZW4gdGVzdCBwYXRoCisKKy0gZGlzcGxheSBhIHNo
b3J0IGFuZCBjb25jaXNlIHRyYWNlYmFjayBpZiBhIGZ1bmNhcmcgbG9va3VwIGZhaWxzCisKKy0g
ZWFybHktbG9hZCAiY29uZnRlc3QucHkiIGZpbGVzIGluIG5vbi1kb3QgZmlyc3QtbGV2ZWwgc3Vi
IGRpcmVjdG9yaWVzLgorICBhbGxvd3MgdG8gY29udmVuaWVudGx5IGtlZXAgYW5kIGFjY2VzcyB0
ZXN0LXJlbGF0ZWQgb3B0aW9ucyBpbiBhIGBgdGVzdGBgCisgIHN1YmRpciBhbmQgc3RpbGwgYWRk
IGNvbW1hbmQgbGluZSBvcHRpb25zLgorCistIGZpeCBpc3N1ZTY3OiBuZXcgc3VwZXItc2hvcnQg
dHJhY2ViYWNrLXByaW50aW5nIG9wdGlvbjogIi0tdGI9bGluZSIgd2lsbCBwcmludCBhIHNpbmds
ZSBsaW5lIGZvciBlYWNoIGZhaWxpbmcgKHB5dGhvbikgdGVzdCBpbmRpY2F0aW5nIGl0cyBmaWxl
bmFtZSwgbGluZW5vIGFuZCB0aGUgZmFpbHVyZSB2YWx1ZQorCistIGZpeCBpc3N1ZTc4OiBhbHdh
eXMgY2FsbCBweXRob24tbGV2ZWwgdGVhcmRvd24gZnVuY3Rpb25zIGV2ZW4gaWYgdGhlCisgIGFj
Y29yZGluZyBzZXR1cCBmYWlsZWQuICBUaGlzIGluY2x1ZGVzIHJlZmluZW1lbnRzIGZvciBjYWxs
aW5nIHNldHVwX21vZHVsZS9jbGFzcyBmdW5jdGlvbnMKKyAgd2hpY2ggd2lsbCBub3cgb25seSBi
ZSBjYWxsZWQgb25jZSBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgd2hlcmUgdGhl
eSdkIGJlIGNhbGxlZAorICBtdWx0aXBsZSB0aW1lcyBpZiB0aGV5IHJhaXNlIGFuIGV4Y2VwdGlv
biAoaW5jbHVkaW5nIGEgU2tpcHBlZCBleGNlcHRpb24pLiAgQW55IGV4Y2VwdGlvbgorICB3aWxs
IGJlIHJlLWNvcmRlZCBhbmQgYXNzb2NpYXRlZCB3aXRoIGFsbCB0ZXN0cyBpbiB0aGUgYWNjb3Jk
aW5nIG1vZHVsZS9jbGFzcyBzY29wZS4KKworLSBmaXggaXNzdWU2MzogYXNzdW1lIDw0MCBjb2x1
bW5zIHRvIGJlIGEgYm9ndXMgdGVybWluYWwgd2lkdGgsIGRlZmF1bHQgdG8gODAKKworLSBmaXgg
cGRiIGRlYnVnZ2luZyB0byBiZSBpbiB0aGUgY29ycmVjdCBmcmFtZSBvbiByYWlzZXMtcmVsYXRl
ZCBlcnJvcnMKKworLSB1cGRhdGUgYXBpcGtnLnB5IHRvIGZpeCBhbiBpc3N1ZSB3aGVyZSByZWN1
cnNpdmUgaW1wb3J0cyBtaWdodAorICB1bm5lY2Vzc2FyaWx5IGJyZWFrIGltcG9ydGluZworCist
IGZpeCBwbHVnaW4gbGlua3MKKworMS4xLjEgKDIwMDktMTEtMjQpCis9PT09PT09PT09PT09PT09
PT0KKworLSBtb3ZlZCBkaXN0L2xvb3BvbmZhaWxpbmcgZnJvbSBweS50ZXN0IGNvcmUgaW50byBh
IG5ldworICBzZXBhcmF0ZWx5IHJlbGVhc2VkIHB5dGVzdC14ZGlzdCBwbHVnaW4uCisKKy0gbmV3
IGp1bml0eG1sIHBsdWdpbjogLS1qdW5pdHhtbD1wYXRoIHdpbGwgZ2VuZXJhdGUgYSBqdW5pdCBz
dHlsZSB4bWwgZmlsZQorICB3aGljaCBpcyBwcm9jZXNzYWJsZSBlLmcuIGJ5IHRoZSBIdWRzb24g
Q0kgc3lzdGVtLgorCistIG5ldyBvcHRpb246IC0tZ2Vuc2NyaXB0PXBhdGggd2lsbCBnZW5lcmF0
ZSBhIHN0YW5kYWxvbmUgcHkudGVzdCBzY3JpcHQKKyAgd2hpY2ggd2lsbCBub3QgbmVlZCBhbnkg
bGlicmFyaWVzIGluc3RhbGxlZC4gIHRoYW5rcyB0byBSYWxmIFNjaG1pdHQuCisKKy0gbmV3IG9w
dGlvbjogLS1pZ25vcmUgd2lsbCBwcmV2ZW50IHNwZWNpZmllZCBwYXRoIGZyb20gY29sbGVjdGlv
bi4KKyAgQ2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcy4KKworLSBuZXcgb3B0aW9uOiAt
LWNvbmZjdXRkaXI9ZGlyIHdpbGwgbWFrZSBweS50ZXN0IG9ubHkgY29uc2lkZXIgY29uZnRlc3QK
KyAgZmlsZXMgdGhhdCBhcmUgcmVsYXRpdmUgdG8gdGhlIHNwZWNpZmllZCBkaXIuCisKKy0gbmV3
IGZ1bmNhcmc6ICJweXRlc3Rjb25maWciIGlzIHRoZSBweXRlc3QgY29uZmlnIG9iamVjdCBmb3Ig
YWNjZXNzCisgIHRvIGNvbW1hbmQgbGluZSBhcmdzIGFuZCBjYW4gbm93IGJlIGVhc2lseSB1c2Vk
IGluIGEgdGVzdC4KKworLSBpbnN0YWxsIGBgcHkudGVzdGBgIGFuZCBgYHB5LndoaWNoYGAgd2l0
aCBhIGBgLSRWRVJTSU9OYGAgc3VmZml4IHRvCisgIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIFB5dGhv
bjMsIHB5dGhvbjIuWCwgSnl0aG9uIGFuZCBQeVB5IGluc3RhbGxlZCB2ZXJzaW9ucy4KKworLSBu
ZXcgInB5dGVzdGNvbmZpZyIgZnVuY2FyZyBhbGxvd3MgYWNjZXNzIHRvIHRlc3QgY29uZmlnIG9i
amVjdAorCistIG5ldyAicHl0ZXN0X3JlcG9ydF9oZWFkZXIiIGhvb2sgY2FuIHJldHVybiBhZGRp
dGlvbmFsIGxpbmVzCisgIHRvIGJlIGRpc3BsYXllZCBhdCB0aGUgaGVhZGVyIG9mIGEgdGVzdCBy
dW4uCisKKy0gKGV4cGVyaW1lbnRhbCkgYWxsb3cgInB5LnRlc3QgcGF0aDo6bmFtZTE6Om5hbWUy
OjouLi4iIGZvciBwb2ludGluZworICB0byBhIHRlc3Qgd2l0aGluIGEgdGVzdCBjb2xsZWN0aW9u
IGRpcmVjdGx5LiAgVGhpcyBtaWdodCBldmVudHVhbGx5CisgIGV2b2x2ZSBhcyBhIGZ1bGwgc3Vi
c3RpdHV0ZSB0byAiLWsiIHNwZWNpZmljYXRpb25zLgorCistIHN0cmVhbWxpbmVkIHBsdWdpbiBs
b2FkaW5nOiBvcmRlciBpcyBub3cgYXMgZG9jdW1lbnRlZCBpbgorICBjdXN0b21pemUuaHRtbDog
c2V0dXB0b29scywgRU5WLCBjb21tYW5kbGluZSwgY29uZnRlc3QuCisgIGFsc28gc2V0dXB0b29s
cyBlbnRyeSBwb2ludCBuYW1lcyBhcmUgdHVybmVkIHRvIGNhbm9uaWNhbCBuYW1lcyAoInB5dGVz
dF8qIikKKworLSBhdXRvbWF0aWNhbGx5IHNraXAgdGVzdHMgdGhhdCBuZWVkICdjYXBmZCcgYnV0
IGhhdmUgbm8gb3MuZHVwCisKKy0gYWxsb3cgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIHRvIGJlIGRl
ZmluZWQgaW4gY2xhc3NlcyBhcyB3ZWxsCisKKy0gZGVwcmVjYXRlIHVzYWdlIG9mICdkaXNhYmxl
ZCcgYXR0cmlidXRlIGluIGZhdm91ciBvZiBweXRlc3RtYXJrCistIGRlcHJlY2F0ZSBkZWZpbml0
aW9uIG9mIERpcmVjdG9yeSwgTW9kdWxlLCBDbGFzcyBhbmQgRnVuY3Rpb24gbm9kZXMKKyAgaW4g
Y29uZnRlc3QucHkgZmlsZXMuICBVc2UgcHl0ZXN0IGNvbGxlY3QgaG9va3MgaW5zdGVhZC4KKwor
LSBjb2xsZWN0aW9uL2l0ZW0gbm9kZSBzcGVjaWZpYyBydW50ZXN0L2NvbGxlY3QgaG9va3MgYXJl
IG9ubHkgY2FsbGVkIGV4YWN0bHkKKyAgb24gbWF0Y2hpbmcgY29uZnRlc3QucHkgZmlsZXMsIGku
ZS4gb25lcyB3aGljaCBhcmUgZXhhY3RseSBiZWxvdworICB0aGUgZmlsZXN5c3RlbSBwYXRoIG9m
IGFuIGl0ZW0KKworLSBjaGFuZ2U6IHRoZSBmaXJzdCBweXRlc3RfY29sbGVjdF9kaXJlY3Rvcnkg
aG9vayB0byByZXR1cm4gc29tZXRoaW5nCisgIHdpbGwgbm93IHByZXZlbnQgZnVydGhlciBob29r
cyB0byBiZSBjYWxsZWQuCisKKy0gY2hhbmdlOiBmaWdsZWFmIHBsdWdpbiBub3cgcmVxdWlyZXMg
LS1maWdsZWFmIHRvIHJ1bi4gIEFsc28KKyAgY2hhbmdlIGl0cyBsb25nIGNvbW1hbmQgbGluZSBv
cHRpb25zIHRvIGJlIGEgYml0IHNob3J0ZXIgKHNlZSBweS50ZXN0IC1oKS4KKworLSBjaGFuZ2U6
IHB5dGVzdCBkb2N0ZXN0IHBsdWdpbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0IGFuZCBoYXMg
YQorICBuZXcgb3B0aW9uIC0tZG9jdGVzdC1nbG9iIHRvIHNldCBhIHBhdHRlcm4gZm9yIGZpbGUg
bWF0Y2hlcy4KKworLSBjaGFuZ2U6IHJlbW92ZSBpbnRlcm5hbCBweS5fKiBoZWxwZXIgdmFycywg
b25seSBrZWVwIHB5Ll9weWRpcgorCistIHJvYnVzdGlmeSBjYXB0dXJpbmcgdG8gc3Vydml2ZSBp
ZiBjdXN0b20gcHl0ZXN0X3J1bnRlc3Rfc2V0dXAKKyAgY29kZSBmYWlsZWQgYW5kIHByZXZlbnRl
ZCB0aGUgY2FwdHVyaW5nIHNldHVwIGNvZGUgZnJvbSBydW5uaW5nLgorCistIG1ha2UgcHkudGVz
dC4qIGhlbHBlcnMgcHJvdmlkZWQgYnkgZGVmYXVsdCBwbHVnaW5zIHZpc2libGUgZWFybHkgLQor
ICB3b3JrcyB0cmFuc3BhcmVudGx5IGJvdGggZm9yIHB5ZG9jIGFuZCBmb3IgaW50ZXJhY3RpdmUg
c2Vzc2lvbnMKKyAgd2hpY2ggd2lsbCByZWd1bGFybHkgc2VlIGUuZy4gcHkudGVzdC5tYXJrIGFu
ZCBweS50ZXN0LmltcG9ydG9yc2tpcC4KKworLSBzaW1wbGlmeSBpbnRlcm5hbCBwbHVnaW4gbWFu
YWdlciBtYWNoaW5lcnkKKy0gc2ltcGxpZnkgaW50ZXJuYWwgY29sbGVjdGlvbiB0cmVlIGJ5IGlu
dHJvZHVjaW5nIGEgUm9vdENvbGxlY3RvciBub2RlCisKKy0gZml4IGFzc2VydCByZWludGVycHJl
YXRpb24gdGhhdCBzZWVzIGEgY2FsbCBjb250YWluaW5nICJrZXl3b3JkPS4uLiIKKworLSBmaXgg
aXNzdWU2NjogaW52b2tlIHB5dGVzdF9zZXNzaW9uc3RhcnQgYW5kIHB5dGVzdF9zZXNzaW9uZmlu
aXNoCisgIGhvb2tzIG9uIHdvcmtlciBub2RlcyBkdXJpbmcgZGlzdC10ZXN0aW5nLCByZXBvcnQg
bW9kdWxlL3Nlc3Npb24gdGVhcmRvd24KKyAgaG9va3MgY29ycmVjdGx5LgorCistIGZpeCBpc3N1
ZTY1OiBwcm9wZXJseSBoYW5kbGUgZGlzdC10ZXN0aW5nIGlmIG5vCisgIGV4ZWNuZXQvcHkgbGli
IGluc3RhbGxlZCByZW1vdGVseS4KKworLSBza2lwIHNvbWUgaW5zdGFsbC10ZXN0cyBpZiBubyBl
eGVjbmV0IGlzIGF2YWlsYWJsZQorCistIGZpeCBkb2NzLCBmaXggaW50ZXJuYWwgYmluLyBzY3Jp
cHQgZ2VuZXJhdGlvbgorCisKKzEuMS4wICgyMDA5LTExLTA1KQorPT09PT09PT09PT09PT09PT09
CisKKy0gaW50cm9kdWNlIGF1dG9tYXRpYyBwbHVnaW4gcmVnaXN0cmF0aW9uIHZpYSAncHl0ZXN0
MTEnCisgIGVudHJ5cG9pbnRzIHZpYSBzZXR1cHRvb2xzJyBwa2dfcmVzb3VyY2VzLml0ZXJfZW50
cnlfcG9pbnRzCisKKy0gZml4IHB5LnRlc3QgZGlzdC10ZXN0aW5nIHRvIHdvcmsgd2l0aCBleGVj
bmV0ID49IDEuMC4wYjQKKworLSByZS1pbnRyb2R1Y2UgcHkudGVzdC5jbWRsaW5lLm1haW4oKSBm
b3IgYmV0dGVyIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKworLSBzdm4gcGF0aHM6IGZpeCBhIGJ1
ZyB3aXRoIHBhdGguY2hlY2sodmVyc2lvbmVkPVRydWUpIGZvciBzdm4gcGF0aHMsCisgIGFsbG93
ICclJyBpbiBzdm4gcGF0aHMsIG1ha2Ugc3Zud2MudXBkYXRlKCkgZGVmYXVsdCB0byBpbnRlcmFj
dGl2ZSBtb2RlCisgIGxpa2UgaW4gMS4wLnggYW5kIGFkZCBzdm53Yy51cGRhdGUoaW50ZXJhY3Rp
dmU9RmFsc2UpIHRvIGluaGliaXQgaW50ZXJhY3Rpb24uCisKKy0gcmVmaW5lIGRpc3RyaWJ1dGVk
IHRhcmJhbGwgdG8gY29udGFpbiB0ZXN0IGFuZCBubyBweWMgZmlsZXMKKworLSB0cnkgaGFyZGVy
IHRvIGhhdmUgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIHB5LmNvbXBhdC4qIGFjY2Vzc2VzCisg
IHJlcG9ydCBhIGNvcnJlY3QgbG9jYXRpb24KKworMS4wLjMKKz09PT09CisKKyogYWRqdXN0IGFu
ZCBpbXByb3ZlIGRvY3MKKworKiByZW1vdmUgcHkucmVzdCB0b29sIGFuZCBpbnRlcm5hbCBuYW1l
c3BhY2UgLSBpdCB3YXMKKyAgbmV2ZXIgcmVhbGx5IGFkdmVydGlzZWQgYW5kIGNhbiBzdGlsbCBi
ZSB1c2VkIHdpdGgKKyAgdGhlIG9sZCByZWxlYXNlIGlmIG5lZWRlZC4gIElmIHRoZXJlIGlzIGlu
dGVyZXN0CisgIGl0IGNvdWxkIGJlIHJldml2ZWQgaW50byBpdHMgb3duIHRvb2wgaSBndWVzcy4K
KworKiBmaXggaXNzdWU0OCBhbmQgaXNzdWU1OTogcmFpc2UgYW4gRXJyb3IgaWYgdGhlIG1vZHVs
ZQorICBmcm9tIGFuIGltcG9ydGVkIHRlc3QgZmlsZSBkb2VzIG5vdCBzZWVtIHRvIGNvbWUgZnJv
bQorICB0aGUgZmlsZXBhdGggLSBhdm9pZHMgInNhbWUtbmFtZSIgY29uZnVzaW9uIHRoYXQgaGFz
CisgIGJlZW4gcmVwb3J0ZWQgcmVwZWF0ZWRseQorCisqIG1lcmdlZCBSb25ueSdzIG5vc2UtY29t
cGF0aWJpbGl0eSBoYWNrczogbm93CisgIG5vc2Utc3R5bGUgc2V0dXBfbW9kdWxlKCkgYW5kIHNl
dHVwKCkgZnVuY3Rpb25zIGFyZQorICBzdXBwb3J0ZWQKKworKiBpbnRyb2R1Y2UgZ2VuZXJhbGl6
ZWQgcHkudGVzdC5tYXJrIGZ1bmN0aW9uIG1hcmtpbmcKKworKiByZXNodWZmbGUgLyByZWZpbmUg
Y29tbWFuZCBsaW5lIGdyb3VwaW5nCisKKyogZGVwcmVjYXRlIHBhcnNlci5hZGRncm91cCBpbiBm
YXZvdXIgb2YgZ2V0Z3JvdXAgd2hpY2ggY3JlYXRlcyBvcHRpb24gZ3JvdXAKKworKiBhZGQgLS1y
ZXBvcnQgY29tbWFuZCBsaW5lIG9wdGlvbiB0aGF0IGFsbG93cyB0byBjb250cm9sIHNob3dpbmcg
b2Ygc2tpcHBlZC94ZmFpbGVkIHNlY3Rpb25zCisKKyogZ2VuZXJhbGl6ZWQgc2tpcHBpbmc6IGEg
bmV3IHdheSB0byBtYXJrIHB5dGhvbiBmdW5jdGlvbnMgd2l0aCBza2lwaWYgb3IgeGZhaWwKKyAg
YXQgZnVuY3Rpb24sIGNsYXNzIGFuZCBtb2R1bGVzIGxldmVsIGJhc2VkIG9uIHBsYXRmb3JtIG9y
IHN5cy1tb2R1bGUgYXR0cmlidXRlcy4KKworKiBleHRlbmQgcHkudGVzdC5tYXJrIGRlY29yYXRv
ciB0byBhbGxvdyBmb3IgcG9zaXRpb25hbCBhcmdzCisKKyogaW50cm9kdWNlIGFuZCB0ZXN0ICJw
eS5jbGVhbnVwIC1kIiB0byByZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMKKworKiBmaXggaXNzdWUg
IzU5IC0gcm9idXN0aWZ5IHVuaXR0ZXN0IHRlc3QgY29sbGVjdGlvbgorCisqIG1ha2UgYnB5dGhv
bi9oZWxwIGludGVyYWN0aW9uIHdvcmsgYnkgYWRkaW5nIGFuIF9fYWxsX18gYXR0cmlidXRlCisg
IHRvIEFwaU1vZHVsZSwgY2xlYW51cCBpbml0cGtnCisKKyogdXNlIE1JVCBsaWNlbnNlIGZvciBw
eWxpYiwgYWRkIHNvbWUgY29udHJpYnV0b3JzCisKKyogcmVtb3ZlIHB5LmV4ZWNuZXQgY29kZSBh
bmQgc3Vic3RpdHV0ZSBhbGwgdXNhZ2VzIHdpdGggJ2V4ZWNuZXQnIHByb3BlcgorCisqIGZpeCBp
c3N1ZTUwIC0gY2FjaGVkX3NldHVwIG5vdyBjYWNoZXMgbW9yZSB0byBleHBlY3RhdGlvbnMKKyAg
Zm9yIHRlc3QgZnVuY3Rpb25zIHdpdGggbXVsdGlwbGUgYXJndW1lbnRzLgorCisqIG1lcmdlIEph
cmtvJ3MgZml4ZXMsIGlzc3VlICM0NSBhbmQgIzQ2CisKKyogYWRkIHRoZSBhYmlsaXR5IHRvIHNw
ZWNpZnkgYSBwYXRoIGZvciBweS5sb29rdXAgdG8gc2VhcmNoIGluCisKKyogZml4IGEgZnVuY2Fy
ZyBjYWNoZWRfc2V0dXAgYnVnIHByb2JhYmx5IG9ubHkgb2NjdXJyaW5nCisgIGluIGRpc3RyaWJ1
dGVkIHRlc3RpbmcgYW5kICJtb2R1bGUiIHNjb3BlIHdpdGggdGVhcmRvd24uCisKKyogbWFueSBm
aXhlcyBhbmQgY2hhbmdlcyBmb3IgbWFraW5nIHRoZSBjb2RlIGJhc2UgcHl0aG9uMyBjb21wYXRp
YmxlLAorICBtYW55IHRoYW5rcyB0byBCZW5qYW1pbiBQZXRlcnNvbiBmb3IgaGVscGluZyB3aXRo
IHRoaXMuCisKKyogY29uc29saWRhdGUgYnVpbHRpbnMgaW1wbGVtZW50YXRpb24gdG8gYmUgY29t
cGF0aWJsZSB3aXRoID49Mi4zLAorICBhZGQgaGVscGVycyB0byBlYXNlIGtlZXBpbmcgMiBhbmQg
M2sgY29tcGF0aWJsZSBjb2RlCisKKyogZGVwcmVjYXRlIHB5LmNvbXBhdC5kb2N0ZXN0fHN1YnBy
b2Nlc3N8dGV4dHdyYXB8b3B0cGFyc2UKKworKiBkZXByZWNhdGUgcHkubWFnaWMuYXV0b3BhdGgs
IHJlbW92ZSBweS9tYWdpYyBkaXJlY3RvcnkKKworKiBtb3ZlIHB5dGVzdCBhc3NlcnRpb24gaGFu
ZGxpbmcgdG8gcHkvY29kZSBhbmQgYSBweXRlc3RfYXNzZXJ0aW9uCisgIHBsdWdpbiwgYWRkICIt
LW5vLWFzc2VydCIgb3B0aW9uLCBkZXByZWNhdGUgcHkubWFnaWMgbmFtZXNwYWNlcworICBpbiBm
YXZvdXIgb2YgKGxlc3MpIHB5LmNvZGUgb25lcy4KKworKiBjb25zb2xpZGF0ZSBhbmQgY2xlYW51
cCBweS9jb2RlIGNsYXNzZXMgYW5kIGZpbGVzCisKKyogY2xlYW51cCBweS9taXNjLCBtb3ZlIHRl
c3RzIHRvIGJpbi1mb3ItZGlzdAorCisqIGludHJvZHVjZSBkZWxhdHRyL2RlbGl0ZW0vZGVsZW52
IG1ldGhvZHMgdG8gcHkudGVzdCdzIG1vbmtleXBhdGNoIGZ1bmNhcmcKKworKiBjb25zb2xpZGF0
ZSBweS5sb2cgaW1wbGVtZW50YXRpb24sIHJlbW92ZSBvbGQgYXBwcm9hY2guCisKKyogaW50cm9k
dWNlIHB5LmlvLlRleHRJTyBhbmQgcHkuaW8uQnl0ZXNJTyBmb3IgZGlzdGluZ3Vpc2hpbmcgYmV0
d2VlbgorICB0ZXh0L3VuaWNvZGUgYW5kIGJ5dGUtc3RyZWFtcyAodXNlcyB1bmRlcmx5aW5nIHN0
YW5kYXJkIGxpYiBpby4qCisgIGlmIGF2YWlsYWJsZSkKKworKiBtYWtlIHB5LnVuaXR0ZXN0X2Nv
bnZlcnQgaGVscGVyIHNjcmlwdCBhdmFpbGFibGUgd2hpY2ggY29udmVydHMgInVuaXR0ZXN0LnB5
IgorICBzdHlsZSBmaWxlcyBpbnRvIHRoZSBzaW1wbGVyIGFzc2VydC9kaXJlY3QtdGVzdC1jbGFz
c2VzIHB5LnRlc3Qvbm9zZXRlc3RzCisgIHN0eWxlLiAgVGhlIHNjcmlwdCB3YXMgd3JpdHRlbiBi
eSBMYXVyYSBDcmVpZ2h0b24uCisKKyogc2ltcGxpZmllZCBpbnRlcm5hbCBsb2NhbHBhdGggaW1w
bGVtZW50YXRpb24KKworMS4wLjIgKDIwMDktMDgtMjcpCis9PT09PT09PT09PT09PT09PT0KKwor
KiBmaXhpbmcgcGFja2FnaW5nIGlzc3VlcywgdHJpZ2dlcmVkIGJ5IGZlZG9yYSByZWRoYXQgcGFj
a2FnaW5nLAorICBhbHNvIGFkZGVkIGRvYywgZXhhbXBsZXMgYW5kIGNvbnRyaWIgZGlycyB0byB0
aGUgdGFyYmFsbC4KKworKiBhZGRlZCBhIGRvY3VtZW50YXRpb24gbGluayB0byB0aGUgbmV3IGRq
YW5nbyBwbHVnaW4uCisKKzEuMC4xICgyMDA5LTA4LTE5KQorPT09PT09PT09PT09PT09PT09CisK
KyogYWRkZWQgYSAncHl0ZXN0X25vc2UnIHBsdWdpbiB3aGljaCBoYW5kbGVzIG5vc2UuU2tpcFRl
c3QsCisgIG5vc2Utc3R5bGUgZnVuY3Rpb24vbWV0aG9kL2dlbmVyYXRvciBzZXR1cC90ZWFyZG93
biBhbmQKKyAgdHJpZXMgdG8gcmVwb3J0IGZ1bmN0aW9ucyBjb3JyZWN0bHkuCisKKyogY2FwdHVy
aW5nIG9mIHVuaWNvZGUgd3JpdGVzIG9yIGVuY29kZWQgc3RyaW5ncyB0byBzeXMuc3Rkb3V0L2Vy
cgorICB3b3JrIGJldHRlciwgYWxzbyB0ZXJtaW5hbHdyaXRpbmcgd2FzIGFkYXB0ZWQgYW5kIHNv
bWV3aGF0CisgIHVuaWZpZWQgYmV0d2VlbiB3aW5kb3dzIGFuZCBsaW51eC4KKworKiBpbXByb3Zl
ZCBkb2N1bWVudGF0aW9uIGxheW91dCBhbmQgY29udGVudCBhIGxvdAorCisqIGFkZGVkIGEgIi0t
aGVscC1jb25maWciIG9wdGlvbiB0byBzaG93IGNvbmZ0ZXN0LnB5IC8gRU5WLXZhciBuYW1lcyBm
b3IKKyAgYWxsIGxvbmdvcHQgY21kbGluZSBvcHRpb25zLCBhbmQgc29tZSBzcGVjaWFsIGNvbmZ0
ZXN0LnB5IHZhcmlhYmxlcy4KKyAgcmVuYW1lZCAnY29uZl9jYXB0dXJlJyBjb25mdGVzdCBzZXR0
aW5nIHRvICdvcHRpb25fY2FwdHVyZScgYWNjb3JkaW5nbHkuCisKKyogZml4IGlzc3VlICMyNzog
YmV0dGVyIHJlcG9ydGluZyBvbiBub24tY29sbGVjdGFibGUgaXRlbXMgZ2l2ZW4gb24gY29tbWFu
ZGxpbmUKKyAgKGUuZy4gcHljIGZpbGVzKQorCisqIGZpeCBpc3N1ZSAjMzM6IGFkZGVkIC0tdmVy
c2lvbiBmbGFnICh0aGFua3MgQmVuamFtaW4gUGV0ZXJzb24pCisKKyogZml4IGlzc3VlICMzMjog
YWRkaW5nIHN1cHBvcnQgZm9yICJpbmNvbXBsZXRlIiBwYXRocyB0byB3Y3BhdGguc3RhdHVzKCkK
KworKiAiVGVzdCIgcHJlZml4ZWQgY2xhc3NlcyBhcmUgKm5vdCogY29sbGVjdGVkIGJ5IGRlZmF1
bHQgYW55bW9yZSBpZiB0aGV5CisgIGhhdmUgYW4gX19pbml0X18gbWV0aG9kCisKKyogbW9ua2V5
cGF0Y2ggc2V0ZW52KCkgbm93IGFjY2VwdHMgYSAicHJlcGVuZCIgcGFyYW1ldGVyCisKKyogaW1w
cm92ZWQgcmVwb3J0aW5nIG9mIGNvbGxlY3Rpb24gZXJyb3IgdHJhY2ViYWNrcworCisqIHNpbXBs
aWZpZWQgbXVsdGljYWxsIG1lY2hhbmlzbSBhbmQgcGx1Z2luIGFyY2hpdGVjdHVyZSwKKyAgcmVu
YW1lZCBzb21lIGludGVybmFsIG1ldGhvZHMgYW5kIGFyZ25hbWVzCisKKzEuMC4wICgyMDA5LTA4
LTA0KQorPT09PT09PT09PT09PT09PT09CisKKyogbW9yZSB0ZXJzZSByZXBvcnRpbmcgdHJ5IHRv
IHNob3cgZmlsZXN5c3RlbSBwYXRoIHJlbGF0aXZlbHkgdG8gY3VycmVudCBkaXIKKyogaW1wcm92
ZSB4ZmFpbCBvdXRwdXQgYSBiaXQKKworMS4wLjBiOSAoMjAwOS0wNy0zMSkKKz09PT09PT09PT09
PT09PT09PT09CisKKyogY2xlYW5seSBoYW5kbGUgYW5kIHJlcG9ydCBmaW5hbCB0ZWFyZG93biBv
ZiB0ZXN0IHNldHVwCisKKyogZml4IHN2bi0xLjYgY29tcGF0IGlzc3VlIHdpdGggcHkucGF0aC5z
dm53YygpLnZlcnNpb25lZCgpCisgICh0aGFua3MgV291dGVyIFZhbmRlbiBIb3ZlKQorCisqIHNl
dHVwL3RlYXJkb3duIG9yIGNvbGxlY3Rpb24gcHJvYmxlbXMgbm93IHNob3cgYXMgRVJST1JzCisg
IG9yIHdpdGggYmlnICJFIidzIGluIHRoZSBwcm9ncmVzcyBsaW5lcy4gIHRoZXkgYXJlIHJlcG9y
dGVkCisgIGFuZCBjb3VudGVkIHNlcGFyYXRlbHkuCisKKyogZGlzdC10ZXN0aW5nOiBwcm9wZXJs
eSBoYW5kbGUgdGVzdCBpdGVtcyB0aGF0IGdldCBsb2NhbGx5CisgIGNvbGxlY3RlZCBidXQgY2Fu
bm90IGJlIGNvbGxlY3RlZCBvbiB0aGUgcmVtb3RlIHNpZGUgLSBvZnRlbgorICBkdWUgdG8gcGxh
dGZvcm0vZGVwZW5kZW5jeSByZWFzb25zCisKKyogc2ltcGxpZmllZCBweS50ZXN0Lm1hcmsgQVBJ
IC0gc2VlIGtleXdvcmQgcGx1Z2luIGRvY3VtZW50YXRpb24KKworKiBpbnRlZ3JhdGUgYmV0dGVy
IHdpdGggbG9nZ2luZzogY2FwdHVyaW5nIG5vdyBieSBkZWZhdWx0IGNhcHR1cmVzCisgIHRlc3Qg
ZnVuY3Rpb25zIGFuZCB0aGVpciBpbW1lZGlhdGUgc2V0dXAvdGVhcmRvd24gaW4gYSBzaW5nbGUg
c3RyZWFtCisKKyogY2Fwc3lzIGFuZCBjYXBmZCBmdW5jYXJncyBub3cgaGF2ZSBhIHJlYWRvdXRl
cnIoKSBhbmQgYSBjbG9zZSgpIG1ldGhvZAorICAodW5kZXJseWluZ2x5IHB5LmlvLlN0ZENhcHR1
cmUvRkQgb2JqZWN0cyBhcmUgdXNlZCB3aGljaCBncmV3IGEKKyAgcmVhZG91dGVycigpIG1ldGhv
ZCBhcyB3ZWxsIHRvIHJldHVybiBzbmFwc2hvdHMgb2YgY2FwdHVyZWQgb3V0L2VycikKKworKiBt
YWtlIGFzc2VydC1yZWludGVycHJldGF0aW9uIHdvcmsgYmV0dGVyIHdpdGggY29tcGFyaXNvbnMg
bm90CisgIHJldHVybmluZyBib29scyAocmVwb3J0ZWQgd2l0aCBudW1weSBmcm9tIHRoYW5rcyBt
YWNpZWogZmlqYWxrb3dza2kpCisKKyogcmV3b3JrZWQgcGVyLXRlc3Qgb3V0cHV0IGNhcHR1cmlu
ZyBpbnRvIHRoZSBweXRlc3RfaW9jYXB0dXJlLnB5IHBsdWdpbgorICBhbmQgdGh1cyByZW1vdmVk
IGNhcHR1cmluZyBjb2RlIGZyb20gY29uZmlnIG9iamVjdAorCisqIGl0ZW0ucmVwcl9mYWlsdXJl
KGV4Y2luZm8pIGluc3RlYWQgb2YgaXRlbS5yZXByX2ZhaWx1cmUoZXhjaW5mbywgb3V0ZXJyKQor
CisKKzEuMC4wYjggKDIwMDktMDctMjIpCis9PT09PT09PT09PT09PT09PT09PQorCisqIHB5dGVz
dF91bml0dGVzdC1wbHVnaW4gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdAorCisqIGludHJvZHVj
ZWQgcHl0ZXN0X2tleWJvYXJkaW50ZXJydXB0IGhvb2sgYW5kCisgIHJlZmluZWQgcHl0ZXN0X3Nl
c3Npb25maW5pc2ggaG9va2VkLCBhZGRlZCB0ZXN0cy4KKworKiB3b3JrYXJvdW5kIGEgYnVnZ3kg
bG9nZ2luZyBtb2R1bGUgaW50ZXJhY3Rpb24gKCJjbG9zaW5nIGFscmVhZHkgY2xvc2VkCisgIGZp
bGVzIikuICBUaGFua3MgdG8gU3JpZGhhciBSYXRuYWt1bWFyIGZvciB0cmlnZ2VyaW5nLgorCisq
IGlmIHBsdWdpbnMgdXNlICJweS50ZXN0LmltcG9ydG9yc2tpcCIgZm9yIGltcG9ydGluZworICBh
IGRlcGVuZGVuY3kgb25seSBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZAorICBvZiBl
eGl0aW5nIHRoZSB0ZXN0aW5nIHByb2Nlc3MuCisKKyogbWFueSBpbXByb3ZlbWVudHMgdG8gZG9j
czoKKyAgLSByZWZpbmVkIGZ1bmNhcmdzIGRvYyAsIHVzZSB0aGUgdGVybSAiZmFjdG9yeSIgaW5z
dGVhZCBvZiAicHJvdmlkZXIiCisgIC0gYWRkZWQgYSBuZXcgdGFsay90dXRvcmlhbCBkb2MgcGFn
ZQorICAtIGJldHRlciBkb3dubG9hZCBwYWdlCisgIC0gYmV0dGVyIHBsdWdpbiBkb2NzdHJpbmdz
CisgIC0gYWRkZWQgbmV3IHBsdWdpbnMgcGFnZSBhbmQgYXV0b21hdGljIGRvYyBnZW5lcmF0aW9u
IHNjcmlwdAorCisqIGZpeGVkIHRlYXJkb3duIHByb2JsZW0gcmVsYXRlZCB0byBwYXJ0aWFsbHkg
ZmFpbGluZyBmdW5jYXJnIHNldHVwcworICAodGhhbmtzIE1yVG9wZiBmb3IgcmVwb3J0aW5nKSwg
InB5dGVzdF9ydW50ZXN0X3RlYXJkb3duIiBpcyBub3cKKyAgYWx3YXlzIGludm9rZWQgZXZlbiBp
ZiB0aGUgInB5dGVzdF9ydW50ZXN0X3NldHVwIiBmYWlsZWQuCisKKyogdHdlYWtlZCBkb2N0ZXN0
IG91dHB1dCBmb3IgZG9jc3RyaW5ncyBpbiBweSBtb2R1bGVzLAorICB0aGFua3MgUmFkb21pci4K
KworMS4wLjBiNworPT09PT09PQorCisqIHJlbmFtZWQgcHkudGVzdC54ZmFpbCBiYWNrIHRvIHB5
LnRlc3QubWFyay54ZmFpbCB0byBhdm9pZAorICB0d28gd2F5cyB0byBkZWNvcmF0ZSBmb3IgeGZh
aWwKKworKiByZS1hZGRlZCBweS50ZXN0Lm1hcmsgZGVjb3JhdG9yIGZvciBzZXR0aW5nIGtleXdv
cmRzIG9uIGZ1bmN0aW9ucworICAoaXQgd2FzIGFjdHVhbGx5IGRvY3VtZW50ZWQgc28gcmVtb3Zp
bmcgaXQgd2FzIG5vdCBuaWNlKQorCisqIHJlbW92ZSBzY29wZS1hcmd1bWVudCBmcm9tIHJlcXVl
c3QuYWRkZmluYWxpemVyKCkgYmVjYXVzZQorICByZXF1ZXN0LmNhY2hlZF9zZXR1cCBoYXMgdGhl
IHNjb3BlIGFyZy4gVE9PV1RESS4KKworKiBwZXJmb3JtIHNldHVwIGZpbmFsaXphdGlvbiBiZWZv
cmUgcmVwb3J0aW5nIGZhaWx1cmVzCisKKyogYXBwbHkgbW9kaWZpZWQgcGF0Y2hlcyBmcm9tIEFu
ZHJlYXMgS2xvZWNrbmVyIHRvIGFsbG93CisgIHRlc3QgZnVuY3Rpb25zIHRvIGhhdmUgbm8gZnVu
Y19jb2RlICgjMjIpIGFuZCB0byBtYWtlCisgICItayIgYW5kIGZ1bmN0aW9uIGtleXdvcmRzIHdv
cmsgICgjMjApCisKKyogYXBwbHkgcGF0Y2ggZnJvbSBEYW5pZWwgUGVvbHpsZWl0aG5lciAoaXNz
dWUgIzIzKQorCisqIHJlc29sdmUgaXNzdWUgIzE4LCBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigp
IGFuZAorICByZWRpcmVjdGlvbiBjbGFzaAorCisqIG1ha2UgX19uYW1lX18gPT0gIl9fY2hhbm5l
bGV4ZWNfXyIgZm9yIHJlbW90ZV9leGVjIGNvZGUKKworMS4wLjBiMyAoMjAwOS0wNi0xOSkKKz09
PT09PT09PT09PT09PT09PT09CisKKyogcGx1Z2luIGNsYXNzZXMgYXJlIHJlbW92ZWQ6IG9uZSBu
b3cgZGVmaW5lcworICBob29rcyBkaXJlY3RseSBpbiBjb25mdGVzdC5weSBvciBnbG9iYWwgcHl0
ZXN0XyoucHkKKyAgZmlsZXMuCisKKyogYWRkZWQgbmV3IHB5dGVzdF9uYW1lc3BhY2UoY29uZmln
KSBob29rIHRoYXQgYWxsb3dzCisgIHRvIGluamVjdCBoZWxwZXJzIGRpcmVjdGx5IHRvIHRoZSBw
eS50ZXN0LiogbmFtZXNwYWNlLgorCisqIGRvY3VtZW50ZWQgYW5kIHJlZmluZWQgbWFueSBob29r
cworCisqIGFkZGVkIG5ldyBzdHlsZSBvZiBnZW5lcmF0aXZlIHRlc3RzIHZpYQorICBweXRlc3Rf
Z2VuZXJhdGVfdGVzdHMgaG9vayB0aGF0IGludGVncmF0ZXMKKyAgd2VsbCB3aXRoIGZ1bmN0aW9u
IGFyZ3VtZW50cy4KKworCisxLjAuMGIxCis9PT09PT09CisKKyogaW50cm9kdWNlZCBuZXcgImZ1
bmNhcmciIHNldHVwIG1ldGhvZCwKKyAgc2VlIGRvYy90ZXN0L2Z1bmNhcmcudHh0CisKKyogaW50
cm9kdWNlZCBwbHVnaW4gYXJjaGl0ZWN0dXJlIGFuZCBtYW55CisgIG5ldyBweS50ZXN0IHBsdWdp
bnMsIHNlZQorICBkb2MvdGVzdC9wbHVnaW5zLnR4dAorCisqIHRlYXJkb3duX21ldGhvZCBpcyBu
b3cgZ3VhcmFudGVlZCB0byBnZXQKKyAgY2FsbGVkIGFmdGVyIGEgdGVzdCBtZXRob2QgaGFzIHJ1
bi4KKworKiBuZXcgbWV0aG9kOiBweS50ZXN0LmltcG9ydG9yc2tpcChtb2QsbWludmVyc2lvbikK
KyAgd2lsbCBlaXRoZXIgaW1wb3J0IG9yIGNhbGwgcHkudGVzdC5za2lwKCkKKworKiBjb21wbGV0
ZWx5IHJldmlzZWQgaW50ZXJuYWwgcHkudGVzdCBhcmNoaXRlY3R1cmUKKworKiBuZXcgcHkucHJv
Y2Vzcy5Gb3JrZWRGdW5jIG9iamVjdCBhbGxvd2luZyB0bworICBmb3JrIGV4ZWN1dGlvbiBvZiBh
IGZ1bmN0aW9uIHRvIGEgc3ViIHByb2Nlc3MKKyAgYW5kIGdldHRpbmcgYSByZXN1bHQgYmFjay4K
KworWFhYIGxvdHMgb2YgdGhpbmdzIG1pc3NpbmcgaGVyZSBYWFgKKworMC45LjIKKz09PT09CisK
KyogcmVmaW5lZCBpbnN0YWxsYXRpb24gYW5kIG1ldGFkYXRhLCBjcmVhdGVkIG5ldyBzZXR1cC5w
eSwKKyAgbm93IGJhc2VkIG9uIHNldHVwdG9vbHMvZXpfc2V0dXAgKHRoYW5rcyB0byBSYWxmIFNj
aG1pdHQKKyAgZm9yIGhpcyBzdXBwb3J0KS4KKworKiBpbXByb3ZlZCB0aGUgd2F5IG9mIG1ha2lu
ZyBweS4qIHNjcmlwdHMgYXZhaWxhYmxlIGluCisgIHdpbmRvd3MgZW52aXJvbm1lbnRzLCB0aGV5
IGFyZSBub3cgYWRkZWQgdG8gdGhlCisgIFNjcmlwdHMgZGlyZWN0b3J5IGFzICIuY21kIiBmaWxl
cy4KKworKiBweS5wYXRoLnN2bndjLnN0YXR1cygpIG5vdyBpcyBtb3JlIGNvbXBsZXRlIGFuZAor
ICB1c2VzIHhtbCBvdXRwdXQgZnJvbSB0aGUgJ3N2bicgY29tbWFuZCBpZiBhdmFpbGFibGUKKyAg
KEd1aWRvIFdlc2RvcnApCisKKyogZml4IGZvciBweS5wYXRoLnN2biogdG8gd29yayB3aXRoIHN2
biAxLjUKKyAgKENocmlzIExhbWIpCisKKyogZml4IHBhdGgucmVsdG8ob3RoZXJwYXRoKSBtZXRo
b2Qgb24gd2luZG93cyB0bworICB1c2Ugbm9ybWNhc2UgZm9yIGNoZWNraW5nIGlmIGEgcGF0aCBp
cyByZWxhdGl2ZS4KKworKiBweS50ZXN0J3MgdHJhY2ViYWNrIGlzIGJldHRlciBwYXJzZWFibGUg
ZnJvbSBlZGl0b3JzCisgIChmb2xsb3dzIHRoZSBmaWxlbmFtZXM6TElORU5POiBNU0cgY29udmVu
dGlvbikKKyAgKHRoYW5rcyB0byBPc21vIFNhbG9tYWEpCisKKyogZml4IHRvIGphdmFzY3JpcHQt
Z2VuZXJhdGlvbiwgInB5LnRlc3QgLS1ydW5icm93c2VyIgorICBzaG91bGQgd29yayBtb3JlIHJl
bGlhYmx5IG5vdworCisqIHJlbW92ZWQgcHJldmlvdXNseSBhY2NpZGVudGFsbHkgYWRkZWQKKyAg
cHkudGVzdC5icm9rZW4gYW5kIHB5LnRlc3Qubm90aW1wbGVtZW50ZWQgaGVscGVycy4KKworKiB0
aGVyZSBub3cgaXMgYSBweS5fX3ZlcnNpb25fXyBhdHRyaWJ1dGUKKworMC45LjEKKz09PT09CisK
K1RoaXMgaXMgYSBmYWlybHkgY29tcGxldGUgbGlzdCBvZiB2MC45LjEsIHdoaWNoIGNhbgorc2Vy
dmUgYXMgYSByZWZlcmVuY2UgZm9yIGRldmVsb3BlcnMuCisKKyogYWxsb3dpbmcgKyBzaWducyBp
biBweS5wYXRoLnN2biB1cmxzIFszOTEwNl0KKyogZml4ZWQgc3VwcG9ydCBmb3IgRmFpbGVkIGV4
Y2VwdGlvbnMgd2l0aG91dCBleGNpbmZvIGluIHB5LnRlc3QgWzM5MzQwXQorKiBhZGRlZCBzdXBw
b3J0IGZvciBraWxsaW5nIHByb2Nlc3NlcyBmb3IgV2luZG93cyAoYXMgd2VsbCBhcyBwbGF0Zm9y
bXMgdGhhdAorICBzdXBwb3J0IG9zLmtpbGwpIGluIHB5Lm1pc2Mua2lsbHByb2MgWzM5NjU1XQor
KiBhZGRlZCBzZXR1cC90ZWFyZG93biBmb3IgZ2VuZXJhdGl2ZSB0ZXN0cyB0byBweS50ZXN0IFs0
MDcwMl0KKyogYWRkZWQgZGV0ZWN0aW9uIG9mIEZBSUxFRCBUTyBMT0FEIE1PRFVMRSB0byBweS50
ZXN0IFs0MDcwMywgNDA3MzgsIDQwNzM5XQorKiBmaXhlZCBwcm9ibGVtIHdpdGggY2FsbGluZyAu
cmVtb3ZlKCkgb24gd2NwYXRocyBvZiBub24tdmVyc2lvbmVkIGZpbGVzIGluCisgIHB5LnBhdGgg
WzQ0MjQ4XQorKiBmaXhlZCBzb21lIGltcG9ydCBhbmQgaW5oZXJpdGFuY2UgaXNzdWVzIGluIHB5
LnRlc3QgWzQxNDgwLCA0NDY0OCwgNDQ2NTVdCisqIGZhaWwgdG8gcnVuIGdyZWVubGV0IHRlc3Rz
IHdoZW4gcHlweSBpcyBhdmFpbGFibGUsIGJ1dCB3aXRob3V0IHN0YWNrbGVzcworICBbNDUyOTRd
CisqIHNtYWxsIGZpeGVzIGluIHJzZXNzaW9uIHRlc3RzIFs0NTI5NV0KKyogZml4ZWQgaXNzdWUg
d2l0aCAyLjUgdHlwZSByZXByZXNlbnRhdGlvbnMgaW4gcHkudGVzdCBbNDU0ODMsIDQ1NDg0XQor
KiBtYWRlIHRoYXQgaW50ZXJuYWwgcmVwb3J0aW5nIGlzc3VlcyBkaXNwbGF5aW5nIGlzIGRvbmUg
YXRvbWljYWxseSBpbiBweS50ZXN0CisgIFs0NTUxOF0KKyogbWFkZSB0aGF0IG5vbi1leGlzdGlu
ZyBmaWxlcyBhcmUgaWdub3JlZCBieSB0aGUgcHkubG9va3VwIHNjcmlwdCBbNDU1MTldCisqIGlt
cHJvdmVkIGV4Y2VwdGlvbiBuYW1lIGNyZWF0aW9uIGluIHB5LnRlc3QgWzQ1NTM1XQorKiBtYWRl
IHRoYXQgbGVzcyB0aHJlYWRzIGFyZSB1c2VkIGluIGV4ZWNuZXQgW21lcmdlIGluIDQ1NTM5XQor
KiByZW1vdmVkIGxvY2sgcmVxdWlyZWQgZm9yIGF0b21pYyByZXBvcnRpbmcgaXNzdWUgZGlzcGxh
eWluZyBpbiBweS50ZXN0CisgIFs0NTU0NV0KKyogcmVtb3ZlZCBnbG9iYWxzIGZyb20gZXhlY25l
dCBbNDU1NDEsIDQ1NTQ3XQorKiByZWZhY3RvcmVkIGNsZWFudXAgbWVjaGFuaWNzLCBtYWRlIHRo
YXQgc2V0RGFlbW9uIGlzIHNldCB0byAxIHRvIG1ha2UgYXRleGl0CisgIGdldCBjYWxsZWQgaW4g
Mi41IChweS5leGVjbmV0KSBbNDU1NDhdCisqIGZpeGVkIGJ1ZyBpbiBqb2luaW5nIHRocmVhZHMg
aW4gcHkuZXhlY25ldCdzIHNlcnZlbWFpbiBbNDU1NDldCisqIHJlZmFjdG9yZWQgcHkudGVzdC5y
c2Vzc2lvbiB0ZXN0cyB0byBub3QgcmVseSBvbiBleGFjdCBvdXRwdXQgZm9ybWF0IGFueW1vcmUK
KyAgWzQ1NjQ2XQorKiB1c2luZyByZXByKCkgb24gdGVzdCBvdXRjb21lIFs0NTY0N10KKyogYWRk
ZWQgJ1JlYXNvbicgY2xhc3NlcyBmb3IgcHkudGVzdC5za2lwKCkgWzQ1NjQ4LCA0NTY0OV0KKyog
a2lsbGVkIHNvbWUgdW5uZWNlc3Nhcnkgc2FuaXR5IGNoZWNrIGluIHB5LnRlc3QuY29sbGVjdCBb
NDU2NTVdCisqIGF2b2lkIHVzaW5nIG9zLnRtcGZpbGUoKSBpbiBweS5pby5mZGNhcHR1cmUgYmVj
YXVzZSBvbiBXaW5kb3dzIGl0J3Mgb25seQorICB1c2FibGUgYnkgQWRtaW5pc3RyYXRvcnMgWzQ1
OTAxXQorKiBhZGRlZCBzdXBwb3J0IGZvciBsb2NraW5nIGFuZCBub24tcmVjdXJzaXZlIGNvbW1p
dHMgdG8gcHkucGF0aC5zdm53YyBbNDU5OTRdCisqIGxvY2tpbmcgZmlsZXMgaW4gcHkuZXhlY25l
dCB0byBwcmV2ZW50IENQeXRob24gZnJvbSBzZWdmYXVsdGluZyBbNDYwMTBdCisqIGFkZGVkIGV4
cG9ydCgpIG1ldGhvZCB0byBweS5wYXRoLnN2bnVybAorKiBmaXhlZCAtZCAteCBpbiBweS50ZXN0
IFs0NzI3N10KKyogZml4ZWQgYXJndW1lbnQgY29uY2F0ZW5hdGlvbiBwcm9ibGVtIGluIHB5LnBh
dGguc3Zud2MgWzQ5NDIzXQorKiByZXN0b3JlIHB5LnRlc3QgYmVoYXZpb3VyIHRoYXQgaXQgZXhp
dHMgd2l0aCBjb2RlIDEgd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMKKyAgWzQ5OTc0XQorKiBkb24n
dCBmYWlsIG9uIGh0bWwgZmlsZXMgdGhhdCBkb24ndCBoYXZlIGFuIGFjY29tcGFueWluZyAudHh0
IGZpbGUgWzUwNjA2XQorKiBmaXhlZCAndXRlc3Rjb252ZXJ0LnB5IDwgaW5wdXQnIFs1MDY0NV0K
Kyogc21hbGwgZml4IGZvciBjb2RlIGluZGVudGF0aW9uIGluIHB5LmNvZGUuc291cmNlIFs1MDc1
NV0KKyogZml4IF9kb2NnZW4ucHkgZG9jdW1lbnRhdGlvbiBidWlsZGluZyBbNTEyODVdCisqIGlt
cHJvdmVkIGNoZWNrcyBmb3Igc291cmNlIHJlcHJlc2VudGF0aW9uIG9mIGNvZGUgYmxvY2tzIGlu
IHB5LnRlc3QgWzUxMjkyXQorKiBhZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGF1dGhlbnRpY2F0
aW9uIHRvIHB5LnBhdGguc3ZuKiBvYmplY3RzIFs1MjAwMCwKKyAgNTIwMDFdCisqIHJlbW92ZWQg
c29ydGVkKCkgY2FsbCBmb3IgcHkuYXBpZ2VuIHRlc3RzIGluIGZhdm91ciBvZiBbXS5zb3J0KCkg
dG8gc3VwcG9ydAorICBQeXRob24gMi4zIFs1MjQ4MV0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9jb25mLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbmYucHkKaW5kZXggZWJmZjZm
ZjNiZmE0Li5jNjMxNDg0YWEzNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jb25m
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jb25mLnB5CkBAIC0xLDQgKzEsMyBAQAotIyAt
Ki0gY29kaW5nOiB1dGYtOCAtKi0KICMKICMgcHl0ZXN0IGRvY3VtZW50YXRpb24gYnVpbGQgY29u
ZmlndXJhdGlvbiBmaWxlLCBjcmVhdGVkIGJ5CiAjIHNwaGlueC1xdWlja3N0YXJ0IG9uIEZyaSBP
Y3QgIDggMTc6NTQ6MjggMjAxMC4KQEAgLTEwLDE5ICs5LDIxIEBACiAjCiAjIEFsbCBjb25maWd1
cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRoYXQgYXJlIGNvbW1lbnRlZCBv
dXQKICMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KLQogIyBUaGUgdmVyc2lvbiBpbmZvIGZv
ciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9y
CiAjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhlciBw
bGFjZXMgdGhyb3VnaG91dCB0aGUKICMgYnVpbHQgZG9jdW1lbnRzLgogIwogIyBUaGUgZnVsbCB2
ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdzLgogIyBUaGUgc2hvcnQgWC5ZIHZl
cnNpb24uCi0KIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGRhdGV0aW1lCiAKIGZyb20g
X3B5dGVzdCBpbXBvcnQgX192ZXJzaW9uX18gYXMgdmVyc2lvbgorZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgVFlQRV9DSEVDS0lORworCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGltcG9ydCBz
cGhpbnguYXBwbGljYXRpb24KKwogCiByZWxlYXNlID0gIi4iLmpvaW4odmVyc2lvbi5zcGxpdCgi
LiIpWzoyXSkKIApAQCAtNDIsMTEgKzQzLDE0IEBAIHRvZG9faW5jbHVkZV90b2RvcyA9IDEKICMg
QWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJpbmdzLiBU
aGV5IGNhbiBiZSBleHRlbnNpb25zCiAjIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQgJ3NwaGlu
eC5leHQuKicpIG9yIHlvdXIgY3VzdG9tIG9uZXMuCiBleHRlbnNpb25zID0gWworICAgICJwYWxs
ZXRzX3NwaGlueF90aGVtZXMiLAorICAgICJweWdtZW50c19weXRlc3QiLAogICAgICJzcGhpbngu
ZXh0LmF1dG9kb2MiLAotICAgICJzcGhpbnguZXh0LnRvZG8iLAogICAgICJzcGhpbnguZXh0LmF1
dG9zdW1tYXJ5IiwKICAgICAic3BoaW54LmV4dC5pbnRlcnNwaGlueCIsCisgICAgInNwaGlueC5l
eHQudG9kbyIsCiAgICAgInNwaGlueC5leHQudmlld2NvZGUiLAorICAgICJzcGhpbnhfcmVtb3Zl
ZF9pbiIsCiAgICAgInNwaGlueGNvbnRyaWJfdHJpbyIsCiBdCiAKQEAgLTYzLDkgKzY3LDggQEAg
c291cmNlX3N1ZmZpeCA9ICIucnN0IgogbWFzdGVyX2RvYyA9ICJjb250ZW50cyIKIAogIyBHZW5l
cmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LgotcHJvamVjdCA9IHUicHl0ZXN0Igot
eWVhciA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpLnllYXIKLWNvcHlyaWdodCA9IHUiMjAx
NeKAk3t9ICwgaG9sZ2VyIGtyZWtlbCBhbmQgcHl0ZXN0LWRldiB0ZWFtIi5mb3JtYXQoeWVhcikK
K3Byb2plY3QgPSAicHl0ZXN0IgorY29weXJpZ2h0ID0gIjIwMTXigJMyMDIwLCBob2xnZXIga3Jl
a2VsIGFuZCBweXRlc3QtZGV2IHRlYW0iCiAKIAogIyBUaGUgbGFuZ3VhZ2UgZm9yIGNvbnRlbnQg
YXV0b2dlbmVyYXRlZCBieSBTcGhpbnguIFJlZmVyIHRvIGRvY3VtZW50YXRpb24KQEAgLTgxLDcg
Kzg0LDYgQEAgY29weXJpZ2h0ID0gdSIyMDE14oCTe30gLCBob2xnZXIga3Jla2VsIGFuZCBweXRl
c3QtZGV2IHRlYW0iLmZvcm1hdCh5ZWFyKQogIyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0
byBzb3VyY2UgZGlyZWN0b3J5LCB0aGF0IG1hdGNoIGZpbGVzIGFuZAogIyBkaXJlY3RvcmllcyB0
byBpZ25vcmUgd2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMuCiBleGNsdWRlX3BhdHRlcm5z
ID0gWwotICAgICJsaW5rcy5pbmMiLAogICAgICJfYnVpbGQiLAogICAgICJuYW1pbmcyMC5yc3Qi
LAogICAgICJ0ZXN0LyoiLApAQCAtOTUsNyArOTcsNyBAQCBleGNsdWRlX3BhdHRlcm5zID0gWwog
CiAKICMgVGhlIHJlU1QgZGVmYXVsdCByb2xlICh1c2VkIGZvciB0aGlzIG1hcmt1cDogYHRleHRg
KSB0byB1c2UgZm9yIGFsbCBkb2N1bWVudHMuCi0jIGRlZmF1bHRfcm9sZSA9IE5vbmUKK2RlZmF1
bHRfcm9sZSA9ICJsaXRlcmFsIgogCiAjIElmIHRydWUsICcoKScgd2lsbCBiZSBhcHBlbmRlZCB0
byA6ZnVuYzogZXRjLiBjcm9zcy1yZWZlcmVuY2UgdGV4dC4KICMgYWRkX2Z1bmN0aW9uX3BhcmVu
dGhlc2VzID0gVHJ1ZQpAQCAtMTE1LDYgKzExNywxOSBAQCBweWdtZW50c19zdHlsZSA9ICJzcGhp
bngiCiAjIEEgbGlzdCBvZiBpZ25vcmVkIHByZWZpeGVzIGZvciBtb2R1bGUgaW5kZXggc29ydGlu
Zy4KICMgbW9kaW5kZXhfY29tbW9uX3ByZWZpeCA9IFtdCiAKKyMgQSBsaXN0IG9mIHJlZ3VsYXIg
ZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCBVUklzIHRoYXQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIHdo
ZW4KKyMgZG9pbmcgYSBsaW5rY2hlY2suCitsaW5rY2hlY2tfaWdub3JlID0gWworICAgICJodHRw
czovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvYmxvYi9tYXN0ZXIvZG9jL3JlbGVhc2UvMS4xNi4w
LW5vdGVzLnJzdCNuZXctZGVwcmVjYXRpb25zIiwKKyAgICAiaHR0cHM6Ly9ibG9ncy5tc2RuLm1p
Y3Jvc29mdC5jb20vYmhhcnJ5LzIwMTcvMDYvMjgvdGVzdGluZy1pbi1hLWNsb3VkLWRlbGl2ZXJ5
LWNhZGVuY2UvIiwKKyAgICAiaHR0cDovL3B5dGhvbnRlc3RpbmcubmV0L2ZyYW1ld29yay9weXRl
c3QtaW50cm9kdWN0aW9uLyIsCisgICAgciJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzL1xkKyIsCisgICAgciJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvcHVsbC9cZCsiLAorXQorCisjIFRoZSBudW1iZXIgb2Ygd29ya2VyIHRocmVhZHMgdG8g
dXNlIHdoZW4gY2hlY2tpbmcgbGlua3MgKGRlZmF1bHQ9NSkuCitsaW5rY2hlY2tfd29ya2VycyA9
IDUKKwogCiAjIC0tIE9wdGlvbnMgZm9yIEhUTUwgb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xMjgsNyArMTQzLDcgQEAgaHRt
bF90aGVtZSA9ICJmbGFzayIKICMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUtc3BlY2lmaWMgYW5k
IGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCiAjIGZ1cnRoZXIuICBGb3Ig
YSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBzZWUgdGhlCiAjIGRv
Y3VtZW50YXRpb24uCi1odG1sX3RoZW1lX29wdGlvbnMgPSB7ImluZGV4X2xvZ28iOiBOb25lfQor
IyBodG1sX3RoZW1lX29wdGlvbnMgPSB7ImluZGV4X2xvZ28iOiBOb25lfQogCiAjIEFkZCBhbnkg
cGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSB0aGVtZXMgaGVyZSwgcmVsYXRpdmUgdG8gdGhpcyBk
aXJlY3RvcnkuCiAjIGh0bWxfdGhlbWVfcGF0aCA9IFtdCkBAIC0xNDcsNyArMTYyLDcgQEAgaHRt
bF9sb2dvID0gImltZy9weXRlc3QxLnBuZyIKICMgVGhlIG5hbWUgb2YgYW4gaW1hZ2UgZmlsZSAo
d2l0aGluIHRoZSBzdGF0aWMgcGF0aCkgdG8gdXNlIGFzIGZhdmljb24gb2YgdGhlCiAjIGRvY3Mu
ICBUaGlzIGZpbGUgc2hvdWxkIGJlIGEgV2luZG93cyBpY29uIGZpbGUgKC5pY28pIGJlaW5nIDE2
eDE2IG9yIDMyeDMyCiAjIHBpeGVscyBsYXJnZS4KLWh0bWxfZmF2aWNvbiA9ICJpbWcvcHl0ZXN0
MWZhdmkuaWNvIgoraHRtbF9mYXZpY29uID0gImltZy9mYXZpY29uLnBuZyIKIAogIyBBZGQgYW55
IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3RhdGljIGZpbGVzIChzdWNoIGFzIHN0eWxlIHNo
ZWV0cykgaGVyZSwKICMgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuIFRoZXkgYXJlIGNvcGll
ZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmlsZXMsCkBAIC0xNjgsMTggKzE4MywxOCBAQCBo
dG1sX2Zhdmljb24gPSAiaW1nL3B5dGVzdDFmYXZpLmljbyIKIAogaHRtbF9zaWRlYmFycyA9IHsK
ICAgICAiaW5kZXgiOiBbCisgICAgICAgICJzbGltX3NlYXJjaGJveC5odG1sIiwKICAgICAgICAg
InNpZGViYXJpbnRyby5odG1sIiwKICAgICAgICAgImdsb2JhbHRvYy5odG1sIiwKICAgICAgICAg
ImxpbmtzLmh0bWwiLAogICAgICAgICAic291cmNlbGluay5odG1sIiwKLSAgICAgICAgInNlYXJj
aGJveC5odG1sIiwKICAgICBdLAogICAgICIqKiI6IFsKKyAgICAgICAgInNsaW1fc2VhcmNoYm94
Lmh0bWwiLAogICAgICAgICAiZ2xvYmFsdG9jLmh0bWwiLAogICAgICAgICAicmVsYXRpb25zLmh0
bWwiLAogICAgICAgICAibGlua3MuaHRtbCIsCiAgICAgICAgICJzb3VyY2VsaW5rLmh0bWwiLAot
ICAgICAgICAic2VhcmNoYm94Lmh0bWwiLAogICAgIF0sCiB9CiAKQEAgLTE5Myw3ICsyMDgsNyBA
QCBodG1sX3NpZGViYXJzID0gewogaHRtbF9kb21haW5faW5kaWNlcyA9IFRydWUKIAogIyBJZiBm
YWxzZSwgbm8gaW5kZXggaXMgZ2VuZXJhdGVkLgotaHRtbF91c2VfaW5kZXggPSBGYWxzZQoraHRt
bF91c2VfaW5kZXggPSBUcnVlCiAKICMgSWYgdHJ1ZSwgdGhlIGluZGV4IGlzIHNwbGl0IGludG8g
aW5kaXZpZHVhbCBwYWdlcyBmb3IgZWFjaCBsZXR0ZXIuCiAjIGh0bWxfc3BsaXRfaW5kZXggPSBG
YWxzZQpAQCAtMjMzLDggKzI0OCw4IEBAIGxhdGV4X2RvY3VtZW50cyA9IFsKICAgICAoCiAgICAg
ICAgICJjb250ZW50cyIsCiAgICAgICAgICJweXRlc3QudGV4IiwKLSAgICAgICAgdSJweXRlc3Qg
RG9jdW1lbnRhdGlvbiIsCi0gICAgICAgIHUiaG9sZ2VyIGtyZWtlbCwgdHJhaW5lciBhbmQgY29u
c3VsdGFudCwgaHR0cDovL21lcmxpbnV4LmV1IiwKKyAgICAgICAgInB5dGVzdCBEb2N1bWVudGF0
aW9uIiwKKyAgICAgICAgImhvbGdlciBrcmVrZWwsIHRyYWluZXIgYW5kIGNvbnN1bHRhbnQsIGh0
dHA6Ly9tZXJsaW51eC5ldSIsCiAgICAgICAgICJtYW51YWwiLAogICAgICkKIF0KQEAgLTI2Niwx
NiArMjgxLDE2IEBAIGxhdGV4X2RvbWFpbl9pbmRpY2VzID0gRmFsc2UKIAogIyBPbmUgZW50cnkg
cGVyIG1hbnVhbCBwYWdlLiBMaXN0IG9mIHR1cGxlcwogIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5h
bWUsIGRlc2NyaXB0aW9uLCBhdXRob3JzLCBtYW51YWwgc2VjdGlvbikuCi1tYW5fcGFnZXMgPSBb
KCJ1c2FnZSIsICJweXRlc3QiLCB1InB5dGVzdCB1c2FnZSIsIFt1ImhvbGdlciBrcmVrZWwgYXQg
bWVybGludXggZXUiXSwgMSldCittYW5fcGFnZXMgPSBbKCJ1c2FnZSIsICJweXRlc3QiLCAicHl0
ZXN0IHVzYWdlIiwgWyJob2xnZXIga3Jla2VsIGF0IG1lcmxpbnV4IGV1Il0sIDEpXQogCiAKICMg
LS0gT3B0aW9ucyBmb3IgRXB1YiBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICMgQmlibGlvZ3JhcGhpYyBEdWJsaW4gQ29yZSBpbmZv
LgotZXB1Yl90aXRsZSA9IHUicHl0ZXN0IgotZXB1Yl9hdXRob3IgPSB1ImhvbGdlciBrcmVrZWwg
YXQgbWVybGludXggZXUiCi1lcHViX3B1Ymxpc2hlciA9IHUiaG9sZ2VyIGtyZWtlbCBhdCBtZXJs
aW51eCBldSIKLWVwdWJfY29weXJpZ2h0ID0gdSIyMDEzLCBob2xnZXIga3Jla2VsIGV0IGFsaWki
CitlcHViX3RpdGxlID0gInB5dGVzdCIKK2VwdWJfYXV0aG9yID0gImhvbGdlciBrcmVrZWwgYXQg
bWVybGludXggZXUiCitlcHViX3B1Ymxpc2hlciA9ICJob2xnZXIga3Jla2VsIGF0IG1lcmxpbnV4
IGV1IgorZXB1Yl9jb3B5cmlnaHQgPSAiMjAxMy0yMDIwLCBob2xnZXIga3Jla2VsIGV0IGFsaWki
CiAKICMgVGhlIGxhbmd1YWdlIG9mIHRoZSB0ZXh0LiBJdCBkZWZhdWx0cyB0byB0aGUgbGFuZ3Vh
Z2Ugb3B0aW9uCiAjIG9yIGVuIGlmIHRoZSBsYW5ndWFnZSBpcyBub3Qgc2V0LgpAQCAtMzI5LDE1
ICszNDQsNTcgQEAgdGV4aW5mb19kb2N1bWVudHMgPSBbCiAKIAogIyBFeGFtcGxlIGNvbmZpZ3Vy
YXRpb24gZm9yIGludGVyc3BoaW54OiByZWZlciB0byB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJh
cnkuCi1pbnRlcnNwaGlueF9tYXBwaW5nID0geyJweXRob24iOiAoImh0dHA6Ly9kb2NzLnB5dGhv
bi5vcmcvMyIsIE5vbmUpfQoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsKKyAgICAicGx1Z2d5Ijog
KCJodHRwczovL3BsdWdneS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QiLCBOb25lKSwKKyAgICAi
cHl0aG9uIjogKCJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zIiwgTm9uZSksCit9CiAKIAotZGVm
IHNldHVwKGFwcCk6CitkZWYgY29uZmlndXJlX2xvZ2dpbmcoYXBwOiAic3BoaW54LmFwcGxpY2F0
aW9uLlNwaGlueCIpIC0+IE5vbmU6CisgICAgIiIiQ29uZmlndXJlIFNwaGlueCdzIFdhcm5pbmdI
YW5kbGVyIHRvIGhhbmRsZSAoZXhwZWN0ZWQpIG1pc3NpbmcgaW5jbHVkZS4iIiIKKyAgICBpbXBv
cnQgc3BoaW54LnV0aWwubG9nZ2luZworICAgIGltcG9ydCBsb2dnaW5nCisKKyAgICBjbGFzcyBX
YXJuTG9nRmlsdGVyKGxvZ2dpbmcuRmlsdGVyKToKKyAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBy
ZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBib29sOgorICAgICAgICAgICAgIiIiSWdub3Jl
IHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgaW5jbHVkZSB3aXRoICJvbmx5IiBkaXJlY3RpdmUuCisK
KyAgICAgICAgICAgIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL3NwaGlueC1kb2Mvc3BoaW54L2lz
c3Vlcy8yMTUwLiIiIgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHJlY29yZC5t
c2cuc3RhcnRzd2l0aCgnUHJvYmxlbXMgd2l0aCAiaW5jbHVkZSIgZGlyZWN0aXZlIHBhdGg6JykK
KyAgICAgICAgICAgICAgICBhbmQgIl9jaGFuZ2Vsb2dfdG93bmNyaWVyX2RyYWZ0LnJzdCIgaW4g
cmVjb3JkLm1zZworICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cihzcGhpbngudXRpbC5sb2dnaW5nLk5BTUVTUEFDRSkKKyAgICB3YXJuX2hhbmRsZXIgPSBbeCBm
b3IgeCBpbiBsb2dnZXIuaGFuZGxlcnMgaWYgeC5sZXZlbCA9PSBsb2dnaW5nLldBUk5JTkddCisg
ICAgYXNzZXJ0IGxlbih3YXJuX2hhbmRsZXIpID09IDEsIHdhcm5faGFuZGxlcgorICAgIHdhcm5f
aGFuZGxlclswXS5maWx0ZXJzLmluc2VydCgwLCBXYXJuTG9nRmlsdGVyKCkpCisKKworZGVmIHNl
dHVwKGFwcDogInNwaGlueC5hcHBsaWNhdGlvbi5TcGhpbngiKSAtPiBOb25lOgogICAgICMgZnJv
bSBzcGhpbnguZXh0LmF1dG9kb2MgaW1wb3J0IGN1dF9saW5lcwogICAgICMgYXBwLmNvbm5lY3Qo
J2F1dG9kb2MtcHJvY2Vzcy1kb2NzdHJpbmcnLCBjdXRfbGluZXMoNCwgd2hhdD1bJ21vZHVsZSdd
KSkKLSAgICBhcHAuYWRkX2Rlc2NyaXB0aW9uX3VuaXQoCisgICAgYXBwLmFkZF9jcm9zc3JlZl90
eXBlKAorICAgICAgICAiZml4dHVyZSIsCisgICAgICAgICJmaXh0dXJlIiwKKyAgICAgICAgb2Jq
bmFtZT0iYnVpbHQtaW4gZml4dHVyZSIsCisgICAgICAgIGluZGV4dGVtcGxhdGU9InBhaXI6ICVz
OyBmaXh0dXJlIiwKKyAgICApCisKKyAgICBhcHAuYWRkX29iamVjdF90eXBlKAogICAgICAgICAi
Y29uZnZhbCIsCiAgICAgICAgICJjb25mdmFsIiwKICAgICAgICAgb2JqbmFtZT0iY29uZmlndXJh
dGlvbiB2YWx1ZSIsCiAgICAgICAgIGluZGV4dGVtcGxhdGU9InBhaXI6ICVzOyBjb25maWd1cmF0
aW9uIHZhbHVlIiwKICAgICApCisKKyAgICBhcHAuYWRkX29iamVjdF90eXBlKAorICAgICAgICAi
Z2xvYmFsdmFyIiwKKyAgICAgICAgImdsb2JhbHZhciIsCisgICAgICAgIG9iam5hbWU9Imdsb2Jh
bCB2YXJpYWJsZSBpbnRlcnByZXRlZCBieSBweXRlc3QiLAorICAgICAgICBpbmRleHRlbXBsYXRl
PSJwYWlyOiAlczsgZ2xvYmFsIHZhcmlhYmxlIGludGVycHJldGVkIGJ5IHB5dGVzdCIsCisgICAg
KQorCisgICAgY29uZmlndXJlX2xvZ2dpbmcoYXBwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2NvbnRlbnRzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jb250ZW50cy5yc3QKaW5k
ZXggOWYxZDhkODVhYzI1Li41OGEwODc0NGNlZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9jb250ZW50cy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbnRlbnRzLnJzdApA
QCAtMzMsMjAgKzMzLDI4IEBAIEZ1bGwgcHl0ZXN0IGRvY3VtZW50YXRpb24KICAgIHJlZmVyZW5j
ZQogCiAgICBnb29kcHJhY3RpY2VzCisgICBmbGFreQogICAgcHl0aG9ucGF0aAogICAgY3VzdG9t
aXplCiAgICBleGFtcGxlL2luZGV4CiAgICBiYXNoLWNvbXBsZXRpb24KIAogICAgYmFja3dhcmRz
LWNvbXBhdGliaWxpdHkKLSAgIGhpc3RvcmljYWwtbm90ZXMKLSAgIGxpY2Vuc2UKKyAgIGRlcHJl
Y2F0aW9ucworICAgcHkyNy1weTM0LWRlcHJlY2F0aW9uCisKICAgIGNvbnRyaWJ1dGluZwogICAg
ZGV2ZWxvcG1lbnRfZ3VpZGUKKworICAgc3BvbnNvcgorICAgdGlkZWxpZnQKKyAgIGxpY2Vuc2UK
KyAgIGNvbnRhY3QKKworICAgaGlzdG9yaWNhbC1ub3RlcwogICAgdGFsa3MKICAgIHByb2plY3Rz
Ci0gICBmYXEKLSAgIGNvbnRhY3QKKwogCiAuLiBvbmx5OjogaHRtbAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vY3VzdG9taXplLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jdXN0
b21pemUucnN0CmluZGV4IGMxYTM0OThjN2I2Ny4uOWY3YzM2NWRjNDU4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vY3VzdG9taXplLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
Y3VzdG9taXplLnJzdApAQCAtNSwxNTIgKzUsMjMyIEBAIENvbW1hbmQgbGluZSBvcHRpb25zIGFu
ZCBjb25maWd1cmF0aW9uIGZpbGUgc2V0dGluZ3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFlvdSBjYW4gZ2V0IGhl
bHAgb24gY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIHZhbHVlcyBpbiBJTkktc3R5bGUKLWNvbmZp
Z3VyYXRpb25zIGZpbGVzIGJ5IHVzaW5nIHRoZSBnZW5lcmFsIGhlbHAgb3B0aW9uOjoKK2NvbmZp
Z3VyYXRpb25zIGZpbGVzIGJ5IHVzaW5nIHRoZSBnZW5lcmFsIGhlbHAgb3B0aW9uOgorCisuLiBj
b2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC1oICAgIyBwcmludHMgb3B0aW9ucyBfYW5k
XyBjb25maWcgZmlsZSBzZXR0aW5ncwogCiBUaGlzIHdpbGwgZGlzcGxheSBjb21tYW5kIGxpbmUg
YW5kIGNvbmZpZ3VyYXRpb24gZmlsZSBzZXR0aW5ncwogd2hpY2ggd2VyZSByZWdpc3RlcmVkIGJ5
IGluc3RhbGxlZCBwbHVnaW5zLgogCi0uLiBfcm9vdGRpcjoKLS4uIF9pbmlmaWxlczoKKy4uIF9g
Y29uZmlnIGZpbGUgZm9ybWF0c2A6CisKK0NvbmZpZ3VyYXRpb24gZmlsZSBmb3JtYXRzCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW55IDpyZWY6YHB5dGVzdCBzZXR0aW5ncyA8aW5p
IG9wdGlvbnMgcmVmPmAgY2FuIGJlIHNldCBpbiBhICpjb25maWd1cmF0aW9uIGZpbGUqLCB3aGlj
aAorYnkgY29udmVudGlvbiByZXNpZGVzIG9uIHRoZSByb290IG9mIHlvdXIgcmVwb3NpdG9yeSBv
ciBpbiB5b3VyCit0ZXN0cyBmb2xkZXIuCisKK0EgcXVpY2sgZXhhbXBsZSBvZiB0aGUgY29uZmln
dXJhdGlvbiBmaWxlcyBzdXBwb3J0ZWQgYnkgcHl0ZXN0OgorCitweXRlc3QuaW5pCit+fn5+fn5+
fn5+CisKK2BgcHl0ZXN0LmluaWBgIGZpbGVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIG90aGVyIGZp
bGVzLCBldmVuIHdoZW4gZW1wdHkuCisKKy4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICMgcHl0
ZXN0LmluaQorICAgIFtweXRlc3RdCisgICAgbWludmVyc2lvbiA9IDYuMAorICAgIGFkZG9wdHMg
PSAtcmEgLXEKKyAgICB0ZXN0cGF0aHMgPQorICAgICAgICB0ZXN0cworICAgICAgICBpbnRlZ3Jh
dGlvbgorCisKK3B5cHJvamVjdC50b21sCit+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9uYWRk
ZWQ6OiA2LjAKKworYGBweXByb2plY3QudG9tbGBgIGFyZSBjb25zaWRlcmVkIGZvciBjb25maWd1
cmF0aW9uIHdoZW4gdGhleSBjb250YWluIGEgYGB0b29sLnB5dGVzdC5pbmlfb3B0aW9uc2BgIHRh
YmxlLgorCisuLiBjb2RlLWJsb2NrOjogdG9tbAorCisgICAgIyBweXByb2plY3QudG9tbAorICAg
IFt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KKyAgICBtaW52ZXJzaW9uID0gIjYuMCIKKyAgICBh
ZGRvcHRzID0gIi1yYSAtcSIKKyAgICB0ZXN0cGF0aHMgPSBbCisgICAgICAgICJ0ZXN0cyIsCisg
ICAgICAgICJpbnRlZ3JhdGlvbiIsCisgICAgXQorCisuLiBub3RlOjoKKworICAgIE9uZSBtaWdo
dCB3b25kZXIgd2h5IGBgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXWBgIGluc3RlYWQgb2YgYGBb
dG9vbC5weXRlc3RdYGAgYXMgaXMgdGhlCisgICAgY2FzZSB3aXRoIG90aGVyIHRvb2xzLgorCisg
ICAgVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBweXRlc3QgdGVhbSBpbnRlbmRzIHRvIGZ1bGx5IHV0
aWxpemUgdGhlIHJpY2ggVE9NTCBkYXRhIGZvcm1hdAorICAgIGZvciBjb25maWd1cmF0aW9uIGlu
IHRoZSBmdXR1cmUsIHJlc2VydmluZyB0aGUgYGBbdG9vbC5weXRlc3RdYGAgdGFibGUgZm9yIHRo
YXQuCisgICAgVGhlIGBgaW5pX29wdGlvbnNgYCB0YWJsZSBpcyBiZWluZyB1c2VkLCBmb3Igbm93
LCBhcyBhIGJyaWRnZSBiZXR3ZWVuIHRoZSBleGlzdGluZworICAgIGBgLmluaWBgIGNvbmZpZ3Vy
YXRpb24gc3lzdGVtIGFuZCB0aGUgZnV0dXJlIGNvbmZpZ3VyYXRpb24gZm9ybWF0LgorCit0b3gu
aW5pCit+fn5+fn5+CisKK2BgdG94LmluaWBgIGZpbGVzIGFyZSB0aGUgY29uZmlndXJhdGlvbiBm
aWxlcyBvZiB0aGUgYHRveCA8aHR0cHM6Ly90b3gucmVhZHRoZWRvY3MuaW8+YF9fIHByb2plY3Qs
CithbmQgY2FuIGFsc28gYmUgdXNlZCB0byBob2xkIHB5dGVzdCBjb25maWd1cmF0aW9uIGlmIHRo
ZXkgaGF2ZSBhIGBgW3B5dGVzdF1gYCBzZWN0aW9uLgorCisuLiBjb2RlLWJsb2NrOjogaW5pCisK
KyAgICAjIHRveC5pbmkKKyAgICBbcHl0ZXN0XQorICAgIG1pbnZlcnNpb24gPSA2LjAKKyAgICBh
ZGRvcHRzID0gLXJhIC1xCisgICAgdGVzdHBhdGhzID0KKyAgICAgICAgdGVzdHMKKyAgICAgICAg
aW50ZWdyYXRpb24KKworCitzZXR1cC5jZmcKK35+fn5+fn5+fgorCitgYHNldHVwLmNmZ2BgIGZp
bGVzIGFyZSBnZW5lcmFsIHB1cnBvc2UgY29uZmlndXJhdGlvbiBmaWxlcywgdXNlZCBvcmlnaW5h
bGx5IGJ5IGBkaXN0dXRpbHMgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvZGlzdHV0aWxzL2Nv
bmZpZ2ZpbGUuaHRtbD5gX18sIGFuZCBjYW4gYWxzbyBiZSB1c2VkIHRvIGhvbGQgcHl0ZXN0IGNv
bmZpZ3VyYXRpb24KK2lmIHRoZXkgaGF2ZSBhIGBgW3Rvb2w6cHl0ZXN0XWBgIHNlY3Rpb24uCisK
Ky4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICMgc2V0dXAuY2ZnCisgICAgW3Rvb2w6cHl0ZXN0
XQorICAgIG1pbnZlcnNpb24gPSA2LjAKKyAgICBhZGRvcHRzID0gLXJhIC1xCisgICAgdGVzdHBh
dGhzID0KKyAgICAgICAgdGVzdHMKKyAgICAgICAgaW50ZWdyYXRpb24KKworLi4gd2FybmluZzo6
CiAKLUluaXRpYWxpemF0aW9uOiBkZXRlcm1pbmluZyByb290ZGlyIGFuZCBpbmlmaWxlCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIFVzYWdlIG9m
IGBgc2V0dXAuY2ZnYGAgaXMgbm90IHJlY29tbWVuZGVkIHVubGVzcyBmb3IgdmVyeSBzaW1wbGUg
dXNlIGNhc2VzLiBgYC5jZmdgYAorICAgIGZpbGVzIHVzZSBhIGRpZmZlcmVudCBwYXJzZXIgdGhh
biBgYHB5dGVzdC5pbmlgYCBhbmQgYGB0b3guaW5pYGAgd2hpY2ggbWlnaHQgY2F1c2UgaGFyZCB0
byB0cmFjaworICAgIGRvd24gcHJvYmxlbXMuCisgICAgV2hlbiBwb3NzaWJsZSwgaXQgaXMgcmVj
b21tZW5kZWQgdG8gdXNlIHRoZSBsYXR0ZXIgZmlsZXMsIG9yIGBgcHlwcm9qZWN0LnRvbWxgYCwg
dG8gaG9sZCB5b3VyCisgICAgcHl0ZXN0IGNvbmZpZ3VyYXRpb24uCiAKLS4uIHZlcnNpb25hZGRl
ZDo6IDIuNworCisuLiBfcm9vdGRpcjoKKy4uIF9jb25maWdmaWxlczoKKworSW5pdGlhbGl6YXRp
b246IGRldGVybWluaW5nIHJvb3RkaXIgYW5kIGNvbmZpZ2ZpbGUKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHB5dGVzdCBkZXRlcm1pbmVzIGEg
YGByb290ZGlyYGAgZm9yIGVhY2ggdGVzdCBydW4gd2hpY2ggZGVwZW5kcyBvbgogdGhlIGNvbW1h
bmQgbGluZSBhcmd1bWVudHMgKHNwZWNpZmllZCB0ZXN0IGZpbGVzLCBwYXRocykgYW5kIG9uCi10
aGUgZXhpc3RlbmNlIG9mICppbmktZmlsZXMqLiAgVGhlIGRldGVybWluZWQgYGByb290ZGlyYGAg
YW5kICppbmktZmlsZSogYXJlCit0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMu
ICBUaGUgZGV0ZXJtaW5lZCBgYHJvb3RkaXJgYCBhbmQgYGBjb25maWdmaWxlYGAgYXJlCiBwcmlu
dGVkIGFzIHBhcnQgb2YgdGhlIHB5dGVzdCBoZWFkZXIgZHVyaW5nIHN0YXJ0dXAuCiAKIEhlcmUn
cyBhIHN1bW1hcnkgd2hhdCBgYHB5dGVzdGBgIHVzZXMgYGByb290ZGlyYGAgZm9yOgogCiAqIENv
bnN0cnVjdCAqbm9kZWlkcyogZHVyaW5nIGNvbGxlY3Rpb247IGVhY2ggdGVzdCBpcyBhc3NpZ25l
ZAotICBhIHVuaXF1ZSAqbm9kZWlkKiB3aGljaCBpcyByb290ZWQgYXQgdGhlIGBgcm9vdGRpcmBg
IGFuZCB0YWtlcyBpbiBhY2NvdW50IGZ1bGwgcGF0aCwKLSAgY2xhc3MgbmFtZSwgZnVuY3Rpb24g
bmFtZSBhbmQgcGFyYW1ldHJpemF0aW9uIChpZiBhbnkpLgorICBhIHVuaXF1ZSAqbm9kZWlkKiB3
aGljaCBpcyByb290ZWQgYXQgdGhlIGBgcm9vdGRpcmBgIGFuZCB0YWtlcyBpbnRvIGFjY291bnQK
KyAgdGhlIGZ1bGwgcGF0aCwgY2xhc3MgbmFtZSwgZnVuY3Rpb24gbmFtZSBhbmQgcGFyYW1ldHJp
emF0aW9uIChpZiBhbnkpLgogCiAqIElzIHVzZWQgYnkgcGx1Z2lucyBhcyBhIHN0YWJsZSBsb2Nh
dGlvbiB0byBzdG9yZSBwcm9qZWN0L3Rlc3QgcnVuIHNwZWNpZmljIGluZm9ybWF0aW9uOwotICBm
b3IgZXhhbXBsZSwgdGhlIGludGVybmFsIDpyZWY6YGNhY2hlIDxjYWNoZT5gIHBsdWdpbiBjcmVh
dGVzIGEgYGAuY2FjaGVgYCBzdWJkaXJlY3RvcnkKKyAgZm9yIGV4YW1wbGUsIHRoZSBpbnRlcm5h
bCA6cmVmOmBjYWNoZSA8Y2FjaGU+YCBwbHVnaW4gY3JlYXRlcyBhIGBgLnB5dGVzdF9jYWNoZWBg
IHN1YmRpcmVjdG9yeQogICBpbiBgYHJvb3RkaXJgYCB0byBzdG9yZSBpdHMgY3Jvc3MtdGVzdCBy
dW4gc3RhdGUuCiAKLUltcG9ydGFudCB0byBlbXBoYXNpemUgdGhhdCBgYHJvb3RkaXJgYCBpcyAq
Kk5PVCoqIHVzZWQgdG8gbW9kaWZ5IGBgc3lzLnBhdGhgYC9gYFBZVEhPTlBBVEhgYCBvcgorYGBy
b290ZGlyYGAgaXMgKipOT1QqKiB1c2VkIHRvIG1vZGlmeSBgYHN5cy5wYXRoYGAvYGBQWVRIT05Q
QVRIYGAgb3IKIGluZmx1ZW5jZSBob3cgbW9kdWxlcyBhcmUgaW1wb3J0ZWQuIFNlZSA6cmVmOmBw
eXRob25wYXRoYCBmb3IgbW9yZSBkZXRhaWxzLgogCi1gYC0tcm9vdGRpcj1wYXRoYGAgY29tbWFu
ZC1saW5lIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBmb3JjZSBhIHNwZWNpZmljIGRpcmVjdG9yeS4K
LVRoZSBkaXJlY3RvcnkgcGFzc2VkIG1heSBjb250YWluIGVudmlyb25tZW50IHZhcmlhYmxlcyB3
aGVuIGl0IGlzIHVzZWQgaW4gY29uanVuY3Rpb24KLXdpdGggYGBhZGRvcHRzYGAgaW4gYSBgYHB5
dGVzdC5pbmlgYCBmaWxlLgorVGhlIGBgLS1yb290ZGlyPXBhdGhgYCBjb21tYW5kLWxpbmUgb3B0
aW9uIGNhbiBiZSB1c2VkIHRvIGZvcmNlIGEgc3BlY2lmaWMgZGlyZWN0b3J5LgorTm90ZSB0aGF0
IGNvbnRyYXJ5IHRvIG90aGVyIGNvbW1hbmQtbGluZSBvcHRpb25zLCBgYC0tcm9vdGRpcmBgIGNh
bm5vdCBiZSB1c2VkIHdpdGgKKzpjb25mdmFsOmBhZGRvcHRzYCBpbnNpZGUgYGBweXRlc3QuaW5p
YGAgYmVjYXVzZSB0aGUgYGByb290ZGlyYGAgaXMgdXNlZCB0byAqZmluZCogYGBweXRlc3QuaW5p
YGAKK2FscmVhZHkuCiAKIEZpbmRpbmcgdGhlIGBgcm9vdGRpcmBgCiB+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fgogCiBIZXJlIGlzIHRoZSBhbGdvcml0aG0gd2hpY2ggZmluZHMgdGhlIHJvb3RkaXIg
ZnJvbSBgYGFyZ3NgYDoKIAotLSBkZXRlcm1pbmUgdGhlIGNvbW1vbiBhbmNlc3RvciBkaXJlY3Rv
cnkgZm9yIHRoZSBzcGVjaWZpZWQgYGBhcmdzYGAgdGhhdCBhcmUKKy0gRGV0ZXJtaW5lIHRoZSBj
b21tb24gYW5jZXN0b3IgZGlyZWN0b3J5IGZvciB0aGUgc3BlY2lmaWVkIGBgYXJnc2BgIHRoYXQg
YXJlCiAgIHJlY29nbmlzZWQgYXMgcGF0aHMgdGhhdCBleGlzdCBpbiB0aGUgZmlsZSBzeXN0ZW0u
IElmIG5vIHN1Y2ggcGF0aHMgYXJlCiAgIGZvdW5kLCB0aGUgY29tbW9uIGFuY2VzdG9yIGRpcmVj
dG9yeSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAKLS0gbG9vayBm
b3IgYGBweXRlc3QuaW5pYGAsIGBgdG94LmluaWBgIGFuZCBgYHNldHVwLmNmZ2BgIGZpbGVzIGlu
IHRoZSBhbmNlc3RvcgotICBkaXJlY3RvcnkgYW5kIHVwd2FyZHMuICBJZiBvbmUgaXMgbWF0Y2hl
ZCwgaXQgYmVjb21lcyB0aGUgaW5pLWZpbGUgYW5kIGl0cwotICBkaXJlY3RvcnkgYmVjb21lcyB0
aGUgcm9vdGRpci4KKy0gTG9vayBmb3IgYGBweXRlc3QuaW5pYGAsIGBgcHlwcm9qZWN0LnRvbWxg
YCwgYGB0b3guaW5pYGAsIGFuZCBgYHNldHVwLmNmZ2BgIGZpbGVzIGluIHRoZSBhbmNlc3Rvcgor
ICBkaXJlY3RvcnkgYW5kIHVwd2FyZHMuICBJZiBvbmUgaXMgbWF0Y2hlZCwgaXQgYmVjb21lcyB0
aGUgYGBjb25maWdmaWxlYGAgYW5kIGl0cworICBkaXJlY3RvcnkgYmVjb21lcyB0aGUgYGByb290
ZGlyYGAuCiAKLS0gaWYgbm8gaW5pLWZpbGUgd2FzIGZvdW5kLCBsb29rIGZvciBgYHNldHVwLnB5
YGAgdXB3YXJkcyBmcm9tIHRoZSBjb21tb24KKy0gSWYgbm8gY29uZmlndXJhdGlvbiBmaWxlIHdh
cyBmb3VuZCwgbG9vayBmb3IgYGBzZXR1cC5weWBgIHVwd2FyZHMgZnJvbSB0aGUgY29tbW9uCiAg
IGFuY2VzdG9yIGRpcmVjdG9yeSB0byBkZXRlcm1pbmUgdGhlIGBgcm9vdGRpcmBgLgogCi0tIGlm
IG5vIGBgc2V0dXAucHlgYCB3YXMgZm91bmQsIGxvb2sgZm9yIGBgcHl0ZXN0LmluaWBgLCBgYHRv
eC5pbmlgYCBhbmQKKy0gSWYgbm8gYGBzZXR1cC5weWBgIHdhcyBmb3VuZCwgbG9vayBmb3IgYGBw
eXRlc3QuaW5pYGAsIGBgcHlwcm9qZWN0LnRvbWxgYCwgYGB0b3guaW5pYGAsIGFuZAogICBgYHNl
dHVwLmNmZ2BgIGluIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBgYGFyZ3NgYCBhbmQgdXB3YXJkcy4g
SWYgb25lIGlzCi0gIG1hdGNoZWQsIGl0IGJlY29tZXMgdGhlIGluaS1maWxlIGFuZCBpdHMgZGly
ZWN0b3J5IGJlY29tZXMgdGhlIHJvb3RkaXIuCisgIG1hdGNoZWQsIGl0IGJlY29tZXMgdGhlIGBg
Y29uZmlnZmlsZWBgIGFuZCBpdHMgZGlyZWN0b3J5IGJlY29tZXMgdGhlIGBgcm9vdGRpcmBgLgog
Ci0tIGlmIG5vIGluaS1maWxlIHdhcyBmb3VuZCwgdXNlIHRoZSBhbHJlYWR5IGRldGVybWluZWQg
Y29tbW9uIGFuY2VzdG9yIGFzIHJvb3QKKy0gSWYgbm8gYGBjb25maWdmaWxlYGAgd2FzIGZvdW5k
LCB1c2UgdGhlIGFscmVhZHkgZGV0ZXJtaW5lZCBjb21tb24gYW5jZXN0b3IgYXMgcm9vdAogICBk
aXJlY3RvcnkuIFRoaXMgYWxsb3dzIHRoZSB1c2Ugb2YgcHl0ZXN0IGluIHN0cnVjdHVyZXMgdGhh
dCBhcmUgbm90IHBhcnQgb2YKLSAgYSBwYWNrYWdlIGFuZCBkb24ndCBoYXZlIGFueSBwYXJ0aWN1
bGFyIGluaS1maWxlIGNvbmZpZ3VyYXRpb24uCisgIGEgcGFja2FnZSBhbmQgZG9uJ3QgaGF2ZSBh
bnkgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGZpbGUuCiAKIElmIG5vIGBgYXJnc2BgIGFyZSBn
aXZlbiwgcHl0ZXN0IGNvbGxlY3RzIHRlc3QgYmVsb3cgdGhlIGN1cnJlbnQgd29ya2luZwotZGly
ZWN0b3J5IGFuZCBhbHNvIHN0YXJ0cyBkZXRlcm1pbmluZyB0aGUgcm9vdGRpciBmcm9tIHRoZXJl
LgorZGlyZWN0b3J5IGFuZCBhbHNvIHN0YXJ0cyBkZXRlcm1pbmluZyB0aGUgYGByb290ZGlyYGAg
ZnJvbSB0aGVyZS4KIAotOndhcm5pbmc6IGN1c3RvbSBweXRlc3QgcGx1Z2luIGNvbW1hbmRsaW5l
IGFyZ3VtZW50cyBtYXkgaW5jbHVkZSBhIHBhdGgsIGFzIGluCi0gICAgYGBweXRlc3QgLS1sb2ct
b3V0cHV0IC4uLy4uL3Rlc3QubG9nIGFyZ3NgYC4gVGhlbiBgYGFyZ3NgYCBpcyBtYW5kYXRvcnks
Ci0gICAgb3RoZXJ3aXNlIHB5dGVzdCB1c2VzIHRoZSBmb2xkZXIgb2YgdGVzdC5sb2cgZm9yIHJv
b3RkaXIgZGV0ZXJtaW5hdGlvbgotICAgIChzZWUgYWxzbyBgaXNzdWUgMTQzNSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDM1PmBfKS4KLSAgICBBIGRvdCBg
YC5gYCBmb3IgcmVmZXJlbmNpbmcgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaXMg
YWxzbwotICAgIHBvc3NpYmxlLgorRmlsZXMgd2lsbCBvbmx5IGJlIG1hdGNoZWQgZm9yIGNvbmZp
Z3VyYXRpb24gaWY6CisKKyogYGBweXRlc3QuaW5pYGA6IHdpbGwgYWx3YXlzIG1hdGNoIGFuZCB0
YWtlIHByZWNlZGVuY2UsIGV2ZW4gaWYgZW1wdHkuCisqIGBgcHlwcm9qZWN0LnRvbWxgYDogY29u
dGFpbnMgYSBgYFt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc11gYCB0YWJsZS4KKyogYGB0b3guaW5p
YGA6IGNvbnRhaW5zIGEgYGBbcHl0ZXN0XWBgIHNlY3Rpb24uCisqIGBgc2V0dXAuY2ZnYGA6IGNv
bnRhaW5zIGEgYGBbdG9vbDpweXRlc3RdYGAgc2VjdGlvbi4KIAotTm90ZSB0aGF0IGFuIGV4aXN0
aW5nIGBgcHl0ZXN0LmluaWBgIGZpbGUgd2lsbCBhbHdheXMgYmUgY29uc2lkZXJlZCBhIG1hdGNo
LAotd2hlcmVhcyBgYHRveC5pbmlgYCBhbmQgYGBzZXR1cC5jZmdgYCB3aWxsIG9ubHkgbWF0Y2gg
aWYgdGhleSBjb250YWluIGEKLWBgW3B5dGVzdF1gYCBvciBgYFt0b29sOnB5dGVzdF1gYCBzZWN0
aW9uLCByZXNwZWN0aXZlbHkuIE9wdGlvbnMgZnJvbSBtdWx0aXBsZSBpbmktZmlsZXMgY2FuZGlk
YXRlcyBhcmUgbmV2ZXIKLW1lcmdlZCAtIHRoZSBmaXJzdCBvbmUgd2lucyAoYGBweXRlc3QuaW5p
YGAgYWx3YXlzIHdpbnMsIGV2ZW4gaWYgaXQgZG9lcyBub3QKLWNvbnRhaW4gYSBgYFtweXRlc3Rd
YGAgc2VjdGlvbikuCitUaGUgZmlsZXMgYXJlIGNvbnNpZGVyZWQgaW4gdGhlIG9yZGVyIGFib3Zl
LiBPcHRpb25zIGZyb20gbXVsdGlwbGUgYGBjb25maWdmaWxlc2BgIGNhbmRpZGF0ZXMKK2FyZSBu
ZXZlciBtZXJnZWQgLSB0aGUgZmlyc3QgbWF0Y2ggd2lucy4KIAotVGhlIGBgY29uZmlnYGAgb2Jq
ZWN0IHdpbGwgc3Vic2VxdWVudGx5IGNhcnJ5IHRoZXNlIGF0dHJpYnV0ZXM6CitUaGUgaW50ZXJu
YWwgOmNsYXNzOmBDb25maWcgPF9weXRlc3QuY29uZmlnLkNvbmZpZz5gIG9iamVjdCAoYWNjZXNz
aWJsZSB2aWEgaG9va3Mgb3IgdGhyb3VnaCB0aGUgOmZpeHR1cmU6YHB5dGVzdGNvbmZpZ2AgZml4
dHVyZSkKK3dpbGwgc3Vic2VxdWVudGx5IGNhcnJ5IHRoZXNlIGF0dHJpYnV0ZXM6CiAKLS0gYGBj
b25maWcucm9vdGRpcmBgOiB0aGUgZGV0ZXJtaW5lZCByb290IGRpcmVjdG9yeSwgZ3VhcmFudGVl
ZCB0byBleGlzdC4KKy0gOmF0dHI6YGNvbmZpZy5yb290cGF0aCA8X3B5dGVzdC5jb25maWcuQ29u
ZmlnLnJvb3RwYXRoPmA6IHRoZSBkZXRlcm1pbmVkIHJvb3QgZGlyZWN0b3J5LCBndWFyYW50ZWVk
IHRvIGV4aXN0LgogCi0tIGBgY29uZmlnLmluaWZpbGVgYDogdGhlIGRldGVybWluZWQgaW5pLWZp
bGUsIG1heSBiZSBgYE5vbmVgYC4KKy0gOmF0dHI6YGNvbmZpZy5pbmlwYXRoIDxfcHl0ZXN0LmNv
bmZpZy5Db25maWcuaW5pcGF0aD5gOiB0aGUgZGV0ZXJtaW5lZCBgYGNvbmZpZ2ZpbGVgYCwgbWF5
IGJlIGBgTm9uZWBgCisgIChpdCBpcyBuYW1lZCBgYGluaXBhdGhgYCBmb3IgaGlzdG9yaWNhbCBy
ZWFzb25zKS4KIAotVGhlIHJvb3RkaXIgaXMgdXNlZCBhIHJlZmVyZW5jZSBkaXJlY3RvcnkgZm9y
IGNvbnN0cnVjdGluZyB0ZXN0CisuLiB2ZXJzaW9uYWRkZWQ6OiA2LjEKKyAgICBUaGUgYGBjb25m
aWcucm9vdHBhdGhgYCBhbmQgYGBjb25maWcuaW5pcGF0aGBgIHByb3BlcnRpZXMuIFRoZXkgYXJl
IDpjbGFzczpgcGF0aGxpYi5QYXRoYAorICAgIHZlcnNpb25zIG9mIHRoZSBvbGRlciBgYGNvbmZp
Zy5yb290ZGlyYGAgYW5kIGBgY29uZmlnLmluaWZpbGVgYCwgd2hpY2ggaGF2ZSB0eXBlCisgICAg
YGBweS5wYXRoLmxvY2FsYGAsIGFuZCBzdGlsbCBleGlzdCBmb3IgYmFja3dhcmQgY29tcGF0aWJp
bGl0eS4KKworVGhlIGBgcm9vdGRpcmBgIGlzIHVzZWQgYXMgYSByZWZlcmVuY2UgZGlyZWN0b3J5
IGZvciBjb25zdHJ1Y3RpbmcgdGVzdAogYWRkcmVzc2VzICgibm9kZWlkcyIpIGFuZCBjYW4gYmUg
dXNlZCBhbHNvIGJ5IHBsdWdpbnMgZm9yIHN0b3JpbmcKIHBlci10ZXN0cnVuIGluZm9ybWF0aW9u
LgogCi1FeGFtcGxlOjoKK0V4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBw
eXRlc3QgcGF0aC90by90ZXN0ZGlyIHBhdGgvb3RoZXIvCiAKIHdpbGwgZGV0ZXJtaW5lIHRoZSBj
b21tb24gYW5jZXN0b3IgYXMgYGBwYXRoYGAgYW5kIHRoZW4KLWNoZWNrIGZvciBpbmktZmlsZXMg
YXMgZm9sbG93czo6CitjaGVjayBmb3IgY29uZmlndXJhdGlvbiBmaWxlcyBhcyBmb2xsb3dzOgor
CisuLiBjb2RlLWJsb2NrOjogdGV4dAogCiAgICAgIyBmaXJzdCBsb29rIGZvciBweXRlc3QuaW5p
IGZpbGVzCiAgICAgcGF0aC9weXRlc3QuaW5pCi0gICAgcGF0aC9zZXR1cC5jZmcgICMgbXVzdCBh
bHNvIGNvbnRhaW4gW3Rvb2w6cHl0ZXN0XSBzZWN0aW9uIHRvIG1hdGNoCi0gICAgcGF0aC90b3gu
aW5pICAgICMgbXVzdCBhbHNvIGNvbnRhaW4gW3B5dGVzdF0gc2VjdGlvbiB0byBtYXRjaAorICAg
IHBhdGgvcHlwcm9qZWN0LnRvbWwgICMgbXVzdCBjb250YWluIGEgW3Rvb2wucHl0ZXN0LmluaV9v
cHRpb25zXSB0YWJsZSB0byBtYXRjaAorICAgIHBhdGgvdG94LmluaSAgICAgICAgICMgbXVzdCBj
b250YWluIFtweXRlc3RdIHNlY3Rpb24gdG8gbWF0Y2gKKyAgICBwYXRoL3NldHVwLmNmZyAgICAg
ICAjIG11c3QgY29udGFpbiBbdG9vbDpweXRlc3RdIHNlY3Rpb24gdG8gbWF0Y2gKICAgICBweXRl
c3QuaW5pCi0gICAgLi4uICMgYWxsIHRoZSB3YXkgZG93biB0byB0aGUgcm9vdAorICAgIC4uLiAj
IGFsbCB0aGUgd2F5IHVwIHRvIHRoZSByb290CiAKICAgICAjIG5vdyBsb29rIGZvciBzZXR1cC5w
eQogICAgIHBhdGgvc2V0dXAucHkKICAgICBzZXR1cC5weQotICAgIC4uLiAjIGFsbCB0aGUgd2F5
IGRvd24gdG8gdGhlIHJvb3QKLQotCi0uLiBfYGhvdyB0byBjaGFuZ2UgY29tbWFuZCBsaW5lIG9w
dGlvbnMgZGVmYXVsdHNgOgotLi4gX2BhZGRpbmcgZGVmYXVsdCBvcHRpb25zYDoKLQotCisgICAg
Li4uICMgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIHJvb3QKIAotSG93IHRvIGNoYW5nZSBjb21tYW5k
IGxpbmUgb3B0aW9ucyBkZWZhdWx0cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUl0IGNhbiBiZSB0ZWRpb3VzIHRvIHR5cGUgdGhlIHNhbWUgc2Vy
aWVzIG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCi1ldmVyeSB0aW1lIHlvdSB1c2UgYGBweXRlc3Rg
YC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWx3YXlzIHdhbnQgdG8gc2VlCi1kZXRhaWxlZCBpbmZv
IG9uIHNraXBwZWQgYW5kIHhmYWlsZWQgdGVzdHMsIGFzIHdlbGwgYXMgaGF2ZSB0ZXJzZXIgImRv
dCIKLXByb2dyZXNzIG91dHB1dCwgeW91IGNhbiB3cml0ZSBpdCBpbnRvIGEgY29uZmlndXJhdGlv
biBmaWxlOgorLi4gd2FybmluZzo6CiAKLS4uIGNvZGUtYmxvY2s6OiBpbmkKLQotICAgICMgY29u
dGVudCBvZiBweXRlc3QuaW5pCi0gICAgIyAob3IgdG94LmluaSBvciBzZXR1cC5jZmcpCi0gICAg
W3B5dGVzdF0KLSAgICBhZGRvcHRzID0gLXJhIC1xCi0KLUFsdGVybmF0aXZlbHksIHlvdSBjYW4g
c2V0IGEgYGBQWVRFU1RfQURET1BUU2BgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGFkZCBjb21t
YW5kCi1saW5lIG9wdGlvbnMgd2hpbGUgdGhlIGVudmlyb25tZW50IGlzIGluIHVzZTo6Ci0KLSAg
ICBleHBvcnQgUFlURVNUX0FERE9QVFM9Ii12IgotCi1IZXJlJ3MgaG93IHRoZSBjb21tYW5kLWxp
bmUgaXMgYnVpbHQgaW4gdGhlIHByZXNlbmNlIG9mIGBgYWRkb3B0c2BgIG9yIHRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZTo6Ci0KLSAgICA8cHl0ZXN0LmluaTphZGRvcHRzPiAkUFlURVNUX0FERE9U
UFMgPGV4dHJhIGNvbW1hbmQtbGluZSBhcmd1bWVudHM+Ci0KLVNvIGlmIHRoZSB1c2VyIGV4ZWN1
dGVzIGluIHRoZSBjb21tYW5kLWxpbmU6OgotCi0gICAgcHl0ZXN0IC1tIHNsb3cKLQotVGhlIGFj
dHVhbCBjb21tYW5kIGxpbmUgZXhlY3V0ZWQgaXM6OgorICAgIEN1c3RvbSBweXRlc3QgcGx1Z2lu
IGNvbW1hbmRsaW5lIGFyZ3VtZW50cyBtYXkgaW5jbHVkZSBhIHBhdGgsIGFzIGluCisgICAgYGBw
eXRlc3QgLS1sb2ctb3V0cHV0IC4uLy4uL3Rlc3QubG9nIGFyZ3NgYC4gVGhlbiBgYGFyZ3NgYCBp
cyBtYW5kYXRvcnksCisgICAgb3RoZXJ3aXNlIHB5dGVzdCB1c2VzIHRoZSBmb2xkZXIgb2YgdGVz
dC5sb2cgZm9yIHJvb3RkaXIgZGV0ZXJtaW5hdGlvbgorICAgIChzZWUgYWxzbyBgaXNzdWUgMTQz
NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDM1PmBfKS4K
KyAgICBBIGRvdCBgYC5gYCBmb3IgcmVmZXJlbmNpbmcgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3RvcnkgaXMgYWxzbworICAgIHBvc3NpYmxlLgogCi0gICAgcHl0ZXN0IC1yYSAtcSAtdiAt
bSBzbG93CiAKLU5vdGUgdGhhdCBhcyB1c3VhbCBmb3Igb3RoZXIgY29tbWFuZC1saW5lIGFwcGxp
Y2F0aW9ucywgaW4gY2FzZSBvZiBjb25mbGljdGluZyBvcHRpb25zIHRoZSBsYXN0IG9uZSB3aW5z
LCBzbyB0aGUgZXhhbXBsZQotYWJvdmUgd2lsbCBzaG93IHZlcmJvc2Ugb3V0cHV0IGJlY2F1c2Ug
YGAtdmBgIG92ZXJ3cml0ZXMgYGAtcWBgLgorLi4gX2Bob3cgdG8gY2hhbmdlIGNvbW1hbmQgbGlu
ZSBvcHRpb25zIGRlZmF1bHRzYDoKKy4uIF9gYWRkaW5nIGRlZmF1bHQgb3B0aW9uc2A6CiAKIAog
QnVpbHRpbiBjb25maWd1cmF0aW9uIGZpbGUgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2RlcHJlY2F0aW9ucy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZGVwcmVjYXRp
b25zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE0ZDFlZWI5
OGFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9kZXByZWNhdGlvbnMu
cnN0CkBAIC0wLDAgKzEsNjU2IEBACisuLiBfZGVwcmVjYXRpb25zOgorCitEZXByZWNhdGlvbnMg
YW5kIFJlbW92YWxzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgcGFnZSBsaXN0
cyBhbGwgcHl0ZXN0IGZlYXR1cmVzIHRoYXQgYXJlIGN1cnJlbnRseSBkZXByZWNhdGVkIG9yIGhh
dmUgYmVlbiByZW1vdmVkIGluIHBhc3QgbWFqb3IgcmVsZWFzZXMuCitUaGUgb2JqZWN0aXZlIGlz
IHRvIGdpdmUgdXNlcnMgYSBjbGVhciByYXRpb25hbGUgd2h5IGEgY2VydGFpbiBmZWF0dXJlIGhh
cyBiZWVuIHJlbW92ZWQsIGFuZCB3aGF0IGFsdGVybmF0aXZlcworc2hvdWxkIGJlIHVzZWQgaW5z
dGVhZC4KKworLi4gY29udGVudHM6OgorICAgIDpkZXB0aDogMworICAgIDpsb2NhbDoKKworCitE
ZXByZWNhdGVkIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlbG93IGlzIGEgY29t
cGxldGUgbGlzdCBvZiBhbGwgcHl0ZXN0IGZlYXR1cmVzIHdoaWNoIGFyZSBjb25zaWRlcmVkIGRl
cHJlY2F0ZWQuIFVzaW5nIHRob3NlIGZlYXR1cmVzIHdpbGwgaXNzdWUKKzpjbGFzczpgUHl0ZXN0
V2FybmluZ2Agb3Igc3ViY2xhc3Nlcywgd2hpY2ggY2FuIGJlIGZpbHRlcmVkIHVzaW5nIDpyZWY6
YHN0YW5kYXJkIHdhcm5pbmcgZmlsdGVycyA8d2FybmluZ3M+YC4KKworCitUaGUgYGBweXRlc3Rf
d2FybmluZ19jYXB0dXJlZGBgIGhvb2sKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fgorCisuLiBkZXByZWNhdGVkOjogNi4wCisKK1RoaXMgaG9vayBoYXMgYW4gYGl0ZW1gIHBh
cmFtZXRlciB3aGljaCBjYW5ub3QgYmUgc2VyaWFsaXplZCBieSBgYHB5dGVzdC14ZGlzdGBgLgor
CitVc2UgdGhlIGBgcHl0ZXN0X3dhcm5pbmdfcmVjb3JlZGBgIGhvb2sgaW5zdGVhZCwgd2hpY2gg
cmVwbGFjZXMgdGhlIGBgaXRlbWBgIHBhcmFtZXRlcgorYnkgYSBgYG5vZGVpZGBgIHBhcmFtZXRl
ci4KKworVGhlIGBgcHl0ZXN0LmNvbGxlY3RgYCBtb2R1bGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+CisKKy4uIGRlcHJlY2F0ZWQ6OiA2LjAKKworVGhlIGBgcHl0ZXN0LmNvbGxlY3Rg
YCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEksIGFsbCBpdHMgbmFt
ZXMKK3Nob3VsZCBub3cgYmUgaW1wb3J0ZWQgZnJvbSBgYHB5dGVzdGBgIGRpcmVjdGx5IGluc3Rl
YWQuCisKKworVGhlIGBgcHl0ZXN0Ll9maWxsZnVuY2FyZ3NgYCBmdW5jdGlvbgorfn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiBkZXByZWNhdGVk
OjogNi4wCisKK1RoaXMgZnVuY3Rpb24gd2FzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2l0aCBhbiBvbGRlciBwbHVnaW4uCisKK0l0J3MgZnVuY3Rpb25hbGl0eSBpcyBub3QgbWVh
bnQgdG8gYmUgdXNlZCBkaXJlY3RseSwgYnV0IGlmIHlvdSBtdXN0IHJlcGxhY2UKK2l0LCB1c2Ug
YGZ1bmN0aW9uLl9yZXF1ZXN0Ll9maWxsZml4dHVyZXMoKWAgaW5zdGVhZCwgdGhvdWdoIG5vdGUg
dGhpcyBpcyBub3QKK2EgcHVibGljIEFQSSBhbmQgbWF5IGJyZWFrIGluIHRoZSBmdXR1cmUuCisK
KworUmVtb3ZlZCBGZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLQorCitBcyBzdGF0ZWQgaW4gb3Vy
IDpyZWY6YGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5YCBwb2xpY3ksIGRlcHJlY2F0ZWQgZmVhdHVy
ZXMgYXJlIHJlbW92ZWQgb25seSBpbiBtYWpvciByZWxlYXNlcyBhZnRlcgorYW4gYXBwcm9wcmlh
dGUgcGVyaW9kIG9mIGRlcHJlY2F0aW9uIGhhcyBwYXNzZWQuCisKK2BgLS1uby1wcmludC1sb2dz
YGAgY29tbWFuZC1saW5lIG9wdGlvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+CisKKy4uIGRlcHJlY2F0ZWQ6OiA1LjQKKy4uIHZlcnNpb25yZW1vdmVkOjogNi4wCisK
KworVGhlIGBgLS1uby1wcmludC1sb2dzYGAgb3B0aW9uIGFuZCBgYGxvZ19wcmludGBgIGluaSBz
ZXR0aW5nIGFyZSByZW1vdmVkLiBJZgoreW91IHVzZWQgdGhlbSwgcGxlYXNlIHVzZSBgYC0tc2hv
dy1jYXB0dXJlYGAgaW5zdGVhZC4KKworQSBgYC0tc2hvdy1jYXB0dXJlYGAgY29tbWFuZC1saW5l
IG9wdGlvbiB3YXMgYWRkZWQgaW4gYGBweXRlc3QgMy41LjBgYCB3aGljaCBhbGxvd3MgdG8gc3Bl
Y2lmeSBob3cgdG8KK2Rpc3BsYXkgY2FwdHVyZWQgb3V0cHV0IHdoZW4gdGVzdHMgZmFpbDogYGBu
b2BgLCBgYHN0ZG91dGBgLCBgYHN0ZGVycmBgLCBgYGxvZ2BgIG9yIGBgYWxsYGAgKHRoZSBkZWZh
dWx0KS4KKworCisKK1Jlc3VsdCBsb2cgKGBgLS1yZXN1bHQtbG9nYGApCit+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fgorCisuLiBkZXByZWNhdGVkOjogNC4wCisuLiB2ZXJzaW9ucmVtb3Zl
ZDo6IDYuMAorCitUaGUgYGAtLXJlc3VsdC1sb2dgYCBvcHRpb24gcHJvZHVjZXMgYSBzdHJlYW0g
b2YgdGVzdCByZXBvcnRzIHdoaWNoIGNhbiBiZQorYW5hbHlzZWQgYXQgcnVudGltZSwgYnV0IGl0
IHVzZXMgYSBjdXN0b20gZm9ybWF0IHdoaWNoIHJlcXVpcmVzIHVzZXJzIHRvIGltcGxlbWVudCB0
aGVpciBvd24KK3BhcnNlci4KKworVGhlICBgcHl0ZXN0LXJlcG9ydGxvZyA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LXJlcG9ydGxvZz5gX18gcGx1Z2luIHByb3ZpZGVzIGEg
YGAtLXJlcG9ydC1sb2dgYCBvcHRpb24sIGEgbW9yZSBzdGFuZGFyZCBhbmQgZXh0ZW5zaWJsZSBh
bHRlcm5hdGl2ZSwgcHJvZHVjaW5nCitvbmUgSlNPTiBvYmplY3QgcGVyLWxpbmUsIGFuZCBzaG91
bGQgY292ZXIgdGhlIHNhbWUgdXNlIGNhc2VzLiBQbGVhc2UgdHJ5IGl0IG91dCBhbmQgcHJvdmlk
ZSBmZWVkYmFjay4KKworVGhlIGBgcHl0ZXN0LXJlcG9ydGxvZ2BgIHBsdWdpbiBtaWdodCBldmVu
IGJlIG1lcmdlZCBpbnRvIHRoZSBjb3JlCithdCBzb21lIHBvaW50LCBkZXBlbmRpbmcgb24gdGhl
IHBsYW5zIGZvciB0aGUgcGx1Z2lucyBhbmQgbnVtYmVyIG9mIHVzZXJzIHVzaW5nIGl0LgorCitg
YHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeWBgIGhvb2sKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9ucmVtb3ZlZDo6IDYuMAorCitUaGUgYGBweXRlc3RfY29s
bGVjdF9kaXJlY3RvcnlgYCBoYXMgbm90IHdvcmtlZCBwcm9wZXJseSBmb3IgeWVhcnMgKGl0IHdh
cyBjYWxsZWQKK2J1dCB0aGUgcmVzdWx0cyB3ZXJlIGlnbm9yZWQpLiBVc2VycyBtYXkgY29uc2lk
ZXIgdXNpbmcgOmZ1bmM6YHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zIDxfcHl0ZXN0Lmhv
b2tzcGVjLnB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zPmAgaW5zdGVhZC4KKworVGVybWlu
YWxSZXBvcnRlci53cml0ZXIKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25y
ZW1vdmVkOjogNi4wCisKK1RoZSBgYFRlcm1pbmFsUmVwb3J0ZXIud3JpdGVyYGAgYXR0cmlidXRl
IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4gVGhpcwor
d2FzIGluYWR2ZXJ0ZW50bHkgZXhwb3NlZCBhcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIG9mIHRo
YXQgcGx1Z2luIGFuZCB0aWVzIGl0IHRvbyBtdWNoCit3aXRoIGBgcHkuaW8uVGVybWluYWxXcml0
ZXJgYC4KKworUGx1Z2lucyB0aGF0IHVzZWQgYGBUZXJtaW5hbFJlcG9ydGVyLndyaXRlcmBgIGRp
cmVjdGx5IHNob3VsZCBpbnN0ZWFkIHVzZSBgYFRlcm1pbmFsUmVwb3J0ZXJgYAorbWV0aG9kcyB0
aGF0IHByb3ZpZGUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4KKworYGBqdW5pdF9mYW1pbHlgYCBk
ZWZhdWx0IHZhbHVlIGNoYW5nZSB0byAieHVuaXQyIgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDYuMAorCitU
aGUgZGVmYXVsdCB2YWx1ZSBvZiBgYGp1bml0X2ZhbWlseWBgIG9wdGlvbiB3aWxsIGNoYW5nZSB0
byBgYHh1bml0MmBgIGluIHB5dGVzdCA2LjAsIHdoaWNoCitpcyBhbiB1cGRhdGUgb2YgdGhlIG9s
ZCBgYHh1bml0MWBgIGZvcm1hdCBhbmQgaXMgc3VwcG9ydGVkIGJ5IGRlZmF1bHQgaW4gbW9kZXJu
IHRvb2xzCit0aGF0IG1hbmlwdWxhdGUgdGhpcyB0eXBlIG9mIGZpbGUgKGZvciBleGFtcGxlLCBK
ZW5raW5zLCBBenVyZSBQaXBlbGluZXMsIGV0Yy4pLgorCitVc2VycyBhcmUgcmVjb21tZW5kZWQg
dG8gdHJ5IHRoZSBuZXcgYGB4dW5pdDJgYCBmb3JtYXQgYW5kIHNlZSBpZiB0aGVpciB0b29saW5n
IHRoYXQgY29uc3VtZXMgdGhlIEpVbml0CitYTUwgZmlsZSBzdXBwb3J0cyBpdC4KKworVG8gdXNl
IHRoZSBuZXcgZm9ybWF0LCB1cGRhdGUgeW91ciBgYHB5dGVzdC5pbmlgYDoKKworLi4gY29kZS1i
bG9jazo6IGluaQorCisgICAgW3B5dGVzdF0KKyAgICBqdW5pdF9mYW1pbHk9eHVuaXQyCisKK0lm
IHlvdSBkaXNjb3ZlciB0aGF0IHlvdXIgdG9vbGluZyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBuZXcg
Zm9ybWF0LCBhbmQgd2FudCB0byBrZWVwIHVzaW5nIHRoZQorbGVnYWN5IHZlcnNpb24sIHNldCB0
aGUgb3B0aW9uIHRvIGBgbGVnYWN5YGAgaW5zdGVhZDoKKworLi4gY29kZS1ibG9jazo6IGluaQor
CisgICAgW3B5dGVzdF0KKyAgICBqdW5pdF9mYW1pbHk9bGVnYWN5CisKK0J5IHVzaW5nIGBgbGVn
YWN5YGAgeW91IHdpbGwga2VlcCB1c2luZyB0aGUgbGVnYWN5L3h1bml0MSBmb3JtYXQgd2hlbiB1
cGdyYWRpbmcgdG8KK3B5dGVzdCA2LjAsIHdoZXJlIHRoZSBkZWZhdWx0IGZvcm1hdCB3aWxsIGJl
IGBgeHVuaXQyYGAuCisKK0luIG9yZGVyIHRvIGxldCB1c2VycyBrbm93IGFib3V0IHRoZSB0cmFu
c2l0aW9uLCBweXRlc3Qgd2lsbCBpc3N1ZSBhIHdhcm5pbmcgaW4gY2FzZQordGhlIGBgLS1qdW5p
dHhtbGBgIG9wdGlvbiBpcyBnaXZlbiBpbiB0aGUgY29tbWFuZCBsaW5lIGJ1dCBgYGp1bml0X2Zh
bWlseWBgIGlzIG5vdCBleHBsaWNpdGx5Citjb25maWd1cmVkIGluIGBgcHl0ZXN0LmluaWBgLgor
CitTZXJ2aWNlcyBrbm93biB0byBzdXBwb3J0IHRoZSBgYHh1bml0MmBgIGZvcm1hdDoKKworKiBg
SmVua2lucyA8aHR0cHM6Ly93d3cuamVua2lucy5pby8+YF9fIHdpdGggdGhlIGBKVW5pdCA8aHR0
cHM6Ly9wbHVnaW5zLmplbmtpbnMuaW8vanVuaXQ+YF9fIHBsdWdpbi4KKyogYEF6dXJlIFBpcGVs
aW5lcyA8aHR0cHM6Ly9henVyZS5taWNyb3NvZnQuY29tL2VuLXVzL3NlcnZpY2VzL2Rldm9wcy9w
aXBlbGluZXM+YF9fLgorCitOb2RlIENvbnN0cnVjdGlvbiBjaGFuZ2VkIHRvIGBgTm9kZS5mcm9t
X3BhcmVudGBgCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+CisKKy4uIHZlcnNpb25jaGFuZ2VkOjogNi4wCisKK1RoZSBjb25zdHJ1Y3Rpb24gb2Ygbm9k
ZXMgbm93IHNob3VsZCB1c2UgdGhlIG5hbWVkIGNvbnN0cnVjdG9yIGBgZnJvbV9wYXJlbnRgYC4K
K1RoaXMgbGltaXRhdGlvbiBpbiBhcGkgc3VyZmFjZSBpbnRlbmRzIHRvIGVuYWJsZSBiZXR0ZXIv
c2ltcGxlciByZWZhY3RvcmluZyBvZiB0aGUgY29sbGVjdGlvbiB0cmVlLgorCitUaGlzIG1lYW5z
IHRoYXQgaW5zdGVhZCBvZiA6Y29kZTpgTXlJdGVtKG5hbWU9ImZvbyIsIHBhcmVudD1jb2xsZWN0
b3IsIG9iaj00MilgCitvbmUgbm93IGhhcyB0byBpbnZva2UgOmNvZGU6YE15SXRlbS5mcm9tX3Bh
cmVudChjb2xsZWN0b3IsIG5hbWU9ImZvbyIpYC4KKworUGx1Z2lucyB0aGF0IHdpc2ggdG8gc3Vw
cG9ydCBvbGRlciB2ZXJzaW9ucyBvZiBweXRlc3QgYW5kIHN1cHByZXNzIHRoZSB3YXJuaW5nIGNh
biB1c2UKK2BoYXNhdHRyYCB0byBjaGVjayBpZiBgZnJvbV9wYXJlbnRgIGV4aXN0cyBpbiB0aGF0
IHZlcnNpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiBweXRlc3RfcHlj
b2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2JqKToKKyAgICAgICAgaWYgaGFzYXR0
cihNeUl0ZW0sICJmcm9tX3BhcmVudCIpOgorICAgICAgICAgICAgaXRlbSA9IE15SXRlbS5mcm9t
X3BhcmVudChjb2xsZWN0b3IsIG5hbWU9ImZvbyIpCisgICAgICAgICAgICBpdGVtLm9iaiA9IDQy
CisgICAgICAgICAgICByZXR1cm4gaXRlbQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0
dXJuIE15SXRlbShuYW1lPSJmb28iLCBwYXJlbnQ9Y29sbGVjdG9yLCBvYmo9NDIpCisKK05vdGUg
dGhhdCBgYGZyb21fcGFyZW50YGAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGgga2V5d29yZCBh
cmd1bWVudHMgZm9yIHRoZSBwYXJhbWV0ZXJzLgorCisKK2BgcHl0ZXN0LmZpeHR1cmVgYCBhcmd1
bWVudHMgYXJlIGtleXdvcmQgb25seQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNi4wCisKK1Bhc3NpbmcgYXJndW1l
bnRzIHRvIHB5dGVzdC5maXh0dXJlKCkgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMgaGFzIGJlZW4g
cmVtb3ZlZCAtIHBhc3MgdGhlbSBieSBrZXl3b3JkIGluc3RlYWQuCisKK2BgZnVuY2FyZ25hbWVz
YGAgYWxpYXMgZm9yIGBgZml4dHVyZW5hbWVzYGAKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA2LjAKKworVGhlIGBgRml4
dHVyZVJlcXVlc3RgYCwgYGBNZXRhZnVuY2BgLCBhbmQgYGBGdW5jdGlvbmBgIGNsYXNzZXMgdHJh
Y2sgdGhlIG5hbWVzIG9mCit0aGVpciBhc3NvY2lhdGVkIGZpeHR1cmVzLCB3aXRoIHRoZSBhcHRs
eS1uYW1lZCBgYGZpeHR1cmVuYW1lc2BgIGF0dHJpYnV0ZS4KKworUHJpb3IgdG8gcHl0ZXN0IDIu
MywgdGhpcyBhdHRyaWJ1dGUgd2FzIG5hbWVkIGBgZnVuY2FyZ25hbWVzYGAsIGFuZCB3ZSBoYXZl
IGtlcHQKK3RoYXQgYXMgYW4gYWxpYXMgc2luY2UuICBJdCBpcyBmaW5hbGx5IGR1ZSBmb3IgcmVt
b3ZhbCwgYXMgaXQgaXMgb2Z0ZW4gY29uZnVzaW5nCitpbiBwbGFjZXMgd2hlcmUgd2Ugb3IgcGx1
Z2luIGF1dGhvcnMgbXVzdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGZpeHR1cmUgbmFtZXMgYW5kCitu
YW1lcyBzdXBwbGllZCBieSBub24tZml4dHVyZSB0aGluZ3Mgc3VjaCBhcyBgYHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplYGAuCisKKworYGBweXRlc3QuY29uZmlnYGAgZ2xvYmFsCit+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA1LjAKKworVGhlIGBgcHl0ZXN0
LmNvbmZpZ2BgIGdsb2JhbCBvYmplY3QgaXMgZGVwcmVjYXRlZC4gIEluc3RlYWQgdXNlCitgYHJl
cXVlc3QuY29uZmlnYGAgKHZpYSB0aGUgYGByZXF1ZXN0YGAgZml4dHVyZSkgb3IgaWYgeW91IGFy
ZSBhIHBsdWdpbiBhdXRob3IKK3VzZSB0aGUgYGBweXRlc3RfY29uZmlndXJlKGNvbmZpZylgYCBo
b29rLiBOb3RlIHRoYXQgbWFueSBob29rcyBjYW4gYWxzbyBhY2Nlc3MKK3RoZSBgYGNvbmZpZ2Bg
IG9iamVjdCBpbmRpcmVjdGx5LCB0aHJvdWdoIGBgc2Vzc2lvbi5jb25maWdgYCBvciBgYGl0ZW0u
Y29uZmlnYGAgZm9yIGV4YW1wbGUuCisKKworLi4gX2ByYWlzZXMgbWVzc2FnZSBkZXByZWNhdGVk
YDoKKworYGAibWVzc2FnZSJgYCBwYXJhbWV0ZXIgb2YgYGBweXRlc3QucmFpc2VzYGAKK35+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1v
dmVkOjogNS4wCisKK0l0IGlzIGEgY29tbW9uIG1pc3Rha2UgdG8gdGhpbmsgdGhpcyBwYXJhbWV0
ZXIgd2lsbCBtYXRjaCB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UsIHdoaWxlIGluIGZhY3QKK2l0IG9u
bHkgc2VydmVzIHRvIHByb3ZpZGUgYSBjdXN0b20gbWVzc2FnZSBpbiBjYXNlIHRoZSBgYHB5dGVz
dC5yYWlzZXNgYCBjaGVjayBmYWlscy4gVG8gcHJldmVudAordXNlcnMgZnJvbSBtYWtpbmcgdGhp
cyBtaXN0YWtlLCBhbmQgYmVjYXVzZSBpdCBpcyBiZWxpZXZlZCB0byBiZSBsaXR0bGUgdXNlZCwg
cHl0ZXN0IGlzCitkZXByZWNhdGluZyBpdCB3aXRob3V0IHByb3ZpZGluZyBhbiBhbHRlcm5hdGl2
ZSBmb3IgdGhlIG1vbWVudC4KKworSWYgeW91IGhhdmUgYSB2YWxpZCB1c2UgY2FzZSBmb3IgdGhp
cyBwYXJhbWV0ZXIsIGNvbnNpZGVyIHRoYXQgdG8gb2J0YWluIHRoZSBzYW1lIHJlc3VsdHMKK3lv
dSBjYW4ganVzdCBjYWxsIGBgcHl0ZXN0LmZhaWxgYCBtYW51YWxseSBhdCB0aGUgZW5kIG9mIHRo
ZSBgYHdpdGhgYCBzdGF0ZW1lbnQuCisKK0ZvciBleGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVGltZW91dEVycm9yLCBtZXNzYWdlPSJD
bGllbnQgZ290IHVuZXhwZWN0ZWQgbWVzc2FnZSIpOgorICAgICAgICB3YWl0X2Zvcih3ZWJzb2Nr
ZXQucmVjdigpLCAwLjUpCisKKworQmVjb21lczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgor
CisgICAgd2l0aCBweXRlc3QucmFpc2VzKFRpbWVvdXRFcnJvcik6CisgICAgICAgIHdhaXRfZm9y
KHdlYnNvY2tldC5yZWN2KCksIDAuNSkKKyAgICAgICAgcHl0ZXN0LmZhaWwoIkNsaWVudCBnb3Qg
dW5leHBlY3RlZCBtZXNzYWdlIikKKworCitJZiB5b3Ugc3RpbGwgaGF2ZSBjb25jZXJucyBhYm91
dCB0aGlzIGRlcHJlY2F0aW9uIGFuZCBmdXR1cmUgcmVtb3ZhbCwgcGxlYXNlIGNvbW1lbnQgb24K
K2Bpc3N1ZSAjMzk3NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zOTc0PmBfXy4KKworCisuLiBfcmFpc2VzLXdhcm5zLWV4ZWM6CisKK2BgcmFpc2VzYGAgLyBg
YHdhcm5zYGAgd2l0aCBhIHN0cmluZyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50Cit+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2
ZXJzaW9ucmVtb3ZlZDo6IDUuMAorCitVc2UgdGhlIGNvbnRleHQgbWFuYWdlciBmb3JtIG9mIHRo
ZXNlIGluc3RlYWQuICBXaGVuIG5lY2Vzc2FyeSwgaW52b2tlIGBgZXhlY2BgCitkaXJlY3RseS4K
KworRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgcHl0ZXN0LnJhaXNl
cyhaZXJvRGl2aXNpb25FcnJvciwgIjEgLyAwIikKKyAgICBweXRlc3QucmFpc2VzKFN5bnRheEVy
cm9yLCAiYSAkIGIiKQorCisgICAgcHl0ZXN0Lndhcm5zKERlcHJlY2F0aW9uV2FybmluZywgIm15
X2Z1bmN0aW9uKCkiKQorICAgIHB5dGVzdC53YXJucyhTeW50YXhXYXJuaW5nLCAiYXNzZXJ0KDEs
IDIpIikKKworQmVjb21lczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgMSAvIDAKKyAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICBleGVjKCJhICQgYiIpICAjIGV4
ZWMgaXMgcmVxdWlyZWQgZm9yIGludmFsaWQgc3ludGF4CisKKyAgICB3aXRoIHB5dGVzdC53YXJu
cyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICBteV9mdW5jdGlvbigpCisgICAgd2l0aCBw
eXRlc3Qud2FybnMoU3ludGF4V2FybmluZyk6CisgICAgICAgIGV4ZWMoImFzc2VydCgxLCAyKSIp
ICAjIGV4ZWMgaXMgdXNlZCB0byBhdm9pZCBhIHRvcC1sZXZlbCB3YXJuaW5nCisKKworCisKK1Vz
aW5nIGBgQ2xhc3NgYCBpbiBjdXN0b20gQ29sbGVjdG9ycworfn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisKK1VzaW5nIG9iamVj
dHMgbmFtZWQgYGAiQ2xhc3MiYGAgYXMgYSB3YXkgdG8gY3VzdG9taXplIHRoZSB0eXBlIG9mIG5v
ZGVzIHRoYXQgYXJlIGNvbGxlY3RlZCBpbiBgYENvbGxlY3RvcmBgCitzdWJjbGFzc2VzIGhhcyBi
ZWVuIGRlcHJlY2F0ZWQuIFVzZXJzIGluc3RlYWQgc2hvdWxkIHVzZSBgYHB5dGVzdF9weWNvbGxl
Y3RfbWFrZWl0ZW1gYCB0byBjdXN0b21pemUgbm9kZSB0eXBlcyBkdXJpbmcKK2NvbGxlY3Rpb24u
CisKK1RoaXMgaXNzdWUgc2hvdWxkIGFmZmVjdCBvbmx5IGFkdmFuY2VkIHBsdWdpbnMgd2hvIGNy
ZWF0ZSBuZXcgY29sbGVjdGlvbiB0eXBlcywgc28gaWYgeW91IHNlZSB0aGlzIHdhcm5pbmcKK21l
c3NhZ2UgcGxlYXNlIGNvbnRhY3QgdGhlIGF1dGhvcnMgc28gdGhleSBjYW4gY2hhbmdlIHRoZSBj
b2RlLgorCisKK21hcmtzIGluIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYAorfn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisK
K0FwcGx5aW5nIG1hcmtzIHRvIHZhbHVlcyBvZiBhIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVg
YCBjYWxsIGlzIG5vdyBkZXByZWNhdGVkLiBGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiYSwgYiIs
CisgICAgICAgIFsKKyAgICAgICAgICAgICgzLCA5KSwKKyAgICAgICAgICAgIHB5dGVzdC5tYXJr
LnhmYWlsKHJlYXNvbj0iZmxha3kiKSg2LCAzNiksCisgICAgICAgICAgICAoMTAsIDEwMCksCisg
ICAgICAgICAgICAoMjAsIDIwMCksCisgICAgICAgICAgICAoNDAsIDQwMCksCisgICAgICAgICAg
ICAoNTAsIDUwMCksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2ZvbyhhLCBiKToK
KyAgICAgICAgLi4uCisKK1RoaXMgY29kZSBhcHBsaWVzIHRoZSBgYHB5dGVzdC5tYXJrLnhmYWls
KHJlYXNvbj0iZmxha3kiKWBgIG1hcmsgdG8gdGhlIGBgKDYsIDM2KWBgIHZhbHVlIG9mIHRoZSBh
Ym92ZSBwYXJhbWV0cml6YXRpb24KK2NhbGwuCisKK1RoaXMgd2FzIGNvbnNpZGVyZWQgaGFyZCB0
byByZWFkIGFuZCB1bmRlcnN0YW5kLCBhbmQgYWxzbyBpdHMgaW1wbGVtZW50YXRpb24gcHJlc2Vu
dGVkIHByb2JsZW1zIHRvIHRoZSBjb2RlIHByZXZlbnRpbmcKK2Z1cnRoZXIgaW50ZXJuYWwgaW1w
cm92ZW1lbnRzIGluIHRoZSBtYXJrcyBhcmNoaXRlY3R1cmUuCisKK1RvIHVwZGF0ZSB0aGUgY29k
ZSwgdXNlIGBgcHl0ZXN0LnBhcmFtYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImEsIGIiLAorICAgICAgICBbCisg
ICAgICAgICAgICAoMywgOSksCisgICAgICAgICAgICBweXRlc3QucGFyYW0oNiwgMzYsIG1hcmtz
PXB5dGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0iZmxha3kiKSksCisgICAgICAgICAgICAoMTAsIDEw
MCksCisgICAgICAgICAgICAoMjAsIDIwMCksCisgICAgICAgICAgICAoNDAsIDQwMCksCisgICAg
ICAgICAgICAoNTAsIDUwMCksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2Zvbyhh
LCBiKToKKyAgICAgICAgLi4uCisKKworYGBweXRlc3RfZnVuY2FyZ19fYGAgcHJlZml4Cit+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKworSW4g
dmVyeSBlYXJseSBweXRlc3QgdmVyc2lvbnMgZml4dHVyZXMgY291bGQgYmUgZGVmaW5lZCB1c2lu
ZyB0aGUgYGBweXRlc3RfZnVuY2FyZ19fYGAgcHJlZml4OgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCisKKyAgICBkZWYgcHl0ZXN0X2Z1bmNhcmdfX2RhdGEoKToKKyAgICAgICAgcmV0dXJuIFNv
bWVEYXRhKCkKKworU3dpdGNoIG92ZXIgdG8gdGhlIGBgQHB5dGVzdC5maXh0dXJlYGAgZGVjb3Jh
dG9yOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICBkZWYgZGF0YSgpOgorICAgICAgICByZXR1cm4gU29tZURhdGEoKQorCisKKworW3B5dGVzdF0g
c2VjdGlvbiBpbiBzZXR1cC5jZmcgZmlsZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisKK2BgW3B5dGVzdF1gYCBzZWN0aW9u
cyBpbiBgYHNldHVwLmNmZ2BgIGZpbGVzIHNob3VsZCBub3cgYmUgbmFtZWQgYGBbdG9vbDpweXRl
c3RdYGAKK3RvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIGRpc3R1dGlscyBjb21tYW5kcy4K
KworCitNZXRhZnVuYy5hZGRjYWxsCit+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1v
dmVkOjogNC4wCisKK2BgX3B5dGVzdC5weXRob24uTWV0YWZ1bmMuYWRkY2FsbGBgIHdhcyBhIHBy
ZWN1cnNvciB0byB0aGUgY3VycmVudCBwYXJhbWV0cml6ZWQgbWVjaGFuaXNtLiBVc2VycyBzaG91
bGQgdXNlCis6bWV0aDpgX3B5dGVzdC5weXRob24uTWV0YWZ1bmMucGFyYW1ldHJpemVgIGluc3Rl
YWQuCisKK0V4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiBweXRl
c3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgorICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHsi
aSI6IDF9LCBpZD0iMSIpCisgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoeyJpIjogMn0sIGlkPSIy
IikKKworQmVjb21lczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIHB5dGVz
dF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6CisgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXpl
KCJpIiwgWzEsIDJdLCBpZHM9WyIxIiwgIjIiXSkKKworCitgYGNhY2hlZF9zZXR1cGBgCit+fn5+
fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisKK2BgcmVxdWVzdC5jYWNo
ZWRfc2V0dXBgYCB3YXMgdGhlIHByZWN1cnNvciBvZiB0aGUgc2V0dXAvdGVhcmRvd24gbWVjaGFu
aXNtIGF2YWlsYWJsZSB0byBmaXh0dXJlcy4KKworRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGRiX3Nlc3Npb24oKToKKyAg
ICAgICAgcmV0dXJuIHJlcXVlc3QuY2FjaGVkX3NldHVwKAorICAgICAgICAgICAgc2V0dXA9U2Vz
c2lvbi5jcmVhdGUsIHRlYXJkb3duPWxhbWJkYSBzZXNzaW9uOiBzZXNzaW9uLmNsb3NlKCksIHNj
b3BlPSJtb2R1bGUiCisgICAgICAgICkKKworVGhpcyBzaG91bGQgYmUgdXBkYXRlZCB0byBtYWtl
IHVzZSBvZiBzdGFuZGFyZCBmaXh0dXJlIG1lY2hhbmlzbXM6CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRob24KKworICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKKyAgICBkZWYgZGJf
c2Vzc2lvbigpOgorICAgICAgICBzZXNzaW9uID0gU2Vzc2lvbi5jcmVhdGUoKQorICAgICAgICB5
aWVsZCBzZXNzaW9uCisgICAgICAgIHNlc3Npb24uY2xvc2UoKQorCisKK1lvdSBjYW4gY29uc3Vs
dCBgZnVuY2FyZyBjb21wYXJpc29uIHNlY3Rpb24gaW4gdGhlIGRvY3MgPGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9mdW5jYXJnX2NvbXBhcmUuaHRtbD5gXyBmb3IKK21vcmUgaW5m
b3JtYXRpb24uCisKKworcHl0ZXN0X3BsdWdpbnMgaW4gbm9uLXRvcC1sZXZlbCBjb25mdGVzdCBm
aWxlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisu
LiB2ZXJzaW9ucmVtb3ZlZDo6IDQuMAorCitEZWZpbmluZyA6Z2xvYmFsdmFyOmBweXRlc3RfcGx1
Z2luc2AgaXMgbm93IGRlcHJlY2F0ZWQgaW4gbm9uLXRvcC1sZXZlbCBjb25mdGVzdC5weQorZmls
ZXMgYmVjYXVzZSB0aGV5IHdpbGwgYWN0aXZhdGUgcmVmZXJlbmNlZCBwbHVnaW5zICpnbG9iYWxs
eSosIHdoaWNoIGlzIHN1cnByaXNpbmcgYmVjYXVzZSBmb3IgYWxsIG90aGVyIHB5dGVzdAorZmVh
dHVyZXMgYGBjb25mdGVzdC5weWBgIGZpbGVzIGFyZSBvbmx5ICphY3RpdmUqIGZvciB0ZXN0cyBh
dCBvciBiZWxvdyBpdC4KKworCitgYENvbmZpZy53YXJuYGAgYW5kIGBgTm9kZS53YXJuYGAKK35+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9ucmVtb3ZlZDo6IDQu
MAorCitUaG9zZSBtZXRob2RzIHdlcmUgcGFydCBvZiB0aGUgaW50ZXJuYWwgcHl0ZXN0IHdhcm5p
bmdzIHN5c3RlbSwgYnV0IHNpbmNlIGBgMy44YGAgcHl0ZXN0IGlzIHVzaW5nIHRoZSBidWlsdGlu
IHdhcm5pbmcKK3N5c3RlbSBmb3IgaXRzIG93biB3YXJuaW5ncywgc28gdGhvc2UgdHdvIGZ1bmN0
aW9ucyBhcmUgbm93IGRlcHJlY2F0ZWQuCisKK2BgQ29uZmlnLndhcm5gYCBzaG91bGQgYmUgcmVw
bGFjZWQgYnkgY2FsbHMgdG8gdGhlIHN0YW5kYXJkIGBgd2FybmluZ3Mud2FybmBgLCBleGFtcGxl
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBjb25maWcud2FybigiQzEiLCAic29t
ZSB3YXJuaW5nIikKKworQmVjb21lczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAg
d2FybmluZ3Mud2FybihweXRlc3QuUHl0ZXN0V2FybmluZygic29tZSB3YXJuaW5nIikpCisKK2Bg
Tm9kZS53YXJuYGAgbm93IHN1cHBvcnRzIHR3byBzaWduYXR1cmVzOgorCisqIGBgbm9kZS53YXJu
KFB5dGVzdFdhcm5pbmcoInNvbWUgbWVzc2FnZSIpKWBgOiBpcyBub3cgdGhlICoqcmVjb21tZW5k
ZWQqKiB3YXkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLgorICBUaGUgd2FybmluZyBpbnN0YW5jZSBt
dXN0IGJlIGEgUHl0ZXN0V2FybmluZyBvciBzdWJjbGFzcy4KKworKiBgYG5vZGUud2FybigiQ0ki
LCAic29tZSBtZXNzYWdlIilgYDogdGhpcyBjb2RlL21lc3NhZ2UgZm9ybSBoYXMgYmVlbiAqKnJl
bW92ZWQqKiBhbmQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byB0aGUgd2FybmluZyBpbnN0YW5jZSBm
b3JtIGFib3ZlLgorCityZWNvcmRfeG1sX3Byb3BlcnR5Cit+fn5+fn5+fn5+fn5+fn5+fn5+CisK
Ky4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisKK1RoZSBgYHJlY29yZF94bWxfcHJvcGVydHlgYCBm
aXh0dXJlIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBtb3JlIGdlbmVyaWMgYGBy
ZWNvcmRfcHJvcGVydHlgYCwgd2hpY2gKK2NhbiBiZSB1c2VkIGJ5IG90aGVyIGNvbnN1bWVycyAo
Zm9yIGV4YW1wbGUgYGBweXRlc3QtaHRtbGBgKSB0byBvYnRhaW4gY3VzdG9tIGluZm9ybWF0aW9u
IGFib3V0IHRoZSB0ZXN0IHJ1bi4KKworVGhpcyBpcyBqdXN0IGEgbWF0dGVyIG9mIHJlbmFtaW5n
IHRoZSBmaXh0dXJlIGFzIHRoZSBBUEkgaXMgdGhlIHNhbWU6CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRob24KKworICAgIGRlZiB0ZXN0X2ZvbyhyZWNvcmRfeG1sX3Byb3BlcnR5KToKKyAgICAgICAg
Li4uCisKK0NoYW5nZSB0bzoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIHRl
c3RfZm9vKHJlY29yZF9wcm9wZXJ0eSk6CisgICAgICAgIC4uLgorCisKK1Bhc3NpbmcgY29tbWFu
ZC1saW5lIHN0cmluZyB0byBgYHB5dGVzdC5tYWluKClgYAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisK
K1Bhc3NpbmcgYSBjb21tYW5kLWxpbmUgc3RyaW5nIHRvIGBgcHl0ZXN0Lm1haW4oKWBgIGlzIGRl
cHJlY2F0ZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIHB5dGVzdC5tYWluKCIt
diAtcyIpCisKK1Bhc3MgYSBsaXN0IGluc3RlYWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
KworICAgIHB5dGVzdC5tYWluKFsiLXYiLCAiLXMiXSkKKworCitCeSBwYXNzaW5nIGEgc3RyaW5n
LCB1c2VycyBleHBlY3QgdGhhdCBweXRlc3Qgd2lsbCBpbnRlcnByZXQgdGhhdCBjb21tYW5kLWxp
bmUgdXNpbmcgdGhlIHNoZWxsIHJ1bGVzIHRoZXkgYXJlIHdvcmtpbmcKK29uIChmb3IgZXhhbXBs
ZSBgYGJhc2hgYCBvciBgYFBvd2Vyc2hlbGxgYCksIGJ1dCB0aGlzIGlzIHZlcnkgaGFyZC9pbXBv
c3NpYmxlIHRvIGRvIGluIGEgcG9ydGFibGUgd2F5LgorCisKK0NhbGxpbmcgZml4dHVyZXMgZGly
ZWN0bHkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0
LjAKKworQ2FsbGluZyBhIGZpeHR1cmUgZnVuY3Rpb24gZGlyZWN0bHksIGFzIG9wcG9zZWQgdG8g
cmVxdWVzdCB0aGVtIGluIGEgdGVzdCBmdW5jdGlvbiwgaXMgZGVwcmVjYXRlZC4KKworRm9yIGV4
YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIEBweXRlc3QuZml4dHVyZQor
ICAgIGRlZiBjZWxsKCk6CisgICAgICAgIHJldHVybiAuLi4KKworCisgICAgQHB5dGVzdC5maXh0
dXJlCisgICAgZGVmIGZ1bGxfY2VsbCgpOgorICAgICAgICBjZWxsID0gY2VsbCgpCisgICAgICAg
IGNlbGwubWFrZV9mdWxsKCkKKyAgICAgICAgcmV0dXJuIGNlbGwKKworVGhpcyBpcyBhIGdyZWF0
IHNvdXJjZSBvZiBjb25mdXNpb24gdG8gbmV3IHVzZXJzLCB3aGljaCB3aWxsIG9mdGVuIGNhbGwg
dGhlIGZpeHR1cmUgZnVuY3Rpb25zIGFuZCByZXF1ZXN0IHRoZW0gZnJvbSB0ZXN0IGZ1bmN0aW9u
cyBpbnRlcmNoYW5nZWFibHksIHdoaWNoIGJyZWFrcyB0aGUgZml4dHVyZSByZXNvbHV0aW9uIG1v
ZGVsLgorCitJbiB0aG9zZSBjYXNlcyBqdXN0IHJlcXVlc3QgdGhlIGZ1bmN0aW9uIGRpcmVjdGx5
IGluIHRoZSBkZXBlbmRlbnQgZml4dHVyZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisg
ICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGNlbGwoKToKKyAgICAgICAgcmV0dXJuIC4uLgor
CisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgZnVsbF9jZWxsKGNlbGwpOgorICAgICAg
ICBjZWxsLm1ha2VfZnVsbCgpCisgICAgICAgIHJldHVybiBjZWxsCisKK0FsdGVybmF0aXZlbHkg
aWYgdGhlIGZpeHR1cmUgZnVuY3Rpb24gaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluc2lkZSBh
IHRlc3QgKG1ha2luZyBpdCBoYXJkIHRvIGFwcGx5IHRoZSBhYm92ZSBwYXR0ZXJuKSBvcgoraWYg
eW91IHdvdWxkIGxpa2UgdG8gbWFrZSBtaW5pbWFsIGNoYW5nZXMgdG8gdGhlIGNvZGUsIHlvdSBj
YW4gY3JlYXRlIGEgZml4dHVyZSB3aGljaCBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gdG9n
ZXRoZXIKK3dpdGggdGhlIGBgbmFtZWBgIHBhcmFtZXRlcjoKKworLi4gY29kZS1ibG9jazo6IHB5
dGhvbgorCisgICAgZGVmIGNlbGwoKToKKyAgICAgICAgcmV0dXJuIC4uLgorCisKKyAgICBAcHl0
ZXN0LmZpeHR1cmUobmFtZT0iY2VsbCIpCisgICAgZGVmIGNlbGxfZml4dHVyZSgpOgorICAgICAg
ICByZXR1cm4gY2VsbCgpCisKKworYGB5aWVsZGBgIHRlc3RzCit+fn5+fn5+fn5+fn5+fn4KKwor
Li4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKworcHl0ZXN0IHN1cHBvcnRlZCBgYHlpZWxkYGAtc3R5
bGUgdGVzdHMsIHdoZXJlIGEgdGVzdCBmdW5jdGlvbiBhY3R1YWxseSBgYHlpZWxkYGAgZnVuY3Rp
b25zIGFuZCB2YWx1ZXMKK3RoYXQgYXJlIHRoZW4gdHVybmVkIGludG8gcHJvcGVyIHRlc3QgbWV0
aG9kcy4gRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIGNoZWNr
KHgsIHkpOgorICAgICAgICBhc3NlcnQgeCAqKiB4ID09IHkKKworCisgICAgZGVmIHRlc3Rfc3F1
YXJlZCgpOgorICAgICAgICB5aWVsZCBjaGVjaywgMiwgNAorICAgICAgICB5aWVsZCBjaGVjaywg
MywgOQorCitUaGlzIHdvdWxkIHJlc3VsdCBpbnRvIHR3byBhY3R1YWwgdGVzdCBmdW5jdGlvbnMg
YmVpbmcgZ2VuZXJhdGVkLgorCitUaGlzIGZvcm0gb2YgdGVzdCBmdW5jdGlvbiBkb2Vzbid0IHN1
cHBvcnQgZml4dHVyZXMgcHJvcGVybHksIGFuZCB1c2VycyBzaG91bGQgc3dpdGNoIHRvIGBgcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemVgYDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ4LCB5IiwgWygyLCA0KSwgKDMsIDkpXSkKKyAgICBk
ZWYgdGVzdF9zcXVhcmVkKHgsIHkpOgorICAgICAgICBhc3NlcnQgeCAqKiB4ID09IHkKKworSW50
ZXJuYWwgY2xhc3NlcyBhY2Nlc3NlZCB0aHJvdWdoIGBgTm9kZWBgCit+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKwor
QWNjZXNzIG9mIGBgTW9kdWxlYGAsIGBgRnVuY3Rpb25gYCwgYGBDbGFzc2BgLCBgYEluc3RhbmNl
YGAsIGBgRmlsZWBgIGFuZCBgYEl0ZW1gYCB0aHJvdWdoIGBgTm9kZWBgIGluc3RhbmNlcyBub3cg
aXNzdWUKK3RoaXMgd2FybmluZzoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgIHVzYWdl
IG9mIEZ1bmN0aW9uLk1vZHVsZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHB5dGVzdC5Nb2R1
bGUgaW5zdGVhZAorCitVc2VycyBzaG91bGQganVzdCBgYGltcG9ydCBweXRlc3RgYCBhbmQgYWNj
ZXNzIHRob3NlIG9iamVjdHMgdXNpbmcgdGhlIGBgcHl0ZXN0YGAgbW9kdWxlLgorCitUaGlzIGhh
cyBiZWVuIGRvY3VtZW50ZWQgYXMgZGVwcmVjYXRlZCBmb3IgeWVhcnMsIGJ1dCBvbmx5IG5vdyB3
ZSBhcmUgYWN0dWFsbHkgZW1pdHRpbmcgZGVwcmVjYXRpb24gd2FybmluZ3MuCisKK2BgTm9kZS5n
ZXRfbWFya2VyYGAKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0
LjAKKworQXMgcGFydCBvZiBhIGxhcmdlIDpyZWY6YG1hcmtlci1yZXZhbXBgLCBgYF9weXRlc3Qu
bm9kZXMuTm9kZS5nZXRfbWFya2VyYGAgaXMgcmVtb3ZlZC4gU2VlCis6cmVmOmB0aGUgZG9jdW1l
bnRhdGlvbiA8dXBkYXRlIG1hcmtlciBjb2RlPmAgb24gdGlwcyBvbiBob3cgdG8gdXBkYXRlIHlv
dXIgY29kZS4KKworCitgYHNvbWVmdW5jdGlvbi5tYXJrbmFtZWBgCit+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisKK0FzIHBhcnQgb2YgYSBsYXJn
ZSA6cmVmOmBtYXJrZXItcmV2YW1wYCB3ZSBhbHJlYWR5IGRlcHJlY2F0ZWQgdXNpbmcgYGBNYXJr
SW5mb2BgCit0aGUgb25seSBjb3JyZWN0IHdheSB0byBnZXQgbWFya2VycyBvZiBhbiBlbGVtZW50
IGlzIHZpYSBgYG5vZGUuaXRlcl9tYXJrZXJzKG5hbWUpYGAuCisKKworYGBweXRlc3RfbmFtZXNw
YWNlYGAKK35+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisK
K1RoaXMgaG9vayBpcyBkZXByZWNhdGVkIGJlY2F1c2UgaXQgZ3JlYXRseSBjb21wbGljYXRlcyB0
aGUgcHl0ZXN0IGludGVybmFscyByZWdhcmRpbmcgY29uZmlndXJhdGlvbiBhbmQgaW5pdGlhbGl6
YXRpb24sIG1ha2luZyBzb21lCitidWcgZml4ZXMgYW5kIHJlZmFjdG9yaW5ncyBpbXBvc3NpYmxl
LgorCitFeGFtcGxlIG9mIHVzYWdlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBj
bGFzcyBNeVN5bWJvbDoKKyAgICAgICAgLi4uCisKKworICAgIGRlZiBweXRlc3RfbmFtZXNwYWNl
KCk6CisgICAgICAgIHJldHVybiB7Im15X3N5bWJvbCI6IE15U3ltYm9sKCl9CisKKworUGx1Z2lu
IGF1dGhvcnMgcmVseWluZyBvbiB0aGlzIGhvb2sgc2hvdWxkIGluc3RlYWQgcmVxdWlyZSB0aGF0
IHVzZXJzIG5vdyBpbXBvcnQgdGhlIHBsdWdpbiBtb2R1bGVzIGRpcmVjdGx5ICh3aXRoIGFuIGFw
cHJvcHJpYXRlIHB1YmxpYyBBUEkpLgorCitBcyBhIHN0b3BnYXAgbWVhc3VyZSwgcGx1Z2luIGF1
dGhvcnMgbWF5IHN0aWxsIGluamVjdCB0aGVpciBuYW1lcyBpbnRvIHB5dGVzdCdzIG5hbWVzcGFj
ZSwgdXN1YWxseSBkdXJpbmcgYGBweXRlc3RfY29uZmlndXJlYGA6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KKworICAgIGltcG9ydCBweXRlc3QKKworCisgICAgZGVmIHB5dGVzdF9jb25maWd1
cmUoKToKKyAgICAgICAgcHl0ZXN0Lm15X3N5bWJvbCA9IE15U3ltYm9sKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9kZXZlbG9wbWVudF9ndWlkZS5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vZGV2ZWxvcG1lbnRfZ3VpZGUucnN0CmluZGV4IDY5ZTg2Njk0M2U1Ny4uNzcwNzZkNDgz
NGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZGV2ZWxvcG1lbnRfZ3VpZGUucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9kZXZlbG9wbWVudF9ndWlkZS5yc3QKQEAgLTIsNTQg
KzIsNiBAQAogRGV2ZWxvcG1lbnQgR3VpZGUKID09PT09PT09PT09PT09PT09CiAKLVNvbWUgZ2Vu
ZXJhbCBndWlkZWxpbmVzIHJlZ2FyZGluZyBkZXZlbG9wbWVudCBpbiBweXRlc3QgZm9yIG1haW50
YWluZXJzIGFuZCBjb250cmlidXRvcnMuIE5vdGhpbmcgaGVyZQotaXMgc2V0IGluIHN0b25lIGFu
ZCBjYW4ndCBiZSBjaGFuZ2VkLCBmZWVsIGZyZWUgdG8gc3VnZ2VzdCBpbXByb3ZlbWVudHMgb3Ig
Y2hhbmdlcyBpbiB0aGUgd29ya2Zsb3cuCi0KLQotQ29kZSBTdHlsZQotLS0tLS0tLS0tLQotCi0q
IGBQRVAtOCA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDAwOD5gXwotKiBg
Zmxha2U4IDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvZmxha2U4Lz5gXyBmb3IgcXVhbGl0eSBj
aGVja3MKLSogYGludm9rZSA8aHR0cDovL3d3dy5weWludm9rZS5vcmcvPmBfIHRvIGF1dG9tYXRl
IGRldmVsb3BtZW50IHRhc2tzCi0KLQotQnJhbmNoZXMKLS0tLS0tLS0tCi0KLVdlIGhhdmUgdHdv
IGxvbmcgdGVybSBicmFuY2hlczoKLQotKiBgYG1hc3RlcmBgOiBjb250YWlucyB0aGUgY29kZSBm
b3IgdGhlIG5leHQgYnVnZml4IHJlbGVhc2UuCi0qIGBgZmVhdHVyZXNgYDogY29udGFpbnMgdGhl
IGNvZGUgd2l0aCBuZXcgZmVhdHVyZXMgZm9yIHRoZSBuZXh0IG1pbm9yIHJlbGVhc2UuCi0KLVRo
ZSBvZmZpY2lhbCByZXBvc2l0b3J5IHVzdWFsbHkgZG9lcyBub3QgY29udGFpbiB0b3BpYyBicmFu
Y2hlcywgZGV2ZWxvcGVycyBhbmQgY29udHJpYnV0b3JzIHNob3VsZCBjcmVhdGUgdG9waWMKLWJy
YW5jaGVzIGluIHRoZWlyIG93biBmb3Jrcy4KLQotRXhjZXB0aW9ucyBjYW4gYmUgbWFkZSBmb3Ig
Y2FzZXMgd2hlcmUgbW9yZSB0aGFuIG9uZSBjb250cmlidXRvciBpcyB3b3JraW5nIG9uIHRoZSBz
YW1lCi10b3BpYyBvciB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byB1c2Ugc29tZSBhdXRvbWF0aWMg
Y2FwYWJpbGl0eSBvZiB0aGUgbWFpbiByZXBvc2l0b3J5LCBzdWNoIGFzIGF1dG9tYXRpYyBkb2Nz
IGZyb20KLWByZWFkdGhlZG9jcyA8cmVhZHRoZWRvY3Mub3JnPmBfIGZvciBhIGJyYW5jaCBkZWFs
aW5nIHdpdGggZG9jdW1lbnRhdGlvbiByZWZhY3RvcmluZy4KLQotSXNzdWVzCi0tLS0tLS0KLQot
QW55IHF1ZXN0aW9uLCBmZWF0dXJlLCBidWcgb3IgcHJvcG9zYWwgaXMgd2VsY29tZSBhcyBhbiBp
c3N1ZS4gVXNlcnMgYXJlIGVuY291cmFnZWQgdG8gdXNlIHRoZW0gd2hlbmV2ZXIgdGhleSBuZWVk
LgotCi1HaXRIdWIgaXNzdWVzIHNob3VsZCB1c2UgbGFiZWxzIHRvIGNhdGVnb3JpemUgdGhlbS4g
TGFiZWxzIHNob3VsZCBiZSBjcmVhdGVkIHNwb3JhZGljYWxseSwgdG8gZmlsbCBhIG5pY2hlOyB3
ZSBzaG91bGQKLWF2b2lkIGNyZWF0aW5nIGxhYmVscyBqdXN0IGZvciB0aGUgc2FrZSBvZiBjcmVh
dGluZyB0aGVtLgotCi1FYWNoIGxhYmVsIHNob3VsZCBpbmNsdWRlIGEgZGVzY3JpcHRpb24gaW4g
dGhlIEdpdEh1YidzIGludGVyZmFjZSBzdGF0aW5nIGl0cyBwdXJwb3NlLgotCi1UZW1wb3Jhcnkg
bGFiZWxzCi1+fn5+fn5+fn5+fn5+fn5+Ci0KLVRvIGNsYXNzaWZ5IGlzc3VlcyBmb3IgYSBzcGVj
aWFsIGV2ZW50IGl0IGlzIGVuY291cmFnZWQgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IGxhYmVsLiBU
aGlzIGhlbHBzIHRob3NlIGludm9sdmVkIHRvIGZpbmQKLXRoZSByZWxldmFudCBpc3N1ZXMgdG8g
d29yayBvbi4gRXhhbXBsZXMgb2YgdGhhdCBhcmUgc3ByaW50cyBpbiBQeXRob24gZXZlbnRzIG9y
IGdsb2JhbCBoYWNraW5nIGV2ZW50cy4KLQotKiBgYHRlbXBvcmFyeTogRVAyMDE3IHNwcmludGBg
OiBjYW5kaWRhdGUgaXNzdWVzIG9yIFBScyB0YWNrbGVkIGR1cmluZyB0aGUgRXVyb1B5dGhvbiAy
MDE3Ci0KLUlzc3VlcyBjcmVhdGVkIGF0IHRob3NlIGV2ZW50cyBzaG91bGQgaGF2ZSBvdGhlciBy
ZWxldmFudCBsYWJlbHMgYWRkZWQgYXMgd2VsbC4KLQotVGhvc2UgbGFiZWxzIHNob3VsZCBiZSBy
ZW1vdmVkIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciByZWxldmFudC4KLQotCi0uLiBpbmNsdWRl
OjogLi4vLi4vSE9XVE9SRUxFQVNFLnJzdAorVGhlIGNvbnRyaWJ1dGluZyBndWlkZWxpbmVzIGFy
ZSB0byBiZSBmb3VuZCA6cmVmOmBoZXJlIDxjb250cmlidXRpbmc+YC4KK1RoZSByZWxlYXNlIHBy
b2NlZHVyZSBmb3IgcHl0ZXN0IGlzIGRvY3VtZW50ZWQgb24KK2BHaXRIdWIgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9ibG9iL21hc3Rlci9SRUxFQVNJTkcucnN0PmBfLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2RvY3Rlc3QucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2RvY3Rlc3QucnN0CmluZGV4IDk0ODhlZTgyNjU3Mi4uMTk2MzIxNGY3YTRkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZG9jdGVzdC5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2RvY3Rlc3QucnN0CkBAIC00LDUxICs0LDQ3IEBAIERvY3Rlc3QgaW50ZWdyYXRpb24g
Zm9yIG1vZHVsZXMgYW5kIHRlc3QgZmlsZXMKIAogQnkgZGVmYXVsdCBhbGwgZmlsZXMgbWF0Y2hp
bmcgdGhlIGBgdGVzdCoudHh0YGAgcGF0dGVybiB3aWxsCiBiZSBydW4gdGhyb3VnaCB0aGUgcHl0
aG9uIHN0YW5kYXJkIGBgZG9jdGVzdGBgIG1vZHVsZS4gIFlvdQotY2FuIGNoYW5nZSB0aGUgcGF0
dGVybiBieSBpc3N1aW5nOjoKK2NhbiBjaGFuZ2UgdGhlIHBhdHRlcm4gYnkgaXNzdWluZzoKIAot
ICAgIHB5dGVzdCAtLWRvY3Rlc3QtZ2xvYj0nKi5yc3QnCisuLiBjb2RlLWJsb2NrOjogYmFzaAog
Ci1vbiB0aGUgY29tbWFuZCBsaW5lLiBTaW5jZSB2ZXJzaW9uIGBgMi45YGAsIGBgLS1kb2N0ZXN0
LWdsb2JgYAotY2FuIGJlIGdpdmVuIG11bHRpcGxlIHRpbWVzIGluIHRoZSBjb21tYW5kLWxpbmUu
CisgICAgcHl0ZXN0IC0tZG9jdGVzdC1nbG9iPSIqLnJzdCIKIAotLi4gdmVyc2lvbmFkZGVkOjog
My4xCitvbiB0aGUgY29tbWFuZCBsaW5lLiBgYC0tZG9jdGVzdC1nbG9iYGAgY2FuIGJlIGdpdmVu
IG11bHRpcGxlIHRpbWVzIGluIHRoZSBjb21tYW5kLWxpbmUuCiAKLSAgICBZb3UgY2FuIHNwZWNp
ZnkgdGhlIGVuY29kaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aG9zZSBkb2N0ZXN0IGZpbGVz
Ci0gICAgdXNpbmcgdGhlIGBgZG9jdGVzdF9lbmNvZGluZ2BgIGluaSBvcHRpb246CitJZiB5b3Ug
dGhlbiBoYXZlIGEgdGV4dCBmaWxlIGxpa2UgdGhpczoKIAotICAgIC4uIGNvZGUtYmxvY2s6OiBp
bmkKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLSAgICAgICAgIyBjb250ZW50IG9mIHB5dGVzdC5p
bmkKLSAgICAgICAgW3B5dGVzdF0KLSAgICAgICAgZG9jdGVzdF9lbmNvZGluZyA9IGxhdGluMQor
ICAgICMgY29udGVudCBvZiB0ZXN0X2V4YW1wbGUudHh0CiAKLSAgICBUaGUgZGVmYXVsdCBlbmNv
ZGluZyBpcyBVVEYtOC4KKyAgICBoZWxsbyB0aGlzIGlzIGEgZG9jdGVzdAorICAgID4+PiB4ID0g
MworICAgID4+PiB4CisgICAgMwogCi1Zb3UgY2FuIGFsc28gdHJpZ2dlciBydW5uaW5nIG9mIGRv
Y3Rlc3RzCi1mcm9tIGRvY3N0cmluZ3MgaW4gYWxsIHB5dGhvbiBtb2R1bGVzIChpbmNsdWRpbmcg
cmVndWxhcgotcHl0aG9uIHRlc3QgbW9kdWxlcyk6OgordGhlbiB5b3UgY2FuIGp1c3QgaW52b2tl
IGBgcHl0ZXN0YGAgZGlyZWN0bHk6CiAKLSAgICBweXRlc3QgLS1kb2N0ZXN0LW1vZHVsZXMKKy4u
IGNvZGUtYmxvY2s6OiBweXRlc3QKIAotWW91IGNhbiBtYWtlIHRoZXNlIGNoYW5nZXMgcGVybWFu
ZW50IGluIHlvdXIgcHJvamVjdCBieQotcHV0dGluZyB0aGVtIGludG8gYSBweXRlc3QuaW5pIGZp
bGUgbGlrZSB0aGlzOgorICAgICQgcHl0ZXN0CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAg
IHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwg
cGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUK
KyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGVkIDEgaXRlbQogCi0u
LiBjb2RlLWJsb2NrOjogaW5pCisgICAgdGVzdF9leGFtcGxlLnR4dCAuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICAjIGNvbnRl
bnQgb2YgcHl0ZXN0LmluaQotICAgIFtweXRlc3RdCi0gICAgYWRkb3B0cyA9IC0tZG9jdGVzdC1t
b2R1bGVzCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCBpbiAwLjEy
cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1JZiB5b3UgdGhlbiBoYXZlIGEgdGV4
dCBmaWxlIGxpa2UgdGhpczo6CitCeSBkZWZhdWx0LCBweXRlc3Qgd2lsbCBjb2xsZWN0IGBgdGVz
dCoudHh0YGAgZmlsZXMgbG9va2luZyBmb3IgZG9jdGVzdCBkaXJlY3RpdmVzLCBidXQgeW91Citj
YW4gcGFzcyBhZGRpdGlvbmFsIGdsb2JzIHVzaW5nIHRoZSBgYC0tZG9jdGVzdC1nbG9iYGAgb3B0
aW9uIChtdWx0aS1hbGxvd2VkKS4KIAotICAgICMgY29udGVudCBvZiBleGFtcGxlLnJzdAotCi0g
ICAgaGVsbG8gdGhpcyBpcyBhIGRvY3Rlc3QKLSAgICA+Pj4geCA9IDMKLSAgICA+Pj4geAotICAg
IDMKK0luIGFkZGl0aW9uIHRvIHRleHQgZmlsZXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIGRvY3Rl
c3RzIGRpcmVjdGx5IGZyb20gZG9jc3RyaW5ncyBvZiB5b3VyIGNsYXNzZXMKK2FuZCBmdW5jdGlv
bnMsIGluY2x1ZGluZyBmcm9tIHRlc3QgbW9kdWxlczoKIAotYW5kIGFub3RoZXIgbGlrZSB0aGlz
OjoKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBteW1vZHVsZS5w
eQogICAgIGRlZiBzb21ldGhpbmcoKToKQEAgLTU4LDMxICs1NCw2MCBAQCBhbmQgYW5vdGhlciBs
aWtlIHRoaXM6OgogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIDQyCiAKLXRoZW4geW91IGNh
biBqdXN0IGludm9rZSBgYHB5dGVzdGBgIHdpdGhvdXQgY29tbWFuZCBsaW5lIG9wdGlvbnM6Ogor
Li4gY29kZS1ibG9jazo6IGJhc2gKIAotICAgICQgcHl0ZXN0CisgICAgJCBweXRlc3QgLS1kb2N0
ZXN0LW1vZHVsZXMKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9u
IHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXgg
LS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAg
ICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOiBweXRlc3QuaW5pCi0gICAgY29s
bGVjdGVkIDEgaXRlbQorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJF
RklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29s
bGVjdGVkIDIgaXRlbXMKIAotICAgIG15bW9kdWxlLnB5IC4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQorICAgIG15bW9kdWxlLnB5
IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsgNTAlXQorICAgIHRlc3RfZXhhbXBsZS50eHQgLiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09PT09PT09PT09
PT09PT09PSAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09
PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQgaW4gMC4xMnMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotSXQgaXMgcG9zc2libGUgdG8gdXNlIGZpeHR1
cmVzIHVzaW5nIHRoZSBgYGdldGZpeHR1cmVgYCBoZWxwZXI6OgorWW91IGNhbiBtYWtlIHRoZXNl
IGNoYW5nZXMgcGVybWFuZW50IGluIHlvdXIgcHJvamVjdCBieQorcHV0dGluZyB0aGVtIGludG8g
YSBweXRlc3QuaW5pIGZpbGUgbGlrZSB0aGlzOgogCi0gICAgIyBjb250ZW50IG9mIGV4YW1wbGUu
cnN0Ci0gICAgPj4+IHRtcCA9IGdldGZpeHR1cmUoJ3RtcGRpcicpCi0gICAgPj4+IC4uLgotICAg
ID4+PgorLi4gY29kZS1ibG9jazo6IGluaQogCi1BbHNvLCA6cmVmOmB1c2VmaXh0dXJlc2AgYW5k
IDpyZWY6YGF1dG91c2VgIGZpeHR1cmVzIGFyZSBzdXBwb3J0ZWQKLXdoZW4gZXhlY3V0aW5nIHRl
eHQgZG9jdGVzdCBmaWxlcy4KKyAgICAjIGNvbnRlbnQgb2YgcHl0ZXN0LmluaQorICAgIFtweXRl
c3RdCisgICAgYWRkb3B0cyA9IC0tZG9jdGVzdC1tb2R1bGVzCiAKLVRoZSBzdGFuZGFyZCBgYGRv
Y3Rlc3RgYCBtb2R1bGUgcHJvdmlkZXMgc29tZSBzZXR0aW5nIGZsYWdzIHRvIGNvbmZpZ3VyZSB0
aGUKLXN0cmljdG5lc3Mgb2YgZG9jdGVzdCB0ZXN0cy4gSW4gcHl0ZXN0LCB5b3UgY2FuIGVuYWJs
ZSB0aG9zZSBmbGFncyB1c2luZyB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZS4gVG8gbWFrZSBweXRl
c3QgaWdub3JlIHRyYWlsaW5nIHdoaXRlc3BhY2VzIGFuZCBpZ25vcmUKKy4uIG5vdGU6OgorCisg
ICAgVGhlIGJ1aWx0aW4gcHl0ZXN0IGRvY3Rlc3Qgc3VwcG9ydHMgb25seSBgYGRvY3Rlc3RgYCBi
bG9ja3MsIGJ1dCBpZiB5b3UgYXJlIGxvb2tpbmcKKyAgICBmb3IgbW9yZSBhZHZhbmNlZCBjaGVj
a2luZyBvdmVyICphbGwqIHlvdXIgZG9jdW1lbnRhdGlvbiwKKyAgICBpbmNsdWRpbmcgZG9jdGVz
dHMsIGBgLi4gY29kZWJsb2NrOjogcHl0aG9uYGAgU3BoaW54IGRpcmVjdGl2ZSBzdXBwb3J0LAor
ICAgIGFuZCBhbnkgb3RoZXIgZXhhbXBsZXMgeW91ciBkb2N1bWVudGF0aW9uIG1heSBpbmNsdWRl
LCB5b3UgbWF5IHdpc2ggdG8KKyAgICBjb25zaWRlciBgU3liaWwgPGh0dHBzOi8vc3liaWwucmVh
ZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2luZGV4Lmh0bWw+YF9fLgorICAgIEl0IHByb3ZpZGVzIHB5
dGVzdCBpbnRlZ3JhdGlvbiBvdXQgb2YgdGhlIGJveC4KKworCitFbmNvZGluZworLS0tLS0tLS0K
KworVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgKipVVEYtOCoqLCBidXQgeW91IGNhbiBzcGVjaWZ5
IHRoZSBlbmNvZGluZwordGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRob3NlIGRvY3Rlc3QgZmlsZXMg
dXNpbmcgdGhlCitgYGRvY3Rlc3RfZW5jb2RpbmdgYCBpbmkgb3B0aW9uOgorCisuLiBjb2RlLWJs
b2NrOjogaW5pCisKKyAgICAjIGNvbnRlbnQgb2YgcHl0ZXN0LmluaQorICAgIFtweXRlc3RdCisg
ICAgZG9jdGVzdF9lbmNvZGluZyA9IGxhdGluMQorCitVc2luZyAnZG9jdGVzdCcgb3B0aW9ucwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0aG9uJ3Mgc3RhbmRhcmQgYGBkb2N0ZXN0YGAg
bW9kdWxlIHByb3ZpZGVzIHNvbWUgYG9wdGlvbnMgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMv
bGlicmFyeS9kb2N0ZXN0Lmh0bWwjb3B0aW9uLWZsYWdzPmBfXwordG8gY29uZmlndXJlIHRoZSBz
dHJpY3RuZXNzIG9mIGRvY3Rlc3QgdGVzdHMuIEluIHB5dGVzdCwgeW91IGNhbiBlbmFibGUgdGhv
c2UgZmxhZ3MgdXNpbmcgdGhlCitjb25maWd1cmF0aW9uIGZpbGUuCisKK0ZvciBleGFtcGxlLCB0
byBtYWtlIHB5dGVzdCBpZ25vcmUgdHJhaWxpbmcgd2hpdGVzcGFjZXMgYW5kIGlnbm9yZQogbGVu
Z3RoeSBleGNlcHRpb24gc3RhY2sgdHJhY2VzIHlvdSBjYW4ganVzdCB3cml0ZToKIAogLi4gY29k
ZS1ibG9jazo6IGluaQpAQCAtOTAsNTggKzExNSwxMzAgQEAgbGVuZ3RoeSBleGNlcHRpb24gc3Rh
Y2sgdHJhY2VzIHlvdSBjYW4ganVzdCB3cml0ZToKICAgICBbcHl0ZXN0XQogICAgIGRvY3Rlc3Rf
b3B0aW9uZmxhZ3M9IE5PUk1BTElaRV9XSElURVNQQUNFIElHTk9SRV9FWENFUFRJT05fREVUQUlM
CiAKLXB5dGVzdCBhbHNvIGludHJvZHVjZXMgbmV3IG9wdGlvbnMgdG8gYWxsb3cgZG9jdGVzdHMg
dG8gcnVuIGluIFB5dGhvbiAyIGFuZAotUHl0aG9uIDMgdW5jaGFuZ2VkOgorQWx0ZXJuYXRpdmVs
eSwgb3B0aW9ucyBjYW4gYmUgZW5hYmxlZCBieSBhbiBpbmxpbmUgY29tbWVudCBpbiB0aGUgZG9j
IHRlc3QKK2l0c2VsZjoKKworLi4gY29kZS1ibG9jazo6IHJzdAorCisgICAgPj4+IHNvbWV0aGlu
Z190aGF0X3JhaXNlcygpICAjIGRvY3Rlc3Q6ICtJR05PUkVfRVhDRVBUSU9OX0RFVEFJTAorICAg
IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICBWYWx1ZUVycm9yOiAuLi4K
KworcHl0ZXN0IGFsc28gaW50cm9kdWNlcyBuZXcgb3B0aW9uczoKIAogKiBgYEFMTE9XX1VOSUNP
REVgYDogd2hlbiBlbmFibGVkLCB0aGUgYGB1YGAgcHJlZml4IGlzIHN0cmlwcGVkIGZyb20gdW5p
Y29kZQotICBzdHJpbmdzIGluIGV4cGVjdGVkIGRvY3Rlc3Qgb3V0cHV0LgorICBzdHJpbmdzIGlu
IGV4cGVjdGVkIGRvY3Rlc3Qgb3V0cHV0LiBUaGlzIGFsbG93cyBkb2N0ZXN0cyB0byBydW4gaW4g
UHl0aG9uIDIKKyAgYW5kIFB5dGhvbiAzIHVuY2hhbmdlZC4KIAotKiBgYEFMTE9XX0JZVEVTYGA6
IHdoZW4gZW5hYmxlZCwgdGhlIGBgYmBgIHByZWZpeCBpcyBzdHJpcHBlZCBmcm9tIGJ5dGUgc3Ry
aW5ncworKiBgYEFMTE9XX0JZVEVTYGA6IHNpbWlsYXJseSwgdGhlIGBgYmBgIHByZWZpeCBpcyBz
dHJpcHBlZCBmcm9tIGJ5dGUgc3RyaW5ncwogICBpbiBleHBlY3RlZCBkb2N0ZXN0IG91dHB1dC4K
IAotQXMgd2l0aCBhbnkgb3RoZXIgb3B0aW9uIGZsYWcsIHRoZXNlIGZsYWdzIGNhbiBiZSBlbmFi
bGVkIGluIGBgcHl0ZXN0LmluaWBgIHVzaW5nCi10aGUgYGBkb2N0ZXN0X29wdGlvbmZsYWdzYGAg
aW5pIG9wdGlvbjoKKyogYGBOVU1CRVJgYDogd2hlbiBlbmFibGVkLCBmbG9hdGluZy1wb2ludCBu
dW1iZXJzIG9ubHkgbmVlZCB0byBtYXRjaCBhcyBmYXIgYXMKKyAgdGhlIHByZWNpc2lvbiB5b3Ug
aGF2ZSB3cml0dGVuIGluIHRoZSBleHBlY3RlZCBkb2N0ZXN0IG91dHB1dC4gRm9yIGV4YW1wbGUs
CisgIHRoZSBmb2xsb3dpbmcgb3V0cHV0IHdvdWxkIG9ubHkgbmVlZCB0byBtYXRjaCB0byAyIGRl
Y2ltYWwgcGxhY2VzOjoKIAotLi4gY29kZS1ibG9jazo6IGluaQorICAgICAgPj4+IG1hdGgucGkK
KyAgICAgIDMuMTQKIAotICAgIFtweXRlc3RdCi0gICAgZG9jdGVzdF9vcHRpb25mbGFncyA9IEFM
TE9XX1VOSUNPREUgQUxMT1dfQllURVMKKyAgSWYgeW91IHdyb3RlIGBgMy4xNDE2YGAgdGhlbiB0
aGUgYWN0dWFsIG91dHB1dCB3b3VsZCBuZWVkIHRvIG1hdGNoIHRvIDQKKyAgZGVjaW1hbCBwbGFj
ZXM7IGFuZCBzbyBvbi4KIAorICBUaGlzIGF2b2lkcyBmYWxzZSBwb3NpdGl2ZXMgY2F1c2VkIGJ5
IGxpbWl0ZWQgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uLCBsaWtlCisgIHRoaXM6OgogCi1BbHRl
cm5hdGl2ZWx5LCBpdCBjYW4gYmUgZW5hYmxlZCBieSBhbiBpbmxpbmUgY29tbWVudCBpbiB0aGUg
ZG9jIHRlc3QKLWl0c2VsZjo6CisgICAgICBFeHBlY3RlZDoKKyAgICAgICAgICAwLjIzMworICAg
ICAgR290OgorICAgICAgICAgIDAuMjMzMDAwMDAwMDAwMDAwMDEKIAotICAgICMgY29udGVudCBv
ZiBleGFtcGxlLnJzdAotICAgID4+PiBnZXRfdW5pY29kZV9ncmVldGluZygpICAjIGRvY3Rlc3Q6
ICtBTExPV19VTklDT0RFCi0gICAgJ0hlbGxvJworICBgYE5VTUJFUmBgIGFsc28gc3VwcG9ydHMg
bGlzdHMgb2YgZmxvYXRpbmctcG9pbnQgbnVtYmVycyAtLSBpbiBmYWN0LCBpdAorICBtYXRjaGVz
IGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXBwZWFyaW5nIGFueXdoZXJlIGluIHRoZSBvdXRwdXQs
IGV2ZW4gaW5zaWRlCisgIGEgc3RyaW5nISBUaGlzIG1lYW5zIHRoYXQgaXQgbWF5IG5vdCBiZSBh
cHByb3ByaWF0ZSB0byBlbmFibGUgZ2xvYmFsbHkgaW4KKyAgYGBkb2N0ZXN0X29wdGlvbmZsYWdz
YGAgaW4geW91ciBjb25maWd1cmF0aW9uIGZpbGUuCiAKLUJ5IGRlZmF1bHQsIHB5dGVzdCB3b3Vs
ZCByZXBvcnQgb25seSB0aGUgZmlyc3QgZmFpbHVyZSBmb3IgYSBnaXZlbiBkb2N0ZXN0LiAgSWYK
LXlvdSB3YW50IHRvIGNvbnRpbnVlIHRoZSB0ZXN0IGV2ZW4gd2hlbiB5b3UgaGF2ZSBmYWlsdXJl
cywgZG86OgorICAuLiB2ZXJzaW9uYWRkZWQ6OiA1LjEKKworCitDb250aW51ZSBvbiBmYWlsdXJl
CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0J5IGRlZmF1bHQsIHB5dGVzdCB3b3VsZCByZXBvcnQg
b25seSB0aGUgZmlyc3QgZmFpbHVyZSBmb3IgYSBnaXZlbiBkb2N0ZXN0LiBJZgoreW91IHdhbnQg
dG8gY29udGludWUgdGhlIHRlc3QgZXZlbiB3aGVuIHlvdSBoYXZlIGZhaWx1cmVzLCBkbzoKKwor
Li4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcyAtLWRv
Y3Rlc3QtY29udGludWUtb24tZmFpbHVyZQogCiAKLS4uIF9gZG9jdGVzdF9uYW1lc3BhY2VgOgor
T3V0cHV0IGZvcm1hdAorLS0tLS0tLS0tLS0tLQogCi1UaGUgJ2RvY3Rlc3RfbmFtZXNwYWNlJyBm
aXh0dXJlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitZb3UgY2FuIGNoYW5nZSB0
aGUgZGlmZiBvdXRwdXQgZm9ybWF0IG9uIGZhaWx1cmUgZm9yIHlvdXIgZG9jdGVzdHMKK2J5IHVz
aW5nIG9uZSBvZiBzdGFuZGFyZCBkb2N0ZXN0IG1vZHVsZXMgZm9ybWF0IGluIG9wdGlvbnMKKyhz
ZWUgOmRhdGE6YHB5dGhvbjpkb2N0ZXN0LlJFUE9SVF9VRElGRmAsIDpkYXRhOmBweXRob246ZG9j
dGVzdC5SRVBPUlRfQ0RJRkZgLAorOmRhdGE6YHB5dGhvbjpkb2N0ZXN0LlJFUE9SVF9ORElGRmAs
IDpkYXRhOmBweXRob246ZG9jdGVzdC5SRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFYCk6CiAKLS4u
IHZlcnNpb25hZGRlZDo6IDMuMAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgIHB5dGVzdCAt
LWRvY3Rlc3QtbW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IG5vbmUKKyAgICBweXRlc3QgLS1kb2N0
ZXN0LW1vZHVsZXMgLS1kb2N0ZXN0LXJlcG9ydCB1ZGlmZgorICAgIHB5dGVzdCAtLWRvY3Rlc3Qt
bW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IGNkaWZmCisgICAgcHl0ZXN0IC0tZG9jdGVzdC1tb2R1
bGVzIC0tZG9jdGVzdC1yZXBvcnQgbmRpZmYKKyAgICBweXRlc3QgLS1kb2N0ZXN0LW1vZHVsZXMg
LS1kb2N0ZXN0LXJlcG9ydCBvbmx5X2ZpcnN0X2ZhaWx1cmUKKworCitweXRlc3Qtc3BlY2lmaWMg
ZmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIGZlYXR1cmVzIGFyZSBw
cm92aWRlZCB0byBtYWtlIHdyaXRpbmcgZG9jdGVzdHMgZWFzaWVyIG9yIHdpdGggYmV0dGVyIGlu
dGVncmF0aW9uIHdpdGgKK3lvdXIgZXhpc3RpbmcgdGVzdCBzdWl0ZS4gS2VlcCBpbiBtaW5kIGhv
d2V2ZXIgdGhhdCBieSB1c2luZyB0aG9zZSBmZWF0dXJlcyB5b3Ugd2lsbCBtYWtlCit5b3VyIGRv
Y3Rlc3RzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBzdGFuZGFyZCBgYGRvY3Rlc3RzYGAgbW9kdWxl
LgorCitVc2luZyBmaXh0dXJlcworXl5eXl5eXl5eXl5eXl4KKworSXQgaXMgcG9zc2libGUgdG8g
dXNlIGZpeHR1cmVzIHVzaW5nIHRoZSBgYGdldGZpeHR1cmVgYCBoZWxwZXI6CisKKy4uIGNvZGUt
YmxvY2s6OiB0ZXh0CisKKyAgICAjIGNvbnRlbnQgb2YgZXhhbXBsZS5yc3QKKyAgICA+Pj4gdG1w
ID0gZ2V0Zml4dHVyZSgndG1wZGlyJykKKyAgICA+Pj4gLi4uCisgICAgPj4+CisKK05vdGUgdGhh
dCB0aGUgZml4dHVyZSBuZWVkcyB0byBiZSBkZWZpbmVkIGluIGEgcGxhY2UgdmlzaWJsZSBieSBw
eXRlc3QsIGZvciBleGFtcGxlIGEgYGNvbmZ0ZXN0LnB5YAorZmlsZSBvciBwbHVnaW47IG5vcm1h
bCBweXRob24gZmlsZXMgY29udGFpbmluZyBkb2NzdHJpbmdzIGFyZSBub3Qgbm9ybWFsbHkgc2Nh
bm5lZCBmb3IgZml4dHVyZXMKK3VubGVzcyBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgYnkgOmNvbmZ2
YWw6YHB5dGhvbl9maWxlc2AuCisKK0Fsc28sIHRoZSA6cmVmOmB1c2VmaXh0dXJlcyA8dXNlZml4
dHVyZXM+YCBtYXJrIGFuZCBmaXh0dXJlcyBtYXJrZWQgYXMgOnJlZjpgYXV0b3VzZSA8YXV0b3Vz
ZT5gIGFyZSBzdXBwb3J0ZWQKK3doZW4gZXhlY3V0aW5nIHRleHQgZG9jdGVzdCBmaWxlcy4KKwor
CisuLiBfYGRvY3Rlc3RfbmFtZXNwYWNlYDoKKworJ2RvY3Rlc3RfbmFtZXNwYWNlJyBmaXh0dXJl
CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAogVGhlIGBgZG9jdGVzdF9uYW1lc3BhY2Vg
YCBmaXh0dXJlIGNhbiBiZSB1c2VkIHRvIGluamVjdCBpdGVtcyBpbnRvIHRoZQogbmFtZXNwYWNl
IGluIHdoaWNoIHlvdXIgZG9jdGVzdHMgcnVuLiBJdCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHdp
dGhpbgogeW91ciBvd24gZml4dHVyZXMgdG8gcHJvdmlkZSB0aGUgdGVzdHMgdGhhdCB1c2UgdGhl
bSB3aXRoIGNvbnRleHQuCiAKIGBgZG9jdGVzdF9uYW1lc3BhY2VgYCBpcyBhIHN0YW5kYXJkIGBg
ZGljdGBgIG9iamVjdCBpbnRvIHdoaWNoIHlvdQotcGxhY2UgdGhlIG9iamVjdHMgeW91IHdhbnQg
dG8gYXBwZWFyIGluIHRoZSBkb2N0ZXN0IG5hbWVzcGFjZTo6CitwbGFjZSB0aGUgb2JqZWN0cyB5
b3Ugd2FudCB0byBhcHBlYXIgaW4gdGhlIGRvY3Rlc3QgbmFtZXNwYWNlOgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKICAgICBpbXBvcnQg
bnVtcHkKKworCiAgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSkKICAgICBkZWYgYWRk
X25wKGRvY3Rlc3RfbmFtZXNwYWNlKToKLSAgICAgICAgZG9jdGVzdF9uYW1lc3BhY2VbJ25wJ10g
PSBudW1weQorICAgICAgICBkb2N0ZXN0X25hbWVzcGFjZVsibnAiXSA9IG51bXB5CiAKLXdoaWNo
IGNhbiB0aGVuIGJlIHVzZWQgaW4geW91ciBkb2N0ZXN0cyBkaXJlY3RseTo6Cit3aGljaCBjYW4g
dGhlbiBiZSB1c2VkIGluIHlvdXIgZG9jdGVzdHMgZGlyZWN0bHk6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBudW1weS5weQogICAgIGRlZiBhcmFuZ2UoKToK
QEAgLTE1MiwxOSArMjQ5LDIwIEBAIHdoaWNoIGNhbiB0aGVuIGJlIHVzZWQgaW4geW91ciBkb2N0
ZXN0cyBkaXJlY3RseTo6CiAgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKK05vdGUgdGhhdCBs
aWtlIHRoZSBub3JtYWwgYGBjb25mdGVzdC5weWBgLCB0aGUgZml4dHVyZXMgYXJlIGRpc2NvdmVy
ZWQgaW4gdGhlIGRpcmVjdG9yeSB0cmVlIGNvbmZ0ZXN0IGlzIGluLgorTWVhbmluZyB0aGF0IGlm
IHlvdSBwdXQgeW91ciBkb2N0ZXN0IHdpdGggeW91ciBzb3VyY2UgY29kZSwgdGhlIHJlbGV2YW50
IGNvbmZ0ZXN0LnB5IG5lZWRzIHRvIGJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB0cmVlLgorRml4
dHVyZXMgd2lsbCBub3QgYmUgZGlzY292ZXJlZCBpbiBhIHNpYmxpbmcgZGlyZWN0b3J5IHRyZWUh
CiAKLU91dHB1dCBmb3JtYXQKLS0tLS0tLS0tLS0tLS0KK1NraXBwaW5nIHRlc3RzIGR5bmFtaWNh
bGx5CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjAK
Ky4uIHZlcnNpb25hZGRlZDo6IDQuNAogCi1Zb3UgY2FuIGNoYW5nZSB0aGUgZGlmZiBvdXRwdXQg
Zm9ybWF0IG9uIGZhaWx1cmUgZm9yIHlvdXIgZG9jdGVzdHMKLWJ5IHVzaW5nIG9uZSBvZiBzdGFu
ZGFyZCBkb2N0ZXN0IG1vZHVsZXMgZm9ybWF0IGluIG9wdGlvbnMKLShzZWUgOmRhdGE6YHB5dGhv
bjpkb2N0ZXN0LlJFUE9SVF9VRElGRmAsIDpkYXRhOmBweXRob246ZG9jdGVzdC5SRVBPUlRfQ0RJ
RkZgLAotOmRhdGE6YHB5dGhvbjpkb2N0ZXN0LlJFUE9SVF9ORElGRmAsIDpkYXRhOmBweXRob246
ZG9jdGVzdC5SRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFYCk6OgorWW91IGNhbiB1c2UgYGBweXRl
c3Quc2tpcGBgIHRvIGR5bmFtaWNhbGx5IHNraXAgZG9jdGVzdHMuIEZvciBleGFtcGxlOgogCi0g
ICAgcHl0ZXN0IC0tZG9jdGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1yZXBvcnQgbm9uZQotICAgIHB5
dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IHVkaWZmCi0gICAgcHl0ZXN0
IC0tZG9jdGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1yZXBvcnQgY2RpZmYKLSAgICBweXRlc3QgLS1k
b2N0ZXN0LW1vZHVsZXMgLS1kb2N0ZXN0LXJlcG9ydCBuZGlmZgotICAgIHB5dGVzdCAtLWRvY3Rl
c3QtbW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IG9ubHlfZmlyc3RfZmFpbHVyZQorLi4gY29kZS1i
bG9jazo6IHRleHQKKworICAgID4+PiBpbXBvcnQgc3lzLCBweXRlc3QKKyAgICA+Pj4gaWYgc3lz
LnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgIC4uLiAgICAgcHl0ZXN0LnNraXAoJ3Ro
aXMgZG9jdGVzdCBkb2VzIG5vdCB3b3JrIG9uIFdpbmRvd3MnKQorICAgIC4uLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2ZhaWx1cmVfZGVtby5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi9mYWlsdXJlX2RlbW8ucHkKaW5k
ZXggZGMyN2Y1ZGZiYzEyLi5hMTcyYTAwN2U4YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL2Fzc2VydGlvbi9mYWlsdXJlX2RlbW8ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2ZhaWx1cmVfZGVtby5weQpAQCAtMSw2ICsxLDUgQEAK
K2ltcG9ydCBweXRlc3QKIGZyb20gcHl0ZXN0IGltcG9ydCByYWlzZXMKLWltcG9ydCBfcHl0ZXN0
Ll9jb2RlCi1pbXBvcnQgcHkKIAogCiBkZWYgb3RoZXJmdW5jKGEsIGIpOgpAQCAtMTUsMTkgKzE0
LDEzIEBAIGRlZiBvdGhlcmZ1bmNfbXVsdGkoYSwgYik6CiAgICAgYXNzZXJ0IGEgPT0gYgogCiAK
K0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGFyYW0xLCBwYXJhbTIiLCBbKDMsIDYpXSkKIGRl
ZiB0ZXN0X2dlbmVyYXRpdmUocGFyYW0xLCBwYXJhbTIpOgogICAgIGFzc2VydCBwYXJhbTEgKiAy
IDwgcGFyYW0yCiAKIAotZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAg
aWYgInBhcmFtMSIgaW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzOgotICAgICAgICBtZXRhZnVuYy5h
ZGRjYWxsKGZ1bmNhcmdzPWRpY3QocGFyYW0xPTMsIHBhcmFtMj02KSkKLQotCi1jbGFzcyBUZXN0
RmFpbGluZyhvYmplY3QpOgotCitjbGFzcyBUZXN0RmFpbGluZzoKICAgICBkZWYgdGVzdF9zaW1w
bGUoc2VsZik6Ci0KICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHJldHVybiA0MgogCkBA
IC00MCwxNSArMzMsMTMgQEAgY2xhc3MgVGVzdEZhaWxpbmcob2JqZWN0KToKICAgICAgICAgb3Ro
ZXJmdW5jX211bHRpKDQyLCA2ICogOSkKIAogICAgIGRlZiB0ZXN0X25vdChzZWxmKToKLQogICAg
ICAgICBkZWYgZigpOgogICAgICAgICAgICAgcmV0dXJuIDQyCiAKICAgICAgICAgYXNzZXJ0IG5v
dCBmKCkKIAogCi1jbGFzcyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMob2JqZWN0KToKLQor
Y2xhc3MgVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOgogICAgIGRlZiB0ZXN0X2VxX3RleHQo
c2VsZik6CiAgICAgICAgIGFzc2VydCAic3BhbSIgPT0gImVnZ3MiCiAKQEAgLTEwNCwxMCArOTUs
MzMgQEAgY2xhc3MgVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zKG9iamVjdCk6CiAgICAgICAg
IHRleHQgPSAiaGVhZCAiICogNTAgKyAiZiIgKiA3MCArICJ0YWlsICIgKiAyMAogICAgICAgICBh
c3NlcnQgImYiICogNzAgbm90IGluIHRleHQKIAorICAgIGRlZiB0ZXN0X2VxX2RhdGFjbGFzcyhz
ZWxmKToKKyAgICAgICAgZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCiAKLWRlZiB0
ZXN0X2F0dHJpYnV0ZSgpOgorICAgICAgICBAZGF0YWNsYXNzCisgICAgICAgIGNsYXNzIEZvbzoK
KyAgICAgICAgICAgIGE6IGludAorICAgICAgICAgICAgYjogc3RyCiAKLSAgICBjbGFzcyBGb28o
b2JqZWN0KToKKyAgICAgICAgbGVmdCA9IEZvbygxLCAiYiIpCisgICAgICAgIHJpZ2h0ID0gRm9v
KDEsICJjIikKKyAgICAgICAgYXNzZXJ0IGxlZnQgPT0gcmlnaHQKKworICAgIGRlZiB0ZXN0X2Vx
X2F0dHJzKHNlbGYpOgorICAgICAgICBpbXBvcnQgYXR0cgorCisgICAgICAgIEBhdHRyLnMKKyAg
ICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgYSA9IGF0dHIuaWIoKQorICAgICAgICAgICAg
YiA9IGF0dHIuaWIoKQorCisgICAgICAgIGxlZnQgPSBGb28oMSwgImIiKQorICAgICAgICByaWdo
dCA9IEZvbygxLCAiYyIpCisgICAgICAgIGFzc2VydCBsZWZ0ID09IHJpZ2h0CisKKworZGVmIHRl
c3RfYXR0cmlidXRlKCk6CisgICAgY2xhc3MgRm9vOgogICAgICAgICBiID0gMQogCiAgICAgaSA9
IEZvbygpCkBAIC0xMTUsMTcgKzEyOSwxNCBAQCBkZWYgdGVzdF9hdHRyaWJ1dGUoKToKIAogCiBk
ZWYgdGVzdF9hdHRyaWJ1dGVfaW5zdGFuY2UoKToKLQotICAgIGNsYXNzIEZvbyhvYmplY3QpOgor
ICAgIGNsYXNzIEZvbzoKICAgICAgICAgYiA9IDEKIAogICAgIGFzc2VydCBGb28oKS5iID09IDIK
IAogCiBkZWYgdGVzdF9hdHRyaWJ1dGVfZmFpbHVyZSgpOgotCi0gICAgY2xhc3MgRm9vKG9iamVj
dCk6Ci0KKyAgICBjbGFzcyBGb286CiAgICAgICAgIGRlZiBfZ2V0X2Ioc2VsZik6CiAgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byBnZXQgYXR0cmliIikKIApAQCAtMTM2LDEx
ICsxNDcsMTAgQEAgZGVmIHRlc3RfYXR0cmlidXRlX2ZhaWx1cmUoKToKIAogCiBkZWYgdGVzdF9h
dHRyaWJ1dGVfbXVsdGlwbGUoKToKLQotICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgIGNsYXNz
IEZvbzoKICAgICAgICAgYiA9IDEKIAotICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgIGNsYXNz
IEJhcjoKICAgICAgICAgYiA9IDIKIAogICAgIGFzc2VydCBGb28oKS5iID09IEJhcigpLmIKQEAg
LTE1MCwxNCArMTYwLDEzIEBAIGRlZiBnbG9iZih4KToKICAgICByZXR1cm4geCArIDEKIAogCi1j
bGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RSYWlzZXM6CiAgICAgZGVmIHRl
c3RfcmFpc2VzKHNlbGYpOgotICAgICAgICBzID0gInF3ZSIgICMgTk9RQQotICAgICAgICByYWlz
ZXMoVHlwZUVycm9yLCAiaW50KHMpIikKKyAgICAgICAgcyA9ICJxd2UiCisgICAgICAgIHJhaXNl
cyhUeXBlRXJyb3IsIGludCwgcykKIAogICAgIGRlZiB0ZXN0X3JhaXNlc19kb2VzbnQoc2VsZik6
Ci0gICAgICAgIHJhaXNlcyhJT0Vycm9yLCAiaW50KCczJykiKQorICAgICAgICByYWlzZXMoT1NF
cnJvciwgaW50LCAiMyIpCiAKICAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiZGVtbyBlcnJvciIpCkBAIC0xNjcsNyArMTc2LDcgQEAgY2xhc3MgVGVz
dFJhaXNlcyhvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfcmVpbnRlcnByZXRfZmFpbHNfd2l0aF9w
cmludF9mb3JfdGhlX2Z1bl9vZl9pdChzZWxmKToKICAgICAgICAgaXRlbXMgPSBbMSwgMiwgM10K
LSAgICAgICAgcHJpbnQoIml0ZW1zIGlzICVyIiAlIGl0ZW1zKQorICAgICAgICBwcmludCgiaXRl
bXMgaXMgeyFyfSIuZm9ybWF0KGl0ZW1zKSkKICAgICAgICAgYSwgYiA9IGl0ZW1zLnBvcCgpCiAK
ICAgICBkZWYgdGVzdF9zb21lX2Vycm9yKHNlbGYpOgpAQCAtMTgwLDIyICsxODksMjEgQEAgY2xh
c3MgVGVzdFJhaXNlcyhvYmplY3QpOgogCiAjIHRoYW5rcyB0byBNYXR0aGV3IFNjb3R0IGZvciB0
aGlzIHRlc3QKIGRlZiB0ZXN0X2R5bmFtaWNfY29tcGlsZV9zaG93c19uaWNlbHkoKToKLSAgICBp
bXBvcnQgaW1wCisgICAgaW1wb3J0IGltcG9ydGxpYi51dGlsCiAgICAgaW1wb3J0IHN5cwogCiAg
ICAgc3JjID0gImRlZiBmb28oKTpcbiBhc3NlcnQgMSA9PSAwXG4iCiAgICAgbmFtZSA9ICJhYmMt
MTIzIgotICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgY29kZSA9IF9weXRl
c3QuX2NvZGUuY29tcGlsZShzcmMsIG5hbWUsICJleGVjIikKLSAgICBweS5idWlsdGluLmV4ZWNf
KGNvZGUsIG1vZHVsZS5fX2RpY3RfXykKKyAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19m
cm9tX2xvYWRlcihuYW1lLCBsb2FkZXI9Tm9uZSkKKyAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRp
bC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgY29kZSA9IGNvbXBpbGUoc3JjLCBuYW1lLCAi
ZXhlYyIpCisgICAgZXhlYyhjb2RlLCBtb2R1bGUuX19kaWN0X18pCiAgICAgc3lzLm1vZHVsZXNb
bmFtZV0gPSBtb2R1bGUKICAgICBtb2R1bGUuZm9vKCkKIAogCi1jbGFzcyBUZXN0TW9yZUVycm9y
cyhvYmplY3QpOgotCitjbGFzcyBUZXN0TW9yZUVycm9yczoKICAgICBkZWYgdGVzdF9jb21wbGV4
X2Vycm9yKHNlbGYpOgotCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gNDQK
IApAQCAtMjE4LDcgKzIyNiw2IEBAIGNsYXNzIFRlc3RNb3JlRXJyb3JzKG9iamVjdCk6CiAgICAg
ICAgIGFzc2VydCBzLnN0YXJ0c3dpdGgoZykKIAogICAgIGRlZiB0ZXN0X3N0YXJ0c3dpdGhfbmVz
dGVkKHNlbGYpOgotCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gIjEyMyIK
IApAQCAtMjQ1LDI5ICsyNTIsMjUgQEAgY2xhc3MgVGVzdE1vcmVFcnJvcnMob2JqZWN0KToKICAg
ICAgICAgICAgIHggPSAwCiAKIAotY2xhc3MgVGVzdEN1c3RvbUFzc2VydE1zZyhvYmplY3QpOgot
CitjbGFzcyBUZXN0Q3VzdG9tQXNzZXJ0TXNnOgogICAgIGRlZiB0ZXN0X3NpbmdsZV9saW5lKHNl
bGYpOgotCi0gICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgY2xhc3MgQToKICAgICAg
ICAgICAgIGEgPSAxCiAKICAgICAgICAgYiA9IDIKICAgICAgICAgYXNzZXJ0IEEuYSA9PSBiLCAi
QS5hIGFwcGVhcnMgbm90IHRvIGJlIGIiCiAKICAgICBkZWYgdGVzdF9tdWx0aWxpbmUoc2VsZik6
Ci0KLSAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICBjbGFzcyBBOgogICAgICAgICAg
ICAgYSA9IDEKIAogICAgICAgICBiID0gMgogICAgICAgICBhc3NlcnQgKAogICAgICAgICAgICAg
QS5hID09IGIKLSAgICAgICAgKSwgIkEuYSBhcHBlYXJzIG5vdCB0byBiZSBiXG4iICJvciBkb2Vz
IG5vdCBhcHBlYXIgdG8gYmUgYlxub25lIG9mIHRob3NlIgorICAgICAgICApLCAiQS5hIGFwcGVh
cnMgbm90IHRvIGJlIGJcbm9yIGRvZXMgbm90IGFwcGVhciB0byBiZSBiXG5vbmUgb2YgdGhvc2Ui
CiAKICAgICBkZWYgdGVzdF9jdXN0b21fcmVwcihzZWxmKToKLQotICAgICAgICBjbGFzcyBKU09O
KG9iamVjdCk6CisgICAgICAgIGNsYXNzIEpTT046CiAgICAgICAgICAgICBhID0gMQogCiAgICAg
ICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vZXhhbXBsZS9hc3NlcnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL2NvbmZ0ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxl
X2NvbmZpZy9jb25mdGVzdC5weQppbmRleCA0ODU5YmVhNzhlNjguLmZkNDY3ZjA5ZTU5OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0
bW9kdWxlX2NvbmZpZy9jb25mdGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9hc3NlcnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL2NvbmZ0ZXN0LnB5CkBAIC0xLDcg
KzEsOCBAQAoraW1wb3J0IG9zLnBhdGgKKwogaW1wb3J0IHB5dGVzdAotaW1wb3J0IHB5CiAKLW15
ZGlyID0gcHkucGF0aC5sb2NhbChfX2ZpbGVfXykuZGlycGF0aCgpCitteWRpciA9IG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykKIAogCiBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CkBA
IC0xMCw0ICsxMSw0IEBAIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKICAgICAgICAg
ICAgIHJldHVybgogICAgICAgICBtb2QgPSBpdGVtLmdldHBhcmVudChweXRlc3QuTW9kdWxlKS5v
YmoKICAgICAgICAgaWYgaGFzYXR0cihtb2QsICJoZWxsbyIpOgotICAgICAgICAgICAgcHJpbnQo
Im1vZC5oZWxsbyAlciIgJSAobW9kLmhlbGxvLCkpCisgICAgICAgICAgICBwcmludCgibW9kLmhl
bGxvIHshcn0iLmZvcm1hdChtb2QuaGVsbG8pKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxlX2NvbmZpZy90ZXN0X2hlbGxv
X3dvcmxkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90
ZXN0bW9kdWxlX2NvbmZpZy90ZXN0X2hlbGxvX3dvcmxkLnB5CmluZGV4IDgyOGU2YjlmZDdkNy4u
YTMxYTYwMWExY2VhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3Nl
cnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL3Rlc3RfaGVsbG9fd29ybGQucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxlX2Nv
bmZpZy90ZXN0X2hlbGxvX3dvcmxkLnB5CkBAIC0xLDUgKzEsNSBAQAotCiBoZWxsbyA9ICJ3b3Js
ZCIKIAorCiBkZWYgdGVzdF9mdW5jKCk6CiAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxlX2NvbmZpZy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxf
dGVzdG1vZHVsZV9jb25maWcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA0MmIyYjZiYzg2Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVsZV9jb25maWcvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL2NvbmZ0ZXN0
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9k
dWxlX2NvbmZpZy90ZXN0X2hlbGxvX3dvcmxkLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdGVzdF9mYWlsdXJlcy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL2Fzc2VydGlvbi90ZXN0X2ZhaWx1cmVzLnB5CmluZGV4IDExNTBlYzEyZjY2
ZC4uZWRhMDZkZmM1OTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9h
c3NlcnRpb24vdGVzdF9mYWlsdXJlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9hc3NlcnRpb24vdGVzdF9mYWlsdXJlcy5weQpAQCAtMSwxNCArMSwxMyBAQAoraW1wb3J0IG9z
LnBhdGgKK2ltcG9ydCBzaHV0aWwKIAotaW1wb3J0IHB5Ci0KLWZhaWx1cmVfZGVtbyA9IHB5LnBh
dGgubG9jYWwoX19maWxlX18pLmRpcnBhdGgoImZhaWx1cmVfZGVtby5weSIpCi1weXRlc3RfcGx1
Z2lucyA9ICJweXRlc3RlciIsCitmYWlsdXJlX2RlbW8gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgImZhaWx1cmVfZGVtby5weSIpCitweXRlc3RfcGx1Z2lucyA9ICgi
cHl0ZXN0ZXIiLCkKIAogCiBkZWYgdGVzdF9mYWlsdXJlX2RlbW9fZmFpbHNfcHJvcGVybHkodGVz
dGRpcik6Ci0gICAgdGFyZ2V0ID0gdGVzdGRpci50bXBkaXIuam9pbihmYWlsdXJlX2RlbW8uYmFz
ZW5hbWUpCi0gICAgZmFpbHVyZV9kZW1vLmNvcHkodGFyZ2V0KQotICAgIGZhaWx1cmVfZGVtby5j
b3B5KHRlc3RkaXIudG1wZGlyLmpvaW4oZmFpbHVyZV9kZW1vLmJhc2VuYW1lKSkKKyAgICB0YXJn
ZXQgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKG9zLnBhdGguYmFzZW5hbWUoZmFpbHVyZV9kZW1vKSkK
KyAgICBzaHV0aWwuY29weShmYWlsdXJlX2RlbW8sIHRhcmdldCkKICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCh0YXJnZXQsIHN5c3BhdGhpbnNlcnQ9VHJ1ZSkKLSAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqNDIgZmFpbGVkKiJdKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIio0NCBmYWlsZWQqIl0pCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL3Rlc3Rfc2V0
dXBfZmxvd19leGFtcGxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9u
L3Rlc3Rfc2V0dXBfZmxvd19leGFtcGxlLnB5CmluZGV4IGMwMDcxMWRjMjM4MS4uMGU3ZWRlZDA2
YjYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdGVz
dF9zZXR1cF9mbG93X2V4YW1wbGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
YXNzZXJ0aW9uL3Rlc3Rfc2V0dXBfZmxvd19leGFtcGxlLnB5CkBAIC0yLDggKzIsNyBAQCBkZWYg
c2V0dXBfbW9kdWxlKG1vZHVsZSk6CiAgICAgbW9kdWxlLlRlc3RTdGF0ZUZ1bGxUaGluZy5jbGFz
c2NvdW50ID0gMAogCiAKLWNsYXNzIFRlc3RTdGF0ZUZ1bGxUaGluZyhvYmplY3QpOgotCitjbGFz
cyBUZXN0U3RhdGVGdWxsVGhpbmc6CiAgICAgZGVmIHNldHVwX2NsYXNzKGNscyk6CiAgICAgICAg
IGNscy5jbGFzc2NvdW50ICs9IDEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4YzIyYWI5Mzc4ZmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhh
bXBsZS9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vZmFpbHVy
ZV9kZW1vLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL3Rlc3RfZmFp
bHVyZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdGVzdF9zZXR1
cF9mbG93X2V4YW1wbGUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxl
L2F0dGljLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2F0dGljLnJzdAppbmRleCBk
NmZlY2YzNDBiNjIuLjJlYTg3MDA2MjA0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2V4YW1wbGUvYXR0aWMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2F0dGlj
LnJzdApAQCAtMTgsMTYgKzE4LDE2IEBAIGV4YW1wbGU6IHNwZWNpZnlpbmcgYW5kIHNlbGVjdGlu
ZyBhY2NlcHRhbmNlIHRlc3RzCiAgICAgICAgIHJldHVybiBBY2NlcHRGaXh0dXJlKHJlcXVlc3Qp
CiAKIAotICAgIGNsYXNzIEFjY2VwdEZpeHR1cmUob2JqZWN0KToKKyAgICBjbGFzcyBBY2NlcHRG
aXh0dXJlOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgICAg
ICBpZiBub3QgcmVxdWVzdC5jb25maWcuZ2V0b3B0aW9uKCJhY2NlcHRhbmNlIik6CiAgICAgICAg
ICAgICAgICAgcHl0ZXN0LnNraXAoInNwZWNpZnkgLUEgdG8gcnVuIGFjY2VwdGFuY2UgdGVzdHMi
KQogICAgICAgICAgICAgc2VsZi50bXBkaXIgPSByZXF1ZXN0LmNvbmZpZy5ta3RlbXAocmVxdWVz
dC5mdW5jdGlvbi5fX25hbWVfXywgbnVtYmVyZWQ9VHJ1ZSkKIAotICAgICAgICBkZWYgcnVuKHNl
bGYsIGNtZCk6CisgICAgICAgIGRlZiBydW4oc2VsZiwgKmNtZCk6CiAgICAgICAgICAgICAiIiIg
Y2FsbGVkIGJ5IHRlc3QgY29kZSB0byBleGVjdXRlIGFuIGFjY2VwdGFuY2UgdGVzdC4gIiIiCiAg
ICAgICAgICAgICBzZWxmLnRtcGRpci5jaGRpcigpCi0gICAgICAgICAgICByZXR1cm4gcHkucHJv
Y2Vzcy5jbWRleGVjKGNtZCkKKyAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291
dHB1dChjbWQpLmRlY29kZSgpCiAKIAogYW5kIHRoZSBhY3R1YWwgdGVzdCBmdW5jdGlvbiBleGFt
cGxlOgpAQCAtMzYsNyArMzYsNyBAQCBhbmQgdGhlIGFjdHVhbCB0ZXN0IGZ1bmN0aW9uIGV4YW1w
bGU6CiAKICAgICBkZWYgdGVzdF9zb21lX2FjY2VwdGFuY2VfYXNwZWN0KGFjY2VwdCk6CiAgICAg
ICAgIGFjY2VwdC50bXBkaXIubWtkaXIoInNvbWVzdWIiKQotICAgICAgICByZXN1bHQgPSBhY2Nl
cHQucnVuKCJscyAtbGEiKQorICAgICAgICByZXN1bHQgPSBhY2NlcHQucnVuKCJscyIsICItbGEi
KQogICAgICAgICBhc3NlcnQgInNvbWVzdWIiIGluIHJlc3VsdAogCiBJZiB5b3UgcnVuIHRoaXMg
dGVzdCB3aXRob3V0IHNwZWNpZnlpbmcgYSBjb21tYW5kIGxpbmUgb3B0aW9uCkBAIC02NSw3ICs2
NSw3IEBAIGV4dGVuZCB0aGUgYGFjY2VwdCBleGFtcGxlYF8gYnkgcHV0dGluZyB0aGlzIGluIG91
ciB0ZXN0IG1vZHVsZToKICAgICAgICAgcmV0dXJuIGFyZwogCiAKLSAgICBjbGFzcyBUZXN0U3Bl
Y2lhbEFjY2VwdGFuY2Uob2JqZWN0KToKKyAgICBjbGFzcyBUZXN0U3BlY2lhbEFjY2VwdGFuY2U6
CiAgICAgICAgIGRlZiB0ZXN0X3NvbWV0ZXN0KHNlbGYsIGFjY2VwdCk6CiAgICAgICAgICAgICBh
c3NlcnQgYWNjZXB0LnRtcGRpci5qb2luKCJzcGVjaWFsIikuY2hlY2soKQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9jb25mdGVzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL2NvbmZ0ZXN0LnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjZjNjJjMDZhYjguLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9jb25mdGVzdC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDIyICswLDAgQEAKLQotaW1wb3J0IHB5dGVzdAotCi0KLUBweXRlc3QuZml4
dHVyZSgic2Vzc2lvbiIpCi1kZWYgc2V0dXAocmVxdWVzdCk6Ci0gICAgc2V0dXAgPSBDb3N0bHlT
ZXR1cCgpCi0gICAgeWllbGQgc2V0dXAKLSAgICBzZXR1cC5maW5hbGl6ZSgpCi0KLQotY2xhc3Mg
Q29zdGx5U2V0dXAob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
aW1wb3J0IHRpbWUKLQotICAgICAgICBwcmludCgicGVyZm9ybWluZyBjb3N0bHkgc2V0dXAiKQot
ICAgICAgICB0aW1lLnNsZWVwKDUpCi0gICAgICAgIHNlbGYudGltZWNvc3RseSA9IDEKLQotICAg
IGRlZiBmaW5hbGl6ZShzZWxmKToKLSAgICAgICAgZGVsIHNlbGYudGltZWNvc3RseQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMS9fX2luaXRf
Xy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvX19pbml0
X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MmQ2MDA1NDg5ZS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEv
X19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL3Rlc3RfcXVpY2sucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL3Rlc3RfcXVpY2su
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NzY1Nzg2N2UwMi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvdGVz
dF9xdWljay5weQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1kZWYgdGVzdF9xdWlj
ayhzZXR1cCk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvY29zdGx5c2V0dXAvc3ViMS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9l
eGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEzN2Y2NmExOGJhNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9jb3N0bHlzZXR1cC9zdWIxL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvY29zdGx5c2V0dXAvc3ViMS90ZXN0X3F1aWNrLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL19faW5pdF9fLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi9fX2luaXRfXy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzkyZDYwMDU0ODllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi9fX2luaXRfXy5weQorKysg
L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvdGVzdF90d28ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL3Rlc3RfdHdvLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZWQ2ZWU0ZDg5OGYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL3Rlc3RfdHdvLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNiArMCwwIEBACi1kZWYgdGVzdF9zb21ldGhpbmcoc2V0dXApOgotICAgIGFzc2Vy
dCBzZXR1cC50aW1lY29zdGx5ID09IDEKLQotZGVmIHRlc3Rfc29tZXRoaW5nX21vcmUoc2V0dXAp
OgotICAgIGFzc2VydCBzZXR1cC50aW1lY29zdGx5ID09IDEKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNjQyMGVjODNkOC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL19faW5pdF9fLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi90ZXN0X3R3by5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvX19pbml0
X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYS9fX2lu
aXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkyZDYwMDU0ODllLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3Vi
X2EvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYS90ZXN0X3F1aWNr
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvdGVzdF9x
dWljay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhkZGEyNjYwZDI0Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3Vi
X2EvdGVzdF9xdWljay5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVmIHRlc3Rf
cXVpY2soc2V0dXApOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9l
eGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9hL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJhMDU4MTVjZGQwNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9hL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYS90ZXN0X3F1aWNrLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYi9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9iL19faW5pdF9fLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTJkNjAwNTQ4OWUuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYi9fX2lu
aXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9iL3Rlc3RfdHdvLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2IvdGVzdF90d28ucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNjUzYWFhYjg4YS4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9iL3Rlc3RfdHdv
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1kZWYgdGVzdF9zb21ldGhpbmcoc2V0
dXApOgotICAgIGFzc2VydCBzZXR1cC50aW1lY29zdGx5ID09IDEKLQotCi1kZWYgdGVzdF9zb21l
dGhpbmdfbW9yZShzZXR1cCk6Ci0gICAgYXNzZXJ0IHNldHVwLnRpbWVjb3N0bHkgPT0gMQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2IvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJf
Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRhMzk3MDY1
NmZiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5
c2V0dXAvc3ViX2IvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYi9f
X2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9i
L3Rlc3RfdHdvLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0
bHlzZXR1cC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3Rs
eXNldHVwL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzM0
NWY3YzhkNTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9j
b3N0bHlzZXR1cC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL2NvbmZ0ZXN0
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9maXh0dXJlcy90ZXN0
X2ZpeHR1cmVzX29yZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvZml4dHVyZXMv
dGVzdF9maXh0dXJlc19vcmRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjk3YjNlODAwNTJiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9leGFtcGxlL2ZpeHR1cmVzL3Rlc3RfZml4dHVyZXNfb3JkZXIucHkKQEAgLTAsMCArMSwzOCBA
QAoraW1wb3J0IHB5dGVzdAorCisjIGZpeHR1cmVzIGRvY3VtZW50YXRpb24gb3JkZXIgZXhhbXBs
ZQorb3JkZXIgPSBbXQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYg
czEoKToKKyAgICBvcmRlci5hcHBlbmQoInMxIikKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9
Im1vZHVsZSIpCitkZWYgbTEoKToKKyAgICBvcmRlci5hcHBlbmQoIm0xIikKKworCitAcHl0ZXN0
LmZpeHR1cmUKK2RlZiBmMShmMyk6CisgICAgb3JkZXIuYXBwZW5kKCJmMSIpCisKKworQHB5dGVz
dC5maXh0dXJlCitkZWYgZjMoKToKKyAgICBvcmRlci5hcHBlbmQoImYzIikKKworCitAcHl0ZXN0
LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQorZGVmIGExKCk6CisgICAgb3JkZXIuYXBwZW5kKCJhMSIp
CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZjIoKToKKyAgICBvcmRlci5hcHBlbmQoImYyIikK
KworCitkZWYgdGVzdF9vcmRlcihmMSwgbTEsIGYyLCBzMSk6CisgICAgYXNzZXJ0IG9yZGVyID09
IFsiczEiLCAibTEiLCAiYTEiLCAiZjMiLCAiZjEiLCAiZjIiXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2V4YW1wbGUvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvaW5kZXgucnN0CmluZGV4IGY2M2NiODIyYTQxYy4uNjg3NjA4MmQ0MTgxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9pbmRleC5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvaW5kZXgucnN0CkBAIC0xNSw3ICsxNSw3IEBAIEZvciBiYXNpYyBleGFt
cGxlcywgc2VlCiAKIC0gOmRvYzpgLi4vZ2V0dGluZy1zdGFydGVkYCBmb3IgYmFzaWMgaW50cm9k
dWN0b3J5IGV4YW1wbGVzCiAtIDpyZWY6YGFzc2VydGAgZm9yIGJhc2ljIGFzc2VydGlvbiBleGFt
cGxlcwotLSA6cmVmOmBmaXh0dXJlc2AgZm9yIGJhc2ljIGZpeHR1cmUvc2V0dXAgZXhhbXBsZXMK
Ky0gOnJlZjpgRml4dHVyZXMgPGZpeHR1cmVzPmAgZm9yIGJhc2ljIGZpeHR1cmUvc2V0dXAgZXhh
bXBsZXMKIC0gOnJlZjpgcGFyYW1ldHJpemVgIGZvciBiYXNpYyB0ZXN0IGZ1bmN0aW9uIHBhcmFt
ZXRyaXphdGlvbgogLSA6ZG9jOmAuLi91bml0dGVzdGAgZm9yIGJhc2ljIHVuaXR0ZXN0IGludGVn
cmF0aW9uCiAtIDpkb2M6YC4uL25vc2VgIGZvciBiYXNpYyBub3NldGVzdHMgaW50ZWdyYXRpb24K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL21hcmtlcnMucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbWFya2Vycy5yc3QKaW5kZXggYmYzNTJiYzgxMjk4Li4z
ZDU1ZjllYmIwNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL21hcmtl
cnMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL21hcmtlcnMucnN0CkBAIC00
LDEwMSArNCwxMjMgQEAKIFdvcmtpbmcgd2l0aCBjdXN0b20gbWFya2VycwogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1IZXJlIGFyZSBzb21lIGV4
YW1wbGUgdXNpbmcgdGhlIDpyZWY6YG1hcmtgIG1lY2hhbmlzbS4KK0hlcmUgYXJlIHNvbWUgZXhh
bXBsZXMgdXNpbmcgdGhlIDpyZWY6YG1hcmtgIG1lY2hhbmlzbS4KKworLi4gX2BtYXJrIHJ1bmA6
CiAKIE1hcmtpbmcgdGVzdCBmdW5jdGlvbnMgYW5kIHNlbGVjdGluZyB0aGVtIGZvciBhIHJ1bgog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Z
b3UgY2FuICJtYXJrIiBhIHRlc3QgZnVuY3Rpb24gd2l0aCBjdXN0b20gbWV0YWRhdGEgbGlrZSB0
aGlzOjoKK1lvdSBjYW4gIm1hcmsiIGEgdGVzdCBmdW5jdGlvbiB3aXRoIGN1c3RvbSBtZXRhZGF0
YSBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBv
ZiB0ZXN0X3NlcnZlci5weQogCiAgICAgaW1wb3J0IHB5dGVzdAorCisKICAgICBAcHl0ZXN0Lm1h
cmsud2VidGVzdAogICAgIGRlZiB0ZXN0X3NlbmRfaHR0cCgpOgotICAgICAgICBwYXNzICMgcGVy
Zm9ybSBzb21lIHdlYnRlc3QgdGVzdCBmb3IgeW91ciBhcHAKKyAgICAgICAgcGFzcyAgIyBwZXJm
b3JtIHNvbWUgd2VidGVzdCB0ZXN0IGZvciB5b3VyIGFwcAorCisKICAgICBkZWYgdGVzdF9zb21l
dGhpbmdfcXVpY2soKToKICAgICAgICAgcGFzcworCisKICAgICBkZWYgdGVzdF9hbm90aGVyKCk6
CiAgICAgICAgIHBhc3MKLSAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKKworCisgICAgY2xh
c3MgVGVzdENsYXNzOgogICAgICAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZik6CiAgICAgICAgICAg
ICBwYXNzCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuMgogCi1Zb3UgY2FuIHRoZW4gcmVzdHJpY3Qg
YSB0ZXN0IHJ1biB0byBvbmx5IHJ1biB0ZXN0cyBtYXJrZWQgd2l0aCBgYHdlYnRlc3RgYDo6CisK
K1lvdSBjYW4gdGhlbiByZXN0cmljdCBhIHRlc3QgcnVuIHRvIG9ubHkgcnVuIHRlc3RzIG1hcmtl
ZCB3aXRoIGBgd2VidGVzdGBgOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5
dGVzdCAtdiAtbSB3ZWJ0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qg
c2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3Jt
IGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAu
eC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5dGVz
dF9jYWNoZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gICAgY29s
bGVjdGluZyAuLi4gY29sbGVjdGVkIDQgaXRlbXMgLyAzIGRlc2VsZWN0ZWQKKyAgICBwbGF0Zm9y
bSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0w
LngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAg
Y29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDQgaXRlbXMgLyAzIGRlc2VsZWN0ZWQgLyAxIHNlbGVj
dGVkCiAKICAgICB0ZXN0X3NlcnZlci5weTo6dGVzdF9zZW5kX2h0dHAgUEFTU0VEICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PSAx
IHBhc3NlZCwgMyBkZXNlbGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT0K
KyAgICA9PT09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQsIDMgZGVzZWxlY3RlZCBpbiAwLjEy
cyA9PT09PT09PT09PT09PT09PT09PT09CisKK09yIHRoZSBpbnZlcnNlLCBydW5uaW5nIGFsbCB0
ZXN0cyBleGNlcHQgdGhlIHdlYnRlc3Qgb25lczoKIAotT3IgdGhlIGludmVyc2UsIHJ1bm5pbmcg
YWxsIHRlc3RzIGV4Y2VwdCB0aGUgd2VidGVzdCBvbmVzOjoKKy4uIGNvZGUtYmxvY2s6OiBweXRl
c3QKIAogICAgICQgcHl0ZXN0IC12IC1tICJub3Qgd2VidGVzdCIKICAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54Lnks
IHB5LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQot
ICAgIGNhY2hlZGlyOiAucHl0ZXN0X2NhY2hlCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJ
UiwgaW5pZmlsZToKLSAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgNCBpdGVtcyAvIDEgZGVz
ZWxlY3RlZAorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55
LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAg
ICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRS
RUdFTkRPQ19UTVBESVIKKyAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgNCBpdGVtcyAvIDEg
ZGVzZWxlY3RlZCAvIDMgc2VsZWN0ZWQKIAogICAgIHRlc3Rfc2VydmVyLnB5Ojp0ZXN0X3NvbWV0
aGluZ19xdWljayBQQVNTRUQgICAgICAgICAgICAgICAgICAgICAgICAgIFsgMzMlXQogICAgIHRl
c3Rfc2VydmVyLnB5Ojp0ZXN0X2Fub3RoZXIgUEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsgNjYlXQogICAgIHRlc3Rfc2VydmVyLnB5OjpUZXN0Q2xhc3M6OnRlc3RfbWV0
aG9kIFBBU1NFRCAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09
PT09PT09PT09IDMgcGFzc2VkLCAxIGRlc2VsZWN0ZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09
PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PSAzIHBhc3NlZCwgMSBkZXNlbGVj
dGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT0KIAogU2VsZWN0aW5nIHRlc3RzIGJh
c2VkIG9uIHRoZWlyIG5vZGUgSUQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIFlvdSBjYW4gcHJvdmlkZSBvbmUgb3IgbW9yZSA6cmVmOmBub2RlIElEcyA8bm9kZS1p
ZD5gIGFzIHBvc2l0aW9uYWwKIGFyZ3VtZW50cyB0byBzZWxlY3Qgb25seSBzcGVjaWZpZWQgdGVz
dHMuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBzZWxlY3QKLXRlc3RzIGJhc2VkIG9uIHRoZWlyIG1v
ZHVsZSwgY2xhc3MsIG1ldGhvZCwgb3IgZnVuY3Rpb24gbmFtZTo6Cit0ZXN0cyBiYXNlZCBvbiB0
aGVpciBtb2R1bGUsIGNsYXNzLCBtZXRob2QsIG9yIGZ1bmN0aW9uIG5hbWU6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC12IHRlc3Rfc2VydmVyLnB5OjpUZXN0Q2xh
c3M6OnRlc3RfbWV0aG9kCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vz
c2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxp
bnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55
IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5dGVzdF9j
YWNoZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZv
cm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3kt
MC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbgorICAgIGNhY2hlZGlyOiAkUFlUSE9O
X1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAg
IGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAxIGl0ZW0KIAogICAgIHRlc3Rfc2VydmVyLnB5OjpU
ZXN0Q2xhc3M6OnRlc3RfbWV0aG9kIFBBU1NFRCAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAl
XQogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCBpbiAwLjEyIHNlY29u
ZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gMSBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor
WW91IGNhbiBhbHNvIHNlbGVjdCBvbiB0aGUgY2xhc3M6CiAKLVlvdSBjYW4gYWxzbyBzZWxlY3Qg
b24gdGhlIGNsYXNzOjoKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC12
IHRlc3Rfc2VydmVyLnB5OjpUZXN0Q2xhc3MKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAg
cGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBw
bHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQotICAgIGNhY2hlZGly
OiAucHl0ZXN0X2NhY2hlCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToK
KyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54
LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2FjaGVk
aXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0Nf
VE1QRElSCiAgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDEgaXRlbQogCiAgICAgdGVzdF9z
ZXJ2ZXIucHk6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QgUEFTU0VEICAgICAgICAgICAgICAgICAg
ICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IDEgcGFzc2VkIGlu
IDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PSAxIHBhc3NlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQogCi1PciBzZWxlY3QgbXVsdGlwbGUgbm9kZXM6OgorT3Igc2VsZWN0IG11bHRpcGxl
IG5vZGVzOgogCi0gICQgcHl0ZXN0IC12IHRlc3Rfc2VydmVyLnB5OjpUZXN0Q2xhc3MgdGVzdF9z
ZXJ2ZXIucHk6OnRlc3Rfc2VuZF9odHRwCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0
ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgcGxhdGZv
cm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3kt
MC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQotICBjYWNoZWRpcjogLnB5dGVz
dF9jYWNoZQotICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgotICBjb2xsZWN0
aW5nIC4uLiBjb2xsZWN0ZWQgMiBpdGVtcworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCi0gIHRl
c3Rfc2VydmVyLnB5OjpUZXN0Q2xhc3M6OnRlc3RfbWV0aG9kIFBBU1NFRCAgICAgICAgICAgICAg
ICAgICAgICAgIFsgNTAlXQotICB0ZXN0X3NlcnZlci5weTo6dGVzdF9zZW5kX2h0dHAgUEFTU0VE
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KKyAgICAkIHB5dGVzdCAtdiB0
ZXN0X3NlcnZlci5weTo6VGVzdENsYXNzIHRlc3Rfc2VydmVyLnB5Ojp0ZXN0X3NlbmRfaHR0cAor
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54
LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJ
WC9iaW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUK
KyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGluZyAuLi4gY29sbGVj
dGVkIDIgaXRlbXMKIAotICA9PT09PT09PT09PT09PT09PT09PT09PT09IDIgcGFzc2VkIGluIDAu
MTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgdGVzdF9zZXJ2ZXIucHk6
OlRlc3RDbGFzczo6dGVzdF9tZXRob2QgUEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAgWyA1
MCVdCisgICAgdGVzdF9zZXJ2ZXIucHk6OnRlc3Rfc2VuZF9odHRwIFBBU1NFRCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09IDIgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAK
IC4uIF9ub2RlLWlkOgogCkBAIC0xMTksOTYgKzE0MSwxMDUgQEAgT3Igc2VsZWN0IG11bHRpcGxl
IG5vZGVzOjoKIFVzaW5nIGBgLWsgZXhwcmBgIHRvIHNlbGVjdCB0ZXN0cyBiYXNlZCBvbiB0aGVp
ciBuYW1lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLS4uIHZlcnNpb25hZGRlZDogMi4wLzIuMy40CisuLiB2ZXJzaW9uYWRkZWQ6OiAy
LjAvMi4zLjQKIAogWW91IGNhbiB1c2UgdGhlIGBgLWtgYCBjb21tYW5kIGxpbmUgb3B0aW9uIHRv
IHNwZWNpZnkgYW4gZXhwcmVzc2lvbgogd2hpY2ggaW1wbGVtZW50cyBhIHN1YnN0cmluZyBtYXRj
aCBvbiB0aGUgdGVzdCBuYW1lcyBpbnN0ZWFkIG9mIHRoZQogZXhhY3QgbWF0Y2ggb24gbWFya2Vy
cyB0aGF0IGBgLW1gYCBwcm92aWRlcy4gIFRoaXMgbWFrZXMgaXQgZWFzeSB0bwotc2VsZWN0IHRl
c3RzIGJhc2VkIG9uIHRoZWlyIG5hbWVzOjoKK3NlbGVjdCB0ZXN0cyBiYXNlZCBvbiB0aGVpciBu
YW1lczoKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiA1LjQKKworVGhlIGV4cHJlc3Npb24gbWF0Y2hp
bmcgaXMgbm93IGNhc2UtaW5zZW5zaXRpdmUuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAog
ICAgICQgcHl0ZXN0IC12IC1rIGh0dHAgICMgcnVubmluZyB3aXRoIHRoZSBhYm92ZSBkZWZpbmVk
IGV4YW1wbGUgbW9kdWxlCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vz
c2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxp
bnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55
IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5dGVzdF9j
YWNoZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gICAgY29sbGVj
dGluZyAuLi4gY29sbGVjdGVkIDQgaXRlbXMgLyAzIGRlc2VsZWN0ZWQKKyAgICBwbGF0Zm9ybSBs
aW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngu
eSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJF
RklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29s
bGVjdGluZyAuLi4gY29sbGVjdGVkIDQgaXRlbXMgLyAzIGRlc2VsZWN0ZWQgLyAxIHNlbGVjdGVk
CiAKICAgICB0ZXN0X3NlcnZlci5weTo6dGVzdF9zZW5kX2h0dHAgUEFTU0VEICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PSAxIHBh
c3NlZCwgMyBkZXNlbGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT0KKyAg
ICA9PT09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQsIDMgZGVzZWxlY3RlZCBpbiAwLjEycyA9
PT09PT09PT09PT09PT09PT09PT09CisKK0FuZCB5b3UgY2FuIGFsc28gcnVuIGFsbCB0ZXN0cyBl
eGNlcHQgdGhlIG9uZXMgdGhhdCBtYXRjaCB0aGUga2V5d29yZDoKIAotQW5kIHlvdSBjYW4gYWxz
byBydW4gYWxsIHRlc3RzIGV4Y2VwdCB0aGUgb25lcyB0aGF0IG1hdGNoIHRoZSBrZXl3b3JkOjoK
Ky4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1rICJub3Qgc2VuZF9odHRw
IiAtdgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRz
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRo
b24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9O
X1BSRUZJWC9iaW4vcHl0aG9uMy41Ci0gICAgY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUKLSAgICBy
b290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgotICAgIGNvbGxlY3RpbmcgLi4uIGNv
bGxlY3RlZCA0IGl0ZW1zIC8gMSBkZXNlbGVjdGVkCisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhP
Tl9QUkVGSVgvYmluL3B5dGhvbgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0
X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RpbmcgLi4u
IGNvbGxlY3RlZCA0IGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMyBzZWxlY3RlZAogCiAgICAgdGVz
dF9zZXJ2ZXIucHk6OnRlc3Rfc29tZXRoaW5nX3F1aWNrIFBBU1NFRCAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyAzMyVdCiAgICAgdGVzdF9zZXJ2ZXIucHk6OnRlc3RfYW5vdGhlciBQQVNTRUQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA2NiVdCiAgICAgdGVzdF9zZXJ2ZXIu
cHk6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QgUEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAg
WzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09PT09PT0gMyBwYXNzZWQsIDEgZGVzZWxlY3RlZCBp
biAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09
PT09IDMgcGFzc2VkLCAxIGRlc2VsZWN0ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09
PQorCitPciB0byBzZWxlY3QgImh0dHAiIGFuZCAicXVpY2siIHRlc3RzOgogCi1PciB0byBzZWxl
Y3QgImh0dHAiIGFuZCAicXVpY2siIHRlc3RzOjoKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAog
ICAgICQgcHl0ZXN0IC1rICJodHRwIG9yIHF1aWNrIiAtdgogICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHkt
MS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uMy41Ci0gICAg
Y2FjaGVkaXI6IC5weXRlc3RfY2FjaGUKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBp
bmlmaWxlOgotICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCA0IGl0ZW1zIC8gMiBkZXNlbGVj
dGVkCisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbgorICAgIGNh
Y2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VO
RE9DX1RNUERJUgorICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCA0IGl0ZW1zIC8gMiBkZXNl
bGVjdGVkIC8gMiBzZWxlY3RlZAogCiAgICAgdGVzdF9zZXJ2ZXIucHk6OnRlc3Rfc2VuZF9odHRw
IFBBU1NFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA1MCVdCiAgICAgdGVzdF9z
ZXJ2ZXIucHk6OnRlc3Rfc29tZXRoaW5nX3F1aWNrIFBBU1NFRCAgICAgICAgICAgICAgICAgICAg
ICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQsIDIgZGVzZWxl
Y3RlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09
PT09PT09PT09IDIgcGFzc2VkLCAyIGRlc2VsZWN0ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09
PT09PT09PQogCi0uLiBub3RlOjoKLQotICAgIElmIHlvdSBhcmUgdXNpbmcgZXhwcmVzc2lvbnMg
c3VjaCBhcyBgYCJYIGFuZCBZImBgIHRoZW4gYm90aCBgYFhgYCBhbmQgYGBZYGAKLSAgICBuZWVk
IHRvIGJlIHNpbXBsZSBub24ta2V5d29yZCBuYW1lcy4gRm9yIGV4YW1wbGUsIGBgInBhc3MiYGAg
b3IgYGAiZnJvbSJgYAotICAgIHdpbGwgcmVzdWx0IGluIFN5bnRheEVycm9ycyBiZWNhdXNlIGBg
Ii1rImBgIGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiB1c2luZwotICAgIFB5dGhvbidzIGBldmFs
YF8gZnVuY3Rpb24uCitZb3UgY2FuIHVzZSBgYGFuZGBgLCBgYG9yYGAsIGBgbm90YGAgYW5kIHBh
cmVudGhlc2VzLgogCi0uLiBfYGV2YWxgOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvbGli
cmFyeS9mdW5jdGlvbnMuaHRtbCNldmFsCiAKK0luIGFkZGl0aW9uIHRvIHRoZSB0ZXN0J3MgbmFt
ZSwgYGAta2BgIGFsc28gbWF0Y2hlcyB0aGUgbmFtZXMgb2YgdGhlIHRlc3QncyBwYXJlbnRzICh1
c3VhbGx5LCB0aGUgbmFtZSBvZiB0aGUgZmlsZSBhbmQgY2xhc3MgaXQncyBpbiksCithdHRyaWJ1
dGVzIHNldCBvbiB0aGUgdGVzdCBmdW5jdGlvbiwgbWFya2VycyBhcHBsaWVkIHRvIGl0IG9yIGl0
cyBwYXJlbnRzIGFuZCBhbnkgOmF0dHI6YGV4dHJhIGtleXdvcmRzIDxfcHl0ZXN0Lm5vZGVzLk5v
ZGUuZXh0cmFfa2V5d29yZF9tYXRjaGVzPmAKK2V4cGxpY2l0bHkgYWRkZWQgdG8gaXQgb3IgaXRz
IHBhcmVudHMuCiAKLSAgICBIb3dldmVyLCBpZiB0aGUgYGAiLWsiYGAgYXJndW1lbnQgaXMgYSBz
aW1wbGUgc3RyaW5nLCBubyBzdWNoIHJlc3RyaWN0aW9ucwotICAgIGFwcGx5LiBBbHNvIGBgIi1r
ICdub3QgU1RSSU5HJyJgYCBoYXMgbm8gcmVzdHJpY3Rpb25zLiAgWW91IGNhbiBhbHNvCi0gICAg
c3BlY2lmeSBudW1iZXJzIGxpa2UgYGAiLWsgMS4zImBgIHRvIG1hdGNoIHRlc3RzIHdoaWNoIGFy
ZSBwYXJhbWV0cml6ZWQKLSAgICB3aXRoIHRoZSBmbG9hdCBgYCIxLjMiYGAuCiAKIFJlZ2lzdGVy
aW5nIG1hcmtlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4g
dmVyc2lvbmFkZGVkOjogMi4yCisKIAogLi4gaW5pLXN5bnRheCBmb3IgY3VzdG9tIG1hcmtlcnM6
CiAKLVJlZ2lzdGVyaW5nIG1hcmtlcnMgZm9yIHlvdXIgdGVzdCBzdWl0ZSBpcyBzaW1wbGU6Ogor
UmVnaXN0ZXJpbmcgbWFya2VycyBmb3IgeW91ciB0ZXN0IHN1aXRlIGlzIHNpbXBsZToKKworLi4g
Y29kZS1ibG9jazo6IGluaQogCiAgICAgIyBjb250ZW50IG9mIHB5dGVzdC5pbmkKICAgICBbcHl0
ZXN0XQogICAgIG1hcmtlcnMgPQogICAgICAgICB3ZWJ0ZXN0OiBtYXJrIGEgdGVzdCBhcyBhIHdl
YnRlc3QuCiAKLVlvdSBjYW4gYXNrIHdoaWNoIG1hcmtlcnMgZXhpc3QgZm9yIHlvdXIgdGVzdCBz
dWl0ZSAtIHRoZSBsaXN0IGluY2x1ZGVzIG91ciBqdXN0IGRlZmluZWQgYGB3ZWJ0ZXN0YGAgbWFy
a2Vyczo6CitZb3UgY2FuIGFzayB3aGljaCBtYXJrZXJzIGV4aXN0IGZvciB5b3VyIHRlc3Qgc3Vp
dGUgLSB0aGUgbGlzdCBpbmNsdWRlcyBvdXIganVzdCBkZWZpbmVkIGBgd2VidGVzdGBgIG1hcmtl
cnM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC0tbWFya2Vycwog
ICAgIEBweXRlc3QubWFyay53ZWJ0ZXN0OiBtYXJrIGEgdGVzdCBhcyBhIHdlYnRlc3QuCiAKKyAg
ICBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3Mod2FybmluZyk6IGFkZCBhIHdhcm5pbmcgZmls
dGVyIHRvIHRoZSBnaXZlbiB0ZXN0LiBzZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3Rh
YmxlL3dhcm5pbmdzLmh0bWwjcHl0ZXN0LW1hcmstZmlsdGVyd2FybmluZ3MKKwogICAgIEBweXRl
c3QubWFyay5za2lwKHJlYXNvbj1Ob25lKTogc2tpcCB0aGUgZ2l2ZW4gdGVzdCBmdW5jdGlvbiB3
aXRoIGFuIG9wdGlvbmFsIHJlYXNvbi4gRXhhbXBsZTogc2tpcChyZWFzb249Im5vIHdheSBvZiBj
dXJyZW50bHkgdGVzdGluZyB0aGlzIikgc2tpcHMgdGhlIHRlc3QuCiAKLSAgICBAcHl0ZXN0Lm1h
cmsuc2tpcGlmKGNvbmRpdGlvbik6IHNraXAgdGhlIGdpdmVuIHRlc3QgZnVuY3Rpb24gaWYgZXZh
bChjb25kaXRpb24pIHJlc3VsdHMgaW4gYSBUcnVlIHZhbHVlLiAgRXZhbHVhdGlvbiBoYXBwZW5z
IHdpdGhpbiB0aGUgbW9kdWxlIGdsb2JhbCBjb250ZXh0LiBFeGFtcGxlOiBza2lwaWYoJ3N5cy5w
bGF0Zm9ybSA9PSAid2luMzIiJykgc2tpcHMgdGhlIHRlc3QgaWYgd2UgYXJlIG9uIHRoZSB3aW4z
MiBwbGF0Zm9ybS4gc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9za2lwcGluZy5odG1sCisg
ICAgQHB5dGVzdC5tYXJrLnNraXBpZihjb25kaXRpb24sIC4uLiwgKiwgcmVhc29uPS4uLik6IHNr
aXAgdGhlIGdpdmVuIHRlc3QgZnVuY3Rpb24gaWYgYW55IG9mIHRoZSBjb25kaXRpb25zIGV2YWx1
YXRlIHRvIFRydWUuIEV4YW1wbGU6IHNraXBpZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykgc2tp
cHMgdGhlIHRlc3QgaWYgd2UgYXJlIG9uIHRoZSB3aW4zMiBwbGF0Zm9ybS4gU2VlIGh0dHBzOi8v
ZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRlc3QtbWFyay1za2lw
aWYKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChjb25kaXRpb24sIHJlYXNvbj1Ob25lLCBydW49
VHJ1ZSwgcmFpc2VzPU5vbmUsIHN0cmljdD1GYWxzZSk6IG1hcmsgdGhlIHRlc3QgZnVuY3Rpb24g
YXMgYW4gZXhwZWN0ZWQgZmFpbHVyZSBpZiBldmFsKGNvbmRpdGlvbikgaGFzIGEgVHJ1ZSB2YWx1
ZS4gT3B0aW9uYWxseSBzcGVjaWZ5IGEgcmVhc29uIGZvciBiZXR0ZXIgcmVwb3J0aW5nIGFuZCBy
dW49RmFsc2UgaWYgeW91IGRvbid0IGV2ZW4gd2FudCB0byBleGVjdXRlIHRoZSB0ZXN0IGZ1bmN0
aW9uLiBJZiBvbmx5IHNwZWNpZmljIGV4Y2VwdGlvbihzKSBhcmUgZXhwZWN0ZWQsIHlvdSBjYW4g
bGlzdCB0aGVtIGluIHJhaXNlcywgYW5kIGlmIHRoZSB0ZXN0IGZhaWxzIGluIG90aGVyIHdheXMs
IGl0IHdpbGwgYmUgcmVwb3J0ZWQgYXMgYSB0cnVlIGZhaWx1cmUuIFNlZSBodHRwOi8vcHl0ZXN0
Lm9yZy9sYXRlc3Qvc2tpcHBpbmcuaHRtbAorICAgIEBweXRlc3QubWFyay54ZmFpbChjb25kaXRp
b24sIC4uLiwgKiwgcmVhc29uPS4uLiwgcnVuPVRydWUsIHJhaXNlcz1Ob25lLCBzdHJpY3Q9eGZh
aWxfc3RyaWN0KTogbWFyayB0aGUgdGVzdCBmdW5jdGlvbiBhcyBhbiBleHBlY3RlZCBmYWlsdXJl
IGlmIGFueSBvZiB0aGUgY29uZGl0aW9ucyBldmFsdWF0ZSB0byBUcnVlLiBPcHRpb25hbGx5IHNw
ZWNpZnkgYSByZWFzb24gZm9yIGJldHRlciByZXBvcnRpbmcgYW5kIHJ1bj1GYWxzZSBpZiB5b3Ug
ZG9uJ3QgZXZlbiB3YW50IHRvIGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb24uIElmIG9ubHkgc3Bl
Y2lmaWMgZXhjZXB0aW9uKHMpIGFyZSBleHBlY3RlZCwgeW91IGNhbiBsaXN0IHRoZW0gaW4gcmFp
c2VzLCBhbmQgaWYgdGhlIHRlc3QgZmFpbHMgaW4gb3RoZXIgd2F5cywgaXQgd2lsbCBiZSByZXBv
cnRlZCBhcyBhIHRydWUgZmFpbHVyZS4gU2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRlc3QtbWFyay14ZmFpbAogCi0gICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKGFyZ25hbWVzLCBhcmd2YWx1ZXMpOiBjYWxsIGEgdGVzdCBmdW5jdGlvbiBt
dWx0aXBsZSB0aW1lcyBwYXNzaW5nIGluIGRpZmZlcmVudCBhcmd1bWVudHMgaW4gdHVybi4gYXJn
dmFsdWVzIGdlbmVyYWxseSBuZWVkcyB0byBiZSBhIGxpc3Qgb2YgdmFsdWVzIGlmIGFyZ25hbWVz
IHNwZWNpZmllcyBvbmx5IG9uZSBuYW1lIG9yIGEgbGlzdCBvZiB0dXBsZXMgb2YgdmFsdWVzIGlm
IGFyZ25hbWVzIHNwZWNpZmllcyBtdWx0aXBsZSBuYW1lcy4gRXhhbXBsZTogQHBhcmFtZXRyaXpl
KCdhcmcxJywgWzEsMl0pIHdvdWxkIGxlYWQgdG8gdHdvIGNhbGxzIG9mIHRoZSBkZWNvcmF0ZWQg
dGVzdCBmdW5jdGlvbiwgb25lIHdpdGggYXJnMT0xIGFuZCBhbm90aGVyIHdpdGggYXJnMT0yLnNl
ZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvcGFyYW1ldHJpemUuaHRtbCBmb3IgbW9yZSBpbmZv
IGFuZCBleGFtcGxlcy4KKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoYXJnbmFtZXMsIGFy
Z3ZhbHVlcyk6IGNhbGwgYSB0ZXN0IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzIHBhc3NpbmcgaW4g
ZGlmZmVyZW50IGFyZ3VtZW50cyBpbiB0dXJuLiBhcmd2YWx1ZXMgZ2VuZXJhbGx5IG5lZWRzIHRv
IGJlIGEgbGlzdCBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG9ubHkgb25lIG5hbWUg
b3IgYSBsaXN0IG9mIHR1cGxlcyBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG11bHRp
cGxlIG5hbWVzLiBFeGFtcGxlOiBAcGFyYW1ldHJpemUoJ2FyZzEnLCBbMSwyXSkgd291bGQgbGVh
ZCB0byB0d28gY2FsbHMgb2YgdGhlIGRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9uLCBvbmUgd2l0aCBh
cmcxPTEgYW5kIGFub3RoZXIgd2l0aCBhcmcxPTIuc2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9wYXJhbWV0cml6ZS5odG1sIGZvciBtb3JlIGluZm8gYW5kIGV4YW1wbGVzLgog
Ci0gICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lMSwgZml4dHVyZW5hbWUy
LCAuLi4pOiBtYXJrIHRlc3RzIGFzIG5lZWRpbmcgYWxsIG9mIHRoZSBzcGVjaWZpZWQgZml4dHVy
ZXMuIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZml4dHVyZS5odG1sI3VzZWZpeHR1cmVz
CisgICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lMSwgZml4dHVyZW5hbWUy
LCAuLi4pOiBtYXJrIHRlc3RzIGFzIG5lZWRpbmcgYWxsIG9mIHRoZSBzcGVjaWZpZWQgZml4dHVy
ZXMuIHNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZml4dHVyZS5odG1sI3Vz
ZWZpeHR1cmVzCiAKICAgICBAcHl0ZXN0Lm1hcmsudHJ5Zmlyc3Q6IG1hcmsgYSBob29rIGltcGxl
bWVudGF0aW9uIGZ1bmN0aW9uIHN1Y2ggdGhhdCB0aGUgcGx1Z2luIG1hY2hpbmVyeSB3aWxsIHRy
eSB0byBjYWxsIGl0IGZpcnN0L2FzIGVhcmx5IGFzIHBvc3NpYmxlLgogCkBAIC0yMjcsNyArMjU4
LDcgQEAgRm9yIGFuIGV4YW1wbGUgb24gaG93IHRvIGFkZCBhbmQgd29yayB3aXRoIG1hcmtlcnMg
ZnJvbSBhIHBsdWdpbiwgc2VlCiAgICAgKiBBc2tpbmcgZm9yIGV4aXN0aW5nIG1hcmtlcnMgdmlh
IGBgcHl0ZXN0IC0tbWFya2Vyc2BgIGdpdmVzIGdvb2Qgb3V0cHV0CiAKICAgICAqIFR5cG9zIGlu
IGZ1bmN0aW9uIG1hcmtlcnMgYXJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IgaWYgeW91IHVzZQotICAg
ICAgdGhlIGBgLS1zdHJpY3RgYCBvcHRpb24uCisgICAgICB0aGUgYGAtLXN0cmljdC1tYXJrZXJz
YGAgb3B0aW9uLgogCiAuLiBfYHNjb3BlZC1tYXJraW5nYDoKIApAQCAtMjM1LDQyICsyNjYsNDUg
QEAgTWFya2luZyB3aG9sZSBjbGFzc2VzIG9yIG1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogWW91IG1heSB1c2UgYGBweXRlc3Qu
bWFya2BgIGRlY29yYXRvcnMgd2l0aCBjbGFzc2VzIHRvIGFwcGx5IG1hcmtlcnMgdG8gYWxsIG9m
Ci1pdHMgdGVzdCBtZXRob2RzOjoKK2l0cyB0ZXN0IG1ldGhvZHM6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X21hcmtfY2xhc3NsZXZlbC5weQogICAg
IGltcG9ydCBweXRlc3QKKworCiAgICAgQHB5dGVzdC5tYXJrLndlYnRlc3QKLSAgICBjbGFzcyBU
ZXN0Q2xhc3Mob2JqZWN0KToKKyAgICBjbGFzcyBUZXN0Q2xhc3M6CiAgICAgICAgIGRlZiB0ZXN0
X3N0YXJ0dXAoc2VsZik6CiAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgZGVmIHRlc3Rfc3Rh
cnR1cF9hbmRfbW9yZShzZWxmKToKICAgICAgICAgICAgIHBhc3MKIAogVGhpcyBpcyBlcXVpdmFs
ZW50IHRvIGRpcmVjdGx5IGFwcGx5aW5nIHRoZSBkZWNvcmF0b3IgdG8gdGhlCiB0d28gdGVzdCBm
dW5jdGlvbnMuCiAKLVRvIHJlbWFpbiBiYWNrd2FyZC1jb21wYXRpYmxlIHdpdGggUHl0aG9uIDIu
NCB5b3UgY2FuIGFsc28gc2V0IGEKLWBgcHl0ZXN0bWFya2BgIGF0dHJpYnV0ZSBvbiBhIFRlc3RD
bGFzcyBsaWtlIHRoaXM6OgorVG8gYXBwbHkgbWFya3MgYXQgdGhlIG1vZHVsZSBsZXZlbCwgdXNl
IHRoZSA6Z2xvYmFsdmFyOmBweXRlc3RtYXJrYCBnbG9iYWwgdmFyaWFibGU6OgogCiAgICAgaW1w
b3J0IHB5dGVzdAorICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay53ZWJ0ZXN0CiAKLSAgICBj
bGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJr
LndlYnRlc3QKK29yIG11bHRpcGxlIG1hcmtlcnM6OgogCi1vciBpZiB5b3UgbmVlZCB0byB1c2Ug
bXVsdGlwbGUgbWFya2VycyB5b3UgY2FuIHVzZSBhIGxpc3Q6OgorICAgIHB5dGVzdG1hcmsgPSBb
cHl0ZXN0Lm1hcmsud2VidGVzdCwgcHl0ZXN0Lm1hcmsuc2xvd3Rlc3RdCiAKLSAgICBpbXBvcnQg
cHl0ZXN0CiAKLSAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgcHl0ZXN0bWFy
ayA9IFtweXRlc3QubWFyay53ZWJ0ZXN0LCBweXRlc3QubWFyay5zbG93dGVzdF0KK0R1ZSB0byBs
ZWdhY3kgcmVhc29ucywgYmVmb3JlIGNsYXNzIGRlY29yYXRvcnMgd2VyZSBpbnRyb2R1Y2VkLCBp
dCBpcyBwb3NzaWJsZSB0byBzZXQgdGhlCis6Z2xvYmFsdmFyOmBweXRlc3RtYXJrYCBhdHRyaWJ1
dGUgb24gYSB0ZXN0IGNsYXNzIGxpa2UgdGhpczoKIAotWW91IGNhbiBhbHNvIHNldCBhIG1vZHVs
ZSBsZXZlbCBtYXJrZXI6OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1wb3J0IHB5
dGVzdAotICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay53ZWJ0ZXN0CiAKLWluIHdoaWNoIGNh
c2UgaXQgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBmdW5jdGlvbnMgYW5kCi1tZXRob2RzIGRlZmlu
ZWQgaW4gdGhlIG1vZHVsZS4KKworICAgIGNsYXNzIFRlc3RDbGFzczoKKyAgICAgICAgcHl0ZXN0
bWFyayA9IHB5dGVzdC5tYXJrLndlYnRlc3QKIAogLi4gX2BtYXJraW5nIGluZGl2aWR1YWwgdGVz
dHMgd2hlbiB1c2luZyBwYXJhbWV0cml6ZWA6CiAKQEAgLTI3OSwzMiArMzEzLDI0IEBAIE1hcmtp
bmcgaW5kaXZpZHVhbCB0ZXN0cyB3aGVuIHVzaW5nIHBhcmFtZXRyaXplCiAKIFdoZW4gdXNpbmcg
cGFyYW1ldHJpemUsIGFwcGx5aW5nIGEgbWFyayB3aWxsIG1ha2UgaXQgYXBwbHkKIHRvIGVhY2gg
aW5kaXZpZHVhbCB0ZXN0LiBIb3dldmVyIGl0IGlzIGFsc28gcG9zc2libGUgdG8KLWFwcGx5IGEg
bWFya2VyIHRvIGFuIGluZGl2aWR1YWwgdGVzdCBpbnN0YW5jZTo6CithcHBseSBhIG1hcmtlciB0
byBhbiBpbmRpdmlkdWFsIHRlc3QgaW5zdGFuY2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
IAogICAgIGltcG9ydCBweXRlc3QKIAorCiAgICAgQHB5dGVzdC5tYXJrLmZvbwotICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgoIm4iLCAiZXhwZWN0ZWQiKSwgWwotICAgICAgICAoMSwgMiks
Ci0gICAgICAgIHB5dGVzdC5tYXJrLmJhcigoMSwgMykpLAotICAgICAgICAoMiwgMyksCi0gICAg
XSkKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgibiIsICJleHBlY3Rl
ZCIpLCBbKDEsIDIpLCBweXRlc3QucGFyYW0oMSwgMywgbWFya3M9cHl0ZXN0Lm1hcmsuYmFyKSwg
KDIsIDMpXQorICAgICkKICAgICBkZWYgdGVzdF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQpOgotICAg
ICAgICAgYXNzZXJ0IG4gKyAxID09IGV4cGVjdGVkCisgICAgICAgIGFzc2VydCBuICsgMSA9PSBl
eHBlY3RlZAogCiBJbiB0aGlzIGV4YW1wbGUgdGhlIG1hcmsgImZvbyIgd2lsbCBhcHBseSB0byBl
YWNoIG9mIHRoZSB0aHJlZQogdGVzdHMsIHdoZXJlYXMgdGhlICJiYXIiIG1hcmsgaXMgb25seSBh
cHBsaWVkIHRvIHRoZSBzZWNvbmQgdGVzdC4KIFNraXAgYW5kIHhmYWlsIG1hcmtzIGNhbiBhbHNv
IGJlIGFwcGxpZWQgaW4gdGhpcyB3YXksIHNlZSA6cmVmOmBza2lwL3hmYWlsIHdpdGggcGFyYW1l
dHJpemVgLgogCi0uLiBub3RlOjoKLQotICAgIElmIHRoZSBkYXRhIHlvdSBhcmUgcGFyYW1ldHJp
emluZyBoYXBwZW4gdG8gYmUgc2luZ2xlIGNhbGxhYmxlcywgeW91IG5lZWQgdG8gYmUgY2FyZWZ1
bAotICAgIHdoZW4gbWFya2luZyB0aGVzZSBpdGVtcy4gYHB5dGVzdC5tYXJrLnhmYWlsKG15X2Z1
bmMpYCB3b24ndCB3b3JrIGJlY2F1c2UgaXQncyBhbHNvIHRoZQotICAgIHNpZ25hdHVyZSBvZiBh
IGZ1bmN0aW9uIGJlaW5nIGRlY29yYXRlZC4gVG8gcmVzb2x2ZSB0aGlzIGFtYmlndWl0eSwgeW91
IG5lZWQgdG8gcGFzcyBhCi0gICAgcmVhc29uIGFyZ3VtZW50OgotICAgIGBweXRlc3QubWFyay54
ZmFpbChmdW5jX2JhciwgcmVhc29uPSJJc3N1ZSM3IilgLgotCi0KIC4uIF9gYWRkaW5nIGEgY3Vz
dG9tIG1hcmtlciBmcm9tIGEgcGx1Z2luYDoKIAogQ3VzdG9tIG1hcmtlciBhbmQgY29tbWFuZCBs
aW5lIG9wdGlvbiB0byBjb250cm9sIHRlc3QgcnVucwpAQCAtMzE1LDc0ICszNDEsOTkgQEAgQ3Vz
dG9tIG1hcmtlciBhbmQgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBjb250cm9sIHRlc3QgcnVucwog
UGx1Z2lucyBjYW4gcHJvdmlkZSBjdXN0b20gbWFya2VycyBhbmQgaW1wbGVtZW50IHNwZWNpZmlj
IGJlaGF2aW91cgogYmFzZWQgb24gaXQuIFRoaXMgaXMgYSBzZWxmLWNvbnRhaW5lZCBleGFtcGxl
IHdoaWNoIGFkZHMgYSBjb21tYW5kCiBsaW5lIG9wdGlvbiBhbmQgYSBwYXJhbWV0cml6ZWQgdGVz
dCBmdW5jdGlvbiBtYXJrZXIgdG8gcnVuIHRlc3RzCi1zcGVjaWZpZXMgdmlhIG5hbWVkIGVudmly
b25tZW50czo6CitzcGVjaWZpZXMgdmlhIG5hbWVkIGVudmlyb25tZW50czoKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAKICAgICBpbXBv
cnQgcHl0ZXN0CisKKwogICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgICAg
IHBhcnNlci5hZGRvcHRpb24oIi1FIiwgYWN0aW9uPSJzdG9yZSIsIG1ldGF2YXI9Ik5BTUUiLAot
ICAgICAgICAgICAgaGVscD0ib25seSBydW4gdGVzdHMgbWF0Y2hpbmcgdGhlIGVudmlyb25tZW50
IE5BTUUuIikKKyAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigKKyAgICAgICAgICAgICItRSIsCisg
ICAgICAgICAgICBhY3Rpb249InN0b3JlIiwKKyAgICAgICAgICAgIG1ldGF2YXI9Ik5BTUUiLAor
ICAgICAgICAgICAgaGVscD0ib25seSBydW4gdGVzdHMgbWF0Y2hpbmcgdGhlIGVudmlyb25tZW50
IE5BTUUuIiwKKyAgICAgICAgKQorCiAKICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcp
OgogICAgICAgICAjIHJlZ2lzdGVyIGFuIGFkZGl0aW9uYWwgbWFya2VyCi0gICAgICAgIGNvbmZp
Zy5hZGRpbml2YWx1ZV9saW5lKCJtYXJrZXJzIiwKLSAgICAgICAgICAgICJlbnYobmFtZSk6IG1h
cmsgdGVzdCB0byBydW4gb25seSBvbiBuYW1lZCBlbnZpcm9ubWVudCIpCisgICAgICAgIGNvbmZp
Zy5hZGRpbml2YWx1ZV9saW5lKAorICAgICAgICAgICAgIm1hcmtlcnMiLCAiZW52KG5hbWUpOiBt
YXJrIHRlc3QgdG8gcnVuIG9ubHkgb24gbmFtZWQgZW52aXJvbm1lbnQiCisgICAgICAgICkKKwog
CiAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICAgICBlbnZuYW1lcyA9
IFttYXJrLmFyZ3NbMF0gZm9yIG1hcmsgaW4gaXRlbS5pdGVyX21hcmtlcnMobmFtZT0nZW52Jyld
CisgICAgICAgIGVudm5hbWVzID0gW21hcmsuYXJnc1swXSBmb3IgbWFyayBpbiBpdGVtLml0ZXJf
bWFya2VycyhuYW1lPSJlbnYiKV0KICAgICAgICAgaWYgZW52bmFtZXM6CiAgICAgICAgICAgICBp
ZiBpdGVtLmNvbmZpZy5nZXRvcHRpb24oIi1FIikgbm90IGluIGVudm5hbWVzOgotICAgICAgICAg
ICAgICAgIHB5dGVzdC5za2lwKCJ0ZXN0IHJlcXVpcmVzIGVudiBpbiAlciIgJSBlbnZuYW1lcykK
KyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgidGVzdCByZXF1aXJlcyBlbnYgaW4geyFyfSIu
Zm9ybWF0KGVudm5hbWVzKSkKKworQSB0ZXN0IGZpbGUgdXNpbmcgdGhpcyBsb2NhbCBwbHVnaW46
CiAKLUEgdGVzdCBmaWxlIHVzaW5nIHRoaXMgbG9jYWwgcGx1Z2luOjoKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X3NvbWVlbnYucHkKIAogICAgIGltcG9y
dCBweXRlc3QKKworCiAgICAgQHB5dGVzdC5tYXJrLmVudigic3RhZ2UxIikKICAgICBkZWYgdGVz
dF9iYXNpY19kYl9vcGVyYXRpb24oKToKICAgICAgICAgcGFzcwogCiBhbmQgYW4gZXhhbXBsZSBp
bnZvY2F0aW9ucyBzcGVjaWZ5aW5nIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHRoYW4gd2hhdAot
dGhlIHRlc3QgbmVlZHM6OgordGhlIHRlc3QgbmVlZHM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRl
c3QKIAogICAgICQgcHl0ZXN0IC1FIHN0YWdlMgogICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAg
ICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54Lnks
IHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Cisg
ICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55
LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNo
ZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgMSBpdGVtCiAK
ICAgICB0ZXN0X3NvbWVlbnYucHkgcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PT09PT09PSAx
IHNraXBwZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09IDEgc2tpcHBlZCBpbiAwLjEycyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAKLWFuZCBoZXJlIGlzIG9uZSB0aGF0IHNwZWNpZmllcyBleGFj
dGx5IHRoZSBlbnZpcm9ubWVudCBuZWVkZWQ6OgorYW5kIGhlcmUgaXMgb25lIHRoYXQgc3BlY2lm
aWVzIGV4YWN0bHkgdGhlIGVudmlyb25tZW50IG5lZWRlZDoKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgLUUgc3RhZ2UxCiAgICAgPT09PT09PT09PT09PT09PT09PT09
PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
ICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngu
eSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToK
KyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54
LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2Nh
Y2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAxIGl0ZW0K
IAogICAgIHRlc3Rfc29tZWVudi5weSAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09
PSAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGBgLS1tYXJrZXJzYGAgb3B0aW9uIGFsd2F5cyBn
aXZlcyB5b3UgYSBsaXN0IG9mIGF2YWlsYWJsZSBtYXJrZXJzOgogCi1UaGUgYGAtLW1hcmtlcnNg
YCBvcHRpb24gYWx3YXlzIGdpdmVzIHlvdSBhIGxpc3Qgb2YgYXZhaWxhYmxlIG1hcmtlcnM6Ogor
Li4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLS1tYXJrZXJzCiAgICAgQHB5
dGVzdC5tYXJrLmVudihuYW1lKTogbWFyayB0ZXN0IHRvIHJ1biBvbmx5IG9uIG5hbWVkIGVudmly
b25tZW50CiAKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3Mod2FybmluZyk6IGFkZCBh
IHdhcm5pbmcgZmlsdGVyIHRvIHRoZSBnaXZlbiB0ZXN0LiBzZWUgaHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vc3RhYmxlL3dhcm5pbmdzLmh0bWwjcHl0ZXN0LW1hcmstZmlsdGVyd2FybmluZ3MK
KwogICAgIEBweXRlc3QubWFyay5za2lwKHJlYXNvbj1Ob25lKTogc2tpcCB0aGUgZ2l2ZW4gdGVz
dCBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIHJlYXNvbi4gRXhhbXBsZTogc2tpcChyZWFzb249
Im5vIHdheSBvZiBjdXJyZW50bHkgdGVzdGluZyB0aGlzIikgc2tpcHMgdGhlIHRlc3QuCiAKLSAg
ICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKGNvbmRpdGlvbik6IHNraXAgdGhlIGdpdmVuIHRlc3QgZnVu
Y3Rpb24gaWYgZXZhbChjb25kaXRpb24pIHJlc3VsdHMgaW4gYSBUcnVlIHZhbHVlLiAgRXZhbHVh
dGlvbiBoYXBwZW5zIHdpdGhpbiB0aGUgbW9kdWxlIGdsb2JhbCBjb250ZXh0LiBFeGFtcGxlOiBz
a2lwaWYoJ3N5cy5wbGF0Zm9ybSA9PSAid2luMzIiJykgc2tpcHMgdGhlIHRlc3QgaWYgd2UgYXJl
IG9uIHRoZSB3aW4zMiBwbGF0Zm9ybS4gc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9za2lw
cGluZy5odG1sCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZihjb25kaXRpb24sIC4uLiwgKiwgcmVh
c29uPS4uLik6IHNraXAgdGhlIGdpdmVuIHRlc3QgZnVuY3Rpb24gaWYgYW55IG9mIHRoZSBjb25k
aXRpb25zIGV2YWx1YXRlIHRvIFRydWUuIEV4YW1wbGU6IHNraXBpZihzeXMucGxhdGZvcm0gPT0g
J3dpbjMyJykgc2tpcHMgdGhlIHRlc3QgaWYgd2UgYXJlIG9uIHRoZSB3aW4zMiBwbGF0Zm9ybS4g
U2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRl
c3QtbWFyay1za2lwaWYKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChjb25kaXRpb24sIHJlYXNv
bj1Ob25lLCBydW49VHJ1ZSwgcmFpc2VzPU5vbmUsIHN0cmljdD1GYWxzZSk6IG1hcmsgdGhlIHRl
c3QgZnVuY3Rpb24gYXMgYW4gZXhwZWN0ZWQgZmFpbHVyZSBpZiBldmFsKGNvbmRpdGlvbikgaGFz
IGEgVHJ1ZSB2YWx1ZS4gT3B0aW9uYWxseSBzcGVjaWZ5IGEgcmVhc29uIGZvciBiZXR0ZXIgcmVw
b3J0aW5nIGFuZCBydW49RmFsc2UgaWYgeW91IGRvbid0IGV2ZW4gd2FudCB0byBleGVjdXRlIHRo
ZSB0ZXN0IGZ1bmN0aW9uLiBJZiBvbmx5IHNwZWNpZmljIGV4Y2VwdGlvbihzKSBhcmUgZXhwZWN0
ZWQsIHlvdSBjYW4gbGlzdCB0aGVtIGluIHJhaXNlcywgYW5kIGlmIHRoZSB0ZXN0IGZhaWxzIGlu
IG90aGVyIHdheXMsIGl0IHdpbGwgYmUgcmVwb3J0ZWQgYXMgYSB0cnVlIGZhaWx1cmUuIFNlZSBo
dHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3Qvc2tpcHBpbmcuaHRtbAorICAgIEBweXRlc3QubWFyay54
ZmFpbChjb25kaXRpb24sIC4uLiwgKiwgcmVhc29uPS4uLiwgcnVuPVRydWUsIHJhaXNlcz1Ob25l
LCBzdHJpY3Q9eGZhaWxfc3RyaWN0KTogbWFyayB0aGUgdGVzdCBmdW5jdGlvbiBhcyBhbiBleHBl
Y3RlZCBmYWlsdXJlIGlmIGFueSBvZiB0aGUgY29uZGl0aW9ucyBldmFsdWF0ZSB0byBUcnVlLiBP
cHRpb25hbGx5IHNwZWNpZnkgYSByZWFzb24gZm9yIGJldHRlciByZXBvcnRpbmcgYW5kIHJ1bj1G
YWxzZSBpZiB5b3UgZG9uJ3QgZXZlbiB3YW50IHRvIGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb24u
IElmIG9ubHkgc3BlY2lmaWMgZXhjZXB0aW9uKHMpIGFyZSBleHBlY3RlZCwgeW91IGNhbiBsaXN0
IHRoZW0gaW4gcmFpc2VzLCBhbmQgaWYgdGhlIHRlc3QgZmFpbHMgaW4gb3RoZXIgd2F5cywgaXQg
d2lsbCBiZSByZXBvcnRlZCBhcyBhIHRydWUgZmFpbHVyZS4gU2VlIGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRlc3QtbWFyay14ZmFpbAogCi0gICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKGFyZ25hbWVzLCBhcmd2YWx1ZXMpOiBjYWxsIGEgdGVz
dCBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBwYXNzaW5nIGluIGRpZmZlcmVudCBhcmd1bWVudHMg
aW4gdHVybi4gYXJndmFsdWVzIGdlbmVyYWxseSBuZWVkcyB0byBiZSBhIGxpc3Qgb2YgdmFsdWVz
IGlmIGFyZ25hbWVzIHNwZWNpZmllcyBvbmx5IG9uZSBuYW1lIG9yIGEgbGlzdCBvZiB0dXBsZXMg
b2YgdmFsdWVzIGlmIGFyZ25hbWVzIHNwZWNpZmllcyBtdWx0aXBsZSBuYW1lcy4gRXhhbXBsZTog
QHBhcmFtZXRyaXplKCdhcmcxJywgWzEsMl0pIHdvdWxkIGxlYWQgdG8gdHdvIGNhbGxzIG9mIHRo
ZSBkZWNvcmF0ZWQgdGVzdCBmdW5jdGlvbiwgb25lIHdpdGggYXJnMT0xIGFuZCBhbm90aGVyIHdp
dGggYXJnMT0yLnNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvcGFyYW1ldHJpemUuaHRtbCBm
b3IgbW9yZSBpbmZvIGFuZCBleGFtcGxlcy4KKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
YXJnbmFtZXMsIGFyZ3ZhbHVlcyk6IGNhbGwgYSB0ZXN0IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVz
IHBhc3NpbmcgaW4gZGlmZmVyZW50IGFyZ3VtZW50cyBpbiB0dXJuLiBhcmd2YWx1ZXMgZ2VuZXJh
bGx5IG5lZWRzIHRvIGJlIGEgbGlzdCBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG9u
bHkgb25lIG5hbWUgb3IgYSBsaXN0IG9mIHR1cGxlcyBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3Bl
Y2lmaWVzIG11bHRpcGxlIG5hbWVzLiBFeGFtcGxlOiBAcGFyYW1ldHJpemUoJ2FyZzEnLCBbMSwy
XSkgd291bGQgbGVhZCB0byB0d28gY2FsbHMgb2YgdGhlIGRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9u
LCBvbmUgd2l0aCBhcmcxPTEgYW5kIGFub3RoZXIgd2l0aCBhcmcxPTIuc2VlIGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9wYXJhbWV0cml6ZS5odG1sIGZvciBtb3JlIGluZm8gYW5k
IGV4YW1wbGVzLgogCi0gICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lMSwg
Zml4dHVyZW5hbWUyLCAuLi4pOiBtYXJrIHRlc3RzIGFzIG5lZWRpbmcgYWxsIG9mIHRoZSBzcGVj
aWZpZWQgZml4dHVyZXMuIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZml4dHVyZS5odG1s
I3VzZWZpeHR1cmVzCisgICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lMSwg
Zml4dHVyZW5hbWUyLCAuLi4pOiBtYXJrIHRlc3RzIGFzIG5lZWRpbmcgYWxsIG9mIHRoZSBzcGVj
aWZpZWQgZml4dHVyZXMuIHNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZml4
dHVyZS5odG1sI3VzZWZpeHR1cmVzCiAKICAgICBAcHl0ZXN0Lm1hcmsudHJ5Zmlyc3Q6IG1hcmsg
YSBob29rIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIHN1Y2ggdGhhdCB0aGUgcGx1Z2luIG1hY2hp
bmVyeSB3aWxsIHRyeSB0byBjYWxsIGl0IGZpcnN0L2FzIGVhcmx5IGFzIHBvc3NpYmxlLgogCkBA
IC0zOTYsMzYgKzQ0Nyw0NSBAQCBQYXNzaW5nIGEgY2FsbGFibGUgdG8gY3VzdG9tIG1hcmtlcnMK
IAogLi4gcmVnZW5kb2M6d2lwZQogCi1CZWxvdyBpcyB0aGUgY29uZmlnIGZpbGUgdGhhdCB3aWxs
IGJlIHVzZWQgaW4gdGhlIG5leHQgZXhhbXBsZXM6OgorQmVsb3cgaXMgdGhlIGNvbmZpZyBmaWxl
IHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBuZXh0IGV4YW1wbGVzOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKICAgICBpbXBvcnQgc3lz
CiAKKwogICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKLSAgICAgICAgZm9yIG1h
cmtlciBpbiBpdGVtLml0ZXJfbWFya2VycyhuYW1lPSdteV9tYXJrZXInKToKKyAgICAgICAgZm9y
IG1hcmtlciBpbiBpdGVtLml0ZXJfbWFya2VycyhuYW1lPSJteV9tYXJrZXIiKToKICAgICAgICAg
ICAgIHByaW50KG1hcmtlcikKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiBBIGN1
c3RvbSBtYXJrZXIgY2FuIGhhdmUgaXRzIGFyZ3VtZW50IHNldCwgaS5lLiBgYGFyZ3NgYCBhbmQg
YGBrd2FyZ3NgYCBwcm9wZXJ0aWVzLCBkZWZpbmVkIGJ5IGVpdGhlciBpbnZva2luZyBpdCBhcyBh
IGNhbGxhYmxlIG9yIHVzaW5nIGBgcHl0ZXN0Lm1hcmsuTUFSS0VSX05BTUUud2l0aF9hcmdzYGAu
IFRoZXNlIHR3byBtZXRob2RzIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IG1vc3Qgb2YgdGhlIHRp
bWUuCiAKLUhvd2V2ZXIsIGlmIHRoZXJlIGlzIGEgY2FsbGFibGUgYXMgdGhlIHNpbmdsZSBwb3Np
dGlvbmFsIGFyZ3VtZW50IHdpdGggbm8ga2V5d29yZCBhcmd1bWVudHMsIHVzaW5nIHRoZSBgYHB5
dGVzdC5tYXJrLk1BUktFUl9OQU1FKGMpYGAgd2lsbCBub3QgcGFzcyBgYGNgYCBhcyBhIHBvc2l0
aW9uYWwgYXJndW1lbnQgYnV0IGRlY29yYXRlIGBgY2BgIHdpdGggdGhlIGN1c3RvbSBtYXJrZXIg
KHNlZSA6cmVmOmBNYXJrRGVjb3JhdG9yIDxtYXJrPmApLiBGb3J0dW5hdGVseSwgYGBweXRlc3Qu
bWFyay5NQVJLRVJfTkFNRS53aXRoX2FyZ3NgYCBjb21lcyB0byB0aGUgcmVzY3VlOjoKK0hvd2V2
ZXIsIGlmIHRoZXJlIGlzIGEgY2FsbGFibGUgYXMgdGhlIHNpbmdsZSBwb3NpdGlvbmFsIGFyZ3Vt
ZW50IHdpdGggbm8ga2V5d29yZCBhcmd1bWVudHMsIHVzaW5nIHRoZSBgYHB5dGVzdC5tYXJrLk1B
UktFUl9OQU1FKGMpYGAgd2lsbCBub3QgcGFzcyBgYGNgYCBhcyBhIHBvc2l0aW9uYWwgYXJndW1l
bnQgYnV0IGRlY29yYXRlIGBgY2BgIHdpdGggdGhlIGN1c3RvbSBtYXJrZXIgKHNlZSA6cmVmOmBN
YXJrRGVjb3JhdG9yIDxtYXJrPmApLiBGb3J0dW5hdGVseSwgYGBweXRlc3QubWFyay5NQVJLRVJf
TkFNRS53aXRoX2FyZ3NgYCBjb21lcyB0byB0aGUgcmVzY3VlOgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9jdXN0b21fbWFya2VyLnB5CiAgICAgaW1w
b3J0IHB5dGVzdAogCisKICAgICBkZWYgaGVsbG9fd29ybGQoKmFyZ3MsICoqa3dhcmdzKToKLSAg
ICAgICAgcmV0dXJuICdIZWxsbyBXb3JsZCcKKyAgICAgICAgcmV0dXJuICJIZWxsbyBXb3JsZCIK
KwogCiAgICAgQHB5dGVzdC5tYXJrLm15X21hcmtlci53aXRoX2FyZ3MoaGVsbG9fd29ybGQpCiAg
ICAgZGVmIHRlc3Rfd2l0aF9hcmdzKCk6CiAgICAgICAgIHBhc3MKIAotVGhlIG91dHB1dCBpcyBh
cyBmb2xsb3dzOjoKK1RoZSBvdXRwdXQgaXMgYXMgZm9sbG93czoKKworLi4gY29kZS1ibG9jazo6
IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEgLXMKICAgICBNYXJrKG5hbWU9J215X21hcmtlcics
IGFyZ3M9KDxmdW5jdGlvbiBoZWxsb193b3JsZCBhdCAweGRlYWRiZWVmPiwpLCBrd2FyZ3M9e30p
CiAgICAgLgotICAgIDEgcGFzc2VkIGluIDAuMTIgc2Vjb25kcworICAgIDEgcGFzc2VkIGluIDAu
MTJzCiAKIFdlIGNhbiBzZWUgdGhhdCB0aGUgY3VzdG9tIG1hcmtlciBoYXMgaXRzIGFyZ3VtZW50
IHNldCBleHRlbmRlZCB3aXRoIHRoZSBmdW5jdGlvbiBgYGhlbGxvX3dvcmxkYGAuIFRoaXMgaXMg
dGhlIGtleSBkaWZmZXJlbmNlIGJldHdlZW4gY3JlYXRpbmcgYSBjdXN0b20gbWFya2VyIGFzIGEg
Y2FsbGFibGUsIHdoaWNoIGludm9rZXMgYGBfX2NhbGxfX2BgIGJlaGluZCB0aGUgc2NlbmVzLCBh
bmQgdXNpbmcgYGB3aXRoX2FyZ3NgYC4KIApAQCAtNDM4LDM3ICs0OTgsNDYgQEAgUmVhZGluZyBt
YXJrZXJzIHdoaWNoIHdlcmUgc2V0IGZyb20gbXVsdGlwbGUgcGxhY2VzCiAuLiByZWdlbmRvYzp3
aXBlCiAKIElmIHlvdSBhcmUgaGVhdmlseSB1c2luZyBtYXJrZXJzIGluIHlvdXIgdGVzdCBzdWl0
ZSB5b3UgbWF5IGVuY291bnRlciB0aGUgY2FzZSB3aGVyZSBhIG1hcmtlciBpcyBhcHBsaWVkIHNl
dmVyYWwgdGltZXMgdG8gYSB0ZXN0IGZ1bmN0aW9uLiAgRnJvbSBwbHVnaW4KLWNvZGUgeW91IGNh
biByZWFkIG92ZXIgYWxsIHN1Y2ggc2V0dGluZ3MuICBFeGFtcGxlOjoKK2NvZGUgeW91IGNhbiBy
ZWFkIG92ZXIgYWxsIHN1Y2ggc2V0dGluZ3MuICBFeGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9tYXJrX3RocmVlX3RpbWVzLnB5CiAgICAg
aW1wb3J0IHB5dGVzdAorCiAgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJrLmdsb2IoIm1vZHVs
ZSIsIHg9MSkKIAorCiAgICAgQHB5dGVzdC5tYXJrLmdsb2IoImNsYXNzIiwgeD0yKQotICAgIGNs
YXNzIFRlc3RDbGFzcyhvYmplY3QpOgorICAgIGNsYXNzIFRlc3RDbGFzczoKICAgICAgICAgQHB5
dGVzdC5tYXJrLmdsb2IoImZ1bmN0aW9uIiwgeD0zKQogICAgICAgICBkZWYgdGVzdF9zb21ldGhp
bmcoc2VsZik6CiAgICAgICAgICAgICBwYXNzCiAKIEhlcmUgd2UgaGF2ZSB0aGUgbWFya2VyICJn
bG9iIiBhcHBsaWVkIHRocmVlIHRpbWVzIHRvIHRoZSBzYW1lCi10ZXN0IGZ1bmN0aW9uLiAgRnJv
bSBhIGNvbmZ0ZXN0IGZpbGUgd2UgY2FuIHJlYWQgaXQgbGlrZSB0aGlzOjoKK3Rlc3QgZnVuY3Rp
b24uICBGcm9tIGEgY29uZnRlc3QgZmlsZSB3ZSBjYW4gcmVhZCBpdCBsaWtlIHRoaXM6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogICAg
IGltcG9ydCBzeXMKIAorCiAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAg
ICAgICBmb3IgbWFyayBpbiBpdGVtLml0ZXJfbWFya2VycyhuYW1lPSdnbG9iJyk6Ci0gICAgICAg
ICAgICBwcmludCAoImdsb2IgYXJncz0lcyBrd2FyZ3M9JXMiICUobWFyay5hcmdzLCBtYXJrLmt3
YXJncykpCisgICAgICAgIGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9Imdsb2Ii
KToKKyAgICAgICAgICAgIHByaW50KCJnbG9iIGFyZ3M9e30ga3dhcmdzPXt9Ii5mb3JtYXQobWFy
ay5hcmdzLCBtYXJrLmt3YXJncykpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAot
TGV0J3MgcnVuIHRoaXMgd2l0aG91dCBjYXB0dXJpbmcgb3V0cHV0IGFuZCBzZWUgd2hhdCB3ZSBn
ZXQ6OgorTGV0J3MgcnVuIHRoaXMgd2l0aG91dCBjYXB0dXJpbmcgb3V0cHV0IGFuZCBzZWUgd2hh
dCB3ZSBnZXQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIC1z
CiAgICAgZ2xvYiBhcmdzPSgnZnVuY3Rpb24nLCkga3dhcmdzPXsneCc6IDN9CiAgICAgZ2xvYiBh
cmdzPSgnY2xhc3MnLCkga3dhcmdzPXsneCc6IDJ9CiAgICAgZ2xvYiBhcmdzPSgnbW9kdWxlJywp
IGt3YXJncz17J3gnOiAxfQogICAgIC4KLSAgICAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAg
ICAxIHBhc3NlZCBpbiAwLjEycwogCiBtYXJraW5nIHBsYXRmb3JtIHNwZWNpZmljIHRlc3RzIHdp
dGggcHl0ZXN0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc5LDcgKzU0OCw5IEBAIENvbnNpZGVyIHlvdSBoYXZlIGEg
dGVzdCBzdWl0ZSB3aGljaCBtYXJrcyB0ZXN0cyBmb3IgcGFydGljdWxhciBwbGF0Zm9ybXMsCiBu
YW1lbHkgYGBweXRlc3QubWFyay5kYXJ3aW5gYCwgYGBweXRlc3QubWFyay53aW4zMmBgIGV0Yy4g
YW5kIHlvdQogYWxzbyBoYXZlIHRlc3RzIHRoYXQgcnVuIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGhh
dmUgbm8gc3BlY2lmaWMKIG1hcmtlci4gIElmIHlvdSBub3cgd2FudCB0byBoYXZlIGEgd2F5IHRv
IG9ubHkgcnVuIHRoZSB0ZXN0cwotZm9yIHlvdXIgcGFydGljdWxhciBwbGF0Zm9ybSwgeW91IGNv
dWxkIHVzZSB0aGUgZm9sbG93aW5nIHBsdWdpbjo6Citmb3IgeW91ciBwYXJ0aWN1bGFyIHBsYXRm
b3JtLCB5b3UgY291bGQgdXNlIHRoZSBmb2xsb3dpbmcgcGx1Z2luOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKICAgICAjCkBAIC00ODgs
NTkgKzU1OSw3MiBAQCBmb3IgeW91ciBwYXJ0aWN1bGFyIHBsYXRmb3JtLCB5b3UgY291bGQgdXNl
IHRoZSBmb2xsb3dpbmcgcGx1Z2luOjoKIAogICAgIEFMTCA9IHNldCgiZGFyd2luIGxpbnV4IHdp
bjMyIi5zcGxpdCgpKQogCisKICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CiAg
ICAgICAgIHN1cHBvcnRlZF9wbGF0Zm9ybXMgPSBBTEwuaW50ZXJzZWN0aW9uKG1hcmsubmFtZSBm
b3IgbWFyayBpbiBpdGVtLml0ZXJfbWFya2VycygpKQogICAgICAgICBwbGF0ID0gc3lzLnBsYXRm
b3JtCiAgICAgICAgIGlmIHN1cHBvcnRlZF9wbGF0Zm9ybXMgYW5kIHBsYXQgbm90IGluIHN1cHBv
cnRlZF9wbGF0Zm9ybXM6Ci0gICAgICAgICAgICBweXRlc3Quc2tpcCgiY2Fubm90IHJ1biBvbiBw
bGF0Zm9ybSAlcyIgJSAocGxhdCkpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiY2Fubm90IHJ1
biBvbiBwbGF0Zm9ybSB7fSIuZm9ybWF0KHBsYXQpKQogCiB0aGVuIHRlc3RzIHdpbGwgYmUgc2tp
cHBlZCBpZiB0aGV5IHdlcmUgc3BlY2lmaWVkIGZvciBhIGRpZmZlcmVudCBwbGF0Zm9ybS4KLUxl
dCdzIGRvIGEgbGl0dGxlIHRlc3QgZmlsZSB0byBzaG93IGhvdyB0aGlzIGxvb2tzIGxpa2U6Ogor
TGV0J3MgZG8gYSBsaXR0bGUgdGVzdCBmaWxlIHRvIHNob3cgaG93IHRoaXMgbG9va3MgbGlrZToK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3RfcGxhdC5w
eQogCiAgICAgaW1wb3J0IHB5dGVzdAogCisKICAgICBAcHl0ZXN0Lm1hcmsuZGFyd2luCiAgICAg
ZGVmIHRlc3RfaWZfYXBwbGVfaXNfZXZpbCgpOgogICAgICAgICBwYXNzCiAKKwogICAgIEBweXRl
c3QubWFyay5saW51eAogICAgIGRlZiB0ZXN0X2lmX2xpbnV4X3dvcmtzKCk6CiAgICAgICAgIHBh
c3MKIAorCiAgICAgQHB5dGVzdC5tYXJrLndpbjMyCiAgICAgZGVmIHRlc3RfaWZfd2luMzJfY3Jh
c2hlcygpOgogICAgICAgICBwYXNzCiAKKwogICAgIGRlZiB0ZXN0X3J1bnNfZXZlcnl3aGVyZSgp
OgogICAgICAgICBwYXNzCiAKLXRoZW4geW91IHdpbGwgc2VlIHR3byB0ZXN0cyBza2lwcGVkIGFu
ZCB0d28gZXhlY3V0ZWQgdGVzdHMgYXMgZXhwZWN0ZWQ6OgordGhlbiB5b3Ugd2lsbCBzZWUgdHdv
IHRlc3RzIHNraXBwZWQgYW5kIHR3byBleGVjdXRlZCB0ZXN0cyBhcyBleHBlY3RlZDoKKworLi4g
Y29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXJzICMgdGhpcyBvcHRpb24gcmVw
b3J0cyBza2lwIHJlYXNvbnMKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBz
ZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0g
bGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54
LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3Jt
IGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAu
eC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDQgaXRlbXMKIAogICAgIHRlc3Rf
cGxhdC5weSBzLnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsxMDAlXQorCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0
IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIFNLSVAgWzJdICRS
RUdFTkRPQ19UTVBESVIvY29uZnRlc3QucHk6MTI6IGNhbm5vdCBydW4gb24gcGxhdGZvcm0gbGlu
dXgKKyAgICBTS0lQUEVEIFsyXSBjb25mdGVzdC5weToxMjogY2Fubm90IHJ1biBvbiBwbGF0Zm9y
bSBsaW51eAorICAgID09PT09PT09PT09PT09PT09PT09PT09IDIgcGFzc2VkLCAyIHNraXBwZWQg
aW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT0KIAotICAgID09PT09PT09PT09PT09PT09
PT0gMiBwYXNzZWQsIDIgc2tpcHBlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09
PT0KK05vdGUgdGhhdCBpZiB5b3Ugc3BlY2lmeSBhIHBsYXRmb3JtIHZpYSB0aGUgbWFya2VyLWNv
bW1hbmQgbGluZSBvcHRpb24gbGlrZSB0aGlzOgogCi1Ob3RlIHRoYXQgaWYgeW91IHNwZWNpZnkg
YSBwbGF0Zm9ybSB2aWEgdGhlIG1hcmtlci1jb21tYW5kIGxpbmUgb3B0aW9uIGxpa2UgdGhpczo6
CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtbSBsaW51eAogICAgID09
PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5
dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRP
Q19UTVBESVIsIGluaWZpbGU6Ci0gICAgY29sbGVjdGVkIDQgaXRlbXMgLyAzIGRlc2VsZWN0ZWQK
KyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54
LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2Nh
Y2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCA0IGl0ZW1z
IC8gMyBkZXNlbGVjdGVkIC8gMSBzZWxlY3RlZAogCiAgICAgdGVzdF9wbGF0LnB5IC4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAK
LSAgICA9PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQsIDMgZGVzZWxlY3RlZCBpbiAwLjEyIHNl
Y29uZHMgPT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09IDEgcGFz
c2VkLCAzIGRlc2VsZWN0ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PQogCiB0aGVu
IHRoZSB1bm1hcmtlZC10ZXN0cyB3aWxsIG5vdCBiZSBydW4uICBJdCBpcyB0aHVzIGEgd2F5IHRv
IHJlc3RyaWN0IHRoZSBydW4gdG8gdGhlIHNwZWNpZmljIHRlc3RzLgogCkBAIC01NDksMzEgKzYz
Myw0MSBAQCBBdXRvbWF0aWNhbGx5IGFkZGluZyBtYXJrZXJzIGJhc2VkIG9uIHRlc3QgbmFtZXMK
IAogLi4gcmVnZW5kb2M6d2lwZQogCi1JZiB5b3UgYSB0ZXN0IHN1aXRlIHdoZXJlIHRlc3QgZnVu
Y3Rpb24gbmFtZXMgaW5kaWNhdGUgYSBjZXJ0YWluCitJZiB5b3UgaGF2ZSBhIHRlc3Qgc3VpdGUg
d2hlcmUgdGVzdCBmdW5jdGlvbiBuYW1lcyBpbmRpY2F0ZSBhIGNlcnRhaW4KIHR5cGUgb2YgdGVz
dCwgeW91IGNhbiBpbXBsZW1lbnQgYSBob29rIHRoYXQgYXV0b21hdGljYWxseSBkZWZpbmVzCiBt
YXJrZXJzIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhlIGBgLW1gYCBvcHRpb24gd2l0aCBpdC4gTGV0
J3MgbG9vawotYXQgdGhpcyB0ZXN0IG1vZHVsZTo6CithdCB0aGlzIHRlc3QgbW9kdWxlOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9tb2R1bGUucHkK
IAorCiAgICAgZGVmIHRlc3RfaW50ZXJmYWNlX3NpbXBsZSgpOgogICAgICAgICBhc3NlcnQgMAog
CisKICAgICBkZWYgdGVzdF9pbnRlcmZhY2VfY29tcGxleCgpOgogICAgICAgICBhc3NlcnQgMAog
CisKICAgICBkZWYgdGVzdF9ldmVudF9zaW1wbGUoKToKICAgICAgICAgYXNzZXJ0IDAKIAorCiAg
ICAgZGVmIHRlc3Rfc29tZXRoaW5nX2Vsc2UoKToKICAgICAgICAgYXNzZXJ0IDAKIAogV2Ugd2Fu
dCB0byBkeW5hbWljYWxseSBkZWZpbmUgdHdvIG1hcmtlcnMgYW5kIGNhbiBkbyBpdCBpbiBhCi1g
YGNvbmZ0ZXN0LnB5YGAgcGx1Z2luOjoKK2BgY29uZnRlc3QucHlgYCBwbHVnaW46CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogCiAgICAg
aW1wb3J0IHB5dGVzdAorCisKICAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMo
aXRlbXMpOgogICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgIGlmICJpbnRl
cmZhY2UiIGluIGl0ZW0ubm9kZWlkOgpAQCAtNTgxLDQ4ICs2NzUsNjEgQEAgV2Ugd2FudCB0byBk
eW5hbWljYWxseSBkZWZpbmUgdHdvIG1hcmtlcnMgYW5kIGNhbiBkbyBpdCBpbiBhCiAgICAgICAg
ICAgICBlbGlmICJldmVudCIgaW4gaXRlbS5ub2RlaWQ6CiAgICAgICAgICAgICAgICAgaXRlbS5h
ZGRfbWFya2VyKHB5dGVzdC5tYXJrLmV2ZW50KQogCi1XZSBjYW4gbm93IHVzZSB0aGUgYGAtbSBv
cHRpb25gYCB0byBzZWxlY3Qgb25lIHNldDo6Ci0KLSAgJCBweXRlc3QgLW0gaW50ZXJmYWNlIC0t
dGI9c2hvcnQKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFy
dHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRo
b24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICByb290ZGly
OiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgotICBjb2xsZWN0ZWQgNCBpdGVtcyAvIDIgZGVz
ZWxlY3RlZAotCi0gIHRlc3RfbW9kdWxlLnB5IEZGICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQotCi0gID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LSAgX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9pbnRlcmZhY2Vfc2ltcGxlIF9fX19f
X19fX19fX19fX19fX19fX19fX19fXwotICB0ZXN0X21vZHVsZS5weTozOiBpbiB0ZXN0X2ludGVy
ZmFjZV9zaW1wbGUKLSAgICAgIGFzc2VydCAwCi0gIEUgICBhc3NlcnQgMAotICBfX19fX19fX19f
X19fX19fX19fX19fX19fXyB0ZXN0X2ludGVyZmFjZV9jb21wbGV4IF9fX19fX19fX19fX19fX19f
X19fX19fX19fCi0gIHRlc3RfbW9kdWxlLnB5OjY6IGluIHRlc3RfaW50ZXJmYWNlX2NvbXBsZXgK
LSAgICAgIGFzc2VydCAwCi0gIEUgICBhc3NlcnQgMAotICA9PT09PT09PT09PT09PT09PT0gMiBm
YWlsZWQsIDIgZGVzZWxlY3RlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09Ci0K
LW9yIHRvIHNlbGVjdCBib3RoICJldmVudCIgYW5kICJpbnRlcmZhY2UiIHRlc3RzOjoKLQotICAk
IHB5dGVzdCAtbSAiaW50ZXJmYWNlIG9yIGV2ZW50IiAtLXRiPXNob3J0Ci0gID09PT09PT09PT09
PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLSAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54Lnks
IHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5p
ZmlsZToKLSAgY29sbGVjdGVkIDQgaXRlbXMgLyAxIGRlc2VsZWN0ZWQKLQotICB0ZXN0X21vZHVs
ZS5weSBGRkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbMTAwJV0KLQotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIF9fX19fX19fX19fX19fX19fX19f
X19fX19fIHRlc3RfaW50ZXJmYWNlX3NpbXBsZSBfX19fX19fX19fX19fX19fX19fX19fX19fX18K
LSAgdGVzdF9tb2R1bGUucHk6MzogaW4gdGVzdF9pbnRlcmZhY2Vfc2ltcGxlCi0gICAgICBhc3Nl
cnQgMAotICBFICAgYXNzZXJ0IDAKLSAgX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9p
bnRlcmZhY2VfY29tcGxleCBfX19fX19fX19fX19fX19fX19fX19fX19fXwotICB0ZXN0X21vZHVs
ZS5weTo2OiBpbiB0ZXN0X2ludGVyZmFjZV9jb21wbGV4Ci0gICAgICBhc3NlcnQgMAotICBFICAg
YXNzZXJ0IDAKLSAgX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2V2ZW50X3NpbXBs
ZSBfX19fX19fX19fX19fX19fX19fX19fX19fX19fXwotICB0ZXN0X21vZHVsZS5weTo5OiBpbiB0
ZXN0X2V2ZW50X3NpbXBsZQotICAgICAgYXNzZXJ0IDAKLSAgRSAgIGFzc2VydCAwCi0gID09PT09
PT09PT09PT09PT09PSAzIGZhaWxlZCwgMSBkZXNlbGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09
PT09PT09PT09PT09PT0KK1dlIGNhbiBub3cgdXNlIHRoZSBgYC1tIG9wdGlvbmBgIHRvIHNlbGVj
dCBvbmUgc2V0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisKKyAgICAkIHB5dGVzdCAtbSBp
bnRlcmZhY2UgLS10Yj1zaG9ydAorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0
IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9y
bSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0w
LngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9v
dGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCA0IGl0ZW1zIC8gMiBkZXNlbGVj
dGVkIC8gMiBzZWxlY3RlZAorCisgICAgdGVzdF9tb2R1bGUucHkgRkYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9pbnRlcmZh
Y2Vfc2ltcGxlIF9fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgIHRlc3RfbW9kdWxlLnB5
OjQ6IGluIHRlc3RfaW50ZXJmYWNlX3NpbXBsZQorICAgICAgICBhc3NlcnQgMAorICAgIEUgICBh
c3NlcnQgMAorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfaW50ZXJmYWNlX2Nv
bXBsZXggX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICB0ZXN0X21vZHVsZS5weTo4OiBp
biB0ZXN0X2ludGVyZmFjZV9jb21wbGV4CisgICAgICAgIGFzc2VydCAwCisgICAgRSAgIGFzc2Vy
dCAwCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5m
byA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6
dGVzdF9pbnRlcmZhY2Vfc2ltcGxlIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgdGVzdF9tb2R1bGUu
cHk6OnRlc3RfaW50ZXJmYWNlX2NvbXBsZXggLSBhc3NlcnQgMAorICAgID09PT09PT09PT09PT09
PT09PT09PSAyIGZhaWxlZCwgMiBkZXNlbGVjdGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09
PT09PT0KKworb3IgdG8gc2VsZWN0IGJvdGggImV2ZW50IiBhbmQgImludGVyZmFjZSIgdGVzdHM6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKKworICAgICQgcHl0ZXN0IC1tICJpbnRlcmZhY2Ug
b3IgZXZlbnQiIC0tdGI9c2hvcnQKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVz
dCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcGxhdGZv
cm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3kt
MC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJv
b3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBjb2xsZWN0ZWQgNCBpdGVtcyAvIDEgZGVzZWxl
Y3RlZCAvIDMgc2VsZWN0ZWQKKworICAgIHRlc3RfbW9kdWxlLnB5IEZGRiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQorCisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfaW50ZXJm
YWNlX3NpbXBsZSBfX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICB0ZXN0X21vZHVsZS5w
eTo0OiBpbiB0ZXN0X2ludGVyZmFjZV9zaW1wbGUKKyAgICAgICAgYXNzZXJ0IDAKKyAgICBFICAg
YXNzZXJ0IDAKKyAgICBfX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2ludGVyZmFjZV9j
b21wbGV4IF9fX19fX19fX19fX19fX19fX19fX19fX19fCisgICAgdGVzdF9tb2R1bGUucHk6ODog
aW4gdGVzdF9pbnRlcmZhY2VfY29tcGxleAorICAgICAgICBhc3NlcnQgMAorICAgIEUgICBhc3Nl
cnQgMAorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9ldmVudF9zaW1wbGUg
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICB0ZXN0X21vZHVsZS5weToxMjogaW4g
dGVzdF9ldmVudF9zaW1wbGUKKyAgICAgICAgYXNzZXJ0IDAKKyAgICBFICAgYXNzZXJ0IDAKKyAg
ICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09
PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X2lu
dGVyZmFjZV9zaW1wbGUgLSBhc3NlcnQgMAorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6dGVz
dF9pbnRlcmZhY2VfY29tcGxleCAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5
Ojp0ZXN0X2V2ZW50X3NpbXBsZSAtIGFzc2VydCAwCisgICAgPT09PT09PT09PT09PT09PT09PT09
IDMgZmFpbGVkLCAxIGRlc2VsZWN0ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbXVsdGlweXRob24ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9tdWx0aXB5dGhvbi5weQppbmRleCA5NzA4MDBjN2U2
MTQuLjlkYjY4NzllZGFlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
bXVsdGlweXRob24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbXVsdGlweXRo
b24ucHkKQEAgLTIsMTEgKzIsMTMgQEAKIG1vZHVsZSBjb250YWluaW5nIGEgcGFyYW1ldHJpemVk
IHRlc3RzIHRlc3RpbmcgY3Jvc3MtcHl0aG9uCiBzZXJpYWxpemF0aW9uIHZpYSB0aGUgcGlja2xl
IG1vZHVsZS4KICIiIgotaW1wb3J0IHB5CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2Vz
cworaW1wb3J0IHRleHR3cmFwCisKIGltcG9ydCBweXRlc3QKLWltcG9ydCBfcHl0ZXN0Ll9jb2Rl
CiAKLXB5dGhvbmxpc3QgPSBbInB5dGhvbjIuNyIsICJweXRob24zLjQiLCAicHl0aG9uMy41Il0K
K3B5dGhvbmxpc3QgPSBbInB5dGhvbjMuNSIsICJweXRob24zLjYiLCAicHl0aG9uMy43Il0KIAog
CiBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPXB5dGhvbmxpc3QpCkBAIC0yMCw1MCArMjIsNTEgQEAg
ZGVmIHB5dGhvbjIocmVxdWVzdCwgcHl0aG9uMSk6CiAgICAgcmV0dXJuIFB5dGhvbihyZXF1ZXN0
LnBhcmFtLCBweXRob24xLnBpY2tsZWZpbGUpCiAKIAotY2xhc3MgUHl0aG9uKG9iamVjdCk6Ci0K
K2NsYXNzIFB5dGhvbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbiwgcGlja2xlZmls
ZSk6Ci0gICAgICAgIHNlbGYucHl0aG9ucGF0aCA9IHB5LnBhdGgubG9jYWwuc3lzZmluZCh2ZXJz
aW9uKQorICAgICAgICBzZWxmLnB5dGhvbnBhdGggPSBzaHV0aWwud2hpY2godmVyc2lvbikKICAg
ICAgICAgaWYgbm90IHNlbGYucHl0aG9ucGF0aDoKLSAgICAgICAgICAgIHB5dGVzdC5za2lwKCIl
ciBub3QgZm91bmQiICUgKHZlcnNpb24sKSkKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ7IXJ9
IG5vdCBmb3VuZCIuZm9ybWF0KHZlcnNpb24pKQogICAgICAgICBzZWxmLnBpY2tsZWZpbGUgPSBw
aWNrbGVmaWxlCiAKICAgICBkZWYgZHVtcHMoc2VsZiwgb2JqKToKICAgICAgICAgZHVtcGZpbGUg
PSBzZWxmLnBpY2tsZWZpbGUuZGlycGF0aCgiZHVtcC5weSIpCiAgICAgICAgIGR1bXBmaWxlLndy
aXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAgICAg
IiIiCi0gICAgICAgICAgICBpbXBvcnQgcGlja2xlCi0gICAgICAgICAgICBmID0gb3Blbiglciwg
J3diJykKLSAgICAgICAgICAgIHMgPSBwaWNrbGUuZHVtcCglciwgZiwgcHJvdG9jb2w9MikKLSAg
ICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICAlIChzdHIo
c2VsZi5waWNrbGVmaWxlKSwgb2JqKQorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAg
ICAgICAgICAgICAgIHIiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgcGlja2xlCisgICAgICAg
ICAgICAgICAgZiA9IG9wZW4oeyFyfSwgJ3diJykKKyAgICAgICAgICAgICAgICBzID0gcGlja2xl
LmR1bXAoeyFyfSwgZiwgcHJvdG9jb2w9MikKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAg
ICAgICAgICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5w
aWNrbGVmaWxlKSwgb2JqCisgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAg
ICApCi0gICAgICAgIHB5LnByb2Nlc3MuY21kZXhlYygiJXMgJXMiICUgKHNlbGYucHl0aG9ucGF0
aCwgZHVtcGZpbGUpKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoKHNlbGYucHl0aG9u
cGF0aCwgc3RyKGR1bXBmaWxlKSkpCiAKICAgICBkZWYgbG9hZF9hbmRfaXNfdHJ1ZShzZWxmLCBl
eHByZXNzaW9uKToKICAgICAgICAgbG9hZGZpbGUgPSBzZWxmLnBpY2tsZWZpbGUuZGlycGF0aCgi
bG9hZC5weSIpCiAgICAgICAgIGxvYWRmaWxlLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5f
Y29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcGlj
a2xlCi0gICAgICAgICAgICBmID0gb3BlbiglciwgJ3JiJykKLSAgICAgICAgICAgIG9iaiA9IHBp
Y2tsZS5sb2FkKGYpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHJlcyA9IGV2
YWwoJXIpCi0gICAgICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgICAgIHJhaXNlIFN5
c3RlbUV4aXQoMSkKLSAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgJSAoc3RyKHNlbGYucGlj
a2xlZmlsZSksIGV4cHJlc3Npb24pCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAg
ICAgICAgICAgICAgciIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBwaWNrbGUKKyAgICAgICAg
ICAgICAgICBmID0gb3Blbih7IXJ9LCAncmInKQorICAgICAgICAgICAgICAgIG9iaiA9IHBpY2ts
ZS5sb2FkKGYpCisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmVz
ID0gZXZhbCh7IXJ9KQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXM6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoMSkKKyAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KAor
ICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5waWNrbGVmaWxlKSwgZXhwcmVzc2lvbgorICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICBwcmludChs
b2FkZmlsZSkKLSAgICAgICAgcHkucHJvY2Vzcy5jbWRleGVjKCIlcyAlcyIgJSAoc2VsZi5weXRo
b25wYXRoLCBsb2FkZmlsZSkpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgoc2VsZi5w
eXRob25wYXRoLCBzdHIobG9hZGZpbGUpKSkKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Im9iaiIsIFs0Miwge30sIHsxOiAzfV0pCiBkZWYgdGVzdF9iYXNpY19vYmplY3RzKHB5dGhvbjEs
IHB5dGhvbjIsIG9iaik6CiAgICAgcHl0aG9uMS5kdW1wcyhvYmopCi0gICAgcHl0aG9uMi5sb2Fk
X2FuZF9pc190cnVlKCJvYmogPT0gJXMiICUgb2JqKQorICAgIHB5dGhvbjIubG9hZF9hbmRfaXNf
dHJ1ZSgib2JqID09IHt9Ii5mb3JtYXQob2JqKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL25vbnB5dGhvbi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9u
b25weXRob24ucnN0CmluZGV4IDRmNWFkZjYzZmQ3Ni4uNDY0YTZjNmNlZGVmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24ucnN0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi5yc3QKQEAgLTEyLDMzICsxMiwzOCBAQCBBIGJh
c2ljIGV4YW1wbGUgZm9yIHNwZWNpZnlpbmcgdGVzdHMgaW4gWWFtbCBmaWxlcwogLi4gX2BweXRl
c3QteWFtbHdzZ2lgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9hYWZzaGFyL3B5dGVzdC15YW1sd3Nn
aS9zcmMvdGlwL3B5dGVzdF95YW1sd3NnaS5weQogLi4gX2BQeVlBTUxgOiBodHRwczovL3B5cGku
b3JnL3Byb2plY3QvUHlZQU1MLwogCi1IZXJlIGlzIGFuIGV4YW1wbGUgYGBjb25mdGVzdC5weWBg
IChleHRyYWN0ZWQgZnJvbSBBbGkgQWZzaG5hcnMgc3BlY2lhbCBwdXJwb3NlIGBweXRlc3QteWFt
bHdzZ2lgXyBwbHVnaW4pLiAgIFRoaXMgYGBjb25mdGVzdC5weWBgIHdpbGwgIGNvbGxlY3QgYGB0
ZXN0Ki55bWxgYCBmaWxlcyBhbmQgd2lsbCBleGVjdXRlIHRoZSB5YW1sLWZvcm1hdHRlZCBjb250
ZW50IGFzIGN1c3RvbSB0ZXN0czoKK0hlcmUgaXMgYW4gZXhhbXBsZSBgYGNvbmZ0ZXN0LnB5YGAg
KGV4dHJhY3RlZCBmcm9tIEFsaSBBZnNoYXIncyBzcGVjaWFsIHB1cnBvc2UgYHB5dGVzdC15YW1s
d3NnaWBfIHBsdWdpbikuICAgVGhpcyBgYGNvbmZ0ZXN0LnB5YGAgd2lsbCAgY29sbGVjdCBgYHRl
c3QqLnlhbWxgYCBmaWxlcyBhbmQgd2lsbCBleGVjdXRlIHRoZSB5YW1sLWZvcm1hdHRlZCBjb250
ZW50IGFzIGN1c3RvbSB0ZXN0czoKIAogLi4gaW5jbHVkZTo6IG5vbnB5dGhvbi9jb25mdGVzdC5w
eQogICAgIDpsaXRlcmFsOgogCiBZb3UgY2FuIGNyZWF0ZSBhIHNpbXBsZSBleGFtcGxlIGZpbGU6
CiAKLS4uIGluY2x1ZGU6OiBub25weXRob24vdGVzdF9zaW1wbGUueW1sCisuLiBpbmNsdWRlOjog
bm9ucHl0aG9uL3Rlc3Rfc2ltcGxlLnlhbWwKICAgICA6bGl0ZXJhbDoKIAogYW5kIGlmIHlvdSBp
bnN0YWxsZWQgYFB5WUFNTGBfIG9yIGEgY29tcGF0aWJsZSBZQU1MLXBhcnNlciB5b3UgY2FuCi1u
b3cgZXhlY3V0ZSB0aGUgdGVzdCBzcGVjaWZpY2F0aW9uOjoKK25vdyBleGVjdXRlIHRoZSB0ZXN0
IHNwZWNpZmljYXRpb246CiAKLSAgICBub25weXRob24gJCBweXRlc3QgdGVzdF9zaW1wbGUueW1s
CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisKKyAgICBub25weXRob24gJCBweXRlc3QgdGVzdF9z
aW1wbGUueWFtbAogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24g
c3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAt
LSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAg
IHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIvbm9ucHl0aG9uLCBpbmlmaWxlOgorICAgIHBsYXRm
b3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5
LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICBy
b290ZGlyOiAkUkVHRU5ET0NfVE1QRElSL25vbnB5dGhvbgogICAgIGNvbGxlY3RlZCAyIGl0ZW1z
CiAKLSAgICB0ZXN0X3NpbXBsZS55bWwgRi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbMTAwJV0KKyAgICB0ZXN0X3NpbXBsZS55YW1sIEYuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX18g
dXNlY2FzZTogaGVsbG8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgICAgdXNlY2Fz
ZSBleGVjdXRpb24gZmFpbGVkCiAgICAgICAgc3BlYyBmYWlsZWQ6ICdzb21lJzogJ290aGVyJwog
ICAgICAgIG5vIGZ1cnRoZXIgZGV0YWlscyBrbm93biBhdCB0aGlzIHBvaW50LgotICAgID09PT09
PT09PT09PT09PT09PT09IDEgZmFpbGVkLCAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09
PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qg
c3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3Rf
c2ltcGxlLnlhbWw6OmhlbGxvCisgICAgPT09PT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQs
IDEgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiByZWdlbmRv
Yzp3aXBlCiAKQEAgLTU1LDM3ICs2MCw0NiBAQCB5b3VyIG93biBkb21haW4gc3BlY2lmaWMgdGVz
dGluZyBsYW5ndWFnZSB0aGlzIHdheS4KICAgICB3aWxsIGJlIHJlcG9ydGVkIGFzIGEgKHJlZCkg
c3RyaW5nLgogCiBgYHJlcG9ydGluZm8oKWBgIGlzIHVzZWQgZm9yIHJlcHJlc2VudGluZyB0aGUg
dGVzdCBsb2NhdGlvbiBhbmQgaXMgYWxzbwotY29uc3VsdGVkIHdoZW4gcmVwb3J0aW5nIGluIGBg
dmVyYm9zZWBgIG1vZGU6OgorY29uc3VsdGVkIHdoZW4gcmVwb3J0aW5nIGluIGBgdmVyYm9zZWBg
IG1vZGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgIG5vbnB5dGhvbiAkIHB5dGVz
dCAtdgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRz
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRo
b24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9O
X1BSRUZJWC9iaW4vcHl0aG9uMy41Ci0gICAgY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUKLSAgICBy
b290ZGlyOiAkUkVHRU5ET0NfVE1QRElSL25vbnB5dGhvbiwgaW5pZmlsZToKKyAgICBwbGF0Zm9y
bSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0w
LngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSL25vbnB5
dGhvbgogICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAyIGl0ZW1zCiAKLSAgICB0ZXN0X3Np
bXBsZS55bWw6OmhlbGxvIEZBSUxFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbIDUwJV0KLSAgICB0ZXN0X3NpbXBsZS55bWw6Om9rIFBBU1NFRCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KKyAgICB0ZXN0X3NpbXBsZS55YW1s
OjpoZWxsbyBGQUlMRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIDUw
JV0KKyAgICB0ZXN0X3NpbXBsZS55YW1sOjpvayBQQVNTRUQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAogICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAg
ICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gdXNlY2FzZTogaGVsbG8gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCiAgICAgdXNlY2FzZSBleGVjdXRpb24gZmFpbGVkCiAgICAg
ICAgc3BlYyBmYWlsZWQ6ICdzb21lJzogJ290aGVyJwogICAgICAgIG5vIGZ1cnRoZXIgZGV0YWls
cyBrbm93biBhdCB0aGlzIHBvaW50LgotICAgID09PT09PT09PT09PT09PT09PT09IDEgZmFpbGVk
LCAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3Rfc2ltcGxlLnlhbWw6OmhlbGxvCisgICAg
PT09PT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkIGluIDAuMTJzID09PT09
PT09PT09PT09PT09PT09PT09PQogCiAuLiByZWdlbmRvYzp3aXBlCiAKIFdoaWxlIGRldmVsb3Bp
bmcgeW91ciBjdXN0b20gdGVzdCBjb2xsZWN0aW9uIGFuZCBleGVjdXRpb24gaXQncyBhbHNvCi1p
bnRlcmVzdGluZyB0byBqdXN0IGxvb2sgYXQgdGhlIGNvbGxlY3Rpb24gdHJlZTo6CitpbnRlcmVz
dGluZyB0byBqdXN0IGxvb2sgYXQgdGhlIGNvbGxlY3Rpb24gdHJlZToKKworLi4gY29kZS1ibG9j
azo6IHB5dGVzdAogCiAgICAgbm9ucHl0aG9uICQgcHl0ZXN0IC0tY29sbGVjdC1vbmx5CiAgICAg
PT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwg
cHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VO
RE9DX1RNUERJUi9ub25weXRob24sIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNo
ZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRP
Q19UTVBESVIvbm9ucHl0aG9uCiAgICAgY29sbGVjdGVkIDIgaXRlbXMKLSAgICA8WWFtbEZpbGUg
J3Rlc3Rfc2ltcGxlLnltbCc+Ci0gICAgICA8WWFtbEl0ZW0gJ2hlbGxvJz4KLSAgICAgIDxZYW1s
SXRlbSAnb2snPgogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGlu
IDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PQorICAgIDxQYWNrYWdlIG5vbnB5
dGhvbj4KKyAgICAgIDxZYW1sRmlsZSB0ZXN0X3NpbXBsZS55YW1sPgorICAgICAgICA8WWFtbEl0
ZW0gaGVsbG8+CisgICAgICAgIDxZYW1sSXRlbSBvaz4KKworICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9fX2luaXRfXy5w
eQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBm
b3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vY29uZnRlc3QucHkKaW5kZXggODQyOWRkMTE0YjE4
Li42ZTVhNTcwOTI5MDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25v
bnB5dGhvbi9jb25mdGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25w
eXRob24vY29uZnRlc3QucHkKQEAgLTEsNDkgKzEsNDcgQEAKICMgY29udGVudCBvZiBjb25mdGVz
dC5weQotCiBpbXBvcnQgcHl0ZXN0CiAKIAogZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGFyZW50
LCBwYXRoKToKLSAgICBpZiBwYXRoLmV4dCA9PSAiLnltbCIgYW5kIHBhdGguYmFzZW5hbWUuc3Rh
cnRzd2l0aCgidGVzdCIpOgotICAgICAgICByZXR1cm4gWWFtbEZpbGUocGF0aCwgcGFyZW50KQor
ICAgIGlmIHBhdGguZXh0ID09ICIueWFtbCIgYW5kIHBhdGguYmFzZW5hbWUuc3RhcnRzd2l0aCgi
dGVzdCIpOgorICAgICAgICByZXR1cm4gWWFtbEZpbGUuZnJvbV9wYXJlbnQocGFyZW50LCBmc3Bh
dGg9cGF0aCkKIAogCiBjbGFzcyBZYW1sRmlsZShweXRlc3QuRmlsZSk6Ci0KICAgICBkZWYgY29s
bGVjdChzZWxmKToKLSAgICAgICAgaW1wb3J0IHlhbWwgICMgd2UgbmVlZCBhIHlhbWwgcGFyc2Vy
LCBlLmcuIFB5WUFNTAorICAgICAgICAjIFdlIG5lZWQgYSB5YW1sIHBhcnNlciwgZS5nLiBQeVlB
TUwuCisgICAgICAgIGltcG9ydCB5YW1sCiAKICAgICAgICAgcmF3ID0geWFtbC5zYWZlX2xvYWQo
c2VsZi5mc3BhdGgub3BlbigpKQogICAgICAgICBmb3IgbmFtZSwgc3BlYyBpbiBzb3J0ZWQocmF3
Lml0ZW1zKCkpOgotICAgICAgICAgICAgeWllbGQgWWFtbEl0ZW0obmFtZSwgc2VsZiwgc3BlYykK
KyAgICAgICAgICAgIHlpZWxkIFlhbWxJdGVtLmZyb21fcGFyZW50KHNlbGYsIG5hbWU9bmFtZSwg
c3BlYz1zcGVjKQogCiAKIGNsYXNzIFlhbWxJdGVtKHB5dGVzdC5JdGVtKToKLQogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lLCBwYXJlbnQsIHNwZWMpOgotICAgICAgICBzdXBlcihZYW1sSXRl
bSwgc2VsZikuX19pbml0X18obmFtZSwgcGFyZW50KQorICAgICAgICBzdXBlcigpLl9faW5pdF9f
KG5hbWUsIHBhcmVudCkKICAgICAgICAgc2VsZi5zcGVjID0gc3BlYwogCiAgICAgZGVmIHJ1bnRl
c3Qoc2VsZik6CiAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3J0ZWQoc2VsZi5zcGVjLml0
ZW1zKCkpOgotICAgICAgICAgICAgIyBzb21lIGN1c3RvbSB0ZXN0IGV4ZWN1dGlvbiAoZHVtYiBl
eGFtcGxlIGZvbGxvd3MpCisgICAgICAgICAgICAjIFNvbWUgY3VzdG9tIHRlc3QgZXhlY3V0aW9u
IChkdW1iIGV4YW1wbGUgZm9sbG93cykuCiAgICAgICAgICAgICBpZiBuYW1lICE9IHZhbHVlOgog
ICAgICAgICAgICAgICAgIHJhaXNlIFlhbWxFeGNlcHRpb24oc2VsZiwgbmFtZSwgdmFsdWUpCiAK
ICAgICBkZWYgcmVwcl9mYWlsdXJlKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICAiIiIgY2FsbGVk
IHdoZW4gc2VsZi5ydW50ZXN0KCkgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gIiIiCisgICAgICAgICIi
IkNhbGxlZCB3aGVuIHNlbGYucnVudGVzdCgpIHJhaXNlcyBhbiBleGNlcHRpb24uIiIiCiAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoZXhjaW5mby52YWx1ZSwgWWFtbEV4Y2VwdGlvbik6CiAgICAgICAg
ICAgICByZXR1cm4gIlxuIi5qb2luKAogICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAg
ICAgICAgInVzZWNhc2UgZXhlY3V0aW9uIGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICIg
ICBzcGVjIGZhaWxlZDogJXI6ICVyIiAlIGV4Y2luZm8udmFsdWUuYXJnc1sxOjNdLAorICAgICAg
ICAgICAgICAgICAgICAiICAgc3BlYyBmYWlsZWQ6IHsxIXJ9OiB7MiFyfSIuZm9ybWF0KCpleGNp
bmZvLnZhbHVlLmFyZ3MpLAogICAgICAgICAgICAgICAgICAgICAiICAgbm8gZnVydGhlciBkZXRh
aWxzIGtub3duIGF0IHRoaXMgcG9pbnQuIiwKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAg
ICApCiAKICAgICBkZWYgcmVwb3J0aW5mbyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZnNw
YXRoLCAwLCAidXNlY2FzZTogJXMiICUgc2VsZi5uYW1lCisgICAgICAgIHJldHVybiBzZWxmLmZz
cGF0aCwgMCwgInVzZWNhc2U6IHt9Ii5mb3JtYXQoc2VsZi5uYW1lKQogCiAKIGNsYXNzIFlhbWxF
eGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiIgY3VzdG9tIGV4Y2VwdGlvbiBmb3IgZXJyb3Ig
cmVwb3J0aW5nLiAiIiIKKyAgICAiIiJDdXN0b20gZXhjZXB0aW9uIGZvciBlcnJvciByZXBvcnRp
bmcuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24v
dGVzdF9zaW1wbGUueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL3Rl
c3Rfc2ltcGxlLnlhbWwKc2ltaWxhcml0eSBpbmRleCA3NSUKcmVuYW1lIGZyb20gTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL3Rlc3Rfc2ltcGxlLnltbApyZW5hbWUgdG8gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL3Rlc3Rfc2ltcGxlLnlhbWwKaW5kZXgg
ZjBkOGQxMWZjM2UxLi44ZTNlN2E0YmJjOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9leGFtcGxlL25vbnB5dGhvbi90ZXN0X3NpbXBsZS55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvbm9ucHl0aG9uL3Rlc3Rfc2ltcGxlLnlhbWwKQEAgLTEsNCArMSw0IEBACi0j
IHRlc3Rfc2ltcGxlLnltbAorIyB0ZXN0X3NpbXBsZS55YW1sCiBvazoKICAgICBzdWIxOiBzdWIx
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2ZjQwZDBkZjllLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL2NvbmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2V4YW1wbGUvbm9ucHl0aG9uL3Rlc3Rfc2ltcGxlLnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvcGFyYW1ldHJpemUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvcGFyYW1ldHJpemUucnN0CmluZGV4IDg4MjcwMGZlYzExZS4uZjFjOThkNDQ5ZmI3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9wYXJhbWV0cml6ZS5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcGFyYW1ldHJpemUucnN0CkBAIC0xOSwzNyAr
MTksNDcgQEAgR2VuZXJhdGluZyBwYXJhbWV0ZXJzIGNvbWJpbmF0aW9ucywgZGVwZW5kaW5nIG9u
IGNvbW1hbmQgbGluZQogCiBMZXQncyBzYXkgd2Ugd2FudCB0byBleGVjdXRlIGEgdGVzdCB3aXRo
IGRpZmZlcmVudCBjb21wdXRhdGlvbgogcGFyYW1ldGVycyBhbmQgdGhlIHBhcmFtZXRlciByYW5n
ZSBzaGFsbCBiZSBkZXRlcm1pbmVkIGJ5IGEgY29tbWFuZAotbGluZSBhcmd1bWVudC4gIExldCdz
IGZpcnN0IHdyaXRlIGEgc2ltcGxlIChkby1ub3RoaW5nKSBjb21wdXRhdGlvbiB0ZXN0OjoKK2xp
bmUgYXJndW1lbnQuICBMZXQncyBmaXJzdCB3cml0ZSBhIHNpbXBsZSAoZG8tbm90aGluZykgY29t
cHV0YXRpb24gdGVzdDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50
IG9mIHRlc3RfY29tcHV0ZS5weQogCisKICAgICBkZWYgdGVzdF9jb21wdXRlKHBhcmFtMSk6CiAg
ICAgICAgIGFzc2VydCBwYXJhbTEgPCA0CiAKLU5vdyB3ZSBhZGQgYSB0ZXN0IGNvbmZpZ3VyYXRp
b24gbGlrZSB0aGlzOjoKK05vdyB3ZSBhZGQgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gbGlrZSB0aGlz
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3Qu
cHkKIAorCiAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICAgICAgcGFyc2Vy
LmFkZG9wdGlvbigiLS1hbGwiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgaGVs
cD0icnVuIGFsbCBjb21iaW5hdGlvbnMiKQorICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWFs
bCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InJ1biBhbGwgY29tYmluYXRpb25zIikKKwog
CiAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgIGlmICdw
YXJhbTEnIGluIG1ldGFmdW5jLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgIGlmIG1ldGFmdW5j
LmNvbmZpZy5nZXRvcHRpb24oJ2FsbCcpOgorICAgICAgICBpZiAicGFyYW0xIiBpbiBtZXRhZnVu
Yy5maXh0dXJlbmFtZXM6CisgICAgICAgICAgICBpZiBtZXRhZnVuYy5jb25maWcuZ2V0b3B0aW9u
KCJhbGwiKToKICAgICAgICAgICAgICAgICBlbmQgPSA1CiAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgIGVuZCA9IDIKICAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJw
YXJhbTEiLCByYW5nZShlbmQpKQogCi1UaGlzIG1lYW5zIHRoYXQgd2Ugb25seSBydW4gMiB0ZXN0
cyBpZiB3ZSBkbyBub3QgcGFzcyBgYC0tYWxsYGA6OgorVGhpcyBtZWFucyB0aGF0IHdlIG9ubHkg
cnVuIDIgdGVzdHMgaWYgd2UgZG8gbm90IHBhc3MgYGAtLWFsbGBgOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSB0ZXN0X2NvbXB1dGUucHkKICAgICAuLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbMTAwJV0KLSAgICAyIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICAyIHBhc3NlZCBp
biAwLjEycwogCiBXZSBydW4gb25seSB0d28gY29tcHV0YXRpb25zLCBzbyB3ZSBzZWUgdHdvIGRv
dHMuCi1sZXQncyBydW4gdGhlIGZ1bGwgbW9udHk6OgorbGV0J3MgcnVuIHRoZSBmdWxsIG1vbnR5
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSAtLWFsbAogICAg
IC4uLi5GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsxMDAlXQpAQCAtNjIsOCArNzIsMTAgQEAgbGV0J3MgcnVuIHRoZSBmdWxs
IG1vbnR5OjoKICAgICA+ICAgICAgIGFzc2VydCBwYXJhbTEgPCA0CiAgICAgRSAgICAgICBhc3Nl
cnQgNCA8IDQKIAotICAgIHRlc3RfY29tcHV0ZS5weTozOiBBc3NlcnRpb25FcnJvcgotICAgIDEg
ZmFpbGVkLCA0IHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICB0ZXN0X2NvbXB1dGUucHk6NDog
QXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qg
c3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3Rf
Y29tcHV0ZS5weTo6dGVzdF9jb21wdXRlWzRdIC0gYXNzZXJ0IDQgPCA0CisgICAgMSBmYWlsZWQs
IDQgcGFzc2VkIGluIDAuMTJzCiAKIEFzIGV4cGVjdGVkIHdoZW4gcnVubmluZyB0aGUgZnVsbCBy
YW5nZSBvZiBgYHBhcmFtMWBgIHZhbHVlcwogd2UnbGwgZ2V0IGFuIGVycm9yIG9uIHRoZSBsYXN0
IG9uZS4KQEAgLTc5LDcgKzkxLDkgQEAgUnVubmluZyBweXRlc3Qgd2l0aCBgYC0tY29sbGVjdC1v
bmx5YGAgd2lsbCBzaG93IHRoZSBnZW5lcmF0ZWQgSURzLgogCiBOdW1iZXJzLCBzdHJpbmdzLCBi
b29sZWFucyBhbmQgTm9uZSB3aWxsIGhhdmUgdGhlaXIgdXN1YWwgc3RyaW5nIHJlcHJlc2VudGF0
aW9uCiB1c2VkIGluIHRoZSB0ZXN0IElELiBGb3Igb3RoZXIgb2JqZWN0cywgcHl0ZXN0IHdpbGwg
bWFrZSBhIHN0cmluZyBiYXNlZCBvbgotdGhlIGFyZ3VtZW50IG5hbWU6OgordGhlIGFyZ3VtZW50
IG5hbWU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0
X3RpbWUucHkKIApAQCAtMTA4LDcgKzEyMiw3IEBAIHRoZSBhcmd1bWVudCBuYW1lOjoKICAgICBk
ZWYgaWRmbih2YWwpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgKGRhdGV0aW1lLCkpOgog
ICAgICAgICAgICAgIyBub3RlIHRoaXMgd291bGRuJ3Qgc2hvdyBhbnkgaG91cnMvbWludXRlcy9z
ZWNvbmRzCi0gICAgICAgICAgICByZXR1cm4gdmFsLnN0cmZ0aW1lKCclWSVtJWQnKQorICAgICAg
ICAgICAgcmV0dXJuIHZhbC5zdHJmdGltZSgiJVklbSVkIikKIAogCiAgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJhLGIsZXhwZWN0ZWQiLCB0ZXN0ZGF0YSwgaWRzPWlkZm4pCkBAIC0xMTYs
MTIgKzEzMCwxOCBAQCB0aGUgYXJndW1lbnQgbmFtZTo6CiAgICAgICAgIGRpZmYgPSBhIC0gYgog
ICAgICAgICBhc3NlcnQgZGlmZiA9PSBleHBlY3RlZAogCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJhLGIsZXhwZWN0ZWQiLCBbCi0gICAgICAgIHB5dGVzdC5wYXJhbShkYXRldGltZSgy
MDAxLCAxMiwgMTIpLCBkYXRldGltZSgyMDAxLCAxMiwgMTEpLAotICAgICAgICAgICAgICAgICAg
ICAgdGltZWRlbHRhKDEpLCBpZD0nZm9yd2FyZCcpLAotICAgICAgICBweXRlc3QucGFyYW0oZGF0
ZXRpbWUoMjAwMSwgMTIsIDExKSwgZGF0ZXRpbWUoMjAwMSwgMTIsIDEyKSwKLSAgICAgICAgICAg
ICAgICAgICAgIHRpbWVkZWx0YSgtMSksIGlkPSdiYWNrd2FyZCcpLAotICAgIF0pCisKKyAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJhLGIsZXhwZWN0ZWQiLAorICAgICAg
ICBbCisgICAgICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUo
MjAwMSwgMTIsIDEyKSwgZGF0ZXRpbWUoMjAwMSwgMTIsIDExKSwgdGltZWRlbHRhKDEpLCBpZD0i
Zm9yd2FyZCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBweXRlc3QucGFyYW0oCisgICAg
ICAgICAgICAgICAgZGF0ZXRpbWUoMjAwMSwgMTIsIDExKSwgZGF0ZXRpbWUoMjAwMSwgMTIsIDEy
KSwgdGltZWRlbHRhKC0xKSwgaWQ9ImJhY2t3YXJkIgorICAgICAgICAgICAgKSwKKyAgICAgICAg
XSwKKyAgICApCiAgICAgZGVmIHRlc3RfdGltZWRpc3RhbmNlX3YzKGEsIGIsIGV4cGVjdGVkKToK
ICAgICAgICAgZGlmZiA9IGEgLSBiCiAgICAgICAgIGFzc2VydCBkaWZmID09IGV4cGVjdGVkCkBA
IC0xMzQsMjUgKzE1NCwyOCBAQCB1c2VkIGFzIHRoZSB0ZXN0IElEcy4gVGhlc2UgYXJlIHN1Y2Np
bmN0LCBidXQgY2FuIGJlIGEgcGFpbiB0byBtYWludGFpbi4KIEluIGBgdGVzdF90aW1lZGlzdGFu
Y2VfdjJgYCwgd2Ugc3BlY2lmaWVkIGBgaWRzYGAgYXMgYSBmdW5jdGlvbiB0aGF0IGNhbiBnZW5l
cmF0ZSBhCiBzdHJpbmcgcmVwcmVzZW50YXRpb24gdG8gbWFrZSBwYXJ0IG9mIHRoZSB0ZXN0IElE
LiBTbyBvdXIgYGBkYXRldGltZWBgIHZhbHVlcyB1c2UgdGhlCiBsYWJlbCBnZW5lcmF0ZWQgYnkg
YGBpZGZuYGAsIGJ1dCBiZWNhdXNlIHdlIGRpZG4ndCBnZW5lcmF0ZSBhIGxhYmVsIGZvciBgYHRp
bWVkZWx0YWBgCi1vYmplY3RzLCB0aGV5IGFyZSBzdGlsbCB1c2luZyB0aGUgZGVmYXVsdCBweXRl
c3QgcmVwcmVzZW50YXRpb246Ogorb2JqZWN0cywgdGhleSBhcmUgc3RpbGwgdXNpbmcgdGhlIGRl
ZmF1bHQgcHl0ZXN0IHJlcHJlc2VudGF0aW9uOgogCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAK
ICAgICAkIHB5dGVzdCB0ZXN0X3RpbWUucHkgLS1jb2xsZWN0LW9ubHkKICAgICA9PT09PT09PT09
PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54
LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElS
LCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYu
eC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklY
Ly5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVj
dGVkIDggaXRlbXMKLSAgICA8TW9kdWxlICd0ZXN0X3RpbWUucHknPgotICAgICAgPEZ1bmN0aW9u
ICd0ZXN0X3RpbWVkaXN0YW5jZV92MFthMC1iMC1leHBlY3RlZDBdJz4KLSAgICAgIDxGdW5jdGlv
biAndGVzdF90aW1lZGlzdGFuY2VfdjBbYTEtYjEtZXhwZWN0ZWQxXSc+Ci0gICAgICA8RnVuY3Rp
b24gJ3Rlc3RfdGltZWRpc3RhbmNlX3YxW2ZvcndhcmRdJz4KLSAgICAgIDxGdW5jdGlvbiAndGVz
dF90aW1lZGlzdGFuY2VfdjFbYmFja3dhcmRdJz4KLSAgICAgIDxGdW5jdGlvbiAndGVzdF90aW1l
ZGlzdGFuY2VfdjJbMjAwMTEyMTItMjAwMTEyMTEtZXhwZWN0ZWQwXSc+Ci0gICAgICA8RnVuY3Rp
b24gJ3Rlc3RfdGltZWRpc3RhbmNlX3YyWzIwMDExMjExLTIwMDExMjEyLWV4cGVjdGVkMV0nPgot
ICAgICAgPEZ1bmN0aW9uICd0ZXN0X3RpbWVkaXN0YW5jZV92M1tmb3J3YXJkXSc+Ci0gICAgICA8
RnVuY3Rpb24gJ3Rlc3RfdGltZWRpc3RhbmNlX3YzW2JhY2t3YXJkXSc+Ci0KLSAgICA9PT09PT09
PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09
PT09PT09PT09PT09CisKKyAgICA8TW9kdWxlIHRlc3RfdGltZS5weT4KKyAgICAgIDxGdW5jdGlv
biB0ZXN0X3RpbWVkaXN0YW5jZV92MFthMC1iMC1leHBlY3RlZDBdPgorICAgICAgPEZ1bmN0aW9u
IHRlc3RfdGltZWRpc3RhbmNlX3YwW2ExLWIxLWV4cGVjdGVkMV0+CisgICAgICA8RnVuY3Rpb24g
dGVzdF90aW1lZGlzdGFuY2VfdjFbZm9yd2FyZF0+CisgICAgICA8RnVuY3Rpb24gdGVzdF90aW1l
ZGlzdGFuY2VfdjFbYmFja3dhcmRdPgorICAgICAgPEZ1bmN0aW9uIHRlc3RfdGltZWRpc3RhbmNl
X3YyWzIwMDExMjEyLTIwMDExMjExLWV4cGVjdGVkMF0+CisgICAgICA8RnVuY3Rpb24gdGVzdF90
aW1lZGlzdGFuY2VfdjJbMjAwMTEyMTEtMjAwMTEyMTItZXhwZWN0ZWQxXT4KKyAgICAgIDxGdW5j
dGlvbiB0ZXN0X3RpbWVkaXN0YW5jZV92M1tmb3J3YXJkXT4KKyAgICAgIDxGdW5jdGlvbiB0ZXN0
X3RpbWVkaXN0YW5jZV92M1tiYWNrd2FyZF0+CisKKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAK
IEluIGBgdGVzdF90aW1lZGlzdGFuY2VfdjNgYCwgd2UgdXNlZCBgYHB5dGVzdC5wYXJhbWBgIHRv
IHNwZWNpZnkgdGhlIHRlc3QgSURzCiB0b2dldGhlciB3aXRoIHRoZSBhY3R1YWwgZGF0YSwgaW5z
dGVhZCBvZiBsaXN0aW5nIHRoZW0gc2VwYXJhdGVseS4KQEAgLTE2NSwxMCArMTg4LDEzIEBAIEEg
cXVpY2sgcG9ydCBvZiAidGVzdHNjZW5hcmlvcyIKIEhlcmUgaXMgYSBxdWljayBwb3J0IHRvIHJ1
biB0ZXN0cyBjb25maWd1cmVkIHdpdGggYHRlc3Qgc2NlbmFyaW9zYF8sCiBhbiBhZGQtb24gZnJv
bSBSb2JlcnQgQ29sbGlucyBmb3IgdGhlIHN0YW5kYXJkIHVuaXR0ZXN0IGZyYW1ld29yay4gV2UK
IG9ubHkgaGF2ZSB0byB3b3JrIGEgYml0IHRvIGNvbnN0cnVjdCB0aGUgY29ycmVjdCBhcmd1bWVu
dHMgZm9yIHB5dGVzdCdzCi06cHk6ZnVuYzpgTWV0YWZ1bmMucGFyYW1ldHJpemVgOjoKKzpweTpm
dW5jOmBNZXRhZnVuYy5wYXJhbWV0cml6ZWA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAog
ICAgICMgY29udGVudCBvZiB0ZXN0X3NjZW5hcmlvcy5weQogCisKICAgICBkZWYgcHl0ZXN0X2dl
bmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKICAgICAgICAgaWRsaXN0ID0gW10KICAgICAgICAgYXJn
dmFsdWVzID0gW10KQEAgLTE3NiwxMyArMjAyLDE1IEBAIG9ubHkgaGF2ZSB0byB3b3JrIGEgYml0
IHRvIGNvbnN0cnVjdCB0aGUgY29ycmVjdCBhcmd1bWVudHMgZm9yIHB5dGVzdCdzCiAgICAgICAg
ICAgICBpZGxpc3QuYXBwZW5kKHNjZW5hcmlvWzBdKQogICAgICAgICAgICAgaXRlbXMgPSBzY2Vu
YXJpb1sxXS5pdGVtcygpCiAgICAgICAgICAgICBhcmduYW1lcyA9IFt4WzBdIGZvciB4IGluIGl0
ZW1zXQotICAgICAgICAgICAgYXJndmFsdWVzLmFwcGVuZCgoW3hbMV0gZm9yIHggaW4gaXRlbXNd
KSkKKyAgICAgICAgICAgIGFyZ3ZhbHVlcy5hcHBlbmQoW3hbMV0gZm9yIHggaW4gaXRlbXNdKQog
ICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZShhcmduYW1lcywgYXJndmFsdWVzLCBpZHM9aWRs
aXN0LCBzY29wZT0iY2xhc3MiKQogCi0gICAgc2NlbmFyaW8xID0gKCdiYXNpYycsIHsnYXR0cmli
dXRlJzogJ3ZhbHVlJ30pCi0gICAgc2NlbmFyaW8yID0gKCdhZHZhbmNlZCcsIHsnYXR0cmlidXRl
JzogJ3ZhbHVlMid9KQogCi0gICAgY2xhc3MgVGVzdFNhbXBsZVdpdGhTY2VuYXJpb3Mob2JqZWN0
KToKKyAgICBzY2VuYXJpbzEgPSAoImJhc2ljIiwgeyJhdHRyaWJ1dGUiOiAidmFsdWUifSkKKyAg
ICBzY2VuYXJpbzIgPSAoImFkdmFuY2VkIiwgeyJhdHRyaWJ1dGUiOiAidmFsdWUyIn0pCisKKwor
ICAgIGNsYXNzIFRlc3RTYW1wbGVXaXRoU2NlbmFyaW9zOgogICAgICAgICBzY2VuYXJpb3MgPSBb
c2NlbmFyaW8xLCBzY2VuYXJpbzJdCiAKICAgICAgICAgZGVmIHRlc3RfZGVtbzEoc2VsZiwgYXR0
cmlidXRlKToKQEAgLTE5MSwzNSArMjE5LDQwIEBAIG9ubHkgaGF2ZSB0byB3b3JrIGEgYml0IHRv
IGNvbnN0cnVjdCB0aGUgY29ycmVjdCBhcmd1bWVudHMgZm9yIHB5dGVzdCdzCiAgICAgICAgIGRl
ZiB0ZXN0X2RlbW8yKHNlbGYsIGF0dHJpYnV0ZSk6CiAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShhdHRyaWJ1dGUsIHN0cikKIAotdGhpcyBpcyBhIGZ1bGx5IHNlbGYtY29udGFpbmVkIGV4
YW1wbGUgd2hpY2ggeW91IGNhbiBydW4gd2l0aDo6Cit0aGlzIGlzIGEgZnVsbHkgc2VsZi1jb250
YWluZWQgZXhhbXBsZSB3aGljaCB5b3UgY2FuIHJ1biB3aXRoOgorCisuLiBjb2RlLWJsb2NrOjog
cHl0ZXN0CiAKICAgICAkIHB5dGVzdCB0ZXN0X3NjZW5hcmlvcy5weQogICAgID09PT09PT09PT09
PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngu
eSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIs
IGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54
LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgv
LnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0
ZWQgNCBpdGVtcwogCiAgICAgdGVzdF9zY2VuYXJpb3MucHkgLi4uLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09IDQgcGFzc2VkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09
PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSA0IHBhc3NlZCBpbiAwLjEy
cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1JZiB5b3UganVzdCBjb2xsZWN0IHRl
c3RzIHlvdSdsbCBhbHNvIG5pY2VseSBzZWUgJ2FkdmFuY2VkJyBhbmQgJ2Jhc2ljJyBhcyB2YXJp
YW50cyBmb3IgdGhlIHRlc3QgZnVuY3Rpb246OgorSWYgeW91IGp1c3QgY29sbGVjdCB0ZXN0cyB5
b3UnbGwgYWxzbyBuaWNlbHkgc2VlICdhZHZhbmNlZCcgYW5kICdiYXNpYycgYXMgdmFyaWFudHMg
Zm9yIHRoZSB0ZXN0IGZ1bmN0aW9uOgogCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAk
IHB5dGVzdCAtLWNvbGxlY3Qtb25seSB0ZXN0X3NjZW5hcmlvcy5weQogICAgID09PT09PT09PT09
PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngu
eSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIs
IGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54
LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgv
LnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0
ZWQgNCBpdGVtcwotICAgIDxNb2R1bGUgJ3Rlc3Rfc2NlbmFyaW9zLnB5Jz4KLSAgICAgIDxDbGFz
cyAnVGVzdFNhbXBsZVdpdGhTY2VuYXJpb3MnPgotICAgICAgICA8SW5zdGFuY2UgJygpJz4KLSAg
ICAgICAgICA8RnVuY3Rpb24gJ3Rlc3RfZGVtbzFbYmFzaWNdJz4KLSAgICAgICAgICA8RnVuY3Rp
b24gJ3Rlc3RfZGVtbzJbYmFzaWNdJz4KLSAgICAgICAgICA8RnVuY3Rpb24gJ3Rlc3RfZGVtbzFb
YWR2YW5jZWRdJz4KLSAgICAgICAgICA8RnVuY3Rpb24gJ3Rlc3RfZGVtbzJbYWR2YW5jZWRdJz4K
IAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNlY29u
ZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA8TW9kdWxlIHRlc3Rfc2NlbmFyaW9zLnB5
PgorICAgICAgPENsYXNzIFRlc3RTYW1wbGVXaXRoU2NlbmFyaW9zPgorICAgICAgICAgIDxGdW5j
dGlvbiB0ZXN0X2RlbW8xW2Jhc2ljXT4KKyAgICAgICAgICA8RnVuY3Rpb24gdGVzdF9kZW1vMlti
YXNpY10+CisgICAgICAgICAgPEZ1bmN0aW9uIHRlc3RfZGVtbzFbYWR2YW5jZWRdPgorICAgICAg
ICAgIDxGdW5jdGlvbiB0ZXN0X2RlbW8yW2FkdmFuY2VkXT4KKworICAgID09PT09PT09PT09PT09
PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT0KIAogTm90ZSB0aGF0IHdlIHRvbGQgYGBtZXRhZnVuYy5wYXJhbWV0cml6ZSgpYGAgdGhh
dCB5b3VyIHNjZW5hcmlvIHZhbHVlcwogc2hvdWxkIGJlIGNvbnNpZGVyZWQgY2xhc3Mtc2NvcGVk
LiAgV2l0aCBweXRlc3QtMi4zIHRoaXMgbGVhZHMgdG8gYQpAQCAtMjMzLDEyICsyNjYsMTYgQEAg
RGVmZXJyaW5nIHRoZSBzZXR1cCBvZiBwYXJhbWV0cml6ZWQgcmVzb3VyY2VzCiBUaGUgcGFyYW1l
dHJpemF0aW9uIG9mIHRlc3QgZnVuY3Rpb25zIGhhcHBlbnMgYXQgY29sbGVjdGlvbgogdGltZS4g
IEl0IGlzIGEgZ29vZCBpZGVhIHRvIHNldHVwIGV4cGVuc2l2ZSByZXNvdXJjZXMgbGlrZSBEQgog
Y29ubmVjdGlvbnMgb3Igc3VicHJvY2VzcyBvbmx5IHdoZW4gdGhlIGFjdHVhbCB0ZXN0IGlzIHJ1
bi4KLUhlcmUgaXMgYSBzaW1wbGUgZXhhbXBsZSBob3cgeW91IGNhbiBhY2hpZXZlIHRoYXQsIGZp
cnN0Ci10aGUgYWN0dWFsIHRlc3QgcmVxdWlyaW5nIGEgYGBkYmBgIG9iamVjdDo6CitIZXJlIGlz
IGEgc2ltcGxlIGV4YW1wbGUgaG93IHlvdSBjYW4gYWNoaWV2ZSB0aGF0LiBUaGlzIHRlc3QKK3Jl
cXVpcmVzIGEgYGBkYmBgIG9iamVjdCBmaXh0dXJlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9iYWNrZW5kcy5weQogCiAgICAgaW1wb3J0IHB5dGVz
dAorCisKICAgICBkZWYgdGVzdF9kYl9pbml0aWFsaXplZChkYik6CiAgICAgICAgICMgYSBkdW1t
eSB0ZXN0CiAgICAgICAgIGlmIGRiLl9fY2xhc3NfXy5fX25hbWVfXyA9PSAiREIyIjoKQEAgLTI0
NiwyMCArMjgzLDI3IEBAIHRoZSBhY3R1YWwgdGVzdCByZXF1aXJpbmcgYSBgYGRiYGAgb2JqZWN0
OjoKIAogV2UgY2FuIG5vdyBhZGQgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gdGhhdCBnZW5lcmF0ZXMg
dHdvIGludm9jYXRpb25zIG9mCiB0aGUgYGB0ZXN0X2RiX2luaXRpYWxpemVkYGAgZnVuY3Rpb24g
YW5kIGFsc28gaW1wbGVtZW50cyBhIGZhY3RvcnkgdGhhdAotY3JlYXRlcyBhIGRhdGFiYXNlIG9i
amVjdCBmb3IgdGhlIGFjdHVhbCB0ZXN0IGludm9jYXRpb25zOjoKK2NyZWF0ZXMgYSBkYXRhYmFz
ZSBvYmplY3QgZm9yIHRoZSBhY3R1YWwgdGVzdCBpbnZvY2F0aW9uczoKKworLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAgICAgaW1wb3J0IHB5
dGVzdAogCisKICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAg
ICAgaWYgJ2RiJyBpbiBtZXRhZnVuYy5maXh0dXJlbmFtZXM6Ci0gICAgICAgICAgICBtZXRhZnVu
Yy5wYXJhbWV0cml6ZSgiZGIiLCBbJ2QxJywgJ2QyJ10sIGluZGlyZWN0PVRydWUpCisgICAgICAg
IGlmICJkYiIgaW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzOgorICAgICAgICAgICAgbWV0YWZ1bmMu
cGFyYW1ldHJpemUoImRiIiwgWyJkMSIsICJkMiJdLCBpbmRpcmVjdD1UcnVlKQorCiAKLSAgICBj
bGFzcyBEQjEob2JqZWN0KToKKyAgICBjbGFzcyBEQjE6CiAgICAgICAgICJvbmUgZGF0YWJhc2Ug
b2JqZWN0IgotICAgIGNsYXNzIERCMihvYmplY3QpOgorCisKKyAgICBjbGFzcyBEQjI6CiAgICAg
ICAgICJhbHRlcm5hdGl2ZSBkYXRhYmFzZSBvYmplY3QiCiAKKwogICAgIEBweXRlc3QuZml4dHVy
ZQogICAgIGRlZiBkYihyZXF1ZXN0KToKICAgICAgICAgaWYgcmVxdWVzdC5wYXJhbSA9PSAiZDEi
OgpAQCAtMjY5LDIwICszMTMsMjYgQEAgY3JlYXRlcyBhIGRhdGFiYXNlIG9iamVjdCBmb3IgdGhl
IGFjdHVhbCB0ZXN0IGludm9jYXRpb25zOjoKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoImludmFsaWQgaW50ZXJuYWwgdGVzdCBjb25maWciKQogCi1MZXQncyBm
aXJzdCBzZWUgaG93IGl0IGxvb2tzIGxpa2UgYXQgY29sbGVjdGlvbiB0aW1lOjoKK0xldCdzIGZp
cnN0IHNlZSBob3cgaXQgbG9va3MgbGlrZSBhdCBjb2xsZWN0aW9uIHRpbWU6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3RfYmFja2VuZHMucHkgLS1jb2xsZWN0
LW9ubHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0
cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5
dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2Fj
aGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5E
T0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDIgaXRlbXMKLSAgICA8TW9kdWxlICd0ZXN0X2JhY2tl
bmRzLnB5Jz4KLSAgICAgIDxGdW5jdGlvbiAndGVzdF9kYl9pbml0aWFsaXplZFtkMV0nPgotICAg
ICAgPEZ1bmN0aW9uICd0ZXN0X2RiX2luaXRpYWxpemVkW2QyXSc+CiAKLSAgICA9PT09PT09PT09
PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09
PT09PT09PT09CisgICAgPE1vZHVsZSB0ZXN0X2JhY2tlbmRzLnB5PgorICAgICAgPEZ1bmN0aW9u
IHRlc3RfZGJfaW5pdGlhbGl6ZWRbZDFdPgorICAgICAgPEZ1bmN0aW9uIHRlc3RfZGJfaW5pdGlh
bGl6ZWRbZDJdPgorCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFu
IGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbmQgdGhlbiB3aGVuIHdl
IHJ1biB0aGUgdGVzdDoKIAotQW5kIHRoZW4gd2hlbiB3ZSBydW4gdGhlIHRlc3Q6OgorLi4gY29k
ZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEgdGVzdF9iYWNrZW5kcy5weQogICAg
IC5GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsxMDAlXQpAQCAtMjk3LDExICszNDcsMzcgQEAgQW5kIHRoZW4gd2hlbiB3
ZSBydW4gdGhlIHRlc3Q6OgogICAgID4gICAgICAgICAgIHB5dGVzdC5mYWlsKCJkZWxpYmVyYXRl
bHkgZmFpbGluZyBmb3IgZGVtbyBwdXJwb3NlcyIpCiAgICAgRSAgICAgICAgICAgRmFpbGVkOiBk
ZWxpYmVyYXRlbHkgZmFpbGluZyBmb3IgZGVtbyBwdXJwb3NlcwogCi0gICAgdGVzdF9iYWNrZW5k
cy5weTo2OiBGYWlsZWQKLSAgICAxIGZhaWxlZCwgMSBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisg
ICAgdGVzdF9iYWNrZW5kcy5weTo4OiBGYWlsZWQKKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09Cisg
ICAgRkFJTEVEIHRlc3RfYmFja2VuZHMucHk6OnRlc3RfZGJfaW5pdGlhbGl6ZWRbZDJdIC0gRmFp
bGVkOiBkZWxpYmVyYXRlbHkgZi4uLgorICAgIDEgZmFpbGVkLCAxIHBhc3NlZCBpbiAwLjEycwog
CiBUaGUgZmlyc3QgaW52b2NhdGlvbiB3aXRoIGBgZGIgPT0gIkRCMSJgYCBwYXNzZWQgd2hpbGUg
dGhlIHNlY29uZCB3aXRoIGBgZGIgPT0gIkRCMiJgYCBmYWlsZWQuICBPdXIgYGBkYmBgIGZpeHR1
cmUgZnVuY3Rpb24gaGFzIGluc3RhbnRpYXRlZCBlYWNoIG9mIHRoZSBEQiB2YWx1ZXMgZHVyaW5n
IHRoZSBzZXR1cCBwaGFzZSB3aGlsZSB0aGUgYGBweXRlc3RfZ2VuZXJhdGVfdGVzdHNgYCBnZW5l
cmF0ZWQgdHdvIGFjY29yZGluZyBjYWxscyB0byB0aGUgYGB0ZXN0X2RiX2luaXRpYWxpemVkYGAg
ZHVyaW5nIHRoZSBjb2xsZWN0aW9uIHBoYXNlLgogCitJbmRpcmVjdCBwYXJhbWV0cml6YXRpb24K
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitV
c2luZyB0aGUgYGBpbmRpcmVjdD1UcnVlYGAgcGFyYW1ldGVyIHdoZW4gcGFyYW1ldHJpemluZyBh
IHRlc3QgYWxsb3dzIHRvCitwYXJhbWV0cml6ZSBhIHRlc3Qgd2l0aCBhIGZpeHR1cmUgcmVjZWl2
aW5nIHRoZSB2YWx1ZXMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byBhCit0ZXN0OgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCisKKyAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgIEBweXRlc3QuZml4
dHVyZQorICAgIGRlZiBmaXh0KHJlcXVlc3QpOgorICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJh
bSAqIDMKKworCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaXh0IiwgWyJhIiwgImIi
XSwgaW5kaXJlY3Q9VHJ1ZSkKKyAgICBkZWYgdGVzdF9pbmRpcmVjdChmaXh0KToKKyAgICAgICAg
YXNzZXJ0IGxlbihmaXh0KSA9PSAzCisKK1RoaXMgY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0
byBkbyBtb3JlIGV4cGVuc2l2ZSBzZXR1cCBhdCB0ZXN0IHJ1biB0aW1lIGluCit0aGUgZml4dHVy
ZSwgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHJ1biB0aG9zZSBzZXR1cCBzdGVwcyBhdCBjb2xsZWN0
aW9uIHRpbWUuCisKIC4uIHJlZ2VuZG9jOndpcGUKIAogQXBwbHkgaW5kaXJlY3Qgb24gcGFydGlj
dWxhciBhcmd1bWVudHMKQEAgLTMxMiwzNSArMzg4LDQ0IEBAIHBhcmFtZXRlciBvbiBwYXJ0aWN1
bGFyIGFyZ3VtZW50cy4gSXQgY2FuIGJlIGRvbmUgYnkgcGFzc2luZyBsaXN0IG9yIHR1cGxlIG9m
CiBhcmd1bWVudHMnIG5hbWVzIHRvIGBgaW5kaXJlY3RgYC4gSW4gdGhlIGV4YW1wbGUgYmVsb3cg
dGhlcmUgaXMgYSBmdW5jdGlvbiBgYHRlc3RfaW5kaXJlY3RgYCB3aGljaCB1c2VzCiB0d28gZml4
dHVyZXM6IGBgeGBgIGFuZCBgYHlgYC4gSGVyZSB3ZSBnaXZlIHRvIGluZGlyZWN0IHRoZSBsaXN0
LCB3aGljaCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUKIGZpeHR1cmUgYGB4YGAuIFRoZSBpbmRp
cmVjdCBwYXJhbWV0ZXIgd2lsbCBiZSBhcHBsaWVkIHRvIHRoaXMgYXJndW1lbnQgb25seSwgYW5k
IHRoZSB2YWx1ZSBgYGFgYAotd2lsbCBiZSBwYXNzZWQgdG8gcmVzcGVjdGl2ZSBmaXh0dXJlIGZ1
bmN0aW9uOjoKK3dpbGwgYmUgcGFzc2VkIHRvIHJlc3BlY3RpdmUgZml4dHVyZSBmdW5jdGlvbjoK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3RfaW5kaXJl
Y3RfbGlzdC5weQogCiAgICAgaW1wb3J0IHB5dGVzdAotICAgIEBweXRlc3QuZml4dHVyZShzY29w
ZT0nZnVuY3Rpb24nKQorCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ImZ1bmN0aW9uIikK
ICAgICBkZWYgeChyZXF1ZXN0KToKICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0gKiAzCiAK
LSAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J2Z1bmN0aW9uJykKKworICAgIEBweXRlc3QuZml4
dHVyZShzY29wZT0iZnVuY3Rpb24iKQogICAgIGRlZiB5KHJlcXVlc3QpOgogICAgICAgICByZXR1
cm4gcmVxdWVzdC5wYXJhbSAqIDIKIAotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgneCwg
eScsIFsoJ2EnLCAnYicpXSwgaW5kaXJlY3Q9Wyd4J10pCi0gICAgZGVmIHRlc3RfaW5kaXJlY3Qo
eCx5KToKLSAgICAgICAgYXNzZXJ0IHggPT0gJ2FhYScKLSAgICAgICAgYXNzZXJ0IHkgPT0gJ2In
CiAKLVRoZSByZXN1bHQgb2YgdGhpcyB0ZXN0IHdpbGwgYmUgc3VjY2Vzc2Z1bDo6CisgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ4LCB5IiwgWygiYSIsICJiIildLCBpbmRpcmVjdD1bIngi
XSkKKyAgICBkZWYgdGVzdF9pbmRpcmVjdCh4LCB5KToKKyAgICAgICAgYXNzZXJ0IHggPT0gImFh
YSIKKyAgICAgICAgYXNzZXJ0IHkgPT0gImIiCiAKLSAgICAkIHB5dGVzdCB0ZXN0X2luZGlyZWN0
X2xpc3QucHkgLS1jb2xsZWN0LW9ubHkKK1RoZSByZXN1bHQgb2YgdGhpcyB0ZXN0IHdpbGwgYmUg
c3VjY2Vzc2Z1bDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAorCisgICAgJCBweXRlc3QgLXYg
dGVzdF9pbmRpcmVjdF9saXN0LnB5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRl
c3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRm
b3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5
LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKLSAgICBjb2xs
ZWN0ZWQgMSBpdGVtCi0gICAgPE1vZHVsZSAndGVzdF9pbmRpcmVjdF9saXN0LnB5Jz4KLSAgICAg
IDxGdW5jdGlvbiAndGVzdF9pbmRpcmVjdFthLWJdJz4KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQ
eXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlU
SE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRl
c3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGluZyAu
Li4gY29sbGVjdGVkIDEgaXRlbQorCisgICAgdGVzdF9pbmRpcmVjdF9saXN0LnB5Ojp0ZXN0X2lu
ZGlyZWN0W2EtYl0gUEFTU0VEICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09
PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNvbmRzID09PT09PT09
PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIHBhc3Nl
ZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiByZWdlbmRvYzp3
aXBlCiAKQEAgLTM1MiwzMyArNDM3LDQxIEBAIFBhcmFtZXRyaXppbmcgdGVzdCBtZXRob2RzIHRo
cm91Z2ggcGVyLWNsYXNzIGNvbmZpZ3VyYXRpb24KIAogSGVyZSBpcyBhbiBleGFtcGxlIGBgcHl0
ZXN0X2dlbmVyYXRlX3Rlc3RzYGAgZnVuY3Rpb24gaW1wbGVtZW50aW5nIGEKIHBhcmFtZXRyaXph
dGlvbiBzY2hlbWUgc2ltaWxhciB0byBNaWNoYWVsIEZvb3JkJ3MgYHVuaXR0ZXN0Ci1wYXJhbWV0
cml6ZXJgXyBidXQgaW4gYSBsb3QgbGVzcyBjb2RlOjoKK3BhcmFtZXRyaXplcmBfIGJ1dCBpbiBh
IGxvdCBsZXNzIGNvZGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVu
dCBvZiAuL3Rlc3RfcGFyYW1ldHJpemUucHkKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIGRl
ZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgogICAgICAgICAjIGNhbGxlZCBvbmNl
IHBlciBlYWNoIHRlc3QgZnVuY3Rpb24KICAgICAgICAgZnVuY2FyZ2xpc3QgPSBtZXRhZnVuYy5j
bHMucGFyYW1zW21ldGFmdW5jLmZ1bmN0aW9uLl9fbmFtZV9fXQogICAgICAgICBhcmduYW1lcyA9
IHNvcnRlZChmdW5jYXJnbGlzdFswXSkKLSAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoYXJn
bmFtZXMsIFtbZnVuY2FyZ3NbbmFtZV0gZm9yIG5hbWUgaW4gYXJnbmFtZXNdCi0gICAgICAgICAg
ICAgICAgZm9yIGZ1bmNhcmdzIGluIGZ1bmNhcmdsaXN0XSkKKyAgICAgICAgbWV0YWZ1bmMucGFy
YW1ldHJpemUoCisgICAgICAgICAgICBhcmduYW1lcywgW1tmdW5jYXJnc1tuYW1lXSBmb3IgbmFt
ZSBpbiBhcmduYW1lc10gZm9yIGZ1bmNhcmdzIGluIGZ1bmNhcmdsaXN0XQorICAgICAgICApCisK
IAotICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgorICAgIGNsYXNzIFRlc3RDbGFzczoKICAg
ICAgICAgIyBhIG1hcCBzcGVjaWZ5aW5nIG11bHRpcGxlIGFyZ3VtZW50IHNldHMgZm9yIGEgdGVz
dCBtZXRob2QKICAgICAgICAgcGFyYW1zID0gewotICAgICAgICAgICAgJ3Rlc3RfZXF1YWxzJzog
W2RpY3QoYT0xLCBiPTIpLCBkaWN0KGE9MywgYj0zKSwgXSwKLSAgICAgICAgICAgICd0ZXN0X3pl
cm9kaXZpc2lvbic6IFtkaWN0KGE9MSwgYj0wKSwgXSwKKyAgICAgICAgICAgICJ0ZXN0X2VxdWFs
cyI6IFtkaWN0KGE9MSwgYj0yKSwgZGljdChhPTMsIGI9MyldLAorICAgICAgICAgICAgInRlc3Rf
emVyb2RpdmlzaW9uIjogW2RpY3QoYT0xLCBiPTApXSwKICAgICAgICAgfQogCiAgICAgICAgIGRl
ZiB0ZXN0X2VxdWFscyhzZWxmLCBhLCBiKToKICAgICAgICAgICAgIGFzc2VydCBhID09IGIKIAog
ICAgICAgICBkZWYgdGVzdF96ZXJvZGl2aXNpb24oc2VsZiwgYSwgYik6Ci0gICAgICAgICAgICBw
eXRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCAiYS9iIikKKyAgICAgICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgYSAvIGIK
IAogT3VyIHRlc3QgZ2VuZXJhdG9yIGxvb2tzIHVwIGEgY2xhc3MtbGV2ZWwgZGVmaW5pdGlvbiB3
aGljaCBzcGVjaWZpZXMgd2hpY2gKLWFyZ3VtZW50IHNldHMgdG8gdXNlIGZvciBlYWNoIHRlc3Qg
ZnVuY3Rpb24uICBMZXQncyBydW4gaXQ6OgorYXJndW1lbnQgc2V0cyB0byB1c2UgZm9yIGVhY2gg
dGVzdCBmdW5jdGlvbi4gIExldCdzIHJ1biBpdDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAog
CiAgICAgJCBweXRlc3QgLXEKICAgICBGLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTM5MSw4ICs0ODQs
MTAgQEAgYXJndW1lbnQgc2V0cyB0byB1c2UgZm9yIGVhY2ggdGVzdCBmdW5jdGlvbi4gIExldCdz
IHJ1biBpdDo6CiAgICAgPiAgICAgICBhc3NlcnQgYSA9PSBiCiAgICAgRSAgICAgICBhc3NlcnQg
MSA9PSAyCiAKLSAgICB0ZXN0X3BhcmFtZXRyaXplLnB5OjE4OiBBc3NlcnRpb25FcnJvcgotICAg
IDEgZmFpbGVkLCAyIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICB0ZXN0X3BhcmFtZXRyaXpl
LnB5OjIxOiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hv
cnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlM
RUQgdGVzdF9wYXJhbWV0cml6ZS5weTo6VGVzdENsYXNzOjp0ZXN0X2VxdWFsc1sxLTJdIC0gYXNz
ZXJ0IDEgPT0gMgorICAgIDEgZmFpbGVkLCAyIHBhc3NlZCBpbiAwLjEycwogCiBJbmRpcmVjdCBw
YXJhbWV0cml6YXRpb24gd2l0aCBtdWx0aXBsZSBmaXh0dXJlcwogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQwOCwxMSAr
NTAzLDE2IEBAIGlzIHRvIGJlIHJ1biB3aXRoIGRpZmZlcmVudCBzZXRzIG9mIGFyZ3VtZW50cyBm
b3IgaXRzIHRocmVlIGFyZ3VtZW50czoKIAogLi4gbGl0ZXJhbGluY2x1ZGU6OiBtdWx0aXB5dGhv
bi5weQogCi1SdW5uaW5nIGl0IHJlc3VsdHMgaW4gc29tZSBza2lwcyBpZiB3ZSBkb24ndCBoYXZl
IGFsbCB0aGUgcHl0aG9uIGludGVycHJldGVycyBpbnN0YWxsZWQgYW5kIG90aGVyd2lzZSBydW5z
IGFsbCBjb21iaW5hdGlvbnMgKDUgaW50ZXJwcmV0ZXJzIHRpbWVzIDUgaW50ZXJwcmV0ZXJzIHRp
bWVzIDMgb2JqZWN0cyB0byBzZXJpYWxpemUvZGVzZXJpYWxpemUpOjoKK1J1bm5pbmcgaXQgcmVz
dWx0cyBpbiBzb21lIHNraXBzIGlmIHdlIGRvbid0IGhhdmUgYWxsIHRoZSBweXRob24gaW50ZXJw
cmV0ZXJzIGluc3RhbGxlZCBhbmQgb3RoZXJ3aXNlIHJ1bnMgYWxsIGNvbWJpbmF0aW9ucyAoMyBp
bnRlcnByZXRlcnMgdGltZXMgMyBpbnRlcnByZXRlcnMgdGltZXMgMyBvYmplY3RzIHRvIHNlcmlh
bGl6ZS9kZXNlcmlhbGl6ZSk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgLiAkIHB5
dGVzdCAtcnMgLXEgbXVsdGlweXRob24ucHkKLSAgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQotICAgMjcg
cGFzc2VkIGluIDAuMTIgc2Vjb25kcworICAgc3Nzc3Nzc3Nzc3NzLi4uc3Nzc3Nzc3Nzc3NzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisgICA9PT09PT09
PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICBTS0lQUEVEIFsxMl0gbXVsdGlweXRob24ucHk6Mjk6ICdweXRob24z
LjUnIG5vdCBmb3VuZAorICAgU0tJUFBFRCBbMTJdIG11bHRpcHl0aG9uLnB5OjI5OiAncHl0aG9u
My43JyBub3QgZm91bmQKKyAgIDMgcGFzc2VkLCAyNCBza2lwcGVkIGluIDAuMTJzCiAKIEluZGly
ZWN0IHBhcmFtZXRyaXphdGlvbiBvZiBvcHRpb25hbCBpbXBsZW1lbnRhdGlvbnMvaW1wb3J0cwog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQyMSw1MyArNTIxLDY3IEBAIElmIHlvdSB3YW50IHRvIGNvbXBhcmUg
dGhlIG91dGNvbWVzIG9mIHNldmVyYWwgaW1wbGVtZW50YXRpb25zIG9mIGEgZ2l2ZW4KIEFQSSwg
eW91IGNhbiB3cml0ZSB0ZXN0IGZ1bmN0aW9ucyB0aGF0IHJlY2VpdmUgdGhlIGFscmVhZHkgaW1w
b3J0ZWQgaW1wbGVtZW50YXRpb25zCiBhbmQgZ2V0IHNraXBwZWQgaW4gY2FzZSB0aGUgaW1wbGVt
ZW50YXRpb24gaXMgbm90IGltcG9ydGFibGUvYXZhaWxhYmxlLiAgTGV0J3MKIHNheSB3ZSBoYXZl
IGEgImJhc2UiIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgb3RoZXIgKHBvc3NpYmx5IG9wdGltaXpl
ZCBvbmVzKQotbmVlZCB0byBwcm92aWRlIHNpbWlsYXIgcmVzdWx0czo6CituZWVkIHRvIHByb3Zp
ZGUgc2ltaWxhciByZXN1bHRzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNv
bnRlbnQgb2YgY29uZnRlc3QucHkKIAogICAgIGltcG9ydCBweXRlc3QKIAorCiAgICAgQHB5dGVz
dC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKICAgICBkZWYgYmFzZW1vZChyZXF1ZXN0KToKICAg
ICAgICAgcmV0dXJuIHB5dGVzdC5pbXBvcnRvcnNraXAoImJhc2UiKQogCisKICAgICBAcHl0ZXN0
LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iLCBwYXJhbXM9WyJvcHQxIiwgIm9wdDIiXSkKICAgICBk
ZWYgb3B0bW9kKHJlcXVlc3QpOgogICAgICAgICByZXR1cm4gcHl0ZXN0LmltcG9ydG9yc2tpcChy
ZXF1ZXN0LnBhcmFtKQogCi1BbmQgdGhlbiBhIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYSBzaW1w
bGUgZnVuY3Rpb246OgorQW5kIHRoZW4gYSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGEgc2ltcGxl
IGZ1bmN0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2Yg
YmFzZS5weQogICAgIGRlZiBmdW5jMSgpOgogICAgICAgICByZXR1cm4gMQogCi1BbmQgYW4gb3B0
aW1pemVkIHZlcnNpb246OgorQW5kIGFuIG9wdGltaXplZCB2ZXJzaW9uOgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2Ygb3B0MS5weQogICAgIGRlZiBmdW5jMSgp
OgogICAgICAgICByZXR1cm4gMS4wMDAxCiAKLUFuZCBmaW5hbGx5IGEgbGl0dGxlIHRlc3QgbW9k
dWxlOjoKK0FuZCBmaW5hbGx5IGEgbGl0dGxlIHRlc3QgbW9kdWxlOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9tb2R1bGUucHkKIAorCiAgICAgZGVm
IHRlc3RfZnVuYzEoYmFzZW1vZCwgb3B0bW9kKToKICAgICAgICAgYXNzZXJ0IHJvdW5kKGJhc2Vt
b2QuZnVuYzEoKSwgMykgPT0gcm91bmQob3B0bW9kLmZ1bmMxKCksIDMpCiAKIAotSWYgeW91IHJ1
biB0aGlzIHdpdGggcmVwb3J0aW5nIGZvciBza2lwcyBlbmFibGVkOjoKK0lmIHlvdSBydW4gdGhp
cyB3aXRoIHJlcG9ydGluZyBmb3Igc2tpcHMgZW5hYmxlZDoKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgLXJzIHRlc3RfbW9kdWxlLnB5CiAgICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55
LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwg
aW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02Lngu
eSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8u
cHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3Rl
ZCAyIGl0ZW1zCiAKICAgICB0ZXN0X21vZHVsZS5weSAucyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KLSAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gICAgU0tJUCBbMV0gJFJFR0VORE9DX1RNUERJUi9jb25mdGVzdC5weToxMTogY291bGQg
bm90IGltcG9ydCAnb3B0MicKIAotICAgID09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQsIDEg
c2tpcHBlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgU0tJUFBFRCBbMV0gY29uZnRlc3QucHk6MTI6IGNvdWxkIG5vdCBp
bXBvcnQgJ29wdDInOiBObyBtb2R1bGUgbmFtZWQgJ29wdDInCisgICAgPT09PT09PT09PT09PT09
PT09PT09PT0gMSBwYXNzZWQsIDEgc2tpcHBlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09
PT09PQogCiBZb3UnbGwgc2VlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbiBgYG9wdDJgYCBtb2R1bGUg
YW5kIHRodXMgdGhlIHNlY29uZCB0ZXN0IHJ1bgogb2Ygb3VyIGBgdGVzdF9mdW5jMWBgIHdhcyBz
a2lwcGVkLiAgQSBmZXcgbm90ZXM6CkBAIC00ODcsMjEgKzYwMSwyNSBAQCBTZXQgbWFya3Mgb3Ig
dGVzdCBJRCBmb3IgaW5kaXZpZHVhbCBwYXJhbWV0cml6ZWQgdGVzdAogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
VXNlIGBgcHl0ZXN0LnBhcmFtYGAgdG8gYXBwbHkgbWFya3Mgb3Igc2V0IHRlc3QgSUQgdG8gaW5k
aXZpZHVhbCBwYXJhbWV0cml6ZWQgdGVzdC4KLUZvciBleGFtcGxlOjoKK0ZvciBleGFtcGxlOgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9weXRlc3Rf
cGFyYW1fZXhhbXBsZS5weQogICAgIGltcG9ydCBweXRlc3QKLSAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoJ3Rlc3RfaW5wdXQsZXhwZWN0ZWQnLCBbCi0gICAgICAgICgnMys1JywgOCksCi0g
ICAgICAgIHB5dGVzdC5wYXJhbSgnMSs3JywgOCwKLSAgICAgICAgICAgICAgICAgICAgIG1hcmtz
PXB5dGVzdC5tYXJrLmJhc2ljKSwKLSAgICAgICAgcHl0ZXN0LnBhcmFtKCcyKzQnLCA2LAotICAg
ICAgICAgICAgICAgICAgICAgbWFya3M9cHl0ZXN0Lm1hcmsuYmFzaWMsCi0gICAgICAgICAgICAg
ICAgICAgICBpZD0nYmFzaWNfMis0JyksCi0gICAgICAgIHB5dGVzdC5wYXJhbSgnNio5JywgNDIs
Ci0gICAgICAgICAgICAgICAgICAgICBtYXJrcz1bcHl0ZXN0Lm1hcmsuYmFzaWMsIHB5dGVzdC5t
YXJrLnhmYWlsXSwKLSAgICAgICAgICAgICAgICAgICAgIGlkPSdiYXNpY182KjknKSwKLSAgICBd
KQorCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJ0ZXN0X2lucHV0
LGV4cGVjdGVkIiwKKyAgICAgICAgWworICAgICAgICAgICAgKCIzKzUiLCA4KSwKKyAgICAgICAg
ICAgIHB5dGVzdC5wYXJhbSgiMSs3IiwgOCwgbWFya3M9cHl0ZXN0Lm1hcmsuYmFzaWMpLAorICAg
ICAgICAgICAgcHl0ZXN0LnBhcmFtKCIyKzQiLCA2LCBtYXJrcz1weXRlc3QubWFyay5iYXNpYywg
aWQ9ImJhc2ljXzIrNCIpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAg
ICAgICI2KjkiLCA0MiwgbWFya3M9W3B5dGVzdC5tYXJrLmJhc2ljLCBweXRlc3QubWFyay54ZmFp
bF0sIGlkPSJiYXNpY182KjkiCisgICAgICAgICAgICApLAorICAgICAgICBdLAorICAgICkKICAg
ICBkZWYgdGVzdF9ldmFsKHRlc3RfaW5wdXQsIGV4cGVjdGVkKToKICAgICAgICAgYXNzZXJ0IGV2
YWwodGVzdF9pbnB1dCkgPT0gZXhwZWN0ZWQKIApAQCAtNTEwLDIxICs2MjgsMjIgQEAgd2UgbWFy
ayB0aGUgcmVzdCB0aHJlZSBwYXJhbWV0cml6ZWQgdGVzdHMgd2l0aCB0aGUgY3VzdG9tIG1hcmtl
ciBgYGJhc2ljYGAsCiBhbmQgZm9yIHRoZSBmb3VydGggdGVzdCB3ZSBhbHNvIHVzZSB0aGUgYnVp
bHQtaW4gbWFyayBgYHhmYWlsYGAgdG8gaW5kaWNhdGUgdGhpcwogdGVzdCBpcyBleHBlY3RlZCB0
byBmYWlsLiBGb3IgZXhwbGljaXRuZXNzLCB3ZSBzZXQgdGVzdCBpZHMgZm9yIHNvbWUgdGVzdHMu
CiAKLVRoZW4gcnVuIGBgcHl0ZXN0YGAgd2l0aCB2ZXJib3NlIG1vZGUgYW5kIHdpdGggb25seSB0
aGUgYGBiYXNpY2BgIG1hcmtlcjo6CitUaGVuIHJ1biBgYHB5dGVzdGBgIHdpdGggdmVyYm9zZSBt
b2RlIGFuZCB3aXRoIG9ubHkgdGhlIGBgYmFzaWNgYCBtYXJrZXI6CiAKLSAgICBweXRlc3QgLXYg
LW0gYmFzaWMKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMu
eC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJ
UiwgaW5pZmlsZToKLSAgICBjb2xsZWN0ZWQgNCBpdGVtcworLi4gY29kZS1ibG9jazo6IHB5dGVz
dAogCi0gICAgdGVzdF9weXRlc3RfcGFyYW1fZXhhbXBsZS5weTo6dGVzdF9ldmFsWzErNy04XSBQ
QVNTRUQKLSAgICB0ZXN0X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5Ojp0ZXN0X2V2YWxbYmFzaWNf
Mis0XSBQQVNTRUQKLSAgICB0ZXN0X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5Ojp0ZXN0X2V2YWxb
YmFzaWNfNio5XSB4ZmFpbAotICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0gICAgWEZBSUwgdGVzdF9weXRlc3RfcGFyYW1fZXhhbXBsZS5w
eTo6dGVzdF9ldmFsW2Jhc2ljXzYqOV0KKyAgICAkIHB5dGVzdCAtdiAtbSBiYXNpYworICAgID09
PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5
dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4v
cHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICBy
b290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDE0
IGl0ZW1zIC8gMTEgZGVzZWxlY3RlZCAvIDMgc2VsZWN0ZWQKIAotICAgID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIHRlc3RzIGRlc2VsZWN0ZWQgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgdGVzdF9weXRlc3Rf
cGFyYW1fZXhhbXBsZS5weTo6dGVzdF9ldmFsWzErNy04XSBQQVNTRUQgICAgICAgICAgICAgICAg
WyAzMyVdCisgICAgdGVzdF9weXRlc3RfcGFyYW1fZXhhbXBsZS5weTo6dGVzdF9ldmFsW2Jhc2lj
XzIrNF0gUEFTU0VEICAgICAgICAgICAgWyA2NiVdCisgICAgdGVzdF9weXRlc3RfcGFyYW1fZXhh
bXBsZS5weTo6dGVzdF9ldmFsW2Jhc2ljXzYqOV0gWEZBSUwgICAgICAgICAgICAgWzEwMCVdCisK
KyAgICA9PT09PT09PT09PT09PT0gMiBwYXNzZWQsIDExIGRlc2VsZWN0ZWQsIDEgeGZhaWxlZCBp
biAwLjEycyA9PT09PT09PT09PT09PT09CiAKIEFzIHRoZSByZXN1bHQ6CiAKQEAgLTUzNCwzICs2
NTMsNjIgQEAgQXMgdGhlIHJlc3VsdDoKIC0gVGhlIHRlc3QgYGB0ZXN0X2V2YWxbMSs3LThdYGAg
cGFzc2VkLCBidXQgdGhlIG5hbWUgaXMgYXV0b2dlbmVyYXRlZCBhbmQgY29uZnVzaW5nLgogLSBU
aGUgdGVzdCBgYHRlc3RfZXZhbFtiYXNpY18yKzRdYGAgcGFzc2VkLgogLSBUaGUgdGVzdCBgYHRl
c3RfZXZhbFtiYXNpY182KjldYGAgd2FzIGV4cGVjdGVkIHRvIGZhaWwgYW5kIGRpZCBmYWlsLgor
CisuLiBfYHBhcmFtZXRyaXppbmdfY29uZGl0aW9uYWxfcmFpc2luZ2A6CisKK1BhcmFtZXRyaXpp
bmcgY29uZGl0aW9uYWwgcmFpc2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNlIDpmdW5jOmBweXRlc3Qu
cmFpc2VzYCB3aXRoIHRoZQorOnJlZjpgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUgcmVmYCBkZWNv
cmF0b3IgdG8gd3JpdGUgcGFyYW1ldHJpemVkIHRlc3RzCitpbiB3aGljaCBzb21lIHRlc3RzIHJh
aXNlIGV4Y2VwdGlvbnMgYW5kIG90aGVycyBkbyBub3QuCisKK0l0IGlzIGhlbHBmdWwgdG8gZGVm
aW5lIGEgbm8tb3AgY29udGV4dCBtYW5hZ2VyIGBgZG9lc19ub3RfcmFpc2VgYCB0byBzZXJ2ZQor
YXMgYSBjb21wbGVtZW50IHRvIGBgcmFpc2VzYGAuIEZvciBleGFtcGxlOgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCisKKyAgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2Vy
CisgICAgaW1wb3J0IHB5dGVzdAorCisKKyAgICBAY29udGV4dG1hbmFnZXIKKyAgICBkZWYgZG9l
c19ub3RfcmFpc2UoKToKKyAgICAgICAgeWllbGQKKworCisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKAorICAgICAgICAiZXhhbXBsZV9pbnB1dCxleHBlY3RhdGlvbiIsCisgICAgICAgIFsK
KyAgICAgICAgICAgICgzLCBkb2VzX25vdF9yYWlzZSgpKSwKKyAgICAgICAgICAgICgyLCBkb2Vz
X25vdF9yYWlzZSgpKSwKKyAgICAgICAgICAgICgxLCBkb2VzX25vdF9yYWlzZSgpKSwKKyAgICAg
ICAgICAgICgwLCBweXRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSksCisgICAgICAgIF0s
CisgICAgKQorICAgIGRlZiB0ZXN0X2RpdmlzaW9uKGV4YW1wbGVfaW5wdXQsIGV4cGVjdGF0aW9u
KToKKyAgICAgICAgIiIiVGVzdCBob3cgbXVjaCBJIGtub3cgZGl2aXNpb24uIiIiCisgICAgICAg
IHdpdGggZXhwZWN0YXRpb246CisgICAgICAgICAgICBhc3NlcnQgKDYgLyBleGFtcGxlX2lucHV0
KSBpcyBub3QgTm9uZQorCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIGZpcnN0IHRocmVlIHRl
c3QgY2FzZXMgc2hvdWxkIHJ1biB1bmV4Y2VwdGlvbmFsbHksCit3aGlsZSB0aGUgZm91cnRoIHNo
b3VsZCByYWlzZSBgYFplcm9EaXZpc2lvbkVycm9yYGAuCisKK0lmIHlvdSdyZSBvbmx5IHN1cHBv
cnRpbmcgUHl0aG9uIDMuNyssIHlvdSBjYW4gc2ltcGx5IHVzZSBgYG51bGxjb250ZXh0YGAKK3Rv
IGRlZmluZSBgYGRvZXNfbm90X3JhaXNlYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKwor
ICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgbnVsbGNvbnRleHQgYXMgZG9lc19ub3RfcmFpc2UK
KworT3IsIGlmIHlvdSdyZSBzdXBwb3J0aW5nIFB5dGhvbiAzLjMrIHlvdSBjYW4gdXNlOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRT
dGFjayBhcyBkb2VzX25vdF9yYWlzZQorCitPciwgaWYgZGVzaXJlZCwgeW91IGNhbiBgYHBpcCBp
bnN0YWxsIGNvbnRleHRsaWIyYGAgYW5kIHVzZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgor
CisgICAgZnJvbSBjb250ZXh0bGliMiBpbXBvcnQgbnVsbGNvbnRleHQgYXMgZG9lc19ub3RfcmFp
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5MnB5My9jb25mdGVz
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5MnB5My9jb25mdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5YTA3ZTNlMzJhLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL2NvbmZ0ZXN0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTYgKzAsMCBAQAotaW1wb3J0IHN5cwotaW1wb3J0IHB5dGVzdAotCi1weTMg
PSBzeXMudmVyc2lvbl9pbmZvWzBdID49IDMKLQotCi1jbGFzcyBEdW1teUNvbGxlY3RvcihweXRl
c3QuY29sbGVjdC5GaWxlKToKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICByZXR1
cm4gW10KLQotCi1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVudCk6
Ci0gICAgYm4gPSBwYXRoLmJhc2VuYW1lCi0gICAgaWYgInB5MyIgaW4gYm4gYW5kIG5vdCBweTMg
b3IgKCJweTIiIGluIGJuIGFuZCBweTMpOgotICAgICAgICByZXR1cm4gRHVtbXlDb2xsZWN0b3Io
cGF0aCwgcGFyZW50PXBhcmVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFt
cGxlL3B5MnB5My90ZXN0X3B5Mi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5MnB5
My90ZXN0X3B5Mi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0YWNmMTc4YTAw
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3Rl
c3RfcHkyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLWRlZiB0ZXN0X2V4Y2Vw
dGlvbl9zeW50YXgoKToKLSAgICB0cnk6Ci0gICAgICAgIDAvMAotICAgIGV4Y2VwdCBaZXJvRGl2
aXNpb25FcnJvciwgZToKLSAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvcHkycHkzL3Rlc3RfcHkzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvcHkycHkzL3Rlc3RfcHkzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWYw
ZmZiZDgyMjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9w
eTJweTMvdGVzdF9weTMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWRlZiB0ZXN0
X2V4Y2VwdGlvbl9zeW50YXgoKToKLSAgICB0cnk6Ci0gICAgICAgIDAgLyAwCi0gICAgZXhjZXB0
IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6Ci0gICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5MnB5My93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3B5MnB5My93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2Y4YThjOTRmNGU1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvcHkycHkzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL2Nv
bmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3Rlc3RfcHkyLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3Rlc3RfcHkzLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weXRob25jb2xsZWN0aW9uLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHl0aG9uY29sbGVjdGlvbi5weQppbmRleCAzNjAzMzYx
YzNkY2YuLjg3NDI1MjZhMTkxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvcHl0aG9uY29sbGVjdGlvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9w
eXRob25jb2xsZWN0aW9uLnB5CkBAIC02LDggKzYsNyBAQCBkZWYgdGVzdF9mdW5jdGlvbigpOgog
ICAgIHBhc3MKIAogCi1jbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLQorY2xhc3MgVGVzdENsYXNz
OgogICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKICAgICAgICAgcGFzcwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weXRob25jb2xsZWN0aW9uLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxlY3Rpb24ucnN0CmluZGV4IDhlOWQzYWU2
MmE3ZC4uYzJmMDM0ODM5NWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9weXRob25jb2xsZWN0aW9uLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9w
eXRob25jb2xsZWN0aW9uLnJzdApAQCAtNiw3ICs2LDkgQEAgSWdub3JlIHBhdGhzIGR1cmluZyB0
ZXN0IGNvbGxlY3Rpb24KIAogWW91IGNhbiBlYXNpbHkgaWdub3JlIGNlcnRhaW4gdGVzdCBkaXJl
Y3RvcmllcyBhbmQgbW9kdWxlcyBkdXJpbmcgY29sbGVjdGlvbgogYnkgcGFzc2luZyB0aGUgYGAt
LWlnbm9yZT1wYXRoYGAgb3B0aW9uIG9uIHRoZSBjbGkuIGBgcHl0ZXN0YGAgYWxsb3dzIG11bHRp
cGxlCi1gYC0taWdub3JlYGAgb3B0aW9ucy4gRXhhbXBsZTo6CitgYC0taWdub3JlYGAgb3B0aW9u
cy4gRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHRleHQKIAogICAgIHRlc3RzLwogICAgIHwt
LSBleGFtcGxlCkBAIC0yNCwyMCArMjYsMjUgQEAgYnkgcGFzc2luZyB0aGUgYGAtLWlnbm9yZT1w
YXRoYGAgb3B0aW9uIG9uIHRoZSBjbGkuIGBgcHl0ZXN0YGAgYWxsb3dzIG11bHRpcGxlCiAgICAg
ICAgICAgICAnLS0gdGVzdF93b3JsZF8wMy5weQogCiBOb3cgaWYgeW91IGludm9rZSBgYHB5dGVz
dGBgIHdpdGggYGAtLWlnbm9yZT10ZXN0cy9mb29iYXIvdGVzdF9mb29iYXJfMDMucHkgLS1pZ25v
cmU9dGVzdHMvaGVsbG8vYGAsCi15b3Ugd2lsbCBzZWUgdGhhdCBgYHB5dGVzdGBgIG9ubHkgY29s
bGVjdHMgdGVzdC1tb2R1bGVzLCB3aGljaCBkbyBub3QgbWF0Y2ggdGhlIHBhdHRlcm5zIHNwZWNp
ZmllZDo6Cit5b3Ugd2lsbCBzZWUgdGhhdCBgYHB5dGVzdGBgIG9ubHkgY29sbGVjdHMgdGVzdC1t
b2R1bGVzLCB3aGljaCBkbyBub3QgbWF0Y2ggdGhlIHBhdHRlcm5zIHNwZWNpZmllZDoKKworLi4g
Y29kZS1ibG9jazo6IHB5dGVzdAogCi0gICAgPT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMg
PT09PT09PT09PQotICAgIHBsYXRmb3JtIGRhcndpbiAtLSBQeXRob24gMi43LjEwLCBweXRlc3Qt
Mi44LjIsIHB5LTEuNC4zMCwgcGx1Z2d5LTAuMy4xCisgICAgPT09PT09PT09PT09PT09PT09PT09
PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
ICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTUueC55LCBweS0xLngu
eSwgcGx1Z2d5LTAueC55CiAgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToK
ICAgICBjb2xsZWN0ZWQgNSBpdGVtcwogCi0gICAgdGVzdHMvZXhhbXBsZS90ZXN0X2V4YW1wbGVf
MDEucHkgLgotICAgIHRlc3RzL2V4YW1wbGUvdGVzdF9leGFtcGxlXzAyLnB5IC4KLSAgICB0ZXN0
cy9leGFtcGxlL3Rlc3RfZXhhbXBsZV8wMy5weSAuCi0gICAgdGVzdHMvZm9vYmFyL3Rlc3RfZm9v
YmFyXzAxLnB5IC4KLSAgICB0ZXN0cy9mb29iYXIvdGVzdF9mb29iYXJfMDIucHkgLgorICAgIHRl
c3RzL2V4YW1wbGUvdGVzdF9leGFtcGxlXzAxLnB5IC4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsgMjAlXQorICAgIHRlc3RzL2V4YW1wbGUvdGVzdF9leGFtcGxlXzAyLnB5IC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgNDAlXQorICAgIHRlc3RzL2V4YW1w
bGUvdGVzdF9leGFtcGxlXzAzLnB5IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsgNjAlXQorICAgIHRlc3RzL2Zvb2Jhci90ZXN0X2Zvb2Jhcl8wMS5weSAuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsgODAlXQorICAgIHRlc3RzL2Zvb2Jhci90ZXN0X2Zv
b2Jhcl8wMi5weSAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQog
Ci0gICAgPT09PT09PSA1IHBhc3NlZCBpbiAwLjAyIHNlY29uZHMgPT09PT09PQorICAgID09PT09
PT09PT09PT09PT09PT09PT09PT0gNSBwYXNzZWQgaW4gMC4wMiBzZWNvbmRzID09PT09PT09PT09
PT09PT09PT09PT09PT0KKworVGhlIGBgLS1pZ25vcmUtZ2xvYmBgIG9wdGlvbiBhbGxvd3MgdG8g
aWdub3JlIHRlc3QgZmlsZSBwYXRocyBiYXNlZCBvbiBVbml4IHNoZWxsLXN0eWxlIHdpbGRjYXJk
cy4KK0lmIHlvdSB3YW50IHRvIGV4Y2x1ZGUgdGVzdC1tb2R1bGVzIHRoYXQgZW5kIHdpdGggYGBf
MDEucHlgYCwgZXhlY3V0ZSBgYHB5dGVzdGBgIHdpdGggYGAtLWlnbm9yZS1nbG9iPScqXzAxLnB5
J2BgLgogCiBEZXNlbGVjdCB0ZXN0cyBkdXJpbmcgdGVzdCBjb2xsZWN0aW9uCiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01Miw3ICs1OSw5IEBAIEtlZXBpbmcgZHVw
bGljYXRlIHBhdGhzIHNwZWNpZmllZCBmcm9tIGNvbW1hbmQgbGluZQogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBEZWZhdWx0IGJlaGF2aW9y
IG9mIGBgcHl0ZXN0YGAgaXMgdG8gaWdub3JlIGR1cGxpY2F0ZSBwYXRocyBzcGVjaWZpZWQgZnJv
bSB0aGUgY29tbWFuZCBsaW5lLgotRXhhbXBsZTo6CitFeGFtcGxlOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKICAgICBweXRlc3QgcGF0aF9hIHBhdGhfYQogCkBAIC02Myw3ICs3Miw5IEBA
IEV4YW1wbGU6OgogSnVzdCBjb2xsZWN0IHRlc3RzIG9uY2UuCiAKIFRvIGNvbGxlY3QgZHVwbGlj
YXRlIHRlc3RzLCB1c2UgdGhlIGBgLS1rZWVwLWR1cGxpY2F0ZXNgYCBvcHRpb24gb24gdGhlIGNs
aS4KLUV4YW1wbGU6OgorRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAg
cHl0ZXN0IC0ta2VlcC1kdXBsaWNhdGVzIHBhdGhfYSBwYXRoX2EKIApAQCAtNzMsNyArODQsOSBA
QCBFeGFtcGxlOjoKIAogQXMgdGhlIGNvbGxlY3RvciBqdXN0IHdvcmtzIG9uIGRpcmVjdG9yaWVz
LCBpZiB5b3Ugc3BlY2lmeSB0d2ljZSBhIHNpbmdsZSB0ZXN0IGZpbGUsIGBgcHl0ZXN0YGAgd2ls
bAogc3RpbGwgY29sbGVjdCBpdCB0d2ljZSwgbm8gbWF0dGVyIGlmIHRoZSBgYC0ta2VlcC1kdXBs
aWNhdGVzYGAgaXMgbm90IHNwZWNpZmllZC4KLUV4YW1wbGU6OgorRXhhbXBsZToKKworLi4gY29k
ZS1ibG9jazo6IHB5dGVzdAogCiAgICAgcHl0ZXN0IHRlc3RfYS5weSB0ZXN0X2EucHkKIApAQCAt
ODUsNyArOTgsOSBAQCBFeGFtcGxlOjoKIENoYW5naW5nIGRpcmVjdG9yeSByZWN1cnNpb24KIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVlv
dSBjYW4gc2V0IHRoZSA6Y29uZnZhbDpgbm9yZWN1cnNlZGlyc2Agb3B0aW9uIGluIGFuIGluaS1m
aWxlLCBmb3IgZXhhbXBsZSB5b3VyIGBgcHl0ZXN0LmluaWBgIGluIHRoZSBwcm9qZWN0IHJvb3Qg
ZGlyZWN0b3J5OjoKK1lvdSBjYW4gc2V0IHRoZSA6Y29uZnZhbDpgbm9yZWN1cnNlZGlyc2Agb3B0
aW9uIGluIGFuIGluaS1maWxlLCBmb3IgZXhhbXBsZSB5b3VyIGBgcHl0ZXN0LmluaWBgIGluIHRo
ZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5OgorCisuLiBjb2RlLWJsb2NrOjogaW5pCiAKICAgICAj
IGNvbnRlbnQgb2YgcHl0ZXN0LmluaQogICAgIFtweXRlc3RdCkBAIC0xMDAsNDcgKzExNSw2NCBA
QCBDaGFuZ2luZyBuYW1pbmcgY29udmVudGlvbnMKIAogWW91IGNhbiBjb25maWd1cmUgZGlmZmVy
ZW50IG5hbWluZyBjb252ZW50aW9ucyBieSBzZXR0aW5nCiB0aGUgOmNvbmZ2YWw6YHB5dGhvbl9m
aWxlc2AsIDpjb25mdmFsOmBweXRob25fY2xhc3Nlc2AgYW5kCi06Y29uZnZhbDpgcHl0aG9uX2Z1
bmN0aW9uc2AgY29uZmlndXJhdGlvbiBvcHRpb25zLiAgRXhhbXBsZTo6Cis6Y29uZnZhbDpgcHl0
aG9uX2Z1bmN0aW9uc2AgaW4geW91ciA6cmVmOmBjb25maWd1cmF0aW9uIGZpbGUgPGNvbmZpZyBm
aWxlIGZvcm1hdHM+YC4KK0hlcmUgaXMgYW4gZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGlu
aQogCiAgICAgIyBjb250ZW50IG9mIHB5dGVzdC5pbmkKLSAgICAjIGNhbiBhbHNvIGJlIGRlZmlu
ZWQgaW4gdG94LmluaSBvciBzZXR1cC5jZmcgZmlsZSwgYWx0aG91Z2ggdGhlIHNlY3Rpb24KLSAg
ICAjIG5hbWUgaW4gc2V0dXAuY2ZnIGZpbGVzIHNob3VsZCBiZSAidG9vbDpweXRlc3QiCisgICAg
IyBFeGFtcGxlIDE6IGhhdmUgcHl0ZXN0IGxvb2sgZm9yICJjaGVjayIgaW5zdGVhZCBvZiAidGVz
dCIKICAgICBbcHl0ZXN0XQotICAgIHB5dGhvbl9maWxlcz1jaGVja18qLnB5Ci0gICAgcHl0aG9u
X2NsYXNzZXM9Q2hlY2sKLSAgICBweXRob25fZnVuY3Rpb25zPSpfY2hlY2sKKyAgICBweXRob25f
ZmlsZXMgPSBjaGVja18qLnB5CisgICAgcHl0aG9uX2NsYXNzZXMgPSBDaGVjaworICAgIHB5dGhv
bl9mdW5jdGlvbnMgPSAqX2NoZWNrCiAKIFRoaXMgd291bGQgbWFrZSBgYHB5dGVzdGBgIGxvb2sg
Zm9yIHRlc3RzIGluIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIGBgY2hlY2tfKgogLnB5YGAgZ2xvYi1w
YXR0ZXJuLCBgYENoZWNrYGAgcHJlZml4ZXMgaW4gY2xhc3NlcywgYW5kIGZ1bmN0aW9ucyBhbmQg
bWV0aG9kcwotdGhhdCBtYXRjaCBgYCpfY2hlY2tgYC4gIEZvciBleGFtcGxlLCBpZiB3ZSBoYXZl
OjoKK3RoYXQgbWF0Y2ggYGAqX2NoZWNrYGAuIEZvciBleGFtcGxlLCBpZiB3ZSBoYXZlOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY2hlY2tfbXlhcHAucHkK
LSAgICBjbGFzcyBDaGVja015QXBwKG9iamVjdCk6CisgICAgY2xhc3MgQ2hlY2tNeUFwcDoKICAg
ICAgICAgZGVmIHNpbXBsZV9jaGVjayhzZWxmKToKICAgICAgICAgICAgIHBhc3MKKwogICAgICAg
ICBkZWYgY29tcGxleF9jaGVjayhzZWxmKToKICAgICAgICAgICAgIHBhc3MKIAotdGhlbiB0aGUg
dGVzdCBjb2xsZWN0aW9uIGxvb2tzIGxpa2UgdGhpczo6CitUaGUgdGVzdCBjb2xsZWN0aW9uIHdv
dWxkIGxvb2sgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5
dGVzdCAtLWNvbGxlY3Qtb25seQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0
IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9y
bSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0w
LngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6IHB5dGVzdC5pbmkK
KyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54
LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2Nh
Y2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgY29uZmlnZmlsZTogcHl0ZXN0Lmlu
aQogICAgIGNvbGxlY3RlZCAyIGl0ZW1zCi0gICAgPE1vZHVsZSAnY2hlY2tfbXlhcHAucHknPgot
ICAgICAgPENsYXNzICdDaGVja015QXBwJz4KLSAgICAgICAgPEluc3RhbmNlICcoKSc+Ci0gICAg
ICAgICAgPEZ1bmN0aW9uICdzaW1wbGVfY2hlY2snPgotICAgICAgICAgIDxGdW5jdGlvbiAnY29t
cGxleF9jaGVjayc+CiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4g
aW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09CisgICAgPE1vZHVsZSBjaGVj
a19teWFwcC5weT4KKyAgICAgIDxDbGFzcyBDaGVja015QXBwPgorICAgICAgICAgIDxGdW5jdGlv
biBzaW1wbGVfY2hlY2s+CisgICAgICAgICAgPEZ1bmN0aW9uIGNvbXBsZXhfY2hlY2s+CisKKyAg
ICA9PT09PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09CisKK1lvdSBjYW4gY2hlY2sgZm9yIG11bHRpcGxlIGdsb2Ig
cGF0dGVybnMgYnkgYWRkaW5nIGEgc3BhY2UgYmV0d2VlbiB0aGUgcGF0dGVybnM6CisKKy4uIGNv
ZGUtYmxvY2s6OiBpbmkKKworICAgICMgRXhhbXBsZSAyOiBoYXZlIHB5dGVzdCBsb29rIGZvciBm
aWxlcyB3aXRoICJ0ZXN0IiBhbmQgImV4YW1wbGUiCisgICAgIyBjb250ZW50IG9mIHB5dGVzdC5p
bmkKKyAgICBbcHl0ZXN0XQorICAgIHB5dGhvbl9maWxlcyA9IHRlc3RfKi5weSBleGFtcGxlXyou
cHkKIAogLi4gbm90ZTo6CiAKICAgIHRoZSBgYHB5dGhvbl9mdW5jdGlvbnNgYCBhbmQgYGBweXRo
b25fY2xhc3Nlc2BgIG9wdGlvbnMgaGFzIG5vIGVmZmVjdAogICAgZm9yIGBgdW5pdHRlc3QuVGVz
dENhc2VgYCB0ZXN0IGRpc2NvdmVyeSBiZWNhdXNlIHB5dGVzdCBkZWxlZ2F0ZXMKLSAgIGRldGVj
dGlvbiBvZiB0ZXN0IGNhc2UgbWV0aG9kcyB0byB1bml0dGVzdCBjb2RlLgorICAgZGlzY292ZXJ5
IG9mIHRlc3QgY2FzZSBtZXRob2RzIHRvIHVuaXR0ZXN0IGNvZGUuCiAKIEludGVycHJldGluZyBj
bWRsaW5lIGFyZ3VtZW50cyBhcyBQeXRob24gcGFja2FnZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDgsMTMgKzE4MCwxNyBAQCBJ
bnRlcnByZXRpbmcgY21kbGluZSBhcmd1bWVudHMgYXMgUHl0aG9uIHBhY2thZ2VzCiBZb3UgY2Fu
IHVzZSB0aGUgYGAtLXB5YXJnc2BgIG9wdGlvbiB0byBtYWtlIGBgcHl0ZXN0YGAgdHJ5CiBpbnRl
cnByZXRpbmcgYXJndW1lbnRzIGFzIHB5dGhvbiBwYWNrYWdlIG5hbWVzLCBkZXJpdmluZwogdGhl
aXIgZmlsZSBzeXN0ZW0gcGF0aCBhbmQgdGhlbiBydW5uaW5nIHRoZSB0ZXN0LiBGb3IKLWV4YW1w
bGUgaWYgeW91IGhhdmUgdW5pdHRlc3QyIGluc3RhbGxlZCB5b3UgY2FuIHR5cGU6OgorZXhhbXBs
ZSBpZiB5b3UgaGF2ZSB1bml0dGVzdDIgaW5zdGFsbGVkIHlvdSBjYW4gdHlwZToKKworLi4gY29k
ZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLXB5YXJncyB1bml0dGVzdDIudGVzdC50ZXN0
X3NraXBwaW5nIC1xCiAKIHdoaWNoIHdvdWxkIHJ1biB0aGUgcmVzcGVjdGl2ZSB0ZXN0IG1vZHVs
ZS4gIExpa2Ugd2l0aAogb3RoZXIgb3B0aW9ucywgdGhyb3VnaCBhbiBpbmktZmlsZSBhbmQgdGhl
IDpjb25mdmFsOmBhZGRvcHRzYCBvcHRpb24geW91Ci1jYW4gbWFrZSB0aGlzIGNoYW5nZSBtb3Jl
IHBlcm1hbmVudGx5OjoKK2NhbiBtYWtlIHRoaXMgY2hhbmdlIG1vcmUgcGVybWFuZW50bHk6CisK
Ky4uIGNvZGUtYmxvY2s6OiBpbmkKIAogICAgICMgY29udGVudCBvZiBweXRlc3QuaW5pCiAgICAg
W3B5dGVzdF0KQEAgLTE2NywyMSArMjAzLDI0IEBAIHRyZWF0IGl0IGFzIGEgZmlsZXN5c3RlbSBw
YXRoLgogRmluZGluZyBvdXQgd2hhdCBpcyBjb2xsZWN0ZWQKIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVlvdSBjYW4gYWx3YXlzIHBlZWsgYXQgdGhl
IGNvbGxlY3Rpb24gdHJlZSB3aXRob3V0IHJ1bm5pbmcgdGVzdHMgbGlrZSB0aGlzOjoKK1lvdSBj
YW4gYWx3YXlzIHBlZWsgYXQgdGhlIGNvbGxlY3Rpb24gdHJlZSB3aXRob3V0IHJ1bm5pbmcgdGVz
dHMgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAuICQgcHl0ZXN0
IC0tY29sbGVjdC1vbmx5IHB5dGhvbmNvbGxlY3Rpb24ucHkKICAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlm
aWxlOiBweXRlc3QuaW5pCisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRl
c3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9Q
UkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGNvbmZp
Z2ZpbGU6IHB5dGVzdC5pbmkKICAgICBjb2xsZWN0ZWQgMyBpdGVtcwotICAgIDxNb2R1bGUgJ0NX
RC9weXRob25jb2xsZWN0aW9uLnB5Jz4KLSAgICAgIDxGdW5jdGlvbiAndGVzdF9mdW5jdGlvbic+
Ci0gICAgICA8Q2xhc3MgJ1Rlc3RDbGFzcyc+Ci0gICAgICAgIDxJbnN0YW5jZSAnKCknPgotICAg
ICAgICAgIDxGdW5jdGlvbiAndGVzdF9tZXRob2QnPgotICAgICAgICAgIDxGdW5jdGlvbiAndGVz
dF9hbm90aGVybWV0aG9kJz4KIAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3Rz
IHJhbiBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA8TW9kdWxl
IENXRC9weXRob25jb2xsZWN0aW9uLnB5PgorICAgICAgPEZ1bmN0aW9uIHRlc3RfZnVuY3Rpb24+
CisgICAgICA8Q2xhc3MgVGVzdENsYXNzPgorICAgICAgICAgIDxGdW5jdGlvbiB0ZXN0X21ldGhv
ZD4KKyAgICAgICAgICA8RnVuY3Rpb24gdGVzdF9hbm90aGVybWV0aG9kPgorCisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09PT09PT09PT09
PT09PT09PT09PT09PQogCiAuLiBfY3VzdG9taXppbmctdGVzdC1jb2xsZWN0aW9uOgogCkBAIC0x
OTAsNyArMjI5LDkgQEAgQ3VzdG9taXppbmcgdGVzdCBjb2xsZWN0aW9uCiAKIC4uIHJlZ2VuZG9j
OndpcGUKIAotWW91IGNhbiBlYXNpbHkgaW5zdHJ1Y3QgYGBweXRlc3RgYCB0byBkaXNjb3ZlciB0
ZXN0cyBmcm9tIGV2ZXJ5IFB5dGhvbiBmaWxlOjoKK1lvdSBjYW4gZWFzaWx5IGluc3RydWN0IGBg
cHl0ZXN0YGAgdG8gZGlzY292ZXIgdGVzdHMgZnJvbSBldmVyeSBQeXRob24gZmlsZToKKworLi4g
Y29kZS1ibG9jazo6IGluaQogCiAgICAgIyBjb250ZW50IG9mIHB5dGVzdC5pbmkKICAgICBbcHl0
ZXN0XQpAQCAtMTk5LDcgKzI0MCw5IEBAIFlvdSBjYW4gZWFzaWx5IGluc3RydWN0IGBgcHl0ZXN0
YGAgdG8gZGlzY292ZXIgdGVzdHMgZnJvbSBldmVyeSBQeXRob24gZmlsZTo6CiBIb3dldmVyLCBt
YW55IHByb2plY3RzIHdpbGwgaGF2ZSBhIGBgc2V0dXAucHlgYCB3aGljaCB0aGV5IGRvbid0IHdh
bnQgdG8gYmUKIGltcG9ydGVkLiBNb3Jlb3ZlciwgdGhlcmUgbWF5IGZpbGVzIG9ubHkgaW1wb3J0
YWJsZSBieSBhIHNwZWNpZmljIHB5dGhvbgogdmVyc2lvbi4gRm9yIHN1Y2ggY2FzZXMgeW91IGNh
biBkeW5hbWljYWxseSBkZWZpbmUgZmlsZXMgdG8gYmUgaWdub3JlZCBieQotbGlzdGluZyB0aGVt
IGluIGEgYGBjb25mdGVzdC5weWBgIGZpbGU6OgorbGlzdGluZyB0aGVtIGluIGEgYGBjb25mdGVz
dC5weWBgIGZpbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBv
ZiBjb25mdGVzdC5weQogICAgIGltcG9ydCBzeXMKQEAgLTIwOCw3ICsyNTEsOSBAQCBsaXN0aW5n
IHRoZW0gaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZTo6CiAgICAgaWYgc3lzLnZlcnNpb25faW5m
b1swXSA+IDI6CiAgICAgICAgIGNvbGxlY3RfaWdub3JlLmFwcGVuZCgicGtnL21vZHVsZV9weTIu
cHkiKQogCi1hbmQgdGhlbiBpZiB5b3UgaGF2ZSBhIG1vZHVsZSBmaWxlIGxpa2UgdGhpczo6Cith
bmQgdGhlbiBpZiB5b3UgaGF2ZSBhIG1vZHVsZSBmaWxlIGxpa2UgdGhpczoKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHBrZy9tb2R1bGVfcHkyLnB5CiAgICAg
ZGVmIHRlc3Rfb25seV9vbl9weXRob24yKCk6CkBAIC0yMTcsMTMgKzI2MiwxNyBAQCBhbmQgdGhl
biBpZiB5b3UgaGF2ZSBhIG1vZHVsZSBmaWxlIGxpa2UgdGhpczo6CiAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24sIGU6CiAgICAgICAgICAgICBwYXNzCiAKLWFuZCBhIGBgc2V0dXAucHlgYCBkdW1t
eSBmaWxlIGxpa2UgdGhpczo6CithbmQgYSBgYHNldHVwLnB5YGAgZHVtbXkgZmlsZSBsaWtlIHRo
aXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBzZXR1cC5w
eQotICAgIDAvMCAgIyB3aWxsIHJhaXNlIGV4Y2VwdGlvbiBpZiBpbXBvcnRlZAorICAgIDAgLyAw
ICAjIHdpbGwgcmFpc2UgZXhjZXB0aW9uIGlmIGltcG9ydGVkCiAKIElmIHlvdSBydW4gd2l0aCBh
IFB5dGhvbiAyIGludGVycHJldGVyIHRoZW4geW91IHdpbGwgZmluZCB0aGUgb25lIHRlc3QgYW5k
IHdpbGwKLWxlYXZlIG91dCB0aGUgYGBzZXR1cC5weWBgIGZpbGU6OgorbGVhdmUgb3V0IHRoZSBg
YHNldHVwLnB5YGAgZmlsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgIyQgcHl0
ZXN0IC0tY29sbGVjdC1vbmx5CiAgICAgPT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09
CkBAIC0yMzYsMTIgKzI4NSw0MCBAQCBsZWF2ZSBvdXQgdGhlIGBgc2V0dXAucHlgYCBmaWxlOjoK
ICAgICA9PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMDQgc2Vjb25kcyA9PT09PT0KIAogSWYgeW91
IHJ1biB3aXRoIGEgUHl0aG9uIDMgaW50ZXJwcmV0ZXIgYm90aCB0aGUgb25lIHRlc3QgYW5kIHRo
ZSBgYHNldHVwLnB5YGAKLWZpbGUgd2lsbCBiZSBsZWZ0IG91dDo6CitmaWxlIHdpbGwgYmUgbGVm
dCBvdXQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC0tY29sbGVj
dC1vbmx5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFy
dHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5
dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9v
dGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZTogcHl0ZXN0LmluaQorICAgIHBsYXRmb3Jt
IGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAu
eC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBjb25maWdmaWxlOiBweXRlc3QuaW5pCiAgICAgY29sbGVj
dGVkIDAgaXRlbXMKIAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBp
biAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09CisKK0l0J3MgYWxzbyBwb3NzaWJsZSB0byBpZ25vcmUgZmlsZXMgYmFzZWQgb24gVW5p
eCBzaGVsbC1zdHlsZSB3aWxkY2FyZHMgYnkgYWRkaW5nCitwYXR0ZXJucyB0byA6Z2xvYmFsdmFy
OmBjb2xsZWN0X2lnbm9yZV9nbG9iYC4KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIGBgY29uZnRl
c3QucHlgYCBpZ25vcmVzIHRoZSBmaWxlIGBgc2V0dXAucHlgYCBhbmQgaW4KK2FkZGl0aW9uIGFs
bCBmaWxlcyB0aGF0IGVuZCB3aXRoIGBgKl9weTIucHlgYCB3aGVuIGV4ZWN1dGVkIHdpdGggYSBQ
eXRob24gMworaW50ZXJwcmV0ZXI6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMg
Y29udGVudCBvZiBjb25mdGVzdC5weQorICAgIGltcG9ydCBzeXMKKworICAgIGNvbGxlY3RfaWdu
b3JlID0gWyJzZXR1cC5weSJdCisgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDI6CisgICAg
ICAgIGNvbGxlY3RfaWdub3JlX2dsb2IgPSBbIipfcHkyLnB5Il0KKworU2luY2UgUHl0ZXN0IDIu
NiwgdXNlcnMgY2FuIHByZXZlbnQgcHl0ZXN0IGZyb20gZGlzY292ZXJpbmcgY2xhc3NlcyB0aGF0
IHN0YXJ0Cit3aXRoIGBgVGVzdGBgIGJ5IHNldHRpbmcgYSBib29sZWFuIGBgX190ZXN0X19gYCBh
dHRyaWJ1dGUgdG8gYGBGYWxzZWBgLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAj
IFdpbGwgbm90IGJlIGRpc2NvdmVyZWQgYXMgYSB0ZXN0CisgICAgY2xhc3MgVGVzdENsYXNzOgor
ICAgICAgICBfX3Rlc3RfXyA9IEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9yZXBvcnRpbmdkZW1vLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3Jl
cG9ydGluZ2RlbW8ucnN0CmluZGV4IDQ2OTFiMTI4YmI4My4uZjFiOTczZjNiMzNiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9yZXBvcnRpbmdkZW1vLnJzdAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9yZXBvcnRpbmdkZW1vLnJzdApAQCAtMSwyNyArMSwy
NyBAQAotCiAuLiBfYHRicmVwb3J0ZGVtb2A6CiAKIERlbW8gb2YgUHl0aG9uIGZhaWx1cmUgcmVw
b3J0cyB3aXRoIHB5dGVzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
CitIZXJlIGlzIGEgbmljZSBydW4gb2Ygc2V2ZXJhbCBmYWlsdXJlcyBhbmQgaG93IGBgcHl0ZXN0
YGAgcHJlc2VudHMgdGhpbmdzOgogCi1IZXJlIGlzIGEgbmljZSBydW4gb2Ygc2V2ZXJhbCB0ZW5z
IG9mIGZhaWx1cmVzCi1hbmQgaG93IGBgcHl0ZXN0YGAgcHJlc2VudHMgdGhpbmdzICh1bmZvcnR1
bmF0ZWx5Ci1ub3Qgc2hvd2luZyB0aGUgbmljZSBjb2xvcnMgaGVyZSBpbiB0aGUgSFRNTCB0aGF0
IHlvdQotZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKKy4u
IGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgIGFzc2VydGlvbiAkIHB5dGVzdCBmYWlsdXJlX2Rl
bW8ucHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0
cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSL2Fzc2VydGlvbiwgaW5pZmlsZToKLSAgICBjb2xsZWN0ZWQg
NDIgaXRlbXMKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02Lngu
eSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8u
cHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUi9hc3NlcnRpb24KKyAg
ICBjb2xsZWN0ZWQgNDQgaXRlbXMKIAotICAgIGZhaWx1cmVfZGVtby5weSBGRkZGRkZGRkZGRkZG
RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYgICAgICAgICAgIFsxMDAlXQorICAgIGZhaWx1
cmVfZGVtby5weSBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAg
ICAgICAgIFsxMDAlXQogCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZB
SUxVUkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIF9fX19fX19fX19f
X19fX19fX19fX19fX19fX18gdGVzdF9nZW5lcmF0aXZlWzBdIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX18KKyAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9nZW5lcmF0aXZl
WzMtNl0gX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBwYXJhbTEgPSAzLCBwYXJh
bTIgPSA2CiAKKyAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXJhbTEsIHBhcmFt
MiIsIFsoMywgNildKQogICAgICAgICBkZWYgdGVzdF9nZW5lcmF0aXZlKHBhcmFtMSwgcGFyYW0y
KToKICAgICA+ICAgICAgIGFzc2VydCBwYXJhbTEgKiAyIDwgcGFyYW0yCiAgICAgRSAgICAgICBh
c3NlcnQgKDMgKiAyKSA8IDYKQEAgLTMyLDcgKzMyLDYgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAt
IHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0
RmFpbGluZyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9zaW1wbGUo
c2VsZik6Ci0KICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDQy
CiAKQEAgLTQ0LDcgKzQzLDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5n
IG9uIHRoYXQpOjoKICAgICBFICAgICAgICArICB3aGVyZSA0MiA9IDxmdW5jdGlvbiBUZXN0RmFp
bGluZy50ZXN0X3NpbXBsZS48bG9jYWxzPi5mIGF0IDB4ZGVhZGJlZWY+KCkKICAgICBFICAgICAg
ICArICBhbmQgICA0MyA9IDxmdW5jdGlvbiBUZXN0RmFpbGluZy50ZXN0X3NpbXBsZS48bG9jYWxz
Pi5nIGF0IDB4ZGVhZGJlZWY+KCkKIAotICAgIGZhaWx1cmVfZGVtby5weTozNzogQXNzZXJ0aW9u
RXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MzA6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19f
X19fX19fX19fX19fX18gVGVzdEZhaWxpbmcudGVzdF9zaW1wbGVfbXVsdGlsaW5lIF9fX19fX19f
X19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdEZhaWxpbmcgb2Jq
ZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC01Miw3ICs1MSw3IEBAIGdldCBvbiB0aGUgdGVybWluYWwg
LSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgICAgIGRlZiB0ZXN0X3NpbXBsZV9tdWx0
aWxpbmUoc2VsZik6CiAgICAgPiAgICAgICBvdGhlcmZ1bmNfbXVsdGkoNDIsIDYgKiA5KQogCi0g
ICAgZmFpbHVyZV9kZW1vLnB5OjQwOgorICAgIGZhaWx1cmVfZGVtby5weTozMzoKICAgICBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8KIAogICAgIGEgPSA0MiwgYiA9IDU0CkBAIC02MSwxMyArNjAsMTIgQEAg
Z2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICA+ICAg
ICAgIGFzc2VydCBhID09IGIKICAgICBFICAgICAgIGFzc2VydCA0MiA9PSA1NAogCi0gICAgZmFp
bHVyZV9kZW1vLnB5OjE1OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToxNDog
QXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX18gVGVzdEZhaWxp
bmcudGVzdF9ub3QgX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZh
aWx1cmVfZGVtby5UZXN0RmFpbGluZyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBk
ZWYgdGVzdF9ub3Qoc2VsZik6Ci0KICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDQyCiAKQEAgLTc1LDcgKzczLDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdl
IGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgIGFzc2VydCBub3QgNDIKICAgICBF
ICAgICAgICArICB3aGVyZSA0MiA9IDxmdW5jdGlvbiBUZXN0RmFpbGluZy50ZXN0X25vdC48bG9j
YWxzPi5mIGF0IDB4ZGVhZGJlZWY+KCkKIAotICAgIGZhaWx1cmVfZGVtby5weTo0NzogQXNzZXJ0
aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6Mzk6IEFzc2VydGlvbkVycm9yCiAgICAgX19f
X19fX19fX19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfdGV4dCBf
X19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxp
c2VkRXhwbGFuYXRpb25zIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtODMsMTAgKzgxLDEwIEBA
IGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgICAg
IGRlZiB0ZXN0X2VxX3RleHQoc2VsZik6CiAgICAgPiAgICAgICBhc3NlcnQgInNwYW0iID09ICJl
Z2dzIgogICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCAnc3BhbScgPT0gJ2VnZ3Mn
Ci0gICAgRSAgICAgICAgIC0gc3BhbQotICAgIEUgICAgICAgICArIGVnZ3MKKyAgICBFICAgICAg
ICAgLSBlZ2dzCisgICAgRSAgICAgICAgICsgc3BhbQogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjUz
OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weTo0NDogQXNzZXJ0aW9uRXJyb3IK
ICAgICBfX19fX19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucy50ZXN0X2VxX3Np
bWlsYXJfdGV4dCBfX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0
U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC05NCwxMiAr
OTIsMTIgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoK
ICAgICAgICAgZGVmIHRlc3RfZXFfc2ltaWxhcl90ZXh0KHNlbGYpOgogICAgID4gICAgICAgYXNz
ZXJ0ICJmb28gMSBiYXIiID09ICJmb28gMiBiYXIiCiAgICAgRSAgICAgICBBc3NlcnRpb25FcnJv
cjogYXNzZXJ0ICdmb28gMSBiYXInID09ICdmb28gMiBiYXInCi0gICAgRSAgICAgICAgIC0gZm9v
IDEgYmFyCisgICAgRSAgICAgICAgIC0gZm9vIDIgYmFyCiAgICAgRSAgICAgICAgID8gICAgIF4K
LSAgICBFICAgICAgICAgKyBmb28gMiBiYXIKKyAgICBFICAgICAgICAgKyBmb28gMSBiYXIKICAg
ICBFICAgICAgICAgPyAgICAgXgogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjU2OiBBc3NlcnRpb25F
cnJvcgorICAgIGZhaWx1cmVfZGVtby5weTo0NzogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19f
X19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfbXVsdGlsaW5lX3RleHQg
X19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0U3BlY2lhbGlzZWRF
eHBsYW5hdGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC0xMDgsMTEgKzEwNiwxMSBAQCBn
ZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgID4gICAg
ICAgYXNzZXJ0ICJmb29cbnNwYW1cbmJhciIgPT0gImZvb1xuZWdnc1xuYmFyIgogICAgIEUgICAg
ICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCAnZm9vXG5zcGFtXG5iYXInID09ICdmb29cbmVnZ3Nc
bmJhcicKICAgICBFICAgICAgICAgICBmb28KLSAgICBFICAgICAgICAgLSBzcGFtCi0gICAgRSAg
ICAgICAgICsgZWdncworICAgIEUgICAgICAgICAtIGVnZ3MKKyAgICBFICAgICAgICAgKyBzcGFt
CiAgICAgRSAgICAgICAgICAgYmFyCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6NTk6IEFzc2VydGlv
bkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjUwOiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19f
X19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucy50ZXN0X2VxX2xvbmdfdGV4dCBf
X19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNl
ZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTEyMSwxNSArMTE5LDE1IEBA
IGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgICAg
ICAgICBhID0gIjEiICogMTAwICsgImEiICsgIjIiICogMTAwCiAgICAgICAgICAgICBiID0gIjEi
ICogMTAwICsgImIiICsgIjIiICogMTAwCiAgICAgPiAgICAgICBhc3NlcnQgYSA9PSBiCi0gICAg
RSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICcxMTExMTExMTExMTEuLi4yMjIyMjIyMjIy
MjIyJyA9PSAnMTExMTExMTExMTExMS4uLjIyMjIyMjIyMjIyMjInCisgICAgRSAgICAgICBBc3Nl
cnRpb25FcnJvcjogYXNzZXJ0ICcxMTExMTExMTExMTEuLi4yMjIyMjIyMjIyMjIyJyA9PSAnMTEx
MTExMTExMTExLi4uMjIyMjIyMjIyMjIyMicKICAgICBFICAgICAgICAgU2tpcHBpbmcgOTAgaWRl
bnRpY2FsIGxlYWRpbmcgY2hhcmFjdGVycyBpbiBkaWZmLCB1c2UgLXYgdG8gc2hvdwogICAgIEUg
ICAgICAgICBTa2lwcGluZyA5MSBpZGVudGljYWwgdHJhaWxpbmcgY2hhcmFjdGVycyBpbiBkaWZm
LCB1c2UgLXYgdG8gc2hvdwotICAgIEUgICAgICAgICAtIDExMTExMTExMTFhMjIyMjIyMjIyCisg
ICAgRSAgICAgICAgIC0gMTExMTExMTExMWIyMjIyMjIyMjIKICAgICBFICAgICAgICAgPyAgICAg
ICAgICAgXgotICAgIEUgICAgICAgICArIDExMTExMTExMTFiMjIyMjIyMjIyCisgICAgRSAgICAg
ICAgICsgMTExMTExMTExMWEyMjIyMjIyMjIKICAgICBFICAgICAgICAgPyAgICAgICAgICAgXgog
Ci0gICAgZmFpbHVyZV9kZW1vLnB5OjY0OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVt
by5weTo1NTogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhw
bGFuYXRpb25zLnRlc3RfZXFfbG9uZ190ZXh0X211bHRpbGluZSBfX19fX19fX19fCiAKICAgICBz
ZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2JqZWN0IGF0
IDB4ZGVhZGJlZWY+CkBAIC0xMzgsNyArMTM2LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdl
IGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICAgICAgICAgIGEgPSAiMVxuIiAqIDEwMCArICJh
IiArICIyXG4iICogMTAwCiAgICAgICAgICAgICBiID0gIjFcbiIgKiAxMDAgKyAiYiIgKyAiMlxu
IiAqIDEwMAogICAgID4gICAgICAgYXNzZXJ0IGEgPT0gYgotICAgIEUgICAgICAgQXNzZXJ0aW9u
RXJyb3I6IGFzc2VydCAnMVxuMVxuMVxuMVxuLi4ubjJcbjJcbjJcbjJcbicgPT0gJzFcbjFcbjFc
bjFcbjEuLi5uMlxuMlxuMlxuMlxuJworICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2Vy
dCAnMVxuMVxuMVxuMVxuLi4ubjJcbjJcbjJcbjJcbicgPT0gJzFcbjFcbjFcbjFcbi4uLm4yXG4y
XG4yXG4yXG4nCiAgICAgRSAgICAgICAgIFNraXBwaW5nIDE5MCBpZGVudGljYWwgbGVhZGluZyBj
aGFyYWN0ZXJzIGluIGRpZmYsIHVzZSAtdiB0byBzaG93CiAgICAgRSAgICAgICAgIFNraXBwaW5n
IDE5MSBpZGVudGljYWwgdHJhaWxpbmcgY2hhcmFjdGVycyBpbiBkaWZmLCB1c2UgLXYgdG8gc2hv
dwogICAgIEUgICAgICAgICAgIDEKQEAgLTE0OSw3ICsxNDcsNyBAQCBnZXQgb24gdGhlIHRlcm1p
bmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUKICAgICBFICAgICAgICAgLi4u
RnVsbCBvdXRwdXQgdHJ1bmNhdGVkICg3IGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2JyB0byBzaG93
CiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6Njk6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9k
ZW1vLnB5OjYwOiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fIFRlc3RTcGVj
aWFsaXNlZEV4cGxhbmF0aW9ucy50ZXN0X2VxX2xpc3QgX19fX19fX19fX19fX19fX18KIAogICAg
IHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3Qg
YXQgMHhkZWFkYmVlZj4KQEAgLTE2MCw3ICsxNTgsNyBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0g
d2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgICBBdCBpbmRleCAyIGRpZmY6
IDIgIT0gMwogICAgIEUgICAgICAgICBVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYKIAotICAg
IGZhaWx1cmVfZGVtby5weTo3MjogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6
NjM6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhw
bGFuYXRpb25zLnRlc3RfZXFfbGlzdF9sb25nIF9fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9
IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9iamVjdCBhdCAweGRl
YWRiZWVmPgpAQCAtMTczLDcgKzE3MSw3IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUg
d29ya2luZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICAgIEF0IGluZGV4IDEwMCBkaWZmOiAxICE9
IDIKICAgICBFICAgICAgICAgVXNlIC12IHRvIGdldCB0aGUgZnVsbCBkaWZmCiAKLSAgICBmYWls
dXJlX2RlbW8ucHk6Nzc6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjY4OiBB
c3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxh
bmF0aW9ucy50ZXN0X2VxX2RpY3QgX19fX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFp
bHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFkYmVl
Zj4KQEAgLTE4NCwxNCArMTgyLDE0IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29y
a2luZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICAgIE9taXR0aW5nIDEgaWRlbnRpY2FsIGl0ZW1z
LCB1c2UgLXZ2IHRvIHNob3cKICAgICBFICAgICAgICAgRGlmZmVyaW5nIGl0ZW1zOgogICAgIEUg
ICAgICAgICB7J2InOiAxfSAhPSB7J2InOiAyfQotICAgIEUgICAgICAgICBMZWZ0IGNvbnRhaW5z
IG1vcmUgaXRlbXM6CisgICAgRSAgICAgICAgIExlZnQgY29udGFpbnMgMSBtb3JlIGl0ZW06CiAg
ICAgRSAgICAgICAgIHsnYyc6IDB9Ci0gICAgRSAgICAgICAgIFJpZ2h0IGNvbnRhaW5zIG1vcmUg
aXRlbXM6CisgICAgRSAgICAgICAgIFJpZ2h0IGNvbnRhaW5zIDEgbW9yZSBpdGVtOgogICAgIEUg
ICAgICAgICB7J2QnOiAwfS4uLgogICAgIEUKICAgICBFICAgICAgICAgLi4uRnVsbCBvdXRwdXQg
dHJ1bmNhdGVkICgyIGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2JyB0byBzaG93CiAKLSAgICBmYWls
dXJlX2RlbW8ucHk6ODA6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjcxOiBB
c3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxh
bmF0aW9ucy50ZXN0X2VxX3NldCBfX19fX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFp
bHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFkYmVl
Zj4KQEAgLTIwOSw3ICsyMDcsNyBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtp
bmcgb24gdGhhdCk6OgogICAgIEUKICAgICBFICAgICAgICAgLi4uRnVsbCBvdXRwdXQgdHJ1bmNh
dGVkICgyIGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2JyB0byBzaG93CiAKLSAgICBmYWlsdXJlX2Rl
bW8ucHk6ODM6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5Ojc0OiBBc3NlcnRp
b25FcnJvcgogICAgIF9fX19fX19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRl
c3RfZXFfbG9uZ2VyX2xpc3QgX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9k
ZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAg
LTIxNywxMCArMjE1LDEwIEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBv
biB0aGF0KTo6CiAgICAgICAgIGRlZiB0ZXN0X2VxX2xvbmdlcl9saXN0KHNlbGYpOgogICAgID4g
ICAgICAgYXNzZXJ0IFsxLCAyXSA9PSBbMSwgMiwgM10KICAgICBFICAgICAgIGFzc2VydCBbMSwg
Ml0gPT0gWzEsIDIsIDNdCi0gICAgRSAgICAgICAgIFJpZ2h0IGNvbnRhaW5zIG1vcmUgaXRlbXMs
IGZpcnN0IGV4dHJhIGl0ZW06IDMKKyAgICBFICAgICAgICAgUmlnaHQgY29udGFpbnMgb25lIG1v
cmUgaXRlbTogMwogICAgIEUgICAgICAgICBVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYKIAot
ICAgIGZhaWx1cmVfZGVtby5weTo4NjogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8u
cHk6Nzc6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX18gVGVzdFNwZWNpYWxp
c2VkRXhwbGFuYXRpb25zLnRlc3RfaW5fbGlzdCBfX19fX19fX19fX19fX19fXwogCiAgICAgc2Vs
ZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9iamVjdCBhdCAw
eGRlYWRiZWVmPgpAQCAtMjI5LDcgKzIyNyw3IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBh
cmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgPiAgICAgICBhc3NlcnQgMSBpbiBbMCwgMiwgMywg
NCwgNV0KICAgICBFICAgICAgIGFzc2VydCAxIGluIFswLCAyLCAzLCA0LCA1XQogCi0gICAgZmFp
bHVyZV9kZW1vLnB5Ojg5OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weTo4MDog
QXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9u
cy50ZXN0X25vdF9pbl90ZXh0X211bHRpbGluZSBfX19fX19fX19fCiAKICAgICBzZWxmID0gPGZh
aWx1cmVfZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJl
ZWY+CkBAIC0yMzcsNyArMjM1LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3Jr
aW5nIG9uIHRoYXQpOjoKICAgICAgICAgZGVmIHRlc3Rfbm90X2luX3RleHRfbXVsdGlsaW5lKHNl
bGYpOgogICAgICAgICAgICAgdGV4dCA9ICJzb21lIG11bHRpbGluZVxudGV4dFxud2hpY2hcbmlu
Y2x1ZGVzIGZvb1xuYW5kIGFcbnRhaWwiCiAgICAgPiAgICAgICBhc3NlcnQgImZvbyIgbm90IGlu
IHRleHQKLSAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJ2Zvbycgbm90IGluICdz
b21lIG11bHRpbGluZVxudGV4dFxudy4uLm5jbHVkZXMgZm9vXG5hbmQgYVxudGFpbCcKKyAgICBF
ICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJ2Zvbycgbm90IGluICdzb21lIG11bHRpbC4u
Lm5hbmQgYVxudGFpbCcKICAgICBFICAgICAgICAgJ2ZvbycgaXMgY29udGFpbmVkIGhlcmU6CiAg
ICAgRSAgICAgICAgICAgc29tZSBtdWx0aWxpbmUKICAgICBFICAgICAgICAgICB0ZXh0CkBAIC0y
NDgsNyArMjQ2LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRo
YXQpOjoKICAgICBFCiAgICAgRSAgICAgICAgIC4uLkZ1bGwgb3V0cHV0IHRydW5jYXRlZCAoMiBs
aW5lcyBoaWRkZW4pLCB1c2UgJy12dicgdG8gc2hvdwogCi0gICAgZmFpbHVyZV9kZW1vLnB5Ojkz
OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weTo4NDogQXNzZXJ0aW9uRXJyb3IK
ICAgICBfX19fX19fX19fXyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMudGVzdF9ub3RfaW5f
dGV4dF9zaW5nbGUgX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0
U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC0yNjEsNyAr
MjU5LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoK
ICAgICBFICAgICAgICAgICBzaW5nbGUgZm9vIGxpbmUKICAgICBFICAgICAgICAgPyAgICAgICAg
KysrCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6OTc6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVy
ZV9kZW1vLnB5Ojg4OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fXyBUZXN0U3BlY2lhbGlz
ZWRFeHBsYW5hdGlvbnMudGVzdF9ub3RfaW5fdGV4dF9zaW5nbGVfbG9uZyBfX19fX19fX18KIAog
ICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmpl
Y3QgYXQgMHhkZWFkYmVlZj4KQEAgLTI2OSwxMiArMjY3LDEyIEBAIGdldCBvbiB0aGUgdGVybWlu
YWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgICAgIGRlZiB0ZXN0X25vdF9pbl90
ZXh0X3NpbmdsZV9sb25nKHNlbGYpOgogICAgICAgICAgICAgdGV4dCA9ICJoZWFkICIgKiA1MCAr
ICJmb28gIiArICJ0YWlsICIgKiAyMAogICAgID4gICAgICAgYXNzZXJ0ICJmb28iIG5vdCBpbiB0
ZXh0Ci0gICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICdmb28nIG5vdCBpbiAnaGVh
ZCBoZWFkIGhlYWQgaGVhZCBoZWEuLi5haWwgdGFpbCB0YWlsIHRhaWwgdGFpbCAnCisgICAgRSAg
ICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICdmb28nIG5vdCBpbiAnaGVhZCBoZWFkIGguLi5s
IHRhaWwgdGFpbCAnCiAgICAgRSAgICAgICAgICdmb28nIGlzIGNvbnRhaW5lZCBoZXJlOgogICAg
IEUgICAgICAgICAgIGhlYWQgaGVhZCBmb28gdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwg
dGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRh
aWwgdGFpbCB0YWlsCiAgICAgRSAgICAgICAgID8gICAgICAgICAgICsrKwogCi0gICAgZmFpbHVy
ZV9kZW1vLnB5OjEwMTogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6OTI6IEFz
c2VydGlvbkVycm9yCiAgICAgX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucy50ZXN0
X25vdF9pbl90ZXh0X3NpbmdsZV9sb25nX3Rlcm0gX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWls
dXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9iamVjdCBhdCAweGRlYWRiZWVm
PgpAQCAtMjgyLDE3ICsyODAsNzAgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3Jr
aW5nIG9uIHRoYXQpOjoKICAgICAgICAgZGVmIHRlc3Rfbm90X2luX3RleHRfc2luZ2xlX2xvbmdf
dGVybShzZWxmKToKICAgICAgICAgICAgIHRleHQgPSAiaGVhZCAiICogNTAgKyAiZiIgKiA3MCAr
ICJ0YWlsICIgKiAyMAogICAgID4gICAgICAgYXNzZXJ0ICJmIiAqIDcwIG5vdCBpbiB0ZXh0Ci0g
ICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICdmZmZmZmZmZmZmZi4uLmZmZmZmZmZm
ZmZmZicgbm90IGluICdoZWFkIGhlYWQgaGUuLi5sIHRhaWwgdGFpbCAnCisgICAgRSAgICAgICBB
c3NlcnRpb25FcnJvcjogYXNzZXJ0ICdmZmZmZmZmZmZmZi4uLmZmZmZmZmZmZmZmZicgbm90IGlu
ICdoZWFkIGhlYWQgaC4uLmwgdGFpbCB0YWlsICcKICAgICBFICAgICAgICAgJ2ZmZmZmZmZmZmZm
ZmZmZmZmZi4uLmZmZmZmZmZmZmZmZmZmZmZmZmYnIGlzIGNvbnRhaW5lZCBoZXJlOgogICAgIEUg
ICAgICAgICAgIGhlYWQgaGVhZCBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWls
IHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0
YWlsIHRhaWwgdGFpbCB0YWlsCiAgICAgRSAgICAgICAgID8gICAgICAgICAgICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysKIAotICAgIGZhaWx1cmVfZGVtby5weToxMDU6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVy
ZV9kZW1vLnB5Ojk2OiBBc3NlcnRpb25FcnJvcgorICAgIF9fX19fX19fX19fX19fIFRlc3RTcGVj
aWFsaXNlZEV4cGxhbmF0aW9ucy50ZXN0X2VxX2RhdGFjbGFzcyBfX19fX19fX19fX19fX18KKwor
ICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmpl
Y3QgYXQgMHhkZWFkYmVlZj4KKworICAgICAgICBkZWYgdGVzdF9lcV9kYXRhY2xhc3Moc2VsZik6
CisgICAgICAgICAgICBmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKKworICAgICAg
ICAgICAgQGRhdGFjbGFzcworICAgICAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgICAg
IGE6IGludAorICAgICAgICAgICAgICAgIGI6IHN0cgorCisgICAgICAgICAgICBsZWZ0ID0gRm9v
KDEsICJiIikKKyAgICAgICAgICAgIHJpZ2h0ID0gRm9vKDEsICJjIikKKyAgICA+ICAgICAgIGFz
c2VydCBsZWZ0ID09IHJpZ2h0CisgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IFRl
c3RTcGVjaWFsaXMuLi5vbyhhPTEsIGI9J2InKSA9PSBUZXN0U3BlY2lhbGlzLi4ub28oYT0xLCBi
PSdjJykKKyAgICBFCisgICAgRSAgICAgICAgIE9taXR0aW5nIDEgaWRlbnRpY2FsIGl0ZW1zLCB1
c2UgLXZ2IHRvIHNob3cKKyAgICBFICAgICAgICAgRGlmZmVyaW5nIGF0dHJpYnV0ZXM6CisgICAg
RSAgICAgICAgIFsnYiddCisgICAgRQorICAgIEUgICAgICAgICBEcmlsbCBkb3duIGludG8gZGlm
ZmVyaW5nIGF0dHJpYnV0ZSBiOgorICAgIEUgICAgICAgICAgIGI6ICdiJyAhPSAnYycuLi4KKyAg
ICBFCisgICAgRSAgICAgICAgIC4uLkZ1bGwgb3V0cHV0IHRydW5jYXRlZCAoMyBsaW5lcyBoaWRk
ZW4pLCB1c2UgJy12dicgdG8gc2hvdworCisgICAgZmFpbHVyZV9kZW1vLnB5OjEwODogQXNzZXJ0
aW9uRXJyb3IKKyAgICBfX19fX19fX19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9u
cy50ZXN0X2VxX2F0dHJzIF9fX19fX19fX19fX19fX19fCisKKyAgICBzZWxmID0gPGZhaWx1cmVf
ZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CisK
KyAgICAgICAgZGVmIHRlc3RfZXFfYXR0cnMoc2VsZik6CisgICAgICAgICAgICBpbXBvcnQgYXR0
cgorCisgICAgICAgICAgICBAYXR0ci5zCisgICAgICAgICAgICBjbGFzcyBGb286CisgICAgICAg
ICAgICAgICAgYSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgICAgIGIgPSBhdHRyLmliKCkKKwor
ICAgICAgICAgICAgbGVmdCA9IEZvbygxLCAiYiIpCisgICAgICAgICAgICByaWdodCA9IEZvbygx
LCAiYyIpCisgICAgPiAgICAgICBhc3NlcnQgbGVmdCA9PSByaWdodAorICAgIEUgICAgICAgQXNz
ZXJ0aW9uRXJyb3I6IGFzc2VydCBGb28oYT0xLCBiPSdiJykgPT0gRm9vKGE9MSwgYj0nYycpCisg
ICAgRQorICAgIEUgICAgICAgICBPbWl0dGluZyAxIGlkZW50aWNhbCBpdGVtcywgdXNlIC12diB0
byBzaG93CisgICAgRSAgICAgICAgIERpZmZlcmluZyBhdHRyaWJ1dGVzOgorICAgIEUgICAgICAg
ICBbJ2InXQorICAgIEUKKyAgICBFICAgICAgICAgRHJpbGwgZG93biBpbnRvIGRpZmZlcmluZyBh
dHRyaWJ1dGUgYjoKKyAgICBFICAgICAgICAgICBiOiAnYicgIT0gJ2MnLi4uCisgICAgRQorICAg
IEUgICAgICAgICAuLi5GdWxsIG91dHB1dCB0cnVuY2F0ZWQgKDMgbGluZXMgaGlkZGVuKSwgdXNl
ICctdnYnIHRvIHNob3cKKworICAgIGZhaWx1cmVfZGVtby5weToxMjA6IEFzc2VydGlvbkVycm9y
CiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfYXR0cmlidXRlIF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZSgp
OgotCi0gICAgICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGNsYXNzIEZv
bzoKICAgICAgICAgICAgICAgICBiID0gMQogCiAgICAgICAgICAgICBpID0gRm9vKCkKQEAgLTMw
MCwxMiArMzUxLDExIEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0
aGF0KTo6CiAgICAgRSAgICAgICBhc3NlcnQgMSA9PSAyCiAgICAgRSAgICAgICAgKyAgd2hlcmUg
MSA9IDxmYWlsdXJlX2RlbW8udGVzdF9hdHRyaWJ1dGUuPGxvY2Fscz4uRm9vIG9iamVjdCBhdCAw
eGRlYWRiZWVmPi5iCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTE0OiBBc3NlcnRpb25FcnJvcgor
ICAgIGZhaWx1cmVfZGVtby5weToxMjg6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19f
X19fX19fX19fX19fXyB0ZXN0X2F0dHJpYnV0ZV9pbnN0YW5jZSBfX19fX19fX19fX19fX19fX19f
X19fX19fXwogCiAgICAgICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9pbnN0YW5jZSgpOgotCi0gICAg
ICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGNsYXNzIEZvbzoKICAgICAg
ICAgICAgICAgICBiID0gMQogCiAgICAgPiAgICAgICBhc3NlcnQgRm9vKCkuYiA9PSAyCkBAIC0z
MTMsMTMgKzM2MywxMSBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24g
dGhhdCk6OgogICAgIEUgICAgICAgICsgIHdoZXJlIDEgPSA8ZmFpbHVyZV9kZW1vLnRlc3RfYXR0
cmlidXRlX2luc3RhbmNlLjxsb2NhbHM+LkZvbyBvYmplY3QgYXQgMHhkZWFkYmVlZj4uYgogICAg
IEUgICAgICAgICsgICAgd2hlcmUgPGZhaWx1cmVfZGVtby50ZXN0X2F0dHJpYnV0ZV9pbnN0YW5j
ZS48bG9jYWxzPi5Gb28gb2JqZWN0IGF0IDB4ZGVhZGJlZWY+ID0gPGNsYXNzICdmYWlsdXJlX2Rl
bW8udGVzdF9hdHRyaWJ1dGVfaW5zdGFuY2UuPGxvY2Fscz4uRm9vJz4oKQogCi0gICAgZmFpbHVy
ZV9kZW1vLnB5OjEyMjogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MTM1OiBB
c3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfYXR0cmli
dXRlX2ZhaWx1cmUgX19fX19fX19fX19fX19fX19fX19fX19fX18KIAogICAgICAgICBkZWYgdGVz
dF9hdHRyaWJ1dGVfZmFpbHVyZSgpOgotCi0gICAgICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToK
LQorICAgICAgICAgICAgY2xhc3MgRm9vOgogICAgICAgICAgICAgICAgIGRlZiBfZ2V0X2Ioc2Vs
Zik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRmFpbGVkIHRvIGdldCBh
dHRyaWIiKQogCkBAIC0zMjgsNyArMzc2LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFy
ZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICAgICAgICAgIGkgPSBGb28oKQogICAgID4gICAgICAg
YXNzZXJ0IGkuYiA9PSAyCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTM1OgorICAgIGZhaWx1cmVf
ZGVtby5weToxNDY6CiAgICAgXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfCiAKICAgICBzZWxmID0gPGZhaWx1
cmVfZGVtby50ZXN0X2F0dHJpYnV0ZV9mYWlsdXJlLjxsb2NhbHM+LkZvbyBvYmplY3QgYXQgMHhk
ZWFkYmVlZj4KQEAgLTMzNywxNSArMzg1LDE0IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBh
cmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgPiAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxl
ZCB0byBnZXQgYXR0cmliIikKICAgICBFICAgICAgIEV4Y2VwdGlvbjogRmFpbGVkIHRvIGdldCBh
dHRyaWIKIAotICAgIGZhaWx1cmVfZGVtby5weToxMzA6IEV4Y2VwdGlvbgorICAgIGZhaWx1cmVf
ZGVtby5weToxNDE6IEV4Y2VwdGlvbgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX18gdGVz
dF9hdHRyaWJ1dGVfbXVsdGlwbGUgX19fX19fX19fX19fX19fX19fX19fX19fX18KIAogICAgICAg
ICBkZWYgdGVzdF9hdHRyaWJ1dGVfbXVsdGlwbGUoKToKLQotICAgICAgICAgICAgY2xhc3MgRm9v
KG9iamVjdCk6CisgICAgICAgICAgICBjbGFzcyBGb286CiAgICAgICAgICAgICAgICAgYiA9IDEK
IAotICAgICAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICBjbGFzcyBCYXI6
CiAgICAgICAgICAgICAgICAgYiA9IDIKIAogICAgID4gICAgICAgYXNzZXJ0IEZvbygpLmIgPT0g
QmFyKCkuYgpAQCAtMzU1LDMxICs0MDIsMjYgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFy
ZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgICArICBhbmQgICAyID0gPGZhaWx1cmVf
ZGVtby50ZXN0X2F0dHJpYnV0ZV9tdWx0aXBsZS48bG9jYWxzPi5CYXIgb2JqZWN0IGF0IDB4ZGVh
ZGJlZWY+LmIKICAgICBFICAgICAgICArICAgIHdoZXJlIDxmYWlsdXJlX2RlbW8udGVzdF9hdHRy
aWJ1dGVfbXVsdGlwbGUuPGxvY2Fscz4uQmFyIG9iamVjdCBhdCAweGRlYWRiZWVmPiA9IDxjbGFz
cyAnZmFpbHVyZV9kZW1vLnRlc3RfYXR0cmlidXRlX211bHRpcGxlLjxsb2NhbHM+LkJhcic+KCkK
IAotICAgIGZhaWx1cmVfZGVtby5weToxNDY6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9k
ZW1vLnB5OjE1NjogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19f
XyBUZXN0UmFpc2VzLnRlc3RfcmFpc2VzIF9fX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAg
ICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0UmFpc2VzIG9iamVjdCBhdCAweGRlYWRiZWVmPgog
CiAgICAgICAgIGRlZiB0ZXN0X3JhaXNlcyhzZWxmKToKLSAgICAgICAgICAgIHMgPSAicXdlIiAg
IyBOT1FBCi0gICAgPiAgICAgICByYWlzZXMoVHlwZUVycm9yLCAiaW50KHMpIikKLQotICAgIGZh
aWx1cmVfZGVtby5weToxNTc6Ci0gICAgXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfCi0KLSAgICA+ICAgaW50
KHMpCi0gICAgRSAgIFZhbHVlRXJyb3I6IGludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBi
YXNlIDEwOiAncXdlJworICAgICAgICAgICAgcyA9ICJxd2UiCisgICAgPiAgICAgICByYWlzZXMo
VHlwZUVycm9yLCBpbnQsIHMpCisgICAgRSAgICAgICBWYWx1ZUVycm9yOiBpbnZhbGlkIGxpdGVy
YWwgZm9yIGludCgpIHdpdGggYmFzZSAxMDogJ3F3ZScKIAotICAgIDwwLWNvZGVnZW4gJFBZVEhP
Tl9QUkVGSVgvbGliL3B5dGhvbjMuNS9zaXRlLXBhY2thZ2VzL19weXRlc3QvcHl0aG9uX2FwaS5w
eTo2MzQ+OjE6IFZhbHVlRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MTY2OiBWYWx1ZUVycm9y
CiAgICAgX19fX19fX19fX19fX19fX19fX19fXyBUZXN0UmFpc2VzLnRlc3RfcmFpc2VzX2RvZXNu
dCBfX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVz
dFJhaXNlcyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9yYWlzZXNf
ZG9lc250KHNlbGYpOgotICAgID4gICAgICAgcmFpc2VzKElPRXJyb3IsICJpbnQoJzMnKSIpCisg
ICAgPiAgICAgICByYWlzZXMoT1NFcnJvciwgaW50LCAiMyIpCiAgICAgRSAgICAgICBGYWlsZWQ6
IERJRCBOT1QgUkFJU0UgPGNsYXNzICdPU0Vycm9yJz4KIAotICAgIGZhaWx1cmVfZGVtby5weTox
NjA6IEZhaWxlZAorICAgIGZhaWx1cmVfZGVtby5weToxNjk6IEZhaWxlZAogICAgIF9fX19fX19f
X19fX19fX19fX19fX19fX19fIFRlc3RSYWlzZXMudGVzdF9yYWlzZSBfX19fX19fX19fX19fX19f
X19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RSYWlzZXMgb2JqZWN0
IGF0IDB4ZGVhZGJlZWY+CkBAIC0zODgsNyArNDMwLDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAt
IHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICA+ICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
ImRlbW8gZXJyb3IiKQogICAgIEUgICAgICAgVmFsdWVFcnJvcjogZGVtbyBlcnJvcgogCi0gICAg
ZmFpbHVyZV9kZW1vLnB5OjE2MzogVmFsdWVFcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToxNzI6
IFZhbHVlRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19fX18gVGVzdFJhaXNlcy50ZXN0
X3R1cGxlZXJyb3IgX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1
cmVfZGVtby5UZXN0UmFpc2VzIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtMzk3LDE4ICs0Mzks
MTggQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAg
ICA+ICAgICAgIGEsIGIgPSBbMV0gICMgTk9RQQogICAgIEUgICAgICAgVmFsdWVFcnJvcjogbm90
IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAyLCBnb3QgMSkKIAotICAgIGZhaWx1
cmVfZGVtby5weToxNjY6IFZhbHVlRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MTc1OiBWYWx1
ZUVycm9yCiAgICAgX19fX19fIFRlc3RSYWlzZXMudGVzdF9yZWludGVycHJldF9mYWlsc193aXRo
X3ByaW50X2Zvcl90aGVfZnVuX29mX2l0IF9fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2Rl
bW8uVGVzdFJhaXNlcyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9y
ZWludGVycHJldF9mYWlsc193aXRoX3ByaW50X2Zvcl90aGVfZnVuX29mX2l0KHNlbGYpOgogICAg
ICAgICAgICAgaXRlbXMgPSBbMSwgMiwgM10KLSAgICAgICAgICAgIHByaW50KCJpdGVtcyBpcyAl
ciIgJSBpdGVtcykKKyAgICAgICAgICAgIHByaW50KCJpdGVtcyBpcyB7IXJ9Ii5mb3JtYXQoaXRl
bXMpKQogICAgID4gICAgICAgYSwgYiA9IGl0ZW1zLnBvcCgpCi0gICAgRSAgICAgICBUeXBlRXJy
b3I6ICdpbnQnIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKyAgICBFICAgICAgIFR5cGVFcnJvcjog
Y2Fubm90IHVucGFjayBub24taXRlcmFibGUgaW50IG9iamVjdAogCi0gICAgZmFpbHVyZV9kZW1v
LnB5OjE3MTogVHlwZUVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjE4MDogVHlwZUVycm9yCiAg
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0ZG91dCBjYWxsIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIGl0ZW1zIGlzIFsxLCAyLCAzXQogICAgIF9fX19f
X19fX19fX19fX19fX19fX19fXyBUZXN0UmFpc2VzLnRlc3Rfc29tZV9lcnJvciBfX19fX19fX19f
X19fX19fX19fX19fX18KQEAgLTQxOSwzNSArNDYxLDM0IEBAIGdldCBvbiB0aGUgdGVybWluYWwg
LSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgPiAgICAgICBpZiBuYW1lbm90ZXhpOiAg
IyBOT1FBCiAgICAgRSAgICAgICBOYW1lRXJyb3I6IG5hbWUgJ25hbWVub3RleGknIGlzIG5vdCBk
ZWZpbmVkCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTc0OiBOYW1lRXJyb3IKKyAgICBmYWlsdXJl
X2RlbW8ucHk6MTgzOiBOYW1lRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fXyB0ZXN0X2R5
bmFtaWNfY29tcGlsZV9zaG93c19uaWNlbHkgX19fX19fX19fX19fX19fX19fX19fCiAKICAgICAg
ICAgZGVmIHRlc3RfZHluYW1pY19jb21waWxlX3Nob3dzX25pY2VseSgpOgotICAgICAgICAgICAg
aW1wb3J0IGltcAorICAgICAgICAgICAgaW1wb3J0IGltcG9ydGxpYi51dGlsCiAgICAgICAgICAg
ICBpbXBvcnQgc3lzCiAKICAgICAgICAgICAgIHNyYyA9ICJkZWYgZm9vKCk6XG4gYXNzZXJ0IDEg
PT0gMFxuIgogICAgICAgICAgICAgbmFtZSA9ICJhYmMtMTIzIgotICAgICAgICAgICAgbW9kdWxl
ID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2Rl
LmNvbXBpbGUoc3JjLCBuYW1lLCAiZXhlYyIpCi0gICAgICAgICAgICBweS5idWlsdGluLmV4ZWNf
KGNvZGUsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRp
bC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIGxvYWRlcj1Ob25lKQorICAgICAgICAgICAgbW9kdWxl
ID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICAgICAgY29k
ZSA9IGNvbXBpbGUoc3JjLCBuYW1lLCAiZXhlYyIpCisgICAgICAgICAgICBleGVjKGNvZGUsIG1v
ZHVsZS5fX2RpY3RfXykKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAg
ICAgPiAgICAgICBtb2R1bGUuZm9vKCkKIAotICAgIGZhaWx1cmVfZGVtby5weToxOTI6CisgICAg
ZmFpbHVyZV9kZW1vLnB5OjIwMjoKICAgICBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8KIAotICAgICAgICBk
ZWYgZm9vKCk6Ci0gICAgPiAgICBhc3NlcnQgMSA9PSAwCi0gICAgRSAgICBBc3NlcnRpb25FcnJv
cgorICAgID4gICA/Pz8KKyAgICBFICAgQXNzZXJ0aW9uRXJyb3IKIAotICAgIDwyLWNvZGVnZW4g
J2FiYy0xMjMnICRSRUdFTkRPQ19UTVBESVIvYXNzZXJ0aW9uL2ZhaWx1cmVfZGVtby5weToxODk+
OjI6IEFzc2VydGlvbkVycm9yCisgICAgYWJjLTEyMzoyOiBBc3NlcnRpb25FcnJvcgogICAgIF9f
X19fX19fX19fX19fX19fX19fIFRlc3RNb3JlRXJyb3JzLnRlc3RfY29tcGxleF9lcnJvciBfX19f
X19fX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RNb3JlRXJy
b3JzIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCiAgICAgICAgIGRlZiB0ZXN0X2NvbXBsZXhfZXJy
b3Ioc2VsZik6Ci0KICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IDQ0CiAKQEAgLTQ1Niw5ICs0OTcsOSBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdv
cmtpbmcgb24gdGhhdCk6OgogCiAgICAgPiAgICAgICBzb21lZnVuYyhmKCksIGcoKSkKIAotICAg
IGZhaWx1cmVfZGVtby5weToyMDU6CisgICAgZmFpbHVyZV9kZW1vLnB5OjIxMzoKICAgICBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8KLSAgICBmYWlsdXJlX2RlbW8ucHk6MTE6IGluIHNvbWVmdW5jCisgICAg
ZmFpbHVyZV9kZW1vLnB5OjEwOiBpbiBzb21lZnVuYwogICAgICAgICBvdGhlcmZ1bmMoeCwgeSkK
ICAgICBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8KIApAQCAtNDY4LDcgKzUwOSw3IEBAIGdldCBvbiB0aGUg
dGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgPiAgICAgICBhc3NlcnQg
YSA9PSBiCiAgICAgRSAgICAgICBhc3NlcnQgNDQgPT0gNDMKIAotICAgIGZhaWx1cmVfZGVtby5w
eTo3OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weTo2OiBBc3NlcnRpb25FcnJv
cgogICAgIF9fX19fX19fX19fX19fX19fX18gVGVzdE1vcmVFcnJvcnMudGVzdF96MV91bnBhY2tf
ZXJyb3IgX19fX19fX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRl
c3RNb3JlRXJyb3JzIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtNDc4LDcgKzUxOSw3IEBAIGdl
dCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgPiAgICAg
ICBhLCBiID0gaXRlbXMKICAgICBFICAgICAgIFZhbHVlRXJyb3I6IG5vdCBlbm91Z2ggdmFsdWVz
IHRvIHVucGFjayAoZXhwZWN0ZWQgMiwgZ290IDApCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MjA5
OiBWYWx1ZUVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjIxNzogVmFsdWVFcnJvcgogICAgIF9f
X19fX19fX19fX19fX19fX19fIFRlc3RNb3JlRXJyb3JzLnRlc3RfejJfdHlwZV9lcnJvciBfX19f
X19fX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RNb3JlRXJy
b3JzIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtNDg2LDkgKzUyNyw5IEBAIGdldCBvbiB0aGUg
dGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgICAgIGRlZiB0ZXN0X3oy
X3R5cGVfZXJyb3Ioc2VsZik6CiAgICAgICAgICAgICBpdGVtcyA9IDMKICAgICA+ICAgICAgIGEs
IGIgPSBpdGVtcwotICAgIEUgICAgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGl0
ZXJhYmxlCisgICAgRSAgICAgICBUeXBlRXJyb3I6IGNhbm5vdCB1bnBhY2sgbm9uLWl0ZXJhYmxl
IGludCBvYmplY3QKIAotICAgIGZhaWx1cmVfZGVtby5weToyMTM6IFR5cGVFcnJvcgorICAgIGZh
aWx1cmVfZGVtby5weToyMjE6IFR5cGVFcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fX18g
VGVzdE1vcmVFcnJvcnMudGVzdF9zdGFydHN3aXRoIF9fX19fX19fX19fX19fX19fX19fX18KIAog
ICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RNb3JlRXJyb3JzIG9iamVjdCBhdCAweGRlYWRi
ZWVmPgpAQCAtNTAxLDEzICs1NDIsMTIgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3
b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgICArICB3aGVyZSBGYWxzZSA9IDxidWlsdC1p
biBtZXRob2Qgc3RhcnRzd2l0aCBvZiBzdHIgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+KCc0NTYnKQog
ICAgIEUgICAgICAgICsgICAgd2hlcmUgPGJ1aWx0LWluIG1ldGhvZCBzdGFydHN3aXRoIG9mIHN0
ciBvYmplY3QgYXQgMHhkZWFkYmVlZj4gPSAnMTIzJy5zdGFydHN3aXRoCiAKLSAgICBmYWlsdXJl
X2RlbW8ucHk6MjE4OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToyMjY6IEFz
c2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fIFRlc3RNb3JlRXJyb3JzLnRlc3Rf
c3RhcnRzd2l0aF9uZXN0ZWQgX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWls
dXJlX2RlbW8uVGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAKICAgICAgICAg
ZGVmIHRlc3Rfc3RhcnRzd2l0aF9uZXN0ZWQoc2VsZik6Ci0KICAgICAgICAgICAgIGRlZiBmKCk6
CiAgICAgICAgICAgICAgICAgcmV0dXJuICIxMjMiCiAKQEAgLTUyMSw3ICs1NjEsNyBAQCBnZXQg
b24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAg
ICsgICAgICB3aGVyZSAnMTIzJyA9IDxmdW5jdGlvbiBUZXN0TW9yZUVycm9ycy50ZXN0X3N0YXJ0
c3dpdGhfbmVzdGVkLjxsb2NhbHM+LmYgYXQgMHhkZWFkYmVlZj4oKQogICAgIEUgICAgICAgICsg
ICAgYW5kICAgJzQ1NicgPSA8ZnVuY3Rpb24gVGVzdE1vcmVFcnJvcnMudGVzdF9zdGFydHN3aXRo
X25lc3RlZC48bG9jYWxzPi5nIGF0IDB4ZGVhZGJlZWY+KCkKIAotICAgIGZhaWx1cmVfZGVtby5w
eToyMjg6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjIzNTogQXNzZXJ0aW9u
RXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX18gVGVzdE1vcmVFcnJvcnMudGVzdF9nbG9i
YWxfZnVuYyBfX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVt
by5UZXN0TW9yZUVycm9ycyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTUzMiw3ICs1NzIsNyBA
QCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUg
ICAgICAgICsgIHdoZXJlIEZhbHNlID0gaXNpbnN0YW5jZSg0MywgZmxvYXQpCiAgICAgRSAgICAg
ICAgKyAgICB3aGVyZSA0MyA9IGdsb2JmKDQyKQogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjIzMTog
QXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MjM4OiBBc3NlcnRpb25FcnJvcgog
ICAgIF9fX19fX19fX19fX19fX19fX19fX19fIFRlc3RNb3JlRXJyb3JzLnRlc3RfaW5zdGFuY2Ug
X19fX19fX19fX19fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RN
b3JlRXJyb3JzIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtNTQzLDcgKzU4Myw3IEBAIGdldCBv
biB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICBh
c3NlcnQgNDIgIT0gNDIKICAgICBFICAgICAgICArICB3aGVyZSA0MiA9IDxmYWlsdXJlX2RlbW8u
VGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+LngKIAotICAgIGZhaWx1cmVfZGVt
by5weToyMzU6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjI0MjogQXNzZXJ0
aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19fXyBUZXN0TW9yZUVycm9ycy50ZXN0
X2NvbXBhcmUgX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVf
ZGVtby5UZXN0TW9yZUVycm9ycyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTU1Myw3ICs1OTMs
NyBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAg
IEUgICAgICAgYXNzZXJ0IDExIDwgNQogICAgIEUgICAgICAgICsgIHdoZXJlIDExID0gZ2xvYmYo
MTApCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MjM4OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1
cmVfZGVtby5weToyNDU6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX19f
IFRlc3RNb3JlRXJyb3JzLnRlc3RfdHJ5X2ZpbmFsbHkgX19fX19fX19fX19fX19fX19fX19fXwog
CiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVh
ZGJlZWY+CkBAIC01NjQsMTQgKzYwNCwxMyBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJl
IHdvcmtpbmcgb24gdGhhdCk6OgogICAgID4gICAgICAgICAgIGFzc2VydCB4ID09IDAKICAgICBF
ICAgICAgICAgICBhc3NlcnQgMSA9PSAwCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MjQzOiBBc3Nl
cnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToyNTA6IEFzc2VydGlvbkVycm9yCiAgICAg
X19fX19fX19fX19fX19fX19fXyBUZXN0Q3VzdG9tQXNzZXJ0TXNnLnRlc3Rfc2luZ2xlX2xpbmUg
X19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdEN1c3Rv
bUFzc2VydE1zZyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9zaW5n
bGVfbGluZShzZWxmKToKLQotICAgICAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAg
ICAgY2xhc3MgQToKICAgICAgICAgICAgICAgICBhID0gMQogCiAgICAgICAgICAgICBiID0gMgpA
QCAtNTgwLDM0ICs2MTksMzIgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5n
IG9uIHRoYXQpOjoKICAgICBFICAgICAgIGFzc2VydCAxID09IDIKICAgICBFICAgICAgICArICB3
aGVyZSAxID0gPGNsYXNzICdmYWlsdXJlX2RlbW8uVGVzdEN1c3RvbUFzc2VydE1zZy50ZXN0X3Np
bmdsZV9saW5lLjxsb2NhbHM+LkEnPi5hCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MjU2OiBBc3Nl
cnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToyNjE6IEFzc2VydGlvbkVycm9yCiAgICAg
X19fX19fX19fX19fX19fX19fX18gVGVzdEN1c3RvbUFzc2VydE1zZy50ZXN0X211bHRpbGluZSBf
X19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdEN1c3Rv
bUFzc2VydE1zZyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9tdWx0
aWxpbmUoc2VsZik6Ci0KLSAgICAgICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgICAg
IGNsYXNzIEE6CiAgICAgICAgICAgICAgICAgYSA9IDEKIAogICAgICAgICAgICAgYiA9IDIKICAg
ICA+ICAgICAgIGFzc2VydCAoCiAgICAgICAgICAgICAgICAgQS5hID09IGIKLSAgICAgICAgICAg
ICksICJBLmEgYXBwZWFycyBub3QgdG8gYmUgYlxuIiAib3IgZG9lcyBub3QgYXBwZWFyIHRvIGJl
IGJcbm9uZSBvZiB0aG9zZSIKKyAgICAgICAgICAgICksICJBLmEgYXBwZWFycyBub3QgdG8gYmUg
Ylxub3IgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGJcbm9uZSBvZiB0aG9zZSIKICAgICBFICAgICAg
IEFzc2VydGlvbkVycm9yOiBBLmEgYXBwZWFycyBub3QgdG8gYmUgYgogICAgIEUgICAgICAgICBv
ciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYgogICAgIEUgICAgICAgICBvbmUgb2YgdGhvc2UKICAg
ICBFICAgICAgIGFzc2VydCAxID09IDIKICAgICBFICAgICAgICArICB3aGVyZSAxID0gPGNsYXNz
ICdmYWlsdXJlX2RlbW8uVGVzdEN1c3RvbUFzc2VydE1zZy50ZXN0X211bHRpbGluZS48bG9jYWxz
Pi5BJz4uYQogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjI2NDogQXNzZXJ0aW9uRXJyb3IKKyAgICBm
YWlsdXJlX2RlbW8ucHk6MjY4OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19f
X18gVGVzdEN1c3RvbUFzc2VydE1zZy50ZXN0X2N1c3RvbV9yZXByIF9fX19fX19fX19fX19fX19f
X18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RDdXN0b21Bc3NlcnRNc2cgb2JqZWN0
IGF0IDB4ZGVhZGJlZWY+CiAKICAgICAgICAgZGVmIHRlc3RfY3VzdG9tX3JlcHIoc2VsZik6Ci0K
LSAgICAgICAgICAgIGNsYXNzIEpTT04ob2JqZWN0KToKKyAgICAgICAgICAgIGNsYXNzIEpTT046
CiAgICAgICAgICAgICAgICAgYSA9IDEKIAogICAgICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKQEAgLTYyMywxMSArNjYwLDUwIEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUg
d29ya2luZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICBhc3NlcnQgMSA9PSAyCiAgICAgRSAgICAg
ICAgKyAgd2hlcmUgMSA9IFRoaXMgaXMgSlNPTlxue1xuICAnZm9vJzogJ2Jhcidcbn0uYQogCi0g
ICAgZmFpbHVyZV9kZW1vLnB5OjI3ODogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSB3YXJuaW5ncyBzdW1tYXJ5ID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0gICAgPHVuZGV0ZXJtaW5lZCBsb2NhdGlvbj4KLSAgICAgIE1ldGFmdW5jLmFkZGNh
bGwgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gcHl0ZXN0IDQu
MC4KLSAgICAgIFBsZWFzZSB1c2UgTWV0YWZ1bmMucGFyYW1ldHJpemUgaW5zdGVhZC4KLQotICAg
IC0tIERvY3M6IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvd2FybmluZ3MuaHRtbAot
ICAgID09PT09PT09PT09PT09PT09PSA0MiBmYWlsZWQsIDEgd2FybmluZ3MgaW4gMC4xMiBzZWNv
bmRzID09PT09PT09PT09PT09PT09PT0KKyAgICBmYWlsdXJlX2RlbW8ucHk6MjgxOiBBc3NlcnRp
b25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5
IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1v
LnB5Ojp0ZXN0X2dlbmVyYXRpdmVbMy02XSAtIGFzc2VydCAoMyAqIDIpIDwgNgorICAgIEZBSUxF
RCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RGYWlsaW5nOjp0ZXN0X3NpbXBsZSAtIGFzc2VydCA0MiA9
PSA0MworICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RGYWlsaW5nOjp0ZXN0X3NpbXBs
ZV9tdWx0aWxpbmUgLSBhc3NlcnQgNDIgPT0gNTQKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5
OjpUZXN0RmFpbGluZzo6dGVzdF9ub3QgLSBhc3NlcnQgbm90IDQyCisgICAgRkFJTEVEIGZhaWx1
cmVfZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X2VxX3RleHQgLSBB
c3Nlci4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNlZEV4cGxh
bmF0aW9uczo6dGVzdF9lcV9zaW1pbGFyX3RleHQKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5
OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRlc3RfZXFfbXVsdGlsaW5lX3RleHQKKyAg
ICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRl
c3RfZXFfbG9uZ190ZXh0IC0gLi4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNw
ZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X2VxX2xvbmdfdGV4dF9tdWx0aWxpbmUKKyAgICBG
QUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRlc3Rf
ZXFfbGlzdCAtIGFzc2VyLi4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNwZWNp
YWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X2VxX2xpc3RfbG9uZyAtIC4uLgorICAgIEZBSUxFRCBm
YWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9uczo6dGVzdF9lcV9kaWN0
IC0gQXNzZXIuLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRF
eHBsYW5hdGlvbnM6OnRlc3RfZXFfc2V0IC0gQXNzZXJ0Li4uCisgICAgRkFJTEVEIGZhaWx1cmVf
ZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X2VxX2xvbmdlcl9saXN0
CisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25z
Ojp0ZXN0X2luX2xpc3QgLSBhc3Nlci4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRl
c3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9uczo6dGVzdF9ub3RfaW5fdGV4dF9tdWx0aWxpbmUKKyAg
ICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRl
c3Rfbm90X2luX3RleHRfc2luZ2xlCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNw
ZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X25vdF9pbl90ZXh0X3NpbmdsZV9sb25nCisgICAg
RkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0
X25vdF9pbl90ZXh0X3NpbmdsZV9sb25nX3Rlcm0KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5
OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRlc3RfZXFfZGF0YWNsYXNzIC0gLi4uCisg
ICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0
ZXN0X2VxX2F0dHJzIC0gQXNzZS4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OnRlc3Rf
YXR0cmlidXRlIC0gYXNzZXJ0IDEgPT0gMgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OnRl
c3RfYXR0cmlidXRlX2luc3RhbmNlIC0gQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCAuLi4KKyAgICBG
QUlMRUQgZmFpbHVyZV9kZW1vLnB5Ojp0ZXN0X2F0dHJpYnV0ZV9mYWlsdXJlIC0gRXhjZXB0aW9u
OiBGYWlsZWQgdG8gZ2V0Li4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6dGVzdF9hdHRy
aWJ1dGVfbXVsdGlwbGUgLSBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IC4uLgorICAgIEZBSUxFRCBm
YWlsdXJlX2RlbW8ucHk6OlRlc3RSYWlzZXM6OnRlc3RfcmFpc2VzIC0gVmFsdWVFcnJvcjogaW52
YWxpZCBsaXQuLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0UmFpc2VzOjp0ZXN0
X3JhaXNlc19kb2VzbnQgLSBGYWlsZWQ6IERJRCBOT1QgLi4uCisgICAgRkFJTEVEIGZhaWx1cmVf
ZGVtby5weTo6VGVzdFJhaXNlczo6dGVzdF9yYWlzZSAtIFZhbHVlRXJyb3I6IGRlbW8gZXJyb3IK
KyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0UmFpc2VzOjp0ZXN0X3R1cGxlZXJyb3Ig
LSBWYWx1ZUVycm9yOiBub3QgZW5vLi4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVz
dFJhaXNlczo6dGVzdF9yZWludGVycHJldF9mYWlsc193aXRoX3ByaW50X2Zvcl90aGVfZnVuX29m
X2l0CisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFJhaXNlczo6dGVzdF9zb21lX2Vy
cm9yIC0gTmFtZUVycm9yOiBuYW1lICduYS4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6
OnRlc3RfZHluYW1pY19jb21waWxlX3Nob3dzX25pY2VseSAtIEFzc2VydGlvbkVycm9yCisgICAg
RkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdE1vcmVFcnJvcnM6OnRlc3RfY29tcGxleF9lcnJv
ciAtIGFzc2VydCA0NCA9PSA0MworICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RNb3Jl
RXJyb3JzOjp0ZXN0X3oxX3VucGFja19lcnJvciAtIFZhbHVlRXJyb3IuLi4KKyAgICBGQUlMRUQg
ZmFpbHVyZV9kZW1vLnB5OjpUZXN0TW9yZUVycm9yczo6dGVzdF96Ml90eXBlX2Vycm9yIC0gVHlw
ZUVycm9yOiBjLi4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdE1vcmVFcnJvcnM6
OnRlc3Rfc3RhcnRzd2l0aCAtIEFzc2VydGlvbkVycm9yOi4uLgorICAgIEZBSUxFRCBmYWlsdXJl
X2RlbW8ucHk6OlRlc3RNb3JlRXJyb3JzOjp0ZXN0X3N0YXJ0c3dpdGhfbmVzdGVkIC0gQXNzZXJ0
aW8uLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0TW9yZUVycm9yczo6dGVzdF9n
bG9iYWxfZnVuYyAtIGFzc2VydCBGYWxzZQorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRl
c3RNb3JlRXJyb3JzOjp0ZXN0X2luc3RhbmNlIC0gYXNzZXJ0IDQyICE9IDQyCisgICAgRkFJTEVE
IGZhaWx1cmVfZGVtby5weTo6VGVzdE1vcmVFcnJvcnM6OnRlc3RfY29tcGFyZSAtIGFzc2VydCAx
MSA8IDUKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0TW9yZUVycm9yczo6dGVzdF90
cnlfZmluYWxseSAtIGFzc2VydCAxID09IDAKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpU
ZXN0Q3VzdG9tQXNzZXJ0TXNnOjp0ZXN0X3NpbmdsZV9saW5lIC0gQXNzZXJ0aW9uLi4uCisgICAg
RkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdEN1c3RvbUFzc2VydE1zZzo6dGVzdF9tdWx0aWxp
bmUgLSBBc3NlcnRpb25Fci4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RDdXN0
b21Bc3NlcnRNc2c6OnRlc3RfY3VzdG9tX3JlcHIgLSBBc3NlcnRpb24uLi4KKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09IDQ0IGZhaWxlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9zaW1w
bGUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvc2ltcGxlLnJzdAppbmRleCAxODA2
MzdhZTk5NGIuLmU5OTUyZGFkNGQ3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvc2ltcGxlLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9zaW1wbGUu
cnN0CkBAIC0zLDYgKzMsNTAgQEAKIEJhc2ljIHBhdHRlcm5zIGFuZCBleGFtcGxlcwogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCitI
b3cgdG8gY2hhbmdlIGNvbW1hbmQgbGluZSBvcHRpb25zIGRlZmF1bHRzCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0l0IGNhbiBiZSB0ZWRpb3VzIHRvIHR5
cGUgdGhlIHNhbWUgc2VyaWVzIG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCitldmVyeSB0aW1lIHlv
dSB1c2UgYGBweXRlc3RgYC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWx3YXlzIHdhbnQgdG8gc2Vl
CitkZXRhaWxlZCBpbmZvIG9uIHNraXBwZWQgYW5kIHhmYWlsZWQgdGVzdHMsIGFzIHdlbGwgYXMg
aGF2ZSB0ZXJzZXIgImRvdCIKK3Byb2dyZXNzIG91dHB1dCwgeW91IGNhbiB3cml0ZSBpdCBpbnRv
IGEgY29uZmlndXJhdGlvbiBmaWxlOgorCisuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAjIGNv
bnRlbnQgb2YgcHl0ZXN0LmluaQorICAgIFtweXRlc3RdCisgICAgYWRkb3B0cyA9IC1yYSAtcQor
CisKK0FsdGVybmF0aXZlbHksIHlvdSBjYW4gc2V0IGEgYGBQWVRFU1RfQURET1BUU2BgIGVudmly
b25tZW50IHZhcmlhYmxlIHRvIGFkZCBjb21tYW5kCitsaW5lIG9wdGlvbnMgd2hpbGUgdGhlIGVu
dmlyb25tZW50IGlzIGluIHVzZToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgIGV4cG9y
dCBQWVRFU1RfQURET1BUUz0iLXYiCisKK0hlcmUncyBob3cgdGhlIGNvbW1hbmQtbGluZSBpcyBi
dWlsdCBpbiB0aGUgcHJlc2VuY2Ugb2YgYGBhZGRvcHRzYGAgb3IgdGhlIGVudmlyb25tZW50IHZh
cmlhYmxlOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAgPHB5dGVzdC5pbmk6YWRkb3B0
cz4gJFBZVEVTVF9BRERPUFRTIDxleHRyYSBjb21tYW5kLWxpbmUgYXJndW1lbnRzPgorCitTbyBp
ZiB0aGUgdXNlciBleGVjdXRlcyBpbiB0aGUgY29tbWFuZC1saW5lOgorCisuLiBjb2RlLWJsb2Nr
OjogYmFzaAorCisgICAgcHl0ZXN0IC1tIHNsb3cKKworVGhlIGFjdHVhbCBjb21tYW5kIGxpbmUg
ZXhlY3V0ZWQgaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICBweXRlc3QgLXJhIC1x
IC12IC1tIHNsb3cKKworTm90ZSB0aGF0IGFzIHVzdWFsIGZvciBvdGhlciBjb21tYW5kLWxpbmUg
YXBwbGljYXRpb25zLCBpbiBjYXNlIG9mIGNvbmZsaWN0aW5nIG9wdGlvbnMgdGhlIGxhc3Qgb25l
IHdpbnMsIHNvIHRoZSBleGFtcGxlCithYm92ZSB3aWxsIHNob3cgdmVyYm9zZSBvdXRwdXQgYmVj
YXVzZSBgYC12YGAgb3ZlcndyaXRlcyBgYC1xYGAuCisKKwogLi4gX3JlcXVlc3QgZXhhbXBsZToK
IAogUGFzcyBkaWZmZXJlbnQgdmFsdWVzIHRvIGEgdGVzdCBmdW5jdGlvbiwgZGVwZW5kaW5nIG9u
IGNvbW1hbmQgbGluZSBvcHRpb25zCkBAIC00Myw3ICs4Nyw5IEBAIHByb3ZpZGUgdGhlIGBgY21k
b3B0YGAgdGhyb3VnaCBhIDpyZWY6YGZpeHR1cmUgZnVuY3Rpb24gPGZpeHR1cmUgZnVuY3Rpb24+
YDoKICAgICBkZWYgY21kb3B0KHJlcXVlc3QpOgogICAgICAgICByZXR1cm4gcmVxdWVzdC5jb25m
aWcuZ2V0b3B0aW9uKCItLWNtZG9wdCIpCiAKLUxldCdzIHJ1biB0aGlzIHdpdGhvdXQgc3VwcGx5
aW5nIG91ciBuZXcgb3B0aW9uOjoKK0xldCdzIHJ1biB0aGlzIHdpdGhvdXQgc3VwcGx5aW5nIG91
ciBuZXcgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAt
cSB0ZXN0X3NhbXBsZS5weQogICAgIEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtNjMsOSArMTA5LDEz
IEBAIExldCdzIHJ1biB0aGlzIHdpdGhvdXQgc3VwcGx5aW5nIG91ciBuZXcgb3B0aW9uOjoKICAg
ICB0ZXN0X3NhbXBsZS5weTo2OiBBc3NlcnRpb25FcnJvcgogICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBDYXB0dXJlZCBzdGRvdXQgY2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAgICBmaXJzdAotICAgIDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcworICAgID09PT09PT09
PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09
PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9zYW1wbGUucHk6OnRlc3RfYW5zd2VyIC0gYXNz
ZXJ0IDAKKyAgICAxIGZhaWxlZCBpbiAwLjEycwogCi1BbmQgbm93IHdpdGggc3VwcGx5aW5nIGEg
Y29tbWFuZCBsaW5lIG9wdGlvbjo6CitBbmQgbm93IHdpdGggc3VwcGx5aW5nIGEgY29tbWFuZCBs
aW5lIG9wdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEg
LS1jbWRvcHQ9dHlwZTIKICAgICBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTg1LDcgKzEzNSw5IEBA
IEFuZCBub3cgd2l0aCBzdXBwbHlpbmcgYSBjb21tYW5kIGxpbmUgb3B0aW9uOjoKICAgICB0ZXN0
X3NhbXBsZS5weTo2OiBBc3NlcnRpb25FcnJvcgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBDYXB0dXJlZCBzdGRvdXQgY2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
ICBzZWNvbmQKLSAgICAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMKKyAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09
PT09PT09CisgICAgRkFJTEVEIHRlc3Rfc2FtcGxlLnB5Ojp0ZXN0X2Fuc3dlciAtIGFzc2VydCAw
CisgICAgMSBmYWlsZWQgaW4gMC4xMnMKIAogWW91IGNhbiBzZWUgdGhhdCB0aGUgY29tbWFuZCBs
aW5lIG9wdGlvbiBhcnJpdmVkIGluIG91ciB0ZXN0LiAgVGhpcwogY29tcGxldGVzIHRoZSBiYXNp
YyBwYXR0ZXJuLiAgSG93ZXZlciwgb25lIG9mdGVuIHJhdGhlciB3YW50cyB0byBwcm9jZXNzCkBA
IC0xMDMsNyArMTU1LDcgQEAgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYmVmb3JlIHRoZXkg
Z2V0IHByb2Nlc3NlZDoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0gICAgIyBjb250ZW50
IG9mIGNvbmZ0ZXN0LnB5CisgICAgIyBzZXR1cHRvb2xzIHBsdWdpbgogICAgIGltcG9ydCBzeXMK
IAogCkBAIC0xMTcsMTUgKzE2OSwxOCBAQCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBiZWZv
cmUgdGhleSBnZXQgcHJvY2Vzc2VkOgogSWYgeW91IGhhdmUgdGhlIGB4ZGlzdCBwbHVnaW4gPGh0
dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QteGRpc3QvPmBfIGluc3RhbGxlZAogeW91IHdp
bGwgbm93IGFsd2F5cyBwZXJmb3JtIHRlc3QgcnVucyB1c2luZyBhIG51bWJlcgogb2Ygc3VicHJv
Y2Vzc2VzIGNsb3NlIHRvIHlvdXIgQ1BVLiBSdW5uaW5nIGluIGFuIGVtcHR5Ci1kaXJlY3Rvcnkg
d2l0aCB0aGUgYWJvdmUgY29uZnRlc3QucHk6OgorZGlyZWN0b3J5IHdpdGggdGhlIGFib3ZlIGNv
bmZ0ZXN0LnB5OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdAogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55
LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZ
VEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIK
ICAgICBjb2xsZWN0ZWQgMCBpdGVtcwogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT0gbm8g
dGVzdHMgcmFuIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PQorICAgID09
PT09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT0KIAogLi4gX2BleGNvbnRyb2xza2lwYDoKIApAQCAtMTUwLDYgKzIw
NSwxMCBAQCBsaW5lIG9wdGlvbiB0byBjb250cm9sIHNraXBwaW5nIG9mIGBgcHl0ZXN0Lm1hcmsu
c2xvd2BgIG1hcmtlZCB0ZXN0czoKICAgICAgICAgKQogCiAKKyAgICBkZWYgcHl0ZXN0X2NvbmZp
Z3VyZShjb25maWcpOgorICAgICAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgibWFya2VycyIs
ICJzbG93OiBtYXJrIHRlc3QgYXMgc2xvdyB0byBydW4iKQorCisKICAgICBkZWYgcHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoY29uZmlnLCBpdGVtcyk6CiAgICAgICAgIGlmIGNvbmZpZy5n
ZXRvcHRpb24oIi0tcnVuc2xvdyIpOgogICAgICAgICAgICAgIyAtLXJ1bnNsb3cgZ2l2ZW4gaW4g
Y2xpOiBkbyBub3Qgc2tpcCBzbG93IHRlc3RzCkBAIC0xNzUsMzQgKzIzNCw0MiBAQCBXZSBjYW4g
bm93IHdyaXRlIGEgdGVzdCBtb2R1bGUgbGlrZSB0aGlzOgogICAgIGRlZiB0ZXN0X2Z1bmNfc2xv
dygpOgogICAgICAgICBwYXNzCiAKLWFuZCB3aGVuIHJ1bm5pbmcgaXQgd2lsbCBzZWUgYSBza2lw
cGVkICJzbG93IiB0ZXN0OjoKK2FuZCB3aGVuIHJ1bm5pbmcgaXQgd2lsbCBzZWUgYSBza2lwcGVk
ICJzbG93IiB0ZXN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAt
cnMgICAgIyAiLXJzIiBtZWFucyByZXBvcnQgZGV0YWlscyBvbiB0aGUgbGl0dGxlICdzJwogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55
LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZ
VEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIK
ICAgICBjb2xsZWN0ZWQgMiBpdGVtcwogCiAgICAgdGVzdF9tb2R1bGUucHkgLnMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKICAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0gICAgU0tJUCBbMV0gdGVzdF9tb2R1bGUucHk6ODogbmVlZCAt
LXJ1bnNsb3cgb3B0aW9uIHRvIHJ1bgorICAgIFNLSVBQRUQgWzFdIHRlc3RfbW9kdWxlLnB5Ojg6
IG5lZWQgLS1ydW5zbG93IG9wdGlvbiB0byBydW4KKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PSAxIHBhc3NlZCwgMSBza2lwcGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09CiAK
LSAgICA9PT09PT09PT09PT09PT09PT09IDEgcGFzc2VkLCAxIHNraXBwZWQgaW4gMC4xMiBzZWNv
bmRzID09PT09PT09PT09PT09PT09PT09CitPciBydW4gaXQgaW5jbHVkaW5nIHRoZSBgYHNsb3dg
YCBtYXJrZWQgdGVzdDoKIAotT3IgcnVuIGl0IGluY2x1ZGluZyB0aGUgYGBzbG93YGAgbWFya2Vk
IHRlc3Q6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLS1ydW5zbG93
CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjog
JFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24g
My54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGly
OiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUgogICAgIGNvbGxlY3RlZCAyIGl0ZW1zCiAKICAgICB0ZXN0X21vZHVsZS5weSAuLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAot
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
IDIgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIF9g
X190cmFjZWJhY2toaWRlX19gOgogCiBXcml0aW5nIHdlbGwgaW50ZWdyYXRlZCBhc3NlcnRpb24g
aGVscGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHJlZ2Vu
ZG9jOndpcGUKIApAQCAtMjIxLDcgKzI4OCw3IEBAIEV4YW1wbGU6CiAgICAgZGVmIGNoZWNrY29u
ZmlnKHgpOgogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKICAgICAgICAgaWYgbm90
IGhhc2F0dHIoeCwgImNvbmZpZyIpOgotICAgICAgICAgICAgcHl0ZXN0LmZhaWwoIm5vdCBjb25m
aWd1cmVkOiAlcyIgJSAoeCwpKQorICAgICAgICAgICAgcHl0ZXN0LmZhaWwoIm5vdCBjb25maWd1
cmVkOiB7fSIuZm9ybWF0KHgpKQogCiAKICAgICBkZWYgdGVzdF9zb21ldGhpbmcoKToKQEAgLTIz
MCw3ICsyOTcsOSBAQCBFeGFtcGxlOgogVGhlIGBgX190cmFjZWJhY2toaWRlX19gYCBzZXR0aW5n
IGluZmx1ZW5jZXMgYGBweXRlc3RgYCBzaG93aW5nCiBvZiB0cmFjZWJhY2tzOiB0aGUgYGBjaGVj
a2NvbmZpZ2BgIGZ1bmN0aW9uIHdpbGwgbm90IGJlIHNob3duCiB1bmxlc3MgdGhlIGBgLS1mdWxs
LXRyYWNlYGAgY29tbWFuZCBsaW5lIG9wdGlvbiBpcyBzcGVjaWZpZWQuCi1MZXQncyBydW4gb3Vy
IGxpdHRsZSBmdW5jdGlvbjo6CitMZXQncyBydW4gb3VyIGxpdHRsZSBmdW5jdGlvbjoKKworLi4g
Y29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEgdGVzdF9jaGVja2NvbmZpZy5w
eQogICAgIEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtMjQyLDcgKzMxMSw5IEBAIExldCdzIHJ1biBv
dXIgbGl0dGxlIGZ1bmN0aW9uOjoKICAgICBFICAgICAgIEZhaWxlZDogbm90IGNvbmZpZ3VyZWQ6
IDQyCiAKICAgICB0ZXN0X2NoZWNrY29uZmlnLnB5OjExOiBGYWlsZWQKLSAgICAxIGZhaWxlZCBp
biAwLjEyIHNlY29uZHMKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qg
c3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3Rf
Y2hlY2tjb25maWcucHk6OnRlc3Rfc29tZXRoaW5nIC0gRmFpbGVkOiBub3QgY29uZmlndXJlZDog
NDIKKyAgICAxIGZhaWxlZCBpbiAwLjEycwogCiBJZiB5b3Ugb25seSB3YW50IHRvIGhpZGUgY2Vy
dGFpbiBleGNlcHRpb25zLCB5b3UgY2FuIHNldCBgYF9fdHJhY2ViYWNraGlkZV9fYGAKIHRvIGEg
Y2FsbGFibGUgd2hpY2ggZ2V0cyB0aGUgYGBFeGNlcHRpb25JbmZvYGAgb2JqZWN0LiBZb3UgY2Fu
IGZvciBleGFtcGxlIHVzZQpAQCAtMjYxLDcgKzMzMiw3IEBAIHRoaXMgdG8gbWFrZSBzdXJlIHVu
ZXhwZWN0ZWQgZXhjZXB0aW9uIHR5cGVzIGFyZW4ndCBoaWRkZW46CiAgICAgZGVmIGNoZWNrY29u
ZmlnKHgpOgogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IG9wZXJhdG9yLm1ldGhvZGNhbGxl
cigiZXJyaXNpbnN0YW5jZSIsIENvbmZpZ0V4Y2VwdGlvbikKICAgICAgICAgaWYgbm90IGhhc2F0
dHIoeCwgImNvbmZpZyIpOgotICAgICAgICAgICAgcmFpc2UgQ29uZmlnRXhjZXB0aW9uKCJub3Qg
Y29uZmlndXJlZDogJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHJhaXNlIENvbmZpZ0V4Y2VwdGlv
bigibm90IGNvbmZpZ3VyZWQ6IHt9Ii5mb3JtYXQoeCkpCiAKIAogICAgIGRlZiB0ZXN0X3NvbWV0
aGluZygpOgpAQCAtMjgzLDM0ICszNTQsMzEgQEAgcnVubmluZyBmcm9tIGEgdGVzdCB5b3UgY2Fu
IGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotICAg
ICMgY29udGVudCBvZiBjb25mdGVzdC5weQorICAgICMgY29udGVudCBvZiB5b3VyX21vZHVsZS5w
eQogCiAKLSAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgICAgICBpbXBvcnQg
c3lzCisgICAgX2NhbGxlZF9mcm9tX3Rlc3QgPSBGYWxzZQogCi0gICAgICAgIHN5cy5fY2FsbGVk
X2Zyb21fdGVzdCA9IFRydWUKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAorICAgICMgY29udGVu
dCBvZiBjb25mdGVzdC5weQogCi0gICAgZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgot
ICAgICAgICBpbXBvcnQgc3lzCiAKLSAgICAgICAgZGVsIHN5cy5fY2FsbGVkX2Zyb21fdGVzdAor
ICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisgICAgICAgIHlvdXJfbW9kdWxlLl9j
YWxsZWRfZnJvbV90ZXN0ID0gVHJ1ZQogCi1hbmQgdGhlbiBjaGVjayBmb3IgdGhlIGBgc3lzLl9j
YWxsZWRfZnJvbV90ZXN0YGAgZmxhZzoKK2FuZCB0aGVuIGNoZWNrIGZvciB0aGUgYGB5b3VyX21v
ZHVsZS5fY2FsbGVkX2Zyb21fdGVzdGBgIGZsYWc6CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24K
IAotICAgIGlmIGhhc2F0dHIoc3lzLCAiX2NhbGxlZF9mcm9tX3Rlc3QiKToKKyAgICBpZiB5b3Vy
X21vZHVsZS5fY2FsbGVkX2Zyb21fdGVzdDoKICAgICAgICAgIyBjYWxsZWQgZnJvbSB3aXRoaW4g
YSB0ZXN0IHJ1bgogICAgICAgICAuLi4KICAgICBlbHNlOgogICAgICAgICAjIGNhbGxlZCAibm9y
bWFsbHkiCiAgICAgICAgIC4uLgogCi1hY2NvcmRpbmdseSBpbiB5b3VyIGFwcGxpY2F0aW9uLiAg
SXQncyBhbHNvIGEgZ29vZCBpZGVhCi10byB1c2UgeW91ciBvd24gYXBwbGljYXRpb24gbW9kdWxl
IHJhdGhlciB0aGFuIGBgc3lzYGAKLWZvciBoYW5kbGluZyBmbGFnLgorYWNjb3JkaW5nbHkgaW4g
eW91ciBhcHBsaWNhdGlvbi4KIAogQWRkaW5nIGluZm8gdG8gdGVzdCByZXBvcnQgaGVhZGVyCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMzI3LDE2ICszOTUsMTkgQEAgSXQncyBlYXN5IHRvIHByZXNlbnQgZXh0cmEgaW5m
b3JtYXRpb24gaW4gYSBgYHB5dGVzdGBgIHJ1bjoKICAgICBkZWYgcHl0ZXN0X3JlcG9ydF9oZWFk
ZXIoY29uZmlnKToKICAgICAgICAgcmV0dXJuICJwcm9qZWN0IGRlcHM6IG15bGliLTEuMSIKIAot
d2hpY2ggd2lsbCBhZGQgdGhlIHN0cmluZyB0byB0aGUgdGVzdCBoZWFkZXIgYWNjb3JkaW5nbHk6
Ogord2hpY2ggd2lsbCBhZGQgdGhlIHN0cmluZyB0byB0aGUgdGVzdCBoZWFkZXIgYWNjb3JkaW5n
bHk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0CiAgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNo
ZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQogICAgIHByb2plY3QgZGVwczogbXls
aWItMS4xCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDAgaXRlbXMKIAotICAgID09PT09
PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09
PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyBy
YW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIHJlZ2VuZG9jOndp
cGUKIApAQCAtMzUzLDI4ICs0MjQsMzMgQEAgZGlzcGxheSBtb3JlIGluZm9ybWF0aW9uIGlmIGFw
cGxpY2FibGU6CiAgICAgICAgIGlmIGNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+IDA6CiAg
ICAgICAgICAgICByZXR1cm4gWyJpbmZvMTogZGlkIHlvdSBrbm93IHRoYXQgLi4uIiwgImRpZCB5
b3U/Il0KIAotd2hpY2ggd2lsbCBhZGQgaW5mbyBvbmx5IHdoZW4gcnVuIHdpdGggIi0tdiI6Ogor
d2hpY2ggd2lsbCBhZGQgaW5mbyBvbmx5IHdoZW4gcnVuIHdpdGggIi0tdiI6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC12CiAgICAgPT09PT09PT09PT09PT09PT09
PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0x
LngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBj
YWNoZWRpcjogLnB5dGVzdF9jYWNoZQorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngu
eSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklY
L2Jpbi9weXRob24KKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQog
ICAgIGluZm8xOiBkaWQgeW91IGtub3cgdGhhdCAuLi4KICAgICBkaWQgeW91PwotICAgIHJvb3Rk
aXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUgogICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAwIGl0ZW1zCiAKLSAgICA9PT09PT09
PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09
PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFu
IGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCithbmQgbm90aGluZyB3aGVu
IHJ1biBwbGFpbmx5OgogCi1hbmQgbm90aGluZyB3aGVuIHJ1biBwbGFpbmx5OjoKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09
PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
ICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngu
eSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToK
KyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54
LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2Nh
Y2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAwIGl0ZW1z
CiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNv
bmRzID09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBw
cm9maWxpbmcgdGVzdCBkdXJhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQw
MywyMSArNDc5LDI0IEBAIG91dCB3aGljaCB0ZXN0cyBhcmUgdGhlIHNsb3dlc3QuIExldCdzIG1h
a2UgYW4gYXJ0aWZpY2lhbCB0ZXN0IHN1aXRlOgogICAgIGRlZiB0ZXN0X2Z1bmNzbG93MigpOgog
ICAgICAgICB0aW1lLnNsZWVwKDAuMykKIAotTm93IHdlIGNhbiBwcm9maWxlIHdoaWNoIHRlc3Qg
ZnVuY3Rpb25zIGV4ZWN1dGUgdGhlIHNsb3dlc3Q6OgorTm93IHdlIGNhbiBwcm9maWxlIHdoaWNo
IHRlc3QgZnVuY3Rpb25zIGV4ZWN1dGUgdGhlIHNsb3dlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRlc3QKIAogICAgICQgcHl0ZXN0IC0tZHVyYXRpb25zPTMKICAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlm
aWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRl
c3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDMg
aXRlbXMKIAogICAgIHRlc3Rfc29tZV9hcmVfc2xvdy5weSAuLi4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09PT09PT09PT09
PT09PT09PSBzbG93ZXN0IDMgdGVzdCBkdXJhdGlvbnMgPT09PT09PT09PT09PT09PT09PT09PT09
PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSBzbG93ZXN0IDMgZHVyYXRpb25zID09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAwLjMwcyBjYWxsICAgICB0ZXN0X3NvbWVf
YXJlX3Nsb3cucHk6OnRlc3RfZnVuY3Nsb3cyCiAgICAgMC4yMHMgY2FsbCAgICAgdGVzdF9zb21l
X2FyZV9zbG93LnB5Ojp0ZXN0X2Z1bmNzbG93MQogICAgIDAuMTBzIGNhbGwgICAgIHRlc3Rfc29t
ZV9hcmVfc2xvdy5weTo6dGVzdF9mdW5jZmFzdAotICAgID09PT09PT09PT09PT09PT09PT09PT09
PT0gMyBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg
ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDMgcGFzc2VkIGluIDAuMTJzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CiAKIGluY3JlbWVudGFsIHRlc3RpbmcgLSB0ZXN0IHN0ZXBz
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTQzNCwyMSArNTEzLDUyIEBAIGFuIGBgaW5jcmVtZW50YWxgYCBtYXJrZXIgd2hpY2ggaXMgdG8g
YmUgdXNlZCBvbiBjbGFzc2VzOgogCiAgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAKKyAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgVHVwbGUKICAgICBpbXBvcnQgcHl0ZXN0CiAKKyAg
ICAjIHN0b3JlIGhpc3Rvcnkgb2YgZmFpbHVyZXMgcGVyIHRlc3QgY2xhc3MgbmFtZSBhbmQgcGVy
IGluZGV4IGluIHBhcmFtZXRyaXplIChpZiBwYXJhbWV0cml6ZSB1c2VkKQorICAgIF90ZXN0X2Zh
aWxlZF9pbmNyZW1lbnRhbDogRGljdFtzdHIsIERpY3RbVHVwbGVbaW50LCAuLi5dLCBzdHJdXSA9
IHt9CisKIAogICAgIGRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgog
ICAgICAgICBpZiAiaW5jcmVtZW50YWwiIGluIGl0ZW0ua2V5d29yZHM6CisgICAgICAgICAgICAj
IGluY3JlbWVudGFsIG1hcmtlciBpcyB1c2VkCiAgICAgICAgICAgICBpZiBjYWxsLmV4Y2luZm8g
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0gaXRlbS5wYXJlbnQKLSAgICAg
ICAgICAgICAgICBwYXJlbnQuX3ByZXZpb3VzZmFpbGVkID0gaXRlbQorICAgICAgICAgICAgICAg
ICMgdGhlIHRlc3QgaGFzIGZhaWxlZAorICAgICAgICAgICAgICAgICMgcmV0cmlldmUgdGhlIGNs
YXNzIG5hbWUgb2YgdGhlIHRlc3QKKyAgICAgICAgICAgICAgICBjbHNfbmFtZSA9IHN0cihpdGVt
LmNscykKKyAgICAgICAgICAgICAgICAjIHJldHJpZXZlIHRoZSBpbmRleCBvZiB0aGUgdGVzdCAo
aWYgcGFyYW1ldHJpemUgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGluY3JlbWVudGFsKQor
ICAgICAgICAgICAgICAgIHBhcmFtZXRyaXplX2luZGV4ID0gKAorICAgICAgICAgICAgICAgICAg
ICB0dXBsZShpdGVtLmNhbGxzcGVjLmluZGljZXMudmFsdWVzKCkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIGhhc2F0dHIoaXRlbSwgImNhbGxzcGVjIikKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZSAoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAjIHJldHJpZXZlIHRoZSBu
YW1lIG9mIHRoZSB0ZXN0IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgdGVzdF9uYW1lID0gaXRl
bS5vcmlnaW5hbG5hbWUgb3IgaXRlbS5uYW1lCisgICAgICAgICAgICAgICAgIyBzdG9yZSBpbiBf
dGVzdF9mYWlsZWRfaW5jcmVtZW50YWwgdGhlIG9yaWdpbmFsIG5hbWUgb2YgdGhlIGZhaWxlZCB0
ZXN0CisgICAgICAgICAgICAgICAgX3Rlc3RfZmFpbGVkX2luY3JlbWVudGFsLnNldGRlZmF1bHQo
Y2xzX25hbWUsIHt9KS5zZXRkZWZhdWx0KAorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0cml6
ZV9pbmRleCwgdGVzdF9uYW1lCisgICAgICAgICAgICAgICAgKQogCiAKICAgICBkZWYgcHl0ZXN0
X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CiAgICAgICAgIGlmICJpbmNyZW1lbnRhbCIgaW4gaXRlbS5r
ZXl3b3JkczoKLSAgICAgICAgICAgIHByZXZpb3VzZmFpbGVkID0gZ2V0YXR0cihpdGVtLnBhcmVu
dCwgIl9wcmV2aW91c2ZhaWxlZCIsIE5vbmUpCi0gICAgICAgICAgICBpZiBwcmV2aW91c2ZhaWxl
ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBweXRlc3QueGZhaWwoInByZXZpb3VzIHRl
c3QgZmFpbGVkICglcykiICUgcHJldmlvdXNmYWlsZWQubmFtZSkKKyAgICAgICAgICAgICMgcmV0
cmlldmUgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIHRlc3QKKyAgICAgICAgICAgIGNsc19uYW1lID0g
c3RyKGl0ZW0uY2xzKQorICAgICAgICAgICAgIyBjaGVjayBpZiBhIHByZXZpb3VzIHRlc3QgaGFz
IGZhaWxlZCBmb3IgdGhpcyBjbGFzcworICAgICAgICAgICAgaWYgY2xzX25hbWUgaW4gX3Rlc3Rf
ZmFpbGVkX2luY3JlbWVudGFsOgorICAgICAgICAgICAgICAgICMgcmV0cmlldmUgdGhlIGluZGV4
IG9mIHRoZSB0ZXN0IChpZiBwYXJhbWV0cml6ZSBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgg
aW5jcmVtZW50YWwpCisgICAgICAgICAgICAgICAgcGFyYW1ldHJpemVfaW5kZXggPSAoCisgICAg
ICAgICAgICAgICAgICAgIHR1cGxlKGl0ZW0uY2FsbHNwZWMuaW5kaWNlcy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihpdGVtLCAiY2FsbHNwZWMiKQorICAgICAgICAg
ICAgICAgICAgICBlbHNlICgpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICMg
cmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IHRlc3QgZnVuY3Rpb24gdG8gZmFpbCBmb3Ig
dGhpcyBjbGFzcyBuYW1lIGFuZCBpbmRleAorICAgICAgICAgICAgICAgIHRlc3RfbmFtZSA9IF90
ZXN0X2ZhaWxlZF9pbmNyZW1lbnRhbFtjbHNfbmFtZV0uZ2V0KHBhcmFtZXRyaXplX2luZGV4LCBO
b25lKQorICAgICAgICAgICAgICAgICMgaWYgbmFtZSBmb3VuZCwgdGVzdCBoYXMgZmFpbGVkIGZv
ciB0aGUgY29tYmluYXRpb24gb2YgY2xhc3MgbmFtZSAmIHRlc3QgbmFtZQorICAgICAgICAgICAg
ICAgIGlmIHRlc3RfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHl0ZXN0
LnhmYWlsKCJwcmV2aW91cyB0ZXN0IGZhaWxlZCAoe30pIi5mb3JtYXQodGVzdF9uYW1lKSkKKwog
CiBUaGVzZSB0d28gaG9vayBpbXBsZW1lbnRhdGlvbnMgd29yayB0b2dldGhlciB0byBhYm9ydCBp
bmNyZW1lbnRhbC1tYXJrZWQKIHRlc3RzIGluIGEgY2xhc3MuICBIZXJlIGlzIGEgdGVzdCBtb2R1
bGUgZXhhbXBsZToKQEAgLTQ2MSw3ICs1NzEsNyBAQCB0ZXN0cyBpbiBhIGNsYXNzLiAgSGVyZSBp
cyBhIHRlc3QgbW9kdWxlIGV4YW1wbGU6CiAKIAogICAgIEBweXRlc3QubWFyay5pbmNyZW1lbnRh
bAotICAgIGNsYXNzIFRlc3RVc2VySGFuZGxpbmcob2JqZWN0KToKKyAgICBjbGFzcyBUZXN0VXNl
ckhhbmRsaW5nOgogICAgICAgICBkZWYgdGVzdF9sb2dpbihzZWxmKToKICAgICAgICAgICAgIHBh
c3MKIApAQCAtNDc1LDEyICs1ODUsMTUgQEAgdGVzdHMgaW4gYSBjbGFzcy4gIEhlcmUgaXMgYSB0
ZXN0IG1vZHVsZSBleGFtcGxlOgogICAgIGRlZiB0ZXN0X25vcm1hbCgpOgogICAgICAgICBwYXNz
CiAKLUlmIHdlIHJ1biB0aGlzOjoKK0lmIHdlIHJ1biB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjog
cHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcngKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAg
cGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBw
bHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAg
IHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwg
cGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUK
KyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDQgaXRlbXMKIAog
ICAgIHRlc3Rfc3RlcC5weSAuRnguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtNDk2LDkgKzYwOSw5IEBAIElmIHdlIHJ1biB0aGlz
OjoKIAogICAgIHRlc3Rfc3RlcC5weToxMTogQXNzZXJ0aW9uRXJyb3IKICAgICA9PT09PT09PT09
PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0gICAgWEZBSUwgdGVzdF9zdGVwLnB5OjpUZXN0VXNlckhhbmRsaW5nOjooKTo6
dGVzdF9kZWxldGlvbgorICAgIFhGQUlMIHRlc3Rfc3RlcC5weTo6VGVzdFVzZXJIYW5kbGluZzo6
dGVzdF9kZWxldGlvbgogICAgICAgcmVhc29uOiBwcmV2aW91cyB0ZXN0IGZhaWxlZCAodGVzdF9t
b2RpZmljYXRpb24pCi0gICAgPT09PT09PT09PT09PT0gMSBmYWlsZWQsIDIgcGFzc2VkLCAxIHhm
YWlsZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09
PT09PSAxIGZhaWxlZCwgMiBwYXNzZWQsIDEgeGZhaWxlZCBpbiAwLjEycyA9PT09PT09PT09PT09
PT09PT0KIAogV2UnbGwgc2VlIHRoYXQgYGB0ZXN0X2RlbGV0aW9uYGAgd2FzIG5vdCBleGVjdXRl
ZCBiZWNhdXNlIGBgdGVzdF9tb2RpZmljYXRpb25gYAogZmFpbGVkLiAgSXQgaXMgcmVwb3J0ZWQg
YXMgYW4gImV4cGVjdGVkIGZhaWx1cmUiLgpAQCAtNTIzLDcgKzYzNiw3IEBAIEhlcmUgaXMgYW4g
ZXhhbXBsZSBmb3IgbWFraW5nIGEgYGBkYmBgIGZpeHR1cmUgYXZhaWxhYmxlIGluIGEgZGlyZWN0
b3J5OgogICAgIGltcG9ydCBweXRlc3QKIAogCi0gICAgY2xhc3MgREIob2JqZWN0KToKKyAgICBj
bGFzcyBEQjoKICAgICAgICAgcGFzcwogCiAKQEAgLTU1NiwxMiArNjY5LDE1IEBAIHRoZSBgYGRi
YGAgZml4dHVyZToKICAgICBkZWYgdGVzdF9yb290KGRiKTogICMgbm8gZGIgaGVyZSwgd2lsbCBl
cnJvciBvdXQKICAgICAgICAgcGFzcwogCi1XZSBjYW4gcnVuIHRoaXM6OgorV2UgY2FuIHJ1biB0
aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdAogICAgID09PT09
PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVz
dC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19U
TVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRl
c3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9Q
UkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBj
b2xsZWN0ZWQgNyBpdGVtcwogCiAgICAgdGVzdF9zdGVwLnB5IC5GeC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA1NyVdCkBAIC01NzQsNyArNjkw
LDcgQEAgV2UgY2FuIHJ1biB0aGlzOjoKICAgICBmaWxlICRSRUdFTkRPQ19UTVBESVIvYi90ZXN0
X2Vycm9yLnB5LCBsaW5lIDEKICAgICAgIGRlZiB0ZXN0X3Jvb3QoZGIpOiAgIyBubyBkYiBoZXJl
LCB3aWxsIGVycm9yIG91dAogICAgIEUgICAgICAgZml4dHVyZSAnZGInIG5vdCBmb3VuZAotICAg
ID4gICAgICAgYXZhaWxhYmxlIGZpeHR1cmVzOiBjYWNoZSwgY2FwZmQsIGNhcGZkYmluYXJ5LCBj
YXBsb2csIGNhcHN5cywgY2Fwc3lzYmluYXJ5LCBkb2N0ZXN0X25hbWVzcGFjZSwgbW9ua2V5cGF0
Y2gsIHB5dGVzdGNvbmZpZywgcmVjb3JkX3Byb3BlcnR5LCByZWNvcmRfeG1sX2F0dHJpYnV0ZSwg
cmVjb3JkX3htbF9wcm9wZXJ0eSwgcmVjd2FybiwgdG1wZGlyLCB0bXBkaXJfZmFjdG9yeQorICAg
ID4gICAgICAgYXZhaWxhYmxlIGZpeHR1cmVzOiBjYWNoZSwgY2FwZmQsIGNhcGZkYmluYXJ5LCBj
YXBsb2csIGNhcHN5cywgY2Fwc3lzYmluYXJ5LCBkb2N0ZXN0X25hbWVzcGFjZSwgbW9ua2V5cGF0
Y2gsIHB5dGVzdGNvbmZpZywgcmVjb3JkX3Byb3BlcnR5LCByZWNvcmRfdGVzdHN1aXRlX3Byb3Bl
cnR5LCByZWNvcmRfeG1sX2F0dHJpYnV0ZSwgcmVjd2FybiwgdG1wX3BhdGgsIHRtcF9wYXRoX2Zh
Y3RvcnksIHRtcGRpciwgdG1wZGlyX2ZhY3RvcnkKICAgICA+ICAgICAgIHVzZSAncHl0ZXN0IC0t
Zml4dHVyZXMgW3Rlc3RwYXRoXScgZm9yIGhlbHAgb24gdGhlbS4KIAogICAgICRSRUdFTkRPQ19U
TVBESVIvYi90ZXN0X2Vycm9yLnB5OjEKQEAgLTYwOCw3ICs3MjQsMTIgQEAgV2UgY2FuIHJ1biB0
aGlzOjoKICAgICBFICAgICAgIGFzc2VydCAwCiAKICAgICBhL3Rlc3RfZGIyLnB5OjI6IEFzc2Vy
dGlvbkVycm9yCi0gICAgPT09PT09PT09PSAzIGZhaWxlZCwgMiBwYXNzZWQsIDEgeGZhaWxlZCwg
MSBlcnJvciBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09
PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09
PT0KKyAgICBGQUlMRUQgdGVzdF9zdGVwLnB5OjpUZXN0VXNlckhhbmRsaW5nOjp0ZXN0X21vZGlm
aWNhdGlvbiAtIGFzc2VydCAwCisgICAgRkFJTEVEIGEvdGVzdF9kYi5weTo6dGVzdF9hMSAtIEFz
c2VydGlvbkVycm9yOiA8Y29uZnRlc3QuREIgb2JqZWN0IGF0IDB4Ny4uLgorICAgIEZBSUxFRCBh
L3Rlc3RfZGIyLnB5Ojp0ZXN0X2EyIC0gQXNzZXJ0aW9uRXJyb3I6IDxjb25mdGVzdC5EQiBvYmpl
Y3QgYXQgMHguLi4KKyAgICBFUlJPUiBiL3Rlc3RfZXJyb3IucHk6OnRlc3Rfcm9vdAorICAgID09
PT09PT09PT09PT0gMyBmYWlsZWQsIDIgcGFzc2VkLCAxIHhmYWlsZWQsIDEgZXJyb3IgaW4gMC4x
MnMgPT09PT09PT09PT09PT0KIAogVGhlIHR3byB0ZXN0IG1vZHVsZXMgaW4gdGhlIGBgYWBgIGRp
cmVjdG9yeSBzZWUgdGhlIHNhbWUgYGBkYmBgIGZpeHR1cmUgaW5zdGFuY2UKIHdoaWxlIHRoZSBv
bmUgdGVzdCBpbiB0aGUgc2lzdGVyLWRpcmVjdG9yeSBgYGJgYCBkb2Vzbid0IHNlZSBpdC4gIFdl
IGNvdWxkIG9mIGNvdXJzZQpAQCAtNjQ4LDcgKzc2OSw3IEBAIGNhc2Ugd2UganVzdCB3cml0ZSBz
b21lIGluZm9ybWF0aW9uIG91dCB0byBhIGBgZmFpbHVyZXNgYCBmaWxlOgogICAgICAgICAgICAg
d2l0aCBvcGVuKCJmYWlsdXJlcyIsIG1vZGUpIGFzIGY6CiAgICAgICAgICAgICAgICAgIyBsZXQn
cyBhbHNvIGFjY2VzcyBhIGZpeHR1cmUgZm9yIHRoZSBmdW4gb2YgaXQKICAgICAgICAgICAgICAg
ICBpZiAidG1wZGlyIiBpbiBpdGVtLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgICAgICAgICAg
ZXh0cmEgPSAiICglcykiICUgaXRlbS5mdW5jYXJnc1sidG1wZGlyIl0KKyAgICAgICAgICAgICAg
ICAgICAgZXh0cmEgPSAiICh7fSkiLmZvcm1hdChpdGVtLmZ1bmNhcmdzWyJ0bXBkaXIiXSkKICAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBleHRyYSA9ICIiCiAKQEAg
LTY2NywxMiArNzg4LDE1IEBAIGlmIHlvdSB0aGVuIGhhdmUgZmFpbGluZyB0ZXN0czoKICAgICBk
ZWYgdGVzdF9mYWlsMigpOgogICAgICAgICBhc3NlcnQgMAogCi1hbmQgcnVuIHRoZW06OgorYW5k
IHJ1biB0aGVtOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCB0ZXN0
X21vZHVsZS5weQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24g
c3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAt
LSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAg
IHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXgg
LS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAg
ICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRS
RUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgMiBpdGVtcwogCiAgICAgdGVzdF9tb2R1bGUu
cHkgRkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WzEwMCVdCkBAIC02OTQsOSArODE4LDE0IEBAIGFuZCBydW4gdGhlbTo6CiAgICAgRSAgICAgICBh
c3NlcnQgMAogCiAgICAgdGVzdF9tb2R1bGUucHk6NjogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0
IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0
X21vZHVsZS5weTo6dGVzdF9mYWlsMSAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3RfbW9kdWxl
LnB5Ojp0ZXN0X2ZhaWwyIC0gYXNzZXJ0IDAKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09IDIgZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLXlv
dSB3aWxsIGhhdmUgYSAiZmFpbHVyZXMiIGZpbGUgd2hpY2ggY29udGFpbnMgdGhlIGZhaWxpbmcg
dGVzdCBpZHM6OgoreW91IHdpbGwgaGF2ZSBhICJmYWlsdXJlcyIgZmlsZSB3aGljaCBjb250YWlu
cyB0aGUgZmFpbGluZyB0ZXN0IGlkczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgICQg
Y2F0IGZhaWx1cmVzCiAgICAgdGVzdF9tb2R1bGUucHk6OnRlc3RfZmFpbDEgKFBZVEVTVF9UTVBE
SVIvdGVzdF9mYWlsMTApCkBAIC03NjYsMTIgKzg5NSwxNSBAQCBpZiB5b3UgdGhlbiBoYXZlIGZh
aWxpbmcgdGVzdHM6CiAgICAgZGVmIHRlc3RfZmFpbDIoKToKICAgICAgICAgYXNzZXJ0IDAKIAot
YW5kIHJ1biBpdDo6CithbmQgcnVuIGl0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAg
ICAkIHB5dGVzdCAtcyB0ZXN0X21vZHVsZS5weQogICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAg
ICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54Lnks
IHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Cisg
ICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55
LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNo
ZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgMyBpdGVtcwog
CiAgICAgdGVzdF9tb2R1bGUucHkgRXNldHRpbmcgdXAgYSB0ZXN0IGZhaWxlZCEgdGVzdF9tb2R1
bGUucHk6OnRlc3Rfc2V0dXBfZmFpbHMKQEAgLTgwNCw3ICs5MzYsMTEgQEAgYW5kIHJ1biBpdDo6
CiAgICAgRSAgICAgICBhc3NlcnQgMAogCiAgICAgdGVzdF9tb2R1bGUucHk6MTk6IEFzc2VydGlv
bkVycm9yCi0gICAgPT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQsIDEgZXJyb3IgaW4gMC4x
MiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09
PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICBGQUlMRUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfY2FsbF9mYWlscyAtIGFzc2VydCAwCisg
ICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X2ZhaWwyIC0gYXNzZXJ0IDAKKyAgICBFUlJP
UiB0ZXN0X21vZHVsZS5weTo6dGVzdF9zZXR1cF9mYWlscyAtIGFzc2VydCAwCisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkLCAxIGVycm9yIGluIDAuMTJzID09PT09PT09PT09
PT09PT09PT09PT09PQogCiBZb3UnbGwgc2VlIHRoYXQgdGhlIGZpeHR1cmUgZmluYWxpemVycyBj
b3VsZCB1c2UgdGhlIHByZWNpc2UgcmVwb3J0aW5nCiBpbmZvcm1hdGlvbi4KQEAgLTgxNCwxMyAr
OTUwLDEzIEBAIGluZm9ybWF0aW9uLgogYGBQWVRFU1RfQ1VSUkVOVF9URVNUYGAgZW52aXJvbm1l
bnQgdmFyaWFibGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMgorCiAKIFNvbWV0aW1lcyBhIHRlc3Qgc2Vzc2lvbiBt
aWdodCBnZXQgc3R1Y2sgYW5kIHRoZXJlIG1pZ2h0IGJlIG5vIGVhc3kgd2F5IHRvIGZpZ3VyZSBv
dXQKIHdoaWNoIHRlc3QgZ290IHN0dWNrLCBmb3IgZXhhbXBsZSBpZiBweXRlc3Qgd2FzIHJ1biBp
biBxdWlldCBtb2RlIChgYC1xYGApIG9yIHlvdSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgY29u
c29sZQotb3V0cHV0LiBUaGlzIGlzIHBhcnRpY3VsYXJseSBhIHByb2JsZW0gaWYgdGhlIHByb2Js
ZW0gaGVscHMgb25seSBzcG9yYWRpY2FsbHksIHRoZSBmYW1vdXMgImZsYWt5IiBraW5kIG9mIHRl
c3RzLgorb3V0cHV0LiBUaGlzIGlzIHBhcnRpY3VsYXJseSBhIHByb2JsZW0gaWYgdGhlIHByb2Js
ZW0gaGFwcGVucyBvbmx5IHNwb3JhZGljYWxseSwgdGhlIGZhbW91cyAiZmxha3kiIGtpbmQgb2Yg
dGVzdHMuCiAKLWBgcHl0ZXN0YGAgc2V0cyBhIGBgUFlURVNUX0NVUlJFTlRfVEVTVGBgIGVudmly
b25tZW50IHZhcmlhYmxlIHdoZW4gcnVubmluZyB0ZXN0cywgd2hpY2ggY2FuIGJlIGluc3BlY3Rl
ZAorYGBweXRlc3RgYCBzZXRzIHRoZSA6ZW52dmFyOmBQWVRFU1RfQ1VSUkVOVF9URVNUYCBlbnZp
cm9ubWVudCB2YXJpYWJsZSB3aGVuIHJ1bm5pbmcgdGVzdHMsIHdoaWNoIGNhbiBiZSBpbnNwZWN0
ZWQKIGJ5IHByb2Nlc3MgbW9uaXRvcmluZyB1dGlsaXRpZXMgb3IgbGlicmFyaWVzIGxpa2UgYHBz
dXRpbCA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3BzdXRpbC8+YF8gdG8gZGlzY292ZXIgd2hp
Y2gKIHRlc3QgZ290IHN0dWNrIGlmIG5lY2Vzc2FyeToKIApAQCAtODM0LDggKzk3MCw4IEBAIHRl
c3QgZ290IHN0dWNrIGlmIG5lY2Vzc2FyeToKICAgICAgICAgICAgIHByaW50KGYncHl0ZXN0IHBy
b2Nlc3Mge3BpZH0gcnVubmluZzoge2Vudmlyb25bIlBZVEVTVF9DVVJSRU5UX1RFU1QiXX0nKQog
CiBEdXJpbmcgdGhlIHRlc3Qgc2Vzc2lvbiBweXRlc3Qgd2lsbCBzZXQgYGBQWVRFU1RfQ1VSUkVO
VF9URVNUYGAgdG8gdGhlIGN1cnJlbnQgdGVzdAotOnJlZjpgbm9kZWlkIDxub2RlaWRzPmAgYW5k
IHRoZSBjdXJyZW50IHN0YWdlLCB3aGljaCBjYW4gYmUgYGBzZXR1cGBgLCBgYGNhbGxgYAotYW5k
IGBgdGVhcmRvd25gYC4KKzpyZWY6YG5vZGVpZCA8bm9kZWlkcz5gIGFuZCB0aGUgY3VycmVudCBz
dGFnZSwgd2hpY2ggY2FuIGJlIGBgc2V0dXBgYCwgYGBjYWxsYGAsCitvciBgYHRlYXJkb3duYGAu
CiAKIEZvciBleGFtcGxlLCB3aGVuIHJ1bm5pbmcgYSBzaW5nbGUgdGVzdCBmdW5jdGlvbiBuYW1l
ZCBgYHRlc3RfZm9vYGAgZnJvbSBgYGZvb19tb2R1bGUucHlgYCwKIGBgUFlURVNUX0NVUlJFTlRf
VEVTVGBgIHdpbGwgYmUgc2V0IHRvOgpAQCAtODUyLDYgKzk4OCw4IEBAIEluIHRoYXQgb3JkZXIu
CiAgICAgY2FuIGJlIGNoYW5nZWQgYmV0d2VlbiByZWxlYXNlcyAoZXZlbiBidWcgZml4ZXMpIHNv
IGl0IHNob3VsZG4ndCBiZSByZWxpZWQgb24gZm9yIHNjcmlwdGluZwogICAgIG9yIGF1dG9tYXRp
b24uCiAKKy4uIF9mcmVlemluZy1weXRlc3Q6CisKIEZyZWV6aW5nIHB5dGVzdAogLS0tLS0tLS0t
LS0tLS0tCiAKQEAgLTg5NSw2ICsxMDMzLDggQEAgbGlrZSBgYHB5dGVzdC10aW1lb3V0YGAgdGhl
eSBtdXN0IGJlIGltcG9ydGVkIGV4cGxpY2l0bHkgYW5kIHBhc3NlZCBvbiB0byBweXRlc3QKIAog
CiBUaGlzIGFsbG93cyB5b3UgdG8gZXhlY3V0ZSB0ZXN0cyB1c2luZyB0aGUgZnJvemVuCi1hcHBs
aWNhdGlvbiB3aXRoIHN0YW5kYXJkIGBgcHl0ZXN0YGAgY29tbWFuZC1saW5lIG9wdGlvbnM6Ogor
YXBwbGljYXRpb24gd2l0aCBzdGFuZGFyZCBgYHB5dGVzdGBgIGNvbW1hbmQtbGluZSBvcHRpb25z
OgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgLi9hcHBfbWFpbiAtLXB5dGVzdCAtLXZl
cmJvc2UgLS10Yj1sb25nIC0tanVuaXR4bWw9cmVzdWx0cy54bWwgdGVzdC1zdWl0ZS8KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3NwZWNpYWwucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvc3BlY2lhbC5yc3QKaW5kZXggMWZjMzJmNmM4MTczLi42ODg2YjYy
NjhhMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3NwZWNpYWwucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3NwZWNpYWwucnN0CkBAIC01LDU5ICs1
LDcxIEBAIEEgc2Vzc2lvbi1zY29wZWQgZml4dHVyZSBlZmZlY3RpdmVseSBoYXMgYWNjZXNzIHRv
IGFsbAogY29sbGVjdGVkIHRlc3QgaXRlbXMuICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBmaXh0
dXJlCiBmdW5jdGlvbiB3aGljaCB3YWxrcyBhbGwgY29sbGVjdGVkIHRlc3RzIGFuZCBsb29rcwog
aWYgdGhlaXIgdGVzdCBjbGFzcyBkZWZpbmVzIGEgYGBjYWxsbWVgYCBtZXRob2QgYW5kCi1jYWxs
cyBpdDo6CitjYWxscyBpdDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250
ZW50IG9mIGNvbmZ0ZXN0LnB5CiAKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIEBweXRlc3Qu
Zml4dHVyZShzY29wZT0ic2Vzc2lvbiIsIGF1dG91c2U9VHJ1ZSkKICAgICBkZWYgY2FsbGF0dHJf
YWhlYWRfb2ZfYWxsdGVzdHMocmVxdWVzdCk6Ci0gICAgICAgIHByaW50ICgiY2FsbGF0dHJfYWhl
YWRfb2ZfYWxsdGVzdHMgY2FsbGVkIikKLSAgICAgICAgc2VlbiA9IHNldChbTm9uZV0pCisgICAg
ICAgIHByaW50KCJjYWxsYXR0cl9haGVhZF9vZl9hbGx0ZXN0cyBjYWxsZWQiKQorICAgICAgICBz
ZWVuID0ge05vbmV9CiAgICAgICAgIHNlc3Npb24gPSByZXF1ZXN0Lm5vZGUKICAgICAgICAgZm9y
IGl0ZW0gaW4gc2Vzc2lvbi5pdGVtczoKICAgICAgICAgICAgIGNscyA9IGl0ZW0uZ2V0cGFyZW50
KHB5dGVzdC5DbGFzcykKICAgICAgICAgICAgIGlmIGNscyBub3QgaW4gc2VlbjoKICAgICAgICAg
ICAgICAgICBpZiBoYXNhdHRyKGNscy5vYmosICJjYWxsbWUiKToKLSAgICAgICAgICAgICAgICAg
ICBjbHMub2JqLmNhbGxtZSgpCisgICAgICAgICAgICAgICAgICAgIGNscy5vYmouY2FsbG1lKCkK
ICAgICAgICAgICAgICAgICBzZWVuLmFkZChjbHMpCiAKIHRlc3QgY2xhc3NlcyBtYXkgbm93IGRl
ZmluZSBhIGBgY2FsbG1lYGAgbWV0aG9kIHdoaWNoCi13aWxsIGJlIGNhbGxlZCBhaGVhZCBvZiBy
dW5uaW5nIGFueSB0ZXN0czo6Cit3aWxsIGJlIGNhbGxlZCBhaGVhZCBvZiBydW5uaW5nIGFueSB0
ZXN0czoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3Rf
bW9kdWxlLnB5CiAKLSAgICBjbGFzcyBUZXN0SGVsbG8ob2JqZWN0KToKKworICAgIGNsYXNzIFRl
c3RIZWxsbzoKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBjYWxsbWUoY2xzKToK
LSAgICAgICAgICAgIHByaW50ICgiY2FsbG1lIGNhbGxlZCEiKQorICAgICAgICAgICAgcHJpbnQo
ImNhbGxtZSBjYWxsZWQhIikKIAogICAgICAgICBkZWYgdGVzdF9tZXRob2QxKHNlbGYpOgotICAg
ICAgICAgICAgcHJpbnQgKCJ0ZXN0X21ldGhvZDEgY2FsbGVkIikKKyAgICAgICAgICAgIHByaW50
KCJ0ZXN0X21ldGhvZDEgY2FsbGVkIikKIAogICAgICAgICBkZWYgdGVzdF9tZXRob2QyKHNlbGYp
OgotICAgICAgICAgICAgcHJpbnQgKCJ0ZXN0X21ldGhvZDEgY2FsbGVkIikKKyAgICAgICAgICAg
IHByaW50KCJ0ZXN0X21ldGhvZDEgY2FsbGVkIikKKwogCi0gICAgY2xhc3MgVGVzdE90aGVyKG9i
amVjdCk6CisgICAgY2xhc3MgVGVzdE90aGVyOgogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAg
ICAgZGVmIGNhbGxtZShjbHMpOgotICAgICAgICAgICAgcHJpbnQgKCJjYWxsbWUgb3RoZXIgY2Fs
bGVkIikKKyAgICAgICAgICAgIHByaW50KCJjYWxsbWUgb3RoZXIgY2FsbGVkIikKKwogICAgICAg
ICBkZWYgdGVzdF9vdGhlcihzZWxmKToKLSAgICAgICAgICAgIHByaW50ICgidGVzdCBvdGhlciIp
CisgICAgICAgICAgICBwcmludCgidGVzdCBvdGhlciIpCisKIAogICAgICMgd29ya3Mgd2l0aCB1
bml0dGVzdCBhcyB3ZWxsIC4uLgogICAgIGltcG9ydCB1bml0dGVzdAogCisKICAgICBjbGFzcyBT
b21lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAg
ICBkZWYgY2FsbG1lKHNlbGYpOgotICAgICAgICAgICAgcHJpbnQgKCJTb21lVGVzdCBjYWxsbWUg
Y2FsbGVkIikKKyAgICAgICAgICAgIHByaW50KCJTb21lVGVzdCBjYWxsbWUgY2FsbGVkIikKIAog
ICAgICAgICBkZWYgdGVzdF91bml0MShzZWxmKToKLSAgICAgICAgICAgIHByaW50ICgidGVzdF91
bml0MSBtZXRob2QgY2FsbGVkIikKKyAgICAgICAgICAgIHByaW50KCJ0ZXN0X3VuaXQxIG1ldGhv
ZCBjYWxsZWQiKQorCitJZiB5b3UgcnVuIHRoaXMgd2l0aG91dCBvdXRwdXQgY2FwdHVyaW5nOgog
Ci1JZiB5b3UgcnVuIHRoaXMgd2l0aG91dCBvdXRwdXQgY2FwdHVyaW5nOjoKKy4uIGNvZGUtYmxv
Y2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIC1zIHRlc3RfbW9kdWxlLnB5CiAgICAgY2Fs
bGF0dHJfYWhlYWRfb2ZfYWxsdGVzdHMgY2FsbGVkCkBAIC02OSw0ICs4MSw0IEBAIElmIHlvdSBy
dW4gdGhpcyB3aXRob3V0IG91dHB1dCBjYXB0dXJpbmc6OgogICAgIC50ZXN0IG90aGVyCiAgICAg
LnRlc3RfdW5pdDEgbWV0aG9kIGNhbGxlZAogICAgIC4KLSAgICA0IHBhc3NlZCBpbiAwLjEyIHNl
Y29uZHMKKyAgICA0IHBhc3NlZCBpbiAwLjEycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWViZGFhZDFkMjUw
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9hdHRpYy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9j
b25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2luZGV4LnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL21hcmtlcnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvbXVsdGlweXRob24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRo
b24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcGFyYW1ldHJpemUucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHl0aG9uY29sbGVjdGlvbi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxlY3Rpb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2V4YW1wbGUvcmVwb3J0aW5nZGVtby5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9z
aW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvc3BlY2lhbC5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS94ZmFpbF9kZW1vLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhpc3Rpbmd0ZXN0c3VpdGUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
aXN0aW5ndGVzdHN1aXRlLnJzdAppbmRleCBkMzA0YjMwYzlhNjAuLjFlM2UxOTJiZjNmZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4aXN0aW5ndGVzdHN1aXRlLnJzdAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhpc3Rpbmd0ZXN0c3VpdGUucnN0CkBAIC0xNSw3ICsxNSw5IEBA
IFJ1bm5pbmcgYW4gZXhpc3RpbmcgdGVzdCBzdWl0ZSB3aXRoIHB5dGVzdAogU2F5IHlvdSB3YW50
IHRvIGNvbnRyaWJ1dGUgdG8gYW4gZXhpc3RpbmcgcmVwb3NpdG9yeSBzb21ld2hlcmUuCiBBZnRl
ciBwdWxsaW5nIHRoZSBjb2RlIGludG8geW91ciBkZXZlbG9wbWVudCBzcGFjZSB1c2luZyBzb21l
CiBmbGF2b3Igb2YgdmVyc2lvbiBjb250cm9sIGFuZCAob3B0aW9uYWxseSkgc2V0dGluZyB1cCBh
IHZpcnR1YWxlbnYKLXlvdSB3aWxsIHdhbnQgdG8gcnVuOjoKK3lvdSB3aWxsIHdhbnQgdG8gcnVu
OgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgY2QgPHJlcG9zaXRvcnk+CiAgICAgcGlw
IGluc3RhbGwgLWUgLiAgIyBFbnZpcm9ubWVudCBkZXBlbmRlbnQgYWx0ZXJuYXRpdmVzIGluY2x1
ZGUKQEAgLTMwLDUgKzMyLDMgQEAgcmVpbnN0YWxsIGV2ZXJ5IHRpbWUgeW91IHdhbnQgdG8gcnVu
IHlvdXIgdGVzdHMsIGFuZCBpcyBsZXNzIGJyaXR0bGUgdGhhbgogbXVja2luZyBhYm91dCB3aXRo
IHN5cy5wYXRoIHRvIHBvaW50IHlvdXIgdGVzdHMgYXQgbG9jYWwgY29kZS4KIAogQWxzbyBjb25z
aWRlciB1c2luZyA6cmVmOmB0b3ggPHVzZSB0b3g+YC4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLmlu
YwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ZhcS5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vZmFxLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIxMzgxOGVhNWVk
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ZhcS5yc3QKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTYgKzAsMCBAQAotU29tZSBJc3N1ZXMgYW5kIFF1ZXN0aW9ucwotPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0uLiBub3RlOjoKLQotICAgIFRoaXMgRkFR
IGlzIGhlcmUgb25seSBtb3N0bHkgZm9yIGhpc3RvcmljIHJlYXNvbnMuICBDaGVja291dAotICAg
IGBweXRlc3QgUSZBIGF0IFN0YWNrb3ZlcmZsb3cgPGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9z
ZWFyY2g/cT1weXRlc3Q+YF8KLSAgICBmb3IgbWFueSBxdWVzdGlvbnMgYW5kIGFuc3dlcnMgcmVs
YXRlZCB0byBweXRlc3QgYW5kL29yIHVzZQotICAgIDpyZWY6YGNvbnRhY3QgY2hhbm5lbHNgIHRv
IGdldCBoZWxwLgotCi1PbiBuYW1pbmcsIG5vc2V0ZXN0cywgbGljZW5zaW5nIGFuZCBtYWdpYwot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUhvdyBk
b2VzIHB5dGVzdCByZWxhdGUgdG8gbm9zZSBhbmQgdW5pdHRlc3Q/Ci0rKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLWBgcHl0ZXN0YGAgYW5kIG5vc2Vf
IHNoYXJlIGJhc2ljIHBoaWxvc29waHkgd2hlbiBpdCBjb21lcwotdG8gcnVubmluZyBhbmQgd3Jp
dGluZyBQeXRob24gdGVzdHMuICBJbiBmYWN0LCB5b3UgY2FuIHJ1biBtYW55IHRlc3RzCi13cml0
dGVuIGZvciBub3NlIHdpdGggYGBweXRlc3RgYC4gIG5vc2VfIHdhcyBvcmlnaW5hbGx5IGNyZWF0
ZWQKLWFzIGEgY2xvbmUgb2YgYGBweXRlc3RgYCB3aGVuIGBgcHl0ZXN0YGAgd2FzIGluIHRoZSBg
YDAuOGBgIHJlbGVhc2UKLWN5Y2xlLiAgTm90ZSB0aGF0IHN0YXJ0aW5nIHdpdGggcHl0ZXN0LTIu
MCBzdXBwb3J0IGZvciBydW5uaW5nIHVuaXR0ZXN0Ci10ZXN0IHN1aXRlcyBpcyBtYWpvcmx5IGlt
cHJvdmVkLgotCi1ob3cgZG9lcyBweXRlc3QgcmVsYXRlIHRvIHR3aXN0ZWQncyB0cmlhbD8KLSsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotU2luY2Ugc29t
ZSB0aW1lIGBgcHl0ZXN0YGAgaGFzIGJ1aWx0aW4gc3VwcG9ydCBmb3Igc3VwcG9ydGluZyB0ZXN0
cwotd3JpdHRlbiB1c2luZyB0cmlhbC4gSXQgZG9lcyBub3QgaXRzZWxmIHN0YXJ0IGEgcmVhY3Rv
ciwgaG93ZXZlciwKLWFuZCBkb2VzIG5vdCBoYW5kbGUgRGVmZXJyZWRzIHJldHVybmVkIGZyb20g
YSB0ZXN0IGluIHB5dGVzdCBzdHlsZS4KLUlmIHlvdSBhcmUgdXNpbmcgdHJpYWwncyB1bml0dGVz
dC5UZXN0Q2FzZSBjaGFuY2VzIGFyZSB0aGF0IHlvdSBjYW4KLWp1c3QgcnVuIHlvdXIgdGVzdHMg
ZXZlbiBpZiB5b3UgcmV0dXJuIERlZmVycmVkcy4gIEluIGFkZGl0aW9uLAotdGhlcmUgYWxzbyBp
cyBhIGRlZGljYXRlZCBgcHl0ZXN0LXR3aXN0ZWQKLTxodHRwczovL3B5cGkub3JnL3Byb2plY3Qv
cHl0ZXN0LXR3aXN0ZWQvPmBfIHBsdWdpbiB3aGljaCBhbGxvd3MgeW91IHRvCi1yZXR1cm4gZGVm
ZXJyZWRzIGZyb20gcHl0ZXN0LXN0eWxlIHRlc3RzLCBhbGxvd2luZyB0aGUgdXNlIG9mCi06cmVm
OmBmaXh0dXJlc2AgYW5kIG90aGVyIGZlYXR1cmVzLgotCi1ob3cgZG9lcyBweXRlc3Qgd29yayB3
aXRoIERqYW5nbz8KLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysKLQotSW4gMjAxMiwgc29tZSB3b3JrIGlzIGdvaW5nIGludG8gdGhlIGBweXRlc3QtZGphbmdv
IHBsdWdpbiA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1kamFuZ28vPmBfLiAgSXQg
c3Vic3RpdHV0ZXMgdGhlIHVzYWdlIG9mIERqYW5nbydzCi1gYG1hbmFnZS5weSB0ZXN0YGAgYW5k
IGFsbG93cyB0aGUgdXNlIG9mIGFsbCBweXRlc3QgZmVhdHVyZXNfIG1vc3Qgb2Ygd2hpY2gKLWFy
ZSBub3QgYXZhaWxhYmxlIGZyb20gRGphbmdvIGRpcmVjdGx5LgotCi0uLiBfZmVhdHVyZXM6IGZl
YXR1cmVzLmh0bWwKLQotCi1XaGF0J3MgdGhpcyAibWFnaWMiIHdpdGggcHl0ZXN0PyAoaGlzdG9y
aWMgbm90ZXMpCi0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwotCi1Bcm91bmQgMjAwNyAodmVyc2lvbiBgYDAuOGBgKSBzb21lIHBlb3BsZSB0
aG91Z2h0IHRoYXQgYGBweXRlc3RgYAotd2FzIHVzaW5nIHRvbyBtdWNoICJtYWdpYyIuICBJdCBo
YWQgYmVlbiBwYXJ0IG9mIHRoZSBgcHlsaWJgXyB3aGljaAotY29udGFpbnMgYSBsb3Qgb2YgdW5y
ZWxhdGVkIHB5dGhvbiBsaWJyYXJ5IGNvZGUuICBBcm91bmQgMjAxMCB0aGVyZQotd2FzIGEgbWFq
b3IgY2xlYW51cCByZWZhY3RvcmluZywgd2hpY2ggcmVtb3ZlZCB1bnVzZWQgb3IgZGVwcmVjYXRl
ZCBjb2RlCi1hbmQgcmVzdWx0ZWQgaW4gdGhlIG5ldyBgYHB5dGVzdGBgIFB5UEkgcGFja2FnZSB3
aGljaCBzdHJpY3RseSBjb250YWlucwotb25seSB0ZXN0LXJlbGF0ZWQgY29kZS4gIFRoaXMgcmVs
ZWFzZSBhbHNvIGJyb3VnaHQgYSBjb21wbGV0ZSBwbHVnaW5pZmljYXRpb24KLXN1Y2ggdGhhdCB0
aGUgY29yZSBpcyBhcm91bmQgMzAwIGxpbmVzIG9mIGNvZGUgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBp
cwotaW1wbGVtZW50ZWQgaW4gcGx1Z2lucy4gIFRodXMgYGBweXRlc3RgYCB0b2RheSBpcyBhIHNt
YWxsLCB1bml2ZXJzYWxseSBydW5uYWJsZQotYW5kIGN1c3RvbWl6YWJsZSB0ZXN0aW5nIGZyYW1l
d29yayBmb3IgUHl0aG9uLiAgIE5vdGUsIGhvd2V2ZXIsIHRoYXQKLWBgcHl0ZXN0YGAgdXNlcyBt
ZXRhcHJvZ3JhbW1pbmcgdGVjaG5pcXVlcyBhbmQgcmVhZGluZyBpdHMgc291cmNlIGlzCi10aHVz
IGxpa2VseSBub3Qgc29tZXRoaW5nIGZvciBQeXRob24gYmVnaW5uZXJzLgotCi1BIHNlY29uZCAi
bWFnaWMiIGlzc3VlIHdhcyB0aGUgYXNzZXJ0IHN0YXRlbWVudCBkZWJ1Z2dpbmcgZmVhdHVyZS4K
LU5vd2FkYXlzLCBgYHB5dGVzdGBgIGV4cGxpY2l0bHkgcmV3cml0ZXMgYXNzZXJ0IHN0YXRlbWVu
dHMgaW4gdGVzdCBtb2R1bGVzCi1pbiBvcmRlciB0byBwcm92aWRlIG1vcmUgdXNlZnVsIDpyZWY6
YGFzc2VydCBmZWVkYmFjayA8YXNzZXJ0ZmVlZGJhY2s+YC4KLVRoaXMgY29tcGxldGVseSBhdm9p
ZHMgcHJldmlvdXMgaXNzdWVzIG9mIGNvbmZ1c2luZyBhc3NlcnRpb24tcmVwb3J0aW5nLgotSXQg
YWxzbyBtZWFucywgdGhhdCB5b3UgY2FuIHVzZSBQeXRob24ncyBgYC1PYGAgb3B0aW1pemF0aW9u
IHdpdGhvdXQgbG9zaW5nCi1hc3NlcnRpb25zIGluIHRlc3QgbW9kdWxlcy4KLQotWW91IGNhbiBh
bHNvIHR1cm4gb2ZmIGFsbCBhc3NlcnRpb24gaW50ZXJhY3Rpb24gdXNpbmcgdGhlCi1gYC0tYXNz
ZXJ0PXBsYWluYGAgb3B0aW9uLgotCi0uLiBfYHB5IG5hbWVzcGFjZXNgOiBpbmRleC5odG1sCi0u
LiBfYHB5L19faW5pdF9fLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsv
c3JjL3RydW5rL3B5L19faW5pdF9fLnB5Ci0KLQotV2h5IGNhbiBJIHVzZSBib3RoIGBgcHl0ZXN0
YGAgYW5kIGBgcHkudGVzdGBgIGNvbW1hbmRzPwotKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1weXRlc3QgdXNlZCB0byBiZSBwYXJ0IG9m
IHRoZSBweSBwYWNrYWdlLCB3aGljaCBwcm92aWRlZCBzZXZlcmFsIGRldmVsb3BlcgotdXRpbGl0
aWVzLCBhbGwgc3RhcnRpbmcgd2l0aCBgYHB5LjxUQUI+YGAsIHRodXMgcHJvdmlkaW5nIG5pY2Ug
VEFCLWNvbXBsZXRpb24uCi1JZiB5b3UgaW5zdGFsbCBgYHBpcCBpbnN0YWxsIHB5Y21kYGAgeW91
IGdldCB0aGVzZSB0b29scyBmcm9tIGEgc2VwYXJhdGUKLXBhY2thZ2UuIE9uY2UgYGBweXRlc3Rg
YCBiZWNhbWUgYSBzZXBhcmF0ZSBwYWNrYWdlLCB0aGUgYGBweS50ZXN0YGAgbmFtZSB3YXMKLXJl
dGFpbmVkIGR1ZSB0byBhdm9pZCBhIG5hbWluZyBjb25mbGljdCB3aXRoIGFub3RoZXIgdG9vbC4g
VGhpcyBjb25mbGljdCB3YXMKLWV2ZW50dWFsbHkgcmVzb2x2ZWQsIGFuZCB0aGUgYGBweXRlc3Rg
YCBjb21tYW5kIHdhcyB0aGVyZWZvcmUgaW50cm9kdWNlZC4gSW4KLWZ1dHVyZSB2ZXJzaW9ucyBv
ZiBweXRlc3QsIHdlIG1heSBkZXByZWNhdGUgYW5kIGxhdGVyIHJlbW92ZSB0aGUgYGBweS50ZXN0
YGAKLWNvbW1hbmQgdG8gYXZvaWQgcGVycGV0dWF0aW5nIHRoZSBjb25mdXNpb24uCi0KLXB5dGVz
dCBmaXh0dXJlcywgcGFyYW1ldHJpemVkIHRlc3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIF9mdW5jYXJnczogZnVuY2FyZ3Mu
aHRtbAotCi1JcyB1c2luZyBweXRlc3QgZml4dHVyZXMgdmVyc3VzIHhVbml0IHNldHVwIGEgc3R5
bGUgcXVlc3Rpb24/Ci0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCi0KLUZvciBzaW1wbGUgYXBwbGljYXRpb25zIGFuZCBm
b3IgcGVvcGxlIGV4cGVyaWVuY2VkIHdpdGggbm9zZV8gb3IKLXVuaXR0ZXN0LXN0eWxlIHRlc3Qg
c2V0dXAgdXNpbmcgYHhVbml0IHN0eWxlIHNldHVwYF8gcHJvYmFibHkKLWZlZWxzIG5hdHVyYWwu
ICBGb3IgbGFyZ2VyIHRlc3Qgc3VpdGVzLCBwYXJhbWV0cml6ZWQgdGVzdGluZwotb3Igc2V0dXAg
b2YgY29tcGxleCB0ZXN0IHJlc291cmNlcyB1c2luZyBmaXh0dXJlc18gbWF5IGZlZWwgbW9yZSBu
YXR1cmFsLgotTW9yZW92ZXIsIGZpeHR1cmVzIGFyZSBpZGVhbCBmb3Igd3JpdGluZyBhZHZhbmNl
ZCB0ZXN0IHN1cHBvcnQKLWNvZGUgKGxpa2UgZS5nLiB0aGUgbW9ua2V5cGF0Y2hfLCB0aGUgdG1w
ZGlyXyBvciBjYXB0dXJlXyBmaXh0dXJlcykKLWJlY2F1c2UgdGhlIHN1cHBvcnQgY29kZSBjYW4g
cmVnaXN0ZXIgc2V0dXAvdGVhcmRvd24gZnVuY3Rpb25zCi1pbiBhIG1hbmFnZWQgY2xhc3MvbW9k
dWxlL2Z1bmN0aW9uIHNjb3BlLgotCi0uLiBfbW9ua2V5cGF0Y2g6IG1vbmtleXBhdGNoLmh0bWwK
LS4uIF90bXBkaXI6IHRtcGRpci5odG1sCi0uLiBfY2FwdHVyZTogY2FwdHVyZS5odG1sCi0uLiBf
Zml4dHVyZXM6IGZpeHR1cmUuaHRtbAotCi0uLiBfYHdoeSBweXRlc3RfcHlmdW5jYXJnX18gbWV0
aG9kcz9gOgotCi0uLiBfYENvbnZlbnRpb24gb3ZlciBDb25maWd1cmF0aW9uYDogaHR0cDovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9Db252ZW50aW9uX292ZXJfQ29uZmlndXJhdGlvbgotCi1DYW4g
SSB5aWVsZCBtdWx0aXBsZSB2YWx1ZXMgZnJvbSBhIGZpeHR1cmUgZnVuY3Rpb24/Ci0rKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwot
Ci1UaGVyZSBhcmUgdHdvIGNvbmNlcHR1YWwgcmVhc29ucyB3aHkgeWllbGRpbmcgZnJvbSBhIGZh
Y3RvcnkgZnVuY3Rpb24KLWlzIG5vdCBwb3NzaWJsZToKLQotKiBJZiBtdWx0aXBsZSBmYWN0b3Jp
ZXMgeWllbGRlZCB2YWx1ZXMgdGhlcmUgd291bGQKLSAgYmUgbm8gbmF0dXJhbCBwbGFjZSB0byBk
ZXRlcm1pbmUgdGhlIGNvbWJpbmF0aW9uCi0gIHBvbGljeSAtIGluIHJlYWwtd29ybGQgZXhhbXBs
ZXMgc29tZSBjb21iaW5hdGlvbnMKLSAgb2Z0ZW4gc2hvdWxkIG5vdCBydW4uCi0KLSogQ2FsbGlu
ZyBmYWN0b3JpZXMgZm9yIG9idGFpbmluZyB0ZXN0IGZ1bmN0aW9uIGFyZ3VtZW50cwotICBpcyBw
YXJ0IG9mIHNldHRpbmcgdXAgYW5kIHJ1bm5pbmcgYSB0ZXN0LiAgQXQgdGhhdAotICBwb2ludCBp
dCBpcyBub3QgcG9zc2libGUgdG8gYWRkIG5ldyB0ZXN0IGNhbGxzIHRvCi0gIHRoZSB0ZXN0IGNv
bGxlY3Rpb24gYW55bW9yZS4KLQotSG93ZXZlciwgd2l0aCBweXRlc3QtMi4zIHlvdSBjYW4gdXNl
IHRoZSA6cmVmOmBAcHl0ZXN0LmZpeHR1cmVgIGRlY29yYXRvcgotYW5kIHNwZWNpZnkgYGBwYXJh
bXNgYCBzbyB0aGF0IGFsbCB0ZXN0cyBkZXBlbmRpbmcgb24gdGhlIGZhY3RvcnktY3JlYXRlZAot
cmVzb3VyY2Ugd2lsbCBydW4gbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVy
cy4KLQotWW91IGNhbiBhbHNvIHVzZSB0aGUgYGBweXRlc3RfZ2VuZXJhdGVfdGVzdHNgYCBob29r
IHRvCi1pbXBsZW1lbnQgdGhlIGBwYXJhbWV0cml6YXRpb24gc2NoZW1lIG9mIHlvdXIgY2hvaWNl
YF8uIFNlZSBhbHNvCi06cmVmOmBwYXJhbWV4YW1wbGVzYCBmb3IgbW9yZSBleGFtcGxlcy4KLQot
Li4gX2BwYXJhbWV0cml6YXRpb24gc2NoZW1lIG9mIHlvdXIgY2hvaWNlYDogaHR0cDovL3RldGFt
YXAud29yZHByZXNzLmNvbS8yMDA5LzA1LzEzL3BhcmFtZXRyaXppbmctcHl0aG9uLXRlc3RzLWdl
bmVyYWxpemVkLwotCi1weXRlc3QgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYWNrYWdlcwotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUlzc3Vl
cyB3aXRoIHB5dGVzdCwgbXVsdGlwcm9jZXNzIGFuZCBzZXR1cHRvb2xzPwotKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLU9uIFdpbmRv
d3MgdGhlIG11bHRpcHJvY2VzcyBwYWNrYWdlIHdpbGwgaW5zdGFudGlhdGUgc3ViIHByb2Nlc3Nl
cwotYnkgcGlja2xpbmcgYW5kIHRodXMgaW1wbGljaXRseSByZS1pbXBvcnQgYSBsb3Qgb2YgbG9j
YWwgbW9kdWxlcy4KLVVuZm9ydHVuYXRlbHksIHNldHVwdG9vbHMtMC42LjExIGRvZXMgbm90IGBg
aWYgX19uYW1lX189PSdfX21haW5fXydgYAotcHJvdGVjdCBpdHMgZ2VuZXJhdGVkIGNvbW1hbmQg
bGluZSBzY3JpcHQuICBUaGlzIGxlYWRzIHRvIGluZmluaXRlCi1yZWN1cnNpb24gd2hlbiBydW5u
aW5nIGEgdGVzdCB0aGF0IGluc3RhbnRpYXRlcyBQcm9jZXNzZXMuCi0KLUFzIG9mIG1pZC0yMDEz
LCB0aGVyZSBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIGFueW1vcmUgd2hlbiB5b3UKLXVzZSB0aGUg
c3RhbmRhcmQgc2V0dXB0b29scyAobm90ZSB0aGF0IGRpc3RyaWJ1dGUgaGFzIGJlZW4gbWVyZ2Vk
Ci1iYWNrIGludG8gc2V0dXB0b29scyB3aGljaCBpcyBub3cgc2hpcHBlZCBkaXJlY3RseSB3aXRo
IHZpcnR1YWxlbnYpLgotCi0uLiBpbmNsdWRlOjogbGlua3MuaW5jCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZml4dHVyZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZml4dHVyZS5y
c3QKaW5kZXggZDRkMzg2NzkyZTA4Li45MGU4OGQ4NzYyMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9maXh0dXJlLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZml4dHVyZS5y
c3QKQEAgLTcsMTYgKzcsMjIgQEAgcHl0ZXN0IGZpeHR1cmVzOiBleHBsaWNpdCwgbW9kdWxhciwg
c2NhbGFibGUKIAogLi4gY3VycmVudG1vZHVsZTo6IF9weXRlc3QucHl0aG9uCiAKLS4uIHZlcnNp
b25hZGRlZDo6IDIuMC8yLjMvMi40CiAKLS4uIF9geFVuaXRgOiBodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL1hVbml0Ci0uLiBfYHB1cnBvc2Ugb2YgdGVzdCBmaXh0dXJlc2A6IGh0dHA6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvVGVzdF9maXh0dXJlI1NvZnR3YXJlCi0uLiBfYERlcGVuZGVu
Y3kgaW5qZWN0aW9uYDogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXBlbmRlbmN5X2lu
amVjdGlvbgogCi1UaGUgYHB1cnBvc2Ugb2YgdGVzdCBmaXh0dXJlc2BfIGlzIHRvIHByb3ZpZGUg
YSBmaXhlZCBiYXNlbGluZQotdXBvbiB3aGljaCB0ZXN0cyBjYW4gcmVsaWFibHkgYW5kIHJlcGVh
dGVkbHkgZXhlY3V0ZS4gICBweXRlc3QgZml4dHVyZXMKLW9mZmVyIGRyYW1hdGljIGltcHJvdmVt
ZW50cyBvdmVyIHRoZSBjbGFzc2ljIHhVbml0IHN0eWxlIG9mIHNldHVwL3RlYXJkb3duCi1mdW5j
dGlvbnM6CisuLiBfYHhVbml0YDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWFVuaXQK
Ky4uIF9gU29mdHdhcmUgdGVzdCBmaXh0dXJlc2A6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93
aWtpL1Rlc3RfZml4dHVyZSNTb2Z0d2FyZQorLi4gX2BEZXBlbmRlbmN5IGluamVjdGlvbmA6IGh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlcGVuZGVuY3lfaW5qZWN0aW9uCisKK2BTb2Z0
d2FyZSB0ZXN0IGZpeHR1cmVzYF8gaW5pdGlhbGl6ZSB0ZXN0IGZ1bmN0aW9ucy4gIFRoZXkgcHJv
dmlkZSBhCitmaXhlZCBiYXNlbGluZSBzbyB0aGF0IHRlc3RzIGV4ZWN1dGUgcmVsaWFibHkgYW5k
IHByb2R1Y2UgY29uc2lzdGVudCwKK3JlcGVhdGFibGUsIHJlc3VsdHMuICBJbml0aWFsaXphdGlv
biBtYXkgc2V0dXAgc2VydmljZXMsIHN0YXRlLCBvcgorb3RoZXIgb3BlcmF0aW5nIGVudmlyb25t
ZW50cy4gIFRoZXNlIGFyZSBhY2Nlc3NlZCBieSB0ZXN0IGZ1bmN0aW9ucwordGhyb3VnaCBhcmd1
bWVudHM7IGZvciBlYWNoIGZpeHR1cmUgdXNlZCBieSBhIHRlc3QgZnVuY3Rpb24gdGhlcmUgaXMK
K3R5cGljYWxseSBhIHBhcmFtZXRlciAobmFtZWQgYWZ0ZXIgdGhlIGZpeHR1cmUpIGluIHRoZSB0
ZXN0IGZ1bmN0aW9uJ3MKK2RlZmluaXRpb24uCisKK3B5dGVzdCBmaXh0dXJlcyBvZmZlciBkcmFt
YXRpYyBpbXByb3ZlbWVudHMgb3ZlciB0aGUgY2xhc3NpYyB4VW5pdAorc3R5bGUgb2Ygc2V0dXAv
dGVhcmRvd24gZnVuY3Rpb25zOgogCiAqIGZpeHR1cmVzIGhhdmUgZXhwbGljaXQgbmFtZXMgYW5k
IGFyZSBhY3RpdmF0ZWQgYnkgZGVjbGFyaW5nIHRoZWlyIHVzZQogICBmcm9tIHRlc3QgZnVuY3Rp
b25zLCBtb2R1bGVzLCBjbGFzc2VzIG9yIHdob2xlIHByb2plY3RzLgpAQCAtMzQsNiArNDAsNzQg
QEAgYm90aCBzdHlsZXMsIG1vdmluZyBpbmNyZW1lbnRhbGx5IGZyb20gY2xhc3NpYyB0byBuZXcg
c3R5bGUsIGFzIHlvdQogcHJlZmVyLiAgWW91IGNhbiBhbHNvIHN0YXJ0IG91dCBmcm9tIGV4aXN0
aW5nIDpyZWY6YHVuaXR0ZXN0LlRlc3RDYXNlCiBzdHlsZSA8dW5pdHRlc3QuVGVzdENhc2U+YCBv
ciA6cmVmOmBub3NlIGJhc2VkIDxub3Nlc3R5bGU+YCBwcm9qZWN0cy4KIAorOnJlZjpgRml4dHVy
ZXMgPGZpeHR1cmVzLWFwaT5gIGFyZSBkZWZpbmVkIHVzaW5nIHRoZQorOnJlZjpgQHB5dGVzdC5m
aXh0dXJlIDxweXRlc3QuZml4dHVyZS1hcGk+YCBkZWNvcmF0b3IsIDpyZWY6YGRlc2NyaWJlZAor
YmVsb3cgPGZ1bmNhcmdzPmAuIFB5dGVzdCBoYXMgdXNlZnVsIGJ1aWx0LWluIGZpeHR1cmVzLCBs
aXN0ZWQgaGVyZQorZm9yIHJlZmVyZW5jZToKKworICAgOmZpeHR1cmU6YGNhcGZkYAorICAgICAg
ICBDYXB0dXJlLCBhcyB0ZXh0LCBvdXRwdXQgdG8gZmlsZSBkZXNjcmlwdG9ycyBgYDFgYCBhbmQg
YGAyYGAuCisKKyAgIDpmaXh0dXJlOmBjYXBmZGJpbmFyeWAKKyAgICAgICAgQ2FwdHVyZSwgYXMg
Ynl0ZXMsIG91dHB1dCB0byBmaWxlIGRlc2NyaXB0b3JzIGBgMWBgIGFuZCBgYDJgYC4KKworICAg
OmZpeHR1cmU6YGNhcGxvZ2AKKyAgICAgICAgQ29udHJvbCBsb2dnaW5nIGFuZCBhY2Nlc3MgbG9n
IGVudHJpZXMuCisKKyAgIDpmaXh0dXJlOmBjYXBzeXNgCisgICAgICAgIENhcHR1cmUsIGFzIHRl
eHQsIG91dHB1dCB0byBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAuCisKKyAgIDpm
aXh0dXJlOmBjYXBzeXNiaW5hcnlgCisgICAgICAgIENhcHR1cmUsIGFzIGJ5dGVzLCBvdXRwdXQg
dG8gYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgLgorCisgICA6Zml4dHVyZTpgY2Fj
aGVgCisgICAgICAgIFN0b3JlIGFuZCByZXRyaWV2ZSB2YWx1ZXMgYWNyb3NzIHB5dGVzdCBydW5z
LgorCisgICA6Zml4dHVyZTpgZG9jdGVzdF9uYW1lc3BhY2VgCisgICAgICAgIFByb3ZpZGUgYSBk
aWN0IGluamVjdGVkIGludG8gdGhlIGRvY3N0ZXN0cyBuYW1lc3BhY2UuCisKKyAgIDpmaXh0dXJl
OmBtb25rZXlwYXRjaGAKKyAgICAgICBUZW1wb3JhcmlseSBtb2RpZnkgY2xhc3NlcywgZnVuY3Rp
b25zLCBkaWN0aW9uYXJpZXMsCisgICAgICAgYGBvcy5lbnZpcm9uYGAsIGFuZCBvdGhlciBvYmpl
Y3RzLgorCisgICA6Zml4dHVyZTpgcHl0ZXN0Y29uZmlnYAorICAgICAgICBBY2Nlc3MgdG8gY29u
ZmlndXJhdGlvbiB2YWx1ZXMsIHBsdWdpbm1hbmFnZXIgYW5kIHBsdWdpbiBob29rcy4KKworICAg
OmZpeHR1cmU6YHJlY29yZF9wcm9wZXJ0eWAKKyAgICAgICBBZGQgZXh0cmEgcHJvcGVydGllcyB0
byB0aGUgdGVzdC4KKworICAgOmZpeHR1cmU6YHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHlgCisg
ICAgICAgQWRkIGV4dHJhIHByb3BlcnRpZXMgdG8gdGhlIHRlc3Qgc3VpdGUuCisKKyAgIDpmaXh0
dXJlOmByZWN3YXJuYAorICAgICAgICBSZWNvcmQgd2FybmluZ3MgZW1pdHRlZCBieSB0ZXN0IGZ1
bmN0aW9ucy4KKworICAgOmZpeHR1cmU6YHJlcXVlc3RgCisgICAgICAgUHJvdmlkZSBpbmZvcm1h
dGlvbiBvbiB0aGUgZXhlY3V0aW5nIHRlc3QgZnVuY3Rpb24uCisKKyAgIDpmaXh0dXJlOmB0ZXN0
ZGlyYAorICAgICAgICBQcm92aWRlIGEgdGVtcG9yYXJ5IHRlc3QgZGlyZWN0b3J5IHRvIGFpZCBp
biBydW5uaW5nLCBhbmQKKyAgICAgICAgdGVzdGluZywgcHl0ZXN0IHBsdWdpbnMuCisKKyAgIDpm
aXh0dXJlOmB0bXBfcGF0aGAKKyAgICAgICBQcm92aWRlIGEgOmNsYXNzOmBwYXRobGliLlBhdGhg
IG9iamVjdCB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICB3aGljaCBpcyB1bmlxdWUg
dG8gZWFjaCB0ZXN0IGZ1bmN0aW9uLgorCisgICA6Zml4dHVyZTpgdG1wX3BhdGhfZmFjdG9yeWAK
KyAgICAgICAgTWFrZSBzZXNzaW9uLXNjb3BlZCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgYW5kIHJl
dHVybgorICAgICAgICA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAgb2JqZWN0cy4KKworICAgOmZpeHR1
cmU6YHRtcGRpcmAKKyAgICAgICAgUHJvdmlkZSBhIDpjbGFzczpgcHkucGF0aC5sb2NhbGAgb2Jq
ZWN0IHRvIGEgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeSB3aGljaCBpcyB1bmlxdWUgdG8g
ZWFjaCB0ZXN0IGZ1bmN0aW9uOworICAgICAgICByZXBsYWNlZCBieSA6Zml4dHVyZTpgdG1wX3Bh
dGhgLgorCisgICAgICAgIC4uIF9gcHkucGF0aC5sb2NhbGA6IGh0dHBzOi8vcHkucmVhZHRoZWRv
Y3MuaW8vZW4vbGF0ZXN0L3BhdGguaHRtbAorCisgICA6Zml4dHVyZTpgdG1wZGlyX2ZhY3Rvcnlg
CisgICAgICAgIE1ha2Ugc2Vzc2lvbi1zY29wZWQgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGFuZCBy
ZXR1cm4KKyAgICAgICAgOmNsYXNzOmBweS5wYXRoLmxvY2FsYCBvYmplY3RzOworICAgICAgICBy
ZXBsYWNlZCBieSA6Zml4dHVyZTpgdG1wX3BhdGhfZmFjdG9yeWAuCiAKIC4uIF9gZnVuY2FyZ3Ng
OgogLi4gX2BmdW5jYXJnIG1lY2hhbmlzbWA6CkBAIC00NywzMSArMTIxLDM5IEBAIEZpeHR1cmVz
IGFzIEZ1bmN0aW9uIGFyZ3VtZW50cwogVGVzdCBmdW5jdGlvbnMgY2FuIHJlY2VpdmUgZml4dHVy
ZSBvYmplY3RzIGJ5IG5hbWluZyB0aGVtIGFzIGFuIGlucHV0CiBhcmd1bWVudC4gRm9yIGVhY2gg
YXJndW1lbnQgbmFtZSwgYSBmaXh0dXJlIGZ1bmN0aW9uIHdpdGggdGhhdCBuYW1lIHByb3ZpZGVz
CiB0aGUgZml4dHVyZSBvYmplY3QuICBGaXh0dXJlIGZ1bmN0aW9ucyBhcmUgcmVnaXN0ZXJlZCBi
eSBtYXJraW5nIHRoZW0gd2l0aAotOnB5OmZ1bmM6YEBweXRlc3QuZml4dHVyZSA8X3B5dGVzdC5w
eXRob24uZml4dHVyZT5gLiAgTGV0J3MgbG9vayBhdCBhIHNpbXBsZQorOnB5OmZ1bmM6YEBweXRl
c3QuZml4dHVyZSA8cHl0ZXN0LmZpeHR1cmU+YC4gIExldCdzIGxvb2sgYXQgYSBzaW1wbGUKIHNl
bGYtY29udGFpbmVkIHRlc3QgbW9kdWxlIGNvbnRhaW5pbmcgYSBmaXh0dXJlIGFuZCBhIHRlc3Qg
ZnVuY3Rpb24KLXVzaW5nIGl0OjoKK3VzaW5nIGl0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICAjIGNvbnRlbnQgb2YgLi90ZXN0X3NtdHBzaW1wbGUucHkKICAgICBpbXBvcnQgcHl0
ZXN0CiAKKwogICAgIEBweXRlc3QuZml4dHVyZQotICAgIGRlZiBzbXRwKCk6CisgICAgZGVmIHNt
dHBfY29ubmVjdGlvbigpOgogICAgICAgICBpbXBvcnQgc210cGxpYgorCiAgICAgICAgIHJldHVy
biBzbXRwbGliLlNNVFAoInNtdHAuZ21haWwuY29tIiwgNTg3LCB0aW1lb3V0PTUpCiAKLSAgICBk
ZWYgdGVzdF9laGxvKHNtdHApOgotICAgICAgICByZXNwb25zZSwgbXNnID0gc210cC5laGxvKCkK
KworICAgIGRlZiB0ZXN0X2VobG8oc210cF9jb25uZWN0aW9uKToKKyAgICAgICAgcmVzcG9uc2Us
IG1zZyA9IHNtdHBfY29ubmVjdGlvbi5laGxvKCkKICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlID09
IDI1MAotICAgICAgICBhc3NlcnQgMCAjIGZvciBkZW1vIHB1cnBvc2VzCisgICAgICAgIGFzc2Vy
dCAwICAjIGZvciBkZW1vIHB1cnBvc2VzCisKK0hlcmUsIHRoZSBgYHRlc3RfZWhsb2BgIG5lZWRz
IHRoZSBgYHNtdHBfY29ubmVjdGlvbmBgIGZpeHR1cmUgdmFsdWUuICBweXRlc3QKK3dpbGwgZGlz
Y292ZXIgYW5kIGNhbGwgdGhlIDpweTpmdW5jOmBAcHl0ZXN0LmZpeHR1cmUgPHB5dGVzdC5maXh0
dXJlPmAKK21hcmtlZCBgYHNtdHBfY29ubmVjdGlvbmBgIGZpeHR1cmUgZnVuY3Rpb24uICBSdW5u
aW5nIHRoZSB0ZXN0IGxvb2tzIGxpa2UgdGhpczoKIAotSGVyZSwgdGhlIGBgdGVzdF9laGxvYGAg
bmVlZHMgdGhlIGBgc210cGBgIGZpeHR1cmUgdmFsdWUuICBweXRlc3QKLXdpbGwgZGlzY292ZXIg
YW5kIGNhbGwgdGhlIDpweTpmdW5jOmBAcHl0ZXN0LmZpeHR1cmUgPF9weXRlc3QucHl0aG9uLmZp
eHR1cmU+YAotbWFya2VkIGBgc210cGBgIGZpeHR1cmUgZnVuY3Rpb24uICBSdW5uaW5nIHRoZSB0
ZXN0IGxvb2tzIGxpa2UgdGhpczo6CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5
dGVzdCB0ZXN0X3NtdHBzaW1wbGUucHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0g
dGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxh
dGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVn
Z3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBs
YXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1
Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAg
ICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDEgaXRlbQogCiAgICAg
dGVzdF9zbXRwc2ltcGxlLnB5IEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWzEwMCVdCkBAIC03OSwzMCArMTYxLDMyIEBAIG1hcmtlZCBgYHNtdHBgYCBm
aXh0dXJlIGZ1bmN0aW9uLiAgUnVubmluZyB0aGUgdGVzdCBsb29rcyBsaWtlIHRoaXM6OgogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XyB0ZXN0X2VobG8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAKLSAgICBzbXRw
ID0gPHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVlZj4KKyAgICBzbXRwX2Nvbm5lY3Rp
b24gPSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCi0gICAgICAgIGRlZiB0
ZXN0X2VobG8oc210cCk6Ci0gICAgICAgICAgICByZXNwb25zZSwgbXNnID0gc210cC5laGxvKCkK
KyAgICAgICAgZGVmIHRlc3RfZWhsbyhzbXRwX2Nvbm5lY3Rpb24pOgorICAgICAgICAgICAgcmVz
cG9uc2UsIG1zZyA9IHNtdHBfY29ubmVjdGlvbi5laGxvKCkKICAgICAgICAgICAgIGFzc2VydCBy
ZXNwb25zZSA9PSAyNTAKLSAgICA+ICAgICAgIGFzc2VydCAwICMgZm9yIGRlbW8gcHVycG9zZXMK
KyAgICA+ICAgICAgIGFzc2VydCAwICAjIGZvciBkZW1vIHB1cnBvc2VzCiAgICAgRSAgICAgICBh
c3NlcnQgMAogCi0gICAgdGVzdF9zbXRwc2ltcGxlLnB5OjExOiBBc3NlcnRpb25FcnJvcgotICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzID09PT09
PT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0X3NtdHBzaW1wbGUucHk6MTQ6IEFzc2VydGlv
bkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkg
aW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X3NtdHBzaW1w
bGUucHk6OnRlc3RfZWhsbyAtIGFzc2VydCAwCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PSAxIGZhaWxlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBJ
biB0aGUgZmFpbHVyZSB0cmFjZWJhY2sgd2Ugc2VlIHRoYXQgdGhlIHRlc3QgZnVuY3Rpb24gd2Fz
IGNhbGxlZCB3aXRoIGEKLWBgc210cGBgIGFyZ3VtZW50LCB0aGUgYGBzbXRwbGliLlNNVFAoKWBg
IGluc3RhbmNlIGNyZWF0ZWQgYnkgdGhlIGZpeHR1cmUKK2Bgc210cF9jb25uZWN0aW9uYGAgYXJn
dW1lbnQsIHRoZSBgYHNtdHBsaWIuU01UUCgpYGAgaW5zdGFuY2UgY3JlYXRlZCBieSB0aGUgZml4
dHVyZQogZnVuY3Rpb24uICBUaGUgdGVzdCBmdW5jdGlvbiBmYWlscyBvbiBvdXIgZGVsaWJlcmF0
ZSBgYGFzc2VydCAwYGAuICBIZXJlIGlzCiB0aGUgZXhhY3QgcHJvdG9jb2wgdXNlZCBieSBgYHB5
dGVzdGBgIHRvIGNhbGwgdGhlIHRlc3QgZnVuY3Rpb24gdGhpcyB3YXk6CiAKLTEuIHB5dGVzdCA6
cmVmOmBmaW5kcyA8dGVzdCBkaXNjb3Zlcnk+YCB0aGUgYGB0ZXN0X2VobG9gYCBiZWNhdXNlCisx
LiBweXRlc3QgOnJlZjpgZmluZHMgPHRlc3QgZGlzY292ZXJ5PmAgdGhlIHRlc3QgYGB0ZXN0X2Vo
bG9gYCBiZWNhdXNlCiAgICBvZiB0aGUgYGB0ZXN0X2BgIHByZWZpeC4gIFRoZSB0ZXN0IGZ1bmN0
aW9uIG5lZWRzIGEgZnVuY3Rpb24gYXJndW1lbnQKLSAgIG5hbWVkIGBgc210cGBgLiAgQSBtYXRj
aGluZyBmaXh0dXJlIGZ1bmN0aW9uIGlzIGRpc2NvdmVyZWQgYnkKLSAgIGxvb2tpbmcgZm9yIGEg
Zml4dHVyZS1tYXJrZWQgZnVuY3Rpb24gbmFtZWQgYGBzbXRwYGAuCisgICBuYW1lZCBgYHNtdHBf
Y29ubmVjdGlvbmBgLiAgQSBtYXRjaGluZyBmaXh0dXJlIGZ1bmN0aW9uIGlzIGRpc2NvdmVyZWQg
YnkKKyAgIGxvb2tpbmcgZm9yIGEgZml4dHVyZS1tYXJrZWQgZnVuY3Rpb24gbmFtZWQgYGBzbXRw
X2Nvbm5lY3Rpb25gYC4KIAotMi4gYGBzbXRwKClgYCBpcyBjYWxsZWQgdG8gY3JlYXRlIGFuIGlu
c3RhbmNlLgorMi4gYGBzbXRwX2Nvbm5lY3Rpb24oKWBgIGlzIGNhbGxlZCB0byBjcmVhdGUgYW4g
aW5zdGFuY2UuCiAKLTMuIGBgdGVzdF9laGxvKDxTTVRQIGluc3RhbmNlPilgYCBpcyBjYWxsZWQg
YW5kIGZhaWxzIGluIHRoZSBsYXN0CiszLiBgYHRlc3RfZWhsbyg8c210cF9jb25uZWN0aW9uIGlu
c3RhbmNlPilgYCBpcyBjYWxsZWQgYW5kIGZhaWxzIGluIHRoZSBsYXN0CiAgICBsaW5lIG9mIHRo
ZSB0ZXN0IGZ1bmN0aW9uLgogCiBOb3RlIHRoYXQgaWYgeW91IG1pc3NwZWxsIGEgZnVuY3Rpb24g
YXJndW1lbnQgb3Igd2FudApAQCAtMTExLDcgKzE5NSw5IEBAIHdpdGggYSBsaXN0IG9mIGF2YWls
YWJsZSBmdW5jdGlvbiBhcmd1bWVudHMuCiAKIC4uIG5vdGU6OgogCi0gICAgWW91IGNhbiBhbHdh
eXMgaXNzdWUgOjoKKyAgICBZb3UgY2FuIGFsd2F5cyBpc3N1ZToKKworICAgIC4uIGNvZGUtYmxv
Y2s6OiBiYXNoCiAKICAgICAgICAgcHl0ZXN0IC0tZml4dHVyZXMgdGVzdF9zaW1wbGVmYWN0b3J5
LnB5CiAKQEAgLTE1Myw2MSArMjM5LDczIEBAIFRoaXMgbWFrZXMgdXNlIG9mIHRoZSBhdXRvbWF0
aWMgY2FjaGluZyBtZWNoYW5pc21zIG9mIHB5dGVzdC4KIAogQW5vdGhlciBnb29kIGFwcHJvYWNo
IGlzIGJ5IGFkZGluZyB0aGUgZGF0YSBmaWxlcyBpbiB0aGUgYGB0ZXN0c2BgIGZvbGRlci4KIFRo
ZXJlIGFyZSBhbHNvIGNvbW11bml0eSBwbHVnaW5zIGF2YWlsYWJsZSB0byBoZWxwIG1hbmFnaW5n
IHRoaXMgYXNwZWN0IG9mCi10ZXN0aW5nLCBlLmcuIGBweXRlc3QtZGF0YWRpciA8aHR0cHM6Ly9n
aXRodWIuY29tL2dhYnJpZWxjbnIvcHl0ZXN0LWRhdGFkaXI+YF9fCi1hbmQgYHB5dGVzdC1kYXRh
ZmlsZXMgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ZXN0LWRhdGFmaWxlcz5gX18u
Cit0ZXN0aW5nLCBlLmcuIGBweXRlc3QtZGF0YWRpciA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0
L3B5dGVzdC1kYXRhZGlyLz5gX18KK2FuZCBgcHl0ZXN0LWRhdGFmaWxlcyA8aHR0cHM6Ly9weXBp
Lm9yZy9wcm9qZWN0L3B5dGVzdC1kYXRhZmlsZXMvPmBfXy4KIAogLi4gX3NtdHBzaGFyZWQ6CiAK
LVNjb3BlOiBzaGFyaW5nIGEgZml4dHVyZSBpbnN0YW5jZSBhY3Jvc3MgdGVzdHMgaW4gYSBjbGFz
cywgbW9kdWxlIG9yIHNlc3Npb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Njb3BlOiBzaGFyaW5n
IGZpeHR1cmVzIGFjcm9zcyBjbGFzc2VzLCBtb2R1bGVzLCBwYWNrYWdlcyBvciBzZXNzaW9uCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAuLiByZWdlbmRvYzp3aXBlCiAKIEZpeHR1cmVzIHJlcXVpcmluZyBuZXR3
b3JrIGFjY2VzcyBkZXBlbmQgb24gY29ubmVjdGl2aXR5IGFuZCBhcmUKIHVzdWFsbHkgdGltZS1l
eHBlbnNpdmUgdG8gY3JlYXRlLiAgRXh0ZW5kaW5nIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3ZQog
Y2FuIGFkZCBhIGBgc2NvcGU9Im1vZHVsZSJgYCBwYXJhbWV0ZXIgdG8gdGhlCi06cHk6ZnVuYzpg
QHB5dGVzdC5maXh0dXJlIDxfcHl0ZXN0LnB5dGhvbi5maXh0dXJlPmAgaW52b2NhdGlvbgotdG8g
Y2F1c2UgdGhlIGRlY29yYXRlZCBgYHNtdHBgYCBmaXh0dXJlIGZ1bmN0aW9uIHRvIG9ubHkgYmUg
aW52b2tlZCBvbmNlCi1wZXIgdGVzdCAqbW9kdWxlKiAodGhlIGRlZmF1bHQgaXMgdG8gaW52b2tl
IG9uY2UgcGVyIHRlc3QgKmZ1bmN0aW9uKikuCis6cHk6ZnVuYzpgQHB5dGVzdC5maXh0dXJlIDxw
eXRlc3QuZml4dHVyZT5gIGludm9jYXRpb24KK3RvIGNhdXNlIHRoZSBkZWNvcmF0ZWQgYGBzbXRw
X2Nvbm5lY3Rpb25gYCBmaXh0dXJlIGZ1bmN0aW9uIHRvIG9ubHkgYmUgaW52b2tlZAorb25jZSBw
ZXIgdGVzdCAqbW9kdWxlKiAodGhlIGRlZmF1bHQgaXMgdG8gaW52b2tlIG9uY2UgcGVyIHRlc3Qg
KmZ1bmN0aW9uKikuCiBNdWx0aXBsZSB0ZXN0IGZ1bmN0aW9ucyBpbiBhIHRlc3QgbW9kdWxlIHdp
bGwgdGh1cwotZWFjaCByZWNlaXZlIHRoZSBzYW1lIGBgc210cGBgIGZpeHR1cmUgaW5zdGFuY2Us
IHRodXMgc2F2aW5nIHRpbWUuCitlYWNoIHJlY2VpdmUgdGhlIHNhbWUgYGBzbXRwX2Nvbm5lY3Rp
b25gYCBmaXh0dXJlIGluc3RhbmNlLCB0aHVzIHNhdmluZyB0aW1lLgorUG9zc2libGUgdmFsdWVz
IGZvciBgYHNjb3BlYGAgYXJlOiBgYGZ1bmN0aW9uYGAsIGBgY2xhc3NgYCwgYGBtb2R1bGVgYCwg
YGBwYWNrYWdlYGAgb3IgYGBzZXNzaW9uYGAuCiAKIFRoZSBuZXh0IGV4YW1wbGUgcHV0cyB0aGUg
Zml4dHVyZSBmdW5jdGlvbiBpbnRvIGEgc2VwYXJhdGUgYGBjb25mdGVzdC5weWBgIGZpbGUKIHNv
IHRoYXQgdGVzdHMgZnJvbSBtdWx0aXBsZSB0ZXN0IG1vZHVsZXMgaW4gdGhlIGRpcmVjdG9yeSBj
YW4KLWFjY2VzcyB0aGUgZml4dHVyZSBmdW5jdGlvbjo6CithY2Nlc3MgdGhlIGZpeHR1cmUgZnVu
Y3Rpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25m
dGVzdC5weQogICAgIGltcG9ydCBweXRlc3QKICAgICBpbXBvcnQgc210cGxpYgogCisKICAgICBA
cHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCi0gICAgZGVmIHNtdHAoKToKKyAgICBkZWYg
c210cF9jb25uZWN0aW9uKCk6CiAgICAgICAgIHJldHVybiBzbXRwbGliLlNNVFAoInNtdHAuZ21h
aWwuY29tIiwgNTg3LCB0aW1lb3V0PTUpCiAKLVRoZSBuYW1lIG9mIHRoZSBmaXh0dXJlIGFnYWlu
IGlzIGBgc210cGBgIGFuZCB5b3UgY2FuIGFjY2VzcyBpdHMgcmVzdWx0IGJ5Ci1saXN0aW5nIHRo
ZSBuYW1lIGBgc210cGBgIGFzIGFuIGlucHV0IHBhcmFtZXRlciBpbiBhbnkgdGVzdCBvciBmaXh0
dXJlCi1mdW5jdGlvbiAoaW4gb3IgYmVsb3cgdGhlIGRpcmVjdG9yeSB3aGVyZSBgYGNvbmZ0ZXN0
LnB5YGAgaXMgbG9jYXRlZCk6OgorVGhlIG5hbWUgb2YgdGhlIGZpeHR1cmUgYWdhaW4gaXMgYGBz
bXRwX2Nvbm5lY3Rpb25gYCBhbmQgeW91IGNhbiBhY2Nlc3MgaXRzCityZXN1bHQgYnkgbGlzdGlu
ZyB0aGUgbmFtZSBgYHNtdHBfY29ubmVjdGlvbmBgIGFzIGFuIGlucHV0IHBhcmFtZXRlciBpbiBh
bnkKK3Rlc3Qgb3IgZml4dHVyZSBmdW5jdGlvbiAoaW4gb3IgYmVsb3cgdGhlIGRpcmVjdG9yeSB3
aGVyZSBgYGNvbmZ0ZXN0LnB5YGAgaXMKK2xvY2F0ZWQpOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9tb2R1bGUucHkKIAotICAgIGRlZiB0ZXN0X2Vo
bG8oc210cCk6Ci0gICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwLmVobG8oKQorCisgICAgZGVm
IHRlc3RfZWhsbyhzbXRwX2Nvbm5lY3Rpb24pOgorICAgICAgICByZXNwb25zZSwgbXNnID0gc210
cF9jb25uZWN0aW9uLmVobG8oKQogICAgICAgICBhc3NlcnQgcmVzcG9uc2UgPT0gMjUwCiAgICAg
ICAgIGFzc2VydCBiInNtdHAuZ21haWwuY29tIiBpbiBtc2cKICAgICAgICAgYXNzZXJ0IDAgICMg
Zm9yIGRlbW8gcHVycG9zZXMKIAotICAgIGRlZiB0ZXN0X25vb3Aoc210cCk6Ci0gICAgICAgIHJl
c3BvbnNlLCBtc2cgPSBzbXRwLm5vb3AoKQorCisgICAgZGVmIHRlc3Rfbm9vcChzbXRwX2Nvbm5l
Y3Rpb24pOgorICAgICAgICByZXNwb25zZSwgbXNnID0gc210cF9jb25uZWN0aW9uLm5vb3AoKQog
ICAgICAgICBhc3NlcnQgcmVzcG9uc2UgPT0gMjUwCiAgICAgICAgIGFzc2VydCAwICAjIGZvciBk
ZW1vIHB1cnBvc2VzCiAKIFdlIGRlbGliZXJhdGVseSBpbnNlcnQgZmFpbGluZyBgYGFzc2VydCAw
YGAgc3RhdGVtZW50cyBpbiBvcmRlciB0bwotaW5zcGVjdCB3aGF0IGlzIGdvaW5nIG9uIGFuZCBj
YW4gbm93IHJ1biB0aGUgdGVzdHM6OgoraW5zcGVjdCB3aGF0IGlzIGdvaW5nIG9uIGFuZCBjYW4g
bm93IHJ1biB0aGUgdGVzdHM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0
ZXN0IHRlc3RfbW9kdWxlLnB5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qg
c2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3Jt
IGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAu
eC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9y
bSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0w
LngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9v
dGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAyIGl0ZW1zCiAKICAgICB0ZXN0
X21vZHVsZS5weSBGRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMTAwJV0KQEAgLTIxNSw5NCArMzEzLDEyMCBAQCBpbnNwZWN0IHdoYXQgaXMgZ29p
bmcgb24gYW5kIGNhbiBub3cgcnVuIHRoZSB0ZXN0czo6CiAgICAgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfZWhsbyBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KIAotICAgIHNtdHAgPSA8c210cGxpYi5TTVRQIG9i
amVjdCBhdCAweGRlYWRiZWVmPgorICAgIHNtdHBfY29ubmVjdGlvbiA9IDxzbXRwbGliLlNNVFAg
b2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAKLSAgICAgICAgZGVmIHRlc3RfZWhsbyhzbXRwKToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwLmVobG8oKQorICAgICAgICBkZWYgdGVzdF9l
aGxvKHNtdHBfY29ubmVjdGlvbik6CisgICAgICAgICAgICByZXNwb25zZSwgbXNnID0gc210cF9j
b25uZWN0aW9uLmVobG8oKQogICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlID09IDI1MAogICAg
ICAgICAgICAgYXNzZXJ0IGIic210cC5nbWFpbC5jb20iIGluIG1zZwogICAgID4gICAgICAgYXNz
ZXJ0IDAgICMgZm9yIGRlbW8gcHVycG9zZXMKICAgICBFICAgICAgIGFzc2VydCAwCiAKLSAgICB0
ZXN0X21vZHVsZS5weTo2OiBBc3NlcnRpb25FcnJvcgorICAgIHRlc3RfbW9kdWxlLnB5Ojc6IEFz
c2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9u
b29wIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCi0gICAgc210cCA9IDxzbXRw
bGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CisgICAgc210cF9jb25uZWN0aW9uID0gPHNt
dHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAotICAgICAgICBkZWYgdGVzdF9ub29w
KHNtdHApOgotICAgICAgICAgICAgcmVzcG9uc2UsIG1zZyA9IHNtdHAubm9vcCgpCisgICAgICAg
IGRlZiB0ZXN0X25vb3Aoc210cF9jb25uZWN0aW9uKToKKyAgICAgICAgICAgIHJlc3BvbnNlLCBt
c2cgPSBzbXRwX2Nvbm5lY3Rpb24ubm9vcCgpCiAgICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2Ug
PT0gMjUwCiAgICAgPiAgICAgICBhc3NlcnQgMCAgIyBmb3IgZGVtbyBwdXJwb3NlcwogICAgIEUg
ICAgICAgYXNzZXJ0IDAKIAotICAgIHRlc3RfbW9kdWxlLnB5OjExOiBBc3NlcnRpb25FcnJvcgot
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzID09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0X21vZHVsZS5weToxMzogQXNzZXJ0aW9u
RXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBp
bmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5
Ojp0ZXN0X2VobG8gLSBhc3NlcnQgMAorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6dGVzdF9u
b29wIC0gYXNzZXJ0IDAKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDIgZmFpbGVk
IGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFlvdSBzZWUgdGhlIHR3
byBgYGFzc2VydCAwYGAgZmFpbGluZyBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3UgY2FuIGFsc28g
c2VlCi10aGF0IHRoZSBzYW1lIChtb2R1bGUtc2NvcGVkKSBgYHNtdHBgYCBvYmplY3Qgd2FzIHBh
c3NlZCBpbnRvIHRoZSB0d28KLXRlc3QgZnVuY3Rpb25zIGJlY2F1c2UgcHl0ZXN0IHNob3dzIHRo
ZSBpbmNvbWluZyBhcmd1bWVudCB2YWx1ZXMgaW4gdGhlCi10cmFjZWJhY2suICBBcyBhIHJlc3Vs
dCwgdGhlIHR3byB0ZXN0IGZ1bmN0aW9ucyB1c2luZyBgYHNtdHBgYCBydW4gYXMKLXF1aWNrIGFz
IGEgc2luZ2xlIG9uZSBiZWNhdXNlIHRoZXkgcmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UuCit0aGF0
IHRoZSBzYW1lIChtb2R1bGUtc2NvcGVkKSBgYHNtdHBfY29ubmVjdGlvbmBgIG9iamVjdCB3YXMg
cGFzc2VkIGludG8gdGhlCit0d28gdGVzdCBmdW5jdGlvbnMgYmVjYXVzZSBweXRlc3Qgc2hvd3Mg
dGhlIGluY29taW5nIGFyZ3VtZW50IHZhbHVlcyBpbiB0aGUKK3RyYWNlYmFjay4gIEFzIGEgcmVz
dWx0LCB0aGUgdHdvIHRlc3QgZnVuY3Rpb25zIHVzaW5nIGBgc210cF9jb25uZWN0aW9uYGAgcnVu
CithcyBxdWljayBhcyBhIHNpbmdsZSBvbmUgYmVjYXVzZSB0aGV5IHJldXNlIHRoZSBzYW1lIGlu
c3RhbmNlLgogCi1JZiB5b3UgZGVjaWRlIHRoYXQgeW91IHJhdGhlciB3YW50IHRvIGhhdmUgYSBz
ZXNzaW9uLXNjb3BlZCBgYHNtdHBgYAorSWYgeW91IGRlY2lkZSB0aGF0IHlvdSByYXRoZXIgd2Fu
dCB0byBoYXZlIGEgc2Vzc2lvbi1zY29wZWQgYGBzbXRwX2Nvbm5lY3Rpb25gYAogaW5zdGFuY2Us
IHlvdSBjYW4gc2ltcGx5IGRlY2xhcmUgaXQ6CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAog
ICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCi0gICAgZGVmIHNtdHAoKToKKyAg
ICBkZWYgc210cF9jb25uZWN0aW9uKCk6CiAgICAgICAgICMgdGhlIHJldHVybmVkIGZpeHR1cmUg
dmFsdWUgd2lsbCBiZSBzaGFyZWQgZm9yCiAgICAgICAgICMgYWxsIHRlc3RzIG5lZWRpbmcgaXQK
ICAgICAgICAgLi4uCiAKLUZpbmFsbHksIHRoZSBgYGNsYXNzYGAgc2NvcGUgd2lsbCBpbnZva2Ug
dGhlIGZpeHR1cmUgb25jZSBwZXIgdGVzdCAqY2xhc3MqLgogCitGaXh0dXJlIHNjb3BlcworXl5e
Xl5eXl5eXl5eXl4KIAotSGlnaGVyLXNjb3BlZCBmaXh0dXJlcyBhcmUgaW5zdGFudGlhdGVkIGZp
cnN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpeHR1
cmVzIGFyZSBjcmVhdGVkIHdoZW4gZmlyc3QgcmVxdWVzdGVkIGJ5IGEgdGVzdCwgYW5kIGFyZSBk
ZXN0cm95ZWQgYmFzZWQgb24gdGhlaXIgYGBzY29wZWBgOgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAz
LjUKKyogYGBmdW5jdGlvbmBgOiB0aGUgZGVmYXVsdCBzY29wZSwgdGhlIGZpeHR1cmUgaXMgZGVz
dHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisqIGBgY2xhc3NgYDogdGhlIGZpeHR1cmUg
aXMgZGVzdHJveWVkIGR1cmluZyB0ZWFyZG93biBvZiB0aGUgbGFzdCB0ZXN0IGluIHRoZSBjbGFz
cy4KKyogYGBtb2R1bGVgYDogdGhlIGZpeHR1cmUgaXMgZGVzdHJveWVkIGR1cmluZyB0ZWFyZG93
biBvZiB0aGUgbGFzdCB0ZXN0IGluIHRoZSBtb2R1bGUuCisqIGBgcGFja2FnZWBgOiB0aGUgZml4
dHVyZSBpcyBkZXN0cm95ZWQgZHVyaW5nIHRlYXJkb3duIG9mIHRoZSBsYXN0IHRlc3QgaW4gdGhl
IHBhY2thZ2UuCisqIGBgc2Vzc2lvbmBgOiB0aGUgZml4dHVyZSBpcyBkZXN0cm95ZWQgYXQgdGhl
IGVuZCBvZiB0aGUgdGVzdCBzZXNzaW9uLgogCi1XaXRoaW4gYSBmdW5jdGlvbiByZXF1ZXN0IGZv
ciBmZWF0dXJlcywgZml4dHVyZSBvZiBoaWdoZXItc2NvcGVzIChzdWNoIGFzIGBgc2Vzc2lvbmBg
KSBhcmUgaW5zdGFudGlhdGVkIGZpcnN0IHRoYW4KLWxvd2VyLXNjb3BlZCBmaXh0dXJlcyAoc3Vj
aCBhcyBgYGZ1bmN0aW9uYGAgb3IgYGBjbGFzc2BgKS4gVGhlIHJlbGF0aXZlIG9yZGVyIG9mIGZp
eHR1cmVzIG9mIHNhbWUgc2NvcGUgZm9sbG93cwotdGhlIGRlY2xhcmVkIG9yZGVyIGluIHRoZSB0
ZXN0IGZ1bmN0aW9uIGFuZCBob25vdXJzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGZpeHR1cmVzLgor
Li4gbm90ZTo6CiAKLUNvbnNpZGVyIHRoZSBjb2RlIGJlbG93OgorICAgIFB5dGVzdCBvbmx5IGNh
Y2hlcyBvbmUgaW5zdGFuY2Ugb2YgYSBmaXh0dXJlIGF0IGEgdGltZSwgd2hpY2gKKyAgICBtZWFu
cyB0aGF0IHdoZW4gdXNpbmcgYSBwYXJhbWV0cml6ZWQgZml4dHVyZSwgcHl0ZXN0IG1heSBpbnZv
a2UgYSBmaXh0dXJlIG1vcmUgdGhhbiBvbmNlIGluCisgICAgdGhlIGdpdmVuIHNjb3BlLgorCisu
LiBfZHluYW1pYyBzY29wZToKKworRHluYW1pYyBzY29wZQorXl5eXl5eXl5eXl5eXgorCisuLiB2
ZXJzaW9uYWRkZWQ6OiA1LjIKKworSW4gc29tZSBjYXNlcywgeW91IG1pZ2h0IHdhbnQgdG8gY2hh
bmdlIHRoZSBzY29wZSBvZiB0aGUgZml4dHVyZSB3aXRob3V0IGNoYW5naW5nIHRoZSBjb2RlLgor
VG8gZG8gdGhhdCwgcGFzcyBhIGNhbGxhYmxlIHRvIGBgc2NvcGVgYC4gVGhlIGNhbGxhYmxlIG11
c3QgcmV0dXJuIGEgc3RyaW5nIHdpdGggYSB2YWxpZCBzY29wZQorYW5kIHdpbGwgYmUgZXhlY3V0
ZWQgb25seSBvbmNlIC0gZHVyaW5nIHRoZSBmaXh0dXJlIGRlZmluaXRpb24uIEl0IHdpbGwgYmUg
Y2FsbGVkIHdpdGggdHdvCitrZXl3b3JkIGFyZ3VtZW50cyAtIGBgZml4dHVyZV9uYW1lYGAgYXMg
YSBzdHJpbmcgYW5kIGBgY29uZmlnYGAgd2l0aCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0LgorCitU
aGlzIGNhbiBiZSBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBmaXh0dXJlcyB0
aGF0IG5lZWQgdGltZSBmb3Igc2V0dXAsIGxpa2Ugc3Bhd25pbmcKK2EgZG9ja2VyIGNvbnRhaW5l
ci4gWW91IGNhbiB1c2UgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudCB0byBjb250cm9sIHRoZSBz
Y29wZSBvZiB0aGUgc3Bhd25lZAorY29udGFpbmVycyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50
cy4gU2VlIHRoZSBleGFtcGxlIGJlbG93LgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAg
ICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQotICAgIGRlZiBzMSgpOgotICAgICAg
ICBwYXNzCisgICAgZGVmIGRldGVybWluZV9zY29wZShmaXh0dXJlX25hbWUsIGNvbmZpZyk6Cisg
ICAgICAgIGlmIGNvbmZpZy5nZXRvcHRpb24oIi0ta2VlcC1jb250YWluZXJzIiwgTm9uZSk6Cisg
ICAgICAgICAgICByZXR1cm4gInNlc3Npb24iCisgICAgICAgIHJldHVybiAiZnVuY3Rpb24iCiAK
IAotICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKLSAgICBkZWYgbTEoKToKLSAg
ICAgICAgcGFzcworICAgIEBweXRlc3QuZml4dHVyZShzY29wZT1kZXRlcm1pbmVfc2NvcGUpCisg
ICAgZGVmIGRvY2tlcl9jb250YWluZXIoKToKKyAgICAgICAgeWllbGQgc3Bhd25fY29udGFpbmVy
KCkKIAogCi0gICAgQHB5dGVzdC5maXh0dXJlCi0gICAgZGVmIGYxKHRtcGRpcik6Ci0gICAgICAg
IHBhc3MKIAorT3JkZXI6IEhpZ2hlci1zY29wZWQgZml4dHVyZXMgYXJlIGluc3RhbnRpYXRlZCBm
aXJzdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi0gICAgQHB5dGVzdC5maXh0dXJlCi0gICAgZGVmIGYyKCk6Ci0gICAgICAgIHBhc3MKIAog
Ci0gICAgZGVmIHRlc3RfZm9vKGYxLCBtMSwgZjIsIHMxKToKLSAgICAgICAgLi4uCitXaXRoaW4g
YSBmdW5jdGlvbiByZXF1ZXN0IGZvciBmaXh0dXJlcywgdGhvc2Ugb2YgaGlnaGVyLXNjb3BlcyAo
c3VjaCBhcyBgYHNlc3Npb25gYCkgYXJlIGluc3RhbnRpYXRlZCBiZWZvcmUKK2xvd2VyLXNjb3Bl
ZCBmaXh0dXJlcyAoc3VjaCBhcyBgYGZ1bmN0aW9uYGAgb3IgYGBjbGFzc2BgKS4gVGhlIHJlbGF0
aXZlIG9yZGVyIG9mIGZpeHR1cmVzIG9mIHNhbWUgc2NvcGUgZm9sbG93cwordGhlIGRlY2xhcmVk
IG9yZGVyIGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGFuZCBob25vdXJzIGRlcGVuZGVuY2llcyBiZXR3
ZWVuIGZpeHR1cmVzLiBBdXRvdXNlIGZpeHR1cmVzIHdpbGwgYmUKK2luc3RhbnRpYXRlZCBiZWZv
cmUgZXhwbGljaXRseSB1c2VkIGZpeHR1cmVzLgogCitDb25zaWRlciB0aGUgY29kZSBiZWxvdzoK
IAotVGhlIGZpeHR1cmVzIHJlcXVlc3RlZCBieSBgYHRlc3RfZm9vYGAgd2lsbCBiZSBpbnN0YW50
aWF0ZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKKy4uIGxpdGVyYWxpbmNsdWRlOjogZXhhbXBs
ZS9maXh0dXJlcy90ZXN0X2ZpeHR1cmVzX29yZGVyLnB5CisKK1RoZSBmaXh0dXJlcyByZXF1ZXN0
ZWQgYnkgYGB0ZXN0X29yZGVyYGAgd2lsbCBiZSBpbnN0YW50aWF0ZWQgaW4gdGhlIGZvbGxvd2lu
ZyBvcmRlcjoKIAogMS4gYGBzMWBgOiBpcyB0aGUgaGlnaGVzdC1zY29wZWQgZml4dHVyZSAoYGBz
ZXNzaW9uYGApLgogMi4gYGBtMWBgOiBpcyB0aGUgc2Vjb25kIGhpZ2hlc3Qtc2NvcGVkIGZpeHR1
cmUgKGBgbW9kdWxlYGApLgotMy4gYGB0bXBkaXJgYDogaXMgYSBgYGZ1bmN0aW9uYGAtc2NvcGVk
IGZpeHR1cmUsIHJlcXVpcmVkIGJ5IGBgZjFgYDogaXQgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVk
IGF0IHRoaXMgcG9pbnQKLSAgIGJlY2F1c2UgaXQgaXMgYSBkZXBlbmRlbmN5IG9mIGBgZjFgYC4K
LTQuIGBgZjFgYDogaXMgdGhlIGZpcnN0IGBgZnVuY3Rpb25gYC1zY29wZWQgZml4dHVyZSBpbiBg
YHRlc3RfZm9vYGAgcGFyYW1ldGVyIGxpc3QuCi01LiBgYGYyYGA6IGlzIHRoZSBsYXN0IGBgZnVu
Y3Rpb25gYC1zY29wZWQgZml4dHVyZSBpbiBgYHRlc3RfZm9vYGAgcGFyYW1ldGVyIGxpc3QuCisz
LiBgYGExYGA6IGlzIGEgYGBmdW5jdGlvbmBgLXNjb3BlZCBgYGF1dG91c2VgYCBmaXh0dXJlOiBp
dCB3aWxsIGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgb3RoZXIgZml4dHVyZXMKKyAgIHdpdGhpbiB0
aGUgc2FtZSBzY29wZS4KKzQuIGBgZjNgYDogaXMgYSBgYGZ1bmN0aW9uYGAtc2NvcGVkIGZpeHR1
cmUsIHJlcXVpcmVkIGJ5IGBgZjFgYDogaXQgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGF0IHRo
aXMgcG9pbnQKKzUuIGBgZjFgYDogaXMgdGhlIGZpcnN0IGBgZnVuY3Rpb25gYC1zY29wZWQgZml4
dHVyZSBpbiBgYHRlc3Rfb3JkZXJgYCBwYXJhbWV0ZXIgbGlzdC4KKzYuIGBgZjJgYDogaXMgdGhl
IGxhc3QgYGBmdW5jdGlvbmBgLXNjb3BlZCBmaXh0dXJlIGluIGBgdGVzdF9vcmRlcmBgIHBhcmFt
ZXRlciBsaXN0LgogCiAKIC4uIF9gZmluYWxpemF0aW9uYDoKQEAgLTMyMywyNCArNDQ3LDI5IEBA
IHRoZSBjb2RlIGFmdGVyIHRoZSAqeWllbGQqIHN0YXRlbWVudCBzZXJ2ZXMgYXMgdGhlIHRlYXJk
b3duIGNvZGU6CiAKIAogICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKLSAgICBk
ZWYgc210cCgpOgotICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKCJzbXRwLmdtYWlsLmNvbSIs
IDU4NywgdGltZW91dD01KQotICAgICAgICB5aWVsZCBzbXRwICAjIHByb3ZpZGUgdGhlIGZpeHR1
cmUgdmFsdWUKKyAgICBkZWYgc210cF9jb25uZWN0aW9uKCk6CisgICAgICAgIHNtdHBfY29ubmVj
dGlvbiA9IHNtdHBsaWIuU01UUCgic210cC5nbWFpbC5jb20iLCA1ODcsIHRpbWVvdXQ9NSkKKyAg
ICAgICAgeWllbGQgc210cF9jb25uZWN0aW9uICAjIHByb3ZpZGUgdGhlIGZpeHR1cmUgdmFsdWUK
ICAgICAgICAgcHJpbnQoInRlYXJkb3duIHNtdHAiKQotICAgICAgICBzbXRwLmNsb3NlKCkKKyAg
ICAgICAgc210cF9jb25uZWN0aW9uLmNsb3NlKCkKIAogVGhlIGBgcHJpbnRgYCBhbmQgYGBzbXRw
LmNsb3NlKClgYCBzdGF0ZW1lbnRzIHdpbGwgZXhlY3V0ZSB3aGVuIHRoZSBsYXN0IHRlc3QgaW4K
IHRoZSBtb2R1bGUgaGFzIGZpbmlzaGVkIGV4ZWN1dGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUgZXhj
ZXB0aW9uIHN0YXR1cyBvZiB0aGUKIHRlc3RzLgogCi1MZXQncyBleGVjdXRlIGl0OjoKK0xldCdz
IGV4ZWN1dGUgaXQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1z
IC1xIC0tdGI9bm8KICAgICBGRnRlYXJkb3duIHNtdHAKIAotICAgIDIgZmFpbGVkIGluIDAuMTIg
c2Vjb25kcworICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5
IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9tb2R1bGUu
cHk6OnRlc3RfZWhsbyAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0
X25vb3AgLSBhc3NlcnQgMAorICAgIDIgZmFpbGVkIGluIDAuMTJzCiAKLVdlIHNlZSB0aGF0IHRo
ZSBgYHNtdHBgYCBpbnN0YW5jZSBpcyBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIHR3bworV2Ugc2VlIHRo
YXQgdGhlIGBgc210cF9jb25uZWN0aW9uYGAgaW5zdGFuY2UgaXMgZmluYWxpemVkIGFmdGVyIHRo
ZSB0d28KIHRlc3RzIGZpbmlzaGVkIGV4ZWN1dGlvbi4gIE5vdGUgdGhhdCBpZiB3ZSBkZWNvcmF0
ZWQgb3VyIGZpeHR1cmUKIGZ1bmN0aW9uIHdpdGggYGBzY29wZT0nZnVuY3Rpb24nYGAgdGhlbiBm
aXh0dXJlIHNldHVwIGFuZCBjbGVhbnVwIHdvdWxkCiBvY2N1ciBhcm91bmQgZWFjaCBzaW5nbGUg
dGVzdC4gIEluIGVpdGhlciBjYXNlIHRoZSB0ZXN0CkBAIC0zNTgsMTUgKzQ4Nyw0MyBAQCBOb3Rl
IHRoYXQgd2UgY2FuIGFsc28gc2VhbWxlc3NseSB1c2UgdGhlIGBgeWllbGRgYCBzeW50YXggd2l0
aCBgYHdpdGhgYCBzdGF0ZW1lbgogCiAKICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVs
ZSIpCi0gICAgZGVmIHNtdHAoKToKLSAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoInNtdHAuZ21h
aWwuY29tIiwgNTg3LCB0aW1lb3V0PTUpIGFzIHNtdHA6Ci0gICAgICAgICAgICB5aWVsZCBzbXRw
ICAjIHByb3ZpZGUgdGhlIGZpeHR1cmUgdmFsdWUKKyAgICBkZWYgc210cF9jb25uZWN0aW9uKCk6
CisgICAgICAgIHdpdGggc210cGxpYi5TTVRQKCJzbXRwLmdtYWlsLmNvbSIsIDU4NywgdGltZW91
dD01KSBhcyBzbXRwX2Nvbm5lY3Rpb246CisgICAgICAgICAgICB5aWVsZCBzbXRwX2Nvbm5lY3Rp
b24gICMgcHJvdmlkZSB0aGUgZml4dHVyZSB2YWx1ZQogCiAKLVRoZSBgYHNtdHBgYCBjb25uZWN0
aW9uIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVkIGV4ZWN1dGlvbgotYmVj
YXVzZSB0aGUgYGBzbXRwYGAgb2JqZWN0IGF1dG9tYXRpY2FsbHkgY2xvc2VzIHdoZW4KK1RoZSBg
YHNtdHBfY29ubmVjdGlvbmBgIGNvbm5lY3Rpb24gd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgdGhlIHRl
c3QgZmluaXNoZWQKK2V4ZWN1dGlvbiBiZWNhdXNlIHRoZSBgYHNtdHBfY29ubmVjdGlvbmBgIG9i
amVjdCBhdXRvbWF0aWNhbGx5IGNsb3NlcyB3aGVuCiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IGVu
ZHMuCiAKK1VzaW5nIHRoZSBjb250ZXh0bGliLkV4aXRTdGFjayBjb250ZXh0IG1hbmFnZXIgZmlu
YWxpemVycyB3aWxsIGFsd2F5cyBiZSBjYWxsZWQKK3JlZ2FyZGxlc3MgaWYgdGhlIGZpeHR1cmUg
KnNldHVwKiBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb24uIFRoaXMgaXMgaGFuZHkgdG8gcHJvcGVy
bHkKK2Nsb3NlIGFsbCByZXNvdXJjZXMgY3JlYXRlZCBieSBhIGZpeHR1cmUgZXZlbiBpZiBvbmUg
b2YgdGhlbSBmYWlscyB0byBiZSBjcmVhdGVkL2FjcXVpcmVkOgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCisKKyAgICAjIGNvbnRlbnQgb2YgdGVzdF95aWVsZDMucHkKKworICAgIGltcG9ydCBj
b250ZXh0bGliCisKKyAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgIEBjb250ZXh0bGliLmNvbnRl
eHRtYW5hZ2VyCisgICAgZGVmIGNvbm5lY3QocG9ydCk6CisgICAgICAgIC4uLiAgIyBjcmVhdGUg
Y29ubmVjdGlvbgorICAgICAgICB5aWVsZAorICAgICAgICAuLi4gICMgY2xvc2UgY29ubmVjdGlv
bgorCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgZXF1aXBtZW50cygpOgorICAgICAg
ICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICB5aWVs
ZCBbc3RhY2suZW50ZXJfY29udGV4dChjb25uZWN0KHBvcnQpKSBmb3IgcG9ydCBpbiAoIkMxIiwg
IkMzIiwgIkMyOCIpXQorCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgaWYgYGAiQzI4ImBgIGZhaWxz
IHdpdGggYW4gZXhjZXB0aW9uLCBgYCJDMSJgYCBhbmQgYGAiQzMiYGAgd2lsbCBzdGlsbAorYmUg
cHJvcGVybHkgY2xvc2VkLgorCiBOb3RlIHRoYXQgaWYgYW4gZXhjZXB0aW9uIGhhcHBlbnMgZHVy
aW5nIHRoZSAqc2V0dXAqIGNvZGUgKGJlZm9yZSB0aGUgYGB5aWVsZGBgIGtleXdvcmQpLCB0aGUK
ICp0ZWFyZG93biogY29kZSAoYWZ0ZXIgdGhlIGBgeWllbGRgYCkgd2lsbCBub3QgYmUgY2FsbGVk
LgogCkBAIC0zNzQsNyArNTMxLDcgQEAgQW4gYWx0ZXJuYXRpdmUgb3B0aW9uIGZvciBleGVjdXRp
bmcgKnRlYXJkb3duKiBjb2RlIGlzIHRvCiBtYWtlIHVzZSBvZiB0aGUgYGBhZGRmaW5hbGl6ZXJg
YCBtZXRob2Qgb2YgdGhlIGByZXF1ZXN0LWNvbnRleHRgXyBvYmplY3QgdG8gcmVnaXN0ZXIKIGZp
bmFsaXphdGlvbiBmdW5jdGlvbnMuCiAKLUhlcmUncyB0aGUgYGBzbXRwYGAgZml4dHVyZSBjaGFu
Z2VkIHRvIHVzZSBgYGFkZGZpbmFsaXplcmBgIGZvciBjbGVhbnVwOgorSGVyZSdzIHRoZSBgYHNt
dHBfY29ubmVjdGlvbmBgIGZpeHR1cmUgY2hhbmdlZCB0byB1c2UgYGBhZGRmaW5hbGl6ZXJgYCBm
b3IgY2xlYW51cDoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCkBAIC0zODQsMzggKzU0MSw1
MCBAQCBIZXJlJ3MgdGhlIGBgc210cGBgIGZpeHR1cmUgY2hhbmdlZCB0byB1c2UgYGBhZGRmaW5h
bGl6ZXJgYCBmb3IgY2xlYW51cDoKIAogCiAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1
bGUiKQotICAgIGRlZiBzbXRwKHJlcXVlc3QpOgotICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQ
KCJzbXRwLmdtYWlsLmNvbSIsIDU4NywgdGltZW91dD01KQorICAgIGRlZiBzbXRwX2Nvbm5lY3Rp
b24ocmVxdWVzdCk6CisgICAgICAgIHNtdHBfY29ubmVjdGlvbiA9IHNtdHBsaWIuU01UUCgic210
cC5nbWFpbC5jb20iLCA1ODcsIHRpbWVvdXQ9NSkKIAogICAgICAgICBkZWYgZmluKCk6Ci0gICAg
ICAgICAgICBwcmludCgidGVhcmRvd24gc210cCIpCi0gICAgICAgICAgICBzbXRwLmNsb3NlKCkK
KyAgICAgICAgICAgIHByaW50KCJ0ZWFyZG93biBzbXRwX2Nvbm5lY3Rpb24iKQorICAgICAgICAg
ICAgc210cF9jb25uZWN0aW9uLmNsb3NlKCkKIAogICAgICAgICByZXF1ZXN0LmFkZGZpbmFsaXpl
cihmaW4pCi0gICAgICAgIHJldHVybiBzbXRwICAjIHByb3ZpZGUgdGhlIGZpeHR1cmUgdmFsdWUK
KyAgICAgICAgcmV0dXJuIHNtdHBfY29ubmVjdGlvbiAgIyBwcm92aWRlIHRoZSBmaXh0dXJlIHZh
bHVlCiAKIAotQm90aCBgYHlpZWxkYGAgYW5kIGBgYWRkZmluYWxpemVyYGAgbWV0aG9kcyB3b3Jr
IHNpbWlsYXJseSBieSBjYWxsaW5nIHRoZWlyIGNvZGUgYWZ0ZXIgdGhlIHRlc3QKLWVuZHMsIGJ1
dCBgYGFkZGZpbmFsaXplcmBgIGhhcyB0d28ga2V5IGRpZmZlcmVuY2VzIG92ZXIgYGB5aWVsZGBg
OgorSGVyZSdzIHRoZSBgYGVxdWlwbWVudHNgYCBmaXh0dXJlIGNoYW5nZWQgdG8gdXNlIGBgYWRk
ZmluYWxpemVyYGAgZm9yIGNsZWFudXA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotMS4g
SXQgaXMgcG9zc2libGUgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZmluYWxpemVyIGZ1bmN0aW9ucy4K
KyAgICAjIGNvbnRlbnQgb2YgdGVzdF95aWVsZDMucHkKIAotMi4gRmluYWxpemVycyB3aWxsIGFs
d2F5cyBiZSBjYWxsZWQgcmVnYXJkbGVzcyBpZiB0aGUgZml4dHVyZSAqc2V0dXAqIGNvZGUgcmFp
c2VzIGFuIGV4Y2VwdGlvbi4KLSAgIFRoaXMgaXMgaGFuZHkgdG8gcHJvcGVybHkgY2xvc2UgYWxs
IHJlc291cmNlcyBjcmVhdGVkIGJ5IGEgZml4dHVyZSBldmVuIGlmIG9uZSBvZiB0aGVtCi0gICBm
YWlscyB0byBiZSBjcmVhdGVkL2FjcXVpcmVkOjoKKyAgICBpbXBvcnQgY29udGV4dGxpYgorICAg
IGltcG9ydCBmdW5jdG9vbHMKIAotICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgZGVm
IGVxdWlwbWVudHMocmVxdWVzdCk6Ci0gICAgICAgICAgICByID0gW10KLSAgICAgICAgICAgIGZv
ciBwb3J0IGluICgnQzEnLCAnQzMnLCAnQzI4Jyk6Ci0gICAgICAgICAgICAgICAgZXF1aXAgPSBj
b25uZWN0KHBvcnQpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRmaW5hbGl6ZXIoZXF1aXAu
ZGlzY29ubmVjdCkKLSAgICAgICAgICAgICAgICByLmFwcGVuZChlcXVpcCkKLSAgICAgICAgICAg
IHJldHVybiByCisgICAgaW1wb3J0IHB5dGVzdAogCi0gICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwg
aWYgYGAiQzI4ImBgIGZhaWxzIHdpdGggYW4gZXhjZXB0aW9uLCBgYCJDMSJgYCBhbmQgYGAiQzMi
YGAgd2lsbCBzdGlsbAotICAgYmUgcHJvcGVybHkgY2xvc2VkLiBPZiBjb3Vyc2UsIGlmIGFuIGV4
Y2VwdGlvbiBoYXBwZW5zIGJlZm9yZSB0aGUgZmluYWxpemUgZnVuY3Rpb24gaXMKLSAgIHJlZ2lz
dGVyZWQgdGhlbiBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZC4KKworICAgIEBjb250ZXh0bGliLmNv
bnRleHRtYW5hZ2VyCisgICAgZGVmIGNvbm5lY3QocG9ydCk6CisgICAgICAgIC4uLiAgIyBjcmVh
dGUgY29ubmVjdGlvbgorICAgICAgICB5aWVsZAorICAgICAgICAuLi4gICMgY2xvc2UgY29ubmVj
dGlvbgorCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgZXF1aXBtZW50cyhyZXF1ZXN0
KToKKyAgICAgICAgciA9IFtdCisgICAgICAgIGZvciBwb3J0IGluICgiQzEiLCAiQzMiLCAiQzI4
Iik6CisgICAgICAgICAgICBjbSA9IGNvbm5lY3QocG9ydCkKKyAgICAgICAgICAgIGVxdWlwID0g
Y20uX19lbnRlcl9fKCkKKyAgICAgICAgICAgIHJlcXVlc3QuYWRkZmluYWxpemVyKGZ1bmN0b29s
cy5wYXJ0aWFsKGNtLl9fZXhpdF9fLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHIu
YXBwZW5kKGVxdWlwKQorICAgICAgICByZXR1cm4gcgorCisKK0JvdGggYGB5aWVsZGBgIGFuZCBg
YGFkZGZpbmFsaXplcmBgIG1ldGhvZHMgd29yayBzaW1pbGFybHkgYnkgY2FsbGluZyB0aGVpciBj
b2RlIGFmdGVyIHRoZSB0ZXN0CitlbmRzLiBPZiBjb3Vyc2UsIGlmIGFuIGV4Y2VwdGlvbiBoYXBw
ZW5zIGJlZm9yZSB0aGUgZmluYWxpemUgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCB0aGVuIGl0Cit3
aWxsIG5vdCBiZSBleGVjdXRlZC4KIAogCiAuLiBfYHJlcXVlc3QtY29udGV4dGA6CkBAIC00MjMs
NTggKzU5MiwxMDQgQEAgZW5kcywgYnV0IGBgYWRkZmluYWxpemVyYGAgaGFzIHR3byBrZXkgZGlm
ZmVyZW5jZXMgb3ZlciBgYHlpZWxkYGA6CiBGaXh0dXJlcyBjYW4gaW50cm9zcGVjdCB0aGUgcmVx
dWVzdGluZyB0ZXN0IGNvbnRleHQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRml4dHVyZSBmdW5jdGlvbnMgY2FuIGFjY2Vw
dCB0aGUgOnB5OmNsYXNzOmByZXF1ZXN0IDxGaXh0dXJlUmVxdWVzdD5gIG9iamVjdAorRml4dHVy
ZSBmdW5jdGlvbnMgY2FuIGFjY2VwdCB0aGUgOnB5OmNsYXNzOmByZXF1ZXN0IDxfcHl0ZXN0LmZp
eHR1cmVzLkZpeHR1cmVSZXF1ZXN0PmAgb2JqZWN0CiB0byBpbnRyb3NwZWN0IHRoZSAicmVxdWVz
dGluZyIgdGVzdCBmdW5jdGlvbiwgY2xhc3Mgb3IgbW9kdWxlIGNvbnRleHQuCi1GdXJ0aGVyIGV4
dGVuZGluZyB0aGUgcHJldmlvdXMgYGBzbXRwYGAgZml4dHVyZSBleGFtcGxlLCBsZXQncwotcmVh
ZCBhbiBvcHRpb25hbCBzZXJ2ZXIgVVJMIGZyb20gdGhlIHRlc3QgbW9kdWxlIHdoaWNoIHVzZXMg
b3VyIGZpeHR1cmU6OgorRnVydGhlciBleHRlbmRpbmcgdGhlIHByZXZpb3VzIGBgc210cF9jb25u
ZWN0aW9uYGAgZml4dHVyZSBleGFtcGxlLCBsZXQncworcmVhZCBhbiBvcHRpb25hbCBzZXJ2ZXIg
VVJMIGZyb20gdGhlIHRlc3QgbW9kdWxlIHdoaWNoIHVzZXMgb3VyIGZpeHR1cmU6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogICAgIGlt
cG9ydCBweXRlc3QKICAgICBpbXBvcnQgc210cGxpYgogCisKICAgICBAcHl0ZXN0LmZpeHR1cmUo
c2NvcGU9Im1vZHVsZSIpCi0gICAgZGVmIHNtdHAocmVxdWVzdCk6CisgICAgZGVmIHNtdHBfY29u
bmVjdGlvbihyZXF1ZXN0KToKICAgICAgICAgc2VydmVyID0gZ2V0YXR0cihyZXF1ZXN0Lm1vZHVs
ZSwgInNtdHBzZXJ2ZXIiLCAic210cC5nbWFpbC5jb20iKQotICAgICAgICBzbXRwID0gc210cGxp
Yi5TTVRQKHNlcnZlciwgNTg3LCB0aW1lb3V0PTUpCi0gICAgICAgIHlpZWxkIHNtdHAKLSAgICAg
ICAgcHJpbnQgKCJmaW5hbGl6aW5nICVzICglcykiICUgKHNtdHAsIHNlcnZlcikpCi0gICAgICAg
IHNtdHAuY2xvc2UoKQorICAgICAgICBzbXRwX2Nvbm5lY3Rpb24gPSBzbXRwbGliLlNNVFAoc2Vy
dmVyLCA1ODcsIHRpbWVvdXQ9NSkKKyAgICAgICAgeWllbGQgc210cF9jb25uZWN0aW9uCisgICAg
ICAgIHByaW50KCJmaW5hbGl6aW5nIHt9ICh7fSkiLmZvcm1hdChzbXRwX2Nvbm5lY3Rpb24sIHNl
cnZlcikpCisgICAgICAgIHNtdHBfY29ubmVjdGlvbi5jbG9zZSgpCiAKIFdlIHVzZSB0aGUgYGBy
ZXF1ZXN0Lm1vZHVsZWBgIGF0dHJpYnV0ZSB0byBvcHRpb25hbGx5IG9idGFpbiBhbgogYGBzbXRw
c2VydmVyYGAgYXR0cmlidXRlIGZyb20gdGhlIHRlc3QgbW9kdWxlLiAgSWYgd2UganVzdCBleGVj
dXRlCi1hZ2Fpbiwgbm90aGluZyBtdWNoIGhhcyBjaGFuZ2VkOjoKK2FnYWluLCBub3RoaW5nIG11
Y2ggaGFzIGNoYW5nZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0
IC1zIC1xIC0tdGI9bm8KICAgICBGRmZpbmFsaXppbmcgPHNtdHBsaWIuU01UUCBvYmplY3QgYXQg
MHhkZWFkYmVlZj4gKHNtdHAuZ21haWwuY29tKQogCi0gICAgMiBmYWlsZWQgaW4gMC4xMiBzZWNv
bmRzCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5m
byA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6
dGVzdF9laGxvIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgdGVzdF9tb2R1bGUucHk6OnRlc3Rfbm9v
cCAtIGFzc2VydCAwCisgICAgMiBmYWlsZWQgaW4gMC4xMnMKIAogTGV0J3MgcXVpY2tseSBjcmVh
dGUgYW5vdGhlciB0ZXN0IG1vZHVsZSB0aGF0IGFjdHVhbGx5IHNldHMgdGhlCi1zZXJ2ZXIgVVJM
IGluIGl0cyBtb2R1bGUgbmFtZXNwYWNlOjoKK3NlcnZlciBVUkwgaW4gaXRzIG1vZHVsZSBuYW1l
c3BhY2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0
X2Fub3RoZXJzbXRwLnB5CiAKICAgICBzbXRwc2VydmVyID0gIm1haWwucHl0aG9uLm9yZyIgICMg
d2lsbCBiZSByZWFkIGJ5IHNtdHAgZml4dHVyZQogCi0gICAgZGVmIHRlc3Rfc2hvd2hlbG8oc210
cCk6Ci0gICAgICAgIGFzc2VydCAwLCBzbXRwLmhlbG8oKQogCi1SdW5uaW5nIGl0OjoKKyAgICBk
ZWYgdGVzdF9zaG93aGVsbyhzbXRwX2Nvbm5lY3Rpb24pOgorICAgICAgICBhc3NlcnQgMCwgc210
cF9jb25uZWN0aW9uLmhlbG8oKQorCitSdW5uaW5nIGl0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0
ZXN0CiAKICAgICAkIHB5dGVzdCAtcXEgLS10Yj1zaG9ydCB0ZXN0X2Fub3RoZXJzbXRwLnB5CiAg
ICAgRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWzEwMCVdCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X3Nob3doZWxvIF9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KLSAgICB0ZXN0X2Fub3RoZXJzbXRwLnB5OjU6IGluIHRlc3Rfc2hvd2hl
bG8KLSAgICAgICAgYXNzZXJ0IDAsIHNtdHAuaGVsbygpCisgICAgdGVzdF9hbm90aGVyc210cC5w
eTo2OiBpbiB0ZXN0X3Nob3doZWxvCisgICAgICAgIGFzc2VydCAwLCBzbXRwX2Nvbm5lY3Rpb24u
aGVsbygpCiAgICAgRSAgIEFzc2VydGlvbkVycm9yOiAoMjUwLCBiJ21haWwucHl0aG9uLm9yZycp
CiAgICAgRSAgIGFzc2VydCAwCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXB0dXJl
ZCBzdGRvdXQgdGVhcmRvd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIGZpbmFsaXpp
bmcgPHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVlZj4gKG1haWwucHl0aG9uLm9yZykK
KyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09
PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfYW5vdGhlcnNtdHAucHk6
OnRlc3Rfc2hvd2hlbG8gLSBBc3NlcnRpb25FcnJvcjogKDI1MCwgYidtYWlsLi4uLgogCi12b2ls
YSEgVGhlIGBgc210cGBgIGZpeHR1cmUgZnVuY3Rpb24gcGlja2VkIHVwIG91ciBtYWlsIHNlcnZl
ciBuYW1lCit2b2lsYSEgVGhlIGBgc210cF9jb25uZWN0aW9uYGAgZml4dHVyZSBmdW5jdGlvbiBw
aWNrZWQgdXAgb3VyIG1haWwgc2VydmVyIG5hbWUKIGZyb20gdGhlIG1vZHVsZSBuYW1lc3BhY2Uu
CiAKKy4uIF9gdXNpbmctbWFya2Vyc2A6CisKK1VzaW5nIG1hcmtlcnMgdG8gcGFzcyBkYXRhIHRv
IGZpeHR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSA6cHk6Y2xhc3M6YHJlcXVlc3QgPF9weXRlc3Qu
Zml4dHVyZXMuRml4dHVyZVJlcXVlc3Q+YCBvYmplY3QsIGEgZml4dHVyZSBjYW4gYWxzbyBhY2Nl
c3MKK21hcmtlcnMgd2hpY2ggYXJlIGFwcGxpZWQgdG8gYSB0ZXN0IGZ1bmN0aW9uLiBUaGlzIGNh
biBiZSB1c2VmdWwgdG8gcGFzcyBkYXRhCitpbnRvIGEgZml4dHVyZSBmcm9tIGEgdGVzdDoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgaW1wb3J0IHB5dGVzdAorCisKKyAgICBAcHl0
ZXN0LmZpeHR1cmUKKyAgICBkZWYgZml4dChyZXF1ZXN0KToKKyAgICAgICAgbWFya2VyID0gcmVx
dWVzdC5ub2RlLmdldF9jbG9zZXN0X21hcmtlcigiZml4dF9kYXRhIikKKyAgICAgICAgaWYgbWFy
a2VyIGlzIE5vbmU6CisgICAgICAgICAgICAjIEhhbmRsZSBtaXNzaW5nIG1hcmtlciBpbiBzb21l
IHdheS4uLgorICAgICAgICAgICAgZGF0YSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGRhdGEgPSBtYXJrZXIuYXJnc1swXQorCisgICAgICAgICMgRG8gc29tZXRoaW5nIHdpdGgg
dGhlIGRhdGEKKyAgICAgICAgcmV0dXJuIGRhdGEKKworCisgICAgQHB5dGVzdC5tYXJrLmZpeHRf
ZGF0YSg0MikKKyAgICBkZWYgdGVzdF9maXh0KGZpeHQpOgorICAgICAgICBhc3NlcnQgZml4dCA9
PSA0MgorCiAuLiBfYGZpeHR1cmUtZmFjdG9yeWA6CiAKIEZhY3RvcmllcyBhcyBmaXh0dXJlcwpA
QCAtNDg1LDE2ICs3MDAsMTQgQEAgb2YgYSBmaXh0dXJlIGlzIG5lZWRlZCBtdWx0aXBsZSB0aW1l
cyBpbiBhIHNpbmdsZSB0ZXN0LiBJbnN0ZWFkIG9mIHJldHVybmluZwogZGF0YSBkaXJlY3RseSwg
dGhlIGZpeHR1cmUgaW5zdGVhZCByZXR1cm5zIGEgZnVuY3Rpb24gd2hpY2ggZ2VuZXJhdGVzIHRo
ZSBkYXRhLgogVGhpcyBmdW5jdGlvbiBjYW4gdGhlbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMg
aW4gdGhlIHRlc3QuCiAKLUZhY3RvcmllcyBjYW4gaGF2ZSBoYXZlIHBhcmFtZXRlcnMgYXMgbmVl
ZGVkOjoKK0ZhY3RvcmllcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIGFzIG5lZWRlZDoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCiAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAgZGVmIG1ha2VfY3Vz
dG9tZXJfcmVjb3JkKCk6Ci0KICAgICAgICAgZGVmIF9tYWtlX2N1c3RvbWVyX3JlY29yZChuYW1l
KToKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiBuYW1lLAot
ICAgICAgICAgICAgICAgICJvcmRlcnMiOiBbXQotICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHsibmFtZSI6IG5hbWUsICJvcmRlcnMiOiBbXX0KIAogICAgICAgICByZXR1cm4gX21h
a2VfY3VzdG9tZXJfcmVjb3JkCiAKQEAgLTUwNCw3ICs3MTcsOSBAQCBGYWN0b3JpZXMgY2FuIGhh
dmUgaGF2ZSBwYXJhbWV0ZXJzIGFzIG5lZWRlZDo6CiAgICAgICAgIGN1c3RvbWVyXzIgPSBtYWtl
X2N1c3RvbWVyX3JlY29yZCgiTWlrZSIpCiAgICAgICAgIGN1c3RvbWVyXzMgPSBtYWtlX2N1c3Rv
bWVyX3JlY29yZCgiTWVyZWRpdGgiKQogCi1JZiB0aGUgZGF0YSBjcmVhdGVkIGJ5IHRoZSBmYWN0
b3J5IHJlcXVpcmVzIG1hbmFnaW5nLCB0aGUgZml4dHVyZSBjYW4gdGFrZSBjYXJlIG9mIHRoYXQ6
OgorSWYgdGhlIGRhdGEgY3JlYXRlZCBieSB0aGUgZmFjdG9yeSByZXF1aXJlcyBtYW5hZ2luZywg
dGhlIGZpeHR1cmUgY2FuIHRha2UgY2FyZSBvZiB0aGF0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKICAgICBAcHl0ZXN0LmZpeHR1cmUKICAgICBkZWYgbWFrZV9jdXN0b21lcl9yZWNvcmQo
KToKQEAgLTUzNSw5MCArNzUwLDk5IEBAIFBhcmFtZXRyaXppbmcgZml4dHVyZXMKIAogRml4dHVy
ZSBmdW5jdGlvbnMgY2FuIGJlIHBhcmFtZXRyaXplZCBpbiB3aGljaCBjYXNlIHRoZXkgd2lsbCBi
ZSBjYWxsZWQKIG11bHRpcGxlIHRpbWVzLCBlYWNoIHRpbWUgZXhlY3V0aW5nIHRoZSBzZXQgb2Yg
ZGVwZW5kZW50IHRlc3RzLCBpLiBlLiB0aGUKLXRlc3RzIHRoYXQgZGVwZW5kIG9uIHRoaXMgZml4
dHVyZS4gIFRlc3QgZnVuY3Rpb25zIGRvIHVzdWFsbHkgbm90IG5lZWQKK3Rlc3RzIHRoYXQgZGVw
ZW5kIG9uIHRoaXMgZml4dHVyZS4gIFRlc3QgZnVuY3Rpb25zIHVzdWFsbHkgZG8gbm90IG5lZWQK
IHRvIGJlIGF3YXJlIG9mIHRoZWlyIHJlLXJ1bm5pbmcuICBGaXh0dXJlIHBhcmFtZXRyaXphdGlv
biBoZWxwcyB0bwogd3JpdGUgZXhoYXVzdGl2ZSBmdW5jdGlvbmFsIHRlc3RzIGZvciBjb21wb25l
bnRzIHdoaWNoIHRoZW1zZWx2ZXMgY2FuIGJlCiBjb25maWd1cmVkIGluIG11bHRpcGxlIHdheXMu
CiAKIEV4dGVuZGluZyB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2UgY2FuIGZsYWcgdGhlIGZpeHR1
cmUgdG8gY3JlYXRlIHR3bwotYGBzbXRwYGAgZml4dHVyZSBpbnN0YW5jZXMgd2hpY2ggd2lsbCBj
YXVzZSBhbGwgdGVzdHMgdXNpbmcgdGhlIGZpeHR1cmUKK2Bgc210cF9jb25uZWN0aW9uYGAgZml4
dHVyZSBpbnN0YW5jZXMgd2hpY2ggd2lsbCBjYXVzZSBhbGwgdGVzdHMgdXNpbmcgdGhlIGZpeHR1
cmUKIHRvIHJ1biB0d2ljZS4gIFRoZSBmaXh0dXJlIGZ1bmN0aW9uIGdldHMgYWNjZXNzIHRvIGVh
Y2ggcGFyYW1ldGVyCi10aHJvdWdoIHRoZSBzcGVjaWFsIDpweTpjbGFzczpgcmVxdWVzdCA8Rml4
dHVyZVJlcXVlc3Q+YCBvYmplY3Q6OgordGhyb3VnaCB0aGUgc3BlY2lhbCA6cHk6Y2xhc3M6YHJl
cXVlc3QgPEZpeHR1cmVSZXF1ZXN0PmAgb2JqZWN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKICAgICBpbXBvcnQgcHl0ZXN0CiAgICAg
aW1wb3J0IHNtdHBsaWIKIAotICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwKLSAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zPVsic210cC5nbWFpbC5jb20iLCAibWFpbC5weXRob24u
b3JnIl0pCi0gICAgZGVmIHNtdHAocmVxdWVzdCk6Ci0gICAgICAgIHNtdHAgPSBzbXRwbGliLlNN
VFAocmVxdWVzdC5wYXJhbSwgNTg3LCB0aW1lb3V0PTUpCi0gICAgICAgIHlpZWxkIHNtdHAKLSAg
ICAgICAgcHJpbnQgKCJmaW5hbGl6aW5nICVzIiAlIHNtdHApCi0gICAgICAgIHNtdHAuY2xvc2Uo
KQorCisgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiLCBwYXJhbXM9WyJzbXRwLmdt
YWlsLmNvbSIsICJtYWlsLnB5dGhvbi5vcmciXSkKKyAgICBkZWYgc210cF9jb25uZWN0aW9uKHJl
cXVlc3QpOgorICAgICAgICBzbXRwX2Nvbm5lY3Rpb24gPSBzbXRwbGliLlNNVFAocmVxdWVzdC5w
YXJhbSwgNTg3LCB0aW1lb3V0PTUpCisgICAgICAgIHlpZWxkIHNtdHBfY29ubmVjdGlvbgorICAg
ICAgICBwcmludCgiZmluYWxpemluZyB7fSIuZm9ybWF0KHNtdHBfY29ubmVjdGlvbikpCisgICAg
ICAgIHNtdHBfY29ubmVjdGlvbi5jbG9zZSgpCiAKIFRoZSBtYWluIGNoYW5nZSBpcyB0aGUgZGVj
bGFyYXRpb24gb2YgYGBwYXJhbXNgYCB3aXRoCi06cHk6ZnVuYzpgQHB5dGVzdC5maXh0dXJlIDxf
cHl0ZXN0LnB5dGhvbi5maXh0dXJlPmAsIGEgbGlzdCBvZiB2YWx1ZXMKKzpweTpmdW5jOmBAcHl0
ZXN0LmZpeHR1cmUgPHB5dGVzdC5maXh0dXJlPmAsIGEgbGlzdCBvZiB2YWx1ZXMKIGZvciBlYWNo
IG9mIHdoaWNoIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIHdpbGwgZXhlY3V0ZSBhbmQgY2FuIGFjY2Vz
cwogYSB2YWx1ZSB2aWEgYGByZXF1ZXN0LnBhcmFtYGAuICBObyB0ZXN0IGZ1bmN0aW9uIGNvZGUg
bmVlZHMgdG8gY2hhbmdlLgotU28gbGV0J3MganVzdCBkbyBhbm90aGVyIHJ1bjo6CitTbyBsZXQn
cyBqdXN0IGRvIGFub3RoZXIgcnVuOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAk
IHB5dGVzdCAtcSB0ZXN0X21vZHVsZS5weQogICAgIEZGRkYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogICAgID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KICAgICBfX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9laGxv
W3NtdHAuZ21haWwuY29tXSBfX19fX19fX19fX19fX19fX19fX19fX19fCiAKLSAgICBzbXRwID0g
PHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVlZj4KKyAgICBzbXRwX2Nvbm5lY3Rpb24g
PSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCi0gICAgICAgIGRlZiB0ZXN0
X2VobG8oc210cCk6Ci0gICAgICAgICAgICByZXNwb25zZSwgbXNnID0gc210cC5laGxvKCkKKyAg
ICAgICAgZGVmIHRlc3RfZWhsbyhzbXRwX2Nvbm5lY3Rpb24pOgorICAgICAgICAgICAgcmVzcG9u
c2UsIG1zZyA9IHNtdHBfY29ubmVjdGlvbi5laGxvKCkKICAgICAgICAgICAgIGFzc2VydCByZXNw
b25zZSA9PSAyNTAKICAgICAgICAgICAgIGFzc2VydCBiInNtdHAuZ21haWwuY29tIiBpbiBtc2cK
ICAgICA+ICAgICAgIGFzc2VydCAwICAjIGZvciBkZW1vIHB1cnBvc2VzCiAgICAgRSAgICAgICBh
c3NlcnQgMAogCi0gICAgdGVzdF9tb2R1bGUucHk6NjogQXNzZXJ0aW9uRXJyb3IKKyAgICB0ZXN0
X21vZHVsZS5weTo3OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fX19f
XyB0ZXN0X25vb3Bbc210cC5nbWFpbC5jb21dIF9fX19fX19fX19fX19fX19fX19fX19fX18KIAot
ICAgIHNtdHAgPSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgorICAgIHNtdHBf
Y29ubmVjdGlvbiA9IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAKLSAgICAg
ICAgZGVmIHRlc3Rfbm9vcChzbXRwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRw
Lm5vb3AoKQorICAgICAgICBkZWYgdGVzdF9ub29wKHNtdHBfY29ubmVjdGlvbik6CisgICAgICAg
ICAgICByZXNwb25zZSwgbXNnID0gc210cF9jb25uZWN0aW9uLm5vb3AoKQogICAgICAgICAgICAg
YXNzZXJ0IHJlc3BvbnNlID09IDI1MAogICAgID4gICAgICAgYXNzZXJ0IDAgICMgZm9yIGRlbW8g
cHVycG9zZXMKICAgICBFICAgICAgIGFzc2VydCAwCiAKLSAgICB0ZXN0X21vZHVsZS5weToxMTog
QXNzZXJ0aW9uRXJyb3IKKyAgICB0ZXN0X21vZHVsZS5weToxMzogQXNzZXJ0aW9uRXJyb3IKICAg
ICBfX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9laGxvW21haWwucHl0aG9uLm9yZ10gX19f
X19fX19fX19fX19fX19fX19fX19fCiAKLSAgICBzbXRwID0gPHNtdHBsaWIuU01UUCBvYmplY3Qg
YXQgMHhkZWFkYmVlZj4KKyAgICBzbXRwX2Nvbm5lY3Rpb24gPSA8c210cGxpYi5TTVRQIG9iamVj
dCBhdCAweGRlYWRiZWVmPgogCi0gICAgICAgIGRlZiB0ZXN0X2VobG8oc210cCk6Ci0gICAgICAg
ICAgICByZXNwb25zZSwgbXNnID0gc210cC5laGxvKCkKKyAgICAgICAgZGVmIHRlc3RfZWhsbyhz
bXRwX2Nvbm5lY3Rpb24pOgorICAgICAgICAgICAgcmVzcG9uc2UsIG1zZyA9IHNtdHBfY29ubmVj
dGlvbi5laGxvKCkKICAgICAgICAgICAgIGFzc2VydCByZXNwb25zZSA9PSAyNTAKICAgICA+ICAg
ICAgIGFzc2VydCBiInNtdHAuZ21haWwuY29tIiBpbiBtc2cKLSAgICBFICAgICAgIEFzc2VydGlv
bkVycm9yOiBhc3NlcnQgYidzbXRwLmdtYWlsLmNvbScgaW4gYidtYWlsLnB5dGhvbi5vcmdcblBJ
UEVMSU5JTkdcblNJWkUgNTEyMDAwMDBcbkVUUk5cblNUQVJUVExTXG5BVVRIIERJR0VTVC1NRDUg
TlRMTSBDUkFNLU1ENVxuRU5IQU5DRURTVEFUVVNDT0RFU1xuOEJJVE1JTUVcbkRTTlxuU01UUFVU
RjgnCisgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IGInc210cC5nbWFpbC5jb20n
IGluIGInbWFpbC5weXRob24ub3JnXG5QSVBFTElOSU5HXG5TSVpFIDUxMjAwMDAwXG5FVFJOXG5T
VEFSVFRMU1xuQVVUSCBESUdFU1QtTUQ1IE5UTE0gQ1JBTS1NRDVcbkVOSEFOQ0VEU1RBVFVTQ09E
RVNcbjhCSVRNSU1FXG5EU05cblNNVFBVVEY4XG5DSFVOS0lORycKIAotICAgIHRlc3RfbW9kdWxl
LnB5OjU6IEFzc2VydGlvbkVycm9yCisgICAgdGVzdF9tb2R1bGUucHk6NjogQXNzZXJ0aW9uRXJy
b3IKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXB0dXJlZCBzdGRvdXQgc2V0dXAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgZmluYWxpemluZyA8c210cGxpYi5TTVRQ
IG9iamVjdCBhdCAweGRlYWRiZWVmPgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0
X25vb3BbbWFpbC5weXRob24ub3JnXSBfX19fX19fX19fX19fX19fX19fX19fX18KIAotICAgIHNt
dHAgPSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgorICAgIHNtdHBfY29ubmVj
dGlvbiA9IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAKLSAgICAgICAgZGVm
IHRlc3Rfbm9vcChzbXRwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwLm5vb3Ao
KQorICAgICAgICBkZWYgdGVzdF9ub29wKHNtdHBfY29ubmVjdGlvbik6CisgICAgICAgICAgICBy
ZXNwb25zZSwgbXNnID0gc210cF9jb25uZWN0aW9uLm5vb3AoKQogICAgICAgICAgICAgYXNzZXJ0
IHJlc3BvbnNlID09IDI1MAogICAgID4gICAgICAgYXNzZXJ0IDAgICMgZm9yIGRlbW8gcHVycG9z
ZXMKICAgICBFICAgICAgIGFzc2VydCAwCiAKLSAgICB0ZXN0X21vZHVsZS5weToxMTogQXNzZXJ0
aW9uRXJyb3IKKyAgICB0ZXN0X21vZHVsZS5weToxMzogQXNzZXJ0aW9uRXJyb3IKICAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0ZG91dCB0ZWFyZG93biAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICAgZmluYWxpemluZyA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAw
eGRlYWRiZWVmPgotICAgIDQgZmFpbGVkIGluIDAuMTIgc2Vjb25kcworICAgID09PT09PT09PT09
PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfZWhsb1tzbXRwLmdtYWls
LmNvbV0gLSBhc3NlcnQgMAorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6dGVzdF9ub29wW3Nt
dHAuZ21haWwuY29tXSAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0
X2VobG9bbWFpbC5weXRob24ub3JnXSAtIEFzc2VydGlvbkVycm9yOiBhc3Nlci4uLgorICAgIEZB
SUxFRCB0ZXN0X21vZHVsZS5weTo6dGVzdF9ub29wW21haWwucHl0aG9uLm9yZ10gLSBhc3NlcnQg
MAorICAgIDQgZmFpbGVkIGluIDAuMTJzCiAKIFdlIHNlZSB0aGF0IG91ciB0d28gdGVzdCBmdW5j
dGlvbnMgZWFjaCByYW4gdHdpY2UsIGFnYWluc3QgdGhlIGRpZmZlcmVudAotYGBzbXRwYGAgaW5z
dGFuY2VzLiAgTm90ZSBhbHNvLCB0aGF0IHdpdGggdGhlIGBgbWFpbC5weXRob24ub3JnYGAKK2Bg
c210cF9jb25uZWN0aW9uYGAgaW5zdGFuY2VzLiAgTm90ZSBhbHNvLCB0aGF0IHdpdGggdGhlIGBg
bWFpbC5weXRob24ub3JnYGAKIGNvbm5lY3Rpb24gdGhlIHNlY29uZCB0ZXN0IGZhaWxzIGluIGBg
dGVzdF9laGxvYGAgYmVjYXVzZSBhCiBkaWZmZXJlbnQgc2VydmVyIHN0cmluZyBpcyBleHBlY3Rl
ZCB0aGFuIHdoYXQgYXJyaXZlZC4KIApAQCAtNjI5LDYyICs4NTMsNzMgQEAgYmUgdXNlZCB3aXRo
IGBgLWtgYCB0byBzZWxlY3Qgc3BlY2lmaWMgY2FzZXMgdG8gcnVuLCBhbmQgdGhleSB3aWxsCiBh
bHNvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBjYXNlIHdoZW4gb25lIGlzIGZhaWxpbmcuICBSdW5u
aW5nIHB5dGVzdAogd2l0aCBgYC0tY29sbGVjdC1vbmx5YGAgd2lsbCBzaG93IHRoZSBnZW5lcmF0
ZWQgSURzLgogCi1OdW1iZXJzLCBzdHJpbmdzLCBib29sZWFucyBhbmQgTm9uZSB3aWxsIGhhdmUg
dGhlaXIgdXN1YWwgc3RyaW5nCitOdW1iZXJzLCBzdHJpbmdzLCBib29sZWFucyBhbmQgYGBOb25l
YGAgd2lsbCBoYXZlIHRoZWlyIHVzdWFsIHN0cmluZwogcmVwcmVzZW50YXRpb24gdXNlZCBpbiB0
aGUgdGVzdCBJRC4gRm9yIG90aGVyIG9iamVjdHMsIHB5dGVzdCB3aWxsCiBtYWtlIGEgc3RyaW5n
IGJhc2VkIG9uIHRoZSBhcmd1bWVudCBuYW1lLiAgSXQgaXMgcG9zc2libGUgdG8gY3VzdG9taXNl
CiB0aGUgc3RyaW5nIHVzZWQgaW4gYSB0ZXN0IElEIGZvciBhIGNlcnRhaW4gZml4dHVyZSB2YWx1
ZSBieSB1c2luZyB0aGUKLWBgaWRzYGAga2V5d29yZCBhcmd1bWVudDo6CitgYGlkc2BgIGtleXdv
cmQgYXJndW1lbnQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIyBjb250ZW50IG9m
IHRlc3RfaWRzLnB5CiAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgQHB5dGVzdC5maXh0dXJlKHBh
cmFtcz1bMCwgMV0sIGlkcz1bInNwYW0iLCAiaGFtIl0pCiAgICBkZWYgYShyZXF1ZXN0KToKICAg
ICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQogCisKICAgIGRlZiB0ZXN0X2EoYSk6CiAgICAgICAg
cGFzcwogCisKICAgIGRlZiBpZGZuKGZpeHR1cmVfdmFsdWUpOgogICAgICAgIGlmIGZpeHR1cmVf
dmFsdWUgPT0gMDoKICAgICAgICAgICAgcmV0dXJuICJlZ2dzIgogICAgICAgIGVsc2U6CiAgICAg
ICAgICAgIHJldHVybiBOb25lCiAKKwogICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bMCwgMV0s
IGlkcz1pZGZuKQogICAgZGVmIGIocmVxdWVzdCk6CiAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFy
YW0KIAorCiAgICBkZWYgdGVzdF9iKGIpOgogICAgICAgIHBhc3MKIAogVGhlIGFib3ZlIHNob3dz
IGhvdyBgYGlkc2BgIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3MgdG8gdXNlIG9yCiBh
IGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGZpeHR1cmUgdmFsdWUgYW5k
IHRoZW4KIGhhcyB0byByZXR1cm4gYSBzdHJpbmcgdG8gdXNlLiAgSW4gdGhlIGxhdHRlciBjYXNl
IGlmIHRoZSBmdW5jdGlvbgotcmV0dXJuIGBgTm9uZWBgIHRoZW4gcHl0ZXN0J3MgYXV0by1nZW5l
cmF0ZWQgSUQgd2lsbCBiZSB1c2VkLgorcmV0dXJucyBgYE5vbmVgYCB0aGVuIHB5dGVzdCdzIGF1
dG8tZ2VuZXJhdGVkIElEIHdpbGwgYmUgdXNlZC4KIAotUnVubmluZyB0aGUgYWJvdmUgdGVzdHMg
cmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIHRlc3QgSURzIGJlaW5nIHVzZWQ6OgorUnVubmluZyB0
aGUgYWJvdmUgdGVzdHMgcmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIHRlc3QgSURzIGJlaW5nIHVz
ZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgJCBweXRlc3QgLS1jb2xsZWN0LW9u
bHkKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICByb290ZGlyOiAk
UkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMu
eC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgIGNhY2hlZGlyOiAk
UFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElS
CiAgICBjb2xsZWN0ZWQgMTAgaXRlbXMKLSAgIDxNb2R1bGUgJ3Rlc3RfYW5vdGhlcnNtdHAucHkn
PgotICAgICA8RnVuY3Rpb24gJ3Rlc3Rfc2hvd2hlbG9bc210cC5nbWFpbC5jb21dJz4KLSAgICAg
PEZ1bmN0aW9uICd0ZXN0X3Nob3doZWxvW21haWwucHl0aG9uLm9yZ10nPgotICAgPE1vZHVsZSAn
dGVzdF9pZHMucHknPgotICAgICA8RnVuY3Rpb24gJ3Rlc3RfYVtzcGFtXSc+Ci0gICAgIDxGdW5j
dGlvbiAndGVzdF9hW2hhbV0nPgotICAgICA8RnVuY3Rpb24gJ3Rlc3RfYltlZ2dzXSc+Ci0gICAg
IDxGdW5jdGlvbiAndGVzdF9iWzFdJz4KLSAgIDxNb2R1bGUgJ3Rlc3RfbW9kdWxlLnB5Jz4KLSAg
ICAgPEZ1bmN0aW9uICd0ZXN0X2VobG9bc210cC5nbWFpbC5jb21dJz4KLSAgICAgPEZ1bmN0aW9u
ICd0ZXN0X25vb3Bbc210cC5nbWFpbC5jb21dJz4KLSAgICAgPEZ1bmN0aW9uICd0ZXN0X2VobG9b
bWFpbC5weXRob24ub3JnXSc+Ci0gICAgIDxGdW5jdGlvbiAndGVzdF9ub29wW21haWwucHl0aG9u
Lm9yZ10nPgotCi0gICA9PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4x
MiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIDxNb2R1bGUgdGVzdF9hbm90
aGVyc210cC5weT4KKyAgICAgPEZ1bmN0aW9uIHRlc3Rfc2hvd2hlbG9bc210cC5nbWFpbC5jb21d
PgorICAgICA8RnVuY3Rpb24gdGVzdF9zaG93aGVsb1ttYWlsLnB5dGhvbi5vcmddPgorICAgPE1v
ZHVsZSB0ZXN0X2lkcy5weT4KKyAgICAgPEZ1bmN0aW9uIHRlc3RfYVtzcGFtXT4KKyAgICAgPEZ1
bmN0aW9uIHRlc3RfYVtoYW1dPgorICAgICA8RnVuY3Rpb24gdGVzdF9iW2VnZ3NdPgorICAgICA8
RnVuY3Rpb24gdGVzdF9iWzFdPgorICAgPE1vZHVsZSB0ZXN0X21vZHVsZS5weT4KKyAgICAgPEZ1
bmN0aW9uIHRlc3RfZWhsb1tzbXRwLmdtYWlsLmNvbV0+CisgICAgIDxGdW5jdGlvbiB0ZXN0X25v
b3Bbc210cC5nbWFpbC5jb21dPgorICAgICA8RnVuY3Rpb24gdGVzdF9laGxvW21haWwucHl0aG9u
Lm9yZ10+CisgICAgIDxGdW5jdGlvbiB0ZXN0X25vb3BbbWFpbC5weXRob24ub3JnXT4KKworICAg
PT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09PT09
PT09PT09PT09PT09PT09PT09PQogCiAuLiBfYGZpeHR1cmUtcGFyYW1ldHJpemUtbWFya3NgOgog
CkBAIC02OTQsODIgKzkyOSw5NiBAQCBVc2luZyBtYXJrcyB3aXRoIHBhcmFtZXRyaXplZCBmaXh0
dXJlcwogOmZ1bmM6YHB5dGVzdC5wYXJhbWAgY2FuIGJlIHVzZWQgdG8gYXBwbHkgbWFya3MgaW4g
dmFsdWVzIHNldHMgb2YgcGFyYW1ldHJpemVkIGZpeHR1cmVzIGluIHRoZSBzYW1lIHdheQogdGhh
dCB0aGV5IGNhbiBiZSB1c2VkIHdpdGggOnJlZjpgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplIDxA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemU+YC4KIAotRXhhbXBsZTo6CitFeGFtcGxlOgorCisuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9maXh0dXJlX21hcmtz
LnB5CiAgICAgaW1wb3J0IHB5dGVzdAorCisKICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsw
LCAxLCBweXRlc3QucGFyYW0oMiwgbWFya3M9cHl0ZXN0Lm1hcmsuc2tpcCldKQogICAgIGRlZiBk
YXRhX3NldChyZXF1ZXN0KToKICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KIAorCiAgICAg
ZGVmIHRlc3RfZGF0YShkYXRhX3NldCk6CiAgICAgICAgIHBhc3MKIAotUnVubmluZyB0aGlzIHRl
c3Qgd2lsbCAqc2tpcCogdGhlIGludm9jYXRpb24gb2YgYGBkYXRhX3NldGBgIHdpdGggdmFsdWUg
YGAyYGA6OgorUnVubmluZyB0aGlzIHRlc3Qgd2lsbCAqc2tpcCogdGhlIGludm9jYXRpb24gb2Yg
YGBkYXRhX3NldGBgIHdpdGggdmFsdWUgYGAyYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QK
IAogICAgICQgcHl0ZXN0IHRlc3RfZml4dHVyZV9tYXJrcy5weSAtdgogICAgID09PT09PT09PT09
PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngu
eSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uMy41
Ci0gICAgY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1Q
RElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRo
b24KKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3Rk
aXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgMyBpdGVt
cwogCiAgICAgdGVzdF9maXh0dXJlX21hcmtzLnB5Ojp0ZXN0X2RhdGFbMF0gUEFTU0VEICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyAzMyVdCiAgICAgdGVzdF9maXh0dXJlX21hcmtzLnB5Ojp0
ZXN0X2RhdGFbMV0gUEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA2NiVdCiAgICAg
dGVzdF9maXh0dXJlX21hcmtzLnB5Ojp0ZXN0X2RhdGFbMl0gU0tJUFBFRCAgICAgICAgICAgICAg
ICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09PT09PT09IDIgcGFzc2VkLCAx
IHNraXBwZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09
PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQsIDEgc2tpcHBlZCBpbiAwLjEycyA9PT09PT09PT09
PT09PT09PT09PT09PQogCiAuLiBfYGludGVyZGVwZW5kZW50IGZpeHR1cmVzYDoKIAogTW9kdWxh
cml0eTogdXNpbmcgZml4dHVyZXMgZnJvbSBhIGZpeHR1cmUgZnVuY3Rpb24KIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91IGNh
biBub3Qgb25seSB1c2UgZml4dHVyZXMgaW4gdGVzdCBmdW5jdGlvbnMgYnV0IGZpeHR1cmUgZnVu
Y3Rpb25zCitJbiBhZGRpdGlvbiB0byB1c2luZyBmaXh0dXJlcyBpbiB0ZXN0IGZ1bmN0aW9ucywg
Zml4dHVyZSBmdW5jdGlvbnMKIGNhbiB1c2Ugb3RoZXIgZml4dHVyZXMgdGhlbXNlbHZlcy4gIFRo
aXMgY29udHJpYnV0ZXMgdG8gYSBtb2R1bGFyIGRlc2lnbgogb2YgeW91ciBmaXh0dXJlcyBhbmQg
YWxsb3dzIHJlLXVzZSBvZiBmcmFtZXdvcmstc3BlY2lmaWMgZml4dHVyZXMgYWNyb3NzCiBtYW55
IHByb2plY3RzLiAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UgY2FuIGV4dGVuZCB0aGUgcHJldmlv
dXMgZXhhbXBsZQogYW5kIGluc3RhbnRpYXRlIGFuIG9iamVjdCBgYGFwcGBgIHdoZXJlIHdlIHN0
aWNrIHRoZSBhbHJlYWR5IGRlZmluZWQKLWBgc210cGBgIHJlc291cmNlIGludG8gaXQ6OgorYGBz
bXRwX2Nvbm5lY3Rpb25gYCByZXNvdXJjZSBpbnRvIGl0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9hcHBzZXR1cC5weQogCiAgICAgaW1wb3J0IHB5
dGVzdAogCi0gICAgY2xhc3MgQXBwKG9iamVjdCk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzbXRwKToKLSAgICAgICAgICAgIHNlbGYuc210cCA9IHNtdHAKKworICAgIGNsYXNzIEFwcDoK
KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNtdHBfY29ubmVjdGlvbik6CisgICAgICAgICAg
ICBzZWxmLnNtdHBfY29ubmVjdGlvbiA9IHNtdHBfY29ubmVjdGlvbgorCiAKICAgICBAcHl0ZXN0
LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCi0gICAgZGVmIGFwcChzbXRwKToKLSAgICAgICAgcmV0
dXJuIEFwcChzbXRwKQorICAgIGRlZiBhcHAoc210cF9jb25uZWN0aW9uKToKKyAgICAgICAgcmV0
dXJuIEFwcChzbXRwX2Nvbm5lY3Rpb24pCisKIAotICAgIGRlZiB0ZXN0X3NtdHBfZXhpc3RzKGFw
cCk6Ci0gICAgICAgIGFzc2VydCBhcHAuc210cAorICAgIGRlZiB0ZXN0X3NtdHBfY29ubmVjdGlv
bl9leGlzdHMoYXBwKToKKyAgICAgICAgYXNzZXJ0IGFwcC5zbXRwX2Nvbm5lY3Rpb24KIAogSGVy
ZSB3ZSBkZWNsYXJlIGFuIGBgYXBwYGAgZml4dHVyZSB3aGljaCByZWNlaXZlcyB0aGUgcHJldmlv
dXNseSBkZWZpbmVkCi1gYHNtdHBgYCBmaXh0dXJlIGFuZCBpbnN0YW50aWF0ZXMgYW4gYGBBcHBg
YCBvYmplY3Qgd2l0aCBpdC4gIExldCdzIHJ1biBpdDo6CitgYHNtdHBfY29ubmVjdGlvbmBgIGZp
eHR1cmUgYW5kIGluc3RhbnRpYXRlcyBhbiBgYEFwcGBgIG9iamVjdCB3aXRoIGl0LiAgTGV0J3Mg
cnVuIGl0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtdiB0ZXN0
X2FwcHNldHVwLnB5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lv
biBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4
IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0t
ICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5dGVzdF9jYWNo
ZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0g
bGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54
LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BS
RUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNv
bGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAyIGl0ZW1zCiAKLSAgICB0ZXN0X2FwcHNldHVwLnB5Ojp0
ZXN0X3NtdHBfZXhpc3RzW3NtdHAuZ21haWwuY29tXSBQQVNTRUQgICAgICAgICAgICBbIDUwJV0K
LSAgICB0ZXN0X2FwcHNldHVwLnB5Ojp0ZXN0X3NtdHBfZXhpc3RzW21haWwucHl0aG9uLm9yZ10g
UEFTU0VEICAgICAgICAgICBbMTAwJV0KKyAgICB0ZXN0X2FwcHNldHVwLnB5Ojp0ZXN0X3NtdHBf
Y29ubmVjdGlvbl9leGlzdHNbc210cC5nbWFpbC5jb21dIFBBU1NFRCBbIDUwJV0KKyAgICB0ZXN0
X2FwcHNldHVwLnB5Ojp0ZXN0X3NtdHBfY29ubmVjdGlvbl9leGlzdHNbbWFpbC5weXRob24ub3Jn
XSBQQVNTRUQgWzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IDIgcGFzc2Vk
IGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PSAyIHBhc3NlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQogCi1EdWUgdG8gdGhlIHBhcmFtZXRyaXphdGlvbiBvZiBgYHNtdHBgYCB0aGUg
dGVzdCB3aWxsIHJ1biB0d2ljZSB3aXRoIHR3bworRHVlIHRvIHRoZSBwYXJhbWV0cml6YXRpb24g
b2YgYGBzbXRwX2Nvbm5lY3Rpb25gYCwgdGhlIHRlc3Qgd2lsbCBydW4gdHdpY2Ugd2l0aCB0d28K
IGRpZmZlcmVudCBgYEFwcGBgIGluc3RhbmNlcyBhbmQgcmVzcGVjdGl2ZSBzbXRwIHNlcnZlcnMu
ICBUaGVyZSBpcyBubwotbmVlZCBmb3IgdGhlIGBgYXBwYGAgZml4dHVyZSB0byBiZSBhd2FyZSBv
ZiB0aGUgYGBzbXRwYGAgcGFyYW1ldHJpemF0aW9uCi1hcyBweXRlc3Qgd2lsbCBmdWxseSBhbmFs
eXNlIHRoZSBmaXh0dXJlIGRlcGVuZGVuY3kgZ3JhcGguCituZWVkIGZvciB0aGUgYGBhcHBgYCBm
aXh0dXJlIHRvIGJlIGF3YXJlIG9mIHRoZSBgYHNtdHBfY29ubmVjdGlvbmBgCitwYXJhbWV0cml6
YXRpb24gYmVjYXVzZSBweXRlc3Qgd2lsbCBmdWxseSBhbmFseXNlIHRoZSBmaXh0dXJlIGRlcGVu
ZGVuY3kgZ3JhcGguCiAKLU5vdGUsIHRoYXQgdGhlIGBgYXBwYGAgZml4dHVyZSBoYXMgYSBzY29w
ZSBvZiBgYG1vZHVsZWBgIGFuZCB1c2VzIGEKLW1vZHVsZS1zY29wZWQgYGBzbXRwYGAgZml4dHVy
ZS4gIFRoZSBleGFtcGxlIHdvdWxkIHN0aWxsIHdvcmsgaWYgYGBzbXRwYGAKLXdhcyBjYWNoZWQg
b24gYSBgYHNlc3Npb25gYCBzY29wZTogaXQgaXMgZmluZSBmb3IgZml4dHVyZXMgdG8gdXNlCitO
b3RlIHRoYXQgdGhlIGBgYXBwYGAgZml4dHVyZSBoYXMgYSBzY29wZSBvZiBgYG1vZHVsZWBgIGFu
ZCB1c2VzIGEKK21vZHVsZS1zY29wZWQgYGBzbXRwX2Nvbm5lY3Rpb25gYCBmaXh0dXJlLiAgVGhl
IGV4YW1wbGUgd291bGQgc3RpbGwgd29yayBpZgorYGBzbXRwX2Nvbm5lY3Rpb25gYCB3YXMgY2Fj
aGVkIG9uIGEgYGBzZXNzaW9uYGAgc2NvcGU6IGl0IGlzIGZpbmUgZm9yIGZpeHR1cmVzIHRvIHVz
ZQogImJyb2FkZXIiIHNjb3BlZCBmaXh0dXJlcyBidXQgbm90IHRoZSBvdGhlciB3YXkgcm91bmQ6
CiBBIHNlc3Npb24tc2NvcGVkIGZpeHR1cmUgY291bGQgbm90IHVzZSBhIG1vZHVsZS1zY29wZWQg
b25lIGluIGEKIG1lYW5pbmdmdWwgd2F5LgpAQCAtNzg4LDQyICsxMDM3LDUzIEBAIGZpcnN0IGV4
ZWN1dGUgd2l0aCBvbmUgaW5zdGFuY2UgYW5kIHRoZW4gZmluYWxpemVycyBhcmUgY2FsbGVkCiBi
ZWZvcmUgdGhlIG5leHQgZml4dHVyZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgQW1vbmcgb3RoZXIg
dGhpbmdzLAogdGhpcyBlYXNlcyB0ZXN0aW5nIG9mIGFwcGxpY2F0aW9ucyB3aGljaCBjcmVhdGUg
YW5kIHVzZSBnbG9iYWwgc3RhdGUuCiAKLVRoZSBmb2xsb3dpbmcgZXhhbXBsZSB1c2VzIHR3byBw
YXJhbWV0cml6ZWQgZml4dHVyZSwgb25lIG9mIHdoaWNoIGlzCitUaGUgZm9sbG93aW5nIGV4YW1w
bGUgdXNlcyB0d28gcGFyYW1ldHJpemVkIGZpeHR1cmVzLCBvbmUgb2Ygd2hpY2ggaXMKIHNjb3Bl
ZCBvbiBhIHBlci1tb2R1bGUgYmFzaXMsIGFuZCBhbGwgdGhlIGZ1bmN0aW9ucyBwZXJmb3JtIGBg
cHJpbnRgYCBjYWxscwotdG8gc2hvdyB0aGUgc2V0dXAvdGVhcmRvd24gZmxvdzo6Cit0byBzaG93
IHRoZSBzZXR1cC90ZWFyZG93biBmbG93OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAg
ICAjIGNvbnRlbnQgb2YgdGVzdF9tb2R1bGUucHkKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAg
IEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgcGFyYW1zPVsibW9kMSIsICJtb2QyIl0p
CiAgICAgZGVmIG1vZGFyZyhyZXF1ZXN0KToKICAgICAgICAgcGFyYW0gPSByZXF1ZXN0LnBhcmFt
Ci0gICAgICAgIHByaW50ICgiICBTRVRVUCBtb2RhcmcgJXMiICUgcGFyYW0pCisgICAgICAgIHBy
aW50KCIgIFNFVFVQIG1vZGFyZyIsIHBhcmFtKQogICAgICAgICB5aWVsZCBwYXJhbQotICAgICAg
ICBwcmludCAoIiAgVEVBUkRPV04gbW9kYXJnICVzIiAlIHBhcmFtKQorICAgICAgICBwcmludCgi
ICBURUFSRE9XTiBtb2RhcmciLCBwYXJhbSkKKwogCi0gICAgQHB5dGVzdC5maXh0dXJlKHNjb3Bl
PSJmdW5jdGlvbiIsIHBhcmFtcz1bMSwyXSkKKyAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ImZ1
bmN0aW9uIiwgcGFyYW1zPVsxLCAyXSkKICAgICBkZWYgb3RoZXJhcmcocmVxdWVzdCk6CiAgICAg
ICAgIHBhcmFtID0gcmVxdWVzdC5wYXJhbQotICAgICAgICBwcmludCAoIiAgU0VUVVAgb3RoZXJh
cmcgJXMiICUgcGFyYW0pCisgICAgICAgIHByaW50KCIgIFNFVFVQIG90aGVyYXJnIiwgcGFyYW0p
CiAgICAgICAgIHlpZWxkIHBhcmFtCi0gICAgICAgIHByaW50ICgiICBURUFSRE9XTiBvdGhlcmFy
ZyAlcyIgJSBwYXJhbSkKKyAgICAgICAgcHJpbnQoIiAgVEVBUkRPV04gb3RoZXJhcmciLCBwYXJh
bSkKKwogCiAgICAgZGVmIHRlc3RfMChvdGhlcmFyZyk6Ci0gICAgICAgIHByaW50ICgiICBSVU4g
dGVzdDAgd2l0aCBvdGhlcmFyZyAlcyIgJSBvdGhlcmFyZykKKyAgICAgICAgcHJpbnQoIiAgUlVO
IHRlc3QwIHdpdGggb3RoZXJhcmciLCBvdGhlcmFyZykKKworCiAgICAgZGVmIHRlc3RfMShtb2Rh
cmcpOgotICAgICAgICBwcmludCAoIiAgUlVOIHRlc3QxIHdpdGggbW9kYXJnICVzIiAlIG1vZGFy
ZykKKyAgICAgICAgcHJpbnQoIiAgUlVOIHRlc3QxIHdpdGggbW9kYXJnIiwgbW9kYXJnKQorCisK
ICAgICBkZWYgdGVzdF8yKG90aGVyYXJnLCBtb2RhcmcpOgotICAgICAgICBwcmludCAoIiAgUlVO
IHRlc3QyIHdpdGggb3RoZXJhcmcgJXMgYW5kIG1vZGFyZyAlcyIgJSAob3RoZXJhcmcsIG1vZGFy
ZykpCisgICAgICAgIHByaW50KCIgIFJVTiB0ZXN0MiB3aXRoIG90aGVyYXJnIHt9IGFuZCBtb2Rh
cmcge30iLmZvcm1hdChvdGhlcmFyZywgbW9kYXJnKSkKKwogCitMZXQncyBydW4gdGhlIHRlc3Rz
IGluIHZlcmJvc2UgbW9kZSBhbmQgd2l0aCBsb29raW5nIGF0IHRoZSBwcmludC1vdXRwdXQ6CiAK
LUxldCdzIHJ1biB0aGUgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIGFuZCB3aXRoIGxvb2tpbmcgYXQg
dGhlIHByaW50LW91dHB1dDo6CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVz
dCAtdiAtcyB0ZXN0X21vZHVsZS5weQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0
ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uMy41Ci0gICAgY2FjaGVkaXI6IC5w
eXRlc3RfY2FjaGUKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAg
IHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwg
cGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBjYWNoZWRpcjog
JFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBE
SVIKICAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgOCBpdGVtcwogCiAgICAgdGVzdF9tb2R1
bGUucHk6OnRlc3RfMFsxXSAgIFNFVFVQIG90aGVyYXJnIDEKQEAgLTg1OSw3ICsxMTE5LDcgQEAg
TGV0J3MgcnVuIHRoZSB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUgYW5kIHdpdGggbG9va2luZyBhdCB0
aGUgcHJpbnQtb3V0cHV0OjoKICAgICAgIFRFQVJET1dOIG1vZGFyZyBtb2QyCiAKIAotICAgID09
PT09PT09PT09PT09PT09PT09PT09PT0gOCBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDggcGFz
c2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFlvdSBjYW4gc2Vl
IHRoYXQgdGhlIHBhcmFtZXRyaXplZCBtb2R1bGUtc2NvcGVkIGBgbW9kYXJnYGAgcmVzb3VyY2Ug
Y2F1c2VkIGFuCiBvcmRlcmluZyBvZiB0ZXN0IGV4ZWN1dGlvbiB0aGF0IGxlYWQgdG8gdGhlIGZl
d2VzdCBwb3NzaWJsZSAiYWN0aXZlIiByZXNvdXJjZXMuCkBAIC04NzYsOCArMTEzNiw4IEBAIGFu
ZCB0ZWFyZWQgZG93biBhZnRlciBldmVyeSB0ZXN0IHRoYXQgdXNlZCBpdC4KIAogLi4gX2B1c2Vm
aXh0dXJlc2A6CiAKLVVzaW5nIGZpeHR1cmVzIGZyb20gY2xhc3NlcywgbW9kdWxlcyBvciBwcm9q
ZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorVXNlIGZpeHR1cmVzIGluIGNsYXNzZXMgYW5kIG1vZHVsZXMg
d2l0aCBgYHVzZWZpeHR1cmVzYGAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHJlZ2VuZG9jOndpcGUKIApAQCAtODg3LDI3ICsx
MTQ3LDM5IEBAIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYnV0IG90aGVyd2lzZSBkbyBub3Qg
Y2FyZSBmb3IgdGhlIGNvbmNyZXRlCiBkaXJlY3RvcnkuICBIZXJlIGlzIGhvdyB5b3UgY2FuIHVz
ZSB0aGUgc3RhbmRhcmQgYHRlbXBmaWxlCiA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5
L3RlbXBmaWxlLmh0bWw+YF8gYW5kIHB5dGVzdCBmaXh0dXJlcyB0bwogYWNoaWV2ZSBpdC4gIFdl
IHNlcGFyYXRlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZml4dHVyZSBpbnRvIGEgY29uZnRlc3QucHkK
LWZpbGU6OgorZmlsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50
IG9mIGNvbmZ0ZXN0LnB5CiAKLSAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgaW1wb3J0IHRlbXBmaWxl
CiAgICAgaW1wb3J0IG9zCisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCB0ZW1wZmlsZQor
CisgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgQHB5dGVzdC5maXh0dXJlKCkKKworICAgIEBweXRl
c3QuZml4dHVyZQogICAgIGRlZiBjbGVhbmRpcigpOgorICAgICAgICBvbGRfY3dkID0gb3MuZ2V0
Y3dkKCkKICAgICAgICAgbmV3cGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQogICAgICAgICBvcy5j
aGRpcihuZXdwYXRoKQorICAgICAgICB5aWVsZAorICAgICAgICBvcy5jaGRpcihvbGRfY3dkKQor
ICAgICAgICBzaHV0aWwucm10cmVlKG5ld3BhdGgpCiAKLWFuZCBkZWNsYXJlIGl0cyB1c2UgaW4g
YSB0ZXN0IG1vZHVsZSB2aWEgYSBgYHVzZWZpeHR1cmVzYGAgbWFya2VyOjoKK2FuZCBkZWNsYXJl
IGl0cyB1c2UgaW4gYSB0ZXN0IG1vZHVsZSB2aWEgYSBgYHVzZWZpeHR1cmVzYGAgbWFya2VyOgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9zZXRlbnYu
cHkKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIEBweXRlc3QubWFy
ay51c2VmaXh0dXJlcygiY2xlYW5kaXIiKQotICAgIGNsYXNzIFRlc3REaXJlY3RvcnlJbml0KG9i
amVjdCk6CisgICAgY2xhc3MgVGVzdERpcmVjdG9yeUluaXQ6CiAgICAgICAgIGRlZiB0ZXN0X2N3
ZF9zdGFydHNfZW1wdHkoc2VsZik6CiAgICAgICAgICAgICBhc3NlcnQgb3MubGlzdGRpcihvcy5n
ZXRjd2QoKSkgPT0gW10KICAgICAgICAgICAgIHdpdGggb3BlbigibXlmaWxlIiwgInciKSBhcyBm
OgpAQCAtOTE5LDExICsxMTkxLDEzIEBAIGFuZCBkZWNsYXJlIGl0cyB1c2UgaW4gYSB0ZXN0IG1v
ZHVsZSB2aWEgYSBgYHVzZWZpeHR1cmVzYGAgbWFya2VyOjoKIER1ZSB0byB0aGUgYGB1c2VmaXh0
dXJlc2BgIG1hcmtlciwgdGhlIGBgY2xlYW5kaXJgYCBmaXh0dXJlCiB3aWxsIGJlIHJlcXVpcmVk
IGZvciB0aGUgZXhlY3V0aW9uIG9mIGVhY2ggdGVzdCBtZXRob2QsIGp1c3QgYXMgaWYKIHlvdSBz
cGVjaWZpZWQgYSAiY2xlYW5kaXIiIGZ1bmN0aW9uIGFyZ3VtZW50IHRvIGVhY2ggb2YgdGhlbS4g
IExldCdzIHJ1biBpdAotdG8gdmVyaWZ5IG91ciBmaXh0dXJlIGlzIGFjdGl2YXRlZCBhbmQgdGhl
IHRlc3RzIHBhc3M6OgordG8gdmVyaWZ5IG91ciBmaXh0dXJlIGlzIGFjdGl2YXRlZCBhbmQgdGhl
IHRlc3RzIHBhc3M6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1x
CiAgICAgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWzEwMCVdCi0gICAgMiBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisg
ICAgMiBwYXNzZWQgaW4gMC4xMnMKIAogWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIGZpeHR1cmVz
IGxpa2UgdGhpczoKIApAQCAtOTMzLDE3ICsxMjA3LDE0IEBAIFlvdSBjYW4gc3BlY2lmeSBtdWx0
aXBsZSBmaXh0dXJlcyBsaWtlIHRoaXM6CiAgICAgZGVmIHRlc3QoKToKICAgICAgICAgLi4uCiAK
LWFuZCB5b3UgbWF5IHNwZWNpZnkgZml4dHVyZSB1c2FnZSBhdCB0aGUgdGVzdCBtb2R1bGUgbGV2
ZWwsIHVzaW5nCi1hIGdlbmVyaWMgZmVhdHVyZSBvZiB0aGUgbWFyayBtZWNoYW5pc206CithbmQg
eW91IG1heSBzcGVjaWZ5IGZpeHR1cmUgdXNhZ2UgYXQgdGhlIHRlc3QgbW9kdWxlIGxldmVsIHVz
aW5nIDpnbG9iYWx2YXI6YHB5dGVzdG1hcmtgOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAK
ICAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoImNsZWFuZGlyIikKIAot
Tm90ZSB0aGF0IHRoZSBhc3NpZ25lZCB2YXJpYWJsZSAqbXVzdCogYmUgY2FsbGVkIGBgcHl0ZXN0
bWFya2BgLCBhc3NpZ25pbmcgZS5nLgotYGBmb29tYXJrYGAgd2lsbCBub3QgYWN0aXZhdGUgdGhl
IGZpeHR1cmVzLgogCi1MYXN0bHkgeW91IGNhbiBwdXQgZml4dHVyZXMgcmVxdWlyZWQgYnkgYWxs
IHRlc3RzIGluIHlvdXIgcHJvamVjdAorSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBwdXQgZml4dHVy
ZXMgcmVxdWlyZWQgYnkgYWxsIHRlc3RzIGluIHlvdXIgcHJvamVjdAogaW50byBhbiBpbmktZmls
ZToKIAogLi4gY29kZS1ibG9jazo6IGluaQpAQCAtOTUzLDYgKzEyMjQsMjIgQEAgaW50byBhbiBp
bmktZmlsZToKICAgICB1c2VmaXh0dXJlcyA9IGNsZWFuZGlyCiAKIAorLi4gd2FybmluZzo6CisK
KyAgICBOb3RlIHRoaXMgbWFyayBoYXMgbm8gZWZmZWN0IGluICoqZml4dHVyZSBmdW5jdGlvbnMq
Ki4gRm9yIGV4YW1wbGUsCisgICAgdGhpcyAqKndpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQqKjoK
KworICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICBAcHl0ZXN0Lm1hcmsudXNl
Zml4dHVyZXMoIm15X290aGVyX2ZpeHR1cmUiKQorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICAgICAgZGVmIG15X2ZpeHR1cmVfdGhhdF9zYWRseV93b250X3VzZV9teV9vdGhlcl9maXh0dXJl
KCk6CisgICAgICAgICAgICAuLi4KKworICAgIEN1cnJlbnRseSB0aGlzIHdpbGwgbm90IGdlbmVy
YXRlIGFueSBlcnJvciBvciB3YXJuaW5nLCBidXQgdGhpcyBpcyBpbnRlbmRlZAorICAgIHRvIGJl
IGhhbmRsZWQgYnkgYCMzNjY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzM2NjQ+YF8uCisKKwogLi4gX2BhdXRvdXNlYDoKIC4uIF9gYXV0b3VzZSBmaXh0dXJl
c2A6CiAKQEAgLTk2NiwyNSArMTI1MywzMiBAQCB3aXRob3V0IGRlY2xhcmluZyBhIGZ1bmN0aW9u
IGFyZ3VtZW50IGV4cGxpY2l0bHkgb3IgYSBgdXNlZml4dHVyZXNgXyBkZWNvcmF0b3IuCiBBcyBh
IHByYWN0aWNhbCBleGFtcGxlLCBzdXBwb3NlIHdlIGhhdmUgYSBkYXRhYmFzZSBmaXh0dXJlIHdo
aWNoIGhhcyBhCiBiZWdpbi9yb2xsYmFjay9jb21taXQgYXJjaGl0ZWN0dXJlIGFuZCB3ZSB3YW50
IHRvIGF1dG9tYXRpY2FsbHkgc3Vycm91bmQKIGVhY2ggdGVzdCBtZXRob2QgYnkgYSB0cmFuc2Fj
dGlvbiBhbmQgYSByb2xsYmFjay4gIEhlcmUgaXMgYSBkdW1teQotc2VsZi1jb250YWluZWQgaW1w
bGVtZW50YXRpb24gb2YgdGhpcyBpZGVhOjoKK3NlbGYtY29udGFpbmVkIGltcGxlbWVudGF0aW9u
IG9mIHRoaXMgaWRlYToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50
IG9mIHRlc3RfZGJfdHJhbnNhY3QucHkKIAogICAgIGltcG9ydCBweXRlc3QKIAotICAgIGNsYXNz
IERCKG9iamVjdCk6CisKKyAgICBjbGFzcyBEQjoKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgogICAgICAgICAgICAgc2VsZi5pbnRyYW5zYWN0aW9uID0gW10KKwogICAgICAgICBkZWYgYmVn
aW4oc2VsZiwgbmFtZSk6CiAgICAgICAgICAgICBzZWxmLmludHJhbnNhY3Rpb24uYXBwZW5kKG5h
bWUpCisKICAgICAgICAgZGVmIHJvbGxiYWNrKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5pbnRy
YW5zYWN0aW9uLnBvcCgpCiAKKwogICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikK
ICAgICBkZWYgZGIoKToKICAgICAgICAgcmV0dXJuIERCKCkKIAotICAgIGNsYXNzIFRlc3RDbGFz
cyhvYmplY3QpOgorCisgICAgY2xhc3MgVGVzdENsYXNzOgogICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUoYXV0b3VzZT1UcnVlKQogICAgICAgICBkZWYgdHJhbnNhY3Qoc2VsZiwgcmVxdWVzdCwgZGIp
OgogICAgICAgICAgICAgZGIuYmVnaW4ocmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXykKQEAgLTEw
MDIsMTEgKzEyOTYsMTMgQEAgd2hpY2ggaW1wbGllcyB0aGF0IGFsbCB0ZXN0IG1ldGhvZHMgaW4g
dGhlIGNsYXNzIHdpbGwgdXNlIHRoaXMgZml4dHVyZQogd2l0aG91dCBhIG5lZWQgdG8gc3RhdGUg
aXQgaW4gdGhlIHRlc3QgZnVuY3Rpb24gc2lnbmF0dXJlIG9yIHdpdGggYQogY2xhc3MtbGV2ZWwg
YGB1c2VmaXh0dXJlc2BgIGRlY29yYXRvci4KIAotSWYgd2UgcnVuIGl0LCB3ZSBnZXQgdHdvIHBh
c3NpbmcgdGVzdHM6OgorSWYgd2UgcnVuIGl0LCB3ZSBnZXQgdHdvIHBhc3NpbmcgdGVzdHM6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xCiAgICAgLi4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWzEwMCVdCi0gICAgMiBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgMiBwYXNzZWQgaW4g
MC4xMnMKIAogSGVyZSBpcyBob3cgYXV0b3VzZSBmaXh0dXJlcyB3b3JrIGluIG90aGVyIHNjb3Bl
czoKIApAQCAtMTAzMCw3ICsxMzI2LDkgQEAgSGVyZSBpcyBob3cgYXV0b3VzZSBmaXh0dXJlcyB3
b3JrIGluIG90aGVyIHNjb3BlczoKIE5vdGUgdGhhdCB0aGUgYWJvdmUgYGB0cmFuc2FjdGBgIGZp
eHR1cmUgbWF5IHZlcnkgd2VsbCBiZSBhIGZpeHR1cmUgdGhhdAogeW91IHdhbnQgdG8gbWFrZSBh
dmFpbGFibGUgaW4geW91ciBwcm9qZWN0IHdpdGhvdXQgaGF2aW5nIGl0IGdlbmVyYWxseQogYWN0
aXZlLiAgVGhlIGNhbm9uaWNhbCB3YXkgdG8gZG8gdGhhdCBpcyB0byBwdXQgdGhlIHRyYW5zYWN0
IGRlZmluaXRpb24KLWludG8gYSBjb25mdGVzdC5weSBmaWxlICoqd2l0aG91dCoqIHVzaW5nIGBg
YXV0b3VzZWBgOjoKK2ludG8gYSBjb25mdGVzdC5weSBmaWxlICoqd2l0aG91dCoqIHVzaW5nIGBg
YXV0b3VzZWBgOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2Yg
Y29uZnRlc3QucHkKICAgICBAcHl0ZXN0LmZpeHR1cmUKQEAgLTEwMzksMTAgKzEzMzcsMTIgQEAg
aW50byBhIGNvbmZ0ZXN0LnB5IGZpbGUgKip3aXRob3V0KiogdXNpbmcgYGBhdXRvdXNlYGA6Ogog
ICAgICAgICB5aWVsZAogICAgICAgICBkYi5yb2xsYmFjaygpCiAKLWFuZCB0aGVuIGUuZy4gaGF2
ZSBhIFRlc3RDbGFzcyB1c2luZyBpdCBieSBkZWNsYXJpbmcgdGhlIG5lZWQ6OgorYW5kIHRoZW4g
ZS5nLiBoYXZlIGEgVGVzdENsYXNzIHVzaW5nIGl0IGJ5IGRlY2xhcmluZyB0aGUgbmVlZDoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCJ0
cmFuc2FjdCIpCi0gICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisgICAgY2xhc3MgVGVzdENs
YXNzOgogICAgICAgICBkZWYgdGVzdF9tZXRob2QxKHNlbGYpOgogICAgICAgICAgICAgLi4uCiAK
QEAgLTExMTEsNiArMTQxMSw4IEBAIEdpdmVuIHRoZSB0ZXN0cyBmaWxlIHN0cnVjdHVyZSBpczoK
IAogICAgICAgICBjb25mdGVzdC5weQogICAgICAgICAgICAgIyBjb250ZW50IG9mIHRlc3RzL2Nv
bmZ0ZXN0LnB5CisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKICAgICAgICAgICAgIEBweXRl
c3QuZml4dHVyZQogICAgICAgICAgICAgZGVmIHVzZXJuYW1lKCk6CiAgICAgICAgICAgICAgICAg
cmV0dXJuICd1c2VybmFtZScKQEAgLTEyMjksMyArMTUzMSwzNyBAQCBHaXZlbiB0aGUgdGVzdHMg
ZmlsZSBzdHJ1Y3R1cmUgaXM6CiBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgYSBwYXJhbWV0cml6ZWQg
Zml4dHVyZSBpcyBvdmVycmlkZGVuIHdpdGggYSBub24tcGFyYW1ldHJpemVkIHZlcnNpb24sIGFu
ZAogYSBub24tcGFyYW1ldHJpemVkIGZpeHR1cmUgaXMgb3ZlcnJpZGRlbiB3aXRoIGEgcGFyYW1l
dHJpemVkIHZlcnNpb24gZm9yIGNlcnRhaW4gdGVzdCBtb2R1bGUuCiBUaGUgc2FtZSBhcHBsaWVz
IGZvciB0aGUgdGVzdCBmb2xkZXIgbGV2ZWwgb2J2aW91c2x5LgorCisKK1VzaW5nIGZpeHR1cmVz
IGZyb20gb3RoZXIgcHJvamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworVXN1YWxseSBwcm9qZWN0cyB0aGF0IHByb3ZpZGUgcHl0ZXN0IHN1cHBvcnQgd2lsbCB1c2Ug
OnJlZjpgZW50cnkgcG9pbnRzIDxzZXR1cHRvb2xzIGVudHJ5IHBvaW50cz5gLAorc28ganVzdCBp
bnN0YWxsaW5nIHRob3NlIHByb2plY3RzIGludG8gYW4gZW52aXJvbm1lbnQgd2lsbCBtYWtlIHRo
b3NlIGZpeHR1cmVzIGF2YWlsYWJsZSBmb3IgdXNlLgorCitJbiBjYXNlIHlvdSB3YW50IHRvIHVz
ZSBmaXh0dXJlcyBmcm9tIGEgcHJvamVjdCB0aGF0IGRvZXMgbm90IHVzZSBlbnRyeSBwb2ludHMs
IHlvdSBjYW4KK2RlZmluZSA6Z2xvYmFsdmFyOmBweXRlc3RfcGx1Z2luc2AgaW4geW91ciB0b3Ag
YGBjb25mdGVzdC5weWBgIGZpbGUgdG8gcmVnaXN0ZXIgdGhhdCBtb2R1bGUKK2FzIGEgcGx1Z2lu
LgorCitTdXBwb3NlIHlvdSBoYXZlIHNvbWUgZml4dHVyZXMgaW4gYGBteWxpYnJhcnkuZml4dHVy
ZXNgYCBhbmQgeW91IHdhbnQgdG8gcmV1c2UgdGhlbSBpbnRvIHlvdXIKK2BgYXBwL3Rlc3RzYGAg
ZGlyZWN0b3J5LgorCitBbGwgeW91IG5lZWQgdG8gZG8gaXMgdG8gZGVmaW5lIDpnbG9iYWx2YXI6
YHB5dGVzdF9wbHVnaW5zYCBpbiBgYGFwcC90ZXN0cy9jb25mdGVzdC5weWBgCitwb2ludGluZyB0
byB0aGF0IG1vZHVsZS4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgcHl0ZXN0X3Bs
dWdpbnMgPSAibXlsaWJyYXJ5LmZpeHR1cmVzIgorCitUaGlzIGVmZmVjdGl2ZWx5IHJlZ2lzdGVy
cyBgYG15bGlicmFyeS5maXh0dXJlc2BgIGFzIGEgcGx1Z2luLCBtYWtpbmcgYWxsIGl0cyBmaXh0
dXJlcyBhbmQKK2hvb2tzIGF2YWlsYWJsZSB0byB0ZXN0cyBpbiBgYGFwcC90ZXN0c2BgLgorCisu
LiBub3RlOjoKKworICAgIFNvbWV0aW1lcyB1c2VycyB3aWxsICppbXBvcnQqIGZpeHR1cmVzIGZy
b20gb3RoZXIgcHJvamVjdHMgZm9yIHVzZSwgaG93ZXZlciB0aGlzIGlzIG5vdAorICAgIHJlY29t
bWVuZGVkOiBpbXBvcnRpbmcgZml4dHVyZXMgaW50byBhIG1vZHVsZSB3aWxsIHJlZ2lzdGVyIHRo
ZW0gaW4gcHl0ZXN0CisgICAgYXMgKmRlZmluZWQqIGluIHRoYXQgbW9kdWxlLgorCisgICAgVGhp
cyBoYXMgbWlub3IgY29uc2VxdWVuY2VzLCBzdWNoIGFzIGFwcGVhcmluZyBtdWx0aXBsZSB0aW1l
cyBpbiBgYHB5dGVzdCAtLWhlbHBgYCwKKyAgICBidXQgaXQgaXMgbm90ICoqcmVjb21tZW5kZWQq
KiBiZWNhdXNlIHRoaXMgYmVoYXZpb3IgbWlnaHQgY2hhbmdlL3N0b3Agd29ya2luZworICAgIGlu
IGZ1dHVyZSB2ZXJzaW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9mbGFreS5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZmxha3kucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYjZmYzE1MjBjMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2ZsYWt5LnJzdApAQCAtMCwwICsxLDEyNiBAQAorCitGbGFreSB0ZXN0cwor
LS0tLS0tLS0tLS0KKworQSAiZmxha3kiIHRlc3QgaXMgb25lIHRoYXQgZXhoaWJpdHMgaW50ZXJt
aXR0ZW50IG9yIHNwb3JhZGljIGZhaWx1cmUsIHRoYXQgc2VlbXMgdG8gaGF2ZSBub24tZGV0ZXJt
aW5pc3RpYyBiZWhhdmlvdXIuIFNvbWV0aW1lcyBpdCBwYXNzZXMsIHNvbWV0aW1lcyBpdCBmYWls
cywgYW5kIGl0J3Mgbm90IGNsZWFyIHdoeS4gVGhpcyBwYWdlIGRpc2N1c3NlcyBweXRlc3QgZmVh
dHVyZXMgdGhhdCBjYW4gaGVscCBhbmQgb3RoZXIgZ2VuZXJhbCBzdHJhdGVnaWVzIGZvciBpZGVu
dGlmeWluZywgZml4aW5nIG9yIG1pdGlnYXRpbmcgdGhlbS4KKworV2h5IGZsYWt5IHRlc3RzIGFy
ZSBhIHByb2JsZW0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0ZsYWt5IHRlc3Rz
IGFyZSBwYXJ0aWN1bGFybHkgdHJvdWJsZXNvbWUgd2hlbiBhIGNvbnRpbnVvdXMgaW50ZWdyYXRp
b24gKENJKSBzZXJ2ZXIgaXMgYmVpbmcgdXNlZCwgc28gdGhhdCBhbGwgdGVzdHMgbXVzdCBwYXNz
IGJlZm9yZSBhIG5ldyBjb2RlIGNoYW5nZSBjYW4gYmUgbWVyZ2VkLiBJZiB0aGUgdGVzdCByZXN1
bHQgaXMgbm90IGEgcmVsaWFibGUgc2lnbmFsIC0tIHRoYXQgYSB0ZXN0IGZhaWx1cmUgbWVhbnMg
dGhlIGNvZGUgY2hhbmdlIGJyb2tlIHRoZSB0ZXN0IC0tIGRldmVsb3BlcnMgY2FuIGJlY29tZSBt
aXN0cnVzdGZ1bCBvZiB0aGUgdGVzdCByZXN1bHRzLCB3aGljaCBjYW4gbGVhZCB0byBvdmVybG9v
a2luZyBnZW51aW5lIGZhaWx1cmVzLiBJdCBpcyBhbHNvIGEgc291cmNlIG9mIHdhc3RlZCB0aW1l
IGFzIGRldmVsb3BlcnMgbXVzdCByZS1ydW4gdGVzdCBzdWl0ZXMgYW5kIGludmVzdGlnYXRlIHNw
dXJpb3VzIGZhaWx1cmVzLgorCisKK1BvdGVudGlhbCByb290IGNhdXNlcworXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eCisKK1N5c3RlbSBzdGF0ZQorfn5+fn5+fn5+fn5+CisKK0Jyb2FkbHkgc3BlYWtp
bmcsIGEgZmxha3kgdGVzdCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGVzdCByZWxpZXMgb24gc29tZSBz
eXN0ZW0gc3RhdGUgdGhhdCBpcyBub3QgYmVpbmcgYXBwcm9wcmlhdGVseSBjb250cm9sbGVkIC0g
dGhlIHRlc3QgZW52aXJvbm1lbnQgaXMgbm90IHN1ZmZpY2llbnRseSBpc29sYXRlZC4gSGlnaGVy
IGxldmVsIHRlc3RzIGFyZSBtb3JlIGxpa2VseSB0byBiZSBmbGFreSBhcyB0aGV5IHJlbHkgb24g
bW9yZSBzdGF0ZS4KKworRmxha3kgdGVzdHMgc29tZXRpbWVzIGFwcGVhciB3aGVuIGEgdGVzdCBz
dWl0ZSBpcyBydW4gaW4gcGFyYWxsZWwgKHN1Y2ggYXMgdXNlIG9mIHB5dGVzdC14ZGlzdCkuIFRo
aXMgY2FuIGluZGljYXRlIGEgdGVzdCBpcyByZWxpYW50IG9uIHRlc3Qgb3JkZXJpbmcuCisKKy0g
IFBlcmhhcHMgYSBkaWZmZXJlbnQgdGVzdCBpcyBmYWlsaW5nIHRvIGNsZWFuIHVwIGFmdGVyIGl0
c2VsZiBhbmQgbGVhdmluZyBiZWhpbmQgZGF0YSB3aGljaCBjYXVzZXMgdGhlIGZsYWt5IHRlc3Qg
dG8gZmFpbC4KKy0gVGhlIGZsYWt5IHRlc3QgaXMgcmVsaWFudCBvbiBkYXRhIGZyb20gYSBwcmV2
aW91cyB0ZXN0IHRoYXQgZG9lc24ndCBjbGVhbiB1cCBhZnRlciBpdHNlbGYsIGFuZCBpbiBwYXJh
bGxlbCBydW5zIHRoYXQgcHJldmlvdXMgdGVzdCBpcyBub3QgYWx3YXlzIHByZXNlbnQKKy0gVGVz
dHMgdGhhdCBtb2RpZnkgZ2xvYmFsIHN0YXRlIHR5cGljYWxseSBjYW5ub3QgYmUgcnVuIGluIHBh
cmFsbGVsLgorCisKK092ZXJseSBzdHJpY3QgYXNzZXJ0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fgorCitPdmVybHkgc3RyaWN0IGFzc2VydGlvbnMgY2FuIGNhdXNlIHByb2JsZW1zIHdpdGgg
ZmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbiBhcyB3ZWxsIGFzIHRpbWluZyBpc3N1ZXMuIGBweXRl
c3QuYXBwcm94IDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvcmVmZXJlbmNlLmh0
bWwjcHl0ZXN0LWFwcHJveD5gXyBpcyB1c2VmdWwgaGVyZS4KKworCitQeXRlc3QgZmVhdHVyZXMK
K15eXl5eXl5eXl5eXl5eXgorCitYZmFpbCBzdHJpY3QKK35+fn5+fn5+fn5+fgorCis6cmVmOmBw
eXRlc3QubWFyay54ZmFpbCByZWZgIHdpdGggYGBzdHJpY3Q9RmFsc2VgYCBjYW4gYmUgdXNlZCB0
byBtYXJrIGEgdGVzdCBzbyB0aGF0IGl0cyBmYWlsdXJlIGRvZXMgbm90IGNhdXNlIHRoZSB3aG9s
ZSBidWlsZCB0byBicmVhay4gVGhpcyBjb3VsZCBiZSBjb25zaWRlcmVkIGxpa2UgYSBtYW51YWwg
cXVhcmFudGluZSwgYW5kIGlzIHJhdGhlciBkYW5nZXJvdXMgdG8gdXNlIHBlcm1hbmVudGx5Lgor
CisKK1BZVEVTVF9DVVJSRU5UX1RFU1QKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworOmVudnZhcjpg
UFlURVNUX0NVUlJFTlRfVEVTVGAgbWF5IGJlIHVzZWZ1bCBmb3IgZmlndXJpbmcgb3V0ICJ3aGlj
aCB0ZXN0IGdvdCBzdHVjayIuCitTZWUgOnJlZjpgcHl0ZXN0IGN1cnJlbnQgdGVzdCBlbnZgIGZv
ciBtb3JlIGRldGFpbHMuCisKKworUGx1Z2lucworfn5+fn5+fgorCitSZXJ1bm5pbmcgYW55IGZh
aWxlZCB0ZXN0cyBjYW4gbWl0aWdhdGUgdGhlIG5lZ2F0aXZlIGVmZmVjdHMgb2YgZmxha3kgdGVz
dHMgYnkgZ2l2aW5nIHRoZW0gYWRkaXRpb25hbCBjaGFuY2VzIHRvIHBhc3MsIHNvIHRoYXQgdGhl
IG92ZXJhbGwgYnVpbGQgZG9lcyBub3QgZmFpbC4gU2V2ZXJhbCBweXRlc3QgcGx1Z2lucyBzdXBw
b3J0IHRoaXM6CisKKyogYGZsYWt5IDxodHRwczovL2dpdGh1Yi5jb20vYm94L2ZsYWt5PmBfCisq
IGBweXRlc3QtZmxha2VmaW5kZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9kcm9wYm94L3B5dGVzdC1m
bGFrZWZpbmRlcj5gXyAtIGBibG9nIHBvc3QgPGh0dHBzOi8vYmxvZ3MuZHJvcGJveC5jb20vdGVj
aC8yMDE2LzAzL29wZW4tc291cmNpbmctcHl0ZXN0LXRvb2xzLz5gXworKiBgcHl0ZXN0LXJlcnVu
ZmFpbHVyZXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1yZXJ1bmZhaWx1
cmVzPmBfCisqIGBweXRlc3QtcmVwbGF5IDxodHRwczovL2dpdGh1Yi5jb20vRVNTUy9weXRlc3Qt
cmVwbGF5PmBfOiBUaGlzIHBsdWdpbiBoZWxwcyB0byByZXByb2R1Y2UgbG9jYWxseSBjcmFzaGVz
IG9yIGZsYWt5IHRlc3RzIG9ic2VydmVkIGR1cmluZyBDSSBydW5zLgorCitQbHVnaW5zIHRvIGRl
bGliZXJhdGVseSByYW5kb21pemUgdGVzdHMgY2FuIGhlbHAgZXhwb3NlIHRlc3RzIHdpdGggc3Rh
dGUgcHJvYmxlbXM6CisKKyogYHB5dGVzdC1yYW5kb20tb3JkZXIgPGh0dHBzOi8vZ2l0aHViLmNv
bS9qYmFza28vcHl0ZXN0LXJhbmRvbS1vcmRlcj5gXworKiBgcHl0ZXN0LXJhbmRvbWx5IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtcmFuZG9tbHk+YF8KKworCitPdGhlciBn
ZW5lcmFsIHN0cmF0ZWdpZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitTcGxpdCB1cCB0
ZXN0IHN1aXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSXQgY2FuIGJlIGNvbW1vbiB0byBz
cGxpdCBhIHNpbmdsZSB0ZXN0IHN1aXRlIGludG8gdHdvLCBzdWNoIGFzIHVuaXQgdnMgaW50ZWdy
YXRpb24sIGFuZCBvbmx5IHVzZSB0aGUgdW5pdCB0ZXN0IHN1aXRlIGFzIGEgQ0kgZ2F0ZS4gVGhp
cyBhbHNvIGhlbHBzIGtlZXAgYnVpbGQgdGltZXMgbWFuYWdlYWJsZSBhcyBoaWdoIGxldmVsIHRl
c3RzIHRlbmQgdG8gYmUgc2xvd2VyLiBIb3dldmVyLCBpdCBtZWFucyBpdCBkb2VzIGJlY29tZSBw
b3NzaWJsZSBmb3IgY29kZSB0aGF0IGJyZWFrcyB0aGUgYnVpbGQgdG8gYmUgbWVyZ2VkLCBzbyBl
eHRyYSB2aWdpbGFuY2UgaXMgbmVlZGVkIGZvciBtb25pdG9yaW5nIHRoZSBpbnRlZ3JhdGlvbiB0
ZXN0IHJlc3VsdHMuCisKKworVmlkZW8vc2NyZWVuc2hvdCBvbiBmYWlsdXJlCit+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn4KKworRm9yIFVJIHRlc3RzIHRoZXNlIGFyZSBpbXBvcnRhbnQgZm9y
IHVuZGVyc3RhbmRpbmcgd2hhdCB0aGUgc3RhdGUgb2YgdGhlIFVJIHdhcyB3aGVuIHRoZSB0ZXN0
IGZhaWxlZC4gcHl0ZXN0LXNwbGludGVyIGNhbiBiZSB1c2VkIHdpdGggcGx1Z2lucyBsaWtlIHB5
dGVzdC1iZGQgYW5kIGNhbiBgc2F2ZSBhIHNjcmVlbnNob3Qgb24gdGVzdCBmYWlsdXJlIDxodHRw
czovL3B5dGVzdC1zcGxpbnRlci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvI2F1dG9tYXRpYy1z
Y3JlZW5zaG90cy1vbi10ZXN0LWZhaWx1cmU+YF8sIHdoaWNoIGNhbiBoZWxwIHRvIGlzb2xhdGUg
dGhlIGNhdXNlLgorCisKK0RlbGV0ZSBvciByZXdyaXRlIHRoZSB0ZXN0Cit+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fgorCitJZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBjb3ZlcmVkIGJ5IG90aGVy
IHRlc3RzLCBwZXJoYXBzIHRoZSB0ZXN0IGNhbiBiZSByZW1vdmVkLiBJZiBub3QsIHBlcmhhcHMg
aXQgY2FuIGJlIHJld3JpdHRlbiBhdCBhIGxvd2VyIGxldmVsIHdoaWNoIHdpbGwgcmVtb3ZlIHRo
ZSBmbGFraW5lc3Mgb3IgbWFrZSBpdHMgc291cmNlIG1vcmUgYXBwYXJlbnQuCisKKworUXVhcmFu
dGluZQorfn5+fn5+fn5+fgorCitNYXJrIExhcGllcnJlIGRpc2N1c3NlcyB0aGUgYFByb3MgYW5k
IENvbnMgb2YgUXVhcmFudGluZWQgVGVzdHMgPGh0dHBzOi8vZGV2LnRvL21sYXBpZXJyZS9wcm9z
LWFuZC1jb25zLW9mLXF1YXJhbnRpbmVkLXRlc3RzLTJlbWo+YF8gaW4gYSBwb3N0IGZyb20gMjAx
OC4KKworCisKK0NJIHRvb2xzIHRoYXQgcmVydW4gb24gZmFpbHVyZQorfn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+CisKK0F6dXJlIFBpcGVsaW5lcyAodGhlIEF6dXJlIGNsb3VkIENJL0NE
IHRvb2wsIGZvcm1lcmx5IFZpc3VhbCBTdHVkaW8gVGVhbSBTZXJ2aWNlcyBvciBWU1RTKSBoYXMg
YSBmZWF0dXJlIHRvIGBpZGVudGlmeSBmbGFreSB0ZXN0cyA8aHR0cHM6Ly9kb2NzLm1pY3Jvc29m
dC5jb20vZW4tdXMvYXp1cmUvZGV2b3BzL3JlbGVhc2Utbm90ZXMvMjAxNy9kZWMtMTEtdnN0cyNp
ZGVudGlmeS1mbGFreS10ZXN0cz5gXyBhbmQgcmVydW4gZmFpbGVkIHRlc3RzLgorCisKKworUmVz
ZWFyY2gKK15eXl5eXl5eCisKK1RoaXMgaXMgYSBsaW1pdGVkIGxpc3QsIHBsZWFzZSBzdWJtaXQg
YW4gaXNzdWUgb3IgcHVsbCByZXF1ZXN0IHRvIGV4cGFuZCBpdCEKKworKiBHYW8sIFplYmFvLCBZ
YWxhbiBMaWFuZywgTXlyYSBCLiBDb2hlbiwgQXRpZiBNLiBNZW1vbiwgYW5kIFpoZW4gV2FuZy4g
Ik1ha2luZyBzeXN0ZW0gdXNlciBpbnRlcmFjdGl2ZSB0ZXN0cyByZXBlYXRhYmxlOiBXaGVuIGFu
ZCB3aGF0IHNob3VsZCB3ZSBjb250cm9sPy4iIEluICpTb2Z0d2FyZSBFbmdpbmVlcmluZyAoSUNT
RSksIDIwMTUgSUVFRS9BQ00gMzd0aCBJRUVFIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbios
IHZvbC4gMSwgcHAuIDU1LTY1LiBJRUVFLCAyMDE1LiAgYFBERiA8aHR0cDovL3d3dy5jcy51bWQu
ZWR1L35hdGlmL3B1YnMvZ2FvLWljc2UxNS5wZGY+YF9fCisqIFBhbG9tYmEsIEZhYmlvLCBhbmQg
QW5keSBaYWlkbWFuLiAiRG9lcyByZWZhY3RvcmluZyBvZiB0ZXN0IHNtZWxscyBpbmR1Y2UgZml4
aW5nIGZsYWt5IHRlc3RzPy4iIEluICpTb2Z0d2FyZSBNYWludGVuYW5jZSBhbmQgRXZvbHV0aW9u
IChJQ1NNRSksIDIwMTcgSUVFRSBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24qLCBwcC4gMS0x
Mi4gSUVFRSwgMjAxNy4gYFBERiBpbiBHb29nbGUgRHJpdmUgPGh0dHBzOi8vZHJpdmUuZ29vZ2xl
LmNvbS9maWxlL2QvMTBIZGNDUWl1UVZnVzN5WVVKRC1UU1RxMU5iWUVwcmwwL3ZpZXc+YF9fCisq
ICBCZWxsLCBKb25hdGhhbiwgT3dvbGFiaSBMZWd1bnNlbiwgTWljaGFlbCBIaWx0b24sIExhbXlh
YSBFbG91c3NpLCBUaWZhbnkgWXVuZywgYW5kIERhcmtvIE1hcmlub3YuICJEZUZsYWtlcjogQXV0
b21hdGljYWxseSBkZXRlY3RpbmcgZmxha3kgdGVzdHMuIiBJbiAqUHJvY2VlZGluZ3Mgb2YgdGhl
IDIwMTggSW50ZXJuYXRpb25hbCBDb25mZXJlbmNlIG9uIFNvZnR3YXJlIEVuZ2luZWVyaW5nKi4g
MjAxOC4gYFBERiA8aHR0cHM6Ly93d3cuam9uYmVsbC5uZXQvaWNzZTE4LWRlZmxha2VyLnBkZj5g
X18KKworCitSZXNvdXJjZXMKK15eXl5eXl5eXgorCisqIGBFcmFkaWNhdGluZyBOb24tRGV0ZXJt
aW5pc20gaW4gVGVzdHMgPGh0dHBzOi8vbWFydGluZm93bGVyLmNvbS9hcnRpY2xlcy9ub25EZXRl
cm1pbmlzbS5odG1sPmBfIGJ5IE1hcnRpbiBGb3dsZXIsIDIwMTEKKyogYE5vIG1vcmUgZmxha3kg
dGVzdHMgb24gdGhlIEdvIHRlYW0gPGh0dHBzOi8vd3d3LnRob3VnaHR3b3Jrcy5jb20vaW5zaWdo
dHMvYmxvZy9uby1tb3JlLWZsYWt5LXRlc3RzLWdvLXRlYW0+YF8gYnkgUGF2YW4gU3VkYXJzaGFu
LCAyMDEyCisqIGBUaGUgQnVpbGQgVGhhdCBDcmllZCBCcm9rZW46IEJ1aWxkaW5nIFRydXN0IGlu
IHlvdXIgQ29udGludW91cyBJbnRlZ3JhdGlvbiBUZXN0cyA8aHR0cHM6Ly93d3cueW91dHViZS5j
b20vZW1iZWQvVm90SnFWNG44aWc+YF8gdGFsayAodmlkZW8pIGJ5IGBBbmdpZSBKb25lcyA8aHR0
cDovL2FuZ2llam9uZXMudGVjaC8+YF8gYXQgU2VsZW5pdW1Db25mIEF1c3RpbiAyMDE3CisqIGBU
ZXN0IGFuZCBDb2RlIFBvZGNhc3Q6IEZsYWt5IFRlc3RzIGFuZCBIb3cgdG8gRGVhbCB3aXRoIFRo
ZW0gPGh0dHBzOi8vdGVzdGFuZGNvZGUuY29tLzUwPmBfIGJ5IEJyaWFuIE9ra2VuIGFuZCBBbnRo
b255IFNoYXcsIDIwMTgKKyogTWljcm9zb2Z0OgorCisgICogYEhvdyB3ZSBhcHByb2FjaCB0ZXN0
aW5nIFZTVFMgdG8gZW5hYmxlIGNvbnRpbnVvdXMgZGVsaXZlcnkgPGh0dHBzOi8vYmxvZ3MubXNk
bi5taWNyb3NvZnQuY29tL2JoYXJyeS8yMDE3LzA2LzI4L3Rlc3RpbmctaW4tYS1jbG91ZC1kZWxp
dmVyeS1jYWRlbmNlLz5gXyBieSBCcmlhbiBIYXJyeSBNUywgMjAxNworICAqIGBFbGltaW5hdGlu
ZyBGbGFreSBUZXN0cyA8aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvZGV2
b3BzL2xlYXJuL2Rldm9wcy1hdC1taWNyb3NvZnQvZWxpbWluYXRpbmctZmxha3ktdGVzdHM+YF8g
YmxvZyBhbmQgdGFsayAodmlkZW8pIGJ5IE11bmlsIFNoYWgsIDIwMTcKKworKiBHb29nbGU6CisK
KyAgKiBgRmxha3kgVGVzdHMgYXQgR29vZ2xlIGFuZCBIb3cgV2UgTWl0aWdhdGUgVGhlbSA8aHR0
cHM6Ly90ZXN0aW5nLmdvb2dsZWJsb2cuY29tLzIwMTYvMDUvZmxha3ktdGVzdHMtYXQtZ29vZ2xl
LWFuZC1ob3ctd2UuaHRtbD5gXyBieSBKb2huIE1pY2NvLCAyMDE2CisgICogYFdoZXJlIGRvIEdv
b2dsZSdzIGZsYWt5IHRlc3RzIGNvbWUgZnJvbT8gPGh0dHBzOi8vdGVzdGluZy5nb29nbGVibG9n
LmNvbS8yMDE3LzA0L3doZXJlLWRvLW91ci1mbGFreS10ZXN0cy1jb21lLWZyb20uaHRtbD5gXyAg
YnkgSmVmZiBMaXN0ZmllbGQsIDIwMTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9m
dW5jYXJnX2NvbXBhcmUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Z1bmNhcmdfY29tcGFyZS5y
c3QKaW5kZXggYzI5YmExZjNjMzU3Li4wYzQ5MTNlZGZmODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9mdW5jYXJnX2NvbXBhcmUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9m
dW5jYXJnX2NvbXBhcmUucnN0CkBAIC03LDcgKzcsNyBAQCBweXRlc3QtMi4zOiByZWFzb25pbmcg
Zm9yIGZpeHR1cmUvZnVuY2FyZyBldm9sdXRpb24KIAogKipUYXJnZXQgYXVkaWVuY2UqKjogUmVh
ZGluZyB0aGlzIGRvY3VtZW50IHJlcXVpcmVzIGJhc2ljIGtub3dsZWRnZSBvZgogcHl0aG9uIHRl
c3RpbmcsIHhVbml0IHNldHVwIG1ldGhvZHMgYW5kIHRoZSAocHJldmlvdXMpIGJhc2ljIHB5dGVz
dAotZnVuY2FyZyBtZWNoYW5pc20sIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy8yLjIuNC9mdW5jYXJn
cy5odG1sCitmdW5jYXJnIG1lY2hhbmlzbSwgc2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9oaXN0b3JpY2FsLW5vdGVzLmh0bWwjZnVuY2FyZ3MtYW5kLXB5dGVzdC1mdW5jYXJn
LgogSWYgeW91IGFyZSBuZXcgdG8gcHl0ZXN0LCB0aGVuIHlvdSBjYW4gc2ltcGx5IGlnbm9yZSB0
aGlzCiBzZWN0aW9uIGFuZCByZWFkIHRoZSBvdGhlciBzZWN0aW9ucy4KIApAQCAtMjEsMTkgKzIx
LDIzIEBAIGZ1bmNhcmcgZm9yIGEgdGVzdCBmdW5jdGlvbiBpcyByZXF1aXJlZC4gIElmIGEgZmFj
dG9yeSB3YW50cyB0bwogcmUtdXNlIGEgcmVzb3VyY2UgYWNyb3NzIGRpZmZlcmVudCBzY29wZXMs
IGl0IG9mdGVuIHVzZWQKIHRoZSBgYHJlcXVlc3QuY2FjaGVkX3NldHVwKClgYCBoZWxwZXIgdG8g
bWFuYWdlIGNhY2hpbmcgb2YKIHJlc291cmNlcy4gIEhlcmUgaXMgYSBiYXNpYyBleGFtcGxlIGhv
dyB3ZSBjb3VsZCBpbXBsZW1lbnQKLWEgcGVyLXNlc3Npb24gRGF0YWJhc2Ugb2JqZWN0OjoKK2Eg
cGVyLXNlc3Npb24gRGF0YWJhc2Ugb2JqZWN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAK
ICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKLSAgICBjbGFzcyBEYXRhYmFzZShvYmplY3Qp
OgorICAgIGNsYXNzIERhdGFiYXNlOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgICAgICBwcmludCAoImRhdGFiYXNlIGluc3RhbmNlIGNyZWF0ZWQiKQorICAgICAgICAgICAg
cHJpbnQoImRhdGFiYXNlIGluc3RhbmNlIGNyZWF0ZWQiKQorCiAgICAgICAgIGRlZiBkZXN0cm95
KHNlbGYpOgotICAgICAgICAgICAgcHJpbnQgKCJkYXRhYmFzZSBpbnN0YW5jZSBkZXN0cm95ZWQi
KQorICAgICAgICAgICAgcHJpbnQoImRhdGFiYXNlIGluc3RhbmNlIGRlc3Ryb3llZCIpCisKIAog
ICAgIGRlZiBweXRlc3RfZnVuY2FyZ19fZGIocmVxdWVzdCk6Ci0gICAgICAgIHJldHVybiByZXF1
ZXN0LmNhY2hlZF9zZXR1cChzZXR1cD1EYXRhQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlYXJkb3duPWxhbWJkYSBkYjogZGIuZGVzdHJveSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPSJzZXNzaW9uIikKKyAgICAgICAgcmV0dXJu
IHJlcXVlc3QuY2FjaGVkX3NldHVwKAorICAgICAgICAgICAgc2V0dXA9RGF0YUJhc2UsIHRlYXJk
b3duPWxhbWJkYSBkYjogZGIuZGVzdHJveSwgc2NvcGU9InNlc3Npb24iCisgICAgICAgICkKIAog
VGhlcmUgYXJlIHNldmVyYWwgbGltaXRhdGlvbnMgYW5kIGRpZmZpY3VsdGllcyB3aXRoIHRoaXMg
YXBwcm9hY2g6CiAKQEAgLTQ3LDcgKzUxLDcgQEAgVGhlcmUgYXJlIHNldmVyYWwgbGltaXRhdGlv
bnMgYW5kIGRpZmZpY3VsdGllcyB3aXRoIHRoaXMgYXBwcm9hY2g6CiAgICBwZXJmb3JtcyBwYXJh
bWV0cml6YXRpb24gYXQgdGhlIHBsYWNlcyB3aGVyZSB0aGUgcmVzb3VyY2UKICAgIGlzIHVzZWQu
ICBNb3Jlb3ZlciwgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZSBmYWN0b3J5IHRvIHVzZSBhbgogICAg
YGBleHRyYWtleWBgIHBhcmFtZXRlciBjb250YWluaW5nIGBgcmVxdWVzdC5wYXJhbWBgIHRvIHRo
ZQotICAgOnB5OmZ1bmM6YH5weXRob24uUmVxdWVzdC5jYWNoZWRfc2V0dXBgIGNhbGwuCisgICBg
YFJlcXVlc3QuY2FjaGVkX3NldHVwYGAgY2FsbC4KIAogMy4gTXVsdGlwbGUgcGFyYW1ldHJpemVk
IHNlc3Npb24tc2NvcGVkIHJlc291cmNlcyB3aWxsIGJlIGFjdGl2ZQogICAgYXQgdGhlIHNhbWUg
dGltZSwgbWFraW5nIGl0IGhhcmQgZm9yIHRoZW0gdG8gYWZmZWN0IGdsb2JhbCBzdGF0ZQpAQCAt
NjgsNyArNzIsOSBAQCBEaXJlY3Qgc2NvcGluZyBvZiBmaXh0dXJlL2Z1bmNhcmcgZmFjdG9yaWVz
CiAKIEluc3RlYWQgb2YgY2FsbGluZyBjYWNoZWRfc2V0dXAoKSB3aXRoIGEgY2FjaGUgc2NvcGUs
IHlvdSBjYW4gdXNlIHRoZQogOnJlZjpgQHB5dGVzdC5maXh0dXJlIDxweXRlc3QuZml4dHVyZT5g
IGRlY29yYXRvciBhbmQgZGlyZWN0bHkgc3RhdGUKLXRoZSBzY29wZTo6Cit0aGUgc2NvcGU6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vz
c2lvbiIpCiAgICAgZGVmIGRiKHJlcXVlc3QpOgpAQCAtOTAsMTEgKzk2LDEzIEBAIFByZXZpb3Vz
bHksIGZ1bmNhcmcgZmFjdG9yaWVzIGNvdWxkIG5vdCBkaXJlY3RseSBjYXVzZSBwYXJhbWV0cml6
YXRpb24uCiBZb3UgbmVlZGVkIHRvIHNwZWNpZnkgYSBgYEBwYXJhbWV0cml6ZWBgIGRlY29yYXRv
ciBvbiB5b3VyIHRlc3QgZnVuY3Rpb24KIG9yIGltcGxlbWVudCBhIGBgcHl0ZXN0X2dlbmVyYXRl
X3Rlc3RzYGAgaG9vayB0byBwZXJmb3JtCiBwYXJhbWV0cml6YXRpb24sIGkuZS4gY2FsbGluZyBh
IHRlc3QgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgdmFsdWUKLXNldHMuICBweXRlc3Qt
Mi4zIGludHJvZHVjZXMgYSBkZWNvcmF0b3IgZm9yIHVzZSBvbiB0aGUgZmFjdG9yeSBpdHNlbGY6
Ogorc2V0cy4gIHB5dGVzdC0yLjMgaW50cm9kdWNlcyBhIGRlY29yYXRvciBmb3IgdXNlIG9uIHRo
ZSBmYWN0b3J5IGl0c2VsZjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgQHB5dGVz
dC5maXh0dXJlKHBhcmFtcz1bIm15c3FsIiwgInBnIl0pCiAgICAgZGVmIGRiKHJlcXVlc3QpOgot
ICAgICAgICAuLi4gIyB1c2UgcmVxdWVzdC5wYXJhbQorICAgICAgICAuLi4gICMgdXNlIHJlcXVl
c3QucGFyYW0KIAogSGVyZSB0aGUgZmFjdG9yeSB3aWxsIGJlIGludm9rZWQgdHdpY2UgKHdpdGgg
dGhlIHJlc3BlY3RpdmUgIm15c3FsIgogYW5kICJwZyIgdmFsdWVzIHNldCBhcyBgYHJlcXVlc3Qu
cGFyYW1gYCBhdHRyaWJ1dGVzKSBhbmQgYWxsIG9mCkBAIC0xMDUsOSArMTEzLDExIEBAIFRoaXMg
bmV3IHdheSBvZiBwYXJhbWV0cml6aW5nIGZ1bmNhcmcgZmFjdG9yaWVzIHNob3VsZCBpbiBtYW55
IGNhc2VzCiBhbGxvdyB0byByZS11c2UgYWxyZWFkeSB3cml0dGVuIGZhY3RvcmllcyBiZWNhdXNl
IGVmZmVjdGl2ZWx5CiBgYHJlcXVlc3QucGFyYW1gYCB3YXMgYWxyZWFkeSB1c2VkIHdoZW4gdGVz
dCBmdW5jdGlvbnMvY2xhc3NlcyB3ZXJlCiBwYXJhbWV0cml6ZWQgdmlhCi06cHk6ZnVuYzpgfl9w
eXRlc3QucHl0aG9uLk1ldGFmdW5jLnBhcmFtZXRyaXplKGluZGlyZWN0PVRydWUpYCBjYWxscy4K
KzpweTpmdW5jOmBtZXRhZnVuYy5wYXJhbWV0cml6ZShpbmRpcmVjdD1UcnVlKSA8X3B5dGVzdC5w
eXRob24uTWV0YWZ1bmMucGFyYW1ldHJpemU+YCBjYWxscy4KKworT2YgY291cnNlIGl0J3MgcGVy
ZmVjdGx5IGZpbmUgdG8gY29tYmluZSBwYXJhbWV0cml6YXRpb24gYW5kIHNjb3Bpbmc6CiAKLU9m
IGNvdXJzZSBpdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNvbWJpbmUgcGFyYW1ldHJpemF0aW9uIGFu
ZCBzY29waW5nOjoKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIEBweXRlc3QuZml4dHVy
ZShzY29wZT0ic2Vzc2lvbiIsIHBhcmFtcz1bIm15c3FsIiwgInBnIl0pCiAgICAgZGVmIGRiKHJl
cXVlc3QpOgpAQCAtMTI4LDcgKzEzOCw5IEBAIE5vIGBgcHl0ZXN0X2Z1bmNhcmdfX2BgIHByZWZp
eCB3aGVuIHVzaW5nIEBmaXh0dXJlIGRlY29yYXRvcgogCiBXaGVuIHVzaW5nIHRoZSBgYEBmaXh0
dXJlYGAgZGVjb3JhdG9yIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbgogZGVub3RlcyB0aGUgbmFt
ZSB1bmRlciB3aGljaCB0aGUgcmVzb3VyY2UgY2FuIGJlIGFjY2Vzc2VkIGFzIGEgZnVuY3Rpb24K
LWFyZ3VtZW50OjoKK2FyZ3VtZW50OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBA
cHl0ZXN0LmZpeHR1cmUoKQogICAgIGRlZiBkYihyZXF1ZXN0KToKQEAgLTEzNyw3ICsxNDksOSBA
QCBhcmd1bWVudDo6CiBUaGUgbmFtZSB1bmRlciB3aGljaCB0aGUgZnVuY2FyZyByZXNvdXJjZSBj
YW4gYmUgcmVxdWVzdGVkIGlzIGBgZGJgYC4KIAogWW91IGNhbiBzdGlsbCB1c2UgdGhlICJvbGQi
IG5vbi1kZWNvcmF0b3Igd2F5IG9mIHNwZWNpZnlpbmcgZnVuY2FyZyBmYWN0b3JpZXMKLWFrYTo6
Citha2E6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiBweXRlc3RfZnVuY2Fy
Z19fZGIocmVxdWVzdCk6CiAgICAgICAgIC4uLgpAQCAtMTU2LDcgKzE3MCw3IEBAIHNldmVyYWwg
cHJvYmxlbXM6CiAKIDEuIGluIGRpc3RyaWJ1dGVkIHRlc3RpbmcgdGhlIG1hc3RlciBwcm9jZXNz
IHdvdWxkIHNldHVwIHRlc3QgcmVzb3VyY2VzCiAgICB0aGF0IGFyZSBuZXZlciBuZWVkZWQgYmVj
YXVzZSBpdCBvbmx5IGNvLW9yZGluYXRlcyB0aGUgdGVzdCBydW4KLSAgIGFjdGl2aXRpZXMgb2Yg
dGhlIHNsYXZlIHByb2Nlc3Nlcy4KKyAgIGFjdGl2aXRpZXMgb2YgdGhlIHdvcmtlciBwcm9jZXNz
ZXMuCiAKIDIuIGlmIHlvdSBvbmx5IHBlcmZvcm0gYSBjb2xsZWN0aW9uICh3aXRoICItLWNvbGxl
Y3Qtb25seSIpCiAgICByZXNvdXJjZS1zZXR1cCB3aWxsIHN0aWxsIGJlIGV4ZWN1dGVkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2dldHRpbmctc3RhcnRlZC5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZ2V0dGluZy1zdGFydGVkLnJzdAppbmRleCBmMmRiZWM1ZTkzMjguLjVhNWYw
ZmE3YTQzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2dldHRpbmctc3RhcnRlZC5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2dldHRpbmctc3RhcnRlZC5yc3QKQEAgLTEsMTUg
KzEsMTIgQEAKIEluc3RhbGxhdGlvbiBhbmQgR2V0dGluZyBTdGFydGVkCiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQogCi0qKlB5dGhvbnMqKjogUHl0aG9uIDIuNywgMy40LCAz
LjUsIDMuNiwgSnl0aG9uLCBQeVB5LTIuMworKipQeXRob25zKio6IFB5dGhvbiAzLjUsIDMuNiwg
My43LCAzLjgsIDMuOSwgUHlQeTMKIAotKipQbGF0Zm9ybXMqKjogVW5peC9Qb3NpeCBhbmQgV2lu
ZG93cworKipQbGF0Zm9ybXMqKjogTGludXggYW5kIFdpbmRvd3MKIAogKipQeVBJIHBhY2thZ2Ug
bmFtZSoqOiBgcHl0ZXN0IDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0Lz5gXwogCi0q
KkRlcGVuZGVuY2llcyoqOiBgcHkgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weS8+YF8sCi1g
Y29sb3JhbWEgKFdpbmRvd3MpIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvY29sb3JhbWEvPmBf
LAotCiAqKkRvY3VtZW50YXRpb24gYXMgUERGKio6IGBkb3dubG9hZCBsYXRlc3QgPGh0dHBzOi8v
bWVkaWEucmVhZHRoZWRvY3Mub3JnL3BkZi9weXRlc3QvbGF0ZXN0L3B5dGVzdC5wZGY+YF8KIAog
YGBweXRlc3RgYCBpcyBhIGZyYW1ld29yayB0aGF0IG1ha2VzIGJ1aWxkaW5nIHNpbXBsZSBhbmQg
c2NhbGFibGUgdGVzdHMgZWFzeS4gVGVzdHMgYXJlIGV4cHJlc3NpdmUgYW5kIHJlYWRhYmxl4oCU
bm8gYm9pbGVycGxhdGUgY29kZSByZXF1aXJlZC4gR2V0IHN0YXJ0ZWQgaW4gbWludXRlcyB3aXRo
IGEgc21hbGwgdW5pdCB0ZXN0IG9yIGNvbXBsZXggZnVuY3Rpb25hbCB0ZXN0IGZvciB5b3VyIGFw
cGxpY2F0aW9uIG9yIGxpYnJhcnkuCkBAIC0yMCwzNSArMTcsNDUgQEAgSW5zdGFsbGF0aW9uIGFu
ZCBHZXR0aW5nIFN0YXJ0ZWQKIEluc3RhbGwgYGBweXRlc3RgYAogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0xLiBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGlu
IHlvdXIgY29tbWFuZCBsaW5lOjoKKzEuIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4geW91
ciBjb21tYW5kIGxpbmU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBwaXAgaW5zdGFs
bCAtVSBweXRlc3QKIAotMi4gQ2hlY2sgdGhhdCB5b3UgaW5zdGFsbGVkIHRoZSBjb3JyZWN0IHZl
cnNpb246OgorMi4gQ2hlY2sgdGhhdCB5b3UgaW5zdGFsbGVkIHRoZSBjb3JyZWN0IHZlcnNpb246
CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICAkIHB5dGVzdCAtLXZlcnNpb24KLSAgICBU
aGlzIGlzIHB5dGVzdCB2ZXJzaW9uIDMueC55LCBpbXBvcnRlZCBmcm9tICRQWVRIT05fUFJFRklY
L2xpYi9weXRob24zLjUvc2l0ZS1wYWNrYWdlcy9weXRlc3QucHkKKyAgICBweXRlc3QgNi4xLjEK
IAogLi4gX2BzaW1wbGV0ZXN0YDoKIAogQ3JlYXRlIHlvdXIgZmlyc3QgdGVzdAogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DcmVh
dGUgYSBzaW1wbGUgdGVzdCBmdW5jdGlvbiB3aXRoIGp1c3QgZm91ciBsaW5lcyBvZiBjb2RlOjoK
K0NyZWF0ZSBhIHNpbXBsZSB0ZXN0IGZ1bmN0aW9uIHdpdGgganVzdCBmb3VyIGxpbmVzIG9mIGNv
ZGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X3Nh
bXBsZS5weQogICAgIGRlZiBmdW5jKHgpOgogICAgICAgICByZXR1cm4geCArIDEKIAorCiAgICAg
ZGVmIHRlc3RfYW5zd2VyKCk6CiAgICAgICAgIGFzc2VydCBmdW5jKDMpID09IDUKIAotVGhhdOKA
mXMgaXQuIFlvdSBjYW4gbm93IGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb246OgorVGhhdOKAmXMg
aXQuIFlvdSBjYW4gbm93IGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb246CisKKy4uIGNvZGUtYmxv
Y2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAg
IHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwg
cGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAg
ICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54Lnks
IHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hl
CisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAxIGl0ZW0KIAog
ICAgIHRlc3Rfc2FtcGxlLnB5IEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtNjEsMTAgKzY4LDEyIEBAIFRoYXTigJlzIGl0LiBZ
b3UgY2FuIG5vdyBleGVjdXRlIHRoZSB0ZXN0IGZ1bmN0aW9uOjoKICAgICBFICAgICAgIGFzc2Vy
dCA0ID09IDUKICAgICBFICAgICAgICArICB3aGVyZSA0ID0gZnVuYygzKQogCi0gICAgdGVzdF9z
YW1wbGUucHk6NTogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
IDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAg
dGVzdF9zYW1wbGUucHk6NjogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09
CisgICAgRkFJTEVEIHRlc3Rfc2FtcGxlLnB5Ojp0ZXN0X2Fuc3dlciAtIGFzc2VydCA0ID09IDUK
KyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDEgZmFpbGVkIGluIDAuMTJzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoaXMgdGVzdCByZXR1cm5zIGEgZmFpbHVyZSBy
ZXBvcnQgYmVjYXVzZSBgYGZ1bmMoMylgYCBkb2VzIG5vdCByZXR1cm4gYGA1YGAuCitUaGUgYGBb
MTAwJV1gYCByZWZlcnMgdG8gdGhlIG92ZXJhbGwgcHJvZ3Jlc3Mgb2YgcnVubmluZyBhbGwgdGVz
dCBjYXNlcy4gQWZ0ZXIgaXQgZmluaXNoZXMsIHB5dGVzdCB0aGVuIHNob3dzIGEgZmFpbHVyZSBy
ZXBvcnQgYmVjYXVzZSBgYGZ1bmMoMylgYCBkb2VzIG5vdCByZXR1cm4gYGA1YGAuCiAKIC4uIG5v
dGU6OgogCkBAIC03OSwzOSArODgsNTYgQEAgUnVuIG11bHRpcGxlIHRlc3RzCiBBc3NlcnQgdGhh
dCBhIGNlcnRhaW4gZXhjZXB0aW9uIGlzIHJhaXNlZAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVXNlIHRoZSBgYHJhaXNl
c2BgIGhlbHBlciB0byBhc3NlcnQgdGhhdCBzb21lIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjo6
CitVc2UgdGhlIDpyZWY6YHJhaXNlcyA8YXNzZXJ0cmFpc2VzPmAgaGVscGVyIHRvIGFzc2VydCB0
aGF0IHNvbWUgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9zeXNleGl0LnB5CiAgICAgaW1wb3J0IHB5dGVz
dAorCisKICAgICBkZWYgZigpOgogICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KDEpCiAKKwogICAg
IGRlZiB0ZXN0X215dGVzdCgpOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhp
dCk6CiAgICAgICAgICAgICBmKCkKIAotRXhlY3V0ZSB0aGUgdGVzdCBmdW5jdGlvbiB3aXRoIOKA
nHF1aWV04oCdIHJlcG9ydGluZyBtb2RlOjoKK0V4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb24gd2l0
aCDigJxxdWlldOKAnSByZXBvcnRpbmcgbW9kZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAog
CiAgICAgJCBweXRlc3QgLXEgdGVzdF9zeXNleGl0LnB5CiAgICAgLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVd
Ci0gICAgMSBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgMSBwYXNzZWQgaW4gMC4xMnMKKwor
Li4gbm90ZTo6CisKKyAgICBUaGUgYGAtcS8tLXF1aWV0YGAgZmxhZyBrZWVwcyB0aGUgb3V0cHV0
IGJyaWVmIGluIHRoaXMgYW5kIGZvbGxvd2luZyBleGFtcGxlcy4KIAogR3JvdXAgbXVsdGlwbGUg
dGVzdHMgaW4gYSBjbGFzcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT25jZSB5b3UgZGV2ZWxvcCBtdWx0aXBsZSB0ZXN0
cywgeW91IG1heSB3YW50IHRvIGdyb3VwIHRoZW0gaW50byBhIGNsYXNzLiBweXRlc3QgbWFrZXMg
aXQgZWFzeSB0byBjcmVhdGUgYSBjbGFzcyBjb250YWluaW5nIG1vcmUgdGhhbiBvbmUgdGVzdDo6
CisuLiByZWdlbmRvYzp3aXBlCisKK09uY2UgeW91IGRldmVsb3AgbXVsdGlwbGUgdGVzdHMsIHlv
dSBtYXkgd2FudCB0byBncm91cCB0aGVtIGludG8gYSBjbGFzcy4gcHl0ZXN0IG1ha2VzIGl0IGVh
c3kgdG8gY3JlYXRlIGEgY2xhc3MgY29udGFpbmluZyBtb3JlIHRoYW4gb25lIHRlc3Q6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X2NsYXNzLnB5Ci0g
ICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisgICAgY2xhc3MgVGVzdENsYXNzOgogICAgICAg
ICBkZWYgdGVzdF9vbmUoc2VsZik6CiAgICAgICAgICAgICB4ID0gInRoaXMiCi0gICAgICAgICAg
ICBhc3NlcnQgJ2gnIGluIHgKKyAgICAgICAgICAgIGFzc2VydCAiaCIgaW4geAogCiAgICAgICAg
IGRlZiB0ZXN0X3R3byhzZWxmKToKICAgICAgICAgICAgIHggPSAiaGVsbG8iCi0gICAgICAgICAg
ICBhc3NlcnQgaGFzYXR0cih4LCAnY2hlY2snKQorICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIo
eCwgImNoZWNrIikKKworYGBweXRlc3RgYCBkaXNjb3ZlcnMgYWxsIHRlc3RzIGZvbGxvd2luZyBp
dHMgOnJlZjpgQ29udmVudGlvbnMgZm9yIFB5dGhvbiB0ZXN0IGRpc2NvdmVyeSA8dGVzdCBkaXNj
b3Zlcnk+YCwgc28gaXQgZmluZHMgYm90aCBgYHRlc3RfYGAgcHJlZml4ZWQgZnVuY3Rpb25zLiBU
aGVyZSBpcyBubyBuZWVkIHRvIHN1YmNsYXNzIGFueXRoaW5nLCBidXQgbWFrZSBzdXJlIHRvIHBy
ZWZpeCB5b3VyIGNsYXNzIHdpdGggYGBUZXN0YGAgb3RoZXJ3aXNlIHRoZSBjbGFzcyB3aWxsIGJl
IHNraXBwZWQuIFdlIGNhbiBzaW1wbHkgcnVuIHRoZSBtb2R1bGUgYnkgcGFzc2luZyBpdHMgZmls
ZW5hbWU6CiAKLWBgcHl0ZXN0YGAgZGlzY292ZXJzIGFsbCB0ZXN0cyBmb2xsb3dpbmcgaXRzIDpy
ZWY6YENvbnZlbnRpb25zIGZvciBQeXRob24gdGVzdCBkaXNjb3ZlcnkgPHRlc3QgZGlzY292ZXJ5
PmAsIHNvIGl0IGZpbmRzIGJvdGggYGB0ZXN0X2BgIHByZWZpeGVkIGZ1bmN0aW9ucy4gVGhlcmUg
aXMgbm8gbmVlZCB0byBzdWJjbGFzcyBhbnl0aGluZy4gV2UgY2FuIHNpbXBseSBydW4gdGhlIG1v
ZHVsZSBieSBwYXNzaW5nIGl0cyBmaWxlbmFtZTo6CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAK
ICAgICAkIHB5dGVzdCAtcSB0ZXN0X2NsYXNzLnB5CiAgICAgLkYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBA
IC0xMjIsMjYgKzE0OCw4MyBAQCBPbmNlIHlvdSBkZXZlbG9wIG11bHRpcGxlIHRlc3RzLCB5b3Ug
bWF5IHdhbnQgdG8gZ3JvdXAgdGhlbSBpbnRvIGEgY2xhc3MuIHB5dGVzdAogCiAgICAgICAgIGRl
ZiB0ZXN0X3R3byhzZWxmKToKICAgICAgICAgICAgIHggPSAiaGVsbG8iCi0gICAgPiAgICAgICBh
c3NlcnQgaGFzYXR0cih4LCAnY2hlY2snKQorICAgID4gICAgICAgYXNzZXJ0IGhhc2F0dHIoeCwg
ImNoZWNrIikKICAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgRmFsc2UKICAgICBF
ICAgICAgICArICB3aGVyZSBGYWxzZSA9IGhhc2F0dHIoJ2hlbGxvJywgJ2NoZWNrJykKIAogICAg
IHRlc3RfY2xhc3MucHk6ODogQXNzZXJ0aW9uRXJyb3IKLSAgICAxIGZhaWxlZCwgMSBwYXNzZWQg
aW4gMC4xMiBzZWNvbmRzCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0
IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0
X2NsYXNzLnB5OjpUZXN0Q2xhc3M6OnRlc3RfdHdvIC0gQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCBG
YWxzZQorICAgIDEgZmFpbGVkLCAxIHBhc3NlZCBpbiAwLjEycwogCiBUaGUgZmlyc3QgdGVzdCBw
YXNzZWQgYW5kIHRoZSBzZWNvbmQgZmFpbGVkLiBZb3UgY2FuIGVhc2lseSBzZWUgdGhlIGludGVy
bWVkaWF0ZSB2YWx1ZXMgaW4gdGhlIGFzc2VydGlvbiB0byBoZWxwIHlvdSB1bmRlcnN0YW5kIHRo
ZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLgogCitHcm91cGluZyB0ZXN0cyBpbiBjbGFzc2VzIGNh
biBiZSBiZW5lZmljaWFsIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnM6CisKKyAqIFRlc3Qgb3Jn
YW5pemF0aW9uCisgKiBTaGFyaW5nIGZpeHR1cmVzIGZvciB0ZXN0cyBvbmx5IGluIHRoYXQgcGFy
dGljdWxhciBjbGFzcworICogQXBwbHlpbmcgbWFya3MgYXQgdGhlIGNsYXNzIGxldmVsIGFuZCBo
YXZpbmcgdGhlbSBpbXBsaWNpdGx5IGFwcGx5IHRvIGFsbCB0ZXN0cworCitTb21ldGhpbmcgdG8g
YmUgYXdhcmUgb2Ygd2hlbiBncm91cGluZyB0ZXN0cyBpbnNpZGUgY2xhc3NlcyBpcyB0aGF0IGVh
Y2ggdGVzdCBoYXMgYSB1bmlxdWUgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLgorSGF2aW5nIGVhY2gg
dGVzdCBzaGFyZSB0aGUgc2FtZSBjbGFzcyBpbnN0YW5jZSB3b3VsZCBiZSB2ZXJ5IGRldHJpbWVu
dGFsIHRvIHRlc3QgaXNvbGF0aW9uIGFuZCB3b3VsZCBwcm9tb3RlIHBvb3IgdGVzdCBwcmFjdGlj
ZXMuCitUaGlzIGlzIG91dGxpbmVkIGJlbG93OgorCisuLiByZWdlbmRvYzp3aXBlCisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudCBvZiB0ZXN0X2NsYXNzX2RlbW8ucHkK
KyAgICBjbGFzcyBUZXN0Q2xhc3NEZW1vSW5zdGFuY2U6CisgICAgICAgIGRlZiB0ZXN0X29uZShz
ZWxmKToKKyAgICAgICAgICAgIGFzc2VydCAwCisKKyAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYp
OgorICAgICAgICAgICAgYXNzZXJ0IDAKKworCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisKKyAg
ICAkIHB5dGVzdCAtayBUZXN0Q2xhc3NEZW1vSW5zdGFuY2UgLXEKKyAgICBGRiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
MTAwJV0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19fX19f
XyBUZXN0Q2xhc3NEZW1vSW5zdGFuY2UudGVzdF9vbmUgX19fX19fX19fX19fX19fX19fX19fXwor
CisgICAgc2VsZiA9IDx0ZXN0X2NsYXNzX2RlbW8uVGVzdENsYXNzRGVtb0luc3RhbmNlIG9iamVj
dCBhdCAweGRlYWRiZWVmPgorCisgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmKToKKyAgICA+ICAg
ICAgIGFzc2VydCAwCisgICAgRSAgICAgICBhc3NlcnQgMAorCisgICAgdGVzdF9jbGFzc19kZW1v
LnB5OjM6IEFzc2VydGlvbkVycm9yCisgICAgX19fX19fX19fX19fX19fX19fX19fXyBUZXN0Q2xh
c3NEZW1vSW5zdGFuY2UudGVzdF90d28gX19fX19fX19fX19fX19fX19fX19fXworCisgICAgc2Vs
ZiA9IDx0ZXN0X2NsYXNzX2RlbW8uVGVzdENsYXNzRGVtb0luc3RhbmNlIG9iamVjdCBhdCAweGRl
YWRiZWVmPgorCisgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmKToKKyAgICA+ICAgICAgIGFzc2Vy
dCAwCisgICAgRSAgICAgICBhc3NlcnQgMAorCisgICAgdGVzdF9jbGFzc19kZW1vLnB5OjY6IEFz
c2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1
bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X2Ns
YXNzX2RlbW8ucHk6OlRlc3RDbGFzc0RlbW9JbnN0YW5jZTo6dGVzdF9vbmUgLSBhc3NlcnQgMAor
ICAgIEZBSUxFRCB0ZXN0X2NsYXNzX2RlbW8ucHk6OlRlc3RDbGFzc0RlbW9JbnN0YW5jZTo6dGVz
dF90d28gLSBhc3NlcnQgMAorICAgIDIgZmFpbGVkIGluIDAuMTJzCisKIFJlcXVlc3QgYSB1bmlx
dWUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgZnVuY3Rpb25hbCB0ZXN0cwogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotYGBw
eXRlc3RgYCBwcm92aWRlcyBgQnVpbHRpbiBmaXh0dXJlcy9mdW5jdGlvbiBhcmd1bWVudHMgPGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9idWlsdGluLmh0bWwjYnVpbHRpbmZpeHR1
cmVzPmBfIHRvIHJlcXVlc3QgYXJiaXRyYXJ5IHJlc291cmNlcywgbGlrZSBhIHVuaXF1ZSB0ZW1w
b3JhcnkgZGlyZWN0b3J5OjoKK2BgcHl0ZXN0YGAgcHJvdmlkZXMgYEJ1aWx0aW4gZml4dHVyZXMv
ZnVuY3Rpb24gYXJndW1lbnRzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvYnVp
bHRpbi5odG1sPmBfIHRvIHJlcXVlc3QgYXJiaXRyYXJ5IHJlc291cmNlcywgbGlrZSBhIHVuaXF1
ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAj
IGNvbnRlbnQgb2YgdGVzdF90bXBkaXIucHkKICAgICBkZWYgdGVzdF9uZWVkc2ZpbGVzKHRtcGRp
cik6Ci0gICAgICAgIHByaW50ICh0bXBkaXIpCisgICAgICAgIHByaW50KHRtcGRpcikKICAgICAg
ICAgYXNzZXJ0IDAKIAotTGlzdCB0aGUgbmFtZSBgYHRtcGRpcmBgIGluIHRoZSB0ZXN0IGZ1bmN0
aW9uIHNpZ25hdHVyZSBhbmQgYGBweXRlc3RgYCB3aWxsIGxvb2t1cCBhbmQgY2FsbCBhIGZpeHR1
cmUgZmFjdG9yeSB0byBjcmVhdGUgdGhlIHJlc291cmNlIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSB0
ZXN0IGZ1bmN0aW9uIGNhbGwuIEJlZm9yZSB0aGUgdGVzdCBydW5zLCBgYHB5dGVzdGBgIGNyZWF0
ZXMgYSB1bmlxdWUtcGVyLXRlc3QtaW52b2NhdGlvbiB0ZW1wb3JhcnkgZGlyZWN0b3J5OjoKK0xp
c3QgdGhlIG5hbWUgYGB0bXBkaXJgYCBpbiB0aGUgdGVzdCBmdW5jdGlvbiBzaWduYXR1cmUgYW5k
IGBgcHl0ZXN0YGAgd2lsbCBsb29rdXAgYW5kIGNhbGwgYSBmaXh0dXJlIGZhY3RvcnkgdG8gY3Jl
YXRlIHRoZSByZXNvdXJjZSBiZWZvcmUgcGVyZm9ybWluZyB0aGUgdGVzdCBmdW5jdGlvbiBjYWxs
LiBCZWZvcmUgdGhlIHRlc3QgcnVucywgYGBweXRlc3RgYCBjcmVhdGVzIGEgdW5pcXVlLXBlci10
ZXN0LWludm9jYXRpb24gdGVtcG9yYXJ5IGRpcmVjdG9yeToKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgLXEgdGVzdF90bXBkaXIucHkKICAgICBGICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
MTAwJV0KQEAgLTE1MSwxOCArMjM0LDIyIEBAIExpc3QgdGhlIG5hbWUgYGB0bXBkaXJgYCBpbiB0
aGUgdGVzdCBmdW5jdGlvbiBzaWduYXR1cmUgYW5kIGBgcHl0ZXN0YGAgd2lsbCBsb29rCiAgICAg
dG1wZGlyID0gbG9jYWwoJ1BZVEVTVF9UTVBESVIvdGVzdF9uZWVkc2ZpbGVzMCcpCiAKICAgICAg
ICAgZGVmIHRlc3RfbmVlZHNmaWxlcyh0bXBkaXIpOgotICAgICAgICAgICAgcHJpbnQgKHRtcGRp
cikKKyAgICAgICAgICAgIHByaW50KHRtcGRpcikKICAgICA+ICAgICAgIGFzc2VydCAwCiAgICAg
RSAgICAgICBhc3NlcnQgMAogCiAgICAgdGVzdF90bXBkaXIucHk6MzogQXNzZXJ0aW9uRXJyb3IK
ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FwdHVyZWQgc3Rkb3V0IGNhbGwgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgUFlURVNUX1RNUERJUi90ZXN0X25lZWRzZmls
ZXMwCi0gICAgMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgPT09PT09PT09PT09PT09PT09
PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09
PQorICAgIEZBSUxFRCB0ZXN0X3RtcGRpci5weTo6dGVzdF9uZWVkc2ZpbGVzIC0gYXNzZXJ0IDAK
KyAgICAxIGZhaWxlZCBpbiAwLjEycwogCiBNb3JlIGluZm8gb24gdG1wZGlyIGhhbmRsaW5nIGlz
IGF2YWlsYWJsZSBhdCA6cmVmOmBUZW1wb3JhcnkgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIDx0bXBk
aXIgaGFuZGxpbmc+YC4KIAotRmluZCBvdXQgd2hhdCBraW5kIG9mIGJ1aWx0aW4gOnJlZjpgcHl0
ZXN0IGZpeHR1cmVzIDxmaXh0dXJlcz5gIGV4aXN0IHdpdGggdGhlIGNvbW1hbmQ6OgorRmluZCBv
dXQgd2hhdCBraW5kIG9mIGJ1aWx0aW4gOnJlZjpgcHl0ZXN0IGZpeHR1cmVzIDxmaXh0dXJlcz5g
IGV4aXN0IHdpdGggdGhlIGNvbW1hbmQ6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBw
eXRlc3QgLS1maXh0dXJlcyAgICMgc2hvd3MgYnVpbHRpbiBhbmQgY3VzdG9tIGZpeHR1cmVzCiAK
QEAgLTE3OSw1ICsyNjYsMyBAQCBDaGVjayBvdXQgYWRkaXRpb25hbCBweXRlc3QgcmVzb3VyY2Vz
IHRvIGhlbHAgeW91IGN1c3RvbWl6ZSB0ZXN0cyBmb3IgeW91ciB1bmlxdQogKiAiOnJlZjpgZml4
dHVyZXNgIiBmb3IgcHJvdmlkaW5nIGEgZnVuY3Rpb25hbCBiYXNlbGluZSB0byB5b3VyIHRlc3Rz
CiAqICI6cmVmOmBwbHVnaW5zYCIgZm9yIG1hbmFnaW5nIGFuZCB3cml0aW5nIHBsdWdpbnMKICog
IjpyZWY6YGdvb2RwcmFjdGljZXNgIiBmb3IgdmlydHVhbGVudiBhbmQgdGVzdCBsYXlvdXRzCi0K
LS4uIGluY2x1ZGU6OiBsaW5rcy5pbmMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9n
b29kcHJhY3RpY2VzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9nb29kcHJhY3RpY2VzLnJzdApp
bmRleCAyYmJkOWQwYWU1ODQuLjRiM2MwYWYxMGE2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2dvb2RwcmFjdGljZXMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9nb29kcHJh
Y3RpY2VzLnJzdApAQCAtMSw5ICsxLDM0IEBACi0uLiBoaWdobGlnaHRsYW5nOjogcHl0aG9uCisu
LiBoaWdobGlnaHQ6OiBweXRob24KIC4uIF9gZ29vZHByYWN0aWNlc2A6CiAKIEdvb2QgSW50ZWdy
YXRpb24gUHJhY3RpY2VzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAKK0luc3RhbGwgcGFja2FnZSB3aXRoIHBpcAorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgZGV2ZWxvcG1lbnQsIHdlIHJl
Y29tbWVuZCB5b3UgdXNlIHZlbnZfIGZvciB2aXJ0dWFsIGVudmlyb25tZW50cyBhbmQKK3BpcF8g
Zm9yIGluc3RhbGxpbmcgeW91ciBhcHBsaWNhdGlvbiBhbmQgYW55IGRlcGVuZGVuY2llcywKK2Fz
IHdlbGwgYXMgdGhlIGBgcHl0ZXN0YGAgcGFja2FnZSBpdHNlbGYuCitUaGlzIGVuc3VyZXMgeW91
ciBjb2RlIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGlzb2xhdGVkIGZyb20geW91ciBzeXN0ZW0gUHl0
aG9uIGluc3RhbGxhdGlvbi4KKworTmV4dCwgcGxhY2UgYSBgYHNldHVwLnB5YGAgZmlsZSBpbiB0
aGUgcm9vdCBvZiB5b3VyIHBhY2thZ2Ugd2l0aCB0aGUgZm9sbG93aW5nIG1pbmltdW0gY29udGVu
dDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZnJvbSBzZXR1cHRvb2xzIGltcG9y
dCBzZXR1cCwgZmluZF9wYWNrYWdlcworCisgICAgc2V0dXAobmFtZT0iUEFDS0FHRU5BTUUiLCBw
YWNrYWdlcz1maW5kX3BhY2thZ2VzKCkpCisKK1doZXJlIGBgUEFDS0FHRU5BTUVgYCBpcyB0aGUg
bmFtZSBvZiB5b3VyIHBhY2thZ2UuIFlvdSBjYW4gdGhlbiBpbnN0YWxsIHlvdXIgcGFja2FnZSBp
biAiZWRpdGFibGUiIG1vZGUgYnkgcnVubmluZyBmcm9tIHRoZSBzYW1lIGRpcmVjdG9yeToKKwor
Li4gY29kZS1ibG9jazo6IGJhc2gKKworICAgICBwaXAgaW5zdGFsbCAtZSAuCisKK3doaWNoIGxl
dHMgeW91IGNoYW5nZSB5b3VyIHNvdXJjZSBjb2RlIChib3RoIHRlc3RzIGFuZCBhcHBsaWNhdGlv
bikgYW5kIHJlcnVuIHRlc3RzIGF0IHdpbGwuCitUaGlzIGlzIHNpbWlsYXIgdG8gcnVubmluZyBg
YHB5dGhvbiBzZXR1cC5weSBkZXZlbG9wYGAgb3IgYGBjb25kYSBkZXZlbG9wYGAgaW4gdGhhdCBp
dCBpbnN0YWxscworeW91ciBwYWNrYWdlIHVzaW5nIGEgc3ltbGluayB0byB5b3VyIGRldmVsb3Bt
ZW50IGNvZGUuCiAKIC4uIF9gdGVzdCBkaXNjb3ZlcnlgOgogLi4gX2BQeXRob24gdGVzdCBkaXNj
b3ZlcnlgOgpAQCAtMjAsOCArNDUsOCBAQCBDb252ZW50aW9ucyBmb3IgUHl0aG9uIHRlc3QgZGlz
Y292ZXJ5CiAqIEluIHRob3NlIGRpcmVjdG9yaWVzLCBzZWFyY2ggZm9yIGBgdGVzdF8qLnB5YGAg
b3IgYGAqX3Rlc3QucHlgYCBmaWxlcywgaW1wb3J0ZWQgYnkgdGhlaXIgYHRlc3QgcGFja2FnZSBu
YW1lYF8uCiAqIEZyb20gdGhvc2UgZmlsZXMsIGNvbGxlY3QgdGVzdCBpdGVtczoKIAotICAqIGBg
dGVzdF9gYCBwcmVmaXhlZCB0ZXN0IGZ1bmN0aW9ucyBvciBtZXRob2RzIG91dHNpZGUgb2YgY2xh
c3MKLSAgKiBgYHRlc3RfYGAgcHJlZml4ZWQgdGVzdCBmdW5jdGlvbnMgb3IgbWV0aG9kcyBpbnNp
ZGUgYGBUZXN0YGAgcHJlZml4ZWQgdGVzdCBjbGFzc2VzICh3aXRob3V0IGFuIGBgX19pbml0X19g
YCBtZXRob2QpCisgICogYGB0ZXN0YGAgcHJlZml4ZWQgdGVzdCBmdW5jdGlvbnMgb3IgbWV0aG9k
cyBvdXRzaWRlIG9mIGNsYXNzCisgICogYGB0ZXN0YGAgcHJlZml4ZWQgdGVzdCBmdW5jdGlvbnMg
b3IgbWV0aG9kcyBpbnNpZGUgYGBUZXN0YGAgcHJlZml4ZWQgdGVzdCBjbGFzc2VzICh3aXRob3V0
IGFuIGBgX19pbml0X19gYCBtZXRob2QpCiAKIEZvciBleGFtcGxlcyBvZiBob3cgdG8gY3VzdG9t
aXplIHlvdXIgdGVzdCBkaXNjb3ZlcnkgOmRvYzpgZXhhbXBsZS9weXRob25jb2xsZWN0aW9uYC4K
IApAQCAtMzksNyArNjQsOSBAQCBUZXN0cyBvdXRzaWRlIGFwcGxpY2F0aW9uIGNvZGUKIAogUHV0
dGluZyB0ZXN0cyBpbnRvIGFuIGV4dHJhIGRpcmVjdG9yeSBvdXRzaWRlIHlvdXIgYWN0dWFsIGFw
cGxpY2F0aW9uIGNvZGUKIG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3UgaGF2ZSBtYW55IGZ1bmN0aW9u
YWwgdGVzdHMgb3IgZm9yIG90aGVyIHJlYXNvbnMgd2FudAotdG8ga2VlcCB0ZXN0cyBzZXBhcmF0
ZSBmcm9tIGFjdHVhbCBhcHBsaWNhdGlvbiBjb2RlIChvZnRlbiBhIGdvb2QgaWRlYSk6OgordG8g
a2VlcCB0ZXN0cyBzZXBhcmF0ZSBmcm9tIGFjdHVhbCBhcHBsaWNhdGlvbiBjb2RlIChvZnRlbiBh
IGdvb2QgaWRlYSk6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKICAgICBzZXR1cC5weQogICAg
IG15cGtnLwpAQCAtNTEsMTcgKzc4LDMwIEBAIHRvIGtlZXAgdGVzdHMgc2VwYXJhdGUgZnJvbSBh
Y3R1YWwgYXBwbGljYXRpb24gY29kZSAob2Z0ZW4gYSBnb29kIGlkZWEpOjoKICAgICAgICAgdGVz
dF92aWV3LnB5CiAgICAgICAgIC4uLgogCi1UaGlzIHdheSB5b3VyIHRlc3RzIGNhbiBydW4gZWFz
aWx5IGFnYWluc3QgYW4gaW5zdGFsbGVkIHZlcnNpb24KLW9mIGBgbXlwa2dgYC4KK1RoaXMgaGFz
IHRoZSBmb2xsb3dpbmcgYmVuZWZpdHM6CiAKLU5vdGUgdGhhdCB1c2luZyB0aGlzIHNjaGVtZSB5
b3VyIHRlc3QgZmlsZXMgbXVzdCBoYXZlICoqdW5pcXVlIG5hbWVzKiosIGJlY2F1c2UKKyogWW91
ciB0ZXN0cyBjYW4gcnVuIGFnYWluc3QgYW4gaW5zdGFsbGVkIHZlcnNpb24gYWZ0ZXIgZXhlY3V0
aW5nIGBgcGlwIGluc3RhbGwgLmBgLgorKiBZb3VyIHRlc3RzIGNhbiBydW4gYWdhaW5zdCB0aGUg
bG9jYWwgY29weSB3aXRoIGFuIGVkaXRhYmxlIGluc3RhbGwgYWZ0ZXIgZXhlY3V0aW5nIGBgcGlw
IGluc3RhbGwgLS1lZGl0YWJsZSAuYGAuCisqIElmIHlvdSBkb24ndCBoYXZlIGEgYGBzZXR1cC5w
eWBgIGZpbGUgYW5kIGFyZSByZWx5aW5nIG9uIHRoZSBmYWN0IHRoYXQgUHl0aG9uIGJ5IGRlZmF1
bHQgcHV0cyB0aGUgY3VycmVudAorICBkaXJlY3RvcnkgaW4gYGBzeXMucGF0aGBgIHRvIGltcG9y
dCB5b3VyIHBhY2thZ2UsIHlvdSBjYW4gZXhlY3V0ZSBgYHB5dGhvbiAtbSBweXRlc3RgYCB0byBl
eGVjdXRlIHRoZSB0ZXN0cyBhZ2FpbnN0IHRoZQorICBsb2NhbCBjb3B5IGRpcmVjdGx5LCB3aXRo
b3V0IHVzaW5nIGBgcGlwYGAuCisKKy4uIG5vdGU6OgorCisgICAgU2VlIDpyZWY6YHB5dGVzdCB2
cyBweXRob24gLW0gcHl0ZXN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIGNhbGxpbmcgYGBweXRlc3RgYCBhbmQKKyAgICBgYHB5dGhvbiAtbSBweXRl
c3RgYC4KKworTm90ZSB0aGF0IHRoaXMgc2NoZW1lIGhhcyBhIGRyYXdiYWNrIGlmIHlvdSBhcmUg
dXNpbmcgYGBwcmVwZW5kYGAgOnJlZjpgaW1wb3J0IG1vZGUgPGltcG9ydC1tb2Rlcz5gCisod2hp
Y2ggaXMgdGhlIGRlZmF1bHQpOiB5b3VyIHRlc3QgZmlsZXMgbXVzdCBoYXZlICoqdW5pcXVlIG5h
bWVzKiosIGJlY2F1c2UKIGBgcHl0ZXN0YGAgd2lsbCBpbXBvcnQgdGhlbSBhcyAqdG9wLWxldmVs
KiBtb2R1bGVzIHNpbmNlIHRoZXJlIGFyZSBubyBwYWNrYWdlcwogdG8gZGVyaXZlIGEgZnVsbCBw
YWNrYWdlIG5hbWUgZnJvbS4gSW4gb3RoZXIgd29yZHMsIHRoZSB0ZXN0IGZpbGVzIGluIHRoZSBl
eGFtcGxlIGFib3ZlIHdpbGwKIGJlIGltcG9ydGVkIGFzIGBgdGVzdF9hcHBgYCBhbmQgYGB0ZXN0
X3ZpZXdgYCB0b3AtbGV2ZWwgbW9kdWxlcyBieSBhZGRpbmcgYGB0ZXN0cy9gYCB0bwogYGBzeXMu
cGF0aGBgLgogCiBJZiB5b3UgbmVlZCB0byBoYXZlIHRlc3QgbW9kdWxlcyB3aXRoIHRoZSBzYW1l
IG5hbWUsIHlvdSBtaWdodCBhZGQgYGBfX2luaXRfXy5weWBgIGZpbGVzIHRvIHlvdXIKLWBgdGVz
dHNgYCBmb2xkZXIgYW5kIHN1YmZvbGRlcnMsIGNoYW5naW5nIHRoZW0gdG8gcGFja2FnZXM6Ogor
YGB0ZXN0c2BgIGZvbGRlciBhbmQgc3ViZm9sZGVycywgY2hhbmdpbmcgdGhlbSB0byBwYWNrYWdl
czoKKworLi4gY29kZS1ibG9jazo6IHRleHQKIAogICAgIHNldHVwLnB5CiAgICAgbXlwa2cvCkBA
IC03OSwxMSArMTE5LDE2IEBAIE5vdyBweXRlc3Qgd2lsbCBsb2FkIHRoZSBtb2R1bGVzIGFzIGBg
dGVzdHMuZm9vLnRlc3Rfdmlld2BgIGFuZCBgYHRlc3RzLmJhci50ZXN0CiB5b3UgdG8gaGF2ZSBt
b2R1bGVzIHdpdGggdGhlIHNhbWUgbmFtZS4gQnV0IG5vdyB0aGlzIGludHJvZHVjZXMgYSBzdWJ0
bGUgcHJvYmxlbTogaW4gb3JkZXIgdG8gbG9hZAogdGhlIHRlc3QgbW9kdWxlcyBmcm9tIHRoZSBg
YHRlc3RzYGAgZGlyZWN0b3J5LCBweXRlc3QgcHJlcGVuZHMgdGhlIHJvb3Qgb2YgdGhlIHJlcG9z
aXRvcnkgdG8KIGBgc3lzLnBhdGhgYCwgd2hpY2ggYWRkcyB0aGUgc2lkZS1lZmZlY3QgdGhhdCBu
b3cgYGBteXBrZ2BgIGlzIGFsc28gaW1wb3J0YWJsZS4KKwogVGhpcyBpcyBwcm9ibGVtYXRpYyBp
ZiB5b3UgYXJlIHVzaW5nIGEgdG9vbCBsaWtlIGB0b3hgXyB0byB0ZXN0IHlvdXIgcGFja2FnZSBp
biBhIHZpcnR1YWwgZW52aXJvbm1lbnQsCiBiZWNhdXNlIHlvdSB3YW50IHRvIHRlc3QgdGhlICpp
bnN0YWxsZWQqIHZlcnNpb24gb2YgeW91ciBwYWNrYWdlLCBub3QgdGhlIGxvY2FsIGNvZGUgZnJv
bSB0aGUgcmVwb3NpdG9yeS4KIAorLi4gX2BzcmMtbGF5b3V0YDoKKwogSW4gdGhpcyBzaXR1YXRp
b24sIGl0IGlzICoqc3Ryb25nbHkqKiBzdWdnZXN0ZWQgdG8gdXNlIGEgYGBzcmNgYCBsYXlvdXQg
d2hlcmUgYXBwbGljYXRpb24gcm9vdCBwYWNrYWdlIHJlc2lkZXMgaW4gYQotc3ViLWRpcmVjdG9y
eSBvZiB5b3VyIHJvb3Q6Ogorc3ViLWRpcmVjdG9yeSBvZiB5b3VyIHJvb3Q6CisKKy4uIGNvZGUt
YmxvY2s6OiB0ZXh0CiAKICAgICBzZXR1cC5weQogICAgIHNyYy8KQEAgLTEwNCwxMiArMTQ5LDIz
IEBAIHN1Yi1kaXJlY3Rvcnkgb2YgeW91ciByb290OjoKIFRoaXMgbGF5b3V0IHByZXZlbnRzIGEg
bG90IG9mIGNvbW1vbiBwaXRmYWxscyBhbmQgaGFzIG1hbnkgYmVuZWZpdHMsIHdoaWNoIGFyZSBi
ZXR0ZXIgZXhwbGFpbmVkIGluIHRoaXMgZXhjZWxsZW50CiBgYmxvZyBwb3N0IGJ5IElvbmVsIENy
aXN0aWFuIE3Eg3JpZciZIDxodHRwczovL2Jsb2cuaW9uZWxtYy5yby8yMDE0LzA1LzI1L3B5dGhv
bi1wYWNrYWdpbmcvI3RoZS1zdHJ1Y3R1cmU+YF8uCiAKKy4uIG5vdGU6OgorICAgIFRoZSBuZXcg
YGAtLWltcG9ydC1tb2RlPWltcG9ydGxpYmBgIChzZWUgOnJlZjpgaW1wb3J0LW1vZGVzYCkgZG9l
c24ndCBoYXZlCisgICAgYW55IG9mIHRoZSBkcmF3YmFja3MgYWJvdmUgYmVjYXVzZSBgYHN5cy5w
YXRoYGAgYW5kIGBgc3lzLm1vZHVsZXNgYCBhcmUgbm90IGNoYW5nZWQgd2hlbiBpbXBvcnRpbmcK
KyAgICB0ZXN0IG1vZHVsZXMsIHNvIHVzZXJzIHRoYXQgcnVuCisgICAgaW50byB0aGlzIGlzc3Vl
IGFyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIHRyeSBpdCBhbmQgcmVwb3J0IGlmIHRoZSBuZXcg
b3B0aW9uIHdvcmtzIHdlbGwgZm9yIHRoZW0uCisKKyAgICBUaGUgYGBzcmNgYCBkaXJlY3Rvcnkg
bGF5b3V0IGlzIHN0aWxsIHN0cm9uZ2x5IHJlY29tbWVuZGVkIGhvd2V2ZXIuCisKKwogVGVzdHMg
YXMgcGFydCBvZiBhcHBsaWNhdGlvbiBjb2RlCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eXl4KIAogSW5saW5pbmcgdGVzdCBkaXJlY3RvcmllcyBpbnRvIHlvdXIgYXBwbGljYXRpb24g
cGFja2FnZQogaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGRpcmVjdCByZWxhdGlvbiBiZXR3ZWVuIHRl
c3RzIGFuZCBhcHBsaWNhdGlvbiBtb2R1bGVzIGFuZAotd2FudCB0byBkaXN0cmlidXRlIHRoZW0g
YWxvbmcgd2l0aCB5b3VyIGFwcGxpY2F0aW9uOjoKK3dhbnQgdG8gZGlzdHJpYnV0ZSB0aGVtIGFs
b25nIHdpdGggeW91ciBhcHBsaWNhdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHRleHQKIAogICAg
IHNldHVwLnB5CiAgICAgbXlwa2cvCkBAIC0xMjIsNyArMTc4LDkgQEAgd2FudCB0byBkaXN0cmli
dXRlIHRoZW0gYWxvbmcgd2l0aCB5b3VyIGFwcGxpY2F0aW9uOjoKICAgICAgICAgICAgIHRlc3Rf
dmlldy5weQogICAgICAgICAgICAgLi4uCiAKLUluIHRoaXMgc2NoZW1lLCBpdCBpcyBlYXN5IHRv
IHJ1biB5b3VyIHRlc3RzIHVzaW5nIHRoZSBgYC0tcHlhcmdzYGAgb3B0aW9uOjoKK0luIHRoaXMg
c2NoZW1lLCBpdCBpcyBlYXN5IHRvIHJ1biB5b3VyIHRlc3RzIHVzaW5nIHRoZSBgYC0tcHlhcmdz
YGAgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tcHlhcmdz
IG15cGtnCiAKQEAgLTE0NSw4ICsyMDMsOCBAQCBOb3RlIHRoYXQgdGhpcyBsYXlvdXQgYWxzbyB3
b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBgYHNyY2BgIGxheW91dCBtZW50aW9uZQogCiAu
LiBub3RlOjoKIAotICAgIElmIGBgcHl0ZXN0YGAgZmluZHMgYW4gImEvYi90ZXN0X21vZHVsZS5w
eSIgdGVzdCBmaWxlIHdoaWxlCi0gICAgcmVjdXJzaW5nIGludG8gdGhlIGZpbGVzeXN0ZW0gaXQg
ZGV0ZXJtaW5lcyB0aGUgaW1wb3J0IG5hbWUKKyAgICBJbiBgYHByZXBlbmRgYCBhbmQgYGBhcHBl
bmRgYCBpbXBvcnQtbW9kZXMsIGlmIHB5dGVzdCBmaW5kcyBhIGBgImEvYi90ZXN0X21vZHVsZS5w
eSJgYAorICAgIHRlc3QgZmlsZSB3aGlsZSByZWN1cnNpbmcgaW50byB0aGUgZmlsZXN5c3RlbSBp
dCBkZXRlcm1pbmVzIHRoZSBpbXBvcnQgbmFtZQogICAgIGFzIGZvbGxvd3M6CiAKICAgICAqIGRl
dGVybWluZSBgYGJhc2VkaXJgYDogdGhpcyBpcyB0aGUgZmlyc3QgInVwd2FyZCIgKHRvd2FyZHMg
dGhlIHJvb3QpCkBAIC0xNjcsNiArMjI1LDEwIEBAIE5vdGUgdGhhdCB0aGlzIGxheW91dCBhbHNv
IHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGBgc3JjYGAgbGF5b3V0IG1lbnRpb25lCiAg
ICAgZnJvbSBlYWNoIG90aGVyIGFuZCB0aHVzIGRlcml2aW5nIGEgY2Fub25pY2FsIGltcG9ydCBu
YW1lIGhlbHBzCiAgICAgdG8gYXZvaWQgc3VycHJpc2VzIHN1Y2ggYXMgYSB0ZXN0IG1vZHVsZSBn
ZXR0aW5nIGltcG9ydGVkIHR3aWNlLgogCisgICAgV2l0aCBgYC0taW1wb3J0LW1vZGU9aW1wb3J0
bGliYGAgdGhpbmdzIGFyZSBsZXNzIGNvbnZvbHV0ZWQgYmVjYXVzZQorICAgIHB5dGVzdCBkb2Vz
bid0IG5lZWQgdG8gY2hhbmdlIGBgc3lzLnBhdGhgYCBvciBgYHN5cy5tb2R1bGVzYGAsIG1ha2lu
ZyB0aGluZ3MKKyAgICBtdWNoIGxlc3Mgc3VycHJpc2luZy4KKwogCiAuLiBfYHZpcnR1YWxlbnZg
OiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvdmlydHVhbGVudi8KIC4uIF9gYnVpbGRvdXRgOiBo
dHRwOi8vd3d3LmJ1aWxkb3V0Lm9yZy8KQEAgLTE3NywxOSArMjM5LDYgQEAgTm90ZSB0aGF0IHRo
aXMgbGF5b3V0IGFsc28gd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYGBzcmNgYCBsYXlv
dXQgbWVudGlvbmUKIHRveAogLS0tLS0tCiAKLUZvciBkZXZlbG9wbWVudCwgd2UgcmVjb21tZW5k
IHRvIHVzZSB2aXJ0dWFsZW52XyBlbnZpcm9ubWVudHMgYW5kIHBpcF8KLWZvciBpbnN0YWxsaW5n
IHlvdXIgYXBwbGljYXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMKLWFzIHdlbGwgYXMgdGhlIGBg
cHl0ZXN0YGAgcGFja2FnZSBpdHNlbGYuIFRoaXMgZW5zdXJlcyB5b3VyIGNvZGUgYW5kCi1kZXBl
bmRlbmNpZXMgYXJlIGlzb2xhdGVkIGZyb20gdGhlIHN5c3RlbSBQeXRob24gaW5zdGFsbGF0aW9u
LgotCi1Zb3UgY2FuIHRoZW4gaW5zdGFsbCB5b3VyIHBhY2thZ2UgaW4gImVkaXRhYmxlIiBtb2Rl
OjoKLQotICAgICBwaXAgaW5zdGFsbCAtZSAuCi0KLXdoaWNoIGxldHMgeW91IGNoYW5nZSB5b3Vy
IHNvdXJjZSBjb2RlIChib3RoIHRlc3RzIGFuZCBhcHBsaWNhdGlvbikgYW5kIHJlcnVuIHRlc3Rz
IGF0IHdpbGwuCi1UaGlzIGlzIHNpbWlsYXIgdG8gcnVubmluZyBgcHl0aG9uIHNldHVwLnB5IGRl
dmVsb3BgIG9yIGBjb25kYSBkZXZlbG9wYCBpbiB0aGF0IGl0IGluc3RhbGxzCi15b3VyIHBhY2th
Z2UgdXNpbmcgYSBzeW1saW5rIHRvIHlvdXIgZGV2ZWxvcG1lbnQgY29kZS4KLQogT25jZSB5b3Ug
YXJlIGRvbmUgd2l0aCB5b3VyIHdvcmsgYW5kIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgeW91ciBh
Y3R1YWwKIHBhY2thZ2UgcGFzc2VzIGFsbCB0ZXN0cyB5b3UgbWF5IHdhbnQgdG8gbG9vayBpbnRv
IGB0b3hgXywgdGhlCiB2aXJ0dWFsZW52IHRlc3QgYXV0b21hdGlvbiB0b29sIGFuZCBpdHMgYHB5
dGVzdCBzdXBwb3J0CkBAIC0yMDAsMTAyICsyNDksNCBAQCBvcHRpb25zLiAgSXQgd2lsbCBydW4g
dGVzdHMgYWdhaW5zdCB0aGUgaW5zdGFsbGVkIHBhY2thZ2UgYW5kIG5vdAogYWdhaW5zdCB5b3Vy
IHNvdXJjZSBjb2RlIGNoZWNrb3V0LCBoZWxwaW5nIHRvIGRldGVjdCBwYWNrYWdpbmcKIGdsaXRj
aGVzLgogCi0KLUludGVncmF0aW5nIHdpdGggc2V0dXB0b29scyAvIGBgcHl0aG9uIHNldHVwLnB5
IHRlc3RgYCAvIGBgcHl0ZXN0LXJ1bm5lcmBgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Zb3UgY2Fu
IGludGVncmF0ZSB0ZXN0IHJ1bnMgaW50byB5b3VyIHNldHVwdG9vbHMgYmFzZWQgcHJvamVjdAot
d2l0aCB0aGUgYHB5dGVzdC1ydW5uZXIgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3Qt
cnVubmVyLz5gXyBwbHVnaW4uCi0KLUFkZCB0aGlzIHRvIGBgc2V0dXAucHlgYCBmaWxlOgotCi0u
LiBjb2RlLWJsb2NrOjogcHl0aG9uCi0KLSAgICBmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVw
Ci0KLSAgICBzZXR1cCgKLSAgICAgICAgIyAuLi4sCi0gICAgICAgIHNldHVwX3JlcXVpcmVzPVsi
cHl0ZXN0LXJ1bm5lciIsIC4uLl0sCi0gICAgICAgIHRlc3RzX3JlcXVpcmU9WyJweXRlc3QiLCAu
Li5dLAotICAgICAgICAjIC4uLiwKLSAgICApCi0KLQotQW5kIGNyZWF0ZSBhbiBhbGlhcyBpbnRv
IGBgc2V0dXAuY2ZnYGAgZmlsZToKLQotCi0uLiBjb2RlLWJsb2NrOjogaW5pCi0KLSAgICBbYWxp
YXNlc10KLSAgICB0ZXN0PXB5dGVzdAotCi1JZiB5b3Ugbm93IHR5cGU6OgotCi0gICAgcHl0aG9u
IHNldHVwLnB5IHRlc3QKLQotdGhpcyB3aWxsIGV4ZWN1dGUgeW91ciB0ZXN0cyB1c2luZyBgYHB5
dGVzdC1ydW5uZXJgYC4gQXMgdGhpcyBpcyBhCi1zdGFuZGFsb25lIHZlcnNpb24gb2YgYGBweXRl
c3RgYCBubyBwcmlvciBpbnN0YWxsYXRpb24gd2hhdHNvZXZlciBpcwotcmVxdWlyZWQgZm9yIGNh
bGxpbmcgdGhlIHRlc3QgY29tbWFuZC4gWW91IGNhbiBhbHNvIHBhc3MgYWRkaXRpb25hbAotYXJn
dW1lbnRzIHRvIHB5dGVzdCBzdWNoIGFzIHlvdXIgdGVzdCBkaXJlY3Rvcnkgb3Igb3RoZXIKLW9w
dGlvbnMgdXNpbmcgYGAtLWFkZG9wdHNgYC4KLQotWW91IGNhbiBhbHNvIHNwZWNpZnkgb3RoZXIg
cHl0ZXN0LWluaSBvcHRpb25zIGluIHlvdXIgYGBzZXR1cC5jZmdgYCBmaWxlCi1ieSBwdXR0aW5n
IHRoZW0gaW50byBhIGBgW3Rvb2w6cHl0ZXN0XWBgIHNlY3Rpb246Ci0KLS4uIGNvZGUtYmxvY2s6
OiBpbmkKLQotICAgIFt0b29sOnB5dGVzdF0KLSAgICBhZGRvcHRzID0gLS12ZXJib3NlCi0gICAg
cHl0aG9uX2ZpbGVzID0gdGVzdGluZy8qLyoucHkKLQotCi1NYW51YWwgSW50ZWdyYXRpb24KLV5e
Xl5eXl5eXl5eXl5eXl5eXgotCi1JZiBmb3Igc29tZSByZWFzb24geW91IGRvbid0IHdhbnQvY2Fu
J3QgdXNlIGBgcHl0ZXN0LXJ1bm5lcmBgLCB5b3UgY2FuIHdyaXRlCi15b3VyIG93biBzZXR1cHRv
b2xzIFRlc3QgY29tbWFuZCBmb3IgaW52b2tpbmcgcHl0ZXN0LgotCi0uLiBjb2RlLWJsb2NrOjog
cHl0aG9uCi0KLSAgICBpbXBvcnQgc3lzCi0KLSAgICBmcm9tIHNldHVwdG9vbHMuY29tbWFuZC50
ZXN0IGltcG9ydCB0ZXN0IGFzIFRlc3RDb21tYW5kCi0KLQotICAgIGNsYXNzIFB5VGVzdChUZXN0
Q29tbWFuZCk6Ci0gICAgICAgIHVzZXJfb3B0aW9ucyA9IFsoInB5dGVzdC1hcmdzPSIsICJhIiwg
IkFyZ3VtZW50cyB0byBwYXNzIHRvIHB5dGVzdCIpXQotCi0gICAgICAgIGRlZiBpbml0aWFsaXpl
X29wdGlvbnMoc2VsZik6Ci0gICAgICAgICAgICBUZXN0Q29tbWFuZC5pbml0aWFsaXplX29wdGlv
bnMoc2VsZikKLSAgICAgICAgICAgIHNlbGYucHl0ZXN0X2FyZ3MgPSAiIgotCi0gICAgICAgIGRl
ZiBydW5fdGVzdHMoc2VsZik6Ci0gICAgICAgICAgICBpbXBvcnQgc2hsZXgKLQotICAgICAgICAg
ICAgIyBpbXBvcnQgaGVyZSwgY2F1c2Ugb3V0c2lkZSB0aGUgZWdncyBhcmVuJ3QgbG9hZGVkCi0g
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICAgICAgICAgIGVycm5vID0gcHl0ZXN0Lm1h
aW4oc2hsZXguc3BsaXQoc2VsZi5weXRlc3RfYXJncykpCi0gICAgICAgICAgICBzeXMuZXhpdChl
cnJubykKLQotCi0gICAgc2V0dXAoCi0gICAgICAgICMgLi4uLAotICAgICAgICB0ZXN0c19yZXF1
aXJlPVsicHl0ZXN0Il0sCi0gICAgICAgIGNtZGNsYXNzPXsidGVzdCI6IFB5VGVzdH0sCi0gICAg
KQotCi1Ob3cgaWYgeW91IHJ1bjo6Ci0KLSAgICBweXRob24gc2V0dXAucHkgdGVzdAotCi10aGlz
IHdpbGwgZG93bmxvYWQgYGBweXRlc3RgYCBpZiBuZWVkZWQgYW5kIHRoZW4gcnVuIHlvdXIgdGVz
dHMKLWFzIHlvdSB3b3VsZCBleHBlY3QgaXQgdG8uIFlvdSBjYW4gcGFzcyBhIHNpbmdsZSBzdHJp
bmcgb2YgYXJndW1lbnRzCi11c2luZyB0aGUgYGAtLXB5dGVzdC1hcmdzYGAgb3IgYGAtYWBgIGNv
bW1hbmQtbGluZSBvcHRpb24uIEZvciBleGFtcGxlOjoKLQotICAgIHB5dGhvbiBzZXR1cC5weSB0
ZXN0IC1hICItLWR1cmF0aW9ucz01IgotCi1pcyBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgYGBweXRl
c3QgLS1kdXJhdGlvbnM9NWBgLgotCi0KLS4uIGluY2x1ZGU6OiBsaW5rcy5pbmMKKy4uIF9gdmVu
dmA6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS92ZW52Lmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9oaXN0b3JpY2FsLW5vdGVzLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9oaXN0b3JpY2FsLW5vdGVzLnJzdAppbmRleCAwMjhjZWZmOWIxNzQuLjRmODcyMmMx
YzE2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2hpc3RvcmljYWwtbm90ZXMucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9oaXN0b3JpY2FsLW5vdGVzLnJzdApAQCAtNCwxMCAr
NCwxMjEgQEAgSGlzdG9yaWNhbCBOb3RlcwogVGhpcyBwYWdlIGxpc3RzIGZlYXR1cmVzIG9yIGJl
aGF2aW9yIGZyb20gcHJldmlvdXMgdmVyc2lvbnMgb2YgcHl0ZXN0IHdoaWNoIGhhdmUgY2hhbmdl
ZCBvdmVyIHRoZSB5ZWFycy4gVGhleSBhcmUKIGtlcHQgaGVyZSBhcyBhIGhpc3RvcmljYWwgbm90
ZSBzbyB1c2VycyBsb29raW5nIGF0IG9sZCBjb2RlIGNhbiBmaW5kIGRvY3VtZW50YXRpb24gcmVs
YXRlZCB0byB0aGVtLgogCisKKy4uIF9tYXJrZXItcmV2YW1wOgorCitNYXJrZXIgcmV2YW1wIGFu
ZCBpdGVyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uY2hh
bmdlZDo6IDMuNgorCitweXRlc3QncyBtYXJrZXIgaW1wbGVtZW50YXRpb24gdHJhZGl0aW9uYWxs
eSB3b3JrZWQgYnkgc2ltcGx5IHVwZGF0aW5nIHRoZSBgYF9fZGljdF9fYGAgYXR0cmlidXRlIG9m
IGZ1bmN0aW9ucyB0byBjdW11bGF0aXZlbHkgYWRkIG1hcmtlcnMuIEFzIGEgcmVzdWx0LCBtYXJr
ZXJzIHdvdWxkIHVuaW50ZW50aW9uYWxseSBiZSBwYXNzZWQgYWxvbmcgY2xhc3MgaGllcmFyY2hp
ZXMgaW4gc3VycHJpc2luZyB3YXlzLiBGdXJ0aGVyLCB0aGUgQVBJIGZvciByZXRyaWV2aW5nIHRo
ZW0gd2FzIGluY29uc2lzdGVudCwgYXMgbWFya2VycyBmcm9tIHBhcmFtZXRlcml6YXRpb24gd291
bGQgYmUgc3RvcmVkIGRpZmZlcmVudGx5IHRoYW4gbWFya2VycyBhcHBsaWVkIHVzaW5nIHRoZSBg
YEBweXRlc3QubWFya2BgIGRlY29yYXRvciBhbmQgbWFya2VycyBhZGRlZCB2aWEgYGBub2RlLmFk
ZF9tYXJrZXJgYC4KKworVGhpcyBzdGF0ZSBvZiB0aGluZ3MgbWFkZSBpdCB0ZWNobmljYWxseSBu
ZXh0IHRvIGltcG9zc2libGUgdG8gdXNlIGRhdGEgZnJvbSBtYXJrZXJzIGNvcnJlY3RseSB3aXRo
b3V0IGhhdmluZyBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJuYWxzLCBsZWFkaW5n
IHRvIHN1YnRsZSBhbmQgaGFyZCB0byB1bmRlcnN0YW5kIGJ1Z3MgaW4gbW9yZSBhZHZhbmNlZCB1
c2FnZXMuCisKK0RlcGVuZGluZyBvbiBob3cgYSBtYXJrZXIgZ290IGRlY2xhcmVkL2NoYW5nZWQg
b25lIHdvdWxkIGdldCBlaXRoZXIgYSBgYE1hcmtlckluZm9gYCB3aGljaCBtaWdodCBjb250YWlu
IG1hcmtlcnMgZnJvbSBzaWJsaW5nIGNsYXNzZXMsCitgYE1hcmtEZWNvcmF0b3JzYGAgd2hlbiBt
YXJrcyBjYW1lIGZyb20gcGFyYW1ldGVyaXphdGlvbiBvciBmcm9tIGEgYGBub2RlLmFkZF9tYXJr
ZXJgYCBjYWxsLCBkaXNjYXJkaW5nIHByaW9yIG1hcmtzLiBBbHNvIGBgTWFya2VySW5mb2BgIGFj
dHMgbGlrZSBhIHNpbmdsZSBtYXJrLCB3aGVuIGl0IGluIGZhY3QgcmVwcmVzZW50cyBhIG1lcmdl
ZCB2aWV3IG9uIG11bHRpcGxlIG1hcmtzIHdpdGggdGhlIHNhbWUgbmFtZS4KKworT24gdG9wIG9m
IHRoYXQgbWFya2VycyB3ZXJlIG5vdCBhY2Nlc3NpYmxlIGluIHRoZSBzYW1lIHdheSBmb3IgbW9k
dWxlcywgY2xhc3NlcywgYW5kIGZ1bmN0aW9ucy9tZXRob2RzLgorSW4gZmFjdCwgbWFya2VycyB3
ZXJlIG9ubHkgYWNjZXNzaWJsZSBpbiBmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSB3ZXJlIGRlY2xh
cmVkIG9uIGNsYXNzZXMvbW9kdWxlcy4KKworQSBuZXcgQVBJIHRvIGFjY2VzcyBtYXJrZXJzIGhh
cyBiZWVuIGludHJvZHVjZWQgaW4gcHl0ZXN0IDMuNiBpbiBvcmRlciB0byBzb2x2ZSB0aGUgcHJv
YmxlbXMgd2l0aAordGhlIGluaXRpYWwgZGVzaWduLCBwcm92aWRpbmcgdGhlIDpmdW5jOmBfcHl0
ZXN0Lm5vZGVzLk5vZGUuaXRlcl9tYXJrZXJzYCBtZXRob2QgdG8gaXRlcmF0ZSBvdmVyCittYXJr
ZXJzIGluIGEgY29uc2lzdGVudCBtYW5uZXIgYW5kIHJld29ya2luZyB0aGUgaW50ZXJuYWxzLCB3
aGljaCBzb2x2ZWQgYSBncmVhdCBkZWFsIG9mIHByb2JsZW1zCit3aXRoIHRoZSBpbml0aWFsIGRl
c2lnbi4KKworCisuLiBfdXBkYXRlIG1hcmtlciBjb2RlOgorCitVcGRhdGluZyBjb2RlCit+fn5+
fn5+fn5+fn5+CisKK1RoZSBvbGQgYGBOb2RlLmdldF9tYXJrZXIobmFtZSlgYCBmdW5jdGlvbiBp
cyBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIGFuIGludGVybmFsIGBg
TWFya2VySW5mb2BgIG9iamVjdAord2hpY2ggY29udGFpbnMgdGhlIG1lcmdlZCBuYW1lLCBgYCph
cmdzYGAgYW5kIGBgKiprd2FyZ3NgYCBvZiBhbGwgdGhlIG1hcmtlcnMgd2hpY2ggYXBwbHkgdG8g
dGhhdCBub2RlLgorCitJbiBnZW5lcmFsIHRoZXJlIGFyZSB0d28gc2NlbmFyaW9zIG9uIGhvdyBt
YXJrZXJzIHNob3VsZCBiZSBoYW5kbGVkOgorCisxLiBNYXJrcyBvdmVyd3JpdGUgZWFjaCBvdGhl
ci4gT3JkZXIgbWF0dGVycyBidXQgeW91IG9ubHkgd2FudCB0byB0aGluayBvZiB5b3VyIG1hcmsg
YXMgYSBzaW5nbGUgaXRlbS4gRS5nLgorYGBsb2dfbGV2ZWwoJ2luZm8nKWBgIGF0IGEgbW9kdWxl
IGxldmVsIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBgYGxvZ19sZXZlbCgnZGVidWcnKWBgIGZvciBh
IHNwZWNpZmljIHRlc3QuCisKKyAgICBJbiB0aGlzIGNhc2UsIHVzZSBgYE5vZGUuZ2V0X2Nsb3Nl
c3RfbWFya2VyKG5hbWUpYGA6CisKKyAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAg
ICAgIyByZXBsYWNlIHRoaXM6CisgICAgICAgIG1hcmtlciA9IGl0ZW0uZ2V0X21hcmtlcigibG9n
X2xldmVsIikKKyAgICAgICAgaWYgbWFya2VyOgorICAgICAgICAgICAgbGV2ZWwgPSBtYXJrZXIu
YXJnc1swXQorCisgICAgICAgICMgYnkgdGhpczoKKyAgICAgICAgbWFya2VyID0gaXRlbS5nZXRf
Y2xvc2VzdF9tYXJrZXIoImxvZ19sZXZlbCIpCisgICAgICAgIGlmIG1hcmtlcjoKKyAgICAgICAg
ICAgIGxldmVsID0gbWFya2VyLmFyZ3NbMF0KKworMi4gTWFya3MgY29tcG9zZSBpbiBhbiBhZGRp
dGl2ZSBtYW5uZXIuIEUuZy4gYGBza2lwaWYoY29uZGl0aW9uKWBgIG1hcmtzIG1lYW4geW91IGp1
c3Qgd2FudCB0byBldmFsdWF0ZSBhbGwgb2YgdGhlbSwKK29yZGVyIGRvZXNuJ3QgZXZlbiBtYXR0
ZXIuIFlvdSBwcm9iYWJseSB3YW50IHRvIHRoaW5rIG9mIHlvdXIgbWFya3MgYXMgYSBzZXQgaGVy
ZS4KKworICAgSW4gdGhpcyBjYXNlIGl0ZXJhdGUgb3ZlciBlYWNoIG1hcmsgYW5kIGhhbmRsZSB0
aGVpciBgYCphcmdzYGAgYW5kIGBgKiprd2FyZ3NgYCBpbmRpdmlkdWFsbHkuCisKKyAgIC4uIGNv
ZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICAjIHJlcGxhY2UgdGhpcworICAgICAgICBza2lw
aWYgPSBpdGVtLmdldF9tYXJrZXIoInNraXBpZiIpCisgICAgICAgIGlmIHNraXBpZjoKKyAgICAg
ICAgICAgIGZvciBjb25kaXRpb24gaW4gc2tpcGlmLmFyZ3M6CisgICAgICAgICAgICAgICAgIyBl
dmFsIGNvbmRpdGlvbgorICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICMgYnkgdGhpczoK
KyAgICAgICAgZm9yIHNraXBpZiBpbiBpdGVtLml0ZXJfbWFya2Vycygic2tpcGlmIik6CisgICAg
ICAgICAgICBjb25kaXRpb24gPSBza2lwaWYuYXJnc1swXQorICAgICAgICAgICAgIyBldmFsIGNv
bmRpdGlvbgorCisKK0lmIHlvdSBhcmUgdW5zdXJlIG9yIGhhdmUgYW55IHF1ZXN0aW9ucywgcGxl
YXNlIGNvbnNpZGVyIG9wZW5pbmcKK2BhbiBpc3N1ZSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcz5gXy4KKworUmVsYXRlZCBpc3N1ZXMKK35+fn5+fn5+fn5+fn5+
CisKK0hlcmUgaXMgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIGlzc3VlcyBmaXhlZCBieSB0aGUg
bmV3IGltcGxlbWVudGF0aW9uOgorCisqIE1hcmtzIGRvbid0IHBpY2sgdXAgbmVzdGVkIGNsYXNz
ZXMgKGAjMTk5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5
OT5gXykuCisKKyogTWFya2VycyBzdGFpbiBvbiBhbGwgcmVsYXRlZCBjbGFzc2VzIChgIzU2OCA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Njg+YF8pLgorCisq
IENvbWJpbmluZyBtYXJrcyAtIGFyZ3MgYW5kIGt3YXJncyBjYWxjdWxhdGlvbiAoYCMyODk3IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4OTc+YF8pLgorCisq
IGBgcmVxdWVzdC5ub2RlLmdldF9tYXJrZXIoJ25hbWUnKWBgIHJldHVybnMgYGBOb25lYGAgZm9y
IG1hcmtlcnMgYXBwbGllZCBpbiBjbGFzc2VzIChgIzkwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85MDI+YF8pLgorCisqIE1hcmtzIGFwcGxpZWQgaW4gcGFy
YW1ldHJpemUgYXJlIHN0b3JlZCBhcyBtYXJrZGVjb3JhdG9yIChgIzI0MDAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQwMD5gXykuCisKKyogRml4IG1hcmtl
ciBpbnRlcmFjdGlvbiBpbiBhIGJhY2t3YXJkIGluY29tcGF0aWJsZSB3YXkgKGAjMTY3MCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjcwPmBfKS4KKworKiBS
ZWZhY3RvciBtYXJrcyB0byBnZXQgcmlkIG9mIHRoZSBjdXJyZW50ICJtYXJrcyB0cmFuc2ZlciIg
bWVjaGFuaXNtIChgIzIzNjMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjM2Mz5gXykuCisKKyogSW50cm9kdWNlIEZ1bmN0aW9uRGVmaW5pdGlvbiBub2RlLCB1
c2UgaXQgaW4gZ2VuZXJhdGVfdGVzdHMgKGAjMjUyMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTIyPmBfKS4KKworKiBSZW1vdmUgbmFtZWQgbWFya2VyIGF0
dHJpYnV0ZXMgYW5kIGNvbGxlY3QgbWFya2VycyBpbiBpdGVtcyAoYCM4OTEgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvODkxPmBfKS4KKworKiBza2lwaWYgbWFy
ayBmcm9tIHBhcmFtZXRyaXplIGhpZGVzIG1vZHVsZSBsZXZlbCBza2lwaWYgbWFyayAoYCMxNTQw
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1NDA+YF8pLgor
CisqIHNraXBpZiArIHBhcmFtZXRyaXplIG5vdCBza2lwcGluZyB0ZXN0cyAoYCMxMjk2IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEyOTY+YF8pLgorCisqIE1h
cmtlciB0cmFuc2ZlciBpbmNvbXBhdGlibGUgd2l0aCBpbmhlcml0YW5jZSAoYCM1MzUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM1PmBfKS4KKworTW9yZSBk
ZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgYG9yaWdpbmFsIFBSIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8zMzE3PmBfLgorCisuLiBub3RlOjoKKworICAgIGlu
IGEgZnV0dXJlIG1ham9yIHJlbGVhc2Ugb2YgcHl0ZXN0IHdlIHdpbGwgaW50cm9kdWNlIGNsYXNz
IGJhc2VkIG1hcmtlcnMsCisgICAgYXQgd2hpY2ggcG9pbnQgbWFya2VycyB3aWxsIG5vIGxvbmdl
ciBiZSBsaW1pdGVkIHRvIGluc3RhbmNlcyBvZiA6cHk6Y2xhc3M6YH5fcHl0ZXN0Lm1hcmsuTWFy
a2AuCisKKwogY2FjaGUgcGx1Z2luIGludGVncmF0ZWQgaW50byB0aGUgY29yZQogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjgKKwog
CiBUaGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgOnJlZjpgY29yZSBjYWNoZSA8Y2FjaGU+YCBwbHVn
aW4gd2FzIHByZXZpb3VzbHkgZGlzdHJpYnV0ZWQKIGFzIGEgdGhpcmQgcGFydHkgcGx1Z2luIG5h
bWVkIGBgcHl0ZXN0LWNhY2hlYGAuICBUaGUgY29yZSBwbHVnaW4KQEAgLTE4LDcgKzEyOSw3IEBA
IGNhbiBvbmx5IHN0b3JlL3JlY2VpdmUgZGF0YSBiZXR3ZWVuIHRlc3QgcnVucyB0aGF0IGlzIGpz
b24tc2VyaWFsaXphYmxlLgogZnVuY2FyZ3MgYW5kIGBgcHl0ZXN0X2Z1bmNhcmdfX2BgCiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjMK
KwogCiBJbiB2ZXJzaW9ucyBwcmlvciB0byAyLjMgdGhlcmUgd2FzIG5vIGBgQHB5dGVzdC5maXh0
dXJlYGAgbWFya2VyCiBhbmQgeW91IGhhZCB0byB1c2UgYSBtYWdpYyBgYHB5dGVzdF9mdW5jYXJn
X19OQU1FYGAgcHJlZml4CkBAIC0zMCw3ICsxNDEsNyBAQCBmdW5jdGlvbnMuCiBgYEBweXRlc3Qu
eWllbGRfZml4dHVyZWBgIGRlY29yYXRvcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjEwCisKIAogUHJpb3IgdG8gdmVyc2lvbiAy
LjEwLCBpbiBvcmRlciB0byB1c2UgYSBgYHlpZWxkYGAgc3RhdGVtZW50IHRvIGV4ZWN1dGUgdGVh
cmRvd24gY29kZSBvbmUKIGhhZCB0byBtYXJrIGEgZml4dHVyZSB1c2luZyB0aGUgYGB5aWVsZF9m
aXh0dXJlYGAgbWFya2VyLiBGcm9tIDIuMTAgb253YXJkLCBub3JtYWwKQEAgLTQxLDcgKzE1Miw3
IEBAIGFuZCBjb25zaWRlcmVkIGRlcHJlY2F0ZWQuCiBgYFtweXRlc3RdYGAgaGVhZGVyIGluIGBg
c2V0dXAuY2ZnYGAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2
ZXJzaW9uY2hhbmdlZDo6IDMuMAorCiAKIFByaW9yIHRvIDMuMCwgdGhlIHN1cHBvcnRlZCBzZWN0
aW9uIG5hbWUgd2FzIGBgW3B5dGVzdF1gYC4gRHVlIHRvIGhvdwogdGhpcyBtYXkgY29sbGlkZSB3
aXRoIHNvbWUgZGlzdHV0aWxzIGNvbW1hbmRzLCB0aGUgcmVjb21tZW5kZWQKQEAgLTU0LDE3ICsx
NjUsMTkgQEAgbmFtZSBpcyBgYFtweXRlc3RdYGAuCiBBcHBseWluZyBtYXJrcyB0byBgYEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZWBgIHBhcmFtZXRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6
IDMuMQorCiAKIFByaW9yIHRvIHZlcnNpb24gMy4xIHRoZSBzdXBwb3J0ZWQgbWVjaGFuaXNtIGZv
ciBtYXJraW5nIHZhbHVlcwotdXNlZCB0aGUgc3ludGF4OjoKK3VzZWQgdGhlIHN5bnRheDoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1wb3J0IHB5dGVzdAotICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgidGVzdF9pbnB1dCxleHBlY3RlZCIsIFsKLSAgICAgICAgKCIzKzUi
LCA4KSwKLSAgICAgICAgKCIyKzQiLCA2KSwKLSAgICAgICAgcHl0ZXN0Lm1hcmsueGZhaWwoKCI2
KjkiLCA0MiksKSwKLSAgICBdKQorCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisg
ICAgICAgICJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwgWygiMys1IiwgOCksICgiMis0IiwgNiksIHB5
dGVzdC5tYXJrLnhmYWlsKCgiNio5IiwgNDIpKV0KKyAgICApCiAgICAgZGVmIHRlc3RfZXZhbCh0
ZXN0X2lucHV0LCBleHBlY3RlZCk6CiAgICAgICAgIGFzc2VydCBldmFsKHRlc3RfaW5wdXQpID09
IGV4cGVjdGVkCiAKQEAgLTc4LDcgKzE5MSw3IEBAIFRoZSBvbGQgc3ludGF4IGlzIHBsYW5uZWQg
dG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QtNC4wLgogYGBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVg
YCBhcmd1bWVudCBuYW1lcyBhcyBhIHR1cGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjQKKwog
CiBJbiB2ZXJzaW9ucyBwcmlvciB0byAyLjQgb25lIG5lZWRlZCB0byBzcGVjaWZ5IHRoZSBhcmd1
bWVudAogbmFtZXMgYXMgYSB0dXBsZS4gIFRoaXMgcmVtYWlucyB2YWxpZCBidXQgdGhlIHNpbXBs
ZXIgYGAibmFtZTEsbmFtZTIsLi4uImBgCkBAIC04OSw3ICsyMDIsNyBAQCBpdCdzIGVhc2llciB0
byB3cml0ZSBhbmQgcHJvZHVjZXMgbGVzcyBsaW5lIG5vaXNlLgogc2V0dXA6IGlzIG5vdyBhbiAi
YXV0b3VzZSBmaXh0dXJlIgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0u
LiB2ZXJzaW9uY2hhbmdlZDo6IDIuMworCiAKIER1cmluZyBkZXZlbG9wbWVudCBwcmlvciB0byB0
aGUgcHl0ZXN0LTIuMyByZWxlYXNlIHRoZSBuYW1lCiBgYHB5dGVzdC5zZXR1cGBgIHdhcyB1c2Vk
IGJ1dCBiZWZvcmUgdGhlIHJlbGVhc2UgaXQgd2FzIHJlbmFtZWQKQEAgLTEwMiwxMiArMjE1LDE2
IEBAIG5hbWVseSA6cmVmOmBhdXRvdXNlIGZpeHR1cmVzYAogQ29uZGl0aW9ucyBhcyBzdHJpbmdz
IGluc3RlYWQgb2YgYm9vbGVhbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMi40CisKIAogUHJpb3IgdG8gcHl0ZXN0LTIu
NCB0aGUgb25seSB3YXkgdG8gc3BlY2lmeSBza2lwaWYveGZhaWwgY29uZGl0aW9ucyB3YXMKLXRv
IHVzZSBzdHJpbmdzOjoKK3RvIHVzZSBzdHJpbmdzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICBpbXBvcnQgc3lzCisKKwogICAgIEBweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJz
aW9uX2luZm8gPj0gKDMsMykiKQogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6CiAgICAgICAgIC4u
LgpAQCAtMTM5LDE3ICsyNTYsMjAgQEAgZGljdGlvbmFyeSB3aGljaCBpcyBjb25zdHJ1Y3RlZCBh
cyBmb2xsb3dzOgogICBleHByZXNzaW9uIGlzIGFwcGxpZWQuCiAKIFRoZSBweXRlc3QgYGBjb25m
aWdgYCBvYmplY3QgYWxsb3dzIHlvdSB0byBza2lwIGJhc2VkIG9uIGEgdGVzdAotY29uZmlndXJh
dGlvbiB2YWx1ZSB3aGljaCB5b3UgbWlnaHQgaGF2ZSBhZGRlZDo6Citjb25maWd1cmF0aW9uIHZh
bHVlIHdoaWNoIHlvdSBtaWdodCBoYXZlIGFkZGVkOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJub3QgY29uZmlnLmdldHZhbHVlKCdkYicpIikK
LSAgICBkZWYgdGVzdF9mdW5jdGlvbiguLi4pOgorICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6CiAg
ICAgICAgIC4uLgogCi1UaGUgZXF1aXZhbGVudCB3aXRoICJib29sZWFuIGNvbmRpdGlvbnMiIGlz
OjoKK1RoZSBlcXVpdmFsZW50IHdpdGggImJvb2xlYW4gY29uZGl0aW9ucyIgaXM6CiAKLSAgICBA
cHl0ZXN0Lm1hcmsuc2tpcGlmKG5vdCBweXRlc3QuY29uZmlnLmdldHZhbHVlKCJkYiIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhc29uPSItLWRiIHdhcyBub3Qgc3BlY2lmaWVkIikKLSAg
ICBkZWYgdGVzdF9mdW5jdGlvbiguLi4pOgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAg
QHB5dGVzdC5tYXJrLnNraXBpZihub3QgcHl0ZXN0LmNvbmZpZy5nZXR2YWx1ZSgiZGIiKSwgcmVh
c29uPSItLWRiIHdhcyBub3Qgc3BlY2lmaWVkIikKKyAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgog
ICAgICAgICBwYXNzCiAKIC4uIG5vdGU6OgpAQCAtMTYyLDE2ICsyODIsMzAgQEAgVGhlIGVxdWl2
YWxlbnQgd2l0aCAiYm9vbGVhbiBjb25kaXRpb25zIiBpczo6CiBgYHB5dGVzdC5zZXRfdHJhY2Uo
KWBgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMi40CiAK
LVByZXZpb3VzIHRvIHZlcnNpb24gMi40IHRvIHNldCBhIGJyZWFrIHBvaW50IGluIGNvZGUgb25l
IG5lZWRlZCB0byB1c2UgYGBweXRlc3Quc2V0X3RyYWNlKClgYDo6CisKK1ByZXZpb3VzIHRvIHZl
cnNpb24gMi40IHRvIHNldCBhIGJyZWFrIHBvaW50IGluIGNvZGUgb25lIG5lZWRlZCB0byB1c2Ug
YGBweXRlc3Quc2V0X3RyYWNlKClgYDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
aW1wb3J0IHB5dGVzdAorCisKICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgogICAgICAgICAuLi4K
LSAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgpICAgICMgaW52b2tlIFBEQiBkZWJ1Z2dlciBhbmQg
dHJhY2luZworICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkgICMgaW52b2tlIFBEQiBkZWJ1Z2dl
ciBhbmQgdHJhY2luZwogCiAKIFRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgb25lIGNhbiB1
c2UgdGhlIG5hdGl2ZSBgYGltcG9ydCBwZGI7cGRiLnNldF90cmFjZSgpYGAgY2FsbCBkaXJlY3Rs
eS4KIAogRm9yIG1vcmUgZGV0YWlscyBzZWUgOnJlZjpgYnJlYWtwb2ludHNgLgorCisiY29tcGF0
IiBwcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCitBY2Nlc3Mgb2YgYGBNb2R1
bGVgYCwgYGBGdW5jdGlvbmBgLCBgYENsYXNzYGAsIGBgSW5zdGFuY2VgYCwgYGBGaWxlYGAgYW5k
IGBgSXRlbWBgIHRocm91Z2ggYGBOb2RlYGAgaW5zdGFuY2VzIGhhdmUgbG9uZworYmVlbiBkb2N1
bWVudGVkIGFzIGRlcHJlY2F0ZWQsIGJ1dCBzdGFydGVkIHRvIGVtaXQgd2FybmluZ3MgZnJvbSBw
eXRlc3QgYGAzLjlgYCBhbmQgb253YXJkLgorCitVc2VycyBzaG91bGQganVzdCBgYGltcG9ydCBw
eXRlc3RgYCBhbmQgYWNjZXNzIHRob3NlIG9iamVjdHMgdXNpbmcgdGhlIGBgcHl0ZXN0YGAgbW9k
dWxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9mYXZpY29uLnBuZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9pbWcvZmF2aWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi41Yzg4MjRkNjdkMzQKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL2Zhdmljb24ucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9weXRlc3QxZmF2aS5pY28gYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vaW1nL3B5dGVzdDFmYXZpLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEz
NGZlNWM5ZjdlLi4wMDAwMDAwMDAwMDAKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2ltZy9weXRlc3QxZmF2aS5pY28gYW5kIC9kZXYvbnVsbCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9pbWcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
aW1nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2Y5MzAy
Yjc3YmUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2ltZy9jcmFtZXIyLnBuZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcvZnJlaWJ1
cmcyLmpwZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcvZ2F5bm9yMy5wbmcKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vaW1nL2tlbGVzaGV2LnBuZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcvcHVsbHJl
cXVlc3QucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9weWxpYi5wbmcKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vaW1nL3B5dGVzdDEucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9weXRlc3Qx
ZmF2aS5pY28KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL3RoZXVuaS5wbmcKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW5kZXgu
cnN0CmluZGV4IDZhMzgyZTU3MTczYS4uYTU3ZTliYmFjZWUwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbmRleC5yc3QK
QEAgLTEsNSArMSwxMSBAQAogOm9ycGhhbjoKIAorLi4gc2lkZWJhcjo6IE5leHQgT3BlbiBUcmFp
bmluZ3MKKworICAgLSBgUHJvZmVzc2lvbmFsIHRlc3Rpbmcgd2l0aCBQeXRob24gPGh0dHBzOi8v
d3d3LnB5dGhvbi1hY2FkZW15LmNvbS9jb3Vyc2VzL3NwZWNpYWx0b3BpY3MvcHl0aG9uX2NvdXJz
ZV90ZXN0aW5nLmh0bWw+YF8sIHZpYSBQeXRob24gQWNhZGVteSwgRmVicnVhcnkgMS0zIDIwMjEs
IExlaXB6aWcgKEdlcm1hbnkpIGFuZCByZW1vdGUuCisKKyAgIEFsc28gc2VlIGBwcmV2aW91cyB0
YWxrcyBhbmQgYmxvZ3Bvc3RzIDx0YWxrcy5odG1sPmBfLgorCiAuLiBfZmVhdHVyZXM6CiAKIHB5
dGVzdDogaGVscHMgeW91IHdyaXRlIGJldHRlciBwcm9ncmFtcwpAQCAtMjIsMTIgKzI4LDE1IEBA
IEFuIGV4YW1wbGUgb2YgYSBzaW1wbGUgdGVzdDoKICAgICAgICAgYXNzZXJ0IGluYygzKSA9PSA1
CiAKIAotVG8gZXhlY3V0ZSBpdDo6CitUbyBleGVjdXRlIGl0OgorCisuLiBjb2RlLWJsb2NrOjog
cHl0ZXN0CiAKICAgICAkIHB5dGVzdAogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0
ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxh
dGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVn
Z3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAg
IHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgMSBpdGVtCiAKICAgICB0
ZXN0X3NhbXBsZS5weSBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbMTAwJV0KQEAgLTQxLDcgKzUwLDkgQEAgVG8gZXhlY3V0ZSBpdDo6CiAgICAg
RSAgICAgICAgKyAgd2hlcmUgNCA9IGluYygzKQogCiAgICAgdGVzdF9zYW1wbGUucHk6NjogQXNz
ZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IDEgZmFpbGVkIGluIDAu
MTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09
PT09PQorICAgIEZBSUxFRCB0ZXN0X3NhbXBsZS5weTo6dGVzdF9hbnN3ZXIgLSBhc3NlcnQgNCA9
PSA1CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAwLjEycyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBEdWUgdG8gYGBweXRlc3RgYCdzIGRldGFp
bGVkIGFzc2VydGlvbiBpbnRyb3NwZWN0aW9uLCBvbmx5IHBsYWluIGBgYXNzZXJ0YGAgc3RhdGVt
ZW50cyBhcmUgdXNlZC4KIFNlZSA6cmVmOmBHZXR0aW5nIFN0YXJ0ZWQgPGdldHN0YXJ0ZWQ+YCBm
b3IgbW9yZSBleGFtcGxlcy4KQEAgLTUwLDE3ICs2MSwxNyBAQCBTZWUgOnJlZjpgR2V0dGluZyBT
dGFydGVkIDxnZXRzdGFydGVkPmAgZm9yIG1vcmUgZXhhbXBsZXMuCiBGZWF0dXJlcwogLS0tLS0t
LS0KIAotLSBEZXRhaWxlZCBpbmZvIG9uIGZhaWxpbmcgOnJlZjpgYXNzZXJ0IHN0YXRlbWVudHMg
PGFzc2VydD5gIChubyBuZWVkIHRvIHJlbWVtYmVyIGBgc2VsZi5hc3NlcnQqYGAgbmFtZXMpOwor
LSBEZXRhaWxlZCBpbmZvIG9uIGZhaWxpbmcgOnJlZjpgYXNzZXJ0IHN0YXRlbWVudHMgPGFzc2Vy
dD5gIChubyBuZWVkIHRvIHJlbWVtYmVyIGBgc2VsZi5hc3NlcnQqYGAgbmFtZXMpCiAKLS0gOnJl
ZjpgQXV0by1kaXNjb3ZlcnkgPHRlc3QgZGlzY292ZXJ5PmAgb2YgdGVzdCBtb2R1bGVzIGFuZCBm
dW5jdGlvbnM7CistIDpyZWY6YEF1dG8tZGlzY292ZXJ5IDx0ZXN0IGRpc2NvdmVyeT5gIG9mIHRl
c3QgbW9kdWxlcyBhbmQgZnVuY3Rpb25zCiAKLS0gOnJlZjpgTW9kdWxhciBmaXh0dXJlcyA8Zml4
dHVyZT5gIGZvciBtYW5hZ2luZyBzbWFsbCBvciBwYXJhbWV0cml6ZWQgbG9uZy1saXZlZCB0ZXN0
IHJlc291cmNlczsKKy0gOnJlZjpgTW9kdWxhciBmaXh0dXJlcyA8Zml4dHVyZT5gIGZvciBtYW5h
Z2luZyBzbWFsbCBvciBwYXJhbWV0cml6ZWQgbG9uZy1saXZlZCB0ZXN0IHJlc291cmNlcwogCi0t
IENhbiBydW4gOnJlZjpgdW5pdHRlc3QgPHVuaXR0ZXN0PmAgKGluY2x1ZGluZyB0cmlhbCkgYW5k
IDpyZWY6YG5vc2UgPG5vc2VpbnRlZ3JhdGlvbj5gIHRlc3Qgc3VpdGVzIG91dCBvZiB0aGUgYm94
OworLSBDYW4gcnVuIDpyZWY6YHVuaXR0ZXN0IDx1bml0dGVzdD5gIChpbmNsdWRpbmcgdHJpYWwp
IGFuZCA6cmVmOmBub3NlIDxub3NlaW50ZWdyYXRpb24+YCB0ZXN0IHN1aXRlcyBvdXQgb2YgdGhl
IGJveAogCi0tIFB5dGhvbiAyLjcsIFB5dGhvbiAzLjQrLCBQeVB5IDIuMywgSnl0aG9uIDIuNSAo
dW50ZXN0ZWQpOworLSBQeXRob24gMy41KyBhbmQgUHlQeSAzCiAKLS0gUmljaCBwbHVnaW4gYXJj
aGl0ZWN0dXJlLCB3aXRoIG92ZXIgMzE1KyBgZXh0ZXJuYWwgcGx1Z2lucyA8aHR0cDovL3BsdWdp
bmNvbXBhdC5oZXJva3VhcHAuY29tPmBfIGFuZCB0aHJpdmluZyBjb21tdW5pdHk7CistIFJpY2gg
cGx1Z2luIGFyY2hpdGVjdHVyZSwgd2l0aCBvdmVyIDMxNSsgYGV4dGVybmFsIHBsdWdpbnMgPGh0
dHA6Ly9wbHVnaW5jb21wYXQuaGVyb2t1YXBwLmNvbT5gXyBhbmQgdGhyaXZpbmcgY29tbXVuaXR5
CiAKIAogRG9jdW1lbnRhdGlvbgpAQCAtODAsMTEgKzkxLDQ0IEBAIENoYW5nZWxvZwogCiBDb25z
dWx0IHRoZSA6cmVmOmBDaGFuZ2Vsb2cgPGNoYW5nZWxvZz5gIHBhZ2UgZm9yIGZpeGVzIGFuZCBl
bmhhbmNlbWVudHMgb2YgZWFjaCB2ZXJzaW9uLgogCitTdXBwb3J0IHB5dGVzdAorLS0tLS0tLS0t
LS0tLS0KKworYE9wZW4gQ29sbGVjdGl2ZWBfIGlzIGFuIG9ubGluZSBmdW5kaW5nIHBsYXRmb3Jt
IGZvciBvcGVuIGFuZCB0cmFuc3BhcmVudCBjb21tdW5pdGllcy4KK0l0IHByb3ZpZGUgdG9vbHMg
dG8gcmFpc2UgbW9uZXkgYW5kIHNoYXJlIHlvdXIgZmluYW5jZXMgaW4gZnVsbCB0cmFuc3BhcmVu
Y3kuCisKK0l0IGlzIHRoZSBwbGF0Zm9ybSBvZiBjaG9pY2UgZm9yIGluZGl2aWR1YWxzIGFuZCBj
b21wYW5pZXMgdGhhdCB3YW50IHRvIG1ha2Ugb25lLXRpbWUgb3IKK21vbnRobHkgZG9uYXRpb25z
IGRpcmVjdGx5IHRvIHRoZSBwcm9qZWN0LgorCitTZWUgbW9yZSBkZXRhaWxzIGluIHRoZSBgcHl0
ZXN0IGNvbGxlY3RpdmVgXy4KKworLi4gX09wZW4gQ29sbGVjdGl2ZTogaHR0cHM6Ly9vcGVuY29s
bGVjdGl2ZS5jb20KKy4uIF9weXRlc3QgY29sbGVjdGl2ZTogaHR0cHM6Ly9vcGVuY29sbGVjdGl2
ZS5jb20vcHl0ZXN0CisKKworcHl0ZXN0IGZvciBlbnRlcnByaXNlCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworQXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbi4K
KworVGhlIG1haW50YWluZXJzIG9mIHB5dGVzdCBhbmQgdGhvdXNhbmRzIG9mIG90aGVyIHBhY2th
Z2VzIGFyZSB3b3JraW5nIHdpdGggVGlkZWxpZnQgdG8gZGVsaXZlciBjb21tZXJjaWFsIHN1cHBv
cnQgYW5kCittYWludGVuYW5jZSBmb3IgdGhlIG9wZW4gc291cmNlIGRlcGVuZGVuY2llcyB5b3Ug
dXNlIHRvIGJ1aWxkIHlvdXIgYXBwbGljYXRpb25zLgorU2F2ZSB0aW1lLCByZWR1Y2Ugcmlzaywg
YW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2Yg
dGhlIGV4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLgorCitgTGVhcm4gbW9yZS4gPGh0dHBzOi8v
dGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcHlwaS1weXRlc3Q/dXRtX3NvdXJjZT1weXBp
LXB5dGVzdCZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlJnV0bV90
ZXJtPXJlcG8+YF8KKworU2VjdXJpdHkKK15eXl5eXl5eCisKK3B5dGVzdCBoYXMgbmV2ZXIgYmVl
biBhc3NvY2lhdGVkIHdpdGggYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCBidXQgaW4gYW55IGNh
c2UsIHRvIHJlcG9ydCBhCitzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHBsZWFzZSB1c2UgdGhlIGBU
aWRlbGlmdCBzZWN1cml0eSBjb250YWN0IDxodHRwczovL3RpZGVsaWZ0LmNvbS9zZWN1cml0eT5g
Xy4KK1RpZGVsaWZ0IHdpbGwgY29vcmRpbmF0ZSB0aGUgZml4IGFuZCBkaXNjbG9zdXJlLgorCiAK
IExpY2Vuc2UKIC0tLS0tLS0KIAotQ29weXJpZ2h0IEhvbGdlciBLcmVrZWwgYW5kIG90aGVycywg
MjAwNC0yMDE3LgorQ29weXJpZ2h0IEhvbGdlciBLcmVrZWwgYW5kIG90aGVycywgMjAwNC0yMDIw
LgogCiBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGBNSVRgXyBsaWNlbnNlLCBw
eXRlc3QgaXMgZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUuCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9saWNlbnNlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9saWNlbnNl
LnJzdAppbmRleCBiOGMwZGNlMWJlYTguLmM2YzEwYmJmMzU4YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2xpY2Vuc2UucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9saWNlbnNl
LnJzdApAQCAtNSwxMSArNSwxMSBAQCBMaWNlbnNlCiAKIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgYE1JVGBfIGxpY2Vuc2UsIHB5dGVzdCBpcyBmcmVlIGFuZCBvcGVuIHNvdXJj
ZSBzb2Z0d2FyZS4KIAotOjoKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKICAgICBUaGUgTUlUIExp
Y2Vuc2UgKE1JVCkKIAotICAgIENvcHlyaWdodCAoYykgMjAwNC0yMDE3IEhvbGdlciBLcmVrZWwg
YW5kIG90aGVycworICAgIENvcHlyaWdodCAoYykgMjAwNC0yMDIwIEhvbGdlciBLcmVrZWwgYW5k
IG90aGVycwogCiAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy
Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgogICAgIHRoaXMgc29mdHdhcmUg
YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBk
ZWFsIGluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbGlua3MuaW5jIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2xpbmtzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ1
YTRiMWVlYmYyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2xpbmtzLmlu
YworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotLi4gX2Bza2lwcGluZyBwbHVnaW5g
OiBwbHVnaW4vc2tpcHBpbmcuaHRtbAotLi4gX2BmdW5jYXJncyBtZWNoYW5pc21gOiBmdW5jYXJn
cy5odG1sCi0uLiBfYGRvY3Rlc3QucHlgOiBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkv
ZG9jdGVzdC5odG1sCi0uLiBfYHhVbml0IHN0eWxlIHNldHVwYDogeHVuaXRfc2V0dXAuaHRtbAot
Li4gX2BweXRlc3Rfbm9zZWA6IHBsdWdpbi9ub3NlLmh0bWwKLS4uIF9gcmVTdHJ1Y3R1cmVkIFRl
eHRgOiBodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0Ci0uLiBfYFB5dGhvbiBkZWJ1Z2dl
cmA6IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGliL21vZHVsZS1wZGIuaHRtbAotLi4gX25vc2U6
IGh0dHBzOi8vbm9zZS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvCi0uLiBfcHl0ZXN0OiBodHRw
czovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LwotLi4gX21lcmN1cmlhbDogaHR0cDovL21lcmN1
cmlhbC5zZWxlbmljLmNvbS93aWtpLwotLi4gX2BzZXR1cHRvb2xzYDogaHR0cHM6Ly9weXBpLm9y
Zy9wcm9qZWN0L3NldHVwdG9vbHMvCi0uLiBfYGVhc3lfaW5zdGFsbGA6Ci0uLiBfYGRpc3RyaWJ1
dGUgZG9jc2A6Ci0uLiBfYGRpc3RyaWJ1dGVgOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvZGlz
dHJpYnV0ZS8KLS4uIF9gcGlwYDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3BpcC8KLS4uIF9g
dmlydHVhbGVudmA6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC92aXJ0dWFsZW52LwotLi4gX2h1
ZHNvbjogaHR0cDovL2h1ZHNvbi1jaS5vcmcvCi0uLiBfamVua2luczogaHR0cDovL2plbmtpbnMt
Y2kub3JnLwotLi4gX3RveDogaHR0cDovL3Rlc3RydW4ub3JnL3RveAotLi4gX3B5bGliOiBodHRw
czovL3B5LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9sb2dnaW5nLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9sb2dnaW5nLnJzdAppbmRl
eCAwMDgyOWMxNWVlZjcuLjUyNzEzODU0ZWZiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2xvZ2dpbmcucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9sb2dnaW5nLnJzdApAQCAt
MywxNyArMywyMSBAQAogTG9nZ2luZwogLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjMK
LS4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisKKwogCiBweXRlc3QgY2FwdHVyZXMgbG9nIG1lc3Nh
Z2VzIG9mIGxldmVsIGBgV0FSTklOR2BgIG9yIGFib3ZlIGF1dG9tYXRpY2FsbHkgYW5kIGRpc3Bs
YXlzIHRoZW0gaW4gdGhlaXIgb3duIHNlY3Rpb24KIGZvciBlYWNoIGZhaWxlZCB0ZXN0IGluIHRo
ZSBzYW1lIG1hbm5lciBhcyBjYXB0dXJlZCBzdGRvdXQgYW5kIHN0ZGVyci4KIAotUnVubmluZyB3
aXRob3V0IG9wdGlvbnM6OgorUnVubmluZyB3aXRob3V0IG9wdGlvbnM6CisKKy4uIGNvZGUtYmxv
Y2s6OiBiYXNoCiAKICAgICBweXRlc3QKIAotU2hvd3MgZmFpbGVkIHRlc3RzIGxpa2Ugc286Ogor
U2hvd3MgZmFpbGVkIHRlc3RzIGxpa2Ugc286CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAog
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0ZGxvZyBjYWxsIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgICB0ZXN0X3JlcG9ydGluZy5weSAgICAyNiBXQVJOSU5HICB0ZXh0
IGdvaW5nIHRvIGxvZ2dlcgpAQCAtMjcsMTIgKzMxLDE2IEBAIEJ5IGRlZmF1bHQgZWFjaCBjYXB0
dXJlZCBsb2cgbWVzc2FnZSBzaG93cyB0aGUgbW9kdWxlLCBsaW5lIG51bWJlciwgbG9nIGxldmVs
CiBhbmQgbWVzc2FnZS4KIAogSWYgZGVzaXJlZCB0aGUgbG9nIGFuZCBkYXRlIGZvcm1hdCBjYW4g
YmUgc3BlY2lmaWVkIHRvCi1hbnl0aGluZyB0aGF0IHRoZSBsb2dnaW5nIG1vZHVsZSBzdXBwb3J0
cyBieSBwYXNzaW5nIHNwZWNpZmljIGZvcm1hdHRpbmcgb3B0aW9uczo6Cithbnl0aGluZyB0aGF0
IHRoZSBsb2dnaW5nIG1vZHVsZSBzdXBwb3J0cyBieSBwYXNzaW5nIHNwZWNpZmljIGZvcm1hdHRp
bmcgb3B0aW9uczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLWxvZy1m
b3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShtZXNzYWdlKXMiIFwKICAgICAgICAg
ICAgIC0tbG9nLWRhdGUtZm9ybWF0PSIlWS0lbS0lZCAlSDolTTolUyIKIAotU2hvd3MgZmFpbGVk
IHRlc3RzIGxpa2Ugc286OgorU2hvd3MgZmFpbGVkIHRlc3RzIGxpa2Ugc286CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0
ZGxvZyBjYWxsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAyMDEwLTA0LTEwIDE0OjQ4OjQ0
IFdBUk5JTkcgdGV4dCBnb2luZyB0byBsb2dnZXIKQEAgLTUxLDcgKzU5LDkgQEAgVGhlc2Ugb3B0
aW9ucyBjYW4gYWxzbyBiZSBjdXN0b21pemVkIHRocm91Z2ggYGBweXRlc3QuaW5pYGAgZmlsZToK
ICAgICBsb2dfZGF0ZV9mb3JtYXQgPSAlWS0lbS0lZCAlSDolTTolUwogCiBGdXJ0aGVyIGl0IGlz
IHBvc3NpYmxlIHRvIGRpc2FibGUgcmVwb3J0aW5nIG9mIGNhcHR1cmVkIGNvbnRlbnQgKHN0ZG91
dCwKLXN0ZGVyciBhbmQgbG9ncykgb24gZmFpbGVkIHRlc3RzIGNvbXBsZXRlbHkgd2l0aDo6Citz
dGRlcnIgYW5kIGxvZ3MpIG9uIGZhaWxlZCB0ZXN0cyBjb21wbGV0ZWx5IHdpdGg6CisKKy4uIGNv
ZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLS1zaG93LWNhcHR1cmU9bm8KIApAQCAtNjAs
NyArNzAsOSBAQCBjYXBsb2cgZml4dHVyZQogXl5eXl5eXl5eXl5eXl4KIAogSW5zaWRlIHRlc3Rz
IGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgbG9nIGxldmVsIGZvciB0aGUgY2FwdHVyZWQg
bG9nCi1tZXNzYWdlcy4gIFRoaXMgaXMgc3VwcG9ydGVkIGJ5IHRoZSBgYGNhcGxvZ2BgIGZpeHR1
cmU6OgorbWVzc2FnZXMuICBUaGlzIGlzIHN1cHBvcnRlZCBieSB0aGUgYGBjYXBsb2dgYCBmaXh0
dXJlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBkZWYgdGVzdF9mb28oY2FwbG9n
KToKICAgICAgICAgY2FwbG9nLnNldF9sZXZlbChsb2dnaW5nLklORk8pCkBAIC02OCw1OSArODAs
NjkgQEAgbWVzc2FnZXMuICBUaGlzIGlzIHN1cHBvcnRlZCBieSB0aGUgYGBjYXBsb2dgYCBmaXh0
dXJlOjoKIAogQnkgZGVmYXVsdCB0aGUgbGV2ZWwgaXMgc2V0IG9uIHRoZSByb290IGxvZ2dlciwK
IGhvd2V2ZXIgYXMgYSBjb252ZW5pZW5jZSBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNldCB0aGUg
bG9nIGxldmVsIG9mIGFueQotbG9nZ2VyOjoKK2xvZ2dlcjoKKworLi4gY29kZS1ibG9jazo6IHB5
dGhvbgogCiAgICAgZGVmIHRlc3RfZm9vKGNhcGxvZyk6Ci0gICAgICAgIGNhcGxvZy5zZXRfbGV2
ZWwobG9nZ2luZy5DUklUSUNBTCwgbG9nZ2VyPSdyb290LmJheicpCisgICAgICAgIGNhcGxvZy5z
ZXRfbGV2ZWwobG9nZ2luZy5DUklUSUNBTCwgbG9nZ2VyPSJyb290LmJheiIpCiAgICAgICAgIHBh
c3MKIAogVGhlIGxvZyBsZXZlbHMgc2V0IGFyZSByZXN0b3JlZCBhdXRvbWF0aWNhbGx5IGF0IHRo
ZSBlbmQgb2YgdGhlIHRlc3QuCiAKIEl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGEgY29udGV4
dCBtYW5hZ2VyIHRvIHRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgbG9nCi1sZXZlbCBpbnNpZGUgYSBg
YHdpdGhgYCBibG9jazo6CitsZXZlbCBpbnNpZGUgYSBgYHdpdGhgYCBibG9jazoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCiAgICAgZGVmIHRlc3RfYmFyKGNhcGxvZyk6CiAgICAgICAgIHdp
dGggY2FwbG9nLmF0X2xldmVsKGxvZ2dpbmcuSU5GTyk6CiAgICAgICAgICAgICBwYXNzCiAKIEFn
YWluLCBieSBkZWZhdWx0IHRoZSBsZXZlbCBvZiB0aGUgcm9vdCBsb2dnZXIgaXMgYWZmZWN0ZWQg
YnV0IHRoZSBsZXZlbCBvZiBhbnkKLWxvZ2dlciBjYW4gYmUgY2hhbmdlZCBpbnN0ZWFkIHdpdGg6
OgorbG9nZ2VyIGNhbiBiZSBjaGFuZ2VkIGluc3RlYWQgd2l0aDoKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgogCiAgICAgZGVmIHRlc3RfYmFyKGNhcGxvZyk6Ci0gICAgICAgIHdpdGggY2FwbG9n
LmF0X2xldmVsKGxvZ2dpbmcuQ1JJVElDQUwsIGxvZ2dlcj0ncm9vdC5iYXonKToKKyAgICAgICAg
d2l0aCBjYXBsb2cuYXRfbGV2ZWwobG9nZ2luZy5DUklUSUNBTCwgbG9nZ2VyPSJyb290LmJheiIp
OgogICAgICAgICAgICAgcGFzcwogCiBMYXN0bHkgYWxsIHRoZSBsb2dzIHNlbnQgdG8gdGhlIGxv
Z2dlciBkdXJpbmcgdGhlIHRlc3QgcnVuIGFyZSBtYWRlIGF2YWlsYWJsZSBvbgogdGhlIGZpeHR1
cmUgaW4gdGhlIGZvcm0gb2YgYm90aCB0aGUgYGBsb2dnaW5nLkxvZ1JlY29yZGBgIGluc3RhbmNl
cyBhbmQgdGhlIGZpbmFsIGxvZyB0ZXh0LgotVGhpcyBpcyB1c2VmdWwgZm9yIHdoZW4geW91IHdh
bnQgdG8gYXNzZXJ0IG9uIHRoZSBjb250ZW50cyBvZiBhIG1lc3NhZ2U6OgorVGhpcyBpcyB1c2Vm
dWwgZm9yIHdoZW4geW91IHdhbnQgdG8gYXNzZXJ0IG9uIHRoZSBjb250ZW50cyBvZiBhIG1lc3Nh
Z2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiB0ZXN0X2JheihjYXBsb2cp
OgogICAgICAgICBmdW5jX3VuZGVyX3Rlc3QoKQogICAgICAgICBmb3IgcmVjb3JkIGluIGNhcGxv
Zy5yZWNvcmRzOgotICAgICAgICAgICAgYXNzZXJ0IHJlY29yZC5sZXZlbG5hbWUgIT0gJ0NSSVRJ
Q0FMJwotICAgICAgICBhc3NlcnQgJ3dhbGx5JyBub3QgaW4gY2FwbG9nLnRleHQKKyAgICAgICAg
ICAgIGFzc2VydCByZWNvcmQubGV2ZWxuYW1lICE9ICJDUklUSUNBTCIKKyAgICAgICAgYXNzZXJ0
ICJ3YWxseSIgbm90IGluIGNhcGxvZy50ZXh0CiAKIEZvciBhbGwgdGhlIGF2YWlsYWJsZSBhdHRy
aWJ1dGVzIG9mIHRoZSBsb2cgcmVjb3JkcyBzZWUgdGhlCiBgYGxvZ2dpbmcuTG9nUmVjb3JkYGAg
Y2xhc3MuCiAKIFlvdSBjYW4gYWxzbyByZXNvcnQgdG8gYGByZWNvcmRfdHVwbGVzYGAgaWYgYWxs
IHlvdSB3YW50IHRvIGRvIGlzIHRvIGVuc3VyZSwKIHRoYXQgY2VydGFpbiBtZXNzYWdlcyBoYXZl
IGJlZW4gbG9nZ2VkIHVuZGVyIGEgZ2l2ZW4gbG9nZ2VyIG5hbWUgd2l0aCBhIGdpdmVuCi1zZXZl
cml0eSBhbmQgbWVzc2FnZTo6CitzZXZlcml0eSBhbmQgbWVzc2FnZToKKworLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCiAgICAgZGVmIHRlc3RfZm9vKGNhcGxvZyk6Ci0gICAgICAgIGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkuaW5mbygnYm9vICVzJywgJ2FyZycpCisgICAgICAgIGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkuaW5mbygiYm9vICVzIiwgImFyZyIpCisKKyAgICAgICAgYXNzZXJ0IGNhcGxvZy5yZWNv
cmRfdHVwbGVzID09IFsoInJvb3QiLCBsb2dnaW5nLklORk8sICJib28gYXJnIildCiAKLSAgICAg
ICAgYXNzZXJ0IGNhcGxvZy5yZWNvcmRfdHVwbGVzID09IFsKLSAgICAgICAgICAgICgncm9vdCcs
IGxvZ2dpbmcuSU5GTywgJ2JvbyBhcmcnKSwKLSAgICAgICAgXQorWW91IGNhbiBjYWxsIGBgY2Fw
bG9nLmNsZWFyKClgYCB0byByZXNldCB0aGUgY2FwdHVyZWQgbG9nIHJlY29yZHMgaW4gYSB0ZXN0
OgogCi1Zb3UgY2FuIGNhbGwgYGBjYXBsb2cuY2xlYXIoKWBgIHRvIHJlc2V0IHRoZSBjYXB0dXJl
ZCBsb2cgcmVjb3JkcyBpbiBhIHRlc3Q6OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
ZGVmIHRlc3Rfc29tZXRoaW5nX3dpdGhfY2xlYXJpbmdfcmVjb3JkcyhjYXBsb2cpOgogICAgICAg
ICBzb21lX21ldGhvZF90aGF0X2NyZWF0ZXNfbG9nX3JlY29yZHMoKQogICAgICAgICBjYXBsb2cu
Y2xlYXIoKQogICAgICAgICB5b3VyX3Rlc3RfbWV0aG9kKCkKLSAgICAgICAgYXNzZXJ0IFsnRm9v
J10gPT0gW3JlYy5tZXNzYWdlIGZvciByZWMgaW4gY2FwbG9nLnJlY29yZHNdCisgICAgICAgIGFz
c2VydCBbIkZvbyJdID09IFtyZWMubWVzc2FnZSBmb3IgcmVjIGluIGNhcGxvZy5yZWNvcmRzXQog
CiAKIFRoZSBgYGNhcGxvZy5yZWNvcmRzYGAgYXR0cmlidXRlIGNvbnRhaW5zIHJlY29yZHMgZnJv
bSB0aGUgY3VycmVudCBzdGFnZSBvbmx5LCBzbwpAQCAtMTMzLDE0ICsxNTUsMTMgQEAgdGhlIHJl
Y29yZHMgZm9yIHRoZSBgYHNldHVwYGAgYW5kIGBgY2FsbGBgIHN0YWdlcyBkdXJpbmcgdGVhcmRv
d24gbGlrZSBzbzoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0KICAgICBAcHl0ZXN0LmZp
eHR1cmUKICAgICBkZWYgd2luZG93KGNhcGxvZyk6CiAgICAgICAgIHdpbmRvdyA9IGNyZWF0ZV93
aW5kb3coKQogICAgICAgICB5aWVsZCB3aW5kb3cKICAgICAgICAgZm9yIHdoZW4gaW4gKCJzZXR1
cCIsICJjYWxsIik6CiAgICAgICAgICAgICBtZXNzYWdlcyA9IFsKLSAgICAgICAgICAgICAgICB4
Lm1lc3NhZ2UgZm9yIHggaW4gY2FwbG9nLmdldF9yZWNvcmRzKHdoZW4pIGlmIHgubGV2ZWwgPT0g
bG9nZ2luZy5XQVJOSU5HCisgICAgICAgICAgICAgICAgeC5tZXNzYWdlIGZvciB4IGluIGNhcGxv
Zy5nZXRfcmVjb3Jkcyh3aGVuKSBpZiB4LmxldmVsbm8gPT0gbG9nZ2luZy5XQVJOSU5HCiAgICAg
ICAgICAgICBdCiAgICAgICAgICAgICBpZiBtZXNzYWdlczoKICAgICAgICAgICAgICAgICBweXRl
c3QuZmFpbCgKQEAgLTE5OCw2ICsyMTksOSBAQCBvcHRpb24gbmFtZXMgYXJlOgogKiBgYGxvZ19m
aWxlX2Zvcm1hdGBgCiAqIGBgbG9nX2ZpbGVfZGF0ZV9mb3JtYXRgYAogCitZb3UgY2FuIGNhbGwg
YGBzZXRfbG9nX3BhdGgoKWBgIHRvIGN1c3RvbWl6ZSB0aGUgbG9nX2ZpbGUgcGF0aCBkeW5hbWlj
YWxseS4gVGhpcyBmdW5jdGlvbmFsaXR5CitpcyBjb25zaWRlcmVkICoqZXhwZXJpbWVudGFsKiou
CisKIC4uIF9sb2dfcmVsZWFzZV9ub3RlczoKIAogUmVsZWFzZSBub3RlcwpAQCAtMjI2LDYgKzI1
MCw5IEBAIG1hZGUgaW4gYGAzLjRgYCBhZnRlciBjb21tdW5pdHkgZmVlZGJhY2s6CiAKICogTG9n
IGxldmVscyBhcmUgbm8gbG9uZ2VyIGNoYW5nZWQgdW5sZXNzIGV4cGxpY2l0bHkgcmVxdWVzdGVk
IGJ5IHRoZSA6Y29uZnZhbDpgbG9nX2xldmVsYCBjb25maWd1cmF0aW9uCiAgIG9yIGBgLS1sb2ct
bGV2ZWxgYCBjb21tYW5kLWxpbmUgb3B0aW9ucy4gVGhpcyBhbGxvd3MgdXNlcnMgdG8gY29uZmln
dXJlIGxvZ2dlciBvYmplY3RzIHRoZW1zZWx2ZXMuCisgIFNldHRpbmcgOmNvbmZ2YWw6YGxvZ19s
ZXZlbGAgd2lsbCBzZXQgdGhlIGxldmVsIHRoYXQgaXMgY2FwdHVyZWQgZ2xvYmFsbHkgc28gaWYg
YSBzcGVjaWZpYyB0ZXN0IHJlcXVpcmVzCisgIGEgbG93ZXIgbGV2ZWwgdGhhbiB0aGlzLCB1c2Ug
dGhlIGBgY2FwbG9nLnNldF9sZXZlbCgpYGAgZnVuY3Rpb25hbGl0eSBvdGhlcndpc2UgdGhhdCB0
ZXN0IHdpbGwgYmUgcHJvbmUgdG8KKyAgZmFpbHVyZS4KICogOnJlZjpgTGl2ZSBMb2dzIDxsaXZl
X2xvZ3M+YCBpcyBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgc2V0
dGluZyB0aGUKICAgOmNvbmZ2YWw6YGxvZ19jbGlgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGBg
dHJ1ZWBgLiBXaGVuIGVuYWJsZWQsIHRoZSB2ZXJib3NpdHkgaXMgaW5jcmVhc2VkIHNvIGxvZ2dp
bmcgZm9yIGVhY2gKICAgdGVzdCBpcyB2aXNpYmxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL21hcmsucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21hcmsucnN0CmluZGV4IGFhMTIx
MGJiNmI1YS4uNzM3MDM0MmE5NjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbWFy
ay5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21hcmsucnN0CkBAIC0xLDI0ICsxLDI5IEBA
Ci0KIC4uIF9tYXJrOgogCiBNYXJraW5nIHRlc3QgZnVuY3Rpb25zIHdpdGggYXR0cmlidXRlcwot
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQnkg
dXNpbmcgdGhlIGBgcHl0ZXN0Lm1hcmtgYCBoZWxwZXIgeW91IGNhbiBlYXNpbHkgc2V0Ci1tZXRh
ZGF0YSBvbiB5b3VyIHRlc3QgZnVuY3Rpb25zLiBUaGVyZSBhcmUKLXNvbWUgYnVpbHRpbiBtYXJr
ZXJzLCBmb3IgZXhhbXBsZToKK21ldGFkYXRhIG9uIHlvdXIgdGVzdCBmdW5jdGlvbnMuIFlvdSBj
YW4gZmluZCB0aGUgZnVsbCBsaXN0IG9mIGJ1aWx0aW4gbWFya2VycworaW4gdGhlIDpyZWY6YEFQ
SSBSZWZlcmVuY2U8bWFya3MgcmVmPmAuIE9yIHlvdSBjYW4gbGlzdCBhbGwgdGhlIG1hcmtlcnMs
IGluY2x1ZGluZworYnVpbHRpbiBhbmQgY3VzdG9tLCB1c2luZyB0aGUgQ0xJIC0gOmNvZGU6YHB5
dGVzdCAtLW1hcmtlcnNgLgorCitIZXJlIGFyZSBzb21lIG9mIHRoZSBidWlsdGluIG1hcmtlcnM6
CiAKKyogOnJlZjpgdXNlZml4dHVyZXMgPHVzZWZpeHR1cmVzPmAgLSB1c2UgZml4dHVyZXMgb24g
YSB0ZXN0IGZ1bmN0aW9uIG9yIGNsYXNzCisqIDpyZWY6YGZpbHRlcndhcm5pbmdzIDxmaWx0ZXJ3
YXJuaW5ncz5gIC0gZmlsdGVyIGNlcnRhaW4gd2FybmluZ3Mgb2YgYSB0ZXN0IGZ1bmN0aW9uCiAq
IDpyZWY6YHNraXAgPHNraXA+YCAtIGFsd2F5cyBza2lwIGEgdGVzdCBmdW5jdGlvbgogKiA6cmVm
OmBza2lwaWYgPHNraXBpZj5gIC0gc2tpcCBhIHRlc3QgZnVuY3Rpb24gaWYgYSBjZXJ0YWluIGNv
bmRpdGlvbiBpcyBtZXQKICogOnJlZjpgeGZhaWwgPHhmYWlsPmAgLSBwcm9kdWNlIGFuICJleHBl
Y3RlZCBmYWlsdXJlIiBvdXRjb21lIGlmIGEgY2VydGFpbgogICBjb25kaXRpb24gaXMgbWV0Ci0q
IDpyZWY6YHBhcmFtZXRyaXplIDxwYXJhbWV0cml6ZW1hcms+YCB0byBwZXJmb3JtIG11bHRpcGxl
IGNhbGxzCisqIDpyZWY6YHBhcmFtZXRyaXplIDxwYXJhbWV0cml6ZW1hcms+YCAtIHBlcmZvcm0g
bXVsdGlwbGUgY2FsbHMKICAgdG8gdGhlIHNhbWUgdGVzdCBmdW5jdGlvbi4KIAogSXQncyBlYXN5
IHRvIGNyZWF0ZSBjdXN0b20gbWFya2VycyBvciB0byBhcHBseSBtYXJrZXJzCi10byB3aG9sZSB0
ZXN0IGNsYXNzZXMgb3IgbW9kdWxlcy4gU2VlIDpyZWY6YG1hcmsgZXhhbXBsZXNgIGZvciBleGFt
cGxlcwotd2hpY2ggYWxzbyBzZXJ2ZSBhcyBkb2N1bWVudGF0aW9uLgordG8gd2hvbGUgdGVzdCBj
bGFzc2VzIG9yIG1vZHVsZXMuIFRob3NlIG1hcmtlcnMgY2FuIGJlIHVzZWQgYnkgcGx1Z2lucywg
YW5kIGFsc28KK2FyZSBjb21tb25seSB1c2VkIHRvIDpyZWY6YHNlbGVjdCB0ZXN0cyA8bWFyayBy
dW4+YCBvbiB0aGUgY29tbWFuZC1saW5lIHdpdGggdGhlIGBgLW1gYCBvcHRpb24uCisKK1NlZSA6
cmVmOmBtYXJrIGV4YW1wbGVzYCBmb3IgZXhhbXBsZXMgd2hpY2ggYWxzbyBzZXJ2ZSBhcyBkb2N1
bWVudGF0aW9uLgogCiAuLiBub3RlOjoKIApAQCAtMjYsMTM0ICszMSw2MyBAQCB3aGljaCBhbHNv
IHNlcnZlIGFzIGRvY3VtZW50YXRpb24uCiAgICAgOnJlZjpgZml4dHVyZXMgPGZpeHR1cmVzPmAu
CiAKIAotUmFpc2luZyBlcnJvcnMgb24gdW5rbm93biBtYXJrczogLS1zdHJpY3QKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdoZW4gdGhlIGBgLS1zdHJpY3Rg
YCBjb21tYW5kLWxpbmUgZmxhZyBpcyBwYXNzZWQsIGFueSBtYXJrcyBub3QgcmVnaXN0ZXJlZCBp
biB0aGUgYGBweXRlc3QuaW5pYGAgZmlsZSB3aWxsIHRyaWdnZXIgYW4gZXJyb3IuCi0KLU1hcmtz
IGNhbiBiZSByZWdpc3RlcmVkIGxpa2UgdGhpczoKLQotLi4gY29kZS1ibG9jazo6IGluaQotCi0g
ICAgW3B5dGVzdF0KLSAgICBtYXJrZXJzID0KLSAgICAgICAgc2xvdwotICAgICAgICBzZXJpYWwK
K1JlZ2lzdGVyaW5nIG1hcmtzCistLS0tLS0tLS0tLS0tLS0tLQogCi1UaGlzIGNhbiBiZSB1c2Vk
IHRvIHByZXZlbnQgdXNlcnMgbWlzdHlwaW5nIG1hcmsgbmFtZXMgYnkgYWNjaWRlbnQuIFRlc3Qg
c3VpdGVzIHRoYXQgd2FudCB0byBlbmZvcmNlIHRoaXMKLXNob3VsZCBhZGQgYGAtLXN0cmljdGBg
IHRvIGBgYWRkb3B0c2BgOgorWW91IGNhbiByZWdpc3RlciBjdXN0b20gbWFya3MgaW4geW91ciBg
YHB5dGVzdC5pbmlgYCBmaWxlIGxpa2UgdGhpczoKIAogLi4gY29kZS1ibG9jazo6IGluaQogCiAg
ICAgW3B5dGVzdF0KLSAgICBhZGRvcHRzID0gLS1zdHJpY3QKICAgICBtYXJrZXJzID0KLSAgICAg
ICAgc2xvdworICAgICAgICBzbG93OiBtYXJrcyB0ZXN0cyBhcyBzbG93IChkZXNlbGVjdCB3aXRo
ICctbSAibm90IHNsb3ciJykKICAgICAgICAgc2VyaWFsCiAKK29yIGluIHlvdXIgYGBweXByb2pl
Y3QudG9tbGBgIGZpbGUgbGlrZSB0aGlzOgogCi0uLiBgbWFya2VyLWl0ZXJhdGlvbmAKLQotTWFy
a2VyIHJldmFtcCBhbmQgaXRlcmF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
Li4gdmVyc2lvbmFkZGVkOjogMy42Ci0KLXB5dGVzdCdzIG1hcmtlciBpbXBsZW1lbnRhdGlvbiB0
cmFkaXRpb25hbGx5IHdvcmtlZCBieSBzaW1wbHkgdXBkYXRpbmcgdGhlIGBgX19kaWN0X19gYCBh
dHRyaWJ1dGUgb2YgZnVuY3Rpb25zIHRvIGFkZCBtYXJrZXJzLCBpbiBhIGN1bXVsYXRpdmUgbWFu
bmVyLiBBcyBhIHJlc3VsdCBvZiB0aGUgdGhpcywgbWFya2VycyB3b3VsZCB1bmludGVuZGVseSBi
ZSBwYXNzZWQgYWxvbmcgY2xhc3MgaGllcmFyY2hpZXMgaW4gc3VycHJpc2luZyB3YXlzIHBsdXMg
dGhlIEFQSSBmb3IgcmV0cml2aW5nIHRoZW0gd2FzIGluY29uc2lzdGVudCwgYXMgbWFya2VycyBm
cm9tIHBhcmFtZXRlcml6YXRpb24gd291bGQgYmUgc3RvcmVkIGRpZmZlcmVudGx5IHRoYW4gbWFy
a2VycyBhcHBsaWVkIHVzaW5nIHRoZSBgYEBweXRlc3QubWFya2BgIGRlY29yYXRvciBhbmQgbWFy
a2VycyBhZGRlZCB2aWEgYGBub2RlLmFkZF9tYXJrZXJgYC4KLQotVGhpcyBzdGF0ZSBvZiB0aGlu
Z3MgbWFkZSBpdCB0ZWNobmljYWxseSBuZXh0IHRvIGltcG9zc2libGUgdG8gdXNlIGRhdGEgZnJv
bSBtYXJrZXJzIGNvcnJlY3RseSB3aXRob3V0IGhhdmluZyBhIGRlZXAgdW5kZXJzdGFuZGluZyBv
ZiB0aGUgaW50ZXJuYWxzLCBsZWFkaW5nIHRvIHN1YnRsZSBhbmQgaGFyZCB0byB1bmRlcnN0YW5k
IGJ1Z3MgaW4gbW9yZSBhZHZhbmNlZCB1c2FnZXMuCi0KLURlcGVuZGluZyBvbiBob3cgYSBtYXJr
ZXIgZ290IGRlY2xhcmVkL2NoYW5nZWQgb25lIHdvdWxkIGdldCBlaXRoZXIgYSBgYE1hcmtlcklu
Zm9gYCB3aGljaCBtaWdodCBjb250YWluIG1hcmtlcnMgZnJvbSBzaWJsaW5nIGNsYXNzZXMsCi1g
YE1hcmtEZWNvcmF0b3JzYGAgd2hlbiBtYXJrcyBjYW1lIGZyb20gcGFyYW1ldGVyaXphdGlvbiBv
ciBmcm9tIGEgYGBub2RlLmFkZF9tYXJrZXJgYCBjYWxsLCBkaXNjYXJkaW5nIHByaW9yIG1hcmtz
LiBBbHNvIGBgTWFya2VySW5mb2BgIGFjdHMgbGlrZSBhIHNpbmdsZSBtYXJrLCB3aGVuIGl0IGlu
IGZhY3QgcmVwcmVzZW50cyBhIG1lcmdlZCB2aWV3IG9uIG11bHRpcGxlIG1hcmtzIHdpdGggdGhl
IHNhbWUgbmFtZS4KLQotT24gdG9wIG9mIHRoYXQgbWFya2VycyB3aGVyZSBub3QgYWNjZXNzaWJs
ZSB0aGUgc2FtZSB3YXkgZm9yIG1vZHVsZXMsIGNsYXNzZXMsIGFuZCBmdW5jdGlvbnMvbWV0aG9k
cywKLWluIGZhY3QsIG1hcmtlcnMgd2hlcmUgb25seSBhY2Nlc3NpYmxlIGluIGZ1bmN0aW9ucywg
ZXZlbiBpZiB0aGV5IHdoZXJlIGRlY2xhcmVkIG9uIGNsYXNzZXMvbW9kdWxlcy4KLQotQSBuZXcg
QVBJIHRvIGFjY2VzcyBtYXJrZXJzIGhhcyBiZWVuIGludHJvZHVjZWQgaW4gcHl0ZXN0IDMuNiBp
biBvcmRlciB0byBzb2x2ZSB0aGUgcHJvYmxlbXMgd2l0aCB0aGUgaW5pdGlhbCBkZXNpZ24sIHBy
b3ZpZGluZyA6ZnVuYzpgX3B5dGVzdC5ub2Rlcy5Ob2RlLml0ZXJfbWFya2Vyc2AgbWV0aG9kIHRv
IGl0ZXJhdGUgb3ZlciBtYXJrZXJzIGluIGEgY29uc2lzdGVudCBtYW5uZXIgYW5kIHJld29ya2lu
ZyB0aGUgaW50ZXJuYWxzLCB3aGljaCBzb2x2ZWQgZ3JlYXQgZGVhbCBvZiBwcm9ibGVtcyB3aXRo
IHRoZSBpbml0aWFsIGRlc2lnbi4KLQotCi0uLiBfdXBkYXRlIG1hcmtlciBjb2RlOgotCi1VcGRh
dGluZyBjb2RlCi1+fn5+fn5+fn5+fn5+Ci0KLVRoZSBvbGQgYGBOb2RlLmdldF9tYXJrZXIobmFt
ZSlgYCBmdW5jdGlvbiBpcyBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCByZXR1cm5z
IGFuIGludGVybmFsIGBgTWFya2VySW5mb2BgIG9iamVjdAotd2hpY2ggY29udGFpbnMgdGhlIG1l
cmdlZCBuYW1lLCBgYCphcmdzYGAgYW5kIGBgKiprd2FyZ3NgYCBvZiBhbGwgdGhlIG1hcmtlcnMg
d2hpY2ggYXBwbHkgdG8gdGhhdCBub2RlLgorLi4gY29kZS1ibG9jazo6IHRvbWwKIAotSW4gZ2Vu
ZXJhbCB0aGVyZSBhcmUgdHdvIHNjZW5hcmlvcyBvbiBob3cgbWFya2VycyBzaG91bGQgYmUgaGFu
ZGxlZDoKKyAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgbWFya2VycyA9IFsKKyAg
ICAgICAgInNsb3c6IG1hcmtzIHRlc3RzIGFzIHNsb3cgKGRlc2VsZWN0IHdpdGggJy1tIFwibm90
IHNsb3dcIicpIiwKKyAgICAgICAgInNlcmlhbCIsCisgICAgXQogCi0xLiBNYXJrcyBvdmVyd3Jp
dGUgZWFjaCBvdGhlci4gT3JkZXIgbWF0dGVycyBidXQgeW91IG9ubHkgd2FudCB0byB0aGluayBv
ZiB5b3VyIG1hcmsgYXMgYSBzaW5nbGUgaXRlbS4gRS5nLgotYGBsb2dfbGV2ZWwoJ2luZm8nKWBg
IGF0IGEgbW9kdWxlIGxldmVsIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBgYGxvZ19sZXZlbCgnZGVi
dWcnKWBgIGZvciBhIHNwZWNpZmljIHRlc3QuCitOb3RlIHRoYXQgZXZlcnl0aGluZyBwYXN0IHRo
ZSBgYDpgYCBhZnRlciB0aGUgbWFyayBuYW1lIGlzIGFuIG9wdGlvbmFsIGRlc2NyaXB0aW9uLgog
Ci0gICAgSW4gdGhpcyBjYXNlIHJlcGxhY2UgdXNlIGBgTm9kZS5nZXRfY2xvc2VzdF9tYXJrZXIo
bmFtZSlgYDoKK0FsdGVybmF0aXZlbHksIHlvdSBjYW4gcmVnaXN0ZXIgbmV3IG1hcmtlcnMgcHJv
Z3JhbW1hdGljYWxseSBpbiBhCis6cmVmOmBweXRlc3RfY29uZmlndXJlIDxpbml0aWFsaXphdGlv
bi1ob29rcz5gIGhvb2s6CiAKLSAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKLSAgICAgICAgIyByZXBsYWNlIHRoaXM6Ci0gICAgICAgIG1hcmtlciA9
IGl0ZW0uZ2V0X21hcmtlcigibG9nX2xldmVsIikKLSAgICAgICAgaWYgbWFya2VyOgotICAgICAg
ICAgICAgbGV2ZWwgPSBtYXJrZXIuYXJnc1swXQorICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNv
bmZpZyk6CisgICAgICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKAorICAgICAgICAgICAgIm1h
cmtlcnMiLCAiZW52KG5hbWUpOiBtYXJrIHRlc3QgdG8gcnVuIG9ubHkgb24gbmFtZWQgZW52aXJv
bm1lbnQiCisgICAgICAgICkKIAotICAgICAgICAjIGJ5IHRoaXM6Ci0gICAgICAgIG1hcmtlciA9
IGl0ZW0uZ2V0X2Nsb3Nlc3RfbWFya2VyKCJsb2dfbGV2ZWwiKQotICAgICAgICBpZiBtYXJrZXI6
Ci0gICAgICAgICAgICBsZXZlbCA9IG1hcmtlci5hcmdzWzBdCiAKLTIuIE1hcmtzIGNvbXBvc2Ug
YWRkaXRpdmUuIEUuZy4gYGBza2lwaWYoY29uZGl0aW9uKWBgIG1hcmtzIG1lYW5zIHlvdSBqdXN0
IHdhbnQgdG8gZXZhbHVhdGUgYWxsIG9mIHRoZW0sCi1vcmRlciBkb2Vzbid0IGV2ZW4gbWF0dGVy
LiBZb3UgcHJvYmFibHkgd2FudCB0byB0aGluayBvZiB5b3VyIG1hcmtzIGFzIGEgc2V0IGhlcmUu
CitSZWdpc3RlcmVkIG1hcmtzIGFwcGVhciBpbiBweXRlc3QncyBoZWxwIHRleHQgYW5kIGRvIG5v
dCBlbWl0IHdhcm5pbmdzIChzZWUgdGhlIG5leHQgc2VjdGlvbikuIEl0CitpcyByZWNvbW1lbmRl
ZCB0aGF0IHRoaXJkLXBhcnR5IHBsdWdpbnMgYWx3YXlzIDpyZWY6YHJlZ2lzdGVyIHRoZWlyIG1h
cmtlcnMgPHJlZ2lzdGVyaW5nLW1hcmtlcnM+YC4KIAotICAgSW4gdGhpcyBjYXNlIGl0ZXJhdGUg
b3ZlciBlYWNoIG1hcmsgYW5kIGhhbmRsZSB0aGVpciBgYCphcmdzYGAgYW5kIGBgKiprd2FyZ3Ng
YCBpbmRpdmlkdWFsbHkuCisuLiBfdW5rbm93bi1tYXJrczoKIAotICAgLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorUmFpc2luZyBlcnJvcnMgb24gdW5rbm93biBtYXJrcworLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi0gICAgICAgICMgcmVwbGFjZSB0aGlzCi0gICAgICAgIHNraXBp
ZiA9IGl0ZW0uZ2V0X21hcmtlcigic2tpcGlmIikKLSAgICAgICAgaWYgc2tpcGlmOgotICAgICAg
ICAgICAgZm9yIGNvbmRpdGlvbiBpbiBza2lwaWYuYXJnczoKLSAgICAgICAgICAgICAgICAjIGV2
YWwgY29uZGl0aW9uCi0gICAgICAgICAgICAgICAgLi4uCitVbnJlZ2lzdGVyZWQgbWFya3MgYXBw
bGllZCB3aXRoIHRoZSBgYEBweXRlc3QubWFyay5uYW1lX29mX3RoZV9tYXJrYGAgZGVjb3JhdG9y
Cit3aWxsIGFsd2F5cyBlbWl0IGEgd2FybmluZyBpbiBvcmRlciB0byBhdm9pZCBzaWxlbnRseSBk
b2luZyBzb21ldGhpbmcKK3N1cnByaXNpbmcgZHVlIHRvIG1pc3R5cGVkIG5hbWVzLiBBcyBkZXNj
cmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHlvdSBjYW4gZGlzYWJsZQordGhlIHdhcm5p
bmcgZm9yIGN1c3RvbSBtYXJrcyBieSByZWdpc3RlcmluZyB0aGVtIGluIHlvdXIgYGBweXRlc3Qu
aW5pYGAgZmlsZSBvcgordXNpbmcgYSBjdXN0b20gYGBweXRlc3RfY29uZmlndXJlYGAgaG9vay4K
IAotICAgICAgICAjIGJ5IHRoaXM6Ci0gICAgICAgIGZvciBza2lwaWYgaW4gaXRlbS5pdGVyX21h
cmtlcnMoInNraXBpZiIpOgotICAgICAgICAgICAgY29uZGl0aW9uID0gc2tpcGlmLmFyZ3NbMF0K
LSAgICAgICAgICAgICMgZXZhbCBjb25kaXRpb24KK1doZW4gdGhlIGBgLS1zdHJpY3QtbWFya2Vy
c2BgIGNvbW1hbmQtbGluZSBmbGFnIGlzIHBhc3NlZCwgYW55IHVua25vd24gbWFya3MgYXBwbGll
ZAord2l0aCB0aGUgYGBAcHl0ZXN0Lm1hcmsubmFtZV9vZl90aGVfbWFya2BgIGRlY29yYXRvciB3
aWxsIHRyaWdnZXIgYW4gZXJyb3IuIFlvdSBjYW4KK2VuZm9yY2UgdGhpcyB2YWxpZGF0aW9uIGlu
IHlvdXIgcHJvamVjdCBieSBhZGRpbmcgYGAtLXN0cmljdC1tYXJrZXJzYGAgdG8gYGBhZGRvcHRz
YGA6CiAKKy4uIGNvZGUtYmxvY2s6OiBpbmkKIAotSWYgeW91IGFyZSB1bnN1cmUgb3IgaGF2ZSBh
bnkgcXVlc3Rpb25zLCBwbGVhc2UgY29uc2lkZXIgb3BlbmluZwotYGFuIGlzc3VlIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzPmBfLgotCi1SZWxhdGVkIGlzc3Vl
cwotfn5+fn5+fn5+fn5+fn4KLQotSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgaXNz
dWVzIGZpeGVkIGJ5IHRoZSBuZXcgaW1wbGVtZW50YXRpb246Ci0KLSogTWFya3MgZG9uJ3QgcGlj
ayB1cCBuZXN0ZWQgY2xhc3NlcyAoYCMxOTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMTk5PmBfKS4KLQotKiBtYXJrZXJzIHN0YWlucyBvbiBhbGwgcmVsYXRl
ZCBjbGFzc2VzIChgIzU2OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81Njg+YF8pLgotCi0qIGNvbWJpbmluZyBtYXJrcyAtIGFyZ3MgYW5kIGt3YXJncyBjYWxj
dWxhdGlvbiAoYCMyODk3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzI4OTc+YF8pLgotCi0qIGBgcmVxdWVzdC5ub2RlLmdldF9tYXJrZXIoJ25hbWUnKWBgIHJl
dHVybnMgYGBOb25lYGAgZm9yIG1hcmtlcnMgYXBwbGllZCBpbiBjbGFzc2VzIChgIzkwMiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85MDI+YF8pLgotCi0qIG1h
cmtzIGFwcGxpZWQgaW4gcGFyYW1ldHJpemUgYXJlIHN0b3JlZCBhcyBtYXJrZGVjb3JhdG9yIChg
IzI0MDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQwMD5g
XykuCi0KLSogZml4IG1hcmtlciBpbnRlcmFjdGlvbiBpbiBhIGJhY2t3YXJkIGluY29tcGF0aWJs
ZSB3YXkgKGAjMTY3MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xNjcwPmBfKS4KLQotKiBSZWZhY3RvciBtYXJrcyB0byBnZXQgcmlkIG9mIHRoZSBjdXJyZW50
ICJtYXJrcyB0cmFuc2ZlciIgbWVjaGFuaXNtIChgIzIzNjMgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjM2Mz5gXykuCi0KLSogSW50cm9kdWNlIEZ1bmN0aW9u
RGVmaW5pdGlvbiBub2RlLCB1c2UgaXQgaW4gZ2VuZXJhdGVfdGVzdHMgKGAjMjUyMiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTIyPmBfKS4KLQotKiByZW1v
dmUgbmFtZWQgbWFya2VyIGF0dHJpYnV0ZXMgYW5kIGNvbGxlY3QgbWFya2VycyBpbiBpdGVtcyAo
YCM4OTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvODkxPmBf
KS4KLQotKiBza2lwaWYgbWFyayBmcm9tIHBhcmFtZXRyaXplIGhpZGVzIG1vZHVsZSBsZXZlbCBz
a2lwaWYgbWFyayAoYCMxNTQwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzE1NDA+YF8pLgotCi0qIHNraXBpZiArIHBhcmFtZXRyaXplIG5vdCBza2lwcGluZyB0
ZXN0cyAoYCMxMjk2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzEyOTY+YF8pLgotCi0qIG1hcmtlciB0cmFuc2ZlciBpbmNvbXBhdGlibGUgd2l0aCBpbmhlcml0
YW5jZSAoYCM1MzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NTM1PmBfKS4KLQotTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgYG9yaWdpbmFsIFBS
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8zMzE3PmBfLgotCi0u
LiBub3RlOjoKLQotICAgIGluIGEgZnV0dXJlIG1ham9yIHJlbGFzZSBvZiBweXRlc3Qgd2Ugd2ls
bCBpbnRyb2R1Y2UgY2xhc3MgYmFzZWQgbWFya2VycywKLSAgICBhdCB3aGljaCBwb2ludHMgbWFy
a2VycyB3aWxsIG5vIGxvbmdlciBiZSBsaW1pdGVkIHRvIGluc3RhbmNlcyBvZiA6cHk6Y2xhc3M6
YE1hcmtgCisgICAgW3B5dGVzdF0KKyAgICBhZGRvcHRzID0gLS1zdHJpY3QtbWFya2VycworICAg
IG1hcmtlcnMgPQorICAgICAgICBzbG93OiBtYXJrcyB0ZXN0cyBhcyBzbG93IChkZXNlbGVjdCB3
aXRoICctbSAibm90IHNsb3ciJykKKyAgICAgICAgc2VyaWFsCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vbW9ua2V5cGF0Y2gucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21vbmtleXBh
dGNoLnJzdAppbmRleCAxYTY5YzNhNDI5ZDIuLjk0ODBmMDA4ZjdjZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL21vbmtleXBhdGNoLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
bW9ua2V5cGF0Y2gucnN0CkBAIC04LDQ2ICs4LDIxOCBAQCBTb21ldGltZXMgdGVzdHMgbmVlZCB0
byBpbnZva2UgZnVuY3Rpb25hbGl0eSB3aGljaCBkZXBlbmRzCiBvbiBnbG9iYWwgc2V0dGluZ3Mg
b3Igd2hpY2ggaW52b2tlcyBjb2RlIHdoaWNoIGNhbm5vdCBiZSBlYXNpbHkKIHRlc3RlZCBzdWNo
IGFzIG5ldHdvcmsgYWNjZXNzLiAgVGhlIGBgbW9ua2V5cGF0Y2hgYCBmaXh0dXJlCiBoZWxwcyB5
b3UgdG8gc2FmZWx5IHNldC9kZWxldGUgYW4gYXR0cmlidXRlLCBkaWN0aW9uYXJ5IGl0ZW0gb3IK
LWVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRvIG1vZGlmeSBgYHN5cy5wYXRoYGAgZm9yIGltcG9y
dGluZy4KK2Vudmlyb25tZW50IHZhcmlhYmxlLCBvciB0byBtb2RpZnkgYGBzeXMucGF0aGBgIGZv
ciBpbXBvcnRpbmcuCisKK1RoZSBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBwcm92aWRlcyB0aGVz
ZSBoZWxwZXIgbWV0aG9kcyBmb3Igc2FmZWx5IHBhdGNoaW5nIGFuZCBtb2NraW5nCitmdW5jdGlv
bmFsaXR5IGluIHRlc3RzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKG9iaiwgbmFtZSwgdmFsdWUsIHJhaXNpbmc9VHJ1ZSkKKyAgICBtb25rZXlw
YXRjaC5kZWxhdHRyKG9iaiwgbmFtZSwgcmFpc2luZz1UcnVlKQorICAgIG1vbmtleXBhdGNoLnNl
dGl0ZW0obWFwcGluZywgbmFtZSwgdmFsdWUpCisgICAgbW9ua2V5cGF0Y2guZGVsaXRlbShvYmos
IG5hbWUsIHJhaXNpbmc9VHJ1ZSkKKyAgICBtb25rZXlwYXRjaC5zZXRlbnYobmFtZSwgdmFsdWUs
IHByZXBlbmQ9RmFsc2UpCisgICAgbW9ua2V5cGF0Y2guZGVsZW52KG5hbWUsIHJhaXNpbmc9VHJ1
ZSkKKyAgICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQocGF0aCkKKyAgICBtb25rZXlwYXRj
aC5jaGRpcihwYXRoKQorCitBbGwgbW9kaWZpY2F0aW9ucyB3aWxsIGJlIHVuZG9uZSBhZnRlciB0
aGUgcmVxdWVzdGluZwordGVzdCBmdW5jdGlvbiBvciBmaXh0dXJlIGhhcyBmaW5pc2hlZC4gVGhl
IGBgcmFpc2luZ2BgCitwYXJhbWV0ZXIgZGV0ZXJtaW5lcyBpZiBhIGBgS2V5RXJyb3JgYCBvciBg
YEF0dHJpYnV0ZUVycm9yYGAKK3dpbGwgYmUgcmFpc2VkIGlmIHRoZSB0YXJnZXQgb2YgdGhlIHNl
dC9kZWxldGlvbiBvcGVyYXRpb24gZG9lcyBub3QgZXhpc3QuCisKK0NvbnNpZGVyIHRoZSBmb2xs
b3dpbmcgc2NlbmFyaW9zOgorCisxLiBNb2RpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIGEgZnVuY3Rp
b24gb3IgdGhlIHByb3BlcnR5IG9mIGEgY2xhc3MgZm9yIGEgdGVzdCBlLmcuCit0aGVyZSBpcyBh
biBBUEkgY2FsbCBvciBkYXRhYmFzZSBjb25uZWN0aW9uIHlvdSB3aWxsIG5vdCBtYWtlIGZvciBh
IHRlc3QgYnV0IHlvdSBrbm93Cit3aGF0IHRoZSBleHBlY3RlZCBvdXRwdXQgc2hvdWxkIGJlLiBV
c2UgOnB5Om1ldGg6YG1vbmtleXBhdGNoLnNldGF0dHIgPE1vbmtleVBhdGNoLnNldGF0dHI+YCB0
byBwYXRjaCB0aGUKK2Z1bmN0aW9uIG9yIHByb3BlcnR5IHdpdGggeW91ciBkZXNpcmVkIHRlc3Rp
bmcgYmVoYXZpb3IuIFRoaXMgY2FuIGluY2x1ZGUgeW91ciBvd24gZnVuY3Rpb25zLgorVXNlIDpw
eTptZXRoOmBtb25rZXlwYXRjaC5kZWxhdHRyIDxNb25rZXlQYXRjaC5kZWxhdHRyPmAgdG8gcmVt
b3ZlIHRoZSBmdW5jdGlvbiBvciBwcm9wZXJ0eSBmb3IgdGhlIHRlc3QuCisKKzIuIE1vZGlmeWlu
ZyB0aGUgdmFsdWVzIG9mIGRpY3Rpb25hcmllcyBlLmcuIHlvdSBoYXZlIGEgZ2xvYmFsIGNvbmZp
Z3VyYXRpb24gdGhhdAoreW91IHdhbnQgdG8gbW9kaWZ5IGZvciBjZXJ0YWluIHRlc3QgY2FzZXMu
IFVzZSA6cHk6bWV0aDpgbW9ua2V5cGF0Y2guc2V0aXRlbSA8TW9ua2V5UGF0Y2guc2V0aXRlbT5g
IHRvIHBhdGNoIHRoZQorZGljdGlvbmFyeSBmb3IgdGhlIHRlc3QuIDpweTptZXRoOmBtb25rZXlw
YXRjaC5kZWxpdGVtIDxNb25rZXlQYXRjaC5kZWxpdGVtPmAgY2FuIGJlIHVzZWQgdG8gcmVtb3Zl
IGl0ZW1zLgorCiszLiBNb2RpZnlpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBhIHRlc3Qg
ZS5nLiB0byB0ZXN0IHByb2dyYW0gYmVoYXZpb3IgaWYgYW4KK2Vudmlyb25tZW50IHZhcmlhYmxl
IGlzIG1pc3NpbmcsIG9yIHRvIHNldCBtdWx0aXBsZSB2YWx1ZXMgdG8gYSBrbm93biB2YXJpYWJs
ZS4KKzpweTptZXRoOmBtb25rZXlwYXRjaC5zZXRlbnYgPE1vbmtleVBhdGNoLnNldGVudj5gIGFu
ZCA6cHk6bWV0aDpgbW9ua2V5cGF0Y2guZGVsZW52IDxNb25rZXlQYXRjaC5kZWxlbnY+YCBjYW4g
YmUgdXNlZCBmb3IKK3RoZXNlIHBhdGNoZXMuCisKKzQuIFVzZSBgYG1vbmtleXBhdGNoLnNldGVu
digiUEFUSCIsIHZhbHVlLCBwcmVwZW5kPW9zLnBhdGhzZXApYGAgdG8gbW9kaWZ5IGBgJFBBVEhg
YCwgYW5kCis6cHk6bWV0aDpgbW9ua2V5cGF0Y2guY2hkaXIgPE1vbmtleVBhdGNoLmNoZGlyPmAg
dG8gY2hhbmdlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Citk
dXJpbmcgYSB0ZXN0LgorCis1LiBVc2UgOnB5Om1ldGg6YG1vbmtleXBhdGNoLnN5c3BhdGhfcHJl
cGVuZCA8TW9ua2V5UGF0Y2guc3lzcGF0aF9wcmVwZW5kPmAgdG8gbW9kaWZ5IGBgc3lzLnBhdGhg
YCB3aGljaCB3aWxsIGFsc28KK2NhbGwgYGBwa2dfcmVzb3VyY2VzLmZpeHVwX25hbWVzcGFjZV9w
YWNrYWdlc2BgIGFuZCA6cHk6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYC4KKwog
U2VlIHRoZSBgbW9ua2V5cGF0Y2ggYmxvZyBwb3N0YF8gZm9yIHNvbWUgaW50cm9kdWN0aW9uIG1h
dGVyaWFsCiBhbmQgYSBkaXNjdXNzaW9uIG9mIGl0cyBtb3RpdmF0aW9uLgogCiAuLiBfYG1vbmtl
eXBhdGNoIGJsb2cgcG9zdGA6IGh0dHA6Ly90ZXRhbWFwLndvcmRwcmVzcy5jb20vMjAwOS8wMy8w
My9tb25rZXlwYXRjaGluZy1pbi11bml0LXRlc3RzLWRvbmUtcmlnaHQvCiAKLQogU2ltcGxlIGV4
YW1wbGU6IG1vbmtleXBhdGNoaW5nIGZ1bmN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLUlmIHlvdSB3YW50IHRvIHByZXRlbmQgdGhhdCBgYG9zLmV4cGFuZHVz
ZXJgYCByZXR1cm5zIGEgY2VydGFpbgotZGlyZWN0b3J5LCB5b3UgY2FuIHVzZSB0aGUgOnB5Om1l
dGg6YG1vbmtleXBhdGNoLnNldGF0dHJgIG1ldGhvZCB0bwotcGF0Y2ggdGhpcyBmdW5jdGlvbiBi
ZWZvcmUgY2FsbGluZyBpbnRvIGEgZnVuY3Rpb24gd2hpY2ggdXNlcyBpdDo6CitDb25zaWRlciBh
IHNjZW5hcmlvIHdoZXJlIHlvdSBhcmUgd29ya2luZyB3aXRoIHVzZXIgZGlyZWN0b3JpZXMuIElu
IHRoZSBjb250ZXh0IG9mCit0ZXN0aW5nLCB5b3UgZG8gbm90IHdhbnQgeW91ciB0ZXN0IHRvIGRl
cGVuZCBvbiB0aGUgcnVubmluZyB1c2VyLiBgYG1vbmtleXBhdGNoYGAKK2NhbiBiZSB1c2VkIHRv
IHBhdGNoIGZ1bmN0aW9ucyBkZXBlbmRlbnQgb24gdGhlIHVzZXIgdG8gYWx3YXlzIHJldHVybiBh
CitzcGVjaWZpYyB2YWx1ZS4KIAotICAgICMgY29udGVudCBvZiB0ZXN0X21vZHVsZS5weQotICAg
IGltcG9ydCBvcy5wYXRoCi0gICAgZGVmIGdldHNzaCgpOiAjIHBzZXVkbyBhcHBsaWNhdGlvbiBj
b2RlCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+YWRt
aW4iKSwgJy5zc2gnKQorSW4gdGhpcyBleGFtcGxlLCA6cHk6bWV0aDpgbW9ua2V5cGF0Y2guc2V0
YXR0ciA8TW9ua2V5UGF0Y2guc2V0YXR0cj5gIGlzIHVzZWQgdG8gcGF0Y2ggYGBQYXRoLmhvbWVg
YAorc28gdGhhdCB0aGUga25vd24gdGVzdGluZyBwYXRoIGBgUGF0aCgiL2FiYyIpYGAgaXMgYWx3
YXlzIHVzZWQgd2hlbiB0aGUgdGVzdCBpcyBydW4uCitUaGlzIHJlbW92ZXMgYW55IGRlcGVuZGVu
Y3kgb24gdGhlIHJ1bm5pbmcgdXNlciBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKzpweTptZXRoOmBt
b25rZXlwYXRjaC5zZXRhdHRyIDxNb25rZXlQYXRjaC5zZXRhdHRyPmAgbXVzdCBiZSBjYWxsZWQg
YmVmb3JlIHRoZSBmdW5jdGlvbiB3aGljaCB3aWxsIHVzZQordGhlIHBhdGNoZWQgZnVuY3Rpb24g
aXMgY2FsbGVkLgorQWZ0ZXIgdGhlIHRlc3QgZnVuY3Rpb24gZmluaXNoZXMgdGhlIGBgUGF0aC5o
b21lYGAgbW9kaWZpY2F0aW9uIHdpbGwgYmUgdW5kb25lLgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCisKKyAgICAjIGNvbnRlbnRzIG9mIHRlc3RfbW9kdWxlLnB5IHdpdGggc291cmNlIGNvZGUg
YW5kIHRoZSB0ZXN0CisgICAgZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCisKKworICAgIGRlZiBn
ZXRzc2goKToKKyAgICAgICAgIiIiU2ltcGxlIGZ1bmN0aW9uIHRvIHJldHVybiBleHBhbmRlZCBo
b21lZGlyIHNzaCBwYXRoLiIiIgorICAgICAgICByZXR1cm4gUGF0aC5ob21lKCkgLyAiLnNzaCIK
IAotICAgIGRlZiB0ZXN0X215dGVzdChtb25rZXlwYXRjaCk6Ci0gICAgICAgIGRlZiBtb2NrcmV0
dXJuKHBhdGgpOgotICAgICAgICAgICAgcmV0dXJuICcvYWJjJwotICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKG9zLnBhdGgsICdleHBhbmR1c2VyJywgbW9ja3JldHVybikKLSAgICAgICAgeCA9
IGdldHNzaCgpCi0gICAgICAgIGFzc2VydCB4ID09ICcvYWJjLy5zc2gnCiAKLUhlcmUgb3VyIHRl
c3QgZnVuY3Rpb24gbW9ua2V5cGF0Y2hlcyBgYG9zLnBhdGguZXhwYW5kdXNlcmBgIGFuZAotdGhl
biBjYWxscyBpbnRvIGEgZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gIEFmdGVyIHRoZSB0ZXN0IGZ1
bmN0aW9uCi1maW5pc2hlcyB0aGUgYGBvcy5wYXRoLmV4cGFuZHVzZXJgYCBtb2RpZmljYXRpb24g
d2lsbCBiZSB1bmRvbmUuCisgICAgZGVmIHRlc3RfZ2V0c3NoKG1vbmtleXBhdGNoKToKKyAgICAg
ICAgIyBtb2NrZWQgcmV0dXJuIGZ1bmN0aW9uIHRvIHJlcGxhY2UgUGF0aC5ob21lCisgICAgICAg
ICMgYWx3YXlzIHJldHVybiAnL2FiYycKKyAgICAgICAgZGVmIG1vY2tyZXR1cm4oKToKKyAgICAg
ICAgICAgIHJldHVybiBQYXRoKCIvYWJjIikKIAotZXhhbXBsZTogcHJldmVudGluZyAicmVxdWVz
dHMiIGZyb20gcmVtb3RlIG9wZXJhdGlvbnMKKyAgICAgICAgIyBBcHBsaWNhdGlvbiBvZiB0aGUg
bW9ua2V5cGF0Y2ggdG8gcmVwbGFjZSBQYXRoLmhvbWUKKyAgICAgICAgIyB3aXRoIHRoZSBiZWhh
dmlvciBvZiBtb2NrcmV0dXJuIGRlZmluZWQgYWJvdmUuCisgICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIoUGF0aCwgImhvbWUiLCBtb2NrcmV0dXJuKQorCisgICAgICAgICMgQ2FsbGluZyBnZXRz
c2goKSB3aWxsIHVzZSBtb2NrcmV0dXJuIGluIHBsYWNlIG9mIFBhdGguaG9tZQorICAgICAgICAj
IGZvciB0aGlzIHRlc3Qgd2l0aCB0aGUgbW9ua2V5cGF0Y2guCisgICAgICAgIHggPSBnZXRzc2go
KQorICAgICAgICBhc3NlcnQgeCA9PSBQYXRoKCIvYWJjLy5zc2giKQorCitNb25rZXlwYXRjaGlu
ZyByZXR1cm5lZCBvYmplY3RzOiBidWlsZGluZyBtb2NrIGNsYXNzZXMKIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCis6cHk6bWV0aDpgbW9u
a2V5cGF0Y2guc2V0YXR0ciA8TW9ua2V5UGF0Y2guc2V0YXR0cj5gIGNhbiBiZSB1c2VkIGluIGNv
bmp1bmN0aW9uIHdpdGggY2xhc3NlcyB0byBtb2NrIHJldHVybmVkCitvYmplY3RzIGZyb20gZnVu
Y3Rpb25zIGluc3RlYWQgb2YgdmFsdWVzLgorSW1hZ2luZSBhIHNpbXBsZSBmdW5jdGlvbiB0byB0
YWtlIGFuIEFQSSB1cmwgYW5kIHJldHVybiB0aGUganNvbiByZXNwb25zZS4KKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiBhcHAucHksIGEgc2ltcGxlIEFQSSBy
ZXRyaWV2YWwgZXhhbXBsZQorICAgIGltcG9ydCByZXF1ZXN0cworCisKKyAgICBkZWYgZ2V0X2pz
b24odXJsKToKKyAgICAgICAgIiIiVGFrZXMgYSBVUkwsIGFuZCByZXR1cm5zIHRoZSBKU09OLiIi
IgorICAgICAgICByID0gcmVxdWVzdHMuZ2V0KHVybCkKKyAgICAgICAgcmV0dXJuIHIuanNvbigp
CisKK1dlIG5lZWQgdG8gbW9jayBgYHJgYCwgdGhlIHJldHVybmVkIHJlc3BvbnNlIG9iamVjdCBm
b3IgdGVzdGluZyBwdXJwb3Nlcy4KK1RoZSBtb2NrIG9mIGBgcmBgIG5lZWRzIGEgYGAuanNvbigp
YGAgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBkaWN0aW9uYXJ5LgorVGhpcyBjYW4gYmUgZG9uZSBp
biBvdXIgdGVzdCBmaWxlIGJ5IGRlZmluaW5nIGEgY2xhc3MgdG8gcmVwcmVzZW50IGBgcmBgLgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRlbnRzIG9mIHRlc3RfYXBwLnB5
LCBhIHNpbXBsZSB0ZXN0IGZvciBvdXIgQVBJIHJldHJpZXZhbAorICAgICMgaW1wb3J0IHJlcXVl
c3RzIGZvciB0aGUgcHVycG9zZXMgb2YgbW9ua2V5cGF0Y2hpbmcKKyAgICBpbXBvcnQgcmVxdWVz
dHMKKworICAgICMgb3VyIGFwcC5weSB0aGF0IGluY2x1ZGVzIHRoZSBnZXRfanNvbigpIGZ1bmN0
aW9uCisgICAgIyB0aGlzIGlzIHRoZSBwcmV2aW91cyBjb2RlIGJsb2NrIGV4YW1wbGUKKyAgICBp
bXBvcnQgYXBwCisKKyAgICAjIGN1c3RvbSBjbGFzcyB0byBiZSB0aGUgbW9jayByZXR1cm4gdmFs
dWUKKyAgICAjIHdpbGwgb3ZlcnJpZGUgdGhlIHJlcXVlc3RzLlJlc3BvbnNlIHJldHVybmVkIGZy
b20gcmVxdWVzdHMuZ2V0CisgICAgY2xhc3MgTW9ja1Jlc3BvbnNlOgorCisgICAgICAgICMgbW9j
ayBqc29uKCkgbWV0aG9kIGFsd2F5cyByZXR1cm5zIGEgc3BlY2lmaWMgdGVzdGluZyBkaWN0aW9u
YXJ5CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGpzb24oKToKKyAgICAgICAg
ICAgIHJldHVybiB7Im1vY2tfa2V5IjogIm1vY2tfcmVzcG9uc2UifQorCisKKyAgICBkZWYgdGVz
dF9nZXRfanNvbihtb25rZXlwYXRjaCk6CisKKyAgICAgICAgIyBBbnkgYXJndW1lbnRzIG1heSBi
ZSBwYXNzZWQgYW5kIG1vY2tfZ2V0KCkgd2lsbCBhbHdheXMgcmV0dXJuIG91cgorICAgICAgICAj
IG1vY2tlZCBvYmplY3QsIHdoaWNoIG9ubHkgaGFzIHRoZSAuanNvbigpIG1ldGhvZC4KKyAgICAg
ICAgZGVmIG1vY2tfZ2V0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gTW9j
a1Jlc3BvbnNlKCkKKworICAgICAgICAjIGFwcGx5IHRoZSBtb25rZXlwYXRjaCBmb3IgcmVxdWVz
dHMuZ2V0IHRvIG1vY2tfZ2V0CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocmVxdWVzdHMs
ICJnZXQiLCBtb2NrX2dldCkKKworICAgICAgICAjIGFwcC5nZXRfanNvbiwgd2hpY2ggY29udGFp
bnMgcmVxdWVzdHMuZ2V0LCB1c2VzIHRoZSBtb25rZXlwYXRjaAorICAgICAgICByZXN1bHQgPSBh
cHAuZ2V0X2pzb24oImh0dHBzOi8vZmFrZXVybCIpCisgICAgICAgIGFzc2VydCByZXN1bHRbIm1v
Y2tfa2V5Il0gPT0gIm1vY2tfcmVzcG9uc2UiCisKKworYGBtb25rZXlwYXRjaGBgIGFwcGxpZXMg
dGhlIG1vY2sgZm9yIGBgcmVxdWVzdHMuZ2V0YGAgd2l0aCBvdXIgYGBtb2NrX2dldGBgIGZ1bmN0
aW9uLgorVGhlIGBgbW9ja19nZXRgYCBmdW5jdGlvbiByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRo
ZSBgYE1vY2tSZXNwb25zZWBgIGNsYXNzLCB3aGljaAoraGFzIGEgYGBqc29uKClgYCBtZXRob2Qg
ZGVmaW5lZCB0byByZXR1cm4gYSBrbm93biB0ZXN0aW5nIGRpY3Rpb25hcnkgYW5kIGRvZXMgbm90
CityZXF1aXJlIGFueSBvdXRzaWRlIEFQSSBjb25uZWN0aW9uLgorCitZb3UgY2FuIGJ1aWxkIHRo
ZSBgYE1vY2tSZXNwb25zZWBgIGNsYXNzIHdpdGggdGhlIGFwcHJvcHJpYXRlIGRlZ3JlZSBvZiBj
b21wbGV4aXR5IGZvcgordGhlIHNjZW5hcmlvIHlvdSBhcmUgdGVzdGluZy4gRm9yIGluc3RhbmNl
LCBpdCBjb3VsZCBpbmNsdWRlIGFuIGBgb2tgYCBwcm9wZXJ0eSB0aGF0CithbHdheXMgcmV0dXJu
cyBgYFRydWVgYCwgb3IgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgZnJvbSB0aGUgYGBqc29uKClg
YCBtb2NrZWQgbWV0aG9kCitiYXNlZCBvbiBpbnB1dCBzdHJpbmdzLgorCitUaGlzIG1vY2sgY2Fu
IGJlIHNoYXJlZCBhY3Jvc3MgdGVzdHMgdXNpbmcgYSBgYGZpeHR1cmVgYDoKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiB0ZXN0X2FwcC5weSwgYSBzaW1wbGUg
dGVzdCBmb3Igb3VyIEFQSSByZXRyaWV2YWwKKyAgICBpbXBvcnQgcHl0ZXN0CisgICAgaW1wb3J0
IHJlcXVlc3RzCisKKyAgICAjIGFwcC5weSB0aGF0IGluY2x1ZGVzIHRoZSBnZXRfanNvbigpIGZ1
bmN0aW9uCisgICAgaW1wb3J0IGFwcAorCisgICAgIyBjdXN0b20gY2xhc3MgdG8gYmUgdGhlIG1v
Y2sgcmV0dXJuIHZhbHVlIG9mIHJlcXVlc3RzLmdldCgpCisgICAgY2xhc3MgTW9ja1Jlc3BvbnNl
OgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBqc29uKCk6CisgICAgICAgICAg
ICByZXR1cm4geyJtb2NrX2tleSI6ICJtb2NrX3Jlc3BvbnNlIn0KKworCisgICAgIyBtb25rZXlw
YXRjaGVkIHJlcXVlc3RzLmdldCBtb3ZlZCB0byBhIGZpeHR1cmUKKyAgICBAcHl0ZXN0LmZpeHR1
cmUKKyAgICBkZWYgbW9ja19yZXNwb25zZShtb25rZXlwYXRjaCk6CisgICAgICAgICIiIlJlcXVl
c3RzLmdldCgpIG1vY2tlZCB0byByZXR1cm4geydtb2NrX2tleSc6J21vY2tfcmVzcG9uc2UnfS4i
IiIKKworICAgICAgICBkZWYgbW9ja19nZXQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAg
IHJldHVybiBNb2NrUmVzcG9uc2UoKQorCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocmVx
dWVzdHMsICJnZXQiLCBtb2NrX2dldCkKKworCisgICAgIyBub3RpY2Ugb3VyIHRlc3QgdXNlcyB0
aGUgY3VzdG9tIGZpeHR1cmUgaW5zdGVhZCBvZiBtb25rZXlwYXRjaCBkaXJlY3RseQorICAgIGRl
ZiB0ZXN0X2dldF9qc29uKG1vY2tfcmVzcG9uc2UpOgorICAgICAgICByZXN1bHQgPSBhcHAuZ2V0
X2pzb24oImh0dHBzOi8vZmFrZXVybCIpCisgICAgICAgIGFzc2VydCByZXN1bHRbIm1vY2tfa2V5
Il0gPT0gIm1vY2tfcmVzcG9uc2UiCisKKworRnVydGhlcm1vcmUsIGlmIHRoZSBtb2NrIHdhcyBk
ZXNpZ25lZCB0byBiZSBhcHBsaWVkIHRvIGFsbCB0ZXN0cywgdGhlIGBgZml4dHVyZWBgIGNvdWxk
CitiZSBtb3ZlZCB0byBhIGBgY29uZnRlc3QucHlgYCBmaWxlIGFuZCB1c2UgdGhlIHdpdGggYGBh
dXRvdXNlPVRydWVgYCBvcHRpb24uCisKKworR2xvYmFsIHBhdGNoIGV4YW1wbGU6IHByZXZlbnRp
bmcgInJlcXVlc3RzIiBmcm9tIHJlbW90ZSBvcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogSWYgeW91
IHdhbnQgdG8gcHJldmVudCB0aGUgInJlcXVlc3RzIiBsaWJyYXJ5IGZyb20gcGVyZm9ybWluZyBo
dHRwCi1yZXF1ZXN0cyBpbiBhbGwgeW91ciB0ZXN0cywgeW91IGNhbiBkbzo6CityZXF1ZXN0cyBp
biBhbGwgeW91ciB0ZXN0cywgeW91IGNhbiBkbzoKIAotICAgICMgY29udGVudCBvZiBjb25mdGVz
dC5weQorLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiBjb25mdGVz
dC5weQogICAgIGltcG9ydCBweXRlc3QKKworCiAgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9
VHJ1ZSkKICAgICBkZWYgbm9fcmVxdWVzdHMobW9ua2V5cGF0Y2gpOgorICAgICAgICAiIiJSZW1v
dmUgcmVxdWVzdHMuc2Vzc2lvbnMuU2Vzc2lvbi5yZXF1ZXN0IGZvciBhbGwgdGVzdHMuIiIiCiAg
ICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIoInJlcXVlc3RzLnNlc3Npb25zLlNlc3Npb24ucmVx
dWVzdCIpCiAKIFRoaXMgYXV0b3VzZSBmaXh0dXJlIHdpbGwgYmUgZXhlY3V0ZWQgZm9yIGVhY2gg
dGVzdCBmdW5jdGlvbiBhbmQgaXQKQEAgLTgxLDYgKzI1MywxODcgQEAgc28gdGhhdCBhbnkgYXR0
ZW1wdHMgd2l0aGluIHRlc3RzIHRvIGNyZWF0ZSBodHRwIHJlcXVlc3RzIHdpbGwgZmFpbC4KICAg
ICBTZWUgaXNzdWUgYCMzMjkwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMyOTA+YF8gZm9yIGRldGFpbHMuCiAKIAorTW9ua2V5cGF0Y2hpbmcgZW52aXJvbm1l
bnQgdmFyaWFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYg
eW91IGFyZSB3b3JraW5nIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIHlvdSBvZnRlbiBuZWVk
IHRvIHNhZmVseSBjaGFuZ2UgdGhlIHZhbHVlcworb3IgZGVsZXRlIHRoZW0gZnJvbSB0aGUgc3lz
dGVtIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBgYG1vbmtleXBhdGNoYGAgcHJvdmlkZXMgYSBtZWNo
YW5pc20KK3RvIGRvIHRoaXMgdXNpbmcgdGhlIGBgc2V0ZW52YGAgYW5kIGBgZGVsZW52YGAgbWV0
aG9kLiBPdXIgZXhhbXBsZSBjb2RlIHRvIHRlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
KworICAgICMgY29udGVudHMgb2Ygb3VyIG9yaWdpbmFsIGNvZGUgZmlsZSBlLmcuIGNvZGUucHkK
KyAgICBpbXBvcnQgb3MKKworCisgICAgZGVmIGdldF9vc191c2VyX2xvd2VyKCk6CisgICAgICAg
ICIiIlNpbXBsZSByZXRyaWV2YWwgZnVuY3Rpb24uCisgICAgICAgIFJldHVybnMgbG93ZXJjYXNl
IFVTRVIgb3IgcmFpc2VzIE9TRXJyb3IuIiIiCisgICAgICAgIHVzZXJuYW1lID0gb3MuZ2V0ZW52
KCJVU0VSIikKKworICAgICAgICBpZiB1c2VybmFtZSBpcyBOb25lOgorICAgICAgICAgICAgcmFp
c2UgT1NFcnJvcigiVVNFUiBlbnZpcm9ubWVudCBpcyBub3Qgc2V0LiIpCisKKyAgICAgICAgcmV0
dXJuIHVzZXJuYW1lLmxvd2VyKCkKKworVGhlcmUgYXJlIHR3byBwb3RlbnRpYWwgcGF0aHMuIEZp
cnN0LCB0aGUgYGBVU0VSYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGEKK3ZhbHVl
LiBTZWNvbmQsIHRoZSBgYFVTRVJgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBkb2VzIG5vdCBleGlz
dC4gVXNpbmcgYGBtb25rZXlwYXRjaGBgCitib3RoIHBhdGhzIGNhbiBiZSBzYWZlbHkgdGVzdGVk
IHdpdGhvdXQgaW1wYWN0aW5nIHRoZSBydW5uaW5nIGVudmlyb25tZW50OgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRlbnRzIG9mIG91ciB0ZXN0IGZpbGUgZS5nLiB0ZXN0
X2NvZGUucHkKKyAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgIGRlZiB0ZXN0X3VwcGVyX3RvX2xv
d2VyKG1vbmtleXBhdGNoKToKKyAgICAgICAgIiIiU2V0IHRoZSBVU0VSIGVudiB2YXIgdG8gYXNz
ZXJ0IHRoZSBiZWhhdmlvci4iIiIKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJVU0VSIiwg
IlRlc3RpbmdVc2VyIikKKyAgICAgICAgYXNzZXJ0IGdldF9vc191c2VyX2xvd2VyKCkgPT0gInRl
c3Rpbmd1c2VyIgorCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24obW9ua2V5cGF0Y2gp
OgorICAgICAgICAiIiJSZW1vdmUgdGhlIFVTRVIgZW52IHZhciBhbmQgYXNzZXJ0IE9TRXJyb3Ig
aXMgcmFpc2VkLiIiIgorICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlVTRVIiLCByYWlzaW5n
PUZhbHNlKQorCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhPU0Vycm9yKToKKyAgICAgICAg
ICAgIF8gPSBnZXRfb3NfdXNlcl9sb3dlcigpCisKK1RoaXMgYmVoYXZpb3IgY2FuIGJlIG1vdmVk
IGludG8gYGBmaXh0dXJlYGAgc3RydWN0dXJlcyBhbmQgc2hhcmVkIGFjcm9zcyB0ZXN0czoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiBvdXIgdGVzdCBmaWxl
IGUuZy4gdGVzdF9jb2RlLnB5CisgICAgaW1wb3J0IHB5dGVzdAorCisKKyAgICBAcHl0ZXN0LmZp
eHR1cmUKKyAgICBkZWYgbW9ja19lbnZfdXNlcihtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtl
eXBhdGNoLnNldGVudigiVVNFUiIsICJUZXN0aW5nVXNlciIpCisKKworICAgIEBweXRlc3QuZml4
dHVyZQorICAgIGRlZiBtb2NrX2Vudl9taXNzaW5nKG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9u
a2V5cGF0Y2guZGVsZW52KCJVU0VSIiwgcmFpc2luZz1GYWxzZSkKKworCisgICAgIyBub3RpY2Ug
dGhlIHRlc3RzIHJlZmVyZW5jZSB0aGUgZml4dHVyZXMgZm9yIG1vY2tzCisgICAgZGVmIHRlc3Rf
dXBwZXJfdG9fbG93ZXIobW9ja19lbnZfdXNlcik6CisgICAgICAgIGFzc2VydCBnZXRfb3NfdXNl
cl9sb3dlcigpID09ICJ0ZXN0aW5ndXNlciIKKworCisgICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0
aW9uKG1vY2tfZW52X21pc3NpbmcpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoT1NFcnJv
cik6CisgICAgICAgICAgICBfID0gZ2V0X29zX3VzZXJfbG93ZXIoKQorCisKK01vbmtleXBhdGNo
aW5nIGRpY3Rpb25hcmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpweTptZXRo
OmBtb25rZXlwYXRjaC5zZXRpdGVtIDxNb25rZXlQYXRjaC5zZXRpdGVtPmAgY2FuIGJlIHVzZWQg
dG8gc2FmZWx5IHNldCB0aGUgdmFsdWVzIG9mIGRpY3Rpb25hcmllcwordG8gc3BlY2lmaWMgdmFs
dWVzIGR1cmluZyB0ZXN0cy4gVGFrZSB0aGlzIHNpbXBsaWZpZWQgY29ubmVjdGlvbiBzdHJpbmcg
ZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiBh
cHAucHkgdG8gZ2VuZXJhdGUgYSBzaW1wbGUgY29ubmVjdGlvbiBzdHJpbmcKKyAgICBERUZBVUxU
X0NPTkZJRyA9IHsidXNlciI6ICJ1c2VyMSIsICJkYXRhYmFzZSI6ICJkYjEifQorCisKKyAgICBk
ZWYgY3JlYXRlX2Nvbm5lY3Rpb25fc3RyaW5nKGNvbmZpZz1Ob25lKToKKyAgICAgICAgIiIiQ3Jl
YXRlcyBhIGNvbm5lY3Rpb24gc3RyaW5nIGZyb20gaW5wdXQgb3IgZGVmYXVsdHMuIiIiCisgICAg
ICAgIGNvbmZpZyA9IGNvbmZpZyBvciBERUZBVUxUX0NPTkZJRworICAgICAgICByZXR1cm4gZiJV
c2VyIElkPXtjb25maWdbJ3VzZXInXX07IExvY2F0aW9uPXtjb25maWdbJ2RhdGFiYXNlJ119OyIK
KworRm9yIHRlc3RpbmcgcHVycG9zZXMgd2UgY2FuIHBhdGNoIHRoZSBgYERFRkFVTFRfQ09ORklH
YGAgZGljdGlvbmFyeSB0byBzcGVjaWZpYyB2YWx1ZXMuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRo
b24KKworICAgICMgY29udGVudHMgb2YgdGVzdF9hcHAucHkKKyAgICAjIGFwcC5weSB3aXRoIHRo
ZSBjb25uZWN0aW9uIHN0cmluZyBmdW5jdGlvbiAocHJpb3IgY29kZSBibG9jaykKKyAgICBpbXBv
cnQgYXBwCisKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rpb24obW9ua2V5cGF0Y2gpOgorCisgICAg
ICAgICMgUGF0Y2ggdGhlIHZhbHVlcyBvZiBERUZBVUxUX0NPTkZJRyB0byBzcGVjaWZpYworICAg
ICAgICAjIHRlc3RpbmcgdmFsdWVzIG9ubHkgZm9yIHRoaXMgdGVzdC4KKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0aXRlbShhcHAuREVGQVVMVF9DT05GSUcsICJ1c2VyIiwgInRlc3RfdXNlciIpCisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oYXBwLkRFRkFVTFRfQ09ORklHLCAiZGF0YWJhc2Ui
LCAidGVzdF9kYiIpCisKKyAgICAgICAgIyBleHBlY3RlZCByZXN1bHQgYmFzZWQgb24gdGhlIG1v
Y2tzCisgICAgICAgIGV4cGVjdGVkID0gIlVzZXIgSWQ9dGVzdF91c2VyOyBMb2NhdGlvbj10ZXN0
X2RiOyIKKworICAgICAgICAjIHRoZSB0ZXN0IHVzZXMgdGhlIG1vbmtleXBhdGNoZWQgZGljdGlv
bmFyeSBzZXR0aW5ncworICAgICAgICByZXN1bHQgPSBhcHAuY3JlYXRlX2Nvbm5lY3Rpb25fc3Ry
aW5nKCkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorCitZb3UgY2FuIHVzZSB0
aGUgOnB5Om1ldGg6YG1vbmtleXBhdGNoLmRlbGl0ZW0gPE1vbmtleVBhdGNoLmRlbGl0ZW0+YCB0
byByZW1vdmUgdmFsdWVzLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRl
bnRzIG9mIHRlc3RfYXBwLnB5CisgICAgaW1wb3J0IHB5dGVzdAorCisgICAgIyBhcHAucHkgd2l0
aCB0aGUgY29ubmVjdGlvbiBzdHJpbmcgZnVuY3Rpb24KKyAgICBpbXBvcnQgYXBwCisKKworICAg
IGRlZiB0ZXN0X21pc3NpbmdfdXNlcihtb25rZXlwYXRjaCk6CisKKyAgICAgICAgIyBwYXRjaCB0
aGUgREVGQVVMVF9DT05GSUcgdCBiZSBtaXNzaW5nIHRoZSAndXNlcicga2V5CisgICAgICAgIG1v
bmtleXBhdGNoLmRlbGl0ZW0oYXBwLkRFRkFVTFRfQ09ORklHLCAidXNlciIsIHJhaXNpbmc9RmFs
c2UpCisKKyAgICAgICAgIyBLZXkgZXJyb3IgZXhwZWN0ZWQgYmVjYXVzZSBhIGNvbmZpZyBpcyBu
b3QgcGFzc2VkLCBhbmQgdGhlCisgICAgICAgICMgZGVmYXVsdCBpcyBub3cgbWlzc2luZyB0aGUg
J3VzZXInIGVudHJ5LgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoS2V5RXJyb3IpOgorICAg
ICAgICAgICAgXyA9IGFwcC5jcmVhdGVfY29ubmVjdGlvbl9zdHJpbmcoKQorCisKK1RoZSBtb2R1
bGFyaXR5IG9mIGZpeHR1cmVzIGdpdmVzIHlvdSB0aGUgZmxleGliaWxpdHkgdG8gZGVmaW5lCitz
ZXBhcmF0ZSBmaXh0dXJlcyBmb3IgZWFjaCBwb3RlbnRpYWwgbW9jayBhbmQgcmVmZXJlbmNlIHRo
ZW0gaW4gdGhlIG5lZWRlZCB0ZXN0cy4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAg
IyBjb250ZW50cyBvZiB0ZXN0X2FwcC5weQorICAgIGltcG9ydCBweXRlc3QKKworICAgICMgYXBw
LnB5IHdpdGggdGhlIGNvbm5lY3Rpb24gc3RyaW5nIGZ1bmN0aW9uCisgICAgaW1wb3J0IGFwcAor
CisgICAgIyBhbGwgb2YgdGhlIG1vY2tzIGFyZSBtb3ZlZCBpbnRvIHNlcGFyYXRlZCBmaXh0dXJl
cworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBtb2NrX3Rlc3RfdXNlcihtb25rZXlwYXRj
aCk6CisgICAgICAgICIiIlNldCB0aGUgREVGQVVMVF9DT05GSUcgdXNlciB0byB0ZXN0X3VzZXIu
IiIiCisgICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oYXBwLkRFRkFVTFRfQ09ORklHLCAidXNl
ciIsICJ0ZXN0X3VzZXIiKQorCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgbW9ja190
ZXN0X2RhdGFiYXNlKG1vbmtleXBhdGNoKToKKyAgICAgICAgIiIiU2V0IHRoZSBERUZBVUxUX0NP
TkZJRyBkYXRhYmFzZSB0byB0ZXN0X2RiLiIiIgorICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVt
KGFwcC5ERUZBVUxUX0NPTkZJRywgImRhdGFiYXNlIiwgInRlc3RfZGIiKQorCisKKyAgICBAcHl0
ZXN0LmZpeHR1cmUKKyAgICBkZWYgbW9ja19taXNzaW5nX2RlZmF1bHRfdXNlcihtb25rZXlwYXRj
aCk6CisgICAgICAgICIiIlJlbW92ZSB0aGUgdXNlciBrZXkgZnJvbSBERUZBVUxUX0NPTkZJRyIi
IgorICAgICAgICBtb25rZXlwYXRjaC5kZWxpdGVtKGFwcC5ERUZBVUxUX0NPTkZJRywgInVzZXIi
LCByYWlzaW5nPUZhbHNlKQorCisKKyAgICAjIHRlc3RzIHJlZmVyZW5jZSBvbmx5IHRoZSBmaXh0
dXJlIG1vY2tzIHRoYXQgYXJlIG5lZWRlZAorICAgIGRlZiB0ZXN0X2Nvbm5lY3Rpb24obW9ja190
ZXN0X3VzZXIsIG1vY2tfdGVzdF9kYXRhYmFzZSk6CisKKyAgICAgICAgZXhwZWN0ZWQgPSAiVXNl
ciBJZD10ZXN0X3VzZXI7IExvY2F0aW9uPXRlc3RfZGI7IgorCisgICAgICAgIHJlc3VsdCA9IGFw
cC5jcmVhdGVfY29ubmVjdGlvbl9zdHJpbmcoKQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IGV4
cGVjdGVkCisKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfdXNlcihtb2NrX21pc3NpbmdfZGVmYXVs
dF91c2VyKToKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoS2V5RXJyb3IpOgorICAgICAg
ICAgICAgXyA9IGFwcC5jcmVhdGVfY29ubmVjdGlvbl9zdHJpbmcoKQorCisKIC4uIGN1cnJlbnRt
b2R1bGU6OiBfcHl0ZXN0Lm1vbmtleXBhdGNoCiAKIEFQSSBSZWZlcmVuY2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9ub3NlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9ub3NlLnJz
dAppbmRleCAxZjdiN2I2Mzg0NDguLjFhYzcwYWY2YzZiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL25vc2UucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9ub3NlLnJzdApAQCAt
Myw4ICszLDYgQEAKIFJ1bm5pbmcgdGVzdHMgd3JpdHRlbiBmb3Igbm9zZQogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLS4uIGluY2x1ZGU6OiBsaW5rcy5pbmMKLQog
YGBweXRlc3RgYCBoYXMgYmFzaWMgc3VwcG9ydCBmb3IgcnVubmluZyB0ZXN0cyB3cml0dGVuIGZv
ciBub3NlXy4KIAogLi4gX25vc2VzdHlsZToKQEAgLTEyLDcgKzEwLDkgQEAgUnVubmluZyB0ZXN0
cyB3cml0dGVuIGZvciBub3NlCiBVc2FnZQogLS0tLS0tLS0tLS0tLQogCi1BZnRlciA6cmVmOmBp
bnN0YWxsYXRpb25gIHR5cGU6OgorQWZ0ZXIgOnJlZjpgaW5zdGFsbGF0aW9uYCB0eXBlOgorCisu
LiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0aG9uIHNldHVwLnB5IGRldmVsb3AgICMgbWFr
ZSBzdXJlIHRlc3RzIGNhbiBpbXBvcnQgb3VyIHBhY2thZ2UKICAgICBweXRlc3QgICMgaW5zdGVh
ZCBvZiAnbm9zZXRlc3RzJwpAQCAtMjYsNyArMjYsNiBAQCBTdXBwb3J0ZWQgbm9zZSBJZGlvbXMK
ICogc2V0dXAgYW5kIHRlYXJkb3duIGF0IG1vZHVsZS9jbGFzcy9tZXRob2QgbGV2ZWwKICogU2tp
cFRlc3QgZXhjZXB0aW9ucyBhbmQgbWFya2VycwogKiBzZXR1cC90ZWFyZG93biBkZWNvcmF0b3Jz
Ci0qIGBgeWllbGRgYC1iYXNlZCB0ZXN0cyBhbmQgdGhlaXIgc2V0dXAgKGNvbnNpZGVyZWQgZGVw
cmVjYXRlZCBhcyBvZiBweXRlc3QgMy4wKQogKiBgYF9fdGVzdF9fYGAgYXR0cmlidXRlIG9uIG1v
ZHVsZXMvY2xhc3Nlcy9mdW5jdGlvbnMKICogZ2VuZXJhbCB1c2FnZSBvZiBub3NlIHV0aWxpdGll
cwogCkBAIC00NCw3ICs0Myw3IEBAIFVuc3VwcG9ydGVkIGlkaW9tcyAvIGtub3duIGlzc3Vlcwog
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzcvPmBfLgog
CiAtIG5vc2UgaW1wb3J0cyB0ZXN0IG1vZHVsZXMgd2l0aCB0aGUgc2FtZSBpbXBvcnQgcGF0aCAo
ZS5nLgotICBgYHRlc3RzLnRlc3RfbW9kYGApIGJ1dCBkaWZmZXJlbnQgZmlsZSBzeXN0ZW0gcGF0
aHMKKyAgYGB0ZXN0cy50ZXN0X21vZGVgYCkgYnV0IGRpZmZlcmVudCBmaWxlIHN5c3RlbSBwYXRo
cwogICAoZS5nLiBgYHRlc3RzL3Rlc3RfbW9kZS5weWBgIGFuZCBgYG90aGVyL3Rlc3RzL3Rlc3Rf
bW9kZS5weWBgKQogICBieSBleHRlbmRpbmcgc3lzLnBhdGgvaW1wb3J0IHNlbWFudGljcy4gICBw
eXRlc3QgZG9lcyBub3QgZG8gdGhhdAogICBidXQgdGhlcmUgaXMgZGlzY3Vzc2lvbiBpbiBgIzI2
OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjg+YF8gZm9y
IGFkZGluZyBzb21lIHN1cHBvcnQuICBOb3RlIHRoYXQKQEAgLTY1LDggKzY0LDggQEAgVW5zdXBw
b3J0ZWQgaWRpb21zIC8ga25vd24gaXNzdWVzCiAKIC0gbm8gbm9zZS1jb25maWd1cmF0aW9uIGlz
IHJlY29nbml6ZWQuCiAKLS0gYGB5aWVsZGBgLWJhc2VkIG1ldGhvZHMgZG9uJ3Qgc3VwcG9ydCBg
YHNldHVwYGAgcHJvcGVybHkgYmVjYXVzZQotICB0aGUgYGBzZXR1cGBgIG1ldGhvZCBpcyBhbHdh
eXMgY2FsbGVkIGluIHRoZSBzYW1lIGNsYXNzIGluc3RhbmNlLgotICBUaGVyZSBhcmUgbm8gcGxh
bnMgdG8gZml4IHRoaXMgY3VycmVudGx5IGJlY2F1c2UgYGB5aWVsZGBgLXRlc3RzCi0gIGFyZSBk
ZXByZWNhdGVkIGluIHB5dGVzdCAzLjAsIHdpdGggYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBg
Ci0gIGJlaW5nIHRoZSByZWNvbW1lbmRlZCBhbHRlcm5hdGl2ZS4KKy0gYGB5aWVsZGBgLWJhc2Vk
IG1ldGhvZHMgYXJlIHVuc3VwcG9ydGVkIGFzIG9mIHB5dGVzdCA0LjEuMC4gIFRoZXkgYXJlCisg
IGZ1bmRhbWVudGFsbHkgaW5jb21wYXRpYmxlIHdpdGggcHl0ZXN0IGJlY2F1c2UgdGhleSBkb24n
dCBzdXBwb3J0IGZpeHR1cmVzCisgIHByb3Blcmx5IHNpbmNlIGNvbGxlY3Rpb24gYW5kIHRlc3Qg
ZXhlY3V0aW9uIGFyZSBzZXBhcmF0ZWQuCisKKy4uIF9ub3NlOiBodHRwczovL25vc2UucmVhZHRo
ZWRvY3MuaW8vZW4vbGF0ZXN0LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3BhcmFt
ZXRyaXplLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9wYXJhbWV0cml6ZS5yc3QKaW5kZXggNjkz
Y2YxOTEzYmY4Li45ZTUzMWRkZDQ1ZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9w
YXJhbWV0cml6ZS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3BhcmFtZXRyaXplLnJzdApA
QCAtMjksMzMgKzI5LDM2IEBAIHB5dGVzdCBlbmFibGVzIHRlc3QgcGFyYW1ldHJpemF0aW9uIGF0
IHNldmVyYWwgbGV2ZWxzOgogCiAuLiByZWdlbmRvYzogd2lwZQogCi0uLiB2ZXJzaW9uYWRkZWQ6
OiAyLjIKLS4uIHZlcnNpb25jaGFuZ2VkOjogMi40CisKKwogICAgIFNldmVyYWwgaW1wcm92ZW1l
bnRzLgogCiBUaGUgYnVpbHRpbiA6cmVmOmBweXRlc3QubWFyay5wYXJhbWV0cml6ZSByZWZgIGRl
Y29yYXRvciBlbmFibGVzCiBwYXJhbWV0cml6YXRpb24gb2YgYXJndW1lbnRzIGZvciBhIHRlc3Qg
ZnVuY3Rpb24uICBIZXJlIGlzIGEgdHlwaWNhbCBleGFtcGxlCiBvZiBhIHRlc3QgZnVuY3Rpb24g
dGhhdCBpbXBsZW1lbnRzIGNoZWNraW5nIHRoYXQgYSBjZXJ0YWluIGlucHV0IGxlYWRzCi10byBh
biBleHBlY3RlZCBvdXRwdXQ6OgordG8gYW4gZXhwZWN0ZWQgb3V0cHV0OgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9leHBlY3RhdGlvbi5weQogICAg
IGltcG9ydCBweXRlc3QKLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInRlc3RfaW5wdXQs
ZXhwZWN0ZWQiLCBbCi0gICAgICAgICgiMys1IiwgOCksCi0gICAgICAgICgiMis0IiwgNiksCi0g
ICAgICAgICgiNio5IiwgNDIpLAotICAgIF0pCisKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgidGVzdF9pbnB1dCxleHBlY3RlZCIsIFsoIjMrNSIsIDgpLCAoIjIrNCIsIDYpLCAoIjYq
OSIsIDQyKV0pCiAgICAgZGVmIHRlc3RfZXZhbCh0ZXN0X2lucHV0LCBleHBlY3RlZCk6CiAgICAg
ICAgIGFzc2VydCBldmFsKHRlc3RfaW5wdXQpID09IGV4cGVjdGVkCiAKIEhlcmUsIHRoZSBgYEBw
YXJhbWV0cml6ZWBgIGRlY29yYXRvciBkZWZpbmVzIHRocmVlIGRpZmZlcmVudCBgYCh0ZXN0X2lu
cHV0LGV4cGVjdGVkKWBgCiB0dXBsZXMgc28gdGhhdCB0aGUgYGB0ZXN0X2V2YWxgYCBmdW5jdGlv
biB3aWxsIHJ1biB0aHJlZSB0aW1lcyB1c2luZwotdGhlbSBpbiB0dXJuOjoKK3RoZW0gaW4gdHVy
bjoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QKICAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
My54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1Q
RElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJF
RklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29s
bGVjdGVkIDMgaXRlbXMKIAogICAgIHRlc3RfZXhwZWN0YXRpb24ucHkgLi5GICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtNjUsMTggKzY4LDQy
IEBAIHRoZW0gaW4gdHVybjo6CiAKICAgICB0ZXN0X2lucHV0ID0gJzYqOScsIGV4cGVjdGVkID0g
NDIKIAotICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInRlc3RfaW5wdXQsZXhwZWN0
ZWQiLCBbCi0gICAgICAgICAgICAoIjMrNSIsIDgpLAotICAgICAgICAgICAgKCIyKzQiLCA2KSwK
LSAgICAgICAgICAgICgiNio5IiwgNDIpLAotICAgICAgICBdKQorICAgICAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoInRlc3RfaW5wdXQsZXhwZWN0ZWQiLCBbKCIzKzUiLCA4KSwgKCIyKzQi
LCA2KSwgKCI2KjkiLCA0MildKQogICAgICAgICBkZWYgdGVzdF9ldmFsKHRlc3RfaW5wdXQsIGV4
cGVjdGVkKToKICAgICA+ICAgICAgIGFzc2VydCBldmFsKHRlc3RfaW5wdXQpID09IGV4cGVjdGVk
CiAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IDU0ID09IDQyCiAgICAgRSAgICAg
ICAgKyAgd2hlcmUgNTQgPSBldmFsKCc2KjknKQogCi0gICAgdGVzdF9leHBlY3RhdGlvbi5weTo4
OiBBc3NlcnRpb25FcnJvcgotICAgID09PT09PT09PT09PT09PT09PT09IDEgZmFpbGVkLCAyIHBh
c3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0X2V4cGVj
dGF0aW9uLnB5OjY6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAg
IEZBSUxFRCB0ZXN0X2V4cGVjdGF0aW9uLnB5Ojp0ZXN0X2V2YWxbNio5LTQyXSAtIEFzc2VydGlv
bkVycm9yOiBhc3NlcnQgNTQuLi4KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxl
ZCwgMiBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG5vdGU6
OgorCisgICAgUGFyYW1ldGVyIHZhbHVlcyBhcmUgcGFzc2VkIGFzLWlzIHRvIHRlc3RzIChubyBj
b3B5IHdoYXRzb2V2ZXIpLgorCisgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBwYXNzIGEgbGlzdCBv
ciBhIGRpY3QgYXMgYSBwYXJhbWV0ZXIgdmFsdWUsIGFuZAorICAgIHRoZSB0ZXN0IGNhc2UgY29k
ZSBtdXRhdGVzIGl0LCB0aGUgbXV0YXRpb25zIHdpbGwgYmUgcmVmbGVjdGVkIGluIHN1YnNlcXVl
bnQKKyAgICB0ZXN0IGNhc2UgY2FsbHMuCisKKy4uIG5vdGU6OgorCisgICAgcHl0ZXN0IGJ5IGRl
ZmF1bHQgZXNjYXBlcyBhbnkgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdXNlZCBpbiB1bmljb2RlIHN0
cmluZ3MKKyAgICBmb3IgdGhlIHBhcmFtZXRyaXphdGlvbiBiZWNhdXNlIGl0IGhhcyBzZXZlcmFs
IGRvd25zaWRlcy4KKyAgICBJZiBob3dldmVyIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSB1bmljb2Rl
IHN0cmluZ3MgaW4gcGFyYW1ldHJpemF0aW9uCisgICAgYW5kIHNlZSB0aGVtIGluIHRoZSB0ZXJt
aW5hbCBhcyBpcyAobm9uLWVzY2FwZWQpLCB1c2UgdGhpcyBvcHRpb24KKyAgICBpbiB5b3VyIGBg
cHl0ZXN0LmluaWBgOgorCisgICAgLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgICAgIFtweXRl
c3RdCisgICAgICAgIGRpc2FibGVfdGVzdF9pZF9lc2NhcGluZ19hbmRfZm9yZmVpdF9hbGxfcmln
aHRzX3RvX2NvbW11bml0eV9zdXBwb3J0ID0gVHJ1ZQorCisgICAgS2VlcCBpbiBtaW5kIGhvd2V2
ZXIgdGhhdCB0aGlzIG1pZ2h0IGNhdXNlIHVud2FudGVkIHNpZGUgZWZmZWN0cyBhbmQKKyAgICBl
dmVuIGJ1Z3MgZGVwZW5kaW5nIG9uIHRoZSBPUyB1c2VkIGFuZCBwbHVnaW5zIGN1cnJlbnRseSBp
bnN0YWxsZWQsCisgICAgc28gdXNlIGl0IGF0IHlvdXIgb3duIHJpc2suCisKIAogQXMgZGVzaWdu
ZWQgaW4gdGhpcyBleGFtcGxlLCBvbmx5IG9uZSBwYWlyIG9mIGlucHV0L291dHB1dCB2YWx1ZXMg
ZmFpbHMKIHRoZSBzaW1wbGUgdGVzdCBmdW5jdGlvbi4gIEFuZCBhcyB1c3VhbCB3aXRoIHRlc3Qg
ZnVuY3Rpb24gYXJndW1lbnRzLApAQCAtODYsMzggKzExMyw1MSBAQCBOb3RlIHRoYXQgeW91IGNv
dWxkIGFsc28gdXNlIHRoZSBwYXJhbWV0cml6ZSBtYXJrZXIgb24gYSBjbGFzcyBvciBhIG1vZHVs
ZQogKHNlZSA6cmVmOmBtYXJrYCkgd2hpY2ggd291bGQgaW52b2tlIHNldmVyYWwgZnVuY3Rpb25z
IHdpdGggdGhlIGFyZ3VtZW50IHNldHMuCiAKIEl0IGlzIGFsc28gcG9zc2libGUgdG8gbWFyayBp
bmRpdmlkdWFsIHRlc3QgaW5zdGFuY2VzIHdpdGhpbiBwYXJhbWV0cml6ZSwKLWZvciBleGFtcGxl
IHdpdGggdGhlIGJ1aWx0aW4gYGBtYXJrLnhmYWlsYGA6OgorZm9yIGV4YW1wbGUgd2l0aCB0aGUg
YnVpbHRpbiBgYG1hcmsueGZhaWxgYDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
IyBjb250ZW50IG9mIHRlc3RfZXhwZWN0YXRpb24ucHkKICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwgWwotICAgICAg
ICAoIjMrNSIsIDgpLAotICAgICAgICAoIjIrNCIsIDYpLAotICAgICAgICBweXRlc3QucGFyYW0o
IjYqOSIsIDQyLAotICAgICAgICAgICAgICAgICAgICAgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwp
LAotICAgIF0pCisKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInRl
c3RfaW5wdXQsZXhwZWN0ZWQiLAorICAgICAgICBbKCIzKzUiLCA4KSwgKCIyKzQiLCA2KSwgcHl0
ZXN0LnBhcmFtKCI2KjkiLCA0MiwgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwpXSwKKyAgICApCiAg
ICAgZGVmIHRlc3RfZXZhbCh0ZXN0X2lucHV0LCBleHBlY3RlZCk6CiAgICAgICAgIGFzc2VydCBl
dmFsKHRlc3RfaW5wdXQpID09IGV4cGVjdGVkCiAKLUxldCdzIHJ1biB0aGlzOjoKK0xldCdzIHJ1
biB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdAogICAgID09
PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5
dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRP
Q19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBw
eXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhP
Tl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAg
ICBjb2xsZWN0ZWQgMyBpdGVtcwogCiAgICAgdGVzdF9leHBlY3RhdGlvbi5weSAuLnggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09
PT09PT09PT09PT09PT09IDIgcGFzc2VkLCAxIHhmYWlsZWQgaW4gMC4xMiBzZWNvbmRzID09PT09
PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQsIDEg
eGZhaWxlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PQogCiBUaGUgb25lIHBhcmFt
ZXRlciBzZXQgd2hpY2ggY2F1c2VkIGEgZmFpbHVyZSBwcmV2aW91c2x5IG5vdwotc2hvd3MgdXAg
YXMgYW4gInhmYWlsZWQgKGV4cGVjdGVkIHRvIGZhaWwpIiB0ZXN0Lgorc2hvd3MgdXAgYXMgYW4g
InhmYWlsZWQiIChleHBlY3RlZCB0byBmYWlsKSB0ZXN0LgorCitJbiBjYXNlIHRoZSB2YWx1ZXMg
cHJvdmlkZWQgdG8gYGBwYXJhbWV0cml6ZWBgIHJlc3VsdCBpbiBhbiBlbXB0eSBsaXN0IC0gZm9y
CitleGFtcGxlLCBpZiB0aGV5J3JlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBieSBzb21lIGZ1bmN0
aW9uIC0gdGhlIGJlaGF2aW91ciBvZgorcHl0ZXN0IGlzIGRlZmluZWQgYnkgdGhlIDpjb25mdmFs
OmBlbXB0eV9wYXJhbWV0ZXJfc2V0X21hcmtgIG9wdGlvbi4KIAogVG8gZ2V0IGFsbCBjb21iaW5h
dGlvbnMgb2YgbXVsdGlwbGUgcGFyYW1ldHJpemVkIGFyZ3VtZW50cyB5b3UgY2FuIHN0YWNrCi1g
YHBhcmFtZXRyaXplYGAgZGVjb3JhdG9yczo6CitgYHBhcmFtZXRyaXplYGAgZGVjb3JhdG9yczoK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1wb3J0IHB5dGVzdAorCisKICAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIngiLCBbMCwgMV0pCiAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJ5IiwgWzIsIDNdKQogICAgIGRlZiB0ZXN0X2Zvbyh4LCB5KToKQEAgLTE0MSwz
NCArMTgxLDQ4IEBAIHBhcmFtZXRyaXphdGlvbi4KIAogRm9yIGV4YW1wbGUsIGxldCdzIHNheSB3
ZSB3YW50IHRvIHJ1biBhIHRlc3QgdGFraW5nIHN0cmluZyBpbnB1dHMgd2hpY2gKIHdlIHdhbnQg
dG8gc2V0IHZpYSBhIG5ldyBgYHB5dGVzdGBgIGNvbW1hbmQgbGluZSBvcHRpb24uICBMZXQncyBm
aXJzdCB3cml0ZQotYSBzaW1wbGUgdGVzdCBhY2NlcHRpbmcgYSBgYHN0cmluZ2lucHV0YGAgZml4
dHVyZSBmdW5jdGlvbiBhcmd1bWVudDo6CithIHNpbXBsZSB0ZXN0IGFjY2VwdGluZyBhIGBgc3Ry
aW5naW5wdXRgYCBmaXh0dXJlIGZ1bmN0aW9uIGFyZ3VtZW50OgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9zdHJpbmdzLnB5CiAKKwogICAgIGRlZiB0
ZXN0X3ZhbGlkX3N0cmluZyhzdHJpbmdpbnB1dCk6CiAgICAgICAgIGFzc2VydCBzdHJpbmdpbnB1
dC5pc2FscGhhKCkKIAogTm93IHdlIGFkZCBhIGBgY29uZnRlc3QucHlgYCBmaWxlIGNvbnRhaW5p
bmcgdGhlIGFkZGl0aW9uIG9mIGEKLWNvbW1hbmQgbGluZSBvcHRpb24gYW5kIHRoZSBwYXJhbWV0
cml6YXRpb24gb2Ygb3VyIHRlc3QgZnVuY3Rpb246OgorY29tbWFuZCBsaW5lIG9wdGlvbiBhbmQg
dGhlIHBhcmFtZXRyaXphdGlvbiBvZiBvdXIgdGVzdCBmdW5jdGlvbjoKKworLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAKKwogICAgIGRlZiBw
eXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0tc3Ry
aW5naW5wdXQiLCBhY3Rpb249ImFwcGVuZCIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICBoZWxw
PSJsaXN0IG9mIHN0cmluZ2lucHV0cyB0byBwYXNzIHRvIHRlc3QgZnVuY3Rpb25zIikKKyAgICAg
ICAgcGFyc2VyLmFkZG9wdGlvbigKKyAgICAgICAgICAgICItLXN0cmluZ2lucHV0IiwKKyAgICAg
ICAgICAgIGFjdGlvbj0iYXBwZW5kIiwKKyAgICAgICAgICAgIGRlZmF1bHQ9W10sCisgICAgICAg
ICAgICBoZWxwPSJsaXN0IG9mIHN0cmluZ2lucHV0cyB0byBwYXNzIHRvIHRlc3QgZnVuY3Rpb25z
IiwKKyAgICAgICAgKQorCiAKICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5j
KToKLSAgICAgICAgaWYgJ3N0cmluZ2lucHV0JyBpbiBtZXRhZnVuYy5maXh0dXJlbmFtZXM6Ci0g
ICAgICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgic3RyaW5naW5wdXQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWZ1bmMuY29uZmlnLmdldG9wdGlvbignc3RyaW5n
aW5wdXQnKSkKKyAgICAgICAgaWYgInN0cmluZ2lucHV0IiBpbiBtZXRhZnVuYy5maXh0dXJlbmFt
ZXM6CisgICAgICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgic3RyaW5naW5wdXQiLCBtZXRh
ZnVuYy5jb25maWcuZ2V0b3B0aW9uKCJzdHJpbmdpbnB1dCIpKQogCi1JZiB3ZSBub3cgcGFzcyB0
d28gc3RyaW5naW5wdXQgdmFsdWVzLCBvdXIgdGVzdCB3aWxsIHJ1biB0d2ljZTo6CitJZiB3ZSBu
b3cgcGFzcyB0d28gc3RyaW5naW5wdXQgdmFsdWVzLCBvdXIgdGVzdCB3aWxsIHJ1biB0d2ljZToK
KworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEgLS1zdHJpbmdpbnB1
dD0iaGVsbG8iIC0tc3RyaW5naW5wdXQ9IndvcmxkIiB0ZXN0X3N0cmluZ3MucHkKICAgICAuLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMTAwJV0KLSAgICAyIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICAyIHBhc3Nl
ZCBpbiAwLjEycworCitMZXQncyBhbHNvIHJ1biB3aXRoIGEgc3RyaW5naW5wdXQgdGhhdCB3aWxs
IGxlYWQgdG8gYSBmYWlsaW5nIHRlc3Q6CiAKLUxldCdzIGFsc28gcnVuIHdpdGggYSBzdHJpbmdp
bnB1dCB0aGF0IHdpbGwgbGVhZCB0byBhIGZhaWxpbmcgdGVzdDo6CisuLiBjb2RlLWJsb2NrOjog
cHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSAtLXN0cmluZ2lucHV0PSIhIiB0ZXN0X3N0cmluZ3Mu
cHkKICAgICBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTE4MywyMCArMjM3LDI0IEBAIExldCdzIGFs
c28gcnVuIHdpdGggYSBzdHJpbmdpbnB1dCB0aGF0IHdpbGwgbGVhZCB0byBhIGZhaWxpbmcgdGVz
dDo6CiAgICAgRSAgICAgICAgKyAgd2hlcmUgRmFsc2UgPSA8YnVpbHQtaW4gbWV0aG9kIGlzYWxw
aGEgb2Ygc3RyIG9iamVjdCBhdCAweGRlYWRiZWVmPigpCiAgICAgRSAgICAgICAgKyAgICB3aGVy
ZSA8YnVpbHQtaW4gbWV0aG9kIGlzYWxwaGEgb2Ygc3RyIG9iamVjdCBhdCAweGRlYWRiZWVmPiA9
ICchJy5pc2FscGhhCiAKLSAgICB0ZXN0X3N0cmluZ3MucHk6MzogQXNzZXJ0aW9uRXJyb3IKLSAg
ICAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMKKyAgICB0ZXN0X3N0cmluZ3MucHk6NDogQXNzZXJ0
aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFy
eSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3Rfc3RyaW5n
cy5weTo6dGVzdF92YWxpZF9zdHJpbmdbIV0gLSBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IEZhbHNl
CisgICAgMSBmYWlsZWQgaW4gMC4xMnMKIAogQXMgZXhwZWN0ZWQgb3VyIHRlc3QgZnVuY3Rpb24g
ZmFpbHMuCiAKIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgc3RyaW5naW5wdXQgaXQgd2lsbCBiZSBz
a2lwcGVkIGJlY2F1c2UKIGBgbWV0YWZ1bmMucGFyYW1ldHJpemUoKWBgIHdpbGwgYmUgY2FsbGVk
IHdpdGggYW4gZW1wdHkgcGFyYW1ldGVyCi1saXN0OjoKK2xpc3Q6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIC1ycyB0ZXN0X3N0cmluZ3MucHkKICAgICBzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMTAwJV0KICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qg
c3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgU0tJUCBbMV0gdGVz
dF9zdHJpbmdzLnB5OiBnb3QgZW1wdHkgcGFyYW1ldGVyIHNldCBbJ3N0cmluZ2lucHV0J10sIGZ1
bmN0aW9uIHRlc3RfdmFsaWRfc3RyaW5nIGF0ICRSRUdFTkRPQ19UTVBESVIvdGVzdF9zdHJpbmdz
LnB5OjEKLSAgICAxIHNraXBwZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgU0tJUFBFRCBbMV0gdGVz
dF9zdHJpbmdzLnB5OiBnb3QgZW1wdHkgcGFyYW1ldGVyIHNldCBbJ3N0cmluZ2lucHV0J10sIGZ1
bmN0aW9uIHRlc3RfdmFsaWRfc3RyaW5nIGF0ICRSRUdFTkRPQ19UTVBESVIvdGVzdF9zdHJpbmdz
LnB5OjIKKyAgICAxIHNraXBwZWQgaW4gMC4xMnMKIAogTm90ZSB0aGF0IHdoZW4gY2FsbGluZyBg
YG1ldGFmdW5jLnBhcmFtZXRyaXplYGAgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFy
YW1ldGVyIHNldHMsIGFsbCBwYXJhbWV0ZXIgbmFtZXMgYWNyb3NzCiB0aG9zZSBzZXRzIGNhbm5v
dCBiZSBkdXBsaWNhdGVkLCBvdGhlcndpc2UgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcGx1Z2lucy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vcGx1Z2lucy5yc3QKaW5kZXggOWRkYmE1ZDM4Y2E2Li44NTViNTk3MzkyYjkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9wbHVnaW5zLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vcGx1Z2lucy5yc3QKQEAgLTgsNyArOCw5IEBAIEluc3RhbGxpbmcgYW5kIFVzaW5nIHBsdWdp
bnMKIFRoaXMgc2VjdGlvbiB0YWxrcyBhYm91dCBpbnN0YWxsaW5nIGFuZCB1c2luZyB0aGlyZCBw
YXJ0eSBwbHVnaW5zLgogRm9yIHdyaXRpbmcgeW91ciBvd24gcGx1Z2lucywgcGxlYXNlIHJlZmVy
IHRvIDpyZWY6YHdyaXRpbmctcGx1Z2luc2AuCiAKLUluc3RhbGxpbmcgYSB0aGlyZCBwYXJ0eSBw
bHVnaW4gY2FuIGJlIGVhc2lseSBkb25lIHdpdGggYGBwaXBgYDo6CitJbnN0YWxsaW5nIGEgdGhp
cmQgcGFydHkgcGx1Z2luIGNhbiBiZSBlYXNpbHkgZG9uZSB3aXRoIGBgcGlwYGA6CisKKy4uIGNv
ZGUtYmxvY2s6OiBiYXNoCiAKICAgICBwaXAgaW5zdGFsbCBweXRlc3QtTkFNRQogICAgIHBpcCB1
bmluc3RhbGwgcHl0ZXN0LU5BTUUKQEAgLTI3LDcgKzI5LDcgQEAgSGVyZSBpcyBhIGxpdHRsZSBh
bm5vdGF0ZWQgbGlzdCBmb3Igc29tZSBwb3B1bGFyIHBsdWdpbnM6CiAgIGZvciBgdHdpc3RlZCA8
aHR0cDovL3R3aXN0ZWRtYXRyaXguY29tPmBfIGFwcHMsIHN0YXJ0aW5nIGEgcmVhY3RvciBhbmQK
ICAgcHJvY2Vzc2luZyBkZWZlcnJlZHMgZnJvbSB0ZXN0IGZ1bmN0aW9ucy4KIAotKiBgcHl0ZXN0
LWNvdiA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1jb3YvPmBfOgorKiBgcHl0ZXN0
LWNvdiA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1jb3YvPmBfXzoKICAgY292ZXJh
Z2UgcmVwb3J0aW5nLCBjb21wYXRpYmxlIHdpdGggZGlzdHJpYnV0ZWQgdGVzdGluZwogCiAqIGBw
eXRlc3QteGRpc3QgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QteGRpc3QvPmBfOgpA
QCAtMzksOCArNDEsNyBAQCBIZXJlIGlzIGEgbGl0dGxlIGFubm90YXRlZCBsaXN0IGZvciBzb21l
IHBvcHVsYXIgcGx1Z2luczoKICogYHB5dGVzdC1pbnN0YWZhaWwgPGh0dHBzOi8vcHlwaS5vcmcv
cHJvamVjdC9weXRlc3QtaW5zdGFmYWlsLz5gXzoKICAgdG8gcmVwb3J0IGZhaWx1cmVzIHdoaWxl
IHRoZSB0ZXN0IHJ1biBpcyBoYXBwZW5pbmcuCiAKLSogYHB5dGVzdC1iZGQgPGh0dHBzOi8vcHlw
aS5vcmcvcHJvamVjdC9weXRlc3QtYmRkLz5gXyBhbmQKLSAgYHB5dGVzdC1rb25pcmEgPGh0dHBz
Oi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3Qta29uaXJhLz5gXworKiBgcHl0ZXN0LWJkZCA8aHR0
cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1iZGQvPmBfOgogICB0byB3cml0ZSB0ZXN0cyB1
c2luZyBiZWhhdmlvdXItZHJpdmVuIHRlc3RpbmcuCiAKICogYHB5dGVzdC10aW1lb3V0IDxodHRw
czovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LXRpbWVvdXQvPmBfOgpAQCAtNTksOSArNjAsOSBA
QCBUbyBzZWUgYSBjb21wbGV0ZSBsaXN0IG9mIGFsbCBwbHVnaW5zIHdpdGggdGhlaXIgbGF0ZXN0
IHRlc3RpbmcKIHN0YXR1cyBhZ2FpbnN0IGRpZmZlcmVudCBweXRlc3QgYW5kIFB5dGhvbiB2ZXJz
aW9ucywgcGxlYXNlIHZpc2l0CiBgcGx1Z2luY29tcGF0IDxodHRwOi8vcGx1Z2luY29tcGF0Lmhl
cm9rdWFwcC5jb20vPmBfLgogCi1Zb3UgbWF5IGFsc28gZGlzY292ZXIgbW9yZSBwbHVnaW5zIHRo
cm91Z2ggYSBgcHl0ZXN0LSBweXBpLnB5dGhvbi5vcmcgc2VhcmNoYF8uCitZb3UgbWF5IGFsc28g
ZGlzY292ZXIgbW9yZSBwbHVnaW5zIHRocm91Z2ggYSBgcHl0ZXN0LSBweXBpLm9yZyBzZWFyY2hg
Xy4KIAotLi4gX2BweXRlc3QtIHB5cGkucHl0aG9uLm9yZyBzZWFyY2hgOiBodHRwczovL3B5cGku
b3JnL3NlYXJjaC8/cT1weXRlc3QtCisuLiBfYHB5dGVzdC0gcHlwaS5vcmcgc2VhcmNoYDogaHR0
cHM6Ly9weXBpLm9yZy9zZWFyY2gvP3E9cHl0ZXN0LQogCiAKIC4uIF9gYXZhaWxhYmxlIGluc3Rh
bGxhYmxlIHBsdWdpbnNgOgpAQCAtNjksMzAgKzcwLDM2IEBAIFlvdSBtYXkgYWxzbyBkaXNjb3Zl
ciBtb3JlIHBsdWdpbnMgdGhyb3VnaCBhIGBweXRlc3QtIHB5cGkucHl0aG9uLm9yZyBzZWFyY2hg
Xy4KIFJlcXVpcmluZy9Mb2FkaW5nIHBsdWdpbnMgaW4gYSB0ZXN0IG1vZHVsZSBvciBjb25mdGVz
dCBmaWxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1Zb3UgY2FuIHJlcXVpcmUgcGx1Z2lucyBpbiBhIHRlc3QgbW9kdWxlIG9y
IGEgY29uZnRlc3QgZmlsZSBsaWtlIHRoaXM6OgorWW91IGNhbiByZXF1aXJlIHBsdWdpbnMgaW4g
YSB0ZXN0IG1vZHVsZSBvciBhIGNvbmZ0ZXN0IGZpbGUgdXNpbmcgOmdsb2JhbHZhcjpgcHl0ZXN0
X3BsdWdpbnNgOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAgICBweXRlc3RfcGx1Z2lu
cyA9ICJteWFwcC50ZXN0c3VwcG9ydC5teXBsdWdpbiIsCisgICAgcHl0ZXN0X3BsdWdpbnMgPSAo
Im15YXBwLnRlc3RzdXBwb3J0Lm15cGx1Z2luIiwpCiAKIFdoZW4gdGhlIHRlc3QgbW9kdWxlIG9y
IGNvbmZ0ZXN0IHBsdWdpbiBpcyBsb2FkZWQgdGhlIHNwZWNpZmllZCBwbHVnaW5zCiB3aWxsIGJl
IGxvYWRlZCBhcyB3ZWxsLgogCi0gICAgcHl0ZXN0X3BsdWdpbnMgPSAibXlhcHAudGVzdHN1cHBv
cnQubXlwbHVnaW4iCi0KLXdoaWNoIHdpbGwgaW1wb3J0IHRoZSBzcGVjaWZpZWQgbW9kdWxlIGFz
IGEgYGBweXRlc3RgYCBwbHVnaW4uCi0KIC4uIG5vdGU6OgorCiAgICAgUmVxdWlyaW5nIHBsdWdp
bnMgdXNpbmcgYSBgYHB5dGVzdF9wbHVnaW5zYGAgdmFyaWFibGUgaW4gbm9uLXJvb3QKICAgICBg
YGNvbmZ0ZXN0LnB5YGAgZmlsZXMgaXMgZGVwcmVjYXRlZC4gU2VlCiAgICAgOnJlZjpgZnVsbCBl
eHBsYW5hdGlvbiA8cmVxdWlyaW5nIHBsdWdpbnMgaW4gbm9uLXJvb3QgY29uZnRlc3RzPmAKICAg
ICBpbiB0aGUgV3JpdGluZyBwbHVnaW5zIHNlY3Rpb24uCiAKKy4uIG5vdGU6OgorICAgVGhlIG5h
bWUgYGBweXRlc3RfcGx1Z2luc2BgIGlzIHJlc2VydmVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQg
YXMgYQorICAgbmFtZSBmb3IgYSBjdXN0b20gcGx1Z2luIG1vZHVsZS4KKworCiAuLiBfYGZpbmRw
bHVnaW5uYW1lYDoKIAogRmluZGluZyBvdXQgd2hpY2ggcGx1Z2lucyBhcmUgYWN0aXZlCiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IHdhbnQgdG8gZmluZCBv
dXQgd2hpY2ggcGx1Z2lucyBhcmUgYWN0aXZlIGluIHlvdXIKLWVudmlyb25tZW50IHlvdSBjYW4g
dHlwZTo6CitlbnZpcm9ubWVudCB5b3UgY2FuIHR5cGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNo
CiAKICAgICBweXRlc3QgLS10cmFjZS1jb25maWcKIApAQCAtMTA1LDcgKzExMiw5IEBAIGFuZCB0
aGVpciBuYW1lcy4gSXQgd2lsbCBhbHNvIHByaW50IGxvY2FsIHBsdWdpbnMgYWthCiBEZWFjdGl2
YXRpbmcgLyB1bnJlZ2lzdGVyaW5nIGEgcGx1Z2luIGJ5IG5hbWUKIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Zb3UgY2FuIHByZXZlbnQgcGx1Z2lucyBm
cm9tIGxvYWRpbmcgb3IgdW5yZWdpc3RlciB0aGVtOjoKK1lvdSBjYW4gcHJldmVudCBwbHVnaW5z
IGZyb20gbG9hZGluZyBvciB1bnJlZ2lzdGVyIHRoZW06CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNo
CiAKICAgICBweXRlc3QgLXAgbm86TkFNRQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vcHJvamVjdHMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb2plY3RzLnJzdAppbmRleCA2
MDZlOWQ0N2MxNjEuLjA3MjBiYzlkZDdlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Byb2plY3RzLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvamVjdHMucnN0CkBAIC0y
OCw3ICsyOCw2IEBAIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgcHJvamVjdHMgdXNpbmcgYGBw
eXRlc3RgYCAocGxlYXNlIHNlbmQgbm90ZXMgdmlhIDpyZWY6CiAqIGBzZW50cnkgPGh0dHBzOi8v
Z2V0c2VudHJ5LmNvbS93ZWxjb21lLz5gXywgcmVhbHRpbWUgYXBwLW1haW50ZW5hbmNlIGFuZCBl
eGNlcHRpb24gdHJhY2tpbmcKICogYEFzdHJvcHkgPGh0dHA6Ly93d3cuYXN0cm9weS5vcmcvPmBf
IGFuZCBgYWZmaWxpYXRlZCBwYWNrYWdlcyA8aHR0cDovL3d3dy5hc3Ryb3B5Lm9yZy9hZmZpbGlh
dGVkL2luZGV4Lmh0bWw+YF8KICogYHRveCA8aHR0cDovL3Rlc3RydW4ub3JnL3RveD5gXywgdmly
dHVhbGVudi9IdWRzb24gaW50ZWdyYXRpb24gdG9vbAotKiBgUElEQSA8aHR0cDovL3BpZGEuY28u
dWs+YF8gZnJhbWV3b3JrIGZvciBpbnRlZ3JhdGVkIGRldmVsb3BtZW50CiAqIGBQeVBNIDxodHRw
Oi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcHlwbS8+YF8gQWN0aXZlU3RhdGUncyBwYWNrYWdlIG1h
bmFnZXIKICogYEZvbSA8aHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvRm9tLz5gXyBhIGZsdWlk
IG9iamVjdCBtYXBwZXIgZm9yIEZsdWlkREIKICogYGFwcGxpYiA8aHR0cHM6Ly9naXRodWIuY29t
L0FjdGl2ZVN0YXRlL2FwcGxpYj5gXyBjcm9zcy1wbGF0Zm9ybSB1dGlsaXRpZXMKQEAgLTM3LDEw
ICszNiwxMCBAQCBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHByb2plY3RzIHVzaW5nIGBgcHl0
ZXN0YGAgKHBsZWFzZSBzZW5kIG5vdGVzIHZpYSA6cmVmOgogKiBgbXdsaWIgPGh0dHBzOi8vcHlw
aS5vcmcvcHJvamVjdC9td2xpYi8+YF8gbWVkaWF3aWtpIHBhcnNlciBhbmQgdXRpbGl0eSBsaWJy
YXJ5CiAqIGBUaGUgVHJhbnNsYXRlIFRvb2xraXQgPGh0dHA6Ly90cmFuc2xhdGUuc291cmNlZm9y
Z2UubmV0L3dpa2kvdG9vbGtpdC9pbmRleD5gXyBmb3IgbG9jYWxpemF0aW9uIGFuZCBjb252ZXJz
aW9uCiAqIGBleGVjbmV0IDxodHRwOi8vY29kZXNwZWFrLm5ldC9leGVjbmV0PmBfIHJhcGlkIG11
bHRpLVB5dGhvbiBkZXBsb3ltZW50Ci0qIGBweWxpYiA8aHR0cHM6Ly9weS5yZWFkdGhlZG9jcy5p
bz5gXyBjcm9zcy1wbGF0Zm9ybSBwYXRoLCBJTywgZHluYW1pYyBjb2RlIGxpYnJhcnkKLSogYFBh
Y2hhIDxodHRwOi8vcGFjaGEuY2FmZXBhaXMuY29tLz5gXyBjb25maWd1cmF0aW9uIG1hbmFnZW1l
bnQgaW4gZml2ZSBtaW51dGVzCisqIGBweWxpYiA8aHR0cHM6Ly9weWxpYi5yZWFkdGhlZG9jcy5p
by9lbi9zdGFibGUvPmBfIGNyb3NzLXBsYXRmb3JtIHBhdGgsIElPLCBkeW5hbWljIGNvZGUgbGli
cmFyeQogKiBgYmJmcmVlemUgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9iYmZyZWV6ZS8+YF8g
Y3JlYXRlIHN0YW5kYWxvbmUgZXhlY3V0YWJsZXMgZnJvbSBQeXRob24gc2NyaXB0cwotKiBgcGRi
KysgPGh0dHA6Ly9iaXRidWNrZXQub3JnL2FudG9jdW5pL3BkYj5gXyBhIGZhbmNpZXIgdmVyc2lv
biBvZiBQREIKKyogYHBkYisrIDxodHRwczovL2dpdGh1Yi5jb20vcGRicHAvcGRicHA+YF8gYSBm
YW5jaWVyIHZlcnNpb24gb2YgUERCCisqIGBwdWRiIDxodHRwczovL2dpdGh1Yi5jb20vaW5kdWNl
ci9wdWRiPmBfIGZ1bGwtc2NyZWVuIGNvbnNvbGUgZGVidWdnZXIgZm9yIHB5dGhvbgogKiBgcHkt
czNmdXNlIDxodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHktczNmdXNlLz5gXyBBbWF6b24gUzMg
RlVTRSBiYXNlZCBmaWxlc3lzdGVtCiAqIGB3YXNrciA8aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L3dhc2tyLz5gXyBXU0dJIFN0YXRzIE1pZGRsZXdhcmUKICogYGd1YWNoaSA8aHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2d1YWNoaS8+YF8gZ2xvYmFsIHBlcnNpc3RlbnQgY29uZmlncyBmb3IgUHl0
aG9uIG1vZHVsZXMKQEAgLTczLDExICs3MiwxMCBAQCBTb21lIG9yZ2FuaXNhdGlvbnMgdXNpbmcg
cHl0ZXN0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAqIGBTcXVhcmUg
S2lsb21ldHJlIEFycmF5LCBDYXBlIFRvd24gPGh0dHA6Ly9za2EuYWMuemEvPmBfCi0qIGBTb21l
IE1vemlsbGEgUUEgcGVvcGxlIDxodHRwOi8vd3d3LnRoZWF1dG9tYXRlZHRlc3Rlci5jby51ay9i
bG9nLzIwMTEvcHl0ZXN0X2FuZF94ZGlzdF9wbHVnaW4uaHRtbD5gXyB1c2UgcHl0ZXN0IHRvIGRp
c3RyaWJ1dGUgdGhlaXIgU2VsZW5pdW0gdGVzdHMKLSogYFRhbmRiZXJnIDxodHRwOi8vd3d3LnRh
bmRiZXJnLmNvbS8+YF8KKyogYFNvbWUgTW96aWxsYSBRQSBwZW9wbGUgPGh0dHBzOi8vd3d3LnRo
ZWF1dG9tYXRlZHRlc3Rlci5jby51ay9ibG9nLzIwMTEvcHl0ZXN0X2FuZF94ZGlzdF9wbHVnaW4v
PmBfIHVzZSBweXRlc3QgdG8gZGlzdHJpYnV0ZSB0aGVpciBTZWxlbml1bSB0ZXN0cwogKiBgU2hv
b3RxIDxodHRwOi8vd2ViLnNob290cS5jb20vPmBfCiAqIGBTdHVwcyBkZXBhcnRtZW50IG9mIEhl
aW5yaWNoIEhlaW5lIFVuaXZlcnNpdHkgRHVlc3NlbGRvcmYgPGh0dHA6Ly93d3cuc3R1cHMudW5p
LWR1ZXNzZWxkb3JmLmRlL3Byb2plY3RzLnBocD5gXwotKiBgY2VsbHpvbWUgPGh0dHA6Ly93d3cu
Y2VsbHpvbWUuY29tLz5gXworKiBjZWxsem9tZQogKiBgT3BlbiBFbmQsIEdvdGhlbmJvcmcgPGh0
dHA6Ly93d3cub3BlbmVuZC5zZT5gXwogKiBgTGFib3JhdG9yeSBvZiBCaW9pbmZvcm1hdGljcywg
V2Fyc2F3IDxodHRwOi8vZ2VuZXNpbGljby5wbC8+YF8KICogYG1lcmxpbnV4LCBHZXJtYW55IDxo
dHRwOi8vbWVybGludXguZXU+YF8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9wcm9w
b3NhbHMvcGFyYW1ldHJpemVfd2l0aF9maXh0dXJlcy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
cHJvcG9zYWxzL3BhcmFtZXRyaXplX3dpdGhfZml4dHVyZXMucnN0CmluZGV4IDkyZTc5OTNmMzkw
Ni4uYjcyOTVmMjdhYjIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxz
L3BhcmFtZXRyaXplX3dpdGhfZml4dHVyZXMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9w
cm9wb3NhbHMvcGFyYW1ldHJpemVfd2l0aF9maXh0dXJlcy5yc3QKQEAgLTc1LDcgKzc1LDcgQEAg
SXNzdWVzCiAtLS0tLS0KIAogKiBCeSB1c2luZyBgYHJlcXVlc3QuZ2V0ZnVuY2FyZ3ZhbHVlKClg
YCB3ZSByZWx5IG9uIGFjdHVhbCBmaXh0dXJlIGZ1bmN0aW9uCi0gIGV4ZWN1dGlvbiB0byBrbm93
IHdoYXQgZml4dHVyZXMgYXJlIGludm9sdmVkLCBkdWUgdG8gaXQncyBkeW5hbWljIG5hdHVyZQor
ICBleGVjdXRpb24gdG8ga25vdyB3aGF0IGZpeHR1cmVzIGFyZSBpbnZvbHZlZCwgZHVlIHRvIGl0
cyBkeW5hbWljIG5hdHVyZQogKiBNb3JlIGltcG9ydGFudGx5LCBgYHJlcXVlc3QuZ2V0ZnVuY2Fy
Z3ZhbHVlKClgYCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aAogICBwYXJhbWV0cml6ZWQgZml4dHVy
ZXMsIHN1Y2ggYXMgYGBleHRyYV9jb250ZXh0YGAKICogVGhpcyBpcyB2ZXJ5IGluY29udmVuaWVu
dCBpZiB5b3Ugd2lzaCB0byBleHRlbmQgYW4gZXhpc3RpbmcgdGVzdCBzdWl0ZSBieQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb3Bvc2Fscy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9wcm9wb3NhbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQzNzM1ZWZmZTk5NC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9wcm9wb3NhbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxzL3BhcmFtZXRyaXpl
X3dpdGhfZml4dHVyZXMucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHkyNy1w
eTM0LWRlcHJlY2F0aW9uLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9weTI3LXB5MzQtZGVwcmVj
YXRpb24ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjIzZjIw
NjJiNzkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3B5MjctcHkzNC1k
ZXByZWNhdGlvbi5yc3QKQEAgLTAsMCArMSw5NyBAQAorUHl0aG9uIDIuNyBhbmQgMy40IHN1cHBv
cnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0l0IGlzIGRlbWFuZGluZyBvbiB0aGUg
bWFpbnRhaW5lcnMgb2YgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCB0byBzdXBwb3J0IG1hbnkgUHl0
aG9uIHZlcnNpb25zLCBhcwordGhlcmUncyBleHRyYSBjb3N0IG9mIGtlZXBpbmcgY29kZSBjb21w
YXRpYmxlIGJldHdlZW4gYWxsIHZlcnNpb25zLCB3aGlsZSBob2xkaW5nIGJhY2sgb24KK2ZlYXR1
cmVzIG9ubHkgbWFkZSBwb3NzaWJsZSBvbiBuZXdlciBQeXRob24gdmVyc2lvbnMuCisKK0luIGNh
c2Ugb2YgUHl0aG9uIDIgYW5kIDMsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxhbmd1YWdl
cyBtYWtlcyBpdCBldmVuIG1vcmUgcHJvbWluZW50LAorYmVjYXVzZSBtYW55IG5ldyBQeXRob24g
MyBmZWF0dXJlcyBjYW5ub3QgYmUgdXNlZCBpbiBhIFB5dGhvbiAyLzMgY29tcGF0aWJsZSBjb2Rl
IGJhc2UuCisKK1B5dGhvbiAyLjcgRU9MIGhhcyBiZWVuIHJlYWNoZWQgYGluIDIwMjAgPGh0dHBz
Oi8vbGVnYWN5LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzNzMvI2lkND5gX18sIHdpdGgKK3Ro
ZSBsYXN0IHJlbGVhc2UgbWFkZSBpbiBBcHJpbCwgMjAyMC4KKworUHl0aG9uIDMuNCBFT0wgaGFz
IGJlZW4gcmVhY2hlZCBgaW4gMjAxOSA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9w
ZXAtMDQyOS8jcmVsZWFzZS1zY2hlZHVsZT5gX18sIHdpdGggdGhlIGxhc3QgcmVsZWFzZSBtYWRl
IGluIE1hcmNoLCAyMDE5LgorCitGb3IgdGhvc2UgcmVhc29ucywgaW4gSnVuIDIwMTkgaXQgd2Fz
IGRlY2lkZWQgdGhhdCAqKnB5dGVzdCA0LjYqKiBzZXJpZXMgd2lsbCBiZSB0aGUgbGFzdCB0byBz
dXBwb3J0IFB5dGhvbiAyLjcgYW5kIDMuNC4KKworV2hhdCB0aGlzIG1lYW5zIGZvciBnZW5lcmFs
IHVzZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhhbmtzIHRvIHRo
ZSBgcHl0aG9uX3JlcXVpcmVzYF8gc2V0dXB0b29scyBvcHRpb24sCitQeXRob24gMi43IGFuZCBQ
eXRob24gMy40IHVzZXJzIHVzaW5nIGEgbW9kZXJuIHBpcCB2ZXJzaW9uCit3aWxsIGluc3RhbGwg
dGhlIGxhc3QgcHl0ZXN0IDQuNi5YIHZlcnNpb24gYXV0b21hdGljYWxseSBldmVuIGlmIDUuMCBv
ciBsYXRlciB2ZXJzaW9ucworYXJlIGF2YWlsYWJsZSBvbiBQeVBJLgorCitVc2VycyBzaG91bGQg
ZW5zdXJlIHRoZXkgYXJlIHVzaW5nIHRoZSBsYXRlc3QgcGlwIGFuZCBzZXR1cHRvb2xzIHZlcnNp
b25zIGZvciB0aGlzIHRvIHdvcmsuCisKK01haW50ZW5hbmNlIG9mIDQuNi5YIHZlcnNpb25zCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVbnRpbCBKYW51YXJ5IDIwMjAsIHRoZSBw
eXRlc3QgY29yZSB0ZWFtIHBvcnRlZCBtYW55IGJ1Zy1maXhlcyBmcm9tIHRoZSBtYWluIHJlbGVh
c2UgaW50byB0aGUKK2BgNC42LnhgYCBicmFuY2gsIHdpdGggc2V2ZXJhbCA0LjYuWCByZWxlYXNl
cyBiZWluZyBtYWRlIGFsb25nIHRoZSB5ZWFyLgorCitGcm9tIG5vdyBvbiwgdGhlIGNvcmUgdGVh
bSB3aWxsICoqbm8gbG9uZ2VyIGFjdGl2ZWx5IGJhY2twb3J0IHBhdGNoZXMqKiwgYnV0IHRoZSBg
YDQuNi54YGAKK2JyYW5jaCB3aWxsIGNvbnRpbnVlIHRvIGV4aXN0IHNvIHRoZSBjb21tdW5pdHkg
aXRzZWxmIGNhbiBjb250cmlidXRlIHBhdGNoZXMuCisKK1RoZSBjb3JlIHRlYW0gd2lsbCBiZSBo
YXBweSB0byBhY2NlcHQgdGhvc2UgcGF0Y2hlcywgYW5kIG1ha2UgbmV3IDQuNi5YIHJlbGVhc2Vz
ICoqdW50aWwgbWlkLTIwMjAqKgorKGJ1dCBjb25zaWRlciB0aGF0IGRhdGUgYXMgYSBiYWxscGFy
aywgYWZ0ZXIgdGhhdCBkYXRlIHRoZSB0ZWFtIG1pZ2h0IHN0aWxsIGRlY2lkZSB0byBtYWtlIG5l
dyByZWxlYXNlcworZm9yIGNyaXRpY2FsIGJ1Z3MpLgorCisuLiBfYHB5dGhvbl9yZXF1aXJlc2A6
IGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZ3VpZGVzL2Rpc3RyaWJ1dGluZy1wYWNrYWdl
cy11c2luZy1zZXR1cHRvb2xzLyNweXRob24tcmVxdWlyZXMKKworVGVjaG5pY2FsIGFzcGVjdHMK
K35+fn5+fn5+fn5+fn5+fn5+CisKKyhUaGlzIHNlY3Rpb24gaXMgYSB0cmFuc2NyaXB0IGZyb20g
YCM1Mjc1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUyNzU+
YF9fKS4KKworSW4gdGhpcyBzZWN0aW9uIHdlIGRlc2NyaWJlIHRoZSB0ZWNobmljYWwgYXNwZWN0
cyBvZiB0aGUgUHl0aG9uIDIuNyBhbmQgMy40IHN1cHBvcnQgcGxhbi4KKworV2hhdCBnb2VzIGlu
dG8gNC42LlggcmVsZWFzZXMKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK05ldyA0
LjYuWCByZWxlYXNlcyB3aWxsIGNvbnRhaW4gYnVnIGZpeGVzIG9ubHkuCisKK1doZW4gd2lsbCA0
LjYuWCByZWxlYXNlcyBoYXBwZW4KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKwor
TmV3IDQuNi5YIHJlbGVhc2VzIHdpbGwgaGFwcGVuIGFmdGVyIHdlIGhhdmUgYSBmZXcgYnVncyBp
biBwbGFjZSB0byByZWxlYXNlLCBvciBpZiBhIGZldyB3ZWVrcyBoYXZlCitwYXNzZWQgKHNheSBh
IHNpbmdsZSBidWcgaGFzIGJlZW4gZml4ZWQgYSBtb250aCBhZnRlciB0aGUgbGF0ZXN0IDQuNi5Y
IHJlbGVhc2UpLgorCitObyBoYXJkIHJ1bGVzIGhlcmUsIGp1c3QgYmFsbHBhcmsuCisKK1dobyB3
aWxsIGhhbmRsZSBhcHBseWluZyBidWcgZml4ZXMKKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKKworV2UgY29yZSBtYWludGFpbmVycyBleHBlY3QgdGhhdCBwZW9wbGUgc3RpbGwg
dXNpbmcgUHl0aG9uIDIuNy8zLjQgYW5kIGJlaW5nIGFmZmVjdGVkIGJ5CitidWdzIHRvIHN0ZXAg
dXAgYW5kIHByb3ZpZGUgcGF0Y2hlcyBhbmQvb3IgcG9ydCBidWcgZml4ZXMgZnJvbSB0aGUgYWN0
aXZlIGJyYW5jaGVzLgorCitXZSB3aWxsIGJlIGhhcHB5IHRvIGd1aWRlIHVzZXJzIGludGVyZXN0
ZWQgaW4gZG9pbmcgc28sIHNvIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBhc2suCisKKyoqQmFj
a3BvcnRpbmcgY2hhbmdlcyBpbnRvIDQuNioqCisKK1BsZWFzZSBmb2xsb3cgdGhlc2UgaW5zdHJ1
Y3Rpb25zOgorCisjLiBgYGdpdCBmZXRjaCAtLWFsbCAtLXBydW5lYGAKKworIy4gYGBnaXQgY2hl
Y2tvdXQgb3JpZ2luLzQuNi54IC1iIGJhY2twb3J0LVhYWFhgYCAjIHVzZSB0aGUgUFIgbnVtYmVy
IGhlcmUKKworIy4gTG9jYXRlIHRoZSBtZXJnZSBjb21taXQgb24gdGhlIFBSLCBpbiB0aGUgKm1l
cmdlZCogbWVzc2FnZSwgZm9yIGV4YW1wbGU6CisKKyAgICBuaWNvZGRlbXVzIG1lcmdlZCBjb21t
aXQgMGY4YjQ2MiBpbnRvIHB5dGVzdC1kZXY6ZmVhdHVyZXMKKworIy4gYGBnaXQgY2hlcnJ5LXBp
Y2sgLW0xIFJFVklTSU9OYGAgIyB1c2UgdGhlIHJldmlzaW9uIHlvdSBmb3VuZCBhYm92ZSAoYGAw
ZjhiNDYyYGApLgorCisjLiBPcGVuIGEgUFIgdGFyZ2V0aW5nIGBgNC42LnhgYDoKKworICAgKiBQ
cmVmaXggdGhlIG1lc3NhZ2Ugd2l0aCBgYFs0LjZdYGAgc28gaXQgaXMgYW4gb2J2aW91cyBiYWNr
cG9ydAorICAgKiBEZWxldGUgdGhlIFBSIGJvZHksIGl0IHVzdWFsbHkgY29udGFpbnMgYSBkdXBs
aWNhdGUgY29tbWl0IG1lc3NhZ2UuCisKKyoqUHJvdmlkaW5nIG5ldyBQUnMgdG8gNC42KioKKwor
RnJlc2ggcHVsbCByZXF1ZXN0cyB0byBgYDQuNi54YGAgd2lsbCBiZSBhY2NlcHRlZCBwcm92aWRl
ZCB0aGF0Cit0aGUgZXF1aXZhbGVudCBjb2RlIGluIHRoZSBhY3RpdmUgYnJhbmNoZXMgZG9lcyBu
b3QgY29udGFpbiB0aGF0IGJ1ZyAoZm9yIGV4YW1wbGUsIGEgYnVnIGlzIHNwZWNpZmljCit0byBQ
eXRob24gMiBvbmx5KS4KKworQnVnIGZpeGVzIHRoYXQgYWxzbyBoYXBwZW4gaW4gdGhlIG1haW5z
dHJlYW0gdmVyc2lvbiBzaG91bGQgYmUgZmlyc3QgZml4ZWQKK3RoZXJlLCBhbmQgdGhlbiBiYWNr
cG9ydGVkIGFzIHBlciBpbnN0cnVjdGlvbnMgYWJvdmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vcHl0aG9ucGF0aC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHl0aG9ucGF0aC5y
c3QKaW5kZXggYjY0NzQyNzY4ODdkLi5iOGY0ZGU5ZDk1YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9weXRob25wYXRoLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHl0aG9u
cGF0aC5yc3QKQEAgLTMsMTEgKzMsNjUgQEAKIHB5dGVzdCBpbXBvcnQgbWVjaGFuaXNtcyBhbmQg
YGBzeXMucGF0aGBgL2BgUFlUSE9OUEFUSGBgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1IZXJlJ3MgYSBsaXN0IG9mIHNjZW5hcmlv
cyB3aGVyZSBweXRlc3QgbWF5IG5lZWQgdG8gY2hhbmdlIGBgc3lzLnBhdGhgYCBpbiBvcmRlcgot
dG8gaW1wb3J0IHRlc3QgbW9kdWxlcyBvciBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMuCisuLiBfYGlt
cG9ydC1tb2Rlc2A6CisKK0ltcG9ydCBtb2RlcworLS0tLS0tLS0tLS0tCisKK3B5dGVzdCBhcyBh
IHRlc3RpbmcgZnJhbWV3b3JrIG5lZWRzIHRvIGltcG9ydCB0ZXN0IG1vZHVsZXMgYW5kIGBgY29u
ZnRlc3QucHlgYCBmaWxlcyBmb3IgZXhlY3V0aW9uLgorCitJbXBvcnRpbmcgZmlsZXMgaW4gUHl0
aG9uIChhdCBsZWFzdCB1bnRpbCByZWNlbnRseSkgaXMgYSBub24tdHJpdmlhbCBwcm9jZXNzZXMs
IG9mdGVuIHJlcXVpcmluZworY2hhbmdpbmcgYHN5cy5wYXRoIDxodHRwczovL2RvY3MucHl0aG9u
Lm9yZy8zL2xpYnJhcnkvc3lzLmh0bWwjc3lzLnBhdGg+YF9fLiBTb21lIGFzcGVjdHMgb2YgdGhl
CitpbXBvcnQgcHJvY2VzcyBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIHRoZSBgYC0taW1wb3J0
LW1vZGVgYCBjb21tYW5kLWxpbmUgZmxhZywgd2hpY2ggY2FuIGFzc3VtZQordGhlc2UgdmFsdWVz
OgorCisqIGBgcHJlcGVuZGBgIChkZWZhdWx0KTogdGhlIGRpcmVjdG9yeSBwYXRoIGNvbnRhaW5p
bmcgZWFjaCBtb2R1bGUgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSAqYmVnaW5uaW5nKgorICBv
ZiBgYHN5cy5wYXRoYGAgaWYgbm90IGFscmVhZHkgdGhlcmUsIGFuZCB0aGVuIGltcG9ydGVkIHdp
dGggdGhlIGBfX2ltcG9ydF9fIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvZnVu
Y3Rpb25zLmh0bWwjX19pbXBvcnRfXz5gX18gYnVpbHRpbi4KKworICBUaGlzIHJlcXVpcmVzIHRl
c3QgbW9kdWxlIG5hbWVzIHRvIGJlIHVuaXF1ZSB3aGVuIHRoZSB0ZXN0IGRpcmVjdG9yeSB0cmVl
IGlzIG5vdCBhcnJhbmdlZCBpbgorICBwYWNrYWdlcywgYmVjYXVzZSB0aGUgbW9kdWxlcyB3aWxs
IHB1dCBpbiBgYHN5cy5tb2R1bGVzYGAgYWZ0ZXIgaW1wb3J0aW5nLgorCisgIFRoaXMgaXMgdGhl
IGNsYXNzaWMgbWVjaGFuaXNtLCBkYXRpbmcgYmFjayBmcm9tIHRoZSB0aW1lIFB5dGhvbiAyIHdh
cyBzdGlsbCBzdXBwb3J0ZWQuCisKKyogYGBhcHBlbmRgYDogdGhlIGRpcmVjdG9yeSBjb250YWlu
aW5nIGVhY2ggbW9kdWxlIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgYGBzeXMucGF0aGBgIGlm
IG5vdCBhbHJlYWR5CisgIHRoZXJlLCBhbmQgaW1wb3J0ZWQgd2l0aCBgYF9faW1wb3J0X19gYC4K
KworICBUaGlzIGJldHRlciBhbGxvd3MgdG8gcnVuIHRlc3QgbW9kdWxlcyBhZ2FpbnN0IGluc3Rh
bGxlZCB2ZXJzaW9ucyBvZiBhIHBhY2thZ2UgZXZlbiBpZiB0aGUKKyAgcGFja2FnZSB1bmRlciB0
ZXN0IGhhcyB0aGUgc2FtZSBpbXBvcnQgcm9vdC4gRm9yIGV4YW1wbGU6CisKKyAgOjoKKworICAg
ICAgICB0ZXN0aW5nL19faW5pdF9fLnB5CisgICAgICAgIHRlc3RpbmcvdGVzdF9wa2dfdW5kZXJf
dGVzdC5weQorICAgICAgICBwa2dfdW5kZXJfdGVzdC8KKworICB0aGUgdGVzdHMgd2lsbCBydW4g
YWdhaW5zdCB0aGUgaW5zdGFsbGVkIHZlcnNpb24KKyAgb2YgYGBwa2dfdW5kZXJfdGVzdGBgIHdo
ZW4gYGAtLWltcG9ydC1tb2RlPWFwcGVuZGBgIGlzIHVzZWQgd2hlcmVhcworICB3aXRoIGBgcHJl
cGVuZGBgIHRoZXkgd291bGQgcGljayB1cCB0aGUgbG9jYWwgdmVyc2lvbi4gVGhpcyBraW5kIG9m
IGNvbmZ1c2lvbiBpcyB3aHkKKyAgd2UgYWR2b2NhdGUgZm9yIHVzaW5nIDpyZWY6YHNyYyA8c3Jj
LWxheW91dD5gIGxheW91dHMuCisKKyAgU2FtZSBhcyBgYHByZXBlbmRgYCwgcmVxdWlyZXMgdGVz
dCBtb2R1bGUgbmFtZXMgdG8gYmUgdW5pcXVlIHdoZW4gdGhlIHRlc3QgZGlyZWN0b3J5IHRyZWUg
aXMKKyAgbm90IGFycmFuZ2VkIGluIHBhY2thZ2VzLCBiZWNhdXNlIHRoZSBtb2R1bGVzIHdpbGwg
cHV0IGluIGBgc3lzLm1vZHVsZXNgYCBhZnRlciBpbXBvcnRpbmcuCisKKyogYGBpbXBvcnRsaWJg
YDogbmV3IGluIHB5dGVzdC02LjAsIHRoaXMgbW9kZSB1c2VzIGBpbXBvcnRsaWIgPGh0dHBzOi8v
ZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9pbXBvcnRsaWIuaHRtbD5gX18gdG8gaW1wb3J0IHRl
c3QgbW9kdWxlcy4gVGhpcyBnaXZlcyBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgaW1wb3J0IHByb2Nl
c3MsIGFuZCBkb2Vzbid0IHJlcXVpcmUKKyAgY2hhbmdpbmcgYGBzeXMucGF0aGBgIG9yIGBgc3lz
Lm1vZHVsZXNgYCBhdCBhbGwuCisKKyAgRm9yIHRoaXMgcmVhc29uIHRoaXMgZG9lc24ndCByZXF1
aXJlIHRlc3QgbW9kdWxlIG5hbWVzIHRvIGJlIHVuaXF1ZSBhdCBhbGwsIGJ1dCBhbHNvIG1ha2Vz
IHRlc3QKKyAgbW9kdWxlcyBub24taW1wb3J0YWJsZSBieSBlYWNoIG90aGVyLiBUaGlzIHdhcyBt
YWRlIHBvc3NpYmxlIGluIHByZXZpb3VzIG1vZGVzLCBmb3IgdGVzdHMgbm90IHJlc2lkaW5nCisg
IGluIFB5dGhvbiBwYWNrYWdlcywgYmVjYXVzZSBvZiB0aGUgc2lkZS1lZmZlY3RzIG9mIGNoYW5n
aW5nIGBgc3lzLnBhdGhgYCBhbmQgYGBzeXMubW9kdWxlc2BgCisgIG1lbnRpb25lZCBhYm92ZS4g
VXNlcnMgd2hpY2ggcmVxdWlyZSB0aGlzIHNob3VsZCB0dXJuIHRoZWlyIHRlc3RzIGludG8gcHJv
cGVyIHBhY2thZ2VzIGluc3RlYWQuCisKKyAgV2UgaW50ZW5kIHRvIG1ha2UgYGBpbXBvcnRsaWJg
YCB0aGUgZGVmYXVsdCBpbiBmdXR1cmUgcmVsZWFzZXMuCisKK2BgcHJlcGVuZGBgIGFuZCBgYGFw
cGVuZGBgIGltcG9ydCBtb2RlcyBzY2VuYXJpb3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSdzIGEgbGlzdCBvZiBzY2VuYXJpb3Mgd2hl
biB1c2luZyBgYHByZXBlbmRgYCBvciBgYGFwcGVuZGBgIGltcG9ydCBtb2RlcyB3aGVyZSBweXRl
c3QgbmVlZHMgdG8KK2NoYW5nZSBgYHN5cy5wYXRoYGAgaW4gb3JkZXIgdG8gaW1wb3J0IHRlc3Qg
bW9kdWxlcyBvciBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMsIGFuZCB0aGUgaXNzdWVzIHVzZXJzCitt
aWdodCBlbmNvdW50ZXIgYmVjYXVzZSBvZiB0aGF0LgogCiBUZXN0IG1vZHVsZXMgLyBgYGNvbmZ0
ZXN0LnB5YGAgZmlsZXMgaW5zaWRlIHBhY2thZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIENvbnNpZGVyIHRoaXMgZmlsZSBhbmQgZGlyZWN0
b3J5IGxheW91dDo6CiAKQEAgLTIyLDExICs3NiwxMSBAQCBDb25zaWRlciB0aGlzIGZpbGUgYW5k
IGRpcmVjdG9yeSBsYXlvdXQ6OgogICAgICAgICAgICAgIHwtIHRlc3RfZm9vLnB5CiAKIAotV2hl
biBleGVjdXRpbmc6OgotCi0gICAgcHl0ZXN0IHJvb3QvCitXaGVuIGV4ZWN1dGluZzoKIAorLi4g
Y29kZS1ibG9jazo6IGJhc2gKIAorICAgIHB5dGVzdCByb290LwogCiBweXRlc3Qgd2lsbCBmaW5k
IGBgZm9vL2Jhci90ZXN0cy90ZXN0X2Zvby5weWBgIGFuZCByZWFsaXplIGl0IGlzIHBhcnQgb2Yg
YSBwYWNrYWdlIGdpdmVuIHRoYXQKIHRoZXJlJ3MgYW4gYGBfX2luaXRfXy5weWBgIGZpbGUgaW4g
dGhlIHNhbWUgZm9sZGVyLiBJdCB3aWxsIHRoZW4gc2VhcmNoIHVwd2FyZHMgdW50aWwgaXQgY2Fu
IGZpbmQgdGhlCkBAIC00Miw3ICs5Niw3IEBAIGFuZCBhbGxvdyB0ZXN0IG1vZHVsZXMgdG8gaGF2
ZSBkdXBsaWNhdGVkIG5hbWVzLiBUaGlzIGlzIGFsc28gZGlzY3Vzc2VkIGluIGRldGFpCiA6cmVm
OmB0ZXN0IGRpc2NvdmVyeWAuCiAKIFN0YW5kYWxvbmUgdGVzdCBtb2R1bGVzIC8gYGBjb25mdGVz
dC5weWBgIGZpbGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAog
Q29uc2lkZXIgdGhpcyBmaWxlIGFuZCBkaXJlY3RvcnkgbGF5b3V0OjoKIApAQCAtNTQsNyArMTA4
LDkgQEAgQ29uc2lkZXIgdGhpcyBmaWxlIGFuZCBkaXJlY3RvcnkgbGF5b3V0OjoKICAgICAgICAg
ICAgICB8LSB0ZXN0X2Zvby5weQogCiAKLVdoZW4gZXhlY3V0aW5nOjoKK1doZW4gZXhlY3V0aW5n
OgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IHJvb3QvCiAKQEAgLTY4LDkg
KzEyNCwxMyBAQCBpbXBvcnRlZCBpbiB0aGUgZ2xvYmFsIGltcG9ydCBuYW1lc3BhY2UuCiAKIFRo
aXMgaXMgYWxzbyBkaXNjdXNzZWQgaW4gZGV0YWlscyBpbiA6cmVmOmB0ZXN0IGRpc2NvdmVyeWAu
CiAKKy4uIF9gcHl0ZXN0IHZzIHB5dGhvbiAtbSBweXRlc3RgOgorCiBJbnZva2luZyBgYHB5dGVz
dGBgIHZlcnN1cyBgYHB5dGhvbiAtbSBweXRlc3RgYAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUnVubmluZyBweXRlc3Qgd2l0aCBgYHB5dGhvbiAt
bSBweXRlc3QgWy4uLl1gYCBpbnN0ZWFkIG9mIGBgcHl0ZXN0IFsuLi5dYGAgeWllbGRzIG5lYXJs
eQotZXF1aXZhbGVudCBiZWhhdmlvdXIsIGV4Y2VwdCB0aGF0IHRoZSBmb3JtZXIgY2FsbCB3aWxs
IGFkZCB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gYGBzeXMucGF0aGBgLgorUnVubmluZyBweXRl
c3Qgd2l0aCBgYHB5dGVzdCBbLi4uXWBgIGluc3RlYWQgb2YgYGBweXRob24gLW0gcHl0ZXN0IFsu
Li5dYGAgeWllbGRzIG5lYXJseQorZXF1aXZhbGVudCBiZWhhdmlvdXIsIGV4Y2VwdCB0aGF0IHRo
ZSBsYXR0ZXIgd2lsbCBhZGQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIGBgc3lzLnBhdGhgYCwg
d2hpY2gKK2lzIHN0YW5kYXJkIGBgcHl0aG9uYGAgYmVoYXZpb3IuCisKIFNlZSBhbHNvIDpyZWY6
YGNtZGxpbmVgLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3JlZmVyZW5jZS5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vcmVmZXJlbmNlLnJzdAppbmRleCBmZTllODcwNDJmOWEuLmQx
NTQwYThmZjJhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3JlZmVyZW5jZS5yc3QK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3JlZmVyZW5jZS5yc3QKQEAgLTEsNiArMSw3IEBACisu
LiBfYHJlZmVyZW5jZWA6CiAKLVJlZmVyZW5jZQotPT09PT09PT09CitBUEkgUmVmZXJlbmNlCis9
PT09PT09PT09PT09CiAKIFRoaXMgcGFnZSBjb250YWlucyB0aGUgZnVsbCByZWZlcmVuY2UgdG8g
cHl0ZXN0J3MgQVBJLgogCkBAIC0xNCw0MiArMTUsNDQgQEAgRnVuY3Rpb25zCiBweXRlc3QuYXBw
cm94CiB+fn5+fn5+fn5+fn5+CiAKLS4uIGF1dG9mdW5jdGlvbjo6IF9weXRlc3QucHl0aG9uX2Fw
aS5hcHByb3gKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdC5hcHByb3gKIAogcHl0ZXN0LmZhaWwK
IH5+fn5+fn5+fn5+CiAKICoqVHV0b3JpYWwqKjogOnJlZjpgc2tpcHBpbmdgCiAKLS4uIGF1dG9m
dW5jdGlvbjo6IF9weXRlc3Qub3V0Y29tZXMuZmFpbAorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0
LmZhaWwKIAogcHl0ZXN0LnNraXAKIH5+fn5+fn5+fn5+CiAKLS4uIGF1dG9mdW5jdGlvbjo6IF9w
eXRlc3Qub3V0Y29tZXMuc2tpcChtc2csIFthbGxvd19tb2R1bGVfbGV2ZWw9RmFsc2VdKQorLi4g
YXV0b2Z1bmN0aW9uOjogcHl0ZXN0LnNraXAobXNnLCBbYWxsb3dfbW9kdWxlX2xldmVsPUZhbHNl
XSkKKworLi4gX2BweXRlc3QuaW1wb3J0b3Jza2lwIHJlZmA6CiAKIHB5dGVzdC5pbXBvcnRvcnNr
aXAKIH5+fn5+fn5+fn5+fn5+fn5+fn4KIAotLi4gYXV0b2Z1bmN0aW9uOjogX3B5dGVzdC5vdXRj
b21lcy5pbXBvcnRvcnNraXAKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdC5pbXBvcnRvcnNraXAK
IAogcHl0ZXN0LnhmYWlsCiB+fn5+fn5+fn5+fn4KIAotLi4gYXV0b2Z1bmN0aW9uOjogX3B5dGVz
dC5vdXRjb21lcy54ZmFpbAorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0LnhmYWlsCiAKIHB5dGVz
dC5leGl0CiB+fn5+fn5+fn5+fgogCi0uLiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0Lm91dGNvbWVz
LmV4aXQKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdC5leGl0CiAKIHB5dGVzdC5tYWluCiB+fn5+
fn5+fn5+fgogCi0uLiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0LmNvbmZpZy5tYWluCisuLiBhdXRv
ZnVuY3Rpb246OiBweXRlc3QubWFpbgogCiBweXRlc3QucGFyYW0KLX5+fn5+fn5+fn5+fn4KK35+
fn5+fn5+fn5+fgogCiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3QucGFyYW0oKnZhbHVlcywgW2lk
XSwgW21hcmtzXSkKIApAQCAtNTgsNyArNjEsNyBAQCBweXRlc3QucmFpc2VzCiAKICoqVHV0b3Jp
YWwqKjogOnJlZjpgYXNzZXJ0cmFpc2VzYC4KIAotLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0LnJh
aXNlcyhleHBlY3RlZF9leGNlcHRpb246IEV4Y2VwdGlvbiwgW21hdGNoXSwgW21lc3NhZ2VdKQor
Li4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0LnJhaXNlcyhleHBlY3RlZF9leGNlcHRpb246IEV4Y2Vw
dGlvbiBbLCAqLCBtYXRjaF0pCiAgICAgOndpdGg6IGV4Y2luZm8KIAogcHl0ZXN0LmRlcHJlY2F0
ZWRfY2FsbApAQCAtODQsNiArODcsMTIgQEAgcHl0ZXN0Lndhcm5zCiAuLiBhdXRvZnVuY3Rpb246
OiBweXRlc3Qud2FybnMoZXhwZWN0ZWRfd2FybmluZzogRXhjZXB0aW9uLCBbbWF0Y2hdKQogICAg
IDp3aXRoOgogCitweXRlc3QuZnJlZXplX2luY2x1ZGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn4KKworKipUdXRvcmlhbCoqOiA6cmVmOmBmcmVlemluZy1weXRlc3RgLgorCisuLiBh
dXRvZnVuY3Rpb246OiBweXRlc3QuZnJlZXplX2luY2x1ZGVzCiAKIC4uIF9gbWFya3MgcmVmYDoK
IApAQCAtMTExLDEyICsxMjAsMTMgQEAgQWRkIHdhcm5pbmcgZmlsdGVycyB0byBtYXJrZWQgdGVz
dCBpdGVtcy4KICAgICAgICAgQSAqd2FybmluZyBzcGVjaWZpY2F0aW9uIHN0cmluZyosIHdoaWNo
IGlzIGNvbXBvc2VkIG9mIGNvbnRlbnRzIG9mIHRoZSB0dXBsZSBgYChhY3Rpb24sIG1lc3NhZ2Us
IGNhdGVnb3J5LCBtb2R1bGUsIGxpbmVubylgYAogICAgICAgICBhcyBzcGVjaWZpZWQgaW4gYFRo
ZSBXYXJuaW5ncyBmaWx0ZXIgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS93YXJu
aW5ncy5odG1sI3dhcm5pbmctZmlsdGVyPmBfIHNlY3Rpb24gb2YKICAgICAgICAgdGhlIFB5dGhv
biBkb2N1bWVudGF0aW9uLCBzZXBhcmF0ZWQgYnkgYGAiOiJgYC4gT3B0aW9uYWwgZmllbGRzIGNh
biBiZSBvbWl0dGVkLgorICAgICAgICBNb2R1bGUgbmFtZXMgcGFzc2VkIGZvciBmaWx0ZXJpbmcg
YXJlIG5vdCByZWdleC1lc2NhcGVkLgogCiAgICAgICAgIEZvciBleGFtcGxlOgogCiAgICAgICAg
IC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLndhcm5p
bmdzKCJpZ25vcmU6Lip1c2FnZSB3aWxsIGJlIGRlcHJlY2F0ZWQuKjpEZXByZWNhdGlvbldhcm5p
bmciKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmU6Lip1
c2FnZSB3aWxsIGJlIGRlcHJlY2F0ZWQuKjpEZXByZWNhdGlvbldhcm5pbmciKQogICAgICAgICAg
ICAgZGVmIHRlc3RfZm9vKCk6CiAgICAgICAgICAgICAgICAgLi4uCiAKQEAgLTEyOCw3ICsxMzgs
NyBAQCBweXRlc3QubWFyay5wYXJhbWV0cml6ZQogCiAqKlR1dG9yaWFsKio6IDpkb2M6YHBhcmFt
ZXRyaXplYC4KIAotLi4gYXV0b21ldGhvZDo6IF9weXRlc3QucHl0aG9uLk1ldGFmdW5jLnBhcmFt
ZXRyaXplCitUaGlzIG1hcmsgaGFzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyA6cHk6bWV0aDpgX3B5
dGVzdC5weXRob24uTWV0YWZ1bmMucGFyYW1ldHJpemVgOyBzZWUgdGhlcmUuCiAKIAogLi4gX2Bw
eXRlc3QubWFyay5za2lwIHJlZmA6CkBAIC0xNjEsNiArMTcxLDI4IEBAIFNraXAgYSB0ZXN0IGZ1
bmN0aW9uIGlmIGEgY29uZGl0aW9uIGlzIGBgVHJ1ZWBgLgogICAgIDprZXl3b3JkIHN0ciByZWFz
b246IFJlYXNvbiB3aHkgdGhlIHRlc3QgZnVuY3Rpb24gaXMgYmVpbmcgc2tpcHBlZC4KIAogCisu
LiBfYHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzIHJlZmA6CisKK3B5dGVzdC5tYXJrLnVzZWZpeHR1
cmVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisqKlR1dG9yaWFsKio6IDpyZWY6YHVzZWZp
eHR1cmVzYC4KKworTWFyayBhIHRlc3QgZnVuY3Rpb24gYXMgdXNpbmcgdGhlIGdpdmVuIGZpeHR1
cmUgbmFtZXMuCisKKy4uIHB5OmZ1bmN0aW9uOjogcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoKm5h
bWVzKQorCisgICAgOnBhcmFtIGFyZ3M6IFRoZSBuYW1lcyBvZiB0aGUgZml4dHVyZSB0byB1c2Us
IGFzIHN0cmluZ3MuCisKKy4uIG5vdGU6OgorCisgICAgV2hlbiB1c2luZyBgdXNlZml4dHVyZXNg
IGluIGhvb2tzLCBpdCBjYW4gb25seSBsb2FkIGZpeHR1cmVzIHdoZW4gYXBwbGllZCB0byBhIHRl
c3QgZnVuY3Rpb24gYmVmb3JlIHRlc3Qgc2V0dXAKKyAgICAoZm9yIGV4YW1wbGUgaW4gdGhlIGBw
eXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtc2AgaG9vaykuCisKKyAgICBBbHNvIG5vdCB0aGF0
IGhpcyBtYXJrIGhhcyBubyBlZmZlY3Qgd2hlbiBhcHBsaWVkIHRvICoqZml4dHVyZXMqKi4KKwor
CisKIC4uIF9gcHl0ZXN0Lm1hcmsueGZhaWwgcmVmYDoKIAogcHl0ZXN0Lm1hcmsueGZhaWwKQEAg
LTE3MywyMyArMjA1LDI4IEBAIE1hcmtzIGEgdGVzdCBmdW5jdGlvbiBhcyAqZXhwZWN0ZWQgdG8g
ZmFpbCouCiAuLiBweTpmdW5jdGlvbjo6IHB5dGVzdC5tYXJrLnhmYWlsKGNvbmRpdGlvbj1Ob25l
LCAqLCByZWFzb249Tm9uZSwgcmFpc2VzPU5vbmUsIHJ1bj1UcnVlLCBzdHJpY3Q9RmFsc2UpCiAK
ICAgICA6dHlwZSBjb25kaXRpb246IGJvb2wgb3Igc3RyCi0gICAgOnBhcmFtIGNvbmRpdGlvbjog
YGBUcnVlL0ZhbHNlYGAgaWYgdGhlIGNvbmRpdGlvbiBzaG91bGQgYmUgbWFya2VkIGFzIHhmYWls
IG9yIGEgOnJlZjpgY29uZGl0aW9uIHN0cmluZyA8c3RyaW5nIGNvbmRpdGlvbnM+YC4KLSAgICA6
a2V5d29yZCBzdHIgcmVhc29uOiBSZWFzb24gd2h5IHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIG1hcmtl
ZCBhcyB4ZmFpbC4KLSAgICA6a2V5d29yZCBFeGNlcHRpb24gcmFpc2VzOiBFeGNlcHRpb24gc3Vi
Y2xhc3MgZXhwZWN0ZWQgdG8gYmUgcmFpc2VkIGJ5IHRoZSB0ZXN0IGZ1bmN0aW9uOyBvdGhlciBl
eGNlcHRpb25zIHdpbGwgZmFpbCB0aGUgdGVzdC4KKyAgICA6cGFyYW0gY29uZGl0aW9uOgorICAg
ICAgICBDb25kaXRpb24gZm9yIG1hcmtpbmcgdGhlIHRlc3QgZnVuY3Rpb24gYXMgeGZhaWwgKGBg
VHJ1ZS9GYWxzZWBgIG9yIGEKKyAgICAgICAgOnJlZjpgY29uZGl0aW9uIHN0cmluZyA8c3RyaW5n
IGNvbmRpdGlvbnM+YCkuIElmIGEgYm9vbCwgeW91IGFsc28gaGF2ZQorICAgICAgICB0byBzcGVj
aWZ5IGBgcmVhc29uYGAgKHNlZSA6cmVmOmBjb25kaXRpb24gc3RyaW5nIDxzdHJpbmcgY29uZGl0
aW9ucz5gKS4KKyAgICA6a2V5d29yZCBzdHIgcmVhc29uOgorICAgICAgICBSZWFzb24gd2h5IHRo
ZSB0ZXN0IGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyB4ZmFpbC4KKyAgICA6a2V5d29yZCBUeXBlW0V4
Y2VwdGlvbl0gcmFpc2VzOgorICAgICAgICBFeGNlcHRpb24gc3ViY2xhc3MgZXhwZWN0ZWQgdG8g
YmUgcmFpc2VkIGJ5IHRoZSB0ZXN0IGZ1bmN0aW9uOyBvdGhlciBleGNlcHRpb25zIHdpbGwgZmFp
bCB0aGUgdGVzdC4KICAgICA6a2V5d29yZCBib29sIHJ1bjoKICAgICAgICAgSWYgdGhlIHRlc3Qg
ZnVuY3Rpb24gc2hvdWxkIGFjdHVhbGx5IGJlIGV4ZWN1dGVkLiBJZiBgYEZhbHNlYGAsIHRoZSBm
dW5jdGlvbiB3aWxsIGFsd2F5cyB4ZmFpbCBhbmQgd2lsbAotICAgICAgICBub3QgYmUgZXhlY3V0
ZWQgKHVzZWZ1bCBhIGZ1bmN0aW9uIGlzIHNlZ2ZhdWx0aW5nKS4KKyAgICAgICAgbm90IGJlIGV4
ZWN1dGVkICh1c2VmdWwgaWYgYSBmdW5jdGlvbiBpcyBzZWdmYXVsdGluZykuCiAgICAgOmtleXdv
cmQgYm9vbCBzdHJpY3Q6CiAgICAgICAgICogSWYgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhl
IGZ1bmN0aW9uIHdpbGwgYmUgc2hvd24gaW4gdGhlIHRlcm1pbmFsIG91dHB1dCBhcyBgYHhmYWls
ZWRgYCBpZiBpdCBmYWlscwogICAgICAgICAgIGFuZCBhcyBgYHhwYXNzYGAgaWYgaXQgcGFzc2Vz
LiBJbiBib3RoIGNhc2VzIHRoaXMgd2lsbCBub3QgY2F1c2UgdGhlIHRlc3Qgc3VpdGUgdG8gZmFp
bCBhcyBhIHdob2xlLiBUaGlzCi0gICAgICAgICAgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBt
YXJrICpmbGFreSogdGVzdHMgKHRlc3RzIHRoYXQgcmFuZG9tIGF0IGZhaWwpIHRvIGJlIHRhY2ts
ZWQgbGF0ZXIuCisgICAgICAgICAgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBtYXJrICpmbGFr
eSogdGVzdHMgKHRlc3RzIHRoYXQgZmFpbCBhdCByYW5kb20pIHRvIGJlIHRhY2tsZWQgbGF0ZXIu
CiAgICAgICAgICogSWYgYGBUcnVlYGAsIHRoZSBmdW5jdGlvbiB3aWxsIGJlIHNob3duIGluIHRo
ZSB0ZXJtaW5hbCBvdXRwdXQgYXMgYGB4ZmFpbGVkYGAgaWYgaXQgZmFpbHMsIGJ1dCBpZiBpdAog
ICAgICAgICAgIHVuZXhwZWN0ZWRseSBwYXNzZXMgdGhlbiBpdCB3aWxsICoqZmFpbCoqIHRoZSB0
ZXN0IHN1aXRlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgdG8gbWFyayBmdW5jdGlvbnMK
ICAgICAgICAgICB0aGF0IGFyZSBhbHdheXMgZmFpbGluZyBhbmQgdGhlcmUgc2hvdWxkIGJlIGEg
Y2xlYXIgaW5kaWNhdGlvbiBpZiB0aGV5IHVuZXhwZWN0ZWRseSBzdGFydCB0byBwYXNzIChmb3Ig
ZXhhbXBsZQogICAgICAgICAgIGEgbmV3IHJlbGVhc2Ugb2YgYSBsaWJyYXJ5IGZpeGVzIGEga25v
d24gYnVnKS4KIAogCi1jdXN0b20gbWFya3MKK0N1c3RvbSBtYXJrcwogfn5+fn5+fn5+fn5+CiAK
IE1hcmtzIGFyZSBjcmVhdGVkIGR5bmFtaWNhbGx5IHVzaW5nIHRoZSBmYWN0b3J5IG9iamVjdCBg
YHB5dGVzdC5tYXJrYGAgYW5kIGFwcGxpZWQgYXMgYSBkZWNvcmF0b3IuCkBAIC0yMDMsNyArMjQw
LDcgQEAgRm9yIGV4YW1wbGU6CiAgICAgICAgIC4uLgogCiBXaWxsIGNyZWF0ZSBhbmQgYXR0YWNo
IGEgOmNsYXNzOmBNYXJrIDxfcHl0ZXN0Lm1hcmsuc3RydWN0dXJlcy5NYXJrPmAgb2JqZWN0IHRv
IHRoZSBjb2xsZWN0ZWQKLTpjbGFzczpgSXRlbSA8X3B5dGVzdC5ub2Rlcy5JdGVtPmAsIHdoaWNo
IGNhbiB0aGVuIGJlIGFjY2Vzc2VkIGJ5IGZpeHR1cmVzIG9yIGhvb2tzIHdpdGgKKzpjbGFzczpg
SXRlbSA8cHl0ZXN0Lkl0ZW0+YCwgd2hpY2ggY2FuIHRoZW4gYmUgYWNjZXNzZWQgYnkgZml4dHVy
ZXMgb3IgaG9va3Mgd2l0aAogOm1ldGg6YE5vZGUuaXRlcl9tYXJrZXJzIDxfcHl0ZXN0Lm5vZGVz
Lk5vZGUuaXRlcl9tYXJrZXJzPmAuIFRoZSBgYG1hcmtgYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSBm
b2xsb3dpbmcgYXR0cmlidXRlczoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgpAQCAtMjEyLDYg
KzI0OSw4IEBAIFdpbGwgY3JlYXRlIGFuZCBhdHRhY2ggYSA6Y2xhc3M6YE1hcmsgPF9weXRlc3Qu
bWFyay5zdHJ1Y3R1cmVzLk1hcms+YCBvYmplY3QgdG8KICAgICBtYXJrLmt3YXJncyA9PSB7Im1l
dGhvZCI6ICJ0aHJlYWQifQogCiAKKy4uIF9gZml4dHVyZXMtYXBpYDoKKwogRml4dHVyZXMKIC0t
LS0tLS0tCiAKQEAgLTI0Miw2ICsyODEsOCBAQCBFeGFtcGxlIG9mIGEgZml4dHVyZSByZXF1aXJp
bmcgYW5vdGhlciBmaXh0dXJlOgogRm9yIG1vcmUgZGV0YWlscywgY29uc3VsdCB0aGUgZnVsbCA6
cmVmOmBmaXh0dXJlcyBkb2NzIDxmaXh0dXJlPmAuCiAKIAorLi4gX2BweXRlc3QuZml4dHVyZS1h
cGlgOgorCiBAcHl0ZXN0LmZpeHR1cmUKIH5+fn5+fn5+fn5+fn5+fgogCkBAIC0yNDksNyArMjkw
LDcgQEAgRm9yIG1vcmUgZGV0YWlscywgY29uc3VsdCB0aGUgZnVsbCA6cmVmOmBmaXh0dXJlcyBk
b2NzIDxmaXh0dXJlPmAuCiAgICAgOmRlY29yYXRvcjoKIAogCi0uLiBfYGNhY2hlLWFwaWA6Cisu
LiBmaXh0dXJlOjogY2FjaGUKIAogY29uZmlnLmNhY2hlCiB+fn5+fn5+fn5+fn4KQEAgLTI3MCw2
ICszMTEsOCBAQCBVbmRlciB0aGUgaG9vZCwgdGhlIGNhY2hlIHBsdWdpbiB1c2VzIHRoZSBzaW1w
bGUKIC4uIGF1dG9tZXRob2Q6OiBDYWNoZS5tYWtlZGlyCiAKIAorLi4gZml4dHVyZTo6IGNhcHN5
cworCiBjYXBzeXMKIH5+fn5+fgogCkBAIC0yOTUsNiArMzM4LDggQEAgY2Fwc3lzCiAgICAgOm1l
bWJlcnM6CiAKIAorLi4gZml4dHVyZTo6IGNhcHN5c2JpbmFyeQorCiBjYXBzeXNiaW5hcnkKIH5+
fn5+fn5+fn5+fgogCkBAIC0zMTUsNiArMzYwLDggQEAgY2Fwc3lzYmluYXJ5CiAgICAgICAgICAg
ICBhc3NlcnQgY2FwdHVyZWQub3V0ID09IGIiaGVsbG9cbiIKIAogCisuLiBmaXh0dXJlOjogY2Fw
ZmQKKwogY2FwZmQKIH5+fn5+fgogCkBAIC0zMzEsMTAgKzM3OCwxMiBAQCBjYXBmZAogCiAgICAg
ICAgIGRlZiB0ZXN0X3N5c3RlbV9lY2hvKGNhcGZkKToKICAgICAgICAgICAgIG9zLnN5c3RlbSgn
ZWNobyAiaGVsbG8iJykKLSAgICAgICAgICAgIGNhcHR1cmVkID0gY2Fwc3lzLnJlYWRvdXRlcnIo
KQorICAgICAgICAgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKICAgICAgICAgICAg
IGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gImhlbGxvXG4iCiAKIAorLi4gZml4dHVyZTo6IGNhcGZk
YmluYXJ5CisKIGNhcGZkYmluYXJ5CiB+fn5+fn5+fn5+fn4KIApAQCAtMzU1LDYgKzQwNCw4IEBA
IGNhcGZkYmluYXJ5CiAgICAgICAgICAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09IGIiaGVsbG9c
biIKIAogCisuLiBmaXh0dXJlOjogZG9jdGVzdF9uYW1lc3BhY2UKKwogZG9jdGVzdF9uYW1lc3Bh
Y2UKIH5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTM3Myw2ICs0MjQsOCBAQCBkb2N0ZXN0X25hbWVz
cGFjZQogICAgIEZvciBtb3JlIGRldGFpbHM6IDpyZWY6YGRvY3Rlc3RfbmFtZXNwYWNlYC4KIAog
CisuLiBmaXh0dXJlOjogcmVxdWVzdAorCiByZXF1ZXN0CiB+fn5+fn5+CiAKQEAgLTM4NCwxMiAr
NDM3LDE2IEBAIFRoZSBgYHJlcXVlc3RgYCBmaXh0dXJlIGlzIGEgc3BlY2lhbCBmaXh0dXJlIHBy
b3ZpZGluZyBpbmZvcm1hdGlvbiBvZiB0aGUgcmVxdWVzCiAgICAgOm1lbWJlcnM6CiAKIAorLi4g
Zml4dHVyZTo6IHB5dGVzdGNvbmZpZworCiBweXRlc3Rjb25maWcKIH5+fn5+fn5+fn5+fgogCiAu
LiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0LmZpeHR1cmVzLnB5dGVzdGNvbmZpZygpCiAKIAorLi4g
Zml4dHVyZTo6IHJlY29yZF9wcm9wZXJ0eQorCiByZWNvcmRfcHJvcGVydHkKIH5+fn5+fn5+fn5+
fn5+fn5+fn4KIApAQCAtMzk3LDYgKzQ1NCwxOSBAQCByZWNvcmRfcHJvcGVydHkKIAogLi4gYXV0
b2Z1bmN0aW9uOjogX3B5dGVzdC5qdW5pdHhtbC5yZWNvcmRfcHJvcGVydHkoKQogCisKKy4uIGZp
eHR1cmU6OiByZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5CisKK3JlY29yZF90ZXN0c3VpdGVfcHJv
cGVydHkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworKipUdXRvcmlhbCoqOiA6cmVmOmBy
ZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5IGV4YW1wbGVgLgorCisuLiBhdXRvZnVuY3Rpb246OiBf
cHl0ZXN0Lmp1bml0eG1sLnJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkoKQorCisKKy4uIGZpeHR1
cmU6OiBjYXBsb2cKKwogY2FwbG9nCiB+fn5+fn4KIApAQCAtNDA1LDEyICs0NzUsMTQgQEAgY2Fw
bG9nCiAuLiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0LmxvZ2dpbmcuY2FwbG9nKCkKICAgICA6bm8t
YXV0by1vcHRpb25zOgogCi0gICAgVGhpcyByZXR1cm5zIGEgOmNsYXNzOmBfcHl0ZXN0LmxvZ2dp
bmcuTG9nQ2FwdHVyZUZpeHR1cmVgIGluc3RhbmNlLgorICAgIFJldHVybnMgYSA6Y2xhc3M6YF9w
eXRlc3QubG9nZ2luZy5Mb2dDYXB0dXJlRml4dHVyZWAgaW5zdGFuY2UuCiAKIC4uIGF1dG9jbGFz
czo6IF9weXRlc3QubG9nZ2luZy5Mb2dDYXB0dXJlRml4dHVyZQogICAgIDptZW1iZXJzOgogCiAK
Ky4uIGZpeHR1cmU6OiBtb25rZXlwYXRjaAorCiBtb25rZXlwYXRjaAogfn5+fn5+fn5+fn4KIApA
QCAtNDIxLDExICs0OTMsMTQgQEAgbW9ua2V5cGF0Y2gKIC4uIGF1dG9mdW5jdGlvbjo6IF9weXRl
c3QubW9ua2V5cGF0Y2gubW9ua2V5cGF0Y2goKQogICAgIDpuby1hdXRvLW9wdGlvbnM6CiAKLSAg
ICBUaGlzIHJldHVybnMgYSA6Y2xhc3M6YE1vbmtleVBhdGNoYCBpbnN0YW5jZS4KKyAgICBSZXR1
cm5zIGEgOmNsYXNzOmBNb25rZXlQYXRjaGAgaW5zdGFuY2UuCiAKIC4uIGF1dG9jbGFzczo6IF9w
eXRlc3QubW9ua2V5cGF0Y2guTW9ua2V5UGF0Y2gKICAgICA6bWVtYmVyczoKIAorCisuLiBmaXh0
dXJlOjogdGVzdGRpcgorCiB0ZXN0ZGlyCiB+fn5+fn5+CiAKQEAgLTQzNCwxNCArNTA5LDE2IEBA
IHRlc3RkaXIKIFRoaXMgZml4dHVyZSBwcm92aWRlcyBhIDpjbGFzczpgVGVzdGRpcmAgaW5zdGFu
Y2UgdXNlZnVsIGZvciBibGFjay1ib3ggdGVzdGluZyBvZiB0ZXN0IGZpbGVzLCBtYWtpbmcgaXQg
aWRlYWwgdG8KIHRlc3QgcGx1Z2lucy4KIAotVG8gdXNlIGl0LCBpbmNsdWRlIGluIHlvdXIgdG9w
LW1vc3QgYGBjb25mdGVzdC5weWBgIGZpbGU6OgorVG8gdXNlIGl0LCBpbmNsdWRlIGluIHlvdXIg
dG9wLW1vc3QgYGBjb25mdGVzdC5weWBgIGZpbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
IAotICAgIHB5dGVzdF9wbHVnaW5zID0gJ3B5dGVzdGVyJworICAgIHB5dGVzdF9wbHVnaW5zID0g
InB5dGVzdGVyIgogCiAKIAogLi4gYXV0b2NsYXNzOjogVGVzdGRpcigpCi0gICAgOm1lbWJlcnM6
IHJ1bnB5dGVzdCxydW5weXRlc3Rfc3VicHJvY2VzcyxydW5weXRlc3RfaW5wcm9jZXNzLG1ha2Vj
b25mdGVzdCxtYWtlcHlmaWxlCisgICAgOm1lbWJlcnM6CiAKIC4uIGF1dG9jbGFzczo6IFJ1blJl
c3VsdCgpCiAgICAgOm1lbWJlcnM6CkBAIC00NTAsNiArNTI3LDggQEAgVG8gdXNlIGl0LCBpbmNs
dWRlIGluIHlvdXIgdG9wLW1vc3QgYGBjb25mdGVzdC5weWBgIGZpbGU6OgogICAgIDptZW1iZXJz
OgogCiAKKy4uIGZpeHR1cmU6OiByZWN3YXJuCisKIHJlY3dhcm4KIH5+fn5+fn4KIApAQCAtNDYw
LDE5ICs1MzksNDggQEAgcmVjd2FybgogLi4gYXV0b2Z1bmN0aW9uOjogcmVjd2FybigpCiAgICAg
Om5vLWF1dG8tb3B0aW9uczoKIAotLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5yZWN3YXJuLldhcm5p
bmdzUmVjb3JkZXIoKQorLi4gYXV0b2NsYXNzOjogV2FybmluZ3NSZWNvcmRlcigpCiAgICAgOm1l
bWJlcnM6CiAKIEVhY2ggcmVjb3JkZWQgd2FybmluZyBpcyBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6
YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KIAotLi4gbm90ZTo6Ci0gICAgOmNsYXNzOmBSZWNv
cmRlZFdhcm5pbmdgIHdhcyBjaGFuZ2VkIGZyb20gYSBwbGFpbiBjbGFzcyB0byBhIG5hbWVkdHVw
bGUgaW4gcHl0ZXN0IDMuMQotCiAuLiBub3RlOjoKICAgICBgYERlcHJlY2F0aW9uV2FybmluZ2Bg
IGFuZCBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYCBhcmUgdHJlYXRlZAogICAgIGRpZmZl
cmVudGx5OyBzZWUgOnJlZjpgZW5zdXJpbmdfZnVuY3Rpb25fdHJpZ2dlcnNgLgogCiAKKy4uIGZp
eHR1cmU6OiB0bXBfcGF0aAorCit0bXBfcGF0aAorfn5+fn5+fn4KKworKipUdXRvcmlhbCoqOiA6
ZG9jOmB0bXBkaXJgCisKKy4uIGN1cnJlbnRtb2R1bGU6OiBfcHl0ZXN0LnRtcGRpcgorCisuLiBh
dXRvZnVuY3Rpb246OiB0bXBfcGF0aCgpCisgICAgOm5vLWF1dG8tb3B0aW9uczoKKworCisuLiBm
aXh0dXJlOjogdG1wX3BhdGhfZmFjdG9yeQorCit0bXBfcGF0aF9mYWN0b3J5Cit+fn5+fn5+fn5+
fn5+fn5+CisKKyoqVHV0b3JpYWwqKjogOnJlZjpgdG1wX3BhdGhfZmFjdG9yeSBleGFtcGxlYAor
CisuLiBfYHRtcF9wYXRoX2ZhY3RvcnkgZmFjdG9yeSBhcGlgOgorCitgYHRtcF9wYXRoX2ZhY3Rv
cnlgYCBpbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKy4uIGN1cnJlbnRt
b2R1bGU6OiBfcHl0ZXN0LnRtcGRpcgorCisuLiBhdXRvbWV0aG9kOjogVGVtcFBhdGhGYWN0b3J5
Lm1rdGVtcAorLi4gYXV0b21ldGhvZDo6IFRlbXBQYXRoRmFjdG9yeS5nZXRiYXNldGVtcAorCisK
Ky4uIGZpeHR1cmU6OiB0bXBkaXIKKwogdG1wZGlyCiB+fn5+fn4KIApAQCAtNDg0LDYgKzU5Miw4
IEBAIHRtcGRpcgogICAgIDpuby1hdXRvLW9wdGlvbnM6CiAKIAorLi4gZml4dHVyZTo6IHRtcGRp
cl9mYWN0b3J5CisKIHRtcGRpcl9mYWN0b3J5CiB+fn5+fn5+fn5+fn5+fgogCkBAIC01MjAsNiAr
NjMwLDggQEAgQm9vdHN0cmFwcGluZyBob29rcyBjYWxsZWQgZm9yIHBsdWdpbnMgcmVnaXN0ZXJl
ZCBlYXJseSBlbm91Z2ggKGludGVybmFsIGFuZCBzZXQKIC4uIGF1dG9mdW5jdGlvbjo6IHB5dGVz
dF9jbWRsaW5lX3BhcnNlCiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfY21kbGluZV9tYWluCiAK
Ky4uIF9gaW5pdGlhbGl6YXRpb24taG9va3NgOgorCiBJbml0aWFsaXphdGlvbiBob29rcwogfn5+
fn5+fn5+fn5+fn5+fn5+fn4KIApAQCAtNTMyLDI4ICs2NDQsNyBAQCBJbml0aWFsaXphdGlvbiBo
b29rcyBjYWxsZWQgZm9yIHBsdWdpbnMgYW5kIGBgY29uZnRlc3QucHlgYCBmaWxlcy4KIC4uIGF1
dG9mdW5jdGlvbjo6IHB5dGVzdF9zZXNzaW9uc3RhcnQKIC4uIGF1dG9mdW5jdGlvbjo6IHB5dGVz
dF9zZXNzaW9uZmluaXNoCiAKLVRlc3QgcnVubmluZyBob29rcwotfn5+fn5+fn5+fn5+fn5+fn5+
Ci0KLUFsbCBydW50ZXN0IHJlbGF0ZWQgaG9va3MgcmVjZWl2ZSBhIDpweTpjbGFzczpgcHl0ZXN0
Lkl0ZW0gPF9weXRlc3QubWFpbi5JdGVtPmAgb2JqZWN0LgotCi0uLiBhdXRvZnVuY3Rpb246OiBw
eXRlc3RfcnVudGVzdGxvb3AKLS4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0X3Byb3Rv
Y29sCi0uLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfcnVudGVzdF9sb2dzdGFydAotLi4gYXV0b2Z1
bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoCi0uLiBhdXRvZnVuY3Rpb246OiBweXRl
c3RfcnVudGVzdF9zZXR1cAotLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfY2FsbAot
Li4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24KLS4uIGF1dG9mdW5jdGlv
bjo6IHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQKLQotRm9yIGRlZXBlciB1bmRlcnN0YW5kaW5n
IHlvdSBtYXkgbG9vayBhdCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZgotdGhlc2UgaG9v
a3MgaW4gOnB5Om1vZDpgX3B5dGVzdC5ydW5uZXJgIGFuZCBtYXliZSBhbHNvCi1pbiA6cHk6bW9k
OmBfcHl0ZXN0LnBkYmAgd2hpY2ggaW50ZXJhY3RzIHdpdGggOnB5Om1vZDpgX3B5dGVzdC5jYXB0
dXJlYAotYW5kIGl0cyBpbnB1dC9vdXRwdXQgY2FwdHVyaW5nIGluIG9yZGVyIHRvIGltbWVkaWF0
ZWx5IGRyb3AKLWludG8gaW50ZXJhY3RpdmUgZGVidWdnaW5nIHdoZW4gYSB0ZXN0IGZhaWx1cmUg
b2NjdXJzLgotCi1UaGUgOnB5Om1vZDpgX3B5dGVzdC50ZXJtaW5hbGAgcmVwb3J0ZWQgc3BlY2lm
aWNhbGx5IHVzZXMKLXRoZSByZXBvcnRpbmcgaG9vayB0byBwcmludCBpbmZvcm1hdGlvbiBhYm91
dCBhIHRlc3QgcnVuLgorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVk
CiAKIENvbGxlY3Rpb24gaG9va3MKIH5+fn5+fn5+fn5+fn5+fn4KQEAgLTU2Miw4ICs2NTMsOCBA
QCBDb2xsZWN0aW9uIGhvb2tzCiAKIC4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9jb2xsZWN0aW9u
CiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfaWdub3JlX2NvbGxlY3QKLS4uIGF1dG9mdW5jdGlv
bjo6IHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeQogLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2Nv
bGxlY3RfZmlsZQorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxl
CiAKIEZvciBpbmZsdWVuY2luZyB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGluIFB5dGhvbiBt
b2R1bGVzCiB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGhvb2s6CkBAIC01NzcsMTIgKzY2OCwz
NyBAQCBpdGVtcywgZGVsZXRlIG9yIG90aGVyd2lzZSBhbWVuZCB0aGUgdGVzdCBpdGVtczoKIAog
Li4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMKIAorLi4gYXV0
b2Z1bmN0aW9uOjogcHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNoCisKK1Rlc3QgcnVubmluZyAocnVu
dGVzdCkgaG9va3MKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQWxsIHJ1bnRlc3Qg
cmVsYXRlZCBob29rcyByZWNlaXZlIGEgOnB5OmNsYXNzOmBweXRlc3QuSXRlbSA8cHl0ZXN0Lkl0
ZW0+YCBvYmplY3QuCisKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0bG9vcAorLi4g
YXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2wKKy4uIGF1dG9mdW5jdGlvbjo6
IHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0CisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfcnVudGVz
dF9sb2dmaW5pc2gKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0X3NldHVwCisuLiBh
dXRvZnVuY3Rpb246OiBweXRlc3RfcnVudGVzdF9jYWxsCisuLiBhdXRvZnVuY3Rpb246OiBweXRl
c3RfcnVudGVzdF90ZWFyZG93bgorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfbWFr
ZXJlcG9ydAorCitGb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcgeW91IG1heSBsb29rIGF0IHRoZSBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mCit0aGVzZSBob29rcyBpbiBgYF9weXRlc3QucnVubmVy
YGAgYW5kIG1heWJlIGFsc28KK2luIGBgX3B5dGVzdC5wZGJgYCB3aGljaCBpbnRlcmFjdHMgd2l0
aCBgYF9weXRlc3QuY2FwdHVyZWBgCithbmQgaXRzIGlucHV0L291dHB1dCBjYXB0dXJpbmcgaW4g
b3JkZXIgdG8gaW1tZWRpYXRlbHkgZHJvcAoraW50byBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcgd2hl
biBhIHRlc3QgZmFpbHVyZSBvY2N1cnMuCisKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9weWZ1
bmNfY2FsbAorCiBSZXBvcnRpbmcgaG9va3MKIH5+fn5+fn5+fn5+fn5+fgogCiBTZXNzaW9uIHJl
bGF0ZWQgcmVwb3J0aW5nIGhvb2tzOgogCiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfY29sbGVj
dHN0YXJ0CisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydAogLi4g
YXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2l0ZW1jb2xsZWN0ZWQKIC4uIGF1dG9mdW5jdGlvbjo6IHB5
dGVzdF9jb2xsZWN0cmVwb3J0CiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfZGVzZWxlY3RlZApA
QCAtNTkyLDE2ICs3MDgsMTcgQEAgU2Vzc2lvbiByZWxhdGVkIHJlcG9ydGluZyBob29rczoKIC4u
IGF1dG9mdW5jdGlvbjo6IHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5CiAuLiBhdXRvZnVuY3Rpb246
OiBweXRlc3RfZml4dHVyZV9zZXR1cAogLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2ZpeHR1cmVf
cG9zdF9maW5hbGl6ZXIKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF93YXJuaW5nX2NhcHR1cmVk
CisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3Rfd2FybmluZ19yZWNvcmRlZAogCi1BbmQgaGVyZSBp
cyB0aGUgY2VudHJhbCBob29rIGZvciByZXBvcnRpbmcgYWJvdXQKLXRlc3QgZXhlY3V0aW9uOgor
Q2VudHJhbCBob29rIGZvciByZXBvcnRpbmcgYWJvdXQgdGVzdCBleGVjdXRpb246CiAKIC4uIGF1
dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydAogCi1Zb3UgY2FuIGFsc28gdXNl
IHRoaXMgaG9vayB0byBjdXN0b21pemUgYXNzZXJ0aW9uIHJlcHJlc2VudGF0aW9uIGZvciBzb21l
Ci10eXBlczoKK0Fzc2VydGlvbiByZWxhdGVkIGhvb2tzOgogCiAuLiBhdXRvZnVuY3Rpb246OiBw
eXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlCisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfYXNzZXJ0
aW9uX3Bhc3MKIAogCiBEZWJ1Z2dpbmcvSW50ZXJhY3Rpb24gaG9va3MKQEAgLTYzMiwxNyArNzQ5
LDI1IEBAIENhbGxJbmZvCiBDbGFzcwogfn5+fn4KIAotLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5w
eXRob24uQ2xhc3MoKQorLi4gYXV0b2NsYXNzOjogcHl0ZXN0LkNsYXNzKCkKICAgICA6bWVtYmVy
czoKICAgICA6c2hvdy1pbmhlcml0YW5jZToKIAogQ29sbGVjdG9yCiB+fn5+fn5+fn4KIAotLi4g
YXV0b2NsYXNzOjogX3B5dGVzdC5ub2Rlcy5Db2xsZWN0b3IoKQorLi4gYXV0b2NsYXNzOjogcHl0
ZXN0LkNvbGxlY3RvcigpCiAgICAgOm1lbWJlcnM6CiAgICAgOnNob3ctaW5oZXJpdGFuY2U6CiAK
K0NvbGxlY3RSZXBvcnQKK35+fn5+fn5+fn5+fn4KKworLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5y
ZXBvcnRzLkNvbGxlY3RSZXBvcnQoKQorICAgIDptZW1iZXJzOgorICAgIDpzaG93LWluaGVyaXRh
bmNlOgorICAgIDppbmhlcml0ZWQtbWVtYmVyczoKKwogQ29uZmlnCiB+fn5+fn4KIApAQCAtNjU1
LDYgKzc4MCwyMSBAQCBFeGNlcHRpb25JbmZvCiAuLiBhdXRvY2xhc3M6OiBfcHl0ZXN0Ll9jb2Rl
LkV4Y2VwdGlvbkluZm8KICAgICA6bWVtYmVyczoKIAorCitFeGl0Q29kZQorfn5+fn5+fn4KKwor
Li4gYXV0b2NsYXNzOjogcHl0ZXN0LkV4aXRDb2RlCisgICAgOm1lbWJlcnM6CisKK0ZpbGUKK35+
fn4KKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LkZpbGUoKQorICAgIDptZW1iZXJzOgorICAgIDpz
aG93LWluaGVyaXRhbmNlOgorCisKIEZpeHR1cmVEZWYKIH5+fn5+fn5+fn4KIApAQCAtNjcyLDE0
ICs4MTIsMTQgQEAgRlNDb2xsZWN0b3IKIEZ1bmN0aW9uCiB+fn5+fn5+fgogCi0uLiBhdXRvY2xh
c3M6OiBfcHl0ZXN0LnB5dGhvbi5GdW5jdGlvbigpCisuLiBhdXRvY2xhc3M6OiBweXRlc3QuRnVu
Y3Rpb24oKQogICAgIDptZW1iZXJzOgogICAgIDpzaG93LWluaGVyaXRhbmNlOgogCiBJdGVtCiB+
fn5+CiAKLS4uIGF1dG9jbGFzczo6IF9weXRlc3Qubm9kZXMuSXRlbSgpCisuLiBhdXRvY2xhc3M6
OiBweXRlc3QuSXRlbSgpCiAgICAgOm1lbWJlcnM6CiAgICAgOnNob3ctaW5oZXJpdGFuY2U6CiAK
QEAgLTY5NywxMyArODM3LDYgQEAgTWFya0dlbmVyYXRvcgogICAgIDptZW1iZXJzOgogCiAKLU1h
cmtJbmZvCi1+fn5+fn5+fgotCi0uLiBhdXRvY2xhc3M6OiBfcHl0ZXN0Lm1hcmsuTWFya0luZm8K
LSAgICA6bWVtYmVyczoKLQotCiBNYXJrCiB+fn5+CiAKQEAgLTcyMCw3ICs4NTMsNyBAQCBNZXRh
ZnVuYwogTW9kdWxlCiB+fn5+fn4KIAotLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5weXRob24uTW9k
dWxlKCkKKy4uIGF1dG9jbGFzczo6IHB5dGVzdC5Nb2R1bGUoKQogICAgIDptZW1iZXJzOgogICAg
IDpzaG93LWluaGVyaXRhbmNlOgogCkBAIC03MzYsMTIgKzg2OSw2IEBAIFBhcnNlcgogLi4gYXV0
b2NsYXNzOjogX3B5dGVzdC5jb25maWcuYXJncGFyc2luZy5QYXJzZXIoKQogICAgIDptZW1iZXJz
OgogCi1QbHVnaW5NYW5hZ2VyCi1+fn5+fn5+fn5+fn5+Ci0KLS4uIGF1dG9jbGFzczo6IHBsdWdn
eS5QbHVnaW5NYW5hZ2VyKCkKLSAgICA6bWVtYmVyczoKLQogCiBQeXRlc3RQbHVnaW5NYW5hZ2Vy
CiB+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC03NDksMzYgKzg3Niw2NiBAQCBQeXRlc3RQbHVnaW5N
YW5hZ2VyCiAuLiBhdXRvY2xhc3M6OiBfcHl0ZXN0LmNvbmZpZy5QeXRlc3RQbHVnaW5NYW5hZ2Vy
KCkKICAgICA6bWVtYmVyczoKICAgICA6dW5kb2MtbWVtYmVyczoKKyAgICA6aW5oZXJpdGVkLW1l
bWJlcnM6CiAgICAgOnNob3ctaW5oZXJpdGFuY2U6CiAKIFNlc3Npb24KIH5+fn5+fn4KIAotLi4g
YXV0b2NsYXNzOjogX3B5dGVzdC5tYWluLlNlc3Npb24oKQorLi4gYXV0b2NsYXNzOjogcHl0ZXN0
LlNlc3Npb24oKQogICAgIDptZW1iZXJzOgogICAgIDpzaG93LWluaGVyaXRhbmNlOgogCiBUZXN0
UmVwb3J0CiB+fn5+fn5+fn5+CiAKLS4uIGF1dG9jbGFzczo6IF9weXRlc3QucnVubmVyLlRlc3RS
ZXBvcnQoKQorLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5yZXBvcnRzLlRlc3RSZXBvcnQoKQogICAg
IDptZW1iZXJzOgorICAgIDpzaG93LWluaGVyaXRhbmNlOgogICAgIDppbmhlcml0ZWQtbWVtYmVy
czoKIAogX1Jlc3VsdAogfn5+fn5+fgogCi0uLiBhdXRvY2xhc3M6OiBwbHVnZ3kuX1Jlc3VsdAot
ICAgIDptZW1iZXJzOgorUmVzdWx0IHVzZWQgd2l0aGluIDpyZWY6YGhvb2sgd3JhcHBlcnMgPGhv
b2t3cmFwcGVyPmAuCiAKLVNwZWNpYWwgVmFyaWFibGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLi4g
YXV0b2NsYXNzOjogcGx1Z2d5LmNhbGxlcnMuX1Jlc3VsdAorLi4gYXV0b21ldGhvZDo6IHBsdWdn
eS5jYWxsZXJzLl9SZXN1bHQuZ2V0X3Jlc3VsdAorLi4gYXV0b21ldGhvZDo6IHBsdWdneS5jYWxs
ZXJzLl9SZXN1bHQuZm9yY2VfcmVzdWx0CiAKLXB5dGVzdCB0cmVhdHMgc29tZSBnbG9iYWwgdmFy
aWFibGVzIGluIGEgc3BlY2lhbCBtYW5uZXIgd2hlbiBkZWZpbmVkIGluIGEgdGVzdCBtb2R1bGUu
CitHbG9iYWwgVmFyaWFibGVzCistLS0tLS0tLS0tLS0tLS0tCiAKK3B5dGVzdCB0cmVhdHMgc29t
ZSBnbG9iYWwgdmFyaWFibGVzIGluIGEgc3BlY2lhbCBtYW5uZXIgd2hlbiBkZWZpbmVkIGluIGEg
dGVzdCBtb2R1bGUgb3IKK2BgY29uZnRlc3QucHlgYCBmaWxlcy4KKworCisuLiBnbG9iYWx2YXI6
OiBjb2xsZWN0X2lnbm9yZQorCisqKlR1dG9yaWFsKio6IDpyZWY6YGN1c3RvbWl6aW5nLXRlc3Qt
Y29sbGVjdGlvbmAKKworQ2FuIGJlIGRlY2xhcmVkIGluICpjb25mdGVzdC5weSBmaWxlcyogdG8g
ZXhjbHVkZSB0ZXN0IGRpcmVjdG9yaWVzIG9yIG1vZHVsZXMuCitOZWVkcyB0byBiZSBgYGxpc3Rb
c3RyXWBgLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgY29sbGVjdF9pZ25vcmUgPSBb
InNldHVwLnB5Il0KKworCisuLiBnbG9iYWx2YXI6OiBjb2xsZWN0X2lnbm9yZV9nbG9iCisKKyoq
VHV0b3JpYWwqKjogOnJlZjpgY3VzdG9taXppbmctdGVzdC1jb2xsZWN0aW9uYAorCitDYW4gYmUg
ZGVjbGFyZWQgaW4gKmNvbmZ0ZXN0LnB5IGZpbGVzKiB0byBleGNsdWRlIHRlc3QgZGlyZWN0b3Jp
ZXMgb3IgbW9kdWxlcword2l0aCBVbml4IHNoZWxsLXN0eWxlIHdpbGRjYXJkcy4gTmVlZHMgdG8g
YmUgYGBsaXN0W3N0cl1gYCB3aGVyZSBgYHN0cmBgIGNhbgorY29udGFpbiBnbG9iIHBhdHRlcm5z
LgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgY29sbGVjdF9pZ25vcmVfZ2xvYiA9IFsi
Kl9pZ25vcmUucHkiXQogCi1weXRlc3RfcGx1Z2lucwotfn5+fn5+fn5+fn5+fn4KKworLi4gZ2xv
YmFsdmFyOjogcHl0ZXN0X3BsdWdpbnMKIAogKipUdXRvcmlhbCoqOiA6cmVmOmBhdmFpbGFibGUg
aW5zdGFsbGFibGUgcGx1Z2luc2AKIApAQCAtNzk0LDEzICs5NTEsMTIgQEAgQ2FuIGJlIGVpdGhl
ciBhIGBgc3RyYGAgb3IgYGBTZXF1ZW5jZVtzdHJdYGAuCiAgICAgcHl0ZXN0X3BsdWdpbnMgPSAo
Im15YXBwLnRlc3RzdXBwb3J0LnRvb2xzIiwgIm15YXBwLnRlc3RzdXBwb3J0LnJlZ3Jlc3Npb24i
KQogCiAKLXB5dGVzdF9tYXJrCi1+fn5+fn5+fn5+fgorLi4gZ2xvYmFsdmFyOjogcHl0ZXN0bWFy
awogCiAqKlR1dG9yaWFsKio6IDpyZWY6YHNjb3BlZC1tYXJraW5nYAogCiBDYW4gYmUgZGVjbGFy
ZWQgYXQgdGhlICoqZ2xvYmFsKiogbGV2ZWwgaW4gKnRlc3QgbW9kdWxlcyogdG8gYXBwbHkgb25l
IG9yIG1vcmUgOnJlZjpgbWFya3MgPG1hcmtzIHJlZj5gIHRvIGFsbAotdGVzdCBmdW5jdGlvbnMg
YW5kIG1ldGhvZHMuIENhbiBiZSBlaXRoZXIgYSBzaW5nbGUgbWFyayBvciBhIHNlcXVlbmNlIG9m
IG1hcmtzLgordGVzdCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuIENhbiBiZSBlaXRoZXIgYSBzaW5n
bGUgbWFyayBvciBhIGxpc3Qgb2YgbWFya3MgKGFwcGxpZWQgaW4gbGVmdC10by1yaWdodCBvcmRl
cikuCiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIApAQCAtODEzLDEzICs5NjksNyBAQCB0ZXN0
IGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy4gQ2FuIGJlIGVpdGhlciBhIHNpbmdsZSBtYXJrIG9yIGEg
c2VxdWVuY2Ugb2YgbWFya3MuCiAKICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICBweXRlc3RtYXJr
ID0gKHB5dGVzdC5tYXJrLmludGVncmF0aW9uLCBweXRlc3QubWFyay5zbG93KQotCi1QWVRFU1Rf
RE9OVF9SRVdSSVRFIChtb2R1bGUgZG9jc3RyaW5nKQotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn4KLQotVGhlIHRleHQgYGBQWVRFU1RfRE9OVF9SRVdSSVRFYGAgY2FuIGJl
IGFkZCB0byBhbnkgKiptb2R1bGUgZG9jc3RyaW5nKiogdG8gZGlzYWJsZQotOnJlZjpgYXNzZXJ0
aW9uIHJld3JpdGluZyA8YXNzZXJ0IGludHJvc3BlY3Rpb24+YCBmb3IgdGhhdCBtb2R1bGUuCisg
ICAgcHl0ZXN0bWFyayA9IFtweXRlc3QubWFyay5pbnRlZ3JhdGlvbiwgcHl0ZXN0Lm1hcmsuc2xv
d10KIAogCiBFbnZpcm9ubWVudCBWYXJpYWJsZXMKQEAgLTgyNywxOSArOTc3LDI2IEBAIEVudmly
b25tZW50IFZhcmlhYmxlcwogCiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgdXNl
ZCB0byBjaGFuZ2UgcHl0ZXN0J3MgYmVoYXZpb3IuCiAKLVBZVEVTVF9BRERPUFRTCi1+fn5+fn5+
fn5+fn5+fgorLi4gZW52dmFyOjogUFlURVNUX0FERE9QVFMKIAogVGhpcyBjb250YWlucyBhIGNv
bW1hbmQtbGluZSAocGFyc2VkIGJ5IHRoZSBweTptb2Q6YHNobGV4YCBtb2R1bGUpIHRoYXQgd2ls
bCBiZSAqKnByZXBlbmRlZCoqIHRvIHRoZSBjb21tYW5kIGxpbmUgZ2l2ZW4KIGJ5IHRoZSB1c2Vy
LCBzZWUgOnJlZjpgYWRkaW5nIGRlZmF1bHQgb3B0aW9uc2AgZm9yIG1vcmUgaW5mb3JtYXRpb24u
CiAKLVBZVEVTVF9ERUJVRwotfn5+fn5+fn5+fn5+CisuLiBlbnZ2YXI6OiBQWVRFU1RfQ1VSUkVO
VF9URVNUCisKK1RoaXMgaXMgbm90IG1lYW50IHRvIGJlIHNldCBieSB1c2VycywgYnV0IGlzIHNl
dCBieSBweXRlc3QgaW50ZXJuYWxseSB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRlc3Qg
c28gb3RoZXIKK3Byb2Nlc3NlcyBjYW4gaW5zcGVjdCBpdCwgc2VlIDpyZWY6YHB5dGVzdCBjdXJy
ZW50IHRlc3QgZW52YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLi4gZW52dmFyOjogUFlURVNU
X0RFQlVHCiAKIFdoZW4gc2V0LCBweXRlc3Qgd2lsbCBwcmludCB0cmFjaW5nIGFuZCBkZWJ1ZyBp
bmZvcm1hdGlvbi4KIAotUFlURVNUX1BMVUdJTlMKLX5+fn5+fn5+fn5+fn5+CisuLiBlbnZ2YXI6
OiBQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQKKworV2hlbiBzZXQsIGRpc2FibGVzIHBs
dWdpbiBhdXRvLWxvYWRpbmcgdGhyb3VnaCBzZXR1cHRvb2xzIGVudHJ5cG9pbnRzLiBPbmx5IGV4
cGxpY2l0bHkgc3BlY2lmaWVkIHBsdWdpbnMgd2lsbCBiZQorbG9hZGVkLgorCisuLiBlbnZ2YXI6
OiBQWVRFU1RfUExVR0lOUwogCiBDb250YWlucyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBtb2R1
bGVzIHRoYXQgc2hvdWxkIGJlIGxvYWRlZCBhcyBwbHVnaW5zOgogCkBAIC04NDcsMTIgKzEwMDQs
NjUgQEAgQ29udGFpbnMgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IHNob3Vs
ZCBiZSBsb2FkZWQgYXMgcGx1Z2luczoKIAogICAgIGV4cG9ydCBQWVRFU1RfUExVR0lOUz1teW1v
ZHVsZS5wbHVnaW4seGRpc3QKIAorLi4gZW52dmFyOjogUFlfQ09MT1JTCiAKLVBZVEVTVF9DVVJS
RU5UX1RFU1QKLX5+fn5+fn5+fn5+fn5+fn5+fn4KK1doZW4gc2V0IHRvIGBgMWBgLCBweXRlc3Qg
d2lsbCB1c2UgY29sb3IgaW4gdGVybWluYWwgb3V0cHV0LgorV2hlbiBzZXQgdG8gYGAwYGAsIHB5
dGVzdCB3aWxsIG5vdCB1c2UgY29sb3IuCitgYFBZX0NPTE9SU2BgIHRha2VzIHByZWNlZGVuY2Ug
b3ZlciBgYE5PX0NPTE9SYGAgYW5kIGBgRk9SQ0VfQ09MT1JgYC4KIAotVGhpcyBpcyBub3QgbWVh
bnQgdG8gYmUgc2V0IGJ5IHVzZXJzLCBidXQgaXMgc2V0IGJ5IHB5dGVzdCBpbnRlcm5hbGx5IHdp
dGggdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGVzdCBzbyBvdGhlcgotcHJvY2Vzc2VzIGNhbiBp
bnNwZWN0IGl0LCBzZWUgOnJlZjpgcHl0ZXN0IGN1cnJlbnQgdGVzdCBlbnZgIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorLi4gZW52dmFyOjogTk9fQ09MT1IKKworV2hlbiBzZXQgKHJlZ2FyZGxlc3Mg
b2YgdmFsdWUpLCBweXRlc3Qgd2lsbCBub3QgdXNlIGNvbG9yIGluIHRlcm1pbmFsIG91dHB1dC4K
K2BgUFlfQ09MT1JTYGAgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBgTk9fQ09MT1JgYCwgd2hpY2gg
dGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBgRk9SQ0VfQ09MT1JgYC4KK1NlZSBgbm8tY29sb3Iub3Jn
IDxodHRwczovL25vLWNvbG9yLm9yZy8+YF9fIGZvciBvdGhlciBsaWJyYXJpZXMgc3VwcG9ydGlu
ZyB0aGlzIGNvbW11bml0eSBzdGFuZGFyZC4KKworLi4gZW52dmFyOjogRk9SQ0VfQ09MT1IKKwor
V2hlbiBzZXQgKHJlZ2FyZGxlc3Mgb2YgdmFsdWUpLCBweXRlc3Qgd2lsbCB1c2UgY29sb3IgaW4g
dGVybWluYWwgb3V0cHV0LgorYGBQWV9DT0xPUlNgYCBhbmQgYGBOT19DT0xPUmBgIHRha2UgcHJl
Y2VkZW5jZSBvdmVyIGBgRk9SQ0VfQ09MT1JgYC4KKworRXhjZXB0aW9ucworLS0tLS0tLS0tLQor
CisuLiBhdXRvY2xhc3M6OiBweXRlc3QuVXNhZ2VFcnJvcigpCisgICAgOnNob3ctaW5oZXJpdGFu
Y2U6CisKKy4uIF9gd2FybmluZ3MgcmVmYDoKKworV2FybmluZ3MKKy0tLS0tLS0tCisKK0N1c3Rv
bSB3YXJuaW5ncyBnZW5lcmF0ZWQgaW4gc29tZSBzaXR1YXRpb25zIHN1Y2ggYXMgaW1wcm9wZXIg
dXNhZ2Ugb3IgZGVwcmVjYXRlZCBmZWF0dXJlcy4KKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LlB5
dGVzdFdhcm5pbmcKKyAgIDpzaG93LWluaGVyaXRhbmNlOgorCisuLiBhdXRvY2xhc3M6OiBweXRl
c3QuUHl0ZXN0QXNzZXJ0UmV3cml0ZVdhcm5pbmcKKyAgIDpzaG93LWluaGVyaXRhbmNlOgorCisu
LiBhdXRvY2xhc3M6OiBweXRlc3QuUHl0ZXN0Q2FjaGVXYXJuaW5nCisgICA6c2hvdy1pbmhlcml0
YW5jZToKKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LlB5dGVzdENvbGxlY3Rpb25XYXJuaW5nCisg
ICA6c2hvdy1pbmhlcml0YW5jZToKKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LlB5dGVzdENvbmZp
Z1dhcm5pbmcKKyAgIDpzaG93LWluaGVyaXRhbmNlOgorCisuLiBhdXRvY2xhc3M6OiBweXRlc3Qu
UHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nCisgICA6c2hvdy1pbmhlcml0YW5jZToKKworLi4gYXV0
b2NsYXNzOjogcHl0ZXN0LlB5dGVzdEV4cGVyaW1lbnRhbEFwaVdhcm5pbmcKKyAgIDpzaG93LWlu
aGVyaXRhbmNlOgorCisuLiBhdXRvY2xhc3M6OiBweXRlc3QuUHl0ZXN0VW5oYW5kbGVkQ29yb3V0
aW5lV2FybmluZworICAgOnNob3ctaW5oZXJpdGFuY2U6CisKKy4uIGF1dG9jbGFzczo6IHB5dGVz
dC5QeXRlc3RVbmtub3duTWFya1dhcm5pbmcKKyAgIDpzaG93LWluaGVyaXRhbmNlOgorCisKK0Nv
bnN1bHQgdGhlIDpyZWY6YGludGVybmFsLXdhcm5pbmdzYCBzZWN0aW9uIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIC4uIF9gaW5pIG9wdGlvbnMgcmVmYDoK
QEAgLTg2MCwxMSArMTA3MCwxNyBAQCBwcm9jZXNzZXMgY2FuIGluc3BlY3QgaXQsIHNlZSA6cmVm
OmBweXRlc3QgY3VycmVudCB0ZXN0IGVudmAgZm9yIG1vcmUgaW5mb3JtYXRpbwogQ29uZmlndXJh
dGlvbiBPcHRpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSGVyZSBpcyBhIGxpc3Qgb2Yg
YnVpbHRpbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtYXkgYmUgd3JpdHRlbiBpbiBhIGBg
cHl0ZXN0LmluaWBgLCBgYHRveC5pbmlgYCBvciBgYHNldHVwLmNmZ2BgCi1maWxlLCB1c3VhbGx5
IGxvY2F0ZWQgYXQgdGhlIHJvb3Qgb2YgeW91ciByZXBvc2l0b3J5LiBBbGwgb3B0aW9ucyBtdXN0
IGJlIHVuZGVyIGEgYGBbcHl0ZXN0XWBgIHNlY3Rpb24KLShgYFt0b29sOnB5dGVzdF1gYCBmb3Ig
YGBzZXR1cC5jZmdgYCBmaWxlcykuCitIZXJlIGlzIGEgbGlzdCBvZiBidWlsdGluIGNvbmZpZ3Vy
YXRpb24gb3B0aW9ucyB0aGF0IG1heSBiZSB3cml0dGVuIGluIGEgYGBweXRlc3QuaW5pYGAsIGBg
cHlwcm9qZWN0LnRvbWxgYCwgYGB0b3guaW5pYGAgb3IgYGBzZXR1cC5jZmdgYAorZmlsZSwgdXN1
YWxseSBsb2NhdGVkIGF0IHRoZSByb290IG9mIHlvdXIgcmVwb3NpdG9yeS4gVG8gc2VlIGVhY2gg
ZmlsZSBmb3JtYXQgaW4gZGV0YWlscywgc2VlCis6cmVmOmBjb25maWcgZmlsZSBmb3JtYXRzYC4K
IAotQ29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbnMgbWF5IGJlIG92ZXJ3cml0dGVuIGluIHRoZSBj
b21tYW5kLWxpbmUgYnkgdXNpbmcgYGAtby8tLW92ZXJyaWRlYGAsIHdoaWNoIGNhbiBhbHNvIGJl
CisuLiB3YXJuaW5nOjoKKyAgICBVc2FnZSBvZiBgYHNldHVwLmNmZ2BgIGlzIG5vdCByZWNvbW1l
bmRlZCBleGNlcHQgZm9yIHZlcnkgc2ltcGxlIHVzZSBjYXNlcy4gYGAuY2ZnYGAKKyAgICBmaWxl
cyB1c2UgYSBkaWZmZXJlbnQgcGFyc2VyIHRoYW4gYGBweXRlc3QuaW5pYGAgYW5kIGBgdG94Lmlu
aWBgIHdoaWNoIG1pZ2h0IGNhdXNlIGhhcmQgdG8gdHJhY2sKKyAgICBkb3duIHByb2JsZW1zLgor
ICAgIFdoZW4gcG9zc2libGUsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgbGF0dGVyIGZp
bGVzLCBvciBgYHB5cHJvamVjdC50b21sYGAsIHRvIGhvbGQgeW91ciBweXRlc3QgY29uZmlndXJh
dGlvbi4KKworQ29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBiZSBvdmVyd3JpdHRlbiBpbiB0aGUg
Y29tbWFuZC1saW5lIGJ5IHVzaW5nIGBgLW8vLS1vdmVycmlkZS1pbmlgYCwgd2hpY2ggY2FuIGFs
c28gYmUKIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5h
bWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogCiAgICBweXRlc3QgLW8gY29uc29sZV9vdXRwdXRf
c3R5bGU9Y2xhc3NpYyAtbyBjYWNoZV9kaXI9L3RtcC9teWNhY2hlCkBAIC04ODEsNyArMTA5Nyw5
IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9
dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogICAgICAgICBbcHl0ZXN0XQogICAgICAgICBhZGRvcHRz
ID0gLS1tYXhmYWlsPTIgLXJmICAjIGV4aXQgYWZ0ZXIgMiBmYWlsdXJlcywgcmVwb3J0IGZhaWwg
aW5mbwogCi0gICBpc3N1aW5nIGBgcHl0ZXN0IHRlc3RfaGVsbG8ucHlgYCBhY3R1YWxseSBtZWFu
czo6CisgICBpc3N1aW5nIGBgcHl0ZXN0IHRlc3RfaGVsbG8ucHlgYCBhY3R1YWxseSBtZWFuczoK
KworICAgLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgICAgICBweXRlc3QgLS1tYXhmYWlsPTIg
LXJmIHRlc3RfaGVsbG8ucHkKIApAQCAtODkwLDggKzExMDgsNiBAQCBwYXNzZWQgbXVsdGlwbGUg
dGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxl
OjoKIAogLi4gY29uZnZhbDo6IGNhY2hlX2RpcgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIK
LQogICAgU2V0cyBhIGRpcmVjdG9yeSB3aGVyZSBzdG9yZXMgY29udGVudCBvZiBjYWNoZSBwbHVn
aW4uIERlZmF1bHQgZGlyZWN0b3J5IGlzCiAgICBgYC5weXRlc3RfY2FjaGVgYCB3aGljaCBpcyBj
cmVhdGVkIGluIDpyZWY6YHJvb3RkaXIgPHJvb3RkaXI+YC4gRGlyZWN0b3J5IG1heSBiZQogICAg
cmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aC4gSWYgc2V0dGluZyByZWxhdGl2ZSBwYXRoLCB0aGVu
IGRpcmVjdG9yeSBpcyBjcmVhdGVkCkBAIC05MTAsMTIgKzExMjYsMTMgQEAgcGFzc2VkIG11bHRp
cGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhh
bXBsZTo6CiAKIC4uIGNvbmZ2YWw6OiBjb25zb2xlX291dHB1dF9zdHlsZQogCi0gICAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjMKKwogCiAgICBTZXRzIHRoZSBjb25zb2xlIG91dHB1dCBzdHlsZSB3aGls
ZSBydW5uaW5nIHRlc3RzOgogCiAgICAqIGBgY2xhc3NpY2BgOiBjbGFzc2ljIHB5dGVzdCBvdXRw
dXQuCiAgICAqIGBgcHJvZ3Jlc3NgYDogbGlrZSBjbGFzc2ljIHB5dGVzdCBvdXRwdXQsIGJ1dCB3
aXRoIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yLgorICAgKiBgYGNvdW50YGA6IGxpa2UgcHJvZ3Jlc3Ms
IGJ1dCBzaG93cyBwcm9ncmVzcyBhcyB0aGUgbnVtYmVyIG9mIHRlc3RzIGNvbXBsZXRlZCBpbnN0
ZWFkIG9mIGEgcGVyY2VudC4KIAogICAgVGhlIGRlZmF1bHQgaXMgYGBwcm9ncmVzc2BgLCBidXQg
eW91IGNhbiBmYWxsYmFjayB0byBgYGNsYXNzaWNgYCBpZiB5b3UgcHJlZmVyIG9yCiAgICB0aGUg
bmV3IG1vZGUgaXMgY2F1c2luZyB1bmV4cGVjdGVkIHByb2JsZW1zOgpAQCAtOTI5LDcgKzExNDYs
NyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1l
PXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAogLi4gY29uZnZhbDo6IGRvY3Rlc3RfZW5jb2RpbmcK
IAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisKIAogICAgRGVmYXVsdCBlbmNvZGluZyB0byB1
c2UgdG8gZGVjb2RlIHRleHQgZmlsZXMgd2l0aCBkb2NzdHJpbmdzLgogICAgOmRvYzpgU2VlIGhv
dyBweXRlc3QgaGFuZGxlcyBkb2N0ZXN0cyA8ZG9jdGVzdD5gLgpAQCAtOTQzLDEyICsxMTYwLDEz
IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9
dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogCiAuLiBjb25mdmFsOjogZW1wdHlfcGFyYW1ldGVyX3Nl
dF9tYXJrCiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKwogCiAgICAgQWxsb3dzIHRvIHBp
Y2sgdGhlIGFjdGlvbiBmb3IgZW1wdHkgcGFyYW1ldGVyc2V0cyBpbiBwYXJhbWV0ZXJpemF0aW9u
CiAKICAgICAqIGBgc2tpcGBgIHNraXBzIHRlc3RzIHdpdGggYW4gZW1wdHkgcGFyYW1ldGVyc2V0
IChkZWZhdWx0KQogICAgICogYGB4ZmFpbGBgIG1hcmtzIHRlc3RzIHdpdGggYW4gZW1wdHkgcGFy
YW1ldGVyc2V0IGFzIHhmYWlsKHJ1bj1GYWxzZSkKKyAgICAqIGBgZmFpbF9hdF9jb2xsZWN0YGAg
cmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBwYXJhbWV0cml6ZSBjb2xsZWN0cyBhbiBlbXB0eSBwYXJh
bWV0ZXIgc2V0CiAKICAgICAuLiBjb2RlLWJsb2NrOjogaW5pCiAKQEAgLTk2Myw5ICsxMTgxLDI2
IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9
dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogICAgICAgZm9yIG1vcmUgZGV0YWlscy4KIAogCisuLiBj
b25mdmFsOjogZmF1bHRoYW5kbGVyX3RpbWVvdXQKKworICAgRHVtcHMgdGhlIHRyYWNlYmFja3Mg
b2YgYWxsIHRocmVhZHMgaWYgYSB0ZXN0IHRha2VzIGxvbmdlciB0aGFuIGBgWGBgIHNlY29uZHMg
dG8gcnVuIChpbmNsdWRpbmcKKyAgIGZpeHR1cmUgc2V0dXAgYW5kIHRlYXJkb3duKS4gSW1wbGVt
ZW50ZWQgdXNpbmcgdGhlIGBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXJgXyBmdW5j
dGlvbiwKKyAgIHNvIGFsbCBjYXZlYXRzIHRoZXJlIGFwcGx5LgorCisgICAuLiBjb2RlLWJsb2Nr
OjogaW5pCisKKyAgICAgICAgIyBjb250ZW50IG9mIHB5dGVzdC5pbmkKKyAgICAgICAgW3B5dGVz
dF0KKyAgICAgICAgZmF1bHRoYW5kbGVyX3RpbWVvdXQ9NQorCisgICBGb3IgbW9yZSBpbmZvcm1h
dGlvbiBwbGVhc2UgcmVmZXIgdG8gOnJlZjpgZmF1bHRoYW5kbGVyYC4KKworLi4gX2BmYXVsdGhh
bmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXJgOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xp
YnJhcnkvZmF1bHRoYW5kbGVyLmh0bWwjZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVy
CisKKwogLi4gY29uZnZhbDo6IGZpbHRlcndhcm5pbmdzCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6
IDMuMQorCiAKICAgIFNldHMgYSBsaXN0IG9mIGZpbHRlcnMgYW5kIGFjdGlvbnMgdGhhdCBzaG91
bGQgYmUgdGFrZW4gZm9yIG1hdGNoZWQKICAgIHdhcm5pbmdzLiBCeSBkZWZhdWx0IGFsbCB3YXJu
aW5ncyBlbWl0dGVkIGR1cmluZyB0aGUgdGVzdCBzZXNzaW9uCkBAIC05ODMsOSArMTIxOCw3MiBA
QCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZh
bHVlYGAuIEZvciBleGFtcGxlOjoKICAgIGludG8gZXJyb3JzLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biBwbGVhc2UgcmVmZXIgdG8gOnJlZjpgd2FybmluZ3NgLgogCiAKLS4uIGNvbmZ2YWw6OiBqdW5p
dF9zdWl0ZV9uYW1lCisuLiBjb25mdmFsOjoganVuaXRfZHVyYXRpb25fcmVwb3J0CisKKyAgICAu
LiB2ZXJzaW9uYWRkZWQ6OiA0LjEKKworICAgIENvbmZpZ3VyZXMgaG93IGR1cmF0aW9ucyBhcmUg
cmVjb3JkZWQgaW50byB0aGUgSlVuaXQgWE1MIHJlcG9ydDoKKworICAgICogYGB0b3RhbGBgICh0
aGUgZGVmYXVsdCk6IGR1cmF0aW9uIHRpbWVzIHJlcG9ydGVkIGluY2x1ZGUgc2V0dXAsIGNhbGws
IGFuZCB0ZWFyZG93biB0aW1lcy4KKyAgICAqIGBgY2FsbGBgOiBkdXJhdGlvbiB0aW1lcyByZXBv
cnRlZCBpbmNsdWRlIG9ubHkgY2FsbCB0aW1lcywgZXhjbHVkaW5nIHNldHVwIGFuZCB0ZWFyZG93
bi4KKworICAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgICBbcHl0ZXN0XQorICAgICAg
ICBqdW5pdF9kdXJhdGlvbl9yZXBvcnQgPSBjYWxsCisKKworLi4gY29uZnZhbDo6IGp1bml0X2Zh
bWlseQorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogNC4yCisKKyAgICBDb25maWd1cmVzIHRoZSBm
b3JtYXQgb2YgdGhlIGdlbmVyYXRlZCBKVW5pdCBYTUwgZmlsZS4gVGhlIHBvc3NpYmxlIG9wdGlv
bnMgYXJlOgorCisgICAgKiBgYHh1bml0MWBgIChvciBgYGxlZ2FjeWBgKTogcHJvZHVjZXMgb2xk
IHN0eWxlIG91dHB1dCwgY29tcGF0aWJsZSB3aXRoIHRoZSB4dW5pdCAxLjAgZm9ybWF0LiAqKlRo
aXMgaXMgdGhlIGRlZmF1bHQqKi4KKyAgICAqIGBgeHVuaXQyYGA6IHByb2R1Y2VzIGB4dW5pdCAy
LjAgc3R5bGUgb3V0cHV0IDxodHRwczovL2dpdGh1Yi5jb20vamVua2luc2NpL3h1bml0LXBsdWdp
bi9ibG9iL3h1bml0LTIuMy4yL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvamVua2luc2NpL3BsdWdp
bnMveHVuaXQvdHlwZXMvbW9kZWwveHNkL2p1bml0LTEwLnhzZD5gX18sCisgICAgICAgIHdoaWNo
IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUgd2l0aCBsYXRlc3QgSmVua2lucyB2ZXJzaW9ucy4K
KworICAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgICBbcHl0ZXN0XQorICAgICAgICBq
dW5pdF9mYW1pbHkgPSB4dW5pdDIKKworCisuLiBjb25mdmFsOjoganVuaXRfbG9nZ2luZwogCi0g
ICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAg
Li4gdmVyc2lvbmNoYW5nZWQ6OiA1LjQKKyAgICAgICAgYGBsb2dgYCwgYGBhbGxgYCwgYGBvdXQt
ZXJyYGAgb3B0aW9ucyBhZGRlZC4KKworICAgIENvbmZpZ3VyZXMgaWYgY2FwdHVyZWQgb3V0cHV0
IHNob3VsZCBiZSB3cml0dGVuIHRvIHRoZSBKVW5pdCBYTUwgZmlsZS4gVmFsaWQgdmFsdWVzIGFy
ZToKKworICAgICogYGBsb2dgYDogd3JpdGUgb25seSBgYGxvZ2dpbmdgYCBjYXB0dXJlZCBvdXRw
dXQuCisgICAgKiBgYHN5c3RlbS1vdXRgYDogd3JpdGUgY2FwdHVyZWQgYGBzdGRvdXRgYCBjb250
ZW50cy4KKyAgICAqIGBgc3lzdGVtLWVycmBgOiB3cml0ZSBjYXB0dXJlZCBgYHN0ZGVycmBgIGNv
bnRlbnRzLgorICAgICogYGBvdXQtZXJyYGA6IHdyaXRlIGJvdGggY2FwdHVyZWQgYGBzdGRvdXRg
YCBhbmQgYGBzdGRlcnJgYCBjb250ZW50cy4KKyAgICAqIGBgYWxsYGA6IHdyaXRlIGNhcHR1cmVk
IGBgbG9nZ2luZ2BgLCBgYHN0ZG91dGBgIGFuZCBgYHN0ZGVycmBgIGNvbnRlbnRzLgorICAgICog
YGBub2BgICh0aGUgZGVmYXVsdCk6IG5vIGNhcHR1cmVkIG91dHB1dCBpcyB3cml0dGVuLgorCisg
ICAgLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGp1bml0
X2xvZ2dpbmcgPSBzeXN0ZW0tb3V0CisKKworLi4gY29uZnZhbDo6IGp1bml0X2xvZ19wYXNzaW5n
X3Rlc3RzCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiA0LjYKKworICAgIElmIGBganVuaXRfbG9n
Z2luZyAhPSAibm8iYGAsIGNvbmZpZ3VyZXMgaWYgdGhlIGNhcHR1cmVkIG91dHB1dCBzaG91bGQg
YmUgd3JpdHRlbgorICAgIHRvIHRoZSBKVW5pdCBYTUwgZmlsZSBmb3IgKipwYXNzaW5nKiogdGVz
dHMuIERlZmF1bHQgaXMgYGBUcnVlYGAuCisKKyAgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAg
ICAgICAgW3B5dGVzdF0KKyAgICAgICAganVuaXRfbG9nX3Bhc3NpbmdfdGVzdHMgPSBGYWxzZQor
CisKKy4uIGNvbmZ2YWw6OiBqdW5pdF9zdWl0ZV9uYW1lCiAKICAgICBUbyBzZXQgdGhlIG5hbWUg
b2YgdGhlIHJvb3QgdGVzdCBzdWl0ZSB4bWwgaXRlbSwgeW91IGNhbiBjb25maWd1cmUgdGhlIGBg
anVuaXRfc3VpdGVfbmFtZWBgIG9wdGlvbiBpbiB5b3VyIGNvbmZpZyBmaWxlOgogCkBAIC05OTQs
MTAgKzEyOTIsNDIgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0
IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAgICAgICAgIFtweXRlc3RdCiAgICAg
ICAgIGp1bml0X3N1aXRlX25hbWUgPSBteV9zdWl0ZQogCisuLiBjb25mdmFsOjogbG9nX2F1dG9f
aW5kZW50CisKKyAgICBBbGxvdyBzZWxlY3RpdmUgYXV0by1pbmRlbnRhdGlvbiBvZiBtdWx0aWxp
bmUgbG9nIG1lc3NhZ2VzLgorCisgICAgU3VwcG9ydHMgY29tbWFuZCBsaW5lIG9wdGlvbiBgYC0t
bG9nLWF1dG8taW5kZW50IFt2YWx1ZV1gYAorICAgIGFuZCBjb25maWcgb3B0aW9uIGBgbG9nX2F1
dG9faW5kZW50ID0gW3ZhbHVlXWBgIHRvIHNldCB0aGUKKyAgICBhdXRvLWluZGVudGF0aW9uIGJl
aGF2aW9yIGZvciBhbGwgbG9nZ2luZy4KKworICAgIGBgW3ZhbHVlXWBgIGNhbiBiZToKKyAgICAg
ICAgKiBUcnVlIG9yICJPbiIgLSBEeW5hbWljYWxseSBhdXRvLWluZGVudCBtdWx0aWxpbmUgbG9n
IG1lc3NhZ2VzCisgICAgICAgICogRmFsc2Ugb3IgIk9mZiIgb3IgMCAtIERvIG5vdCBhdXRvLWlu
ZGVudCBtdWx0aWxpbmUgbG9nIG1lc3NhZ2VzICh0aGUgZGVmYXVsdCBiZWhhdmlvcikKKyAgICAg
ICAgKiBbcG9zaXRpdmUgaW50ZWdlcl0gLSBhdXRvLWluZGVudCBtdWx0aWxpbmUgbG9nIG1lc3Nh
Z2VzIGJ5IFt2YWx1ZV0gc3BhY2VzCisKKyAgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAg
ICAgW3B5dGVzdF0KKyAgICAgICAgbG9nX2F1dG9faW5kZW50ID0gRmFsc2UKKworICAgIFN1cHBv
cnRzIHBhc3Npbmcga3dhcmcgYGBleHRyYT17ImF1dG9faW5kZW50IjogW3ZhbHVlXX1gYCB0bwor
ICAgIGNhbGxzIHRvIGBgbG9nZ2luZy5sb2coKWBgIHRvIHNwZWNpZnkgYXV0by1pbmRlbnRhdGlv
biBiZWhhdmlvciBmb3IKKyAgICBhIHNwZWNpZmljIGVudHJ5IGluIHRoZSBsb2cuIGBgZXh0cmFg
YCBrd2FyZyBvdmVycmlkZXMgdGhlIHZhbHVlIHNwZWNpZmllZAorICAgIG9uIHRoZSBjb21tYW5k
IGxpbmUgb3IgaW4gdGhlIGNvbmZpZy4KKworLi4gY29uZnZhbDo6IGxvZ19jbGkKKworICAgIEVu
YWJsZSBsb2cgZGlzcGxheSBkdXJpbmcgdGVzdCBydW4gKGFsc28ga25vd24gYXMgOnJlZjpgImxp
dmUgbG9nZ2luZyIgPGxpdmVfbG9ncz5gKS4KKyAgICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAu
CisKKyAgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAg
bG9nX2NsaSA9IFRydWUKIAogLi4gY29uZnZhbDo6IGxvZ19jbGlfZGF0ZV9mb3JtYXQKIAotICAg
IC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKICAgICBTZXRzIGEgOnB5OmZ1bmM6YHRpbWUuc3Ry
ZnRpbWVgLWNvbXBhdGlibGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gZm9ybWF0dGlu
ZyBkYXRlcyBmb3IgbGl2ZSBsb2dnaW5nLgogCkBAIC0xMDEwLDcgKzEzNDAsNyBAQCBwYXNzZWQg
bXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZv
ciBleGFtcGxlOjoKIAogLi4gY29uZnZhbDo6IGxvZ19jbGlfZm9ybWF0CiAKLSAgICAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0cyBhIDpweTptb2Q6YGxvZ2dpbmdgLWNvbXBhdGli
bGUgc3RyaW5nIHVzZWQgdG8gZm9ybWF0IGxpdmUgbG9nZ2luZyBtZXNzYWdlcy4KIApAQCAtMTAy
NCw3ICsxMzU0LDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0
IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2YWw6OiBsb2dfY2xp
X2xldmVsCiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0cyB0aGUgbWlu
aW11bSBsb2cgbWVzc2FnZSBsZXZlbCB0aGF0IHNob3VsZCBiZSBjYXB0dXJlZCBmb3IgbGl2ZSBs
b2dnaW5nLiBUaGUgaW50ZWdlciB2YWx1ZSBvcgogICAgIHRoZSBuYW1lcyBvZiB0aGUgbGV2ZWxz
IGNhbiBiZSB1c2VkLgpAQCAtMTAzOSw3ICsxMzY5LDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVz
LiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAK
IC4uIGNvbmZ2YWw6OiBsb2dfZGF0ZV9mb3JtYXQKIAotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMu
MworCiAKICAgICBTZXRzIGEgOnB5OmZ1bmM6YHRpbWUuc3RyZnRpbWVgLWNvbXBhdGlibGUgc3Ry
aW5nIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gZm9ybWF0dGluZyBkYXRlcyBmb3IgbG9nZ2luZyBj
YXB0dXJlLgogCkBAIC0xMDUzLDcgKzEzODMsNyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRo
ZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAogLi4g
Y29uZnZhbDo6IGxvZ19maWxlCiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAg
U2V0cyBhIGZpbGUgbmFtZSByZWxhdGl2ZSB0byB0aGUgYGBweXRlc3QuaW5pYGAgZmlsZSB3aGVy
ZSBsb2cgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8sIGluIGFkZGl0aW9uCiAgICAgdG8g
dGhlIG90aGVyIGxvZ2dpbmcgZmFjaWxpdGllcyB0aGF0IGFyZSBhY3RpdmUuCkBAIC0xMDY4LDcg
KzEzOTgsNyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMg
YGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAogLi4gY29uZnZhbDo6IGxvZ19maWxlX2Rh
dGVfZm9ybWF0CiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0cyBhIDpw
eTpmdW5jOmB0aW1lLnN0cmZ0aW1lYC1jb21wYXRpYmxlIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNl
ZCB3aGVuIGZvcm1hdHRpbmcgZGF0ZXMgZm9yIHRoZSBsb2dnaW5nIGZpbGUuCiAKQEAgLTEwODEs
NyArMTQxMSw3IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBp
cyBgYG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogCiAuLiBjb25mdmFsOjogbG9nX2ZpbGVf
Zm9ybWF0CiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0cyBhIDpweTpt
b2Q6YGxvZ2dpbmdgLWNvbXBhdGlibGUgc3RyaW5nIHVzZWQgdG8gZm9ybWF0IGxvZ2dpbmcgbWVz
c2FnZXMgcmVkaXJlY3RlZCB0byB0aGUgbG9nZ2luZyBmaWxlLgogCkBAIC0xMDk0LDcgKzE0MjQs
NyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1l
PXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAogLi4gY29uZnZhbDo6IGxvZ19maWxlX2xldmVsCiAK
LSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0cyB0aGUgbWluaW11bSBsb2cg
bWVzc2FnZSBsZXZlbCB0aGF0IHNob3VsZCBiZSBjYXB0dXJlZCBmb3IgdGhlIGxvZ2dpbmcgZmls
ZS4gVGhlIGludGVnZXIgdmFsdWUgb3IKICAgICB0aGUgbmFtZXMgb2YgdGhlIGxldmVscyBjYW4g
YmUgdXNlZC4KQEAgLTExMDksNyArMTQzOSw3IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhl
IGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogCiAuLiBj
b25mdmFsOjogbG9nX2Zvcm1hdAogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogICAg
IFNldHMgYSA6cHk6bW9kOmBsb2dnaW5nYC1jb21wYXRpYmxlIHN0cmluZyB1c2VkIHRvIGZvcm1h
dCBjYXB0dXJlZCBsb2dnaW5nIG1lc3NhZ2VzLgogCkBAIC0xMTIzLDcgKzE0NTMsNyBAQCBwYXNz
ZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAu
IEZvciBleGFtcGxlOjoKIAogLi4gY29uZnZhbDo6IGxvZ19sZXZlbAogCi0gICAgLi4gdmVyc2lv
bmFkZGVkOjogMy4zCisKIAogICAgIFNldHMgdGhlIG1pbmltdW0gbG9nIG1lc3NhZ2UgbGV2ZWwg
dGhhdCBzaG91bGQgYmUgY2FwdHVyZWQgZm9yIGxvZ2dpbmcgY2FwdHVyZS4gVGhlIGludGVnZXIg
dmFsdWUgb3IKICAgICB0aGUgbmFtZXMgb2YgdGhlIGxldmVscyBjYW4gYmUgdXNlZC4KQEAgLTEx
MzYsMzIgKzE0NjYsMjggQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9y
bWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAgICAgRm9yIG1vcmUgaW5mb3Jt
YXRpb24sIHNlZSA6cmVmOmBsb2dnaW5nYC4KIAogCi0uLiBjb25mdmFsOjogbG9nX3ByaW50Ci0K
LSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotICAgIElmIHNldCB0byBgYEZhbHNlYGAsIHdp
bGwgZGlzYWJsZSBkaXNwbGF5aW5nIGNhcHR1cmVkIGxvZ2dpbmcgbWVzc2FnZXMgZm9yIGZhaWxl
ZCB0ZXN0cy4KLQotICAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKLQotICAgICAgICBbcHl0ZXN0XQot
ICAgICAgICBsb2dfcHJpbnQgPSBGYWxzZQotCi0gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNl
ZSA6cmVmOmBsb2dnaW5nYC4KLQotCiAuLiBjb25mdmFsOjogbWFya2VycwogCi0gICAgTGlzdCBv
ZiBtYXJrZXJzIHRoYXQgYXJlIGFsbG93ZWQgaW4gdGVzdCBmdW5jdGlvbnMsIGVuZm9yY2VkIHdo
ZW4gYGAtLXN0cmljdGBgIGNvbW1hbmQtbGluZSBhcmd1bWVudCBpcyB1c2VkLgotICAgIFlvdSBj
YW4gdXNlIGEgbWFya2VyIG5hbWUgcGVyIGxpbmUsIGluZGVudGVkIGZyb20gdGhlIG9wdGlvbiBu
YW1lLgorICAgIFdoZW4gdGhlIGBgLS1zdHJpY3QtbWFya2Vyc2BgIG9yIGBgLS1zdHJpY3RgYCBj
b21tYW5kLWxpbmUgYXJndW1lbnRzIGFyZSB1c2VkLAorICAgIG9ubHkga25vd24gbWFya2VycyAt
IGRlZmluZWQgaW4gY29kZSBieSBjb3JlIHB5dGVzdCBvciBzb21lIHBsdWdpbiAtIGFyZSBhbGxv
d2VkLgorCisgICAgWW91IGNhbiBsaXN0IGFkZGl0aW9uYWwgbWFya2VycyBpbiB0aGlzIHNldHRp
bmcgdG8gYWRkIHRoZW0gdG8gdGhlIHdoaXRlbGlzdCwKKyAgICBpbiB3aGljaCBjYXNlIHlvdSBw
cm9iYWJseSB3YW50IHRvIGFkZCBgYC0tc3RyaWN0LW1hcmtlcnNgYCB0byBgYGFkZG9wdHNgYAor
ICAgIHRvIGF2b2lkIGZ1dHVyZSByZWdyZXNzaW9uczoKIAogICAgIC4uIGNvZGUtYmxvY2s6OiBp
bmkKIAogICAgICAgICBbcHl0ZXN0XQorICAgICAgICBhZGRvcHRzID0gLS1zdHJpY3QtbWFya2Vy
cwogICAgICAgICBtYXJrZXJzID0KICAgICAgICAgICAgIHNsb3cKICAgICAgICAgICAgIHNlcmlh
bAogCisgICAgLi4gbm90ZTo6CisgICAgICAgIFRoZSB1c2Ugb2YgYGAtLXN0cmljdC1tYXJrZXJz
YGAgaXMgaGlnaGx5IHByZWZlcnJlZC4gYGAtLXN0cmljdGBgIHdhcyBrZXB0IGZvcgorICAgICAg
ICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHkgYW5kIG1heSBiZSBjb25mdXNpbmcgZm9yIG90
aGVycyBhcyBpdCBvbmx5IGFwcGxpZXMgdG8KKyAgICAgICAgbWFya2VycyBhbmQgbm90IHRvIG90
aGVyIG9wdGlvbnMuCisKIC4uIGNvbmZ2YWw6OiBtaW52ZXJzaW9uCiAKICAgIFNwZWNpZmllcyBh
IG1pbmltYWwgcHl0ZXN0IHZlcnNpb24gcmVxdWlyZWQgZm9yIHJ1bm5pbmcgdGVzdHMuCkBAIC0x
MjEwLDcgKzE1MzYsOCBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3Jt
YXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIC4uIGNvbmZ2YWw6OiBweXRob25f
Y2xhc3NlcwogCiAgICBPbmUgb3IgbW9yZSBuYW1lIHByZWZpeGVzIG9yIGdsb2Itc3R5bGUgcGF0
dGVybnMgZGV0ZXJtaW5pbmcgd2hpY2ggY2xhc3NlcwotICAgYXJlIGNvbnNpZGVyZWQgZm9yIHRl
c3QgY29sbGVjdGlvbi4gQnkgZGVmYXVsdCwgcHl0ZXN0IHdpbGwgY29uc2lkZXIgYW55CisgICBh
cmUgY29uc2lkZXJlZCBmb3IgdGVzdCBjb2xsZWN0aW9uLiBTZWFyY2ggZm9yIG11bHRpcGxlIGds
b2IgcGF0dGVybnMgYnkKKyAgIGFkZGluZyBhIHNwYWNlIGJldHdlZW4gcGF0dGVybnMuIEJ5IGRl
ZmF1bHQsIHB5dGVzdCB3aWxsIGNvbnNpZGVyIGFueQogICAgY2xhc3MgcHJlZml4ZWQgd2l0aCBg
YFRlc3RgYCBhcyBhIHRlc3QgY29sbGVjdGlvbi4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBob3cK
ICAgIHRvIGNvbGxlY3QgdGVzdHMgZnJvbSBjbGFzc2VzIHRoYXQgZW5kIGluIGBgU3VpdGVgYDoK
IApAQCAtMTIyNywxNSArMTU1NCwzMyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBl
Y3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIC4uIGNvbmZ2YWw6
OiBweXRob25fZmlsZXMKIAogICAgT25lIG9yIG1vcmUgR2xvYi1zdHlsZSBmaWxlIHBhdHRlcm5z
IGRldGVybWluaW5nIHdoaWNoIHB5dGhvbiBmaWxlcwotICAgYXJlIGNvbnNpZGVyZWQgYXMgdGVz
dCBtb2R1bGVzLiBCeSBkZWZhdWx0LCBweXRlc3Qgd2lsbCBjb25zaWRlcgotICAgYW55IGZpbGUg
bWF0Y2hpbmcgd2l0aCBgYHRlc3RfKi5weWBgIGFuZCBgYCpfdGVzdC5weWBgIGdsb2JzIGFzIGEg
dGVzdAotICAgbW9kdWxlLgorICAgYXJlIGNvbnNpZGVyZWQgYXMgdGVzdCBtb2R1bGVzLiBTZWFy
Y2ggZm9yIG11bHRpcGxlIGdsb2IgcGF0dGVybnMgYnkKKyAgIGFkZGluZyBhIHNwYWNlIGJldHdl
ZW4gcGF0dGVybnM6CisKKyAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgICBbcHl0ZXN0
XQorICAgICAgICBweXRob25fZmlsZXMgPSB0ZXN0XyoucHkgY2hlY2tfKi5weSBleGFtcGxlXyou
cHkKKworICAgT3Igb25lIHBlciBsaW5lOgorCisgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAg
ICAgICAgW3B5dGVzdF0KKyAgICAgICAgcHl0aG9uX2ZpbGVzID0KKyAgICAgICAgICAgIHRlc3Rf
Ki5weQorICAgICAgICAgICAgY2hlY2tfKi5weQorICAgICAgICAgICAgZXhhbXBsZV8qLnB5CisK
KyAgIEJ5IGRlZmF1bHQsIGZpbGVzIG1hdGNoaW5nIGBgdGVzdF8qLnB5YGAgYW5kIGBgKl90ZXN0
LnB5YGAgd2lsbCBiZSBjb25zaWRlcmVkCisgICB0ZXN0IG1vZHVsZXMuCiAKIAogLi4gY29uZnZh
bDo6IHB5dGhvbl9mdW5jdGlvbnMKIAogICAgT25lIG9yIG1vcmUgbmFtZSBwcmVmaXhlcyBvciBn
bG9iLXBhdHRlcm5zIGRldGVybWluaW5nIHdoaWNoIHRlc3QgZnVuY3Rpb25zCi0gICBhbmQgbWV0
aG9kcyBhcmUgY29uc2lkZXJlZCB0ZXN0cy4gQnkgZGVmYXVsdCwgcHl0ZXN0IHdpbGwgY29uc2lk
ZXIgYW55CisgICBhbmQgbWV0aG9kcyBhcmUgY29uc2lkZXJlZCB0ZXN0cy4gU2VhcmNoIGZvciBt
dWx0aXBsZSBnbG9iIHBhdHRlcm5zIGJ5CisgICBhZGRpbmcgYSBzcGFjZSBiZXR3ZWVuIHBhdHRl
cm5zLiBCeSBkZWZhdWx0LCBweXRlc3Qgd2lsbCBjb25zaWRlciBhbnkKICAgIGZ1bmN0aW9uIHBy
ZWZpeGVkIHdpdGggYGB0ZXN0YGAgYXMgYSB0ZXN0LiAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGhv
dwogICAgdG8gY29sbGVjdCB0ZXN0IGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IGVuZCBpbiBg
YF90ZXN0YGA6CiAKQEAgLTEyNTEsOSArMTU5NiwyMiBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMu
IFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKICAg
IFNlZSA6cmVmOmBjaGFuZ2UgbmFtaW5nIGNvbnZlbnRpb25zYCBmb3IgbW9yZSBkZXRhaWxlZCBl
eGFtcGxlcy4KIAogCisuLiBjb25mdmFsOjogcmVxdWlyZWRfcGx1Z2lucworCisgICBBIHNwYWNl
IHNlcGFyYXRlZCBsaXN0IG9mIHBsdWdpbnMgdGhhdCBtdXN0IGJlIHByZXNlbnQgZm9yIHB5dGVz
dCB0byBydW4uCisgICBQbHVnaW5zIGNhbiBiZSBsaXN0ZWQgd2l0aCBvciB3aXRob3V0IHZlcnNp
b24gc3BlY2lmaWVycyBkaXJlY3RseSBmb2xsb3dpbmcKKyAgIHRoZWlyIG5hbWUuIFdoaXRlc3Bh
Y2UgYmV0d2VlbiBkaWZmZXJlbnQgdmVyc2lvbiBzcGVjaWZpZXJzIGlzIG5vdCBhbGxvd2VkLgor
ICAgSWYgYW55IG9uZSBvZiB0aGUgcGx1Z2lucyBpcyBub3QgZm91bmQsIGVtaXQgYW4gZXJyb3Iu
CisKKyAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgIFtweXRlc3RdCisgICAgICAgcmVx
dWlyZWRfcGx1Z2lucyA9IHB5dGVzdC1kamFuZ28+PTMuMC4wLDw0LjAuMCBweXRlc3QtaHRtbCBw
eXRlc3QteGRpc3Q+PTEuMC4wCisKKwogLi4gY29uZnZhbDo6IHRlc3RwYXRocwogCi0gICAuLiB2
ZXJzaW9uYWRkZWQ6OiAyLjgKKwogCiAgICBTZXRzIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCBz
aG91bGQgYmUgc2VhcmNoZWQgZm9yIHRlc3RzIHdoZW4KICAgIG5vIHNwZWNpZmljIGRpcmVjdG9y
aWVzLCBmaWxlcyBvciB0ZXN0IGlkcyBhcmUgZ2l2ZW4gaW4gdGhlIGNvbW1hbmQgbGluZSB3aGVu
CkBAIC0xMjk0LDMgKzE2NTIsMjk2IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVj
dGVkIGZvcm1hdCBpcyBgYG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogCiAgICAgICAgIFtw
eXRlc3RdCiAgICAgICAgIHhmYWlsX3N0cmljdCA9IFRydWUKKworCisuLiBfYGNvbW1hbmQtbGlu
ZS1mbGFnc2A6CisKK0NvbW1hbmQtbGluZSBGbGFncworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fs
bCB0aGUgY29tbWFuZC1saW5lIGZsYWdzIGNhbiBiZSBvYnRhaW5lZCBieSBydW5uaW5nIGBgcHl0
ZXN0IC0taGVscGBgOjoKKworICAgICQgcHl0ZXN0IC0taGVscAorICAgIHVzYWdlOiBweXRlc3Qg
W29wdGlvbnNdIFtmaWxlX29yX2Rpcl0gW2ZpbGVfb3JfZGlyXSBbLi4uXQorCisgICAgcG9zaXRp
b25hbCBhcmd1bWVudHM6CisgICAgICBmaWxlX29yX2RpcgorCisgICAgZ2VuZXJhbDoKKyAgICAg
IC1rIEVYUFJFU1NJT04gICAgICAgICBvbmx5IHJ1biB0ZXN0cyB3aGljaCBtYXRjaCB0aGUgZ2l2
ZW4gc3Vic3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi4gQW4g
ZXhwcmVzc2lvbiBpcyBhIHB5dGhvbiBldmFsdWF0YWJsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb24gd2hlcmUgYWxsIG5hbWVzIGFyZSBzdWJzdHJpbmctbWF0Y2hlZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgdGVzdCBuYW1lcyBhbmQgdGhlaXIg
cGFyZW50IGNsYXNzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZTogLWsg
J3Rlc3RfbWV0aG9kIG9yIHRlc3Rfb3RoZXInIG1hdGNoZXMgYWxsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdCBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgd2hvc2UgbmFtZSBjb250YWlu
cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X21ldGhvZCcgb3IgJ3Rlc3Rfb3Ro
ZXInLCB3aGlsZSAtayAnbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRo
b2QnIG1hdGNoZXMgdGhvc2UgdGhhdCBkb24ndCBjb250YWluCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RfbWV0aG9kJyBpbiB0aGVpciBuYW1lcy4gLWsgJ25vdCB0ZXN0X21ldGhv
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgdGVzdF9vdGhlcicgd2lsbCBl
bGltaW5hdGUgdGhlIG1hdGNoZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRp
b25hbGx5IGtleXdvcmRzIGFyZSBtYXRjaGVkIHRvIGNsYXNzZXMgYW5kCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb25zIGNvbnRhaW5pbmcgZXh0cmEgbmFtZXMgaW4gdGhlaXIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFfa2V5d29yZF9tYXRjaGVzJyBzZXQs
IGFzIHdlbGwgYXMgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2gg
aGF2ZSBuYW1lcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVtLiBUaGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGluZyBpcyBjYXNlLWluc2Vuc2l0aXZlLgorICAgICAgLW0gTUFS
S0VYUFIgICAgICAgICAgIG9ubHkgcnVuIHRlc3RzIG1hdGNoaW5nIGdpdmVuIG1hcmsgZXhwcmVz
c2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZTogLW0gJ21hcmsx
IGFuZCBub3QgbWFyazInLgorICAgICAgLS1tYXJrZXJzICAgICAgICAgICAgIHNob3cgbWFya2Vy
cyAoYnVpbHRpbiwgcGx1Z2luIGFuZCBwZXItcHJvamVjdCBvbmVzKS4KKyAgICAgIC14LCAtLWV4
aXRmaXJzdCAgICAgICBleGl0IGluc3RhbnRseSBvbiBmaXJzdCBlcnJvciBvciBmYWlsZWQgdGVz
dC4KKyAgICAgIC0tZml4dHVyZXMsIC0tZnVuY2FyZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaG93IGF2YWlsYWJsZSBmaXh0dXJlcywgc29ydGVkIGJ5IHBsdWdpbiBhcHBlYXJhbmNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpeHR1cmVzIHdpdGggbGVhZGluZyAnXycg
YXJlIG9ubHkgc2hvd24gd2l0aCAnLXYnKQorICAgICAgLS1maXh0dXJlcy1wZXItdGVzdCAgIHNo
b3cgZml4dHVyZXMgcGVyIHRlc3QKKyAgICAgIC0tcGRiICAgICAgICAgICAgICAgICBzdGFydCB0
aGUgaW50ZXJhY3RpdmUgUHl0aG9uIGRlYnVnZ2VyIG9uIGVycm9ycyBvcgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtleWJvYXJkSW50ZXJydXB0LgorICAgICAgLS1wZGJjbHM9bW9kdWxl
bmFtZTpjbGFzc25hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBhIGN1c3Rv
bSBpbnRlcmFjdGl2ZSBQeXRob24gZGVidWdnZXIgb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcnMuIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t
cGRiY2xzPUlQeXRob24udGVybWluYWwuZGVidWdnZXI6VGVybWluYWxQZGIKKyAgICAgIC0tdHJh
Y2UgICAgICAgICAgICAgICBJbW1lZGlhdGVseSBicmVhayB3aGVuIHJ1bm5pbmcgZWFjaCB0ZXN0
LgorICAgICAgLS1jYXB0dXJlPW1ldGhvZCAgICAgIHBlci10ZXN0IGNhcHR1cmluZyBtZXRob2Q6
IG9uZSBvZiBmZHxzeXN8bm98dGVlLXN5cy4KKyAgICAgIC1zICAgICAgICAgICAgICAgICAgICBz
aG9ydGN1dCBmb3IgLS1jYXB0dXJlPW5vLgorICAgICAgLS1ydW54ZmFpbCAgICAgICAgICAgIHJl
cG9ydCB0aGUgcmVzdWx0cyBvZiB4ZmFpbCB0ZXN0cyBhcyBpZiB0aGV5IHdlcmUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub3QgbWFya2VkCisgICAgICAtLWxmLCAtLWxhc3QtZmFpbGVk
ICAgcmVydW4gb25seSB0aGUgdGVzdHMgdGhhdCBmYWlsZWQgYXQgdGhlIGxhc3QgcnVuIChvcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBpZiBub25lIGZhaWxlZCkKKyAgICAgIC0t
ZmYsIC0tZmFpbGVkLWZpcnN0ICBydW4gYWxsIHRlc3RzLCBidXQgcnVuIHRoZSBsYXN0IGZhaWx1
cmVzIGZpcnN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWF5IHJlLW9yZGVy
IHRlc3RzIGFuZCB0aHVzIGxlYWQgdG8gcmVwZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXh0dXJlIHNldHVwL3RlYXJkb3duLgorICAgICAgLS1uZiwgLS1uZXctZmlyc3QgICAg
IHJ1biB0ZXN0cyBmcm9tIG5ldyBmaWxlcyBmaXJzdCwgdGhlbiB0aGUgcmVzdCBvZiB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyBzb3J0ZWQgYnkgZmlsZSBtdGltZQorICAg
ICAgLS1jYWNoZS1zaG93PVtDQUNIRVNIT1ddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdyBjYWNoZSBjb250ZW50cywgZG9uJ3QgcGVyZm9ybSBjb2xsZWN0aW9uIG9yCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdHMuIE9wdGlvbmFsIGFyZ3VtZW50OiBnbG9iIChkZWZh
dWx0OiAnKicpLgorICAgICAgLS1jYWNoZS1jbGVhciAgICAgICAgIHJlbW92ZSBhbGwgY2FjaGUg
Y29udGVudHMgYXQgc3RhcnQgb2YgdGVzdCBydW4uCisgICAgICAtLWxmbmY9e2FsbCxub25lfSwg
LS1sYXN0LWZhaWxlZC1uby1mYWlsdXJlcz17YWxsLG5vbmV9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpY2ggdGVzdHMgdG8gcnVuIHdpdGggbm8gcHJldmlvdXNseSAoa25vd24pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXMuCisgICAgICAtLXN3LCAtLXN0ZXB3
aXNlICAgICAgZXhpdCBvbiB0ZXN0IGZhaWx1cmUgYW5kIGNvbnRpbnVlIGZyb20gbGFzdCBmYWls
aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBuZXh0IHRpbWUKKyAgICAgIC0t
c3RlcHdpc2Utc2tpcCAgICAgICBpZ25vcmUgdGhlIGZpcnN0IGZhaWxpbmcgdGVzdCBidXQgc3Rv
cCBvbiB0aGUgbmV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxpbmcgdGVzdAor
CisgICAgcmVwb3J0aW5nOgorICAgICAgLS1kdXJhdGlvbnM9TiAgICAgICAgIHNob3cgTiBzbG93
ZXN0IHNldHVwL3Rlc3QgZHVyYXRpb25zIChOPTAgZm9yIGFsbCkuCisgICAgICAtLWR1cmF0aW9u
cy1taW49TiAgICAgTWluaW1hbCBkdXJhdGlvbiBpbiBzZWNvbmRzIGZvciBpbmNsdXNpb24gaW4g
c2xvd2VzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuIERlZmF1bHQgMC4wMDUK
KyAgICAgIC12LCAtLXZlcmJvc2UgICAgICAgICBpbmNyZWFzZSB2ZXJib3NpdHkuCisgICAgICAt
LW5vLWhlYWRlciAgICAgICAgICAgZGlzYWJsZSBoZWFkZXIKKyAgICAgIC0tbm8tc3VtbWFyeSAg
ICAgICAgICBkaXNhYmxlIHN1bW1hcnkKKyAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBkZWNy
ZWFzZSB2ZXJib3NpdHkuCisgICAgICAtLXZlcmJvc2l0eT1WRVJCT1NFICAgc2V0IHZlcmJvc2l0
eS4gRGVmYXVsdCBpcyAwLgorICAgICAgLXIgY2hhcnMgICAgICAgICAgICAgIHNob3cgZXh0cmEg
dGVzdCBzdW1tYXJ5IGluZm8gYXMgc3BlY2lmaWVkIGJ5IGNoYXJzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChmKWFpbGVkLCAoRSlycm9yLCAocylraXBwZWQsICh4KWZhaWxlZCwgKFgp
cGFzc2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwKWFzc2VkLCAoUClhc3NlZCB3
aXRoIG91dHB1dCwgKGEpbGwgZXhjZXB0IHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChwL1ApLCBvciAoQSlsbC4gKHcpYXJuaW5ncyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlZSAtLWRpc2FibGUtd2FybmluZ3MpLCAnTicg
Y2FuIGJlIHVzZWQgdG8gcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGlz
dC4gKGRlZmF1bHQ6ICdmRScpLgorICAgICAgLS1kaXNhYmxlLXdhcm5pbmdzLCAtLWRpc2FibGUt
cHl0ZXN0LXdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSB3YXJu
aW5ncyBzdW1tYXJ5CisgICAgICAtbCwgLS1zaG93bG9jYWxzICAgICAgc2hvdyBsb2NhbHMgaW4g
dHJhY2ViYWNrcyAoZGlzYWJsZWQgYnkgZGVmYXVsdCkuCisgICAgICAtLXRiPXN0eWxlICAgICAg
ICAgICAgdHJhY2ViYWNrIHByaW50IG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YXV0by9sb25nL3Nob3J0L2xpbmUvbmF0aXZlL25vKS4KKyAgICAgIC0tc2hvdy1jYXB0dXJlPXtu
byxzdGRvdXQsc3RkZXJyLGxvZyxhbGx9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29u
dHJvbHMgaG93IGNhcHR1cmVkIHN0ZG91dC9zdGRlcnIvbG9nIGlzIHNob3duIG9uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFpbGVkIHRlc3RzLiBEZWZhdWx0IGlzICdhbGwnLgorICAg
ICAgLS1mdWxsLXRyYWNlICAgICAgICAgIGRvbid0IGN1dCBhbnkgdHJhY2ViYWNrcyAoZGVmYXVs
dCBpcyB0byBjdXQpLgorICAgICAgLS1jb2xvcj1jb2xvciAgICAgICAgIGNvbG9yIHRlcm1pbmFs
IG91dHB1dCAoeWVzL25vL2F1dG8pLgorICAgICAgLS1jb2RlLWhpZ2hsaWdodD17eWVzLG5vfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZXRoZXIgY29kZSBzaG91bGQgYmUgaGlnaGxp
Z2h0ZWQgKG9ubHkgaWYgLS1jb2xvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFs
c28gZW5hYmxlZCkKKyAgICAgIC0tcGFzdGViaW49bW9kZSAgICAgICBzZW5kIGZhaWxlZHxhbGwg
aW5mbyB0byBicGFzdGUubmV0IHBhc3RlYmluIHNlcnZpY2UuCisgICAgICAtLWp1bml0LXhtbD1w
YXRoICAgICAgY3JlYXRlIGp1bml0LXhtbCBzdHlsZSByZXBvcnQgZmlsZSBhdCBnaXZlbiBwYXRo
LgorICAgICAgLS1qdW5pdC1wcmVmaXg9c3RyICAgIHByZXBlbmQgcHJlZml4IHRvIGNsYXNzbmFt
ZXMgaW4ganVuaXQteG1sIG91dHB1dAorCisgICAgcHl0ZXN0LXdhcm5pbmdzOgorICAgICAgLVcg
UFlUSE9OV0FSTklOR1MsIC0tcHl0aG9ud2FybmluZ3M9UFlUSE9OV0FSTklOR1MKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXQgd2hpY2ggd2FybmluZ3MgdG8gcmVwb3J0LCBzZWUgLVcg
b3B0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uIGl0c2VsZi4KKyAg
ICAgIC0tbWF4ZmFpbD1udW0gICAgICAgICBleGl0IGFmdGVyIGZpcnN0IG51bSBmYWlsdXJlcyBv
ciBlcnJvcnMuCisgICAgICAtLXN0cmljdC1jb25maWcgICAgICAgYW55IHdhcm5pbmdzIGVuY291
bnRlcmVkIHdoaWxlIHBhcnNpbmcgdGhlIGBweXRlc3RgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VjdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJhaXNlIGVycm9ycy4KKyAg
ICAgIC0tc3RyaWN0LW1hcmtlcnMsIC0tc3RyaWN0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWFya2VycyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUgYG1hcmtlcnNgIHNlY3Rpb24gb2YKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJhaXNlIGVy
cm9ycy4KKyAgICAgIC1jIGZpbGUgICAgICAgICAgICAgICBsb2FkIGNvbmZpZ3VyYXRpb24gZnJv
bSBgZmlsZWAgaW5zdGVhZCBvZiB0cnlpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGUgb25lIG9mIHRoZSBpbXBsaWNpdCBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAg
LS1jb250aW51ZS1vbi1jb2xsZWN0aW9uLWVycm9ycworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZvcmNlIHRlc3QgZXhlY3V0aW9uIGV2ZW4gaWYgY29sbGVjdGlvbiBlcnJvcnMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvY2N1ci4KKyAgICAgIC0tcm9vdGRpcj1ST09URElSICAg
ICBEZWZpbmUgcm9vdCBkaXJlY3RvcnkgZm9yIHRlc3RzLiBDYW4gYmUgcmVsYXRpdmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAncm9vdF9kaXInLCAnLi9yb290X2RpcicsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3RfZGlyL2Fub3RoZXJfZGlyLyc7IGFic29s
dXRlIHBhdGg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9ob21lL3VzZXIvcm9vdF9k
aXInOyBwYXRoIHdpdGggdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICck
SE9NRS9yb290X2RpcicuCisKKyAgICBjb2xsZWN0aW9uOgorICAgICAgLS1jb2xsZWN0LW9ubHks
IC0tY28gIG9ubHkgY29sbGVjdCB0ZXN0cywgZG9uJ3QgZXhlY3V0ZSB0aGVtLgorICAgICAgLS1w
eWFyZ3MgICAgICAgICAgICAgIHRyeSB0byBpbnRlcnByZXQgYWxsIGFyZ3VtZW50cyBhcyBweXRo
b24gcGFja2FnZXMuCisgICAgICAtLWlnbm9yZT1wYXRoICAgICAgICAgaWdub3JlIHBhdGggZHVy
aW5nIGNvbGxlY3Rpb24gKG11bHRpLWFsbG93ZWQpLgorICAgICAgLS1pZ25vcmUtZ2xvYj1wYXRo
ICAgIGlnbm9yZSBwYXRoIHBhdHRlcm4gZHVyaW5nIGNvbGxlY3Rpb24gKG11bHRpLQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpLgorICAgICAgLS1kZXNlbGVjdD1ub2RlaWRf
cHJlZml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzZWxlY3QgaXRlbSAodmlhIG5v
ZGUgaWQgcHJlZml4KSBkdXJpbmcgY29sbGVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChtdWx0aS1hbGxvd2VkKS4KKyAgICAgIC0tY29uZmN1dGRpcj1kaXIgICAgICBvbmx5IGxv
YWQgY29uZnRlc3QucHkncyByZWxhdGl2ZSB0byBzcGVjaWZpZWQgZGlyLgorICAgICAgLS1ub2Nv
bmZ0ZXN0ICAgICAgICAgIERvbid0IGxvYWQgYW55IGNvbmZ0ZXN0LnB5IGZpbGVzLgorICAgICAg
LS1rZWVwLWR1cGxpY2F0ZXMgICAgIEtlZXAgZHVwbGljYXRlIHRlc3RzLgorICAgICAgLS1jb2xs
ZWN0LWluLXZpcnR1YWxlbnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBpZ25v
cmUgdGVzdHMgaW4gYSBsb2NhbCB2aXJ0dWFsZW52IGRpcmVjdG9yeQorICAgICAgLS1pbXBvcnQt
bW9kZT17cHJlcGVuZCxhcHBlbmQsaW1wb3J0bGlifQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXBlbmQvYXBwZW5kIHRvIHN5cy5wYXRoIHdoZW4gaW1wb3J0aW5nIHRlc3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIGFuZCBjb25mdGVzdCBmaWxlcywgZGVmYXVs
dCBpcyB0byBwcmVwZW5kLgorICAgICAgLS1kb2N0ZXN0LW1vZHVsZXMgICAgIHJ1biBkb2N0ZXN0
cyBpbiBhbGwgLnB5IG1vZHVsZXMKKyAgICAgIC0tZG9jdGVzdC1yZXBvcnQ9e25vbmUsY2RpZmYs
bmRpZmYsdWRpZmYsb25seV9maXJzdF9mYWlsdXJlfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNob29zZSBhbm90aGVyIG91dHB1dCBmb3JtYXQgZm9yIGRpZmZzIG9uIGRvY3Rlc3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlCisgICAgICAtLWRvY3Rlc3QtZ2xvYj1w
YXQgICAgZG9jdGVzdHMgZmlsZSBtYXRjaGluZyBwYXR0ZXJuLCBkZWZhdWx0OiB0ZXN0Ki50eHQK
KyAgICAgIC0tZG9jdGVzdC1pZ25vcmUtaW1wb3J0LWVycm9ycworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlnbm9yZSBkb2N0ZXN0IEltcG9ydEVycm9ycworICAgICAgLS1kb2N0ZXN0LWNv
bnRpbnVlLW9uLWZhaWx1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYSBnaXZl
biBkb2N0ZXN0LCBjb250aW51ZSB0byBydW4gYWZ0ZXIgdGhlIGZpcnN0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbHVyZQorCisgICAgdGVzdCBzZXNzaW9uIGRlYnVnZ2luZyBhbmQg
Y29uZmlndXJhdGlvbjoKKyAgICAgIC0tYmFzZXRlbXA9ZGlyICAgICAgICBiYXNlIHRlbXBvcmFy
eSBkaXJlY3RvcnkgZm9yIHRoaXMgdGVzdCBydW4uKHdhcm5pbmc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcyBkaXJlY3RvcnkgaXMgcmVtb3ZlZCBpZiBpdCBleGlzdHMpCisgICAg
ICAtViwgLS12ZXJzaW9uICAgICAgICAgZGlzcGxheSBweXRlc3QgdmVyc2lvbiBhbmQgaW5mb3Jt
YXRpb24gYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5zLldoZW4gZ2l2
ZW4gdHdpY2UsIGFsc28gZGlzcGxheSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFib3V0IHBsdWdpbnMuCisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyBo
ZWxwIG1lc3NhZ2UgYW5kIGNvbmZpZ3VyYXRpb24gaW5mbworICAgICAgLXAgbmFtZSAgICAgICAg
ICAgICAgIGVhcmx5LWxvYWQgZ2l2ZW4gcGx1Z2luIG1vZHVsZSBuYW1lIG9yIGVudHJ5IHBvaW50
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG11bHRpLWFsbG93ZWQpLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRvIGF2b2lkIGxvYWRpbmcgb2YgcGx1Z2lucywgdXNlIHRoZSBg
bm86YCBwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiBgbm86ZG9jdGVz
dGAuCisgICAgICAtLXRyYWNlLWNvbmZpZyAgICAgICAgdHJhY2UgY29uc2lkZXJhdGlvbnMgb2Yg
Y29uZnRlc3QucHkgZmlsZXMuCisgICAgICAtLWRlYnVnICAgICAgICAgICAgICAgc3RvcmUgaW50
ZXJuYWwgdHJhY2luZyBkZWJ1ZyBpbmZvcm1hdGlvbiBpbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdweXRlc3RkZWJ1Zy5sb2cnLgorICAgICAgLW8gT1ZFUlJJREVfSU5JLCAtLW92ZXJy
aWRlLWluaT1PVkVSUklERV9JTkkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlk
ZSBpbmkgb3B0aW9uIHdpdGggIm9wdGlvbj12YWx1ZSIgc3R5bGUsIGUuZy4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBgLW8geGZhaWxfc3RyaWN0PVRydWUgLW8gY2FjaGVfZGlyPWNhY2hl
YC4KKyAgICAgIC0tYXNzZXJ0PU1PREUgICAgICAgICBDb250cm9sIGFzc2VydGlvbiBkZWJ1Z2dp
bmcgdG9vbHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYWluJyBwZXJmb3JtcyBu
byBhc3NlcnRpb24gZGVidWdnaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXdy
aXRlJyAodGhlIGRlZmF1bHQpIHJld3JpdGVzIGFzc2VydCBzdGF0ZW1lbnRzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gdGVzdCBtb2R1bGVzIG9uIGltcG9ydCB0byBwcm92aWRlIGFz
c2VydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gaW5mb3JtYXRpb24u
CisgICAgICAtLXNldHVwLW9ubHkgICAgICAgICAgb25seSBzZXR1cCBmaXh0dXJlcywgZG8gbm90
IGV4ZWN1dGUgdGVzdHMuCisgICAgICAtLXNldHVwLXNob3cgICAgICAgICAgc2hvdyBzZXR1cCBv
ZiBmaXh0dXJlcyB3aGlsZSBleGVjdXRpbmcgdGVzdHMuCisgICAgICAtLXNldHVwLXBsYW4gICAg
ICAgICAgc2hvdyB3aGF0IGZpeHR1cmVzIGFuZCB0ZXN0cyB3b3VsZCBiZSBleGVjdXRlZCBidXQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb24ndCBleGVjdXRlIGFueXRoaW5nLgorCisg
ICAgbG9nZ2luZzoKKyAgICAgIC0tbG9nLWxldmVsPUxFVkVMICAgICBsZXZlbCBvZiBtZXNzYWdl
cyB0byBjYXRjaC9kaXNwbGF5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBzZXQg
YnkgZGVmYXVsdCwgc28gaXQgZGVwZW5kcyBvbiB0aGUgcm9vdC9wYXJlbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2cgaGFuZGxlcidzIGVmZmVjdGl2ZSBsZXZlbCwgd2hlcmUgaXQg
aXMgIldBUk5JTkciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdC4KKyAg
ICAgIC0tbG9nLWZvcm1hdD1MT0dfRk9STUFUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9nIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4KKyAgICAgIC0tbG9nLWRh
dGUtZm9ybWF0PUxPR19EQVRFX0ZPUk1BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
ZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4KKyAgICAgIC0tbG9n
LWNsaS1sZXZlbD1MT0dfQ0xJX0xFVkVMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
IGxvZ2dpbmcgbGV2ZWwuCisgICAgICAtLWxvZy1jbGktZm9ybWF0PUxPR19DTElfRk9STUFUCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dn
aW5nIG1vZHVsZS4KKyAgICAgIC0tbG9nLWNsaS1kYXRlLWZvcm1hdD1MT0dfQ0xJX0RBVEVfRk9S
TUFUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nIGRhdGUgZm9ybWF0IGFzIHVzZWQg
YnkgdGhlIGxvZ2dpbmcgbW9kdWxlLgorICAgICAgLS1sb2ctZmlsZT1MT0dfRklMRSAgIHBhdGgg
dG8gYSBmaWxlIHdoZW4gbG9nZ2luZyB3aWxsIGJlIHdyaXR0ZW4gdG8uCisgICAgICAtLWxvZy1m
aWxlLWxldmVsPUxPR19GSUxFX0xFVkVMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
IGZpbGUgbG9nZ2luZyBsZXZlbC4KKyAgICAgIC0tbG9nLWZpbGUtZm9ybWF0PUxPR19GSUxFX0ZP
Uk1BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyBmb3JtYXQgYXMgdXNlZCBieSB0
aGUgbG9nZ2luZyBtb2R1bGUuCisgICAgICAtLWxvZy1maWxlLWRhdGUtZm9ybWF0PUxPR19GSUxF
X0RBVEVfRk9STUFUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nIGRhdGUgZm9ybWF0
IGFzIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlLgorICAgICAgLS1sb2ctYXV0by1pbmRlbnQ9
TE9HX0FVVE9fSU5ERU5UCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0by1pbmRlbnQg
bXVsdGlsaW5lIG1lc3NhZ2VzIHBhc3NlZCB0byB0aGUgbG9nZ2luZworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZHVsZS4gQWNjZXB0cyB0cnVlfG9uLCBmYWxzZXxvZmYgb3IgYW4gaW50
ZWdlci4KKworICAgIFtweXRlc3RdIGluaS1vcHRpb25zIGluIHRoZSBmaXJzdCBweXRlc3QuaW5p
fHRveC5pbml8c2V0dXAuY2ZnIGZpbGUgZm91bmQ6CisKKyAgICAgIG1hcmtlcnMgKGxpbmVsaXN0
KTogICBtYXJrZXJzIGZvciB0ZXN0IGZ1bmN0aW9ucworICAgICAgZW1wdHlfcGFyYW1ldGVyX3Nl
dF9tYXJrIChzdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgbWFy
a2VyIGZvciBlbXB0eSBwYXJhbWV0ZXJzZXRzCisgICAgICBub3JlY3Vyc2VkaXJzIChhcmdzKTog
ZGlyZWN0b3J5IHBhdHRlcm5zIHRvIGF2b2lkIGZvciByZWN1cnNpb24KKyAgICAgIHRlc3RwYXRo
cyAoYXJncyk6ICAgICBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIHRlc3RzIHdoZW4gbm8gZmls
ZXMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBhcmUgZ2l2ZW4g
aW4gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAgIGZpbHRlcndhcm5pbmdzIChsaW5lbGlzdCk6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBsaW5lIHNwZWNpZmllcyBhIHBhdHRlcm4g
Zm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3Mu
IFByb2Nlc3NlZCBhZnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1XLy0tcHl0aG9u
d2FybmluZ3MuCisgICAgICB1c2VmaXh0dXJlcyAoYXJncyk6ICAgbGlzdCBvZiBkZWZhdWx0IGZp
eHR1cmVzIHRvIGJlIHVzZWQgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvamVjdAorICAgICAgcHl0aG9uX2ZpbGVzIChhcmdzKTogIGdsb2Itc3R5bGUgZmlsZSBwYXR0
ZXJucyBmb3IgUHl0aG9uIHRlc3QgbW9kdWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlzY292ZXJ5CisgICAgICBweXRob25fY2xhc3NlcyAoYXJncyk6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlZml4ZXMgb3IgZ2xvYiBuYW1lcyBmb3IgUHl0aG9uIHRlc3QgY2xhc3MK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3ZlcnkKKyAgICAgIHB5dGhvbl9mdW5j
dGlvbnMgKGFyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVzIG9yIGds
b2IgbmFtZXMgZm9yIFB5dGhvbiB0ZXN0IGZ1bmN0aW9uIGFuZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGhvZCBkaXNjb3ZlcnkKKyAgICAgIGRpc2FibGVfdGVzdF9pZF9lc2NhcGlu
Z19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9zdXBwb3J0IChib29sKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIHN0cmluZyBlc2NhcGUgbm9uLWFzY2lp
IGNoYXJhY3RlcnMsIG1pZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UgdW53
YW50ZWQgc2lkZSBlZmZlY3RzKHVzZSBhdCB5b3VyIG93biByaXNrKQorICAgICAgY29uc29sZV9v
dXRwdXRfc3R5bGUgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29s
ZSBvdXRwdXQ6ICJjbGFzc2ljIiwgb3Igd2l0aCBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gKCJwcm9ncmVzcyIgKHBlcmNlbnRhZ2Up
IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bnQiKS4KKyAgICAgIHhmYWlsX3N0
cmljdCAoYm9vbCk6ICBkZWZhdWx0IGZvciB0aGUgc3RyaWN0IHBhcmFtZXRlciBvZiB4ZmFpbCBt
YXJrZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBub3QgZ2l2ZW4gZXhwbGlj
aXRseSAoZGVmYXVsdDogRmFsc2UpCisgICAgICBlbmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9vayAo
Ym9vbCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyB0aGUgcHl0ZXN0X2Fz
c2VydGlvbl9wYXNzIGhvb2suTWFrZSBzdXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlIGFueSBwcmV2aW91c2x5IGdlbmVyYXRlZCBweWMgY2FjaGUgZmlsZXMuCisgICAg
ICBqdW5pdF9zdWl0ZV9uYW1lIChzdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Qgc3VpdGUgbmFtZSBmb3IgSlVuaXQgcmVwb3J0CisgICAgICBqdW5pdF9sb2dnaW5nIChz
dHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIGNhcHR1cmVkIGxvZyBt
ZXNzYWdlcyB0byBKVW5pdCByZXBvcnQ6IG9uZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vfGxvZ3xzeXN0ZW0tb3V0fHN5c3RlbS1lcnJ8b3V0LWVycnxhbGwKKyAgICAgIGp1bml0
X2xvZ19wYXNzaW5nX3Rlc3RzIChib29sKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
YXB0dXJlIGxvZyBpbmZvcm1hdGlvbiBmb3IgcGFzc2luZyB0ZXN0cyB0byBKVW5pdAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydDoKKyAgICAgIGp1bml0X2R1cmF0aW9uX3JlcG9y
dCAoc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXJhdGlvbiB0aW1lIHRv
IHJlcG9ydDogb25lIG9mIHRvdGFsfGNhbGwKKyAgICAgIGp1bml0X2ZhbWlseSAoc3RyaW5nKToK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWl0IFhNTCBmb3Igc2NoZW1hOiBvbmUgb2Yg
bGVnYWN5fHh1bml0MXx4dW5pdDIKKyAgICAgIGRvY3Rlc3Rfb3B0aW9uZmxhZ3MgKGFyZ3MpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBmbGFncyBmb3IgZG9jdGVzdHMKKyAg
ICAgIGRvY3Rlc3RfZW5jb2RpbmcgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5jb2RpbmcgdXNlZCBmb3IgZG9jdGVzdCBmaWxlcworICAgICAgY2FjaGVfZGlyIChzdHJp
bmcpOiAgIGNhY2hlIGRpcmVjdG9yeSBwYXRoLgorICAgICAgbG9nX2xldmVsIChzdHJpbmcpOiAg
IGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWxldmVsCisgICAgICBsb2dfZm9ybWF0IChzdHJpbmcp
OiAgZGVmYXVsdCB2YWx1ZSBmb3IgLS1sb2ctZm9ybWF0CisgICAgICBsb2dfZGF0ZV9mb3JtYXQg
KHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZSBmb3Ig
LS1sb2ctZGF0ZS1mb3JtYXQKKyAgICAgIGxvZ19jbGkgKGJvb2wpOiAgICAgICBlbmFibGUgbG9n
IGRpc3BsYXkgZHVyaW5nIHRlc3QgcnVuIChhbHNvIGtub3duIGFzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImxpdmUgbG9nZ2luZyIpLgorICAgICAgbG9nX2NsaV9sZXZlbCAoc3RyaW5n
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlIGZvciAtLWxvZy1j
bGktbGV2ZWwKKyAgICAgIGxvZ19jbGlfZm9ybWF0IChzdHJpbmcpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWNsaS1mb3JtYXQKKyAgICAgIGxv
Z19jbGlfZGF0ZV9mb3JtYXQgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdCB2YWx1ZSBmb3IgLS1sb2ctY2xpLWRhdGUtZm9ybWF0CisgICAgICBsb2dfZmlsZSAo
c3RyaW5nKTogICAgZGVmYXVsdCB2YWx1ZSBmb3IgLS1sb2ctZmlsZQorICAgICAgbG9nX2ZpbGVf
bGV2ZWwgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1
ZSBmb3IgLS1sb2ctZmlsZS1sZXZlbAorICAgICAgbG9nX2ZpbGVfZm9ybWF0IChzdHJpbmcpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWZpbGUt
Zm9ybWF0CisgICAgICBsb2dfZmlsZV9kYXRlX2Zvcm1hdCAoc3RyaW5nKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlIGZvciAtLWxvZy1maWxlLWRhdGUtZm9ybWF0
CisgICAgICBsb2dfYXV0b19pbmRlbnQgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdCB2YWx1ZSBmb3IgLS1sb2ctYXV0by1pbmRlbnQKKyAgICAgIGZhdWx0aGFu
ZGxlcl90aW1lb3V0IChzdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1bXAg
dGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpZiBhIHRlc3QgdGFrZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gVElNRU9VVCBzZWNvbmRzIHRvIGZpbmlzaC4KKyAg
ICAgIGFkZG9wdHMgKGFyZ3MpOiAgICAgICBleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucworICAg
ICAgbWludmVyc2lvbiAoc3RyaW5nKTogIG1pbmltYWxseSByZXF1aXJlZCBweXRlc3QgdmVyc2lv
bgorICAgICAgcmVxdWlyZWRfcGx1Z2lucyAoYXJncyk6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGx1Z2lucyB0aGF0IG11c3QgYmUgcHJlc2VudCBmb3IgcHl0ZXN0IHRvIHJ1bgorCisg
ICAgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgICAgUFlURVNUX0FERE9QVFMgICAgICAgICAg
IGV4dHJhIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICBQWVRFU1RfUExVR0lOUyAgICAgICAg
ICAgY29tbWEtc2VwYXJhdGVkIHBsdWdpbnMgdG8gbG9hZCBkdXJpbmcgc3RhcnR1cAorICAgICAg
UFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIHNldCB0byBkaXNhYmxlIHBsdWdpbiBhdXRv
LWxvYWRpbmcKKyAgICAgIFBZVEVTVF9ERUJVRyAgICAgICAgICAgICBzZXQgdG8gZW5hYmxlIGRl
YnVnIHRyYWNpbmcgb2YgcHl0ZXN0J3MgaW50ZXJuYWxzCisKKworICAgIHRvIHNlZSBhdmFpbGFi
bGUgbWFya2VycyB0eXBlOiBweXRlc3QgLS1tYXJrZXJzCisgICAgdG8gc2VlIGF2YWlsYWJsZSBm
aXh0dXJlcyB0eXBlOiBweXRlc3QgLS1maXh0dXJlcworICAgIChzaG93biBhY2NvcmRpbmcgdG8g
c3BlY2lmaWVkIGZpbGVfb3JfZGlyIG9yIGN1cnJlbnQgZGlyIGlmIG5vdCBzcGVjaWZpZWQ7IGZp
eHR1cmVzIHdpdGggbGVhZGluZyAnXycgYXJlIG9ubHkgc2hvd24gd2l0aCB0aGUgJy12JyBvcHRp
b24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZXF1aXJlbWVudHMudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3JlcXVpcmVtZW50cy50eHQKaW5kZXggZTNjYzQ3ZWQ1YTUwLi5mYTM3
YWNmYjQ0NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZXF1aXJlbWVudHMudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZXF1aXJlbWVudHMudHh0CkBAIC0xLDQgKzEsNSBA
QAotIyBwaW5uaW5nIHNwaGlueCB0byAxLjQuKiBkdWUgdG8gc2VhcmNoIGlzc3VlcyB3aXRoIHJ0
ZDoKLSMgaHR0cHM6Ly9naXRodWIuY29tL3J0ZmQvcmVhZHRoZWRvY3Mtc3BoaW54LWV4dC9pc3N1
ZXMvMjUKLXNwaGlueCA9PTEuNC4qCitwYWxsZXRzLXNwaGlueC10aGVtZXMKK3B5Z21lbnRzLXB5
dGVzdD49MS4xLjAKK3NwaGlueC1yZW1vdmVkLWluPj0wLjIuMAorc3BoaW54Pj0zLjEsPDQKIHNw
aGlueGNvbnRyaWItdHJpbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3NraXBwaW5n
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9za2lwcGluZy5yc3QKaW5kZXggYmZhNmYzZTc1YTYy
Li41YzY3ZDc3YTdlYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9za2lwcGluZy5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3NraXBwaW5nLnJzdApAQCAtMTQsNyArMTQsNyBA
QCBvdGhlcndpc2UgcHl0ZXN0IHNob3VsZCBza2lwIHJ1bm5pbmcgdGhlIHRlc3QgYWx0b2dldGhl
ci4gQ29tbW9uIGV4YW1wbGVzIGFyZSBzawogd2luZG93cy1vbmx5IHRlc3RzIG9uIG5vbi13aW5k
b3dzIHBsYXRmb3Jtcywgb3Igc2tpcHBpbmcgdGVzdHMgdGhhdCBkZXBlbmQgb24gYW4gZXh0ZXJu
YWwKIHJlc291cmNlIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudCAoZm9yIGV4
YW1wbGUgYSBkYXRhYmFzZSkuCiAKLUEgKip4ZmFpbCoqIG1lYW5zIHRoYXQgeW91IGV4cGVjdCBh
IHRlc3QgdG8gZmFpbCBmb3Igc29tZSByZWFzb24uCitBbiAqKnhmYWlsKiogbWVhbnMgdGhhdCB5
b3UgZXhwZWN0IGEgdGVzdCB0byBmYWlsIGZvciBzb21lIHJlYXNvbi4KIEEgY29tbW9uIGV4YW1w
bGUgaXMgYSB0ZXN0IGZvciBhIGZlYXR1cmUgbm90IHlldCBpbXBsZW1lbnRlZCwgb3IgYSBidWcg
bm90IHlldCBmaXhlZC4KIFdoZW4gYSB0ZXN0IHBhc3NlcyBkZXNwaXRlIGJlaW5nIGV4cGVjdGVk
IHRvIGZhaWwgKG1hcmtlZCB3aXRoIGBgcHl0ZXN0Lm1hcmsueGZhaWxgYCksCiBpdCdzIGFuICoq
eHBhc3MqKiBhbmQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgdGVzdCBzdW1tYXJ5LgpAQCAtMjIs
NyArMjIsOSBAQCBpdCdzIGFuICoqeHBhc3MqKiBhbmQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUg
dGVzdCBzdW1tYXJ5LgogYGBweXRlc3RgYCBjb3VudHMgYW5kIGxpc3RzICpza2lwKiBhbmQgKnhm
YWlsKiB0ZXN0cyBzZXBhcmF0ZWx5LiBEZXRhaWxlZAogaW5mb3JtYXRpb24gYWJvdXQgc2tpcHBl
ZC94ZmFpbGVkIHRlc3RzIGlzIG5vdCBzaG93biBieSBkZWZhdWx0IHRvIGF2b2lkCiBjbHV0dGVy
aW5nIHRoZSBvdXRwdXQuICBZb3UgY2FuIHVzZSB0aGUgYGAtcmBgIG9wdGlvbiB0byBzZWUgZGV0
YWlscwotY29ycmVzcG9uZGluZyB0byB0aGUgInNob3J0IiBsZXR0ZXJzIHNob3duIGluIHRoZSB0
ZXN0IHByb2dyZXNzOjoKK2NvcnJlc3BvbmRpbmcgdG8gdGhlICJzaG9ydCIgbGV0dGVycyBzaG93
biBpbiB0aGUgdGVzdCBwcm9ncmVzczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5
dGVzdCAtcnhYcyAgIyBzaG93IGV4dHJhIGluZm8gb24geGZhaWxlZCwgeHBhc3NlZCwgYW5kIHNr
aXBwZWQgdGVzdHMKIApAQCAtMzcsNyArMzksNyBAQCBNb3JlIGRldGFpbHMgb24gdGhlIGBgLXJg
YCBvcHRpb24gY2FuIGJlIGZvdW5kIGJ5IHJ1bm5pbmcgYGBweXRlc3QgLWhgYC4KIFNraXBwaW5n
IHRlc3QgZnVuY3Rpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRk
ZWQ6OiAyLjkKKwogCiBUaGUgc2ltcGxlc3Qgd2F5IHRvIHNraXAgYSB0ZXN0IGZ1bmN0aW9uIGlz
IHRvIG1hcmsgaXQgd2l0aCB0aGUgYGBza2lwYGAgZGVjb3JhdG9yCiB3aGljaCBtYXkgYmUgcGFz
c2VkIGFuIG9wdGlvbmFsIGBgcmVhc29uYGA6CkBAIC01OCw1NCArNjAsNjggQEAgYnkgY2FsbGlu
ZyB0aGUgYGBweXRlc3Quc2tpcChyZWFzb24pYGAgZnVuY3Rpb246CiAgICAgICAgIGlmIG5vdCB2
YWxpZF9jb25maWcoKToKICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ1bnN1cHBvcnRlZCBjb25m
aWd1cmF0aW9uIikKIAorVGhlIGltcGVyYXRpdmUgbWV0aG9kIGlzIHVzZWZ1bCB3aGVuIGl0IGlz
IG5vdCBwb3NzaWJsZSB0byBldmFsdWF0ZSB0aGUgc2tpcCBjb25kaXRpb24KK2R1cmluZyBpbXBv
cnQgdGltZS4KKwogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBza2lwIHRoZSB3aG9sZSBtb2R1bGUg
dXNpbmcKIGBgcHl0ZXN0LnNraXAocmVhc29uLCBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSlgYCBh
dCB0aGUgbW9kdWxlIGxldmVsOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKKyAgICBpbXBv
cnQgc3lzCiAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgaWYgbm90IHB5dGVzdC5jb25maWcuZ2V0
b3B0aW9uKCItLWN1c3RvbS1mbGFnIik6Ci0gICAgICAgIHB5dGVzdC5za2lwKCItLWN1c3RvbS1m
bGFnIGlzIG1pc3NpbmcsIHNraXBwaW5nIHRlc3RzIiwgYWxsb3dfbW9kdWxlX2xldmVsPVRydWUp
CisgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4iKToKKyAgICAgICAgcHl0
ZXN0LnNraXAoInNraXBwaW5nIHdpbmRvd3Mtb25seSB0ZXN0cyIsIGFsbG93X21vZHVsZV9sZXZl
bD1UcnVlKQogCi1UaGUgaW1wZXJhdGl2ZSBtZXRob2QgaXMgdXNlZnVsIHdoZW4gaXQgaXMgbm90
IHBvc3NpYmxlIHRvIGV2YWx1YXRlIHRoZSBza2lwIGNvbmRpdGlvbgotZHVyaW5nIGltcG9ydCB0
aW1lLgogCiAqKlJlZmVyZW5jZSoqOiA6cmVmOmBweXRlc3QubWFyay5za2lwIHJlZmAKIAogYGBz
a2lwaWZgYAogfn5+fn5+fn5+fgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKKwogCiBJZiB5b3Ug
d2lzaCB0byBza2lwIHNvbWV0aGluZyBjb25kaXRpb25hbGx5IHRoZW4geW91IGNhbiB1c2UgYGBz
a2lwaWZgYCBpbnN0ZWFkLgogSGVyZSBpcyBhbiBleGFtcGxlIG9mIG1hcmtpbmcgYSB0ZXN0IGZ1
bmN0aW9uIHRvIGJlIHNraXBwZWQKLXdoZW4gcnVuIG9uIGEgUHl0aG9uMy42IGludGVycHJldGVy
OjoKK3doZW4gcnVuIG9uIGFuIGludGVycHJldGVyIGVhcmxpZXIgdGhhbiBQeXRob24zLjY6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGltcG9ydCBzeXMKLSAgICBAcHl0ZXN0Lm1h
cmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm8gPCAoMyw2KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0icmVxdWlyZXMgcHl0aG9uMy42IikKKworCisgICAgQHB5dGVzdC5tYXJrLnNr
aXBpZihzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDYpLCByZWFzb249InJlcXVpcmVzIHB5dGhvbjMu
NiBvciBoaWdoZXIiKQogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6CiAgICAgICAgIC4uLgogCiBJ
ZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgYFRydWVgYCBkdXJpbmcgY29sbGVjdGlvbiwg
dGhlIHRlc3QgZnVuY3Rpb24gd2lsbCBiZSBza2lwcGVkLAogd2l0aCB0aGUgc3BlY2lmaWVkIHJl
YXNvbiBhcHBlYXJpbmcgaW4gdGhlIHN1bW1hcnkgd2hlbiB1c2luZyBgYC1yc2BgLgogCi1Zb3Ug
Y2FuIHNoYXJlIGBgc2tpcGlmYGAgbWFya2VycyBiZXR3ZWVuIG1vZHVsZXMuICBDb25zaWRlciB0
aGlzIHRlc3QgbW9kdWxlOjoKK1lvdSBjYW4gc2hhcmUgYGBza2lwaWZgYCBtYXJrZXJzIGJldHdl
ZW4gbW9kdWxlcy4gIENvbnNpZGVyIHRoaXMgdGVzdCBtb2R1bGU6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X215bW9kdWxlLnB5CiAgICAgaW1wb3J0
IG15bW9kdWxlCi0gICAgbWludmVyc2lvbiA9IHB5dGVzdC5tYXJrLnNraXBpZihteW1vZHVsZS5f
X3ZlcnNpb25pbmZvX18gPCAoMSwxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0iYXQgbGVhc3QgbXltb2R1bGUtMS4xIHJlcXVpcmVkIikKKworICAgIG1pbnZl
cnNpb24gPSBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIG15bW9kdWxlLl9fdmVyc2lvbmlu
Zm9fXyA8ICgxLCAxKSwgcmVhc29uPSJhdCBsZWFzdCBteW1vZHVsZS0xLjEgcmVxdWlyZWQiCisg
ICAgKQorCisKICAgICBAbWludmVyc2lvbgogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6CiAgICAg
ICAgIC4uLgogCi1Zb3UgY2FuIGltcG9ydCB0aGUgbWFya2VyIGFuZCByZXVzZSBpdCBpbiBhbm90
aGVyIHRlc3QgbW9kdWxlOjoKK1lvdSBjYW4gaW1wb3J0IHRoZSBtYXJrZXIgYW5kIHJldXNlIGl0
IGluIGFub3RoZXIgdGVzdCBtb2R1bGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAg
ICMgdGVzdF9teW90aGVybW9kdWxlLnB5CiAgICAgZnJvbSB0ZXN0X215bW9kdWxlIGltcG9ydCBt
aW52ZXJzaW9uCiAKKwogICAgIEBtaW52ZXJzaW9uCiAgICAgZGVmIHRlc3RfYW5vdGhlcmZ1bmN0
aW9uKCk6CiAgICAgICAgIC4uLgpAQCAtMTI0LDI2ICsxNDAsMjAgQEAgc28gdGhleSBhcmUgc3Vw
cG9ydGVkIG1haW5seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLgogU2tpcCBh
bGwgdGVzdCBmdW5jdGlvbnMgb2YgYSBjbGFzcyBvciBtb2R1bGUKIH5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLVlvdSBjYW4gdXNlIHRoZSBgYHNraXBpZmBg
IG1hcmtlciAoYXMgYW55IG90aGVyIG1hcmtlcikgb24gY2xhc3Nlczo6CitZb3UgY2FuIHVzZSB0
aGUgYGBza2lwaWZgYCBtYXJrZXIgKGFzIGFueSBvdGhlciBtYXJrZXIpIG9uIGNsYXNzZXM6CiAK
LSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhc29uPSJkb2VzIG5vdCBydW4gb24gd2luZG93cyIpCi0gICAg
Y2xhc3MgVGVzdFBvc2l4Q2FsbHMob2JqZWN0KToKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAor
ICAgIEBweXRlc3QubWFyay5za2lwaWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsIHJlYXNvbj0i
ZG9lcyBub3QgcnVuIG9uIHdpbmRvd3MiKQorICAgIGNsYXNzIFRlc3RQb3NpeENhbGxzOgogICAg
ICAgICBkZWYgdGVzdF9mdW5jdGlvbihzZWxmKToKICAgICAgICAgICAgICJ3aWxsIG5vdCBiZSBz
ZXR1cCBvciBydW4gdW5kZXIgJ3dpbjMyJyBwbGF0Zm9ybSIKIAogSWYgdGhlIGNvbmRpdGlvbiBp
cyBgYFRydWVgYCwgdGhpcyBtYXJrZXIgd2lsbCBwcm9kdWNlIGEgc2tpcCByZXN1bHQgZm9yCiBl
YWNoIG9mIHRoZSB0ZXN0IG1ldGhvZHMgb2YgdGhhdCBjbGFzcy4KIAotLi4gd2FybmluZzo6Ci0K
LSAgIFRoZSB1c2Ugb2YgYGBza2lwaWZgYCBvbiBjbGFzc2VzIHRoYXQgdXNlIGluaGVyaXRhbmNl
IGlzIHN0cm9uZ2x5Ci0gICBkaXNjb3VyYWdlZC4gYEEgS25vd24gYnVnIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2OD5gXwotICAgaW4gcHl0ZXN0J3MgbWFy
a2VycyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvciBpbiBzdXBlciBjbGFzc2VzLgotCi1J
ZiB5b3Ugd2FudCB0byBza2lwIGFsbCB0ZXN0IGZ1bmN0aW9ucyBvZiBhIG1vZHVsZSwgeW91IG1h
eSB1c2UKLXRoZSBgYHB5dGVzdG1hcmtgYCBuYW1lIG9uIHRoZSBnbG9iYWwgbGV2ZWw6CitJZiB5
b3Ugd2FudCB0byBza2lwIGFsbCB0ZXN0IGZ1bmN0aW9ucyBvZiBhIG1vZHVsZSwgeW91IG1heSB1
c2UgdGhlCis6Z2xvYmFsdmFyOmBweXRlc3RtYXJrYCBnbG9iYWw6CiAKIC4uIGNvZGUtYmxvY2s6
OiBweXRob24KIApAQCAtMTY5LDE0ICsxNzksMTcgQEAgaW5mb3JtYXRpb24uCiBTa2lwcGluZyBv
biBhIG1pc3NpbmcgaW1wb3J0IGRlcGVuZGVuY3kKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fgogCi1Zb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGhlbHBlciBhdCBtb2R1
bGUgbGV2ZWwKLW9yIHdpdGhpbiBhIHRlc3Qgb3IgdGVzdCBzZXR1cCBmdW5jdGlvbjo6CitZb3Ug
Y2FuIHNraXAgdGVzdHMgb24gYSBtaXNzaW5nIGltcG9ydCBieSB1c2luZyA6cmVmOmBweXRlc3Qu
aW1wb3J0b3Jza2lwIHJlZmAKK2F0IG1vZHVsZSBsZXZlbCwgd2l0aGluIGEgdGVzdCwgb3IgdGVz
dCBzZXR1cCBmdW5jdGlvbi4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgZG9jdXRp
bHMgPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJkb2N1dGlscyIpCiAKLUlmIGBgZG9jdXRpbHNgYCBj
YW5ub3QgYmUgaW1wb3J0ZWQgaGVyZSwgdGhpcyB3aWxsIGxlYWQgdG8gYQotc2tpcCBvdXRjb21l
IG9mIHRoZSB0ZXN0LiAgWW91IGNhbiBhbHNvIHNraXAgYmFzZWQgb24gdGhlCi12ZXJzaW9uIG51
bWJlciBvZiBhIGxpYnJhcnk6OgorSWYgYGBkb2N1dGlsc2BgIGNhbm5vdCBiZSBpbXBvcnRlZCBo
ZXJlLCB0aGlzIHdpbGwgbGVhZCB0byBhIHNraXAgb3V0Y29tZSBvZgordGhlIHRlc3QuIFlvdSBj
YW4gYWxzbyBza2lwIGJhc2VkIG9uIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBhIGxpYnJhcnk6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRvY3V0aWxzID0gcHl0ZXN0LmltcG9ydG9y
c2tpcCgiZG9jdXRpbHMiLCBtaW52ZXJzaW9uPSIwLjMiKQogCkBAIC0xOTgsNyArMjExLDcgQEAg
SGVyZSdzIGEgcXVpY2sgZ3VpZGUgb24gaG93IHRvIHNraXAgdGVzdHMgaW4gYSBtb2R1bGUgaW4g
ZGlmZmVyZW50IHNpdHVhdGlvbnM6CiAKICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0gICAg
ICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay5za2lwaWYoc3lzLnBsYXRmb3JtID09ICJ3aW4z
MiIsICJ0ZXN0cyBmb3IgbGludXggb25seSIpCisgICAgICAgIHB5dGVzdG1hcmsgPSBweXRlc3Qu
bWFyay5za2lwaWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsIHJlYXNvbj0idGVzdHMgZm9yIGxp
bnV4IG9ubHkiKQogCiAzLiBTa2lwIGFsbCB0ZXN0cyBpbiBhIG1vZHVsZSBpZiBzb21lIGltcG9y
dCBpcyBtaXNzaW5nOgogCkBAIC0yMTMsMTcgKzIyNiwxOSBAQCBYRmFpbDogbWFyayB0ZXN0IGZ1
bmN0aW9ucyBhcyBleHBlY3RlZCB0byBmYWlsCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIFlvdSBjYW4gdXNlIHRoZSBgYHhmYWlsYGAgbWFya2VyIHRv
IGluZGljYXRlIHRoYXQgeW91Ci1leHBlY3QgYSB0ZXN0IHRvIGZhaWw6OgorZXhwZWN0IGEgdGVz
dCB0byBmYWlsOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBAcHl0ZXN0Lm1hcmsu
eGZhaWwKICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgogICAgICAgICAuLi4KIAotVGhpcyB0ZXN0
IHdpbGwgYmUgcnVuIGJ1dCBubyB0cmFjZWJhY2sgd2lsbCBiZSByZXBvcnRlZAotd2hlbiBpdCBm
YWlscy4gSW5zdGVhZCB0ZXJtaW5hbCByZXBvcnRpbmcgd2lsbCBsaXN0IGl0IGluIHRoZQotImV4
cGVjdGVkIHRvIGZhaWwiIChgYFhGQUlMYGApIG9yICJ1bmV4cGVjdGVkbHkgcGFzc2luZyIgKGBg
WFBBU1NgYCkgc2VjdGlvbnMuCitUaGlzIHRlc3Qgd2lsbCBydW4gYnV0IG5vIHRyYWNlYmFjayB3
aWxsIGJlIHJlcG9ydGVkIHdoZW4gaXQgZmFpbHMuIEluc3RlYWQsIHRlcm1pbmFsCityZXBvcnRp
bmcgd2lsbCBsaXN0IGl0IGluIHRoZSAiZXhwZWN0ZWQgdG8gZmFpbCIgKGBgWEZBSUxgYCkgb3Ig
InVuZXhwZWN0ZWRseQorcGFzc2luZyIgKGBgWFBBU1NgYCkgc2VjdGlvbnMuCiAKLUFsdGVybmF0
aXZlbHksIHlvdSBjYW4gYWxzbyBtYXJrIGEgdGVzdCBhcyBgYFhGQUlMYGAgZnJvbSB3aXRoaW4g
YSB0ZXN0IG9yIHNldHVwIGZ1bmN0aW9uCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFsc28gbWFy
ayBhIHRlc3QgYXMgYGBYRkFJTGBgIGZyb20gd2l0aGluIHRoZSB0ZXN0IG9yIGl0cyBzZXR1cCBm
dW5jdGlvbgogaW1wZXJhdGl2ZWx5OgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCkBAIC0yMzIs
NDkgKzI0Nyw0NyBAQCBpbXBlcmF0aXZlbHk6CiAgICAgICAgIGlmIG5vdCB2YWxpZF9jb25maWco
KToKICAgICAgICAgICAgIHB5dGVzdC54ZmFpbCgiZmFpbGluZyBjb25maWd1cmF0aW9uIChidXQg
c2hvdWxkIHdvcmspIikKIAotVGhpcyB3aWxsIHVuY29uZGl0aW9uYWxseSBtYWtlIGBgdGVzdF9m
dW5jdGlvbmBgIGBgWEZBSUxgYC4gTm90ZSB0aGF0IG5vIG90aGVyIGNvZGUgaXMgZXhlY3V0ZWQK
LWFmdGVyIGBgcHl0ZXN0LnhmYWlsYGAgY2FsbCwgZGlmZmVyZW50bHkgZnJvbSB0aGUgbWFya2Vy
LiBUaGF0J3MgYmVjYXVzZSBpdCBpcyBpbXBsZW1lbnRlZAotaW50ZXJuYWxseSBieSByYWlzaW5n
IGEga25vd24gZXhjZXB0aW9uLgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0qKlJlZmVyZW5j
ZSoqOiA6cmVmOmBweXRlc3QubWFyay54ZmFpbCByZWZgCisgICAgZGVmIHRlc3RfZnVuY3Rpb24y
KCk6CisgICAgICAgIGltcG9ydCBzbG93X21vZHVsZQogCisgICAgICAgIGlmIHNsb3dfbW9kdWxl
LnNsb3dfZnVuY3Rpb24oKToKKyAgICAgICAgICAgIHB5dGVzdC54ZmFpbCgic2xvd19tb2R1bGUg
dGFraW5nIHRvbyBsb25nIikKIAotLi4gX2B4ZmFpbCBzdHJpY3QgdHV0b3JpYWxgOgorVGhlc2Ug
dHdvIGV4YW1wbGVzIGlsbHVzdHJhdGUgc2l0dWF0aW9ucyB3aGVyZSB5b3UgZG9uJ3Qgd2FudCB0
byBjaGVjayBmb3IgYSBjb25kaXRpb24KK2F0IHRoZSBtb2R1bGUgbGV2ZWwsIHdoaWNoIGlzIHdo
ZW4gYSBjb25kaXRpb24gd291bGQgb3RoZXJ3aXNlIGJlIGV2YWx1YXRlZCBmb3IgbWFya3MuCisK
K1RoaXMgd2lsbCBtYWtlIGBgdGVzdF9mdW5jdGlvbmBgIGBgWEZBSUxgYC4gTm90ZSB0aGF0IG5v
IG90aGVyIGNvZGUgaXMgZXhlY3V0ZWQgYWZ0ZXIKK3RoZSBgYHB5dGVzdC54ZmFpbGBgIGNhbGws
IGRpZmZlcmVudGx5IGZyb20gdGhlIG1hcmtlci4gVGhhdCdzIGJlY2F1c2UgaXQgaXMgaW1wbGVt
ZW50ZWQKK2ludGVybmFsbHkgYnkgcmFpc2luZyBhIGtub3duIGV4Y2VwdGlvbi4KKworKipSZWZl
cmVuY2UqKjogOnJlZjpgcHl0ZXN0Lm1hcmsueGZhaWwgcmVmYAogCi1gYHN0cmljdGBgIHBhcmFt
ZXRlcgotfn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotLi4gdmVyc2lvbmFkZGVkOjogMi45CitgYGNv
bmRpdGlvbmBgIHBhcmFtZXRlcgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotQm90aCBgYFhG
QUlMYGAgYW5kIGBgWFBBU1NgYCBkb24ndCBmYWlsIHRoZSB0ZXN0IHN1aXRlLCB1bmxlc3MgdGhl
IGBgc3RyaWN0YGAga2V5d29yZC1vbmx5Ci1wYXJhbWV0ZXIgaXMgcGFzc2VkIGFzIGBgVHJ1ZWBg
OgorSWYgYSB0ZXN0IGlzIG9ubHkgZXhwZWN0ZWQgdG8gZmFpbCB1bmRlciBhIGNlcnRhaW4gY29u
ZGl0aW9uLCB5b3UgY2FuIHBhc3MKK3RoYXQgY29uZGl0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbWV0
ZXI6CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgIEBweXRlc3QubWFyay54ZmFpbChz
dHJpY3Q9VHJ1ZSkKKyAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4z
MiIsIHJlYXNvbj0iYnVnIGluIGEgM3JkIHBhcnR5IGxpYnJhcnkiKQogICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uKCk6CiAgICAgICAgIC4uLgogCi0KLVRoaXMgd2lsbCBtYWtlIGBgWFBBU1NgYCAoInVu
ZXhwZWN0ZWRseSBwYXNzaW5nIikgcmVzdWx0cyBmcm9tIHRoaXMgdGVzdCB0byBmYWlsIHRoZSB0
ZXN0IHN1aXRlLgotCi1Zb3UgY2FuIGNoYW5nZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYGBz
dHJpY3RgYCBwYXJhbWV0ZXIgdXNpbmcgdGhlCi1gYHhmYWlsX3N0cmljdGBgIGluaSBvcHRpb246
Ci0KLS4uIGNvZGUtYmxvY2s6OiBpbmkKLQotICAgIFtweXRlc3RdCi0gICAgeGZhaWxfc3RyaWN0
PXRydWUKLQorTm90ZSB0aGF0IHlvdSBoYXZlIHRvIHBhc3MgYSByZWFzb24gYXMgd2VsbCAoc2Vl
IHRoZSBwYXJhbWV0ZXIgZGVzY3JpcHRpb24gYXQKKzpyZWY6YHB5dGVzdC5tYXJrLnhmYWlsIHJl
ZmApLgogCiBgYHJlYXNvbmBgIHBhcmFtZXRlcgogfn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotQXMg
d2l0aCBza2lwaWZfIHlvdSBjYW4gYWxzbyBtYXJrIHlvdXIgZXhwZWN0YXRpb24gb2YgYSBmYWls
dXJlCi1vbiBhIHBhcnRpY3VsYXIgcGxhdGZvcm06OgorWW91IGNhbiBzcGVjaWZ5IHRoZSBtb3Rp
dmUgb2YgYW4gZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHRoZSBgYHJlYXNvbmBgIHBhcmFtZXRlcjoK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsNiksCi0gICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0icHl0
aG9uMy42IGFwaSBjaGFuZ2VzIikKKyAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJrbm93
biBwYXJzZXIgaXNzdWUiKQogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6CiAgICAgICAgIC4uLgog
CkBAIC0yODMsNyArMjk2LDcgQEAgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtOjoKIH5+fn5+fn5+
fn5+fn5+fn5+fn5+CiAKIElmIHlvdSB3YW50IHRvIGJlIG1vcmUgc3BlY2lmaWMgYXMgdG8gd2h5
IHRoZSB0ZXN0IGlzIGZhaWxpbmcsIHlvdSBjYW4gc3BlY2lmeQotYSBzaW5nbGUgZXhjZXB0aW9u
LCBvciBhIGxpc3Qgb2YgZXhjZXB0aW9ucywgaW4gdGhlIGBgcmFpc2VzYGAgYXJndW1lbnQuCith
IHNpbmdsZSBleGNlcHRpb24sIG9yIGEgdHVwbGUgb2YgZXhjZXB0aW9ucywgaW4gdGhlIGBgcmFp
c2VzYGAgYXJndW1lbnQuCiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIApAQCAtMzA5LDExICsz
MjIsMzggQEAgZXZlbiBleGVjdXRlZCwgdXNlIHRoZSBgYHJ1bmBgIHBhcmFtZXRlciBhcyBgYEZh
bHNlYGA6CiBUaGlzIGlzIHNwZWNpYWxseSB1c2VmdWwgZm9yIHhmYWlsaW5nIHRlc3RzIHRoYXQg
YXJlIGNyYXNoaW5nIHRoZSBpbnRlcnByZXRlciBhbmQgc2hvdWxkIGJlCiBpbnZlc3RpZ2F0ZWQg
bGF0ZXIuCiAKKy4uIF9geGZhaWwgc3RyaWN0IHR1dG9yaWFsYDoKKworYGBzdHJpY3RgYCBwYXJh
bWV0ZXIKK35+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0JvdGggYGBYRkFJTGBgIGFuZCBgYFhQQVNT
YGAgZG9uJ3QgZmFpbCB0aGUgdGVzdCBzdWl0ZSBieSBkZWZhdWx0LgorWW91IGNhbiBjaGFuZ2Ug
dGhpcyBieSBzZXR0aW5nIHRoZSBgYHN0cmljdGBgIGtleXdvcmQtb25seSBwYXJhbWV0ZXIgdG8g
YGBUcnVlYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIEBweXRlc3QubWFyay54
ZmFpbChzdHJpY3Q9VHJ1ZSkKKyAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgorICAgICAgICAuLi4K
KworCitUaGlzIHdpbGwgbWFrZSBgYFhQQVNTYGAgKCJ1bmV4cGVjdGVkbHkgcGFzc2luZyIpIHJl
c3VsdHMgZnJvbSB0aGlzIHRlc3QgdG8gZmFpbCB0aGUgdGVzdCBzdWl0ZS4KKworWW91IGNhbiBj
aGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGBgc3RyaWN0YGAgcGFyYW1ldGVyIHVzaW5n
IHRoZQorYGB4ZmFpbF9zdHJpY3RgYCBpbmkgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogaW5p
CisKKyAgICBbcHl0ZXN0XQorICAgIHhmYWlsX3N0cmljdD10cnVlCisKIAogSWdub3JpbmcgeGZh
aWwKIH5+fn5+fn5+fn5+fn5+CiAKLUJ5IHNwZWNpZnlpbmcgb24gdGhlIGNvbW1hbmRsaW5lOjoK
K0J5IHNwZWNpZnlpbmcgb24gdGhlIGNvbW1hbmRsaW5lOgorCisuLiBjb2RlLWJsb2NrOjogYmFz
aAogCiAgICAgcHl0ZXN0IC0tcnVueGZhaWwKIApAQCAtMzI3LDE1ICszNjcsMTkgQEAgSGVyZSBp
cyBhIHNpbXBsZSB0ZXN0IGZpbGUgd2l0aCB0aGUgc2V2ZXJhbCB1c2FnZXM6CiAKIC4uIGxpdGVy
YWxpbmNsdWRlOjogZXhhbXBsZS94ZmFpbF9kZW1vLnB5CiAKLVJ1bm5pbmcgaXQgd2l0aCB0aGUg
cmVwb3J0LW9uLXhmYWlsIG9wdGlvbiBnaXZlcyB0aGlzIG91dHB1dDo6CitSdW5uaW5nIGl0IHdp
dGggdGhlIHJlcG9ydC1vbi14ZmFpbCBvcHRpb24gZ2l2ZXMgdGhpcyBvdXRwdXQ6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRlc3QKIAogICAgIGV4YW1wbGUgJCBweXRlc3QgLXJ4IHhmYWlsX2RlbW8u
cHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9u
IDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGly
OiAkUkVHRU5ET0NfVE1QRElSL2V4YW1wbGUsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXgg
LS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAg
ICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRS
RUdFTkRPQ19UTVBESVIvZXhhbXBsZQogICAgIGNvbGxlY3RlZCA3IGl0ZW1zCiAKICAgICB4ZmFp
bF9kZW1vLnB5IHh4eHh4eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMTAwJV0KKwogICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVz
dCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBYRkFJTCB4ZmFp
bF9kZW1vLnB5Ojp0ZXN0X2hlbGxvCiAgICAgWEZBSUwgeGZhaWxfZGVtby5weTo6dGVzdF9oZWxs
bzIKQEAgLTM0OSw4ICszOTMsNyBAQCBSdW5uaW5nIGl0IHdpdGggdGhlIHJlcG9ydC1vbi14ZmFp
bCBvcHRpb24gZ2l2ZXMgdGhpcyBvdXRwdXQ6OgogICAgIFhGQUlMIHhmYWlsX2RlbW8ucHk6OnRl
c3RfaGVsbG82CiAgICAgICByZWFzb246IHJlYXNvbgogICAgIFhGQUlMIHhmYWlsX2RlbW8ucHk6
OnRlc3RfaGVsbG83Ci0KLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gNyB4ZmFpbGVkIGlu
IDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PSA3IHhmYWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PQogCiAuLiBfYHNraXAveGZhaWwgd2l0aCBwYXJhbWV0cml6ZWA6CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9zcG9uc29yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9z
cG9uc29yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgzNjJh
N2YwYTNhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9zcG9uc29yLnJz
dApAQCAtMCwwICsxLDI2IEBACitTcG9uc29yCis9PT09PT09CisKK3B5dGVzdCBpcyBtYWludGFp
bmVkIGJ5IGEgdGVhbSBvZiB2b2x1bnRlZXJzIGZyb20gYWxsIGFyb3VuZCB0aGUgd29ybGQgaW4g
dGhlaXIgZnJlZSB0aW1lLiBXaGlsZQord2Ugd29yayBvbiBweXRlc3QgYmVjYXVzZSB3ZSBsb3Zl
IHRoZSBwcm9qZWN0IGFuZCB1c2UgaXQgZGFpbHkgYXQgb3VyIGRhaWx5IGpvYnMsIG1vbmV0YXJ5
Citjb21wZW5zYXRpb24gd2hlbiBwb3NzaWJsZSBpcyB3ZWxjb21lIHRvIGp1c3RpZnkgdGltZSBh
d2F5IGZyb20gZnJpZW5kcywgZmFtaWx5IGFuZCBwZXJzb25hbCB0aW1lLgorCitNb25leSBpcyBh
bHNvIHVzZWQgdG8gZnVuZCBsb2NhbCBzcHJpbnRzLCBtZXJjaGFuZGlzaW5nIChzdGlja2VycyB0
byBkaXN0cmlidXRlIGluIGNvbmZlcmVuY2VzIGZvciBleGFtcGxlKQorYW5kIGV2ZXJ5IGZldyB5
ZWFycyBhIGxhcmdlIHNwcmludCBpbnZvbHZpbmcgYWxsIG1lbWJlcnMuCisKK09wZW5Db2xsZWN0
aXZlCistLS0tLS0tLS0tLS0tLQorCitgT3BlbiBDb2xsZWN0aXZlYF8gaXMgYW4gb25saW5lIGZ1
bmRpbmcgcGxhdGZvcm0gZm9yIG9wZW4gYW5kIHRyYW5zcGFyZW50IGNvbW11bml0aWVzLgorSXQg
cHJvdmlkZSB0b29scyB0byByYWlzZSBtb25leSBhbmQgc2hhcmUgeW91ciBmaW5hbmNlcyBpbiBm
dWxsIHRyYW5zcGFyZW5jeS4KKworSXQgaXMgdGhlIHBsYXRmb3JtIG9mIGNob2ljZSBmb3IgaW5k
aXZpZHVhbHMgYW5kIGNvbXBhbmllcyB0aGF0IHdhbnQgdG8gbWFrZSBvbmUtdGltZSBvcgorbW9u
dGhseSBkb25hdGlvbnMgZGlyZWN0bHkgdG8gdGhlIHByb2plY3QuCisKK1NlZSBtb3JlIGRldGFp
bHMgaW4gdGhlIGBweXRlc3QgY29sbGVjdGl2ZWBfLgorCisKKy4uIF9UaWRlbGlmdDogaHR0cHM6
Ly90aWRlbGlmdC5jb20KKy4uIF9UaWRlbGlmdCBzdWJzY3JpcHRpb246IGh0dHBzOi8vdGlkZWxp
ZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcHlwaS1weXRlc3QKKy4uIF9PcGVuIENvbGxlY3RpdmU6
IGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tCisuLiBfcHl0ZXN0IGNvbGxlY3RpdmU6IGh0dHBz
Oi8vb3BlbmNvbGxlY3RpdmUuY29tL3B5dGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3RhbGtzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90YWxrcy5yc3QKaW5kZXggNzk1MzRl
YTZlOWE2Li4yMTZjY2I4ZGQ4YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90YWxr
cy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RhbGtzLnJzdApAQCAtMiwyNCArMiwzNSBA
QAogVGFsa3MgYW5kIFR1dG9yaWFscwogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotLi4K
LSAgIC4uIHNpZGViYXI6OiBOZXh0IE9wZW4gVHJhaW5pbmdzCi0KLSAgICAgIGBQcm9mZXNzaW9u
YWwgVGVzdGluZyB3aXRoIFB5dGhvbgotICAgICAgPGh0dHA6Ly93d3cucHl0aG9uLWFjYWRlbXku
Y29tL2NvdXJzZXMvc3BlY2lhbHRvcGljcy9weXRob25fY291cnNlX3Rlc3RpbmcuaHRtbD5gXywK
LSAgICAgIDI2LTI4IEFwcmlsIDIwMTcsIExlaXB6aWcsIEdlcm1hbnkuCi0KLS4uIF9gZnVuY2Fy
Z3NgOiBmdW5jYXJncy5odG1sCi0KIEJvb2tzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAorLSBgcHl0ZXN0IFF1aWNrIFN0YXJ0IEd1aWRlLCBieSBCcnVu
byBPbGl2ZWlyYSAoMjAxOCkKKyAgPGh0dHBzOi8vd3d3LnBhY2t0cHViLmNvbS93ZWItZGV2ZWxv
cG1lbnQvcHl0ZXN0LXF1aWNrLXN0YXJ0LWd1aWRlPmBfLgorCiAtIGBQeXRob24gVGVzdGluZyB3
aXRoIHB5dGVzdCwgYnkgQnJpYW4gT2trZW4gKDIwMTcpCiAgIDxodHRwczovL3ByYWdwcm9nLmNv
bS9ib29rL2JvcHl0ZXN0L3B5dGhvbi10ZXN0aW5nLXdpdGgtcHl0ZXN0PmBfLgogCiBUYWxrcyBh
bmQgYmxvZyBwb3N0aW5ncwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKKy0gV2ViaW5hcjogYHB5dGVzdDogVGVzdCBEcml2ZW4gRGV2ZWxvcG1lbnQgZsO8
ciBQeXRob24gKEdlcm1hbikgPGh0dHBzOi8vYnJ1aGluLnNvZnR3YXJlL2lucy1weXRlc3QvPmBf
LCBGbG9yaWFuIEJydWhpbiwgdmlhIG15bGVhcm5pbmcuY2gsIDIwMjAKKworLSBXZWJpbmFyOiBg
U2ltcGxpZnkgWW91ciBUZXN0cyB3aXRoIEZpeHR1cmVzIDxodHRwczovL2Jsb2cuamV0YnJhaW5z
LmNvbS9weWNoYXJtLzIwMjAvMDgvd2ViaW5hci1yZWNvcmRpbmctc2ltcGxpZnkteW91ci10ZXN0
cy13aXRoLWZpeHR1cmVzLXdpdGgtb2xpdmVyLWJlc3R3YWx0ZXIvPmBfLCBPbGl2ZXIgQmVzdHdh
bHRlciwgdmlhIEpldEJyYWlucywgMjAyMAorCistIFRyYWluaW5nOiBgSW50cm9kdWN0aW9uIHRv
IHB5dGVzdCAtIHNpbXBsZSwgcmFwaWQgYW5kIGZ1biB0ZXN0aW5nIHdpdGggUHl0aG9uIDxodHRw
czovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNNdVNuOWNvZmJJPmBfLCBGbG9yaWFuIEJydWhp
biwgUHlDb25ERSAyMDE5CisKKy0gQWJyaWRnZWQgbWV0YXByb2dyYW1taW5nIGNsYXNzaWNzIC0g
dGhpcyBlcGlzb2RlOiBweXRlc3QsIE9saXZlciBCZXN0d2FsdGVyLCBQeUNvbkRFIDIwMTkgKGBy
ZXBvc2l0b3J5IDxodHRwczovL2dpdGh1Yi5jb20vb2Jlc3R3YWx0ZXIvYWJyaWRnZWQtbWV0YS1w
cm9ncmFtbWluZy1jbGFzc2ljcz5gX18sIGByZWNvcmRpbmcgPGh0dHBzOi8vd3d3LnlvdXR1YmUu
Y29tL3dhdGNoP3Y9ekhwZU1USnNCUmsmZmVhdHVyZT15b3V0dS5iZT5gX18pCisKKy0gVGVzdGlu
ZyBQeVNpZGUvUHlRdCBjb2RlIGVhc2lseSB1c2luZyB0aGUgcHl0ZXN0IGZyYW1ld29yaywgRmxv
cmlhbiBCcnVoaW4sIFF0IFdvcmxkIFN1bW1pdCAyMDE5IChgc2xpZGVzIDxodHRwczovL2JydWhp
bi5zb2Z0d2FyZS90YWxrcy9xdHdzMTkucGRmPmBfXywgYHJlY29yZGluZyA8aHR0cHM6Ly93d3cu
eW91dHViZS5jb20vd2F0Y2g/dj16ZHNCUzVCWEdxUT5gX18pCisKKy0gYHB5dGVzdDogcmVjb21t
ZW5kYXRpb25zLCBiYXNpYyBwYWNrYWdlcyBmb3IgdGVzdGluZyBpbiBQeXRob24gYW5kIERqYW5n
bywgQW5kcmV1IFZhbGxib25hLCBQeUJDTiBKdW5lIDIwMTkgPGh0dHBzOi8vd3d3LnNsaWRlc2hh
cmUubmV0L0FuZHJldVZhbGxib25hUGxhemFzL3B5YmNuLXB5dGVzdC1yZWNvbWVuZGFjaW9uZXMt
cGFxdWV0ZXMtYnNpY29zLXBhcmEtdGVzdGluZy1lbi1weXRob24teS1kamFuZ28+YF8uCisKKy0g
cHl0ZXN0OiByZWNvbW1lbmRhdGlvbnMsIGJhc2ljIHBhY2thZ2VzIGZvciB0ZXN0aW5nIGluIFB5
dGhvbiBhbmQgRGphbmdvLCBBbmRyZXUgVmFsbGJvbmEsIFB5Y29uRVMgMjAxNyAoYHNsaWRlcyBp
biBlbmdsaXNoIDxodHRwOi8vdGFsa3MuYXBzbC5pby90ZXN0aW5nLXB5Y29uZXMtMjAxNy8+YF8s
IGB2aWRlbyBpbiBzcGFuaXNoIDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUsyMEdl
Ui1sWERrPmBfKQorCistIGBweXRlc3QgYWR2YW5jZWQsIEFuZHJldyBTdmV0bG92IChSdXNzaWFu
LCBQeUNvbiBSdXNzaWEsIDIwMTYpCisgIDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92
PTdLZ2loZEtUV1k0PmBfLgorCiAtIGBQeXRob25pYyB0ZXN0aW5nLCBJZ29yIFN0YXJpa292IChS
dXNzaWFuLCBQeU5zaywgTm92ZW1iZXIgMjAxNikKICAgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29t
L3dhdGNoP3Y9XzkybmZkZDVuSzg+YF8uCiAKQEAgLTM5LDEzICs1MCwxMSBAQCBUYWxrcyBhbmQg
YmxvZyBwb3N0aW5ncwogICA8aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1QLUFocHVr
RElpaz5gXwogCiAtIGAzLXBhcnQgYmxvZyBzZXJpZXMgYWJvdXQgcHl0ZXN0IGZyb20gQHB5ZGFu
bnkgYWxpYXMgRGFuaWVsIEdyZWVuZmVsZCAoSmFudWFyeQotICAyMDE0KSA8aHR0cDovL3B5ZGFu
bnkuY29tL3B5dGVzdC1uby1ib2lsZXJwbGF0ZS10ZXN0aW5nLmh0bWw+YF8KKyAgMjAxNCkgPGh0
dHBzOi8vZGFuaWVsLnJveWdyZWVuZmVsZC5jb20vcHl0ZXN0LW5vLWJvaWxlcnBsYXRlLXRlc3Rp
bmcuaHRtbD5gXwogCiAtIGBweXRlc3Q6IGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgRGphbmdvIGFw
cHMsIEFuZHJlYXMgUGVsbWUsIERqYW5nb0NvbgogICBFdXJvcGUgMjAxNCA8aHR0cHM6Ly93d3cu
eW91dHViZS5jb20vd2F0Y2g/dj1hYUFyWVZoNlhTTT5gXy4KIAotLSA6cmVmOmBmaXh0dXJlc2AK
LQogLSBgVGVzdGluZyBEamFuZ28gQXBwbGljYXRpb25zIHdpdGggcHl0ZXN0LCBBbmRyZWFzIFBl
bG1lLCBFdXJvUHl0aG9uCiAgIDIwMTMgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9
YVVmOEZrYjdUYVk+YF8uCiAKQEAgLTYxLDcgKzcwLDcgQEAgVGFsa3MgYW5kIGJsb2cgcG9zdGlu
Z3MKIC0gYHB5dGVzdCBpbnRyb2R1Y3Rpb24gZnJvbSBCcmlhbiBPa2tlbiAoSmFudWFyeSAyMDEz
KQogICA8aHR0cDovL3B5dGhvbnRlc3RpbmcubmV0L2ZyYW1ld29yay9weXRlc3QtaW50cm9kdWN0
aW9uLz5gXwogCi0tIHB5Y29uIGF1c3RyYWxpYSAyMDEyIHB5dGVzdCB0YWxrIGZyb20gQnJpYW5u
YSBMYXVnaGVyIChgdmlkZW8gPGh0dHA6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1EVE5lakU5
RXJhST5gXywgYHNsaWRlcyA8aHR0cDovL3d3dy5zbGlkZXNoYXJlLm5ldC9wZmN0ZGF5ZWxpc2Uv
ZnVuY2FyZ3Mtb3RoZXItZnVuLXdpdGgtcHl0ZXN0PmBfLCBgY29kZSA8aHR0cHM6Ly9naXN0Lmdp
dGh1Yi5jb20vMzM4Njk1MT5gXykKKy0gcHljb24gYXVzdHJhbGlhIDIwMTIgcHl0ZXN0IHRhbGsg
ZnJvbSBCcmlhbm5hIExhdWdoZXIgKGB2aWRlbyA8aHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRj
aD92PURUTmVqRTlFcmFJPmBfLCBgc2xpZGVzIDxodHRwczovL3d3dy5zbGlkZXNoYXJlLm5ldC9w
ZmN0ZGF5ZWxpc2UvZnVuY2FyZ3Mtb3RoZXItZnVuLXdpdGgtcHl0ZXN0PmBfLCBgY29kZSA8aHR0
cHM6Ly9naXN0LmdpdGh1Yi5jb20vMzM4Njk1MT5gXykKIC0gYHB5Y29uIDIwMTIgVVMgdGFsayB2
aWRlbyBmcm9tIEhvbGdlciBLcmVrZWwgPGh0dHA6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj05
TFZxQlFjRm15dz5gXwogCiAtIGBtb25rZXkgcGF0Y2hpbmcgZG9uZSByaWdodGBfIChibG9nIHBv
c3QsIGNvbnN1bHQgYG1vbmtleXBhdGNoIHBsdWdpbmBfIGZvciB1cC10by1kYXRlIEFQSSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2F0dGljLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi90ZXN0L2F0dGljLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5
NDQ2NjFjYjVjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvYXR0
aWMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1BVFRJQyBkb2N1bWVudGF0aW9uCi09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1YWFggUkVWSUVX
IGFuZCByZW1vdmUgdGhlIGJlbG93ICBYWFgKLQotQ3VzdG9taXppbmcgdGhlIHRlc3RpbmcgcHJv
Y2VzcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi13cml0aW5nIGNvbmZ0ZXN0
LnB5IGZpbGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Zb3UgbWF5
IHB1dCBjb25mdGVzdC5weSBmaWxlcyBjb250YWluaW5nIHByb2plY3Qtc3BlY2lmaWMKLWNvbmZp
Z3VyYXRpb24gaW4geW91ciBwcm9qZWN0J3Mgcm9vdCBkaXJlY3RvcnksIGl0J3MgdXN1YWxseQot
YmVzdCB0byBwdXQgaXQganVzdCBpbnRvIHRoZSBzYW1lIGRpcmVjdG9yeSBsZXZlbCBhcyB5b3Vy
Ci10b3Btb3N0IGBgX19pbml0X18ucHlgYC4gIEluIGZhY3QsIGBgcHl0ZXN0YGAgcGVyZm9ybXMK
LWFuICJ1cHdhcmRzIiBzZWFyY2ggc3RhcnRpbmcgZnJvbSB0aGUgZGlyZWN0b3J5IHRoYXQgeW91
IHNwZWNpZnkKLXRvIGJlIHRlc3RlZCBhbmQgd2lsbCBsb29rdXAgY29uZmlndXJhdGlvbiB2YWx1
ZXMgcmlnaHQtdG8tbGVmdC4KLVlvdSBtYXkgaGF2ZSBvcHRpb25zIHRoYXQgcmVzaWRlIGUuZy4g
aW4geW91ciBob21lIGRpcmVjdG9yeQotYnV0IG5vdGUgdGhhdCBwcm9qZWN0IHNwZWNpZmljIHNl
dHRpbmdzIHdpbGwgYmUgY29uc2lkZXJlZAotZmlyc3QuICBUaGVyZSBpcyBhIGZsYWcgdGhhdCBo
ZWxwcyB5b3UgZGVidWdnaW5nIHlvdXIKLWNvbmZ0ZXN0LnB5IGNvbmZpZ3VyYXRpb25zOjoKLQot
ICAgIHB5dGVzdCAtLXRyYWNlLWNvbmZpZwotCi0KLWN1c3RvbWl6aW5nIHRoZSBjb2xsZWN0aW5n
IGFuZCBydW5uaW5nIHByb2Nlc3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLVRvIGludHJvZHVjZSBkaWZmZXJlbnQgdGVzdCBpdGVtcyB5b3UgY2Fu
IGNyZWF0ZQotb25lIG9yIG1vcmUgYGBjb25mdGVzdC5weWBgIGZpbGVzIGluIHlvdXIgcHJvamVj
dC4KLVdoZW4gdGhlIGNvbGxlY3Rpb24gcHJvY2VzcyB0cmF2ZXJzZXMgZGlyZWN0b3JpZXMKLWFu
ZCBtb2R1bGVzIHRoZSBkZWZhdWx0IGNvbGxlY3RvcnMgd2lsbCBwcm9kdWNlCi1jdXN0b20gQ29s
bGVjdG9ycyBhbmQgSXRlbXMgaWYgdGhleSBhcmUgZm91bmQKLWluIGEgbG9jYWwgYGBjb25mdGVz
dC5weWBgIGZpbGUuCi0KLQotQ3VzdG9taXppbmcgdGhlIGNvbGxlY3Rpb24gcHJvY2VzcyBpbiBh
IG1vZHVsZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1JZiB5b3UgaGF2ZSBhIG1vZHVsZSB3aGVyZSB5b3Ugd2FudCB0byB0YWtlIHJlc3BvbnNpYmls
aXR5IGZvcgotY29sbGVjdGluZyB5b3VyIG93biB0ZXN0IEl0ZW1zIGFuZCBwb3NzaWJseSBldmVu
IGZvciBleGVjdXRpbmcKLWEgdGVzdCB0aGVuIHlvdSBjYW4gcHJvdmlkZSBgZ2VuZXJhdGl2ZSB0
ZXN0c2BfIHRoYXQgeWllbGQKLWNhbGxhYmxlcyBhbmQgcG9zc2libHkgYXJndW1lbnRzIGFzIGEg
dHVwbGUuICAgVGhpcyBpcyBlc3BlY2lhbGx5Ci11c2VmdWwgZm9yIGNhbGxpbmcgYXBwbGljYXRp
b24gdGVzdCBtYWNoaW5lcnkgd2l0aCBkaWZmZXJlbnQKLXBhcmFtZXRlciBzZXRzIGJ1dCBjb3Vu
dGluZyBlYWNoIG9mIHRoZSBjYWxscyBhcyBhIHNlcGFyYXRlCi10ZXN0cy4KLQotLi4gX2BnZW5l
cmF0aXZlIHRlc3RzYDogZmVhdHVyZXMuaHRtbCNnZW5lcmF0aXZlLXRlc3RzCi0KLVRoZSBvdGhl
ciBleHRlbnNpb24gcG9zc2liaWxpdHkgaXMgYWJvdXQKLXNwZWNpZnlpbmcgYSBjdXN0b20gdGVz
dCBgYEl0ZW1gYCBjbGFzcyB3aGljaAotaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgYW5k
IGV4ZWN1dGluZyBhbiB1bmRlcmx5aW5nCi10ZXN0LiAgT3IgeW91IGNhbiBleHRlbmQgdGhlIGNv
bGxlY3Rpb24gcHJvY2VzcyBmb3IgYSB3aG9sZQotZGlyZWN0b3J5IHRyZWUgYnkgcHV0dGluZyBJ
dGVtcyBpbiBhIGBgY29uZnRlc3QucHlgYCBjb25maWd1cmF0aW9uIGZpbGUuCi1UaGUgY29sbGVj
dGlvbiBwcm9jZXNzIGR5bmFtaWNhbGx5IGNvbnN1bHRzIHRoZSAqY2hhaW4gb2YgY29uZnRlc3Qu
cHkqCi1tb2R1bGVzIHRvIGRldGVybWluZSBjb2xsZWN0b3JzIGFuZCBpdGVtcyBhdCBgYERpcmVj
dG9yeWBgLCBgYE1vZHVsZWBgLAotYGBDbGFzc2BgLCBgYEZ1bmN0aW9uYGAgb3IgYGBHZW5lcmF0
b3JgYCBsZXZlbCByZXNwZWN0aXZlbHkuCi0KLUN1c3RvbWl6aW5nIGV4ZWN1dGlvbiBvZiBJdGVt
cyBhbmQgRnVuY3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLS0gYGBweXRlc3QuRnVuY3Rpb25gYCB0ZXN0IGl0ZW1zIGNvbnRyb2wg
ZXhlY3V0aW9uCi0gIG9mIGEgdGVzdCBmdW5jdGlvbiB0aHJvdWdoIGl0cyBgYGZ1bmN0aW9uLnJ1
bnRlc3QoKWBgIG1ldGhvZC4KLSAgVGhpcyBtZXRob2QgaXMgcmVzcG9uc2libGUgZm9yIHBlcmZv
cm1pbmcgc2V0dXAgYW5kIHRlYXJkb3duCi0gICgiVGVzdCBGaXh0dXJlcyIpIGZvciBhIHRlc3Qg
RnVuY3Rpb24uCi0KLS0gYGBGdW5jdGlvbi5leGVjdXRlKHRhcmdldCwgKmFyZ3MpYGAgbWV0aG9k
cyBhcmUgaW52b2tlZCBieQotICB0aGUgZGVmYXVsdCBgYEZ1bmN0aW9uLnJ1bigpYGAgdG8gYWN0
dWFsbHkgZXhlY3V0ZSBhIHB5dGhvbgotICBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiAodXN1YWxs
eSBlbXB0eSBzZXQgb2YpIGFyZ3VtZW50cy4KLQotLi4gX2BweS1kZXYgbWFpbGluZyBsaXN0YDog
aHR0cDovL2NvZGVzcGVhay5uZXQvbWFpbG1hbi9saXN0aW5mby9weS1kZXYKLQotCi0uLiBfYHRl
c3QgZ2VuZXJhdG9yc2A6IGZ1bmNhcmdzLmh0bWwjdGVzdC1nZW5lcmF0b3JzCi0KLS4uIF9gZ2Vu
ZXJhdGl2ZSB0ZXN0c2A6Ci0KLWdlbmVyYXRpdmUgdGVzdHM6IHlpZWxkaW5nIHBhcmFtZXRyaXpl
ZCB0ZXN0cwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotCi1EZXByZWNhdGVkIHNpbmNlIDEuMCBpbiBmYXZvdXIgb2YgYHRlc3QgZ2VuZXJhdG9y
c2BfLgotCi0qR2VuZXJhdGl2ZSB0ZXN0cyogYXJlIHRlc3QgbWV0aG9kcyB0aGF0IGFyZSAqZ2Vu
ZXJhdG9yIGZ1bmN0aW9ucyogd2hpY2gKLWBgeWllbGRgYCBjYWxsYWJsZXMgYW5kIHRoZWlyIGFy
Z3VtZW50cy4gIFRoaXMgaXMgdXNlZnVsIGZvciBydW5uaW5nIGEKLXRlc3QgZnVuY3Rpb24gbXVs
dGlwbGUgdGltZXMgYWdhaW5zdCBkaWZmZXJlbnQgcGFyYW1ldGVycy4gIEV4YW1wbGU6OgotCi0g
ICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZSgpOgotICAgICAgICBmb3IgeCBpbiAoNDIsMTcsNDkpOgot
ICAgICAgICAgICAgeWllbGQgY2hlY2ssIHgKLQotICAgIGRlZiBjaGVjayhhcmcpOgotICAgICAg
ICBhc3NlcnQgYXJnICUgNyA9PSAwICAgIyBzZWNvbmQgZ2VuZXJhdGVkIHRlc3RzIGZhaWxzIQot
Ci1Ob3RlIHRoYXQgYGB0ZXN0X2dlbmVyYXRpdmUoKWBgIHdpbGwgY2F1c2UgdGhyZWUgdGVzdHMK
LXRvIGdldCBydW4sIG5vdGFibHkgYGBjaGVjayg0MilgYCwgYGBjaGVjaygxNylgYCBhbmQgYGBj
aGVjayg0OSlgYAotb2Ygd2hpY2ggdGhlIG1pZGRsZSBvbmUgd2lsbCBvYnZpb3VzbHkgZmFpbC4K
LQotVG8gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggdGhlIGdlbmVyYXRlZCB0ZXN0cyBp
dCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGFuIGV4cGxpY2l0IG5hbWUgZm9yIHRoZW0sIGxpa2Ug
Zm9yIGV4YW1wbGU6OgotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZSgpOgotICAgICAgICBmb3Ig
eCBpbiAoNDIsMTcsNDkpOgotICAgICAgICAgICAgeWllbGQgImNhc2UgJWQiICUgeCwgY2hlY2ss
IHgKLQotCi1kaXNhYmxpbmcgYSB0ZXN0IGNsYXNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LUlmIHlvdSB3YW50IHRvIGRpc2FibGUgYSBjb21wbGV0ZSB0ZXN0IGNsYXNzIHlvdQotY2FuIHNl
dCB0aGUgY2xhc3MtbGV2ZWwgYXR0cmlidXRlIGBgZGlzYWJsZWRgYC4KLUZvciBleGFtcGxlLCBp
biBvcmRlciB0byBhdm9pZCBydW5uaW5nIHNvbWUgdGVzdHMgb24gV2luMzI6OgotCi0gICAgY2xh
c3MgVGVzdFBvc2l4T25seShvYmplY3QpOgotICAgICAgICBkaXNhYmxlZCA9IHN5cy5wbGF0Zm9y
bSA9PSAnd2luMzInCi0KLSAgICAgICAgZGVmIHRlc3RfeHh4KHNlbGYpOgotICAgICAgICAgICAg
Li4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9jb25maWcuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2NvbmZpZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjYmE1YTQ2Zjk4MmUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vdGVzdC9jb25maWcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTxodG1s
PgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50
PSIgMSA7IFVSTD1jdXN0b21pemUuaHRtbCIgLz4KLSAgICA8L2hlYWQ+Ci0KLSAgICA8Ym9keT4K
LTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBnYUpzSG9zdCA9ICgoImh0dHBz
OiIgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpID8gImh0dHBzOi8vc3NsLiIgOiAiaHR0
cDovL3d3dy4iKTsKLWRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCIlM0NzY3JpcHQgc3JjPSciICsg
Z2FKc0hvc3QgKyAiZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnIHR5cGU9J3RleHQvamF2YXNj
cmlwdCclM0UlM0Mvc2NyaXB0JTNFIikpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci10cnkgewotdmFyIHBhZ2VUcmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcigi
VUEtNzU5NzI3NC0zIik7Ci1wYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygpOwotfSBjYXRjaChl
cnIpIHt9PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0gICAgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9kaXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9k
aXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjg1NTBhODVjYi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2Rpc3QuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0
YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIgMSA7IFVSTD1wbHVnaW4veGRpc3QuaHRt
bCIgLz4KLSAgICA8L2hlYWQ+Ci0KLSAgICA8Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLXZhciBnYUpzSG9zdCA9ICgoImh0dHBzOiIgPT0gZG9jdW1lbnQubG9jYXRpb24u
cHJvdG9jb2wpID8gImh0dHBzOi8vc3NsLiIgOiAiaHR0cDovL3d3dy4iKTsKLWRvY3VtZW50Lndy
aXRlKHVuZXNjYXBlKCIlM0NzY3JpcHQgc3JjPSciICsgZ2FKc0hvc3QgKyAiZ29vZ2xlLWFuYWx5
dGljcy5jb20vZ2EuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCclM0UlM0Mvc2NyaXB0JTNFIikp
OwotPC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci10cnkgewotdmFy
IHBhZ2VUcmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcigiVUEtNzU5NzI3NC0zIik7Ci1wYWdlVHJh
Y2tlci5fdHJhY2tQYWdldmlldygpOwotfSBjYXRjaChlcnIpIHt9PC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+Ci0gICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9leHRl
bmQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2V4dGVuZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYmE1YTQ2Zjk4MmUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9leHRlbmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICsw
LDAgQEAKLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZy
ZXNoIiBjb250ZW50PSIgMSA7IFVSTD1jdXN0b21pemUuaHRtbCIgLz4KLSAgICA8L2hlYWQ+Ci0K
LSAgICA8Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBnYUpzSG9z
dCA9ICgoImh0dHBzOiIgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpID8gImh0dHBzOi8v
c3NsLiIgOiAiaHR0cDovL3d3dy4iKTsKLWRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCIlM0NzY3Jp
cHQgc3JjPSciICsgZ2FKc0hvc3QgKyAiZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnIHR5cGU9
J3RleHQvamF2YXNjcmlwdCclM0UlM0Mvc2NyaXB0JTNFIikpOwotPC9zY3JpcHQ+Ci08c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci10cnkgewotdmFyIHBhZ2VUcmFja2VyID0gX2dhdC5f
Z2V0VHJhY2tlcigiVUEtNzU5NzI3NC0zIik7Ci1wYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygp
OwotfSBjYXRjaChlcnIpIHt9PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0gICAgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vdGVzdC9pbmRleC5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhM2I1
YTU0ZGEwOC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2luZGV4
LnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotcHl0ZXN0IGRvY3VtZW50YXRpb24gaW5kZXgKLT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLWZlYXR1cmVzXzogb3ZlcnZpZXcg
YW5kIGRpc2N1c3Npb24gb2YgZmVhdHVyZXMuCi0KLXF1aWNrc3RhcnRfOiBnZXR0aW5nIHN0YXJ0
ZWQgd2l0aCB3cml0aW5nIGEgc2ltcGxlIHRlc3QuCi0KLWB0YWxrcywgdHV0b3JpYWxzLCBleGFt
cGxlc2BfOiB0dXRvcmlhbCBleGFtcGxlcywgc2xpZGVzCi0KLWZ1bmNhcmdzXzogcG93ZXJmdWwg
cGFyYW1ldHJpemVkIHRlc3QgZnVuY3Rpb24gc2V0dXAKLQotYHBsdWdpbnNgXzogbGlzdCBvZiBh
dmFpbGFibGUgcGx1Z2lucyB3aXRoIHVzYWdlIGV4YW1wbGVzIGFuZCBmZWF0dXJlIGRldGFpbHMu
Ci0KLWN1c3RvbWl6ZV86IGNvbmZpZ3VyYXRpb24sIGN1c3RvbWl6YXRpb24sIGV4dGVuc2lvbnMK
LQotY2hhbmdlbG9nXzogaGlzdG9yeSBvZiBjaGFuZ2VzIGNvdmVyaW5nIGxhc3QgcmVsZWFzZXMK
LQotKipDb250aW51b3VzIEludGVncmF0aW9uIG9mIHB5dGVzdCdzIG93biB0ZXN0cyBhbmQgcGx1
Z2lucyB3aXRoIEh1ZHNvbioqOgotCi0gICAgYGh0dHA6Ly9odWRzb24udGVzdHJ1bi5vcmcvdmll
dy9weXRlc3RgXwotCi0uLiBfYGh0dHA6Ly9odWRzb24udGVzdHJ1bi5vcmcvdmlldy9weXRlc3Rg
OiBodHRwOi8vaHVkc29uLnRlc3RydW4ub3JnL3ZpZXcvcHl0ZXN0LwotCi0KLS4uIF9jaGFuZ2Vs
b2c6IC4uL2NoYW5nZWxvZy5odG1sCi0uLiBfYHBsdWdpbnNgOiBwbHVnaW4vaW5kZXguaHRtbAot
Li4gX2B0YWxrcywgdHV0b3JpYWxzLCBleGFtcGxlc2A6IHRhbGtzLmh0bWwKLS4uIF9xdWlja3N0
YXJ0OiBxdWlja3N0YXJ0Lmh0bWwKLS4uIF9mZWF0dXJlczogZmVhdHVyZXMuaHRtbAotLi4gX2Z1
bmNhcmdzOiBmdW5jYXJncy5odG1sCi0uLiBfY3VzdG9taXplOiBjdXN0b21pemUuaHRtbAotCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L21pc3Npb24ucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3Rlc3QvbWlzc2lvbi5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDUxYzI1MmRjMGQ4Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90
ZXN0L21pc3Npb24ucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1NaXNzaW9u
Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotYGBweXRlc3RgYCBzdHJp
dmVzIHRvIG1ha2UgdGVzdGluZyBhIGZ1biBhbmQgbm8tYm9pbGVycGxhdGUgZWZmb3J0LgotCi1U
aGUgdG9vbCBpcyBkaXN0cmlidXRlZCBhcyBhIGBweXRlc3RgIHBhY2thZ2UuICBJdHMgcHJvamVj
dCBpbmRlcGVuZGVudAotYGBweXRlc3RgYCBjb21tYW5kIGxpbmUgdG9vbCBoZWxwcyB5b3UgdG86
Ci0KLSogcmFwaWRseSBjb2xsZWN0IGFuZCBydW4gdGVzdHMKLSogcnVuIHVuaXQtIG9yIGRvY3Rl
c3RzLCBmdW5jdGlvbmFsIG9yIGludGVncmF0aW9uIHRlc3RzCi0qIGRpc3RyaWJ1dGUgdGVzdHMg
dG8gbXVsdGlwbGUgZW52aXJvbm1lbnRzCi0qIHVzZSBsb2NhbCBvciBnbG9iYWwgcGx1Z2lucyBm
b3IgY3VzdG9tIHRlc3QgdHlwZXMgYW5kIHNldHVwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vdGVzdC9wbHVnaW4vY292LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdp
bi9jb3YucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDFjN2VmOTQ3OTMuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292LnJzdAor
KysgL2Rldi9udWxsCkBAIC0xLDIzMCArMCwwIEBACi0KLXByb2R1Y2UgY29kZSBjb3ZlcmFnZSBy
ZXBvcnRzIHVzaW5nIHRoZSAnY292ZXJhZ2UnIHBhY2thZ2UsIGluY2x1ZGluZyBzdXBwb3J0IGZv
ciBkaXN0cmlidXRlZCB0ZXN0aW5nLgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0KLQotLi4gY29udGVudHM6OgotICA6bG9jYWw6Ci0KLVRoaXMgcGx1Z2lu
IHByb2R1Y2VzIGNvdmVyYWdlIHJlcG9ydHMuICBJdCBzdXBwb3J0cyBjZW50cmFsaXNlZCB0ZXN0
aW5nIGFuZCBkaXN0cmlidXRlZCB0ZXN0aW5nIGluCi1ib3RoIGxvYWQgYW5kIGVhY2ggbW9kZXMu
ICBJdCBhbHNvIHN1cHBvcnRzIGNvdmVyYWdlIG9mIHN1YnByb2Nlc3Nlcy4KLQotQWxsIGZlYXR1
cmVzIG9mZmVyZWQgYnkgdGhlIGNvdmVyYWdlIHBhY2thZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSwg
ZWl0aGVyIHRocm91Z2ggcHl0ZXN0LWNvdiBvcgotdGhyb3VnaCBjb3ZlcmFnZSdzIGNvbmZpZyBm
aWxlLgotCi0KLUluc3RhbGxhdGlvbgotLS0tLS0tLS0tLS0tCi0KLVRoZSBgcHl0ZXN0LWNvdmBf
IHBhY2thZ2UgbWF5IGJlIGluc3RhbGxlZCB3aXRoIHBpcCBvciBlYXN5X2luc3RhbGw6OgotCi0g
ICAgcGlwIGluc3RhbGwgcHl0ZXN0LWNvdgotICAgIGVhc3lfaW5zdGFsbCBweXRlc3QtY292Ci0K
LS4uIF9gcHl0ZXN0LWNvdmA6IGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXRlc3QtY292
LwotCi0KLVVuaW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0tLQotCi1Vbmluc3RhbGxpbmcgcGFj
a2FnZXMgaXMgc3VwcG9ydGVkIGJ5IHBpcDo6Ci0KLSAgICBwaXAgdW5pbnN0YWxsIHB5dGVzdC1j
b3YKLQotSG93ZXZlciBlYXN5X2luc3RhbGwgZG9lcyBub3QgcHJvdmlkZSBhbiB1bmluc3RhbGwg
ZmFjaWxpdHkuCi0KLS4uIElNUE9SVEFOVDo6Ci0KLSAgICBFbnN1cmUgdGhhdCB5b3UgbWFudWFs
bHkgZGVsZXRlIHRoZSBpbml0X2Nvdm1haW4ucHRoIGZpbGUgaW4geW91cgotICAgIHNpdGUtcGFj
a2FnZXMgZGlyZWN0b3J5LgotCi0gICAgVGhpcyBmaWxlIHN0YXJ0cyBjb3ZlcmFnZSBjb2xsZWN0
aW9uIG9mIHN1YnByb2Nlc3NlcyBpZiBhcHByb3ByaWF0ZSBkdXJpbmcKLSAgICBzaXRlIGluaXRp
YWxpemF0aW9uIGF0IHB5dGhvbiBzdGFydHVwLgotCi0KLVVzYWdlCi0tLS0tLQotCi1DZW50cmFs
aXNlZCBUZXN0aW5nCi1+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLUNlbnRyYWxpc2VkIHRlc3Rpbmcg
d2lsbCByZXBvcnQgb24gdGhlIGNvbWJpbmVkIGNvdmVyYWdlIG9mIHRoZSBtYWluIHByb2Nlc3Mg
YW5kIGFsbCBvZiBpdCdzCi1zdWJwcm9jZXNzZXMuCi0KLVJ1bm5pbmcgY2VudHJhbGlzZWQgdGVz
dGluZzo6Ci0KLSAgICBweXRlc3QgLS1jb3YgbXlwcm9qIHRlc3RzLwotCi1TaG93cyBhIHRlcm1p
bmFsIHJlcG9ydDo6Ci0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLSBjb3ZlcmFnZTogcGxhdGZv
cm0gbGludXgyLCBweXRob24gMi42LjQtZmluYWwtMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg
ICBOYW1lICAgICAgICAgICAgICAgICBTdG10cyAgIE1pc3MgIENvdmVyCi0gICAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15cHJvai9fX2luaXRfXyAgICAg
ICAgICAyICAgICAgMCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9qICAgICAgICAgIDI1NyAgICAg
MTMgICAgOTQlCi0gICAgbXlwcm9qL2ZlYXR1cmU0Mjg2ICAgICAgOTQgICAgICA3ICAgIDkyJQot
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBUT1RBTCAg
ICAgICAgICAgICAgICAgIDM1MyAgICAgMjAgICAgOTQlCi0KLQotRGlzdHJpYnV0ZWQgVGVzdGlu
ZzogTG9hZAotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1EaXN0cmlidXRlZCB0ZXN0aW5n
IHdpdGggZGlzdCBtb2RlIHNldCB0byBsb2FkIHdpbGwgcmVwb3J0IG9uIHRoZSBjb21iaW5lZCBj
b3ZlcmFnZSBvZiBhbGwgc2xhdmVzLgotVGhlIHNsYXZlcyBtYXkgYmUgc3ByZWFkIG91dCBvdmVy
IGFueSBudW1iZXIgb2YgaG9zdHMgYW5kIGVhY2ggc2xhdmUgbWF5IGJlIGxvY2F0ZWQgYW55d2hl
cmUgb24gdGhlCi1maWxlIHN5c3RlbS4gIEVhY2ggc2xhdmUgd2lsbCBoYXZlIGl0J3Mgc3VicHJv
Y2Vzc2VzIG1lYXN1cmVkLgotCi1SdW5uaW5nIGRpc3RyaWJ1dGVkIHRlc3Rpbmcgd2l0aCBkaXN0
IG1vZGUgc2V0IHRvIGxvYWQ6OgotCi0gICAgcHl0ZXN0IC0tY292IG15cHJvaiAtbiAyIHRlc3Rz
LwotCi1TaG93cyBhIHRlcm1pbmFsIHJlcG9ydDo6Ci0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0t
LSBjb3ZlcmFnZTogcGxhdGZvcm0gbGludXgyLCBweXRob24gMi42LjQtZmluYWwtMCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSAgICBOYW1lICAgICAgICAgICAgICAgICBTdG10cyAgIE1pc3MgIENv
dmVyCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15
cHJvai9fX2luaXRfXyAgICAgICAgICAyICAgICAgMCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9q
ICAgICAgICAgIDI1NyAgICAgMTMgICAgOTQlCi0gICAgbXlwcm9qL2ZlYXR1cmU0Mjg2ICAgICAg
OTQgICAgICA3ICAgIDkyJQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSAgICBUT1RBTCAgICAgICAgICAgICAgICAgIDM1MyAgICAgMjAgICAgOTQlCi0KLQot
QWdhaW4gYnV0IHNwcmVhZCBvdmVyIGRpZmZlcmVudCBob3N0cyBhbmQgZGlmZmVyZW50IGRpcmVj
dG9yaWVzOjoKLQotICAgIHB5dGVzdCAtLWNvdiBteXByb2ogLS1kaXN0IGxvYWQKLSAgICAgICAg
ICAgIC0tdHggc3NoPW1lbWVkb3VnaEBob3N0MS8vY2hkaXI9dGVzdGVudjEKLSAgICAgICAgICAg
IC0tdHggc3NoPW1lbWVkb3VnaEBob3N0Mi8vY2hkaXI9L3RtcC90ZXN0ZW52Mi8vcHl0aG9uPS90
bXAvZW52MS9iaW4vcHl0aG9uCi0gICAgICAgICAgICAtLXJzeW5jZGlyIG15cHJvaiAtLXJzeW5j
ZGlyIHRlc3RzIC0tcnN5bmMgZXhhbXBsZXMKLSAgICAgICAgICAgIHRlc3RzLwotCi1TaG93cyBh
IHRlcm1pbmFsIHJlcG9ydDo6Ci0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLSBjb3ZlcmFnZTog
cGxhdGZvcm0gbGludXgyLCBweXRob24gMi42LjQtZmluYWwtMCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLSAgICBOYW1lICAgICAgICAgICAgICAgICBTdG10cyAgIE1pc3MgIENvdmVyCi0gICAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15cHJvai9fX2luaXRf
XyAgICAgICAgICAyICAgICAgMCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9qICAgICAgICAgIDI1
NyAgICAgMTMgICAgOTQlCi0gICAgbXlwcm9qL2ZlYXR1cmU0Mjg2ICAgICAgOTQgICAgICA3ICAg
IDkyJQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBU
T1RBTCAgICAgICAgICAgICAgICAgIDM1MyAgICAgMjAgICAgOTQlCi0KLQotRGlzdHJpYnV0ZWQg
VGVzdGluZzogRWFjaAotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1EaXN0cmlidXRlZCB0
ZXN0aW5nIHdpdGggZGlzdCBtb2RlIHNldCB0byBlYWNoIHdpbGwgcmVwb3J0IG9uIHRoZSBjb21i
aW5lZCBjb3ZlcmFnZSBvZiBhbGwgc2xhdmVzLgotU2luY2UgZWFjaCBzbGF2ZSBpcyBydW5uaW5n
IGFsbCB0ZXN0cyB0aGlzIGFsbG93cyBnZW5lcmF0aW5nIGEgY29tYmluZWQgY292ZXJhZ2UgcmVw
b3J0IGZvciBtdWx0aXBsZQotZW52aXJvbm1lbnRzLgotCi1SdW5uaW5nIGRpc3RyaWJ1dGVkIHRl
c3Rpbmcgd2l0aCBkaXN0IG1vZGUgc2V0IHRvIGVhY2g6OgotCi0gICAgcHl0ZXN0IC0tY292IG15
cHJvaiAtLWRpc3QgZWFjaAotICAgICAgICAgICAgLS10eCBwb3Blbi8vY2hkaXI9L3RtcC90ZXN0
ZW52My8vcHl0aG9uPS91c3IvbG9jYWwvcHl0aG9uMjcvYmluL3B5dGhvbgotICAgICAgICAgICAg
LS10eCBzc2g9bWVtZWRvdWdoQGhvc3QyLy9jaGRpcj0vdG1wL3Rlc3RlbnY0Ly9weXRob249L3Rt
cC9lbnYyL2Jpbi9weXRob24KLSAgICAgICAgICAgIC0tcnN5bmNkaXIgbXlwcm9qIC0tcnN5bmNk
aXIgdGVzdHMgLS1yc3luYyBleGFtcGxlcwotICAgICAgICAgICAgdGVzdHMvCi0KLVNob3dzIGEg
dGVybWluYWwgcmVwb3J0OjoKLQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gY292ZXJhZ2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gbGludXgyLCBweXRob24g
Mi42LjUtZmluYWwtMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gbGlu
dXgyLCBweXRob24gMi43LjAtZmluYWwtMAotICAgIE5hbWUgICAgICAgICAgICAgICAgIFN0bXRz
ICAgTWlzcyAgQ292ZXIKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0gICAgbXlwcm9qL19faW5pdF9fICAgICAgICAgIDIgICAgICAwICAgMTAwJQotICAgIG15
cHJvai9teXByb2ogICAgICAgICAgMjU3ICAgICAxMyAgICA5NCUKLSAgICBteXByb2ovZmVhdHVy
ZTQyODYgICAgICA5NCAgICAgIDcgICAgOTIlCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotICAgIFRPVEFMICAgICAgICAgICAgICAgICAgMzUzICAgICAyMCAg
ICA5NCUKLQotCi1SZXBvcnRpbmcKLS0tLS0tLS0tLQotCi1JdCBpcyBwb3NzaWJsZSB0byBnZW5l
cmF0ZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIHJlcG9ydHMgZm9yIGEgc2luZ2xlIHRlc3QgcnVu
LgotCi1UaGUgYXZhaWxhYmxlIHJlcG9ydHMgYXJlIHRlcm1pbmFsICh3aXRoIG9yIHdpdGhvdXQg
bWlzc2luZyBsaW5lIG51bWJlcnMgc2hvd24pLCBIVE1MLCBYTUwgYW5kCi1hbm5vdGF0ZWQgc291
cmNlIGNvZGUuCi0KLVRoZSB0ZXJtaW5hbCByZXBvcnQgd2l0aG91dCBsaW5lIG51bWJlcnMgKGRl
ZmF1bHQpOjoKLQotICAgIHB5dGVzdCAtLWNvdi1yZXBvcnQgdGVybSAtLWNvdiBteXByb2ogdGVz
dHMvCi0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLSBjb3ZlcmFnZTogcGxhdGZvcm0gbGludXgy
LCBweXRob24gMi42LjQtZmluYWwtMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBOYW1lICAg
ICAgICAgICAgICAgICBTdG10cyAgIE1pc3MgIENvdmVyCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15cHJvai9fX2luaXRfXyAgICAgICAgICAyICAg
ICAgMCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9qICAgICAgICAgIDI1NyAgICAgMTMgICAgOTQl
Ci0gICAgbXlwcm9qL2ZlYXR1cmU0Mjg2ICAgICAgOTQgICAgICA3ICAgIDkyJQotICAgIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBUT1RBTCAgICAgICAgICAg
ICAgICAgIDM1MyAgICAgMjAgICAgOTQlCi0KLQotVGhlIHRlcm1pbmFsIHJlcG9ydCB3aXRoIGxp
bmUgbnVtYmVyczo6Ci0KLSAgICBweXRlc3QgLS1jb3YtcmVwb3J0IHRlcm0tbWlzc2luZyAtLWNv
diBteXByb2ogdGVzdHMvCi0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLSBjb3ZlcmFnZTogcGxh
dGZvcm0gbGludXgyLCBweXRob24gMi42LjQtZmluYWwtMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSAgICBOYW1lICAgICAgICAgICAgICAgICBTdG10cyAgIE1pc3MgIENvdmVyICAgTWlzc2luZwot
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g
ICAgbXlwcm9qL19faW5pdF9fICAgICAgICAgIDIgICAgICAwICAgMTAwJQotICAgIG15cHJvai9t
eXByb2ogICAgICAgICAgMjU3ICAgICAxMyAgICA5NCUgICAyNC0yNiwgOTksIDE0OSwgMjMzLTIz
NiwgMjk3LTI5OCwgMzY5LTM3MAotICAgIG15cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAgICAg
NyAgICA5MiUgICAxODMtMTg4LCAxOTcKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIFRPVEFMICAgICAgICAgICAgICAgICAgMzUzICAg
ICAyMCAgICA5NCUKLQotCi1UaGUgcmVtYWluaW5nIHRocmVlIHJlcG9ydHMgb3V0cHV0IHRvIGZp
bGVzIHdpdGhvdXQgc2hvd2luZyBhbnl0aGluZyBvbiB0aGUgdGVybWluYWwgKHVzZWZ1bCBmb3IK
LXdoZW4gdGhlIG91dHB1dCBpcyBnb2luZyB0byBhIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gc2Vy
dmVyKTo6Ci0KLSAgICBweXRlc3QgLS1jb3YtcmVwb3J0IGh0bWwgLS1jb3YtcmVwb3J0IHhtbCAt
LWNvdi1yZXBvcnQgYW5ub3RhdGUgLS1jb3YgbXlwcm9qIHRlc3RzLwotCi0KLUNvdmVyYWdlIERh
dGEgRmlsZQotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBkYXRhIGZpbGUgaXMgZXJhc2VkIGF0
IHRoZSBiZWdpbm5pbmcgb2YgdGVzdGluZyB0byBlbnN1cmUgY2xlYW4gZGF0YSBmb3IgZWFjaCB0
ZXN0IHJ1bi4KLQotVGhlIGRhdGEgZmlsZSBpcyBsZWZ0IGF0IHRoZSBlbmQgb2YgdGVzdGluZyBz
byB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBub3JtYWwgY292ZXJhZ2UgdG9vbHMgdG8KLWV4
YW1pbmUgaXQuCi0KLQotTGltaXRhdGlvbnMKLS0tLS0tLS0tLS0tCi0KLUZvciBkaXN0cmlidXRl
ZCB0ZXN0aW5nIHRoZSBzbGF2ZXMgbXVzdCBoYXZlIHRoZSBweXRlc3QtY292IHBhY2thZ2UgaW5z
dGFsbGVkLiAgVGhpcyBpcyBuZWVkZWQgc2luY2UKLXRoZSBwbHVnaW4gbXVzdCBiZSByZWdpc3Rl
cmVkIHRocm91Z2ggc2V0dXB0b29scyAvIGRpc3RyaWJ1dGUgZm9yIHB5dGVzdCB0byBzdGFydCB0
aGUgcGx1Z2luIG9uIHRoZQotc2xhdmUuCi0KLUZvciBzdWJwcm9jZXNzIG1lYXN1cmVtZW50IGVu
dmlyb25tZW50IHZhcmlhYmxlcyBtdXN0IG1ha2UgaXQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzIHRv
IHRoZQotc3VicHJvY2Vzcy4gIFRoZSBweXRob24gdXNlZCBieSB0aGUgc3VicHJvY2VzcyBtdXN0
IGhhdmUgcHl0ZXN0LWNvdiBpbnN0YWxsZWQuICBUaGUgc3VicHJvY2VzcyBtdXN0Ci1kbyBub3Jt
YWwgc2l0ZSBpbml0aWFsaXphdGlvbiBzbyB0aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg
Y2FuIGJlIGRldGVjdGVkIGFuZCBjb3ZlcmFnZQotc3RhcnRlZC4KLQotCi1BY2tub3dsZWRnbWVu
dHMKLS0tLS0tLS0tLS0tLS0tLS0KLQotSG9sZ2VyIEtyZWtlbCBmb3IgcHl0ZXN0IHdpdGggaXRz
IGRpc3RyaWJ1dGVkIHRlc3Rpbmcgc3VwcG9ydC4KLQotTmVkIEJhdGNoZWxkZXIgZm9yIGNvdmVy
YWdlIGFuZCBpdHMgYWJpbGl0eSB0byBjb21iaW5lIHRoZSBjb3ZlcmFnZSByZXN1bHRzIG9mIHBh
cmFsbGVsIHJ1bnMuCi0KLVdoaWxzdCB0aGlzIHBsdWdpbiBoYXMgYmVlbiBidWlsdCBmcmVzaCBm
cm9tIHRoZSBncm91bmQgdXAgdG8gc3VwcG9ydCBkaXN0cmlidXRlZCB0ZXN0aW5nIGl0IGhhcwot
YmVlbiBpbmZsdWVuY2VkIGJ5IHRoZSB3b3JrIGRvbmUgb24gcHl0ZXN0LWNvdmVyYWdlIChSb3Nz
IExhd2xleSwgSmFtZXMgTWlsbHMsIEhvbGdlciBLcmVrZWwpIGFuZAotbm9zZS1jb3ZlciAoSmFz
b24gUGVsbGVyaW4pIHdoaWNoIGFyZSBvdGhlciBjb3ZlcmFnZSBwbHVnaW5zIGZvciBweXRlc3Qg
YW5kIG5vc2UgcmVzcGVjdGl2ZWx5LgotCi1ObyBkb3VidCBvdGhlcnMgaGF2ZSBjb250cmlidXRl
ZCB0byB0aGVzZSB0b29scyBhcyB3ZWxsLgotCi1jb21tYW5kIGxpbmUgb3B0aW9ucwotLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotCi1gYC0tY292PXBhdGhgYAotICAgIG1lYXN1cmUgY292ZXJhZ2Ug
Zm9yIGZpbGVzeXN0ZW0gcGF0aCAobXVsdGktYWxsb3dlZCkKLWBgLS1jb3YtcmVwb3J0PXR5cGVg
YAotICAgIHR5cGUgb2YgcmVwb3J0IHRvIGdlbmVyYXRlOiB0ZXJtLCB0ZXJtLW1pc3NpbmcsIGFu
bm90YXRlLCBodG1sLCB4bWwgKG11bHRpLWFsbG93ZWQpCi1gYC0tY292LWNvbmZpZz1wYXRoYGAK
LSAgICBjb25maWcgZmlsZSBmb3IgY292ZXJhZ2UsIGRlZmF1bHQ6IC5jb3ZlcmFnZXJjCi0KLS4u
IGluY2x1ZGU6OiBsaW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0
L3BsdWdpbi9jb3ZlcmFnZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292
ZXJhZ2UucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTEzOWQwMDhiYTAuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292ZXJhZ2Uu
cnN0CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi1Xcml0ZSBhbmQgcmVwb3J0IGNv
dmVyYWdlIGRhdGEgd2l0aCB0aGUgJ2NvdmVyYWdlJyBwYWNrYWdlLgotPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0uLiBjb250
ZW50czo6Ci0gIDpsb2NhbDoKLQotTm90ZTogT3JpZ2luYWwgY29kZSBieSBSb3NzIExhd2xleS4g
Ci0KLUluc3RhbGwKLS0tLS0tLS0tLS0tLS0tCi0KLVVzZSBwaXAgdG8gKHVuKWluc3RhbGw6Ogot
Ci0gICAgcGlwIGluc3RhbGwgcHl0ZXN0LWNvdmVyYWdlIAotICAgIHBpcCB1bmluc3RhbGwgcHl0
ZXN0LWNvdmVyYWdlIAotCi1vciBhbHRlcm5hdGl2ZWx5IHVzZSBlYXN5X2luc3RhbGwgdG8gaW5z
dGFsbDo6Ci0KLSAgICBlYXN5X2luc3RhbGwgcHl0ZXN0LWNvdmVyYWdlIAotCi0KLVVzYWdlIAot
LS0tLS0tLS0tLS0tLQotCi1UbyBnZXQgZnVsbCB0ZXN0IGNvdmVyYWdlIHJlcG9ydHMgZm9yIGEg
cGFydGljdWxhciBwYWNrYWdlIHR5cGU6OgotCi0gICAgcHl0ZXN0IC0tY292ZXItcmVwb3J0PXJl
cG9ydAotCi1jb21tYW5kIGxpbmUgb3B0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1g
YC0tY292ZXI9Q09WRVJQQUNLQUdFU2BgCi0gICAgKG11bHRpIGFsbG93ZWQpIG9ubHkgaW5jbHVk
ZSBpbmZvIGZyb20gc3BlY2lmaWVkIHBhY2thZ2UuCi1gYC0tY292ZXItcmVwb3J0PVJFUE9SVF9U
WVBFYGAKLSAgICBodG1sOiBEaXJlY3RvcnkgZm9yIGh0bWwgb3V0cHV0LgotICAgICAgICAgICAg
ICAgICAgICByZXBvcnQ6IE91dHB1dCBhIHRleHQgcmVwb3J0LgotICAgICAgICAgICAgICAgICAg
ICBhbm5vdGF0ZTogQW5ub3RhdGUgeW91ciBzb3VyY2UgY29kZSBmb3Igd2hpY2ggbGluZXMgd2Vy
ZSBleGVjdXRlZCBhbmQgd2hpY2ggd2VyZSBub3QuCi0gICAgICAgICAgICAgICAgICAgIHhtbDog
T3V0cHV0IGFuIHhtbCByZXBvcnQgY29tcGF0aWJsZSB3aXRoIHRoZSBjb2JlcnR1cmEgcGx1Z2lu
IGZvciBodWRzb24uCi1gYC0tY292ZXItZGlyZWN0b3J5PURJUkVDVE9SWWBgCi0gICAgRGlyZWN0
b3J5IGZvciB0aGUgcmVwb3J0cyAoaHRtbCAvIGFubm90YXRlIHJlc3VsdHMpIGRlZmF1bHRzIHRv
IC4vY292ZXJhZ2UKLWBgLS1jb3Zlci14bWwtZmlsZT1YTUxfRklMRWBgCi0gICAgRmlsZSBmb3Ig
dGhlIHhtbCByZXBvcnQgZGVmYXVsdHMgdG8gLi9jb3ZlcmFnZS54bWwKLWBgLS1jb3Zlci1zaG93
LW1pc3NpbmdgYAotICAgIFNob3cgbWlzc2luZyBmaWxlcwotYGAtLWNvdmVyLWlnbm9yZS1lcnJv
cnM9SUdOT1JFX0VSUk9SU2BgCi0gICAgSWdub3JlIGVycm9ycyBvZiBmaW5kaW5nIHNvdXJjZSBm
aWxlcyBmb3IgY29kZS4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2RqYW5nby5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vdGVzdC9wbHVnaW4vZGphbmdvLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDYxNDk3YjM4NWVkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
cGx1Z2luL2RqYW5nby5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXB5dGVzdF9k
amFuZ28gcGx1Z2luIChFWFRFUk5BTCkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotCi1weXRlc3RfZGphbmdvIGlzIGEgcGx1Z2luIGZvciBgYHB5dGVzdGBgIHRo
YXQgcHJvdmlkZXMgYSBzZXQgb2YgdXNlZnVsIHRvb2xzIGZvciB0ZXN0aW5nIERqYW5nbyBhcHBs
aWNhdGlvbnMsIGNoZWNrb3V0IEJlbiBGaXJzaG1hbidzIGBweXRlc3RfZGphbmdvIGdpdGh1YiBw
YWdlYF8uCi0KLS4uIF9gcHl0ZXN0X2RqYW5nbyBnaXRodWIgcGFnZWA6IGh0dHA6Ly9naXRodWIu
Y29tL2JmaXJzaC9weXRlc3RfZGphbmdvL3RyZWUvbWFzdGVyCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9maWdsZWFmLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi90ZXN0L3BsdWdpbi9maWdsZWFmLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGMxNjAzYWRlOWZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
cGx1Z2luL2ZpZ2xlYWYucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotCi1yZXBv
cnQgdGVzdCBjb3ZlcmFnZSB1c2luZyB0aGUgJ2ZpZ2xlYWYnIHBhY2thZ2UuCi09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotLi4gY29udGVudHM6
OgotICA6bG9jYWw6Ci0KLUluc3RhbGwKLS0tLS0tLS0tLS0tLS0tLQotCi1UbyBpbnN0YWxsIHRo
ZSBwbHVnaW4gaXNzdWU6OgotCi0gICAgZWFzeV9pbnN0YWxsIHB5dGVzdC1maWdsZWFmICAjIG9y
Ci0gICAgcGlwIGluc3RhbGwgcHl0ZXN0LWZpZ2xlYWYgICAKLQotYW5kIGlmIHlvdSBhcmUgdXNp
bmcgcGlwIHlvdSBjYW4gYWxzbyB1bmluc3RhbGw6OgotCi0gICAgcGlwIHVuaW5zdGFsbCBweXRl
c3QtZmlnbGVhZgotCi0KLVVzYWdlCi0tLS0tLS0tLS0tLS0tLS0KLQotQWZ0ZXIgaW5zdGFsbGF0
aW9uIHlvdSBjYW4gc2ltcGx5IHR5cGU6OgotCi0gICAgcHl0ZXN0IC0tZmlnbGVhZiBbLi4uXQot
Ci10byBlbmFibGUgZmlnbGVhZiBjb3ZlcmFnZSBpbiB5b3VyIHRlc3QgcnVuLiAgQSBkZWZhdWx0
ICIuZmlnbGVhZiIgZGF0YSBmaWxlCi1hbmQgImh0bWwiIGRpcmVjdG9yeSB3aWxsIGJlIGNyZWF0
ZWQuICBZb3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgb3B0aW9ucwotdG8gY29udHJvbCB3aGVyZSBk
YXRhIGFuZCBodG1sIGZpbGVzIGFyZSBjcmVhdGVkLgotCi1jb21tYW5kIGxpbmUgb3B0aW9ucwot
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1gYC0tZmlnbGVhZmBgCi0gICAgdHJhY2UgcHl0aG9u
IGNvdmVyYWdlIHdpdGggZmlnbGVhZiBhbmQgd3JpdGUgSFRNTCBmb3IgZmlsZXMgYmVsb3cgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXIKLWBgLS1maWctZGF0YT1kaXJgYAotICAgIHNldCB0cmFjaW5n
IGZpbGUsIGRlZmF1bHQ6ICIuZmlnbGVhZiIuCi1gYC0tZmlnLWh0bWw9ZGlyYGAKLSAgICBzZXQg
aHRtbCByZXBvcnRpbmcgZGlyLCBkZWZhdWx0ICJodG1sIi4KLQotLi4gaW5jbHVkZTo6IGxpbmtz
LnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2hlbHBjb25m
aWcucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2hlbHBjb25maWcucnN0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjZiNzVjNDU1MmUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vaGVscGNvbmZpZy5yc3QKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0KLXByb3ZpZGUgdmVyc2lvbiBpbmZvLCBjb25mdGVz
dC9lbnZpcm9ubWVudCBjb25maWcgbmFtZXMuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2Fs
OgotCi0KLQotY29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQot
YGAtLXZlcnNpb25gYAotICAgIGRpc3BsYXkgcHkgbGliIHZlcnNpb24gYW5kIGltcG9ydCBpbmZv
cm1hdGlvbi4KLWBgLXAgbmFtZWBgCi0gICAgZWFybHktbG9hZCBnaXZlbiBwbHVnaW4gKG11bHRp
LWFsbG93ZWQpLgotYGAtLXRyYWNlLWNvbmZpZ2BgCi0gICAgdHJhY2UgY29uc2lkZXJhdGlvbnMg
b2YgY29uZnRlc3QucHkgZmlsZXMuCi1gYC0tZGVidWdgYAotICAgIGdlbmVyYXRlIGFuZCBzaG93
IGludGVybmFsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KLWBgLS1oZWxwLWNvbmZpZ2BgCi0gICAg
c2hvdyBhdmFpbGFibGUgY29uZnRlc3QucHkgYW5kIEVOVi12YXJpYWJsZSBuYW1lcy4KLQotU3Rh
cnQgaW1wcm92aW5nIHRoaXMgcGx1Z2luIGluIDMwIHNlY29uZHMKLT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotMS4gRG93bmxvYWQgYHB5dGVzdF9oZWxwY29u
ZmlnLnB5YF8gcGx1Z2luIHNvdXJjZSBjb2RlCi0yLiBwdXQgaXQgc29tZXdoZXJlIGFzIGBgcHl0
ZXN0X2hlbHBjb25maWcucHlgYCBpbnRvIHlvdXIgaW1wb3J0IHBhdGgKLTMuIGEgc3Vic2VxdWVu
dCBgYHB5dGVzdGBgIHJ1biB3aWxsIHVzZSB5b3VyIGxvY2FsIHZlcnNpb24KLQotQ2hlY2tvdXQg
Y3VzdG9taXplXywgb3RoZXIgcGx1Z2luc18gb3IgYGdldCBpbiBjb250YWN0YF8uCi0KLS4uIGlu
Y2x1ZGU6OiBsaW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3Bs
dWdpbi9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vaW5kZXgucnN0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTNhNGRjZTY4MWMuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vaW5kZXgucnN0CisrKyAvZGV2
L251bGwKQEAgLTEsNjggKzAsMCBAQAotCi1hZHZhbmNlZCBweXRob24gdGVzdGluZwotPT09PT09
PT09PT09PT09PT09PT09PT0KLQotc2tpcHBpbmdfIGFkdmFuY2VkIHNraXBwaW5nIGZvciBweXRo
b24gdGVzdCBmdW5jdGlvbnMsIGNsYXNzZXMgb3IgbW9kdWxlcy4KLQotbWFya18gZ2VuZXJpYyBt
ZWNoYW5pc20gZm9yIG1hcmtpbmcgcHl0aG9uIGZ1bmN0aW9ucy4KLQotcGRiXyBpbnRlcmFjdGl2
ZSBkZWJ1Z2dpbmcgd2l0aCB0aGUgUHl0aG9uIERlYnVnZ2VyLgotCi1maWdsZWFmXyAoZXh0ZXJu
YWwpIHJlcG9ydCB0ZXN0IGNvdmVyYWdlIHVzaW5nIHRoZSAnZmlnbGVhZicgcGFja2FnZS4KLQot
bW9ua2V5cGF0Y2hfIHNhZmVseSBwYXRjaCBvYmplY3QgYXR0cmlidXRlcywgZGljdHMgYW5kIGVu
dmlyb25tZW50IHZhcmlhYmxlcy4KLQotY292ZXJhZ2VfIChleHRlcm5hbCkgV3JpdGUgYW5kIHJl
cG9ydCBjb3ZlcmFnZSBkYXRhIHdpdGggdGhlICdjb3ZlcmFnZScgcGFja2FnZS4KLQotY292XyAo
ZXh0ZXJuYWwpIHByb2R1Y2UgY29kZSBjb3ZlcmFnZSByZXBvcnRzIHVzaW5nIHRoZSAnY292ZXJh
Z2UnIHBhY2thZ2UsIGluY2x1ZGluZyBzdXBwb3J0IGZvciBkaXN0cmlidXRlZCB0ZXN0aW5nLgot
Ci1jYXB0dXJlXyBjb25maWd1cmFibGUgcGVyLXRlc3Qgc3Rkb3V0L3N0ZGVyciBjYXB0dXJpbmcg
bWVjaGFuaXNtcy4KLQotY2FwdHVyZWxvZ18gKGV4dGVybmFsKSBjYXB0dXJlIG91dHB1dCBvZiBs
b2dnaW5nIG1vZHVsZS4KLQotcmVjd2Fybl8gaGVscGVycyBmb3IgYXNzZXJ0aW5nIGRlcHJlY2F0
aW9uIGFuZCBvdGhlciB3YXJuaW5ncy4KLQotdG1wZGlyXyBwcm92aWRlIHRlbXBvcmFyeSBkaXJl
Y3RvcmllcyB0byB0ZXN0IGZ1bmN0aW9ucy4KLQotCi1kaXN0cmlidXRlZCB0ZXN0aW5nLCBDSSBh
bmQgZGVwbG95bWVudAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
eGRpc3RfIChleHRlcm5hbCkgbG9vcCBvbiBmYWlsaW5nIHRlc3RzLCBkaXN0cmlidXRlIHRlc3Qg
cnVucyB0byBDUFVzIGFuZCBob3N0cy4KLQotcGFzdGViaW5fIHN1Ym1pdCBmYWlsdXJlIG9yIHRl
c3Qgc2Vzc2lvbiBpbmZvcm1hdGlvbiB0byBhIHBhc3RlYmluIHNlcnZpY2UuCi0KLWp1bml0eG1s
XyBsb2dnaW5nIG9mIHRlc3QgcmVzdWx0cyBpbiBKVW5pdC1YTUwgZm9ybWF0LCBmb3IgdXNlIHdp
dGggSHVkc29uCi0KLXJlc3VsdGxvZ18gbm9uLXhtbCBtYWNoaW5lLXJlYWRhYmxlIGxvZ2dpbmcg
b2YgdGVzdCByZXN1bHRzLgotCi1nZW5zY3JpcHRfIGdlbmVyYXRlIHN0YW5kYWxvbmUgdGVzdCBz
Y3JpcHQgdG8gYmUgZGlzdHJpYnV0ZWQgYWxvbmcgd2l0aCBhbiBhcHBsaWNhdGlvbi4KLQotCi10
ZXN0aW5nIGRvbWFpbnMgYW5kIGNvbnZlbnRpb25zIGNvZGVjaGVja2VycwotPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotb2Vqc2tpdF8gKGV4dGVybmFsKSBy
dW4gamF2YXNjcmlwdCB0ZXN0cyBpbiByZWFsIGxpZmUgYnJvd3NlcnMKLQotZGphbmdvXyAoZXh0
ZXJuYWwpIGZvciB0ZXN0aW5nIGRqYW5nbyBhcHBsaWNhdGlvbnMKLQotdW5pdHRlc3RfIGF1dG9t
YXRpY2FsbHkgZGlzY292ZXIgYW5kIHJ1biB0cmFkaXRpb25hbCAidW5pdHRlc3QucHkiIHN0eWxl
IHRlc3RzLgotCi1ub3NlXyBub3NlLWNvbXBhdGliaWxpdHkgcGx1Z2luOiBhbGxvdyB0byBydW4g
bm9zZSB0ZXN0IHN1aXRlcyBuYXRpdmVseS4KLQotZG9jdGVzdF8gY29sbGVjdCBhbmQgZXhlY3V0
ZSBkb2N0ZXN0cyBmcm9tIG1vZHVsZXMgYW5kIHRlc3QgZmlsZXMuCi0KLXJlc3Rkb2NfIHBlcmZv
cm0gUmVTVCBzeW50YXgsIGxvY2FsIGFuZCByZW1vdGUgcmVmZXJlbmNlIHRlc3RzIG9uIC5yc3Qv
LnR4dCBmaWxlcy4KLQotCi1pbnRlcm5hbCwgZGVidWdnaW5nLCBoZWxwIGZ1bmN0aW9uYWxpdHkK
LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1oZWxwY29uZmlnXyBw
cm92aWRlIHZlcnNpb24gaW5mbywgY29uZnRlc3QvZW52aXJvbm1lbnQgY29uZmlnIG5hbWVzLgot
Ci10ZXJtaW5hbF8gSW1wbGVtZW50cyB0ZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVz
dGluZyBwcm9jZXNzLgotCi1ob29rbG9nXyBsb2cgaW52b2NhdGlvbnMgb2YgZXh0ZW5zaW9uIGhv
b2tzIHRvIGEgZmlsZS4KLQotCi0uLiBpbmNsdWRlOjogbGlua3MudHh0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vbGlua3MucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3Rlc3QvcGx1Z2luL2xpbmtzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NmRlYzJiNDg0OGE2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
cGx1Z2luL2xpbmtzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS4uIF9gaGVs
cGNvbmZpZ2A6IGhlbHBjb25maWcuaHRtbAotLi4gX2BweXRlc3RfcmVjd2Fybi5weWA6IGh0dHA6
Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVz
dF9yZWN3YXJuLnB5Ci0uLiBfYHVuaXR0ZXN0YDogdW5pdHRlc3QuaHRtbAotLi4gX2BweXRlc3Rf
bW9ua2V5cGF0Y2gucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcv
MS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfbW9ua2V5cGF0Y2gucHkKLS4uIF9gcGFzdGViaW5gOiBw
YXN0ZWJpbi5odG1sCi0uLiBfYHNraXBwaW5nYDogc2tpcHBpbmcuaHRtbAotLi4gX2BwbHVnaW5z
YDogaW5kZXguaHRtbAotLi4gX2BtYXJrYDogbWFyay5odG1sCi0uLiBfYHRtcGRpcmA6IHRtcGRp
ci5odG1sCi0uLiBfYHB5dGVzdF9kb2N0ZXN0LnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBr
NDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X2RvY3Rlc3QucHkKLS4uIF9g
Y2FwdHVyZWA6IGNhcHR1cmUuaHRtbAotLi4gX2BweXRlc3Rfbm9zZS5weWA6IGh0dHA6Ly9iaXRi
dWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9ub3Nl
LnB5Ci0uLiBfYHB5dGVzdF9yZXN0ZG9jLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIv
cHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3Jlc3Rkb2MucHkKLS4uIF9gcmVz
dGRvY2A6IHJlc3Rkb2MuaHRtbAotLi4gX2B4ZGlzdGA6IHhkaXN0Lmh0bWwKLS4uIF9gcHl0ZXN0
X3Bhc3RlYmluLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEu
My40L3B5L19wbHVnaW4vcHl0ZXN0X3Bhc3RlYmluLnB5Ci0uLiBfYHB5dGVzdF90bXBkaXIucHlg
OiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdp
bi9weXRlc3RfdG1wZGlyLnB5Ci0uLiBfYHRlcm1pbmFsYDogdGVybWluYWwuaHRtbAotLi4gX2Bw
eXRlc3RfaG9va2xvZy5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jh
dy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9ob29rbG9nLnB5Ci0uLiBfYGNhcHR1cmVsb2dgOiBj
YXB0dXJlbG9nLmh0bWwKLS4uIF9ganVuaXR4bWxgOiBqdW5pdHhtbC5odG1sCi0uLiBfYHB5dGVz
dF9za2lwcGluZy5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8x
LjMuNC9weS9fcGx1Z2luL3B5dGVzdF9za2lwcGluZy5weQotLi4gX2BjaGVja291dCB0aGUgcHl0
ZXN0IGRldmVsb3BtZW50IHZlcnNpb25gOiAuLi8uLi9pbnN0YWxsLmh0bWwjY2hlY2tvdXQKLS4u
IF9gcHl0ZXN0X2hlbHBjb25maWcucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10
cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfaGVscGNvbmZpZy5weQotLi4gX2BvZWpz
a2l0YDogb2Vqc2tpdC5odG1sCi0uLiBfYGRvY3Rlc3RgOiBkb2N0ZXN0Lmh0bWwKLS4uIF9gcHl0
ZXN0X21hcmsucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4z
LjQvcHkvX3BsdWdpbi9weXRlc3RfbWFyay5weQotLi4gX2BnZXQgaW4gY29udGFjdGA6IC4uLy4u
L2NvbnRhY3QuaHRtbAotLi4gX2BweXRlc3RfY2FwdHVyZS5weWA6IGh0dHA6Ly9iaXRidWNrZXQu
b3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9jYXB0dXJlLnB5
Ci0uLiBfYGZpZ2xlYWZgOiBmaWdsZWFmLmh0bWwKLS4uIF9gY3VzdG9taXplYDogLi4vY3VzdG9t
aXplLmh0bWwKLS4uIF9gaG9va2xvZ2A6IGhvb2tsb2cuaHRtbAotLi4gX2BweXRlc3RfdGVybWlu
YWwucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkv
X3BsdWdpbi9weXRlc3RfdGVybWluYWwucHkKLS4uIF9gcmVjd2FybmA6IHJlY3dhcm4uaHRtbAot
Li4gX2BweXRlc3RfcGRiLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsv
cmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3BkYi5weQotLi4gX2Btb25rZXlwYXRjaGA6IG1v
bmtleXBhdGNoLmh0bWwKLS4uIF9gY292ZXJhZ2VgOiBjb3ZlcmFnZS5odG1sCi0uLiBfYHJlc3Vs
dGxvZ2A6IHJlc3VsdGxvZy5odG1sCi0uLiBfYGNvdmA6IGNvdi5odG1sCi0uLiBfYHB5dGVzdF9q
dW5pdHhtbC5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMu
NC9weS9fcGx1Z2luL3B5dGVzdF9qdW5pdHhtbC5weQotLi4gX2BkamFuZ29gOiBkamFuZ28uaHRt
bAotLi4gX2BweXRlc3RfdW5pdHRlc3QucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9w
eS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfdW5pdHRlc3QucHkKLS4uIF9gbm9z
ZWA6IG5vc2UuaHRtbAotLi4gX2BweXRlc3RfcmVzdWx0bG9nLnB5YDogaHR0cDovL2JpdGJ1Y2tl
dC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3Jlc3VsdGxv
Zy5weQotLi4gX2BwZGJgOiBwZGIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL25vc2UucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL25v
c2UucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWVhZTVmZjY5N2YuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vbm9zZS5yc3QKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0KLW5vc2UtY29tcGF0aWJpbGl0eSBwbHVnaW46
IGFsbG93IHRvIHJ1biBub3NlIHRlc3Qgc3VpdGVzIG5hdGl2ZWx5LgotPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQot
Li4gY29udGVudHM6OgotICA6bG9jYWw6Ci0KLVRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIHBsdWdp
biBmb3IgYWxsb3dpbmcgdG8gcnVuIHRlc3RzIHdyaXR0ZW4KLWluICdub3NldGVzdHMnIHN0eWxl
IHdpdGggYGBweXRlc3RgYC4KLQotVXNhZ2UKLS0tLS0tLS0tLS0tLS0KLQotdHlwZTo6Ci0KLSAg
ICBweXRlc3QgICMgaW5zdGVhZCBvZiAnbm9zZXRlc3RzJwotCi1hbmQgeW91IHNob3VsZCBiZSBh
YmxlIHRvIHJ1biBub3NlIHN0eWxlIHRlc3RzIGFuZCBhdCB0aGUgc2FtZQotdGltZSBjYW4gbWFr
ZSBmdWxsIHVzZSBvZiBweXRlc3QncyBjYXBhYmlsaXRpZXMuCi0KLVN1cHBvcnRlZCBub3NlIElk
aW9tcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0qIHNldHVwIGFuZCB0ZWFyZG93biBhdCBt
b2R1bGUvY2xhc3MvbWV0aG9kIGxldmVsCi0qIFNraXBUZXN0IGV4Y2VwdGlvbnMgYW5kIG1hcmtl
cnMKLSogc2V0dXAvdGVhcmRvd24gZGVjb3JhdG9ycwotKiB5aWVsZC1iYXNlZCB0ZXN0cyBhbmQg
dGhlaXIgc2V0dXAKLSogZ2VuZXJhbCB1c2FnZSBvZiBub3NlIHV0aWxpdGllcwotCi1VbnN1cHBv
cnRlZCBpZGlvbXMgLyBpc3N1ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotLSBub3NlLXN0eWxlIGRvY3Rlc3RzIGFyZSBub3QgY29sbGVjdGVkIGFuZCBleGVjdXRlZCBj
b3JyZWN0bHksCi0gIGFsc28gZml4dHVyZXMgZG9uJ3Qgd29yay4KLQotLSBubyBub3NlLWNvbmZp
Z3VyYXRpb24gaXMgcmVjb2duaXplZAotCi1JZiB5b3UgZmluZCBvdGhlciBpc3N1ZXMgb3IgaGF2
ZSBzdWdnZXN0aW9ucyBwbGVhc2UgcnVuOjoKLQotICAgIHB5dGVzdCAtLXBhc3RlYmluPWFsbAot
Ci1hbmQgc2VuZCB0aGUgcmVzdWx0aW5nIFVSTCB0byBhIGBgcHl0ZXN0YGAgY29udGFjdCBjaGFu
bmVsLAotYXQgYmVzdCB0byB0aGUgbWFpbGluZyBsaXN0LgotCi1TdGFydCBpbXByb3ZpbmcgdGhp
cyBwbHVnaW4gaW4gMzAgc2Vjb25kcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLQotCi0xLiBEb3dubG9hZCBgcHl0ZXN0X25vc2UucHlgXyBwbHVnaW4gc291cmNl
IGNvZGUKLTIuIHB1dCBpdCBzb21ld2hlcmUgYXMgYGBweXRlc3Rfbm9zZS5weWBgIGludG8geW91
ciBpbXBvcnQgcGF0aAotMy4gYSBzdWJzZXF1ZW50IGBgcHl0ZXN0YGAgcnVuIHdpbGwgdXNlIHlv
dXIgbG9jYWwgdmVyc2lvbgotCi1DaGVja291dCBjdXN0b21pemVfLCBvdGhlciBwbHVnaW5zXyBv
ciBgZ2V0IGluIGNvbnRhY3RgXy4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLnR4dApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL29lanNraXQucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3Rlc3QvcGx1Z2luL29lanNraXQucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0OTk1YWExN2M3MmQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vdGVzdC9wbHVnaW4vb2Vqc2tpdC5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBA
Ci1weXRlc3Rfb2Vqc2tpdCBwbHVnaW4gKEVYVEVSTkFMKQotPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZSBgb2Vqc2tpdGBfIG9mZmVycyBhIGBgcHl0ZXN0
YGAgcGx1Z2luIGZvciBydW5uaW5nIEphdmFzY3JpcHQgdGVzdHMgaW4gbGl2ZSBicm93c2Vycy4g
ICBSdW5uaW5nIGluc2lkZSB0aGUgYnJvd3NlcnMgY29tZXMgd2l0aCBzb21lIHNwZWVkIGNvc3Qs
IG9uIHRoZSBvdGhlciBoYW5kIGl0IG1lYW5zIGZvciBleGFtcGxlIHRoZSBjb2RlIGlzIHRlc3Rl
ZCBhZ2FpbnN0IHRoZSByZWFsLXdvcmQgRE9NIGltcGxlbWVudGF0aW9ucy4KLVRoZSBhcHByb2Fj
aCBlbmFibGVzIHRvIHdyaXRlIGludGVncmF0aW9uIHRlc3RzIHN1Y2ggdGhhdCB0aGUgSmF2YVNj
cmlwdCBjb2RlIGlzIHRlc3RlZCBhZ2FpbnN0IHNlcnZlci1zaWRlIFB5dGhvbiBjb2RlIG1vY2tl
ZCBhcyBuZWNlc3NhcnkuIEFueSBzZXJ2ZXItc2lkZSBmcmFtZXdvcmsgdGhhdCBjYW4gYWxyZWFk
eSBiZSBleHBvc2VkIHRocm91Z2ggV1NHSSAob3IgZm9yIHdoaWNoIGEgc3Vic2V0IG9mIFdTR0kg
Y2FuIGJlIHdyaXR0ZW4gdG8gYWNjb21tb2RhdGUgdGhlIGpza2l0IG93biBuZWVkcykgY2FuIHBs
YXkgYWxvbmcuCi0KLUZvciBtb3JlIGluZm8gYW5kIGRvd25sb2FkIHBsZWFzZSB2aXNpdCB0aGUg
YG9lanNraXQgUHlQSWBfIHBhZ2UuCi0KLS4uIF9gb2Vqc2tpdGA6Ci0uLiBfYG9lanNraXQgUHlQ
SWA6IGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vZWpza2l0Ci0KLS4uIHNvdXJjZSBsaW5r
ICdodHRwOi8vYml0YnVja2V0Lm9yZy9wZWRyb25pcy9qcy1pbmZyYXN0cnVjdHVyZS9zcmMvdGlw
L3B5dGVzdF9qc3Rlc3RzLnB5JywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0
L3BsdWdpbi90ZXJtaW5hbC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vdGVy
bWluYWwucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDdkNGY3MjE4M2EuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vdGVybWluYWwu
cnN0CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi1JbXBsZW1lbnRzIHRlcm1pbmFs
IHJlcG9ydGluZyBvZiB0aGUgZnVsbCB0ZXN0aW5nIHByb2Nlc3MuCi09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotLi4gY29udGVu
dHM6OgotICA6bG9jYWw6Ci0KLVRoaXMgaXMgYSBnb29kIHNvdXJjZSBmb3IgbG9va2luZyBhdCB0
aGUgdmFyaW91cyByZXBvcnRpbmcgaG9va3MuCi0KLWNvbW1hbmQgbGluZSBvcHRpb25zCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0KLWBgLXYsIC0tdmVyYm9zZWBgCi0gICAgaW5jcmVhc2UgdmVy
Ym9zaXR5LgotYGAtciBjaGFyc2BgCi0gICAgc2hvdyBleHRyYSB0ZXN0IHN1bW1hcnkgaW5mbyBh
cyBzcGVjaWZpZWQgYnkgY2hhcnMgKGYpYWlsZWQsIChzKXNraXBwZWQsICh4KWZhaWxlZCwgKFgp
cGFzc2VkLgotYGAtbCwgLS1zaG93bG9jYWxzYGAKLSAgICBzaG93IGxvY2FscyBpbiB0cmFjZWJh
Y2tzIChkaXNhYmxlZCBieSBkZWZhdWx0KS4KLWBgLS10Yj1zdHlsZWBgCi0gICAgdHJhY2ViYWNr
IHByaW50IG1vZGUgKGxvbmcvc2hvcnQvbGluZS9ubykuCi1gYC0tZnVsbC10cmFjZWBgCi0gICAg
ZG9uJ3QgY3V0IGFueSB0cmFjZWJhY2tzIChkZWZhdWx0IGlzIHRvIGN1dCkuCi1gYC0tZml4dHVy
ZXNgYAotICAgIHNob3cgYXZhaWxhYmxlIGZ1bmN0aW9uIGFyZ3VtZW50cywgc29ydGVkIGJ5IHBs
dWdpbgotCi1TdGFydCBpbXByb3ZpbmcgdGhpcyBwbHVnaW4gaW4gMzAgc2Vjb25kcwotPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0xLiBEb3dubG9hZCBgcHl0
ZXN0X3Rlcm1pbmFsLnB5YF8gcGx1Z2luIHNvdXJjZSBjb2RlCi0yLiBwdXQgaXQgc29tZXdoZXJl
IGFzIGBgcHl0ZXN0X3Rlcm1pbmFsLnB5YGAgaW50byB5b3VyIGltcG9ydCBwYXRoCi0zLiBhIHN1
YnNlcXVlbnQgYGBweXRlc3RgYCBydW4gd2lsbCB1c2UgeW91ciBsb2NhbCB2ZXJzaW9uCi0KLUNo
ZWNrb3V0IGN1c3RvbWl6ZV8sIG90aGVyIHBsdWdpbnNfIG9yIGBnZXQgaW4gY29udGFjdGBfLgot
Ci0uLiBpbmNsdWRlOjogbGlua3MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGVzdC9wbHVnaW4vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVn
aW4vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MDY3MTdk
NGQzZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9jb3YucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL2NvdmVyYWdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdp
bi9kamFuZ28ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2ZpZ2xlYWYucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2hlbHBjb25maWcucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90
ZXN0L3BsdWdpbi9saW5rcy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vbm9z
ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vb2Vqc2tpdC5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vdGVybWluYWwucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3Rlc3QvcGx1Z2luL3hkaXN0LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL3hkaXN0LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi94
ZGlzdC5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNmQyNDBhZWUxMy4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi94ZGlzdC5yc3QK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotCi1sb29wIG9uIGZhaWxpbmcgdGVzdHMs
IGRpc3RyaWJ1dGUgdGVzdCBydW5zIHRvIENQVXMgYW5kIGhvc3RzLgotPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0uLiBj
b250ZW50czo6Ci0gIDpsb2NhbDoKLQotVGhlIGBweXRlc3QteGRpc3RgXyBwbHVnaW4gZXh0ZW5k
cyBgYHB5dGVzdGBgIHdpdGggc29tZSB1bmlxdWUKLXRlc3QgZXhlY3V0aW9uIG1vZGVzOgotCi0q
IExvb3BvbmZhaWw6IHJ1biB5b3VyIHRlc3RzIHJlcGVhdGVkbHkgaW4gYSBzdWJwcm9jZXNzLiAg
QWZ0ZXIgZWFjaCBydW4KLSAgYGBweXRlc3RgYCB3YWl0cyB1bnRpbCBhIGZpbGUgaW4geW91ciBw
cm9qZWN0IGNoYW5nZXMgYW5kIHRoZW4gcmUtcnVucyB0aGUKLSAgcHJldmlvdXNseSBmYWlsaW5n
IHRlc3RzLiAgVGhpcyBpcyByZXBlYXRlZCB1bnRpbCBhbGwgdGVzdHMgcGFzcyBhZnRlciB3aGlj
aAotICBhZ2FpbiBhIGZ1bGwgcnVuIGlzIHBlcmZvcm1lZC4KLQotKiBMb2FkLWJhbGFuY2luZzog
aWYgeW91IGhhdmUgbXVsdGlwbGUgQ1BVcyBvciBob3N0cyB5b3UgY2FuIHVzZQotICB0aG9zZSBm
b3IgYSBjb21iaW5lZCB0ZXN0IHJ1bi4gIFRoaXMgYWxsb3dzIHRvIHNwZWVkIHVwCi0gIGRldmVs
b3BtZW50IG9yIHRvIHVzZSBzcGVjaWFsIHJlc291cmNlcyBvZiByZW1vdGUgbWFjaGluZXMuCi0K
LSogTXVsdGktUGxhdGZvcm0gY292ZXJhZ2U6IHlvdSBjYW4gc3BlY2lmeSBkaWZmZXJlbnQgUHl0
aG9uIGludGVycHJldGVycwotICBvciBkaWZmZXJlbnQgcGxhdGZvcm1zIGFuZCBydW4gdGVzdHMg
aW4gcGFyYWxsZWwgb24gYWxsIG9mIHRoZW0uCi0KLUJlZm9yZSBydW5uaW5nIHRlc3RzIHJlbW90
ZWx5LCBgYHB5dGVzdGBgIGVmZmljaWVudGx5IHN5bmNocm9uaXplcyB5b3VyCi1wcm9ncmFtIHNv
dXJjZSBjb2RlIHRvIHRoZSByZW1vdGUgcGxhY2UuICBBbGwgdGVzdCByZXN1bHRzCi1hcmUgcmVw
b3J0ZWQgYmFjayBhbmQgZGlzcGxheWVkIHRvIHlvdXIgbG9jYWwgdGVzdCBzZXNzaW9uLgotWW91
IG1heSBzcGVjaWZ5IGRpZmZlcmVudCBQeXRob24gdmVyc2lvbnMgYW5kIGludGVycHJldGVycy4K
LQotLi4gX2BweXRlc3QteGRpc3RgOiBodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ZXN0
LXhkaXN0Ci0KLVVzYWdlIGV4YW1wbGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU3BlZWQg
dXAgdGVzdCBydW5zIGJ5IHNlbmRpbmcgdGVzdHMgdG8gbXVsdGlwbGUgQ1BVcwotKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotVG8g
c2VuZCB0ZXN0cyB0byBtdWx0aXBsZSBDUFVzLCB0eXBlOjoKLQotICAgIHB5dGVzdCAtbiBOVU0K
LQotRXNwZWNpYWxseSBmb3IgbG9uZ2VyIHJ1bm5pbmcgdGVzdHMgb3IgdGVzdHMgcmVxdWlyaW5n
Ci1hIGxvdCBvZiBJTyB0aGlzIGNhbiBsZWFkIHRvIGNvbnNpZGVyYWJsZSBzcGVlZCB1cHMuCi0K
LQotUnVubmluZyB0ZXN0cyBpbiBhIFB5dGhvbiBzdWJwcm9jZXNzCi0rKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1UbyBpbnN0YW50
aWF0ZSBhIHB5dGhvbjIuNCBzdWIgcHJvY2VzcyBhbmQgc2VuZCB0ZXN0cyB0byBpdCwgeW91IG1h
eSB0eXBlOjoKLQotICAgIHB5dGVzdCAtZCAtLXR4IHBvcGVuLy9weXRob249cHl0aG9uMi40Ci0K
LVRoaXMgd2lsbCBzdGFydCBhIHN1YnByb2Nlc3Mgd2hpY2ggaXMgcnVuIHdpdGggdGhlICJweXRo
b24yLjQiCi1QeXRob24gaW50ZXJwcmV0ZXIsIGZvdW5kIGluIHlvdXIgc3lzdGVtIGJpbmFyeSBs
b29rdXAgcGF0aC4KLQotSWYgeW91IHByZWZpeCB0aGUgLS10eCBvcHRpb24gdmFsdWUgbGlrZSB0
aGlzOjoKLQotICAgIC0tdHggMypwb3Blbi8vcHl0aG9uPXB5dGhvbjIuNAotCi10aGVuIHRocmVl
IHN1YnByb2Nlc3NlcyB3b3VsZCBiZSBjcmVhdGVkIGFuZCB0ZXN0cwotd2lsbCBiZSBsb2FkLWJh
bGFuY2VkIGFjcm9zcyB0aGVzZSB0aHJlZSBwcm9jZXNzZXMuCi0KLQotU2VuZGluZyB0ZXN0cyB0
byByZW1vdGUgU1NIIGFjY291bnRzCi0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKwotCi1TdXBwb3NlIHlvdSBoYXZlIGEgcGFja2FnZSBg
YG15cGtnYGAgd2hpY2ggY29udGFpbnMgc29tZQotdGVzdHMgdGhhdCB5b3UgY2FuIHN1Y2Nlc3Nm
dWxseSBydW4gbG9jYWxseS4gQW5kIHlvdQotaGF2ZSBhIHNzaC1yZWFjaGFibGUgbWFjaGluZSBg
YG15aG9zdGBgLiAgVGhlbgoteW91IGNhbiBhZC1ob2MgZGlzdHJpYnV0ZSB5b3VyIHRlc3RzIGJ5
IHR5cGluZzo6Ci0KLSAgICBweXRlc3QgLWQgLS10eCBzc2g9bXlob3N0cG9wZW4gLS1yc3luY2Rp
ciBteXBrZyBteXBrZwotCi1UaGlzIHdpbGwgc3luY2hyb25pemUgeW91ciBgYG15cGtnYGAgcGFj
a2FnZSBkaXJlY3RvcnkKLXRvIGEgcmVtb3RlIHNzaCBhY2NvdW50IGFuZCB0aGVuIGxvY2FsbHkg
Y29sbGVjdCB0ZXN0cwotYW5kIHNlbmQgdGhlbSB0byByZW1vdGUgcGxhY2VzIGZvciBleGVjdXRp
b24uCi0KLVlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBgYC0tcnN5bmNkaXJgYCBkaXJlY3Rvcmll
cwotdG8gYmUgc2VudCB0byB0aGUgcmVtb3RlIHNpZGUuCi0KLSoqTk9URToqKiBGb3IgYGBweXRl
c3RgYCB0byBjb2xsZWN0IGFuZCBzZW5kIHRlc3RzIGNvcnJlY3RseQoteW91IG5vdCBvbmx5IG5l
ZWQgdG8gbWFrZSBzdXJlIGFsbCBjb2RlIGFuZCB0ZXN0cwotZGlyZWN0b3JpZXMgYXJlIHJzeW5j
ZWQsIGJ1dCB0aGF0IGFueSB0ZXN0IChzdWIpIGRpcmVjdG9yeQotYWxzbyBoYXMgYW4gYGBfX2lu
aXRfXy5weWBgIGZpbGUgYmVjYXVzZSBpbnRlcm5hbGx5Ci1gYHB5dGVzdGBgIHJlZmVyZW5jZXMg
dGVzdHMgdXNpbmcgdGhlaXIgZnVsbHkgcXVhbGlmaWVkIHB5dGhvbgotbW9kdWxlIHBhdGguICAq
KllvdSB3aWxsIG90aGVyd2lzZSBnZXQgc3RyYW5nZSBlcnJvcnMqKgotZHVyaW5nIHNldHVwIG9m
IHRoZSByZW1vdGUgc2lkZS4KLQotU2VuZGluZyB0ZXN0cyB0byByZW1vdGUgU29ja2V0IFNlcnZl
cnMKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCi0KLURvd25sb2FkIHRoZSBzaW5nbGUtbW9kdWxlIGBzb2NrZXRzZXJ2ZXIucHlgXyBQ
eXRob24gcHJvZ3JhbQotYW5kIHJ1biBpdCBsaWtlIHRoaXM6OgotCi0gICAgcHl0aG9uIHNvY2tl
dHNlcnZlci5weQotCi1JdCB3aWxsIHRlbGwgeW91IHRoYXQgaXQgc3RhcnRzIGxpc3RlbmluZyBv
biB0aGUgZGVmYXVsdAotcG9ydC4gIFlvdSBjYW4gbm93IG9uIHlvdXIgaG9tZSBtYWNoaW5lIHNw
ZWNpZnkgdGhpcwotbmV3IHNvY2tldCBob3N0IHdpdGggc29tZXRoaW5nIGxpa2UgdGhpczo6Ci0K
LSAgICBweXRlc3QgLWQgLS10eCBzb2NrZXQ9MTkyLjE2OC4xLjEwMjo4ODg4IC0tcnN5bmNkaXIg
bXlwa2cgbXlwa2cKLQotCi0uLiBfYGF0b25jZWA6Ci0KLVJ1bm5pbmcgdGVzdHMgb24gbWFueSBw
bGF0Zm9ybXMgYXQgb25jZQotKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKLQotVGhlIGJhc2ljIGNvbW1hbmQgdG8gcnVuIHRlc3RzIG9u
IG11bHRpcGxlIHBsYXRmb3JtcyBpczo6Ci0KLSAgICBweXRlc3QgLS1kaXN0PWVhY2ggLS10eD1z
cGVjMSAtLXR4PXNwZWMyCi0KLUlmIHlvdSBzcGVjaWZ5IGEgd2luZG93cyBob3N0LCBhbiBPU1gg
aG9zdCBhbmQgYSBMaW51eAotZW52aXJvbm1lbnQgdGhpcyBjb21tYW5kIHdpbGwgc2VuZCBlYWNo
IHRlc3RzIHRvIGFsbAotcGxhdGZvcm1zIC0gYW5kIHJlcG9ydCBiYWNrIGZhaWx1cmVzIGZyb20g
YWxsIHBsYXRmb3JtcwotYXQgb25jZS4gICBUaGUgc3BlY2lmaWNhdGlvbnMgc3RyaW5ncyB1c2Ug
dGhlIGB4c3BlYyBzeW50YXhgXy4KLQotLi4gX2B4c3BlYyBzeW50YXhgOiBodHRwOi8vY29kZXNw
ZWFrLm5ldC9leGVjbmV0L3RydW5rL2Jhc2ljcy5odG1sI3hzcGVjCi0KLS4uIF9gc29ja2V0c2Vy
dmVyLnB5YDogaHR0cDovL2NvZGVzcGVhay5uZXQvc3ZuL3B5L2Rpc3QvcHkvZXhlY25ldC9zY3Jp
cHQvc29ja2V0c2VydmVyLnB5Ci0KLS4uIF9gZXhlY25ldGA6IGh0dHA6Ly9jb2Rlc3BlYWsubmV0
L2V4ZWNuZXQKLQotU3BlY2lmeWluZyB0ZXN0IGV4ZWMgZW52aXJvbm1lbnRzIGluIGEgY29uZnRl
c3QucHkKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCi0KLUluc3RlYWQgb2Ygc3BlY2lmeWluZyBjb21tYW5kIGxpbmUgb3B0aW9ucywg
eW91IGNhbgotcHV0IG9wdGlvbnMgdmFsdWVzIGluIGEgYGBjb25mdGVzdC5weWBgIGZpbGUgbGlr
ZSB0aGlzOjoKLQotICAgIG9wdGlvbl90eCA9IFsnc3NoPW15aG9zdC8vcHl0aG9uPXB5dGhvbjIu
NycsICdwb3Blbi8vcHl0aG9uPXB5dGhvbjIuNyddCi0gICAgb3B0aW9uX2Rpc3QgPSBUcnVlCi0K
LUFueSBjb21tYW5kbGluZSBgYC0tdHhgYCBzcGVjaWZpY2F0aW9ucyAgd2lsbCBhZGQgdG8gdGhl
IGxpc3Qgb2YKLWF2YWlsYWJsZSBleGVjdXRpb24gZW52aXJvbm1lbnRzLgotCi1TcGVjaWZ5aW5n
ICJyc3luYyIgZGlycyBpbiBhIGNvbmZ0ZXN0LnB5Ci0rKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1JbiB5b3VyIGBgbXlwa2cvY29u
ZnRlc3QucHlgYCB5b3UgbWF5IHNwZWNpZnkgZGlyZWN0b3JpZXMgdG8gc3luY2hyb25pc2UKLW9y
IHRvIGV4Y2x1ZGU6OgotCi0gICAgcnN5bmNkaXJzID0gWycuJywgJy4uL3BsdWdpbnMnXQotICAg
IHJzeW5jaWdub3JlID0gWydfY2FjaGUnXQotCi1UaGVzZSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlv
bnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKLXdoZXJlIHRoZSBgYGNvbmZ0ZXN0LnB5
YGAgaXMgZm91bmQuCi0KLWNvbW1hbmQgbGluZSBvcHRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0KLWBgLWYsIC0tbG9vcG9uZmFpbGBgCi0gICAgcnVuIHRlc3RzIGluIHN1YnByb2Nlc3Ms
IHdhaXQgZm9yIG1vZGlmaWVkIGZpbGVzIGFuZCByZS1ydW4gZmFpbGluZyB0ZXN0IHNldCB1bnRp
bCBhbGwgcGFzcy4KLWBgLW4gbnVtcHJvY2Vzc2VzYGAKLSAgICBzaG9ydGN1dCBmb3IgJy0tZGlz
dD1sb2FkIC0tdHg9TlVNKnBvcGVuJwotYGAtLWJveGVkYGAKLSAgICBib3ggZWFjaCB0ZXN0IHJ1
biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgKHVuaXgpCi1gYC0tZGlzdD1kaXN0bW9kZWBgCi0gICAg
c2V0IG1vZGUgZm9yIGRpc3RyaWJ1dGluZyB0ZXN0cyB0byBleGVjIGVudmlyb25tZW50cy4KLQot
ICAgIGVhY2g6IHNlbmQgZWFjaCB0ZXN0IHRvIGVhY2ggYXZhaWxhYmxlIGVudmlyb25tZW50Lgot
Ci0gICAgbG9hZDogc2VuZCBlYWNoIHRlc3QgdG8gb25lIGF2YWlsYWJsZSBlbnZpcm9ubWVudCBz
byBpdCBpcyBydW4gb25seSBvbmNlLgotCi0gICAgKGRlZmF1bHQpIG5vOiBydW4gdGVzdHMgaW5w
cm9jZXNzLCBkb24ndCBkaXN0cmlidXRlLgotYGAtLXR4PXhzcGVjYGAKLSAgICBhZGQgYSB0ZXN0
IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gc29tZSBleGFtcGxlczogLS10eCBwb3Blbi8vcHl0aG9u
PXB5dGhvbjIuNyAtLXR4IHNvY2tldD0xOTIuMTY4LjEuMTAyOjg4ODggLS10eCBzc2g9dXNlckBj
b2Rlc3BlYWsubmV0Ly9jaGRpcj10ZXN0Y2FjaGUKLWBgLWRgYAotICAgIGxvYWQtYmFsYW5jZSB0
ZXN0cy4gIHNob3J0Y3V0IGZvciAnLS1kaXN0PWxvYWQnCi1gYC0tcnN5bmNkaXI9ZGlyMWBgCi0g
ICAgYWRkIGRpcmVjdG9yeSBmb3IgcnN5bmNpbmcgdG8gcmVtb3RlIHR4IG5vZGVzLgotCi0uLiBp
bmNsdWRlOjogbGlua3MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC90
ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC90ZXN0Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdkMDBmNzE4YTY3Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi90ZXN0L3Rlc3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAg
QEAKLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNo
IiBjb250ZW50PSIgMSA7IFVSTD1pbmRleC5odG1sIiAvPgotICAgIDwvaGVhZD4KLQotICAgIDxi
b2R5PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdmFyIGdhSnNIb3N0ID0gKCgi
aHR0cHM6IiA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCkgPyAiaHR0cHM6Ly9zc2wuIiA6
ICJodHRwOi8vd3d3LiIpOwotZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoIiUzQ3NjcmlwdCBzcmM9
JyIgKyBnYUpzSG9zdCArICJnb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcycgdHlwZT0ndGV4dC9q
YXZhc2NyaXB0JyUzRSUzQy9zY3JpcHQlM0UiKSk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLXRyeSB7Ci12YXIgcGFnZVRyYWNrZXIgPSBfZ2F0Ll9nZXRUcmFj
a2VyKCJVQS03NTk3Mjc0LTMiKTsKLXBhZ2VUcmFja2VyLl90cmFja1BhZ2V2aWV3KCk7Ci19IGNh
dGNoKGVycikge308L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KLSAgICAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3Rlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhh
YjkzZjVmN2NmYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3Rlc3QvYXR0aWMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
Y29uZmlnLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9kaXN0Lmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vdGVzdC9leHRlbmQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2lu
ZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L21pc3Npb24ucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3Rlc3QvdGVzdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGlkZWxpZnQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RpZGVsaWZ0LnJzdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhjZTU1ZTk3YjM4OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90aWRlbGlmdC5yc3QKQEAgLTAsMCArMSw0NSBAQAor
cHl0ZXN0IGZvciBlbnRlcnByaXNlCis9PT09PT09PT09PT09PT09PT09PT0KKworYFRpZGVsaWZ0
YF8gaXMgd29ya2luZyB3aXRoIHRoZSBtYWludGFpbmVycyBvZiBweXRlc3QgYW5kIHRob3VzYW5k
cyBvZiBvdGhlcgorb3BlbiBzb3VyY2UgcHJvamVjdHMgdG8gZGVsaXZlciBjb21tZXJjaWFsIHN1
cHBvcnQgYW5kIG1haW50ZW5hbmNlIGZvciB0aGUgb3BlbiBzb3VyY2UgZGVwZW5kZW5jaWVzIHlv
dSB1c2UKK3RvIGJ1aWxkIHlvdXIgYXBwbGljYXRpb25zLiBTYXZlIHRpbWUsIHJlZHVjZSByaXNr
LCBhbmQgaW1wcm92ZSBjb2RlIGhlYWx0aCwgd2hpbGUgcGF5aW5nIHRoZSBtYWludGFpbmVycyBv
ZiB0aGUKK2V4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLgorCitgR2V0IG1vcmUgZGV0YWlscyA8
aHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9weXBpLXB5dGVzdD91dG1fc291
cmNlPXB5cGktcHl0ZXN0JnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWVudGVycHJp
c2U+YF8KKworVGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbiBpcyBhIG1hbmFnZWQgb3BlbiBzb3Vy
Y2Ugc3Vic2NyaXB0aW9uIGZvciBhcHBsaWNhdGlvbiBkZXBlbmRlbmNpZXMgY292ZXJpbmcgbWls
bGlvbnMgb2Ygb3BlbiBzb3VyY2UgcHJvamVjdHMgYWNyb3NzIEphdmFTY3JpcHQsIFB5dGhvbiwg
SmF2YSwgUEhQLCBSdWJ5LCAuTkVULCBhbmQgbW9yZS4KKworWW91ciBzdWJzY3JpcHRpb24gaW5j
bHVkZXM6CisKKyogKipTZWN1cml0eSB1cGRhdGVzKioKKworICAtIFRpZGVsaWZ0J3Mgc2VjdXJp
dHkgcmVzcG9uc2UgdGVhbSBjb29yZGluYXRlcyBwYXRjaGVzIGZvciBuZXcgYnJlYWtpbmcgc2Vj
dXJpdHkgdnVsbmVyYWJpbGl0aWVzIGFuZCBhbGVydHMgaW1tZWRpYXRlbHkgdGhyb3VnaCBhIHBy
aXZhdGUgY2hhbm5lbCwgc28geW91ciBzb2Z0d2FyZSBzdXBwbHkgY2hhaW4gaXMgYWx3YXlzIHNl
Y3VyZS4KKworKiAqKkxpY2Vuc2luZyB2ZXJpZmljYXRpb24gYW5kIGluZGVtbmlmaWNhdGlvbioq
CisKKyAgLSBUaWRlbGlmdCB2ZXJpZmllcyBsaWNlbnNlIGluZm9ybWF0aW9uIHRvIGVuYWJsZSBl
YXN5IHBvbGljeSBlbmZvcmNlbWVudCBhbmQgYWRkcyBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5k
ZW1uaWZpY2F0aW9uIHRvIGNvdmVyIGNyZWF0b3JzIGFuZCB1c2VycyBpbiBjYXNlIHNvbWV0aGlu
ZyBnb2VzIHdyb25nLiBZb3UgYWx3YXlzIGhhdmUgYSAxMDAlIHVwLXRvLWRhdGUgYmlsbCBvZiBt
YXRlcmlhbHMgZm9yIHlvdXIgZGVwZW5kZW5jaWVzIHRvIHNoYXJlIHdpdGggeW91ciBsZWdhbCB0
ZWFtLCBjdXN0b21lcnMsIG9yIHBhcnRuZXJzLgorCisqICoqTWFpbnRlbmFuY2UgYW5kIGNvZGUg
aW1wcm92ZW1lbnQqKgorCisgIC0gVGlkZWxpZnQgZW5zdXJlcyB0aGUgc29mdHdhcmUgeW91IHJl
bHkgb24ga2VlcHMgd29ya2luZyBhcyBsb25nIGFzIHlvdSBuZWVkIGl0IHRvIHdvcmsuIFlvdXIg
bWFuYWdlZCBkZXBlbmRlbmNpZXMgYXJlIGFjdGl2ZWx5IG1haW50YWluZWQgYW5kIHdlIHJlY3J1
aXQgYWRkaXRpb25hbCBtYWludGFpbmVycyB3aGVyZSByZXF1aXJlZC4KKworKiAqKlBhY2thZ2Ug
c2VsZWN0aW9uIGFuZCB2ZXJzaW9uIGd1aWRhbmNlKioKKworICAtIFRpZGVsaWZ0IGhlbHBzIHlv
dSBjaG9vc2UgdGhlIGJlc3Qgb3BlbiBzb3VyY2UgcGFja2FnZXMgZnJvbSB0aGUgc3RhcnTigJRh
bmQgdGhlbiBndWlkZSB5b3UgdGhyb3VnaCB1cGRhdGVzIHRvIHN0YXkgb24gdGhlIGJlc3QgcmVs
ZWFzZXMgYXMgbmV3IGlzc3VlcyBhcmlzZS4KKworKiAqKlJvYWRtYXAgaW5wdXQqKgorCisgIC0g
VGFrZSBhIHNlYXQgYXQgdGhlIHRhYmxlIHdpdGggdGhlIGNyZWF0b3JzIGJlaGluZCB0aGUgc29m
dHdhcmUgeW91IHVzZS4gVGlkZWxpZnQncyBwYXJ0aWNpcGF0aW5nIG1haW50YWluZXJzIGVhcm4g
bW9yZSBpbmNvbWUgYXMgdGhlaXIgc29mdHdhcmUgaXMgdXNlZCBieSBtb3JlIHN1YnNjcmliZXJz
LCBzbyB0aGV5J3JlIGludGVyZXN0ZWQgaW4ga25vd2luZyB3aGF0IHlvdSBuZWVkLgorCisqICoq
VG9vbGluZyBhbmQgY2xvdWQgaW50ZWdyYXRpb24qKgorCisgIC0gVGlkZWxpZnQgd29ya3Mgd2l0
aCBHaXRIdWIsIEdpdExhYiwgQml0QnVja2V0LCBhbmQgZXZlcnkgY2xvdWQgcGxhdGZvcm0gKGFu
ZCBvdGhlciBkZXBsb3ltZW50IHRhcmdldHMsIHRvbykuCisKK1RoZSBlbmQgcmVzdWx0PyBBbGwg
b2YgdGhlIGNhcGFiaWxpdGllcyB5b3UgZXhwZWN0IGZyb20gY29tbWVyY2lhbC1ncmFkZSBzb2Z0
d2FyZSwgZm9yIHRoZSBmdWxsIGJyZWFkdGggb2Ygb3Blbgorc291cmNlIHlvdSB1c2UuIFRoYXQg
bWVhbnMgbGVzcyB0aW1lIGdyYXBwbGluZyB3aXRoIGVzb3RlcmljIG9wZW4gc291cmNlIHRyaXZp
YSwgYW5kIG1vcmUgdGltZSBidWlsZGluZyB5b3VyIG93bgorYXBwbGljYXRpb25z4oCUYW5kIHlv
dXIgYnVzaW5lc3MuCisKK2BSZXF1ZXN0IGEgZGVtbyA8aHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vi
c2NyaXB0aW9uL3JlcXVlc3QtYS1kZW1vP3V0bV9zb3VyY2U9cHlwaS1weXRlc3QmdXRtX21lZGl1
bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZT5gXworCisuLiBfVGlkZWxpZnQ6IGh0
dHBzOi8vdGlkZWxpZnQuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdG1wZGly
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90bXBkaXIucnN0CmluZGV4IDQyMWI0Yzg5OGM1YS4u
NWY4ODJiMTQwMGZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdG1wZGlyLnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdG1wZGlyLnJzdApAQCAtNSw2ICs1LDg1IEBACiBUZW1w
b3JhcnkgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIAorVGhlIGBgdG1wX3BhdGhgYCBmaXh0dXJlCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworCisKKworWW91IGNhbiB1c2UgdGhlIGBgdG1wX3BhdGhgYCBm
aXh0dXJlIHdoaWNoIHdpbGwKK3Byb3ZpZGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHVuaXF1ZSB0
byB0aGUgdGVzdCBpbnZvY2F0aW9uLAorY3JlYXRlZCBpbiB0aGUgYGJhc2UgdGVtcG9yYXJ5IGRp
cmVjdG9yeWBfLgorCitgYHRtcF9wYXRoYGAgaXMgYSBgYHBhdGhsaWIvcGF0aGxpYjIuUGF0aGBg
IG9iamVjdC4gSGVyZSBpcyBhbiBleGFtcGxlIHRlc3QgdXNhZ2U6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KKworICAgICMgY29udGVudCBvZiB0ZXN0X3RtcF9wYXRoLnB5CisgICAgaW1wb3J0
IG9zCisKKyAgICBDT05URU5UID0gImNvbnRlbnQiCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9m
aWxlKHRtcF9wYXRoKToKKyAgICAgICAgZCA9IHRtcF9wYXRoIC8gInN1YiIKKyAgICAgICAgZC5t
a2RpcigpCisgICAgICAgIHAgPSBkIC8gImhlbGxvLnR4dCIKKyAgICAgICAgcC53cml0ZV90ZXh0
KENPTlRFTlQpCisgICAgICAgIGFzc2VydCBwLnJlYWRfdGV4dCgpID09IENPTlRFTlQKKyAgICAg
ICAgYXNzZXJ0IGxlbihsaXN0KHRtcF9wYXRoLml0ZXJkaXIoKSkpID09IDEKKyAgICAgICAgYXNz
ZXJ0IDAKKworUnVubmluZyB0aGlzIHdvdWxkIHJlc3VsdCBpbiBhIHBhc3NlZCB0ZXN0IGV4Y2Vw
dCBmb3IgdGhlIGxhc3QKK2BgYXNzZXJ0IDBgYCBsaW5lIHdoaWNoIHdlIHVzZSB0byBsb29rIGF0
IHZhbHVlczoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAorCisgICAgJCBweXRlc3QgdGVzdF90
bXBfcGF0aC5weQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24g
c3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAt
LSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAg
IGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJF
R0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCAxIGl0ZW0KKworICAgIHRlc3RfdG1wX3BhdGgu
cHkgRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsx
MDAlXQorCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fIHRlc3RfY3JlYXRlX2ZpbGUgX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
KworICAgIHRtcF9wYXRoID0gUG9zaXhQYXRoKCdQWVRFU1RfVE1QRElSL3Rlc3RfY3JlYXRlX2Zp
bGUwJykKKworICAgICAgICBkZWYgdGVzdF9jcmVhdGVfZmlsZSh0bXBfcGF0aCk6CisgICAgICAg
ICAgICBkID0gdG1wX3BhdGggLyAic3ViIgorICAgICAgICAgICAgZC5ta2RpcigpCisgICAgICAg
ICAgICBwID0gZCAvICJoZWxsby50eHQiCisgICAgICAgICAgICBwLndyaXRlX3RleHQoQ09OVEVO
VCkKKyAgICAgICAgICAgIGFzc2VydCBwLnJlYWRfdGV4dCgpID09IENPTlRFTlQKKyAgICAgICAg
ICAgIGFzc2VydCBsZW4obGlzdCh0bXBfcGF0aC5pdGVyZGlyKCkpKSA9PSAxCisgICAgPiAgICAg
ICBhc3NlcnQgMAorICAgIEUgICAgICAgYXNzZXJ0IDAKKworICAgIHRlc3RfdG1wX3BhdGgucHk6
MTM6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0
ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0
ZXN0X3RtcF9wYXRoLnB5Ojp0ZXN0X2NyZWF0ZV9maWxlIC0gYXNzZXJ0IDAKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09IDEgZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisKKy4uIF9gdG1wX3BhdGhfZmFjdG9yeSBleGFtcGxlYDoKKworVGhlIGBg
dG1wX3BhdGhfZmFjdG9yeWBgIGZpeHR1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKworCisKK1RoZSBgYHRtcF9wYXRoX2ZhY3RvcnlgYCBpcyBhIHNlc3Npb24tc2NvcGVk
IGZpeHR1cmUgd2hpY2ggY2FuIGJlIHVzZWQKK3RvIGNyZWF0ZSBhcmJpdHJhcnkgdGVtcG9yYXJ5
IGRpcmVjdG9yaWVzIGZyb20gYW55IG90aGVyIGZpeHR1cmUgb3IgdGVzdC4KKworSXQgaXMgaW50
ZW5kZWQgdG8gcmVwbGFjZSBgYHRtcGRpcl9mYWN0b3J5YGAsIGFuZCByZXR1cm5zIDpjbGFzczpg
cGF0aGxpYi5QYXRoYCBpbnN0YW5jZXMuCisKK1NlZSA6cmVmOmB0bXBfcGF0aF9mYWN0b3J5IEFQ
SSA8dG1wX3BhdGhfZmFjdG9yeSBmYWN0b3J5IGFwaT5gIGZvciBkZXRhaWxzLgorCisKIFRoZSAn
dG1wZGlyJyBmaXh0dXJlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xMywxMCArOTIsMTQg
QEAgcHJvdmlkZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdW5pcXVlIHRvIHRoZSB0ZXN0IGludm9j
YXRpb24sCiBjcmVhdGVkIGluIHRoZSBgYmFzZSB0ZW1wb3JhcnkgZGlyZWN0b3J5YF8uCiAKIGBg
dG1wZGlyYGAgaXMgYSBgcHkucGF0aC5sb2NhbGBfIG9iamVjdCB3aGljaCBvZmZlcnMgYGBvcy5w
YXRoYGAgbWV0aG9kcwotYW5kIG1vcmUuICBIZXJlIGlzIGFuIGV4YW1wbGUgdGVzdCB1c2FnZTo6
CithbmQgbW9yZS4gIEhlcmUgaXMgYW4gZXhhbXBsZSB0ZXN0IHVzYWdlOgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF90bXBkaXIucHkKICAgICBpbXBv
cnQgb3MKKworCiAgICAgZGVmIHRlc3RfY3JlYXRlX2ZpbGUodG1wZGlyKToKICAgICAgICAgcCA9
IHRtcGRpci5ta2Rpcigic3ViIikuam9pbigiaGVsbG8udHh0IikKICAgICAgICAgcC53cml0ZSgi
Y29udGVudCIpCkBAIC0yNSwxMiArMTA4LDE1IEBAIGFuZCBtb3JlLiAgSGVyZSBpcyBhbiBleGFt
cGxlIHRlc3QgdXNhZ2U6OgogICAgICAgICBhc3NlcnQgMAogCiBSdW5uaW5nIHRoaXMgd291bGQg
cmVzdWx0IGluIGEgcGFzc2VkIHRlc3QgZXhjZXB0IGZvciB0aGUgbGFzdAotYGBhc3NlcnQgMGBg
IGxpbmUgd2hpY2ggd2UgdXNlIHRvIGxvb2sgYXQgdmFsdWVzOjoKK2BgYXNzZXJ0IDBgYCBsaW5l
IHdoaWNoIHdlIHVzZSB0byBsb29rIGF0IHZhbHVlczoKKworLi4gY29kZS1ibG9jazo6IHB5dGVz
dAogCiAgICAgJCBweXRlc3QgdGVzdF90bXBkaXIucHkKICAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEu
eC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxl
OgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0x
LngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3Rf
Y2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDEgaXRl
bQogCiAgICAgdGVzdF90bXBkaXIucHkgRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC00OCwxNSArMTM0LDE3IEBAIFJ1bm5pbmcg
dGhpcyB3b3VsZCByZXN1bHQgaW4gYSBwYXNzZWQgdGVzdCBleGNlcHQgZm9yIHRoZSBsYXN0CiAg
ICAgPiAgICAgICBhc3NlcnQgMAogICAgIEUgICAgICAgYXNzZXJ0IDAKIAotICAgIHRlc3RfdG1w
ZGlyLnB5Ojc6IEFzc2VydGlvbkVycm9yCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAx
IGZhaWxlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHRl
c3RfdG1wZGlyLnB5Ojk6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09
PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQor
ICAgIEZBSUxFRCB0ZXN0X3RtcGRpci5weTo6dGVzdF9jcmVhdGVfZmlsZSAtIGFzc2VydCAwCisg
ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAwLjEycyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBfYHRtcGRpciBmYWN0b3J5IGV4YW1wbGVgOgog
CiBUaGUgJ3RtcGRpcl9mYWN0b3J5JyBmaXh0dXJlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuOAorCiAKIFRoZSBgYHRtcGRpcl9mYWN0b3J5YGAg
aXMgYSBzZXNzaW9uLXNjb3BlZCBmaXh0dXJlIHdoaWNoIGNhbiBiZSB1c2VkCiB0byBjcmVhdGUg
YXJiaXRyYXJ5IHRlbXBvcmFyeSBkaXJlY3RvcmllcyBmcm9tIGFueSBvdGhlciBmaXh0dXJlIG9y
IHRlc3QuCkBAIC05OCwxMiArMTg2LDE5IEBAIHRoZSBzeXN0ZW0gdGVtcG9yYXJ5IGRpcmVjdG9y
eS4gIFRoZSBiYXNlIG5hbWUgd2lsbCBiZSBgYHB5dGVzdC1OVU1gYCB3aGVyZQogYGBOVU1gYCB3
aWxsIGJlIGluY3JlbWVudGVkIHdpdGggZWFjaCB0ZXN0IHJ1bi4gIE1vcmVvdmVyLCBlbnRyaWVz
IG9sZGVyCiB0aGFuIDMgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHdpbGwgYmUgcmVtb3ZlZC4KIAot
WW91IGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdCB0ZW1wb3JhcnkgZGlyZWN0b3J5IHNldHRpbmcg
bGlrZSB0aGlzOjoKK1lvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdGVtcG9yYXJ5IGRpcmVj
dG9yeSBzZXR0aW5nIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5
dGVzdCAtLWJhc2V0ZW1wPW15ZGlyCiAKLVdoZW4gZGlzdHJpYnV0aW5nIHRlc3RzIG9uIHRoZSBs
b2NhbCBtYWNoaW5lLCBgYHB5dGVzdGBgIHRha2VzIGNhcmUgdG8KLWNvbmZpZ3VyZSBhIGJhc2V0
ZW1wIGRpcmVjdG9yeSBmb3IgdGhlIHN1YiBwcm9jZXNzZXMgc3VjaCB0aGF0IGFsbCB0ZW1wb3Jh
cnkKKy4uIHdhcm5pbmc6OgorCisgICAgVGhlIGNvbnRlbnRzIG9mIGBgbXlkaXJgYCB3aWxsIGJl
IGNvbXBsZXRlbHkgcmVtb3ZlZCwgc28gbWFrZSBzdXJlIHRvIHVzZSBhIGRpcmVjdG9yeQorICAg
IGZvciB0aGF0IHB1cnBvc2Ugb25seS4KKworV2hlbiBkaXN0cmlidXRpbmcgdGVzdHMgb24gdGhl
IGxvY2FsIG1hY2hpbmUgdXNpbmcgYGBweXRlc3QteGRpc3RgYCwgY2FyZSBpcyB0YWtlbiB0bwor
YXV0b21hdGljYWxseSBjb25maWd1cmUgYSBiYXNldGVtcCBkaXJlY3RvcnkgZm9yIHRoZSBzdWIg
cHJvY2Vzc2VzIHN1Y2ggdGhhdCBhbGwgdGVtcG9yYXJ5CiBkYXRhIGxhbmRzIGJlbG93IGEgc2lu
Z2xlIHBlci10ZXN0IHJ1biBiYXNldGVtcCBkaXJlY3RvcnkuCiAKIC4uIF9gcHkucGF0aC5sb2Nh
bGA6IGh0dHBzOi8vcHkucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3BhdGguaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VuaXR0ZXN0LnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi91bml0dGVzdC5yc3QKaW5kZXggNTMxOTJiMzQ2OWQzLi4xMzBlNzcwNWI4ZDkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi91bml0dGVzdC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3VuaXR0ZXN0LnJzdApAQCAtMTAsNyArMTAsOSBAQCBJdCdzIG1lYW50IGZvciBsZXZlcmFn
aW5nIGV4aXN0aW5nIGBgdW5pdHRlc3RgYC1iYXNlZCB0ZXN0IHN1aXRlcwogdG8gdXNlIHB5dGVz
dCBhcyBhIHRlc3QgcnVubmVyIGFuZCBhbHNvIGFsbG93IHRvIGluY3JlbWVudGFsbHkgYWRhcHQK
IHRoZSB0ZXN0IHN1aXRlIHRvIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgcHl0ZXN0J3MgZmVhdHVy
ZXMuCiAKLVRvIHJ1biBhbiBleGlzdGluZyBgYHVuaXR0ZXN0YGAtc3R5bGUgdGVzdCBzdWl0ZSB1
c2luZyBgYHB5dGVzdGBgLCB0eXBlOjoKK1RvIHJ1biBhbiBleGlzdGluZyBgYHVuaXR0ZXN0YGAt
c3R5bGUgdGVzdCBzdWl0ZSB1c2luZyBgYHB5dGVzdGBgLCB0eXBlOgorCisuLiBjb2RlLWJsb2Nr
OjogYmFzaAogCiAgICAgcHl0ZXN0IHRlc3RzCiAKQEAgLTIyLDE2ICsyNCwxNSBAQCBBbG1vc3Qg
YWxsIGBgdW5pdHRlc3RgYCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgogCiAqIGBgQHVuaXR0ZXN0
LnNraXBgYCBzdHlsZSBkZWNvcmF0b3JzOwogKiBgYHNldFVwL3RlYXJEb3duYGA7Ci0qIGBgc2V0
VXBDbGFzcy90ZWFyRG93bkNsYXNzKClgYDsKKyogYGBzZXRVcENsYXNzL3RlYXJEb3duQ2xhc3Ng
YDsKKyogYGBzZXRVcE1vZHVsZS90ZWFyRG93bk1vZHVsZWBgOwogCiAuLiBfYGxvYWRfdGVzdHMg
cHJvdG9jb2xgOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5pdHRlc3QuaHRt
bCNsb2FkLXRlc3RzLXByb3RvY29sCi0uLiBfYHNldFVwTW9kdWxlL3RlYXJEb3duTW9kdWxlYDog
aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWwjc2V0dXBtb2R1
bGUtYW5kLXRlYXJkb3dubW9kdWxlCiAuLiBfYHN1YnRlc3RzYDogaHR0cHM6Ly9kb2NzLnB5dGhv
bi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWwjZGlzdGluZ3Vpc2hpbmctdGVzdC1pdGVyYXRp
b25zLXVzaW5nLXN1YnRlc3RzCiAKIFVwIHRvIHRoaXMgcG9pbnQgcHl0ZXN0IGRvZXMgbm90IGhh
dmUgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKIAogKiBgbG9hZF90ZXN0cyBw
cm90b2NvbGBfOwotKiBgc2V0VXBNb2R1bGUvdGVhckRvd25Nb2R1bGVgXzsKICogYHN1YnRlc3Rz
YF87CiAKIEJlbmVmaXRzIG91dCBvZiB0aGUgYm94CkBAIC03OSw3ICs4MCw5IEBAIFJ1bm5pbmcg
eW91ciB1bml0dGVzdCB3aXRoIGBgcHl0ZXN0YGAgYWxsb3dzIHlvdSB0byB1c2UgaXRzCiB0ZXN0
cy4gIEFzc3VtaW5nIHlvdSBoYXZlIGF0IGxlYXN0IHNraW1tZWQgdGhlIHB5dGVzdCBmaXh0dXJl
IGZlYXR1cmVzLAogbGV0J3MganVtcC1zdGFydCBpbnRvIGFuIGV4YW1wbGUgdGhhdCBpbnRlZ3Jh
dGVzIGEgcHl0ZXN0IGBgZGJfY2xhc3NgYAogZml4dHVyZSwgc2V0dGluZyB1cCBhIGNsYXNzLWNh
Y2hlZCBkYXRhYmFzZSBvYmplY3QsIGFuZCB0aGVuIHJlZmVyZW5jZQotaXQgZnJvbSBhIHVuaXR0
ZXN0LXN0eWxlIHRlc3Q6OgoraXQgZnJvbSBhIHVuaXR0ZXN0LXN0eWxlIHRlc3Q6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogCkBAIC04
OCwxMCArOTEsMTIgQEAgaXQgZnJvbSBhIHVuaXR0ZXN0LXN0eWxlIHRlc3Q6OgogCiAgICAgaW1w
b3J0IHB5dGVzdAogCisKICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ImNsYXNzIikKICAgICBk
ZWYgZGJfY2xhc3MocmVxdWVzdCk6Ci0gICAgICAgIGNsYXNzIER1bW15REIob2JqZWN0KToKKyAg
ICAgICAgY2xhc3MgRHVtbXlEQjoKICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICAjIHNldCBh
IGNsYXNzIGF0dHJpYnV0ZSBvbiB0aGUgaW52b2tpbmcgdGVzdCBjb250ZXh0CiAgICAgICAgIHJl
cXVlc3QuY2xzLmRiID0gRHVtbXlEQigpCiAKQEAgLTEwNCwzMSArMTA5LDM3IEBAIGFzIHRoZSBg
YGNsc2BgIGF0dHJpYnV0ZSwgZGVub3RpbmcgdGhlIGNsYXNzIGZyb20gd2hpY2ggdGhlIGZpeHR1
cmUKIGlzIHVzZWQuICBUaGlzIGFyY2hpdGVjdHVyZSBkZS1jb3VwbGVzIGZpeHR1cmUgd3JpdGlu
ZyBmcm9tIGFjdHVhbCB0ZXN0CiBjb2RlIGFuZCBhbGxvd3MgcmUtdXNlIG9mIHRoZSBmaXh0dXJl
IGJ5IGEgbWluaW1hbCByZWZlcmVuY2UsIHRoZSBmaXh0dXJlCiBuYW1lLiAgU28gbGV0J3Mgd3Jp
dGUgYW4gYWN0dWFsIGBgdW5pdHRlc3QuVGVzdENhc2VgYCBjbGFzcyB1c2luZyBvdXIKLWZpeHR1
cmUgZGVmaW5pdGlvbjo6CitmaXh0dXJlIGRlZmluaXRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X3VuaXR0ZXN0X2RiLnB5CiAKICAgICBpbXBv
cnQgdW5pdHRlc3QKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIEBweXRlc3QubWFyay51c2Vm
aXh0dXJlcygiZGJfY2xhc3MiKQogICAgIGNsYXNzIE15VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIGRlZiB0ZXN0X21ldGhvZDEoc2VsZik6CiAgICAgICAgICAgICBhc3NlcnQgaGFz
YXR0cihzZWxmLCAiZGIiKQotICAgICAgICAgICAgYXNzZXJ0IDAsIHNlbGYuZGIgICAjIGZhaWwg
Zm9yIGRlbW8gcHVycG9zZXMKKyAgICAgICAgICAgIGFzc2VydCAwLCBzZWxmLmRiICAjIGZhaWwg
Zm9yIGRlbW8gcHVycG9zZXMKIAogICAgICAgICBkZWYgdGVzdF9tZXRob2QyKHNlbGYpOgotICAg
ICAgICAgICAgYXNzZXJ0IDAsIHNlbGYuZGIgICAjIGZhaWwgZm9yIGRlbW8gcHVycG9zZXMKKyAg
ICAgICAgICAgIGFzc2VydCAwLCBzZWxmLmRiICAjIGZhaWwgZm9yIGRlbW8gcHVycG9zZXMKIAog
VGhlIGBgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCJkYl9jbGFzcyIpYGAgY2xhc3MtZGVjb3Jh
dG9yIG1ha2VzIHN1cmUgdGhhdAogdGhlIHB5dGVzdCBmaXh0dXJlIGZ1bmN0aW9uIGBgZGJfY2xh
c3NgYCBpcyBjYWxsZWQgb25jZSBwZXIgY2xhc3MuCiBEdWUgdG8gdGhlIGRlbGliZXJhdGVseSBm
YWlsaW5nIGFzc2VydCBzdGF0ZW1lbnRzLCB3ZSBjYW4gdGFrZSBhIGxvb2sgYXQKLXRoZSBgYHNl
bGYuZGJgYCB2YWx1ZXMgaW4gdGhlIHRyYWNlYmFjazo6Cit0aGUgYGBzZWxmLmRiYGAgdmFsdWVz
IGluIHRoZSB0cmFjZWJhY2s6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0
ZXN0IHRlc3RfdW5pdHRlc3RfZGIucHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0g
dGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxh
dGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVn
Z3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBs
YXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1
Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAg
ICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDIgaXRlbXMKIAogICAg
IHRlc3RfdW5pdHRlc3RfZGIucHkgRkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsxMDAlXQpAQCAtMTQwLDIyICsxNTEsMjUgQEAgdGhlIGBgc2VsZi5kYmBg
IHZhbHVlcyBpbiB0aGUgdHJhY2ViYWNrOjoKIAogICAgICAgICBkZWYgdGVzdF9tZXRob2QxKHNl
bGYpOgogICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoc2VsZiwgImRiIikKLSAgICA+ICAgICAg
IGFzc2VydCAwLCBzZWxmLmRiICAgIyBmYWlsIGZvciBkZW1vIHB1cnBvc2VzCisgICAgPiAgICAg
ICBhc3NlcnQgMCwgc2VsZi5kYiAgIyBmYWlsIGZvciBkZW1vIHB1cnBvc2VzCiAgICAgRSAgICAg
ICBBc3NlcnRpb25FcnJvcjogPGNvbmZ0ZXN0LmRiX2NsYXNzLjxsb2NhbHM+LkR1bW15REIgb2Jq
ZWN0IGF0IDB4ZGVhZGJlZWY+CiAgICAgRSAgICAgICBhc3NlcnQgMAogCi0gICAgdGVzdF91bml0
dGVzdF9kYi5weTo5OiBBc3NlcnRpb25FcnJvcgorICAgIHRlc3RfdW5pdHRlc3RfZGIucHk6MTA6
IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fIE15VGVzdC50
ZXN0X21ldGhvZDIgX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDx0
ZXN0X3VuaXR0ZXN0X2RiLk15VGVzdCB0ZXN0TWV0aG9kPXRlc3RfbWV0aG9kMj4KIAogICAgICAg
ICBkZWYgdGVzdF9tZXRob2QyKHNlbGYpOgotICAgID4gICAgICAgYXNzZXJ0IDAsIHNlbGYuZGIg
ICAjIGZhaWwgZm9yIGRlbW8gcHVycG9zZXMKKyAgICA+ICAgICAgIGFzc2VydCAwLCBzZWxmLmRi
ICAjIGZhaWwgZm9yIGRlbW8gcHVycG9zZXMKICAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiA8
Y29uZnRlc3QuZGJfY2xhc3MuPGxvY2Fscz4uRHVtbXlEQiBvYmplY3QgYXQgMHhkZWFkYmVlZj4K
ICAgICBFICAgICAgIGFzc2VydCAwCiAKLSAgICB0ZXN0X3VuaXR0ZXN0X2RiLnB5OjEyOiBBc3Nl
cnRpb25FcnJvcgotICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQgaW4gMC4x
MiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0X3VuaXR0ZXN0X2Ri
LnB5OjEzOiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hv
cnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlM
RUQgdGVzdF91bml0dGVzdF9kYi5weTo6TXlUZXN0Ojp0ZXN0X21ldGhvZDEgLSBBc3NlcnRpb25F
cnJvcjogPGNvbmZ0Li4uCisgICAgRkFJTEVEIHRlc3RfdW5pdHRlc3RfZGIucHk6Ok15VGVzdDo6
dGVzdF9tZXRob2QyIC0gQXNzZXJ0aW9uRXJyb3I6IDxjb25mdC4uLgorICAgID09PT09PT09PT09
PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KIAogVGhpcyBkZWZhdWx0IHB5dGVzdCB0cmFjZWJhY2sgc2hvd3MgdGhhdCB0aGUg
dHdvIHRlc3QgbWV0aG9kcwogc2hhcmUgdGhlIHNhbWUgYGBzZWxmLmRiYGAgaW5zdGFuY2Ugd2hp
Y2ggd2FzIG91ciBpbnRlbnRpb24KQEAgLTE3NywxNyArMTkxLDE5IEBAIExldCdzIGxvb2sgYXQg
YW4gYGBpbml0ZGlyYGAgZml4dHVyZSB3aGljaCBtYWtlcyBhbGwgdGVzdCBtZXRob2RzIG9mIGEK
IGBgVGVzdENhc2VgYCBjbGFzcyBleGVjdXRlIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aXRo
IGEKIHByZS1pbml0aWFsaXplZCBgYHNhbXBsZWZpbGUuaW5pYGAuICBPdXIgYGBpbml0ZGlyYGAg
Zml4dHVyZSBpdHNlbGYgdXNlcwogdGhlIHB5dGVzdCBidWlsdGluIDpyZWY6YHRtcGRpciA8dG1w
ZGlyPmAgZml4dHVyZSB0byBkZWxlZ2F0ZSB0aGUKLWNyZWF0aW9uIG9mIGEgcGVyLXRlc3QgdGVt
cG9yYXJ5IGRpcmVjdG9yeTo6CitjcmVhdGlvbiBvZiBhIHBlci10ZXN0IHRlbXBvcmFyeSBkaXJl
Y3Rvcnk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0
X3VuaXR0ZXN0X2NsZWFuZGlyLnB5CiAgICAgaW1wb3J0IHB5dGVzdAogICAgIGltcG9ydCB1bml0
dGVzdAogCi0gICAgY2xhc3MgTXlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGNsYXNz
IE15VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIEBweXRlc3QuZml4dHVyZShhdXRv
dXNlPVRydWUpCiAgICAgICAgIGRlZiBpbml0ZGlyKHNlbGYsIHRtcGRpcik6Ci0gICAgICAgICAg
ICB0bXBkaXIuY2hkaXIoKSAjIGNoYW5nZSB0byBweXRlc3QtcHJvdmlkZWQgdGVtcG9yYXJ5IGRp
cmVjdG9yeQorICAgICAgICAgICAgdG1wZGlyLmNoZGlyKCkgICMgY2hhbmdlIHRvIHB5dGVzdC1w
cm92aWRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5CiAgICAgICAgICAgICB0bXBkaXIuam9pbigic2Ft
cGxlZmlsZS5pbmkiKS53cml0ZSgiIyB0ZXN0ZGF0YSIpCiAKICAgICAgICAgZGVmIHRlc3RfbWV0
aG9kKHNlbGYpOgpAQCAtMjAwLDExICsyMTYsMTMgQEAgdXNlZCBmb3IgYWxsIG1ldGhvZHMgb2Yg
dGhlIGNsYXNzIHdoZXJlIGl0IGlzIGRlZmluZWQuICBUaGlzIGlzIGEKIHNob3J0Y3V0IGZvciB1
c2luZyBhIGBgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCJpbml0ZGlyIilgYCBtYXJrZXIKIG9u
IHRoZSBjbGFzcyBsaWtlIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLgogCi1SdW5uaW5nIHRoaXMg
dGVzdCBtb2R1bGUgLi4uOjoKK1J1bm5pbmcgdGhpcyB0ZXN0IG1vZHVsZSAuLi46CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIHRlc3RfdW5pdHRlc3RfY2xlYW5k
aXIucHkKICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KLSAgICAxIHBhc3NlZCBpbiAwLjEyIHNlY29u
ZHMKKyAgICAxIHBhc3NlZCBpbiAwLjEycwogCiAuLi4gZ2l2ZXMgdXMgb25lIHBhc3NlZCB0ZXN0
IGJlY2F1c2UgdGhlIGBgaW5pdGRpcmBgIGZpeHR1cmUgZnVuY3Rpb24KIHdhcyBleGVjdXRlZCBh
aGVhZCBvZiB0aGUgYGB0ZXN0X21ldGhvZGBgLgpAQCAtMjIzLDE3ICsyNDEsNiBAQCB3YXMgZXhl
Y3V0ZWQgYWhlYWQgb2YgdGhlIGBgdGVzdF9tZXRob2RgYC4KIAogLi4gX3BkYi11bml0dGVzdC1u
b3RlOgogCi0uLiBub3RlOjoKLQotICAgIFJ1bm5pbmcgdGVzdHMgZnJvbSBgYHVuaXR0ZXN0LlRl
c3RDYXNlYGAgc3ViY2xhc3NlcyB3aXRoIGBgLS1wZGJgYCB3aWxsCi0gICAgZGlzYWJsZSB0ZWFy
RG93biBhbmQgY2xlYW51cCBtZXRob2RzIGZvciB0aGUgY2FzZSB0aGF0IGFuIEV4Y2VwdGlvbgot
ICAgIG9jY3Vycy4gVGhpcyBhbGxvd3MgcHJvcGVyIHBvc3QgbW9ydGVtIGRlYnVnZ2luZyBmb3Ig
YWxsIGFwcGxpY2F0aW9ucwotICAgIHdoaWNoIGhhdmUgc2lnbmlmaWNhbnQgbG9naWMgaW4gdGhl
aXIgdGVhckRvd24gbWFjaGluZXJ5LiBIb3dldmVyLAotICAgIHN1cHBvcnRpbmcgdGhpcyBmZWF0
dXJlIGhhcyB0aGUgZm9sbG93aW5nIHNpZGUgZWZmZWN0OiBJZiBwZW9wbGUKLSAgICBvdmVyd3Jp
dGUgYGB1bml0dGVzdC5UZXN0Q2FzZWBgIGBgX19jYWxsX19gYCBvciBgYHJ1bmBgLCB0aGV5IG5l
ZWQgdG8KLSAgICB0byBvdmVyd3JpdGUgYGBkZWJ1Z2BgIGluIHRoZSBzYW1lIHdheSAgKHRoaXMg
aXMgYWxzbyB0cnVlIGZvciBzdGFuZGFyZAotICAgIHVuaXR0ZXN0KS4KLQogLi4gbm90ZTo6CiAK
ICAgICBEdWUgdG8gYXJjaGl0ZWN0dXJhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gZnJh
bWV3b3Jrcywgc2V0dXAgYW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdXNhZ2Uu
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VzYWdlLnJzdAppbmRleCAyNWJlNTQzOTVhZjcuLjNj
MDNkYjQ1NDBmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VzYWdlLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vdXNhZ2UucnN0CkBAIC0xMCw5ICsxMCwxMSBAQCBVc2FnZSBh
bmQgSW52b2NhdGlvbnMKIENhbGxpbmcgcHl0ZXN0IHRocm91Z2ggYGBweXRob24gLW0gcHl0ZXN0
YGAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuMAogCi1Zb3UgY2FuIGludm9rZSB0ZXN0aW5nIHRocm91
Z2ggdGhlIFB5dGhvbiBpbnRlcnByZXRlciBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgorCitZb3Ug
Y2FuIGludm9rZSB0ZXN0aW5nIHRocm91Z2ggdGhlIFB5dGhvbiBpbnRlcnByZXRlciBmcm9tIHRo
ZSBjb21tYW5kIGxpbmU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKICAgICBweXRob24gLW0g
cHl0ZXN0IFsuLi5dCiAKQEAgLTMxLDI1ICszMyw0MyBAQCBSdW5uaW5nIGBgcHl0ZXN0YGAgY2Fu
IHJlc3VsdCBpbiBzaXggZGlmZmVyZW50IGV4aXQgY29kZXM6CiA6RXhpdCBjb2RlIDQ6IHB5dGVz
dCBjb21tYW5kIGxpbmUgdXNhZ2UgZXJyb3IKIDpFeGl0IGNvZGUgNTogTm8gdGVzdHMgd2VyZSBj
b2xsZWN0ZWQKIAorVGhleSBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIDpjbGFzczpgcHl0ZXN0LkV4
aXRDb2RlYCBlbnVtLiBUaGUgZXhpdCBjb2RlcyBiZWluZyBhIHBhcnQgb2YgdGhlIHB1YmxpYyBB
UEkgY2FuIGJlIGltcG9ydGVkIGFuZCBhY2Nlc3NlZCBkaXJlY3RseSB1c2luZzoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgorCisgICAgZnJvbSBweXRlc3QgaW1wb3J0IEV4aXRDb2RlCisKKy4u
IG5vdGU6OgorCisgICAgSWYgeW91IHdvdWxkIGxpa2UgdG8gY3VzdG9taXplIHRoZSBleGl0IGNv
ZGUgaW4gc29tZSBzY2VuYXJpb3MsIHNwZWNpYWxseSB3aGVuCisgICAgbm8gdGVzdHMgYXJlIGNv
bGxlY3RlZCwgY29uc2lkZXIgdXNpbmcgdGhlCisgICAgYHB5dGVzdC1jdXN0b21fZXhpdF9jb2Rl
IDxodHRwczovL2dpdGh1Yi5jb20veWFzaHRvZGk5NC9weXRlc3QtY3VzdG9tX2V4aXRfY29kZT5g
X18KKyAgICBwbHVnaW4uCisKKwogR2V0dGluZyBoZWxwIG9uIHZlcnNpb24sIG9wdGlvbiBuYW1l
cywgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi06OgorLi4gY29kZS1ibG9jazo6IGJh
c2gKIAogICAgIHB5dGVzdCAtLXZlcnNpb24gICAjIHNob3dzIHdoZXJlIHB5dGVzdCB3YXMgaW1w
b3J0ZWQgZnJvbQogICAgIHB5dGVzdCAtLWZpeHR1cmVzICAjIHNob3cgYXZhaWxhYmxlIGJ1aWx0
aW4gZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgcHl0ZXN0IC1oIHwgLS1oZWxwICMgc2hvdyBoZWxw
IG9uIGNvbW1hbmQgbGluZSBhbmQgY29uZmlnIGZpbGUgb3B0aW9ucwogCiAKK1RoZSBmdWxsIGNv
bW1hbmQtbGluZSBmbGFncyBjYW4gYmUgZm91bmQgaW4gdGhlIDpyZWY6YHJlZmVyZW5jZSA8Y29t
bWFuZC1saW5lLWZsYWdzPmAuCisKIC4uIF9tYXhmYWlsOgogCiBTdG9wcGluZyBhZnRlciB0aGUg
Zmlyc3QgKG9yIE4pIGZhaWx1cmVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotVG8gc3RvcCB0aGUgdGVzdGluZyBwcm9jZXNzIGFmdGVyIHRo
ZSBmaXJzdCAoTikgZmFpbHVyZXM6OgorVG8gc3RvcCB0aGUgdGVzdGluZyBwcm9jZXNzIGFmdGVy
IHRoZSBmaXJzdCAoTikgZmFpbHVyZXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKLSAgICBw
eXRlc3QgLXggICAgICAgICAgICAjIHN0b3AgYWZ0ZXIgZmlyc3QgZmFpbHVyZQotICAgIHB5dGVz
dCAtLW1heGZhaWw9MiAgICAjIHN0b3AgYWZ0ZXIgdHdvIGZhaWx1cmVzCisgICAgcHl0ZXN0IC14
ICAgICAgICAgICAjIHN0b3AgYWZ0ZXIgZmlyc3QgZmFpbHVyZQorICAgIHB5dGVzdCAtLW1heGZh
aWw9MiAgIyBzdG9wIGFmdGVyIHR3byBmYWlsdXJlcwogCiAuLiBfc2VsZWN0LXRlc3RzOgogCkBA
IC02MCwyNCArODAsMjQgQEAgUHl0ZXN0IHN1cHBvcnRzIHNldmVyYWwgd2F5cyB0byBydW4gYW5k
IHNlbGVjdCB0ZXN0cyBmcm9tIHRoZSBjb21tYW5kLWxpbmUuCiAKICoqUnVuIHRlc3RzIGluIGEg
bW9kdWxlKioKIAotOjoKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgdGVzdF9t
b2QucHkKIAogKipSdW4gdGVzdHMgaW4gYSBkaXJlY3RvcnkqKgogCi06OgorLi4gY29kZS1ibG9j
azo6IGJhc2gKIAogICAgIHB5dGVzdCB0ZXN0aW5nLwogCiAqKlJ1biB0ZXN0cyBieSBrZXl3b3Jk
IGV4cHJlc3Npb25zKioKIAotOjoKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3Qg
LWsgIk15Q2xhc3MgYW5kIG5vdCBtZXRob2QiCiAKLVRoaXMgd2lsbCBydW4gdGVzdHMgd2hpY2gg
Y29udGFpbiBuYW1lcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiAqc3RyaW5nIGV4cHJlc3Npb24qLCB3
aGljaCBjYW4KLWluY2x1ZGUgUHl0aG9uIG9wZXJhdG9ycyB0aGF0IHVzZSBmaWxlbmFtZXMsIGNs
YXNzIG5hbWVzIGFuZCBmdW5jdGlvbiBuYW1lcyBhcyB2YXJpYWJsZXMuCitUaGlzIHdpbGwgcnVu
IHRlc3RzIHdoaWNoIGNvbnRhaW4gbmFtZXMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gKnN0cmluZyBl
eHByZXNzaW9uKiAoY2FzZS1pbnNlbnNpdGl2ZSksCit3aGljaCBjYW4gaW5jbHVkZSBQeXRob24g
b3BlcmF0b3JzIHRoYXQgdXNlIGZpbGVuYW1lcywgY2xhc3MgbmFtZXMgYW5kIGZ1bmN0aW9uIG5h
bWVzIGFzIHZhcmlhYmxlcy4KIFRoZSBleGFtcGxlIGFib3ZlIHdpbGwgcnVuIGBgVGVzdE15Q2xh
c3MudGVzdF9zb21ldGhpbmdgYCAgYnV0IG5vdCBgYFRlc3RNeUNsYXNzLnRlc3RfbWV0aG9kX3Np
bXBsZWBgLgogCiAuLiBfbm9kZWlkczoKQEAgLTg3LDE4ICsxMDcsMjIgQEAgVGhlIGV4YW1wbGUg
YWJvdmUgd2lsbCBydW4gYGBUZXN0TXlDbGFzcy50ZXN0X3NvbWV0aGluZ2BgICBidXQgbm90IGBg
VGVzdE15Q2xhc3MKIEVhY2ggY29sbGVjdGVkIHRlc3QgaXMgYXNzaWduZWQgYSB1bmlxdWUgYGBu
b2RlaWRgYCB3aGljaCBjb25zaXN0IG9mIHRoZSBtb2R1bGUgZmlsZW5hbWUgZm9sbG93ZWQKIGJ5
IHNwZWNpZmllcnMgbGlrZSBjbGFzcyBuYW1lcywgZnVuY3Rpb24gbmFtZXMgYW5kIHBhcmFtZXRl
cnMgZnJvbSBwYXJhbWV0cml6YXRpb24sIHNlcGFyYXRlZCBieSBgYDo6YGAgY2hhcmFjdGVycy4K
IAotVG8gcnVuIGEgc3BlY2lmaWMgdGVzdCB3aXRoaW4gYSBtb2R1bGU6OgorVG8gcnVuIGEgc3Bl
Y2lmaWMgdGVzdCB3aXRoaW4gYSBtb2R1bGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAg
ICBweXRlc3QgdGVzdF9tb2QucHk6OnRlc3RfZnVuYwogCiAKLUFub3RoZXIgZXhhbXBsZSBzcGVj
aWZ5aW5nIGEgdGVzdCBtZXRob2QgaW4gdGhlIGNvbW1hbmQgbGluZTo6CitBbm90aGVyIGV4YW1w
bGUgc3BlY2lmeWluZyBhIHRlc3QgbWV0aG9kIGluIHRoZSBjb21tYW5kIGxpbmU6CisKKy4uIGNv
ZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgdGVzdF9tb2QucHk6OlRlc3RDbGFzczo6dGVz
dF9tZXRob2QKIAogKipSdW4gdGVzdHMgYnkgbWFya2VyIGV4cHJlc3Npb25zKioKIAotOjoKKy4u
IGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLW0gc2xvdwogCkBAIC0xMDgsNyArMTMy
LDcgQEAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDpyZWY6YG1hcmtzIDxtYXJrPmAuCiAKICoq
UnVuIHRlc3RzIGZyb20gcGFja2FnZXMqKgogCi06OgorLi4gY29kZS1ibG9jazo6IGJhc2gKIAog
ICAgIHB5dGVzdCAtLXB5YXJncyBwa2cudGVzdGluZwogCkBAIC0xMTgsNyArMTQyLDkgQEAgVGhp
cyB3aWxsIGltcG9ydCBgYHBrZy50ZXN0aW5nYGAgYW5kIHVzZSBpdHMgZmlsZXN5c3RlbSBsb2Nh
dGlvbiB0byBmaW5kIGFuZCBydW4KIE1vZGlmeWluZyBQeXRob24gdHJhY2ViYWNrIHByaW50aW5n
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUV4YW1w
bGVzIGZvciBtb2RpZnlpbmcgdHJhY2ViYWNrIHByaW50aW5nOjoKK0V4YW1wbGVzIGZvciBtb2Rp
ZnlpbmcgdHJhY2ViYWNrIHByaW50aW5nOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAg
cHl0ZXN0IC0tc2hvd2xvY2FscyAjIHNob3cgbG9jYWwgdmFyaWFibGVzIGluIHRyYWNlYmFja3MK
ICAgICBweXRlc3QgLWwgICAgICAgICAgICMgc2hvdyBsb2NhbCB2YXJpYWJsZXMgKHNob3J0Y3V0
KQpAQCAtMTQwLDYgKzE2NiwxODQgQEAgd2lsbCBiZSBzaG93biAoYmVjYXVzZSBLZXlib2FyZElu
dGVycnVwdCBpcyBjYXVnaHQgYnkgcHl0ZXN0KS4gQnkgdXNpbmcgdGhpcwogb3B0aW9uIHlvdSBt
YWtlIHN1cmUgYSB0cmFjZSBpcyBzaG93bi4KIAogCisuLiBfYHB5dGVzdC5kZXRhaWxlZF9mYWls
ZWRfdGVzdHNfdXNhZ2VgOgorCitEZXRhaWxlZCBzdW1tYXJ5IHJlcG9ydAorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworVGhlIGBgLXJgYCBmbGFnIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYSAi
c2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8iIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3Qgc2Vzc2lvbiwK
K21ha2luZyBpdCBlYXN5IGluIGxhcmdlIHRlc3Qgc3VpdGVzIHRvIGdldCBhIGNsZWFyIHBpY3R1
cmUgb2YgYWxsIGZhaWx1cmVzLCBza2lwcywgeGZhaWxzLCBldGMuCisKK0l0IGRlZmF1bHRzIHRv
IGBgZkVgYCB0byBsaXN0IGZhaWx1cmVzIGFuZCBlcnJvcnMuCisKK0V4YW1wbGU6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudCBvZiB0ZXN0X2V4YW1wbGUucHkKKyAg
ICBpbXBvcnQgcHl0ZXN0CisKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBlcnJvcl9m
aXh0dXJlKCk6CisgICAgICAgIGFzc2VydCAwCisKKworICAgIGRlZiB0ZXN0X29rKCk6CisgICAg
ICAgIHByaW50KCJvayIpCisKKworICAgIGRlZiB0ZXN0X2ZhaWwoKToKKyAgICAgICAgYXNzZXJ0
IDAKKworCisgICAgZGVmIHRlc3RfZXJyb3IoZXJyb3JfZml4dHVyZSk6CisgICAgICAgIHBhc3MK
KworCisgICAgZGVmIHRlc3Rfc2tpcCgpOgorICAgICAgICBweXRlc3Quc2tpcCgic2tpcHBpbmcg
dGhpcyB0ZXN0IikKKworCisgICAgZGVmIHRlc3RfeGZhaWwoKToKKyAgICAgICAgcHl0ZXN0Lnhm
YWlsKCJ4ZmFpbGluZyB0aGlzIHRlc3QiKQorCisKKyAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocmVh
c29uPSJhbHdheXMgeGZhaWwiKQorICAgIGRlZiB0ZXN0X3hwYXNzKCk6CisgICAgICAgIHBhc3MK
KworCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisKKyAgICAkIHB5dGVzdCAtcmEKKyAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRl
c3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9Q
UkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBj
b2xsZWN0ZWQgNiBpdGVtcworCisgICAgdGVzdF9leGFtcGxlLnB5IC5GRXN4WCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVSUk9SUyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19fX19fX18gRVJST1IgYXQgc2V0dXAg
b2YgdGVzdF9lcnJvciBfX19fX19fX19fX19fX19fX19fX19fXworCisgICAgICAgIEBweXRlc3Qu
Zml4dHVyZQorICAgICAgICBkZWYgZXJyb3JfZml4dHVyZSgpOgorICAgID4gICAgICAgYXNzZXJ0
IDAKKyAgICBFICAgICAgIGFzc2VydCAwCisKKyAgICB0ZXN0X2V4YW1wbGUucHk6NjogQXNzZXJ0
aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18gdGVzdF9mYWlsIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XworCisgICAgICAgIGRlZiB0ZXN0X2ZhaWwoKToKKyAgICA+ICAgICAgIGFzc2VydCAwCisgICAg
RSAgICAgICBhc3NlcnQgMAorCisgICAgdGVzdF9leGFtcGxlLnB5OjE0OiBBc3NlcnRpb25FcnJv
cgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8g
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBTS0lQUEVEIFsxXSB0ZXN0X2V4YW1wbGUu
cHk6MjI6IHNraXBwaW5nIHRoaXMgdGVzdAorICAgIFhGQUlMIHRlc3RfZXhhbXBsZS5weTo6dGVz
dF94ZmFpbAorICAgICAgcmVhc29uOiB4ZmFpbGluZyB0aGlzIHRlc3QKKyAgICBYUEFTUyB0ZXN0
X2V4YW1wbGUucHk6OnRlc3RfeHBhc3MgYWx3YXlzIHhmYWlsCisgICAgRVJST1IgdGVzdF9leGFt
cGxlLnB5Ojp0ZXN0X2Vycm9yIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgdGVzdF9leGFtcGxlLnB5
Ojp0ZXN0X2ZhaWwgLSBhc3NlcnQgMAorICAgID09IDEgZmFpbGVkLCAxIHBhc3NlZCwgMSBza2lw
cGVkLCAxIHhmYWlsZWQsIDEgeHBhc3NlZCwgMSBlcnJvciBpbiAwLjEycyA9PT0KKworVGhlIGBg
LXJgYCBvcHRpb25zIGFjY2VwdHMgYSBudW1iZXIgb2YgY2hhcmFjdGVycyBhZnRlciBpdCwgd2l0
aCBgYGFgYCB1c2VkCithYm92ZSBtZWFuaW5nICJhbGwgZXhjZXB0IHBhc3NlcyIuCisKK0hlcmUg
aXMgdGhlIGZ1bGwgbGlzdCBvZiBhdmFpbGFibGUgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2Vk
OgorCisgLSBgYGZgYCAtIGZhaWxlZAorIC0gYGBFYGAgLSBlcnJvcgorIC0gYGBzYGAgLSBza2lw
cGVkCisgLSBgYHhgYCAtIHhmYWlsZWQKKyAtIGBgWGBgIC0geHBhc3NlZAorIC0gYGBwYGAgLSBw
YXNzZWQKKyAtIGBgUGBgIC0gcGFzc2VkIHdpdGggb3V0cHV0CisKK1NwZWNpYWwgY2hhcmFjdGVy
cyBmb3IgKGRlKXNlbGVjdGlvbiBvZiBncm91cHM6CisKKyAtIGBgYWBgIC0gYWxsIGV4Y2VwdCBg
YHBQYGAKKyAtIGBgQWBgIC0gYWxsCisgLSBgYE5gYCAtIG5vbmUsIHRoaXMgY2FuIGJlIHVzZWQg
dG8gZGlzcGxheSBub3RoaW5nIChzaW5jZSBgYGZFYGAgaXMgdGhlIGRlZmF1bHQpCisKK01vcmUg
dGhhbiBvbmUgY2hhcmFjdGVyIGNhbiBiZSB1c2VkLCBzbyBmb3IgZXhhbXBsZSB0byBvbmx5IHNl
ZSBmYWlsZWQgYW5kIHNraXBwZWQgdGVzdHMsIHlvdSBjYW4gZXhlY3V0ZToKKworLi4gY29kZS1i
bG9jazo6IHB5dGVzdAorCisgICAgJCBweXRlc3QgLXJmcworICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHkt
MS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0
X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCA2IGl0
ZW1zCisKKyAgICB0ZXN0X2V4YW1wbGUucHkgLkZFc3hYICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KKworICAgID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gRVJST1JTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICBfX19fX19fX19fX19fX19fX19fX19fXyBFUlJPUiBhdCBzZXR1cCBvZiB0ZXN0X2Vycm9y
IF9fX19fX19fX19fX19fX19fX19fX19fCisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgIGRlZiBlcnJvcl9maXh0dXJlKCk6CisgICAgPiAgICAgICBhc3NlcnQgMAorICAgIEUgICAg
ICAgYXNzZXJ0IDAKKworICAgIHRlc3RfZXhhbXBsZS5weTo2OiBBc3NlcnRpb25FcnJvcgorICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XyB0ZXN0X2ZhaWwgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKyAgICAgICAg
ZGVmIHRlc3RfZmFpbCgpOgorICAgID4gICAgICAgYXNzZXJ0IDAKKyAgICBFICAgICAgIGFzc2Vy
dCAwCisKKyAgICB0ZXN0X2V4YW1wbGUucHk6MTQ6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X2V4YW1wbGUucHk6OnRlc3RfZmFpbCAtIGFz
c2VydCAwCisgICAgU0tJUFBFRCBbMV0gdGVzdF9leGFtcGxlLnB5OjIyOiBza2lwcGluZyB0aGlz
IHRlc3QKKyAgICA9PSAxIGZhaWxlZCwgMSBwYXNzZWQsIDEgc2tpcHBlZCwgMSB4ZmFpbGVkLCAx
IHhwYXNzZWQsIDEgZXJyb3IgaW4gMC4xMnMgPT09CisKK1VzaW5nIGBgcGBgIGxpc3RzIHRoZSBw
YXNzaW5nIHRlc3RzLCB3aGlsc3QgYGBQYGAgYWRkcyBhbiBleHRyYSBzZWN0aW9uICJQQVNTRVMi
IHdpdGggdGhvc2UgdGVzdHMgdGhhdCBwYXNzZWQgYnV0IGhhZAorY2FwdHVyZWQgb3V0cHV0Ogor
CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisKKyAgICAkIHB5dGVzdCAtcnBQCisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJF
RklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29s
bGVjdGVkIDYgaXRlbXMKKworICAgIHRlc3RfZXhhbXBsZS5weSAuRkVzeFggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQorCisgICAgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSBFUlJPUlMgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorICAgIF9fX19fX19fX19fX19fX19fX19fX19fIEVSUk9SIGF0IHNldHVwIG9m
IHRlc3RfZXJyb3IgX19fX19fX19fX19fX19fX19fX19fX18KKworICAgICAgICBAcHl0ZXN0LmZp
eHR1cmUKKyAgICAgICAgZGVmIGVycm9yX2ZpeHR1cmUoKToKKyAgICA+ICAgICAgIGFzc2VydCAw
CisgICAgRSAgICAgICBhc3NlcnQgMAorCisgICAgdGVzdF9leGFtcGxlLnB5OjY6IEFzc2VydGlv
bkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fIHRlc3RfZmFpbCBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
KworICAgICAgICBkZWYgdGVzdF9mYWlsKCk6CisgICAgPiAgICAgICBhc3NlcnQgMAorICAgIEUg
ICAgICAgYXNzZXJ0IDAKKworICAgIHRlc3RfZXhhbXBsZS5weToxNDogQXNzZXJ0aW9uRXJyb3IK
KyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFBBU1NFUyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fIHRlc3Rfb2sgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXB0dXJlZCBzdGRvdXQgY2FsbCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICBvaworICAgID09PT09PT09PT09PT09PT09PT09PT09PT0g
c2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBQ
QVNTRUQgdGVzdF9leGFtcGxlLnB5Ojp0ZXN0X29rCisgICAgPT0gMSBmYWlsZWQsIDEgcGFzc2Vk
LCAxIHNraXBwZWQsIDEgeGZhaWxlZCwgMSB4cGFzc2VkLCAxIGVycm9yIGluIDAuMTJzID09PQor
CiAuLiBfcGRiLW9wdGlvbjoKIAogRHJvcHBpbmcgdG8gUERCXyAoUHl0aG9uIERlYnVnZ2VyKSBv
biBmYWlsdXJlcwpAQCAtMTQ4LDEzICszNTIsMTcgQEAgRHJvcHBpbmcgdG8gUERCXyAoUHl0aG9u
IERlYnVnZ2VyKSBvbiBmYWlsdXJlcwogLi4gX1BEQjogaHR0cDovL2RvY3MucHl0aG9uLm9yZy9s
aWJyYXJ5L3BkYi5odG1sCiAKIFB5dGhvbiBjb21lcyB3aXRoIGEgYnVpbHRpbiBQeXRob24gZGVi
dWdnZXIgY2FsbGVkIFBEQl8uICBgYHB5dGVzdGBgCi1hbGxvd3Mgb25lIHRvIGRyb3AgaW50byB0
aGUgUERCXyBwcm9tcHQgdmlhIGEgY29tbWFuZCBsaW5lIG9wdGlvbjo6CithbGxvd3Mgb25lIHRv
IGRyb3AgaW50byB0aGUgUERCXyBwcm9tcHQgdmlhIGEgY29tbWFuZCBsaW5lIG9wdGlvbjoKKwor
Li4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLXBkYgogCiBUaGlzIHdpbGwgaW52
b2tlIHRoZSBQeXRob24gZGVidWdnZXIgb24gZXZlcnkgZmFpbHVyZSAob3IgS2V5Ym9hcmRJbnRl
cnJ1cHQpLgogT2Z0ZW4geW91IG1pZ2h0IG9ubHkgd2FudCB0byBkbyB0aGlzIGZvciB0aGUgZmly
c3QgZmFpbGluZyB0ZXN0IHRvIHVuZGVyc3RhbmQKLWEgY2VydGFpbiBmYWlsdXJlIHNpdHVhdGlv
bjo6CithIGNlcnRhaW4gZmFpbHVyZSBzaXR1YXRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNo
CiAKICAgICBweXRlc3QgLXggLS1wZGIgICAjIGRyb3AgdG8gUERCIG9uIGZpcnN0IGZhaWx1cmUs
IHRoZW4gZW5kIHRlc3Qgc2Vzc2lvbgogICAgIHB5dGVzdCAtLXBkYiAtLW1heGZhaWw9MyAgIyBk
cm9wIHRvIFBEQiBmb3IgZmlyc3QgdGhyZWUgZmFpbHVyZXMKQEAgLTE3MSw2ICszNzksMjAgQEAg
Zm9yIGV4YW1wbGU6OgogICAgID4+PiBzeXMubGFzdF92YWx1ZQogICAgIEFzc2VydGlvbkVycm9y
KCdhc3NlcnQgcmVzdWx0ID09ICJvayInLCkKIAorLi4gX3RyYWNlLW9wdGlvbjoKKworRHJvcHBp
bmcgdG8gUERCXyAoUHl0aG9uIERlYnVnZ2VyKSBhdCB0aGUgc3RhcnQgb2YgYSB0ZXN0CistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KworYGBweXRlc3RgYCBhbGxvd3Mgb25lIHRvIGRyb3AgaW50byB0aGUgUERCXyBwcm9tcHQgaW1t
ZWRpYXRlbHkgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdCB2aWEgYSBjb21tYW5kIGxpbmUgb3B0
aW9uOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICAgcHl0ZXN0IC0tdHJhY2UKKworVGhp
cyB3aWxsIGludm9rZSB0aGUgUHl0aG9uIGRlYnVnZ2VyIGF0IHRoZSBzdGFydCBvZiBldmVyeSB0
ZXN0LgorCiAuLiBfYnJlYWtwb2ludHM6CiAKIFNldHRpbmcgYnJlYWtwb2ludHMKQEAgLTE4NCwx
MCArNDA2LDggQEAgaW4geW91ciBjb2RlIGFuZCBweXRlc3QgYXV0b21hdGljYWxseSBkaXNhYmxl
cyBpdHMgb3V0cHV0IGNhcHR1cmUgZm9yIHRoYXQgdGVzdDoKICogT3V0cHV0IGNhcHR1cmUgaW4g
b3RoZXIgdGVzdHMgaXMgbm90IGFmZmVjdGVkLgogKiBBbnkgcHJpb3IgdGVzdCBvdXRwdXQgdGhh
dCBoYXMgYWxyZWFkeSBiZWVuIGNhcHR1cmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZCBhcwogICBz
dWNoLgotKiBBbnkgbGF0ZXIgb3V0cHV0IHByb2R1Y2VkIHdpdGhpbiB0aGUgc2FtZSB0ZXN0IHdp
bGwgbm90IGJlIGNhcHR1cmVkIGFuZCB3aWxsCi0gIGluc3RlYWQgZ2V0IHNlbnQgZGlyZWN0bHkg
dG8gYGBzeXMuc3Rkb3V0YGAuIE5vdGUgdGhhdCB0aGlzIGhvbGRzIHRydWUgZXZlbgotICBmb3Ig
dGVzdCBvdXRwdXQgb2NjdXJyaW5nIGFmdGVyIHlvdSBleGl0IHRoZSBpbnRlcmFjdGl2ZSBQREJf
IHRyYWNpbmcgc2Vzc2lvbgotICBhbmQgY29udGludWUgd2l0aCB0aGUgcmVndWxhciB0ZXN0IHJ1
bi4KKyogT3V0cHV0IGNhcHR1cmUgZ2V0cyByZXN1bWVkIHdoZW4gZW5kaW5nIHRoZSBkZWJ1Z2dl
ciBzZXNzaW9uICh2aWEgdGhlCisgIGBgY29udGludWVgYCBjb21tYW5kKS4KIAogCiAuLiBfYGJy
ZWFrcG9pbnQtYnVpbHRpbmA6CkBAIC0yMDAsMzIgKzQyMCw2OSBAQCBQeXRlc3Qgc3VwcG9ydHMg
dGhlIHVzZSBvZiBgYGJyZWFrcG9pbnQoKWBgIHdpdGggdGhlIGZvbGxvd2luZyBiZWhhdmlvdXJz
OgogCiAgLSBXaGVuIGBgYnJlYWtwb2ludCgpYGAgaXMgY2FsbGVkIGFuZCBgYFBZVEhPTkJSRUFL
UE9JTlRgYCBpcyBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIHB5dGVzdCB3aWxsIHVzZSB0aGUg
Y3VzdG9tIGludGVybmFsIFBEQiB0cmFjZSBVSSBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gZGVmYXVs
dCBgYFBkYmBgLgogIC0gV2hlbiB0ZXN0cyBhcmUgY29tcGxldGUsIHRoZSBzeXN0ZW0gd2lsbCBk
ZWZhdWx0IGJhY2sgdG8gdGhlIHN5c3RlbSBgYFBkYmBgIHRyYWNlIFVJLgotIC0gSWYgYGAtLXBk
YmBgIGlzIGNhbGxlZCBvbiBleGVjdXRpb24gb2YgcHl0ZXN0LCB0aGUgY3VzdG9tIGludGVybmFs
IFBkYiB0cmFjZSBVSSBpcyB1c2VkIG9uIGBgYm90aGJyZWFrcG9pbnQoKWBgIGFuZCBmYWlsZWQg
dGVzdHMvdW5oYW5kbGVkIGV4Y2VwdGlvbnMuCi0gLSBJZiBgYC0tcGRiY2xzYGAgaXMgdXNlZCwg
dGhlIGN1c3RvbSBjbGFzcyBkZWJ1Z2dlciB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gYSB0ZXN0IGZh
aWxzIChhcyBleHBlY3RlZCB3aXRoaW4gZXhpc3RpbmcgYmVoYXZpb3VyKSwgYnV0IGFsc28gd2hl
biBgYGJyZWFrcG9pbnQoKWBgIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBhIHRlc3QsIHRoZSBjdXN0
b20gY2xhc3MgZGVidWdnZXIgd2lsbCBiZSBpbnN0YW50aWF0ZWQuCisgLSBXaXRoIGBgLS1wZGJg
YCBwYXNzZWQgdG8gcHl0ZXN0LCB0aGUgY3VzdG9tIGludGVybmFsIFBkYiB0cmFjZSBVSSBpcyB1
c2VkIHdpdGggYm90aCBgYGJyZWFrcG9pbnQoKWBgIGFuZCBmYWlsZWQgdGVzdHMvdW5oYW5kbGVk
IGV4Y2VwdGlvbnMuCisgLSBgYC0tcGRiY2xzYGAgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGN1
c3RvbSBkZWJ1Z2dlciBjbGFzcy4KIAogLi4gX2R1cmF0aW9uczoKIAogUHJvZmlsaW5nIHRlc3Qg
ZXhlY3V0aW9uIGR1cmF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLS4uIHZlcnNpb25hZGRlZDogMi4yCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDYuMAorCitUbyBn
ZXQgYSBsaXN0IG9mIHRoZSBzbG93ZXN0IDEwIHRlc3QgZHVyYXRpb25zIG92ZXIgMS4wcyBsb25n
OgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICAgcHl0ZXN0IC0tZHVyYXRpb25zPTEwIC0t
ZHVyYXRpb25zLW1pbj0xLjAKKworQnkgZGVmYXVsdCwgcHl0ZXN0IHdpbGwgbm90IHNob3cgdGVz
dCBkdXJhdGlvbnMgdGhhdCBhcmUgdG9vIHNtYWxsICg8MC4wMDVzKSB1bmxlc3MgYGAtdnZgYCBp
cyBwYXNzZWQgb24gdGhlIGNvbW1hbmQtbGluZS4KIAotVG8gZ2V0IGEgbGlzdCBvZiB0aGUgc2xv
d2VzdCAxMCB0ZXN0IGR1cmF0aW9uczo6CiAKLSAgICBweXRlc3QgLS1kdXJhdGlvbnM9MTAKKy4u
IF9mYXVsdGhhbmRsZXI6CisKK0ZhdWx0IEhhbmRsZXIKKy0tLS0tLS0tLS0tLS0KKworLi4gdmVy
c2lvbmFkZGVkOjogNS4wCisKK1RoZSBgZmF1bHRoYW5kbGVyIDxodHRwczovL2RvY3MucHl0aG9u
Lm9yZy8zL2xpYnJhcnkvZmF1bHRoYW5kbGVyLmh0bWw+YF9fIHN0YW5kYXJkIG1vZHVsZQorY2Fu
IGJlIHVzZWQgdG8gZHVtcCBQeXRob24gdHJhY2ViYWNrcyBvbiBhIHNlZ2ZhdWx0IG9yIGFmdGVy
IGEgdGltZW91dC4KKworVGhlIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgZm9yIHB5
dGVzdCBydW5zLCB1bmxlc3MgdGhlIGBgLXAgbm86ZmF1bHRoYW5kbGVyYGAgaXMgZ2l2ZW4KK29u
IHRoZSBjb21tYW5kLWxpbmUuCisKK0Fsc28gdGhlIDpjb25mdmFsOmBmYXVsdGhhbmRsZXJfdGlt
ZW91dD1YPGZhdWx0aGFuZGxlcl90aW1lb3V0PmAgY29uZmlndXJhdGlvbiBvcHRpb24gY2FuIGJl
IHVzZWQKK3RvIGR1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpZiBhIHRlc3QgdGFr
ZXMgbG9uZ2VyIHRoYW4gYGBYYGAKK3NlY29uZHMgdG8gZmluaXNoIChub3QgYXZhaWxhYmxlIG9u
IFdpbmRvd3MpLgorCisuLiBub3RlOjoKKworICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVl
biBpbnRlZ3JhdGVkIGZyb20gdGhlIGV4dGVybmFsCisgICAgYHB5dGVzdC1mYXVsdGhhbmRsZXIg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1mYXVsdGhhbmRsZXI+YF9fIHBs
dWdpbiwgd2l0aCB0d28KKyAgICBzbWFsbCBkaWZmZXJlbmNlczoKKworICAgICogVG8gZGlzYWJs
ZSBpdCwgdXNlIGBgLXAgbm86ZmF1bHRoYW5kbGVyYGAgaW5zdGVhZCBvZiBgYC0tbm8tZmF1bHRo
YW5kbGVyYGA6IHRoZSBmb3JtZXIKKyAgICAgIGNhbiBiZSB1c2VkIHdpdGggYW55IHBsdWdpbiwg
c28gaXQgc2F2ZXMgb25lIG9wdGlvbi4KKworICAgICogVGhlIGBgLS1mYXVsdGhhbmRsZXItdGlt
ZW91dGBgIGNvbW1hbmQtbGluZSBvcHRpb24gaGFzIGJlY29tZSB0aGUKKyAgICAgIDpjb25mdmFs
OmBmYXVsdGhhbmRsZXJfdGltZW91dGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEl0IGNhbiBzdGls
bCBiZSBjb25maWd1cmVkIGZyb20KKyAgICAgIHRoZSBjb21tYW5kLWxpbmUgdXNpbmcgYGAtbyBm
YXVsdGhhbmRsZXJfdGltZW91dD1YYGAuCiAKIAogQ3JlYXRpbmcgSlVuaXRYTUwgZm9ybWF0IGZp
bGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIFRvIGNyZWF0ZSByZXN1bHQgZmlsZXMgd2hpY2ggY2FuIGJlIHJlYWQgYnkgSmVua2luc18g
b3Igb3RoZXIgQ29udGludW91cwotaW50ZWdyYXRpb24gc2VydmVycywgdXNlIHRoaXMgaW52b2Nh
dGlvbjo6CitpbnRlZ3JhdGlvbiBzZXJ2ZXJzLCB1c2UgdGhpcyBpbnZvY2F0aW9uOgorCisuLiBj
b2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tanVuaXR4bWw9cGF0aAogCiB0byBjcmVh
dGUgYW4gWE1MIGZpbGUgYXQgYGBwYXRoYGAuCiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMQorCiAK
IFRvIHNldCB0aGUgbmFtZSBvZiB0aGUgcm9vdCB0ZXN0IHN1aXRlIHhtbCBpdGVtLCB5b3UgY2Fu
IGNvbmZpZ3VyZSB0aGUgYGBqdW5pdF9zdWl0ZV9uYW1lYGAgb3B0aW9uIGluIHlvdXIgY29uZmln
IGZpbGU6CiAKQEAgLTIzNCwxOCArNDkxLDI1IEBAIFRvIHNldCB0aGUgbmFtZSBvZiB0aGUgcm9v
dCB0ZXN0IHN1aXRlIHhtbCBpdGVtLCB5b3UgY2FuIGNvbmZpZ3VyZSB0aGUgYGBqdW5pdF9zCiAg
ICAgW3B5dGVzdF0KICAgICBqdW5pdF9zdWl0ZV9uYW1lID0gbXlfc3VpdGUKIAorLi4gdmVyc2lv
bmFkZGVkOjogNC4wCisKK0pVbml0IFhNTCBzcGVjaWZpY2F0aW9uIHNlZW1zIHRvIGluZGljYXRl
IHRoYXQgYGAidGltZSJgYCBhdHRyaWJ1dGUKK3Nob3VsZCByZXBvcnQgdG90YWwgdGVzdCBleGVj
dXRpb24gdGltZXMsIGluY2x1ZGluZyBzZXR1cCBhbmQgdGVhcmRvd24KKyhgMSA8aHR0cDovL3dp
bmR5cm9hZC5jb20uYXUvZGwvT3BlbiUyMFNvdXJjZS9KVW5pdC54c2Q+YF8sIGAyCis8aHR0cHM6
Ly93d3cuaWJtLmNvbS9zdXBwb3J0L2tub3dsZWRnZWNlbnRlci9lbi9TU1EyUjJfMTQuMS4wL2Nv
bS5pYm0ucnNhci5hbmFseXNpcy5jb2RlcmV2aWV3LmNvYm9sLmRvYy90b3BpY3MvY2FjX3VzZXJl
c3VsdHNfanVuaXQuaHRtbD5gXykuCitJdCBpcyB0aGUgZGVmYXVsdCBweXRlc3QgYmVoYXZpb3Iu
IFRvIHJlcG9ydCBqdXN0IGNhbGwgZHVyYXRpb25zCitpbnN0ZWFkLCBjb25maWd1cmUgdGhlIGBg
anVuaXRfZHVyYXRpb25fcmVwb3J0YGAgb3B0aW9uIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9j
azo6IGluaQorCisgICAgW3B5dGVzdF0KKyAgICBqdW5pdF9kdXJhdGlvbl9yZXBvcnQgPSBjYWxs
CisKIC4uIF9yZWNvcmRfcHJvcGVydHkgZXhhbXBsZToKIAogcmVjb3JkX3Byb3BlcnR5CiBeXl5e
Xl5eXl5eXl5eXl4KIAotLi4gdmVyc2lvbmFkZGVkOjogMi44Ci0uLiB2ZXJzaW9uY2hhbmdlZDo6
IDMuNQotCi0gICBGaXh0dXJlIHJlbmFtZWQgZnJvbSBgYHJlY29yZF94bWxfcHJvcGVydHlgYCB0
byBgYHJlY29yZF9wcm9wZXJ0eWBgIGFzIHVzZXIKLSAgIHByb3BlcnRpZXMgYXJlIG5vdyBhdmFp
bGFibGUgdG8gYWxsIHJlcG9ydGVycy4KLSAgIGBgcmVjb3JkX3htbF9wcm9wZXJ0eWBgIGlzIG5v
dyBkZXByZWNhdGVkLgotCiBJZiB5b3Ugd2FudCB0byBsb2cgYWRkaXRpb25hbCBpbmZvcm1hdGlv
biBmb3IgYSB0ZXN0LCB5b3UgY2FuIHVzZSB0aGUKIGBgcmVjb3JkX3Byb3BlcnR5YGAgZml4dHVy
ZToKIApAQCAtMzAzLDE1ICs1NjcsMTMgQEAgV2lsbCByZXN1bHQgaW46CiAKIC4uIHdhcm5pbmc6
OgogCi0gICAgYGByZWNvcmRfcHJvcGVydHlgYCBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBh
bmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgotCi0gICAgQWxzbyBwbGVhc2Ugbm90ZSB0aGF0
IHVzaW5nIHRoaXMgZmVhdHVyZSB3aWxsIGJyZWFrIGFueSBzY2hlbWEgdmVyaWZpY2F0aW9uLgor
ICAgIFBsZWFzZSBub3RlIHRoYXQgdXNpbmcgdGhpcyBmZWF0dXJlIHdpbGwgYnJlYWsgc2NoZW1h
IHZlcmlmaWNhdGlvbnMgZm9yIHRoZSBsYXRlc3QgSlVuaXRYTUwgc2NoZW1hLgogICAgIFRoaXMg
bWlnaHQgYmUgYSBwcm9ibGVtIHdoZW4gdXNlZCB3aXRoIHNvbWUgQ0kgc2VydmVycy4KIAogcmVj
b3JkX3htbF9hdHRyaWJ1dGUKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLS4u
IHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIFRvIGFkZCBhbiBhZGRpdGlvbmFsIHhtbCBhdHRyaWJ1
dGUgdG8gYSB0ZXN0Y2FzZSBlbGVtZW50LCB5b3UgY2FuIHVzZQogYGByZWNvcmRfeG1sX2F0dHJp
YnV0ZWBgIGZpeHR1cmUuIFRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBvdmVycmlkZSBleGlzdGlu
ZyB2YWx1ZXM6CkBAIC0zNjgsNDMgKzYzMCw0NSBAQCBJbnN0ZWFkLCB0aGlzIHdpbGwgYWRkIGFu
IGF0dHJpYnV0ZSBgYGFzc2VydGlvbnM9IlJFUS0xMjM0ImBgIGluc2lkZSB0aGUgZ2VuZXJhdAog
ICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgPC94czplbGVtZW50PgogCi1M
b2dYTUw6IGFkZF9nbG9iYWxfcHJvcGVydHkKLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eCisuLiB3YXJuaW5nOjoKIAotLi4gdmVyc2lvbmFkZGVkOjogMy4wCisgICAgUGxlYXNlIG5v
dGUgdGhhdCB1c2luZyB0aGlzIGZlYXR1cmUgd2lsbCBicmVhayBzY2hlbWEgdmVyaWZpY2F0aW9u
cyBmb3IgdGhlIGxhdGVzdCBKVW5pdFhNTCBzY2hlbWEuCisgICAgVGhpcyBtaWdodCBiZSBhIHBy
b2JsZW0gd2hlbiB1c2VkIHdpdGggc29tZSBDSSBzZXJ2ZXJzLgogCi1JZiB5b3Ugd2FudCB0byBh
ZGQgYSBwcm9wZXJ0aWVzIG5vZGUgaW4gdGhlIHRlc3RzdWl0ZSBsZXZlbCwgd2hpY2ggbWF5IGNv
bnRhaW5zIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVsZXZhbnQKLXRvIGFsbCB0ZXN0Y2FzZXMgeW91
IGNhbiB1c2UgYGBMb2dYTUwuYWRkX2dsb2JhbF9wcm9wZXJ0aWVzYGAKKy4uIF9yZWNvcmRfdGVz
dHN1aXRlX3Byb3BlcnR5IGV4YW1wbGU6CiAKLS4uIGNvZGUtYmxvY2s6OiBweXRob24KK3JlY29y
ZF90ZXN0c3VpdGVfcHJvcGVydHkKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotICAgIGlt
cG9ydCBweXRlc3QKKy4uIHZlcnNpb25hZGRlZDo6IDQuNQogCitJZiB5b3Ugd2FudCB0byBhZGQg
YSBwcm9wZXJ0aWVzIG5vZGUgYXQgdGhlIHRlc3Qtc3VpdGUgbGV2ZWwsIHdoaWNoIG1heSBjb250
YWlucyBwcm9wZXJ0aWVzCit0aGF0IGFyZSByZWxldmFudCB0byBhbGwgdGVzdHMsIHlvdSBjYW4g
dXNlIHRoZSBgYHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHlgYCBzZXNzaW9uLXNjb3BlZCBmaXh0
dXJlOgogCi0gICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKLSAgICBkZWYgbG9n
X2dsb2JhbF9lbnZfZmFjdHMoZik6CitUaGUgYGByZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5YGAg
c2Vzc2lvbi1zY29wZWQgZml4dHVyZSBjYW4gYmUgdXNlZCB0byBhZGQgcHJvcGVydGllcyByZWxl
dmFudAordG8gYWxsIHRlc3RzLgogCi0gICAgICAgIGlmIHB5dGVzdC5jb25maWcucGx1Z2lubWFu
YWdlci5oYXNwbHVnaW4oImp1bml0eG1sIik6Ci0gICAgICAgICAgICBteV9qdW5pdCA9IGdldGF0
dHIocHl0ZXN0LmNvbmZpZywgIl94bWwiLCBOb25lKQorLi4gY29kZS1ibG9jazo6IHB5dGhvbgog
Ci0gICAgICAgIG15X2p1bml0LmFkZF9nbG9iYWxfcHJvcGVydHkoIkFSQ0giLCAiUFBDIikKLSAg
ICAgICAgbXlfanVuaXQuYWRkX2dsb2JhbF9wcm9wZXJ0eSgiU1RPUkFHRV9UWVBFIiwgIkNFUEgi
KQorICAgIGltcG9ydCBweXRlc3QKIAogCi0gICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGxv
Z19nbG9iYWxfZW52X2ZhY3RzLl9fbmFtZV9fKQotICAgIGRlZiBzdGFydF9hbmRfcHJlcGFyZV9l
bnYoKToKLSAgICAgICAgcGFzcworICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIs
IGF1dG91c2U9VHJ1ZSkKKyAgICBkZWYgbG9nX2dsb2JhbF9lbnZfZmFjdHMocmVjb3JkX3Rlc3Rz
dWl0ZV9wcm9wZXJ0eSk6CisgICAgICAgIHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkoIkFSQ0gi
LCAiUFBDIikKKyAgICAgICAgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSgiU1RPUkFHRV9UWVBF
IiwgIkNFUEgiKQogCiAKLSAgICBjbGFzcyBUZXN0TWUob2JqZWN0KToKKyAgICBjbGFzcyBUZXN0
TWU6CiAgICAgICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKICAgICAgICAgICAgIGFzc2VydCBUcnVl
CiAKLVRoaXMgd2lsbCBhZGQgYSBwcm9wZXJ0eSBub2RlIGJlbG93IHRoZSB0ZXN0c3VpdGUgbm9k
ZSB0byB0aGUgZ2VuZXJhdGVkIHhtbDoKK1RoZSBmaXh0dXJlIGlzIGEgY2FsbGFibGUgd2hpY2gg
cmVjZWl2ZXMgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCBvZiBhIGBgPHByb3BlcnR5PmBgIHRhZwor
YWRkZWQgYXQgdGhlIHRlc3Qtc3VpdGUgbGV2ZWwgb2YgdGhlIGdlbmVyYXRlZCB4bWw6CiAKIC4u
IGNvZGUtYmxvY2s6OiB4bWwKIAotICAgIDx0ZXN0c3VpdGUgZXJyb3JzPSIwIiBmYWlsdXJlcz0i
MCIgbmFtZT0icHl0ZXN0IiBza2lwcz0iMCIgdGVzdHM9IjEiIHRpbWU9IjAuMDA2Ij4KKyAgICA8
dGVzdHN1aXRlIGVycm9ycz0iMCIgZmFpbHVyZXM9IjAiIG5hbWU9InB5dGVzdCIgc2tpcHBlZD0i
MCIgdGVzdHM9IjEiIHRpbWU9IjAuMDA2Ij4KICAgICAgIDxwcm9wZXJ0aWVzPgogICAgICAgICA8
cHJvcGVydHkgbmFtZT0iQVJDSCIgdmFsdWU9IlBQQyIvPgogICAgICAgICA8cHJvcGVydHkgbmFt
ZT0iU1RPUkFHRV9UWVBFIiB2YWx1ZT0iQ0VQSCIvPgpAQCAtNDEyLDQwICs2NzYsNDQgQEAgVGhp
cyB3aWxsIGFkZCBhIHByb3BlcnR5IG5vZGUgYmVsb3cgdGhlIHRlc3RzdWl0ZSBub2RlIHRvIHRo
ZSBnZW5lcmF0ZWQgeG1sOgogICAgICAgPHRlc3RjYXNlIGNsYXNzbmFtZT0idGVzdF9tZS5UZXN0
TWUiIGZpbGU9InRlc3RfbWUucHkiIGxpbmU9IjE2IiBuYW1lPSJ0ZXN0X2ZvbyIgdGltZT0iMC4w
MDAyNDM2NjM3ODc4NDIiLz4KICAgICA8L3Rlc3RzdWl0ZT4KIAotLi4gd2FybmluZzo6CitgYG5h
bWVgYCBtdXN0IGJlIGEgc3RyaW5nLCBgYHZhbHVlYGAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBz
dHJpbmcgYW5kIHByb3Blcmx5IHhtbC1lc2NhcGVkLgorCitUaGUgZ2VuZXJhdGVkIFhNTCBpcyBj
b21wYXRpYmxlIHdpdGggdGhlIGxhdGVzdCBgYHh1bml0YGAgc3RhbmRhcmQsIGNvbnRyYXJ5IHRv
IGByZWNvcmRfcHJvcGVydHlgXworYW5kIGByZWNvcmRfeG1sX2F0dHJpYnV0ZWBfLgogCi0gICAg
VGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSwgYW5kIGl0cyBpbnRlcmZhY2UgbWlnaHQg
YmUgcmVwbGFjZWQKLSAgICBieSBzb21ldGhpbmcgbW9yZSBwb3dlcmZ1bCBhbmQgZ2VuZXJhbCBp
biBmdXR1cmUgdmVyc2lvbnMuIFRoZQotICAgIGZ1bmN0aW9uYWxpdHkgcGVyLXNlIHdpbGwgYmUg
a2VwdC4KIAogQ3JlYXRpbmcgcmVzdWx0bG9nIGZvcm1hdCBmaWxlcwogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBkZXByZWNhdGVkOjog
My4wCi0KLSAgICBUaGlzIG9wdGlvbiBpcyByYXJlbHkgdXNlZCBhbmQgaXMgc2NoZWR1bGVkIGZv
ciByZW1vdmFsIGluIDQuMC4KLQotICAgIEFuIGFsdGVybmF0aXZlIGZvciB1c2VycyB3aGljaCBz
dGlsbCBuZWVkIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpcyB0byB1c2UgdGhlCi0gICAgYHB5dGVz
dC10YXAgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QtdGFwLz5gXyBwbHVnaW4gd2hp
Y2ggcHJvdmlkZXMKLSAgICBhIHN0cmVhbSBvZiB0ZXN0IGRhdGEuCiAKLSAgICBJZiB5b3UgaGF2
ZSBhbnkgY29uY2VybnMsIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0bwotICAgIGBvcGVuIGFuIGlz
c3VlIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzPmBfLgorVG8g
Y3JlYXRlIHBsYWluLXRleHQgbWFjaGluZS1yZWFkYWJsZSByZXN1bHQgZmlsZXMgeW91IGNhbiBp
c3N1ZToKIAotVG8gY3JlYXRlIHBsYWluLXRleHQgbWFjaGluZS1yZWFkYWJsZSByZXN1bHQgZmls
ZXMgeW91IGNhbiBpc3N1ZTo6CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0t
cmVzdWx0bG9nPXBhdGgKIAogYW5kIGxvb2sgYXQgdGhlIGNvbnRlbnQgYXQgdGhlIGBgcGF0aGBg
IGxvY2F0aW9uLiAgU3VjaCBmaWxlcyBhcmUgdXNlZCBlLmcuCiBieSB0aGUgYFB5UHktdGVzdGBf
IHdlYiBwYWdlIHRvIHNob3cgdGVzdCByZXN1bHRzIG92ZXIgc2V2ZXJhbCByZXZpc2lvbnMuCiAK
Ky4uIHdhcm5pbmc6OgorCisgICAgVGhpcyBvcHRpb24gaXMgcmFyZWx5IHVzZWQgYW5kIGlzIHNj
aGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBweXRlc3QgNi4wLgorCisgICAgSWYgeW91IHVzZSB0aGlz
IG9wdGlvbiwgY29uc2lkZXIgdXNpbmcgdGhlIG5ldyBgcHl0ZXN0LXJlcG9ydGxvZyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LXJlcG9ydGxvZz5gX18gcGx1Z2luIGluc3Rl
YWQuCisKKyAgICBTZWUgYHRoZSBkZXByZWNhdGlvbiBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjcmVzdWx0LWxvZy1yZXN1bHQtbG9nPmBf
XworICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKIC4uIF9gUHlQeS10ZXN0YDogaHR0cDov
L2J1aWxkYm90LnB5cHkub3JnL3N1bW1hcnkKIAogCiBTZW5kaW5nIHRlc3QgcmVwb3J0IHRvIG9u
bGluZSBwYXN0ZWJpbiBzZXJ2aWNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi0qKkNyZWF0aW5nIGEgVVJMIGZvciBlYWNoIHRlc3QgZmFp
bHVyZSoqOjoKKyoqQ3JlYXRpbmcgYSBVUkwgZm9yIGVhY2ggdGVzdCBmYWlsdXJlKio6CisKKy4u
IGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLS1wYXN0ZWJpbj1mYWlsZWQKIApAQCAt
NDUzLDEyICs3MjEsMzUgQEAgVGhpcyB3aWxsIHN1Ym1pdCB0ZXN0IHJ1biBpbmZvcm1hdGlvbiB0
byBhIHJlbW90ZSBQYXN0ZSBzZXJ2aWNlIGFuZAogcHJvdmlkZSBhIFVSTCBmb3IgZWFjaCBmYWls
dXJlLiAgWW91IG1heSBzZWxlY3QgdGVzdHMgYXMgdXN1YWwgb3IgYWRkCiBmb3IgZXhhbXBsZSBg
YC14YGAgaWYgeW91IG9ubHkgd2FudCB0byBzZW5kIG9uZSBwYXJ0aWN1bGFyIGZhaWx1cmUuCiAK
LSoqQ3JlYXRpbmcgYSBVUkwgZm9yIGEgd2hvbGUgdGVzdCBzZXNzaW9uIGxvZyoqOjoKKyoqQ3Jl
YXRpbmcgYSBVUkwgZm9yIGEgd2hvbGUgdGVzdCBzZXNzaW9uIGxvZyoqOgorCisuLiBjb2RlLWJs
b2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tcGFzdGViaW49YWxsCiAKIEN1cnJlbnRseSBvbmx5
IHBhc3RpbmcgdG8gdGhlIGh0dHA6Ly9icGFzdGUubmV0IHNlcnZpY2UgaXMgaW1wbGVtZW50ZWQu
CiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogNS4yCisKK0lmIGNyZWF0aW5nIHRoZSBVUkwgZmFpbHMg
Zm9yIGFueSByZWFzb24sIGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgaW5zdGVhZCBvZiBmYWlsaW5n
IHRoZQorZW50aXJlIHRlc3Qgc3VpdGUuCisKK0Vhcmx5IGxvYWRpbmcgcGx1Z2lucworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1lvdSBjYW4gZWFybHktbG9hZCBwbHVnaW5zIChpbnRlcm5hbCBh
bmQgZXh0ZXJuYWwpIGV4cGxpY2l0bHkgaW4gdGhlIGNvbW1hbmQtbGluZSB3aXRoIHRoZSBgYC1w
YGAgb3B0aW9uOjoKKworICAgIHB5dGVzdCAtcCBteXBsdWdpbm1vZHVsZQorCitUaGUgb3B0aW9u
IHJlY2VpdmVzIGEgYGBuYW1lYGAgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmU6CisKKyogQSBmdWxs
IG1vZHVsZSBkb3R0ZWQgbmFtZSwgZm9yIGV4YW1wbGUgYGBteXByb2plY3QucGx1Z2luc2BgLiBU
aGlzIGRvdHRlZCBuYW1lIG11c3QgYmUgaW1wb3J0YWJsZS4KKyogVGhlIGVudHJ5LXBvaW50IG5h
bWUgb2YgYSBwbHVnaW4uIFRoaXMgaXMgdGhlIG5hbWUgcGFzc2VkIHRvIGBgc2V0dXB0b29sc2Bg
IHdoZW4gdGhlIHBsdWdpbiBpcworICByZWdpc3RlcmVkLiBGb3IgZXhhbXBsZSB0byBlYXJseS1s
b2FkIHRoZSBgcHl0ZXN0LWNvdiA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1jb3Yv
PmBfXyBwbHVnaW4geW91IGNhbiB1c2U6OgorCisgICAgcHl0ZXN0IC1wIHB5dGVzdF9jb3YKKwor
CiBEaXNhYmxpbmcgcGx1Z2lucwogLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtNDY2LDcgKzc1Nyw5
IEBAIFRvIGRpc2FibGUgbG9hZGluZyBzcGVjaWZpYyBwbHVnaW5zIGF0IGludm9jYXRpb24gdGlt
ZSwgdXNlIHRoZSBgYC1wYGAgb3B0aW9uCiB0b2dldGhlciB3aXRoIHRoZSBwcmVmaXggYGBubzpg
YC4KIAogRXhhbXBsZTogdG8gZGlzYWJsZSBsb2FkaW5nIHRoZSBwbHVnaW4gYGBkb2N0ZXN0YGAs
IHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvcgotZXhlY3V0aW5nIGRvY3Rlc3QgdGVzdHMgZnJvbSB0
ZXh0IGZpbGVzLCBpbnZva2UgcHl0ZXN0IGxpa2UgdGhpczo6CitleGVjdXRpbmcgZG9jdGVzdCB0
ZXN0cyBmcm9tIHRleHQgZmlsZXMsIGludm9rZSBweXRlc3QgbGlrZSB0aGlzOgorCisuLiBjb2Rl
LWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC1wIG5vOmRvY3Rlc3QKIApAQCAtNDc1LDM0ICs3
NjgsNjUgQEAgZXhlY3V0aW5nIGRvY3Rlc3QgdGVzdHMgZnJvbSB0ZXh0IGZpbGVzLCBpbnZva2Ug
cHl0ZXN0IGxpa2UgdGhpczo6CiBDYWxsaW5nIHB5dGVzdCBmcm9tIFB5dGhvbiBjb2RlCiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIHZl
cnNpb25hZGRlZDo6IDIuMAogCi1Zb3UgY2FuIGludm9rZSBgYHB5dGVzdGBgIGZyb20gUHl0aG9u
IGNvZGUgZGlyZWN0bHk6OgorCitZb3UgY2FuIGludm9rZSBgYHB5dGVzdGBgIGZyb20gUHl0aG9u
IGNvZGUgZGlyZWN0bHk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIHB5dGVzdC5t
YWluKCkKIAogdGhpcyBhY3RzIGFzIGlmIHlvdSB3b3VsZCBjYWxsICJweXRlc3QiIGZyb20gdGhl
IGNvbW1hbmQgbGluZS4KIEl0IHdpbGwgbm90IHJhaXNlIGBgU3lzdGVtRXhpdGBgIGJ1dCByZXR1
cm4gdGhlIGV4aXRjb2RlIGluc3RlYWQuCi1Zb3UgY2FuIHBhc3MgaW4gb3B0aW9ucyBhbmQgYXJn
dW1lbnRzOjoKK1lvdSBjYW4gcGFzcyBpbiBvcHRpb25zIGFuZCBhcmd1bWVudHM6CiAKLSAgICBw
eXRlc3QubWFpbihbJy14JywgJ215dGVzdGRpciddKQorLi4gY29kZS1ibG9jazo6IHB5dGhvbgor
CisgICAgcHl0ZXN0Lm1haW4oWyIteCIsICJteXRlc3RkaXIiXSkKIAotWW91IGNhbiBzcGVjaWZ5
IGFkZGl0aW9uYWwgcGx1Z2lucyB0byBgYHB5dGVzdC5tYWluYGA6OgorWW91IGNhbiBzcGVjaWZ5
IGFkZGl0aW9uYWwgcGx1Z2lucyB0byBgYHB5dGVzdC5tYWluYGA6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBteWludm9rZS5weQogICAgIGltcG9ydCBweXRl
c3QKLSAgICBjbGFzcyBNeVBsdWdpbihvYmplY3QpOgorCisKKyAgICBjbGFzcyBNeVBsdWdpbjoK
ICAgICAgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYpOgogICAgICAgICAgICAgcHJp
bnQoIioqKiB0ZXN0IHJ1biByZXBvcnRpbmcgZmluaXNoaW5nIikKIAorCiAgICAgcHl0ZXN0Lm1h
aW4oWyItcXEiXSwgcGx1Z2lucz1bTXlQbHVnaW4oKV0pCiAKIFJ1bm5pbmcgaXQgd2lsbCBzaG93
IHRoYXQgYGBNeVBsdWdpbmBgIHdhcyBhZGRlZCBhbmQgaXRzCi1ob29rIHdhcyBpbnZva2VkOjoK
K2hvb2sgd2FzIGludm9rZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0
aG9uIG15aW52b2tlLnB5Ci0gICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdKioqIHRlc3QgcnVuIHJlcG9y
dGluZyBmaW5pc2hpbmcKKyAgICAuRkVzeFguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0qKiogdGVzdCBydW4gcmVwb3J0
aW5nIGZpbmlzaGluZworCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBF
UlJPUlMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIF9fX19fX19fX19f
X19fX19fX19fX19fIEVSUk9SIGF0IHNldHVwIG9mIHRlc3RfZXJyb3IgX19fX19fX19fX19fX19f
X19fX19fX18KIAorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGVycm9yX2Zp
eHR1cmUoKToKKyAgICA+ICAgICAgIGFzc2VydCAwCisgICAgRSAgICAgICBhc3NlcnQgMAorCisg
ICAgdGVzdF9leGFtcGxlLnB5OjY6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfZmFpbCBfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworICAgICAgICBkZWYgdGVzdF9mYWlsKCk6
CisgICAgPiAgICAgICBhc3NlcnQgMAorICAgIEUgICAgICAgYXNzZXJ0IDAKKworICAgIHRlc3Rf
ZXhhbXBsZS5weToxNDogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09Cisg
ICAgRkFJTEVEIHRlc3RfZXhhbXBsZS5weTo6dGVzdF9mYWlsIC0gYXNzZXJ0IDAKKyAgICBFUlJP
UiB0ZXN0X2V4YW1wbGUucHk6OnRlc3RfZXJyb3IgLSBhc3NlcnQgMAogCiAuLiBub3RlOjoKIApA
QCAtNTEzLDUgKzgzNyw0IEBAIGhvb2sgd2FzIGludm9rZWQ6OgogICAgIG11bHRpcGxlIGNhbGxz
IHRvIGBgcHl0ZXN0Lm1haW4oKWBgIGZyb20gdGhlIHNhbWUgcHJvY2VzcyAoaW4gb3JkZXIgdG8g
cmUtcnVuCiAgICAgdGVzdHMsIGZvciBleGFtcGxlKSBpcyBub3QgcmVjb21tZW5kZWQuCiAKLQot
Li4gaW5jbHVkZTo6IGxpbmtzLmluYworLi4gX2plbmtpbnM6IGh0dHA6Ly9qZW5raW5zLWNpLm9y
Zy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTdmMWY1N2E0ODdmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fkb3B0LnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hc3NlcnQucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2JhY2t3
YXJkcy1jb21wYXRpYmlsaXR5LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9iYXNoLWNvbXBsZXRp
b24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2J1aWx0aW4ucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2NhY2hlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYXB0dXJlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9jaGFuZ2Vsb2cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbmYucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY29udGFj
dC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY29udGVudHMucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2NvbnRyaWJ1dGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY3VzdG9taXplLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9kZXZlbG9wbWVudF9ndWlkZS5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vZG9jdGVzdC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhpc3Rpbmd0ZXN0c3VpdGUu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ZhcS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZml4
dHVyZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZnVuY2FyZ19jb21wYXJlLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9mdW5jYXJncy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZ2V0dGluZy1z
dGFydGVkLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9nb29kcHJhY3RpY2VzLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9oaXN0b3JpY2FsLW5vdGVzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9p
bmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbGljZW5zZS5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vbGlua3MuaW5jCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2xvZ2dpbmcucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL21hcmsucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21vbmtleXBhdGNoLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9uYW1pbmcyMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
bm9zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcGFyYW1ldHJpemUucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3BsdWdpbnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb2plY3RzLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9weXRlc3QuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3B5dGhv
bnBhdGgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3JlY3dhcm4ucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3JlZmVyZW5jZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcmVxdWlyZW1lbnRzLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9za2lwcGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGFsa3MucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RtcGRpci5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vdW5pdHRlc3QucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VzYWdlLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi93YXJuaW5ncy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vd3JpdGluZ19w
bHVnaW5zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi94dW5pdF9zZXR1cC5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4veWllbGRmaXh0dXJlLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3dhcm5pbmdzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi93YXJuaW5ncy5yc3QKaW5kZXgg
ZGY5M2EwMmI1NDBhLi43MjMyYjY3NmQyNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi93YXJuaW5ncy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3dhcm5pbmdzLnJzdApAQCAt
Myw0MyArMyw1MCBAQAogV2FybmluZ3MgQ2FwdHVyZQogPT09PT09PT09PT09PT09PQogCi0uLiB2
ZXJzaW9uYWRkZWQ6OiAzLjEKKwogCiBTdGFydGluZyBmcm9tIHZlcnNpb24gYGAzLjFgYCwgcHl0
ZXN0IG5vdyBhdXRvbWF0aWNhbGx5IGNhdGNoZXMgd2FybmluZ3MgZHVyaW5nIHRlc3QgZXhlY3V0
aW9uCi1hbmQgZGlzcGxheXMgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSBzZXNzaW9uOjoKK2FuZCBk
aXNwbGF5cyB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIHNlc3Npb246CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X3Nob3dfd2FybmluZ3MucHkKICAgICBp
bXBvcnQgd2FybmluZ3MKIAorCiAgICAgZGVmIGFwaV92MSgpOgogICAgICAgICB3YXJuaW5ncy53
YXJuKFVzZXJXYXJuaW5nKCJhcGkgdjEsIHNob3VsZCB1c2UgZnVuY3Rpb25zIGZyb20gdjIiKSkK
ICAgICAgICAgcmV0dXJuIDEKIAorCiAgICAgZGVmIHRlc3Rfb25lKCk6CiAgICAgICAgIGFzc2Vy
dCBhcGlfdjEoKSA9PSAxCiAKLVJ1bm5pbmcgcHl0ZXN0IG5vdyBwcm9kdWNlcyB0aGlzIG91dHB1
dDo6CitSdW5uaW5nIHB5dGVzdCBub3cgcHJvZHVjZXMgdGhpcyBvdXRwdXQ6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3Rfc2hvd193YXJuaW5ncy5weQogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55
LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZ
VEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIK
ICAgICBjb2xsZWN0ZWQgMSBpdGVtCiAKICAgICB0ZXN0X3Nob3dfd2FybmluZ3MucHkgLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAogICAgID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09IHdhcm5pbmdzIHN1bW1hcnkgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KICAgICB0ZXN0X3Nob3dfd2FybmluZ3MucHk6OnRlc3Rfb25lCi0g
ICAgICAkUkVHRU5ET0NfVE1QRElSL3Rlc3Rfc2hvd193YXJuaW5ncy5weTo0OiBVc2VyV2Fybmlu
ZzogYXBpIHYxLCBzaG91bGQgdXNlIGZ1bmN0aW9ucyBmcm9tIHYyCisgICAgICAkUkVHRU5ET0Nf
VE1QRElSL3Rlc3Rfc2hvd193YXJuaW5ncy5weTo1OiBVc2VyV2FybmluZzogYXBpIHYxLCBzaG91
bGQgdXNlIGZ1bmN0aW9ucyBmcm9tIHYyCiAgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5p
bmcoImFwaSB2MSwgc2hvdWxkIHVzZSBmdW5jdGlvbnMgZnJvbSB2MiIpKQogCi0gICAgLS0gRG9j
czogaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC93YXJuaW5ncy5odG1sCi0gICAgPT09
PT09PT09PT09PT09PT09PSAxIHBhc3NlZCwgMSB3YXJuaW5ncyBpbiAwLjEyIHNlY29uZHMgPT09
PT09PT09PT09PT09PT09PQotCi1QeXRlc3QgYnkgZGVmYXVsdCBjYXRjaGVzIGFsbCB3YXJuaW5n
cyBleGNlcHQgZm9yIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgYW5kIGBgUGVuZGluZ0RlcHJlY2F0
aW9uV2FybmluZ2BgLgorICAgIC0tIERvY3M6IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0
YWJsZS93YXJuaW5ncy5odG1sCisgICAgPT09PT09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQs
IDEgd2FybmluZyBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PQogCiBUaGUgYGAtV2Bg
IGZsYWcgY2FuIGJlIHBhc3NlZCB0byBjb250cm9sIHdoaWNoIHdhcm5pbmdzIHdpbGwgYmUgZGlz
cGxheWVkIG9yIGV2ZW4gdHVybgotdGhlbSBpbnRvIGVycm9yczo6Cit0aGVtIGludG8gZXJyb3Jz
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSB0ZXN0X3Nob3df
d2FybmluZ3MucHkgLVcgZXJyb3I6OlVzZXJXYXJuaW5nCiAgICAgRiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVd
CkBAIC00OSwyNiArNTYsNDIgQEAgdGhlbSBpbnRvIGVycm9yczo6CiAgICAgICAgIGRlZiB0ZXN0
X29uZSgpOgogICAgID4gICAgICAgYXNzZXJ0IGFwaV92MSgpID09IDEKIAotICAgIHRlc3Rfc2hv
d193YXJuaW5ncy5weTo4OgorICAgIHRlc3Rfc2hvd193YXJuaW5ncy5weToxMDoKICAgICBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8KIAogICAgICAgICBkZWYgYXBpX3YxKCk6CiAgICAgPiAgICAgICB3YXJu
aW5ncy53YXJuKFVzZXJXYXJuaW5nKCJhcGkgdjEsIHNob3VsZCB1c2UgZnVuY3Rpb25zIGZyb20g
djIiKSkKICAgICBFICAgICAgIFVzZXJXYXJuaW5nOiBhcGkgdjEsIHNob3VsZCB1c2UgZnVuY3Rp
b25zIGZyb20gdjIKIAotICAgIHRlc3Rfc2hvd193YXJuaW5ncy5weTo0OiBVc2VyV2FybmluZwot
ICAgIDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcworICAgIHRlc3Rfc2hvd193YXJuaW5ncy5weTo1
OiBVc2VyV2FybmluZworICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBz
dW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9z
aG93X3dhcm5pbmdzLnB5Ojp0ZXN0X29uZSAtIFVzZXJXYXJuaW5nOiBhcGkgdjEsIHNob3VsZCB1
c2UgLi4uCisgICAgMSBmYWlsZWQgaW4gMC4xMnMKIAotVGhlIHNhbWUgb3B0aW9uIGNhbiBiZSBz
ZXQgaW4gdGhlIGBgcHl0ZXN0LmluaWBgIGZpbGUgdXNpbmcgdGhlIGBgZmlsdGVyd2FybmluZ3Ng
YCBpbmkgb3B0aW9uLgotRm9yIGV4YW1wbGUsIHRoZSBjb25maWd1cmF0aW9uIGJlbG93IHdpbGwg
aWdub3JlIGFsbCB1c2VyIHdhcm5pbmdzLCBidXQgd2lsbCB0cmFuc2Zvcm0KK1RoZSBzYW1lIG9w
dGlvbiBjYW4gYmUgc2V0IGluIHRoZSBgYHB5dGVzdC5pbmlgYCBvciBgYHB5cHJvamVjdC50b21s
YGAgZmlsZSB1c2luZyB0aGUKK2BgZmlsdGVyd2FybmluZ3NgYCBpbmkgb3B0aW9uLiBGb3IgZXhh
bXBsZSwgdGhlIGNvbmZpZ3VyYXRpb24gYmVsb3cgd2lsbCBpZ25vcmUgYWxsCit1c2VyIHdhcm5p
bmdzIGFuZCBzcGVjaWZpYyBkZXByZWNhdGlvbiB3YXJuaW5ncyBtYXRjaGluZyBhIHJlZ2V4LCBi
dXQgd2lsbCB0cmFuc2Zvcm0KIGFsbCBvdGhlciB3YXJuaW5ncyBpbnRvIGVycm9ycy4KIAogLi4g
Y29kZS1ibG9jazo6IGluaQogCisgICAgIyBweXRlc3QuaW5pCiAgICAgW3B5dGVzdF0KICAgICBm
aWx0ZXJ3YXJuaW5ncyA9CiAgICAgICAgIGVycm9yCiAgICAgICAgIGlnbm9yZTo6VXNlcldhcm5p
bmcKKyAgICAgICAgaWdub3JlOmZ1bmN0aW9uIGhhbVwoXCkgaXMgZGVwcmVjYXRlZDpEZXByZWNh
dGlvbldhcm5pbmcKKworLi4gY29kZS1ibG9jazo6IHRvbWwKKworICAgICMgcHlwcm9qZWN0LnRv
bWwKKyAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgZmlsdGVyd2FybmluZ3MgPSBb
CisgICAgICAgICJlcnJvciIsCisgICAgICAgICJpZ25vcmU6OlVzZXJXYXJuaW5nIiwKKyAgICAg
ICAgIyBub3RlIHRoZSB1c2Ugb2Ygc2luZ2xlIHF1b3RlIGJlbG93IHRvIGRlbm90ZSAicmF3IiBz
dHJpbmdzIGluIFRPTUwKKyAgICAgICAgJ2lnbm9yZTpmdW5jdGlvbiBoYW1cKFwpIGlzIGRlcHJl
Y2F0ZWQ6RGVwcmVjYXRpb25XYXJuaW5nJywKKyAgICBdCiAKIAogV2hlbiBhIHdhcm5pbmcgbWF0
Y2hlcyBtb3JlIHRoYW4gb25lIG9wdGlvbiBpbiB0aGUgbGlzdCwgdGhlIGFjdGlvbiBmb3IgdGhl
IGxhc3QgbWF0Y2hpbmcgb3B0aW9uCkBAIC03OCwxMyArMTAxLDEyIEBAIEJvdGggYGAtV2BgIGNv
bW1hbmQtbGluZSBvcHRpb24gYW5kIGBgZmlsdGVyd2FybmluZ3NgYCBpbmkgb3B0aW9uIGFyZSBi
YXNlZCBvbiBQCiBgLVcgb3B0aW9uYF8gYW5kIGB3YXJuaW5ncy5zaW1wbGVmaWx0ZXJgXywgc28g
cGxlYXNlIHJlZmVyIHRvIHRob3NlIHNlY3Rpb25zIGluIHRoZSBQeXRob24KIGRvY3VtZW50YXRp
b24gZm9yIG90aGVyIGV4YW1wbGVzIGFuZCBhZHZhbmNlZCB1c2FnZS4KIAotCiAuLiBfYGZpbHRl
cndhcm5pbmdzYDoKIAogYGBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3NgYAogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKwogCiBZb3Ug
Y2FuIHVzZSB0aGUgYGBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3NgYCB0byBhZGQgd2Fybmlu
ZyBmaWx0ZXJzIHRvIHNwZWNpZmljIHRlc3QgaXRlbXMsCiBhbGxvd2luZyB5b3UgdG8gaGF2ZSBm
aW5lciBjb250cm9sIG9mIHdoaWNoIHdhcm5pbmdzIHNob3VsZCBiZSBjYXB0dXJlZCBhdCB0ZXN0
LCBjbGFzcyBvcgpAQCAtMTA5LDcgKzEzMSw3IEBAIEZpbHRlcnMgYXBwbGllZCB1c2luZyBhIG1h
cmsgdGFrZSBwcmVjZWRlbmNlIG92ZXIgZmlsdGVycyBwYXNzZWQgb24gdGhlIGNvbW1hbmQKIGJ5
IHRoZSBgYGZpbHRlcndhcm5pbmdzYGAgaW5pIG9wdGlvbi4KIAogWW91IG1heSBhcHBseSBhIGZp
bHRlciB0byBhbGwgdGVzdHMgb2YgYSBjbGFzcyBieSB1c2luZyB0aGUgYGBmaWx0ZXJ3YXJuaW5n
c2BgIG1hcmsgYXMgYSBjbGFzcwotZGVjb3JhdG9yIG9yIHRvIGFsbCB0ZXN0cyBpbiBhIG1vZHVs
ZSBieSBzZXR0aW5nIHRoZSBgYHB5dGVzdG1hcmtgYCB2YXJpYWJsZToKK2RlY29yYXRvciBvciB0
byBhbGwgdGVzdHMgaW4gYSBtb2R1bGUgYnkgc2V0dGluZyB0aGUgOmdsb2JhbHZhcjpgcHl0ZXN0
bWFya2AgdmFyaWFibGU6CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIApAQCAtMTE3LDQ0ICsx
MzksMTE4IEBAIGRlY29yYXRvciBvciB0byBhbGwgdGVzdHMgaW4gYSBtb2R1bGUgYnkgc2V0dGlu
ZyB0aGUgYGBweXRlc3RtYXJrYGAgdmFyaWFibGU6CiAgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5t
YXJrLmZpbHRlcndhcm5pbmdzKCJlcnJvciIpCiAKIAotLi4gbm90ZTo6CiAKLSAgICBFeGNlcHQg
Zm9yIHRoZXNlIGZlYXR1cmVzLCBweXRlc3QgZG9lcyBub3QgY2hhbmdlIHRoZSBweXRob24gd2Fy
bmluZyBmaWx0ZXI7IGl0IG9ubHkgY2FwdHVyZXMKLSAgICBhbmQgZGlzcGxheXMgdGhlIHdhcm5p
bmdzIHdoaWNoIGFyZSBpc3N1ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50bHkgY29uZmln
dXJlZCBmaWx0ZXIsCi0gICAgaW5jbHVkaW5nIGNoYW5nZXMgdG8gdGhlIGZpbHRlciBtYWRlIGJ5
IHRlc3QgZnVuY3Rpb25zIG9yIGJ5IHRoZSBzeXN0ZW0gdW5kZXIgdGVzdC4KKypDcmVkaXRzIGdv
IHRvIEZsb3JpYW4gU2NodWx6ZSBmb3IgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiB0
aGUqIGBweXRlc3Qtd2FybmluZ3NgXworKnBsdWdpbi4qCisKKy4uIF9gLVcgb3B0aW9uYDogaHR0
cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy91c2luZy9jbWRsaW5lLmh0bWwjY21kb3B0aW9uLXcKKy4u
IF93YXJuaW5ncy5zaW1wbGVmaWx0ZXI6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFy
eS93YXJuaW5ncy5odG1sI3dhcm5pbmdzLnNpbXBsZWZpbHRlcgorLi4gX2BweXRlc3Qtd2Fybmlu
Z3NgOiBodHRwczovL2dpdGh1Yi5jb20vZnNjaHVsemUvcHl0ZXN0LXdhcm5pbmdzCiAKLS4uIG5v
dGU6OgorRGlzYWJsaW5nIHdhcm5pbmdzIHN1bW1hcnkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK0FsdGhvdWdoIG5vdCByZWNvbW1lbmRlZCwgeW91IGNhbiB1c2UgdGhlIGBgLS1kaXNh
YmxlLXdhcm5pbmdzYGAgY29tbWFuZC1saW5lIG9wdGlvbiB0byBzdXBwcmVzcyB0aGUKK3dhcm5p
bmcgc3VtbWFyeSBlbnRpcmVseSBmcm9tIHRoZSB0ZXN0IHJ1biBvdXRwdXQuCisKK0Rpc2FibGlu
ZyB3YXJuaW5nIGNhcHR1cmUgZW50aXJlbHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotICAgIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgYW5kIGBgUGVuZGluZ0RlcHJlY2F0
aW9uV2FybmluZ2BgIGFyZSBoaWRkZW4gYnkgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSAgICBieSBk
ZWZhdWx0IHNvIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgY29uZmlndXJlIHRoZW0gdG8gYmUgZGlz
cGxheWVkIGluIHlvdXIgYGBweXRlc3QuaW5pYGA6CitUaGlzIHBsdWdpbiBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQgYnV0IGNhbiBiZSBkaXNhYmxlZCBlbnRpcmVseSBpbiB5b3VyIGBgcHl0ZXN0Lmlu
aWBgIGZpbGUgd2l0aDoKIAogICAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKIAogICAgICAgICBbcHl0
ZXN0XQotICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9Ci0gICAgICAgICAgICBvbmNlOjpEZXByZWNh
dGlvbldhcm5pbmcKLSAgICAgICAgICAgIG9uY2U6OlBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcK
KyAgICAgICAgYWRkb3B0cyA9IC1wIG5vOndhcm5pbmdzCiAKK09yIHBhc3NpbmcgYGAtcCBubzp3
YXJuaW5nc2BgIGluIHRoZSBjb21tYW5kLWxpbmUuIFRoaXMgbWlnaHQgYmUgdXNlZnVsIGlmIHlv
dXIgdGVzdCBzdWl0ZXMgaGFuZGxlcyB3YXJuaW5ncwordXNpbmcgYW4gZXh0ZXJuYWwgc3lzdGVt
LgogCi0qQ3JlZGl0cyBnbyB0byBGbG9yaWFuIFNjaHVsemUgZm9yIHRoZSByZWZlcmVuY2UgaW1w
bGVtZW50YXRpb24gaW4gdGhlKiBgcHl0ZXN0LXdhcm5pbmdzYF8KLSpwbHVnaW4uKgogCi0uLiBf
YC1XIG9wdGlvbmA6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvdXNpbmcvY21kbGluZS5odG1s
P2hpZ2hsaWdodD0jY21kb3B0aW9uLVcKLS4uIF93YXJuaW5ncy5zaW1wbGVmaWx0ZXI6IGh0dHBz
Oi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS93YXJuaW5ncy5odG1sI3dhcm5pbmdzLnNpbXBs
ZWZpbHRlcgotLi4gX2BweXRlc3Qtd2FybmluZ3NgOiBodHRwczovL2dpdGh1Yi5jb20vZnNjaHVs
emUvcHl0ZXN0LXdhcm5pbmdzCisuLiBfYGRlcHJlY2F0aW9uLXdhcm5pbmdzYDoKIAorRGVwcmVj
YXRpb25XYXJuaW5nIGFuZCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRGlzYWJsaW5nIHdhcm5pbmcg
Y2FwdHVyZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGlzIGZlYXR1cmUgaXMgZW5h
YmxlZCBieSBkZWZhdWx0IGJ1dCBjYW4gYmUgZGlzYWJsZWQgZW50aXJlbHkgaW4geW91ciBgYHB5
dGVzdC5pbmlgYCBmaWxlIHdpdGg6CiAKLSAgICAuLiBjb2RlLWJsb2NrOjogaW5pCiAKLSAgICAg
ICAgW3B5dGVzdF0KLSAgICAgICAgYWRkb3B0cyA9IC1wIG5vOndhcm5pbmdzCitCeSBkZWZhdWx0
IHB5dGVzdCB3aWxsIGRpc3BsYXkgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBhbmQgYGBQZW5kaW5n
RGVwcmVjYXRpb25XYXJuaW5nYGAgd2FybmluZ3MgZnJvbQordXNlciBjb2RlIGFuZCB0aGlyZC1w
YXJ0eSBsaWJyYXJpZXMsIGFzIHJlY29tbWVuZGVkIGJ5IGBQRVAtMDU2NSA8aHR0cHM6Ly93d3cu
cHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDU2NT5gXy4KK1RoaXMgaGVscHMgdXNlcnMga2VlcCB0
aGVpciBjb2RlIG1vZGVybiBhbmQgYXZvaWQgYnJlYWthZ2VzIHdoZW4gZGVwcmVjYXRlZCB3YXJu
aW5ncyBhcmUgZWZmZWN0aXZlbHkgcmVtb3ZlZC4KKworU29tZXRpbWVzIGl0IGlzIHVzZWZ1bCB0
byBoaWRlIHNvbWUgc3BlY2lmaWMgZGVwcmVjYXRpb24gd2FybmluZ3MgdGhhdCBoYXBwZW4gaW4g
Y29kZSB0aGF0IHlvdSBoYXZlIG5vIGNvbnRyb2wgb3ZlcgorKHN1Y2ggYXMgdGhpcmQtcGFydHkg
bGlicmFyaWVzKSwgaW4gd2hpY2ggY2FzZSB5b3UgbWlnaHQgdXNlIHRoZSB3YXJuaW5nIGZpbHRl
cnMgb3B0aW9ucyAoaW5pIG9yIG1hcmtzKSB0byBpZ25vcmUKK3Rob3NlIHdhcm5pbmdzLgorCitG
b3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgW3B5dGVzdF0KKyAgICBm
aWx0ZXJ3YXJuaW5ncyA9CisgICAgICAgIGlnbm9yZTouKlUuKm1vZGUgaXMgZGVwcmVjYXRlZDpE
ZXByZWNhdGlvbldhcm5pbmcKKworCitUaGlzIHdpbGwgaWdub3JlIGFsbCB3YXJuaW5ncyBvZiB0
eXBlIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgd2hlcmUgdGhlIHN0YXJ0IG9mIHRoZSBtZXNzYWdl
IG1hdGNoZXMKK3RoZSByZWd1bGFyIGV4cHJlc3Npb24gYGAiLipVLiptb2RlIGlzIGRlcHJlY2F0
ZWQiYGAuCisKKy4uIG5vdGU6OgorCisgICAgSWYgd2FybmluZ3MgYXJlIGNvbmZpZ3VyZWQgYXQg
dGhlIGludGVycHJldGVyIGxldmVsLCB1c2luZworICAgIHRoZSBgUFlUSE9OV0FSTklOR1MgPGh0
dHBzOi8vZG9jcy5weXRob24ub3JnLzMvdXNpbmcvY21kbGluZS5odG1sI2VudnZhci1QWVRIT05X
QVJOSU5HUz5gXyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKKyAgICBgYC1XYGAgY29tbWFu
ZC1saW5lIG9wdGlvbiwgcHl0ZXN0IHdpbGwgbm90IGNvbmZpZ3VyZSBhbnkgZmlsdGVycyBieSBk
ZWZhdWx0LgorCisgICAgQWxzbyBweXRlc3QgZG9lc24ndCBmb2xsb3cgYGBQRVAtMDUwNmBgIHN1
Z2dlc3Rpb24gb2YgcmVzZXR0aW5nIGFsbCB3YXJuaW5nIGZpbHRlcnMgYmVjYXVzZQorICAgIGl0
IG1pZ2h0IGJyZWFrIHRlc3Qgc3VpdGVzIHRoYXQgY29uZmlndXJlIHdhcm5pbmcgZmlsdGVycyB0
aGVtc2VsdmVzCisgICAgYnkgY2FsbGluZyBgYHdhcm5pbmdzLnNpbXBsZWZpbHRlcmBgIChzZWUg
aXNzdWUgYCMyNDMwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI0MzA+YF8KKyAgICBmb3IgYW4gZXhhbXBsZSBvZiB0aGF0KS4KIAotT3IgcGFzc2luZyBgYC1w
IG5vOndhcm5pbmdzYGAgaW4gdGhlIGNvbW1hbmQtbGluZS4KKworLi4gX2BlbnN1cmluZyBhIGZ1
bmN0aW9uIHRyaWdnZXJzIGEgZGVwcmVjYXRpb24gd2FybmluZ2A6CisKKy4uIF9lbnN1cmluZ19m
dW5jdGlvbl90cmlnZ2VyczoKKworRW5zdXJpbmcgY29kZSB0cmlnZ2VycyBhIGRlcHJlY2F0aW9u
IHdhcm5pbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K1lvdSBjYW4gYWxzbyB1c2UgOmZ1bmM6YHB5dGVzdC5kZXByZWNhdGVkX2NhbGxgIGZvciBjaGVj
a2luZwordGhhdCBhIGNlcnRhaW4gZnVuY3Rpb24gY2FsbCB0cmlnZ2VycyBhIGBgRGVwcmVjYXRp
b25XYXJuaW5nYGAgb3IKK2BgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2BgOgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCisKKyAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgIGRlZiB0ZXN0X215
ZnVuY3Rpb25fZGVwcmVjYXRlZCgpOgorICAgICAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2Nh
bGwoKToKKyAgICAgICAgICAgIG15ZnVuY3Rpb24oMTcpCisKK1RoaXMgdGVzdCB3aWxsIGZhaWwg
aWYgYGBteWZ1bmN0aW9uYGAgZG9lcyBub3QgaXNzdWUgYSBkZXByZWNhdGlvbiB3YXJuaW5nCit3
aGVuIGNhbGxlZCB3aXRoIGEgYGAxN2BgIGFyZ3VtZW50LgorCitCeSBkZWZhdWx0LCBgYERlcHJl
Y2F0aW9uV2FybmluZ2BgIGFuZCBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYCB3aWxsIG5v
dCBiZQorY2F1Z2h0IHdoZW4gdXNpbmcgOmZ1bmM6YHB5dGVzdC53YXJuc2Agb3IgOnJlZjpgcmVj
d2FybiA8cmVjd2Fybj5gIGJlY2F1c2UKK3RoZSBkZWZhdWx0IFB5dGhvbiB3YXJuaW5ncyBmaWx0
ZXJzIGhpZGUKK3RoZW0uIElmIHlvdSB3aXNoIHRvIHJlY29yZCB0aGVtIGluIHlvdXIgb3duIGNv
ZGUsIHVzZQorYGB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpYGA6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KKworICAgIGltcG9ydCB3YXJuaW5ncworICAgIGltcG9ydCBweXRlc3QK
KworCisgICAgZGVmIHRlc3RfZGVwcmVjYXRpb24ocmVjd2Fybik6CisgICAgICAgIHdhcm5pbmdz
LnNpbXBsZWZpbHRlcigiYWx3YXlzIikKKyAgICAgICAgbXlmdW5jdGlvbigxNykKKyAgICAgICAg
YXNzZXJ0IGxlbihyZWN3YXJuKSA9PSAxCisgICAgICAgIGFzc2VydCByZWN3YXJuLnBvcChEZXBy
ZWNhdGlvbldhcm5pbmcpCisKKworVGhlIDpyZWY6YHJlY3dhcm4gPHJlY3dhcm4+YCBmaXh0dXJl
IGF1dG9tYXRpY2FsbHkgZW5zdXJlcyB0byByZXNldCB0aGUgd2FybmluZ3MKK2ZpbHRlciBhdCB0
aGUgZW5kIG9mIHRoZSB0ZXN0LCBzbyBubyBnbG9iYWwgc3RhdGUgaXMgbGVha2VkLgogCiAuLiBf
YGFzc2VydGluZyB3YXJuaW5nc2A6CiAKQEAgLTE2NSwxNiArMjYxLDE5IEBAIE9yIHBhc3Npbmcg
YGAtcCBubzp3YXJuaW5nc2BgIGluIHRoZSBjb21tYW5kLWxpbmUuCiAuLiBfd2FybnM6CiAKIEFz
c2VydGluZyB3YXJuaW5ncyB3aXRoIHRoZSB3YXJucyBmdW5jdGlvbgotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuOAogCiBZb3UgY2Fu
IGNoZWNrIHRoYXQgY29kZSByYWlzZXMgYSBwYXJ0aWN1bGFyIHdhcm5pbmcgdXNpbmcgYGBweXRl
c3Qud2FybnNgYCwKLXdoaWNoIHdvcmtzIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gOnJlZjpgcmFp
c2VzIDxhc3NlcnRyYWlzZXM+YDo6Cit3aGljaCB3b3JrcyBpbiBhIHNpbWlsYXIgbWFubmVyIHRv
IDpyZWY6YHJhaXNlcyA8YXNzZXJ0cmFpc2VzPmA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
IAogICAgIGltcG9ydCB3YXJuaW5ncwogICAgIGltcG9ydCBweXRlc3QKIAorCiAgICAgZGVmIHRl
c3Rfd2FybmluZygpOgogICAgICAgICB3aXRoIHB5dGVzdC53YXJucyhVc2VyV2FybmluZyk6CiAg
ICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJteSB3YXJuaW5nIiwgVXNlcldhcm5pbmcpCkBAIC0x
OTQsMTQgKzI5MywxOCBAQCBhcmd1bWVudCBgYG1hdGNoYGAgdG8gYXNzZXJ0IHRoYXQgdGhlIGV4
Y2VwdGlvbiBtYXRjaGVzIGEgdGV4dCBvciByZWdleDo6CiAgICAgICAuLi4KICAgICBGYWlsZWQ6
IERJRCBOT1QgV0FSTi4gTm8gd2FybmluZ3Mgb2YgdHlwZSAuLi5Vc2VyV2FybmluZy4uLiB3YXMg
ZW1pdHRlZC4uLgogCi1Zb3UgY2FuIGFsc28gY2FsbCBgYHB5dGVzdC53YXJuc2BgIG9uIGEgZnVu
Y3Rpb24gb3IgY29kZSBzdHJpbmc6OgorWW91IGNhbiBhbHNvIGNhbGwgYGBweXRlc3Qud2FybnNg
YCBvbiBhIGZ1bmN0aW9uIG9yIGNvZGUgc3RyaW5nOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICBweXRlc3Qud2FybnMoZXhwZWN0ZWRfd2FybmluZywgZnVuYywgKmFyZ3MsICoqa3dh
cmdzKQogICAgIHB5dGVzdC53YXJucyhleHBlY3RlZF93YXJuaW5nLCAiZnVuYygqYXJncywgKipr
d2FyZ3MpIikKIAogVGhlIGZ1bmN0aW9uIGFsc28gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHJhaXNl
ZCB3YXJuaW5ncyAoYXMKIGBgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgYCBvYmplY3RzKSwgd2hp
Y2ggeW91IGNhbiBxdWVyeSBmb3IKLWFkZGl0aW9uYWwgaW5mb3JtYXRpb246OgorYWRkaXRpb25h
bCBpbmZvcm1hdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgd2l0aCBweXRl
c3Qud2FybnMoUnVudGltZVdhcm5pbmcpIGFzIHJlY29yZDoKICAgICAgICAgd2FybmluZ3Mud2Fy
bigiYW5vdGhlciB3YXJuaW5nIiwgUnVudGltZVdhcm5pbmcpCkBAIC0yMjMsMTMgKzMyNiwxNSBA
QCBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGV4YW1pbmUgcmFpc2VkIHdhcm5pbmdzIGluIGRldGFp
bCB1c2luZyB0aGUKIC4uIF9yZWN3YXJuOgogCiBSZWNvcmRpbmcgd2FybmluZ3MKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFlvdSBjYW4gcmVjb3JkIHJh
aXNlZCB3YXJuaW5ncyBlaXRoZXIgdXNpbmcgYGBweXRlc3Qud2FybnNgYCBvciB3aXRoCiB0aGUg
YGByZWN3YXJuYGAgZml4dHVyZS4KIAogVG8gcmVjb3JkIHdpdGggYGBweXRlc3Qud2FybnNgYCB3
aXRob3V0IGFzc2VydGluZyBhbnl0aGluZyBhYm91dCB0aGUgd2FybmluZ3MsCi1wYXNzIGBgTm9u
ZWBgIGFzIHRoZSBleHBlY3RlZCB3YXJuaW5nIHR5cGU6OgorcGFzcyBgYE5vbmVgYCBhcyB0aGUg
ZXhwZWN0ZWQgd2FybmluZyB0eXBlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICB3
aXRoIHB5dGVzdC53YXJucyhOb25lKSBhcyByZWNvcmQ6CiAgICAgICAgIHdhcm5pbmdzLndhcm4o
InVzZXIiLCBVc2VyV2FybmluZykKQEAgLTIzOSwxMCArMzQ0LDEzIEBAIHBhc3MgYGBOb25lYGAg
YXMgdGhlIGV4cGVjdGVkIHdhcm5pbmcgdHlwZTo6CiAgICAgYXNzZXJ0IHN0cihyZWNvcmRbMF0u
bWVzc2FnZSkgPT0gInVzZXIiCiAgICAgYXNzZXJ0IHN0cihyZWNvcmRbMV0ubWVzc2FnZSkgPT0g
InJ1bnRpbWUiCiAKLVRoZSBgYHJlY3dhcm5gYCBmaXh0dXJlIHdpbGwgcmVjb3JkIHdhcm5pbmdz
IGZvciB0aGUgd2hvbGUgZnVuY3Rpb246OgorVGhlIGBgcmVjd2FybmBgIGZpeHR1cmUgd2lsbCBy
ZWNvcmQgd2FybmluZ3MgZm9yIHRoZSB3aG9sZSBmdW5jdGlvbjoKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgogCiAgICAgaW1wb3J0IHdhcm5pbmdzCiAKKwogICAgIGRlZiB0ZXN0X2hlbGxvKHJl
Y3dhcm4pOgogICAgICAgICB3YXJuaW5ncy53YXJuKCJoZWxsbyIsIFVzZXJXYXJuaW5nKQogICAg
ICAgICBhc3NlcnQgbGVuKHJlY3dhcm4pID09IDEKQEAgLTI1OSw0MCArMzY3LDY0IEBAIHdhcm5p
bmdzLCBvciBpbmRleCBpbnRvIGl0IHRvIGdldCBhIHBhcnRpY3VsYXIgcmVjb3JkZWQgd2Fybmlu
Zy4KIAogLi4gY3VycmVudG1vZHVsZTo6IF9weXRlc3Qud2FybmluZ3MKIAotRnVsbCBBUEk6IDpj
bGFzczpgV2FybmluZ3NSZWNvcmRlcmAuCitGdWxsIEFQSTogOmNsYXNzOmB+X3B5dGVzdC5yZWN3
YXJuLldhcm5pbmdzUmVjb3JkZXJgLgogCi0uLiBfYGVuc3VyaW5nIGEgZnVuY3Rpb24gdHJpZ2dl
cnMgYSBkZXByZWNhdGlvbiB3YXJuaW5nYDoKKy4uIF9jdXN0b21fZmFpbHVyZV9tZXNzYWdlczoK
IAotLi4gX2Vuc3VyaW5nX2Z1bmN0aW9uX3RyaWdnZXJzOgorQ3VzdG9tIGZhaWx1cmUgbWVzc2Fn
ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVuc3VyaW5nIGEgZnVuY3Rpb24gdHJpZ2dl
cnMgYSBkZXByZWNhdGlvbiB3YXJuaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWNvcmRpbmcgd2FybmluZ3MgcHJvdmlkZXMgYW4g
b3Bwb3J0dW5pdHkgdG8gcHJvZHVjZSBjdXN0b20gdGVzdAorZmFpbHVyZSBtZXNzYWdlcyBmb3Ig
d2hlbiBubyB3YXJuaW5ncyBhcmUgaXNzdWVkIG9yIG90aGVyIGNvbmRpdGlvbnMKK2FyZSBtZXQu
CiAKLVlvdSBjYW4gYWxzbyBjYWxsIGEgZ2xvYmFsIGhlbHBlciBmb3IgY2hlY2tpbmcKLXRoYXQg
YSBjZXJ0YWluIGZ1bmN0aW9uIGNhbGwgdHJpZ2dlcnMgYSBgYERlcHJlY2F0aW9uV2FybmluZ2Bg
IG9yCi1gYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYDo6CisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKLSAgICBpbXBvcnQgcHl0ZXN0CisgICAgZGVmIHRlc3QoKToKKyAgICAgICAgd2l0aCBw
eXRlc3Qud2FybnMoV2FybmluZykgYXMgcmVjb3JkOgorICAgICAgICAgICAgZigpCisgICAgICAg
ICAgICBpZiBub3QgcmVjb3JkOgorICAgICAgICAgICAgICAgIHB5dGVzdC5mYWlsKCJFeHBlY3Rl
ZCBhIHdhcm5pbmchIikKIAotICAgIGRlZiB0ZXN0X2dsb2JhbCgpOgotICAgICAgICBweXRlc3Qu
ZGVwcmVjYXRlZF9jYWxsKG15ZnVuY3Rpb24sIDE3KQorSWYgbm8gd2FybmluZ3MgYXJlIGlzc3Vl
ZCB3aGVuIGNhbGxpbmcgYGBmYGAsIHRoZW4gYGBub3QgcmVjb3JkYGAgd2lsbAorZXZhbHVhdGUg
dG8gYGBUcnVlYGAuICBZb3UgY2FuIHRoZW4gY2FsbCBgYHB5dGVzdC5mYWlsYGAgd2l0aCBhCitj
dXN0b20gZXJyb3IgbWVzc2FnZS4KIAotQnkgZGVmYXVsdCwgYGBEZXByZWNhdGlvbldhcm5pbmdg
YCBhbmQgYGBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYGAgd2lsbCBub3QgYmUKLWNhdWdodCB3
aGVuIHVzaW5nIGBgcHl0ZXN0Lndhcm5zYGAgb3IgYGByZWN3YXJuYGAgYmVjYXVzZSBkZWZhdWx0
IFB5dGhvbiB3YXJuaW5ncyBmaWx0ZXJzIGhpZGUKLXRoZW0uIElmIHlvdSB3aXNoIHRvIHJlY29y
ZCB0aGVtIGluIHlvdXIgb3duIGNvZGUsIHVzZSB0aGUKLWNvbW1hbmQgYGB3YXJuaW5ncy5zaW1w
bGVmaWx0ZXIoJ2Fsd2F5cycpYGA6OgorLi4gX2ludGVybmFsLXdhcm5pbmdzOgogCi0gICAgaW1w
b3J0IHdhcm5pbmdzCi0gICAgaW1wb3J0IHB5dGVzdAorSW50ZXJuYWwgcHl0ZXN0IHdhcm5pbmdz
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIGRlZiB0ZXN0X2RlcHJlY2F0aW9uKHJl
Y3dhcm4pOgotICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCi0gICAgICAg
IHdhcm5pbmdzLndhcm4oImRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAg
IGFzc2VydCBsZW4ocmVjd2FybikgPT0gMQotICAgICAgICBhc3NlcnQgcmVjd2Fybi5wb3AoRGVw
cmVjYXRpb25XYXJuaW5nKQorcHl0ZXN0IG1heSBnZW5lcmF0ZSBpdHMgb3duIHdhcm5pbmdzIGlu
IHNvbWUgc2l0dWF0aW9ucywgc3VjaCBhcyBpbXByb3BlciB1c2FnZSBvciBkZXByZWNhdGVkIGZl
YXR1cmVzLgogCi1Zb3UgY2FuIGFsc28gdXNlIGl0IGFzIGEgY29udGV4dG1hbmFnZXI6OgorRm9y
IGV4YW1wbGUsIHB5dGVzdCB3aWxsIGVtaXQgYSB3YXJuaW5nIGlmIGl0IGVuY291bnRlcnMgYSBj
bGFzcyB0aGF0IG1hdGNoZXMgOmNvbmZ2YWw6YHB5dGhvbl9jbGFzc2VzYCBidXQgYWxzbworZGVm
aW5lcyBhbiBgYF9faW5pdF9fYGAgY29uc3RydWN0b3IsIGFzIHRoaXMgcHJldmVudHMgdGhlIGNs
YXNzIGZyb20gYmVpbmcgaW5zdGFudGlhdGVkOgogCi0gICAgZGVmIHRlc3RfZ2xvYmFsKCk6Ci0g
ICAgICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbCgpOgotICAgICAgICAgICAgbXlvYmpl
Y3QuZGVwcmVjYXRlZF9tZXRob2QoKQorLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBj
b250ZW50IG9mIHRlc3RfcHl0ZXN0X3dhcm5pbmdzLnB5CisgICAgY2xhc3MgVGVzdDoKKyAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiB0
ZXN0X2ZvbyhzZWxmKToKKyAgICAgICAgICAgIGFzc2VydCAxID09IDEKKworLi4gY29kZS1ibG9j
azo6IHB5dGVzdAorCisgICAgJCBweXRlc3QgdGVzdF9weXRlc3Rfd2FybmluZ3MucHkgLXEKKwor
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IHdhcm5pbmdzIHN1bW1hcnkgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0X3B5dGVzdF93YXJuaW5ncy5weToxCisg
ICAgICAkUkVHRU5ET0NfVE1QRElSL3Rlc3RfcHl0ZXN0X3dhcm5pbmdzLnB5OjE6IFB5dGVzdENv
bGxlY3Rpb25XYXJuaW5nOiBjYW5ub3QgY29sbGVjdCB0ZXN0IGNsYXNzICdUZXN0JyBiZWNhdXNl
IGl0IGhhcyBhIF9faW5pdF9fIGNvbnN0cnVjdG9yIChmcm9tOiB0ZXN0X3B5dGVzdF93YXJuaW5n
cy5weSkKKyAgICAgICAgY2xhc3MgVGVzdDoKKworICAgIC0tIERvY3M6IGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS93YXJuaW5ncy5odG1sCisgICAgMSB3YXJuaW5nIGluIDAuMTJz
CisKK1RoZXNlIHdhcm5pbmdzIG1pZ2h0IGJlIGZpbHRlcmVkIHVzaW5nIHRoZSBzYW1lIGJ1aWx0
aW4gbWVjaGFuaXNtcyB1c2VkIHRvIGZpbHRlciBvdGhlciB0eXBlcyBvZiB3YXJuaW5ncy4KKwor
UGxlYXNlIHJlYWQgb3VyIDpyZWY6YGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5YCB0byBsZWFybiBo
b3cgd2UgcHJvY2VlZCBhYm91dCBkZXByZWNhdGluZyBhbmQgZXZlbnR1YWxseSByZW1vdmluZwor
ZmVhdHVyZXMuCisKK1RoZSBmdWxsIGxpc3Qgb2Ygd2FybmluZ3MgaXMgbGlzdGVkIGluIDpyZWY6
YHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiA8d2FybmluZ3MgcmVmPmAuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vd3JpdGluZ19wbHVnaW5zLnJzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi93cml0aW5nX3BsdWdpbnMucnN0CmluZGV4IDk1YjgxMGJjYjM2Zi4uMDQ5MmI1ZmNmN2Vl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vd3JpdGluZ19wbHVnaW5zLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vd3JpdGluZ19wbHVnaW5zLnJzdApAQCAtMzMsMjYgKzMzLDM0
IEBAIFBsdWdpbiBkaXNjb3Zlcnkgb3JkZXIgYXQgdG9vbCBzdGFydHVwCiAKIGBgcHl0ZXN0YGAg
bG9hZHMgcGx1Z2luIG1vZHVsZXMgYXQgdG9vbCBzdGFydHVwIGluIHRoZSBmb2xsb3dpbmcgd2F5
OgogCi0qIGJ5IGxvYWRpbmcgYWxsIGJ1aWx0aW4gcGx1Z2lucworMS4gYnkgc2Nhbm5pbmcgdGhl
IGNvbW1hbmQgbGluZSBmb3IgdGhlIGBgLXAgbm86bmFtZWBgIG9wdGlvbgorICAgYW5kICpibG9j
a2luZyogdGhhdCBwbHVnaW4gZnJvbSBiZWluZyBsb2FkZWQgKGV2ZW4gYnVpbHRpbiBwbHVnaW5z
IGNhbgorICAgYmUgYmxvY2tlZCB0aGlzIHdheSkuIFRoaXMgaGFwcGVucyBiZWZvcmUgbm9ybWFs
IGNvbW1hbmQtbGluZSBwYXJzaW5nLgogCi0qIGJ5IGxvYWRpbmcgYWxsIHBsdWdpbnMgcmVnaXN0
ZXJlZCB0aHJvdWdoIGBzZXR1cHRvb2xzIGVudHJ5IHBvaW50c2BfLgorMi4gYnkgbG9hZGluZyBh
bGwgYnVpbHRpbiBwbHVnaW5zLgogCi0qIGJ5IHByZS1zY2FubmluZyB0aGUgY29tbWFuZCBsaW5l
IGZvciB0aGUgYGAtcCBuYW1lYGAgb3B0aW9uCi0gIGFuZCBsb2FkaW5nIHRoZSBzcGVjaWZpZWQg
cGx1Z2luIGJlZm9yZSBhY3R1YWwgY29tbWFuZCBsaW5lIHBhcnNpbmcuCiszLiBieSBzY2Fubmlu
ZyB0aGUgY29tbWFuZCBsaW5lIGZvciB0aGUgYGAtcCBuYW1lYGAgb3B0aW9uCisgICBhbmQgbG9h
ZGluZyB0aGUgc3BlY2lmaWVkIHBsdWdpbi4gVGhpcyBoYXBwZW5zIGJlZm9yZSBub3JtYWwgY29t
bWFuZC1saW5lIHBhcnNpbmcuCiAKLSogYnkgbG9hZGluZyBhbGwgOmZpbGU6YGNvbmZ0ZXN0LnB5
YCBmaWxlcyBhcyBpbmZlcnJlZCBieSB0aGUgY29tbWFuZCBsaW5lCi0gIGludm9jYXRpb246Cis0
LiBieSBsb2FkaW5nIGFsbCBwbHVnaW5zIHJlZ2lzdGVyZWQgdGhyb3VnaCBgc2V0dXB0b29scyBl
bnRyeSBwb2ludHNgXy4KIAotICAtIGlmIG5vIHRlc3QgcGF0aHMgYXJlIHNwZWNpZmllZCB1c2Ug
Y3VycmVudCBkaXIgYXMgYSB0ZXN0IHBhdGgKLSAgLSBpZiBleGlzdHMsIGxvYWQgYGBjb25mdGVz
dC5weWBgIGFuZCBgYHRlc3QqL2NvbmZ0ZXN0LnB5YGAgcmVsYXRpdmUKLSAgICB0byB0aGUgZGly
ZWN0b3J5IHBhcnQgb2YgdGhlIGZpcnN0IHRlc3QgcGF0aC4KKzUuIGJ5IGxvYWRpbmcgYWxsIHBs
dWdpbnMgc3BlY2lmaWVkIHRocm91Z2ggdGhlIDplbnZ2YXI6YFBZVEVTVF9QTFVHSU5TYCBlbnZp
cm9ubWVudCB2YXJpYWJsZS4KIAotICBOb3RlIHRoYXQgcHl0ZXN0IGRvZXMgbm90IGZpbmQgYGBj
b25mdGVzdC5weWBgIGZpbGVzIGluIGRlZXBlciBuZXN0ZWQKLSAgc3ViIGRpcmVjdG9yaWVzIGF0
IHRvb2wgc3RhcnR1cC4gIEl0IGlzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8ga2VlcAotICB5b3Vy
IGBgY29uZnRlc3QucHlgYCBmaWxlIGluIHRoZSB0b3AgbGV2ZWwgdGVzdCBvciBwcm9qZWN0IHJv
b3QgZGlyZWN0b3J5LgorNi4gYnkgbG9hZGluZyBhbGwgOmZpbGU6YGNvbmZ0ZXN0LnB5YCBmaWxl
cyBhcyBpbmZlcnJlZCBieSB0aGUgY29tbWFuZCBsaW5lCisgICBpbnZvY2F0aW9uOgogCi0qIGJ5
IHJlY3Vyc2l2ZWx5IGxvYWRpbmcgYWxsIHBsdWdpbnMgc3BlY2lmaWVkIGJ5IHRoZQotICBgYHB5
dGVzdF9wbHVnaW5zYGAgdmFyaWFibGUgaW4gYGBjb25mdGVzdC5weWBgIGZpbGVzCisgICAtIGlm
IG5vIHRlc3QgcGF0aHMgYXJlIHNwZWNpZmllZCwgdXNlIHRoZSBjdXJyZW50IGRpciBhcyBhIHRl
c3QgcGF0aAorICAgLSBpZiBleGlzdHMsIGxvYWQgYGBjb25mdGVzdC5weWBgIGFuZCBgYHRlc3Qq
L2NvbmZ0ZXN0LnB5YGAgcmVsYXRpdmUKKyAgICAgdG8gdGhlIGRpcmVjdG9yeSBwYXJ0IG9mIHRo
ZSBmaXJzdCB0ZXN0IHBhdGguIEFmdGVyIHRoZSBgYGNvbmZ0ZXN0LnB5YGAKKyAgICAgZmlsZSBp
cyBsb2FkZWQsIGxvYWQgYWxsIHBsdWdpbnMgc3BlY2lmaWVkIGluIGl0cworICAgICA6Z2xvYmFs
dmFyOmBweXRlc3RfcGx1Z2luc2AgdmFyaWFibGUgaWYgcHJlc2VudC4KKworICAgTm90ZSB0aGF0
IHB5dGVzdCBkb2VzIG5vdCBmaW5kIGBgY29uZnRlc3QucHlgYCBmaWxlcyBpbiBkZWVwZXIgbmVz
dGVkCisgICBzdWIgZGlyZWN0b3JpZXMgYXQgdG9vbCBzdGFydHVwLiAgSXQgaXMgdXN1YWxseSBh
IGdvb2QgaWRlYSB0byBrZWVwCisgICB5b3VyIGBgY29uZnRlc3QucHlgYCBmaWxlIGluIHRoZSB0
b3AgbGV2ZWwgdGVzdCBvciBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5LgorCis3LiBieSByZWN1cnNp
dmVseSBsb2FkaW5nIGFsbCBwbHVnaW5zIHNwZWNpZmllZCBieSB0aGUKKyAgIDpnbG9iYWx2YXI6
YHB5dGVzdF9wbHVnaW5zYCB2YXJpYWJsZSBpbiBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMuCiAKIAog
Li4gX2BweXRlc3QvcGx1Z2luYDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvcHl0ZXN0LWRldi9weXRl
c3Qvc3JjL3RpcC9weXRlc3QvcGx1Z2luLwpAQCAtNzMsNyArODEsNyBAQCBzdWIgZGlyZWN0b3J5
IGJ1dCBub3QgZm9yIG90aGVyIGRpcmVjdG9yaWVzOjoKICAgICBhL2NvbmZ0ZXN0LnB5OgogICAg
ICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CiAgICAgICAgICAgICAjIGNhbGxl
ZCBmb3IgcnVubmluZyBlYWNoIHRlc3QgaW4gJ2EnIGRpcmVjdG9yeQotICAgICAgICAgICAgcHJp
bnQgKCJzZXR0aW5nIHVwIiwgaXRlbSkKKyAgICAgICAgICAgIHByaW50KCJzZXR0aW5nIHVwIiwg
aXRlbSkKIAogICAgIGEvdGVzdF9zdWIucHk6CiAgICAgICAgIGRlZiB0ZXN0X3N1YigpOgpAQCAt
MTY0LDcgKzE3Miw3IEBAIElmIGEgcGFja2FnZSBpcyBpbnN0YWxsZWQgdGhpcyB3YXksIGBgcHl0
ZXN0YGAgd2lsbCBsb2FkCiAuLiBub3RlOjoKIAogICAgIE1ha2Ugc3VyZSB0byBpbmNsdWRlIGBg
RnJhbWV3b3JrIDo6IFB5dGVzdGBgIGluIHlvdXIgbGlzdCBvZgotICAgIGBQeVBJIGNsYXNzaWZp
ZXJzIDxodHRwczovL3B5dGhvbi1wYWNrYWdpbmctdXNlci1ndWlkZS5yZWFkdGhlZG9jcy5pby9k
aXN0cmlidXRpbmcvI2NsYXNzaWZpZXJzPmBfCisgICAgYFB5UEkgY2xhc3NpZmllcnMgPGh0dHBz
Oi8vcHlwaS5vcmcvY2xhc3NpZmllcnMvPmBfCiAgICAgdG8gbWFrZSBpdCBlYXN5IGZvciB1c2Vy
cyB0byBmaW5kIHlvdXIgcGx1Z2luLgogCiAKQEAgLTE3OSwxMSArMTg3LDEyIEBAIGFzc2VydGlv
biBmYWlsdXJlcy4gIFRoaXMgaXMgcHJvdmlkZWQgYnkgImFzc2VydGlvbiByZXdyaXRpbmciIHdo
aWNoCiBtb2RpZmllcyB0aGUgcGFyc2VkIEFTVCBiZWZvcmUgaXQgZ2V0cyBjb21waWxlZCB0byBi
eXRlY29kZS4gIFRoaXMgaXMKIGRvbmUgdmlhIGEgOnBlcDpgMzAyYCBpbXBvcnQgaG9vayB3aGlj
aCBnZXRzIGluc3RhbGxlZCBlYXJseSBvbiB3aGVuCiBgYHB5dGVzdGBgIHN0YXJ0cyB1cCBhbmQg
d2lsbCBwZXJmb3JtIHRoaXMgcmV3cml0aW5nIHdoZW4gbW9kdWxlcyBnZXQKLWltcG9ydGVkLiAg
SG93ZXZlciBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0byB0ZXN0IGRpZmZlcmVudCBieXRlY29kZQot
dGhlbiB5b3Ugd2lsbCBydW4gaW4gcHJvZHVjdGlvbiB0aGlzIGhvb2sgb25seSByZXdyaXRlcyB0
ZXN0IG1vZHVsZXMKLXRoZW1zZWx2ZXMgYXMgd2VsbCBhcyBhbnkgbW9kdWxlcyB3aGljaCBhcmUg
cGFydCBvZiBwbHVnaW5zLiAgQW55Ci1vdGhlciBpbXBvcnRlZCBtb2R1bGUgd2lsbCBub3QgYmUg
cmV3cml0dGVuIGFuZCBub3JtYWwgYXNzZXJ0aW9uCi1iZWhhdmlvdXIgd2lsbCBoYXBwZW4uCitp
bXBvcnRlZC4gIEhvd2V2ZXIsIHNpbmNlIHdlIGRvIG5vdCB3YW50IHRvIHRlc3QgZGlmZmVyZW50
IGJ5dGVjb2RlCitmcm9tIHdoYXQgeW91IHdpbGwgcnVuIGluIHByb2R1Y3Rpb24sIHRoaXMgaG9v
ayBvbmx5IHJld3JpdGVzIHRlc3QgbW9kdWxlcwordGhlbXNlbHZlcyAoYXMgZGVmaW5lZCBieSB0
aGUgOmNvbmZ2YWw6YHB5dGhvbl9maWxlc2AgY29uZmlndXJhdGlvbiBvcHRpb24pLAorYW5kIGFu
eSBtb2R1bGVzIHdoaWNoIGFyZSBwYXJ0IG9mIHBsdWdpbnMuCitBbnkgb3RoZXIgaW1wb3J0ZWQg
bW9kdWxlIHdpbGwgbm90IGJlIHJld3JpdHRlbiBhbmQgbm9ybWFsIGFzc2VydGlvbiBiZWhhdmlv
dXIKK3dpbGwgaGFwcGVuLgogCiBJZiB5b3UgaGF2ZSBhc3NlcnRpb24gaGVscGVycyBpbiBvdGhl
ciBtb2R1bGVzIHdoZXJlIHlvdSB3b3VsZCBuZWVkCiBhc3NlcnRpb24gcmV3cml0aW5nIHRvIGJl
IGVuYWJsZWQgeW91IG5lZWQgdG8gYXNrIGBgcHl0ZXN0YGAKQEAgLTIyMywxMSArMjMyLDEwIEBA
IGltcG9ydCBgYGhlbHBlci5weWBgIG5vcm1hbGx5LiAgVGhlIGNvbnRlbnRzIG9mCiAgICBweXRl
c3QucmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoInB5dGVzdF9mb28uaGVscGVyIikKIAogCi0KIFJl
cXVpcmluZy9Mb2FkaW5nIHBsdWdpbnMgaW4gYSB0ZXN0IG1vZHVsZSBvciBjb25mdGVzdCBmaWxl
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1Zb3UgY2FuIHJlcXVpcmUgcGx1Z2lucyBpbiBhIHRlc3QgbW9kdWxlIG9yIGEgYGBj
b25mdGVzdC5weWBgIGZpbGUgbGlrZSB0aGlzOgorWW91IGNhbiByZXF1aXJlIHBsdWdpbnMgaW4g
YSB0ZXN0IG1vZHVsZSBvciBhIGBgY29uZnRlc3QucHlgYCBmaWxlIHVzaW5nIDpnbG9iYWx2YXI6
YHB5dGVzdF9wbHVnaW5zYDoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCkBAIC0yNDEsMzEg
KzI0OSwzMSBAQCBhcHBsaWNhdGlvbiBtb2R1bGVzOgogCiAgICAgcHl0ZXN0X3BsdWdpbnMgPSAi
bXlhcHAudGVzdHN1cHBvcnQubXlwbHVnaW4iCiAKLWBgcHl0ZXN0X3BsdWdpbnNgYCB2YXJpYWJs
ZXMgYXJlIHByb2Nlc3NlZCByZWN1cnNpdmVseSwgc28gbm90ZSB0aGF0IGluIHRoZSBleGFtcGxl
IGFib3ZlCi1pZiBgYG15YXBwLnRlc3RzdXBwb3J0Lm15cGx1Z2luYGAgYWxzbyBkZWNsYXJlcyBg
YHB5dGVzdF9wbHVnaW5zYGAsIHRoZSBjb250ZW50cworOmdsb2JhbHZhcjpgcHl0ZXN0X3BsdWdp
bnNgIGFyZSBwcm9jZXNzZWQgcmVjdXJzaXZlbHksIHNvIG5vdGUgdGhhdCBpbiB0aGUgZXhhbXBs
ZSBhYm92ZQoraWYgYGBteWFwcC50ZXN0c3VwcG9ydC5teXBsdWdpbmBgIGFsc28gZGVjbGFyZXMg
Omdsb2JhbHZhcjpgcHl0ZXN0X3BsdWdpbnNgLCB0aGUgY29udGVudHMKIG9mIHRoZSB2YXJpYWJs
ZSB3aWxsIGFsc28gYmUgbG9hZGVkIGFzIHBsdWdpbnMsIGFuZCBzbyBvbi4KIAogLi4gX2ByZXF1
aXJpbmcgcGx1Z2lucyBpbiBub24tcm9vdCBjb25mdGVzdHNgOgogCiAuLiBub3RlOjoKLSAgICBS
ZXF1aXJpbmcgcGx1Z2lucyB1c2luZyBhIGBgcHl0ZXN0X3BsdWdpbnNgYCB2YXJpYWJsZSBpbiBu
b24tcm9vdAorICAgIFJlcXVpcmluZyBwbHVnaW5zIHVzaW5nIDpnbG9iYWx2YXI6YHB5dGVzdF9w
bHVnaW5zYCB2YXJpYWJsZSBpbiBub24tcm9vdAogICAgIGBgY29uZnRlc3QucHlgYCBmaWxlcyBp
cyBkZXByZWNhdGVkLgogCiAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgYGNvbmZ0ZXN0
LnB5YGAgZmlsZXMgaW1wbGVtZW50IHBlci1kaXJlY3RvcnkKICAgICBob29rIGltcGxlbWVudGF0
aW9ucywgYnV0IG9uY2UgYSBwbHVnaW4gaXMgaW1wb3J0ZWQsIGl0IHdpbGwgYWZmZWN0IHRoZQog
ICAgIGVudGlyZSBkaXJlY3RvcnkgdHJlZS4gSW4gb3JkZXIgdG8gYXZvaWQgY29uZnVzaW9uLCBk
ZWZpbmluZwotICAgIGBgcHl0ZXN0X3BsdWdpbnNgYCBpbiBhbnkgYGBjb25mdGVzdC5weWBgIGZp
bGUgd2hpY2ggaXMgbm90IGxvY2F0ZWQgaW4gdGhlCisgICAgOmdsb2JhbHZhcjpgcHl0ZXN0X3Bs
dWdpbnNgIGluIGFueSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZSB3aGljaCBpcyBub3QgbG9jYXRlZCBp
biB0aGUKICAgICB0ZXN0cyByb290IGRpcmVjdG9yeSBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBy
YWlzZSBhIHdhcm5pbmcuCiAKIFRoaXMgbWVjaGFuaXNtIG1ha2VzIGl0IGVhc3kgdG8gc2hhcmUg
Zml4dHVyZXMgd2l0aGluIGFwcGxpY2F0aW9ucyBvciBldmVuCiBleHRlcm5hbCBhcHBsaWNhdGlv
bnMgd2l0aG91dCB0aGUgbmVlZCB0byBjcmVhdGUgZXh0ZXJuYWwgcGx1Z2lucyB1c2luZwogdGhl
IGBgc2V0dXB0b29sc2BgJ3MgZW50cnkgcG9pbnQgdGVjaG5pcXVlLgogCi1QbHVnaW5zIGltcG9y
dGVkIGJ5IGBgcHl0ZXN0X3BsdWdpbnNgYCB3aWxsIGFsc28gYXV0b21hdGljYWxseSBiZSBtYXJr
ZWQKK1BsdWdpbnMgaW1wb3J0ZWQgYnkgOmdsb2JhbHZhcjpgcHl0ZXN0X3BsdWdpbnNgIHdpbGwg
YWxzbyBhdXRvbWF0aWNhbGx5IGJlIG1hcmtlZAogZm9yIGFzc2VydGlvbiByZXdyaXRpbmcgKHNl
ZSA6ZnVuYzpgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlYCkuCiBIb3dldmVyIGZvciB0
aGlzIHRvIGhhdmUgYW55IGVmZmVjdCB0aGUgbW9kdWxlIG11c3Qgbm90IGJlCiBpbXBvcnRlZCBh
bHJlYWR5OyBpZiBpdCB3YXMgYWxyZWFkeSBpbXBvcnRlZCBhdCB0aGUgdGltZSB0aGUKLWBgcHl0
ZXN0X3BsdWdpbnNgYCBzdGF0ZW1lbnQgaXMgcHJvY2Vzc2VkLCBhIHdhcm5pbmcgd2lsbCByZXN1
bHQgYW5kCis6Z2xvYmFsdmFyOmBweXRlc3RfcGx1Z2luc2Agc3RhdGVtZW50IGlzIHByb2Nlc3Nl
ZCwgYSB3YXJuaW5nIHdpbGwgcmVzdWx0IGFuZAogYXNzZXJ0aW9ucyBpbnNpZGUgdGhlIHBsdWdp
biB3aWxsIG5vdCBiZSByZXdyaXR0ZW4uICBUbyBmaXggdGhpcyB5b3UKIGNhbiBlaXRoZXIgY2Fs
bCA6ZnVuYzpgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlYCB5b3Vyc2VsZiBiZWZvcmUK
IHRoZSBtb2R1bGUgaXMgaW1wb3J0ZWQsIG9yIHlvdSBjYW4gYXJyYW5nZSB0aGUgY29kZSB0byBk
ZWxheSB0aGUKQEAgLTI4Niw2ICsyOTQsMjYgQEAgdGhlIHBsdWdpbiBtYW5hZ2VyIGxpa2UgdGhp
czoKIElmIHlvdSB3YW50IHRvIGxvb2sgYXQgdGhlIG5hbWVzIG9mIGV4aXN0aW5nIHBsdWdpbnMs
IHVzZQogdGhlIGBgLS10cmFjZS1jb25maWdgYCBvcHRpb24uCiAKKworLi4gX3JlZ2lzdGVyaW5n
LW1hcmtlcnM6CisKK1JlZ2lzdGVyaW5nIGN1c3RvbSBtYXJrZXJzCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitJZiB5b3VyIHBsdWdpbiB1c2VzIGFueSBtYXJrZXJzLCB5b3Ugc2hvdWxk
IHJlZ2lzdGVyIHRoZW0gc28gdGhhdCB0aGV5IGFwcGVhciBpbgorcHl0ZXN0J3MgaGVscCB0ZXh0
IGFuZCBkbyBub3QgOnJlZjpgY2F1c2Ugc3B1cmlvdXMgd2FybmluZ3MgPHVua25vd24tbWFya3M+
YC4KK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHBsdWdpbiB3b3VsZCByZWdpc3RlciBgYGNv
b2xfbWFya2VyYGAgYW5kCitgYG1hcmtfd2l0aGBgIGZvciBhbGwgdXNlcnM6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KKworICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisgICAg
ICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKCJtYXJrZXJzIiwgImNvb2xfbWFya2VyOiB0aGlz
IG9uZSBpcyBmb3IgY29vbCB0ZXN0cy4iKQorICAgICAgICBjb25maWcuYWRkaW5pdmFsdWVfbGlu
ZSgKKyAgICAgICAgICAgICJtYXJrZXJzIiwgIm1hcmtfd2l0aChhcmcsIGFyZzIpOiB0aGlzIG1h
cmtlciB0YWtlcyBhcmd1bWVudHMuIgorICAgICAgICApCisKKwogVGVzdGluZyBwbHVnaW5zCiAt
LS0tLS0tLS0tLS0tLS0KIApAQCAtMzE2LDggKzM0NCw2IEBAIHN0cmluZyB2YWx1ZSBvZiBgYEhl
bGxvIFdvcmxkIWBgIGlmIHdlIGRvIG5vdCBzdXBwbHkgYSB2YWx1ZSBvciBgYEhlbGxvCiAKIC4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgICMgLSotIGNvZGluZzogdXRmLTggLSotCi0KICAg
ICBpbXBvcnQgcHl0ZXN0CiAKIApAQCAtMzg2LDExICs0MTIsNTQgQEAgcmV0dXJuIGEgcmVzdWx0
IG9iamVjdCwgd2l0aCB3aGljaCB3ZSBjYW4gYXNzZXJ0IHRoZSB0ZXN0cycgb3V0Y29tZXMuCiAg
ICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTQpCiAKIAorQWRkaXRpb25hbGx5
IGl0IGlzIHBvc3NpYmxlIHRvIGNvcHkgZXhhbXBsZXMgZm9yIGFuIGV4YW1wbGUgZm9sZGVyIGJl
Zm9yZSBydW5uaW5nIHB5dGVzdCBvbiBpdC4KKworLi4gY29kZS1ibG9jazo6IGluaQorCisgICMg
Y29udGVudCBvZiBweXRlc3QuaW5pCisgIFtweXRlc3RdCisgIHB5dGVzdGVyX2V4YW1wbGVfZGly
ID0gLgorCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudCBvZiB0ZXN0
X2V4YW1wbGUucHkKKworCisgICAgZGVmIHRlc3RfcGx1Z2luKHRlc3RkaXIpOgorICAgICAgICB0
ZXN0ZGlyLmNvcHlfZXhhbXBsZSgidGVzdF9leGFtcGxlLnB5IikKKyAgICAgICAgdGVzdGRpci5y
dW5weXRlc3QoIi1rIiwgInRlc3RfZXhhbXBsZSIpCisKKworICAgIGRlZiB0ZXN0X2V4YW1wbGUo
KToKKyAgICAgICAgcGFzcworCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisKKyAgICAkIHB5dGVz
dAorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24g
My54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGly
OiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUiwgY29uZmlnZmlsZTogcHl0ZXN0LmluaQorICAgIGNvbGxlY3RlZCAyIGl0ZW1zCisKKyAg
ICB0ZXN0X2V4YW1wbGUucHkgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbMTAwJV0KKworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
IHdhcm5pbmdzIHN1bW1hcnkgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0
X2V4YW1wbGUucHk6OnRlc3RfcGx1Z2luCisgICAgICAkUkVHRU5ET0NfVE1QRElSL3Rlc3RfZXhh
bXBsZS5weTo0OiBQeXRlc3RFeHBlcmltZW50YWxBcGlXYXJuaW5nOiB0ZXN0ZGlyLmNvcHlfZXhh
bXBsZSBpcyBhbiBleHBlcmltZW50YWwgYXBpIHRoYXQgbWF5IGNoYW5nZSBvdmVyIHRpbWUKKyAg
ICAgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoInRlc3RfZXhhbXBsZS5weSIpCisKKyAgICAtLSBE
b2NzOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbAorICAg
ID09PT09PT09PT09PT09PT09PT09PT09IDIgcGFzc2VkLCAxIHdhcm5pbmcgaW4gMC4xMnMgPT09
PT09PT09PT09PT09PT09PT09PT0KKwogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJl
c3VsdCBvYmplY3QgdGhhdCBgYHJ1bnB5dGVzdCgpYGAgcmV0dXJucywgYW5kCiB0aGUgbWV0aG9k
cyB0aGF0IGl0IHByb3ZpZGVzIHBsZWFzZSBjaGVjayBvdXQgdGhlIDpweTpjbGFzczpgUnVuUmVz
dWx0CiA8X3B5dGVzdC5weXRlc3Rlci5SdW5SZXN1bHQ+YCBkb2N1bWVudGF0aW9uLgogCiAKKwor
CiAuLiBfYHdyaXRpbmdob29rc2A6CiAKIFdyaXRpbmcgaG9vayBmdW5jdGlvbnMKQEAgLTQ0Nywx
MyArNTE2LDE0IEBAIGNhbGwgb25seSBleGVjdXRlcyB1bnRpbCB0aGUgZmlyc3Qgb2YgTiByZWdp
c3RlcmVkIGZ1bmN0aW9ucyByZXR1cm5zIGEKIG5vbi1Ob25lIHJlc3VsdCB3aGljaCBpcyB0aGVu
IHRha2VuIGFzIHJlc3VsdCBvZiB0aGUgb3ZlcmFsbCBob29rIGNhbGwuCiBUaGUgcmVtYWluaW5n
IGhvb2sgZnVuY3Rpb25zIHdpbGwgbm90IGJlIGNhbGxlZCBpbiB0aGlzIGNhc2UuCiAKKy4uIF9g
aG9va3dyYXBwZXJgOgogCiBob29rd3JhcHBlcjogZXhlY3V0aW5nIGFyb3VuZCBvdGhlciBob29r
cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAu
LiBjdXJyZW50bW9kdWxlOjogX3B5dGVzdC5jb3JlCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuNwor
CiAKIHB5dGVzdCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQgaG9vayB3cmFwcGVycyB3aGljaCB3cmFw
IHRoZSBleGVjdXRpb24KIG9mIG90aGVyIGhvb2sgaW1wbGVtZW50YXRpb25zLiAgQSBob29rIHdy
YXBwZXIgaXMgYSBnZW5lcmF0b3IgZnVuY3Rpb24KQEAgLTQ2NiwxMCArNTM2LDEzIEBAIGEgOnB5
OmNsYXNzOmBSZXN1bHQgPHBsdWdneS5fUmVzdWx0PmAgaW5zdGFuY2Ugd2hpY2ggZW5jYXBzdWxh
dGVzIGEgcmVzdWx0IG9yCiBleGNlcHRpb24gaW5mby4gIFRoZSB5aWVsZCBwb2ludCBpdHNlbGYg
d2lsbCB0aHVzIHR5cGljYWxseSBub3QgcmFpc2UKIGV4Y2VwdGlvbnMgKHVubGVzcyB0aGVyZSBh
cmUgYnVncykuCiAKLUhlcmUgaXMgYW4gZXhhbXBsZSBkZWZpbml0aW9uIG9mIGEgaG9vayB3cmFw
cGVyOjoKK0hlcmUgaXMgYW4gZXhhbXBsZSBkZWZpbml0aW9uIG9mIGEgaG9vayB3cmFwcGVyOgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIEBw
eXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKICAgICBkZWYgcHl0ZXN0X3B5ZnVuY19j
YWxsKHB5ZnVuY2l0ZW0pOgogICAgICAgICBkb19zb21ldGhpbmdfYmVmb3JlX25leHRfaG9va19l
eGVjdXRlcygpCkBAIC00ODgsOCArNTYxLDEwIEBAIHBlcmZvcm0gdHJhY2luZyBvciBvdGhlciBz
aWRlIGVmZmVjdHMgYXJvdW5kIHRoZSBhY3R1YWwgaG9vayBpbXBsZW1lbnRhdGlvbnMuCiBJZiB0
aGUgcmVzdWx0IG9mIHRoZSB1bmRlcmx5aW5nIGhvb2sgaXMgYSBtdXRhYmxlIG9iamVjdCwgdGhl
eSBtYXkgbW9kaWZ5CiB0aGF0IHJlc3VsdCBidXQgaXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gYXZv
aWQgaXQuCiAKLUZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZSBgcGx1Z2d5IGRvY3Vt
ZW50YXRpb24gPGh0dHA6Ly9wbHVnZ3kucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LyN3cmFwcGVy
cz5gXy4KK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZQorOnJlZjpgcGx1Z2d5IGRv
Y3VtZW50YXRpb24gYWJvdXQgaG9va3dyYXBwZXJzIDxwbHVnZ3k6aG9va3dyYXBwZXJzPmAuCiAK
Ky4uIF9wbHVnaW4taG9va29yZGVyOgogCiBIb29rIGZ1bmN0aW9uIG9yZGVyaW5nIC8gY2FsbCBl
eGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01NDcsNiAr
NjIyLDExIEBAIGFtb25nIGVhY2ggb3RoZXIuCiBEZWNsYXJpbmcgbmV3IGhvb2tzCiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAorLi4gbm90ZTo6CisKKyAgICBUaGlzIGlzIGEgcXVpY2sgb3Zl
cnZpZXcgb24gaG93IHRvIGFkZCBuZXcgaG9va3MgYW5kIGhvdyB0aGV5IHdvcmsgaW4gZ2VuZXJh
bCwgYnV0IGEgbW9yZSBjb21wbGV0ZQorICAgIG92ZXJ2aWV3IGNhbiBiZSBmb3VuZCBpbiBgdGhl
IHBsdWdneSBkb2N1bWVudGF0aW9uIDxodHRwczovL3BsdWdneS5yZWFkdGhlZG9jcy5pby9lbi9s
YXRlc3QvPmBfXy4KKwogLi4gY3VycmVudG1vZHVsZTo6IF9weXRlc3QuaG9va3NwZWMKIAogUGx1
Z2lucyBhbmQgYGBjb25mdGVzdC5weWBgIGZpbGVzIG1heSBkZWNsYXJlIG5ldyBob29rcyB0aGF0
IGNhbiB0aGVuIGJlCkBAIC01NTgsMTIgKzYzOCwxMTEgQEAgdGhlIG5ldyBwbHVnaW46CiAKIEhv
b2tzIGFyZSB1c3VhbGx5IGRlY2xhcmVkIGFzIGRvLW5vdGhpbmcgZnVuY3Rpb25zIHRoYXQgY29u
dGFpbiBvbmx5CiBkb2N1bWVudGF0aW9uIGRlc2NyaWJpbmcgd2hlbiB0aGUgaG9vayB3aWxsIGJl
IGNhbGxlZCBhbmQgd2hhdCByZXR1cm4gdmFsdWVzCi1hcmUgZXhwZWN0ZWQuCithcmUgZXhwZWN0
ZWQuIFRoZSBuYW1lcyBvZiB0aGUgZnVuY3Rpb25zIG11c3Qgc3RhcnQgd2l0aCBgcHl0ZXN0X2Ag
b3RoZXJ3aXNlIHB5dGVzdCB3b24ndCByZWNvZ25pemUgdGhlbS4KIAotRm9yIGFuIGV4YW1wbGUs
IHNlZSBgbmV3aG9va3MucHlgXyBmcm9tIGB4ZGlzdCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0LXhkaXN0PmBfLgorSGVyZSdzIGFuIGV4YW1wbGUuIExldCdzIGFzc3VtZSB0
aGlzIGNvZGUgaXMgaW4gdGhlIGBgc2FtcGxlX2hvb2sucHlgYCBtb2R1bGUuCisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KKworICAgIGRlZiBweXRlc3RfbXlfaG9vayhjb25maWcpOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmVjZWl2ZXMgdGhlIHB5dGVzdCBjb25maWcgYW5kIGRvZXMgdGhpbmdz
IHdpdGggaXQKKyAgICAgICAgIiIiCisKK1RvIHJlZ2lzdGVyIHRoZSBob29rcyB3aXRoIHB5dGVz
dCB0aGV5IG5lZWQgdG8gYmUgc3RydWN0dXJlZCBpbiB0aGVpciBvd24gbW9kdWxlIG9yIGNsYXNz
LiBUaGlzCitjbGFzcyBvciBtb2R1bGUgY2FuIHRoZW4gYmUgcGFzc2VkIHRvIHRoZSBgYHBsdWdp
bm1hbmFnZXJgYCB1c2luZyB0aGUgYGBweXRlc3RfYWRkaG9va3NgYCBmdW5jdGlvbgorKHdoaWNo
IGl0c2VsZiBpcyBhIGhvb2sgZXhwb3NlZCBieSBweXRlc3QpLgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCisKKyAgICBkZWYgcHl0ZXN0X2FkZGhvb2tzKHBsdWdpbm1hbmFnZXIpOgorICAgICAg
ICAiIiIgVGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlIGhvb2tzIGFyZSBncm91cGVkIGluIHRoZSAn
c2FtcGxlX2hvb2snIG1vZHVsZS4gIiIiCisgICAgICAgIGZyb20gbXlfYXBwLnRlc3RzIGltcG9y
dCBzYW1wbGVfaG9vaworCisgICAgICAgIHBsdWdpbm1hbmFnZXIuYWRkX2hvb2tzcGVjcyhzYW1w
bGVfaG9vaykKKworRm9yIGEgcmVhbCB3b3JsZCBleGFtcGxlLCBzZWUgYG5ld2hvb2tzLnB5YF8g
ZnJvbSBgeGRpc3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC14ZGlzdD5g
Xy4KIAogLi4gX2BuZXdob29rcy5weWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC14ZGlzdC9ibG9iLzk3NGJkNTY2YzU5OWRjNmE5ZWEyOTE4MzhjNmYyMjYxOTcyMDhiNDYv
eGRpc3QvbmV3aG9va3MucHkKIAorSG9va3MgbWF5IGJlIGNhbGxlZCBib3RoIGZyb20gZml4dHVy
ZXMgb3IgZnJvbSBvdGhlciBob29rcy4gSW4gYm90aCBjYXNlcywgaG9va3MgYXJlIGNhbGxlZAor
dGhyb3VnaCB0aGUgYGBob29rYGAgb2JqZWN0LCBhdmFpbGFibGUgaW4gdGhlIGBgY29uZmlnYGAg
b2JqZWN0LiBNb3N0IGhvb2tzIHJlY2VpdmUgYQorYGBjb25maWdgYCBvYmplY3QgZGlyZWN0bHks
IHdoaWxlIGZpeHR1cmVzIG1heSB1c2UgdGhlIGBgcHl0ZXN0Y29uZmlnYGAgZml4dHVyZSB3aGlj
aCBwcm92aWRlcyB0aGUgc2FtZSBvYmplY3QuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKwor
ICAgIEBweXRlc3QuZml4dHVyZSgpCisgICAgZGVmIG15X2ZpeHR1cmUocHl0ZXN0Y29uZmlnKToK
KyAgICAgICAgIyBjYWxsIHRoZSBob29rIGNhbGxlZCAicHl0ZXN0X215X2hvb2siCisgICAgICAg
ICMgJ3Jlc3VsdCcgd2lsbCBiZSBhIGxpc3Qgb2YgcmV0dXJuIHZhbHVlcyBmcm9tIGFsbCByZWdp
c3RlcmVkIGZ1bmN0aW9ucy4KKyAgICAgICAgcmVzdWx0ID0gcHl0ZXN0Y29uZmlnLmhvb2sucHl0
ZXN0X215X2hvb2soY29uZmlnPXB5dGVzdGNvbmZpZykKKworLi4gbm90ZTo6CisgICAgSG9va3Mg
cmVjZWl2ZSBwYXJhbWV0ZXJzIHVzaW5nIG9ubHkga2V5d29yZCBhcmd1bWVudHMuCisKK05vdyB5
b3VyIGhvb2sgaXMgcmVhZHkgdG8gYmUgdXNlZC4gVG8gcmVnaXN0ZXIgYSBmdW5jdGlvbiBhdCB0
aGUgaG9vaywgb3RoZXIgcGx1Z2lucyBvciB1c2VycyBtdXN0Citub3cgc2ltcGx5IGRlZmluZSB0
aGUgZnVuY3Rpb24gYGBweXRlc3RfbXlfaG9va2BgIHdpdGggdGhlIGNvcnJlY3Qgc2lnbmF0dXJl
IGluIHRoZWlyIGBgY29uZnRlc3QucHlgYC4KKworRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgZGVmIHB5dGVzdF9teV9ob29rKGNvbmZpZyk6CisgICAgICAgICIiIgor
ICAgICAgICBQcmludCBhbGwgYWN0aXZlIGhvb2tzIHRvIHRoZSBzY3JlZW4uCisgICAgICAgICIi
IgorICAgICAgICBwcmludChjb25maWcuaG9vaykKKworCisuLiBfYGFkZG9wdGlvbmhvb2tzYDoK
KworCitVc2luZyBob29rcyBpbiBweXRlc3RfYWRkb3B0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK09jY2FzaW9uYWxseSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGNoYW5nZSB0
aGUgd2F5IGluIHdoaWNoIGNvbW1hbmQgbGluZSBvcHRpb25zCithcmUgZGVmaW5lZCBieSBvbmUg
cGx1Z2luIGJhc2VkIG9uIGhvb2tzIGluIGFub3RoZXIgcGx1Z2luLiBGb3IgZXhhbXBsZSwKK2Eg
cGx1Z2luIG1heSBleHBvc2UgYSBjb21tYW5kIGxpbmUgb3B0aW9uIGZvciB3aGljaCBhbm90aGVy
IHBsdWdpbiBuZWVkcwordG8gZGVmaW5lIHRoZSBkZWZhdWx0IHZhbHVlLiBUaGUgcGx1Z2lubWFu
YWdlciBjYW4gYmUgdXNlZCB0byBpbnN0YWxsIGFuZAordXNlIGhvb2tzIHRvIGFjY29tcGxpc2gg
dGhpcy4gVGhlIHBsdWdpbiB3b3VsZCBkZWZpbmUgYW5kIGFkZCB0aGUgaG9va3MKK2FuZCB1c2Ug
cHl0ZXN0X2FkZG9wdGlvbiBhcyBmb2xsb3dzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisK
KyAgICMgY29udGVudHMgb2YgaG9va3MucHkKKworICAgIyBVc2UgZmlyc3RyZXN1bHQ9VHJ1ZSBi
ZWNhdXNlIHdlIG9ubHkgd2FudCBvbmUgcGx1Z2luIHRvIGRlZmluZSB0aGlzCisgICAjIGRlZmF1
bHQgdmFsdWUKKyAgIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQorICAgZGVmIHB5dGVzdF9j
b25maWdfZmlsZV9kZWZhdWx0X3ZhbHVlKCk6CisgICAgICAgIiIiIFJldHVybiB0aGUgZGVmYXVs
dCB2YWx1ZSBmb3IgdGhlIGNvbmZpZyBmaWxlIGNvbW1hbmQgbGluZSBvcHRpb24uICIiIgorCisK
KyAgICMgY29udGVudHMgb2YgbXlwbHVnaW4ucHkKKworCisgICBkZWYgcHl0ZXN0X2FkZGhvb2tz
KHBsdWdpbm1hbmFnZXIpOgorICAgICAgICIiIiBUaGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUgaG9v
a3MgYXJlIGdyb3VwZWQgaW4gdGhlICdob29rcycgbW9kdWxlLiAiIiIKKyAgICAgICBmcm9tIC4g
aW1wb3J0IGhvb2sKKworICAgICAgIHBsdWdpbm1hbmFnZXIuYWRkX2hvb2tzcGVjcyhob29rKQor
CisKKyAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlciwgcGx1Z2lubWFuYWdlcik6CisgICAg
ICAgZGVmYXVsdF92YWx1ZSA9IHBsdWdpbm1hbmFnZXIuaG9vay5weXRlc3RfY29uZmlnX2ZpbGVf
ZGVmYXVsdF92YWx1ZSgpCisgICAgICAgcGFyc2VyLmFkZG9wdGlvbigKKyAgICAgICAgICAgIi0t
Y29uZmlnLWZpbGUiLAorICAgICAgICAgICBoZWxwPSJDb25maWcgZmlsZSB0byB1c2UsIGRlZmF1
bHRzIHRvICUoZGVmYXVsdClzIiwKKyAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0X3ZhbHVlLAor
ICAgICAgICkKKworVGhlIGNvbmZ0ZXN0LnB5IHRoYXQgaXMgdXNpbmcgbXlwbHVnaW4gd291bGQg
c2ltcGx5IGRlZmluZSB0aGUgaG9vayBhcyBmb2xsb3dzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCisKKyAgICBkZWYgcHl0ZXN0X2NvbmZpZ19maWxlX2RlZmF1bHRfdmFsdWUoKToKKyAgICAg
ICAgcmV0dXJuICJjb25maWcueWFtbCIKKwogCiBPcHRpb25hbGx5IHVzaW5nIGhvb2tzIGZyb20g
M3JkIHBhcnR5IHBsdWdpbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNTc0LDE5ICs3NTMsMjMgQEAgaWYgeW91IGRlcGVuZCBvbiBhIHBsdWdpbiB0
aGF0IGlzIG5vdCBpbnN0YWxsZWQsIHZhbGlkYXRpb24gd2lsbCBmYWlsIGFuZAogdGhlIGVycm9y
IG1lc3NhZ2Ugd2lsbCBub3QgbWFrZSBtdWNoIHNlbnNlIHRvIHlvdXIgdXNlcnMuCiAKIE9uZSBh
cHByb2FjaCBpcyB0byBkZWZlciB0aGUgaG9vayBpbXBsZW1lbnRhdGlvbiB0byBhIG5ldyBwbHVn
aW4gaW5zdGVhZCBvZgotZGVjbGFyaW5nIHRoZSBob29rIGZ1bmN0aW9ucyBkaXJlY3RseSBpbiB5
b3VyIHBsdWdpbiBtb2R1bGUsIGZvciBleGFtcGxlOjoKK2RlY2xhcmluZyB0aGUgaG9vayBmdW5j
dGlvbnMgZGlyZWN0bHkgaW4geW91ciBwbHVnaW4gbW9kdWxlLCBmb3IgZXhhbXBsZToKKworLi4g
Y29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50cyBvZiBteXBsdWdpbi5weQogCi0g
ICAgY2xhc3MgRGVmZXJQbHVnaW4ob2JqZWN0KToKKworICAgIGNsYXNzIERlZmVyUGx1Z2luOgog
ICAgICAgICAiIiJTaW1wbGUgcGx1Z2luIHRvIGRlZmVyIHB5dGVzdC14ZGlzdCBob29rIGZ1bmN0
aW9ucy4iIiIKIAogICAgICAgICBkZWYgcHl0ZXN0X3Rlc3Rub2RlZG93bihzZWxmLCBub2RlLCBl
cnJvcik6CiAgICAgICAgICAgICAiIiJzdGFuZGFyZCB4ZGlzdCBob29rIGZ1bmN0aW9uLgogICAg
ICAgICAgICAgIiIiCiAKKwogICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAg
ICAgIGlmIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmhhc3BsdWdpbigneGRpc3QnKToKKyAgICAgICAg
aWYgY29uZmlnLnBsdWdpbm1hbmFnZXIuaGFzcGx1Z2luKCJ4ZGlzdCIpOgogICAgICAgICAgICAg
Y29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoRGVmZXJQbHVnaW4oKSkKIAogVGhpcyBoYXMg
dGhlIGFkZGVkIGJlbmVmaXQgb2YgYWxsb3dpbmcgeW91IHRvIGNvbmRpdGlvbmFsbHkgaW5zdGFs
bCBob29rcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3h1bml0X3NldHVwLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi94dW5pdF9zZXR1cC5yc3QKaW5kZXggN2E2YzA5OWY1NTkwLi44
YjMzNjZmNjJhZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi94dW5pdF9zZXR1cC5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3h1bml0X3NldHVwLnJzdApAQCAtMTIsNyArMTIs
NyBAQCBmaXh0dXJlcyAoc2V0dXAgYW5kIHRlYXJkb3duIHRlc3Qgc3RhdGUpIG9uIGEgcGVyLW1v
ZHVsZS9jbGFzcy9mdW5jdGlvbiBiYXNpcy4KIC4uIG5vdGU6OgogCiAgICAgV2hpbGUgdGhlc2Ug
c2V0dXAvdGVhcmRvd24gbWV0aG9kcyBhcmUgc2ltcGxlIGFuZCBmYW1pbGlhciB0byB0aG9zZQot
ICAgIGNvbWluZyBmcm9tIGEgYGB1bml0dGVzdGBgIG9yIG5vc2UgYGBiYWNrZ3JvdW5kYGAsIHlv
dSBtYXkgYWxzbyBjb25zaWRlcgorICAgIGNvbWluZyBmcm9tIGEgYGB1bml0dGVzdGBgIG9yIGBg
bm9zZWBgIGJhY2tncm91bmQsIHlvdSBtYXkgYWxzbyBjb25zaWRlcgogICAgIHVzaW5nIHB5dGVz
dCdzIG1vcmUgcG93ZXJmdWwgOnJlZjpgZml4dHVyZSBtZWNoYW5pc20KICAgICA8Zml4dHVyZT5g
IHdoaWNoIGxldmVyYWdlcyB0aGUgY29uY2VwdCBvZiBkZXBlbmRlbmN5IGluamVjdGlvbiwgYWxs
b3dpbmcKICAgICBmb3IgYSBtb3JlIG1vZHVsYXIgYW5kIG1vcmUgc2NhbGFibGUgYXBwcm9hY2gg
Zm9yIG1hbmFnaW5nIHRlc3Qgc3RhdGUsCkBAIC0yNywxMSArMjcsMTQgQEAgTW9kdWxlIGxldmVs
IHNldHVwL3RlYXJkb3duCiAKIElmIHlvdSBoYXZlIG11bHRpcGxlIHRlc3QgZnVuY3Rpb25zIGFu
ZCB0ZXN0IGNsYXNzZXMgaW4gYSBzaW5nbGUKIG1vZHVsZSB5b3UgY2FuIG9wdGlvbmFsbHkgaW1w
bGVtZW50IHRoZSBmb2xsb3dpbmcgZml4dHVyZSBtZXRob2RzCi13aGljaCB3aWxsIHVzdWFsbHkg
YmUgY2FsbGVkIG9uY2UgZm9yIGFsbCB0aGUgZnVuY3Rpb25zOjoKK3doaWNoIHdpbGwgdXN1YWxs
eSBiZSBjYWxsZWQgb25jZSBmb3IgYWxsIHRoZSBmdW5jdGlvbnM6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgIGRlZiBzZXR1cF9tb2R1bGUobW9kdWxlKToKICAgICAgICAgIiIiIHNl
dHVwIGFueSBzdGF0ZSBzcGVjaWZpYyB0byB0aGUgZXhlY3V0aW9uIG9mIHRoZSBnaXZlbiBtb2R1
bGUuIiIiCiAKKwogICAgIGRlZiB0ZWFyZG93bl9tb2R1bGUobW9kdWxlKToKICAgICAgICAgIiIi
IHRlYXJkb3duIGFueSBzdGF0ZSB0aGF0IHdhcyBwcmV2aW91c2x5IHNldHVwIHdpdGggYSBzZXR1
cF9tb2R1bGUKICAgICAgICAgbWV0aG9kLgpAQCAtNDMsNyArNDYsOSBAQCBDbGFzcyBsZXZlbCBz
ZXR1cC90ZWFyZG93bgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTaW1p
bGFybHksIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgY2FsbGVkIGF0IGNsYXNzIGxldmVsIGJl
Zm9yZQotYW5kIGFmdGVyIGFsbCB0ZXN0IG1ldGhvZHMgb2YgdGhlIGNsYXNzIGFyZSBjYWxsZWQ6
OgorYW5kIGFmdGVyIGFsbCB0ZXN0IG1ldGhvZHMgb2YgdGhlIGNsYXNzIGFyZSBjYWxsZWQ6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1
cF9jbGFzcyhjbHMpOgpAQCAtNTEsNiArNTYsNyBAQCBhbmQgYWZ0ZXIgYWxsIHRlc3QgbWV0aG9k
cyBvZiB0aGUgY2xhc3MgYXJlIGNhbGxlZDo6CiAgICAgICAgIHVzdWFsbHkgY29udGFpbnMgdGVz
dHMpLgogICAgICAgICAiIiIKIAorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJkb3du
X2NsYXNzKGNscyk6CiAgICAgICAgICIiIiB0ZWFyZG93biBhbnkgc3RhdGUgdGhhdCB3YXMgcHJl
dmlvdXNseSBzZXR1cCB3aXRoIGEgY2FsbCB0bwpAQCAtNjAsMTMgKzY2LDE2IEBAIGFuZCBhZnRl
ciBhbGwgdGVzdCBtZXRob2RzIG9mIHRoZSBjbGFzcyBhcmUgY2FsbGVkOjoKIE1ldGhvZCBhbmQg
ZnVuY3Rpb24gbGV2ZWwgc2V0dXAvdGVhcmRvd24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNpbWlsYXJseSwgdGhlIGZvbGxvd2luZyBtZXRob2Rz
IGFyZSBjYWxsZWQgYXJvdW5kIGVhY2ggbWV0aG9kIGludm9jYXRpb246OgorU2ltaWxhcmx5LCB0
aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGNhbGxlZCBhcm91bmQgZWFjaCBtZXRob2QgaW52b2Nh
dGlvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgZGVmIHNldHVwX21ldGhvZChz
ZWxmLCBtZXRob2QpOgogICAgICAgICAiIiIgc2V0dXAgYW55IHN0YXRlIHRpZWQgdG8gdGhlIGV4
ZWN1dGlvbiBvZiB0aGUgZ2l2ZW4gbWV0aG9kIGluIGEKICAgICAgICAgY2xhc3MuICBzZXR1cF9t
ZXRob2QgaXMgaW52b2tlZCBmb3IgZXZlcnkgdGVzdCBtZXRob2Qgb2YgYSBjbGFzcy4KICAgICAg
ICAgIiIiCiAKKwogICAgIGRlZiB0ZWFyZG93bl9tZXRob2Qoc2VsZiwgbWV0aG9kKToKICAgICAg
ICAgIiIiIHRlYXJkb3duIGFueSBzdGF0ZSB0aGF0IHdhcyBwcmV2aW91c2x5IHNldHVwIHdpdGgg
YSBzZXR1cF9tZXRob2QKICAgICAgICAgY2FsbC4KQEAgLTc1LDEzICs4NCwxNiBAQCBTaW1pbGFy
bHksIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgY2FsbGVkIGFyb3VuZCBlYWNoIG1ldGhvZCBp
bnZvY2F0aW9uOjoKIEFzIG9mIHB5dGVzdC0zLjAsIHRoZSBgYG1ldGhvZGBgIHBhcmFtZXRlciBp
cyBvcHRpb25hbC4KIAogSWYgeW91IHdvdWxkIHJhdGhlciBkZWZpbmUgdGVzdCBmdW5jdGlvbnMg
ZGlyZWN0bHkgYXQgbW9kdWxlIGxldmVsCi15b3UgY2FuIGFsc28gdXNlIHRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb25zIHRvIGltcGxlbWVudCBmaXh0dXJlczo6Cit5b3UgY2FuIGFsc28gdXNlIHRoZSBm
b2xsb3dpbmcgZnVuY3Rpb25zIHRvIGltcGxlbWVudCBmaXh0dXJlczoKKworLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCiAgICAgZGVmIHNldHVwX2Z1bmN0aW9uKGZ1bmN0aW9uKToKICAgICAgICAg
IiIiIHNldHVwIGFueSBzdGF0ZSB0aWVkIHRvIHRoZSBleGVjdXRpb24gb2YgdGhlIGdpdmVuIGZ1
bmN0aW9uLgogICAgICAgICBJbnZva2VkIGZvciBldmVyeSB0ZXN0IGZ1bmN0aW9uIGluIHRoZSBt
b2R1bGUuCiAgICAgICAgICIiIgogCisKICAgICBkZWYgdGVhcmRvd25fZnVuY3Rpb24oZnVuY3Rp
b24pOgogICAgICAgICAiIiIgdGVhcmRvd24gYW55IHN0YXRlIHRoYXQgd2FzIHByZXZpb3VzbHkg
c2V0dXAgd2l0aCBhIHNldHVwX2Z1bmN0aW9uCiAgICAgICAgIGNhbGwuCkBAIC05Myw3ICsxMDUs
MTUgQEAgUmVtYXJrczoKIAogKiBJdCBpcyBwb3NzaWJsZSBmb3Igc2V0dXAvdGVhcmRvd24gcGFp
cnMgdG8gYmUgaW52b2tlZCBtdWx0aXBsZSB0aW1lcwogICBwZXIgdGVzdGluZyBwcm9jZXNzLgor
CiAqIHRlYXJkb3duIGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZCBpZiB0aGUgY29ycmVzcG9uZGlu
ZyBzZXR1cCBmdW5jdGlvbiBleGlzdGVkCiAgIGFuZCBmYWlsZWQvd2FzIHNraXBwZWQuCiAKKyog
UHJpb3IgdG8gcHl0ZXN0LTQuMiwgeHVuaXQtc3R5bGUgZnVuY3Rpb25zIGRpZCBub3Qgb2JleSB0
aGUgc2NvcGUgcnVsZXMgb2YgZml4dHVyZXMsIHNvCisgIGl0IHdhcyBwb3NzaWJsZSwgZm9yIGV4
YW1wbGUsIGZvciBhIGBgc2V0dXBfbWV0aG9kYGAgdG8gYmUgY2FsbGVkIGJlZm9yZSBhCisgIHNl
c3Npb24tc2NvcGVkIGF1dG91c2UgZml4dHVyZS4KKworICBOb3cgdGhlIHh1bml0LXN0eWxlIGZ1
bmN0aW9ucyBhcmUgaW50ZWdyYXRlZCB3aXRoIHRoZSBmaXh0dXJlIG1lY2hhbmlzbSBhbmQgb2Jl
eSB0aGUgcHJvcGVyCisgIHNjb3BlIHJ1bGVzIG9mIGZpeHR1cmVzIGludm9sdmVkIGluIHRoZSBj
YWxsLgorCiAuLiBfYHVuaXR0ZXN0LnB5IG1vZHVsZWA6IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcv
bGlicmFyeS91bml0dGVzdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4veWll
bGRmaXh0dXJlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi95aWVsZGZpeHR1cmUucnN0CmluZGV4
IDZmZDFlZGFjMmY1ZS4uNDc1OTBmOWRiOTZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4veWllbGRmaXh0dXJlLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4veWllbGRmaXh0dXJl
LnJzdApAQCAtNSw5ICs1LDkgQEAKICJ5aWVsZF9maXh0dXJlIiBmdW5jdGlvbnMKIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci0uLiBkZXByZWNhdGVkOjogMy4wCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuNAorCisKIAogLi4g
aW1wb3J0YW50OjoKICAgICBTaW5jZSBweXRlc3QtMy4wLCBmaXh0dXJlcyB1c2luZyB0aGUgbm9y
bWFsIGBgZml4dHVyZWBgIGRlY29yYXRvciBjYW4gdXNlIGEgYGB5aWVsZGBgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9leHRyYS9nZXRfaXNzdWVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvZ2V0
X2lzc3Vlcy5weQppbmRleCBjMDI2OTcyYjE0NWQuLjRhYWEzYzNlYzMxYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZXh0cmEvZ2V0X2lzc3Vlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9leHRyYS9n
ZXRfaXNzdWVzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGpzb24KLWltcG9ydCBweQorZnJv
bSBwYXRobGliIGltcG9ydCBQYXRoCisKIGltcG9ydCByZXF1ZXN0cwogCiBpc3N1ZXNfdXJsID0g
Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzIgpA
QCAtMzAsMTIgKzMxLDEyIEBAIGRlZiBnZXRfaXNzdWVzKCk6CiAKIAogZGVmIG1haW4oYXJncyk6
Ci0gICAgY2FjaGVmaWxlID0gcHkucGF0aC5sb2NhbChhcmdzLmNhY2hlKQorICAgIGNhY2hlZmls
ZSA9IFBhdGgoYXJncy5jYWNoZSkKICAgICBpZiBub3QgY2FjaGVmaWxlLmV4aXN0cygpIG9yIGFy
Z3MucmVmcmVzaDoKICAgICAgICAgaXNzdWVzID0gZ2V0X2lzc3VlcygpCi0gICAgICAgIGNhY2hl
ZmlsZS53cml0ZShqc29uLmR1bXBzKGlzc3VlcykpCisgICAgICAgIGNhY2hlZmlsZS53cml0ZV90
ZXh0KGpzb24uZHVtcHMoaXNzdWVzKSwgInV0Zi04IikKICAgICBlbHNlOgotICAgICAgICBpc3N1
ZXMgPSBqc29uLmxvYWRzKGNhY2hlZmlsZS5yZWFkKCkpCisgICAgICAgIGlzc3VlcyA9IGpzb24u
bG9hZHMoY2FjaGVmaWxlLnJlYWRfdGV4dCgidXRmLTgiKSkKIAogICAgIG9wZW5faXNzdWVzID0g
W3ggZm9yIHggaW4gaXNzdWVzIGlmIHhbInN0YXRlIl0gPT0gIm9wZW4iXQogCkBAIC00NCw3ICs0
NSw3IEBAIGRlZiBtYWluKGFyZ3MpOgogCiAKIGRlZiBfZ2V0X2tpbmQoaXNzdWUpOgotICAgIGxh
YmVscyA9IFtsWyJuYW1lIl0gZm9yIGwgaW4gaXNzdWVbImxhYmVscyJdXQorICAgIGxhYmVscyA9
IFtsYWJlbFsibmFtZSJdIGZvciBsYWJlbCBpbiBpc3N1ZVsibGFiZWxzIl1dCiAgICAgZm9yIGtl
eSBpbiAoImJ1ZyIsICJlbmhhbmNlbWVudCIsICJwcm9wb3NhbCIpOgogICAgICAgICBpZiBrZXkg
aW4gbGFiZWxzOgogICAgICAgICAgICAgcmV0dXJuIGtleQpAQCAtNjQsOSArNjUsOSBAQCBkZWYg
cmVwb3J0KGlzc3Vlcyk6CiAgICAgICAgIHByaW50KHRpdGxlKQogICAgICAgICAjIHByaW50KCkK
ICAgICAgICAgIyBsaW5lcyA9IGJvZHkuc3BsaXQoIlxuIikKLSAgICAgICAgIyBwcmludCAoIlxu
Ii5qb2luKGxpbmVzWzozXSkpCisgICAgICAgICMgcHJpbnQoIlxuIi5qb2luKGxpbmVzWzozXSkp
CiAgICAgICAgICMgaWYgbGVuKGxpbmVzKSA+IDMgb3IgbGVuKGJvZHkpID4gMjQwOgotICAgICAg
ICAjICAgIHByaW50ICgiLi4uIikKKyAgICAgICAgIyAgICBwcmludCgiLi4uIikKICAgICBwcmlu
dCgiXG5cbkZvdW5kICVzIG9wZW4gaXNzdWVzIiAlIGxlbihpc3N1ZXMpKQogCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2V4dHJhL3NldHVwLXB5LnRlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9leHRyYS9zZXR1cC1weS50ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1ZGM4YjgzNjAxN2MuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9leHRyYS9zZXR1cC1weS50ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvc2V0dXAtcHkudGVzdC9z
ZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9leHRyYS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGUxNWQzZmViMTYwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9leHRyYS9nZXRfaXNzdWVzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9w
eXByb2plY3QudG9tbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3B5cHJvamVjdC50b21sCmluZGV4IDY1ZTZiZjU5
YmYxYy4uYWVlNDY3ZmNmMTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9weXByb2plY3QudG9t
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9weXByb2plY3QudG9tbApAQCAtMSwyMCArMSw3NCBAQAogW2J1
aWxkLXN5c3RlbV0KIHJlcXVpcmVzID0gWwotICAic2V0dXB0b29scyIsCi0gICJzZXR1cHRvb2xz
LXNjbSIsCisgICMgc3luYyB3aXRoIHNldHVwLnB5IHVudGlsIHdlIGRpc2NhcmQgbm9uLXBlcC01
MTcvNTE4CisgICJzZXR1cHRvb2xzPj00Mi4wIiwKKyAgInNldHVwdG9vbHMtc2NtW3RvbWxdPj0z
LjQiLAogICAid2hlZWwiLAogXQorYnVpbGQtYmFja2VuZCA9ICJzZXR1cHRvb2xzLmJ1aWxkX21l
dGEiCisKK1t0b29sLnNldHVwdG9vbHNfc2NtXQord3JpdGVfdG8gPSAic3JjL19weXRlc3QvX3Zl
cnNpb24ucHkiCisKK1t0b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KK21pbnZlcnNpb24gPSAiMi4w
IgorYWRkb3B0cyA9ICItcmZFWCAtcCBweXRlc3RlciAtLXN0cmljdC1tYXJrZXJzIgorcHl0aG9u
X2ZpbGVzID0gWyJ0ZXN0XyoucHkiLCAiKl90ZXN0LnB5IiwgInRlc3RpbmcvcHl0aG9uLyoucHki
XQorcHl0aG9uX2NsYXNzZXMgPSBbIlRlc3QiLCAiQWNjZXB0YW5jZSJdCitweXRob25fZnVuY3Rp
b25zID0gWyJ0ZXN0Il0KKyMgTk9URTogImRvYyIgaXMgbm90IGluY2x1ZGVkIGhlcmUsIGJ1dCBn
ZXRzIHRlc3RlZCBleHBsaWNpdGx5IHZpYSAiZG9jdGVzdGluZyIuCit0ZXN0cGF0aHMgPSBbInRl
c3RpbmciXQorbm9yZWN1cnNlZGlycyA9IFsidGVzdGluZy9leGFtcGxlX3NjcmlwdHMiXQoreGZh
aWxfc3RyaWN0ID0gdHJ1ZQorZmlsdGVyd2FybmluZ3MgPSBbCisgICAgImVycm9yIiwKKyAgICAi
ZGVmYXVsdDpVc2luZyBvciBpbXBvcnRpbmcgdGhlIEFCQ3M6RGVwcmVjYXRpb25XYXJuaW5nOnVu
aXR0ZXN0Mi4qIiwKKyAgICAiZGVmYXVsdDp0aGUgaW1wIG1vZHVsZSBpcyBkZXByZWNhdGVkIGlu
IGZhdm91ciBvZiBpbXBvcnRsaWI6RGVwcmVjYXRpb25XYXJuaW5nOm5vc2UuKiIsCisgICAgImln
bm9yZTpNb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBzbyBjYW5ub3QgYmUgcmV3cml0dGVuOnB5dGVz
dC5QeXRlc3RXYXJuaW5nIiwKKyAgICAjIHByb2R1Y2VkIGJ5IHB5dGhvbjMuNi9zaXRlLnB5IGl0
c2VsZiAoMy42Ljcgb24gVHJhdmlzLCBjb3VsZCBub3QgdHJpZ2dlciBpdCB3aXRoIDMuNi44KS4i
CisgICAgImlnbm9yZTouKlUuKm1vZGUgaXMgZGVwcmVjYXRlZDpEZXByZWNhdGlvbldhcm5pbmc6
KD8hKHB5dGVzdHxfcHl0ZXN0KSkiLAorICAgICMgcHJvZHVjZWQgYnkgcHl0ZXN0LXhkaXN0Cisg
ICAgImlnbm9yZTouKnR5cGUgYXJndW1lbnQgdG8gYWRkb3B0aW9uLio6RGVwcmVjYXRpb25XYXJu
aW5nIiwKKyAgICAjIHByb2R1Y2VkIGJ5IHB5dGhvbiA+PTMuNSBvbiBleGVjbmV0IChweXRlc3Qt
eGRpc3QpCisgICAgImlnbm9yZTouKmluc3BlY3QuZ2V0YXJnc3BlYy4qZGVwcmVjYXRlZCwgdXNl
IGluc3BlY3Quc2lnbmF0dXJlLio6RGVwcmVjYXRpb25XYXJuaW5nIiwKKyAgICAjIHB5dGVzdCdz
IG93biBmdXR1cmV3YXJuaW5ncworICAgICJpZ25vcmU6OnB5dGVzdC5QeXRlc3RFeHBlcmltZW50
YWxBcGlXYXJuaW5nIiwKKyAgICAjIERvIG5vdCBjYXVzZSBTeW50YXhFcnJvciBmb3IgaW52YWxp
ZCBlc2NhcGUgc2VxdWVuY2VzIGluIHB5MzcuCisgICAgIyBUaG9zZSBhcmUgY2F1Z2h0L2hhbmRs
ZWQgYnkgcHl1cGdyYWRlLCBhbmQgbm90IGVhc3kgdG8gZmlsdGVyIHdpdGggdGhlCisgICAgIyBt
b2R1bGUgYmVpbmcgdGhlIGZpbGVuYW1lICh3aXRoIC5weSByZW1vdmVkKS4KKyAgICAiZGVmYXVs
dDppbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZTpEZXByZWNhdGlvbldhcm5pbmciLAorICAgICMgaWdu
b3JlIHVzZSBvZiB1bnJlZ2lzdGVyZWQgbWFya3MsIGJlY2F1c2Ugd2UgdXNlIG1hbnkgdG8gdGVz
dCB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAiaWdub3JlOjpfcHl0ZXN0Lndhcm5pbmdfdHlwZXMu
UHl0ZXN0VW5rbm93bk1hcmtXYXJuaW5nIiwKK10KK3B5dGVzdGVyX2V4YW1wbGVfZGlyID0gInRl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzIgorbWFya2VycyA9IFsKKyAgICAjIGR1bW15IG1hcmtlcnMg
Zm9yIHRlc3RpbmcKKyAgICAiZm9vIiwKKyAgICAiYmFyIiwKKyAgICAiYmF6IiwKKyAgICAjIGNv
bmZ0ZXN0LnB5IHJlb3JkZXJzIHRlc3RzIG1vdmluZyBzbG93IG9uZXMgdG8gdGhlIGVuZCBvZiB0
aGUgbGlzdAorICAgICJzbG93IiwKKyAgICAjIGV4cGVyaW1lbnRhbCBtYXJrIGZvciBhbGwgdGVz
dHMgdXNpbmcgcGV4cGVjdAorICAgICJ1c2VzX3BleHBlY3QiLAorXQorCiAKIFt0b29sLnRvd25j
cmllcl0KIHBhY2thZ2UgPSAicHl0ZXN0IgogcGFja2FnZV9kaXIgPSAic3JjIgotZmlsZW5hbWUg
PSAiQ0hBTkdFTE9HLnJzdCIKK2ZpbGVuYW1lID0gImRvYy9lbi9jaGFuZ2Vsb2cucnN0IgogZGly
ZWN0b3J5ID0gImNoYW5nZWxvZy8iCit0aXRsZV9mb3JtYXQgPSAicHl0ZXN0IHt2ZXJzaW9ufSAo
e3Byb2plY3RfZGF0ZX0pIgogdGVtcGxhdGUgPSAiY2hhbmdlbG9nL190ZW1wbGF0ZS5yc3QiCiAK
ICAgW1t0b29sLnRvd25jcmllci50eXBlXV0KLSAgZGlyZWN0b3J5ID0gInJlbW92YWwiCi0gIG5h
bWUgPSAiRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscyIKKyAgZGlyZWN0b3J5ID0gImJyZWFraW5n
IgorICBuYW1lID0gIkJyZWFraW5nIENoYW5nZXMiCisgIHNob3djb250ZW50ID0gdHJ1ZQorCisg
IFtbdG9vbC50b3duY3JpZXIudHlwZV1dCisgIGRpcmVjdG9yeSA9ICJkZXByZWNhdGlvbiIKKyAg
bmFtZSA9ICJEZXByZWNhdGlvbnMiCiAgIHNob3djb250ZW50ID0gdHJ1ZQogCiAgIFtbdG9vbC50
b3duY3JpZXIudHlwZV1dCkBAIC0yMiw2ICs3NiwxMSBAQCB0ZW1wbGF0ZSA9ICJjaGFuZ2Vsb2cv
X3RlbXBsYXRlLnJzdCIKICAgbmFtZSA9ICJGZWF0dXJlcyIKICAgc2hvd2NvbnRlbnQgPSB0cnVl
CiAKKyAgW1t0b29sLnRvd25jcmllci50eXBlXV0KKyAgZGlyZWN0b3J5ID0gImltcHJvdmVtZW50
IgorICBuYW1lID0gIkltcHJvdmVtZW50cyIKKyAgc2hvd2NvbnRlbnQgPSB0cnVlCisKICAgW1t0
b29sLnRvd25jcmllci50eXBlXV0KICAgZGlyZWN0b3J5ID0gImJ1Z2ZpeCIKICAgbmFtZSA9ICJC
dWcgRml4ZXMiCkBAIC00MSwzICsxMDAsNiBAQCB0ZW1wbGF0ZSA9ICJjaGFuZ2Vsb2cvX3RlbXBs
YXRlLnJzdCIKICAgZGlyZWN0b3J5ID0gInRyaXZpYWwiCiAgIG5hbWUgPSAiVHJpdmlhbC9JbnRl
cm5hbCBDaGFuZ2VzIgogICBzaG93Y29udGVudCA9IHRydWUKKworW3Rvb2wuYmxhY2tdCit0YXJn
ZXQtdmVyc2lvbiA9IFsncHkzNSddCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL2Fw
cGVuZF9jb2RlY292X3Rva2VuLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9hcHBlbmRfY29kZWNv
dl90b2tlbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWNi
MGZhNTFhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvYXBwZW5kX2Nv
ZGVjb3ZfdG9rZW4ucHkKQEAgLTAsMCArMSwzNiBAQAorIiIiCitBcHBlbmRzIHRoZSBjb2RlY292
IHRva2VuIHRvIHRoZSAnY29kZWNvdi55bWwnIGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlIHJlcG9z
aXRvcnkuCisKK1RoaXMgaXMgZG9uZSBieSBDSSBkdXJpbmcgUFJzIGFuZCBidWlsZHMgb24gdGhl
IHB5dGVzdC1kZXYgcmVwb3NpdG9yeSBzbyB3ZSBjYW4gdXBsb2FkIGNvdmVyYWdlLCBhdCBsZWFz
dAordW50aWwgY29kZWNvdiBncm93cyBzb21lIG5hdGl2ZSBpbnRlZ3JhdGlvbiBsaWtlIGl0IGhh
cyB3aXRoIFRyYXZpcyBhbmQgQXBwVmV5b3IuCisKK1NlZSBkaXNjdXNzaW9uIGluIGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzY0NDEgZm9yIG1vcmUgaW5mb3JtYXRp
b24uCisiIiIKK2ltcG9ydCBvcy5wYXRoCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKKwor
CitkZWYgbWFpbigpOgorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQor
ICAgIGNvdl9maWxlID0gb3MucGF0aC5qb2luKHRoaXNfZGlyLCAiLi4iLCAiY29kZWNvdi55bWwi
KQorCisgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKGNvdl9maWxlKSwgIntjb3ZfZmlsZX0gZG9l
cyBub3QgZXhpc3QiLmZvcm1hdCgKKyAgICAgICAgY292X2ZpbGU9Y292X2ZpbGUKKyAgICApCisK
KyAgICB3aXRoIG9wZW4oY292X2ZpbGUsICJhIikgYXMgZjoKKyAgICAgICAgIyB0b2tlbiBmcm9t
OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvcHl0ZXN0LWRldi9weXRlc3Qvc2V0dGluZ3MKKyAgICAg
ICAgIyB1c2Ugc2FtZSBVUkwgdG8gcmVnZW5lcmF0ZSBpdCBpZiBuZWVkZWQKKyAgICAgICAgdGV4
dCA9IGRlZGVudCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY29kZWNvdjoKKyAgICAg
ICAgICAgICAgdG9rZW46ICIxZWNhM2IxZi0zMWEyLTRmYjgtYThjMy0xMzhiNDQxYjUwYTciCisg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGYud3JpdGUodGV4dCkKKworICAgIHByaW50
KCJUb2tlbiB1cGRhdGVkOiIsIGNvdl9maWxlKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL2NhbGwtdG94
LmJhdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvY2FsbC10b3guYmF0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NmZiMjVjMWRmMWQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zY3JpcHRzL2NhbGwtdG94LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotUkVN
IHNraXAgImNvdmVyYWxscyIgcnVuIGluIFBScyBvciBmb3JrcwotaWYgIiVUT1hFTlYlIiA9PSAi
Y292ZXJhbGxzIiAoCi0gICAgaWYgbm90IGRlZmluZWQgQ09WRVJBTExTX1JFUE9fVE9LRU4gKAot
ICAgICAgICBlY2hvIHNraXBwaW5nIGNvdmVyYWxscyBydW4gYmVjYXVzZSBDT1ZFUkFMTFNfUkVQ
T19UT0tFTiBpcyBub3QgZGVmaW5lZAotICAgICAgICBleGl0IC9iIDAKLSAgICApCi0pCi1DOlxQ
eXRob24zNlxweXRob24gLW0gdG94CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL2lu
c3RhbGwtcHlweS5iYXQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL2luc3RhbGwtcHlweS5iYXQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMTJlYTQ2YWNhNC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvaW5zdGFsbC1weXB5LmJhdAorKysgL2Rldi9udWxsCkBA
IC0xLDYgKzAsMCBAQAotUkVNIGluc3RhbGwgcHlweSB1c2luZyBjaG9jbwotUkVNIHJlZGlyZWN0
IHRvIGEgZmlsZSBiZWNhdXNlIGNob2NvIGluc3RhbGwgcHl0aG9uLnB5cHkgaXMgdG9vIG5vaXN5
LiBJZiB0aGUgY29tbWFuZCBmYWlscywgd3JpdGUgb3V0cHV0IHRvIGNvbnNvbGUKLWNob2NvIGlu
c3RhbGwgcHl0aG9uLnB5cHkgPiBweXB5LWluc3QubG9nIDI+JjEgfHwgKHR5cGUgcHlweS1pbnN0
LmxvZyAmIGV4aXQgL2IgMSkKLXNldCBQQVRIPUM6XHRvb2xzXHB5cHlccHlweTslUEFUSCUgIyBz
byB0b3ggY2FuIGZpbmQgcHlweQotZWNobyBQeVB5IGluc3RhbGxlZAotcHlweSAtLXZlcnNpb24K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcHVibGlzaC1naC1yZWxlYXNlLW5vdGVz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9wdWJsaXNoLWdoLXJlbGVhc2Utbm90ZXMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNTMxYjAyMjFiOTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3B1Ymxpc2gtZ2gtcmVsZWFzZS1ub3Rl
cy5weQpAQCAtMCwwICsxLDEwNSBAQAorIiIiCitTY3JpcHQgdXNlZCB0byBwdWJsaXNoIEdpdEh1
YiByZWxlYXNlIG5vdGVzIGV4dHJhY3RlZCBmcm9tIENIQU5HRUxPRy5yc3QuCisKK1RoaXMgc2Ny
aXB0IGlzIG1lYW50IHRvIGJlIGV4ZWN1dGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBkZXBsb3ltZW50
IGluIFRyYXZpcy4KKworVXNlcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczoK
KworKiBHSVRfVEFHOiB0aGUgbmFtZSBvZiB0aGUgdGFnIG9mIHRoZSBjdXJyZW50IGNvbW1pdC4K
KyogR0hfUkVMRUFTRV9OT1RFU19UT0tFTjogYSBwZXJzb25hbCBhY2Nlc3MgdG9rZW4gd2l0aCAn
cmVwbycgcGVybWlzc2lvbnMuCisKKyAgQ3JlYXRlIG9uZSBhdDoKKworICAgIGh0dHBzOi8vZ2l0
aHViLmNvbS9zZXR0aW5ncy90b2tlbnMKKworICBJdCBzaG91bGQgYmUgZW5jcnlwdGVkIHVzaW5n
OgorCisgICAgJHRyYXZpcyBlbmNyeXB0IEdIX1JFTEVBU0VfTk9URVNfVE9LRU49PHRva2VuPiAt
ciBweXRlc3QtZGV2L3B5dGVzdAorCisgIEFuZCB0aGUgY29udGVudHMgcGFzdGVkIGluIHRoZSBg
YGRlcGxveS5lbnYuc2VjdXJlYGAgc2VjdGlvbiBpbiB0aGUgYGB0cmF2aXMueW1sYGAgZmlsZS4K
KworVGhlIHNjcmlwdCBhbHNvIHJlcXVpcmVzIGBgcGFuZG9jYGAgdG8gYmUgcHJldmlvdXNseSBp
bnN0YWxsZWQgaW4gdGhlIHN5c3RlbS4KKworUmVxdWlyZXMgUHl0aG9uMy42Ky4KKyIiIgoraW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAor
CitpbXBvcnQgZ2l0aHViMworaW1wb3J0IHB5cGFuZG9jCisKKworZGVmIHB1Ymxpc2hfZ2l0aHVi
X3JlbGVhc2Uoc2x1ZywgdG9rZW4sIHRhZ19uYW1lLCBib2R5KToKKyAgICBnaXRodWIgPSBnaXRo
dWIzLmxvZ2luKHRva2VuPXRva2VuKQorICAgIG93bmVyLCByZXBvID0gc2x1Zy5zcGxpdCgiLyIp
CisgICAgcmVwbyA9IGdpdGh1Yi5yZXBvc2l0b3J5KG93bmVyLCByZXBvKQorICAgIHJldHVybiBy
ZXBvLmNyZWF0ZV9yZWxlYXNlKHRhZ19uYW1lPXRhZ19uYW1lLCBib2R5PWJvZHkpCisKKworZGVm
IHBhcnNlX2NoYW5nZWxvZyh0YWdfbmFtZSk6CisgICAgcCA9IFBhdGgoX19maWxlX18pLnBhcmVu
dC5wYXJlbnQgLyAiZG9jL2VuL2NoYW5nZWxvZy5yc3QiCisgICAgY2hhbmdlbG9nX2xpbmVzID0g
cC5yZWFkX3RleHQoZW5jb2Rpbmc9IlVURi04Iikuc3BsaXRsaW5lcygpCisKKyAgICB0aXRsZV9y
ZWdleCA9IHJlLmNvbXBpbGUociJweXRlc3QgKFxkXC5cZCtcLlxkKykgXChcZHs0fS1cZHsyfS1c
ZHsyfVwpIikKKyAgICBjb25zdW1pbmdfdmVyc2lvbiA9IEZhbHNlCisgICAgdmVyc2lvbl9saW5l
cyA9IFtdCisgICAgZm9yIGxpbmUgaW4gY2hhbmdlbG9nX2xpbmVzOgorICAgICAgICBtID0gdGl0
bGVfcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbToKKyAgICAgICAgICAgICMgZm91bmQg
dGhlIHZlcnNpb24gd2Ugd2FudDogc3RhcnQgdG8gY29uc3VtZSBsaW5lcyB1bnRpbCB3ZSBmaW5k
IHRoZSBuZXh0IHZlcnNpb24gdGl0bGUKKyAgICAgICAgICAgIGlmIG0uZ3JvdXAoMSkgPT0gdGFn
X25hbWU6CisgICAgICAgICAgICAgICAgY29uc3VtaW5nX3ZlcnNpb24gPSBUcnVlCisgICAgICAg
ICAgICAjIGZvdW5kIGEgbmV3IHZlcnNpb24gdGl0bGUgd2hpbGUgcGFyc2luZyB0aGUgdmVyc2lv
biB3ZSB3YW50OiBicmVhayBvdXQKKyAgICAgICAgICAgIGVsaWYgY29uc3VtaW5nX3ZlcnNpb246
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgY29uc3VtaW5nX3ZlcnNpb246Cisg
ICAgICAgICAgICB2ZXJzaW9uX2xpbmVzLmFwcGVuZChsaW5lKQorCisgICAgcmV0dXJuICJcbiIu
am9pbih2ZXJzaW9uX2xpbmVzKQorCisKK2RlZiBjb252ZXJ0X3JzdF90b19tZCh0ZXh0KToKKyAg
ICByZXR1cm4gcHlwYW5kb2MuY29udmVydF90ZXh0KAorICAgICAgICB0ZXh0LCAibWQiLCBmb3Jt
YXQ9InJzdCIsIGV4dHJhX2FyZ3M9WyItLXdyYXA9cHJlc2VydmUiXQorICAgICkKKworCitkZWYg
bWFpbihhcmd2KToKKyAgICBpZiBsZW4oYXJndikgPiAxOgorICAgICAgICB0YWdfbmFtZSA9IGFy
Z3ZbMV0KKyAgICBlbHNlOgorICAgICAgICB0YWdfbmFtZSA9IG9zLmVudmlyb24uZ2V0KCJHSVRI
VUJfUkVGIikKKyAgICAgICAgaWYgbm90IHRhZ19uYW1lOgorICAgICAgICAgICAgcHJpbnQoInRh
Z19uYW1lIG5vdCBnaXZlbiBhbmQgJEdJVEhVQl9SRUYgbm90IHNldCIsIGZpbGU9c3lzLnN0ZGVy
cikKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGlmIHRhZ19uYW1lLnN0YXJ0c3dpdGgo
InJlZnMvdGFncy8iKToKKyAgICAgICAgICAgIHRhZ19uYW1lID0gdGFnX25hbWVbbGVuKCJyZWZz
L3RhZ3MvIikgOl0KKworICAgIHRva2VuID0gb3MuZW52aXJvbi5nZXQoIkdIX1JFTEVBU0VfTk9U
RVNfVE9LRU4iKQorICAgIGlmIG5vdCB0b2tlbjoKKyAgICAgICAgcHJpbnQoIkdIX1JFTEVBU0Vf
Tk9URVNfVE9LRU4gbm90IHNldCIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcmV0dXJuIDEK
KworICAgIHNsdWcgPSBvcy5lbnZpcm9uLmdldCgiR0lUSFVCX1JFUE9TSVRPUlkiKQorICAgIGlm
IG5vdCBzbHVnOgorICAgICAgICBwcmludCgiR0lUSFVCX1JFUE9TSVRPUlkgbm90IHNldCIsIGZp
bGU9c3lzLnN0ZGVycikKKyAgICAgICAgcmV0dXJuIDEKKworICAgIHJzdF9ib2R5ID0gcGFyc2Vf
Y2hhbmdlbG9nKHRhZ19uYW1lKQorICAgIG1kX2JvZHkgPSBjb252ZXJ0X3JzdF90b19tZChyc3Rf
Ym9keSkKKyAgICBpZiBub3QgcHVibGlzaF9naXRodWJfcmVsZWFzZShzbHVnLCB0b2tlbiwgdGFn
X25hbWUsIG1kX2JvZHkpOgorICAgICAgICBwcmludCgiQ291bGQgbm90IHB1Ymxpc2ggcmVsZWFz
ZSBub3RlczoiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHByaW50KG1kX2JvZHksIGZpbGU9
c3lzLnN0ZGVycikKKyAgICAgICAgcmV0dXJuIDUKKworICAgIHByaW50KCkKKyAgICBwcmludChm
IlJlbGVhc2Ugbm90ZXMgZm9yIHt0YWdfbmFtZX0gcHVibGlzaGVkIHN1Y2Nlc3NmdWxseToiKQor
ICAgIHByaW50KGYiaHR0cHM6Ly9naXRodWIuY29tL3tzbHVnfS9yZWxlYXNlcy90YWcve3RhZ19u
YW1lfSIpCisgICAgcHJpbnQoKQorICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS1vbi1jb21tZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0
cy9yZWxlYXNlLW9uLWNvbW1lbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi43YzY2MjExM2UwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3Jp
cHRzL3JlbGVhc2Utb24tY29tbWVudC5weQpAQCAtMCwwICsxLDI1NCBAQAorIiIiCitUaGlzIHNj
cmlwdCBpcyBwYXJ0IG9mIHRoZSBweXRlc3QgcmVsZWFzZSBwcm9jZXNzIHdoaWNoIGlzIHRyaWdn
ZXJlZCBieSBjb21tZW50cworaW4gaXNzdWVzLgorCitUaGlzIHNjcmlwdCBpcyBzdGFydGVkIGJ5
IHRoZSBgcmVsZWFzZS1vbi1jb21tZW50LnltbGAgd29ya2Zsb3csIHdoaWNoIGFsd2F5cyBleGVj
dXRlcyBvbgorYG1hc3RlcmAgYW5kIGlzIHRyaWdnZXJlZCBieSB0d28gY29tbWVudCByZWxhdGVk
IGV2ZW50czoKKworKiBodHRwczovL2hlbHAuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5j
ZS9ldmVudHMtdGhhdC10cmlnZ2VyLXdvcmtmbG93cyNpc3N1ZS1jb21tZW50LWV2ZW50LWlzc3Vl
X2NvbW1lbnQKKyogaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2Uv
ZXZlbnRzLXRoYXQtdHJpZ2dlci13b3JrZmxvd3MjaXNzdWVzLWV2ZW50LWlzc3VlcworCitUaGlz
IHNjcmlwdCByZWNlaXZlcyB0aGUgcGF5bG9hZCBhbmQgYSBzZWNyZXRzIG9uIHRoZSBjb21tYW5k
IGxpbmUuCisKK1RoZSBwYXlsb2FkIG11c3QgY29udGFpbiBhIGNvbW1lbnQgd2l0aCBhIHBocmFz
ZSBtYXRjaGluZyB0aGlzIHBzZXVkby1yZWd1bGFyIGV4cHJlc3Npb246CisKKyAgICBAcHl0ZXN0
Ym90IHBsZWFzZSBwcmVwYXJlIChtYWpvciApPyByZWxlYXNlIGZyb20gPGJyYW5jaCBuYW1lPgor
CitUaGVuIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIHdpbGwgYmUgb2J0YWluZWQgYmFzZWQgb24g
dGhlIGdpdmVuIGJyYW5jaCBuYW1lOgorCisqIGEgbWFqb3IgcmVsZWFzZSBmcm9tIG1hc3RlciBp
ZiAibWFqb3IiIGFwcGVhcnMgaW4gdGhlIHBocmFzZSBpbiB0aGF0IHBvc2l0aW9uCisqIGEgZmVh
dHVyZSBvciBidWcgZml4IHJlbGVhc2UgZnJvbSBtYXN0ZXIgKGJhc2VkIGlmIHRoZXJlIGFyZSBm
ZWF0dXJlcyBpbiB0aGUgY3VycmVudCBjaGFuZ2Vsb2cKKyAgZm9sZGVyKQorKiBhIGJ1ZyBmaXgg
ZnJvbSBhIG1haW50ZW5hbmNlIGJyYW5jaAorCitBZnRlciB0aGF0LCBpdCB3aWxsIGNyZWF0ZSBh
IHJlbGVhc2UgdXNpbmcgdGhlIGByZWxlYXNlYCB0b3ggZW52aXJvbm1lbnQsIGFuZCBwdXNoIGEg
bmV3IFBSLgorCisqKlNlY3JldCoqOiBjdXJyZW50bHkgdGhlIHNlY3JldCBpcyBkZWZpbmVkIGlu
IHRoZSBAcHl0ZXN0Ym90IGFjY291bnQsIHdoaWNoIHRoZSBjb3JlIG1haW50YWluZXJzCitoYXZl
IGFjY2VzcyB0by4gVGhlcmUgd2UgY3JlYXRlZCBhIG5ldyBzZWNyZXQgbmFtZWQgYGNoYXRvcHNg
IHdpdGggd3JpdGUgYWNjZXNzIHRvIHRoZSByZXBvc2l0b3J5LgorIiIiCitpbXBvcnQgYXJncGFy
c2UKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHRyYWNlYmFjawor
ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IENhbGxlZFBy
b2Nlc3NFcnJvcgorZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBjaGVja19jYWxsCitmcm9tIHN1YnBy
b2Nlc3MgaW1wb3J0IGNoZWNrX291dHB1dAorZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBydW4KK2Zy
b20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20g
dHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisKK2Zyb20g
Y29sb3JhbWEgaW1wb3J0IEZvcmUKK2Zyb20gY29sb3JhbWEgaW1wb3J0IGluaXQKK2Zyb20gZ2l0
aHViMy5yZXBvcyBpbXBvcnQgUmVwb3NpdG9yeQorCisKK2NsYXNzIEludmFsaWRGZWF0dXJlUmVs
ZWFzZShFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitTTFVHID0gInB5dGVzdC1kZXYvcHl0ZXN0
IgorCitQUl9CT0RZID0gIiIiXAorQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20ge2NvbW1lbnRf
dXJsfS4KKworT25jZSBhbGwgYnVpbGRzIHBhc3MgYW5kIGl0IGhhcyBiZWVuICoqYXBwcm92ZWQq
KiBieSBvbmUgb3IgbW9yZSBtYWludGFpbmVycywgdGhlIGJ1aWxkCitjYW4gYmUgcmVsZWFzZWQg
YnkgcHVzaGluZyBhIHRhZyBge3ZlcnNpb259YCB0byB0aGlzIHJlcG9zaXRvcnkuCisiIiIKKwor
CitkZWYgbG9naW4odG9rZW46IHN0cikgLT4gUmVwb3NpdG9yeToKKyAgICBpbXBvcnQgZ2l0aHVi
MworCisgICAgZ2l0aHViID0gZ2l0aHViMy5sb2dpbih0b2tlbj10b2tlbikKKyAgICBvd25lciwg
cmVwbyA9IFNMVUcuc3BsaXQoIi8iKQorICAgIHJldHVybiBnaXRodWIucmVwb3NpdG9yeShvd25l
ciwgcmVwbykKKworCitkZWYgZ2V0X2NvbW1lbnRfZGF0YShwYXlsb2FkOiBEaWN0KSAtPiBzdHI6
CisgICAgaWYgImNvbW1lbnQiIGluIHBheWxvYWQ6CisgICAgICAgIHJldHVybiBwYXlsb2FkWyJj
b21tZW50Il0KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcGF5bG9hZFsiaXNzdWUiXQorCisK
K2RlZiB2YWxpZGF0ZV9hbmRfZ2V0X2lzc3VlX2NvbW1lbnRfcGF5bG9hZCgKKyAgICBpc3N1ZV9w
YXlsb2FkX3BhdGg6IE9wdGlvbmFsW1BhdGhdLAorKSAtPiBUdXBsZVtzdHIsIHN0ciwgYm9vbF06
CisgICAgcGF5bG9hZCA9IGpzb24ubG9hZHMoaXNzdWVfcGF5bG9hZF9wYXRoLnJlYWRfdGV4dChl
bmNvZGluZz0iVVRGLTgiKSkKKyAgICBib2R5ID0gZ2V0X2NvbW1lbnRfZGF0YShwYXlsb2FkKVsi
Ym9keSJdCisgICAgbSA9IHJlLm1hdGNoKHIiQHB5dGVzdGJvdCBwbGVhc2UgcHJlcGFyZSAobWFq
b3IgKT9yZWxlYXNlIGZyb20gKFtcd1wtX1wuXSspIiwgYm9keSkKKyAgICBpZiBtOgorICAgICAg
ICBpc19tYWpvciwgYmFzZV9icmFuY2ggPSBtLmdyb3VwKDEpIGlzIG5vdCBOb25lLCBtLmdyb3Vw
KDIpCisgICAgZWxzZToKKyAgICAgICAgaXNfbWFqb3IsIGJhc2VfYnJhbmNoID0gRmFsc2UsIE5v
bmUKKyAgICByZXR1cm4gcGF5bG9hZCwgYmFzZV9icmFuY2gsIGlzX21ham9yCisKKworZGVmIHBy
aW50X2FuZF9leGl0KG1zZykgLT4gTm9uZToKKyAgICBwcmludChtc2cpCisgICAgcmFpc2UgU3lz
dGVtRXhpdCgxKQorCisKK2RlZiB0cmlnZ2VyX3JlbGVhc2UocGF5bG9hZF9wYXRoOiBQYXRoLCB0
b2tlbjogc3RyKSAtPiBOb25lOgorICAgIHBheWxvYWQsIGJhc2VfYnJhbmNoLCBpc19tYWpvciA9
IHZhbGlkYXRlX2FuZF9nZXRfaXNzdWVfY29tbWVudF9wYXlsb2FkKAorICAgICAgICBwYXlsb2Fk
X3BhdGgKKyAgICApCisgICAgaWYgYmFzZV9icmFuY2ggaXMgTm9uZToKKyAgICAgICAgdXJsID0g
Z2V0X2NvbW1lbnRfZGF0YShwYXlsb2FkKVsiaHRtbF91cmwiXQorICAgICAgICBwcmludF9hbmRf
ZXhpdCgKKyAgICAgICAgICAgIGYiQ29tbWVudCB7Rm9yZS5DWUFOfXt1cmx9e0ZvcmUuUkVTRVR9
IGRpZCBub3QgbWF0Y2ggdGhlIHRyaWdnZXIgY29tbWFuZC4iCisgICAgICAgICkKKyAgICBwcmlu
dCgpCisgICAgcHJpbnQoZiJQcmVjZXNzaW5nIHJlbGVhc2UgZm9yIGJyYW5jaCB7Rm9yZS5DWUFO
fXtiYXNlX2JyYW5jaH0iKQorCisgICAgcmVwbyA9IGxvZ2luKHRva2VuKQorCisgICAgaXNzdWVf
bnVtYmVyID0gcGF5bG9hZFsiaXNzdWUiXVsibnVtYmVyIl0KKyAgICBpc3N1ZSA9IHJlcG8uaXNz
dWUoaXNzdWVfbnVtYmVyKQorCisgICAgY2hlY2tfY2FsbChbImdpdCIsICJjaGVja291dCIsIGYi
b3JpZ2luL3tiYXNlX2JyYW5jaH0iXSkKKworICAgIHRyeToKKyAgICAgICAgdmVyc2lvbiA9IGZp
bmRfbmV4dF92ZXJzaW9uKGJhc2VfYnJhbmNoLCBpc19tYWpvcikKKyAgICBleGNlcHQgSW52YWxp
ZEZlYXR1cmVSZWxlYXNlIGFzIGU6CisgICAgICAgIGlzc3VlLmNyZWF0ZV9jb21tZW50KHN0cihl
KSkKKyAgICAgICAgcHJpbnRfYW5kX2V4aXQoZiJ7Rm9yZS5SRUR9e2V9IikKKworICAgIGVycm9y
X2NvbnRlbnRzID0gIiIKKyAgICB0cnk6CisgICAgICAgIHByaW50KGYiVmVyc2lvbjoge0ZvcmUu
Q1lBTn17dmVyc2lvbn0iKQorCisgICAgICAgIHJlbGVhc2VfYnJhbmNoID0gZiJyZWxlYXNlLXt2
ZXJzaW9ufSIKKworICAgICAgICBydW4oCisgICAgICAgICAgICBbImdpdCIsICJjb25maWciLCAi
dXNlci5uYW1lIiwgInB5dGVzdCBib3QiXSwKKyAgICAgICAgICAgIHRleHQ9VHJ1ZSwKKyAgICAg
ICAgICAgIGNoZWNrPVRydWUsCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAg
ICAgICApCisgICAgICAgIHJ1bigKKyAgICAgICAgICAgIFsiZ2l0IiwgImNvbmZpZyIsICJ1c2Vy
LmVtYWlsIiwgInB5dGVzdGJvdEBnbWFpbC5jb20iXSwKKyAgICAgICAgICAgIHRleHQ9VHJ1ZSwK
KyAgICAgICAgICAgIGNoZWNrPVRydWUsCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVl
LAorICAgICAgICApCisKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgWyJnaXQiLCAiY2hlY2tv
dXQiLCAiLWIiLCByZWxlYXNlX2JyYW5jaCwgZiJvcmlnaW4ve2Jhc2VfYnJhbmNofSJdLAorICAg
ICAgICAgICAgdGV4dD1UcnVlLAorICAgICAgICAgICAgY2hlY2s9VHJ1ZSwKKyAgICAgICAgICAg
IGNhcHR1cmVfb3V0cHV0PVRydWUsCisgICAgICAgICkKKworICAgICAgICBwcmludChmIkJyYW5j
aCB7Rm9yZS5DWUFOfXtyZWxlYXNlX2JyYW5jaH17Rm9yZS5SRVNFVH0gY3JlYXRlZC4iKQorCisg
ICAgICAgICMgaW1wb3J0YW50IHRvIHVzZSB0b3ggaGVyZSBiZWNhdXNlIHdlIGhhdmUgY2hhbmdl
ZCBicmFuY2hlcywgc28gZGVwZW5kZW5jaWVzCisgICAgICAgICMgbWlnaHQgaGF2ZSBjaGFuZ2Vk
IGFzIHdlbGwKKyAgICAgICAgY21kbGluZSA9IFsidG94IiwgIi1lIiwgInJlbGVhc2UiLCAiLS0i
LCB2ZXJzaW9uLCAiLS1za2lwLWNoZWNrLWxpbmtzIl0KKyAgICAgICAgcHJpbnQoIlJ1bm5pbmci
LCAiICIuam9pbihjbWRsaW5lKSkKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgY21kbGluZSwg
dGV4dD1UcnVlLCBjaGVjaz1UcnVlLCBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICApCisK
KyAgICAgICAgb2F1dGhfdXJsID0gZiJodHRwczovL3t0b2tlbn06eC1vYXV0aC1iYXNpY0BnaXRo
dWIuY29tL3tTTFVHfS5naXQiCisgICAgICAgIHJ1bigKKyAgICAgICAgICAgIFsiZ2l0IiwgInB1
c2giLCBvYXV0aF91cmwsIGYiSEVBRDp7cmVsZWFzZV9icmFuY2h9IiwgIi0tZm9yY2UiXSwKKyAg
ICAgICAgICAgIHRleHQ9VHJ1ZSwKKyAgICAgICAgICAgIGNoZWNrPVRydWUsCisgICAgICAgICAg
ICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICApCisgICAgICAgIHByaW50KGYiQnJhbmNo
IHtGb3JlLkNZQU59e3JlbGVhc2VfYnJhbmNofXtGb3JlLlJFU0VUfSBwdXNoZWQuIikKKworICAg
ICAgICBib2R5ID0gUFJfQk9EWS5mb3JtYXQoCisgICAgICAgICAgICBjb21tZW50X3VybD1nZXRf
Y29tbWVudF9kYXRhKHBheWxvYWQpWyJodG1sX3VybCJdLCB2ZXJzaW9uPXZlcnNpb24KKyAgICAg
ICAgKQorICAgICAgICBwciA9IHJlcG8uY3JlYXRlX3B1bGwoCisgICAgICAgICAgICBmIlByZXBh
cmUgcmVsZWFzZSB7dmVyc2lvbn0iLAorICAgICAgICAgICAgYmFzZT1iYXNlX2JyYW5jaCwKKyAg
ICAgICAgICAgIGhlYWQ9cmVsZWFzZV9icmFuY2gsCisgICAgICAgICAgICBib2R5PWJvZHksCisg
ICAgICAgICkKKyAgICAgICAgcHJpbnQoZiJQdWxsIHJlcXVlc3Qge0ZvcmUuQ1lBTn17cHIudXJs
fXtGb3JlLlJFU0VUfSBjcmVhdGVkLiIpCisKKyAgICAgICAgY29tbWVudCA9IGlzc3VlLmNyZWF0
ZV9jb21tZW50KAorICAgICAgICAgICAgZiJBcyByZXF1ZXN0ZWQsIG9wZW5lZCBhIFBSIGZvciBy
ZWxlYXNlIGB7dmVyc2lvbn1gOiAje3ByLm51bWJlcn0uIgorICAgICAgICApCisgICAgICAgIHBy
aW50KGYiTm90aWZpZWQgaW4gb3JpZ2luYWwgY29tbWVudCB7Rm9yZS5DWUFOfXtjb21tZW50LnVy
bH17Rm9yZS5SRVNFVH0uIikKKworICAgIGV4Y2VwdCBDYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToK
KyAgICAgICAgZXJyb3JfY29udGVudHMgPSBmIkNhbGxlZFByb2Nlc3NFcnJvclxub3V0cHV0Olxu
e2Uub3V0cHV0fVxuc3RkZXJyOlxue2Uuc3RkZXJyfSIKKyAgICBleGNlcHQgRXhjZXB0aW9uOgor
ICAgICAgICBlcnJvcl9jb250ZW50cyA9IGYiRXhjZXB0aW9uOlxue3RyYWNlYmFjay5mb3JtYXRf
ZXhjKCl9IgorCisgICAgaWYgZXJyb3JfY29udGVudHM6CisgICAgICAgIGxpbmsgPSBmImh0dHBz
Oi8vZ2l0aHViLmNvbS97U0xVR30vYWN0aW9ucy9ydW5zL3tvcy5lbnZpcm9uWydHSVRIVUJfUlVO
X0lEJ119IgorICAgICAgICBtc2cgPSBFUlJPUl9DT01NRU5ULmZvcm1hdCgKKyAgICAgICAgICAg
IHZlcnNpb249dmVyc2lvbiwgYmFzZV9icmFuY2g9YmFzZV9icmFuY2gsIGNvbnRlbnRzPWVycm9y
X2NvbnRlbnRzLCBsaW5rPWxpbmsKKyAgICAgICAgKQorICAgICAgICBpc3N1ZS5jcmVhdGVfY29t
bWVudChtc2cpCisgICAgICAgIHByaW50X2FuZF9leGl0KGYie0ZvcmUuUkVEfXtlcnJvcl9jb250
ZW50c30iKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KGYie0ZvcmUuR1JFRU59U3VjY2Vzcy4i
KQorCisKK0VSUk9SX0NPTU1FTlQgPSAiIiJcCitUaGUgcmVxdWVzdCB0byBwcmVwYXJlIHJlbGVh
c2UgYHt2ZXJzaW9ufWAgZnJvbSB7YmFzZV9icmFuY2h9IGZhaWxlZCB3aXRoOgorCitgYGAKK3tj
b250ZW50c30KK2BgYAorCitTZWU6IHtsaW5rfS4KKyIiIgorCisKK2RlZiBmaW5kX25leHRfdmVy
c2lvbihiYXNlX2JyYW5jaDogc3RyLCBpc19tYWpvcjogYm9vbCkgLT4gc3RyOgorICAgIG91dHB1
dCA9IGNoZWNrX291dHB1dChbImdpdCIsICJ0YWciXSwgZW5jb2Rpbmc9IlVURi04IikKKyAgICB2
YWxpZF92ZXJzaW9ucyA9IFtdCisgICAgZm9yIHYgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAg
ICAgICAgbSA9IHJlLm1hdGNoKHIiXGQuXGQuXGQrJCIsIHYuc3RyaXAoKSkKKyAgICAgICAgaWYg
bToKKyAgICAgICAgICAgIHZhbGlkX3ZlcnNpb25zLmFwcGVuZCh0dXBsZShpbnQoeCkgZm9yIHgg
aW4gdi5zcGxpdCgiLiIpKSkKKworICAgIHZhbGlkX3ZlcnNpb25zLnNvcnQoKQorICAgIGxhc3Rf
dmVyc2lvbiA9IHZhbGlkX3ZlcnNpb25zWy0xXQorCisgICAgY2hhbmdlbG9nID0gUGF0aCgiY2hh
bmdlbG9nIikKKworICAgIGZlYXR1cmVzID0gbGlzdChjaGFuZ2Vsb2cuZ2xvYigiKi5mZWF0dXJl
LnJzdCIpKQorICAgIGJyZWFraW5nID0gbGlzdChjaGFuZ2Vsb2cuZ2xvYigiKi5icmVha2luZy5y
c3QiKSkKKyAgICBpc19mZWF0dXJlX3JlbGVhc2UgPSBmZWF0dXJlcyBvciBicmVha2luZworCisg
ICAgaWYgaXNfZmVhdHVyZV9yZWxlYXNlIGFuZCBiYXNlX2JyYW5jaCAhPSAibWFzdGVyIjoKKyAg
ICAgICAgbXNnID0gZGVkZW50KAorICAgICAgICAgICAgZiIiIgorICAgICAgICAgICAgRm91bmQg
ZmVhdHVyZXMgb3IgYnJlYWtpbmcgY2hhbmdlcyBpbiBge2Jhc2VfYnJhbmNofWAsIGFuZCBmZWF0
dXJlIHJlbGVhc2VzIGNhbiBvbmx5IGJlCisgICAgICAgICAgICBjcmVhdGVkIGZyb20gYG1hc3Rl
cmAuIjoKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgbXNnICs9ICJcbiIuam9pbihm
IiogYHt4Lm5hbWV9YCIgZm9yIHggaW4gc29ydGVkKGZlYXR1cmVzICsgYnJlYWtpbmcpKQorICAg
ICAgICByYWlzZSBJbnZhbGlkRmVhdHVyZVJlbGVhc2UobXNnKQorCisgICAgaWYgaXNfbWFqb3I6
CisgICAgICAgIHJldHVybiBmIntsYXN0X3ZlcnNpb25bMF0rMX0uMC4wIgorICAgIGVsaWYgaXNf
ZmVhdHVyZV9yZWxlYXNlOgorICAgICAgICByZXR1cm4gZiJ7bGFzdF92ZXJzaW9uWzBdfS57bGFz
dF92ZXJzaW9uWzFdICsgMX0uMCIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZiJ7bGFzdF92
ZXJzaW9uWzBdfS57bGFzdF92ZXJzaW9uWzFdfS57bGFzdF92ZXJzaW9uWzJdICsgMX0iCisKKwor
ZGVmIG1haW4oKSAtPiBOb25lOgorICAgIGluaXQoYXV0b3Jlc2V0PVRydWUpCisgICAgcGFyc2Vy
ID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInBh
eWxvYWQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInRva2VuIikKKyAgICBvcHRpb25zID0g
cGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIHRyaWdnZXJfcmVsZWFzZShQYXRoKG9wdGlvbnMucGF5
bG9hZCksIG9wdGlvbnMudG9rZW4pCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAg
ICBtYWluKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS5taW5vci5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3JlbGVhc2UubWlub3IucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzZlNDQ3ZjBjNmQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9yZWxlYXNlLm1pbm9yLnJzdApAQCAtMCwwICsxLDI0IEBA
CitweXRlc3Qte3ZlcnNpb259Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSB7dmVyc2lvbn0g
cmVsZWFzZSEKKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIG5ldyBmZWF0dXJlcywgaW1wcm92ZW1l
bnRzLCBidWcgZml4ZXMsIGFuZCBicmVha2luZyBjaGFuZ2VzLCBzbyB1c2VycworYXJlIGVuY291
cmFnZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRyBjYXJlZnVsbHk6CisKKyAgICBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKKworRm9yIGNv
bXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIFB5
UEkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgb2Yg
dGhlIGNvbnRyaWJ1dG9ycyB0byB0aGlzIHJlbGVhc2U6CisKK3tjb250cmlidXRvcnN9CisKK0hh
cHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rhc2tzL3JlbGVhc2UucGF0Y2gucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9y
ZWxlYXNlLnBhdGNoLnJzdApzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90YXNrcy9yZWxlYXNlLnBhdGNoLnJzdApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0
cy9yZWxlYXNlLnBhdGNoLnJzdAppbmRleCAxOTgyZGMzNTNjNGIuLjU5ZmJlNTBjZTBlNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGFza3MvcmVsZWFzZS5wYXRjaC5yc3QKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc2NyaXB0cy9yZWxlYXNlLnBhdGNoLnJzdApAQCAtNyw5ICs3LDkgQEAgVGhpcyBpcyBh
IGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRl
OjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxv
ZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vs
b2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCi1UaGFua3MgdG8gYWxsIHdo
byBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CitUaGFua3MgdG8gYWxs
IG9mIHRoZSBjb250cmlidXRvcnMgdG8gdGhpcyByZWxlYXNlOgogCiB7Y29udHJpYnV0b3JzfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3JlbGVhc2UucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zY3JpcHRzL3JlbGVhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi41ZTMxNThhYjUyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRz
L3JlbGVhc2UucHkKQEAgLTAsMCArMSwxMjYgQEAKKyIiIkludm9rZSBkZXZlbG9wbWVudCB0YXNr
cy4iIiIKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBh
dGgKK2Zyb20gc3VicHJvY2VzcyBpbXBvcnQgY2FsbAorZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBj
aGVja19jYWxsCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNoZWNrX291dHB1dAorCitmcm9tIGNv
bG9yYW1hIGltcG9ydCBGb3JlCitmcm9tIGNvbG9yYW1hIGltcG9ydCBpbml0CisKKworZGVmIGFu
bm91bmNlKHZlcnNpb24pOgorICAgICIiIkdlbmVyYXRlcyBhIG5ldyByZWxlYXNlIGFubm91bmNl
bWVudCBlbnRyeSBpbiB0aGUgZG9jcy4iIiIKKyAgICAjIEdldCBvdXIgbGlzdCBvZiBhdXRob3Jz
CisgICAgc3Rkb3V0ID0gY2hlY2tfb3V0cHV0KFsiZ2l0IiwgImRlc2NyaWJlIiwgIi0tYWJicmV2
PTAiLCAiLS10YWdzIl0pCisgICAgc3Rkb3V0ID0gc3Rkb3V0LmRlY29kZSgidXRmLTgiKQorICAg
IGxhc3RfdmVyc2lvbiA9IHN0ZG91dC5zdHJpcCgpCisKKyAgICBzdGRvdXQgPSBjaGVja19vdXRw
dXQoCisgICAgICAgIFsiZ2l0IiwgImxvZyIsICJ7fS4uSEVBRCIuZm9ybWF0KGxhc3RfdmVyc2lv
biksICItLWZvcm1hdD0lYU4iXQorICAgICkKKyAgICBzdGRvdXQgPSBzdGRvdXQuZGVjb2RlKCJ1
dGYtOCIpCisKKyAgICBjb250cmlidXRvcnMgPSBzZXQoc3Rkb3V0LnNwbGl0bGluZXMoKSkKKwor
ICAgIHRlbXBsYXRlX25hbWUgPSAoCisgICAgICAgICJyZWxlYXNlLm1pbm9yLnJzdCIgaWYgdmVy
c2lvbi5lbmRzd2l0aCgiLjAiKSBlbHNlICJyZWxlYXNlLnBhdGNoLnJzdCIKKyAgICApCisgICAg
dGVtcGxhdGVfdGV4dCA9ICgKKyAgICAgICAgUGF0aChfX2ZpbGVfXykucGFyZW50LmpvaW5wYXRo
KHRlbXBsYXRlX25hbWUpLnJlYWRfdGV4dChlbmNvZGluZz0iVVRGLTgiKQorICAgICkKKworICAg
IGNvbnRyaWJ1dG9yc190ZXh0ID0gKAorICAgICAgICAiXG4iLmpvaW4oIioge30iLmZvcm1hdChu
YW1lKSBmb3IgbmFtZSBpbiBzb3J0ZWQoY29udHJpYnV0b3JzKSkgKyAiXG4iCisgICAgKQorICAg
IHRleHQgPSB0ZW1wbGF0ZV90ZXh0LmZvcm1hdCh2ZXJzaW9uPXZlcnNpb24sIGNvbnRyaWJ1dG9y
cz1jb250cmlidXRvcnNfdGV4dCkKKworICAgIHRhcmdldCA9IFBhdGgoX19maWxlX18pLnBhcmVu
dC5qb2lucGF0aCgKKyAgICAgICAgIi4uL2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLXt9LnJzdCIu
Zm9ybWF0KHZlcnNpb24pCisgICAgKQorICAgIHRhcmdldC53cml0ZV90ZXh0KHRleHQsIGVuY29k
aW5nPSJVVEYtOCIpCisgICAgcHJpbnQoZiJ7Rm9yZS5DWUFOfVtnZW5lcmF0ZS5hbm5vdW5jZV0g
e0ZvcmUuUkVTRVR9R2VuZXJhdGVkIHt0YXJnZXQubmFtZX0iKQorCisgICAgIyBVcGRhdGUgaW5k
ZXggd2l0aCB0aGUgbmV3IHJlbGVhc2UgZW50cnkKKyAgICBpbmRleF9wYXRoID0gUGF0aChfX2Zp
bGVfXykucGFyZW50LmpvaW5wYXRoKCIuLi9kb2MvZW4vYW5ub3VuY2UvaW5kZXgucnN0IikKKyAg
ICBsaW5lcyA9IGluZGV4X3BhdGgucmVhZF90ZXh0KGVuY29kaW5nPSJVVEYtOCIpLnNwbGl0bGlu
ZXMoKQorICAgIGluZGVudCA9ICIgICAiCisgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0
ZShsaW5lcyk6CisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgie31yZWxlYXNlLSIuZm9ybWF0
KGluZGVudCkpOgorICAgICAgICAgICAgbmV3X2xpbmUgPSBpbmRlbnQgKyB0YXJnZXQuc3RlbQor
ICAgICAgICAgICAgaWYgbGluZSAhPSBuZXdfbGluZToKKyAgICAgICAgICAgICAgICBsaW5lcy5p
bnNlcnQoaW5kZXgsIG5ld19saW5lKQorICAgICAgICAgICAgICAgIGluZGV4X3BhdGgud3JpdGVf
dGV4dCgiXG4iLmpvaW4obGluZXMpICsgIlxuIiwgZW5jb2Rpbmc9IlVURi04IikKKyAgICAgICAg
ICAgICAgICBwcmludCgKKyAgICAgICAgICAgICAgICAgICAgZiJ7Rm9yZS5DWUFOfVtnZW5lcmF0
ZS5hbm5vdW5jZV0ge0ZvcmUuUkVTRVR9VXBkYXRlZCB7aW5kZXhfcGF0aC5uYW1lfSIKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KAor
ICAgICAgICAgICAgICAgICAgICBmIntGb3JlLkNZQU59W2dlbmVyYXRlLmFubm91bmNlXSB7Rm9y
ZS5SRVNFVH1Ta2lwIHtpbmRleF9wYXRoLm5hbWV9IChhbHJlYWR5IGNvbnRhaW5zIHJlbGVhc2Up
IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICBjaGVja19jYWxs
KFsiZ2l0IiwgImFkZCIsIHN0cih0YXJnZXQpXSkKKworCitkZWYgcmVnZW4odmVyc2lvbik6Cisg
ICAgIiIiQ2FsbCByZWdlbmRvYyB0b29sIHRvIHVwZGF0ZSBleGFtcGxlcyBhbmQgcHl0ZXN0IG91
dHB1dCBpbiB0aGUgZG9jcy4iIiIKKyAgICBwcmludChmIntGb3JlLkNZQU59W2dlbmVyYXRlLnJl
Z2VuXSB7Rm9yZS5SRVNFVH1VcGRhdGluZyBkb2NzIikKKyAgICBjaGVja19jYWxsKAorICAgICAg
ICBbInRveCIsICItZSIsICJyZWdlbiJdLAorICAgICAgICBlbnY9eyoqb3MuZW52aXJvbiwgIlNF
VFVQVE9PTFNfU0NNX1BSRVRFTkRfVkVSU0lPTiI6IHZlcnNpb259LAorICAgICkKKworCitkZWYg
Zml4X2Zvcm1hdHRpbmcoKToKKyAgICAiIiJSdW5zIHByZS1jb21taXQgaW4gYWxsIGZpbGVzIHRv
IGVuc3VyZSB0aGV5IGFyZSBmb3JtYXR0ZWQgY29ycmVjdGx5IiIiCisgICAgcHJpbnQoCisgICAg
ICAgIGYie0ZvcmUuQ1lBTn1bZ2VuZXJhdGUuZml4IGxpbnRpbmddIHtGb3JlLlJFU0VUfUZpeGlu
ZyBmb3JtYXR0aW5nIHVzaW5nIHByZS1jb21taXQiCisgICAgKQorICAgIGNhbGwoWyJwcmUtY29t
bWl0IiwgInJ1biIsICItLWFsbC1maWxlcyJdKQorCisKK2RlZiBjaGVja19saW5rcygpOgorICAg
ICIiIlJ1bnMgc3BoaW54LWJ1aWxkIHRvIGNoZWNrIGxpbmtzIiIiCisgICAgcHJpbnQoZiJ7Rm9y
ZS5DWUFOfVtnZW5lcmF0ZS5jaGVja19saW5rc10ge0ZvcmUuUkVTRVR9Q2hlY2tpbmcgbGlua3Mi
KQorICAgIGNoZWNrX2NhbGwoWyJ0b3giLCAiLWUiLCAiZG9jcy1jaGVja2xpbmtzIl0pCisKKwor
ZGVmIHByZV9yZWxlYXNlKHZlcnNpb24sICosIHNraXBfY2hlY2tfbGlua3MpOgorICAgICIiIkdl
bmVyYXRlcyBuZXcgZG9jcywgcmVsZWFzZSBhbm5vdW5jZW1lbnRzIGFuZCBjcmVhdGVzIGEgbG9j
YWwgdGFnLiIiIgorICAgIGFubm91bmNlKHZlcnNpb24pCisgICAgcmVnZW4odmVyc2lvbikKKyAg
ICBjaGFuZ2Vsb2codmVyc2lvbiwgd3JpdGVfb3V0PVRydWUpCisgICAgZml4X2Zvcm1hdHRpbmco
KQorICAgIGlmIG5vdCBza2lwX2NoZWNrX2xpbmtzOgorICAgICAgICBjaGVja19saW5rcygpCisK
KyAgICBtc2cgPSAiUHJlcGFyZSByZWxlYXNlIHZlcnNpb24ge30iLmZvcm1hdCh2ZXJzaW9uKQor
ICAgIGNoZWNrX2NhbGwoWyJnaXQiLCAiY29tbWl0IiwgIi1hIiwgIi1tIiwgbXNnXSkKKworICAg
IHByaW50KCkKKyAgICBwcmludChmIntGb3JlLkNZQU59W2dlbmVyYXRlLnByZV9yZWxlYXNlXSB7
Rm9yZS5HUkVFTn1BbGwgZG9uZSEiKQorICAgIHByaW50KCkKKyAgICBwcmludCgiUGxlYXNlIHB1
c2ggeW91ciBicmFuY2ggYW5kIG9wZW4gYSBQUi4iKQorCisKK2RlZiBjaGFuZ2Vsb2codmVyc2lv
biwgd3JpdGVfb3V0PUZhbHNlKToKKyAgICBpZiB3cml0ZV9vdXQ6CisgICAgICAgIGFkZG9wdHMg
PSBbXQorICAgIGVsc2U6CisgICAgICAgIGFkZG9wdHMgPSBbIi0tZHJhZnQiXQorICAgIGNoZWNr
X2NhbGwoWyJ0b3duY3JpZXIiLCAiLS15ZXMiLCAiLS12ZXJzaW9uIiwgdmVyc2lvbl0gKyBhZGRv
cHRzKQorCisKK2RlZiBtYWluKCk6CisgICAgaW5pdChhdXRvcmVzZXQ9VHJ1ZSkKKyAgICBwYXJz
ZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgi
dmVyc2lvbiIsIGhlbHA9IlJlbGVhc2UgdmVyc2lvbiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgiLS1za2lwLWNoZWNrLWxpbmtzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxz
ZSkKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIHByZV9yZWxlYXNlKG9w
dGlvbnMudmVyc2lvbiwgc2tpcF9jaGVja19saW5rcz1vcHRpb25zLnNraXBfY2hlY2tfbGlua3Mp
CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVwb3J0LWNvdmVyYWdlLnNoIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2Ny
aXB0cy9yZXBvcnQtY292ZXJhZ2Uuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5mYmNmMjBjYTkyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3Jp
cHRzL3JlcG9ydC1jb3ZlcmFnZS5zaApAQCAtMCwwICsxLDE4IEBACisjIS91c3IvYmluL2VudiBi
YXNoCisKK3NldCAtZQorc2V0IC14CisKK2lmIFsgLXogIiRUT1hFTlYiIF07IHRoZW4KKyAgcHl0
aG9uIC1tIHBpcCBpbnN0YWxsIGNvdmVyYWdlCitlbHNlCisgICMgQWRkIGxhc3QgVE9YRU5WIHRv
ICRQQVRILgorICBQQVRIPSIkUFdELy50b3gvJHtUT1hFTlYjIyosfS9iaW46JFBBVEgiCitmaQor
CitweXRob24gLW0gY292ZXJhZ2UgY29tYmluZQorcHl0aG9uIC1tIGNvdmVyYWdlIHhtbAorcHl0
aG9uIC1tIGNvdmVyYWdlIHJlcG9ydCAtbQorIyBTZXQgLS1jb25uZWN0LXRpbWVvdXQgdG8gd29y
ayBhcm91bmQgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNDQ2MQorY3VybCAt
UyAtTCAtLWNvbm5lY3QtdGltZW91dCA1IC0tcmV0cnkgNiAtcyBodHRwczovL2NvZGVjb3YuaW8v
YmFzaCAtbyBjb2RlY292LXVwbG9hZC5zaAorYmFzaCBjb2RlY292LXVwbG9hZC5zaCAtWiAtWCBm
aXggLWYgY292ZXJhZ2UueG1sICIkQCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMv
dG93bmNyaWVyLWRyYWZ0LXRvLWZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3Rvd25jcmll
ci1kcmFmdC10by1maWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODE1MDdiNDBiNzVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy90
b3duY3JpZXItZHJhZnQtdG8tZmlsZS5weQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgc3lzCitm
cm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNhbGwKKworCitkZWYgbWFpbigpOgorICAgICIiIgorICAg
IFBsYXRmb3JtIGFnbm9zdGljIHdyYXBwZXIgc2NyaXB0IGZvciB0b3duY3JpZXIuCisgICAgRml4
ZXMgdGhlIGlzc3VlICgjNzI1MSkgd2hlcmUgd2luZG93cyB1c2VycyBhcmUgdW5hYmxlIHRvIG5h
dGl2ZWx5IHJ1biB0b3ggLWUgZG9jcyB0byBidWlsZCBweXRlc3QgZG9jcy4KKyAgICAiIiIKKyAg
ICB3aXRoIG9wZW4oImRvYy9lbi9fY2hhbmdlbG9nX3Rvd25jcmllcl9kcmFmdC5yc3QiLCAidyIp
IGFzIGRyYWZ0X2ZpbGU6CisgICAgICAgIHJldHVybiBjYWxsKCgidG93bmNyaWVyIiwgIi0tZHJh
ZnQiKSwgc3Rkb3V0PWRyYWZ0X2ZpbGUpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
KyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExNDYzZWNkZTQ1Li4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc2NyaXB0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvY2FsbC10b3guYmF0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc2NyaXB0cy9pbnN0YWxsLXB5cHkuYmF0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zZXR1cC5jZmcKaW5kZXggODE2NTM5ZTJlYzZmLi42
MGY2NTY0OWFhY2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NldHVwLmNmZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zZXR1cC5jZmcKQEAgLTEsMyArMSw4MyBAQAorW21ldGFkYXRhXQorbmFtZSA9IHB5
dGVzdAorZGVzY3JpcHRpb24gPSBweXRlc3Q6IHNpbXBsZSBwb3dlcmZ1bCB0ZXN0aW5nIHdpdGgg
UHl0aG9uCitsb25nX2Rlc2NyaXB0aW9uID0gZmlsZTogUkVBRE1FLnJzdAorbG9uZ19kZXNjcmlw
dGlvbl9jb250ZW50X3R5cGUgPSB0ZXh0L3gtcnN0Cit1cmwgPSBodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9sYXRlc3QvCithdXRob3IgPSBIb2xnZXIgS3Jla2VsLCBCcnVubyBPbGl2ZWlyYSwg
Um9ubnkgUGZhbm5zY2htaWR0LCBGbG9yaXMgQnJ1eW5vb2doZSwgQnJpYW5uYSBMYXVnaGVyLCBG
bG9yaWFuIEJydWhpbiBhbmQgb3RoZXJzCitsaWNlbnNlID0gTUlUCitsaWNlbnNlX2ZpbGUgPSBM
SUNFTlNFCitwbGF0Zm9ybXMgPSB1bml4LCBsaW51eCwgb3N4LCBjeWd3aW4sIHdpbjMyCitjbGFz
c2lmaWVycyA9IAorCURldmVsb3BtZW50IFN0YXR1cyA6OiA2IC0gTWF0dXJlCisJSW50ZW5kZWQg
QXVkaWVuY2UgOjogRGV2ZWxvcGVycworCUxpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBM
aWNlbnNlCisJT3BlcmF0aW5nIFN5c3RlbSA6OiBNYWNPUyA6OiBNYWNPUyBYCisJT3BlcmF0aW5n
IFN5c3RlbSA6OiBNaWNyb3NvZnQgOjogV2luZG93cworCU9wZXJhdGluZyBTeXN0ZW0gOjogUE9T
SVgKKwlQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworCVByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiA6OiAzIDo6IE9ubHkKKwlQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy41CisJUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNgorCVBy
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjcKKwlQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogMy44CisJUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMu
OQorCVRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcworCVRvcGljIDo6
IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IFRlc3RpbmcKKwlUb3BpYyA6OiBVdGlsaXRpZXMKK2tl
eXdvcmRzID0gdGVzdCwgdW5pdHRlc3QKK3Byb2plY3RfdXJscyA9IAorCVNvdXJjZT1odHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QKKwlUcmFja2VyPWh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMKKworW29wdGlvbnNdCitwYWNrYWdlcyA9IAorCV9w
eXRlc3QKKwlfcHl0ZXN0Ll9jb2RlCisJX3B5dGVzdC5faW8KKwlfcHl0ZXN0LmFzc2VydGlvbgor
CV9weXRlc3QuY29uZmlnCisJX3B5dGVzdC5tYXJrCisJcHl0ZXN0CitpbnN0YWxsX3JlcXVpcmVz
ID0gCisJYXR0cnM+PTE3LjQuMAorCWluaWNvbmZpZworCXBhY2thZ2luZworCXBsdWdneT49MC4x
Miw8MS4wCisJcHk+PTEuOC4yCisJdG9tbAorCWF0b21pY3dyaXRlcz49MS4wO3N5c19wbGF0Zm9y
bT09IndpbjMyIgorCWNvbG9yYW1hO3N5c19wbGF0Zm9ybT09IndpbjMyIgorCWltcG9ydGxpYi1t
ZXRhZGF0YT49MC4xMjtweXRob25fdmVyc2lvbjwiMy44IgorCXBhdGhsaWIyPj0yLjIuMDtweXRo
b25fdmVyc2lvbjwiMy42IgorcHl0aG9uX3JlcXVpcmVzID0gPj0zLjUKK3BhY2thZ2VfZGlyID0g
CisJPXNyYworc2V0dXBfcmVxdWlyZXMgPSAKKwlzZXR1cHRvb2xzPj00MC4wCisJc2V0dXB0b29s
cy1zY20KK3ppcF9zYWZlID0gbm8KKworW29wdGlvbnMuZW50cnlfcG9pbnRzXQorY29uc29sZV9z
Y3JpcHRzID0gCisJcHl0ZXN0PXB5dGVzdDpjb25zb2xlX21haW4KKwlweS50ZXN0PXB5dGVzdDpj
b25zb2xlX21haW4KKworW29wdGlvbnMuZXh0cmFzX3JlcXVpcmVdCitjaGVja3FhLW15cHkgPSAK
KwlteXB5PT0wLjc4MAordGVzdGluZyA9IAorCWFyZ2NvbXBsZXRlCisJaHlwb3RoZXNpcz49My41
NgorCW1vY2sKKwlub3NlCisJcmVxdWVzdHMKKwl4bWxzY2hlbWEKKworW29wdGlvbnMucGFja2Fn
ZV9kYXRhXQorX3B5dGVzdCA9IHB5LnR5cGVkCitweXRlc3QgPSBweS50eXBlZAorCiBbYnVpbGRf
c3BoaW54XQogc291cmNlLWRpciA9IGRvYy9lbi8KIGJ1aWxkLWRpciA9IGRvYy9idWlsZApAQCAt
NiwxNSArODYsMjggQEAgYWxsX2ZpbGVzID0gMQogW3VwbG9hZF9zcGhpbnhdCiB1cGxvYWQtZGly
ID0gZG9jL2VuL2J1aWxkL2h0bWwKIAotW2JkaXN0X3doZWVsXQotdW5pdmVyc2FsID0gMQotCiBb
Y2hlY2stbWFuaWZlc3RdCi1pZ25vcmUgPQotICBfcHl0ZXN0L192ZXJzaW9uLnB5Ci0KLVttZXRh
ZGF0YV0KLWxpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKK2lnbm9yZSA9IAorCXNyYy9fcHl0ZXN0L192
ZXJzaW9uLnB5CiAKIFtkZXZwaTp1cGxvYWRdCiBmb3JtYXRzID0gc2Rpc3QudGd6LGJkaXN0X3do
ZWVsCisKK1tteXB5XQorbXlweV9wYXRoID0gc3JjCitjaGVja191bnR5cGVkX2RlZnMgPSBUcnVl
CitkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVlCitpZ25vcmVfbWlzc2luZ19pbXBvcnRzID0g
VHJ1ZQorbm9faW1wbGljaXRfb3B0aW9uYWwgPSBUcnVlCitzaG93X2Vycm9yX2NvZGVzID0gVHJ1
ZQorc3RyaWN0X2VxdWFsaXR5ID0gVHJ1ZQord2Fybl9yZWR1bmRhbnRfY2FzdHMgPSBUcnVlCit3
YXJuX3JldHVybl9hbnkgPSBUcnVlCit3YXJuX3VucmVhY2hhYmxlID0gVHJ1ZQord2Fybl91bnVz
ZWRfY29uZmlncyA9IFRydWUKK25vX2ltcGxpY2l0X3JlZXhwb3J0ID0gVHJ1ZQorCitbZWdnX2lu
Zm9dCit0YWdfYnVpbGQgPSAKK3RhZ19kYXRlID0gMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NldHVwLnB5CmluZGV4IDNkNjBkNmJlY2Y4NC4uN2Yx
YTE3NjNjYTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zZXR1cC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zZXR1cC5weQpAQCAtMSwxMjQgKzEsNCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1p
bXBvcnQgc2V0dXB0b29scwotaW1wb3J0IHBrZ19yZXNvdXJjZXMKIGZyb20gc2V0dXB0b29scyBp
bXBvcnQgc2V0dXAKIAotY2xhc3NpZmllcnMgPSBbCi0gICAgIkRldmVsb3BtZW50IFN0YXR1cyA6
OiA2IC0gTWF0dXJlIiwKLSAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCi0g
ICAgIkxpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlIiwKLSAgICAiT3BlcmF0
aW5nIFN5c3RlbSA6OiBQT1NJWCIsCi0gICAgIk9wZXJhdGluZyBTeXN0ZW0gOjogTWljcm9zb2Z0
IDo6IFdpbmRvd3MiLAotICAgICJPcGVyYXRpbmcgU3lzdGVtIDo6IE1hY09TIDo6IE1hY09TIFgi
LAotICAgICJUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBUZXN0aW5nIiwKLSAgICAi
VG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIiwKLSAgICAiVG9waWMg
OjogVXRpbGl0aWVzIiwKLV0gKyBbCi0gICAgKCJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogJXMiICUgeCkKLSAgICBmb3IgeCBpbiAiMiAyLjcgMyAzLjQgMy41IDMuNiAzLjciLnNw
bGl0KCkKLV0KLQotd2l0aCBvcGVuKCJSRUFETUUucnN0IikgYXMgZmQ6Ci0gICAgbG9uZ19kZXNj
cmlwdGlvbiA9IGZkLnJlYWQoKQotCi0KLWRlZiBnZXRfZW52aXJvbm1lbnRfbWFya2VyX3N1cHBv
cnRfbGV2ZWwoKToKLSAgICAiIiIKLSAgICBUZXN0cyBob3cgd2VsbCBzZXR1cHRvb2xzIHN1cHBv
cnRzIFBFUC00MjYgZW52aXJvbm1lbnQgbWFya2VyLgotCi0gICAgVGhlIGZpcnN0IGtub3duIHJl
bGVhc2UgdG8gc3VwcG9ydCBpdCBpcyAwLjcgKGFuZCB0aGUgZWFybGllc3Qgb24gUHlQSSBzZWVt
cyB0byBiZSAwLjcuMgotICAgIHNvIHdlJ3JlIHVzaW5nIHRoYXQpLCBzZWU6IGh0dHBzOi8vc2V0
dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaGlzdG9yeS5odG1sI2lkMzUwCi0KLSAg
ICBUaGUgc3VwcG9ydCBpcyBsYXRlciBlbmhhbmNlZCB0byBhbGxvdyBkaXJlY3QgY29uZGl0aW9u
YWwgaW5jbHVzaW9ucyBpbnNpZGUgaW5zdGFsbF9yZXF1aXJlcywKLSAgICB3aGljaCBpcyBub3cg
cmVjb21tZW5kZWQgYnkgc2V0dXB0b29scy4gSXQgZmlyc3QgYXBwZWFyZWQgaW4gMzYuMi4wLCB3
ZW50IGJyb2tlbiB3aXRoIDM2LjIuMSwgYW5kCi0gICAgYWdhaW4gd29ya2VkIHNpbmNlIDM2LjIu
Miwgc28gd2UncmUgdXNpbmcgdGhhdC4gU2VlOgotICAgIGh0dHBzOi8vc2V0dXB0b29scy5yZWFk
dGhlZG9jcy5pby9lbi9sYXRlc3QvaGlzdG9yeS5odG1sI3YzNi0yLTIKLSAgICBodHRwczovL2dp
dGh1Yi5jb20vcHlwYS9zZXR1cHRvb2xzL2lzc3Vlcy8xMDk5Ci0KLSAgICBSZWZlcmVuY2VzOgot
Ci0gICAgKiBodHRwczovL3doZWVsLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9pbmRleC5odG1s
I2RlZmluaW5nLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcwotICAgICogaHR0cHM6Ly93d3cucHl0
aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQyNi8jZW52aXJvbm1lbnQtbWFya2VycwotICAgICogaHR0
cHM6Ly9zZXR1cHRvb2xzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9zZXR1cHRvb2xzLmh0bWwj
ZGVjbGFyaW5nLXBsYXRmb3JtLXNwZWNpZmljLWRlcGVuZGVuY2llcwotICAgICIiIgotICAgIHRy
eToKLSAgICAgICAgdmVyc2lvbiA9IHBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbihzZXR1cHRv
b2xzLl9fdmVyc2lvbl9fKQotICAgICAgICBpZiB2ZXJzaW9uID49IHBrZ19yZXNvdXJjZXMucGFy
c2VfdmVyc2lvbigiMzYuMi4yIik6Ci0gICAgICAgICAgICByZXR1cm4gMgotICAgICAgICBpZiB2
ZXJzaW9uID49IHBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbigiMC43LjIiKToKLSAgICAgICAg
ICAgIHJldHVybiAxCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6Ci0gICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoIkNvdWxkIG5vdCB0ZXN0IHNldHVwdG9vbCdzIHZlcnNpb246ICVzXG4iICUg
ZXhjKQotCi0gICAgIyBhcyBvZiB0ZXN0aW5nIG9uIDIwMTgtMDUtMjYgZmVkb3JhIHdhcyBvbiB2
ZXJzaW9uIDM3KiBhbmQgZGViaWFuIHdhcyBvbiB2ZXJzaW9uIDMzKwotICAgICMgd2Ugc2hvdWxk
IGNvbnNpZGVyIGVycm9yaW5nIG9uIHRob3NlCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgbWFpbigp
OgotICAgIGV4dHJhc19yZXF1aXJlID0ge30KLSAgICBpbnN0YWxsX3JlcXVpcmVzID0gWwotICAg
ICAgICAicHk+PTEuNS4wIiwKLSAgICAgICAgInNpeD49MS4xMC4wIiwKLSAgICAgICAgInNldHVw
dG9vbHMiLAotICAgICAgICAiYXR0cnM+PTE3LjQuMCIsCi0gICAgICAgICJtb3JlLWl0ZXJ0b29s
cz49NC4wLjAiLAotICAgICAgICAiYXRvbWljd3JpdGVzPj0xLjAiLAotICAgIF0KLSAgICAjIGlm
IF9QWVRFU1RfU0VUVVBfU0tJUF9QTFVHR1lfREVQIGlzIHNldCwgc2tpcCBpbnN0YWxsaW5nIHBs
dWdneTsKLSAgICAjIHVzZWQgYnkgdG94LmluaSB0byB0ZXN0IHdpdGggcGx1Z2d5IG1hc3Rlcgot
ICAgIGlmICJfUFlURVNUX1NFVFVQX1NLSVBfUExVR0dZX0RFUCIgbm90IGluIG9zLmVudmlyb246
Ci0gICAgICAgIGluc3RhbGxfcmVxdWlyZXMuYXBwZW5kKCJwbHVnZ3k+PTAuNSw8MC43IikKLSAg
ICBlbnZpcm9ubWVudF9tYXJrZXJfc3VwcG9ydF9sZXZlbCA9IGdldF9lbnZpcm9ubWVudF9tYXJr
ZXJfc3VwcG9ydF9sZXZlbCgpCi0gICAgaWYgZW52aXJvbm1lbnRfbWFya2VyX3N1cHBvcnRfbGV2
ZWwgPj0gMjoKLSAgICAgICAgaW5zdGFsbF9yZXF1aXJlcy5hcHBlbmQoJ2Z1bmNzaWdzO3B5dGhv
bl92ZXJzaW9uPCIzLjAiJykKLSAgICAgICAgaW5zdGFsbF9yZXF1aXJlcy5hcHBlbmQoJ2NvbG9y
YW1hO3N5c19wbGF0Zm9ybT09IndpbjMyIicpCi0gICAgZWxpZiBlbnZpcm9ubWVudF9tYXJrZXJf
c3VwcG9ydF9sZXZlbCA9PSAxOgotICAgICAgICBleHRyYXNfcmVxdWlyZVsnOnB5dGhvbl92ZXJz
aW9uPCIzLjAiJ10gPSBbImZ1bmNzaWdzIl0KLSAgICAgICAgZXh0cmFzX3JlcXVpcmVbJzpzeXNf
cGxhdGZvcm09PSJ3aW4zMiInXSA9IFsiY29sb3JhbWEiXQotICAgIGVsc2U6Ci0gICAgICAgIGlm
IHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgaW5zdGFsbF9yZXF1aXJlcy5h
cHBlbmQoImNvbG9yYW1hIikKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToK
LSAgICAgICAgICAgIGluc3RhbGxfcmVxdWlyZXMuYXBwZW5kKCJmdW5jc2lncyIpCi0KLSAgICBz
ZXR1cCgKLSAgICAgICAgbmFtZT0icHl0ZXN0IiwKLSAgICAgICAgZGVzY3JpcHRpb249InB5dGVz
dDogc2ltcGxlIHBvd2VyZnVsIHRlc3Rpbmcgd2l0aCBQeXRob24iLAotICAgICAgICBsb25nX2Rl
c2NyaXB0aW9uPWxvbmdfZGVzY3JpcHRpb24sCi0gICAgICAgIHVzZV9zY21fdmVyc2lvbj17Indy
aXRlX3RvIjogInNyYy9fcHl0ZXN0L192ZXJzaW9uLnB5In0sCi0gICAgICAgIHVybD0iaHR0cDov
L3B5dGVzdC5vcmciLAotICAgICAgICBwcm9qZWN0X3VybHM9ewotICAgICAgICAgICAgIlNvdXJj
ZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QiLAotICAgICAgICAgICAg
IlRyYWNrZXIiOiAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3VlcyIs
Ci0gICAgICAgIH0sCi0gICAgICAgIGxpY2Vuc2U9Ik1JVCBsaWNlbnNlIiwKLSAgICAgICAgcGxh
dGZvcm1zPVsidW5peCIsICJsaW51eCIsICJvc3giLCAiY3lnd2luIiwgIndpbjMyIl0sCi0gICAg
ICAgIGF1dGhvcj0oCi0gICAgICAgICAgICAiSG9sZ2VyIEtyZWtlbCwgQnJ1bm8gT2xpdmVpcmEs
IFJvbm55IFBmYW5uc2NobWlkdCwgIgotICAgICAgICAgICAgIkZsb3JpcyBCcnV5bm9vZ2hlLCBC
cmlhbm5hIExhdWdoZXIsIEZsb3JpYW4gQnJ1aGluIGFuZCBvdGhlcnMiCi0gICAgICAgICksCi0g
ICAgICAgIGVudHJ5X3BvaW50cz17ImNvbnNvbGVfc2NyaXB0cyI6IFsicHl0ZXN0PXB5dGVzdDpt
YWluIiwgInB5LnRlc3Q9cHl0ZXN0Om1haW4iXX0sCi0gICAgICAgIGNsYXNzaWZpZXJzPWNsYXNz
aWZpZXJzLAotICAgICAgICBrZXl3b3Jkcz0idGVzdCB1bml0dGVzdCIsCi0gICAgICAgICMgdGhl
IGZvbGxvd2luZyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgcmVsZWFzZQotICAgICAgICBzZXR1cF9y
ZXF1aXJlcz1bInNldHVwdG9vbHMtc2NtIl0sCi0gICAgICAgIHBhY2thZ2VfZGlyPXsiIjogInNy
YyJ9LAotICAgICAgICBweXRob25fcmVxdWlyZXM9Ij49Mi43LCAhPTMuMC4qLCAhPTMuMS4qLCAh
PTMuMi4qLCAhPTMuMy4qIiwKLSAgICAgICAgaW5zdGFsbF9yZXF1aXJlcz1pbnN0YWxsX3JlcXVp
cmVzLAotICAgICAgICBleHRyYXNfcmVxdWlyZT1leHRyYXNfcmVxdWlyZSwKLSAgICAgICAgcGFj
a2FnZXM9WwotICAgICAgICAgICAgIl9weXRlc3QiLAotICAgICAgICAgICAgIl9weXRlc3QuYXNz
ZXJ0aW9uIiwKLSAgICAgICAgICAgICJfcHl0ZXN0Ll9jb2RlIiwKLSAgICAgICAgICAgICJfcHl0
ZXN0Lm1hcmsiLAotICAgICAgICAgICAgIl9weXRlc3QuY29uZmlnIiwKLSAgICAgICAgXSwKLSAg
ICAgICAgcHlfbW9kdWxlcz1bInB5dGVzdCJdLAotICAgICAgICB6aXBfc2FmZT1GYWxzZSwKLSAg
ICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKKyAgICBzZXR1
cCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fYXJnY29tcGxldGUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKaW5kZXggOGY0ODBkNzFk
NzlmLi4zZGJkZjkzMThiZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19h
cmdjb21wbGV0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fYXJnY29tcGxldGUu
cHkKQEAgLTEsOCArMSw4IEBACisiIiJBbGxvdyBiYXNoLWNvbXBsZXRpb24gZm9yIGFyZ3BhcnNl
IHdpdGggYXJnY29tcGxldGUgaWYgaW5zdGFsbGVkLgogCi0iIiJhbGxvdyBiYXNoLWNvbXBsZXRp
b24gZm9yIGFyZ3BhcnNlIHdpdGggYXJnY29tcGxldGUgaWYgaW5zdGFsbGVkCi1uZWVkcyBhcmdj
b21wbGV0ZT49MC41LjYgZm9yIHB5dGhvbiAzLjIvMy4zIChvbGRlciB2ZXJzaW9ucyBmYWlsCitO
ZWVkcyBhcmdjb21wbGV0ZT49MC41LjYgZm9yIHB5dGhvbiAzLjIvMy4zIChvbGRlciB2ZXJzaW9u
cyBmYWlsCiB0byBmaW5kIHRoZSBtYWdpYyBzdHJpbmcsIHNvIF9BUkdDT01QTEVURSBlbnYuIHZh
ciBpcyBuZXZlciBzZXQsIGFuZAotdGhpcyBkb2VzIG5vdCBuZWVkIHNwZWNpYWwgY29kZS4KK3Ro
aXMgZG9lcyBub3QgbmVlZCBzcGVjaWFsIGNvZGUpLgogCiBGdW5jdGlvbiB0cnlfYXJnY29tcGxl
dGUocGFyc2VyKSBzaG91bGQgYmUgY2FsbGVkIGRpcmVjdGx5IGJlZm9yZQogdGhlIGNhbGwgdG8g
QXJndW1lbnRQYXJzZXIucGFyc2VfYXJncygpLgpAQCAtMTEsOCArMTEsNyBAQCBUaGUgZmlsZXNj
b21wbGV0ZXIgaXMgd2hhdCB5b3Ugbm9ybWFsbHkgd291bGQgdXNlIG9uIHRoZSBwb3NpdGlvbmFs
CiBhcmd1bWVudHMgc3BlY2lmaWNhdGlvbiwgaW4gb3JkZXIgdG8gZ2V0ICJkaXJuYW1lLyIgYWZ0
ZXIgImRpcm48VEFCPiIKIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgImRpcm5hbWUgIjoKIAotICAg
b3B0cGFyc2VyLmFkZF9hcmd1bWVudChDb25maWcuX2ZpbGVfb3JfZGlyLCBuYXJncz0nKicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmNvbXBsZXRlcj1maWxlc2NvbXBsZXRlcgor
ICAgb3B0cGFyc2VyLmFkZF9hcmd1bWVudChDb25maWcuX2ZpbGVfb3JfZGlyLCBuYXJncz0nKicp
LmNvbXBsZXRlcj1maWxlc2NvbXBsZXRlcgogCiBPdGhlciwgYXBwbGljYXRpb24gc3BlY2lmaWMs
IGNvbXBsZXRlcnMgc2hvdWxkIGdvIGluIHRoZSBmaWxlCiBkb2luZyB0aGUgYWRkX2FyZ3VtZW50
IGNhbGxzIGFzIHRoZXkgbmVlZCB0byBiZSBzcGVjaWZpZWQgYXMgLmNvbXBsZXRlcgpAQCAtMjEs
NTMgKzIwLDY0IEBAIGF0dHJpYnV0ZSBwb2ludHMgdG8gd2lsbCBub3QgYmUgdXNlZCkuCiAKIFNQ
RUVEVVAKID09PT09PT0KKwogVGhlIGdlbmVyaWMgYXJnY29tcGxldGUgc2NyaXB0IGZvciBiYXNo
LWNvbXBsZXRpb24KLSgvZXRjL2Jhc2hfY29tcGxldGlvbi5kL3B5dGhvbi1hcmdjb21wbGV0ZS5z
aCApCisoL2V0Yy9iYXNoX2NvbXBsZXRpb24uZC9weXRob24tYXJnY29tcGxldGUuc2gpCiB1c2Vz
IGEgcHl0aG9uIHByb2dyYW0gdG8gZGV0ZXJtaW5lIHN0YXJ0dXAgc2NyaXB0IGdlbmVyYXRlZCBi
eSBwaXAuCiBZb3UgY2FuIHNwZWVkIHVwIGNvbXBsZXRpb24gc29tZXdoYXQgYnkgY2hhbmdpbmcg
dGhpcyBzY3JpcHQgdG8gaW5jbHVkZQogICAjIFBZVEhPTl9BUkdDT01QTEVURV9PSwogc28gdGhl
IHRoZSBweXRob24tYXJnY29tcGxldGUtY2hlY2stZWFzeS1pbnN0YWxsLXNjcmlwdCBkb2VzIG5v
dAogbmVlZCB0byBiZSBjYWxsZWQgdG8gZmluZCB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIGNvZGUg
YW5kIHNlZSBpZiB0aGF0IGlzCi1tYXJrZWQgIHdpdGggUFlUSE9OX0FSR0NPTVBMRVRFX09LCitt
YXJrZWQgIHdpdGggUFlUSE9OX0FSR0NPTVBMRVRFX09LLgogCiBJTlNUQUxML0RFQlVHR0lORwog
PT09PT09PT09PT09PT09PT0KKwogVG8gaW5jbHVkZSB0aGlzIHN1cHBvcnQgaW4gYW5vdGhlciBh
cHBsaWNhdGlvbiB0aGF0IGhhcyBzZXR1cC5weSBnZW5lcmF0ZWQKIHNjcmlwdHM6Ci0tIGFkZCB0
aGUgbGluZToKKworLSBBZGQgdGhlIGxpbmU6CiAgICAgIyBQWVRIT05fQVJHQ09NUExFVEVfT0sK
LSAgbmVhciB0aGUgdG9wIG9mIHRoZSBtYWluIHB5dGhvbiBlbnRyeSBwb2ludAotLSBpbmNsdWRl
IGluIHRoZSBmaWxlIGNhbGxpbmcgcGFyc2VfYXJncygpOgorICBuZWFyIHRoZSB0b3Agb2YgdGhl
IG1haW4gcHl0aG9uIGVudHJ5IHBvaW50LgorCistIEluY2x1ZGUgaW4gdGhlIGZpbGUgY2FsbGlu
ZyBwYXJzZV9hcmdzKCk6CiAgICAgZnJvbSBfYXJnY29tcGxldGUgaW1wb3J0IHRyeV9hcmdjb21w
bGV0ZSwgZmlsZXNjb21wbGV0ZXIKLSAgICwgY2FsbCB0cnlfYXJnY29tcGxldGUganVzdCBiZWZv
cmUgcGFyc2VfYXJncygpLCBhbmQgb3B0aW9uYWxseSBhZGQKLSAgIGZpbGVzY29tcGxldGVyIHRv
IHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cycgYWRkX2FyZ3VtZW50KCkKKyAgQ2FsbCB0cnlfYXJn
Y29tcGxldGUganVzdCBiZWZvcmUgcGFyc2VfYXJncygpLCBhbmQgb3B0aW9uYWxseSBhZGQKKyAg
ZmlsZXNjb21wbGV0ZXIgdG8gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzJyBhZGRfYXJndW1lbnQo
KS4KKwogSWYgdGhpbmdzIGRvIG5vdCB3b3JrIHJpZ2h0IGF3YXk6Ci0tIHN3aXRjaCBvbiBhcmdj
b21wbGV0ZSBkZWJ1Z2dpbmcgd2l0aCAoYWxzbyBoZWxwZnVsIHdoZW4gZG9pbmcgY3VzdG9tCisK
Ky0gU3dpdGNoIG9uIGFyZ2NvbXBsZXRlIGRlYnVnZ2luZyB3aXRoIChhbHNvIGhlbHBmdWwgd2hl
biBkb2luZyBjdXN0b20KICAgY29tcGxldGVycyk6CiAgICAgZXhwb3J0IF9BUkNfREVCVUc9MQot
LSBydW46CisKKy0gUnVuOgogICAgIHB5dGhvbi1hcmdjb21wbGV0ZS1jaGVjay1lYXN5LWluc3Rh
bGwtc2NyaXB0ICQod2hpY2ggYXBwbmFtZSkKICAgICBlY2hvICQ/Ci0gIHdpbGwgZWNobyAwIGlm
IHRoZSBtYWdpYyBsaW5lIGhhcyBiZWVuIGZvdW5kLCAxIGlmIG5vdAotLSBzb21ldGltZXMgaXQg
aGVscHMgdG8gZmluZCBlYXJseSBvbiBlcnJvcnMgdXNpbmc6CisgIHdpbGwgZWNobyAwIGlmIHRo
ZSBtYWdpYyBsaW5lIGhhcyBiZWVuIGZvdW5kLCAxIGlmIG5vdC4KKworLSBTb21ldGltZXMgaXQg
aGVscHMgdG8gZmluZCBlYXJseSBvbiBlcnJvcnMgdXNpbmc6CiAgICAgX0FSR0NPTVBMRVRFPTEg
X0FSQ19ERUJVRz0xIGFwcG5hbWUKICAgd2hpY2ggc2hvdWxkIHRocm93IGEgS2V5RXJyb3I6ICdD
T01QTElORScgKHdoaWNoIGlzIHByb3Blcmx5IHNldCBieSB0aGUKICAgZ2xvYmFsIGFyZ2NvbXBs
ZXRlIHNjcmlwdCkuCiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKK2ltcG9ydCBhcmdwYXJzZQog
aW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKK2Zyb20gdHlwaW5n
IGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQg
T3B0aW9uYWwKIAogCi1jbGFzcyBGYXN0RmlsZXNDb21wbGV0ZXIob2JqZWN0KToKLSAgICAiRmFz
dCBmaWxlIGNvbXBsZXRlciBjbGFzcyIKK2NsYXNzIEZhc3RGaWxlc0NvbXBsZXRlcjoKKyAgICAi
IiJGYXN0IGZpbGUgY29tcGxldGVyIGNsYXNzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGRpcmVjdG9yaWVzPVRydWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXJlY3Rvcmllczog
Ym9vbCA9IFRydWUpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuZGlyZWN0b3JpZXMgPSBkaXJlY3Rv
cmllcwogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHByZWZpeCwgKiprd2FyZ3MpOgotICAgICAg
ICAiIiJvbmx5IGNhbGxlZCBvbiBub24gb3B0aW9uIGNvbXBsZXRpb25zIiIiCisgICAgZGVmIF9f
Y2FsbF9fKHNlbGYsIHByZWZpeDogc3RyLCAqKmt3YXJnczogQW55KSAtPiBMaXN0W3N0cl06Cisg
ICAgICAgICMgT25seSBjYWxsZWQgb24gbm9uIG9wdGlvbiBjb21wbGV0aW9ucy4KICAgICAgICAg
aWYgb3MucGF0aC5zZXAgaW4gcHJlZml4WzE6XToKICAgICAgICAgICAgIHByZWZpeF9kaXIgPSBs
ZW4ob3MucGF0aC5kaXJuYW1lKHByZWZpeCkgKyBvcy5wYXRoLnNlcCkKICAgICAgICAgZWxzZToK
QEAgLTc1LDcgKzg1LDcgQEAgY2xhc3MgRmFzdEZpbGVzQ29tcGxldGVyKG9iamVjdCk6CiAgICAg
ICAgIGNvbXBsZXRpb24gPSBbXQogICAgICAgICBnbG9iYmVkID0gW10KICAgICAgICAgaWYgIioi
IG5vdCBpbiBwcmVmaXggYW5kICI/IiBub3QgaW4gcHJlZml4OgotICAgICAgICAgICAgIyB3ZSBh
cmUgb24gdW5peCwgb3RoZXJ3aXNlIG5vIGJhc2gKKyAgICAgICAgICAgICMgV2UgYXJlIG9uIHVu
aXgsIG90aGVyd2lzZSBubyBiYXNoLgogICAgICAgICAgICAgaWYgbm90IHByZWZpeCBvciBwcmVm
aXhbLTFdID09IG9zLnBhdGguc2VwOgogICAgICAgICAgICAgICAgIGdsb2JiZWQuZXh0ZW5kKGds
b2IocHJlZml4ICsgIi4qIikpCiAgICAgICAgICAgICBwcmVmaXggKz0gIioiCkBAIC04Myw3ICs5
Myw3IEBAIGNsYXNzIEZhc3RGaWxlc0NvbXBsZXRlcihvYmplY3QpOgogICAgICAgICBmb3IgeCBp
biBzb3J0ZWQoZ2xvYmJlZCk6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHgpOgogICAg
ICAgICAgICAgICAgIHggKz0gIi8iCi0gICAgICAgICAgICAjIGFwcGVuZCBzdHJpcHBpbmcgdGhl
IHByZWZpeCAobGlrZSBiYXNoLCBub3QgbGlrZSBjb21wZ2VuKQorICAgICAgICAgICAgIyBBcHBl
bmQgc3RyaXBwaW5nIHRoZSBwcmVmaXggKGxpa2UgYmFzaCwgbm90IGxpa2UgY29tcGdlbikuCiAg
ICAgICAgICAgICBjb21wbGV0aW9uLmFwcGVuZCh4W3ByZWZpeF9kaXI6XSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb24KIApAQCAtOTMsMTUgKzEwMywxNSBAQCBpZiBvcy5lbnZpcm9uLmdldCgi
X0FSR0NPTVBMRVRFIik6CiAgICAgICAgIGltcG9ydCBhcmdjb21wbGV0ZS5jb21wbGV0ZXJzCiAg
ICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBzeXMuZXhpdCgtMSkKLSAgICBmaWxlc2Nv
bXBsZXRlciA9IEZhc3RGaWxlc0NvbXBsZXRlcigpCisgICAgZmlsZXNjb21wbGV0ZXIgPSBGYXN0
RmlsZXNDb21wbGV0ZXIoKSAgIyB0eXBlOiBPcHRpb25hbFtGYXN0RmlsZXNDb21wbGV0ZXJdCiAK
LSAgICBkZWYgdHJ5X2FyZ2NvbXBsZXRlKHBhcnNlcik6CisgICAgZGVmIHRyeV9hcmdjb21wbGV0
ZShwYXJzZXI6IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKSAtPiBOb25lOgogICAgICAgICBhcmdj
b21wbGV0ZS5hdXRvY29tcGxldGUocGFyc2VyLCBhbHdheXNfY29tcGxldGVfb3B0aW9ucz1GYWxz
ZSkKIAogCiBlbHNlOgogCi0gICAgZGVmIHRyeV9hcmdjb21wbGV0ZShwYXJzZXIpOgorICAgIGRl
ZiB0cnlfYXJnY29tcGxldGUocGFyc2VyOiBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcikgLT4gTm9u
ZToKICAgICAgICAgcGFzcwogCiAgICAgZmlsZXNjb21wbGV0ZXIgPSBOb25lCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L19jb2RlL19faW5pdF9fLnB5CmluZGV4IDgxNWMxM2I0MmMyNS4uNTExZDBk
ZGU2NjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fX2luaXRf
Xy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weQpAQCAt
MSwxMCArMSwyMiBAQAotIiIiIHB5dGhvbiBpbnNwZWN0aW9uL2NvZGUgZ2VuZXJhdGlvbiBBUEkg
IiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCi1mcm9tIC5jb2RlIGltcG9ydCBDb2RlICAjIG5vcWEKLWZyb20gLmNvZGUg
aW1wb3J0IEV4Y2VwdGlvbkluZm8gICMgbm9xYQotZnJvbSAuY29kZSBpbXBvcnQgRnJhbWUgICMg
bm9xYQotZnJvbSAuY29kZSBpbXBvcnQgVHJhY2ViYWNrICAjIG5vcWEKLWZyb20gLmNvZGUgaW1w
b3J0IGdldHJhd2NvZGUgICMgbm9xYQotZnJvbSAuc291cmNlIGltcG9ydCBTb3VyY2UgICMgbm9x
YQotZnJvbSAuc291cmNlIGltcG9ydCBjb21waWxlXyBhcyBjb21waWxlICAjIG5vcWEKLWZyb20g
LnNvdXJjZSBpbXBvcnQgZ2V0ZnNsaW5lbm8gICMgbm9xYQorIiIiUHl0aG9uIGluc3BlY3Rpb24v
Y29kZSBnZW5lcmF0aW9uIEFQSS4iIiIKK2Zyb20gLmNvZGUgaW1wb3J0IENvZGUKK2Zyb20gLmNv
ZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8KK2Zyb20gLmNvZGUgaW1wb3J0IGZpbHRlcl90cmFjZWJh
Y2sKK2Zyb20gLmNvZGUgaW1wb3J0IEZyYW1lCitmcm9tIC5jb2RlIGltcG9ydCBnZXRmc2xpbmVu
bworZnJvbSAuY29kZSBpbXBvcnQgVHJhY2ViYWNrCitmcm9tIC5jb2RlIGltcG9ydCBUcmFjZWJh
Y2tFbnRyeQorZnJvbSAuc291cmNlIGltcG9ydCBnZXRyYXdjb2RlCitmcm9tIC5zb3VyY2UgaW1w
b3J0IFNvdXJjZQorCitfX2FsbF9fID0gWworICAgICJDb2RlIiwKKyAgICAiRXhjZXB0aW9uSW5m
byIsCisgICAgImZpbHRlcl90cmFjZWJhY2siLAorICAgICJGcmFtZSIsCisgICAgImdldGZzbGlu
ZW5vIiwKKyAgICAiZ2V0cmF3Y29kZSIsCisgICAgIlRyYWNlYmFjayIsCisgICAgIlRyYWNlYmFj
a0VudHJ5IiwKKyAgICAiU291cmNlIiwKK10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L19jb2RlL19weTJ0cmFjZWJhY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9f
Y29kZS9fcHkydHJhY2ViYWNrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGQx
MDBjMzNiZGQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29k
ZS9fcHkydHJhY2ViYWNrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotIyBjb3Bp
ZWQgZnJvbSBweXRob24tMi43LjMncyB0cmFjZWJhY2sucHkKLSMgQ0hBTkdFUzoKLSMgLSBzb21l
X3N0ciBpcyByZXBsYWNlZCwgdHJ5aW5nIHRvIGNyZWF0ZSB1bmljb2RlIHN0cmluZ3MKLSMKLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVu
Y3Rpb24KLWltcG9ydCB0eXBlcwotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotCi0KLWRlZiBm
b3JtYXRfZXhjZXB0aW9uX29ubHkoZXR5cGUsIHZhbHVlKToKLSAgICAiIiJGb3JtYXQgdGhlIGV4
Y2VwdGlvbiBwYXJ0IG9mIGEgdHJhY2ViYWNrLgotCi0gICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhl
IGV4Y2VwdGlvbiB0eXBlIGFuZCB2YWx1ZSBzdWNoIGFzIGdpdmVuIGJ5Ci0gICAgc3lzLmxhc3Rf
dHlwZSBhbmQgc3lzLmxhc3RfdmFsdWUuIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBsaXN0IG9mCi0g
ICAgc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lLgotCi0gICAgTm9ybWFsbHksIHRo
ZSBsaXN0IGNvbnRhaW5zIGEgc2luZ2xlIHN0cmluZzsgaG93ZXZlciwgZm9yCi0gICAgU3ludGF4
RXJyb3IgZXhjZXB0aW9ucywgaXQgY29udGFpbnMgc2V2ZXJhbCBsaW5lcyB0aGF0ICh3aGVuCi0g
ICAgcHJpbnRlZCkgZGlzcGxheSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUg
c3ludGF4Ci0gICAgZXJyb3Igb2NjdXJyZWQuCi0KLSAgICBUaGUgbWVzc2FnZSBpbmRpY2F0aW5n
IHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxhc3QKLSAgICBzdHJpbmcg
aW4gdGhlIGxpc3QuCi0KLSAgICAiIiIKLQotICAgICMgQW4gaW5zdGFuY2Ugc2hvdWxkIG5vdCBo
YXZlIGEgbWVhbmluZ2Z1bCB2YWx1ZSBwYXJhbWV0ZXIsIGJ1dAotICAgICMgc29tZXRpbWVzIGRv
ZXMsIHBhcnRpY3VsYXJseSBmb3Igc3RyaW5nIGV4Y2VwdGlvbnMsIHN1Y2ggYXMKLSAgICAjID4+
PiByYWlzZSBzdHJpbmcxLCBzdHJpbmcyICAjIGRlcHJlY2F0ZWQKLSAgICAjCi0gICAgIyBDbGVh
ciB0aGVzZSBvdXQgZmlyc3QgYmVjYXVzZSBpc3N1YnR5cGUoc3RyaW5nMSwgU3ludGF4RXJyb3Ip
Ci0gICAgIyB3b3VsZCB0aHJvdyBhbm90aGVyIGV4Y2VwdGlvbiBhbmQgbWFzayB0aGUgb3JpZ2lu
YWwgcHJvYmxlbS4KLSAgICBpZiAoCi0gICAgICAgIGlzaW5zdGFuY2UoZXR5cGUsIEJhc2VFeGNl
cHRpb24pCi0gICAgICAgIG9yIGlzaW5zdGFuY2UoZXR5cGUsIHR5cGVzLkluc3RhbmNlVHlwZSkK
LSAgICAgICAgb3IgZXR5cGUgaXMgTm9uZQotICAgICAgICBvciB0eXBlKGV0eXBlKSBpcyBzdHIK
LSAgICApOgotICAgICAgICByZXR1cm4gW19mb3JtYXRfZmluYWxfZXhjX2xpbmUoZXR5cGUsIHZh
bHVlKV0KLQotICAgIHN0eXBlID0gZXR5cGUuX19uYW1lX18KLQotICAgIGlmIG5vdCBpc3N1YmNs
YXNzKGV0eXBlLCBTeW50YXhFcnJvcik6Ci0gICAgICAgIHJldHVybiBbX2Zvcm1hdF9maW5hbF9l
eGNfbGluZShzdHlwZSwgdmFsdWUpXQotCi0gICAgIyBJdCB3YXMgYSBzeW50YXggZXJyb3I7IHNo
b3cgZXhhY3RseSB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQuCi0gICAgbGluZXMgPSBbXQot
ICAgIHRyeToKLSAgICAgICAgbXNnLCAoZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBiYWRsaW5l
KSA9IHZhbHVlLmFyZ3MKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBwYXNzCi0gICAg
ZWxzZToKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSBvciAiPHN0cmluZz4iCi0gICAgICAg
IGxpbmVzLmFwcGVuZCgnICBGaWxlICIlcyIsIGxpbmUgJWRcbicgJSAoZmlsZW5hbWUsIGxpbmVu
bykpCi0gICAgICAgIGlmIGJhZGxpbmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGJhZGxpbmUsIGJ5dGVzKTogICMgcHl0aG9uIDIgb25seQotICAgICAgICAgICAgICAg
IGJhZGxpbmUgPSBiYWRsaW5lLmRlY29kZSgidXRmLTgiLCAicmVwbGFjZSIpCi0gICAgICAgICAg
ICBsaW5lcy5hcHBlbmQodSIgICAgJXNcbiIgJSBiYWRsaW5lLnN0cmlwKCkpCi0gICAgICAgICAg
ICBpZiBvZmZzZXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGJh
ZGxpbmUucnN0cmlwKCJcbiIpWzpvZmZzZXRdLmxzdHJpcCgpCi0gICAgICAgICAgICAgICAgIyBu
b24tc3BhY2Ugd2hpdGVzcGFjZSAobGlrZXMgdGFicykgbXVzdCBiZSBrZXB0IGZvciBhbGlnbm1l
bnQKLSAgICAgICAgICAgICAgICBjYXJldHNwYWNlID0gKChjLmlzc3BhY2UoKSBhbmQgYyBvciAi
ICIpIGZvciBjIGluIGNhcmV0c3BhY2UpCi0gICAgICAgICAgICAgICAgIyBvbmx5IHRocmVlIHNw
YWNlcyB0byBhY2NvdW50IGZvciBvZmZzZXQxID09IHBvcyAwCi0gICAgICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCIgICAlc15cbiIgJSAiIi5qb2luKGNhcmV0c3BhY2UpKQotICAgICAgICB2YWx1
ZSA9IG1zZwotCi0gICAgbGluZXMuYXBwZW5kKF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUs
IHZhbHVlKSkKLSAgICByZXR1cm4gbGluZXMKLQotCi1kZWYgX2Zvcm1hdF9maW5hbF9leGNfbGlu
ZShldHlwZSwgdmFsdWUpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYSBzaW5nbGUgbGluZSAt
LSBub3JtYWwgY2FzZSBmb3IgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5IiIiCi0gICAgdmFsdWVzdHIg
PSBfc29tZV9zdHIodmFsdWUpCi0gICAgaWYgdmFsdWUgaXMgTm9uZSBvciBub3QgdmFsdWVzdHI6
Ci0gICAgICAgIGxpbmUgPSAiJXNcbiIgJSBldHlwZQotICAgIGVsc2U6Ci0gICAgICAgIGxpbmUg
PSAiJXM6ICVzXG4iICUgKGV0eXBlLCB2YWx1ZXN0cikKLSAgICByZXR1cm4gbGluZQotCi0KLWRl
ZiBfc29tZV9zdHIodmFsdWUpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHRleHRfdHlwZSh2
YWx1ZSkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RyKHZhbHVlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAg
cGFzcwotICAgIHJldHVybiAiPHVucHJpbnRhYmxlICVzIG9iamVjdD4iICUgdHlwZSh2YWx1ZSku
X19uYW1lX18KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2RlL2NvZGUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9jb2RlLnB5CmluZGV4IGNiNzg4YzE3
ZjA0Yi4uNTA2M2U2NjA0Nzc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9f
Y29kZS9jb2RlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2RlL2NvZGUucHkK
QEAgLTEsODYgKzEsMTExIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHJlCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIGluc3BlY3QgaW1wb3J0IENPX1ZBUkFS
R1MsIENPX1ZBUktFWVdPUkRTCitmcm9tIGluc3BlY3QgaW1wb3J0IENPX1ZBUkFSR1MKK2Zyb20g
aW5zcGVjdCBpbXBvcnQgQ09fVkFSS0VZV09SRFMKK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitm
cm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5Citmcm9tIHR5cGVzIGlt
cG9ydCBDb2RlVHlwZQorZnJvbSB0eXBlcyBpbXBvcnQgRnJhbWVUeXBlCitmcm9tIHR5cGVzIGlt
cG9ydCBUcmFjZWJhY2tUeXBlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBp
bXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBv
cnQgR2VuZXJpYworZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCitmcm9tIHR5cGluZyBpbXBv
cnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBP
cHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFBhdHRlcm4KK2Zyb20gdHlwaW5nIGltcG9ydCBT
ZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxl
Citmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCitm
cm9tIHdlYWtyZWYgaW1wb3J0IHJlZgogCiBpbXBvcnQgYXR0cgotaW1wb3J0IHJlCi1mcm9tIHdl
YWtyZWYgaW1wb3J0IHJlZgotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX1BZMiwgX1BZMywg
UFkzNSwgc2FmZV9zdHIKLWZyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUKK2ltcG9ydCBwbHVnZ3kK
IGltcG9ydCBweQogCi1idWlsdGluX3JlcHIgPSByZXByCi0KLWlmIF9QWTM6Ci0gICAgZnJvbSB0
cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGNlcHRpb25fb25seQotZWxzZToKLSAgICBmcm9tIC5f
cHkydHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjZXB0aW9uX29ubHkKLQotCi1jbGFzcyBDb2Rl
KG9iamVjdCk6Ci0gICAgIiIiIHdyYXBwZXIgYXJvdW5kIFB5dGhvbiBjb2RlIG9iamVjdHMgIiIi
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3Y29kZSk6CitpbXBvcnQgX3B5dGVzdAorZnJv
bSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBpbXBvcnQgZmluZHNvdXJjZQorZnJvbSBfcHl0ZXN0Ll9j
b2RlLnNvdXJjZSBpbXBvcnQgZ2V0cmF3Y29kZQorZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBp
bXBvcnQgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0Citmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGlt
cG9ydCBTb3VyY2UKK2Zyb20gX3B5dGVzdC5faW8gaW1wb3J0IFRlcm1pbmFsV3JpdGVyCitmcm9t
IF9weXRlc3QuX2lvLnNhZmVyZXByIGltcG9ydCBzYWZlZm9ybWF0Citmcm9tIF9weXRlc3QuX2lv
LnNhZmVyZXByIGltcG9ydCBzYWZlcmVwcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgQVRU
UlNfRVFfRklFTEQKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFsCitmcm9tIF9weXRl
c3QuY29tcGF0IGltcG9ydCBnZXRfcmVhbF9mdW5jCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9y
dCBvdmVybG9hZAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJv
bSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKKworaWYgVFlQRV9DSEVDS0lORzoKKyAgICBm
cm9tIHR5cGluZyBpbXBvcnQgVHlwZQorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0
IExpdGVyYWwKKyAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFJlZmVyZW5jZVR5cGUKKworICAgIF9U
cmFjZWJhY2tTdHlsZSA9IExpdGVyYWxbImxvbmciLCAic2hvcnQiLCAibGluZSIsICJubyIsICJu
YXRpdmUiLCAidmFsdWUiLCAiYXV0byJdCisKKworY2xhc3MgQ29kZToKKyAgICAiIiJXcmFwcGVy
IGFyb3VuZCBQeXRob24gY29kZSBvYmplY3RzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJhd2NvZGUpIC0+IE5vbmU6CiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHJhd2NvZGUsICJjb19m
aWxlbmFtZSIpOgogICAgICAgICAgICAgcmF3Y29kZSA9IGdldHJhd2NvZGUocmF3Y29kZSkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IHJhd2NvZGUuY29fZmlsZW5h
bWUKLSAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lbm8gPSByYXdjb2RlLmNvX2ZpcnN0bGluZW5v
IC0gMQotICAgICAgICAgICAgc2VsZi5uYW1lID0gcmF3Y29kZS5jb19uYW1lCi0gICAgICAgIGV4
Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGEg
Y29kZSBvYmplY3Q6ICVyIiAlIChyYXdjb2RlLCkpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KHJhd2NvZGUsIENvZGVUeXBlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGEg
Y29kZSBvYmplY3Q6IHshcn0iLmZvcm1hdChyYXdjb2RlKSkKKyAgICAgICAgc2VsZi5maWxlbmFt
ZSA9IHJhd2NvZGUuY29fZmlsZW5hbWUKKyAgICAgICAgc2VsZi5maXJzdGxpbmVubyA9IHJhd2Nv
ZGUuY29fZmlyc3RsaW5lbm8gLSAxCisgICAgICAgIHNlbGYubmFtZSA9IHJhd2NvZGUuY29fbmFt
ZQogICAgICAgICBzZWxmLnJhdyA9IHJhd2NvZGUKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3Ro
ZXIpOgogICAgICAgICByZXR1cm4gc2VsZi5yYXcgPT0gb3RoZXIucmF3CiAKLSAgICBfX2hhc2hf
XyA9IE5vbmUKLQotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4g
bm90IHNlbGYgPT0gb3RoZXIKKyAgICAjIElnbm9yZSB0eXBlIGJlY2F1c2Ugb2YgaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy80MjY2LgorICAgIF9faGFzaF9fID0gTm9uZSAg
IyB0eXBlOiBpZ25vcmUKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBwYXRoKHNlbGYpOgotICAg
ICAgICAiIiIgcmV0dXJuIGEgcGF0aCBvYmplY3QgcG9pbnRpbmcgdG8gc291cmNlIGNvZGUgKG5v
dGUgdGhhdCBpdAotICAgICAgICBtaWdodCBub3QgcG9pbnQgdG8gYW4gYWN0dWFsbHkgZXhpc3Rp
bmcgZmlsZSkuICIiIgorICAgIGRlZiBwYXRoKHNlbGYpIC0+IFVuaW9uW3B5LnBhdGgubG9jYWws
IHN0cl06CisgICAgICAgICIiIlJldHVybiBhIHBhdGggb2JqZWN0IHBvaW50aW5nIHRvIHNvdXJj
ZSBjb2RlLCBvciBhbiBgYHN0cmBgIGluCisgICAgICAgIGNhc2Ugb2YgYGBPU0Vycm9yYGAgLyBu
b24tZXhpc3RpbmcgZmlsZS4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYucmF3LmNvX2ZpbGVuYW1l
OgorICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSBw
eS5wYXRoLmxvY2FsKHNlbGYucmF3LmNvX2ZpbGVuYW1lKQogICAgICAgICAgICAgIyBtYXliZSBk
b24ndCB0cnkgdGhpcyBjaGVja2luZwogICAgICAgICAgICAgaWYgbm90IHAuY2hlY2soKToKICAg
ICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJweS5wYXRoIGNoZWNrIGZhaWxlZC4iKQorICAg
ICAgICAgICAgcmV0dXJuIHAKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAj
IFhYWCBtYXliZSB0cnkgaGFyZGVyIGxpa2UgdGhlIHdlaXJkIGxvZ2ljCiAgICAgICAgICAgICAj
IGluIHRoZSBzdGFuZGFyZCBsaWIgW2xpbmVjYWNoZS51cGRhdGVjYWNoZV0gZG9lcz8KLSAgICAg
ICAgICAgIHAgPSBzZWxmLnJhdy5jb19maWxlbmFtZQotCi0gICAgICAgIHJldHVybiBwCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5yYXcuY29fZmlsZW5hbWUKIAogICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBmdWxsc291cmNlKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIGEgX3B5dGVzdC5fY29k
ZS5Tb3VyY2Ugb2JqZWN0IGZvciB0aGUgZnVsbCBzb3VyY2UgZmlsZSBvZiB0aGUgY29kZQotICAg
ICAgICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBzb3VyY2UKLQotICAg
ICAgICBmdWxsLCBfID0gc291cmNlLmZpbmRzb3VyY2Uoc2VsZi5yYXcpCisgICAgZGVmIGZ1bGxz
b3VyY2Uoc2VsZikgLT4gT3B0aW9uYWxbIlNvdXJjZSJdOgorICAgICAgICAiIiJSZXR1cm4gYSBf
cHl0ZXN0Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9yIHRoZSBmdWxsIHNvdXJjZSBmaWxlIG9mIHRo
ZSBjb2RlLiIiIgorICAgICAgICBmdWxsLCBfID0gZmluZHNvdXJjZShzZWxmLnJhdykKICAgICAg
ICAgcmV0dXJuIGZ1bGwKIAotICAgIGRlZiBzb3VyY2Uoc2VsZik6Ci0gICAgICAgICIiIiByZXR1
cm4gYSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9yIHRoZSBjb2RlIG9iamVjdCdzIHNv
dXJjZSBvbmx5Ci0gICAgICAgICIiIgorICAgIGRlZiBzb3VyY2Uoc2VsZikgLT4gIlNvdXJjZSI6
CisgICAgICAgICIiIlJldHVybiBhIF9weXRlc3QuX2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhl
IGNvZGUgb2JqZWN0J3Mgc291cmNlIG9ubHkuIiIiCiAgICAgICAgICMgcmV0dXJuIHNvdXJjZSBv
bmx5IGZvciB0aGF0IHBhcnQgb2YgY29kZQotICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQot
Ci0gICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShzZWxmLnJhdykKKyAgICAgICAg
cmV0dXJuIFNvdXJjZShzZWxmLnJhdykKIAotICAgIGRlZiBnZXRhcmdzKHNlbGYsIHZhcj1GYWxz
ZSk6Ci0gICAgICAgICIiIiByZXR1cm4gYSB0dXBsZSB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyBm
b3IgdGhlIGNvZGUgb2JqZWN0CisgICAgZGVmIGdldGFyZ3Moc2VsZiwgdmFyOiBib29sID0gRmFs
c2UpIC0+IFR1cGxlW3N0ciwgLi4uXToKKyAgICAgICAgIiIiUmV0dXJuIGEgdHVwbGUgd2l0aCB0
aGUgYXJndW1lbnQgbmFtZXMgZm9yIHRoZSBjb2RlIG9iamVjdC4KIAotICAgICAgICAgICAgaWYg
J3ZhcicgaXMgc2V0IFRydWUgYWxzbyByZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSB2YXJpYWJsZSBh
bmQKLSAgICAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIHdoZW4gcHJlc2VudAorICAgICAgICBJ
ZiAndmFyJyBpcyBzZXQgVHJ1ZSBhbHNvIHJldHVybiB0aGUgbmFtZXMgb2YgdGhlIHZhcmlhYmxl
IGFuZAorICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyB3aGVuIHByZXNlbnQuCiAgICAgICAgICIi
IgotICAgICAgICAjIGhhbmRmdWxsIHNob3J0Y3V0IGZvciBnZXR0aW5nIGFyZ3MKKyAgICAgICAg
IyBIYW5keSBzaG9ydGN1dCBmb3IgZ2V0dGluZyBhcmdzLgogICAgICAgICByYXcgPSBzZWxmLnJh
dwogICAgICAgICBhcmdjb3VudCA9IHJhdy5jb19hcmdjb3VudAogICAgICAgICBpZiB2YXI6CkBA
IC04OSwxMSArMTE0LDExIEBAIGNsYXNzIENvZGUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHJh
dy5jb192YXJuYW1lc1s6YXJnY291bnRdCiAKIAotY2xhc3MgRnJhbWUob2JqZWN0KToKK2NsYXNz
IEZyYW1lOgogICAgICIiIldyYXBwZXIgYXJvdW5kIGEgUHl0aG9uIGZyYW1lIGhvbGRpbmcgZl9s
b2NhbHMgYW5kIGZfZ2xvYmFscwogICAgIGluIHdoaWNoIGV4cHJlc3Npb25zIGNhbiBiZSBldmFs
dWF0ZWQuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWUpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmcmFtZTogRnJhbWVUeXBlKSAtPiBOb25lOgogICAgICAgICBzZWxmLmxpbmVu
byA9IGZyYW1lLmZfbGluZW5vIC0gMQogICAgICAgICBzZWxmLmZfZ2xvYmFscyA9IGZyYW1lLmZf
Z2xvYmFscwogICAgICAgICBzZWxmLmZfbG9jYWxzID0gZnJhbWUuZl9sb2NhbHMKQEAgLTEwMSw0
NyArMTI2LDMyIEBAIGNsYXNzIEZyYW1lKG9iamVjdCk6CiAgICAgICAgIHNlbGYuY29kZSA9IENv
ZGUoZnJhbWUuZl9jb2RlKQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHN0YXRlbWVudChzZWxm
KToKLSAgICAgICAgIiIiIHN0YXRlbWVudCB0aGlzIGZyYW1lIGlzIGF0ICIiIgotICAgICAgICBp
bXBvcnQgX3B5dGVzdC5fY29kZQotCisgICAgZGVmIHN0YXRlbWVudChzZWxmKSAtPiAiU291cmNl
IjoKKyAgICAgICAgIiIiU3RhdGVtZW50IHRoaXMgZnJhbWUgaXMgYXQuIiIiCiAgICAgICAgIGlm
IHNlbGYuY29kZS5mdWxsc291cmNlIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gX3B5dGVz
dC5fY29kZS5Tb3VyY2UoIiIpCisgICAgICAgICAgICByZXR1cm4gU291cmNlKCIiKQogICAgICAg
ICByZXR1cm4gc2VsZi5jb2RlLmZ1bGxzb3VyY2UuZ2V0c3RhdGVtZW50KHNlbGYubGluZW5vKQog
CiAgICAgZGVmIGV2YWwoc2VsZiwgY29kZSwgKip2YXJzKToKLSAgICAgICAgIiIiIGV2YWx1YXRl
ICdjb2RlJyBpbiB0aGUgZnJhbWUKKyAgICAgICAgIiIiRXZhbHVhdGUgJ2NvZGUnIGluIHRoZSBm
cmFtZS4KIAotICAgICAgICAgICAgJ3ZhcnMnIGFyZSBvcHRpb25hbCBhZGRpdGlvbmFsIGxvY2Fs
IHZhcmlhYmxlcworICAgICAgICAndmFycycgYXJlIG9wdGlvbmFsIGFkZGl0aW9uYWwgbG9jYWwg
dmFyaWFibGVzLgogCi0gICAgICAgICAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGV2YWx1
YXRpb24KKyAgICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBldmFsdWF0aW9uLgogICAg
ICAgICAiIiIKICAgICAgICAgZl9sb2NhbHMgPSBzZWxmLmZfbG9jYWxzLmNvcHkoKQogICAgICAg
ICBmX2xvY2Fscy51cGRhdGUodmFycykKICAgICAgICAgcmV0dXJuIGV2YWwoY29kZSwgc2VsZi5m
X2dsb2JhbHMsIGZfbG9jYWxzKQogCi0gICAgZGVmIGV4ZWNfKHNlbGYsIGNvZGUsICoqdmFycyk6
Ci0gICAgICAgICIiIiBleGVjICdjb2RlJyBpbiB0aGUgZnJhbWUKKyAgICBkZWYgcmVwcihzZWxm
LCBvYmplY3Q6IG9iamVjdCkgLT4gc3RyOgorICAgICAgICAiIiJSZXR1cm4gYSAnc2FmZScgKG5v
bi1yZWN1cnNpdmUsIG9uZS1saW5lKSBzdHJpbmcgcmVwciBmb3IgJ29iamVjdCcuIiIiCisgICAg
ICAgIHJldHVybiBzYWZlcmVwcihvYmplY3QpCiAKLSAgICAgICAgICAgICd2YXJzJyBhcmUgb3B0
aW9uYTsgYWRkaXRpb25hbCBsb2NhbCB2YXJpYWJsZXMKLSAgICAgICAgIiIiCi0gICAgICAgIGZf
bG9jYWxzID0gc2VsZi5mX2xvY2Fscy5jb3B5KCkKLSAgICAgICAgZl9sb2NhbHMudXBkYXRlKHZh
cnMpCi0gICAgICAgIHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgc2VsZi5mX2dsb2JhbHMsIGZfbG9j
YWxzKQorICAgIGRlZiBnZXRhcmdzKHNlbGYsIHZhcjogYm9vbCA9IEZhbHNlKToKKyAgICAgICAg
IiIiUmV0dXJuIGEgbGlzdCBvZiB0dXBsZXMgKG5hbWUsIHZhbHVlKSBmb3IgYWxsIGFyZ3VtZW50
cy4KIAotICAgIGRlZiByZXByKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgICIiIiByZXR1cm4gYSAn
c2FmZScgKG5vbi1yZWN1cnNpdmUsIG9uZS1saW5lKSBzdHJpbmcgcmVwciBmb3IgJ29iamVjdCcK
LSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBweS5pby5zYWZlcmVwcihvYmplY3QpCi0KLSAg
ICBkZWYgaXNfdHJ1ZShzZWxmLCBvYmplY3QpOgotICAgICAgICByZXR1cm4gb2JqZWN0Ci0KLSAg
ICBkZWYgZ2V0YXJncyhzZWxmLCB2YXI9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIGEgbGlz
dCBvZiB0dXBsZXMgKG5hbWUsIHZhbHVlKSBmb3IgYWxsIGFyZ3VtZW50cwotCi0gICAgICAgICAg
ICBpZiAndmFyJyBpcyBzZXQgVHJ1ZSBhbHNvIGluY2x1ZGUgdGhlIHZhcmlhYmxlIGFuZCBrZXl3
b3JkCi0gICAgICAgICAgICBhcmd1bWVudHMgd2hlbiBwcmVzZW50CisgICAgICAgIElmICd2YXIn
IGlzIHNldCBUcnVlLCBhbHNvIGluY2x1ZGUgdGhlIHZhcmlhYmxlIGFuZCBrZXl3b3JkIGFyZ3Vt
ZW50cworICAgICAgICB3aGVuIHByZXNlbnQuCiAgICAgICAgICIiIgogICAgICAgICByZXR2YWwg
PSBbXQogICAgICAgICBmb3IgYXJnIGluIHNlbGYuY29kZS5nZXRhcmdzKHZhcik6CkBAIC0xNTIs
NjAgKzE2Miw2MCBAQCBjbGFzcyBGcmFtZShvYmplY3QpOgogICAgICAgICByZXR1cm4gcmV0dmFs
CiAKIAotY2xhc3MgVHJhY2ViYWNrRW50cnkob2JqZWN0KToKLSAgICAiIiIgYSBzaW5nbGUgZW50
cnkgaW4gYSB0cmFjZWJhY2sgIiIiCitjbGFzcyBUcmFjZWJhY2tFbnRyeToKKyAgICAiIiJBIHNp
bmdsZSBlbnRyeSBpbiBhIFRyYWNlYmFjay4iIiIKIAotICAgIF9yZXByX3N0eWxlID0gTm9uZQor
ICAgIF9yZXByX3N0eWxlID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtMaXRlcmFsWyJzaG9ydCIs
ICJsb25nIl1dCiAgICAgZXhwcmluZm8gPSBOb25lCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cmF3ZW50cnksIGV4Y2luZm89Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxm
LAorICAgICAgICByYXdlbnRyeTogVHJhY2ViYWNrVHlwZSwKKyAgICAgICAgZXhjaW5mbzogT3B0
aW9uYWxbIlJlZmVyZW5jZVR5cGVbRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXV0iXSA9IE5v
bmUsCisgICAgKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9leGNpbmZvID0gZXhjaW5mbwogICAg
ICAgICBzZWxmLl9yYXdlbnRyeSA9IHJhd2VudHJ5CiAgICAgICAgIHNlbGYubGluZW5vID0gcmF3
ZW50cnkudGJfbGluZW5vIC0gMQogCi0gICAgZGVmIHNldF9yZXByX3N0eWxlKHNlbGYsIG1vZGUp
OgorICAgIGRlZiBzZXRfcmVwcl9zdHlsZShzZWxmLCBtb2RlOiAiTGl0ZXJhbFsnc2hvcnQnLCAn
bG9uZyddIikgLT4gTm9uZToKICAgICAgICAgYXNzZXJ0IG1vZGUgaW4gKCJzaG9ydCIsICJsb25n
IikKICAgICAgICAgc2VsZi5fcmVwcl9zdHlsZSA9IG1vZGUKIAogICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBmcmFtZShzZWxmKToKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLQotICAgICAg
ICByZXR1cm4gX3B5dGVzdC5fY29kZS5GcmFtZShzZWxmLl9yYXdlbnRyeS50Yl9mcmFtZSkKKyAg
ICBkZWYgZnJhbWUoc2VsZikgLT4gRnJhbWU6CisgICAgICAgIHJldHVybiBGcmFtZShzZWxmLl9y
YXdlbnRyeS50Yl9mcmFtZSkKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiByZWxsaW5lKHNlbGYp
OgorICAgIGRlZiByZWxsaW5lKHNlbGYpIC0+IGludDoKICAgICAgICAgcmV0dXJuIHNlbGYubGlu
ZW5vIC0gc2VsZi5mcmFtZS5jb2RlLmZpcnN0bGluZW5vCiAKLSAgICBkZWYgX19yZXByX18oc2Vs
Zik6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICAgcmV0dXJuICI8VHJh
Y2ViYWNrRW50cnkgJXM6JWQ+IiAlIChzZWxmLmZyYW1lLmNvZGUucGF0aCwgc2VsZi5saW5lbm8g
KyAxKQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHN0YXRlbWVudChzZWxmKToKLSAgICAgICAg
IiIiIF9weXRlc3QuX2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc3RhdGVtZW50
ICIiIgorICAgIGRlZiBzdGF0ZW1lbnQoc2VsZikgLT4gIlNvdXJjZSI6CisgICAgICAgICIiIl9w
eXRlc3QuX2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc3RhdGVtZW50LiIiIgog
ICAgICAgICBzb3VyY2UgPSBzZWxmLmZyYW1lLmNvZGUuZnVsbHNvdXJjZQorICAgICAgICBhc3Nl
cnQgc291cmNlIGlzIG5vdCBOb25lCiAgICAgICAgIHJldHVybiBzb3VyY2UuZ2V0c3RhdGVtZW50
KHNlbGYubGluZW5vKQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHBhdGgoc2VsZik6Ci0gICAg
ICAgICIiIiBwYXRoIHRvIHRoZSBzb3VyY2UgY29kZSAiIiIKKyAgICBkZWYgcGF0aChzZWxmKSAt
PiBVbmlvbltweS5wYXRoLmxvY2FsLCBzdHJdOgorICAgICAgICAiIiJQYXRoIHRvIHRoZSBzb3Vy
Y2UgY29kZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZnJhbWUuY29kZS5wYXRoCiAKLSAgICBk
ZWYgZ2V0bG9jYWxzKHNlbGYpOgorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbHMoc2VsZikg
LT4gRGljdFtzdHIsIEFueV06CisgICAgICAgICIiIkxvY2FscyBvZiB1bmRlcmx5aW5nIGZyYW1l
LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5mcmFtZS5mX2xvY2FscwogCi0gICAgbG9jYWxzID0g
cHJvcGVydHkoZ2V0bG9jYWxzLCBOb25lLCBOb25lLCAibG9jYWxzIG9mIHVuZGVybGF5aW5nIGZy
YW1lIikKLQotICAgIGRlZiBnZXRmaXJzdGxpbmVzb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgb24g
Snl0aG9uIHRoaXMgZmlyc3RsaW5lbm8gY2FuIGJlIC0xIGFwcGFyZW50bHkKLSAgICAgICAgcmV0
dXJuIG1heChzZWxmLmZyYW1lLmNvZGUuZmlyc3RsaW5lbm8sIDApCisgICAgZGVmIGdldGZpcnN0
bGluZXNvdXJjZShzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLmZyYW1lLmNvZGUu
Zmlyc3RsaW5lbm8KIAotICAgIGRlZiBnZXRzb3VyY2Uoc2VsZiwgYXN0Y2FjaGU9Tm9uZSk6Ci0g
ICAgICAgICIiIiByZXR1cm4gZmFpbGluZyBzb3VyY2UgY29kZS4gIiIiCisgICAgZGVmIGdldHNv
dXJjZShzZWxmLCBhc3RjYWNoZT1Ob25lKSAtPiBPcHRpb25hbFsiU291cmNlIl06CisgICAgICAg
ICIiIlJldHVybiBmYWlsaW5nIHNvdXJjZSBjb2RlLiIiIgogICAgICAgICAjIHdlIHVzZSB0aGUg
cGFzc2VkIGluIGFzdGNhY2hlIHRvIG5vdCByZXBhcnNlIGFzdHRyZWVzCiAgICAgICAgICMgd2l0
aGluIGV4Y2VwdGlvbiBpbmZvIHByaW50aW5nCi0gICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5z
b3VyY2UgaW1wb3J0IGdldHN0YXRlbWVudHJhbmdlX2FzdAotCiAgICAgICAgIHNvdXJjZSA9IHNl
bGYuZnJhbWUuY29kZS5mdWxsc291cmNlCiAgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgogICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTIyOCw3NyArMjM4LDk0IEBAIGNsYXNzIFRyYWNlYmFj
a0VudHJ5KG9iamVjdCk6CiAKICAgICBzb3VyY2UgPSBwcm9wZXJ0eShnZXRzb3VyY2UpCiAKLSAg
ICBkZWYgaXNoaWRkZW4oc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBpZiB0aGUgY3Vy
cmVudCBmcmFtZSBoYXMgYSB2YXIgX190cmFjZWJhY2toaWRlX18KLSAgICAgICAgICAgIHJlc29s
dmluZyB0byBUcnVlCisgICAgZGVmIGlzaGlkZGVuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IlJldHVybiBUcnVlIGlmIHRoZSBjdXJyZW50IGZyYW1lIGhhcyBhIHZhciBfX3RyYWNlYmFja2hp
ZGVfXworICAgICAgICByZXNvbHZpbmcgdG8gVHJ1ZS4KIAotICAgICAgICAgICAgSWYgX190cmFj
ZWJhY2toaWRlX18gaXMgYSBjYWxsYWJsZSwgaXQgZ2V0cyBjYWxsZWQgd2l0aCB0aGUKLSAgICAg
ICAgICAgIEV4Y2VwdGlvbkluZm8gaW5zdGFuY2UgYW5kIGNhbiBkZWNpZGUgd2hldGhlciB0byBo
aWRlIHRoZSB0cmFjZWJhY2suCisgICAgICAgIElmIF9fdHJhY2ViYWNraGlkZV9fIGlzIGEgY2Fs
bGFibGUsIGl0IGdldHMgY2FsbGVkIHdpdGggdGhlCisgICAgICAgIEV4Y2VwdGlvbkluZm8gaW5z
dGFuY2UgYW5kIGNhbiBkZWNpZGUgd2hldGhlciB0byBoaWRlIHRoZSB0cmFjZWJhY2suCiAKLSAg
ICAgICAgICAgIG1vc3RseSBmb3IgaW50ZXJuYWwgdXNlCisgICAgICAgIE1vc3RseSBmb3IgaW50
ZXJuYWwgdXNlLgogICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGJoID0g
c2VsZi5mcmFtZS5mX2xvY2Fsc1siX190cmFjZWJhY2toaWRlX18iXQotICAgICAgICBleGNlcHQg
S2V5RXJyb3I6CisgICAgICAgIHRiaCA9ICgKKyAgICAgICAgICAgIEZhbHNlCisgICAgICAgICkg
ICMgdHlwZTogVW5pb25bYm9vbCwgQ2FsbGFibGVbW09wdGlvbmFsW0V4Y2VwdGlvbkluZm9bQmFz
ZUV4Y2VwdGlvbl1dXSwgYm9vbF1dCisgICAgICAgIGZvciBtYXliZV9uc19kY3QgaW4gKHNlbGYu
ZnJhbWUuZl9sb2NhbHMsIHNlbGYuZnJhbWUuZl9nbG9iYWxzKToKKyAgICAgICAgICAgICMgaW4g
bm9ybWFsIGNhc2VzLCBmX2xvY2FscyBhbmQgZl9nbG9iYWxzIGFyZSBkaWN0aW9uYXJpZXMKKyAg
ICAgICAgICAgICMgaG93ZXZlciB2aWEgYGV4ZWMoLi4uKWAgLyBgZXZhbCguLi4pYCB0aGV5IGNh
biBiZSBvdGhlciB0eXBlcworICAgICAgICAgICAgIyAoZXZlbiBpbmNvcnJlY3QgdHlwZXMhKS4K
KyAgICAgICAgICAgICMgYXMgc3VjaCwgd2Ugc3VwcHJlc3MgYWxsIGV4Y2VwdGlvbnMgd2hpbGUg
YWNjZXNzaW5nIF9fdHJhY2ViYWNraGlkZV9fCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgdGJoID0gc2VsZi5mcmFtZS5mX2dsb2JhbHNbIl9fdHJhY2ViYWNraGlkZV9fIl0KLSAg
ICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
LQotICAgICAgICBpZiBjYWxsYWJsZSh0YmgpOgorICAgICAgICAgICAgICAgIHRiaCA9IG1heWJl
X25zX2RjdFsiX190cmFjZWJhY2toaWRlX18iXQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
bjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgIGlmIHRiaCBhbmQgY2FsbGFibGUodGJoKToKICAgICAgICAgICAg
IHJldHVybiB0YmgoTm9uZSBpZiBzZWxmLl9leGNpbmZvIGlzIE5vbmUgZWxzZSBzZWxmLl9leGNp
bmZvKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdGJoCisgICAgICAgIHJl
dHVybiB0YmgKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBmbiA9IHN0cihzZWxmLnBhdGgpCi0gICAgICAgIGV4Y2VwdCBweS5lcnJvci5FcnJvcjoK
LSAgICAgICAgICAgIGZuID0gIj8/PyIKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CiAg
ICAgICAgIG5hbWUgPSBzZWxmLmZyYW1lLmNvZGUubmFtZQogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBsaW5lID0gc3RyKHNlbGYuc3RhdGVtZW50KS5sc3RyaXAoKQogICAgICAgICBleGNlcHQg
S2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQ6ICAj
IG5vcWEKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgICAgICBsaW5lID0g
Ij8/PyIKLSAgICAgICAgcmV0dXJuICIgIEZpbGUgJXI6JWQgaW4gJXNcbiAgJXNcbiIgJSAoZm4s
IHNlbGYubGluZW5vICsgMSwgbmFtZSwgbGluZSkKKyAgICAgICAgIyBUaGlzIG91dHB1dCBkb2Vz
IG5vdCBxdWl0ZSBtYXRjaCBQeXRob24ncyByZXByIGZvciB0cmFjZWJhY2sgZW50cmllcywKKyAg
ICAgICAgIyBidXQgY2hhbmdpbmcgaXQgdG8gZG8gc28gd291bGQgYnJlYWsgY2VydGFpbiBwbHVn
aW5zLiAgU2VlCisgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L3B1bGwvNzUzNS8gZm9yIGRldGFpbHMuCisgICAgICAgIHJldHVybiAiICBGaWxlICVyOiVkIGlu
ICVzXG4gICVzXG4iICUgKAorICAgICAgICAgICAgc3RyKHNlbGYucGF0aCksCisgICAgICAgICAg
ICBzZWxmLmxpbmVubyArIDEsCisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgbGluZSwK
KyAgICAgICAgKQogCi0gICAgZGVmIG5hbWUoc2VsZik6CisgICAgQHByb3BlcnR5CisgICAgZGVm
IG5hbWUoc2VsZikgLT4gc3RyOgorICAgICAgICAiIiJjb19uYW1lIG9mIHVuZGVybHlpbmcgY29k
ZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZnJhbWUuY29kZS5yYXcuY29fbmFtZQogCi0gICAg
bmFtZSA9IHByb3BlcnR5KG5hbWUsIE5vbmUsIE5vbmUsICJjb19uYW1lIG9mIHVuZGVybGF5aW5n
IGNvZGUiKQotCiAKLWNsYXNzIFRyYWNlYmFjayhsaXN0KToKLSAgICAiIiIgVHJhY2ViYWNrIG9i
amVjdHMgZW5jYXBzdWxhdGUgYW5kIG9mZmVyIGhpZ2hlciBsZXZlbAotICAgICAgICBhY2Nlc3Mg
dG8gVHJhY2ViYWNrIGVudHJpZXMuCi0gICAgIiIiCi0gICAgRW50cnkgPSBUcmFjZWJhY2tFbnRy
eQorY2xhc3MgVHJhY2ViYWNrKExpc3RbVHJhY2ViYWNrRW50cnldKToKKyAgICAiIiJUcmFjZWJh
Y2sgb2JqZWN0cyBlbmNhcHN1bGF0ZSBhbmQgb2ZmZXIgaGlnaGVyIGxldmVsIGFjY2VzcyB0byBU
cmFjZWJhY2sgZW50cmllcy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YiwgZXhjaW5m
bz1Ob25lKToKLSAgICAgICAgIiIiIGluaXRpYWxpemUgZnJvbSBnaXZlbiBweXRob24gdHJhY2Vi
YWNrIG9iamVjdCBhbmQgRXhjZXB0aW9uSW5mbyAiIiIKKyAgICBkZWYgX19pbml0X18oCisgICAg
ICAgIHNlbGYsCisgICAgICAgIHRiOiBVbmlvbltUcmFjZWJhY2tUeXBlLCBJdGVyYWJsZVtUcmFj
ZWJhY2tFbnRyeV1dLAorICAgICAgICBleGNpbmZvOiBPcHRpb25hbFsiUmVmZXJlbmNlVHlwZVtF
eGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dXSJdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6Cisg
ICAgICAgICIiIkluaXRpYWxpemUgZnJvbSBnaXZlbiBweXRob24gdHJhY2ViYWNrIG9iamVjdCBh
bmQgRXhjZXB0aW9uSW5mby4iIiIKICAgICAgICAgc2VsZi5fZXhjaW5mbyA9IGV4Y2luZm8KLSAg
ICAgICAgaWYgaGFzYXR0cih0YiwgInRiX25leHQiKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0
YiwgVHJhY2ViYWNrVHlwZSk6CiAKLSAgICAgICAgICAgIGRlZiBmKGN1cik6Ci0gICAgICAgICAg
ICAgICAgd2hpbGUgY3VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBz
ZWxmLkVudHJ5KGN1ciwgZXhjaW5mbz1leGNpbmZvKQotICAgICAgICAgICAgICAgICAgICBjdXIg
PSBjdXIudGJfbmV4dAorICAgICAgICAgICAgZGVmIGYoY3VyOiBUcmFjZWJhY2tUeXBlKSAtPiBJ
dGVyYWJsZVtUcmFjZWJhY2tFbnRyeV06CisgICAgICAgICAgICAgICAgY3VyXyA9IGN1ciAgIyB0
eXBlOiBPcHRpb25hbFtUcmFjZWJhY2tUeXBlXQorICAgICAgICAgICAgICAgIHdoaWxlIGN1cl8g
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRyYWNlYmFja0VudHJ5KGN1
cl8sIGV4Y2luZm89ZXhjaW5mbykKKyAgICAgICAgICAgICAgICAgICAgY3VyXyA9IGN1cl8udGJf
bmV4dAogCi0gICAgICAgICAgICBsaXN0Ll9faW5pdF9fKHNlbGYsIGYodGIpKQorICAgICAgICAg
ICAgc3VwZXIoKS5fX2luaXRfXyhmKHRiKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxp
c3QuX19pbml0X18oc2VsZiwgdGIpCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHRiKQog
Ci0gICAgZGVmIGN1dChzZWxmLCBwYXRoPU5vbmUsIGxpbmVubz1Ob25lLCBmaXJzdGxpbmVubz1O
b25lLCBleGNsdWRlcGF0aD1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBhIFRyYWNlYmFjayBp
bnN0YW5jZSB3cmFwcGluZyBwYXJ0IG9mIHRoaXMgVHJhY2ViYWNrCi0KLSAgICAgICAgICAgIGJ5
IHByb3ZkaW5nIGFueSBjb21iaW5hdGlvbiBvZiBwYXRoLCBsaW5lbm8gYW5kIGZpcnN0bGluZW5v
LCB0aGUKLSAgICAgICAgICAgIGZpcnN0IGZyYW1lIHRvIHN0YXJ0IHRoZSB0by1iZS1yZXR1cm5l
ZCB0cmFjZWJhY2sgaXMgZGV0ZXJtaW5lZAotCi0gICAgICAgICAgICB0aGlzIGFsbG93cyBjdXR0
aW5nIHRoZSBmaXJzdCBwYXJ0IG9mIGEgVHJhY2ViYWNrIGluc3RhbmNlIGUuZy4KLSAgICAgICAg
ICAgIGZvciBmb3JtYXR0aW5nIHJlYXNvbnMgKHJlbW92aW5nIHNvbWUgdW5pbnRlcmVzdGluZyBi
aXRzIHRoYXQgZGVhbAotICAgICAgICAgICAgd2l0aCBoYW5kbGluZyBvZiB0aGUgZXhjZXB0aW9u
L3RyYWNlYmFjaykKKyAgICBkZWYgY3V0KAorICAgICAgICBzZWxmLAorICAgICAgICBwYXRoPU5v
bmUsCisgICAgICAgIGxpbmVubzogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgIGZpcnN0
bGluZW5vOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgZXhjbHVkZXBhdGg6IE9wdGlv
bmFsW3B5LnBhdGgubG9jYWxdID0gTm9uZSwKKyAgICApIC0+ICJUcmFjZWJhY2siOgorICAgICAg
ICAiIiJSZXR1cm4gYSBUcmFjZWJhY2sgaW5zdGFuY2Ugd3JhcHBpbmcgcGFydCBvZiB0aGlzIFRy
YWNlYmFjay4KKworICAgICAgICBCeSBwcm92aWRpbmcgYW55IGNvbWJpbmF0aW9uIG9mIHBhdGgs
IGxpbmVubyBhbmQgZmlyc3RsaW5lbm8sIHRoZQorICAgICAgICBmaXJzdCBmcmFtZSB0byBzdGFy
dCB0aGUgdG8tYmUtcmV0dXJuZWQgdHJhY2ViYWNrIGlzIGRldGVybWluZWQuCisKKyAgICAgICAg
VGhpcyBhbGxvd3MgY3V0dGluZyB0aGUgZmlyc3QgcGFydCBvZiBhIFRyYWNlYmFjayBpbnN0YW5j
ZSBlLmcuCisgICAgICAgIGZvciBmb3JtYXR0aW5nIHJlYXNvbnMgKHJlbW92aW5nIHNvbWUgdW5p
bnRlcmVzdGluZyBiaXRzIHRoYXQgZGVhbAorICAgICAgICB3aXRoIGhhbmRsaW5nIG9mIHRoZSBl
eGNlcHRpb24vdHJhY2ViYWNrKS4KICAgICAgICAgIiIiCiAgICAgICAgIGZvciB4IGluIHNlbGY6
CiAgICAgICAgICAgICBjb2RlID0geC5mcmFtZS5jb2RlCkBAIC0zMDcsNyArMzM0LDcgQEAgY2xh
c3MgVHJhY2ViYWNrKGxpc3QpOgogICAgICAgICAgICAgICAgIChwYXRoIGlzIE5vbmUgb3IgY29k
ZXBhdGggPT0gcGF0aCkKICAgICAgICAgICAgICAgICBhbmQgKAogICAgICAgICAgICAgICAgICAg
ICBleGNsdWRlcGF0aCBpcyBOb25lCi0gICAgICAgICAgICAgICAgICAgIG9yIG5vdCBoYXNhdHRy
KGNvZGVwYXRoLCAicmVsdG8iKQorICAgICAgICAgICAgICAgICAgICBvciBub3QgaXNpbnN0YW5j
ZShjb2RlcGF0aCwgcHkucGF0aC5sb2NhbCkKICAgICAgICAgICAgICAgICAgICAgb3Igbm90IGNv
ZGVwYXRoLnJlbHRvKGV4Y2x1ZGVwYXRoKQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICAgICBhbmQgKGxpbmVubyBpcyBOb25lIG9yIHgubGluZW5vID09IGxpbmVubykKQEAgLTMxNiwz
OSArMzQzLDQ4IEBAIGNsYXNzIFRyYWNlYmFjayhsaXN0KToKICAgICAgICAgICAgICAgICByZXR1
cm4gVHJhY2ViYWNrKHguX3Jhd2VudHJ5LCBzZWxmLl9leGNpbmZvKQogICAgICAgICByZXR1cm4g
c2VsZgogCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIHZhbCA9IHN1
cGVyKFRyYWNlYmFjaywgc2VsZikuX19nZXRpdGVtX18oa2V5KQotICAgICAgICBpZiBpc2luc3Rh
bmNlKGtleSwgdHlwZShzbGljZSgwKSkpOgotICAgICAgICAgICAgdmFsID0gc2VsZi5fX2NsYXNz
X18odmFsKQotICAgICAgICByZXR1cm4gdmFsCisgICAgQG92ZXJsb2FkCisgICAgZGVmIF9fZ2V0
aXRlbV9fKHNlbGYsIGtleTogaW50KSAtPiBUcmFjZWJhY2tFbnRyeToKKyAgICAgICAgLi4uCisK
KyAgICBAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBr
ZXk6IHNsaWNlKSAtPiAiVHJhY2ViYWNrIjogICMgbm9xYTogRjgxMQorICAgICAgICAuLi4KKwor
ICAgIGRlZiBfX2dldGl0ZW1fXyggICMgbm9xYTogRjgxMQorICAgICAgICBzZWxmLCBrZXk6IFVu
aW9uW2ludCwgc2xpY2VdCisgICAgKSAtPiBVbmlvbltUcmFjZWJhY2tFbnRyeSwgIlRyYWNlYmFj
ayJdOgorICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc2xpY2UpOgorICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX19jbGFzc19fKHN1cGVyKCkuX19nZXRpdGVtX18oa2V5KSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fZ2V0aXRlbV9fKGtleSkKIAotICAgIGRl
ZiBmaWx0ZXIoc2VsZiwgZm49bGFtYmRhIHg6IG5vdCB4LmlzaGlkZGVuKCkpOgotICAgICAgICAi
IiIgcmV0dXJuIGEgVHJhY2ViYWNrIGluc3RhbmNlIHdpdGggY2VydGFpbiBpdGVtcyByZW1vdmVk
CisgICAgZGVmIGZpbHRlcigKKyAgICAgICAgc2VsZiwgZm46IENhbGxhYmxlW1tUcmFjZWJhY2tF
bnRyeV0sIGJvb2xdID0gbGFtYmRhIHg6IG5vdCB4LmlzaGlkZGVuKCkKKyAgICApIC0+ICJUcmFj
ZWJhY2siOgorICAgICAgICAiIiJSZXR1cm4gYSBUcmFjZWJhY2sgaW5zdGFuY2Ugd2l0aCBjZXJ0
YWluIGl0ZW1zIHJlbW92ZWQKIAotICAgICAgICAgICAgZm4gaXMgYSBmdW5jdGlvbiB0aGF0IGdl
dHMgYSBzaW5nbGUgYXJndW1lbnQsIGEgVHJhY2ViYWNrRW50cnkKLSAgICAgICAgICAgIGluc3Rh
bmNlLCBhbmQgc2hvdWxkIHJldHVybiBUcnVlIHdoZW4gdGhlIGl0ZW0gc2hvdWxkIGJlIGFkZGVk
Ci0gICAgICAgICAgICB0byB0aGUgVHJhY2ViYWNrLCBGYWxzZSB3aGVuIG5vdAorICAgICAgICBm
biBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBhIHNpbmdsZSBhcmd1bWVudCwgYSBUcmFjZWJhY2tF
bnRyeQorICAgICAgICBpbnN0YW5jZSwgYW5kIHNob3VsZCByZXR1cm4gVHJ1ZSB3aGVuIHRoZSBp
dGVtIHNob3VsZCBiZSBhZGRlZAorICAgICAgICB0byB0aGUgVHJhY2ViYWNrLCBGYWxzZSB3aGVu
IG5vdC4KIAotICAgICAgICAgICAgYnkgZGVmYXVsdCB0aGlzIHJlbW92ZXMgYWxsIHRoZSBUcmFj
ZWJhY2tFbnRyaWVzIHdoaWNoIGFyZSBoaWRkZW4KLSAgICAgICAgICAgIChzZWUgaXNoaWRkZW4o
KSBhYm92ZSkKKyAgICAgICAgQnkgZGVmYXVsdCB0aGlzIHJlbW92ZXMgYWxsIHRoZSBUcmFjZWJh
Y2tFbnRyaWVzIHdoaWNoIGFyZSBoaWRkZW4KKyAgICAgICAgKHNlZSBpc2hpZGRlbigpIGFib3Zl
KS4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBUcmFjZWJhY2soZmlsdGVyKGZuLCBzZWxm
KSwgc2VsZi5fZXhjaW5mbykKIAotICAgIGRlZiBnZXRjcmFzaGVudHJ5KHNlbGYpOgotICAgICAg
ICAiIiIgcmV0dXJuIGxhc3Qgbm9uLWhpZGRlbiB0cmFjZWJhY2sgZW50cnkgdGhhdCBsZWFkCi0g
ICAgICAgIHRvIHRoZSBleGNlcHRpb24gb2YgYSB0cmFjZWJhY2suCi0gICAgICAgICIiIgorICAg
IGRlZiBnZXRjcmFzaGVudHJ5KHNlbGYpIC0+IFRyYWNlYmFja0VudHJ5OgorICAgICAgICAiIiJS
ZXR1cm4gbGFzdCBub24taGlkZGVuIHRyYWNlYmFjayBlbnRyeSB0aGF0IGxlYWQgdG8gdGhlIGV4
Y2VwdGlvbiBvZiBhIHRyYWNlYmFjay4iIiIKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTEsIC1s
ZW4oc2VsZikgLSAxLCAtMSk6CiAgICAgICAgICAgICBlbnRyeSA9IHNlbGZbaV0KICAgICAgICAg
ICAgIGlmIG5vdCBlbnRyeS5pc2hpZGRlbigpOgogICAgICAgICAgICAgICAgIHJldHVybiBlbnRy
eQogICAgICAgICByZXR1cm4gc2VsZlstMV0KIAotICAgIGRlZiByZWN1cnNpb25pbmRleChzZWxm
KToKLSAgICAgICAgIiIiIHJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZyYW1lL1RyYWNlYmFja0Vu
dHJ5IHdoZXJlIHJlY3Vyc2lvbgotICAgICAgICAgICAgb3JpZ2luYXRlcyBpZiBhcHByb3ByaWF0
ZSwgTm9uZSBpZiBubyByZWN1cnNpb24gb2NjdXJyZWQKLSAgICAgICAgIiIiCi0gICAgICAgIGNh
Y2hlID0ge30KKyAgICBkZWYgcmVjdXJzaW9uaW5kZXgoc2VsZikgLT4gT3B0aW9uYWxbaW50XToK
KyAgICAgICAgIiIiUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZnJhbWUvVHJhY2ViYWNrRW50cnkg
d2hlcmUgcmVjdXJzaW9uIG9yaWdpbmF0ZXMgaWYKKyAgICAgICAgYXBwcm9wcmlhdGUsIE5vbmUg
aWYgbm8gcmVjdXJzaW9uIG9jY3VycmVkLiIiIgorICAgICAgICBjYWNoZSA9IHt9ICAjIHR5cGU6
IERpY3RbVHVwbGVbQW55LCBpbnQsIGludF0sIExpc3RbRGljdFtzdHIsIEFueV1dXQogICAgICAg
ICBmb3IgaSwgZW50cnkgaW4gZW51bWVyYXRlKHNlbGYpOgogICAgICAgICAgICAgIyBpZCBmb3Ig
dGhlIGNvZGUucmF3IGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZAogICAgICAgICAgICAgIyB0aGUg
c3RyYW5nZSBtZXRhcHJvZ3JhbW1pbmcgaW4gdGhlIGRlY29yYXRvciBsaWIgZnJvbSBweXBpCkBA
IC0zNjEsMTIgKzM5NywxMCBAQCBjbGFzcyBUcmFjZWJhY2sobGlzdCk6CiAgICAgICAgICAgICAg
ICAgZiA9IGVudHJ5LmZyYW1lCiAgICAgICAgICAgICAgICAgbG9jID0gZi5mX2xvY2FscwogICAg
ICAgICAgICAgICAgIGZvciBvdGhlcmxvYyBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIGYuaXNfdHJ1ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGYuZXZhbCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb19lcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX3JlY3Vyc2lvbmNhY2hlX2xvY2Fsc18xPWxvYywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3JlY3Vyc2lvbmNhY2hlX2xvY2Fsc18yPW90aGVybG9jLAotICAgICAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBpZiBmLmV2YWwoCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb19lcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVjdXJzaW9u
Y2FjaGVfbG9jYWxzXzE9bG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgX19yZWN1cnNpb25j
YWNoZV9sb2NhbHNfMj1vdGhlcmxvYywKICAgICAgICAgICAgICAgICAgICAgKToKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGVudHJ5
LmZyYW1lLmZfbG9jYWxzKQpAQCAtMzc4LDYwICs0MTIsMTU1IEBAIGNvX2VxdWFsID0gY29tcGls
ZSgKICkKIAogCi1jbGFzcyBFeGNlcHRpb25JbmZvKG9iamVjdCk6Ci0gICAgIiIiIHdyYXBzIHN5
cy5leGNfaW5mbygpIG9iamVjdHMgYW5kIG9mZmVycwotICAgICAgICBoZWxwIGZvciBuYXZpZ2F0
aW5nIHRoZSB0cmFjZWJhY2suCi0gICAgIiIiCi0gICAgX3N0cmlwdGV4dCA9ICIiCi0gICAgX2Fz
c2VydF9zdGFydF9yZXByID0gIkFzc2VydGlvbkVycm9yKHUnYXNzZXJ0ICIgaWYgX1BZMiBlbHNl
ICJBc3NlcnRpb25FcnJvcignYXNzZXJ0ICIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0dXA9
Tm9uZSwgZXhwcmluZm89Tm9uZSk6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0KLSAg
ICAgICAgaWYgdHVwIGlzIE5vbmU6Ci0gICAgICAgICAgICB0dXAgPSBzeXMuZXhjX2luZm8oKQot
ICAgICAgICAgICAgaWYgZXhwcmluZm8gaXMgTm9uZSBhbmQgaXNpbnN0YW5jZSh0dXBbMV0sIEFz
c2VydGlvbkVycm9yKToKLSAgICAgICAgICAgICAgICBleHByaW5mbyA9IGdldGF0dHIodHVwWzFd
LCAibXNnIiwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiBleHByaW5mbyBpcyBOb25lOgotICAg
ICAgICAgICAgICAgICAgICBleHByaW5mbyA9IHB5LmlvLnNhZmVyZXByKHR1cFsxXSkKLSAgICAg
ICAgICAgICAgICBpZiBleHByaW5mbyBhbmQgZXhwcmluZm8uc3RhcnRzd2l0aChzZWxmLl9hc3Nl
cnRfc3RhcnRfcmVwcik6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmlwdGV4dCA9ICJB
c3NlcnRpb25FcnJvcjogIgotICAgICAgICBzZWxmLl9leGNpbmZvID0gdHVwCi0gICAgICAgICM6
IHRoZSBleGNlcHRpb24gY2xhc3MKLSAgICAgICAgc2VsZi50eXBlID0gdHVwWzBdCi0gICAgICAg
ICM6IHRoZSBleGNlcHRpb24gaW5zdGFuY2UKLSAgICAgICAgc2VsZi52YWx1ZSA9IHR1cFsxXQot
ICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIHJhdyB0cmFjZWJhY2sKLSAgICAgICAgc2VsZi50YiA9
IHR1cFsyXQotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIHR5cGUgbmFtZQotICAgICAgICBzZWxm
LnR5cGVuYW1lID0gc2VsZi50eXBlLl9fbmFtZV9fCi0gICAgICAgICM6IHRoZSBleGNlcHRpb24g
dHJhY2ViYWNrIChfcHl0ZXN0Ll9jb2RlLlRyYWNlYmFjayBpbnN0YW5jZSkKLSAgICAgICAgc2Vs
Zi50cmFjZWJhY2sgPSBfcHl0ZXN0Ll9jb2RlLlRyYWNlYmFjayhzZWxmLnRiLCBleGNpbmZvPXJl
ZihzZWxmKSkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RXhj
ZXB0aW9uSW5mbyAlcyB0Ymxlbj0lZD4iICUgKHNlbGYudHlwZW5hbWUsIGxlbihzZWxmLnRyYWNl
YmFjaykpCi0KLSAgICBkZWYgZXhjb25seShzZWxmLCB0cnlzaG9ydD1GYWxzZSk6Ci0gICAgICAg
ICIiIiByZXR1cm4gdGhlIGV4Y2VwdGlvbiBhcyBhIHN0cmluZwotCi0gICAgICAgICAgICB3aGVu
ICd0cnlzaG9ydCcgcmVzb2x2ZXMgdG8gVHJ1ZSwgYW5kIHRoZSBleGNlcHRpb24gaXMgYQotICAg
ICAgICAgICAgX3B5dGVzdC5fY29kZS5fQXNzZXJ0aW9uRXJyb3IsIG9ubHkgdGhlIGFjdHVhbCBl
eGNlcHRpb24gcGFydCBvZgotICAgICAgICAgICAgdGhlIGV4Y2VwdGlvbiByZXByZXNlbnRhdGlv
biBpcyByZXR1cm5lZCAoc28gJ0Fzc2VydGlvbkVycm9yOiAnIGlzCi0gICAgICAgICAgICByZW1v
dmVkIGZyb20gdGhlIGJlZ2lubmluZykKK19FID0gVHlwZVZhcigiX0UiLCBib3VuZD1CYXNlRXhj
ZXB0aW9uLCBjb3ZhcmlhbnQ9VHJ1ZSkKKworCitAZmluYWwKK0BhdHRyLnMocmVwcj1GYWxzZSkK
K2NsYXNzIEV4Y2VwdGlvbkluZm8oR2VuZXJpY1tfRV0pOgorICAgICIiIldyYXBzIHN5cy5leGNf
aW5mbygpIG9iamVjdHMgYW5kIG9mZmVycyBoZWxwIGZvciBuYXZpZ2F0aW5nIHRoZSB0cmFjZWJh
Y2suIiIiCisKKyAgICBfYXNzZXJ0X3N0YXJ0X3JlcHIgPSAiQXNzZXJ0aW9uRXJyb3IoJ2Fzc2Vy
dCAiCisKKyAgICBfZXhjaW5mbyA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFtUdXBsZVsiVHlwZVtf
RV0iLCAiX0UiLCBUcmFjZWJhY2tUeXBlXV0pCisgICAgX3N0cmlwdGV4dCA9IGF0dHIuaWIodHlw
ZT1zdHIsIGRlZmF1bHQ9IiIpCisgICAgX3RyYWNlYmFjayA9IGF0dHIuaWIodHlwZT1PcHRpb25h
bFtUcmFjZWJhY2tdLCBkZWZhdWx0PU5vbmUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
ZnJvbV9leGNfaW5mbygKKyAgICAgICAgY2xzLAorICAgICAgICBleGNfaW5mbzogVHVwbGVbIlR5
cGVbX0VdIiwgIl9FIiwgVHJhY2ViYWNrVHlwZV0sCisgICAgICAgIGV4cHJpbmZvOiBPcHRpb25h
bFtzdHJdID0gTm9uZSwKKyAgICApIC0+ICJFeGNlcHRpb25JbmZvW19FXSI6CisgICAgICAgICIi
IlJldHVybiBhbiBFeGNlcHRpb25JbmZvIGZvciBhbiBleGlzdGluZyBleGNfaW5mbyB0dXBsZS4K
KworICAgICAgICAuLiB3YXJuaW5nOjoKKworICAgICAgICAgICAgRXhwZXJpbWVudGFsIEFQSQor
CisgICAgICAgIDpwYXJhbSBleHByaW5mbzoKKyAgICAgICAgICAgIEEgdGV4dCBzdHJpbmcgaGVs
cGluZyB0byBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN0cmlwCisgICAgICAgICAgICBgYEFzc2Vy
dGlvbkVycm9yYGAgZnJvbSB0aGUgb3V0cHV0LiBEZWZhdWx0cyB0byB0aGUgZXhjZXB0aW9uCisg
ICAgICAgICAgICBtZXNzYWdlL2BgX19zdHJfXygpYGAuCisgICAgICAgICIiIgorICAgICAgICBf
c3RyaXB0ZXh0ID0gIiIKKyAgICAgICAgaWYgZXhwcmluZm8gaXMgTm9uZSBhbmQgaXNpbnN0YW5j
ZShleGNfaW5mb1sxXSwgQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgZXhwcmluZm8gPSBn
ZXRhdHRyKGV4Y19pbmZvWzFdLCAibXNnIiwgTm9uZSkKKyAgICAgICAgICAgIGlmIGV4cHJpbmZv
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZXhwcmluZm8gPSBzYWZlcmVwcihleGNfaW5mb1sx
XSkKKyAgICAgICAgICAgIGlmIGV4cHJpbmZvIGFuZCBleHByaW5mby5zdGFydHN3aXRoKGNscy5f
YXNzZXJ0X3N0YXJ0X3JlcHIpOgorICAgICAgICAgICAgICAgIF9zdHJpcHRleHQgPSAiQXNzZXJ0
aW9uRXJyb3I6ICIKKworICAgICAgICByZXR1cm4gY2xzKGV4Y19pbmZvLCBfc3RyaXB0ZXh0KQor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fY3VycmVudCgKKyAgICAgICAgY2xzLCBl
eHByaW5mbzogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICApIC0+ICJFeGNlcHRpb25JbmZvW0Jh
c2VFeGNlcHRpb25dIjoKKyAgICAgICAgIiIiUmV0dXJuIGFuIEV4Y2VwdGlvbkluZm8gbWF0Y2hp
bmcgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLgorCisgICAgICAgIC4uIHdhcm5pbmc6OgorCisgICAg
ICAgICAgICBFeHBlcmltZW50YWwgQVBJCisKKyAgICAgICAgOnBhcmFtIGV4cHJpbmZvOgorICAg
ICAgICAgICAgQSB0ZXh0IHN0cmluZyBoZWxwaW5nIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQg
c3RyaXAKKyAgICAgICAgICAgIGBgQXNzZXJ0aW9uRXJyb3JgYCBmcm9tIHRoZSBvdXRwdXQuIERl
ZmF1bHRzIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgIG1lc3NhZ2UvYGBfX3N0cl9fKClg
YC4KKyAgICAgICAgIiIiCisgICAgICAgIHR1cCA9IHN5cy5leGNfaW5mbygpCisgICAgICAgIGFz
c2VydCB0dXBbMF0gaXMgbm90IE5vbmUsICJubyBjdXJyZW50IGV4Y2VwdGlvbiIKKyAgICAgICAg
YXNzZXJ0IHR1cFsxXSBpcyBub3QgTm9uZSwgIm5vIGN1cnJlbnQgZXhjZXB0aW9uIgorICAgICAg
ICBhc3NlcnQgdHVwWzJdIGlzIG5vdCBOb25lLCAibm8gY3VycmVudCBleGNlcHRpb24iCisgICAg
ICAgIGV4Y19pbmZvID0gKHR1cFswXSwgdHVwWzFdLCB0dXBbMl0pCisgICAgICAgIHJldHVybiBF
eGNlcHRpb25JbmZvLmZyb21fZXhjX2luZm8oZXhjX2luZm8sIGV4cHJpbmZvKQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIGZvcl9sYXRlcihjbHMpIC0+ICJFeGNlcHRpb25JbmZvW19FXSI6
CisgICAgICAgICIiIlJldHVybiBhbiB1bmZpbGxlZCBFeGNlcHRpb25JbmZvLiIiIgorICAgICAg
ICByZXR1cm4gY2xzKE5vbmUpCisKKyAgICBkZWYgZmlsbF91bmZpbGxlZChzZWxmLCBleGNfaW5m
bzogVHVwbGVbIlR5cGVbX0VdIiwgX0UsIFRyYWNlYmFja1R5cGVdKSAtPiBOb25lOgorICAgICAg
ICAiIiJGaWxsIGFuIHVuZmlsbGVkIEV4Y2VwdGlvbkluZm8gY3JlYXRlZCB3aXRoIGBgZm9yX2xh
dGVyKClgYC4iIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2V4Y2luZm8gaXMgTm9uZSwgIkV4Y2Vw
dGlvbkluZm8gd2FzIGFscmVhZHkgZmlsbGVkIgorICAgICAgICBzZWxmLl9leGNpbmZvID0gZXhj
X2luZm8KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0eXBlKHNlbGYpIC0+ICJUeXBlW19FXSI6
CisgICAgICAgICIiIlRoZSBleGNlcHRpb24gY2xhc3MuIiIiCisgICAgICAgIGFzc2VydCAoCisg
ICAgICAgICAgICBzZWxmLl9leGNpbmZvIGlzIG5vdCBOb25lCisgICAgICAgICksICIudHlwZSBj
YW4gb25seSBiZSB1c2VkIGFmdGVyIHRoZSBjb250ZXh0IG1hbmFnZXIgZXhpdHMiCisgICAgICAg
IHJldHVybiBzZWxmLl9leGNpbmZvWzBdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUo
c2VsZikgLT4gX0U6CisgICAgICAgICIiIlRoZSBleGNlcHRpb24gdmFsdWUuIiIiCisgICAgICAg
IGFzc2VydCAoCisgICAgICAgICAgICBzZWxmLl9leGNpbmZvIGlzIG5vdCBOb25lCisgICAgICAg
ICksICIudmFsdWUgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciB0aGUgY29udGV4dCBtYW5hZ2VyIGV4
aXRzIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhjaW5mb1sxXQorCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIHRiKHNlbGYpIC0+IFRyYWNlYmFja1R5cGU6CisgICAgICAgICIiIlRoZSBleGNlcHRp
b24gcmF3IHRyYWNlYmFjay4iIiIKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIHNlbGYu
X2V4Y2luZm8gaXMgbm90IE5vbmUKKyAgICAgICAgKSwgIi50YiBjYW4gb25seSBiZSB1c2VkIGFm
dGVyIHRoZSBjb250ZXh0IG1hbmFnZXIgZXhpdHMiCisgICAgICAgIHJldHVybiBzZWxmLl9leGNp
bmZvWzJdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdHlwZW5hbWUoc2VsZikgLT4gc3RyOgor
ICAgICAgICAiIiJUaGUgdHlwZSBuYW1lIG9mIHRoZSBleGNlcHRpb24uIiIiCisgICAgICAgIGFz
c2VydCAoCisgICAgICAgICAgICBzZWxmLl9leGNpbmZvIGlzIG5vdCBOb25lCisgICAgICAgICks
ICIudHlwZW5hbWUgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciB0aGUgY29udGV4dCBtYW5hZ2VyIGV4
aXRzIgorICAgICAgICByZXR1cm4gc2VsZi50eXBlLl9fbmFtZV9fCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgdHJhY2ViYWNrKHNlbGYpIC0+IFRyYWNlYmFjazoKKyAgICAgICAgIiIiVGhlIHRy
YWNlYmFjay4iIiIKKyAgICAgICAgaWYgc2VsZi5fdHJhY2ViYWNrIGlzIE5vbmU6CisgICAgICAg
ICAgICBzZWxmLl90cmFjZWJhY2sgPSBUcmFjZWJhY2soc2VsZi50YiwgZXhjaW5mbz1yZWYoc2Vs
ZikpCisgICAgICAgIHJldHVybiBzZWxmLl90cmFjZWJhY2sKKworICAgIEB0cmFjZWJhY2suc2V0
dGVyCisgICAgZGVmIHRyYWNlYmFjayhzZWxmLCB2YWx1ZTogVHJhY2ViYWNrKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl90cmFjZWJhY2sgPSB2YWx1ZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYp
IC0+IHN0cjoKKyAgICAgICAgaWYgc2VsZi5fZXhjaW5mbyBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuICI8RXhjZXB0aW9uSW5mbyBmb3IgcmFpc2VzIGNvbnRleHRtYW5hZ2VyPiIKKyAgICAg
ICAgcmV0dXJuICI8e30ge30gdGJsZW49e30+Ii5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLl9f
Y2xhc3NfXy5fX25hbWVfXywgc2FmZXJlcHIoc2VsZi5fZXhjaW5mb1sxXSksIGxlbihzZWxmLnRy
YWNlYmFjaykKKyAgICAgICAgKQorCisgICAgZGVmIGV4Y29ubHkoc2VsZiwgdHJ5c2hvcnQ6IGJv
b2wgPSBGYWxzZSkgLT4gc3RyOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4Y2VwdGlvbiBhcyBh
IHN0cmluZy4KKworICAgICAgICBXaGVuICd0cnlzaG9ydCcgcmVzb2x2ZXMgdG8gVHJ1ZSwgYW5k
IHRoZSBleGNlcHRpb24gaXMgYQorICAgICAgICBfcHl0ZXN0Ll9jb2RlLl9Bc3NlcnRpb25FcnJv
ciwgb25seSB0aGUgYWN0dWFsIGV4Y2VwdGlvbiBwYXJ0IG9mCisgICAgICAgIHRoZSBleGNlcHRp
b24gcmVwcmVzZW50YXRpb24gaXMgcmV0dXJuZWQgKHNvICdBc3NlcnRpb25FcnJvcjogJyBpcwor
ICAgICAgICByZW1vdmVkIGZyb20gdGhlIGJlZ2lubmluZykuCiAgICAgICAgICIiIgogICAgICAg
ICBsaW5lcyA9IGZvcm1hdF9leGNlcHRpb25fb25seShzZWxmLnR5cGUsIHNlbGYudmFsdWUpCiAg
ICAgICAgIHRleHQgPSAiIi5qb2luKGxpbmVzKQogICAgICAgICB0ZXh0ID0gdGV4dC5yc3RyaXAo
KQogICAgICAgICBpZiB0cnlzaG9ydDoKICAgICAgICAgICAgIGlmIHRleHQuc3RhcnRzd2l0aChz
ZWxmLl9zdHJpcHRleHQpOgotICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0W2xlbihzZWxmLl9z
dHJpcHRleHQpOl0KKyAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dFtsZW4oc2VsZi5fc3RyaXB0
ZXh0KSA6XQogICAgICAgICByZXR1cm4gdGV4dAogCi0gICAgZGVmIGVycmlzaW5zdGFuY2Uoc2Vs
ZiwgZXhjKToKLSAgICAgICAgIiIiIHJldHVybiBUcnVlIGlmIHRoZSBleGNlcHRpb24gaXMgYW4g
aW5zdGFuY2Ugb2YgZXhjICIiIgorICAgIGRlZiBlcnJpc2luc3RhbmNlKAorICAgICAgICBzZWxm
LCBleGM6IFVuaW9uWyJUeXBlW0Jhc2VFeGNlcHRpb25dIiwgVHVwbGVbIlR5cGVbQmFzZUV4Y2Vw
dGlvbl0iLCAuLi5dXQorICAgICkgLT4gYm9vbDoKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYg
dGhlIGV4Y2VwdGlvbiBpcyBhbiBpbnN0YW5jZSBvZiBleGMuCisKKyAgICAgICAgQ29uc2lkZXIg
dXNpbmcgYGBpc2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIGV4YylgYCBpbnN0ZWFkLgorICAgICAg
ICAiIiIKICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uoc2VsZi52YWx1ZSwgZXhjKQogCi0gICAg
ZGVmIF9nZXRyZXByY3Jhc2goc2VsZik6CisgICAgZGVmIF9nZXRyZXByY3Jhc2goc2VsZikgLT4g
IlJlcHJGaWxlTG9jYXRpb24iOgogICAgICAgICBleGNvbmx5ID0gc2VsZi5leGNvbmx5KHRyeXNo
b3J0PVRydWUpCiAgICAgICAgIGVudHJ5ID0gc2VsZi50cmFjZWJhY2suZ2V0Y3Jhc2hlbnRyeSgp
CiAgICAgICAgIHBhdGgsIGxpbmVubyA9IGVudHJ5LmZyYW1lLmNvZGUucmF3LmNvX2ZpbGVuYW1l
LCBlbnRyeS5saW5lbm8KQEAgLTQzOSwxOCArNTY4LDQyIEBAIGNsYXNzIEV4Y2VwdGlvbkluZm8o
b2JqZWN0KToKIAogICAgIGRlZiBnZXRyZXByKAogICAgICAgICBzZWxmLAotICAgICAgICBzaG93
bG9jYWxzPUZhbHNlLAotICAgICAgICBzdHlsZT0ibG9uZyIsCi0gICAgICAgIGFic3BhdGg9RmFs
c2UsCi0gICAgICAgIHRiZmlsdGVyPVRydWUsCi0gICAgICAgIGZ1bmNhcmdzPUZhbHNlLAotICAg
ICk6Ci0gICAgICAgICIiIiByZXR1cm4gc3RyKClhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMg
ZXhjZXB0aW9uIGluZm8uCi0gICAgICAgICAgICBzaG93bG9jYWxzOiBzaG93IGxvY2FscyBwZXIg
dHJhY2ViYWNrIGVudHJ5Ci0gICAgICAgICAgICBzdHlsZTogbG9uZ3xzaG9ydHxub3xuYXRpdmUg
dHJhY2ViYWNrIHN0eWxlCi0gICAgICAgICAgICB0YmZpbHRlcjogaGlkZSBlbnRyaWVzICh3aGVy
ZSBfX3RyYWNlYmFja2hpZGVfXyBpcyB0cnVlKQotCi0gICAgICAgICAgICBpbiBjYXNlIG9mIHN0
eWxlPT1uYXRpdmUsIHRiZmlsdGVyIGFuZCBzaG93bG9jYWxzIGlzIGlnbm9yZWQuCisgICAgICAg
IHNob3dsb2NhbHM6IGJvb2wgPSBGYWxzZSwKKyAgICAgICAgc3R5bGU6ICJfVHJhY2ViYWNrU3R5
bGUiID0gImxvbmciLAorICAgICAgICBhYnNwYXRoOiBib29sID0gRmFsc2UsCisgICAgICAgIHRi
ZmlsdGVyOiBib29sID0gVHJ1ZSwKKyAgICAgICAgZnVuY2FyZ3M6IGJvb2wgPSBGYWxzZSwKKyAg
ICAgICAgdHJ1bmNhdGVfbG9jYWxzOiBib29sID0gVHJ1ZSwKKyAgICAgICAgY2hhaW46IGJvb2wg
PSBUcnVlLAorICAgICkgLT4gVW5pb25bIlJlcHJFeGNlcHRpb25JbmZvIiwgIkV4Y2VwdGlvbkNo
YWluUmVwciJdOgorICAgICAgICAiIiJSZXR1cm4gc3RyKClhYmxlIHJlcHJlc2VudGF0aW9uIG9m
IHRoaXMgZXhjZXB0aW9uIGluZm8uCisKKyAgICAgICAgOnBhcmFtIGJvb2wgc2hvd2xvY2FsczoK
KyAgICAgICAgICAgIFNob3cgbG9jYWxzIHBlciB0cmFjZWJhY2sgZW50cnkuCisgICAgICAgICAg
ICBJZ25vcmVkIGlmIGBgc3R5bGU9PSJuYXRpdmUiYGAuCisKKyAgICAgICAgOnBhcmFtIHN0ciBz
dHlsZToKKyAgICAgICAgICAgIGxvbmd8c2hvcnR8bm98bmF0aXZlfHZhbHVlIHRyYWNlYmFjayBz
dHlsZS4KKworICAgICAgICA6cGFyYW0gYm9vbCBhYnNwYXRoOgorICAgICAgICAgICAgSWYgcGF0
aHMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gYWJzb2x1dGUgb3IgbGVmdCB1bmNoYW5nZWQuCisKKyAg
ICAgICAgOnBhcmFtIGJvb2wgdGJmaWx0ZXI6CisgICAgICAgICAgICBIaWRlIGVudHJpZXMgdGhh
dCBjb250YWluIGEgbG9jYWwgdmFyaWFibGUgYGBfX3RyYWNlYmFja2hpZGVfXz09VHJ1ZWBgLgor
ICAgICAgICAgICAgSWdub3JlZCBpZiBgYHN0eWxlPT0ibmF0aXZlImBgLgorCisgICAgICAgIDpw
YXJhbSBib29sIGZ1bmNhcmdzOgorICAgICAgICAgICAgU2hvdyBmaXh0dXJlcyAoImZ1bmNhcmdz
IiBmb3IgbGVnYWN5IHB1cnBvc2VzKSBwZXIgdHJhY2ViYWNrIGVudHJ5LgorCisgICAgICAgIDpw
YXJhbSBib29sIHRydW5jYXRlX2xvY2FsczoKKyAgICAgICAgICAgIFdpdGggYGBzaG93bG9jYWxz
PT1UcnVlYGAsIG1ha2Ugc3VyZSBsb2NhbHMgY2FuIGJlIHNhZmVseSByZXByZXNlbnRlZCBhcyBz
dHJpbmdzLgorCisgICAgICAgIDpwYXJhbSBib29sIGNoYWluOgorICAgICAgICAgICAgSWYgY2hh
aW5lZCBleGNlcHRpb25zIGluIFB5dGhvbiAzIHNob3VsZCBiZSBzaG93bi4KKworICAgICAgICAu
LiB2ZXJzaW9uY2hhbmdlZDo6IDMuOQorCisgICAgICAgICAgICBBZGRlZCB0aGUgYGBjaGFpbmBg
IHBhcmFtZXRlci4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHN0eWxlID09ICJuYXRpdmUiOgog
ICAgICAgICAgICAgcmV0dXJuIFJlcHJFeGNlcHRpb25JbmZvKApAQCAtNDY4LDg0ICs2MjEsODMg
QEAgY2xhc3MgRXhjZXB0aW9uSW5mbyhvYmplY3QpOgogICAgICAgICAgICAgYWJzcGF0aD1hYnNw
YXRoLAogICAgICAgICAgICAgdGJmaWx0ZXI9dGJmaWx0ZXIsCiAgICAgICAgICAgICBmdW5jYXJn
cz1mdW5jYXJncywKKyAgICAgICAgICAgIHRydW5jYXRlX2xvY2Fscz10cnVuY2F0ZV9sb2NhbHMs
CisgICAgICAgICAgICBjaGFpbj1jaGFpbiwKICAgICAgICAgKQogICAgICAgICByZXR1cm4gZm10
LnJlcHJfZXhjaW5mbyhzZWxmKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGVu
dHJ5ID0gc2VsZi50cmFjZWJhY2tbLTFdCi0gICAgICAgIGxvYyA9IFJlcHJGaWxlTG9jYXRpb24o
ZW50cnkucGF0aCwgZW50cnkubGluZW5vICsgMSwgc2VsZi5leGNvbmx5KCkpCi0gICAgICAgIHJl
dHVybiBzdHIobG9jKQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICBlbnRy
eSA9IHNlbGYudHJhY2ViYWNrWy0xXQotICAgICAgICBsb2MgPSBSZXByRmlsZUxvY2F0aW9uKGVu
dHJ5LnBhdGgsIGVudHJ5LmxpbmVubyArIDEsIHNlbGYuZXhjb25seSgpKQotICAgICAgICByZXR1
cm4gdGV4dF90eXBlKGxvYykKKyAgICBkZWYgbWF0Y2goc2VsZiwgcmVnZXhwOiAiVW5pb25bc3Ry
LCBQYXR0ZXJuW3N0cl1dIikgLT4gIkxpdGVyYWxbVHJ1ZV0iOgorICAgICAgICAiIiJDaGVjayB3
aGV0aGVyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gYHJlZ2V4cGAgbWF0Y2hlcyB0aGUgc3RyaW5n
CisgICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleGNlcHRpb24gdXNpbmcgOmZ1bmM6YHB5
dGhvbjpyZS5zZWFyY2hgLgogCi0gICAgZGVmIG1hdGNoKHNlbGYsIHJlZ2V4cCk6Ci0gICAgICAg
ICIiIgotICAgICAgICBNYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICdyZWdleHAnIG9uIHRo
ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YKLSAgICAgICAgdGhlIGV4Y2VwdGlvbi4gSWYgaXQg
bWF0Y2hlcyB0aGVuIFRydWUgaXMgcmV0dXJuZWQgKHNvIHRoYXQgaXQgaXMKLSAgICAgICAgcG9z
c2libGUgdG8gd3JpdGUgJ2Fzc2VydCBleGNpbmZvLm1hdGNoKCknKS4gSWYgaXQgZG9lc24ndCBt
YXRjaCBhbgotICAgICAgICBBc3NlcnRpb25FcnJvciBpcyByYWlzZWQuCisgICAgICAgIElmIGl0
IG1hdGNoZXMgYFRydWVgIGlzIHJldHVybmVkLCBvdGhlcndpc2UgYW4gYEFzc2VydGlvbkVycm9y
YCBpcyByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKLSAgICAgICAgaWYgbm90IHJlLnNlYXJjaChyZWdleHAsIHN0cihzZWxmLnZhbHVlKSk6Ci0g
ICAgICAgICAgICBhc3NlcnQgMCwgIlBhdHRlcm4gJ3shc30nIG5vdCBmb3VuZCBpbiAneyFzfSci
LmZvcm1hdChyZWdleHAsIHNlbGYudmFsdWUpCisgICAgICAgIG1zZyA9ICJSZWdleCBwYXR0ZXJu
IHshcn0gZG9lcyBub3QgbWF0Y2ggeyFyfS4iCisgICAgICAgIGlmIHJlZ2V4cCA9PSBzdHIoc2Vs
Zi52YWx1ZSk6CisgICAgICAgICAgICBtc2cgKz0gIiBEaWQgeW91IG1lYW4gdG8gYHJlLmVzY2Fw
ZSgpYCB0aGUgcmVnZXg/IgorICAgICAgICBhc3NlcnQgcmUuc2VhcmNoKHJlZ2V4cCwgc3RyKHNl
bGYudmFsdWUpKSwgbXNnLmZvcm1hdChyZWdleHAsIHN0cihzZWxmLnZhbHVlKSkKKyAgICAgICAg
IyBSZXR1cm4gVHJ1ZSB0byBhbGxvdyBmb3IgImFzc2VydCBleGNpbmZvLm1hdGNoKCkiLgogICAg
ICAgICByZXR1cm4gVHJ1ZQogCiAKIEBhdHRyLnMKLWNsYXNzIEZvcm1hdHRlZEV4Y2luZm8ob2Jq
ZWN0KToKLSAgICAiIiIgcHJlc2VudGluZyBpbmZvcm1hdGlvbiBhYm91dCBmYWlsaW5nIEZ1bmN0
aW9ucyBhbmQgR2VuZXJhdG9ycy4gIiIiCitjbGFzcyBGb3JtYXR0ZWRFeGNpbmZvOgorICAgICIi
IlByZXNlbnRpbmcgaW5mb3JtYXRpb24gYWJvdXQgZmFpbGluZyBGdW5jdGlvbnMgYW5kIEdlbmVy
YXRvcnMuIiIiCisKICAgICAjIGZvciB0cmFjZWJhY2sgZW50cmllcwogICAgIGZsb3dfbWFya2Vy
ID0gIj4iCiAgICAgZmFpbF9tYXJrZXIgPSAiRSIKIAotICAgIHNob3dsb2NhbHMgPSBhdHRyLmli
KGRlZmF1bHQ9RmFsc2UpCi0gICAgc3R5bGUgPSBhdHRyLmliKGRlZmF1bHQ9ImxvbmciKQotICAg
IGFic3BhdGggPSBhdHRyLmliKGRlZmF1bHQ9VHJ1ZSkKLSAgICB0YmZpbHRlciA9IGF0dHIuaWIo
ZGVmYXVsdD1UcnVlKQotICAgIGZ1bmNhcmdzID0gYXR0ci5pYihkZWZhdWx0PUZhbHNlKQorICAg
IHNob3dsb2NhbHMgPSBhdHRyLmliKHR5cGU9Ym9vbCwgZGVmYXVsdD1GYWxzZSkKKyAgICBzdHls
ZSA9IGF0dHIuaWIodHlwZT0iX1RyYWNlYmFja1N0eWxlIiwgZGVmYXVsdD0ibG9uZyIpCisgICAg
YWJzcGF0aCA9IGF0dHIuaWIodHlwZT1ib29sLCBkZWZhdWx0PVRydWUpCisgICAgdGJmaWx0ZXIg
PSBhdHRyLmliKHR5cGU9Ym9vbCwgZGVmYXVsdD1UcnVlKQorICAgIGZ1bmNhcmdzID0gYXR0ci5p
Yih0eXBlPWJvb2wsIGRlZmF1bHQ9RmFsc2UpCisgICAgdHJ1bmNhdGVfbG9jYWxzID0gYXR0ci5p
Yih0eXBlPWJvb2wsIGRlZmF1bHQ9VHJ1ZSkKKyAgICBjaGFpbiA9IGF0dHIuaWIodHlwZT1ib29s
LCBkZWZhdWx0PVRydWUpCiAgICAgYXN0Y2FjaGUgPSBhdHRyLmliKGRlZmF1bHQ9YXR0ci5GYWN0
b3J5KGRpY3QpLCBpbml0PUZhbHNlLCByZXByPUZhbHNlKQogCi0gICAgZGVmIF9nZXRpbmRlbnQo
c2VsZiwgc291cmNlKToKLSAgICAgICAgIyBmaWd1cmUgb3V0IGluZGVudCBmb3IgZ2l2ZW4gc291
cmNlCisgICAgZGVmIF9nZXRpbmRlbnQoc2VsZiwgc291cmNlOiAiU291cmNlIikgLT4gaW50Ogor
ICAgICAgICAjIEZpZ3VyZSBvdXQgaW5kZW50IGZvciB0aGUgZ2l2ZW4gc291cmNlLgogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBzID0gc3RyKHNvdXJjZS5nZXRzdGF0ZW1lbnQobGVuKHNvdXJj
ZSkgLSAxKSkKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAg
cmFpc2UKLSAgICAgICAgZXhjZXB0OiAgIyBub3FhCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0
aW9uOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHMgPSBzdHIoc291cmNlWy0x
XSkKICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAgICAgZXhjZXB0OiAgIyBub3FhCisgICAgICAgICAgICBleGNlcHQg
QmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICByZXR1cm4g
NCArIChsZW4ocykgLSBsZW4ocy5sc3RyaXAoKSkpCiAKLSAgICBkZWYgX2dldGVudHJ5c291cmNl
KHNlbGYsIGVudHJ5KToKKyAgICBkZWYgX2dldGVudHJ5c291cmNlKHNlbGYsIGVudHJ5OiBUcmFj
ZWJhY2tFbnRyeSkgLT4gT3B0aW9uYWxbIlNvdXJjZSJdOgogICAgICAgICBzb3VyY2UgPSBlbnRy
eS5nZXRzb3VyY2Uoc2VsZi5hc3RjYWNoZSkKICAgICAgICAgaWYgc291cmNlIGlzIG5vdCBOb25l
OgogICAgICAgICAgICAgc291cmNlID0gc291cmNlLmRlaW5kZW50KCkKICAgICAgICAgcmV0dXJu
IHNvdXJjZQogCi0gICAgZGVmIF9zYWZlcmVwcihzZWxmLCBvYmopOgotICAgICAgICByZXR1cm4g
cHkuaW8uc2FmZXJlcHIob2JqKQotCi0gICAgZGVmIHJlcHJfYXJncyhzZWxmLCBlbnRyeSk6Cisg
ICAgZGVmIHJlcHJfYXJncyhzZWxmLCBlbnRyeTogVHJhY2ViYWNrRW50cnkpIC0+IE9wdGlvbmFs
WyJSZXByRnVuY0FyZ3MiXToKICAgICAgICAgaWYgc2VsZi5mdW5jYXJnczoKICAgICAgICAgICAg
IGFyZ3MgPSBbXQogICAgICAgICAgICAgZm9yIGFyZ25hbWUsIGFyZ3ZhbHVlIGluIGVudHJ5LmZy
YW1lLmdldGFyZ3ModmFyPVRydWUpOgotICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKChhcmdu
YW1lLCBzZWxmLl9zYWZlcmVwcihhcmd2YWx1ZSkpKQorICAgICAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKChhcmduYW1lLCBzYWZlcmVwcihhcmd2YWx1ZSkpKQogICAgICAgICAgICAgcmV0dXJuIFJl
cHJGdW5jQXJncyhhcmdzKQorICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIGdldF9zb3Vy
Y2Uoc2VsZiwgc291cmNlLCBsaW5lX2luZGV4PS0xLCBleGNpbmZvPU5vbmUsIHNob3J0PUZhbHNl
KToKLSAgICAgICAgIiIiIHJldHVybiBmb3JtYXR0ZWQgYW5kIG1hcmtlZCB1cCBzb3VyY2UgbGlu
ZXMuICIiIgotICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotCisgICAgZGVmIGdldF9zb3Vy
Y2UoCisgICAgICAgIHNlbGYsCisgICAgICAgIHNvdXJjZTogT3B0aW9uYWxbIlNvdXJjZSJdLAor
ICAgICAgICBsaW5lX2luZGV4OiBpbnQgPSAtMSwKKyAgICAgICAgZXhjaW5mbzogT3B0aW9uYWxb
RXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXV0gPSBOb25lLAorICAgICAgICBzaG9ydDogYm9v
bCA9IEZhbHNlLAorICAgICkgLT4gTGlzdFtzdHJdOgorICAgICAgICAiIiJSZXR1cm4gZm9ybWF0
dGVkIGFuZCBtYXJrZWQgdXAgc291cmNlIGxpbmVzLiIiIgogICAgICAgICBsaW5lcyA9IFtdCiAg
ICAgICAgIGlmIHNvdXJjZSBpcyBOb25lIG9yIGxpbmVfaW5kZXggPj0gbGVuKHNvdXJjZS5saW5l
cyk6Ci0gICAgICAgICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgiPz8/IikKKyAg
ICAgICAgICAgIHNvdXJjZSA9IFNvdXJjZSgiPz8/IikKICAgICAgICAgICAgIGxpbmVfaW5kZXgg
PSAwCiAgICAgICAgIGlmIGxpbmVfaW5kZXggPCAwOgogICAgICAgICAgICAgbGluZV9pbmRleCAr
PSBsZW4oc291cmNlKQpAQCAtNTU2LDI2ICs3MDgsMzEgQEAgY2xhc3MgRm9ybWF0dGVkRXhjaW5m
byhvYmplY3QpOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gc291cmNlLmxpbmVzWzpsaW5lX2lu
ZGV4XToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc3BhY2VfcHJlZml4ICsgbGluZSkK
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLmZsb3dfbWFya2VyICsgIiAgICIgKyBzb3Vy
Y2UubGluZXNbbGluZV9pbmRleF0pCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzb3VyY2UubGlu
ZXNbbGluZV9pbmRleCArIDE6XToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNvdXJjZS5saW5l
c1tsaW5lX2luZGV4ICsgMSA6XToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc3BhY2Vf
cHJlZml4ICsgbGluZSkKICAgICAgICAgaWYgZXhjaW5mbyBpcyBub3QgTm9uZToKICAgICAgICAg
ICAgIGluZGVudCA9IDQgaWYgc2hvcnQgZWxzZSBzZWxmLl9nZXRpbmRlbnQoc291cmNlKQogICAg
ICAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2V0X2V4Y29ubHkoZXhjaW5mbywgaW5kZW50PWlu
ZGVudCwgbWFya2FsbD1UcnVlKSkKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKLSAgICBkZWYgZ2V0
X2V4Y29ubHkoc2VsZiwgZXhjaW5mbywgaW5kZW50PTQsIG1hcmthbGw9RmFsc2UpOgorICAgIGRl
ZiBnZXRfZXhjb25seSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZXhjaW5mbzogRXhjZXB0aW9u
SW5mb1tCYXNlRXhjZXB0aW9uXSwKKyAgICAgICAgaW5kZW50OiBpbnQgPSA0LAorICAgICAgICBt
YXJrYWxsOiBib29sID0gRmFsc2UsCisgICAgKSAtPiBMaXN0W3N0cl06CiAgICAgICAgIGxpbmVz
ID0gW10KLSAgICAgICAgaW5kZW50ID0gIiAiICogaW5kZW50Ci0gICAgICAgICMgZ2V0IHRoZSBy
ZWFsIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBvdXQKKyAgICAgICAgaW5kZW50c3RyID0gIiAiICog
aW5kZW50CisgICAgICAgICMgR2V0IHRoZSByZWFsIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBvdXQu
CiAgICAgICAgIGV4bGluZXMgPSBleGNpbmZvLmV4Y29ubHkodHJ5c2hvcnQ9VHJ1ZSkuc3BsaXQo
IlxuIikKLSAgICAgICAgZmFpbGluZGVudCA9IHNlbGYuZmFpbF9tYXJrZXIgKyBpbmRlbnRbMTpd
CisgICAgICAgIGZhaWxpbmRlbnQgPSBzZWxmLmZhaWxfbWFya2VyICsgaW5kZW50c3RyWzE6XQog
ICAgICAgICBmb3IgbGluZSBpbiBleGxpbmVzOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKGZh
aWxpbmRlbnQgKyBsaW5lKQogICAgICAgICAgICAgaWYgbm90IG1hcmthbGw6Ci0gICAgICAgICAg
ICAgICAgZmFpbGluZGVudCA9IGluZGVudAorICAgICAgICAgICAgICAgIGZhaWxpbmRlbnQgPSBp
bmRlbnRzdHIKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKLSAgICBkZWYgcmVwcl9sb2NhbHMoc2Vs
ZiwgbG9jYWxzKToKKyAgICBkZWYgcmVwcl9sb2NhbHMoc2VsZiwgbG9jYWxzOiBNYXBwaW5nW3N0
ciwgb2JqZWN0XSkgLT4gT3B0aW9uYWxbIlJlcHJMb2NhbHMiXToKICAgICAgICAgaWYgc2VsZi5z
aG93bG9jYWxzOgogICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICAga2V5cyA9IFts
b2MgZm9yIGxvYyBpbiBsb2NhbHMgaWYgbG9jWzBdICE9ICJAIl0KQEAgLTU4OCwzMiArNzQ1LDMz
IEBAIGNsYXNzIEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAg
IyBUaGlzIGZvcm1hdHRpbmcgY291bGQgYWxsIGJlIGhhbmRsZWQgYnkgdGhlCiAgICAgICAgICAg
ICAgICAgICAgICMgX3JlcHIoKSBmdW5jdGlvbiwgd2hpY2ggaXMgb25seSByZXBybGliLlJlcHIg
aW4KICAgICAgICAgICAgICAgICAgICAgIyBkaXNndWlzZSwgc28gaXMgdmVyeSBjb25maWd1cmFi
bGUuCi0gICAgICAgICAgICAgICAgICAgIHN0cl9yZXByID0gc2VsZi5fc2FmZXJlcHIodmFsdWUp
Ci0gICAgICAgICAgICAgICAgICAgICMgaWYgbGVuKHN0cl9yZXByKSA8IDcwIG9yIG5vdCBpc2lu
c3RhbmNlKHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChsaXN0LCB0dXBsZSwgZGljdCkpOgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoIiUtMTBzID0gJXMiICUgKG5hbWUsIHN0cl9yZXByKSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgc2VsZi50cnVuY2F0ZV9sb2NhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJf
cmVwciA9IHNhZmVyZXByKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyX3JlcHIgPSBzYWZlZm9ybWF0KHZhbHVlKQorICAgICAgICAg
ICAgICAgICAgICAjIGlmIGxlbihzdHJfcmVwcikgPCA3MCBvciBub3QgaXNpbnN0YW5jZSh2YWx1
ZSwgKGxpc3QsIHR1cGxlLCBkaWN0KSk6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgiezo8MTB9ID0ge30iLmZvcm1hdChuYW1lLCBzdHJfcmVwcikpCiAgICAgICAgICAgICAgICAg
ICAgICMgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyAgICBzZWxmLl9saW5lKCIlLTEwcyA9
XFwiICUgKG5hbWUsKSkKICAgICAgICAgICAgICAgICAgICAgIyAgICAjIFhYWAogICAgICAgICAg
ICAgICAgICAgICAjICAgIHBwcmludC5wcHJpbnQodmFsdWUsIHN0cmVhbT1zZWxmLmV4Y2luZm93
cml0ZXIpCiAgICAgICAgICAgICByZXR1cm4gUmVwckxvY2FscyhsaW5lcykKKyAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIGRlZiByZXByX3RyYWNlYmFja19lbnRyeShzZWxmLCBlbnRyeSwgZXhj
aW5mbz1Ob25lKToKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLQotICAgICAgICBzb3Vy
Y2UgPSBzZWxmLl9nZXRlbnRyeXNvdXJjZShlbnRyeSkKLSAgICAgICAgaWYgc291cmNlIGlzIE5v
bmU6Ci0gICAgICAgICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgiPz8/IikKLSAg
ICAgICAgICAgIGxpbmVfaW5kZXggPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGVu
dHJ5LmdldGZpcnN0bGluZXNvdXJjZSgpIGNhbiBiZSAtMSwgc2hvdWxkIGJlIDAgb24ganl0aG9u
Ci0gICAgICAgICAgICBsaW5lX2luZGV4ID0gZW50cnkubGluZW5vIC0gbWF4KGVudHJ5LmdldGZp
cnN0bGluZXNvdXJjZSgpLCAwKQotCi0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgc3R5bGUg
PSBlbnRyeS5fcmVwcl9zdHlsZQotICAgICAgICBpZiBzdHlsZSBpcyBOb25lOgotICAgICAgICAg
ICAgc3R5bGUgPSBzZWxmLnN0eWxlCisgICAgZGVmIHJlcHJfdHJhY2ViYWNrX2VudHJ5KAorICAg
ICAgICBzZWxmLAorICAgICAgICBlbnRyeTogVHJhY2ViYWNrRW50cnksCisgICAgICAgIGV4Y2lu
Zm86IE9wdGlvbmFsW0V4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl1dID0gTm9uZSwKKyAgICAp
IC0+ICJSZXByRW50cnkiOgorICAgICAgICBsaW5lcyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQor
ICAgICAgICBzdHlsZSA9IGVudHJ5Ll9yZXByX3N0eWxlIGlmIGVudHJ5Ll9yZXByX3N0eWxlIGlz
IG5vdCBOb25lIGVsc2Ugc2VsZi5zdHlsZQogICAgICAgICBpZiBzdHlsZSBpbiAoInNob3J0Iiwg
ImxvbmciKToKKyAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuX2dldGVudHJ5c291cmNlKGVudHJ5
KQorICAgICAgICAgICAgaWYgc291cmNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc291cmNl
ID0gU291cmNlKCI/Pz8iKQorICAgICAgICAgICAgICAgIGxpbmVfaW5kZXggPSAwCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmVfaW5kZXggPSBlbnRyeS5saW5lbm8gLSBl
bnRyeS5nZXRmaXJzdGxpbmVzb3VyY2UoKQogICAgICAgICAgICAgc2hvcnQgPSBzdHlsZSA9PSAi
c2hvcnQiCiAgICAgICAgICAgICByZXByYXJncyA9IHNlbGYucmVwcl9hcmdzKGVudHJ5KSBpZiBu
b3Qgc2hvcnQgZWxzZSBOb25lCiAgICAgICAgICAgICBzID0gc2VsZi5nZXRfc291cmNlKHNvdXJj
ZSwgbGluZV9pbmRleCwgZXhjaW5mbywgc2hvcnQ9c2hvcnQpCkBAIC02MjMsMTQgKzc4MSwxNyBA
QCBjbGFzcyBGb3JtYXR0ZWRFeGNpbmZvKG9iamVjdCk6CiAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBleGNpbmZvIGFuZCBleGNpbmZvLnR5cGVuYW1lIG9yICIi
CiAgICAgICAgICAgICBwYXRoID0gc2VsZi5fbWFrZXBhdGgoZW50cnkucGF0aCkKLSAgICAgICAg
ICAgIGZpbGVsb2NyZXByID0gUmVwckZpbGVMb2NhdGlvbihwYXRoLCBlbnRyeS5saW5lbm8gKyAx
LCBtZXNzYWdlKQotICAgICAgICAgICAgbG9jYWxzcmVwciA9IE5vbmUKLSAgICAgICAgICAgIGlm
IG5vdCBzaG9ydDoKLSAgICAgICAgICAgICAgICBsb2NhbHNyZXByID0gc2VsZi5yZXByX2xvY2Fs
cyhlbnRyeS5sb2NhbHMpCi0gICAgICAgICAgICByZXR1cm4gUmVwckVudHJ5KGxpbmVzLCByZXBy
YXJncywgbG9jYWxzcmVwciwgZmlsZWxvY3JlcHIsIHN0eWxlKQotICAgICAgICBpZiBleGNpbmZv
OgotICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2V0X2V4Y29ubHkoZXhjaW5mbywgaW5k
ZW50PTQpKQotICAgICAgICByZXR1cm4gUmVwckVudHJ5KGxpbmVzLCBOb25lLCBOb25lLCBOb25l
LCBzdHlsZSkKKyAgICAgICAgICAgIHJlcHJmaWxlbG9jID0gUmVwckZpbGVMb2NhdGlvbihwYXRo
LCBlbnRyeS5saW5lbm8gKyAxLCBtZXNzYWdlKQorICAgICAgICAgICAgbG9jYWxzcmVwciA9IHNl
bGYucmVwcl9sb2NhbHMoZW50cnkubG9jYWxzKQorICAgICAgICAgICAgcmV0dXJuIFJlcHJFbnRy
eShsaW5lcywgcmVwcmFyZ3MsIGxvY2Fsc3JlcHIsIHJlcHJmaWxlbG9jLCBzdHlsZSkKKyAgICAg
ICAgZWxpZiBzdHlsZSA9PSAidmFsdWUiOgorICAgICAgICAgICAgaWYgZXhjaW5mbzoKKyAgICAg
ICAgICAgICAgICBsaW5lcy5leHRlbmQoc3RyKGV4Y2luZm8udmFsdWUpLnNwbGl0KCJcbiIpKQor
ICAgICAgICAgICAgcmV0dXJuIFJlcHJFbnRyeShsaW5lcywgTm9uZSwgTm9uZSwgTm9uZSwgc3R5
bGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBleGNpbmZvOgorICAgICAgICAgICAg
ICAgIGxpbmVzLmV4dGVuZChzZWxmLmdldF9leGNvbmx5KGV4Y2luZm8sIGluZGVudD00KSkKKyAg
ICAgICAgICAgIHJldHVybiBSZXByRW50cnkobGluZXMsIE5vbmUsIE5vbmUsIE5vbmUsIHN0eWxl
KQogCiAgICAgZGVmIF9tYWtlcGF0aChzZWxmLCBwYXRoKToKICAgICAgICAgaWYgbm90IHNlbGYu
YWJzcGF0aDoKQEAgLTY0MiwzNSArODAzLDQzIEBAIGNsYXNzIEZvcm1hdHRlZEV4Y2luZm8ob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBwYXRoID0gbnAKICAgICAgICAgcmV0dXJuIHBhdGgKIAot
ICAgIGRlZiByZXByX3RyYWNlYmFjayhzZWxmLCBleGNpbmZvKToKKyAgICBkZWYgcmVwcl90cmFj
ZWJhY2soc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSkgLT4gIlJl
cHJUcmFjZWJhY2siOgogICAgICAgICB0cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjawogICAg
ICAgICBpZiBzZWxmLnRiZmlsdGVyOgogICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNr
LmZpbHRlcigpCiAKLSAgICAgICAgaWYgaXNfcmVjdXJzaW9uX2Vycm9yKGV4Y2luZm8pOgorICAg
ICAgICBpZiBpc2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIFJlY3Vyc2lvbkVycm9yKToKICAgICAg
ICAgICAgIHRyYWNlYmFjaywgZXh0cmFsaW5lID0gc2VsZi5fdHJ1bmNhdGVfcmVjdXJzaXZlX3Ry
YWNlYmFjayh0cmFjZWJhY2spCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHRyYWxpbmUg
PSBOb25lCiAKICAgICAgICAgbGFzdCA9IHRyYWNlYmFja1stMV0KICAgICAgICAgZW50cmllcyA9
IFtdCisgICAgICAgIGlmIHNlbGYuc3R5bGUgPT0gInZhbHVlIjoKKyAgICAgICAgICAgIHJlcHJl
bnRyeSA9IHNlbGYucmVwcl90cmFjZWJhY2tfZW50cnkobGFzdCwgZXhjaW5mbykKKyAgICAgICAg
ICAgIGVudHJpZXMuYXBwZW5kKHJlcHJlbnRyeSkKKyAgICAgICAgICAgIHJldHVybiBSZXByVHJh
Y2ViYWNrKGVudHJpZXMsIE5vbmUsIHN0eWxlPXNlbGYuc3R5bGUpCisKICAgICAgICAgZm9yIGlu
ZGV4LCBlbnRyeSBpbiBlbnVtZXJhdGUodHJhY2ViYWNrKToKICAgICAgICAgICAgIGVpbmZvID0g
KGxhc3QgPT0gZW50cnkpIGFuZCBleGNpbmZvIG9yIE5vbmUKICAgICAgICAgICAgIHJlcHJlbnRy
eSA9IHNlbGYucmVwcl90cmFjZWJhY2tfZW50cnkoZW50cnksIGVpbmZvKQogICAgICAgICAgICAg
ZW50cmllcy5hcHBlbmQocmVwcmVudHJ5KQogICAgICAgICByZXR1cm4gUmVwclRyYWNlYmFjayhl
bnRyaWVzLCBleHRyYWxpbmUsIHN0eWxlPXNlbGYuc3R5bGUpCiAKLSAgICBkZWYgX3RydW5jYXRl
X3JlY3Vyc2l2ZV90cmFjZWJhY2soc2VsZiwgdHJhY2ViYWNrKToKLSAgICAgICAgIiIiCi0gICAg
ICAgIFRydW5jYXRlIHRoZSBnaXZlbiByZWN1cnNpdmUgdHJhY2ViYWNrIHRyeWluZyB0byBmaW5k
IHRoZSBzdGFydGluZyBwb2ludAotICAgICAgICBvZiB0aGUgcmVjdXJzaW9uLgorICAgIGRlZiBf
dHJ1bmNhdGVfcmVjdXJzaXZlX3RyYWNlYmFjaygKKyAgICAgICAgc2VsZiwgdHJhY2ViYWNrOiBU
cmFjZWJhY2sKKyAgICApIC0+IFR1cGxlW1RyYWNlYmFjaywgT3B0aW9uYWxbc3RyXV06CisgICAg
ICAgICIiIlRydW5jYXRlIHRoZSBnaXZlbiByZWN1cnNpdmUgdHJhY2ViYWNrIHRyeWluZyB0byBm
aW5kIHRoZSBzdGFydGluZworICAgICAgICBwb2ludCBvZiB0aGUgcmVjdXJzaW9uLgogCi0gICAg
ICAgIFRoZSBkZXRlY3Rpb24gaXMgZG9uZSBieSBnb2luZyB0aHJvdWdoIGVhY2ggdHJhY2ViYWNr
IGVudHJ5IGFuZCBmaW5kaW5nIHRoZQotICAgICAgICBwb2ludCBpbiB3aGljaCB0aGUgbG9jYWxz
IG9mIHRoZSBmcmFtZSBhcmUgZXF1YWwgdG8gdGhlIGxvY2FscyBvZiBhIHByZXZpb3VzIGZyYW1l
IChzZWUgYGByZWN1cnNpb25pbmRleCgpYGAuCisgICAgICAgIFRoZSBkZXRlY3Rpb24gaXMgZG9u
ZSBieSBnb2luZyB0aHJvdWdoIGVhY2ggdHJhY2ViYWNrIGVudHJ5IGFuZAorICAgICAgICBmaW5k
aW5nIHRoZSBwb2ludCBpbiB3aGljaCB0aGUgbG9jYWxzIG9mIHRoZSBmcmFtZSBhcmUgZXF1YWwg
dG8gdGhlCisgICAgICAgIGxvY2FscyBvZiBhIHByZXZpb3VzIGZyYW1lIChzZWUgYGByZWN1cnNp
b25pbmRleCgpYGApLgogCi0gICAgICAgIEhhbmRsZSB0aGUgc2l0dWF0aW9uIHdoZXJlIHRoZSBy
ZWN1cnNpb24gcHJvY2VzcyBtaWdodCByYWlzZSBhbiBleGNlcHRpb24gKGZvciBleGFtcGxlCi0g
ICAgICAgIGNvbXBhcmluZyBudW1weSBhcnJheXMgdXNpbmcgZXF1YWxpdHkgcmFpc2VzIGEgVHlw
ZUVycm9yKSwgaW4gd2hpY2ggY2FzZSB3ZSBkbyBvdXIgYmVzdCB0bwotICAgICAgICB3YXJuIHRo
ZSB1c2VyIG9mIHRoZSBlcnJvciBhbmQgc2hvdyBhIGxpbWl0ZWQgdHJhY2ViYWNrLgorICAgICAg
ICBIYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgcmVjdXJzaW9uIHByb2Nlc3MgbWlnaHQg
cmFpc2UgYW4KKyAgICAgICAgZXhjZXB0aW9uIChmb3IgZXhhbXBsZSBjb21wYXJpbmcgbnVtcHkg
YXJyYXlzIHVzaW5nIGVxdWFsaXR5IHJhaXNlcyBhCisgICAgICAgIFR5cGVFcnJvciksIGluIHdo
aWNoIGNhc2Ugd2UgZG8gb3VyIGJlc3QgdG8gd2FybiB0aGUgdXNlciBvZiB0aGUKKyAgICAgICAg
ZXJyb3IgYW5kIHNob3cgYSBsaW1pdGVkIHRyYWNlYmFjay4KICAgICAgICAgIiIiCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHJlY3Vyc2lvbmluZGV4ID0gdHJhY2ViYWNrLnJlY3Vyc2lvbmlu
ZGV4KCkKQEAgLTY4MywxMzYgKzg1MiwxNTIgQEAgY2xhc3MgRm9ybWF0dGVkRXhjaW5mbyhvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICIgIERpc3BsYXlpbmcgZmlyc3QgYW5kIGxhc3Qge21heF9m
cmFtZXN9IHN0YWNrIGZyYW1lcyBvdXQgb2Yge3RvdGFsfS4iCiAgICAgICAgICAgICApLmZvcm1h
dCgKICAgICAgICAgICAgICAgICBleGNfdHlwZT10eXBlKGUpLl9fbmFtZV9fLAotICAgICAgICAg
ICAgICAgIGV4Y19tc2c9c2FmZV9zdHIoZSksCisgICAgICAgICAgICAgICAgZXhjX21zZz1zdHIo
ZSksCiAgICAgICAgICAgICAgICAgbWF4X2ZyYW1lcz1tYXhfZnJhbWVzLAogICAgICAgICAgICAg
ICAgIHRvdGFsPWxlbih0cmFjZWJhY2spLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgdHJh
Y2ViYWNrID0gdHJhY2ViYWNrWzptYXhfZnJhbWVzXSArIHRyYWNlYmFja1stbWF4X2ZyYW1lczpd
CisgICAgICAgICAgICApICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICAgICAgICAgICMgVHlw
ZSBpZ25vcmVkIGJlY2F1c2UgYWRkaW5nIHR3byBpbnN0YWNlcyBvZiBhIExpc3Qgc3VidHlwZQor
ICAgICAgICAgICAgIyBjdXJyZW50bHkgaW5jb3JyZWN0bHkgaGFzIHR5cGUgTGlzdCBpbnN0ZWFk
IG9mIHRoZSBzdWJ0eXBlLgorICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrWzptYXhf
ZnJhbWVzXSArIHRyYWNlYmFja1stbWF4X2ZyYW1lczpdICAjIHR5cGU6IGlnbm9yZQogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgaWYgcmVjdXJzaW9uaW5kZXggaXMgbm90IE5vbmU6CiAgICAg
ICAgICAgICAgICAgZXh0cmFsaW5lID0gIiEhISBSZWN1cnNpb24gZGV0ZWN0ZWQgKHNhbWUgbG9j
YWxzICYgcG9zaXRpb24pIgotICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja1s6
cmVjdXJzaW9uaW5kZXggKyAxXQorICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFj
a1s6IHJlY3Vyc2lvbmluZGV4ICsgMV0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgZXh0cmFsaW5lID0gTm9uZQogCiAgICAgICAgIHJldHVybiB0cmFjZWJhY2ssIGV4dHJhbGlu
ZQogCi0gICAgZGVmIHJlcHJfZXhjaW5mbyhzZWxmLCBleGNpbmZvKToKLSAgICAgICAgaWYgX1BZ
MjoKLSAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBzZWxmLnJlcHJfdHJhY2ViYWNrKGV4Y2lu
Zm8pCi0gICAgICAgICAgICByZXByY3Jhc2ggPSBleGNpbmZvLl9nZXRyZXByY3Jhc2goKQotCi0g
ICAgICAgICAgICByZXR1cm4gUmVwckV4Y2VwdGlvbkluZm8ocmVwcnRyYWNlYmFjaywgcmVwcmNy
YXNoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVwcl9jaGFpbiA9IFtdCi0gICAgICAg
ICAgICBlID0gZXhjaW5mby52YWx1ZQotICAgICAgICAgICAgZGVzY3IgPSBOb25lCi0gICAgICAg
ICAgICB3aGlsZSBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIGV4Y2luZm86Ci0g
ICAgICAgICAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBzZWxmLnJlcHJfdHJhY2ViYWNrKGV4
Y2luZm8pCi0gICAgICAgICAgICAgICAgICAgIHJlcHJjcmFzaCA9IGV4Y2luZm8uX2dldHJlcHJj
cmFzaCgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBmYWxs
YmFjayB0byBuYXRpdmUgcmVwciBpZiB0aGUgZXhjZXB0aW9uIGRvZXNuJ3QgaGF2ZSBhIHRyYWNl
YmFjazoKLSAgICAgICAgICAgICAgICAgICAgIyBFeGNlcHRpb25JbmZvIG9iamVjdHMgcmVxdWly
ZSBhIGZ1bGwgdHJhY2ViYWNrIHRvIHdvcmsKLSAgICAgICAgICAgICAgICAgICAgcmVwcnRyYWNl
YmFjayA9IFJlcHJUcmFjZWJhY2tOYXRpdmUoCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmFj
ZWJhY2suZm9ybWF0X2V4Y2VwdGlvbih0eXBlKGUpLCBlLCBOb25lKQotICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICAgICAgICAgIHJlcHJjcmFzaCA9IE5vbmUKLQotICAgICAgICAg
ICAgICAgIHJlcHJfY2hhaW4gKz0gWyhyZXBydHJhY2ViYWNrLCByZXByY3Jhc2gsIGRlc2NyKV0K
LSAgICAgICAgICAgICAgICBpZiBlLl9fY2F1c2VfXyBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICAgICAgZSA9IGUuX19jYXVzZV9fCi0gICAgICAgICAgICAgICAgICAgIGV4Y2luZm8gPSBF
eGNlcHRpb25JbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUoZSksIGUsIGUuX190
cmFjZWJhY2tfXykKLSAgICAgICAgICAgICAgICAgICAgKSBpZiBlLl9fdHJhY2ViYWNrX18gZWxz
ZSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyID0gIlRoZSBhYm92ZSBleGNlcHRpb24g
d2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246IgotICAgICAg
ICAgICAgICAgIGVsaWYgKGUuX19jb250ZXh0X18gaXMgbm90IE5vbmUgYW5kIG5vdCBlLl9fc3Vw
cHJlc3NfY29udGV4dF9fKToKLSAgICAgICAgICAgICAgICAgICAgZSA9IGUuX19jb250ZXh0X18K
LSAgICAgICAgICAgICAgICAgICAgZXhjaW5mbyA9IEV4Y2VwdGlvbkluZm8oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAodHlwZShlKSwgZSwgZS5fX3RyYWNlYmFja19fKQotICAgICAgICAgICAg
ICAgICAgICApIGlmIGUuX190cmFjZWJhY2tfXyBlbHNlIE5vbmUKLSAgICAgICAgICAgICAgICAg
ICAgZGVzY3IgPSAiRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3Ro
ZXIgZXhjZXB0aW9uIG9jY3VycmVkOiIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICBlID0gTm9uZQotICAgICAgICAgICAgcmVwcl9jaGFpbi5yZXZlcnNlKCkKLSAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb25DaGFpblJlcHIocmVwcl9jaGFpbikKLQotCi1jbGFz
cyBUZXJtaW5hbFJlcHIob2JqZWN0KToKKyAgICBkZWYgcmVwcl9leGNpbmZvKAorICAgICAgICBz
ZWxmLCBleGNpbmZvOiBFeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dCisgICAgKSAtPiAiRXhj
ZXB0aW9uQ2hhaW5SZXByIjoKKyAgICAgICAgcmVwcl9jaGFpbiA9ICgKKyAgICAgICAgICAgIFtd
CisgICAgICAgICkgICMgdHlwZTogTGlzdFtUdXBsZVtSZXByVHJhY2ViYWNrLCBPcHRpb25hbFtS
ZXByRmlsZUxvY2F0aW9uXSwgT3B0aW9uYWxbc3RyXV1dCisgICAgICAgIGUgPSBleGNpbmZvLnZh
bHVlICAjIHR5cGU6IE9wdGlvbmFsW0Jhc2VFeGNlcHRpb25dCisgICAgICAgIGV4Y2luZm9fID0g
ZXhjaW5mbyAgIyB0eXBlOiBPcHRpb25hbFtFeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dXQor
ICAgICAgICBkZXNjciA9IE5vbmUKKyAgICAgICAgc2VlbiA9IHNldCgpICAjIHR5cGU6IFNldFtp
bnRdCisgICAgICAgIHdoaWxlIGUgaXMgbm90IE5vbmUgYW5kIGlkKGUpIG5vdCBpbiBzZWVuOgor
ICAgICAgICAgICAgc2Vlbi5hZGQoaWQoZSkpCisgICAgICAgICAgICBpZiBleGNpbmZvXzoKKyAg
ICAgICAgICAgICAgICByZXBydHJhY2ViYWNrID0gc2VsZi5yZXByX3RyYWNlYmFjayhleGNpbmZv
XykKKyAgICAgICAgICAgICAgICByZXByY3Jhc2ggPSAoCisgICAgICAgICAgICAgICAgICAgIGV4
Y2luZm9fLl9nZXRyZXByY3Jhc2goKSBpZiBzZWxmLnN0eWxlICE9ICJ2YWx1ZSIgZWxzZSBOb25l
CisgICAgICAgICAgICAgICAgKSAgIyB0eXBlOiBPcHRpb25hbFtSZXByRmlsZUxvY2F0aW9uXQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIG5hdGl2ZSBy
ZXByIGlmIHRoZSBleGNlcHRpb24gZG9lc24ndCBoYXZlIGEgdHJhY2ViYWNrOgorICAgICAgICAg
ICAgICAgICMgRXhjZXB0aW9uSW5mbyBvYmplY3RzIHJlcXVpcmUgYSBmdWxsIHRyYWNlYmFjayB0
byB3b3JrLgorICAgICAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBSZXByVHJhY2ViYWNrTmF0
aXZlKAorICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbih0eXBl
KGUpLCBlLCBOb25lKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByZXByY3Jh
c2ggPSBOb25lCisKKyAgICAgICAgICAgIHJlcHJfY2hhaW4gKz0gWyhyZXBydHJhY2ViYWNrLCBy
ZXByY3Jhc2gsIGRlc2NyKV0KKyAgICAgICAgICAgIGlmIGUuX19jYXVzZV9fIGlzIG5vdCBOb25l
IGFuZCBzZWxmLmNoYWluOgorICAgICAgICAgICAgICAgIGUgPSBlLl9fY2F1c2VfXworICAgICAg
ICAgICAgICAgIGV4Y2luZm9fID0gKAorICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25JbmZv
KCh0eXBlKGUpLCBlLCBlLl9fdHJhY2ViYWNrX18pKQorICAgICAgICAgICAgICAgICAgICBpZiBl
Ll9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgIGRlc2NyID0gIlRoZSBhYm92ZSBleGNlcHRpb24gd2Fz
IHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246IgorICAgICAgICAg
ICAgZWxpZiAoCisgICAgICAgICAgICAgICAgZS5fX2NvbnRleHRfXyBpcyBub3QgTm9uZSBhbmQg
bm90IGUuX19zdXBwcmVzc19jb250ZXh0X18gYW5kIHNlbGYuY2hhaW4KKyAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgZSA9IGUuX19jb250ZXh0X18KKyAgICAgICAgICAgICAgICBleGNp
bmZvXyA9ICgKKyAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uSW5mbygodHlwZShlKSwgZSwg
ZS5fX3RyYWNlYmFja19fKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgZS5fX3RyYWNlYmFja19f
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBkZXNjciA9ICJEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlv
biwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6IgorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBlID0gTm9uZQorICAgICAgICByZXByX2NoYWluLnJldmVyc2UoKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uQ2hhaW5SZXByKHJlcHJfY2hhaW4pCiAKLSAgICBkZWYgX19zdHJf
XyhzZWxmKToKLSAgICAgICAgcyA9IHNlbGYuX191bmljb2RlX18oKQotICAgICAgICBpZiBfUFky
OgotICAgICAgICAgICAgcyA9IHMuZW5jb2RlKCJ1dGYtOCIpCi0gICAgICAgIHJldHVybiBzCiAK
LSAgICBkZWYgX191bmljb2RlX18oc2VsZik6CitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBG
YWxzZX0pICAjIHR5cGU6IGlnbm9yZQorY2xhc3MgVGVybWluYWxSZXByOgorICAgIGRlZiBfX3N0
cl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICAgIyBGWUkgdGhpcyBpcyBjYWxsZWQgZnJvbSBweXRl
c3QteGRpc3QncyBzZXJpYWxpemF0aW9uIG9mIGV4Y2VwdGlvbgogICAgICAgICAjIGluZm9ybWF0
aW9uLgotICAgICAgICBpbyA9IHB5LmlvLlRleHRJTygpCi0gICAgICAgIHR3ID0gcHkuaW8uVGVy
bWluYWxXcml0ZXIoZmlsZT1pbykKKyAgICAgICAgaW8gPSBTdHJpbmdJTygpCisgICAgICAgIHR3
ID0gVGVybWluYWxXcml0ZXIoZmlsZT1pbykKICAgICAgICAgc2VsZi50b3Rlcm1pbmFsKHR3KQog
ICAgICAgICByZXR1cm4gaW8uZ2V0dmFsdWUoKS5zdHJpcCgpCiAKLSAgICBkZWYgX19yZXByX18o
c2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzIGluc3RhbmNlIGF0ICUweD4iICUgKHNlbGYuX19j
bGFzc19fLCBpZChzZWxmKSkKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAg
ICByZXR1cm4gIjx7fSBpbnN0YW5jZSBhdCB7OjB4fT4iLmZvcm1hdChzZWxmLl9fY2xhc3NfXywg
aWQoc2VsZikpCisKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dzogVGVybWluYWxXcml0ZXIp
IC0+IE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCiAKKyMgVGhp
cyBjbGFzcyBpcyBhYnN0cmFjdCAtLSBvbmx5IHN1YmNsYXNzZXMgYXJlIGluc3RhbnRpYXRlZC4K
K0BhdHRyLnMoKip7QVRUUlNfRVFfRklFTEQ6IEZhbHNlfSkgICMgdHlwZTogaWdub3JlCiBjbGFz
cyBFeGNlcHRpb25SZXByKFRlcm1pbmFsUmVwcik6CisgICAgIyBQcm92aWRlZCBieSBzdWJjbGFz
c2VzLgorICAgIHJlcHJjcmFzaCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbUmVwckZpbGVMb2Nh
dGlvbl0KKyAgICByZXBydHJhY2ViYWNrID0gTm9uZSAgIyB0eXBlOiBSZXByVHJhY2ViYWNrCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc2VjdGlvbnMgPSBbXQorICAg
IGRlZiBfX2F0dHJzX3Bvc3RfaW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuc2Vj
dGlvbnMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgc3RyLCBzdHJdXQogCi0gICAgZGVm
IGFkZHNlY3Rpb24oc2VsZiwgbmFtZSwgY29udGVudCwgc2VwPSItIik6CisgICAgZGVmIGFkZHNl
Y3Rpb24oc2VsZiwgbmFtZTogc3RyLCBjb250ZW50OiBzdHIsIHNlcDogc3RyID0gIi0iKSAtPiBO
b25lOgogICAgICAgICBzZWxmLnNlY3Rpb25zLmFwcGVuZCgobmFtZSwgY29udGVudCwgc2VwKSkK
IAotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxm
LCB0dzogVGVybWluYWxXcml0ZXIpIC0+IE5vbmU6CiAgICAgICAgIGZvciBuYW1lLCBjb250ZW50
LCBzZXAgaW4gc2VsZi5zZWN0aW9uczoKICAgICAgICAgICAgIHR3LnNlcChzZXAsIG5hbWUpCiAg
ICAgICAgICAgICB0dy5saW5lKGNvbnRlbnQpCiAKIAorQGF0dHIucygqKntBVFRSU19FUV9GSUVM
RDogRmFsc2V9KSAgIyB0eXBlOiBpZ25vcmUKIGNsYXNzIEV4Y2VwdGlvbkNoYWluUmVwcihFeGNl
cHRpb25SZXByKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGFpbik6Ci0gICAgICAgIHN1
cGVyKEV4Y2VwdGlvbkNoYWluUmVwciwgc2VsZikuX19pbml0X18oKQotICAgICAgICBzZWxmLmNo
YWluID0gY2hhaW4KKyAgICBjaGFpbiA9IGF0dHIuaWIoCisgICAgICAgIHR5cGU9U2VxdWVuY2Vb
CisgICAgICAgICAgICBUdXBsZVsiUmVwclRyYWNlYmFjayIsIE9wdGlvbmFsWyJSZXByRmlsZUxv
Y2F0aW9uIl0sIE9wdGlvbmFsW3N0cl1dCisgICAgICAgIF0KKyAgICApCisKKyAgICBkZWYgX19h
dHRyc19wb3N0X2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9fYXR0cnNf
cG9zdF9pbml0X18oKQogICAgICAgICAjIHJlcHJjcmFzaCBhbmQgcmVwcnRyYWNlYmFjayBvZiB0
aGUgb3V0ZXJtb3N0ICh0aGUgbmV3ZXN0KSBleGNlcHRpb24KLSAgICAgICAgIyBpbiB0aGUgY2hh
aW4KLSAgICAgICAgc2VsZi5yZXBydHJhY2ViYWNrID0gY2hhaW5bLTFdWzBdCi0gICAgICAgIHNl
bGYucmVwcmNyYXNoID0gY2hhaW5bLTFdWzFdCisgICAgICAgICMgaW4gdGhlIGNoYWluLgorICAg
ICAgICBzZWxmLnJlcHJ0cmFjZWJhY2sgPSBzZWxmLmNoYWluWy0xXVswXQorICAgICAgICBzZWxm
LnJlcHJjcmFzaCA9IHNlbGYuY2hhaW5bLTFdWzFdCiAKLSAgICBkZWYgdG90ZXJtaW5hbChzZWxm
LCB0dyk6CisgICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAtPiBO
b25lOgogICAgICAgICBmb3IgZWxlbWVudCBpbiBzZWxmLmNoYWluOgogICAgICAgICAgICAgZWxl
bWVudFswXS50b3Rlcm1pbmFsKHR3KQogICAgICAgICAgICAgaWYgZWxlbWVudFsyXSBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgICAgICB0dy5saW5lKCIiKQogICAgICAgICAgICAgICAgIHR3Lmxp
bmUoZWxlbWVudFsyXSwgeWVsbG93PVRydWUpCi0gICAgICAgIHN1cGVyKEV4Y2VwdGlvbkNoYWlu
UmVwciwgc2VsZikudG90ZXJtaW5hbCh0dykKKyAgICAgICAgc3VwZXIoKS50b3Rlcm1pbmFsKHR3
KQogCiAKK0BhdHRyLnMoKip7QVRUUlNfRVFfRklFTEQ6IEZhbHNlfSkgICMgdHlwZTogaWdub3Jl
CiBjbGFzcyBSZXByRXhjZXB0aW9uSW5mbyhFeGNlcHRpb25SZXByKToKKyAgICByZXBydHJhY2Vi
YWNrID0gYXR0ci5pYih0eXBlPSJSZXByVHJhY2ViYWNrIikKKyAgICByZXByY3Jhc2ggPSBhdHRy
LmliKHR5cGU9IlJlcHJGaWxlTG9jYXRpb24iKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
cHJ0cmFjZWJhY2ssIHJlcHJjcmFzaCk6Ci0gICAgICAgIHN1cGVyKFJlcHJFeGNlcHRpb25JbmZv
LCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIHNlbGYucmVwcnRyYWNlYmFjayA9IHJlcHJ0cmFj
ZWJhY2sKLSAgICAgICAgc2VsZi5yZXByY3Jhc2ggPSByZXByY3Jhc2gKLQotICAgIGRlZiB0b3Rl
cm1pbmFsKHNlbGYsIHR3KToKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dzogVGVybWluYWxX
cml0ZXIpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYucmVwcnRyYWNlYmFjay50b3Rlcm1pbmFsKHR3
KQotICAgICAgICBzdXBlcihSZXByRXhjZXB0aW9uSW5mbywgc2VsZikudG90ZXJtaW5hbCh0dykK
KyAgICAgICAgc3VwZXIoKS50b3Rlcm1pbmFsKHR3KQogCiAKK0BhdHRyLnMoKip7QVRUUlNfRVFf
RklFTEQ6IEZhbHNlfSkgICMgdHlwZTogaWdub3JlCiBjbGFzcyBSZXByVHJhY2ViYWNrKFRlcm1p
bmFsUmVwcik6Ci0gICAgZW50cnlzZXAgPSAiXyAiCisgICAgcmVwcmVudHJpZXMgPSBhdHRyLmli
KHR5cGU9U2VxdWVuY2VbVW5pb25bIlJlcHJFbnRyeSIsICJSZXByRW50cnlOYXRpdmUiXV0pCisg
ICAgZXh0cmFsaW5lID0gYXR0ci5pYih0eXBlPU9wdGlvbmFsW3N0cl0pCisgICAgc3R5bGUgPSBh
dHRyLmliKHR5cGU9Il9UcmFjZWJhY2tTdHlsZSIpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cmVwcmVudHJpZXMsIGV4dHJhbGluZSwgc3R5bGUpOgotICAgICAgICBzZWxmLnJlcHJlbnRyaWVz
ID0gcmVwcmVudHJpZXMKLSAgICAgICAgc2VsZi5leHRyYWxpbmUgPSBleHRyYWxpbmUKLSAgICAg
ICAgc2VsZi5zdHlsZSA9IHN0eWxlCisgICAgZW50cnlzZXAgPSAiXyAiCiAKLSAgICBkZWYgdG90
ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgICMgdGhlIGVudHJpZXMgbWlnaHQgaGF2ZSBkaWZm
ZXJlbnQgc3R5bGVzCisgICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVy
KSAtPiBOb25lOgorICAgICAgICAjIFRoZSBlbnRyaWVzIG1pZ2h0IGhhdmUgZGlmZmVyZW50IHN0
eWxlcy4KICAgICAgICAgZm9yIGksIGVudHJ5IGluIGVudW1lcmF0ZShzZWxmLnJlcHJlbnRyaWVz
KToKICAgICAgICAgICAgIGlmIGVudHJ5LnN0eWxlID09ICJsb25nIjoKICAgICAgICAgICAgICAg
ICB0dy5saW5lKCIiKQpAQCAtODMxLDQ4ICsxMDE2LDg4IEBAIGNsYXNzIFJlcHJUcmFjZWJhY2so
VGVybWluYWxSZXByKToKIAogCiBjbGFzcyBSZXByVHJhY2ViYWNrTmF0aXZlKFJlcHJUcmFjZWJh
Y2spOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRibGluZXMpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0YmxpbmVzOiBTZXF1ZW5jZVtzdHJdKSAtPiBOb25lOgogICAgICAgICBzZWxmLnN0
eWxlID0gIm5hdGl2ZSIKICAgICAgICAgc2VsZi5yZXByZW50cmllcyA9IFtSZXByRW50cnlOYXRp
dmUodGJsaW5lcyldCiAgICAgICAgIHNlbGYuZXh0cmFsaW5lID0gTm9uZQogCiAKK0BhdHRyLnMo
Kip7QVRUUlNfRVFfRklFTEQ6IEZhbHNlfSkgICMgdHlwZTogaWdub3JlCiBjbGFzcyBSZXByRW50
cnlOYXRpdmUoVGVybWluYWxSZXByKToKLSAgICBzdHlsZSA9ICJuYXRpdmUiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGJsaW5lcyk6Ci0gICAgICAgIHNlbGYubGluZXMgPSB0YmxpbmVzCisg
ICAgbGluZXMgPSBhdHRyLmliKHR5cGU9U2VxdWVuY2Vbc3RyXSkKKyAgICBzdHlsZSA9ICJuYXRp
dmUiICAjIHR5cGU6IF9UcmFjZWJhY2tTdHlsZQogCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwg
dHcpOgorICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9u
ZToKICAgICAgICAgdHcud3JpdGUoIiIuam9pbihzZWxmLmxpbmVzKSkKIAogCitAYXR0ci5zKCoq
e0FUVFJTX0VRX0ZJRUxEOiBGYWxzZX0pICAjIHR5cGU6IGlnbm9yZQogY2xhc3MgUmVwckVudHJ5
KFRlcm1pbmFsUmVwcik6Ci0gICAgbG9jYWxzc2VwID0gIl8gIgorICAgIGxpbmVzID0gYXR0ci5p
Yih0eXBlPVNlcXVlbmNlW3N0cl0pCisgICAgcmVwcmZ1bmNhcmdzID0gYXR0ci5pYih0eXBlPU9w
dGlvbmFsWyJSZXByRnVuY0FyZ3MiXSkKKyAgICByZXBybG9jYWxzID0gYXR0ci5pYih0eXBlPU9w
dGlvbmFsWyJSZXByTG9jYWxzIl0pCisgICAgcmVwcmZpbGVsb2MgPSBhdHRyLmliKHR5cGU9T3B0
aW9uYWxbIlJlcHJGaWxlTG9jYXRpb24iXSkKKyAgICBzdHlsZSA9IGF0dHIuaWIodHlwZT0iX1Ry
YWNlYmFja1N0eWxlIikKKworICAgIGRlZiBfd3JpdGVfZW50cnlfbGluZXMoc2VsZiwgdHc6IFRl
cm1pbmFsV3JpdGVyKSAtPiBOb25lOgorICAgICAgICAiIiJXcml0ZSB0aGUgc291cmNlIGNvZGUg
cG9ydGlvbnMgb2YgYSBsaXN0IG9mIHRyYWNlYmFjayBlbnRyaWVzIHdpdGggc3ludGF4IGhpZ2hs
aWdodGluZy4KKworICAgICAgICBVc3VhbGx5IGVudHJpZXMgYXJlIGxpbmVzIGxpa2UgdGhlc2U6
CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZXMsIHJlcHJmdW5jYXJncywgcmVwcmxvY2Fs
cywgZmlsZWxvY3JlcHIsIHN0eWxlKToKLSAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCi0gICAg
ICAgIHNlbGYucmVwcmZ1bmNhcmdzID0gcmVwcmZ1bmNhcmdzCi0gICAgICAgIHNlbGYucmVwcmxv
Y2FscyA9IHJlcHJsb2NhbHMKLSAgICAgICAgc2VsZi5yZXByZmlsZWxvYyA9IGZpbGVsb2NyZXBy
Ci0gICAgICAgIHNlbGYuc3R5bGUgPSBzdHlsZQorICAgICAgICAgICAgIiAgICAgeCA9IDEiCisg
ICAgICAgICAgICAiPiAgICBhc3NlcnQgeCA9PSAyIgorICAgICAgICAgICAgIkUgICAgYXNzZXJ0
IDEgPT0gMiIKIAotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKKyAgICAgICAgVGhpcyBm
dW5jdGlvbiB0YWtlcyBjYXJlIG9mIHJlbmRlcmluZyB0aGUgInNvdXJjZSIgcG9ydGlvbnMgb2Yg
aXQgKHRoZSBsaW5lcyB3aXRob3V0CisgICAgICAgIHRoZSAiRSIgcHJlZml4KSB1c2luZyBzeW50
YXggaGlnaGxpZ2h0aW5nLCB0YWtpbmcgY2FyZSB0byBub3QgaGlnaGxpZ2h0aW5nIHRoZSAiPiIK
KyAgICAgICAgY2hhcmFjdGVyLCBhcyBkb2luZyBzbyBtaWdodCBicmVhayBsaW5lIGNvbnRpbnVh
dGlvbnMuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIG5vdCBzZWxmLmxpbmVzOgorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBzZXBhcmF0ZSBpbmRlbnRzIGFuZCBzb3VyY2UgbGlu
ZXMgdGhhdCBhcmUgbm90IGZhaWx1cmVzOiB3ZSB3YW50IHRvCisgICAgICAgICMgaGlnaGxpZ2h0
IHRoZSBjb2RlIGJ1dCBub3QgdGhlIGluZGVudGF0aW9uLCB3aGljaCBtYXkgY29udGFpbiBtYXJr
ZXJzCisgICAgICAgICMgc3VjaCBhcyAiPiAgIGFzc2VydCAwIgorICAgICAgICBmYWlsX21hcmtl
ciA9ICJ7fSAgICIuZm9ybWF0KEZvcm1hdHRlZEV4Y2luZm8uZmFpbF9tYXJrZXIpCisgICAgICAg
IGluZGVudF9zaXplID0gbGVuKGZhaWxfbWFya2VyKQorICAgICAgICBpbmRlbnRzID0gW10gICMg
dHlwZTogTGlzdFtzdHJdCisgICAgICAgIHNvdXJjZV9saW5lcyA9IFtdICAjIHR5cGU6IExpc3Rb
c3RyXQorICAgICAgICBmYWlsdXJlX2xpbmVzID0gW10gICMgdHlwZTogTGlzdFtzdHJdCisgICAg
ICAgIGZvciBpbmRleCwgbGluZSBpbiBlbnVtZXJhdGUoc2VsZi5saW5lcyk6CisgICAgICAgICAg
ICBpc19mYWlsdXJlX2xpbmUgPSBsaW5lLnN0YXJ0c3dpdGgoZmFpbF9tYXJrZXIpCisgICAgICAg
ICAgICBpZiBpc19mYWlsdXJlX2xpbmU6CisgICAgICAgICAgICAgICAgIyBmcm9tIHRoaXMgcG9p
bnQgb24gYWxsIGxpbmVzIGFyZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGZhaWx1cmUKKyAgICAg
ICAgICAgICAgICBmYWlsdXJlX2xpbmVzLmV4dGVuZChzZWxmLmxpbmVzW2luZGV4Ol0pCisgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYg
c2VsZi5zdHlsZSA9PSAidmFsdWUiOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbGluZXMu
YXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
aW5kZW50cy5hcHBlbmQobGluZVs6aW5kZW50X3NpemVdKQorICAgICAgICAgICAgICAgICAgICBz
b3VyY2VfbGluZXMuYXBwZW5kKGxpbmVbaW5kZW50X3NpemU6XSkKKworICAgICAgICB0dy5fd3Jp
dGVfc291cmNlKHNvdXJjZV9saW5lcywgaW5kZW50cykKKworICAgICAgICAjIGZhaWx1cmUgbGlu
ZXMgYXJlIGFsd2F5cyBjb21wbGV0ZWx5IHJlZCBhbmQgYm9sZAorICAgICAgICBmb3IgbGluZSBp
biBmYWlsdXJlX2xpbmVzOgorICAgICAgICAgICAgdHcubGluZShsaW5lLCBib2xkPVRydWUsIHJl
ZD1UcnVlKQorCisgICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAt
PiBOb25lOgogICAgICAgICBpZiBzZWxmLnN0eWxlID09ICJzaG9ydCI6CisgICAgICAgICAgICBh
c3NlcnQgc2VsZi5yZXByZmlsZWxvYyBpcyBub3QgTm9uZQogICAgICAgICAgICAgc2VsZi5yZXBy
ZmlsZWxvYy50b3Rlcm1pbmFsKHR3KQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5l
czoKLSAgICAgICAgICAgICAgICByZWQgPSBsaW5lLnN0YXJ0c3dpdGgoIkUgICAiKQotICAgICAg
ICAgICAgICAgIHR3LmxpbmUobGluZSwgYm9sZD1UcnVlLCByZWQ9cmVkKQotICAgICAgICAgICAg
IyB0dy5saW5lKCIiKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfZW50cnlfbGluZXModHcpCisg
ICAgICAgICAgICBpZiBzZWxmLnJlcHJsb2NhbHM6CisgICAgICAgICAgICAgICAgc2VsZi5yZXBy
bG9jYWxzLnRvdGVybWluYWwodHcsIGluZGVudD0iICIgKiA4KQogICAgICAgICAgICAgcmV0dXJu
CisKICAgICAgICAgaWYgc2VsZi5yZXByZnVuY2FyZ3M6CiAgICAgICAgICAgICBzZWxmLnJlcHJm
dW5jYXJncy50b3Rlcm1pbmFsKHR3KQotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVzOgot
ICAgICAgICAgICAgcmVkID0gbGluZS5zdGFydHN3aXRoKCJFICAgIikKLSAgICAgICAgICAgIHR3
LmxpbmUobGluZSwgYm9sZD1UcnVlLCByZWQ9cmVkKQorCisgICAgICAgIHNlbGYuX3dyaXRlX2Vu
dHJ5X2xpbmVzKHR3KQorCiAgICAgICAgIGlmIHNlbGYucmVwcmxvY2FsczoKLSAgICAgICAgICAg
ICMgdHcuc2VwKHNlbGYubG9jYWxzc2VwLCAiTG9jYWxzIikKICAgICAgICAgICAgIHR3LmxpbmUo
IiIpCiAgICAgICAgICAgICBzZWxmLnJlcHJsb2NhbHMudG90ZXJtaW5hbCh0dykKICAgICAgICAg
aWYgc2VsZi5yZXByZmlsZWxvYzoKQEAgLTg4MCw0OCArMTEwNSw0NyBAQCBjbGFzcyBSZXByRW50
cnkoVGVybWluYWxSZXByKToKICAgICAgICAgICAgICAgICB0dy5saW5lKCIiKQogICAgICAgICAg
ICAgc2VsZi5yZXByZmlsZWxvYy50b3Rlcm1pbmFsKHR3KQogCi0gICAgZGVmIF9fc3RyX18oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAiJXNcbiVzXG4lcyIgJSAoIlxuIi5qb2luKHNlbGYubGluZXMp
LCBzZWxmLnJlcHJsb2NhbHMsIHNlbGYucmVwcmZpbGVsb2MpCisgICAgZGVmIF9fc3RyX18oc2Vs
ZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gInt9XG57fVxue30iLmZvcm1hdCgKKyAgICAgICAg
ICAgICJcbiIuam9pbihzZWxmLmxpbmVzKSwgc2VsZi5yZXBybG9jYWxzLCBzZWxmLnJlcHJmaWxl
bG9jCisgICAgICAgICkKIAogCitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBGYWxzZX0pICAj
IHR5cGU6IGlnbm9yZQogY2xhc3MgUmVwckZpbGVMb2NhdGlvbihUZXJtaW5hbFJlcHIpOgorICAg
IHBhdGggPSBhdHRyLmliKHR5cGU9c3RyLCBjb252ZXJ0ZXI9c3RyKQorICAgIGxpbmVubyA9IGF0
dHIuaWIodHlwZT1pbnQpCisgICAgbWVzc2FnZSA9IGF0dHIuaWIodHlwZT1zdHIpCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbGluZW5vLCBtZXNzYWdlKToKLSAgICAgICAgc2VsZi5w
YXRoID0gc3RyKHBhdGgpCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0gICAgICAgIHNl
bGYubWVzc2FnZSA9IG1lc3NhZ2UKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAg
ICAgICAgIyBmaWxlbmFtZSBhbmQgbGluZW5vIG91dHB1dCBmb3IgZWFjaCBlbnRyeSwKLSAgICAg
ICAgIyB1c2luZyBhbiBvdXRwdXQgZm9ybWF0IHRoYXQgbW9zdCBlZGl0b3JzIHVudGVyc3RhbmQK
KyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dzogVGVybWluYWxXcml0ZXIpIC0+IE5vbmU6Cisg
ICAgICAgICMgRmlsZW5hbWUgYW5kIGxpbmVubyBvdXRwdXQgZm9yIGVhY2ggZW50cnksIHVzaW5n
IGFuIG91dHB1dCBmb3JtYXQKKyAgICAgICAgIyB0aGF0IG1vc3QgZWRpdG9ycyB1bmRlcnN0YW5k
LgogICAgICAgICBtc2cgPSBzZWxmLm1lc3NhZ2UKICAgICAgICAgaSA9IG1zZy5maW5kKCJcbiIp
CiAgICAgICAgIGlmIGkgIT0gLTE6CiAgICAgICAgICAgICBtc2cgPSBtc2dbOmldCiAgICAgICAg
IHR3LndyaXRlKHNlbGYucGF0aCwgYm9sZD1UcnVlLCByZWQ9VHJ1ZSkKLSAgICAgICAgdHcubGlu
ZSgiOiVzOiAlcyIgJSAoc2VsZi5saW5lbm8sIG1zZykpCisgICAgICAgIHR3LmxpbmUoIjp7fTog
e30iLmZvcm1hdChzZWxmLmxpbmVubywgbXNnKSkKIAogCitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJ
RUxEOiBGYWxzZX0pICAjIHR5cGU6IGlnbm9yZQogY2xhc3MgUmVwckxvY2FscyhUZXJtaW5hbFJl
cHIpOgorICAgIGxpbmVzID0gYXR0ci5pYih0eXBlPVNlcXVlbmNlW3N0cl0pCiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbGluZXMpOgotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKLQotICAg
IGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dzog
VGVybWluYWxXcml0ZXIsIGluZGVudD0iIikgLT4gTm9uZToKICAgICAgICAgZm9yIGxpbmUgaW4g
c2VsZi5saW5lczoKLSAgICAgICAgICAgIHR3LmxpbmUobGluZSkKKyAgICAgICAgICAgIHR3Lmxp
bmUoaW5kZW50ICsgbGluZSkKIAogCitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBGYWxzZX0p
ICAjIHR5cGU6IGlnbm9yZQogY2xhc3MgUmVwckZ1bmNBcmdzKFRlcm1pbmFsUmVwcik6CisgICAg
YXJncyA9IGF0dHIuaWIodHlwZT1TZXF1ZW5jZVtUdXBsZVtzdHIsIG9iamVjdF1dKQogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3MpOgotICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0KLSAg
ICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6CisgICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHc6
IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgogICAgICAgICBpZiBzZWxmLmFyZ3M6CiAgICAgICAg
ICAgICBsaW5lc29mYXIgPSAiIgogICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYu
YXJnczoKLSAgICAgICAgICAgICAgICBucyA9ICIlcyA9ICVzIiAlIChzYWZlX3N0cihuYW1lKSwg
c2FmZV9zdHIodmFsdWUpKQorICAgICAgICAgICAgICAgIG5zID0gInt9ID0ge30iLmZvcm1hdChu
YW1lLCB2YWx1ZSkKICAgICAgICAgICAgICAgICBpZiBsZW4obnMpICsgbGVuKGxpbmVzb2Zhcikg
KyAyID4gdHcuZnVsbHdpZHRoOgogICAgICAgICAgICAgICAgICAgICBpZiBsaW5lc29mYXI6CiAg
ICAgICAgICAgICAgICAgICAgICAgICB0dy5saW5lKGxpbmVzb2ZhcikKQEAgLTkzNiwzNSArMTE2
MCw3OSBAQCBjbGFzcyBSZXByRnVuY0FyZ3MoVGVybWluYWxSZXByKToKICAgICAgICAgICAgIHR3
LmxpbmUoIiIpCiAKIAotZGVmIGdldHJhd2NvZGUob2JqLCB0cnljYWxsPVRydWUpOgotICAgICIi
IiByZXR1cm4gY29kZSBvYmplY3QgZm9yIGdpdmVuIGZ1bmN0aW9uLiAiIiIKK2RlZiBnZXRmc2xp
bmVubyhvYmo6IG9iamVjdCkgLT4gVHVwbGVbVW5pb25bc3RyLCBweS5wYXRoLmxvY2FsXSwgaW50
XToKKyAgICAiIiJSZXR1cm4gc291cmNlIGxvY2F0aW9uIChwYXRoLCBsaW5lbm8pIGZvciB0aGUg
Z2l2ZW4gb2JqZWN0LgorCisgICAgSWYgdGhlIHNvdXJjZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBy
ZXR1cm4gKCIiLCAtMSkuCisKKyAgICBUaGUgbGluZSBudW1iZXIgaXMgMC1iYXNlZC4KKyAgICAi
IiIKKyAgICAjIHh4eCBsZXQgZGVjb3JhdG9ycyBldGMgc3BlY2lmeSBhIHNhbmUgb3JkZXJpbmcK
KyAgICAjIE5PVEU6IHRoaXMgdXNlZCB0byBiZSBkb25lIGluIF9weXRlc3QuY29tcGF0LmdldGZz
bGluZW5vLCBpbml0aWFsbHkgYWRkZWQKKyAgICAjICAgICAgIGluIDZlYzEzYTJiOS4gIEl0ICgi
cGxhY2VfYXMiKSBhcHBlYXJzIHRvIGJlIHNvbWV0aGluZyB2ZXJ5IGN1c3RvbS4KKyAgICBvYmog
PSBnZXRfcmVhbF9mdW5jKG9iaikKKyAgICBpZiBoYXNhdHRyKG9iaiwgInBsYWNlX2FzIik6Cisg
ICAgICAgIG9iaiA9IG9iai5wbGFjZV9hcyAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQor
CiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gb2JqLl9fY29kZV9fCi0gICAgZXhjZXB0IEF0dHJp
YnV0ZUVycm9yOgotICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgImltX2Z1bmMiLCBvYmopCi0g
ICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAiZnVuY19jb2RlIiwgb2JqKQotICAgICAgICBvYmog
PSBnZXRhdHRyKG9iaiwgImZfY29kZSIsIG9iaikKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmos
ICJfX2NvZGVfXyIsIG9iaikKLSAgICAgICAgaWYgdHJ5Y2FsbCBhbmQgbm90IGhhc2F0dHIob2Jq
LCAiY29fZmlyc3RsaW5lbm8iKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIob2JqLCAiX19jYWxs
X18iKSBhbmQgbm90IGluc3BlY3QuaXNjbGFzcyhvYmopOgotICAgICAgICAgICAgICAgIHggPSBn
ZXRyYXdjb2RlKG9iai5fX2NhbGxfXywgdHJ5Y2FsbD1GYWxzZSkKLSAgICAgICAgICAgICAgICBp
ZiBoYXNhdHRyKHgsICJjb19maXJzdGxpbmVubyIpOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4geAotICAgICAgICByZXR1cm4gb2JqCisgICAgICAgIGNvZGUgPSBDb2RlKG9iaikKKyAgICBl
eGNlcHQgVHlwZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmbiA9IGluc3BlY3Qu
Z2V0c291cmNlZmlsZShvYmopIG9yIGluc3BlY3QuZ2V0ZmlsZShvYmopICAjIHR5cGU6IGlnbm9y
ZVthcmctdHlwZV0KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biAiIiwgLTEKIAorICAgICAgICBmc3BhdGggPSBmbiBhbmQgcHkucGF0aC5sb2NhbChmbikgb3Ig
IiIKKyAgICAgICAgbGluZW5vID0gLTEKKyAgICAgICAgaWYgZnNwYXRoOgorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIF8sIGxpbmVubyA9IGZpbmRzb3VyY2Uob2JqKQorICAgICAg
ICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1
cm4gZnNwYXRoLCBsaW5lbm8KIAotaWYgUFkzNTogICMgUmVjdXJzaW9uRXJyb3IgaW50cm9kdWNl
ZCBpbiAzLjUKKyAgICByZXR1cm4gY29kZS5wYXRoLCBjb2RlLmZpcnN0bGluZW5vCiAKLSAgICBk
ZWYgaXNfcmVjdXJzaW9uX2Vycm9yKGV4Y2luZm8pOgotICAgICAgICByZXR1cm4gZXhjaW5mby5l
cnJpc2luc3RhbmNlKFJlY3Vyc2lvbkVycm9yKSAgIyBub3FhCiAKKyMgUmVsYXRpdmUgcGF0aHMg
dGhhdCB3ZSB1c2UgdG8gZmlsdGVyIHRyYWNlYmFjayBlbnRyaWVzIGZyb20gYXBwZWFyaW5nIHRv
IHRoZSB1c2VyOworIyBzZWUgZmlsdGVyX3RyYWNlYmFjay4KKyMgbm90ZTogaWYgd2UgbmVlZCB0
byBhZGQgbW9yZSBwYXRocyB0aGFuIHdoYXQgd2UgaGF2ZSBub3cgd2Ugc2hvdWxkIHByb2JhYmx5
IHVzZSBhIGxpc3QKKyMgZm9yIGJldHRlciBtYWludGVuYW5jZS4KIAotZWxzZToKK19QTFVHR1lf
RElSID0gUGF0aChwbHVnZ3kuX19maWxlX18ucnN0cmlwKCJvYyIpKQorIyBwbHVnZ3kgaXMgZWl0
aGVyIGEgcGFja2FnZSBvciBhIHNpbmdsZSBtb2R1bGUgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9u
CitpZiBfUExVR0dZX0RJUi5uYW1lID09ICJfX2luaXRfXy5weSI6CisgICAgX1BMVUdHWV9ESVIg
PSBfUExVR0dZX0RJUi5wYXJlbnQKK19QWVRFU1RfRElSID0gUGF0aChfcHl0ZXN0Ll9fZmlsZV9f
KS5wYXJlbnQKK19QWV9ESVIgPSBQYXRoKHB5Ll9fZmlsZV9fKS5wYXJlbnQKIAotICAgIGRlZiBp
c19yZWN1cnNpb25fZXJyb3IoZXhjaW5mbyk6Ci0gICAgICAgIGlmIG5vdCBleGNpbmZvLmVycmlz
aW5zdGFuY2UoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2Vl
ZGVkIiBpbiBzdHIoZXhjaW5mby52YWx1ZSkKLSAgICAgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQorCitkZWYgZmlsdGVyX3RyYWNlYmFjayhlbnRyeTog
VHJhY2ViYWNrRW50cnkpIC0+IGJvb2w6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgYSBUcmFjZWJh
Y2tFbnRyeSBpbnN0YW5jZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdHJhY2ViYWNrcy4KKworICAg
IFdlIGhpZGUgdHJhY2ViYWNrIGVudHJpZXMgb2Y6CisKKyAgICAqIGR5bmFtaWNhbGx5IGdlbmVy
YXRlZCBjb2RlIChubyBjb2RlIHRvIHNob3cgdXAgZm9yIGl0KTsKKyAgICAqIGludGVybmFsIHRy
YWNlYmFjayBmcm9tIHB5dGVzdCBvciBpdHMgaW50ZXJuYWwgbGlicmFyaWVzLCBweSBhbmQgcGx1
Z2d5LgorICAgICIiIgorICAgICMgZW50cnkucGF0aCBtaWdodCBzb21ldGltZXMgcmV0dXJuIGEg
c3RyIG9iamVjdCB3aGVuIHRoZSBlbnRyeQorICAgICMgcG9pbnRzIHRvIGR5bmFtaWNhbGx5IGdl
bmVyYXRlZCBjb2RlLgorICAgICMgU2VlIGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXRlc3QtZGV2
L3B5L2lzc3Vlcy83MS4KKyAgICByYXdfZmlsZW5hbWUgPSBlbnRyeS5mcmFtZS5jb2RlLnJhdy5j
b19maWxlbmFtZQorICAgIGlzX2dlbmVyYXRlZCA9ICI8IiBpbiByYXdfZmlsZW5hbWUgYW5kICI+
IiBpbiByYXdfZmlsZW5hbWUKKyAgICBpZiBpc19nZW5lcmF0ZWQ6CisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgIyBlbnRyeS5wYXRoIG1pZ2h0IHBvaW50IHRvIGEgbm9uLWV4aXN0aW5nIGZp
bGUsIGluIHdoaWNoIGNhc2UgaXQgd2lsbAorICAgICMgYWxzbyByZXR1cm4gYSBzdHIgb2JqZWN0
LiBTZWUgIzExMzMuCisgICAgcCA9IFBhdGgoZW50cnkucGF0aCkKKworICAgIHBhcmVudHMgPSBw
LnBhcmVudHMKKyAgICBpZiBfUExVR0dZX0RJUiBpbiBwYXJlbnRzOgorICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICBpZiBfUFlURVNUX0RJUiBpbiBwYXJlbnRzOgorICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICBpZiBfUFlfRElSIGluIHBhcmVudHM6CisgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2Rl
L3NvdXJjZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQppbmRl
eCA2Yjk4MmE0Y2FjNDcuLjRiYTE4YWE2MzYxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvX2NvZGUvc291cmNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19j
b2RlL3NvdXJjZS5weQpAQCAtMSw3NSArMSw3MyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBnZW5lcmF0b3JzLCBwcmludF9mdW5jdGlvbgotCiBp
bXBvcnQgYXN0Ci1mcm9tIGFzdCBpbXBvcnQgUHlDRl9PTkxZX0FTVCBhcyBfQVNUX0ZMQUcKLWZy
b20gYmlzZWN0IGltcG9ydCBiaXNlY3RfcmlnaHQKLWltcG9ydCBsaW5lY2FjaGUKLWltcG9ydCBz
eXMKLWltcG9ydCBzaXgKIGltcG9ydCBpbnNwZWN0CitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0
b2tlbml6ZQotaW1wb3J0IHB5CitpbXBvcnQgd2FybmluZ3MKK2Zyb20gYmlzZWN0IGltcG9ydCBi
aXNlY3RfcmlnaHQKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1w
b3J0IEl0ZXJhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0
IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBV
bmlvbgogCi1jcHlfY29tcGlsZSA9IGNvbXBpbGUKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IG92ZXJsb2FkCiAKIAotY2xhc3MgU291cmNlKG9iamVjdCk6Ci0gICAgIiIiIGFuIGltbXV0YWJs
ZSBvYmplY3QgaG9sZGluZyBhIHNvdXJjZSBjb2RlIGZyYWdtZW50LAotICAgICAgICBwb3NzaWJs
eSBkZWluZGVudGluZyBpdC4KK2NsYXNzIFNvdXJjZToKKyAgICAiIiJBbiBpbW11dGFibGUgb2Jq
ZWN0IGhvbGRpbmcgYSBzb3VyY2UgY29kZSBmcmFnbWVudC4KKworICAgIFdoZW4gdXNpbmcgU291
cmNlKC4uLiksIHRoZSBzb3VyY2UgbGluZXMgYXJlIGRlaW5kZW50ZWQuCiAgICAgIiIiCi0gICAg
X2NvbXBpbGVjb3VudGVyID0gMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICpwYXJ0cywgKipr
d2FyZ3MpOgotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMgPSBbXQotICAgICAgICBkZSA9IGt3
YXJncy5nZXQoImRlaW5kZW50IiwgVHJ1ZSkKLSAgICAgICAgcnN0cmlwID0ga3dhcmdzLmdldCgi
cnN0cmlwIiwgVHJ1ZSkKLSAgICAgICAgZm9yIHBhcnQgaW4gcGFydHM6Ci0gICAgICAgICAgICBp
ZiBub3QgcGFydDoKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBbXQotICAgICAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKHBhcnQsIFNvdXJjZSk6Ci0gICAgICAgICAgICAgICAgcGFydGxpbmVz
ID0gcGFydC5saW5lcwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcnQsICh0dXBsZSwg
bGlzdCkpOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IFt4LnJzdHJpcCgiXG4iKSBmb3Ig
eCBpbiBwYXJ0XQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcnQsIHNpeC5zdHJpbmdf
dHlwZXMpOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IHBhcnQuc3BsaXQoIlxuIikKLSAg
ICAgICAgICAgICAgICBpZiByc3RyaXA6Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHBhcnRs
aW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRsaW5lc1stMV0uc3RyaXAoKToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFydGxpbmVzLnBvcCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBh
cnRsaW5lcyA9IGdldHNvdXJjZShwYXJ0LCBkZWluZGVudD1kZSkubGluZXMKLSAgICAgICAgICAg
IGlmIGRlOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IGRlaW5kZW50KHBhcnRsaW5lcykK
LSAgICAgICAgICAgIGxpbmVzLmV4dGVuZChwYXJ0bGluZXMpCi0KLSAgICBkZWYgX19lcV9fKHNl
bGYsIG90aGVyKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubGluZXMg
PT0gb3RoZXIubGluZXMKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Ry
KHNlbGYpID09IG90aGVyCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIF9faGFzaF9f
ID0gTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmo6IG9iamVjdCA9IE5vbmUpIC0+IE5v
bmU6CisgICAgICAgIGlmIG5vdCBvYmo6CisgICAgICAgICAgICBzZWxmLmxpbmVzID0gW10gICMg
dHlwZTogTGlzdFtzdHJdCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIFNvdXJjZSk6Cisg
ICAgICAgICAgICBzZWxmLmxpbmVzID0gb2JqLmxpbmVzCisgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShvYmosICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgc2VsZi5saW5lcyA9IGRlaW5kZW50
KHgucnN0cmlwKCJcbiIpIGZvciB4IGluIG9iaikKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9i
aiwgc3RyKToKKyAgICAgICAgICAgIHNlbGYubGluZXMgPSBkZWluZGVudChvYmouc3BsaXQoIlxu
IikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYXdjb2RlID0gZ2V0cmF3Y29kZShvYmop
CisgICAgICAgICAgICBzcmMgPSBpbnNwZWN0LmdldHNvdXJjZShyYXdjb2RlKQorICAgICAgICAg
ICAgc2VsZi5saW5lcyA9IGRlaW5kZW50KHNyYy5zcGxpdCgiXG4iKSkKIAotICAgIGRlZiBfX2dl
dGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXI6IG9iamVjdCkg
LT4gYm9vbDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFNvdXJjZSk6CisgICAg
ICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYubGluZXMg
PT0gb3RoZXIubGluZXMKKworICAgICMgSWdub3JlIHR5cGUgYmVjYXVzZSBvZiBodHRwczovL2dp
dGh1Yi5jb20vcHl0aG9uL215cHkvaXNzdWVzLzQyNjYuCisgICAgX19oYXNoX18gPSBOb25lICAj
IHR5cGU6IGlnbm9yZQorCisgICAgQG92ZXJsb2FkCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYs
IGtleTogaW50KSAtPiBzdHI6CisgICAgICAgIC4uLgorCisgICAgQG92ZXJsb2FkICAjIG5vcWE6
IEY4MTEKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBzbGljZSkgLT4gIlNvdXJjZSI6
ICAjIG5vcWE6IEY4MTEKKyAgICAgICAgLi4uCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwg
a2V5OiBVbmlvbltpbnQsIHNsaWNlXSkgLT4gVW5pb25bc3RyLCAiU291cmNlIl06ICAjIG5vcWE6
IEY4MTEKICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIGludCk6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5saW5lc1trZXldCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBrZXkuc3Rl
cCBub3QgaW4gKE5vbmUsIDEpOgogICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoImNh
bm5vdCBzbGljZSBhIFNvdXJjZSB3aXRoIGEgc3RlcCIpCiAgICAgICAgICAgICBuZXdzb3VyY2Ug
PSBTb3VyY2UoKQotICAgICAgICAgICAgbmV3c291cmNlLmxpbmVzID0gc2VsZi5saW5lc1trZXku
c3RhcnQ6a2V5LnN0b3BdCisgICAgICAgICAgICBuZXdzb3VyY2UubGluZXMgPSBzZWxmLmxpbmVz
W2tleS5zdGFydCA6IGtleS5zdG9wXQogICAgICAgICAgICAgcmV0dXJuIG5ld3NvdXJjZQogCi0g
ICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9y
W3N0cl06CisgICAgICAgIHJldHVybiBpdGVyKHNlbGYubGluZXMpCisKKyAgICBkZWYgX19sZW5f
XyhzZWxmKSAtPiBpbnQ6CiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5saW5lcykKIAotICAgIGRl
ZiBzdHJpcChzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBuZXcgc291cmNlIG9iamVjdCB3aXRo
IHRyYWlsaW5nCi0gICAgICAgICAgICBhbmQgbGVhZGluZyBibGFuayBsaW5lcyByZW1vdmVkLgot
ICAgICAgICAiIiIKKyAgICBkZWYgc3RyaXAoc2VsZikgLT4gIlNvdXJjZSI6CisgICAgICAgICIi
IlJldHVybiBuZXcgU291cmNlIG9iamVjdCB3aXRoIHRyYWlsaW5nIGFuZCBsZWFkaW5nIGJsYW5r
IGxpbmVzIHJlbW92ZWQuIiIiCiAgICAgICAgIHN0YXJ0LCBlbmQgPSAwLCBsZW4oc2VsZikKICAg
ICAgICAgd2hpbGUgc3RhcnQgPCBlbmQgYW5kIG5vdCBzZWxmLmxpbmVzW3N0YXJ0XS5zdHJpcCgp
OgogICAgICAgICAgICAgc3RhcnQgKz0gMQpAQCAtNzksMjU3ICs3Nyw4MiBAQCBjbGFzcyBTb3Vy
Y2Uob2JqZWN0KToKICAgICAgICAgc291cmNlLmxpbmVzWzpdID0gc2VsZi5saW5lc1tzdGFydDpl
bmRdCiAgICAgICAgIHJldHVybiBzb3VyY2UKIAotICAgIGRlZiBwdXRhcm91bmQoc2VsZiwgYmVm
b3JlPSIiLCBhZnRlcj0iIiwgaW5kZW50PSIgIiAqIDQpOgotICAgICAgICAiIiIgcmV0dXJuIGEg
Y29weSBvZiB0aGUgc291cmNlIG9iamVjdCB3aXRoCi0gICAgICAgICAgICAnYmVmb3JlJyBhbmQg
J2FmdGVyJyB3cmFwcGVkIGFyb3VuZCBpdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGJlZm9yZSA9
IFNvdXJjZShiZWZvcmUpCi0gICAgICAgIGFmdGVyID0gU291cmNlKGFmdGVyKQotICAgICAgICBu
ZXdzb3VyY2UgPSBTb3VyY2UoKQotICAgICAgICBsaW5lcyA9IFsoaW5kZW50ICsgbGluZSkgZm9y
IGxpbmUgaW4gc2VsZi5saW5lc10KLSAgICAgICAgbmV3c291cmNlLmxpbmVzID0gYmVmb3JlLmxp
bmVzICsgbGluZXMgKyBhZnRlci5saW5lcwotICAgICAgICByZXR1cm4gbmV3c291cmNlCi0KLSAg
ICBkZWYgaW5kZW50KHNlbGYsIGluZGVudD0iICIgKiA0KToKLSAgICAgICAgIiIiIHJldHVybiBh
IGNvcHkgb2YgdGhlIHNvdXJjZSBvYmplY3Qgd2l0aAotICAgICAgICAgICAgYWxsIGxpbmVzIGlu
ZGVudGVkIGJ5IHRoZSBnaXZlbiBpbmRlbnQtc3RyaW5nLgotICAgICAgICAiIiIKKyAgICBkZWYg
aW5kZW50KHNlbGYsIGluZGVudDogc3RyID0gIiAiICogNCkgLT4gIlNvdXJjZSI6CisgICAgICAg
ICIiIlJldHVybiBhIGNvcHkgb2YgdGhlIHNvdXJjZSBvYmplY3Qgd2l0aCBhbGwgbGluZXMgaW5k
ZW50ZWQgYnkgdGhlCisgICAgICAgIGdpdmVuIGluZGVudC1zdHJpbmcuIiIiCiAgICAgICAgIG5l
d3NvdXJjZSA9IFNvdXJjZSgpCiAgICAgICAgIG5ld3NvdXJjZS5saW5lcyA9IFsoaW5kZW50ICsg
bGluZSkgZm9yIGxpbmUgaW4gc2VsZi5saW5lc10KICAgICAgICAgcmV0dXJuIG5ld3NvdXJjZQog
Ci0gICAgZGVmIGdldHN0YXRlbWVudChzZWxmLCBsaW5lbm8pOgotICAgICAgICAiIiIgcmV0dXJu
IFNvdXJjZSBzdGF0ZW1lbnQgd2hpY2ggY29udGFpbnMgdGhlCi0gICAgICAgICAgICBnaXZlbiBs
aW5lbnVtYmVyIChjb3VudGVkIGZyb20gMCkuCi0gICAgICAgICIiIgorICAgIGRlZiBnZXRzdGF0
ZW1lbnQoc2VsZiwgbGluZW5vOiBpbnQpIC0+ICJTb3VyY2UiOgorICAgICAgICAiIiJSZXR1cm4g
U291cmNlIHN0YXRlbWVudCB3aGljaCBjb250YWlucyB0aGUgZ2l2ZW4gbGluZW51bWJlcgorICAg
ICAgICAoY291bnRlZCBmcm9tIDApLiIiIgogICAgICAgICBzdGFydCwgZW5kID0gc2VsZi5nZXRz
dGF0ZW1lbnRyYW5nZShsaW5lbm8pCiAgICAgICAgIHJldHVybiBzZWxmW3N0YXJ0OmVuZF0KIAot
ICAgIGRlZiBnZXRzdGF0ZW1lbnRyYW5nZShzZWxmLCBsaW5lbm8pOgotICAgICAgICAiIiIgcmV0
dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBzcGFucyB0aGUgbWluaW1hbAotICAgICAgICAg
ICAgc3RhdGVtZW50IHJlZ2lvbiB3aGljaCBjb250YWluaW5nIHRoZSBnaXZlbiBsaW5lbm8uCi0g
ICAgICAgICIiIgorICAgIGRlZiBnZXRzdGF0ZW1lbnRyYW5nZShzZWxmLCBsaW5lbm86IGludCkg
LT4gVHVwbGVbaW50LCBpbnRdOgorICAgICAgICAiIiJSZXR1cm4gKHN0YXJ0LCBlbmQpIHR1cGxl
IHdoaWNoIHNwYW5zIHRoZSBtaW5pbWFsIHN0YXRlbWVudCByZWdpb24KKyAgICAgICAgd2hpY2gg
Y29udGFpbmluZyB0aGUgZ2l2ZW4gbGluZW5vLiIiIgogICAgICAgICBpZiBub3QgKDAgPD0gbGlu
ZW5vIDwgbGVuKHNlbGYpKToKICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoImxpbmVubyBv
dXQgb2YgcmFuZ2UiKQogICAgICAgICBhc3QsIHN0YXJ0LCBlbmQgPSBnZXRzdGF0ZW1lbnRyYW5n
ZV9hc3QobGluZW5vLCBzZWxmKQogICAgICAgICByZXR1cm4gc3RhcnQsIGVuZAogCi0gICAgZGVm
IGRlaW5kZW50KHNlbGYsIG9mZnNldD1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBhIG5ldyBz
b3VyY2Ugb2JqZWN0IGRlaW5kZW50ZWQgYnkgb2Zmc2V0LgotICAgICAgICAgICAgSWYgb2Zmc2V0
IGlzIE5vbmUgdGhlbiBndWVzcyBhbiBpbmRlbnRhdGlvbiBvZmZzZXQgZnJvbQotICAgICAgICAg
ICAgdGhlIGZpcnN0IG5vbi1ibGFuayBsaW5lLiAgU3Vic2VxdWVudCBsaW5lcyB3aGljaCBoYXZl
IGEKLSAgICAgICAgICAgIGxvd2VyIGluZGVudGF0aW9uIG9mZnNldCB3aWxsIGJlIGNvcGllZCB2
ZXJiYXRpbSBhcwotICAgICAgICAgICAgdGhleSBhcmUgYXNzdW1lZCB0byBiZSBwYXJ0IG9mIG11
bHRpbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICAjIFhYWCBtYXliZSB1c2UgdGhlIHRva2Vu
aXplciB0byBwcm9wZXJseSBoYW5kbGUgbXVsdGlsaW5lCi0gICAgICAgICMgICAgIHN0cmluZ3Mg
ZXRjLnBwPworICAgIGRlZiBkZWluZGVudChzZWxmKSAtPiAiU291cmNlIjoKKyAgICAgICAgIiIi
UmV0dXJuIGEgbmV3IFNvdXJjZSBvYmplY3QgZGVpbmRlbnRlZC4iIiIKICAgICAgICAgbmV3c291
cmNlID0gU291cmNlKCkKLSAgICAgICAgbmV3c291cmNlLmxpbmVzWzpdID0gZGVpbmRlbnQoc2Vs
Zi5saW5lcywgb2Zmc2V0KQorICAgICAgICBuZXdzb3VyY2UubGluZXNbOl0gPSBkZWluZGVudChz
ZWxmLmxpbmVzKQogICAgICAgICByZXR1cm4gbmV3c291cmNlCiAKLSAgICBkZWYgaXNwYXJzZWFi
bGUoc2VsZiwgZGVpbmRlbnQ9VHJ1ZSk6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBpZiBzb3Vy
Y2UgaXMgcGFyc2VhYmxlLCBoZXVyaXN0aWNhbGx5Ci0gICAgICAgICAgICBkZWluZGVudGluZyBp
dCBieSBkZWZhdWx0LgotICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBwYXJzZXIgaW1wb3J0IHN1
aXRlIGFzIHN5bnRheF9jaGVja2VyCi0KLSAgICAgICAgaWYgZGVpbmRlbnQ6Ci0gICAgICAgICAg
ICBzb3VyY2UgPSBzdHIoc2VsZi5kZWluZGVudCgpKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc291cmNlID0gc3RyKHNlbGYpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgY29tcGls
ZShzb3VyY2UrJ1xuJywgIngiLCAiZXhlYyIpCi0gICAgICAgICAgICBzeW50YXhfY2hlY2tlcihz
b3VyY2UgKyAiXG4iKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAg
ICAgICByYWlzZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVm
IF9fc3RyX18oc2VsZik6CisgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgogICAgICAgICBy
ZXR1cm4gIlxuIi5qb2luKHNlbGYubGluZXMpCiAKLSAgICBkZWYgY29tcGlsZSgKLSAgICAgICAg
c2VsZiwKLSAgICAgICAgZmlsZW5hbWU9Tm9uZSwKLSAgICAgICAgbW9kZT0iZXhlYyIsCi0gICAg
ICAgIGZsYWc9Z2VuZXJhdG9ycy5jb21waWxlcl9mbGFnLAotICAgICAgICBkb250X2luaGVyaXQ9
MCwKLSAgICAgICAgX2dlbmZyYW1lPU5vbmUsCi0gICAgKToKLSAgICAgICAgIiIiIHJldHVybiBj
b21waWxlZCBjb2RlIG9iamVjdC4gaWYgZmlsZW5hbWUgaXMgTm9uZQotICAgICAgICAgICAgaW52
ZW50IGFuIGFydGlmaWNpYWwgZmlsZW5hbWUgd2hpY2ggZGlzcGxheXMKLSAgICAgICAgICAgIHRo
ZSBzb3VyY2UvbGluZSBwb3NpdGlvbiBvZiB0aGUgY2FsbGVyIGZyYW1lLgotICAgICAgICAiIiIK
LSAgICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIHB5LnBhdGgubG9jYWwoZmlsZW5hbWUpLmNoZWNr
KGZpbGU9MCk6Ci0gICAgICAgICAgICBpZiBfZ2VuZnJhbWUgaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICBfZ2VuZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpICAjIHRoZSBjYWxsZXIKLSAgICAgICAg
ICAgIGZuLCBsaW5lbm8gPSBfZ2VuZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lLCBfZ2VuZnJhbWUu
Zl9saW5lbm8KLSAgICAgICAgICAgIGJhc2UgPSAiPCVkLWNvZGVnZW4gIiAlIHNlbGYuX2NvbXBp
bGVjb3VudGVyCi0gICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fY29tcGlsZWNvdW50ZXIgKz0g
MQotICAgICAgICAgICAgaWYgbm90IGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIGZpbGVuYW1l
ID0gYmFzZSArICIlczolZD4iICUgKGZuLCBsaW5lbm8pCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGZpbGVuYW1lID0gYmFzZSArICIlciAlczolZD4iICUgKGZpbGVuYW1lLCBm
biwgbGluZW5vKQotICAgICAgICBzb3VyY2UgPSAiXG4iLmpvaW4oc2VsZi5saW5lcykgKyAiXG4i
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvID0gY3B5X2NvbXBpbGUoc291cmNlLCBmaWxl
bmFtZSwgbW9kZSwgZmxhZykKLSAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICAg
ICAgZXggPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgIyByZS1yZXByZXNlbnQgc3lu
dGF4IGVycm9ycyBmcm9tIHBhcnNpbmcgcHl0aG9uIHN0cmluZ3MKLSAgICAgICAgICAgIG1zZ2xp
bmVzID0gc2VsZi5saW5lc1s6ZXgubGluZW5vXQotICAgICAgICAgICAgaWYgZXgub2Zmc2V0Ogot
ICAgICAgICAgICAgICAgIG1zZ2xpbmVzLmFwcGVuZCgiICIgKiBleC5vZmZzZXQgKyAiXiIpCi0g
ICAgICAgICAgICBtc2dsaW5lcy5hcHBlbmQoIihjb2RlIHdhcyBjb21waWxlZCBwcm9iYWJseSBm
cm9tIGhlcmU6ICVzKSIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIG5ld2V4ID0gU3ludGF4RXJy
b3IoIlxuIi5qb2luKG1zZ2xpbmVzKSkKLSAgICAgICAgICAgIG5ld2V4Lm9mZnNldCA9IGV4Lm9m
ZnNldAotICAgICAgICAgICAgbmV3ZXgubGluZW5vID0gZXgubGluZW5vCi0gICAgICAgICAgICBu
ZXdleC50ZXh0ID0gZXgudGV4dAotICAgICAgICAgICAgcmFpc2UgbmV3ZXgKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGlmIGZsYWcgJiBfQVNUX0ZMQUc6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGNvCi0gICAgICAgICAgICBsaW5lcyA9IFsoeCArICJcbiIpIGZvciB4IGluIHNlbGYubGlu
ZXNdCi0gICAgICAgICAgICBsaW5lY2FjaGUuY2FjaGVbZmlsZW5hbWVdID0gKDEsIE5vbmUsIGxp
bmVzLCBmaWxlbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjbwotCi0KLSMKLSMgcHVibGljIEFQ
SSBzaG9ydGN1dCBmdW5jdGlvbnMKLSMKLQotCi1kZWYgY29tcGlsZV8oCi0gICAgc291cmNlLCBm
aWxlbmFtZT1Ob25lLCBtb2RlPSJleGVjIiwgZmxhZ3M9Z2VuZXJhdG9ycy5jb21waWxlcl9mbGFn
LCBkb250X2luaGVyaXQ9MAotKToKLSAgICAiIiIgY29tcGlsZSB0aGUgZ2l2ZW4gc291cmNlIHRv
IGEgcmF3IGNvZGUgb2JqZWN0LAotICAgICAgICBhbmQgbWFpbnRhaW4gYW4gaW50ZXJuYWwgY2Fj
aGUgd2hpY2ggYWxsb3dzIGxhdGVyCi0gICAgICAgIHJldHJpZXZhbCBvZiB0aGUgc291cmNlIGNv
ZGUgZm9yIHRoZSBjb2RlIG9iamVjdAotICAgICAgICBhbmQgYW55IHJlY3Vyc2l2ZWx5IGNyZWF0
ZWQgY29kZSBvYmplY3RzLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2Uoc291cmNlLCBhc3Qu
QVNUKToKLSAgICAgICAgIyBYWFggc2hvdWxkIFNvdXJjZSBzdXBwb3J0IGhhdmluZyBBU1Q/Ci0g
ICAgICAgIHJldHVybiBjcHlfY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncywg
ZG9udF9pbmhlcml0KQotICAgIF9nZW5mcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkgICMgdGhlIGNh
bGxlcgotICAgIHMgPSBTb3VyY2Uoc291cmNlKQotICAgIGNvID0gcy5jb21waWxlKGZpbGVuYW1l
LCBtb2RlLCBmbGFncywgX2dlbmZyYW1lPV9nZW5mcmFtZSkKLSAgICByZXR1cm4gY28KLQotCi1k
ZWYgZ2V0ZnNsaW5lbm8ob2JqKToKLSAgICAiIiIgUmV0dXJuIHNvdXJjZSBsb2NhdGlvbiAocGF0
aCwgbGluZW5vKSBmb3IgdGhlIGdpdmVuIG9iamVjdC4KLSAgICBJZiB0aGUgc291cmNlIGNhbm5v
dCBiZSBkZXRlcm1pbmVkIHJldHVybiAoIiIsIC0xKQotICAgICIiIgotICAgIGZyb20gLmNvZGUg
aW1wb3J0IENvZGUKLQotICAgIHRyeToKLSAgICAgICAgY29kZSA9IENvZGUob2JqKQotICAgIGV4
Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZuID0gaW5zcGVjdC5n
ZXRzb3VyY2VmaWxlKG9iaikgb3IgaW5zcGVjdC5nZXRmaWxlKG9iaikKLSAgICAgICAgZXhjZXB0
IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAiIiwgLTEKLQotICAgICAgICBmc3BhdGgg
PSBmbiBhbmQgcHkucGF0aC5sb2NhbChmbikgb3IgTm9uZQotICAgICAgICBsaW5lbm8gPSAtMQot
ICAgICAgICBpZiBmc3BhdGg6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgXywg
bGluZW5vID0gZmluZHNvdXJjZShvYmopCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAg
ICAgICAgICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZnNwYXRoID0gY29kZS5wYXRo
Ci0gICAgICAgIGxpbmVubyA9IGNvZGUuZmlyc3RsaW5lbm8KLSAgICBhc3NlcnQgaXNpbnN0YW5j
ZShsaW5lbm8sIGludCkKLSAgICByZXR1cm4gZnNwYXRoLCBsaW5lbm8KLQogCiAjCiAjIGhlbHBl
ciBmdW5jdGlvbnMKICMKIAogCi1kZWYgZmluZHNvdXJjZShvYmopOgorZGVmIGZpbmRzb3VyY2Uo
b2JqKSAtPiBUdXBsZVtPcHRpb25hbFtTb3VyY2VdLCBpbnRdOgogICAgIHRyeToKICAgICAgICAg
c291cmNlbGluZXMsIGxpbmVubyA9IGluc3BlY3QuZmluZHNvdXJjZShvYmopCi0gICAgZXhjZXB0
IHB5LmJ1aWx0aW4uX3N5c2V4OgotICAgICAgICByYWlzZQotICAgIGV4Y2VwdDogICMgbm9xYQor
ICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHJldHVybiBOb25lLCAtMQogICAgIHNvdXJj
ZSA9IFNvdXJjZSgpCiAgICAgc291cmNlLmxpbmVzID0gW2xpbmUucnN0cmlwKCkgZm9yIGxpbmUg
aW4gc291cmNlbGluZXNdCiAgICAgcmV0dXJuIHNvdXJjZSwgbGluZW5vCiAKIAotZGVmIGdldHNv
dXJjZShvYmosICoqa3dhcmdzKToKLSAgICBmcm9tIC5jb2RlIGltcG9ydCBnZXRyYXdjb2RlCi0K
LSAgICBvYmogPSBnZXRyYXdjb2RlKG9iaikKLSAgICB0cnk6Ci0gICAgICAgIHN0cnNyYyA9IGlu
c3BlY3QuZ2V0c291cmNlKG9iaikKLSAgICBleGNlcHQgSW5kZW50YXRpb25FcnJvcjoKLSAgICAg
ICAgc3Ryc3JjID0gJyJCdWdneSBweXRob24gdmVyc2lvbiBjb25zaWRlciB1cGdyYWRpbmcsIGNh
bm5vdCBnZXQgc291cmNlIicKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShzdHJzcmMsIHN0cikKLSAg
ICByZXR1cm4gU291cmNlKHN0cnNyYywgKiprd2FyZ3MpCi0KLQotZGVmIGRlaW5kZW50KGxpbmVz
LCBvZmZzZXQ9Tm9uZSk6Ci0gICAgaWYgb2Zmc2V0IGlzIE5vbmU6Ci0gICAgICAgIGZvciBsaW5l
IGluIGxpbmVzOgotICAgICAgICAgICAgbGluZSA9IGxpbmUuZXhwYW5kdGFicygpCi0gICAgICAg
ICAgICBzID0gbGluZS5sc3RyaXAoKQotICAgICAgICAgICAgaWYgczoKLSAgICAgICAgICAgICAg
ICBvZmZzZXQgPSBsZW4obGluZSkgLSBsZW4ocykKLSAgICAgICAgICAgICAgICBicmVhawotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgb2Zmc2V0ID0gMAotICAgIGlmIG9mZnNldCA9PSAwOgot
ICAgICAgICByZXR1cm4gbGlzdChsaW5lcykKLSAgICBuZXdsaW5lcyA9IFtdCi0KLSAgICBkZWYg
cmVhZGxpbmVfZ2VuZXJhdG9yKGxpbmVzKToKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0g
ICAgICAgICAgICB5aWVsZCBsaW5lICsgIlxuIgotCi0gICAgaXQgPSByZWFkbGluZV9nZW5lcmF0
b3IobGluZXMpCi0KK2RlZiBnZXRyYXdjb2RlKG9iaiwgdHJ5Y2FsbDogYm9vbCA9IFRydWUpOgor
ICAgICIiIlJldHVybiBjb2RlIG9iamVjdCBmb3IgZ2l2ZW4gZnVuY3Rpb24uIiIiCiAgICAgdHJ5
OgotICAgICAgICBmb3IgXywgXywgKHNsaW5lLCBfKSwgKGVsaW5lLCBfKSwgXyBpbiB0b2tlbml6
ZS5nZW5lcmF0ZV90b2tlbnMoCi0gICAgICAgICAgICBsYW1iZGE6IG5leHQoaXQpCi0gICAgICAg
ICk6Ci0gICAgICAgICAgICBpZiBzbGluZSA+IGxlbihsaW5lcyk6Ci0gICAgICAgICAgICAgICAg
YnJlYWsgICMgRW5kIG9mIGlucHV0IHJlYWNoZWQKLSAgICAgICAgICAgIGlmIHNsaW5lID4gbGVu
KG5ld2xpbmVzKToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZXNbc2xpbmUgLSAxXS5leHBh
bmR0YWJzKCkKLSAgICAgICAgICAgICAgICBpZiBsaW5lLmxzdHJpcCgpIGFuZCBsaW5lWzpvZmZz
ZXRdLmlzc3BhY2UoKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbb2Zmc2V0Ol0g
ICMgRGVpbmRlbnQKLSAgICAgICAgICAgICAgICBuZXdsaW5lcy5hcHBlbmQobGluZSkKLQotICAg
ICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2xpbmUsIGVsaW5lKToKLSAgICAgICAgICAgICAgICAj
IERvbid0IGRlaW5kZW50IGNvbnRpbnVpbmcgbGluZXMgb2YKLSAgICAgICAgICAgICAgICAjIG11
bHRpbGluZSB0b2tlbnMgKGkuZS4gbXVsdGlsaW5lIHN0cmluZ3MpCi0gICAgICAgICAgICAgICAg
bmV3bGluZXMuYXBwZW5kKGxpbmVzW2ldKQotICAgIGV4Y2VwdCAoSW5kZW50YXRpb25FcnJvciwg
dG9rZW5pemUuVG9rZW5FcnJvcik6Ci0gICAgICAgIHBhc3MKLSAgICAjIEFkZCBhbnkgbGluZXMg
d2UgZGlkbid0IHNlZS4gRS5nLiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZC4KLSAgICBuZXds
aW5lcy5leHRlbmQobGluZXNbbGVuKG5ld2xpbmVzKTpdKQotICAgIHJldHVybiBuZXdsaW5lcwot
Ci0KLWRlZiBnZXRfc3RhdGVtZW50X3N0YXJ0ZW5kMihsaW5lbm8sIG5vZGUpOgotICAgIGltcG9y
dCBhc3QKLQotICAgICMgZmxhdHRlbiBhbGwgc3RhdGVtZW50cyBhbmQgZXhjZXB0IGhhbmRsZXJz
IGludG8gb25lIGxpbmVuby1saXN0Ci0gICAgIyBBU1QncyBsaW5lIG51bWJlcnMgc3RhcnQgaW5k
ZXhpbmcgYXQgMQotICAgIHZhbHVlcyA9IFtdCisgICAgICAgIHJldHVybiBvYmouX19jb2RlX18K
KyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAi
Zl9jb2RlIiwgb2JqKQorICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgIl9fY29kZV9fIiwgb2Jq
KQorICAgICAgICBpZiB0cnljYWxsIGFuZCBub3QgaGFzYXR0cihvYmosICJjb19maXJzdGxpbmVu
byIpOgorICAgICAgICAgICAgaWYgaGFzYXR0cihvYmosICJfX2NhbGxfXyIpIGFuZCBub3QgaW5z
cGVjdC5pc2NsYXNzKG9iaik6CisgICAgICAgICAgICAgICAgeCA9IGdldHJhd2NvZGUob2JqLl9f
Y2FsbF9fLCB0cnljYWxsPUZhbHNlKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoeCwgImNv
X2ZpcnN0bGluZW5vIik6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIHJl
dHVybiBvYmoKKworCitkZWYgZGVpbmRlbnQobGluZXM6IEl0ZXJhYmxlW3N0cl0pIC0+IExpc3Rb
c3RyXToKKyAgICByZXR1cm4gdGV4dHdyYXAuZGVkZW50KCJcbiIuam9pbihsaW5lcykpLnNwbGl0
bGluZXMoKQorCisKK2RlZiBnZXRfc3RhdGVtZW50X3N0YXJ0ZW5kMihsaW5lbm86IGludCwgbm9k
ZTogYXN0LkFTVCkgLT4gVHVwbGVbaW50LCBPcHRpb25hbFtpbnRdXToKKyAgICAjIEZsYXR0ZW4g
YWxsIHN0YXRlbWVudHMgYW5kIGV4Y2VwdCBoYW5kbGVycyBpbnRvIG9uZSBsaW5lbm8tbGlzdC4K
KyAgICAjIEFTVCdzIGxpbmUgbnVtYmVycyBzdGFydCBpbmRleGluZyBhdCAxLgorICAgIHZhbHVl
cyA9IFtdICAjIHR5cGU6IExpc3RbaW50XQogICAgIGZvciB4IGluIGFzdC53YWxrKG5vZGUpOgog
ICAgICAgICBpZiBpc2luc3RhbmNlKHgsIChhc3Quc3RtdCwgYXN0LkV4Y2VwdEhhbmRsZXIpKToK
ICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoeC5saW5lbm8gLSAxKQogICAgICAgICAgICAgZm9y
IG5hbWUgaW4gKCJmaW5hbGJvZHkiLCAib3JlbHNlIik6Ci0gICAgICAgICAgICAgICAgdmFsID0g
Z2V0YXR0cih4LCBuYW1lLCBOb25lKQorICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoeCwg
bmFtZSwgTm9uZSkgICMgdHlwZTogT3B0aW9uYWxbTGlzdFthc3Quc3RtdF1dCiAgICAgICAgICAg
ICAgICAgaWYgdmFsOgotICAgICAgICAgICAgICAgICAgICAjIHRyZWF0IHRoZSBmaW5hbGx5L29y
ZWxzZSBwYXJ0IGFzIGl0cyBvd24gc3RhdGVtZW50CisgICAgICAgICAgICAgICAgICAgICMgVHJl
YXQgdGhlIGZpbmFsbHkvb3JlbHNlIHBhcnQgYXMgaXRzIG93biBzdGF0ZW1lbnQuCiAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQodmFsWzBdLmxpbmVubyAtIDEgLSAxKQogICAgIHZh
bHVlcy5zb3J0KCkKICAgICBpbnNlcnRfaW5kZXggPSBiaXNlY3RfcmlnaHQodmFsdWVzLCBsaW5l
bm8pCkBAIC0zNDEsMTMgKzE2NCwyMiBAQCBkZWYgZ2V0X3N0YXRlbWVudF9zdGFydGVuZDIobGlu
ZW5vLCBub2RlKToKICAgICByZXR1cm4gc3RhcnQsIGVuZAogCiAKLWRlZiBnZXRzdGF0ZW1lbnRy
YW5nZV9hc3QobGluZW5vLCBzb3VyY2UsIGFzc2VydGlvbj1GYWxzZSwgYXN0bm9kZT1Ob25lKToK
K2RlZiBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QoCisgICAgbGluZW5vOiBpbnQsCisgICAgc291cmNl
OiBTb3VyY2UsCisgICAgYXNzZXJ0aW9uOiBib29sID0gRmFsc2UsCisgICAgYXN0bm9kZTogT3B0
aW9uYWxbYXN0LkFTVF0gPSBOb25lLAorKSAtPiBUdXBsZVthc3QuQVNULCBpbnQsIGludF06CiAg
ICAgaWYgYXN0bm9kZSBpcyBOb25lOgogICAgICAgICBjb250ZW50ID0gc3RyKHNvdXJjZSkKLSAg
ICAgICAgYXN0bm9kZSA9IGNvbXBpbGUoY29udGVudCwgInNvdXJjZSIsICJleGVjIiwgMTAyNCkg
ICMgMTAyNCBmb3IgQVNUCisgICAgICAgICMgU2VlICM0MjYwOgorICAgICAgICAjIERvbid0IHBy
b2R1Y2UgZHVwbGljYXRlIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIHNvdXJjZSB0byBmaW5kIEFT
VC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAg
d2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgYXN0bm9kZSA9IGFz
dC5wYXJzZShjb250ZW50LCAic291cmNlIiwgImV4ZWMiKQogCiAgICAgc3RhcnQsIGVuZCA9IGdl
dF9zdGF0ZW1lbnRfc3RhcnRlbmQyKGxpbmVubywgYXN0bm9kZSkKLSAgICAjIHdlIG5lZWQgdG8g
Y29ycmVjdCB0aGUgZW5kOgorICAgICMgV2UgbmVlZCB0byBjb3JyZWN0IHRoZSBlbmQ6CiAgICAg
IyAtIGFzdC1wYXJzaW5nIHN0cmlwcyBjb21tZW50cwogICAgICMgLSB0aGVyZSBtaWdodCBiZSBl
bXB0eSBsaW5lcwogICAgICMgLSB3ZSBtaWdodCBoYXZlIGxlc3NlciBpbmRlbnRlZCBjb2RlIGJs
b2NrcyBhdCB0aGUgZW5kCkBAIC0zNTUsMTAgKzE4NywxMCBAQCBkZWYgZ2V0c3RhdGVtZW50cmFu
Z2VfYXN0KGxpbmVubywgc291cmNlLCBhc3NlcnRpb249RmFsc2UsIGFzdG5vZGU9Tm9uZSk6CiAg
ICAgICAgIGVuZCA9IGxlbihzb3VyY2UubGluZXMpCiAKICAgICBpZiBlbmQgPiBzdGFydCArIDE6
Ci0gICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IHNwYW4gZGlmZmVyZW50bHkgaW5kZW50ZWQg
Y29kZSBibG9ja3MKLSAgICAgICAgIyBieSB1c2luZyB0aGUgQmxvY2tGaW5kZXIgaGVscGVyIHVz
ZWQgd2hpY2ggaW5zcGVjdC5nZXRzb3VyY2UoKSB1c2VzIGl0c2VsZgorICAgICAgICAjIE1ha2Ug
c3VyZSB3ZSBkb24ndCBzcGFuIGRpZmZlcmVudGx5IGluZGVudGVkIGNvZGUgYmxvY2tzCisgICAg
ICAgICMgYnkgdXNpbmcgdGhlIEJsb2NrRmluZGVyIGhlbHBlciB1c2VkIHdoaWNoIGluc3BlY3Qu
Z2V0c291cmNlKCkgdXNlcyBpdHNlbGYuCiAgICAgICAgIGJsb2NrX2ZpbmRlciA9IGluc3BlY3Qu
QmxvY2tGaW5kZXIoKQotICAgICAgICAjIGlmIHdlIHN0YXJ0IHdpdGggYW4gaW5kZW50ZWQgbGlu
ZSwgcHV0IGJsb2NrZmluZGVyIHRvICJzdGFydGVkIiBtb2RlCisgICAgICAgICMgSWYgd2Ugc3Rh
cnQgd2l0aCBhbiBpbmRlbnRlZCBsaW5lLCBwdXQgYmxvY2tmaW5kZXIgdG8gInN0YXJ0ZWQiIG1v
ZGUuCiAgICAgICAgIGJsb2NrX2ZpbmRlci5zdGFydGVkID0gc291cmNlLmxpbmVzW3N0YXJ0XVsw
XS5pc3NwYWNlKCkKICAgICAgICAgaXQgPSAoKHggKyAiXG4iKSBmb3IgeCBpbiBzb3VyY2UubGlu
ZXNbc3RhcnQ6ZW5kXSkKICAgICAgICAgdHJ5OgpAQCAtMzY5LDcgKzIwMSw3IEBAIGRlZiBnZXRz
dGF0ZW1lbnRyYW5nZV9hc3QobGluZW5vLCBzb3VyY2UsIGFzc2VydGlvbj1GYWxzZSwgYXN0bm9k
ZT1Ob25lKToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHBhc3MKIAot
ICAgICMgdGhlIGVuZCBtaWdodCBzdGlsbCBwb2ludCB0byBhIGNvbW1lbnQgb3IgZW1wdHkgbGlu
ZSwgY29ycmVjdCBpdAorICAgICMgVGhlIGVuZCBtaWdodCBzdGlsbCBwb2ludCB0byBhIGNvbW1l
bnQgb3IgZW1wdHkgbGluZSwgY29ycmVjdCBpdC4KICAgICB3aGlsZSBlbmQ6CiAgICAgICAgIGxp
bmUgPSBzb3VyY2UubGluZXNbZW5kIC0gMV0ubHN0cmlwKCkKICAgICAgICAgaWYgbGluZS5zdGFy
dHN3aXRoKCIjIikgb3Igbm90IGxpbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9fY29kZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2Rl
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGI2MGNiMzc2
NDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2RlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvX2NvZGUvX3B5MnRyYWNlYmFjay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19j
b2RlL2NvZGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9zb3VyY2UucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19pby9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L19pby9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmRiMDAxZTkxOGNiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L19pby9fX2luaXRfXy5weQpAQCAtMCwwICsxLDggQEAKK2Zyb20g
LnRlcm1pbmFsd3JpdGVyIGltcG9ydCBnZXRfdGVybWluYWxfd2lkdGgKK2Zyb20gLnRlcm1pbmFs
d3JpdGVyIGltcG9ydCBUZXJtaW5hbFdyaXRlcgorCisKK19fYWxsX18gPSBbCisgICAgIlRlcm1p
bmFsV3JpdGVyIiwKKyAgICAiZ2V0X3Rlcm1pbmFsX3dpZHRoIiwKK10KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19pby9zYWZlcmVwci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L19pby9zYWZlcmVwci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjlhNDk3NWY2MWFkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L19pby9zYWZlcmVwci5weQpAQCAtMCwwICsxLDEyOSBAQAoraW1wb3J0IHBwcmludAor
aW1wb3J0IHJlcHJsaWIKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9y
dCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgSU8KK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bAorCisKK2RlZiBfdHJ5X3JlcHJfb3Jfc3RyKG9iajogb2JqZWN0KSAtPiBzdHI6CisgICAgdHJ5
OgorICAgICAgICByZXR1cm4gcmVwcihvYmopCisgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVw
dCwgU3lzdGVtRXhpdCk6CisgICAgICAgIHJhaXNlCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246
CisgICAgICAgIHJldHVybiAne30oInt9IiknLmZvcm1hdCh0eXBlKG9iaikuX19uYW1lX18sIG9i
aikKKworCitkZWYgX2Zvcm1hdF9yZXByX2V4Y2VwdGlvbihleGM6IEJhc2VFeGNlcHRpb24sIG9i
ajogb2JqZWN0KSAtPiBzdHI6CisgICAgdHJ5OgorICAgICAgICBleGNfaW5mbyA9IF90cnlfcmVw
cl9vcl9zdHIoZXhjKQorICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQp
OgorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAg
ICAgZXhjX2luZm8gPSAidW5wcmVzZW50YWJsZSBleGNlcHRpb24gKHt9KSIuZm9ybWF0KF90cnlf
cmVwcl9vcl9zdHIoZXhjKSkKKyAgICByZXR1cm4gIjxbe30gcmFpc2VkIGluIHJlcHIoKV0ge30g
b2JqZWN0IGF0IDB4ezp4fT4iLmZvcm1hdCgKKyAgICAgICAgZXhjX2luZm8sIHR5cGUob2JqKS5f
X25hbWVfXywgaWQob2JqKQorICAgICkKKworCitkZWYgX2VsbGlwc2l6ZShzOiBzdHIsIG1heHNp
emU6IGludCkgLT4gc3RyOgorICAgIGlmIGxlbihzKSA+IG1heHNpemU6CisgICAgICAgIGkgPSBt
YXgoMCwgKG1heHNpemUgLSAzKSAvLyAyKQorICAgICAgICBqID0gbWF4KDAsIG1heHNpemUgLSAz
IC0gaSkKKyAgICAgICAgcmV0dXJuIHNbOmldICsgIi4uLiIgKyBzW2xlbihzKSAtIGogOl0KKyAg
ICByZXR1cm4gcworCisKK2NsYXNzIFNhZmVSZXByKHJlcHJsaWIuUmVwcik6CisgICAgIiIicmVw
ci5SZXByIHRoYXQgbGltaXRzIHRoZSByZXN1bHRpbmcgc2l6ZSBvZiByZXByKCkgYW5kIGluY2x1
ZGVzCisgICAgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyByYWlzZWQgZHVyaW5nIHRoZSBjYWxs
LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heHNpemU6IGludCkgLT4gTm9uZToKKyAg
ICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYubWF4c3RyaW5nID0gbWF4c2l6
ZQorICAgICAgICBzZWxmLm1heHNpemUgPSBtYXhzaXplCisKKyAgICBkZWYgcmVwcihzZWxmLCB4
OiBvYmplY3QpIC0+IHN0cjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcyA9IHN1cGVyKCku
cmVwcih4KQorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToK
KyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoK
KyAgICAgICAgICAgIHMgPSBfZm9ybWF0X3JlcHJfZXhjZXB0aW9uKGV4YywgeCkKKyAgICAgICAg
cmV0dXJuIF9lbGxpcHNpemUocywgc2VsZi5tYXhzaXplKQorCisgICAgZGVmIHJlcHJfaW5zdGFu
Y2Uoc2VsZiwgeDogb2JqZWN0LCBsZXZlbDogaW50KSAtPiBzdHI6CisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHMgPSByZXByKHgpCisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQs
IFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNl
cHRpb24gYXMgZXhjOgorICAgICAgICAgICAgcyA9IF9mb3JtYXRfcmVwcl9leGNlcHRpb24oZXhj
LCB4KQorICAgICAgICByZXR1cm4gX2VsbGlwc2l6ZShzLCBzZWxmLm1heHNpemUpCisKKworZGVm
IHNhZmVmb3JtYXQob2JqOiBvYmplY3QpIC0+IHN0cjoKKyAgICAiIiJSZXR1cm4gYSBwcmV0dHkg
cHJpbnRlZCBzdHJpbmcgZm9yIHRoZSBnaXZlbiBvYmplY3QuCisKKyAgICBGYWlsaW5nIF9fcmVw
cl9fIGZ1bmN0aW9ucyBvZiB1c2VyIGluc3RhbmNlcyB3aWxsIGJlIHJlcHJlc2VudGVkCisgICAg
d2l0aCBhIHNob3J0IGV4Y2VwdGlvbiBpbmZvLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAg
cmV0dXJuIHBwcmludC5wZm9ybWF0KG9iaikKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoK
KyAgICAgICAgcmV0dXJuIF9mb3JtYXRfcmVwcl9leGNlcHRpb24oZXhjLCBvYmopCisKKworZGVm
IHNhZmVyZXByKG9iajogb2JqZWN0LCBtYXhzaXplOiBpbnQgPSAyNDApIC0+IHN0cjoKKyAgICAi
IiJSZXR1cm4gYSBzaXplLWxpbWl0ZWQgc2FmZSByZXByLXN0cmluZyBmb3IgdGhlIGdpdmVuIG9i
amVjdC4KKworICAgIEZhaWxpbmcgX19yZXByX18gZnVuY3Rpb25zIG9mIHVzZXIgaW5zdGFuY2Vz
IHdpbGwgYmUgcmVwcmVzZW50ZWQKKyAgICB3aXRoIGEgc2hvcnQgZXhjZXB0aW9uIGluZm8gYW5k
ICdzYWZlcmVwcicgZ2VuZXJhbGx5IHRha2VzCisgICAgY2FyZSB0byBuZXZlciByYWlzZSBleGNl
cHRpb25zIGl0c2VsZi4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCB0
aGUgUmVwci9yZXBybGliIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCisgICAgc3RhbmRhcmQgMi42IGxp
Yi4KKyAgICAiIiIKKyAgICByZXR1cm4gU2FmZVJlcHIobWF4c2l6ZSkucmVwcihvYmopCisKKwor
Y2xhc3MgQWx3YXlzRGlzcGF0Y2hpbmdQcmV0dHlQcmludGVyKHBwcmludC5QcmV0dHlQcmludGVy
KToKKyAgICAiIiJQcmV0dHlQcmludGVyIHRoYXQgYWx3YXlzIGRpc3BhdGNoZXMgKHJlZ2FyZGxl
c3Mgb2Ygd2lkdGgpLiIiIgorCisgICAgZGVmIF9mb3JtYXQoCisgICAgICAgIHNlbGYsCisgICAg
ICAgIG9iamVjdDogb2JqZWN0LAorICAgICAgICBzdHJlYW06IElPW3N0cl0sCisgICAgICAgIGlu
ZGVudDogaW50LAorICAgICAgICBhbGxvd2FuY2U6IGludCwKKyAgICAgICAgY29udGV4dDogRGlj
dFtpbnQsIEFueV0sCisgICAgICAgIGxldmVsOiBpbnQsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIF9kaXNwYXRjaCBpcyBwcml2YXRlLgorICAgICAgICBw
ID0gc2VsZi5fZGlzcGF0Y2guZ2V0KHR5cGUob2JqZWN0KS5fX3JlcHJfXywgTm9uZSkgICMgdHlw
ZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworICAgICAgICBvYmppZCA9IGlkKG9iamVjdCkKKyAg
ICAgICAgaWYgb2JqaWQgaW4gY29udGV4dCBvciBwIGlzIE5vbmU6CisgICAgICAgICAgICAjIFR5
cGUgaWdub3JlZCBiZWNhdXNlIF9mb3JtYXQgaXMgcHJpdmF0ZS4KKyAgICAgICAgICAgIHN1cGVy
KCkuX2Zvcm1hdCggICMgdHlwZTogaWdub3JlW21pc2NdCisgICAgICAgICAgICAgICAgb2JqZWN0
LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCwKKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQorICAg
ICAgICBwKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwg
bGV2ZWwgKyAxKQorICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KKworCitkZWYgX3Bmb3JtYXRf
ZGlzcGF0Y2goCisgICAgb2JqZWN0OiBvYmplY3QsCisgICAgaW5kZW50OiBpbnQgPSAxLAorICAg
IHdpZHRoOiBpbnQgPSA4MCwKKyAgICBkZXB0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAg
KiwKKyAgICBjb21wYWN0OiBib29sID0gRmFsc2UKKykgLT4gc3RyOgorICAgIHJldHVybiBBbHdh
eXNEaXNwYXRjaGluZ1ByZXR0eVByaW50ZXIoCisgICAgICAgIGluZGVudD1pbmRlbnQsIHdpZHRo
PXdpZHRoLCBkZXB0aD1kZXB0aCwgY29tcGFjdD1jb21wYWN0CisgICAgKS5wZm9ybWF0KG9iamVj
dCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19pby90ZXJtaW5hbHdyaXRl
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19pby90ZXJtaW5hbHdyaXRlci5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE5NDA0ZWJjYzE2OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19pby90ZXJtaW5hbHdyaXRlci5w
eQpAQCAtMCwwICsxLDIxMCBAQAorIiIiSGVscGVyIGZ1bmN0aW9ucyBmb3Igd3JpdGluZyB0byB0
ZXJtaW5hbHMgYW5kIGZpbGVzLiIiIgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQg
c3lzCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1
ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFRleHRJTworCitmcm9tIC53Y3dpZHRoIGltcG9ydCB3
Y3N3aWR0aAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKKworCisjIFRoaXMgY29k
ZSB3YXMgaW5pdGlhbGx5IGNvcGllZCBmcm9tIHB5IDEuOC4xLCBmaWxlIF9pby90ZXJtaW5hbHdy
aXRlci5weS4KKworCitkZWYgZ2V0X3Rlcm1pbmFsX3dpZHRoKCkgLT4gaW50OgorICAgIHdpZHRo
LCBfID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKGZhbGxiYWNrPSg4MCwgMjQpKQorCisgICAg
IyBUaGUgV2luZG93cyBnZXRfdGVybWluYWxfc2l6ZSBtYXkgYmUgYm9ndXMsIGxldCdzIHNhbmlm
eSBhIGJpdC4KKyAgICBpZiB3aWR0aCA8IDQwOgorICAgICAgICB3aWR0aCA9IDgwCisKKyAgICBy
ZXR1cm4gd2lkdGgKKworCitkZWYgc2hvdWxkX2RvX21hcmt1cChmaWxlOiBUZXh0SU8pIC0+IGJv
b2w6CisgICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZX0NPTE9SUyIpID09ICIxIjoKKyAgICAgICAg
cmV0dXJuIFRydWUKKyAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlfQ09MT1JTIikgPT0gIjAiOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiAiTk9fQ09MT1IiIGluIG9zLmVudmlyb246Cisg
ICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmICJGT1JDRV9DT0xPUiIgaW4gb3MuZW52aXJvbjoK
KyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gKAorICAgICAgICBoYXNhdHRyKGZpbGUs
ICJpc2F0dHkiKSBhbmQgZmlsZS5pc2F0dHkoKSBhbmQgb3MuZW52aXJvbi5nZXQoIlRFUk0iKSAh
PSAiZHVtYiIKKyAgICApCisKKworQGZpbmFsCitjbGFzcyBUZXJtaW5hbFdyaXRlcjoKKyAgICBf
ZXNjdGFibGUgPSBkaWN0KAorICAgICAgICBibGFjaz0zMCwKKyAgICAgICAgcmVkPTMxLAorICAg
ICAgICBncmVlbj0zMiwKKyAgICAgICAgeWVsbG93PTMzLAorICAgICAgICBibHVlPTM0LAorICAg
ICAgICBwdXJwbGU9MzUsCisgICAgICAgIGN5YW49MzYsCisgICAgICAgIHdoaXRlPTM3LAorICAg
ICAgICBCbGFjaz00MCwKKyAgICAgICAgUmVkPTQxLAorICAgICAgICBHcmVlbj00MiwKKyAgICAg
ICAgWWVsbG93PTQzLAorICAgICAgICBCbHVlPTQ0LAorICAgICAgICBQdXJwbGU9NDUsCisgICAg
ICAgIEN5YW49NDYsCisgICAgICAgIFdoaXRlPTQ3LAorICAgICAgICBib2xkPTEsCisgICAgICAg
IGxpZ2h0PTIsCisgICAgICAgIGJsaW5rPTUsCisgICAgICAgIGludmVydD03LAorICAgICkKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlOiBPcHRpb25hbFtUZXh0SU9dID0gTm9uZSkgLT4g
Tm9uZToKKyAgICAgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICAgICAgZmlsZSA9IHN5cy5z
dGRvdXQKKyAgICAgICAgaWYgaGFzYXR0cihmaWxlLCAiaXNhdHR5IikgYW5kIGZpbGUuaXNhdHR5
KCkgYW5kIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIGltcG9ydCBjb2xvcmFtYQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9y
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgZmlsZSA9IGNvbG9yYW1hLkFuc2lUb1dpbjMyKGZpbGUpLnN0cmVhbQorICAgICAgICAgICAg
ICAgIGFzc2VydCBmaWxlIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCisg
ICAgICAgIHNlbGYuaGFzbWFya3VwID0gc2hvdWxkX2RvX21hcmt1cChmaWxlKQorICAgICAgICBz
ZWxmLl9jdXJyZW50X2xpbmUgPSAiIgorICAgICAgICBzZWxmLl90ZXJtaW5hbF93aWR0aCA9IE5v
bmUgICMgdHlwZTogT3B0aW9uYWxbaW50XQorICAgICAgICBzZWxmLmNvZGVfaGlnaGxpZ2h0ID0g
VHJ1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZ1bGx3aWR0aChzZWxmKSAtPiBpbnQ6Cisg
ICAgICAgIGlmIHNlbGYuX3Rlcm1pbmFsX3dpZHRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX3Rlcm1pbmFsX3dpZHRoCisgICAgICAgIHJldHVybiBnZXRfdGVybWluYWxf
d2lkdGgoKQorCisgICAgQGZ1bGx3aWR0aC5zZXR0ZXIKKyAgICBkZWYgZnVsbHdpZHRoKHNlbGYs
IHZhbHVlOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3Rlcm1pbmFsX3dpZHRoID0gdmFs
dWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aWR0aF9vZl9jdXJyZW50X2xpbmUoc2VsZikg
LT4gaW50OgorICAgICAgICAiIiJSZXR1cm4gYW4gZXN0aW1hdGUgb2YgdGhlIHdpZHRoIHNvIGZh
ciBpbiB0aGUgY3VycmVudCBsaW5lLiIiIgorICAgICAgICByZXR1cm4gd2Nzd2lkdGgoc2VsZi5f
Y3VycmVudF9saW5lKQorCisgICAgZGVmIG1hcmt1cChzZWxmLCB0ZXh0OiBzdHIsICoqbWFya3Vw
OiBib29sKSAtPiBzdHI6CisgICAgICAgIGZvciBuYW1lIGluIG1hcmt1cDoKKyAgICAgICAgICAg
IGlmIG5hbWUgbm90IGluIHNlbGYuX2VzY3RhYmxlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoInVua25vd24gbWFya3VwOiB7IXJ9Ii5mb3JtYXQobmFtZSkpCisgICAgICAgIGlm
IHNlbGYuaGFzbWFya3VwOgorICAgICAgICAgICAgZXNjID0gW3NlbGYuX2VzY3RhYmxlW25hbWVd
IGZvciBuYW1lLCBvbiBpbiBtYXJrdXAuaXRlbXMoKSBpZiBvbl0KKyAgICAgICAgICAgIGlmIGVz
YzoKKyAgICAgICAgICAgICAgICB0ZXh0ID0gIiIuam9pbigiXHgxYlslc20iICUgY29kIGZvciBj
b2QgaW4gZXNjKSArIHRleHQgKyAiXHgxYlswbSIKKyAgICAgICAgcmV0dXJuIHRleHQKKworICAg
IGRlZiBzZXAoCisgICAgICAgIHNlbGYsCisgICAgICAgIHNlcGNoYXI6IHN0ciwKKyAgICAgICAg
dGl0bGU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBmdWxsd2lkdGg6IE9wdGlvbmFs
W2ludF0gPSBOb25lLAorICAgICAgICAqKm1hcmt1cDogYm9vbAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgaWYgZnVsbHdpZHRoIGlzIE5vbmU6CisgICAgICAgICAgICBmdWxsd2lkdGggPSBzZWxm
LmZ1bGx3aWR0aAorICAgICAgICAjIFRoZSBnb2FsIGlzIHRvIGhhdmUgdGhlIGxpbmUgYmUgYXMg
bG9uZyBhcyBwb3NzaWJsZQorICAgICAgICAjIHVuZGVyIHRoZSBjb25kaXRpb24gdGhhdCBsZW4o
bGluZSkgPD0gZnVsbHdpZHRoLgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoK
KyAgICAgICAgICAgICMgSWYgd2UgcHJpbnQgaW4gdGhlIGxhc3QgY29sdW1uIG9uIHdpbmRvd3Mg
d2UgYXJlIG9uIGEKKyAgICAgICAgICAgICMgbmV3IGxpbmUgYnV0IHRoZXJlIGlzIG5vIHdheSB0
byB2ZXJpZnkvbmV1dHJhbGl6ZSB0aGlzCisgICAgICAgICAgICAjICh3ZSBtYXkgbm90IGtub3cg
dGhlIGV4YWN0IGxpbmUgd2lkdGgpLgorICAgICAgICAgICAgIyBTbyBsZXQncyBiZSBkZWZlbnNp
dmUgdG8gYXZvaWQgZW1wdHkgbGluZXMgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgICAgIGZ1bGx3
aWR0aCAtPSAxCisgICAgICAgIGlmIHRpdGxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyB3
ZSB3YW50IDIgKyAyKmxlbihmaWxsKSArIGxlbih0aXRsZSkgPD0gZnVsbHdpZHRoCisgICAgICAg
ICAgICAjIGkuZS4gICAgMiArIDIqbGVuKHNlcGNoYXIpKk4gKyBsZW4odGl0bGUpIDw9IGZ1bGx3
aWR0aAorICAgICAgICAgICAgIyAgICAgICAgIDIqbGVuKHNlcGNoYXIpKk4gPD0gZnVsbHdpZHRo
IC0gbGVuKHRpdGxlKSAtIDIKKyAgICAgICAgICAgICMgICAgICAgICBOIDw9IChmdWxsd2lkdGgg
LSBsZW4odGl0bGUpIC0gMikgLy8gKDIqbGVuKHNlcGNoYXIpKQorICAgICAgICAgICAgTiA9IG1h
eCgoZnVsbHdpZHRoIC0gbGVuKHRpdGxlKSAtIDIpIC8vICgyICogbGVuKHNlcGNoYXIpKSwgMSkK
KyAgICAgICAgICAgIGZpbGwgPSBzZXBjaGFyICogTgorICAgICAgICAgICAgbGluZSA9ICJ7fSB7
fSB7fSIuZm9ybWF0KGZpbGwsIHRpdGxlLCBmaWxsKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgIyB3ZSB3YW50IGxlbihzZXBjaGFyKSpOIDw9IGZ1bGx3aWR0aAorICAgICAgICAgICAgIyBp
LmUuICAgIE4gPD0gZnVsbHdpZHRoIC8vIGxlbihzZXBjaGFyKQorICAgICAgICAgICAgbGluZSA9
IHNlcGNoYXIgKiAoZnVsbHdpZHRoIC8vIGxlbihzZXBjaGFyKSkKKyAgICAgICAgIyBJbiBzb21l
IHNpdHVhdGlvbnMgdGhlcmUgaXMgcm9vbSBmb3IgYW4gZXh0cmEgc2VwY2hhciBhdCB0aGUgcmln
aHQsCisgICAgICAgICMgaW4gcGFydGljdWxhciBpZiB3ZSBjb25zaWRlciB0aGF0IHdpdGggYSBz
ZXBjaGFyIGxpa2UgIl8gIiB0aGUKKyAgICAgICAgIyB0cmFpbGluZyBzcGFjZSBpcyBub3QgaW1w
b3J0YW50IGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgICAgIGlmIGxlbihsaW5lKSArIGxl
bihzZXBjaGFyLnJzdHJpcCgpKSA8PSBmdWxsd2lkdGg6CisgICAgICAgICAgICBsaW5lICs9IHNl
cGNoYXIucnN0cmlwKCkKKworICAgICAgICBzZWxmLmxpbmUobGluZSwgKiptYXJrdXApCisKKyAg
ICBkZWYgd3JpdGUoc2VsZiwgbXNnOiBzdHIsICosIGZsdXNoOiBib29sID0gRmFsc2UsICoqbWFy
a3VwOiBib29sKSAtPiBOb25lOgorICAgICAgICBpZiBtc2c6CisgICAgICAgICAgICBjdXJyZW50
X2xpbmUgPSBtc2cucnNwbGl0KCJcbiIsIDEpWy0xXQorICAgICAgICAgICAgaWYgIlxuIiBpbiBt
c2c6CisgICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF9saW5lID0gY3VycmVudF9saW5lCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfbGluZSArPSBj
dXJyZW50X2xpbmUKKworICAgICAgICAgICAgbXNnID0gc2VsZi5tYXJrdXAobXNnLCAqKm1hcmt1
cCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUo
bXNnKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAg
ICAgICAjIFNvbWUgZW52aXJvbm1lbnRzIGRvbid0IHN1cHBvcnQgcHJpbnRpbmcgZ2VuZXJhbCBV
bmljb2RlCisgICAgICAgICAgICAgICAgIyBzdHJpbmdzLCBkdWUgdG8gbWlzY29uZmlndXJhdGlv
biBvciBvdGhlcndpc2U7IGluIHRoYXQgY2FzZSwKKyAgICAgICAgICAgICAgICAjIHByaW50IHRo
ZSBzdHJpbmcgZXNjYXBlZCB0byBBU0NJSS4KKyAgICAgICAgICAgICAgICAjIFdoZW4gdGhlIFVu
aWNvZGUgc2l0dWF0aW9uIGltcHJvdmVzIHdlIHNob3VsZCBjb25zaWRlcgorICAgICAgICAgICAg
ICAgICMgbGV0dGluZyB0aGUgZXJyb3IgcHJvcGFnYXRlIGluc3RlYWQgb2YgbWFza2luZyBpdCAo
c2VlICM3NDc1CisgICAgICAgICAgICAgICAgIyBmb3Igb25lIGJyaWVmIGF0dGVtcHQpLgorICAg
ICAgICAgICAgICAgIG1zZyA9IG1zZy5lbmNvZGUoInVuaWNvZGUtZXNjYXBlIikuZGVjb2RlKCJh
c2NpaSIpCisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShtc2cpCisKKyAgICAgICAg
ICAgIGlmIGZsdXNoOgorICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQorCisgICAgZGVmIGxp
bmUoc2VsZiwgczogc3RyID0gIiIsICoqbWFya3VwOiBib29sKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLndyaXRlKHMsICoqbWFya3VwKQorICAgICAgICBzZWxmLndyaXRlKCJcbiIpCisKKyAgICBk
ZWYgZmx1c2goc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fZmlsZS5mbHVzaCgpCisKKyAg
ICBkZWYgX3dyaXRlX3NvdXJjZShzZWxmLCBsaW5lczogU2VxdWVuY2Vbc3RyXSwgaW5kZW50czog
U2VxdWVuY2Vbc3RyXSA9ICgpKSAtPiBOb25lOgorICAgICAgICAiIiJXcml0ZSBsaW5lcyBvZiBz
b3VyY2UgY29kZSBwb3NzaWJseSBoaWdobGlnaHRlZC4KKworICAgICAgICBLZWVwaW5nIHRoaXMg
cHJpdmF0ZSBmb3Igbm93IGJlY2F1c2UgdGhlIEFQSSBpcyBjbHVua3kuIFdlIHNob3VsZCBkaXNj
dXNzIGhvdworICAgICAgICB0byBldm9sdmUgdGhlIHRlcm1pbmFsIHdyaXRlciBzbyB3ZSBjYW4g
aGF2ZSBtb3JlIHByZWNpc2UgY29sb3Igc3VwcG9ydCwgZm9yIGV4YW1wbGUKKyAgICAgICAgYmVp
bmcgYWJsZSB0byB3cml0ZSBwYXJ0IG9mIGEgbGluZSBpbiBvbmUgY29sb3IgYW5kIHRoZSByZXN0
IGluIGFub3RoZXIsIGFuZCBzbyBvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGluZGVudHMg
YW5kIGxlbihpbmRlbnRzKSAhPSBsZW4obGluZXMpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigKKyAgICAgICAgICAgICAgICAiaW5kZW50cyBzaXplICh7fSkgc2hvdWxkIGhhdmUgc2Ft
ZSBzaXplIGFzIGxpbmVzICh7fSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgbGVuKGlu
ZGVudHMpLCBsZW4obGluZXMpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAg
ICAgICBpZiBub3QgaW5kZW50czoKKyAgICAgICAgICAgIGluZGVudHMgPSBbIiJdICogbGVuKGxp
bmVzKQorICAgICAgICBzb3VyY2UgPSAiXG4iLmpvaW4obGluZXMpCisgICAgICAgIG5ld19saW5l
cyA9IHNlbGYuX2hpZ2hsaWdodChzb3VyY2UpLnNwbGl0bGluZXMoKQorICAgICAgICBmb3IgaW5k
ZW50LCBuZXdfbGluZSBpbiB6aXAoaW5kZW50cywgbmV3X2xpbmVzKToKKyAgICAgICAgICAgIHNl
bGYubGluZShpbmRlbnQgKyBuZXdfbGluZSkKKworICAgIGRlZiBfaGlnaGxpZ2h0KHNlbGYsIHNv
dXJjZTogc3RyKSAtPiBzdHI6CisgICAgICAgICIiIkhpZ2hsaWdodCB0aGUgZ2l2ZW4gc291cmNl
IGNvZGUgaWYgd2UgaGF2ZSBtYXJrdXAgc3VwcG9ydC4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYu
aGFzbWFya3VwIG9yIG5vdCBzZWxmLmNvZGVfaGlnaGxpZ2h0OgorICAgICAgICAgICAgcmV0dXJu
IHNvdXJjZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIHB5Z21lbnRzLmZvcm1hdHRl
cnMudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsRm9ybWF0dGVyCisgICAgICAgICAgICBmcm9tIHB5
Z21lbnRzLmxleGVycy5weXRob24gaW1wb3J0IFB5dGhvbkxleGVyCisgICAgICAgICAgICBmcm9t
IHB5Z21lbnRzIGltcG9ydCBoaWdobGlnaHQKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgor
ICAgICAgICAgICAgcmV0dXJuIHNvdXJjZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGln
aGxpZ2h0ZWQgPSBoaWdobGlnaHQoCisgICAgICAgICAgICAgICAgc291cmNlLCBQeXRob25MZXhl
cigpLCBUZXJtaW5hbEZvcm1hdHRlcihiZz0iZGFyayIpCisgICAgICAgICAgICApICAjIHR5cGU6
IHN0cgorICAgICAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9faW8vd2N3aWR0aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L19pby93Y3dpZHRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZTVjN2JmNGQ4NjgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
X2lvL3djd2lkdGgucHkKQEAgLTAsMCArMSw1NSBAQAoraW1wb3J0IHVuaWNvZGVkYXRhCitmcm9t
IGZ1bmN0b29scyBpbXBvcnQgbHJ1X2NhY2hlCisKKworQGxydV9jYWNoZSgxMDApCitkZWYgd2N3
aWR0aChjOiBzdHIpIC0+IGludDoKKyAgICAiIiJEZXRlcm1pbmUgaG93IG1hbnkgY29sdW1ucyBh
cmUgbmVlZGVkIHRvIGRpc3BsYXkgYSBjaGFyYWN0ZXIgaW4gYSB0ZXJtaW5hbC4KKworICAgIFJl
dHVybnMgLTEgaWYgdGhlIGNoYXJhY3RlciBpcyBub3QgcHJpbnRhYmxlLgorICAgIFJldHVybnMg
MCwgMSBvciAyIGZvciBvdGhlciBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIG8gPSBvcmQoYykK
KworICAgICMgQVNDSUkgZmFzdCBwYXRoLgorICAgIGlmIDB4MjAgPD0gbyA8IDB4MDdGOgorICAg
ICAgICByZXR1cm4gMQorCisgICAgIyBTb21lIENmL1pwL1psIGNoYXJhY3RlcnMgd2hpY2ggc2hv
dWxkIGJlIHplcm8td2lkdGguCisgICAgaWYgKAorICAgICAgICBvID09IDB4MDAwMAorICAgICAg
ICBvciAweDIwMEIgPD0gbyA8PSAweDIwMEYKKyAgICAgICAgb3IgMHgyMDI4IDw9IG8gPD0gMHgy
MDJFCisgICAgICAgIG9yIDB4MjA2MCA8PSBvIDw9IDB4MjA2MworICAgICk6CisgICAgICAgIHJl
dHVybiAwCisKKyAgICBjYXRlZ29yeSA9IHVuaWNvZGVkYXRhLmNhdGVnb3J5KGMpCisKKyAgICAj
IENvbnRyb2wgY2hhcmFjdGVycy4KKyAgICBpZiBjYXRlZ29yeSA9PSAiQ2MiOgorICAgICAgICBy
ZXR1cm4gLTEKKworICAgICMgQ29tYmluaW5nIGNoYXJhY3RlcnMgd2l0aCB6ZXJvIHdpZHRoLgor
ICAgIGlmIGNhdGVnb3J5IGluICgiTWUiLCAiTW4iKToKKyAgICAgICAgcmV0dXJuIDAKKworICAg
ICMgRnVsbC9XaWRlIGVhc3QgYXNpYW4gY2hhcmFjdGVycy4KKyAgICBpZiB1bmljb2RlZGF0YS5l
YXN0X2FzaWFuX3dpZHRoKGMpIGluICgiRiIsICJXIik6CisgICAgICAgIHJldHVybiAyCisKKyAg
ICByZXR1cm4gMQorCisKK2RlZiB3Y3N3aWR0aChzOiBzdHIpIC0+IGludDoKKyAgICAiIiJEZXRl
cm1pbmUgaG93IG1hbnkgY29sdW1ucyBhcmUgbmVlZGVkIHRvIGRpc3BsYXkgYSBzdHJpbmcgaW4g
YSB0ZXJtaW5hbC4KKworICAgIFJldHVybnMgLTEgaWYgdGhlIHN0cmluZyBjb250YWlucyBub24t
cHJpbnRhYmxlIGNoYXJhY3RlcnMuCisgICAgIiIiCisgICAgd2lkdGggPSAwCisgICAgZm9yIGMg
aW4gdW5pY29kZWRhdGEubm9ybWFsaXplKCJORkMiLCBzKToKKyAgICAgICAgd2MgPSB3Y3dpZHRo
KGMpCisgICAgICAgIGlmIHdjIDwgMDoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICB3
aWR0aCArPSB3YworICAgIHJldHVybiB3aWR0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvYXNzZXJ0aW9uL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
YXNzZXJ0aW9uL19faW5pdF9fLnB5CmluZGV4IDJjOWE4ODkwYzlhZi4uMDYwNTdkMGM0YzFkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL19faW5pdF9fLnB5CkBAIC0x
LDE2ICsxLDI1IEBACi0iIiIKLXN1cHBvcnQgZm9yIHByZXNlbnRpbmcgZGV0YWlsZWQgaW5mb3Jt
YXRpb24gaW4gZmFpbGluZyBhc3NlcnRpb25zLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisiIiJTdXBwb3J0IGZv
ciBwcmVzZW50aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uIGluIGZhaWxpbmcgYXNzZXJ0aW9ucy4i
IiIKIGltcG9ydCBzeXMKLWltcG9ydCBzaXgKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20g
dHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5
cGluZyBpbXBvcnQgT3B0aW9uYWwKIAotZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgdXRp
bAogZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgcmV3cml0ZQogZnJvbSBfcHl0ZXN0LmFz
c2VydGlvbiBpbXBvcnQgdHJ1bmNhdGUKK2Zyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHV0
aWwKK2Zyb20gX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQgYXNzZXJ0c3RhdGVfa2V5
Citmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBs
Citmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0
ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSBfcHl0
ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIp
OgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3Jv
dXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImRlYnVnY29uZmlnIikKICAgICBncm91cC5hZGRvcHRpb24o
CiAgICAgICAgICItLWFzc2VydCIsCkBAIC0xOSwxNSArMjgsMjMgQEAgZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyKToKICAgICAgICAgY2hvaWNlcz0oInJld3JpdGUiLCAicGxhaW4iKSwKICAg
ICAgICAgZGVmYXVsdD0icmV3cml0ZSIsCiAgICAgICAgIG1ldGF2YXI9Ik1PREUiLAotICAgICAg
ICBoZWxwPSIiIkNvbnRyb2wgYXNzZXJ0aW9uIGRlYnVnZ2luZyB0b29scy4gICdwbGFpbicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtcyBubyBhc3NlcnRpb24gZGVidWdnaW5n
LiAgJ3Jld3JpdGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoZSBkZWZhdWx0KSBy
ZXdyaXRlcyBhc3NlcnQgc3RhdGVtZW50cyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3QgbW9kdWxlcyBvbiBpbXBvcnQgdG8gcHJvdmlkZSBhc3NlcnQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHByZXNzaW9uIGluZm9ybWF0aW9uLiIiIiwKKyAgICAgICAgaGVscD0o
CisgICAgICAgICAgICAiQ29udHJvbCBhc3NlcnRpb24gZGVidWdnaW5nIHRvb2xzLlxuIgorICAg
ICAgICAgICAgIidwbGFpbicgcGVyZm9ybXMgbm8gYXNzZXJ0aW9uIGRlYnVnZ2luZy5cbiIKKyAg
ICAgICAgICAgICIncmV3cml0ZScgKHRoZSBkZWZhdWx0KSByZXdyaXRlcyBhc3NlcnQgc3RhdGVt
ZW50cyBpbiB0ZXN0IG1vZHVsZXMiCisgICAgICAgICAgICAiIG9uIGltcG9ydCB0byBwcm92aWRl
IGFzc2VydCBleHByZXNzaW9uIGluZm9ybWF0aW9uLiIKKyAgICAgICAgKSwKKyAgICApCisgICAg
cGFyc2VyLmFkZGluaSgKKyAgICAgICAgImVuYWJsZV9hc3NlcnRpb25fcGFzc19ob29rIiwKKyAg
ICAgICAgdHlwZT0iYm9vbCIsCisgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9
IkVuYWJsZXMgdGhlIHB5dGVzdF9hc3NlcnRpb25fcGFzcyBob29rLiIKKyAgICAgICAgIk1ha2Ug
c3VyZSB0byBkZWxldGUgYW55IHByZXZpb3VzbHkgZ2VuZXJhdGVkIHB5YyBjYWNoZSBmaWxlcy4i
LAogICAgICkKIAogCi1kZWYgcmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoKm5hbWVzKToKK2RlZiBy
ZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSgqbmFtZXM6IHN0cikgLT4gTm9uZToKICAgICAiIiJSZWdp
c3RlciBvbmUgb3IgbW9yZSBtb2R1bGUgbmFtZXMgdG8gYmUgcmV3cml0dGVuIG9uIGltcG9ydC4K
IAogICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBtYWtlIHN1cmUgdGhhdCB0aGlzIG1vZHVsZSBvciBh
bGwgbW9kdWxlcyBpbnNpZGUKQEAgLTM2LDUwICs1Myw0OCBAQCBkZWYgcmVnaXN0ZXJfYXNzZXJ0
X3Jld3JpdGUoKm5hbWVzKToKICAgICBhY3R1YWxseSBpbXBvcnRlZCwgdXN1YWxseSBpbiB5b3Vy
IF9faW5pdF9fLnB5IGlmIHlvdSBhcmUgYSBwbHVnaW4KICAgICB1c2luZyBhIHBhY2thZ2UuCiAK
LSAgICA6cmFpc2UgVHlwZUVycm9yOiBpZiB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWVzIGFyZSBub3Qg
c3RyaW5ncy4KKyAgICA6cmFpc2VzIFR5cGVFcnJvcjogSWYgdGhlIGdpdmVuIG1vZHVsZSBuYW1l
cyBhcmUgbm90IHN0cmluZ3MuCiAgICAgIiIiCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6Ci0gICAgICAgICAgICBtc2cgPSAiZXhw
ZWN0ZWQgbW9kdWxlIG5hbWVzIGFzICphcmdzLCBnb3QgezB9IGluc3RlYWQiCisgICAgICAgICAg
ICBtc2cgPSAiZXhwZWN0ZWQgbW9kdWxlIG5hbWVzIGFzICphcmdzLCBnb3QgezB9IGluc3RlYWQi
ICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJv
cihtc2cuZm9ybWF0KHJlcHIobmFtZXMpKSkKICAgICBmb3IgaG9vayBpbiBzeXMubWV0YV9wYXRo
OgogICAgICAgICBpZiBpc2luc3RhbmNlKGhvb2ssIHJld3JpdGUuQXNzZXJ0aW9uUmV3cml0aW5n
SG9vayk6CiAgICAgICAgICAgICBpbXBvcnRob29rID0gaG9vawogICAgICAgICAgICAgYnJlYWsK
ICAgICBlbHNlOgotICAgICAgICBpbXBvcnRob29rID0gRHVtbXlSZXdyaXRlSG9vaygpCisgICAg
ICAgICMgVE9ETyh0eXBpbmcpOiBBZGQgYSBwcm90b2NvbCBmb3IgbWFya19yZXdyaXRlKCkgYW5k
IHVzZSBpdAorICAgICAgICAjIGZvciBpbXBvcnRob29rIGFuZCBmb3IgUHl0ZXN0UGx1Z2luTWFu
YWdlci5yZXdyaXRlX2hvb2suCisgICAgICAgIGltcG9ydGhvb2sgPSBEdW1teVJld3JpdGVIb29r
KCkgICMgdHlwZTogaWdub3JlCiAgICAgaW1wb3J0aG9vay5tYXJrX3Jld3JpdGUoKm5hbWVzKQog
CiAKLWNsYXNzIER1bW15UmV3cml0ZUhvb2sob2JqZWN0KToKK2NsYXNzIER1bW15UmV3cml0ZUhv
b2s6CiAgICAgIiIiQSBuby1vcCBpbXBvcnQgaG9vayBmb3Igd2hlbiByZXdyaXRpbmcgaXMgZGlz
YWJsZWQuIiIiCiAKLSAgICBkZWYgbWFya19yZXdyaXRlKHNlbGYsICpuYW1lcyk6CisgICAgZGVm
IG1hcmtfcmV3cml0ZShzZWxmLCAqbmFtZXM6IHN0cikgLT4gTm9uZToKICAgICAgICAgcGFzcwog
CiAKLWNsYXNzIEFzc2VydGlvblN0YXRlKG9iamVjdCk6CitjbGFzcyBBc3NlcnRpb25TdGF0ZToK
ICAgICAiIiJTdGF0ZSBmb3IgdGhlIGFzc2VydGlvbiBwbHVnaW4uIiIiCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgY29uZmlnLCBtb2RlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmln
OiBDb25maWcsIG1vZGUpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAg
ICAgc2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5yb290LmdldCgiYXNzZXJ0aW9uIikKLSAgICAg
ICAgc2VsZi5ob29rID0gTm9uZQorICAgICAgICBzZWxmLmhvb2sgPSBOb25lICAjIHR5cGU6IE9w
dGlvbmFsW3Jld3JpdGUuQXNzZXJ0aW9uUmV3cml0aW5nSG9va10KIAogCi1kZWYgaW5zdGFsbF9p
bXBvcnRob29rKGNvbmZpZyk6CitkZWYgaW5zdGFsbF9pbXBvcnRob29rKGNvbmZpZzogQ29uZmln
KSAtPiByZXdyaXRlLkFzc2VydGlvblJld3JpdGluZ0hvb2s6CiAgICAgIiIiVHJ5IHRvIGluc3Rh
bGwgdGhlIHJld3JpdGUgaG9vaywgcmFpc2UgU3lzdGVtRXJyb3IgaWYgaXQgZmFpbHMuIiIiCi0g
ICAgIyBKeXRob24gaGFzIGFuIEFTVCBidWcgdGhhdCBtYWtlIHRoZSBhc3NlcnRpb24gcmV3cml0
aW5nIGhvb2sgbWFsZnVuY3Rpb24uCi0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImph
dmEiKToKLSAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoInJld3JpdGUgbm90IHN1cHBvcnRlZCIp
Ci0KLSAgICBjb25maWcuX2Fzc2VydHN0YXRlID0gQXNzZXJ0aW9uU3RhdGUoY29uZmlnLCAicmV3
cml0ZSIpCi0gICAgY29uZmlnLl9hc3NlcnRzdGF0ZS5ob29rID0gaG9vayA9IHJld3JpdGUuQXNz
ZXJ0aW9uUmV3cml0aW5nSG9vayhjb25maWcpCisgICAgY29uZmlnLl9zdG9yZVthc3NlcnRzdGF0
ZV9rZXldID0gQXNzZXJ0aW9uU3RhdGUoY29uZmlnLCAicmV3cml0ZSIpCisgICAgY29uZmlnLl9z
dG9yZVthc3NlcnRzdGF0ZV9rZXldLmhvb2sgPSBob29rID0gcmV3cml0ZS5Bc3NlcnRpb25SZXdy
aXRpbmdIb29rKGNvbmZpZykKICAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBob29rKQotICAg
IGNvbmZpZy5fYXNzZXJ0c3RhdGUudHJhY2UoImluc3RhbGxlZCByZXdyaXRlIGltcG9ydCBob29r
IikKKyAgICBjb25maWcuX3N0b3JlW2Fzc2VydHN0YXRlX2tleV0udHJhY2UoImluc3RhbGxlZCBy
ZXdyaXRlIGltcG9ydCBob29rIikKIAotICAgIGRlZiB1bmRvKCk6Ci0gICAgICAgIGhvb2sgPSBj
b25maWcuX2Fzc2VydHN0YXRlLmhvb2sKKyAgICBkZWYgdW5kbygpIC0+IE5vbmU6CisgICAgICAg
IGhvb2sgPSBjb25maWcuX3N0b3JlW2Fzc2VydHN0YXRlX2tleV0uaG9vawogICAgICAgICBpZiBo
b29rIGlzIG5vdCBOb25lIGFuZCBob29rIGluIHN5cy5tZXRhX3BhdGg6CiAgICAgICAgICAgICBz
eXMubWV0YV9wYXRoLnJlbW92ZShob29rKQogCkBAIC04NywyNyArMTAyLDI5IEBAIGRlZiBpbnN0
YWxsX2ltcG9ydGhvb2soY29uZmlnKToKICAgICByZXR1cm4gaG9vawogCiAKLWRlZiBweXRlc3Rf
Y29sbGVjdGlvbihzZXNzaW9uKToKLSAgICAjIHRoaXMgaG9vayBpcyBvbmx5IGNhbGxlZCB3aGVu
IHRlc3QgbW9kdWxlcyBhcmUgY29sbGVjdGVkCitkZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lv
bjogIlNlc3Npb24iKSAtPiBOb25lOgorICAgICMgVGhpcyBob29rIGlzIG9ubHkgY2FsbGVkIHdo
ZW4gdGVzdCBtb2R1bGVzIGFyZSBjb2xsZWN0ZWQKICAgICAjIHNvIGZvciBleGFtcGxlIG5vdCBp
biB0aGUgbWFzdGVyIHByb2Nlc3Mgb2YgcHl0ZXN0LXhkaXN0Ci0gICAgIyAod2hpY2ggZG9lcyBu
b3QgY29sbGVjdCB0ZXN0IG1vZHVsZXMpCi0gICAgYXNzZXJ0c3RhdGUgPSBnZXRhdHRyKHNlc3Np
b24uY29uZmlnLCAiX2Fzc2VydHN0YXRlIiwgTm9uZSkKKyAgICAjICh3aGljaCBkb2VzIG5vdCBj
b2xsZWN0IHRlc3QgbW9kdWxlcykuCisgICAgYXNzZXJ0c3RhdGUgPSBzZXNzaW9uLmNvbmZpZy5f
c3RvcmUuZ2V0KGFzc2VydHN0YXRlX2tleSwgTm9uZSkKICAgICBpZiBhc3NlcnRzdGF0ZToKICAg
ICAgICAgaWYgYXNzZXJ0c3RhdGUuaG9vayBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2Vy
dHN0YXRlLmhvb2suc2V0X3Nlc3Npb24oc2Vzc2lvbikKIAogCi1kZWYgcHl0ZXN0X3J1bnRlc3Rf
c2V0dXAoaXRlbSk6Ci0gICAgIiIiU2V0dXAgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUg
aG9vaworQGhvb2tpbXBsKHRyeWZpcnN0PVRydWUsIGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0
ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbTogSXRlbSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUs
IE5vbmVdOgorICAgICIiIlNldHVwIHRoZSBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlIGFuZCBw
eXRlc3RfYXNzZXJ0aW9uX3Bhc3MgaG9va3MuCiAKLSAgICBUaGUgbmV3aW50ZXJwcmV0IGFuZCBy
ZXdyaXRlIG1vZHVsZXMgd2lsbCB1c2UgdXRpbC5fcmVwcmNvbXBhcmUgaWYKLSAgICBpdCBleGlz
dHMgdG8gdXNlIGN1c3RvbSByZXBvcnRpbmcgdmlhIHRoZQotICAgIHB5dGVzdF9hc3NlcnRyZXBy
X2NvbXBhcmUgaG9vay4gIFRoaXMgc2V0cyB1cCB0aGlzIGN1c3RvbQorICAgIFRoZSByZXdyaXRl
IG1vZHVsZSB3aWxsIHVzZSB1dGlsLl9yZXByY29tcGFyZSBpZiBpdCBleGlzdHMgdG8gdXNlIGN1
c3RvbQorICAgIHJlcG9ydGluZyB2aWEgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9v
ay4gIFRoaXMgc2V0cyB1cCB0aGlzIGN1c3RvbQogICAgIGNvbXBhcmlzb24gZm9yIHRoZSB0ZXN0
LgogICAgICIiIgogCi0gICAgZGVmIGNhbGxiaW5yZXByKG9wLCBsZWZ0LCByaWdodCk6Ci0gICAg
ICAgICIiIkNhbGwgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vayBhbmQgcHJlcGFy
ZSB0aGUgcmVzdWx0CisgICAgaWhvb2sgPSBpdGVtLmlob29rCisKKyAgICBkZWYgY2FsbGJpbnJl
cHIob3AsIGxlZnQ6IG9iamVjdCwgcmlnaHQ6IG9iamVjdCkgLT4gT3B0aW9uYWxbc3RyXToKKyAg
ICAgICAgIiIiQ2FsbCB0aGUgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSBob29rIGFuZCBwcmVw
YXJlIHRoZSByZXN1bHQuCiAKICAgICAgICAgVGhpcyB1c2VzIHRoZSBmaXJzdCByZXN1bHQgZnJv
bSB0aGUgaG9vayBhbmQgdGhlbiBlbnN1cmVzIHRoZQogICAgICAgICBmb2xsb3dpbmc6CkBAIC0x
MjEsMzEgKzEzOCw0MiBAQCBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CiAgICAgICAg
IFRoZSByZXN1bHQgY2FuIGJlIGZvcm1hdHRlZCBieSB1dGlsLmZvcm1hdF9leHBsYW5hdGlvbigp
IGZvcgogICAgICAgICBwcmV0dHkgcHJpbnRpbmcuCiAgICAgICAgICIiIgotICAgICAgICBob29r
X3Jlc3VsdCA9IGl0ZW0uaWhvb2sucHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSgKKyAgICAgICAg
aG9va19yZXN1bHQgPSBpaG9vay5weXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlKAogICAgICAgICAg
ICAgY29uZmlnPWl0ZW0uY29uZmlnLCBvcD1vcCwgbGVmdD1sZWZ0LCByaWdodD1yaWdodAogICAg
ICAgICApCiAgICAgICAgIGZvciBuZXdfZXhwbCBpbiBob29rX3Jlc3VsdDoKICAgICAgICAgICAg
IGlmIG5ld19leHBsOgogICAgICAgICAgICAgICAgIG5ld19leHBsID0gdHJ1bmNhdGUudHJ1bmNh
dGVfaWZfcmVxdWlyZWQobmV3X2V4cGwsIGl0ZW0pCiAgICAgICAgICAgICAgICAgbmV3X2V4cGwg
PSBbbGluZS5yZXBsYWNlKCJcbiIsICJcXG4iKSBmb3IgbGluZSBpbiBuZXdfZXhwbF0KLSAgICAg
ICAgICAgICAgICByZXMgPSBzaXgudGV4dF90eXBlKCJcbn4iKS5qb2luKG5ld19leHBsKQorICAg
ICAgICAgICAgICAgIHJlcyA9ICJcbn4iLmpvaW4obmV3X2V4cGwpCiAgICAgICAgICAgICAgICAg
aWYgaXRlbS5jb25maWcuZ2V0dmFsdWUoImFzc2VydG1vZGUiKSA9PSAicmV3cml0ZSI6CiAgICAg
ICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKCIlIiwgIiUlIikKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzCisgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBzYXZlZF9hc3NlcnRf
aG9va3MgPSB1dGlsLl9yZXByY29tcGFyZSwgdXRpbC5fYXNzZXJ0aW9uX3Bhc3MKICAgICB1dGls
Ll9yZXByY29tcGFyZSA9IGNhbGxiaW5yZXByCiAKKyAgICBpZiBpaG9vay5weXRlc3RfYXNzZXJ0
aW9uX3Bhc3MuZ2V0X2hvb2tpbXBscygpOgorCisgICAgICAgIGRlZiBjYWxsX2Fzc2VydGlvbl9w
YXNzX2hvb2sobGluZW5vOiBpbnQsIG9yaWc6IHN0ciwgZXhwbDogc3RyKSAtPiBOb25lOgorICAg
ICAgICAgICAgaWhvb2sucHl0ZXN0X2Fzc2VydGlvbl9wYXNzKGl0ZW09aXRlbSwgbGluZW5vPWxp
bmVubywgb3JpZz1vcmlnLCBleHBsPWV4cGwpCisKKyAgICAgICAgdXRpbC5fYXNzZXJ0aW9uX3Bh
c3MgPSBjYWxsX2Fzc2VydGlvbl9wYXNzX2hvb2sKKworICAgIHlpZWxkCiAKLWRlZiBweXRlc3Rf
cnVudGVzdF90ZWFyZG93bihpdGVtKToKLSAgICB1dGlsLl9yZXByY29tcGFyZSA9IE5vbmUKKyAg
ICB1dGlsLl9yZXByY29tcGFyZSwgdXRpbC5fYXNzZXJ0aW9uX3Bhc3MgPSBzYXZlZF9hc3NlcnRf
aG9va3MKIAogCi1kZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbik6Ci0gICAgYXNzZXJ0
c3RhdGUgPSBnZXRhdHRyKHNlc3Npb24uY29uZmlnLCAiX2Fzc2VydHN0YXRlIiwgTm9uZSkKK2Rl
ZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uOiAiU2Vzc2lvbiIpIC0+IE5vbmU6CisgICAg
YXNzZXJ0c3RhdGUgPSBzZXNzaW9uLmNvbmZpZy5fc3RvcmUuZ2V0KGFzc2VydHN0YXRlX2tleSwg
Tm9uZSkKICAgICBpZiBhc3NlcnRzdGF0ZToKICAgICAgICAgaWYgYXNzZXJ0c3RhdGUuaG9vayBp
cyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydHN0YXRlLmhvb2suc2V0X3Nlc3Npb24oTm9u
ZSkKIAogCi0jIEV4cG9zZSB0aGlzIHBsdWdpbidzIGltcGxlbWVudGF0aW9uIGZvciB0aGUgcHl0
ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSBob29rCi1weXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlID0g
dXRpbC5hc3NlcnRyZXByX2NvbXBhcmUKK2RlZiBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlKAor
ICAgIGNvbmZpZzogQ29uZmlnLCBvcDogc3RyLCBsZWZ0OiBBbnksIHJpZ2h0OiBBbnkKKykgLT4g
T3B0aW9uYWxbTGlzdFtzdHJdXToKKyAgICByZXR1cm4gdXRpbC5hc3NlcnRyZXByX2NvbXBhcmUo
Y29uZmlnPWNvbmZpZywgb3A9b3AsIGxlZnQ9bGVmdCwgcmlnaHQ9cmlnaHQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vcmV3cml0ZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi9yZXdyaXRlLnB5CmluZGV4IGVjZWVkNjExZmZiMS4u
NWZmNTc4MjQ1NzllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRp
b24vcmV3cml0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vcmV3
cml0ZS5weQpAQCAtMSwxMDYgKzEsMTQwIEBACi0iIiJSZXdyaXRlIGFzc2VydGlvbiBBU1QgdG8g
cHJvZHVjZSBuaWNlIGVycm9yIG1lc3NhZ2VzIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFi
c29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisiIiJSZXdyaXRlIGFzc2Vy
dGlvbiBBU1QgdG8gcHJvZHVjZSBuaWNlIGVycm9yIG1lc3NhZ2VzLiIiIgogaW1wb3J0IGFzdAog
aW1wb3J0IGVycm5vCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgaW1wb3J0bGliLmFiYworaW1w
b3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAoraW1wb3J0IGlv
CiBpbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgaW1wCiBpbXBvcnQgbWFyc2hhbAogaW1wb3J0IG9z
Ci1pbXBvcnQgcmUKLWltcG9ydCBzaXgKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKK2ltcG9y
dCB0b2tlbml6ZQogaW1wb3J0IHR5cGVzCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgSU8KK2Zyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBp
bXBvcnQgU2V0Citmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBV
bmlvbgogCi1pbXBvcnQgYXRvbWljd3JpdGVzCiBpbXBvcnQgcHkKIAorZnJvbSBfcHl0ZXN0Ll9p
by5zYWZlcmVwciBpbXBvcnQgc2FmZXJlcHIKK2Zyb20gX3B5dGVzdC5fdmVyc2lvbiBpbXBvcnQg
dmVyc2lvbgogZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgdXRpbAorZnJvbSBfcHl0ZXN0
LmFzc2VydGlvbi51dGlsIGltcG9ydCAoICAjIG5vcWE6IEY0MDEKKyAgICBmb3JtYXRfZXhwbGFu
YXRpb24gYXMgX2Zvcm1hdF9leHBsYW5hdGlvbiwKKykKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1w
b3J0IGZzcGF0aAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJv
bSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQg
U2Vzc2lvbgorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGZubWF0Y2hfZXgKK2Zyb20gX3B5
dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUHVy
ZVBhdGgKK2Zyb20gX3B5dGVzdC5zdG9yZSBpbXBvcnQgU3RvcmVLZXkKIAoraWYgVFlQRV9DSEVD
S0lORzoKKyAgICBmcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGltcG9ydCBBc3NlcnRpb25TdGF0ZSAg
IyBub3FhOiBGNDAxCiAKLSMgcHl0ZXN0IGNhY2hlcyByZXdyaXR0ZW4gcHljcyBpbiBfX3B5Y2Fj
aGVfXy4KLWlmIGhhc2F0dHIoaW1wLCAiZ2V0X3RhZyIpOgotICAgIFBZVEVTVF9UQUcgPSBpbXAu
Z2V0X3RhZygpICsgIi1QWVRFU1QiCi1lbHNlOgotICAgIGlmIGhhc2F0dHIoc3lzLCAicHlweV92
ZXJzaW9uX2luZm8iKToKLSAgICAgICAgaW1wbCA9ICJweXB5IgotICAgIGVsaWYgc3lzLnBsYXRm
b3JtID09ICJqYXZhIjoKLSAgICAgICAgaW1wbCA9ICJqeXRob24iCi0gICAgZWxzZToKLSAgICAg
ICAgaW1wbCA9ICJjcHl0aG9uIgotICAgIHZlciA9IHN5cy52ZXJzaW9uX2luZm8KLSAgICBQWVRF
U1RfVEFHID0gIiVzLSVzJXMtUFlURVNUIiAlIChpbXBsLCB2ZXJbMF0sIHZlclsxXSkKLSAgICBk
ZWwgdmVyLCBpbXBsCi0KLVBZQ19FWFQgPSAiLnB5IiArIChfX2RlYnVnX18gYW5kICJjIiBvciAi
byIpCi1QWUNfVEFJTCA9ICIuIiArIFBZVEVTVF9UQUcgKyBQWUNfRVhUCiAKLUFTQ0lJX0lTX0RF
RkFVTFRfRU5DT0RJTkcgPSBzeXMudmVyc2lvbl9pbmZvWzBdIDwgMworYXNzZXJ0c3RhdGVfa2V5
ID0gU3RvcmVLZXlbIkFzc2VydGlvblN0YXRlIl0oKQogCi1pZiBzeXMudmVyc2lvbl9pbmZvID49
ICgzLCA1KToKLSAgICBhc3RfQ2FsbCA9IGFzdC5DYWxsCi1lbHNlOgogCi0gICAgZGVmIGFzdF9D
YWxsKGEsIGIsIGMpOgotICAgICAgICByZXR1cm4gYXN0LkNhbGwoYSwgYiwgYywgTm9uZSwgTm9u
ZSkKKyMgcHl0ZXN0IGNhY2hlcyByZXdyaXR0ZW4gcHljcyBpbiBweWNhY2hlIGRpcnMKK1BZVEVT
VF9UQUcgPSAie30tcHl0ZXN0LXt9Ii5mb3JtYXQoc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3Rh
ZywgdmVyc2lvbikKK1BZQ19FWFQgPSAiLnB5IiArIChfX2RlYnVnX18gYW5kICJjIiBvciAibyIp
CitQWUNfVEFJTCA9ICIuIiArIFBZVEVTVF9UQUcgKyBQWUNfRVhUCiAKIAotY2xhc3MgQXNzZXJ0
aW9uUmV3cml0aW5nSG9vayhvYmplY3QpOgotICAgICIiIlBFUDMwMiBJbXBvcnQgaG9vayB3aGlj
aCByZXdyaXRlcyBhc3NlcnRzLiIiIgorY2xhc3MgQXNzZXJ0aW9uUmV3cml0aW5nSG9vayhpbXBv
cnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLCBpbXBvcnRsaWIuYWJjLkxvYWRlcik6CisgICAgIiIi
UEVQMzAyL1BFUDQ1MSBpbXBvcnQgaG9vayB3aGljaCByZXdyaXRlcyBhc3NlcnRzLiIiIgogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwotICAg
ICAgICBzZWxmLmZucGF0cyA9IGNvbmZpZy5nZXRpbmkoInB5dGhvbl9maWxlcyIpCi0gICAgICAg
IHNlbGYuc2Vzc2lvbiA9IE5vbmUKLSAgICAgICAgc2VsZi5tb2R1bGVzID0ge30KLSAgICAgICAg
c2VsZi5fcmV3cml0dGVuX25hbWVzID0gc2V0KCkKLSAgICAgICAgc2VsZi5fcmVnaXN0ZXJfd2l0
aF9wa2dfcmVzb3VyY2VzKCkKLSAgICAgICAgc2VsZi5fbXVzdF9yZXdyaXRlID0gc2V0KCkKLQot
ICAgIGRlZiBzZXRfc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgc2VsZi5mbnBhdHMgPSBjb25maWcuZ2V0aW5pKCJweXRob25fZmlsZXMiKQorICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZm5wYXRzID0gWyJ0ZXN0Xyou
cHkiLCAiKl90ZXN0LnB5Il0KKyAgICAgICAgc2VsZi5zZXNzaW9uID0gTm9uZSAgIyB0eXBlOiBP
cHRpb25hbFtTZXNzaW9uXQorICAgICAgICBzZWxmLl9yZXdyaXR0ZW5fbmFtZXMgPSBzZXQoKSAg
IyB0eXBlOiBTZXRbc3RyXQorICAgICAgICBzZWxmLl9tdXN0X3Jld3JpdGUgPSBzZXQoKSAgIyB0
eXBlOiBTZXRbc3RyXQorICAgICAgICAjIGZsYWcgdG8gZ3VhcmQgYWdhaW5zdCB0cnlpbmcgdG8g
cmV3cml0ZSBhIHB5YyBmaWxlIHdoaWxlIHdlIGFyZSBhbHJlYWR5IHdyaXRpbmcgYW5vdGhlciBw
eWMgZmlsZSwKKyAgICAgICAgIyB3aGljaCBtaWdodCByZXN1bHQgaW4gaW5maW5pdGUgcmVjdXJz
aW9uICgjMzUwNikKKyAgICAgICAgc2VsZi5fd3JpdGluZ19weWMgPSBGYWxzZQorICAgICAgICBz
ZWxmLl9iYXNlbmFtZXNfdG9fY2hlY2tfcmV3cml0ZSA9IHsiY29uZnRlc3QifQorICAgICAgICBz
ZWxmLl9tYXJrZWRfZm9yX3Jld3JpdGVfY2FjaGUgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgYm9v
bF0KKyAgICAgICAgc2VsZi5fc2Vzc2lvbl9wYXRoc19jaGVja2VkID0gRmFsc2UKKworICAgIGRl
ZiBzZXRfc2Vzc2lvbihzZWxmLCBzZXNzaW9uOiBPcHRpb25hbFtTZXNzaW9uXSkgLT4gTm9uZToK
ICAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgotCi0gICAgZGVmIGZpbmRfbW9kdWxlKHNl
bGYsIG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgIHN0YXRlID0gc2VsZi5jb25maWcuX2Fzc2Vy
dHN0YXRlCisgICAgICAgIHNlbGYuX3Nlc3Npb25fcGF0aHNfY2hlY2tlZCA9IEZhbHNlCisKKyAg
ICAjIEluZGlyZWN0aW9uIHNvIHdlIGNhbiBtb2NrIGNhbGxzIHRvIGZpbmRfc3BlYyBvcmlnaW5h
dGVkIGZyb20gdGhlIGhvb2sgZHVyaW5nIHRlc3RpbmcKKyAgICBfZmluZF9zcGVjID0gaW1wb3J0
bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYworCisgICAgZGVmIGZpbmRfc3BlYygK
KyAgICAgICAgc2VsZiwKKyAgICAgICAgbmFtZTogc3RyLAorICAgICAgICBwYXRoOiBPcHRpb25h
bFtTZXF1ZW5jZVtVbmlvbltzdHIsIGJ5dGVzXV1dID0gTm9uZSwKKyAgICAgICAgdGFyZ2V0OiBP
cHRpb25hbFt0eXBlcy5Nb2R1bGVUeXBlXSA9IE5vbmUsCisgICAgKSAtPiBPcHRpb25hbFtpbXBv
cnRsaWIubWFjaGluZXJ5Lk1vZHVsZVNwZWNdOgorICAgICAgICBpZiBzZWxmLl93cml0aW5nX3B5
YzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHN0YXRlID0gc2VsZi5jb25maWcu
X3N0b3JlW2Fzc2VydHN0YXRlX2tleV0KKyAgICAgICAgaWYgc2VsZi5fZWFybHlfcmV3cml0ZV9i
YWlsb3V0KG5hbWUsIHN0YXRlKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHN0
YXRlLnRyYWNlKCJmaW5kX21vZHVsZSBjYWxsZWQgZm9yOiAlcyIgJSBuYW1lKQotICAgICAgICBu
YW1lcyA9IG5hbWUucnNwbGl0KCIuIiwgMSkKLSAgICAgICAgbGFzdG5hbWUgPSBuYW1lc1stMV0K
LSAgICAgICAgcHRoID0gTm9uZQotICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgIyBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjMsIHBhdGggaXMgYSBfTmFtZXNwYWNlUGF0
aCgpLCB3aGljaAotICAgICAgICAgICAgIyBjYXVzZXMgcHJvYmxlbXMgaWYgbm90IGNvbnZlcnRl
ZCB0byBsaXN0LgotICAgICAgICAgICAgcGF0aCA9IGxpc3QocGF0aCkKLSAgICAgICAgICAgIGlm
IGxlbihwYXRoKSA9PSAxOgotICAgICAgICAgICAgICAgIHB0aCA9IHBhdGhbMF0KLSAgICAgICAg
aWYgcHRoIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmQsIGZu
LCBkZXNjID0gaW1wLmZpbmRfbW9kdWxlKGxhc3RuYW1lLCBwYXRoKQotICAgICAgICAgICAgZXhj
ZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAg
ICBpZiBmZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBmZC5jbG9zZSgpCi0gICAgICAg
ICAgICB0cCA9IGRlc2NbMl0KLSAgICAgICAgICAgIGlmIHRwID09IGltcC5QWV9DT01QSUxFRDoK
LSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGltcCwgInNvdXJjZV9mcm9tX2NhY2hlIik6Ci0g
ICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gaW1w
LnNvdXJjZV9mcm9tX2NhY2hlKGZuKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIDMgZG9lc24ndCBsaWtlIG9y
cGhhbmVkIGJ1dCBzdGlsbC1pbXBvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIC5w
eWMgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGZuWzotMV0KLSAgICAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmbiA9IGZuWzotMV0KLSAgICAgICAg
ICAgIGVsaWYgdHAgIT0gaW1wLlBZX1NPVVJDRToKLSAgICAgICAgICAgICAgICAjIERvbid0IGtu
b3cgd2hhdCB0aGlzIGlzLgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
IyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBteXB5IGlzIGNvbmZ1c2VkIGFib3V0IHRoZSBgc2VsZmAg
YmluZGluZyBoZXJlLgorICAgICAgICBzcGVjID0gc2VsZi5fZmluZF9zcGVjKG5hbWUsIHBhdGgp
ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICBpZiAoCisgICAgICAgICAgICAjIHRoZSBpbXBvcnQg
bWFjaGluZXJ5IGNvdWxkIG5vdCBmaW5kIGEgZmlsZSB0byBpbXBvcnQKKyAgICAgICAgICAgIHNw
ZWMgaXMgTm9uZQorICAgICAgICAgICAgIyB0aGlzIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UgKHdp
dGhvdXQgYF9faW5pdF9fLnB5YCkKKyAgICAgICAgICAgICMgdGhlcmUncyBub3RoaW5nIHRvIHJl
d3JpdGUgdGhlcmUKKyAgICAgICAgICAgICMgcHl0aG9uMy41IC0gcHl0aG9uMy42OiBgbmFtZXNw
YWNlYAorICAgICAgICAgICAgIyBweXRob24zLjcrOiBgTm9uZWAKKyAgICAgICAgICAgIG9yIHNw
ZWMub3JpZ2luID09ICJuYW1lc3BhY2UiCisgICAgICAgICAgICBvciBzcGVjLm9yaWdpbiBpcyBO
b25lCisgICAgICAgICAgICAjIHdlIGNhbiBvbmx5IHJld3JpdGUgc291cmNlIGZpbGVzCisgICAg
ICAgICAgICBvciBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLm1hY2hpbmVy
eS5Tb3VyY2VGaWxlTG9hZGVyKQorICAgICAgICAgICAgIyBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4
aXN0LCB3ZSBjYW4ndCByZXdyaXRlIGl0CisgICAgICAgICAgICBvciBub3Qgb3MucGF0aC5leGlz
dHMoc3BlYy5vcmlnaW4pCisgICAgICAgICk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4ocHRoLCBuYW1lLnJwYXJ0
aXRpb24oIi4iKVsyXSArICIucHkiKQorICAgICAgICAgICAgZm4gPSBzcGVjLm9yaWdpbgogCi0g
ICAgICAgIGZuX3B5cGF0aCA9IHB5LnBhdGgubG9jYWwoZm4pCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll9zaG91bGRfcmV3cml0ZShuYW1lLCBmbl9weXBhdGgsIHN0YXRlKToKKyAgICAgICAgaWYgbm90
IHNlbGYuX3Nob3VsZF9yZXdyaXRlKG5hbWUsIGZuLCBzdGF0ZSk6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQogCi0gICAgICAgIHNlbGYuX3Jld3JpdHRlbl9uYW1lcy5hZGQobmFtZSkKKyAgICAg
ICAgcmV0dXJuIGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKAorICAgICAg
ICAgICAgbmFtZSwKKyAgICAgICAgICAgIGZuLAorICAgICAgICAgICAgbG9hZGVyPXNlbGYsCisg
ICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zcGVjLnN1Ym1vZHVsZV9zZWFy
Y2hfbG9jYXRpb25zLAorICAgICAgICApCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZSgKKyAgICAg
ICAgc2VsZiwgc3BlYzogaW1wb3J0bGliLm1hY2hpbmVyeS5Nb2R1bGVTcGVjCisgICAgKSAtPiBP
cHRpb25hbFt0eXBlcy5Nb2R1bGVUeXBlXToKKyAgICAgICAgcmV0dXJuIE5vbmUgICMgZGVmYXVs
dCBiZWhhdmlvdXIgaXMgZmluZQorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZTog
dHlwZXMuTW9kdWxlVHlwZSkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IG1vZHVsZS5fX3NwZWNf
XyBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgbW9kdWxlLl9fc3BlY19fLm9yaWdpbiBpcyBu
b3QgTm9uZQorICAgICAgICBmbiA9IFBhdGgobW9kdWxlLl9fc3BlY19fLm9yaWdpbikKKyAgICAg
ICAgc3RhdGUgPSBzZWxmLmNvbmZpZy5fc3RvcmVbYXNzZXJ0c3RhdGVfa2V5XQorCisgICAgICAg
IHNlbGYuX3Jld3JpdHRlbl9uYW1lcy5hZGQobW9kdWxlLl9fbmFtZV9fKQogCiAgICAgICAgICMg
VGhlIHJlcXVlc3RlZCBtb2R1bGUgbG9va3MgbGlrZSBhIHRlc3QgZmlsZSwgc28gcmV3cml0ZSBp
dC4gVGhpcyBpcwogICAgICAgICAjIHRoZSBtb3N0IG1hZ2ljYWwgcGFydCBvZiB0aGUgcHJvY2Vz
czogbG9hZCB0aGUgc291cmNlLCByZXdyaXRlIHRoZQpAQCAtMTExLDcxICsxNDUsMTA5IEBAIGNs
YXNzIEFzc2VydGlvblJld3JpdGluZ0hvb2sob2JqZWN0KToKICAgICAgICAgIyBjYWNoZWQgcHlj
IGlzIGFsd2F5cyBhIGNvbXBsZXRlLCB2YWxpZCBweWMuIE9wZXJhdGlvbnMgb24gaXQgbXVzdCBi
ZQogICAgICAgICAjIGF0b21pYy4gUE9TSVgncyBhdG9taWMgcmVuYW1lIGNvbWVzIGluIGhhbmR5
LgogICAgICAgICB3cml0ZSA9IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgICAgICBj
YWNoZV9kaXIgPSBvcy5wYXRoLmpvaW4oZm5fcHlwYXRoLmRpcm5hbWUsICJfX3B5Y2FjaGVfXyIp
CisgICAgICAgIGNhY2hlX2RpciA9IGdldF9jYWNoZV9kaXIoZm4pCiAgICAgICAgIGlmIHdyaXRl
OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKGNhY2hlX2RpcikK
LSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGUgPSBzeXMuZXhj
X2luZm8oKVsxXS5lcnJubwotICAgICAgICAgICAgICAgIGlmIGUgPT0gZXJybm8uRUVYSVNUOgot
ICAgICAgICAgICAgICAgICAgICAjIEVpdGhlciB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGFs
cmVhZHkgZXhpc3RzICh0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBjb21tb24gY2FzZSkgb3Ig
aXQncyBibG9ja2VkIGJ5IGEgbm9uLWRpciBub2RlLiBJbiB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgIyBsYXR0ZXIgY2FzZSwgd2UnbGwgaWdub3JlIGl0IGluIF93cml0ZV9weWMuCi0gICAgICAg
ICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbGlmIGUgaW4gW2Vycm5vLkVOT0VO
VCwgZXJybm8uRU5PVERJUl06Ci0gICAgICAgICAgICAgICAgICAgICMgT25lIG9mIHRoZSBwYXRo
IGNvbXBvbmVudHMgd2FzIG5vdCBhIGRpcmVjdG9yeSwgbGlrZWx5Ci0gICAgICAgICAgICAgICAg
ICAgICMgYmVjYXVzZSB3ZSdyZSBpbiBhIHppcCBmaWxlLgotICAgICAgICAgICAgICAgICAgICB3
cml0ZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZWxpZiBlIGluIFtlcnJuby5FQUNDRVMsIGVy
cm5vLkVST0ZTLCBlcnJuby5FUEVSTV06Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNl
KCJyZWFkIG9ubHkgZGlyZWN0b3J5OiAlciIgJSBmbl9weXBhdGguZGlybmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgd3JpdGUgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGNhY2hlX25hbWUgPSBmbl9weXBhdGguYmFzZW5h
bWVbOi0zXSArIFBZQ19UQUlMCi0gICAgICAgIHB5YyA9IG9zLnBhdGguam9pbihjYWNoZV9kaXIs
IGNhY2hlX25hbWUpCisgICAgICAgICAgICBvayA9IHRyeV9tYWtlZGlycyhjYWNoZV9kaXIpCisg
ICAgICAgICAgICBpZiBub3Qgb2s6CisgICAgICAgICAgICAgICAgd3JpdGUgPSBGYWxzZQorICAg
ICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJyZWFkIG9ubHkgZGlyZWN0b3J5OiB7fSIuZm9ybWF0
KGNhY2hlX2RpcikpCisKKyAgICAgICAgY2FjaGVfbmFtZSA9IGZuLm5hbWVbOi0zXSArIFBZQ19U
QUlMCisgICAgICAgIHB5YyA9IGNhY2hlX2RpciAvIGNhY2hlX25hbWUKICAgICAgICAgIyBOb3Rp
Y2UgdGhhdCBldmVuIGlmIHdlJ3JlIGluIGEgcmVhZC1vbmx5IGRpcmVjdG9yeSwgSSdtIGdvaW5n
CiAgICAgICAgICMgdG8gY2hlY2sgZm9yIGEgY2FjaGVkIHB5Yy4gVGhpcyBtYXkgbm90IGJlIG9w
dGltYWwuLi4KLSAgICAgICAgY28gPSBfcmVhZF9weWMoZm5fcHlwYXRoLCBweWMsIHN0YXRlLnRy
YWNlKQorICAgICAgICBjbyA9IF9yZWFkX3B5YyhmbiwgcHljLCBzdGF0ZS50cmFjZSkKICAgICAg
ICAgaWYgY28gaXMgTm9uZToKLSAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJyZXdyaXRpbmcgJXIi
ICUgKGZuLCkpCi0gICAgICAgICAgICBzb3VyY2Vfc3RhdCwgY28gPSBfcmV3cml0ZV90ZXN0KHNl
bGYuY29uZmlnLCBmbl9weXBhdGgpCi0gICAgICAgICAgICBpZiBjbyBpcyBOb25lOgotICAgICAg
ICAgICAgICAgICMgUHJvYmFibHkgYSBTeW50YXhFcnJvciBpbiB0aGUgdGVzdC4KLSAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgc3RhdGUudHJhY2UoInJld3JpdGluZyB7
IXJ9Ii5mb3JtYXQoZm4pKQorICAgICAgICAgICAgc291cmNlX3N0YXQsIGNvID0gX3Jld3JpdGVf
dGVzdChmbiwgc2VsZi5jb25maWcpCiAgICAgICAgICAgICBpZiB3cml0ZToKLSAgICAgICAgICAg
ICAgICBfd3JpdGVfcHljKHN0YXRlLCBjbywgc291cmNlX3N0YXQsIHB5YykKKyAgICAgICAgICAg
ICAgICBzZWxmLl93cml0aW5nX3B5YyA9IFRydWUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgICAgIF93cml0ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3RhdCwgcHljKQor
ICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRp
bmdfcHljID0gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJm
b3VuZCBjYWNoZWQgcmV3cml0dGVuIHB5YyBmb3IgJXIiICUgKGZuLCkpCi0gICAgICAgIHNlbGYu
bW9kdWxlc1tuYW1lXSA9IGNvLCBweWMKLSAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAg
IHN0YXRlLnRyYWNlKCJmb3VuZCBjYWNoZWQgcmV3cml0dGVuIHB5YyBmb3Ige30iLmZvcm1hdChm
bikpCisgICAgICAgIGV4ZWMoY28sIG1vZHVsZS5fX2RpY3RfXykKKworICAgIGRlZiBfZWFybHlf
cmV3cml0ZV9iYWlsb3V0KHNlbGYsIG5hbWU6IHN0ciwgc3RhdGU6ICJBc3NlcnRpb25TdGF0ZSIp
IC0+IGJvb2w6CisgICAgICAgICIiIkEgZmFzdCB3YXkgdG8gZ2V0IG91dCBvZiByZXdyaXRpbmcg
bW9kdWxlcy4KKworICAgICAgICBQcm9maWxpbmcgaGFzIHNob3duIHRoYXQgdGhlIGNhbGwgdG8g
UGF0aEZpbmRlci5maW5kX3NwZWMgKGluc2lkZSBvZgorICAgICAgICB0aGUgZmluZF9zcGVjIGZy
b20gdGhpcyBjbGFzcykgaXMgYSBtYWpvciBzbG93ZG93biwgc28sIHRoaXMgbWV0aG9kCisgICAg
ICAgIHRyaWVzIHRvIGZpbHRlciB3aGF0IHdlJ3JlIHN1cmUgd29uJ3QgYmUgcmV3cml0dGVuIGJl
Zm9yZSBnZXR0aW5nIHRvCisgICAgICAgIGl0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2Vs
Zi5zZXNzaW9uIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5fc2Vzc2lvbl9wYXRoc19jaGVja2Vk
OgorICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbl9wYXRoc19jaGVja2VkID0gVHJ1ZQorICAgICAg
ICAgICAgZm9yIGluaXRpYWxfcGF0aCBpbiBzZWxmLnNlc3Npb24uX2luaXRpYWxwYXRoczoKKyAg
ICAgICAgICAgICAgICAjIE1ha2Ugc29tZXRoaW5nIGFzIGM6L3Byb2plY3RzL215X3Byb2plY3Qv
cGF0aC5weSAtPgorICAgICAgICAgICAgICAgICMgICAgIFsnYzonLCAncHJvamVjdHMnLCAnbXlf
cHJvamVjdCcsICdwYXRoLnB5J10KKyAgICAgICAgICAgICAgICBwYXJ0cyA9IHN0cihpbml0aWFs
X3BhdGgpLnNwbGl0KG9zLnBhdGguc2VwKQorICAgICAgICAgICAgICAgICMgYWRkICdwYXRoJyB0
byBiYXNlbmFtZXMgdG8gYmUgY2hlY2tlZC4KKyAgICAgICAgICAgICAgICBzZWxmLl9iYXNlbmFt
ZXNfdG9fY2hlY2tfcmV3cml0ZS5hZGQob3MucGF0aC5zcGxpdGV4dChwYXJ0c1stMV0pWzBdKQor
CisgICAgICAgICMgTm90ZTogY29uZnRlc3QgYWxyZWFkeSBieSBkZWZhdWx0IGluIF9iYXNlbmFt
ZXNfdG9fY2hlY2tfcmV3cml0ZS4KKyAgICAgICAgcGFydHMgPSBuYW1lLnNwbGl0KCIuIikKKyAg
ICAgICAgaWYgcGFydHNbLTFdIGluIHNlbGYuX2Jhc2VuYW1lc190b19jaGVja19yZXdyaXRlOgor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX3Nob3VsZF9yZXdyaXRlKHNlbGYs
IG5hbWUsIGZuX3B5cGF0aCwgc3RhdGUpOgorICAgICAgICAjIEZvciBtYXRjaGluZyB0aGUgbmFt
ZSBpdCBtdXN0IGJlIGFzIGlmIGl0IHdhcyBhIGZpbGVuYW1lLgorICAgICAgICBwYXRoID0gUHVy
ZVBhdGgob3MucGF0aC5zZXAuam9pbihwYXJ0cykgKyAiLnB5IikKKworICAgICAgICBmb3IgcGF0
IGluIHNlbGYuZm5wYXRzOgorICAgICAgICAgICAgIyBpZiB0aGUgcGF0dGVybiBjb250YWlucyBz
dWJkaXJlY3RvcmllcyAoInRlc3RzLyoqLnB5IiBmb3IgZXhhbXBsZSkgd2UgY2FuJ3QgYmFpbCBv
dXQgYmFzZWQKKyAgICAgICAgICAgICMgb24gdGhlIG5hbWUgYWxvbmUgYmVjYXVzZSB3ZSBuZWVk
IHRvIG1hdGNoIGFnYWluc3QgdGhlIGZ1bGwgcGF0aAorICAgICAgICAgICAgaWYgb3MucGF0aC5k
aXJuYW1lKHBhdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBp
ZiBmbm1hdGNoX2V4KHBhdCwgcGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICAgICAgaWYgc2VsZi5faXNfbWFya2VkX2Zvcl9yZXdyaXRlKG5hbWUsIHN0YXRlKToKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHN0YXRlLnRyYWNlKCJlYXJseSBza2lw
IG9mIHJld3JpdGluZyBtb2R1bGU6IHt9Ii5mb3JtYXQobmFtZSkpCisgICAgICAgIHJldHVybiBU
cnVlCisKKyAgICBkZWYgX3Nob3VsZF9yZXdyaXRlKHNlbGYsIG5hbWU6IHN0ciwgZm46IHN0ciwg
c3RhdGU6ICJBc3NlcnRpb25TdGF0ZSIpIC0+IGJvb2w6CiAgICAgICAgICMgYWx3YXlzIHJld3Jp
dGUgY29uZnRlc3QgZmlsZXMKLSAgICAgICAgZm4gPSBzdHIoZm5fcHlwYXRoKQotICAgICAgICBp
ZiBmbl9weXBhdGguYmFzZW5hbWUgPT0gImNvbmZ0ZXN0LnB5IjoKLSAgICAgICAgICAgIHN0YXRl
LnRyYWNlKCJyZXdyaXRpbmcgY29uZnRlc3QgZmlsZTogJXIiICUgKGZuLCkpCisgICAgICAgIGlm
IG9zLnBhdGguYmFzZW5hbWUoZm4pID09ICJjb25mdGVzdC5weSI6CisgICAgICAgICAgICBzdGF0
ZS50cmFjZSgicmV3cml0aW5nIGNvbmZ0ZXN0IGZpbGU6IHshcn0iLmZvcm1hdChmbikpCiAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbiBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbi5pc2luaXRwYXRoKGZuKToKLSAgICAgICAg
ICAgICAgICBzdGF0ZS50cmFjZSgibWF0Y2hlZCB0ZXN0IGZpbGUgKHdhcyBzcGVjaWZpZWQgb24g
Y21kbGluZSk6ICVyIiAlIChmbiwpKQorICAgICAgICAgICAgaWYgc2VsZi5zZXNzaW9uLmlzaW5p
dHBhdGgocHkucGF0aC5sb2NhbChmbikpOgorICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKAor
ICAgICAgICAgICAgICAgICAgICAibWF0Y2hlZCB0ZXN0IGZpbGUgKHdhcyBzcGVjaWZpZWQgb24g
Y21kbGluZSk6IHshcn0iLmZvcm1hdChmbikKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIG1vZHVsZXMgbm90IHBhc3NlZCBleHBsaWNp
dGx5IG9uIHRoZSBjb21tYW5kIGxpbmUgYXJlIG9ubHkKICAgICAgICAgIyByZXdyaXR0ZW4gaWYg
dGhleSBtYXRjaCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHRlc3QgZmlsZXMKKyAgICAgICAg
Zm5fcGF0aCA9IFB1cmVQYXRoKGZuKQogICAgICAgICBmb3IgcGF0IGluIHNlbGYuZm5wYXRzOgot
ICAgICAgICAgICAgaWYgZm5fcHlwYXRoLmZubWF0Y2gocGF0KToKLSAgICAgICAgICAgICAgICBz
dGF0ZS50cmFjZSgibWF0Y2hlZCB0ZXN0IGZpbGUgJXIiICUgKGZuLCkpCisgICAgICAgICAgICBp
ZiBmbm1hdGNoX2V4KHBhdCwgZm5fcGF0aCk6CisgICAgICAgICAgICAgICAgc3RhdGUudHJhY2Uo
Im1hdGNoZWQgdGVzdCBmaWxlIHshcn0iLmZvcm1hdChmbikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKIAotICAgICAgICBmb3IgbWFya2VkIGluIHNlbGYuX211c3RfcmV3cml0ZToKLSAg
ICAgICAgICAgIGlmIG5hbWUgPT0gbWFya2VkIG9yIG5hbWUuc3RhcnRzd2l0aChtYXJrZWQgKyAi
LiIpOgotICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJtYXRjaGVkIG1hcmtlZCBmaWxlICVy
IChmcm9tICVyKSIgJSAobmFtZSwgbWFya2VkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorICAgICAgICByZXR1cm4gc2VsZi5faXNfbWFya2VkX2Zvcl9yZXdyaXRlKG5hbWUsIHN0YXRl
KQogCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgIGRlZiBfaXNfbWFya2VkX2Zvcl9yZXdyaXRl
KHNlbGYsIG5hbWU6IHN0ciwgc3RhdGU6ICJBc3NlcnRpb25TdGF0ZSIpIC0+IGJvb2w6CisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYXJrZWRfZm9yX3Jld3JpdGVfY2Fj
aGVbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgZm9yIG1hcmtl
ZCBpbiBzZWxmLl9tdXN0X3Jld3JpdGU6CisgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSBtYXJr
ZWQgb3IgbmFtZS5zdGFydHN3aXRoKG1hcmtlZCArICIuIik6CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlLnRyYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgIm1hdGNoZWQgbWFya2VkIGZp
bGUgeyFyfSAoZnJvbSB7IXJ9KSIuZm9ybWF0KG5hbWUsIG1hcmtlZCkKKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXJrZWRfZm9yX3Jld3JpdGVfY2Fj
aGVbbmFtZV0gPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAg
ICAgICAgIHNlbGYuX21hcmtlZF9mb3JfcmV3cml0ZV9jYWNoZVtuYW1lXSA9IEZhbHNlCisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBtYXJrX3Jld3JpdGUoc2VsZiwgKm5hbWVz
KToKKyAgICBkZWYgbWFya19yZXdyaXRlKHNlbGYsICpuYW1lczogc3RyKSAtPiBOb25lOgogICAg
ICAgICAiIiJNYXJrIGltcG9ydCBuYW1lcyBhcyBuZWVkaW5nIHRvIGJlIHJld3JpdHRlbi4KIAog
ICAgICAgICBUaGUgbmFtZWQgbW9kdWxlIG9yIHBhY2thZ2UgYXMgd2VsbCBhcyBhbnkgbmVzdGVk
IG1vZHVsZXMgd2lsbApAQCAtMTg1LDE5MCArMjU3LDE0MSBAQCBjbGFzcyBBc3NlcnRpb25SZXdy
aXRpbmdIb29rKG9iamVjdCk6CiAgICAgICAgICAgICBzZXQobmFtZXMpLmludGVyc2VjdGlvbihz
eXMubW9kdWxlcykuZGlmZmVyZW5jZShzZWxmLl9yZXdyaXR0ZW5fbmFtZXMpCiAgICAgICAgICkK
ICAgICAgICAgZm9yIG5hbWUgaW4gYWxyZWFkeV9pbXBvcnRlZDoKKyAgICAgICAgICAgIG1vZCA9
IHN5cy5tb2R1bGVzW25hbWVdCiAgICAgICAgICAgICBpZiBub3QgQXNzZXJ0aW9uUmV3cml0ZXIu
aXNfcmV3cml0ZV9kaXNhYmxlZCgKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXS5f
X2RvY19fIG9yICIiCi0gICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIG1vZC5fX2RvY19f
IG9yICIiCisgICAgICAgICAgICApIGFuZCBub3QgaXNpbnN0YW5jZShtb2QuX19sb2FkZXJfXywg
dHlwZShzZWxmKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fd2Fybl9hbHJlYWR5X2ltcG9ydGVk
KG5hbWUpCiAgICAgICAgIHNlbGYuX211c3RfcmV3cml0ZS51cGRhdGUobmFtZXMpCisgICAgICAg
IHNlbGYuX21hcmtlZF9mb3JfcmV3cml0ZV9jYWNoZS5jbGVhcigpCiAKLSAgICBkZWYgX3dhcm5f
YWxyZWFkeV9pbXBvcnRlZChzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5jb25maWcud2FybigK
LSAgICAgICAgICAgICJQMSIsICJNb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBzbyBjYW5ub3QgYmUg
cmV3cml0dGVuOiAlcyIgJSBuYW1lCi0gICAgICAgICkKLQotICAgIGRlZiBsb2FkX21vZHVsZShz
ZWxmLCBuYW1lKToKLSAgICAgICAgIyBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBtb2R1bGUgb2Jq
ZWN0IG5hbWVkICdmdWxsbmFtZScgaW4KLSAgICAgICAgIyBzeXMubW9kdWxlcywgdGhlIGxvYWRl
ciBtdXN0IHVzZSB0aGF0IGV4aXN0aW5nIG1vZHVsZS4gKE90aGVyd2lzZSwKLSAgICAgICAgIyB0
aGUgcmVsb2FkKCkgYnVpbHRpbiB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4pCi0gICAgICAgIGlm
IG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFt
ZV0KLQotICAgICAgICBjbywgcHljID0gc2VsZi5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICAj
IEkgd2lzaCBJIGNvdWxkIGp1c3QgY2FsbCBpbXAubG9hZF9jb21waWxlZCBoZXJlLCBidXQgX19m
aWxlX18gaGFzIHRvCi0gICAgICAgICMgYmUgc2V0IHByb3Blcmx5LiBJbiBQeXRob24gMy4yKywg
dGhpcyBhbGwgd291bGQgYmUgaGFuZGxlZCBjb3JyZWN0bHkKLSAgICAgICAgIyBieSBsb2FkX2Nv
bXBpbGVkLgotICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1tuYW1lXSA9IGltcC5uZXdfbW9kdWxl
KG5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZC5fX2ZpbGVfXyA9IGNvLmNvX2Zp
bGVuYW1lCi0gICAgICAgICAgICAjIE5vcm1hbGx5LCB0aGlzIGF0dHJpYnV0ZSBpcyAzLjIrLgot
ICAgICAgICAgICAgbW9kLl9fY2FjaGVkX18gPSBweWMKLSAgICAgICAgICAgIG1vZC5fX2xvYWRl
cl9fID0gc2VsZgotICAgICAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjbywgbW9kLl9fZGljdF9f
KQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIGlmIG5hbWUgaW4gc3lzLm1v
ZHVsZXM6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAg
ICByYWlzZQotICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0KLQotICAgIGRlZiBpc19w
YWNrYWdlKHNlbGYsIG5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmZCwgZm4sIGRl
c2MgPSBpbXAuZmluZF9tb2R1bGUobmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgot
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgZmQuY2xvc2UoKQotICAgICAgICB0cCA9IGRlc2NbMl0KLSAgICAgICAgcmV0dXJu
IHRwID09IGltcC5QS0dfRElSRUNUT1JZCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3Jl
Z2lzdGVyX3dpdGhfcGtnX3Jlc291cmNlcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAgRW5z
dXJlIHBhY2thZ2UgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgZnJvbSB0aGlzIGxvYWRlci4gTWF5
IGJlIGNhbGxlZAotICAgICAgICBtdWx0aXBsZSB0aW1lcywgYXMgdGhlIG9wZXJhdGlvbiBpcyBp
ZGVtcG90ZW50LgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0
IHBrZ19yZXNvdXJjZXMKLQotICAgICAgICAgICAgIyBhY2Nlc3MgYW4gYXR0cmlidXRlIGluIGNh
c2UgYSBkZWZlcnJlZCBpbXBvcnRlciBpcyBwcmVzZW50Ci0gICAgICAgICAgICBwa2dfcmVzb3Vy
Y2VzLl9fbmFtZV9fCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJl
dHVybgorICAgIGRlZiBfd2Fybl9hbHJlYWR5X2ltcG9ydGVkKHNlbGYsIG5hbWU6IHN0cikgLT4g
Tm9uZToKKyAgICAgICAgZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdEFz
c2VydFJld3JpdGVXYXJuaW5nCiAKLSAgICAgICAgIyBTaW5jZSBweXRlc3QgdGVzdHMgYXJlIGFs
d2F5cyBsb2NhdGVkIGluIHRoZSBmaWxlIHN5c3RlbSwgdGhlCi0gICAgICAgICMgIERlZmF1bHRQ
cm92aWRlciBpcyBhcHByb3ByaWF0ZS4KLSAgICAgICAgcGtnX3Jlc291cmNlcy5yZWdpc3Rlcl9s
b2FkZXJfdHlwZShjbHMsIHBrZ19yZXNvdXJjZXMuRGVmYXVsdFByb3ZpZGVyKQorICAgICAgICBz
ZWxmLmNvbmZpZy5pc3N1ZV9jb25maWdfdGltZV93YXJuaW5nKAorICAgICAgICAgICAgUHl0ZXN0
QXNzZXJ0UmV3cml0ZVdhcm5pbmcoCisgICAgICAgICAgICAgICAgIk1vZHVsZSBhbHJlYWR5IGlt
cG9ydGVkIHNvIGNhbm5vdCBiZSByZXdyaXR0ZW46ICVzIiAlIG5hbWUKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICBzdGFja2xldmVsPTUsCisgICAgICAgICkKIAotICAgIGRlZiBnZXRfZGF0
YShzZWxmLCBwYXRobmFtZSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIFBFUDMwMiBnZXRfZGF0YSBB
UEkuCi0gICAgICAgICIiIgorICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRobmFtZTogVW5pb25b
c3RyLCBieXRlc10pIC0+IGJ5dGVzOgorICAgICAgICAiIiJPcHRpb25hbCBQRVAzMDIgZ2V0X2Rh
dGEgQVBJLiIiIgogICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsICJyYiIpIGFzIGY6CiAgICAg
ICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAogCi1kZWYgX3dyaXRlX3B5YyhzdGF0ZSwgY28sIHNv
dXJjZV9zdGF0LCBweWMpOgorZGVmIF93cml0ZV9weWNfZnAoCisgICAgZnA6IElPW2J5dGVzXSwg
c291cmNlX3N0YXQ6IG9zLnN0YXRfcmVzdWx0LCBjbzogdHlwZXMuQ29kZVR5cGUKKykgLT4gTm9u
ZToKICAgICAjIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUgcHlj
IGZvcm1hdCBhcwogICAgICMgKEMpUHl0aG9uLCBzaW5jZSB0aGVzZSAicHljcyIgc2hvdWxkIG5l
dmVyIGJlIHNlZW4gYnkgYnVpbHRpbgotICAgICMgaW1wb3J0LiBIb3dldmVyLCB0aGVyZSdzIGxp
dHRsZSByZWFzb24gZGV2aWF0ZSwgYW5kIEkgaG9wZQotICAgICMgc29tZXRpbWUgdG8gYmUgYWJs
ZSB0byB1c2UgaW1wLmxvYWRfY29tcGlsZWQgdG8gbG9hZCB0aGVtLiAoU2VlCi0gICAgIyB0aGUg
Y29tbWVudCBpbiBsb2FkX21vZHVsZSBhYm92ZS4pCi0gICAgdHJ5OgotICAgICAgICB3aXRoIGF0
b21pY3dyaXRlcy5hdG9taWNfd3JpdGUocHljLCBtb2RlPSJ3YiIsIG92ZXJ3cml0ZT1UcnVlKSBh
cyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAg
IG10aW1lID0gaW50KHNvdXJjZV9zdGF0Lm10aW1lKQotICAgICAgICAgICAgc2l6ZSA9IHNvdXJj
ZV9zdGF0LnNpemUgJiAweEZGRkZGRkZGCi0gICAgICAgICAgICBmcC53cml0ZShzdHJ1Y3QucGFj
aygiPGxsIiwgbXRpbWUsIHNpemUpKQotICAgICAgICAgICAgZnAud3JpdGUobWFyc2hhbC5kdW1w
cyhjbykpCi0gICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZToKLSAgICAgICAgc3RhdGUu
dHJhY2UoImVycm9yIHdyaXRpbmcgcHljIGZpbGUgYXQgJXM6IGVycm5vPSVzIiAlIChweWMsIGUu
ZXJybm8pKQotICAgICAgICAjIHdlIGlnbm9yZSBhbnkgZmFpbHVyZSB0byB3cml0ZSB0aGUgY2Fj
aGUgZmlsZQotICAgICAgICAjIHRoZXJlIGFyZSBtYW55IHJlYXNvbnMsIHBlcm1pc3Npb24tZGVu
aWVkLCBfX3B5Y2FjaGVfXyBiZWluZyBhCi0gICAgICAgICMgZmlsZSBldGMuCi0gICAgICAgIHJl
dHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCi0KKyAgICAjIGltcG9ydC4gSG93ZXZlciwgdGhl
cmUncyBsaXR0bGUgcmVhc29uIGRldmlhdGUuCisgICAgZnAud3JpdGUoaW1wb3J0bGliLnV0aWwu
TUFHSUNfTlVNQkVSKQorICAgICMgYXMgb2Ygbm93LCBieXRlY29kZSBoZWFkZXIgZXhwZWN0cyAz
Mi1iaXQgbnVtYmVycyBmb3Igc2l6ZSBhbmQgbXRpbWUgKCM0OTAzKQorICAgIG10aW1lID0gaW50
KHNvdXJjZV9zdGF0LnN0X210aW1lKSAmIDB4RkZGRkZGRkYKKyAgICBzaXplID0gc291cmNlX3N0
YXQuc3Rfc2l6ZSAmIDB4RkZGRkZGRkYKKyAgICAjICI8TEwiIHN0YW5kcyBmb3IgMiB1bnNpZ25l
ZCBsb25ncywgbGl0dGxlLWVuZGluZworICAgIGZwLndyaXRlKHN0cnVjdC5wYWNrKCI8TEwiLCBt
dGltZSwgc2l6ZSkpCisgICAgZnAud3JpdGUobWFyc2hhbC5kdW1wcyhjbykpCisKKworaWYgc3lz
LnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgZnJvbSBhdG9taWN3cml0ZXMgaW1wb3J0IGF0b21p
Y193cml0ZQorCisgICAgZGVmIF93cml0ZV9weWMoCisgICAgICAgIHN0YXRlOiAiQXNzZXJ0aW9u
U3RhdGUiLAorICAgICAgICBjbzogdHlwZXMuQ29kZVR5cGUsCisgICAgICAgIHNvdXJjZV9zdGF0
OiBvcy5zdGF0X3Jlc3VsdCwKKyAgICAgICAgcHljOiBQYXRoLAorICAgICkgLT4gYm9vbDoKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBhdG9taWNfd3JpdGUoZnNwYXRoKHB5YyksIG1v
ZGU9IndiIiwgb3ZlcndyaXRlPVRydWUpIGFzIGZwOgorICAgICAgICAgICAgICAgIF93cml0ZV9w
eWNfZnAoZnAsIHNvdXJjZV9zdGF0LCBjbykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToK
KyAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJlcnJvciB3cml0aW5nIHB5YyBmaWxlIGF0IHt9OiB7
fSIuZm9ybWF0KHB5YywgZSkpCisgICAgICAgICAgICAjIHdlIGlnbm9yZSBhbnkgZmFpbHVyZSB0
byB3cml0ZSB0aGUgY2FjaGUgZmlsZQorICAgICAgICAgICAgIyB0aGVyZSBhcmUgbWFueSByZWFz
b25zLCBwZXJtaXNzaW9uLWRlbmllZCwgcHljYWNoZSBkaXIgYmVpbmcgYQorICAgICAgICAgICAg
IyBmaWxlIGV0Yy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1
ZQogCi1STiA9ICJcclxuIi5lbmNvZGUoInV0Zi04IikKLU4gPSAiXG4iLmVuY29kZSgidXRmLTgi
KQogCi1jb29raWVfcmUgPSByZS5jb21waWxlKHIiXlsgXHRcZl0qIy4qY29kaW5nWzo9XVsgXHRd
KlstXHcuXSsiKQotQk9NX1VURjggPSAiXHhlZlx4YmJceGJmIgorZWxzZToKIAorICAgIGRlZiBf
d3JpdGVfcHljKAorICAgICAgICBzdGF0ZTogIkFzc2VydGlvblN0YXRlIiwKKyAgICAgICAgY286
IHR5cGVzLkNvZGVUeXBlLAorICAgICAgICBzb3VyY2Vfc3RhdDogb3Muc3RhdF9yZXN1bHQsCisg
ICAgICAgIHB5YzogUGF0aCwKKyAgICApIC0+IGJvb2w6CisgICAgICAgIHByb2NfcHljID0gInt9
Lnt9Ii5mb3JtYXQocHljLCBvcy5nZXRwaWQoKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ZnAgPSBvcGVuKHByb2NfcHljLCAid2IiKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgor
ICAgICAgICAgICAgc3RhdGUudHJhY2UoCisgICAgICAgICAgICAgICAgImVycm9yIHdyaXRpbmcg
cHljIGZpbGUgYXQge306IGVycm5vPXt9Ii5mb3JtYXQocHJvY19weWMsIGUuZXJybm8pCisgICAg
ICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotZGVmIF9yZXdyaXRlX3Rlc3Qo
Y29uZmlnLCBmbik6Ci0gICAgIiIiVHJ5IHRvIHJlYWQgYW5kIHJld3JpdGUgKmZuKiBhbmQgcmV0
dXJuIHRoZSBjb2RlIG9iamVjdC4iIiIKLSAgICBzdGF0ZSA9IGNvbmZpZy5fYXNzZXJ0c3RhdGUK
LSAgICB0cnk6Ci0gICAgICAgIHN0YXQgPSBmbi5zdGF0KCkKLSAgICAgICAgc291cmNlID0gZm4u
cmVhZCgicmIiKQotICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgotICAgICAgICByZXR1cm4g
Tm9uZSwgTm9uZQotICAgIGlmIEFTQ0lJX0lTX0RFRkFVTFRfRU5DT0RJTkc6Ci0gICAgICAgICMg
QVNDSUkgaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcgaW4gUHl0aG9uIDIuIFdpdGhvdXQgYSBjb2Rp
bmcKLSAgICAgICAgIyBkZWNsYXJhdGlvbiwgUHl0aG9uIDIgd2lsbCBjb21wbGFpbiBhYm91dCBh
bnkgYnl0ZXMgaW4gdGhlIGZpbGUKLSAgICAgICAgIyBvdXRzaWRlIHRoZSBBU0NJSSByYW5nZS4g
U2FkbHksIHRoaXMgYmVoYXZpb3IgZG9lcyBub3QgZXh0ZW5kIHRvCi0gICAgICAgICMgY29tcGls
ZSgpIG9yIGFzdC5wYXJzZSgpLCB3aGljaCBwcmVmZXIgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBh
cwotICAgICAgICAjIGxhdGluLTEuIChBdCBsZWFzdCB0aGV5IHByb3Blcmx5IGhhbmRsZSBleHBs
aWNpdCBjb2RpbmcgY29va2llcy4pIFRvCi0gICAgICAgICMgcHJlc2VydmUgdGhpcyBlcnJvciBi
ZWhhdmlvciwgd2UgY291bGQgZm9yY2UgYXN0LnBhcnNlKCkgdG8gdXNlIEFTQ0lJCi0gICAgICAg
ICMgYXMgdGhlIGVuY29kaW5nIGJ5IGluc2VydGluZyBhIGNvZGluZyBjb29raWUuIFVuZm9ydHVu
YXRlbHksIHRoYXQKLSAgICAgICAgIyBtZXNzZXMgdXAgbGluZSBudW1iZXJzLiBUaHVzLCB3ZSBo
YXZlIHRvIGNoZWNrIG91cnNlbHZlcyBpZiBhbnl0aGluZwotICAgICAgICAjIGlzIG91dHNpZGUg
dGhlIEFTQ0lJIHJhbmdlIGluIHRoZSBjYXNlIG5vIGVuY29kaW5nIGlzIGV4cGxpY2l0bHkKLSAg
ICAgICAgIyBkZWNsYXJlZC4gRm9yIG1vcmUgY29udGV4dCwgc2VlIGlzc3VlICMyNjkuIFlheSBm
b3IgUHl0aG9uIDMgd2hpY2gKLSAgICAgICAgIyBnZXRzIHRoaXMgcmlnaHQuCi0gICAgICAgIGVu
ZDEgPSBzb3VyY2UuZmluZCgiXG4iKQotICAgICAgICBlbmQyID0gc291cmNlLmZpbmQoIlxuIiwg
ZW5kMSArIDEpCi0gICAgICAgIGlmICgKLSAgICAgICAgICAgIG5vdCBzb3VyY2Uuc3RhcnRzd2l0
aChCT01fVVRGOCkKLSAgICAgICAgICAgIGFuZCBjb29raWVfcmUubWF0Y2goc291cmNlWzA6ZW5k
MV0pIGlzIE5vbmUKLSAgICAgICAgICAgIGFuZCBjb29raWVfcmUubWF0Y2goc291cmNlW2VuZDEg
KyAxOmVuZDJdKSBpcyBOb25lCi0gICAgICAgICk6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHN0
YXRlLCAiX2luZGVjb2RlIik6Ci0gICAgICAgICAgICAgICAgIyBlbmNvZGluZ3MgaW1wb3J0ZWQg
dXMgYWdhaW4sIHNvIGRvbid0IHJld3JpdGUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUs
IE5vbmUKLSAgICAgICAgICAgIHN0YXRlLl9pbmRlY29kZSA9IFRydWUKLSAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZS5kZWNv
ZGUoImFzY2lpIikKLSAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgot
ICAgICAgICAgICAgICAgICAgICAjIExldCBpdCBmYWlsIGluIHJlYWwgaW1wb3J0LgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgICAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgICAgICBkZWwgc3RhdGUuX2luZGVjb2RlCi0gICAgdHJ5OgotICAgICAgICB0cmVl
ID0gYXN0LnBhcnNlKHNvdXJjZSkKLSAgICBleGNlcHQgU3ludGF4RXJyb3I6Ci0gICAgICAgICMg
TGV0IHRoaXMgcG9wIHVwIGFnYWluIGluIHRoZSByZWFsIGltcG9ydC4KLSAgICAgICAgc3RhdGUu
dHJhY2UoImZhaWxlZCB0byBwYXJzZTogJXIiICUgKGZuLCkpCi0gICAgICAgIHJldHVybiBOb25l
LCBOb25lCi0gICAgcmV3cml0ZV9hc3NlcnRzKHRyZWUsIGZuLCBjb25maWcpCi0gICAgdHJ5Ogot
ICAgICAgICBjbyA9IGNvbXBpbGUodHJlZSwgZm4uc3RycGF0aCwgImV4ZWMiLCBkb250X2luaGVy
aXQ9VHJ1ZSkKLSAgICBleGNlcHQgU3ludGF4RXJyb3I6Ci0gICAgICAgICMgSXQncyBwb3NzaWJs
ZSB0aGF0IHRoaXMgZXJyb3IgaXMgZnJvbSBzb21lIGJ1ZyBpbiB0aGUKLSAgICAgICAgIyBhc3Nl
cnRpb24gcmV3cml0aW5nLCBidXQgSSBkb24ndCBrbm93IG9mIGEgZmFzdCB3YXkgdG8gdGVsbC4K
LSAgICAgICAgc3RhdGUudHJhY2UoImZhaWxlZCB0byBjb21waWxlOiAlciIgJSAoZm4sKSkKLSAg
ICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3dyaXRl
X3B5Y19mcChmcCwgc291cmNlX3N0YXQsIGNvKQorICAgICAgICAgICAgb3MucmVuYW1lKHByb2Nf
cHljLCBmc3BhdGgocHljKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAg
ICAgIHN0YXRlLnRyYWNlKCJlcnJvciB3cml0aW5nIHB5YyBmaWxlIGF0IHt9OiB7fSIuZm9ybWF0
KHB5YywgZSkpCisgICAgICAgICAgICAjIHdlIGlnbm9yZSBhbnkgZmFpbHVyZSB0byB3cml0ZSB0
aGUgY2FjaGUgZmlsZQorICAgICAgICAgICAgIyB0aGVyZSBhcmUgbWFueSByZWFzb25zLCBwZXJt
aXNzaW9uLWRlbmllZCwgcHljYWNoZSBkaXIgYmVpbmcgYQorICAgICAgICAgICAgIyBmaWxlIGV0
Yy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgZnAuY2xvc2UoKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBfcmV3cml0ZV90ZXN0
KGZuOiBQYXRoLCBjb25maWc6IENvbmZpZykgLT4gVHVwbGVbb3Muc3RhdF9yZXN1bHQsIHR5cGVz
LkNvZGVUeXBlXToKKyAgICAiIiJSZWFkIGFuZCByZXdyaXRlICpmbiogYW5kIHJldHVybiB0aGUg
Y29kZSBvYmplY3QuIiIiCisgICAgZm5fID0gZnNwYXRoKGZuKQorICAgIHN0YXQgPSBvcy5zdGF0
KGZuXykKKyAgICB3aXRoIG9wZW4oZm5fLCAicmIiKSBhcyBmOgorICAgICAgICBzb3VyY2UgPSBm
LnJlYWQoKQorICAgIHRyZWUgPSBhc3QucGFyc2Uoc291cmNlLCBmaWxlbmFtZT1mbl8pCisgICAg
cmV3cml0ZV9hc3NlcnRzKHRyZWUsIHNvdXJjZSwgZm5fLCBjb25maWcpCisgICAgY28gPSBjb21w
aWxlKHRyZWUsIGZuXywgImV4ZWMiLCBkb250X2luaGVyaXQ9VHJ1ZSkKICAgICByZXR1cm4gc3Rh
dCwgY28KIAogCi1kZWYgX3JlYWRfcHljKHNvdXJjZSwgcHljLCB0cmFjZT1sYW1iZGEgeDogTm9u
ZSk6CitkZWYgX3JlYWRfcHljKAorICAgIHNvdXJjZTogUGF0aCwgcHljOiBQYXRoLCB0cmFjZTog
Q2FsbGFibGVbW3N0cl0sIE5vbmVdID0gbGFtYmRhIHg6IE5vbmUKKykgLT4gT3B0aW9uYWxbdHlw
ZXMuQ29kZVR5cGVdOgogICAgICIiIlBvc3NpYmx5IHJlYWQgYSBweXRlc3QgcHljIGNvbnRhaW5p
bmcgcmV3cml0dGVuIGNvZGUuCiAKICAgICBSZXR1cm4gcmV3cml0dGVuIGNvZGUgaWYgc3VjY2Vz
c2Z1bCBvciBOb25lIGlmIG5vdC4KICAgICAiIiIKICAgICB0cnk6Ci0gICAgICAgIGZwID0gb3Bl
bihweWMsICJyYiIpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGZwID0gb3Blbihmc3Bh
dGgocHljKSwgInJiIikKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUK
ICAgICB3aXRoIGZwOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtdGltZSA9IGludChzb3Vy
Y2UubXRpbWUoKSkKLSAgICAgICAgICAgIHNpemUgPSBzb3VyY2Uuc2l6ZSgpCisgICAgICAgICAg
ICBzdGF0X3Jlc3VsdCA9IG9zLnN0YXQoZnNwYXRoKHNvdXJjZSkpCisgICAgICAgICAgICBtdGlt
ZSA9IGludChzdGF0X3Jlc3VsdC5zdF9tdGltZSkKKyAgICAgICAgICAgIHNpemUgPSBzdGF0X3Jl
c3VsdC5zdF9zaXplCiAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgxMikKLSAgICAgICAgZXhj
ZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHRyYWNlKCJfcmVhZF9weWMo
JXMpOiBFbnZpcm9ubWVudEVycm9yICVzIiAlIChzb3VyY2UsIGUpKQorICAgICAgICBleGNlcHQg
T1NFcnJvciBhcyBlOgorICAgICAgICAgICAgdHJhY2UoIl9yZWFkX3B5Yyh7fSk6IE9TRXJyb3Ig
e30iLmZvcm1hdChzb3VyY2UsIGUpKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAg
IyBDaGVjayBmb3IgaW52YWxpZCBvciBvdXQgb2YgZGF0ZSBweWMgZmlsZS4KICAgICAgICAgaWYg
KAogICAgICAgICAgICAgbGVuKGRhdGEpICE9IDEyCi0gICAgICAgICAgICBvciBkYXRhWzo0XSAh
PSBpbXAuZ2V0X21hZ2ljKCkKLSAgICAgICAgICAgIG9yIHN0cnVjdC51bnBhY2soIjxsbCIsIGRh
dGFbNDpdKSAhPSAobXRpbWUsIHNpemUpCisgICAgICAgICAgICBvciBkYXRhWzo0XSAhPSBpbXBv
cnRsaWIudXRpbC5NQUdJQ19OVU1CRVIKKyAgICAgICAgICAgIG9yIHN0cnVjdC51bnBhY2soIjxM
TCIsIGRhdGFbNDpdKSAhPSAobXRpbWUgJiAweEZGRkZGRkZGLCBzaXplICYgMHhGRkZGRkZGRikK
ICAgICAgICAgKToKICAgICAgICAgICAgIHRyYWNlKCJfcmVhZF9weWMoJXMpOiBpbnZhbGlkIG9y
IG91dCBvZiBkYXRlIHB5YyIgJSBzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICBjbyA9IG1hcnNoYWwubG9hZChmcCkKICAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgdHJhY2UoIl9yZWFkX3B5Yyglcyk6IG1h
cnNoYWwubG9hZCBlcnJvciAlcyIgJSAoc291cmNlLCBlKSkKKyAgICAgICAgICAgIHRyYWNlKCJf
cmVhZF9weWMoe30pOiBtYXJzaGFsLmxvYWQgZXJyb3Ige30iLmZvcm1hdChzb3VyY2UsIGUpKQog
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY28sIHR5
cGVzLkNvZGVUeXBlKToKICAgICAgICAgICAgIHRyYWNlKCJfcmVhZF9weWMoJXMpOiBub3QgYSBj
b2RlIG9iamVjdCIgJSBzb3VyY2UpCkBAIC0zNzYsMTMgKzM5OSwxOCBAQCBkZWYgX3JlYWRfcHlj
KHNvdXJjZSwgcHljLCB0cmFjZT1sYW1iZGEgeDogTm9uZSk6CiAgICAgICAgIHJldHVybiBjbwog
CiAKLWRlZiByZXdyaXRlX2Fzc2VydHMobW9kLCBtb2R1bGVfcGF0aD1Ob25lLCBjb25maWc9Tm9u
ZSk6CitkZWYgcmV3cml0ZV9hc3NlcnRzKAorICAgIG1vZDogYXN0Lk1vZHVsZSwKKyAgICBzb3Vy
Y2U6IGJ5dGVzLAorICAgIG1vZHVsZV9wYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICBj
b25maWc6IE9wdGlvbmFsW0NvbmZpZ10gPSBOb25lLAorKSAtPiBOb25lOgogICAgICIiIlJld3Jp
dGUgdGhlIGFzc2VydCBzdGF0ZW1lbnRzIGluIG1vZC4iIiIKLSAgICBBc3NlcnRpb25SZXdyaXRl
cihtb2R1bGVfcGF0aCwgY29uZmlnKS5ydW4obW9kKQorICAgIEFzc2VydGlvblJld3JpdGVyKG1v
ZHVsZV9wYXRoLCBjb25maWcsIHNvdXJjZSkucnVuKG1vZCkKIAogCi1kZWYgX3NhZmVyZXByKG9i
aik6Ci0gICAgIiIiR2V0IGEgc2FmZSByZXByIG9mIGFuIG9iamVjdCBmb3IgYXNzZXJ0aW9uIGVy
cm9yIG1lc3NhZ2VzLgorZGVmIF9zYWZlcmVwcihvYmo6IG9iamVjdCkgLT4gc3RyOgorICAgIHIi
IiJHZXQgYSBzYWZlIHJlcHIgb2YgYW4gb2JqZWN0IGZvciBhc3NlcnRpb24gZXJyb3IgbWVzc2Fn
ZXMuCiAKICAgICBUaGUgYXNzZXJ0aW9uIGZvcm1hdHRpbmcgKHV0aWwuZm9ybWF0X2V4cGxhbmF0
aW9uKCkpIHJlcXVpcmVzCiAgICAgbmV3bGluZXMgdG8gYmUgZXNjYXBlZCBzaW5jZSB0aGV5IGFy
ZSBhIHNwZWNpYWwgY2hhcmFjdGVyIGZvciBpdC4KQEAgLTM5MCw2MSArNDE4LDUzIEBAIGRlZiBf
c2FmZXJlcHIob2JqKToKICAgICBjdXN0b20gcmVwciBpdCBpcyBwb3NzaWJsZSB0byBjb250YWlu
IG9uZSBvZiB0aGUgc3BlY2lhbCBlc2NhcGUKICAgICBzZXF1ZW5jZXMsIGVzcGVjaWFsbHkgJ1xu
eycgYW5kICdcbn0nIGFyZSBsaWtlbHkgdG8gYmUgcHJlc2VudCBpbgogICAgIEpTT04gcmVwcnMu
Ci0KICAgICAiIiIKLSAgICByZXByID0gcHkuaW8uc2FmZXJlcHIob2JqKQotICAgIGlmIGlzaW5z
dGFuY2UocmVwciwgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgIHQgPSBzaXgudGV4dF90eXBlCi0g
ICAgZWxzZToKLSAgICAgICAgdCA9IHNpeC5iaW5hcnlfdHlwZQotICAgIHJldHVybiByZXByLnJl
cGxhY2UodCgiXG4iKSwgdCgiXFxuIikpCi0KLQotZnJvbSBfcHl0ZXN0LmFzc2VydGlvbi51dGls
IGltcG9ydCBmb3JtYXRfZXhwbGFuYXRpb24gYXMgX2Zvcm1hdF9leHBsYW5hdGlvbiAgIyBub3Fh
CisgICAgcmV0dXJuIHNhZmVyZXByKG9iaikucmVwbGFjZSgiXG4iLCAiXFxuIikKIAogCi1kZWYg
X2Zvcm1hdF9hc3NlcnRtc2cob2JqKToKLSAgICAiIiJGb3JtYXQgdGhlIGN1c3RvbSBhc3NlcnRp
b24gbWVzc2FnZSBnaXZlbi4KK2RlZiBfZm9ybWF0X2Fzc2VydG1zZyhvYmo6IG9iamVjdCkgLT4g
c3RyOgorICAgIHIiIiJGb3JtYXQgdGhlIGN1c3RvbSBhc3NlcnRpb24gbWVzc2FnZSBnaXZlbi4K
IAogICAgIEZvciBzdHJpbmdzIHRoaXMgc2ltcGx5IHJlcGxhY2VzIG5ld2xpbmVzIHdpdGggJ1xu
ficgc28gdGhhdAogICAgIHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgd2lsbCBwcmVzZXJ2ZSB0
aGVtIGluc3RlYWQgb2YgZXNjYXBpbmcKLSAgICBuZXdsaW5lcy4gIEZvciBvdGhlciBvYmplY3Rz
IHB5LmlvLnNhZmVyZXByKCkgaXMgdXNlZCBmaXJzdC4KLQorICAgIG5ld2xpbmVzLiAgRm9yIG90
aGVyIG9iamVjdHMgc2FmZXJlcHIoKSBpcyB1c2VkIGZpcnN0LgogICAgICIiIgogICAgICMgcmVw
cmxpYiBhcHBlYXJzIHRvIGhhdmUgYSBidWcgd2hpY2ggbWVhbnMgdGhhdCBpZiBhIHN0cmluZwog
ICAgICMgY29udGFpbnMgYSBuZXdsaW5lIGl0IGdldHMgZXNjYXBlZCwgaG93ZXZlciBpZiBhbiBv
YmplY3QgaGFzIGEKICAgICAjIC5fX3JlcHJfXygpIHdoaWNoIGNvbnRhaW5zIG5ld2xpbmVzIGl0
IGRvZXMgbm90IGdldCBlc2NhcGVkLgogICAgICMgSG93ZXZlciBpbiBlaXRoZXIgY2FzZSB3ZSB3
YW50IHRvIHByZXNlcnZlIHRoZSBuZXdsaW5lLgotICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBzaXgu
dGV4dF90eXBlKSBvciBpc2luc3RhbmNlKG9iaiwgc2l4LmJpbmFyeV90eXBlKToKLSAgICAgICAg
cyA9IG9iagotICAgICAgICBpc19yZXByID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBzID0g
cHkuaW8uc2FmZXJlcHIob2JqKQotICAgICAgICBpc19yZXByID0gVHJ1ZQotICAgIGlmIGlzaW5z
dGFuY2Uocywgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgIHQgPSBzaXgudGV4dF90eXBlCi0gICAg
ZWxzZToKLSAgICAgICAgdCA9IHNpeC5iaW5hcnlfdHlwZQotICAgIHMgPSBzLnJlcGxhY2UodCgi
XG4iKSwgdCgiXG5+IikpLnJlcGxhY2UodCgiJSIpLCB0KCIlJSIpKQotICAgIGlmIGlzX3JlcHI6
Ci0gICAgICAgIHMgPSBzLnJlcGxhY2UodCgiXFxuIiksIHQoIlxufiIpKQotICAgIHJldHVybiBz
CisgICAgcmVwbGFjZXMgPSBbKCJcbiIsICJcbn4iKSwgKCIlIiwgIiUlIildCisgICAgaWYgbm90
IGlzaW5zdGFuY2Uob2JqLCBzdHIpOgorICAgICAgICBvYmogPSBzYWZlcmVwcihvYmopCisgICAg
ICAgIHJlcGxhY2VzLmFwcGVuZCgoIlxcbiIsICJcbn4iKSkKIAorICAgIGZvciByMSwgcjIgaW4g
cmVwbGFjZXM6CisgICAgICAgIG9iaiA9IG9iai5yZXBsYWNlKHIxLCByMikKIAotZGVmIF9zaG91
bGRfcmVwcl9nbG9iYWxfbmFtZShvYmopOgotICAgIHJldHVybiBub3QgaGFzYXR0cihvYmosICJf
X25hbWVfXyIpIGFuZCBub3QgY2FsbGFibGUob2JqKQorICAgIHJldHVybiBvYmoKIAogCi1kZWYg
X2Zvcm1hdF9ib29sb3AoZXhwbGFuYXRpb25zLCBpc19vcik6CitkZWYgX3Nob3VsZF9yZXByX2ds
b2JhbF9uYW1lKG9iajogb2JqZWN0KSAtPiBib29sOgorICAgIGlmIGNhbGxhYmxlKG9iaik6Cisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gbm90IGhhc2F0
dHIob2JqLCAiX19uYW1lX18iKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHJldHVy
biBUcnVlCisKKworZGVmIF9mb3JtYXRfYm9vbG9wKGV4cGxhbmF0aW9uczogSXRlcmFibGVbc3Ry
XSwgaXNfb3I6IGJvb2wpIC0+IHN0cjoKICAgICBleHBsYW5hdGlvbiA9ICIoIiArIChpc19vciBh
bmQgIiBvciAiIG9yICIgYW5kICIpLmpvaW4oZXhwbGFuYXRpb25zKSArICIpIgotICAgIGlmIGlz
aW5zdGFuY2UoZXhwbGFuYXRpb24sIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICB0ID0gc2l4LnRl
eHRfdHlwZQotICAgIGVsc2U6Ci0gICAgICAgIHQgPSBzaXguYmluYXJ5X3R5cGUKLSAgICByZXR1
cm4gZXhwbGFuYXRpb24ucmVwbGFjZSh0KCIlIiksIHQoIiUlIikpCisgICAgcmV0dXJuIGV4cGxh
bmF0aW9uLnJlcGxhY2UoIiUiLCAiJSUiKQogCiAKLWRlZiBfY2FsbF9yZXByY29tcGFyZShvcHMs
IHJlc3VsdHMsIGV4cGxzLCBlYWNoX29iaik6CitkZWYgX2NhbGxfcmVwcmNvbXBhcmUoCisgICAg
b3BzOiBTZXF1ZW5jZVtzdHJdLAorICAgIHJlc3VsdHM6IFNlcXVlbmNlW2Jvb2xdLAorICAgIGV4
cGxzOiBTZXF1ZW5jZVtzdHJdLAorICAgIGVhY2hfb2JqOiBTZXF1ZW5jZVtvYmplY3RdLAorKSAt
PiBzdHI6CiAgICAgZm9yIGksIHJlcywgZXhwbCBpbiB6aXAocmFuZ2UobGVuKG9wcykpLCByZXN1
bHRzLCBleHBscyk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRvbmUgPSBub3QgcmVzCkBA
IC00NTksOSArNDc5LDIwIEBAIGRlZiBfY2FsbF9yZXByY29tcGFyZShvcHMsIHJlc3VsdHMsIGV4
cGxzLCBlYWNoX29iaik6CiAgICAgcmV0dXJuIGV4cGwKIAogCi11bmFyeV9tYXAgPSB7YXN0Lk5v
dDogIm5vdCAlcyIsIGFzdC5JbnZlcnQ6ICJ+JXMiLCBhc3QuVVN1YjogIi0lcyIsIGFzdC5VQWRk
OiAiKyVzIn0KK2RlZiBfY2FsbF9hc3NlcnRpb25fcGFzcyhsaW5lbm86IGludCwgb3JpZzogc3Ry
LCBleHBsOiBzdHIpIC0+IE5vbmU6CisgICAgaWYgdXRpbC5fYXNzZXJ0aW9uX3Bhc3MgaXMgbm90
IE5vbmU6CisgICAgICAgIHV0aWwuX2Fzc2VydGlvbl9wYXNzKGxpbmVubywgb3JpZywgZXhwbCkK
IAotYmlub3BfbWFwID0geworCitkZWYgX2NoZWNrX2lmX2Fzc2VydGlvbl9wYXNzX2ltcGwoKSAt
PiBib29sOgorICAgICIiIkNoZWNrIGlmIGFueSBwbHVnaW5zIGltcGxlbWVudCB0aGUgcHl0ZXN0
X2Fzc2VydGlvbl9wYXNzIGhvb2sKKyAgICBpbiBvcmRlciBub3QgdG8gZ2VuZXJhdGUgZXhwbGFu
YXRpb24gdW5lY2Vzc2FyaWx5IChtaWdodCBiZSBleHBlbnNpdmUpLiIiIgorICAgIHJldHVybiBU
cnVlIGlmIHV0aWwuX2Fzc2VydGlvbl9wYXNzIGVsc2UgRmFsc2UKKworCitVTkFSWV9NQVAgPSB7
YXN0Lk5vdDogIm5vdCAlcyIsIGFzdC5JbnZlcnQ6ICJ+JXMiLCBhc3QuVVN1YjogIi0lcyIsIGFz
dC5VQWRkOiAiKyVzIn0KKworQklOT1BfTUFQID0gewogICAgIGFzdC5CaXRPcjogInwiLAogICAg
IGFzdC5CaXRYb3I6ICJeIiwKICAgICBhc3QuQml0QW5kOiAiJiIsCkBAIC00ODQsMjAgKzUxNSw4
IEBAIGJpbm9wX21hcCA9IHsKICAgICBhc3QuSXNOb3Q6ICJpcyBub3QiLAogICAgIGFzdC5Jbjog
ImluIiwKICAgICBhc3QuTm90SW46ICJub3QgaW4iLAorICAgIGFzdC5NYXRNdWx0OiAiQCIsCiB9
Ci0jIFB5dGhvbiAzLjUrIGNvbXBhdGliaWxpdHkKLXRyeToKLSAgICBiaW5vcF9tYXBbYXN0Lk1h
dE11bHRdID0gIkAiCi1leGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgcGFzcwotCi0jIFB5dGhv
biAzLjQrIGNvbXBhdGliaWxpdHkKLWlmIGhhc2F0dHIoYXN0LCAiTmFtZUNvbnN0YW50Iik6Ci0g
ICAgX05hbWVDb25zdGFudCA9IGFzdC5OYW1lQ29uc3RhbnQKLWVsc2U6Ci0KLSAgICBkZWYgX05h
bWVDb25zdGFudChjKToKLSAgICAgICAgcmV0dXJuIGFzdC5OYW1lKHN0cihjKSwgYXN0LkxvYWQo
KSkKIAogCiBkZWYgc2V0X2xvY2F0aW9uKG5vZGUsIGxpbmVubywgY29sX29mZnNldCk6CkBAIC01
MTUsNiArNTM0LDYwIEBAIGRlZiBzZXRfbG9jYXRpb24obm9kZSwgbGluZW5vLCBjb2xfb2Zmc2V0
KToKICAgICByZXR1cm4gbm9kZQogCiAKK2RlZiBfZ2V0X2Fzc2VydGlvbl9leHBycyhzcmM6IGJ5
dGVzKSAtPiBEaWN0W2ludCwgc3RyXToKKyAgICAiIiJSZXR1cm4gYSBtYXBwaW5nIGZyb20ge2xp
bmVubzogImFzc2VydGlvbiB0ZXN0IGV4cHJlc3Npb24ifS4iIiIKKyAgICByZXQgPSB7fSAgIyB0
eXBlOiBEaWN0W2ludCwgc3RyXQorCisgICAgZGVwdGggPSAwCisgICAgbGluZXMgPSBbXSAgIyB0
eXBlOiBMaXN0W3N0cl0KKyAgICBhc3NlcnRfbGluZW5vID0gTm9uZSAgIyB0eXBlOiBPcHRpb25h
bFtpbnRdCisgICAgc2Vlbl9saW5lcyA9IHNldCgpICAjIHR5cGU6IFNldFtpbnRdCisKKyAgICBk
ZWYgX3dyaXRlX2FuZF9yZXNldCgpIC0+IE5vbmU6CisgICAgICAgIG5vbmxvY2FsIGRlcHRoLCBs
aW5lcywgYXNzZXJ0X2xpbmVubywgc2Vlbl9saW5lcworICAgICAgICBhc3NlcnQgYXNzZXJ0X2xp
bmVubyBpcyBub3QgTm9uZQorICAgICAgICByZXRbYXNzZXJ0X2xpbmVub10gPSAiIi5qb2luKGxp
bmVzKS5yc3RyaXAoKS5yc3RyaXAoIlxcIikKKyAgICAgICAgZGVwdGggPSAwCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgYXNzZXJ0X2xpbmVubyA9IE5vbmUKKyAgICAgICAgc2Vlbl9saW5l
cyA9IHNldCgpCisKKyAgICB0b2tlbnMgPSB0b2tlbml6ZS50b2tlbml6ZShpby5CeXRlc0lPKHNy
YykucmVhZGxpbmUpCisgICAgZm9yIHRwLCBzb3VyY2UsIChsaW5lbm8sIG9mZnNldCksIF8sIGxp
bmUgaW4gdG9rZW5zOgorICAgICAgICBpZiB0cCA9PSB0b2tlbml6ZS5OQU1FIGFuZCBzb3VyY2Ug
PT0gImFzc2VydCI6CisgICAgICAgICAgICBhc3NlcnRfbGluZW5vID0gbGluZW5vCisgICAgICAg
IGVsaWYgYXNzZXJ0X2xpbmVubyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMga2VlcCB0cmFj
ayBvZiBkZXB0aCBmb3IgdGhlIGFzc2VydC1tZXNzYWdlIGAsYCBsb29rdXAKKyAgICAgICAgICAg
IGlmIHRwID09IHRva2VuaXplLk9QIGFuZCBzb3VyY2UgaW4gIihbeyI6CisgICAgICAgICAgICAg
ICAgZGVwdGggKz0gMQorICAgICAgICAgICAgZWxpZiB0cCA9PSB0b2tlbml6ZS5PUCBhbmQgc291
cmNlIGluICIpXX0iOgorICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAg
aWYgbm90IGxpbmVzOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lW29mZnNldDpd
KQorICAgICAgICAgICAgICAgIHNlZW5fbGluZXMuYWRkKGxpbmVubykKKyAgICAgICAgICAgICMg
YSBub24tbmVzdGVkIGNvbW1hIHNlcGFyYXRlcyB0aGUgZXhwcmVzc2lvbiBmcm9tIHRoZSBtZXNz
YWdlCisgICAgICAgICAgICBlbGlmIGRlcHRoID09IDAgYW5kIHRwID09IHRva2VuaXplLk9QIGFu
ZCBzb3VyY2UgPT0gIiwiOgorICAgICAgICAgICAgICAgICMgb25lIGxpbmUgYXNzZXJ0IHdpdGgg
bWVzc2FnZQorICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBzZWVuX2xpbmVzIGFuZCBsZW4o
bGluZXMpID09IDE6CisgICAgICAgICAgICAgICAgICAgIG9mZnNldF9pbl90cmltbWVkID0gb2Zm
c2V0ICsgbGVuKGxpbmVzWy0xXSkgLSBsZW4obGluZSkKKyAgICAgICAgICAgICAgICAgICAgbGlu
ZXNbLTFdID0gbGluZXNbLTFdWzpvZmZzZXRfaW5fdHJpbW1lZF0KKyAgICAgICAgICAgICAgICAj
IG11bHRpLWxpbmUgYXNzZXJ0IHdpdGggbWVzc2FnZQorICAgICAgICAgICAgICAgIGVsaWYgbGlu
ZW5vIGluIHNlZW5fbGluZXM6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzWy0xXSA9IGxpbmVz
Wy0xXVs6b2Zmc2V0XQorICAgICAgICAgICAgICAgICMgbXVsdGkgbGluZSBhc3NlcnQgd2l0aCBl
c2NhcGQgbmV3bGluZSBiZWZvcmUgbWVzc2FnZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lWzpvZmZzZXRdKQorICAgICAgICAgICAg
ICAgIF93cml0ZV9hbmRfcmVzZXQoKQorICAgICAgICAgICAgZWxpZiB0cCBpbiB7dG9rZW5pemUu
TkVXTElORSwgdG9rZW5pemUuRU5ETUFSS0VSfToKKyAgICAgICAgICAgICAgICBfd3JpdGVfYW5k
X3Jlc2V0KCkKKyAgICAgICAgICAgIGVsaWYgbGluZXMgYW5kIGxpbmVubyBub3QgaW4gc2Vlbl9s
aW5lczoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAg
ICBzZWVuX2xpbmVzLmFkZChsaW5lbm8pCisKKyAgICByZXR1cm4gcmV0CisKKwogY2xhc3MgQXNz
ZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICAiIiJBc3NlcnRpb24gcmV3cml0
aW5nIGltcGxlbWVudGF0aW9uLgogCkBAIC01MzEsNyArNjA0LDggQEAgY2xhc3MgQXNzZXJ0aW9u
UmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICBvcmlnaW5hbCBhc3NlcnQgc3RhdGVtZW50
OiBpdCByZXdyaXRlcyB0aGUgdGVzdCBvZiBhbiBhc3NlcnRpb24KICAgICB0byBwcm92aWRlIGlu
dGVybWVkaWF0ZSB2YWx1ZXMgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiBpZiBzdGF0ZW1lbnQKICAg
ICB3aGljaCByYWlzZXMgYW4gYXNzZXJ0aW9uIGVycm9yIHdpdGggYSBkZXRhaWxlZCBleHBsYW5h
dGlvbiBpbgotICAgIGNhc2UgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UuCisgICAgY2FzZSB0aGUg
ZXhwcmVzc2lvbiBpcyBmYWxzZSBhbmQgY2FsbHMgcHl0ZXN0X2Fzc2VydGlvbl9wYXNzIGhvb2sK
KyAgICBpZiBleHByZXNzaW9uIGlzIHRydWUuCiAKICAgICBGb3IgdGhpcyAudmlzaXRfQXNzZXJ0
KCkgdXNlcyB0aGUgdmlzaXRvciBwYXR0ZXJuIHRvIHZpc2l0IGFsbCB0aGUKICAgICBBU1Qgbm9k
ZXMgb2YgdGhlIGFzdC5Bc3NlcnQudGVzdCBmaWVsZCwgZWFjaCB2aXNpdCBjYWxsIHJldHVybmlu
ZwpAQCAtNTQ5LDkgKzYyMywxMCBAQCBjbGFzcyBBc3NlcnRpb25SZXdyaXRlcihhc3QuTm9kZVZp
c2l0b3IpOgogICAgICAgIGJ5IHN0YXRlbWVudHMuICBWYXJpYWJsZXMgYXJlIGNyZWF0ZWQgdXNp
bmcgLnZhcmlhYmxlKCkgYW5kCiAgICAgICAgaGF2ZSB0aGUgZm9ybSBvZiAiQHB5X2Fzc2VydDAi
LgogCi0gICAgOm9uX2ZhaWx1cmU6IFRoZSBBU1Qgc3RhdGVtZW50cyB3aGljaCB3aWxsIGJlIGV4
ZWN1dGVkIGlmIHRoZQotICAgICAgIGFzc2VydGlvbiB0ZXN0IGZhaWxzLiAgVGhpcyBpcyB0aGUg
Y29kZSB3aGljaCB3aWxsIGNvbnN0cnVjdAotICAgICAgIHRoZSBmYWlsdXJlIG1lc3NhZ2UgYW5k
IHJhaXNlcyB0aGUgQXNzZXJ0aW9uRXJyb3IuCisgICAgOmV4cGxfc3RtdHM6IFRoZSBBU1Qgc3Rh
dGVtZW50cyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIHRvIGdldAorICAgICAgIGRhdGEgZnJvbSB0
aGUgYXNzZXJ0aW9uLiAgVGhpcyBpcyB0aGUgY29kZSB3aGljaCB3aWxsIGNvbnN0cnVjdAorICAg
ICAgIHRoZSBkZXRhaWxlZCBhc3NlcnRpb24gbWVzc2FnZSB0aGF0IGlzIHVzZWQgaW4gdGhlIEFz
c2VydGlvbkVycm9yCisgICAgICAgb3IgZm9yIHRoZSBweXRlc3RfYXNzZXJ0aW9uX3Bhc3MgaG9v
ay4KIAogICAgIDpleHBsYW5hdGlvbl9zcGVjaWZpZXJzOiBBIGRpY3QgZmlsbGVkIGJ5IC5leHBs
YW5hdGlvbl9wYXJhbSgpCiAgICAgICAgd2l0aCAlLWZvcm1hdHRpbmcgcGxhY2Vob2xkZXJzIGFu
ZCB0aGVpciBjb3JyZXNwb25kaW5nCkBAIC01NjQsMTUgKzYzOSwyNyBAQCBjbGFzcyBBc3NlcnRp
b25SZXdyaXRlcihhc3QuTm9kZVZpc2l0b3IpOgogCiAgICAgVGhpcyBzdGF0ZSBpcyByZXNldCBv
biBldmVyeSBuZXcgYXNzZXJ0IHN0YXRlbWVudCB2aXNpdGVkIGFuZCB1c2VkCiAgICAgYnkgdGhl
IG90aGVyIHZpc2l0b3JzLgotCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9k
dWxlX3BhdGgsIGNvbmZpZyk6Ci0gICAgICAgIHN1cGVyKEFzc2VydGlvblJld3JpdGVyLCBzZWxm
KS5fX2luaXRfXygpCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBtb2R1bGVfcGF0
aDogT3B0aW9uYWxbc3RyXSwgY29uZmlnOiBPcHRpb25hbFtDb25maWddLCBzb3VyY2U6IGJ5dGVz
CisgICAgKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICAgc2Vs
Zi5tb2R1bGVfcGF0aCA9IG1vZHVsZV9wYXRoCiAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmln
CisgICAgICAgIGlmIGNvbmZpZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZW5hYmxl
X2Fzc2VydGlvbl9wYXNzX2hvb2sgPSBjb25maWcuZ2V0aW5pKAorICAgICAgICAgICAgICAgICJl
bmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9vayIKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuZW5hYmxlX2Fzc2VydGlvbl9wYXNzX2hvb2sgPSBGYWxzZQorICAg
ICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQorCisgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4
c2l6ZT0xKQorICAgIGRlZiBfYXNzZXJ0X2V4cHJfdG9fbGluZW5vKHNlbGYpIC0+IERpY3RbaW50
LCBzdHJdOgorICAgICAgICByZXR1cm4gX2dldF9hc3NlcnRpb25fZXhwcnMoc2VsZi5zb3VyY2Up
CiAKLSAgICBkZWYgcnVuKHNlbGYsIG1vZCk6CisgICAgZGVmIHJ1bihzZWxmLCBtb2Q6IGFzdC5N
b2R1bGUpIC0+IE5vbmU6CiAgICAgICAgICIiIkZpbmQgYWxsIGFzc2VydCBzdGF0ZW1lbnRzIGlu
ICptb2QqIGFuZCByZXdyaXRlIHRoZW0uIiIiCiAgICAgICAgIGlmIG5vdCBtb2QuYm9keToKICAg
ICAgICAgICAgICMgTm90aGluZyB0byBkby4KQEAgLTU4MCw3ICs2NjcsNyBAQCBjbGFzcyBBc3Nl
cnRpb25SZXdyaXRlcihhc3QuTm9kZVZpc2l0b3IpOgogICAgICAgICAjIEluc2VydCBzb21lIHNw
ZWNpYWwgaW1wb3J0cyBhdCB0aGUgdG9wIG9mIHRoZSBtb2R1bGUgYnV0IGFmdGVyIGFueQogICAg
ICAgICAjIGRvY3N0cmluZ3MgYW5kIF9fZnV0dXJlX18gaW1wb3J0cy4KICAgICAgICAgYWxpYXNl
cyA9IFsKLSAgICAgICAgICAgIGFzdC5hbGlhcyhweS5idWlsdGluLmJ1aWx0aW5zLl9fbmFtZV9f
LCAiQHB5X2J1aWx0aW5zIiksCisgICAgICAgICAgICBhc3QuYWxpYXMoImJ1aWx0aW5zIiwgIkBw
eV9idWlsdGlucyIpLAogICAgICAgICAgICAgYXN0LmFsaWFzKCJfcHl0ZXN0LmFzc2VydGlvbi5y
ZXdyaXRlIiwgIkBweXRlc3RfYXIiKSwKICAgICAgICAgXQogICAgICAgICBkb2MgPSBnZXRhdHRy
KG1vZCwgImRvY3N0cmluZyIsIE5vbmUpCkBAIC02MDAsMTMgKzY4NywxOCBAQCBjbGFzcyBBc3Nl
cnRpb25SZXdyaXRlcihhc3QuTm9kZVZpc2l0b3IpOgogICAgICAgICAgICAgICAgICAgICByZXR1
cm4KICAgICAgICAgICAgICAgICBleHBlY3RfZG9jc3RyaW5nID0gRmFsc2UKICAgICAgICAgICAg
IGVsaWYgKAotICAgICAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKGl0ZW0sIGFzdC5JbXBvcnRG
cm9tKQotICAgICAgICAgICAgICAgIG9yIGl0ZW0ubGV2ZWwgPiAwCi0gICAgICAgICAgICAgICAg
b3IgaXRlbS5tb2R1bGUgIT0gIl9fZnV0dXJlX18iCisgICAgICAgICAgICAgICAgaXNpbnN0YW5j
ZShpdGVtLCBhc3QuSW1wb3J0RnJvbSkKKyAgICAgICAgICAgICAgICBhbmQgaXRlbS5sZXZlbCA9
PSAwCisgICAgICAgICAgICAgICAgYW5kIGl0ZW0ubW9kdWxlID09ICJfX2Z1dHVyZV9fIgogICAg
ICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBsaW5lbm8gPSBpdGVtLmxpbmVubworICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsK
ICAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgICMgU3BlY2lhbCBjYXNlOiBmb3IgYSBkZWNv
cmF0ZWQgZnVuY3Rpb24sIHNldCB0aGUgbGluZW5vIHRvIHRoYXQgb2YgdGhlCisgICAgICAgICMg
Zmlyc3QgZGVjb3JhdG9yLCBub3QgdGhlIGBkZWZgLiBJc3N1ZSAjNDk4NC4KKyAgICAgICAgaWYg
aXNpbnN0YW5jZShpdGVtLCBhc3QuRnVuY3Rpb25EZWYpIGFuZCBpdGVtLmRlY29yYXRvcl9saXN0
OgorICAgICAgICAgICAgbGluZW5vID0gaXRlbS5kZWNvcmF0b3JfbGlzdFswXS5saW5lbm8KICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGxpbmVubyA9IGl0ZW0ubGluZW5vCiAgICAgICAgIGlt
cG9ydHMgPSBbCkBAIC02MTQsMTIgKzcwNiwxMiBAQCBjbGFzcyBBc3NlcnRpb25SZXdyaXRlcihh
c3QuTm9kZVZpc2l0b3IpOgogICAgICAgICBdCiAgICAgICAgIG1vZC5ib2R5W3Bvczpwb3NdID0g
aW1wb3J0cwogICAgICAgICAjIENvbGxlY3QgYXNzZXJ0cy4KLSAgICAgICAgbm9kZXMgPSBbbW9k
XQorICAgICAgICBub2RlcyA9IFttb2RdICAjIHR5cGU6IExpc3RbYXN0LkFTVF0KICAgICAgICAg
d2hpbGUgbm9kZXM6CiAgICAgICAgICAgICBub2RlID0gbm9kZXMucG9wKCkKICAgICAgICAgICAg
IGZvciBuYW1lLCBmaWVsZCBpbiBhc3QuaXRlcl9maWVsZHMobm9kZSk6CiAgICAgICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShmaWVsZCwgbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgIG5ldyA9
IFtdCisgICAgICAgICAgICAgICAgICAgIG5ldyA9IFtdICAjIHR5cGU6IExpc3RbYXN0LkFTVF0K
ICAgICAgICAgICAgICAgICAgICAgZm9yIGksIGNoaWxkIGluIGVudW1lcmF0ZShmaWVsZCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBhc3QuQXNzZXJ0KToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBhc3NlcnQuCkBAIC02MzEs
NTkgKzcyMyw1NyBAQCBjbGFzcyBBc3NlcnRpb25SZXdyaXRlcihhc3QuTm9kZVZpc2l0b3IpOgog
ICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKG5vZGUsIG5hbWUsIG5ldykKICAgICAgICAgICAg
ICAgICBlbGlmICgKICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShmaWVsZCwgYXN0LkFT
VCkKLSAgICAgICAgICAgICAgICAgICAgYW5kCiAgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qg
cmVjdXJzZSBpbnRvIGV4cHJlc3Npb25zIGFzIHRoZXkgY2FuJ3QgY29udGFpbgogICAgICAgICAg
ICAgICAgICAgICAjIGFzc2VydHMuCi0gICAgICAgICAgICAgICAgICAgIG5vdCBpc2luc3RhbmNl
KGZpZWxkLCBhc3QuZXhwcikKKyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBpc2luc3RhbmNl
KGZpZWxkLCBhc3QuZXhwcikKICAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgICAg
ICBub2Rlcy5hcHBlbmQoZmllbGQpCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGlzX3Jl
d3JpdGVfZGlzYWJsZWQoZG9jc3RyaW5nKToKKyAgICBkZWYgaXNfcmV3cml0ZV9kaXNhYmxlZChk
b2NzdHJpbmc6IHN0cikgLT4gYm9vbDoKICAgICAgICAgcmV0dXJuICJQWVRFU1RfRE9OVF9SRVdS
SVRFIiBpbiBkb2NzdHJpbmcKIAotICAgIGRlZiB2YXJpYWJsZShzZWxmKToKKyAgICBkZWYgdmFy
aWFibGUoc2VsZikgLT4gc3RyOgogICAgICAgICAiIiJHZXQgYSBuZXcgdmFyaWFibGUuIiIiCiAg
ICAgICAgICMgVXNlIGEgY2hhcmFjdGVyIGludmFsaWQgaW4gcHl0aG9uIGlkZW50aWZpZXJzIHRv
IGF2b2lkIGNsYXNoaW5nLgogICAgICAgICBuYW1lID0gIkBweV9hc3NlcnQiICsgc3RyKG5leHQo
c2VsZi52YXJpYWJsZV9jb3VudGVyKSkKICAgICAgICAgc2VsZi52YXJpYWJsZXMuYXBwZW5kKG5h
bWUpCiAgICAgICAgIHJldHVybiBuYW1lCiAKLSAgICBkZWYgYXNzaWduKHNlbGYsIGV4cHIpOgor
ICAgIGRlZiBhc3NpZ24oc2VsZiwgZXhwcjogYXN0LmV4cHIpIC0+IGFzdC5OYW1lOgogICAgICAg
ICAiIiJHaXZlICpleHByKiBhIG5hbWUuIiIiCiAgICAgICAgIG5hbWUgPSBzZWxmLnZhcmlhYmxl
KCkKICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuQXNzaWduKFthc3QuTmFtZShu
YW1lLCBhc3QuU3RvcmUoKSldLCBleHByKSkKICAgICAgICAgcmV0dXJuIGFzdC5OYW1lKG5hbWUs
IGFzdC5Mb2FkKCkpCiAKLSAgICBkZWYgZGlzcGxheShzZWxmLCBleHByKToKLSAgICAgICAgIiIi
Q2FsbCBweS5pby5zYWZlcmVwciBvbiB0aGUgZXhwcmVzc2lvbi4iIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuaGVscGVyKCJzYWZlcmVwciIsIGV4cHIpCisgICAgZGVmIGRpc3BsYXkoc2VsZiwgZXhw
cjogYXN0LmV4cHIpIC0+IGFzdC5leHByOgorICAgICAgICAiIiJDYWxsIHNhZmVyZXByIG9uIHRo
ZSBleHByZXNzaW9uLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5oZWxwZXIoIl9zYWZlcmVwciIs
IGV4cHIpCiAKLSAgICBkZWYgaGVscGVyKHNlbGYsIG5hbWUsICphcmdzKToKKyAgICBkZWYgaGVs
cGVyKHNlbGYsIG5hbWU6IHN0ciwgKmFyZ3M6IGFzdC5leHByKSAtPiBhc3QuZXhwcjoKICAgICAg
ICAgIiIiQ2FsbCBhIGhlbHBlciBpbiB0aGlzIG1vZHVsZS4iIiIKICAgICAgICAgcHlfbmFtZSA9
IGFzdC5OYW1lKCJAcHl0ZXN0X2FyIiwgYXN0LkxvYWQoKSkKLSAgICAgICAgYXR0ciA9IGFzdC5B
dHRyaWJ1dGUocHlfbmFtZSwgIl8iICsgbmFtZSwgYXN0LkxvYWQoKSkKLSAgICAgICAgcmV0dXJu
IGFzdF9DYWxsKGF0dHIsIGxpc3QoYXJncyksIFtdKQorICAgICAgICBhdHRyID0gYXN0LkF0dHJp
YnV0ZShweV9uYW1lLCBuYW1lLCBhc3QuTG9hZCgpKQorICAgICAgICByZXR1cm4gYXN0LkNhbGwo
YXR0ciwgbGlzdChhcmdzKSwgW10pCiAKLSAgICBkZWYgYnVpbHRpbihzZWxmLCBuYW1lKToKKyAg
ICBkZWYgYnVpbHRpbihzZWxmLCBuYW1lOiBzdHIpIC0+IGFzdC5BdHRyaWJ1dGU6CiAgICAgICAg
ICIiIlJldHVybiB0aGUgYnVpbHRpbiBjYWxsZWQgKm5hbWUqLiIiIgogICAgICAgICBidWlsdGlu
X25hbWUgPSBhc3QuTmFtZSgiQHB5X2J1aWx0aW5zIiwgYXN0LkxvYWQoKSkKICAgICAgICAgcmV0
dXJuIGFzdC5BdHRyaWJ1dGUoYnVpbHRpbl9uYW1lLCBuYW1lLCBhc3QuTG9hZCgpKQogCi0gICAg
ZGVmIGV4cGxhbmF0aW9uX3BhcmFtKHNlbGYsIGV4cHIpOgorICAgIGRlZiBleHBsYW5hdGlvbl9w
YXJhbShzZWxmLCBleHByOiBhc3QuZXhwcikgLT4gc3RyOgogICAgICAgICAiIiJSZXR1cm4gYSBu
ZXcgbmFtZWQgJS1mb3JtYXR0aW5nIHBsYWNlaG9sZGVyIGZvciBleHByLgogCiAgICAgICAgIFRo
aXMgY3JlYXRlcyBhICUtZm9ybWF0dGluZyBwbGFjZWhvbGRlciBmb3IgZXhwciBpbiB0aGUKICAg
ICAgICAgY3VycmVudCBmb3JtYXR0aW5nIGNvbnRleHQsIGUuZy4gYGAlKHB5MClzYGAuICBUaGUg
cGxhY2Vob2xkZXIKICAgICAgICAgYW5kIGV4cHIgYXJlIHBsYWNlZCBpbiB0aGUgY3VycmVudCBm
b3JtYXQgY29udGV4dCBzbyB0aGF0IGl0CiAgICAgICAgIGNhbiBiZSB1c2VkIG9uIHRoZSBuZXh0
IGNhbGwgdG8gLnBvcF9mb3JtYXRfY29udGV4dCgpLgotCiAgICAgICAgICIiIgogICAgICAgICBz
cGVjaWZpZXIgPSAicHkiICsgc3RyKG5leHQoc2VsZi52YXJpYWJsZV9jb3VudGVyKSkKICAgICAg
ICAgc2VsZi5leHBsYW5hdGlvbl9zcGVjaWZpZXJzW3NwZWNpZmllcl0gPSBleHByCiAgICAgICAg
IHJldHVybiAiJSgiICsgc3BlY2lmaWVyICsgIilzIgogCi0gICAgZGVmIHB1c2hfZm9ybWF0X2Nv
bnRleHQoc2VsZik6CisgICAgZGVmIHB1c2hfZm9ybWF0X2NvbnRleHQoc2VsZikgLT4gTm9uZToK
ICAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGZvcm1hdHRpbmcgY29udGV4dC4KIAogICAgICAgICBU
aGUgZm9ybWF0IGNvbnRleHQgaXMgdXNlZCBmb3Igd2hlbiBhbiBleHBsYW5hdGlvbiB3YW50cyB0
bwpAQCAtNjkyLDE5ICs3ODIsMTcgQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVW
aXNpdG9yKToKICAgICAgICAgLmV4cGxhbmF0aW9uX3BhcmFtKCkuICBGaW5hbGx5IC5wb3BfZm9y
bWF0X2NvbnRleHQoKSBpcyB1c2VkCiAgICAgICAgIHRvIGZvcm1hdCBhIHN0cmluZyBvZiAlLWZv
cm1hdHRlZCB2YWx1ZXMgYXMgYWRkZWQgYnkKICAgICAgICAgLmV4cGxhbmF0aW9uX3BhcmFtKCku
Ci0KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVycyA9IHt9
CisgICAgICAgIHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVycyA9IHt9ICAjIHR5cGU6IERpY3Rb
c3RyLCBhc3QuZXhwcl0KICAgICAgICAgc2VsZi5zdGFjay5hcHBlbmQoc2VsZi5leHBsYW5hdGlv
bl9zcGVjaWZpZXJzKQogCi0gICAgZGVmIHBvcF9mb3JtYXRfY29udGV4dChzZWxmLCBleHBsX2V4
cHIpOgorICAgIGRlZiBwb3BfZm9ybWF0X2NvbnRleHQoc2VsZiwgZXhwbF9leHByOiBhc3QuZXhw
cikgLT4gYXN0Lk5hbWU6CiAgICAgICAgICIiIkZvcm1hdCB0aGUgJS1mb3JtYXR0ZWQgc3RyaW5n
IHdpdGggY3VycmVudCBmb3JtYXQgY29udGV4dC4KIAotICAgICAgICBUaGUgZXhwbF9leHByIHNo
b3VsZCBiZSBhbiBhc3QuU3RyIGluc3RhbmNlIGNvbnN0cnVjdGVkIGZyb20KKyAgICAgICAgVGhl
IGV4cGxfZXhwciBzaG91bGQgYmUgYW4gc3RyIGFzdC5leHByIGluc3RhbmNlIGNvbnN0cnVjdGVk
IGZyb20KICAgICAgICAgdGhlICUtcGxhY2Vob2xkZXJzIGNyZWF0ZWQgYnkgLmV4cGxhbmF0aW9u
X3BhcmFtKCkuICBUaGlzIHdpbGwKLSAgICAgICAgYWRkIHRoZSByZXF1aXJlZCBjb2RlIHRvIGZv
cm1hdCBzYWlkIHN0cmluZyB0byAub25fZmFpbHVyZSBhbmQKKyAgICAgICAgYWRkIHRoZSByZXF1
aXJlZCBjb2RlIHRvIGZvcm1hdCBzYWlkIHN0cmluZyB0byAuZXhwbF9zdG10cyBhbmQKICAgICAg
ICAgcmV0dXJuIHRoZSBhc3QuTmFtZSBpbnN0YW5jZSBvZiB0aGUgZm9ybWF0dGVkIHN0cmluZy4K
LQogICAgICAgICAiIiIKICAgICAgICAgY3VycmVudCA9IHNlbGYuc3RhY2sucG9wKCkKICAgICAg
ICAgaWYgc2VsZi5zdGFjazoKQEAgLTcxMywxMzIgKzgwMSwxOTMgQEAgY2xhc3MgQXNzZXJ0aW9u
UmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICAgICAgZm9ybWF0X2RpY3QgPSBhc3QuRGlj
dChrZXlzLCBsaXN0KGN1cnJlbnQudmFsdWVzKCkpKQogICAgICAgICBmb3JtID0gYXN0LkJpbk9w
KGV4cGxfZXhwciwgYXN0Lk1vZCgpLCBmb3JtYXRfZGljdCkKICAgICAgICAgbmFtZSA9ICJAcHlf
Zm9ybWF0IiArIHN0cihuZXh0KHNlbGYudmFyaWFibGVfY291bnRlcikpCi0gICAgICAgIHNlbGYu
b25fZmFpbHVyZS5hcHBlbmQoYXN0LkFzc2lnbihbYXN0Lk5hbWUobmFtZSwgYXN0LlN0b3JlKCkp
XSwgZm9ybSkpCisgICAgICAgIGlmIHNlbGYuZW5hYmxlX2Fzc2VydGlvbl9wYXNzX2hvb2s6Cisg
ICAgICAgICAgICBzZWxmLmZvcm1hdF92YXJpYWJsZXMuYXBwZW5kKG5hbWUpCisgICAgICAgIHNl
bGYuZXhwbF9zdG10cy5hcHBlbmQoYXN0LkFzc2lnbihbYXN0Lk5hbWUobmFtZSwgYXN0LlN0b3Jl
KCkpXSwgZm9ybSkpCiAgICAgICAgIHJldHVybiBhc3QuTmFtZShuYW1lLCBhc3QuTG9hZCgpKQog
Ci0gICAgZGVmIGdlbmVyaWNfdmlzaXQoc2VsZiwgbm9kZSk6CisgICAgZGVmIGdlbmVyaWNfdmlz
aXQoc2VsZiwgbm9kZTogYXN0LkFTVCkgLT4gVHVwbGVbYXN0Lk5hbWUsIHN0cl06CiAgICAgICAg
ICIiIkhhbmRsZSBleHByZXNzaW9ucyB3ZSBkb24ndCBoYXZlIGN1c3RvbSBjb2RlIGZvci4iIiIK
ICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uobm9kZSwgYXN0LmV4cHIpCiAgICAgICAgIHJlcyA9
IHNlbGYuYXNzaWduKG5vZGUpCiAgICAgICAgIHJldHVybiByZXMsIHNlbGYuZXhwbGFuYXRpb25f
cGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCiAKLSAgICBkZWYgdmlzaXRfQXNzZXJ0KHNlbGYsIGFz
c2VydF8pOgorICAgIGRlZiB2aXNpdF9Bc3NlcnQoc2VsZiwgYXNzZXJ0XzogYXN0LkFzc2VydCkg
LT4gTGlzdFthc3Quc3RtdF06CiAgICAgICAgICIiIlJldHVybiB0aGUgQVNUIHN0YXRlbWVudHMg
dG8gcmVwbGFjZSB0aGUgYXN0LkFzc2VydCBpbnN0YW5jZS4KIAogICAgICAgICBUaGlzIHJld3Jp
dGVzIHRoZSB0ZXN0IG9mIGFuIGFzc2VydGlvbiB0byBwcm92aWRlCiAgICAgICAgIGludGVybWVk
aWF0ZSB2YWx1ZXMgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiBpZiBzdGF0ZW1lbnQgd2hpY2gKICAg
ICAgICAgcmFpc2VzIGFuIGFzc2VydGlvbiBlcnJvciB3aXRoIGEgZGV0YWlsZWQgZXhwbGFuYXRp
b24gaW4gY2FzZQogICAgICAgICB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KLQogICAgICAgICAi
IiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShhc3NlcnRfLnRlc3QsIGFzdC5UdXBsZSkgYW5kIHNl
bGYuY29uZmlnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZnNsb2NhdGlvbiA9IChzZWxmLm1v
ZHVsZV9wYXRoLCBhc3NlcnRfLmxpbmVubykKLSAgICAgICAgICAgIHNlbGYuY29uZmlnLndhcm4o
Ci0gICAgICAgICAgICAgICAgIlIxIiwKLSAgICAgICAgICAgICAgICAiYXNzZXJ0aW9uIGlzIGFs
d2F5cyB0cnVlLCBwZXJoYXBzICIgInJlbW92ZSBwYXJlbnRoZXNlcz8iLAotICAgICAgICAgICAg
ICAgIGZzbG9jYXRpb249ZnNsb2NhdGlvbiwKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhc3NlcnRf
LnRlc3QsIGFzdC5UdXBsZSkgYW5kIGxlbihhc3NlcnRfLnRlc3QuZWx0cykgPj0gMToKKyAgICAg
ICAgICAgIGZyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RBc3NlcnRSZXdy
aXRlV2FybmluZworICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisKKyAgICAgICAgICAgICMg
VE9ETzogVGhpcyBhc3NlcnQgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCisgICAgICAgICAgICBhc3Nl
cnQgc2VsZi5tb2R1bGVfcGF0aCBpcyBub3QgTm9uZQorICAgICAgICAgICAgd2FybmluZ3Mud2Fy
bl9leHBsaWNpdCgKKyAgICAgICAgICAgICAgICBQeXRlc3RBc3NlcnRSZXdyaXRlV2FybmluZygK
KyAgICAgICAgICAgICAgICAgICAgImFzc2VydGlvbiBpcyBhbHdheXMgdHJ1ZSwgcGVyaGFwcyBy
ZW1vdmUgcGFyZW50aGVzZXM/IgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg
Y2F0ZWdvcnk9Tm9uZSwKKyAgICAgICAgICAgICAgICBmaWxlbmFtZT1mc3BhdGgoc2VsZi5tb2R1
bGVfcGF0aCksCisgICAgICAgICAgICAgICAgbGluZW5vPWFzc2VydF8ubGluZW5vLAogICAgICAg
ICAgICAgKQotICAgICAgICBzZWxmLnN0YXRlbWVudHMgPSBbXQotICAgICAgICBzZWxmLnZhcmlh
YmxlcyA9IFtdCisKKyAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0gW10gICMgdHlwZTogTGlzdFth
c3Quc3RtdF0KKyAgICAgICAgc2VsZi52YXJpYWJsZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0K
ICAgICAgICAgc2VsZi52YXJpYWJsZV9jb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KCkKLSAgICAg
ICAgc2VsZi5zdGFjayA9IFtdCi0gICAgICAgIHNlbGYub25fZmFpbHVyZSA9IFtdCisKKyAgICAg
ICAgaWYgc2VsZi5lbmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9vazoKKyAgICAgICAgICAgIHNlbGYu
Zm9ybWF0X3ZhcmlhYmxlcyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorCisgICAgICAgIHNlbGYu
c3RhY2sgPSBbXSAgIyB0eXBlOiBMaXN0W0RpY3Rbc3RyLCBhc3QuZXhwcl1dCisgICAgICAgIHNl
bGYuZXhwbF9zdG10cyA9IFtdICAjIHR5cGU6IExpc3RbYXN0LnN0bXRdCiAgICAgICAgIHNlbGYu
cHVzaF9mb3JtYXRfY29udGV4dCgpCiAgICAgICAgICMgUmV3cml0ZSBhc3NlcnQgaW50byBhIGJ1
bmNoIG9mIHN0YXRlbWVudHMuCiAgICAgICAgIHRvcF9jb25kaXRpb24sIGV4cGxhbmF0aW9uID0g
c2VsZi52aXNpdChhc3NlcnRfLnRlc3QpCi0gICAgICAgICMgQ3JlYXRlIGZhaWx1cmUgbWVzc2Fn
ZS4KLSAgICAgICAgYm9keSA9IHNlbGYub25fZmFpbHVyZQorCiAgICAgICAgIG5lZ2F0aW9uID0g
YXN0LlVuYXJ5T3AoYXN0Lk5vdCgpLCB0b3BfY29uZGl0aW9uKQotICAgICAgICBzZWxmLnN0YXRl
bWVudHMuYXBwZW5kKGFzdC5JZihuZWdhdGlvbiwgYm9keSwgW10pKQotICAgICAgICBpZiBhc3Nl
cnRfLm1zZzoKLSAgICAgICAgICAgIGFzc2VydG1zZyA9IHNlbGYuaGVscGVyKCJmb3JtYXRfYXNz
ZXJ0bXNnIiwgYXNzZXJ0Xy5tc2cpCi0gICAgICAgICAgICBleHBsYW5hdGlvbiA9ICJcbj5hc3Nl
cnQgIiArIGV4cGxhbmF0aW9uCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnRtc2cg
PSBhc3QuU3RyKCIiKQotICAgICAgICAgICAgZXhwbGFuYXRpb24gPSAiYXNzZXJ0ICIgKyBleHBs
YW5hdGlvbgotICAgICAgICB0ZW1wbGF0ZSA9IGFzdC5CaW5PcChhc3NlcnRtc2csIGFzdC5BZGQo
KSwgYXN0LlN0cihleHBsYW5hdGlvbikpCi0gICAgICAgIG1zZyA9IHNlbGYucG9wX2Zvcm1hdF9j
b250ZXh0KHRlbXBsYXRlKQotICAgICAgICBmbXQgPSBzZWxmLmhlbHBlcigiZm9ybWF0X2V4cGxh
bmF0aW9uIiwgbXNnKQotICAgICAgICBlcnJfbmFtZSA9IGFzdC5OYW1lKCJBc3NlcnRpb25FcnJv
ciIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIGV4YyA9IGFzdF9DYWxsKGVycl9uYW1lLCBbZm10XSwg
W10pCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKworICAgICAgICBpZiBz
ZWxmLmVuYWJsZV9hc3NlcnRpb25fcGFzc19ob29rOiAgIyBFeHBlcmltZW50YWwgcHl0ZXN0X2Fz
c2VydGlvbl9wYXNzIGhvb2sKKyAgICAgICAgICAgIG1zZyA9IHNlbGYucG9wX2Zvcm1hdF9jb250
ZXh0KGFzdC5TdHIoZXhwbGFuYXRpb24pKQorCisgICAgICAgICAgICAjIEZhaWxlZAorICAgICAg
ICAgICAgaWYgYXNzZXJ0Xy5tc2c6CisgICAgICAgICAgICAgICAgYXNzZXJ0bXNnID0gc2VsZi5o
ZWxwZXIoIl9mb3JtYXRfYXNzZXJ0bXNnIiwgYXNzZXJ0Xy5tc2cpCisgICAgICAgICAgICAgICAg
Z2x1ZXN0ciA9ICJcbj5hc3NlcnQgIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBhc3NlcnRtc2cgPSBhc3QuU3RyKCIiKQorICAgICAgICAgICAgICAgIGdsdWVzdHIgPSAiYXNz
ZXJ0ICIKKyAgICAgICAgICAgIGVycl9leHBsYW5hdGlvbiA9IGFzdC5CaW5PcChhc3QuU3RyKGds
dWVzdHIpLCBhc3QuQWRkKCksIG1zZykKKyAgICAgICAgICAgIGVycl9tc2cgPSBhc3QuQmluT3Ao
YXNzZXJ0bXNnLCBhc3QuQWRkKCksIGVycl9leHBsYW5hdGlvbikKKyAgICAgICAgICAgIGVycl9u
YW1lID0gYXN0Lk5hbWUoIkFzc2VydGlvbkVycm9yIiwgYXN0LkxvYWQoKSkKKyAgICAgICAgICAg
IGZtdCA9IHNlbGYuaGVscGVyKCJfZm9ybWF0X2V4cGxhbmF0aW9uIiwgZXJyX21zZykKKyAgICAg
ICAgICAgIGV4YyA9IGFzdC5DYWxsKGVycl9uYW1lLCBbZm10XSwgW10pCiAgICAgICAgICAgICBy
YWlzZV8gPSBhc3QuUmFpc2UoZXhjLCBOb25lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmFpc2VfID0gYXN0LlJhaXNlKGV4YywgTm9uZSwgTm9uZSkKLSAgICAgICAgYm9keS5hcHBlbmQo
cmFpc2VfKQorICAgICAgICAgICAgc3RhdGVtZW50c19mYWlsID0gW10KKyAgICAgICAgICAgIHN0
YXRlbWVudHNfZmFpbC5leHRlbmQoc2VsZi5leHBsX3N0bXRzKQorICAgICAgICAgICAgc3RhdGVt
ZW50c19mYWlsLmFwcGVuZChyYWlzZV8pCisKKyAgICAgICAgICAgICMgUGFzc2VkCisgICAgICAg
ICAgICBmbXRfcGFzcyA9IHNlbGYuaGVscGVyKCJfZm9ybWF0X2V4cGxhbmF0aW9uIiwgbXNnKQor
ICAgICAgICAgICAgb3JpZyA9IHNlbGYuX2Fzc2VydF9leHByX3RvX2xpbmVubygpW2Fzc2VydF8u
bGluZW5vXQorICAgICAgICAgICAgaG9va19jYWxsX3Bhc3MgPSBhc3QuRXhwcigKKyAgICAgICAg
ICAgICAgICBzZWxmLmhlbHBlcigKKyAgICAgICAgICAgICAgICAgICAgIl9jYWxsX2Fzc2VydGlv
bl9wYXNzIiwKKyAgICAgICAgICAgICAgICAgICAgYXN0Lk51bShhc3NlcnRfLmxpbmVubyksCisg
ICAgICAgICAgICAgICAgICAgIGFzdC5TdHIob3JpZyksCisgICAgICAgICAgICAgICAgICAgIGZt
dF9wYXNzLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgICMg
SWYgYW55IGhvb2tzIGltcGxlbWVudCBhc3NlcnRfcGFzcyBob29rCisgICAgICAgICAgICBob29r
X2ltcGxfdGVzdCA9IGFzdC5JZigKKyAgICAgICAgICAgICAgICBzZWxmLmhlbHBlcigiX2NoZWNr
X2lmX2Fzc2VydGlvbl9wYXNzX2ltcGwiKSwKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGxfc3Rt
dHMgKyBbaG9va19jYWxsX3Bhc3NdLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc3RhdGVtZW50c19wYXNzID0gW2hvb2tfaW1wbF90ZXN0XQorCisgICAg
ICAgICAgICAjIFRlc3QgZm9yIGFzc2VydGlvbiBjb25kaXRpb24KKyAgICAgICAgICAgIG1haW5f
dGVzdCA9IGFzdC5JZihuZWdhdGlvbiwgc3RhdGVtZW50c19mYWlsLCBzdGF0ZW1lbnRzX3Bhc3Mp
CisgICAgICAgICAgICBzZWxmLnN0YXRlbWVudHMuYXBwZW5kKG1haW5fdGVzdCkKKyAgICAgICAg
ICAgIGlmIHNlbGYuZm9ybWF0X3ZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMg
PSBbCisgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKSBmb3Ig
bmFtZSBpbiBzZWxmLmZvcm1hdF92YXJpYWJsZXMKKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgY2xlYXJfZm9ybWF0ID0gYXN0LkFzc2lnbih2YXJpYWJsZXMsIGFzdC5OYW1lQ29u
c3RhbnQoTm9uZSkpCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChjbGVh
cl9mb3JtYXQpCisKKyAgICAgICAgZWxzZTogICMgT3JpZ2luYWwgYXNzZXJ0aW9uIHJld3JpdGlu
ZworICAgICAgICAgICAgIyBDcmVhdGUgZmFpbHVyZSBtZXNzYWdlLgorICAgICAgICAgICAgYm9k
eSA9IHNlbGYuZXhwbF9zdG10cworICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChh
c3QuSWYobmVnYXRpb24sIGJvZHksIFtdKSkKKyAgICAgICAgICAgIGlmIGFzc2VydF8ubXNnOgor
ICAgICAgICAgICAgICAgIGFzc2VydG1zZyA9IHNlbGYuaGVscGVyKCJfZm9ybWF0X2Fzc2VydG1z
ZyIsIGFzc2VydF8ubXNnKQorICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gIlxuPmFzc2Vy
dCAiICsgZXhwbGFuYXRpb24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNz
ZXJ0bXNnID0gYXN0LlN0cigiIikKKyAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9ICJhc3Nl
cnQgIiArIGV4cGxhbmF0aW9uCisgICAgICAgICAgICB0ZW1wbGF0ZSA9IGFzdC5CaW5PcChhc3Nl
cnRtc2csIGFzdC5BZGQoKSwgYXN0LlN0cihleHBsYW5hdGlvbikpCisgICAgICAgICAgICBtc2cg
PSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dCh0ZW1wbGF0ZSkKKyAgICAgICAgICAgIGZtdCA9IHNl
bGYuaGVscGVyKCJfZm9ybWF0X2V4cGxhbmF0aW9uIiwgbXNnKQorICAgICAgICAgICAgZXJyX25h
bWUgPSBhc3QuTmFtZSgiQXNzZXJ0aW9uRXJyb3IiLCBhc3QuTG9hZCgpKQorICAgICAgICAgICAg
ZXhjID0gYXN0LkNhbGwoZXJyX25hbWUsIFtmbXRdLCBbXSkKKyAgICAgICAgICAgIHJhaXNlXyA9
IGFzdC5SYWlzZShleGMsIE5vbmUpCisKKyAgICAgICAgICAgIGJvZHkuYXBwZW5kKHJhaXNlXykK
KwogICAgICAgICAjIENsZWFyIHRlbXBvcmFyeSB2YXJpYWJsZXMgYnkgc2V0dGluZyB0aGVtIHRv
IE5vbmUuCiAgICAgICAgIGlmIHNlbGYudmFyaWFibGVzOgogICAgICAgICAgICAgdmFyaWFibGVz
ID0gW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKSBmb3IgbmFtZSBpbiBzZWxmLnZhcmlhYmxl
c10KLSAgICAgICAgICAgIGNsZWFyID0gYXN0LkFzc2lnbih2YXJpYWJsZXMsIF9OYW1lQ29uc3Rh
bnQoTm9uZSkpCisgICAgICAgICAgICBjbGVhciA9IGFzdC5Bc3NpZ24odmFyaWFibGVzLCBhc3Qu
TmFtZUNvbnN0YW50KE5vbmUpKQogICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChj
bGVhcikKICAgICAgICAgIyBGaXggbGluZSBudW1iZXJzLgogICAgICAgICBmb3Igc3RtdCBpbiBz
ZWxmLnN0YXRlbWVudHM6CiAgICAgICAgICAgICBzZXRfbG9jYXRpb24oc3RtdCwgYXNzZXJ0Xy5s
aW5lbm8sIGFzc2VydF8uY29sX29mZnNldCkKICAgICAgICAgcmV0dXJuIHNlbGYuc3RhdGVtZW50
cwogCi0gICAgZGVmIHZpc2l0X05hbWUoc2VsZiwgbmFtZSk6CisgICAgZGVmIHZpc2l0X05hbWUo
c2VsZiwgbmFtZTogYXN0Lk5hbWUpIC0+IFR1cGxlW2FzdC5OYW1lLCBzdHJdOgogICAgICAgICAj
IERpc3BsYXkgdGhlIHJlcHIgb2YgdGhlIG5hbWUgaWYgaXQncyBhIGxvY2FsIHZhcmlhYmxlIG9y
CiAgICAgICAgICMgX3Nob3VsZF9yZXByX2dsb2JhbF9uYW1lKCkgdGhpbmtzIGl0J3MgYWNjZXB0
YWJsZS4KLSAgICAgICAgbG9jcyA9IGFzdF9DYWxsKHNlbGYuYnVpbHRpbigibG9jYWxzIiksIFtd
LCBbXSkKKyAgICAgICAgbG9jcyA9IGFzdC5DYWxsKHNlbGYuYnVpbHRpbigibG9jYWxzIiksIFtd
LCBbXSkKICAgICAgICAgaW5sb2NzID0gYXN0LkNvbXBhcmUoYXN0LlN0cihuYW1lLmlkKSwgW2Fz
dC5JbigpXSwgW2xvY3NdKQotICAgICAgICBkb3JlcHIgPSBzZWxmLmhlbHBlcigic2hvdWxkX3Jl
cHJfZ2xvYmFsX25hbWUiLCBuYW1lKQorICAgICAgICBkb3JlcHIgPSBzZWxmLmhlbHBlcigiX3No
b3VsZF9yZXByX2dsb2JhbF9uYW1lIiwgbmFtZSkKICAgICAgICAgdGVzdCA9IGFzdC5Cb29sT3Ao
YXN0Lk9yKCksIFtpbmxvY3MsIGRvcmVwcl0pCiAgICAgICAgIGV4cHIgPSBhc3QuSWZFeHAodGVz
dCwgc2VsZi5kaXNwbGF5KG5hbWUpLCBhc3QuU3RyKG5hbWUuaWQpKQogICAgICAgICByZXR1cm4g
bmFtZSwgc2VsZi5leHBsYW5hdGlvbl9wYXJhbShleHByKQogCi0gICAgZGVmIHZpc2l0X0Jvb2xP
cChzZWxmLCBib29sb3ApOgorICAgIGRlZiB2aXNpdF9Cb29sT3Aoc2VsZiwgYm9vbG9wOiBhc3Qu
Qm9vbE9wKSAtPiBUdXBsZVthc3QuTmFtZSwgc3RyXToKICAgICAgICAgcmVzX3ZhciA9IHNlbGYu
dmFyaWFibGUoKQogICAgICAgICBleHBsX2xpc3QgPSBzZWxmLmFzc2lnbihhc3QuTGlzdChbXSwg
YXN0LkxvYWQoKSkpCiAgICAgICAgIGFwcCA9IGFzdC5BdHRyaWJ1dGUoZXhwbF9saXN0LCAiYXBw
ZW5kIiwgYXN0LkxvYWQoKSkKICAgICAgICAgaXNfb3IgPSBpbnQoaXNpbnN0YW5jZShib29sb3Au
b3AsIGFzdC5PcikpCiAgICAgICAgIGJvZHkgPSBzYXZlID0gc2VsZi5zdGF0ZW1lbnRzCi0gICAg
ICAgIGZhaWxfc2F2ZSA9IHNlbGYub25fZmFpbHVyZQorICAgICAgICBmYWlsX3NhdmUgPSBzZWxm
LmV4cGxfc3RtdHMKICAgICAgICAgbGV2ZWxzID0gbGVuKGJvb2xvcC52YWx1ZXMpIC0gMQogICAg
ICAgICBzZWxmLnB1c2hfZm9ybWF0X2NvbnRleHQoKQotICAgICAgICAjIFByb2Nlc3MgZWFjaCBv
cGVyYW5kLCBzaG9ydC1jaXJjdXRpbmcgaWYgbmVlZGVkLgorICAgICAgICAjIFByb2Nlc3MgZWFj
aCBvcGVyYW5kLCBzaG9ydC1jaXJjdWl0aW5nIGlmIG5lZWRlZC4KICAgICAgICAgZm9yIGksIHYg
aW4gZW51bWVyYXRlKGJvb2xvcC52YWx1ZXMpOgogICAgICAgICAgICAgaWYgaToKLSAgICAgICAg
ICAgICAgICBmYWlsX2lubmVyID0gW10KKyAgICAgICAgICAgICAgICBmYWlsX2lubmVyID0gW10g
ICMgdHlwZTogTGlzdFthc3Quc3RtdF0KICAgICAgICAgICAgICAgICAjIGNvbmQgaXMgc2V0IGlu
IGEgcHJpb3IgbG9vcCBpdGVyYXRpb24gYmVsb3cKLSAgICAgICAgICAgICAgICBzZWxmLm9uX2Zh
aWx1cmUuYXBwZW5kKGFzdC5JZihjb25kLCBmYWlsX2lubmVyLCBbXSkpICAjIG5vcWEKLSAgICAg
ICAgICAgICAgICBzZWxmLm9uX2ZhaWx1cmUgPSBmYWlsX2lubmVyCisgICAgICAgICAgICAgICAg
c2VsZi5leHBsX3N0bXRzLmFwcGVuZChhc3QuSWYoY29uZCwgZmFpbF9pbm5lciwgW10pKSAgIyBu
b3FhCisgICAgICAgICAgICAgICAgc2VsZi5leHBsX3N0bXRzID0gZmFpbF9pbm5lcgogICAgICAg
ICAgICAgc2VsZi5wdXNoX2Zvcm1hdF9jb250ZXh0KCkKICAgICAgICAgICAgIHJlcywgZXhwbCA9
IHNlbGYudmlzaXQodikKICAgICAgICAgICAgIGJvZHkuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5O
YW1lKHJlc192YXIsIGFzdC5TdG9yZSgpKV0sIHJlcykpCiAgICAgICAgICAgICBleHBsX2Zvcm1h
dCA9IHNlbGYucG9wX2Zvcm1hdF9jb250ZXh0KGFzdC5TdHIoZXhwbCkpCi0gICAgICAgICAgICBj
YWxsID0gYXN0X0NhbGwoYXBwLCBbZXhwbF9mb3JtYXRdLCBbXSkKLSAgICAgICAgICAgIHNlbGYu
b25fZmFpbHVyZS5hcHBlbmQoYXN0LkV4cHIoY2FsbCkpCisgICAgICAgICAgICBjYWxsID0gYXN0
LkNhbGwoYXBwLCBbZXhwbF9mb3JtYXRdLCBbXSkKKyAgICAgICAgICAgIHNlbGYuZXhwbF9zdG10
cy5hcHBlbmQoYXN0LkV4cHIoY2FsbCkpCiAgICAgICAgICAgICBpZiBpIDwgbGV2ZWxzOgotICAg
ICAgICAgICAgICAgIGNvbmQgPSByZXMKKyAgICAgICAgICAgICAgICBjb25kID0gcmVzICAjIHR5
cGU6IGFzdC5leHByCiAgICAgICAgICAgICAgICAgaWYgaXNfb3I6CiAgICAgICAgICAgICAgICAg
ICAgIGNvbmQgPSBhc3QuVW5hcnlPcChhc3QuTm90KCksIGNvbmQpCi0gICAgICAgICAgICAgICAg
aW5uZXIgPSBbXQorICAgICAgICAgICAgICAgIGlubmVyID0gW10gICMgdHlwZTogTGlzdFthc3Qu
c3RtdF0KICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlbWVudHMuYXBwZW5kKGFzdC5JZihjb25k
LCBpbm5lciwgW10pKQogICAgICAgICAgICAgICAgIHNlbGYuc3RhdGVtZW50cyA9IGJvZHkgPSBp
bm5lcgogICAgICAgICBzZWxmLnN0YXRlbWVudHMgPSBzYXZlCi0gICAgICAgIHNlbGYub25fZmFp
bHVyZSA9IGZhaWxfc2F2ZQotICAgICAgICBleHBsX3RlbXBsYXRlID0gc2VsZi5oZWxwZXIoImZv
cm1hdF9ib29sb3AiLCBleHBsX2xpc3QsIGFzdC5OdW0oaXNfb3IpKQorICAgICAgICBzZWxmLmV4
cGxfc3RtdHMgPSBmYWlsX3NhdmUKKyAgICAgICAgZXhwbF90ZW1wbGF0ZSA9IHNlbGYuaGVscGVy
KCJfZm9ybWF0X2Jvb2xvcCIsIGV4cGxfbGlzdCwgYXN0Lk51bShpc19vcikpCiAgICAgICAgIGV4
cGwgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChleHBsX3RlbXBsYXRlKQogICAgICAgICByZXR1
cm4gYXN0Lk5hbWUocmVzX3ZhciwgYXN0LkxvYWQoKSksIHNlbGYuZXhwbGFuYXRpb25fcGFyYW0o
ZXhwbCkKIAotICAgIGRlZiB2aXNpdF9VbmFyeU9wKHNlbGYsIHVuYXJ5KToKLSAgICAgICAgcGF0
dGVybiA9IHVuYXJ5X21hcFt1bmFyeS5vcC5fX2NsYXNzX19dCisgICAgZGVmIHZpc2l0X1VuYXJ5
T3Aoc2VsZiwgdW5hcnk6IGFzdC5VbmFyeU9wKSAtPiBUdXBsZVthc3QuTmFtZSwgc3RyXToKKyAg
ICAgICAgcGF0dGVybiA9IFVOQVJZX01BUFt1bmFyeS5vcC5fX2NsYXNzX19dCiAgICAgICAgIG9w
ZXJhbmRfcmVzLCBvcGVyYW5kX2V4cGwgPSBzZWxmLnZpc2l0KHVuYXJ5Lm9wZXJhbmQpCiAgICAg
ICAgIHJlcyA9IHNlbGYuYXNzaWduKGFzdC5VbmFyeU9wKHVuYXJ5Lm9wLCBvcGVyYW5kX3Jlcykp
CiAgICAgICAgIHJldHVybiByZXMsIHBhdHRlcm4gJSAob3BlcmFuZF9leHBsLCkKIAotICAgIGRl
ZiB2aXNpdF9CaW5PcChzZWxmLCBiaW5vcCk6Ci0gICAgICAgIHN5bWJvbCA9IGJpbm9wX21hcFti
aW5vcC5vcC5fX2NsYXNzX19dCisgICAgZGVmIHZpc2l0X0Jpbk9wKHNlbGYsIGJpbm9wOiBhc3Qu
QmluT3ApIC0+IFR1cGxlW2FzdC5OYW1lLCBzdHJdOgorICAgICAgICBzeW1ib2wgPSBCSU5PUF9N
QVBbYmlub3Aub3AuX19jbGFzc19fXQogICAgICAgICBsZWZ0X2V4cHIsIGxlZnRfZXhwbCA9IHNl
bGYudmlzaXQoYmlub3AubGVmdCkKICAgICAgICAgcmlnaHRfZXhwciwgcmlnaHRfZXhwbCA9IHNl
bGYudmlzaXQoYmlub3AucmlnaHQpCi0gICAgICAgIGV4cGxhbmF0aW9uID0gIiglcyAlcyAlcyki
ICUgKGxlZnRfZXhwbCwgc3ltYm9sLCByaWdodF9leHBsKQorICAgICAgICBleHBsYW5hdGlvbiA9
ICIoe30ge30ge30pIi5mb3JtYXQobGVmdF9leHBsLCBzeW1ib2wsIHJpZ2h0X2V4cGwpCiAgICAg
ICAgIHJlcyA9IHNlbGYuYXNzaWduKGFzdC5CaW5PcChsZWZ0X2V4cHIsIGJpbm9wLm9wLCByaWdo
dF9leHByKSkKICAgICAgICAgcmV0dXJuIHJlcywgZXhwbGFuYXRpb24KIAotICAgIGRlZiB2aXNp
dF9DYWxsXzM1KHNlbGYsIGNhbGwpOgotICAgICAgICAiIiIKLSAgICAgICAgdmlzaXQgYGFzdC5D
YWxsYCBub2RlcyBvbiBQeXRob24zLjUgYW5kIGFmdGVyCi0gICAgICAgICIiIgorICAgIGRlZiB2
aXNpdF9DYWxsKHNlbGYsIGNhbGw6IGFzdC5DYWxsKSAtPiBUdXBsZVthc3QuTmFtZSwgc3RyXToK
ICAgICAgICAgbmV3X2Z1bmMsIGZ1bmNfZXhwbCA9IHNlbGYudmlzaXQoY2FsbC5mdW5jKQogICAg
ICAgICBhcmdfZXhwbHMgPSBbXQogICAgICAgICBuZXdfYXJncyA9IFtdCkBAIC04NTUsNTcgKzEw
MDQsMjAgQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICAg
ICAgICAgIGVsc2U6ICAjICoqYXJncyBoYXZlIGBhcmdgIGtleXdvcmRzIHdpdGggYW4gLmFyZyBv
ZiBOb25lCiAgICAgICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZCgiKioiICsgZXhwbCkKIAot
ICAgICAgICBleHBsID0gIiVzKCVzKSIgJSAoZnVuY19leHBsLCAiLCAiLmpvaW4oYXJnX2V4cGxz
KSkKKyAgICAgICAgZXhwbCA9ICJ7fSh7fSkiLmZvcm1hdChmdW5jX2V4cGwsICIsICIuam9pbihh
cmdfZXhwbHMpKQogICAgICAgICBuZXdfY2FsbCA9IGFzdC5DYWxsKG5ld19mdW5jLCBuZXdfYXJn
cywgbmV3X2t3YXJncykKICAgICAgICAgcmVzID0gc2VsZi5hc3NpZ24obmV3X2NhbGwpCiAgICAg
ICAgIHJlc19leHBsID0gc2VsZi5leHBsYW5hdGlvbl9wYXJhbShzZWxmLmRpc3BsYXkocmVzKSkK
LSAgICAgICAgb3V0ZXJfZXhwbCA9ICIlc1xueyVzID0gJXNcbn0iICUgKHJlc19leHBsLCByZXNf
ZXhwbCwgZXhwbCkKKyAgICAgICAgb3V0ZXJfZXhwbCA9ICJ7fVxue3t7fSA9IHt9XG59fSIuZm9y
bWF0KHJlc19leHBsLCByZXNfZXhwbCwgZXhwbCkKICAgICAgICAgcmV0dXJuIHJlcywgb3V0ZXJf
ZXhwbAogCi0gICAgZGVmIHZpc2l0X1N0YXJyZWQoc2VsZiwgc3RhcnJlZCk6Ci0gICAgICAgICMg
RnJvbSBQeXRob24gMy41LCBhIFN0YXJyZWQgbm9kZSBjYW4gYXBwZWFyIGluIGEgZnVuY3Rpb24g
Y2FsbAorICAgIGRlZiB2aXNpdF9TdGFycmVkKHNlbGYsIHN0YXJyZWQ6IGFzdC5TdGFycmVkKSAt
PiBUdXBsZVthc3QuU3RhcnJlZCwgc3RyXToKKyAgICAgICAgIyBGcm9tIFB5dGhvbiAzLjUsIGEg
U3RhcnJlZCBub2RlIGNhbiBhcHBlYXIgaW4gYSBmdW5jdGlvbiBjYWxsLgogICAgICAgICByZXMs
IGV4cGwgPSBzZWxmLnZpc2l0KHN0YXJyZWQudmFsdWUpCi0gICAgICAgIHJldHVybiBzdGFycmVk
LCAiKiIgKyBleHBsCi0KLSAgICBkZWYgdmlzaXRfQ2FsbF9sZWdhY3koc2VsZiwgY2FsbCk6Ci0g
ICAgICAgICIiIgotICAgICAgICB2aXNpdCBgYXN0LkNhbGwgbm9kZXMgb24gMy40IGFuZCBiZWxv
d2AKLSAgICAgICAgIiIiCi0gICAgICAgIG5ld19mdW5jLCBmdW5jX2V4cGwgPSBzZWxmLnZpc2l0
KGNhbGwuZnVuYykKLSAgICAgICAgYXJnX2V4cGxzID0gW10KLSAgICAgICAgbmV3X2FyZ3MgPSBb
XQotICAgICAgICBuZXdfa3dhcmdzID0gW10KLSAgICAgICAgbmV3X3N0YXIgPSBuZXdfa3dhcmcg
PSBOb25lCi0gICAgICAgIGZvciBhcmcgaW4gY2FsbC5hcmdzOgotICAgICAgICAgICAgcmVzLCBl
eHBsID0gc2VsZi52aXNpdChhcmcpCi0gICAgICAgICAgICBuZXdfYXJncy5hcHBlbmQocmVzKQot
ICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZChleHBsKQotICAgICAgICBmb3Iga2V5d29yZCBp
biBjYWxsLmtleXdvcmRzOgotICAgICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChrZXl3
b3JkLnZhbHVlKQotICAgICAgICAgICAgbmV3X2t3YXJncy5hcHBlbmQoYXN0LmtleXdvcmQoa2V5
d29yZC5hcmcsIHJlcykpCi0gICAgICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKGtleXdvcmQuYXJn
ICsgIj0iICsgZXhwbCkKLSAgICAgICAgaWYgY2FsbC5zdGFyYXJnczoKLSAgICAgICAgICAgIG5l
d19zdGFyLCBleHBsID0gc2VsZi52aXNpdChjYWxsLnN0YXJhcmdzKQotICAgICAgICAgICAgYXJn
X2V4cGxzLmFwcGVuZCgiKiIgKyBleHBsKQotICAgICAgICBpZiBjYWxsLmt3YXJnczoKLSAgICAg
ICAgICAgIG5ld19rd2FyZywgZXhwbCA9IHNlbGYudmlzaXQoY2FsbC5rd2FyZ3MpCi0gICAgICAg
ICAgICBhcmdfZXhwbHMuYXBwZW5kKCIqKiIgKyBleHBsKQotICAgICAgICBleHBsID0gIiVzKCVz
KSIgJSAoZnVuY19leHBsLCAiLCAiLmpvaW4oYXJnX2V4cGxzKSkKLSAgICAgICAgbmV3X2NhbGwg
PSBhc3QuQ2FsbChuZXdfZnVuYywgbmV3X2FyZ3MsIG5ld19rd2FyZ3MsIG5ld19zdGFyLCBuZXdf
a3dhcmcpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKG5ld19jYWxsKQotICAgICAgICByZXNf
ZXhwbCA9IHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAg
IG91dGVyX2V4cGwgPSAiJXNcbnslcyA9ICVzXG59IiAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4
cGwpCi0gICAgICAgIHJldHVybiByZXMsIG91dGVyX2V4cGwKKyAgICAgICAgbmV3X3N0YXJyZWQg
PSBhc3QuU3RhcnJlZChyZXMsIHN0YXJyZWQuY3R4KQorICAgICAgICByZXR1cm4gbmV3X3N0YXJy
ZWQsICIqIiArIGV4cGwKIAotICAgICMgYXN0LkNhbGwgc2lnbmF0dXJlIGNoYW5nZWQgb24gMy41
LAotICAgICMgY29uZGl0aW9uYWxseSBjaGFuZ2UgIHdoaWNoIG1ldGhvZHMgaXMgbmFtZWQKLSAg
ICAjIHZpc2l0X0NhbGwgZGVwZW5kaW5nIG9uIFB5dGhvbiB2ZXJzaW9uCi0gICAgaWYgc3lzLnZl
cnNpb25faW5mbyA+PSAoMywgNSk6Ci0gICAgICAgIHZpc2l0X0NhbGwgPSB2aXNpdF9DYWxsXzM1
Ci0gICAgZWxzZToKLSAgICAgICAgdmlzaXRfQ2FsbCA9IHZpc2l0X0NhbGxfbGVnYWN5Ci0KLSAg
ICBkZWYgdmlzaXRfQXR0cmlidXRlKHNlbGYsIGF0dHIpOgorICAgIGRlZiB2aXNpdF9BdHRyaWJ1
dGUoc2VsZiwgYXR0cjogYXN0LkF0dHJpYnV0ZSkgLT4gVHVwbGVbYXN0Lk5hbWUsIHN0cl06CiAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHIuY3R4LCBhc3QuTG9hZCk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5nZW5lcmljX3Zpc2l0KGF0dHIpCiAgICAgICAgIHZhbHVlLCB2YWx1ZV9l
eHBsID0gc2VsZi52aXNpdChhdHRyLnZhbHVlKQpAQCAtOTE1LDcgKzEwMjcsNyBAQCBjbGFzcyBB
c3NlcnRpb25SZXdyaXRlcihhc3QuTm9kZVZpc2l0b3IpOgogICAgICAgICBleHBsID0gcGF0ICUg
KHJlc19leHBsLCByZXNfZXhwbCwgdmFsdWVfZXhwbCwgYXR0ci5hdHRyKQogICAgICAgICByZXR1
cm4gcmVzLCBleHBsCiAKLSAgICBkZWYgdmlzaXRfQ29tcGFyZShzZWxmLCBjb21wKToKKyAgICBk
ZWYgdmlzaXRfQ29tcGFyZShzZWxmLCBjb21wOiBhc3QuQ29tcGFyZSkgLT4gVHVwbGVbYXN0LmV4
cHIsIHN0cl06CiAgICAgICAgIHNlbGYucHVzaF9mb3JtYXRfY29udGV4dCgpCiAgICAgICAgIGxl
ZnRfcmVzLCBsZWZ0X2V4cGwgPSBzZWxmLnZpc2l0KGNvbXAubGVmdCkKICAgICAgICAgaWYgaXNp
bnN0YW5jZShjb21wLmxlZnQsIChhc3QuQ29tcGFyZSwgYXN0LkJvb2xPcCkpOgpAQCAtOTMyLDIz
ICsxMDQ0LDU5IEBAIGNsYXNzIEFzc2VydGlvblJld3JpdGVyKGFzdC5Ob2RlVmlzaXRvcik6CiAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5leHRfb3BlcmFuZCwgKGFzdC5Db21wYXJlLCBhc3Qu
Qm9vbE9wKSk6CiAgICAgICAgICAgICAgICAgbmV4dF9leHBsID0gIih7fSkiLmZvcm1hdChuZXh0
X2V4cGwpCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChuZXh0X3JlcykKLSAgICAgICAgICAg
IHN5bSA9IGJpbm9wX21hcFtvcC5fX2NsYXNzX19dCisgICAgICAgICAgICBzeW0gPSBCSU5PUF9N
QVBbb3AuX19jbGFzc19fXQogICAgICAgICAgICAgc3ltcy5hcHBlbmQoYXN0LlN0cihzeW0pKQot
ICAgICAgICAgICAgZXhwbCA9ICIlcyAlcyAlcyIgJSAobGVmdF9leHBsLCBzeW0sIG5leHRfZXhw
bCkKKyAgICAgICAgICAgIGV4cGwgPSAie30ge30ge30iLmZvcm1hdChsZWZ0X2V4cGwsIHN5bSwg
bmV4dF9leHBsKQogICAgICAgICAgICAgZXhwbHMuYXBwZW5kKGFzdC5TdHIoZXhwbCkpCiAgICAg
ICAgICAgICByZXNfZXhwciA9IGFzdC5Db21wYXJlKGxlZnRfcmVzLCBbb3BdLCBbbmV4dF9yZXNd
KQogICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuQXNzaWduKFtzdG9yZV9u
YW1lc1tpXV0sIHJlc19leHByKSkKICAgICAgICAgICAgIGxlZnRfcmVzLCBsZWZ0X2V4cGwgPSBu
ZXh0X3JlcywgbmV4dF9leHBsCiAgICAgICAgICMgVXNlIHB5dGVzdC5hc3NlcnRpb24udXRpbC5f
cmVwcmNvbXBhcmUgaWYgdGhhdCdzIGF2YWlsYWJsZS4KICAgICAgICAgZXhwbF9jYWxsID0gc2Vs
Zi5oZWxwZXIoCi0gICAgICAgICAgICAiY2FsbF9yZXByY29tcGFyZSIsCisgICAgICAgICAgICAi
X2NhbGxfcmVwcmNvbXBhcmUiLAogICAgICAgICAgICAgYXN0LlR1cGxlKHN5bXMsIGFzdC5Mb2Fk
KCkpLAogICAgICAgICAgICAgYXN0LlR1cGxlKGxvYWRfbmFtZXMsIGFzdC5Mb2FkKCkpLAogICAg
ICAgICAgICAgYXN0LlR1cGxlKGV4cGxzLCBhc3QuTG9hZCgpKSwKICAgICAgICAgICAgIGFzdC5U
dXBsZShyZXN1bHRzLCBhc3QuTG9hZCgpKSwKICAgICAgICAgKQogICAgICAgICBpZiBsZW4oY29t
cC5vcHMpID4gMToKLSAgICAgICAgICAgIHJlcyA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBsb2Fk
X25hbWVzKQorICAgICAgICAgICAgcmVzID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIGxvYWRfbmFt
ZXMpICAjIHR5cGU6IGFzdC5leHByCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXMgPSBs
b2FkX25hbWVzWzBdCiAgICAgICAgIHJldHVybiByZXMsIHNlbGYuZXhwbGFuYXRpb25fcGFyYW0o
c2VsZi5wb3BfZm9ybWF0X2NvbnRleHQoZXhwbF9jYWxsKSkKKworCitkZWYgdHJ5X21ha2VkaXJz
KGNhY2hlX2RpcjogUGF0aCkgLT4gYm9vbDoKKyAgICAiIiJBdHRlbXB0IHRvIGNyZWF0ZSB0aGUg
Z2l2ZW4gZGlyZWN0b3J5IGFuZCBzdWItZGlyZWN0b3JpZXMgZXhpc3QuCisKKyAgICBSZXR1cm5z
IFRydWUgaWYgc3VjY2Vzc2Z1bCBvciBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAiIiIKKyAg
ICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKGZzcGF0aChjYWNoZV9kaXIpLCBleGlzdF9vaz1U
cnVlKQorICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIE5vdEFEaXJlY3RvcnlFcnJvciwg
RmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgIyBPbmUgb2YgdGhlIHBhdGggY29tcG9uZW50cyB3
YXMgbm90IGEgZGlyZWN0b3J5OgorICAgICAgICAjIC0gd2UncmUgaW4gYSB6aXAgZmlsZQorICAg
ICAgICAjIC0gaXQgaXMgYSBmaWxlCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGV4Y2VwdCBQ
ZXJtaXNzaW9uRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGV4Y2VwdCBPU0Vycm9y
IGFzIGU6CisgICAgICAgICMgYXMgb2Ygbm93LCBFUk9GUyBkb2Vzbid0IGhhdmUgYW4gZXF1aXZh
bGVudCBPU0Vycm9yLXN1YmNsYXNzCisgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVJPRlM6
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmFpc2UKKyAgICByZXR1cm4gVHJ1
ZQorCisKK2RlZiBnZXRfY2FjaGVfZGlyKGZpbGVfcGF0aDogUGF0aCkgLT4gUGF0aDoKKyAgICAi
IiJSZXR1cm4gdGhlIGNhY2hlIGRpcmVjdG9yeSB0byB3cml0ZSAucHljIGZpbGVzIGZvciB0aGUg
Z2l2ZW4gLnB5IGZpbGUgcGF0aC4iIiIKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA4
KSBhbmQgc3lzLnB5Y2FjaGVfcHJlZml4OgorICAgICAgICAjIGdpdmVuOgorICAgICAgICAjICAg
cHJlZml4ID0gJy90bXAvcHljcycKKyAgICAgICAgIyAgIHBhdGggPSAnL2hvbWUvdXNlci9wcm9q
L3Rlc3RfYXBwLnB5JworICAgICAgICAjIHdlIHdhbnQ6CisgICAgICAgICMgICAnL3RtcC9weWNz
L2hvbWUvdXNlci9wcm9qJworICAgICAgICByZXR1cm4gUGF0aChzeXMucHljYWNoZV9wcmVmaXgp
IC8gUGF0aCgqZmlsZV9wYXRoLnBhcnRzWzE6LTFdKQorICAgIGVsc2U6CisgICAgICAgICMgY2xh
c3NpYyBweWNhY2hlIGRpcmVjdG9yeQorICAgICAgICByZXR1cm4gZmlsZV9wYXRoLnBhcmVudCAv
ICJfX3B5Y2FjaGVfXyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2Vy
dGlvbi90cnVuY2F0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi90cnVu
Y2F0ZS5weQppbmRleCA3OWFkZWNhNmE5YWIuLmM1NzJjYzc0NDYxMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi90cnVuY2F0ZS5weQpAQCAtMSwxMyArMSwxMyBAQAot
IiIiCi1VdGlsaXRpZXMgZm9yIHRydW5jYXRpbmcgYXNzZXJ0aW9uIG91dHB1dC4KKyIiIlV0aWxp
dGllcyBmb3IgdHJ1bmNhdGluZyBhc3NlcnRpb24gb3V0cHV0LgogCiBDdXJyZW50IGRlZmF1bHQg
YmVoYXZpb3VyIGlzIHRvIHRydW5jYXRlIGFzc2VydGlvbiBleHBsYW5hdGlvbnMgYXQKIH44IHRl
cm1pbmFsIGxpbmVzLCB1bmxlc3MgcnVubmluZyBpbiAiLXZ2IiBtb2RlIG9yIHJ1bm5pbmcgb24g
Q0kuCiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lv
biwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBvcworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zy
b20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAogCi1pbXBvcnQgc2l4Citmcm9tIF9weXRlc3Qubm9k
ZXMgaW1wb3J0IEl0ZW0KIAogCiBERUZBVUxUX01BWF9MSU5FUyA9IDgKQEAgLTE1LDMyICsxNSwz
MyBAQCBERUZBVUxUX01BWF9DSEFSUyA9IDggKiA4MAogVVNBR0VfTVNHID0gInVzZSAnLXZ2JyB0
byBzaG93IgogCiAKLWRlZiB0cnVuY2F0ZV9pZl9yZXF1aXJlZChleHBsYW5hdGlvbiwgaXRlbSwg
bWF4X2xlbmd0aD1Ob25lKToKLSAgICAiIiIKLSAgICBUcnVuY2F0ZSB0aGlzIGFzc2VydGlvbiBl
eHBsYW5hdGlvbiBpZiB0aGUgZ2l2ZW4gdGVzdCBpdGVtIGlzIGVsaWdpYmxlLgotICAgICIiIgor
ZGVmIHRydW5jYXRlX2lmX3JlcXVpcmVkKAorICAgIGV4cGxhbmF0aW9uOiBMaXN0W3N0cl0sIGl0
ZW06IEl0ZW0sIG1heF9sZW5ndGg6IE9wdGlvbmFsW2ludF0gPSBOb25lCispIC0+IExpc3Rbc3Ry
XToKKyAgICAiIiJUcnVuY2F0ZSB0aGlzIGFzc2VydGlvbiBleHBsYW5hdGlvbiBpZiB0aGUgZ2l2
ZW4gdGVzdCBpdGVtIGlzIGVsaWdpYmxlLiIiIgogICAgIGlmIF9zaG91bGRfdHJ1bmNhdGVfaXRl
bShpdGVtKToKICAgICAgICAgcmV0dXJuIF90cnVuY2F0ZV9leHBsYW5hdGlvbihleHBsYW5hdGlv
bikKICAgICByZXR1cm4gZXhwbGFuYXRpb24KIAogCi1kZWYgX3Nob3VsZF90cnVuY2F0ZV9pdGVt
KGl0ZW0pOgotICAgICIiIgotICAgIFdoZXRoZXIgb3Igbm90IHRoaXMgdGVzdCBpdGVtIGlzIGVs
aWdpYmxlIGZvciB0cnVuY2F0aW9uLgotICAgICIiIgorZGVmIF9zaG91bGRfdHJ1bmNhdGVfaXRl
bShpdGVtOiBJdGVtKSAtPiBib29sOgorICAgICIiIldoZXRoZXIgb3Igbm90IHRoaXMgdGVzdCBp
dGVtIGlzIGVsaWdpYmxlIGZvciB0cnVuY2F0aW9uLiIiIgogICAgIHZlcmJvc2UgPSBpdGVtLmNv
bmZpZy5vcHRpb24udmVyYm9zZQogICAgIHJldHVybiB2ZXJib3NlIDwgMiBhbmQgbm90IF9ydW5u
aW5nX29uX2NpKCkKIAogCi1kZWYgX3J1bm5pbmdfb25fY2koKToKK2RlZiBfcnVubmluZ19vbl9j
aSgpIC0+IGJvb2w6CiAgICAgIiIiQ2hlY2sgaWYgd2UncmUgY3VycmVudGx5IHJ1bm5pbmcgb24g
YSBDSSBzeXN0ZW0uIiIiCiAgICAgZW52X3ZhcnMgPSBbIkNJIiwgIkJVSUxEX05VTUJFUiJdCiAg
ICAgcmV0dXJuIGFueSh2YXIgaW4gb3MuZW52aXJvbiBmb3IgdmFyIGluIGVudl92YXJzKQogCiAK
LWRlZiBfdHJ1bmNhdGVfZXhwbGFuYXRpb24oaW5wdXRfbGluZXMsIG1heF9saW5lcz1Ob25lLCBt
YXhfY2hhcnM9Tm9uZSk6Ci0gICAgIiIiCi0gICAgVHJ1bmNhdGUgZ2l2ZW4gbGlzdCBvZiBzdHJp
bmdzIHRoYXQgbWFrZXMgdXAgdGhlIGFzc2VydGlvbiBleHBsYW5hdGlvbi4KK2RlZiBfdHJ1bmNh
dGVfZXhwbGFuYXRpb24oCisgICAgaW5wdXRfbGluZXM6IExpc3Rbc3RyXSwKKyAgICBtYXhfbGlu
ZXM6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgIG1heF9jaGFyczogT3B0aW9uYWxbaW50XSA9
IE5vbmUsCispIC0+IExpc3Rbc3RyXToKKyAgICAiIiJUcnVuY2F0ZSBnaXZlbiBsaXN0IG9mIHN0
cmluZ3MgdGhhdCBtYWtlcyB1cCB0aGUgYXNzZXJ0aW9uIGV4cGxhbmF0aW9uLgogCiAgICAgVHJ1
bmNhdGVzIHRvIGVpdGhlciA4IGxpbmVzLCBvciA2NDAgY2hhcmFjdGVycyAtIHdoaWNoZXZlciB0
aGUgaW5wdXQgcmVhY2hlcwogICAgIGZpcnN0LiBUaGUgcmVtYWluaW5nIGxpbmVzIHdpbGwgYmUg
cmVwbGFjZWQgYnkgYSB1c2FnZSBtZXNzYWdlLgpAQCAtNzMsMTEgKzc0LDExIEBAIGRlZiBfdHJ1
bmNhdGVfZXhwbGFuYXRpb24oaW5wdXRfbGluZXMsIG1heF9saW5lcz1Ob25lLCBtYXhfY2hhcnM9
Tm9uZSk6CiAgICAgZWxzZToKICAgICAgICAgbXNnICs9ICIgKHt9IGxpbmVzIGhpZGRlbikiLmZv
cm1hdCh0cnVuY2F0ZWRfbGluZV9jb3VudCkKICAgICBtc2cgKz0gIiwge30iLmZvcm1hdChVU0FH
RV9NU0cpCi0gICAgdHJ1bmNhdGVkX2V4cGxhbmF0aW9uLmV4dGVuZChbc2l4LnRleHRfdHlwZSgi
IiksIHNpeC50ZXh0X3R5cGUobXNnKV0pCisgICAgdHJ1bmNhdGVkX2V4cGxhbmF0aW9uLmV4dGVu
ZChbIiIsIHN0cihtc2cpXSkKICAgICByZXR1cm4gdHJ1bmNhdGVkX2V4cGxhbmF0aW9uCiAKIAot
ZGVmIF90cnVuY2F0ZV9ieV9jaGFyX2NvdW50KGlucHV0X2xpbmVzLCBtYXhfY2hhcnMpOgorZGVm
IF90cnVuY2F0ZV9ieV9jaGFyX2NvdW50KGlucHV0X2xpbmVzOiBMaXN0W3N0cl0sIG1heF9jaGFy
czogaW50KSAtPiBMaXN0W3N0cl06CiAgICAgIyBDaGVjayBpZiB0cnVuY2F0aW9uIHJlcXVpcmVk
CiAgICAgaWYgbGVuKCIiLmpvaW4oaW5wdXRfbGluZXMpKSA8PSBtYXhfY2hhcnM6CiAgICAgICAg
IHJldHVybiBpbnB1dF9saW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
YXNzZXJ0aW9uL3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdXRp
bC5weQppbmRleCBiY2I4MDBhNGEwN2QuLmU4MGU0NzZjODRhNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3V0aWwucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvYXNzZXJ0aW9uL3V0aWwucHkKQEAgLTEsMzIgKzEsMzYgQEAKLSIiIlV0aWxpdGll
cyBmb3IgYXNzZXJ0aW9uIGRlYnVnZ2luZyIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIiIiVXRpbGl0aWVzIGZvciBh
c3NlcnRpb24gZGVidWdnaW5nLiIiIgoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IHBw
cmludAorZnJvbSB0eXBpbmcgaW1wb3J0IEFic3RyYWN0U2V0Citmcm9tIHR5cGluZyBpbXBvcnQg
QW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVy
YWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBNYXBwaW5n
Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5j
ZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCiAKIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBv
cnQgcHkKLWltcG9ydCBzaXgKLWZyb20gLi5jb21wYXQgaW1wb3J0IFNlcXVlbmNlCi0KLXUgPSBz
aXgudGV4dF90eXBlCitmcm9tIF9weXRlc3QgaW1wb3J0IG91dGNvbWVzCitmcm9tIF9weXRlc3Qu
X2lvLnNhZmVyZXByIGltcG9ydCBfcGZvcm1hdF9kaXNwYXRjaAorZnJvbSBfcHl0ZXN0Ll9pby5z
YWZlcmVwciBpbXBvcnQgc2FmZWZvcm1hdAorZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBv
cnQgc2FmZXJlcHIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IEFUVFJTX0VRX0ZJRUxECiAK
ICMgVGhlIF9yZXByY29tcGFyZSBhdHRyaWJ1dGUgb24gdGhlIHV0aWwgbW9kdWxlIGlzIHVzZWQg
YnkgdGhlIG5ldyBhc3NlcnRpb24KICMgaW50ZXJwcmV0YXRpb24gY29kZSBhbmQgYXNzZXJ0aW9u
IHJld3JpdGVyIHRvIGRldGVjdCB0aGlzIHBsdWdpbiB3YXMKICMgbG9hZGVkIGFuZCBpbiB0dXJu
IGNhbGwgdGhlIGhvb2tzIGRlZmluZWQgaGVyZSBhcyBwYXJ0IG9mIHRoZQogIyBEZWJ1Z0ludGVy
cHJldGVyLgotX3JlcHJjb21wYXJlID0gTm9uZQorX3JlcHJjb21wYXJlID0gTm9uZSAgIyB0eXBl
OiBPcHRpb25hbFtDYWxsYWJsZVtbc3RyLCBvYmplY3QsIG9iamVjdF0sIE9wdGlvbmFsW3N0cl1d
XQogCisjIFdvcmtzIHNpbWlsYXJseSBhcyBfcmVwcmNvbXBhcmUgYXR0cmlidXRlLiBJcyBwb3B1
bGF0ZWQgd2l0aCB0aGUgaG9vayBjYWxsCisjIHdoZW4gcHl0ZXN0X3J1bnRlc3Rfc2V0dXAgaXMg
Y2FsbGVkLgorX2Fzc2VydGlvbl9wYXNzID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtDYWxsYWJs
ZVtbaW50LCBzdHIsIHN0cl0sIE5vbmVdXQogCi0jIHRoZSByZS1lbmNvZGluZyBpcyBuZWVkZWQg
Zm9yIHB5dGhvbjIgcmVwcgotIyB3aXRoIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChzZWUgaXNzdWUg
ODc3IGFuZCAxMzc5KQotZGVmIGVjdShzKToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiB1KHMs
ICJ1dGYtOCIsICJyZXBsYWNlIikKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICByZXR1
cm4gcwogCi0KLWRlZiBmb3JtYXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pOgotICAgICIiIlRo
aXMgZm9ybWF0cyBhbiBleHBsYW5hdGlvbgorZGVmIGZvcm1hdF9leHBsYW5hdGlvbihleHBsYW5h
dGlvbjogc3RyKSAtPiBzdHI6CisgICAgciIiIkZvcm1hdCBhbiBleHBsYW5hdGlvbi4KIAogICAg
IE5vcm1hbGx5IGFsbCBlbWJlZGRlZCBuZXdsaW5lcyBhcmUgZXNjYXBlZCwgaG93ZXZlciB0aGVy
ZSBhcmUKICAgICB0aHJlZSBleGNlcHRpb25zOiBcbnssIFxufSBhbmQgXG5+LiAgVGhlIGZpcnN0
IHR3byBhcmUgaW50ZW5kZWQKQEAgLTM1LDIwICszOSwxOSBAQCBkZWYgZm9ybWF0X2V4cGxhbmF0
aW9uKGV4cGxhbmF0aW9uKToKICAgICBmb3Igd2hlbiBvbmUgZXhwbGFuYXRpb24gbmVlZHMgdG8g
c3BhbiBtdWx0aXBsZSBsaW5lcywgZS5nLiB3aGVuCiAgICAgZGlzcGxheWluZyBkaWZmcy4KICAg
ICAiIiIKLSAgICBleHBsYW5hdGlvbiA9IGVjdShleHBsYW5hdGlvbikKICAgICBsaW5lcyA9IF9z
cGxpdF9leHBsYW5hdGlvbihleHBsYW5hdGlvbikKICAgICByZXN1bHQgPSBfZm9ybWF0X2xpbmVz
KGxpbmVzKQotICAgIHJldHVybiB1KCJcbiIpLmpvaW4ocmVzdWx0KQorICAgIHJldHVybiAiXG4i
LmpvaW4ocmVzdWx0KQogCiAKLWRlZiBfc3BsaXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pOgot
ICAgICIiIlJldHVybiBhIGxpc3Qgb2YgaW5kaXZpZHVhbCBsaW5lcyBpbiB0aGUgZXhwbGFuYXRp
b24KK2RlZiBfc3BsaXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb246IHN0cikgLT4gTGlzdFtzdHJd
OgorICAgIHIiIiJSZXR1cm4gYSBsaXN0IG9mIGluZGl2aWR1YWwgbGluZXMgaW4gdGhlIGV4cGxh
bmF0aW9uLgogCiAgICAgVGhpcyB3aWxsIHJldHVybiBhIGxpc3Qgb2YgbGluZXMgc3BsaXQgb24g
J1xueycsICdcbn0nIGFuZCAnXG5+Jy4KICAgICBBbnkgb3RoZXIgbmV3bGluZXMgd2lsbCBiZSBl
c2NhcGVkIGFuZCBhcHBlYXIgaW4gdGhlIGxpbmUgYXMgdGhlCiAgICAgbGl0ZXJhbCAnXG4nIGNo
YXJhY3RlcnMuCiAgICAgIiIiCi0gICAgcmF3X2xpbmVzID0gKGV4cGxhbmF0aW9uIG9yIHUoIiIp
KS5zcGxpdCgiXG4iKQorICAgIHJhd19saW5lcyA9IChleHBsYW5hdGlvbiBvciAiIikuc3BsaXQo
IlxuIikKICAgICBsaW5lcyA9IFtyYXdfbGluZXNbMF1dCiAgICAgZm9yIHZhbHVlcyBpbiByYXdf
bGluZXNbMTpdOgogICAgICAgICBpZiB2YWx1ZXMgYW5kIHZhbHVlc1swXSBpbiBbInsiLCAifSIs
ICJ+IiwgIj4iXToKQEAgLTU4LDI4ICs2MSwyOCBAQCBkZWYgX3NwbGl0X2V4cGxhbmF0aW9uKGV4
cGxhbmF0aW9uKToKICAgICByZXR1cm4gbGluZXMKIAogCi1kZWYgX2Zvcm1hdF9saW5lcyhsaW5l
cyk6Ci0gICAgIiIiRm9ybWF0IHRoZSBpbmRpdmlkdWFsIGxpbmVzCitkZWYgX2Zvcm1hdF9saW5l
cyhsaW5lczogU2VxdWVuY2Vbc3RyXSkgLT4gTGlzdFtzdHJdOgorICAgICIiIkZvcm1hdCB0aGUg
aW5kaXZpZHVhbCBsaW5lcy4KIAotICAgIFRoaXMgd2lsbCByZXBsYWNlIHRoZSAneycsICd9JyBh
bmQgJ34nIGNoYXJhY3RlcnMgb2Ygb3VyIG1pbmkKLSAgICBmb3JtYXR0aW5nIGxhbmd1YWdlIHdp
dGggdGhlIHByb3BlciAnd2hlcmUgLi4uJywgJ2FuZCAuLi4nIGFuZCAnICsKLSAgICAuLi4nIHRl
eHQsIHRha2luZyBjYXJlIG9mIGluZGVudGF0aW9uIGFsb25nIHRoZSB3YXkuCisgICAgVGhpcyB3
aWxsIHJlcGxhY2UgdGhlICd7JywgJ30nIGFuZCAnficgY2hhcmFjdGVycyBvZiBvdXIgbWluaSBm
b3JtYXR0aW5nCisgICAgbGFuZ3VhZ2Ugd2l0aCB0aGUgcHJvcGVyICd3aGVyZSAuLi4nLCAnYW5k
IC4uLicgYW5kICcgKyAuLi4nIHRleHQsIHRha2luZworICAgIGNhcmUgb2YgaW5kZW50YXRpb24g
YWxvbmcgdGhlIHdheS4KIAogICAgIFJldHVybiBhIGxpc3Qgb2YgZm9ybWF0dGVkIGxpbmVzLgog
ICAgICIiIgotICAgIHJlc3VsdCA9IGxpbmVzWzoxXQorICAgIHJlc3VsdCA9IGxpc3QobGluZXNb
OjFdKQogICAgIHN0YWNrID0gWzBdCiAgICAgc3RhY2tjbnQgPSBbMF0KICAgICBmb3IgbGluZSBp
biBsaW5lc1sxOl06CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgieyIpOgogICAgICAgICAg
ICAgaWYgc3RhY2tjbnRbLTFdOgotICAgICAgICAgICAgICAgIHMgPSB1KCJhbmQgICAiKQorICAg
ICAgICAgICAgICAgIHMgPSAiYW5kICAgIgogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBzID0gdSgid2hlcmUgIikKKyAgICAgICAgICAgICAgICBzID0gIndoZXJlICIKICAgICAg
ICAgICAgIHN0YWNrLmFwcGVuZChsZW4ocmVzdWx0KSkKICAgICAgICAgICAgIHN0YWNrY250Wy0x
XSArPSAxCiAgICAgICAgICAgICBzdGFja2NudC5hcHBlbmQoMCkKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodSgiICsiKSArIHUoIiAgIikgKiAobGVuKHN0YWNrKSAtIDEpICsgcyArIGxpbmVb
MTpdKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICsiICsgIiAgIiAqIChsZW4oc3RhY2sp
IC0gMSkgKyBzICsgbGluZVsxOl0pCiAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJ9Iik6
CiAgICAgICAgICAgICBzdGFjay5wb3AoKQogICAgICAgICAgICAgc3RhY2tjbnQucG9wKCkKQEAg
LTg4LDc0ICs5MSw3NSBAQCBkZWYgX2Zvcm1hdF9saW5lcyhsaW5lcyk6CiAgICAgICAgICAgICBh
c3NlcnQgbGluZVswXSBpbiBbIn4iLCAiPiJdCiAgICAgICAgICAgICBzdGFja1stMV0gKz0gMQog
ICAgICAgICAgICAgaW5kZW50ID0gbGVuKHN0YWNrKSBpZiBsaW5lLnN0YXJ0c3dpdGgoIn4iKSBl
bHNlIGxlbihzdGFjaykgLSAxCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUoIiAgIikgKiBp
bmRlbnQgKyBsaW5lWzE6XSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgIiAqIGluZGVu
dCArIGxpbmVbMTpdKQogICAgIGFzc2VydCBsZW4oc3RhY2spID09IDEKICAgICByZXR1cm4gcmVz
dWx0CiAKIAotIyBQcm92aWRlIGJhc2VzdHJpbmcgaW4gcHl0aG9uMwotdHJ5OgotICAgIGJhc2Vz
dHJpbmcgPSBiYXNlc3RyaW5nCi1leGNlcHQgTmFtZUVycm9yOgotICAgIGJhc2VzdHJpbmcgPSBz
dHIKK2RlZiBpc3NlcXVlbmNlKHg6IEFueSkgLT4gYm9vbDoKKyAgICByZXR1cm4gaXNpbnN0YW5j
ZSh4LCBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UpIGFuZCBub3QgaXNpbnN0YW5jZSh4LCBzdHIp
CisKKworZGVmIGlzdGV4dCh4OiBBbnkpIC0+IGJvb2w6CisgICAgcmV0dXJuIGlzaW5zdGFuY2Uo
eCwgc3RyKQorCisKK2RlZiBpc2RpY3QoeDogQW55KSAtPiBib29sOgorICAgIHJldHVybiBpc2lu
c3RhbmNlKHgsIGRpY3QpCisKIAorZGVmIGlzc2V0KHg6IEFueSkgLT4gYm9vbDoKKyAgICByZXR1
cm4gaXNpbnN0YW5jZSh4LCAoc2V0LCBmcm96ZW5zZXQpKQogCi1kZWYgYXNzZXJ0cmVwcl9jb21w
YXJlKGNvbmZpZywgb3AsIGxlZnQsIHJpZ2h0KToKLSAgICAiIiJSZXR1cm4gc3BlY2lhbGlzZWQg
ZXhwbGFuYXRpb25zIGZvciBzb21lIG9wZXJhdG9ycy9vcGVyYW5kcyIiIgotICAgIHdpZHRoID0g
ODAgLSAxNSAtIGxlbihvcCkgLSAyICAjIDE1IGNoYXJzIGluZGVudGF0aW9uLCAxIHNwYWNlIGFy
b3VuZCBvcAotICAgIGxlZnRfcmVwciA9IHB5LmlvLnNhZmVyZXByKGxlZnQsIG1heHNpemU9aW50
KHdpZHRoIC8vIDIpKQotICAgIHJpZ2h0X3JlcHIgPSBweS5pby5zYWZlcmVwcihyaWdodCwgbWF4
c2l6ZT13aWR0aCAtIGxlbihsZWZ0X3JlcHIpKQogCi0gICAgc3VtbWFyeSA9IHUoIiVzICVzICVz
IikgJSAoZWN1KGxlZnRfcmVwciksIG9wLCBlY3UocmlnaHRfcmVwcikpCitkZWYgaXNkYXRhY2xz
KG9iajogQW55KSAtPiBib29sOgorICAgIHJldHVybiBnZXRhdHRyKG9iaiwgIl9fZGF0YWNsYXNz
X2ZpZWxkc19fIiwgTm9uZSkgaXMgbm90IE5vbmUKIAotICAgIGRlZiBpc3NlcXVlbmNlKHgpOgot
ICAgICAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCBTZXF1ZW5jZSkgYW5kIG5vdCBpc2luc3RhbmNl
KHgsIGJhc2VzdHJpbmcpCiAKLSAgICBkZWYgaXN0ZXh0KHgpOgotICAgICAgICByZXR1cm4gaXNp
bnN0YW5jZSh4LCBiYXNlc3RyaW5nKQorZGVmIGlzYXR0cnMob2JqOiBBbnkpIC0+IGJvb2w6Cisg
ICAgcmV0dXJuIGdldGF0dHIob2JqLCAiX19hdHRyc19hdHRyc19fIiwgTm9uZSkgaXMgbm90IE5v
bmUKIAotICAgIGRlZiBpc2RpY3QoeCk6Ci0gICAgICAgIHJldHVybiBpc2luc3RhbmNlKHgsIGRp
Y3QpCiAKLSAgICBkZWYgaXNzZXQoeCk6Ci0gICAgICAgIHJldHVybiBpc2luc3RhbmNlKHgsIChz
ZXQsIGZyb3plbnNldCkpCitkZWYgaXNpdGVyYWJsZShvYmo6IEFueSkgLT4gYm9vbDoKKyAgICB0
cnk6CisgICAgICAgIGl0ZXIob2JqKQorICAgICAgICByZXR1cm4gbm90IGlzdGV4dChvYmopCisg
ICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgaXNp
dGVyYWJsZShvYmopOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpdGVyKG9iaikKLSAgICAg
ICAgICAgIHJldHVybiBub3QgaXN0ZXh0KG9iaikKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQogCitkZWYgYXNzZXJ0cmVwcl9jb21wYXJlKGNvbmZp
Zywgb3A6IHN0ciwgbGVmdDogQW55LCByaWdodDogQW55KSAtPiBPcHRpb25hbFtMaXN0W3N0cl1d
OgorICAgICIiIlJldHVybiBzcGVjaWFsaXNlZCBleHBsYW5hdGlvbnMgZm9yIHNvbWUgb3BlcmF0
b3JzL29wZXJhbmRzLiIiIgogICAgIHZlcmJvc2UgPSBjb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3Nl
IikKKyAgICBpZiB2ZXJib3NlID4gMToKKyAgICAgICAgbGVmdF9yZXByID0gc2FmZWZvcm1hdChs
ZWZ0KQorICAgICAgICByaWdodF9yZXByID0gc2FmZWZvcm1hdChyaWdodCkKKyAgICBlbHNlOgor
ICAgICAgICAjIFhYWDogIjE1IGNoYXJzIGluZGVudGF0aW9uIiBpcyB3cm9uZworICAgICAgICAj
ICAgICAgKCJFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgIik7IHNob3VsZCB1c2UgdGVy
bSB3aWR0aC4KKyAgICAgICAgbWF4c2l6ZSA9ICgKKyAgICAgICAgICAgIDgwIC0gMTUgLSBsZW4o
b3ApIC0gMgorICAgICAgICApIC8vIDIgICMgMTUgY2hhcnMgaW5kZW50YXRpb24sIDEgc3BhY2Ug
YXJvdW5kIG9wCisgICAgICAgIGxlZnRfcmVwciA9IHNhZmVyZXByKGxlZnQsIG1heHNpemU9bWF4
c2l6ZSkKKyAgICAgICAgcmlnaHRfcmVwciA9IHNhZmVyZXByKHJpZ2h0LCBtYXhzaXplPW1heHNp
emUpCisKKyAgICBzdW1tYXJ5ID0gInt9IHt9IHt9Ii5mb3JtYXQobGVmdF9yZXByLCBvcCwgcmln
aHRfcmVwcikKKwogICAgIGV4cGxhbmF0aW9uID0gTm9uZQogICAgIHRyeToKICAgICAgICAgaWYg
b3AgPT0gIj09IjoKLSAgICAgICAgICAgIGlmIGlzdGV4dChsZWZ0KSBhbmQgaXN0ZXh0KHJpZ2h0
KToKLSAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IF9kaWZmX3RleHQobGVmdCwgcmlnaHQs
IHZlcmJvc2UpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzc2VxdWVu
Y2UobGVmdCkgYW5kIGlzc2VxdWVuY2UocmlnaHQpOgotICAgICAgICAgICAgICAgICAgICBleHBs
YW5hdGlvbiA9IF9jb21wYXJlX2VxX3NlcXVlbmNlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAg
ICAgICAgICAgICAgIGVsaWYgaXNzZXQobGVmdCkgYW5kIGlzc2V0KHJpZ2h0KToKLSAgICAgICAg
ICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXQobGVmdCwgcmlnaHQsIHZl
cmJvc2UpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2RpY3QobGVmdCkgYW5kIGlzZGljdChyaWdo
dCk6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2NvbXBhcmVfZXFfZGljdChs
ZWZ0LCByaWdodCwgdmVyYm9zZSkKLSAgICAgICAgICAgICAgICBpZiBpc2l0ZXJhYmxlKGxlZnQp
IGFuZCBpc2l0ZXJhYmxlKHJpZ2h0KToKLSAgICAgICAgICAgICAgICAgICAgZXhwbCA9IF9jb21w
YXJlX2VxX2l0ZXJhYmxlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAgICAg
ICBpZiBleHBsYW5hdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGxhbmF0aW9uLmV4dGVuZChleHBsKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBleHBsCisgICAgICAgICAgICBleHBsYW5h
dGlvbiA9IF9jb21wYXJlX2VxX2FueShsZWZ0LCByaWdodCwgdmVyYm9zZSkKICAgICAgICAgZWxp
ZiBvcCA9PSAibm90IGluIjoKICAgICAgICAgICAgIGlmIGlzdGV4dChsZWZ0KSBhbmQgaXN0ZXh0
KHJpZ2h0KToKICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IF9ub3Rpbl90ZXh0KGxlZnQs
IHJpZ2h0LCB2ZXJib3NlKQorICAgIGV4Y2VwdCBvdXRjb21lcy5FeGl0OgorICAgICAgICByYWlz
ZQogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIGV4cGxhbmF0aW9uID0gWwotICAgICAg
ICAgICAgdSgKLSAgICAgICAgICAgICAgICAiKHB5dGVzdF9hc3NlcnRpb24gcGx1Z2luOiByZXBy
ZXNlbnRhdGlvbiBvZiBkZXRhaWxzIGZhaWxlZC4gICIKLSAgICAgICAgICAgICAgICAiUHJvYmFi
bHkgYW4gb2JqZWN0IGhhcyBhIGZhdWx0eSBfX3JlcHJfXy4pIgorICAgICAgICAgICAgIihweXRl
c3RfYXNzZXJ0aW9uIHBsdWdpbjogcmVwcmVzZW50YXRpb24gb2YgZGV0YWlscyBmYWlsZWQ6IHt9
LiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5m
cm9tX2N1cnJlbnQoKS5fZ2V0cmVwcmNyYXNoKCkKICAgICAgICAgICAgICksCi0gICAgICAgICAg
ICB1KF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpKSwKKyAgICAgICAgICAgICIgUHJvYmFi
bHkgYW4gb2JqZWN0IGhhcyBhIGZhdWx0eSBfX3JlcHJfXy4pIiwKICAgICAgICAgXQogCiAgICAg
aWYgbm90IGV4cGxhbmF0aW9uOgpAQCAtMTY0LDM0ICsxNjgsMzkgQEAgZGVmIGFzc2VydHJlcHJf
Y29tcGFyZShjb25maWcsIG9wLCBsZWZ0LCByaWdodCk6CiAgICAgcmV0dXJuIFtzdW1tYXJ5XSAr
IGV4cGxhbmF0aW9uCiAKIAotZGVmIF9kaWZmX3RleHQobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFs
c2UpOgotICAgICIiIlJldHVybiB0aGUgZXhwbGFuYXRpb24gZm9yIHRoZSBkaWZmIGJldHdlZW4g
dGV4dCBvciBieXRlcworZGVmIF9jb21wYXJlX2VxX2FueShsZWZ0OiBBbnksIHJpZ2h0OiBBbnks
IHZlcmJvc2U6IGludCA9IDApIC0+IExpc3Rbc3RyXToKKyAgICBleHBsYW5hdGlvbiA9IFtdCisg
ICAgaWYgaXN0ZXh0KGxlZnQpIGFuZCBpc3RleHQocmlnaHQpOgorICAgICAgICBleHBsYW5hdGlv
biA9IF9kaWZmX3RleHQobGVmdCwgcmlnaHQsIHZlcmJvc2UpCisgICAgZWxzZToKKyAgICAgICAg
aWYgaXNzZXF1ZW5jZShsZWZ0KSBhbmQgaXNzZXF1ZW5jZShyaWdodCk6CisgICAgICAgICAgICBl
eHBsYW5hdGlvbiA9IF9jb21wYXJlX2VxX3NlcXVlbmNlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQor
ICAgICAgICBlbGlmIGlzc2V0KGxlZnQpIGFuZCBpc3NldChyaWdodCk6CisgICAgICAgICAgICBl
eHBsYW5hdGlvbiA9IF9jb21wYXJlX2VxX3NldChsZWZ0LCByaWdodCwgdmVyYm9zZSkKKyAgICAg
ICAgZWxpZiBpc2RpY3QobGVmdCkgYW5kIGlzZGljdChyaWdodCk6CisgICAgICAgICAgICBleHBs
YW5hdGlvbiA9IF9jb21wYXJlX2VxX2RpY3QobGVmdCwgcmlnaHQsIHZlcmJvc2UpCisgICAgICAg
IGVsaWYgdHlwZShsZWZ0KSA9PSB0eXBlKHJpZ2h0KSBhbmQgKGlzZGF0YWNscyhsZWZ0KSBvciBp
c2F0dHJzKGxlZnQpKToKKyAgICAgICAgICAgIHR5cGVfZm4gPSAoaXNkYXRhY2xzLCBpc2F0dHJz
KQorICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9jbHMobGVmdCwgcmlnaHQs
IHZlcmJvc2UsIHR5cGVfZm4pCisgICAgICAgIGVsaWYgdmVyYm9zZSA+IDA6CisgICAgICAgICAg
ICBleHBsYW5hdGlvbiA9IF9jb21wYXJlX2VxX3ZlcmJvc2UobGVmdCwgcmlnaHQpCisgICAgICAg
IGlmIGlzaXRlcmFibGUobGVmdCkgYW5kIGlzaXRlcmFibGUocmlnaHQpOgorICAgICAgICAgICAg
ZXhwbCA9IF9jb21wYXJlX2VxX2l0ZXJhYmxlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQorICAgICAg
ICAgICAgZXhwbGFuYXRpb24uZXh0ZW5kKGV4cGwpCisgICAgcmV0dXJuIGV4cGxhbmF0aW9uCisK
KworZGVmIF9kaWZmX3RleHQobGVmdDogc3RyLCByaWdodDogc3RyLCB2ZXJib3NlOiBpbnQgPSAw
KSAtPiBMaXN0W3N0cl06CisgICAgIiIiUmV0dXJuIHRoZSBleHBsYW5hdGlvbiBmb3IgdGhlIGRp
ZmYgYmV0d2VlbiB0ZXh0LgogCiAgICAgVW5sZXNzIC0tdmVyYm9zZSBpcyB1c2VkIHRoaXMgd2ls
bCBza2lwIGxlYWRpbmcgYW5kIHRyYWlsaW5nCiAgICAgY2hhcmFjdGVycyB3aGljaCBhcmUgaWRl
bnRpY2FsIHRvIGtlZXAgdGhlIGRpZmYgbWluaW1hbC4KLQotICAgIElmIHRoZSBpbnB1dCBhcmUg
Ynl0ZXMgdGhleSB3aWxsIGJlIHNhZmVseSBjb252ZXJ0ZWQgdG8gdGV4dC4KICAgICAiIiIKICAg
ICBmcm9tIGRpZmZsaWIgaW1wb3J0IG5kaWZmCiAKLSAgICBleHBsYW5hdGlvbiA9IFtdCisgICAg
ZXhwbGFuYXRpb24gPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KIAotICAgIGRlZiBlc2NhcGVfZm9y
X3JlYWRhYmxlX2RpZmYoYmluYXJ5X3RleHQpOgotICAgICAgICAiIiIKLSAgICAgICAgRW5zdXJl
cyB0aGF0IHRoZSBpbnRlcm5hbCBzdHJpbmcgaXMgYWx3YXlzIHZhbGlkIHVuaWNvZGUsIGNvbnZl
cnRpbmcgYW55IGJ5dGVzIHNhZmVseSB0byB2YWxpZCB1bmljb2RlLgotICAgICAgICBUaGlzIGlz
IGRvbmUgdXNpbmcgcmVwcigpIHdoaWNoIHRoZW4gbmVlZHMgcG9zdC1wcm9jZXNzaW5nIHRvIGZp
eCB0aGUgZW5jb21wYXNzaW5nIHF1b3RlcyBhbmQgdW4tZXNjYXBlCi0gICAgICAgIG5ld2xpbmVz
IGFuZCBjYXJyaWFnZSByZXR1cm5zICgjNDI5KS4KLSAgICAgICAgIiIiCi0gICAgICAgIHIgPSBz
aXgudGV4dF90eXBlKHJlcHIoYmluYXJ5X3RleHQpWzE6LTFdKQotICAgICAgICByID0gci5yZXBs
YWNlKHIiXG4iLCAiXG4iKQotICAgICAgICByID0gci5yZXBsYWNlKHIiXHIiLCAiXHIiKQotICAg
ICAgICByZXR1cm4gcgotCi0gICAgaWYgaXNpbnN0YW5jZShsZWZ0LCBzaXguYmluYXJ5X3R5cGUp
OgotICAgICAgICBsZWZ0ID0gZXNjYXBlX2Zvcl9yZWFkYWJsZV9kaWZmKGxlZnQpCi0gICAgaWYg
aXNpbnN0YW5jZShyaWdodCwgc2l4LmJpbmFyeV90eXBlKToKLSAgICAgICAgcmlnaHQgPSBlc2Nh
cGVfZm9yX3JlYWRhYmxlX2RpZmYocmlnaHQpCi0gICAgaWYgbm90IHZlcmJvc2U6CisgICAgaWYg
dmVyYm9zZSA8IDE6CiAgICAgICAgIGkgPSAwICAjIGp1c3QgaW4gY2FzZSBsZWZ0IG9yIHJpZ2h0
IGhhcyB6ZXJvIGxlbmd0aAogICAgICAgICBmb3IgaSBpbiByYW5nZShtaW4obGVuKGxlZnQpLCBs
ZW4ocmlnaHQpKSk6CiAgICAgICAgICAgICBpZiBsZWZ0W2ldICE9IHJpZ2h0W2ldOgpAQCAtMTk5
LDggKzIwOCw3IEBAIGRlZiBfZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToK
ICAgICAgICAgaWYgaSA+IDQyOgogICAgICAgICAgICAgaSAtPSAxMCAgIyBQcm92aWRlIHNvbWUg
Y29udGV4dAogICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBbCi0gICAgICAgICAgICAgICAgdSgi
U2tpcHBpbmcgJXMgaWRlbnRpY2FsIGxlYWRpbmcgIiAiY2hhcmFjdGVycyBpbiBkaWZmLCB1c2Ug
LXYgdG8gc2hvdyIpCi0gICAgICAgICAgICAgICAgJSBpCisgICAgICAgICAgICAgICAgIlNraXBw
aW5nICVzIGlkZW50aWNhbCBsZWFkaW5nIGNoYXJhY3RlcnMgaW4gZGlmZiwgdXNlIC12IHRvIHNo
b3ciICUgaQogICAgICAgICAgICAgXQogICAgICAgICAgICAgbGVmdCA9IGxlZnRbaTpdCiAgICAg
ICAgICAgICByaWdodCA9IHJpZ2h0W2k6XQpAQCAtMjExLDExICsyMTksOCBAQCBkZWYgX2RpZmZf
dGV4dChsZWZ0LCByaWdodCwgdmVyYm9zZT1GYWxzZSk6CiAgICAgICAgICAgICBpZiBpID4gNDI6
CiAgICAgICAgICAgICAgICAgaSAtPSAxMCAgIyBQcm92aWRlIHNvbWUgY29udGV4dAogICAgICAg
ICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFsKLSAgICAgICAgICAgICAgICAgICAgdSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJTa2lwcGluZyAlcyBpZGVudGljYWwgdHJhaWxpbmcgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlcnMgaW4gZGlmZiwgdXNlIC12IHRvIHNob3ci
Ci0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgJSBpCisgICAgICAg
ICAgICAgICAgICAgICJTa2lwcGluZyB7fSBpZGVudGljYWwgdHJhaWxpbmcgIgorICAgICAgICAg
ICAgICAgICAgICAiY2hhcmFjdGVycyBpbiBkaWZmLCB1c2UgLXYgdG8gc2hvdyIuZm9ybWF0KGkp
CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0WzotaV0KICAg
ICAgICAgICAgICAgICByaWdodCA9IHJpZ2h0WzotaV0KQEAgLTIyMywxMTYgKzIyOCwyNTEgQEAg
ZGVmIF9kaWZmX3RleHQobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgogICAgIGlmIGxlZnQu
aXNzcGFjZSgpIG9yIHJpZ2h0Lmlzc3BhY2UoKToKICAgICAgICAgbGVmdCA9IHJlcHIoc3RyKGxl
ZnQpKQogICAgICAgICByaWdodCA9IHJlcHIoc3RyKHJpZ2h0KSkKLSAgICAgICAgZXhwbGFuYXRp
b24gKz0gW3UiU3RyaW5ncyBjb250YWluIG9ubHkgd2hpdGVzcGFjZSwgZXNjYXBpbmcgdGhlbSB1
c2luZyByZXByKCkiXQorICAgICAgICBleHBsYW5hdGlvbiArPSBbIlN0cmluZ3MgY29udGFpbiBv
bmx5IHdoaXRlc3BhY2UsIGVzY2FwaW5nIHRoZW0gdXNpbmcgcmVwcigpIl0KKyAgICAjICJyaWdo
dCIgaXMgdGhlIGV4cGVjdGVkIGJhc2UgYWdhaW5zdCB3aGljaCB3ZSBjb21wYXJlICJsZWZ0IiwK
KyAgICAjIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMz
MzMKICAgICBleHBsYW5hdGlvbiArPSBbCiAgICAgICAgIGxpbmUuc3RyaXAoIlxuIikKLSAgICAg
ICAgZm9yIGxpbmUgaW4gbmRpZmYobGVmdC5zcGxpdGxpbmVzKGtlZXBlbmRzKSwgcmlnaHQuc3Bs
aXRsaW5lcyhrZWVwZW5kcykpCisgICAgICAgIGZvciBsaW5lIGluIG5kaWZmKHJpZ2h0LnNwbGl0
bGluZXMoa2VlcGVuZHMpLCBsZWZ0LnNwbGl0bGluZXMoa2VlcGVuZHMpKQogICAgIF0KICAgICBy
ZXR1cm4gZXhwbGFuYXRpb24KIAogCi1kZWYgX2NvbXBhcmVfZXFfaXRlcmFibGUobGVmdCwgcmln
aHQsIHZlcmJvc2U9RmFsc2UpOgorZGVmIF9jb21wYXJlX2VxX3ZlcmJvc2UobGVmdDogQW55LCBy
aWdodDogQW55KSAtPiBMaXN0W3N0cl06CisgICAga2VlcGVuZHMgPSBUcnVlCisgICAgbGVmdF9s
aW5lcyA9IHJlcHIobGVmdCkuc3BsaXRsaW5lcyhrZWVwZW5kcykKKyAgICByaWdodF9saW5lcyA9
IHJlcHIocmlnaHQpLnNwbGl0bGluZXMoa2VlcGVuZHMpCisKKyAgICBleHBsYW5hdGlvbiA9IFtd
ICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIGV4cGxhbmF0aW9uICs9IFsiKyIgKyBsaW5lIGZvciBs
aW5lIGluIGxlZnRfbGluZXNdCisgICAgZXhwbGFuYXRpb24gKz0gWyItIiArIGxpbmUgZm9yIGxp
bmUgaW4gcmlnaHRfbGluZXNdCisKKyAgICByZXR1cm4gZXhwbGFuYXRpb24KKworCitkZWYgX3N1
cnJvdW5kaW5nX3BhcmVuc19vbl9vd25fbGluZXMobGluZXM6IExpc3Rbc3RyXSkgLT4gTm9uZToK
KyAgICAiIiJNb3ZlIG9wZW5pbmcvY2xvc2luZyBwYXJlbnRoZXNpcy9icmFja2V0IHRvIG93biBs
aW5lcy4iIiIKKyAgICBvcGVuaW5nID0gbGluZXNbMF1bOjFdCisgICAgaWYgb3BlbmluZyBpbiBb
IigiLCAiWyIsICJ7Il06CisgICAgICAgIGxpbmVzWzBdID0gIiAiICsgbGluZXNbMF1bMTpdCisg
ICAgICAgIGxpbmVzWzpdID0gW29wZW5pbmddICsgbGluZXMKKyAgICBjbG9zaW5nID0gbGluZXNb
LTFdWy0xOl0KKyAgICBpZiBjbG9zaW5nIGluIFsiKSIsICJdIiwgIn0iXToKKyAgICAgICAgbGlu
ZXNbLTFdID0gbGluZXNbLTFdWzotMV0gKyAiLCIKKyAgICAgICAgbGluZXNbOl0gPSBsaW5lcyAr
IFtjbG9zaW5nXQorCisKK2RlZiBfY29tcGFyZV9lcV9pdGVyYWJsZSgKKyAgICBsZWZ0OiBJdGVy
YWJsZVtBbnldLCByaWdodDogSXRlcmFibGVbQW55XSwgdmVyYm9zZTogaW50ID0gMAorKSAtPiBM
aXN0W3N0cl06CiAgICAgaWYgbm90IHZlcmJvc2U6Ci0gICAgICAgIHJldHVybiBbdSgiVXNlIC12
IHRvIGdldCB0aGUgZnVsbCBkaWZmIildCisgICAgICAgIHJldHVybiBbIlVzZSAtdiB0byBnZXQg
dGhlIGZ1bGwgZGlmZiJdCiAgICAgIyBkeW5hbWljIGltcG9ydCB0byBzcGVlZHVwIHB5dGVzdAog
ICAgIGltcG9ydCBkaWZmbGliCiAKLSAgICB0cnk6Ci0gICAgICAgIGxlZnRfZm9ybWF0dGluZyA9
IHBwcmludC5wZm9ybWF0KGxlZnQpLnNwbGl0bGluZXMoKQotICAgICAgICByaWdodF9mb3JtYXR0
aW5nID0gcHByaW50LnBmb3JtYXQocmlnaHQpLnNwbGl0bGluZXMoKQotICAgICAgICBleHBsYW5h
dGlvbiA9IFt1KCJGdWxsIGRpZmY6IildCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAg
IyBoYWNrOiBQcmV0dHlQcmludGVyLnBmb3JtYXQoKSBpbiBweXRob24gMiBmYWlscyB3aGVuIGZv
cm1hdHRpbmcgaXRlbXMgdGhhdCBjYW4ndCBiZSBzb3J0ZWQoKSwgaWUsIGNhbGxpbmcKLSAgICAg
ICAgIyBzb3J0ZWQoKSBvbiBhIGxpc3Qgd291bGQgcmFpc2UuIFNlZSBpc3N1ZSAjNzE4LgotICAg
ICAgICAjIEFzIGEgd29ya2Fyb3VuZCwgdGhlIGZ1bGwgZGlmZiBpcyBnZW5lcmF0ZWQgYnkgdXNp
bmcgdGhlIHJlcHIoKSBzdHJpbmcgb2YgZWFjaCBpdGVtIG9mIGVhY2ggY29udGFpbmVyLgotICAg
ICAgICBsZWZ0X2Zvcm1hdHRpbmcgPSBzb3J0ZWQocmVwcih4KSBmb3IgeCBpbiBsZWZ0KQotICAg
ICAgICByaWdodF9mb3JtYXR0aW5nID0gc29ydGVkKHJlcHIoeCkgZm9yIHggaW4gcmlnaHQpCi0g
ICAgICAgIGV4cGxhbmF0aW9uID0gW3UoIkZ1bGwgZGlmZiAoZmFsbGJhY2sgdG8gY2FsbGluZyBy
ZXByIG9uIGVhY2ggaXRlbSk6IildCisgICAgbGVmdF9mb3JtYXR0aW5nID0gcHByaW50LnBmb3Jt
YXQobGVmdCkuc3BsaXRsaW5lcygpCisgICAgcmlnaHRfZm9ybWF0dGluZyA9IHBwcmludC5wZm9y
bWF0KHJpZ2h0KS5zcGxpdGxpbmVzKCkKKworICAgICMgUmUtZm9ybWF0IGZvciBkaWZmZXJlbnQg
b3V0cHV0IGxlbmd0aHMuCisgICAgbGluZXNfbGVmdCA9IGxlbihsZWZ0X2Zvcm1hdHRpbmcpCisg
ICAgbGluZXNfcmlnaHQgPSBsZW4ocmlnaHRfZm9ybWF0dGluZykKKyAgICBpZiBsaW5lc19sZWZ0
ICE9IGxpbmVzX3JpZ2h0OgorICAgICAgICBsZWZ0X2Zvcm1hdHRpbmcgPSBfcGZvcm1hdF9kaXNw
YXRjaChsZWZ0KS5zcGxpdGxpbmVzKCkKKyAgICAgICAgcmlnaHRfZm9ybWF0dGluZyA9IF9wZm9y
bWF0X2Rpc3BhdGNoKHJpZ2h0KS5zcGxpdGxpbmVzKCkKKworICAgIGlmIGxpbmVzX2xlZnQgPiAx
IG9yIGxpbmVzX3JpZ2h0ID4gMToKKyAgICAgICAgX3N1cnJvdW5kaW5nX3BhcmVuc19vbl9vd25f
bGluZXMobGVmdF9mb3JtYXR0aW5nKQorICAgICAgICBfc3Vycm91bmRpbmdfcGFyZW5zX29uX293
bl9saW5lcyhyaWdodF9mb3JtYXR0aW5nKQorCisgICAgZXhwbGFuYXRpb24gPSBbIkZ1bGwgZGlm
ZjoiXQorICAgICMgInJpZ2h0IiBpcyB0aGUgZXhwZWN0ZWQgYmFzZSBhZ2FpbnN0IHdoaWNoIHdl
IGNvbXBhcmUgImxlZnQiLAorICAgICMgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzMzMwogICAgIGV4cGxhbmF0aW9uLmV4dGVuZCgKLSAgICAgICAgbGlu
ZS5zdHJpcCgpIGZvciBsaW5lIGluIGRpZmZsaWIubmRpZmYobGVmdF9mb3JtYXR0aW5nLCByaWdo
dF9mb3JtYXR0aW5nKQorICAgICAgICBsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGRpZmZsaWIu
bmRpZmYocmlnaHRfZm9ybWF0dGluZywgbGVmdF9mb3JtYXR0aW5nKQogICAgICkKICAgICByZXR1
cm4gZXhwbGFuYXRpb24KIAogCi1kZWYgX2NvbXBhcmVfZXFfc2VxdWVuY2UobGVmdCwgcmlnaHQs
IHZlcmJvc2U9RmFsc2UpOgotICAgIGV4cGxhbmF0aW9uID0gW10KLSAgICBmb3IgaSBpbiByYW5n
ZShtaW4obGVuKGxlZnQpLCBsZW4ocmlnaHQpKSk6CitkZWYgX2NvbXBhcmVfZXFfc2VxdWVuY2Uo
CisgICAgbGVmdDogU2VxdWVuY2VbQW55XSwgcmlnaHQ6IFNlcXVlbmNlW0FueV0sIHZlcmJvc2U6
IGludCA9IDAKKykgLT4gTGlzdFtzdHJdOgorICAgIGNvbXBhcmluZ19ieXRlcyA9IGlzaW5zdGFu
Y2UobGVmdCwgYnl0ZXMpIGFuZCBpc2luc3RhbmNlKHJpZ2h0LCBieXRlcykKKyAgICBleHBsYW5h
dGlvbiA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIGxlbl9sZWZ0ID0gbGVuKGxlZnQpCisg
ICAgbGVuX3JpZ2h0ID0gbGVuKHJpZ2h0KQorICAgIGZvciBpIGluIHJhbmdlKG1pbihsZW5fbGVm
dCwgbGVuX3JpZ2h0KSk6CiAgICAgICAgIGlmIGxlZnRbaV0gIT0gcmlnaHRbaV06Ci0gICAgICAg
ICAgICBleHBsYW5hdGlvbiArPSBbdSgiQXQgaW5kZXggJXMgZGlmZjogJXIgIT0gJXIiKSAlIChp
LCBsZWZ0W2ldLCByaWdodFtpXSldCisgICAgICAgICAgICBpZiBjb21wYXJpbmdfYnl0ZXM6Cisg
ICAgICAgICAgICAgICAgIyB3aGVuIGNvbXBhcmluZyBieXRlcywgd2Ugd2FudCB0byBzZWUgdGhl
aXIgYXNjaWkgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICAjIGluc3RlYWQgb2YgdGhl
aXIgbnVtZXJpYyB2YWx1ZXMgKCM1MjYwKQorICAgICAgICAgICAgICAgICMgdXNpbmcgYSBzbGlj
ZSBnaXZlcyB1cyB0aGUgYXNjaWkgcmVwcmVzZW50YXRpb246CisgICAgICAgICAgICAgICAgIyA+
Pj4gcyA9IGInZm9vJworICAgICAgICAgICAgICAgICMgPj4+IHNbMF0KKyAgICAgICAgICAgICAg
ICAjIDEwMgorICAgICAgICAgICAgICAgICMgPj4+IHNbMDoxXQorICAgICAgICAgICAgICAgICMg
YidmJworICAgICAgICAgICAgICAgIGxlZnRfdmFsdWUgPSBsZWZ0W2kgOiBpICsgMV0KKyAgICAg
ICAgICAgICAgICByaWdodF92YWx1ZSA9IHJpZ2h0W2kgOiBpICsgMV0KKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgbGVmdF92YWx1ZSA9IGxlZnRbaV0KKyAgICAgICAgICAgICAg
ICByaWdodF92YWx1ZSA9IHJpZ2h0W2ldCisKKyAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFsK
KyAgICAgICAgICAgICAgICAiQXQgaW5kZXgge30gZGlmZjogeyFyfSAhPSB7IXJ9Ii5mb3JtYXQo
aSwgbGVmdF92YWx1ZSwgcmlnaHRfdmFsdWUpCisgICAgICAgICAgICBdCiAgICAgICAgICAgICBi
cmVhawotICAgIGlmIGxlbihsZWZ0KSA+IGxlbihyaWdodCk6Ci0gICAgICAgIGV4cGxhbmF0aW9u
ICs9IFsKLSAgICAgICAgICAgIHUoIkxlZnQgY29udGFpbnMgbW9yZSBpdGVtcywgZmlyc3QgZXh0
cmEgaXRlbTogJXMiKQotICAgICAgICAgICAgJSBweS5pby5zYWZlcmVwcihsZWZ0W2xlbihyaWdo
dCldKQotICAgICAgICBdCi0gICAgZWxpZiBsZW4obGVmdCkgPCBsZW4ocmlnaHQpOgotICAgICAg
ICBleHBsYW5hdGlvbiArPSBbCi0gICAgICAgICAgICB1KCJSaWdodCBjb250YWlucyBtb3JlIGl0
ZW1zLCBmaXJzdCBleHRyYSBpdGVtOiAlcyIpCi0gICAgICAgICAgICAlIHB5LmlvLnNhZmVyZXBy
KHJpZ2h0W2xlbihsZWZ0KV0pCi0gICAgICAgIF0KKworICAgIGlmIGNvbXBhcmluZ19ieXRlczoK
KyAgICAgICAgIyB3aGVuIGNvbXBhcmluZyBieXRlcywgaXQgZG9lc24ndCBoZWxwIHRvIHNob3cg
dGhlICJzaWRlcyBjb250YWluIG9uZSBvciBtb3JlCisgICAgICAgICMgaXRlbXMiIGxvbmdlciBl
eHBsYW5hdGlvbiwgc28gc2tpcCBpdAorCisgICAgICAgIHJldHVybiBleHBsYW5hdGlvbgorCisg
ICAgbGVuX2RpZmYgPSBsZW5fbGVmdCAtIGxlbl9yaWdodAorICAgIGlmIGxlbl9kaWZmOgorICAg
ICAgICBpZiBsZW5fZGlmZiA+IDA6CisgICAgICAgICAgICBkaXJfd2l0aF9tb3JlID0gIkxlZnQi
CisgICAgICAgICAgICBleHRyYSA9IHNhZmVyZXByKGxlZnRbbGVuX3JpZ2h0XSkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGxlbl9kaWZmID0gMCAtIGxlbl9kaWZmCisgICAgICAgICAgICBk
aXJfd2l0aF9tb3JlID0gIlJpZ2h0IgorICAgICAgICAgICAgZXh0cmEgPSBzYWZlcmVwcihyaWdo
dFtsZW5fbGVmdF0pCisKKyAgICAgICAgaWYgbGVuX2RpZmYgPT0gMToKKyAgICAgICAgICAgIGV4
cGxhbmF0aW9uICs9IFsKKyAgICAgICAgICAgICAgICAie30gY29udGFpbnMgb25lIG1vcmUgaXRl
bToge30iLmZvcm1hdChkaXJfd2l0aF9tb3JlLCBleHRyYSkKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFsKKyAgICAgICAgICAgICAgICAi
JXMgY29udGFpbnMgJWQgbW9yZSBpdGVtcywgZmlyc3QgZXh0cmEgaXRlbTogJXMiCisgICAgICAg
ICAgICAgICAgJSAoZGlyX3dpdGhfbW9yZSwgbGVuX2RpZmYsIGV4dHJhKQorICAgICAgICAgICAg
XQogICAgIHJldHVybiBleHBsYW5hdGlvbgogCiAKLWRlZiBfY29tcGFyZV9lcV9zZXQobGVmdCwg
cmlnaHQsIHZlcmJvc2U9RmFsc2UpOgorZGVmIF9jb21wYXJlX2VxX3NldCgKKyAgICBsZWZ0OiBB
YnN0cmFjdFNldFtBbnldLCByaWdodDogQWJzdHJhY3RTZXRbQW55XSwgdmVyYm9zZTogaW50ID0g
MAorKSAtPiBMaXN0W3N0cl06CiAgICAgZXhwbGFuYXRpb24gPSBbXQogICAgIGRpZmZfbGVmdCA9
IGxlZnQgLSByaWdodAogICAgIGRpZmZfcmlnaHQgPSByaWdodCAtIGxlZnQKICAgICBpZiBkaWZm
X2xlZnQ6Ci0gICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCh1KCJFeHRyYSBpdGVtcyBpbiB0aGUg
bGVmdCBzZXQ6IikpCisgICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCgiRXh0cmEgaXRlbXMgaW4g
dGhlIGxlZnQgc2V0OiIpCiAgICAgICAgIGZvciBpdGVtIGluIGRpZmZfbGVmdDoKLSAgICAgICAg
ICAgIGV4cGxhbmF0aW9uLmFwcGVuZChweS5pby5zYWZlcmVwcihpdGVtKSkKKyAgICAgICAgICAg
IGV4cGxhbmF0aW9uLmFwcGVuZChzYWZlcmVwcihpdGVtKSkKICAgICBpZiBkaWZmX3JpZ2h0Ogot
ICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQodSgiRXh0cmEgaXRlbXMgaW4gdGhlIHJpZ2h0IHNl
dDoiKSkKKyAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKCJFeHRyYSBpdGVtcyBpbiB0aGUgcmln
aHQgc2V0OiIpCiAgICAgICAgIGZvciBpdGVtIGluIGRpZmZfcmlnaHQ6Ci0gICAgICAgICAgICBl
eHBsYW5hdGlvbi5hcHBlbmQocHkuaW8uc2FmZXJlcHIoaXRlbSkpCisgICAgICAgICAgICBleHBs
YW5hdGlvbi5hcHBlbmQoc2FmZXJlcHIoaXRlbSkpCiAgICAgcmV0dXJuIGV4cGxhbmF0aW9uCiAK
IAotZGVmIF9jb21wYXJlX2VxX2RpY3QobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgotICAg
IGV4cGxhbmF0aW9uID0gW10KLSAgICBjb21tb24gPSBzZXQobGVmdCkuaW50ZXJzZWN0aW9uKHNl
dChyaWdodCkpCitkZWYgX2NvbXBhcmVfZXFfZGljdCgKKyAgICBsZWZ0OiBNYXBwaW5nW0FueSwg
QW55XSwgcmlnaHQ6IE1hcHBpbmdbQW55LCBBbnldLCB2ZXJib3NlOiBpbnQgPSAwCispIC0+IExp
c3Rbc3RyXToKKyAgICBleHBsYW5hdGlvbiA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIHNl
dF9sZWZ0ID0gc2V0KGxlZnQpCisgICAgc2V0X3JpZ2h0ID0gc2V0KHJpZ2h0KQorICAgIGNvbW1v
biA9IHNldF9sZWZ0LmludGVyc2VjdGlvbihzZXRfcmlnaHQpCiAgICAgc2FtZSA9IHtrOiBsZWZ0
W2tdIGZvciBrIGluIGNvbW1vbiBpZiBsZWZ0W2tdID09IHJpZ2h0W2tdfQogICAgIGlmIHNhbWUg
YW5kIHZlcmJvc2UgPCAyOgotICAgICAgICBleHBsYW5hdGlvbiArPSBbdSgiT21pdHRpbmcgJXMg
aWRlbnRpY2FsIGl0ZW1zLCB1c2UgLXZ2IHRvIHNob3ciKSAlIGxlbihzYW1lKV0KKyAgICAgICAg
ZXhwbGFuYXRpb24gKz0gWyJPbWl0dGluZyAlcyBpZGVudGljYWwgaXRlbXMsIHVzZSAtdnYgdG8g
c2hvdyIgJSBsZW4oc2FtZSldCiAgICAgZWxpZiBzYW1lOgotICAgICAgICBleHBsYW5hdGlvbiAr
PSBbdSgiQ29tbW9uIGl0ZW1zOiIpXQorICAgICAgICBleHBsYW5hdGlvbiArPSBbIkNvbW1vbiBp
dGVtczoiXQogICAgICAgICBleHBsYW5hdGlvbiArPSBwcHJpbnQucGZvcm1hdChzYW1lKS5zcGxp
dGxpbmVzKCkKICAgICBkaWZmID0ge2sgZm9yIGsgaW4gY29tbW9uIGlmIGxlZnRba10gIT0gcmln
aHRba119CiAgICAgaWYgZGlmZjoKLSAgICAgICAgZXhwbGFuYXRpb24gKz0gW3UoIkRpZmZlcmlu
ZyBpdGVtczoiKV0KKyAgICAgICAgZXhwbGFuYXRpb24gKz0gWyJEaWZmZXJpbmcgaXRlbXM6Il0K
ICAgICAgICAgZm9yIGsgaW4gZGlmZjoKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFsKLSAg
ICAgICAgICAgICAgICBweS5pby5zYWZlcmVwcih7azogbGVmdFtrXX0pICsgIiAhPSAiICsgcHku
aW8uc2FmZXJlcHIoe2s6IHJpZ2h0W2tdfSkKLSAgICAgICAgICAgIF0KLSAgICBleHRyYV9sZWZ0
ID0gc2V0KGxlZnQpIC0gc2V0KHJpZ2h0KQotICAgIGlmIGV4dHJhX2xlZnQ6Ci0gICAgICAgIGV4
cGxhbmF0aW9uLmFwcGVuZCh1KCJMZWZ0IGNvbnRhaW5zIG1vcmUgaXRlbXM6IikpCisgICAgICAg
ICAgICBleHBsYW5hdGlvbiArPSBbc2FmZXJlcHIoe2s6IGxlZnRba119KSArICIgIT0gIiArIHNh
ZmVyZXByKHtrOiByaWdodFtrXX0pXQorICAgIGV4dHJhX2xlZnQgPSBzZXRfbGVmdCAtIHNldF9y
aWdodAorICAgIGxlbl9leHRyYV9sZWZ0ID0gbGVuKGV4dHJhX2xlZnQpCisgICAgaWYgbGVuX2V4
dHJhX2xlZnQ6CisgICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCgKKyAgICAgICAgICAgICJMZWZ0
IGNvbnRhaW5zICVkIG1vcmUgaXRlbSVzOiIKKyAgICAgICAgICAgICUgKGxlbl9leHRyYV9sZWZ0
LCAiIiBpZiBsZW5fZXh0cmFfbGVmdCA9PSAxIGVsc2UgInMiKQorICAgICAgICApCiAgICAgICAg
IGV4cGxhbmF0aW9uLmV4dGVuZCgKICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHtrOiBsZWZ0
W2tdIGZvciBrIGluIGV4dHJhX2xlZnR9KS5zcGxpdGxpbmVzKCkKICAgICAgICAgKQotICAgIGV4
dHJhX3JpZ2h0ID0gc2V0KHJpZ2h0KSAtIHNldChsZWZ0KQotICAgIGlmIGV4dHJhX3JpZ2h0Ogot
ICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQodSgiUmlnaHQgY29udGFpbnMgbW9yZSBpdGVtczoi
KSkKKyAgICBleHRyYV9yaWdodCA9IHNldF9yaWdodCAtIHNldF9sZWZ0CisgICAgbGVuX2V4dHJh
X3JpZ2h0ID0gbGVuKGV4dHJhX3JpZ2h0KQorICAgIGlmIGxlbl9leHRyYV9yaWdodDoKKyAgICAg
ICAgZXhwbGFuYXRpb24uYXBwZW5kKAorICAgICAgICAgICAgIlJpZ2h0IGNvbnRhaW5zICVkIG1v
cmUgaXRlbSVzOiIKKyAgICAgICAgICAgICUgKGxlbl9leHRyYV9yaWdodCwgIiIgaWYgbGVuX2V4
dHJhX3JpZ2h0ID09IDEgZWxzZSAicyIpCisgICAgICAgICkKICAgICAgICAgZXhwbGFuYXRpb24u
ZXh0ZW5kKAogICAgICAgICAgICAgcHByaW50LnBmb3JtYXQoe2s6IHJpZ2h0W2tdIGZvciBrIGlu
IGV4dHJhX3JpZ2h0fSkuc3BsaXRsaW5lcygpCiAgICAgICAgICkKICAgICByZXR1cm4gZXhwbGFu
YXRpb24KIAogCi1kZWYgX25vdGluX3RleHQodGVybSwgdGV4dCwgdmVyYm9zZT1GYWxzZSk6Citk
ZWYgX2NvbXBhcmVfZXFfY2xzKAorICAgIGxlZnQ6IEFueSwKKyAgICByaWdodDogQW55LAorICAg
IHZlcmJvc2U6IGludCwKKyAgICB0eXBlX2ZuczogVHVwbGVbQ2FsbGFibGVbW0FueV0sIGJvb2xd
LCBDYWxsYWJsZVtbQW55XSwgYm9vbF1dLAorKSAtPiBMaXN0W3N0cl06CisgICAgaXNkYXRhY2xz
LCBpc2F0dHJzID0gdHlwZV9mbnMKKyAgICBpZiBpc2RhdGFjbHMobGVmdCk6CisgICAgICAgIGFs
bF9maWVsZHMgPSBsZWZ0Ll9fZGF0YWNsYXNzX2ZpZWxkc19fCisgICAgICAgIGZpZWxkc190b19j
aGVjayA9IFtmaWVsZCBmb3IgZmllbGQsIGluZm8gaW4gYWxsX2ZpZWxkcy5pdGVtcygpIGlmIGlu
Zm8uY29tcGFyZV0KKyAgICBlbGlmIGlzYXR0cnMobGVmdCk6CisgICAgICAgIGFsbF9maWVsZHMg
PSBsZWZ0Ll9fYXR0cnNfYXR0cnNfXworICAgICAgICBmaWVsZHNfdG9fY2hlY2sgPSBbCisgICAg
ICAgICAgICBmaWVsZC5uYW1lIGZvciBmaWVsZCBpbiBhbGxfZmllbGRzIGlmIGdldGF0dHIoZmll
bGQsIEFUVFJTX0VRX0ZJRUxEKQorICAgICAgICBdCisKKyAgICBpbmRlbnQgPSAiICAiCisgICAg
c2FtZSA9IFtdCisgICAgZGlmZiA9IFtdCisgICAgZm9yIGZpZWxkIGluIGZpZWxkc190b19jaGVj
azoKKyAgICAgICAgaWYgZ2V0YXR0cihsZWZ0LCBmaWVsZCkgPT0gZ2V0YXR0cihyaWdodCwgZmll
bGQpOgorICAgICAgICAgICAgc2FtZS5hcHBlbmQoZmllbGQpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBkaWZmLmFwcGVuZChmaWVsZCkKKworICAgIGV4cGxhbmF0aW9uID0gW10KKyAgICBp
ZiBzYW1lIG9yIGRpZmY6CisgICAgICAgIGV4cGxhbmF0aW9uICs9IFsiIl0KKyAgICBpZiBzYW1l
IGFuZCB2ZXJib3NlIDwgMjoKKyAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKCJPbWl0dGluZyAl
cyBpZGVudGljYWwgaXRlbXMsIHVzZSAtdnYgdG8gc2hvdyIgJSBsZW4oc2FtZSkpCisgICAgZWxp
ZiBzYW1lOgorICAgICAgICBleHBsYW5hdGlvbiArPSBbIk1hdGNoaW5nIGF0dHJpYnV0ZXM6Il0K
KyAgICAgICAgZXhwbGFuYXRpb24gKz0gcHByaW50LnBmb3JtYXQoc2FtZSkuc3BsaXRsaW5lcygp
CisgICAgaWYgZGlmZjoKKyAgICAgICAgZXhwbGFuYXRpb24gKz0gWyJEaWZmZXJpbmcgYXR0cmli
dXRlczoiXQorICAgICAgICBleHBsYW5hdGlvbiArPSBwcHJpbnQucGZvcm1hdChkaWZmKS5zcGxp
dGxpbmVzKCkKKyAgICAgICAgZm9yIGZpZWxkIGluIGRpZmY6CisgICAgICAgICAgICBmaWVsZF9s
ZWZ0ID0gZ2V0YXR0cihsZWZ0LCBmaWVsZCkKKyAgICAgICAgICAgIGZpZWxkX3JpZ2h0ID0gZ2V0
YXR0cihyaWdodCwgZmllbGQpCisgICAgICAgICAgICBleHBsYW5hdGlvbiArPSBbCisgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIkRyaWxsIGRvd24gaW50byBkaWZmZXJpbmcg
YXR0cmlidXRlICVzOiIgJSBmaWVsZCwKKyAgICAgICAgICAgICAgICAoIiVzJXM6ICVyICE9ICVy
IikgJSAoaW5kZW50LCBmaWVsZCwgZmllbGRfbGVmdCwgZmllbGRfcmlnaHQpLAorICAgICAgICAg
ICAgXQorICAgICAgICAgICAgZXhwbGFuYXRpb24gKz0gWworICAgICAgICAgICAgICAgIGluZGVu
dCArIGxpbmUKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBfY29tcGFyZV9lcV9hbnkoZmll
bGRfbGVmdCwgZmllbGRfcmlnaHQsIHZlcmJvc2UpCisgICAgICAgICAgICBdCisgICAgcmV0dXJu
IGV4cGxhbmF0aW9uCisKKworZGVmIF9ub3Rpbl90ZXh0KHRlcm06IHN0ciwgdGV4dDogc3RyLCB2
ZXJib3NlOiBpbnQgPSAwKSAtPiBMaXN0W3N0cl06CiAgICAgaW5kZXggPSB0ZXh0LmZpbmQodGVy
bSkKICAgICBoZWFkID0gdGV4dFs6aW5kZXhdCi0gICAgdGFpbCA9IHRleHRbaW5kZXggKyBsZW4o
dGVybSk6XQorICAgIHRhaWwgPSB0ZXh0W2luZGV4ICsgbGVuKHRlcm0pIDpdCiAgICAgY29ycmVj
dF90ZXh0ID0gaGVhZCArIHRhaWwKLSAgICBkaWZmID0gX2RpZmZfdGV4dChjb3JyZWN0X3RleHQs
IHRleHQsIHZlcmJvc2UpCi0gICAgbmV3ZGlmZiA9IFt1KCIlcyBpcyBjb250YWluZWQgaGVyZToi
KSAlIHB5LmlvLnNhZmVyZXByKHRlcm0sIG1heHNpemU9NDIpXQorICAgIGRpZmYgPSBfZGlmZl90
ZXh0KHRleHQsIGNvcnJlY3RfdGV4dCwgdmVyYm9zZSkKKyAgICBuZXdkaWZmID0gWyIlcyBpcyBj
b250YWluZWQgaGVyZToiICUgc2FmZXJlcHIodGVybSwgbWF4c2l6ZT00MildCiAgICAgZm9yIGxp
bmUgaW4gZGlmZjoKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKHUoIlNraXBwaW5nIikpOgor
ICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlNraXBwaW5nIik6CiAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodSgiLSAiKSk6CisgICAgICAgIGlmIGxp
bmUuc3RhcnRzd2l0aCgiLSAiKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIGxp
bmUuc3RhcnRzd2l0aCh1KCIrICIpKToKLSAgICAgICAgICAgIG5ld2RpZmYuYXBwZW5kKHUoIiAg
IikgKyBsaW5lWzI6XSkKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCIrICIpOgorICAgICAg
ICAgICAgbmV3ZGlmZi5hcHBlbmQoIiAgIiArIGxpbmVbMjpdKQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgbmV3ZGlmZi5hcHBlbmQobGluZSkKICAgICByZXR1cm4gbmV3ZGlmZgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWRiM2JhMmVlMTkuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9h
c3NlcnRpb24vX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24v
cmV3cml0ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi90cnVuY2F0ZS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jYWNoZXByb3ZpZGVyLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvY2FjaGVwcm92aWRlci5weQppbmRleCBlYjBmY2MwNmY5YmQuLmIwNDMwNWVk
OWQyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY2FjaGVwcm92aWRlci5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jYWNoZXByb3ZpZGVyLnB5CkBAIC0xLDE0
MiArMSwyODcgQEAKKyIiIkltcGxlbWVudGF0aW9uIG9mIHRoZSBjYWNoZSBwcm92aWRlci4iIiIK
KyMgVGhpcyBwbHVnaW4gd2FzIG5vdCBuYW1lZCAiY2FjaGUiIHRvIGF2b2lkIGNvbmZsaWN0cyB3
aXRoIHRoZSBleHRlcm5hbAorIyBweXRlc3QtY2FjaGUgdmVyc2lvbi4KK2ltcG9ydCBqc29uCitp
bXBvcnQgb3MKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgR2Vu
ZXJhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBM
aXN0Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXQK
K2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBvcnQgYXR0cgoraW1wb3J0IHB5CisKK2lt
cG9ydCBweXRlc3QKK2Zyb20gLnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gLnBhdGhsaWIgaW1w
b3J0IHJlc29sdmVfZnJvbV9zdHIKK2Zyb20gLnBhdGhsaWIgaW1wb3J0IHJtX3JmCitmcm9tIC5y
ZXBvcnRzIGltcG9ydCBDb2xsZWN0UmVwb3J0Citmcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCitm
cm9tIF9weXRlc3QuX2lvIGltcG9ydCBUZXJtaW5hbFdyaXRlcgorZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IG9yZGVyX3ByZXNlcnZp
bmdfZGljdAorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGlt
cG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZVJlcXVlc3QK
K2Zyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCitmcm9tIF9weXRlc3QucHl0aG9uIGlt
cG9ydCBNb2R1bGUKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBUZXN0UmVwb3J0CisKKwor
UkVBRE1FX0NPTlRFTlQgPSAiIiJcCisjIHB5dGVzdCBjYWNoZSBkaXJlY3RvcnkgIworCitUaGlz
IGRpcmVjdG9yeSBjb250YWlucyBkYXRhIGZyb20gdGhlIHB5dGVzdCdzIGNhY2hlIHBsdWdpbiwK
K3doaWNoIHByb3ZpZGVzIHRoZSBgLS1sZmAgYW5kIGAtLWZmYCBvcHRpb25zLCBhcyB3ZWxsIGFz
IHRoZSBgY2FjaGVgIGZpeHR1cmUuCisKKyoqRG8gbm90KiogY29tbWl0IHRoaXMgdG8gdmVyc2lv
biBjb250cm9sLgorCitTZWUgW3RoZSBkb2NzXShodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvY2FjaGUuaHRtbCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKLW1lcmdlZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgY2FjaGUgcHJvdmlkZXIKIAotdGhlIG5hbWUgY2FjaGUgd2FzIG5v
dCBjaG9zZW4gdG8gZW5zdXJlIHBsdWdneSBhdXRvbWF0aWNhbGx5Ci1pZ25vcmVzIHRoZSBleHRl
cm5hbCBweXRlc3QtY2FjaGUKK0NBQ0hFRElSX1RBR19DT05URU5UID0gYiIiIlwKK1NpZ25hdHVy
ZTogOGE0NzdmNTk3ZDI4ZDE3Mjc4OWYwNjg4NjgwNmJjNTUKKyMgVGhpcyBmaWxlIGlzIGEgY2Fj
aGUgZGlyZWN0b3J5IHRhZyBjcmVhdGVkIGJ5IHB5dGVzdC4KKyMgRm9yIGluZm9ybWF0aW9uIGFi
b3V0IGNhY2hlIGRpcmVjdG9yeSB0YWdzLCBzZWU6CisjCWh0dHA6Ly93d3cuYmZvcmQuaW5mby9j
YWNoZWRpci9zcGVjLmh0bWwKICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAogCi1pbXBvcnQgcHkKLWltcG9ydCBzaXgKK0BmaW5hbAorQGF0dHIucwor
Y2xhc3MgQ2FjaGU6CisgICAgX2NhY2hlZGlyID0gYXR0ci5pYih0eXBlPVBhdGgsIHJlcHI9RmFs
c2UpCisgICAgX2NvbmZpZyA9IGF0dHIuaWIodHlwZT1Db25maWcsIHJlcHI9RmFsc2UpCiAKLWlt
cG9ydCBweXRlc3QKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWZyb20gb3MucGF0aCBpbXBvcnQg
c2VwIGFzIF9zZXAsIGFsdHNlcCBhcyBfYWx0c2VwCisgICAgIyBzdWItZGlyZWN0b3J5IHVuZGVy
IGNhY2hlLWRpciBmb3IgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSAibWFrZWRpciIKKyAgICBfQ0FD
SEVfUFJFRklYX0RJUlMgPSAiZCIKIAorICAgICMgc3ViLWRpcmVjdG9yeSB1bmRlciBjYWNoZS1k
aXIgZm9yIHZhbHVlcyBjcmVhdGVkIGJ5ICJzZXQiCisgICAgX0NBQ0hFX1BSRUZJWF9WQUxVRVMg
PSAidiIKIAotY2xhc3MgQ2FjaGUob2JqZWN0KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
Zm9yX2NvbmZpZyhjbHMsIGNvbmZpZzogQ29uZmlnKSAtPiAiQ2FjaGUiOgorICAgICAgICBjYWNo
ZWRpciA9IGNscy5jYWNoZV9kaXJfZnJvbV9jb25maWcoY29uZmlnKQorICAgICAgICBpZiBjb25m
aWcuZ2V0b3B0aW9uKCJjYWNoZWNsZWFyIikgYW5kIGNhY2hlZGlyLmlzX2RpcigpOgorICAgICAg
ICAgICAgY2xzLmNsZWFyX2NhY2hlKGNhY2hlZGlyKQorICAgICAgICByZXR1cm4gY2xzKGNhY2hl
ZGlyLCBjb25maWcpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAg
c2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5fY2FjaGVkaXIgPSBDYWNoZS5jYWNo
ZV9kaXJfZnJvbV9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLnRyYWNlID0gY29uZmlnLnRy
YWNlLnJvb3QuZ2V0KCJjYWNoZSIpCi0gICAgICAgIGlmIGNvbmZpZy5nZXRvcHRpb24oImNhY2hl
Y2xlYXIiKToKLSAgICAgICAgICAgIHNlbGYudHJhY2UoImNsZWFyaW5nIGNhY2hlZGlyIikKLSAg
ICAgICAgICAgIGlmIHNlbGYuX2NhY2hlZGlyLmNoZWNrKCk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fY2FjaGVkaXIucmVtb3ZlKCkKLSAgICAgICAgICAgIHNlbGYuX2NhY2hlZGlyLm1rZGlyKCkK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY2xlYXJfY2FjaGUoY2xzLCBjYWNoZWRpcjogUGF0
aCkgLT4gTm9uZToKKyAgICAgICAgIiIiQ2xlYXIgdGhlIHN1Yi1kaXJlY3RvcmllcyB1c2VkIHRv
IGhvbGQgY2FjaGVkIGRpcmVjdG9yaWVzIGFuZCB2YWx1ZXMuIiIiCisgICAgICAgIGZvciBwcmVm
aXggaW4gKGNscy5fQ0FDSEVfUFJFRklYX0RJUlMsIGNscy5fQ0FDSEVfUFJFRklYX1ZBTFVFUyk6
CisgICAgICAgICAgICBkID0gY2FjaGVkaXIgLyBwcmVmaXgKKyAgICAgICAgICAgIGlmIGQuaXNf
ZGlyKCk6CisgICAgICAgICAgICAgICAgcm1fcmYoZCkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAg
ICBkZWYgY2FjaGVfZGlyX2Zyb21fY29uZmlnKGNvbmZpZyk6Ci0gICAgICAgIGNhY2hlX2RpciA9
IGNvbmZpZy5nZXRpbmkoImNhY2hlX2RpciIpCi0gICAgICAgIGNhY2hlX2RpciA9IG9zLnBhdGgu
ZXhwYW5kdXNlcihjYWNoZV9kaXIpCi0gICAgICAgIGNhY2hlX2RpciA9IG9zLnBhdGguZXhwYW5k
dmFycyhjYWNoZV9kaXIpCi0gICAgICAgIGlmIG9zLnBhdGguaXNhYnMoY2FjaGVfZGlyKToKLSAg
ICAgICAgICAgIHJldHVybiBweS5wYXRoLmxvY2FsKGNhY2hlX2RpcikKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJldHVybiBjb25maWcucm9vdGRpci5qb2luKGNhY2hlX2RpcikKLQotICAg
IGRlZiBtYWtlZGlyKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiIgcmV0dXJuIGEgZGlyZWN0b3J5
IHBhdGggb2JqZWN0IHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiB0aGUKLSAgICAgICAgZGlyZWN0
b3J5IGRvZXMgbm90IHlldCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB1c2Ug
aXQKLSAgICAgICAgdG8gbWFuYWdlIGZpbGVzIGxpa2VzIGUuIGcuIHN0b3JlL3JldHJpZXZlIGRh
dGFiYXNlCi0gICAgICAgIGR1bXBzIGFjcm9zcyB0ZXN0IHNlc3Npb25zLgotCi0gICAgICAgIDpw
YXJhbSBuYW1lOiBtdXN0IGJlIGEgc3RyaW5nIG5vdCBjb250YWluaW5nIGEgYGAvYGAgc2VwYXJh
dG9yLgotICAgICAgICAgICAgIE1ha2Ugc3VyZSB0aGUgbmFtZSBjb250YWlucyB5b3VyIHBsdWdp
biBvciBhcHBsaWNhdGlvbgotICAgICAgICAgICAgIGlkZW50aWZpZXJzIHRvIHByZXZlbnQgY2xh
c2hlcyB3aXRoIG90aGVyIGNhY2hlIHVzZXJzLgorICAgIGRlZiBjYWNoZV9kaXJfZnJvbV9jb25m
aWcoY29uZmlnOiBDb25maWcpIC0+IFBhdGg6CisgICAgICAgIHJldHVybiByZXNvbHZlX2Zyb21f
c3RyKGNvbmZpZy5nZXRpbmkoImNhY2hlX2RpciIpLCBjb25maWcucm9vdHBhdGgpCisKKyAgICBk
ZWYgd2FybihzZWxmLCBmbXQ6IHN0ciwgKiphcmdzOiBvYmplY3QpIC0+IE5vbmU6CisgICAgICAg
IGltcG9ydCB3YXJuaW5ncworICAgICAgICBmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBv
cnQgUHl0ZXN0Q2FjaGVXYXJuaW5nCisKKyAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAg
ICAgIFB5dGVzdENhY2hlV2FybmluZyhmbXQuZm9ybWF0KCoqYXJncykgaWYgYXJncyBlbHNlIGZt
dCksCisgICAgICAgICAgICBzZWxmLl9jb25maWcuaG9vaywKKyAgICAgICAgICAgIHN0YWNrbGV2
ZWw9MywKKyAgICAgICAgKQorCisgICAgZGVmIG1ha2VkaXIoc2VsZiwgbmFtZTogc3RyKSAtPiBw
eS5wYXRoLmxvY2FsOgorICAgICAgICAiIiJSZXR1cm4gYSBkaXJlY3RvcnkgcGF0aCBvYmplY3Qg
d2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKworICAgICAgICBJZiB0aGUgZGlyZWN0b3J5IGRvZXMgbm90
IHlldCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkLiBZb3UgY2FuIHVzZQorICAgICAgICBpdCB0
byBtYW5hZ2UgZmlsZXMgdG8gZS5nLiBzdG9yZS9yZXRyaWV2ZSBkYXRhYmFzZSBkdW1wcyBhY3Jv
c3MgdGVzdAorICAgICAgICBzZXNzaW9ucy4KKworICAgICAgICA6cGFyYW0gbmFtZToKKyAgICAg
ICAgICAgIE11c3QgYmUgYSBzdHJpbmcgbm90IGNvbnRhaW5pbmcgYSBgYC9gYCBzZXBhcmF0b3Iu
CisgICAgICAgICAgICBNYWtlIHN1cmUgdGhlIG5hbWUgY29udGFpbnMgeW91ciBwbHVnaW4gb3Ig
YXBwbGljYXRpb24KKyAgICAgICAgICAgIGlkZW50aWZpZXJzIHRvIHByZXZlbnQgY2xhc2hlcyB3
aXRoIG90aGVyIGNhY2hlIHVzZXJzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgX3NlcCBpbiBu
YW1lIG9yIF9hbHRzZXAgaXMgbm90IE5vbmUgYW5kIF9hbHRzZXAgaW4gbmFtZToKKyAgICAgICAg
cGF0aCA9IFBhdGgobmFtZSkKKyAgICAgICAgaWYgbGVuKHBhdGgucGFydHMpID4gMToKICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5hbWUgaXMgbm90IGFsbG93ZWQgdG8gY29udGFpbiBw
YXRoIHNlcGFyYXRvcnMiKQotICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkaXIuZW5zdXJlX2Rp
cigiZCIsIG5hbWUpCisgICAgICAgIHJlcyA9IHNlbGYuX2NhY2hlZGlyLmpvaW5wYXRoKHNlbGYu
X0NBQ0hFX1BSRUZJWF9ESVJTLCBwYXRoKQorICAgICAgICByZXMubWtkaXIoZXhpc3Rfb2s9VHJ1
ZSwgcGFyZW50cz1UcnVlKQorICAgICAgICByZXR1cm4gcHkucGF0aC5sb2NhbChyZXMpCiAKLSAg
ICBkZWYgX2dldHZhbHVlcGF0aChzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2Fj
aGVkaXIuam9pbigidiIsICprZXkuc3BsaXQoIi8iKSkKKyAgICBkZWYgX2dldHZhbHVlcGF0aChz
ZWxmLCBrZXk6IHN0cikgLT4gUGF0aDoKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZGlyLmpv
aW5wYXRoKHNlbGYuX0NBQ0hFX1BSRUZJWF9WQUxVRVMsIFBhdGgoa2V5KSkKIAotICAgIGRlZiBn
ZXQoc2VsZiwga2V5LCBkZWZhdWx0KToKLSAgICAgICAgIiIiIHJldHVybiBjYWNoZWQgdmFsdWUg
Zm9yIHRoZSBnaXZlbiBrZXkuICBJZiBubyB2YWx1ZQotICAgICAgICB3YXMgeWV0IGNhY2hlZCBv
ciB0aGUgdmFsdWUgY2Fubm90IGJlIHJlYWQsIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgZGVmYXVs
dCBpcyByZXR1cm5lZC4KKyAgICBkZWYgZ2V0KHNlbGYsIGtleTogc3RyLCBkZWZhdWx0KToKKyAg
ICAgICAgIiIiUmV0dXJuIHRoZSBjYWNoZWQgdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkuCiAKLSAg
ICAgICAgOnBhcmFtIGtleTogbXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZS4gVXN1YWxs
eSB0aGUgZmlyc3QKLSAgICAgICAgICAgICBuYW1lIGlzIHRoZSBuYW1lIG9mIHlvdXIgcGx1Z2lu
IG9yIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgIDpwYXJhbSBkZWZhdWx0OiBtdXN0IGJlIHBy
b3ZpZGVkIGluIGNhc2Ugb2YgYSBjYWNoZS1taXNzIG9yCi0gICAgICAgICAgICAgaW52YWxpZCBj
YWNoZSB2YWx1ZXMuCisgICAgICAgIElmIG5vIHZhbHVlIHdhcyB5ZXQgY2FjaGVkIG9yIHRoZSB2
YWx1ZSBjYW5ub3QgYmUgcmVhZCwgdGhlIHNwZWNpZmllZAorICAgICAgICBkZWZhdWx0IGlzIHJl
dHVybmVkLgogCisgICAgICAgIDpwYXJhbSBrZXk6CisgICAgICAgICAgICBNdXN0IGJlIGEgYGAv
YGAgc2VwYXJhdGVkIHZhbHVlLiBVc3VhbGx5IHRoZSBmaXJzdAorICAgICAgICAgICAgbmFtZSBp
cyB0aGUgbmFtZSBvZiB5b3VyIHBsdWdpbiBvciB5b3VyIGFwcGxpY2F0aW9uLgorICAgICAgICA6
cGFyYW0gZGVmYXVsdDoKKyAgICAgICAgICAgIFRoZSB2YWx1ZSB0byByZXR1cm4gaW4gY2FzZSBv
ZiBhIGNhY2hlLW1pc3Mgb3IgaW52YWxpZCBjYWNoZSB2YWx1ZS4KICAgICAgICAgIiIiCiAgICAg
ICAgIHBhdGggPSBzZWxmLl9nZXR2YWx1ZXBhdGgoa2V5KQotICAgICAgICBpZiBwYXRoLmNoZWNr
KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBwYXRoLm9wZW4oInIi
KSBhcyBmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkKGYpCi0gICAgICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLnRyYWNlKCJjYWNo
ZS1pbnZhbGlkIGF0ICVzIiAlIChwYXRoLCkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0Ci0KLSAg
ICBkZWYgc2V0KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICAiIiIgc2F2ZSB2YWx1ZSBmb3Ig
dGhlIGdpdmVuIGtleS4KLQotICAgICAgICA6cGFyYW0ga2V5OiBtdXN0IGJlIGEgYGAvYGAgc2Vw
YXJhdGVkIHZhbHVlLiBVc3VhbGx5IHRoZSBmaXJzdAotICAgICAgICAgICAgIG5hbWUgaXMgdGhl
IG5hbWUgb2YgeW91ciBwbHVnaW4gb3IgeW91ciBhcHBsaWNhdGlvbi4KLSAgICAgICAgOnBhcmFt
IHZhbHVlOiBtdXN0IGJlIG9mIGFueSBjb21iaW5hdGlvbiBvZiBiYXNpYwotICAgICAgICAgICAg
ICAgcHl0aG9uIHR5cGVzLCBpbmNsdWRpbmcgbmVzdGVkIHR5cGVzCi0gICAgICAgICAgICAgICBs
aWtlIGUuIGcuIGxpc3RzIG9mIGRpY3Rpb25hcmllcy4KKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgd2l0aCBwYXRoLm9wZW4oInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHJldHVybiBqc29u
LmxvYWQoZikKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAg
ICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBkZWYgc2V0KHNlbGYsIGtleTogc3RyLCB2YWx1ZTog
b2JqZWN0KSAtPiBOb25lOgorICAgICAgICAiIiJTYXZlIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5
LgorCisgICAgICAgIDpwYXJhbSBrZXk6CisgICAgICAgICAgICBNdXN0IGJlIGEgYGAvYGAgc2Vw
YXJhdGVkIHZhbHVlLiBVc3VhbGx5IHRoZSBmaXJzdAorICAgICAgICAgICAgbmFtZSBpcyB0aGUg
bmFtZSBvZiB5b3VyIHBsdWdpbiBvciB5b3VyIGFwcGxpY2F0aW9uLgorICAgICAgICA6cGFyYW0g
dmFsdWU6CisgICAgICAgICAgICBNdXN0IGJlIG9mIGFueSBjb21iaW5hdGlvbiBvZiBiYXNpYyBw
eXRob24gdHlwZXMsCisgICAgICAgICAgICBpbmNsdWRpbmcgbmVzdGVkIHR5cGVzIGxpa2UgbGlz
dHMgb2YgZGljdGlvbmFyaWVzLgogICAgICAgICAiIiIKICAgICAgICAgcGF0aCA9IHNlbGYuX2dl
dHZhbHVlcGF0aChrZXkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhdGguZGlycGF0aCgp
LmVuc3VyZV9kaXIoKQotICAgICAgICBleGNlcHQgKHB5LmVycm9yLkVFWElTVCwgcHkuZXJyb3Iu
RUFDQ0VTKToKLSAgICAgICAgICAgIHNlbGYuY29uZmlnLndhcm4oCi0gICAgICAgICAgICAgICAg
Y29kZT0iSTkiLCBtZXNzYWdlPSJjb3VsZCBub3QgY3JlYXRlIGNhY2hlIHBhdGggJXMiICUgKHBh
dGgsKQotICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgcGF0aC5wYXJlbnQuaXNfZGlyKCk6
CisgICAgICAgICAgICAgICAgY2FjaGVfZGlyX2V4aXN0c19hbHJlYWR5ID0gVHJ1ZQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjYWNoZV9kaXJfZXhpc3RzX2FscmVhZHkgPSBz
ZWxmLl9jYWNoZWRpci5leGlzdHMoKQorICAgICAgICAgICAgICAgIHBhdGgucGFyZW50Lm1rZGly
KGV4aXN0X29rPVRydWUsIHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6Cisg
ICAgICAgICAgICBzZWxmLndhcm4oImNvdWxkIG5vdCBjcmVhdGUgY2FjaGUgcGF0aCB7cGF0aH0i
LCBwYXRoPXBhdGgpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IGNhY2hlX2Rp
cl9leGlzdHNfYWxyZWFkeToKKyAgICAgICAgICAgIHNlbGYuX2Vuc3VyZV9zdXBwb3J0aW5nX2Zp
bGVzKCkKKyAgICAgICAgZGF0YSA9IGpzb24uZHVtcHModmFsdWUsIGluZGVudD0yLCBzb3J0X2tl
eXM9VHJ1ZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHBhdGgub3BlbigidyIpCi0g
ICAgICAgIGV4Y2VwdCBweS5lcnJvci5FTk9URElSOgotICAgICAgICAgICAgc2VsZi5jb25maWcu
d2FybigKLSAgICAgICAgICAgICAgICBjb2RlPSJJOSIsIG1lc3NhZ2U9ImNhY2hlIGNvdWxkIG5v
dCB3cml0ZSBwYXRoICVzIiAlIChwYXRoLCkKLSAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0
IE9TRXJyb3I6CisgICAgICAgICAgICBzZWxmLndhcm4oImNhY2hlIGNvdWxkIG5vdCB3cml0ZSBw
YXRoIHtwYXRofSIsIHBhdGg9cGF0aCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdpdGgg
ZjoKLSAgICAgICAgICAgICAgICBzZWxmLnRyYWNlKCJjYWNoZS13cml0ZSAlczogJXIiICUgKGtl
eSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIGpzb24uZHVtcCh2YWx1ZSwgZiwgaW5kZW50PTIs
IHNvcnRfa2V5cz1UcnVlKQorICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKworICAgIGRl
ZiBfZW5zdXJlX3N1cHBvcnRpbmdfZmlsZXMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiQ3Jl
YXRlIHN1cHBvcnRpbmcgZmlsZXMgaW4gdGhlIGNhY2hlIGRpciB0aGF0IGFyZSBub3QgcmVhbGx5
IHBhcnQgb2YgdGhlIGNhY2hlLiIiIgorICAgICAgICByZWFkbWVfcGF0aCA9IHNlbGYuX2NhY2hl
ZGlyIC8gIlJFQURNRS5tZCIKKyAgICAgICAgcmVhZG1lX3BhdGgud3JpdGVfdGV4dChSRUFETUVf
Q09OVEVOVCkKKworICAgICAgICBnaXRpZ25vcmVfcGF0aCA9IHNlbGYuX2NhY2hlZGlyLmpvaW5w
YXRoKCIuZ2l0aWdub3JlIikKKyAgICAgICAgbXNnID0gIiMgQ3JlYXRlZCBieSBweXRlc3QgYXV0
b21hdGljYWxseS5cbipcbiIKKyAgICAgICAgZ2l0aWdub3JlX3BhdGgud3JpdGVfdGV4dChtc2cs
IGVuY29kaW5nPSJVVEYtOCIpCisKKyAgICAgICAgY2FjaGVkaXJfdGFnX3BhdGggPSBzZWxmLl9j
YWNoZWRpci5qb2lucGF0aCgiQ0FDSEVESVIuVEFHIikKKyAgICAgICAgY2FjaGVkaXJfdGFnX3Bh
dGgud3JpdGVfYnl0ZXMoQ0FDSEVESVJfVEFHX0NPTlRFTlQpCisKIAorY2xhc3MgTEZQbHVnaW5D
b2xsV3JhcHBlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGZwbHVnaW46ICJMRlBsdWdpbiIp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYubGZwbHVnaW4gPSBsZnBsdWdpbgorICAgICAgICBzZWxm
Ll9jb2xsZWN0ZWRfYXRfbGVhc3Rfb25lX2ZhaWx1cmUgPSBGYWxzZQogCi1jbGFzcyBMRlBsdWdp
bihvYmplY3QpOgotICAgICIiIiBQbHVnaW4gd2hpY2ggaW1wbGVtZW50cyB0aGUgLS1sZiAocnVu
IGxhc3QtZmFpbGluZykgb3B0aW9uICIiIgorICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBw
ZXI9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoc2VsZiwgY29sbGVj
dG9yOiBub2Rlcy5Db2xsZWN0b3IpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGNvbGxlY3Rvciwg
U2Vzc2lvbik6CisgICAgICAgICAgICBvdXQgPSB5aWVsZAorICAgICAgICAgICAgcmVzID0gb3V0
LmdldF9yZXN1bHQoKSAgIyB0eXBlOiBDb2xsZWN0UmVwb3J0CiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY29uZmlnKToKKyAgICAgICAgICAgICMgU29ydCBhbnkgbGYtcGF0aHMgdG8gdGhlIGJl
Z2lubmluZy4KKyAgICAgICAgICAgIGxmX3BhdGhzID0gc2VsZi5sZnBsdWdpbi5fbGFzdF9mYWls
ZWRfcGF0aHMKKyAgICAgICAgICAgIHJlcy5yZXN1bHQgPSBzb3J0ZWQoCisgICAgICAgICAgICAg
ICAgcmVzLnJlc3VsdCwga2V5PWxhbWJkYSB4OiAwIGlmIFBhdGgoc3RyKHguZnNwYXRoKSkgaW4g
bGZfcGF0aHMgZWxzZSAxLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGNvbGxlY3RvciwgTW9kdWxlKToKKyAgICAgICAgICAgIGlm
IFBhdGgoc3RyKGNvbGxlY3Rvci5mc3BhdGgpKSBpbiBzZWxmLmxmcGx1Z2luLl9sYXN0X2ZhaWxl
ZF9wYXRoczoKKyAgICAgICAgICAgICAgICBvdXQgPSB5aWVsZAorICAgICAgICAgICAgICAgIHJl
cyA9IG91dC5nZXRfcmVzdWx0KCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMucmVzdWx0
CisgICAgICAgICAgICAgICAgbGFzdGZhaWxlZCA9IHNlbGYubGZwbHVnaW4ubGFzdGZhaWxlZAor
CisgICAgICAgICAgICAgICAgIyBPbmx5IGZpbHRlciB3aXRoIGtub3duIGZhaWx1cmVzLgorICAg
ICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb2xsZWN0ZWRfYXRfbGVhc3Rfb25lX2ZhaWx1cmU6
CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhbnkoeC5ub2RlaWQgaW4gbGFzdGZhaWxlZCBm
b3IgeCBpbiByZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYubGZwbHVnaW4uY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIo
CisgICAgICAgICAgICAgICAgICAgICAgICBMRlBsdWdpbkNvbGxTa2lwZmlsZXMoc2VsZi5sZnBs
dWdpbiksICJsZnBsdWdpbi1jb2xsc2tpcCIKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jb2xsZWN0ZWRfYXRfbGVhc3Rfb25lX2ZhaWx1cmUgPSBUcnVl
CisKKyAgICAgICAgICAgICAgICBzZXNzaW9uID0gY29sbGVjdG9yLnNlc3Npb24KKyAgICAgICAg
ICAgICAgICByZXN1bHRbOl0gPSBbCisgICAgICAgICAgICAgICAgICAgIHgKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIHggaW4gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIGlmIHgubm9kZWlk
IGluIGxhc3RmYWlsZWQKKyAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIGFueSBwYXNzZWQg
YXJndW1lbnRzIChub3QgdHJpdmlhbCB0byBmaWx0ZXIpLgorICAgICAgICAgICAgICAgICAgICBv
ciBzZXNzaW9uLmlzaW5pdHBhdGgoeC5mc3BhdGgpCisgICAgICAgICAgICAgICAgICAgICMgS2Vl
cCBhbGwgc3ViLWNvbGxlY3RvcnMuCisgICAgICAgICAgICAgICAgICAgIG9yIGlzaW5zdGFuY2Uo
eCwgbm9kZXMuQ29sbGVjdG9yKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgeWllbGQKKworCitjbGFzcyBMRlBsdWdpbkNvbGxTa2lwZmlsZXM6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxmcGx1Z2luOiAiTEZQbHVnaW4iKSAtPiBOb25lOgorICAg
ICAgICBzZWxmLmxmcGx1Z2luID0gbGZwbHVnaW4KKworICAgIEBweXRlc3QuaG9va2ltcGwKKyAg
ICBkZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoCisgICAgICAgIHNlbGYsIGNvbGxlY3Rv
cjogbm9kZXMuQ29sbGVjdG9yCisgICAgKSAtPiBPcHRpb25hbFtDb2xsZWN0UmVwb3J0XToKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShjb2xsZWN0b3IsIE1vZHVsZSk6CisgICAgICAgICAgICBpZiBQ
YXRoKHN0cihjb2xsZWN0b3IuZnNwYXRoKSkgbm90IGluIHNlbGYubGZwbHVnaW4uX2xhc3RfZmFp
bGVkX3BhdGhzOgorICAgICAgICAgICAgICAgIHNlbGYubGZwbHVnaW4uX3NraXBwZWRfZmlsZXMg
Kz0gMQorCisgICAgICAgICAgICAgICAgcmV0dXJuIENvbGxlY3RSZXBvcnQoCisgICAgICAgICAg
ICAgICAgICAgIGNvbGxlY3Rvci5ub2RlaWQsICJwYXNzZWQiLCBsb25ncmVwcj1Ob25lLCByZXN1
bHQ9W10KKyAgICAgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3Mg
TEZQbHVnaW46CisgICAgIiIiUGx1Z2luIHdoaWNoIGltcGxlbWVudHMgdGhlIC0tbGYgKHJ1biBs
YXN0LWZhaWxpbmcpIG9wdGlvbi4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6
IENvbmZpZykgLT4gTm9uZToKICAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKICAgICAgICAg
YWN0aXZlX2tleXMgPSAibGYiLCAiZmFpbGVkZmlyc3QiCiAgICAgICAgIHNlbGYuYWN0aXZlID0g
YW55KGNvbmZpZy5nZXRvcHRpb24oa2V5KSBmb3Iga2V5IGluIGFjdGl2ZV9rZXlzKQotICAgICAg
ICBzZWxmLmxhc3RmYWlsZWQgPSBjb25maWcuY2FjaGUuZ2V0KCJjYWNoZS9sYXN0ZmFpbGVkIiwg
e30pCi0gICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50ID0gTm9uZQotICAgICAg
ICBzZWxmLl9ub19mYWlsdXJlc19iZWhhdmlvciA9IHNlbGYuY29uZmlnLmdldG9wdGlvbigibGFz
dF9mYWlsZWRfbm9fZmFpbHVyZXMiKQorICAgICAgICBhc3NlcnQgY29uZmlnLmNhY2hlCisgICAg
ICAgIHNlbGYubGFzdGZhaWxlZCA9IGNvbmZpZy5jYWNoZS5nZXQoCisgICAgICAgICAgICAiY2Fj
aGUvbGFzdGZhaWxlZCIsIHt9CisgICAgICAgICkgICMgdHlwZTogRGljdFtzdHIsIGJvb2xdCisg
ICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50ID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtpbnRdCisgICAgICAgIHNlbGYuX3JlcG9ydF9zdGF0dXMgPSBOb25lICAjIHR5cGU6IE9w
dGlvbmFsW3N0cl0KKyAgICAgICAgc2VsZi5fc2tpcHBlZF9maWxlcyA9IDAgICMgY291bnQgc2tp
cHBlZCBmaWxlcyBkdXJpbmcgY29sbGVjdGlvbiBkdWUgdG8gLS1sZgorCisgICAgICAgIGlmIGNv
bmZpZy5nZXRvcHRpb24oImxmIik6CisgICAgICAgICAgICBzZWxmLl9sYXN0X2ZhaWxlZF9wYXRo
cyA9IHNlbGYuZ2V0X2xhc3RfZmFpbGVkX3BhdGhzKCkKKyAgICAgICAgICAgIGNvbmZpZy5wbHVn
aW5tYW5hZ2VyLnJlZ2lzdGVyKAorICAgICAgICAgICAgICAgIExGUGx1Z2luQ29sbFdyYXBwZXIo
c2VsZiksICJsZnBsdWdpbi1jb2xsd3JhcHBlciIKKyAgICAgICAgICAgICkKIAotICAgIGRlZiBw
eXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2goc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuYWN0
aXZlOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50Ogot
ICAgICAgICAgICAgICAgIG1vZGUgPSAicnVuIHt9IChubyByZWNvcmRlZCBmYWlsdXJlcykiLmZv
cm1hdCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm9fZmFpbHVyZXNfYmVoYXZpb3IKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5vdW4g
PSAiZmFpbHVyZSIgaWYgc2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQgPT0gMSBlbHNlICJm
YWlsdXJlcyIKLSAgICAgICAgICAgICAgICBzdWZmaXggPSAiIGZpcnN0IiBpZiBzZWxmLmNvbmZp
Zy5nZXRvcHRpb24oImZhaWxlZGZpcnN0IikgZWxzZSAiIgotICAgICAgICAgICAgICAgIG1vZGUg
PSAicmVydW4gcHJldmlvdXMge2NvdW50fSB7bm91bn17c3VmZml4fSIuZm9ybWF0KAotICAgICAg
ICAgICAgICAgICAgICBjb3VudD1zZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudCwgc3VmZml4
PXN1ZmZpeCwgbm91bj1ub3VuCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0dXJu
ICJydW4tbGFzdC1mYWlsdXJlOiAlcyIgJSBtb2RlCisgICAgZGVmIGdldF9sYXN0X2ZhaWxlZF9w
YXRocyhzZWxmKSAtPiBTZXRbUGF0aF06CisgICAgICAgICIiIlJldHVybiBhIHNldCB3aXRoIGFs
bCBQYXRocygpcyBvZiB0aGUgcHJldmlvdXNseSBmYWlsZWQgbm9kZWlkcy4iIiIKKyAgICAgICAg
cm9vdHBhdGggPSBzZWxmLmNvbmZpZy5yb290cGF0aAorICAgICAgICByZXN1bHQgPSB7cm9vdHBh
dGggLyBub2RlaWQuc3BsaXQoIjo6IilbMF0gZm9yIG5vZGVpZCBpbiBzZWxmLmxhc3RmYWlsZWR9
CisgICAgICAgIHJldHVybiB7eCBmb3IgeCBpbiByZXN1bHQgaWYgeC5leGlzdHMoKX0KIAotICAg
IGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQoc2VsZiwgcmVwb3J0KToKKyAgICBkZWYgcHl0
ZXN0X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoKHNlbGYpIC0+IE9wdGlvbmFsW3N0cl06CisgICAg
ICAgIGlmIHNlbGYuYWN0aXZlIGFuZCBzZWxmLmNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+
PSAwOgorICAgICAgICAgICAgcmV0dXJuICJydW4tbGFzdC1mYWlsdXJlOiAlcyIgJSBzZWxmLl9y
ZXBvcnRfc3RhdHVzCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcHl0ZXN0X3J1bnRl
c3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKICAgICAgICAg
aWYgKHJlcG9ydC53aGVuID09ICJjYWxsIiBhbmQgcmVwb3J0LnBhc3NlZCkgb3IgcmVwb3J0LnNr
aXBwZWQ6CiAgICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWQucG9wKHJlcG9ydC5ub2RlaWQsIE5v
bmUpCiAgICAgICAgIGVsaWYgcmVwb3J0LmZhaWxlZDoKICAgICAgICAgICAgIHNlbGYubGFzdGZh
aWxlZFtyZXBvcnQubm9kZWlkXSA9IFRydWUKIAotICAgIGRlZiBweXRlc3RfY29sbGVjdHJlcG9y
dChzZWxmLCByZXBvcnQpOgorICAgIGRlZiBweXRlc3RfY29sbGVjdHJlcG9ydChzZWxmLCByZXBv
cnQ6IENvbGxlY3RSZXBvcnQpIC0+IE5vbmU6CiAgICAgICAgIHBhc3NlZCA9IHJlcG9ydC5vdXRj
b21lIGluICgicGFzc2VkIiwgInNraXBwZWQiKQogICAgICAgICBpZiBwYXNzZWQ6CiAgICAgICAg
ICAgICBpZiByZXBvcnQubm9kZWlkIGluIHNlbGYubGFzdGZhaWxlZDoKQEAgLTE0NSw1MiArMjkw
LDg3IEBAIGNsYXNzIExGUGx1Z2luKG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBzZWxmLmxhc3RmYWlsZWRbcmVwb3J0Lm5vZGVpZF0gPSBUcnVlCiAKLSAgICBkZWYgcHl0ZXN0
X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2VsZiwgc2Vzc2lvbiwgY29uZmlnLCBpdGVtcyk6Ci0g
ICAgICAgIGlmIHNlbGYuYWN0aXZlOgotICAgICAgICAgICAgaWYgc2VsZi5sYXN0ZmFpbGVkOgot
ICAgICAgICAgICAgICAgIHByZXZpb3VzbHlfZmFpbGVkID0gW10KLSAgICAgICAgICAgICAgICBw
cmV2aW91c2x5X3Bhc3NlZCA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6
Ci0gICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0ubm9kZWlkIGluIHNlbGYubGFzdGZhaWxlZDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHlfZmFpbGVkLmFwcGVuZChpdGVtKQot
ICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlv
dXNseV9wYXNzZWQuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJldmlvdXNs
eV9mYWlsZWRfY291bnQgPSBsZW4ocHJldmlvdXNseV9mYWlsZWQpCi0gICAgICAgICAgICAgICAg
aWYgbm90IHByZXZpb3VzbHlfZmFpbGVkOgotICAgICAgICAgICAgICAgICAgICAjIHJ1bm5pbmcg
YSBzdWJzZXQgb2YgYWxsIHRlc3RzIHdpdGggcmVjb3JkZWQgZmFpbHVyZXMgb3V0c2lkZQotICAg
ICAgICAgICAgICAgICAgICAjIG9mIHRoZSBzZXQgb2YgdGVzdHMgY3VycmVudGx5IGV4ZWN1dGlu
ZwotICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3
cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRydWUpCisgICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21v
ZGlmeWl0ZW1zKAorICAgICAgICBzZWxmLCBjb25maWc6IENvbmZpZywgaXRlbXM6IExpc3Rbbm9k
ZXMuSXRlbV0KKyAgICApIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAg
eWllbGQKKworICAgICAgICBpZiBub3Qgc2VsZi5hY3RpdmU6CisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICBpZiBzZWxmLmxhc3RmYWlsZWQ6CisgICAgICAgICAgICBwcmV2aW91c2x5X2Zh
aWxlZCA9IFtdCisgICAgICAgICAgICBwcmV2aW91c2x5X3Bhc3NlZCA9IFtdCisgICAgICAgICAg
ICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgICAgICAgICBpZiBpdGVtLm5vZGVpZCBpbiBz
ZWxmLmxhc3RmYWlsZWQ6CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHlfZmFpbGVkLmFw
cGVuZChpdGVtKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBy
ZXZpb3VzbHlfcGFzc2VkLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgc2VsZi5fcHJldmlvdXNs
eV9mYWlsZWRfY291bnQgPSBsZW4ocHJldmlvdXNseV9mYWlsZWQpCisKKyAgICAgICAgICAgIGlm
IG5vdCBwcmV2aW91c2x5X2ZhaWxlZDoKKyAgICAgICAgICAgICAgICAjIFJ1bm5pbmcgYSBzdWJz
ZXQgb2YgYWxsIHRlc3RzIHdpdGggcmVjb3JkZWQgZmFpbHVyZXMKKyAgICAgICAgICAgICAgICAj
IG9ubHkgb3V0c2lkZSBvZiBpdC4KKyAgICAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfc3RhdHVz
ID0gIiVkIGtub3duIGZhaWx1cmVzIG5vdCBpbiBzZWxlY3RlZCB0ZXN0cyIgJSAoCisgICAgICAg
ICAgICAgICAgICAgIGxlbihzZWxmLmxhc3RmYWlsZWQpLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9u
KCJsZiIpOgogICAgICAgICAgICAgICAgICAgICBpdGVtc1s6XSA9IHByZXZpb3VzbHlfZmFpbGVk
CiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1z
PXByZXZpb3VzbHlfcGFzc2VkKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgZWxzZTogICMgLS1mYWlsZWRmaXJzdAogICAgICAgICAgICAgICAgICAgICBpdGVtc1s6XSA9
IHByZXZpb3VzbHlfZmFpbGVkICsgcHJldmlvdXNseV9wYXNzZWQKLSAgICAgICAgICAgIGVsaWYg
c2VsZi5fbm9fZmFpbHVyZXNfYmVoYXZpb3IgPT0gIm5vbmUiOgotICAgICAgICAgICAgICAgIGNv
bmZpZy5ob29rLnB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1zPWl0ZW1zKQorCisgICAgICAgICAgICAg
ICAgbm91biA9ICJmYWlsdXJlIiBpZiBzZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudCA9PSAx
IGVsc2UgImZhaWx1cmVzIgorICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIgZmlyc3QiIGlmIHNl
bGYuY29uZmlnLmdldG9wdGlvbigiZmFpbGVkZmlyc3QiKSBlbHNlICIiCisgICAgICAgICAgICAg
ICAgc2VsZi5fcmVwb3J0X3N0YXR1cyA9ICJyZXJ1biBwcmV2aW91cyB7Y291bnR9IHtub3VufXtz
dWZmaXh9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGNvdW50PXNlbGYuX3ByZXZpb3Vz
bHlfZmFpbGVkX2NvdW50LCBzdWZmaXg9c3VmZml4LCBub3VuPW5vdW4KKyAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgIGlmIHNlbGYuX3NraXBwZWRfZmlsZXMgPiAwOgorICAgICAgICAg
ICAgICAgIGZpbGVzX25vdW4gPSAiZmlsZSIgaWYgc2VsZi5fc2tpcHBlZF9maWxlcyA9PSAxIGVs
c2UgImZpbGVzIgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9zdGF0dXMgKz0gIiAoc2tp
cHBlZCB7ZmlsZXN9IHtmaWxlc19ub3VufSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ZmlsZXM9c2VsZi5fc2tpcHBlZF9maWxlcywgZmlsZXNfbm91bj1maWxlc19ub3VuCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcmVwb3J0X3N0YXR1
cyA9ICJubyBwcmV2aW91c2x5IGZhaWxlZCB0ZXN0cywgIgorICAgICAgICAgICAgaWYgc2VsZi5j
b25maWcuZ2V0b3B0aW9uKCJsYXN0X2ZhaWxlZF9ub19mYWlsdXJlcyIpID09ICJub25lIjoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfc3RhdHVzICs9ICJkZXNlbGVjdGluZyBhbGwgaXRl
bXMuIgorICAgICAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1z
PWl0ZW1zWzpdKQogICAgICAgICAgICAgICAgIGl0ZW1zWzpdID0gW10KKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVwb3J0X3N0YXR1cyArPSAibm90IGRlc2VsZWN0
aW5nIGl0ZW1zLiIKIAotICAgIGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZWxmLCBzZXNzaW9u
KToKKyAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2VsZiwgc2Vzc2lvbjogU2Vzc2lvbikg
LT4gTm9uZToKICAgICAgICAgY29uZmlnID0gc2VsZi5jb25maWcKLSAgICAgICAgaWYgY29uZmln
LmdldG9wdGlvbigiY2FjaGVzaG93Iikgb3IgaGFzYXR0cihjb25maWcsICJzbGF2ZWlucHV0Iik6
CisgICAgICAgIGlmIGNvbmZpZy5nZXRvcHRpb24oImNhY2hlc2hvdyIpIG9yIGhhc2F0dHIoY29u
ZmlnLCAid29ya2VyaW5wdXQiKToKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGFzc2Vy
dCBjb25maWcuY2FjaGUgaXMgbm90IE5vbmUKICAgICAgICAgc2F2ZWRfbGFzdGZhaWxlZCA9IGNv
bmZpZy5jYWNoZS5nZXQoImNhY2hlL2xhc3RmYWlsZWQiLCB7fSkKICAgICAgICAgaWYgc2F2ZWRf
bGFzdGZhaWxlZCAhPSBzZWxmLmxhc3RmYWlsZWQ6CiAgICAgICAgICAgICBjb25maWcuY2FjaGUu
c2V0KCJjYWNoZS9sYXN0ZmFpbGVkIiwgc2VsZi5sYXN0ZmFpbGVkKQogCiAKLWNsYXNzIE5GUGx1
Z2luKG9iamVjdCk6Ci0gICAgIiIiIFBsdWdpbiB3aGljaCBpbXBsZW1lbnRzIHRoZSAtLW5mIChy
dW4gbmV3LWZpcnN0KSBvcHRpb24gIiIiCitjbGFzcyBORlBsdWdpbjoKKyAgICAiIiJQbHVnaW4g
d2hpY2ggaW1wbGVtZW50cyB0aGUgLS1uZiAocnVuIG5ldy1maXJzdCkgb3B0aW9uLiIiIgogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwogICAg
ICAgICBzZWxmLmFjdGl2ZSA9IGNvbmZpZy5vcHRpb24ubmV3Zmlyc3QKLSAgICAgICAgc2VsZi5j
YWNoZWRfbm9kZWlkcyA9IGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL25vZGVpZHMiLCBbXSkKKyAg
ICAgICAgYXNzZXJ0IGNvbmZpZy5jYWNoZSBpcyBub3QgTm9uZQorICAgICAgICBzZWxmLmNhY2hl
ZF9ub2RlaWRzID0gc2V0KGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL25vZGVpZHMiLCBbXSkpCisK
KyAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRydWUpCisg
ICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKAorICAgICAgICBzZWxmLCBpdGVt
czogTGlzdFtub2Rlcy5JdGVtXQorICAgICkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVd
OgorICAgICAgICB5aWVsZAogCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1z
KHNlbGYsIHNlc3Npb24sIGNvbmZpZywgaXRlbXMpOgogICAgICAgICBpZiBzZWxmLmFjdGl2ZToK
LSAgICAgICAgICAgIG5ld19pdGVtcyA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgICAgIG90aGVy
X2l0ZW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICAgICAgbmV3X2l0ZW1zID0gb3JkZXJfcHJl
c2VydmluZ19kaWN0KCkgICMgdHlwZTogRGljdFtzdHIsIG5vZGVzLkl0ZW1dCisgICAgICAgICAg
ICBvdGhlcl9pdGVtcyA9IG9yZGVyX3ByZXNlcnZpbmdfZGljdCgpICAjIHR5cGU6IERpY3Rbc3Ry
LCBub2Rlcy5JdGVtXQogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAg
ICAgICAgaWYgaXRlbS5ub2RlaWQgbm90IGluIHNlbGYuY2FjaGVkX25vZGVpZHM6CiAgICAgICAg
ICAgICAgICAgICAgIG5ld19pdGVtc1tpdGVtLm5vZGVpZF0gPSBpdGVtCkBAIC0xOTgsMjQgKzM3
OCwyOCBAQCBjbGFzcyBORlBsdWdpbihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBvdGhl
cl9pdGVtc1tpdGVtLm5vZGVpZF0gPSBpdGVtCiAKICAgICAgICAgICAgIGl0ZW1zWzpdID0gc2Vs
Zi5fZ2V0X2luY3JlYXNpbmdfb3JkZXIoCi0gICAgICAgICAgICAgICAgc2l4Lml0ZXJ2YWx1ZXMo
bmV3X2l0ZW1zKQotICAgICAgICAgICAgKSArIHNlbGYuX2dldF9pbmNyZWFzaW5nX29yZGVyKAot
ICAgICAgICAgICAgICAgIHNpeC5pdGVydmFsdWVzKG90aGVyX2l0ZW1zKQotICAgICAgICAgICAg
KQotICAgICAgICBzZWxmLmNhY2hlZF9ub2RlaWRzID0gW3gubm9kZWlkIGZvciB4IGluIGl0ZW1z
IGlmIGlzaW5zdGFuY2UoeCwgcHl0ZXN0Lkl0ZW0pXQorICAgICAgICAgICAgICAgIG5ld19pdGVt
cy52YWx1ZXMoKQorICAgICAgICAgICAgKSArIHNlbGYuX2dldF9pbmNyZWFzaW5nX29yZGVyKG90
aGVyX2l0ZW1zLnZhbHVlcygpKQorICAgICAgICAgICAgc2VsZi5jYWNoZWRfbm9kZWlkcy51cGRh
dGUobmV3X2l0ZW1zKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jYWNoZWRfbm9k
ZWlkcy51cGRhdGUoaXRlbS5ub2RlaWQgZm9yIGl0ZW0gaW4gaXRlbXMpCiAKLSAgICBkZWYgX2dl
dF9pbmNyZWFzaW5nX29yZGVyKHNlbGYsIGl0ZW1zKToKKyAgICBkZWYgX2dldF9pbmNyZWFzaW5n
X29yZGVyKHNlbGYsIGl0ZW1zOiBJdGVyYWJsZVtub2Rlcy5JdGVtXSkgLT4gTGlzdFtub2Rlcy5J
dGVtXToKICAgICAgICAgcmV0dXJuIHNvcnRlZChpdGVtcywga2V5PWxhbWJkYSBpdGVtOiBpdGVt
LmZzcGF0aC5tdGltZSgpLCByZXZlcnNlPVRydWUpCiAKLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25m
aW5pc2goc2VsZiwgc2Vzc2lvbik6CisgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgIGNvbmZpZyA9IHNlbGYuY29uZmlnCi0gICAgICAgIGlmIGNvbmZp
Zy5nZXRvcHRpb24oImNhY2hlc2hvdyIpIG9yIGhhc2F0dHIoY29uZmlnLCAic2xhdmVpbnB1dCIp
OgorICAgICAgICBpZiBjb25maWcuZ2V0b3B0aW9uKCJjYWNoZXNob3ciKSBvciBoYXNhdHRyKGNv
bmZpZywgIndvcmtlcmlucHV0Iik6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBjb25m
aWcuY2FjaGUuc2V0KCJjYWNoZS9ub2RlaWRzIiwgc2VsZi5jYWNoZWRfbm9kZWlkcykKKyAgICAg
ICAgaWYgY29uZmlnLmdldG9wdGlvbigiY29sbGVjdG9ubHkiKToKKyAgICAgICAgICAgIHJldHVy
bgogCisgICAgICAgIGFzc2VydCBjb25maWcuY2FjaGUgaXMgbm90IE5vbmUKKyAgICAgICAgY29u
ZmlnLmNhY2hlLnNldCgiY2FjaGUvbm9kZWlkcyIsIHNvcnRlZChzZWxmLmNhY2hlZF9ub2RlaWRz
KSkKIAotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKKworZGVmIHB5dGVzdF9hZGRvcHRp
b24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAo
ImdlbmVyYWwiKQogICAgIGdyb3VwLmFkZG9wdGlvbigKICAgICAgICAgIi0tbGYiLApAQCAtMjMw
LDkgKzQxNCw5IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAgICItLWZh
aWxlZC1maXJzdCIsCiAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgIGRlc3Q9
ImZhaWxlZGZpcnN0IiwKLSAgICAgICAgaGVscD0icnVuIGFsbCB0ZXN0cyBidXQgcnVuIHRoZSBs
YXN0IGZhaWx1cmVzIGZpcnN0LiAgIgorICAgICAgICBoZWxwPSJydW4gYWxsIHRlc3RzLCBidXQg
cnVuIHRoZSBsYXN0IGZhaWx1cmVzIGZpcnN0LlxuIgogICAgICAgICAiVGhpcyBtYXkgcmUtb3Jk
ZXIgdGVzdHMgYW5kIHRodXMgbGVhZCB0byAiCi0gICAgICAgICJyZXBlYXRlZCBmaXh0dXJlIHNl
dHVwL3RlYXJkb3duIiwKKyAgICAgICAgInJlcGVhdGVkIGZpeHR1cmUgc2V0dXAvdGVhcmRvd24u
IiwKICAgICApCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAiLS1uZiIsCkBAIC0yNDQs
OSArNDI4LDEzIEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgKQogICAgIGdy
b3VwLmFkZG9wdGlvbigKICAgICAgICAgIi0tY2FjaGUtc2hvdyIsCi0gICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCisgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwKKyAgICAgICAgbmFyZ3M9Ij8i
LAogICAgICAgICBkZXN0PSJjYWNoZXNob3ciLAotICAgICAgICBoZWxwPSJzaG93IGNhY2hlIGNv
bnRlbnRzLCBkb24ndCBwZXJmb3JtIGNvbGxlY3Rpb24gb3IgdGVzdHMiLAorICAgICAgICBoZWxw
PSgKKyAgICAgICAgICAgICJzaG93IGNhY2hlIGNvbnRlbnRzLCBkb24ndCBwZXJmb3JtIGNvbGxl
Y3Rpb24gb3IgdGVzdHMuICIKKyAgICAgICAgICAgICJPcHRpb25hbCBhcmd1bWVudDogZ2xvYiAo
ZGVmYXVsdDogJyonKS4iCisgICAgICAgICksCiAgICAgKQogICAgIGdyb3VwLmFkZG9wdGlvbigK
ICAgICAgICAgIi0tY2FjaGUtY2xlYXIiLApAQCAtMjU0LDcgKzQ0MiwxMCBAQCBkZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBkZXN0PSJjYWNoZWNsZWFyIiwKICAgICAgICAg
aGVscD0icmVtb3ZlIGFsbCBjYWNoZSBjb250ZW50cyBhdCBzdGFydCBvZiB0ZXN0IHJ1bi4iLAog
ICAgICkKLSAgICBwYXJzZXIuYWRkaW5pKCJjYWNoZV9kaXIiLCBkZWZhdWx0PSIucHl0ZXN0X2Nh
Y2hlIiwgaGVscD0iY2FjaGUgZGlyZWN0b3J5IHBhdGguIikKKyAgICBjYWNoZV9kaXJfZGVmYXVs
dCA9ICIucHl0ZXN0X2NhY2hlIgorICAgIGlmICJUT1hfRU5WX0RJUiIgaW4gb3MuZW52aXJvbjoK
KyAgICAgICAgY2FjaGVfZGlyX2RlZmF1bHQgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsiVE9Y
X0VOVl9ESVIiXSwgY2FjaGVfZGlyX2RlZmF1bHQpCisgICAgcGFyc2VyLmFkZGluaSgiY2FjaGVf
ZGlyIiwgZGVmYXVsdD1jYWNoZV9kaXJfZGVmYXVsdCwgaGVscD0iY2FjaGUgZGlyZWN0b3J5IHBh
dGguIikKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWxmbmYiLAogICAgICAgICAi
LS1sYXN0LWZhaWxlZC1uby1mYWlsdXJlcyIsCkBAIC0yNjIsNzggKzQ1Myw5NCBAQCBkZWYgcHl0
ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBkZXN0PSJsYXN0X2ZhaWxlZF9ub19mYWls
dXJlcyIsCiAgICAgICAgIGNob2ljZXM9KCJhbGwiLCAibm9uZSIpLAogICAgICAgICBkZWZhdWx0
PSJhbGwiLAotICAgICAgICBoZWxwPSJjaGFuZ2UgdGhlIGJlaGF2aW9yIHdoZW4gbm8gdGVzdCBm
YWlsZWQgaW4gdGhlIGxhc3QgcnVuIG9yIG5vICIKLSAgICAgICAgImluZm9ybWF0aW9uIGFib3V0
IHRoZSBsYXN0IGZhaWx1cmVzIHdhcyBmb3VuZCBpbiB0aGUgY2FjaGUiLAorICAgICAgICBoZWxw
PSJ3aGljaCB0ZXN0cyB0byBydW4gd2l0aCBubyBwcmV2aW91c2x5IChrbm93bikgZmFpbHVyZXMu
IiwKICAgICApCiAKIAotZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKK2RlZiBweXRl
c3RfY21kbGluZV9tYWluKGNvbmZpZzogQ29uZmlnKSAtPiBPcHRpb25hbFtVbmlvbltpbnQsIEV4
aXRDb2RlXV06CiAgICAgaWYgY29uZmlnLm9wdGlvbi5jYWNoZXNob3c6CiAgICAgICAgIGZyb20g
X3B5dGVzdC5tYWluIGltcG9ydCB3cmFwX3Nlc3Npb24KIAogICAgICAgICByZXR1cm4gd3JhcF9z
ZXNzaW9uKGNvbmZpZywgY2FjaGVzaG93KQorICAgIHJldHVybiBOb25lCiAKIAogQHB5dGVzdC5o
b29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAg
ICBjb25maWcuY2FjaGUgPSBDYWNoZShjb25maWcpCitkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBjb25maWcuY2FjaGUgPSBDYWNoZS5mb3JfY29uZmln
KGNvbmZpZykKICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihMRlBsdWdpbihjb25m
aWcpLCAibGZwbHVnaW4iKQogICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKE5GUGx1
Z2luKGNvbmZpZyksICJuZnBsdWdpbiIpCiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYgY2FjaGUo
cmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgY2FjaGUgb2JqZWN0IHRoYXQgY2FuIHBl
cnNpc3Qgc3RhdGUgYmV0d2VlbiB0ZXN0aW5nIHNlc3Npb25zLgorZGVmIGNhY2hlKHJlcXVlc3Q6
IEZpeHR1cmVSZXF1ZXN0KSAtPiBDYWNoZToKKyAgICAiIiJSZXR1cm4gYSBjYWNoZSBvYmplY3Qg
dGhhdCBjYW4gcGVyc2lzdCBzdGF0ZSBiZXR3ZWVuIHRlc3Rpbmcgc2Vzc2lvbnMuCiAKICAgICBj
YWNoZS5nZXQoa2V5LCBkZWZhdWx0KQogICAgIGNhY2hlLnNldChrZXksIHZhbHVlKQogCi0gICAg
S2V5cyBtdXN0IGJlIGEgYGAvYGAgc2VwYXJhdGVkIHZhbHVlLCB3aGVyZSB0aGUgZmlyc3QgcGFy
dCBpcyB1c3VhbGx5IHRoZQorICAgIEtleXMgbXVzdCBiZSBgYC9gYCBzZXBhcmF0ZWQgc3RyaW5n
cywgd2hlcmUgdGhlIGZpcnN0IHBhcnQgaXMgdXN1YWxseSB0aGUKICAgICBuYW1lIG9mIHlvdXIg
cGx1Z2luIG9yIGFwcGxpY2F0aW9uIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBvdGhlciBjYWNoZSB1
c2Vycy4KIAogICAgIFZhbHVlcyBjYW4gYmUgYW55IG9iamVjdCBoYW5kbGVkIGJ5IHRoZSBqc29u
IHN0ZGxpYiBtb2R1bGUuCiAgICAgIiIiCisgICAgYXNzZXJ0IHJlcXVlc3QuY29uZmlnLmNhY2hl
IGlzIG5vdCBOb25lCiAgICAgcmV0dXJuIHJlcXVlc3QuY29uZmlnLmNhY2hlCiAKIAotZGVmIHB5
dGVzdF9yZXBvcnRfaGVhZGVyKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi52ZXJib3Nl
OgotICAgICAgICByZWxwYXRoID0gcHkucGF0aC5sb2NhbCgpLmJlc3RyZWxwYXRoKGNvbmZpZy5j
YWNoZS5fY2FjaGVkaXIpCi0gICAgICAgIHJldHVybiAiY2FjaGVkaXI6ICVzIiAlIHJlbHBhdGgK
K2RlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihjb25maWc6IENvbmZpZykgLT4gT3B0aW9uYWxbc3Ry
XToKKyAgICAiIiJEaXNwbGF5IGNhY2hlZGlyIHdpdGggLS1jYWNoZS1zaG93IGFuZCBpZiBub24t
ZGVmYXVsdC4iIiIKKyAgICBpZiBjb25maWcub3B0aW9uLnZlcmJvc2UgPiAwIG9yIGNvbmZpZy5n
ZXRpbmkoImNhY2hlX2RpciIpICE9ICIucHl0ZXN0X2NhY2hlIjoKKyAgICAgICAgYXNzZXJ0IGNv
bmZpZy5jYWNoZSBpcyBub3QgTm9uZQorICAgICAgICBjYWNoZWRpciA9IGNvbmZpZy5jYWNoZS5f
Y2FjaGVkaXIKKyAgICAgICAgIyBUT0RPOiBldmFsdWF0ZSBnZW5lcmF0aW5nIHVwd2FyZCByZWxh
dGl2ZSBwYXRocworICAgICAgICAjIHN0YXJ0aW5nIHdpdGggLi4sIC4uLy4uIGlmIHNlbnNpYmxl
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGlzcGxheXBhdGggPSBjYWNoZWRpci5yZWxh
dGl2ZV90byhjb25maWcucm9vdHBhdGgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAg
ICAgICAgICAgZGlzcGxheXBhdGggPSBjYWNoZWRpcgorICAgICAgICByZXR1cm4gImNhY2hlZGly
OiB7fSIuZm9ybWF0KGRpc3BsYXlwYXRoKQorICAgIHJldHVybiBOb25lCisKIAorZGVmIGNhY2hl
c2hvdyhjb25maWc6IENvbmZpZywgc2Vzc2lvbjogU2Vzc2lvbikgLT4gaW50OgorICAgIGZyb20g
cHByaW50IGltcG9ydCBwZm9ybWF0CiAKLWRlZiBjYWNoZXNob3coY29uZmlnLCBzZXNzaW9uKToK
LSAgICBmcm9tIHBwcmludCBpbXBvcnQgcHByaW50CisgICAgYXNzZXJ0IGNvbmZpZy5jYWNoZSBp
cyBub3QgTm9uZQogCi0gICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcigpCisgICAgdHcgPSBU
ZXJtaW5hbFdyaXRlcigpCiAgICAgdHcubGluZSgiY2FjaGVkaXI6ICIgKyBzdHIoY29uZmlnLmNh
Y2hlLl9jYWNoZWRpcikpCi0gICAgaWYgbm90IGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIuY2hlY2so
KToKKyAgICBpZiBub3QgY29uZmlnLmNhY2hlLl9jYWNoZWRpci5pc19kaXIoKToKICAgICAgICAg
dHcubGluZSgiY2FjaGUgaXMgZW1wdHkiKQogICAgICAgICByZXR1cm4gMAorCisgICAgZ2xvYiA9
IGNvbmZpZy5vcHRpb24uY2FjaGVzaG93WzBdCisgICAgaWYgZ2xvYiBpcyBOb25lOgorICAgICAg
ICBnbG9iID0gIioiCisKICAgICBkdW1teSA9IG9iamVjdCgpCiAgICAgYmFzZWRpciA9IGNvbmZp
Zy5jYWNoZS5fY2FjaGVkaXIKLSAgICB2ZGlyID0gYmFzZWRpci5qb2luKCJ2IikKLSAgICB0dy5z
ZXAoIi0iLCAiY2FjaGUgdmFsdWVzIikKLSAgICBmb3IgdmFscGF0aCBpbiBzb3J0ZWQodmRpci52
aXNpdChsYW1iZGEgeDogeC5pc2ZpbGUoKSkpOgotICAgICAgICBrZXkgPSB2YWxwYXRoLnJlbHRv
KHZkaXIpLnJlcGxhY2UodmFscGF0aC5zZXAsICIvIikKKyAgICB2ZGlyID0gYmFzZWRpciAvIENh
Y2hlLl9DQUNIRV9QUkVGSVhfVkFMVUVTCisgICAgdHcuc2VwKCItIiwgImNhY2hlIHZhbHVlcyBm
b3IgJXIiICUgZ2xvYikKKyAgICBmb3IgdmFscGF0aCBpbiBzb3J0ZWQoeCBmb3IgeCBpbiB2ZGly
LnJnbG9iKGdsb2IpIGlmIHguaXNfZmlsZSgpKToKKyAgICAgICAga2V5ID0gc3RyKHZhbHBhdGgu
cmVsYXRpdmVfdG8odmRpcikpCiAgICAgICAgIHZhbCA9IGNvbmZpZy5jYWNoZS5nZXQoa2V5LCBk
dW1teSkKICAgICAgICAgaWYgdmFsIGlzIGR1bW15OgotICAgICAgICAgICAgdHcubGluZSgiJXMg
Y29udGFpbnMgdW5yZWFkYWJsZSBjb250ZW50LCAiICJ3aWxsIGJlIGlnbm9yZWQiICUga2V5KQor
ICAgICAgICAgICAgdHcubGluZSgiJXMgY29udGFpbnMgdW5yZWFkYWJsZSBjb250ZW50LCB3aWxs
IGJlIGlnbm9yZWQiICUga2V5KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHcubGluZSgi
JXMgY29udGFpbnM6IiAlIGtleSkKLSAgICAgICAgICAgIHN0cmVhbSA9IHB5LmlvLlRleHRJTygp
Ci0gICAgICAgICAgICBwcHJpbnQodmFsLCBzdHJlYW09c3RyZWFtKQotICAgICAgICAgICAgZm9y
IGxpbmUgaW4gc3RyZWFtLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZm9y
IGxpbmUgaW4gcGZvcm1hdCh2YWwpLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICB0dy5s
aW5lKCIgICIgKyBsaW5lKQogCi0gICAgZGRpciA9IGJhc2VkaXIuam9pbigiZCIpCi0gICAgaWYg
ZGRpci5pc2RpcigpIGFuZCBkZGlyLmxpc3RkaXIoKToKLSAgICAgICAgdHcuc2VwKCItIiwgImNh
Y2hlIGRpcmVjdG9yaWVzIikKLSAgICAgICAgZm9yIHAgaW4gc29ydGVkKGJhc2VkaXIuam9pbigi
ZCIpLnZpc2l0KCkpOgorICAgIGRkaXIgPSBiYXNlZGlyIC8gQ2FjaGUuX0NBQ0hFX1BSRUZJWF9E
SVJTCisgICAgaWYgZGRpci5pc19kaXIoKToKKyAgICAgICAgY29udGVudHMgPSBzb3J0ZWQoZGRp
ci5yZ2xvYihnbG9iKSkKKyAgICAgICAgdHcuc2VwKCItIiwgImNhY2hlIGRpcmVjdG9yaWVzIGZv
ciAlciIgJSBnbG9iKQorICAgICAgICBmb3IgcCBpbiBjb250ZW50czoKICAgICAgICAgICAgICMg
aWYgcC5jaGVjayhkaXI9MSk6CiAgICAgICAgICAgICAjICAgIHByaW50KCIlcy8iICUgcC5yZWx0
byhiYXNlZGlyKSkKLSAgICAgICAgICAgIGlmIHAuaXNmaWxlKCk6Ci0gICAgICAgICAgICAgICAg
a2V5ID0gcC5yZWx0byhiYXNlZGlyKQotICAgICAgICAgICAgICAgIHR3LmxpbmUoIiVzIGlzIGEg
ZmlsZSBvZiBsZW5ndGggJWQiICUgKGtleSwgcC5zaXplKCkpKQorICAgICAgICAgICAgaWYgcC5p
c19maWxlKCk6CisgICAgICAgICAgICAgICAga2V5ID0gc3RyKHAucmVsYXRpdmVfdG8oYmFzZWRp
cikpCisgICAgICAgICAgICAgICAgdHcubGluZSgie30gaXMgYSBmaWxlIG9mIGxlbmd0aCB7OmR9
Ii5mb3JtYXQoa2V5LCBwLnN0YXQoKS5zdF9zaXplKSkKICAgICByZXR1cm4gMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY2FwdHVyZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L2NhcHR1cmUucHkKaW5kZXggN2E1N2FkYjc1MmE3Li4yZDJiMzkyYWJhOGYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NhcHR1cmUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvY2FwdHVyZS5weQpAQCAtMSwzNCArMSw0NSBAQAotIiIiCi1wZXItdGVz
dCBzdGRvdXQvc3RkZXJyIGNhcHR1cmluZyBtZWNoYW5pc20uCi0KLSIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1p
bXBvcnQgY29sbGVjdGlvbnMKKyIiIlBlci10ZXN0IHN0ZG91dC9zdGRlcnIgY2FwdHVyaW5nIG1l
Y2hhbmlzbS4iIiIKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKK2lt
cG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGlv
IGltcG9ydCBVbnN1cHBvcnRlZE9wZXJhdGlvbgogZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9y
YXJ5RmlsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueVN0
cgorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVy
aWMKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVGV4dElPCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUK
K2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogCi1pbXBvcnQgc2l4CiBpbXBvcnQgcHl0ZXN0Ci1m
cm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBDYXB0dXJlSU8KK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcuYXJn
cGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IFN1YlJl
cXVlc3QKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9yCitmcm9tIF9weXRlc3Qu
bm9kZXMgaW1wb3J0IEl0ZW0KIAoraWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZ19l
eHRlbnNpb25zIGltcG9ydCBMaXRlcmFsCiAKLXBhdGNoc3lzZGljdCA9IHswOiAic3RkaW4iLCAx
OiAic3Rkb3V0IiwgMjogInN0ZGVyciJ9CisgICAgX0NhcHR1cmVNZXRob2QgPSBMaXRlcmFsWyJm
ZCIsICJzeXMiLCAibm8iLCAidGVlLXN5cyJdCiAKIAotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFy
c2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAg
IGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKICAgICBncm91cC5fYWRkb3B0aW9u
KAogICAgICAgICAiLS1jYXB0dXJlIiwKICAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAg
IGRlZmF1bHQ9ImZkIiBpZiBoYXNhdHRyKG9zLCAiZHVwIikgZWxzZSAic3lzIiwKKyAgICAgICAg
ZGVmYXVsdD0iZmQiLAogICAgICAgICBtZXRhdmFyPSJtZXRob2QiLAotICAgICAgICBjaG9pY2Vz
PVsiZmQiLCAic3lzIiwgIm5vIl0sCi0gICAgICAgIGhlbHA9InBlci10ZXN0IGNhcHR1cmluZyBt
ZXRob2Q6IG9uZSBvZiBmZHxzeXN8bm8uIiwKKyAgICAgICAgY2hvaWNlcz1bImZkIiwgInN5cyIs
ICJubyIsICJ0ZWUtc3lzIl0sCisgICAgICAgIGhlbHA9InBlci10ZXN0IGNhcHR1cmluZyBtZXRo
b2Q6IG9uZSBvZiBmZHxzeXN8bm98dGVlLXN5cy4iLAogICAgICkKICAgICBncm91cC5fYWRkb3B0
aW9uKAogICAgICAgICAiLXMiLApAQCAtMzksOCArNTAsMTA3IEBAIGRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6CiAgICAgKQogCiAKK2RlZiBfY29sb3JhbWFfd29ya2Fyb3VuZCgpIC0+IE5v
bmU6CisgICAgIiIiRW5zdXJlIGNvbG9yYW1hIGlzIGltcG9ydGVkIHNvIHRoYXQgaXQgYXR0YWNo
ZXMgdG8gdGhlIGNvcnJlY3Qgc3RkaW8KKyAgICBoYW5kbGVzIG9uIFdpbmRvd3MuCisKKyAgICBj
b2xvcmFtYSB1c2VzIHRoZSB0ZXJtaW5hbCBvbiBpbXBvcnQgdGltZS4gU28gaWYgc29tZXRoaW5n
IGRvZXMgdGhlCisgICAgZmlyc3QgaW1wb3J0IG9mIGNvbG9yYW1hIHdoaWxlIEkvTyBjYXB0dXJl
IGlzIGFjdGl2ZSwgY29sb3JhbWEgd2lsbAorICAgIGZhaWwgaW4gdmFyaW91cyB3YXlzLgorICAg
ICIiIgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4zMiIpOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICBpbXBvcnQgY29sb3JhbWEgICMgbm9xYTogRjQwMQorICAgICAgICBl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKworZGVmIF9yZWFkbGluZV93
b3JrYXJvdW5kKCkgLT4gTm9uZToKKyAgICAiIiJFbnN1cmUgcmVhZGxpbmUgaXMgaW1wb3J0ZWQg
c28gdGhhdCBpdCBhdHRhY2hlcyB0byB0aGUgY29ycmVjdCBzdGRpbworICAgIGhhbmRsZXMgb24g
V2luZG93cy4KKworICAgIFBkYiB1c2VzIHJlYWRsaW5lIHN1cHBvcnQgd2hlcmUgYXZhaWxhYmxl
LS13aGVuIG5vdCBydW5uaW5nIGZyb20gdGhlIFB5dGhvbgorICAgIHByb21wdCwgdGhlIHJlYWRs
aW5lIG1vZHVsZSBpcyBub3QgaW1wb3J0ZWQgdW50aWwgcnVubmluZyB0aGUgcGRiIFJFUEwuICBJ
ZgorICAgIHJ1bm5pbmcgcHl0ZXN0IHdpdGggdGhlIC0tcGRiIG9wdGlvbiB0aGlzIG1lYW5zIHRo
ZSByZWFkbGluZSBtb2R1bGUgaXMgbm90CisgICAgaW1wb3J0ZWQgdW50aWwgYWZ0ZXIgSS9PIGNh
cHR1cmUgaGFzIGJlZW4gc3RhcnRlZC4KKworICAgIFRoaXMgaXMgYSBwcm9ibGVtIGZvciBweXJl
YWRsaW5lLCB3aGljaCBpcyBvZnRlbiB1c2VkIHRvIGltcGxlbWVudCByZWFkbGluZQorICAgIHN1
cHBvcnQgb24gV2luZG93cywgYXMgaXQgZG9lcyBub3QgYXR0YWNoIHRvIHRoZSBjb3JyZWN0IGhh
bmRsZXMgZm9yIHN0ZG91dAorICAgIGFuZC9vciBzdGRpbiBpZiB0aGV5IGhhdmUgYmVlbiByZWRp
cmVjdGVkIGJ5IHRoZSBGRENhcHR1cmUgbWVjaGFuaXNtLiAgVGhpcworICAgIHdvcmthcm91bmQg
ZW5zdXJlcyB0aGF0IHJlYWRsaW5lIGlzIGltcG9ydGVkIGJlZm9yZSBJL08gY2FwdHVyZSBpcyBz
ZXR1cCBzbworICAgIHRoYXQgaXQgY2FuIGF0dGFjaCB0byB0aGUgYWN0dWFsIHN0ZGluL291dCBm
b3IgdGhlIGNvbnNvbGUuCisKKyAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L3B1bGwvMTI4MS4KKyAgICAiIiIKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgid2luMzIiKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHJlYWRsaW5lICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFz
cworCisKK2RlZiBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91bmQoc3RyZWFtOiBUZXh0
SU8pIC0+IE5vbmU6CisgICAgIiIiV29ya2Fyb3VuZCBmb3IgV2luZG93cyBVbmljb2RlIGNvbnNv
bGUgaGFuZGxpbmcgb24gUHl0aG9uPj0zLjYuCisKKyAgICBQeXRob24gMy42IGltcGxlbWVudGVk
IFVuaWNvZGUgY29uc29sZSBoYW5kbGluZyBmb3IgV2luZG93cy4gVGhpcyB3b3JrcworICAgIGJ5
IHJlYWRpbmcvd3JpdGluZyB0byB0aGUgcmF3IGNvbnNvbGUgaGFuZGxlIHVzaW5nCisgICAgYGB7
UmVhZCxXcml0ZX1Db25zb2xlV2BgLgorCisgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBhcmUg
Z29pbmcgdG8gYGBkdXAyYGAgb3ZlciB0aGUgc3RkaW8gZmlsZQorICAgIGRlc2NyaXB0b3JzIHdo
ZW4gZG9pbmcgYGBGRENhcHR1cmVgYCBhbmQgdGhpcyB3aWxsIGBgQ2xvc2VIYW5kbGVgYCB0aGUK
KyAgICBoYW5kbGVzIHVzZWQgYnkgUHl0aG9uIHRvIHdyaXRlIHRvIHRoZSBjb25zb2xlLiBUaG91
Z2ggdGhlcmUgaXMgc3RpbGwgc29tZQorICAgIHdlaXJkbmVzcyBhbmQgdGhlIGNvbnNvbGUgaGFu
ZGxlIHNlZW1zIHRvIG9ubHkgYmUgY2xvc2VkIHJhbmRvbWx5IGFuZCBub3QKKyAgICBvbiB0aGUg
Zmlyc3QgY2FsbCB0byBgYENsb3NlSGFuZGxlYGAsIG9yIG1heWJlIGl0IGdldHMgcmVvcGVuZWQg
d2l0aCB0aGUKKyAgICBzYW1lIGhhbmRsZSB2YWx1ZSB3aGVuIHdlIHN1c3BlbmQgY2FwdHVyaW5n
LgorCisgICAgVGhlIHdvcmthcm91bmQgaW4gdGhpcyBjYXNlIHdpbGwgcmVvcGVuIHN0ZGlvIHdp
dGggYSBkaWZmZXJlbnQgZmQgd2hpY2gKKyAgICBhbHNvIG1lYW5zIGEgZGlmZmVyZW50IGhhbmRs
ZSBieSByZXBsaWNhdGluZyB0aGUgbG9naWMgaW4KKyAgICAiUHlfbGlmZWN5Y2xlLmM6aW5pdHN0
ZGlvL2NyZWF0ZV9zdGRpbyIuCisKKyAgICA6cGFyYW0gc3RyZWFtOgorICAgICAgICBJbiBwcmFj
dGljZSBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRlcnJgYCwgYnV0IGdpdmVuCisgICAgICAg
IGhlcmUgYXMgcGFyYW1ldGVyIGZvciB1bml0dGVzdGluZyBwdXJwb3Nlcy4KKworICAgIFNlZSBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weS9pc3N1ZXMvMTAzLgorICAgICIiIgorICAg
IGlmICgKKyAgICAgICAgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4zMiIpCisgICAg
ICAgIG9yIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDYpCisgICAgICAgIG9yIGhhc2F0dHIo
c3lzLCAicHlweV92ZXJzaW9uX2luZm8iKQorICAgICk6CisgICAgICAgIHJldHVybgorCisgICAg
IyBCYWlsIG91dCBpZiBgYHN0cmVhbWBgIGRvZXNuJ3Qgc2VlbSBsaWtlIGEgcHJvcGVyIGBgaW9g
YCBzdHJlYW0gKCMyNjY2KS4KKyAgICBpZiBub3QgaGFzYXR0cihzdHJlYW0sICJidWZmZXIiKTog
ICMgdHlwZTogaWdub3JlW3VucmVhY2hhYmxlXQorICAgICAgICByZXR1cm4KKworICAgIGJ1ZmZl
cmVkID0gaGFzYXR0cihzdHJlYW0uYnVmZmVyLCAicmF3IikKKyAgICByYXdfc3Rkb3V0ID0gc3Ry
ZWFtLmJ1ZmZlci5yYXcgaWYgYnVmZmVyZWQgZWxzZSBzdHJlYW0uYnVmZmVyICAjIHR5cGU6IGln
bm9yZVthdHRyLWRlZmluZWRdCisKKyAgICBpZiBub3QgaXNpbnN0YW5jZShyYXdfc3Rkb3V0LCBp
by5fV2luZG93c0NvbnNvbGVJTyk6ICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAg
ICAgIHJldHVybgorCisgICAgZGVmIF9yZW9wZW5fc3RkaW8oZiwgbW9kZSk6CisgICAgICAgIGlm
IG5vdCBidWZmZXJlZCBhbmQgbW9kZVswXSA9PSAidyI6CisgICAgICAgICAgICBidWZmZXJpbmcg
PSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWZmZXJpbmcgPSAtMQorCisgICAgICAg
IHJldHVybiBpby5UZXh0SU9XcmFwcGVyKAorICAgICAgICAgICAgb3Blbihvcy5kdXAoZi5maWxl
bm8oKSksIG1vZGUsIGJ1ZmZlcmluZyksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKyAgICAg
ICAgICAgIGYuZW5jb2RpbmcsCisgICAgICAgICAgICBmLmVycm9ycywKKyAgICAgICAgICAgIGYu
bmV3bGluZXMsCisgICAgICAgICAgICBmLmxpbmVfYnVmZmVyaW5nLAorICAgICAgICApCisKKyAg
ICBzeXMuc3RkaW4gPSBfcmVvcGVuX3N0ZGlvKHN5cy5zdGRpbiwgInJiIikKKyAgICBzeXMuc3Rk
b3V0ID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3Rkb3V0LCAid2IiKQorICAgIHN5cy5zdGRlcnIgPSBf
cmVvcGVuX3N0ZGlvKHN5cy5zdGRlcnIsICJ3YiIpCisKKwogQHB5dGVzdC5ob29raW1wbChob29r
d3JhcHBlcj1UcnVlKQotZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKGVhcmx5X2Nv
bmZpZywgcGFyc2VyLCBhcmdzKToKK2RlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhl
YXJseV9jb25maWc6IENvbmZpZyk6CiAgICAgbnMgPSBlYXJseV9jb25maWcua25vd25fYXJnc19u
YW1lc3BhY2UKICAgICBpZiBucy5jYXB0dXJlID09ICJmZCI6CiAgICAgICAgIF9weTM2X3dpbmRv
d3Njb25zb2xlaW9fd29ya2Fyb3VuZChzeXMuc3Rkb3V0KQpAQCAtNTAsMzQxICsxNjAsNDEzIEBA
IGRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhlYXJseV9jb25maWcsIHBhcnNlciwg
YXJncyk6CiAgICAgY2FwbWFuID0gQ2FwdHVyZU1hbmFnZXIobnMuY2FwdHVyZSkKICAgICBwbHVn
aW5tYW5hZ2VyLnJlZ2lzdGVyKGNhcG1hbiwgImNhcHR1cmVtYW5hZ2VyIikKIAotICAgICMgbWFr
ZSBzdXJlIHRoYXQgY2FwdHVyZW1hbmFnZXIgaXMgcHJvcGVybHkgcmVzZXQgYXQgZmluYWwgc2h1
dGRvd24KKyAgICAjIE1ha2Ugc3VyZSB0aGF0IGNhcHR1cmVtYW5hZ2VyIGlzIHByb3Blcmx5IHJl
c2V0IGF0IGZpbmFsIHNodXRkb3duLgogICAgIGVhcmx5X2NvbmZpZy5hZGRfY2xlYW51cChjYXBt
YW4uc3RvcF9nbG9iYWxfY2FwdHVyaW5nKQogCi0gICAgIyBtYWtlIHN1cmUgbG9nZ2luZyBkb2Vz
IG5vdCByYWlzZSBleGNlcHRpb25zIGF0IHRoZSBlbmQKLSAgICBkZWYgc2lsZW5jZV9sb2dnaW5n
X2F0X3NodXRkb3duKCk6Ci0gICAgICAgIGlmICJsb2dnaW5nIiBpbiBzeXMubW9kdWxlczoKLSAg
ICAgICAgICAgIHN5cy5tb2R1bGVzWyJsb2dnaW5nIl0ucmFpc2VFeGNlcHRpb25zID0gRmFsc2UK
LQotICAgIGVhcmx5X2NvbmZpZy5hZGRfY2xlYW51cChzaWxlbmNlX2xvZ2dpbmdfYXRfc2h1dGRv
d24pCi0KLSAgICAjIGZpbmFsbHkgdHJpZ2dlciBjb25mdGVzdCBsb2FkaW5nIGJ1dCB3aGlsZSBj
YXB0dXJpbmcgKGlzc3VlOTMpCisgICAgIyBGaW5hbGx5IHRyaWdnZXIgY29uZnRlc3QgbG9hZGlu
ZyBidXQgd2hpbGUgY2FwdHVyaW5nIChpc3N1ZSAjOTMpLgogICAgIGNhcG1hbi5zdGFydF9nbG9i
YWxfY2FwdHVyaW5nKCkKICAgICBvdXRjb21lID0geWllbGQKLSAgICBvdXQsIGVyciA9IGNhcG1h
bi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKKyAgICBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2Fw
dHVyZSgpCiAgICAgaWYgb3V0Y29tZS5leGNpbmZvIGlzIG5vdCBOb25lOgorICAgICAgICBvdXQs
IGVyciA9IGNhcG1hbi5yZWFkX2dsb2JhbF9jYXB0dXJlKCkKICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZShvdXQpCiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQogCiAKLWNsYXNzIENhcHR1
cmVNYW5hZ2VyKG9iamVjdCk6Ci0gICAgIiIiCi0gICAgQ2FwdHVyZSBwbHVnaW4sIG1hbmFnZXMg
dGhhdCB0aGUgYXBwcm9wcmlhdGUgY2FwdHVyZSBtZXRob2QgaXMgZW5hYmxlZC9kaXNhYmxlZCBk
dXJpbmcgY29sbGVjdGlvbiBhbmQgZWFjaAotICAgIHRlc3QgcGhhc2UgKHNldHVwLCBjYWxsLCB0
ZWFyZG93bikuIEFmdGVyIGVhY2ggb2YgdGhvc2UgcG9pbnRzLCB0aGUgY2FwdHVyZWQgb3V0cHV0
IGlzIG9idGFpbmVkIGFuZAotICAgIGF0dGFjaGVkIHRvIHRoZSBjb2xsZWN0aW9uL3J1bnRlc3Qg
cmVwb3J0LgorIyBJTyBIZWxwZXJzLgogCi0gICAgVGhlcmUgYXJlIHR3byBsZXZlbHMgb2YgY2Fw
dHVyZToKLSAgICAqIGdsb2JhbDogd2hpY2ggaXMgZW5hYmxlZCBieSBkZWZhdWx0IGFuZCBjYW4g
YmUgc3VwcHJlc3NlZCBieSB0aGUgYGAtc2BgIG9wdGlvbi4gVGhpcyBpcyBhbHdheXMgZW5hYmxl
ZC9kaXNhYmxlZAotICAgICAgZHVyaW5nIGNvbGxlY3Rpb24gYW5kIGVhY2ggdGVzdCBwaGFzZS4K
LSAgICAqIGZpeHR1cmU6IHdoZW4gYSB0ZXN0IGZ1bmN0aW9uIG9yIG9uZSBvZiBpdHMgZml4dHVy
ZSBkZXBlbmQgb24gdGhlIGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1cmVzLiBJbiB0aGlz
Ci0gICAgICBjYXNlIHNwZWNpYWwgaGFuZGxpbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgZml4
dHVyZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGdsb2JhbCBjYXB0dXJlLgotICAgICIiIgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZCk6Ci0gICAgICAgIHNlbGYuX21ldGhvZCA9
IG1ldGhvZAotICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gTm9uZQotCi0gICAgZGVm
IF9nZXRjYXB0dXJlKHNlbGYsIG1ldGhvZCk6Ci0gICAgICAgIGlmIG1ldGhvZCA9PSAiZmQiOgot
ICAgICAgICAgICAgcmV0dXJuIE11bHRpQ2FwdHVyZShvdXQ9VHJ1ZSwgZXJyPVRydWUsIENhcHR1
cmU9RkRDYXB0dXJlKQotICAgICAgICBlbGlmIG1ldGhvZCA9PSAic3lzIjoKLSAgICAgICAgICAg
IHJldHVybiBNdWx0aUNhcHR1cmUob3V0PVRydWUsIGVycj1UcnVlLCBDYXB0dXJlPVN5c0NhcHR1
cmUpCi0gICAgICAgIGVsaWYgbWV0aG9kID09ICJubyI6Ci0gICAgICAgICAgICByZXR1cm4gTXVs
dGlDYXB0dXJlKG91dD1GYWxzZSwgZXJyPUZhbHNlLCBpbl89RmFsc2UpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGNhcHR1cmluZyBtZXRob2Q6
ICVyIiAlIG1ldGhvZCkKK2NsYXNzIEVuY29kZWRGaWxlKGlvLlRleHRJT1dyYXBwZXIpOgorICAg
IF9fc2xvdHNfXyA9ICgpCiAKLSAgICBkZWYgc3RhcnRfZ2xvYmFsX2NhcHR1cmluZyhzZWxmKToK
LSAgICAgICAgYXNzZXJ0IHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcgaXMgTm9uZQotICAgICAgICBz
ZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gc2VsZi5fZ2V0Y2FwdHVyZShzZWxmLl9tZXRob2QpCi0g
ICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcuc3RhcnRfY2FwdHVyaW5nKCkKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgbmFtZShzZWxmKSAtPiBzdHI6CisgICAgICAgICMgRW5zdXJlIHRoYXQg
ZmlsZS5uYW1lIGlzIGEgc3RyaW5nLiBXb3JrYXJvdW5kIGZvciBhIFB5dGhvbiBidWcKKyAgICAg
ICAgIyBmaXhlZCBpbiA+PTMuNy40OiBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM2MDE1
CisgICAgICAgIHJldHVybiByZXByKHNlbGYuYnVmZmVyKQogCi0gICAgZGVmIHN0b3BfZ2xvYmFs
X2NhcHR1cmluZyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcucG9wX291dGVycl90
b19vcmlnKCkKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcuc3RvcF9jYXB0dXJp
bmcoKQotICAgICAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyA9IE5vbmUKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgbW9kZShzZWxmKSAtPiBzdHI6CisgICAgICAgICMgVGV4dElPV3JhcHBl
ciBkb2Vzbid0IGV4cG9zZSBhIG1vZGUsIGJ1dCBhdCBsZWFzdCBzb21lIG9mIG91cgorICAgICAg
ICAjIHRlc3RzIGNoZWNrIGl0LgorICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIubW9kZS5yZXBs
YWNlKCJiIiwgIiIpCiAKLSAgICBkZWYgcmVzdW1lX2dsb2JhbF9jYXB0dXJlKHNlbGYpOgotICAg
ICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnJlc3VtZV9jYXB0dXJpbmcoKQotCi0gICAgZGVm
IHN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoc2VsZiwgaXRlbT1Ob25lLCBpbl89RmFsc2UpOgotICAg
ICAgICBpZiBpdGVtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5kZWFjdGl2YXRlX2Zp
eHR1cmUoaXRlbSkKLSAgICAgICAgY2FwID0gZ2V0YXR0cihzZWxmLCAiX2dsb2JhbF9jYXB0dXJp
bmciLCBOb25lKQotICAgICAgICBpZiBjYXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgb3V0ZXJyID0gY2FwLnJlYWRvdXRlcnIoKQotICAgICAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgICAgICBjYXAuc3VzcGVuZF9jYXB0dXJpbmcoaW5fPWluXykK
LSAgICAgICAgICAgIHJldHVybiBvdXRlcnIKLQotICAgIGRlZiBhY3RpdmF0ZV9maXh0dXJlKHNl
bGYsIGl0ZW0pOgotICAgICAgICAiIiJJZiB0aGUgY3VycmVudCBpdGVtIGlzIHVzaW5nIGBgY2Fw
c3lzYGAgb3IgYGBjYXBmZGBgLCBhY3RpdmF0ZSB0aGVtIHNvIHRoZXkgdGFrZSBwcmVjZWRlbmNl
IG92ZXIKLSAgICAgICAgdGhlIGdsb2JhbCBjYXB0dXJlLgotICAgICAgICAiIiIKLSAgICAgICAg
Zml4dHVyZSA9IGdldGF0dHIoaXRlbSwgIl9jYXB0dXJlX2ZpeHR1cmUiLCBOb25lKQotICAgICAg
ICBpZiBmaXh0dXJlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZml4dHVyZS5fc3RhcnQoKQog
Ci0gICAgZGVmIGRlYWN0aXZhdGVfZml4dHVyZShzZWxmLCBpdGVtKToKLSAgICAgICAgIiIiRGVh
Y3RpdmF0ZXMgdGhlIGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1cmUgb2YgdGhpcyBpdGVt
LCBpZiBhbnkuIiIiCi0gICAgICAgIGZpeHR1cmUgPSBnZXRhdHRyKGl0ZW0sICJfY2FwdHVyZV9m
aXh0dXJlIiwgTm9uZSkKLSAgICAgICAgaWYgZml4dHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGZpeHR1cmUuY2xvc2UoKQorY2xhc3MgQ2FwdHVyZUlPKGlvLlRleHRJT1dyYXBwZXIpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9faW5pdF9f
KGlvLkJ5dGVzSU8oKSwgZW5jb2Rpbmc9IlVURi04IiwgbmV3bGluZT0iIiwgd3JpdGVfdGhyb3Vn
aD1UcnVlKQogCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRl
ZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChzZWxmLCBjb2xsZWN0b3IpOgotICAgICAgICBp
ZiBpc2luc3RhbmNlKGNvbGxlY3RvciwgcHl0ZXN0LkZpbGUpOgotICAgICAgICAgICAgc2VsZi5y
ZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAgICAgICAgb3V0Y29tZSA9IHlpZWxkCi0gICAg
ICAgICAgICBvdXQsIGVyciA9IHNlbGYuc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAg
ICAgICByZXAgPSBvdXRjb21lLmdldF9yZXN1bHQoKQotICAgICAgICAgICAgaWYgb3V0OgotICAg
ICAgICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCBzdGRvdXQiLCBvdXQp
KQotICAgICAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBl
bmQoKCJDYXB0dXJlZCBzdGRlcnIiLCBlcnIpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
eWllbGQKKyAgICBkZWYgZ2V0dmFsdWUoc2VsZikgLT4gc3RyOgorICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShzZWxmLmJ1ZmZlciwgaW8uQnl0ZXNJTykKKyAgICAgICAgcmV0dXJuIHNlbGYuYnVm
ZmVyLmdldHZhbHVlKCkuZGVjb2RlKCJVVEYtOCIpCiAKLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhv
b2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKHNlbGYsIGl0ZW0p
OgotICAgICAgICBzZWxmLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAgICMgbm8gbmVl
ZCB0byBhY3RpdmF0ZSBhIGNhcHR1cmUgZml4dHVyZSBiZWNhdXNlIHRoZXkgYWN0aXZhdGUgdGhl
bXNlbHZlcyBkdXJpbmcgY3JlYXRpb247IHRoaXMKLSAgICAgICAgIyBvbmx5IG1ha2VzIHNlbnNl
IHdoZW4gYSBmaXh0dXJlIHVzZXMgYSBjYXB0dXJlIGZpeHR1cmUsIG90aGVyd2lzZSB0aGUgY2Fw
dHVyZSBmaXh0dXJlIHdpbGwKLSAgICAgICAgIyBiZSBhY3RpdmF0ZWQgZHVyaW5nIHB5dGVzdF9y
dW50ZXN0X2NhbGwKLSAgICAgICAgeWllbGQKLSAgICAgICAgc2VsZi5zdXNwZW5kX2NhcHR1cmVf
aXRlbShpdGVtLCAic2V0dXAiKQogCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1U
cnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKHNlbGYsIGl0ZW0pOgotICAgICAgICBz
ZWxmLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAgICMgaXQgaXMgaW1wb3J0YW50IHRv
IGFjdGl2YXRlIHRoaXMgZml4dHVyZSBkdXJpbmcgdGhlIGNhbGwgcGhhc2Ugc28gaXQgb3Zlcndy
aXRlcyB0aGUgImdsb2JhbCIKLSAgICAgICAgIyBjYXB0dXJlCi0gICAgICAgIHNlbGYuYWN0aXZh
dGVfZml4dHVyZShpdGVtKQotICAgICAgICB5aWVsZAotICAgICAgICBzZWxmLnN1c3BlbmRfY2Fw
dHVyZV9pdGVtKGl0ZW0sICJjYWxsIikKK2NsYXNzIFRlZUNhcHR1cmVJTyhDYXB0dXJlSU8pOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdGhlcjogVGV4dElPKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLl9vdGhlciA9IG90aGVyCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogCi0gICAgQHB5
dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdF90
ZWFyZG93bihzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUo
KQotICAgICAgICBzZWxmLmFjdGl2YXRlX2ZpeHR1cmUoaXRlbSkKLSAgICAgICAgeWllbGQKLSAg
ICAgICAgc2VsZi5zdXNwZW5kX2NhcHR1cmVfaXRlbShpdGVtLCAidGVhcmRvd24iKQorICAgIGRl
ZiB3cml0ZShzZWxmLCBzOiBzdHIpIC0+IGludDoKKyAgICAgICAgc3VwZXIoKS53cml0ZShzKQor
ICAgICAgICByZXR1cm4gc2VsZi5fb3RoZXIud3JpdGUocykKIAotICAgIEBweXRlc3QuaG9va2lt
cGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdChzZWxm
LCBleGNpbmZvKToKLSAgICAgICAgc2VsZi5zdG9wX2dsb2JhbF9jYXB0dXJpbmcoKQogCi0gICAg
QHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxl
cnJvcihzZWxmLCBleGNpbmZvKToKLSAgICAgICAgc2VsZi5zdG9wX2dsb2JhbF9jYXB0dXJpbmco
KQorY2xhc3MgRG9udFJlYWRGcm9tSW5wdXQ6CisgICAgZW5jb2RpbmcgPSBOb25lCiAKLSAgICBk
ZWYgc3VzcGVuZF9jYXB0dXJlX2l0ZW0oc2VsZiwgaXRlbSwgd2hlbiwgaW5fPUZhbHNlKToKLSAg
ICAgICAgb3V0LCBlcnIgPSBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaXRlbSwgaW5fPWlu
XykKLSAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZG91dCIsIG91dCkK
LSAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZGVyciIsIGVycikKKyAg
ICBkZWYgcmVhZChzZWxmLCAqYXJncyk6CisgICAgICAgIHJhaXNlIE9TRXJyb3IoCisgICAgICAg
ICAgICAicHl0ZXN0OiByZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0IGlzIGNhcHR1cmVk
ISAgQ29uc2lkZXIgdXNpbmcgYC1zYC4iCisgICAgICAgICkKIAorICAgIHJlYWRsaW5lID0gcmVh
ZAorICAgIHJlYWRsaW5lcyA9IHJlYWQKKyAgICBfX25leHRfXyA9IHJlYWQKKworICAgIGRlZiBf
X2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKIAotY2FwdHVyZV9maXh0dXJlcyA9
IHsiY2FwZmQiLCAiY2FwZmRiaW5hcnkiLCAiY2Fwc3lzIiwgImNhcHN5c2JpbmFyeSJ9CisgICAg
ZGVmIGZpbGVubyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0
aW9uKCJyZWRpcmVjdGVkIHN0ZGluIGlzIHBzZXVkb2ZpbGUsIGhhcyBubyBmaWxlbm8oKSIpCiAK
KyAgICBkZWYgaXNhdHR5KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBGYWxzZQogCi1k
ZWYgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVxdWVzdCwgbmFtZSk6Ci0gICAg
Zml4dHVyZXMgPSBzZXQocmVxdWVzdC5maXh0dXJlbmFtZXMpICYgY2FwdHVyZV9maXh0dXJlcyAt
IHtuYW1lfQotICAgIGlmIGZpeHR1cmVzOgotICAgICAgICBmaXh0dXJlcyA9IHNvcnRlZChmaXh0
dXJlcykKLSAgICAgICAgZml4dHVyZXMgPSBmaXh0dXJlc1swXSBpZiBsZW4oZml4dHVyZXMpID09
IDEgZWxzZSBmaXh0dXJlcwotICAgICAgICByYWlzZSByZXF1ZXN0LnJhaXNlZXJyb3IoCi0gICAg
ICAgICAgICAiY2Fubm90IHVzZSB7fSBhbmQge30gYXQgdGhlIHNhbWUgdGltZSIuZm9ybWF0KGZp
eHR1cmVzLCBuYW1lKQotICAgICAgICApCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHBhc3MKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBidWZmZXIoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmCiAKLUBweXRlc3QuZml4dHVyZQotZGVmIGNhcHN5cyhyZXF1ZXN0KToK
LSAgICAiIiJFbmFibGUgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBgYHN5cy5zdGRvdXRgYCBhbmQg
YGBzeXMuc3RkZXJyYGAgYW5kIG1ha2UKLSAgICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZp
YSBgYGNhcHN5cy5yZWFkb3V0ZXJyKClgYCBtZXRob2QgY2FsbHMKLSAgICB3aGljaCByZXR1cm4g
YSBgYChvdXQsIGVycilgYCBuYW1lZHR1cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJl
IGBgdGV4dGBgCi0gICAgb2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2Nh
cHR1cmVfZml4dHVyZShyZXF1ZXN0LCAiY2Fwc3lzIikKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1
cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIFN5c0NhcHR1cmUpIGFzIGZpeHR1cmU6Ci0gICAg
ICAgIHlpZWxkIGZpeHR1cmUKIAorIyBDYXB0dXJlIGNsYXNzZXMuCiAKLUBweXRlc3QuZml4dHVy
ZQotZGVmIGNhcHN5c2JpbmFyeShyZXF1ZXN0KToKLSAgICAiIiJFbmFibGUgY2FwdHVyaW5nIG9m
IHdyaXRlcyB0byBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgYW5kIG1ha2UKLSAg
ICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcHN5cy5yZWFkb3V0ZXJyKClgYCBt
ZXRob2QgY2FsbHMKLSAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBg
b3V0YGAgYW5kIGBgZXJyYGAgd2lsbCBiZSBgYGJ5dGVzYGAKLSAgICBvYmplY3RzLgotICAgICIi
IgotICAgIF9lbnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICJjYXBzeXNi
aW5hcnkiKQotICAgICMgQ3VycmVudGx5LCB0aGUgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgcHl0
aG9uMyBzcGVjaWZpYyBgLmJ1ZmZlcmAKLSAgICAjIHByb3BlcnR5IG9mIENhcHR1cmVJTy4KLSAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKToKLSAgICAgICAgcmFpc2UgcmVxdWVzdC5yYWlz
ZWVycm9yKCJjYXBzeXNiaW5hcnkgaXMgb25seSBzdXBwb3J0ZWQgb24gcHl0aG9uIDMiKQotICAg
IHdpdGggX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVzdCwgU3lzQ2FwdHVy
ZUJpbmFyeSkgYXMgZml4dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQogCitwYXRjaHN5c2Rp
Y3QgPSB7MDogInN0ZGluIiwgMTogInN0ZG91dCIsIDI6ICJzdGRlcnIifQogCi1AcHl0ZXN0LmZp
eHR1cmUKLWRlZiBjYXBmZChyZXF1ZXN0KToKLSAgICAiIiJFbmFibGUgY2FwdHVyaW5nIG9mIHdy
aXRlcyB0byBmaWxlIGRlc2NyaXB0b3JzIGBgMWBgIGFuZCBgYDJgYCBhbmQgbWFrZQotICAgIGNh
cHR1cmVkIG91dHB1dCBhdmFpbGFibGUgdmlhIGBgY2FwZmQucmVhZG91dGVycigpYGAgbWV0aG9k
IGNhbGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBgYG91dGBg
IGFuZCBgYGVycmBgIHdpbGwgYmUgYGB0ZXh0YGAKLSAgICBvYmplY3RzLgotICAgICIiIgotICAg
IF9lbnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICJjYXBmZCIpCi0gICAg
aWYgbm90IGhhc2F0dHIob3MsICJkdXAiKToKLSAgICAgICAgcHl0ZXN0LnNraXAoCi0gICAgICAg
ICAgICAiY2FwZmQgZml4dHVyZSBuZWVkcyBvcy5kdXAgZnVuY3Rpb24gd2hpY2ggaXMgbm90IGF2
YWlsYWJsZSBpbiB0aGlzIHN5c3RlbSIKKworY2xhc3MgTm9DYXB0dXJlOgorICAgIEVNUFRZX0JV
RkZFUiA9IE5vbmUKKyAgICBfX2luaXRfXyA9IHN0YXJ0ID0gZG9uZSA9IHN1c3BlbmQgPSByZXN1
bWUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKKworCitjbGFzcyBTeXNDYXB0dXJlQmluYXJ5OgorCisg
ICAgRU1QVFlfQlVGRkVSID0gYiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmQ6IGludCwg
dG1wZmlsZT1Ob25lLCAqLCB0ZWU6IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAgICAgICAgbmFt
ZSA9IHBhdGNoc3lzZGljdFtmZF0KKyAgICAgICAgc2VsZi5fb2xkID0gZ2V0YXR0cihzeXMsIG5h
bWUpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgaWYgdG1wZmlsZSBpcyBOb25l
OgorICAgICAgICAgICAgaWYgbmFtZSA9PSAic3RkaW4iOgorICAgICAgICAgICAgICAgIHRtcGZp
bGUgPSBEb250UmVhZEZyb21JbnB1dCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHRtcGZpbGUgPSBDYXB0dXJlSU8oKSBpZiBub3QgdGVlIGVsc2UgVGVlQ2FwdHVyZUlPKHNl
bGYuX29sZCkKKyAgICAgICAgc2VsZi50bXBmaWxlID0gdG1wZmlsZQorICAgICAgICBzZWxmLl9z
dGF0ZSA9ICJpbml0aWFsaXplZCIKKworICAgIGRlZiByZXByKHNlbGYsIGNsYXNzX25hbWU6IHN0
cikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIjx7fSB7fSBfb2xkPXt9IF9zdGF0ZT17IXJ9IHRt
cGZpbGU9eyFyfT4iLmZvcm1hdCgKKyAgICAgICAgICAgIGNsYXNzX25hbWUsCisgICAgICAgICAg
ICBzZWxmLm5hbWUsCisgICAgICAgICAgICBoYXNhdHRyKHNlbGYsICJfb2xkIikgYW5kIHJlcHIo
c2VsZi5fb2xkKSBvciAiPFVOU0VUPiIsCisgICAgICAgICAgICBzZWxmLl9zdGF0ZSwKKyAgICAg
ICAgICAgIHNlbGYudG1wZmlsZSwKICAgICAgICAgKQotICAgIHdpdGggX2luc3RhbGxfY2FwdHVy
ZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVzdCwgRkRDYXB0dXJlKSBhcyBmaXh0dXJlOgotICAgICAg
ICB5aWVsZCBmaXh0dXJlCiAKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAg
ICByZXR1cm4gIjx7fSB7fSBfb2xkPXt9IF9zdGF0ZT17IXJ9IHRtcGZpbGU9eyFyfT4iLmZvcm1h
dCgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgc2Vs
Zi5uYW1lLAorICAgICAgICAgICAgaGFzYXR0cihzZWxmLCAiX29sZCIpIGFuZCByZXByKHNlbGYu
X29sZCkgb3IgIjxVTlNFVD4iLAorICAgICAgICAgICAgc2VsZi5fc3RhdGUsCisgICAgICAgICAg
ICBzZWxmLnRtcGZpbGUsCisgICAgICAgICkKIAotQHB5dGVzdC5maXh0dXJlCi1kZWYgY2FwZmRi
aW5hcnkocmVxdWVzdCk6Ci0gICAgIiIiRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZSB0byBmaWxl
IGRlc2NyaXB0b3JzIDEgYW5kIDIgYW5kIG1ha2UKLSAgICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxh
YmxlIHZpYSBgYGNhcGZkYmluYXJ5LnJlYWRvdXRlcnJgYCBtZXRob2QgY2FsbHMKLSAgICB3aGlj
aCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0YGAgYW5kIGBgZXJyYGAgd2ls
bCBiZQotICAgIGBgYnl0ZXNgYCBvYmplY3RzLgotICAgICIiIgotICAgIF9lbnN1cmVfb25seV9v
bmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsICJjYXBmZGJpbmFyeSIpCi0gICAgaWYgbm90IGhh
c2F0dHIob3MsICJkdXAiKToKLSAgICAgICAgcHl0ZXN0LnNraXAoCi0gICAgICAgICAgICAiY2Fw
ZmRiaW5hcnkgZml4dHVyZSBuZWVkcyBvcy5kdXAgZnVuY3Rpb24gd2hpY2ggaXMgbm90IGF2YWls
YWJsZSBpbiB0aGlzIHN5c3RlbSIKKyAgICBkZWYgX2Fzc2VydF9zdGF0ZShzZWxmLCBvcDogc3Ry
LCBzdGF0ZXM6IFR1cGxlW3N0ciwgLi4uXSkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0ICgKKyAg
ICAgICAgICAgIHNlbGYuX3N0YXRlIGluIHN0YXRlcworICAgICAgICApLCAiY2Fubm90IHt9IGlu
IHN0YXRlIHshcn06IGV4cGVjdGVkIG9uZSBvZiB7fSIuZm9ybWF0KAorICAgICAgICAgICAgb3As
IHNlbGYuX3N0YXRlLCAiLCAiLmpvaW4oc3RhdGVzKQogICAgICAgICApCi0gICAgd2l0aCBfaW5z
dGFsbF9jYXB0dXJlX2ZpeHR1cmVfb25faXRlbShyZXF1ZXN0LCBGRENhcHR1cmVCaW5hcnkpIGFz
IGZpeHR1cmU6Ci0gICAgICAgIHlpZWxkIGZpeHR1cmUKIAorICAgIGRlZiBzdGFydChzZWxmKSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoInN0YXJ0IiwgKCJpbml0aWFsaXpl
ZCIsKSkKKyAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2VsZi50bXBmaWxlKQorICAg
ICAgICBzZWxmLl9zdGF0ZSA9ICJzdGFydGVkIgogCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdl
cgotZGVmIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIGNhcHR1cmVf
Y2xhc3MpOgotICAgICIiIgotICAgIENvbnRleHQgbWFuYWdlciB3aGljaCBjcmVhdGVzIGEgYGBD
YXB0dXJlRml4dHVyZWBgIGluc3RhbmNlIGFuZCAiaW5zdGFsbHMiIGl0IG9uCi0gICAgdGhlIGl0
ZW0vbm9kZSBvZiB0aGUgZ2l2ZW4gcmVxdWVzdC4gVXNlZCBieSBgYGNhcHN5c2BgIGFuZCBgYGNh
cGZkYGAuCisgICAgZGVmIHNuYXAoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGF0ZSgi
c25hcCIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAgc2VsZi50bXBmaWxlLnNl
ZWsoMCkKKyAgICAgICAgcmVzID0gc2VsZi50bXBmaWxlLmJ1ZmZlci5yZWFkKCkKKyAgICAgICAg
c2VsZi50bXBmaWxlLnNlZWsoMCkKKyAgICAgICAgc2VsZi50bXBmaWxlLnRydW5jYXRlKCkKKyAg
ICAgICAgcmV0dXJuIHJlcwogCi0gICAgVGhlIENhcHR1cmVGaXh0dXJlIGlzIGFkZGVkIGFzIGF0
dHJpYnV0ZSBvZiB0aGUgaXRlbSBiZWNhdXNlIGl0IG5lZWRzIHRvIGFjY2Vzc2VkCi0gICAgYnkg
YGBDYXB0dXJlTWFuYWdlcmBgIGR1cmluZyBpdHMgYGBweXRlc3RfcnVudGVzdF8qYGAgaG9va3Mu
Ci0gICAgIiIiCi0gICAgcmVxdWVzdC5ub2RlLl9jYXB0dXJlX2ZpeHR1cmUgPSBmaXh0dXJlID0g
Q2FwdHVyZUZpeHR1cmUoY2FwdHVyZV9jbGFzcywgcmVxdWVzdCkKLSAgICBjYXBtYW5hZ2VyID0g
cmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oImNhcHR1cmVtYW5hZ2VyIikK
LSAgICAjIG5lZWQgdG8gYWN0aXZlIHRoaXMgZml4dHVyZSByaWdodCBhd2F5IGluIGNhc2UgaXQg
aXMgYmVpbmcgdXNlZCBieSBhbm90aGVyIGZpeHR1cmUgKHNldHVwIHBoYXNlKQotICAgICMgaWYg
dGhpcyBmaXh0dXJlIGlzIGJlaW5nIHVzZWQgb25seSBieSBhIHRlc3QgZnVuY3Rpb24gKGNhbGwg
cGhhc2UpLCB0aGVuIHdlIHdvdWxkbid0IG5lZWQgdGhpcwotICAgICMgYWN0aXZhdGlvbiwgYnV0
IGl0IGRvZXNuJ3QgaHVydAotICAgIGNhcG1hbmFnZXIuYWN0aXZhdGVfZml4dHVyZShyZXF1ZXN0
Lm5vZGUpCi0gICAgeWllbGQgZml4dHVyZQotICAgIGZpeHR1cmUuY2xvc2UoKQotICAgIGRlbCBy
ZXF1ZXN0Lm5vZGUuX2NhcHR1cmVfZml4dHVyZQotCi0KLWNsYXNzIENhcHR1cmVGaXh0dXJlKG9i
amVjdCk6Ci0gICAgIiIiCi0gICAgT2JqZWN0IHJldHVybmVkIGJ5IDpweTpmdW5jOmBjYXBzeXNg
LCA6cHk6ZnVuYzpgY2Fwc3lzYmluYXJ5YCwgOnB5OmZ1bmM6YGNhcGZkYCBhbmQgOnB5OmZ1bmM6
YGNhcGZkYmluYXJ5YAotICAgIGZpeHR1cmVzLgorICAgIGRlZiBkb25lKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGF0ZSgiZG9uZSIsICgiaW5pdGlhbGl6ZWQiLCAic3Rh
cnRlZCIsICJzdXNwZW5kZWQiLCAiZG9uZSIpKQorICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSAi
ZG9uZSI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYubmFt
ZSwgc2VsZi5fb2xkKQorICAgICAgICBkZWwgc2VsZi5fb2xkCisgICAgICAgIHNlbGYudG1wZmls
ZS5jbG9zZSgpCisgICAgICAgIHNlbGYuX3N0YXRlID0gImRvbmUiCisKKyAgICBkZWYgc3VzcGVu
ZChzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoInN1c3BlbmQiLCAo
InN0YXJ0ZWQiLCAic3VzcGVuZGVkIikpCisgICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLm5hbWUs
IHNlbGYuX29sZCkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAic3VzcGVuZGVkIgorCisgICAgZGVm
IHJlc3VtZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoInJlc3Vt
ZSIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0g
InN0YXJ0ZWQiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNldGF0dHIoc3lzLCBzZWxm
Lm5hbWUsIHNlbGYudG1wZmlsZSkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAic3RhcnRlZCIKKwor
ICAgIGRlZiB3cml0ZW9yZyhzZWxmLCBkYXRhKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9hc3Nl
cnRfc3RhdGUoIndyaXRlb3JnIiwgKCJzdGFydGVkIiwgInN1c3BlbmRlZCIpKQorICAgICAgICBz
ZWxmLl9vbGQuZmx1c2goKQorICAgICAgICBzZWxmLl9vbGQuYnVmZmVyLndyaXRlKGRhdGEpCisg
ICAgICAgIHNlbGYuX29sZC5idWZmZXIuZmx1c2goKQorCisKK2NsYXNzIFN5c0NhcHR1cmUoU3lz
Q2FwdHVyZUJpbmFyeSk6CisgICAgRU1QVFlfQlVGRkVSID0gIiIgICMgdHlwZTogaWdub3JlW2Fz
c2lnbm1lbnRdCisKKyAgICBkZWYgc25hcChzZWxmKToKKyAgICAgICAgcmVzID0gc2VsZi50bXBm
aWxlLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKKyAgICAgICAgc2Vs
Zi50bXBmaWxlLnRydW5jYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgZGVmIHdyaXRl
b3JnKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoIndyaXRlb3JnIiwg
KCJzdGFydGVkIiwgInN1c3BlbmRlZCIpKQorICAgICAgICBzZWxmLl9vbGQud3JpdGUoZGF0YSkK
KyAgICAgICAgc2VsZi5fb2xkLmZsdXNoKCkKKworCitjbGFzcyBGRENhcHR1cmVCaW5hcnk6Cisg
ICAgIiIiQ2FwdHVyZSBJTyB0by9mcm9tIGEgZ2l2ZW4gT1MtbGV2ZWwgZmlsZSBkZXNjcmlwdG9y
LgorCisgICAgc25hcCgpIHByb2R1Y2VzIGBieXRlc2AuCiAgICAgIiIiCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgY2FwdHVyZWNsYXNzLCByZXF1ZXN0KToKLSAgICAgICAgc2VsZi5jYXB0dXJl
Y2xhc3MgPSBjYXB0dXJlY2xhc3MKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAorICAg
IEVNUFRZX0JVRkZFUiA9IGIiIgogCi0gICAgZGVmIF9zdGFydChzZWxmKToKLSAgICAgICAgc2Vs
Zi5fY2FwdHVyZSA9IE11bHRpQ2FwdHVyZSgKLSAgICAgICAgICAgIG91dD1UcnVlLCBlcnI9VHJ1
ZSwgaW5fPUZhbHNlLCBDYXB0dXJlPXNlbGYuY2FwdHVyZWNsYXNzCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHRhcmdldGZkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYudGFyZ2V0ZmQgPSB0
YXJnZXRmZAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmZzdGF0KHRhcmdldGZkKQor
ICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICMgRkQgY2FwdHVyaW5nIGlzIGNv
bmNlcHR1YWxseSBzaW1wbGUgLS0gY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUsCisgICAgICAgICAg
ICAjIHJlZGlyZWN0IHRoZSBGRCB0byBpdCwgcmVkaXJlY3QgYmFjayB3aGVuIGRvbmUuIEJ1dCB3
aGVuIHRoZQorICAgICAgICAgICAgIyB0YXJnZXQgRkQgaXMgaW52YWxpZCBpdCB0aHJvd3MgYSB3
cmVuY2ggaW50byB0aGlzIGxvdmVsZXkgc2NoZW1lLgorICAgICAgICAgICAgIworICAgICAgICAg
ICAgIyBUZXN0cyB0aGVtc2VsdmVzIHNob3VsZG4ndCBjYXJlIGlmIHRoZSBGRCBpcyB2YWxpZCwg
RkQgY2FwdHVyaW5nCisgICAgICAgICAgICAjIHNob3VsZCB3b3JrIHJlZ2FyZGxlc3Mgb2YgZXh0
ZXJuYWwgY2lyY3Vtc3RhbmNlcy4gU28gZmFsbGluZyBiYWNrCisgICAgICAgICAgICAjIHRvIGp1
c3Qgc3lzIGNhcHR1cmluZyBpcyBub3QgYSBnb29kIG9wdGlvbi4KKyAgICAgICAgICAgICMKKyAg
ICAgICAgICAgICMgRnVydGhlciBjb21wbGljYXRpb25zIGFyZSB0aGUgbmVlZCB0byBzdXBwb3J0
IHN1c3BlbmQoKSBhbmQgdGhlCisgICAgICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIEZEIHJldXNl
IChlLmcuIHRoZSB0bXBmaWxlIGdldHRpbmcgdGhlIHZlcnkgc2FtZQorICAgICAgICAgICAgIyB0
YXJnZXQgRkQpLiBUaGUgZm9sbG93aW5nIGFwcHJvYWNoIGlzIHJvYnVzdCwgSSBiZWxpZXZlLgor
ICAgICAgICAgICAgc2VsZi50YXJnZXRmZF9pbnZhbGlkID0gb3Mub3BlbigKKyAgICAgICAgICAg
ICAgICBvcy5kZXZudWxsLCBvcy5PX1JEV1IKKyAgICAgICAgICAgICkgICMgdHlwZTogT3B0aW9u
YWxbaW50XQorICAgICAgICAgICAgb3MuZHVwMihzZWxmLnRhcmdldGZkX2ludmFsaWQsIHRhcmdl
dGZkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50YXJnZXRmZF9pbnZhbGlkID0g
Tm9uZQorICAgICAgICBzZWxmLnRhcmdldGZkX3NhdmUgPSBvcy5kdXAodGFyZ2V0ZmQpCisKKyAg
ICAgICAgaWYgdGFyZ2V0ZmQgPT0gMDoKKyAgICAgICAgICAgIHNlbGYudG1wZmlsZSA9IG9wZW4o
b3MuZGV2bnVsbCkKKyAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9IFN5c0NhcHR1cmUodGFy
Z2V0ZmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRtcGZpbGUgPSBFbmNvZGVk
RmlsZSgKKyAgICAgICAgICAgICAgICAjIFRPRE86IFJlbW92ZSB0eXBlIGlnbm9yZSwgZml4ZWQg
aW4gbmV4dCBteXB5IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgVGVtcG9yYXJ5RmlsZShidWZm
ZXJpbmc9MCksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKyAgICAgICAgICAgICAgICBlbmNv
ZGluZz0idXRmLTgiLAorICAgICAgICAgICAgICAgIGVycm9ycz0icmVwbGFjZSIsCisgICAgICAg
ICAgICAgICAgbmV3bGluZT0iIiwKKyAgICAgICAgICAgICAgICB3cml0ZV90aHJvdWdoPVRydWUs
CisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiB0YXJnZXRmZCBpbiBwYXRjaHN5c2RpY3Q6
CisgICAgICAgICAgICAgICAgc2VsZi5zeXNjYXB0dXJlID0gU3lzQ2FwdHVyZSh0YXJnZXRmZCwg
c2VsZi50bXBmaWxlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnN5
c2NhcHR1cmUgPSBOb0NhcHR1cmUoKQorCisgICAgICAgIHNlbGYuX3N0YXRlID0gImluaXRpYWxp
emVkIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8
e30ge30gb2xkZmQ9e30gX3N0YXRlPXshcn0gdG1wZmlsZT17IXJ9PiIuZm9ybWF0KAorICAgICAg
ICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICBzZWxmLnRhcmdldGZk
LAorICAgICAgICAgICAgc2VsZi50YXJnZXRmZF9zYXZlLAorICAgICAgICAgICAgc2VsZi5fc3Rh
dGUsCisgICAgICAgICAgICBzZWxmLnRtcGZpbGUsCiAgICAgICAgICkKLSAgICAgICAgc2VsZi5f
Y2FwdHVyZS5zdGFydF9jYXB0dXJpbmcoKQogCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAg
ICBjYXAgPSBzZWxmLl9fZGljdF9fLnBvcCgiX2NhcHR1cmUiLCBOb25lKQotICAgICAgICBpZiBj
YXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9vdXRlcnIgPSBjYXAucG9wX291dGVy
cl90b19vcmlnKCkKLSAgICAgICAgICAgIGNhcC5zdG9wX2NhcHR1cmluZygpCisgICAgZGVmIF9h
c3NlcnRfc3RhdGUoc2VsZiwgb3A6IHN0ciwgc3RhdGVzOiBUdXBsZVtzdHIsIC4uLl0pIC0+IE5v
bmU6CisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICBzZWxmLl9zdGF0ZSBpbiBzdGF0ZXMK
KyAgICAgICAgKSwgImNhbm5vdCB7fSBpbiBzdGF0ZSB7IXJ9OiBleHBlY3RlZCBvbmUgb2Yge30i
LmZvcm1hdCgKKyAgICAgICAgICAgIG9wLCBzZWxmLl9zdGF0ZSwgIiwgIi5qb2luKHN0YXRlcykK
KyAgICAgICAgKQogCi0gICAgZGVmIHJlYWRvdXRlcnIoc2VsZik6Ci0gICAgICAgICIiIlJlYWQg
YW5kIHJldHVybiB0aGUgY2FwdHVyZWQgb3V0cHV0IHNvIGZhciwgcmVzZXR0aW5nIHRoZSBpbnRl
cm5hbCBidWZmZXIuCisgICAgZGVmIHN0YXJ0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIlN0
YXJ0IGNhcHR1cmluZyBvbiB0YXJnZXRmZCB1c2luZyBtZW1vcml6ZWQgdG1wZmlsZS4iIiIKKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X3N0YXRlKCJzdGFydCIsICgiaW5pdGlhbGl6ZWQiLCkpCisgICAg
ICAgIG9zLmR1cDIoc2VsZi50bXBmaWxlLmZpbGVubygpLCBzZWxmLnRhcmdldGZkKQorICAgICAg
ICBzZWxmLnN5c2NhcHR1cmUuc3RhcnQoKQorICAgICAgICBzZWxmLl9zdGF0ZSA9ICJzdGFydGVk
IgogCi0gICAgICAgIDpyZXR1cm46IGNhcHR1cmVkIGNvbnRlbnQgYXMgYSBuYW1lZHR1cGxlIHdp
dGggIGBgb3V0YGAgYW5kIGBgZXJyYGAgc3RyaW5nIGF0dHJpYnV0ZXMKLSAgICAgICAgIiIiCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYXB0dXJlLnJlYWRvdXRlcnIo
KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fb3V0ZXJyCisgICAgZGVmIHNuYXAoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGF0
ZSgic25hcCIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAgc2VsZi50bXBmaWxl
LnNlZWsoMCkKKyAgICAgICAgcmVzID0gc2VsZi50bXBmaWxlLmJ1ZmZlci5yZWFkKCkKKyAgICAg
ICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKKyAgICAgICAgc2VsZi50bXBmaWxlLnRydW5jYXRlKCkK
KyAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAg
ICBkZWYgZGlzYWJsZWQoc2VsZik6Ci0gICAgICAgICIiIlRlbXBvcmFyaWx5IGRpc2FibGVzIGNh
cHR1cmUgd2hpbGUgaW5zaWRlIHRoZSAnd2l0aCcgYmxvY2suIiIiCi0gICAgICAgIHNlbGYuX2Nh
cHR1cmUuc3VzcGVuZF9jYXB0dXJpbmcoKQotICAgICAgICBjYXBtYW5hZ2VyID0gc2VsZi5yZXF1
ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQotICAg
ICAgICBjYXBtYW5hZ2VyLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaXRlbT1Ob25lLCBpbl89RmFs
c2UpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBjYXBtYW5hZ2VyLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAgICAg
ICBzZWxmLl9jYXB0dXJlLnJlc3VtZV9jYXB0dXJpbmcoKQorICAgIGRlZiBkb25lKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgICIiIlN0b3AgY2FwdHVyaW5nLCByZXN0b3JlIHN0cmVhbXMsIHJldHVy
biBvcmlnaW5hbCBjYXB0dXJlIGZpbGUsCisgICAgICAgIHNlZWtlZCB0byBwb3NpdGlvbiB6ZXJv
LiIiIgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoImRvbmUiLCAoImluaXRpYWxpemVkIiwg
InN0YXJ0ZWQiLCAic3VzcGVuZGVkIiwgImRvbmUiKSkKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUg
PT0gImRvbmUiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG9zLmR1cDIoc2VsZi50YXJn
ZXRmZF9zYXZlLCBzZWxmLnRhcmdldGZkKQorICAgICAgICBvcy5jbG9zZShzZWxmLnRhcmdldGZk
X3NhdmUpCisgICAgICAgIGlmIHNlbGYudGFyZ2V0ZmRfaW52YWxpZCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGlmIHNlbGYudGFyZ2V0ZmRfaW52YWxpZCAhPSBzZWxmLnRhcmdldGZkOgorICAg
ICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYudGFyZ2V0ZmQpCisgICAgICAgICAgICBvcy5jbG9z
ZShzZWxmLnRhcmdldGZkX2ludmFsaWQpCisgICAgICAgIHNlbGYuc3lzY2FwdHVyZS5kb25lKCkK
KyAgICAgICAgc2VsZi50bXBmaWxlLmNsb3NlKCkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAiZG9u
ZSIKKworICAgIGRlZiBzdXNwZW5kKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2Fzc2Vy
dF9zdGF0ZSgic3VzcGVuZCIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAgaWYg
c2VsZi5fc3RhdGUgPT0gInN1c3BlbmRlZCI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
c2VsZi5zeXNjYXB0dXJlLnN1c3BlbmQoKQorICAgICAgICBvcy5kdXAyKHNlbGYudGFyZ2V0ZmRf
c2F2ZSwgc2VsZi50YXJnZXRmZCkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAic3VzcGVuZGVkIgor
CisgICAgZGVmIHJlc3VtZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9hc3NlcnRfc3Rh
dGUoInJlc3VtZSIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAgaWYgc2VsZi5f
c3RhdGUgPT0gInN0YXJ0ZWQiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuc3lz
Y2FwdHVyZS5yZXN1bWUoKQorICAgICAgICBvcy5kdXAyKHNlbGYudG1wZmlsZS5maWxlbm8oKSwg
c2VsZi50YXJnZXRmZCkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAic3RhcnRlZCIKKworICAgIGRl
ZiB3cml0ZW9yZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgdG8gb3JpZ2luYWwgZmls
ZSBkZXNjcmlwdG9yLiIiIgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoIndyaXRlb3JnIiwg
KCJzdGFydGVkIiwgInN1c3BlbmRlZCIpKQorICAgICAgICBvcy53cml0ZShzZWxmLnRhcmdldGZk
X3NhdmUsIGRhdGEpCiAKIAotZGVmIHNhZmVfdGV4dF9kdXBmaWxlKGYsIG1vZGUsIGRlZmF1bHRf
ZW5jb2Rpbmc9IlVURjgiKToKLSAgICAiIiIgcmV0dXJuIGFuIG9wZW4gdGV4dCBmaWxlIG9iamVj
dCB0aGF0J3MgYSBkdXBsaWNhdGUgb2YgZiBvbiB0aGUKLSAgICAgICAgRkQtbGV2ZWwgaWYgcG9z
c2libGUuCitjbGFzcyBGRENhcHR1cmUoRkRDYXB0dXJlQmluYXJ5KToKKyAgICAiIiJDYXB0dXJl
IElPIHRvL2Zyb20gYSBnaXZlbiBPUy1sZXZlbCBmaWxlIGRlc2NyaXB0b3IuCisKKyAgICBzbmFw
KCkgcHJvZHVjZXMgdGV4dC4KICAgICAiIiIKLSAgICBlbmNvZGluZyA9IGdldGF0dHIoZiwgImVu
Y29kaW5nIiwgTm9uZSkKLSAgICB0cnk6Ci0gICAgICAgIGZkID0gZi5maWxlbm8oKQotICAgIGV4
Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIGlmICJiIiBub3QgaW4gZ2V0YXR0cihmLCAibW9kZSIs
ICIiKSBhbmQgaGFzYXR0cihmLCAiZW5jb2RpbmciKToKLSAgICAgICAgICAgICMgd2Ugc2VlbSB0
byBoYXZlIGEgdGV4dCBzdHJlYW0sIGxldCdzIGp1c3QgdXNlIGl0Ci0gICAgICAgICAgICByZXR1
cm4gZgotICAgIGVsc2U6Ci0gICAgICAgIG5ld2ZkID0gb3MuZHVwKGZkKQotICAgICAgICBpZiAi
YiIgbm90IGluIG1vZGU6Ci0gICAgICAgICAgICBtb2RlICs9ICJiIgotICAgICAgICBmID0gb3Mu
ZmRvcGVuKG5ld2ZkLCBtb2RlLCAwKSAgIyBubyBidWZmZXJpbmcKLSAgICByZXR1cm4gRW5jb2Rl
ZEZpbGUoZiwgZW5jb2Rpbmcgb3IgZGVmYXVsdF9lbmNvZGluZykKLQotCi1jbGFzcyBFbmNvZGVk
RmlsZShvYmplY3QpOgotICAgIGVycm9ycyA9ICJzdHJpY3QiICAjIHBvc3NpYmx5IG5lZWRlZCBi
eSBweTMgY29kZSAoaXNzdWU1NTUpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnVmZmVyLCBl
bmNvZGluZyk6Ci0gICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCi0gICAgICAgIHNlbGYuZW5j
b2RpbmcgPSBlbmNvZGluZwotCi0gICAgZGVmIHdyaXRlKHNlbGYsIG9iaik6Ci0gICAgICAgIGlm
IGlzaW5zdGFuY2Uob2JqLCBzaXgudGV4dF90eXBlKToKLSAgICAgICAgICAgIG9iaiA9IG9iai5l
bmNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKQotICAgICAgICBzZWxmLmJ1ZmZlci53cml0
ZShvYmopCi0KLSAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBsaW5lbGlzdCk6Ci0gICAgICAgIGRh
dGEgPSAiIi5qb2luKGxpbmVsaXN0KQotICAgICAgICBzZWxmLndyaXRlKGRhdGEpCiAKLSAgICBA
cHJvcGVydHkKLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgIiIiRW5zdXJlIHRoYXQgZmls
ZS5uYW1lIGlzIGEgc3RyaW5nLiIiIgotICAgICAgICByZXR1cm4gcmVwcihzZWxmLmJ1ZmZlcikK
KyAgICAjIElnbm9yZSB0eXBlIGJlY2F1c2UgaXQgZG9lc24ndCBtYXRjaCB0aGUgdHlwZSBpbiB0
aGUgc3VwZXJjbGFzcyAoYnl0ZXMpLgorICAgIEVNUFRZX0JVRkZFUiA9ICIiICAjIHR5cGU6IGln
bm9yZQorCisgICAgZGVmIHNuYXAoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGF0ZSgi
c25hcCIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAgc2VsZi50bXBmaWxlLnNl
ZWsoMCkKKyAgICAgICAgcmVzID0gc2VsZi50bXBmaWxlLnJlYWQoKQorICAgICAgICBzZWxmLnRt
cGZpbGUuc2VlaygwKQorICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQorICAgICAgICBy
ZXR1cm4gcmVzCiAKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJl
dHVybiBnZXRhdHRyKG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsICJidWZmZXIiKSwgbmFt
ZSkKKyAgICBkZWYgd3JpdGVvcmcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIHRvIG9y
aWdpbmFsIGZpbGUgZGVzY3JpcHRvci4iIiIKKyAgICAgICAgc3VwZXIoKS53cml0ZW9yZyhkYXRh
LmVuY29kZSgidXRmLTgiKSkgICMgWFhYIHVzZSBlbmNvZGluZyBvZiBvcmlnaW5hbCBzdHJlYW0K
IAogCi1DYXB0dXJlUmVzdWx0ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiQ2FwdHVyZVJlc3Vs
dCIsIFsib3V0IiwgImVyciJdKQorIyBNdWx0aUNhcHR1cmUKIAogCi1jbGFzcyBNdWx0aUNhcHR1
cmUob2JqZWN0KToKLSAgICBvdXQgPSBlcnIgPSBpbl8gPSBOb25lCisjIFRoaXMgY2xhc3Mgd2Fz
IGEgbmFtZWR0dXBsZSwgYnV0IGR1ZSB0byBteXB5IGxpbWl0YXRpb25bMF0gaXQgY291bGQgbm90
IGJlCisjIG1hZGUgZ2VuZXJpYywgc28gd2FzIHJlcGxhY2VkIGJ5IGEgcmVndWxhciBjbGFzcyB3
aGljaCB0cmllcyB0byBlbXVsYXRlIHRoZQorIyBwZXJ0aW5lbnQgcGFydHMgb2YgYSBuYW1lZHR1
cGxlLiBJZiB0aGUgbXlweSBsaW1pdGF0aW9uIGlzIGV2ZXIgbGlmdGVkLCBjYW4KKyMgbWFrZSBp
dCBhIG5hbWVkdHVwbGUgYWdhaW4uCisjIFswXTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9t
eXB5L2lzc3Vlcy82ODUKK0BmaW5hbAorQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZworY2xhc3Mg
Q2FwdHVyZVJlc3VsdChHZW5lcmljW0FueVN0cl0pOgorICAgICIiIlRoZSByZXN1bHQgb2YgOm1l
dGhvZDpgQ2FwdHVyZUZpeHR1cmUucmVhZG91dGVycmAuIiIiCiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgb3V0PVRydWUsIGVycj1UcnVlLCBpbl89VHJ1ZSwgQ2FwdHVyZT1Ob25lKToKLSAgICAg
ICAgaWYgaW5fOgotICAgICAgICAgICAgc2VsZi5pbl8gPSBDYXB0dXJlKDApCi0gICAgICAgIGlm
IG91dDoKLSAgICAgICAgICAgIHNlbGYub3V0ID0gQ2FwdHVyZSgxKQotICAgICAgICBpZiBlcnI6
Ci0gICAgICAgICAgICBzZWxmLmVyciA9IENhcHR1cmUoMikKKyAgICAjIENhbid0IHVzZSBzbG90
cyBpbiBQeXRob248My41LjMgZHVlIHRvIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzEy
NzIKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA1LCAzKToKKyAgICAgICAgX19zbG90
c19fID0gKCJvdXQiLCAiZXJyIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXQ6IEFueVN0
ciwgZXJyOiBBbnlTdHIpIC0+IE5vbmU6CisgICAgICAgIHNlbGYub3V0ID0gb3V0ICAjIHR5cGU6
IEFueVN0cgorICAgICAgICBzZWxmLmVyciA9IGVyciAgIyB0eXBlOiBBbnlTdHIKKworICAgIGRl
ZiBfX2xlbl9fKHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIDIKKworICAgIGRlZiBfX2l0
ZXJfXyhzZWxmKSAtPiBJdGVyYXRvcltBbnlTdHJdOgorICAgICAgICByZXR1cm4gaXRlcigoc2Vs
Zi5vdXQsIHNlbGYuZXJyKSkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtOiBpbnQp
IC0+IEFueVN0cjoKKyAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYpW2l0ZW1dCisKKyAgICBkZWYg
X3JlcGxhY2UoCisgICAgICAgIHNlbGYsICosIG91dDogT3B0aW9uYWxbQW55U3RyXSA9IE5vbmUs
IGVycjogT3B0aW9uYWxbQW55U3RyXSA9IE5vbmUKKyAgICApIC0+ICJDYXB0dXJlUmVzdWx0W0Fu
eVN0cl0iOgorICAgICAgICByZXR1cm4gQ2FwdHVyZVJlc3VsdCgKKyAgICAgICAgICAgIG91dD1z
ZWxmLm91dCBpZiBvdXQgaXMgTm9uZSBlbHNlIG91dCwgZXJyPXNlbGYuZXJyIGlmIGVyciBpcyBO
b25lIGVsc2UgZXJyCisgICAgICAgICkKKworICAgIGRlZiBjb3VudChzZWxmLCB2YWx1ZTogQW55
U3RyKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiB0dXBsZShzZWxmKS5jb3VudCh2YWx1ZSkKKwor
ICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSkgLT4gaW50OgorICAgICAgICByZXR1cm4gdHVwbGUo
c2VsZikuaW5kZXgodmFsdWUpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyOiBvYmplY3Qp
IC0+IGJvb2w6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoQ2FwdHVyZVJlc3Vs
dCwgdHVwbGUpKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICBy
ZXR1cm4gdHVwbGUoc2VsZikgPT0gdHVwbGUob3RoZXIpCiAKLSAgICBkZWYgc3RhcnRfY2FwdHVy
aW5nKHNlbGYpOgorICAgIGRlZiBfX2hhc2hfXyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVy
biBoYXNoKHR1cGxlKHNlbGYpKQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcjogb2JqZWN0
KSAtPiBib29sOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKENhcHR1cmVSZXN1
bHQsIHR1cGxlKSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAg
cmV0dXJuIHR1cGxlKHNlbGYpIDwgdHVwbGUob3RoZXIpCisKKyAgICBkZWYgX19yZXByX18oc2Vs
ZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIkNhcHR1cmVSZXN1bHQob3V0PXshcn0sIGVycj17
IXJ9KSIuZm9ybWF0KHNlbGYub3V0LCBzZWxmLmVycikKKworCitjbGFzcyBNdWx0aUNhcHR1cmUo
R2VuZXJpY1tBbnlTdHJdKToKKyAgICBfc3RhdGUgPSBOb25lCisgICAgX2luX3N1c3BlbmRlZCA9
IEZhbHNlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5fLCBvdXQsIGVycikgLT4gTm9uZToK
KyAgICAgICAgc2VsZi5pbl8gPSBpbl8KKyAgICAgICAgc2VsZi5vdXQgPSBvdXQKKyAgICAgICAg
c2VsZi5lcnIgPSBlcnIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAg
IHJldHVybiAiPE11bHRpQ2FwdHVyZSBvdXQ9eyFyfSBlcnI9eyFyfSBpbl89eyFyfSBfc3RhdGU9
eyFyfSBfaW5fc3VzcGVuZGVkPXshcn0+Ii5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLm91dCwg
c2VsZi5lcnIsIHNlbGYuaW5fLCBzZWxmLl9zdGF0ZSwgc2VsZi5faW5fc3VzcGVuZGVkLAorICAg
ICAgICApCisKKyAgICBkZWYgc3RhcnRfY2FwdHVyaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYuX3N0YXRlID0gInN0YXJ0ZWQiCiAgICAgICAgIGlmIHNlbGYuaW5fOgogICAgICAgICAg
ICAgc2VsZi5pbl8uc3RhcnQoKQogICAgICAgICBpZiBzZWxmLm91dDoKQEAgLTM5Miw4ICs1NzQs
OCBAQCBjbGFzcyBNdWx0aUNhcHR1cmUob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5lcnI6CiAg
ICAgICAgICAgICBzZWxmLmVyci5zdGFydCgpCiAKLSAgICBkZWYgcG9wX291dGVycl90b19vcmln
KHNlbGYpOgotICAgICAgICAiIiIgcG9wIGN1cnJlbnQgc25hcHNob3Qgb3V0L2VyciBjYXB0dXJl
IGFuZCBmbHVzaCB0byBvcmlnIHN0cmVhbXMuICIiIgorICAgIGRlZiBwb3Bfb3V0ZXJyX3RvX29y
aWcoc2VsZikgLT4gVHVwbGVbQW55U3RyLCBBbnlTdHJdOgorICAgICAgICAiIiJQb3AgY3VycmVu
dCBzbmFwc2hvdCBvdXQvZXJyIGNhcHR1cmUgYW5kIGZsdXNoIHRvIG9yaWcgc3RyZWFtcy4iIiIK
ICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnJlYWRvdXRlcnIoKQogICAgICAgICBpZiBvdXQ6CiAg
ICAgICAgICAgICBzZWxmLm91dC53cml0ZW9yZyhvdXQpCkBAIC00MDEsNyArNTgzLDggQEAgY2xh
c3MgTXVsdGlDYXB0dXJlKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmVyci53cml0ZW9yZyhl
cnIpCiAgICAgICAgIHJldHVybiBvdXQsIGVycgogCi0gICAgZGVmIHN1c3BlbmRfY2FwdHVyaW5n
KHNlbGYsIGluXz1GYWxzZSk6CisgICAgZGVmIHN1c3BlbmRfY2FwdHVyaW5nKHNlbGYsIGluXzog
Ym9vbCA9IEZhbHNlKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9zdGF0ZSA9ICJzdXNwZW5kZWQi
CiAgICAgICAgIGlmIHNlbGYub3V0OgogICAgICAgICAgICAgc2VsZi5vdXQuc3VzcGVuZCgpCiAg
ICAgICAgIGlmIHNlbGYuZXJyOgpAQCAtNDEwLDIwICs1OTMsMjEgQEAgY2xhc3MgTXVsdGlDYXB0
dXJlKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmluXy5zdXNwZW5kKCkKICAgICAgICAgICAg
IHNlbGYuX2luX3N1c3BlbmRlZCA9IFRydWUKIAotICAgIGRlZiByZXN1bWVfY2FwdHVyaW5nKHNl
bGYpOgorICAgIGRlZiByZXN1bWVfY2FwdHVyaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuX3N0YXRlID0gInN0YXJ0ZWQiCiAgICAgICAgIGlmIHNlbGYub3V0OgogICAgICAgICAgICAg
c2VsZi5vdXQucmVzdW1lKCkKICAgICAgICAgaWYgc2VsZi5lcnI6CiAgICAgICAgICAgICBzZWxm
LmVyci5yZXN1bWUoKQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJfaW5fc3VzcGVuZGVkIik6
CisgICAgICAgIGlmIHNlbGYuX2luX3N1c3BlbmRlZDoKICAgICAgICAgICAgIHNlbGYuaW5fLnJl
c3VtZSgpCi0gICAgICAgICAgICBkZWwgc2VsZi5faW5fc3VzcGVuZGVkCisgICAgICAgICAgICBz
ZWxmLl9pbl9zdXNwZW5kZWQgPSBGYWxzZQogCi0gICAgZGVmIHN0b3BfY2FwdHVyaW5nKHNlbGYp
OgotICAgICAgICAiIiIgc3RvcCBjYXB0dXJpbmcgYW5kIHJlc2V0IGNhcHR1cmluZyBzdHJlYW1z
ICIiIgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJfcmVzZXQiKToKKyAgICBkZWYgc3RvcF9j
YXB0dXJpbmcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiU3RvcCBjYXB0dXJpbmcgYW5kIHJl
c2V0IGNhcHR1cmluZyBzdHJlYW1zLiIiIgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSAic3Rv
cHBlZCI6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3YXMgYWxyZWFkeSBzdG9wcGVk
IikKLSAgICAgICAgc2VsZi5fcmVzZXQgPSBUcnVlCisgICAgICAgIHNlbGYuX3N0YXRlID0gInN0
b3BwZWQiCiAgICAgICAgIGlmIHNlbGYub3V0OgogICAgICAgICAgICAgc2VsZi5vdXQuZG9uZSgp
CiAgICAgICAgIGlmIHNlbGYuZXJyOgpAQCAtNDMxLDI5NCArNjE1LDM1NiBAQCBjbGFzcyBNdWx0
aUNhcHR1cmUob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5pbl86CiAgICAgICAgICAgICBzZWxm
LmluXy5kb25lKCkKIAotICAgIGRlZiByZWFkb3V0ZXJyKHNlbGYpOgotICAgICAgICAiIiIgcmV0
dXJuIHNuYXBzaG90IHVuaWNvZGUgdmFsdWUgb2Ygc3Rkb3V0L3N0ZGVyciBjYXB0dXJpbmdzLiAi
IiIKLSAgICAgICAgcmV0dXJuIENhcHR1cmVSZXN1bHQoCi0gICAgICAgICAgICBzZWxmLm91dC5z
bmFwKCkgaWYgc2VsZi5vdXQgaXMgbm90IE5vbmUgZWxzZSAiIiwKLSAgICAgICAgICAgIHNlbGYu
ZXJyLnNuYXAoKSBpZiBzZWxmLmVyciBpcyBub3QgTm9uZSBlbHNlICIiLAotICAgICAgICApCisg
ICAgZGVmIGlzX3N0YXJ0ZWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiV2hldGhlciBhY3Rp
dmVseSBjYXB0dXJpbmcgLS0gbm90IHN1c3BlbmRlZCBvciBzdG9wcGVkLiIiIgorICAgICAgICBy
ZXR1cm4gc2VsZi5fc3RhdGUgPT0gInN0YXJ0ZWQiCiAKKyAgICBkZWYgcmVhZG91dGVycihzZWxm
KSAtPiBDYXB0dXJlUmVzdWx0W0FueVN0cl06CisgICAgICAgIGlmIHNlbGYub3V0OgorICAgICAg
ICAgICAgb3V0ID0gc2VsZi5vdXQuc25hcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBv
dXQgPSAiIgorICAgICAgICBpZiBzZWxmLmVycjoKKyAgICAgICAgICAgIGVyciA9IHNlbGYuZXJy
LnNuYXAoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXJyID0gIiIKKyAgICAgICAgcmV0
dXJuIENhcHR1cmVSZXN1bHQob3V0LCBlcnIpCisKKworZGVmIF9nZXRfbXVsdGljYXB0dXJlKG1l
dGhvZDogIl9DYXB0dXJlTWV0aG9kIikgLT4gTXVsdGlDYXB0dXJlW3N0cl06CisgICAgaWYgbWV0
aG9kID09ICJmZCI6CisgICAgICAgIHJldHVybiBNdWx0aUNhcHR1cmUoaW5fPUZEQ2FwdHVyZSgw
KSwgb3V0PUZEQ2FwdHVyZSgxKSwgZXJyPUZEQ2FwdHVyZSgyKSkKKyAgICBlbGlmIG1ldGhvZCA9
PSAic3lzIjoKKyAgICAgICAgcmV0dXJuIE11bHRpQ2FwdHVyZShpbl89U3lzQ2FwdHVyZSgwKSwg
b3V0PVN5c0NhcHR1cmUoMSksIGVycj1TeXNDYXB0dXJlKDIpKQorICAgIGVsaWYgbWV0aG9kID09
ICJubyI6CisgICAgICAgIHJldHVybiBNdWx0aUNhcHR1cmUoaW5fPU5vbmUsIG91dD1Ob25lLCBl
cnI9Tm9uZSkKKyAgICBlbGlmIG1ldGhvZCA9PSAidGVlLXN5cyI6CisgICAgICAgIHJldHVybiBN
dWx0aUNhcHR1cmUoCisgICAgICAgICAgICBpbl89Tm9uZSwgb3V0PVN5c0NhcHR1cmUoMSwgdGVl
PVRydWUpLCBlcnI9U3lzQ2FwdHVyZSgyLCB0ZWU9VHJ1ZSkKKyAgICAgICAgKQorICAgIHJhaXNl
IFZhbHVlRXJyb3IoInVua25vd24gY2FwdHVyaW5nIG1ldGhvZDogeyFyfSIuZm9ybWF0KG1ldGhv
ZCkpCiAKLWNsYXNzIE5vQ2FwdHVyZShvYmplY3QpOgotICAgIF9faW5pdF9fID0gc3RhcnQgPSBk
b25lID0gc3VzcGVuZCA9IHJlc3VtZSA9IGxhbWJkYSAqYXJnczogTm9uZQogCisjIENhcHR1cmVN
YW5hZ2VyIGFuZCBDYXB0dXJlRml4dHVyZQogCi1jbGFzcyBGRENhcHR1cmVCaW5hcnkob2JqZWN0
KToKLSAgICAiIiJDYXB0dXJlIElPIHRvL2Zyb20gYSBnaXZlbiBvcy1sZXZlbCBmaWxlZGVzY3Jp
cHRvci4KIAotICAgIHNuYXAoKSBwcm9kdWNlcyBgYnl0ZXNgCi0gICAgIiIiCitjbGFzcyBDYXB0
dXJlTWFuYWdlcjoKKyAgICAiIiJUaGUgY2FwdHVyZSBwbHVnaW4uCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgdGFyZ2V0ZmQsIHRtcGZpbGU9Tm9uZSk6Ci0gICAgICAgIHNlbGYudGFyZ2V0ZmQg
PSB0YXJnZXRmZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRhcmdldGZkX3NhdmUg
PSBvcy5kdXAoc2VsZi50YXJnZXRmZCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAg
ICAgICBzZWxmLnN0YXJ0ID0gbGFtYmRhOiBOb25lCi0gICAgICAgICAgICBzZWxmLmRvbmUgPSBs
YW1iZGE6IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHRhcmdldGZkID09IDA6
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB0bXBmaWxlLCAiY2Fubm90IHNldCB0bXBmaWxl
IHdpdGggc3RkaW4iCi0gICAgICAgICAgICAgICAgdG1wZmlsZSA9IG9wZW4ob3MuZGV2bnVsbCwg
InIiKQotICAgICAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9IFN5c0NhcHR1cmUodGFyZ2V0
ZmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHRtcGZpbGUgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICAgICAgZiA9IFRlbXBvcmFyeUZpbGUoKQotICAgICAgICAgICAg
ICAgICAgICB3aXRoIGY6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXBmaWxlID0gc2FmZV90
ZXh0X2R1cGZpbGUoZiwgbW9kZT0id2IrIikKLSAgICAgICAgICAgICAgICBpZiB0YXJnZXRmZCBp
biBwYXRjaHN5c2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9IFN5
c0NhcHR1cmUodGFyZ2V0ZmQsIHRtcGZpbGUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zeXNjYXB0dXJlID0gTm9DYXB0dXJlKCkKLSAgICAgICAgICAg
IHNlbGYudG1wZmlsZSA9IHRtcGZpbGUKLSAgICAgICAgICAgIHNlbGYudG1wZmlsZV9mZCA9IHRt
cGZpbGUuZmlsZW5vKCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICI8RkRDYXB0dXJlICVzIG9sZGZkPSVzPiIgJSAoc2VsZi50YXJnZXRmZCwgc2VsZi50YXJnZXRm
ZF9zYXZlKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICAiIiIgU3RhcnQgY2FwdHVy
aW5nIG9uIHRhcmdldGZkIHVzaW5nIG1lbW9yaXplZCB0bXBmaWxlLiAiIiIKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgb3MuZnN0YXQoc2VsZi50YXJnZXRmZF9zYXZlKQotICAgICAgICBleGNl
cHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoInNhdmVkIGZpbGVkZXNjcmlwdG9yIG5vdCB2YWxpZCBhbnltb3JlIikKLSAgICAgICAgb3Mu
ZHVwMihzZWxmLnRtcGZpbGVfZmQsIHNlbGYudGFyZ2V0ZmQpCi0gICAgICAgIHNlbGYuc3lzY2Fw
dHVyZS5zdGFydCgpCisgICAgTWFuYWdlcyB0aGF0IHRoZSBhcHByb3ByaWF0ZSBjYXB0dXJlIG1l
dGhvZCBpcyBlbmFibGVkL2Rpc2FibGVkIGR1cmluZworICAgIGNvbGxlY3Rpb24gYW5kIGVhY2gg
dGVzdCBwaGFzZSAoc2V0dXAsIGNhbGwsIHRlYXJkb3duKS4gQWZ0ZXIgZWFjaCBvZgorICAgIHRo
b3NlIHBvaW50cywgdGhlIGNhcHR1cmVkIG91dHB1dCBpcyBvYnRhaW5lZCBhbmQgYXR0YWNoZWQg
dG8gdGhlCisgICAgY29sbGVjdGlvbi9ydW50ZXN0IHJlcG9ydC4KIAotICAgIGRlZiBzbmFwKHNl
bGYpOgotICAgICAgICBzZWxmLnRtcGZpbGUuc2VlaygwKQotICAgICAgICByZXMgPSBzZWxmLnRt
cGZpbGUucmVhZCgpCi0gICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCi0gICAgICAgIHNlbGYu
dG1wZmlsZS50cnVuY2F0ZSgpCi0gICAgICAgIHJldHVybiByZXMKKyAgICBUaGVyZSBhcmUgdHdv
IGxldmVscyBvZiBjYXB0dXJlOgogCi0gICAgZGVmIGRvbmUoc2VsZik6Ci0gICAgICAgICIiIiBz
dG9wIGNhcHR1cmluZywgcmVzdG9yZSBzdHJlYW1zLCByZXR1cm4gb3JpZ2luYWwgY2FwdHVyZSBm
aWxlLAotICAgICAgICBzZWVrZWQgdG8gcG9zaXRpb24gemVyby4gIiIiCi0gICAgICAgIHRhcmdl
dGZkX3NhdmUgPSBzZWxmLl9fZGljdF9fLnBvcCgidGFyZ2V0ZmRfc2F2ZSIpCi0gICAgICAgIG9z
LmR1cDIodGFyZ2V0ZmRfc2F2ZSwgc2VsZi50YXJnZXRmZCkKLSAgICAgICAgb3MuY2xvc2UodGFy
Z2V0ZmRfc2F2ZSkKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLmRvbmUoKQotICAgICAgICBfYXR0
ZW1wdF90b19jbG9zZV9jYXB0dXJlX2ZpbGUoc2VsZi50bXBmaWxlKQorICAgICogZ2xvYmFsOiBl
bmFibGVkIGJ5IGRlZmF1bHQgYW5kIGNhbiBiZSBzdXBwcmVzc2VkIGJ5IHRoZSBgYC1zYGAKKyAg
ICAgIG9wdGlvbi4gVGhpcyBpcyBhbHdheXMgZW5hYmxlZC9kaXNhYmxlZCBkdXJpbmcgY29sbGVj
dGlvbiBhbmQgZWFjaCB0ZXN0CisgICAgICBwaGFzZS4KIAotICAgIGRlZiBzdXNwZW5kKHNlbGYp
OgotICAgICAgICBzZWxmLnN5c2NhcHR1cmUuc3VzcGVuZCgpCi0gICAgICAgIG9zLmR1cDIoc2Vs
Zi50YXJnZXRmZF9zYXZlLCBzZWxmLnRhcmdldGZkKQorICAgICogZml4dHVyZTogd2hlbiBhIHRl
c3QgZnVuY3Rpb24gb3Igb25lIG9mIGl0cyBmaXh0dXJlIGRlcGVuZCBvbiB0aGUKKyAgICAgIGBg
Y2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1cmVzLiBJbiB0aGlzIGNhc2Ugc3BlY2lhbCBoYW5k
bGluZyBpcworICAgICAgbmVlZGVkIHRvIGVuc3VyZSB0aGUgZml4dHVyZXMgdGFrZSBwcmVjZWRl
bmNlIG92ZXIgdGhlIGdsb2JhbCBjYXB0dXJlLgorICAgICIiIgogCi0gICAgZGVmIHJlc3VtZShz
ZWxmKToKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLnJlc3VtZSgpCi0gICAgICAgIG9zLmR1cDIo
c2VsZi50bXBmaWxlX2ZkLCBzZWxmLnRhcmdldGZkKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBt
ZXRob2Q6ICJfQ2FwdHVyZU1ldGhvZCIpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX21ldGhvZCA9
IG1ldGhvZAorICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gTm9uZSAgIyB0eXBlOiBP
cHRpb25hbFtNdWx0aUNhcHR1cmVbc3RyXV0KKyAgICAgICAgc2VsZi5fY2FwdHVyZV9maXh0dXJl
ID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtDYXB0dXJlRml4dHVyZVtBbnldXQogCi0gICAgZGVm
IHdyaXRlb3JnKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIgd3JpdGUgdG8gb3JpZ2luYWwgZmls
ZSBkZXNjcmlwdG9yLiAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzaXgudGV4dF90
eXBlKToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhLmVuY29kZSgidXRmOCIpICAjIFhYWCB1c2Ug
ZW5jb2Rpbmcgb2Ygb3JpZ2luYWwgc3RyZWFtCi0gICAgICAgIG9zLndyaXRlKHNlbGYudGFyZ2V0
ZmRfc2F2ZSwgZGF0YSkKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICBy
ZXR1cm4gIjxDYXB0dXJlTWFuYWdlciBfbWV0aG9kPXshcn0gX2dsb2JhbF9jYXB0dXJpbmc9eyFy
fSBfY2FwdHVyZV9maXh0dXJlPXshcn0+Ii5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLl9tZXRo
b2QsIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcsIHNlbGYuX2NhcHR1cmVfZml4dHVyZQorICAgICAg
ICApCiAKKyAgICBkZWYgaXNfY2FwdHVyaW5nKHNlbGYpIC0+IFVuaW9uW3N0ciwgYm9vbF06Cisg
ICAgICAgIGlmIHNlbGYuaXNfZ2xvYmFsbHlfY2FwdHVyaW5nKCk6CisgICAgICAgICAgICByZXR1
cm4gImdsb2JhbCIKKyAgICAgICAgaWYgc2VsZi5fY2FwdHVyZV9maXh0dXJlOgorICAgICAgICAg
ICAgcmV0dXJuICJmaXh0dXJlICVzIiAlIHNlbGYuX2NhcHR1cmVfZml4dHVyZS5yZXF1ZXN0LmZp
eHR1cmVuYW1lCisgICAgICAgIHJldHVybiBGYWxzZQogCi1jbGFzcyBGRENhcHR1cmUoRkRDYXB0
dXJlQmluYXJ5KToKLSAgICAiIiJDYXB0dXJlIElPIHRvL2Zyb20gYSBnaXZlbiBvcy1sZXZlbCBm
aWxlZGVzY3JpcHRvci4KKyAgICAjIEdsb2JhbCBjYXB0dXJpbmcgY29udHJvbAogCi0gICAgc25h
cCgpIHByb2R1Y2VzIHRleHQKLSAgICAiIiIKKyAgICBkZWYgaXNfZ2xvYmFsbHlfY2FwdHVyaW5n
KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLl9tZXRob2QgIT0gIm5vIgogCi0g
ICAgZGVmIHNuYXAoc2VsZik6Ci0gICAgICAgIHJlcyA9IEZEQ2FwdHVyZUJpbmFyeS5zbmFwKHNl
bGYpCi0gICAgICAgIGVuYyA9IGdldGF0dHIoc2VsZi50bXBmaWxlLCAiZW5jb2RpbmciLCBOb25l
KQotICAgICAgICBpZiBlbmMgYW5kIGlzaW5zdGFuY2UocmVzLCBieXRlcyk6Ci0gICAgICAgICAg
ICByZXMgPSBzaXgudGV4dF90eXBlKHJlcywgZW5jLCAicmVwbGFjZSIpCi0gICAgICAgIHJldHVy
biByZXMKKyAgICBkZWYgc3RhcnRfZ2xvYmFsX2NhcHR1cmluZyhzZWxmKSAtPiBOb25lOgorICAg
ICAgICBhc3NlcnQgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBpcyBOb25lCisgICAgICAgIHNlbGYu
X2dsb2JhbF9jYXB0dXJpbmcgPSBfZ2V0X211bHRpY2FwdHVyZShzZWxmLl9tZXRob2QpCisgICAg
ICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcuc3RhcnRfY2FwdHVyaW5nKCkKIAorICAgIGRlZiBz
dG9wX2dsb2JhbF9jYXB0dXJpbmcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fZ2xv
YmFsX2NhcHR1cmluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0
dXJpbmcucG9wX291dGVycl90b19vcmlnKCkKKyAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0
dXJpbmcuc3RvcF9jYXB0dXJpbmcoKQorICAgICAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmlu
ZyA9IE5vbmUKIAotY2xhc3MgU3lzQ2FwdHVyZShvYmplY3QpOgorICAgIGRlZiByZXN1bWVfZ2xv
YmFsX2NhcHR1cmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIyBEdXJpbmcgdGVhcmRvd24gb2Yg
dGhlIHB5dGhvbiBwcm9jZXNzLCBhbmQgb24gcmFyZSBvY2Nhc2lvbnMsIGNhcHR1cmUKKyAgICAg
ICAgIyBhdHRyaWJ1dGVzIGNhbiBiZSBgTm9uZWAgd2hpbGUgdHJ5aW5nIHRvIHJlc3VtZSBnbG9i
YWwgY2FwdHVyZS4KKyAgICAgICAgaWYgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcucmVzdW1lX2NhcHR1cmluZygp
CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmQsIHRtcGZpbGU9Tm9uZSk6Ci0gICAgICAgIG5h
bWUgPSBwYXRjaHN5c2RpY3RbZmRdCi0gICAgICAgIHNlbGYuX29sZCA9IGdldGF0dHIoc3lzLCBu
YW1lKQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIGlmIHRtcGZpbGUgaXMgTm9u
ZToKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gInN0ZGluIjoKLSAgICAgICAgICAgICAgICB0bXBm
aWxlID0gRG9udFJlYWRGcm9tSW5wdXQoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICB0bXBmaWxlID0gQ2FwdHVyZUlPKCkKLSAgICAgICAgc2VsZi50bXBmaWxlID0gdG1wZmls
ZQorICAgIGRlZiBzdXNwZW5kX2dsb2JhbF9jYXB0dXJlKHNlbGYsIGluXzogYm9vbCA9IEZhbHNl
KSAtPiBOb25lOgorICAgICAgICBpZiBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZy5zdXNwZW5kX2NhcHR1cmluZyhp
bl89aW5fKQogCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZXRhdHRyKHN5cywgc2Vs
Zi5uYW1lLCBzZWxmLnRtcGZpbGUpCisgICAgZGVmIHN1c3BlbmQoc2VsZiwgaW5fOiBib29sID0g
RmFsc2UpIC0+IE5vbmU6CisgICAgICAgICMgTmVlZCB0byB1bmRvIGxvY2FsIGNhcHN5cy1ldC1h
bCBpZiBpdCBleGlzdHMgYmVmb3JlIGRpc2FibGluZyBnbG9iYWwgY2FwdHVyZS4KKyAgICAgICAg
c2VsZi5zdXNwZW5kX2ZpeHR1cmUoKQorICAgICAgICBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1
cmUoaW5fKQogCi0gICAgZGVmIHNuYXAoc2VsZik6Ci0gICAgICAgIHJlcyA9IHNlbGYudG1wZmls
ZS5nZXR2YWx1ZSgpCi0gICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCi0gICAgICAgIHNlbGYu
dG1wZmlsZS50cnVuY2F0ZSgpCi0gICAgICAgIHJldHVybiByZXMKKyAgICBkZWYgcmVzdW1lKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKKyAgICAg
ICAgc2VsZi5yZXN1bWVfZml4dHVyZSgpCiAKLSAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAg
c2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2VsZi5fb2xkKQotICAgICAgICBkZWwgc2VsZi5fb2xk
Ci0gICAgICAgIF9hdHRlbXB0X3RvX2Nsb3NlX2NhcHR1cmVfZmlsZShzZWxmLnRtcGZpbGUpCisg
ICAgZGVmIHJlYWRfZ2xvYmFsX2NhcHR1cmUoc2VsZikgLT4gQ2FwdHVyZVJlc3VsdFtzdHJdOgor
ICAgICAgICBhc3NlcnQgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBpcyBub3QgTm9uZQorICAgICAg
ICByZXR1cm4gc2VsZi5fZ2xvYmFsX2NhcHR1cmluZy5yZWFkb3V0ZXJyKCkKIAotICAgIGRlZiBz
dXNwZW5kKHNlbGYpOgotICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBzZWxmLl9vbGQp
CisgICAgIyBGaXh0dXJlIENvbnRyb2wKIAotICAgIGRlZiByZXN1bWUoc2VsZik6Ci0gICAgICAg
IHNldGF0dHIoc3lzLCBzZWxmLm5hbWUsIHNlbGYudG1wZmlsZSkKKyAgICBkZWYgc2V0X2ZpeHR1
cmUoc2VsZiwgY2FwdHVyZV9maXh0dXJlOiAiQ2FwdHVyZUZpeHR1cmVbQW55XSIpIC0+IE5vbmU6
CisgICAgICAgIGlmIHNlbGYuX2NhcHR1cmVfZml4dHVyZToKKyAgICAgICAgICAgIGN1cnJlbnRf
Zml4dHVyZSA9IHNlbGYuX2NhcHR1cmVfZml4dHVyZS5yZXF1ZXN0LmZpeHR1cmVuYW1lCisgICAg
ICAgICAgICByZXF1ZXN0ZWRfZml4dHVyZSA9IGNhcHR1cmVfZml4dHVyZS5yZXF1ZXN0LmZpeHR1
cmVuYW1lCisgICAgICAgICAgICBjYXB0dXJlX2ZpeHR1cmUucmVxdWVzdC5yYWlzZWVycm9yKAor
ICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIHt9IGFuZCB7fSBhdCB0aGUgc2FtZSB0aW1lIi5m
b3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZF9maXh0dXJlLCBjdXJyZW50X2Zp
eHR1cmUKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2Nh
cHR1cmVfZml4dHVyZSA9IGNhcHR1cmVfZml4dHVyZQogCi0gICAgZGVmIHdyaXRlb3JnKHNlbGYs
IGRhdGEpOgotICAgICAgICBzZWxmLl9vbGQud3JpdGUoZGF0YSkKLSAgICAgICAgc2VsZi5fb2xk
LmZsdXNoKCkKKyAgICBkZWYgdW5zZXRfZml4dHVyZShzZWxmKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLl9jYXB0dXJlX2ZpeHR1cmUgPSBOb25lCiAKKyAgICBkZWYgYWN0aXZhdGVfZml4dHVyZShz
ZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJJZiB0aGUgY3VycmVudCBpdGVtIGlzIHVzaW5nIGBg
Y2Fwc3lzYGAgb3IgYGBjYXBmZGBgLCBhY3RpdmF0ZQorICAgICAgICB0aGVtIHNvIHRoZXkgdGFr
ZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGdsb2JhbCBjYXB0dXJlLiIiIgorICAgICAgICBpZiBzZWxm
Ll9jYXB0dXJlX2ZpeHR1cmU6CisgICAgICAgICAgICBzZWxmLl9jYXB0dXJlX2ZpeHR1cmUuX3N0
YXJ0KCkKIAotY2xhc3MgU3lzQ2FwdHVyZUJpbmFyeShTeXNDYXB0dXJlKToKKyAgICBkZWYgZGVh
Y3RpdmF0ZV9maXh0dXJlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIkRlYWN0aXZhdGUgdGhl
IGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1cmUgb2YgdGhpcyBpdGVtLCBpZiBhbnkuIiIi
CisgICAgICAgIGlmIHNlbGYuX2NhcHR1cmVfZml4dHVyZToKKyAgICAgICAgICAgIHNlbGYuX2Nh
cHR1cmVfZml4dHVyZS5jbG9zZSgpCiAKLSAgICBkZWYgc25hcChzZWxmKToKLSAgICAgICAgcmVz
ID0gc2VsZi50bXBmaWxlLmJ1ZmZlci5nZXR2YWx1ZSgpCi0gICAgICAgIHNlbGYudG1wZmlsZS5z
ZWVrKDApCi0gICAgICAgIHNlbGYudG1wZmlsZS50cnVuY2F0ZSgpCi0gICAgICAgIHJldHVybiBy
ZXMKKyAgICBkZWYgc3VzcGVuZF9maXh0dXJlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNl
bGYuX2NhcHR1cmVfZml4dHVyZToKKyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmVfZml4dHVyZS5f
c3VzcGVuZCgpCiAKKyAgICBkZWYgcmVzdW1lX2ZpeHR1cmUoc2VsZikgLT4gTm9uZToKKyAgICAg
ICAgaWYgc2VsZi5fY2FwdHVyZV9maXh0dXJlOgorICAgICAgICAgICAgc2VsZi5fY2FwdHVyZV9m
aXh0dXJlLl9yZXN1bWUoKQogCi1jbGFzcyBEb250UmVhZEZyb21JbnB1dChzaXguSXRlcmF0b3Ip
OgotICAgICIiIlRlbXBvcmFyeSBzdHViIGNsYXNzLiAgSWRlYWxseSB3aGVuIHN0ZGluIGlzIGFj
Y2Vzc2VkLCB0aGUKLSAgICBjYXB0dXJpbmcgc2hvdWxkIGJlIHR1cm5lZCBvZmYsIHdpdGggcG9z
c2libHkgYWxsIGRhdGEgY2FwdHVyZWQKLSAgICBzbyBmYXIgc2VudCB0byB0aGUgc2NyZWVuLiAg
VGhpcyBzaG91bGQgYmUgY29uZmlndXJhYmxlLCB0aG91Z2gsCi0gICAgYmVjYXVzZSBpbiBhdXRv
bWF0ZWQgdGVzdCBydW5zIGl0IGlzIGJldHRlciB0byBjcmFzaCB0aGFuCi0gICAgaGFuZyBpbmRl
ZmluaXRlbHkuCi0gICAgIiIiCisgICAgIyBIZWxwZXIgY29udGV4dCBtYW5hZ2VycwogCi0gICAg
ZW5jb2RpbmcgPSBOb25lCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYg
Z2xvYmFsX2FuZF9maXh0dXJlX2Rpc2FibGVkKHNlbGYpIC0+IEdlbmVyYXRvcltOb25lLCBOb25l
LCBOb25lXToKKyAgICAgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRvIHRlbXBvcmFyaWx5IGRpc2Fi
bGUgZ2xvYmFsIGFuZCBjdXJyZW50IGZpeHR1cmUgY2FwdHVyaW5nLiIiIgorICAgICAgICBkb19m
aXh0dXJlID0gc2VsZi5fY2FwdHVyZV9maXh0dXJlIGFuZCBzZWxmLl9jYXB0dXJlX2ZpeHR1cmUu
X2lzX3N0YXJ0ZWQoKQorICAgICAgICBpZiBkb19maXh0dXJlOgorICAgICAgICAgICAgc2VsZi5z
dXNwZW5kX2ZpeHR1cmUoKQorICAgICAgICBkb19nbG9iYWwgPSBzZWxmLl9nbG9iYWxfY2FwdHVy
aW5nIGFuZCBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLmlzX3N0YXJ0ZWQoKQorICAgICAgICBpZiBk
b19nbG9iYWw6CisgICAgICAgICAgICBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgaWYgZG9fZ2xvYmFsOgorICAgICAgICAgICAgICAgIHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0
dXJlKCkKKyAgICAgICAgICAgIGlmIGRvX2ZpeHR1cmU6CisgICAgICAgICAgICAgICAgc2VsZi5y
ZXN1bWVfZml4dHVyZSgpCiAKLSAgICBkZWYgcmVhZChzZWxmLCAqYXJncyk6Ci0gICAgICAgIHJh
aXNlIElPRXJyb3IoInJlYWRpbmcgZnJvbSBzdGRpbiB3aGlsZSBvdXRwdXQgaXMgY2FwdHVyZWQi
KQorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGl0ZW1fY2FwdHVyZShz
ZWxmLCB3aGVuOiBzdHIsIGl0ZW06IEl0ZW0pIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25l
XToKKyAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICBzZWxmLmFj
dGl2YXRlX2ZpeHR1cmUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB5aWVsZAorICAgICAg
ICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5kZWFjdGl2YXRlX2ZpeHR1cmUoKQorICAgICAg
ICAgICAgc2VsZi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGluXz1GYWxzZSkKIAotICAgIHJlYWRs
aW5lID0gcmVhZAotICAgIHJlYWRsaW5lcyA9IHJlYWQKLSAgICBfX25leHRfXyA9IHJlYWQKKyAg
ICAgICAgb3V0LCBlcnIgPSBzZWxmLnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICBpdGVt
LmFkZF9yZXBvcnRfc2VjdGlvbih3aGVuLCAic3Rkb3V0Iiwgb3V0KQorICAgICAgICBpdGVtLmFk
ZF9yZXBvcnRfc2VjdGlvbih3aGVuLCAic3RkZXJyIiwgZXJyKQogCi0gICAgZGVmIF9faXRlcl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgorICAgICMgSG9va3MKIAotICAgIGRlZiBmaWxl
bm8oc2VsZik6Ci0gICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCJyZWRpcmVjdGVk
IHN0ZGluIGlzIHBzZXVkb2ZpbGUsICIgImhhcyBubyBmaWxlbm8oKSIpCisgICAgQHB5dGVzdC5o
b29raW1wbChob29rd3JhcHBlcj1UcnVlKQorICAgIGRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3Jl
cG9ydChzZWxmLCBjb2xsZWN0b3I6IENvbGxlY3Rvcik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
Y29sbGVjdG9yLCBweXRlc3QuRmlsZSk6CisgICAgICAgICAgICBzZWxmLnJlc3VtZV9nbG9iYWxf
Y2FwdHVyZSgpCisgICAgICAgICAgICBvdXRjb21lID0geWllbGQKKyAgICAgICAgICAgIHNlbGYu
c3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYucmVh
ZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICByZXAgPSBvdXRjb21lLmdldF9yZXN1bHQo
KQorICAgICAgICAgICAgaWYgb3V0OgorICAgICAgICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBl
bmQoKCJDYXB0dXJlZCBzdGRvdXQiLCBvdXQpKQorICAgICAgICAgICAgaWYgZXJyOgorICAgICAg
ICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCBzdGRlcnIiLCBlcnIpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgeWllbGQKIAotICAgIGRlZiBpc2F0dHkoc2VsZik6
Ci0gICAgICAgIHJldHVybiBGYWxzZQorICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9
VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoc2VsZiwgaXRlbTogSXRlbSkgLT4g
R2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICB3aXRoIHNlbGYuaXRlbV9jYXB0
dXJlKCJzZXR1cCIsIGl0ZW0pOgorICAgICAgICAgICAgeWllbGQKIAotICAgIGRlZiBjbG9zZShz
ZWxmKToKLSAgICAgICAgcGFzcworICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1
ZSkKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChzZWxmLCBpdGVtOiBJdGVtKSAtPiBHZW5l
cmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgIHdpdGggc2VsZi5pdGVtX2NhcHR1cmUo
ImNhbGwiLCBpdGVtKToKKyAgICAgICAgICAgIHlpZWxkCiAKLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgYnVmZmVyKHNlbGYpOgotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToK
LSAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlz
ZSBBdHRyaWJ1dGVFcnJvcigicmVkaXJlY3RlZCBzdGRpbiBoYXMgbm8gYXR0cmlidXRlIGJ1ZmZl
ciIpCisgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorICAgIGRlZiBweXRl
c3RfcnVudGVzdF90ZWFyZG93bihzZWxmLCBpdGVtOiBJdGVtKSAtPiBHZW5lcmF0b3JbTm9uZSwg
Tm9uZSwgTm9uZV06CisgICAgICAgIHdpdGggc2VsZi5pdGVtX2NhcHR1cmUoInRlYXJkb3duIiwg
aXRlbSk6CisgICAgICAgICAgICB5aWVsZAogCisgICAgQHB5dGVzdC5ob29raW1wbCh0cnlmaXJz
dD1UcnVlKQorICAgIGRlZiBweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIHNlbGYuc3RvcF9nbG9iYWxfY2FwdHVyaW5nKCkKIAotZGVmIF9jb2xvcmFtYV93
b3JrYXJvdW5kKCk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIGNvbG9yYW1hIGlzIGltcG9ydGVkIHNv
IHRoYXQgaXQgYXR0YWNoZXMgdG8gdGhlIGNvcnJlY3Qgc3RkaW8KLSAgICBoYW5kbGVzIG9uIFdp
bmRvd3MuCisgICAgQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQorICAgIGRlZiBweXRl
c3RfaW50ZXJuYWxlcnJvcihzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLnN0b3BfZ2xvYmFs
X2NhcHR1cmluZygpCiAKLSAgICBjb2xvcmFtYSB1c2VzIHRoZSB0ZXJtaW5hbCBvbiBpbXBvcnQg
dGltZS4gU28gaWYgc29tZXRoaW5nIGRvZXMgdGhlCi0gICAgZmlyc3QgaW1wb3J0IG9mIGNvbG9y
YW1hIHdoaWxlIEkvTyBjYXB0dXJlIGlzIGFjdGl2ZSwgY29sb3JhbWEgd2lsbAotICAgIGZhaWwg
aW4gdmFyaW91cyB3YXlzLgotICAgICIiIgogCi0gICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCJ3aW4zMiIpOgotICAgICAgICByZXR1cm4KLSAgICB0cnk6Ci0gICAgICAgIGltcG9y
dCBjb2xvcmFtYSAgIyBub3FhCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNz
CitjbGFzcyBDYXB0dXJlRml4dHVyZShHZW5lcmljW0FueVN0cl0pOgorICAgICIiIk9iamVjdCBy
ZXR1cm5lZCBieSB0aGUgOnB5OmZ1bmM6YGNhcHN5c2AsIDpweTpmdW5jOmBjYXBzeXNiaW5hcnlg
LAorICAgIDpweTpmdW5jOmBjYXBmZGAgYW5kIDpweTpmdW5jOmBjYXBmZGJpbmFyeWAgZml4dHVy
ZXMuIiIiCiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwdHVyZWNsYXNzLCByZXF1ZXN0OiBT
dWJSZXF1ZXN0KSAtPiBOb25lOgorICAgICAgICBzZWxmLmNhcHR1cmVjbGFzcyA9IGNhcHR1cmVj
bGFzcworICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYuX2NhcHR1
cmUgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW011bHRpQ2FwdHVyZVtBbnlTdHJdXQorICAgICAg
ICBzZWxmLl9jYXB0dXJlZF9vdXQgPSBzZWxmLmNhcHR1cmVjbGFzcy5FTVBUWV9CVUZGRVIKKyAg
ICAgICAgc2VsZi5fY2FwdHVyZWRfZXJyID0gc2VsZi5jYXB0dXJlY2xhc3MuRU1QVFlfQlVGRkVS
CisKKyAgICBkZWYgX3N0YXJ0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYuX2NhcHR1
cmUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmUgPSBNdWx0aUNhcHR1cmUoCisg
ICAgICAgICAgICAgICAgaW5fPU5vbmUsIG91dD1zZWxmLmNhcHR1cmVjbGFzcygxKSwgZXJyPXNl
bGYuY2FwdHVyZWNsYXNzKDIpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY2Fw
dHVyZS5zdGFydF9jYXB0dXJpbmcoKQorCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIGlmIHNlbGYuX2NhcHR1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvdXQsIGVy
ciA9IHNlbGYuX2NhcHR1cmUucG9wX291dGVycl90b19vcmlnKCkKKyAgICAgICAgICAgIHNlbGYu
X2NhcHR1cmVkX291dCArPSBvdXQKKyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmVkX2VyciArPSBl
cnIKKyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmUuc3RvcF9jYXB0dXJpbmcoKQorICAgICAgICAg
ICAgc2VsZi5fY2FwdHVyZSA9IE5vbmUKKworICAgIGRlZiByZWFkb3V0ZXJyKHNlbGYpIC0+IENh
cHR1cmVSZXN1bHRbQW55U3RyXToKKyAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHRoZSBjYXB0
dXJlZCBvdXRwdXQgc28gZmFyLCByZXNldHRpbmcgdGhlIGludGVybmFsCisgICAgICAgIGJ1ZmZl
ci4KKworICAgICAgICA6cmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBjYXB0dXJlZCBjb250ZW50
IGFzIGEgbmFtZWR0dXBsZSB3aXRoIGBgb3V0YGAgYW5kIGBgZXJyYGAKKyAgICAgICAgICAgIHN0
cmluZyBhdHRyaWJ1dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgY2FwdHVyZWRfb3V0LCBjYXB0
dXJlZF9lcnIgPSBzZWxmLl9jYXB0dXJlZF9vdXQsIHNlbGYuX2NhcHR1cmVkX2VycgorICAgICAg
ICBpZiBzZWxmLl9jYXB0dXJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgb3V0LCBlcnIgPSBz
ZWxmLl9jYXB0dXJlLnJlYWRvdXRlcnIoKQorICAgICAgICAgICAgY2FwdHVyZWRfb3V0ICs9IG91
dAorICAgICAgICAgICAgY2FwdHVyZWRfZXJyICs9IGVycgorICAgICAgICBzZWxmLl9jYXB0dXJl
ZF9vdXQgPSBzZWxmLmNhcHR1cmVjbGFzcy5FTVBUWV9CVUZGRVIKKyAgICAgICAgc2VsZi5fY2Fw
dHVyZWRfZXJyID0gc2VsZi5jYXB0dXJlY2xhc3MuRU1QVFlfQlVGRkVSCisgICAgICAgIHJldHVy
biBDYXB0dXJlUmVzdWx0KGNhcHR1cmVkX291dCwgY2FwdHVyZWRfZXJyKQorCisgICAgZGVmIF9z
dXNwZW5kKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIlN1c3BlbmQgdGhpcyBmaXh0dXJlJ3Mg
b3duIGNhcHR1cmluZyB0ZW1wb3JhcmlseS4iIiIKKyAgICAgICAgaWYgc2VsZi5fY2FwdHVyZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmUuc3VzcGVuZF9jYXB0dXJpbmco
KQorCisgICAgZGVmIF9yZXN1bWUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiUmVzdW1lIHRo
aXMgZml4dHVyZSdzIG93biBjYXB0dXJpbmcgdGVtcG9yYXJpbHkuIiIiCisgICAgICAgIGlmIHNl
bGYuX2NhcHR1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jYXB0dXJlLnJlc3Vt
ZV9jYXB0dXJpbmcoKQogCi1kZWYgX3JlYWRsaW5lX3dvcmthcm91bmQoKToKLSAgICAiIiIKLSAg
ICBFbnN1cmUgcmVhZGxpbmUgaXMgaW1wb3J0ZWQgc28gdGhhdCBpdCBhdHRhY2hlcyB0byB0aGUg
Y29ycmVjdCBzdGRpbwotICAgIGhhbmRsZXMgb24gV2luZG93cy4KKyAgICBkZWYgX2lzX3N0YXJ0
ZWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiV2hldGhlciBhY3RpdmVseSBjYXB0dXJpbmcg
LS0gbm90IGRpc2FibGVkIG9yIGNsb3NlZC4iIiIKKyAgICAgICAgaWYgc2VsZi5fY2FwdHVyZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYXB0dXJlLmlzX3N0YXJ0ZWQo
KQorICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIFBkYiB1c2VzIHJlYWRsaW5lIHN1cHBvcnQg
d2hlcmUgYXZhaWxhYmxlLS13aGVuIG5vdCBydW5uaW5nIGZyb20gdGhlIFB5dGhvbgotICAgIHBy
b21wdCwgdGhlIHJlYWRsaW5lIG1vZHVsZSBpcyBub3QgaW1wb3J0ZWQgdW50aWwgcnVubmluZyB0
aGUgcGRiIFJFUEwuICBJZgotICAgIHJ1bm5pbmcgcHl0ZXN0IHdpdGggdGhlIC0tcGRiIG9wdGlv
biB0aGlzIG1lYW5zIHRoZSByZWFkbGluZSBtb2R1bGUgaXMgbm90Ci0gICAgaW1wb3J0ZWQgdW50
aWwgYWZ0ZXIgSS9PIGNhcHR1cmUgaGFzIGJlZW4gc3RhcnRlZC4KKyAgICBAY29udGV4dGxpYi5j
b250ZXh0bWFuYWdlcgorICAgIGRlZiBkaXNhYmxlZChzZWxmKSAtPiBHZW5lcmF0b3JbTm9uZSwg
Tm9uZSwgTm9uZV06CisgICAgICAgICIiIlRlbXBvcmFyaWx5IGRpc2FibGUgY2FwdHVyaW5nIHdo
aWxlIGluc2lkZSB0aGUgYGB3aXRoYGAgYmxvY2suIiIiCisgICAgICAgIGNhcG1hbmFnZXIgPSBz
ZWxmLnJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJjYXB0dXJlbWFuYWdl
ciIpCisgICAgICAgIHdpdGggY2FwbWFuYWdlci5nbG9iYWxfYW5kX2ZpeHR1cmVfZGlzYWJsZWQo
KToKKyAgICAgICAgICAgIHlpZWxkCiAKLSAgICBUaGlzIGlzIGEgcHJvYmxlbSBmb3IgcHlyZWFk
bGluZSwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCB0byBpbXBsZW1lbnQgcmVhZGxpbmUKLSAgICBzdXBw
b3J0IG9uIFdpbmRvd3MsIGFzIGl0IGRvZXMgbm90IGF0dGFjaCB0byB0aGUgY29ycmVjdCBoYW5k
bGVzIGZvciBzdGRvdXQKLSAgICBhbmQvb3Igc3RkaW4gaWYgdGhleSBoYXZlIGJlZW4gcmVkaXJl
Y3RlZCBieSB0aGUgRkRDYXB0dXJlIG1lY2hhbmlzbS4gIFRoaXMKLSAgICB3b3JrYXJvdW5kIGVu
c3VyZXMgdGhhdCByZWFkbGluZSBpcyBpbXBvcnRlZCBiZWZvcmUgSS9PIGNhcHR1cmUgaXMgc2V0
dXAgc28KLSAgICB0aGF0IGl0IGNhbiBhdHRhY2ggdG8gdGhlIGFjdHVhbCBzdGRpbi9vdXQgZm9y
IHRoZSBjb25zb2xlLgogCi0gICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9wdWxsLzEyODEKLSAgICAiIiIKKyMgVGhlIGZpeHR1cmVzLgogCi0gICAgaWYgbm90IHN5
cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4zMiIpOgotICAgICAgICByZXR1cm4KLSAgICB0cnk6
Ci0gICAgICAgIGltcG9ydCByZWFkbGluZSAgIyBub3FhCi0gICAgZXhjZXB0IEltcG9ydEVycm9y
OgotICAgICAgICBwYXNzCiAKK0BweXRlc3QuZml4dHVyZQorZGVmIGNhcHN5cyhyZXF1ZXN0OiBT
dWJSZXF1ZXN0KSAtPiBHZW5lcmF0b3JbQ2FwdHVyZUZpeHR1cmVbc3RyXSwgTm9uZSwgTm9uZV06
CisgICAgIiIiRW5hYmxlIHRleHQgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBgYHN5cy5zdGRvdXRg
YCBhbmQgYGBzeXMuc3RkZXJyYGAuCiAKLWRlZiBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmth
cm91bmQoc3RyZWFtKToKKyAgICBUaGUgY2FwdHVyZWQgb3V0cHV0IGlzIG1hZGUgYXZhaWxhYmxl
IHZpYSBgYGNhcHN5cy5yZWFkb3V0ZXJyKClgYCBtZXRob2QKKyAgICBjYWxscywgd2hpY2ggcmV0
dXJuIGEgYGAob3V0LCBlcnIpYGAgbmFtZWR0dXBsZS4KKyAgICBgYG91dGBgIGFuZCBgYGVycmBg
IHdpbGwgYmUgYGB0ZXh0YGAgb2JqZWN0cy4KICAgICAiIiIKLSAgICBQeXRob24gMy42IGltcGxl
bWVudGVkIHVuaWNvZGUgY29uc29sZSBoYW5kbGluZyBmb3IgV2luZG93cy4gVGhpcyB3b3Jrcwot
ICAgIGJ5IHJlYWRpbmcvd3JpdGluZyB0byB0aGUgcmF3IGNvbnNvbGUgaGFuZGxlIHVzaW5nCi0g
ICAgYGB7UmVhZCxXcml0ZX1Db25zb2xlV2BgLgorICAgIGNhcG1hbiA9IHJlcXVlc3QuY29uZmln
LnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCisgICAgY2FwdHVyZV9m
aXh0dXJlID0gQ2FwdHVyZUZpeHR1cmVbc3RyXShTeXNDYXB0dXJlLCByZXF1ZXN0KQorICAgIGNh
cG1hbi5zZXRfZml4dHVyZShjYXB0dXJlX2ZpeHR1cmUpCisgICAgY2FwdHVyZV9maXh0dXJlLl9z
dGFydCgpCisgICAgeWllbGQgY2FwdHVyZV9maXh0dXJlCisgICAgY2FwdHVyZV9maXh0dXJlLmNs
b3NlKCkKKyAgICBjYXBtYW4udW5zZXRfZml4dHVyZSgpCiAKLSAgICBUaGUgcHJvYmxlbSBpcyB0
aGF0IHdlIGFyZSBnb2luZyB0byBgYGR1cDJgYCBvdmVyIHRoZSBzdGRpbyBmaWxlCi0gICAgZGVz
Y3JpcHRvcnMgd2hlbiBkb2luZyBgYEZEQ2FwdHVyZWBgIGFuZCB0aGlzIHdpbGwgYGBDbG9zZUhh
bmRsZWBgIHRoZQotICAgIGhhbmRsZXMgdXNlZCBieSBQeXRob24gdG8gd3JpdGUgdG8gdGhlIGNv
bnNvbGUuIFRob3VnaCB0aGVyZSBpcyBzdGlsbCBzb21lCi0gICAgd2VpcmRuZXNzIGFuZCB0aGUg
Y29uc29sZSBoYW5kbGUgc2VlbXMgdG8gb25seSBiZSBjbG9zZWQgcmFuZG9tbHkgYW5kIG5vdAot
ICAgIG9uIHRoZSBmaXJzdCBjYWxsIHRvIGBgQ2xvc2VIYW5kbGVgYCwgb3IgbWF5YmUgaXQgZ2V0
cyByZW9wZW5lZCB3aXRoIHRoZQotICAgIHNhbWUgaGFuZGxlIHZhbHVlIHdoZW4gd2Ugc3VzcGVu
ZCBjYXB0dXJpbmcuCiAKLSAgICBUaGUgd29ya2Fyb3VuZCBpbiB0aGlzIGNhc2Ugd2lsbCByZW9w
ZW4gc3RkaW8gd2l0aCBhIGRpZmZlcmVudCBmZCB3aGljaAotICAgIGFsc28gbWVhbnMgYSBkaWZm
ZXJlbnQgaGFuZGxlIGJ5IHJlcGxpY2F0aW5nIHRoZSBsb2dpYyBpbgotICAgICJQeV9saWZlY3lj
bGUuYzppbml0c3RkaW8vY3JlYXRlX3N0ZGlvIi4KLQotICAgIDpwYXJhbSBzdHJlYW06IGluIHBy
YWN0aWNlIGBgc3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLCBidXQgZ2l2ZW4KLSAgICAg
ICAgaGVyZSBhcyBwYXJhbWV0ZXIgZm9yIHVuaXR0ZXN0aW5nIHB1cnBvc2VzLgorQHB5dGVzdC5m
aXh0dXJlCitkZWYgY2Fwc3lzYmluYXJ5KHJlcXVlc3Q6IFN1YlJlcXVlc3QpIC0+IEdlbmVyYXRv
cltDYXB0dXJlRml4dHVyZVtieXRlc10sIE5vbmUsIE5vbmVdOgorICAgICIiIkVuYWJsZSBieXRl
cyBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRvIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJg
YC4KIAotICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weS9pc3N1ZXMvMTAz
CisgICAgVGhlIGNhcHR1cmVkIG91dHB1dCBpcyBtYWRlIGF2YWlsYWJsZSB2aWEgYGBjYXBzeXNi
aW5hcnkucmVhZG91dGVycigpYGAKKyAgICBtZXRob2QgY2FsbHMsIHdoaWNoIHJldHVybiBhIGBg
KG91dCwgZXJyKWBgIG5hbWVkdHVwbGUuCisgICAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJl
IGBgYnl0ZXNgYCBvYmplY3RzLgogICAgICIiIgotICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3Rh
cnRzd2l0aCgid2luMzIiKSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA2KToKLSAgICAg
ICAgcmV0dXJuCi0KLSAgICAjIGJhaWwgb3V0IGlmIGBgc3RyZWFtYGAgZG9lc24ndCBzZWVtIGxp
a2UgYSBwcm9wZXIgYGBpb2BgIHN0cmVhbSAoIzI2NjYpCi0gICAgaWYgbm90IGhhc2F0dHIoc3Ry
ZWFtLCAiYnVmZmVyIik6Ci0gICAgICAgIHJldHVybgorICAgIGNhcG1hbiA9IHJlcXVlc3QuY29u
ZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCisgICAgY2FwdHVy
ZV9maXh0dXJlID0gQ2FwdHVyZUZpeHR1cmVbYnl0ZXNdKFN5c0NhcHR1cmVCaW5hcnksIHJlcXVl
c3QpCisgICAgY2FwbWFuLnNldF9maXh0dXJlKGNhcHR1cmVfZml4dHVyZSkKKyAgICBjYXB0dXJl
X2ZpeHR1cmUuX3N0YXJ0KCkKKyAgICB5aWVsZCBjYXB0dXJlX2ZpeHR1cmUKKyAgICBjYXB0dXJl
X2ZpeHR1cmUuY2xvc2UoKQorICAgIGNhcG1hbi51bnNldF9maXh0dXJlKCkKIAotICAgIGJ1ZmZl
cmVkID0gaGFzYXR0cihzdHJlYW0uYnVmZmVyLCAicmF3IikKLSAgICByYXdfc3Rkb3V0ID0gc3Ry
ZWFtLmJ1ZmZlci5yYXcgaWYgYnVmZmVyZWQgZWxzZSBzdHJlYW0uYnVmZmVyCi0KLSAgICBpZiBu
b3QgaXNpbnN0YW5jZShyYXdfc3Rkb3V0LCBpby5fV2luZG93c0NvbnNvbGVJTyk6Ci0gICAgICAg
IHJldHVybgogCi0gICAgZGVmIF9yZW9wZW5fc3RkaW8oZiwgbW9kZSk6Ci0gICAgICAgIGlmIG5v
dCBidWZmZXJlZCBhbmQgbW9kZVswXSA9PSAidyI6Ci0gICAgICAgICAgICBidWZmZXJpbmcgPSAw
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBidWZmZXJpbmcgPSAtMQorQHB5dGVzdC5maXh0
dXJlCitkZWYgY2FwZmQocmVxdWVzdDogU3ViUmVxdWVzdCkgLT4gR2VuZXJhdG9yW0NhcHR1cmVG
aXh0dXJlW3N0cl0sIE5vbmUsIE5vbmVdOgorICAgICIiIkVuYWJsZSB0ZXh0IGNhcHR1cmluZyBv
ZiB3cml0ZXMgdG8gZmlsZSBkZXNjcmlwdG9ycyBgYDFgYCBhbmQgYGAyYGAuCiAKLSAgICAgICAg
cmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoCi0gICAgICAgICAgICBvcGVuKG9zLmR1cChmLmZpbGVu
bygpKSwgbW9kZSwgYnVmZmVyaW5nKSwKLSAgICAgICAgICAgIGYuZW5jb2RpbmcsCi0gICAgICAg
ICAgICBmLmVycm9ycywKLSAgICAgICAgICAgIGYubmV3bGluZXMsCi0gICAgICAgICAgICBmLmxp
bmVfYnVmZmVyaW5nLAotICAgICAgICApCisgICAgVGhlIGNhcHR1cmVkIG91dHB1dCBpcyBtYWRl
IGF2YWlsYWJsZSB2aWEgYGBjYXBmZC5yZWFkb3V0ZXJyKClgYCBtZXRob2QKKyAgICBjYWxscywg
d2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgbmFtZWR0dXBsZS4KKyAgICBgYG91dGBgIGFu
ZCBgYGVycmBgIHdpbGwgYmUgYGB0ZXh0YGAgb2JqZWN0cy4KKyAgICAiIiIKKyAgICBjYXBtYW4g
PSByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigiY2FwdHVyZW1hbmFnZXIi
KQorICAgIGNhcHR1cmVfZml4dHVyZSA9IENhcHR1cmVGaXh0dXJlW3N0cl0oRkRDYXB0dXJlLCBy
ZXF1ZXN0KQorICAgIGNhcG1hbi5zZXRfZml4dHVyZShjYXB0dXJlX2ZpeHR1cmUpCisgICAgY2Fw
dHVyZV9maXh0dXJlLl9zdGFydCgpCisgICAgeWllbGQgY2FwdHVyZV9maXh0dXJlCisgICAgY2Fw
dHVyZV9maXh0dXJlLmNsb3NlKCkKKyAgICBjYXBtYW4udW5zZXRfZml4dHVyZSgpCiAKLSAgICBz
eXMuX19zdGRpbl9fID0gc3lzLnN0ZGluID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3RkaW4sICJyYiIp
Ci0gICAgc3lzLl9fc3Rkb3V0X18gPSBzeXMuc3Rkb3V0ID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3Rk
b3V0LCAid2IiKQotICAgIHN5cy5fX3N0ZGVycl9fID0gc3lzLnN0ZGVyciA9IF9yZW9wZW5fc3Rk
aW8oc3lzLnN0ZGVyciwgIndiIikKIAorQHB5dGVzdC5maXh0dXJlCitkZWYgY2FwZmRiaW5hcnko
cmVxdWVzdDogU3ViUmVxdWVzdCkgLT4gR2VuZXJhdG9yW0NhcHR1cmVGaXh0dXJlW2J5dGVzXSwg
Tm9uZSwgTm9uZV06CisgICAgIiIiRW5hYmxlIGJ5dGVzIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8g
ZmlsZSBkZXNjcmlwdG9ycyBgYDFgYCBhbmQgYGAyYGAuCiAKLWRlZiBfYXR0ZW1wdF90b19jbG9z
ZV9jYXB0dXJlX2ZpbGUoZik6Ci0gICAgIiIiU3VwcHJlc3MgSU9FcnJvciB3aGVuIGNsb3Npbmcg
dGhlIHRlbXBvcmFyeSBmaWxlIHVzZWQgZm9yIGNhcHR1cmluZyBzdHJlYW1zIGluIHB5MjcgKCMy
MzcwKSIiIgotICAgIGlmIHNpeC5QWTI6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xv
c2UoKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICBlbHNl
OgotICAgICAgICBmLmNsb3NlKCkKKyAgICBUaGUgY2FwdHVyZWQgb3V0cHV0IGlzIG1hZGUgYXZh
aWxhYmxlIHZpYSBgYGNhcGZkLnJlYWRvdXRlcnIoKWBgIG1ldGhvZAorICAgIGNhbGxzLCB3aGlj
aCByZXR1cm4gYSBgYChvdXQsIGVycilgYCBuYW1lZHR1cGxlLgorICAgIGBgb3V0YGAgYW5kIGBg
ZXJyYGAgd2lsbCBiZSBgYGJ5dGVgYCBvYmplY3RzLgorICAgICIiIgorICAgIGNhcG1hbiA9IHJl
cXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCisg
ICAgY2FwdHVyZV9maXh0dXJlID0gQ2FwdHVyZUZpeHR1cmVbYnl0ZXNdKEZEQ2FwdHVyZUJpbmFy
eSwgcmVxdWVzdCkKKyAgICBjYXBtYW4uc2V0X2ZpeHR1cmUoY2FwdHVyZV9maXh0dXJlKQorICAg
IGNhcHR1cmVfZml4dHVyZS5fc3RhcnQoKQorICAgIHlpZWxkIGNhcHR1cmVfZml4dHVyZQorICAg
IGNhcHR1cmVfZml4dHVyZS5jbG9zZSgpCisgICAgY2FwbWFuLnVuc2V0X2ZpeHR1cmUoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29tcGF0LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvY29tcGF0LnB5CmluZGV4IDdhYmQzZDUzZmY5MS4uN2VhYjJlYTBjODU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb21wYXQucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvY29tcGF0LnB5CkBAIC0xLDE2MCArMSwyMjEgQEAKLSIiIgotcHl0
aG9uIHZlcnNpb24gY29tcGF0aWJpbGl0eSBjb2RlCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGNv
ZGVjcworIiIiUHl0aG9uIHZlcnNpb24gY29tcGF0aWJpbGl0eSBjb2RlLiIiIgoraW1wb3J0IGVu
dW0KIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbnNwZWN0CitpbXBvcnQgb3MKIGltcG9ydCBy
ZQogaW1wb3J0IHN5cwotCi1pbXBvcnQgcHkKLQotaW1wb3J0IF9weXRlc3QKK2Zyb20gY29udGV4
dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKK2Zyb20gaW5zcGVjdCBpbXBvcnQgUGFyYW1ldGVy
Citmcm9tIGluc3BlY3QgaW1wb3J0IHNpZ25hdHVyZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQor
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJpYwor
ZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgb3ZlcmxvYWQg
YXMgb3ZlcmxvYWQKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0
IFR5cGVWYXIKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBvcnQgYXR0cgorCitmcm9t
IF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwKIGZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBv
cnQgVEVTVF9PVVRDT01FCi1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCi1pbXBvcnQgc2l4CiAK
LXRyeToKLSAgICBpbXBvcnQgZW51bQotZXhjZXB0IEltcG9ydEVycm9yOiAgIyBwcmFnbWE6IG5v
IGNvdmVyCi0gICAgIyBPbmx5IGF2YWlsYWJsZSBpbiBQeXRob24gMy40KyBvciBhcyBhIGJhY2tw
b3J0Ci0gICAgZW51bSA9IE5vbmUKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNSwgMik6Cisg
ICAgVFlQRV9DSEVDS0lORyA9IEZhbHNlICAjIHR5cGU6IGJvb2wKK2Vsc2U6CisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKIAogCi1fUFkzID0gc3lzLnZlcnNpb25faW5mbyA+
ICgzLCAwKQotX1BZMiA9IG5vdCBfUFkzCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBOb1JldHVybgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCisgICAgZnJv
bSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgRmluYWwKIAogCi1pZiBfUFkzOgotICAgIGZyb20g
aW5zcGVjdCBpbXBvcnQgc2lnbmF0dXJlLCBQYXJhbWV0ZXIgYXMgUGFyYW1ldGVyCi1lbHNlOgot
ICAgIGZyb20gZnVuY3NpZ3MgaW1wb3J0IHNpZ25hdHVyZSwgUGFyYW1ldGVyIGFzIFBhcmFtZXRl
cgorX1QgPSBUeXBlVmFyKCJfVCIpCitfUyA9IFR5cGVWYXIoIl9TIikKIAogCi1Ob25lVHlwZSA9
IHR5cGUoTm9uZSkKLU5PVFNFVCA9IG9iamVjdCgpCisjIGZtdDogb2ZmCisjIFNpbmdsZXRvbiB0
eXBlIGZvciBOT1RTRVQsIGFzIGRlc2NyaWJlZCBpbjoKKyMgaHR0cHM6Ly93d3cucHl0aG9uLm9y
Zy9kZXYvcGVwcy9wZXAtMDQ4NC8jc3VwcG9ydC1mb3Itc2luZ2xldG9uLXR5cGVzLWluLXVuaW9u
cworY2xhc3MgTm90U2V0VHlwZShlbnVtLkVudW0pOgorICAgIHRva2VuID0gMAorTk9UU0VUID0g
Tm90U2V0VHlwZS50b2tlbiAgIyB0eXBlOiBGaW5hbCAjIG5vcWE6IEUzMDUKKyMgZm10OiBvbgor
CitNT0RVTEVfTk9UX0ZPVU5EX0VSUk9SID0gKAorICAgICJNb2R1bGVOb3RGb3VuZEVycm9yIiBp
ZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywgNikgZWxzZSAiSW1wb3J0RXJyb3IiCispCiAK
LVBZMzUgPSBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywgNSkKLVBZMzYgPSBzeXMudmVyc2lv
bl9pbmZvWzoyXSA+PSAoMywgNikKLU1PRFVMRV9OT1RfRk9VTkRfRVJST1IgPSAiTW9kdWxlTm90
Rm91bmRFcnJvciIgaWYgUFkzNiBlbHNlICJJbXBvcnRFcnJvciIKIAotaWYgX1BZMzoKLSAgICBm
cm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcgYXMgTWFwcGluZ01peGlu
ICAjIG5vcWEKLSAgICBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgU2VxdWVu
Y2UgICMgbm9xYQoraWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCk6CisgICAgZnJvbSBpbXBv
cnRsaWIgaW1wb3J0IG1ldGFkYXRhIGFzIGltcG9ydGxpYl9tZXRhZGF0YQogZWxzZToKLSAgICAj
IHRob3NlIHJhaXNlIERlcHJlY2F0aW9uV2FybmluZ3MgaW4gUHl0aG9uID49My43Ci0gICAgZnJv
bSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcgYXMgTWFwcGluZ01peGluICAjIG5v
cWEKLSAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nLCBTZXF1ZW5jZSAgIyBub3Fh
CisgICAgaW1wb3J0IGltcG9ydGxpYl9tZXRhZGF0YSAgIyBub3FhOiBGNDAxCiAKIAotZGVmIF9m
b3JtYXRfYXJncyhmdW5jKToKK2RlZiBfZm9ybWF0X2FyZ3MoZnVuYzogQ2FsbGFibGVbLi4uLCBB
bnldKSAtPiBzdHI6CiAgICAgcmV0dXJuIHN0cihzaWduYXR1cmUoZnVuYykpCiAKIAotaXNmdW5j
dGlvbiA9IGluc3BlY3QuaXNmdW5jdGlvbgotaXNjbGFzcyA9IGluc3BlY3QuaXNjbGFzcwotIyB1
c2VkIHRvIHdvcmsgYXJvdW5kIGEgcHl0aG9uMiBleGNlcHRpb24gaW5mbyBsZWFrCi1leGNfY2xl
YXIgPSBnZXRhdHRyKHN5cywgImV4Y19jbGVhciIsIGxhbWJkYTogTm9uZSkKICMgVGhlIHR5cGUg
b2YgcmUuY29tcGlsZSBvYmplY3RzIGlzIG5vdCBleHBvc2VkIGluIFB5dGhvbi4KIFJFR0VYX1RZ
UEUgPSB0eXBlKHJlLmNvbXBpbGUoIiIpKQogCiAKLWRlZiBpc19nZW5lcmF0b3IoZnVuYyk6Citp
ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDYpOgorCisgICAgZGVmIGZzcGF0aChwKToKKyAgICAg
ICAgIiIib3MuZnNwYXRoIHJlcGxhY2VtZW50LCB1c2VmdWwgdG8gcG9pbnQgb3V0IHdoZW4gd2Ug
c2hvdWxkIHJlcGxhY2UgaXQgYnkgdGhlCisgICAgICAgIHJlYWwgZnVuY3Rpb24gb25jZSB3ZSBk
cm9wIHB5MzUuIiIiCisgICAgICAgIHJldHVybiBzdHIocCkKKworCitlbHNlOgorICAgIGZzcGF0
aCA9IG9zLmZzcGF0aAorCisKK2RlZiBpc19nZW5lcmF0b3IoZnVuYzogb2JqZWN0KSAtPiBib29s
OgogICAgIGdlbmZ1bmMgPSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24oZnVuYykKICAgICBy
ZXR1cm4gZ2VuZnVuYyBhbmQgbm90IGlzY29yb3V0aW5lZnVuY3Rpb24oZnVuYykKIAogCi1kZWYg
aXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKToKLSAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBmdW5jIGlz
IGEgZGVjb3JhdGVkIGNvcm91dGluZSBmdW5jdGlvbi4KK2RlZiBpc2Nvcm91dGluZWZ1bmN0aW9u
KGZ1bmM6IG9iamVjdCkgLT4gYm9vbDoKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBmdW5jIGlzIGEg
Y29yb3V0aW5lIGZ1bmN0aW9uIChhIGZ1bmN0aW9uIGRlZmluZWQgd2l0aCBhc3luYworICAgIGRl
ZiBzeW50YXgsIGFuZCBkb2Vzbid0IGNvbnRhaW4geWllbGQpLCBvciBhIGZ1bmN0aW9uIGRlY29y
YXRlZCB3aXRoCisgICAgQGFzeW5jaW8uY29yb3V0aW5lLgogCi0gICAgTm90ZTogY29waWVkIGFu
ZCBtb2RpZmllZCBmcm9tIFB5dGhvbiAzLjUncyBidWlsdGluIGNvdXJvdXRpbmVzLnB5IHRvIGF2
b2lkIGltcG9ydCBhc3luY2lvIGRpcmVjdGx5LAotICAgIHdoaWNoIGluIHR1cm5zIGFsc28gaW5p
dGlhbGl6ZXMgdGhlICJsb2dnaW5nIiBtb2R1bGUgYXMgc2lkZS1lZmZlY3QgKHNlZSBpc3N1ZSAj
OCkuCisgICAgTm90ZTogY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIFB5dGhvbiAzLjUncyBidWls
dGluIGNvdXJvdXRpbmVzLnB5IHRvIGF2b2lkCisgICAgaW1wb3J0aW5nIGFzeW5jaW8gZGlyZWN0
bHksIHdoaWNoIGluIHR1cm5zIGFsc28gaW5pdGlhbGl6ZXMgdGhlICJsb2dnaW5nIgorICAgIG1v
ZHVsZSBhcyBhIHNpZGUtZWZmZWN0IChzZWUgaXNzdWUgIzgpLgogICAgICIiIgotICAgIHJldHVy
biAoCi0gICAgICAgIGdldGF0dHIoZnVuYywgIl9pc19jb3JvdXRpbmUiLCBGYWxzZSkKLSAgICAg
ICAgb3IgKAotICAgICAgICAgICAgaGFzYXR0cihpbnNwZWN0LCAiaXNjb3JvdXRpbmVmdW5jdGlv
biIpCi0gICAgICAgICAgICBhbmQgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpCi0g
ICAgICAgICkKKyAgICByZXR1cm4gaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpIG9y
IGdldGF0dHIoZnVuYywgIl9pc19jb3JvdXRpbmUiLCBGYWxzZSkKKworCitkZWYgaXNfYXN5bmNf
ZnVuY3Rpb24oZnVuYzogb2JqZWN0KSAtPiBib29sOgorICAgICIiIlJldHVybiBUcnVlIGlmIHRo
ZSBnaXZlbiBmdW5jdGlvbiBzZWVtcyB0byBiZSBhbiBhc3luYyBmdW5jdGlvbiBvcgorICAgIGFu
IGFzeW5jIGdlbmVyYXRvci4iIiIKKyAgICByZXR1cm4gaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5j
KSBvciAoCisgICAgICAgIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDYpIGFuZCBpbnNwZWN0Lmlz
YXN5bmNnZW5mdW5jdGlvbihmdW5jKQogICAgICkKIAogCi1kZWYgZ2V0bG9jYXRpb24oZnVuY3Rp
b24sIGN1cmRpcik6Ci0gICAgZm4gPSBweS5wYXRoLmxvY2FsKGluc3BlY3QuZ2V0ZmlsZShmdW5j
dGlvbikpCitkZWYgZ2V0bG9jYXRpb24oZnVuY3Rpb24sIGN1cmRpcjogT3B0aW9uYWxbc3RyXSA9
IE5vbmUpIC0+IHN0cjoKKyAgICBmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorCisg
ICAgZnVuY3Rpb24gPSBnZXRfcmVhbF9mdW5jKGZ1bmN0aW9uKQorICAgIGZuID0gUGF0aChpbnNw
ZWN0LmdldGZpbGUoZnVuY3Rpb24pKQogICAgIGxpbmVubyA9IGZ1bmN0aW9uLl9fY29kZV9fLmNv
X2ZpcnN0bGluZW5vCi0gICAgaWYgZm4ucmVsdG8oY3VyZGlyKToKLSAgICAgICAgZm4gPSBmbi5y
ZWx0byhjdXJkaXIpCisgICAgaWYgY3VyZGlyIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICByZWxmbiA9IGZuLnJlbGF0aXZlX3RvKGN1cmRpcikKKyAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXR1cm4gIiVzOiVkIiAlIChyZWxmbiwgbGluZW5vICsgMSkKICAgICByZXR1cm4gIiVzOiVk
IiAlIChmbiwgbGluZW5vICsgMSkKIAogCi1kZWYgbnVtX21vY2tfcGF0Y2hfYXJncyhmdW5jdGlv
bik6Ci0gICAgIiIiIHJldHVybiBudW1iZXIgb2YgYXJndW1lbnRzIHVzZWQgdXAgYnkgbW9jayBh
cmd1bWVudHMgKGlmIGFueSkgIiIiCitkZWYgbnVtX21vY2tfcGF0Y2hfYXJncyhmdW5jdGlvbikg
LT4gaW50OgorICAgICIiIlJldHVybiBudW1iZXIgb2YgYXJndW1lbnRzIHVzZWQgdXAgYnkgbW9j
ayBhcmd1bWVudHMgKGlmIGFueSkuIiIiCiAgICAgcGF0Y2hpbmdzID0gZ2V0YXR0cihmdW5jdGlv
biwgInBhdGNoaW5ncyIsIE5vbmUpCiAgICAgaWYgbm90IHBhdGNoaW5nczoKICAgICAgICAgcmV0
dXJuIDAKLSAgICBtb2NrX21vZHVsZXMgPSBbc3lzLm1vZHVsZXMuZ2V0KCJtb2NrIiksIHN5cy5t
b2R1bGVzLmdldCgidW5pdHRlc3QubW9jayIpXQotICAgIGlmIGFueShtb2NrX21vZHVsZXMpOgot
ICAgICAgICBzZW50aW5lbHMgPSBbbS5ERUZBVUxUIGZvciBtIGluIG1vY2tfbW9kdWxlcyBpZiBt
IGlzIG5vdCBOb25lXQotICAgICAgICByZXR1cm4gbGVuKAotICAgICAgICAgICAgW3AgZm9yIHAg
aW4gcGF0Y2hpbmdzIGlmIG5vdCBwLmF0dHJpYnV0ZV9uYW1lIGFuZCBwLm5ldyBpbiBzZW50aW5l
bHNdCi0gICAgICAgICkKLSAgICByZXR1cm4gbGVuKHBhdGNoaW5ncykKIAorICAgIG1vY2tfc2Vu
dGluZWwgPSBnZXRhdHRyKHN5cy5tb2R1bGVzLmdldCgibW9jayIpLCAiREVGQVVMVCIsIG9iamVj
dCgpKQorICAgIHV0X21vY2tfc2VudGluZWwgPSBnZXRhdHRyKHN5cy5tb2R1bGVzLmdldCgidW5p
dHRlc3QubW9jayIpLCAiREVGQVVMVCIsIG9iamVjdCgpKQorCisgICAgcmV0dXJuIGxlbigKKyAg
ICAgICAgWworICAgICAgICAgICAgcAorICAgICAgICAgICAgZm9yIHAgaW4gcGF0Y2hpbmdzCisg
ICAgICAgICAgICBpZiBub3QgcC5hdHRyaWJ1dGVfbmFtZQorICAgICAgICAgICAgYW5kIChwLm5l
dyBpcyBtb2NrX3NlbnRpbmVsIG9yIHAubmV3IGlzIHV0X21vY2tfc2VudGluZWwpCisgICAgICAg
IF0KKyAgICApCiAKLWRlZiBnZXRmdW5jYXJnbmFtZXMoZnVuY3Rpb24sIGlzX21ldGhvZD1GYWxz
ZSwgY2xzPU5vbmUpOgotICAgICIiIlJldHVybnMgdGhlIG5hbWVzIG9mIGEgZnVuY3Rpb24ncyBt
YW5kYXRvcnkgYXJndW1lbnRzLgogCi0gICAgVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBuYW1lcyBv
ZiBhbGwgZnVuY3Rpb24gYXJndW1lbnRzIHRoYXQ6Ci0gICAgICAgICogQXJlbid0IGJvdW5kIHRv
IGFuIGluc3RhbmNlIG9yIHR5cGUgYXMgaW4gaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcy4KLSAg
ICAgICAgKiBEb24ndCBoYXZlIGRlZmF1bHQgdmFsdWVzLgotICAgICAgICAqIEFyZW4ndCBib3Vu
ZCB3aXRoIGZ1bmN0b29scy5wYXJ0aWFsLgotICAgICAgICAqIEFyZW4ndCByZXBsYWNlZCB3aXRo
IG1vY2tzLgorZGVmIGdldGZ1bmNhcmduYW1lcygKKyAgICBmdW5jdGlvbjogQ2FsbGFibGVbLi4u
LCBBbnldLAorICAgICosCisgICAgbmFtZTogc3RyID0gIiIsCisgICAgaXNfbWV0aG9kOiBib29s
ID0gRmFsc2UsCisgICAgY2xzOiBPcHRpb25hbFt0eXBlXSA9IE5vbmUKKykgLT4gVHVwbGVbc3Ry
LCAuLi5dOgorICAgICIiIlJldHVybiB0aGUgbmFtZXMgb2YgYSBmdW5jdGlvbidzIG1hbmRhdG9y
eSBhcmd1bWVudHMuCisKKyAgICBTaG91bGQgcmV0dXJuIHRoZSBuYW1lcyBvZiBhbGwgZnVuY3Rp
b24gYXJndW1lbnRzIHRoYXQ6CisgICAgKiBBcmVuJ3QgYm91bmQgdG8gYW4gaW5zdGFuY2Ugb3Ig
dHlwZSBhcyBpbiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLgorICAgICogRG9uJ3QgaGF2ZSBk
ZWZhdWx0IHZhbHVlcy4KKyAgICAqIEFyZW4ndCBib3VuZCB3aXRoIGZ1bmN0b29scy5wYXJ0aWFs
LgorICAgICogQXJlbid0IHJlcGxhY2VkIHdpdGggbW9ja3MuCiAKICAgICBUaGUgaXNfbWV0aG9k
IGFuZCBjbHMgYXJndW1lbnRzIGluZGljYXRlIHRoYXQgdGhlIGZ1bmN0aW9uIHNob3VsZAogICAg
IGJlIHRyZWF0ZWQgYXMgYSBib3VuZCBtZXRob2QgZXZlbiB0aG91Z2ggaXQncyBub3QgdW5sZXNz
LCBvbmx5IGluCiAgICAgdGhlIGNhc2Ugb2YgY2xzLCB0aGUgZnVuY3Rpb24gaXMgYSBzdGF0aWMg
bWV0aG9kLgogCi0gICAgQFJvbm55UGZhbm5zY2htaWR0OiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBi
ZSByZWZhY3RvcmVkIHdoZW4gd2UKLSAgICByZXZpc2l0IGZpeHR1cmVzLiBUaGUgZml4dHVyZSBt
ZWNoYW5pc20gc2hvdWxkIGFzayB0aGUgbm9kZSBmb3IKLSAgICB0aGUgZml4dHVyZSBuYW1lcywg
YW5kIG5vdCB0cnkgdG8gb2J0YWluIGRpcmVjdGx5IGZyb20gdGhlCi0gICAgZnVuY3Rpb24gb2Jq
ZWN0IHdlbGwgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgb2NjdXJyZWQuCi0KKyAgICBUaGUgbmFtZSBw
YXJhbWV0ZXIgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCBuYW1lIGluIHdoaWNoIHRoZSBmdW5jdGlv
biB3YXMgY29sbGVjdGVkLgogICAgICIiIgorICAgICMgVE9ETyhSb25ueVBmYW5uc2NobWlkdCk6
IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9yZWQgd2hlbiB3ZQorICAgICMgcmV2aXNp
dCBmaXh0dXJlcy4gVGhlIGZpeHR1cmUgbWVjaGFuaXNtIHNob3VsZCBhc2sgdGhlIG5vZGUgZm9y
CisgICAgIyB0aGUgZml4dHVyZSBuYW1lcywgYW5kIG5vdCB0cnkgdG8gb2J0YWluIGRpcmVjdGx5
IGZyb20gdGhlCisgICAgIyBmdW5jdGlvbiBvYmplY3Qgd2VsbCBhZnRlciBjb2xsZWN0aW9uIGhh
cyBvY2N1cnJlZC4KKwogICAgICMgVGhlIHBhcmFtZXRlcnMgYXR0cmlidXRlIG9mIGEgU2lnbmF0
dXJlIG9iamVjdCBjb250YWlucyBhbgogICAgICMgb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRl
ciBuYW1lcyB0byBQYXJhbWV0ZXIgaW5zdGFuY2VzLiAgVGhpcwogICAgICMgY3JlYXRlcyBhIHR1
cGxlIG9mIHRoZSBuYW1lcyBvZiB0aGUgcGFyYW1ldGVycyB0aGF0IGRvbid0IGhhdmUKICAgICAj
IGRlZmF1bHRzLgorICAgIHRyeToKKyAgICAgICAgcGFyYW1ldGVycyA9IHNpZ25hdHVyZShmdW5j
dGlvbikucGFyYW1ldGVycworICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKSBhcyBl
OgorICAgICAgICBmYWlsKAorICAgICAgICAgICAgIkNvdWxkIG5vdCBkZXRlcm1pbmUgYXJndW1l
bnRzIG9mIHshcn06IHt9Ii5mb3JtYXQoZnVuY3Rpb24sIGUpLAorICAgICAgICAgICAgcHl0cmFj
ZT1GYWxzZSwKKyAgICAgICAgKQorCiAgICAgYXJnX25hbWVzID0gdHVwbGUoCiAgICAgICAgIHAu
bmFtZQotICAgICAgICBmb3IgcCBpbiBzaWduYXR1cmUoZnVuY3Rpb24pLnBhcmFtZXRlcnMudmFs
dWVzKCkKKyAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVycy52YWx1ZXMoKQogICAgICAgICBpZiAo
Ci0gICAgICAgICAgICBwLmtpbmQgaXMgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRAot
ICAgICAgICAgICAgb3IgcC5raW5kIGlzIFBhcmFtZXRlci5LRVlXT1JEX09OTFkKKyAgICAgICAg
ICAgICMgVE9ETzogUmVtb3ZlIHR5cGUgaWdub3JlIGFmdGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRob24vdHlwZXNoZWQvcHVsbC80MzgzCisgICAgICAgICAgICBwLmtpbmQgaXMgUGFyYW1ldGVy
LlBPU0lUSU9OQUxfT1JfS0VZV09SRCAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCisgICAg
ICAgICAgICBvciBwLmtpbmQgaXMgUGFyYW1ldGVyLktFWVdPUkRfT05MWSAgIyB0eXBlOiBpZ25v
cmVbdW5yZWFjaGFibGVdCiAgICAgICAgICkKICAgICAgICAgYW5kIHAuZGVmYXVsdCBpcyBQYXJh
bWV0ZXIuZW1wdHkKICAgICApCisgICAgaWYgbm90IG5hbWU6CisgICAgICAgIG5hbWUgPSBmdW5j
dGlvbi5fX25hbWVfXworCiAgICAgIyBJZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB0cmVhdGVk
IGFzIGEgYm91bmQgbWV0aG9kIGV2ZW4gdGhvdWdoCiAgICAgIyBpdCdzIHBhc3NlZCBhcyBhbiB1
bmJvdW5kIG1ldGhvZCBvciBmdW5jdGlvbiwgcmVtb3ZlIHRoZSBmaXJzdAogICAgICMgcGFyYW1l
dGVyIG5hbWUuCi0gICAgaWYgKAotICAgICAgICBpc19tZXRob2QKLSAgICAgICAgb3IgKAotICAg
ICAgICAgICAgY2xzCi0gICAgICAgICAgICBhbmQgbm90IGlzaW5zdGFuY2UoY2xzLl9fZGljdF9f
LmdldChmdW5jdGlvbi5fX25hbWVfXywgTm9uZSksIHN0YXRpY21ldGhvZCkKLSAgICAgICAgKQor
ICAgIGlmIGlzX21ldGhvZCBvciAoCisgICAgICAgIGNscyBhbmQgbm90IGlzaW5zdGFuY2UoY2xz
Ll9fZGljdF9fLmdldChuYW1lLCBOb25lKSwgc3RhdGljbWV0aG9kKQogICAgICk6CiAgICAgICAg
IGFyZ19uYW1lcyA9IGFyZ19uYW1lc1sxOl0KICAgICAjIFJlbW92ZSBhbnkgbmFtZXMgdGhhdCB3
aWxsIGJlIHJlcGxhY2VkIHdpdGggbW9ja3MuCiAgICAgaWYgaGFzYXR0cihmdW5jdGlvbiwgIl9f
d3JhcHBlZF9fIik6Ci0gICAgICAgIGFyZ19uYW1lcyA9IGFyZ19uYW1lc1tudW1fbW9ja19wYXRj
aF9hcmdzKGZ1bmN0aW9uKTpdCisgICAgICAgIGFyZ19uYW1lcyA9IGFyZ19uYW1lc1tudW1fbW9j
a19wYXRjaF9hcmdzKGZ1bmN0aW9uKSA6XQogICAgIHJldHVybiBhcmdfbmFtZXMKIAogCi1kZWYg
Z2V0X2RlZmF1bHRfYXJnX25hbWVzKGZ1bmN0aW9uKToKLSAgICAjIE5vdGU6IHRoaXMgY29kZSBp
bnRlbnRpb25hbGx5IG1pcnJvcnMgdGhlIGNvZGUgYXQgdGhlIGJlZ2lubmluZyBvZiBnZXRmdW5j
YXJnbmFtZXMsCi0gICAgIyB0byBnZXQgdGhlIGFyZ3VtZW50cyB3aGljaCB3ZXJlIGV4Y2x1ZGVk
IGZyb20gaXRzIHJlc3VsdCBiZWNhdXNlIHRoZXkgaGFkIGRlZmF1bHQgdmFsdWVzCitpZiBzeXMu
dmVyc2lvbl9pbmZvIDwgKDMsIDcpOgorCisgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgZGVmIG51
bGxjb250ZXh0KCk6CisgICAgICAgIHlpZWxkCisKKworZWxzZToKKyAgICBmcm9tIGNvbnRleHRs
aWIgaW1wb3J0IG51bGxjb250ZXh0IGFzIG51bGxjb250ZXh0ICAjIG5vcWE6IEY0MDEKKworCitk
ZWYgZ2V0X2RlZmF1bHRfYXJnX25hbWVzKGZ1bmN0aW9uOiBDYWxsYWJsZVsuLi4sIEFueV0pIC0+
IFR1cGxlW3N0ciwgLi4uXToKKyAgICAjIE5vdGU6IHRoaXMgY29kZSBpbnRlbnRpb25hbGx5IG1p
cnJvcnMgdGhlIGNvZGUgYXQgdGhlIGJlZ2lubmluZyBvZgorICAgICMgZ2V0ZnVuY2FyZ25hbWVz
LCB0byBnZXQgdGhlIGFyZ3VtZW50cyB3aGljaCB3ZXJlIGV4Y2x1ZGVkIGZyb20gaXRzIHJlc3Vs
dAorICAgICMgYmVjYXVzZSB0aGV5IGhhZCBkZWZhdWx0IHZhbHVlcy4KICAgICByZXR1cm4gdHVw
bGUoCiAgICAgICAgIHAubmFtZQogICAgICAgICBmb3IgcCBpbiBzaWduYXR1cmUoZnVuY3Rpb24p
LnBhcmFtZXRlcnMudmFsdWVzKCkKQEAgLTE2Myw4NiArMjI0LDgzIEBAIGRlZiBnZXRfZGVmYXVs
dF9hcmdfbmFtZXMoZnVuY3Rpb24pOgogICAgICkKIAogCi1pZiBfUFkzOgotICAgIFNUUklOR19U
WVBFUyA9IGJ5dGVzLCBzdHIKLSAgICBVTklDT0RFX1RZUEVTID0gc2l4LnRleHRfdHlwZQorX25v
bl9wcmludGFibGVfYXNjaWlfdHJhbnNsYXRlX3RhYmxlID0geworICAgIGk6ICJcXHh7OjAyeH0i
LmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgxMjgpIGlmIGkgbm90IGluIHJhbmdlKDMyLCAxMjcp
Cit9Citfbm9uX3ByaW50YWJsZV9hc2NpaV90cmFuc2xhdGVfdGFibGUudXBkYXRlKAorICAgIHtv
cmQoIlx0Iik6ICJcXHQiLCBvcmQoIlxyIik6ICJcXHIiLCBvcmQoIlxuIik6ICJcXG4ifQorKQog
Ci0gICAgaWYgUFkzNToKIAotICAgICAgICBkZWYgX2J5dGVzX3RvX2FzY2lpKHZhbCk6Ci0gICAg
ICAgICAgICByZXR1cm4gdmFsLmRlY29kZSgiYXNjaWkiLCAiYmFja3NsYXNocmVwbGFjZSIpCitk
ZWYgX3RyYW5zbGF0ZV9ub25fcHJpbnRhYmxlKHM6IHN0cikgLT4gc3RyOgorICAgIHJldHVybiBz
LnRyYW5zbGF0ZShfbm9uX3ByaW50YWJsZV9hc2NpaV90cmFuc2xhdGVfdGFibGUpCiAKLSAgICBl
bHNlOgogCi0gICAgICAgIGRlZiBfYnl0ZXNfdG9fYXNjaWkodmFsKToKLSAgICAgICAgICAgIGlm
IHZhbDoKLSAgICAgICAgICAgICAgICAjIHNvdXJjZTogaHR0cDovL2dvby5nbC9iR3Nud0MKLSAg
ICAgICAgICAgICAgICBlbmNvZGVkX2J5dGVzLCBfID0gY29kZWNzLmVzY2FwZV9lbmNvZGUodmFs
KQotICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkX2J5dGVzLmRlY29kZSgiYXNjaWkiKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIGVtcHR5IGJ5dGVzIGNyYXNoZXMg
Y29kZWNzLmVzY2FwZV9lbmNvZGUgKCMxMDg3KQotICAgICAgICAgICAgICAgIHJldHVybiAiIgor
U1RSSU5HX1RZUEVTID0gYnl0ZXMsIHN0cgogCi0gICAgZGVmIGFzY2lpX2VzY2FwZWQodmFsKToK
LSAgICAgICAgIiIiSWYgdmFsIGlzIHB1cmUgYXNjaWksIHJldHVybnMgaXQgYXMgYSBzdHIoKS4g
IE90aGVyd2lzZSwgZXNjYXBlcwotICAgICAgICBieXRlcyBvYmplY3RzIGludG8gYSBzZXF1ZW5j
ZSBvZiBlc2NhcGVkIGJ5dGVzOgogCi0gICAgICAgIGInXHhjM1x4YjRceGM1XHhkNicgLT4gdSdc
XHhjM1xceGI0XFx4YzVcXHhkNicKK2RlZiBfYnl0ZXNfdG9fYXNjaWkodmFsOiBieXRlcykgLT4g
c3RyOgorICAgIHJldHVybiB2YWwuZGVjb2RlKCJhc2NpaSIsICJiYWNrc2xhc2hyZXBsYWNlIikK
IAotICAgICAgICBhbmQgZXNjYXBlcyB1bmljb2RlIG9iamVjdHMgaW50byBhIHNlcXVlbmNlIG9m
IGVzY2FwZWQgdW5pY29kZQotICAgICAgICBpZHMsIGUuZy46CiAKLSAgICAgICAgJzRcXG5WXFxV
MDAwNDNlZmFcXHgwZU1YV0JcXHgxZVxcdTMwMjhcXHUxNWZkXFx4Y2RcXFUwMDA3ZDk0NCcKK2Rl
ZiBhc2NpaV9lc2NhcGVkKHZhbDogVW5pb25bYnl0ZXMsIHN0cl0pIC0+IHN0cjoKKyAgICByIiIi
SWYgdmFsIGlzIHB1cmUgQVNDSUksIHJldHVybiBpdCBhcyBhbiBzdHIsIG90aGVyd2lzZSwgZXNj
YXBlCisgICAgYnl0ZXMgb2JqZWN0cyBpbnRvIGEgc2VxdWVuY2Ugb2YgZXNjYXBlZCBieXRlczoK
IAotICAgICAgICBub3RlOgotICAgICAgICAgICB0aGUgb2J2aW91cyAidi5kZWNvZGUoJ3VuaWNv
ZGUtZXNjYXBlJykiIHdpbGwgcmV0dXJuCi0gICAgICAgICAgIHZhbGlkIHV0Zi04IHVuaWNvZGUg
aWYgaXQgZmluZHMgdGhlbSBpbiBieXRlcywgYnV0IHdlCi0gICAgICAgICAgIHdhbnQgdG8gcmV0
dXJuIGVzY2FwZWQgYnl0ZXMgZm9yIGFueSBieXRlLCBldmVuIGlmIHRoZXkgbWF0Y2gKLSAgICAg
ICAgICAgYSB1dGYtOCBzdHJpbmcuCisgICAgYidceGMzXHhiNFx4YzVceGQ2JyAtPiByJ1x4YzNc
eGI0XHhjNVx4ZDYnCiAKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBi
eXRlcyk6Ci0gICAgICAgICAgICByZXR1cm4gX2J5dGVzX3RvX2FzY2lpKHZhbCkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpLmRl
Y29kZSgiYXNjaWkiKQorICAgIGFuZCBlc2NhcGVzIHVuaWNvZGUgb2JqZWN0cyBpbnRvIGEgc2Vx
dWVuY2Ugb2YgZXNjYXBlZCB1bmljb2RlCisgICAgaWRzLCBlLmcuOgogCisgICAgcic0XG5WXFUw
MDA0M2VmYVx4MGVNWFdCXHgxZVx1MzAyOFx1MTVmZFx4Y2RcVTAwMDdkOTQ0JwogCi1lbHNlOgot
ICAgIFNUUklOR19UWVBFUyA9IHNpeC5zdHJpbmdfdHlwZXMKLSAgICBVTklDT0RFX1RZUEVTID0g
c2l4LnRleHRfdHlwZQotCi0gICAgZGVmIGFzY2lpX2VzY2FwZWQodmFsKToKLSAgICAgICAgIiIi
SW4gcHkyIGJ5dGVzIGFuZCBzdHIgYXJlIHRoZSBzYW1lIHR5cGUsIHNvIHJldHVybiBpZiBpdCdz
IGEgYnl0ZXMKLSAgICAgICAgb2JqZWN0LCByZXR1cm4gaXQgdW5jaGFuZ2VkIGlmIGl0IGlzIGEg
ZnVsbCBhc2NpaSBzdHJpbmcsCi0gICAgICAgIG90aGVyd2lzZSBlc2NhcGUgaXQgaW50byBpdHMg
YmluYXJ5IGZvcm0uCi0KLSAgICAgICAgSWYgaXQncyBhIHVuaWNvZGUgc3RyaW5nLCBjaGFuZ2Ug
dGhlIHVuaWNvZGUgY2hhcmFjdGVycyBpbnRvCi0gICAgICAgIHVuaWNvZGUgZXNjYXBlcy4KLQot
ICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWwsIGJ5dGVzKToKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsLmVuY29kZSgiYXNjaWkiKQotICAg
ICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1
cm4gdmFsLmVuY29kZSgic3RyaW5nLWVzY2FwZSIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gdmFsLmVuY29kZSgidW5pY29kZS1lc2NhcGUiKQorICAgIE5vdGU6CisgICAgICAg
VGhlIG9idmlvdXMgInYuZGVjb2RlKCd1bmljb2RlLWVzY2FwZScpIiB3aWxsIHJldHVybgorICAg
ICAgIHZhbGlkIFVURi04IHVuaWNvZGUgaWYgaXQgZmluZHMgdGhlbSBpbiBieXRlcywgYnV0IHdl
CisgICAgICAgd2FudCB0byByZXR1cm4gZXNjYXBlZCBieXRlcyBmb3IgYW55IGJ5dGUsIGV2ZW4g
aWYgdGhleSBtYXRjaAorICAgICAgIGEgVVRGLTggc3RyaW5nLgorICAgICIiIgorICAgIGlmIGlz
aW5zdGFuY2UodmFsLCBieXRlcyk6CisgICAgICAgIHJldCA9IF9ieXRlc190b19hc2NpaSh2YWwp
CisgICAgZWxzZToKKyAgICAgICAgcmV0ID0gdmFsLmVuY29kZSgidW5pY29kZV9lc2NhcGUiKS5k
ZWNvZGUoImFzY2lpIikKKyAgICByZXR1cm4gX3RyYW5zbGF0ZV9ub25fcHJpbnRhYmxlKHJldCkK
IAogCi1kZWYgZ2V0X3JlYWxfZnVuYyhvYmopOgotICAgICIiIiBnZXRzIHRoZSByZWFsIGZ1bmN0
aW9uIG9iamVjdCBvZiB0aGUgKHBvc3NpYmx5KSB3cmFwcGVkIG9iamVjdCBieQotICAgIGZ1bmN0
b29scy53cmFwcyBvciBmdW5jdG9vbHMucGFydGlhbC4KK0BhdHRyLnMKK2NsYXNzIF9QeXRlc3RX
cmFwcGVyOgorICAgICIiIkR1bW15IHdyYXBwZXIgYXJvdW5kIGEgZnVuY3Rpb24gb2JqZWN0IGZv
ciBpbnRlcm5hbCB1c2Ugb25seS4KKworICAgIFVzZWQgdG8gY29ycmVjdGx5IHVud3JhcCB0aGUg
dW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3Qgd2hlbiB3ZSBhcmUKKyAgICBjcmVhdGluZyBmaXh0
dXJlcywgYmVjYXVzZSB3ZSB3cmFwIHRoZSBmdW5jdGlvbiBvYmplY3Qgb3Vyc2VsdmVzIHdpdGgg
YQorICAgIGRlY29yYXRvciB0byBpc3N1ZSB3YXJuaW5ncyB3aGVuIHRoZSBmaXh0dXJlIGZ1bmN0
aW9uIGlzIGNhbGxlZCBkaXJlY3RseS4KICAgICAiIiIKKworICAgIG9iaiA9IGF0dHIuaWIoKQor
CisKK2RlZiBnZXRfcmVhbF9mdW5jKG9iaik6CisgICAgIiIiR2V0IHRoZSByZWFsIGZ1bmN0aW9u
IG9iamVjdCBvZiB0aGUgKHBvc3NpYmx5KSB3cmFwcGVkIG9iamVjdCBieQorICAgIGZ1bmN0b29s
cy53cmFwcyBvciBmdW5jdG9vbHMucGFydGlhbC4iIiIKICAgICBzdGFydF9vYmogPSBvYmoKICAg
ICBmb3IgaSBpbiByYW5nZSgxMDApOgorICAgICAgICAjIF9fcHl0ZXN0X3dyYXBwZWRfXyBpcyBz
ZXQgYnkgQHB5dGVzdC5maXh0dXJlIHdoZW4gd3JhcHBpbmcgdGhlIGZpeHR1cmUgZnVuY3Rpb24K
KyAgICAgICAgIyB0byB0cmlnZ2VyIGEgd2FybmluZyBpZiBpdCBnZXRzIGNhbGxlZCBkaXJlY3Rs
eSBpbnN0ZWFkIG9mIGJ5IHB5dGVzdDogd2UgZG9uJ3QKKyAgICAgICAgIyB3YW50IHRvIHVud3Jh
cCBmdXJ0aGVyIHRoYW4gdGhpcyBvdGhlcndpc2Ugd2UgbG9zZSB1c2VmdWwgd3JhcHBpbmdzIGxp
a2UgQG1vY2sucGF0Y2ggKCMzNzc0KQorICAgICAgICBuZXdfb2JqID0gZ2V0YXR0cihvYmosICJf
X3B5dGVzdF93cmFwcGVkX18iLCBOb25lKQorICAgICAgICBpZiBpc2luc3RhbmNlKG5ld19vYmos
IF9QeXRlc3RXcmFwcGVyKToKKyAgICAgICAgICAgIG9iaiA9IG5ld19vYmoub2JqCisgICAgICAg
ICAgICBicmVhawogICAgICAgICBuZXdfb2JqID0gZ2V0YXR0cihvYmosICJfX3dyYXBwZWRfXyIs
IE5vbmUpCiAgICAgICAgIGlmIG5ld19vYmogaXMgTm9uZToKICAgICAgICAgICAgIGJyZWFrCiAg
ICAgICAgIG9iaiA9IG5ld19vYmoKICAgICBlbHNlOgorICAgICAgICBmcm9tIF9weXRlc3QuX2lv
LnNhZmVyZXByIGltcG9ydCBzYWZlcmVwcgorCiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0g
ICAgICAgICAgICAoImNvdWxkIG5vdCBmaW5kIHJlYWwgZnVuY3Rpb24gb2Yge3N0YXJ0fSIgIlxu
c3RvcHBlZCBhdCB7Y3VycmVudH0iKS5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc3RhcnQ9cHku
aW8uc2FmZXJlcHIoc3RhcnRfb2JqKSwgY3VycmVudD1weS5pby5zYWZlcmVwcihvYmopCisgICAg
ICAgICAgICAoImNvdWxkIG5vdCBmaW5kIHJlYWwgZnVuY3Rpb24gb2Yge3N0YXJ0fVxuc3RvcHBl
ZCBhdCB7Y3VycmVudH0iKS5mb3JtYXQoCisgICAgICAgICAgICAgICAgc3RhcnQ9c2FmZXJlcHIo
c3RhcnRfb2JqKSwgY3VycmVudD1zYWZlcmVwcihvYmopCiAgICAgICAgICAgICApCiAgICAgICAg
ICkKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZnVuY3Rvb2xzLnBhcnRpYWwpOgpAQCAtMjUwLDE0
ICszMDgsMTggQEAgZGVmIGdldF9yZWFsX2Z1bmMob2JqKToKICAgICByZXR1cm4gb2JqCiAKIAot
ZGVmIGdldGZzbGluZW5vKG9iaik6Ci0gICAgIyB4eHggbGV0IGRlY29yYXRvcnMgZXRjIHNwZWNp
ZnkgYSBzYW5lIG9yZGVyaW5nCi0gICAgb2JqID0gZ2V0X3JlYWxfZnVuYyhvYmopCi0gICAgaWYg
aGFzYXR0cihvYmosICJwbGFjZV9hcyIpOgotICAgICAgICBvYmogPSBvYmoucGxhY2VfYXMKLSAg
ICBmc2xpbmVubyA9IF9weXRlc3QuX2NvZGUuZ2V0ZnNsaW5lbm8ob2JqKQotICAgIGFzc2VydCBp
c2luc3RhbmNlKGZzbGluZW5vWzFdLCBpbnQpLCBvYmoKLSAgICByZXR1cm4gZnNsaW5lbm8KK2Rl
ZiBnZXRfcmVhbF9tZXRob2Qob2JqLCBob2xkZXIpOgorICAgICIiIkF0dGVtcHQgdG8gb2J0YWlu
IHRoZSByZWFsIGZ1bmN0aW9uIG9iamVjdCB0aGF0IG1pZ2h0IGJlIHdyYXBwaW5nCisgICAgYGBv
YmpgYCwgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSByZXR1cm5pbmcgYSBib3VuZCBtZXRob2QgdG8g
YGBob2xkZXJgYCBpZgorICAgIHRoZSBvcmlnaW5hbCBvYmplY3Qgd2FzIGEgYm91bmQgbWV0aG9k
LiIiIgorICAgIHRyeToKKyAgICAgICAgaXNfbWV0aG9kID0gaGFzYXR0cihvYmosICJfX2Z1bmNf
XyIpCisgICAgICAgIG9iaiA9IGdldF9yZWFsX2Z1bmMob2JqKQorICAgIGV4Y2VwdCBFeGNlcHRp
b246ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgcmV0dXJuIG9iagorICAgIGlmIGlzX21l
dGhvZCBhbmQgaGFzYXR0cihvYmosICJfX2dldF9fIikgYW5kIGNhbGxhYmxlKG9iai5fX2dldF9f
KToKKyAgICAgICAgb2JqID0gb2JqLl9fZ2V0X18oaG9sZGVyKQorICAgIHJldHVybiBvYmoKIAog
CiBkZWYgZ2V0aW1mdW5jKGZ1bmMpOgpAQCAtMjY3LDEzICszMjksMTQgQEAgZGVmIGdldGltZnVu
YyhmdW5jKToKICAgICAgICAgcmV0dXJuIGZ1bmMKIAogCi1kZWYgc2FmZV9nZXRhdHRyKG9iamVj
dCwgbmFtZSwgZGVmYXVsdCk6Ci0gICAgIiIiIExpa2UgZ2V0YXR0ciBidXQgcmV0dXJuIGRlZmF1
bHQgdXBvbiBhbnkgRXhjZXB0aW9uIG9yIGFueSBPdXRjb21lRXhjZXB0aW9uLgorZGVmIHNhZmVf
Z2V0YXR0cihvYmplY3Q6IEFueSwgbmFtZTogc3RyLCBkZWZhdWx0OiBBbnkpIC0+IEFueToKKyAg
ICAiIiJMaWtlIGdldGF0dHIgYnV0IHJldHVybiBkZWZhdWx0IHVwb24gYW55IEV4Y2VwdGlvbiBv
ciBhbnkgT3V0Y29tZUV4Y2VwdGlvbi4KIAogICAgIEF0dHJpYnV0ZSBhY2Nlc3MgY2FuIHBvdGVu
dGlhbGx5IGZhaWwgZm9yICdldmlsJyBQeXRob24gb2JqZWN0cy4KICAgICBTZWUgaXNzdWUgIzIx
NC4KLSAgICBJdCBjYXRjaGVzIE91dGNvbWVFeGNlcHRpb24gYmVjYXVzZSBvZiAjMjQ5MCAoaXNz
dWUgIzU4MCksIG5ldyBvdXRjb21lcyBhcmUgZGVyaXZlZCBmcm9tIEJhc2VFeGNlcHRpb24KLSAg
ICBpbnN0ZWFkIG9mIEV4Y2VwdGlvbiAoZm9yIG1vcmUgZGV0YWlscyBjaGVjayAjMjcwNykKKyAg
ICBJdCBjYXRjaGVzIE91dGNvbWVFeGNlcHRpb24gYmVjYXVzZSBvZiAjMjQ5MCAoaXNzdWUgIzU4
MCksIG5ldyBvdXRjb21lcworICAgIGFyZSBkZXJpdmVkIGZyb20gQmFzZUV4Y2VwdGlvbiBpbnN0
ZWFkIG9mIEV4Y2VwdGlvbiAoZm9yIG1vcmUgZGV0YWlscworICAgIGNoZWNrICMyNzA3KS4KICAg
ICAiIiIKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBnZXRhdHRyKG9iamVjdCwgbmFtZSwgZGVm
YXVsdCkKQEAgLTI4MSw5MSArMzQ0LDExMSBAQCBkZWYgc2FmZV9nZXRhdHRyKG9iamVjdCwgbmFt
ZSwgZGVmYXVsdCk6CiAgICAgICAgIHJldHVybiBkZWZhdWx0CiAKIAotZGVmIF9pc191bml0dGVz
dF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWlsdXJlKCk6Ci0gICAgIiIiUmV0dXJuIGlmIHRoZSB0
ZXN0IHN1aXRlIHNob3VsZCBmYWlsIGlmIGFuIEBleHBlY3RlZEZhaWx1cmUgdW5pdHRlc3QgdGVz
dCBQQVNTRVMuCi0KLSAgICBGcm9tIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS91
bml0dGVzdC5odG1sP2hpZ2hsaWdodD11bml0dGVzdCN1bml0dGVzdC5UZXN0UmVzdWx0Lndhc1N1
Y2Nlc3NmdWw6Ci0gICAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFJldHVybnMgRmFsc2Ug
aWYgdGhlcmUgd2VyZSBhbnkKLSAgICAgICAgdW5leHBlY3RlZFN1Y2Nlc3NlcyBmcm9tIHRlc3Rz
IG1hcmtlZCB3aXRoIHRoZSBleHBlY3RlZEZhaWx1cmUoKSBkZWNvcmF0b3IuCi0gICAgIiIiCi0g
ICAgcmV0dXJuIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDQpCitkZWYgc2FmZV9pc2NsYXNzKG9i
ajogb2JqZWN0KSAtPiBib29sOgorICAgICIiIklnbm9yZSBhbnkgZXhjZXB0aW9uIHZpYSBpc2lu
c3RhbmNlIG9uIFB5dGhvbiAzLiIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGluc3BlY3Qu
aXNjbGFzcyhvYmopCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcmV0dXJuIEZhbHNl
CiAKIAotaWYgX1BZMzoKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNSwgMik6CiAKLSAgICBk
ZWYgc2FmZV9zdHIodik6Ci0gICAgICAgICIiInJldHVybnMgdiBhcyBzdHJpbmciIiIKLSAgICAg
ICAgcmV0dXJuIHN0cih2KQorICAgIGRlZiBvdmVybG9hZChmKTogICMgbm9xYTogRjgxMQorICAg
ICAgICByZXR1cm4gZgogCiAKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA+PSAoMywgOCk6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBmaW5hbCBhcyBmaW5h
bAorICAgIGVsc2U6CisgICAgICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IGZpbmFs
IGFzIGZpbmFsCitlbGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpOgorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBmaW5hbCBhcyBmaW5hbAogZWxzZToKIAotICAgIGRlZiBzYWZlX3N0cih2KToK
LSAgICAgICAgIiIicmV0dXJucyB2IGFzIHN0cmluZywgY29udmVydGluZyB0byBhc2NpaSBpZiBu
ZWNlc3NhcnkiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0cih2KQotICAg
ICAgICBleGNlcHQgVW5pY29kZUVycm9yOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
diwgdGV4dF90eXBlKToKLSAgICAgICAgICAgICAgICB2ID0gdGV4dF90eXBlKHYpCi0gICAgICAg
ICAgICBlcnJvcnMgPSAicmVwbGFjZSIKLSAgICAgICAgICAgIHJldHVybiB2LmVuY29kZSgidXRm
LTgiLCBlcnJvcnMpCi0KLQotQ09MTEVDVF9GQUtFTU9EVUxFX0FUVFJJQlVURVMgPSAoCi0gICAg
IkNvbGxlY3RvciIsCi0gICAgIk1vZHVsZSIsCi0gICAgIkdlbmVyYXRvciIsCi0gICAgIkZ1bmN0
aW9uIiwKLSAgICAiSW5zdGFuY2UiLAotICAgICJTZXNzaW9uIiwKLSAgICAiSXRlbSIsCi0gICAg
IkNsYXNzIiwKLSAgICAiRmlsZSIsCi0gICAgIl9maWxsZnVuY2FyZ3MiLAotKQotCi0KLWRlZiBf
c2V0dXBfY29sbGVjdF9mYWtlbW9kdWxlKCk6Ci0gICAgZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxl
VHlwZQotICAgIGltcG9ydCBweXRlc3QKLQotICAgIHB5dGVzdC5jb2xsZWN0ID0gTW9kdWxlVHlw
ZSgicHl0ZXN0LmNvbGxlY3QiKQotICAgIHB5dGVzdC5jb2xsZWN0Ll9fYWxsX18gPSBbXSAgIyB1
c2VkIGZvciBzZXRucwotICAgIGZvciBhdHRyIGluIENPTExFQ1RfRkFLRU1PRFVMRV9BVFRSSUJV
VEVTOgotICAgICAgICBzZXRhdHRyKHB5dGVzdC5jb2xsZWN0LCBhdHRyLCBnZXRhdHRyKHB5dGVz
dCwgYXR0cikpCi0KLQotaWYgX1BZMjoKLSAgICAjIFdpdGhvdXQgdGhpcyB0aGUgdGVzdF9kdXBm
aWxlX29uX3RleHRpbyB3aWxsIGZhaWwsIG90aGVyd2lzZSBDYXB0dXJlSU8gY291bGQgZGlyZWN0
bHkgaW5oZXJpdCBmcm9tIFN0cmluZ0lPLgotICAgIGZyb20gcHkuaW8gaW1wb3J0IFRleHRJTwot
Ci0gICAgY2xhc3MgQ2FwdHVyZUlPKFRleHRJTyk6Ci0KLSAgICAgICAgQHByb3BlcnR5Ci0gICAg
ICAgIGRlZiBlbmNvZGluZyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYs
ICJfZW5jb2RpbmciLCAiVVRGLTgiKQorICAgIGRlZiBmaW5hbChmKTogICMgbm9xYTogRjgxMQor
ICAgICAgICByZXR1cm4gZgogCiAKK2lmIGdldGF0dHIoYXR0ciwgIl9fdmVyc2lvbl9pbmZvX18i
LCAoKSkgPj0gKDE5LCAyKToKKyAgICBBVFRSU19FUV9GSUVMRCA9ICJlcSIKIGVsc2U6Ci0gICAg
aW1wb3J0IGlvCi0KLSAgICBjbGFzcyBDYXB0dXJlSU8oaW8uVGV4dElPV3JhcHBlcik6Ci0KLSAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgc3VwZXIoQ2FwdHVyZUlPLCBz
ZWxmKS5fX2luaXRfXygKLSAgICAgICAgICAgICAgICBpby5CeXRlc0lPKCksIGVuY29kaW5nPSJV
VEYtOCIsIG5ld2xpbmU9IiIsIHdyaXRlX3Rocm91Z2g9VHJ1ZQotICAgICAgICAgICAgKQorICAg
IEFUVFJTX0VRX0ZJRUxEID0gImNtcCIKIAotICAgICAgICBkZWYgZ2V0dmFsdWUoc2VsZik6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIuZ2V0dmFsdWUoKS5kZWNvZGUoIlVURi04IikK
IAoraWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCk6CisgICAgZnJvbSBmdW5jdG9vbHMgaW1w
b3J0IGNhY2hlZF9wcm9wZXJ0eSBhcyBjYWNoZWRfcHJvcGVydHkKK2Vsc2U6CiAKLWNsYXNzIEZ1
bmNhcmduYW1lc0NvbXBhdEF0dHIob2JqZWN0KToKLSAgICAiIiIgaGVscGVyIGNsYXNzIHNvIHRo
YXQgTWV0YWZ1bmMsIEZ1bmN0aW9uIGFuZCBGaXh0dXJlUmVxdWVzdAotICAgIGRvbid0IG5lZWQg
dG8gZWFjaCBkZWZpbmUgdGhlICJmdW5jYXJnbmFtZXMiIGNvbXBhdGliaWxpdHkgYXR0cmlidXRl
LgotICAgICIiIgotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGZ1bmNhcmduYW1lcyhzZWxmKToK
LSAgICAgICAgIiIiIGFsaWFzIGF0dHJpYnV0ZSBmb3IgYGBmaXh0dXJlbmFtZXNgYCBmb3IgcHJl
LTIuMyBjb21wYXRpYmlsaXR5IiIiCi0gICAgICAgIHJldHVybiBzZWxmLmZpeHR1cmVuYW1lcwor
ICAgIGNsYXNzIGNhY2hlZF9wcm9wZXJ0eShHZW5lcmljW19TLCBfVF0pOgorICAgICAgICBfX3Ns
b3RzX18gPSAoImZ1bmMiLCAiX19kb2NfXyIpCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZ1bmM6IENhbGxhYmxlW1tfU10sIF9UXSkgLT4gTm9uZToKKyAgICAgICAgICAgIHNlbGYuZnVu
YyA9IGZ1bmMKKyAgICAgICAgICAgIHNlbGYuX19kb2NfXyA9IGZ1bmMuX19kb2NfXworCisgICAg
ICAgIEBvdmVybG9hZAorICAgICAgICBkZWYgX19nZXRfXygKKyAgICAgICAgICAgIHNlbGYsIGlu
c3RhbmNlOiBOb25lLCBvd25lcjogT3B0aW9uYWxbIlR5cGVbX1NdIl0gPSAuLi4KKyAgICAgICAg
KSAtPiAiY2FjaGVkX3Byb3BlcnR5W19TLCBfVF0iOgorICAgICAgICAgICAgLi4uCisKKyAgICAg
ICAgQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICAgICAgZGVmIF9fZ2V0X18oICAjIG5vcWE6
IEY4MTEKKyAgICAgICAgICAgIHNlbGYsIGluc3RhbmNlOiBfUywgb3duZXI6IE9wdGlvbmFsWyJU
eXBlW19TXSJdID0gLi4uCisgICAgICAgICkgLT4gX1Q6CisgICAgICAgICAgICAuLi4KKworICAg
ICAgICBkZWYgX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXI9Tm9uZSk6ICAjIG5vcWE6IEY4
MTEKKyAgICAgICAgICAgIGlmIGluc3RhbmNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYKKyAgICAgICAgICAgIHZhbHVlID0gaW5zdGFuY2UuX19kaWN0X19bc2VsZi5mdW5j
Ll9fbmFtZV9fXSA9IHNlbGYuZnVuYyhpbnN0YW5jZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZQorCisKKyMgU29tZXRpbWVzIGFuIGFsZ29yaXRobSBuZWVkcyBhIGRpY3Qgd2hpY2ggeWllbGRz
IGl0ZW1zIGluIHRoZSBvcmRlciBpbiB3aGljaAorIyB0aGV5IHdlcmUgaW5zZXJ0ZWQgd2hlbiBp
dGVyYXRlZC4gU2luY2UgUHl0aG9uIDMuNywgYGRpY3RgIHByZXNlcnZlcworIyBpbnNlcnRpb24g
b3JkZXIuIFNpbmNlIGBkaWN0YCBpcyBmYXN0ZXIgYW5kIHVzZXMgbGVzcyBtZW1vcnkgdGhhbgor
IyBgT3JkZXJlZERpY3RgLCBwcmVmZXIgdG8gdXNlIGl0IGlmIHBvc3NpYmxlLgoraWYgc3lzLnZl
cnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgb3JkZXJfcHJlc2VydmluZ19kaWN0ID0gZGljdAor
ZWxzZToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCisgICAgb3Jk
ZXJfcHJlc2VydmluZ19kaWN0ID0gT3JkZXJlZERpY3QKKworCisjIFBlcmZvcm0gZXhoYXVzdGl2
ZW5lc3MgY2hlY2tpbmcuCisjCisjIENvbnNpZGVyIHRoaXMgZXhhbXBsZToKKyMKKyMgICAgIE15
VW5pb24gPSBVbmlvbltpbnQsIHN0cl0KKyMKKyMgICAgIGRlZiBoYW5kbGUoeDogTXlVbmlvbikg
LT4gaW50IHsKKyMgICAgICAgICBpZiBpc2luc3RhbmNlKHgsIGludCk6CisjICAgICAgICAgICAg
IHJldHVybiAxCisjICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHgsIHN0cik6CisjICAgICAgICAg
ICAgIHJldHVybiAyCisjICAgICAgICAgZWxzZToKKyMgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCd1bnJlYWNoYWJsZScpCisjCisjIE5vdyBzdXBwb3NlIHdlIGFkZCBhIG5ldyB2YXJpYW50
OgorIworIyAgICAgTXlVbmlvbiA9IFVuaW9uW2ludCwgc3RyLCBieXRlc10KKyMKKyMgQWZ0ZXIg
ZG9pbmcgdGhpcywgd2UgbXVzdCByZW1lbWJlciBvdXJzZWx2ZXMgdG8gZ28gYW5kIHVwZGF0ZSB0
aGUgaGFuZGxlCisjIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgbmV3IHZhcmlhbnQuCisjCisjIFdp
dGggYGFzc2VydF9uZXZlcmAgd2UgY2FuIGRvIGJldHRlcjoKKyMKKyMgICAgIC8vIHJhaXNlIEV4
Y2VwdGlvbigndW5yZWFjaGFibGUnKQorIyAgICAgcmV0dXJuIGFzc2VydF9uZXZlcih4KQorIwor
IyBOb3csIGlmIHdlIGZvcmdldCB0byBoYW5kbGUgdGhlIG5ldyB2YXJpYW50LCB0aGUgdHlwZS1j
aGVja2VyIHdpbGwgZW1pdCBhCisjIGNvbXBpbGUtdGltZSBlcnJvciwgaW5zdGVhZCBvZiB0aGUg
cnVudGltZSBlcnJvciB3ZSB3b3VsZCBoYXZlIGdvdHRlbgorIyBwcmV2aW91c2x5LgorIworIyBU
aGlzIGFsc28gd29yayBmb3IgRW51bXMgKGlmIHlvdSB1c2UgYGlzYCB0byBjb21wYXJlKSBhbmQg
TGl0ZXJhbHMuCitkZWYgYXNzZXJ0X25ldmVyKHZhbHVlOiAiTm9SZXR1cm4iKSAtPiAiTm9SZXR1
cm4iOgorICAgIGFzc2VydCBGYWxzZSwgIlVuaGFuZGxlZCB2YWx1ZToge30gKHt9KSIuZm9ybWF0
KHZhbHVlLCB0eXBlKHZhbHVlKS5fX25hbWVfXykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L2NvbmZpZy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Nv
bmZpZy9fX2luaXRfXy5weQppbmRleCAxMTM0OGI4MGQwZjAuLmY4OWVkMzcwMjdiNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL19faW5pdF9fLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9fX2luaXRfXy5weQpAQCAtMSwxMTAgKzEsMjM4
IEBACi0iIiIgY29tbWFuZCBsaW5lIG9wdGlvbnMsIGluaS1maWxlIGFuZCBjb25mdGVzdC5weSBw
cm9jZXNzaW5nLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyIiIkNvbW1hbmQgbGluZSBvcHRpb25zLCBpbmktZmls
ZSBhbmQgY29uZnRlc3QucHkgcHJvY2Vzc2luZy4iIiIKIGltcG9ydCBhcmdwYXJzZQoraW1wb3J0
IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBjb3B5CitpbXBvcnQg
ZW51bQoraW1wb3J0IGluc3BlY3QKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc2hsZXgK
LWltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogaW1wb3J0IHdhcm5p
bmdzCi1pbXBvcnQgY29weQotaW1wb3J0IHNpeAorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGxydV9j
YWNoZQorZnJvbSB0eXBlcyBpbXBvcnQgVHJhY2ViYWNrVHlwZQorZnJvbSB0eXBpbmcgaW1wb3J0
IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgRGlj
dAorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IElPCitm
cm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgor
ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJv
bSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgU2V0Citmcm9tIHR5
cGluZyBpbXBvcnQgVGV4dElPCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5n
IGltcG9ydCBVbmlvbgorCitpbXBvcnQgYXR0cgogaW1wb3J0IHB5Citmcm9tIHBsdWdneSBpbXBv
cnQgSG9va2ltcGxNYXJrZXIKK2Zyb20gcGx1Z2d5IGltcG9ydCBIb29rc3BlY01hcmtlcgorZnJv
bSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIKIAotIyBET04ndCBpbXBvcnQgcHl0ZXN0IGhl
cmUgYmVjYXVzZSBpdCBjYXVzZXMgaW1wb3J0IGN5Y2xlIHRyb3VibGVzCi1pbXBvcnQgc3lzCi1p
bXBvcnQgb3MKK2ltcG9ydCBfcHl0ZXN0Ll9jb2RlCitpbXBvcnQgX3B5dGVzdC5kZXByZWNhdGVk
CitpbXBvcnQgX3B5dGVzdC5ob29rc3BlYworZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQgUHJpbnRI
ZWxwIGFzIFByaW50SGVscAorZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQgVXNhZ2VFcnJvciBhcyBV
c2FnZUVycm9yCitmcm9tIC5maW5kcGF0aHMgaW1wb3J0IGRldGVybWluZV9zZXR1cAorZnJvbSBf
cHl0ZXN0Ll9jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUgaW1w
b3J0IGZpbHRlcl90cmFjZWJhY2sKK2Zyb20gX3B5dGVzdC5faW8gaW1wb3J0IFRlcm1pbmFsV3Jp
dGVyCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgaW1wb3J0bGliX21ldGFkYXRhCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBU
WVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwKIGZyb20gX3B5
dGVzdC5vdXRjb21lcyBpbXBvcnQgU2tpcHBlZAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0
IGJlc3RyZWxwYXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgaW1wb3J0X3BhdGgKK2Zy
b20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBJbXBvcnRNb2RlCitmcm9tIF9weXRlc3QucGF0aGxp
YiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnN0b3JlIGltcG9ydCBTdG9yZQorZnJvbSBfcHl0
ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdENvbmZpZ1dhcm5pbmcKKworaWYgVFlQRV9D
SEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQorCisgICAgZnJvbSBfcHl0ZXN0
Ll9jb2RlLmNvZGUgaW1wb3J0IF9UcmFjZWJhY2tTdHlsZQorICAgIGZyb20gX3B5dGVzdC50ZXJt
aW5hbCBpbXBvcnQgVGVybWluYWxSZXBvcnRlcgorICAgIGZyb20gLmFyZ3BhcnNpbmcgaW1wb3J0
IEFyZ3VtZW50CisKKworX1BsdWdneVBsdWdpbiA9IG9iamVjdAorIiIiQSB0eXBlIHRvIHJlcHJl
c2VudCBwbHVnaW4gb2JqZWN0cy4KKworUGx1Z2lucyBjYW4gYmUgYW55IG5hbWVzcGFjZSwgc28g
d2UgY2FuJ3QgbmFycm93IGl0IGRvd24gbXVjaCwgYnV0IHdlIHVzZSBhbgorYWxpYXMgdG8gbWFr
ZSB0aGUgaW50ZW50IGNsZWFyLgorCitJZGVhbGx5IHRoaXMgdHlwZSB3b3VsZCBiZSBwcm92aWRl
ZCBieSBwbHVnZ3kgaXRzZWxmLgorIiIiCiAKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBvcnQg
X3B5dGVzdC5ob29rc3BlYyAgIyB0aGUgZXh0ZW5zaW9uIHBvaW50IGRlZmluaXRpb25zCi1pbXBv
cnQgX3B5dGVzdC5hc3NlcnRpb24KLWZyb20gcGx1Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBI
b29raW1wbE1hcmtlciwgSG9va3NwZWNNYXJrZXIKLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IHNhZmVfc3RyCi1mcm9tIC5leGNlcHRpb25zIGltcG9ydCBVc2FnZUVycm9yLCBQcmludEhlbHAK
LWZyb20gLmZpbmRwYXRocyBpbXBvcnQgZGV0ZXJtaW5lX3NldHVwLCBleGlzdHMKIAogaG9va2lt
cGwgPSBIb29raW1wbE1hcmtlcigicHl0ZXN0IikKIGhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIo
InB5dGVzdCIpCiAKLSMgcHl0ZXN0IHN0YXJ0dXAKLSMKIAorQGZpbmFsCitjbGFzcyBFeGl0Q29k
ZShlbnVtLkludEVudW0pOgorICAgICIiIkVuY29kZXMgdGhlIHZhbGlkIGV4aXQgY29kZXMgYnkg
cHl0ZXN0LgogCi1jbGFzcyBDb25mdGVzdEltcG9ydEZhaWx1cmUoRXhjZXB0aW9uKToKKyAgICBD
dXJyZW50bHkgdXNlcnMgYW5kIHBsdWdpbnMgbWF5IHN1cHBseSBvdGhlciBleGl0IGNvZGVzIGFz
IHdlbGwuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiA1LjAKKyAgICAiIiIKKworICAgICM6IFRl
c3RzIHBhc3NlZC4KKyAgICBPSyA9IDAKKyAgICAjOiBUZXN0cyBmYWlsZWQuCisgICAgVEVTVFNf
RkFJTEVEID0gMQorICAgICM6IHB5dGVzdCB3YXMgaW50ZXJydXB0ZWQuCisgICAgSU5URVJSVVBU
RUQgPSAyCisgICAgIzogQW4gaW50ZXJuYWwgZXJyb3IgZ290IGluIHRoZSB3YXkuCisgICAgSU5U
RVJOQUxfRVJST1IgPSAzCisgICAgIzogcHl0ZXN0IHdhcyBtaXN1c2VkLgorICAgIFVTQUdFX0VS
Uk9SID0gNAorICAgICM6IHB5dGVzdCBjb3VsZG4ndCBmaW5kIHRlc3RzLgorICAgIE5PX1RFU1RT
X0NPTExFQ1RFRCA9IDUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBleGNpbmZvKToK
LSAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIHBhdGgsIGV4Y2luZm8pCisKK2NsYXNz
IENvbmZ0ZXN0SW1wb3J0RmFpbHVyZShFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXygKKyAg
ICAgICAgc2VsZiwKKyAgICAgICAgcGF0aDogcHkucGF0aC5sb2NhbCwKKyAgICAgICAgZXhjaW5m
bzogVHVwbGVbIlR5cGVbRXhjZXB0aW9uXSIsIEV4Y2VwdGlvbiwgVHJhY2ViYWNrVHlwZV0sCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhdGgsIGV4Y2luZm8pCiAg
ICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgc2VsZi5leGNpbmZvID0gZXhjaW5mbwog
Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGV0eXBlLCBldmFsdWUsIGV0YiA9IHNl
bGYuZXhjaW5mbwotICAgICAgICBmb3JtYXR0ZWQgPSB0cmFjZWJhY2suZm9ybWF0X3RiKGV0YikK
LSAgICAgICAgIyBUaGUgbGV2ZWwgb2YgdGhlIHRyYWNlYmFja3Mgd2Ugd2FudCB0byBwcmludCBp
cyBoYW5kIGNyYWZ0ZWQgOigKLSAgICAgICAgcmV0dXJuIHJlcHIoZXZhbHVlKSArICJcbiIgKyAi
Ii5qb2luKGZvcm1hdHRlZFsyOl0pCisgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgorICAg
ICAgICByZXR1cm4gInt9OiB7fSAoZnJvbSB7fSkiLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYu
ZXhjaW5mb1swXS5fX25hbWVfXywgc2VsZi5leGNpbmZvWzFdLCBzZWxmLnBhdGgKKyAgICAgICAg
KQorCisKK2RlZiBmaWx0ZXJfdHJhY2ViYWNrX2Zvcl9jb25mdGVzdF9pbXBvcnRfZmFpbHVyZSgK
KyAgICBlbnRyeTogX3B5dGVzdC5fY29kZS5UcmFjZWJhY2tFbnRyeSwKKykgLT4gYm9vbDoKKyAg
ICAiIiJGaWx0ZXIgdHJhY2ViYWNrcyBlbnRyaWVzIHdoaWNoIHBvaW50IHRvIHB5dGVzdCBpbnRl
cm5hbHMgb3IgaW1wb3J0bGliLgorCisgICAgTWFrZSBhIHNwZWNpYWwgY2FzZSBmb3IgaW1wb3J0
bGliIGJlY2F1c2Ugd2UgdXNlIGl0IHRvIGltcG9ydCB0ZXN0IG1vZHVsZXMgYW5kIGNvbmZ0ZXN0
IGZpbGVzCisgICAgaW4gX3B5dGVzdC5wYXRobGliLmltcG9ydF9wYXRoLgorICAgICIiIgorICAg
IHJldHVybiBmaWx0ZXJfdHJhY2ViYWNrKGVudHJ5KSBhbmQgImltcG9ydGxpYiIgbm90IGluIHN0
cihlbnRyeS5wYXRoKS5zcGxpdChvcy5zZXApCiAKIAotZGVmIG1haW4oYXJncz1Ob25lLCBwbHVn
aW5zPU5vbmUpOgotICAgICIiIiByZXR1cm4gZXhpdCBjb2RlLCBhZnRlciBwZXJmb3JtaW5nIGFu
IGluLXByb2Nlc3MgdGVzdCBydW4uCitkZWYgbWFpbigKKyAgICBhcmdzOiBPcHRpb25hbFtVbmlv
bltMaXN0W3N0cl0sIHB5LnBhdGgubG9jYWxdXSA9IE5vbmUsCisgICAgcGx1Z2luczogT3B0aW9u
YWxbU2VxdWVuY2VbVW5pb25bc3RyLCBfUGx1Z2d5UGx1Z2luXV1dID0gTm9uZSwKKykgLT4gVW5p
b25baW50LCBFeGl0Q29kZV06CisgICAgIiIiUGVyZm9ybSBhbiBpbi1wcm9jZXNzIHRlc3QgcnVu
LgogCi0gICAgOmFyZyBhcmdzOiBsaXN0IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisgICAg
OnBhcmFtIGFyZ3M6IExpc3Qgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKyAgICA6cGFyYW0g
cGx1Z2luczogTGlzdCBvZiBwbHVnaW4gb2JqZWN0cyB0byBiZSBhdXRvLXJlZ2lzdGVyZWQgZHVy
aW5nIGluaXRpYWxpemF0aW9uLgogCi0gICAgOmFyZyBwbHVnaW5zOiBsaXN0IG9mIHBsdWdpbiBv
YmplY3RzIHRvIGJlIGF1dG8tcmVnaXN0ZXJlZCBkdXJpbmcKLSAgICAgICAgICAgICAgICAgIGlu
aXRpYWxpemF0aW9uLgorICAgIDpyZXR1cm5zOiBBbiBleGl0IGNvZGUuCiAgICAgIiIiCiAgICAg
dHJ5OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjb25maWcgPSBfcHJlcGFyZWNvbmZpZyhh
cmdzLCBwbHVnaW5zKQogICAgICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlIGFzIGU6
Ci0gICAgICAgICAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKHN5cy5zdGRlcnIpCi0gICAg
ICAgICAgICBmb3IgbGluZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqZS5leGNpbmZv
KToKKyAgICAgICAgICAgIGV4Y19pbmZvID0gRXhjZXB0aW9uSW5mbyhlLmV4Y2luZm8pCisgICAg
ICAgICAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKHN5cy5zdGRlcnIpCisgICAgICAgICAgICB0dy5s
aW5lKAorICAgICAgICAgICAgICAgICJJbXBvcnRFcnJvciB3aGlsZSBsb2FkaW5nIGNvbmZ0ZXN0
ICd7ZS5wYXRofScuIi5mb3JtYXQoZT1lKSwgcmVkPVRydWUKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIGV4Y19pbmZvLnRyYWNlYmFjayA9IGV4Y19pbmZvLnRyYWNlYmFjay5maWx0ZXIoCisg
ICAgICAgICAgICAgICAgZmlsdGVyX3RyYWNlYmFja19mb3JfY29uZnRlc3RfaW1wb3J0X2ZhaWx1
cmUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y19yZXByID0gKAorICAgICAgICAgICAg
ICAgIGV4Y19pbmZvLmdldHJlcHIoc3R5bGU9InNob3J0IiwgY2hhaW49RmFsc2UpCisgICAgICAg
ICAgICAgICAgaWYgZXhjX2luZm8udHJhY2ViYWNrCisgICAgICAgICAgICAgICAgZWxzZSBleGNf
aW5mby5leGNvbmx5KCkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvcm1hdHRlZF90YiA9
IHN0cihleGNfcmVwcikKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZvcm1hdHRlZF90Yi5zcGxp
dGxpbmVzKCk6CiAgICAgICAgICAgICAgICAgdHcubGluZShsaW5lLnJzdHJpcCgpLCByZWQ9VHJ1
ZSkKLSAgICAgICAgICAgIHR3LmxpbmUoIkVSUk9SOiBjb3VsZCBub3QgbG9hZCAlc1xuIiAlIChl
LnBhdGgsKSwgcmVkPVRydWUpCi0gICAgICAgICAgICByZXR1cm4gNAorICAgICAgICAgICAgcmV0
dXJuIEV4aXRDb2RlLlVTQUdFX0VSUk9SCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5ob29rLnB5dGVzdF9jbWRsaW5lX21haW4o
Y29uZmlnPWNvbmZpZykKKyAgICAgICAgICAgICAgICByZXQgPSBjb25maWcuaG9vay5weXRlc3Rf
Y21kbGluZV9tYWluKAorICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnCisgICAgICAg
ICAgICAgICAgKSAgIyB0eXBlOiBVbmlvbltFeGl0Q29kZSwgaW50XQorICAgICAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV4aXRDb2RlKHJldCkKKyAgICAgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
dAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBjb25maWcuX2Vuc3VyZV91
bmNvbmZpZ3VyZSgpCiAgICAgZXhjZXB0IFVzYWdlRXJyb3IgYXMgZToKLSAgICAgICAgdHcgPSBw
eS5pby5UZXJtaW5hbFdyaXRlcihzeXMuc3RkZXJyKQorICAgICAgICB0dyA9IFRlcm1pbmFsV3Jp
dGVyKHN5cy5zdGRlcnIpCiAgICAgICAgIGZvciBtc2cgaW4gZS5hcmdzOgogICAgICAgICAgICAg
dHcubGluZSgiRVJST1I6IHt9XG4iLmZvcm1hdChtc2cpLCByZWQ9VHJ1ZSkKLSAgICAgICAgcmV0
dXJuIDQKKyAgICAgICAgcmV0dXJuIEV4aXRDb2RlLlVTQUdFX0VSUk9SCiAKIAotY2xhc3MgY21k
bGluZShvYmplY3QpOiAgIyBOT1FBIGNvbXBhdGliaWxpdHkgbmFtZXNwYWNlCitkZWYgY29uc29s
ZV9tYWluKCkgLT4gaW50OgorICAgICIiIlRoZSBDTEkgZW50cnkgcG9pbnQgb2YgcHl0ZXN0Lgor
CisgICAgVGhpcyBmdW5jdGlvbiBpcyBub3QgbWVhbnQgZm9yIHByb2dyYW1tYWJsZSB1c2U7IHVz
ZSBgbWFpbigpYCBpbnN0ZWFkLgorICAgICIiIgorICAgICMgaHR0cHM6Ly9kb2NzLnB5dGhvbi5v
cmcvMy9saWJyYXJ5L3NpZ25hbC5odG1sI25vdGUtb24tc2lncGlwZQorICAgIHRyeToKKyAgICAg
ICAgY29kZSA9IG1haW4oKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcmV0
dXJuIGNvZGUKKyAgICBleGNlcHQgQnJva2VuUGlwZUVycm9yOgorICAgICAgICAjIFB5dGhvbiBm
bHVzaGVzIHN0YW5kYXJkIHN0cmVhbXMgb24gZXhpdDsgcmVkaXJlY3QgcmVtYWluaW5nIG91dHB1
dAorICAgICAgICAjIHRvIGRldm51bGwgdG8gYXZvaWQgYW5vdGhlciBCcm9rZW5QaXBlRXJyb3Ig
YXQgc2h1dGRvd24KKyAgICAgICAgZGV2bnVsbCA9IG9zLm9wZW4ob3MuZGV2bnVsbCwgb3MuT19X
Uk9OTFkpCisgICAgICAgIG9zLmR1cDIoZGV2bnVsbCwgc3lzLnN0ZG91dC5maWxlbm8oKSkKKyAg
ICAgICAgcmV0dXJuIDEgICMgUHl0aG9uIGV4aXRzIHdpdGggZXJyb3IgY29kZSAxIG9uIEVQSVBF
CisKKworY2xhc3MgY21kbGluZTogICMgY29tcGF0aWJpbGl0eSBuYW1lc3BhY2UKICAgICBtYWlu
ID0gc3RhdGljbWV0aG9kKG1haW4pCiAKIAotZGVmIGZpbGVuYW1lX2FyZyhwYXRoLCBvcHRuYW1l
KToKLSAgICAiIiIgQXJncGFyc2UgdHlwZSB2YWxpZGF0b3IgZm9yIGZpbGVuYW1lIGFyZ3VtZW50
cy4KK2RlZiBmaWxlbmFtZV9hcmcocGF0aDogc3RyLCBvcHRuYW1lOiBzdHIpIC0+IHN0cjoKKyAg
ICAiIiJBcmdwYXJzZSB0eXBlIHZhbGlkYXRvciBmb3IgZmlsZW5hbWUgYXJndW1lbnRzLgogCi0g
ICAgOnBhdGg6IHBhdGggb2YgZmlsZW5hbWUKLSAgICA6b3B0bmFtZTogbmFtZSBvZiB0aGUgb3B0
aW9uCisgICAgOnBhdGg6IFBhdGggb2YgZmlsZW5hbWUuCisgICAgOm9wdG5hbWU6IE5hbWUgb2Yg
dGhlIG9wdGlvbi4KICAgICAiIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgogICAgICAg
ICByYWlzZSBVc2FnZUVycm9yKCJ7fSBtdXN0IGJlIGEgZmlsZW5hbWUsIGdpdmVuOiB7fSIuZm9y
bWF0KG9wdG5hbWUsIHBhdGgpKQogICAgIHJldHVybiBwYXRoCiAKIAotZGVmIGRpcmVjdG9yeV9h
cmcocGF0aCwgb3B0bmFtZSk6CitkZWYgZGlyZWN0b3J5X2FyZyhwYXRoOiBzdHIsIG9wdG5hbWU6
IHN0cikgLT4gc3RyOgogICAgICIiIkFyZ3BhcnNlIHR5cGUgdmFsaWRhdG9yIGZvciBkaXJlY3Rv
cnkgYXJndW1lbnRzLgogCi0gICAgOnBhdGg6IHBhdGggb2YgZGlyZWN0b3J5Ci0gICAgOm9wdG5h
bWU6IG5hbWUgb2YgdGhlIG9wdGlvbgorICAgIDpwYXRoOiBQYXRoIG9mIGRpcmVjdG9yeS4KKyAg
ICA6b3B0bmFtZTogTmFtZSBvZiB0aGUgb3B0aW9uLgogICAgICIiIgogICAgIGlmIG5vdCBvcy5w
YXRoLmlzZGlyKHBhdGgpOgogICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJ7fSBtdXN0IGJlIGEg
ZGlyZWN0b3J5LCBnaXZlbjoge30iLmZvcm1hdChvcHRuYW1lLCBwYXRoKSkKICAgICByZXR1cm4g
cGF0aAogCiAKLWRlZmF1bHRfcGx1Z2lucyA9ICgKKyMgUGx1Z2lucyB0aGF0IGNhbm5vdCBiZSBk
aXNhYmxlZCB2aWEgIi1wIG5vOlgiIGN1cnJlbnRseS4KK2Vzc2VudGlhbF9wbHVnaW5zID0gKAog
ICAgICJtYXJrIiwKICAgICAibWFpbiIsCi0gICAgInRlcm1pbmFsIiwKICAgICAicnVubmVyIiwK
LSAgICAicHl0aG9uIiwKICAgICAiZml4dHVyZXMiLAorICAgICJoZWxwY29uZmlnIiwgICMgUHJv
dmlkZXMgLXAuCispCisKK2RlZmF1bHRfcGx1Z2lucyA9IGVzc2VudGlhbF9wbHVnaW5zICsgKAor
ICAgICJweXRob24iLAorICAgICJ0ZXJtaW5hbCIsCiAgICAgImRlYnVnZ2luZyIsCiAgICAgInVu
aXR0ZXN0IiwKICAgICAiY2FwdHVyZSIsCkBAIC0xMTMsMzcgKzI0MSw1MCBAQCBkZWZhdWx0X3Bs
dWdpbnMgPSAoCiAgICAgIm1vbmtleXBhdGNoIiwKICAgICAicmVjd2FybiIsCiAgICAgInBhc3Rl
YmluIiwKLSAgICAiaGVscGNvbmZpZyIsCiAgICAgIm5vc2UiLAogICAgICJhc3NlcnRpb24iLAog
ICAgICJqdW5pdHhtbCIsCi0gICAgInJlc3VsdGxvZyIsCiAgICAgImRvY3Rlc3QiLAogICAgICJj
YWNoZXByb3ZpZGVyIiwKICAgICAiZnJlZXplX3N1cHBvcnQiLAogICAgICJzZXR1cG9ubHkiLAog
ICAgICJzZXR1cHBsYW4iLAorICAgICJzdGVwd2lzZSIsCiAgICAgIndhcm5pbmdzIiwKICAgICAi
bG9nZ2luZyIsCisgICAgInJlcG9ydHMiLAorICAgICJmYXVsdGhhbmRsZXIiLAogKQogCi0KIGJ1
aWx0aW5fcGx1Z2lucyA9IHNldChkZWZhdWx0X3BsdWdpbnMpCiBidWlsdGluX3BsdWdpbnMuYWRk
KCJweXRlc3RlciIpCiAKIAotZGVmIGdldF9jb25maWcoKToKK2RlZiBnZXRfY29uZmlnKAorICAg
IGFyZ3M6IE9wdGlvbmFsW0xpc3Rbc3RyXV0gPSBOb25lLAorICAgIHBsdWdpbnM6IE9wdGlvbmFs
W1NlcXVlbmNlW1VuaW9uW3N0ciwgX1BsdWdneVBsdWdpbl1dXSA9IE5vbmUsCispIC0+ICJDb25m
aWciOgogICAgICMgc3Vic2VxdWVudCBjYWxscyB0byBtYWluIHdpbGwgY3JlYXRlIGEgZnJlc2gg
aW5zdGFuY2UKICAgICBwbHVnaW5tYW5hZ2VyID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCi0gICAg
Y29uZmlnID0gQ29uZmlnKHBsdWdpbm1hbmFnZXIpCisgICAgY29uZmlnID0gQ29uZmlnKAorICAg
ICAgICBwbHVnaW5tYW5hZ2VyLAorICAgICAgICBpbnZvY2F0aW9uX3BhcmFtcz1Db25maWcuSW52
b2NhdGlvblBhcmFtcygKKyAgICAgICAgICAgIGFyZ3M9YXJncyBvciAoKSwgcGx1Z2lucz1wbHVn
aW5zLCBkaXI9UGF0aC5jd2QoKSwKKyAgICAgICAgKSwKKyAgICApCisKKyAgICBpZiBhcmdzIGlz
IG5vdCBOb25lOgorICAgICAgICAjIEhhbmRsZSBhbnkgIi1wIG5vOnBsdWdpbiIgYXJncy4KKyAg
ICAgICAgcGx1Z2lubWFuYWdlci5jb25zaWRlcl9wcmVwYXJzZShhcmdzLCBleGNsdWRlX29ubHk9
VHJ1ZSkKKwogICAgIGZvciBzcGVjIGluIGRlZmF1bHRfcGx1Z2luczoKICAgICAgICAgcGx1Z2lu
bWFuYWdlci5pbXBvcnRfcGx1Z2luKHNwZWMpCisKICAgICByZXR1cm4gY29uZmlnCiAKIAotZGVm
IGdldF9wbHVnaW5fbWFuYWdlcigpOgotICAgICIiIgotICAgIE9idGFpbiBhIG5ldyBpbnN0YW5j
ZSBvZiB0aGUKK2RlZiBnZXRfcGx1Z2luX21hbmFnZXIoKSAtPiAiUHl0ZXN0UGx1Z2luTWFuYWdl
ciI6CisgICAgIiIiT2J0YWluIGEgbmV3IGluc3RhbmNlIG9mIHRoZQogICAgIDpweTpjbGFzczpg
X3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlcmAsIHdpdGggZGVmYXVsdCBwbHVnaW5z
CiAgICAgYWxyZWFkeSBsb2FkZWQuCiAKQEAgLTE1Myw2NiArMjk0LDc2IEBAIGRlZiBnZXRfcGx1
Z2luX21hbmFnZXIoKToKICAgICByZXR1cm4gZ2V0X2NvbmZpZygpLnBsdWdpbm1hbmFnZXIKIAog
Ci1kZWYgX3ByZXBhcmVjb25maWcoYXJncz1Ob25lLCBwbHVnaW5zPU5vbmUpOgotICAgIHdhcm5p
bmcgPSBOb25lCitkZWYgX3ByZXBhcmVjb25maWcoCisgICAgYXJnczogT3B0aW9uYWxbVW5pb25b
cHkucGF0aC5sb2NhbCwgTGlzdFtzdHJdXV0gPSBOb25lLAorICAgIHBsdWdpbnM6IE9wdGlvbmFs
W1NlcXVlbmNlW1VuaW9uW3N0ciwgX1BsdWdneVBsdWdpbl1dXSA9IE5vbmUsCispIC0+ICJDb25m
aWciOgogICAgIGlmIGFyZ3MgaXMgTm9uZToKICAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQog
ICAgIGVsaWYgaXNpbnN0YW5jZShhcmdzLCBweS5wYXRoLmxvY2FsKToKICAgICAgICAgYXJncyA9
IFtzdHIoYXJncyldCi0gICAgZWxpZiBub3QgaXNpbnN0YW5jZShhcmdzLCAodHVwbGUsIGxpc3Qp
KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgc3RyKToKLSAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIm5vdCBhIHN0cmluZyBvciBhcmd1bWVudCBsaXN0OiAlciIgJSAoYXJn
cywpKQotICAgICAgICBhcmdzID0gc2hsZXguc3BsaXQoYXJncywgcG9zaXg9c3lzLnBsYXRmb3Jt
ICE9ICJ3aW4zMiIpCi0gICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRlZAotCi0g
ICAgICAgIHdhcm5pbmcgPSBkZXByZWNhdGVkLk1BSU5fU1RSX0FSR1MKLSAgICBjb25maWcgPSBn
ZXRfY29uZmlnKCkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpOgorICAgICAg
ICBtc2cgPSAiYGFyZ3NgIHBhcmFtZXRlciBleHBlY3RlZCB0byBiZSBhIGxpc3Qgb2Ygc3RyaW5n
cywgZ290OiB7IXJ9ICh0eXBlOiB7fSkiCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cuZm9y
bWF0KGFyZ3MsIHR5cGUoYXJncykpKQorCisgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhhcmdzLCBw
bHVnaW5zKQogICAgIHBsdWdpbm1hbmFnZXIgPSBjb25maWcucGx1Z2lubWFuYWdlcgogICAgIHRy
eToKICAgICAgICAgaWYgcGx1Z2luczoKICAgICAgICAgICAgIGZvciBwbHVnaW4gaW4gcGx1Z2lu
czoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBsdWdpbiwgc2l4LnN0cmluZ190eXBl
cyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwbHVnaW4sIHN0cik6CiAgICAgICAg
ICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXIuY29uc2lkZXJfcGx1Z2luYXJnKHBsdWdpbikKICAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBwbHVnaW5tYW5hZ2VyLnJl
Z2lzdGVyKHBsdWdpbikKLSAgICAgICAgaWYgd2FybmluZzoKLSAgICAgICAgICAgIGNvbmZpZy53
YXJuKCJDMSIsIHdhcm5pbmcpCi0gICAgICAgIHJldHVybiBwbHVnaW5tYW5hZ2VyLmhvb2sucHl0
ZXN0X2NtZGxpbmVfcGFyc2UoCisgICAgICAgIGNvbmZpZyA9IHBsdWdpbm1hbmFnZXIuaG9vay5w
eXRlc3RfY21kbGluZV9wYXJzZSgKICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXI9cGx1Z2lubWFu
YWdlciwgYXJncz1hcmdzCiAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIGNvbmZpZwogICAgIGV4
Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICBjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3VyZSgp
CiAgICAgICAgIHJhaXNlCiAKIAorQGZpbmFsCiBjbGFzcyBQeXRlc3RQbHVnaW5NYW5hZ2VyKFBs
dWdpbk1hbmFnZXIpOgotICAgICIiIgotICAgIE92ZXJ3cml0ZXMgOnB5OmNsYXNzOmBwbHVnZ3ku
UGx1Z2luTWFuYWdlciA8cGx1Z2d5LlBsdWdpbk1hbmFnZXI+YCB0byBhZGQgcHl0ZXN0LXNwZWNp
ZmljCi0gICAgZnVuY3Rpb25hbGl0eToKKyAgICAiIiJBIDpweTpjbGFzczpgcGx1Z2d5LlBsdWdp
bk1hbmFnZXIgPHBsdWdneS5QbHVnaW5NYW5hZ2VyPmAgd2l0aAorICAgIGFkZGl0aW9uYWwgcHl0
ZXN0LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHk6CiAKLSAgICAqIGxvYWRpbmcgcGx1Z2lucyBmcm9t
IHRoZSBjb21tYW5kIGxpbmUsIGBgUFlURVNUX1BMVUdJTlNgYCBlbnYgdmFyaWFibGUgYW5kCi0g
ICAgICBgYHB5dGVzdF9wbHVnaW5zYGAgZ2xvYmFsIHZhcmlhYmxlcyBmb3VuZCBpbiBwbHVnaW5z
IGJlaW5nIGxvYWRlZDsKLSAgICAqIGBgY29uZnRlc3QucHlgYCBsb2FkaW5nIGR1cmluZyBzdGFy
dC11cDsKKyAgICAqIExvYWRpbmcgcGx1Z2lucyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGBgUFlU
RVNUX1BMVUdJTlNgYCBlbnYgdmFyaWFibGUgYW5kCisgICAgICBgYHB5dGVzdF9wbHVnaW5zYGAg
Z2xvYmFsIHZhcmlhYmxlcyBmb3VuZCBpbiBwbHVnaW5zIGJlaW5nIGxvYWRlZC4KKyAgICAqIGBg
Y29uZnRlc3QucHlgYCBsb2FkaW5nIGR1cmluZyBzdGFydC11cC4KICAgICAiIiIKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUHl0ZXN0UGx1Z2luTWFuYWdlciwgc2Vs
ZikuX19pbml0X18oInB5dGVzdCIpCi0gICAgICAgIHNlbGYuX2NvbmZ0ZXN0X3BsdWdpbnMgPSBz
ZXQoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBpbXBvcnQgX3B5
dGVzdC5hc3NlcnRpb24KKworICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJweXRlc3QiKQorICAg
ICAgICAjIFRoZSBvYmplY3RzIGFyZSBtb2R1bGUgb2JqZWN0cywgb25seSB1c2VkIGdlbmVyaWNh
bGx5LgorICAgICAgICBzZWxmLl9jb25mdGVzdF9wbHVnaW5zID0gc2V0KCkgICMgdHlwZTogU2V0
W3R5cGVzLk1vZHVsZVR5cGVdCiAKLSAgICAgICAgIyBzdGF0ZSByZWxhdGVkIHRvIGxvY2FsIGNv
bmZ0ZXN0IHBsdWdpbnMKLSAgICAgICAgc2VsZi5fcGF0aDJjb25mbW9kcyA9IHt9Ci0gICAgICAg
IHNlbGYuX2NvbmZ0ZXN0cGF0aDJtb2QgPSB7fQotICAgICAgICBzZWxmLl9jb25mY3V0ZGlyID0g
Tm9uZQorICAgICAgICAjIFN0YXRlIHJlbGF0ZWQgdG8gbG9jYWwgY29uZnRlc3QgcGx1Z2lucy4K
KyAgICAgICAgc2VsZi5fZGlycGF0aDJjb25mbW9kcyA9IHt9ICAjIHR5cGU6IERpY3RbcHkucGF0
aC5sb2NhbCwgTGlzdFt0eXBlcy5Nb2R1bGVUeXBlXV0KKyAgICAgICAgc2VsZi5fY29uZnRlc3Rw
YXRoMm1vZCA9IHt9ICAjIHR5cGU6IERpY3RbUGF0aCwgdHlwZXMuTW9kdWxlVHlwZV0KKyAgICAg
ICAgc2VsZi5fY29uZmN1dGRpciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbcHkucGF0aC5sb2Nh
bF0KICAgICAgICAgc2VsZi5fbm9jb25mdGVzdCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2R1cGxp
Y2F0ZXBhdGhzID0gc2V0KCkKKyAgICAgICAgc2VsZi5fZHVwbGljYXRlcGF0aHMgPSBzZXQoKSAg
IyB0eXBlOiBTZXRbcHkucGF0aC5sb2NhbF0KKworICAgICAgICAjIHBsdWdpbnMgdGhhdCB3ZXJl
IGV4cGxpY2l0bHkgc2tpcHBlZCB3aXRoIHB5dGVzdC5za2lwCisgICAgICAgICMgbGlzdCBvZiAo
bW9kdWxlIG5hbWUsIHNraXAgcmVhc29uKQorICAgICAgICAjIHByZXZpb3VzbHkgd2Ugd291bGQg
aXNzdWUgYSB3YXJuaW5nIHdoZW4gYSBwbHVnaW4gd2FzIHNraXBwZWQsIGJ1dAorICAgICAgICAj
IHNpbmNlIHdlIHJlZmFjdG9yZWQgd2FybmluZ3MgYXMgZmlyc3QgY2l0aXplbnMgb2YgQ29uZmln
LCB0aGV5IGFyZQorICAgICAgICAjIGp1c3Qgc3RvcmVkIGhlcmUgdG8gYmUgdXNlZCBsYXRlci4K
KyAgICAgICAgc2VsZi5za2lwcGVkX3BsdWdpbnMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0
ciwgc3RyXV0KIAogICAgICAgICBzZWxmLmFkZF9ob29rc3BlY3MoX3B5dGVzdC5ob29rc3BlYykK
ICAgICAgICAgc2VsZi5yZWdpc3RlcihzZWxmKQogICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgi
UFlURVNUX0RFQlVHIik6Ci0gICAgICAgICAgICBlcnIgPSBzeXMuc3RkZXJyCi0gICAgICAgICAg
ICBlbmNvZGluZyA9IGdldGF0dHIoZXJyLCAiZW5jb2RpbmciLCAidXRmOCIpCisgICAgICAgICAg
ICBlcnIgPSBzeXMuc3RkZXJyICAjIHR5cGU6IElPW3N0cl0KKyAgICAgICAgICAgIGVuY29kaW5n
ID0gZ2V0YXR0cihlcnIsICJlbmNvZGluZyIsICJ1dGY4IikgICMgdHlwZTogc3RyCiAgICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXJyID0gcHkuaW8uZHVwZmlsZShlcnIsIGVuY29k
aW5nPWVuY29kaW5nKQorICAgICAgICAgICAgICAgIGVyciA9IG9wZW4oCisgICAgICAgICAgICAg
ICAgICAgIG9zLmR1cChlcnIuZmlsZW5vKCkpLCBtb2RlPWVyci5tb2RlLCBidWZmZXJpbmc9MSwg
ZW5jb2Rpbmc9ZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLnRyYWNl
LnJvb3Quc2V0d3JpdGVyKGVyci53cml0ZSkKQEAgLTIyMCw3MSArMzcxLDY5IEBAIGNsYXNzIFB5
dGVzdFBsdWdpbk1hbmFnZXIoUGx1Z2luTWFuYWdlcik6CiAKICAgICAgICAgIyBDb25maWcuX2Nv
bnNpZGVyX2ltcG9ydGhvb2sgd2lsbCBzZXQgYSByZWFsIG9iamVjdCBpZiByZXF1aXJlZC4KICAg
ICAgICAgc2VsZi5yZXdyaXRlX2hvb2sgPSBfcHl0ZXN0LmFzc2VydGlvbi5EdW1teVJld3JpdGVI
b29rKCkKLSAgICAgICAgIyBVc2VkIHRvIGtub3cgd2hlbiB3ZSBhcmUgaW1wb3J0aW5nIGNvbmZ0
ZXN0cyBhZnRlciB0aGUgcHl0ZXN0X2NvbmZpZ3VyZSBzdGFnZQorICAgICAgICAjIFVzZWQgdG8g
a25vdyB3aGVuIHdlIGFyZSBpbXBvcnRpbmcgY29uZnRlc3RzIGFmdGVyIHRoZSBweXRlc3RfY29u
ZmlndXJlIHN0YWdlLgogICAgICAgICBzZWxmLl9jb25maWd1cmVkID0gRmFsc2UKIAotICAgIGRl
ZiBhZGRob29rcyhzZWxmLCBtb2R1bGVfb3JfY2xhc3MpOgotICAgICAgICAiIiIKLSAgICAgICAg
Li4gZGVwcmVjYXRlZDo6IDIuOAotCi0gICAgICAgIFVzZSA6cHk6bWV0aDpgcGx1Z2d5LlBsdWdp
bk1hbmFnZXIuYWRkX2hvb2tzcGVjcyA8UGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNzPmAKLSAg
ICAgICAgaW5zdGVhZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmcgPSBkaWN0KAotICAg
ICAgICAgICAgY29kZT0iSTIiLAotICAgICAgICAgICAgZnNsb2NhdGlvbj1fcHl0ZXN0Ll9jb2Rl
LmdldGZzbGluZW5vKHN5cy5fZ2V0ZnJhbWUoMSkpLAotICAgICAgICAgICAgbm9kZWlkPU5vbmUs
Ci0gICAgICAgICAgICBtZXNzYWdlPSJ1c2UgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzIGlu
c3RlYWQgb2YgIgotICAgICAgICAgICAgImRlcHJlY2F0ZWQgYWRkaG9va3MoKSBtZXRob2QuIiwK
LSAgICAgICAgKQotICAgICAgICBzZWxmLl93YXJuKHdhcm5pbmcpCi0gICAgICAgIHJldHVybiBz
ZWxmLmFkZF9ob29rc3BlY3MobW9kdWxlX29yX2NsYXNzKQotCi0gICAgZGVmIHBhcnNlX2hvb2tp
bXBsX29wdHMoc2VsZiwgcGx1Z2luLCBuYW1lKToKLSAgICAgICAgIyBweXRlc3QgaG9va3MgYXJl
IGFsd2F5cyBwcmVmaXhlZCB3aXRoIHB5dGVzdF8KKyAgICBkZWYgcGFyc2VfaG9va2ltcGxfb3B0
cyhzZWxmLCBwbHVnaW46IF9QbHVnZ3lQbHVnaW4sIG5hbWU6IHN0cik6CisgICAgICAgICMgcHl0
ZXN0IGhvb2tzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAicHl0ZXN0XyIsCiAgICAgICAgICMg
c28gd2UgYXZvaWQgYWNjZXNzaW5nIHBvc3NpYmx5IG5vbi1yZWFkYWJsZSBhdHRyaWJ1dGVzCi0g
ICAgICAgICMgKHNlZSBpc3N1ZSAjMTA3MykKKyAgICAgICAgIyAoc2VlIGlzc3VlICMxMDczKS4K
ICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0XyIpOgogICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgICMgaWdub3JlIHNvbWUgaGlzdG9yaWMgc3BlY2lhbCBuYW1lcyB3aGlj
aCBjYW4gbm90IGJlIGhvb2tzIGFueXdheQotICAgICAgICBpZiBuYW1lID09ICJweXRlc3RfcGx1
Z2lucyIgb3IgbmFtZS5zdGFydHN3aXRoKCJweXRlc3RfZnVuY2FyZ19fIik6CisgICAgICAgICMg
SWdub3JlIG5hbWVzIHdoaWNoIGNhbiBub3QgYmUgaG9va3MuCisgICAgICAgIGlmIG5hbWUgPT0g
InB5dGVzdF9wbHVnaW5zIjoKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIG1ldGhvZCA9
IGdldGF0dHIocGx1Z2luLCBuYW1lKQotICAgICAgICBvcHRzID0gc3VwZXIoUHl0ZXN0UGx1Z2lu
TWFuYWdlciwgc2VsZikucGFyc2VfaG9va2ltcGxfb3B0cyhwbHVnaW4sIG5hbWUpCisgICAgICAg
IG9wdHMgPSBzdXBlcigpLnBhcnNlX2hvb2tpbXBsX29wdHMocGx1Z2luLCBuYW1lKQorCisgICAg
ICAgICMgQ29uc2lkZXIgb25seSBhY3R1YWwgZnVuY3Rpb25zIGZvciBob29rcyAoIzM3NzUpLgor
ICAgICAgICBpZiBub3QgaW5zcGVjdC5pc3JvdXRpbmUobWV0aG9kKToKKyAgICAgICAgICAgIHJl
dHVybgogCi0gICAgICAgICMgY29sbGVjdCB1bm1hcmtlZCBob29rcyBhcyBsb25nIGFzIHRoZXkg
aGF2ZSB0aGUgYHB5dGVzdF8nIHByZWZpeAorICAgICAgICAjIENvbGxlY3QgdW5tYXJrZWQgaG9v
a3MgYXMgbG9uZyBhcyB0aGV5IGhhdmUgdGhlIGBweXRlc3RfJyBwcmVmaXguCiAgICAgICAgIGlm
IG9wdHMgaXMgTm9uZSBhbmQgbmFtZS5zdGFydHN3aXRoKCJweXRlc3RfIik6CiAgICAgICAgICAg
ICBvcHRzID0ge30KLQogICAgICAgICBpZiBvcHRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
IyBUT0RPOiBEZXByZWNhdGlvbldhcm5pbmcsIHBlb3BsZSBzaG91bGQgdXNlIGhvb2tpbXBsCisg
ICAgICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NDU2MgorICAgICAgICAgICAga25vd25fbWFya3MgPSB7bS5uYW1lIGZvciBtIGluIGdldGF0dHIo
bWV0aG9kLCAicHl0ZXN0bWFyayIsIFtdKX0KKwogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJ0
cnlmaXJzdCIsICJ0cnlsYXN0IiwgIm9wdGlvbmFsaG9vayIsICJob29rd3JhcHBlciIpOgotICAg
ICAgICAgICAgICAgIG9wdHMuc2V0ZGVmYXVsdChuYW1lLCBoYXNhdHRyKG1ldGhvZCwgbmFtZSkp
CisgICAgICAgICAgICAgICAgb3B0cy5zZXRkZWZhdWx0KG5hbWUsIGhhc2F0dHIobWV0aG9kLCBu
YW1lKSBvciBuYW1lIGluIGtub3duX21hcmtzKQogICAgICAgICByZXR1cm4gb3B0cwogCi0gICAg
ZGVmIHBhcnNlX2hvb2tzcGVjX29wdHMoc2VsZiwgbW9kdWxlX29yX2NsYXNzLCBuYW1lKToKLSAg
ICAgICAgb3B0cyA9IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLnBhcnNlX2hvb2tz
cGVjX29wdHMoCi0gICAgICAgICAgICBtb2R1bGVfb3JfY2xhc3MsIG5hbWUKLSAgICAgICAgKQor
ICAgIGRlZiBwYXJzZV9ob29rc3BlY19vcHRzKHNlbGYsIG1vZHVsZV9vcl9jbGFzcywgbmFtZTog
c3RyKToKKyAgICAgICAgb3B0cyA9IHN1cGVyKCkucGFyc2VfaG9va3NwZWNfb3B0cyhtb2R1bGVf
b3JfY2xhc3MsIG5hbWUpCiAgICAgICAgIGlmIG9wdHMgaXMgTm9uZToKICAgICAgICAgICAgIG1l
dGhvZCA9IGdldGF0dHIobW9kdWxlX29yX2NsYXNzLCBuYW1lKQorCiAgICAgICAgICAgICBpZiBu
YW1lLnN0YXJ0c3dpdGgoInB5dGVzdF8iKToKKyAgICAgICAgICAgICAgICAjIHRvZG86IGRlcHJl
Y2F0ZSBob29rc3BlYyBoYWNrcworICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTYyCisgICAgICAgICAgICAgICAga25vd25fbWFy
a3MgPSB7bS5uYW1lIGZvciBtIGluIGdldGF0dHIobWV0aG9kLCAicHl0ZXN0bWFyayIsIFtdKX0K
ICAgICAgICAgICAgICAgICBvcHRzID0gewotICAgICAgICAgICAgICAgICAgICAiZmlyc3RyZXN1
bHQiOiBoYXNhdHRyKG1ldGhvZCwgImZpcnN0cmVzdWx0IiksCi0gICAgICAgICAgICAgICAgICAg
ICJoaXN0b3JpYyI6IGhhc2F0dHIobWV0aG9kLCAiaGlzdG9yaWMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgImZpcnN0cmVzdWx0IjogaGFzYXR0cihtZXRob2QsICJmaXJzdHJlc3VsdCIpCisgICAg
ICAgICAgICAgICAgICAgIG9yICJmaXJzdHJlc3VsdCIgaW4ga25vd25fbWFya3MsCisgICAgICAg
ICAgICAgICAgICAgICJoaXN0b3JpYyI6IGhhc2F0dHIobWV0aG9kLCAiaGlzdG9yaWMiKQorICAg
ICAgICAgICAgICAgICAgICBvciAiaGlzdG9yaWMiIGluIGtub3duX21hcmtzLAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG9wdHMKIAotICAgIGRlZiByZWdpc3RlcihzZWxmLCBw
bHVnaW4sIG5hbWU9Tm9uZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gWyJweXRlc3RfY2F0Y2hsb2ci
LCAicHl0ZXN0X2NhcHR1cmVsb2ciXToKLSAgICAgICAgICAgIHNlbGYuX3dhcm4oCi0gICAgICAg
ICAgICAgICAgInt9IHBsdWdpbiBoYXMgYmVlbiBtZXJnZWQgaW50byB0aGUgY29yZSwgIgotICAg
ICAgICAgICAgICAgICJwbGVhc2UgcmVtb3ZlIGl0IGZyb20geW91ciByZXF1aXJlbWVudHMuIi5m
b3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIG5hbWUucmVwbGFjZSgiXyIsICItIikKKyAgICBk
ZWYgcmVnaXN0ZXIoCisgICAgICAgIHNlbGYsIHBsdWdpbjogX1BsdWdneVBsdWdpbiwgbmFtZTog
T3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICApIC0+IE9wdGlvbmFsW3N0cl06CisgICAgICAgIGlm
IG5hbWUgaW4gX3B5dGVzdC5kZXByZWNhdGVkLkRFUFJFQ0FURURfRVhURVJOQUxfUExVR0lOUzoK
KyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgUHl0ZXN0Q29uZmln
V2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgInt9IHBsdWdpbiBoYXMgYmVlbiBtZXJnZWQg
aW50byB0aGUgY29yZSwgIgorICAgICAgICAgICAgICAgICAgICAicGxlYXNlIHJlbW92ZSBpdCBm
cm9tIHlvdXIgcmVxdWlyZW1lbnRzLiIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZS5yZXBsYWNlKCJfIiwgIi0iKQorICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg
ICAgICAgKQogICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHJldCA9
IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLnJlZ2lzdGVyKHBsdWdpbiwgbmFtZSkK
KyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldCA9IHN1cGVyKCkucmVnaXN0ZXIo
cGx1Z2luLCBuYW1lKSAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCiAgICAgICAgIGlmIHJldDoKICAg
ICAgICAgICAgIHNlbGYuaG9vay5weXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQuY2FsbF9oaXN0b3Jp
YygKICAgICAgICAgICAgICAgICBrd2FyZ3M9ZGljdChwbHVnaW49cGx1Z2luLCBtYW5hZ2VyPXNl
bGYpCkBAIC0yOTQsMTcgKzQ0MywxOSBAQCBjbGFzcyBQeXRlc3RQbHVnaW5NYW5hZ2VyKFBsdWdp
bk1hbmFnZXIpOgogICAgICAgICAgICAgICAgIHNlbGYuY29uc2lkZXJfbW9kdWxlKHBsdWdpbikK
ICAgICAgICAgcmV0dXJuIHJldAogCi0gICAgZGVmIGdldHBsdWdpbihzZWxmLCBuYW1lKToKLSAg
ICAgICAgIyBzdXBwb3J0IGRlcHJlY2F0ZWQgbmFtaW5nIGJlY2F1c2UgcGx1Z2lucyAoeGRpc3Qg
ZS5nLikgdXNlIGl0Ci0gICAgICAgIHJldHVybiBzZWxmLmdldF9wbHVnaW4obmFtZSkKKyAgICBk
ZWYgZ2V0cGx1Z2luKHNlbGYsIG5hbWU6IHN0cik6CisgICAgICAgICMgU3VwcG9ydCBkZXByZWNh
dGVkIG5hbWluZyBiZWNhdXNlIHBsdWdpbnMgKHhkaXN0IGUuZy4pIHVzZSBpdC4KKyAgICAgICAg
cGx1Z2luID0gc2VsZi5nZXRfcGx1Z2luKG5hbWUpICAjIHR5cGU6IE9wdGlvbmFsW19QbHVnZ3lQ
bHVnaW5dCisgICAgICAgIHJldHVybiBwbHVnaW4KIAotICAgIGRlZiBoYXNwbHVnaW4oc2VsZiwg
bmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBwbHVnaW4gd2l0aCB0aGUgZ2l2
ZW4gbmFtZSBpcyByZWdpc3RlcmVkLiIiIgorICAgIGRlZiBoYXNwbHVnaW4oc2VsZiwgbmFtZTog
c3RyKSAtPiBib29sOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBhIHBsdWdpbiB3aXRoIHRo
ZSBnaXZlbiBuYW1lIGlzIHJlZ2lzdGVyZWQuIiIiCiAgICAgICAgIHJldHVybiBib29sKHNlbGYu
Z2V0X3BsdWdpbihuYW1lKSkKIAotICAgIGRlZiBweXRlc3RfY29uZmlndXJlKHNlbGYsIGNvbmZp
Zyk6CisgICAgZGVmIHB5dGVzdF9jb25maWd1cmUoc2VsZiwgY29uZmlnOiAiQ29uZmlnIikgLT4g
Tm9uZToKKyAgICAgICAgIiIiOm1ldGEgcHJpdmF0ZToiIiIKICAgICAgICAgIyBYWFggbm93IHRo
YXQgdGhlIHBsdWdpbm1hbmFnZXIgZXhwb3NlcyBob29raW1wbCh0cnlmaXJzdC4uLikKLSAgICAg
ICAgIyB3ZSBzaG91bGQgcmVtb3ZlIHRyeWZpcnN0L3RyeWxhc3QgYXMgbWFya2VycworICAgICAg
ICAjIHdlIHNob3VsZCByZW1vdmUgdHJ5Zmlyc3QvdHJ5bGFzdCBhcyBtYXJrZXJzLgogICAgICAg
ICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgKICAgICAgICAgICAgICJtYXJrZXJzIiwKICAgICAg
ICAgICAgICJ0cnlmaXJzdDogbWFyayBhIGhvb2sgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gc3Vj
aCB0aGF0IHRoZSAiCkBAIC0zMTcsNzcgKzQ2OCw4MCBAQCBjbGFzcyBQeXRlc3RQbHVnaW5NYW5h
Z2VyKFBsdWdpbk1hbmFnZXIpOgogICAgICAgICApCiAgICAgICAgIHNlbGYuX2NvbmZpZ3VyZWQg
PSBUcnVlCiAKLSAgICBkZWYgX3dhcm4oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIGt3YXJncyA9
IG1lc3NhZ2UgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBkaWN0KSBlbHNlIHsKLSAgICAgICAgICAg
ICJjb2RlIjogIkkxIiwgIm1lc3NhZ2UiOiBtZXNzYWdlLCAiZnNsb2NhdGlvbiI6IE5vbmUsICJu
b2RlaWQiOiBOb25lCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9sb2d3YXJu
aW5nLmNhbGxfaGlzdG9yaWMoa3dhcmdzPWt3YXJncykKLQogICAgICMKLSAgICAjIGludGVybmFs
IEFQSSBmb3IgbG9jYWwgY29uZnRlc3QgcGx1Z2luIGhhbmRsaW5nCisgICAgIyBJbnRlcm5hbCBB
UEkgZm9yIGxvY2FsIGNvbmZ0ZXN0IHBsdWdpbiBoYW5kbGluZy4KICAgICAjCi0gICAgZGVmIF9z
ZXRfaW5pdGlhbF9jb25mdGVzdHMoc2VsZiwgbmFtZXNwYWNlKToKLSAgICAgICAgIiIiIGxvYWQg
aW5pdGlhbCBjb25mdGVzdCBmaWxlcyBnaXZlbiBhIHByZXBhcnNlZCAibmFtZXNwYWNlIi4KLSAg
ICAgICAgICAgIEFzIGNvbmZ0ZXN0IGZpbGVzIG1heSBhZGQgdGhlaXIgb3duIGNvbW1hbmQgbGlu
ZSBvcHRpb25zCi0gICAgICAgICAgICB3aGljaCBoYXZlIGFyZ3VtZW50cyAoJy0tbXktb3B0IHNv
bWVwYXRoJykgd2UgbWlnaHQgZ2V0IHNvbWUKLSAgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcy4g
IEFsbCBidWlsdGluIGFuZCAzcmQgcGFydHkgcGx1Z2lucyB3aWxsIGhhdmUKLSAgICAgICAgICAg
IGJlZW4gbG9hZGVkLCBob3dldmVyLCBzbyBjb21tb24gb3B0aW9ucyB3aWxsIG5vdCBjb25mdXNl
IG91ciBsb2dpYwotICAgICAgICAgICAgaGVyZS4KKyAgICBkZWYgX3NldF9pbml0aWFsX2NvbmZ0
ZXN0cyhzZWxmLCBuYW1lc3BhY2U6IGFyZ3BhcnNlLk5hbWVzcGFjZSkgLT4gTm9uZToKKyAgICAg
ICAgIiIiTG9hZCBpbml0aWFsIGNvbmZ0ZXN0IGZpbGVzIGdpdmVuIGEgcHJlcGFyc2VkICJuYW1l
c3BhY2UiLgorCisgICAgICAgIEFzIGNvbmZ0ZXN0IGZpbGVzIG1heSBhZGQgdGhlaXIgb3duIGNv
bW1hbmQgbGluZSBvcHRpb25zIHdoaWNoIGhhdmUKKyAgICAgICAgYXJndW1lbnRzICgnLS1teS1v
cHQgc29tZXBhdGgnKSB3ZSBtaWdodCBnZXQgc29tZSBmYWxzZSBwb3NpdGl2ZXMuCisgICAgICAg
IEFsbCBidWlsdGluIGFuZCAzcmQgcGFydHkgcGx1Z2lucyB3aWxsIGhhdmUgYmVlbiBsb2FkZWQs
IGhvd2V2ZXIsIHNvCisgICAgICAgIGNvbW1vbiBvcHRpb25zIHdpbGwgbm90IGNvbmZ1c2Ugb3Vy
IGxvZ2ljIGhlcmUuCiAgICAgICAgICIiIgogICAgICAgICBjdXJyZW50ID0gcHkucGF0aC5sb2Nh
bCgpCi0gICAgICAgIHNlbGYuX2NvbmZjdXRkaXIgPSBjdXJyZW50LmpvaW4oCi0gICAgICAgICAg
ICBuYW1lc3BhY2UuY29uZmN1dGRpciwgYWJzPVRydWUKLSAgICAgICAgKSBpZiBuYW1lc3BhY2Uu
Y29uZmN1dGRpciBlbHNlIE5vbmUKKyAgICAgICAgc2VsZi5fY29uZmN1dGRpciA9ICgKKyAgICAg
ICAgICAgIGN1cnJlbnQuam9pbihuYW1lc3BhY2UuY29uZmN1dGRpciwgYWJzPVRydWUpCisgICAg
ICAgICAgICBpZiBuYW1lc3BhY2UuY29uZmN1dGRpcgorICAgICAgICAgICAgZWxzZSBOb25lCisg
ICAgICAgICkKICAgICAgICAgc2VsZi5fbm9jb25mdGVzdCA9IG5hbWVzcGFjZS5ub2NvbmZ0ZXN0
CisgICAgICAgIHNlbGYuX3VzaW5nX3B5YXJncyA9IG5hbWVzcGFjZS5weWFyZ3MKICAgICAgICAg
dGVzdHBhdGhzID0gbmFtZXNwYWNlLmZpbGVfb3JfZGlyCiAgICAgICAgIGZvdW5kYW5jaG9yID0g
RmFsc2UKLSAgICAgICAgZm9yIHBhdGggaW4gdGVzdHBhdGhzOgotICAgICAgICAgICAgcGF0aCA9
IHN0cihwYXRoKQorICAgICAgICBmb3IgdGVzdHBhdGggaW4gdGVzdHBhdGhzOgorICAgICAgICAg
ICAgcGF0aCA9IHN0cih0ZXN0cGF0aCkKICAgICAgICAgICAgICMgcmVtb3ZlIG5vZGUtaWQgc3lu
dGF4CiAgICAgICAgICAgICBpID0gcGF0aC5maW5kKCI6OiIpCiAgICAgICAgICAgICBpZiBpICE9
IC0xOgogICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzppXQogICAgICAgICAgICAgYW5jaG9y
ID0gY3VycmVudC5qb2luKHBhdGgsIGFicz0xKQotICAgICAgICAgICAgaWYgZXhpc3RzKGFuY2hv
cik6ICAjIHdlIGZvdW5kIHNvbWUgZmlsZSBvYmplY3QKLSAgICAgICAgICAgICAgICBzZWxmLl90
cnlfbG9hZF9jb25mdGVzdChhbmNob3IpCisgICAgICAgICAgICBpZiBhbmNob3IuZXhpc3RzKCk6
ICAjIHdlIGZvdW5kIHNvbWUgZmlsZSBvYmplY3QKKyAgICAgICAgICAgICAgICBzZWxmLl90cnlf
bG9hZF9jb25mdGVzdChhbmNob3IsIG5hbWVzcGFjZS5pbXBvcnRtb2RlKQogICAgICAgICAgICAg
ICAgIGZvdW5kYW5jaG9yID0gVHJ1ZQogICAgICAgICBpZiBub3QgZm91bmRhbmNob3I6Ci0gICAg
ICAgICAgICBzZWxmLl90cnlfbG9hZF9jb25mdGVzdChjdXJyZW50KQorICAgICAgICAgICAgc2Vs
Zi5fdHJ5X2xvYWRfY29uZnRlc3QoY3VycmVudCwgbmFtZXNwYWNlLmltcG9ydG1vZGUpCiAKLSAg
ICBkZWYgX3RyeV9sb2FkX2NvbmZ0ZXN0KHNlbGYsIGFuY2hvcik6Ci0gICAgICAgIHNlbGYuX2dl
dGNvbmZ0ZXN0bW9kdWxlcyhhbmNob3IpCisgICAgZGVmIF90cnlfbG9hZF9jb25mdGVzdCgKKyAg
ICAgICAgc2VsZiwgYW5jaG9yOiBweS5wYXRoLmxvY2FsLCBpbXBvcnRtb2RlOiBVbmlvbltzdHIs
IEltcG9ydE1vZGVdCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9nZXRjb25mdGVzdG1v
ZHVsZXMoYW5jaG9yLCBpbXBvcnRtb2RlKQogICAgICAgICAjIGxldCdzIGFsc28gY29uc2lkZXIg
dGVzdCogc3ViZGlycwogICAgICAgICBpZiBhbmNob3IuY2hlY2soZGlyPTEpOgogICAgICAgICAg
ICAgZm9yIHggaW4gYW5jaG9yLmxpc3RkaXIoInRlc3QqIik6CiAgICAgICAgICAgICAgICAgaWYg
eC5jaGVjayhkaXI9MSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldGNvbmZ0ZXN0bW9k
dWxlcyh4KQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRjb25mdGVzdG1vZHVsZXMoeCwg
aW1wb3J0bW9kZSkKIAotICAgIGRlZiBfZ2V0Y29uZnRlc3Rtb2R1bGVzKHNlbGYsIHBhdGgpOgor
ICAgIEBscnVfY2FjaGUobWF4c2l6ZT0xMjgpCisgICAgZGVmIF9nZXRjb25mdGVzdG1vZHVsZXMo
CisgICAgICAgIHNlbGYsIHBhdGg6IHB5LnBhdGgubG9jYWwsIGltcG9ydG1vZGU6IFVuaW9uW3N0
ciwgSW1wb3J0TW9kZV0sCisgICAgKSAtPiBMaXN0W3R5cGVzLk1vZHVsZVR5cGVdOgogICAgICAg
ICBpZiBzZWxmLl9ub2NvbmZ0ZXN0OgogICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoMmNvbmZtb2RzW3BhdGhdCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGlmIHBhdGguaXNmaWxlKCk6Ci0gICAgICAg
ICAgICAgICAgY2xpc3QgPSBzZWxmLl9nZXRjb25mdGVzdG1vZHVsZXMocGF0aC5kaXJwYXRoKCkp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgWFhYIHRoZXNlIGRheXMgd2Ug
bWF5IHJhdGhlciB3YW50IHRvIHVzZSBjb25maWcucm9vdGRpcgotICAgICAgICAgICAgICAgICMg
YW5kIGFsbG93IHVzZXJzIHRvIG9wdCBpbnRvIGxvb2tpbmcgaW50byB0aGUgcm9vdGRpciBwYXJl
bnQKLSAgICAgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRv
IHNwZWNpZnkgY29uZmN1dGRpcgotICAgICAgICAgICAgICAgIGNsaXN0ID0gW10KLSAgICAgICAg
ICAgICAgICBmb3IgcGFyZW50IGluIHBhdGgucGFydHMoKToKLSAgICAgICAgICAgICAgICAgICAg
aWYgc2VsZi5fY29uZmN1dGRpciBhbmQgc2VsZi5fY29uZmN1dGRpci5yZWx0byhwYXJlbnQpOgot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgY29u
ZnRlc3RwYXRoID0gcGFyZW50LmpvaW4oImNvbmZ0ZXN0LnB5IikKLSAgICAgICAgICAgICAgICAg
ICAgaWYgY29uZnRlc3RwYXRoLmlzZmlsZSgpOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9k
ID0gc2VsZi5faW1wb3J0Y29uZnRlc3QoY29uZnRlc3RwYXRoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpc3QuYXBwZW5kKG1vZCkKLQotICAgICAgICAgICAgc2VsZi5fcGF0aDJjb25mbW9k
c1twYXRoXSA9IGNsaXN0Ci0gICAgICAgICAgICByZXR1cm4gY2xpc3QKLQotICAgIGRlZiBfcmdl
dF93aXRoX2NvbmZtb2Qoc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgIG1vZHVsZXMgPSBzZWxm
Ll9nZXRjb25mdGVzdG1vZHVsZXMocGF0aCkKKworICAgICAgICBpZiBwYXRoLmlzZmlsZSgpOgor
ICAgICAgICAgICAgZGlyZWN0b3J5ID0gcGF0aC5kaXJwYXRoKCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGRpcmVjdG9yeSA9IHBhdGgKKworICAgICAgICAjIFhYWCB0aGVzZSBkYXlzIHdl
IG1heSByYXRoZXIgd2FudCB0byB1c2UgY29uZmlnLnJvb3RwYXRoCisgICAgICAgICMgYW5kIGFs
bG93IHVzZXJzIHRvIG9wdCBpbnRvIGxvb2tpbmcgaW50byB0aGUgcm9vdGRpciBwYXJlbnQKKyAg
ICAgICAgIyBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0byBzcGVjaWZ5IGNvbmZj
dXRkaXIuCisgICAgICAgIGNsaXN0ID0gW10KKyAgICAgICAgZm9yIHBhcmVudCBpbiBkaXJlY3Rv
cnkucGFydHMoKToKKyAgICAgICAgICAgIGlmIHNlbGYuX2NvbmZjdXRkaXIgYW5kIHNlbGYuX2Nv
bmZjdXRkaXIucmVsdG8ocGFyZW50KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgY29uZnRlc3RwYXRoID0gcGFyZW50LmpvaW4oImNvbmZ0ZXN0LnB5IikKKyAgICAgICAg
ICAgIGlmIGNvbmZ0ZXN0cGF0aC5pc2ZpbGUoKToKKyAgICAgICAgICAgICAgICBtb2QgPSBzZWxm
Ll9pbXBvcnRjb25mdGVzdChjb25mdGVzdHBhdGgsIGltcG9ydG1vZGUpCisgICAgICAgICAgICAg
ICAgY2xpc3QuYXBwZW5kKG1vZCkKKyAgICAgICAgc2VsZi5fZGlycGF0aDJjb25mbW9kc1tkaXJl
Y3RvcnldID0gY2xpc3QKKyAgICAgICAgcmV0dXJuIGNsaXN0CisKKyAgICBkZWYgX3JnZXRfd2l0
aF9jb25mbW9kKAorICAgICAgICBzZWxmLCBuYW1lOiBzdHIsIHBhdGg6IHB5LnBhdGgubG9jYWws
IGltcG9ydG1vZGU6IFVuaW9uW3N0ciwgSW1wb3J0TW9kZV0sCisgICAgKSAtPiBUdXBsZVt0eXBl
cy5Nb2R1bGVUeXBlLCBBbnldOgorICAgICAgICBtb2R1bGVzID0gc2VsZi5fZ2V0Y29uZnRlc3Rt
b2R1bGVzKHBhdGgsIGltcG9ydG1vZGUpCiAgICAgICAgIGZvciBtb2QgaW4gcmV2ZXJzZWQobW9k
dWxlcyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZCwgZ2V0
YXR0cihtb2QsIG5hbWUpCkBAIC0zOTUsMTMwICs1NDksMjAwIEBAIGNsYXNzIFB5dGVzdFBsdWdp
bk1hbmFnZXIoUGx1Z2luTWFuYWdlcik6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAg
ICAgcmFpc2UgS2V5RXJyb3IobmFtZSkKIAotICAgIGRlZiBfaW1wb3J0Y29uZnRlc3Qoc2VsZiwg
Y29uZnRlc3RwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Nv
bmZ0ZXN0cGF0aDJtb2RbY29uZnRlc3RwYXRoXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0g
ICAgICAgICAgICBwa2dwYXRoID0gY29uZnRlc3RwYXRoLnB5cGtncGF0aCgpCi0gICAgICAgICAg
ICBpZiBwa2dwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX2Vuc3VyZV9yZW1vdmVkX3N5
c21vZHVsZShjb25mdGVzdHBhdGgucHVyZWJhc2VuYW1lKQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIG1vZCA9IGNvbmZ0ZXN0cGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICAg
ICAgaWYgaGFzYXR0cihtb2QsICJweXRlc3RfcGx1Z2lucyIpIGFuZCBzZWxmLl9jb25maWd1cmVk
OgotICAgICAgICAgICAgICAgICAgICBmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQgUFlU
RVNUX1BMVUdJTlNfRlJPTV9OT05fVE9QX0xFVkVMX0NPTkZURVNUCisgICAgZGVmIF9pbXBvcnRj
b25mdGVzdCgKKyAgICAgICAgc2VsZiwgY29uZnRlc3RwYXRoOiBweS5wYXRoLmxvY2FsLCBpbXBv
cnRtb2RlOiBVbmlvbltzdHIsIEltcG9ydE1vZGVdLAorICAgICkgLT4gdHlwZXMuTW9kdWxlVHlw
ZToKKyAgICAgICAgIyBVc2UgYSByZXNvbHZlZCBQYXRoIG9iamVjdCBhcyBrZXkgdG8gYXZvaWQg
bG9hZGluZyB0aGUgc2FtZSBjb25mdGVzdAorICAgICAgICAjIHR3aWNlIHdpdGggYnVpbGQgc3lz
dGVtcyB0aGF0IGNyZWF0ZSBidWlsZCBkaXJlY3RvcmllcyBjb250YWluaW5nCisgICAgICAgICMg
c3ltbGlua3MgdG8gYWN0dWFsIGZpbGVzLgorICAgICAgICAjIFVzaW5nIFBhdGgoKS5yZXNvbHZl
KCkgaXMgYmV0dGVyIHRoYW4gcHkucGF0aC5yZWFscGF0aCBiZWNhdXNlCisgICAgICAgICMgaXQg
cmVzb2x2ZXMgdG8gdGhlIGNvcnJlY3QgcGF0aC9kcml2ZSBpbiBjYXNlLWluc2Vuc2l0aXZlIGZp
bGUgc3lzdGVtcyAoIzU3OTIpCisgICAgICAgIGtleSA9IFBhdGgoc3RyKGNvbmZ0ZXN0cGF0aCkp
LnJlc29sdmUoKQogCi0gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oUFlURVNUX1BM
VUdJTlNfRlJPTV9OT05fVE9QX0xFVkVMX0NPTkZURVNUKQotICAgICAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25mdGVzdEltcG9ydEZhaWx1cmUoY29u
ZnRlc3RwYXRoLCBzeXMuZXhjX2luZm8oKSkKLQotICAgICAgICAgICAgc2VsZi5fY29uZnRlc3Rf
cGx1Z2lucy5hZGQobW9kKQotICAgICAgICAgICAgc2VsZi5fY29uZnRlc3RwYXRoMm1vZFtjb25m
dGVzdHBhdGhdID0gbW9kCi0gICAgICAgICAgICBkaXJwYXRoID0gY29uZnRlc3RwYXRoLmRpcnBh
dGgoKQotICAgICAgICAgICAgaWYgZGlycGF0aCBpbiBzZWxmLl9wYXRoMmNvbmZtb2RzOgotICAg
ICAgICAgICAgICAgIGZvciBwYXRoLCBtb2RzIGluIHNlbGYuX3BhdGgyY29uZm1vZHMuaXRlbXMo
KToKLSAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBhbmQgcGF0aC5yZWx0byhkaXJwYXRoKSBv
ciBwYXRoID09IGRpcnBhdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbW9kIG5v
dCBpbiBtb2RzCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RzLmFwcGVuZChtb2QpCi0gICAg
ICAgICAgICBzZWxmLnRyYWNlKCJsb2FkZWQgY29uZnRlc3Rtb2R1bGUgJXIiICUgKG1vZCkpCi0g
ICAgICAgICAgICBzZWxmLmNvbnNpZGVyX2NvbmZ0ZXN0KG1vZCkKLSAgICAgICAgICAgIHJldHVy
biBtb2QKKyAgICAgICAgd2l0aCBjb250ZXh0bGliLnN1cHByZXNzKEtleUVycm9yKToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9jb25mdGVzdHBhdGgybW9kW2tleV0KKworICAgICAgICBwa2dw
YXRoID0gY29uZnRlc3RwYXRoLnB5cGtncGF0aCgpCisgICAgICAgIGlmIHBrZ3BhdGggaXMgTm9u
ZToKKyAgICAgICAgICAgIF9lbnN1cmVfcmVtb3ZlZF9zeXNtb2R1bGUoY29uZnRlc3RwYXRoLnB1
cmViYXNlbmFtZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBpbXBvcnRfcGF0
aChjb25mdGVzdHBhdGgsIG1vZGU9aW1wb3J0bW9kZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgorICAgICAgICAgICAgYXNzZXJ0IGUuX190cmFjZWJhY2tfXyBpcyBub3QgTm9uZQor
ICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShlKSwgZSwgZS5fX3RyYWNlYmFja19fKQorICAg
ICAgICAgICAgcmFpc2UgQ29uZnRlc3RJbXBvcnRGYWlsdXJlKGNvbmZ0ZXN0cGF0aCwgZXhjX2lu
Zm8pIGZyb20gZQorCisgICAgICAgIHNlbGYuX2NoZWNrX25vbl90b3BfcHl0ZXN0X3BsdWdpbnMo
bW9kLCBjb25mdGVzdHBhdGgpCisKKyAgICAgICAgc2VsZi5fY29uZnRlc3RfcGx1Z2lucy5hZGQo
bW9kKQorICAgICAgICBzZWxmLl9jb25mdGVzdHBhdGgybW9kW2tleV0gPSBtb2QKKyAgICAgICAg
ZGlycGF0aCA9IGNvbmZ0ZXN0cGF0aC5kaXJwYXRoKCkKKyAgICAgICAgaWYgZGlycGF0aCBpbiBz
ZWxmLl9kaXJwYXRoMmNvbmZtb2RzOgorICAgICAgICAgICAgZm9yIHBhdGgsIG1vZHMgaW4gc2Vs
Zi5fZGlycGF0aDJjb25mbW9kcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIHBhdGggYW5k
IHBhdGgucmVsdG8oZGlycGF0aCkgb3IgcGF0aCA9PSBkaXJwYXRoOgorICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQgbW9kIG5vdCBpbiBtb2RzCisgICAgICAgICAgICAgICAgICAgIG1vZHMuYXBw
ZW5kKG1vZCkKKyAgICAgICAgc2VsZi50cmFjZSgibG9hZGluZyBjb25mdGVzdG1vZHVsZSB7IXJ9
Ii5mb3JtYXQobW9kKSkKKyAgICAgICAgc2VsZi5jb25zaWRlcl9jb25mdGVzdChtb2QpCisgICAg
ICAgIHJldHVybiBtb2QKKworICAgIGRlZiBfY2hlY2tfbm9uX3RvcF9weXRlc3RfcGx1Z2lucygK
KyAgICAgICAgc2VsZiwgbW9kOiB0eXBlcy5Nb2R1bGVUeXBlLCBjb25mdGVzdHBhdGg6IHB5LnBh
dGgubG9jYWwsCisgICAgKSAtPiBOb25lOgorICAgICAgICBpZiAoCisgICAgICAgICAgICBoYXNh
dHRyKG1vZCwgInB5dGVzdF9wbHVnaW5zIikKKyAgICAgICAgICAgIGFuZCBzZWxmLl9jb25maWd1
cmVkCisgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3VzaW5nX3B5YXJncworICAgICAgICApOgor
ICAgICAgICAgICAgbXNnID0gKAorICAgICAgICAgICAgICAgICJEZWZpbmluZyAncHl0ZXN0X3Bs
dWdpbnMnIGluIGEgbm9uLXRvcC1sZXZlbCBjb25mdGVzdCBpcyBubyBsb25nZXIgc3VwcG9ydGVk
OlxuIgorICAgICAgICAgICAgICAgICJJdCBhZmZlY3RzIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBp
bnN0ZWFkIG9mIGp1c3QgYmVsb3cgdGhlIGNvbmZ0ZXN0IGFzIGV4cGVjdGVkLlxuIgorICAgICAg
ICAgICAgICAgICIgIHt9XG4iCisgICAgICAgICAgICAgICAgIlBsZWFzZSBtb3ZlIGl0IHRvIGEg
dG9wIGxldmVsIGNvbmZ0ZXN0IGZpbGUgYXQgdGhlIHJvb3RkaXI6XG4iCisgICAgICAgICAgICAg
ICAgIiAge31cbiIKKyAgICAgICAgICAgICAgICAiRm9yIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0
OlxuIgorICAgICAgICAgICAgICAgICIgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9kZXByZWNhdGlvbnMuaHRtbCNweXRlc3QtcGx1Z2lucy1pbi1ub24tdG9wLWxldmVsLWNvbmZ0
ZXN0LWZpbGVzIgorICAgICAgICAgICAgKQorICAgICAgICAgICAgZmFpbChtc2cuZm9ybWF0KGNv
bmZ0ZXN0cGF0aCwgc2VsZi5fY29uZmN1dGRpciksIHB5dHJhY2U9RmFsc2UpCiAKICAgICAjCiAg
ICAgIyBBUEkgZm9yIGJvb3RzdHJhcHBpbmcgcGx1Z2luIGxvYWRpbmcKICAgICAjCiAgICAgIwog
Ci0gICAgZGVmIGNvbnNpZGVyX3ByZXBhcnNlKHNlbGYsIGFyZ3MpOgotICAgICAgICBmb3Igb3B0
MSwgb3B0MiBpbiB6aXAoYXJncywgYXJnc1sxOl0pOgotICAgICAgICAgICAgaWYgb3B0MSA9PSAi
LXAiOgotICAgICAgICAgICAgICAgIHNlbGYuY29uc2lkZXJfcGx1Z2luYXJnKG9wdDIpCisgICAg
ZGVmIGNvbnNpZGVyX3ByZXBhcnNlKAorICAgICAgICBzZWxmLCBhcmdzOiBTZXF1ZW5jZVtzdHJd
LCAqLCBleGNsdWRlX29ubHk6IGJvb2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAg
aSA9IDAKKyAgICAgICAgbiA9IGxlbihhcmdzKQorICAgICAgICB3aGlsZSBpIDwgbjoKKyAgICAg
ICAgICAgIG9wdCA9IGFyZ3NbaV0KKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShvcHQsIHN0cik6CisgICAgICAgICAgICAgICAgaWYgb3B0ID09ICItcCI6Cisg
ICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSBh
cmdzW2ldCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIGkgKz0gMQorICAgICAg
ICAgICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoIi1wIik6CisgICAgICAgICAgICAgICAgICAg
IHBhcmcgPSBvcHRbMjpdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBleGNsdWRlX29ubHkgYW5kIG5vdCBwYXJn
LnN0YXJ0c3dpdGgoIm5vOiIpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgICAgIHNlbGYuY29uc2lkZXJfcGx1Z2luYXJnKHBhcmcpCiAKLSAgICBkZWYgY29uc2lk
ZXJfcGx1Z2luYXJnKHNlbGYsIGFyZyk6CisgICAgZGVmIGNvbnNpZGVyX3BsdWdpbmFyZyhzZWxm
LCBhcmc6IHN0cikgLT4gTm9uZToKICAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoIm5vOiIpOgog
ICAgICAgICAgICAgbmFtZSA9IGFyZ1szOl0KKyAgICAgICAgICAgIGlmIG5hbWUgaW4gZXNzZW50
aWFsX3BsdWdpbnM6CisgICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigicGx1Z2luICVz
IGNhbm5vdCBiZSBkaXNhYmxlZCIgJSBuYW1lKQorCisgICAgICAgICAgICAjIFBSICM0MzA0OiBy
ZW1vdmUgc3RlcHdpc2UgaWYgY2FjaGVwcm92aWRlciBpcyBibG9ja2VkLgorICAgICAgICAgICAg
aWYgbmFtZSA9PSAiY2FjaGVwcm92aWRlciI6CisgICAgICAgICAgICAgICAgc2VsZi5zZXRfYmxv
Y2tlZCgic3RlcHdpc2UiKQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X2Jsb2NrZWQoInB5dGVz
dF9zdGVwd2lzZSIpCisKICAgICAgICAgICAgIHNlbGYuc2V0X2Jsb2NrZWQobmFtZSkKICAgICAg
ICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoInB5dGVzdF8iKToKICAgICAgICAgICAgICAg
ICBzZWxmLnNldF9ibG9ja2VkKCJweXRlc3RfIiArIG5hbWUpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLmltcG9ydF9wbHVnaW4oYXJnKQorICAgICAgICAgICAgbmFtZSA9IGFyZwor
ICAgICAgICAgICAgIyBVbmJsb2NrIHRoZSBwbHVnaW4uICBOb25lIGluZGljYXRlcyB0aGF0IGl0
IGhhcyBiZWVuIGJsb2NrZWQuCisgICAgICAgICAgICAjIFRoZXJlIGlzIG5vIGludGVyZmFjZSB3
aXRoIHBsdWdneSBmb3IgdGhpcy4KKyAgICAgICAgICAgIGlmIHNlbGYuX25hbWUycGx1Z2luLmdl
dChuYW1lLCAtMSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fbmFtZTJwbHVn
aW5bbmFtZV0KKyAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoInB5dGVzdF8iKToK
KyAgICAgICAgICAgICAgICBpZiBzZWxmLl9uYW1lMnBsdWdpbi5nZXQoInB5dGVzdF8iICsgbmFt
ZSwgLTEpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9uYW1lMnBsdWdp
blsicHl0ZXN0XyIgKyBuYW1lXQorICAgICAgICAgICAgc2VsZi5pbXBvcnRfcGx1Z2luKGFyZywg
Y29uc2lkZXJfZW50cnlfcG9pbnRzPVRydWUpCiAKLSAgICBkZWYgY29uc2lkZXJfY29uZnRlc3Qo
c2VsZiwgY29uZnRlc3Rtb2R1bGUpOgorICAgIGRlZiBjb25zaWRlcl9jb25mdGVzdChzZWxmLCBj
b25mdGVzdG1vZHVsZTogdHlwZXMuTW9kdWxlVHlwZSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5y
ZWdpc3Rlcihjb25mdGVzdG1vZHVsZSwgbmFtZT1jb25mdGVzdG1vZHVsZS5fX2ZpbGVfXykKIAot
ICAgIGRlZiBjb25zaWRlcl9lbnYoc2VsZik6CisgICAgZGVmIGNvbnNpZGVyX2VudihzZWxmKSAt
PiBOb25lOgogICAgICAgICBzZWxmLl9pbXBvcnRfcGx1Z2luX3NwZWNzKG9zLmVudmlyb24uZ2V0
KCJQWVRFU1RfUExVR0lOUyIpKQogCi0gICAgZGVmIGNvbnNpZGVyX21vZHVsZShzZWxmLCBtb2Qp
OgorICAgIGRlZiBjb25zaWRlcl9tb2R1bGUoc2VsZiwgbW9kOiB0eXBlcy5Nb2R1bGVUeXBlKSAt
PiBOb25lOgogICAgICAgICBzZWxmLl9pbXBvcnRfcGx1Z2luX3NwZWNzKGdldGF0dHIobW9kLCAi
cHl0ZXN0X3BsdWdpbnMiLCBbXSkpCiAKLSAgICBkZWYgX2ltcG9ydF9wbHVnaW5fc3BlY3Moc2Vs
Ziwgc3BlYyk6CisgICAgZGVmIF9pbXBvcnRfcGx1Z2luX3NwZWNzKAorICAgICAgICBzZWxmLCBz
cGVjOiBVbmlvbltOb25lLCB0eXBlcy5Nb2R1bGVUeXBlLCBzdHIsIFNlcXVlbmNlW3N0cl1dCisg
ICAgKSAtPiBOb25lOgogICAgICAgICBwbHVnaW5zID0gX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlz
dChzcGVjKQogICAgICAgICBmb3IgaW1wb3J0X3NwZWMgaW4gcGx1Z2luczoKICAgICAgICAgICAg
IHNlbGYuaW1wb3J0X3BsdWdpbihpbXBvcnRfc3BlYykKIAotICAgIGRlZiBpbXBvcnRfcGx1Z2lu
KHNlbGYsIG1vZG5hbWUpOgotICAgICAgICAjIG1vc3Qgb2Z0ZW4gbW9kbmFtZSByZWZlcnMgdG8g
YnVpbHRpbiBtb2R1bGVzLCBlLmcuICJweXRlc3RlciIsCisgICAgZGVmIGltcG9ydF9wbHVnaW4o
c2VsZiwgbW9kbmFtZTogc3RyLCBjb25zaWRlcl9lbnRyeV9wb2ludHM6IGJvb2wgPSBGYWxzZSkg
LT4gTm9uZToKKyAgICAgICAgIiIiSW1wb3J0IGEgcGx1Z2luIHdpdGggYGBtb2RuYW1lYGAuCisK
KyAgICAgICAgSWYgYGBjb25zaWRlcl9lbnRyeV9wb2ludHNgYCBpcyBUcnVlLCBlbnRyeSBwb2lu
dCBuYW1lcyBhcmUgYWxzbworICAgICAgICBjb25zaWRlcmVkIHRvIGZpbmQgYSBwbHVnaW4uCisg
ICAgICAgICIiIgorICAgICAgICAjIE1vc3Qgb2Z0ZW4gbW9kbmFtZSByZWZlcnMgdG8gYnVpbHRp
biBtb2R1bGVzLCBlLmcuICJweXRlc3RlciIsCiAgICAgICAgICMgInRlcm1pbmFsIiBvciAiY2Fw
dHVyZSIuICBUaG9zZSBwbHVnaW5zIGFyZSByZWdpc3RlcmVkIHVuZGVyIHRoZWlyCiAgICAgICAg
ICMgYmFzZW5hbWUgZm9yIGhpc3RvcmljIHB1cnBvc2VzIGJ1dCBtdXN0IGJlIGltcG9ydGVkIHdp
dGggdGhlCiAgICAgICAgICMgX3B5dGVzdCBwcmVmaXguCi0gICAgICAgIGFzc2VydCBpc2luc3Rh
bmNlKG1vZG5hbWUsIChzaXgudGV4dF90eXBlLCBzdHIpKSwgKAorICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShtb2RuYW1lLCBzdHIpLCAoCiAgICAgICAgICAgICAibW9kdWxlIG5hbWUgYXMgdGV4
dCByZXF1aXJlZCwgZ290ICVyIiAlIG1vZG5hbWUKICAgICAgICAgKQotICAgICAgICBtb2RuYW1l
ID0gc3RyKG1vZG5hbWUpCiAgICAgICAgIGlmIHNlbGYuaXNfYmxvY2tlZChtb2RuYW1lKSBvciBz
ZWxmLmdldF9wbHVnaW4obW9kbmFtZSkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgaWYgbW9kbmFtZSBpbiBidWlsdGluX3BsdWdpbnM6Ci0gICAgICAgICAgICBpbXBv
cnRzcGVjID0gIl9weXRlc3QuIiArIG1vZG5hbWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGltcG9ydHNwZWMgPSBtb2RuYW1lCisKKyAgICAgICAgaW1wb3J0c3BlYyA9ICJfcHl0ZXN0LiIg
KyBtb2RuYW1lIGlmIG1vZG5hbWUgaW4gYnVpbHRpbl9wbHVnaW5zIGVsc2UgbW9kbmFtZQogICAg
ICAgICBzZWxmLnJld3JpdGVfaG9vay5tYXJrX3Jld3JpdGUoaW1wb3J0c3BlYykKKworICAgICAg
ICBpZiBjb25zaWRlcl9lbnRyeV9wb2ludHM6CisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmxv
YWRfc2V0dXB0b29sc19lbnRyeXBvaW50cygicHl0ZXN0MTEiLCBuYW1lPW1vZG5hbWUpCisgICAg
ICAgICAgICBpZiBsb2FkZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgX19pbXBvcnRfXyhpbXBvcnRzcGVjKQogICAgICAgICBleGNlcHQgSW1w
b3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIG5ld19leGNfdHlwZSA9IEltcG9ydEVycm9yCi0g
ICAgICAgICAgICBuZXdfZXhjX21lc3NhZ2UgPSAnRXJyb3IgaW1wb3J0aW5nIHBsdWdpbiAiJXMi
OiAlcycgJSAoCi0gICAgICAgICAgICAgICAgbW9kbmFtZSwgc2FmZV9zdHIoZS5hcmdzWzBdKQot
ICAgICAgICAgICAgKQotICAgICAgICAgICAgbmV3X2V4YyA9IG5ld19leGNfdHlwZShuZXdfZXhj
X21lc3NhZ2UpCi0KLSAgICAgICAgICAgIHNpeC5yZXJhaXNlKG5ld19leGNfdHlwZSwgbmV3X2V4
Yywgc3lzLmV4Y19pbmZvKClbMl0pCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAg
ICAgICAgICAgICAgICAnRXJyb3IgaW1wb3J0aW5nIHBsdWdpbiAie30iOiB7fScuZm9ybWF0KG1v
ZG5hbWUsIHN0cihlLmFyZ3NbMF0pKQorICAgICAgICAgICAgKS53aXRoX3RyYWNlYmFjayhlLl9f
dHJhY2ViYWNrX18pIGZyb20gZQogCiAgICAgICAgIGV4Y2VwdCBTa2lwcGVkIGFzIGU6Ci0gICAg
ICAgICAgICBzZWxmLl93YXJuKCJza2lwcGVkIHBsdWdpbiAlcjogJXMiICUgKChtb2RuYW1lLCBl
Lm1zZykpKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3BsdWdpbnMuYXBwZW5kKChtb2RuYW1l
LCBlLm1zZyBvciAiIikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtb2QgPSBzeXMubW9k
dWxlc1tpbXBvcnRzcGVjXQogICAgICAgICAgICAgc2VsZi5yZWdpc3Rlcihtb2QsIG1vZG5hbWUp
CiAKIAotZGVmIF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3Qoc3BlY3MpOgotICAgICIiIgotICAg
IFBhcnNlcyBhIGxpc3Qgb2YgInBsdWdpbiBzcGVjcyIgYW5kIHJldHVybnMgYSBsaXN0IG9mIHBs
dWdpbiBuYW1lcy4KLQotICAgIFBsdWdpbiBzcGVjcyBjYW4gYmUgZ2l2ZW4gYXMgYSBsaXN0IG9m
IHN0cmluZ3Mgc2VwYXJhdGVkIGJ5ICIsIiBvciBhbHJlYWR5IGFzIGEgbGlzdC90dXBsZSBpbgot
ICAgIHdoaWNoIGNhc2UgaXQgaXMgcmV0dXJuZWQgYXMgYSBsaXN0LiBTcGVjcyBjYW4gYWxzbyBi
ZSBgTm9uZWAgaW4gd2hpY2ggY2FzZSBhbgotICAgIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQuCi0g
ICAgIiIiCi0gICAgaWYgc3BlY3MgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uo
c3BlY3MsIHN0cik6Ci0gICAgICAgICAgICBzcGVjcyA9IHNwZWNzLnNwbGl0KCIsIikgaWYgc3Bl
Y3MgZWxzZSBbXQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjcywgKGxpc3QsIHR1cGxl
KSk6Ci0gICAgICAgICAgICByYWlzZSBVc2FnZUVycm9yKAotICAgICAgICAgICAgICAgICJQbHVn
aW4gc3BlY3MgbXVzdCBiZSBhICcsJy1zZXBhcmF0ZWQgc3RyaW5nIG9yIGEgIgotICAgICAgICAg
ICAgICAgICJsaXN0L3R1cGxlIG9mIHN0cmluZ3MgZm9yIHBsdWdpbiBuYW1lcy4gR2l2ZW46ICVy
IiAlIHNwZWNzCi0gICAgICAgICAgICApCitkZWYgX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdCgK
KyAgICBzcGVjczogVW5pb25bTm9uZSwgdHlwZXMuTW9kdWxlVHlwZSwgc3RyLCBTZXF1ZW5jZVtz
dHJdXQorKSAtPiBMaXN0W3N0cl06CisgICAgIiIiUGFyc2UgYSBwbHVnaW5zIHNwZWNpZmljYXRp
b24gaW50byBhIGxpc3Qgb2YgcGx1Z2luIG5hbWVzLiIiIgorICAgICMgTm9uZSBtZWFucyBlbXB0
eS4KKyAgICBpZiBzcGVjcyBpcyBOb25lOgorICAgICAgICByZXR1cm4gW10KKyAgICAjIFdvcmth
cm91bmQgZm9yICMzODk5IC0gYSBzdWJtb2R1bGUgd2hpY2ggaGFwcGVucyB0byBiZSBjYWxsZWQg
InB5dGVzdF9wbHVnaW5zIi4KKyAgICBpZiBpc2luc3RhbmNlKHNwZWNzLCB0eXBlcy5Nb2R1bGVU
eXBlKToKKyAgICAgICAgcmV0dXJuIFtdCisgICAgIyBDb21tYS1zZXBhcmF0ZWQgbGlzdC4KKyAg
ICBpZiBpc2luc3RhbmNlKHNwZWNzLCBzdHIpOgorICAgICAgICByZXR1cm4gc3BlY3Muc3BsaXQo
IiwiKSBpZiBzcGVjcyBlbHNlIFtdCisgICAgIyBEaXJlY3Qgc3BlY2lmaWNhdGlvbi4KKyAgICBp
ZiBpc2luc3RhbmNlKHNwZWNzLCBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UpOgogICAgICAgICBy
ZXR1cm4gbGlzdChzcGVjcykKLSAgICByZXR1cm4gW10KKyAgICByYWlzZSBVc2FnZUVycm9yKAor
ICAgICAgICAiUGx1Z2lucyBtYXkgYmUgc3BlY2lmaWVkIGFzIGEgc2VxdWVuY2Ugb3IgYSAnLCct
c2VwYXJhdGVkIHN0cmluZyBvZiBwbHVnaW4gbmFtZXMuIEdvdDogJXIiCisgICAgICAgICUgc3Bl
Y3MKKyAgICApCiAKIAotZGVmIF9lbnN1cmVfcmVtb3ZlZF9zeXNtb2R1bGUobW9kbmFtZSk6Citk
ZWYgX2Vuc3VyZV9yZW1vdmVkX3N5c21vZHVsZShtb2RuYW1lOiBzdHIpIC0+IE5vbmU6CiAgICAg
dHJ5OgogICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kbmFtZV0KICAgICBleGNlcHQgS2V5RXJy
b3I6CiAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBOb3RzZXQob2JqZWN0KToKLQorY2xhc3MgTm90
c2V0OgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICI8Tk9UU0VUPiIK
IApAQCAtNTI2LDYzICs3NTAsMjM4IEBAIGNsYXNzIE5vdHNldChvYmplY3QpOgogbm90c2V0ID0g
Tm90c2V0KCkKIAogCi1kZWYgX2l0ZXJfcmV3cml0YWJsZV9tb2R1bGVzKHBhY2thZ2VfZmlsZXMp
OgorZGVmIF9pdGVyX3Jld3JpdGFibGVfbW9kdWxlcyhwYWNrYWdlX2ZpbGVzOiBJdGVyYWJsZVtz
dHJdKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICIiIkdpdmVuIGFuIGl0ZXJhYmxlIG9mIGZpbGUg
bmFtZXMgaW4gYSBzb3VyY2UgZGlzdHJpYnV0aW9uLCByZXR1cm4gdGhlICJuYW1lcyIgdGhhdCBz
aG91bGQKKyAgICBiZSBtYXJrZWQgZm9yIGFzc2VydGlvbiByZXdyaXRlLgorCisgICAgRm9yIGV4
YW1wbGUgdGhlIHBhY2thZ2UgInB5dGVzdF9tb2NrL19faW5pdF9fLnB5IiBzaG91bGQgYmUgYWRk
ZWQgYXMgInB5dGVzdF9tb2NrIiBpbgorICAgIHRoZSBhc3NlcnRpb24gcmV3cml0ZSBtZWNoYW5p
c20uCisKKyAgICBUaGlzIGZ1bmN0aW9uIGhhcyB0byBkZWFsIHdpdGggZGlzdC1pbmZvIGJhc2Vk
IGRpc3RyaWJ1dGlvbnMgYW5kIGVnZyBiYXNlZCBkaXN0cmlidXRpb25zCisgICAgKHdoaWNoIGFy
ZSBzdGlsbCB2ZXJ5IG11Y2ggaW4gdXNlIGZvciAiZWRpdGFibGUiIGluc3RhbGxzKS4KKworICAg
IEhlcmUgYXJlIHRoZSBmaWxlIG5hbWVzIGFzIHNlZW4gaW4gYSBkaXN0LWluZm8gYmFzZWQgZGlz
dHJpYnV0aW9uOgorCisgICAgICAgIHB5dGVzdF9tb2NrL19faW5pdF9fLnB5CisgICAgICAgIHB5
dGVzdF9tb2NrL192ZXJzaW9uLnB5CisgICAgICAgIHB5dGVzdF9tb2NrL3BsdWdpbi5weQorICAg
ICAgICBweXRlc3RfbW9jay5lZ2ctaW5mby9QS0ctSU5GTworCisgICAgSGVyZSBhcmUgdGhlIGZp
bGUgbmFtZXMgYXMgc2VlbiBpbiBhbiBlZ2cgYmFzZWQgZGlzdHJpYnV0aW9uOgorCisgICAgICAg
IHNyYy9weXRlc3RfbW9jay9fX2luaXRfXy5weQorICAgICAgICBzcmMvcHl0ZXN0X21vY2svX3Zl
cnNpb24ucHkKKyAgICAgICAgc3JjL3B5dGVzdF9tb2NrL3BsdWdpbi5weQorICAgICAgICBzcmMv
cHl0ZXN0X21vY2suZWdnLWluZm8vUEtHLUlORk8KKyAgICAgICAgTElDRU5TRQorICAgICAgICBz
ZXR1cC5weQorCisgICAgV2UgaGF2ZSB0byB0YWtlIGluIGFjY291bnQgdGhvc2UgdHdvIGRpc3Ry
aWJ1dGlvbiBmbGF2b3JzIGluIG9yZGVyIHRvIGRldGVybWluZSB3aGljaAorICAgIG5hbWVzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIGZvciBhc3NlcnRpb24gcmV3cml0aW5nLgorCisgICAgTW9yZSBp
bmZvcm1hdGlvbjoKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
LW1vY2svaXNzdWVzLzE2NworICAgICIiIgorICAgIHBhY2thZ2VfZmlsZXMgPSBsaXN0KHBhY2th
Z2VfZmlsZXMpCisgICAgc2Vlbl9zb21lID0gRmFsc2UKICAgICBmb3IgZm4gaW4gcGFja2FnZV9m
aWxlczoKICAgICAgICAgaXNfc2ltcGxlX21vZHVsZSA9ICIvIiBub3QgaW4gZm4gYW5kIGZuLmVu
ZHN3aXRoKCIucHkiKQogICAgICAgICBpc19wYWNrYWdlID0gZm4uY291bnQoIi8iKSA9PSAxIGFu
ZCBmbi5lbmRzd2l0aCgiX19pbml0X18ucHkiKQogICAgICAgICBpZiBpc19zaW1wbGVfbW9kdWxl
OgogICAgICAgICAgICAgbW9kdWxlX25hbWUsIF8gPSBvcy5wYXRoLnNwbGl0ZXh0KGZuKQotICAg
ICAgICAgICAgeWllbGQgbW9kdWxlX25hbWUKKyAgICAgICAgICAgICMgd2UgaWdub3JlICJzZXR1
cC5weSIgYXQgdGhlIHJvb3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgaWYgbW9k
dWxlX25hbWUgIT0gInNldHVwIjoKKyAgICAgICAgICAgICAgICBzZWVuX3NvbWUgPSBUcnVlCisg
ICAgICAgICAgICAgICAgeWllbGQgbW9kdWxlX25hbWUKICAgICAgICAgZWxpZiBpc19wYWNrYWdl
OgogICAgICAgICAgICAgcGFja2FnZV9uYW1lID0gb3MucGF0aC5kaXJuYW1lKGZuKQorICAgICAg
ICAgICAgc2Vlbl9zb21lID0gVHJ1ZQogICAgICAgICAgICAgeWllbGQgcGFja2FnZV9uYW1lCiAK
KyAgICBpZiBub3Qgc2Vlbl9zb21lOgorICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2UgZGlkIG5v
dCBmaW5kIGFueSBwYWNrYWdlcyBvciBtb2R1bGVzIHN1aXRhYmxlIGZvciBhc3NlcnRpb24KKyAg
ICAgICAgIyByZXdyaXRpbmcsIHNvIHdlIHRyeSBhZ2FpbiBieSBzdHJpcHBpbmcgdGhlIGZpcnN0
IHBhdGggY29tcG9uZW50ICh0byBhY2NvdW50IGZvcgorICAgICAgICAjICJzcmMiIGJhc2VkIHNv
dXJjZSB0cmVlcyBmb3IgZXhhbXBsZSkuCisgICAgICAgICMgVGhpcyBhcHByb2FjaCBsZXRzIHVz
IGhhdmUgdGhlIGNvbW1vbiBjYXNlIGNvbnRpbnVlIHRvIGJlIGZhc3QsIGFzIGVnZy1kaXN0cmli
dXRpb25zCisgICAgICAgICMgYXJlIHJhcmVyLgorICAgICAgICBuZXdfcGFja2FnZV9maWxlcyA9
IFtdCisgICAgICAgIGZvciBmbiBpbiBwYWNrYWdlX2ZpbGVzOgorICAgICAgICAgICAgcGFydHMg
PSBmbi5zcGxpdCgiLyIpCisgICAgICAgICAgICBuZXdfZm4gPSAiLyIuam9pbihwYXJ0c1sxOl0p
CisgICAgICAgICAgICBpZiBuZXdfZm46CisgICAgICAgICAgICAgICAgbmV3X3BhY2thZ2VfZmls
ZXMuYXBwZW5kKG5ld19mbikKKyAgICAgICAgaWYgbmV3X3BhY2thZ2VfZmlsZXM6CisgICAgICAg
ICAgICB5aWVsZCBmcm9tIF9pdGVyX3Jld3JpdGFibGVfbW9kdWxlcyhuZXdfcGFja2FnZV9maWxl
cykKIAotY2xhc3MgQ29uZmlnKG9iamVjdCk6Ci0gICAgIiIiIGFjY2VzcyB0byBjb25maWd1cmF0
aW9uIHZhbHVlcywgcGx1Z2lubWFuYWdlciBhbmQgcGx1Z2luIGhvb2tzLiAgIiIiCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcGx1Z2lubWFuYWdlcik6Ci0gICAgICAgICM6IGFjY2VzcyB0byBj
b21tYW5kIGxpbmUgb3B0aW9uIGFzIGF0dHJpYnV0ZXMuCi0gICAgICAgICM6IChkZXByZWNhdGVk
KSwgdXNlIDpweTpmdW5jOmBnZXRvcHRpb24oKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldG9w
dGlvbj5gIGluc3RlYWQKLSAgICAgICAgc2VsZi5vcHRpb24gPSBhcmdwYXJzZS5OYW1lc3BhY2Uo
KQorZGVmIF9hcmdzX2NvbnZlcnRlcihhcmdzOiBJdGVyYWJsZVtzdHJdKSAtPiBUdXBsZVtzdHIs
IC4uLl06CisgICAgcmV0dXJuIHR1cGxlKGFyZ3MpCisKKworQGZpbmFsCitjbGFzcyBDb25maWc6
CisgICAgIiIiQWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gdmFsdWVzLCBwbHVnaW5tYW5hZ2VyIGFu
ZCBwbHVnaW4gaG9va3MuCisKKyAgICA6cGFyYW0gUHl0ZXN0UGx1Z2luTWFuYWdlciBwbHVnaW5t
YW5hZ2VyOgorCisgICAgOnBhcmFtIEludm9jYXRpb25QYXJhbXMgaW52b2NhdGlvbl9wYXJhbXM6
CisgICAgICAgIE9iamVjdCBjb250YWluaW5nIHBhcmFtZXRlcnMgcmVnYXJkaW5nIHRoZSA6ZnVu
YzpgcHl0ZXN0Lm1haW5gCisgICAgICAgIGludm9jYXRpb24uCisgICAgIiIiCisKKyAgICBAZmlu
YWwKKyAgICBAYXR0ci5zKGZyb3plbj1UcnVlKQorICAgIGNsYXNzIEludm9jYXRpb25QYXJhbXM6
CisgICAgICAgICIiIkhvbGRzIHBhcmFtZXRlcnMgcGFzc2VkIGR1cmluZyA6ZnVuYzpgcHl0ZXN0
Lm1haW5gLgorCisgICAgICAgIFRoZSBvYmplY3QgYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5Lgor
CisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDUuMQorCisgICAgICAgIC4uIG5vdGU6OgorCisg
ICAgICAgICAgICBOb3RlIHRoYXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgUFlURVNUX0FE
RE9QVFNgYCBhbmQgdGhlIGBgYWRkb3B0c2BgCisgICAgICAgICAgICBpbmkgb3B0aW9uIGFyZSBo
YW5kbGVkIGJ5IHB5dGVzdCwgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBgYGFyZ3NgYCBhdHRy
aWJ1dGUuCisKKyAgICAgICAgICAgIFBsdWdpbnMgYWNjZXNzaW5nIGBgSW52b2NhdGlvblBhcmFt
c2BgIG11c3QgYmUgYXdhcmUgb2YgdGhhdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgYXJncyA9
IGF0dHIuaWIodHlwZT1UdXBsZVtzdHIsIC4uLl0sIGNvbnZlcnRlcj1fYXJnc19jb252ZXJ0ZXIp
CisgICAgICAgICIiIlRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGFzIHBhc3NlZCB0byA6ZnVu
YzpgcHl0ZXN0Lm1haW5gLgorCisgICAgICAgIDp0eXBlOiBUdXBsZVtzdHIsIC4uLl0KKyAgICAg
ICAgIiIiCisgICAgICAgIHBsdWdpbnMgPSBhdHRyLmliKHR5cGU9T3B0aW9uYWxbU2VxdWVuY2Vb
VW5pb25bc3RyLCBfUGx1Z2d5UGx1Z2luXV1dKQorICAgICAgICAiIiJFeHRyYSBwbHVnaW5zLCBt
aWdodCBiZSBgTm9uZWAuCisKKyAgICAgICAgOnR5cGU6IE9wdGlvbmFsW1NlcXVlbmNlW1VuaW9u
W3N0ciwgcGx1Z2luXV1dCisgICAgICAgICIiIgorICAgICAgICBkaXIgPSBhdHRyLmliKHR5cGU9
UGF0aCkKKyAgICAgICAgIiIiVGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIDpmdW5jOmBweXRlc3Qu
bWFpbmAgd2FzIGludm9rZWQuCisKKyAgICAgICAgOnR5cGU6IHBhdGhsaWIuUGF0aAorICAgICAg
ICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcGx1Z2lu
bWFuYWdlcjogUHl0ZXN0UGx1Z2luTWFuYWdlciwKKyAgICAgICAgKiwKKyAgICAgICAgaW52b2Nh
dGlvbl9wYXJhbXM6IE9wdGlvbmFsW0ludm9jYXRpb25QYXJhbXNdID0gTm9uZQorICAgICkgLT4g
Tm9uZToKICAgICAgICAgZnJvbSAuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyLCBGSUxFX09SX0RJ
UgogCisgICAgICAgIGlmIGludm9jYXRpb25fcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBp
bnZvY2F0aW9uX3BhcmFtcyA9IHNlbGYuSW52b2NhdGlvblBhcmFtcygKKyAgICAgICAgICAgICAg
ICBhcmdzPSgpLCBwbHVnaW5zPU5vbmUsIGRpcj1QYXRoLmN3ZCgpCisgICAgICAgICAgICApCisK
KyAgICAgICAgc2VsZi5vcHRpb24gPSBhcmdwYXJzZS5OYW1lc3BhY2UoKQorICAgICAgICAiIiJB
Y2Nlc3MgdG8gY29tbWFuZCBsaW5lIG9wdGlvbiBhcyBhdHRyaWJ1dGVzLgorCisgICAgICAgIDp0
eXBlOiBhcmdwYXJzZS5OYW1lc3BhY2UKKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5pbnZv
Y2F0aW9uX3BhcmFtcyA9IGludm9jYXRpb25fcGFyYW1zCisgICAgICAgICIiIlRoZSBwYXJhbWV0
ZXJzIHdpdGggd2hpY2ggcHl0ZXN0IHdhcyBpbnZva2VkLgorCisgICAgICAgIDp0eXBlOiBJbnZv
Y2F0aW9uUGFyYW1zCisgICAgICAgICIiIgorCiAgICAgICAgIF9hID0gRklMRV9PUl9ESVIKICAg
ICAgICAgc2VsZi5fcGFyc2VyID0gUGFyc2VyKAotICAgICAgICAgICAgdXNhZ2U9IiUlKHByb2cp
cyBbb3B0aW9uc10gWyVzXSBbJXNdIFsuLi5dIiAlIChfYSwgX2EpLAorICAgICAgICAgICAgdXNh
Z2U9IiUocHJvZylzIFtvcHRpb25zXSBbe31dIFt7fV0gWy4uLl0iLmZvcm1hdChfYSwgX2EpLAog
ICAgICAgICAgICAgcHJvY2Vzc29wdD1zZWxmLl9wcm9jZXNzb3B0LAogICAgICAgICApCi0gICAg
ICAgICM6IGEgcGx1Z2lubWFuYWdlciBpbnN0YW5jZQogICAgICAgICBzZWxmLnBsdWdpbm1hbmFn
ZXIgPSBwbHVnaW5tYW5hZ2VyCisgICAgICAgICIiIlRoZSBwbHVnaW4gbWFuYWdlciBoYW5kbGVz
IHBsdWdpbiByZWdpc3RyYXRpb24gYW5kIGhvb2sgaW52b2NhdGlvbi4KKworICAgICAgICA6dHlw
ZTogUHl0ZXN0UGx1Z2luTWFuYWdlcgorICAgICAgICAiIiIKKwogICAgICAgICBzZWxmLnRyYWNl
ID0gc2VsZi5wbHVnaW5tYW5hZ2VyLnRyYWNlLnJvb3QuZ2V0KCJjb25maWciKQogICAgICAgICBz
ZWxmLmhvb2sgPSBzZWxmLnBsdWdpbm1hbmFnZXIuaG9vawotICAgICAgICBzZWxmLl9pbmljYWNo
ZSA9IHt9Ci0gICAgICAgIHNlbGYuX292ZXJyaWRlX2luaSA9ICgpCi0gICAgICAgIHNlbGYuX29w
dDJkZXN0ID0ge30KLSAgICAgICAgc2VsZi5fY2xlYW51cCA9IFtdCi0gICAgICAgIHNlbGYuX3dh
cm4gPSBzZWxmLnBsdWdpbm1hbmFnZXIuX3dhcm4KKyAgICAgICAgc2VsZi5faW5pY2FjaGUgPSB7
fSAgIyB0eXBlOiBEaWN0W3N0ciwgQW55XQorICAgICAgICBzZWxmLl9vdmVycmlkZV9pbmkgPSAo
KSAgIyB0eXBlOiBTZXF1ZW5jZVtzdHJdCisgICAgICAgIHNlbGYuX29wdDJkZXN0ID0ge30gICMg
dHlwZTogRGljdFtzdHIsIHN0cl0KKyAgICAgICAgc2VsZi5fY2xlYW51cCA9IFtdICAjIHR5cGU6
IExpc3RbQ2FsbGFibGVbW10sIE5vbmVdXQorICAgICAgICAjIEEgcGxhY2Ugd2hlcmUgcGx1Z2lu
cyBjYW4gc3RvcmUgaW5mb3JtYXRpb24gb24gdGhlIGNvbmZpZyBmb3IgdGhlaXIKKyAgICAgICAg
IyBvd24gdXNlLiBDdXJyZW50bHkgb25seSBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgcGx1Z2lucy4K
KyAgICAgICAgc2VsZi5fc3RvcmUgPSBTdG9yZSgpCiAgICAgICAgIHNlbGYucGx1Z2lubWFuYWdl
ci5yZWdpc3RlcihzZWxmLCAicHl0ZXN0Y29uZmlnIikKICAgICAgICAgc2VsZi5fY29uZmlndXJl
ZCA9IEZhbHNlCisgICAgICAgIHNlbGYuaG9vay5weXRlc3RfYWRkb3B0aW9uLmNhbGxfaGlzdG9y
aWMoCisgICAgICAgICAgICBrd2FyZ3M9ZGljdChwYXJzZXI9c2VsZi5fcGFyc2VyLCBwbHVnaW5t
YW5hZ2VyPXNlbGYucGx1Z2lubWFuYWdlcikKKyAgICAgICAgKQorCisgICAgICAgIGlmIFRZUEVf
Q0hFQ0tJTkc6CisgICAgICAgICAgICBmcm9tIF9weXRlc3QuY2FjaGVwcm92aWRlciBpbXBvcnQg
Q2FjaGUKKworICAgICAgICAgICAgc2VsZi5jYWNoZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxb
Q2FjaGVdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW52b2NhdGlvbl9kaXIoc2VsZikgLT4g
cHkucGF0aC5sb2NhbDoKKyAgICAgICAgIiIiVGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHB5dGVz
dCB3YXMgaW52b2tlZC4KKworICAgICAgICBQcmVmZXIgdG8gdXNlIDphdHRyOmBpbnZvY2F0aW9u
X3BhcmFtcy5kaXIgPEludm9jYXRpb25QYXJhbXMuZGlyPmAsCisgICAgICAgIHdoaWNoIGlzIGEg
OmNsYXNzOmBwYXRobGliLlBhdGhgLgogCi0gICAgICAgIGRlZiBkb19zZXRucyhkaWMpOgotICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICA6dHlwZTogcHkucGF0aC5sb2NhbAorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHB5LnBhdGgubG9jYWwoc3RyKHNlbGYuaW52b2NhdGlv
bl9wYXJhbXMuZGlyKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb290cGF0aChzZWxmKSAt
PiBQYXRoOgorICAgICAgICAiIiJUaGUgcGF0aCB0byB0aGUgOnJlZjpgcm9vdGRpciA8cm9vdGRp
cj5gLgorCisgICAgICAgIDp0eXBlOiBwYXRobGliLlBhdGgKKworICAgICAgICAuLiB2ZXJzaW9u
YWRkZWQ6OiA2LjEKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yb290cGF0aAor
CisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvb3RkaXIoc2VsZikgLT4gcHkucGF0aC5sb2NhbDoK
KyAgICAgICAgIiIiVGhlIHBhdGggdG8gdGhlIDpyZWY6YHJvb3RkaXIgPHJvb3RkaXI+YC4KKwor
ICAgICAgICBQcmVmZXIgdG8gdXNlIDphdHRyOmByb290cGF0aGAsIHdoaWNoIGlzIGEgOmNsYXNz
OmBwYXRobGliLlBhdGhgLgorCisgICAgICAgIDp0eXBlOiBweS5wYXRoLmxvY2FsCisgICAgICAg
ICIiIgorICAgICAgICByZXR1cm4gcHkucGF0aC5sb2NhbChzdHIoc2VsZi5yb290cGF0aCkpCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW5pcGF0aChzZWxmKSAtPiBPcHRpb25hbFtQYXRoXToK
KyAgICAgICAgIiIiVGhlIHBhdGggdG8gdGhlIDpyZWY6YGNvbmZpZ2ZpbGUgPGNvbmZpZ2ZpbGVz
PmAuCisKKyAgICAgICAgOnR5cGU6IE9wdGlvbmFsW3BhdGhsaWIuUGF0aF0KKworICAgICAgICAu
LiB2ZXJzaW9uYWRkZWQ6OiA2LjEKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9p
bmlwYXRoCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW5pZmlsZShzZWxmKSAtPiBPcHRpb25h
bFtweS5wYXRoLmxvY2FsXToKKyAgICAgICAgIiIiVGhlIHBhdGggdG8gdGhlIDpyZWY6YGNvbmZp
Z2ZpbGUgPGNvbmZpZ2ZpbGVzPmAuCiAKLSAgICAgICAgICAgIHNldG5zKHB5dGVzdCwgZGljKQor
ICAgICAgICBQcmVmZXIgdG8gdXNlIDphdHRyOmBpbmlwYXRoYCwgd2hpY2ggaXMgYSA6Y2xhc3M6
YHBhdGhsaWIuUGF0aGAuCiAKLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9uYW1lc3BhY2UuY2Fs
bF9oaXN0b3JpYyhkb19zZXRucywge30pCi0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfYWRkb3B0
aW9uLmNhbGxfaGlzdG9yaWMoa3dhcmdzPWRpY3QocGFyc2VyPXNlbGYuX3BhcnNlcikpCisgICAg
ICAgIDp0eXBlOiBPcHRpb25hbFtweS5wYXRoLmxvY2FsXQorICAgICAgICAiIiIKKyAgICAgICAg
cmV0dXJuIHB5LnBhdGgubG9jYWwoc3RyKHNlbGYuaW5pcGF0aCkpIGlmIHNlbGYuaW5pcGF0aCBl
bHNlIE5vbmUKIAotICAgIGRlZiBhZGRfY2xlYW51cChzZWxmLCBmdW5jKToKLSAgICAgICAgIiIi
IEFkZCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb25maWcgb2JqZWN0IGdldHMg
b3V0IG9mCisgICAgZGVmIGFkZF9jbGVhbnVwKHNlbGYsIGZ1bmM6IENhbGxhYmxlW1tdLCBOb25l
XSkgLT4gTm9uZToKKyAgICAgICAgIiIiQWRkIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4g
dGhlIGNvbmZpZyBvYmplY3QgZ2V0cyBvdXQgb2YKICAgICAgICAgdXNlICh1c3VhbGx5IGNvbmlu
Y2lkaW5nIHdpdGggcHl0ZXN0X3VuY29uZmlndXJlKS4iIiIKICAgICAgICAgc2VsZi5fY2xlYW51
cC5hcHBlbmQoZnVuYykKIAotICAgIGRlZiBfZG9fY29uZmlndXJlKHNlbGYpOgorICAgIGRlZiBf
ZG9fY29uZmlndXJlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5fY29u
ZmlndXJlZAogICAgICAgICBzZWxmLl9jb25maWd1cmVkID0gVHJ1ZQotICAgICAgICBzZWxmLmhv
b2sucHl0ZXN0X2NvbmZpZ3VyZS5jYWxsX2hpc3RvcmljKGt3YXJncz1kaWN0KGNvbmZpZz1zZWxm
KSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAg
d2FybmluZ3Muc2ltcGxlZmlsdGVyKCJkZWZhdWx0IikKKyAgICAgICAgICAgIHNlbGYuaG9vay5w
eXRlc3RfY29uZmlndXJlLmNhbGxfaGlzdG9yaWMoa3dhcmdzPWRpY3QoY29uZmlnPXNlbGYpKQog
Ci0gICAgZGVmIF9lbnN1cmVfdW5jb25maWd1cmUoc2VsZik6CisgICAgZGVmIF9lbnN1cmVfdW5j
b25maWd1cmUoc2VsZikgLT4gTm9uZToKICAgICAgICAgaWYgc2VsZi5fY29uZmlndXJlZDoKICAg
ICAgICAgICAgIHNlbGYuX2NvbmZpZ3VyZWQgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5ob29r
LnB5dGVzdF91bmNvbmZpZ3VyZShjb25maWc9c2VsZikKQEAgLTU5MSwyNSArOTkwLDQ1IEBAIGNs
YXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgZmluID0gc2VsZi5fY2xlYW51cC5wb3Ao
KQogICAgICAgICAgICAgZmluKCkKIAotICAgIGRlZiB3YXJuKHNlbGYsIGNvZGUsIG1lc3NhZ2Us
IGZzbG9jYXRpb249Tm9uZSwgbm9kZWlkPU5vbmUpOgotICAgICAgICAiIiIgZ2VuZXJhdGUgYSB3
YXJuaW5nIGZvciB0aGlzIHRlc3Qgc2Vzc2lvbi4gIiIiCi0gICAgICAgIHNlbGYuaG9vay5weXRl
c3RfbG9nd2FybmluZy5jYWxsX2hpc3RvcmljKAotICAgICAgICAgICAga3dhcmdzPWRpY3QoCi0g
ICAgICAgICAgICAgICAgY29kZT1jb2RlLCBtZXNzYWdlPW1lc3NhZ2UsIGZzbG9jYXRpb249ZnNs
b2NhdGlvbiwgbm9kZWlkPW5vZGVpZAotICAgICAgICAgICAgKQotICAgICAgICApCisgICAgZGVm
IGdldF90ZXJtaW5hbF93cml0ZXIoc2VsZikgLT4gVGVybWluYWxXcml0ZXI6CisgICAgICAgIHRl
cm1pbmFscmVwb3J0ZXIgPSBzZWxmLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigKKyAgICAgICAg
ICAgICJ0ZXJtaW5hbHJlcG9ydGVyIgorICAgICAgICApICAjIHR5cGU6IFRlcm1pbmFsUmVwb3J0
ZXIKKyAgICAgICAgcmV0dXJuIHRlcm1pbmFscmVwb3J0ZXIuX3R3CisKKyAgICBkZWYgcHl0ZXN0
X2NtZGxpbmVfcGFyc2UoCisgICAgICAgIHNlbGYsIHBsdWdpbm1hbmFnZXI6IFB5dGVzdFBsdWdp
bk1hbmFnZXIsIGFyZ3M6IExpc3Rbc3RyXQorICAgICkgLT4gIkNvbmZpZyI6CisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHNlbGYucGFyc2UoYXJncykKKyAgICAgICAgZXhjZXB0IFVzYWdlRXJy
b3I6CisKKyAgICAgICAgICAgICMgSGFuZGxlIC0tdmVyc2lvbiBhbmQgLS1oZWxwIGhlcmUgaW4g
YSBtaW5pbWFsIGZhc2hpb24uCisgICAgICAgICAgICAjIFRoaXMgZ2V0cyBkb25lIHZpYSBoZWxw
Y29uZmlnIG5vcm1hbGx5LCBidXQgaXRzCisgICAgICAgICAgICAjIHB5dGVzdF9jbWRsaW5lX21h
aW4gaXMgbm90IGNhbGxlZCBpbiBjYXNlIG9mIGVycm9ycy4KKyAgICAgICAgICAgIGlmIGdldGF0
dHIoc2VsZi5vcHRpb24sICJ2ZXJzaW9uIiwgRmFsc2UpIG9yICItLXZlcnNpb24iIGluIGFyZ3M6
CisgICAgICAgICAgICAgICAgZnJvbSBfcHl0ZXN0LmhlbHBjb25maWcgaW1wb3J0IHNob3d2ZXJz
aW9uCisKKyAgICAgICAgICAgICAgICBzaG93dmVyc2lvbihzZWxmKQorICAgICAgICAgICAgZWxp
ZiAoCisgICAgICAgICAgICAgICAgZ2V0YXR0cihzZWxmLm9wdGlvbiwgImhlbHAiLCBGYWxzZSkg
b3IgIi0taGVscCIgaW4gYXJncyBvciAiLWgiIGluIGFyZ3MKKyAgICAgICAgICAgICk6CisgICAg
ICAgICAgICAgICAgc2VsZi5fcGFyc2VyLl9nZXRwYXJzZXIoKS5wcmludF9oZWxwKCkKKyAgICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKAorICAgICAgICAgICAgICAgICAgICAiXG5OT1RF
OiBkaXNwbGF5aW5nIG9ubHkgbWluaW1hbCBoZWxwIGR1ZSB0byBVc2FnZUVycm9yLlxuXG4iCisg
ICAgICAgICAgICAgICAgKQogCi0gICAgZGVmIGdldF90ZXJtaW5hbF93cml0ZXIoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigidGVybWluYWxyZXBv
cnRlciIpLl90dworICAgICAgICAgICAgcmFpc2UKIAotICAgIGRlZiBweXRlc3RfY21kbGluZV9w
YXJzZShzZWxmLCBwbHVnaW5tYW5hZ2VyLCBhcmdzKToKLSAgICAgICAgIyBSRUYxIGFzc2VydCBz
ZWxmID09IHBsdWdpbm1hbmFnZXIuY29uZmlnLCAoc2VsZiwgcGx1Z2lubWFuYWdlci5jb25maWcp
Ci0gICAgICAgIHNlbGYucGFyc2UoYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgIGRl
ZiBub3RpZnlfZXhjZXB0aW9uKHNlbGYsIGV4Y2luZm8sIG9wdGlvbj1Ob25lKToKLSAgICAgICAg
aWYgb3B0aW9uIGFuZCBvcHRpb24uZnVsbHRyYWNlOgotICAgICAgICAgICAgc3R5bGUgPSAibG9u
ZyIKKyAgICBkZWYgbm90aWZ5X2V4Y2VwdGlvbigKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZXhj
aW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSwKKyAgICAgICAgb3B0aW9uOiBPcHRp
b25hbFthcmdwYXJzZS5OYW1lc3BhY2VdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAg
IGlmIG9wdGlvbiBhbmQgZ2V0YXR0cihvcHRpb24sICJmdWxsdHJhY2UiLCBGYWxzZSk6CisgICAg
ICAgICAgICBzdHlsZSA9ICJsb25nIiAgIyB0eXBlOiBfVHJhY2ViYWNrU3R5bGUKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHN0eWxlID0gIm5hdGl2ZSIKICAgICAgICAgZXhjcmVwciA9IGV4
Y2luZm8uZ2V0cmVwcigKQEAgLTYyMSw1NCArMTA0MCw2MSBAQCBjbGFzcyBDb25maWcob2JqZWN0
KToKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJJTlRFUk5BTEVSUk9SPiAlc1xu
IiAlIGxpbmUpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAKLSAgICBkZWYg
Y3dkX3JlbGF0aXZlX25vZGVpZChzZWxmLCBub2RlaWQpOgotICAgICAgICAjIG5vZGVpZCdzIGFy
ZSByZWxhdGl2ZSB0byB0aGUgcm9vdHBhdGgsIGNvbXB1dGUgcmVsYXRpdmUgdG8gY3dkCi0gICAg
ICAgIGlmIHNlbGYuaW52b2NhdGlvbl9kaXIgIT0gc2VsZi5yb290ZGlyOgotICAgICAgICAgICAg
ZnVsbHBhdGggPSBzZWxmLnJvb3RkaXIuam9pbihub2RlaWQpCi0gICAgICAgICAgICBub2RlaWQg
PSBzZWxmLmludm9jYXRpb25fZGlyLmJlc3RyZWxwYXRoKGZ1bGxwYXRoKQorICAgIGRlZiBjd2Rf
cmVsYXRpdmVfbm9kZWlkKHNlbGYsIG5vZGVpZDogc3RyKSAtPiBzdHI6CisgICAgICAgICMgbm9k
ZWlkJ3MgYXJlIHJlbGF0aXZlIHRvIHRoZSByb290cGF0aCwgY29tcHV0ZSByZWxhdGl2ZSB0byBj
d2QuCisgICAgICAgIGlmIHNlbGYuaW52b2NhdGlvbl9wYXJhbXMuZGlyICE9IHNlbGYucm9vdHBh
dGg6CisgICAgICAgICAgICBmdWxscGF0aCA9IHNlbGYucm9vdHBhdGggLyBub2RlaWQKKyAgICAg
ICAgICAgIG5vZGVpZCA9IGJlc3RyZWxwYXRoKHNlbGYuaW52b2NhdGlvbl9wYXJhbXMuZGlyLCBm
dWxscGF0aCkKICAgICAgICAgcmV0dXJuIG5vZGVpZAogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAg
ZGVmIGZyb21kaWN0YXJncyhjbHMsIG9wdGlvbl9kaWN0LCBhcmdzKToKLSAgICAgICAgIiIiIGNv
bnN0cnVjdG9yIHVzZWFibGUgZm9yIHN1YnByb2Nlc3Nlcy4gIiIiCi0gICAgICAgIGNvbmZpZyA9
IGdldF9jb25maWcoKQorICAgIGRlZiBmcm9tZGljdGFyZ3MoY2xzLCBvcHRpb25fZGljdCwgYXJn
cykgLT4gIkNvbmZpZyI6CisgICAgICAgICIiIkNvbnN0cnVjdG9yIHVzYWJsZSBmb3Igc3VicHJv
Y2Vzc2VzLiIiIgorICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKGFyZ3MpCiAgICAgICAgIGNv
bmZpZy5vcHRpb24uX19kaWN0X18udXBkYXRlKG9wdGlvbl9kaWN0KQogICAgICAgICBjb25maWcu
cGFyc2UoYXJncywgYWRkb3B0cz1GYWxzZSkKICAgICAgICAgZm9yIHggaW4gY29uZmlnLm9wdGlv
bi5wbHVnaW5zOgogICAgICAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIuY29uc2lkZXJfcGx1
Z2luYXJnKHgpCiAgICAgICAgIHJldHVybiBjb25maWcKIAotICAgIGRlZiBfcHJvY2Vzc29wdChz
ZWxmLCBvcHQpOgorICAgIGRlZiBfcHJvY2Vzc29wdChzZWxmLCBvcHQ6ICJBcmd1bWVudCIpIC0+
IE5vbmU6CiAgICAgICAgIGZvciBuYW1lIGluIG9wdC5fc2hvcnRfb3B0cyArIG9wdC5fbG9uZ19v
cHRzOgogICAgICAgICAgICAgc2VsZi5fb3B0MmRlc3RbbmFtZV0gPSBvcHQuZGVzdAogCi0gICAg
ICAgIGlmIGhhc2F0dHIob3B0LCAiZGVmYXVsdCIpIGFuZCBvcHQuZGVzdDoKKyAgICAgICAgaWYg
aGFzYXR0cihvcHQsICJkZWZhdWx0Iik6CiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxm
Lm9wdGlvbiwgb3B0LmRlc3QpOgogICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5vcHRpb24s
IG9wdC5kZXN0LCBvcHQuZGVmYXVsdCkKIAogICAgIEBob29raW1wbCh0cnlsYXN0PVRydWUpCi0g
ICAgZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKHNlbGYsIGVhcmx5X2NvbmZpZyk6
CisgICAgZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKHNlbGYsIGVhcmx5X2NvbmZp
ZzogIkNvbmZpZyIpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5fc2V0X2lu
aXRpYWxfY29uZnRlc3RzKGVhcmx5X2NvbmZpZy5rbm93bl9hcmdzX25hbWVzcGFjZSkKIAotICAg
IGRlZiBfaW5pdGluaShzZWxmLCBhcmdzKToKKyAgICBkZWYgX2luaXRpbmkoc2VsZiwgYXJnczog
U2VxdWVuY2Vbc3RyXSkgLT4gTm9uZToKICAgICAgICAgbnMsIHVua25vd25fYXJncyA9IHNlbGYu
X3BhcnNlci5wYXJzZV9rbm93bl9hbmRfdW5rbm93bl9hcmdzKAogICAgICAgICAgICAgYXJncywg
bmFtZXNwYWNlPWNvcHkuY29weShzZWxmLm9wdGlvbikKICAgICAgICAgKQotICAgICAgICByID0g
ZGV0ZXJtaW5lX3NldHVwKAorICAgICAgICByb290cGF0aCwgaW5pcGF0aCwgaW5pY2ZnID0gZGV0
ZXJtaW5lX3NldHVwKAogICAgICAgICAgICAgbnMuaW5pZmlsZW5hbWUsCiAgICAgICAgICAgICBu
cy5maWxlX29yX2RpciArIHVua25vd25fYXJncywKLSAgICAgICAgICAgIHdhcm5mdW5jPXNlbGYu
d2FybiwKICAgICAgICAgICAgIHJvb3RkaXJfY21kX2FyZz1ucy5yb290ZGlyIG9yIE5vbmUsCisg
ICAgICAgICAgICBjb25maWc9c2VsZiwKICAgICAgICAgKQotICAgICAgICBzZWxmLnJvb3RkaXIs
IHNlbGYuaW5pZmlsZSwgc2VsZi5pbmljZmcgPSByCi0gICAgICAgIHNlbGYuX3BhcnNlci5leHRy
YV9pbmZvWyJyb290ZGlyIl0gPSBzZWxmLnJvb3RkaXIKLSAgICAgICAgc2VsZi5fcGFyc2VyLmV4
dHJhX2luZm9bImluaWZpbGUiXSA9IHNlbGYuaW5pZmlsZQotICAgICAgICBzZWxmLmludm9jYXRp
b25fZGlyID0gcHkucGF0aC5sb2NhbCgpCisgICAgICAgIHNlbGYuX3Jvb3RwYXRoID0gcm9vdHBh
dGgKKyAgICAgICAgc2VsZi5faW5pcGF0aCA9IGluaXBhdGgKKyAgICAgICAgc2VsZi5pbmljZmcg
PSBpbmljZmcKKyAgICAgICAgc2VsZi5fcGFyc2VyLmV4dHJhX2luZm9bInJvb3RkaXIiXSA9IHN0
cihzZWxmLnJvb3RwYXRoKQorICAgICAgICBzZWxmLl9wYXJzZXIuZXh0cmFfaW5mb1siaW5pZmls
ZSJdID0gc3RyKHNlbGYuaW5pcGF0aCkKICAgICAgICAgc2VsZi5fcGFyc2VyLmFkZGluaSgiYWRk
b3B0cyIsICJleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucyIsICJhcmdzIikKICAgICAgICAgc2Vs
Zi5fcGFyc2VyLmFkZGluaSgibWludmVyc2lvbiIsICJtaW5pbWFsbHkgcmVxdWlyZWQgcHl0ZXN0
IHZlcnNpb24iKQorICAgICAgICBzZWxmLl9wYXJzZXIuYWRkaW5pKAorICAgICAgICAgICAgInJl
cXVpcmVkX3BsdWdpbnMiLAorICAgICAgICAgICAgInBsdWdpbnMgdGhhdCBtdXN0IGJlIHByZXNl
bnQgZm9yIHB5dGVzdCB0byBydW4iLAorICAgICAgICAgICAgdHlwZT0iYXJncyIsCisgICAgICAg
ICAgICBkZWZhdWx0PVtdLAorICAgICAgICApCiAgICAgICAgIHNlbGYuX292ZXJyaWRlX2luaSA9
IG5zLm92ZXJyaWRlX2luaSBvciAoKQogCi0gICAgZGVmIF9jb25zaWRlcl9pbXBvcnRob29rKHNl
bGYsIGFyZ3MpOgorICAgIGRlZiBfY29uc2lkZXJfaW1wb3J0aG9vayhzZWxmLCBhcmdzOiBTZXF1
ZW5jZVtzdHJdKSAtPiBOb25lOgogICAgICAgICAiIiJJbnN0YWxsIHRoZSBQRVAgMzAyIGltcG9y
dCBob29rIGlmIHVzaW5nIGFzc2VydGlvbiByZXdyaXRpbmcuCiAKICAgICAgICAgTmVlZHMgdG8g
cGFyc2UgdGhlIC0tYXNzZXJ0PTxtb2RlPiBvcHRpb24gZnJvbSB0aGUgY29tbWFuZGxpbmUKQEAg
LTY3NiwxNDMgKzExMDIsMjY5IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICBieSB0
aGUgaW1wb3J0aG9vay4KICAgICAgICAgIiIiCiAgICAgICAgIG5zLCB1bmtub3duX2FyZ3MgPSBz
ZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYW5kX3Vua25vd25fYXJncyhhcmdzKQotICAgICAgICBt
b2RlID0gbnMuYXNzZXJ0bW9kZQorICAgICAgICBtb2RlID0gZ2V0YXR0cihucywgImFzc2VydG1v
ZGUiLCAicGxhaW4iKQogICAgICAgICBpZiBtb2RlID09ICJyZXdyaXRlIjoKKyAgICAgICAgICAg
IGltcG9ydCBfcHl0ZXN0LmFzc2VydGlvbgorCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAg
ICAgICAgaG9vayA9IF9weXRlc3QuYXNzZXJ0aW9uLmluc3RhbGxfaW1wb3J0aG9vayhzZWxmKQog
ICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yOgogICAgICAgICAgICAgICAgIG1vZGUgPSAi
cGxhaW4iCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuX21hcmtfcGx1
Z2luc19mb3JfcmV3cml0ZShob29rKQotICAgICAgICBfd2Fybl9hYm91dF9taXNzaW5nX2Fzc2Vy
dGlvbihtb2RlKQorICAgICAgICBzZWxmLl93YXJuX2Fib3V0X21pc3NpbmdfYXNzZXJ0aW9uKG1v
ZGUpCiAKLSAgICBkZWYgX21hcmtfcGx1Z2luc19mb3JfcmV3cml0ZShzZWxmLCBob29rKToKLSAg
ICAgICAgIiIiCi0gICAgICAgIEdpdmVuIGFuIGltcG9ydGhvb2ssIG1hcmsgZm9yIHJld3JpdGUg
YW55IHRvcC1sZXZlbAorICAgIGRlZiBfbWFya19wbHVnaW5zX2Zvcl9yZXdyaXRlKHNlbGYsIGhv
b2spIC0+IE5vbmU6CisgICAgICAgICIiIkdpdmVuIGFuIGltcG9ydGhvb2ssIG1hcmsgZm9yIHJl
d3JpdGUgYW55IHRvcC1sZXZlbAogICAgICAgICBtb2R1bGVzIG9yIHBhY2thZ2VzIGluIHRoZSBk
aXN0cmlidXRpb24gcGFja2FnZSBmb3IKLSAgICAgICAgYWxsIHB5dGVzdCBwbHVnaW5zLgotICAg
ICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHBrZ19yZXNvdXJjZXMKLQorICAgICAgICBhbGwgcHl0
ZXN0IHBsdWdpbnMuIiIiCiAgICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5yZXdyaXRlX2hvb2sg
PSBob29rCiAKLSAgICAgICAgIyAnUkVDT1JEJyBhdmFpbGFibGUgZm9yIHBsdWdpbnMgaW5zdGFs
bGVkIG5vcm1hbGx5IChwaXAgaW5zdGFsbCkKLSAgICAgICAgIyAnU09VUkNFUy50eHQnIGF2YWls
YWJsZSBmb3IgcGx1Z2lucyBpbnN0YWxsZWQgaW4gZGV2IG1vZGUgKHBpcCBpbnN0YWxsIC1lKQot
ICAgICAgICAjIGZvciBpbnN0YWxsZWQgcGx1Z2lucyAnU09VUkNFUy50eHQnIHJldHVybnMgYW4g
ZW1wdHkgbGlzdCwgYW5kIHZpY2UtdmVyc2EKLSAgICAgICAgIyBzbyBpdCBzaG91bGRuJ3QgYmUg
YW4gaXNzdWUKLSAgICAgICAgbWV0YWRhdGFfZmlsZXMgPSAiUkVDT1JEIiwgIlNPVVJDRVMudHh0
IgorICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9M
T0FEIik6CisgICAgICAgICAgICAjIFdlIGRvbid0IGF1dG9sb2FkIGZyb20gc2V0dXB0b29scyBl
bnRyeSBwb2ludHMsIG5vIG5lZWQgdG8gY29udGludWUuCisgICAgICAgICAgICByZXR1cm4KIAog
ICAgICAgICBwYWNrYWdlX2ZpbGVzID0gKAotICAgICAgICAgICAgZW50cnkuc3BsaXQoIiwiKVsw
XQotICAgICAgICAgICAgZm9yIGVudHJ5cG9pbnQgaW4gcGtnX3Jlc291cmNlcy5pdGVyX2VudHJ5
X3BvaW50cygicHl0ZXN0MTEiKQotICAgICAgICAgICAgZm9yIG1ldGFkYXRhIGluIG1ldGFkYXRh
X2ZpbGVzCi0gICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cnlwb2ludC5kaXN0Ll9nZXRfbWV0
YWRhdGEobWV0YWRhdGEpCisgICAgICAgICAgICBzdHIoZmlsZSkKKyAgICAgICAgICAgIGZvciBk
aXN0IGluIGltcG9ydGxpYl9tZXRhZGF0YS5kaXN0cmlidXRpb25zKCkKKyAgICAgICAgICAgIGlm
IGFueShlcC5ncm91cCA9PSAicHl0ZXN0MTEiIGZvciBlcCBpbiBkaXN0LmVudHJ5X3BvaW50cykK
KyAgICAgICAgICAgIGZvciBmaWxlIGluIGRpc3QuZmlsZXMgb3IgW10KICAgICAgICAgKQogCiAg
ICAgICAgIGZvciBuYW1lIGluIF9pdGVyX3Jld3JpdGFibGVfbW9kdWxlcyhwYWNrYWdlX2ZpbGVz
KToKICAgICAgICAgICAgIGhvb2subWFya19yZXdyaXRlKG5hbWUpCiAKLSAgICBkZWYgX3ByZXBh
cnNlKHNlbGYsIGFyZ3MsIGFkZG9wdHM9VHJ1ZSk6CisgICAgZGVmIF92YWxpZGF0ZV9hcmdzKHNl
bGYsIGFyZ3M6IExpc3Rbc3RyXSwgdmlhOiBzdHIpIC0+IExpc3Rbc3RyXToKKyAgICAgICAgIiIi
VmFsaWRhdGUga25vd24gYXJncy4iIiIKKyAgICAgICAgc2VsZi5fcGFyc2VyLl9jb25maWdfc291
cmNlX2hpbnQgPSB2aWEgICMgdHlwZTogaWdub3JlCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHNlbGYuX3BhcnNlci5wYXJzZV9rbm93bl9hbmRfdW5rbm93bl9hcmdzKAorICAgICAgICAgICAg
ICAgIGFyZ3MsIG5hbWVzcGFjZT1jb3B5LmNvcHkoc2VsZi5vcHRpb24pCisgICAgICAgICAgICAp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgc2VsZi5fcGFyc2VyLl9jb25maWdf
c291cmNlX2hpbnQgICMgdHlwZTogaWdub3JlCisKKyAgICAgICAgcmV0dXJuIGFyZ3MKKworICAg
IGRlZiBfcHJlcGFyc2Uoc2VsZiwgYXJnczogTGlzdFtzdHJdLCBhZGRvcHRzOiBib29sID0gVHJ1
ZSkgLT4gTm9uZToKICAgICAgICAgaWYgYWRkb3B0czoKLSAgICAgICAgICAgIGFyZ3NbOl0gPSBz
aGxleC5zcGxpdChvcy5lbnZpcm9uLmdldCgiUFlURVNUX0FERE9QVFMiLCAiIikpICsgYXJncwor
ICAgICAgICAgICAgZW52X2FkZG9wdHMgPSBvcy5lbnZpcm9uLmdldCgiUFlURVNUX0FERE9QVFMi
LCAiIikKKyAgICAgICAgICAgIGlmIGxlbihlbnZfYWRkb3B0cyk6CisgICAgICAgICAgICAgICAg
YXJnc1s6XSA9ICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdmFsaWRhdGVfYXJncyhzaGxl
eC5zcGxpdChlbnZfYWRkb3B0cyksICJ2aWEgUFlURVNUX0FERE9QVFMiKQorICAgICAgICAgICAg
ICAgICAgICArIGFyZ3MKKyAgICAgICAgICAgICAgICApCiAgICAgICAgIHNlbGYuX2luaXRpbmko
YXJncykKICAgICAgICAgaWYgYWRkb3B0czoKLSAgICAgICAgICAgIGFyZ3NbOl0gPSBzZWxmLmdl
dGluaSgiYWRkb3B0cyIpICsgYXJncworICAgICAgICAgICAgYXJnc1s6XSA9ICgKKyAgICAgICAg
ICAgICAgICBzZWxmLl92YWxpZGF0ZV9hcmdzKHNlbGYuZ2V0aW5pKCJhZGRvcHRzIiksICJ2aWEg
YWRkb3B0cyBjb25maWciKSArIGFyZ3MKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmtu
b3duX2FyZ3NfbmFtZXNwYWNlID0gc2VsZi5fcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoCisgICAg
ICAgICAgICBhcmdzLCBuYW1lc3BhY2U9Y29weS5jb3B5KHNlbGYub3B0aW9uKQorICAgICAgICAp
CiAgICAgICAgIHNlbGYuX2NoZWNrdmVyc2lvbigpCiAgICAgICAgIHNlbGYuX2NvbnNpZGVyX2lt
cG9ydGhvb2soYXJncykKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLmNvbnNpZGVyX3ByZXBh
cnNlKGFyZ3MpCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5sb2FkX3NldHVwdG9vbHNfZW50
cnlwb2ludHMoInB5dGVzdDExIikKKyAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLmNvbnNpZGVy
X3ByZXBhcnNlKGFyZ3MsIGV4Y2x1ZGVfb25seT1GYWxzZSkKKyAgICAgICAgaWYgbm90IG9zLmVu
dmlyb24uZ2V0KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiKToKKyAgICAgICAgICAg
ICMgRG9uJ3QgYXV0b2xvYWQgZnJvbSBzZXR1cHRvb2xzIGVudHJ5IHBvaW50LiBPbmx5IGV4cGxp
Y2l0bHkgc3BlY2lmaWVkCisgICAgICAgICAgICAjIHBsdWdpbnMgYXJlIGdvaW5nIHRvIGJlIGxv
YWRlZC4KKyAgICAgICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5sb2FkX3NldHVwdG9vbHNfZW50
cnlwb2ludHMoInB5dGVzdDExIikKICAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLmNvbnNpZGVy
X2VudigpCi0gICAgICAgIHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UgPSBucyA9IHNlbGYuX3Bh
cnNlci5wYXJzZV9rbm93bl9hcmdzKAotICAgICAgICAgICAgYXJncywgbmFtZXNwYWNlPWNvcHku
Y29weShzZWxmLm9wdGlvbikKKworICAgICAgICBzZWxmLmtub3duX2FyZ3NfbmFtZXNwYWNlID0g
c2VsZi5fcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoCisgICAgICAgICAgICBhcmdzLCBuYW1lc3Bh
Y2U9Y29weS5jb3B5KHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UpCiAgICAgICAgICkKLSAgICAg
ICAgaWYgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5jb25mY3V0ZGlyIGlzIE5vbmUgYW5kIHNl
bGYuaW5pZmlsZToKLSAgICAgICAgICAgIGNvbmZjdXRkaXIgPSBweS5wYXRoLmxvY2FsKHNlbGYu
aW5pZmlsZSkuZGlybmFtZQorCisgICAgICAgIHNlbGYuX3ZhbGlkYXRlX3BsdWdpbnMoKQorICAg
ICAgICBzZWxmLl93YXJuX2Fib3V0X3NraXBwZWRfcGx1Z2lucygpCisKKyAgICAgICAgaWYgc2Vs
Zi5rbm93bl9hcmdzX25hbWVzcGFjZS5jb25mY3V0ZGlyIGlzIE5vbmUgYW5kIHNlbGYuaW5pcGF0
aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbmZjdXRkaXIgPSBzdHIoc2VsZi5pbmlwYXRo
LnBhcmVudCkKICAgICAgICAgICAgIHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UuY29uZmN1dGRp
ciA9IGNvbmZjdXRkaXIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5ob29rLnB5dGVz
dF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKAogICAgICAgICAgICAgICAgIGVhcmx5X2NvbmZpZz1z
ZWxmLCBhcmdzPWFyZ3MsIHBhcnNlcj1zZWxmLl9wYXJzZXIKICAgICAgICAgICAgICkKLSAgICAg
ICAgZXhjZXB0IENvbmZ0ZXN0SW1wb3J0RmFpbHVyZToKLSAgICAgICAgICAgIGUgPSBzeXMuZXhj
X2luZm8oKVsxXQotICAgICAgICAgICAgaWYgbnMuaGVscCBvciBucy52ZXJzaW9uOgorICAgICAg
ICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlIGFzIGU6CisgICAgICAgICAgICBpZiBzZWxm
Lmtub3duX2FyZ3NfbmFtZXNwYWNlLmhlbHAgb3Igc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS52
ZXJzaW9uOgogICAgICAgICAgICAgICAgICMgd2UgZG9uJ3Qgd2FudCB0byBwcmV2ZW50IC0taGVs
cC8tLXZlcnNpb24gdG8gd29yawogICAgICAgICAgICAgICAgICMgc28ganVzdCBsZXQgaXMgcGFz
cyBhbmQgcHJpbnQgYSB3YXJuaW5nIGF0IHRoZSBlbmQKLSAgICAgICAgICAgICAgICBzZWxmLl93
YXJuKCJjb3VsZCBub3QgbG9hZCBpbml0aWFsIGNvbmZ0ZXN0cyAoJXMpXG4iICUgZS5wYXRoKQor
ICAgICAgICAgICAgICAgIHNlbGYuaXNzdWVfY29uZmlnX3RpbWVfd2FybmluZygKKyAgICAgICAg
ICAgICAgICAgICAgUHl0ZXN0Q29uZmlnV2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJjb3VsZCBub3QgbG9hZCBpbml0aWFsIGNvbmZ0ZXN0czoge30iLmZvcm1hdChlLnBhdGgpCisg
ICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwK
KyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJh
aXNlCiAKLSAgICBkZWYgX2NoZWNrdmVyc2lvbihzZWxmKToKKyAgICBAaG9va2ltcGwoaG9va3dy
YXBwZXI9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2VsZikgLT4gR2VuZXJhdG9y
W05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICAiIiJWYWxpZGF0ZSBpbnZhbGlkIGluaSBrZXlz
IGFmdGVyIGNvbGxlY3Rpb24gaXMgZG9uZSBzbyB3ZSB0YWtlIGluIGFjY291bnQKKyAgICAgICAg
b3B0aW9ucyBhZGRlZCBieSBsYXRlLWxvYWRpbmcgY29uZnRlc3QgZmlsZXMuIiIiCisgICAgICAg
IHlpZWxkCisgICAgICAgIHNlbGYuX3ZhbGlkYXRlX2NvbmZpZ19vcHRpb25zKCkKKworICAgIGRl
ZiBfY2hlY2t2ZXJzaW9uKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGltcG9ydCBweXRlc3QKIAog
ICAgICAgICBtaW52ZXIgPSBzZWxmLmluaWNmZy5nZXQoIm1pbnZlcnNpb24iLCBOb25lKQogICAg
ICAgICBpZiBtaW52ZXI6Ci0gICAgICAgICAgICB2ZXIgPSBtaW52ZXIuc3BsaXQoIi4iKQotICAg
ICAgICAgICAgbXl2ZXIgPSBweXRlc3QuX192ZXJzaW9uX18uc3BsaXQoIi4iKQotICAgICAgICAg
ICAgaWYgbXl2ZXIgPCB2ZXI6CisgICAgICAgICAgICAjIEltcG9ydGVkIGxhemlseSB0byBpbXBy
b3ZlIHN0YXJ0LXVwIHRpbWUuCisgICAgICAgICAgICBmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGlt
cG9ydCBWZXJzaW9uCisKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1pbnZlciwgc3Ry
KToKICAgICAgICAgICAgICAgICByYWlzZSBweXRlc3QuVXNhZ2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgIiVzOiVkOiByZXF1aXJlcyBweXRlc3QtJXMsIGFjdHVhbCBweXRlc3QtJXMnIgot
ICAgICAgICAgICAgICAgICAgICAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5p
Y2ZnLmNvbmZpZy5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmljZmcubGlu
ZW9mKCJtaW52ZXJzaW9uIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBtaW52ZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBweXRlc3QuX192ZXJzaW9uX18sCi0gICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgIiVzOiAnbWludmVyc2lvbicgbXVzdCBiZSBhIHNp
bmdsZSB2YWx1ZSIgJSBzZWxmLmluaXBhdGgKICAgICAgICAgICAgICAgICApCiAKLSAgICBkZWYg
cGFyc2Uoc2VsZiwgYXJncywgYWRkb3B0cz1UcnVlKToKLSAgICAgICAgIyBwYXJzZSBnaXZlbiBj
bWRsaW5lIGFyZ3VtZW50cyBpbnRvIHRoaXMgY29uZmlnIG9iamVjdC4KKyAgICAgICAgICAgIGlm
IFZlcnNpb24obWludmVyKSA+IFZlcnNpb24ocHl0ZXN0Ll9fdmVyc2lvbl9fKToKKyAgICAgICAg
ICAgICAgICByYWlzZSBweXRlc3QuVXNhZ2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIiVz
OiAnbWludmVyc2lvbicgcmVxdWlyZXMgcHl0ZXN0LSVzLCBhY3R1YWwgcHl0ZXN0LSVzJyIKKyAg
ICAgICAgICAgICAgICAgICAgJSAoc2VsZi5pbmlwYXRoLCBtaW52ZXIsIHB5dGVzdC5fX3ZlcnNp
b25fXywpCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF92YWxpZGF0ZV9jb25maWdfb3B0
aW9ucyhzZWxmKSAtPiBOb25lOgorICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChzZWxmLl9nZXRf
dW5rbm93bl9pbmlfa2V5cygpKToKKyAgICAgICAgICAgIHNlbGYuX3dhcm5fb3JfZmFpbF9pZl9z
dHJpY3QoIlVua25vd24gY29uZmlnIG9wdGlvbjoge31cbiIuZm9ybWF0KGtleSkpCisKKyAgICBk
ZWYgX3ZhbGlkYXRlX3BsdWdpbnMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgcmVxdWlyZWRfcGx1
Z2lucyA9IHNvcnRlZChzZWxmLmdldGluaSgicmVxdWlyZWRfcGx1Z2lucyIpKQorICAgICAgICBp
ZiBub3QgcmVxdWlyZWRfcGx1Z2luczoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMg
SW1wb3J0ZWQgbGF6aWx5IHRvIGltcHJvdmUgc3RhcnQtdXAgdGltZS4KKyAgICAgICAgZnJvbSBw
YWNrYWdpbmcudmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorICAgICAgICBmcm9tIHBhY2thZ2luZy5y
ZXF1aXJlbWVudHMgaW1wb3J0IEludmFsaWRSZXF1aXJlbWVudCwgUmVxdWlyZW1lbnQKKworICAg
ICAgICBwbHVnaW5faW5mbyA9IHNlbGYucGx1Z2lubWFuYWdlci5saXN0X3BsdWdpbl9kaXN0aW5m
bygpCisgICAgICAgIHBsdWdpbl9kaXN0X2luZm8gPSB7ZGlzdC5wcm9qZWN0X25hbWU6IGRpc3Qu
dmVyc2lvbiBmb3IgXywgZGlzdCBpbiBwbHVnaW5faW5mb30KKworICAgICAgICBtaXNzaW5nX3Bs
dWdpbnMgPSBbXQorICAgICAgICBmb3IgcmVxdWlyZWRfcGx1Z2luIGluIHJlcXVpcmVkX3BsdWdp
bnM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3BlYyA9IFJlcXVpcmVtZW50
KHJlcXVpcmVkX3BsdWdpbikKKyAgICAgICAgICAgIGV4Y2VwdCBJbnZhbGlkUmVxdWlyZW1lbnQ6
CisgICAgICAgICAgICAgICAgbWlzc2luZ19wbHVnaW5zLmFwcGVuZChyZXF1aXJlZF9wbHVnaW4p
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgc3BlYy5uYW1lIG5v
dCBpbiBwbHVnaW5fZGlzdF9pbmZvOgorICAgICAgICAgICAgICAgIG1pc3NpbmdfcGx1Z2lucy5h
cHBlbmQocmVxdWlyZWRfcGx1Z2luKQorICAgICAgICAgICAgZWxpZiBWZXJzaW9uKHBsdWdpbl9k
aXN0X2luZm9bc3BlYy5uYW1lXSkgbm90IGluIHNwZWMuc3BlY2lmaWVyOgorICAgICAgICAgICAg
ICAgIG1pc3NpbmdfcGx1Z2lucy5hcHBlbmQocmVxdWlyZWRfcGx1Z2luKQorCisgICAgICAgIGlm
IG1pc3NpbmdfcGx1Z2luczoKKyAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoCisgICAgICAg
ICAgICAgICAgIk1pc3NpbmcgcmVxdWlyZWQgcGx1Z2luczoge30iLmZvcm1hdCgiLCAiLmpvaW4o
bWlzc2luZ19wbHVnaW5zKSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgX3dhcm5fb3JfZmFp
bF9pZl9zdHJpY3Qoc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgICAgICBpZiBzZWxm
Lmtub3duX2FyZ3NfbmFtZXNwYWNlLnN0cmljdF9jb25maWc6CisgICAgICAgICAgICByYWlzZSBV
c2FnZUVycm9yKG1lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5pc3N1ZV9jb25maWdfdGltZV93YXJu
aW5nKFB5dGVzdENvbmZpZ1dhcm5pbmcobWVzc2FnZSksIHN0YWNrbGV2ZWw9MykKKworICAgIGRl
ZiBfZ2V0X3Vua25vd25faW5pX2tleXMoc2VsZikgLT4gTGlzdFtzdHJdOgorICAgICAgICBwYXJz
ZXJfaW5pY2ZnID0gc2VsZi5fcGFyc2VyLl9pbmlkaWN0CisgICAgICAgIHJldHVybiBbbmFtZSBm
b3IgbmFtZSBpbiBzZWxmLmluaWNmZyBpZiBuYW1lIG5vdCBpbiBwYXJzZXJfaW5pY2ZnXQorCisg
ICAgZGVmIHBhcnNlKHNlbGYsIGFyZ3M6IExpc3Rbc3RyXSwgYWRkb3B0czogYm9vbCA9IFRydWUp
IC0+IE5vbmU6CisgICAgICAgICMgUGFyc2UgZ2l2ZW4gY21kbGluZSBhcmd1bWVudHMgaW50byB0
aGlzIGNvbmZpZyBvYmplY3QuCiAgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cigKICAgICAgICAg
ICAgIHNlbGYsICJhcmdzIgogICAgICAgICApLCAiY2FuIG9ubHkgcGFyc2UgY21kbGluZSBhcmdz
IGF0IG1vc3Qgb25jZSBwZXIgQ29uZmlnIG9iamVjdCIKLSAgICAgICAgc2VsZi5fb3JpZ2FyZ3Mg
PSBhcmdzCiAgICAgICAgIHNlbGYuaG9vay5weXRlc3RfYWRkaG9va3MuY2FsbF9oaXN0b3JpYygK
ICAgICAgICAgICAgIGt3YXJncz1kaWN0KHBsdWdpbm1hbmFnZXI9c2VsZi5wbHVnaW5tYW5hZ2Vy
KQogICAgICAgICApCiAgICAgICAgIHNlbGYuX3ByZXBhcnNlKGFyZ3MsIGFkZG9wdHM9YWRkb3B0
cykKICAgICAgICAgIyBYWFggZGVwcmVjYXRlZCBob29rOgogICAgICAgICBzZWxmLmhvb2sucHl0
ZXN0X2NtZGxpbmVfcHJlcGFyc2UoY29uZmlnPXNlbGYsIGFyZ3M9YXJncykKLSAgICAgICAgc2Vs
Zi5fcGFyc2VyLmFmdGVyX3ByZXBhcnNlID0gVHJ1ZQorICAgICAgICBzZWxmLl9wYXJzZXIuYWZ0
ZXJfcHJlcGFyc2UgPSBUcnVlICAjIHR5cGU6IGlnbm9yZQogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBhcmdzID0gc2VsZi5fcGFyc2VyLnBhcnNlX3NldG9wdGlvbigKICAgICAgICAgICAgICAg
ICBhcmdzLCBzZWxmLm9wdGlvbiwgbmFtZXNwYWNlPXNlbGYub3B0aW9uCiAgICAgICAgICAgICAp
CiAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRj
d2QoKQotICAgICAgICAgICAgICAgIGlmIGN3ZCA9PSBzZWxmLnJvb3RkaXI6CisgICAgICAgICAg
ICAgICAgaWYgc2VsZi5pbnZvY2F0aW9uX3BhcmFtcy5kaXIgPT0gc2VsZi5yb290cGF0aDoKICAg
ICAgICAgICAgICAgICAgICAgYXJncyA9IHNlbGYuZ2V0aW5pKCJ0ZXN0cGF0aHMiKQogICAgICAg
ICAgICAgICAgIGlmIG5vdCBhcmdzOgotICAgICAgICAgICAgICAgICAgICBhcmdzID0gW2N3ZF0K
KyAgICAgICAgICAgICAgICAgICAgYXJncyA9IFtzdHIoc2VsZi5pbnZvY2F0aW9uX3BhcmFtcy5k
aXIpXQogICAgICAgICAgICAgc2VsZi5hcmdzID0gYXJncwogICAgICAgICBleGNlcHQgUHJpbnRI
ZWxwOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIGFkZGluaXZhbHVlX2xpbmUoc2VsZiwg
bmFtZSwgbGluZSk6Ci0gICAgICAgICIiIiBhZGQgYSBsaW5lIHRvIGFuIGluaS1maWxlIG9wdGlv
bi4gVGhlIG9wdGlvbiBtdXN0IGhhdmUgYmVlbgotICAgICAgICBkZWNsYXJlZCBidXQgbWlnaHQg
bm90IHlldCBiZSBzZXQgaW4gd2hpY2ggY2FzZSB0aGUgbGluZSBiZWNvbWVzIHRoZQotICAgICAg
ICB0aGUgZmlyc3QgbGluZSBpbiBpdHMgdmFsdWUuICIiIgorICAgIGRlZiBpc3N1ZV9jb25maWdf
dGltZV93YXJuaW5nKHNlbGYsIHdhcm5pbmc6IFdhcm5pbmcsIHN0YWNrbGV2ZWw6IGludCkgLT4g
Tm9uZToKKyAgICAgICAgIiIiSXNzdWUgYW5kIGhhbmRsZSBhIHdhcm5pbmcgZHVyaW5nIHRoZSAi
Y29uZmlndXJlIiBzdGFnZS4KKworICAgICAgICBEdXJpbmcgYGBweXRlc3RfY29uZmlndXJlYGAg
d2UgY2FuJ3QgY2FwdHVyZSB3YXJuaW5ncyB1c2luZyB0aGUgYGBjYXRjaF93YXJuaW5nc19mb3Jf
aXRlbWBgCisgICAgICAgIGZ1bmN0aW9uIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGhh
dmUgaG9va3dyYXBwZXJzIGFyb3VuZCBgYHB5dGVzdF9jb25maWd1cmVgYC4KKworICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIG1haW5seSBpbnRlbmRlZCBmb3IgcGx1Z2lucyB0aGF0IG5lZWQgdG8g
aXNzdWUgd2FybmluZ3MgZHVyaW5nCisgICAgICAgIGBgcHl0ZXN0X2NvbmZpZ3VyZWBgIChvciBz
aW1pbGFyIHN0YWdlcykuCisKKyAgICAgICAgOnBhcmFtIHdhcm5pbmc6IFRoZSB3YXJuaW5nIGlu
c3RhbmNlLgorICAgICAgICA6cGFyYW0gc3RhY2tsZXZlbDogc3RhY2tsZXZlbCBmb3J3YXJkZWQg
dG8gd2FybmluZ3Mud2Fybi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYucGx1Z2lubWFu
YWdlci5pc19ibG9ja2VkKCJ3YXJuaW5ncyIpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgY21kbGluZV9maWx0ZXJzID0gc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5weXRob253YXJu
aW5ncyBvciBbXQorICAgICAgICBjb25maWdfZmlsdGVycyA9IHNlbGYuZ2V0aW5pKCJmaWx0ZXJ3
YXJuaW5ncyIpCisKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9
VHJ1ZSkgYXMgcmVjb3JkczoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3
YXlzIiwgdHlwZSh3YXJuaW5nKSkKKyAgICAgICAgICAgIGFwcGx5X3dhcm5pbmdfZmlsdGVycyhj
b25maWdfZmlsdGVycywgY21kbGluZV9maWx0ZXJzKQorICAgICAgICAgICAgd2FybmluZ3Mud2Fy
bih3YXJuaW5nLCBzdGFja2xldmVsPXN0YWNrbGV2ZWwpCisKKyAgICAgICAgaWYgcmVjb3JkczoK
KyAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZShzdGFja2xldmVsIC0gMSkKKyAgICAg
ICAgICAgIGxvY2F0aW9uID0gZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lLCBmcmFtZS5mX2xpbmVu
bywgZnJhbWUuZl9jb2RlLmNvX25hbWUKKyAgICAgICAgICAgIHNlbGYuaG9vay5weXRlc3Rfd2Fy
bmluZ19jYXB0dXJlZC5jYWxsX2hpc3RvcmljKAorICAgICAgICAgICAgICAgIGt3YXJncz1kaWN0
KAorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nX21lc3NhZ2U9cmVjb3Jkc1swXSwKKyAgICAg
ICAgICAgICAgICAgICAgd2hlbj0iY29uZmlnIiwKKyAgICAgICAgICAgICAgICAgICAgaXRlbT1O
b25lLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj1sb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X3dhcm5p
bmdfcmVjb3JkZWQuY2FsbF9oaXN0b3JpYygKKyAgICAgICAgICAgICAgICBrd2FyZ3M9ZGljdCgK
KyAgICAgICAgICAgICAgICAgICAgd2FybmluZ19tZXNzYWdlPXJlY29yZHNbMF0sCisgICAgICAg
ICAgICAgICAgICAgIHdoZW49ImNvbmZpZyIsCisgICAgICAgICAgICAgICAgICAgIG5vZGVpZD0i
IiwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249bG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIGFkZGluaXZhbHVlX2xpbmUoc2VsZiwgbmFt
ZTogc3RyLCBsaW5lOiBzdHIpIC0+IE5vbmU6CisgICAgICAgICIiIkFkZCBhIGxpbmUgdG8gYW4g
aW5pLWZpbGUgb3B0aW9uLiBUaGUgb3B0aW9uIG11c3QgaGF2ZSBiZWVuCisgICAgICAgIGRlY2xh
cmVkIGJ1dCBtaWdodCBub3QgeWV0IGJlIHNldCBpbiB3aGljaCBjYXNlIHRoZSBsaW5lIGJlY29t
ZXMKKyAgICAgICAgdGhlIGZpcnN0IGxpbmUgaW4gaXRzIHZhbHVlLiIiIgogICAgICAgICB4ID0g
c2VsZi5nZXRpbmkobmFtZSkKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoeCwgbGlzdCkKICAg
ICAgICAgeC5hcHBlbmQobGluZSkgICMgbW9kaWZpZXMgdGhlIGNhY2hlZCBsaXN0IGlubGluZQog
Ci0gICAgZGVmIGdldGluaShzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiIHJldHVybiBjb25maWd1
cmF0aW9uIHZhbHVlIGZyb20gYW4gOnJlZjpgaW5pIGZpbGUgPGluaWZpbGVzPmAuIElmIHRoZQot
ICAgICAgICBzcGVjaWZpZWQgbmFtZSBoYXNuJ3QgYmVlbiByZWdpc3RlcmVkIHRocm91Z2ggYSBw
cmlvcgotICAgICAgICA6cHk6ZnVuYzpgcGFyc2VyLmFkZGluaSA8X3B5dGVzdC5jb25maWcuUGFy
c2VyLmFkZGluaT5gCi0gICAgICAgIGNhbGwgKHVzdWFsbHkgZnJvbSBhIHBsdWdpbiksIGEgVmFs
dWVFcnJvciBpcyByYWlzZWQuICIiIgorICAgIGRlZiBnZXRpbmkoc2VsZiwgbmFtZTogc3RyKToK
KyAgICAgICAgIiIiUmV0dXJuIGNvbmZpZ3VyYXRpb24gdmFsdWUgZnJvbSBhbiA6cmVmOmBpbmkg
ZmlsZSA8Y29uZmlnZmlsZXM+YC4KKworICAgICAgICBJZiB0aGUgc3BlY2lmaWVkIG5hbWUgaGFz
bid0IGJlZW4gcmVnaXN0ZXJlZCB0aHJvdWdoIGEgcHJpb3IKKyAgICAgICAgOnB5OmZ1bmM6YHBh
cnNlci5hZGRpbmkgPF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcuUGFyc2VyLmFkZGluaT5gCisg
ICAgICAgIGNhbGwgKHVzdWFsbHkgZnJvbSBhIHBsdWdpbiksIGEgVmFsdWVFcnJvciBpcyByYWlz
ZWQuCisgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
aW5pY2FjaGVbbmFtZV0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgc2Vs
Zi5faW5pY2FjaGVbbmFtZV0gPSB2YWwgPSBzZWxmLl9nZXRpbmkobmFtZSkKICAgICAgICAgICAg
IHJldHVybiB2YWwKIAotICAgIGRlZiBfZ2V0aW5pKHNlbGYsIG5hbWUpOgorICAgIGRlZiBfZ2V0
aW5pKHNlbGYsIG5hbWU6IHN0cik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRlc2NyaXB0
aW9uLCB0eXBlLCBkZWZhdWx0ID0gc2VsZi5fcGFyc2VyLl9pbmlkaWN0W25hbWVdCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24g
Y29uZmlndXJhdGlvbiB2YWx1ZTogJXIiICUgKG5hbWUsKSkKLSAgICAgICAgdmFsdWUgPSBzZWxm
Ll9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKG5hbWUpCi0gICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6
CisgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigidW5rbm93biBjb25maWd1cmF0aW9uIHZhbHVlOiB7IXJ9Ii5mb3JtYXQobmFtZSkpIGZy
b20gZQorICAgICAgICBvdmVycmlkZV92YWx1ZSA9IHNlbGYuX2dldF9vdmVycmlkZV9pbmlfdmFs
dWUobmFtZSkKKyAgICAgICAgaWYgb3ZlcnJpZGVfdmFsdWUgaXMgTm9uZToKICAgICAgICAgICAg
IHRyeToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuaW5pY2ZnW25hbWVdCiAgICAgICAg
ICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC04MjEsNTggKzEzNzMsODYgQEAgY2xhc3MgQ29uZmln
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgdHlwZSBpcyBOb25lOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHZhbHVlID0gb3ZlcnJpZGVfdmFsdWUKKyAgICAgICAgIyBDb2VyY2Ug
dGhlIHZhbHVlcyBiYXNlZCBvbiB0eXBlcy4KKyAgICAgICAgIworICAgICAgICAjIE5vdGU6IHNv
bWUgY29lcmNpb25zIGFyZSBvbmx5IHJlcXVpcmVkIGlmIHdlIGFyZSByZWFkaW5nIGZyb20gLmlu
aSBmaWxlcywgYmVjYXVzZQorICAgICAgICAjIHRoZSBmaWxlIGZvcm1hdCBkb2Vzbid0IGNvbnRh
aW4gdHlwZSBpbmZvcm1hdGlvbiwgYnV0IHdoZW4gcmVhZGluZyBmcm9tIHRvbWwgd2Ugd2lsbAor
ICAgICAgICAjIGdldCBlaXRoZXIgc3RyIG9yIGxpc3Qgb2Ygc3RyIHZhbHVlcyAoc2VlIF9wYXJz
ZV9pbmlfY29uZmlnX2Zyb21fcHlwcm9qZWN0X3RvbWwpLgorICAgICAgICAjIEZvciBleGFtcGxl
OgorICAgICAgICAjCisgICAgICAgICMgICBpbmk6CisgICAgICAgICMgICAgIGFfbGluZV9saXN0
ID0gInRlc3RzIGFjY2VwdGFuY2UiCisgICAgICAgICMgICBpbiB0aGlzIGNhc2UsIHdlIG5lZWQg
dG8gc3BsaXQgdGhlIHN0cmluZyB0byBvYnRhaW4gYSBsaXN0IG9mIHN0cmluZ3MuCisgICAgICAg
ICMKKyAgICAgICAgIyAgIHRvbWw6CisgICAgICAgICMgICAgIGFfbGluZV9saXN0ID0gWyJ0ZXN0
cyIsICJhY2NlcHRhbmNlIl0KKyAgICAgICAgIyAgIGluIHRoaXMgY2FzZSwgd2UgYWxyZWFkeSBo
YXZlIGEgbGlzdCByZWFkeSB0byB1c2UuCisgICAgICAgICMKICAgICAgICAgaWYgdHlwZSA9PSAi
cGF0aGxpc3QiOgotICAgICAgICAgICAgZHAgPSBweS5wYXRoLmxvY2FsKHNlbGYuaW5pY2ZnLmNv
bmZpZy5wYXRoKS5kaXJwYXRoKCkKLSAgICAgICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgICAg
ICBmb3IgcmVscGF0aCBpbiBzaGxleC5zcGxpdCh2YWx1ZSk6Ci0gICAgICAgICAgICAgICAgdmFs
dWVzLmFwcGVuZChkcC5qb2luKHJlbHBhdGgsIGFicz1UcnVlKSkKLSAgICAgICAgICAgIHJldHVy
biB2YWx1ZXMKKyAgICAgICAgICAgICMgVE9ETzogVGhpcyBhc3NlcnQgaXMgcHJvYmFibHkgbm90
IHZhbGlkIGluIGFsbCBjYXNlcy4KKyAgICAgICAgICAgIGFzc2VydCBzZWxmLmluaXBhdGggaXMg
bm90IE5vbmUKKyAgICAgICAgICAgIGRwID0gc2VsZi5pbmlwYXRoLnBhcmVudAorICAgICAgICAg
ICAgaW5wdXRfdmFsdWVzID0gc2hsZXguc3BsaXQodmFsdWUpIGlmIGlzaW5zdGFuY2UodmFsdWUs
IHN0cikgZWxzZSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuIFtweS5wYXRoLmxvY2FsKHN0cihk
cCAvIHgpKSBmb3IgeCBpbiBpbnB1dF92YWx1ZXNdCiAgICAgICAgIGVsaWYgdHlwZSA9PSAiYXJn
cyI6Ci0gICAgICAgICAgICByZXR1cm4gc2hsZXguc3BsaXQodmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gc2hsZXguc3BsaXQodmFsdWUpIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cikgZWxzZSB2
YWx1ZQogICAgICAgICBlbGlmIHR5cGUgPT0gImxpbmVsaXN0IjoKLSAgICAgICAgICAgIHJldHVy
biBbdCBmb3IgdCBpbiBtYXAobGFtYmRhIHg6IHguc3RyaXAoKSwgdmFsdWUuc3BsaXQoIlxuIikp
IGlmIHRdCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAg
ICAgICAgIHJldHVybiBbdCBmb3IgdCBpbiBtYXAobGFtYmRhIHg6IHguc3RyaXAoKSwgdmFsdWUu
c3BsaXQoIlxuIikpIGlmIHRdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJl
dHVybiB2YWx1ZQogICAgICAgICBlbGlmIHR5cGUgPT0gImJvb2wiOgotICAgICAgICAgICAgcmV0
dXJuIGJvb2woX3N0cnRvYm9vbCh2YWx1ZS5zdHJpcCgpKSkKKyAgICAgICAgICAgIHJldHVybiBf
c3RydG9ib29sKHN0cih2YWx1ZSkuc3RyaXAoKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IGFzc2VydCB0eXBlIGlzIE5vbmUKICAgICAgICAgICAgIHJldHVybiB2YWx1ZQogCi0gICAgZGVm
IF9nZXRjb25mdGVzdF9wYXRobGlzdChzZWxmLCBuYW1lLCBwYXRoKToKKyAgICBkZWYgX2dldGNv
bmZ0ZXN0X3BhdGhsaXN0KAorICAgICAgICBzZWxmLCBuYW1lOiBzdHIsIHBhdGg6IHB5LnBhdGgu
bG9jYWwKKyAgICApIC0+IE9wdGlvbmFsW0xpc3RbcHkucGF0aC5sb2NhbF1dOgogICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBtb2QsIHJlbHJvb3RzID0gc2VsZi5wbHVnaW5tYW5hZ2VyLl9yZ2V0
X3dpdGhfY29uZm1vZChuYW1lLCBwYXRoKQorICAgICAgICAgICAgbW9kLCByZWxyb290cyA9IHNl
bGYucGx1Z2lubWFuYWdlci5fcmdldF93aXRoX2NvbmZtb2QoCisgICAgICAgICAgICAgICAgbmFt
ZSwgcGF0aCwgc2VsZi5nZXRvcHRpb24oImltcG9ydG1vZGUiKQorICAgICAgICAgICAgKQogICAg
ICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBt
b2RwYXRoID0gcHkucGF0aC5sb2NhbChtb2QuX19maWxlX18pLmRpcnBhdGgoKQotICAgICAgICB2
YWx1ZXMgPSBbXQorICAgICAgICB2YWx1ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3B5LnBhdGgubG9j
YWxdCiAgICAgICAgIGZvciByZWxyb290IGluIHJlbHJvb3RzOgogICAgICAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UocmVscm9vdCwgcHkucGF0aC5sb2NhbCk6Ci0gICAgICAgICAgICAgICAgcmVs
cm9vdCA9IHJlbHJvb3QucmVwbGFjZSgiLyIsIHB5LnBhdGgubG9jYWwuc2VwKQorICAgICAgICAg
ICAgICAgIHJlbHJvb3QgPSByZWxyb290LnJlcGxhY2UoIi8iLCBvcy5zZXApCiAgICAgICAgICAg
ICAgICAgcmVscm9vdCA9IG1vZHBhdGguam9pbihyZWxyb290LCBhYnM9VHJ1ZSkKICAgICAgICAg
ICAgIHZhbHVlcy5hcHBlbmQocmVscm9vdCkKICAgICAgICAgcmV0dXJuIHZhbHVlcwogCi0gICAg
ZGVmIF9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKHNlbGYsIG5hbWUpOgorICAgIGRlZiBfZ2V0X292
ZXJyaWRlX2luaV92YWx1ZShzZWxmLCBuYW1lOiBzdHIpIC0+IE9wdGlvbmFsW3N0cl06CiAgICAg
ICAgIHZhbHVlID0gTm9uZQotICAgICAgICAjIG92ZXJyaWRlX2luaSBpcyBhIGxpc3Qgb2YgImlu
aT12YWx1ZSIgb3B0aW9ucwotICAgICAgICAjIGFsd2F5cyB1c2UgdGhlIGxhc3QgaXRlbSBpZiBt
dWx0aXBsZSB2YWx1ZXMgYXJlIHNldCBmb3Igc2FtZSBpbmktbmFtZSwKLSAgICAgICAgIyBlLmcu
IC1vIGZvbz1iYXIxIC1vIGZvbz1iYXIyIHdpbGwgc2V0IGZvbyB0byBiYXIyCisgICAgICAgICMg
b3ZlcnJpZGVfaW5pIGlzIGEgbGlzdCBvZiAiaW5pPXZhbHVlIiBvcHRpb25zLgorICAgICAgICAj
IEFsd2F5cyB1c2UgdGhlIGxhc3QgaXRlbSBpZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIHNldCBmb3Ig
c2FtZSBpbmktbmFtZSwKKyAgICAgICAgIyBlLmcuIC1vIGZvbz1iYXIxIC1vIGZvbz1iYXIyIHdp
bGwgc2V0IGZvbyB0byBiYXIyLgogICAgICAgICBmb3IgaW5pX2NvbmZpZyBpbiBzZWxmLl9vdmVy
cmlkZV9pbmk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAga2V5LCB1c2VyX2lu
aV92YWx1ZSA9IGluaV9jb25maWcuc3BsaXQoIj0iLCAxKQotICAgICAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigiLW8vLS1vdmVycmlk
ZS1pbmkgZXhwZWN0cyBvcHRpb249dmFsdWUgc3R5bGUuIikKKyAgICAgICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigKKyAgICAg
ICAgICAgICAgICAgICAgIi1vLy0tb3ZlcnJpZGUtaW5pIGV4cGVjdHMgb3B0aW9uPXZhbHVlIHN0
eWxlIChnb3Q6IHshcn0pLiIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgaW5pX2Nv
bmZpZworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKSBmcm9tIGUKICAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYga2V5ID09IG5hbWU6CiAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlID0gdXNlcl9pbmlfdmFsdWUKICAgICAgICAgcmV0dXJuIHZhbHVl
CiAKLSAgICBkZWYgZ2V0b3B0aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHQ9bm90c2V0LCBza2lwPUZh
bHNlKToKLSAgICAgICAgIiIiIHJldHVybiBjb21tYW5kIGxpbmUgb3B0aW9uIHZhbHVlLgorICAg
IGRlZiBnZXRvcHRpb24oc2VsZiwgbmFtZTogc3RyLCBkZWZhdWx0PW5vdHNldCwgc2tpcDogYm9v
bCA9IEZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJuIGNvbW1hbmQgbGluZSBvcHRpb24gdmFsdWUu
CiAKLSAgICAgICAgOmFyZyBuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24uICBZb3UgbWF5IGFsc28g
c3BlY2lmeQorICAgICAgICA6cGFyYW0gbmFtZTogTmFtZSBvZiB0aGUgb3B0aW9uLiAgWW91IG1h
eSBhbHNvIHNwZWNpZnkKICAgICAgICAgICAgIHRoZSBsaXRlcmFsIGBgLS1PUFRgYCBvcHRpb24g
aW5zdGVhZCBvZiB0aGUgImRlc3QiIG9wdGlvbiBuYW1lLgotICAgICAgICA6YXJnIGRlZmF1bHQ6
IGRlZmF1bHQgdmFsdWUgaWYgbm8gb3B0aW9uIG9mIHRoYXQgbmFtZSBleGlzdHMuCi0gICAgICAg
IDphcmcgc2tpcDogaWYgVHJ1ZSByYWlzZSBweXRlc3Quc2tpcCBpZiBvcHRpb24gZG9lcyBub3Qg
ZXhpc3RzCisgICAgICAgIDpwYXJhbSBkZWZhdWx0OiBEZWZhdWx0IHZhbHVlIGlmIG5vIG9wdGlv
biBvZiB0aGF0IG5hbWUgZXhpc3RzLgorICAgICAgICA6cGFyYW0gc2tpcDogSWYgVHJ1ZSwgcmFp
c2UgcHl0ZXN0LnNraXAgaWYgb3B0aW9uIGRvZXMgbm90IGV4aXN0cwogICAgICAgICAgICAgb3Ig
aGFzIGEgTm9uZSB2YWx1ZS4KICAgICAgICAgIiIiCiAgICAgICAgIG5hbWUgPSBzZWxmLl9vcHQy
ZGVzdC5nZXQobmFtZSwgbmFtZSkKQEAgLTg4MSw5OSArMTQ2MSwxNDUgQEAgY2xhc3MgQ29uZmln
KG9iamVjdCk6CiAgICAgICAgICAgICBpZiB2YWwgaXMgTm9uZSBhbmQgc2tpcDoKICAgICAgICAg
ICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQogICAgICAgICAgICAgcmV0dXJuIHZh
bAotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1
dGVFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgZGVmYXVsdCBpcyBub3Qgbm90c2V0OgogICAg
ICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CiAgICAgICAgICAgICBpZiBza2lwOgogICAgICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKIAotICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJu
byAlciBvcHRpb24gZm91bmQiICUgKG5hbWUsKSkKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoIm5vIG9wdGlvbiBuYW1lZCAlciIgJSAobmFtZSwpKQorICAgICAgICAgICAgICAgIHB5dGVz
dC5za2lwKCJubyB7IXJ9IG9wdGlvbiBmb3VuZCIuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigibm8gb3B0aW9uIG5hbWVkIHshcn0iLmZvcm1hdChuYW1lKSkgZnJv
bSBlCiAKLSAgICBkZWYgZ2V0dmFsdWUoc2VsZiwgbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAg
IiIiIChkZXByZWNhdGVkLCB1c2UgZ2V0b3B0aW9uKCkpICIiIgorICAgIGRlZiBnZXR2YWx1ZShz
ZWxmLCBuYW1lOiBzdHIsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkRlcHJlY2F0ZWQsIHVzZSBn
ZXRvcHRpb24oKSBpbnN0ZWFkLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5nZXRvcHRpb24obmFt
ZSkKIAotICAgIGRlZiBnZXR2YWx1ZW9yc2tpcChzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgotICAg
ICAgICAiIiIgKGRlcHJlY2F0ZWQsIHVzZSBnZXRvcHRpb24oc2tpcD1UcnVlKSkgIiIiCisgICAg
ZGVmIGdldHZhbHVlb3Jza2lwKHNlbGYsIG5hbWU6IHN0ciwgcGF0aD1Ob25lKToKKyAgICAgICAg
IiIiRGVwcmVjYXRlZCwgdXNlIGdldG9wdGlvbihza2lwPVRydWUpIGluc3RlYWQuIiIiCiAgICAg
ICAgIHJldHVybiBzZWxmLmdldG9wdGlvbihuYW1lLCBza2lwPVRydWUpCiAKKyAgICBkZWYgX3dh
cm5fYWJvdXRfbWlzc2luZ19hc3NlcnRpb24oc2VsZiwgbW9kZTogc3RyKSAtPiBOb25lOgorICAg
ICAgICBpZiBub3QgX2Fzc2VydGlvbl9zdXBwb3J0ZWQoKToKKyAgICAgICAgICAgIGlmIG1vZGUg
PT0gInBsYWluIjoKKyAgICAgICAgICAgICAgICB3YXJuaW5nX3RleHQgPSAoCisgICAgICAgICAg
ICAgICAgICAgICJBU1NFUlRJT05TIEFSRSBOT1QgRVhFQ1VURUQiCisgICAgICAgICAgICAgICAg
ICAgICIgYW5kIEZBSUxJTkcgVEVTVFMgV0lMTCBQQVNTLiAgQXJlIHlvdSIKKyAgICAgICAgICAg
ICAgICAgICAgIiB1c2luZyBweXRob24gLU8/IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2FybmluZ190ZXh0ID0gKAorICAgICAgICAgICAg
ICAgICAgICAiYXNzZXJ0aW9ucyBub3QgaW4gdGVzdCBtb2R1bGVzIG9yIgorICAgICAgICAgICAg
ICAgICAgICAiIHBsdWdpbnMgd2lsbCBiZSBpZ25vcmVkIgorICAgICAgICAgICAgICAgICAgICAi
IGJlY2F1c2UgYXNzZXJ0IHN0YXRlbWVudHMgYXJlIG5vdCBleGVjdXRlZCAiCisgICAgICAgICAg
ICAgICAgICAgICJieSB0aGUgdW5kZXJseWluZyBQeXRob24gaW50ZXJwcmV0ZXIgIgorICAgICAg
ICAgICAgICAgICAgICAiKGFyZSB5b3UgdXNpbmcgcHl0aG9uIC1PPylcbiIKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmlzc3VlX2NvbmZpZ190aW1lX3dhcm5pbmcoCisgICAg
ICAgICAgICAgICAgUHl0ZXN0Q29uZmlnV2FybmluZyh3YXJuaW5nX3RleHQpLCBzdGFja2xldmVs
PTMsCisgICAgICAgICAgICApCiAKLWRlZiBfYXNzZXJ0aW9uX3N1cHBvcnRlZCgpOgorICAgIGRl
ZiBfd2Fybl9hYm91dF9za2lwcGVkX3BsdWdpbnMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZm9y
IG1vZHVsZV9uYW1lLCBtc2cgaW4gc2VsZi5wbHVnaW5tYW5hZ2VyLnNraXBwZWRfcGx1Z2luczoK
KyAgICAgICAgICAgIHNlbGYuaXNzdWVfY29uZmlnX3RpbWVfd2FybmluZygKKyAgICAgICAgICAg
ICAgICBQeXRlc3RDb25maWdXYXJuaW5nKCJza2lwcGVkIHBsdWdpbiB7IXJ9OiB7fSIuZm9ybWF0
KG1vZHVsZV9uYW1lLCBtc2cpKSwKKyAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsCisgICAg
ICAgICAgICApCisKKworZGVmIF9hc3NlcnRpb25fc3VwcG9ydGVkKCkgLT4gYm9vbDoKICAgICB0
cnk6CiAgICAgICAgIGFzc2VydCBGYWxzZQogICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKICAg
ICAgICAgcmV0dXJuIFRydWUKICAgICBlbHNlOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1k
ZWYgX3dhcm5fYWJvdXRfbWlzc2luZ19hc3NlcnRpb24obW9kZSk6Ci0gICAgaWYgbm90IF9hc3Nl
cnRpb25fc3VwcG9ydGVkKCk6Ci0gICAgICAgIGlmIG1vZGUgPT0gInBsYWluIjoKLSAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoCi0gICAgICAgICAgICAgICAgIldBUk5JTkc6IEFTU0VSVElP
TlMgQVJFIE5PVCBFWEVDVVRFRCIKLSAgICAgICAgICAgICAgICAiIGFuZCBGQUlMSU5HIFRFU1RT
IFdJTEwgUEFTUy4gIEFyZSB5b3UiCi0gICAgICAgICAgICAgICAgIiB1c2luZyBweXRob24gLU8/
IgotICAgICAgICAgICAgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgKLSAgICAgICAgICAgICAgICAiV0FSTklORzogYXNzZXJ0aW9ucyBub3QgaW4gdGVzdCBt
b2R1bGVzIG9yIgotICAgICAgICAgICAgICAgICIgcGx1Z2lucyB3aWxsIGJlIGlnbm9yZWQiCi0g
ICAgICAgICAgICAgICAgIiBiZWNhdXNlIGFzc2VydCBzdGF0ZW1lbnRzIGFyZSBub3QgZXhlY3V0
ZWQgIgotICAgICAgICAgICAgICAgICJieSB0aGUgdW5kZXJseWluZyBQeXRob24gaW50ZXJwcmV0
ZXIgIgotICAgICAgICAgICAgICAgICIoYXJlIHlvdSB1c2luZyBweXRob24gLU8/KVxuIgotICAg
ICAgICAgICAgKQotCi0KLWRlZiBzZXRucyhvYmosIGRpYyk6Ci0gICAgaW1wb3J0IHB5dGVzdAot
Ci0gICAgZm9yIG5hbWUsIHZhbHVlIGluIGRpYy5pdGVtcygpOgotICAgICAgICBpZiBpc2luc3Rh
bmNlKHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgIG1vZCA9IGdldGF0dHIob2JqLCBuYW1lLCBO
b25lKQotICAgICAgICAgICAgaWYgbW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbW9kbmFt
ZSA9ICJweXRlc3QuJXMiICUgbmFtZQotICAgICAgICAgICAgICAgIG1vZCA9IHR5cGVzLk1vZHVs
ZVR5cGUobW9kbmFtZSkKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttb2RuYW1lXSA9IG1v
ZAotICAgICAgICAgICAgICAgIG1vZC5fX2FsbF9fID0gW10KLSAgICAgICAgICAgICAgICBzZXRh
dHRyKG9iaiwgbmFtZSwgbW9kKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBwZW5kKG5hbWUp
Ci0gICAgICAgICAgICBzZXRucyhtb2QsIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBw
ZW5kKG5hbWUpCi0gICAgICAgICAgICAjIGlmIG9iaiAhPSBweXRlc3Q6Ci0gICAgICAgICAgICAj
ICAgIHB5dGVzdC5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2V0YXR0cihweXRl
c3QsIG5hbWUsIHZhbHVlKQorICAgICAgICByZXR1cm4gRmFsc2UgICMgdHlwZTogaWdub3JlW3Vu
cmVhY2hhYmxlXQogCiAKLWRlZiBjcmVhdGVfdGVybWluYWxfd3JpdGVyKGNvbmZpZywgKmFyZ3Ms
ICoqa3dhcmdzKToKK2RlZiBjcmVhdGVfdGVybWluYWxfd3JpdGVyKAorICAgIGNvbmZpZzogQ29u
ZmlnLCBmaWxlOiBPcHRpb25hbFtUZXh0SU9dID0gTm9uZQorKSAtPiBUZXJtaW5hbFdyaXRlcjoK
ICAgICAiIiJDcmVhdGUgYSBUZXJtaW5hbFdyaXRlciBpbnN0YW5jZSBjb25maWd1cmVkIGFjY29y
ZGluZyB0byB0aGUgb3B0aW9ucwotICAgIGluIHRoZSBjb25maWcgb2JqZWN0LiBFdmVyeSBjb2Rl
IHdoaWNoIHJlcXVpcmVzIGEgVGVybWluYWxXcml0ZXIgb2JqZWN0Ci0gICAgYW5kIGhhcyBhY2Nl
c3MgdG8gYSBjb25maWcgb2JqZWN0IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbi4KKyAgICBpbiB0
aGUgY29uZmlnIG9iamVjdC4KKworICAgIEV2ZXJ5IGNvZGUgd2hpY2ggcmVxdWlyZXMgYSBUZXJt
aW5hbFdyaXRlciBvYmplY3QgYW5kIGhhcyBhY2Nlc3MgdG8gYQorICAgIGNvbmZpZyBvYmplY3Qg
c2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uLgogICAgICIiIgotICAgIHR3ID0gcHkuaW8uVGVybWlu
YWxXcml0ZXIoKmFyZ3MsICoqa3dhcmdzKQorICAgIHR3ID0gVGVybWluYWxXcml0ZXIoZmlsZT1m
aWxlKQorCiAgICAgaWYgY29uZmlnLm9wdGlvbi5jb2xvciA9PSAieWVzIjoKICAgICAgICAgdHcu
aGFzbWFya3VwID0gVHJ1ZQotICAgIGlmIGNvbmZpZy5vcHRpb24uY29sb3IgPT0gIm5vIjoKKyAg
ICBlbGlmIGNvbmZpZy5vcHRpb24uY29sb3IgPT0gIm5vIjoKICAgICAgICAgdHcuaGFzbWFya3Vw
ID0gRmFsc2UKKworICAgIGlmIGNvbmZpZy5vcHRpb24uY29kZV9oaWdobGlnaHQgPT0gInllcyI6
CisgICAgICAgIHR3LmNvZGVfaGlnaGxpZ2h0ID0gVHJ1ZQorICAgIGVsaWYgY29uZmlnLm9wdGlv
bi5jb2RlX2hpZ2hsaWdodCA9PSAibm8iOgorICAgICAgICB0dy5jb2RlX2hpZ2hsaWdodCA9IEZh
bHNlCisKICAgICByZXR1cm4gdHcKIAogCi1kZWYgX3N0cnRvYm9vbCh2YWwpOgotICAgICIiIkNv
bnZlcnQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdHJ1dGggdG8gdHJ1ZSAoMSkgb3IgZmFs
c2UgKDApLgorZGVmIF9zdHJ0b2Jvb2wodmFsOiBzdHIpIC0+IGJvb2w6CisgICAgIiIiQ29udmVy
dCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0cnV0aCB0byBUcnVlIG9yIEZhbHNlLgogCiAg
ICAgVHJ1ZSB2YWx1ZXMgYXJlICd5JywgJ3llcycsICd0JywgJ3RydWUnLCAnb24nLCBhbmQgJzEn
OyBmYWxzZSB2YWx1ZXMKICAgICBhcmUgJ24nLCAnbm8nLCAnZicsICdmYWxzZScsICdvZmYnLCBh
bmQgJzAnLiAgUmFpc2VzIFZhbHVlRXJyb3IgaWYKICAgICAndmFsJyBpcyBhbnl0aGluZyBlbHNl
LgogCi0gICAgLi4gbm90ZTo6IGNvcGllZCBmcm9tIGRpc3R1dGlscy51dGlsCisgICAgLi4gbm90
ZTo6IENvcGllZCBmcm9tIGRpc3R1dGlscy51dGlsLgogICAgICIiIgogICAgIHZhbCA9IHZhbC5s
b3dlcigpCiAgICAgaWYgdmFsIGluICgieSIsICJ5ZXMiLCAidCIsICJ0cnVlIiwgIm9uIiwgIjEi
KToKLSAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgcmV0dXJuIFRydWUKICAgICBlbGlmIHZhbCBp
biAoIm4iLCAibm8iLCAiZiIsICJmYWxzZSIsICJvZmYiLCAiMCIpOgotICAgICAgICByZXR1cm4g
MAorICAgICAgICByZXR1cm4gRmFsc2UKICAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJpbnZhbGlkIHRydXRoIHZhbHVlICVyIiAlICh2YWwsKSkKKyAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigiaW52YWxpZCB0cnV0aCB2YWx1ZSB7IXJ9Ii5mb3JtYXQodmFsKSkKKworCitAbHJ1
X2NhY2hlKG1heHNpemU9NTApCitkZWYgcGFyc2Vfd2FybmluZ19maWx0ZXIoCisgICAgYXJnOiBz
dHIsICosIGVzY2FwZTogYm9vbAorKSAtPiAiVHVwbGVbc3RyLCBzdHIsIFR5cGVbV2FybmluZ10s
IHN0ciwgaW50XSI6CisgICAgIiIiUGFyc2UgYSB3YXJuaW5ncyBmaWx0ZXIgc3RyaW5nLgorCisg
ICAgVGhpcyBpcyBjb3BpZWQgZnJvbSB3YXJuaW5ncy5fc2V0b3B0aW9uLCBidXQgZG9lcyBub3Qg
YXBwbHkgdGhlIGZpbHRlciwKKyAgICBvbmx5IHBhcnNlcyBpdCwgYW5kIG1ha2VzIHRoZSBlc2Nh
cGluZyBvcHRpb25hbC4KKyAgICAiIiIKKyAgICBwYXJ0cyA9IGFyZy5zcGxpdCgiOiIpCisgICAg
aWYgbGVuKHBhcnRzKSA+IDU6CisgICAgICAgIHJhaXNlIHdhcm5pbmdzLl9PcHRpb25FcnJvcigi
dG9vIG1hbnkgZmllbGRzIChtYXggNSk6IHshcn0iLmZvcm1hdChhcmcpKQorICAgIHdoaWxlIGxl
bihwYXJ0cykgPCA1OgorICAgICAgICBwYXJ0cy5hcHBlbmQoIiIpCisgICAgYWN0aW9uXywgbWVz
c2FnZSwgY2F0ZWdvcnlfLCBtb2R1bGUsIGxpbmVub18gPSBbcy5zdHJpcCgpIGZvciBzIGluIHBh
cnRzXQorICAgIGFjdGlvbiA9IHdhcm5pbmdzLl9nZXRhY3Rpb24oYWN0aW9uXykgICMgdHlwZTog
c3RyICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICBjYXRlZ29yeSA9IHdhcm5pbmdz
Ll9nZXRjYXRlZ29yeSgKKyAgICAgICAgY2F0ZWdvcnlfCisgICAgKSAgIyB0eXBlOiBUeXBlW1dh
cm5pbmddICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICBpZiBtZXNzYWdlIGFuZCBl
c2NhcGU6CisgICAgICAgIG1lc3NhZ2UgPSByZS5lc2NhcGUobWVzc2FnZSkKKyAgICBpZiBtb2R1
bGUgYW5kIGVzY2FwZToKKyAgICAgICAgbW9kdWxlID0gcmUuZXNjYXBlKG1vZHVsZSkgKyByIlxa
IgorICAgIGlmIGxpbmVub186CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxpbmVubyA9IGlu
dChsaW5lbm9fKQorICAgICAgICAgICAgaWYgbGluZW5vIDwgMDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJv
cikgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIHdhcm5pbmdzLl9PcHRpb25FcnJvcigiaW52YWxp
ZCBsaW5lbm8geyFyfSIuZm9ybWF0KGxpbmVub18pKSBmcm9tIGUKKyAgICBlbHNlOgorICAgICAg
ICBsaW5lbm8gPSAwCisgICAgcmV0dXJuIGFjdGlvbiwgbWVzc2FnZSwgY2F0ZWdvcnksIG1vZHVs
ZSwgbGluZW5vCisKKworZGVmIGFwcGx5X3dhcm5pbmdfZmlsdGVycygKKyAgICBjb25maWdfZmls
dGVyczogSXRlcmFibGVbc3RyXSwgY21kbGluZV9maWx0ZXJzOiBJdGVyYWJsZVtzdHJdCispIC0+
IE5vbmU6CisgICAgIiIiQXBwbGllcyBweXRlc3QtY29uZmlndXJlZCBmaWx0ZXJzIHRvIHRoZSB3
YXJuaW5ncyBtb2R1bGUiIiIKKyAgICAjIEZpbHRlcnMgc2hvdWxkIGhhdmUgdGhpcyBwcmVjZWRl
bmNlOiBjbWRsaW5lIG9wdGlvbnMsIGNvbmZpZy4KKyAgICAjIEZpbHRlcnMgc2hvdWxkIGJlIGFw
cGxpZWQgaW4gdGhlIGludmVyc2Ugb3JkZXIgb2YgcHJlY2VkZW5jZS4KKyAgICBmb3IgYXJnIGlu
IGNvbmZpZ19maWx0ZXJzOgorICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygqcGFyc2Vf
d2FybmluZ19maWx0ZXIoYXJnLCBlc2NhcGU9RmFsc2UpKQorCisgICAgZm9yIGFyZyBpbiBjbWRs
aW5lX2ZpbHRlcnM6CisgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCpwYXJzZV93YXJu
aW5nX2ZpbHRlcihhcmcsIGVzY2FwZT1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L2NvbmZpZy9hcmdwYXJzaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
Y29uZmlnL2FyZ3BhcnNpbmcucHkKaW5kZXggNzgxZDhlOGM0ZWU1Li42MzYwMjFkZjQ1NWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9hcmdwYXJzaW5nLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9hcmdwYXJzaW5nLnB5CkBAIC0xLDQx
ICsxLDcyIEBACi1pbXBvcnQgc2l4Ci1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBhcmdwYXJzZQor
aW1wb3J0IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQK
K2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJv
bSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBp
bXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBvcnQgcHkKKworaW1w
b3J0IF9weXRlc3QuX2lvCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJvbSBf
cHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZy5l
eGNlcHRpb25zIGltcG9ydCBVc2FnZUVycm9yCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJv
bSB0eXBpbmcgaW1wb3J0IE5vUmV0dXJuCisgICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBv
cnQgTGl0ZXJhbAogCiBGSUxFX09SX0RJUiA9ICJmaWxlX29yX2RpciIKIAogCi1jbGFzcyBQYXJz
ZXIob2JqZWN0KToKLSAgICAiIiIgUGFyc2VyIGZvciBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFu
ZCBpbmktZmlsZSB2YWx1ZXMuCitAZmluYWwKK2NsYXNzIFBhcnNlcjoKKyAgICAiIiJQYXJzZXIg
Zm9yIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYW5kIGluaS1maWxlIHZhbHVlcy4KIAotICAgIDpp
dmFyIGV4dHJhX2luZm86IGRpY3Qgb2YgZ2VuZXJpYyBwYXJhbSAtPiB2YWx1ZSB0byBkaXNwbGF5
IGluIGNhc2UKKyAgICA6aXZhciBleHRyYV9pbmZvOiBEaWN0IG9mIGdlbmVyaWMgcGFyYW0gLT4g
dmFsdWUgdG8gZGlzcGxheSBpbiBjYXNlCiAgICAgICAgIHRoZXJlJ3MgYW4gZXJyb3IgcHJvY2Vz
c2luZyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KICAgICAiIiIKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB1c2FnZT1Ob25lLCBwcm9jZXNzb3B0PU5vbmUpOgorICAgIHByb2cgPSBOb25l
ICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2Vs
ZiwKKyAgICAgICAgdXNhZ2U6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBwcm9jZXNz
b3B0OiBPcHRpb25hbFtDYWxsYWJsZVtbIkFyZ3VtZW50Il0sIE5vbmVdXSA9IE5vbmUsCisgICAg
KSAtPiBOb25lOgogICAgICAgICBzZWxmLl9hbm9ueW1vdXMgPSBPcHRpb25Hcm91cCgiY3VzdG9t
IG9wdGlvbnMiLCBwYXJzZXI9c2VsZikKLSAgICAgICAgc2VsZi5fZ3JvdXBzID0gW10KKyAgICAg
ICAgc2VsZi5fZ3JvdXBzID0gW10gICMgdHlwZTogTGlzdFtPcHRpb25Hcm91cF0KICAgICAgICAg
c2VsZi5fcHJvY2Vzc29wdCA9IHByb2Nlc3NvcHQKICAgICAgICAgc2VsZi5fdXNhZ2UgPSB1c2Fn
ZQotICAgICAgICBzZWxmLl9pbmlkaWN0ID0ge30KLSAgICAgICAgc2VsZi5faW5pbmFtZXMgPSBb
XQotICAgICAgICBzZWxmLmV4dHJhX2luZm8gPSB7fQorICAgICAgICBzZWxmLl9pbmlkaWN0ID0g
e30gICMgdHlwZTogRGljdFtzdHIsIFR1cGxlW3N0ciwgT3B0aW9uYWxbc3RyXSwgQW55XV0KKyAg
ICAgICAgc2VsZi5faW5pbmFtZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgc2Vs
Zi5leHRyYV9pbmZvID0ge30gICMgdHlwZTogRGljdFtzdHIsIEFueV0KIAotICAgIGRlZiBwcm9j
ZXNzb3B0aW9uKHNlbGYsIG9wdGlvbik6CisgICAgZGVmIHByb2Nlc3NvcHRpb24oc2VsZiwgb3B0
aW9uOiAiQXJndW1lbnQiKSAtPiBOb25lOgogICAgICAgICBpZiBzZWxmLl9wcm9jZXNzb3B0Ogog
ICAgICAgICAgICAgaWYgb3B0aW9uLmRlc3Q6CiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vz
c29wdChvcHRpb24pCiAKLSAgICBkZWYgZ2V0Z3JvdXAoc2VsZiwgbmFtZSwgZGVzY3JpcHRpb249
IiIsIGFmdGVyPU5vbmUpOgotICAgICAgICAiIiIgZ2V0IChvciBjcmVhdGUpIGEgbmFtZWQgb3B0
aW9uIEdyb3VwLgorICAgIGRlZiBnZXRncm91cCgKKyAgICAgICAgc2VsZiwgbmFtZTogc3RyLCBk
ZXNjcmlwdGlvbjogc3RyID0gIiIsIGFmdGVyOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgICkg
LT4gIk9wdGlvbkdyb3VwIjoKKyAgICAgICAgIiIiR2V0IChvciBjcmVhdGUpIGEgbmFtZWQgb3B0
aW9uIEdyb3VwLgogCi0gICAgICAgIDpuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24gZ3JvdXAuCi0g
ICAgICAgIDpkZXNjcmlwdGlvbjogbG9uZyBkZXNjcmlwdGlvbiBmb3IgLS1oZWxwIG91dHB1dC4K
LSAgICAgICAgOmFmdGVyOiBuYW1lIG9mIG90aGVyIGdyb3VwLCB1c2VkIGZvciBvcmRlcmluZyAt
LWhlbHAgb3V0cHV0LgorICAgICAgICA6bmFtZTogTmFtZSBvZiB0aGUgb3B0aW9uIGdyb3VwLgor
ICAgICAgICA6ZGVzY3JpcHRpb246IExvbmcgZGVzY3JpcHRpb24gZm9yIC0taGVscCBvdXRwdXQu
CisgICAgICAgIDphZnRlcjogTmFtZSBvZiBhbm90aGVyIGdyb3VwLCB1c2VkIGZvciBvcmRlcmlu
ZyAtLWhlbHAgb3V0cHV0LgogCiAgICAgICAgIFRoZSByZXR1cm5lZCBncm91cCBvYmplY3QgaGFz
IGFuIGBgYWRkb3B0aW9uYGAgbWV0aG9kIHdpdGggdGhlIHNhbWUKICAgICAgICAgc2lnbmF0dXJl
IGFzIDpweTpmdW5jOmBwYXJzZXIuYWRkb3B0aW9uCi0gICAgICAgIDxfcHl0ZXN0LmNvbmZpZy5Q
YXJzZXIuYWRkb3B0aW9uPmAgYnV0IHdpbGwgYmUgc2hvd24gaW4gdGhlCisgICAgICAgIDxfcHl0
ZXN0LmNvbmZpZy5hcmdwYXJzaW5nLlBhcnNlci5hZGRvcHRpb24+YCBidXQgd2lsbCBiZSBzaG93
biBpbiB0aGUKICAgICAgICAgcmVzcGVjdGl2ZSBncm91cCBpbiB0aGUgb3V0cHV0IG9mIGBgcHl0
ZXN0LiAtLWhlbHBgYC4KICAgICAgICAgIiIiCiAgICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9n
cm91cHM6CkBAIC00OSwzMyArODAsMzcgQEAgY2xhc3MgUGFyc2VyKG9iamVjdCk6CiAgICAgICAg
IHNlbGYuX2dyb3Vwcy5pbnNlcnQoaSArIDEsIGdyb3VwKQogICAgICAgICByZXR1cm4gZ3JvdXAK
IAotICAgIGRlZiBhZGRvcHRpb24oc2VsZiwgKm9wdHMsICoqYXR0cnMpOgotICAgICAgICAiIiIg
cmVnaXN0ZXIgYSBjb21tYW5kIGxpbmUgb3B0aW9uLgorICAgIGRlZiBhZGRvcHRpb24oc2VsZiwg
Km9wdHM6IHN0ciwgKiphdHRyczogQW55KSAtPiBOb25lOgorICAgICAgICAiIiJSZWdpc3RlciBh
IGNvbW1hbmQgbGluZSBvcHRpb24uCiAKLSAgICAgICAgOm9wdHM6IG9wdGlvbiBuYW1lcywgY2Fu
IGJlIHNob3J0IG9yIGxvbmcgb3B0aW9ucy4KLSAgICAgICAgOmF0dHJzOiBzYW1lIGF0dHJpYnV0
ZXMgd2hpY2ggdGhlIGBgYWRkX29wdGlvbigpYGAgZnVuY3Rpb24gb2YgdGhlCi0gICAgICAgICAg
IGBhcmdwYXJzZSBsaWJyYXJ5Ci0gICAgICAgICAgIDxodHRwOi8vZG9jcy5weXRob24ub3JnLzIv
bGlicmFyeS9hcmdwYXJzZS5odG1sPmBfCisgICAgICAgIDpvcHRzOiBPcHRpb24gbmFtZXMsIGNh
biBiZSBzaG9ydCBvciBsb25nIG9wdGlvbnMuCisgICAgICAgIDphdHRyczogU2FtZSBhdHRyaWJ1
dGVzIHdoaWNoIHRoZSBgYGFkZF9hcmd1bWVudCgpYGAgZnVuY3Rpb24gb2YgdGhlCisgICAgICAg
ICAgIGBhcmdwYXJzZSBsaWJyYXJ5IDxodHRwczovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2Fy
Z3BhcnNlLmh0bWw+YF8KICAgICAgICAgICAgYWNjZXB0cy4KIAotICAgICAgICBBZnRlciBjb21t
YW5kIGxpbmUgcGFyc2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGUgb24gdGhlIHB5dGVzdCBjb25m
aWcKKyAgICAgICAgQWZ0ZXIgY29tbWFuZCBsaW5lIHBhcnNpbmcsIG9wdGlvbnMgYXJlIGF2YWls
YWJsZSBvbiB0aGUgcHl0ZXN0IGNvbmZpZwogICAgICAgICBvYmplY3QgdmlhIGBgY29uZmlnLm9w
dGlvbi5OQU1FYGAgd2hlcmUgYGBOQU1FYGAgaXMgdXN1YWxseSBzZXQKICAgICAgICAgYnkgcGFz
c2luZyBhIGBgZGVzdGBgIGF0dHJpYnV0ZSwgZm9yIGV4YW1wbGUKICAgICAgICAgYGBhZGRvcHRp
b24oIi0tbG9uZyIsIGRlc3Q9Ik5BTUUiLCAuLi4pYGAuCiAgICAgICAgICIiIgogICAgICAgICBz
ZWxmLl9hbm9ueW1vdXMuYWRkb3B0aW9uKCpvcHRzLCAqKmF0dHJzKQogCi0gICAgZGVmIHBhcnNl
KHNlbGYsIGFyZ3MsIG5hbWVzcGFjZT1Ob25lKToKKyAgICBkZWYgcGFyc2UoCisgICAgICAgIHNl
bGYsCisgICAgICAgIGFyZ3M6IFNlcXVlbmNlW1VuaW9uW3N0ciwgcHkucGF0aC5sb2NhbF1dLAor
ICAgICAgICBuYW1lc3BhY2U6IE9wdGlvbmFsW2FyZ3BhcnNlLk5hbWVzcGFjZV0gPSBOb25lLAor
ICAgICkgLT4gYXJncGFyc2UuTmFtZXNwYWNlOgogICAgICAgICBmcm9tIF9weXRlc3QuX2FyZ2Nv
bXBsZXRlIGltcG9ydCB0cnlfYXJnY29tcGxldGUKIAogICAgICAgICBzZWxmLm9wdHBhcnNlciA9
IHNlbGYuX2dldHBhcnNlcigpCiAgICAgICAgIHRyeV9hcmdjb21wbGV0ZShzZWxmLm9wdHBhcnNl
cikKLSAgICAgICAgcmV0dXJuIHNlbGYub3B0cGFyc2VyLnBhcnNlX2FyZ3MoW3N0cih4KSBmb3Ig
eCBpbiBhcmdzXSwgbmFtZXNwYWNlPW5hbWVzcGFjZSkKKyAgICAgICAgc3RyYXJncyA9IFtzdHIo
eCkgaWYgaXNpbnN0YW5jZSh4LCBweS5wYXRoLmxvY2FsKSBlbHNlIHggZm9yIHggaW4gYXJnc10K
KyAgICAgICAgcmV0dXJuIHNlbGYub3B0cGFyc2VyLnBhcnNlX2FyZ3Moc3RyYXJncywgbmFtZXNw
YWNlPW5hbWVzcGFjZSkKIAotICAgIGRlZiBfZ2V0cGFyc2VyKHNlbGYpOgorICAgIGRlZiBfZ2V0
cGFyc2VyKHNlbGYpIC0+ICJNeU9wdGlvblBhcnNlciI6CiAgICAgICAgIGZyb20gX3B5dGVzdC5f
YXJnY29tcGxldGUgaW1wb3J0IGZpbGVzY29tcGxldGVyCiAKLSAgICAgICAgb3B0cGFyc2VyID0g
TXlPcHRpb25QYXJzZXIoc2VsZiwgc2VsZi5leHRyYV9pbmZvKQorICAgICAgICBvcHRwYXJzZXIg
PSBNeU9wdGlvblBhcnNlcihzZWxmLCBzZWxmLmV4dHJhX2luZm8sIHByb2c9c2VsZi5wcm9nKQog
ICAgICAgICBncm91cHMgPSBzZWxmLl9ncm91cHMgKyBbc2VsZi5fYW5vbnltb3VzXQogICAgICAg
ICBmb3IgZ3JvdXAgaW4gZ3JvdXBzOgogICAgICAgICAgICAgaWYgZ3JvdXAub3B0aW9uczoKQEAg
LTg1LDM3ICsxMjAsNTUgQEAgY2xhc3MgUGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
ICAgIG4gPSBvcHRpb24ubmFtZXMoKQogICAgICAgICAgICAgICAgICAgICBhID0gb3B0aW9uLmF0
dHJzKCkKICAgICAgICAgICAgICAgICAgICAgYXJnZ3JvdXAuYWRkX2FyZ3VtZW50KCpuLCAqKmEp
CisgICAgICAgIGZpbGVfb3JfZGlyX2FyZyA9IG9wdHBhcnNlci5hZGRfYXJndW1lbnQoRklMRV9P
Ul9ESVIsIG5hcmdzPSIqIikKICAgICAgICAgIyBiYXNoIGxpa2UgYXV0b2NvbXBsZXRpb24gZm9y
IGRpcnMgKGFwcGVuZGluZyAnLycpCi0gICAgICAgIG9wdHBhcnNlci5hZGRfYXJndW1lbnQoRklM
RV9PUl9ESVIsIG5hcmdzPSIqIikuY29tcGxldGVyID0gZmlsZXNjb21wbGV0ZXIKKyAgICAgICAg
IyBUeXBlIGlnbm9yZWQgYmVjYXVzZSB0eXBlc2hlZCBkb2Vzbid0IGtub3cgYWJvdXQgYXJnY29t
cGxldGUuCisgICAgICAgIGZpbGVfb3JfZGlyX2FyZy5jb21wbGV0ZXIgPSBmaWxlc2NvbXBsZXRl
ciAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgcmV0dXJuIG9wdHBhcnNlcgogCi0gICAgZGVmIHBh
cnNlX3NldG9wdGlvbihzZWxmLCBhcmdzLCBvcHRpb24sIG5hbWVzcGFjZT1Ob25lKToKKyAgICBk
ZWYgcGFyc2Vfc2V0b3B0aW9uKAorICAgICAgICBzZWxmLAorICAgICAgICBhcmdzOiBTZXF1ZW5j
ZVtVbmlvbltzdHIsIHB5LnBhdGgubG9jYWxdXSwKKyAgICAgICAgb3B0aW9uOiBhcmdwYXJzZS5O
YW1lc3BhY2UsCisgICAgICAgIG5hbWVzcGFjZTogT3B0aW9uYWxbYXJncGFyc2UuTmFtZXNwYWNl
XSA9IE5vbmUsCisgICAgKSAtPiBMaXN0W3N0cl06CiAgICAgICAgIHBhcnNlZG9wdGlvbiA9IHNl
bGYucGFyc2UoYXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSkKICAgICAgICAgZm9yIG5hbWUsIHZh
bHVlIGluIHBhcnNlZG9wdGlvbi5fX2RpY3RfXy5pdGVtcygpOgogICAgICAgICAgICAgc2V0YXR0
cihvcHRpb24sIG5hbWUsIHZhbHVlKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihwYXJzZWRvcHRp
b24sIEZJTEVfT1JfRElSKQotCi0gICAgZGVmIHBhcnNlX2tub3duX2FyZ3Moc2VsZiwgYXJncywg
bmFtZXNwYWNlPU5vbmUpOgotICAgICAgICAiIiJwYXJzZXMgYW5kIHJldHVybnMgYSBuYW1lc3Bh
Y2Ugb2JqZWN0IHdpdGgga25vd24gYXJndW1lbnRzIGF0IHRoaXMKLSAgICAgICAgcG9pbnQuCi0g
ICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2FzdChMaXN0W3N0cl0sIGdldGF0dHIocGFyc2Vk
b3B0aW9uLCBGSUxFX09SX0RJUikpCisKKyAgICBkZWYgcGFyc2Vfa25vd25fYXJncygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgYXJnczogU2VxdWVuY2VbVW5pb25bc3RyLCBweS5wYXRoLmxvY2Fs
XV0sCisgICAgICAgIG5hbWVzcGFjZTogT3B0aW9uYWxbYXJncGFyc2UuTmFtZXNwYWNlXSA9IE5v
bmUsCisgICAgKSAtPiBhcmdwYXJzZS5OYW1lc3BhY2U6CisgICAgICAgICIiIlBhcnNlIGFuZCBy
ZXR1cm4gYSBuYW1lc3BhY2Ugb2JqZWN0IHdpdGgga25vd24gYXJndW1lbnRzIGF0IHRoaXMgcG9p
bnQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3Mo
YXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSlbMF0KIAotICAgIGRlZiBwYXJzZV9rbm93bl9hbmRf
dW5rbm93bl9hcmdzKHNlbGYsIGFyZ3MsIG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgIiIicGFy
c2VzIGFuZCByZXR1cm5zIGEgbmFtZXNwYWNlIG9iamVjdCB3aXRoIGtub3duIGFyZ3VtZW50cywg
YW5kCi0gICAgICAgIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHVua25vd24gYXQgdGhpcyBwb2lu
dC4KLSAgICAgICAgIiIiCisgICAgZGVmIHBhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoCisg
ICAgICAgIHNlbGYsCisgICAgICAgIGFyZ3M6IFNlcXVlbmNlW1VuaW9uW3N0ciwgcHkucGF0aC5s
b2NhbF1dLAorICAgICAgICBuYW1lc3BhY2U6IE9wdGlvbmFsW2FyZ3BhcnNlLk5hbWVzcGFjZV0g
PSBOb25lLAorICAgICkgLT4gVHVwbGVbYXJncGFyc2UuTmFtZXNwYWNlLCBMaXN0W3N0cl1dOgor
ICAgICAgICAiIiJQYXJzZSBhbmQgcmV0dXJuIGEgbmFtZXNwYWNlIG9iamVjdCB3aXRoIGtub3du
IGFyZ3VtZW50cywgYW5kCisgICAgICAgIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHVua25vd24g
YXQgdGhpcyBwb2ludC4iIiIKICAgICAgICAgb3B0cGFyc2VyID0gc2VsZi5fZ2V0cGFyc2VyKCkK
LSAgICAgICAgYXJncyA9IFtzdHIoeCkgZm9yIHggaW4gYXJnc10KLSAgICAgICAgcmV0dXJuIG9w
dHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3MsIG5hbWVzcGFjZT1uYW1lc3BhY2UpCi0KLSAg
ICBkZWYgYWRkaW5pKHNlbGYsIG5hbWUsIGhlbHAsIHR5cGU9Tm9uZSwgZGVmYXVsdD1Ob25lKToK
LSAgICAgICAgIiIiIHJlZ2lzdGVyIGFuIGluaS1maWxlIG9wdGlvbi4KLQotICAgICAgICA6bmFt
ZTogbmFtZSBvZiB0aGUgaW5pLXZhcmlhYmxlCi0gICAgICAgIDp0eXBlOiB0eXBlIG9mIHRoZSB2
YXJpYWJsZSwgY2FuIGJlIGBgcGF0aGxpc3RgYCwgYGBhcmdzYGAsIGBgbGluZWxpc3RgYAorICAg
ICAgICBzdHJhcmdzID0gW3N0cih4KSBpZiBpc2luc3RhbmNlKHgsIHB5LnBhdGgubG9jYWwpIGVs
c2UgeCBmb3IgeCBpbiBhcmdzXQorICAgICAgICByZXR1cm4gb3B0cGFyc2VyLnBhcnNlX2tub3du
X2FyZ3Moc3RyYXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSkKKworICAgIGRlZiBhZGRpbmkoCisg
ICAgICAgIHNlbGYsCisgICAgICAgIG5hbWU6IHN0ciwKKyAgICAgICAgaGVscDogc3RyLAorICAg
ICAgICB0eXBlOiBPcHRpb25hbFsiTGl0ZXJhbFsncGF0aGxpc3QnLCAnYXJncycsICdsaW5lbGlz
dCcsICdib29sJ10iXSA9IE5vbmUsCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIlJlZ2lzdGVyIGFuIGluaS1maWxlIG9wdGlvbi4KKworICAgICAgICA6
bmFtZTogTmFtZSBvZiB0aGUgaW5pLXZhcmlhYmxlLgorICAgICAgICA6dHlwZTogVHlwZSBvZiB0
aGUgdmFyaWFibGUsIGNhbiBiZSBgYHBhdGhsaXN0YGAsIGBgYXJnc2BgLCBgYGxpbmVsaXN0YGAK
ICAgICAgICAgICAgICAgIG9yIGBgYm9vbGBgLgotICAgICAgICA6ZGVmYXVsdDogZGVmYXVsdCB2
YWx1ZSBpZiBubyBpbmktZmlsZSBvcHRpb24gZXhpc3RzIGJ1dCBpcyBxdWVyaWVkLgorICAgICAg
ICA6ZGVmYXVsdDogRGVmYXVsdCB2YWx1ZSBpZiBubyBpbmktZmlsZSBvcHRpb24gZXhpc3RzIGJ1
dCBpcyBxdWVyaWVkLgogCiAgICAgICAgIFRoZSB2YWx1ZSBvZiBpbmktdmFyaWFibGVzIGNhbiBi
ZSByZXRyaWV2ZWQgdmlhIGEgY2FsbCB0bwogICAgICAgICA6cHk6ZnVuYzpgY29uZmlnLmdldGlu
aShuYW1lKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldGluaT5gLgpAQCAtMTI2LDM3ICsxNzks
MzYgQEAgY2xhc3MgUGFyc2VyKG9iamVjdCk6CiAKIAogY2xhc3MgQXJndW1lbnRFcnJvcihFeGNl
cHRpb24pOgotICAgICIiIgotICAgIFJhaXNlZCBpZiBhbiBBcmd1bWVudCBpbnN0YW5jZSBpcyBj
cmVhdGVkIHdpdGggaW52YWxpZCBvcgotICAgIGluY29uc2lzdGVudCBhcmd1bWVudHMuCi0gICAg
IiIiCisgICAgIiIiUmFpc2VkIGlmIGFuIEFyZ3VtZW50IGluc3RhbmNlIGlzIGNyZWF0ZWQgd2l0
aCBpbnZhbGlkIG9yCisgICAgaW5jb25zaXN0ZW50IGFyZ3VtZW50cy4iIiIKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtc2csIG9wdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZzog
c3RyLCBvcHRpb246IFVuaW9uWyJBcmd1bWVudCIsIHN0cl0pIC0+IE5vbmU6CiAgICAgICAgIHNl
bGYubXNnID0gbXNnCiAgICAgICAgIHNlbGYub3B0aW9uX2lkID0gc3RyKG9wdGlvbikKIAotICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKICAgICAg
ICAgaWYgc2VsZi5vcHRpb25faWQ6Ci0gICAgICAgICAgICByZXR1cm4gIm9wdGlvbiAlczogJXMi
ICUgKHNlbGYub3B0aW9uX2lkLCBzZWxmLm1zZykKKyAgICAgICAgICAgIHJldHVybiAib3B0aW9u
IHt9OiB7fSIuZm9ybWF0KHNlbGYub3B0aW9uX2lkLCBzZWxmLm1zZykKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJldHVybiBzZWxmLm1zZwogCiAKLWNsYXNzIEFyZ3VtZW50KG9iamVjdCk6
Ci0gICAgIiIiY2xhc3MgdGhhdCBtaW1pY3MgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvdXIgb2Ygb3B0
cGFyc2UuT3B0aW9uCitjbGFzcyBBcmd1bWVudDoKKyAgICAiIiJDbGFzcyB0aGF0IG1pbWljcyB0
aGUgbmVjZXNzYXJ5IGJlaGF2aW91ciBvZiBvcHRwYXJzZS5PcHRpb24uCisKKyAgICBJdCdzIGN1
cnJlbnRseSBhIGxlYXN0IGVmZm9ydCBpbXBsZW1lbnRhdGlvbiBhbmQgaWdub3JpbmcgY2hvaWNl
cworICAgIGFuZCBpbnRlZ2VyIHByZWZpeGVzLgogCi0gICAgaXRzIGN1cnJlbnRseSBhIGxlYXN0
IGVmZm9ydCBpbXBsZW1lbnRhdGlvbgotICAgIGFuZCBpZ25vcmluZyBjaG9pY2VzIGFuZCBpbnRl
Z2VyIHByZWZpeGVzCiAgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L29wdHBh
cnNlLmh0bWwjb3B0cGFyc2Utc3RhbmRhcmQtb3B0aW9uLXR5cGVzCiAgICAgIiIiCisKICAgICBf
dHlwX21hcCA9IHsiaW50IjogaW50LCAic3RyaW5nIjogc3RyLCAiZmxvYXQiOiBmbG9hdCwgImNv
bXBsZXgiOiBjb21wbGV4fQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICpuYW1lcywgKiphdHRy
cyk6Ci0gICAgICAgICIiInN0b3JlIHBhcm1zIGluIHByaXZhdGUgdmFycyBmb3IgdXNlIGluIGFk
ZF9hcmd1bWVudCIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqbmFtZXM6IHN0ciwgKiphdHRy
czogQW55KSAtPiBOb25lOgorICAgICAgICAiIiJTdG9yZSBwYXJtcyBpbiBwcml2YXRlIHZhcnMg
Zm9yIHVzZSBpbiBhZGRfYXJndW1lbnQuIiIiCiAgICAgICAgIHNlbGYuX2F0dHJzID0gYXR0cnMK
LSAgICAgICAgc2VsZi5fc2hvcnRfb3B0cyA9IFtdCi0gICAgICAgIHNlbGYuX2xvbmdfb3B0cyA9
IFtdCi0gICAgICAgIHNlbGYuZGVzdCA9IGF0dHJzLmdldCgiZGVzdCIpCisgICAgICAgIHNlbGYu
X3Nob3J0X29wdHMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgc2VsZi5fbG9uZ19v
cHRzID0gW10gICMgdHlwZTogTGlzdFtzdHJdCiAgICAgICAgIGlmICIlZGVmYXVsdCIgaW4gKGF0
dHJzLmdldCgiaGVscCIpIG9yICIiKToKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAg
ICAgICAgICAgICAgJ3B5dGVzdCBub3cgdXNlcyBhcmdwYXJzZS4gIiVkZWZhdWx0IiBzaG91bGQg
YmUnCkBAIC0xNjksNTYgKzIyMSw1OCBAQCBjbGFzcyBBcmd1bWVudChvYmplY3QpOgogICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAjIHRoaXMgbWlnaHQgcmFpc2UgYSBrZXllcnJvciBhcyB3ZWxsLCBkb24ndCB3YW50
IHRvIGNhdGNoIHRoYXQKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwLCBzaXguc3RyaW5n
X3R5cGVzKToKKyAgICAgICAgICAgICMgVGhpcyBtaWdodCByYWlzZSBhIGtleWVycm9yIGFzIHdl
bGwsIGRvbid0IHdhbnQgdG8gY2F0Y2ggdGhhdC4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
dHlwLCBzdHIpOgogICAgICAgICAgICAgICAgIGlmIHR5cCA9PSAiY2hvaWNlIjoKICAgICAgICAg
ICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBl
IGFyZ3VtZW50IHRvIGFkZG9wdGlvbigpIGlzIGEgc3RyaW5nICVyLiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICIgRm9yIHBhcnNlYXJnIHRoaXMgaXMgb3B0aW9uYWwgYW5kIHdoZW4gc3VwcGxp
ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAiIHNob3VsZCBiZSBhIHR5cGUuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgImB0eXBlYCBhcmd1bWVudCB0byBhZGRvcHRpb24oKSBpcyB0aGUg
c3RyaW5nICVyLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgRm9yIGNob2ljZXMgdGhpcyBp
cyBvcHRpb25hbCBhbmQgY2FuIGJlIG9taXR0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIgYnV0IHdoZW4gc3VwcGxpZWQgc2hvdWxkIGJlIGEgdHlwZSAoZm9yIGV4YW1wbGUgYHN0cmAg
b3IgYGludGApLiIKICAgICAgICAgICAgICAgICAgICAgICAgICIgKG9wdGlvbnM6ICVzKSIgJSAo
dHlwLCBuYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTMsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFja2xldmVsPTQsCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICAgICAgICAgIyBhcmdwYXJzZSBleHBlY3RzIGEgdHlwZSBoZXJlIHRha2UgaXQgZnJvbQogICAg
ICAgICAgICAgICAgICAgICAjIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBlbGVtZW50CiAgICAgICAg
ICAgICAgICAgICAgIGF0dHJzWyJ0eXBlIl0gPSB0eXBlKGF0dHJzWyJjaG9pY2VzIl1bMF0pCiAg
ICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigK
LSAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIGFyZ3VtZW50IHRvIGFkZG9wdGlvbigpIGlz
IGEgc3RyaW5nICVyLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIgRm9yIHBhcnNlYXJnIHRo
aXMgc2hvdWxkIGJlIGEgdHlwZS4iCisgICAgICAgICAgICAgICAgICAgICAgICAiYHR5cGVgIGFy
Z3VtZW50IHRvIGFkZG9wdGlvbigpIGlzIHRoZSBzdHJpbmcgJXIsICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIgYnV0IHdoZW4gc3VwcGxpZWQgc2hvdWxkIGJlIGEgdHlwZSAoZm9yIGV4YW1w
bGUgYHN0cmAgb3IgYGludGApLiIKICAgICAgICAgICAgICAgICAgICAgICAgICIgKG9wdGlvbnM6
ICVzKSIgJSAodHlwLCBuYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlv
bldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTQsCiAgICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICAgICAgICAgYXR0cnNbInR5cGUiXSA9IEFyZ3VtZW50Ll90eXBfbWFwW3R5cF0K
LSAgICAgICAgICAgICAgICAjIHVzZWQgaW4gdGVzdF9wYXJzZW9wdCAtPiB0ZXN0X3BhcnNlX2Rl
ZmF1bHRnZXR0ZXIKKyAgICAgICAgICAgICAgICAjIFVzZWQgaW4gdGVzdF9wYXJzZW9wdCAtPiB0
ZXN0X3BhcnNlX2RlZmF1bHRnZXR0ZXIuCiAgICAgICAgICAgICAgICAgc2VsZi50eXBlID0gYXR0
cnNbInR5cGUiXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnR5cGUg
PSB0eXAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBhdHRyaWJ1dGUgZXhpc3RlbmNlIGlz
IHRlc3RlZCBpbiBDb25maWcuX3Byb2Nlc3NvcHQKKyAgICAgICAgICAgICMgQXR0cmlidXRlIGV4
aXN0ZW5jZSBpcyB0ZXN0ZWQgaW4gQ29uZmlnLl9wcm9jZXNzb3B0LgogICAgICAgICAgICAgc2Vs
Zi5kZWZhdWx0ID0gYXR0cnNbImRlZmF1bHQiXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAg
ICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3NldF9vcHRfc3RyaW5ncyhuYW1lcykKLSAg
ICAgICAgaWYgbm90IHNlbGYuZGVzdDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2xvbmdfb3B0czoK
LSAgICAgICAgICAgICAgICBzZWxmLmRlc3QgPSBzZWxmLl9sb25nX29wdHNbMF1bMjpdLnJlcGxh
Y2UoIi0iLCAiXyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5kZXN0ID0gc2VsZi5fc2hvcnRfb3B0c1swXVsxOl0KLSAg
ICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmFp
c2UgQXJndW1lbnRFcnJvcigibmVlZCBhIGxvbmcgb3Igc2hvcnQgb3B0aW9uIiwgc2VsZikKKyAg
ICAgICAgZGVzdCA9IGF0dHJzLmdldCgiZGVzdCIpICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAg
ICAgICAgaWYgZGVzdDoKKyAgICAgICAgICAgIHNlbGYuZGVzdCA9IGRlc3QKKyAgICAgICAgZWxp
ZiBzZWxmLl9sb25nX29wdHM6CisgICAgICAgICAgICBzZWxmLmRlc3QgPSBzZWxmLl9sb25nX29w
dHNbMF1bMjpdLnJlcGxhY2UoIi0iLCAiXyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgc2VsZi5kZXN0ID0gc2VsZi5fc2hvcnRfb3B0c1swXVsxOl0K
KyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5kZXN0ID0gIj8/PyIgICMgTmVlZGVkIGZvciB0aGUgZXJyb3IgcmVwci4KKyAgICAgICAgICAg
ICAgICByYWlzZSBBcmd1bWVudEVycm9yKCJuZWVkIGEgbG9uZyBvciBzaG9ydCBvcHRpb24iLCBz
ZWxmKSBmcm9tIGUKIAotICAgIGRlZiBuYW1lcyhzZWxmKToKKyAgICBkZWYgbmFtZXMoc2VsZikg
LT4gTGlzdFtzdHJdOgogICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRfb3B0cyArIHNlbGYuX2xv
bmdfb3B0cwogCi0gICAgZGVmIGF0dHJzKHNlbGYpOgotICAgICAgICAjIHVwZGF0ZSBhbnkgYXR0
cmlidXRlcyBzZXQgYnkgcHJvY2Vzc29wdAorICAgIGRlZiBhdHRycyhzZWxmKSAtPiBNYXBwaW5n
W3N0ciwgQW55XToKKyAgICAgICAgIyBVcGRhdGUgYW55IGF0dHJpYnV0ZXMgc2V0IGJ5IHByb2Nl
c3NvcHQuCiAgICAgICAgIGF0dHJzID0gImRlZmF1bHQgZGVzdCBoZWxwIi5zcGxpdCgpCi0gICAg
ICAgIGlmIHNlbGYuZGVzdDoKLSAgICAgICAgICAgIGF0dHJzLmFwcGVuZChzZWxmLmRlc3QpCisg
ICAgICAgIGF0dHJzLmFwcGVuZChzZWxmLmRlc3QpCiAgICAgICAgIGZvciBhdHRyIGluIGF0dHJz
OgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2F0dHJzW2F0dHJdID0g
Z2V0YXR0cihzZWxmLCBhdHRyKQpAQCAtMjMxLDEwICsyODUsMTEgQEAgY2xhc3MgQXJndW1lbnQo
b2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX2F0dHJzWyJoZWxwIl0gPSBhCiAgICAgICAgIHJl
dHVybiBzZWxmLl9hdHRycwogCi0gICAgZGVmIF9zZXRfb3B0X3N0cmluZ3Moc2VsZiwgb3B0cyk6
Ci0gICAgICAgICIiImRpcmVjdGx5IGZyb20gb3B0cGFyc2UKKyAgICBkZWYgX3NldF9vcHRfc3Ry
aW5ncyhzZWxmLCBvcHRzOiBTZXF1ZW5jZVtzdHJdKSAtPiBOb25lOgorICAgICAgICAiIiJEaXJl
Y3RseSBmcm9tIG9wdHBhcnNlLgogCi0gICAgICAgIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkgYXMg
dGhpcyBpcyBwYXNzZWQgdG8gYXJncGFyc2UgbGF0ZXIgb24iIiIKKyAgICAgICAgTWlnaHQgbm90
IGJlIG5lY2Vzc2FyeSBhcyB0aGlzIGlzIHBhc3NlZCB0byBhcmdwYXJzZSBsYXRlciBvbi4KKyAg
ICAgICAgIiIiCiAgICAgICAgIGZvciBvcHQgaW4gb3B0czoKICAgICAgICAgICAgIGlmIGxlbihv
cHQpIDwgMjoKICAgICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKApAQCAtMjU5LDgg
KzMxNCw4IEBAIGNsYXNzIEFyZ3VtZW50KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICkK
ICAgICAgICAgICAgICAgICBzZWxmLl9sb25nX29wdHMuYXBwZW5kKG9wdCkKIAotICAgIGRlZiBf
X3JlcHJfXyhzZWxmKToKLSAgICAgICAgYXJncyA9IFtdCisgICAgZGVmIF9fcmVwcl9fKHNlbGYp
IC0+IHN0cjoKKyAgICAgICAgYXJncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQogICAgICAgICBp
ZiBzZWxmLl9zaG9ydF9vcHRzOgogICAgICAgICAgICAgYXJncyArPSBbIl9zaG9ydF9vcHRzOiAi
ICsgcmVwcihzZWxmLl9zaG9ydF9vcHRzKV0KICAgICAgICAgaWYgc2VsZi5fbG9uZ19vcHRzOgpA
QCAtMjczLDIxICszMjgsMjIgQEAgY2xhc3MgQXJndW1lbnQob2JqZWN0KToKICAgICAgICAgcmV0
dXJuICJBcmd1bWVudCh7fSkiLmZvcm1hdCgiLCAiLmpvaW4oYXJncykpCiAKIAotY2xhc3MgT3B0
aW9uR3JvdXAob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZXNjcmlw
dGlvbj0iIiwgcGFyc2VyPU5vbmUpOgorY2xhc3MgT3B0aW9uR3JvdXA6CisgICAgZGVmIF9faW5p
dF9fKAorICAgICAgICBzZWxmLCBuYW1lOiBzdHIsIGRlc2NyaXB0aW9uOiBzdHIgPSAiIiwgcGFy
c2VyOiBPcHRpb25hbFtQYXJzZXJdID0gTm9uZQorICAgICkgLT4gTm9uZToKICAgICAgICAgc2Vs
Zi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KLSAg
ICAgICAgc2VsZi5vcHRpb25zID0gW10KKyAgICAgICAgc2VsZi5vcHRpb25zID0gW10gICMgdHlw
ZTogTGlzdFtBcmd1bWVudF0KICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKIAotICAgIGRl
ZiBhZGRvcHRpb24oc2VsZiwgKm9wdG5hbWVzLCAqKmF0dHJzKToKLSAgICAgICAgIiIiIGFkZCBh
biBvcHRpb24gdG8gdGhpcyBncm91cC4KKyAgICBkZWYgYWRkb3B0aW9uKHNlbGYsICpvcHRuYW1l
czogc3RyLCAqKmF0dHJzOiBBbnkpIC0+IE5vbmU6CisgICAgICAgICIiIkFkZCBhbiBvcHRpb24g
dG8gdGhpcyBncm91cC4KIAotICAgICAgICBpZiBhIHNob3J0ZW5lZCB2ZXJzaW9uIG9mIGEgbG9u
ZyBvcHRpb24gaXMgc3BlY2lmaWVkIGl0IHdpbGwKKyAgICAgICAgSWYgYSBzaG9ydGVuZWQgdmVy
c2lvbiBvZiBhIGxvbmcgb3B0aW9uIGlzIHNwZWNpZmllZCwgaXQgd2lsbAogICAgICAgICBiZSBz
dXBwcmVzc2VkIGluIHRoZSBoZWxwLiBhZGRvcHRpb24oJy0tdHdvd29yZHMnLCAnLS10d28td29y
ZHMnKQogICAgICAgICByZXN1bHRzIGluIGhlbHAgc2hvd2luZyAnLS10d28td29yZHMnIG9ubHks
IGJ1dCAtLXR3b3dvcmRzIGdldHMKLSAgICAgICAgYWNjZXB0ZWQgKiphbmQqKiB0aGUgYXV0b21h
dGljIGRlc3RpbmF0aW9uIGlzIGluIGFyZ3MudHdvd29yZHMKKyAgICAgICAgYWNjZXB0ZWQgKiph
bmQqKiB0aGUgYXV0b21hdGljIGRlc3RpbmF0aW9uIGlzIGluIGFyZ3MudHdvd29yZHMuCiAgICAg
ICAgICIiIgogICAgICAgICBjb25mbGljdCA9IHNldChvcHRuYW1lcykuaW50ZXJzZWN0aW9uKAog
ICAgICAgICAgICAgbmFtZSBmb3Igb3B0IGluIHNlbGYub3B0aW9ucyBmb3IgbmFtZSBpbiBvcHQu
bmFtZXMoKQpAQCAtMjk3LDExICszNTMsMTEgQEAgY2xhc3MgT3B0aW9uR3JvdXAob2JqZWN0KToK
ICAgICAgICAgb3B0aW9uID0gQXJndW1lbnQoKm9wdG5hbWVzLCAqKmF0dHJzKQogICAgICAgICBz
ZWxmLl9hZGRvcHRpb25faW5zdGFuY2Uob3B0aW9uLCBzaG9ydHVwcGVyPUZhbHNlKQogCi0gICAg
ZGVmIF9hZGRvcHRpb24oc2VsZiwgKm9wdG5hbWVzLCAqKmF0dHJzKToKKyAgICBkZWYgX2FkZG9w
dGlvbihzZWxmLCAqb3B0bmFtZXM6IHN0ciwgKiphdHRyczogQW55KSAtPiBOb25lOgogICAgICAg
ICBvcHRpb24gPSBBcmd1bWVudCgqb3B0bmFtZXMsICoqYXR0cnMpCiAgICAgICAgIHNlbGYuX2Fk
ZG9wdGlvbl9pbnN0YW5jZShvcHRpb24sIHNob3J0dXBwZXI9VHJ1ZSkKIAotICAgIGRlZiBfYWRk
b3B0aW9uX2luc3RhbmNlKHNlbGYsIG9wdGlvbiwgc2hvcnR1cHBlcj1GYWxzZSk6CisgICAgZGVm
IF9hZGRvcHRpb25faW5zdGFuY2Uoc2VsZiwgb3B0aW9uOiAiQXJndW1lbnQiLCBzaG9ydHVwcGVy
OiBib29sID0gRmFsc2UpIC0+IE5vbmU6CiAgICAgICAgIGlmIG5vdCBzaG9ydHVwcGVyOgogICAg
ICAgICAgICAgZm9yIG9wdCBpbiBvcHRpb24uX3Nob3J0X29wdHM6CiAgICAgICAgICAgICAgICAg
aWYgb3B0WzBdID09ICItIiBhbmQgb3B0WzFdLmlzbG93ZXIoKToKQEAgLTMxMiw3NyArMzY4LDEz
NSBAQCBjbGFzcyBPcHRpb25Hcm91cChvYmplY3QpOgogCiAKIGNsYXNzIE15T3B0aW9uUGFyc2Vy
KGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz
ZXIsIGV4dHJhX2luZm89Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBleHRyYV9pbmZvOgotICAgICAg
ICAgICAgZXh0cmFfaW5mbyA9IHt9CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAor
ICAgICAgICBwYXJzZXI6IFBhcnNlciwKKyAgICAgICAgZXh0cmFfaW5mbzogT3B0aW9uYWxbRGlj
dFtzdHIsIEFueV1dID0gTm9uZSwKKyAgICAgICAgcHJvZzogT3B0aW9uYWxbc3RyXSA9IE5vbmUs
CisgICAgKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICAg
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIuX19pbml0X18oCiAgICAgICAgICAgICBzZWxmLAorICAg
ICAgICAgICAgcHJvZz1wcm9nLAogICAgICAgICAgICAgdXNhZ2U9cGFyc2VyLl91c2FnZSwKICAg
ICAgICAgICAgIGFkZF9oZWxwPUZhbHNlLAogICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPURy
b3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIsCisgICAgICAgICAgICBhbGxvd19hYmJyZXY9RmFs
c2UsCiAgICAgICAgICkKICAgICAgICAgIyBleHRyYV9pbmZvIGlzIGEgZGljdCBvZiAocGFyYW0g
LT4gdmFsdWUpIHRvIGRpc3BsYXkgaWYgdGhlcmUncwotICAgICAgICAjIGFuIHVzYWdlIGVycm9y
IHRvIHByb3ZpZGUgbW9yZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyCi0gICAg
ICAgIHNlbGYuZXh0cmFfaW5mbyA9IGV4dHJhX2luZm8KLQotICAgIGRlZiBwYXJzZV9hcmdzKHNl
bGYsIGFyZ3M9Tm9uZSwgbmFtZXNwYWNlPU5vbmUpOgotICAgICAgICAiIiJhbGxvdyBzcGxpdHRp
bmcgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMiIiIKLSAgICAgICAgYXJncywgYXJndiA9IHNlbGYu
cGFyc2Vfa25vd25fYXJncyhhcmdzLCBuYW1lc3BhY2UpCi0gICAgICAgIGlmIGFyZ3Y6Ci0gICAg
ICAgICAgICBmb3IgYXJnIGluIGFyZ3Y6CisgICAgICAgICMgYW4gdXNhZ2UgZXJyb3IgdG8gcHJv
dmlkZSBtb3JlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIuCisgICAgICAgIHNl
bGYuZXh0cmFfaW5mbyA9IGV4dHJhX2luZm8gaWYgZXh0cmFfaW5mbyBlbHNlIHt9CisKKyAgICBk
ZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZTogc3RyKSAtPiAiTm9SZXR1cm4iOgorICAgICAgICAiIiJU
cmFuc2Zvcm0gYXJncGFyc2UgZXJyb3IgbWVzc2FnZSBpbnRvIFVzYWdlRXJyb3IuIiIiCisgICAg
ICAgIG1zZyA9ICJ7fTogZXJyb3I6IHt9Ii5mb3JtYXQoc2VsZi5wcm9nLCBtZXNzYWdlKQorCisg
ICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcGFyc2VyLCAiX2NvbmZpZ19zb3VyY2VfaGludCIpOgor
ICAgICAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSB0aGUgYXR0cmlidXRlIGlzIHNldCBk
eW5hbWljYWxseS4KKyAgICAgICAgICAgIG1zZyA9ICJ7fSAoe30pIi5mb3JtYXQobXNnLCBzZWxm
Ll9wYXJzZXIuX2NvbmZpZ19zb3VyY2VfaGludCkgICMgdHlwZTogaWdub3JlCisKKyAgICAgICAg
cmFpc2UgVXNhZ2VFcnJvcihzZWxmLmZvcm1hdF91c2FnZSgpICsgbXNnKQorCisgICAgIyBUeXBl
IGlnbm9yZWQgYmVjYXVzZSB0eXBlc2hlZCBoYXMgYSB2ZXJ5IGNvbXBsZXggdHlwZSBpbiB0aGUg
c3VwZXJjbGFzcy4KKyAgICBkZWYgcGFyc2VfYXJncyggICMgdHlwZTogaWdub3JlCisgICAgICAg
IHNlbGYsCisgICAgICAgIGFyZ3M6IE9wdGlvbmFsW1NlcXVlbmNlW3N0cl1dID0gTm9uZSwKKyAg
ICAgICAgbmFtZXNwYWNlOiBPcHRpb25hbFthcmdwYXJzZS5OYW1lc3BhY2VdID0gTm9uZSwKKyAg
ICApIC0+IGFyZ3BhcnNlLk5hbWVzcGFjZToKKyAgICAgICAgIiIiQWxsb3cgc3BsaXR0aW5nIG9m
IHBvc2l0aW9uYWwgYXJndW1lbnRzLiIiIgorICAgICAgICBwYXJzZWQsIHVucmVjb2duaXplZCA9
IHNlbGYucGFyc2Vfa25vd25fYXJncyhhcmdzLCBuYW1lc3BhY2UpCisgICAgICAgIGlmIHVucmVj
b2duaXplZDoKKyAgICAgICAgICAgIGZvciBhcmcgaW4gdW5yZWNvZ25pemVkOgogICAgICAgICAg
ICAgICAgIGlmIGFyZyBhbmQgYXJnWzBdID09ICItIjoKLSAgICAgICAgICAgICAgICAgICAgbGlu
ZXMgPSBbInVucmVjb2duaXplZCBhcmd1bWVudHM6ICVzIiAlICgiICIuam9pbihhcmd2KSldCisg
ICAgICAgICAgICAgICAgICAgIGxpbmVzID0gWyJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcyIg
JSAoIiAiLmpvaW4odW5yZWNvZ25pemVkKSldCiAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2
IGluIHNvcnRlZChzZWxmLmV4dHJhX2luZm8uaXRlbXMoKSk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgJXM6ICVzIiAlIChrLCB2KSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgiICB7fToge30iLmZvcm1hdChrLCB2KSkKICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5lcnJvcigiXG4iLmpvaW4obGluZXMpKQotICAgICAgICAgICAgZ2V0YXR0
cihhcmdzLCBGSUxFX09SX0RJUikuZXh0ZW5kKGFyZ3YpCi0gICAgICAgIHJldHVybiBhcmdzCisg
ICAgICAgICAgICBnZXRhdHRyKHBhcnNlZCwgRklMRV9PUl9ESVIpLmV4dGVuZCh1bnJlY29nbml6
ZWQpCisgICAgICAgIHJldHVybiBwYXJzZWQKKworICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJd
IDwgKDMsIDkpOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgICMgQmFja3BvcnQgb2YgaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMTQzMTYgc28gd2UgY2FuCisgICAg
ICAgICMgZGlzYWJsZSBsb25nIC0tYXJndW1lbnQgYWJicmV2aWF0aW9ucyB3aXRob3V0IGJyZWFr
aW5nIHNob3J0IGZsYWdzLgorICAgICAgICBkZWYgX3BhcnNlX29wdGlvbmFsKAorICAgICAgICAg
ICAgc2VsZiwgYXJnX3N0cmluZzogc3RyCisgICAgICAgICkgLT4gT3B0aW9uYWxbVHVwbGVbT3B0
aW9uYWxbYXJncGFyc2UuQWN0aW9uXSwgc3RyLCBPcHRpb25hbFtzdHJdXV06CisgICAgICAgICAg
ICBpZiBub3QgYXJnX3N0cmluZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICAgICAgaWYgbm90IGFyZ19zdHJpbmdbMF0gaW4gc2VsZi5wcmVmaXhfY2hhcnM6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIGFyZ19zdHJpbmcgaW4gc2VsZi5f
b3B0aW9uX3N0cmluZ19hY3Rpb25zOgorICAgICAgICAgICAgICAgIGFjdGlvbiA9IHNlbGYuX29w
dGlvbl9zdHJpbmdfYWN0aW9uc1thcmdfc3RyaW5nXQorICAgICAgICAgICAgICAgIHJldHVybiBh
Y3Rpb24sIGFyZ19zdHJpbmcsIE5vbmUKKyAgICAgICAgICAgIGlmIGxlbihhcmdfc3RyaW5nKSA9
PSAxOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiAiPSIgaW4g
YXJnX3N0cmluZzoKKyAgICAgICAgICAgICAgICBvcHRpb25fc3RyaW5nLCBleHBsaWNpdF9hcmcg
PSBhcmdfc3RyaW5nLnNwbGl0KCI9IiwgMSkKKyAgICAgICAgICAgICAgICBpZiBvcHRpb25fc3Ry
aW5nIGluIHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9uczoKKyAgICAgICAgICAgICAgICAgICAg
YWN0aW9uID0gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zW29wdGlvbl9zdHJpbmddCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2Fy
ZworICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19hYmJyZXYgb3Igbm90IGFyZ19zdHJpbmcuc3Rh
cnRzd2l0aCgiLS0iKToKKyAgICAgICAgICAgICAgICBvcHRpb25fdHVwbGVzID0gc2VsZi5fZ2V0
X29wdGlvbl90dXBsZXMoYXJnX3N0cmluZykKKyAgICAgICAgICAgICAgICBpZiBsZW4ob3B0aW9u
X3R1cGxlcykgPiAxOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgImFtYmlndW91cyBvcHRpb246ICUob3B0aW9uKXMgY291bGQgbWF0
Y2ggJShtYXRjaGVzKXMiCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW9ucyA9ICIsICIuam9pbihvcHRpb24gZm9yIF8sIG9wdGlvbiwgXyBpbiBvcHRpb25f
dHVwbGVzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG1zZyAlIHsib3B0aW9uIjog
YXJnX3N0cmluZywgIm1hdGNoZXMiOiBvcHRpb25zfSkKKyAgICAgICAgICAgICAgICBlbGlmIGxl
bihvcHRpb25fdHVwbGVzKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAob3B0aW9uX3R1cGxl
LCkgPSBvcHRpb25fdHVwbGVzCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25fdHVw
bGUKKyAgICAgICAgICAgIGlmIHNlbGYuX25lZ2F0aXZlX251bWJlcl9tYXRjaGVyLm1hdGNoKGFy
Z19zdHJpbmcpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9oYXNfbmVnYXRpdmVfbnVt
YmVyX29wdGlvbmFsczoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
ICAgIGlmICIgIiBpbiBhcmdfc3RyaW5nOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisg
ICAgICAgICAgICByZXR1cm4gTm9uZSwgYXJnX3N0cmluZywgTm9uZQogCiAKIGNsYXNzIERyb3BT
aG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIoYXJncGFyc2UuSGVscEZvcm1hdHRlcik6Ci0gICAgIiIi
c2hvcnRlbiBoZWxwIGZvciBsb25nIG9wdGlvbnMgdGhhdCBkaWZmZXIgb25seSBpbiBleHRyYSBo
eXBoZW5zCisgICAgIiIiU2hvcnRlbiBoZWxwIGZvciBsb25nIG9wdGlvbnMgdGhhdCBkaWZmZXIg
b25seSBpbiBleHRyYSBoeXBoZW5zLgogCi0gICAgLSBjb2xsYXBzZSAqKmxvbmcqKiBvcHRpb25z
IHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBmb3IgZXh0cmEgaHlwaGVucwotICAgIC0gc3BlY2lh
bCBhY3Rpb24gYXR0cmlidXRlIG1hcF9sb25nX29wdGlvbiBhbGxvd3Mgc3VycHJlc3NpbmcgYWRk
aXRpb25hbAotICAgICAgbG9uZyBvcHRpb25zCi0gICAgLSBzaG9ydGN1dCBpZiB0aGVyZSBhcmUg
b25seSB0d28gb3B0aW9ucyBhbmQgb25lIG9mIHRoZW0gaXMgYSBzaG9ydCBvbmUKLSAgICAtIGNh
Y2hlIHJlc3VsdCBvbiBhY3Rpb24gb2JqZWN0IGFzIHRoaXMgaXMgY2FsbGVkIGF0IGxlYXN0IDIg
dGltZXMKKyAgICAtIENvbGxhcHNlICoqbG9uZyoqIG9wdGlvbnMgdGhhdCBhcmUgdGhlIHNhbWUg
ZXhjZXB0IGZvciBleHRyYSBoeXBoZW5zLgorICAgIC0gU2hvcnRjdXQgaWYgdGhlcmUgYXJlIG9u
bHkgdHdvIG9wdGlvbnMgYW5kIG9uZSBvZiB0aGVtIGlzIGEgc2hvcnQgb25lLgorICAgIC0gQ2Fj
aGUgcmVzdWx0IG9uIHRoZSBhY3Rpb24gb2JqZWN0IGFzIHRoaXMgaXMgY2FsbGVkIGF0IGxlYXN0
IDIgdGltZXMuCiAgICAgIiIiCiAKLSAgICBkZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihz
ZWxmLCBhY3Rpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJnczogQW55LCAqKmt3YXJn
czogQW55KSAtPiBOb25lOgorICAgICAgICAjIFVzZSBtb3JlIGFjY3VyYXRlIHRlcm1pbmFsIHdp
ZHRoLgorICAgICAgICBpZiAid2lkdGgiIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAgICBrd2Fy
Z3NbIndpZHRoIl0gPSBfcHl0ZXN0Ll9pby5nZXRfdGVybWluYWxfd2lkdGgoKQorICAgICAgICBz
dXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBfZm9ybWF0X2FjdGlv
bl9pbnZvY2F0aW9uKHNlbGYsIGFjdGlvbjogYXJncGFyc2UuQWN0aW9uKSAtPiBzdHI6CiAgICAg
ICAgIG9yZ3N0ciA9IGFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIuX2Zvcm1hdF9hY3Rpb25faW52b2Nh
dGlvbihzZWxmLCBhY3Rpb24pCiAgICAgICAgIGlmIG9yZ3N0ciBhbmQgb3Jnc3RyWzBdICE9ICIt
IjogICMgb25seSBvcHRpb25hbCBhcmd1bWVudHMKICAgICAgICAgICAgIHJldHVybiBvcmdzdHIK
LSAgICAgICAgcmVzID0gZ2V0YXR0cihhY3Rpb24sICJfZm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0
aW9uIiwgTm9uZSkKKyAgICAgICAgcmVzID0gZ2V0YXR0cigKKyAgICAgICAgICAgIGFjdGlvbiwg
Il9mb3JtYXR0ZWRfYWN0aW9uX2ludm9jYXRpb24iLCBOb25lCisgICAgICAgICkgICMgdHlwZTog
T3B0aW9uYWxbc3RyXQogICAgICAgICBpZiByZXM6CiAgICAgICAgICAgICByZXR1cm4gcmVzCiAg
ICAgICAgIG9wdGlvbnMgPSBvcmdzdHIuc3BsaXQoIiwgIikKICAgICAgICAgaWYgbGVuKG9wdGlv
bnMpID09IDIgYW5kIChsZW4ob3B0aW9uc1swXSkgPT0gMiBvciBsZW4ob3B0aW9uc1sxXSkgPT0g
Mik6CiAgICAgICAgICAgICAjIGEgc2hvcnRjdXQgZm9yICctaCwgLS1oZWxwJyBvciAnLS1hYmMn
LCAnLWEnCi0gICAgICAgICAgICBhY3Rpb24uX2Zvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiA9
IG9yZ3N0cgorICAgICAgICAgICAgYWN0aW9uLl9mb3JtYXR0ZWRfYWN0aW9uX2ludm9jYXRpb24g
PSBvcmdzdHIgICMgdHlwZTogaWdub3JlCiAgICAgICAgICAgICByZXR1cm4gb3Jnc3RyCiAgICAg
ICAgIHJldHVybl9saXN0ID0gW10KLSAgICAgICAgb3B0aW9uX21hcCA9IGdldGF0dHIoYWN0aW9u
LCAibWFwX2xvbmdfb3B0aW9uIiwge30pCi0gICAgICAgIGlmIG9wdGlvbl9tYXAgaXMgTm9uZToK
LSAgICAgICAgICAgIG9wdGlvbl9tYXAgPSB7fQotICAgICAgICBzaG9ydF9sb25nID0ge30KKyAg
ICAgICAgc2hvcnRfbG9uZyA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBzdHJdCiAgICAgICAgIGZv
ciBvcHRpb24gaW4gb3B0aW9uczoKICAgICAgICAgICAgIGlmIGxlbihvcHRpb24pID09IDIgb3Ig
b3B0aW9uWzJdID09ICIgIjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
aWYgbm90IG9wdGlvbi5zdGFydHN3aXRoKCItLSIpOgogICAgICAgICAgICAgICAgIHJhaXNlIEFy
Z3VtZW50RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdsb25nIG9wdGlvbmFsIGFyZ3VtZW50
IHdpdGhvdXQgIi0tIjogWyVzXScgJSAob3B0aW9uKSwgc2VsZgorICAgICAgICAgICAgICAgICAg
ICAnbG9uZyBvcHRpb25hbCBhcmd1bWVudCB3aXRob3V0ICItLSI6IFslc10nICUgKG9wdGlvbiks
IG9wdGlvbgogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgIHh4b3B0aW9uID0gb3B0aW9u
WzI6XQotICAgICAgICAgICAgaWYgeHhvcHRpb24uc3BsaXQoKVswXSBub3QgaW4gb3B0aW9uX21h
cDoKLSAgICAgICAgICAgICAgICBzaG9ydGVuZWQgPSB4eG9wdGlvbi5yZXBsYWNlKCItIiwgIiIp
Ci0gICAgICAgICAgICAgICAgaWYgKAotICAgICAgICAgICAgICAgICAgICBzaG9ydGVuZWQgbm90
IGluIHNob3J0X2xvbmcKLSAgICAgICAgICAgICAgICAgICAgb3IgbGVuKHNob3J0X2xvbmdbc2hv
cnRlbmVkXSkgPCBsZW4oeHhvcHRpb24pCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAg
ICAgICAgICAgc2hvcnRfbG9uZ1tzaG9ydGVuZWRdID0geHhvcHRpb24KKyAgICAgICAgICAgIHNo
b3J0ZW5lZCA9IHh4b3B0aW9uLnJlcGxhY2UoIi0iLCAiIikKKyAgICAgICAgICAgIGlmIHNob3J0
ZW5lZCBub3QgaW4gc2hvcnRfbG9uZyBvciBsZW4oc2hvcnRfbG9uZ1tzaG9ydGVuZWRdKSA8IGxl
bigKKyAgICAgICAgICAgICAgICB4eG9wdGlvbgorICAgICAgICAgICAgKToKKyAgICAgICAgICAg
ICAgICBzaG9ydF9sb25nW3Nob3J0ZW5lZF0gPSB4eG9wdGlvbgogICAgICAgICAjIG5vdyBzaG9y
dF9sb25nIGhhcyBiZWVuIGZpbGxlZCBvdXQgdG8gdGhlIGxvbmdlc3Qgd2l0aCBkYXNoZXMKICAg
ICAgICAgIyAqKmFuZCoqIHdlIGtlZXAgdGhlIHJpZ2h0IG9wdGlvbiBvcmRlcmluZyBmcm9tIGFk
ZF9hcmd1bWVudAogICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6CkBAIC0zOTAsNSArNTA0
LDE4IEBAIGNsYXNzIERyb3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIoYXJncGFyc2UuSGVscEZv
cm1hdHRlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuX2xpc3QuYXBwZW5kKG9wdGlvbikKICAg
ICAgICAgICAgIGlmIG9wdGlvblsyOl0gPT0gc2hvcnRfbG9uZy5nZXQob3B0aW9uLnJlcGxhY2Uo
Ii0iLCAiIikpOgogICAgICAgICAgICAgICAgIHJldHVybl9saXN0LmFwcGVuZChvcHRpb24ucmVw
bGFjZSgiICIsICI9IiwgMSkpCi0gICAgICAgIGFjdGlvbi5fZm9ybWF0dGVkX2FjdGlvbl9pbnZv
Y2F0aW9uID0gIiwgIi5qb2luKHJldHVybl9saXN0KQotICAgICAgICByZXR1cm4gYWN0aW9uLl9m
b3JtYXR0ZWRfYWN0aW9uX2ludm9jYXRpb24KKyAgICAgICAgZm9ybWF0dGVkX2FjdGlvbl9pbnZv
Y2F0aW9uID0gIiwgIi5qb2luKHJldHVybl9saXN0KQorICAgICAgICBhY3Rpb24uX2Zvcm1hdHRl
ZF9hY3Rpb25faW52b2NhdGlvbiA9IGZvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiAgIyB0eXBl
OiBpZ25vcmUKKyAgICAgICAgcmV0dXJuIGZvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbgorCisg
ICAgZGVmIF9zcGxpdF9saW5lcyhzZWxmLCB0ZXh0LCB3aWR0aCk6CisgICAgICAgICIiIldyYXAg
bGluZXMgYWZ0ZXIgc3BsaXR0aW5nIG9uIG9yaWdpbmFsIG5ld2xpbmVzLgorCisgICAgICAgIFRo
aXMgYWxsb3dzIHRvIGhhdmUgZXhwbGljaXQgbGluZSBicmVha3MgaW4gdGhlIGhlbHAgdGV4dC4K
KyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCB0ZXh0d3JhcAorCisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBs
aW5lcy5leHRlbmQodGV4dHdyYXAud3JhcChsaW5lLnN0cmlwKCksIHdpZHRoKSkKKyAgICAgICAg
cmV0dXJuIGxpbmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcv
ZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9leGNlcHRpb25z
LnB5CmluZGV4IDY0YmFlODM0ZDFjZS4uNGYxMzIwZTc1OGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvZXhjZXB0aW9ucy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9jb25maWcvZXhjZXB0aW9ucy5weQpAQCAtMSw4ICsxLDExIEBACitmcm9tIF9w
eXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorCisKK0BmaW5hbAogY2xhc3MgVXNhZ2VFcnJvcihF
eGNlcHRpb24pOgotICAgICIiIiBlcnJvciBpbiBweXRlc3QgdXNhZ2Ugb3IgaW52b2NhdGlvbiIi
IgorICAgICIiIkVycm9yIGluIHB5dGVzdCB1c2FnZSBvciBpbnZvY2F0aW9uLiIiIgogCiAKIGNs
YXNzIFByaW50SGVscChFeGNlcHRpb24pOgotICAgICIiIlJhaXNlZCB3aGVuIHB5dGVzdCBzaG91
bGQgcHJpbnQgaXQncyBoZWxwIHRvIHNraXAgdGhlIHJlc3Qgb2YgdGhlCisgICAgIiIiUmFpc2Vk
IHdoZW4gcHl0ZXN0IHNob3VsZCBwcmludCBpdHMgaGVscCB0byBza2lwIHRoZSByZXN0IG9mIHRo
ZQogICAgIGFyZ3VtZW50IHBhcnNpbmcgYW5kIHZhbGlkYXRpb24uIiIiCi0gICAgcGFzcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL2ZpbmRwYXRocy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9maW5kcGF0aHMucHkKaW5kZXggZmRlN2JkZGI5
MzliLi4xNjdiOWU3YTAwNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Nv
bmZpZy9maW5kcGF0aHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL2Zp
bmRwYXRocy5weQpAQCAtMSwxNDAgKzEsMjExIEBACi1pbXBvcnQgcHkKIGltcG9ydCBvcworZnJv
bSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorZnJvbSB0
eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBp
bmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5n
IGltcG9ydCBVbmlvbgorCitpbXBvcnQgaW5pY29uZmlnCisKIGZyb20gLmV4Y2VwdGlvbnMgaW1w
b3J0IFVzYWdlRXJyb3IKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcK
K2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIg
aW1wb3J0IGFic29sdXRlcGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGNvbW1vbnBh
dGgKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCiAKK2lmIFRZUEVfQ0hFQ0tJTkc6
CisgICAgZnJvbSAuIGltcG9ydCBDb25maWcKIAotZGVmIGV4aXN0cyhwYXRoLCBpZ25vcmU9RW52
aXJvbm1lbnRFcnJvcik6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gcGF0aC5jaGVjaygpCi0g
ICAgZXhjZXB0IGlnbm9yZToKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAKK2RlZiBfcGFyc2VfaW5p
X2NvbmZpZyhwYXRoOiBQYXRoKSAtPiBpbmljb25maWcuSW5pQ29uZmlnOgorICAgICIiIlBhcnNl
IHRoZSBnaXZlbiBnZW5lcmljICcuaW5pJyBmaWxlIHVzaW5nIGxlZ2FjeSBJbmlDb25maWcgcGFy
c2VyLCByZXR1cm5pbmcKKyAgICB0aGUgcGFyc2VkIG9iamVjdC4KIAotZGVmIGdldGNmZyhhcmdz
LCB3YXJuZnVuYz1Ob25lKToKKyAgICBSYWlzZSBVc2FnZUVycm9yIGlmIHRoZSBmaWxlIGNhbm5v
dCBiZSBwYXJzZWQuCiAgICAgIiIiCi0gICAgU2VhcmNoIHRoZSBsaXN0IG9mIGFyZ3VtZW50cyBm
b3IgYSB2YWxpZCBpbmktZmlsZSBmb3IgcHl0ZXN0LAotICAgIGFuZCByZXR1cm4gYSB0dXBsZSBv
ZiAocm9vdGRpciwgaW5pZmlsZSwgY2ZnLWRpY3QpLgorICAgIHRyeToKKyAgICAgICAgcmV0dXJu
IGluaWNvbmZpZy5JbmlDb25maWcocGF0aCkKKyAgICBleGNlcHQgaW5pY29uZmlnLlBhcnNlRXJy
b3IgYXMgZXhjOgorICAgICAgICByYWlzZSBVc2FnZUVycm9yKHN0cihleGMpKSBmcm9tIGV4Ywor
CisKK2RlZiBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZSgKKyAgICBmaWxlcGF0aDogUGF0aCwK
KykgLT4gT3B0aW9uYWxbRGljdFtzdHIsIFVuaW9uW3N0ciwgTGlzdFtzdHJdXV1dOgorICAgICIi
IkxvYWQgcHl0ZXN0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgZ2l2ZW4gZmlsZSBwYXRoLCBpZiBz
dXBwb3J0ZWQuCiAKLSAgICBub3RlOiB3YXJuZnVuYyBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB1
c2VkIHRvIHdhcm4KLSAgICAgICAgYWJvdXQgaW5pLWZpbGVzIHRoYXQgdXNlIGRlcHJlY2F0ZWQg
ZmVhdHVyZXMuCi0gICAgICAgIFRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZW1vdmVkIHdoZW4g
cHl0ZXN0Ci0gICAgICAgIGFkb3B0cyBzdGFuZGFyZCBkZXByZWNhdGlvbiB3YXJuaW5ncyAoIzE4
MDQpLgorICAgIFJldHVybiBOb25lIGlmIHRoZSBmaWxlIGRvZXMgbm90IGNvbnRhaW4gdmFsaWQg
cHl0ZXN0IGNvbmZpZ3VyYXRpb24uCiAgICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0
ZWQgaW1wb3J0IENGR19QWVRFU1RfU0VDVElPTgogCi0gICAgaW5pYmFzZW5hbWVzID0gWyJweXRl
c3QuaW5pIiwgInRveC5pbmkiLCAic2V0dXAuY2ZnIl0KKyAgICAjIENvbmZpZ3VyYXRpb24gZnJv
bSBpbmkgZmlsZXMgYXJlIG9idGFpbmVkIGZyb20gdGhlIFtweXRlc3RdIHNlY3Rpb24sIGlmIHBy
ZXNlbnQuCisgICAgaWYgZmlsZXBhdGguc3VmZml4ID09ICIuaW5pIjoKKyAgICAgICAgaW5pY29u
ZmlnID0gX3BhcnNlX2luaV9jb25maWcoZmlsZXBhdGgpCisKKyAgICAgICAgaWYgInB5dGVzdCIg
aW4gaW5pY29uZmlnOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QoaW5pY29uZmlnWyJweXRlc3Qi
XS5pdGVtcygpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyAicHl0ZXN0LmluaSIgZmls
ZXMgYXJlIGFsd2F5cyB0aGUgc291cmNlIG9mIGNvbmZpZ3VyYXRpb24sIGV2ZW4gaWYgZW1wdHku
CisgICAgICAgICAgICBpZiBmaWxlcGF0aC5uYW1lID09ICJweXRlc3QuaW5pIjoKKyAgICAgICAg
ICAgICAgICByZXR1cm4ge30KKworICAgICMgJy5jZmcnIGZpbGVzIGFyZSBjb25zaWRlcmVkIGlm
IHRoZXkgY29udGFpbiBhICJbdG9vbDpweXRlc3RdIiBzZWN0aW9uLgorICAgIGVsaWYgZmlsZXBh
dGguc3VmZml4ID09ICIuY2ZnIjoKKyAgICAgICAgaW5pY29uZmlnID0gX3BhcnNlX2luaV9jb25m
aWcoZmlsZXBhdGgpCisKKyAgICAgICAgaWYgInRvb2w6cHl0ZXN0IiBpbiBpbmljb25maWcuc2Vj
dGlvbnM6CisgICAgICAgICAgICByZXR1cm4gZGljdChpbmljb25maWdbInRvb2w6cHl0ZXN0Il0u
aXRlbXMoKSkKKyAgICAgICAgZWxpZiAicHl0ZXN0IiBpbiBpbmljb25maWcuc2VjdGlvbnM6Cisg
ICAgICAgICAgICAjIElmIGEgc2V0dXAuY2ZnIGNvbnRhaW5zIGEgIltweXRlc3RdIiBzZWN0aW9u
LCB3ZSByYWlzZSBhIGZhaWx1cmUgdG8gaW5kaWNhdGUgdXNlcnMgdGhhdAorICAgICAgICAgICAg
IyBwbGFpbiAiW3B5dGVzdF0iIHNlY3Rpb25zIGluIHNldHVwLmNmZyBmaWxlcyBpcyBubyBsb25n
ZXIgc3VwcG9ydGVkICgjMzA4NikuCisgICAgICAgICAgICBmYWlsKENGR19QWVRFU1RfU0VDVElP
Ti5mb3JtYXQoZmlsZW5hbWU9InNldHVwLmNmZyIpLCBweXRyYWNlPUZhbHNlKQorCisgICAgIyAn
LnRvbWwnIGZpbGVzIGFyZSBjb25zaWRlcmVkIGlmIHRoZXkgY29udGFpbiBhIFt0b29sLnB5dGVz
dC5pbmlfb3B0aW9uc10gdGFibGUuCisgICAgZWxpZiBmaWxlcGF0aC5zdWZmaXggPT0gIi50b21s
IjoKKyAgICAgICAgaW1wb3J0IHRvbWwKKworICAgICAgICBjb25maWcgPSB0b21sLmxvYWQoc3Ry
KGZpbGVwYXRoKSkKKworICAgICAgICByZXN1bHQgPSBjb25maWcuZ2V0KCJ0b29sIiwge30pLmdl
dCgicHl0ZXN0Iiwge30pLmdldCgiaW5pX29wdGlvbnMiLCBOb25lKQorICAgICAgICBpZiByZXN1
bHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFRPTUwgc3VwcG9ydHMgcmljaGVyIGRhdGEg
dHlwZXMgdGhhbiBpbmkgZmlsZXMgKHN0cmluZ3MsIGFycmF5cywgZmxvYXRzLCBpbnRzLCBldGMp
LAorICAgICAgICAgICAgIyBob3dldmVyIHdlIG5lZWQgdG8gY29udmVydCBhbGwgc2NhbGFyIHZh
bHVlcyB0byBzdHIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgcmVzdAorICAgICAgICAgICAg
IyBvZiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHdoaWNoIGV4cGVjdHMgc3RyaW5ncyBvbmx5
LgorICAgICAgICAgICAgZGVmIG1ha2Vfc2NhbGFyKHY6IG9iamVjdCkgLT4gVW5pb25bc3RyLCBM
aXN0W3N0cl1dOgorICAgICAgICAgICAgICAgIHJldHVybiB2IGlmIGlzaW5zdGFuY2UodiwgbGlz
dCkgZWxzZSBzdHIodikKKworICAgICAgICAgICAgcmV0dXJuIHtrOiBtYWtlX3NjYWxhcih2KSBm
b3IgaywgdiBpbiByZXN1bHQuaXRlbXMoKX0KKworICAgIHJldHVybiBOb25lCisKKworZGVmIGxv
Y2F0ZV9jb25maWcoCisgICAgYXJnczogSXRlcmFibGVbUGF0aF0sCispIC0+IFR1cGxlWworICAg
IE9wdGlvbmFsW1BhdGhdLCBPcHRpb25hbFtQYXRoXSwgRGljdFtzdHIsIFVuaW9uW3N0ciwgTGlz
dFtzdHJdXV0sCitdOgorICAgICIiIlNlYXJjaCBpbiB0aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9y
IGEgdmFsaWQgaW5pLWZpbGUgZm9yIHB5dGVzdCwKKyAgICBhbmQgcmV0dXJuIGEgdHVwbGUgb2Yg
KHJvb3RkaXIsIGluaWZpbGUsIGNmZy1kaWN0KS4iIiIKKyAgICBjb25maWdfbmFtZXMgPSBbCisg
ICAgICAgICJweXRlc3QuaW5pIiwKKyAgICAgICAgInB5cHJvamVjdC50b21sIiwKKyAgICAgICAg
InRveC5pbmkiLAorICAgICAgICAic2V0dXAuY2ZnIiwKKyAgICBdCiAgICAgYXJncyA9IFt4IGZv
ciB4IGluIGFyZ3MgaWYgbm90IHN0cih4KS5zdGFydHN3aXRoKCItIildCiAgICAgaWYgbm90IGFy
Z3M6Ci0gICAgICAgIGFyZ3MgPSBbcHkucGF0aC5sb2NhbCgpXQorICAgICAgICBhcmdzID0gW1Bh
dGguY3dkKCldCiAgICAgZm9yIGFyZyBpbiBhcmdzOgotICAgICAgICBhcmcgPSBweS5wYXRoLmxv
Y2FsKGFyZykKLSAgICAgICAgZm9yIGJhc2UgaW4gYXJnLnBhcnRzKHJldmVyc2U9VHJ1ZSk6Ci0g
ICAgICAgICAgICBmb3IgaW5pYmFzZW5hbWUgaW4gaW5pYmFzZW5hbWVzOgotICAgICAgICAgICAg
ICAgIHAgPSBiYXNlLmpvaW4oaW5pYmFzZW5hbWUpCi0gICAgICAgICAgICAgICAgaWYgZXhpc3Rz
KHApOgotICAgICAgICAgICAgICAgICAgICBpbmljb25maWcgPSBweS5pbmljb25maWcuSW5pQ29u
ZmlnKHApCi0gICAgICAgICAgICAgICAgICAgIGlmICJweXRlc3QiIGluIGluaWNvbmZpZy5zZWN0
aW9uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGluaWJhc2VuYW1lID09ICJzZXR1cC5j
ZmciIGFuZCB3YXJuZnVuYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuZnVuYygK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkMxIiwgQ0ZHX1BZVEVTVF9TRUNUSU9O
LmZvcm1hdChmaWxlbmFtZT1pbmliYXNlbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZSwgcCwgaW5pY29uZmlnWyJw
eXRlc3QiXQotICAgICAgICAgICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpbmliYXNlbmFtZSA9PSAic2V0dXAuY2ZnIgotICAgICAgICAgICAgICAgICAgICAgICAgYW5k
ICJ0b29sOnB5dGVzdCIgaW4gaW5pY29uZmlnLnNlY3Rpb25zCi0gICAgICAgICAgICAgICAgICAg
ICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZSwgcCwgaW5pY29uZmlnWyJ0
b29sOnB5dGVzdCJdCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pYmFzZW5hbWUgPT0gInB5
dGVzdC5pbmkiOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvd2VkIHRvIGJlIGVtcHR5
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZSwgcCwge30KLSAgICByZXR1cm4g
Tm9uZSwgTm9uZSwgTm9uZQotCi0KLWRlZiBnZXRfY29tbW9uX2FuY2VzdG9yKHBhdGhzKToKLSAg
ICBjb21tb25fYW5jZXN0b3IgPSBOb25lCisgICAgICAgIGFyZ3BhdGggPSBhYnNvbHV0ZXBhdGgo
YXJnKQorICAgICAgICBmb3IgYmFzZSBpbiAoYXJncGF0aCwgKmFyZ3BhdGgucGFyZW50cyk6Cisg
ICAgICAgICAgICBmb3IgY29uZmlnX25hbWUgaW4gY29uZmlnX25hbWVzOgorICAgICAgICAgICAg
ICAgIHAgPSBiYXNlIC8gY29uZmlnX25hbWUKKyAgICAgICAgICAgICAgICBpZiBwLmlzX2ZpbGUo
KToKKyAgICAgICAgICAgICAgICAgICAgaW5pX2NvbmZpZyA9IGxvYWRfY29uZmlnX2RpY3RfZnJv
bV9maWxlKHApCisgICAgICAgICAgICAgICAgICAgIGlmIGluaV9jb25maWcgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZSwgcCwgaW5pX2NvbmZpZworICAg
IHJldHVybiBOb25lLCBOb25lLCB7fQorCisKK2RlZiBnZXRfY29tbW9uX2FuY2VzdG9yKHBhdGhz
OiBJdGVyYWJsZVtQYXRoXSkgLT4gUGF0aDoKKyAgICBjb21tb25fYW5jZXN0b3IgPSBOb25lICAj
IHR5cGU6IE9wdGlvbmFsW1BhdGhdCiAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgIGlm
IG5vdCBwYXRoLmV4aXN0cygpOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgY29t
bW9uX2FuY2VzdG9yIGlzIE5vbmU6CiAgICAgICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBwYXRo
CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBwYXRoLnJlbHRvKGNvbW1vbl9hbmNlc3Rv
cikgb3IgcGF0aCA9PSBjb21tb25fYW5jZXN0b3I6CisgICAgICAgICAgICBpZiBjb21tb25fYW5j
ZXN0b3IgaW4gcGF0aC5wYXJlbnRzIG9yIHBhdGggPT0gY29tbW9uX2FuY2VzdG9yOgogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGNvbW1vbl9hbmNlc3Rvci5yZWx0
byhwYXRoKToKKyAgICAgICAgICAgIGVsaWYgcGF0aCBpbiBjb21tb25fYW5jZXN0b3IucGFyZW50
czoKICAgICAgICAgICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBwYXRoCiAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHNoYXJlZCA9IHBhdGguY29tbW9uKGNvbW1vbl9hbmNlc3Rv
cikKKyAgICAgICAgICAgICAgICBzaGFyZWQgPSBjb21tb25wYXRoKHBhdGgsIGNvbW1vbl9hbmNl
c3RvcikKICAgICAgICAgICAgICAgICBpZiBzaGFyZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAg
ICAgICAgICAgIGNvbW1vbl9hbmNlc3RvciA9IHNoYXJlZAogICAgIGlmIGNvbW1vbl9hbmNlc3Rv
ciBpcyBOb25lOgotICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBweS5wYXRoLmxvY2FsKCkKLSAg
ICBlbGlmIGNvbW1vbl9hbmNlc3Rvci5pc2ZpbGUoKToKLSAgICAgICAgY29tbW9uX2FuY2VzdG9y
ID0gY29tbW9uX2FuY2VzdG9yLmRpcnBhdGgoKQorICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBQ
YXRoLmN3ZCgpCisgICAgZWxpZiBjb21tb25fYW5jZXN0b3IuaXNfZmlsZSgpOgorICAgICAgICBj
b21tb25fYW5jZXN0b3IgPSBjb21tb25fYW5jZXN0b3IucGFyZW50CiAgICAgcmV0dXJuIGNvbW1v
bl9hbmNlc3RvcgogCiAKLWRlZiBnZXRfZGlyc19mcm9tX2FyZ3MoYXJncyk6Ci0KLSAgICBkZWYg
aXNfb3B0aW9uKHgpOgotICAgICAgICByZXR1cm4gc3RyKHgpLnN0YXJ0c3dpdGgoIi0iKQorZGVm
IGdldF9kaXJzX2Zyb21fYXJncyhhcmdzOiBJdGVyYWJsZVtzdHJdKSAtPiBMaXN0W1BhdGhdOgor
ICAgIGRlZiBpc19vcHRpb24oeDogc3RyKSAtPiBib29sOgorICAgICAgICByZXR1cm4geC5zdGFy
dHN3aXRoKCItIikKIAotICAgIGRlZiBnZXRfZmlsZV9wYXJ0X2Zyb21fbm9kZV9pZCh4KToKLSAg
ICAgICAgcmV0dXJuIHN0cih4KS5zcGxpdCgiOjoiKVswXQorICAgIGRlZiBnZXRfZmlsZV9wYXJ0
X2Zyb21fbm9kZV9pZCh4OiBzdHIpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuIHguc3BsaXQoIjo6
IilbMF0KIAotICAgIGRlZiBnZXRfZGlyX2Zyb21fcGF0aChwYXRoKToKLSAgICAgICAgaWYgcGF0
aC5pc2RpcigpOgorICAgIGRlZiBnZXRfZGlyX2Zyb21fcGF0aChwYXRoOiBQYXRoKSAtPiBQYXRo
OgorICAgICAgICBpZiBwYXRoLmlzX2RpcigpOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKLSAg
ICAgICAgcmV0dXJuIHB5LnBhdGgubG9jYWwocGF0aC5kaXJuYW1lKQorICAgICAgICByZXR1cm4g
cGF0aC5wYXJlbnQKKworICAgIGRlZiBzYWZlX2V4aXN0cyhwYXRoOiBQYXRoKSAtPiBib29sOgor
ICAgICAgICAjIFRoaXMgY2FuIHRocm93IG9uIHBhdGhzIHRoYXQgY29udGFpbiBjaGFyYWN0ZXJz
IHVucmVwcmVzZW50YWJsZSBhdCB0aGUgT1MgbGV2ZWwsCisgICAgICAgICMgb3Igd2l0aCBpbnZh
bGlkIHN5bnRheCBvbiBXaW5kb3dzIChodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM1MzA2
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcGF0aC5leGlzdHMoKQorICAgICAg
ICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgIyBUaGVz
ZSBsb29rIGxpa2UgcGF0aHMgYnV0IG1heSBub3QgZXhpc3QKICAgICBwb3NzaWJsZV9wYXRocyA9
ICgKLSAgICAgICAgcHkucGF0aC5sb2NhbChnZXRfZmlsZV9wYXJ0X2Zyb21fbm9kZV9pZChhcmcp
KQorICAgICAgICBhYnNvbHV0ZXBhdGgoZ2V0X2ZpbGVfcGFydF9mcm9tX25vZGVfaWQoYXJnKSkK
ICAgICAgICAgZm9yIGFyZyBpbiBhcmdzCiAgICAgICAgIGlmIG5vdCBpc19vcHRpb24oYXJnKQog
ICAgICkKIAotICAgIHJldHVybiBbZ2V0X2Rpcl9mcm9tX3BhdGgocGF0aCkgZm9yIHBhdGggaW4g
cG9zc2libGVfcGF0aHMgaWYgcGF0aC5leGlzdHMoKV0KKyAgICByZXR1cm4gW2dldF9kaXJfZnJv
bV9wYXRoKHBhdGgpIGZvciBwYXRoIGluIHBvc3NpYmxlX3BhdGhzIGlmIHNhZmVfZXhpc3RzKHBh
dGgpXQorCisKK0NGR19QWVRFU1RfU0VDVElPTiA9ICJbcHl0ZXN0XSBzZWN0aW9uIGluIHtmaWxl
bmFtZX0gZmlsZXMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgY2hhbmdlIHRvIFt0b29sOnB5dGVz
dF0gaW5zdGVhZC4iCiAKIAotZGVmIGRldGVybWluZV9zZXR1cChpbmlmaWxlLCBhcmdzLCB3YXJu
ZnVuYz1Ob25lLCByb290ZGlyX2NtZF9hcmc9Tm9uZSk6CitkZWYgZGV0ZXJtaW5lX3NldHVwKAor
ICAgIGluaWZpbGU6IE9wdGlvbmFsW3N0cl0sCisgICAgYXJnczogU2VxdWVuY2Vbc3RyXSwKKyAg
ICByb290ZGlyX2NtZF9hcmc6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgIGNvbmZpZzogT3B0
aW9uYWxbIkNvbmZpZyJdID0gTm9uZSwKKykgLT4gVHVwbGVbUGF0aCwgT3B0aW9uYWxbUGF0aF0s
IERpY3Rbc3RyLCBVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKKyAgICByb290ZGlyID0gTm9uZQog
ICAgIGRpcnMgPSBnZXRfZGlyc19mcm9tX2FyZ3MoYXJncykKICAgICBpZiBpbmlmaWxlOgotICAg
ICAgICBpbmljb25maWcgPSBweS5pbmljb25maWcuSW5pQ29uZmlnKGluaWZpbGUpCi0gICAgICAg
IGlzX2NmZ19maWxlID0gc3RyKGluaWZpbGUpLmVuZHN3aXRoKCIuY2ZnIikKLSAgICAgICAgIyBU
T0RPOiBbcHl0ZXN0XSBzZWN0aW9uIGluICouY2ZnIGZpbGVzIGlzIGRlcHJpY2F0ZWQuIE5lZWQg
cmVmYWN0b3JpbmcuCi0gICAgICAgIHNlY3Rpb25zID0gWyJ0b29sOnB5dGVzdCIsICJweXRlc3Qi
XSBpZiBpc19jZmdfZmlsZSBlbHNlIFsicHl0ZXN0Il0KLSAgICAgICAgZm9yIHNlY3Rpb24gaW4g
c2VjdGlvbnM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW5pY2ZnID0gaW5p
Y29uZmlnW3NlY3Rpb25dCi0gICAgICAgICAgICAgICAgaWYgaXNfY2ZnX2ZpbGUgYW5kIHNlY3Rp
b24gPT0gInB5dGVzdCIgYW5kIHdhcm5mdW5jOgotICAgICAgICAgICAgICAgICAgICBmcm9tIF9w
eXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQgQ0ZHX1BZVEVTVF9TRUNUSU9OCi0KLSAgICAgICAgICAg
ICAgICAgICAgd2FybmZ1bmMoIkMxIiwgQ0ZHX1BZVEVTVF9TRUNUSU9OLmZvcm1hdChmaWxlbmFt
ZT1zdHIoaW5pZmlsZSkpKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNl
cHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgaW5pY2ZnID0gTm9uZQotICAgICAgICByb290
ZGlyID0gZ2V0X2NvbW1vbl9hbmNlc3RvcihkaXJzKQorICAgICAgICBpbmlwYXRoXyA9IGFic29s
dXRlcGF0aChpbmlmaWxlKQorICAgICAgICBpbmlwYXRoID0gaW5pcGF0aF8gICMgdHlwZTogT3B0
aW9uYWxbUGF0aF0KKyAgICAgICAgaW5pY2ZnID0gbG9hZF9jb25maWdfZGljdF9mcm9tX2ZpbGUo
aW5pcGF0aF8pIG9yIHt9CisgICAgICAgIGlmIHJvb3RkaXJfY21kX2FyZyBpcyBOb25lOgorICAg
ICAgICAgICAgcm9vdGRpciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKICAgICBlbHNlOgog
ICAgICAgICBhbmNlc3RvciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICAgICAgcm9v
dGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZ2V0Y2ZnKFthbmNlc3Rvcl0sIHdhcm5mdW5jPXdhcm5m
dW5jKQotICAgICAgICBpZiByb290ZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBmb3Igcm9vdGRp
ciBpbiBhbmNlc3Rvci5wYXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgICAgIGlmIHJv
b3RkaXIuam9pbigic2V0dXAucHkiKS5leGlzdHMoKToKKyAgICAgICAgcm9vdGRpciwgaW5pcGF0
aCwgaW5pY2ZnID0gbG9jYXRlX2NvbmZpZyhbYW5jZXN0b3JdKQorICAgICAgICBpZiByb290ZGly
IGlzIE5vbmUgYW5kIHJvb3RkaXJfY21kX2FyZyBpcyBOb25lOgorICAgICAgICAgICAgZm9yIHBv
c3NpYmxlX3Jvb3RkaXIgaW4gKGFuY2VzdG9yLCAqYW5jZXN0b3IucGFyZW50cyk6CisgICAgICAg
ICAgICAgICAgaWYgKHBvc3NpYmxlX3Jvb3RkaXIgLyAic2V0dXAucHkiKS5pc19maWxlKCk6Cisg
ICAgICAgICAgICAgICAgICAgIHJvb3RkaXIgPSBwb3NzaWJsZV9yb290ZGlyCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJvb3Rk
aXIsIGluaWZpbGUsIGluaWNmZyA9IGdldGNmZyhkaXJzLCB3YXJuZnVuYz13YXJuZnVuYykKKyAg
ICAgICAgICAgICAgICBpZiBkaXJzICE9IFthbmNlc3Rvcl06CisgICAgICAgICAgICAgICAgICAg
IHJvb3RkaXIsIGluaXBhdGgsIGluaWNmZyA9IGxvY2F0ZV9jb25maWcoZGlycykKICAgICAgICAg
ICAgICAgICBpZiByb290ZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJvb3RkaXIg
PSBnZXRfY29tbW9uX2FuY2VzdG9yKFtweS5wYXRoLmxvY2FsKCksIGFuY2VzdG9yXSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgY29uZmlnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY3dkID0gY29uZmlnLmludm9jYXRpb25fcGFyYW1zLmRpcgorICAgICAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgY3dkID0gUGF0aC5jd2QoKQorICAg
ICAgICAgICAgICAgICAgICByb290ZGlyID0gZ2V0X2NvbW1vbl9hbmNlc3RvcihbY3dkLCBhbmNl
c3Rvcl0pCiAgICAgICAgICAgICAgICAgICAgIGlzX2ZzX3Jvb3QgPSBvcy5wYXRoLnNwbGl0ZHJp
dmUoc3RyKHJvb3RkaXIpKVsxXSA9PSAiLyIKICAgICAgICAgICAgICAgICAgICAgaWYgaXNfZnNf
cm9vdDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RkaXIgPSBhbmNlc3RvcgogICAgIGlm
IHJvb3RkaXJfY21kX2FyZzoKLSAgICAgICAgcm9vdGRpcl9hYnNfcGF0aCA9IHB5LnBhdGgubG9j
YWwob3MucGF0aC5leHBhbmR2YXJzKHJvb3RkaXJfY21kX2FyZykpCi0gICAgICAgIGlmIG5vdCBv
cy5wYXRoLmlzZGlyKHN0cihyb290ZGlyX2Fic19wYXRoKSk6CisgICAgICAgIHJvb3RkaXIgPSBh
YnNvbHV0ZXBhdGgob3MucGF0aC5leHBhbmR2YXJzKHJvb3RkaXJfY21kX2FyZykpCisgICAgICAg
IGlmIG5vdCByb290ZGlyLmlzX2RpcigpOgogICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigK
ICAgICAgICAgICAgICAgICAiRGlyZWN0b3J5ICd7fScgbm90IGZvdW5kLiBDaGVjayB5b3VyICct
LXJvb3RkaXInIG9wdGlvbi4iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcm9vdGRpcl9h
YnNfcGF0aAorICAgICAgICAgICAgICAgICAgICByb290ZGlyCiAgICAgICAgICAgICAgICAgKQog
ICAgICAgICAgICAgKQotICAgICAgICByb290ZGlyID0gcm9vdGRpcl9hYnNfcGF0aAotICAgIHJl
dHVybiByb290ZGlyLCBpbmlmaWxlLCBpbmljZmcgb3Ige30KKyAgICBhc3NlcnQgcm9vdGRpciBp
cyBub3QgTm9uZQorICAgIHJldHVybiByb290ZGlyLCBpbmlwYXRoLCBpbmljZmcgb3Ige30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGZiZTExZGE1Mjc5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmln
L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL2FyZ3BhcnNpbmcu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvZXhjZXB0aW9ucy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9maW5kcGF0aHMucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L2RlYnVnZ2luZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L2RlYnVnZ2luZy5weQppbmRleCAyZTI1M2FhYTJhZjMuLjZmNjQxZmIyZDk2NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZGVidWdnaW5nLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L2RlYnVnZ2luZy5weQpAQCAtMSwxOSArMSw0NyBAQAotIiIiIGludGVyYWN0
aXZlIGRlYnVnZ2luZyB3aXRoIFBEQiwgdGhlIFB5dGhvbiBEZWJ1Z2dlci4gIiIiCi1mcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9u
Ci1pbXBvcnQgcGRiCisiIiJJbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcgd2l0aCBQREIsIHRoZSBQeXRo
b24gRGVidWdnZXIuIiIiCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBmdW5jdG9vbHMKIGltcG9y
dCBzeXMKLWltcG9ydCBvcwotZnJvbSBkb2N0ZXN0IGltcG9ydCBVbmV4cGVjdGVkRXhjZXB0aW9u
Ci0KLXRyeToKLSAgICBmcm9tIGJ1aWx0aW5zIGltcG9ydCBicmVha3BvaW50ICAjIG5vcWEKLQot
ICAgIFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiA9IFRydWUKLWV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4gPSBGYWxzZQotCi0KLWRlZiBweXRl
c3RfYWRkb3B0aW9uKHBhcnNlcik6CitpbXBvcnQgdHlwZXMKK2Zyb20gdHlwaW5nIGltcG9ydCBB
bnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVy
YXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKwor
ZnJvbSBfcHl0ZXN0IGltcG9ydCBvdXRjb21lcworZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBF
eGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IENvbmZ0ZXN0SW1wb3J0RmFpbHVyZQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9v
a2ltcGwKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFB5dGVzdFBsdWdpbk1hbmFnZXIKK2Zy
b20gX3B5dGVzdC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3Qu
Y29uZmlnLmV4Y2VwdGlvbnMgaW1wb3J0IFVzYWdlRXJyb3IKK2Zyb20gX3B5dGVzdC5ub2RlcyBp
bXBvcnQgTm9kZQorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0IEJhc2VSZXBvcnQKKworaWYg
VFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQorCisgICAgZnJvbSBf
cHl0ZXN0LmNhcHR1cmUgaW1wb3J0IENhcHR1cmVNYW5hZ2VyCisgICAgZnJvbSBfcHl0ZXN0LnJ1
bm5lciBpbXBvcnQgQ2FsbEluZm8KKworCitkZWYgX3ZhbGlkYXRlX3VzZXBkYl9jbHModmFsdWU6
IHN0cikgLT4gVHVwbGVbc3RyLCBzdHJdOgorICAgICIiIlZhbGlkYXRlIHN5bnRheCBvZiAtLXBk
YmNscyBvcHRpb24uIiIiCisgICAgdHJ5OgorICAgICAgICBtb2RuYW1lLCBjbGFzc25hbWUgPSB2
YWx1ZS5zcGxpdCgiOiIpCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFp
c2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoCisgICAgICAgICAgICAieyFyfSBpcyBub3Qg
aW4gdGhlIGZvcm1hdCAnbW9kbmFtZTpjbGFzc25hbWUnIi5mb3JtYXQodmFsdWUpCisgICAgICAg
ICkgZnJvbSBlCisgICAgcmV0dXJuIChtb2RuYW1lLCBjbGFzc25hbWUpCisKKworZGVmIHB5dGVz
dF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIu
Z2V0Z3JvdXAoImdlbmVyYWwiKQogICAgIGdyb3VwLl9hZGRvcHRpb24oCiAgICAgICAgICItLXBk
YiIsCkBAIC0yNSw4NiArNTMsMjg5IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAg
ICAgICAgICItLXBkYmNscyIsCiAgICAgICAgIGRlc3Q9InVzZXBkYl9jbHMiLAogICAgICAgICBt
ZXRhdmFyPSJtb2R1bGVuYW1lOmNsYXNzbmFtZSIsCisgICAgICAgIHR5cGU9X3ZhbGlkYXRlX3Vz
ZXBkYl9jbHMsCiAgICAgICAgIGhlbHA9InN0YXJ0IGEgY3VzdG9tIGludGVyYWN0aXZlIFB5dGhv
biBkZWJ1Z2dlciBvbiBlcnJvcnMuICIKICAgICAgICAgIkZvciBleGFtcGxlOiAtLXBkYmNscz1J
UHl0aG9uLnRlcm1pbmFsLmRlYnVnZ2VyOlRlcm1pbmFsUGRiIiwKICAgICApCisgICAgZ3JvdXAu
X2FkZG9wdGlvbigKKyAgICAgICAgIi0tdHJhY2UiLAorICAgICAgICBkZXN0PSJ0cmFjZSIsCisg
ICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9IkltbWVkaWF0ZWx5IGJy
ZWFrIHdoZW4gcnVubmluZyBlYWNoIHRlc3QuIiwKKyAgICApCiAKIAotZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKToKLSAgICBpZiBjb25maWcuZ2V0dmFsdWUoInVzZXBkYl9jbHMiKToKLSAg
ICAgICAgbW9kbmFtZSwgY2xhc3NuYW1lID0gY29uZmlnLmdldHZhbHVlKCJ1c2VwZGJfY2xzIiku
c3BsaXQoIjoiKQotICAgICAgICBfX2ltcG9ydF9fKG1vZG5hbWUpCi0gICAgICAgIHBkYl9jbHMg
PSBnZXRhdHRyKHN5cy5tb2R1bGVzW21vZG5hbWVdLCBjbGFzc25hbWUpCi0gICAgZWxzZToKLSAg
ICAgICAgcGRiX2NscyA9IHBkYi5QZGIKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29u
ZmlnKSAtPiBOb25lOgorICAgIGltcG9ydCBwZGIKIAorICAgIGlmIGNvbmZpZy5nZXR2YWx1ZSgi
dHJhY2UiKToKKyAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoUGRiVHJhY2Uo
KSwgInBkYnRyYWNlIikKICAgICBpZiBjb25maWcuZ2V0dmFsdWUoInVzZXBkYiIpOgogICAgICAg
ICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihQZGJJbnZva2UoKSwgInBkYmludm9rZSIp
CiAKLSAgICAjIFVzZSBjdXN0b20gUGRiIGNsYXNzIHNldF90cmFjZSBpbnN0ZWFkIG9mIGRlZmF1
bHQgUGRiIG9uIGJyZWFrcG9pbnQoKSBjYWxsCi0gICAgaWYgU1VQUE9SVFNfQlJFQUtQT0lOVF9C
VUlMVElOOgotICAgICAgICBfZW52aXJvbl9weXRob25icmVha3BvaW50ID0gb3MuZW52aXJvbi5n
ZXQoIlBZVEhPTkJSRUFLUE9JTlQiLCAiIikKLSAgICAgICAgaWYgX2Vudmlyb25fcHl0aG9uYnJl
YWtwb2ludCA9PSAiIjoKLSAgICAgICAgICAgIHN5cy5icmVha3BvaW50aG9vayA9IHB5dGVzdFBE
Qi5zZXRfdHJhY2UKLQotICAgIG9sZCA9IChwZGIuc2V0X3RyYWNlLCBweXRlc3RQREIuX3BsdWdp
bm1hbmFnZXIpCi0KLSAgICBkZWYgZmluKCk6Ci0gICAgICAgIHBkYi5zZXRfdHJhY2UsIHB5dGVz
dFBEQi5fcGx1Z2lubWFuYWdlciA9IG9sZAotICAgICAgICBweXRlc3RQREIuX2NvbmZpZyA9IE5v
bmUKLSAgICAgICAgcHl0ZXN0UERCLl9wZGJfY2xzID0gcGRiLlBkYgotICAgICAgICBpZiBTVVBQ
T1JUU19CUkVBS1BPSU5UX0JVSUxUSU46Ci0gICAgICAgICAgICBzeXMuYnJlYWtwb2ludGhvb2sg
PSBzeXMuX19icmVha3BvaW50aG9va19fCi0KKyAgICBweXRlc3RQREIuX3NhdmVkLmFwcGVuZCgK
KyAgICAgICAgKHBkYi5zZXRfdHJhY2UsIHB5dGVzdFBEQi5fcGx1Z2lubWFuYWdlciwgcHl0ZXN0
UERCLl9jb25maWcpCisgICAgKQogICAgIHBkYi5zZXRfdHJhY2UgPSBweXRlc3RQREIuc2V0X3Ry
YWNlCiAgICAgcHl0ZXN0UERCLl9wbHVnaW5tYW5hZ2VyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIK
ICAgICBweXRlc3RQREIuX2NvbmZpZyA9IGNvbmZpZwotICAgIHB5dGVzdFBEQi5fcGRiX2NscyA9
IHBkYl9jbHMKKworICAgICMgTk9URTogbm90IHVzaW5nIHB5dGVzdF91bmNvbmZpZ3VyZSwgc2lu
Y2UgaXQgbWlnaHQgZ2V0IGNhbGxlZCBhbHRob3VnaAorICAgICMgICAgICAgcHl0ZXN0X2NvbmZp
Z3VyZSB3YXMgbm90IChpZiBhbm90aGVyIHBsdWdpbiByYWlzZXMgVXNhZ2VFcnJvcikuCisgICAg
ZGVmIGZpbigpIC0+IE5vbmU6CisgICAgICAgICgKKyAgICAgICAgICAgIHBkYi5zZXRfdHJhY2Us
CisgICAgICAgICAgICBweXRlc3RQREIuX3BsdWdpbm1hbmFnZXIsCisgICAgICAgICAgICBweXRl
c3RQREIuX2NvbmZpZywKKyAgICAgICAgKSA9IHB5dGVzdFBEQi5fc2F2ZWQucG9wKCkKKwogICAg
IGNvbmZpZy5fY2xlYW51cC5hcHBlbmQoZmluKQogCiAKLWNsYXNzIHB5dGVzdFBEQihvYmplY3Qp
OgotICAgICIiIiBQc2V1ZG8gUERCIHRoYXQgZGVmZXJzIHRvIHRoZSByZWFsIHBkYi4gIiIiCi0g
ICAgX3BsdWdpbm1hbmFnZXIgPSBOb25lCi0gICAgX2NvbmZpZyA9IE5vbmUKLSAgICBfcGRiX2Ns
cyA9IHBkYi5QZGIKK2NsYXNzIHB5dGVzdFBEQjoKKyAgICAiIiJQc2V1ZG8gUERCIHRoYXQgZGVm
ZXJzIHRvIHRoZSByZWFsIHBkYi4iIiIKKworICAgIF9wbHVnaW5tYW5hZ2VyID0gTm9uZSAgIyB0
eXBlOiBPcHRpb25hbFtQeXRlc3RQbHVnaW5NYW5hZ2VyXQorICAgIF9jb25maWcgPSBOb25lICAj
IHR5cGU6IENvbmZpZworICAgIF9zYXZlZCA9ICgKKyAgICAgICAgW10KKyAgICApICAjIHR5cGU6
IExpc3RbVHVwbGVbQ2FsbGFibGVbLi4uLCBOb25lXSwgT3B0aW9uYWxbUHl0ZXN0UGx1Z2luTWFu
YWdlcl0sIENvbmZpZ11dCisgICAgX3JlY3Vyc2l2ZV9kZWJ1ZyA9IDAKKyAgICBfd3JhcHBlZF9w
ZGJfY2xzID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtUdXBsZVtUeXBlW0FueV0sIFR5cGVbQW55
XV1dCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2lzX2NhcHR1cmluZyhjbHMsIGNhcG1h
bjogT3B0aW9uYWxbIkNhcHR1cmVNYW5hZ2VyIl0pIC0+IFVuaW9uW3N0ciwgYm9vbF06CisgICAg
ICAgIGlmIGNhcG1hbjoKKyAgICAgICAgICAgIHJldHVybiBjYXBtYW4uaXNfY2FwdHVyaW5nKCkK
KyAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0X3Ry
YWNlKGNscyk6Ci0gICAgICAgICIiIiBpbnZva2UgUERCIHNldF90cmFjZSBkZWJ1Z2dpbmcsIGRy
b3BwaW5nIGFueSBJTyBjYXB0dXJpbmcuICIiIgorICAgIGRlZiBfaW1wb3J0X3BkYl9jbHMoY2xz
LCBjYXBtYW46IE9wdGlvbmFsWyJDYXB0dXJlTWFuYWdlciJdKToKKyAgICAgICAgaWYgbm90IGNs
cy5fY29uZmlnOgorICAgICAgICAgICAgaW1wb3J0IHBkYgorCisgICAgICAgICAgICAjIEhhcHBl
bnMgd2hlbiB1c2luZyBweXRlc3Quc2V0X3RyYWNlIG91dHNpZGUgb2YgYSB0ZXN0LgorICAgICAg
ICAgICAgcmV0dXJuIHBkYi5QZGIKKworICAgICAgICB1c2VwZGJfY2xzID0gY2xzLl9jb25maWcu
Z2V0dmFsdWUoInVzZXBkYl9jbHMiKQorCisgICAgICAgIGlmIGNscy5fd3JhcHBlZF9wZGJfY2xz
IGFuZCBjbHMuX3dyYXBwZWRfcGRiX2Nsc1swXSA9PSB1c2VwZGJfY2xzOgorICAgICAgICAgICAg
cmV0dXJuIGNscy5fd3JhcHBlZF9wZGJfY2xzWzFdCisKKyAgICAgICAgaWYgdXNlcGRiX2NsczoK
KyAgICAgICAgICAgIG1vZG5hbWUsIGNsYXNzbmFtZSA9IHVzZXBkYl9jbHMKKworICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIF9faW1wb3J0X18obW9kbmFtZSkKKyAgICAgICAgICAg
ICAgICBtb2QgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQorCisgICAgICAgICAgICAgICAgIyBIYW5k
bGUgLS1wZGJjbHM9cGRiOnBkYi5QZGIgKHVzZWZ1bCBlLmcuIHdpdGggcGRicHApLgorICAgICAg
ICAgICAgICAgIHBhcnRzID0gY2xhc3NuYW1lLnNwbGl0KCIuIikKKyAgICAgICAgICAgICAgICBw
ZGJfY2xzID0gZ2V0YXR0cihtb2QsIHBhcnRzWzBdKQorICAgICAgICAgICAgICAgIGZvciBwYXJ0
IGluIHBhcnRzWzE6XToKKyAgICAgICAgICAgICAgICAgICAgcGRiX2NscyA9IGdldGF0dHIocGRi
X2NscywgcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgICAg
ICAgICAgICAgIHZhbHVlID0gIjoiLmpvaW4oKG1vZG5hbWUsIGNsYXNzbmFtZSkpCisgICAgICAg
ICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIi0tcGRiY2xz
OiBjb3VsZCBub3QgaW1wb3J0IHshcn06IHt9Ii5mb3JtYXQodmFsdWUsIGV4YykKKyAgICAgICAg
ICAgICAgICApIGZyb20gZXhjCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbXBvcnQgcGRi
CisKKyAgICAgICAgICAgIHBkYl9jbHMgPSBwZGIuUGRiCisKKyAgICAgICAgd3JhcHBlZF9jbHMg
PSBjbHMuX2dldF9wZGJfd3JhcHBlcl9jbGFzcyhwZGJfY2xzLCBjYXBtYW4pCisgICAgICAgIGNs
cy5fd3JhcHBlZF9wZGJfY2xzID0gKHVzZXBkYl9jbHMsIHdyYXBwZWRfY2xzKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlZF9jbHMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X3BkYl93
cmFwcGVyX2NsYXNzKGNscywgcGRiX2NscywgY2FwbWFuOiBPcHRpb25hbFsiQ2FwdHVyZU1hbmFn
ZXIiXSk6CiAgICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwogCi0gICAgICAgIGZyYW1lID0g
c3lzLl9nZXRmcmFtZSgpLmZfYmFjawotICAgICAgICBpZiBjbHMuX3BsdWdpbm1hbmFnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgbXlweSBkb2Vzbid0IHN1
cHBvcnQgImR5bmFtaWMiCisgICAgICAgICMgaW5oZXJpdGFuY2UgbGlrZSB0aGlzLgorICAgICAg
ICBjbGFzcyBQeXRlc3RQZGJXcmFwcGVyKHBkYl9jbHMpOiAgIyB0eXBlOiBpZ25vcmVbdmFsaWQt
dHlwZSxtaXNjXQorICAgICAgICAgICAgX3B5dGVzdF9jYXBtYW4gPSBjYXBtYW4KKyAgICAgICAg
ICAgIF9jb250aW51ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgZG9fZGVidWcoc2VsZiwg
YXJnKToKKyAgICAgICAgICAgICAgICBjbHMuX3JlY3Vyc2l2ZV9kZWJ1ZyArPSAxCisgICAgICAg
ICAgICAgICAgcmV0ID0gc3VwZXIoKS5kb19kZWJ1ZyhhcmcpCisgICAgICAgICAgICAgICAgY2xz
Ll9yZWN1cnNpdmVfZGVidWcgLT0gMQorICAgICAgICAgICAgICAgIHJldHVybiByZXQKKworICAg
ICAgICAgICAgZGVmIGRvX2NvbnRpbnVlKHNlbGYsIGFyZyk6CisgICAgICAgICAgICAgICAgcmV0
ID0gc3VwZXIoKS5kb19jb250aW51ZShhcmcpCisgICAgICAgICAgICAgICAgaWYgY2xzLl9yZWN1
cnNpdmVfZGVidWcgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgdHcgPSBfcHl0ZXN0LmNvbmZp
Zy5jcmVhdGVfdGVybWluYWxfd3JpdGVyKGNscy5fY29uZmlnKQorICAgICAgICAgICAgICAgICAg
ICB0dy5saW5lKCkKKworICAgICAgICAgICAgICAgICAgICBjYXBtYW4gPSBzZWxmLl9weXRlc3Rf
Y2FwbWFuCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmluZyA9IHB5dGVzdFBEQi5faXNfY2Fw
dHVyaW5nKGNhcG1hbikKKyAgICAgICAgICAgICAgICAgICAgaWYgY2FwdHVyaW5nOgorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgY2FwdHVyaW5nID09ICJnbG9iYWwiOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR3LnNlcCgiPiIsICJQREIgY29udGludWUgKElPLWNhcHR1cmluZyBy
ZXN1bWVkKSIpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR3LnNlcCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUERCIGNvbnRpbnVlIChJTy1jYXB0
dXJpbmcgcmVzdW1lZCBmb3IgJXMpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IGNhcHR1cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQgY2FwbWFuIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXBtYW4ucmVzdW1lKCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHR3LnNlcCgiPiIsICJQREIgY29udGludWUiKQorICAgICAgICAgICAg
ICAgIGFzc2VydCBjbHMuX3BsdWdpbm1hbmFnZXIgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAg
ICBjbHMuX3BsdWdpbm1hbmFnZXIuaG9vay5weXRlc3RfbGVhdmVfcGRiKGNvbmZpZz1jbHMuX2Nv
bmZpZywgcGRiPXNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGludWVkID0gVHJ1ZQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXQKKworICAgICAgICAgICAgZG9fYyA9IGRvX2NvbnQg
PSBkb19jb250aW51ZQorCisgICAgICAgICAgICBkZWYgZG9fcXVpdChzZWxmLCBhcmcpOgorICAg
ICAgICAgICAgICAgICIiIlJhaXNlIEV4aXQgb3V0Y29tZSB3aGVuIHF1aXQgY29tbWFuZCBpcyB1
c2VkIGluIHBkYi4KKworICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrIC0g
aXQgd291bGQgYmUgYmV0dGVyIGlmIEJkYlF1aXQKKyAgICAgICAgICAgICAgICBjb3VsZCBiZSBo
YW5kbGVkLCBidXQgdGhpcyB3b3VsZCByZXF1aXJlIHRvIHdyYXAgdGhlCisgICAgICAgICAgICAg
ICAgd2hvbGUgcHl0ZXN0IHJ1biwgYW5kIGFkanVzdCB0aGUgcmVwb3J0IGV0Yy4KKyAgICAgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICByZXQgPSBzdXBlcigpLmRvX3F1aXQoYXJnKQor
CisgICAgICAgICAgICAgICAgaWYgY2xzLl9yZWN1cnNpdmVfZGVidWcgPT0gMDoKKyAgICAgICAg
ICAgICAgICAgICAgb3V0Y29tZXMuZXhpdCgiUXVpdHRpbmcgZGVidWdnZXIiKQorCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJldAorCisgICAgICAgICAgICBkb19xID0gZG9fcXVpdAorICAgICAg
ICAgICAgZG9fZXhpdCA9IGRvX3F1aXQKKworICAgICAgICAgICAgZGVmIHNldHVwKHNlbGYsIGYs
IHRiKToKKyAgICAgICAgICAgICAgICAiIiJTdXNwZW5kIG9uIHNldHVwKCkuCisKKyAgICAgICAg
ICAgICAgICBOZWVkZWQgYWZ0ZXIgZG9fY29udGludWUgcmVzdW1lZCwgYW5kIGVudGVyaW5nIGFu
b3RoZXIKKyAgICAgICAgICAgICAgICBicmVha3BvaW50IGFnYWluLgorICAgICAgICAgICAgICAg
ICIiIgorICAgICAgICAgICAgICAgIHJldCA9IHN1cGVyKCkuc2V0dXAoZiwgdGIpCisgICAgICAg
ICAgICAgICAgaWYgbm90IHJldCBhbmQgc2VsZi5fY29udGludWVkOgorICAgICAgICAgICAgICAg
ICAgICAjIHBkYi5zZXR1cCgpIHJldHVybnMgVHJ1ZSBpZiB0aGUgY29tbWFuZCB3YW50cyB0byBl
eGl0CisgICAgICAgICAgICAgICAgICAgICMgZnJvbSB0aGUgaW50ZXJhY3Rpb246IGRvIG5vdCBz
dXNwZW5kIGNhcHR1cmluZyB0aGVuLgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9weXRl
c3RfY2FwbWFuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHl0ZXN0X2NhcG1hbi5z
dXNwZW5kX2dsb2JhbF9jYXB0dXJlKGluXz1UcnVlKQorICAgICAgICAgICAgICAgIHJldHVybiBy
ZXQKKworICAgICAgICAgICAgZGVmIGdldF9zdGFjayhzZWxmLCBmLCB0KToKKyAgICAgICAgICAg
ICAgICBzdGFjaywgaSA9IHN1cGVyKCkuZ2V0X3N0YWNrKGYsIHQpCisgICAgICAgICAgICAgICAg
aWYgZiBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIEZpbmQgbGFzdCBub24taGlkZGVu
IGZyYW1lLgorICAgICAgICAgICAgICAgICAgICBpID0gbWF4KDAsIGxlbihzdGFjaykgLSAxKQor
ICAgICAgICAgICAgICAgICAgICB3aGlsZSBpIGFuZCBzdGFja1tpXVswXS5mX2xvY2Fscy5nZXQo
Il9fdHJhY2ViYWNraGlkZV9fIiwgRmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgaSAt
PSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWNrLCBpCisKKyAgICAgICAgcmV0dXJuIFB5
dGVzdFBkYldyYXBwZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaW5pdF9wZGIoY2xz
LCBtZXRob2QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIkluaXRpYWxpemUgUERCIGRl
YnVnZ2luZywgZHJvcHBpbmcgYW55IElPIGNhcHR1cmluZy4iIiIKKyAgICAgICAgaW1wb3J0IF9w
eXRlc3QuY29uZmlnCisKKyAgICAgICAgaWYgY2xzLl9wbHVnaW5tYW5hZ2VyIGlzIE5vbmU6Cisg
ICAgICAgICAgICBjYXBtYW4gPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW0NhcHR1cmVNYW5hZ2Vy
XQorICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2FwbWFuID0gY2xzLl9wbHVnaW5tYW5hZ2Vy
LmdldHBsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQotICAgICAgICAgICAgaWYgY2FwbWFuOgotICAg
ICAgICAgICAgICAgIGNhcG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGluXz1UcnVlKQorICAg
ICAgICBpZiBjYXBtYW46CisgICAgICAgICAgICBjYXBtYW4uc3VzcGVuZChpbl89VHJ1ZSkKKwor
ICAgICAgICBpZiBjbHMuX2NvbmZpZzoKICAgICAgICAgICAgIHR3ID0gX3B5dGVzdC5jb25maWcu
Y3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihjbHMuX2NvbmZpZykKICAgICAgICAgICAgIHR3LmxpbmUo
KQotICAgICAgICAgICAgdHcuc2VwKCI+IiwgIlBEQiBzZXRfdHJhY2UgKElPLWNhcHR1cmluZyB0
dXJuZWQgb2ZmKSIpCi0gICAgICAgICAgICBjbHMuX3BsdWdpbm1hbmFnZXIuaG9vay5weXRlc3Rf
ZW50ZXJfcGRiKGNvbmZpZz1jbHMuX2NvbmZpZykKLSAgICAgICAgY2xzLl9wZGJfY2xzKCkuc2V0
X3RyYWNlKGZyYW1lKQogCisgICAgICAgICAgICBpZiBjbHMuX3JlY3Vyc2l2ZV9kZWJ1ZyA9PSAw
OgorICAgICAgICAgICAgICAgICMgSGFuZGxlIGhlYWRlciBzaW1pbGFyIHRvIHBkYi5zZXRfdHJh
Y2UgaW4gcHkzNysuCisgICAgICAgICAgICAgICAgaGVhZGVyID0ga3dhcmdzLnBvcCgiaGVhZGVy
IiwgTm9uZSkKKyAgICAgICAgICAgICAgICBpZiBoZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgIHR3LnNlcCgiPiIsIGhlYWRlcikKKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICBjYXB0dXJpbmcgPSBjbHMuX2lzX2NhcHR1cmluZyhjYXBtYW4p
CisgICAgICAgICAgICAgICAgICAgIGlmIGNhcHR1cmluZyA9PSAiZ2xvYmFsIjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHR3LnNlcCgiPiIsICJQREIge30gKElPLWNhcHR1cmluZyB0dXJuZWQg
b2ZmKSIuZm9ybWF0KG1ldGhvZCkpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgY2FwdHVyaW5n
OgorICAgICAgICAgICAgICAgICAgICAgICAgdHcuc2VwKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICI+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUERCICVzIChJTy1jYXB0
dXJpbmcgdHVybmVkIG9mZiBmb3IgJXMpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg
KG1ldGhvZCwgY2FwdHVyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHR3LnNlcCgiPiIsICJQ
REIge30iLmZvcm1hdChtZXRob2QpKQorCisgICAgICAgIF9wZGIgPSBjbHMuX2ltcG9ydF9wZGJf
Y2xzKGNhcG1hbikoKiprd2FyZ3MpCisKKyAgICAgICAgaWYgY2xzLl9wbHVnaW5tYW5hZ2VyOgor
ICAgICAgICAgICAgY2xzLl9wbHVnaW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2VudGVyX3BkYihjb25m
aWc9Y2xzLl9jb25maWcsIHBkYj1fcGRiKQorICAgICAgICByZXR1cm4gX3BkYgorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIHNldF90cmFjZShjbHMsICphcmdzLCAqKmt3YXJncykgLT4gTm9u
ZToKKyAgICAgICAgIiIiSW52b2tlIGRlYnVnZ2luZyB2aWEgYGBQZGIuc2V0X3RyYWNlYGAsIGRy
b3BwaW5nIGFueSBJTyBjYXB0dXJpbmcuIiIiCisgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFt
ZSgpLmZfYmFjaworICAgICAgICBfcGRiID0gY2xzLl9pbml0X3BkYigic2V0X3RyYWNlIiwgKmFy
Z3MsICoqa3dhcmdzKQorICAgICAgICBfcGRiLnNldF90cmFjZShmcmFtZSkKIAotY2xhc3MgUGRi
SW52b2tlKG9iamVjdCk6CiAKLSAgICBkZWYgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChzZWxm
LCBub2RlLCBjYWxsLCByZXBvcnQpOgorY2xhc3MgUGRiSW52b2tlOgorICAgIGRlZiBweXRlc3Rf
ZXhjZXB0aW9uX2ludGVyYWN0KAorICAgICAgICBzZWxmLCBub2RlOiBOb2RlLCBjYWxsOiAiQ2Fs
bEluZm9bQW55XSIsIHJlcG9ydDogQmFzZVJlcG9ydAorICAgICkgLT4gTm9uZToKICAgICAgICAg
Y2FwbWFuID0gbm9kZS5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oImNhcHR1cmVtYW5h
Z2VyIikKICAgICAgICAgaWYgY2FwbWFuOgotICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4u
c3VzcGVuZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKKyAgICAgICAgICAgIGNhcG1hbi5zdXNw
ZW5kX2dsb2JhbF9jYXB0dXJlKGluXz1UcnVlKQorICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBt
YW4ucmVhZF9nbG9iYWxfY2FwdHVyZSgpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKG91
dCkKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZXJyKQorICAgICAgICBhc3NlcnQgY2Fs
bC5leGNpbmZvIGlzIG5vdCBOb25lCiAgICAgICAgIF9lbnRlcl9wZGIobm9kZSwgY2FsbC5leGNp
bmZvLCByZXBvcnQpCiAKLSAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjcmVw
ciwgZXhjaW5mbyk6Ci0gICAgICAgIGZvciBsaW5lIGluIHN0cihleGNyZXByKS5zcGxpdCgiXG4i
KToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIklOVEVSTkFMRVJST1I+ICVzXG4iICUg
bGluZSkKLSAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgIGRlZiBweXRlc3RfaW50
ZXJuYWxlcnJvcihzZWxmLCBleGNpbmZvOiBFeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dKSAt
PiBOb25lOgogICAgICAgICB0YiA9IF9wb3N0bW9ydGVtX3RyYWNlYmFjayhleGNpbmZvKQogICAg
ICAgICBwb3N0X21vcnRlbSh0YikKIAogCi1kZWYgX2VudGVyX3BkYihub2RlLCBleGNpbmZvLCBy
ZXApOgorY2xhc3MgUGRiVHJhY2U6CisgICAgQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisg
ICAgZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChzZWxmLCBweWZ1bmNpdGVtKSAtPiBHZW5lcmF0b3Jb
Tm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgIHdyYXBfcHl0ZXN0X2Z1bmN0aW9uX2Zvcl90cmFj
aW5nKHB5ZnVuY2l0ZW0pCisgICAgICAgIHlpZWxkCisKKworZGVmIHdyYXBfcHl0ZXN0X2Z1bmN0
aW9uX2Zvcl90cmFjaW5nKHB5ZnVuY2l0ZW0pOgorICAgICIiIkNoYW5nZSB0aGUgUHl0aG9uIGZ1
bmN0aW9uIG9iamVjdCBvZiB0aGUgZ2l2ZW4gRnVuY3Rpb24gaXRlbSBieSBhCisgICAgd3JhcHBl
ciB3aGljaCBhY3R1YWxseSBlbnRlcnMgcGRiIGJlZm9yZSBjYWxsaW5nIHRoZSBweXRob24gZnVu
Y3Rpb24KKyAgICBpdHNlbGYsIGVmZmVjdGl2ZWx5IGxlYXZpbmcgdGhlIHVzZXIgaW4gdGhlIHBk
YiBwcm9tcHQgaW4gdGhlIGZpcnN0CisgICAgc3RhdGVtZW50IG9mIHRoZSBmdW5jdGlvbi4iIiIK
KyAgICBfcGRiID0gcHl0ZXN0UERCLl9pbml0X3BkYigicnVuY2FsbCIpCisgICAgdGVzdGZ1bmN0
aW9uID0gcHlmdW5jaXRlbS5vYmoKKworICAgICMgd2UgY2FuJ3QganVzdCByZXR1cm4gYHBhcnRp
YWwocGRiLnJ1bmNhbGwsIHRlc3RmdW5jdGlvbilgIGJlY2F1c2UgKG9uCisgICAgIyBweXRob24g
PCAzLjcuNCkgcnVuY2FsbCdzIGZpcnN0IHBhcmFtIGlzIGBmdW5jYCwgd2hpY2ggbWVhbnMgd2Un
ZCBnZXQKKyAgICAjIGFuIGV4Y2VwdGlvbiBpZiBvbmUgb2YgdGhlIGt3YXJncyB0byB0ZXN0ZnVu
Y3Rpb24gd2FzIGNhbGxlZCBgZnVuY2AuCisgICAgQGZ1bmN0b29scy53cmFwcyh0ZXN0ZnVuY3Rp
b24pCisgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgZnVuYyA9IGZ1
bmN0b29scy5wYXJ0aWFsKHRlc3RmdW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBf
cGRiLnJ1bmNhbGwoZnVuYykKKworICAgIHB5ZnVuY2l0ZW0ub2JqID0gd3JhcHBlcgorCisKK2Rl
ZiBtYXliZV93cmFwX3B5dGVzdF9mdW5jdGlvbl9mb3JfdHJhY2luZyhweWZ1bmNpdGVtKToKKyAg
ICAiIiJXcmFwIHRoZSBnaXZlbiBweXRlc3RmdW5jdCBpdGVtIGZvciB0cmFjaW5nIHN1cHBvcnQg
aWYgLS10cmFjZSB3YXMgZ2l2ZW4gaW4KKyAgICB0aGUgY29tbWFuZCBsaW5lLiIiIgorICAgIGlm
IHB5ZnVuY2l0ZW0uY29uZmlnLmdldHZhbHVlKCJ0cmFjZSIpOgorICAgICAgICB3cmFwX3B5dGVz
dF9mdW5jdGlvbl9mb3JfdHJhY2luZyhweWZ1bmNpdGVtKQorCisKK2RlZiBfZW50ZXJfcGRiKAor
ICAgIG5vZGU6IE5vZGUsIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0sIHJl
cDogQmFzZVJlcG9ydAorKSAtPiBCYXNlUmVwb3J0OgogICAgICMgWFhYIHdlIHJlLXVzZSB0aGUg
VGVybWluYWxSZXBvcnRlcidzIHRlcm1pbmFsd3JpdGVyCiAgICAgIyBiZWNhdXNlIHRoaXMgc2Vl
bXMgdG8gYXZvaWQgc29tZSBlbmNvZGluZyByZWxhdGVkIHRyb3VibGVzCiAgICAgIyBmb3Igbm90
IGNvbXBsZXRlbHkgY2xlYXIgcmVhc29ucy4KQEAgLTExNCw3ICszNDUsOSBAQCBkZWYgX2VudGVy
X3BkYihub2RlLCBleGNpbmZvLCByZXApOgogICAgIHNob3djYXB0dXJlID0gbm9kZS5jb25maWcu
b3B0aW9uLnNob3djYXB0dXJlCiAKICAgICBmb3Igc2VjdGlvbm5hbWUsIGNvbnRlbnQgaW4gKAot
ICAgICAgICAoInN0ZG91dCIsIHJlcC5jYXBzdGRvdXQpLCAoInN0ZGVyciIsIHJlcC5jYXBzdGRl
cnIpLCAoImxvZyIsIHJlcC5jYXBsb2cpCisgICAgICAgICgic3Rkb3V0IiwgcmVwLmNhcHN0ZG91
dCksCisgICAgICAgICgic3RkZXJyIiwgcmVwLmNhcHN0ZGVyciksCisgICAgICAgICgibG9nIiwg
cmVwLmNhcGxvZyksCiAgICAgKToKICAgICAgICAgaWYgc2hvd2NhcHR1cmUgaW4gKHNlY3Rpb25u
YW1lLCAiYWxsIikgYW5kIGNvbnRlbnQ6CiAgICAgICAgICAgICB0dy5zZXAoIj4iLCAiY2FwdHVy
ZWQgIiArIHNlY3Rpb25uYW1lKQpAQCAtMTI2LDM3ICszNTksMzAgQEAgZGVmIF9lbnRlcl9wZGIo
bm9kZSwgZXhjaW5mbywgcmVwKToKICAgICByZXAudG90ZXJtaW5hbCh0dykKICAgICB0dy5zZXAo
Ij4iLCAiZW50ZXJpbmcgUERCIikKICAgICB0YiA9IF9wb3N0bW9ydGVtX3RyYWNlYmFjayhleGNp
bmZvKQorICAgIHJlcC5fcGRic2hvd24gPSBUcnVlICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmlu
ZWRdCiAgICAgcG9zdF9tb3J0ZW0odGIpCi0gICAgcmVwLl9wZGJzaG93biA9IFRydWUKICAgICBy
ZXR1cm4gcmVwCiAKIAotZGVmIF9wb3N0bW9ydGVtX3RyYWNlYmFjayhleGNpbmZvKToKK2RlZiBf
cG9zdG1vcnRlbV90cmFjZWJhY2soZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9u
XSkgLT4gdHlwZXMuVHJhY2ViYWNrVHlwZToKKyAgICBmcm9tIGRvY3Rlc3QgaW1wb3J0IFVuZXhw
ZWN0ZWRFeGNlcHRpb24KKwogICAgIGlmIGlzaW5zdGFuY2UoZXhjaW5mby52YWx1ZSwgVW5leHBl
Y3RlZEV4Y2VwdGlvbik6CiAgICAgICAgICMgQSBkb2N0ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb24g
aXMgbm90IHVzZWZ1bCBmb3IgcG9zdF9tb3J0ZW0uCiAgICAgICAgICMgVXNlIHRoZSB1bmRlcmx5
aW5nIGV4Y2VwdGlvbiBpbnN0ZWFkOgogICAgICAgICByZXR1cm4gZXhjaW5mby52YWx1ZS5leGNf
aW5mb1syXQorICAgIGVsaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBDb25mdGVzdEltcG9y
dEZhaWx1cmUpOgorICAgICAgICAjIEEgY29uZmlnLkNvbmZ0ZXN0SW1wb3J0RmFpbHVyZSBpcyBu
b3QgdXNlZnVsIGZvciBwb3N0X21vcnRlbS4KKyAgICAgICAgIyBVc2UgdGhlIHVuZGVybHlpbmcg
ZXhjZXB0aW9uIGluc3RlYWQ6CisgICAgICAgIHJldHVybiBleGNpbmZvLnZhbHVlLmV4Y2luZm9b
Ml0KICAgICBlbHNlOgorICAgICAgICBhc3NlcnQgZXhjaW5mby5fZXhjaW5mbyBpcyBub3QgTm9u
ZQogICAgICAgICByZXR1cm4gZXhjaW5mby5fZXhjaW5mb1syXQogCiAKLWRlZiBfZmluZF9sYXN0
X25vbl9oaWRkZW5fZnJhbWUoc3RhY2spOgotICAgIGkgPSBtYXgoMCwgbGVuKHN0YWNrKSAtIDEp
Ci0gICAgd2hpbGUgaSBhbmQgc3RhY2tbaV1bMF0uZl9sb2NhbHMuZ2V0KCJfX3RyYWNlYmFja2hp
ZGVfXyIsIEZhbHNlKToKLSAgICAgICAgaSAtPSAxCi0gICAgcmV0dXJuIGkKLQotCi1kZWYgcG9z
dF9tb3J0ZW0odCk6Ci0KLSAgICBjbGFzcyBQZGIocHl0ZXN0UERCLl9wZGJfY2xzKToKLQotICAg
ICAgICBkZWYgZ2V0X3N0YWNrKHNlbGYsIGYsIHQpOgotICAgICAgICAgICAgc3RhY2ssIGkgPSBw
ZGIuUGRiLmdldF9zdGFjayhzZWxmLCBmLCB0KQotICAgICAgICAgICAgaWYgZiBpcyBOb25lOgot
ICAgICAgICAgICAgICAgIGkgPSBfZmluZF9sYXN0X25vbl9oaWRkZW5fZnJhbWUoc3RhY2spCi0g
ICAgICAgICAgICByZXR1cm4gc3RhY2ssIGkKLQotICAgIHAgPSBQZGIoKQorZGVmIHBvc3RfbW9y
dGVtKHQ6IHR5cGVzLlRyYWNlYmFja1R5cGUpIC0+IE5vbmU6CisgICAgcCA9IHB5dGVzdFBEQi5f
aW5pdF9wZGIoInBvc3RfbW9ydGVtIikKICAgICBwLnJlc2V0KCkKICAgICBwLmludGVyYWN0aW9u
KE5vbmUsIHQpCisgICAgaWYgcC5xdWl0dGluZzoKKyAgICAgICAgb3V0Y29tZXMuZXhpdCgiUXVp
dHRpbmcgZGVidWdnZXIiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZGVw
cmVjYXRlZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2RlcHJlY2F0ZWQucHkKaW5kZXgg
N2ViZGNmOTk5NzIyLi5lY2RiNjBkMzdmNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L2RlcHJlY2F0ZWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZGVwcmVj
YXRlZC5weQpAQCAtMSw2NSArMSw1MiBAQAotIiIiCi1UaGlzIG1vZHVsZSBjb250YWlucyBkZXBy
ZWNhdGlvbiBtZXNzYWdlcyBhbmQgYml0cyBvZiBjb2RlIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBj
b2RlYmFzZQotdGhhdCBpcyBwbGFubmVkIHRvIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcHl0ZXN0
IHJlbGVhc2UuCisiIiJEZXByZWNhdGlvbiBtZXNzYWdlcyBhbmQgYml0cyBvZiBjb2RlIHVzZWQg
ZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFzZSB0aGF0CitpcyBwbGFubmVkIHRvIGJlIHJlbW92ZWQg
aW4gdGhlIG5leHQgcHl0ZXN0IHJlbGVhc2UuCiAKIEtlZXBpbmcgaXQgaW4gYSBjZW50cmFsIGxv
Y2F0aW9uIG1ha2VzIGl0IGVhc3kgdG8gdHJhY2sgd2hhdCBpcyBkZXByZWNhdGVkIGFuZCBzaG91
bGQKIGJlIHJlbW92ZWQgd2hlbiB0aGUgdGltZSBjb21lcy4KLSIiIgotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi0KLWNs
YXNzIFJlbW92ZWRJblB5dGVzdDRXYXJuaW5nKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgIiIi
d2FybmluZyBjbGFzcyBmb3IgZmVhdHVyZXMgcmVtb3ZlZCBpbiBweXRlc3QgNC4wIiIiCi0KIAot
TUFJTl9TVFJfQVJHUyA9ICJwYXNzaW5nIGEgc3RyaW5nIHRvIHB5dGVzdC5tYWluKCkgaXMgZGVw
cmVjYXRlZCwgIiAicGFzcyBhIGxpc3Qgb2YgYXJndW1lbnRzIGluc3RlYWQuIgotCi1ZSUVMRF9U
RVNUUyA9ICJ5aWVsZCB0ZXN0cyBhcmUgZGVwcmVjYXRlZCwgYW5kIHNjaGVkdWxlZCB0byBiZSBy
ZW1vdmVkIGluIHB5dGVzdCA0LjAiCi0KLUZVTkNBUkdfUFJFRklYID0gKAotICAgICd7bmFtZX06
IGRlY2xhcmluZyBmaXh0dXJlcyB1c2luZyAicHl0ZXN0X2Z1bmNhcmdfXyIgcHJlZml4IGlzIGRl
cHJlY2F0ZWQgJwotICAgICJhbmQgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gcHl0ZXN0IDQu
MC4gICIKLSAgICAiUGxlYXNlIHJlbW92ZSB0aGUgcHJlZml4IGFuZCB1c2UgdGhlIEBweXRlc3Qu
Zml4dHVyZSBkZWNvcmF0b3IgaW5zdGVhZC4iCi0pCitBbGwgY29uc3RhbnRzIGRlZmluZWQgaW4g
dGhpcyBtb2R1bGUgc2hvdWxkIGJlIGVpdGhlciBpbnN0YW5jZXMgb2YKKzpjbGFzczpgUHl0ZXN0
V2FybmluZ2AsIG9yIDpjbGFzczpgVW5mb3JtYXR0ZWRXYXJuaW5nYAoraW4gY2FzZSBvZiB3YXJu
aW5ncyB3aGljaCBuZWVkIHRvIGZvcm1hdCB0aGVpciBtZXNzYWdlcy4KKyIiIgorZnJvbSBfcHl0
ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdERlcHJlY2F0aW9uV2FybmluZworZnJvbSBf
cHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFVuZm9ybWF0dGVkV2FybmluZwogCi1DRkdfUFlU
RVNUX1NFQ1RJT04gPSAiW3B5dGVzdF0gc2VjdGlvbiBpbiB7ZmlsZW5hbWV9IGZpbGVzIGlzIGRl
cHJlY2F0ZWQsIHVzZSBbdG9vbDpweXRlc3RdIGluc3RlYWQuIgorIyBzZXQgb2YgcGx1Z2lucyB3
aGljaCBoYXZlIGJlZW4gaW50ZWdyYXRlZCBpbnRvIHRoZSBjb3JlOyB3ZSB1c2UgdGhpcyBsaXN0
IHRvIGlnbm9yZQorIyB0aGVtIGR1cmluZyByZWdpc3RyYXRpb24gdG8gYXZvaWQgY29uZmxpY3Rz
CitERVBSRUNBVEVEX0VYVEVSTkFMX1BMVUdJTlMgPSB7CisgICAgInB5dGVzdF9jYXRjaGxvZyIs
CisgICAgInB5dGVzdF9jYXB0dXJlbG9nIiwKKyAgICAicHl0ZXN0X2ZhdWx0aGFuZGxlciIsCit9
CiAKLUdFVEZVTkNBUkdWQUxVRSA9ICJ1c2Ugb2YgZ2V0ZnVuY2FyZ3ZhbHVlIGlzIGRlcHJlY2F0
ZWQsIHVzZSBnZXRmaXh0dXJldmFsdWUiCiAKLVJFU1VMVF9MT0cgPSAoCi0gICAgIi0tcmVzdWx0
LWxvZyBpcyBkZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gcHl0ZXN0IDQu
MC5cbiIKLSAgICAiU2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC91c2FnZS5o
dG1sI2NyZWF0aW5nLXJlc3VsdGxvZy1mb3JtYXQtZmlsZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24u
IgorRklMTEZVTkNBUkdTID0gUHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nKAorICAgICJUaGUgYF9m
aWxsZnVuY2FyZ3NgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAiCisgICAgImZ1bmN0aW9u
Ll9yZXF1ZXN0Ll9maWxsZml4dHVyZXMoKSBpbnN0ZWFkIGlmIHlvdSBjYW5ub3QgYXZvaWQgcmVh
Y2hpbmcgaW50byBpbnRlcm5hbHMuIgogKQogCi1NQVJLX0lORk9fQVRUUklCVVRFID0gUmVtb3Zl
ZEluUHl0ZXN0NFdhcm5pbmcoCi0gICAgIk1hcmtJbmZvIG9iamVjdHMgYXJlIGRlcHJlY2F0ZWQg
YXMgdGhleSBjb250YWluIG1lcmdlZCBtYXJrcyB3aGljaCBhcmUgaGFyZCB0byBkZWFsIHdpdGgg
Y29ycmVjdGx5LlxuIgotICAgICJQbGVhc2UgdXNlIG5vZGUuZ2V0X2Nsb3Nlc3RfbWFya2VyKG5h
bWUpIG9yIG5vZGUuaXRlcl9tYXJrZXJzKG5hbWUpLlxuIgotICAgICJEb2NzOiBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvbWFyay5odG1sI3VwZGF0aW5nLWNvZGUiCitQWVRFU1Rf
Q09MTEVDVF9NT0RVTEUgPSBVbmZvcm1hdHRlZFdhcm5pbmcoCisgICAgUHl0ZXN0RGVwcmVjYXRp
b25XYXJuaW5nLAorICAgICJweXRlc3QuY29sbGVjdC57bmFtZX0gd2FzIG1vdmVkIHRvIHB5dGVz
dC57bmFtZX1cbiIKKyAgICAiUGxlYXNlIHVwZGF0ZSB0byB0aGUgbmV3IG5hbWUuIiwKICkKIAot
TUFSS19QQVJBTUVURVJTRVRfVU5QQUNLSU5HID0gUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmcoCi0g
ICAgIkFwcGx5aW5nIG1hcmtzIGRpcmVjdGx5IHRvIHBhcmFtZXRlcnMgaXMgZGVwcmVjYXRlZCwi
Ci0gICAgIiBwbGVhc2UgdXNlIHB5dGVzdC5wYXJhbSguLi4sIG1hcmtzPS4uLikgaW5zdGVhZC5c
biIKLSAgICAiRm9yIG1vcmUgZGV0YWlscywgc2VlOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9sYXRlc3QvcGFyYW1ldHJpemUuaHRtbCIKLSkKIAotUkVDT1JEX1hNTF9QUk9QRVJUWSA9ICgK
LSAgICAnRml4dHVyZSByZW5hbWVkIGZyb20gInJlY29yZF94bWxfcHJvcGVydHkiIHRvICJyZWNv
cmRfcHJvcGVydHkiIGFzIHVzZXIgJwotICAgICJwcm9wZXJ0aWVzIGFyZSBub3cgYXZhaWxhYmxl
IHRvIGFsbCByZXBvcnRlcnMuXG4iCi0gICAgJyJyZWNvcmRfeG1sX3Byb3BlcnR5IiBpcyBub3cg
ZGVwcmVjYXRlZC4nCitNSU5VU19LX0RBU0ggPSBQeXRlc3REZXByZWNhdGlvbldhcm5pbmcoCisg
ICAgIlRoZSBgLWsgJy1leHByJ2Agc3ludGF4IHRvIC1rIGlzIGRlcHJlY2F0ZWQuXG5Vc2UgYC1r
ICdub3QgZXhwcidgIGluc3RlYWQuIgogKQogCi1DT0xMRUNUT1JfTUFLRUlURU0gPSBSZW1vdmVk
SW5QeXRlc3Q0V2FybmluZygKLSAgICAicHljb2xsZWN0b3IgbWFrZWl0ZW0gd2FzIHJlbW92ZWQg
IiAiYXMgaXQgaXMgYW4gYWNjaWRlbnRpYWxseSBsZWFrZWQgaW50ZXJuYWwgYXBpIgorTUlOVVNf
S19DT0xPTiA9IFB5dGVzdERlcHJlY2F0aW9uV2FybmluZygKKyAgICAiVGhlIGAtayAnZXhwcjon
YCBzeW50YXggdG8gLWsgaXMgZGVwcmVjYXRlZC5cbiIKKyAgICAiUGxlYXNlIG9wZW4gYW4gaXNz
dWUgaWYgeW91IHVzZSB0aGlzIGFuZCB3YW50IGEgcmVwbGFjZW1lbnQuIgogKQogCi1NRVRBRlVO
Q19BRERfQ0FMTCA9ICgKLSAgICAiTWV0YWZ1bmMuYWRkY2FsbCBpcyBkZXByZWNhdGVkIGFuZCBz
Y2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QgNC4wLlxuIgotICAgICJQbGVhc2UgdXNl
IE1ldGFmdW5jLnBhcmFtZXRyaXplIGluc3RlYWQuIgorV0FSTklOR19DQVBUVVJFRF9IT09LID0g
UHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nKAorICAgICJUaGUgcHl0ZXN0X3dhcm5pbmdfY2FwdHVy
ZWQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2Uu
XG4iCisgICAgIlBsZWFzZSB1c2UgcHl0ZXN0X3dhcm5pbmdfcmVjb3JkZWQgaW5zdGVhZC4iCiAp
CiAKLVBZVEVTVF9QTFVHSU5TX0ZST01fTk9OX1RPUF9MRVZFTF9DT05GVEVTVCA9IFJlbW92ZWRJ
blB5dGVzdDRXYXJuaW5nKAotICAgICJEZWZpbmluZyBweXRlc3RfcGx1Z2lucyBpbiBhIG5vbi10
b3AtbGV2ZWwgY29uZnRlc3QgaXMgZGVwcmVjYXRlZCwgIgotICAgICJiZWNhdXNlIGl0IGFmZmVj
dHMgdGhlIGVudGlyZSBkaXJlY3RvcnkgdHJlZSBpbiBhIG5vbi1leHBsaWNpdCB3YXkuXG4iCi0g
ICAgIlBsZWFzZSBtb3ZlIGl0IHRvIHRoZSB0b3AgbGV2ZWwgY29uZnRlc3QgZmlsZSBpbnN0ZWFk
LiIKK0ZTQ09MTEVDVE9SX0dFVEhPT0tQUk9YWV9JU0lOSVRQQVRIID0gUHl0ZXN0RGVwcmVjYXRp
b25XYXJuaW5nKAorICAgICJUaGUgZ2V0aG9va3Byb3h5KCkgYW5kIGlzaW5pdHBhdGgoKSBtZXRo
b2RzIG9mIEZTQ29sbGVjdG9yIGFuZCBQYWNrYWdlIGFyZSBkZXByZWNhdGVkOyAiCisgICAgInVz
ZSBzZWxmLnNlc3Npb24uZ2V0aG9va3Byb3h5KCkgYW5kIHNlbGYuc2Vzc2lvbi5pc2luaXRwYXRo
KCkgaW5zdGVhZC4gIgogKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZG9j
dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2RvY3Rlc3QucHkKaW5kZXggYjBhM2Fk
MDhkZmM0Li5jNzQ0YmIzNjllYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L2RvY3Rlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZG9jdGVzdC5weQpAQCAt
MSwxNCArMSw0NiBAQAotIiIiIGRpc2NvdmVyIGFuZCBydW4gZG9jdGVzdHMgaW4gbW9kdWxlcyBh
bmQgdGVzdCBmaWxlcy4iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHN5
cworIiIiRGlzY292ZXIgYW5kIHJ1biBkb2N0ZXN0cyBpbiBtb2R1bGVzIGFuZCB0ZXN0IGZpbGVz
LiIiIgoraW1wb3J0IGJkYgoraW1wb3J0IGluc3BlY3QKIGltcG9ydCBwbGF0Zm9ybQoraW1wb3J0
IHN5cworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5cGVzCitpbXBvcnQgd2FybmluZ3MKK2Zy
b20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKK2Zyb20gdHlwaW5nIGltcG9ydCBB
bnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QK
K2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJs
ZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAor
ZnJvbSB0eXBpbmcgaW1wb3J0IFBhdHRlcm4KK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQor
ZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1w
b3J0IHB5LnBhdGgKIAogaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1w
b3J0IEV4Y2VwdGlvbkluZm8sIFJlcHJGaWxlTG9jYXRpb24sIFRlcm1pbmFsUmVwcgorZnJvbSBf
cHl0ZXN0IGltcG9ydCBvdXRjb21lcworZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4
Y2VwdGlvbkluZm8KK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRmlsZUxvY2F0
aW9uCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgVGVybWluYWxSZXByCitmcm9tIF9w
eXRlc3QuX2lvIGltcG9ydCBUZXJtaW5hbFdyaXRlcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBv
cnQgc2FmZV9nZXRhdHRyCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5H
Citmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcu
YXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCiBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZp
eHR1cmVSZXF1ZXN0Citmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IENvbGxlY3RvcgorZnJvbSBf
cHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBPdXRjb21lRXhjZXB0aW9uCitmcm9tIF9weXRlc3QucGF0
aGxpYiBpbXBvcnQgaW1wb3J0X3BhdGgKK2Zyb20gX3B5dGVzdC5weXRob25fYXBpIGltcG9ydCBh
cHByb3gKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RXYXJuaW5nCiAK
K2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgaW1wb3J0IGRvY3Rlc3QKKyAgICBmcm9tIHR5cGluZyBp
bXBvcnQgVHlwZQogCiBET0NURVNUX1JFUE9SVF9DSE9JQ0VfTk9ORSA9ICJub25lIgogRE9DVEVT
VF9SRVBPUlRfQ0hPSUNFX0NESUZGID0gImNkaWZmIgpAQCAtMjYsOSArNTgsMTEgQEAgRE9DVEVT
VF9SRVBPUlRfQ0hPSUNFUyA9ICgKIAogIyBMYXp5IGRlZmluaXRpb24gb2YgcnVubmVyIGNsYXNz
CiBSVU5ORVJfQ0xBU1MgPSBOb25lCisjIExhenkgZGVmaW5pdGlvbiBvZiBvdXRwdXQgY2hlY2tl
ciBjbGFzcworQ0hFQ0tFUl9DTEFTUyA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbVHlwZVtkb2N0
ZXN0Lk91dHB1dENoZWNrZXJdXQogCiAKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Citk
ZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4gTm9uZToKICAgICBwYXJzZXIu
YWRkaW5pKAogICAgICAgICAiZG9jdGVzdF9vcHRpb25mbGFncyIsCiAgICAgICAgICJvcHRpb24g
ZmxhZ3MgZm9yIGRvY3Rlc3RzIiwKQEAgLTc4LDIzICsxMTIsMzQgQEAgZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyKToKICAgICApCiAKIAotZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwg
cGFyZW50KToKK2RlZiBweXRlc3RfdW5jb25maWd1cmUoKSAtPiBOb25lOgorICAgIGdsb2JhbCBS
VU5ORVJfQ0xBU1MKKworICAgIFJVTk5FUl9DTEFTUyA9IE5vbmUKKworCitkZWYgcHl0ZXN0X2Nv
bGxlY3RfZmlsZSgKKyAgICBwYXRoOiBweS5wYXRoLmxvY2FsLCBwYXJlbnQ6IENvbGxlY3RvciwK
KykgLT4gT3B0aW9uYWxbVW5pb25bIkRvY3Rlc3RNb2R1bGUiLCAiRG9jdGVzdFRleHRmaWxlIl1d
OgogICAgIGNvbmZpZyA9IHBhcmVudC5jb25maWcKICAgICBpZiBwYXRoLmV4dCA9PSAiLnB5IjoK
LSAgICAgICAgaWYgY29uZmlnLm9wdGlvbi5kb2N0ZXN0bW9kdWxlcyBhbmQgbm90IF9pc19zZXR1
cF9weShjb25maWcsIHBhdGgsIHBhcmVudCk6Ci0gICAgICAgICAgICByZXR1cm4gRG9jdGVzdE1v
ZHVsZShwYXRoLCBwYXJlbnQpCisgICAgICAgIGlmIGNvbmZpZy5vcHRpb24uZG9jdGVzdG1vZHVs
ZXMgYW5kIG5vdCBfaXNfc2V0dXBfcHkocGF0aCk6CisgICAgICAgICAgICBtb2QgPSBEb2N0ZXN0
TW9kdWxlLmZyb21fcGFyZW50KHBhcmVudCwgZnNwYXRoPXBhdGgpICAjIHR5cGU6IERvY3Rlc3RN
b2R1bGUKKyAgICAgICAgICAgIHJldHVybiBtb2QKICAgICBlbGlmIF9pc19kb2N0ZXN0KGNvbmZp
ZywgcGF0aCwgcGFyZW50KToKLSAgICAgICAgcmV0dXJuIERvY3Rlc3RUZXh0ZmlsZShwYXRoLCBw
YXJlbnQpCisgICAgICAgIHR4dCA9IERvY3Rlc3RUZXh0ZmlsZS5mcm9tX3BhcmVudChwYXJlbnQs
IGZzcGF0aD1wYXRoKSAgIyB0eXBlOiBEb2N0ZXN0VGV4dGZpbGUKKyAgICAgICAgcmV0dXJuIHR4
dAorICAgIHJldHVybiBOb25lCiAKIAotZGVmIF9pc19zZXR1cF9weShjb25maWcsIHBhdGgsIHBh
cmVudCk6CitkZWYgX2lzX3NldHVwX3B5KHBhdGg6IHB5LnBhdGgubG9jYWwpIC0+IGJvb2w6CiAg
ICAgaWYgcGF0aC5iYXNlbmFtZSAhPSAic2V0dXAucHkiOgogICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICBjb250ZW50cyA9IHBhdGgucmVhZCgpCi0gICAgcmV0dXJuICJzZXR1cHRvb2xzIiBpbiBj
b250ZW50cyBvciAiZGlzdHV0aWxzIiBpbiBjb250ZW50cworICAgIGNvbnRlbnRzID0gcGF0aC5y
ZWFkX2JpbmFyeSgpCisgICAgcmV0dXJuIGIic2V0dXB0b29scyIgaW4gY29udGVudHMgb3IgYiJk
aXN0dXRpbHMiIGluIGNvbnRlbnRzCiAKIAotZGVmIF9pc19kb2N0ZXN0KGNvbmZpZywgcGF0aCwg
cGFyZW50KToKK2RlZiBfaXNfZG9jdGVzdChjb25maWc6IENvbmZpZywgcGF0aDogcHkucGF0aC5s
b2NhbCwgcGFyZW50KSAtPiBib29sOgogICAgIGlmIHBhdGguZXh0IGluICgiLnR4dCIsICIucnN0
IikgYW5kIHBhcmVudC5zZXNzaW9uLmlzaW5pdHBhdGgocGF0aCk6CiAgICAgICAgIHJldHVybiBU
cnVlCiAgICAgZ2xvYnMgPSBjb25maWcuZ2V0b3B0aW9uKCJkb2N0ZXN0Z2xvYiIpIG9yIFsidGVz
dCoudHh0Il0KQEAgLTEwNSwxMiArMTUwLDEyIEBAIGRlZiBfaXNfZG9jdGVzdChjb25maWcsIHBh
dGgsIHBhcmVudCk6CiAKIAogY2xhc3MgUmVwckZhaWxEb2N0ZXN0KFRlcm1pbmFsUmVwcik6Ci0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwcmxvY2F0aW9uX2xpbmVzKToKLSAgICAgICAgIyBM
aXN0IG9mIChyZXBybG9jYXRpb24sIGxpbmVzKSB0dXBsZXMKKyAgICBkZWYgX19pbml0X18oCisg
ICAgICAgIHNlbGYsIHJlcHJsb2NhdGlvbl9saW5lczogU2VxdWVuY2VbVHVwbGVbUmVwckZpbGVM
b2NhdGlvbiwgU2VxdWVuY2Vbc3RyXV1dCisgICAgKSAtPiBOb25lOgogICAgICAgICBzZWxmLnJl
cHJsb2NhdGlvbl9saW5lcyA9IHJlcHJsb2NhdGlvbl9saW5lcwogCi0gICAgZGVmIHRvdGVybWlu
YWwoc2VsZiwgdHcpOgorICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3OiBUZXJtaW5hbFdyaXRl
cikgLT4gTm9uZToKICAgICAgICAgZm9yIHJlcHJsb2NhdGlvbiwgbGluZXMgaW4gc2VsZi5yZXBy
bG9jYXRpb25fbGluZXM6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAg
ICAgICAgICB0dy5saW5lKGxpbmUpCkBAIC0xMTgsMzcgKzE2Myw1MyBAQCBjbGFzcyBSZXByRmFp
bERvY3Rlc3QoVGVybWluYWxSZXByKToKIAogCiBjbGFzcyBNdWx0aXBsZURvY3Rlc3RGYWlsdXJl
cyhFeGNlcHRpb24pOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVzKToKLSAgICAg
ICAgc3VwZXIoTXVsdGlwbGVEb2N0ZXN0RmFpbHVyZXMsIHNlbGYpLl9faW5pdF9fKCkKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZmFpbHVyZXM6ICJTZXF1ZW5jZVtkb2N0ZXN0LkRvY1Rlc3RGYWls
dXJlXSIpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgICBzZWxm
LmZhaWx1cmVzID0gZmFpbHVyZXMKIAogCi1kZWYgX2luaXRfcnVubmVyX2NsYXNzKCk6CitkZWYg
X2luaXRfcnVubmVyX2NsYXNzKCkgLT4gIlR5cGVbZG9jdGVzdC5Eb2NUZXN0UnVubmVyXSI6CiAg
ICAgaW1wb3J0IGRvY3Rlc3QKIAogICAgIGNsYXNzIFB5dGVzdERvY3Rlc3RSdW5uZXIoZG9jdGVz
dC5EZWJ1Z1J1bm5lcik6Ci0gICAgICAgICIiIgotICAgICAgICBSdW5uZXIgdG8gY29sbGVjdCBm
YWlsdXJlcy4gIE5vdGUgdGhhdCB0aGUgb3V0IHZhcmlhYmxlIGluIHRoaXMgY2FzZSBpcwotICAg
ICAgICBhIGxpc3QgaW5zdGVhZCBvZiBhIHN0ZG91dC1saWtlIG9iamVjdAorICAgICAgICAiIiJS
dW5uZXIgdG8gY29sbGVjdCBmYWlsdXJlcy4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIG91dCB2
YXJpYWJsZSBpbiB0aGlzIGNhc2UgaXMgYSBsaXN0IGluc3RlYWQgb2YgYQorICAgICAgICBzdGRv
dXQtbGlrZSBvYmplY3QuCiAgICAgICAgICIiIgogCiAgICAgICAgIGRlZiBfX2luaXRfXygKLSAg
ICAgICAgICAgIHNlbGYsIGNoZWNrZXI9Tm9uZSwgdmVyYm9zZT1Ob25lLCBvcHRpb25mbGFncz0w
LCBjb250aW51ZV9vbl9mYWlsdXJlPVRydWUKLSAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYs
CisgICAgICAgICAgICBjaGVja2VyOiBPcHRpb25hbFtkb2N0ZXN0Lk91dHB1dENoZWNrZXJdID0g
Tm9uZSwKKyAgICAgICAgICAgIHZlcmJvc2U6IE9wdGlvbmFsW2Jvb2xdID0gTm9uZSwKKyAgICAg
ICAgICAgIG9wdGlvbmZsYWdzOiBpbnQgPSAwLAorICAgICAgICAgICAgY29udGludWVfb25fZmFp
bHVyZTogYm9vbCA9IFRydWUsCisgICAgICAgICkgLT4gTm9uZToKICAgICAgICAgICAgIGRvY3Rl
c3QuRGVidWdSdW5uZXIuX19pbml0X18oCiAgICAgICAgICAgICAgICAgc2VsZiwgY2hlY2tlcj1j
aGVja2VyLCB2ZXJib3NlPXZlcmJvc2UsIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzCiAgICAgICAg
ICAgICApCiAgICAgICAgICAgICBzZWxmLmNvbnRpbnVlX29uX2ZhaWx1cmUgPSBjb250aW51ZV9v
bl9mYWlsdXJlCiAKLSAgICAgICAgZGVmIHJlcG9ydF9mYWlsdXJlKHNlbGYsIG91dCwgdGVzdCwg
ZXhhbXBsZSwgZ290KToKKyAgICAgICAgZGVmIHJlcG9ydF9mYWlsdXJlKAorICAgICAgICAgICAg
c2VsZiwgb3V0LCB0ZXN0OiAiZG9jdGVzdC5Eb2NUZXN0IiwgZXhhbXBsZTogImRvY3Rlc3QuRXhh
bXBsZSIsIGdvdDogc3RyLAorICAgICAgICApIC0+IE5vbmU6CiAgICAgICAgICAgICBmYWlsdXJl
ID0gZG9jdGVzdC5Eb2NUZXN0RmFpbHVyZSh0ZXN0LCBleGFtcGxlLCBnb3QpCiAgICAgICAgICAg
ICBpZiBzZWxmLmNvbnRpbnVlX29uX2ZhaWx1cmU6CiAgICAgICAgICAgICAgICAgb3V0LmFwcGVu
ZChmYWlsdXJlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBmYWls
dXJlCiAKLSAgICAgICAgZGVmIHJlcG9ydF91bmV4cGVjdGVkX2V4Y2VwdGlvbihzZWxmLCBvdXQs
IHRlc3QsIGV4YW1wbGUsIGV4Y19pbmZvKToKKyAgICAgICAgZGVmIHJlcG9ydF91bmV4cGVjdGVk
X2V4Y2VwdGlvbigKKyAgICAgICAgICAgIHNlbGYsCisgICAgICAgICAgICBvdXQsCisgICAgICAg
ICAgICB0ZXN0OiAiZG9jdGVzdC5Eb2NUZXN0IiwKKyAgICAgICAgICAgIGV4YW1wbGU6ICJkb2N0
ZXN0LkV4YW1wbGUiLAorICAgICAgICAgICAgZXhjX2luZm86ICJUdXBsZVtUeXBlW0Jhc2VFeGNl
cHRpb25dLCBCYXNlRXhjZXB0aW9uLCB0eXBlcy5UcmFjZWJhY2tUeXBlXSIsCisgICAgICAgICkg
LT4gTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjX2luZm9bMV0sIE91dGNvbWVF
eGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIGV4Y19pbmZvWzFdCisgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKGV4Y19pbmZvWzFdLCBiZGIuQmRiUXVpdCk6CisgICAgICAgICAgICAg
ICAgb3V0Y29tZXMuZXhpdCgiUXVpdHRpbmcgZGVidWdnZXIiKQogICAgICAgICAgICAgZmFpbHVy
ZSA9IGRvY3Rlc3QuVW5leHBlY3RlZEV4Y2VwdGlvbih0ZXN0LCBleGFtcGxlLCBleGNfaW5mbykK
ICAgICAgICAgICAgIGlmIHNlbGYuY29udGludWVfb25fZmFpbHVyZToKICAgICAgICAgICAgICAg
ICBvdXQuYXBwZW5kKGZhaWx1cmUpCkBAIC0xNTgsMTIgKzIxOSwxOSBAQCBkZWYgX2luaXRfcnVu
bmVyX2NsYXNzKCk6CiAgICAgcmV0dXJuIFB5dGVzdERvY3Rlc3RSdW5uZXIKIAogCi1kZWYgX2dl
dF9ydW5uZXIoY2hlY2tlcj1Ob25lLCB2ZXJib3NlPU5vbmUsIG9wdGlvbmZsYWdzPTAsIGNvbnRp
bnVlX29uX2ZhaWx1cmU9VHJ1ZSk6CitkZWYgX2dldF9ydW5uZXIoCisgICAgY2hlY2tlcjogT3B0
aW9uYWxbImRvY3Rlc3QuT3V0cHV0Q2hlY2tlciJdID0gTm9uZSwKKyAgICB2ZXJib3NlOiBPcHRp
b25hbFtib29sXSA9IE5vbmUsCisgICAgb3B0aW9uZmxhZ3M6IGludCA9IDAsCisgICAgY29udGlu
dWVfb25fZmFpbHVyZTogYm9vbCA9IFRydWUsCispIC0+ICJkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIi
OgogICAgICMgV2UgbmVlZCB0aGlzIGluIG9yZGVyIHRvIGRvIGEgbGF6eSBpbXBvcnQgb24gZG9j
dGVzdAogICAgIGdsb2JhbCBSVU5ORVJfQ0xBU1MKICAgICBpZiBSVU5ORVJfQ0xBU1MgaXMgTm9u
ZToKICAgICAgICAgUlVOTkVSX0NMQVNTID0gX2luaXRfcnVubmVyX2NsYXNzKCkKLSAgICByZXR1
cm4gUlVOTkVSX0NMQVNTKAorICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgdGhlIGNvbnRpbnVl
X29uX2ZhaWx1cmUgYXJndW1lbnQgaXMgb25seSBkZWZpbmVkIG9uCisgICAgIyBQeXRlc3REb2N0
ZXN0UnVubmVyLCB3aGljaCBpcyBsYXppbHkgZGVmaW5lZCBzbyBjYW4ndCBiZSB1c2VkIGFzIGEg
dHlwZS4KKyAgICByZXR1cm4gUlVOTkVSX0NMQVNTKCAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAg
Y2hlY2tlcj1jaGVja2VyLAogICAgICAgICB2ZXJib3NlPXZlcmJvc2UsCiAgICAgICAgIG9wdGlv
bmZsYWdzPW9wdGlvbmZsYWdzLApAQCAtMTcyLDE1ICsyNDAsMzMgQEAgZGVmIF9nZXRfcnVubmVy
KGNoZWNrZXI9Tm9uZSwgdmVyYm9zZT1Ob25lLCBvcHRpb25mbGFncz0wLCBjb250aW51ZV9vbl9m
YWlsdXJlPVQKIAogCiBjbGFzcyBEb2N0ZXN0SXRlbShweXRlc3QuSXRlbSk6Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50LCBydW5uZXI9Tm9uZSwgZHRlc3Q9Tm9uZSk6Ci0g
ICAgICAgIHN1cGVyKERvY3Rlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQpCisg
ICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBuYW1lOiBzdHIsCisgICAg
ICAgIHBhcmVudDogIlVuaW9uW0RvY3Rlc3RUZXh0ZmlsZSwgRG9jdGVzdE1vZHVsZV0iLAorICAg
ICAgICBydW5uZXI6IE9wdGlvbmFsWyJkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIiXSA9IE5vbmUsCisg
ICAgICAgIGR0ZXN0OiBPcHRpb25hbFsiZG9jdGVzdC5Eb2NUZXN0Il0gPSBOb25lLAorICAgICkg
LT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQpCiAgICAgICAg
IHNlbGYucnVubmVyID0gcnVubmVyCiAgICAgICAgIHNlbGYuZHRlc3QgPSBkdGVzdAogICAgICAg
ICBzZWxmLm9iaiA9IE5vbmUKLSAgICAgICAgc2VsZi5maXh0dXJlX3JlcXVlc3QgPSBOb25lCi0K
LSAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgIHNlbGYuZml4dHVyZV9yZXF1ZXN0ID0gTm9u
ZSAgIyB0eXBlOiBPcHRpb25hbFtGaXh0dXJlUmVxdWVzdF0KKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBmcm9tX3BhcmVudCggICMgdHlwZTogaWdub3JlCisgICAgICAgIGNscywKKyAgICAg
ICAgcGFyZW50OiAiVW5pb25bRG9jdGVzdFRleHRmaWxlLCBEb2N0ZXN0TW9kdWxlXSIsCisgICAg
ICAgICosCisgICAgICAgIG5hbWU6IHN0ciwKKyAgICAgICAgcnVubmVyOiAiZG9jdGVzdC5Eb2NU
ZXN0UnVubmVyIiwKKyAgICAgICAgZHRlc3Q6ICJkb2N0ZXN0LkRvY1Rlc3QiCisgICAgKToKKyAg
ICAgICAgIyBpbmNvbXBhdGlibGUgc2lnbmF0dXJlIGR1ZSB0byB0byBpbXBvc2VkIGxpbWl0cyBv
biBzdWJsY2FzcworICAgICAgICAiIiJUaGUgcHVibGljIG5hbWVkIGNvbnN0cnVjdG9yLiIiIgor
ICAgICAgICByZXR1cm4gc3VwZXIoKS5mcm9tX3BhcmVudChuYW1lPW5hbWUsIHBhcmVudD1wYXJl
bnQsIHJ1bm5lcj1ydW5uZXIsIGR0ZXN0PWR0ZXN0KQorCisgICAgZGVmIHNldHVwKHNlbGYpIC0+
IE5vbmU6CiAgICAgICAgIGlmIHNlbGYuZHRlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBz
ZWxmLmZpeHR1cmVfcmVxdWVzdCA9IF9zZXR1cF9maXh0dXJlcyhzZWxmKQogICAgICAgICAgICAg
Z2xvYnMgPSBkaWN0KGdldGZpeHR1cmU9c2VsZi5maXh0dXJlX3JlcXVlc3QuZ2V0Zml4dHVyZXZh
bHVlKQpAQCAtMTkwLDMzICsyNzYsNDMgQEAgY2xhc3MgRG9jdGVzdEl0ZW0ocHl0ZXN0Lkl0ZW0p
OgogICAgICAgICAgICAgICAgIGdsb2JzW25hbWVdID0gdmFsdWUKICAgICAgICAgICAgIHNlbGYu
ZHRlc3QuZ2xvYnMudXBkYXRlKGdsb2JzKQogCi0gICAgZGVmIHJ1bnRlc3Qoc2VsZik6CisgICAg
ZGVmIHJ1bnRlc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuZHRlc3QgaXMg
bm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYucnVubmVyIGlzIG5vdCBOb25lCiAgICAgICAg
IF9jaGVja19hbGxfc2tpcHBlZChzZWxmLmR0ZXN0KQogICAgICAgICBzZWxmLl9kaXNhYmxlX291
dHB1dF9jYXB0dXJpbmdfZm9yX2RhcndpbigpCi0gICAgICAgIGZhaWx1cmVzID0gW10KLSAgICAg
ICAgc2VsZi5ydW5uZXIucnVuKHNlbGYuZHRlc3QsIG91dD1mYWlsdXJlcykKKyAgICAgICAgZmFp
bHVyZXMgPSBbXSAgIyB0eXBlOiBMaXN0W2RvY3Rlc3QuRG9jVGVzdEZhaWx1cmVdCisgICAgICAg
ICMgVHlwZSBpZ25vcmVkIGJlY2F1c2Ugd2UgY2hhbmdlIHRoZSB0eXBlIG9mIGBvdXRgIGZyb20g
d2hhdAorICAgICAgICAjIGRvY3Rlc3QgZXhwZWN0cy4KKyAgICAgICAgc2VsZi5ydW5uZXIucnVu
KHNlbGYuZHRlc3QsIG91dD1mYWlsdXJlcykgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQogICAg
ICAgICBpZiBmYWlsdXJlczoKICAgICAgICAgICAgIHJhaXNlIE11bHRpcGxlRG9jdGVzdEZhaWx1
cmVzKGZhaWx1cmVzKQogCi0gICAgZGVmIF9kaXNhYmxlX291dHB1dF9jYXB0dXJpbmdfZm9yX2Rh
cndpbihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIERpc2FibGUgb3V0cHV0IGNhcHR1cmlu
Zy4gT3RoZXJ3aXNlLCBzdGRvdXQgaXMgbG9zdCB0byBkb2N0ZXN0ICgjOTg1KQotICAgICAgICAi
IiIKKyAgICBkZWYgX2Rpc2FibGVfb3V0cHV0X2NhcHR1cmluZ19mb3JfZGFyd2luKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgICIiIkRpc2FibGUgb3V0cHV0IGNhcHR1cmluZy4gT3RoZXJ3aXNlLCBz
dGRvdXQgaXMgbG9zdCB0byBkb2N0ZXN0ICgjOTg1KS4iIiIKICAgICAgICAgaWYgcGxhdGZvcm0u
c3lzdGVtKCkgIT0gIkRhcndpbiI6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgY2FwbWFu
ID0gc2VsZi5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oImNhcHR1cmVtYW5hZ2VyIikK
ICAgICAgICAgaWYgY2FwbWFuOgotICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4uc3VzcGVu
ZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKKyAgICAgICAgICAgIGNhcG1hbi5zdXNwZW5kX2ds
b2JhbF9jYXB0dXJlKGluXz1UcnVlKQorICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4ucmVh
ZF9nbG9iYWxfY2FwdHVyZSgpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKG91dCkKICAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQogCi0gICAgZGVmIHJlcHJfZmFpbHVyZShz
ZWxmLCBleGNpbmZvKToKKyAgICAjIFRPRE86IFR5cGUgaWdub3JlZCAtLSBicmVha3MgTGlza292
IFN1YnN0aXR1dGlvbi4KKyAgICBkZWYgcmVwcl9mYWlsdXJlKCAgIyB0eXBlOiBpZ25vcmVbb3Zl
cnJpZGVdCisgICAgICAgIHNlbGYsIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlv
bl0sCisgICAgKSAtPiBVbmlvbltzdHIsIFRlcm1pbmFsUmVwcl06CiAgICAgICAgIGltcG9ydCBk
b2N0ZXN0CiAKLSAgICAgICAgZmFpbHVyZXMgPSBOb25lCi0gICAgICAgIGlmIGV4Y2luZm8uZXJy
aXNpbnN0YW5jZSgoZG9jdGVzdC5Eb2NUZXN0RmFpbHVyZSwgZG9jdGVzdC5VbmV4cGVjdGVkRXhj
ZXB0aW9uKSk6CisgICAgICAgIGZhaWx1cmVzID0gKAorICAgICAgICAgICAgTm9uZQorICAgICAg
ICApICAjIHR5cGU6IE9wdGlvbmFsW1NlcXVlbmNlW1VuaW9uW2RvY3Rlc3QuRG9jVGVzdEZhaWx1
cmUsIGRvY3Rlc3QuVW5leHBlY3RlZEV4Y2VwdGlvbl1dXQorICAgICAgICBpZiBpc2luc3RhbmNl
KAorICAgICAgICAgICAgZXhjaW5mby52YWx1ZSwgKGRvY3Rlc3QuRG9jVGVzdEZhaWx1cmUsIGRv
Y3Rlc3QuVW5leHBlY3RlZEV4Y2VwdGlvbikKKyAgICAgICAgKToKICAgICAgICAgICAgIGZhaWx1
cmVzID0gW2V4Y2luZm8udmFsdWVdCi0gICAgICAgIGVsaWYgZXhjaW5mby5lcnJpc2luc3RhbmNl
KE11bHRpcGxlRG9jdGVzdEZhaWx1cmVzKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV4Y2lu
Zm8udmFsdWUsIE11bHRpcGxlRG9jdGVzdEZhaWx1cmVzKToKICAgICAgICAgICAgIGZhaWx1cmVz
ID0gZXhjaW5mby52YWx1ZS5mYWlsdXJlcwogCiAgICAgICAgIGlmIGZhaWx1cmVzIGlzIG5vdCBO
b25lOgpAQCAtMjMwLDQ4ICszMjYsNTMgQEAgY2xhc3MgRG9jdGVzdEl0ZW0ocHl0ZXN0Lkl0ZW0p
OgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGxpbmVubyA9IHRl
c3QubGluZW5vICsgZXhhbXBsZS5saW5lbm8gKyAxCiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9
IHR5cGUoZmFpbHVyZSkuX19uYW1lX18KLSAgICAgICAgICAgICAgICByZXBybG9jYXRpb24gPSBS
ZXByRmlsZUxvY2F0aW9uKGZpbGVuYW1lLCBsaW5lbm8sIG1lc3NhZ2UpCisgICAgICAgICAgICAg
ICAgIyBUT0RPOiBSZXByRmlsZUxvY2F0aW9uIGRvZXNuJ3QgZXhwZWN0IGEgTm9uZSBsaW5lbm8u
CisgICAgICAgICAgICAgICAgcmVwcmxvY2F0aW9uID0gUmVwckZpbGVMb2NhdGlvbihmaWxlbmFt
ZSwgbGluZW5vLCBtZXNzYWdlKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCiAgICAgICAgICAg
ICAgICAgY2hlY2tlciA9IF9nZXRfY2hlY2tlcigpCiAgICAgICAgICAgICAgICAgcmVwb3J0X2No
b2ljZSA9IF9nZXRfcmVwb3J0X2Nob2ljZSgKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25m
aWcuZ2V0b3B0aW9uKCJkb2N0ZXN0cmVwb3J0IikKICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQgZmFpbHVyZS50ZXN0LmRvY3N0cmluZyBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgICAg
ICBsaW5lcyA9IGZhaWx1cmUudGVzdC5kb2NzdHJpbmcuc3BsaXRsaW5lcyhGYWxzZSkKICAgICAg
ICAgICAgICAgICAgICAgIyBhZGQgbGluZSBudW1iZXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBlcnJv
ciBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCB0ZXN0LmxpbmVubyBpcyBub3Qg
Tm9uZQogICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IFsKICAgICAgICAgICAgICAgICAgICAg
ICAgICIlMDNkICVzIiAlIChpICsgdGVzdC5saW5lbm8gKyAxLCB4KQogICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChpLCB4KSBpbiBlbnVtZXJhdGUobGluZXMpCiAgICAgICAgICAgICAgICAg
ICAgIF0KICAgICAgICAgICAgICAgICAgICAgIyB0cmltIGRvY3N0cmluZyBlcnJvciBsaW5lcyB0
byAxMAotICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IGxpbmVzW21heChleGFtcGxlLmxpbmVu
byAtIDksIDApOmV4YW1wbGUubGluZW5vICsgMV0KKyAgICAgICAgICAgICAgICAgICAgbGluZXMg
PSBsaW5lc1ttYXgoZXhhbXBsZS5saW5lbm8gLSA5LCAwKSA6IGV4YW1wbGUubGluZW5vICsgMV0K
ICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IFsKICAg
ICAgICAgICAgICAgICAgICAgICAgICJFWEFNUExFIExPQ0FUSU9OIFVOS05PV04sIG5vdCBzaG93
aW5nIGFsbCB0ZXN0cyBvZiB0aGF0IGV4YW1wbGUiCiAgICAgICAgICAgICAgICAgICAgIF0KICAg
ICAgICAgICAgICAgICAgICAgaW5kZW50ID0gIj4+PiIKICAgICAgICAgICAgICAgICAgICAgZm9y
IGxpbmUgaW4gZXhhbXBsZS5zb3VyY2Uuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCI/Pz8gJXMgJXMiICUgKGluZGVudCwgbGluZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIj8/PyB7fSB7fSIuZm9ybWF0KGluZGVudCwg
bGluZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAiLi4uIgogICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgZG9jdGVzdC5Eb2NUZXN0RmFpbHVyZSk6CiAg
ICAgICAgICAgICAgICAgICAgIGxpbmVzICs9IGNoZWNrZXIub3V0cHV0X2RpZmZlcmVuY2UoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlLCBmYWlsdXJlLmdvdCwgcmVwb3J0X2Nob2lj
ZQotICAgICAgICAgICAgICAgICAgICApLnNwbGl0KAotICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkuc3BsaXQo
IlxuIikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpbm5lcl9l
eGNpbmZvID0gRXhjZXB0aW9uSW5mbyhmYWlsdXJlLmV4Y19pbmZvKQogICAgICAgICAgICAgICAg
ICAgICBsaW5lcyArPSBbIlVORVhQRUNURUQgRVhDRVBUSU9OOiAlcyIgJSByZXByKGlubmVyX2V4
Y2luZm8udmFsdWUpXQotICAgICAgICAgICAgICAgICAgICBsaW5lcyArPSB0cmFjZWJhY2suZm9y
bWF0X2V4Y2VwdGlvbigqZmFpbHVyZS5leGNfaW5mbykKKyAgICAgICAgICAgICAgICAgICAgbGlu
ZXMgKz0gWworICAgICAgICAgICAgICAgICAgICAgICAgeC5zdHJpcCgiXG4iKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKmZhaWx1
cmUuZXhjX2luZm8pCisgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICByZXBy
bG9jYXRpb25fbGluZXMuYXBwZW5kKChyZXBybG9jYXRpb24sIGxpbmVzKSkKICAgICAgICAgICAg
IHJldHVybiBSZXByRmFpbERvY3Rlc3QocmVwcmxvY2F0aW9uX2xpbmVzKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmV0dXJuIHN1cGVyKERvY3Rlc3RJdGVtLCBzZWxmKS5yZXByX2ZhaWx1
cmUoZXhjaW5mbykKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnJlcHJfZmFpbHVyZShleGNp
bmZvKQogCiAgICAgZGVmIHJlcG9ydGluZm8oc2VsZik6CisgICAgICAgIGFzc2VydCBzZWxmLmR0
ZXN0IGlzIG5vdCBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLmZzcGF0aCwgc2VsZi5kdGVzdC5s
aW5lbm8sICJbZG9jdGVzdF0gJXMiICUgc2VsZi5uYW1lCiAKIAotZGVmIF9nZXRfZmxhZ19sb29r
dXAoKToKK2RlZiBfZ2V0X2ZsYWdfbG9va3VwKCkgLT4gRGljdFtzdHIsIGludF06CiAgICAgaW1w
b3J0IGRvY3Rlc3QKIAogICAgIHJldHVybiBkaWN0KApAQCAtMjgzLDYgKzM4NCw3IEBAIGRlZiBf
Z2V0X2ZsYWdfbG9va3VwKCk6CiAgICAgICAgIENPTVBBUklTT05fRkxBR1M9ZG9jdGVzdC5DT01Q
QVJJU09OX0ZMQUdTLAogICAgICAgICBBTExPV19VTklDT0RFPV9nZXRfYWxsb3dfdW5pY29kZV9m
bGFnKCksCiAgICAgICAgIEFMTE9XX0JZVEVTPV9nZXRfYWxsb3dfYnl0ZXNfZmxhZygpLAorICAg
ICAgICBOVU1CRVI9X2dldF9udW1iZXJfZmxhZygpLAogICAgICkKIAogCkBAIC0yOTksNyArNDAx
LDcgQEAgZGVmIF9nZXRfY29udGludWVfb25fZmFpbHVyZShjb25maWcpOgogICAgIGNvbnRpbnVl
X29uX2ZhaWx1cmUgPSBjb25maWcuZ2V0dmFsdWUoImRvY3Rlc3RfY29udGludWVfb25fZmFpbHVy
ZSIpCiAgICAgaWYgY29udGludWVfb25fZmFpbHVyZToKICAgICAgICAgIyBXZSBuZWVkIHRvIHR1
cm4gb2ZmIHRoaXMgaWYgd2UgdXNlIHBkYiBzaW5jZSB3ZSBzaG91bGQgc3RvcCBhdAotICAgICAg
ICAjIHRoZSBmaXJzdCBmYWlsdXJlCisgICAgICAgICMgdGhlIGZpcnN0IGZhaWx1cmUuCiAgICAg
ICAgIGlmIGNvbmZpZy5nZXR2YWx1ZSgidXNlcGRiIik6CiAgICAgICAgICAgICBjb250aW51ZV9v
bl9mYWlsdXJlID0gRmFsc2UKICAgICByZXR1cm4gY29udGludWVfb25fZmFpbHVyZQpAQCAtMzA4
LDExICs0MTAsMTEgQEAgZGVmIF9nZXRfY29udGludWVfb25fZmFpbHVyZShjb25maWcpOgogY2xh
c3MgRG9jdGVzdFRleHRmaWxlKHB5dGVzdC5Nb2R1bGUpOgogICAgIG9iaiA9IE5vbmUKIAotICAg
IGRlZiBjb2xsZWN0KHNlbGYpOgorICAgIGRlZiBjb2xsZWN0KHNlbGYpIC0+IEl0ZXJhYmxlW0Rv
Y3Rlc3RJdGVtXToKICAgICAgICAgaW1wb3J0IGRvY3Rlc3QKIAotICAgICAgICAjIGluc3BpcmVk
IGJ5IGRvY3Rlc3QudGVzdGZpbGU7IGlkZWFsbHkgd2Ugd291bGQgdXNlIGl0IGRpcmVjdGx5LAot
ICAgICAgICAjIGJ1dCBpdCBkb2Vzbid0IHN1cHBvcnQgcGFzc2luZyBhIGN1c3RvbSBjaGVja2Vy
CisgICAgICAgICMgSW5zcGlyZWQgYnkgZG9jdGVzdC50ZXN0ZmlsZTsgaWRlYWxseSB3ZSB3b3Vs
ZCB1c2UgaXQgZGlyZWN0bHksCisgICAgICAgICMgYnV0IGl0IGRvZXNuJ3Qgc3VwcG9ydCBwYXNz
aW5nIGEgY3VzdG9tIGNoZWNrZXIuCiAgICAgICAgIGVuY29kaW5nID0gc2VsZi5jb25maWcuZ2V0
aW5pKCJkb2N0ZXN0X2VuY29kaW5nIikKICAgICAgICAgdGV4dCA9IHNlbGYuZnNwYXRoLnJlYWRf
dGV4dChlbmNvZGluZykKICAgICAgICAgZmlsZW5hbWUgPSBzdHIoc2VsZi5mc3BhdGgpCkBAIC0z
MjIsMjMgKzQyNCwyMyBAQCBjbGFzcyBEb2N0ZXN0VGV4dGZpbGUocHl0ZXN0Lk1vZHVsZSk6CiAg
ICAgICAgIG9wdGlvbmZsYWdzID0gZ2V0X29wdGlvbmZsYWdzKHNlbGYpCiAKICAgICAgICAgcnVu
bmVyID0gX2dldF9ydW5uZXIoCi0gICAgICAgICAgICB2ZXJib3NlPTAsCisgICAgICAgICAgICB2
ZXJib3NlPUZhbHNlLAogICAgICAgICAgICAgb3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MsCiAgICAg
ICAgICAgICBjaGVja2VyPV9nZXRfY2hlY2tlcigpLAogICAgICAgICAgICAgY29udGludWVfb25f
ZmFpbHVyZT1fZ2V0X2NvbnRpbnVlX29uX2ZhaWx1cmUoc2VsZi5jb25maWcpLAogICAgICAgICAp
Ci0gICAgICAgIF9maXhfc3Bvb2ZfcHl0aG9uMihydW5uZXIsIGVuY29kaW5nKQogCiAgICAgICAg
IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCiAgICAgICAgIHRlc3QgPSBwYXJzZXIu
Z2V0X2RvY3Rlc3QodGV4dCwgZ2xvYnMsIG5hbWUsIGZpbGVuYW1lLCAwKQogICAgICAgICBpZiB0
ZXN0LmV4YW1wbGVzOgotICAgICAgICAgICAgeWllbGQgRG9jdGVzdEl0ZW0odGVzdC5uYW1lLCBz
ZWxmLCBydW5uZXIsIHRlc3QpCisgICAgICAgICAgICB5aWVsZCBEb2N0ZXN0SXRlbS5mcm9tX3Bh
cmVudCgKKyAgICAgICAgICAgICAgICBzZWxmLCBuYW1lPXRlc3QubmFtZSwgcnVubmVyPXJ1bm5l
ciwgZHRlc3Q9dGVzdAorICAgICAgICAgICAgKQogCiAKLWRlZiBfY2hlY2tfYWxsX3NraXBwZWQo
dGVzdCk6Ci0gICAgIiIicmFpc2VzIHB5dGVzdC5za2lwKCkgaWYgYWxsIGV4YW1wbGVzIGluIHRo
ZSBnaXZlbiBEb2NUZXN0IGhhdmUgdGhlIFNLSVAKLSAgICBvcHRpb24gc2V0LgotICAgICIiIgor
ZGVmIF9jaGVja19hbGxfc2tpcHBlZCh0ZXN0OiAiZG9jdGVzdC5Eb2NUZXN0IikgLT4gTm9uZToK
KyAgICAiIiJSYWlzZSBweXRlc3Quc2tpcCgpIGlmIGFsbCBleGFtcGxlcyBpbiB0aGUgZ2l2ZW4g
RG9jVGVzdCBoYXZlIHRoZSBTS0lQCisgICAgb3B0aW9uIHNldC4iIiIKICAgICBpbXBvcnQgZG9j
dGVzdAogCiAgICAgYWxsX3NraXBwZWQgPSBhbGwoeC5vcHRpb25zLmdldChkb2N0ZXN0LlNLSVAs
IEZhbHNlKSBmb3IgeCBpbiB0ZXN0LmV4YW1wbGVzKQpAQCAtMzQ2LDI2ICs0NDgsOTggQEAgZGVm
IF9jaGVja19hbGxfc2tpcHBlZCh0ZXN0KToKICAgICAgICAgcHl0ZXN0LnNraXAoImFsbCB0ZXN0
cyBza2lwcGVkIGJ5ICtTS0lQIG9wdGlvbiIpCiAKIAotY2xhc3MgRG9jdGVzdE1vZHVsZShweXRl
c3QuTW9kdWxlKToKK2RlZiBfaXNfbW9ja2VkKG9iajogb2JqZWN0KSAtPiBib29sOgorICAgICIi
IlJldHVybiBpZiBhbiBvYmplY3QgaXMgcG9zc2libHkgYSBtb2NrIG9iamVjdCBieSBjaGVja2lu
ZyB0aGUKKyAgICBleGlzdGVuY2Ugb2YgYSBoaWdobHkgaW1wcm9iYWJsZSBhdHRyaWJ1dGUuIiIi
CisgICAgcmV0dXJuICgKKyAgICAgICAgc2FmZV9nZXRhdHRyKG9iaiwgInB5dGVzdF9tb2NrX2V4
YW1wbGVfYXR0cmlidXRlX3RoYXRfc2hvdWxkbnRfZXhpc3QiLCBOb25lKQorICAgICAgICBpcyBu
b3QgTm9uZQorICAgICkKKwogCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6CitAY29udGV4dG1hbmFn
ZXIKK2RlZiBfcGF0Y2hfdW53cmFwX21vY2tfYXdhcmUoKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9u
ZSwgTm9uZV06CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHdoaWNoIHJlcGxhY2VzIGBgaW5zcGVj
dC51bndyYXBgYCB3aXRoIGEgdmVyc2lvbgorICAgIHRoYXQncyBhd2FyZSBvZiBtb2NrIG9iamVj
dHMgYW5kIGRvZXNuJ3QgcmVjdXJzZSBpbnRvIHRoZW0uIiIiCisgICAgcmVhbF91bndyYXAgPSBp
bnNwZWN0LnVud3JhcAorCisgICAgZGVmIF9tb2NrX2F3YXJlX3Vud3JhcCgKKyAgICAgICAgZnVu
YzogQ2FsbGFibGVbLi4uLCBBbnldLCAqLCBzdG9wOiBPcHRpb25hbFtDYWxsYWJsZVtbQW55XSwg
QW55XV0gPSBOb25lCisgICAgKSAtPiBBbnk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlm
IHN0b3AgaXMgTm9uZSBvciBzdG9wIGlzIF9pc19tb2NrZWQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlYWxfdW53cmFwKGZ1bmMsIHN0b3A9X2lzX21vY2tlZCkKKyAgICAgICAgICAgIF9zdG9w
ID0gc3RvcAorICAgICAgICAgICAgcmV0dXJuIHJlYWxfdW53cmFwKGZ1bmMsIHN0b3A9bGFtYmRh
IG9iajogX2lzX21vY2tlZChvYmopIG9yIF9zdG9wKGZ1bmMpKQorICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAg
ICJHb3QgJXIgd2hlbiB1bndyYXBwaW5nICVyLiAgVGhpcyBpcyB1c3VhbGx5IGNhdXNlZCAiCisg
ICAgICAgICAgICAgICAgImJ5IGEgdmlvbGF0aW9uIG9mIFB5dGhvbidzIG9iamVjdCBwcm90b2Nv
bDsgc2VlIGUuZy4gIgorICAgICAgICAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzUwODAiICUgKGUsIGZ1bmMpLAorICAgICAgICAgICAgICAgIFB5
dGVzdFdhcm5pbmcsCisgICAgICAgICAgICApCisgICAgICAgICAgICByYWlzZQorCisgICAgaW5z
cGVjdC51bndyYXAgPSBfbW9ja19hd2FyZV91bndyYXAKKyAgICB0cnk6CisgICAgICAgIHlpZWxk
CisgICAgZmluYWxseToKKyAgICAgICAgaW5zcGVjdC51bndyYXAgPSByZWFsX3Vud3JhcAorCisK
K2NsYXNzIERvY3Rlc3RNb2R1bGUocHl0ZXN0Lk1vZHVsZSk6CisgICAgZGVmIGNvbGxlY3Qoc2Vs
ZikgLT4gSXRlcmFibGVbRG9jdGVzdEl0ZW1dOgogICAgICAgICBpbXBvcnQgZG9jdGVzdAogCisg
ICAgICAgIGNsYXNzIE1vY2tBd2FyZURvY1Rlc3RGaW5kZXIoZG9jdGVzdC5Eb2NUZXN0RmluZGVy
KToKKyAgICAgICAgICAgICIiIkEgaGFja2lzaCBkb2N0ZXN0IGZpbmRlciB0aGF0IG92ZXJyaWRl
cyBzdGRsaWIgaW50ZXJuYWxzIHRvIGZpeCBhIHN0ZGxpYiBidWcuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ1NgorICAgICAgICAg
ICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTUzMgorICAgICAgICAgICAgIiIiCisK
KyAgICAgICAgICAgIGRlZiBfZmluZF9saW5lbm8oc2VsZiwgb2JqLCBzb3VyY2VfbGluZXMpOgor
ICAgICAgICAgICAgICAgICIiIkRvY3Rlc3QgY29kZSBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3Vu
dCBgQHByb3BlcnR5YCwgdGhpcworICAgICAgICAgICAgICAgIGlzIGEgaGFja2lzaCB3YXkgdG8g
Zml4IGl0LgorCisgICAgICAgICAgICAgICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUx
NzQ0NgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
b2JqLCBwcm9wZXJ0eSk6CisgICAgICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAi
ZmdldCIsIG9iaikKKyAgICAgICAgICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIHRoaXMg
aXMgYSBwcml2YXRlIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIHJldHVybiBkb2N0ZXN0LkRv
Y1Rlc3RGaW5kZXIuX2ZpbmRfbGluZW5vKCAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZiwgb2JqLCBzb3VyY2VfbGluZXMsCisgICAgICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICBkZWYgX2ZpbmQoCisgICAgICAgICAgICAgICAgc2VsZiwgdGVzdHMsIG9iaiwgbmFt
ZSwgbW9kdWxlLCBzb3VyY2VfbGluZXMsIGdsb2JzLCBzZWVuCisgICAgICAgICAgICApIC0+IE5v
bmU6CisgICAgICAgICAgICAgICAgaWYgX2lzX21vY2tlZChvYmopOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICB3aXRoIF9wYXRjaF91bndyYXBfbW9ja19hd2Fy
ZSgpOgorCisgICAgICAgICAgICAgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgdGhpcyBp
cyBhIHByaXZhdGUgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIGRvY3Rlc3QuRG9jVGVz
dEZpbmRlci5fZmluZCggICMgdHlwZTogaWdub3JlCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLCB0ZXN0cywgb2JqLCBuYW1lLCBtb2R1bGUsIHNvdXJjZV9saW5lcywgZ2xvYnMsIHNlZW4K
KyAgICAgICAgICAgICAgICAgICAgKQorCiAgICAgICAgIGlmIHNlbGYuZnNwYXRoLmJhc2VuYW1l
ID09ICJjb25mdGVzdC5weSI6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmNvbmZpZy5wbHVn
aW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChzZWxmLmZzcGF0aCkKKyAgICAgICAgICAgIG1vZHVs
ZSA9IHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIuX2ltcG9ydGNvbmZ0ZXN0KAorICAgICAgICAg
ICAgICAgIHNlbGYuZnNwYXRoLCBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImltcG9ydG1vZGUiKQor
ICAgICAgICAgICAgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIG1vZHVsZSA9IHNlbGYuZnNwYXRoLnB5aW1wb3J0KCkKKyAgICAgICAgICAgICAgICBt
b2R1bGUgPSBpbXBvcnRfcGF0aChzZWxmLmZzcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBv
cnRFcnJvcjoKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXR2YWx1ZSgiZG9jdGVz
dF9pZ25vcmVfaW1wb3J0X2Vycm9ycyIpOgogICAgICAgICAgICAgICAgICAgICBweXRlc3Quc2tp
cCgidW5hYmxlIHRvIGltcG9ydCBtb2R1bGUgJXIiICUgc2VsZi5mc3BhdGgpCiAgICAgICAgICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgIyB1c2VzIGlu
dGVybmFsIGRvY3Rlc3QgbW9kdWxlIHBhcnNpbmcgbWVjaGFuaXNtCi0gICAgICAgIGZpbmRlciA9
IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcigpCisgICAgICAgICMgVXNlcyBpbnRlcm5hbCBkb2N0ZXN0
IG1vZHVsZSBwYXJzaW5nIG1lY2hhbmlzbS4KKyAgICAgICAgZmluZGVyID0gTW9ja0F3YXJlRG9j
VGVzdEZpbmRlcigpCiAgICAgICAgIG9wdGlvbmZsYWdzID0gZ2V0X29wdGlvbmZsYWdzKHNlbGYp
CiAgICAgICAgIHJ1bm5lciA9IF9nZXRfcnVubmVyKAotICAgICAgICAgICAgdmVyYm9zZT0wLAor
ICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAgIG9wdGlvbmZsYWdzPW9wdGlv
bmZsYWdzLAogICAgICAgICAgICAgY2hlY2tlcj1fZ2V0X2NoZWNrZXIoKSwKICAgICAgICAgICAg
IGNvbnRpbnVlX29uX2ZhaWx1cmU9X2dldF9jb250aW51ZV9vbl9mYWlsdXJlKHNlbGYuY29uZmln
KSwKQEAgLTM3MywyMCArNTQ3LDIwIEBAIGNsYXNzIERvY3Rlc3RNb2R1bGUocHl0ZXN0Lk1vZHVs
ZSk6CiAKICAgICAgICAgZm9yIHRlc3QgaW4gZmluZGVyLmZpbmQobW9kdWxlLCBtb2R1bGUuX19u
YW1lX18pOgogICAgICAgICAgICAgaWYgdGVzdC5leGFtcGxlczogICMgc2tpcCBlbXB0eSBkb2N0
ZXN0cwotICAgICAgICAgICAgICAgIHlpZWxkIERvY3Rlc3RJdGVtKHRlc3QubmFtZSwgc2VsZiwg
cnVubmVyLCB0ZXN0KQorICAgICAgICAgICAgICAgIHlpZWxkIERvY3Rlc3RJdGVtLmZyb21fcGFy
ZW50KAorICAgICAgICAgICAgICAgICAgICBzZWxmLCBuYW1lPXRlc3QubmFtZSwgcnVubmVyPXJ1
bm5lciwgZHRlc3Q9dGVzdAorICAgICAgICAgICAgICAgICkKIAogCi1kZWYgX3NldHVwX2ZpeHR1
cmVzKGRvY3Rlc3RfaXRlbSk6Ci0gICAgIiIiCi0gICAgVXNlZCBieSBEb2N0ZXN0VGV4dGZpbGUg
YW5kIERvY3Rlc3RJdGVtIHRvIHNldHVwIGZpeHR1cmUgaW5mb3JtYXRpb24uCi0gICAgIiIiCitk
ZWYgX3NldHVwX2ZpeHR1cmVzKGRvY3Rlc3RfaXRlbTogRG9jdGVzdEl0ZW0pIC0+IEZpeHR1cmVS
ZXF1ZXN0OgorICAgICIiIlVzZWQgYnkgRG9jdGVzdFRleHRmaWxlIGFuZCBEb2N0ZXN0SXRlbSB0
byBzZXR1cCBmaXh0dXJlIGluZm9ybWF0aW9uLiIiIgogCi0gICAgZGVmIGZ1bmMoKToKKyAgICBk
ZWYgZnVuYygpIC0+IE5vbmU6CiAgICAgICAgIHBhc3MKIAotICAgIGRvY3Rlc3RfaXRlbS5mdW5j
YXJncyA9IHt9CisgICAgZG9jdGVzdF9pdGVtLmZ1bmNhcmdzID0ge30gICMgdHlwZTogaWdub3Jl
W2F0dHItZGVmaW5lZF0KICAgICBmbSA9IGRvY3Rlc3RfaXRlbS5zZXNzaW9uLl9maXh0dXJlbWFu
YWdlcgotICAgIGRvY3Rlc3RfaXRlbS5fZml4dHVyZWluZm8gPSBmbS5nZXRmaXh0dXJlaW5mbygK
KyAgICBkb2N0ZXN0X2l0ZW0uX2ZpeHR1cmVpbmZvID0gZm0uZ2V0Zml4dHVyZWluZm8oICAjIHR5
cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAgICAgICAgIG5vZGU9ZG9jdGVzdF9pdGVtLCBmdW5j
PWZ1bmMsIGNscz1Ob25lLCBmdW5jYXJncz1GYWxzZQogICAgICkKICAgICBmaXh0dXJlX3JlcXVl
c3QgPSBGaXh0dXJlUmVxdWVzdChkb2N0ZXN0X2l0ZW0pCkBAIC0zOTQsODMgKzU2OCwxNDMgQEAg
ZGVmIF9zZXR1cF9maXh0dXJlcyhkb2N0ZXN0X2l0ZW0pOgogICAgIHJldHVybiBmaXh0dXJlX3Jl
cXVlc3QKIAogCi1kZWYgX2dldF9jaGVja2VyKCk6Ci0gICAgIiIiCi0gICAgUmV0dXJucyBhIGRv
Y3Rlc3QuT3V0cHV0Q2hlY2tlciBzdWJjbGFzcyB0aGF0IHRha2VzIGluIGFjY291bnQgdGhlCi0g
ICAgQUxMT1dfVU5JQ09ERSBvcHRpb24gdG8gaWdub3JlIHUnJyBwcmVmaXhlcyBpbiBzdHJpbmdz
IGFuZCBBTExPV19CWVRFUwotICAgIHRvIHN0cmlwIGInJyBwcmVmaXhlcy4KLSAgICBVc2VmdWwg
d2hlbiB0aGUgc2FtZSBkb2N0ZXN0IHNob3VsZCBydW4gaW4gUHl0aG9uIDIgYW5kIFB5dGhvbiAz
LgotCi0gICAgQW4gaW5uZXIgY2xhc3MgaXMgdXNlZCB0byBhdm9pZCBpbXBvcnRpbmcgImRvY3Rl
c3QiIGF0IHRoZSBtb2R1bGUKLSAgICBsZXZlbC4KLSAgICAiIiIKLSAgICBpZiBoYXNhdHRyKF9n
ZXRfY2hlY2tlciwgIkxpdGVyYWxzT3V0cHV0Q2hlY2tlciIpOgotICAgICAgICByZXR1cm4gX2dl
dF9jaGVja2VyLkxpdGVyYWxzT3V0cHV0Q2hlY2tlcigpCi0KK2RlZiBfaW5pdF9jaGVja2VyX2Ns
YXNzKCkgLT4gIlR5cGVbZG9jdGVzdC5PdXRwdXRDaGVja2VyXSI6CiAgICAgaW1wb3J0IGRvY3Rl
c3QKICAgICBpbXBvcnQgcmUKIAogICAgIGNsYXNzIExpdGVyYWxzT3V0cHV0Q2hlY2tlcihkb2N0
ZXN0Lk91dHB1dENoZWNrZXIpOgotICAgICAgICAiIiIKLSAgICAgICAgQ29waWVkIGZyb20gZG9j
dGVzdF9ub3NlX3BsdWdpbi5weSBmcm9tIHRoZSBubHRrIHByb2plY3Q6Ci0gICAgICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vbmx0ay9ubHRrCi0KLSAgICAgICAgRnVydGhlciBleHRlbmRlZCB0
byBhbHNvIHN1cHBvcnQgYnl0ZSBsaXRlcmFscy4KLSAgICAgICAgIiIiCisgICAgICAgICMgQmFz
ZWQgb24gZG9jdGVzdF9ub3NlX3BsdWdpbi5weSBmcm9tIHRoZSBubHRrIHByb2plY3QKKyAgICAg
ICAgIyAoaHR0cHM6Ly9naXRodWIuY29tL25sdGsvbmx0aykgYW5kIG9uIHRoZSAibnVtdGVzdCIg
ZG9jdGVzdCBleHRlbnNpb24KKyAgICAgICAgIyBieSBTZWJhc3RpZW4gQm9pc2dlcmF1bHQgKGh0
dHBzOi8vZ2l0aHViLmNvbS9ib2lzZ2VyYS9udW10ZXN0KS4KIAogICAgICAgICBfdW5pY29kZV9s
aXRlcmFsX3JlID0gcmUuY29tcGlsZShyIihcV3xeKVt1VV0oW3JSXT9bXCdcIl0pIiwgcmUuVU5J
Q09ERSkKICAgICAgICAgX2J5dGVzX2xpdGVyYWxfcmUgPSByZS5jb21waWxlKHIiKFxXfF4pW2JC
XShbclJdP1tcJ1wiXSkiLCByZS5VTklDT0RFKQorICAgICAgICBfbnVtYmVyX3JlID0gcmUuY29t
cGlsZSgKKyAgICAgICAgICAgIHIiIiIKKyAgICAgICAgICAgICg/UDxudW1iZXI+CisgICAgICAg
ICAgICAgICg/UDxtYW50aXNzYT4KKyAgICAgICAgICAgICAgICAoP1A8aW50ZWdlcjE+IFsrLV0/
XGQqKVwuKD9QPGZyYWN0aW9uPlxkKykKKyAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAg
ICAgKD9QPGludGVnZXIyPiBbKy1dP1xkKylcLgorICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICg/OgorICAgICAgICAgICAgICAgIFtFZV0KKyAgICAgICAgICAgICAgICAoP1A8ZXhwb25l
bnQxPiBbKy1dP1xkKykKKyAgICAgICAgICAgICAgKT8KKyAgICAgICAgICAgICAgfAorICAgICAg
ICAgICAgICAoP1A8aW50ZWdlcjM+IFsrLV0/XGQrKQorICAgICAgICAgICAgICAoPzoKKyAgICAg
ICAgICAgICAgICBbRWVdCisgICAgICAgICAgICAgICAgKD9QPGV4cG9uZW50Mj4gWystXT9cZCsp
CisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgICIiIiwKKyAgICAg
ICAgICAgIHJlLlZFUkJPU0UsCisgICAgICAgICkKIAotICAgICAgICBkZWYgY2hlY2tfb3V0cHV0
KHNlbGYsIHdhbnQsIGdvdCwgb3B0aW9uZmxhZ3MpOgotICAgICAgICAgICAgcmVzID0gZG9jdGVz
dC5PdXRwdXRDaGVja2VyLmNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsIG9wdGlvbmZsYWdz
KQotICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICBkZWYgY2hlY2tfb3V0cHV0KHNlbGYsIHdh
bnQ6IHN0ciwgZ290OiBzdHIsIG9wdGlvbmZsYWdzOiBpbnQpIC0+IGJvb2w6CisgICAgICAgICAg
ICBpZiBkb2N0ZXN0Lk91dHB1dENoZWNrZXIuY2hlY2tfb3V0cHV0KHNlbGYsIHdhbnQsIGdvdCwg
b3B0aW9uZmxhZ3MpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgICAg
IGFsbG93X3VuaWNvZGUgPSBvcHRpb25mbGFncyAmIF9nZXRfYWxsb3dfdW5pY29kZV9mbGFnKCkK
ICAgICAgICAgICAgIGFsbG93X2J5dGVzID0gb3B0aW9uZmxhZ3MgJiBfZ2V0X2FsbG93X2J5dGVz
X2ZsYWcoKQotICAgICAgICAgICAgaWYgbm90IGFsbG93X3VuaWNvZGUgYW5kIG5vdCBhbGxvd19i
eXRlczoKKyAgICAgICAgICAgIGFsbG93X251bWJlciA9IG9wdGlvbmZsYWdzICYgX2dldF9udW1i
ZXJfZmxhZygpCisKKyAgICAgICAgICAgIGlmIG5vdCBhbGxvd191bmljb2RlIGFuZCBub3QgYWxs
b3dfYnl0ZXMgYW5kIG5vdCBhbGxvd19udW1iZXI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKLSAgICAgICAgICAgIGVsc2U6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgICAg
IGRlZiByZW1vdmVfcHJlZml4ZXMocmVnZXg6IFBhdHRlcm5bc3RyXSwgdHh0OiBzdHIpIC0+IHN0
cjoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmUuc3ViKHJlZ2V4LCByIlwxXDIiLCB0eHQpCisK
KyAgICAgICAgICAgIGlmIGFsbG93X3VuaWNvZGU6CisgICAgICAgICAgICAgICAgd2FudCA9IHJl
bW92ZV9wcmVmaXhlcyhzZWxmLl91bmljb2RlX2xpdGVyYWxfcmUsIHdhbnQpCisgICAgICAgICAg
ICAgICAgZ290ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJhbF9yZSwgZ290
KQorCisgICAgICAgICAgICBpZiBhbGxvd19ieXRlczoKKyAgICAgICAgICAgICAgICB3YW50ID0g
cmVtb3ZlX3ByZWZpeGVzKHNlbGYuX2J5dGVzX2xpdGVyYWxfcmUsIHdhbnQpCisgICAgICAgICAg
ICAgICAgZ290ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX2J5dGVzX2xpdGVyYWxfcmUsIGdvdCkK
KworICAgICAgICAgICAgaWYgYWxsb3dfbnVtYmVyOgorICAgICAgICAgICAgICAgIGdvdCA9IHNl
bGYuX3JlbW92ZV91bndhbnRlZF9wcmVjaXNpb24od2FudCwgZ290KQorCisgICAgICAgICAgICBy
ZXR1cm4gZG9jdGVzdC5PdXRwdXRDaGVja2VyLmNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3Qs
IG9wdGlvbmZsYWdzKQorCisgICAgICAgIGRlZiBfcmVtb3ZlX3Vud2FudGVkX3ByZWNpc2lvbihz
ZWxmLCB3YW50OiBzdHIsIGdvdDogc3RyKSAtPiBzdHI6CisgICAgICAgICAgICB3YW50cyA9IGxp
c3Qoc2VsZi5fbnVtYmVyX3JlLmZpbmRpdGVyKHdhbnQpKQorICAgICAgICAgICAgZ290cyA9IGxp
c3Qoc2VsZi5fbnVtYmVyX3JlLmZpbmRpdGVyKGdvdCkpCisgICAgICAgICAgICBpZiBsZW4od2Fu
dHMpICE9IGxlbihnb3RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZ290CisgICAgICAgICAg
ICBvZmZzZXQgPSAwCisgICAgICAgICAgICBmb3IgdywgZyBpbiB6aXAod2FudHMsIGdvdHMpOgor
ICAgICAgICAgICAgICAgIGZyYWN0aW9uID0gdy5ncm91cCgiZnJhY3Rpb24iKSAgIyB0eXBlOiBP
cHRpb25hbFtzdHJdCisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSB3Lmdyb3VwKCJleHBvbmVu
dDEiKSAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCisgICAgICAgICAgICAgICAgaWYgZXhwb25lbnQg
aXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSB3Lmdyb3VwKCJleHBvbmVu
dDIiKQorICAgICAgICAgICAgICAgIGlmIGZyYWN0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgICAgIHByZWNpc2lvbiA9IDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICBwcmVjaXNpb24gPSBsZW4oZnJhY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgZXhw
b25lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiAtPSBpbnQo
ZXhwb25lbnQpCisgICAgICAgICAgICAgICAgaWYgZmxvYXQody5ncm91cCgpKSA9PSBhcHByb3go
ZmxvYXQoZy5ncm91cCgpKSwgYWJzPTEwICoqIC1wcmVjaXNpb24pOgorICAgICAgICAgICAgICAg
ICAgICAjIFRoZXkncmUgY2xvc2UgZW5vdWdoLiBSZXBsYWNlIHRoZSB0ZXh0IHdlIGFjdHVhbGx5
CisgICAgICAgICAgICAgICAgICAgICMgZ290IHdpdGggdGhlIHRleHQgd2Ugd2FudCwgc28gdGhh
dCBpdCB3aWxsIG1hdGNoIHdoZW4gd2UKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGUg
c3RyaW5nIGxpdGVyYWxseS4KKyAgICAgICAgICAgICAgICAgICAgZ290ID0gKAorICAgICAgICAg
ICAgICAgICAgICAgICAgZ290WzogZy5zdGFydCgpICsgb2Zmc2V0XSArIHcuZ3JvdXAoKSArIGdv
dFtnLmVuZCgpICsgb2Zmc2V0IDpdCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0ICs9IHcuZW5kKCkgLSB3LnN0YXJ0KCkgLSAoZy5lbmQoKSAtIGcuc3Rh
cnQoKSkKKyAgICAgICAgICAgIHJldHVybiBnb3QKKworICAgIHJldHVybiBMaXRlcmFsc091dHB1
dENoZWNrZXIKIAotICAgICAgICAgICAgICAgIGRlZiByZW1vdmVfcHJlZml4ZXMocmVnZXgsIHR4
dCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZS5zdWIocmVnZXgsIHIiXDFcMiIsIHR4
dCkKIAotICAgICAgICAgICAgICAgIGlmIGFsbG93X3VuaWNvZGU6Ci0gICAgICAgICAgICAgICAg
ICAgIHdhbnQgPSByZW1vdmVfcHJlZml4ZXMoc2VsZi5fdW5pY29kZV9saXRlcmFsX3JlLCB3YW50
KQotICAgICAgICAgICAgICAgICAgICBnb3QgPSByZW1vdmVfcHJlZml4ZXMoc2VsZi5fdW5pY29k
ZV9saXRlcmFsX3JlLCBnb3QpCi0gICAgICAgICAgICAgICAgaWYgYWxsb3dfYnl0ZXM6Ci0gICAg
ICAgICAgICAgICAgICAgIHdhbnQgPSByZW1vdmVfcHJlZml4ZXMoc2VsZi5fYnl0ZXNfbGl0ZXJh
bF9yZSwgd2FudCkKLSAgICAgICAgICAgICAgICAgICAgZ290ID0gcmVtb3ZlX3ByZWZpeGVzKHNl
bGYuX2J5dGVzX2xpdGVyYWxfcmUsIGdvdCkKLSAgICAgICAgICAgICAgICByZXMgPSBkb2N0ZXN0
Lk91dHB1dENoZWNrZXIuY2hlY2tfb3V0cHV0KHNlbGYsIHdhbnQsIGdvdCwgb3B0aW9uZmxhZ3Mp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcworZGVmIF9nZXRfY2hlY2tlcigpIC0+ICJkb2N0
ZXN0Lk91dHB1dENoZWNrZXIiOgorICAgICIiIlJldHVybiBhIGRvY3Rlc3QuT3V0cHV0Q2hlY2tl
ciBzdWJjbGFzcyB0aGF0IHN1cHBvcnRzIHNvbWUKKyAgICBhZGRpdGlvbmFsIG9wdGlvbnM6CiAK
LSAgICBfZ2V0X2NoZWNrZXIuTGl0ZXJhbHNPdXRwdXRDaGVja2VyID0gTGl0ZXJhbHNPdXRwdXRD
aGVja2VyCi0gICAgcmV0dXJuIF9nZXRfY2hlY2tlci5MaXRlcmFsc091dHB1dENoZWNrZXIoKQor
ICAgICogQUxMT1dfVU5JQ09ERSBhbmQgQUxMT1dfQllURVMgb3B0aW9ucyB0byBpZ25vcmUgdScn
IGFuZCBiJycKKyAgICAgIHByZWZpeGVzIChyZXNwZWN0aXZlbHkpIGluIHN0cmluZyBsaXRlcmFs
cy4gVXNlZnVsIHdoZW4gdGhlIHNhbWUKKyAgICAgIGRvY3Rlc3Qgc2hvdWxkIHJ1biBpbiBQeXRo
b24gMiBhbmQgUHl0aG9uIDMuCiAKKyAgICAqIE5VTUJFUiB0byBpZ25vcmUgZmxvYXRpbmctcG9p
bnQgZGlmZmVyZW5jZXMgc21hbGxlciB0aGFuIHRoZQorICAgICAgcHJlY2lzaW9uIG9mIHRoZSBs
aXRlcmFsIG51bWJlciBpbiB0aGUgZG9jdGVzdC4KIAotZGVmIF9nZXRfYWxsb3dfdW5pY29kZV9m
bGFnKCk6Ci0gICAgIiIiCi0gICAgUmVnaXN0ZXJzIGFuZCByZXR1cm5zIHRoZSBBTExPV19VTklD
T0RFIGZsYWcuCisgICAgQW4gaW5uZXIgY2xhc3MgaXMgdXNlZCB0byBhdm9pZCBpbXBvcnRpbmcg
ImRvY3Rlc3QiIGF0IHRoZSBtb2R1bGUKKyAgICBsZXZlbC4KICAgICAiIiIKKyAgICBnbG9iYWwg
Q0hFQ0tFUl9DTEFTUworICAgIGlmIENIRUNLRVJfQ0xBU1MgaXMgTm9uZToKKyAgICAgICAgQ0hF
Q0tFUl9DTEFTUyA9IF9pbml0X2NoZWNrZXJfY2xhc3MoKQorICAgIHJldHVybiBDSEVDS0VSX0NM
QVNTKCkKKworCitkZWYgX2dldF9hbGxvd191bmljb2RlX2ZsYWcoKSAtPiBpbnQ6CisgICAgIiIi
UmVnaXN0ZXIgYW5kIHJldHVybiB0aGUgQUxMT1dfVU5JQ09ERSBmbGFnLiIiIgogICAgIGltcG9y
dCBkb2N0ZXN0CiAKICAgICByZXR1cm4gZG9jdGVzdC5yZWdpc3Rlcl9vcHRpb25mbGFnKCJBTExP
V19VTklDT0RFIikKIAogCi1kZWYgX2dldF9hbGxvd19ieXRlc19mbGFnKCk6Ci0gICAgIiIiCi0g
ICAgUmVnaXN0ZXJzIGFuZCByZXR1cm5zIHRoZSBBTExPV19CWVRFUyBmbGFnLgotICAgICIiIgor
ZGVmIF9nZXRfYWxsb3dfYnl0ZXNfZmxhZygpIC0+IGludDoKKyAgICAiIiJSZWdpc3RlciBhbmQg
cmV0dXJuIHRoZSBBTExPV19CWVRFUyBmbGFnLiIiIgogICAgIGltcG9ydCBkb2N0ZXN0CiAKICAg
ICByZXR1cm4gZG9jdGVzdC5yZWdpc3Rlcl9vcHRpb25mbGFnKCJBTExPV19CWVRFUyIpCiAKIAot
ZGVmIF9nZXRfcmVwb3J0X2Nob2ljZShrZXkpOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24g
cmV0dXJucyB0aGUgYWN0dWFsIGBkb2N0ZXN0YCBtb2R1bGUgZmxhZyB2YWx1ZSwgd2Ugd2FudCB0
byBkbyBpdCBhcyBsYXRlIGFzIHBvc3NpYmxlIHRvIGF2b2lkCi0gICAgaW1wb3J0aW5nIGBkb2N0
ZXN0YCBhbmQgYWxsIGl0cyBkZXBlbmRlbmNpZXMgd2hlbiBwYXJzaW5nIG9wdGlvbnMsIGFzIGl0
IGFkZHMgb3ZlcmhlYWQgYW5kIGJyZWFrcyB0ZXN0cy4KK2RlZiBfZ2V0X251bWJlcl9mbGFnKCkg
LT4gaW50OgorICAgICIiIlJlZ2lzdGVyIGFuZCByZXR1cm4gdGhlIE5VTUJFUiBmbGFnLiIiIgor
ICAgIGltcG9ydCBkb2N0ZXN0CisKKyAgICByZXR1cm4gZG9jdGVzdC5yZWdpc3Rlcl9vcHRpb25m
bGFnKCJOVU1CRVIiKQorCisKK2RlZiBfZ2V0X3JlcG9ydF9jaG9pY2Uoa2V5OiBzdHIpIC0+IGlu
dDoKKyAgICAiIiJSZXR1cm4gdGhlIGFjdHVhbCBgZG9jdGVzdGAgbW9kdWxlIGZsYWcgdmFsdWUu
CisKKyAgICBXZSB3YW50IHRvIGRvIGl0IGFzIGxhdGUgYXMgcG9zc2libGUgdG8gYXZvaWQgaW1w
b3J0aW5nIGBkb2N0ZXN0YCBhbmQgYWxsCisgICAgaXRzIGRlcGVuZGVuY2llcyB3aGVuIHBhcnNp
bmcgb3B0aW9ucywgYXMgaXQgYWRkcyBvdmVyaGVhZCBhbmQgYnJlYWtzIHRlc3RzLgogICAgICIi
IgogICAgIGltcG9ydCBkb2N0ZXN0CiAKQEAgLTQ4MCw0MSArNzE0LDExIEBAIGRlZiBfZ2V0X3Jl
cG9ydF9jaG9pY2Uoa2V5KToKICAgICAgICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX05ESUZGOiBk
b2N0ZXN0LlJFUE9SVF9ORElGRiwKICAgICAgICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX09OTFlf
RklSU1RfRkFJTFVSRTogZG9jdGVzdC5SRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFLAogICAgICAg
ICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfTk9ORTogMCwKLSAgICB9WwotICAgICAgICBrZXkKLSAg
ICBdCi0KLQotZGVmIF9maXhfc3Bvb2ZfcHl0aG9uMihydW5uZXIsIGVuY29kaW5nKToKLSAgICAi
IiIKLSAgICBJbnN0YWxscyBhICJTcG9vZk91dCIgaW50byB0aGUgZ2l2ZW4gRGVidWdSdW5uZXIg
c28gaXQgcHJvcGVybHkgZGVhbHMgd2l0aCB1bmljb2RlIG91dHB1dC4gVGhpcwotICAgIHNob3Vs
ZCBwYXRjaCBvbmx5IGRvY3Rlc3RzIGZvciB0ZXh0IGZpbGVzIGJlY2F1c2UgdGhleSBkb24ndCBo
YXZlIGEgd2F5IHRvIGRlY2xhcmUgdGhlaXIKLSAgICBlbmNvZGluZy4gRG9jdGVzdHMgaW4gZG9j
c3RyaW5ncyBmcm9tIFB5dGhvbiBtb2R1bGVzIGRvbid0IGhhdmUgdGhlIHNhbWUgcHJvYmxlbSBn
aXZlbiB0aGF0Ci0gICAgUHl0aG9uIGFscmVhZHkgZGVjb2RlZCB0aGUgc3RyaW5ncy4KLQotICAg
IFRoaXMgZml4ZXMgdGhlIHByb2JsZW0gcmVsYXRlZCBpbiBpc3N1ZSAjMjQzNC4KLSAgICAiIiIK
LSAgICBmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfUFkyCi0KLSAgICBpZiBub3QgX1BZMjoK
LSAgICAgICAgcmV0dXJuCi0KLSAgICBmcm9tIGRvY3Rlc3QgaW1wb3J0IF9TcG9vZk91dAotCi0g
ICAgY2xhc3MgVW5pY29kZVNwb29mKF9TcG9vZk91dCk6Ci0KLSAgICAgICAgZGVmIGdldHZhbHVl
KHNlbGYpOgotICAgICAgICAgICAgcmVzdWx0ID0gX1Nwb29mT3V0LmdldHZhbHVlKHNlbGYpCi0g
ICAgICAgICAgICBpZiBlbmNvZGluZyBhbmQgaXNpbnN0YW5jZShyZXN1bHQsIGJ5dGVzKToKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZGVjb2RlKGVuY29kaW5nKQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdAotCi0gICAgcnVubmVyLl9mYWtlb3V0ID0gVW5pY29kZVNwb29mKCkK
KyAgICB9W2tleV0KIAogCiBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQotZGVmIGRv
Y3Rlc3RfbmFtZXNwYWNlKCk6Ci0gICAgIiIiCi0gICAgRml4dHVyZSB0aGF0IHJldHVybnMgYSA6
cHk6Y2xhc3M6YGRpY3RgIHRoYXQgd2lsbCBiZSBpbmplY3RlZCBpbnRvIHRoZSBuYW1lc3BhY2Ug
b2YgZG9jdGVzdHMuCi0gICAgIiIiCitkZWYgZG9jdGVzdF9uYW1lc3BhY2UoKSAtPiBEaWN0W3N0
ciwgQW55XToKKyAgICAiIiJGaXh0dXJlIHRoYXQgcmV0dXJucyBhIDpweTpjbGFzczpgZGljdGAg
dGhhdCB3aWxsIGJlIGluamVjdGVkIGludG8gdGhlCisgICAgbmFtZXNwYWNlIG9mIGRvY3Rlc3Rz
LiIiIgogICAgIHJldHVybiBkaWN0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L2ZhdWx0aGFuZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZhdWx0aGFuZGxl
ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwY2MwNDMwYzQ5
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZhdWx0aGFuZGxl
ci5weQpAQCAtMCwwICsxLDExMSBAQAoraW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
K2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBUZXh0SU8K
KworaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9t
IF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0ZXN0Lm5v
ZGVzIGltcG9ydCBJdGVtCitmcm9tIF9weXRlc3Quc3RvcmUgaW1wb3J0IFN0b3JlS2V5CisKKwor
ZmF1bHRfaGFuZGxlcl9zdGRlcnJfa2V5ID0gU3RvcmVLZXlbVGV4dElPXSgpCisKKworZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CisgICAgaGVscCA9ICgKKyAg
ICAgICAgIkR1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpZiBhIHRlc3QgdGFrZXMg
IgorICAgICAgICAibW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kcyB0byBmaW5pc2guIgorICAgICkK
KyAgICBwYXJzZXIuYWRkaW5pKCJmYXVsdGhhbmRsZXJfdGltZW91dCIsIGhlbHAsIGRlZmF1bHQ9
MC4wKQorCisKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgor
ICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKworICAgIGlmIG5vdCBmYXVsdGhhbmRsZXIuaXNfZW5h
YmxlZCgpOgorICAgICAgICAjIGZhdWx0aGhhbmRsZXIgaXMgbm90IGVuYWJsZWQsIHNvIGluc3Rh
bGwgcGx1Z2luIHRoYXQgZG9lcyB0aGUgYWN0dWFsIHdvcmsKKyAgICAgICAgIyBvZiBlbmFibGlu
ZyBmYXVsdGhhbmRsZXIgYmVmb3JlIGVhY2ggdGVzdCBleGVjdXRlcy4KKyAgICAgICAgY29uZmln
LnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoRmF1bHRIYW5kbGVySG9va3MoKSwgImZhdWx0aGFuZGxl
ci1ob29rcyIpCisgICAgZWxzZToKKyAgICAgICAgIyBEbyBub3QgaGFuZGxlIGR1bXBpbmcgdG8g
c3RkZXJyIGlmIGZhdWx0aGFuZGxlciBpcyBhbHJlYWR5IGVuYWJsZWQsIHNvIHdhcm4KKyAgICAg
ICAgIyB1c2VycyB0aGF0IHRoZSBvcHRpb24gaXMgYmVpbmcgaWdub3JlZC4KKyAgICAgICAgdGlt
ZW91dCA9IEZhdWx0SGFuZGxlckhvb2tzLmdldF90aW1lb3V0X2NvbmZpZ192YWx1ZShjb25maWcp
CisgICAgICAgIGlmIHRpbWVvdXQgPiAwOgorICAgICAgICAgICAgY29uZmlnLmlzc3VlX2NvbmZp
Z190aW1lX3dhcm5pbmcoCisgICAgICAgICAgICAgICAgcHl0ZXN0LlB5dGVzdENvbmZpZ1dhcm5p
bmcoCisgICAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIgbW9kdWxlIGVuYWJsZWQgYmVm
b3JlIHB5dGVzdCBjb25maWd1cmF0aW9uIHN0ZXAsICIKKyAgICAgICAgICAgICAgICAgICAgIidm
YXVsdGhhbmRsZXJfdGltZW91dCcgb3B0aW9uIGlnbm9yZWQiCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsCisgICAgICAgICAgICApCisKKworY2xhc3Mg
RmF1bHRIYW5kbGVySG9va3M6CisgICAgIiIiSW1wbGVtZW50cyBob29rcyB0aGF0IHdpbGwgYWN0
dWFsbHkgaW5zdGFsbCBmYXVsdCBoYW5kbGVyIGJlZm9yZSB0ZXN0cyBleGVjdXRlLAorICAgIGFz
IHdlbGwgYXMgY29ycmVjdGx5IGhhbmRsZSBwZGIgYW5kIGludGVybmFsIGVycm9ycy4iIiIKKwor
ICAgIGRlZiBweXRlc3RfY29uZmlndXJlKHNlbGYsIGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgor
ICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisKKyAgICAgICAgc3RkZXJyX2ZkX2NvcHkgPSBv
cy5kdXAoc2VsZi5fZ2V0X3N0ZGVycl9maWxlbm8oKSkKKyAgICAgICAgY29uZmlnLl9zdG9yZVtm
YXVsdF9oYW5kbGVyX3N0ZGVycl9rZXldID0gb3BlbihzdGRlcnJfZmRfY29weSwgInciKQorICAg
ICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGZpbGU9Y29uZmlnLl9zdG9yZVtmYXVsdF9oYW5kbGVy
X3N0ZGVycl9rZXldKQorCisgICAgZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShzZWxmLCBjb25maWc6
IENvbmZpZykgLT4gTm9uZToKKyAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorCisgICAgICAg
IGZhdWx0aGFuZGxlci5kaXNhYmxlKCkKKyAgICAgICAgIyBjbG9zZSBvdXIgZHVwIGZpbGUgaW5z
dGFsbGVkIGR1cmluZyBweXRlc3RfY29uZmlndXJlCisgICAgICAgICMgcmUtZW5hYmxlIHRoZSBm
YXVsdGhhbmRsZXIsIGF0dGFjaGluZyBpdCB0byB0aGUgZGVmYXVsdCBzeXMuc3RkZXJyCisgICAg
ICAgICMgc28gd2UgY2FuIHNlZSBjcmFzaGVzIGFmdGVyIHB5dGVzdCBoYXMgZmluaXNoZWQsIHVz
dWFsbHkgZHVyaW5nCisgICAgICAgICMgZ2FyYmFnZSBjb2xsZWN0aW9uIGR1cmluZyBpbnRlcnBy
ZXRlciBzaHV0ZG93bgorICAgICAgICBjb25maWcuX3N0b3JlW2ZhdWx0X2hhbmRsZXJfc3RkZXJy
X2tleV0uY2xvc2UoKQorICAgICAgICBkZWwgY29uZmlnLl9zdG9yZVtmYXVsdF9oYW5kbGVyX3N0
ZGVycl9rZXldCisgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoZmlsZT1zZWxmLl9nZXRfc3Rk
ZXJyX2ZpbGVubygpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZ2V0X3N0ZGVycl9m
aWxlbm8oKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHN5cy5zdGRlcnIuZmls
ZW5vKCkKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgaW8uVW5zdXBwb3J0ZWRPcGVy
YXRpb24pOgorICAgICAgICAgICAgIyBweXRlc3QteGRpc3QgbW9ua2V5cGF0Y2hlcyBzeXMuc3Rk
ZXJyIHdpdGggYW4gb2JqZWN0IHRoYXQgaXMgbm90IGFuIGFjdHVhbCBmaWxlLgorICAgICAgICAg
ICAgIyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvZmF1bHRoYW5kbGVyLmh0bWwj
aXNzdWUtd2l0aC1maWxlLWRlc2NyaXB0b3JzCisgICAgICAgICAgICAjIFRoaXMgaXMgcG90ZW50
aWFsbHkgZGFuZ2Vyb3VzLCBidXQgdGhlIGJlc3Qgd2UgY2FuIGRvLgorICAgICAgICAgICAgcmV0
dXJuIHN5cy5fX3N0ZGVycl9fLmZpbGVubygpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm
IGdldF90aW1lb3V0X2NvbmZpZ192YWx1ZShjb25maWcpOgorICAgICAgICByZXR1cm4gZmxvYXQo
Y29uZmlnLmdldGluaSgiZmF1bHRoYW5kbGVyX3RpbWVvdXQiKSBvciAwLjApCisKKyAgICBAcHl0
ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWxhc3Q9VHJ1ZSkKKyAgICBkZWYgcHl0
ZXN0X3J1bnRlc3RfcHJvdG9jb2woc2VsZiwgaXRlbTogSXRlbSkgLT4gR2VuZXJhdG9yW05vbmUs
IE5vbmUsIE5vbmVdOgorICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXRfdGltZW91dF9jb25maWdf
dmFsdWUoaXRlbS5jb25maWcpCisgICAgICAgIHN0ZGVyciA9IGl0ZW0uY29uZmlnLl9zdG9yZVtm
YXVsdF9oYW5kbGVyX3N0ZGVycl9rZXldCisgICAgICAgIGlmIHRpbWVvdXQgPiAwIGFuZCBzdGRl
cnIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisKKyAgICAg
ICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCBmaWxlPXN0
ZGVycikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAg
ICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJh
Y2ViYWNrX2xhdGVyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICBA
cHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCisgICAgZGVmIHB5dGVzdF9lbnRlcl9wZGIo
c2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiQ2FuY2VsIGFueSB0cmFjZWJhY2sgZHVtcGluZyBk
dWUgdG8gdGltZW91dCBiZWZvcmUgZW50ZXJpbmcgcGRiLiIiIgorICAgICAgICBpbXBvcnQgZmF1
bHRoYW5kbGVyCisKKyAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19s
YXRlcigpCisKKyAgICBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCisgICAgZGVmIHB5
dGVzdF9leGNlcHRpb25faW50ZXJhY3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiQ2FuY2Vs
IGFueSB0cmFjZWJhY2sgZHVtcGluZyBkdWUgdG8gYW4gaW50ZXJhY3RpdmUgZXhjZXB0aW9uIGJl
aW5nCisgICAgICAgIHJhaXNlZC4iIiIKKyAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorCisg
ICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZml4dHVyZXMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9maXh0dXJlcy5weQppbmRleCA0OTVlNmI5YjMzMmEuLmY1MjZmNDg0YjI5MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZml4dHVyZXMucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvZml4dHVyZXMucHkKQEAgLTEsNTAgKzEsMTE0IEBACi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCi0KIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbnNwZWN0CitpbXBvcnQgb3MKIGltcG9y
dCBzeXMKIGltcG9ydCB3YXJuaW5ncwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERp
Y3QsIGRlcXVlLCBkZWZhdWx0ZGljdAotZnJvbSBtb3JlX2l0ZXJ0b29scyBpbXBvcnQgZmxhdHRl
bgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKK2Zyb20gY29sbGVjdGlvbnMg
aW1wb3J0IGRlcXVlCitmcm9tIHR5cGVzIGltcG9ydCBUcmFjZWJhY2tUeXBlCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGlt
cG9ydCBjYXN0Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IEdl
bmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zyb20gdHlwaW5nIGltcG9ydCBJ
dGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQg
TGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgU2Vx
dWVuY2UKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXQKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQor
ZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogCiBp
bXBvcnQgYXR0cgogaW1wb3J0IHB5Ci1mcm9tIHB5Ll9jb2RlLmNvZGUgaW1wb3J0IEZvcm1hdHRl
ZEV4Y2luZm8KIAogaW1wb3J0IF9weXRlc3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKK2Zy
b20gX3B5dGVzdC5fY29kZSBpbXBvcnQgZ2V0ZnNsaW5lbm8KK2Zyb20gX3B5dGVzdC5fY29kZS5j
b2RlIGltcG9ydCBGb3JtYXR0ZWRFeGNpbmZvCiBmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBv
cnQgVGVybWluYWxSZXByCi1mcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCAoCi0gICAgTk9UU0VU
LAotICAgIGV4Y19jbGVhciwKLSAgICBfZm9ybWF0X2FyZ3MsCi0gICAgZ2V0ZnNsaW5lbm8sCi0g
ICAgZ2V0X3JlYWxfZnVuYywKLSAgICBpc19nZW5lcmF0b3IsCi0gICAgaXNjbGFzcywKLSAgICBn
ZXRpbWZ1bmMsCi0gICAgZ2V0bG9jYXRpb24sCi0gICAgZ2V0ZnVuY2FyZ25hbWVzLAotICAgIHNh
ZmVfZ2V0YXR0ciwKLSAgICBGdW5jYXJnbmFtZXNDb21wYXRBdHRyLAotKQotZnJvbSBfcHl0ZXN0
Lm91dGNvbWVzIGltcG9ydCBmYWlsLCBURVNUX09VVENPTUUKLQotRklYVFVSRV9NU0cgPSAnZml4
dHVyZXMgY2Fubm90IGhhdmUgInB5dGVzdF9mdW5jYXJnX18iIHByZWZpeCBhbmQgYmUgZGVjb3Jh
dGVkIHdpdGggQHB5dGVzdC5maXh0dXJlOlxue30nCitmcm9tIF9weXRlc3QuX2lvIGltcG9ydCBU
ZXJtaW5hbFdyaXRlcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX2Zvcm1hdF9hcmdzCitm
cm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfUHl0ZXN0V3JhcHBlcgorZnJvbSBfcHl0ZXN0LmNv
bXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldF9yZWFsX2Z1
bmMKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldF9yZWFsX21ldGhvZAorZnJvbSBfcHl0
ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0ZnVuY2FyZ25hbWVzCitmcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBnZXRpbWZ1bmMKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldGxvY2F0aW9uCitm
cm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBpc19nZW5lcmF0b3IKK2Zyb20gX3B5dGVzdC5jb21w
YXQgaW1wb3J0IE5PVFNFVAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgb3JkZXJfcHJlc2Vy
dmluZ19kaWN0Citmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBvdmVybG9hZAorZnJvbSBfcHl0
ZXN0LmNvbXBhdCBpbXBvcnQgc2FmZV9nZXRhdHRyCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9y
dCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBfUGx1Z2d5UGx1Z2lu
Citmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcu
YXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQg
RklMTEZVTkNBUkdTCitmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgTWFyaworZnJvbSBfcHl0ZXN0
Lm1hcmsgaW1wb3J0IFBhcmFtZXRlclNldAorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBm
YWlsCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IFRFU1RfT1VUQ09NRQorZnJvbSBfcHl0
ZXN0LnBhdGhsaWIgaW1wb3J0IGFic29sdXRlcGF0aAorCitpZiBUWVBFX0NIRUNLSU5HOgorICAg
IGZyb20gdHlwaW5nIGltcG9ydCBEZXF1ZQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBOb1JldHVy
bgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCisgICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9u
cyBpbXBvcnQgTGl0ZXJhbAorCisgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBub2RlcworICAgIGZy
b20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCisgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBp
bXBvcnQgQ2FsbFNwZWMyCisgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgRnVuY3Rpb24K
KyAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBNZXRhZnVuYworCisgICAgX1Njb3BlID0g
TGl0ZXJhbFsic2Vzc2lvbiIsICJwYWNrYWdlIiwgIm1vZHVsZSIsICJjbGFzcyIsICJmdW5jdGlv
biJdCisKKworIyBUaGUgdmFsdWUgb2YgdGhlIGZpeHR1cmUgLS0gcmV0dXJuL3lpZWxkIG9mIHRo
ZSBmaXh0dXJlIGZ1bmN0aW9uICh0eXBlIHZhcmlhYmxlKS4KK19GaXh0dXJlVmFsdWUgPSBUeXBl
VmFyKCJfRml4dHVyZVZhbHVlIikKKyMgVGhlIHR5cGUgb2YgdGhlIGZpeHR1cmUgZnVuY3Rpb24g
KHR5cGUgdmFyaWFibGUpLgorX0ZpeHR1cmVGdW5jdGlvbiA9IFR5cGVWYXIoIl9GaXh0dXJlRnVu
Y3Rpb24iLCBib3VuZD1DYWxsYWJsZVsuLi4sIG9iamVjdF0pCisjIFRoZSB0eXBlIG9mIGEgZml4
dHVyZSBmdW5jdGlvbiAodHlwZSBhbGlhcyBnZW5lcmljIGluIGZpeHR1cmUgdmFsdWUpLgorX0Zp
eHR1cmVGdW5jID0gVW5pb25bCisgICAgQ2FsbGFibGVbLi4uLCBfRml4dHVyZVZhbHVlXSwgQ2Fs
bGFibGVbLi4uLCBHZW5lcmF0b3JbX0ZpeHR1cmVWYWx1ZSwgTm9uZSwgTm9uZV1dCitdCisjIFRo
ZSB0eXBlIG9mIEZpeHR1cmVEZWYuY2FjaGVkX3Jlc3VsdCAodHlwZSBhbGlhcyBnZW5lcmljIGlu
IGZpeHR1cmUgdmFsdWUpLgorX0ZpeHR1cmVDYWNoZWRSZXN1bHQgPSBVbmlvblsKKyAgICBUdXBs
ZVsKKyAgICAgICAgIyBUaGUgcmVzdWx0LgorICAgICAgICBfRml4dHVyZVZhbHVlLAorICAgICAg
ICAjIENhY2hlIGtleS4KKyAgICAgICAgb2JqZWN0LAorICAgICAgICBOb25lLAorICAgIF0sCisg
ICAgVHVwbGVbCisgICAgICAgIE5vbmUsCisgICAgICAgICMgQ2FjaGUga2V5LgorICAgICAgICBv
YmplY3QsCisgICAgICAgICMgRXhjIGluZm8gaWYgcmFpc2VkLgorICAgICAgICBUdXBsZVsiVHlw
ZVtCYXNlRXhjZXB0aW9uXSIsIEJhc2VFeGNlcHRpb24sIFRyYWNlYmFja1R5cGVdLAorICAgIF0s
CitdCiAKIAogQGF0dHIucyhmcm96ZW49VHJ1ZSkKLWNsYXNzIFBzZXVkb0ZpeHR1cmVEZWYob2Jq
ZWN0KToKLSAgICBjYWNoZWRfcmVzdWx0ID0gYXR0ci5pYigpCi0gICAgc2NvcGUgPSBhdHRyLmli
KCkKK2NsYXNzIFBzZXVkb0ZpeHR1cmVEZWYoR2VuZXJpY1tfRml4dHVyZVZhbHVlXSk6CisgICAg
Y2FjaGVkX3Jlc3VsdCA9IGF0dHIuaWIodHlwZT0iX0ZpeHR1cmVDYWNoZWRSZXN1bHRbX0ZpeHR1
cmVWYWx1ZV0iKQorICAgIHNjb3BlID0gYXR0ci5pYih0eXBlPSJfU2NvcGUiKQogCiAKLWRlZiBw
eXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb24pOgorZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vz
c2lvbjogIlNlc3Npb24iKSAtPiBOb25lOgogICAgIGltcG9ydCBfcHl0ZXN0LnB5dGhvbgogICAg
IGltcG9ydCBfcHl0ZXN0Lm5vZGVzCiAKICAgICBzY29wZW5hbWUyY2xhc3MudXBkYXRlKAogICAg
ICAgICB7CisgICAgICAgICAgICAicGFja2FnZSI6IF9weXRlc3QucHl0aG9uLlBhY2thZ2UsCiAg
ICAgICAgICAgICAiY2xhc3MiOiBfcHl0ZXN0LnB5dGhvbi5DbGFzcywKICAgICAgICAgICAgICJt
b2R1bGUiOiBfcHl0ZXN0LnB5dGhvbi5Nb2R1bGUsCiAgICAgICAgICAgICAiZnVuY3Rpb24iOiBf
cHl0ZXN0Lm5vZGVzLkl0ZW0sCkBAIC01NCwzMSArMTE4LDIyIEBAIGRlZiBweXRlc3Rfc2Vzc2lv
bnN0YXJ0KHNlc3Npb24pOgogICAgIHNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyID0gRml4dHVyZU1h
bmFnZXIoc2Vzc2lvbikKIAogCi1zY29wZW5hbWUyY2xhc3MgPSB7fQotCi0KLXNjb3BlMnByb3Bz
ID0gZGljdChzZXNzaW9uPSgpKQotc2NvcGUycHJvcHNbIm1vZHVsZSJdID0gKCJmc3BhdGgiLCAi
bW9kdWxlIikKLXNjb3BlMnByb3BzWyJjbGFzcyJdID0gc2NvcGUycHJvcHNbIm1vZHVsZSJdICsg
KCJjbHMiLCkKLXNjb3BlMnByb3BzWyJpbnN0YW5jZSJdID0gc2NvcGUycHJvcHNbImNsYXNzIl0g
KyAoImluc3RhbmNlIiwpCi1zY29wZTJwcm9wc1siZnVuY3Rpb24iXSA9IHNjb3BlMnByb3BzWyJp
bnN0YW5jZSJdICsgKCJmdW5jdGlvbiIsICJrZXl3b3JkcyIpCi0KLQotZGVmIHNjb3BlcHJvcGVy
dHkobmFtZT1Ob25lLCBkb2M9Tm9uZSk6CitzY29wZW5hbWUyY2xhc3MgPSB7fSAgIyB0eXBlOiBE
aWN0W3N0ciwgVHlwZVtub2Rlcy5Ob2RlXV0KIAotICAgIGRlZiBkZWNvcmF0ZXNjb3BlKGZ1bmMp
OgotICAgICAgICBzY29wZW5hbWUgPSBuYW1lIG9yIGZ1bmMuX19uYW1lX18KIAotICAgICAgICBk
ZWYgcHJvdmlkZShzZWxmKToKLSAgICAgICAgICAgIGlmIGZ1bmMuX19uYW1lX18gaW4gc2NvcGUy
cHJvcHNbc2VsZi5zY29wZV06Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoc2VsZikKLSAg
ICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAotICAgICAgICAgICAgICAgICIlcyBub3Qg
YXZhaWxhYmxlIGluICVzLXNjb3BlZCBjb250ZXh0IiAlIChzY29wZW5hbWUsIHNlbGYuc2NvcGUp
Ci0gICAgICAgICAgICApCi0KLSAgICAgICAgcmV0dXJuIHByb3BlcnR5KHByb3ZpZGUsIE5vbmUs
IE5vbmUsIGZ1bmMuX19kb2NfXykKK2RlZiBnZXRfc2NvcGVfcGFja2FnZShub2RlLCBmaXh0dXJl
ZGVmOiAiRml4dHVyZURlZltvYmplY3RdIik6CisgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgcmV0
dXJuIGRlY29yYXRlc2NvcGUKKyAgICBjbHMgPSBweXRlc3QuUGFja2FnZQorICAgIGN1cnJlbnQg
PSBub2RlCisgICAgZml4dHVyZV9wYWNrYWdlX25hbWUgPSAie30ve30iLmZvcm1hdChmaXh0dXJl
ZGVmLmJhc2VpZCwgIl9faW5pdF9fLnB5IikKKyAgICB3aGlsZSBjdXJyZW50IGFuZCAoCisgICAg
ICAgIHR5cGUoY3VycmVudCkgaXMgbm90IGNscyBvciBmaXh0dXJlX3BhY2thZ2VfbmFtZSAhPSBj
dXJyZW50Lm5vZGVpZAorICAgICk6CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudAor
ICAgIGlmIGN1cnJlbnQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIG5vZGUuc2Vzc2lvbgorICAg
IHJldHVybiBjdXJyZW50CiAKIAogZGVmIGdldF9zY29wZV9ub2RlKG5vZGUsIHNjb3BlKToKQEAg
LTg4LDE4ICsxNDMsMjEgQEAgZGVmIGdldF9zY29wZV9ub2RlKG5vZGUsIHNjb3BlKToKICAgICBy
ZXR1cm4gbm9kZS5nZXRwYXJlbnQoY2xzKQogCiAKLWRlZiBhZGRfZnVuY2FyZ19wc2V1ZG9fZml4
dHVyZV9kZWYoY29sbGVjdG9yLCBtZXRhZnVuYywgZml4dHVyZW1hbmFnZXIpOgotICAgICMgdGhp
cyBmdW5jdGlvbiB3aWxsIHRyYW5zZm9ybSBhbGwgY29sbGVjdGVkIGNhbGxzIHRvIGEgZnVuY3Rp
b25zCitkZWYgYWRkX2Z1bmNhcmdfcHNldWRvX2ZpeHR1cmVfZGVmKAorICAgIGNvbGxlY3Rvciwg
bWV0YWZ1bmM6ICJNZXRhZnVuYyIsIGZpeHR1cmVtYW5hZ2VyOiAiRml4dHVyZU1hbmFnZXIiCisp
IC0+IE5vbmU6CisgICAgIyBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJhbnNmb3JtIGFsbCBjb2xsZWN0
ZWQgY2FsbHMgdG8gZnVuY3Rpb25zCiAgICAgIyBpZiB0aGV5IHVzZSBkaXJlY3QgZnVuY2FyZ3Mg
KGkuZS4gZGlyZWN0IHBhcmFtZXRyaXphdGlvbikKICAgICAjIGJlY2F1c2Ugd2Ugd2FudCBsYXRl
ciB0ZXN0IGV4ZWN1dGlvbiB0byBiZSBhYmxlIHRvIHJlbHkgb24KICAgICAjIGFuIGV4aXN0aW5n
IEZpeHR1cmVEZWYgc3RydWN0dXJlIGZvciBhbGwgYXJndW1lbnRzLgogICAgICMgWFhYIHdlIGNh
biBwcm9iYWJseSBhdm9pZCB0aGlzIGFsZ29yaXRobSAgaWYgd2UgbW9kaWZ5IENhbGxTcGVjMgog
ICAgICMgdG8gZGlyZWN0bHkgY2FyZSBmb3IgY3JlYXRpbmcgdGhlIGZpeHR1cmVkZWZzIHdpdGhp
biBpdHMgbWV0aG9kcy4KICAgICBpZiBub3QgbWV0YWZ1bmMuX2NhbGxzWzBdLmZ1bmNhcmdzOgot
ICAgICAgICByZXR1cm4gICMgdGhpcyBmdW5jdGlvbiBjYWxsIGRvZXMgbm90IGhhdmUgZGlyZWN0
IHBhcmFtZXRyaXphdGlvbgotICAgICMgY29sbGVjdCBmdW5jYXJncyBvZiBhbGwgY2FsbHNwZWNz
IGludG8gYSBsaXN0IG9mIHZhbHVlcwotICAgIGFyZzJwYXJhbXMgPSB7fQotICAgIGFyZzJzY29w
ZSA9IHt9CisgICAgICAgICMgVGhpcyBmdW5jdGlvbiBjYWxsIGRvZXMgbm90IGhhdmUgZGlyZWN0
IHBhcmFtZXRyaXphdGlvbi4KKyAgICAgICAgcmV0dXJuCisgICAgIyBDb2xsZWN0IGZ1bmNhcmdz
IG9mIGFsbCBjYWxsc3BlY3MgaW50byBhIGxpc3Qgb2YgdmFsdWVzLgorICAgIGFyZzJwYXJhbXMg
PSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgTGlzdFtvYmplY3RdXQorICAgIGFyZzJzY29wZSA9IHt9
ICAjIHR5cGU6IERpY3Rbc3RyLCBfU2NvcGVdCiAgICAgZm9yIGNhbGxzcGVjIGluIG1ldGFmdW5j
Ll9jYWxsczoKICAgICAgICAgZm9yIGFyZ25hbWUsIGFyZ3ZhbHVlIGluIGNhbGxzcGVjLmZ1bmNh
cmdzLml0ZW1zKCk6CiAgICAgICAgICAgICBhc3NlcnQgYXJnbmFtZSBub3QgaW4gY2FsbHNwZWMu
cGFyYW1zCkBAIC0xMTIsMTEgKzE3MCwxMSBAQCBkZWYgYWRkX2Z1bmNhcmdfcHNldWRvX2ZpeHR1
cmVfZGVmKGNvbGxlY3RvciwgbWV0YWZ1bmMsIGZpeHR1cmVtYW5hZ2VyKToKICAgICAgICAgICAg
ICAgICBhcmcyc2NvcGVbYXJnbmFtZV0gPSBzY29wZXNbc2NvcGVudW1dCiAgICAgICAgIGNhbGxz
cGVjLmZ1bmNhcmdzLmNsZWFyKCkKIAotICAgICMgcmVnaXN0ZXIgYXJ0aWZpY2lhbCBGaXh0dXJl
RGVmJ3Mgc28gdGhhdCBsYXRlciBhdCB0ZXN0IGV4ZWN1dGlvbgorICAgICMgUmVnaXN0ZXIgYXJ0
aWZpY2lhbCBGaXh0dXJlRGVmJ3Mgc28gdGhhdCBsYXRlciBhdCB0ZXN0IGV4ZWN1dGlvbgogICAg
ICMgdGltZSB3ZSBjYW4gcmVseSBvbiBhIHByb3BlciBGaXh0dXJlRGVmIHRvIGV4aXN0IGZvciBm
aXh0dXJlIHNldHVwLgogICAgIGFyZzJmaXh0dXJlZGVmcyA9IG1ldGFmdW5jLl9hcmcyZml4dHVy
ZWRlZnMKICAgICBmb3IgYXJnbmFtZSwgdmFsdWVsaXN0IGluIGFyZzJwYXJhbXMuaXRlbXMoKToK
LSAgICAgICAgIyBpZiB3ZSBoYXZlIGEgc2NvcGUgdGhhdCBpcyBoaWdoZXIgdGhhbiBmdW5jdGlv
biB3ZSBuZWVkCisgICAgICAgICMgSWYgd2UgaGF2ZSBhIHNjb3BlIHRoYXQgaXMgaGlnaGVyIHRo
YW4gZnVuY3Rpb24sIHdlIG5lZWQKICAgICAgICAgIyB0byBtYWtlIHN1cmUgd2Ugb25seSBldmVy
IGNyZWF0ZSBhbiBhY2NvcmRpbmcgZml4dHVyZWRlZiBvbgogICAgICAgICAjIGEgcGVyLXNjb3Bl
IGJhc2lzLiBXZSB0aHVzIHN0b3JlIGFuZCBjYWNoZSB0aGUgZml4dHVyZWRlZiBvbiB0aGUKICAg
ICAgICAgIyBub2RlIHJlbGF0ZWQgdG8gdGhlIHNjb3BlLgpAQCAtMTI2LDQ2ICsxODQsNTQgQEAg
ZGVmIGFkZF9mdW5jYXJnX3BzZXVkb19maXh0dXJlX2RlZihjb2xsZWN0b3IsIG1ldGFmdW5jLCBm
aXh0dXJlbWFuYWdlcik6CiAgICAgICAgICAgICBub2RlID0gZ2V0X3Njb3BlX25vZGUoY29sbGVj
dG9yLCBzY29wZSkKICAgICAgICAgICAgIGlmIG5vZGUgaXMgTm9uZToKICAgICAgICAgICAgICAg
ICBhc3NlcnQgc2NvcGUgPT0gImNsYXNzIiBhbmQgaXNpbnN0YW5jZShjb2xsZWN0b3IsIF9weXRl
c3QucHl0aG9uLk1vZHVsZSkKLSAgICAgICAgICAgICAgICAjIHVzZSBtb2R1bGUtbGV2ZWwgY29s
bGVjdG9yIGZvciBjbGFzcy1zY29wZSAoZm9yIG5vdykKKyAgICAgICAgICAgICAgICAjIFVzZSBt
b2R1bGUtbGV2ZWwgY29sbGVjdG9yIGZvciBjbGFzcy1zY29wZSAoZm9yIG5vdykuCiAgICAgICAg
ICAgICAgICAgbm9kZSA9IGNvbGxlY3RvcgogICAgICAgICBpZiBub2RlIGFuZCBhcmduYW1lIGlu
IG5vZGUuX25hbWUycHNldWRvZml4dHVyZWRlZjoKICAgICAgICAgICAgIGFyZzJmaXh0dXJlZGVm
c1thcmduYW1lXSA9IFtub2RlLl9uYW1lMnBzZXVkb2ZpeHR1cmVkZWZbYXJnbmFtZV1dCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBmaXh0dXJlZGVmID0gRml4dHVyZURlZigKLSAgICAgICAg
ICAgICAgICBmaXh0dXJlbWFuYWdlciwKLSAgICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAg
ICAgICBhcmduYW1lLAotICAgICAgICAgICAgICAgIGdldF9kaXJlY3RfcGFyYW1fZml4dHVyZV9m
dW5jLAotICAgICAgICAgICAgICAgIGFyZzJzY29wZVthcmduYW1lXSwKLSAgICAgICAgICAgICAg
ICB2YWx1ZWxpc3QsCi0gICAgICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICAgICAgRmFs
c2UsCisgICAgICAgICAgICAgICAgZml4dHVyZW1hbmFnZXI9Zml4dHVyZW1hbmFnZXIsCisgICAg
ICAgICAgICAgICAgYmFzZWlkPSIiLAorICAgICAgICAgICAgICAgIGFyZ25hbWU9YXJnbmFtZSwK
KyAgICAgICAgICAgICAgICBmdW5jPWdldF9kaXJlY3RfcGFyYW1fZml4dHVyZV9mdW5jLAorICAg
ICAgICAgICAgICAgIHNjb3BlPWFyZzJzY29wZVthcmduYW1lXSwKKyAgICAgICAgICAgICAgICBw
YXJhbXM9dmFsdWVsaXN0LAorICAgICAgICAgICAgICAgIHVuaXR0ZXN0PUZhbHNlLAorICAgICAg
ICAgICAgICAgIGlkcz1Ob25lLAogICAgICAgICAgICAgKQogICAgICAgICAgICAgYXJnMmZpeHR1
cmVkZWZzW2FyZ25hbWVdID0gW2ZpeHR1cmVkZWZdCiAgICAgICAgICAgICBpZiBub2RlIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgICAgIG5vZGUuX25hbWUycHNldWRvZml4dHVyZWRlZlthcmdu
YW1lXSA9IGZpeHR1cmVkZWYKIAogCi1kZWYgZ2V0Zml4dHVyZW1hcmtlcihvYmopOgotICAgICIi
IiByZXR1cm4gZml4dHVyZW1hcmtlciBvciBOb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb3IgcmFp
c2VkCitkZWYgZ2V0Zml4dHVyZW1hcmtlcihvYmo6IG9iamVjdCkgLT4gT3B0aW9uYWxbIkZpeHR1
cmVGdW5jdGlvbk1hcmtlciJdOgorICAgICIiIlJldHVybiBmaXh0dXJlbWFya2VyIG9yIE5vbmUg
aWYgaXQgZG9lc24ndCBleGlzdCBvciByYWlzZWQKICAgICBleGNlcHRpb25zLiIiIgogICAgIHRy
eToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCAiX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiIs
IE5vbmUpCisgICAgICAgIGZpeHR1cmVtYXJrZXIgPSBnZXRhdHRyKAorICAgICAgICAgICAgb2Jq
LCAiX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiIsIE5vbmUKKyAgICAgICAgKSAgIyB0eXBlOiBPcHRp
b25hbFtGaXh0dXJlRnVuY3Rpb25NYXJrZXJdCiAgICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKICAg
ICAgICAgIyBzb21lIG9iamVjdHMgcmFpc2UgZXJyb3JzIGxpa2UgcmVxdWVzdCAoZnJvbSBmbGFz
ayBpbXBvcnQgcmVxdWVzdCkKICAgICAgICAgIyB3ZSBkb24ndCBleHBlY3QgdGhlbSB0byBiZSBm
aXh0dXJlIGZ1bmN0aW9ucwogICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBmaXh0dXJl
bWFya2VyCiAKIAotZGVmIGdldF9wYXJhbWV0cml6ZWRfZml4dHVyZV9rZXlzKGl0ZW0sIHNjb3Bl
bnVtKToKLSAgICAiIiIgcmV0dXJuIGxpc3Qgb2Yga2V5cyBmb3IgYWxsIHBhcmFtZXRyaXplZCBh
cmd1bWVudHMgd2hpY2ggbWF0Y2gKKyMgUGFyYW1ldHJpemVkIGZpeHR1cmUga2V5LCBoZWxwZXIg
YWxpYXMgZm9yIGNvZGUgYmVsb3cuCitfS2V5ID0gVHVwbGVbb2JqZWN0LCAuLi5dCisKKworZGVm
IGdldF9wYXJhbWV0cml6ZWRfZml4dHVyZV9rZXlzKGl0ZW06ICJub2Rlcy5JdGVtIiwgc2NvcGVu
dW06IGludCkgLT4gSXRlcmF0b3JbX0tleV06CisgICAgIiIiUmV0dXJuIGxpc3Qgb2Yga2V5cyBm
b3IgYWxsIHBhcmFtZXRyaXplZCBhcmd1bWVudHMgd2hpY2ggbWF0Y2gKICAgICB0aGUgc3BlY2lm
aWVkIHNjb3BlLiAiIiIKICAgICBhc3NlcnQgc2NvcGVudW0gPCBzY29wZW51bV9mdW5jdGlvbiAg
IyBmdW5jdGlvbgogICAgIHRyeToKLSAgICAgICAgY3MgPSBpdGVtLmNhbGxzcGVjCisgICAgICAg
IGNhbGxzcGVjID0gaXRlbS5jYWxsc3BlYyAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQog
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGVsc2U6CisgICAg
ICAgIGNzID0gY2FsbHNwZWMgICMgdHlwZTogQ2FsbFNwZWMyCiAgICAgICAgICMgY3MuaW5kaWNl
cy5pdGVtcygpIGlzIHJhbmRvbSBvcmRlciBvZiBhcmduYW1lcy4gIE5lZWQgdG8KICAgICAgICAg
IyBzb3J0IHRoaXMgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgdG8KICAgICAgICAgIyBnZXRfcGFy
YW1ldHJpemVkX2ZpeHR1cmVfa2V5cyB3aWxsIGJlIGRldGVybWluaXN0aWMuCkBAIC0xNzMsNjUg
KzIzOSw4OSBAQCBkZWYgZ2V0X3BhcmFtZXRyaXplZF9maXh0dXJlX2tleXMoaXRlbSwgc2NvcGVu
dW0pOgogICAgICAgICAgICAgaWYgY3MuX2FyZzJzY29wZW51bVthcmduYW1lXSAhPSBzY29wZW51
bToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgc2NvcGVudW0gPT0g
MDogICMgc2Vzc2lvbgotICAgICAgICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRl
eCkKLSAgICAgICAgICAgIGVsaWYgc2NvcGVudW0gPT0gMTogICMgbW9kdWxlCisgICAgICAgICAg
ICAgICAga2V5ID0gKGFyZ25hbWUsIHBhcmFtX2luZGV4KSAgIyB0eXBlOiBfS2V5CisgICAgICAg
ICAgICBlbGlmIHNjb3BlbnVtID09IDE6ICAjIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBrZXkg
PSAoYXJnbmFtZSwgcGFyYW1faW5kZXgsIGl0ZW0uZnNwYXRoLmRpcnBhdGgoKSkKKyAgICAgICAg
ICAgIGVsaWYgc2NvcGVudW0gPT0gMjogICMgbW9kdWxlCiAgICAgICAgICAgICAgICAga2V5ID0g
KGFyZ25hbWUsIHBhcmFtX2luZGV4LCBpdGVtLmZzcGF0aCkKLSAgICAgICAgICAgIGVsaWYgc2Nv
cGVudW0gPT0gMjogICMgY2xhc3MKLSAgICAgICAgICAgICAgICBrZXkgPSAoYXJnbmFtZSwgcGFy
YW1faW5kZXgsIGl0ZW0uZnNwYXRoLCBpdGVtLmNscykKKyAgICAgICAgICAgIGVsaWYgc2NvcGVu
dW0gPT0gMzogICMgY2xhc3MKKyAgICAgICAgICAgICAgICBpdGVtX2NscyA9IGl0ZW0uY2xzICAj
IHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgICAgICAgICAga2V5ID0gKGFyZ25h
bWUsIHBhcmFtX2luZGV4LCBpdGVtLmZzcGF0aCwgaXRlbV9jbHMpCiAgICAgICAgICAgICB5aWVs
ZCBrZXkKIAogCi0jIGFsZ29yaXRobSBmb3Igc29ydGluZyBvbiBhIHBlci1wYXJhbWV0cml6ZWQg
cmVzb3VyY2Ugc2V0dXAgYmFzaXMKLSMgaXQgaXMgY2FsbGVkIGZvciBzY29wZW51bT09MCAoc2Vz
c2lvbikgZmlyc3QgYW5kIHBlcmZvcm1zIHNvcnRpbmcKKyMgQWxnb3JpdGhtIGZvciBzb3J0aW5n
IG9uIGEgcGVyLXBhcmFtZXRyaXplZCByZXNvdXJjZSBzZXR1cCBiYXNpcy4KKyMgSXQgaXMgY2Fs
bGVkIGZvciBzY29wZW51bT09MCAoc2Vzc2lvbikgZmlyc3QgYW5kIHBlcmZvcm1zIHNvcnRpbmcK
ICMgZG93biB0byB0aGUgbG93ZXIgc2NvcGVzIHN1Y2ggYXMgdG8gbWluaW1pemUgbnVtYmVyIG9m
ICJoaWdoIHNjb3BlIgotIyBzZXR1cHMgYW5kIHRlYXJkb3ducworIyBzZXR1cHMgYW5kIHRlYXJk
b3ducy4KIAogCi1kZWYgcmVvcmRlcl9pdGVtcyhpdGVtcyk6Ci0gICAgYXJna2V5c19jYWNoZSA9
IHt9Ci0gICAgaXRlbXNfYnlfYXJna2V5ID0ge30KK2RlZiByZW9yZGVyX2l0ZW1zKGl0ZW1zOiAi
U2VxdWVuY2Vbbm9kZXMuSXRlbV0iKSAtPiAiTGlzdFtub2Rlcy5JdGVtXSI6CisgICAgYXJna2V5
c19jYWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbaW50LCBEaWN0W25vZGVzLkl0ZW0sIERpY3RbX0tl
eSwgTm9uZV1dXQorICAgIGl0ZW1zX2J5X2FyZ2tleSA9IHt9ICAjIHR5cGU6IERpY3RbaW50LCBE
aWN0W19LZXksIERlcXVlW25vZGVzLkl0ZW1dXV0KICAgICBmb3Igc2NvcGVudW0gaW4gcmFuZ2Uo
MCwgc2NvcGVudW1fZnVuY3Rpb24pOgotICAgICAgICBhcmdrZXlzX2NhY2hlW3Njb3BlbnVtXSA9
IGQgPSB7fQotICAgICAgICBpdGVtc19ieV9hcmdrZXlbc2NvcGVudW1dID0gaXRlbV9kID0gZGVm
YXVsdGRpY3QoZGVxdWUpCisgICAgICAgIGQgPSB7fSAgIyB0eXBlOiBEaWN0W25vZGVzLkl0ZW0s
IERpY3RbX0tleSwgTm9uZV1dCisgICAgICAgIGFyZ2tleXNfY2FjaGVbc2NvcGVudW1dID0gZAor
ICAgICAgICBpdGVtX2QgPSBkZWZhdWx0ZGljdChkZXF1ZSkgICMgdHlwZTogRGljdFtfS2V5LCBE
ZXF1ZVtub2Rlcy5JdGVtXV0KKyAgICAgICAgaXRlbXNfYnlfYXJna2V5W3Njb3BlbnVtXSA9IGl0
ZW1fZAogICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgICAgIGtleXMgPSBPcmRl
cmVkRGljdC5mcm9ta2V5cyhnZXRfcGFyYW1ldHJpemVkX2ZpeHR1cmVfa2V5cyhpdGVtLCBzY29w
ZW51bSkpCisgICAgICAgICAgICAjIGNhc3QgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dp
dGh1Yi5jb20vcHl0aG9uL3R5cGVzaGVkL2lzc3Vlcy8zODAwLgorICAgICAgICAgICAga2V5cyA9
IGNhc3QoCisgICAgICAgICAgICAgICAgIkRpY3RbX0tleSwgTm9uZV0iLAorICAgICAgICAgICAg
ICAgIG9yZGVyX3ByZXNlcnZpbmdfZGljdC5mcm9ta2V5cygKKyAgICAgICAgICAgICAgICAgICAg
Z2V0X3BhcmFtZXRyaXplZF9maXh0dXJlX2tleXMoaXRlbSwgc2NvcGVudW0pLCBOb25lCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIGlmIGtleXM6CiAgICAg
ICAgICAgICAgICAgZFtpdGVtXSA9IGtleXMKICAgICAgICAgICAgICAgICBmb3Iga2V5IGluIGtl
eXM6CiAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZFtrZXldLmFwcGVuZChpdGVtKQotICAgIGl0
ZW1zID0gT3JkZXJlZERpY3QuZnJvbWtleXMoaXRlbXMpCi0gICAgcmV0dXJuIGxpc3QocmVvcmRl
cl9pdGVtc19hdHNjb3BlKGl0ZW1zLCBhcmdrZXlzX2NhY2hlLCBpdGVtc19ieV9hcmdrZXksIDAp
KQorICAgICMgY2FzdCBpcyBhIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRo
b24vdHlwZXNoZWQvaXNzdWVzLzM4MDAuCisgICAgaXRlbXNfZGljdCA9IGNhc3QoCisgICAgICAg
ICJEaWN0W25vZGVzLkl0ZW0sIE5vbmVdIiwgb3JkZXJfcHJlc2VydmluZ19kaWN0LmZyb21rZXlz
KGl0ZW1zLCBOb25lKQorICAgICkKKyAgICByZXR1cm4gbGlzdChyZW9yZGVyX2l0ZW1zX2F0c2Nv
cGUoaXRlbXNfZGljdCwgYXJna2V5c19jYWNoZSwgaXRlbXNfYnlfYXJna2V5LCAwKSkKIAogCi1k
ZWYgZml4X2NhY2hlX29yZGVyKGl0ZW0sIGFyZ2tleXNfY2FjaGUsIGl0ZW1zX2J5X2FyZ2tleSk6
CitkZWYgZml4X2NhY2hlX29yZGVyKAorICAgIGl0ZW06ICJub2Rlcy5JdGVtIiwKKyAgICBhcmdr
ZXlzX2NhY2hlOiAiRGljdFtpbnQsIERpY3Rbbm9kZXMuSXRlbSwgRGljdFtfS2V5LCBOb25lXV1d
IiwKKyAgICBpdGVtc19ieV9hcmdrZXk6ICJEaWN0W2ludCwgRGljdFtfS2V5LCBEZXF1ZVtub2Rl
cy5JdGVtXV1dIiwKKykgLT4gTm9uZToKICAgICBmb3Igc2NvcGVudW0gaW4gcmFuZ2UoMCwgc2Nv
cGVudW1fZnVuY3Rpb24pOgogICAgICAgICBmb3Iga2V5IGluIGFyZ2tleXNfY2FjaGVbc2NvcGVu
dW1dLmdldChpdGVtLCBbXSk6CiAgICAgICAgICAgICBpdGVtc19ieV9hcmdrZXlbc2NvcGVudW1d
W2tleV0uYXBwZW5kbGVmdChpdGVtKQogCiAKLWRlZiByZW9yZGVyX2l0ZW1zX2F0c2NvcGUoaXRl
bXMsIGFyZ2tleXNfY2FjaGUsIGl0ZW1zX2J5X2FyZ2tleSwgc2NvcGVudW0pOgorZGVmIHJlb3Jk
ZXJfaXRlbXNfYXRzY29wZSgKKyAgICBpdGVtczogIkRpY3Rbbm9kZXMuSXRlbSwgTm9uZV0iLAor
ICAgIGFyZ2tleXNfY2FjaGU6ICJEaWN0W2ludCwgRGljdFtub2Rlcy5JdGVtLCBEaWN0W19LZXks
IE5vbmVdXV0iLAorICAgIGl0ZW1zX2J5X2FyZ2tleTogIkRpY3RbaW50LCBEaWN0W19LZXksIERl
cXVlW25vZGVzLkl0ZW1dXV0iLAorICAgIHNjb3BlbnVtOiBpbnQsCispIC0+ICJEaWN0W25vZGVz
Lkl0ZW0sIE5vbmVdIjoKICAgICBpZiBzY29wZW51bSA+PSBzY29wZW51bV9mdW5jdGlvbiBvciBs
ZW4oaXRlbXMpIDwgMzoKICAgICAgICAgcmV0dXJuIGl0ZW1zCi0gICAgaWdub3JlID0gc2V0KCkK
KyAgICBpZ25vcmUgPSBzZXQoKSAgIyB0eXBlOiBTZXRbT3B0aW9uYWxbX0tleV1dCiAgICAgaXRl
bXNfZGVxdWUgPSBkZXF1ZShpdGVtcykKLSAgICBpdGVtc19kb25lID0gT3JkZXJlZERpY3QoKQor
ICAgIGl0ZW1zX2RvbmUgPSBvcmRlcl9wcmVzZXJ2aW5nX2RpY3QoKSAgIyB0eXBlOiBEaWN0W25v
ZGVzLkl0ZW0sIE5vbmVdCiAgICAgc2NvcGVkX2l0ZW1zX2J5X2FyZ2tleSA9IGl0ZW1zX2J5X2Fy
Z2tleVtzY29wZW51bV0KICAgICBzY29wZWRfYXJna2V5c19jYWNoZSA9IGFyZ2tleXNfY2FjaGVb
c2NvcGVudW1dCiAgICAgd2hpbGUgaXRlbXNfZGVxdWU6Ci0gICAgICAgIG5vX2FyZ2tleV9ncm91
cCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgbm9fYXJna2V5X2dyb3VwID0gb3JkZXJfcHJlc2Vy
dmluZ19kaWN0KCkgICMgdHlwZTogRGljdFtub2Rlcy5JdGVtLCBOb25lXQogICAgICAgICBzbGlj
aW5nX2FyZ2tleSA9IE5vbmUKICAgICAgICAgd2hpbGUgaXRlbXNfZGVxdWU6CiAgICAgICAgICAg
ICBpdGVtID0gaXRlbXNfZGVxdWUucG9wbGVmdCgpCiAgICAgICAgICAgICBpZiBpdGVtIGluIGl0
ZW1zX2RvbmUgb3IgaXRlbSBpbiBub19hcmdrZXlfZ3JvdXA6CiAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGFyZ2tleXMgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygKLSAgICAg
ICAgICAgICAgICBrIGZvciBrIGluIHNjb3BlZF9hcmdrZXlzX2NhY2hlLmdldChpdGVtLCBbXSkg
aWYgayBub3QgaW4gaWdub3JlCisgICAgICAgICAgICBhcmdrZXlzID0gb3JkZXJfcHJlc2Vydmlu
Z19kaWN0LmZyb21rZXlzKAorICAgICAgICAgICAgICAgIChrIGZvciBrIGluIHNjb3BlZF9hcmdr
ZXlzX2NhY2hlLmdldChpdGVtLCBbXSkgaWYgayBub3QgaW4gaWdub3JlKSwgTm9uZQogICAgICAg
ICAgICAgKQogICAgICAgICAgICAgaWYgbm90IGFyZ2tleXM6CiAgICAgICAgICAgICAgICAgbm9f
YXJna2V5X2dyb3VwW2l0ZW1dID0gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg
ICAgICBzbGljaW5nX2FyZ2tleSwgXyA9IGFyZ2tleXMucG9waXRlbSgpCi0gICAgICAgICAgICAg
ICAgIyB3ZSBkb24ndCBoYXZlIHRvIHJlbW92ZSByZWxldmFudCBpdGVtcyBmcm9tIGxhdGVyIGlu
IHRoZSBkZXF1ZSBiZWNhdXNlIHRoZXknbGwganVzdCBiZSBpZ25vcmVkCisgICAgICAgICAgICAg
ICAgIyBXZSBkb24ndCBoYXZlIHRvIHJlbW92ZSByZWxldmFudCBpdGVtcyBmcm9tIGxhdGVyIGlu
IHRoZQorICAgICAgICAgICAgICAgICMgZGVxdWUgYmVjYXVzZSB0aGV5J2xsIGp1c3QgYmUgaWdu
b3JlZC4KICAgICAgICAgICAgICAgICBtYXRjaGluZ19pdGVtcyA9IFsKICAgICAgICAgICAgICAg
ICAgICAgaSBmb3IgaSBpbiBzY29wZWRfaXRlbXNfYnlfYXJna2V5W3NsaWNpbmdfYXJna2V5XSBp
ZiBpIGluIGl0ZW1zCiAgICAgICAgICAgICAgICAgXQpAQCAtMjQ5LDggKzMzOSw5IEBAIGRlZiBy
ZW9yZGVyX2l0ZW1zX2F0c2NvcGUoaXRlbXMsIGFyZ2tleXNfY2FjaGUsIGl0ZW1zX2J5X2FyZ2tl
eSwgc2NvcGVudW0pOgogICAgIHJldHVybiBpdGVtc19kb25lCiAKIAotZGVmIGZpbGxmaXh0dXJl
cyhmdW5jdGlvbik6Ci0gICAgIiIiIGZpbGwgbWlzc2luZyBmdW5jYXJncyBmb3IgYSB0ZXN0IGZ1
bmN0aW9uLiAiIiIKK2RlZiBmaWxsZml4dHVyZXMoZnVuY3Rpb246ICJGdW5jdGlvbiIpIC0+IE5v
bmU6CisgICAgIiIiRmlsbCBtaXNzaW5nIGZ1bmNhcmdzIGZvciBhIHRlc3QgZnVuY3Rpb24uIiIi
CisgICAgd2FybmluZ3Mud2FybihGSUxMRlVOQ0FSR1MsIHN0YWNrbGV2ZWw9MikKICAgICB0cnk6
CiAgICAgICAgIHJlcXVlc3QgPSBmdW5jdGlvbi5fcmVxdWVzdAogICAgIGV4Y2VwdCBBdHRyaWJ1
dGVFcnJvcjoKQEAgLTI1OCwxMSArMzQ5LDEyIEBAIGRlZiBmaWxsZml4dHVyZXMoZnVuY3Rpb24p
OgogICAgICAgICAjIHdpdGggdGhlIG9lanNraXQgcGx1Z2luLiAgSXQgdXNlcyBjbGFzc2VzIHdp
dGggZnVuY2FyZ3MKICAgICAgICAgIyBhbmQgd2UgdGh1cyBoYXZlIHRvIHdvcmsgYSBiaXQgdG8g
YWxsb3cgdGhpcy4KICAgICAgICAgZm0gPSBmdW5jdGlvbi5zZXNzaW9uLl9maXh0dXJlbWFuYWdl
cgorICAgICAgICBhc3NlcnQgZnVuY3Rpb24ucGFyZW50IGlzIG5vdCBOb25lCiAgICAgICAgIGZp
ID0gZm0uZ2V0Zml4dHVyZWluZm8oZnVuY3Rpb24ucGFyZW50LCBmdW5jdGlvbi5vYmosIE5vbmUp
CiAgICAgICAgIGZ1bmN0aW9uLl9maXh0dXJlaW5mbyA9IGZpCiAgICAgICAgIHJlcXVlc3QgPSBm
dW5jdGlvbi5fcmVxdWVzdCA9IEZpeHR1cmVSZXF1ZXN0KGZ1bmN0aW9uKQogICAgICAgICByZXF1
ZXN0Ll9maWxsZml4dHVyZXMoKQotICAgICAgICAjIHBydW5lIG91dCBmdW5jYXJncyBmb3IganN0
ZXN0cworICAgICAgICAjIFBydW5lIG91dCBmdW5jYXJncyBmb3IganN0ZXN0cy4KICAgICAgICAg
bmV3ZnVuY2FyZ3MgPSB7fQogICAgICAgICBmb3IgbmFtZSBpbiBmaS5hcmduYW1lczoKICAgICAg
ICAgICAgIG5ld2Z1bmNhcmdzW25hbWVdID0gZnVuY3Rpb24uZnVuY2FyZ3NbbmFtZV0KQEAgLTI3
NSw1NCArMzY3LDkyIEBAIGRlZiBnZXRfZGlyZWN0X3BhcmFtX2ZpeHR1cmVfZnVuYyhyZXF1ZXN0
KToKICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQogCiAKLWNsYXNzIEZ1bmNGaXh0dXJlSW5mbyhv
YmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ25hbWVzLCBuYW1lc19jbG9zdXJl
LCBuYW1lMmZpeHR1cmVkZWZzKToKLSAgICAgICAgc2VsZi5hcmduYW1lcyA9IGFyZ25hbWVzCi0g
ICAgICAgIHNlbGYubmFtZXNfY2xvc3VyZSA9IG5hbWVzX2Nsb3N1cmUKLSAgICAgICAgc2VsZi5u
YW1lMmZpeHR1cmVkZWZzID0gbmFtZTJmaXh0dXJlZGVmcworQGF0dHIucyhzbG90cz1UcnVlKQor
Y2xhc3MgRnVuY0ZpeHR1cmVJbmZvOgorICAgICMgT3JpZ2luYWwgZnVuY3Rpb24gYXJndW1lbnQg
bmFtZXMuCisgICAgYXJnbmFtZXMgPSBhdHRyLmliKHR5cGU9VHVwbGVbc3RyLCAuLi5dKQorICAg
ICMgQXJnbmFtZXMgdGhhdCBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXF1aXJlcy4gVGhlc2UgaW5j
bHVkZSBhcmduYW1lcyArCisgICAgIyBmaXh0dXJlIG5hbWVzIHNwZWNpZmllZCB2aWEgdXNlZml4
dHVyZXMgYW5kIHZpYSBhdXRvdXNlPVRydWUgaW4gZml4dHVyZQorICAgICMgZGVmaW5pdGlvbnMu
CisgICAgaW5pdGlhbG5hbWVzID0gYXR0ci5pYih0eXBlPVR1cGxlW3N0ciwgLi4uXSkKKyAgICBu
YW1lc19jbG9zdXJlID0gYXR0ci5pYih0eXBlPUxpc3Rbc3RyXSkKKyAgICBuYW1lMmZpeHR1cmVk
ZWZzID0gYXR0ci5pYih0eXBlPURpY3Rbc3RyLCBTZXF1ZW5jZVsiRml4dHVyZURlZltBbnldIl1d
KQogCisgICAgZGVmIHBydW5lX2RlcGVuZGVuY3lfdHJlZShzZWxmKSAtPiBOb25lOgorICAgICAg
ICAiIiJSZWNvbXB1dGUgbmFtZXNfY2xvc3VyZSBmcm9tIGluaXRpYWxuYW1lcyBhbmQgbmFtZTJm
aXh0dXJlZGVmcy4KIAotY2xhc3MgRml4dHVyZVJlcXVlc3QoRnVuY2FyZ25hbWVzQ29tcGF0QXR0
cik6Ci0gICAgIiIiIEEgcmVxdWVzdCBmb3IgYSBmaXh0dXJlIGZyb20gYSB0ZXN0IG9yIGZpeHR1
cmUgZnVuY3Rpb24uCisgICAgICAgIENhbiBvbmx5IHJlZHVjZSBuYW1lc19jbG9zdXJlLCB3aGlj
aCBtZWFucyB0aGF0IHRoZSBuZXcgY2xvc3VyZSB3aWxsCisgICAgICAgIGFsd2F5cyBiZSBhIHN1
YnNldCBvZiB0aGUgb2xkIG9uZS4gVGhlIG9yZGVyIGlzIHByZXNlcnZlZC4KIAotICAgIEEgcmVx
dWVzdCBvYmplY3QgZ2l2ZXMgYWNjZXNzIHRvIHRoZSByZXF1ZXN0aW5nIHRlc3QgY29udGV4dAot
ICAgIGFuZCBoYXMgYW4gb3B0aW9uYWwgYGBwYXJhbWBgIGF0dHJpYnV0ZSBpbiBjYXNlCi0gICAg
dGhlIGZpeHR1cmUgaXMgcGFyYW1ldHJpemVkIGluZGlyZWN0bHkuCisgICAgICAgIFRoaXMgbWV0
aG9kIGlzIG5lZWRlZCBiZWNhdXNlIGRpcmVjdCBwYXJhbWV0cml6YXRpb24gbWF5IHNoYWRvdyBz
b21lCisgICAgICAgIG9mIHRoZSBmaXh0dXJlcyB0aGF0IHdlcmUgaW5jbHVkZWQgaW4gdGhlIG9y
aWdpbmFsbHkgYnVpbHQgZGVwZW5kZW5jeQorICAgICAgICB0cmVlLiBJbiB0aGlzIHdheSB0aGUg
ZGVwZW5kZW5jeSB0cmVlIGNhbiBnZXQgcHJ1bmVkLCBhbmQgdGhlIGNsb3N1cmUKKyAgICAgICAg
b2YgYXJnbmFtZXMgbWF5IGdldCByZWR1Y2VkLgorICAgICAgICAiIiIKKyAgICAgICAgY2xvc3Vy
ZSA9IHNldCgpICAjIHR5cGU6IFNldFtzdHJdCisgICAgICAgIHdvcmtpbmdfc2V0ID0gc2V0KHNl
bGYuaW5pdGlhbG5hbWVzKQorICAgICAgICB3aGlsZSB3b3JraW5nX3NldDoKKyAgICAgICAgICAg
IGFyZ25hbWUgPSB3b3JraW5nX3NldC5wb3AoKQorICAgICAgICAgICAgIyBBcmduYW1lIG1heSBi
ZSBzbXRoIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3JpZ2luYWwgbmFtZXNfY2xvc3VyZSwKKyAgICAg
ICAgICAgICMgaW4gd2hpY2ggY2FzZSB3ZSBpZ25vcmUgaXQuIFRoaXMgY3VycmVudGx5IGhhcHBl
bnMgd2l0aCBwc2V1ZG8KKyAgICAgICAgICAgICMgRml4dHVyZURlZnMgd2hpY2ggd3JhcCAnZ2V0
X2RpcmVjdF9wYXJhbV9maXh0dXJlX2Z1bmMocmVxdWVzdCknLgorICAgICAgICAgICAgIyBTbyB0
aGV5IGludHJvZHVjZSB0aGUgbmV3IGRlcGVuZGVuY3kgJ3JlcXVlc3QnIHdoaWNoIG1pZ2h0IGhh
dmUKKyAgICAgICAgICAgICMgYmVlbiBtaXNzaW5nIGluIHRoZSBvcmlnaW5hbCB0cmVlIChjbG9z
dXJlKS4KKyAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGNsb3N1cmUgYW5kIGFyZ25hbWUg
aW4gc2VsZi5uYW1lc19jbG9zdXJlOgorICAgICAgICAgICAgICAgIGNsb3N1cmUuYWRkKGFyZ25h
bWUpCisgICAgICAgICAgICAgICAgaWYgYXJnbmFtZSBpbiBzZWxmLm5hbWUyZml4dHVyZWRlZnM6
CisgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfc2V0LnVwZGF0ZShzZWxmLm5hbWUyZml4dHVy
ZWRlZnNbYXJnbmFtZV1bLTFdLmFyZ25hbWVzKQorCisgICAgICAgIHNlbGYubmFtZXNfY2xvc3Vy
ZVs6XSA9IHNvcnRlZChjbG9zdXJlLCBrZXk9c2VsZi5uYW1lc19jbG9zdXJlLmluZGV4KQorCisK
K2NsYXNzIEZpeHR1cmVSZXF1ZXN0OgorICAgICIiIkEgcmVxdWVzdCBmb3IgYSBmaXh0dXJlIGZy
b20gYSB0ZXN0IG9yIGZpeHR1cmUgZnVuY3Rpb24uCisKKyAgICBBIHJlcXVlc3Qgb2JqZWN0IGdp
dmVzIGFjY2VzcyB0byB0aGUgcmVxdWVzdGluZyB0ZXN0IGNvbnRleHQgYW5kIGhhcworICAgIGFu
IG9wdGlvbmFsIGBgcGFyYW1gYCBhdHRyaWJ1dGUgaW4gY2FzZSB0aGUgZml4dHVyZSBpcyBwYXJh
bWV0cml6ZWQKKyAgICBpbmRpcmVjdGx5LgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHB5ZnVuY2l0ZW0pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBweWZ1bmNpdGVtKSAtPiBO
b25lOgogICAgICAgICBzZWxmLl9weWZ1bmNpdGVtID0gcHlmdW5jaXRlbQotICAgICAgICAjOiBm
aXh0dXJlIGZvciB3aGljaCB0aGlzIHJlcXVlc3QgaXMgYmVpbmcgcGVyZm9ybWVkCi0gICAgICAg
IHNlbGYuZml4dHVyZW5hbWUgPSBOb25lCi0gICAgICAgICM6IFNjb3BlIHN0cmluZywgb25lIG9m
ICJmdW5jdGlvbiIsICJjbGFzcyIsICJtb2R1bGUiLCAic2Vzc2lvbiIKLSAgICAgICAgc2VsZi5z
Y29wZSA9ICJmdW5jdGlvbiIKLSAgICAgICAgc2VsZi5fZml4dHVyZV9kZWZzID0ge30gICMgYXJn
bmFtZSAtPiBGaXh0dXJlRGVmCi0gICAgICAgIGZpeHR1cmVpbmZvID0gcHlmdW5jaXRlbS5fZml4
dHVyZWluZm8KKyAgICAgICAgIzogRml4dHVyZSBmb3Igd2hpY2ggdGhpcyByZXF1ZXN0IGlzIGJl
aW5nIHBlcmZvcm1lZC4KKyAgICAgICAgc2VsZi5maXh0dXJlbmFtZSA9IE5vbmUgICMgdHlwZTog
T3B0aW9uYWxbc3RyXQorICAgICAgICAjOiBTY29wZSBzdHJpbmcsIG9uZSBvZiAiZnVuY3Rpb24i
LCAiY2xhc3MiLCAibW9kdWxlIiwgInNlc3Npb24iLgorICAgICAgICBzZWxmLnNjb3BlID0gImZ1
bmN0aW9uIiAgIyB0eXBlOiBfU2NvcGUKKyAgICAgICAgc2VsZi5fZml4dHVyZV9kZWZzID0ge30g
ICMgdHlwZTogRGljdFtzdHIsIEZpeHR1cmVEZWZbQW55XV0KKyAgICAgICAgZml4dHVyZWluZm8g
PSBweWZ1bmNpdGVtLl9maXh0dXJlaW5mbyAgIyB0eXBlOiBGdW5jRml4dHVyZUluZm8KICAgICAg
ICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0gZml4dHVyZWluZm8ubmFtZTJmaXh0dXJlZGVmcy5j
b3B5KCkKLSAgICAgICAgc2VsZi5fYXJnMmluZGV4ID0ge30KLSAgICAgICAgc2VsZi5fZml4dHVy
ZW1hbmFnZXIgPSBweWZ1bmNpdGVtLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCisgICAgICAgIHNl
bGYuX2FyZzJpbmRleCA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBpbnRdCisgICAgICAgIHNlbGYu
X2ZpeHR1cmVtYW5hZ2VyID0gKAorICAgICAgICAgICAgcHlmdW5jaXRlbS5zZXNzaW9uLl9maXh0
dXJlbWFuYWdlcgorICAgICAgICApICAjIHR5cGU6IEZpeHR1cmVNYW5hZ2VyCiAKICAgICBAcHJv
cGVydHkKLSAgICBkZWYgZml4dHVyZW5hbWVzKHNlbGYpOgotICAgICAgICAjIGJhY2t3YXJkIGlu
Y29tcGF0aWJsZSBub3RlOiBub3cgYSByZWFkb25seSBwcm9wZXJ0eQotICAgICAgICByZXR1cm4g
bGlzdChzZWxmLl9weWZ1bmNpdGVtLl9maXh0dXJlaW5mby5uYW1lc19jbG9zdXJlKQorICAgIGRl
ZiBmaXh0dXJlbmFtZXMoc2VsZikgLT4gTGlzdFtzdHJdOgorICAgICAgICAiIiJOYW1lcyBvZiBh
bGwgYWN0aXZlIGZpeHR1cmVzIGluIHRoaXMgcmVxdWVzdC4iIiIKKyAgICAgICAgcmVzdWx0ID0g
bGlzdChzZWxmLl9weWZ1bmNpdGVtLl9maXh0dXJlaW5mby5uYW1lc19jbG9zdXJlKQorICAgICAg
ICByZXN1bHQuZXh0ZW5kKHNldChzZWxmLl9maXh0dXJlX2RlZnMpLmRpZmZlcmVuY2UocmVzdWx0
KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG5vZGUo
c2VsZik6Ci0gICAgICAgICIiIiB1bmRlcmx5aW5nIGNvbGxlY3Rpb24gbm9kZSAoZGVwZW5kcyBv
biBjdXJyZW50IHJlcXVlc3Qgc2NvcGUpIiIiCisgICAgICAgICIiIlVuZGVybHlpbmcgY29sbGVj
dGlvbiBub2RlIChkZXBlbmRzIG9uIGN1cnJlbnQgcmVxdWVzdCBzY29wZSkuIiIiCiAgICAgICAg
IHJldHVybiBzZWxmLl9nZXRzY29wZWl0ZW0oc2VsZi5zY29wZSkKIAotICAgIGRlZiBfZ2V0bmV4
dGZpeHR1cmVkZWYoc2VsZiwgYXJnbmFtZSk6CisgICAgZGVmIF9nZXRuZXh0Zml4dHVyZWRlZihz
ZWxmLCBhcmduYW1lOiBzdHIpIC0+ICJGaXh0dXJlRGVmW0FueV0iOgogICAgICAgICBmaXh0dXJl
ZGVmcyA9IHNlbGYuX2FyZzJmaXh0dXJlZGVmcy5nZXQoYXJnbmFtZSwgTm9uZSkKICAgICAgICAg
aWYgZml4dHVyZWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgICMgd2UgYXJyaXZlIGhlcmUgYmVj
YXVzZSBvZiBhIGR5bmFtaWMgY2FsbCB0bworICAgICAgICAgICAgIyBXZSBhcnJpdmUgaGVyZSBi
ZWNhdXNlIG9mIGEgZHluYW1pYyBjYWxsIHRvCiAgICAgICAgICAgICAjIGdldGZpeHR1cmV2YWx1
ZShhcmduYW1lKSB1c2FnZSB3aGljaCB3YXMgbmF0dXJhbGx5Ci0gICAgICAgICAgICAjIG5vdCBr
bm93biBhdCBwYXJzaW5nL2NvbGxlY3Rpb24gdGltZQorICAgICAgICAgICAgIyBub3Qga25vd24g
YXQgcGFyc2luZy9jb2xsZWN0aW9uIHRpbWUuCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5fcHlm
dW5jaXRlbS5wYXJlbnQgaXMgbm90IE5vbmUKICAgICAgICAgICAgIHBhcmVudGlkID0gc2VsZi5f
cHlmdW5jaXRlbS5wYXJlbnQubm9kZWlkCiAgICAgICAgICAgICBmaXh0dXJlZGVmcyA9IHNlbGYu
X2ZpeHR1cmVtYW5hZ2VyLmdldGZpeHR1cmVkZWZzKGFyZ25hbWUsIHBhcmVudGlkKQotICAgICAg
ICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gZml4dHVyZWRlZnMKLSAgICAg
ICAgIyBmaXh0dXJlZGVmcyBsaXN0IGlzIGltbXV0YWJsZSBzbyB3ZSBtYWludGFpbiBhIGRlY3Jl
YXNpbmcgaW5kZXgKKyAgICAgICAgICAgICMgVE9ETzogRml4IHRoaXMgdHlwZSBpZ25vcmUuIEVp
dGhlciBhZGQgYXNzZXJ0IG9yIGFkanVzdCB0eXBlcy4KKyAgICAgICAgICAgICMgICAgICAgQ2Fu
IHRoaXMgYmUgTm9uZSBoZXJlPworICAgICAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzW2Fy
Z25hbWVdID0gZml4dHVyZWRlZnMgICMgdHlwZTogaWdub3JlW2Fzc2lnbm1lbnRdCisgICAgICAg
ICMgZml4dHVyZWRlZnMgbGlzdCBpcyBpbW11dGFibGUgc28gd2UgbWFpbnRhaW4gYSBkZWNyZWFz
aW5nIGluZGV4LgogICAgICAgICBpbmRleCA9IHNlbGYuX2FyZzJpbmRleC5nZXQoYXJnbmFtZSwg
MCkgLSAxCiAgICAgICAgIGlmIGZpeHR1cmVkZWZzIGlzIE5vbmUgb3IgKC1pbmRleCA+IGxlbihm
aXh0dXJlZGVmcykpOgogICAgICAgICAgICAgcmFpc2UgRml4dHVyZUxvb2t1cEVycm9yKGFyZ25h
bWUsIHNlbGYpCkBAIC0zMzAsMTM4ICs0NjAsMTIyIEBAIGNsYXNzIEZpeHR1cmVSZXF1ZXN0KEZ1
bmNhcmduYW1lc0NvbXBhdEF0dHIpOgogICAgICAgICByZXR1cm4gZml4dHVyZWRlZnNbaW5kZXhd
CiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgY29uZmlnKHNlbGYpOgotICAgICAgICAiIiIgdGhl
IHB5dGVzdCBjb25maWcgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QuICIiIgot
ICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5jb25maWcKKyAgICBkZWYgY29uZmlnKHNl
bGYpIC0+IENvbmZpZzoKKyAgICAgICAgIiIiVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0IGFzc29j
aWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNp
dGVtLmNvbmZpZyAgIyB0eXBlOiBpZ25vcmVbbm8tYW55LXJldHVybl0gIyBub3FhOiBGNzIzCiAK
LSAgICBAc2NvcGVwcm9wZXJ0eSgpCisgICAgQHByb3BlcnR5CiAgICAgZGVmIGZ1bmN0aW9uKHNl
bGYpOgotICAgICAgICAiIiIgdGVzdCBmdW5jdGlvbiBvYmplY3QgaWYgdGhlIHJlcXVlc3QgaGFz
IGEgcGVyLWZ1bmN0aW9uIHNjb3BlLiAiIiIKKyAgICAgICAgIiIiVGVzdCBmdW5jdGlvbiBvYmpl
Y3QgaWYgdGhlIHJlcXVlc3QgaGFzIGEgcGVyLWZ1bmN0aW9uIHNjb3BlLiIiIgorICAgICAgICBp
ZiBzZWxmLnNjb3BlICE9ICJmdW5jdGlvbiI6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVF
cnJvcigKKyAgICAgICAgICAgICAgICAiZnVuY3Rpb24gbm90IGF2YWlsYWJsZSBpbiB7fS1zY29w
ZWQgY29udGV4dCIuZm9ybWF0KHNlbGYuc2NvcGUpCisgICAgICAgICAgICApCiAgICAgICAgIHJl
dHVybiBzZWxmLl9weWZ1bmNpdGVtLm9iagogCi0gICAgQHNjb3BlcHJvcGVydHkoImNsYXNzIikK
KyAgICBAcHJvcGVydHkKICAgICBkZWYgY2xzKHNlbGYpOgotICAgICAgICAiIiIgY2xhc3MgKGNh
biBiZSBOb25lKSB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiB3YXMgY29sbGVjdGVkLiAiIiIKKyAg
ICAgICAgIiIiQ2xhc3MgKGNhbiBiZSBOb25lKSB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiB3YXMg
Y29sbGVjdGVkLiIiIgorICAgICAgICBpZiBzZWxmLnNjb3BlIG5vdCBpbiAoImNsYXNzIiwgImZ1
bmN0aW9uIik6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKKyAgICAgICAgICAg
ICAgICAiY2xzIG5vdCBhdmFpbGFibGUgaW4ge30tc2NvcGVkIGNvbnRleHQiLmZvcm1hdChzZWxm
LnNjb3BlKQorICAgICAgICAgICAgKQogICAgICAgICBjbHNjb2wgPSBzZWxmLl9weWZ1bmNpdGVt
LmdldHBhcmVudChfcHl0ZXN0LnB5dGhvbi5DbGFzcykKICAgICAgICAgaWYgY2xzY29sOgogICAg
ICAgICAgICAgcmV0dXJuIGNsc2NvbC5vYmoKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpbnN0
YW5jZShzZWxmKToKLSAgICAgICAgIiIiIGluc3RhbmNlIChjYW4gYmUgTm9uZSkgb24gd2hpY2gg
dGVzdCBmdW5jdGlvbiB3YXMgY29sbGVjdGVkLiAiIiIKLSAgICAgICAgIyB1bml0dGVzdCBzdXBw
b3J0IGhhY2ssIHNlZSBfcHl0ZXN0LnVuaXR0ZXN0LlRlc3RDYXNlRnVuY3Rpb24KKyAgICAgICAg
IiIiSW5zdGFuY2UgKGNhbiBiZSBOb25lKSBvbiB3aGljaCB0ZXN0IGZ1bmN0aW9uIHdhcyBjb2xs
ZWN0ZWQuIiIiCisgICAgICAgICMgdW5pdHRlc3Qgc3VwcG9ydCBoYWNrLCBzZWUgX3B5dGVzdC51
bml0dGVzdC5UZXN0Q2FzZUZ1bmN0aW9uLgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5fcHlmdW5jaXRlbS5fdGVzdGNhc2UKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVy
cm9yOgogICAgICAgICAgICAgZnVuY3Rpb24gPSBnZXRhdHRyKHNlbGYsICJmdW5jdGlvbiIsIE5v
bmUpCiAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihmdW5jdGlvbiwgIl9fc2VsZl9fIiwgTm9u
ZSkKIAotICAgIEBzY29wZXByb3BlcnR5KCkKKyAgICBAcHJvcGVydHkKICAgICBkZWYgbW9kdWxl
KHNlbGYpOgotICAgICAgICAiIiIgcHl0aG9uIG1vZHVsZSBvYmplY3Qgd2hlcmUgdGhlIHRlc3Qg
ZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4gIiIiCisgICAgICAgICIiIlB5dGhvbiBtb2R1bGUgb2Jq
ZWN0IHdoZXJlIHRoZSB0ZXN0IGZ1bmN0aW9uIHdhcyBjb2xsZWN0ZWQuIiIiCisgICAgICAgIGlm
IHNlbGYuc2NvcGUgbm90IGluICgiZnVuY3Rpb24iLCAiY2xhc3MiLCAibW9kdWxlIik6CisgICAg
ICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKKyAgICAgICAgICAgICAgICAibW9kdWxlIG5v
dCBhdmFpbGFibGUgaW4ge30tc2NvcGVkIGNvbnRleHQiLmZvcm1hdChzZWxmLnNjb3BlKQorICAg
ICAgICAgICAgKQogICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5nZXRwYXJlbnQoX3B5
dGVzdC5weXRob24uTW9kdWxlKS5vYmoKIAotICAgIEBzY29wZXByb3BlcnR5KCkKLSAgICBkZWYg
ZnNwYXRoKHNlbGYpOgotICAgICAgICAiIiIgdGhlIGZpbGUgc3lzdGVtIHBhdGggb2YgdGhlIHRl
c3QgbW9kdWxlIHdoaWNoIGNvbGxlY3RlZCB0aGlzIHRlc3QuICIiIgotICAgICAgICByZXR1cm4g
c2VsZi5fcHlmdW5jaXRlbS5mc3BhdGgKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZnNwYXRoKHNl
bGYpIC0+IHB5LnBhdGgubG9jYWw6CisgICAgICAgICIiIlRoZSBmaWxlIHN5c3RlbSBwYXRoIG9m
IHRoZSB0ZXN0IG1vZHVsZSB3aGljaCBjb2xsZWN0ZWQgdGhpcyB0ZXN0LiIiIgorICAgICAgICBp
ZiBzZWxmLnNjb3BlIG5vdCBpbiAoImZ1bmN0aW9uIiwgImNsYXNzIiwgIm1vZHVsZSIsICJwYWNr
YWdlIik6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKKyAgICAgICAgICAgICAg
ICAibW9kdWxlIG5vdCBhdmFpbGFibGUgaW4ge30tc2NvcGVkIGNvbnRleHQiLmZvcm1hdChzZWxm
LnNjb3BlKQorICAgICAgICAgICAgKQorICAgICAgICAjIFRPRE86IFJlbW92ZSBpZ25vcmUgb25j
ZSBfcHlmdW5jaXRlbSBpcyBwcm9wZXJseSB0eXBlZC4KKyAgICAgICAgcmV0dXJuIHNlbGYuX3B5
ZnVuY2l0ZW0uZnNwYXRoICAjIHR5cGU6IGlnbm9yZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVm
IGtleXdvcmRzKHNlbGYpOgotICAgICAgICAiIiIga2V5d29yZHMvbWFya2VycyBkaWN0aW9uYXJ5
IGZvciB0aGUgdW5kZXJseWluZyBub2RlLiAiIiIKKyAgICAgICAgIiIiS2V5d29yZHMvbWFya2Vy
cyBkaWN0aW9uYXJ5IGZvciB0aGUgdW5kZXJseWluZyBub2RlLiIiIgogICAgICAgICByZXR1cm4g
c2VsZi5ub2RlLmtleXdvcmRzCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgc2Vzc2lvbihzZWxm
KToKLSAgICAgICAgIiIiIHB5dGVzdCBzZXNzaW9uIG9iamVjdC4gIiIiCisgICAgICAgICIiIlB5
dGVzdCBzZXNzaW9uIG9iamVjdC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0u
c2Vzc2lvbgogCi0gICAgZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXIpOgotICAgICAg
ICAiIiIgYWRkIGZpbmFsaXplci90ZWFyZG93biBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIg
dGhlCi0gICAgICAgIGxhc3QgdGVzdCB3aXRoaW4gdGhlIHJlcXVlc3RpbmcgdGVzdCBjb250ZXh0
IGZpbmlzaGVkCi0gICAgICAgIGV4ZWN1dGlvbi4gIiIiCi0gICAgICAgICMgWFhYIHVzdWFsbHkg
dGhpcyBtZXRob2QgaXMgc2hhZG93ZWQgYnkgZml4dHVyZWRlZiBzcGVjaWZpYyBvbmVzCisgICAg
ZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXI6IENhbGxhYmxlW1tdLCBvYmplY3RdKSAt
PiBOb25lOgorICAgICAgICAiIiJBZGQgZmluYWxpemVyL3RlYXJkb3duIGZ1bmN0aW9uIHRvIGJl
IGNhbGxlZCBhZnRlciB0aGUgbGFzdCB0ZXN0CisgICAgICAgIHdpdGhpbiB0aGUgcmVxdWVzdGlu
ZyB0ZXN0IGNvbnRleHQgZmluaXNoZWQgZXhlY3V0aW9uLiIiIgorICAgICAgICAjIFhYWCB1c3Vh
bGx5IHRoaXMgbWV0aG9kIGlzIHNoYWRvd2VkIGJ5IGZpeHR1cmVkZWYgc3BlY2lmaWMgb25lcy4K
ICAgICAgICAgc2VsZi5fYWRkZmluYWxpemVyKGZpbmFsaXplciwgc2NvcGU9c2VsZi5zY29wZSkK
IAotICAgIGRlZiBfYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplciwgc2NvcGUpOgorICAgIGRl
ZiBfYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplcjogQ2FsbGFibGVbW10sIG9iamVjdF0sIHNj
b3BlKSAtPiBOb25lOgogICAgICAgICBjb2xpdGVtID0gc2VsZi5fZ2V0c2NvcGVpdGVtKHNjb3Bl
KQogICAgICAgICBzZWxmLl9weWZ1bmNpdGVtLnNlc3Npb24uX3NldHVwc3RhdGUuYWRkZmluYWxp
emVyKAogICAgICAgICAgICAgZmluYWxpemVyPWZpbmFsaXplciwgY29saXRlbT1jb2xpdGVtCiAg
ICAgICAgICkKIAotICAgIGRlZiBhcHBseW1hcmtlcihzZWxmLCBtYXJrZXIpOgotICAgICAgICAi
IiIgQXBwbHkgYSBtYXJrZXIgdG8gYSBzaW5nbGUgdGVzdCBmdW5jdGlvbiBpbnZvY2F0aW9uLgor
ICAgIGRlZiBhcHBseW1hcmtlcihzZWxmLCBtYXJrZXIpIC0+IE5vbmU6CisgICAgICAgICIiIkFw
cGx5IGEgbWFya2VyIHRvIGEgc2luZ2xlIHRlc3QgZnVuY3Rpb24gaW52b2NhdGlvbi4KKwogICAg
ICAgICBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaWYgeW91IGRvbid0IHdhbnQgdG8gaGF2ZSBhIGtl
eXdvcmQvbWFya2VyCiAgICAgICAgIG9uIGFsbCBmdW5jdGlvbiBpbnZvY2F0aW9ucy4KIAotICAg
ICAgICA6YXJnIG1hcmtlcjogYSA6cHk6Y2xhc3M6YF9weXRlc3QubWFyay5NYXJrRGVjb3JhdG9y
YCBvYmplY3QKLSAgICAgICAgICAgIGNyZWF0ZWQgYnkgYSBjYWxsIHRvIGBgcHl0ZXN0Lm1hcmsu
TkFNRSguLi4pYGAuCisgICAgICAgIDpwYXJhbSBtYXJrZXI6CisgICAgICAgICAgICBBIDpweTpj
bGFzczpgX3B5dGVzdC5tYXJrLk1hcmtEZWNvcmF0b3JgIG9iamVjdCBjcmVhdGVkIGJ5IGEgY2Fs
bAorICAgICAgICAgICAgdG8gYGBweXRlc3QubWFyay5OQU1FKC4uLilgYC4KICAgICAgICAgIiIi
CiAgICAgICAgIHNlbGYubm9kZS5hZGRfbWFya2VyKG1hcmtlcikKIAotICAgIGRlZiByYWlzZWVy
cm9yKHNlbGYsIG1zZyk6Ci0gICAgICAgICIiIiByYWlzZSBhIEZpeHR1cmVMb29rdXBFcnJvciB3
aXRoIHRoZSBnaXZlbiBtZXNzYWdlLiAiIiIKKyAgICBkZWYgcmFpc2VlcnJvcihzZWxmLCBtc2c6
IE9wdGlvbmFsW3N0cl0pIC0+ICJOb1JldHVybiI6CisgICAgICAgICIiIlJhaXNlIGEgRml4dHVy
ZUxvb2t1cEVycm9yIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuIiIiCiAgICAgICAgIHJhaXNlIHNl
bGYuX2ZpeHR1cmVtYW5hZ2VyLkZpeHR1cmVMb29rdXBFcnJvcihOb25lLCBzZWxmLCBtc2cpCiAK
LSAgICBkZWYgX2ZpbGxmaXh0dXJlcyhzZWxmKToKKyAgICBkZWYgX2ZpbGxmaXh0dXJlcyhzZWxm
KSAtPiBOb25lOgogICAgICAgICBpdGVtID0gc2VsZi5fcHlmdW5jaXRlbQogICAgICAgICBmaXh0
dXJlbmFtZXMgPSBnZXRhdHRyKGl0ZW0sICJmaXh0dXJlbmFtZXMiLCBzZWxmLmZpeHR1cmVuYW1l
cykKICAgICAgICAgZm9yIGFyZ25hbWUgaW4gZml4dHVyZW5hbWVzOgogICAgICAgICAgICAgaWYg
YXJnbmFtZSBub3QgaW4gaXRlbS5mdW5jYXJnczoKICAgICAgICAgICAgICAgICBpdGVtLmZ1bmNh
cmdzW2FyZ25hbWVdID0gc2VsZi5nZXRmaXh0dXJldmFsdWUoYXJnbmFtZSkKIAotICAgIGRlZiBj
YWNoZWRfc2V0dXAoc2VsZiwgc2V0dXAsIHRlYXJkb3duPU5vbmUsIHNjb3BlPSJtb2R1bGUiLCBl
eHRyYWtleT1Ob25lKToKLSAgICAgICAgIiIiIChkZXByZWNhdGVkKSBSZXR1cm4gYSB0ZXN0aW5n
IHJlc291cmNlIG1hbmFnZWQgYnkgYGBzZXR1cGBgICYKLSAgICAgICAgYGB0ZWFyZG93bmBgIGNh
bGxzLiAgYGBzY29wZWBgIGFuZCBgYGV4dHJha2V5YGAgZGV0ZXJtaW5lIHdoZW4gdGhlCi0gICAg
ICAgIGBgdGVhcmRvd25gYCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBzbyB0aGF0IHN1YnNlcXVl
bnQgY2FsbHMgdG8KLSAgICAgICAgYGBzZXR1cGBgIHdvdWxkIHJlY3JlYXRlIHRoZSByZXNvdXJj
ZS4gIFdpdGggcHl0ZXN0LTIuMyB5b3Ugb2Z0ZW4KLSAgICAgICAgZG8gbm90IG5lZWQgYGBjYWNo
ZWRfc2V0dXAoKWBgIGFzIHlvdSBjYW4gZGlyZWN0bHkgZGVjbGFyZSBhIHNjb3BlCi0gICAgICAg
IG9uIGEgZml4dHVyZSBmdW5jdGlvbiBhbmQgcmVnaXN0ZXIgYSBmaW5hbGl6ZXIgdGhyb3VnaAot
ICAgICAgICBgYHJlcXVlc3QuYWRkZmluYWxpemVyKClgYC4KLQotICAgICAgICA6YXJnIHRlYXJk
b3duOiBmdW5jdGlvbiByZWNlaXZpbmcgYSBwcmV2aW91c2x5IHNldHVwIHJlc291cmNlLgotICAg
ICAgICA6YXJnIHNldHVwOiBhIG5vLWFyZ3VtZW50IGZ1bmN0aW9uIGNyZWF0aW5nIGEgcmVzb3Vy
Y2UuCi0gICAgICAgIDphcmcgc2NvcGU6IGEgc3RyaW5nIHZhbHVlIG91dCBvZiBgYGZ1bmN0aW9u
YGAsIGBgY2xhc3NgYCwgYGBtb2R1bGVgYAotICAgICAgICAgICAgb3IgYGBzZXNzaW9uYGAgaW5k
aWNhdGluZyB0aGUgY2FjaGluZyBsaWZlY3ljbGUgb2YgdGhlIHJlc291cmNlLgotICAgICAgICA6
YXJnIGV4dHJha2V5OiBhZGRlZCB0byBpbnRlcm5hbCBjYWNoaW5nIGtleSBvZiAoZnVuY2FyZ25h
bWUsIHNjb3BlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuY29u
ZmlnLCAiX3NldHVwY2FjaGUiKToKLSAgICAgICAgICAgIHNlbGYuY29uZmlnLl9zZXR1cGNhY2hl
ID0ge30gICMgWFhYIHdlYWtyZWY/Ci0gICAgICAgIGNhY2hla2V5ID0gKHNlbGYuZml4dHVyZW5h
bWUsIHNlbGYuX2dldHNjb3BlaXRlbShzY29wZSksIGV4dHJha2V5KQotICAgICAgICBjYWNoZSA9
IHNlbGYuY29uZmlnLl9zZXR1cGNhY2hlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZhbCA9
IGNhY2hlW2NhY2hla2V5XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBz
ZWxmLl9jaGVja19zY29wZShzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLnNjb3BlLCBzY29wZSkKLSAg
ICAgICAgICAgIHZhbCA9IHNldHVwKCkKLSAgICAgICAgICAgIGNhY2hlW2NhY2hla2V5XSA9IHZh
bAotICAgICAgICAgICAgaWYgdGVhcmRvd24gaXMgbm90IE5vbmU6Ci0KLSAgICAgICAgICAgICAg
ICBkZWYgZmluYWxpemVyKCk6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtjYWNoZWtl
eV0KLSAgICAgICAgICAgICAgICAgICAgdGVhcmRvd24odmFsKQotCi0gICAgICAgICAgICAgICAg
c2VsZi5fYWRkZmluYWxpemVyKGZpbmFsaXplciwgc2NvcGU9c2NvcGUpCi0gICAgICAgIHJldHVy
biB2YWwKLQotICAgIGRlZiBnZXRmaXh0dXJldmFsdWUoc2VsZiwgYXJnbmFtZSk6Ci0gICAgICAg
ICIiIiBEeW5hbWljYWxseSBydW4gYSBuYW1lZCBmaXh0dXJlIGZ1bmN0aW9uLgorICAgIGRlZiBn
ZXRmaXh0dXJldmFsdWUoc2VsZiwgYXJnbmFtZTogc3RyKSAtPiBBbnk6CisgICAgICAgICIiIkR5
bmFtaWNhbGx5IHJ1biBhIG5hbWVkIGZpeHR1cmUgZnVuY3Rpb24uCiAKICAgICAgICAgRGVjbGFy
aW5nIGZpeHR1cmVzIHZpYSBmdW5jdGlvbiBhcmd1bWVudCBpcyByZWNvbW1lbmRlZCB3aGVyZSBw
b3NzaWJsZS4KICAgICAgICAgQnV0IGlmIHlvdSBjYW4gb25seSBkZWNpZGUgd2hldGhlciB0byB1
c2UgYW5vdGhlciBmaXh0dXJlIGF0IHRlc3QKICAgICAgICAgc2V0dXAgdGltZSwgeW91IG1heSB1
c2UgdGhpcyBmdW5jdGlvbiB0byByZXRyaWV2ZSBpdCBpbnNpZGUgYSBmaXh0dXJlCiAgICAgICAg
IG9yIHRlc3QgZnVuY3Rpb24gYm9keS4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxm
Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkuY2FjaGVkX3Jlc3VsdFswXQotCi0gICAg
ZGVmIGdldGZ1bmNhcmd2YWx1ZShzZWxmLCBhcmduYW1lKToKLSAgICAgICAgIiIiIERlcHJlY2F0
ZWQsIHVzZSBnZXRmaXh0dXJldmFsdWUuICIiIgotICAgICAgICBmcm9tIF9weXRlc3QgaW1wb3J0
IGRlcHJlY2F0ZWQKIAotICAgICAgICB3YXJuaW5ncy53YXJuKGRlcHJlY2F0ZWQuR0VURlVOQ0FS
R1ZBTFVFLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmV0dXJu
IHNlbGYuZ2V0Zml4dHVyZXZhbHVlKGFyZ25hbWUpCisgICAgICAgIDpyYWlzZXMgcHl0ZXN0LkZp
eHR1cmVMb29rdXBFcnJvcjoKKyAgICAgICAgICAgIElmIHRoZSBnaXZlbiBmaXh0dXJlIGNvdWxk
IG5vdCBiZSBmb3VuZC4KKyAgICAgICAgIiIiCisgICAgICAgIGZpeHR1cmVkZWYgPSBzZWxmLl9n
ZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkKKyAgICAgICAgYXNzZXJ0IGZpeHR1cmVkZWYu
Y2FjaGVkX3Jlc3VsdCBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gZml4dHVyZWRlZi5jYWNo
ZWRfcmVzdWx0WzBdCiAKLSAgICBkZWYgX2dldF9hY3RpdmVfZml4dHVyZWRlZihzZWxmLCBhcmdu
YW1lKToKKyAgICBkZWYgX2dldF9hY3RpdmVfZml4dHVyZWRlZigKKyAgICAgICAgc2VsZiwgYXJn
bmFtZTogc3RyCisgICAgKSAtPiBVbmlvblsiRml4dHVyZURlZltvYmplY3RdIiwgUHNldWRvRml4
dHVyZURlZltvYmplY3RdXToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpeHR1cmVfZGVmc1thcmduYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00NzAs
MzMgKzU4NCwzNCBAQCBjbGFzcyBGaXh0dXJlUmVxdWVzdChGdW5jYXJnbmFtZXNDb21wYXRBdHRy
KToKICAgICAgICAgICAgIGV4Y2VwdCBGaXh0dXJlTG9va3VwRXJyb3I6CiAgICAgICAgICAgICAg
ICAgaWYgYXJnbmFtZSA9PSAicmVxdWVzdCI6CiAgICAgICAgICAgICAgICAgICAgIGNhY2hlZF9y
ZXN1bHQgPSAoc2VsZiwgWzBdLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBzY29wZSA9ICJm
dW5jdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSAiZnVuY3Rpb24iICAjIHR5cGU6
IF9TY29wZQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHNldWRvRml4dHVyZURlZihjYWNo
ZWRfcmVzdWx0LCBzY29wZSkKICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAjIHJlbW92
ZSBpbmRlbnQgdG8gcHJldmVudCB0aGUgcHl0aG9uMyBleGNlcHRpb24KLSAgICAgICAgIyBmcm9t
IGxlYWtpbmcgaW50byB0aGUgY2FsbAorICAgICAgICAjIFJlbW92ZSBpbmRlbnQgdG8gcHJldmVu
dCB0aGUgcHl0aG9uMyBleGNlcHRpb24KKyAgICAgICAgIyBmcm9tIGxlYWtpbmcgaW50byB0aGUg
Y2FsbC4KICAgICAgICAgc2VsZi5fY29tcHV0ZV9maXh0dXJlX3ZhbHVlKGZpeHR1cmVkZWYpCiAg
ICAgICAgIHNlbGYuX2ZpeHR1cmVfZGVmc1thcmduYW1lXSA9IGZpeHR1cmVkZWYKICAgICAgICAg
cmV0dXJuIGZpeHR1cmVkZWYKIAotICAgIGRlZiBfZ2V0X2ZpeHR1cmVzdGFjayhzZWxmKToKKyAg
ICBkZWYgX2dldF9maXh0dXJlc3RhY2soc2VsZikgLT4gTGlzdFsiRml4dHVyZURlZltBbnldIl06
CiAgICAgICAgIGN1cnJlbnQgPSBzZWxmCi0gICAgICAgIHZhbHVlcyA9IFtdCisgICAgICAgIHZh
bHVlcyA9IFtdICAjIHR5cGU6IExpc3RbRml4dHVyZURlZltBbnldXQogICAgICAgICB3aGlsZSAx
OgogICAgICAgICAgICAgZml4dHVyZWRlZiA9IGdldGF0dHIoY3VycmVudCwgIl9maXh0dXJlZGVm
IiwgTm9uZSkKICAgICAgICAgICAgIGlmIGZpeHR1cmVkZWYgaXMgTm9uZToKICAgICAgICAgICAg
ICAgICB2YWx1ZXMucmV2ZXJzZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlcwogICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChmaXh0dXJlZGVmKQorICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UoY3VycmVudCwgU3ViUmVxdWVzdCkKICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50Ll9wYXJlbnRfcmVxdWVzdAogCi0gICAgZGVmIF9jb21wdXRlX2ZpeHR1cmVfdmFsdWUoc2Vs
ZiwgZml4dHVyZWRlZik6Ci0gICAgICAgICIiIgotICAgICAgICBDcmVhdGVzIGEgU3ViUmVxdWVz
dCBiYXNlZCBvbiAic2VsZiIgYW5kIGNhbGxzIHRoZSBleGVjdXRlIG1ldGhvZCBvZiB0aGUgZ2l2
ZW4gZml4dHVyZWRlZiBvYmplY3QuIFRoaXMgd2lsbAotICAgICAgICBmb3JjZSB0aGUgRml4dHVy
ZURlZiBvYmplY3QgdG8gdGhyb3cgYXdheSBhbnkgcHJldmlvdXMgcmVzdWx0cyBhbmQgY29tcHV0
ZSBhIG5ldyBmaXh0dXJlIHZhbHVlLCB3aGljaAotICAgICAgICB3aWxsIGJlIHN0b3JlZCBpbnRv
IHRoZSBGaXh0dXJlRGVmIG9iamVjdCBpdHNlbGYuCisgICAgZGVmIF9jb21wdXRlX2ZpeHR1cmVf
dmFsdWUoc2VsZiwgZml4dHVyZWRlZjogIkZpeHR1cmVEZWZbb2JqZWN0XSIpIC0+IE5vbmU6Cisg
ICAgICAgICIiIkNyZWF0ZSBhIFN1YlJlcXVlc3QgYmFzZWQgb24gInNlbGYiIGFuZCBjYWxsIHRo
ZSBleGVjdXRlIG1ldGhvZAorICAgICAgICBvZiB0aGUgZ2l2ZW4gRml4dHVyZURlZiBvYmplY3Qu
CiAKLSAgICAgICAgOnBhcmFtIEZpeHR1cmVEZWYgZml4dHVyZWRlZjoKKyAgICAgICAgVGhpcyB3
aWxsIGZvcmNlIHRoZSBGaXh0dXJlRGVmIG9iamVjdCB0byB0aHJvdyBhd2F5IGFueSBwcmV2aW91
cworICAgICAgICByZXN1bHRzIGFuZCBjb21wdXRlIGEgbmV3IGZpeHR1cmUgdmFsdWUsIHdoaWNo
IHdpbGwgYmUgc3RvcmVkIGludG8KKyAgICAgICAgdGhlIEZpeHR1cmVEZWYgb2JqZWN0IGl0c2Vs
Zi4KICAgICAgICAgIiIiCiAgICAgICAgICMgcHJlcGFyZSBhIHN1YnJlcXVlc3Qgb2JqZWN0IGJl
Zm9yZSBjYWxsaW5nIGZpeHR1cmUgZnVuY3Rpb24KICAgICAgICAgIyAobGF0dGVyIG1hbmFnZWQg
YnkgZml4dHVyZWRlZikKQEAgLTUwOCw1NyArNjIzLDczIEBAIGNsYXNzIEZpeHR1cmVSZXF1ZXN0
KEZ1bmNhcmduYW1lc0NvbXBhdEF0dHIpOgogICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9y
LCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHBhcmFtID0gTk9UU0VUCiAgICAgICAgICAgICBw
YXJhbV9pbmRleCA9IDAKLSAgICAgICAgICAgIGlmIGZpeHR1cmVkZWYucGFyYW1zIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgaGFzX3BhcmFtcyA9IGZpeHR1cmVkZWYucGFyYW1zIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBmaXh0dXJlc19ub3Rfc3VwcG9ydGVkID0gZ2V0YXR0cihmdW5jaXRl
bSwgIm5vZnVuY2FyZ3MiLCBGYWxzZSkKKyAgICAgICAgICAgIGlmIGhhc19wYXJhbXMgYW5kIGZp
eHR1cmVzX25vdF9zdXBwb3J0ZWQ6CisgICAgICAgICAgICAgICAgbXNnID0gKAorICAgICAgICAg
ICAgICAgICAgICAie25hbWV9IGRvZXMgbm90IHN1cHBvcnQgZml4dHVyZXMsIG1heWJlIHVuaXR0
ZXN0LlRlc3RDYXNlIHN1YmNsYXNzP1xuIgorICAgICAgICAgICAgICAgICAgICAiTm9kZSBpZDog
e25vZGVpZH1cbiIKKyAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHR5cGU6IHt0eXBlbmFt
ZX0iCisgICAgICAgICAgICAgICAgKS5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9
ZnVuY2l0ZW0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZWlkPWZ1bmNpdGVtLm5vZGVp
ZCwKKyAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWU9dHlwZShmdW5jaXRlbSkuX19uYW1lX18s
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGZhaWwobXNnLCBweXRyYWNlPUZh
bHNlKQorICAgICAgICAgICAgaWYgaGFzX3BhcmFtczoKICAgICAgICAgICAgICAgICBmcmFtZSA9
IGluc3BlY3Quc3RhY2soKVszXQogICAgICAgICAgICAgICAgIGZyYW1laW5mbyA9IGluc3BlY3Qu
Z2V0ZnJhbWVpbmZvKGZyYW1lWzBdKQotICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gZnJh
bWVpbmZvLmZpbGVuYW1lCisgICAgICAgICAgICAgICAgc291cmNlX3BhdGggPSBweS5wYXRoLmxv
Y2FsKGZyYW1laW5mby5maWxlbmFtZSkKICAgICAgICAgICAgICAgICBzb3VyY2VfbGluZW5vID0g
ZnJhbWVpbmZvLmxpbmVubwotICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gcHkucGF0aC5s
b2NhbChzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgICAgICBpZiBzb3VyY2VfcGF0aC5yZWx0byhm
dW5jaXRlbS5jb25maWcucm9vdGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRo
ID0gc291cmNlX3BhdGgucmVsdG8oZnVuY2l0ZW0uY29uZmlnLnJvb3RkaXIpCisgICAgICAgICAg
ICAgICAgcmVsX3NvdXJjZV9wYXRoID0gc291cmNlX3BhdGgucmVsdG8oZnVuY2l0ZW0uY29uZmln
LnJvb3RkaXIpCisgICAgICAgICAgICAgICAgaWYgcmVsX3NvdXJjZV9wYXRoOgorICAgICAgICAg
ICAgICAgICAgICBzb3VyY2VfcGF0aF9zdHIgPSByZWxfc291cmNlX3BhdGgKKyAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aF9zdHIgPSBzdHIoc291
cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgbXNnID0gKAotICAgICAgICAgICAgICAgICAgICAi
VGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBmb3IgdGhlICIK
LSAgICAgICAgICAgICAgICAgICAgImN1cnJlbnQgdGVzdC5cblxuUmVxdWVzdGVkIGZpeHR1cmUg
J3t9JyBkZWZpbmVkIGluOlxue30iCisgICAgICAgICAgICAgICAgICAgICJUaGUgcmVxdWVzdGVk
IGZpeHR1cmUgaGFzIG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0ZXN0OlxuIgorICAgICAgICAg
ICAgICAgICAgICAiICAgIHt9XG5cbiIKKyAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBm
aXh0dXJlICd7fScgZGVmaW5lZCBpbjpcbnt9IgogICAgICAgICAgICAgICAgICAgICAiXG5cblJl
cXVlc3RlZCBoZXJlOlxue306e30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmNpdGVtLm5vZGVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuYXJnbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGdldGxvY2F0aW9uKGZpeHR1cmVkZWYuZnVuYywg
ZnVuY2l0ZW0uY29uZmlnLnJvb3RkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aF9zdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VfbGluZW5vLAogICAgICAgICAgICAgICAgICAgICApCiAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGZhaWwobXNnKQorICAgICAgICAgICAg
ICAgIGZhaWwobXNnLCBweXRyYWNlPUZhbHNlKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAg
IyBpbmRpY2VzIG1pZ2h0IG5vdCBiZSBzZXQgaWYgb2xkLXN0eWxlIG1ldGFmdW5jLmFkZGNhbGwo
KSB3YXMgdXNlZAotICAgICAgICAgICAgcGFyYW1faW5kZXggPSBmdW5jaXRlbS5jYWxsc3BlYy5p
bmRpY2VzLmdldChhcmduYW1lLCAwKQotICAgICAgICAgICAgIyBpZiBhIHBhcmFtZXRyaXplIGlu
dm9jYXRpb24gc2V0IGEgc2NvcGUgaXQgd2lsbCBvdmVycmlkZQotICAgICAgICAgICAgIyB0aGUg
c3RhdGljIHNjb3BlIGRlZmluZWQgd2l0aCB0aGUgZml4dHVyZSBmdW5jdGlvbgorICAgICAgICAg
ICAgcGFyYW1faW5kZXggPSBmdW5jaXRlbS5jYWxsc3BlYy5pbmRpY2VzW2FyZ25hbWVdCisgICAg
ICAgICAgICAjIElmIGEgcGFyYW1ldHJpemUgaW52b2NhdGlvbiBzZXQgYSBzY29wZSBpdCB3aWxs
IG92ZXJyaWRlCisgICAgICAgICAgICAjIHRoZSBzdGF0aWMgc2NvcGUgZGVmaW5lZCB3aXRoIHRo
ZSBmaXh0dXJlIGZ1bmN0aW9uLgogICAgICAgICAgICAgcGFyYW1zY29wZW51bSA9IGZ1bmNpdGVt
LmNhbGxzcGVjLl9hcmcyc2NvcGVudW0uZ2V0KGFyZ25hbWUpCiAgICAgICAgICAgICBpZiBwYXJh
bXNjb3BlbnVtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNjb3BlID0gc2NvcGVzW3Bh
cmFtc2NvcGVudW1dCiAKICAgICAgICAgc3VicmVxdWVzdCA9IFN1YlJlcXVlc3Qoc2VsZiwgc2Nv
cGUsIHBhcmFtLCBwYXJhbV9pbmRleCwgZml4dHVyZWRlZikKIAotICAgICAgICAjIGNoZWNrIGlm
IGEgaGlnaGVyLWxldmVsIHNjb3BlZCBmaXh0dXJlIGFjY2Vzc2VzIGEgbG93ZXIgbGV2ZWwgb25l
CisgICAgICAgICMgQ2hlY2sgaWYgYSBoaWdoZXItbGV2ZWwgc2NvcGVkIGZpeHR1cmUgYWNjZXNz
ZXMgYSBsb3dlciBsZXZlbCBvbmUuCiAgICAgICAgIHN1YnJlcXVlc3QuX2NoZWNrX3Njb3BlKGFy
Z25hbWUsIHNlbGYuc2NvcGUsIHNjb3BlKQotCi0gICAgICAgICMgY2xlYXIgc3lzLmV4Y19pbmZv
IGJlZm9yZSBpbnZva2luZyB0aGUgZml4dHVyZSAocHl0aG9uIGJ1Zz8pCi0gICAgICAgICMgaWYg
aXRzIG5vdCBleHBsaWNpdGx5IGNsZWFyZWQgaXQgd2lsbCBsZWFrIGludG8gdGhlIGNhbGwKLSAg
ICAgICAgZXhjX2NsZWFyKCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBjYWxsIHRoZSBm
aXh0dXJlIGZ1bmN0aW9uCisgICAgICAgICAgICAjIENhbGwgdGhlIGZpeHR1cmUgZnVuY3Rpb24u
CiAgICAgICAgICAgICBmaXh0dXJlZGVmLmV4ZWN1dGUocmVxdWVzdD1zdWJyZXF1ZXN0KQogICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgIyBpZiBmaXh0dXJlIGZ1bmN0aW9uIGZhaWxlZCBp
dCBtaWdodCBoYXZlIHJlZ2lzdGVyZWQgZmluYWxpemVycwotICAgICAgICAgICAgc2VsZi5zZXNz
aW9uLl9zZXR1cHN0YXRlLmFkZGZpbmFsaXplcigKLSAgICAgICAgICAgICAgICBmdW5jdG9vbHMu
cGFydGlhbChmaXh0dXJlZGVmLmZpbmlzaCwgcmVxdWVzdD1zdWJyZXF1ZXN0KSwKLSAgICAgICAg
ICAgICAgICBzdWJyZXF1ZXN0Lm5vZGUsCi0gICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
Ll9zY2hlZHVsZV9maW5hbGl6ZXJzKGZpeHR1cmVkZWYsIHN1YnJlcXVlc3QpCisKKyAgICBkZWYg
X3NjaGVkdWxlX2ZpbmFsaXplcnMoCisgICAgICAgIHNlbGYsIGZpeHR1cmVkZWY6ICJGaXh0dXJl
RGVmW29iamVjdF0iLCBzdWJyZXF1ZXN0OiAiU3ViUmVxdWVzdCIKKyAgICApIC0+IE5vbmU6Cisg
ICAgICAgICMgSWYgZml4dHVyZSBmdW5jdGlvbiBmYWlsZWQgaXQgbWlnaHQgaGF2ZSByZWdpc3Rl
cmVkIGZpbmFsaXplcnMuCisgICAgICAgIHNlbGYuc2Vzc2lvbi5fc2V0dXBzdGF0ZS5hZGRmaW5h
bGl6ZXIoCisgICAgICAgICAgICBmdW5jdG9vbHMucGFydGlhbChmaXh0dXJlZGVmLmZpbmlzaCwg
cmVxdWVzdD1zdWJyZXF1ZXN0KSwgc3VicmVxdWVzdC5ub2RlCisgICAgICAgICkKIAotICAgIGRl
ZiBfY2hlY2tfc2NvcGUoc2VsZiwgYXJnbmFtZSwgaW52b2tpbmdfc2NvcGUsIHJlcXVlc3RlZF9z
Y29wZSk6CisgICAgZGVmIF9jaGVja19zY29wZShzZWxmLCBhcmduYW1lLCBpbnZva2luZ19zY29w
ZTogIl9TY29wZSIsIHJlcXVlc3RlZF9zY29wZSkgLT4gTm9uZToKICAgICAgICAgaWYgYXJnbmFt
ZSA9PSAicmVxdWVzdCI6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgc2NvcGVtaXNt
YXRjaChpbnZva2luZ19zY29wZSwgcmVxdWVzdGVkX3Njb3BlKToKLSAgICAgICAgICAgICMgdHJ5
IHRvIHJlcG9ydCBzb21ldGhpbmcgaGVscGZ1bAorICAgICAgICAgICAgIyBUcnkgdG8gcmVwb3J0
IHNvbWV0aGluZyBoZWxwZnVsLgogICAgICAgICAgICAgbGluZXMgPSBzZWxmLl9mYWN0b3J5dHJh
Y2ViYWNrKCkKICAgICAgICAgICAgIGZhaWwoCiAgICAgICAgICAgICAgICAgIlNjb3BlTWlzbWF0
Y2g6IFlvdSB0cmllZCB0byBhY2Nlc3MgdGhlICVyIHNjb3BlZCAiCkBAIC01NjgsMzggKzY5OSw1
MCBAQCBjbGFzcyBGaXh0dXJlUmVxdWVzdChGdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKICAgICAg
ICAgICAgICAgICBweXRyYWNlPUZhbHNlLAogICAgICAgICAgICAgKQogCi0gICAgZGVmIF9mYWN0
b3J5dHJhY2ViYWNrKHNlbGYpOgorICAgIGRlZiBfZmFjdG9yeXRyYWNlYmFjayhzZWxmKSAtPiBM
aXN0W3N0cl06CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgZm9yIGZpeHR1cmVkZWYgaW4g
c2VsZi5fZ2V0X2ZpeHR1cmVzdGFjaygpOgogICAgICAgICAgICAgZmFjdG9yeSA9IGZpeHR1cmVk
ZWYuZnVuYwogICAgICAgICAgICAgZnMsIGxpbmVubyA9IGdldGZzbGluZW5vKGZhY3RvcnkpCiAg
ICAgICAgICAgICBwID0gc2VsZi5fcHlmdW5jaXRlbS5zZXNzaW9uLmZzcGF0aC5iZXN0cmVscGF0
aChmcykKICAgICAgICAgICAgIGFyZ3MgPSBfZm9ybWF0X2FyZ3MoZmFjdG9yeSkKLSAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgiJXM6JWQ6ICBkZWYgJXMlcyIgJSAocCwgbGluZW5vLCBmYWN0b3J5
Ll9fbmFtZV9fLCBhcmdzKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJXM6JWQ6ICBkZWYg
JXMlcyIgJSAocCwgbGluZW5vICsgMSwgZmFjdG9yeS5fX25hbWVfXywgYXJncykpCiAgICAgICAg
IHJldHVybiBsaW5lcwogCiAgICAgZGVmIF9nZXRzY29wZWl0ZW0oc2VsZiwgc2NvcGUpOgogICAg
ICAgICBpZiBzY29wZSA9PSAiZnVuY3Rpb24iOgotICAgICAgICAgICAgIyB0aGlzIG1pZ2h0IGFs
c28gYmUgYSBub24tZnVuY3Rpb24gSXRlbSBkZXNwaXRlIGl0cyBhdHRyaWJ1dGUgbmFtZQorICAg
ICAgICAgICAgIyBUaGlzIG1pZ2h0IGFsc28gYmUgYSBub24tZnVuY3Rpb24gSXRlbSBkZXNwaXRl
IGl0cyBhdHRyaWJ1dGUgbmFtZS4KICAgICAgICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVt
Ci0gICAgICAgIG5vZGUgPSBnZXRfc2NvcGVfbm9kZShzZWxmLl9weWZ1bmNpdGVtLCBzY29wZSkK
KyAgICAgICAgaWYgc2NvcGUgPT0gInBhY2thZ2UiOgorICAgICAgICAgICAgIyBGSVhNRTogX2Zp
eHR1cmVkZWYgaXMgbm90IGRlZmluZWQgb24gRml4dHVyZVJlcXVlc3QgKHRoaXMgY2xhc3MpLAor
ICAgICAgICAgICAgIyBidXQgb24gRml4dHVyZVJlcXVlc3QgKGEgc3ViY2xhc3MpLgorICAgICAg
ICAgICAgbm9kZSA9IGdldF9zY29wZV9wYWNrYWdlKHNlbGYuX3B5ZnVuY2l0ZW0sIHNlbGYuX2Zp
eHR1cmVkZWYpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBub2RlID0gZ2V0X3Njb3BlX25vZGUoc2VsZi5fcHlmdW5jaXRlbSwgc2NvcGUp
CiAgICAgICAgIGlmIG5vZGUgaXMgTm9uZSBhbmQgc2NvcGUgPT0gImNsYXNzIjoKLSAgICAgICAg
ICAgICMgZmFsbGJhY2sgdG8gZnVuY3Rpb24gaXRlbSBpdHNlbGYKKyAgICAgICAgICAgICMgRmFs
bGJhY2sgdG8gZnVuY3Rpb24gaXRlbSBpdHNlbGYuCiAgICAgICAgICAgICBub2RlID0gc2VsZi5f
cHlmdW5jaXRlbQogICAgICAgICBhc3NlcnQgbm9kZSwgJ0NvdWxkIG5vdCBvYnRhaW4gYSBub2Rl
IGZvciBzY29wZSAie30iIGZvciBmdW5jdGlvbiB7IXJ9Jy5mb3JtYXQoCiAgICAgICAgICAgICBz
Y29wZSwgc2VsZi5fcHlmdW5jaXRlbQogICAgICAgICApCiAgICAgICAgIHJldHVybiBub2RlCiAK
LSAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoK
ICAgICAgICAgcmV0dXJuICI8Rml4dHVyZVJlcXVlc3QgZm9yICVyPiIgJSAoc2VsZi5ub2RlKQog
CiAKK0BmaW5hbAogY2xhc3MgU3ViUmVxdWVzdChGaXh0dXJlUmVxdWVzdCk6Ci0gICAgIiIiIGEg
c3ViIHJlcXVlc3QgZm9yIGhhbmRsaW5nIGdldHRpbmcgYSBmaXh0dXJlIGZyb20gYQotICAgIHRl
c3QgZnVuY3Rpb24vZml4dHVyZS4gIiIiCisgICAgIiIiQSBzdWIgcmVxdWVzdCBmb3IgaGFuZGxp
bmcgZ2V0dGluZyBhIGZpeHR1cmUgZnJvbSBhIHRlc3QgZnVuY3Rpb24vZml4dHVyZS4iIiIKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzY29wZSwgcGFyYW0sIHBhcmFtX2luZGV4
LCBmaXh0dXJlZGVmKToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAg
IHJlcXVlc3Q6ICJGaXh0dXJlUmVxdWVzdCIsCisgICAgICAgIHNjb3BlOiAiX1Njb3BlIiwKKyAg
ICAgICAgcGFyYW0sCisgICAgICAgIHBhcmFtX2luZGV4OiBpbnQsCisgICAgICAgIGZpeHR1cmVk
ZWY6ICJGaXh0dXJlRGVmW29iamVjdF0iLAorICAgICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5f
cGFyZW50X3JlcXVlc3QgPSByZXF1ZXN0CiAgICAgICAgIHNlbGYuZml4dHVyZW5hbWUgPSBmaXh0
dXJlZGVmLmFyZ25hbWUKICAgICAgICAgaWYgcGFyYW0gaXMgbm90IE5PVFNFVDoKQEAgLTYxMyw2
OSArNzU2LDc5IEBAIGNsYXNzIFN1YlJlcXVlc3QoRml4dHVyZVJlcXVlc3QpOgogICAgICAgICBz
ZWxmLl9hcmcyaW5kZXggPSByZXF1ZXN0Ll9hcmcyaW5kZXgKICAgICAgICAgc2VsZi5fZml4dHVy
ZW1hbmFnZXIgPSByZXF1ZXN0Ll9maXh0dXJlbWFuYWdlcgogCi0gICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgotICAgICAgICByZXR1cm4gIjxTdWJSZXF1ZXN0ICVyIGZvciAlcj4iICUgKHNlbGYuZml4
dHVyZW5hbWUsIHNlbGYuX3B5ZnVuY2l0ZW0pCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0
cjoKKyAgICAgICAgcmV0dXJuICI8U3ViUmVxdWVzdCB7IXJ9IGZvciB7IXJ9PiIuZm9ybWF0KHNl
bGYuZml4dHVyZW5hbWUsIHNlbGYuX3B5ZnVuY2l0ZW0pCiAKLSAgICBkZWYgYWRkZmluYWxpemVy
KHNlbGYsIGZpbmFsaXplcik6CisgICAgZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXI6
IENhbGxhYmxlW1tdLCBvYmplY3RdKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9maXh0dXJlZGVm
LmFkZGZpbmFsaXplcihmaW5hbGl6ZXIpCiAKLQotY2xhc3MgU2NvcGVNaXNtYXRjaEVycm9yKEV4
Y2VwdGlvbik6Ci0gICAgIiIiIEEgZml4dHVyZSBmdW5jdGlvbiB0cmllcyB0byB1c2UgYSBkaWZm
ZXJlbnQgZml4dHVyZSBmdW5jdGlvbiB3aGljaAotICAgIHdoaWNoIGhhcyBhIGxvd2VyIHNjb3Bl
IChlLmcuIGEgU2Vzc2lvbiBvbmUgY2FsbHMgYSBmdW5jdGlvbiBvbmUpCi0gICAgIiIiCisgICAg
ZGVmIF9zY2hlZHVsZV9maW5hbGl6ZXJzKAorICAgICAgICBzZWxmLCBmaXh0dXJlZGVmOiAiRml4
dHVyZURlZltvYmplY3RdIiwgc3VicmVxdWVzdDogIlN1YlJlcXVlc3QiCisgICAgKSAtPiBOb25l
OgorICAgICAgICAjIElmIHRoZSBleGVjdXRpbmcgZml4dHVyZWRlZiB3YXMgbm90IGV4cGxpY2l0
bHkgcmVxdWVzdGVkIGluIHRoZSBhcmd1bWVudCBsaXN0ICh2aWEKKyAgICAgICAgIyBnZXRmaXh0
dXJldmFsdWUgaW5zaWRlIHRoZSBmaXh0dXJlIGNhbGwpIHRoZW4gZW5zdXJlIHRoaXMgZml4dHVy
ZSBkZWYgd2lsbCBiZSBmaW5pc2hlZAorICAgICAgICAjIGZpcnN0LgorICAgICAgICBpZiBmaXh0
dXJlZGVmLmFyZ25hbWUgbm90IGluIHNlbGYuZml4dHVyZW5hbWVzOgorICAgICAgICAgICAgZml4
dHVyZWRlZi5hZGRmaW5hbGl6ZXIoCisgICAgICAgICAgICAgICAgZnVuY3Rvb2xzLnBhcnRpYWwo
c2VsZi5fZml4dHVyZWRlZi5maW5pc2gsIHJlcXVlc3Q9c2VsZikKKyAgICAgICAgICAgICkKKyAg
ICAgICAgc3VwZXIoKS5fc2NoZWR1bGVfZmluYWxpemVycyhmaXh0dXJlZGVmLCBzdWJyZXF1ZXN0
KQogCiAKLXNjb3BlcyA9ICJzZXNzaW9uIG1vZHVsZSBjbGFzcyBmdW5jdGlvbiIuc3BsaXQoKQor
c2NvcGVzID0gWyJzZXNzaW9uIiwgInBhY2thZ2UiLCAibW9kdWxlIiwgImNsYXNzIiwgImZ1bmN0
aW9uIl0gICMgdHlwZTogTGlzdFtfU2NvcGVdCiBzY29wZW51bV9mdW5jdGlvbiA9IHNjb3Blcy5p
bmRleCgiZnVuY3Rpb24iKQogCiAKLWRlZiBzY29wZW1pc21hdGNoKGN1cnJlbnRzY29wZSwgbmV3
c2NvcGUpOgorZGVmIHNjb3BlbWlzbWF0Y2goY3VycmVudHNjb3BlOiAiX1Njb3BlIiwgbmV3c2Nv
cGU6ICJfU2NvcGUiKSAtPiBib29sOgogICAgIHJldHVybiBzY29wZXMuaW5kZXgobmV3c2NvcGUp
ID4gc2NvcGVzLmluZGV4KGN1cnJlbnRzY29wZSkKIAogCi1kZWYgc2NvcGUyaW5kZXgoc2NvcGUs
IGRlc2NyLCB3aGVyZT1Ob25lKToKK2RlZiBzY29wZTJpbmRleChzY29wZTogc3RyLCBkZXNjcjog
c3RyLCB3aGVyZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUpIC0+IGludDoKICAgICAiIiJMb29rIHVw
IHRoZSBpbmRleCBvZiBgYHNjb3BlYGAgYW5kIHJhaXNlIGEgZGVzY3JpcHRpdmUgdmFsdWUgZXJy
b3IKLSAgICBpZiBub3QgZGVmaW5lZC4KLSAgICAiIiIKKyAgICBpZiBub3QgZGVmaW5lZC4iIiIK
KyAgICBzdHJzY29wZXMgPSBzY29wZXMgICMgdHlwZTogU2VxdWVuY2Vbc3RyXQogICAgIHRyeToK
LSAgICAgICAgcmV0dXJuIHNjb3Blcy5pbmRleChzY29wZSkKKyAgICAgICAgcmV0dXJuIHN0cnNj
b3Blcy5pbmRleChzY29wZSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigKLSAgICAgICAgICAgICJ7fSB7fWhhcyBhbiB1bnN1cHBvcnRlZCBzY29wZSB2
YWx1ZSAne30nIi5mb3JtYXQoCisgICAgICAgIGZhaWwoCisgICAgICAgICAgICAie30ge31nb3Qg
YW4gdW5leHBlY3RlZCBzY29wZSB2YWx1ZSAne30nIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAg
ZGVzY3IsICJmcm9tIHt9ICIuZm9ybWF0KHdoZXJlKSBpZiB3aGVyZSBlbHNlICIiLCBzY29wZQot
ICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dHJhY2U9RmFsc2Us
CiAgICAgICAgICkKIAogCitAZmluYWwKIGNsYXNzIEZpeHR1cmVMb29rdXBFcnJvcihMb29rdXBF
cnJvcik6Ci0gICAgIiIiIGNvdWxkIG5vdCByZXR1cm4gYSByZXF1ZXN0ZWQgRml4dHVyZSAobWlz
c2luZyBvciBpbnZhbGlkKS4gIiIiCisgICAgIiIiQ291bGQgbm90IHJldHVybiBhIHJlcXVlc3Rl
ZCBmaXh0dXJlIChtaXNzaW5nIG9yIGludmFsaWQpLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGFyZ25hbWUsIHJlcXVlc3QsIG1zZz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oCisgICAg
ICAgIHNlbGYsIGFyZ25hbWU6IE9wdGlvbmFsW3N0cl0sIHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0
LCBtc2c6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgKSAtPiBOb25lOgogICAgICAgICBzZWxm
LmFyZ25hbWUgPSBhcmduYW1lCiAgICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKICAgICAg
ICAgc2VsZi5maXh0dXJlc3RhY2sgPSByZXF1ZXN0Ll9nZXRfZml4dHVyZXN0YWNrKCkKICAgICAg
ICAgc2VsZi5tc2cgPSBtc2cKIAotICAgIGRlZiBmb3JtYXRyZXByKHNlbGYpOgotICAgICAgICB0
YmxpbmVzID0gW10KKyAgICBkZWYgZm9ybWF0cmVwcihzZWxmKSAtPiAiRml4dHVyZUxvb2t1cEVy
cm9yUmVwciI6CisgICAgICAgIHRibGluZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KICAgICAg
ICAgYWRkbGluZSA9IHRibGluZXMuYXBwZW5kCiAgICAgICAgIHN0YWNrID0gW3NlbGYucmVxdWVz
dC5fcHlmdW5jaXRlbS5vYmpdCiAgICAgICAgIHN0YWNrLmV4dGVuZChtYXAobGFtYmRhIHg6IHgu
ZnVuYywgc2VsZi5maXh0dXJlc3RhY2spKQogICAgICAgICBtc2cgPSBzZWxmLm1zZwogICAgICAg
ICBpZiBtc2cgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIHRoZSBsYXN0IGZpeHR1cmUgcmFp
c2UgYW4gZXJyb3IsIGxldCdzIHByZXNlbnQKLSAgICAgICAgICAgICMgaXQgYXQgdGhlIHJlcXVl
c3Rpbmcgc2lkZQorICAgICAgICAgICAgIyBUaGUgbGFzdCBmaXh0dXJlIHJhaXNlIGFuIGVycm9y
LCBsZXQncyBwcmVzZW50CisgICAgICAgICAgICAjIGl0IGF0IHRoZSByZXF1ZXN0aW5nIHNpZGUu
CiAgICAgICAgICAgICBzdGFjayA9IHN0YWNrWzotMV0KICAgICAgICAgZm9yIGZ1bmN0aW9uIGlu
IHN0YWNrOgogICAgICAgICAgICAgZnNwYXRoLCBsaW5lbm8gPSBnZXRmc2xpbmVubyhmdW5jdGlv
bikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBsaW5lcywgXyA9IGluc3BlY3Qu
Z2V0c291cmNlbGluZXMoZ2V0X3JlYWxfZnVuYyhmdW5jdGlvbikpCi0gICAgICAgICAgICBleGNl
cHQgKElPRXJyb3IsIEluZGV4RXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICBleGNlcHQg
KE9TRXJyb3IsIEluZGV4RXJyb3IsIFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICAgZXJyb3Jf
bXNnID0gImZpbGUgJXMsIGxpbmUgJXM6IHNvdXJjZSBjb2RlIG5vdCBhdmFpbGFibGUiCiAgICAg
ICAgICAgICAgICAgYWRkbGluZShlcnJvcl9tc2cgJSAoZnNwYXRoLCBsaW5lbm8gKyAxKSkKICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWRkbGluZSgiZmlsZSAlcywgbGluZSAl
cyIgJSAoZnNwYXRoLCBsaW5lbm8gKyAxKSkKKyAgICAgICAgICAgICAgICBhZGRsaW5lKCJmaWxl
IHt9LCBsaW5lIHt9Ii5mb3JtYXQoZnNwYXRoLCBsaW5lbm8gKyAxKSkKICAgICAgICAgICAgICAg
ICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgogICAgICAgICAgICAgICAgICAgICBs
aW5lID0gbGluZS5yc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICBhZGRsaW5lKCIgICIgKyBs
aW5lKQpAQCAtNjg0LDI5ICs4MzcsNDAgQEAgY2xhc3MgRml4dHVyZUxvb2t1cEVycm9yKExvb2t1
cEVycm9yKToKIAogICAgICAgICBpZiBtc2cgaXMgTm9uZToKICAgICAgICAgICAgIGZtID0gc2Vs
Zi5yZXF1ZXN0Ll9maXh0dXJlbWFuYWdlcgotICAgICAgICAgICAgYXZhaWxhYmxlID0gW10KKyAg
ICAgICAgICAgIGF2YWlsYWJsZSA9IHNldCgpCiAgICAgICAgICAgICBwYXJlbnRpZCA9IHNlbGYu
cmVxdWVzdC5fcHlmdW5jaXRlbS5wYXJlbnQubm9kZWlkCiAgICAgICAgICAgICBmb3IgbmFtZSwg
Zml4dHVyZWRlZnMgaW4gZm0uX2FyZzJmaXh0dXJlZGVmcy5pdGVtcygpOgogICAgICAgICAgICAg
ICAgIGZhY2xpc3QgPSBsaXN0KGZtLl9tYXRjaGZhY3RvcmllcyhmaXh0dXJlZGVmcywgcGFyZW50
aWQpKQotICAgICAgICAgICAgICAgIGlmIGZhY2xpc3QgYW5kIG5hbWUgbm90IGluIGF2YWlsYWJs
ZToKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLmFwcGVuZChuYW1lKQotICAgICAgICAg
ICAgbXNnID0gImZpeHR1cmUgJXIgbm90IGZvdW5kIiAlIChzZWxmLmFyZ25hbWUsKQotICAgICAg
ICAgICAgbXNnICs9ICJcbiBhdmFpbGFibGUgZml4dHVyZXM6ICVzIiAlICgiLCAiLmpvaW4oc29y
dGVkKGF2YWlsYWJsZSkpLCkKKyAgICAgICAgICAgICAgICBpZiBmYWNsaXN0OgorICAgICAgICAg
ICAgICAgICAgICBhdmFpbGFibGUuYWRkKG5hbWUpCisgICAgICAgICAgICBpZiBzZWxmLmFyZ25h
bWUgaW4gYXZhaWxhYmxlOgorICAgICAgICAgICAgICAgIG1zZyA9ICIgcmVjdXJzaXZlIGRlcGVu
ZGVuY3kgaW52b2x2aW5nIGZpeHR1cmUgJ3t9JyBkZXRlY3RlZCIuZm9ybWF0KAorICAgICAgICAg
ICAgICAgICAgICBzZWxmLmFyZ25hbWUKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIG1zZyA9ICJmaXh0dXJlICd7fScgbm90IGZvdW5kIi5mb3Jt
YXQoc2VsZi5hcmduYW1lKQorICAgICAgICAgICAgbXNnICs9ICJcbiBhdmFpbGFibGUgZml4dHVy
ZXM6IHt9Ii5mb3JtYXQoIiwgIi5qb2luKHNvcnRlZChhdmFpbGFibGUpKSkKICAgICAgICAgICAg
IG1zZyArPSAiXG4gdXNlICdweXRlc3QgLS1maXh0dXJlcyBbdGVzdHBhdGhdJyBmb3IgaGVscCBv
biB0aGVtLiIKIAogICAgICAgICByZXR1cm4gRml4dHVyZUxvb2t1cEVycm9yUmVwcihmc3BhdGgs
IGxpbmVubywgdGJsaW5lcywgbXNnLCBzZWxmLmFyZ25hbWUpCiAKIAogY2xhc3MgRml4dHVyZUxv
b2t1cEVycm9yUmVwcihUZXJtaW5hbFJlcHIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZp
bGVuYW1lLCBmaXJzdGxpbmVubywgdGJsaW5lcywgZXJyb3JzdHJpbmcsIGFyZ25hbWUpOgorICAg
IGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZmlsZW5hbWU6IFVuaW9uW3N0
ciwgcHkucGF0aC5sb2NhbF0sCisgICAgICAgIGZpcnN0bGluZW5vOiBpbnQsCisgICAgICAgIHRi
bGluZXM6IFNlcXVlbmNlW3N0cl0sCisgICAgICAgIGVycm9yc3RyaW5nOiBzdHIsCisgICAgICAg
IGFyZ25hbWU6IE9wdGlvbmFsW3N0cl0sCisgICAgKSAtPiBOb25lOgogICAgICAgICBzZWxmLnRi
bGluZXMgPSB0YmxpbmVzCiAgICAgICAgIHNlbGYuZXJyb3JzdHJpbmcgPSBlcnJvcnN0cmluZwog
ICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICAgc2VsZi5maXJzdGxpbmVu
byA9IGZpcnN0bGluZW5vCiAgICAgICAgIHNlbGYuYXJnbmFtZSA9IGFyZ25hbWUKIAotICAgIGRl
ZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dzogVGVy
bWluYWxXcml0ZXIpIC0+IE5vbmU6CiAgICAgICAgICMgdHcubGluZSgiRml4dHVyZUxvb2t1cEVy
cm9yOiAlcyIgJShzZWxmLmFyZ25hbWUpLCByZWQ9VHJ1ZSkKICAgICAgICAgZm9yIHRibGluZSBp
biBzZWxmLnRibGluZXM6CiAgICAgICAgICAgICB0dy5saW5lKHRibGluZS5yc3RyaXAoKSkKQEAg
LTcyNSwyNjYgKzg4OSw0ODUgQEAgY2xhc3MgRml4dHVyZUxvb2t1cEVycm9yUmVwcihUZXJtaW5h
bFJlcHIpOgogICAgICAgICB0dy5saW5lKCIlczolZCIgJSAoc2VsZi5maWxlbmFtZSwgc2VsZi5m
aXJzdGxpbmVubyArIDEpKQogCiAKLWRlZiBmYWlsX2ZpeHR1cmVmdW5jKGZpeHR1cmVmdW5jLCBt
c2cpOgorZGVmIGZhaWxfZml4dHVyZWZ1bmMoZml4dHVyZWZ1bmMsIG1zZzogc3RyKSAtPiAiTm9S
ZXR1cm4iOgogICAgIGZzLCBsaW5lbm8gPSBnZXRmc2xpbmVubyhmaXh0dXJlZnVuYykKLSAgICBs
b2NhdGlvbiA9ICIlczolcyIgJSAoZnMsIGxpbmVubyArIDEpCisgICAgbG9jYXRpb24gPSAie306
e30iLmZvcm1hdChmcywgbGluZW5vICsgMSkKICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNv
dXJjZShmaXh0dXJlZnVuYykKICAgICBmYWlsKG1zZyArICI6XG5cbiIgKyBzdHIoc291cmNlLmlu
ZGVudCgpKSArICJcbiIgKyBsb2NhdGlvbiwgcHl0cmFjZT1GYWxzZSkKIAogCi1kZWYgY2FsbF9m
aXh0dXJlX2Z1bmMoZml4dHVyZWZ1bmMsIHJlcXVlc3QsIGt3YXJncyk6Ci0gICAgeWllbGRjdHgg
PSBpc19nZW5lcmF0b3IoZml4dHVyZWZ1bmMpCi0gICAgaWYgeWllbGRjdHg6Ci0gICAgICAgIGl0
ID0gZml4dHVyZWZ1bmMoKiprd2FyZ3MpCi0gICAgICAgIHJlcyA9IG5leHQoaXQpCitkZWYgY2Fs
bF9maXh0dXJlX2Z1bmMoCisgICAgZml4dHVyZWZ1bmM6ICJfRml4dHVyZUZ1bmNbX0ZpeHR1cmVW
YWx1ZV0iLCByZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCwga3dhcmdzCispIC0+IF9GaXh0dXJlVmFs
dWU6CisgICAgaWYgaXNfZ2VuZXJhdG9yKGZpeHR1cmVmdW5jKToKKyAgICAgICAgZml4dHVyZWZ1
bmMgPSBjYXN0KAorICAgICAgICAgICAgQ2FsbGFibGVbLi4uLCBHZW5lcmF0b3JbX0ZpeHR1cmVW
YWx1ZSwgTm9uZSwgTm9uZV1dLCBmaXh0dXJlZnVuYworICAgICAgICApCisgICAgICAgIGdlbmVy
YXRvciA9IGZpeHR1cmVmdW5jKCoqa3dhcmdzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBm
aXh0dXJlX3Jlc3VsdCA9IG5leHQoZ2VuZXJhdG9yKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJh
dGlvbjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgInt9
IGRpZCBub3QgeWllbGQgYSB2YWx1ZSIuZm9ybWF0KHJlcXVlc3QuZml4dHVyZW5hbWUpCisgICAg
ICAgICAgICApIGZyb20gTm9uZQorICAgICAgICBmaW5hbGl6ZXIgPSBmdW5jdG9vbHMucGFydGlh
bChfdGVhcmRvd25feWllbGRfZml4dHVyZSwgZml4dHVyZWZ1bmMsIGdlbmVyYXRvcikKKyAgICAg
ICAgcmVxdWVzdC5hZGRmaW5hbGl6ZXIoZmluYWxpemVyKQorICAgIGVsc2U6CisgICAgICAgIGZp
eHR1cmVmdW5jID0gY2FzdChDYWxsYWJsZVsuLi4sIF9GaXh0dXJlVmFsdWVdLCBmaXh0dXJlZnVu
YykKKyAgICAgICAgZml4dHVyZV9yZXN1bHQgPSBmaXh0dXJlZnVuYygqKmt3YXJncykKKyAgICBy
ZXR1cm4gZml4dHVyZV9yZXN1bHQKIAotICAgICAgICBkZWYgdGVhcmRvd24oKToKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBuZXh0KGl0KQotICAgICAgICAgICAgZXhjZXB0IFN0
b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBmYWlsX2ZpeHR1cmVmdW5jKAotICAgICAgICAgICAgICAgICAgICBmaXh0
dXJlZnVuYywgInlpZWxkX2ZpeHR1cmUgZnVuY3Rpb24gaGFzIG1vcmUgdGhhbiBvbmUgJ3lpZWxk
JyIKLSAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgcmVxdWVzdC5hZGRmaW5hbGl6ZXIodGVh
cmRvd24pCitkZWYgX3RlYXJkb3duX3lpZWxkX2ZpeHR1cmUoZml4dHVyZWZ1bmMsIGl0KSAtPiBO
b25lOgorICAgICIiIkV4ZWN1dGUgdGhlIHRlYXJkb3duIG9mIGEgZml4dHVyZSBmdW5jdGlvbiBi
eSBhZHZhbmNpbmcgdGhlIGl0ZXJhdG9yCisgICAgYWZ0ZXIgdGhlIHlpZWxkIGFuZCBlbnN1cmUg
dGhlIGl0ZXJhdGlvbiBlbmRzIChpZiBub3QgaXQgbWVhbnMgdGhlcmUgaXMKKyAgICBtb3JlIHRo
YW4gb25lIHlpZWxkIGluIHRoZSBmdW5jdGlvbikuIiIiCisgICAgdHJ5OgorICAgICAgICBuZXh0
KGl0KQorICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICBwYXNzCiAgICAgZWxzZToK
LSAgICAgICAgcmVzID0gZml4dHVyZWZ1bmMoKiprd2FyZ3MpCi0gICAgcmV0dXJuIHJlcworICAg
ICAgICBmYWlsX2ZpeHR1cmVmdW5jKGZpeHR1cmVmdW5jLCAiZml4dHVyZSBmdW5jdGlvbiBoYXMg
bW9yZSB0aGFuIG9uZSAneWllbGQnIikKKworCitkZWYgX2V2YWxfc2NvcGVfY2FsbGFibGUoCisg
ICAgc2NvcGVfY2FsbGFibGU6ICJDYWxsYWJsZVtbc3RyLCBDb25maWddLCBfU2NvcGVdIiwKKyAg
ICBmaXh0dXJlX25hbWU6IHN0ciwKKyAgICBjb25maWc6IENvbmZpZywKKykgLT4gIl9TY29wZSI6
CisgICAgdHJ5OgorICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHR5
cGluZyBtZWNoYW5pc20gdG8gc3BlY2lmeQorICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzLCBj
dXJyZW50bHkuCisgICAgICAgIHJlc3VsdCA9IHNjb3BlX2NhbGxhYmxlKGZpeHR1cmVfbmFtZT1m
aXh0dXJlX25hbWUsIGNvbmZpZz1jb25maWcpICAjIHR5cGU6IGlnbm9yZVtjYWxsLWFyZ10KKyAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAg
ICAgICAgICJFcnJvciBldmFsdWF0aW5nIHt9IHdoaWxlIGRlZmluaW5nIGZpeHR1cmUgJ3t9Jy5c
biIKKyAgICAgICAgICAgICJFeHBlY3RlZCBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSAo
KiwgZml4dHVyZV9uYW1lLCBjb25maWcpIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgc2NvcGVf
Y2FsbGFibGUsIGZpeHR1cmVfbmFtZQorICAgICAgICAgICAgKQorICAgICAgICApIGZyb20gZQor
ICAgIGlmIG5vdCBpc2luc3RhbmNlKHJlc3VsdCwgc3RyKToKKyAgICAgICAgZmFpbCgKKyAgICAg
ICAgICAgICJFeHBlY3RlZCB7fSB0byByZXR1cm4gYSAnc3RyJyB3aGlsZSBkZWZpbmluZyBmaXh0
dXJlICd7fScsIGJ1dCBpdCByZXR1cm5lZDpcbiIKKyAgICAgICAgICAgICJ7IXJ9Ii5mb3JtYXQo
c2NvcGVfY2FsbGFibGUsIGZpeHR1cmVfbmFtZSwgcmVzdWx0KSwKKyAgICAgICAgICAgIHB5dHJh
Y2U9RmFsc2UsCisgICAgICAgICkKKyAgICByZXR1cm4gcmVzdWx0CiAKIAotY2xhc3MgRml4dHVy
ZURlZihvYmplY3QpOgotICAgICIiIiBBIGNvbnRhaW5lciBmb3IgYSBmYWN0b3J5IGRlZmluaXRp
b24uICIiIgorQGZpbmFsCitjbGFzcyBGaXh0dXJlRGVmKEdlbmVyaWNbX0ZpeHR1cmVWYWx1ZV0p
OgorICAgICIiIkEgY29udGFpbmVyIGZvciBhIGZhY3RvcnkgZGVmaW5pdGlvbi4iIiIKIAogICAg
IGRlZiBfX2luaXRfXygKICAgICAgICAgc2VsZiwKLSAgICAgICAgZml4dHVyZW1hbmFnZXIsCisg
ICAgICAgIGZpeHR1cmVtYW5hZ2VyOiAiRml4dHVyZU1hbmFnZXIiLAogICAgICAgICBiYXNlaWQs
Ci0gICAgICAgIGFyZ25hbWUsCi0gICAgICAgIGZ1bmMsCi0gICAgICAgIHNjb3BlLAotICAgICAg
ICBwYXJhbXMsCi0gICAgICAgIHVuaXR0ZXN0PUZhbHNlLAotICAgICAgICBpZHM9Tm9uZSwKLSAg
ICApOgorICAgICAgICBhcmduYW1lOiBzdHIsCisgICAgICAgIGZ1bmM6ICJfRml4dHVyZUZ1bmNb
X0ZpeHR1cmVWYWx1ZV0iLAorICAgICAgICBzY29wZTogIlVuaW9uW19TY29wZSwgQ2FsbGFibGVb
W3N0ciwgQ29uZmlnXSwgX1Njb3BlXV0iLAorICAgICAgICBwYXJhbXM6IE9wdGlvbmFsW1NlcXVl
bmNlW29iamVjdF1dLAorICAgICAgICB1bml0dGVzdDogYm9vbCA9IEZhbHNlLAorICAgICAgICBp
ZHM6IE9wdGlvbmFsWworICAgICAgICAgICAgVW5pb25bCisgICAgICAgICAgICAgICAgVHVwbGVb
VW5pb25bTm9uZSwgc3RyLCBmbG9hdCwgaW50LCBib29sXSwgLi4uXSwKKyAgICAgICAgICAgICAg
ICBDYWxsYWJsZVtbQW55XSwgT3B0aW9uYWxbb2JqZWN0XV0sCisgICAgICAgICAgICBdCisgICAg
ICAgIF0gPSBOb25lLAorICAgICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5fZml4dHVyZW1hbmFn
ZXIgPSBmaXh0dXJlbWFuYWdlcgogICAgICAgICBzZWxmLmJhc2VpZCA9IGJhc2VpZCBvciAiIgog
ICAgICAgICBzZWxmLmhhc19sb2NhdGlvbiA9IGJhc2VpZCBpcyBub3QgTm9uZQogICAgICAgICBz
ZWxmLmZ1bmMgPSBmdW5jCiAgICAgICAgIHNlbGYuYXJnbmFtZSA9IGFyZ25hbWUKLSAgICAgICAg
c2VsZi5zY29wZSA9IHNjb3BlCisgICAgICAgIGlmIGNhbGxhYmxlKHNjb3BlKToKKyAgICAgICAg
ICAgIHNjb3BlXyA9IF9ldmFsX3Njb3BlX2NhbGxhYmxlKHNjb3BlLCBhcmduYW1lLCBmaXh0dXJl
bWFuYWdlci5jb25maWcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzY29wZV8gPSBzY29w
ZQogICAgICAgICBzZWxmLnNjb3BlbnVtID0gc2NvcGUyaW5kZXgoCi0gICAgICAgICAgICBzY29w
ZSBvciAiZnVuY3Rpb24iLCBkZXNjcj0iZml4dHVyZSB7fSIuZm9ybWF0KGZ1bmMuX19uYW1lX18p
LCB3aGVyZT1iYXNlaWQKKyAgICAgICAgICAgICMgVE9ETzogQ2hlY2sgaWYgdGhlIGBvcmAgaGVy
ZSBpcyByZWFsbHkgbmVjZXNzYXJ5LgorICAgICAgICAgICAgc2NvcGVfIG9yICJmdW5jdGlvbiIs
ICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAgICAgICAgIGRlc2NyPSJGaXh0dXJl
ICd7fSciLmZvcm1hdChmdW5jLl9fbmFtZV9fKSwKKyAgICAgICAgICAgIHdoZXJlPWJhc2VpZCwK
ICAgICAgICAgKQotICAgICAgICBzZWxmLnBhcmFtcyA9IHBhcmFtcwotICAgICAgICBzZWxmLmFy
Z25hbWVzID0gZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMsIGlzX21ldGhvZD11bml0dGVzdCkKKyAgICAg
ICAgc2VsZi5zY29wZSA9IHNjb3BlXworICAgICAgICBzZWxmLnBhcmFtcyA9IHBhcmFtcyAgIyB0
eXBlOiBPcHRpb25hbFtTZXF1ZW5jZVtvYmplY3RdXQorICAgICAgICBzZWxmLmFyZ25hbWVzID0g
Z2V0ZnVuY2FyZ25hbWVzKAorICAgICAgICAgICAgZnVuYywgbmFtZT1hcmduYW1lLCBpc19tZXRo
b2Q9dW5pdHRlc3QKKyAgICAgICAgKSAgIyB0eXBlOiBUdXBsZVtzdHIsIC4uLl0KICAgICAgICAg
c2VsZi51bml0dGVzdCA9IHVuaXR0ZXN0CiAgICAgICAgIHNlbGYuaWRzID0gaWRzCi0gICAgICAg
IHNlbGYuX2ZpbmFsaXplcnMgPSBbXQorICAgICAgICBzZWxmLmNhY2hlZF9yZXN1bHQgPSBOb25l
ICAjIHR5cGU6IE9wdGlvbmFsW19GaXh0dXJlQ2FjaGVkUmVzdWx0W19GaXh0dXJlVmFsdWVdXQor
ICAgICAgICBzZWxmLl9maW5hbGl6ZXJzID0gW10gICMgdHlwZTogTGlzdFtDYWxsYWJsZVtbXSwg
b2JqZWN0XV0KIAotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyKToKKyAgICBk
ZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplcjogQ2FsbGFibGVbW10sIG9iamVjdF0pIC0+
IE5vbmU6CiAgICAgICAgIHNlbGYuX2ZpbmFsaXplcnMuYXBwZW5kKGZpbmFsaXplcikKIAotICAg
IGRlZiBmaW5pc2goc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIGV4Y2VwdGlvbnMgPSBbXQorICAg
IGRlZiBmaW5pc2goc2VsZiwgcmVxdWVzdDogU3ViUmVxdWVzdCkgLT4gTm9uZToKKyAgICAgICAg
ZXhjID0gTm9uZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aGlsZSBzZWxmLl9maW5hbGl6
ZXJzOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IHNl
bGYuX2ZpbmFsaXplcnMucG9wKCkKICAgICAgICAgICAgICAgICAgICAgZnVuYygpCi0gICAgICAg
ICAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
YXBwZW5kKHN5cy5leGNfaW5mbygpKQotICAgICAgICAgICAgaWYgZXhjZXB0aW9uczoKLSAgICAg
ICAgICAgICAgICBlID0gZXhjZXB0aW9uc1swXQotICAgICAgICAgICAgICAgIGRlbCBleGNlcHRp
b25zICAjIGVuc3VyZSB3ZSBkb24ndCBrZWVwIGFsbCBmcmFtZXMgYWxpdmUgYmVjYXVzZSBvZiB0
aGUgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgcHkuYnVpbHRpbi5fcmVyYWlzZSgqZSkKLQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAg
ICAgICAgICMgWFhYIE9ubHkgZmlyc3QgZXhjZXB0aW9uIHdpbGwgYmUgc2VlbiBieSB1c2VyLAor
ICAgICAgICAgICAgICAgICAgICAjICAgICBpZGVhbGx5IGFsbCBzaG91bGQgYmUgcmVwb3J0ZWQu
CisgICAgICAgICAgICAgICAgICAgIGlmIGV4YyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjID0gZQorICAgICAgICAgICAgaWYgZXhjOgorICAgICAgICAgICAgICAgIHJhaXNl
IGV4YwogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgaG9vayA9IHNlbGYuX2ZpeHR1cmVt
YW5hZ2VyLnNlc3Npb24uZ2V0aG9va3Byb3h5KHJlcXVlc3Qubm9kZS5mc3BhdGgpCiAgICAgICAg
ICAgICBob29rLnB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1cmVkZWY9c2VsZiwg
cmVxdWVzdD1yZXF1ZXN0KQotICAgICAgICAgICAgIyBldmVuIGlmIGZpbmFsaXphdGlvbiBmYWls
cywgd2UgaW52YWxpZGF0ZQotICAgICAgICAgICAgIyB0aGUgY2FjaGVkIGZpeHR1cmUgdmFsdWUg
YW5kIHJlbW92ZQotICAgICAgICAgICAgIyBhbGwgZmluYWxpemVycyBiZWNhdXNlIHRoZXkgbWF5
IGJlIGJvdW5kIG1ldGhvZHMgd2hpY2ggd2lsbAotICAgICAgICAgICAgIyBrZWVwIGluc3RhbmNl
cyBhbGl2ZQotICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiY2FjaGVkX3Jlc3VsdCIpOgot
ICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNhY2hlZF9yZXN1bHQKKyAgICAgICAgICAgICMgRXZl
biBpZiBmaW5hbGl6YXRpb24gZmFpbHMsIHdlIGludmFsaWRhdGUgdGhlIGNhY2hlZCBmaXh0dXJl
CisgICAgICAgICAgICAjIHZhbHVlIGFuZCByZW1vdmUgYWxsIGZpbmFsaXplcnMgYmVjYXVzZSB0
aGV5IG1heSBiZSBib3VuZCBtZXRob2RzCisgICAgICAgICAgICAjIHdoaWNoIHdpbGwga2VlcCBp
bnN0YW5jZXMgYWxpdmUuCisgICAgICAgICAgICBzZWxmLmNhY2hlZF9yZXN1bHQgPSBOb25lCiAg
ICAgICAgICAgICBzZWxmLl9maW5hbGl6ZXJzID0gW10KIAotICAgIGRlZiBleGVjdXRlKHNlbGYs
IHJlcXVlc3QpOgotICAgICAgICAjIGdldCByZXF1aXJlZCBhcmd1bWVudHMgYW5kIHJlZ2lzdGVy
IG91ciBvd24gZmluaXNoKCkKLSAgICAgICAgIyB3aXRoIHRoZWlyIGZpbmFsaXphdGlvbgorICAg
IGRlZiBleGVjdXRlKHNlbGYsIHJlcXVlc3Q6IFN1YlJlcXVlc3QpIC0+IF9GaXh0dXJlVmFsdWU6
CisgICAgICAgICMgR2V0IHJlcXVpcmVkIGFyZ3VtZW50cyBhbmQgcmVnaXN0ZXIgb3VyIG93biBm
aW5pc2goKQorICAgICAgICAjIHdpdGggdGhlaXIgZmluYWxpemF0aW9uLgogICAgICAgICBmb3Ig
YXJnbmFtZSBpbiBzZWxmLmFyZ25hbWVzOgogICAgICAgICAgICAgZml4dHVyZWRlZiA9IHJlcXVl
c3QuX2dldF9hY3RpdmVfZml4dHVyZWRlZihhcmduYW1lKQogICAgICAgICAgICAgaWYgYXJnbmFt
ZSAhPSAicmVxdWVzdCI6CisgICAgICAgICAgICAgICAgIyBQc2V1ZG9GaXh0dXJlRGVmIGlzIG9u
bHkgZm9yICJyZXF1ZXN0Ii4KKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaXh0
dXJlZGVmLCBGaXh0dXJlRGVmKQogICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuYWRkZmluYWxp
emVyKGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuZmluaXNoLCByZXF1ZXN0PXJlcXVlc3QpKQogCi0g
ICAgICAgIG15X2NhY2hlX2tleSA9IHJlcXVlc3QucGFyYW1faW5kZXgKLSAgICAgICAgY2FjaGVk
X3Jlc3VsdCA9IGdldGF0dHIoc2VsZiwgImNhY2hlZF9yZXN1bHQiLCBOb25lKQotICAgICAgICBp
ZiBjYWNoZWRfcmVzdWx0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0LCBjYWNoZV9r
ZXksIGVyciA9IGNhY2hlZF9yZXN1bHQKLSAgICAgICAgICAgIGlmIG15X2NhY2hlX2tleSA9PSBj
YWNoZV9rZXk6Ci0gICAgICAgICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgICAgICAgICBweS5idWlsdGluLl9yZXJhaXNlKCplcnIpCisgICAgICAgIG15X2NhY2hlX2tl
eSA9IHNlbGYuY2FjaGVfa2V5KHJlcXVlc3QpCisgICAgICAgIGlmIHNlbGYuY2FjaGVkX3Jlc3Vs
dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgbm90ZTogY29tcGFyaXNvbiB3aXRoIGA9PWAg
Y2FuIGZhaWwgKG9yIGJlIGV4cGVuc2l2ZSkgZm9yIGUuZy4KKyAgICAgICAgICAgICMgbnVtcHkg
YXJyYXlzICgjNjQ5NykuCisgICAgICAgICAgICBjYWNoZV9rZXkgPSBzZWxmLmNhY2hlZF9yZXN1
bHRbMV0KKyAgICAgICAgICAgIGlmIG15X2NhY2hlX2tleSBpcyBjYWNoZV9rZXk6CisgICAgICAg
ICAgICAgICAgaWYgc2VsZi5jYWNoZWRfcmVzdWx0WzJdIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgICAgICBfLCB2YWwsIHRiID0gc2VsZi5jYWNoZWRfcmVzdWx0WzJdCisgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIHZhbC53aXRoX3RyYWNlYmFjayh0YikKICAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNhY2hlZF9yZXN1bHRbMF0K
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgIyB3ZSBoYXZl
IGEgcHJldmlvdXMgYnV0IGRpZmZlcmVudGx5IHBhcmFtZXRyaXplZCBmaXh0dXJlIGluc3RhbmNl
Ci0gICAgICAgICAgICAjIHNvIHdlIG5lZWQgdG8gdGVhciBpdCBkb3duIGJlZm9yZSBjcmVhdGlu
ZyBhIG5ldyBvbmUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIHByZXZpb3VzIGJ1dCBkaWZmZXJl
bnRseSBwYXJhbWV0cml6ZWQgZml4dHVyZSBpbnN0YW5jZQorICAgICAgICAgICAgIyBzbyB3ZSBu
ZWVkIHRvIHRlYXIgaXQgZG93biBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgb25lLgogICAgICAgICAg
ICAgc2VsZi5maW5pc2gocmVxdWVzdCkKLSAgICAgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihz
ZWxmLCAiY2FjaGVkX3Jlc3VsdCIpCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5jYWNoZWRfcmVz
dWx0IGlzIE5vbmUKIAogICAgICAgICBob29rID0gc2VsZi5fZml4dHVyZW1hbmFnZXIuc2Vzc2lv
bi5nZXRob29rcHJveHkocmVxdWVzdC5ub2RlLmZzcGF0aCkKLSAgICAgICAgcmV0dXJuIGhvb2su
cHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZj1zZWxmLCByZXF1ZXN0PXJlcXVlc3QpCisg
ICAgICAgIHJlc3VsdCA9IGhvb2sucHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZj1zZWxm
LCByZXF1ZXN0PXJlcXVlc3QpCisgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICI8Rml4dHVyZURlZiBu
YW1lPSVyIHNjb3BlPSVyIGJhc2VpZD0lciA+IgotICAgICAgICAgICAgJSAoc2VsZi5hcmduYW1l
LCBzZWxmLnNjb3BlLCBzZWxmLmJhc2VpZCkKKyAgICBkZWYgY2FjaGVfa2V5KHNlbGYsIHJlcXVl
c3Q6IFN1YlJlcXVlc3QpIC0+IG9iamVjdDoKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW1f
aW5kZXggaWYgbm90IGhhc2F0dHIocmVxdWVzdCwgInBhcmFtIikgZWxzZSByZXF1ZXN0LnBhcmFt
CisKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIjxGaXh0
dXJlRGVmIGFyZ25hbWU9eyFyfSBzY29wZT17IXJ9IGJhc2VpZD17IXJ9PiIuZm9ybWF0KAorICAg
ICAgICAgICAgc2VsZi5hcmduYW1lLCBzZWxmLnNjb3BlLCBzZWxmLmJhc2VpZAogICAgICAgICAp
CiAKIAotZGVmIHB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgotICAg
ICIiIiBFeGVjdXRpb24gb2YgZml4dHVyZSBzZXR1cC4gIiIiCi0gICAga3dhcmdzID0ge30KLSAg
ICBmb3IgYXJnbmFtZSBpbiBmaXh0dXJlZGVmLmFyZ25hbWVzOgotICAgICAgICBmaXhkZWYgPSBy
ZXF1ZXN0Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkKLSAgICAgICAgcmVzdWx0LCBh
cmdfY2FjaGVfa2V5LCBleGMgPSBmaXhkZWYuY2FjaGVkX3Jlc3VsdAotICAgICAgICByZXF1ZXN0
Ll9jaGVja19zY29wZShhcmduYW1lLCByZXF1ZXN0LnNjb3BlLCBmaXhkZWYuc2NvcGUpCi0gICAg
ICAgIGt3YXJnc1thcmduYW1lXSA9IHJlc3VsdAotCitkZWYgcmVzb2x2ZV9maXh0dXJlX2Z1bmN0
aW9uKAorICAgIGZpeHR1cmVkZWY6IEZpeHR1cmVEZWZbX0ZpeHR1cmVWYWx1ZV0sIHJlcXVlc3Q6
IEZpeHR1cmVSZXF1ZXN0CispIC0+ICJfRml4dHVyZUZ1bmNbX0ZpeHR1cmVWYWx1ZV0iOgorICAg
ICIiIkdldCB0aGUgYWN0dWFsIGNhbGxhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBvYnRhaW4g
dGhlIGZpeHR1cmUKKyAgICB2YWx1ZSwgZGVhbGluZyB3aXRoIHVuaXR0ZXN0LXNwZWNpZmljIGlu
c3RhbmNlcyBhbmQgYm91bmQgbWV0aG9kcy4iIiIKICAgICBmaXh0dXJlZnVuYyA9IGZpeHR1cmVk
ZWYuZnVuYwogICAgIGlmIGZpeHR1cmVkZWYudW5pdHRlc3Q6CiAgICAgICAgIGlmIHJlcXVlc3Qu
aW5zdGFuY2UgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIGJpbmQgdGhlIHVuYm91bmQgbWV0
aG9kIHRvIHRoZSBUZXN0Q2FzZSBpbnN0YW5jZQotICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBm
aXh0dXJlZGVmLmZ1bmMuX19nZXRfXyhyZXF1ZXN0Lmluc3RhbmNlKQorICAgICAgICAgICAgIyBC
aW5kIHRoZSB1bmJvdW5kIG1ldGhvZCB0byB0aGUgVGVzdENhc2UgaW5zdGFuY2UuCisgICAgICAg
ICAgICBmaXh0dXJlZnVuYyA9IGZpeHR1cmVkZWYuZnVuYy5fX2dldF9fKHJlcXVlc3QuaW5zdGFu
Y2UpICAjIHR5cGU6IGlnbm9yZVt1bmlvbi1hdHRyXQogICAgIGVsc2U6Ci0gICAgICAgICMgdGhl
IGZpeHR1cmUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgYm91bmQgdG8gdGhlIGFjdHVhbAorICAgICAg
ICAjIFRoZSBmaXh0dXJlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGJvdW5kIHRvIHRoZSBhY3R1YWwK
ICAgICAgICAgIyByZXF1ZXN0Lmluc3RhbmNlIHNvIHRoYXQgY29kZSB3b3JraW5nIHdpdGggImZp
eHR1cmVkZWYiIGJlaGF2ZXMKICAgICAgICAgIyBhcyBleHBlY3RlZC4KICAgICAgICAgaWYgcmVx
dWVzdC5pbnN0YW5jZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgSGFuZGxlIHRoZSBjYXNl
IHdoZXJlIGZpeHR1cmUgaXMgZGVmaW5lZCBub3QgaW4gYSB0ZXN0IGNsYXNzLCBidXQgc29tZSBv
dGhlciBjbGFzcworICAgICAgICAgICAgIyAoZm9yIGV4YW1wbGUgYSBwbHVnaW4gY2xhc3Mgd2l0
aCBhIGZpeHR1cmUpLCBzZWUgIzIyNzAuCisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpeHR1cmVm
dW5jLCAiX19zZWxmX18iKSBhbmQgbm90IGlzaW5zdGFuY2UoCisgICAgICAgICAgICAgICAgcmVx
dWVzdC5pbnN0YW5jZSwgZml4dHVyZWZ1bmMuX19zZWxmX18uX19jbGFzc19fICAjIHR5cGU6IGln
bm9yZVt1bmlvbi1hdHRyXQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
Zml4dHVyZWZ1bmMKICAgICAgICAgICAgIGZpeHR1cmVmdW5jID0gZ2V0aW1mdW5jKGZpeHR1cmVk
ZWYuZnVuYykKICAgICAgICAgICAgIGlmIGZpeHR1cmVmdW5jICE9IGZpeHR1cmVkZWYuZnVuYzoK
LSAgICAgICAgICAgICAgICBmaXh0dXJlZnVuYyA9IGZpeHR1cmVmdW5jLl9fZ2V0X18ocmVxdWVz
dC5pbnN0YW5jZSkKLSAgICBteV9jYWNoZV9rZXkgPSByZXF1ZXN0LnBhcmFtX2luZGV4CisgICAg
ICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBmaXh0dXJlZnVuYy5fX2dldF9fKHJlcXVlc3QuaW5z
dGFuY2UpICAjIHR5cGU6IGlnbm9yZVt1bmlvbi1hdHRyXQorICAgIHJldHVybiBmaXh0dXJlZnVu
YworCisKK2RlZiBweXRlc3RfZml4dHVyZV9zZXR1cCgKKyAgICBmaXh0dXJlZGVmOiBGaXh0dXJl
RGVmW19GaXh0dXJlVmFsdWVdLCByZXF1ZXN0OiBTdWJSZXF1ZXN0CispIC0+IF9GaXh0dXJlVmFs
dWU6CisgICAgIiIiRXhlY3V0aW9uIG9mIGZpeHR1cmUgc2V0dXAuIiIiCisgICAga3dhcmdzID0g
e30KKyAgICBmb3IgYXJnbmFtZSBpbiBmaXh0dXJlZGVmLmFyZ25hbWVzOgorICAgICAgICBmaXhk
ZWYgPSByZXF1ZXN0Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkKKyAgICAgICAgYXNz
ZXJ0IGZpeGRlZi5jYWNoZWRfcmVzdWx0IGlzIG5vdCBOb25lCisgICAgICAgIHJlc3VsdCwgYXJn
X2NhY2hlX2tleSwgZXhjID0gZml4ZGVmLmNhY2hlZF9yZXN1bHQKKyAgICAgICAgcmVxdWVzdC5f
Y2hlY2tfc2NvcGUoYXJnbmFtZSwgcmVxdWVzdC5zY29wZSwgZml4ZGVmLnNjb3BlKQorICAgICAg
ICBrd2FyZ3NbYXJnbmFtZV0gPSByZXN1bHQKKworICAgIGZpeHR1cmVmdW5jID0gcmVzb2x2ZV9m
aXh0dXJlX2Z1bmN0aW9uKGZpeHR1cmVkZWYsIHJlcXVlc3QpCisgICAgbXlfY2FjaGVfa2V5ID0g
Zml4dHVyZWRlZi5jYWNoZV9rZXkocmVxdWVzdCkKICAgICB0cnk6CiAgICAgICAgIHJlc3VsdCA9
IGNhbGxfZml4dHVyZV9mdW5jKGZpeHR1cmVmdW5jLCByZXF1ZXN0LCBrd2FyZ3MpCiAgICAgZXhj
ZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKE5v
bmUsIG15X2NhY2hlX2tleSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgIGV4Y19pbmZvID0gc3lz
LmV4Y19pbmZvKCkKKyAgICAgICAgYXNzZXJ0IGV4Y19pbmZvWzBdIGlzIG5vdCBOb25lCisgICAg
ICAgIGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdCA9IChOb25lLCBteV9jYWNoZV9rZXksIGV4Y19p
bmZvKQogICAgICAgICByYWlzZQogICAgIGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdCA9IChyZXN1
bHQsIG15X2NhY2hlX2tleSwgTm9uZSkKICAgICByZXR1cm4gcmVzdWx0CiAKIAotZGVmIF9lbnN1
cmVfaW1tdXRhYmxlX2lkcyhpZHMpOgorZGVmIF9lbnN1cmVfaW1tdXRhYmxlX2lkcygKKyAgICBp
ZHM6IE9wdGlvbmFsWworICAgICAgICBVbmlvblsKKyAgICAgICAgICAgIEl0ZXJhYmxlW1VuaW9u
W05vbmUsIHN0ciwgZmxvYXQsIGludCwgYm9vbF1dLAorICAgICAgICAgICAgQ2FsbGFibGVbW0Fu
eV0sIE9wdGlvbmFsW29iamVjdF1dLAorICAgICAgICBdCisgICAgXSwKKykgLT4gT3B0aW9uYWxb
CisgICAgVW5pb25bCisgICAgICAgIFR1cGxlW1VuaW9uW05vbmUsIHN0ciwgZmxvYXQsIGludCwg
Ym9vbF0sIC4uLl0sCisgICAgICAgIENhbGxhYmxlW1tBbnldLCBPcHRpb25hbFtvYmplY3RdXSwK
KyAgICBdCitdOgogICAgIGlmIGlkcyBpcyBOb25lOgotICAgICAgICByZXR1cm4KKyAgICAgICAg
cmV0dXJuIE5vbmUKICAgICBpZiBjYWxsYWJsZShpZHMpOgogICAgICAgICByZXR1cm4gaWRzCiAg
ICAgcmV0dXJuIHR1cGxlKGlkcykKIAogCitkZWYgX3BhcmFtc19jb252ZXJ0ZXIoCisgICAgcGFy
YW1zOiBPcHRpb25hbFtJdGVyYWJsZVtvYmplY3RdXSwKKykgLT4gT3B0aW9uYWxbVHVwbGVbb2Jq
ZWN0LCAuLi5dXToKKyAgICByZXR1cm4gdHVwbGUocGFyYW1zKSBpZiBwYXJhbXMgaXMgbm90IE5v
bmUgZWxzZSBOb25lCisKKworZGVmIHdyYXBfZnVuY3Rpb25fdG9fZXJyb3Jfb3V0X2lmX2NhbGxl
ZF9kaXJlY3RseShmdW5jdGlvbiwgZml4dHVyZV9tYXJrZXIpOgorICAgICIiIldyYXAgdGhlIGdp
dmVuIGZpeHR1cmUgZnVuY3Rpb24gc28gd2UgY2FuIHJhaXNlIGFuIGVycm9yIGFib3V0IGl0IGJl
aW5nIGNhbGxlZCBkaXJlY3RseSwKKyAgICBpbnN0ZWFkIG9mIHVzZWQgYXMgYW4gYXJndW1lbnQg
aW4gYSB0ZXN0IGZ1bmN0aW9uLiIiIgorICAgIG1lc3NhZ2UgPSAoCisgICAgICAgICdGaXh0dXJl
ICJ7bmFtZX0iIGNhbGxlZCBkaXJlY3RseS4gRml4dHVyZXMgYXJlIG5vdCBtZWFudCB0byBiZSBj
YWxsZWQgZGlyZWN0bHksXG4nCisgICAgICAgICJidXQgYXJlIGNyZWF0ZWQgYXV0b21hdGljYWxs
eSB3aGVuIHRlc3QgZnVuY3Rpb25zIHJlcXVlc3QgdGhlbSBhcyBwYXJhbWV0ZXJzLlxuIgorICAg
ICAgICAiU2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9maXh0dXJlLmh0bWwg
Zm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZml4dHVyZXMsIGFuZFxuIgorICAgICAgICAiaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI2NhbGxpbmct
Zml4dHVyZXMtZGlyZWN0bHkgYWJvdXQgaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUuIgorICAgICku
Zm9ybWF0KG5hbWU9Zml4dHVyZV9tYXJrZXIubmFtZSBvciBmdW5jdGlvbi5fX25hbWVfXykKKwor
ICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuY3Rpb24pCisgICAgZGVmIHJlc3VsdCgqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICBmYWlsKG1lc3NhZ2UsIHB5dHJhY2U9RmFsc2UpCisKKyAgICAjIEtl
ZXAgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpbiBvdXIgb3duIGN1c3RvbSBh
dHRyaWJ1dGUgc28gd2UgZG9uJ3QgdW53cmFwCisgICAgIyBmdXJ0aGVyIHRoYW4gdGhpcyBwb2lu
dCBhbmQgbG9zZSB1c2VmdWwgd3JhcHBpbmdzIGxpa2UgQG1vY2sucGF0Y2ggKCMzNzc0KS4KKyAg
ICByZXN1bHQuX19weXRlc3Rfd3JhcHBlZF9fID0gX1B5dGVzdFdyYXBwZXIoZnVuY3Rpb24pICAj
IHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisKKyAgICByZXR1cm4gcmVzdWx0CisKKworQGZp
bmFsCiBAYXR0ci5zKGZyb3plbj1UcnVlKQotY2xhc3MgRml4dHVyZUZ1bmN0aW9uTWFya2VyKG9i
amVjdCk6Ci0gICAgc2NvcGUgPSBhdHRyLmliKCkKLSAgICBwYXJhbXMgPSBhdHRyLmliKGNvbnZl
cnRlcj1hdHRyLmNvbnZlcnRlcnMub3B0aW9uYWwodHVwbGUpKQotICAgIGF1dG91c2UgPSBhdHRy
LmliKGRlZmF1bHQ9RmFsc2UpCi0gICAgaWRzID0gYXR0ci5pYihkZWZhdWx0PU5vbmUsIGNvbnZl
cnRlcj1fZW5zdXJlX2ltbXV0YWJsZV9pZHMpCi0gICAgbmFtZSA9IGF0dHIuaWIoZGVmYXVsdD1O
b25lKQorY2xhc3MgRml4dHVyZUZ1bmN0aW9uTWFya2VyOgorICAgIHNjb3BlID0gYXR0ci5pYih0
eXBlPSJVbmlvbltfU2NvcGUsIENhbGxhYmxlW1tzdHIsIENvbmZpZ10sIF9TY29wZV1dIikKKyAg
ICBwYXJhbXMgPSBhdHRyLmliKHR5cGU9T3B0aW9uYWxbVHVwbGVbb2JqZWN0LCAuLi5dXSwgY29u
dmVydGVyPV9wYXJhbXNfY29udmVydGVyKQorICAgIGF1dG91c2UgPSBhdHRyLmliKHR5cGU9Ym9v
bCwgZGVmYXVsdD1GYWxzZSkKKyAgICBpZHMgPSBhdHRyLmliKAorICAgICAgICB0eXBlPVVuaW9u
WworICAgICAgICAgICAgVHVwbGVbVW5pb25bTm9uZSwgc3RyLCBmbG9hdCwgaW50LCBib29sXSwg
Li4uXSwKKyAgICAgICAgICAgIENhbGxhYmxlW1tBbnldLCBPcHRpb25hbFtvYmplY3RdXSwKKyAg
ICAgICAgXSwKKyAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICBjb252ZXJ0ZXI9X2Vuc3Vy
ZV9pbW11dGFibGVfaWRzLAorICAgICkKKyAgICBuYW1lID0gYXR0ci5pYih0eXBlPU9wdGlvbmFs
W3N0cl0sIGRlZmF1bHQ9Tm9uZSkKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBmdW5jdGlvbik6
Ci0gICAgICAgIGlmIGlzY2xhc3MoZnVuY3Rpb24pOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiY2xhc3MgZml4dHVyZXMgbm90IHN1cHBvcnRlZCAobWF5IGJlIGluIHRoZSBmdXR1cmUp
IikKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuY3Rpb246IF9GaXh0dXJlRnVuY3Rpb24pIC0+
IF9GaXh0dXJlRnVuY3Rpb246CisgICAgICAgIGlmIGluc3BlY3QuaXNjbGFzcyhmdW5jdGlvbik6
CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjbGFzcyBmaXh0dXJlcyBub3Qgc3VwcG9y
dGVkIChtYXliZSBpbiB0aGUgZnV0dXJlKSIpCiAKICAgICAgICAgaWYgZ2V0YXR0cihmdW5jdGlv
biwgIl9weXRlc3RmaXh0dXJlZnVuY3Rpb24iLCBGYWxzZSk6CiAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJmaXh0dXJlIGlzIGJlaW5nIGFwcGxpZWQgbW9y
ZSB0aGFuIG9uY2UgdG8gdGhlIHNhbWUgZnVuY3Rpb24iCiAgICAgICAgICAgICApCiAKLSAgICAg
ICAgZnVuY3Rpb24uX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiA9IHNlbGYKKyAgICAgICAgZnVuY3Rp
b24gPSB3cmFwX2Z1bmN0aW9uX3RvX2Vycm9yX291dF9pZl9jYWxsZWRfZGlyZWN0bHkoZnVuY3Rp
b24sIHNlbGYpCisKKyAgICAgICAgbmFtZSA9IHNlbGYubmFtZSBvciBmdW5jdGlvbi5fX25hbWVf
XworICAgICAgICBpZiBuYW1lID09ICJyZXF1ZXN0IjoKKyAgICAgICAgICAgIGxvY2F0aW9uID0g
Z2V0bG9jYXRpb24oZnVuY3Rpb24pCisgICAgICAgICAgICBmYWlsKAorICAgICAgICAgICAgICAg
ICIncmVxdWVzdCcgaXMgYSByZXNlcnZlZCB3b3JkIGZvciBmaXh0dXJlcywgdXNlIGFub3RoZXIg
bmFtZTpcbiAge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24KKyAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAg
ICApCisKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBodHRwczovL2dpdGh1Yi5jb20v
cHl0aG9uL215cHkvaXNzdWVzLzIwODcuCisgICAgICAgIGZ1bmN0aW9uLl9weXRlc3RmaXh0dXJl
ZnVuY3Rpb24gPSBzZWxmICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbgogCiAKLWRlZiBmaXh0dXJlKHNjb3BlPSJmdW5jdGlvbiIsIHBhcmFtcz1O
b25lLCBhdXRvdXNlPUZhbHNlLCBpZHM9Tm9uZSwgbmFtZT1Ob25lKToKK0BvdmVybG9hZAorZGVm
IGZpeHR1cmUoCisgICAgZml4dHVyZV9mdW5jdGlvbjogX0ZpeHR1cmVGdW5jdGlvbiwKKyAgICAq
LAorICAgIHNjb3BlOiAiVW5pb25bX1Njb3BlLCBDYWxsYWJsZVtbc3RyLCBDb25maWddLCBfU2Nv
cGVdXSIgPSAuLi4sCisgICAgcGFyYW1zOiBPcHRpb25hbFtJdGVyYWJsZVtvYmplY3RdXSA9IC4u
LiwKKyAgICBhdXRvdXNlOiBib29sID0gLi4uLAorICAgIGlkczogT3B0aW9uYWxbCisgICAgICAg
IFVuaW9uWworICAgICAgICAgICAgSXRlcmFibGVbVW5pb25bTm9uZSwgc3RyLCBmbG9hdCwgaW50
LCBib29sXV0sCisgICAgICAgICAgICBDYWxsYWJsZVtbQW55XSwgT3B0aW9uYWxbb2JqZWN0XV0s
CisgICAgICAgIF0KKyAgICBdID0gLi4uLAorICAgIG5hbWU6IE9wdGlvbmFsW3N0cl0gPSAuLi4K
KykgLT4gX0ZpeHR1cmVGdW5jdGlvbjoKKyAgICAuLi4KKworCitAb3ZlcmxvYWQgICMgbm9xYTog
RjgxMQorZGVmIGZpeHR1cmUoICAjIG5vcWE6IEY4MTEKKyAgICBmaXh0dXJlX2Z1bmN0aW9uOiBO
b25lID0gLi4uLAorICAgICosCisgICAgc2NvcGU6ICJVbmlvbltfU2NvcGUsIENhbGxhYmxlW1tz
dHIsIENvbmZpZ10sIF9TY29wZV1dIiA9IC4uLiwKKyAgICBwYXJhbXM6IE9wdGlvbmFsW0l0ZXJh
YmxlW29iamVjdF1dID0gLi4uLAorICAgIGF1dG91c2U6IGJvb2wgPSAuLi4sCisgICAgaWRzOiBP
cHRpb25hbFsKKyAgICAgICAgVW5pb25bCisgICAgICAgICAgICBJdGVyYWJsZVtVbmlvbltOb25l
LCBzdHIsIGZsb2F0LCBpbnQsIGJvb2xdXSwKKyAgICAgICAgICAgIENhbGxhYmxlW1tBbnldLCBP
cHRpb25hbFtvYmplY3RdXSwKKyAgICAgICAgXQorICAgIF0gPSAuLi4sCisgICAgbmFtZTogT3B0
aW9uYWxbc3RyXSA9IE5vbmUKKykgLT4gRml4dHVyZUZ1bmN0aW9uTWFya2VyOgorICAgIC4uLgor
CisKK2RlZiBmaXh0dXJlKCAgIyBub3FhOiBGODExCisgICAgZml4dHVyZV9mdW5jdGlvbjogT3B0
aW9uYWxbX0ZpeHR1cmVGdW5jdGlvbl0gPSBOb25lLAorICAgICosCisgICAgc2NvcGU6ICJVbmlv
bltfU2NvcGUsIENhbGxhYmxlW1tzdHIsIENvbmZpZ10sIF9TY29wZV1dIiA9ICJmdW5jdGlvbiIs
CisgICAgcGFyYW1zOiBPcHRpb25hbFtJdGVyYWJsZVtvYmplY3RdXSA9IE5vbmUsCisgICAgYXV0
b3VzZTogYm9vbCA9IEZhbHNlLAorICAgIGlkczogT3B0aW9uYWxbCisgICAgICAgIFVuaW9uWwor
ICAgICAgICAgICAgSXRlcmFibGVbVW5pb25bTm9uZSwgc3RyLCBmbG9hdCwgaW50LCBib29sXV0s
CisgICAgICAgICAgICBDYWxsYWJsZVtbQW55XSwgT3B0aW9uYWxbb2JqZWN0XV0sCisgICAgICAg
IF0KKyAgICBdID0gTm9uZSwKKyAgICBuYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZQorKSAtPiBV
bmlvbltGaXh0dXJlRnVuY3Rpb25NYXJrZXIsIF9GaXh0dXJlRnVuY3Rpb25dOgogICAgICIiIkRl
Y29yYXRvciB0byBtYXJrIGEgZml4dHVyZSBmYWN0b3J5IGZ1bmN0aW9uLgogCi0gICAgVGhpcyBk
ZWNvcmF0b3IgY2FuIGJlIHVzZWQgKHdpdGggb3Igd2l0aG91dCBwYXJhbWV0ZXJzKSB0byBkZWZp
bmUgYQotICAgIGZpeHR1cmUgZnVuY3Rpb24uICBUaGUgbmFtZSBvZiB0aGUgZml4dHVyZSBmdW5j
dGlvbiBjYW4gbGF0ZXIgYmUKLSAgICByZWZlcmVuY2VkIHRvIGNhdXNlIGl0cyBpbnZvY2F0aW9u
IGFoZWFkIG9mIHJ1bm5pbmcgdGVzdHM6IHRlc3QKLSAgICBtb2R1bGVzIG9yIGNsYXNzZXMgY2Fu
IHVzZSB0aGUgcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoZml4dHVyZW5hbWUpCi0gICAgbWFya2Vy
LiAgVGVzdCBmdW5jdGlvbnMgY2FuIGRpcmVjdGx5IHVzZSBmaXh0dXJlIG5hbWVzIGFzIGlucHV0
Ci0gICAgYXJndW1lbnRzIGluIHdoaWNoIGNhc2UgdGhlIGZpeHR1cmUgaW5zdGFuY2UgcmV0dXJu
ZWQgZnJvbSB0aGUgZml4dHVyZQotICAgIGZ1bmN0aW9uIHdpbGwgYmUgaW5qZWN0ZWQuCi0KLSAg
ICA6YXJnIHNjb3BlOiB0aGUgc2NvcGUgZm9yIHdoaWNoIHRoaXMgZml4dHVyZSBpcyBzaGFyZWQs
IG9uZSBvZgotICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgKGRlZmF1bHQpLCAiY2xhc3MiLCAi
bW9kdWxlIiBvciAic2Vzc2lvbiIuCi0KLSAgICA6YXJnIHBhcmFtczogYW4gb3B0aW9uYWwgbGlz
dCBvZiBwYXJhbWV0ZXJzIHdoaWNoIHdpbGwgY2F1c2UgbXVsdGlwbGUKLSAgICAgICAgICAgICAg
ICBpbnZvY2F0aW9ucyBvZiB0aGUgZml4dHVyZSBmdW5jdGlvbiBhbmQgYWxsIG9mIHRoZSB0ZXN0
cwotICAgICAgICAgICAgICAgIHVzaW5nIGl0LgotCi0gICAgOmFyZyBhdXRvdXNlOiBpZiBUcnVl
LCB0aGUgZml4dHVyZSBmdW5jIGlzIGFjdGl2YXRlZCBmb3IgYWxsIHRlc3RzIHRoYXQKLSAgICAg
ICAgICAgICAgICBjYW4gc2VlIGl0LiAgSWYgRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGVuIGFuIGV4
cGxpY2l0Ci0gICAgICAgICAgICAgICAgcmVmZXJlbmNlIGlzIG5lZWRlZCB0byBhY3RpdmF0ZSB0
aGUgZml4dHVyZS4KLQotICAgIDphcmcgaWRzOiBsaXN0IG9mIHN0cmluZyBpZHMgZWFjaCBjb3Jy
ZXNwb25kaW5nIHRvIHRoZSBwYXJhbXMKLSAgICAgICAgICAgICAgICBzbyB0aGF0IHRoZXkgYXJl
IHBhcnQgb2YgdGhlIHRlc3QgaWQuIElmIG5vIGlkcyBhcmUgcHJvdmlkZWQKLSAgICAgICAgICAg
ICAgICB0aGV5IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgcGFyYW1z
LgotCi0gICAgOmFyZyBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgZml4dHVyZS4gVGhpcyBkZWZhdWx0
cyB0byB0aGUgbmFtZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZWNvcmF0ZWQgZnVuY3Rpb24u
IElmIGEgZml4dHVyZSBpcyB1c2VkIGluIHRoZSBzYW1lIG1vZHVsZSBpbgotICAgICAgICAgICAg
ICAgIHdoaWNoIGl0IGlzIGRlZmluZWQsIHRoZSBmdW5jdGlvbiBuYW1lIG9mIHRoZSBmaXh0dXJl
IHdpbGwgYmUKLSAgICAgICAgICAgICAgICBzaGFkb3dlZCBieSB0aGUgZnVuY3Rpb24gYXJnIHRo
YXQgcmVxdWVzdHMgdGhlIGZpeHR1cmU7IG9uZSB3YXkKLSAgICAgICAgICAgICAgICB0byByZXNv
bHZlIHRoaXMgaXMgdG8gbmFtZSB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAg
ICAgYGBmaXh0dXJlXzxmaXh0dXJlbmFtZT5gYCBhbmQgdGhlbiB1c2UKLSAgICAgICAgICAgICAg
ICBgYEBweXRlc3QuZml4dHVyZShuYW1lPSc8Zml4dHVyZW5hbWU+JylgYC4KLQotICAgIEZpeHR1
cmVzIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgdGhlaXIgdmFsdWVzIHRvIHRlc3QgZnVuY3Rpb25z
IHVzaW5nIGEgYGB5aWVsZGBgIHN0YXRlbWVudCwKLSAgICBpbnN0ZWFkIG9mIGBgcmV0dXJuYGAu
IEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgYmxvY2sgYWZ0ZXIgdGhlIGBgeWllbGRgYCBzdGF0ZW1l
bnQgaXMgZXhlY3V0ZWQKLSAgICBhcyB0ZWFyZG93biBjb2RlIHJlZ2FyZGxlc3Mgb2YgdGhlIHRl
c3Qgb3V0Y29tZS4gQSBmaXh0dXJlIGZ1bmN0aW9uIG11c3QgeWllbGQgZXhhY3RseSBvbmNlLgor
ICAgIFRoaXMgZGVjb3JhdG9yIGNhbiBiZSB1c2VkLCB3aXRoIG9yIHdpdGhvdXQgcGFyYW1ldGVy
cywgdG8gZGVmaW5lIGEKKyAgICBmaXh0dXJlIGZ1bmN0aW9uLgorCisgICAgVGhlIG5hbWUgb2Yg
dGhlIGZpeHR1cmUgZnVuY3Rpb24gY2FuIGxhdGVyIGJlIHJlZmVyZW5jZWQgdG8gY2F1c2UgaXRz
CisgICAgaW52b2NhdGlvbiBhaGVhZCBvZiBydW5uaW5nIHRlc3RzOiB0ZXN0IG1vZHVsZXMgb3Ig
Y2xhc3NlcyBjYW4gdXNlIHRoZQorICAgIGBgcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoZml4dHVy
ZW5hbWUpYGAgbWFya2VyLgorCisgICAgVGVzdCBmdW5jdGlvbnMgY2FuIGRpcmVjdGx5IHVzZSBm
aXh0dXJlIG5hbWVzIGFzIGlucHV0IGFyZ3VtZW50cyBpbiB3aGljaAorICAgIGNhc2UgdGhlIGZp
eHR1cmUgaW5zdGFuY2UgcmV0dXJuZWQgZnJvbSB0aGUgZml4dHVyZSBmdW5jdGlvbiB3aWxsIGJl
CisgICAgaW5qZWN0ZWQuCisKKyAgICBGaXh0dXJlcyBjYW4gcHJvdmlkZSB0aGVpciB2YWx1ZXMg
dG8gdGVzdCBmdW5jdGlvbnMgdXNpbmcgYGByZXR1cm5gYCBvcgorICAgIGBgeWllbGRgYCBzdGF0
ZW1lbnRzLiBXaGVuIHVzaW5nIGBgeWllbGRgYCB0aGUgY29kZSBibG9jayBhZnRlciB0aGUKKyAg
ICBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGFzIHRlYXJkb3duIGNvZGUgcmVnYXJk
bGVzcyBvZiB0aGUgdGVzdAorICAgIG91dGNvbWUsIGFuZCBtdXN0IHlpZWxkIGV4YWN0bHkgb25j
ZS4KKworICAgIDpwYXJhbSBzY29wZToKKyAgICAgICAgVGhlIHNjb3BlIGZvciB3aGljaCB0aGlz
IGZpeHR1cmUgaXMgc2hhcmVkOyBvbmUgb2YgYGAiZnVuY3Rpb24iYGAKKyAgICAgICAgKGRlZmF1
bHQpLCBgYCJjbGFzcyJgYCwgYGAibW9kdWxlImBgLCBgYCJwYWNrYWdlImBgIG9yIGBgInNlc3Np
b24iYGAuCisKKyAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbWF5IGFsc28gYmUgYSBjYWxsYWJsZSB3
aGljaCByZWNlaXZlcyBgYChmaXh0dXJlX25hbWUsIGNvbmZpZylgYAorICAgICAgICBhcyBwYXJh
bWV0ZXJzLCBhbmQgbXVzdCByZXR1cm4gYSBgYHN0cmBgIHdpdGggb25lIG9mIHRoZSB2YWx1ZXMg
bWVudGlvbmVkIGFib3ZlLgorCisgICAgICAgIFNlZSA6cmVmOmBkeW5hbWljIHNjb3BlYCBpbiB0
aGUgZG9jcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgIDpwYXJhbSBwYXJhbXM6CisgICAg
ICAgIEFuIG9wdGlvbmFsIGxpc3Qgb2YgcGFyYW1ldGVycyB3aGljaCB3aWxsIGNhdXNlIG11bHRp
cGxlIGludm9jYXRpb25zCisgICAgICAgIG9mIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIGFuZCBhbGwg
b2YgdGhlIHRlc3RzIHVzaW5nIGl0LiBUaGUgY3VycmVudAorICAgICAgICBwYXJhbWV0ZXIgaXMg
YXZhaWxhYmxlIGluIGBgcmVxdWVzdC5wYXJhbWBgLgorCisgICAgOnBhcmFtIGF1dG91c2U6Cisg
ICAgICAgIElmIFRydWUsIHRoZSBmaXh0dXJlIGZ1bmMgaXMgYWN0aXZhdGVkIGZvciBhbGwgdGVz
dHMgdGhhdCBjYW4gc2VlIGl0LgorICAgICAgICBJZiBGYWxzZSAodGhlIGRlZmF1bHQpLCBhbiBl
eHBsaWNpdCByZWZlcmVuY2UgaXMgbmVlZGVkIHRvIGFjdGl2YXRlCisgICAgICAgIHRoZSBmaXh0
dXJlLgorCisgICAgOnBhcmFtIGlkczoKKyAgICAgICAgTGlzdCBvZiBzdHJpbmcgaWRzIGVhY2gg
Y29ycmVzcG9uZGluZyB0byB0aGUgcGFyYW1zIHNvIHRoYXQgdGhleSBhcmUKKyAgICAgICAgcGFy
dCBvZiB0aGUgdGVzdCBpZC4gSWYgbm8gaWRzIGFyZSBwcm92aWRlZCB0aGV5IHdpbGwgYmUgZ2Vu
ZXJhdGVkCisgICAgICAgIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgcGFyYW1zLgorCisgICAgOnBh
cmFtIG5hbWU6CisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaXh0dXJlLiBUaGlzIGRlZmF1bHRz
IHRvIHRoZSBuYW1lIG9mIHRoZSBkZWNvcmF0ZWQKKyAgICAgICAgZnVuY3Rpb24uIElmIGEgZml4
dHVyZSBpcyB1c2VkIGluIHRoZSBzYW1lIG1vZHVsZSBpbiB3aGljaCBpdCBpcworICAgICAgICBk
ZWZpbmVkLCB0aGUgZnVuY3Rpb24gbmFtZSBvZiB0aGUgZml4dHVyZSB3aWxsIGJlIHNoYWRvd2Vk
IGJ5IHRoZQorICAgICAgICBmdW5jdGlvbiBhcmcgdGhhdCByZXF1ZXN0cyB0aGUgZml4dHVyZTsg
b25lIHdheSB0byByZXNvbHZlIHRoaXMgaXMgdG8KKyAgICAgICAgbmFtZSB0aGUgZGVjb3JhdGVk
IGZ1bmN0aW9uIGBgZml4dHVyZV88Zml4dHVyZW5hbWU+YGAgYW5kIHRoZW4gdXNlCisgICAgICAg
IGBgQHB5dGVzdC5maXh0dXJlKG5hbWU9JzxmaXh0dXJlbmFtZT4nKWBgLgogICAgICIiIgotICAg
IGlmIGNhbGxhYmxlKHNjb3BlKSBhbmQgcGFyYW1zIGlzIE5vbmUgYW5kIGF1dG91c2UgaXMgRmFs
c2U6Ci0gICAgICAgICMgZGlyZWN0IGRlY29yYXRpb24KLSAgICAgICAgcmV0dXJuIEZpeHR1cmVG
dW5jdGlvbk1hcmtlcigiZnVuY3Rpb24iLCBwYXJhbXMsIGF1dG91c2UsIG5hbWU9bmFtZSkoc2Nv
cGUpCi0gICAgaWYgcGFyYW1zIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShwYXJhbXMs
IChsaXN0LCB0dXBsZSkpOgotICAgICAgICBwYXJhbXMgPSBsaXN0KHBhcmFtcykKLSAgICByZXR1
cm4gRml4dHVyZUZ1bmN0aW9uTWFya2VyKHNjb3BlLCBwYXJhbXMsIGF1dG91c2UsIGlkcz1pZHMs
IG5hbWU9bmFtZSkKKyAgICBmaXh0dXJlX21hcmtlciA9IEZpeHR1cmVGdW5jdGlvbk1hcmtlcigK
KyAgICAgICAgc2NvcGU9c2NvcGUsIHBhcmFtcz1wYXJhbXMsIGF1dG91c2U9YXV0b3VzZSwgaWRz
PWlkcywgbmFtZT1uYW1lLAorICAgICkKKworICAgICMgRGlyZWN0IGRlY29yYXRpb24uCisgICAg
aWYgZml4dHVyZV9mdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIGZpeHR1cmVfbWFya2VyKGZpeHR1
cmVfZnVuY3Rpb24pCiAKKyAgICByZXR1cm4gZml4dHVyZV9tYXJrZXIKIAotZGVmIHlpZWxkX2Zp
eHR1cmUoc2NvcGU9ImZ1bmN0aW9uIiwgcGFyYW1zPU5vbmUsIGF1dG91c2U9RmFsc2UsIGlkcz1O
b25lLCBuYW1lPU5vbmUpOgotICAgICIiIiAocmV0dXJuIGEpIGRlY29yYXRvciB0byBtYXJrIGEg
eWllbGQtZml4dHVyZSBmYWN0b3J5IGZ1bmN0aW9uLgorCitkZWYgeWllbGRfZml4dHVyZSgKKyAg
ICBmaXh0dXJlX2Z1bmN0aW9uPU5vbmUsCisgICAgKmFyZ3MsCisgICAgc2NvcGU9ImZ1bmN0aW9u
IiwKKyAgICBwYXJhbXM9Tm9uZSwKKyAgICBhdXRvdXNlPUZhbHNlLAorICAgIGlkcz1Ob25lLAor
ICAgIG5hbWU9Tm9uZQorKToKKyAgICAiIiIoUmV0dXJuIGEpIGRlY29yYXRvciB0byBtYXJrIGEg
eWllbGQtZml4dHVyZSBmYWN0b3J5IGZ1bmN0aW9uLgogCiAgICAgLi4gZGVwcmVjYXRlZDo6IDMu
MAogICAgICAgICBVc2UgOnB5OmZ1bmM6YHB5dGVzdC5maXh0dXJlYCBkaXJlY3RseSBpbnN0ZWFk
LgogICAgICIiIgotICAgIGlmIGNhbGxhYmxlKHNjb3BlKSBhbmQgcGFyYW1zIGlzIE5vbmUgYW5k
IG5vdCBhdXRvdXNlOgotICAgICAgICAjIGRpcmVjdCBkZWNvcmF0aW9uCi0gICAgICAgIHJldHVy
biBGaXh0dXJlRnVuY3Rpb25NYXJrZXIoImZ1bmN0aW9uIiwgcGFyYW1zLCBhdXRvdXNlLCBpZHM9
aWRzLCBuYW1lPW5hbWUpKAotICAgICAgICAgICAgc2NvcGUKLSAgICAgICAgKQotICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiBGaXh0dXJlRnVuY3Rpb25NYXJrZXIoc2NvcGUsIHBhcmFtcywgYXV0
b3VzZSwgaWRzPWlkcywgbmFtZT1uYW1lKQotCi0KLWRlZmF1bHRmdW5jYXJncHJlZml4bWFya2Vy
ID0gZml4dHVyZSgpCisgICAgcmV0dXJuIGZpeHR1cmUoCisgICAgICAgIGZpeHR1cmVfZnVuY3Rp
b24sCisgICAgICAgICphcmdzLAorICAgICAgICBzY29wZT1zY29wZSwKKyAgICAgICAgcGFyYW1z
PXBhcmFtcywKKyAgICAgICAgYXV0b3VzZT1hdXRvdXNlLAorICAgICAgICBpZHM9aWRzLAorICAg
ICAgICBuYW1lPW5hbWUsCisgICAgKQogCiAKIEBmaXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKLWRl
ZiBweXRlc3Rjb25maWcocmVxdWVzdCk6CitkZWYgcHl0ZXN0Y29uZmlnKHJlcXVlc3Q6IEZpeHR1
cmVSZXF1ZXN0KSAtPiBDb25maWc6CiAgICAgIiIiU2Vzc2lvbi1zY29wZWQgZml4dHVyZSB0aGF0
IHJldHVybnMgdGhlIDpjbGFzczpgX3B5dGVzdC5jb25maWcuQ29uZmlnYCBvYmplY3QuCiAKICAg
ICBFeGFtcGxlOjoKIAogICAgICAgICBkZWYgdGVzdF9mb28ocHl0ZXN0Y29uZmlnKToKLSAgICAg
ICAgICAgIGlmIHB5dGVzdGNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKToKKyAgICAgICAgICAg
IGlmIHB5dGVzdGNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+IDA6CiAgICAgICAgICAgICAg
ICAgLi4uCiAKICAgICAiIiIKICAgICByZXR1cm4gcmVxdWVzdC5jb25maWcKIAogCi1jbGFzcyBG
aXh0dXJlTWFuYWdlcihvYmplY3QpOgotICAgICIiIgotICAgIHB5dGVzdCBmaXh0dXJlcyBkZWZp
bml0aW9ucyBhbmQgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGFuZCBtYW5hZ2VkCitkZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4gTm9uZToKKyAgICBwYXJzZXIuYWRkaW5pKAor
ICAgICAgICAidXNlZml4dHVyZXMiLAorICAgICAgICB0eXBlPSJhcmdzIiwKKyAgICAgICAgZGVm
YXVsdD1bXSwKKyAgICAgICAgaGVscD0ibGlzdCBvZiBkZWZhdWx0IGZpeHR1cmVzIHRvIGJlIHVz
ZWQgd2l0aCB0aGlzIHByb2plY3QiLAorICAgICkKKworCitjbGFzcyBGaXh0dXJlTWFuYWdlcjoK
KyAgICAiIiJweXRlc3QgZml4dHVyZSBkZWZpbml0aW9ucyBhbmQgaW5mb3JtYXRpb24gaXMgc3Rv
cmVkIGFuZCBtYW5hZ2VkCiAgICAgZnJvbSB0aGlzIGNsYXNzLgogCiAgICAgRHVyaW5nIGNvbGxl
Y3Rpb24gZm0ucGFyc2VmYWN0b3JpZXMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gcGFy
c2UKQEAgLTk5Nyw3ICsxMzgwLDcgQEAgY2xhc3MgRml4dHVyZU1hbmFnZXIob2JqZWN0KToKICAg
ICB3aGljaCB0aGVtc2VsdmVzIG9mZmVyIGEgZml4dHVyZW5hbWVzIGF0dHJpYnV0ZS4KIAogICAg
IFRoZSBGdW5jRml4dHVyZUluZm8gb2JqZWN0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGZpeHR1
cmVzIGFuZCBGaXh0dXJlRGVmcwotICAgIHJlbGV2YW50IGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rp
b24uICBBbiBpbml0aWFsIGxpc3Qgb2YgZml4dHVyZXMgaXMKKyAgICByZWxldmFudCBmb3IgYSBw
YXJ0aWN1bGFyIGZ1bmN0aW9uLiBBbiBpbml0aWFsIGxpc3Qgb2YgZml4dHVyZXMgaXMKICAgICBh
c3NlbWJsZWQgbGlrZSB0aGlzOgogCiAgICAgLSBpbmktZGVmaW5lZCB1c2VmaXh0dXJlcwpAQCAt
MTAwNyw5MSArMTM5MCwxMzIgQEAgY2xhc3MgRml4dHVyZU1hbmFnZXIob2JqZWN0KToKIAogICAg
IFN1YnNlcXVlbnRseSB0aGUgZnVuY2ZpeHR1cmVpbmZvLmZpeHR1cmVuYW1lcyBhdHRyaWJ1dGUg
aXMgY29tcHV0ZWQKICAgICBhcyB0aGUgY2xvc3VyZSBvZiB0aGUgZml4dHVyZXMgbmVlZGVkIHRv
IHNldHVwIHRoZSBpbml0aWFsIGZpeHR1cmVzLAotICAgIGkuIGUuIGZpeHR1cmVzIG5lZWRlZCBi
eSBmaXh0dXJlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzIGFyZSBhcHBlbmRlZAorICAgIGkuZS4gZml4
dHVyZXMgbmVlZGVkIGJ5IGZpeHR1cmUgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgYXJlIGFwcGVuZGVk
CiAgICAgdG8gdGhlIGZpeHR1cmVuYW1lcyBsaXN0LgogCiAgICAgVXBvbiB0aGUgdGVzdC1zZXR1
cCBwaGFzZXMgYWxsIGZpeHR1cmVuYW1lcyBhcmUgaW5zdGFudGlhdGVkLCByZXRyaWV2ZWQKICAg
ICBieSBhIGxvb2t1cCBvZiB0aGVpciBGdW5jRml4dHVyZUluZm8uCiAgICAgIiIiCiAKLSAgICBf
YXJncHJlZml4ID0gInB5dGVzdF9mdW5jYXJnX18iCiAgICAgRml4dHVyZUxvb2t1cEVycm9yID0g
Rml4dHVyZUxvb2t1cEVycm9yCiAgICAgRml4dHVyZUxvb2t1cEVycm9yUmVwciA9IEZpeHR1cmVM
b29rdXBFcnJvclJlcHIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXNzaW9uKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBOb25lOgogICAgICAgICBz
ZWxmLnNlc3Npb24gPSBzZXNzaW9uCi0gICAgICAgIHNlbGYuY29uZmlnID0gc2Vzc2lvbi5jb25m
aWcKLSAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0ge30KLSAgICAgICAgc2VsZi5faG9s
ZGVyb2Jqc2VlbiA9IHNldCgpCi0gICAgICAgIHNlbGYuX2FyZzJmaW5pc2ggPSB7fQotICAgICAg
ICBzZWxmLl9ub2RlaWRfYW5kX2F1dG91c2VuYW1lcyA9IFsoIiIsIHNlbGYuY29uZmlnLmdldGlu
aSgidXNlZml4dHVyZXMiKSldCisgICAgICAgIHNlbGYuY29uZmlnID0gc2Vzc2lvbi5jb25maWcg
ICMgdHlwZTogQ29uZmlnCisgICAgICAgIHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9IHt9ICAjIHR5
cGU6IERpY3Rbc3RyLCBMaXN0W0ZpeHR1cmVEZWZbQW55XV1dCisgICAgICAgIHNlbGYuX2hvbGRl
cm9ianNlZW4gPSBzZXQoKSAgIyB0eXBlOiBTZXRbb2JqZWN0XQorICAgICAgICBzZWxmLl9ub2Rl
aWRfYW5kX2F1dG91c2VuYW1lcyA9IFsKKyAgICAgICAgICAgICgiIiwgc2VsZi5jb25maWcuZ2V0
aW5pKCJ1c2VmaXh0dXJlcyIpKQorICAgICAgICBdICAjIHR5cGU6IExpc3RbVHVwbGVbc3RyLCBM
aXN0W3N0cl1dXQogICAgICAgICBzZXNzaW9uLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVy
KHNlbGYsICJmdW5jbWFuYWdlIikKIAotICAgIGRlZiBnZXRmaXh0dXJlaW5mbyhzZWxmLCBub2Rl
LCBmdW5jLCBjbHMsIGZ1bmNhcmdzPVRydWUpOgorICAgIGRlZiBfZ2V0X2RpcmVjdF9wYXJhbWV0
cml6ZV9hcmdzKHNlbGYsIG5vZGU6ICJub2Rlcy5Ob2RlIikgLT4gTGlzdFtzdHJdOgorICAgICAg
ICAiIiJSZXR1cm4gYWxsIGRpcmVjdCBwYXJhbWV0cml6YXRpb24gYXJndW1lbnRzIG9mIGEgbm9k
ZSwgc28gd2UgZG9uJ3QKKyAgICAgICAgbWlzdGFrZSB0aGVtIGZvciBmaXh0dXJlcy4KKworICAg
ICAgICBDaGVjayBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUw
MzYuCisKKyAgICAgICAgVGhlc2UgdGhpbmdzIGFyZSBkb25lIGxhdGVyIGFzIHdlbGwgd2hlbiBk
ZWFsaW5nIHdpdGggcGFyYW1ldHJpemF0aW9uCisgICAgICAgIHNvIHRoaXMgY291bGQgYmUgaW1w
cm92ZWQuCisgICAgICAgICIiIgorICAgICAgICBwYXJhbWV0cml6ZV9hcmduYW1lcyA9IFtdICAj
IHR5cGU6IExpc3Rbc3RyXQorICAgICAgICBmb3IgbWFya2VyIGluIG5vZGUuaXRlcl9tYXJrZXJz
KG5hbWU9InBhcmFtZXRyaXplIik6CisgICAgICAgICAgICBpZiBub3QgbWFya2VyLmt3YXJncy5n
ZXQoImluZGlyZWN0IiwgRmFsc2UpOgorICAgICAgICAgICAgICAgIHBfYXJnbmFtZXMsIF8gPSBQ
YXJhbWV0ZXJTZXQuX3BhcnNlX3BhcmFtZXRyaXplX2FyZ3MoCisgICAgICAgICAgICAgICAgICAg
ICptYXJrZXIuYXJncywgKiptYXJrZXIua3dhcmdzCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIHBhcmFtZXRyaXplX2FyZ25hbWVzLmV4dGVuZChwX2FyZ25hbWVzKQorCisgICAg
ICAgIHJldHVybiBwYXJhbWV0cml6ZV9hcmduYW1lcworCisgICAgZGVmIGdldGZpeHR1cmVpbmZv
KAorICAgICAgICBzZWxmLCBub2RlOiAibm9kZXMuTm9kZSIsIGZ1bmMsIGNscywgZnVuY2FyZ3M6
IGJvb2wgPSBUcnVlCisgICAgKSAtPiBGdW5jRml4dHVyZUluZm86CiAgICAgICAgIGlmIGZ1bmNh
cmdzIGFuZCBub3QgZ2V0YXR0cihub2RlLCAibm9mdW5jYXJncyIsIEZhbHNlKToKLSAgICAgICAg
ICAgIGFyZ25hbWVzID0gZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMsIGNscz1jbHMpCisgICAgICAgICAg
ICBhcmduYW1lcyA9IGdldGZ1bmNhcmduYW1lcyhmdW5jLCBuYW1lPW5vZGUubmFtZSwgY2xzPWNs
cykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFyZ25hbWVzID0gKCkKLSAgICAgICAgdXNl
Zml4dHVyZXMgPSBmbGF0dGVuKAotICAgICAgICAgICAgbWFyay5hcmdzIGZvciBtYXJrIGluIG5v
ZGUuaXRlcl9tYXJrZXJzKG5hbWU9InVzZWZpeHR1cmVzIikKKworICAgICAgICB1c2VmaXh0dXJl
cyA9IHR1cGxlKAorICAgICAgICAgICAgYXJnIGZvciBtYXJrIGluIG5vZGUuaXRlcl9tYXJrZXJz
KG5hbWU9InVzZWZpeHR1cmVzIikgZm9yIGFyZyBpbiBtYXJrLmFyZ3MKICAgICAgICAgKQotICAg
ICAgICBpbml0aWFsbmFtZXMgPSBhcmduYW1lcwotICAgICAgICBpbml0aWFsbmFtZXMgPSB0dXBs
ZSh1c2VmaXh0dXJlcykgKyBpbml0aWFsbmFtZXMKKyAgICAgICAgaW5pdGlhbG5hbWVzID0gdXNl
Zml4dHVyZXMgKyBhcmduYW1lcwogICAgICAgICBmbSA9IG5vZGUuc2Vzc2lvbi5fZml4dHVyZW1h
bmFnZXIKLSAgICAgICAgbmFtZXNfY2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzID0gZm0uZ2V0Zml4
dHVyZWNsb3N1cmUoaW5pdGlhbG5hbWVzLCBub2RlKQotICAgICAgICByZXR1cm4gRnVuY0ZpeHR1
cmVJbmZvKGFyZ25hbWVzLCBuYW1lc19jbG9zdXJlLCBhcmcyZml4dHVyZWRlZnMpCisgICAgICAg
IGluaXRpYWxuYW1lcywgbmFtZXNfY2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzID0gZm0uZ2V0Zml4
dHVyZWNsb3N1cmUoCisgICAgICAgICAgICBpbml0aWFsbmFtZXMsIG5vZGUsIGlnbm9yZV9hcmdz
PXNlbGYuX2dldF9kaXJlY3RfcGFyYW1ldHJpemVfYXJncyhub2RlKQorICAgICAgICApCisgICAg
ICAgIHJldHVybiBGdW5jRml4dHVyZUluZm8oYXJnbmFtZXMsIGluaXRpYWxuYW1lcywgbmFtZXNf
Y2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzKQogCi0gICAgZGVmIHB5dGVzdF9wbHVnaW5fcmVnaXN0
ZXJlZChzZWxmLCBwbHVnaW4pOgorICAgIGRlZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQoc2Vs
ZiwgcGx1Z2luOiBfUGx1Z2d5UGx1Z2luKSAtPiBOb25lOgogICAgICAgICBub2RlaWQgPSBOb25l
CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHAgPSBweS5wYXRoLmxvY2FsKHBsdWdpbi5fX2Zp
bGVfXykKKyAgICAgICAgICAgIHAgPSBhYnNvbHV0ZXBhdGgocGx1Z2luLl9fZmlsZV9fKSAgIyB0
eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGNvbnN0cnVj
dCB0aGUgYmFzZSBub2RlaWQgd2hpY2ggaXMgbGF0ZXIgdXNlZCB0byBjaGVjaworICAgICAgICAg
ICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBub2RlcworCisgICAgICAgICAgICAjIENvbnN0cnVjdCB0
aGUgYmFzZSBub2RlaWQgd2hpY2ggaXMgbGF0ZXIgdXNlZCB0byBjaGVjawogICAgICAgICAgICAg
IyB3aGF0IGZpeHR1cmVzIGFyZSB2aXNpYmxlIGZvciBwYXJ0aWN1bGFyIHRlc3RzIChhcyBkZW5v
dGVkCi0gICAgICAgICAgICAjIGJ5IHRoZWlyIHRlc3QgaWQpCi0gICAgICAgICAgICBpZiBwLmJh
c2VuYW1lLnN0YXJ0c3dpdGgoImNvbmZ0ZXN0LnB5Iik6Ci0gICAgICAgICAgICAgICAgbm9kZWlk
ID0gcC5kaXJwYXRoKCkucmVsdG8oc2VsZi5jb25maWcucm9vdGRpcikKLSAgICAgICAgICAgICAg
ICBpZiBwLnNlcCAhPSBub2Rlcy5TRVA6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVpZCA9IG5v
ZGVpZC5yZXBsYWNlKHAuc2VwLCBub2Rlcy5TRVApCisgICAgICAgICAgICAjIGJ5IHRoZWlyIHRl
c3QgaWQpLgorICAgICAgICAgICAgaWYgcC5uYW1lLnN0YXJ0c3dpdGgoImNvbmZ0ZXN0LnB5Iik6
CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBub2RlaWQgPSBzdHIo
cC5wYXJlbnQucmVsYXRpdmVfdG8oc2VsZi5jb25maWcucm9vdHBhdGgpKQorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBub2RlaWQgPSAiIgor
ICAgICAgICAgICAgICAgIGlmIG5vZGVpZCA9PSAiLiI6CisgICAgICAgICAgICAgICAgICAgIG5v
ZGVpZCA9ICIiCisgICAgICAgICAgICAgICAgaWYgb3Muc2VwICE9IG5vZGVzLlNFUDoKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZWlkID0gbm9kZWlkLnJlcGxhY2Uob3Muc2VwLCBub2Rlcy5TRVAp
CisKICAgICAgICAgc2VsZi5wYXJzZWZhY3RvcmllcyhwbHVnaW4sIG5vZGVpZCkKIAotICAgIGRl
ZiBfZ2V0YXV0b3VzZW5hbWVzKHNlbGYsIG5vZGVpZCk6Ci0gICAgICAgICIiIiByZXR1cm4gYSB0
dXBsZSBvZiBmaXh0dXJlIG5hbWVzIHRvIGJlIHVzZWQuICIiIgotICAgICAgICBhdXRvdXNlbmFt
ZXMgPSBbXQorICAgIGRlZiBfZ2V0YXV0b3VzZW5hbWVzKHNlbGYsIG5vZGVpZDogc3RyKSAtPiBM
aXN0W3N0cl06CisgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZml4dHVyZSBuYW1lcyB0byBi
ZSB1c2VkLiIiIgorICAgICAgICBhdXRvdXNlbmFtZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0K
ICAgICAgICAgZm9yIGJhc2VpZCwgYmFzZW5hbWVzIGluIHNlbGYuX25vZGVpZF9hbmRfYXV0b3Vz
ZW5hbWVzOgogICAgICAgICAgICAgaWYgbm9kZWlkLnN0YXJ0c3dpdGgoYmFzZWlkKToKICAgICAg
ICAgICAgICAgICBpZiBiYXNlaWQ6CiAgICAgICAgICAgICAgICAgICAgIGkgPSBsZW4oYmFzZWlk
KQotICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciA9IG5vZGVpZFtpOmkgKyAxXQorICAgICAg
ICAgICAgICAgICAgICBuZXh0Y2hhciA9IG5vZGVpZFtpIDogaSArIDFdCiAgICAgICAgICAgICAg
ICAgICAgIGlmIG5leHRjaGFyIGFuZCBuZXh0Y2hhciBub3QgaW4gIjovIjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgYXV0b3VzZW5hbWVzLmV4dGVu
ZChiYXNlbmFtZXMpCiAgICAgICAgIHJldHVybiBhdXRvdXNlbmFtZXMKIAotICAgIGRlZiBnZXRm
aXh0dXJlY2xvc3VyZShzZWxmLCBmaXh0dXJlbmFtZXMsIHBhcmVudG5vZGUpOgotICAgICAgICAj
IGNvbGxlY3QgdGhlIGNsb3N1cmUgb2YgYWxsIGZpeHR1cmVzICwgc3RhcnRpbmcgd2l0aCB0aGUg
Z2l2ZW4KKyAgICBkZWYgZ2V0Zml4dHVyZWNsb3N1cmUoCisgICAgICAgIHNlbGYsIGZpeHR1cmVu
YW1lczogVHVwbGVbc3RyLCAuLi5dLCBwYXJlbnRub2RlLCBpZ25vcmVfYXJnczogU2VxdWVuY2Vb
c3RyXSA9ICgpCisgICAgKSAtPiBUdXBsZVtUdXBsZVtzdHIsIC4uLl0sIExpc3Rbc3RyXSwgRGlj
dFtzdHIsIFNlcXVlbmNlW0ZpeHR1cmVEZWZbQW55XV1dXToKKyAgICAgICAgIyBDb2xsZWN0IHRo
ZSBjbG9zdXJlIG9mIGFsbCBmaXh0dXJlcywgc3RhcnRpbmcgd2l0aCB0aGUgZ2l2ZW4KICAgICAg
ICAgIyBmaXh0dXJlbmFtZXMgYXMgdGhlIGluaXRpYWwgc2V0LiAgQXMgd2UgaGF2ZSB0byB2aXNp
dCBhbGwKICAgICAgICAgIyBmYWN0b3J5IGRlZmluaXRpb25zIGFueXdheSwgd2UgYWxzbyByZXR1
cm4gYW4gYXJnMmZpeHR1cmVkZWZzCiAgICAgICAgICMgbWFwcGluZyBzbyB0aGF0IHRoZSBjYWxs
ZXIgY2FuIHJldXNlIGl0IGFuZCBkb2VzIG5vdCBoYXZlCiAgICAgICAgICMgdG8gcmUtZGlzY292
ZXIgZml4dHVyZWRlZnMgYWdhaW4gZm9yIGVhY2ggZml4dHVyZW5hbWUKLSAgICAgICAgIyAoZGlz
Y292ZXJpbmcgbWF0Y2hpbmcgZml4dHVyZXMgZm9yIGEgZ2l2ZW4gbmFtZS9ub2RlIGlzIGV4cGVu
c2l2ZSkKKyAgICAgICAgIyAoZGlzY292ZXJpbmcgbWF0Y2hpbmcgZml4dHVyZXMgZm9yIGEgZ2l2
ZW4gbmFtZS9ub2RlIGlzIGV4cGVuc2l2ZSkuCiAKICAgICAgICAgcGFyZW50aWQgPSBwYXJlbnRu
b2RlLm5vZGVpZAogICAgICAgICBmaXh0dXJlbmFtZXNfY2xvc3VyZSA9IHNlbGYuX2dldGF1dG91
c2VuYW1lcyhwYXJlbnRpZCkKIAotICAgICAgICBkZWYgbWVyZ2Uob3RoZXJsaXN0KToKKyAgICAg
ICAgZGVmIG1lcmdlKG90aGVybGlzdDogSXRlcmFibGVbc3RyXSkgLT4gTm9uZToKICAgICAgICAg
ICAgIGZvciBhcmcgaW4gb3RoZXJsaXN0OgogICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4g
Zml4dHVyZW5hbWVzX2Nsb3N1cmU6CiAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVuYW1lc19j
bG9zdXJlLmFwcGVuZChhcmcpCiAKICAgICAgICAgbWVyZ2UoZml4dHVyZW5hbWVzKQotICAgICAg
ICBhcmcyZml4dHVyZWRlZnMgPSB7fQorCisgICAgICAgICMgQXQgdGhpcyBwb2ludCwgZml4dHVy
ZW5hbWVzX2Nsb3N1cmUgY29udGFpbnMgd2hhdCB3ZSBjYWxsICJpbml0aWFsbmFtZXMiLAorICAg
ICAgICAjIHdoaWNoIGlzIGEgc2V0IG9mIGZpeHR1cmVuYW1lcyB0aGUgZnVuY3Rpb24gaW1tZWRp
YXRlbHkgcmVxdWVzdHMuIFdlCisgICAgICAgICMgbmVlZCB0byByZXR1cm4gaXQgYXMgd2VsbCwg
c28gc2F2ZSB0aGlzLgorICAgICAgICBpbml0aWFsbmFtZXMgPSB0dXBsZShmaXh0dXJlbmFtZXNf
Y2xvc3VyZSkKKworICAgICAgICBhcmcyZml4dHVyZWRlZnMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0
ciwgU2VxdWVuY2VbRml4dHVyZURlZltBbnldXV0KICAgICAgICAgbGFzdGxlbiA9IC0xCiAgICAg
ICAgIHdoaWxlIGxhc3RsZW4gIT0gbGVuKGZpeHR1cmVuYW1lc19jbG9zdXJlKToKICAgICAgICAg
ICAgIGxhc3RsZW4gPSBsZW4oZml4dHVyZW5hbWVzX2Nsb3N1cmUpCiAgICAgICAgICAgICBmb3Ig
YXJnbmFtZSBpbiBmaXh0dXJlbmFtZXNfY2xvc3VyZToKKyAgICAgICAgICAgICAgICBpZiBhcmdu
YW1lIGluIGlnbm9yZV9hcmdzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAg
ICAgICAgICAgIGlmIGFyZ25hbWUgaW4gYXJnMmZpeHR1cmVkZWZzOgogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGZpeHR1cmVkZWZzID0gc2VsZi5nZXRmaXh0
dXJlZGVmcyhhcmduYW1lLCBwYXJlbnRpZCkKQEAgLTEwOTksNyArMTUyMyw3IEBAIGNsYXNzIEZp
eHR1cmVNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGFyZzJmaXh0dXJlZGVm
c1thcmduYW1lXSA9IGZpeHR1cmVkZWZzCiAgICAgICAgICAgICAgICAgICAgIG1lcmdlKGZpeHR1
cmVkZWZzWy0xXS5hcmduYW1lcykKIAotICAgICAgICBkZWYgc29ydF9ieV9zY29wZShhcmdfbmFt
ZSk6CisgICAgICAgIGRlZiBzb3J0X2J5X3Njb3BlKGFyZ19uYW1lOiBzdHIpIC0+IGludDoKICAg
ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmcyA9IGFyZzJmaXh0dXJl
ZGVmc1thcmdfbmFtZV0KICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTExMDgsNDIg
KzE1MzIsNjAgQEAgY2xhc3MgRml4dHVyZU1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICByZXR1cm4gZml4dHVyZWRlZnNbLTFdLnNjb3BlbnVtCiAKICAgICAgICAgZml4dHVyZW5hbWVz
X2Nsb3N1cmUuc29ydChrZXk9c29ydF9ieV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGZpeHR1cmVu
YW1lc19jbG9zdXJlLCBhcmcyZml4dHVyZWRlZnMKKyAgICAgICAgcmV0dXJuIGluaXRpYWxuYW1l
cywgZml4dHVyZW5hbWVzX2Nsb3N1cmUsIGFyZzJmaXh0dXJlZGVmcworCisgICAgZGVmIHB5dGVz
dF9nZW5lcmF0ZV90ZXN0cyhzZWxmLCBtZXRhZnVuYzogIk1ldGFmdW5jIikgLT4gTm9uZToKKyAg
ICAgICAgIiIiR2VuZXJhdGUgbmV3IHRlc3RzIGJhc2VkIG9uIHBhcmFtZXRyaXplZCBmaXh0dXJl
cyB1c2VkIGJ5IHRoZSBnaXZlbiBtZXRhZnVuYyIiIgorCisgICAgICAgIGRlZiBnZXRfcGFyYW1l
dHJpemVfbWFya19hcmduYW1lcyhtYXJrOiBNYXJrKSAtPiBTZXF1ZW5jZVtzdHJdOgorICAgICAg
ICAgICAgYXJncywgXyA9IFBhcmFtZXRlclNldC5fcGFyc2VfcGFyYW1ldHJpemVfYXJncygqbWFy
ay5hcmdzLCAqKm1hcmsua3dhcmdzKQorICAgICAgICAgICAgcmV0dXJuIGFyZ3MKIAotICAgIGRl
ZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMoc2VsZiwgbWV0YWZ1bmMpOgogICAgICAgICBmb3IgYXJn
bmFtZSBpbiBtZXRhZnVuYy5maXh0dXJlbmFtZXM6Ci0gICAgICAgICAgICBmYWNsaXN0ID0gbWV0
YWZ1bmMuX2FyZzJmaXh0dXJlZGVmcy5nZXQoYXJnbmFtZSkKLSAgICAgICAgICAgIGlmIGZhY2xp
c3Q6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWRlZiA9IGZhY2xpc3RbLTFdCisgICAgICAgICAg
ICAjIEdldCB0aGUgRml4dHVyZURlZnMgZm9yIHRoZSBhcmduYW1lLgorICAgICAgICAgICAgZml4
dHVyZV9kZWZzID0gbWV0YWZ1bmMuX2FyZzJmaXh0dXJlZGVmcy5nZXQoYXJnbmFtZSkKKyAgICAg
ICAgICAgIGlmIG5vdCBmaXh0dXJlX2RlZnM6CisgICAgICAgICAgICAgICAgIyBXaWxsIHJhaXNl
IEZpeHR1cmVMb29rdXBFcnJvciBhdCBzZXR1cCB0aW1lIGlmIG5vdCBwYXJhbWV0cml6ZWQgc29t
ZXdoZXJlCisgICAgICAgICAgICAgICAgIyBlbHNlIChlLmcgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgSWYgdGhlIHRl
c3QgaXRzZWxmIHBhcmFtZXRyaXplcyB1c2luZyB0aGlzIGFyZ25hbWUsIGdpdmUgaXQKKyAgICAg
ICAgICAgICMgcHJlY2VkZW5jZS4KKyAgICAgICAgICAgIGlmIGFueSgKKyAgICAgICAgICAgICAg
ICBhcmduYW1lIGluIGdldF9wYXJhbWV0cml6ZV9tYXJrX2FyZ25hbWVzKG1hcmspCisgICAgICAg
ICAgICAgICAgZm9yIG1hcmsgaW4gbWV0YWZ1bmMuZGVmaW5pdGlvbi5pdGVyX21hcmtlcnMoInBh
cmFtZXRyaXplIikKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgIyBJbiB0aGUgY29tbW9uIGNhc2Ugd2Ugb25seSBsb29rIGF0IHRoZSBmaXh0
dXJlIGRlZiB3aXRoIHRoZQorICAgICAgICAgICAgIyBjbG9zZXN0IHNjb3BlIChsYXN0IGluIHRo
ZSBsaXN0KS4gQnV0IGlmIHRoZSBmaXh0dXJlIG92ZXJyaWRlcworICAgICAgICAgICAgIyBhbm90
aGVyIGZpeHR1cmUsIHdoaWxlIHJlcXVlc3RpbmcgdGhlIHN1cGVyIGZpeHR1cmUsIGtlZXAgZ29p
bmcKKyAgICAgICAgICAgICMgaW4gY2FzZSB0aGUgc3VwZXIgZml4dHVyZSBpcyBwYXJhbWV0cml6
ZWQgKCMxOTUzKS4KKyAgICAgICAgICAgIGZvciBmaXh0dXJlZGVmIGluIHJldmVyc2VkKGZpeHR1
cmVfZGVmcyk6CisgICAgICAgICAgICAgICAgIyBGaXh0dXJlIGlzIHBhcmFtZXRyaXplZCwgYXBw
bHkgaXQgYW5kIHN0b3AuCiAgICAgICAgICAgICAgICAgaWYgZml4dHVyZWRlZi5wYXJhbXMgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRyaXplX2Z1bmMgPSBnZXRhdHRy
KG1ldGFmdW5jLmZ1bmN0aW9uLCAicGFyYW1ldHJpemUiLCBOb25lKQotICAgICAgICAgICAgICAg
ICAgICBpZiBwYXJhbWV0cml6ZV9mdW5jIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1ldHJpemVfZnVuYyA9IHBhcmFtZXRyaXplX2Z1bmMuY29tYmluZWQKLSAgICAg
ICAgICAgICAgICAgICAgZnVuY19wYXJhbXMgPSBnZXRhdHRyKHBhcmFtZXRyaXplX2Z1bmMsICJh
cmdzIiwgW1tOb25lXV0pCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfa3dhcmdzID0gZ2V0YXR0
cihwYXJhbWV0cml6ZV9mdW5jLCAia3dhcmdzIiwge30pCi0gICAgICAgICAgICAgICAgICAgICMg
c2tpcCBkaXJlY3RseSBwYXJhbWV0cml6ZWQgYXJndW1lbnRzCi0gICAgICAgICAgICAgICAgICAg
IGlmICJhcmduYW1lcyIgaW4gZnVuY19rd2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBh
cmduYW1lcyA9IHBhcmFtZXRyaXplX2Z1bmMua3dhcmdzWyJhcmduYW1lcyJdCi0gICAgICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmduYW1lcyA9IGZ1bmNf
cGFyYW1zWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ25hbWVz
LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ25hbWVzID0gW3gu
c3RyaXAoKSBmb3IgeCBpbiBhcmduYW1lcy5zcGxpdCgiLCIpIGlmIHguc3RyaXAoKV0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgYXJnbmFtZSBub3QgaW4gZnVuY19wYXJhbXMgYW5kIGFyZ25hbWUg
bm90IGluIGFyZ25hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1l
dHJpemUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmLnBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRpcmVjdD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3Bl
PWZpeHR1cmVkZWYuc2NvcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzPWZpeHR1
cmVkZWYuaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBjb250aW51ZSAgIyB3aWxsIHJhaXNlIEZpeHR1cmVMb29rdXBFcnJv
ciBhdCBzZXR1cCB0aW1lCisgICAgICAgICAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXpl
KAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZpeHR1cmVkZWYucGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXJlY3Q9
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPWZpeHR1cmVkZWYuc2NvcGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZHM9Zml4dHVyZWRlZi5pZHMsCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAgICMg
Tm90IHJlcXVlc3RpbmcgdGhlIG92ZXJyaWRkZW4gc3VwZXIgZml4dHVyZSwgc3RvcC4KKyAgICAg
ICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBpbiBmaXh0dXJlZGVmLmFyZ25hbWVzOgorICAgICAg
ICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgIyBUcnkgbmV4dCBzdXBlciBm
aXh0dXJlLCBpZiBhbnkuCiAKLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMo
c2VsZiwgaXRlbXMpOgotICAgICAgICAjIHNlcGFyYXRlIHBhcmFtZXRyaXplZCBzZXR1cHMKKyAg
ICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2VsZiwgaXRlbXM6ICJMaXN0W25v
ZGVzLkl0ZW1dIikgLT4gTm9uZToKKyAgICAgICAgIyBTZXBhcmF0ZSBwYXJhbWV0cml6ZWQgc2V0
dXBzLgogICAgICAgICBpdGVtc1s6XSA9IHJlb3JkZXJfaXRlbXMoaXRlbXMpCiAKLSAgICBkZWYg
cGFyc2VmYWN0b3JpZXMoc2VsZiwgbm9kZV9vcl9vYmosIG5vZGVpZD1OT1RTRVQsIHVuaXR0ZXN0
PUZhbHNlKToKKyAgICBkZWYgcGFyc2VmYWN0b3JpZXMoCisgICAgICAgIHNlbGYsIG5vZGVfb3Jf
b2JqLCBub2RlaWQ9Tk9UU0VULCB1bml0dGVzdDogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25l
OgogICAgICAgICBpZiBub2RlaWQgaXMgbm90IE5PVFNFVDoKICAgICAgICAgICAgIGhvbGRlcm9i
aiA9IG5vZGVfb3Jfb2JqCiAgICAgICAgIGVsc2U6CkBAIC0xMTUxLDQzICsxNTkzLDM1IEBAIGNs
YXNzIEZpeHR1cmVNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICBub2RlaWQgPSBub2RlX29y
X29iai5ub2RlaWQKICAgICAgICAgaWYgaG9sZGVyb2JqIGluIHNlbGYuX2hvbGRlcm9ianNlZW46
CiAgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBzZWxmLl9ob2xkZXJvYmpzZWVuLmFkZCho
b2xkZXJvYmopCiAgICAgICAgIGF1dG91c2VuYW1lcyA9IFtdCiAgICAgICAgIGZvciBuYW1lIGlu
IGRpcihob2xkZXJvYmopOgogICAgICAgICAgICAgIyBUaGUgYXR0cmlidXRlIGNhbiBiZSBhbiBh
cmJpdHJhcnkgZGVzY3JpcHRvciwgc28gdGhlIGF0dHJpYnV0ZQogICAgICAgICAgICAgIyBhY2Nl
c3MgYmVsb3cgY2FuIHJhaXNlLiBzYWZlX2dldGF0dCgpIGlnbm9yZXMgc3VjaCBleGNlcHRpb25z
LgogICAgICAgICAgICAgb2JqID0gc2FmZV9nZXRhdHRyKGhvbGRlcm9iaiwgbmFtZSwgTm9uZSkK
LSAgICAgICAgICAgICMgZml4dHVyZSBmdW5jdGlvbnMgaGF2ZSBhIHB5dGVzdF9mdW5jYXJnX18g
cHJlZml4IChwcmUtMi4zIHN0eWxlKQotICAgICAgICAgICAgIyBvciBhcmUgIkBweXRlc3QuZml4
dHVyZSIgbWFya2VkCiAgICAgICAgICAgICBtYXJrZXIgPSBnZXRmaXh0dXJlbWFya2VyKG9iaikK
LSAgICAgICAgICAgIGlmIG1hcmtlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIG5vdCBu
YW1lLnN0YXJ0c3dpdGgoc2VsZi5fYXJncHJlZml4KToKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBtYXJrZXIgPSBkZWZhdWx0ZnVuY2Fy
Z3ByZWZpeG1hcmtlcgotICAgICAgICAgICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVj
YXRlZAotCi0gICAgICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICAg
ICAgICAgIkMxIiwgZGVwcmVjYXRlZC5GVU5DQVJHX1BSRUZJWC5mb3JtYXQobmFtZT1uYW1lKSwg
bm9kZWlkPW5vZGVpZAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBuYW1lID0g
bmFtZVtsZW4oc2VsZi5fYXJncHJlZml4KTpdCi0gICAgICAgICAgICBlbGlmIG5vdCBpc2luc3Rh
bmNlKG1hcmtlciwgRml4dHVyZUZ1bmN0aW9uTWFya2VyKToKLSAgICAgICAgICAgICAgICAjIG1h
Z2ljIGdsb2JhbHMgIHdpdGggX19nZXRhdHRyX18gbWlnaHQgaGF2ZSBnb3QgdXMgYSB3cm9uZwot
ICAgICAgICAgICAgICAgICMgZml4dHVyZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKG1hcmtlciwgRml4dHVyZUZ1bmN0aW9uTWFya2VyKToKKyAgICAgICAgICAgICAg
ICAjIE1hZ2ljIGdsb2JhbHMgIHdpdGggX19nZXRhdHRyX18gbWlnaHQgaGF2ZSBnb3QgdXMgYSB3
cm9uZworICAgICAgICAgICAgICAgICMgZml4dHVyZSBhdHRyaWJ1dGUuCiAgICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbWFya2Vy
Lm5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBtYXJrZXIubmFtZQotICAgICAgICAg
ICAgICAgIGFzc2VydCBub3QgbmFtZS5zdGFydHN3aXRoKHNlbGYuX2FyZ3ByZWZpeCksIEZJWFRV
UkVfTVNHLmZvcm1hdChuYW1lKQorCisgICAgICAgICAgICBpZiBtYXJrZXIubmFtZToKKyAgICAg
ICAgICAgICAgICBuYW1lID0gbWFya2VyLm5hbWUKKworICAgICAgICAgICAgIyBEdXJpbmcgZml4
dHVyZSBkZWZpbml0aW9uIHdlIHdyYXAgdGhlIG9yaWdpbmFsIGZpeHR1cmUgZnVuY3Rpb24KKyAg
ICAgICAgICAgICMgdG8gaXNzdWUgYSB3YXJuaW5nIGlmIGNhbGxlZCBkaXJlY3RseSwgc28gaGVy
ZSB3ZSB1bndyYXAgaXQgaW4KKyAgICAgICAgICAgICMgb3JkZXIgdG8gbm90IGVtaXQgdGhlIHdh
cm5pbmcgd2hlbiBweXRlc3QgaXRzZWxmIGNhbGxzIHRoZQorICAgICAgICAgICAgIyBmaXh0dXJl
IGZ1bmN0aW9uLgorICAgICAgICAgICAgb2JqID0gZ2V0X3JlYWxfbWV0aG9kKG9iaiwgaG9sZGVy
b2JqKQogCiAgICAgICAgICAgICBmaXh0dXJlX2RlZiA9IEZpeHR1cmVEZWYoCi0gICAgICAgICAg
ICAgICAgc2VsZiwKLSAgICAgICAgICAgICAgICBub2RlaWQsCi0gICAgICAgICAgICAgICAgbmFt
ZSwKLSAgICAgICAgICAgICAgICBvYmosCi0gICAgICAgICAgICAgICAgbWFya2VyLnNjb3BlLAot
ICAgICAgICAgICAgICAgIG1hcmtlci5wYXJhbXMsCisgICAgICAgICAgICAgICAgZml4dHVyZW1h
bmFnZXI9c2VsZiwKKyAgICAgICAgICAgICAgICBiYXNlaWQ9bm9kZWlkLAorICAgICAgICAgICAg
ICAgIGFyZ25hbWU9bmFtZSwKKyAgICAgICAgICAgICAgICBmdW5jPW9iaiwKKyAgICAgICAgICAg
ICAgICBzY29wZT1tYXJrZXIuc2NvcGUsCisgICAgICAgICAgICAgICAgcGFyYW1zPW1hcmtlci5w
YXJhbXMsCiAgICAgICAgICAgICAgICAgdW5pdHRlc3Q9dW5pdHRlc3QsCiAgICAgICAgICAgICAg
ICAgaWRzPW1hcmtlci5pZHMsCiAgICAgICAgICAgICApCkBAIC0xMjA4LDIyICsxNjQyLDI2IEBA
IGNsYXNzIEZpeHR1cmVNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIGlmIGF1dG91c2VuYW1lczoK
ICAgICAgICAgICAgIHNlbGYuX25vZGVpZF9hbmRfYXV0b3VzZW5hbWVzLmFwcGVuZCgobm9kZWlk
IG9yICIiLCBhdXRvdXNlbmFtZXMpKQogCi0gICAgZGVmIGdldGZpeHR1cmVkZWZzKHNlbGYsIGFy
Z25hbWUsIG5vZGVpZCk6Ci0gICAgICAgICIiIgotICAgICAgICBHZXRzIGEgbGlzdCBvZiBmaXh0
dXJlcyB3aGljaCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZ2l2ZW4gbm9kZSBpZC4KKyAgICBkZWYg
Z2V0Zml4dHVyZWRlZnMoCisgICAgICAgIHNlbGYsIGFyZ25hbWU6IHN0ciwgbm9kZWlkOiBzdHIK
KyAgICApIC0+IE9wdGlvbmFsW1NlcXVlbmNlW0ZpeHR1cmVEZWZbQW55XV1dOgorICAgICAgICAi
IiJHZXQgYSBsaXN0IG9mIGZpeHR1cmVzIHdoaWNoIGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBnaXZl
biBub2RlIGlkLgogCi0gICAgICAgIDpwYXJhbSBzdHIgYXJnbmFtZTogbmFtZSBvZiB0aGUgZml4
dHVyZSB0byBzZWFyY2ggZm9yCi0gICAgICAgIDpwYXJhbSBzdHIgbm9kZWlkOiBmdWxsIG5vZGUg
aWQgb2YgdGhlIHJlcXVlc3RpbmcgdGVzdC4KLSAgICAgICAgOnJldHVybjogbGlzdFtGaXh0dXJl
RGVmXQorICAgICAgICA6cGFyYW0gc3RyIGFyZ25hbWU6IE5hbWUgb2YgdGhlIGZpeHR1cmUgdG8g
c2VhcmNoIGZvci4KKyAgICAgICAgOnBhcmFtIHN0ciBub2RlaWQ6IEZ1bGwgbm9kZSBpZCBvZiB0
aGUgcmVxdWVzdGluZyB0ZXN0LgorICAgICAgICA6cnR5cGU6IFNlcXVlbmNlW0ZpeHR1cmVEZWZd
CiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmaXh0dXJlZGVmcyA9IHNl
bGYuX2FyZzJmaXh0dXJlZGVmc1thcmduYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IHR1cGxlKHNlbGYuX21hdGNoZmFjdG9yaWVzKGZpeHR1cmVkZWZzLCBub2RlaWQpKQorICAgICAg
ICByZXR1cm4gdHVwbGUoc2VsZi5fbWF0Y2hmYWN0b3JpZXMoZml4dHVyZWRlZnMsIG5vZGVpZCkp
CisKKyAgICBkZWYgX21hdGNoZmFjdG9yaWVzKAorICAgICAgICBzZWxmLCBmaXh0dXJlZGVmczog
SXRlcmFibGVbRml4dHVyZURlZltBbnldXSwgbm9kZWlkOiBzdHIKKyAgICApIC0+IEl0ZXJhdG9y
W0ZpeHR1cmVEZWZbQW55XV06CisgICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKIAot
ICAgIGRlZiBfbWF0Y2hmYWN0b3JpZXMoc2VsZiwgZml4dHVyZWRlZnMsIG5vZGVpZCk6CiAgICAg
ICAgIGZvciBmaXh0dXJlZGVmIGluIGZpeHR1cmVkZWZzOgogICAgICAgICAgICAgaWYgbm9kZXMu
aXNjaGlsZG5vZGUoZml4dHVyZWRlZi5iYXNlaWQsIG5vZGVpZCk6CiAgICAgICAgICAgICAgICAg
eWllbGQgZml4dHVyZWRlZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZnJl
ZXplX3N1cHBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9mcmVlemVfc3VwcG9ydC5w
eQppbmRleCAwMDJlMDc3MzAxZjkuLjhiOTNlZDVmN2Y4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvZnJlZXplX3N1cHBvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvZnJlZXplX3N1cHBvcnQucHkKQEAgLTEsMTUgKzEsMTQgQEAKLSIiIgotUHJvdmlkZXMg
YSBmdW5jdGlvbiB0byByZXBvcnQgYWxsIGludGVybmFsIG1vZHVsZXMgZm9yIHVzaW5nIGZyZWV6
aW5nIHRvb2xzCi1weXRlc3QKLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIiIiUHJvdmlkZXMgYSBmdW5jdGlvbiB0
byByZXBvcnQgYWxsIGludGVybmFsIG1vZHVsZXMgZm9yIHVzaW5nIGZyZWV6aW5nCit0b29scy4i
IiIKK2ltcG9ydCB0eXBlcworZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKIAotZGVmIGZyZWV6ZV9p
bmNsdWRlcygpOgotICAgICIiIgotICAgIFJldHVybnMgYSBsaXN0IG9mIG1vZHVsZSBuYW1lcyB1
c2VkIGJ5IHB5dGVzdCB0aGF0IHNob3VsZCBiZQotICAgIGluY2x1ZGVkIGJ5IGN4X2ZyZWV6ZS4K
LSAgICAiIiIKK2RlZiBmcmVlemVfaW5jbHVkZXMoKSAtPiBMaXN0W3N0cl06CisgICAgIiIiUmV0
dXJuIGEgbGlzdCBvZiBtb2R1bGUgbmFtZXMgdXNlZCBieSBweXRlc3QgdGhhdCBzaG91bGQgYmUK
KyAgICBpbmNsdWRlZCBieSBjeF9mcmVlemUuIiIiCiAgICAgaW1wb3J0IHB5CiAgICAgaW1wb3J0
IF9weXRlc3QKIApAQCAtMTgsMjUgKzE3LDI2IEBAIGRlZiBmcmVlemVfaW5jbHVkZXMoKToKICAg
ICByZXR1cm4gcmVzdWx0CiAKIAotZGVmIF9pdGVyX2FsbF9tb2R1bGVzKHBhY2thZ2UsIHByZWZp
eD0iIik6Ci0gICAgIiIiCi0gICAgSXRlcmF0ZXMgb3ZlciB0aGUgbmFtZXMgb2YgYWxsIG1vZHVs
ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIGdpdmVuCitkZWYgX2l0ZXJfYWxsX21vZHVsZXMo
CisgICAgcGFja2FnZTogVW5pb25bc3RyLCB0eXBlcy5Nb2R1bGVUeXBlXSwgcHJlZml4OiBzdHIg
PSAiIiwKKykgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAiIiJJdGVyYXRlIG92ZXIgdGhlIG5hbWVz
IG9mIGFsbCBtb2R1bGVzIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBnaXZlbgogICAgIHBhY2th
Z2UsIHJlY3Vyc2l2ZWx5LgotICAgIEV4YW1wbGU6Ci0gICAgICAgIF9pdGVyX2FsbF9tb2R1bGVz
KF9weXRlc3QpIC0+Ci0gICAgICAgICAgICBbJ19weXRlc3QuYXNzZXJ0aW9uLm5ld2ludGVycHJl
dCcsCi0gICAgICAgICAgICAgJ19weXRlc3QuY2FwdHVyZScsCi0gICAgICAgICAgICAgJ19weXRl
c3QuY29yZScsCi0gICAgICAgICAgICAgLi4uCi0gICAgICAgICAgICBdCisKKyAgICAgICAgPj4+
IGltcG9ydCBfcHl0ZXN0CisgICAgICAgID4+PiBsaXN0KF9pdGVyX2FsbF9tb2R1bGVzKF9weXRl
c3QpKQorICAgICAgICBbJ19weXRlc3QuX2FyZ2NvbXBsZXRlJywgJ19weXRlc3QuX2NvZGUuY29k
ZScsIC4uLl0KICAgICAiIiIKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQgcGtndXRpbAogCi0g
ICAgaWYgdHlwZShwYWNrYWdlKSBpcyBub3Qgc3RyOgotICAgICAgICBwYXRoLCBwcmVmaXggPSBw
YWNrYWdlLl9fcGF0aF9fWzBdLCBwYWNrYWdlLl9fbmFtZV9fICsgIi4iCi0gICAgZWxzZToKKyAg
ICBpZiBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CiAgICAgICAgIHBhdGggPSBwYWNrYWdlCisg
ICAgZWxzZToKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSB0eXBlc2hlZCBkb2Vzbid0
IGRlZmluZSBNb2R1bGVUeXBlLl9fcGF0aF9fCisgICAgICAgICMgKG9ubHkgZGVmaW5lZCBvbiBw
YWNrYWdlcykuCisgICAgICAgIHBhY2thZ2VfcGF0aCA9IHBhY2thZ2UuX19wYXRoX18gICMgdHlw
ZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICAgICAgcGF0aCwgcHJlZml4ID0gcGFja2FnZV9w
YXRoWzBdLCBwYWNrYWdlLl9fbmFtZV9fICsgIi4iCiAgICAgZm9yIF8sIG5hbWUsIGlzX3BhY2th
Z2UgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW3BhdGhdKToKICAgICAgICAgaWYgaXNfcGFja2Fn
ZToKICAgICAgICAgICAgIGZvciBtIGluIF9pdGVyX2FsbF9tb2R1bGVzKG9zLnBhdGguam9pbihw
YXRoLCBuYW1lKSwgcHJlZml4PW5hbWUgKyAiLiIpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvaGVscGNvbmZpZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2hlbHBj
b25maWcucHkKaW5kZXggNTUxNGZlYzQwNGRhLi4zNDhhNjVlZGVjNjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2hlbHBjb25maWcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvaGVscGNvbmZpZy5weQpAQCAtMSwxNyArMSwyNCBAQAotIiIiIHZlcnNpb24gaW5m
bywgaGVscCBtZXNzYWdlcywgdHJhY2luZyBjb25maWd1cmF0aW9uLiAgIiIiCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisi
IiJWZXJzaW9uIGluZm8sIGhlbHAgbWVzc2FnZXMsIHRyYWNpbmcgY29uZmlndXJhdGlvbi4iIiIK
K2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSBhcmdwYXJzZSBpbXBvcnQgQWN0aW9uCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5
cGluZyBpbXBvcnQgVW5pb24KIAogaW1wb3J0IHB5CisKIGltcG9ydCBweXRlc3QKK2Zyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhp
dENvZGUKIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFByaW50SGVscAotaW1wb3J0IG9zCi1p
bXBvcnQgc3lzCi1mcm9tIGFyZ3BhcnNlIGltcG9ydCBBY3Rpb24KK2Zyb20gX3B5dGVzdC5jb25m
aWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCiAKIAogY2xhc3MgSGVscEFjdGlvbihBY3Rpb24p
OgotICAgICIiIlRoaXMgaXMgYW4gYXJncGFyc2UgQWN0aW9uIHRoYXQgd2lsbCByYWlzZSBhbiBl
eGNlcHRpb24gaW4KLSAgICBvcmRlciB0byBza2lwIHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudCBw
YXJzaW5nIHdoZW4gLS1oZWxwIGlzIHBhc3NlZC4KKyAgICAiIiJBbiBhcmdwYXJzZSBBY3Rpb24g
dGhhdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBvcmRlciB0byBza2lwIHRoZQorICAgIHJl
c3Qgb2YgdGhlIGFyZ3VtZW50IHBhcnNpbmcgd2hlbiAtLWhlbHAgaXMgcGFzc2VkLgorCiAgICAg
VGhpcyBwcmV2ZW50cyBhcmdwYXJzZSBmcm9tIHF1aXR0aW5nIGR1ZSB0byBtaXNzaW5nIHJlcXVp
cmVkIGFyZ3VtZW50cwogICAgIHdoZW4gYW55IGFyZSBkZWZpbmVkLCBmb3IgZXhhbXBsZSBieSBg
YHB5dGVzdF9hZGRvcHRpb25gYC4KICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHdheSB0aGF0
IHRoZSBidWlsdGluIGFyZ3BhcnNlIC0taGVscCBvcHRpb24gaXMKQEAgLTE5LDcgKzI2LDcgQEAg
Y2xhc3MgSGVscEFjdGlvbihBY3Rpb24pOgogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG9wdGlvbl9zdHJpbmdzLCBkZXN0PU5vbmUsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Tm9uZSk6
Ci0gICAgICAgIHN1cGVyKEhlbHBBY3Rpb24sIHNlbGYpLl9faW5pdF9fKAorICAgICAgICBzdXBl
cigpLl9faW5pdF9fKAogICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3M9b3B0aW9uX3N0cmluZ3Ms
CiAgICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgICBjb25zdD1UcnVlLApAQCAtMzEs
MTcgKzM4LDIxIEBAIGNsYXNzIEhlbHBBY3Rpb24oQWN0aW9uKToKICAgICBkZWYgX19jYWxsX18o
c2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKICAg
ICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIHNlbGYuZGVzdCwgc2VsZi5jb25zdCkKIAotICAgICAg
ICAjIFdlIHNob3VsZCBvbmx5IHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBhcnNpbmcgYWZ0ZXIgcHJl
cGFyc2UgaXMgZG9uZQorICAgICAgICAjIFdlIHNob3VsZCBvbmx5IHNraXAgdGhlIHJlc3Qgb2Yg
dGhlIHBhcnNpbmcgYWZ0ZXIgcHJlcGFyc2UgaXMgZG9uZS4KICAgICAgICAgaWYgZ2V0YXR0cihw
YXJzZXIuX3BhcnNlciwgImFmdGVyX3ByZXBhcnNlIiwgRmFsc2UpOgogICAgICAgICAgICAgcmFp
c2UgUHJpbnRIZWxwCiAKIAotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKK2RlZiBweXRl
c3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAgIGdyb3VwID0gcGFyc2Vy
LmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIpCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAi
LS12ZXJzaW9uIiwKLSAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgaGVscD0i
ZGlzcGxheSBweXRlc3QgbGliIHZlcnNpb24gYW5kIGltcG9ydCBpbmZvcm1hdGlvbi4iLAorICAg
ICAgICAiLVYiLAorICAgICAgICBhY3Rpb249ImNvdW50IiwKKyAgICAgICAgZGVmYXVsdD0wLAor
ICAgICAgICBkZXN0PSJ2ZXJzaW9uIiwKKyAgICAgICAgaGVscD0iZGlzcGxheSBweXRlc3QgdmVy
c2lvbiBhbmQgaW5mb3JtYXRpb24gYWJvdXQgcGx1Z2lucy4iCisgICAgICAgICJXaGVuIGdpdmVu
IHR3aWNlLCBhbHNvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgcGx1Z2lucy4iLAogICAgICkK
ICAgICBncm91cC5fYWRkb3B0aW9uKAogICAgICAgICAiLWgiLApAQCAtNTYsNyArNjcsNyBAQCBk
ZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBkZXN0PSJwbHVnaW5zIiwKICAg
ICAgICAgZGVmYXVsdD1bXSwKICAgICAgICAgbWV0YXZhcj0ibmFtZSIsCi0gICAgICAgIGhlbHA9
ImVhcmx5LWxvYWQgZ2l2ZW4gcGx1Z2luIChtdWx0aS1hbGxvd2VkKS4gIgorICAgICAgICBoZWxw
PSJlYXJseS1sb2FkIGdpdmVuIHBsdWdpbiBtb2R1bGUgbmFtZSBvciBlbnRyeSBwb2ludCAobXVs
dGktYWxsb3dlZCkuXG4iCiAgICAgICAgICJUbyBhdm9pZCBsb2FkaW5nIG9mIHBsdWdpbnMsIHVz
ZSB0aGUgYG5vOmAgcHJlZml4LCBlLmcuICIKICAgICAgICAgImBubzpkb2N0ZXN0YC4iLAogICAg
ICkKQEAgLTY2LDcgKzc3LDcgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAg
ICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAgICAg
aGVscD0idHJhY2UgY29uc2lkZXJhdGlvbnMgb2YgY29uZnRlc3QucHkgZmlsZXMuIiwKLSAgICAp
LAorICAgICkKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWRlYnVnIiwKICAgICAg
ICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKQEAgLTg2LDcgKzk3LDcgQEAgZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyKToKIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKIGRlZiBw
eXRlc3RfY21kbGluZV9wYXJzZSgpOgogICAgIG91dGNvbWUgPSB5aWVsZAotICAgIGNvbmZpZyA9
IG91dGNvbWUuZ2V0X3Jlc3VsdCgpCisgICAgY29uZmlnID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkg
ICMgdHlwZTogQ29uZmlnCiAgICAgaWYgY29uZmlnLm9wdGlvbi5kZWJ1ZzoKICAgICAgICAgcGF0
aCA9IG9zLnBhdGguYWJzcGF0aCgicHl0ZXN0ZGVidWcubG9nIikKICAgICAgICAgZGVidWdmaWxl
ID0gb3BlbihwYXRoLCAidyIpCkBAIC05OCwxNCArMTA5LDE0IEBAIGRlZiBweXRlc3RfY21kbGlu
ZV9wYXJzZSgpOgogICAgICAgICAgICAgICAgIHB5Ll9fdmVyc2lvbl9fLAogICAgICAgICAgICAg
ICAgICIuIi5qb2luKG1hcChzdHIsIHN5cy52ZXJzaW9uX2luZm8pKSwKICAgICAgICAgICAgICAg
ICBvcy5nZXRjd2QoKSwKLSAgICAgICAgICAgICAgICBjb25maWcuX29yaWdhcmdzLAorICAgICAg
ICAgICAgICAgIGNvbmZpZy5pbnZvY2F0aW9uX3BhcmFtcy5hcmdzLAogICAgICAgICAgICAgKQog
ICAgICAgICApCiAgICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNldHdyaXRlcihkZWJ1Z2ZpbGUu
d3JpdGUpCiAgICAgICAgIHVuZG9fdHJhY2luZyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmVuYWJs
ZV90cmFjaW5nKCkKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgid3JpdGluZyBweXRlc3RkZWJ1
ZyBpbmZvcm1hdGlvbiB0byAlc1xuIiAlIHBhdGgpCiAKLSAgICAgICAgZGVmIHVuc2V0X3RyYWNp
bmcoKToKKyAgICAgICAgZGVmIHVuc2V0X3RyYWNpbmcoKSAtPiBOb25lOgogICAgICAgICAgICAg
ZGVidWdmaWxlLmNsb3NlKCkKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIndyb3RlIHB5
dGVzdGRlYnVnIGluZm9ybWF0aW9uIHRvICVzXG4iICUgZGVidWdmaWxlLm5hbWUpCiAgICAgICAg
ICAgICBjb25maWcudHJhY2Uucm9vdC5zZXR3cml0ZXIoTm9uZSkKQEAgLTExNCw1MiArMTI1LDkw
IEBAIGRlZiBweXRlc3RfY21kbGluZV9wYXJzZSgpOgogICAgICAgICBjb25maWcuYWRkX2NsZWFu
dXAodW5zZXRfdHJhY2luZykKIAogCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgot
ICAgIGlmIGNvbmZpZy5vcHRpb24udmVyc2lvbjoKLSAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwo
cHl0ZXN0Ll9fZmlsZV9fKQorZGVmIHNob3d2ZXJzaW9uKGNvbmZpZzogQ29uZmlnKSAtPiBOb25l
OgorICAgIGlmIGNvbmZpZy5vcHRpb24udmVyc2lvbiA+IDE6CiAgICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoCi0gICAgICAgICAgICAiVGhpcyBpcyBweXRlc3QgdmVyc2lvbiAlcywgaW1wb3J0ZWQg
ZnJvbSAlc1xuIiAlIChweXRlc3QuX192ZXJzaW9uX18sIHApCisgICAgICAgICAgICAiVGhpcyBp
cyBweXRlc3QgdmVyc2lvbiB7fSwgaW1wb3J0ZWQgZnJvbSB7fVxuIi5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgcHl0ZXN0Ll9fdmVyc2lvbl9fLCBweXRlc3QuX19maWxlX18KKyAgICAgICAgICAg
ICkKICAgICAgICAgKQogICAgICAgICBwbHVnaW5pbmZvID0gZ2V0cGx1Z2ludmVyc2lvbmluZm8o
Y29uZmlnKQogICAgICAgICBpZiBwbHVnaW5pbmZvOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4g
cGx1Z2luaW5mbzoKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGxpbmUgKyAiXG4i
KQorICAgIGVsc2U6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoInB5dGVzdCB7fVxuIi5mb3Jt
YXQocHl0ZXN0Ll9fdmVyc2lvbl9fKSkKKworCitkZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25m
aWc6IENvbmZpZykgLT4gT3B0aW9uYWxbVW5pb25baW50LCBFeGl0Q29kZV1dOgorICAgIGlmIGNv
bmZpZy5vcHRpb24udmVyc2lvbiA+IDA6CisgICAgICAgIHNob3d2ZXJzaW9uKGNvbmZpZykKICAg
ICAgICAgcmV0dXJuIDAKICAgICBlbGlmIGNvbmZpZy5vcHRpb24uaGVscDoKICAgICAgICAgY29u
ZmlnLl9kb19jb25maWd1cmUoKQogICAgICAgICBzaG93aGVscChjb25maWcpCiAgICAgICAgIGNv
bmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkKICAgICAgICAgcmV0dXJuIDAKKyAgICByZXR1cm4g
Tm9uZQogCiAKLWRlZiBzaG93aGVscChjb25maWcpOgorZGVmIHNob3doZWxwKGNvbmZpZzogQ29u
ZmlnKSAtPiBOb25lOgorICAgIGltcG9ydCB0ZXh0d3JhcAorCiAgICAgcmVwb3J0ZXIgPSBjb25m
aWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2luKCJ0ZXJtaW5hbHJlcG9ydGVyIikKICAgICB0dyA9
IHJlcG9ydGVyLl90dwogICAgIHR3LndyaXRlKGNvbmZpZy5fcGFyc2VyLm9wdHBhcnNlci5mb3Jt
YXRfaGVscCgpKQogICAgIHR3LmxpbmUoKQotICAgIHR3LmxpbmUoKQogICAgIHR3LmxpbmUoCi0g
ICAgICAgICJbcHl0ZXN0XSBpbmktb3B0aW9ucyBpbiB0aGUgZmlyc3QgIiAicHl0ZXN0LmluaXx0
b3guaW5pfHNldHVwLmNmZyBmaWxlIGZvdW5kOiIKKyAgICAgICAgIltweXRlc3RdIGluaS1vcHRp
b25zIGluIHRoZSBmaXJzdCBweXRlc3QuaW5pfHRveC5pbml8c2V0dXAuY2ZnIGZpbGUgZm91bmQ6
IgogICAgICkKICAgICB0dy5saW5lKCkKIAorICAgIGNvbHVtbnMgPSB0dy5mdWxsd2lkdGggICMg
Y29zdGx5IGNhbGwKKyAgICBpbmRlbnRfbGVuID0gMjQgICMgYmFzZWQgb24gYXJncGFyc2UncyBt
YXhfaGVscF9wb3NpdGlvbj0yNAorICAgIGluZGVudCA9ICIgIiAqIGluZGVudF9sZW4KICAgICBm
b3IgbmFtZSBpbiBjb25maWcuX3BhcnNlci5faW5pbmFtZXM6CiAgICAgICAgIGhlbHAsIHR5cGUs
IGRlZmF1bHQgPSBjb25maWcuX3BhcnNlci5faW5pZGljdFtuYW1lXQogICAgICAgICBpZiB0eXBl
IGlzIE5vbmU6CiAgICAgICAgICAgICB0eXBlID0gInN0cmluZyIKLSAgICAgICAgc3BlYyA9ICIl
cyAoJXMpIiAlIChuYW1lLCB0eXBlKQotICAgICAgICBsaW5lID0gIiAgJS0yNHMgJXMiICUgKHNw
ZWMsIGhlbHApCi0gICAgICAgIHR3LmxpbmUobGluZVs6dHcuZnVsbHdpZHRoXSkKKyAgICAgICAg
aWYgaGVscCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJoZWxwIGFyZ3Vt
ZW50IGNhbm5vdCBiZSBOb25lIGZvciB7fSIuZm9ybWF0KG5hbWUpKQorICAgICAgICBzcGVjID0g
Int9ICh7fSk6Ii5mb3JtYXQobmFtZSwgdHlwZSkKKyAgICAgICAgdHcud3JpdGUoIiAgJXMiICUg
c3BlYykKKyAgICAgICAgc3BlY19sZW4gPSBsZW4oc3BlYykKKyAgICAgICAgaWYgc3BlY19sZW4g
PiAoaW5kZW50X2xlbiAtIDMpOgorICAgICAgICAgICAgIyBEaXNwbGF5IGhlbHAgc3RhcnRpbmcg
YXQgYSBuZXcgbGluZS4KKyAgICAgICAgICAgIHR3LmxpbmUoKQorICAgICAgICAgICAgaGVscGxp
bmVzID0gdGV4dHdyYXAud3JhcCgKKyAgICAgICAgICAgICAgICBoZWxwLAorICAgICAgICAgICAg
ICAgIGNvbHVtbnMsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9aW5kZW50LAorICAg
ICAgICAgICAgICAgIHN1YnNlcXVlbnRfaW5kZW50PWluZGVudCwKKyAgICAgICAgICAgICAgICBi
cmVha19vbl9oeXBoZW5zPUZhbHNlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBmb3Ig
bGluZSBpbiBoZWxwbGluZXM6CisgICAgICAgICAgICAgICAgdHcubGluZShsaW5lKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyBEaXNwbGF5IGhlbHAgc3RhcnRpbmcgYWZ0ZXIgdGhlIHNw
ZWMsIGZvbGxvd2luZyBsaW5lcyBpbmRlbnRlZC4KKyAgICAgICAgICAgIHR3LndyaXRlKCIgIiAq
IChpbmRlbnRfbGVuIC0gc3BlY19sZW4gLSAyKSkKKyAgICAgICAgICAgIHdyYXBwZWQgPSB0ZXh0
d3JhcC53cmFwKGhlbHAsIGNvbHVtbnMgLSBpbmRlbnRfbGVuLCBicmVha19vbl9oeXBoZW5zPUZh
bHNlKQorCisgICAgICAgICAgICBpZiB3cmFwcGVkOgorICAgICAgICAgICAgICAgIHR3LmxpbmUo
d3JhcHBlZFswXSkKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB3cmFwcGVkWzE6XToKKyAg
ICAgICAgICAgICAgICAgICAgdHcubGluZShpbmRlbnQgKyBsaW5lKQogCiAgICAgdHcubGluZSgp
CiAgICAgdHcubGluZSgiZW52aXJvbm1lbnQgdmFyaWFibGVzOiIpCiAgICAgdmFycyA9IFsKICAg
ICAgICAgKCJQWVRFU1RfQURET1BUUyIsICJleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucyIpLAog
ICAgICAgICAoIlBZVEVTVF9QTFVHSU5TIiwgImNvbW1hLXNlcGFyYXRlZCBwbHVnaW5zIHRvIGxv
YWQgZHVyaW5nIHN0YXJ0dXAiKSwKKyAgICAgICAgKCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVU
T0xPQUQiLCAic2V0IHRvIGRpc2FibGUgcGx1Z2luIGF1dG8tbG9hZGluZyIpLAogICAgICAgICAo
IlBZVEVTVF9ERUJVRyIsICJzZXQgdG8gZW5hYmxlIGRlYnVnIHRyYWNpbmcgb2YgcHl0ZXN0J3Mg
aW50ZXJuYWxzIiksCiAgICAgXQogICAgIGZvciBuYW1lLCBoZWxwIGluIHZhcnM6Ci0gICAgICAg
IHR3LmxpbmUoIiAgJS0yNHMgJXMiICUgKG5hbWUsIGhlbHApKQorICAgICAgICB0dy5saW5lKCIg
IHs6PDI0fSB7fSIuZm9ybWF0KG5hbWUsIGhlbHApKQogICAgIHR3LmxpbmUoKQogICAgIHR3Lmxp
bmUoKQogCkBAIC0xNzksMjIgKzIyOCwyNCBAQCBkZWYgc2hvd2hlbHAoY29uZmlnKToKIGNvbmZ0
ZXN0X29wdGlvbnMgPSBbKCJweXRlc3RfcGx1Z2lucyIsICJsaXN0IG9mIHBsdWdpbiBuYW1lcyB0
byBsb2FkIildCiAKIAotZGVmIGdldHBsdWdpbnZlcnNpb25pbmZvKGNvbmZpZyk6CitkZWYgZ2V0
cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnOiBDb25maWcpIC0+IExpc3Rbc3RyXToKICAgICBsaW5l
cyA9IFtdCiAgICAgcGx1Z2luaW5mbyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmxpc3RfcGx1Z2lu
X2Rpc3RpbmZvKCkKICAgICBpZiBwbHVnaW5pbmZvOgogICAgICAgICBsaW5lcy5hcHBlbmQoInNl
dHVwdG9vbHMgcmVnaXN0ZXJlZCBwbHVnaW5zOiIpCiAgICAgICAgIGZvciBwbHVnaW4sIGRpc3Qg
aW4gcGx1Z2luaW5mbzoKICAgICAgICAgICAgIGxvYyA9IGdldGF0dHIocGx1Z2luLCAiX19maWxl
X18iLCByZXByKHBsdWdpbikpCi0gICAgICAgICAgICBjb250ZW50ID0gIiVzLSVzIGF0ICVzIiAl
IChkaXN0LnByb2plY3RfbmFtZSwgZGlzdC52ZXJzaW9uLCBsb2MpCisgICAgICAgICAgICBjb250
ZW50ID0gInt9LXt9IGF0IHt9Ii5mb3JtYXQoZGlzdC5wcm9qZWN0X25hbWUsIGRpc3QudmVyc2lv
biwgbG9jKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICIgKyBjb250ZW50KQogICAgIHJl
dHVybiBsaW5lcwogCiAKLWRlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihjb25maWcpOgorZGVmIHB5
dGVzdF9yZXBvcnRfaGVhZGVyKGNvbmZpZzogQ29uZmlnKSAtPiBMaXN0W3N0cl06CiAgICAgbGlu
ZXMgPSBbXQogICAgIGlmIGNvbmZpZy5vcHRpb24uZGVidWcgb3IgY29uZmlnLm9wdGlvbi50cmFj
ZWNvbmZpZzoKLSAgICAgICAgbGluZXMuYXBwZW5kKCJ1c2luZzogcHl0ZXN0LSVzIHB5bGliLSVz
IiAlIChweXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fKSkKKyAgICAgICAgbGluZXMu
YXBwZW5kKAorICAgICAgICAgICAgInVzaW5nOiBweXRlc3Qte30gcHlsaWIte30iLmZvcm1hdChw
eXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fKQorICAgICAgICApCiAKICAgICAgICAg
dmVyaW5mbyA9IGdldHBsdWdpbnZlcnNpb25pbmZvKGNvbmZpZykKICAgICAgICAgaWYgdmVyaW5m
bzoKQEAgLTIwOCw1ICsyNTksNSBAQCBkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnKToK
ICAgICAgICAgICAgICAgICByID0gcGx1Z2luLl9fZmlsZV9fCiAgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgIHIgPSByZXByKHBsdWdpbikKLSAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgiICAgICUtMjBzOiAlcyIgJSAobmFtZSwgcikpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
IiAgICB7OjwyMH06IHt9Ii5mb3JtYXQobmFtZSwgcikpCiAgICAgcmV0dXJuIGxpbmVzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ob29rc3BlYy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L2hvb2tzcGVjLnB5CmluZGV4IGZlYzQzYTQwMDk5MS4uMmYwYTA0YTA2YTcz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ob29rc3BlYy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ob29rc3BlYy5weQpAQCAtMSw3ICsxLDQ4IEBACi0iIiIg
aG9vayBzcGVjaWZpY2F0aW9ucyBmb3IgcHl0ZXN0IHBsdWdpbnMsIGludm9rZWQgZnJvbSBtYWlu
LnB5IGFuZCBidWlsdGluIHBsdWdpbnMuICAiIiIKLQorIiIiSG9vayBzcGVjaWZpY2F0aW9ucyBm
b3IgcHl0ZXN0IHBsdWdpbnMgd2hpY2ggYXJlIGludm9rZWQgYnkgcHl0ZXN0IGl0c2VsZgorYW5k
IGJ5IGJ1aWx0aW4gcGx1Z2lucy4iIiIKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlw
aW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1w
b3J0IE1hcHBpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1w
b3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9y
dCBVbmlvbgorCitpbXBvcnQgcHkucGF0aAogZnJvbSBwbHVnZ3kgaW1wb3J0IEhvb2tzcGVjTWFy
a2VyCiAKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5
dGVzdC5kZXByZWNhdGVkIGltcG9ydCBXQVJOSU5HX0NBUFRVUkVEX0hPT0sKKworaWYgVFlQRV9D
SEVDS0lORzoKKyAgICBpbXBvcnQgcGRiCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgZnJvbSB0
eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAorCisgICAgZnJvbSBfcHl0ZXN0Ll9jb2Rl
LmNvZGUgaW1wb3J0IEV4Y2VwdGlvblJlcHIKKyAgICBmcm9tIF9weXRlc3QuY29kZSBpbXBvcnQg
RXhjZXB0aW9uSW5mbworICAgIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworICAg
IGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCisgICAgZnJvbSBfcHl0ZXN0LmNv
bmZpZyBpbXBvcnQgUHl0ZXN0UGx1Z2luTWFuYWdlcgorICAgIGZyb20gX3B5dGVzdC5jb25maWcg
aW1wb3J0IF9QbHVnZ3lQbHVnaW4KKyAgICBmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcg
aW1wb3J0IFBhcnNlcgorICAgIGZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZURl
ZgorICAgIGZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgU3ViUmVxdWVzdAorICAgIGZyb20g
X3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCisgICAgZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9y
dCBDb2xsZWN0b3IKKyAgICBmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0KKyAgICBmcm9t
IF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IEV4aXQKKyAgICBmcm9tIF9weXRlc3QucHl0aG9uIGlt
cG9ydCBGdW5jdGlvbgorICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IE1ldGFmdW5jCisg
ICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgTW9kdWxlCisgICAgZnJvbSBfcHl0ZXN0LnB5
dGhvbiBpbXBvcnQgUHlDb2xsZWN0b3IKKyAgICBmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBvcnQg
Q29sbGVjdFJlcG9ydAorICAgIGZyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBUZXN0UmVwb3J0
CisgICAgZnJvbSBfcHl0ZXN0LnJ1bm5lciBpbXBvcnQgQ2FsbEluZm8KKyAgICBmcm9tIF9weXRl
c3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0ZXIKKworCiBob29rc3BlYyA9IEhvb2tz
cGVjTWFya2VyKCJweXRlc3QiKQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwLDEyICs1MSwx
MSBAQCBob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJweXRlc3QiKQogCiAKIEBob29rc3BlYyho
aXN0b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKToKLSAgICAi
IiJjYWxsZWQgYXQgcGx1Z2luIHJlZ2lzdHJhdGlvbiB0aW1lIHRvIGFsbG93IGFkZGluZyBuZXcg
aG9va3MgdmlhIGEgY2FsbCB0bworZGVmIHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyOiAi
UHl0ZXN0UGx1Z2luTWFuYWdlciIpIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGF0IHBsdWdpbiBy
ZWdpc3RyYXRpb24gdGltZSB0byBhbGxvdyBhZGRpbmcgbmV3IGhvb2tzIHZpYSBhIGNhbGwgdG8K
ICAgICBgYHBsdWdpbm1hbmFnZXIuYWRkX2hvb2tzcGVjcyhtb2R1bGVfb3JfY2xhc3MsIHByZWZp
eClgYC4KIAotCi0gICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLlB5dGVzdFBsdWdpbk1hbmFnZXIg
cGx1Z2lubWFuYWdlcjogcHl0ZXN0IHBsdWdpbiBtYW5hZ2VyCisgICAgOnBhcmFtIF9weXRlc3Qu
Y29uZmlnLlB5dGVzdFBsdWdpbk1hbmFnZXIgcGx1Z2lubWFuYWdlcjogcHl0ZXN0IHBsdWdpbiBt
YW5hZ2VyLgogCiAgICAgLi4gbm90ZTo6CiAgICAgICAgIFRoaXMgaG9vayBpcyBpbmNvbXBhdGli
bGUgd2l0aCBgYGhvb2t3cmFwcGVyPVRydWVgYC4KQEAgLTIzLDEzICs2MywxMyBAQCBkZWYgcHl0
ZXN0X2FkZGhvb2tzKHBsdWdpbm1hbmFnZXIpOgogCiAKIEBob29rc3BlYyhoaXN0b3JpYz1UcnVl
KQotZGVmIHB5dGVzdF9uYW1lc3BhY2UoKToKLSAgICAiIiIKLSAgICAoKipEZXByZWNhdGVkKiop
IHRoaXMgaG9vayBjYXVzZXMgZGlyZWN0IG1vbmtleXBhdGNoaW5nIG9uIHB5dGVzdCwgaXRzIHVz
ZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZAotICAgIHJldHVybiBkaWN0IG9mIG5hbWUtPm9iamVj
dCB0byBiZSBtYWRlIGdsb2JhbGx5IGF2YWlsYWJsZSBpbgotICAgIHRoZSBweXRlc3QgbmFtZXNw
YWNlLgorZGVmIHB5dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZCgKKyAgICBwbHVnaW46ICJfUGx1Z2d5
UGx1Z2luIiwgbWFuYWdlcjogIlB5dGVzdFBsdWdpbk1hbmFnZXIiCispIC0+IE5vbmU6CisgICAg
IiIiQSBuZXcgcHl0ZXN0IHBsdWdpbiBnb3QgcmVnaXN0ZXJlZC4KIAotICAgIFRoaXMgaG9vayBp
cyBjYWxsZWQgYXQgcGx1Z2luIHJlZ2lzdHJhdGlvbiB0aW1lLgorICAgIDpwYXJhbSBwbHVnaW46
IFRoZSBwbHVnaW4gbW9kdWxlIG9yIGluc3RhbmNlLgorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZp
Zy5QeXRlc3RQbHVnaW5NYW5hZ2VyIG1hbmFnZXI6IHB5dGVzdCBwbHVnaW4gbWFuYWdlci4KIAog
ICAgIC4uIG5vdGU6OgogICAgICAgICBUaGlzIGhvb2sgaXMgaW5jb21wYXRpYmxlIHdpdGggYGBo
b29rd3JhcHBlcj1UcnVlYGAuCkBAIC0zNywyMCArNzcsOCBAQCBkZWYgcHl0ZXN0X25hbWVzcGFj
ZSgpOgogCiAKIEBob29rc3BlYyhoaXN0b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9wbHVnaW5fcmVn
aXN0ZXJlZChwbHVnaW4sIG1hbmFnZXIpOgotICAgICIiIiBhIG5ldyBweXRlc3QgcGx1Z2luIGdv
dCByZWdpc3RlcmVkLgotCi0gICAgOnBhcmFtIHBsdWdpbjogdGhlIHBsdWdpbiBtb2R1bGUgb3Ig
aW5zdGFuY2UKLSAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlciBt
YW5hZ2VyOiBweXRlc3QgcGx1Z2luIG1hbmFnZXIKLQotICAgIC4uIG5vdGU6OgotICAgICAgICBU
aGlzIGhvb2sgaXMgaW5jb21wYXRpYmxlIHdpdGggYGBob29rd3JhcHBlcj1UcnVlYGAuCi0gICAg
IiIiCi0KLQotQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihw
YXJzZXIpOgotICAgICIiInJlZ2lzdGVyIGFyZ3BhcnNlLXN0eWxlIG9wdGlvbnMgYW5kIGluaS1z
dHlsZSBjb25maWcgdmFsdWVzLAorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiAiUGFyc2Vy
IiwgcGx1Z2lubWFuYWdlcjogIlB5dGVzdFBsdWdpbk1hbmFnZXIiKSAtPiBOb25lOgorICAgICIi
IlJlZ2lzdGVyIGFyZ3BhcnNlLXN0eWxlIG9wdGlvbnMgYW5kIGluaS1zdHlsZSBjb25maWcgdmFs
dWVzLAogICAgIGNhbGxlZCBvbmNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB0ZXN0IHJ1bi4KIAog
ICAgIC4uIG5vdGU6OgpAQCAtNTksMTAgKzg3LDE2IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBh
cnNlcik6CiAgICAgICAgIGZpbGVzIHNpdHVhdGVkIGF0IHRoZSB0ZXN0cyByb290IGRpcmVjdG9y
eSBkdWUgdG8gaG93IHB5dGVzdAogICAgICAgICA6cmVmOmBkaXNjb3ZlcnMgcGx1Z2lucyBkdXJp
bmcgc3RhcnR1cCA8cGx1Z2lub3JkZXI+YC4KIAotICAgIDphcmcgX3B5dGVzdC5jb25maWcuUGFy
c2VyIHBhcnNlcjogVG8gYWRkIGNvbW1hbmQgbGluZSBvcHRpb25zLCBjYWxsCi0gICAgICAgIDpw
eTpmdW5jOmBwYXJzZXIuYWRkb3B0aW9uKC4uLikgPF9weXRlc3QuY29uZmlnLlBhcnNlci5hZGRv
cHRpb24+YC4KKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuYXJncGFyc2luZy5QYXJzZXIgcGFy
c2VyOgorICAgICAgICBUbyBhZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMsIGNhbGwKKyAgICAgICAg
OnB5OmZ1bmM6YHBhcnNlci5hZGRvcHRpb24oLi4uKSA8X3B5dGVzdC5jb25maWcuYXJncGFyc2lu
Zy5QYXJzZXIuYWRkb3B0aW9uPmAuCiAgICAgICAgIFRvIGFkZCBpbmktZmlsZSB2YWx1ZXMgY2Fs
bCA6cHk6ZnVuYzpgcGFyc2VyLmFkZGluaSguLi4pCi0gICAgICAgIDxfcHl0ZXN0LmNvbmZpZy5Q
YXJzZXIuYWRkaW5pPmAuCisgICAgICAgIDxfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nLlBhcnNl
ci5hZGRpbmk+YC4KKworICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5QeXRlc3RQbHVnaW5NYW5h
Z2VyIHBsdWdpbm1hbmFnZXI6CisgICAgICAgIHB5dGVzdCBwbHVnaW4gbWFuYWdlciwgd2hpY2gg
Y2FuIGJlIHVzZWQgdG8gaW5zdGFsbCA6cHk6ZnVuYzpgaG9va3NwZWNgJ3MKKyAgICAgICAgb3Ig
OnB5OmZ1bmM6YGhvb2tpbXBsYCdzIGFuZCBhbGxvdyBvbmUgcGx1Z2luIHRvIGNhbGwgYW5vdGhl
ciBwbHVnaW4ncyBob29rcworICAgICAgICB0byBjaGFuZ2UgaG93IGNvbW1hbmQgbGluZSBvcHRp
b25zIGFyZSBhZGRlZC4KIAogICAgIE9wdGlvbnMgY2FuIGxhdGVyIGJlIGFjY2Vzc2VkIHRocm91
Z2ggdGhlCiAgICAgOnB5OmNsYXNzOmBjb25maWcgPF9weXRlc3QuY29uZmlnLkNvbmZpZz5gIG9i
amVjdCwgcmVzcGVjdGl2ZWx5OgpAQCAtODIsOSArMTE2LDggQEAgZGVmIHB5dGVzdF9hZGRvcHRp
b24ocGFyc2VyKToKIAogCiBAaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfY29u
ZmlndXJlKGNvbmZpZyk6Ci0gICAgIiIiCi0gICAgQWxsb3dzIHBsdWdpbnMgYW5kIGNvbmZ0ZXN0
IGZpbGVzIHRvIHBlcmZvcm0gaW5pdGlhbCBjb25maWd1cmF0aW9uLgorZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnOiAiQ29uZmlnIikgLT4gTm9uZToKKyAgICAiIiJBbGxvdyBwbHVnaW5zIGFu
ZCBjb25mdGVzdCBmaWxlcyB0byBwZXJmb3JtIGluaXRpYWwgY29uZmlndXJhdGlvbi4KIAogICAg
IFRoaXMgaG9vayBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHBsdWdpbiBhbmQgaW5pdGlhbCBjb25mdGVz
dCBmaWxlCiAgICAgYWZ0ZXIgY29tbWFuZCBsaW5lIG9wdGlvbnMgaGF2ZSBiZWVuIHBhcnNlZC4K
QEAgLTk1LDcgKzEyOCw3IEBAIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CiAgICAgLi4g
bm90ZTo6CiAgICAgICAgIFRoaXMgaG9vayBpcyBpbmNvbXBhdGlibGUgd2l0aCBgYGhvb2t3cmFw
cGVyPVRydWVgYC4KIAotICAgIDphcmcgX3B5dGVzdC5jb25maWcuQ29uZmlnIGNvbmZpZzogcHl0
ZXN0IGNvbmZpZyBvYmplY3QKKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29uZmlnIGNvbmZp
ZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgogICAgICIiIgogCiAKQEAgLTEwNiwyMCArMTM5
LDI0IEBAIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CiAKIAogQGhvb2tzcGVjKGZpcnN0
cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2NtZGxpbmVfcGFyc2UocGx1Z2lubWFuYWdlciwgYXJn
cyk6Ci0gICAgIiIicmV0dXJuIGluaXRpYWxpemVkIGNvbmZpZyBvYmplY3QsIHBhcnNpbmcgdGhl
IHNwZWNpZmllZCBhcmdzLgorZGVmIHB5dGVzdF9jbWRsaW5lX3BhcnNlKAorICAgIHBsdWdpbm1h
bmFnZXI6ICJQeXRlc3RQbHVnaW5NYW5hZ2VyIiwgYXJnczogTGlzdFtzdHJdCispIC0+IE9wdGlv
bmFsWyJDb25maWciXToKKyAgICAiIiJSZXR1cm4gYW4gaW5pdGlhbGl6ZWQgY29uZmlnIG9iamVj
dCwgcGFyc2luZyB0aGUgc3BlY2lmaWVkIGFyZ3MuCiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24t
Tm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAKKyAgICBTdG9wcyBhdCBmaXJzdCBu
b24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCiAKICAgICAuLiBub3RlOjoK
LSAgICAgICAgVGhpcyBob29rIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgYGBjb25mdGVzdC5weWBg
IGZpbGVzLCBvbmx5IGZvciBzZXR1cHRvb2xzIHBsdWdpbnMuCisgICAgICAgIFRoaXMgaG9vayB3
aWxsIG9ubHkgYmUgY2FsbGVkIGZvciBwbHVnaW4gY2xhc3NlcyBwYXNzZWQgdG8gdGhlCisgICAg
ICAgIGBgcGx1Z2luc2BgIGFyZyB3aGVuIHVzaW5nIGBweXRlc3QubWFpbmBfIHRvIHBlcmZvcm0g
YW4gaW4tcHJvY2VzcworICAgICAgICB0ZXN0IHJ1bi4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNv
bmZpZy5QeXRlc3RQbHVnaW5NYW5hZ2VyIHBsdWdpbm1hbmFnZXI6IHB5dGVzdCBwbHVnaW4gbWFu
YWdlcgotICAgIDpwYXJhbSBsaXN0W3N0cl0gYXJnczogbGlzdCBvZiBhcmd1bWVudHMgcGFzc2Vk
IG9uIHRoZSBjb21tYW5kIGxpbmUKKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1
Z2luTWFuYWdlciBwbHVnaW5tYW5hZ2VyOiBQeXRlc3QgcGx1Z2luIG1hbmFnZXIuCisgICAgOnBh
cmFtIExpc3Rbc3RyXSBhcmdzOiBMaXN0IG9mIGFyZ3VtZW50cyBwYXNzZWQgb24gdGhlIGNvbW1h
bmQgbGluZS4KICAgICAiIiIKIAogCi1kZWYgcHl0ZXN0X2NtZGxpbmVfcHJlcGFyc2UoY29uZmln
LCBhcmdzKToKK2RlZiBweXRlc3RfY21kbGluZV9wcmVwYXJzZShjb25maWc6ICJDb25maWciLCBh
cmdzOiBMaXN0W3N0cl0pIC0+IE5vbmU6CiAgICAgIiIiKCoqRGVwcmVjYXRlZCoqKSBtb2RpZnkg
Y29tbWFuZCBsaW5lIGFyZ3VtZW50cyBiZWZvcmUgb3B0aW9uIHBhcnNpbmcuCiAKICAgICBUaGlz
IGhvb2sgaXMgY29uc2lkZXJlZCBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBm
dXR1cmUgcHl0ZXN0IHZlcnNpb24uIENvbnNpZGVyCkBAIC0xMjgsMzUgKzE2NSwzNyBAQCBkZWYg
cHl0ZXN0X2NtZGxpbmVfcHJlcGFyc2UoY29uZmlnLCBhcmdzKToKICAgICAuLiBub3RlOjoKICAg
ICAgICAgVGhpcyBob29rIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgYGBjb25mdGVzdC5weWBgIGZp
bGVzLCBvbmx5IGZvciBzZXR1cHRvb2xzIHBsdWdpbnMuCiAKLSAgICA6cGFyYW0gX3B5dGVzdC5j
b25maWcuQ29uZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKLSAgICA6cGFyYW0gbGlz
dFtzdHJdIGFyZ3M6IGxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5l
CisgICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRoZSBweXRlc3QgY29u
ZmlnIG9iamVjdC4KKyAgICA6cGFyYW0gTGlzdFtzdHJdIGFyZ3M6IEFyZ3VtZW50cyBwYXNzZWQg
b24gdGhlIGNvbW1hbmQgbGluZS4KICAgICAiIiIKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9
VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6Ci0gICAgIiIiIGNhbGxlZCBm
b3IgcGVyZm9ybWluZyB0aGUgbWFpbiBjb21tYW5kIGxpbmUgYWN0aW9uLiBUaGUgZGVmYXVsdAor
ZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnOiAiQ29uZmlnIikgLT4gT3B0aW9uYWxbVW5p
b25bIkV4aXRDb2RlIiwgaW50XV06CisgICAgIiIiQ2FsbGVkIGZvciBwZXJmb3JtaW5nIHRoZSBt
YWluIGNvbW1hbmQgbGluZSBhY3Rpb24uIFRoZSBkZWZhdWx0CiAgICAgaW1wbGVtZW50YXRpb24g
d2lsbCBpbnZva2UgdGhlIGNvbmZpZ3VyZSBob29rcyBhbmQgcnVudGVzdF9tYWlubG9vcC4KIAog
ICAgIC4uIG5vdGU6OgogICAgICAgICBUaGlzIGhvb2sgd2lsbCBub3QgYmUgY2FsbGVkIGZvciBg
YGNvbmZ0ZXN0LnB5YGAgZmlsZXMsIG9ubHkgZm9yIHNldHVwdG9vbHMgcGx1Z2lucy4KIAotICAg
IFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YAor
ICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0
YC4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBweXRlc3QgY29u
ZmlnIG9iamVjdAorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBUaGUg
cHl0ZXN0IGNvbmZpZyBvYmplY3QuCiAgICAgIiIiCiAKIAotZGVmIHB5dGVzdF9sb2FkX2luaXRp
YWxfY29uZnRlc3RzKGVhcmx5X2NvbmZpZywgcGFyc2VyLCBhcmdzKToKLSAgICAiIiIgaW1wbGVt
ZW50cyB0aGUgbG9hZGluZyBvZiBpbml0aWFsIGNvbmZ0ZXN0IGZpbGVzIGFoZWFkCitkZWYgcHl0
ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoCisgICAgZWFybHlfY29uZmlnOiAiQ29uZmlnIiwg
cGFyc2VyOiAiUGFyc2VyIiwgYXJnczogTGlzdFtzdHJdCispIC0+IE5vbmU6CisgICAgIiIiQ2Fs
bGVkIHRvIGltcGxlbWVudCB0aGUgbG9hZGluZyBvZiBpbml0aWFsIGNvbmZ0ZXN0IGZpbGVzIGFo
ZWFkCiAgICAgb2YgY29tbWFuZCBsaW5lIG9wdGlvbiBwYXJzaW5nLgogCiAgICAgLi4gbm90ZTo6
CiAgICAgICAgIFRoaXMgaG9vayB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGBgY29uZnRlc3QucHlg
YCBmaWxlcywgb25seSBmb3Igc2V0dXB0b29scyBwbHVnaW5zLgogCi0gICAgOnBhcmFtIF9weXRl
c3QuY29uZmlnLkNvbmZpZyBlYXJseV9jb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0Ci0gICAg
OnBhcmFtIGxpc3Rbc3RyXSBhcmdzOiBsaXN0IG9mIGFyZ3VtZW50cyBwYXNzZWQgb24gdGhlIGNv
bW1hbmQgbGluZQotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5QYXJzZXIgcGFyc2VyOiB0byBh
ZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29uZmln
IGVhcmx5X2NvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgorICAgIDpwYXJhbSBMaXN0
W3N0cl0gYXJnczogQXJndW1lbnRzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgIDpw
YXJhbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nLlBhcnNlciBwYXJzZXI6IFRvIGFkZCBjb21t
YW5kIGxpbmUgb3B0aW9ucy4KICAgICAiIiIKIAogCkBAIC0xNjYsODcgKzIwNSwxMTQgQEAgZGVm
IHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKGVhcmx5X2NvbmZpZywgcGFyc2VyLCBhcmdz
KToKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfY29sbGVjdGlv
bihzZXNzaW9uKToKLSAgICAiIiJQZXJmb3JtIHRoZSBjb2xsZWN0aW9uIHByb3RvY29sIGZvciB0
aGUgZ2l2ZW4gc2Vzc2lvbi4KK2RlZiBweXRlc3RfY29sbGVjdGlvbihzZXNzaW9uOiAiU2Vzc2lv
biIpIC0+IE9wdGlvbmFsW29iamVjdF06CisgICAgIiIiUGVyZm9ybSB0aGUgY29sbGVjdGlvbiBw
aGFzZSBmb3IgdGhlIGdpdmVuIHNlc3Npb24uCiAKICAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9u
ZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCisgICAgVGhlIHJldHVybiB2YWx1ZSBp
cyBub3QgdXNlZCwgYnV0IG9ubHkgc3RvcHMgZnVydGhlciBwcm9jZXNzaW5nLgorCisgICAgVGhl
IGRlZmF1bHQgY29sbGVjdGlvbiBwaGFzZSBpcyB0aGlzIChzZWUgaW5kaXZpZHVhbCBob29rcyBm
b3IgZnVsbCBkZXRhaWxzKToKKworICAgIDEuIFN0YXJ0aW5nIGZyb20gYGBzZXNzaW9uYGAgYXMg
dGhlIGluaXRpYWwgY29sbGVjdG9yOgorCisgICAgICAxLiBgYHB5dGVzdF9jb2xsZWN0c3RhcnQo
Y29sbGVjdG9yKWBgCisgICAgICAyLiBgYHJlcG9ydCA9IHB5dGVzdF9tYWtlX2NvbGxlY3RfcmVw
b3J0KGNvbGxlY3RvcilgYAorICAgICAgMy4gYGBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KGNv
bGxlY3RvciwgY2FsbCwgcmVwb3J0KWBgIGlmIGFuIGludGVyYWN0aXZlIGV4Y2VwdGlvbiBvY2N1
cnJlZAorICAgICAgNC4gRm9yIGVhY2ggY29sbGVjdGVkIG5vZGU6CisKKyAgICAgICAgMS4gSWYg
YW4gaXRlbSwgYGBweXRlc3RfaXRlbWNvbGxlY3RlZChpdGVtKWBgCisgICAgICAgIDIuIElmIGEg
Y29sbGVjdG9yLCByZWN1cnNlIGludG8gaXQuCisKKyAgICAgIDUuIGBgcHl0ZXN0X2NvbGxlY3Ry
ZXBvcnQocmVwb3J0KWBgCisKKyAgICAyLiBgYHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1z
KHNlc3Npb24sIGNvbmZpZywgaXRlbXMpYGAKKworICAgICAgMS4gYGBweXRlc3RfZGVzZWxlY3Rl
ZChpdGVtcylgYCBmb3IgYW55IGRlc2VsZWN0ZWQgaXRlbXMgKG1heSBiZSBjYWxsZWQgbXVsdGlw
bGUgdGltZXMpCiAKLSAgICA6cGFyYW0gX3B5dGVzdC5tYWluLlNlc3Npb24gc2Vzc2lvbjogdGhl
IHB5dGVzdCBzZXNzaW9uIG9iamVjdAorICAgIDMuIGBgcHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNo
KHNlc3Npb24pYGAKKyAgICA0LiBTZXQgYGBzZXNzaW9uLml0ZW1zYGAgdG8gdGhlIGxpc3Qgb2Yg
Y29sbGVjdGVkIGl0ZW1zCisgICAgNS4gU2V0IGBgc2Vzc2lvbi50ZXN0c2NvbGxlY3RlZGBgIHRv
IHRoZSBudW1iZXIgb2YgY29sbGVjdGVkIGl0ZW1zCisKKyAgICBZb3UgY2FuIGltcGxlbWVudCB0
aGlzIGhvb2sgdG8gb25seSBwZXJmb3JtIHNvbWUgYWN0aW9uIGJlZm9yZSBjb2xsZWN0aW9uLAor
ICAgIGZvciBleGFtcGxlIHRoZSB0ZXJtaW5hbCBwbHVnaW4gdXNlcyBpdCB0byBzdGFydCBkaXNw
bGF5aW5nIHRoZSBjb2xsZWN0aW9uCisgICAgY291bnRlciAoYW5kIHJldHVybnMgYE5vbmVgKS4K
KworICAgIDpwYXJhbSBweXRlc3QuU2Vzc2lvbiBzZXNzaW9uOiBUaGUgcHl0ZXN0IHNlc3Npb24g
b2JqZWN0LgogICAgICIiIgogCiAKLWRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhz
ZXNzaW9uLCBjb25maWcsIGl0ZW1zKToKLSAgICAiIiIgY2FsbGVkIGFmdGVyIGNvbGxlY3Rpb24g
aGFzIGJlZW4gcGVyZm9ybWVkLCBtYXkgZmlsdGVyIG9yIHJlLW9yZGVyCitkZWYgcHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoCisgICAgc2Vzc2lvbjogIlNlc3Npb24iLCBjb25maWc6ICJD
b25maWciLCBpdGVtczogTGlzdFsiSXRlbSJdCispIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGFm
dGVyIGNvbGxlY3Rpb24gaGFzIGJlZW4gcGVyZm9ybWVkLiBNYXkgZmlsdGVyIG9yIHJlLW9yZGVy
CiAgICAgdGhlIGl0ZW1zIGluLXBsYWNlLgogCi0gICAgOnBhcmFtIF9weXRlc3QubWFpbi5TZXNz
aW9uIHNlc3Npb246IHRoZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QKLSAgICA6cGFyYW0gX3B5dGVz
dC5jb25maWcuQ29uZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKLSAgICA6cGFyYW0g
TGlzdFtfcHl0ZXN0Lm5vZGVzLkl0ZW1dIGl0ZW1zOiBsaXN0IG9mIGl0ZW0gb2JqZWN0cworICAg
IDpwYXJhbSBweXRlc3QuU2Vzc2lvbiBzZXNzaW9uOiBUaGUgcHl0ZXN0IHNlc3Npb24gb2JqZWN0
LgorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBUaGUgcHl0ZXN0IGNv
bmZpZyBvYmplY3QuCisgICAgOnBhcmFtIExpc3RbcHl0ZXN0Lkl0ZW1dIGl0ZW1zOiBMaXN0IG9m
IGl0ZW0gb2JqZWN0cy4KICAgICAiIiIKIAogCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNo
KHNlc3Npb24pOgotICAgICIiIiBjYWxsZWQgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgYmVlbiBwZXJm
b3JtZWQgYW5kIG1vZGlmaWVkLgorZGVmIHB5dGVzdF9jb2xsZWN0aW9uX2ZpbmlzaChzZXNzaW9u
OiAiU2Vzc2lvbiIpIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGFmdGVyIGNvbGxlY3Rpb24gaGFz
IGJlZW4gcGVyZm9ybWVkIGFuZCBtb2RpZmllZC4KIAotICAgIDpwYXJhbSBfcHl0ZXN0Lm1haW4u
U2Vzc2lvbiBzZXNzaW9uOiB0aGUgcHl0ZXN0IHNlc3Npb24gb2JqZWN0CisgICAgOnBhcmFtIHB5
dGVzdC5TZXNzaW9uIHNlc3Npb246IFRoZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QuCiAgICAgIiIi
CiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2lnbm9yZV9jb2xs
ZWN0KHBhdGgsIGNvbmZpZyk6Ci0gICAgIiIiIHJldHVybiBUcnVlIHRvIHByZXZlbnQgY29uc2lk
ZXJpbmcgdGhpcyBwYXRoIGZvciBjb2xsZWN0aW9uLgorZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVj
dChwYXRoOiBweS5wYXRoLmxvY2FsLCBjb25maWc6ICJDb25maWciKSAtPiBPcHRpb25hbFtib29s
XToKKyAgICAiIiJSZXR1cm4gVHJ1ZSB0byBwcmV2ZW50IGNvbnNpZGVyaW5nIHRoaXMgcGF0aCBm
b3IgY29sbGVjdGlvbi4KKwogICAgIFRoaXMgaG9vayBpcyBjb25zdWx0ZWQgZm9yIGFsbCBmaWxl
cyBhbmQgZGlyZWN0b3JpZXMgcHJpb3IgdG8gY2FsbGluZwogICAgIG1vcmUgc3BlY2lmaWMgaG9v
a3MuCiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJz
dHJlc3VsdGAKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBm
aXJzdHJlc3VsdGAuCiAKLSAgICA6cGFyYW0gc3RyIHBhdGg6IHRoZSBwYXRoIHRvIGFuYWx5emUK
LSAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29uZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBv
YmplY3QKKyAgICA6cGFyYW0gcHkucGF0aC5sb2NhbCBwYXRoOiBUaGUgcGF0aCB0byBhbmFseXpl
LgorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBUaGUgcHl0ZXN0IGNv
bmZpZyBvYmplY3QuCiAgICAgIiIiCiAKIAotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1k
ZWYgcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5KHBhdGgsIHBhcmVudCk6Ci0gICAgIiIiIGNhbGxl
ZCBiZWZvcmUgdHJhdmVyc2luZyBhIGRpcmVjdG9yeSBmb3IgY29sbGVjdGlvbiBmaWxlcy4KK2Rl
ZiBweXRlc3RfY29sbGVjdF9maWxlKAorICAgIHBhdGg6IHB5LnBhdGgubG9jYWwsIHBhcmVudDog
IkNvbGxlY3RvciIKKykgLT4gIk9wdGlvbmFsW0NvbGxlY3Rvcl0iOgorICAgICIiIkNyZWF0ZSBh
IENvbGxlY3RvciBmb3IgdGhlIGdpdmVuIHBhdGgsIG9yIE5vbmUgaWYgbm90IHJlbGV2YW50Lgog
Ci0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1
bHRgCisgICAgVGhlIG5ldyBub2RlIG5lZWRzIHRvIGhhdmUgdGhlIHNwZWNpZmllZCBgYHBhcmVu
dGBgIGFzIGEgcGFyZW50LgogCi0gICAgOnBhcmFtIHN0ciBwYXRoOiB0aGUgcGF0aCB0byBhbmFs
eXplCi0gICAgIiIiCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToK
LSAgICAiIiIgcmV0dXJuIGNvbGxlY3Rpb24gTm9kZSBvciBOb25lIGZvciB0aGUgZ2l2ZW4gcGF0
aC4gQW55IG5ldyBub2RlCi0gICAgbmVlZHMgdG8gaGF2ZSB0aGUgc3BlY2lmaWVkIGBgcGFyZW50
YGAgYXMgYSBwYXJlbnQuCi0KLSAgICA6cGFyYW0gc3RyIHBhdGg6IHRoZSBwYXRoIHRvIGNvbGxl
Y3QKKyAgICA6cGFyYW0gcHkucGF0aC5sb2NhbCBwYXRoOiBUaGUgcGF0aCB0byBjb2xsZWN0Lgog
ICAgICIiIgogCiAKICMgbG9nZ2luZyBob29rcyBmb3IgY29sbGVjdGlvbgogCiAKLWRlZiBweXRl
c3RfY29sbGVjdHN0YXJ0KGNvbGxlY3Rvcik6Ci0gICAgIiIiIGNvbGxlY3RvciBzdGFydHMgY29s
bGVjdGluZy4gIiIiCitkZWYgcHl0ZXN0X2NvbGxlY3RzdGFydChjb2xsZWN0b3I6ICJDb2xsZWN0
b3IiKSAtPiBOb25lOgorICAgICIiIkNvbGxlY3RvciBzdGFydHMgY29sbGVjdGluZy4iIiIKKwog
CitkZWYgcHl0ZXN0X2l0ZW1jb2xsZWN0ZWQoaXRlbTogIkl0ZW0iKSAtPiBOb25lOgorICAgICIi
IldlIGp1c3QgY29sbGVjdGVkIGEgdGVzdCBpdGVtLiIiIgogCi1kZWYgcHl0ZXN0X2l0ZW1jb2xs
ZWN0ZWQoaXRlbSk6Ci0gICAgIiIiIHdlIGp1c3QgY29sbGVjdGVkIGEgdGVzdCBpdGVtLiAiIiIK
IAorZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydDogIkNvbGxlY3RSZXBvcnQiKSAtPiBO
b25lOgorICAgICIiIkNvbGxlY3RvciBmaW5pc2hlZCBjb2xsZWN0aW5nLiIiIgogCi1kZWYgcHl0
ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0KToKLSAgICAiIiIgY29sbGVjdG9yIGZpbmlzaGVkIGNv
bGxlY3RpbmcuICIiIgogCitkZWYgcHl0ZXN0X2Rlc2VsZWN0ZWQoaXRlbXM6IFNlcXVlbmNlWyJJ
dGVtIl0pIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGZvciBkZXNlbGVjdGVkIHRlc3QgaXRlbXMs
IGUuZy4gYnkga2V5d29yZC4KIAotZGVmIHB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1zKToKLSAgICAi
IiIgY2FsbGVkIGZvciB0ZXN0IGl0ZW1zIGRlc2VsZWN0ZWQgYnkga2V5d29yZC4gIiIiCisgICAg
TWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KKyAgICAiIiIKIAogCiBAaG9va3NwZWMoZmly
c3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3Ip
OgotICAgICIiIiBwZXJmb3JtIGBgY29sbGVjdG9yLmNvbGxlY3QoKWBgIGFuZCByZXR1cm4gYSBD
b2xsZWN0UmVwb3J0LgorZGVmIHB5dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcjog
IkNvbGxlY3RvciIpIC0+ICJPcHRpb25hbFtDb2xsZWN0UmVwb3J0XSI6CisgICAgIiIiUGVyZm9y
bSBgYGNvbGxlY3Rvci5jb2xsZWN0KClgYCBhbmQgcmV0dXJuIGEgQ29sbGVjdFJlcG9ydC4KIAot
ICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0
YCAiIiIKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJz
dHJlc3VsdGAuCisgICAgIiIiCiAKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNTUsMTM3ICsz
MjEsMjE2IEBAIGRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3IpOgogCiAK
IEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1v
ZHVsZShwYXRoLCBwYXJlbnQpOgotICAgICIiIiByZXR1cm4gYSBNb2R1bGUgY29sbGVjdG9yIG9y
IE5vbmUgZm9yIHRoZSBnaXZlbiBwYXRoLgorZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVs
ZShwYXRoOiBweS5wYXRoLmxvY2FsLCBwYXJlbnQpIC0+IE9wdGlvbmFsWyJNb2R1bGUiXToKKyAg
ICAiIiJSZXR1cm4gYSBNb2R1bGUgY29sbGVjdG9yIG9yIE5vbmUgZm9yIHRoZSBnaXZlbiBwYXRo
LgorCiAgICAgVGhpcyBob29rIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIG1hdGNoaW5nIHRlc3Qg
bW9kdWxlIHBhdGguCiAgICAgVGhlIHB5dGVzdF9jb2xsZWN0X2ZpbGUgaG9vayBuZWVkcyB0byBi
ZSB1c2VkIGlmIHlvdSB3YW50IHRvCiAgICAgY3JlYXRlIHRlc3QgbW9kdWxlcyBmb3IgZmlsZXMg
dGhhdCBkbyBub3QgbWF0Y2ggYXMgYSB0ZXN0IG1vZHVsZS4KIAotICAgIFN0b3BzIGF0IGZpcnN0
IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKKyAgICBTdG9wcyBh
dCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCisKKyAgICA6
cGFyYW0gcHkucGF0aC5sb2NhbCBwYXRoOiBUaGUgcGF0aCBvZiBtb2R1bGUgdG8gY29sbGVjdC4K
KyAgICAiIiIKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcHlj
b2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2JqKToKLSAgICAiIiIgcmV0dXJuIGN1
c3RvbSBpdGVtL2NvbGxlY3RvciBmb3IgYSBweXRob24gb2JqZWN0IGluIGEgbW9kdWxlLCBvciBO
b25lLgorZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oCisgICAgY29sbGVjdG9yOiAiUHlD
b2xsZWN0b3IiLCBuYW1lOiBzdHIsIG9iajogb2JqZWN0CispIC0+IFVuaW9uW05vbmUsICJJdGVt
IiwgIkNvbGxlY3RvciIsIExpc3RbVW5pb25bIkl0ZW0iLCAiQ29sbGVjdG9yIl1dXToKKyAgICAi
IiJSZXR1cm4gYSBjdXN0b20gaXRlbS9jb2xsZWN0b3IgZm9yIGEgUHl0aG9uIG9iamVjdCBpbiBh
IG1vZHVsZSwgb3IgTm9uZS4KIAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwg
c2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSBy
ZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCisgICAgIiIiCiAKIAogQGhvb2tzcGVjKGZp
cnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHB5ZnVuY2l0ZW0pOgotICAg
ICIiIiBjYWxsIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlvbi4KK2RlZiBweXRlc3RfcHlmdW5jX2Nh
bGwocHlmdW5jaXRlbTogIkZ1bmN0aW9uIikgLT4gT3B0aW9uYWxbb2JqZWN0XToKKyAgICAiIiJD
YWxsIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlvbi4KIAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1O
b25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKKyAgICBTdG9wcyBhdCBmaXJz
dCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCisgICAgIiIiCiAKIAot
ZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgIiIiIGdlbmVyYXRlICht
dWx0aXBsZSkgcGFyYW1ldHJpemVkIGNhbGxzIHRvIGEgdGVzdCBmdW5jdGlvbi4iIiIKK2RlZiBw
eXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmM6ICJNZXRhZnVuYyIpIC0+IE5vbmU6CisgICAg
IiIiR2VuZXJhdGUgKG11bHRpcGxlKSBwYXJhbWV0cml6ZWQgY2FsbHMgdG8gYSB0ZXN0IGZ1bmN0
aW9uLiIiIgogCiAKIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9tYWtl
X3BhcmFtZXRyaXplX2lkKGNvbmZpZywgdmFsLCBhcmduYW1lKToKLSAgICAiIiJSZXR1cm4gYSB1
c2VyLWZyaWVuZGx5IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gYGB2YWxgYCB0
aGF0IHdpbGwgYmUgdXNlZAotICAgIGJ5IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSBjYWxscy4g
UmV0dXJuIE5vbmUgaWYgdGhlIGhvb2sgZG9lc24ndCBrbm93IGFib3V0IGBgdmFsYGAuCitkZWYg
cHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQoCisgICAgY29uZmlnOiAiQ29uZmlnIiwgdmFsOiBv
YmplY3QsIGFyZ25hbWU6IHN0cgorKSAtPiBPcHRpb25hbFtzdHJdOgorICAgICIiIlJldHVybiBh
IHVzZXItZnJpZW5kbHkgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBgYHZhbGBg
CisgICAgdGhhdCB3aWxsIGJlIHVzZWQgYnkgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplIGNhbGxz
LCBvciBOb25lIGlmIHRoZSBob29rCisgICAgZG9lc24ndCBrbm93IGFib3V0IGBgdmFsYGAuCisK
ICAgICBUaGUgcGFyYW1ldGVyIG5hbWUgaXMgYXZhaWxhYmxlIGFzIGBgYXJnbmFtZWBgLCBpZiBy
ZXF1aXJlZC4KIAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6
YGZpcnN0cmVzdWx0YAorICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpy
ZWY6YGZpcnN0cmVzdWx0YC4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29u
ZmlnOiBweXRlc3QgY29uZmlnIG9iamVjdAotICAgIDpwYXJhbSB2YWw6IHRoZSBwYXJhbWV0cml6
ZWQgdmFsdWUKLSAgICA6cGFyYW0gc3RyIGFyZ25hbWU6IHRoZSBhdXRvbWF0aWMgcGFyYW1ldGVy
IG5hbWUgcHJvZHVjZWQgYnkgcHl0ZXN0CisgICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZp
ZyBjb25maWc6IFRoZSBweXRlc3QgY29uZmlnIG9iamVjdC4KKyAgICA6cGFyYW0gdmFsOiBUaGUg
cGFyYW1ldHJpemVkIHZhbHVlLgorICAgIDpwYXJhbSBzdHIgYXJnbmFtZTogVGhlIGF1dG9tYXRp
YyBwYXJhbWV0ZXIgbmFtZSBwcm9kdWNlZCBieSBweXRlc3QuCiAgICAgIiIiCiAKIAogIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0jIGdlbmVyaWMgcnVudGVzdCByZWxhdGVkIGhvb2tzCisjIHJ1bnRlc3Qg
cmVsYXRlZCBob29rcwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAogQGhvb2tzcGVjKGZpcnN0cmVz
dWx0PVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3Rsb29wKHNlc3Npb24pOgotICAgICIiIiBjYWxs
ZWQgZm9yIHBlcmZvcm1pbmcgdGhlIG1haW4gcnVudGVzdCBsb29wCi0gICAgKGFmdGVyIGNvbGxl
Y3Rpb24gZmluaXNoZWQpLgorZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZXNzaW9uOiAiU2Vzc2lv
biIpIC0+IE9wdGlvbmFsW29iamVjdF06CisgICAgIiIiUGVyZm9ybSB0aGUgbWFpbiBydW50ZXN0
IGxvb3AgKGFmdGVyIGNvbGxlY3Rpb24gZmluaXNoZWQpLgogCi0gICAgU3RvcHMgYXQgZmlyc3Qg
bm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgCisgICAgVGhlIGRlZmF1bHQg
aG9vayBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtcyB0aGUgcnVudGVzdCBwcm90b2NvbCBmb3IgYWxs
IGl0ZW1zCisgICAgY29sbGVjdGVkIGluIHRoZSBzZXNzaW9uIChgYHNlc3Npb24uaXRlbXNgYCks
IHVubGVzcyB0aGUgY29sbGVjdGlvbiBmYWlsZWQKKyAgICBvciB0aGUgYGBjb2xsZWN0b25seWBg
IHB5dGVzdCBvcHRpb24gaXMgc2V0LgogCi0gICAgOnBhcmFtIF9weXRlc3QubWFpbi5TZXNzaW9u
IHNlc3Npb246IHRoZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QKLSAgICAiIiIKKyAgICBJZiBhdCBh
bnkgcG9pbnQgOnB5OmZ1bmM6YHB5dGVzdC5leGl0YCBpcyBjYWxsZWQsIHRoZSBsb29wIGlzCisg
ICAgdGVybWluYXRlZCBpbW1lZGlhdGVseS4KIAorICAgIElmIGF0IGFueSBwb2ludCBgYHNlc3Np
b24uc2hvdWxkZmFpbGBgIG9yIGBgc2Vzc2lvbi5zaG91bGRzdG9wYGAgYXJlIHNldCwgdGhlCisg
ICAgbG9vcCBpcyB0ZXJtaW5hdGVkIGFmdGVyIHRoZSBydW50ZXN0IHByb3RvY29sIGZvciB0aGUg
Y3VycmVudCBpdGVtIGlzIGZpbmlzaGVkLgogCi1kZWYgcHl0ZXN0X2l0ZW1zdGFydChpdGVtLCBu
b2RlKToKLSAgICAiIiIoKipEZXByZWNhdGVkKiopIHVzZSBweXRlc3RfcnVudGVzdF9sb2dzdGFy
dC4gIiIiCisgICAgOnBhcmFtIHB5dGVzdC5TZXNzaW9uIHNlc3Npb246IFRoZSBweXRlc3Qgc2Vz
c2lvbiBvYmplY3QuCisKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6
cmVmOmBmaXJzdHJlc3VsdGAuCisgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBub3QgdXNlZCwgYnV0
IG9ubHkgc3RvcHMgZnVydGhlciBwcm9jZXNzaW5nLgorICAgICIiIgogCiAKIEBob29rc3BlYyhm
aXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0sIG5leHRp
dGVtKToKLSAgICAiIiIgaW1wbGVtZW50cyB0aGUgcnVudGVzdF9zZXR1cC9jYWxsL3RlYXJkb3du
IHByb3RvY29sIGZvcgotICAgIHRoZSBnaXZlbiB0ZXN0IGl0ZW0sIGluY2x1ZGluZyBjYXB0dXJp
bmcgZXhjZXB0aW9ucyBhbmQgY2FsbGluZwotICAgIHJlcG9ydGluZyBob29rcy4KK2RlZiBweXRl
c3RfcnVudGVzdF9wcm90b2NvbCgKKyAgICBpdGVtOiAiSXRlbSIsIG5leHRpdGVtOiAiT3B0aW9u
YWxbSXRlbV0iCispIC0+IE9wdGlvbmFsW29iamVjdF06CisgICAgIiIiUGVyZm9ybSB0aGUgcnVu
dGVzdCBwcm90b2NvbCBmb3IgYSBzaW5nbGUgdGVzdCBpdGVtLgorCisgICAgVGhlIGRlZmF1bHQg
cnVudGVzdCBwcm90b2NvbCBpcyB0aGlzIChzZWUgaW5kaXZpZHVhbCBob29rcyBmb3IgZnVsbCBk
ZXRhaWxzKToKIAotICAgIDphcmcgaXRlbTogdGVzdCBpdGVtIGZvciB3aGljaCB0aGUgcnVudGVz
dCBwcm90b2NvbCBpcyBwZXJmb3JtZWQuCisgICAgLSBgYHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0
KG5vZGVpZCwgbG9jYXRpb24pYGAKIAotICAgIDphcmcgbmV4dGl0ZW06IHRoZSBzY2hlZHVsZWQt
dG8tYmUtbmV4dCB0ZXN0IGl0ZW0gKG9yIE5vbmUgaWYgdGhpcwotICAgICAgICAgICAgICAgICAg
IGlzIHRoZSBlbmQgbXkgZnJpZW5kKS4gIFRoaXMgYXJndW1lbnQgaXMgcGFzc2VkIG9uIHRvCi0g
ICAgICAgICAgICAgICAgICAgOnB5OmZ1bmM6YHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duYC4KKyAg
ICAtIFNldHVwIHBoYXNlOgorICAgICAgICAtIGBgY2FsbCA9IHB5dGVzdF9ydW50ZXN0X3NldHVw
KGl0ZW0pYGAgKHdyYXBwZWQgaW4gYGBDYWxsSW5mbyh3aGVuPSJzZXR1cCIpYGApCisgICAgICAg
IC0gYGByZXBvcnQgPSBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpYGAKKyAg
ICAgICAgLSBgYHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChyZXBvcnQpYGAKKyAgICAgICAgLSBg
YHB5dGVzdF9leGNlcHRpb25faW50ZXJhY3QoY2FsbCwgcmVwb3J0KWBgIGlmIGFuIGludGVyYWN0
aXZlIGV4Y2VwdGlvbiBvY2N1cnJlZAogCi0gICAgOnJldHVybiBib29sZWFuOiBUcnVlIGlmIG5v
IGZ1cnRoZXIgaG9vayBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGJlIGludm9rZWQuCisgICAgLSBD
YWxsIHBoYXNlLCBpZiB0aGUgdGhlIHNldHVwIHBhc3NlZCBhbmQgdGhlIGBgc2V0dXBvbmx5YGAg
cHl0ZXN0IG9wdGlvbiBpcyBub3Qgc2V0OgorICAgICAgICAtIGBgY2FsbCA9IHB5dGVzdF9ydW50
ZXN0X2NhbGwoaXRlbSlgYCAod3JhcHBlZCBpbiBgYENhbGxJbmZvKHdoZW49ImNhbGwiKWBgKQor
ICAgICAgICAtIGBgcmVwb3J0ID0gcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxs
KWBgCisgICAgICAgIC0gYGBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0KWBgCisgICAg
ICAgIC0gYGBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KGNhbGwsIHJlcG9ydClgYCBpZiBhbiBp
bnRlcmFjdGl2ZSBleGNlcHRpb24gb2NjdXJyZWQKIAorICAgIC0gVGVhcmRvd24gcGhhc2U6Cisg
ICAgICAgIC0gYGBjYWxsID0gcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSwgbmV4dGl0ZW0p
YGAgKHdyYXBwZWQgaW4gYGBDYWxsSW5mbyh3aGVuPSJ0ZWFyZG93biIpYGApCisgICAgICAgIC0g
YGByZXBvcnQgPSBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpYGAKKyAgICAg
ICAgLSBgYHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChyZXBvcnQpYGAKKyAgICAgICAgLSBgYHB5
dGVzdF9leGNlcHRpb25faW50ZXJhY3QoY2FsbCwgcmVwb3J0KWBgIGlmIGFuIGludGVyYWN0aXZl
IGV4Y2VwdGlvbiBvY2N1cnJlZAogCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0
LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgorICAgIC0gYGBweXRlc3RfcnVudGVzdF9sb2dm
aW5pc2gobm9kZWlkLCBsb2NhdGlvbilgYAorCisgICAgOnBhcmFtIGl0ZW06IFRlc3QgaXRlbSBm
b3Igd2hpY2ggdGhlIHJ1bnRlc3QgcHJvdG9jb2wgaXMgcGVyZm9ybWVkLgorICAgIDpwYXJhbSBu
ZXh0aXRlbTogVGhlIHNjaGVkdWxlZC10by1iZS1uZXh0IHRlc3QgaXRlbSAob3IgTm9uZSBpZiB0
aGlzIGlzIHRoZSBlbmQgbXkgZnJpZW5kKS4KKworICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25l
IHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YC4KKyAgICBUaGUgcmV0dXJuIHZhbHVlIGlz
IG5vdCB1c2VkLCBidXQgb25seSBzdG9wcyBmdXJ0aGVyIHByb2Nlc3NpbmcuCisgICAgIiIiCiAK
IAotZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KG5vZGVpZCwgbG9jYXRpb24pOgotICAgICIi
IiBzaWduYWwgdGhlIHN0YXJ0IG9mIHJ1bm5pbmcgYSBzaW5nbGUgdGVzdCBpdGVtLgorZGVmIHB5
dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KAorICAgIG5vZGVpZDogc3RyLCBsb2NhdGlvbjogVHVwbGVb
c3RyLCBPcHRpb25hbFtpbnRdLCBzdHJdCispIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGF0IHRo
ZSBzdGFydCBvZiBydW5uaW5nIHRoZSBydW50ZXN0IHByb3RvY29sIGZvciBhIHNpbmdsZSBpdGVt
LgogCi0gICAgVGhpcyBob29rIHdpbGwgYmUgY2FsbGVkICoqYmVmb3JlKiogOmZ1bmM6YHB5dGVz
dF9ydW50ZXN0X3NldHVwYCwgOmZ1bmM6YHB5dGVzdF9ydW50ZXN0X2NhbGxgIGFuZAotICAgIDpm
dW5jOmBweXRlc3RfcnVudGVzdF90ZWFyZG93bmAgaG9va3MuCisgICAgU2VlIDpmdW5jOmBweXRl
c3RfcnVudGVzdF9wcm90b2NvbGAgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bnRlc3QgcHJv
dG9jb2wuCiAKLSAgICA6cGFyYW0gc3RyIG5vZGVpZDogZnVsbCBpZCBvZiB0aGUgaXRlbQotICAg
IDpwYXJhbSBsb2NhdGlvbjogYSB0cmlwbGUgb2YgYGAoZmlsZW5hbWUsIGxpbmVudW0sIHRlc3Ru
YW1lKWBgCisgICAgOnBhcmFtIHN0ciBub2RlaWQ6IEZ1bGwgbm9kZSBJRCBvZiB0aGUgaXRlbS4K
KyAgICA6cGFyYW0gbG9jYXRpb246IEEgdHJpcGxlIG9mIGBgKGZpbGVuYW1lLCBsaW5lbm8sIHRl
c3RuYW1lKWBgLgogICAgICIiIgogCiAKLWRlZiBweXRlc3RfcnVudGVzdF9sb2dmaW5pc2gobm9k
ZWlkLCBsb2NhdGlvbik6Ci0gICAgIiIiIHNpZ25hbCB0aGUgY29tcGxldGUgZmluaXNoIG9mIHJ1
bm5pbmcgYSBzaW5nbGUgdGVzdCBpdGVtLgorZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaCgK
KyAgICBub2RlaWQ6IHN0ciwgbG9jYXRpb246IFR1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3Ry
XQorKSAtPiBOb25lOgorICAgICIiIkNhbGxlZCBhdCB0aGUgZW5kIG9mIHJ1bm5pbmcgdGhlIHJ1
bnRlc3QgcHJvdG9jb2wgZm9yIGEgc2luZ2xlIGl0ZW0uCiAKLSAgICBUaGlzIGhvb2sgd2lsbCBi
ZSBjYWxsZWQgKiphZnRlcioqIDpmdW5jOmBweXRlc3RfcnVudGVzdF9zZXR1cGAsIDpmdW5jOmBw
eXRlc3RfcnVudGVzdF9jYWxsYCBhbmQKLSAgICA6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfdGVhcmRv
d25gIGhvb2tzLgorICAgIFNlZSA6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2xgIGZvciBh
IGRlc2NyaXB0aW9uIG9mIHRoZSBydW50ZXN0IHByb3RvY29sLgogCi0gICAgOnBhcmFtIHN0ciBu
b2RlaWQ6IGZ1bGwgaWQgb2YgdGhlIGl0ZW0KLSAgICA6cGFyYW0gbG9jYXRpb246IGEgdHJpcGxl
IG9mIGBgKGZpbGVuYW1lLCBsaW5lbnVtLCB0ZXN0bmFtZSlgYAorICAgIDpwYXJhbSBzdHIgbm9k
ZWlkOiBGdWxsIG5vZGUgSUQgb2YgdGhlIGl0ZW0uCisgICAgOnBhcmFtIGxvY2F0aW9uOiBBIHRy
aXBsZSBvZiBgYChmaWxlbmFtZSwgbGluZW5vLCB0ZXN0bmFtZSlgYC4KICAgICAiIiIKIAogCi1k
ZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6Ci0gICAgIiIiIGNhbGxlZCBiZWZvcmUgYGBw
eXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pYGAuICIiIgorZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVw
KGl0ZW06ICJJdGVtIikgLT4gTm9uZToKKyAgICAiIiJDYWxsZWQgdG8gcGVyZm9ybSB0aGUgc2V0
dXAgcGhhc2UgZm9yIGEgdGVzdCBpdGVtLgogCisgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gcnVucyBgYHNldHVwKClgYCBvbiBgYGl0ZW1gYCBhbmQgYWxsIG9mIGl0cworICAgIHBhcmVu
dHMgKHdoaWNoIGhhdmVuJ3QgYmVlbiBzZXR1cCB5ZXQpLiBUaGlzIGluY2x1ZGVzIG9idGFpbmlu
ZyB0aGUKKyAgICB2YWx1ZXMgb2YgZml4dHVyZXMgcmVxdWlyZWQgYnkgdGhlIGl0ZW0gKHdoaWNo
IGhhdmVuJ3QgYmVlbiBvYnRhaW5lZAorICAgIHlldCkuCisgICAgIiIiCisKKworZGVmIHB5dGVz
dF9ydW50ZXN0X2NhbGwoaXRlbTogIkl0ZW0iKSAtPiBOb25lOgorICAgICIiIkNhbGxlZCB0byBy
dW4gdGhlIHRlc3QgZm9yIHRlc3QgaXRlbSAodGhlIGNhbGwgcGhhc2UpLgorCisgICAgVGhlIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYGBpdGVtLnJ1bnRlc3QoKWBgLgorICAgICIiIgog
Ci1kZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtKToKLSAgICAiIiIgY2FsbGVkIHRvIGV4ZWN1
dGUgdGhlIHRlc3QgYGBpdGVtYGAuICIiIgogCitkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24o
aXRlbTogIkl0ZW0iLCBuZXh0aXRlbTogT3B0aW9uYWxbIkl0ZW0iXSkgLT4gTm9uZToKKyAgICAi
IiJDYWxsZWQgdG8gcGVyZm9ybSB0aGUgdGVhcmRvd24gcGhhc2UgZm9yIGEgdGVzdCBpdGVtLgog
Ci1kZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSwgbmV4dGl0ZW0pOgotICAgICIiIiBj
YWxsZWQgYWZ0ZXIgYGBweXRlc3RfcnVudGVzdF9jYWxsYGAuCisgICAgVGhlIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gcnVucyB0aGUgZmluYWxpemVycyBhbmQgY2FsbHMgYGB0ZWFyZG93bigpYGAK
KyAgICBvbiBgYGl0ZW1gYCBhbmQgYWxsIG9mIGl0cyBwYXJlbnRzICh3aGljaCBuZWVkIHRvIGJl
IHRvcm4gZG93bikuIFRoaXMKKyAgICBpbmNsdWRlcyBydW5uaW5nIHRoZSB0ZWFyZG93biBwaGFz
ZSBvZiBmaXh0dXJlcyByZXF1aXJlZCBieSB0aGUgaXRlbSAoaWYKKyAgICB0aGV5IGdvIG91dCBv
ZiBzY29wZSkuCiAKLSAgICA6YXJnIG5leHRpdGVtOiB0aGUgc2NoZWR1bGVkLXRvLWJlLW5leHQg
dGVzdCBpdGVtIChOb25lIGlmIG5vIGZ1cnRoZXIKLSAgICAgICAgICAgICAgICAgICB0ZXN0IGl0
ZW0gaXMgc2NoZWR1bGVkKS4gIFRoaXMgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8KLSAgICAgICAg
ICAgICAgICAgICBwZXJmb3JtIGV4YWN0IHRlYXJkb3ducywgaS5lLiBjYWxsaW5nIGp1c3QgZW5v
dWdoIGZpbmFsaXplcnMKLSAgICAgICAgICAgICAgICAgICBzbyB0aGF0IG5leHRpdGVtIG9ubHkg
bmVlZHMgdG8gY2FsbCBzZXR1cC1mdW5jdGlvbnMuCisgICAgOnBhcmFtIG5leHRpdGVtOgorICAg
ICAgICBUaGUgc2NoZWR1bGVkLXRvLWJlLW5leHQgdGVzdCBpdGVtIChOb25lIGlmIG5vIGZ1cnRo
ZXIgdGVzdCBpdGVtIGlzCisgICAgICAgIHNjaGVkdWxlZCkuIFRoaXMgYXJndW1lbnQgY2FuIGJl
IHVzZWQgdG8gcGVyZm9ybSBleGFjdCB0ZWFyZG93bnMsCisgICAgICAgIGkuZS4gY2FsbGluZyBq
dXN0IGVub3VnaCBmaW5hbGl6ZXJzIHNvIHRoYXQgbmV4dGl0ZW0gb25seSBuZWVkcyB0bworICAg
ICAgICBjYWxsIHNldHVwLWZ1bmN0aW9ucy4KICAgICAiIiIKIAogCiBAaG9va3NwZWMoZmlyc3Ry
ZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgot
ICAgICIiIiByZXR1cm4gYSA6cHk6Y2xhc3M6YF9weXRlc3QucnVubmVyLlRlc3RSZXBvcnRgIG9i
amVjdAotICAgIGZvciB0aGUgZ2l2ZW4gOnB5OmNsYXNzOmBweXRlc3QuSXRlbSA8X3B5dGVzdC5t
YWluLkl0ZW0+YCBhbmQKLSAgICA6cHk6Y2xhc3M6YF9weXRlc3QucnVubmVyLkNhbGxJbmZvYC4K
K2RlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KAorICAgIGl0ZW06ICJJdGVtIiwgY2FsbDog
IkNhbGxJbmZvW05vbmVdIgorKSAtPiBPcHRpb25hbFsiVGVzdFJlcG9ydCJdOgorICAgICIiIkNh
bGxlZCB0byBjcmVhdGUgYSA6cHk6Y2xhc3M6YF9weXRlc3QucmVwb3J0cy5UZXN0UmVwb3J0YCBm
b3IgZWFjaCBvZgorICAgIHRoZSBzZXR1cCwgY2FsbCBhbmQgdGVhcmRvd24gcnVudGVzdCBwaGFz
ZXMgb2YgYSB0ZXN0IGl0ZW0uCisKKyAgICBTZWUgOmZ1bmM6YHB5dGVzdF9ydW50ZXN0X3Byb3Rv
Y29sYCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcnVudGVzdCBwcm90b2NvbC4KKworICAgIDpw
YXJhbSBDYWxsSW5mb1tOb25lXSBjYWxsOiBUaGUgYGBDYWxsSW5mb2BgIGZvciB0aGUgcGhhc2Uu
CisKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJl
c3VsdGAuCisgICAgIiIiCisKIAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwg
c2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKK2RlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQo
cmVwb3J0OiAiVGVzdFJlcG9ydCIpIC0+IE5vbmU6CisgICAgIiIiUHJvY2VzcyB0aGUgOnB5OmNs
YXNzOmBfcHl0ZXN0LnJlcG9ydHMuVGVzdFJlcG9ydGAgcHJvZHVjZWQgZm9yIGVhY2gKKyAgICBv
ZiB0aGUgc2V0dXAsIGNhbGwgYW5kIHRlYXJkb3duIHJ1bnRlc3QgcGhhc2VzIG9mIGFuIGl0ZW0u
CisKKyAgICBTZWUgOmZ1bmM6YHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sYCBmb3IgYSBkZXNjcmlw
dGlvbiBvZiB0aGUgcnVudGVzdCBwcm90b2NvbC4KKyAgICAiIiIKIAogCi1kZWYgcHl0ZXN0X3J1
bnRlc3RfbG9ncmVwb3J0KHJlcG9ydCk6Ci0gICAgIiIiIHByb2Nlc3MgYSB0ZXN0IHNldHVwL2Nh
bGwvdGVhcmRvd24gcmVwb3J0IHJlbGF0aW5nIHRvCi0gICAgdGhlIHJlc3BlY3RpdmUgcGhhc2Ug
b2YgZXhlY3V0aW5nIGEgdGVzdC4gIiIiCitAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKK2Rl
ZiBweXRlc3RfcmVwb3J0X3RvX3NlcmlhbGl6YWJsZSgKKyAgICBjb25maWc6ICJDb25maWciLCBy
ZXBvcnQ6IFVuaW9uWyJDb2xsZWN0UmVwb3J0IiwgIlRlc3RSZXBvcnQiXSwKKykgLT4gT3B0aW9u
YWxbRGljdFtzdHIsIEFueV1dOgorICAgICIiIlNlcmlhbGl6ZSB0aGUgZ2l2ZW4gcmVwb3J0IG9i
amVjdCBpbnRvIGEgZGF0YSBzdHJ1Y3R1cmUgc3VpdGFibGUgZm9yCisgICAgc2VuZGluZyBvdmVy
IHRoZSB3aXJlLCBlLmcuIGNvbnZlcnRlZCB0byBKU09OLiIiIgorCisKK0Bob29rc3BlYyhmaXJz
dHJlc3VsdD1UcnVlKQorZGVmIHB5dGVzdF9yZXBvcnRfZnJvbV9zZXJpYWxpemFibGUoCisgICAg
Y29uZmlnOiAiQ29uZmlnIiwgZGF0YTogRGljdFtzdHIsIEFueV0sCispIC0+IE9wdGlvbmFsW1Vu
aW9uWyJDb2xsZWN0UmVwb3J0IiwgIlRlc3RSZXBvcnQiXV06CisgICAgIiIiUmVzdG9yZSBhIHJl
cG9ydCBvYmplY3QgcHJldmlvdXNseSBzZXJpYWxpemVkIHdpdGggcHl0ZXN0X3JlcG9ydF90b19z
ZXJpYWxpemFibGUoKS4iIiIKIAogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM5NCwxMiArNTM5
LDE0IEBAIGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0KToKIAogCiBAaG9va3Nw
ZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVm
LCByZXF1ZXN0KToKLSAgICAiIiIgcGVyZm9ybXMgZml4dHVyZSBzZXR1cCBleGVjdXRpb24uCitk
ZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoCisgICAgZml4dHVyZWRlZjogIkZpeHR1cmVEZWZbQW55
XSIsIHJlcXVlc3Q6ICJTdWJSZXF1ZXN0IgorKSAtPiBPcHRpb25hbFtvYmplY3RdOgorICAgICIi
IlBlcmZvcm0gZml4dHVyZSBzZXR1cCBleGVjdXRpb24uCiAKLSAgICA6cmV0dXJuOiBUaGUgcmV0
dXJuIHZhbHVlIG9mIHRoZSBjYWxsIHRvIHRoZSBmaXh0dXJlIGZ1bmN0aW9uCisgICAgOnJldHVy
bnM6IFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGwgdG8gdGhlIGZpeHR1cmUgZnVuY3Rpb24u
CiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJl
c3VsdGAKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJz
dHJlc3VsdGAuCiAKICAgICAuLiBub3RlOjoKICAgICAgICAgSWYgdGhlIGZpeHR1cmUgZnVuY3Rp
b24gcmV0dXJucyBOb25lLCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YKQEAgLTQwOCwxMCArNTU1
LDEyIEBAIGRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCByZXF1ZXN0KToKICAg
ICAiIiIKIAogCi1kZWYgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXIoZml4dHVyZWRlZiwg
cmVxdWVzdCk6Ci0gICAgIiIiIGNhbGxlZCBhZnRlciBmaXh0dXJlIHRlYXJkb3duLCBidXQgYmVm
b3JlIHRoZSBjYWNoZSBpcyBjbGVhcmVkIHNvCi0gICAgdGhlIGZpeHR1cmUgcmVzdWx0IGNhY2hl
IGBgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0YGAgY2FuCi0gICAgc3RpbGwgYmUgYWNjZXNzZWQu
IiIiCitkZWYgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXIoCisgICAgZml4dHVyZWRlZjog
IkZpeHR1cmVEZWZbQW55XSIsIHJlcXVlc3Q6ICJTdWJSZXF1ZXN0IgorKSAtPiBOb25lOgorICAg
ICIiIkNhbGxlZCBhZnRlciBmaXh0dXJlIHRlYXJkb3duLCBidXQgYmVmb3JlIHRoZSBjYWNoZSBp
cyBjbGVhcmVkLCBzbworICAgIHRoZSBmaXh0dXJlIHJlc3VsdCBgYGZpeHR1cmVkZWYuY2FjaGVk
X3Jlc3VsdGBgIGlzIHN0aWxsIGF2YWlsYWJsZSAobm90CisgICAgYGBOb25lYGApLiIiIgogCiAK
ICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE5LDI2ICs1NjgsMjggQEAgZGVmIHB5dGVzdF9maXh0
dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgogIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIAotZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lvbik6Ci0gICAgIiIiIGNhbGxl
ZCBhZnRlciB0aGUgYGBTZXNzaW9uYGAgb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGJlZm9y
ZSBwZXJmb3JtaW5nIGNvbGxlY3Rpb24KK2RlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb246
ICJTZXNzaW9uIikgLT4gTm9uZToKKyAgICAiIiJDYWxsZWQgYWZ0ZXIgdGhlIGBgU2Vzc2lvbmBg
IG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkIGFuZCBiZWZvcmUgcGVyZm9ybWluZyBjb2xsZWN0aW9u
CiAgICAgYW5kIGVudGVyaW5nIHRoZSBydW4gdGVzdCBsb29wLgogCi0gICAgOnBhcmFtIF9weXRl
c3QubWFpbi5TZXNzaW9uIHNlc3Npb246IHRoZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QKKyAgICA6
cGFyYW0gcHl0ZXN0LlNlc3Npb24gc2Vzc2lvbjogVGhlIHB5dGVzdCBzZXNzaW9uIG9iamVjdC4K
ICAgICAiIiIKIAogCi1kZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbiwgZXhpdHN0YXR1
cyk6Ci0gICAgIiIiIGNhbGxlZCBhZnRlciB3aG9sZSB0ZXN0IHJ1biBmaW5pc2hlZCwgcmlnaHQg
YmVmb3JlIHJldHVybmluZyB0aGUgZXhpdCBzdGF0dXMgdG8gdGhlIHN5c3RlbS4KK2RlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaCgKKyAgICBzZXNzaW9uOiAiU2Vzc2lvbiIsIGV4aXRzdGF0dXM6IFVu
aW9uW2ludCwgIkV4aXRDb2RlIl0sCispIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGFmdGVyIHdo
b2xlIHRlc3QgcnVuIGZpbmlzaGVkLCByaWdodCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBleGl0IHN0
YXR1cyB0byB0aGUgc3lzdGVtLgogCi0gICAgOnBhcmFtIF9weXRlc3QubWFpbi5TZXNzaW9uIHNl
c3Npb246IHRoZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QKLSAgICA6cGFyYW0gaW50IGV4aXRzdGF0
dXM6IHRoZSBzdGF0dXMgd2hpY2ggcHl0ZXN0IHdpbGwgcmV0dXJuIHRvIHRoZSBzeXN0ZW0KKyAg
ICA6cGFyYW0gcHl0ZXN0LlNlc3Npb24gc2Vzc2lvbjogVGhlIHB5dGVzdCBzZXNzaW9uIG9iamVj
dC4KKyAgICA6cGFyYW0gaW50IGV4aXRzdGF0dXM6IFRoZSBzdGF0dXMgd2hpY2ggcHl0ZXN0IHdp
bGwgcmV0dXJuIHRvIHRoZSBzeXN0ZW0uCiAgICAgIiIiCiAKIAotZGVmIHB5dGVzdF91bmNvbmZp
Z3VyZShjb25maWcpOgotICAgICIiIiBjYWxsZWQgYmVmb3JlIHRlc3QgcHJvY2VzcyBpcyBleGl0
ZWQuCitkZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZzogIkNvbmZpZyIpIC0+IE5vbmU6Cisg
ICAgIiIiQ2FsbGVkIGJlZm9yZSB0ZXN0IHByb2Nlc3MgaXMgZXhpdGVkLgogCi0gICAgOnBhcmFt
IF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0CisgICAg
OnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRoZSBweXRlc3QgY29uZmlnIG9i
amVjdC4KICAgICAiIiIKIAogCkBAIC00NDcsMjggKzU5OCw3NCBAQCBkZWYgcHl0ZXN0X3VuY29u
ZmlndXJlKGNvbmZpZyk6CiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1kZWYgcHl0ZXN0X2Fzc2Vy
dHJlcHJfY29tcGFyZShjb25maWcsIG9wLCBsZWZ0LCByaWdodCk6Ci0gICAgIiIicmV0dXJuIGV4
cGxhbmF0aW9uIGZvciBjb21wYXJpc29ucyBpbiBmYWlsaW5nIGFzc2VydCBleHByZXNzaW9ucy4K
K2RlZiBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlKAorICAgIGNvbmZpZzogIkNvbmZpZyIsIG9w
OiBzdHIsIGxlZnQ6IG9iamVjdCwgcmlnaHQ6IG9iamVjdAorKSAtPiBPcHRpb25hbFtMaXN0W3N0
cl1dOgorICAgICIiIlJldHVybiBleHBsYW5hdGlvbiBmb3IgY29tcGFyaXNvbnMgaW4gZmFpbGlu
ZyBhc3NlcnQgZXhwcmVzc2lvbnMuCiAKICAgICBSZXR1cm4gTm9uZSBmb3Igbm8gY3VzdG9tIGV4
cGxhbmF0aW9uLCBvdGhlcndpc2UgcmV0dXJuIGEgbGlzdAotICAgIG9mIHN0cmluZ3MuICBUaGUg
c3RyaW5ncyB3aWxsIGJlIGpvaW5lZCBieSBuZXdsaW5lcyBidXQgYW55IG5ld2xpbmVzCi0gICAg
KmluKiBhIHN0cmluZyB3aWxsIGJlIGVzY2FwZWQuICBOb3RlIHRoYXQgYWxsIGJ1dCB0aGUgZmly
c3QgbGluZSB3aWxsCisgICAgb2Ygc3RyaW5ncy4gVGhlIHN0cmluZ3Mgd2lsbCBiZSBqb2luZWQg
YnkgbmV3bGluZXMgYnV0IGFueSBuZXdsaW5lcworICAgICppbiogYSBzdHJpbmcgd2lsbCBiZSBl
c2NhcGVkLiBOb3RlIHRoYXQgYWxsIGJ1dCB0aGUgZmlyc3QgbGluZSB3aWxsCiAgICAgYmUgaW5k
ZW50ZWQgc2xpZ2h0bHksIHRoZSBpbnRlbnRpb24gaXMgZm9yIHRoZSBmaXJzdCBsaW5lIHRvIGJl
IGEgc3VtbWFyeS4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBw
eXRlc3QgY29uZmlnIG9iamVjdAorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29u
ZmlnOiBUaGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCisgICAgIiIiCisKKworZGVmIHB5dGVzdF9h
c3NlcnRpb25fcGFzcyhpdGVtOiAiSXRlbSIsIGxpbmVubzogaW50LCBvcmlnOiBzdHIsIGV4cGw6
IHN0cikgLT4gTm9uZToKKyAgICAiIiIqKihFeHBlcmltZW50YWwpKiogQ2FsbGVkIHdoZW5ldmVy
IGFuIGFzc2VydGlvbiBwYXNzZXMuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiA1LjAKKworICAg
IFVzZSB0aGlzIGhvb2sgdG8gZG8gc29tZSBwcm9jZXNzaW5nIGFmdGVyIGEgcGFzc2luZyBhc3Nl
cnRpb24uCisgICAgVGhlIG9yaWdpbmFsIGFzc2VydGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFi
bGUgaW4gdGhlIGBvcmlnYCBzdHJpbmcKKyAgICBhbmQgdGhlIHB5dGVzdCBpbnRyb3NwZWN0ZWQg
YXNzZXJ0aW9uIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUKKyAgICBgZXhwbGAgc3Ry
aW5nLgorCisgICAgVGhpcyBob29rIG11c3QgYmUgZXhwbGljaXRseSBlbmFibGVkIGJ5IHRoZSBg
YGVuYWJsZV9hc3NlcnRpb25fcGFzc19ob29rYGAKKyAgICBpbmktZmlsZSBvcHRpb246CisKKyAg
ICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgZW5hYmxl
X2Fzc2VydGlvbl9wYXNzX2hvb2s9dHJ1ZQorCisgICAgWW91IG5lZWQgdG8gKipjbGVhbiB0aGUg
LnB5YyoqIGZpbGVzIGluIHlvdXIgcHJvamVjdCBkaXJlY3RvcnkgYW5kIGludGVycHJldGVyIGxp
YnJhcmllcworICAgIHdoZW4gZW5hYmxpbmcgdGhpcyBvcHRpb24sIGFzIGFzc2VydGlvbnMgd2ls
bCByZXF1aXJlIHRvIGJlIHJlLXdyaXR0ZW4uCisKKyAgICA6cGFyYW0gcHl0ZXN0Lkl0ZW0gaXRl
bTogcHl0ZXN0IGl0ZW0gb2JqZWN0IG9mIGN1cnJlbnQgdGVzdC4KKyAgICA6cGFyYW0gaW50IGxp
bmVubzogTGluZSBudW1iZXIgb2YgdGhlIGFzc2VydCBzdGF0ZW1lbnQuCisgICAgOnBhcmFtIHN0
ciBvcmlnOiBTdHJpbmcgd2l0aCB0aGUgb3JpZ2luYWwgYXNzZXJ0aW9uLgorICAgIDpwYXJhbSBz
dHIgZXhwbDogU3RyaW5nIHdpdGggdGhlIGFzc2VydCBleHBsYW5hdGlvbi4KKworICAgIC4uIG5v
dGU6OgorCisgICAgICAgIFRoaXMgaG9vayBpcyAqKmV4cGVyaW1lbnRhbCoqLCBzbyBpdHMgcGFy
YW1ldGVycyBvciBldmVuIHRoZSBob29rIGl0c2VsZiBtaWdodAorICAgICAgICBiZSBjaGFuZ2Vk
L3JlbW92ZWQgd2l0aG91dCB3YXJuaW5nIGluIGFueSBmdXR1cmUgcHl0ZXN0IHJlbGVhc2UuCisK
KyAgICAgICAgSWYgeW91IGZpbmQgdGhpcyBob29rIHVzZWZ1bCwgcGxlYXNlIHNoYXJlIHlvdXIg
ZmVlZGJhY2sgaW4gYW4gaXNzdWUuCiAgICAgIiIiCiAKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0j
IGhvb2tzIGZvciBpbmZsdWVuY2luZyByZXBvcnRpbmcgKGludm9rZWQgZnJvbSBfcHl0ZXN0X3Rl
cm1pbmFsKQorIyBIb29rcyBmb3IgaW5mbHVlbmNpbmcgcmVwb3J0aW5nIChpbnZva2VkIGZyb20g
X3B5dGVzdF90ZXJtaW5hbCkuCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1kZWYgcHl0ZXN0X3Jl
cG9ydF9oZWFkZXIoY29uZmlnLCBzdGFydGRpcik6Ci0gICAgIiIiIHJldHVybiBhIHN0cmluZyBv
ciBsaXN0IG9mIHN0cmluZ3MgdG8gYmUgZGlzcGxheWVkIGFzIGhlYWRlciBpbmZvIGZvciB0ZXJt
aW5hbCByZXBvcnRpbmcuCitkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoCisgICAgY29uZmlnOiAi
Q29uZmlnIiwgc3RhcnRkaXI6IHB5LnBhdGgubG9jYWwKKykgLT4gVW5pb25bc3RyLCBMaXN0W3N0
cl1dOgorICAgICIiIlJldHVybiBhIHN0cmluZyBvciBsaXN0IG9mIHN0cmluZ3MgdG8gYmUgZGlz
cGxheWVkIGFzIGhlYWRlciBpbmZvIGZvciB0ZXJtaW5hbCByZXBvcnRpbmcuCisKKyAgICA6cGFy
YW0gX3B5dGVzdC5jb25maWcuQ29uZmlnIGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0
LgorICAgIDpwYXJhbSBweS5wYXRoLmxvY2FsIHN0YXJ0ZGlyOiBUaGUgc3RhcnRpbmcgZGlyLgog
Ci0gICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IHB5dGVzdCBjb25maWcg
b2JqZWN0Ci0gICAgOnBhcmFtIHN0YXJ0ZGlyOiBweS5wYXRoIG9iamVjdCB3aXRoIHRoZSBzdGFy
dGluZyBkaXIKKyAgICAuLiBub3RlOjoKKworICAgICAgICBMaW5lcyByZXR1cm5lZCBieSBhIHBs
dWdpbiBhcmUgZGlzcGxheWVkIGJlZm9yZSB0aG9zZSBvZiBwbHVnaW5zIHdoaWNoCisgICAgICAg
IHJhbiBiZWZvcmUgaXQuCisgICAgICAgIElmIHlvdSB3YW50IHRvIGhhdmUgeW91ciBsaW5lKHMp
IGRpc3BsYXllZCBmaXJzdCwgdXNlCisgICAgICAgIDpyZWY6YHRyeWxhc3Q9VHJ1ZSA8cGx1Z2lu
LWhvb2tvcmRlcj5gLgogCiAgICAgLi4gbm90ZTo6CiAKQEAgLTQ3OCw1OSArNjc1LDEzNyBAQCBk
ZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnLCBzdGFydGRpcik6CiAgICAgIiIiCiAKIAot
ZGVmIHB5dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZpbmlzaChjb25maWcsIHN0YXJ0ZGlyLCBpdGVt
cyk6Ci0gICAgIiIiCitkZWYgcHl0ZXN0X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoKAorICAgIGNv
bmZpZzogIkNvbmZpZyIsIHN0YXJ0ZGlyOiBweS5wYXRoLmxvY2FsLCBpdGVtczogU2VxdWVuY2Vb
Ikl0ZW0iXSwKKykgLT4gVW5pb25bc3RyLCBMaXN0W3N0cl1dOgorICAgICIiIlJldHVybiBhIHN0
cmluZyBvciBsaXN0IG9mIHN0cmluZ3MgdG8gYmUgZGlzcGxheWVkIGFmdGVyIGNvbGxlY3Rpb24K
KyAgICBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorCisgICAgVGhlc2Ugc3RyaW5ncyB3aWxs
IGJlIGRpc3BsYXllZCBhZnRlciB0aGUgc3RhbmRhcmQgImNvbGxlY3RlZCBYIGl0ZW1zIiBtZXNz
YWdlLgorCiAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgICByZXR1cm4gYSBzdHJpbmcg
b3IgbGlzdCBvZiBzdHJpbmdzIHRvIGJlIGRpc3BsYXllZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBm
aW5pc2hlZCBzdWNjZXNzZnVsbHkuCisgICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBj
b25maWc6IFRoZSBweXRlc3QgY29uZmlnIG9iamVjdC4KKyAgICA6cGFyYW0gcHkucGF0aC5sb2Nh
bCBzdGFydGRpcjogVGhlIHN0YXJ0aW5nIGRpci4KKyAgICA6cGFyYW0gaXRlbXM6IExpc3Qgb2Yg
cHl0ZXN0IGl0ZW1zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGV4ZWN1dGVkOyB0aGlzIGxpc3Qgc2hv
dWxkIG5vdCBiZSBtb2RpZmllZC4KIAotICAgIFRoaXMgc3RyaW5ncyB3aWxsIGJlIGRpc3BsYXll
ZCBhZnRlciB0aGUgc3RhbmRhcmQgImNvbGxlY3RlZCBYIGl0ZW1zIiBtZXNzYWdlLgorICAgIC4u
IG5vdGU6OgogCi0gICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IHB5dGVz
dCBjb25maWcgb2JqZWN0Ci0gICAgOnBhcmFtIHN0YXJ0ZGlyOiBweS5wYXRoIG9iamVjdCB3aXRo
IHRoZSBzdGFydGluZyBkaXIKLSAgICA6cGFyYW0gaXRlbXM6IGxpc3Qgb2YgcHl0ZXN0IGl0ZW1z
IHRoYXQgYXJlIGdvaW5nIHRvIGJlIGV4ZWN1dGVkOyB0aGlzIGxpc3Qgc2hvdWxkIG5vdCBiZSBt
b2RpZmllZC4KKyAgICAgICAgTGluZXMgcmV0dXJuZWQgYnkgYSBwbHVnaW4gYXJlIGRpc3BsYXll
ZCBiZWZvcmUgdGhvc2Ugb2YgcGx1Z2lucyB3aGljaAorICAgICAgICByYW4gYmVmb3JlIGl0Lgor
ICAgICAgICBJZiB5b3Ugd2FudCB0byBoYXZlIHlvdXIgbGluZShzKSBkaXNwbGF5ZWQgZmlyc3Qs
IHVzZQorICAgICAgICA6cmVmOmB0cnlsYXN0PVRydWUgPHBsdWdpbi1ob29rb3JkZXI+YC4KICAg
ICAiIiIKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcmVwb3J0
X3Rlc3RzdGF0dXMocmVwb3J0KToKLSAgICAiIiIgcmV0dXJuIHJlc3VsdC1jYXRlZ29yeSwgc2hv
cnRsZXR0ZXIgYW5kIHZlcmJvc2Ugd29yZCBmb3IgcmVwb3J0aW5nLgorZGVmIHB5dGVzdF9yZXBv
cnRfdGVzdHN0YXR1cygKKyAgICByZXBvcnQ6IFVuaW9uWyJDb2xsZWN0UmVwb3J0IiwgIlRlc3RS
ZXBvcnQiXSwgY29uZmlnOiAiQ29uZmlnIgorKSAtPiBUdXBsZVsKKyAgICBzdHIsIHN0ciwgVW5p
b25bc3RyLCBNYXBwaW5nW3N0ciwgYm9vbF1dLAorXToKKyAgICAiIiJSZXR1cm4gcmVzdWx0LWNh
dGVnb3J5LCBzaG9ydGxldHRlciBhbmQgdmVyYm9zZSB3b3JkIGZvciBzdGF0dXMKKyAgICByZXBv
cnRpbmcuCisKKyAgICBUaGUgcmVzdWx0LWNhdGVnb3J5IGlzIGEgY2F0ZWdvcnkgaW4gd2hpY2gg
dG8gY291bnQgdGhlIHJlc3VsdCwgZm9yCisgICAgZXhhbXBsZSAicGFzc2VkIiwgInNraXBwZWQi
LCAiZXJyb3IiIG9yIHRoZSBlbXB0eSBzdHJpbmcuCisKKyAgICBUaGUgc2hvcnRsZXR0ZXIgaXMg
c2hvd24gYXMgdGVzdGluZyBwcm9ncmVzc2VzLCBmb3IgZXhhbXBsZSAiLiIsICJzIiwKKyAgICAi
RSIgb3IgdGhlIGVtcHR5IHN0cmluZy4KIAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJl
c3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKKyAgICBUaGUgdmVyYm9zZSB3b3JkIGlz
IHNob3duIGFzIHRlc3RpbmcgcHJvZ3Jlc3NlcyBpbiB2ZXJib3NlIG1vZGUsIGZvcgorICAgIGV4
YW1wbGUgIlBBU1NFRCIsICJTS0lQUEVEIiwgIkVSUk9SIiBvciB0aGUgZW1wdHkgc3RyaW5nLgog
CisgICAgcHl0ZXN0IG1heSBzdHlsZSB0aGVzZSBpbXBsaWNpdGx5IGFjY29yZGluZyB0byB0aGUg
cmVwb3J0IG91dGNvbWUuCisgICAgVG8gcHJvdmlkZSBleHBsaWNpdCBzdHlsaW5nLCByZXR1cm4g
YSB0dXBsZSBmb3IgdGhlIHZlcmJvc2Ugd29yZCwKKyAgICBmb3IgZXhhbXBsZSBgYCJyZXJ1biIs
ICJSIiwgKCJSRVJVTiIsIHsieWVsbG93IjogVHJ1ZX0pYGAuCiAKLWRlZiBweXRlc3RfdGVybWlu
YWxfc3VtbWFyeSh0ZXJtaW5hbHJlcG9ydGVyLCBleGl0c3RhdHVzKToKKyAgICA6cGFyYW0gcmVw
b3J0OiBUaGUgcmVwb3J0IG9iamVjdCB3aG9zZSBzdGF0dXMgaXMgdG8gYmUgcmV0dXJuZWQuCisg
ICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRoZSBweXRlc3QgY29uZmln
IG9iamVjdC4KKworICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6
YGZpcnN0cmVzdWx0YC4KKyAgICAiIiIKKworCitkZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnko
CisgICAgdGVybWluYWxyZXBvcnRlcjogIlRlcm1pbmFsUmVwb3J0ZXIiLCBleGl0c3RhdHVzOiAi
RXhpdENvZGUiLCBjb25maWc6ICJDb25maWciLAorKSAtPiBOb25lOgogICAgICIiIkFkZCBhIHNl
Y3Rpb24gdG8gdGVybWluYWwgc3VtbWFyeSByZXBvcnRpbmcuCiAKLSAgICA6cGFyYW0gX3B5dGVz
dC50ZXJtaW5hbC5UZXJtaW5hbFJlcG9ydGVyIHRlcm1pbmFscmVwb3J0ZXI6IHRoZSBpbnRlcm5h
bCB0ZXJtaW5hbCByZXBvcnRlciBvYmplY3QKLSAgICA6cGFyYW0gaW50IGV4aXRzdGF0dXM6IHRo
ZSBleGl0IHN0YXR1cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgYmFjayB0byB0aGUgT1MKKyAgICA6
cGFyYW0gX3B5dGVzdC50ZXJtaW5hbC5UZXJtaW5hbFJlcG9ydGVyIHRlcm1pbmFscmVwb3J0ZXI6
IFRoZSBpbnRlcm5hbCB0ZXJtaW5hbCByZXBvcnRlciBvYmplY3QuCisgICAgOnBhcmFtIGludCBl
eGl0c3RhdHVzOiBUaGUgZXhpdCBzdGF0dXMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGJhY2sgdG8g
dGhlIE9TLgorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBUaGUgcHl0
ZXN0IGNvbmZpZyBvYmplY3QuCiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAuLiB2
ZXJzaW9uYWRkZWQ6OiA0LjIKICAgICAgICAgVGhlIGBgY29uZmlnYGAgcGFyYW1ldGVyLgogICAg
ICIiIgogCiAKLUBob29rc3BlYyhoaXN0b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9sb2d3YXJuaW5n
KG1lc3NhZ2UsIGNvZGUsIG5vZGVpZCwgZnNsb2NhdGlvbik6Ci0gICAgIiIiIHByb2Nlc3MgYSB3
YXJuaW5nIHNwZWNpZmllZCBieSBhIG1lc3NhZ2UsIGEgY29kZSBzdHJpbmcsCi0gICAgYSBub2Rl
aWQgYW5kIGZzbG9jYXRpb24gKGJvdGggb2Ygd2hpY2ggbWF5IGJlIE5vbmUKLSAgICBpZiB0aGUg
d2FybmluZyBpcyBub3QgdGllZCB0byBhIHBhcnRpY3VsYXIgbm9kZS9sb2NhdGlvbikuCitAaG9v
a3NwZWMoaGlzdG9yaWM9VHJ1ZSwgd2Fybl9vbl9pbXBsPVdBUk5JTkdfQ0FQVFVSRURfSE9PSykK
K2RlZiBweXRlc3Rfd2FybmluZ19jYXB0dXJlZCgKKyAgICB3YXJuaW5nX21lc3NhZ2U6ICJ3YXJu
aW5ncy5XYXJuaW5nTWVzc2FnZSIsCisgICAgd2hlbjogIkxpdGVyYWxbJ2NvbmZpZycsICdjb2xs
ZWN0JywgJ3J1bnRlc3QnXSIsCisgICAgaXRlbTogT3B0aW9uYWxbIkl0ZW0iXSwKKyAgICBsb2Nh
dGlvbjogT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnQsIHN0cl1dLAorKSAtPiBOb25lOgorICAgICIi
IigqKkRlcHJlY2F0ZWQqKikgUHJvY2VzcyBhIHdhcm5pbmcgY2FwdHVyZWQgYnkgdGhlIGludGVy
bmFsIHB5dGVzdCB3YXJuaW5ncyBwbHVnaW4uCiAKLSAgICAuLiBub3RlOjoKLSAgICAgICAgVGhp
cyBob29rIGlzIGluY29tcGF0aWJsZSB3aXRoIGBgaG9va3dyYXBwZXI9VHJ1ZWBgLgorICAgIC4u
IGRlcHJlY2F0ZWQ6OiA2LjAKKworICAgIFRoaXMgaG9vayBpcyBjb25zaWRlcmVkIGRlcHJlY2F0
ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBweXRlc3QgdmVyc2lvbi4KKyAgICBV
c2UgOmZ1bmM6YHB5dGVzdF93YXJuaW5nX3JlY29yZGVkYCBpbnN0ZWFkLgorCisgICAgOnBhcmFt
IHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlIHdhcm5pbmdfbWVzc2FnZToKKyAgICAgICAgVGhlIGNh
cHR1cmVkIHdhcm5pbmcuIFRoaXMgaXMgdGhlIHNhbWUgb2JqZWN0IHByb2R1Y2VkIGJ5IDpweTpm
dW5jOmB3YXJuaW5ncy5jYXRjaF93YXJuaW5nc2AsIGFuZCBjb250YWlucworICAgICAgICB0aGUg
c2FtZSBhdHRyaWJ1dGVzIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIDpweTpmdW5jOmB3YXJuaW5ncy5z
aG93d2FybmluZ2AuCisKKyAgICA6cGFyYW0gc3RyIHdoZW46CisgICAgICAgIEluZGljYXRlcyB3
aGVuIHRoZSB3YXJuaW5nIHdhcyBjYXB0dXJlZC4gUG9zc2libGUgdmFsdWVzOgorCisgICAgICAg
ICogYGAiY29uZmlnImBgOiBkdXJpbmcgcHl0ZXN0IGNvbmZpZ3VyYXRpb24vaW5pdGlhbGl6YXRp
b24gc3RhZ2UuCisgICAgICAgICogYGAiY29sbGVjdCJgYDogZHVyaW5nIHRlc3QgY29sbGVjdGlv
bi4KKyAgICAgICAgKiBgYCJydW50ZXN0ImBgOiBkdXJpbmcgdGVzdCBleGVjdXRpb24uCisKKyAg
ICA6cGFyYW0gcHl0ZXN0Lkl0ZW18Tm9uZSBpdGVtOgorICAgICAgICBUaGUgaXRlbSBiZWluZyBl
eGVjdXRlZCBpZiBgYHdoZW5gYCBpcyBgYCJydW50ZXN0ImBgLCBvdGhlcndpc2UgYGBOb25lYGAu
CisKKyAgICA6cGFyYW0gdHVwbGUgbG9jYXRpb246CisgICAgICAgIFdoZW4gYXZhaWxhYmxlLCBo
b2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlIGNhcHR1
cmVkCisgICAgICAgIHdhcm5pbmcgKGZpbGVuYW1lLCBsaW5lbnVtYmVyLCBmdW5jdGlvbikuIGBg
ZnVuY3Rpb25gYCBldmFsdWF0ZXMgdG8gPG1vZHVsZT4KKyAgICAgICAgd2hlbiB0aGUgZXhlY3V0
aW9uIGNvbnRleHQgaXMgYXQgdGhlIG1vZHVsZSBsZXZlbC4KICAgICAiIiIKIAogCi0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMgZG9jdGVzdCBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitAaG9va3Nw
ZWMoaGlzdG9yaWM9VHJ1ZSkKK2RlZiBweXRlc3Rfd2FybmluZ19yZWNvcmRlZCgKKyAgICB3YXJu
aW5nX21lc3NhZ2U6ICJ3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSIsCisgICAgd2hlbjogIkxpdGVy
YWxbJ2NvbmZpZycsICdjb2xsZWN0JywgJ3J1bnRlc3QnXSIsCisgICAgbm9kZWlkOiBzdHIsCisg
ICAgbG9jYXRpb246IE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50LCBzdHJdXSwKKykgLT4gTm9uZToK
KyAgICAiIiJQcm9jZXNzIGEgd2FybmluZyBjYXB0dXJlZCBieSB0aGUgaW50ZXJuYWwgcHl0ZXN0
IHdhcm5pbmdzIHBsdWdpbi4KIAorICAgIDpwYXJhbSB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSB3
YXJuaW5nX21lc3NhZ2U6CisgICAgICAgIFRoZSBjYXB0dXJlZCB3YXJuaW5nLiBUaGlzIGlzIHRo
ZSBzYW1lIG9iamVjdCBwcm9kdWNlZCBieSA6cHk6ZnVuYzpgd2FybmluZ3MuY2F0Y2hfd2Fybmlu
Z3NgLCBhbmQgY29udGFpbnMKKyAgICAgICAgdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUgcGFy
YW1ldGVycyBvZiA6cHk6ZnVuYzpgd2FybmluZ3Muc2hvd3dhcm5pbmdgLgogCi1AaG9va3NwZWMo
Zmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfZG9jdGVzdF9wcmVwYXJlX2NvbnRlbnQoY29u
dGVudCk6Ci0gICAgIiIiIHJldHVybiBwcm9jZXNzZWQgY29udGVudCBmb3IgYSBnaXZlbiBkb2N0
ZXN0CisgICAgOnBhcmFtIHN0ciB3aGVuOgorICAgICAgICBJbmRpY2F0ZXMgd2hlbiB0aGUgd2Fy
bmluZyB3YXMgY2FwdHVyZWQuIFBvc3NpYmxlIHZhbHVlczoKKworICAgICAgICAqIGBgImNvbmZp
ZyJgYDogZHVyaW5nIHB5dGVzdCBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIHN0YWdlLgor
ICAgICAgICAqIGBgImNvbGxlY3QiYGA6IGR1cmluZyB0ZXN0IGNvbGxlY3Rpb24uCisgICAgICAg
ICogYGAicnVudGVzdCJgYDogZHVyaW5nIHRlc3QgZXhlY3V0aW9uLgorCisgICAgOnBhcmFtIHN0
ciBub2RlaWQ6CisgICAgICAgIEZ1bGwgaWQgb2YgdGhlIGl0ZW0uCiAKLSAgICBTdG9wcyBhdCBm
aXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCisgICAgOnBh
cmFtIHR1cGxlfE5vbmUgbG9jYXRpb246CisgICAgICAgIFdoZW4gYXZhaWxhYmxlLCBob2xkcyBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlIGNhcHR1cmVkCisg
ICAgICAgIHdhcm5pbmcgKGZpbGVuYW1lLCBsaW5lbnVtYmVyLCBmdW5jdGlvbikuIGBgZnVuY3Rp
b25gYCBldmFsdWF0ZXMgdG8gPG1vZHVsZT4KKyAgICAgICAgd2hlbiB0aGUgZXhlY3V0aW9uIGNv
bnRleHQgaXMgYXQgdGhlIG1vZHVsZSBsZXZlbC4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDYu
MAorICAgICIiIgogCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTM4LDI2ICs4MTMsNTggQEAg
ZGVmIHB5dGVzdF9kb2N0ZXN0X3ByZXBhcmVfY29udGVudChjb250ZW50KToKICMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiAKLWRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihleGNyZXByLCBleGNpbmZvKToK
LSAgICAiIiIgY2FsbGVkIGZvciBpbnRlcm5hbCBlcnJvcnMuICIiIgorZGVmIHB5dGVzdF9pbnRl
cm5hbGVycm9yKAorICAgIGV4Y3JlcHI6ICJFeGNlcHRpb25SZXByIiwgZXhjaW5mbzogIkV4Y2Vw
dGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0iLAorKSAtPiBPcHRpb25hbFtib29sXToKKyAgICAiIiJD
YWxsZWQgZm9yIGludGVybmFsIGVycm9ycy4KKworICAgIFJldHVybiBUcnVlIHRvIHN1cHByZXNz
IHRoZSBmYWxsYmFjayBoYW5kbGluZyBvZiBwcmludGluZyBhbgorICAgIElOVEVSTkFMRVJST1Ig
bWVzc2FnZSBkaXJlY3RseSB0byBzeXMuc3RkZXJyLgorICAgICIiIgogCiAKLWRlZiBweXRlc3Rf
a2V5Ym9hcmRfaW50ZXJydXB0KGV4Y2luZm8pOgotICAgICIiIiBjYWxsZWQgZm9yIGtleWJvYXJk
IGludGVycnVwdC4gIiIiCitkZWYgcHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdCgKKyAgICBleGNp
bmZvOiAiRXhjZXB0aW9uSW5mb1tVbmlvbltLZXlib2FyZEludGVycnVwdCwgRXhpdF1dIiwKKykg
LT4gTm9uZToKKyAgICAiIiJDYWxsZWQgZm9yIGtleWJvYXJkIGludGVycnVwdC4iIiIKIAogCi1k
ZWYgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChub2RlLCBjYWxsLCByZXBvcnQpOgotICAgICIi
ImNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIHdoaWNoIGNhbiBwb3RlbnRpYWxs
eSBiZQorZGVmIHB5dGVzdF9leGNlcHRpb25faW50ZXJhY3QoCisgICAgbm9kZTogVW5pb25bIkl0
ZW0iLCAiQ29sbGVjdG9yIl0sCisgICAgY2FsbDogIkNhbGxJbmZvW0FueV0iLAorICAgIHJlcG9y
dDogVW5pb25bIkNvbGxlY3RSZXBvcnQiLCAiVGVzdFJlcG9ydCJdLAorKSAtPiBOb25lOgorICAg
ICIiIkNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIHdoaWNoIGNhbiBwb3RlbnRp
YWxseSBiZQogICAgIGludGVyYWN0aXZlbHkgaGFuZGxlZC4KIAotICAgIFRoaXMgaG9vayBpcyBv
bmx5IGNhbGxlZCBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZAotICAgIHRoYXQgaXMgbm90IGFu
IGludGVybmFsIGV4Y2VwdGlvbiBsaWtlIGBgc2tpcC5FeGNlcHRpb25gYC4KKyAgICBNYXkgYmUg
Y2FsbGVkIGR1cmluZyBjb2xsZWN0aW9uIChzZWUgOnB5OmZ1bmM6YHB5dGVzdF9tYWtlX2NvbGxl
Y3RfcmVwb3J0YCksCisgICAgaW4gd2hpY2ggY2FzZSBgYHJlcG9ydGBgIGlzIGEgOnB5OmNsYXNz
OmBfcHl0ZXN0LnJlcG9ydHMuQ29sbGVjdFJlcG9ydGAuCisKKyAgICBNYXkgYmUgY2FsbGVkIGR1
cmluZyBydW50ZXN0IG9mIGFuIGl0ZW0gKHNlZSA6cHk6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfcHJv
dG9jb2xgKSwKKyAgICBpbiB3aGljaCBjYXNlIGBgcmVwb3J0YGAgaXMgYSA6cHk6Y2xhc3M6YF9w
eXRlc3QucmVwb3J0cy5UZXN0UmVwb3J0YC4KKworICAgIFRoaXMgaG9vayBpcyBub3QgY2FsbGVk
IGlmIHRoZSBleGNlcHRpb24gdGhhdCB3YXMgcmFpc2VkIGlzIGFuIGludGVybmFsCisgICAgZXhj
ZXB0aW9uIGxpa2UgYGBza2lwLkV4Y2VwdGlvbmBgLgorICAgICIiIgorCisKK2RlZiBweXRlc3Rf
ZW50ZXJfcGRiKGNvbmZpZzogIkNvbmZpZyIsIHBkYjogInBkYi5QZGIiKSAtPiBOb25lOgorICAg
ICIiIkNhbGxlZCB1cG9uIHBkYi5zZXRfdHJhY2UoKS4KKworICAgIENhbiBiZSB1c2VkIGJ5IHBs
dWdpbnMgdG8gdGFrZSBzcGVjaWFsIGFjdGlvbiBqdXN0IGJlZm9yZSB0aGUgcHl0aG9uCisgICAg
ZGVidWdnZXIgZW50ZXJzIGludGVyYWN0aXZlIG1vZGUuCisKKyAgICA6cGFyYW0gX3B5dGVzdC5j
b25maWcuQ29uZmlnIGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgorICAgIDpwYXJh
bSBwZGIuUGRiIHBkYjogVGhlIFBkYiBpbnN0YW5jZS4KICAgICAiIiIKIAogCi1kZWYgcHl0ZXN0
X2VudGVyX3BkYihjb25maWcpOgotICAgICIiIiBjYWxsZWQgdXBvbiBwZGIuc2V0X3RyYWNlKCks
IGNhbiBiZSB1c2VkIGJ5IHBsdWdpbnMgdG8gdGFrZSBzcGVjaWFsCi0gICAgYWN0aW9uIGp1c3Qg
YmVmb3JlIHRoZSBweXRob24gZGVidWdnZXIgZW50ZXJzIGluIGludGVyYWN0aXZlIG1vZGUuCitk
ZWYgcHl0ZXN0X2xlYXZlX3BkYihjb25maWc6ICJDb25maWciLCBwZGI6ICJwZGIuUGRiIikgLT4g
Tm9uZToKKyAgICAiIiJDYWxsZWQgd2hlbiBsZWF2aW5nIHBkYiAoZS5nLiB3aXRoIGNvbnRpbnVl
IGFmdGVyIHBkYi5zZXRfdHJhY2UoKSkuCisKKyAgICBDYW4gYmUgdXNlZCBieSBwbHVnaW5zIHRv
IHRha2Ugc3BlY2lhbCBhY3Rpb24ganVzdCBhZnRlciB0aGUgcHl0aG9uCisgICAgZGVidWdnZXIg
bGVhdmVzIGludGVyYWN0aXZlIG1vZGUuCiAKLSAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29u
ZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKKyAgICA6cGFyYW0gX3B5dGVzdC5jb25m
aWcuQ29uZmlnIGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgorICAgIDpwYXJhbSBw
ZGIuUGRiIHBkYjogVGhlIFBkYiBpbnN0YW5jZS4KICAgICAiIiIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L2p1bml0eG1sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
anVuaXR4bWwucHkKaW5kZXggMjlkYTI3ZGU3Y2NmLi44NzdiOWJlNzhiY2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2p1bml0eG1sLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L2p1bml0eG1sLnB5CkBAIC0xLDEwOCArMSwxMjIgQEAKLSIiIgotICAgIHJlcG9y
dCB0ZXN0IHJlc3VsdHMgaW4gSlVuaXQtWE1MIGZvcm1hdCwKLSAgICBmb3IgdXNlIHdpdGggSmVu
a2lucyBhbmQgYnVpbGQgaW50ZWdyYXRpb24gc2VydmVycy4KLQorIiIiUmVwb3J0IHRlc3QgcmVz
dWx0cyBpbiBKVW5pdC1YTUwgZm9ybWF0LCBmb3IgdXNlIHdpdGggSmVua2lucyBhbmQgYnVpbGQK
K2ludGVncmF0aW9uIHNlcnZlcnMuCiAKIEJhc2VkIG9uIGluaXRpYWwgY29kZSBmcm9tIFJvc3Mg
TGF3bGV5LgogCi1PdXRwdXQgY29uZm9ybXMgdG8gaHR0cHM6Ly9naXRodWIuY29tL2plbmtpbnNj
aS94dW5pdC1wbHVnaW4vYmxvYi9tYXN0ZXIvCi1zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2plbmtp
bnNjaS9wbHVnaW5zL3h1bml0L3R5cGVzL21vZGVsL3hzZC9qdW5pdC0xMC54c2QKK091dHB1dCBj
b25mb3JtcyB0bworaHR0cHM6Ly9naXRodWIuY29tL2plbmtpbnNjaS94dW5pdC1wbHVnaW4vYmxv
Yi9tYXN0ZXIvc3JjL21haW4vcmVzb3VyY2VzL29yZy9qZW5raW5zY2kvcGx1Z2lucy94dW5pdC90
eXBlcy9tb2RlbC94c2QvanVuaXQtMTAueHNkCiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQogaW1wb3J0IGZ1bmN0
b29scwotaW1wb3J0IHB5CiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCi1p
bXBvcnQgc3lzCi1pbXBvcnQgdGltZQoraW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBF
VAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxs
YWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citm
cm9tIHR5cGluZyBpbXBvcnQgTWF0Y2gKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJv
bSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKwogaW1wb3J0
IHB5dGVzdAogZnJvbSBfcHl0ZXN0IGltcG9ydCBub2RlcworZnJvbSBfcHl0ZXN0IGltcG9ydCB0
aW1pbmcKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25SZXByCitmcm9t
IF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgUmVwckZpbGVMb2NhdGlvbgorZnJvbSBfcHl0ZXN0
LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBmaWxlbmFt
ZV9hcmcKLQotIyBQeXRob24gMi5YIGFuZCAzLlggY29tcGF0aWJpbGl0eQotaWYgc3lzLnZlcnNp
b25faW5mb1swXSA8IDM6Ci0gICAgZnJvbSBjb2RlY3MgaW1wb3J0IG9wZW4KLWVsc2U6Ci0gICAg
dW5pY2hyID0gY2hyCi0gICAgdW5pY29kZSA9IHN0cgotICAgIGxvbmcgPSBpbnQKK2Zyb20gX3B5
dGVzdC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZml4dHVy
ZXMgaW1wb3J0IEZpeHR1cmVSZXF1ZXN0Citmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBvcnQgVGVz
dFJlcG9ydAorZnJvbSBfcHl0ZXN0LnN0b3JlIGltcG9ydCBTdG9yZUtleQorZnJvbSBfcHl0ZXN0
LnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbFJlcG9ydGVyCiAKIAotY2xhc3MgSnVuaXQocHkueG1s
Lk5hbWVzcGFjZSk6Ci0gICAgcGFzcworeG1sX2tleSA9IFN0b3JlS2V5WyJMb2dYTUwiXSgpCiAK
IAotIyBXZSBuZWVkIHRvIGdldCB0aGUgc3Vic2V0IG9mIHRoZSBpbnZhbGlkIHVuaWNvZGUgcmFu
Z2VzIGFjY29yZGluZyB0bwotIyBYTUwgMS4wIHdoaWNoIGFyZSB2YWxpZCBpbiB0aGlzIHB5dGhv
biBidWlsZC4gIEhlbmNlIHdlIGNhbGN1bGF0ZQotIyB0aGlzIGR5bmFtaWNhbGx5IGluc3RlYWQg
b2YgaGFyZGNvZGluZyBpdC4gIFRoZSBzcGVjIHJhbmdlIG9mIHZhbGlkCi0jIGNoYXJzIGlzOiBD
aGFyIDo6PSAjeDkgfCAjeEEgfCAjeEQgfCBbI3gyMC0jeEQ3RkZdIHwgWyN4RTAwMC0jeEZGRkRd
Ci0jICAgICAgICAgICAgICAgICAgICB8IFsjeDEwMDAwLSN4MTBGRkZGXQotX2xlZ2FsX2NoYXJz
ID0gKDB4MDksIDB4MEEsIDB4MGQpCi1fbGVnYWxfcmFuZ2VzID0gKCgweDIwLCAweDdFKSwgKDB4
ODAsIDB4RDdGRiksICgweEUwMDAsIDB4RkZGRCksICgweDEwMDAwLCAweDEwRkZGRikpCi1fbGVn
YWxfeG1sX3JlID0gWwotICAgIHVuaWNvZGUoIiVzLSVzIikgJSAodW5pY2hyKGxvdyksIHVuaWNo
cihoaWdoKSkKLSAgICBmb3IgKGxvdywgaGlnaCkgaW4gX2xlZ2FsX3JhbmdlcwotICAgIGlmIGxv
dyA8IHN5cy5tYXh1bmljb2RlCi1dCi1fbGVnYWxfeG1sX3JlID0gW3VuaWNocih4KSBmb3IgeCBp
biBfbGVnYWxfY2hhcnNdICsgX2xlZ2FsX3htbF9yZQotaWxsZWdhbF94bWxfcmUgPSByZS5jb21w
aWxlKHVuaWNvZGUoIlteJXNdIikgJSB1bmljb2RlKCIiKS5qb2luKF9sZWdhbF94bWxfcmUpKQot
ZGVsIF9sZWdhbF9jaGFycwotZGVsIF9sZWdhbF9yYW5nZXMKLWRlbCBfbGVnYWxfeG1sX3JlCitk
ZWYgYmluX3htbF9lc2NhcGUoYXJnOiBvYmplY3QpIC0+IHN0cjoKKyAgICByIiIiVmlzdWFsbHkg
ZXNjYXBlIGludmFsaWQgWE1MIGNoYXJhY3RlcnMuCiAKLV9weV9leHRfcmUgPSByZS5jb21waWxl
KHIiXC5weSQiKQotCi0KLWRlZiBiaW5feG1sX2VzY2FwZShhcmcpOgorICAgIEZvciBleGFtcGxl
LCB0cmFuc2Zvcm1zCisgICAgICAgICdoZWxsb1xhd29ybGRcYicKKyAgICBpbnRvCisgICAgICAg
ICdoZWxsbyN4MDd3b3JsZCN4MDgnCisgICAgTm90ZSB0aGF0IHRoZSAjeEFCcyBhcmUgKm5vdCog
WE1MIGVzY2FwZXMgLSBtaXNzaW5nIHRoZSBhbXBlcnNhbmQgJiN4QUIuCisgICAgVGhlIGlkZWEg
aXMgdG8gZXNjYXBlIHZpc3VhbGx5IGZvciB0aGUgdXNlciByYXRoZXIgdGhhbiBmb3IgWE1MIGl0
c2VsZi4KKyAgICAiIiIKIAotICAgIGRlZiByZXBsKG1hdGNob2JqKToKKyAgICBkZWYgcmVwbCht
YXRjaG9iajogTWF0Y2hbc3RyXSkgLT4gc3RyOgogICAgICAgICBpID0gb3JkKG1hdGNob2JqLmdy
b3VwKCkpCiAgICAgICAgIGlmIGkgPD0gMHhGRjoKLSAgICAgICAgICAgIHJldHVybiB1bmljb2Rl
KCIjeCUwMlgiKSAlIGkKKyAgICAgICAgICAgIHJldHVybiAiI3glMDJYIiAlIGkKICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJldHVybiB1bmljb2RlKCIjeCUwNFgiKSAlIGkKKyAgICAgICAg
ICAgIHJldHVybiAiI3glMDRYIiAlIGkKKworICAgICMgVGhlIHNwZWMgcmFuZ2Ugb2YgdmFsaWQg
Y2hhcnMgaXM6CisgICAgIyBDaGFyIDo6PSAjeDkgfCAjeEEgfCAjeEQgfCBbI3gyMC0jeEQ3RkZd
IHwgWyN4RTAwMC0jeEZGRkRdIHwgWyN4MTAwMDAtI3gxMEZGRkZdCisgICAgIyBGb3IgYW4gdW5r
bm93big/KSByZWFzb24sIHdlIGRpc2FsbG93ICN4N0YgKERFTCkgYXMgd2VsbC4KKyAgICBpbGxl
Z2FsX3htbF9yZSA9ICgKKyAgICAgICAgIlteXHUwMDA5XHUwMDBBXHUwMDBEXHUwMDIwLVx1MDA3
RVx1MDA4MC1cdUQ3RkZcdUUwMDAtXHVGRkZEXHUxMDAwMC1cdTEwRkZGRl0iCisgICAgKQorICAg
IHJldHVybiByZS5zdWIoaWxsZWdhbF94bWxfcmUsIHJlcGwsIHN0cihhcmcpKQogCi0gICAgcmV0
dXJuIHB5LnhtbC5yYXcoaWxsZWdhbF94bWxfcmUuc3ViKHJlcGwsIHB5LnhtbC5lc2NhcGUoYXJn
KSkpCiAKK2RlZiBtZXJnZV9mYW1pbHkobGVmdCwgcmlnaHQpIC0+IE5vbmU6CisgICAgcmVzdWx0
ID0ge30KKyAgICBmb3Iga2wsIHZsIGluIGxlZnQuaXRlbXMoKToKKyAgICAgICAgZm9yIGtyLCB2
ciBpbiByaWdodC5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmwsIGxp
c3QpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcih0eXBlKHZsKSkKKyAgICAgICAg
ICAgIHJlc3VsdFtrbF0gPSB2bCArIHZyCisgICAgbGVmdC51cGRhdGUocmVzdWx0KQogCi1jbGFz
cyBfTm9kZVJlcG9ydGVyKG9iamVjdCk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZWlk
LCB4bWwpOgorZmFtaWxpZXMgPSB7fQorZmFtaWxpZXNbIl9iYXNlIl0gPSB7InRlc3RjYXNlIjog
WyJjbGFzc25hbWUiLCAibmFtZSJdfQorZmFtaWxpZXNbIl9iYXNlX2xlZ2FjeSJdID0geyJ0ZXN0
Y2FzZSI6IFsiZmlsZSIsICJsaW5lIiwgInVybCJdfQogCisjIHhVbml0IDEueCBpbmhlcml0cyBs
ZWdhY3kgYXR0cmlidXRlcy4KK2ZhbWlsaWVzWyJ4dW5pdDEiXSA9IGZhbWlsaWVzWyJfYmFzZSJd
LmNvcHkoKQorbWVyZ2VfZmFtaWx5KGZhbWlsaWVzWyJ4dW5pdDEiXSwgZmFtaWxpZXNbIl9iYXNl
X2xlZ2FjeSJdKQorCisjIHhVbml0IDIueCB1c2VzIHN0cmljdCBiYXNlIGF0dHJpYnV0ZXMuCitm
YW1pbGllc1sieHVuaXQyIl0gPSBmYW1pbGllc1siX2Jhc2UiXQorCisKK2NsYXNzIF9Ob2RlUmVw
b3J0ZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGVpZDogVW5pb25bc3RyLCBUZXN0UmVw
b3J0XSwgeG1sOiAiTG9nWE1MIikgLT4gTm9uZToKICAgICAgICAgc2VsZi5pZCA9IG5vZGVpZAog
ICAgICAgICBzZWxmLnhtbCA9IHhtbAogICAgICAgICBzZWxmLmFkZF9zdGF0cyA9IHNlbGYueG1s
LmFkZF9zdGF0cworICAgICAgICBzZWxmLmZhbWlseSA9IHNlbGYueG1sLmZhbWlseQogICAgICAg
ICBzZWxmLmR1cmF0aW9uID0gMAotICAgICAgICBzZWxmLnByb3BlcnRpZXMgPSBbXQotICAgICAg
ICBzZWxmLm5vZGVzID0gW10KLSAgICAgICAgc2VsZi50ZXN0Y2FzZSA9IE5vbmUKLSAgICAgICAg
c2VsZi5hdHRycyA9IHt9CisgICAgICAgIHNlbGYucHJvcGVydGllcyA9IFtdICAjIHR5cGU6IExp
c3RbVHVwbGVbc3RyLCBzdHJdXQorICAgICAgICBzZWxmLm5vZGVzID0gW10gICMgdHlwZTogTGlz
dFtFVC5FbGVtZW50XQorICAgICAgICBzZWxmLmF0dHJzID0ge30gICMgdHlwZTogRGljdFtzdHIs
IHN0cl0KIAotICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHNlbGYueG1sLmFk
ZF9zdGF0cyh0eXBlKG5vZGUpLl9fbmFtZV9fKQorICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZTog
RVQuRWxlbWVudCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi54bWwuYWRkX3N0YXRzKG5vZGUudGFn
KQogICAgICAgICBzZWxmLm5vZGVzLmFwcGVuZChub2RlKQogCi0gICAgZGVmIGFkZF9wcm9wZXJ0
eShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgZGVmIGFkZF9wcm9wZXJ0eShzZWxmLCBuYW1lOiBz
dHIsIHZhbHVlOiBvYmplY3QpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYucHJvcGVydGllcy5hcHBl
bmQoKHN0cihuYW1lKSwgYmluX3htbF9lc2NhcGUodmFsdWUpKSkKIAotICAgIGRlZiBhZGRfYXR0
cmlidXRlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICBkZWYgYWRkX2F0dHJpYnV0ZShzZWxmLCBu
YW1lOiBzdHIsIHZhbHVlOiBvYmplY3QpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuYXR0cnNbc3Ry
KG5hbWUpXSA9IGJpbl94bWxfZXNjYXBlKHZhbHVlKQogCi0gICAgZGVmIG1ha2VfcHJvcGVydGll
c19ub2RlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBKdW5pdCBub2RlIGNvbnRhaW5pbmcg
Y3VzdG9tIHByb3BlcnRpZXMsIGlmIGFueS4KLSAgICAgICAgIiIiCisgICAgZGVmIG1ha2VfcHJv
cGVydGllc19ub2RlKHNlbGYpIC0+IE9wdGlvbmFsW0VULkVsZW1lbnRdOgorICAgICAgICAiIiJS
ZXR1cm4gYSBKdW5pdCBub2RlIGNvbnRhaW5pbmcgY3VzdG9tIHByb3BlcnRpZXMsIGlmIGFueS4i
IiIKICAgICAgICAgaWYgc2VsZi5wcm9wZXJ0aWVzOgotICAgICAgICAgICAgcmV0dXJuIEp1bml0
LnByb3BlcnRpZXMoCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBKdW5p
dC5wcm9wZXJ0eShuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKQotICAgICAgICAgICAgICAgICAgICBm
b3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5wcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgKQotICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgICAgIHByb3BlcnRpZXMgPSBF
VC5FbGVtZW50KCJwcm9wZXJ0aWVzIikKKyAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBz
ZWxmLnByb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgcHJvcGVydGllcy5hcHBlbmQoRVQuRWxl
bWVudCgicHJvcGVydHkiLCBuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKKyAgICAgICAgICAgIHJl
dHVybiBwcm9wZXJ0aWVzCisgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgcmVjb3JkX3Rl
c3RyZXBvcnQoc2VsZiwgdGVzdHJlcG9ydCk6Ci0gICAgICAgIGFzc2VydCBub3Qgc2VsZi50ZXN0
Y2FzZQorICAgIGRlZiByZWNvcmRfdGVzdHJlcG9ydChzZWxmLCB0ZXN0cmVwb3J0OiBUZXN0UmVw
b3J0KSAtPiBOb25lOgogICAgICAgICBuYW1lcyA9IG1hbmdsZV90ZXN0X2FkZHJlc3ModGVzdHJl
cG9ydC5ub2RlaWQpCiAgICAgICAgIGV4aXN0aW5nX2F0dHJzID0gc2VsZi5hdHRycwogICAgICAg
ICBjbGFzc25hbWVzID0gbmFtZXNbOi0xXQpAQCAtMTEyLDE4NiArMTI2LDI1NyBAQCBjbGFzcyBf
Tm9kZVJlcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAiY2xhc3NuYW1lIjogIi4iLmpvaW4o
Y2xhc3NuYW1lcyksCiAgICAgICAgICAgICAibmFtZSI6IGJpbl94bWxfZXNjYXBlKG5hbWVzWy0x
XSksCiAgICAgICAgICAgICAiZmlsZSI6IHRlc3RyZXBvcnQubG9jYXRpb25bMF0sCi0gICAgICAg
IH0KKyAgICAgICAgfSAgIyB0eXBlOiBEaWN0W3N0ciwgc3RyXQogICAgICAgICBpZiB0ZXN0cmVw
b3J0LmxvY2F0aW9uWzFdIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXR0cnNbImxpbmUiXSA9
IHRlc3RyZXBvcnQubG9jYXRpb25bMV0KKyAgICAgICAgICAgIGF0dHJzWyJsaW5lIl0gPSBzdHIo
dGVzdHJlcG9ydC5sb2NhdGlvblsxXSkKICAgICAgICAgaWYgaGFzYXR0cih0ZXN0cmVwb3J0LCAi
dXJsIik6CiAgICAgICAgICAgICBhdHRyc1sidXJsIl0gPSB0ZXN0cmVwb3J0LnVybAogICAgICAg
ICBzZWxmLmF0dHJzID0gYXR0cnMKLSAgICAgICAgc2VsZi5hdHRycy51cGRhdGUoZXhpc3Rpbmdf
YXR0cnMpICAjIHJlc3RvcmUgYW55IHVzZXItZGVmaW5lZCBhdHRyaWJ1dGVzCi0KLSAgICBkZWYg
dG9feG1sKHNlbGYpOgotICAgICAgICB0ZXN0Y2FzZSA9IEp1bml0LnRlc3RjYXNlKHRpbWU9c2Vs
Zi5kdXJhdGlvbiwgKipzZWxmLmF0dHJzKQotICAgICAgICB0ZXN0Y2FzZS5hcHBlbmQoc2VsZi5t
YWtlX3Byb3BlcnRpZXNfbm9kZSgpKQotICAgICAgICBmb3Igbm9kZSBpbiBzZWxmLm5vZGVzOgot
ICAgICAgICAgICAgdGVzdGNhc2UuYXBwZW5kKG5vZGUpCisgICAgICAgIHNlbGYuYXR0cnMudXBk
YXRlKGV4aXN0aW5nX2F0dHJzKSAgIyBSZXN0b3JlIGFueSB1c2VyLWRlZmluZWQgYXR0cmlidXRl
cy4KKworICAgICAgICAjIFByZXNlcnZlIGxlZ2FjeSB0ZXN0Y2FzZSBiZWhhdmlvci4KKyAgICAg
ICAgaWYgc2VsZi5mYW1pbHkgPT0gInh1bml0MSI6CisgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICAjIEZpbHRlciBvdXQgYXR0cmlidXRlcyBub3QgcGVybWl0dGVkIGJ5IHRoaXMgdGVzdCBm
YW1pbHkuCisgICAgICAgICMgSW5jbHVkaW5nIGN1c3RvbSBhdHRyaWJ1dGVzIGJlY2F1c2UgdGhl
eSBhcmUgbm90IHZhbGlkIGhlcmUuCisgICAgICAgIHRlbXBfYXR0cnMgPSB7fQorICAgICAgICBm
b3Iga2V5IGluIHNlbGYuYXR0cnMua2V5cygpOgorICAgICAgICAgICAgaWYga2V5IGluIGZhbWls
aWVzW3NlbGYuZmFtaWx5XVsidGVzdGNhc2UiXToKKyAgICAgICAgICAgICAgICB0ZW1wX2F0dHJz
W2tleV0gPSBzZWxmLmF0dHJzW2tleV0KKyAgICAgICAgc2VsZi5hdHRycyA9IHRlbXBfYXR0cnMK
KworICAgIGRlZiB0b194bWwoc2VsZikgLT4gRVQuRWxlbWVudDoKKyAgICAgICAgdGVzdGNhc2Ug
PSBFVC5FbGVtZW50KCJ0ZXN0Y2FzZSIsIHNlbGYuYXR0cnMsIHRpbWU9IiUuM2YiICUgc2VsZi5k
dXJhdGlvbikKKyAgICAgICAgcHJvcGVydGllcyA9IHNlbGYubWFrZV9wcm9wZXJ0aWVzX25vZGUo
KQorICAgICAgICBpZiBwcm9wZXJ0aWVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGVzdGNh
c2UuYXBwZW5kKHByb3BlcnRpZXMpCisgICAgICAgIHRlc3RjYXNlLmV4dGVuZChzZWxmLm5vZGVz
KQogICAgICAgICByZXR1cm4gdGVzdGNhc2UKIAotICAgIGRlZiBfYWRkX3NpbXBsZShzZWxmLCBr
aW5kLCBtZXNzYWdlLCBkYXRhPU5vbmUpOgotICAgICAgICBkYXRhID0gYmluX3htbF9lc2NhcGUo
ZGF0YSkKLSAgICAgICAgbm9kZSA9IGtpbmQoZGF0YSwgbWVzc2FnZT1tZXNzYWdlKQorICAgIGRl
ZiBfYWRkX3NpbXBsZShzZWxmLCB0YWc6IHN0ciwgbWVzc2FnZTogc3RyLCBkYXRhOiBPcHRpb25h
bFtzdHJdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgbm9kZSA9IEVULkVsZW1lbnQodGFnLCBt
ZXNzYWdlPW1lc3NhZ2UpCisgICAgICAgIG5vZGUudGV4dCA9IGJpbl94bWxfZXNjYXBlKGRhdGEp
CiAgICAgICAgIHNlbGYuYXBwZW5kKG5vZGUpCiAKLSAgICBkZWYgd3JpdGVfY2FwdHVyZWRfb3V0
cHV0KHNlbGYsIHJlcG9ydCk6CisgICAgZGVmIHdyaXRlX2NhcHR1cmVkX291dHB1dChzZWxmLCBy
ZXBvcnQ6IFRlc3RSZXBvcnQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdCBzZWxmLnhtbC5sb2df
cGFzc2luZ190ZXN0cyBhbmQgcmVwb3J0LnBhc3NlZDoKKyAgICAgICAgICAgIHJldHVybgorCiAg
ICAgICAgIGNvbnRlbnRfb3V0ID0gcmVwb3J0LmNhcHN0ZG91dAogICAgICAgICBjb250ZW50X2xv
ZyA9IHJlcG9ydC5jYXBsb2cKICAgICAgICAgY29udGVudF9lcnIgPSByZXBvcnQuY2Fwc3RkZXJy
Ci0KLSAgICAgICAgaWYgY29udGVudF9sb2cgb3IgY29udGVudF9vdXQ6Ci0gICAgICAgICAgICBp
ZiBjb250ZW50X2xvZyBhbmQgc2VsZi54bWwubG9nZ2luZyA9PSAic3lzdGVtLW91dCI6Ci0gICAg
ICAgICAgICAgICAgaWYgY29udGVudF9vdXQ6Ci0gICAgICAgICAgICAgICAgICAgICMgc3luY2lu
ZyBzdGRvdXQgYW5kIHRoZSBsb2ctb3V0cHV0IGlzIG5vdCBkb25lIHlldC4gSXQncwotICAgICAg
ICAgICAgICAgICAgICAjIHByb2JhYmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LiBUaGVyZWZvcmUs
IGZpcnN0IHRoZSBjYXB0dXJlZAotICAgICAgICAgICAgICAgICAgICAjIHN0ZG91dCBpcyBzaG93
biBhbmQgdGhlbiB0aGUgY2FwdHVyZWQgbG9ncy4KLSAgICAgICAgICAgICAgICAgICAgY29udGVu
dCA9ICJcbiIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiIENhcHR1cmVkIFN0ZG91dCAiLmNlbnRlcig4MCwgIi0iKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X291dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIENhcHR1cmVkIExvZyAi
LmNlbnRlcig4MCwgIi0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X2xv
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50
X2xvZwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVu
dF9vdXQKLQotICAgICAgICAgICAgaWYgY29udGVudDoKLSAgICAgICAgICAgICAgICB0YWcgPSBn
ZXRhdHRyKEp1bml0LCAic3lzdGVtLW91dCIpCi0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQo
dGFnKGJpbl94bWxfZXNjYXBlKGNvbnRlbnQpKSkKLQotICAgICAgICBpZiBjb250ZW50X2xvZyBv
ciBjb250ZW50X2VycjoKLSAgICAgICAgICAgIGlmIGNvbnRlbnRfbG9nIGFuZCBzZWxmLnhtbC5s
b2dnaW5nID09ICJzeXN0ZW0tZXJyIjoKLSAgICAgICAgICAgICAgICBpZiBjb250ZW50X2VycjoK
LSAgICAgICAgICAgICAgICAgICAgY29udGVudCA9ICJcbiIuam9pbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIENhcHR1cmVkIFN0ZGVy
ciAiLmNlbnRlcig4MCwgIi0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50
X2VyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiIENhcHR1cmVkIExvZyAiLmNlbnRlcig4MCwgIi0iKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZW50X2xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50X2xvZwotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBjb250ZW50ID0gY29udGVudF9lcnIKLQotICAgICAgICAgICAgaWYgY29udGVu
dDoKLSAgICAgICAgICAgICAgICB0YWcgPSBnZXRhdHRyKEp1bml0LCAic3lzdGVtLWVyciIpCi0g
ICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQodGFnKGJpbl94bWxfZXNjYXBlKGNvbnRlbnQpKSkK
LQotICAgIGRlZiBhcHBlbmRfcGFzcyhzZWxmLCByZXBvcnQpOgorICAgICAgICBpZiBzZWxmLnht
bC5sb2dnaW5nID09ICJubyI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY29udGVudF9h
bGwgPSAiIgorICAgICAgICBpZiBzZWxmLnhtbC5sb2dnaW5nIGluIFsibG9nIiwgImFsbCJdOgor
ICAgICAgICAgICAgY29udGVudF9hbGwgPSBzZWxmLl9wcmVwYXJlX2NvbnRlbnQoY29udGVudF9s
b2csICIgQ2FwdHVyZWQgTG9nICIpCisgICAgICAgIGlmIHNlbGYueG1sLmxvZ2dpbmcgaW4gWyJz
eXN0ZW0tb3V0IiwgIm91dC1lcnIiLCAiYWxsIl06CisgICAgICAgICAgICBjb250ZW50X2FsbCAr
PSBzZWxmLl9wcmVwYXJlX2NvbnRlbnQoY29udGVudF9vdXQsICIgQ2FwdHVyZWQgT3V0ICIpCisg
ICAgICAgICAgICBzZWxmLl93cml0ZV9jb250ZW50KHJlcG9ydCwgY29udGVudF9hbGwsICJzeXN0
ZW0tb3V0IikKKyAgICAgICAgICAgIGNvbnRlbnRfYWxsID0gIiIKKyAgICAgICAgaWYgc2VsZi54
bWwubG9nZ2luZyBpbiBbInN5c3RlbS1lcnIiLCAib3V0LWVyciIsICJhbGwiXToKKyAgICAgICAg
ICAgIGNvbnRlbnRfYWxsICs9IHNlbGYuX3ByZXBhcmVfY29udGVudChjb250ZW50X2VyciwgIiBD
YXB0dXJlZCBFcnIgIikKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnRlbnQocmVwb3J0LCBj
b250ZW50X2FsbCwgInN5c3RlbS1lcnIiKQorICAgICAgICAgICAgY29udGVudF9hbGwgPSAiIgor
ICAgICAgICBpZiBjb250ZW50X2FsbDoKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnRlbnQo
cmVwb3J0LCBjb250ZW50X2FsbCwgInN5c3RlbS1vdXQiKQorCisgICAgZGVmIF9wcmVwYXJlX2Nv
bnRlbnQoc2VsZiwgY29udGVudDogc3RyLCBoZWFkZXI6IHN0cikgLT4gc3RyOgorICAgICAgICBy
ZXR1cm4gIlxuIi5qb2luKFtoZWFkZXIuY2VudGVyKDgwLCAiLSIpLCBjb250ZW50LCAiIl0pCisK
KyAgICBkZWYgX3dyaXRlX2NvbnRlbnQoc2VsZiwgcmVwb3J0OiBUZXN0UmVwb3J0LCBjb250ZW50
OiBzdHIsIGpoZWFkZXI6IHN0cikgLT4gTm9uZToKKyAgICAgICAgdGFnID0gRVQuRWxlbWVudChq
aGVhZGVyKQorICAgICAgICB0YWcudGV4dCA9IGJpbl94bWxfZXNjYXBlKGNvbnRlbnQpCisgICAg
ICAgIHNlbGYuYXBwZW5kKHRhZykKKworICAgIGRlZiBhcHBlbmRfcGFzcyhzZWxmLCByZXBvcnQ6
IFRlc3RSZXBvcnQpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuYWRkX3N0YXRzKCJwYXNzZWQiKQog
Ci0gICAgZGVmIGFwcGVuZF9mYWlsdXJlKHNlbGYsIHJlcG9ydCk6CisgICAgZGVmIGFwcGVuZF9m
YWlsdXJlKHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKICAgICAgICAgIyBtc2cg
PSBzdHIocmVwb3J0LmxvbmdyZXByLnJlcHJ0cmFjZWJhY2suZXh0cmFsaW5lKQogICAgICAgICBp
ZiBoYXNhdHRyKHJlcG9ydCwgIndhc3hmYWlsIik6Ci0gICAgICAgICAgICBzZWxmLl9hZGRfc2lt
cGxlKEp1bml0LnNraXBwZWQsICJ4ZmFpbC1tYXJrZWQgdGVzdCBwYXNzZXMgdW5leHBlY3RlZGx5
IikKKyAgICAgICAgICAgIHNlbGYuX2FkZF9zaW1wbGUoInNraXBwZWQiLCAieGZhaWwtbWFya2Vk
IHRlc3QgcGFzc2VzIHVuZXhwZWN0ZWRseSIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBp
ZiBoYXNhdHRyKHJlcG9ydC5sb25ncmVwciwgInJlcHJjcmFzaCIpOgotICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPSByZXBvcnQubG9uZ3JlcHIucmVwcmNyYXNoLm1lc3NhZ2UKLSAgICAgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShyZXBvcnQubG9uZ3JlcHIsICh1bmljb2RlLCBzdHIpKToKLSAgICAg
ICAgICAgICAgICBtZXNzYWdlID0gcmVwb3J0LmxvbmdyZXByCisgICAgICAgICAgICBhc3NlcnQg
cmVwb3J0LmxvbmdyZXByIGlzIG5vdCBOb25lCisgICAgICAgICAgICByZXByY3Jhc2ggPSBnZXRh
dHRyKAorICAgICAgICAgICAgICAgIHJlcG9ydC5sb25ncmVwciwgInJlcHJjcmFzaCIsIE5vbmUK
KyAgICAgICAgICAgICkgICMgdHlwZTogT3B0aW9uYWxbUmVwckZpbGVMb2NhdGlvbl0KKyAgICAg
ICAgICAgIGlmIHJlcHJjcmFzaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gcmVwcmNyYXNoLm1lc3NhZ2UKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAg
bWVzc2FnZSA9IHN0cihyZXBvcnQubG9uZ3JlcHIpCiAgICAgICAgICAgICBtZXNzYWdlID0gYmlu
X3htbF9lc2NhcGUobWVzc2FnZSkKLSAgICAgICAgICAgIGZhaWwgPSBKdW5pdC5mYWlsdXJlKG1l
c3NhZ2U9bWVzc2FnZSkKLSAgICAgICAgICAgIGZhaWwuYXBwZW5kKGJpbl94bWxfZXNjYXBlKHJl
cG9ydC5sb25ncmVwcikpCi0gICAgICAgICAgICBzZWxmLmFwcGVuZChmYWlsKQorICAgICAgICAg
ICAgc2VsZi5fYWRkX3NpbXBsZSgiZmFpbHVyZSIsIG1lc3NhZ2UsIHN0cihyZXBvcnQubG9uZ3Jl
cHIpKQogCi0gICAgZGVmIGFwcGVuZF9jb2xsZWN0X2Vycm9yKHNlbGYsIHJlcG9ydCk6CisgICAg
ZGVmIGFwcGVuZF9jb2xsZWN0X2Vycm9yKHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9u
ZToKICAgICAgICAgIyBtc2cgPSBzdHIocmVwb3J0LmxvbmdyZXByLnJlcHJ0cmFjZWJhY2suZXh0
cmFsaW5lKQotICAgICAgICBzZWxmLmFwcGVuZCgKLSAgICAgICAgICAgIEp1bml0LmVycm9yKGJp
bl94bWxfZXNjYXBlKHJlcG9ydC5sb25ncmVwciksIG1lc3NhZ2U9ImNvbGxlY3Rpb24gZmFpbHVy
ZSIpCi0gICAgICAgICkKLQotICAgIGRlZiBhcHBlbmRfY29sbGVjdF9za2lwcGVkKHNlbGYsIHJl
cG9ydCk6Ci0gICAgICAgIHNlbGYuX2FkZF9zaW1wbGUoSnVuaXQuc2tpcHBlZCwgImNvbGxlY3Rp
b24gc2tpcHBlZCIsIHJlcG9ydC5sb25ncmVwcikKKyAgICAgICAgYXNzZXJ0IHJlcG9ydC5sb25n
cmVwciBpcyBub3QgTm9uZQorICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKCJlcnJvciIsICJjb2xs
ZWN0aW9uIGZhaWx1cmUiLCBzdHIocmVwb3J0LmxvbmdyZXByKSkKKworICAgIGRlZiBhcHBlbmRf
Y29sbGVjdF9za2lwcGVkKHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5fYWRkX3NpbXBsZSgic2tpcHBlZCIsICJjb2xsZWN0aW9uIHNraXBwZWQiLCBzdHIo
cmVwb3J0LmxvbmdyZXByKSkKKworICAgIGRlZiBhcHBlbmRfZXJyb3Ioc2VsZiwgcmVwb3J0OiBU
ZXN0UmVwb3J0KSAtPiBOb25lOgorICAgICAgICBhc3NlcnQgcmVwb3J0LmxvbmdyZXByIGlzIG5v
dCBOb25lCisgICAgICAgIHJlcHJjcmFzaCA9IGdldGF0dHIoCisgICAgICAgICAgICByZXBvcnQu
bG9uZ3JlcHIsICJyZXByY3Jhc2giLCBOb25lCisgICAgICAgICkgICMgdHlwZTogT3B0aW9uYWxb
UmVwckZpbGVMb2NhdGlvbl0KKyAgICAgICAgaWYgcmVwcmNyYXNoIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgcmVhc29uID0gcmVwcmNyYXNoLm1lc3NhZ2UKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJlYXNvbiA9IHN0cihyZXBvcnQubG9uZ3JlcHIpCiAKLSAgICBkZWYgYXBwZW5kX2Vy
cm9yKHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIGdldGF0dHIocmVwb3J0LCAid2hlbiIsIE5v
bmUpID09ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICBtc2cgPSAidGVzdCB0ZWFyZG93biBmYWls
dXJlIgorICAgICAgICBpZiByZXBvcnQud2hlbiA9PSAidGVhcmRvd24iOgorICAgICAgICAgICAg
bXNnID0gJ2ZhaWxlZCBvbiB0ZWFyZG93biB3aXRoICJ7fSInLmZvcm1hdChyZWFzb24pCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2cgPSAidGVzdCBzZXR1cCBmYWlsdXJlIgotICAgICAg
ICBzZWxmLl9hZGRfc2ltcGxlKEp1bml0LmVycm9yLCBtc2csIHJlcG9ydC5sb25ncmVwcikKKyAg
ICAgICAgICAgIG1zZyA9ICdmYWlsZWQgb24gc2V0dXAgd2l0aCAie30iJy5mb3JtYXQocmVhc29u
KQorICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKCJlcnJvciIsIG1zZywgc3RyKHJlcG9ydC5sb25n
cmVwcikpCiAKLSAgICBkZWYgYXBwZW5kX3NraXBwZWQoc2VsZiwgcmVwb3J0KToKKyAgICBkZWYg
YXBwZW5kX3NraXBwZWQoc2VsZiwgcmVwb3J0OiBUZXN0UmVwb3J0KSAtPiBOb25lOgogICAgICAg
ICBpZiBoYXNhdHRyKHJlcG9ydCwgIndhc3hmYWlsIik6Ci0gICAgICAgICAgICBzZWxmLl9hZGRf
c2ltcGxlKEp1bml0LnNraXBwZWQsICJleHBlY3RlZCB0ZXN0IGZhaWx1cmUiLCByZXBvcnQud2Fz
eGZhaWwpCisgICAgICAgICAgICB4ZmFpbHJlYXNvbiA9IHJlcG9ydC53YXN4ZmFpbAorICAgICAg
ICAgICAgaWYgeGZhaWxyZWFzb24uc3RhcnRzd2l0aCgicmVhc29uOiAiKToKKyAgICAgICAgICAg
ICAgICB4ZmFpbHJlYXNvbiA9IHhmYWlscmVhc29uWzg6XQorICAgICAgICAgICAgeGZhaWxyZWFz
b24gPSBiaW5feG1sX2VzY2FwZSh4ZmFpbHJlYXNvbikKKyAgICAgICAgICAgIHNraXBwZWQgPSBF
VC5FbGVtZW50KCJza2lwcGVkIiwgdHlwZT0icHl0ZXN0LnhmYWlsIiwgbWVzc2FnZT14ZmFpbHJl
YXNvbikKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kKHNraXBwZWQpCiAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXBvcnQubG9uZ3JlcHIsIHR1cGxlKQogICAg
ICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgc2tpcHJlYXNvbiA9IHJlcG9ydC5sb25ncmVwcgog
ICAgICAgICAgICAgaWYgc2tpcHJlYXNvbi5zdGFydHN3aXRoKCJTa2lwcGVkOiAiKToKLSAgICAg
ICAgICAgICAgICBza2lwcmVhc29uID0gYmluX3htbF9lc2NhcGUoc2tpcHJlYXNvbls5Ol0pCi0g
ICAgICAgICAgICBzZWxmLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBKdW5pdC5za2lwcGVkKAot
ICAgICAgICAgICAgICAgICAgICAiJXM6JXM6ICVzIiAlIChmaWxlbmFtZSwgbGluZW5vLCBza2lw
cmVhc29uKSwKLSAgICAgICAgICAgICAgICAgICAgdHlwZT0icHl0ZXN0LnNraXAiLAotICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPXNraXByZWFzb24sCi0gICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNraXByZWFzb24gPSBza2lwcmVhc29uWzk6XQor
ICAgICAgICAgICAgZGV0YWlscyA9ICJ7fTp7fToge30iLmZvcm1hdChmaWxlbmFtZSwgbGluZW5v
LCBza2lwcmVhc29uKQorCisgICAgICAgICAgICBza2lwcGVkID0gRVQuRWxlbWVudCgic2tpcHBl
ZCIsIHR5cGU9InB5dGVzdC5za2lwIiwgbWVzc2FnZT1za2lwcmVhc29uKQorICAgICAgICAgICAg
c2tpcHBlZC50ZXh0ID0gYmluX3htbF9lc2NhcGUoZGV0YWlscykKKyAgICAgICAgICAgIHNlbGYu
YXBwZW5kKHNraXBwZWQpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2NhcHR1cmVkX291dHB1dChy
ZXBvcnQpCiAKLSAgICBkZWYgZmluYWxpemUoc2VsZik6Ci0gICAgICAgIGRhdGEgPSBzZWxmLnRv
X3htbCgpLnVuaWNvZGUoaW5kZW50PTApCisgICAgZGVmIGZpbmFsaXplKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIGRhdGEgPSBzZWxmLnRvX3htbCgpCiAgICAgICAgIHNlbGYuX19kaWN0X18uY2xl
YXIoKQotICAgICAgICBzZWxmLnRvX3htbCA9IGxhbWJkYTogcHkueG1sLnJhdyhkYXRhKQorICAg
ICAgICAjIFR5cGUgaWdub3JlZCBiZWN1YXNlIG15cHkgZG9lc24ndCBsaWtlIG92ZXJyaWRpbmcg
YSBtZXRob2QuCisgICAgICAgICMgQWxzbyB0aGUgcmV0dXJuIHZhbHVlIGRvZXNuJ3QgbWF0Y2gu
Li4KKyAgICAgICAgc2VsZi50b194bWwgPSBsYW1iZGE6IGRhdGEgICMgdHlwZTogaWdub3JlW2Fz
c2lnbm1lbnRdCisKKworZGVmIF93YXJuX2luY29tcGF0aWJpbGl0eV93aXRoX3h1bml0MigKKyAg
ICByZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCwgZml4dHVyZV9uYW1lOiBzdHIKKykgLT4gTm9uZToK
KyAgICAiIiJFbWl0IGEgUHl0ZXN0V2FybmluZyBhYm91dCB0aGUgZ2l2ZW4gZml4dHVyZSBiZWlu
ZyBpbmNvbXBhdGlibGUgd2l0aCBuZXdlciB4dW5pdCByZXZpc2lvbnMuIiIiCisgICAgZnJvbSBf
cHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdFdhcm5pbmcKKworICAgIHhtbCA9IHJl
cXVlc3QuY29uZmlnLl9zdG9yZS5nZXQoeG1sX2tleSwgTm9uZSkKKyAgICBpZiB4bWwgaXMgbm90
IE5vbmUgYW5kIHhtbC5mYW1pbHkgbm90IGluICgieHVuaXQxIiwgImxlZ2FjeSIpOgorICAgICAg
ICByZXF1ZXN0Lm5vZGUud2FybigKKyAgICAgICAgICAgIFB5dGVzdFdhcm5pbmcoCisgICAgICAg
ICAgICAgICAgIntmaXh0dXJlX25hbWV9IGlzIGluY29tcGF0aWJsZSB3aXRoIGp1bml0X2ZhbWls
eSAne2ZhbWlseX0nICh1c2UgJ2xlZ2FjeScgb3IgJ3h1bml0MScpIi5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgICAgIGZpeHR1cmVfbmFtZT1maXh0dXJlX25hbWUsIGZhbWlseT14bWwuZmFtaWx5
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApCiAKIAogQHB5dGVz
dC5maXh0dXJlCi1kZWYgcmVjb3JkX3Byb3BlcnR5KHJlcXVlc3QpOgotICAgICIiIkFkZCBhbiBl
eHRyYSBwcm9wZXJ0aWVzIHRoZSBjYWxsaW5nIHRlc3QuCitkZWYgcmVjb3JkX3Byb3BlcnR5KHJl
cXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBDYWxsYWJsZVtbc3RyLCBvYmplY3RdLCBOb25lXToK
KyAgICAiIiJBZGQgZXh0cmEgcHJvcGVydGllcyB0byB0aGUgY2FsbGluZyB0ZXN0LgorCiAgICAg
VXNlciBwcm9wZXJ0aWVzIGJlY29tZSBwYXJ0IG9mIHRoZSB0ZXN0IHJlcG9ydCBhbmQgYXJlIGF2
YWlsYWJsZSB0byB0aGUKICAgICBjb25maWd1cmVkIHJlcG9ydGVycywgbGlrZSBKVW5pdCBYTUwu
Ci0gICAgVGhlIGZpeHR1cmUgaXMgY2FsbGFibGUgd2l0aCBgYChuYW1lLCB2YWx1ZSlgYCwgd2l0
aCB2YWx1ZSBiZWluZyBhdXRvbWF0aWNhbGx5Ci0gICAgeG1sLWVuY29kZWQuCisKKyAgICBUaGUg
Zml4dHVyZSBpcyBjYWxsYWJsZSB3aXRoIGBgbmFtZSwgdmFsdWVgYC4gVGhlIHZhbHVlIGlzIGF1
dG9tYXRpY2FsbHkKKyAgICBYTUwtZW5jb2RlZC4KIAogICAgIEV4YW1wbGU6OgogCiAgICAgICAg
IGRlZiB0ZXN0X2Z1bmN0aW9uKHJlY29yZF9wcm9wZXJ0eSk6CiAgICAgICAgICAgICByZWNvcmRf
cHJvcGVydHkoImV4YW1wbGVfa2V5IiwgMSkKICAgICAiIiIKKyAgICBfd2Fybl9pbmNvbXBhdGli
aWxpdHlfd2l0aF94dW5pdDIocmVxdWVzdCwgInJlY29yZF9wcm9wZXJ0eSIpCiAKLSAgICBkZWYg
YXBwZW5kX3Byb3BlcnR5KG5hbWUsIHZhbHVlKToKKyAgICBkZWYgYXBwZW5kX3Byb3BlcnR5KG5h
bWU6IHN0ciwgdmFsdWU6IG9iamVjdCkgLT4gTm9uZToKICAgICAgICAgcmVxdWVzdC5ub2RlLnVz
ZXJfcHJvcGVydGllcy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKIAogICAgIHJldHVybiBhcHBlbmRf
cHJvcGVydHkKIAogCiBAcHl0ZXN0LmZpeHR1cmUKLWRlZiByZWNvcmRfeG1sX3Byb3BlcnR5KHJl
Y29yZF9wcm9wZXJ0eSk6Ci0gICAgIiIiKERlcHJlY2F0ZWQpIHVzZSByZWNvcmRfcHJvcGVydHku
IiIiCi0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBkZXByZWNh
dGVkCi0KLSAgICB3YXJuaW5ncy53YXJuKGRlcHJlY2F0ZWQuUkVDT1JEX1hNTF9QUk9QRVJUWSwg
RGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0KLSAgICByZXR1cm4gcmVjb3JkX3By
b3BlcnR5Ci0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgcmVjb3JkX3htbF9hdHRyaWJ1dGUocmVx
dWVzdCk6CitkZWYgcmVjb3JkX3htbF9hdHRyaWJ1dGUocmVxdWVzdDogRml4dHVyZVJlcXVlc3Qp
IC0+IENhbGxhYmxlW1tzdHIsIG9iamVjdF0sIE5vbmVdOgogICAgICIiIkFkZCBleHRyYSB4bWwg
YXR0cmlidXRlcyB0byB0aGUgdGFnIGZvciB0aGUgY2FsbGluZyB0ZXN0LgotICAgIFRoZSBmaXh0
dXJlIGlzIGNhbGxhYmxlIHdpdGggYGAobmFtZSwgdmFsdWUpYGAsIHdpdGggdmFsdWUgYmVpbmcK
LSAgICBhdXRvbWF0aWNhbGx5IHhtbC1lbmNvZGVkCisKKyAgICBUaGUgZml4dHVyZSBpcyBjYWxs
YWJsZSB3aXRoIGBgbmFtZSwgdmFsdWVgYC4gVGhlIHZhbHVlIGlzCisgICAgYXV0b21hdGljYWxs
eSBYTUwtZW5jb2RlZC4KICAgICAiIiIKKyAgICBmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBp
bXBvcnQgUHl0ZXN0RXhwZXJpbWVudGFsQXBpV2FybmluZworCiAgICAgcmVxdWVzdC5ub2RlLndh
cm4oCi0gICAgICAgIGNvZGU9IkMzIiwgbWVzc2FnZT0icmVjb3JkX3htbF9hdHRyaWJ1dGUgaXMg
YW4gZXhwZXJpbWVudGFsIGZlYXR1cmUiCisgICAgICAgIFB5dGVzdEV4cGVyaW1lbnRhbEFwaVdh
cm5pbmcoInJlY29yZF94bWxfYXR0cmlidXRlIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIikK
ICAgICApCi0gICAgeG1sID0gZ2V0YXR0cihyZXF1ZXN0LmNvbmZpZywgIl94bWwiLCBOb25lKQor
CisgICAgX3dhcm5faW5jb21wYXRpYmlsaXR5X3dpdGhfeHVuaXQyKHJlcXVlc3QsICJyZWNvcmRf
eG1sX2F0dHJpYnV0ZSIpCisKKyAgICAjIERlY2xhcmUgbm9vcAorICAgIGRlZiBhZGRfYXR0cl9u
b29wKG5hbWU6IHN0ciwgdmFsdWU6IG9iamVjdCkgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisg
ICAgYXR0cl9mdW5jID0gYWRkX2F0dHJfbm9vcAorCisgICAgeG1sID0gcmVxdWVzdC5jb25maWcu
X3N0b3JlLmdldCh4bWxfa2V5LCBOb25lKQogICAgIGlmIHhtbCBpcyBub3QgTm9uZToKICAgICAg
ICAgbm9kZV9yZXBvcnRlciA9IHhtbC5ub2RlX3JlcG9ydGVyKHJlcXVlc3Qubm9kZS5ub2RlaWQp
Ci0gICAgICAgIHJldHVybiBub2RlX3JlcG9ydGVyLmFkZF9hdHRyaWJ1dGUKLSAgICBlbHNlOgor
ICAgICAgICBhdHRyX2Z1bmMgPSBub2RlX3JlcG9ydGVyLmFkZF9hdHRyaWJ1dGUKKworICAgIHJl
dHVybiBhdHRyX2Z1bmMKIAotICAgICAgICBkZWYgYWRkX2F0dHJfbm9vcChuYW1lLCB2YWx1ZSk6
Ci0gICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgcmV0dXJuIGFkZF9hdHRyX25vb3AKK2RlZiBf
Y2hlY2tfcmVjb3JkX3BhcmFtX3R5cGUocGFyYW06IHN0ciwgdjogc3RyKSAtPiBOb25lOgorICAg
ICIiIlVzZWQgYnkgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSB0byBjaGVjayB0aGF0IHRoZSBn
aXZlbiBwYXJhbWV0ZXIgbmFtZSBpcyBvZiB0aGUgcHJvcGVyCisgICAgdHlwZS4iIiIKKyAgICBf
X3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICBpZiBub3QgaXNpbnN0YW5jZSh2LCBzdHIpOgor
ICAgICAgICBtc2cgPSAie3BhcmFtfSBwYXJhbWV0ZXIgbmVlZHMgdG8gYmUgYSBzdHJpbmcsIGJ1
dCB7Z30gZ2l2ZW4iICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKG1zZy5mb3JtYXQocGFyYW09cGFyYW0sIGc9dHlwZSh2KS5fX25hbWVfXykpCisK
KworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiByZWNvcmRfdGVzdHN1aXRl
X3Byb3BlcnR5KHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBDYWxsYWJsZVtbc3RyLCBvYmpl
Y3RdLCBOb25lXToKKyAgICAiIiJSZWNvcmQgYSBuZXcgYGA8cHJvcGVydHk+YGAgdGFnIGFzIGNo
aWxkIG9mIHRoZSByb290IGBgPHRlc3RzdWl0ZT5gYC4KKworICAgIFRoaXMgaXMgc3VpdGFibGUg
dG8gd3JpdGluZyBnbG9iYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBlbnRpcmUgdGVzdAor
ICAgIHN1aXRlLCBhbmQgaXMgY29tcGF0aWJsZSB3aXRoIGBgeHVuaXQyYGAgSlVuaXQgZmFtaWx5
LgorCisgICAgVGhpcyBpcyBhIGBgc2Vzc2lvbmBgLXNjb3BlZCBmaXh0dXJlIHdoaWNoIGlzIGNh
bGxlZCB3aXRoIGBgKG5hbWUsIHZhbHVlKWBgLiBFeGFtcGxlOgorCisgICAgLi4gY29kZS1ibG9j
azo6IHB5dGhvbgorCisgICAgICAgIGRlZiB0ZXN0X2ZvbyhyZWNvcmRfdGVzdHN1aXRlX3Byb3Bl
cnR5KToKKyAgICAgICAgICAgIHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkoIkFSQ0giLCAiUFBD
IikKKyAgICAgICAgICAgIHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkoIlNUT1JBR0VfVFlQRSIs
ICJDRVBIIikKKworICAgIGBgbmFtZWBgIG11c3QgYmUgYSBzdHJpbmcsIGBgdmFsdWVgYCB3aWxs
IGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyBhbmQgcHJvcGVybHkgeG1sLWVzY2FwZWQuCisKKyAg
ICAuLiB3YXJuaW5nOjoKKworICAgICAgICBDdXJyZW50bHkgdGhpcyBmaXh0dXJlICoqZG9lcyBu
b3Qgd29yayoqIHdpdGggdGhlCisgICAgICAgIGBweXRlc3QteGRpc3QgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC14ZGlzdD5gX18gcGx1Z2luLiBTZWUgaXNzdWUKKyAgICAg
ICAgYCM3NzY3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc3
Njc+YF9fIGZvciBkZXRhaWxzLgorICAgICIiIgogCisgICAgX190cmFjZWJhY2toaWRlX18gPSBU
cnVlCiAKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CisgICAgZGVmIHJlY29yZF9mdW5j
KG5hbWU6IHN0ciwgdmFsdWU6IG9iamVjdCkgLT4gTm9uZToKKyAgICAgICAgIiIiTm8tb3AgZnVu
Y3Rpb24gaW4gY2FzZSAtLWp1bml0eG1sIHdhcyBub3QgcGFzc2VkIGluIHRoZSBjb21tYW5kLWxp
bmUuIiIiCisgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQorICAgICAgICBfY2hlY2tf
cmVjb3JkX3BhcmFtX3R5cGUoIm5hbWUiLCBuYW1lKQorCisgICAgeG1sID0gcmVxdWVzdC5jb25m
aWcuX3N0b3JlLmdldCh4bWxfa2V5LCBOb25lKQorICAgIGlmIHhtbCBpcyBub3QgTm9uZToKKyAg
ICAgICAgcmVjb3JkX2Z1bmMgPSB4bWwuYWRkX2dsb2JhbF9wcm9wZXJ0eSAgIyBub3FhCisgICAg
cmV0dXJuIHJlY29yZF9mdW5jCisKKworZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJz
ZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoInRlcm1pbmFsIHJlcG9y
dGluZyIpCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAiLS1qdW5pdHhtbCIsCkBAIC0z
MTcsNzkgKzQwMiwxMTkgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICBwYXJz
ZXIuYWRkaW5pKAogICAgICAgICAianVuaXRfbG9nZ2luZyIsCiAgICAgICAgICJXcml0ZSBjYXB0
dXJlZCBsb2cgbWVzc2FnZXMgdG8gSlVuaXQgcmVwb3J0OiAiCi0gICAgICAgICJvbmUgb2Ygbm98
c3lzdGVtLW91dHxzeXN0ZW0tZXJyIiwKKyAgICAgICAgIm9uZSBvZiBub3xsb2d8c3lzdGVtLW91
dHxzeXN0ZW0tZXJyfG91dC1lcnJ8YWxsIiwKICAgICAgICAgZGVmYXVsdD0ibm8iLAotICAgICkg
ICMgY2hvaWNlcz1bJ25vJywgJ3N0ZG91dCcsICdzdGRlcnInXSkKKyAgICApCisgICAgcGFyc2Vy
LmFkZGluaSgKKyAgICAgICAgImp1bml0X2xvZ19wYXNzaW5nX3Rlc3RzIiwKKyAgICAgICAgIkNh
cHR1cmUgbG9nIGluZm9ybWF0aW9uIGZvciBwYXNzaW5nIHRlc3RzIHRvIEpVbml0IHJlcG9ydDog
IiwKKyAgICAgICAgdHlwZT0iYm9vbCIsCisgICAgICAgIGRlZmF1bHQ9VHJ1ZSwKKyAgICApCisg
ICAgcGFyc2VyLmFkZGluaSgKKyAgICAgICAgImp1bml0X2R1cmF0aW9uX3JlcG9ydCIsCisgICAg
ICAgICJEdXJhdGlvbiB0aW1lIHRvIHJlcG9ydDogb25lIG9mIHRvdGFsfGNhbGwiLAorICAgICAg
ICBkZWZhdWx0PSJ0b3RhbCIsCisgICAgKSAgIyBjaG9pY2VzPVsndG90YWwnLCAnY2FsbCddKQor
ICAgIHBhcnNlci5hZGRpbmkoCisgICAgICAgICJqdW5pdF9mYW1pbHkiLAorICAgICAgICAiRW1p
dCBYTUwgZm9yIHNjaGVtYTogb25lIG9mIGxlZ2FjeXx4dW5pdDF8eHVuaXQyIiwKKyAgICAgICAg
ZGVmYXVsdD0ieHVuaXQyIiwKKyAgICApCiAKIAotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmln
KToKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIHht
bHBhdGggPSBjb25maWcub3B0aW9uLnhtbHBhdGgKLSAgICAjIHByZXZlbnQgb3BlbmluZyB4bWxs
b2cgb24gc2xhdmUgbm9kZXMgKHhkaXN0KQotICAgIGlmIHhtbHBhdGggYW5kIG5vdCBoYXNhdHRy
KGNvbmZpZywgInNsYXZlaW5wdXQiKToKLSAgICAgICAgY29uZmlnLl94bWwgPSBMb2dYTUwoCisg
ICAgIyBQcmV2ZW50IG9wZW5pbmcgeG1sbG9nIG9uIHdvcmtlciBub2RlcyAoeGRpc3QpLgorICAg
IGlmIHhtbHBhdGggYW5kIG5vdCBoYXNhdHRyKGNvbmZpZywgIndvcmtlcmlucHV0Iik6CisgICAg
ICAgIGp1bml0X2ZhbWlseSA9IGNvbmZpZy5nZXRpbmkoImp1bml0X2ZhbWlseSIpCisgICAgICAg
IGNvbmZpZy5fc3RvcmVbeG1sX2tleV0gPSBMb2dYTUwoCiAgICAgICAgICAgICB4bWxwYXRoLAog
ICAgICAgICAgICAgY29uZmlnLm9wdGlvbi5qdW5pdHByZWZpeCwKICAgICAgICAgICAgIGNvbmZp
Zy5nZXRpbmkoImp1bml0X3N1aXRlX25hbWUiKSwKICAgICAgICAgICAgIGNvbmZpZy5nZXRpbmko
Imp1bml0X2xvZ2dpbmciKSwKKyAgICAgICAgICAgIGNvbmZpZy5nZXRpbmkoImp1bml0X2R1cmF0
aW9uX3JlcG9ydCIpLAorICAgICAgICAgICAganVuaXRfZmFtaWx5LAorICAgICAgICAgICAgY29u
ZmlnLmdldGluaSgianVuaXRfbG9nX3Bhc3NpbmdfdGVzdHMiKSwKICAgICAgICAgKQotICAgICAg
ICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3Rlcihjb25maWcuX3htbCkKKyAgICAgICAgY29u
ZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoY29uZmlnLl9zdG9yZVt4bWxfa2V5XSkKIAogCi1k
ZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgeG1sID0gZ2V0YXR0cihjb25maWcs
ICJfeG1sIiwgTm9uZSkKK2RlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnOiBDb25maWcpIC0+
IE5vbmU6CisgICAgeG1sID0gY29uZmlnLl9zdG9yZS5nZXQoeG1sX2tleSwgTm9uZSkKICAgICBp
ZiB4bWw6Ci0gICAgICAgIGRlbCBjb25maWcuX3htbAorICAgICAgICBkZWwgY29uZmlnLl9zdG9y
ZVt4bWxfa2V5XQogICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci51bnJlZ2lzdGVyKHhtbCkK
IAogCi1kZWYgbWFuZ2xlX3Rlc3RfYWRkcmVzcyhhZGRyZXNzKToKK2RlZiBtYW5nbGVfdGVzdF9h
ZGRyZXNzKGFkZHJlc3M6IHN0cikgLT4gTGlzdFtzdHJdOgogICAgIHBhdGgsIHBvc3NpYmxlX29w
ZW5fYnJhY2tldCwgcGFyYW1zID0gYWRkcmVzcy5wYXJ0aXRpb24oIlsiKQogICAgIG5hbWVzID0g
cGF0aC5zcGxpdCgiOjoiKQogICAgIHRyeToKICAgICAgICAgbmFtZXMucmVtb3ZlKCIoKSIpCiAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKLSAgICAjIGNvbnZlcnQgZmlsZSBw
YXRoIHRvIGRvdHRlZCBwYXRoCisgICAgIyBDb252ZXJ0IGZpbGUgcGF0aCB0byBkb3R0ZWQgcGF0
aC4KICAgICBuYW1lc1swXSA9IG5hbWVzWzBdLnJlcGxhY2Uobm9kZXMuU0VQLCAiLiIpCi0gICAg
bmFtZXNbMF0gPSBfcHlfZXh0X3JlLnN1YigiIiwgbmFtZXNbMF0pCi0gICAgIyBwdXQgYW55IHBh
cmFtcyBiYWNrCisgICAgbmFtZXNbMF0gPSByZS5zdWIociJcLnB5JCIsICIiLCBuYW1lc1swXSkK
KyAgICAjIFB1dCBhbnkgcGFyYW1zIGJhY2suCiAgICAgbmFtZXNbLTFdICs9IHBvc3NpYmxlX29w
ZW5fYnJhY2tldCArIHBhcmFtcwogICAgIHJldHVybiBuYW1lcwogCiAKLWNsYXNzIExvZ1hNTChv
YmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2ZpbGUsIHByZWZpeCwgc3VpdGVf
bmFtZT0icHl0ZXN0IiwgbG9nZ2luZz0ibm8iKToKK2NsYXNzIExvZ1hNTDoKKyAgICBkZWYgX19p
bml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIGxvZ2ZpbGUsCisgICAgICAgIHByZWZpeDog
T3B0aW9uYWxbc3RyXSwKKyAgICAgICAgc3VpdGVfbmFtZTogc3RyID0gInB5dGVzdCIsCisgICAg
ICAgIGxvZ2dpbmc6IHN0ciA9ICJubyIsCisgICAgICAgIHJlcG9ydF9kdXJhdGlvbjogc3RyID0g
InRvdGFsIiwKKyAgICAgICAgZmFtaWx5PSJ4dW5pdDEiLAorICAgICAgICBsb2dfcGFzc2luZ190
ZXN0czogYm9vbCA9IFRydWUsCisgICAgKSAtPiBOb25lOgogICAgICAgICBsb2dmaWxlID0gb3Mu
cGF0aC5leHBhbmR1c2VyKG9zLnBhdGguZXhwYW5kdmFycyhsb2dmaWxlKSkKICAgICAgICAgc2Vs
Zi5sb2dmaWxlID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgobG9nZmlsZSkpCiAg
ICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4CiAgICAgICAgIHNlbGYuc3VpdGVfbmFtZSA9IHN1
aXRlX25hbWUKICAgICAgICAgc2VsZi5sb2dnaW5nID0gbG9nZ2luZwotICAgICAgICBzZWxmLnN0
YXRzID0gZGljdC5mcm9ta2V5cyhbImVycm9yIiwgInBhc3NlZCIsICJmYWlsdXJlIiwgInNraXBw
ZWQiXSwgMCkKLSAgICAgICAgc2VsZi5ub2RlX3JlcG9ydGVycyA9IHt9ICAjIG5vZGVpZCAtPiBf
Tm9kZVJlcG9ydGVyCi0gICAgICAgIHNlbGYubm9kZV9yZXBvcnRlcnNfb3JkZXJlZCA9IFtdCi0g
ICAgICAgIHNlbGYuZ2xvYmFsX3Byb3BlcnRpZXMgPSBbXQorICAgICAgICBzZWxmLmxvZ19wYXNz
aW5nX3Rlc3RzID0gbG9nX3Bhc3NpbmdfdGVzdHMKKyAgICAgICAgc2VsZi5yZXBvcnRfZHVyYXRp
b24gPSByZXBvcnRfZHVyYXRpb24KKyAgICAgICAgc2VsZi5mYW1pbHkgPSBmYW1pbHkKKyAgICAg
ICAgc2VsZi5zdGF0cyA9IGRpY3QuZnJvbWtleXMoCisgICAgICAgICAgICBbImVycm9yIiwgInBh
c3NlZCIsICJmYWlsdXJlIiwgInNraXBwZWQiXSwgMAorICAgICAgICApICAjIHR5cGU6IERpY3Rb
c3RyLCBpbnRdCisgICAgICAgIHNlbGYubm9kZV9yZXBvcnRlcnMgPSAoCisgICAgICAgICAgICB7
fQorICAgICAgICApICAjIHR5cGU6IERpY3RbVHVwbGVbVW5pb25bc3RyLCBUZXN0UmVwb3J0XSwg
b2JqZWN0XSwgX05vZGVSZXBvcnRlcl0KKyAgICAgICAgc2VsZi5ub2RlX3JlcG9ydGVyc19vcmRl
cmVkID0gW10gICMgdHlwZTogTGlzdFtfTm9kZVJlcG9ydGVyXQorICAgICAgICBzZWxmLmdsb2Jh
bF9wcm9wZXJ0aWVzID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIHN0cl1dCisKICAgICAg
ICAgIyBMaXN0IG9mIHJlcG9ydHMgdGhhdCBmYWlsZWQgb24gY2FsbCBidXQgdGVhcmRvd24gaXMg
cGVuZGluZy4KLSAgICAgICAgc2VsZi5vcGVuX3JlcG9ydHMgPSBbXQorICAgICAgICBzZWxmLm9w
ZW5fcmVwb3J0cyA9IFtdICAjIHR5cGU6IExpc3RbVGVzdFJlcG9ydF0KICAgICAgICAgc2VsZi5j
bnRfZG91YmxlX2ZhaWxfdGVzdHMgPSAwCiAKLSAgICBkZWYgZmluYWxpemUoc2VsZiwgcmVwb3J0
KToKKyAgICAgICAgIyBSZXBsYWNlcyBjb252ZW5pZW5jZSBmYW1pbHkgd2l0aCByZWFsIGZhbWls
eS4KKyAgICAgICAgaWYgc2VsZi5mYW1pbHkgPT0gImxlZ2FjeSI6CisgICAgICAgICAgICBzZWxm
LmZhbWlseSA9ICJ4dW5pdDEiCisKKyAgICBkZWYgZmluYWxpemUoc2VsZiwgcmVwb3J0OiBUZXN0
UmVwb3J0KSAtPiBOb25lOgogICAgICAgICBub2RlaWQgPSBnZXRhdHRyKHJlcG9ydCwgIm5vZGVp
ZCIsIHJlcG9ydCkKLSAgICAgICAgIyBsb2NhbCBoYWNrIHRvIGhhbmRsZSB4ZGlzdCByZXBvcnQg
b3JkZXIKLSAgICAgICAgc2xhdmVub2RlID0gZ2V0YXR0cihyZXBvcnQsICJub2RlIiwgTm9uZSkK
LSAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLm5vZGVfcmVwb3J0ZXJzLnBvcCgobm9kZWlkLCBzbGF2
ZW5vZGUpKQorICAgICAgICAjIExvY2FsIGhhY2sgdG8gaGFuZGxlIHhkaXN0IHJlcG9ydCBvcmRl
ci4KKyAgICAgICAgd29ya2Vybm9kZSA9IGdldGF0dHIocmVwb3J0LCAibm9kZSIsIE5vbmUpCisg
ICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3JlcG9ydGVycy5wb3AoKG5vZGVpZCwgd29ya2Vy
bm9kZSkpCiAgICAgICAgIGlmIHJlcG9ydGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmVw
b3J0ZXIuZmluYWxpemUoKQogCi0gICAgZGVmIG5vZGVfcmVwb3J0ZXIoc2VsZiwgcmVwb3J0KToK
LSAgICAgICAgbm9kZWlkID0gZ2V0YXR0cihyZXBvcnQsICJub2RlaWQiLCByZXBvcnQpCi0gICAg
ICAgICMgbG9jYWwgaGFjayB0byBoYW5kbGUgeGRpc3QgcmVwb3J0IG9yZGVyCi0gICAgICAgIHNs
YXZlbm9kZSA9IGdldGF0dHIocmVwb3J0LCAibm9kZSIsIE5vbmUpCisgICAgZGVmIG5vZGVfcmVw
b3J0ZXIoc2VsZiwgcmVwb3J0OiBVbmlvbltUZXN0UmVwb3J0LCBzdHJdKSAtPiBfTm9kZVJlcG9y
dGVyOgorICAgICAgICBub2RlaWQgPSBnZXRhdHRyKHJlcG9ydCwgIm5vZGVpZCIsIHJlcG9ydCkg
ICMgdHlwZTogVW5pb25bc3RyLCBUZXN0UmVwb3J0XQorICAgICAgICAjIExvY2FsIGhhY2sgdG8g
aGFuZGxlIHhkaXN0IHJlcG9ydCBvcmRlci4KKyAgICAgICAgd29ya2Vybm9kZSA9IGdldGF0dHIo
cmVwb3J0LCAibm9kZSIsIE5vbmUpCiAKLSAgICAgICAga2V5ID0gbm9kZWlkLCBzbGF2ZW5vZGUK
KyAgICAgICAga2V5ID0gbm9kZWlkLCB3b3JrZXJub2RlCiAKICAgICAgICAgaWYga2V5IGluIHNl
bGYubm9kZV9yZXBvcnRlcnM6Ci0gICAgICAgICAgICAjIFRPRE86IGJyZWFza3MgZm9yIC0tZGlz
dD1lYWNoCisgICAgICAgICAgICAjIFRPRE86IGJyZWFrcyBmb3IgLS1kaXN0PWVhY2gKICAgICAg
ICAgICAgIHJldHVybiBzZWxmLm5vZGVfcmVwb3J0ZXJzW2tleV0KIAogICAgICAgICByZXBvcnRl
ciA9IF9Ob2RlUmVwb3J0ZXIobm9kZWlkLCBzZWxmKQpAQCAtMzk5LDIzICs1MjQsMjMgQEAgY2xh
c3MgTG9nWE1MKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHJlcG9ydGVyCiAKLSAgICBkZWYg
YWRkX3N0YXRzKHNlbGYsIGtleSk6CisgICAgZGVmIGFkZF9zdGF0cyhzZWxmLCBrZXk6IHN0cikg
LT4gTm9uZToKICAgICAgICAgaWYga2V5IGluIHNlbGYuc3RhdHM6CiAgICAgICAgICAgICBzZWxm
LnN0YXRzW2tleV0gKz0gMQogCi0gICAgZGVmIF9vcGVudGVzdGNhc2Uoc2VsZiwgcmVwb3J0KToK
KyAgICBkZWYgX29wZW50ZXN0Y2FzZShzZWxmLCByZXBvcnQ6IFRlc3RSZXBvcnQpIC0+IF9Ob2Rl
UmVwb3J0ZXI6CiAgICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3JlcG9ydGVyKHJlcG9ydCkK
ICAgICAgICAgcmVwb3J0ZXIucmVjb3JkX3Rlc3RyZXBvcnQocmVwb3J0KQogICAgICAgICByZXR1
cm4gcmVwb3J0ZXIKIAotICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQoc2VsZiwgcmVw
b3J0KToKLSAgICAgICAgIiIiaGFuZGxlIGEgc2V0dXAvY2FsbC90ZWFyZG93biByZXBvcnQsIGdl
bmVyYXRpbmcgdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgIHhtbCB0YWdzIGFzIG5lY2Vzc2FyeS4K
KyAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydDogVGVzdFJlcG9y
dCkgLT4gTm9uZToKKyAgICAgICAgIiIiSGFuZGxlIGEgc2V0dXAvY2FsbC90ZWFyZG93biByZXBv
cnQsIGdlbmVyYXRpbmcgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIFhNTCB0YWdzIGFzIG5lY2Vz
c2FyeS4KIAotICAgICAgICBub3RlOiBkdWUgdG8gcGx1Z2lucyBsaWtlIHhkaXN0LCB0aGlzIGhv
b2sgbWF5IGJlIGNhbGxlZCBpbiBpbnRlcmxhY2VkCi0gICAgICAgIG9yZGVyIHdpdGggcmVwb3J0
cyBmcm9tIG90aGVyIG5vZGVzLiBmb3IgZXhhbXBsZToKKyAgICAgICAgTm90ZTogZHVlIHRvIHBs
dWdpbnMgbGlrZSB4ZGlzdCwgdGhpcyBob29rIG1heSBiZSBjYWxsZWQgaW4gaW50ZXJsYWNlZAor
ICAgICAgICBvcmRlciB3aXRoIHJlcG9ydHMgZnJvbSBvdGhlciBub2Rlcy4gRm9yIGV4YW1wbGU6
CiAKLSAgICAgICAgdXN1YWwgY2FsbCBvcmRlcjoKKyAgICAgICAgVXN1YWwgY2FsbCBvcmRlcjoK
ICAgICAgICAgICAgIC0+IHNldHVwIG5vZGUxCiAgICAgICAgICAgICAtPiBjYWxsIG5vZGUxCiAg
ICAgICAgICAgICAtPiB0ZWFyZG93biBub2RlMQpAQCAtNDIzLDcgKzU0OCw3IEBAIGNsYXNzIExv
Z1hNTChvYmplY3QpOgogICAgICAgICAgICAgLT4gY2FsbCBub2RlMgogICAgICAgICAgICAgLT4g
dGVhcmRvd24gbm9kZTIKIAotICAgICAgICBwb3NzaWJsZSBjYWxsIG9yZGVyIGluIHhkaXN0Ogor
ICAgICAgICBQb3NzaWJsZSBjYWxsIG9yZGVyIGluIHhkaXN0OgogICAgICAgICAgICAgLT4gc2V0
dXAgbm9kZTEKICAgICAgICAgICAgIC0+IGNhbGwgbm9kZTEKICAgICAgICAgICAgIC0+IHNldHVw
IG5vZGUyCkBAIC00MzgsNyArNTYzLDcgQEAgY2xhc3MgTG9nWE1MKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX3Bhc3MocmVwb3J0KQogICAgICAgICBlbGlmIHJlcG9y
dC5mYWlsZWQ6CiAgICAgICAgICAgICBpZiByZXBvcnQud2hlbiA9PSAidGVhcmRvd24iOgotICAg
ICAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyB2YXJzIGFyZSBuZWVkZWQgd2hlbiB4ZGlzdCBw
bHVnaW4gaXMgdXNlZAorICAgICAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyB2YXJzIGFyZSBu
ZWVkZWQgd2hlbiB4ZGlzdCBwbHVnaW4gaXMgdXNlZC4KICAgICAgICAgICAgICAgICByZXBvcnRf
d2lkID0gZ2V0YXR0cihyZXBvcnQsICJ3b3JrZXJfaWQiLCBOb25lKQogICAgICAgICAgICAgICAg
IHJlcG9ydF9paSA9IGdldGF0dHIocmVwb3J0LCAiaXRlbV9pbmRleCIsIE5vbmUpCiAgICAgICAg
ICAgICAgICAgY2xvc2VfcmVwb3J0ID0gbmV4dCgKQEAgLTQ1NiwxMyArNTgxLDE1IEBAIGNsYXNz
IExvZ1hNTChvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIGNsb3NlX3JlcG9ydDoKICAgICAg
ICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIG9wZW4gbmV3IHRlc3RjYXNlIGluIGNhc2Ugd2Ug
aGF2ZSBmYWlsdXJlIGluCiAgICAgICAgICAgICAgICAgICAgICMgY2FsbCBhbmQgZXJyb3IgaW4g
dGVhcmRvd24gaW4gb3JkZXIgdG8gZm9sbG93IGp1bml0Ci0gICAgICAgICAgICAgICAgICAgICMg
c2NoZW1hCisgICAgICAgICAgICAgICAgICAgICMgc2NoZW1hLgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLmZpbmFsaXplKGNsb3NlX3JlcG9ydCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5j
bnRfZG91YmxlX2ZhaWxfdGVzdHMgKz0gMQogICAgICAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLl9v
cGVudGVzdGNhc2UocmVwb3J0KQogICAgICAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gImNhbGwi
OgogICAgICAgICAgICAgICAgIHJlcG9ydGVyLmFwcGVuZF9mYWlsdXJlKHJlcG9ydCkKICAgICAg
ICAgICAgICAgICBzZWxmLm9wZW5fcmVwb3J0cy5hcHBlbmQocmVwb3J0KQorICAgICAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLmxvZ19wYXNzaW5nX3Rlc3RzOgorICAgICAgICAgICAgICAgICAgICBy
ZXBvcnRlci53cml0ZV9jYXB0dXJlZF9vdXRwdXQocmVwb3J0KQogICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICByZXBvcnRlci5hcHBlbmRfZXJyb3IocmVwb3J0KQogICAgICAgICBl
bGlmIHJlcG9ydC5za2lwcGVkOgpAQCAtNDc0LDcgKzYwMSw3IEBAIGNsYXNzIExvZ1hNTChvYmpl
Y3QpOgogICAgICAgICAgICAgcmVwb3J0ZXIud3JpdGVfY2FwdHVyZWRfb3V0cHV0KHJlcG9ydCkK
IAogICAgICAgICAgICAgZm9yIHByb3BuYW1lLCBwcm9wdmFsdWUgaW4gcmVwb3J0LnVzZXJfcHJv
cGVydGllczoKLSAgICAgICAgICAgICAgICByZXBvcnRlci5hZGRfcHJvcGVydHkocHJvcG5hbWUs
IHByb3B2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXBvcnRlci5hZGRfcHJvcGVydHkocHJvcG5h
bWUsIHN0cihwcm9wdmFsdWUpKQogCiAgICAgICAgICAgICBzZWxmLmZpbmFsaXplKHJlcG9ydCkK
ICAgICAgICAgICAgIHJlcG9ydF93aWQgPSBnZXRhdHRyKHJlcG9ydCwgIndvcmtlcl9pZCIsIE5v
bmUpCkBAIC00OTQsMTQgKzYyMSwxNCBAQCBjbGFzcyBMb2dYTUwob2JqZWN0KToKICAgICAgICAg
ICAgIGlmIGNsb3NlX3JlcG9ydDoKICAgICAgICAgICAgICAgICBzZWxmLm9wZW5fcmVwb3J0cy5y
ZW1vdmUoY2xvc2VfcmVwb3J0KQogCi0gICAgZGVmIHVwZGF0ZV90ZXN0Y2FzZV9kdXJhdGlvbihz
ZWxmLCByZXBvcnQpOgotICAgICAgICAiIiJhY2N1bXVsYXRlcyB0b3RhbCBkdXJhdGlvbiBmb3Ig
bm9kZWlkIGZyb20gZ2l2ZW4gcmVwb3J0IGFuZCB1cGRhdGVzCi0gICAgICAgIHRoZSBKdW5pdC50
ZXN0Y2FzZSB3aXRoIHRoZSBuZXcgdG90YWwgaWYgYWxyZWFkeSBjcmVhdGVkLgotICAgICAgICAi
IiIKLSAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLm5vZGVfcmVwb3J0ZXIocmVwb3J0KQotICAgICAg
ICByZXBvcnRlci5kdXJhdGlvbiArPSBnZXRhdHRyKHJlcG9ydCwgImR1cmF0aW9uIiwgMC4wKQor
ICAgIGRlZiB1cGRhdGVfdGVzdGNhc2VfZHVyYXRpb24oc2VsZiwgcmVwb3J0OiBUZXN0UmVwb3J0
KSAtPiBOb25lOgorICAgICAgICAiIiJBY2N1bXVsYXRlIHRvdGFsIGR1cmF0aW9uIGZvciBub2Rl
aWQgZnJvbSBnaXZlbiByZXBvcnQgYW5kIHVwZGF0ZQorICAgICAgICB0aGUgSnVuaXQudGVzdGNh
c2Ugd2l0aCB0aGUgbmV3IHRvdGFsIGlmIGFscmVhZHkgY3JlYXRlZC4iIiIKKyAgICAgICAgaWYg
c2VsZi5yZXBvcnRfZHVyYXRpb24gPT0gInRvdGFsIiBvciByZXBvcnQud2hlbiA9PSBzZWxmLnJl
cG9ydF9kdXJhdGlvbjoKKyAgICAgICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3JlcG9ydGVy
KHJlcG9ydCkKKyAgICAgICAgICAgIHJlcG9ydGVyLmR1cmF0aW9uICs9IGdldGF0dHIocmVwb3J0
LCAiZHVyYXRpb24iLCAwLjApCiAKLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQoc2VsZiwg
cmVwb3J0KToKKyAgICBkZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQoc2VsZiwgcmVwb3J0OiBUZXN0
UmVwb3J0KSAtPiBOb25lOgogICAgICAgICBpZiBub3QgcmVwb3J0LnBhc3NlZDoKICAgICAgICAg
ICAgIHJlcG9ydGVyID0gc2VsZi5fb3BlbnRlc3RjYXNlKHJlcG9ydCkKICAgICAgICAgICAgIGlm
IHJlcG9ydC5mYWlsZWQ6CkBAIC01MDksMjAgKzYzNiwyMCBAQCBjbGFzcyBMb2dYTUwob2JqZWN0
KToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX2Nv
bGxlY3Rfc2tpcHBlZChyZXBvcnQpCiAKLSAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2Vs
ZiwgZXhjcmVwcik6CisgICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHI6
IEV4Y2VwdGlvblJlcHIpIC0+IE5vbmU6CiAgICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3Jl
cG9ydGVyKCJpbnRlcm5hbCIpCiAgICAgICAgIHJlcG9ydGVyLmF0dHJzLnVwZGF0ZShjbGFzc25h
bWU9InB5dGVzdCIsIG5hbWU9ImludGVybmFsIikKLSAgICAgICAgcmVwb3J0ZXIuX2FkZF9zaW1w
bGUoSnVuaXQuZXJyb3IsICJpbnRlcm5hbCBlcnJvciIsIGV4Y3JlcHIpCisgICAgICAgIHJlcG9y
dGVyLl9hZGRfc2ltcGxlKCJlcnJvciIsICJpbnRlcm5hbCBlcnJvciIsIHN0cihleGNyZXByKSkK
IAotICAgIGRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnN1aXRl
X3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgIGRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNl
bGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuc3VpdGVfc3RhcnRfdGltZSA9IHRpbWluZy50aW1l
KCkKIAotICAgIGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZWxmKToKKyAgICBkZWYgcHl0ZXN0
X3Nlc3Npb25maW5pc2goc2VsZikgLT4gTm9uZToKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGgu
ZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc2VsZi5sb2dmaWxlKSkKICAgICAgICAgaWYgbm90IG9z
LnBhdGguaXNkaXIoZGlybmFtZSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQog
ICAgICAgICBsb2dmaWxlID0gb3BlbihzZWxmLmxvZ2ZpbGUsICJ3IiwgZW5jb2Rpbmc9InV0Zi04
IikKLSAgICAgICAgc3VpdGVfc3RvcF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgc3VpdGVf
c3RvcF90aW1lID0gdGltaW5nLnRpbWUoKQogICAgICAgICBzdWl0ZV90aW1lX2RlbHRhID0gc3Vp
dGVfc3RvcF90aW1lIC0gc2VsZi5zdWl0ZV9zdGFydF90aW1lCiAKICAgICAgICAgbnVtdGVzdHMg
PSAoCkBAIC01MzQsMzYgKzY2MSw0MCBAQCBjbGFzcyBMb2dYTUwob2JqZWN0KToKICAgICAgICAg
KQogICAgICAgICBsb2dmaWxlLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/PicpCiAKLSAgICAgICAgbG9nZmlsZS53cml0ZSgKLSAgICAgICAgICAgIEp1bml0LnRl
c3RzdWl0ZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9nZXRfZ2xvYmFsX3Byb3BlcnRpZXNfbm9k
ZSgpLAotICAgICAgICAgICAgICAgIFt4LnRvX3htbCgpIGZvciB4IGluIHNlbGYubm9kZV9yZXBv
cnRlcnNfb3JkZXJlZF0sCi0gICAgICAgICAgICAgICAgbmFtZT1zZWxmLnN1aXRlX25hbWUsCi0g
ICAgICAgICAgICAgICAgZXJyb3JzPXNlbGYuc3RhdHNbImVycm9yIl0sCi0gICAgICAgICAgICAg
ICAgZmFpbHVyZXM9c2VsZi5zdGF0c1siZmFpbHVyZSJdLAotICAgICAgICAgICAgICAgIHNraXBz
PXNlbGYuc3RhdHNbInNraXBwZWQiXSwKLSAgICAgICAgICAgICAgICB0ZXN0cz1udW10ZXN0cywK
LSAgICAgICAgICAgICAgICB0aW1lPSIlLjNmIiAlIHN1aXRlX3RpbWVfZGVsdGEsCi0gICAgICAg
ICAgICApLnVuaWNvZGUoCi0gICAgICAgICAgICAgICAgaW5kZW50PTAKLSAgICAgICAgICAgICkK
KyAgICAgICAgc3VpdGVfbm9kZSA9IEVULkVsZW1lbnQoCisgICAgICAgICAgICAidGVzdHN1aXRl
IiwKKyAgICAgICAgICAgIG5hbWU9c2VsZi5zdWl0ZV9uYW1lLAorICAgICAgICAgICAgZXJyb3Jz
PXN0cihzZWxmLnN0YXRzWyJlcnJvciJdKSwKKyAgICAgICAgICAgIGZhaWx1cmVzPXN0cihzZWxm
LnN0YXRzWyJmYWlsdXJlIl0pLAorICAgICAgICAgICAgc2tpcHBlZD1zdHIoc2VsZi5zdGF0c1si
c2tpcHBlZCJdKSwKKyAgICAgICAgICAgIHRlc3RzPXN0cihudW10ZXN0cyksCisgICAgICAgICAg
ICB0aW1lPSIlLjNmIiAlIHN1aXRlX3RpbWVfZGVsdGEsCisgICAgICAgICAgICB0aW1lc3RhbXA9
ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzZWxmLnN1aXRlX3N0YXJ0X3RpbWUpLmlzb2Zvcm1hdCgp
LAorICAgICAgICAgICAgaG9zdG5hbWU9cGxhdGZvcm0ubm9kZSgpLAogICAgICAgICApCisgICAg
ICAgIGdsb2JhbF9wcm9wZXJ0aWVzID0gc2VsZi5fZ2V0X2dsb2JhbF9wcm9wZXJ0aWVzX25vZGUo
KQorICAgICAgICBpZiBnbG9iYWxfcHJvcGVydGllcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IHN1aXRlX25vZGUuYXBwZW5kKGdsb2JhbF9wcm9wZXJ0aWVzKQorICAgICAgICBmb3Igbm9kZV9y
ZXBvcnRlciBpbiBzZWxmLm5vZGVfcmVwb3J0ZXJzX29yZGVyZWQ6CisgICAgICAgICAgICBzdWl0
ZV9ub2RlLmFwcGVuZChub2RlX3JlcG9ydGVyLnRvX3htbCgpKQorICAgICAgICB0ZXN0c3VpdGVz
ID0gRVQuRWxlbWVudCgidGVzdHN1aXRlcyIpCisgICAgICAgIHRlc3RzdWl0ZXMuYXBwZW5kKHN1
aXRlX25vZGUpCisgICAgICAgIGxvZ2ZpbGUud3JpdGUoRVQudG9zdHJpbmcodGVzdHN1aXRlcywg
ZW5jb2Rpbmc9InVuaWNvZGUiKSkKICAgICAgICAgbG9nZmlsZS5jbG9zZSgpCiAKLSAgICBkZWYg
cHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkoc2VsZiwgdGVybWluYWxyZXBvcnRlcik6Ci0gICAgICAg
IHRlcm1pbmFscmVwb3J0ZXIud3JpdGVfc2VwKCItIiwgImdlbmVyYXRlZCB4bWwgZmlsZTogJXMi
ICUgKHNlbGYubG9nZmlsZSkpCisgICAgZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHNlbGYs
IHRlcm1pbmFscmVwb3J0ZXI6IFRlcm1pbmFsUmVwb3J0ZXIpIC0+IE5vbmU6CisgICAgICAgIHRl
cm1pbmFscmVwb3J0ZXIud3JpdGVfc2VwKCItIiwgImdlbmVyYXRlZCB4bWwgZmlsZToge30iLmZv
cm1hdChzZWxmLmxvZ2ZpbGUpKQogCi0gICAgZGVmIGFkZF9nbG9iYWxfcHJvcGVydHkoc2VsZiwg
bmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzLmFwcGVuZCgoc3Ry
KG5hbWUpLCBiaW5feG1sX2VzY2FwZSh2YWx1ZSkpKQorICAgIGRlZiBhZGRfZ2xvYmFsX3Byb3Bl
cnR5KHNlbGYsIG5hbWU6IHN0ciwgdmFsdWU6IG9iamVjdCkgLT4gTm9uZToKKyAgICAgICAgX190
cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIF9jaGVja19yZWNvcmRfcGFyYW1fdHlwZSgi
bmFtZSIsIG5hbWUpCisgICAgICAgIHNlbGYuZ2xvYmFsX3Byb3BlcnRpZXMuYXBwZW5kKChuYW1l
LCBiaW5feG1sX2VzY2FwZSh2YWx1ZSkpKQogCi0gICAgZGVmIF9nZXRfZ2xvYmFsX3Byb3BlcnRp
ZXNfbm9kZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgSnVuaXQgbm9kZSBjb250YWluaW5n
IGN1c3RvbSBwcm9wZXJ0aWVzLCBpZiBhbnkuCi0gICAgICAgICIiIgorICAgIGRlZiBfZ2V0X2ds
b2JhbF9wcm9wZXJ0aWVzX25vZGUoc2VsZikgLT4gT3B0aW9uYWxbRVQuRWxlbWVudF06CisgICAg
ICAgICIiIlJldHVybiBhIEp1bml0IG5vZGUgY29udGFpbmluZyBjdXN0b20gcHJvcGVydGllcywg
aWYgYW55LiIiIgogICAgICAgICBpZiBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzOgotICAgICAgICAg
ICAgcmV0dXJuIEp1bml0LnByb3BlcnRpZXMoCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAg
ICAgICAgICAgICBKdW5pdC5wcm9wZXJ0eShuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5nbG9iYWxfcHJvcGVydGllcwot
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuICIiCisgICAg
ICAgICAgICBwcm9wZXJ0aWVzID0gRVQuRWxlbWVudCgicHJvcGVydGllcyIpCisgICAgICAgICAg
ICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5nbG9iYWxfcHJvcGVydGllczoKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0aWVzLmFwcGVuZChFVC5FbGVtZW50KCJwcm9wZXJ0eSIsIG5hbWU9bmFtZSwg
dmFsdWU9dmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMKKyAgICAgICAgcmV0
dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2xvZ2dpbmcucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9sb2dnaW5nLnB5CmluZGV4IDAwYmI5YWViNTRhNy4u
YzI3N2JhNTMyMGM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9sb2dnaW5n
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2xvZ2dpbmcucHkKQEAgLTEsMjQgKzEs
NTEgQEAKLSIiIiBBY2Nlc3MgYW5kIGNvbnRyb2wgbG9nIGNhcHR1cmluZy4gIiIiCi1mcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9u
Ci0KKyIiIkFjY2VzcyBhbmQgY29udHJvbCBsb2cgY2FwdHVyaW5nLiIiIgogaW1wb3J0IGxvZ2dp
bmcKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZywgY29udGV4dG1hbmFnZXIKK2ltcG9y
dCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2l4CitpbXBvcnQgc3lzCitmcm9tIGNvbnRleHRsaWIg
aW1wb3J0IGNvbnRleHRtYW5hZ2VyCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworZnJvbSB0eXBp
bmcgaW1wb3J0IEFic3RyYWN0U2V0Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBp
bmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5n
IGltcG9ydCBNYXBwaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5n
IGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKK2Zyb20gdHlwaW5nIGlt
cG9ydCBVbmlvbgogCi1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBjcmVhdGVfdGVybWluYWxf
d3JpdGVyCiBpbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgcHkKK2Zyb20gX3B5dGVzdCBpbXBvcnQgbm9k
ZXMKK2Zyb20gX3B5dGVzdC5faW8gaW1wb3J0IFRlcm1pbmFsV3JpdGVyCitmcm9tIF9weXRlc3Qu
Y2FwdHVyZSBpbXBvcnQgQ2FwdHVyZU1hbmFnZXIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBudWxsY29udGV4dAorZnJvbSBfcHl0
ZXN0LmNvbmZpZyBpbXBvcnQgX3N0cnRvYm9vbAorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQg
Q29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBjcmVhdGVfdGVybWluYWxfd3JpdGVy
Citmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0
ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVxdWVzdAorZnJvbSBfcHl0ZXN0Lm1haW4gaW1w
b3J0IFNlc3Npb24KK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRl
c3Quc3RvcmUgaW1wb3J0IFN0b3JlS2V5Citmcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRl
cm1pbmFsUmVwb3J0ZXIKIAogCi1ERUZBVUxUX0xPR19GT1JNQVQgPSAiJShmaWxlbmFtZSktMjVz
ICUobGluZW5vKTRkICUobGV2ZWxuYW1lKS04cyAlKG1lc3NhZ2UpcyIKK0RFRkFVTFRfTE9HX0ZP
Uk1BVCA9ICIlKGxldmVsbmFtZSktOHMgJShuYW1lKXM6JShmaWxlbmFtZSlzOiUobGluZW5vKWQg
JShtZXNzYWdlKXMiCiBERUZBVUxUX0xPR19EQVRFX0ZPUk1BVCA9ICIlSDolTTolUyIKK19BTlNJ
X0VTQ0FQRV9TRVEgPSByZS5jb21waWxlKHIiXHgxYlxbW1xkO10rbSIpCitjYXBsb2dfaGFuZGxl
cl9rZXkgPSBTdG9yZUtleVsiTG9nQ2FwdHVyZUhhbmRsZXIiXSgpCitjYXBsb2dfcmVjb3Jkc19r
ZXkgPSBTdG9yZUtleVtEaWN0W3N0ciwgTGlzdFtsb2dnaW5nLkxvZ1JlY29yZF1dXSgpCisKKwor
ZGVmIF9yZW1vdmVfYW5zaV9lc2NhcGVfc2VxdWVuY2VzKHRleHQ6IHN0cikgLT4gc3RyOgorICAg
IHJldHVybiBfQU5TSV9FU0NBUEVfU0VRLnN1YigiIiwgdGV4dCkKIAogCiBjbGFzcyBDb2xvcmVk
TGV2ZWxGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIpOgotICAgICIiIgotICAgIENvbG9yaXpl
IHRoZSAlKGxldmVsbmFtZSkuLnMgcGFydCBvZiB0aGUgbG9nIGZvcm1hdCBwYXNzZWQgdG8gX19p
bml0X18uCi0gICAgIiIiCisgICAgIiIiQSBsb2dnaW5nIGZvcm1hdHRlciB3aGljaCBjb2xvcml6
ZXMgdGhlICUobGV2ZWxuYW1lKS4ucyBwYXJ0IG9mIHRoZQorICAgIGxvZyBmb3JtYXQgcGFzc2Vk
IHRvIF9faW5pdF9fLiIiIgogCiAgICAgTE9HTEVWRUxfQ09MT1JPUFRTID0gewogICAgICAgICBs
b2dnaW5nLkNSSVRJQ0FMOiB7InJlZCJ9LApAQCAtMjgsMTcgKzU1LDE1IEBAIGNsYXNzIENvbG9y
ZWRMZXZlbEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcik6CiAgICAgICAgIGxvZ2dpbmcuSU5G
TzogeyJncmVlbiJ9LAogICAgICAgICBsb2dnaW5nLkRFQlVHOiB7InB1cnBsZSJ9LAogICAgICAg
ICBsb2dnaW5nLk5PVFNFVDogc2V0KCksCi0gICAgfQotICAgIExFVkVMTkFNRV9GTVRfUkVHRVgg
PSByZS5jb21waWxlKHIiJVwobGV2ZWxuYW1lXCkoWystXT9cZCpzKSIpCisgICAgfSAgIyB0eXBl
OiBNYXBwaW5nW2ludCwgQWJzdHJhY3RTZXRbc3RyXV0KKyAgICBMRVZFTE5BTUVfRk1UX1JFR0VY
ID0gcmUuY29tcGlsZShyIiVcKGxldmVsbmFtZVwpKFsrLS5dP1xkKnMpIikKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0ZXJtaW5hbHdyaXRlciwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAg
c3VwZXIoQ29sb3JlZExldmVsRm9ybWF0dGVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2Fy
Z3MpCi0gICAgICAgIGlmIHNpeC5QWTI6Ci0gICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9mbXQg
PSBzZWxmLl9mbXQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX2Zt
dCA9IHNlbGYuX3N0eWxlLl9mbXQKLSAgICAgICAgc2VsZi5fbGV2ZWxfdG9fZm10X21hcHBpbmcg
PSB7fQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXJtaW5hbHdyaXRlcjogVGVybWluYWxXcml0
ZXIsICphcmdzLCAqKmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygq
YXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuX29yaWdpbmFsX2ZtdCA9IHNlbGYuX3N0eWxl
Ll9mbXQKKyAgICAgICAgc2VsZi5fbGV2ZWxfdG9fZm10X21hcHBpbmcgPSB7fSAgIyB0eXBlOiBE
aWN0W2ludCwgc3RyXQogCisgICAgICAgIGFzc2VydCBzZWxmLl9mbXQgaXMgbm90IE5vbmUKICAg
ICAgICAgbGV2ZWxuYW1lX2ZtdF9tYXRjaCA9IHNlbGYuTEVWRUxOQU1FX0ZNVF9SRUdFWC5zZWFy
Y2goc2VsZi5fZm10KQogICAgICAgICBpZiBub3QgbGV2ZWxuYW1lX2ZtdF9tYXRjaDoKICAgICAg
ICAgICAgIHJldHVybgpAQCAtNTgsMTYgKzgzLDExMSBAQCBjbGFzcyBDb2xvcmVkTGV2ZWxGb3Jt
YXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgICAgIGNvbG9yaXplZF9mb3Jt
YXR0ZWRfbGV2ZWxuYW1lLCBzZWxmLl9mbXQKICAgICAgICAgICAgICkKIAotICAgIGRlZiBmb3Jt
YXQoc2VsZiwgcmVjb3JkKToKKyAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZDogbG9nZ2luZy5M
b2dSZWNvcmQpIC0+IHN0cjoKICAgICAgICAgZm10ID0gc2VsZi5fbGV2ZWxfdG9fZm10X21hcHBp
bmcuZ2V0KHJlY29yZC5sZXZlbG5vLCBzZWxmLl9vcmlnaW5hbF9mbXQpCi0gICAgICAgIGlmIHNp
eC5QWTI6Ci0gICAgICAgICAgICBzZWxmLl9mbXQgPSBmbXQKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX3N0eWxlLl9mbXQgPSBmbXQKLSAgICAgICAgcmV0dXJuIHN1cGVyKENvbG9y
ZWRMZXZlbEZvcm1hdHRlciwgc2VsZikuZm9ybWF0KHJlY29yZCkKKyAgICAgICAgc2VsZi5fc3R5
bGUuX2ZtdCA9IGZtdAorICAgICAgICByZXR1cm4gc3VwZXIoKS5mb3JtYXQocmVjb3JkKQogCiAK
LWRlZiBnZXRfb3B0aW9uX2luaShjb25maWcsICpuYW1lcyk6CitjbGFzcyBQZXJjZW50U3R5bGVN
dWx0aWxpbmUobG9nZ2luZy5QZXJjZW50U3R5bGUpOgorICAgICIiIkEgbG9nZ2luZyBzdHlsZSB3
aXRoIHNwZWNpYWwgc3VwcG9ydCBmb3IgbXVsdGlsaW5lIG1lc3NhZ2VzLgorCisgICAgSWYgdGhl
IG1lc3NhZ2Ugb2YgYSByZWNvcmQgY29uc2lzdHMgb2YgbXVsdGlwbGUgbGluZXMsIHRoaXMgc3R5
bGUKKyAgICBmb3JtYXRzIHRoZSBtZXNzYWdlIGFzIGlmIGVhY2ggbGluZSB3ZXJlIGxvZ2dlZCBz
ZXBhcmF0ZWx5LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZtdDogc3RyLCBh
dXRvX2luZGVudDogVW5pb25baW50LCBzdHIsIGJvb2wsIE5vbmVdKSAtPiBOb25lOgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKGZtdCkKKyAgICAgICAgc2VsZi5fYXV0b19pbmRlbnQgPSBzZWxm
Ll9nZXRfYXV0b19pbmRlbnQoYXV0b19pbmRlbnQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIF91cGRhdGVfbWVzc2FnZSgKKyAgICAgICAgcmVjb3JkX2RpY3Q6IERpY3Rbc3RyLCBvYmpl
Y3RdLCBtZXNzYWdlOiBzdHIKKyAgICApIC0+IERpY3Rbc3RyLCBvYmplY3RdOgorICAgICAgICB0
bXAgPSByZWNvcmRfZGljdC5jb3B5KCkKKyAgICAgICAgdG1wWyJtZXNzYWdlIl0gPSBtZXNzYWdl
CisgICAgICAgIHJldHVybiB0bXAKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dldF9h
dXRvX2luZGVudChhdXRvX2luZGVudF9vcHRpb246IFVuaW9uW2ludCwgc3RyLCBib29sLCBOb25l
XSkgLT4gaW50OgorICAgICAgICAiIiJEZXRlcm1pbmUgdGhlIGN1cnJlbnQgYXV0byBpbmRlbnRh
dGlvbiBzZXR0aW5nLgorCisgICAgICAgIFNwZWNpZnkgYXV0byBpbmRlbnQgYmVoYXZpb3IgKG9u
L29mZi9maXhlZCkgYnkgcGFzc2luZyBpbgorICAgICAgICBleHRyYT17ImF1dG9faW5kZW50Ijog
W3ZhbHVlXX0gdG8gdGhlIGNhbGwgdG8gbG9nZ2luZy5sb2coKSBvcgorICAgICAgICB1c2luZyBh
IC0tbG9nLWF1dG8taW5kZW50IFt2YWx1ZV0gY29tbWFuZCBsaW5lIG9yIHRoZQorICAgICAgICBs
b2dfYXV0b19pbmRlbnQgW3ZhbHVlXSBjb25maWcgb3B0aW9uLgorCisgICAgICAgIERlZmF1bHQg
YmVoYXZpb3IgaXMgYXV0by1pbmRlbnQgb2ZmLgorCisgICAgICAgIFVzaW5nIHRoZSBzdHJpbmcg
IlRydWUiIG9yICJvbiIgb3IgdGhlIGJvb2xlYW4gVHJ1ZSBhcyB0aGUgdmFsdWUKKyAgICAgICAg
dHVybnMgYXV0byBpbmRlbnQgb24sIHVzaW5nIHRoZSBzdHJpbmcgIkZhbHNlIiBvciAib2ZmIiBv
ciB0aGUKKyAgICAgICAgYm9vbGVhbiBGYWxzZSBvciB0aGUgaW50IDAgdHVybnMgaXQgb2ZmLCBh
bmQgc3BlY2lmeWluZyBhCisgICAgICAgIHBvc2l0aXZlIGludGVnZXIgZml4ZXMgdGhlIGluZGVu
dGF0aW9uIHBvc2l0aW9uIHRvIHRoZSB2YWx1ZQorICAgICAgICBzcGVjaWZpZWQuCisKKyAgICAg
ICAgQW55IG90aGVyIHZhbHVlcyBmb3IgdGhlIG9wdGlvbiBhcmUgaW52YWxpZCwgYW5kIHdpbGwg
c2lsZW50bHkgYmUKKyAgICAgICAgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0LgorCisgICAgICAg
IDpwYXJhbSBOb25lfGJvb2x8aW50fHN0ciBhdXRvX2luZGVudF9vcHRpb246CisgICAgICAgICAg
ICBVc2VyIHNwZWNpZmllZCBvcHRpb24gZm9yIGluZGVudGF0aW9uIGZyb20gY29tbWFuZCBsaW5l
LCBjb25maWcKKyAgICAgICAgICAgIG9yIGV4dHJhIGt3YXJnLiBBY2NlcHRzIGludCwgYm9vbCBv
ciBzdHIuIHN0ciBvcHRpb24gYWNjZXB0cyB0aGUKKyAgICAgICAgICAgIHNhbWUgcmFuZ2Ugb2Yg
dmFsdWVzIGFzIGJvb2xlYW4gY29uZmlnIG9wdGlvbnMsIGFzIHdlbGwgYXMKKyAgICAgICAgICAg
IHBvc2l0aXZlIGludGVnZXJzIHJlcHJlc2VudGVkIGluIHN0ciBmb3JtLgorCisgICAgICAgIDpy
ZXR1cm5zOgorICAgICAgICAgICAgSW5kZW50YXRpb24gdmFsdWUsIHdoaWNoIGNhbiBiZQorICAg
ICAgICAgICAgLTEgKGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIGluZGVudGF0aW9uKSBvcgorICAg
ICAgICAgICAgMCAoYXV0by1pbmRlbnQgdHVybmVkIG9mZikgb3IKKyAgICAgICAgICAgID4wIChl
eHBsaWNpdGx5IHNldCBpbmRlbnRhdGlvbiBwb3NpdGlvbikuCisgICAgICAgICIiIgorCisgICAg
ICAgIGlmIGF1dG9faW5kZW50X29wdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIDAK
KyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGF1dG9faW5kZW50X29wdGlvbiwgYm9vbCk6CisgICAg
ICAgICAgICBpZiBhdXRvX2luZGVudF9vcHRpb246CisgICAgICAgICAgICAgICAgcmV0dXJuIC0x
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVs
aWYgaXNpbnN0YW5jZShhdXRvX2luZGVudF9vcHRpb24sIGludCk6CisgICAgICAgICAgICByZXR1
cm4gaW50KGF1dG9faW5kZW50X29wdGlvbikKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGF1dG9f
aW5kZW50X29wdGlvbiwgc3RyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW50KGF1dG9faW5kZW50X29wdGlvbikKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICBpZiBfc3RydG9ib29sKGF1dG9faW5kZW50X29wdGlvbik6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAtMQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIDAKKworICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIGZvcm1hdChzZWxm
LCByZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBzdHI6CisgICAgICAgIGlmICJcbiIgaW4g
cmVjb3JkLm1lc3NhZ2U6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHJlY29yZCwgImF1dG9faW5k
ZW50Iik6CisgICAgICAgICAgICAgICAgIyBQYXNzZWQgaW4gZnJvbSB0aGUgImV4dHJhPXt9IiBr
d2FyZyBvbiB0aGUgY2FsbCB0byBsb2dnaW5nLmxvZygpLgorICAgICAgICAgICAgICAgIGF1dG9f
aW5kZW50ID0gc2VsZi5fZ2V0X2F1dG9faW5kZW50KHJlY29yZC5hdXRvX2luZGVudCkgICMgdHlw
ZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgYXV0b19pbmRlbnQgPSBzZWxmLl9hdXRvX2luZGVudAorCisgICAgICAgICAgICBpZiBhdXRv
X2luZGVudDoKKyAgICAgICAgICAgICAgICBsaW5lcyA9IHJlY29yZC5tZXNzYWdlLnNwbGl0bGlu
ZXMoKQorICAgICAgICAgICAgICAgIGZvcm1hdHRlZCA9IHNlbGYuX2ZtdCAlIHNlbGYuX3VwZGF0
ZV9tZXNzYWdlKHJlY29yZC5fX2RpY3RfXywgbGluZXNbMF0pCisKKyAgICAgICAgICAgICAgICBp
ZiBhdXRvX2luZGVudCA8IDA6CisgICAgICAgICAgICAgICAgICAgIGluZGVudGF0aW9uID0gX3Jl
bW92ZV9hbnNpX2VzY2FwZV9zZXF1ZW5jZXMoZm9ybWF0dGVkKS5maW5kKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZXNbMF0KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgT3B0aW1pemVzIGxvZ2dpbmcgYnkgYWxs
b3dpbmcgYSBmaXhlZCBpbmRlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaW5kZW50YXRp
b24gPSBhdXRvX2luZGVudAorICAgICAgICAgICAgICAgIGxpbmVzWzBdID0gZm9ybWF0dGVkCisg
ICAgICAgICAgICAgICAgcmV0dXJuICgiXG4iICsgIiAiICogaW5kZW50YXRpb24pLmpvaW4obGlu
ZXMpCisgICAgICAgIHJldHVybiBzZWxmLl9mbXQgJSByZWNvcmQuX19kaWN0X18KKworCitkZWYg
Z2V0X29wdGlvbl9pbmkoY29uZmlnOiBDb25maWcsICpuYW1lczogc3RyKToKICAgICBmb3IgbmFt
ZSBpbiBuYW1lczoKICAgICAgICAgcmV0ID0gY29uZmlnLmdldG9wdGlvbihuYW1lKSAgIyAnZGVm
YXVsdCcgYXJnIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQKICAgICAgICAgaWYgcmV0IGlzIE5vbmU6
CkBAIC03Niw3ICsxOTYsNyBAQCBkZWYgZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAqbmFtZXMpOgog
ICAgICAgICAgICAgcmV0dXJuIHJldAogCiAKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6
CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4gTm9uZToKICAgICAiIiJB
ZGQgb3B0aW9ucyB0byBjb250cm9sIGxvZyBjYXB0dXJpbmcuIiIiCiAgICAgZ3JvdXAgPSBwYXJz
ZXIuZ2V0Z3JvdXAoImxvZ2dpbmciKQogCkBAIC04NiwyMCArMjA2LDE2IEBAIGRlZiBweXRlc3Rf
YWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAgICkKICAgICAgICAgZ3JvdXAuYWRkb3B0aW9uKG9w
dGlvbiwgZGVzdD1kZXN0LCAqKmt3YXJncykKIAotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAg
ICAiLS1uby1wcmludC1sb2dzIiwKLSAgICAgICAgZGVzdD0ibG9nX3ByaW50IiwKLSAgICAgICAg
YWN0aW9uPSJzdG9yZV9jb25zdCIsCi0gICAgICAgIGNvbnN0PUZhbHNlLAotICAgICAgICBkZWZh
dWx0PVRydWUsCi0gICAgICAgIHR5cGU9ImJvb2wiLAotICAgICAgICBoZWxwPSJkaXNhYmxlIHBy
aW50aW5nIGNhdWdodCBsb2dzIG9uIGZhaWxlZCB0ZXN0cy4iLAotICAgICkKICAgICBhZGRfb3B0
aW9uX2luaSgKICAgICAgICAgIi0tbG9nLWxldmVsIiwKICAgICAgICAgZGVzdD0ibG9nX2xldmVs
IiwKICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICBoZWxwPSJsb2dnaW5nIGxldmVsIHVz
ZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlIiwKKyAgICAgICAgbWV0YXZhcj0iTEVWRUwiLAorICAg
ICAgICBoZWxwPSgKKyAgICAgICAgICAgICJsZXZlbCBvZiBtZXNzYWdlcyB0byBjYXRjaC9kaXNw
bGF5LlxuIgorICAgICAgICAgICAgIk5vdCBzZXQgYnkgZGVmYXVsdCwgc28gaXQgZGVwZW5kcyBv
biB0aGUgcm9vdC9wYXJlbnQgbG9nIGhhbmRsZXIncyIKKyAgICAgICAgICAgICcgZWZmZWN0aXZl
IGxldmVsLCB3aGVyZSBpdCBpcyAiV0FSTklORyIgYnkgZGVmYXVsdC4nCisgICAgICAgICksCiAg
ICAgKQogICAgIGFkZF9vcHRpb25faW5pKAogICAgICAgICAiLS1sb2ctZm9ybWF0IiwKQEAgLTE1
OCwxMTAgKzI3NCwxMjggQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAg
ZGVmYXVsdD1ERUZBVUxUX0xPR19EQVRFX0ZPUk1BVCwKICAgICAgICAgaGVscD0ibG9nIGRhdGUg
Zm9ybWF0IGFzIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlLiIsCiAgICAgKQorICAgIGFkZF9v
cHRpb25faW5pKAorICAgICAgICAiLS1sb2ctYXV0by1pbmRlbnQiLAorICAgICAgICBkZXN0PSJs
b2dfYXV0b19pbmRlbnQiLAorICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIGhlbHA9IkF1
dG8taW5kZW50IG11bHRpbGluZSBtZXNzYWdlcyBwYXNzZWQgdG8gdGhlIGxvZ2dpbmcgbW9kdWxl
LiBBY2NlcHRzIHRydWV8b24sIGZhbHNlfG9mZiBvciBhbiBpbnRlZ2VyLiIsCisgICAgKQorCiAK
K19IYW5kbGVyVHlwZSA9IFR5cGVWYXIoIl9IYW5kbGVyVHlwZSIsIGJvdW5kPWxvZ2dpbmcuSGFu
ZGxlcikKIAotQGNvbnRleHRtYW5hZ2VyCi1kZWYgY2F0Y2hpbmdfbG9ncyhoYW5kbGVyLCBmb3Jt
YXR0ZXI9Tm9uZSwgbGV2ZWw9Tm9uZSk6CisKKyMgTm90IHVzaW5nIEBjb250ZXh0bWFuYWdlciBm
b3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KK2NsYXNzIGNhdGNoaW5nX2xvZ3M6CiAgICAgIiIiQ29u
dGV4dCBtYW5hZ2VyIHRoYXQgcHJlcGFyZXMgdGhlIHdob2xlIGxvZ2dpbmcgbWFjaGluZXJ5IHBy
b3Blcmx5LiIiIgotICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotCi0gICAg
aWYgZm9ybWF0dGVyIGlzIG5vdCBOb25lOgotICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihm
b3JtYXR0ZXIpCi0gICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6Ci0gICAgICAgIGhhbmRsZXIuc2V0
TGV2ZWwobGV2ZWwpCi0KLSAgICAjIEFkZGluZyB0aGUgc2FtZSBoYW5kbGVyIHR3aWNlIHdvdWxk
IGNvbmZ1c2UgbG9nZ2luZyBzeXN0ZW0uCi0gICAgIyBKdXN0IGRvbid0IGRvIHRoYXQuCi0gICAg
YWRkX25ld19oYW5kbGVyID0gaGFuZGxlciBub3QgaW4gcm9vdF9sb2dnZXIuaGFuZGxlcnMKLQot
ICAgIGlmIGFkZF9uZXdfaGFuZGxlcjoKLSAgICAgICAgcm9vdF9sb2dnZXIuYWRkSGFuZGxlciho
YW5kbGVyKQotICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgotICAgICAgICBvcmlnX2xldmVsID0g
cm9vdF9sb2dnZXIubGV2ZWwKLSAgICAgICAgcm9vdF9sb2dnZXIuc2V0TGV2ZWwobWluKG9yaWdf
bGV2ZWwsIGxldmVsKSkKLSAgICB0cnk6Ci0gICAgICAgIHlpZWxkIGhhbmRsZXIKLSAgICBmaW5h
bGx5OgotICAgICAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJvb3RfbG9n
Z2VyLnNldExldmVsKG9yaWdfbGV2ZWwpCi0gICAgICAgIGlmIGFkZF9uZXdfaGFuZGxlcjoKLSAg
ICAgICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKworICAgIF9fc2xv
dHNfXyA9ICgiaGFuZGxlciIsICJsZXZlbCIsICJvcmlnX2xldmVsIikKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBoYW5kbGVyOiBfSGFuZGxlclR5cGUsIGxldmVsOiBPcHRpb25hbFtpbnRdID0g
Tm9uZSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICBz
ZWxmLmxldmVsID0gbGV2ZWwKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJv
b3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICBpZiBzZWxmLmxldmVsIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5oYW5kbGVyLnNldExldmVsKHNlbGYubGV2ZWwp
CisgICAgICAgIHJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5oYW5kbGVyKQorICAgICAgICBp
ZiBzZWxmLmxldmVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5vcmlnX2xldmVsID0g
cm9vdF9sb2dnZXIubGV2ZWwKKyAgICAgICAgICAgIHJvb3RfbG9nZ2VyLnNldExldmVsKG1pbihz
ZWxmLm9yaWdfbGV2ZWwsIHNlbGYubGV2ZWwpKQorICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVy
CisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAg
ICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICBpZiBzZWxmLmxl
dmVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcm9vdF9sb2dnZXIuc2V0TGV2ZWwoc2VsZi5v
cmlnX2xldmVsKQorICAgICAgICByb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuaGFuZGxl
cikKIAogCiBjbGFzcyBMb2dDYXB0dXJlSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgog
ICAgICIiIkEgbG9nZ2luZyBoYW5kbGVyIHRoYXQgc3RvcmVzIGxvZyByZWNvcmRzIGFuZCB0aGUg
bG9nIHRleHQuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICIiIkNyZWF0
ZXMgYSBuZXcgbG9nIGhhbmRsZXIuIiIiCi0gICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlci5f
X2luaXRfXyhzZWxmLCBweS5pby5UZXh0SU8oKSkKLSAgICAgICAgc2VsZi5yZWNvcmRzID0gW10K
KyAgICBzdHJlYW0gPSBOb25lICAjIHR5cGU6IFN0cmluZ0lPCiAKLSAgICBkZWYgZW1pdChzZWxm
LCByZWNvcmQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJD
cmVhdGUgYSBuZXcgbG9nIGhhbmRsZXIuIiIiCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oU3Ry
aW5nSU8oKSkKKyAgICAgICAgc2VsZi5yZWNvcmRzID0gW10gICMgdHlwZTogTGlzdFtsb2dnaW5n
LkxvZ1JlY29yZF0KKworICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZDogbG9nZ2luZy5Mb2dSZWNv
cmQpIC0+IE5vbmU6CiAgICAgICAgICIiIktlZXAgdGhlIGxvZyByZWNvcmRzIGluIGEgbGlzdCBp
biBhZGRpdGlvbiB0byB0aGUgbG9nIHRleHQuIiIiCiAgICAgICAgIHNlbGYucmVjb3Jkcy5hcHBl
bmQocmVjb3JkKQotICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIuZW1pdChzZWxmLCByZWNv
cmQpCisgICAgICAgIHN1cGVyKCkuZW1pdChyZWNvcmQpCiAKLSAgICBkZWYgcmVzZXQoc2VsZik6
CisgICAgZGVmIHJlc2V0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYucmVjb3JkcyA9IFtd
Ci0gICAgICAgIHNlbGYuc3RyZWFtID0gcHkuaW8uVGV4dElPKCkKKyAgICAgICAgc2VsZi5zdHJl
YW0gPSBTdHJpbmdJTygpCisKKyAgICBkZWYgaGFuZGxlRXJyb3Ioc2VsZiwgcmVjb3JkOiBsb2dn
aW5nLkxvZ1JlY29yZCkgLT4gTm9uZToKKyAgICAgICAgaWYgbG9nZ2luZy5yYWlzZUV4Y2VwdGlv
bnM6CisgICAgICAgICAgICAjIEZhaWwgdGhlIHRlc3QgaWYgdGhlIGxvZyBtZXNzYWdlIGlzIGJh
ZCAoZW1pdCBmYWlsZWQpLgorICAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiBs
b2dnaW5nIGlzIHRvIHByaW50ICJMb2dnaW5nIGVycm9yIgorICAgICAgICAgICAgIyB0byBzdGRl
cnIgd2l0aCB0aGUgY2FsbCBzdGFjayBhbmQgc29tZSBleHRyYSBkZXRhaWxzLgorICAgICAgICAg
ICAgIyBweXRlc3Qgd2FudHMgdG8gbWFrZSBzdWNoIG1pc3Rha2VzIHZpc2libGUgZHVyaW5nIHRl
c3RpbmcuCisgICAgICAgICAgICByYWlzZQogCiAKLWNsYXNzIExvZ0NhcHR1cmVGaXh0dXJlKG9i
amVjdCk6CitAZmluYWwKK2NsYXNzIExvZ0NhcHR1cmVGaXh0dXJlOgogICAgICIiIlByb3ZpZGVz
IGFjY2VzcyBhbmQgY29udHJvbCBvZiBsb2cgY2FwdHVyaW5nLiIiIgogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IGZ1bmNhcmcuIiIiCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW06IG5vZGVzLk5vZGUpIC0+IE5vbmU6CiAgICAgICAg
IHNlbGYuX2l0ZW0gPSBpdGVtCi0gICAgICAgIHNlbGYuX2luaXRpYWxfbG9nX2xldmVscyA9IHt9
ICAjIHR5cGU6IERpY3Rbc3RyLCBpbnRdICMgZGljdCBvZiBsb2cgbmFtZSAtPiBsb2cgbGV2ZWwK
KyAgICAgICAgc2VsZi5faW5pdGlhbF9oYW5kbGVyX2xldmVsID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtpbnRdCisgICAgICAgICMgRGljdCBvZiBsb2cgbmFtZSAtPiBsb2cgbGV2ZWwuCisgICAg
ICAgIHNlbGYuX2luaXRpYWxfbG9nZ2VyX2xldmVscyA9IHt9ICAjIHR5cGU6IERpY3RbT3B0aW9u
YWxbc3RyXSwgaW50XQogCi0gICAgZGVmIF9maW5hbGl6ZShzZWxmKToKLSAgICAgICAgIiIiRmlu
YWxpemVzIHRoZSBmaXh0dXJlLgorICAgIGRlZiBfZmluYWxpemUoc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgIiIiRmluYWxpemUgdGhlIGZpeHR1cmUuCiAKICAgICAgICAgVGhpcyByZXN0b3JlcyB0
aGUgbG9nIGxldmVscyBjaGFuZ2VkIGJ5IDptZXRoOmBzZXRfbGV2ZWxgLgogICAgICAgICAiIiIK
LSAgICAgICAgIyByZXN0b3JlIGxvZyBsZXZlbHMKLSAgICAgICAgZm9yIGxvZ2dlcl9uYW1lLCBs
ZXZlbCBpbiBzZWxmLl9pbml0aWFsX2xvZ19sZXZlbHMuaXRlbXMoKToKKyAgICAgICAgIyBSZXN0
b3JlIGxvZyBsZXZlbHMuCisgICAgICAgIGlmIHNlbGYuX2luaXRpYWxfaGFuZGxlcl9sZXZlbCBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci5zZXRMZXZlbChzZWxmLl9pbml0
aWFsX2hhbmRsZXJfbGV2ZWwpCisgICAgICAgIGZvciBsb2dnZXJfbmFtZSwgbGV2ZWwgaW4gc2Vs
Zi5faW5pdGlhbF9sb2dnZXJfbGV2ZWxzLml0ZW1zKCk6CiAgICAgICAgICAgICBsb2dnZXIgPSBs
b2dnaW5nLmdldExvZ2dlcihsb2dnZXJfbmFtZSkKICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZl
bChsZXZlbCkKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoYW5kbGVyKHNlbGYpOgotICAgICAg
ICAiIiIKKyAgICBkZWYgaGFuZGxlcihzZWxmKSAtPiBMb2dDYXB0dXJlSGFuZGxlcjoKKyAgICAg
ICAgIiIiR2V0IHRoZSBsb2dnaW5nIGhhbmRsZXIgdXNlZCBieSB0aGUgZml4dHVyZS4KKwogICAg
ICAgICA6cnR5cGU6IExvZ0NhcHR1cmVIYW5kbGVyCiAgICAgICAgICIiIgotICAgICAgICByZXR1
cm4gc2VsZi5faXRlbS5jYXRjaF9sb2dfaGFuZGxlcgorICAgICAgICByZXR1cm4gc2VsZi5faXRl
bS5fc3RvcmVbY2FwbG9nX2hhbmRsZXJfa2V5XQogCi0gICAgZGVmIGdldF9yZWNvcmRzKHNlbGYs
IHdoZW4pOgotICAgICAgICAiIiIKLSAgICAgICAgR2V0IHRoZSBsb2dnaW5nIHJlY29yZHMgZm9y
IG9uZSBvZiB0aGUgcG9zc2libGUgdGVzdCBwaGFzZXMuCisgICAgZGVmIGdldF9yZWNvcmRzKHNl
bGYsIHdoZW46IHN0cikgLT4gTGlzdFtsb2dnaW5nLkxvZ1JlY29yZF06CisgICAgICAgICIiIkdl
dCB0aGUgbG9nZ2luZyByZWNvcmRzIGZvciBvbmUgb2YgdGhlIHBvc3NpYmxlIHRlc3QgcGhhc2Vz
LgogCiAgICAgICAgIDpwYXJhbSBzdHIgd2hlbjoKICAgICAgICAgICAgIFdoaWNoIHRlc3QgcGhh
c2UgdG8gb2J0YWluIHRoZSByZWNvcmRzIGZyb20uIFZhbGlkIHZhbHVlcyBhcmU6ICJzZXR1cCIs
ICJjYWxsIiBhbmQgInRlYXJkb3duIi4KIAorICAgICAgICA6cmV0dXJuczogVGhlIGxpc3Qgb2Yg
Y2FwdHVyZWQgcmVjb3JkcyBhdCB0aGUgZ2l2ZW4gc3RhZ2UuCiAgICAgICAgIDpydHlwZTogTGlz
dFtsb2dnaW5nLkxvZ1JlY29yZF0KLSAgICAgICAgOnJldHVybjogdGhlIGxpc3Qgb2YgY2FwdHVy
ZWQgcmVjb3JkcyBhdCB0aGUgZ2l2ZW4gc3RhZ2UKIAogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6
OiAzLjQKICAgICAgICAgIiIiCi0gICAgICAgIGhhbmRsZXIgPSBzZWxmLl9pdGVtLmNhdGNoX2xv
Z19oYW5kbGVycy5nZXQod2hlbikKLSAgICAgICAgaWYgaGFuZGxlcjoKLSAgICAgICAgICAgIHJl
dHVybiBoYW5kbGVyLnJlY29yZHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBb
XQorICAgICAgICByZXR1cm4gc2VsZi5faXRlbS5fc3RvcmVbY2FwbG9nX3JlY29yZHNfa2V5XS5n
ZXQod2hlbiwgW10pCiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgdGV4dChzZWxmKToKLSAgICAg
ICAgIiIiUmV0dXJucyB0aGUgbG9nIHRleHQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmhhbmRs
ZXIuc3RyZWFtLmdldHZhbHVlKCkKKyAgICBkZWYgdGV4dChzZWxmKSAtPiBzdHI6CisgICAgICAg
ICIiIlRoZSBmb3JtYXR0ZWQgbG9nIHRleHQuIiIiCisgICAgICAgIHJldHVybiBfcmVtb3ZlX2Fu
c2lfZXNjYXBlX3NlcXVlbmNlcyhzZWxmLmhhbmRsZXIuc3RyZWFtLmdldHZhbHVlKCkpCiAKICAg
ICBAcHJvcGVydHkKLSAgICBkZWYgcmVjb3JkcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0
aGUgbGlzdCBvZiBsb2cgcmVjb3Jkcy4iIiIKKyAgICBkZWYgcmVjb3JkcyhzZWxmKSAtPiBMaXN0
W2xvZ2dpbmcuTG9nUmVjb3JkXToKKyAgICAgICAgIiIiVGhlIGxpc3Qgb2YgbG9nIHJlY29yZHMu
IiIiCiAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZXIucmVjb3JkcwogCiAgICAgQHByb3BlcnR5
Ci0gICAgZGVmIHJlY29yZF90dXBsZXMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBsaXN0
IG9mIGEgc3RyaXBlZCBkb3duIHZlcnNpb24gb2YgbG9nIHJlY29yZHMgaW50ZW5kZWQKKyAgICBk
ZWYgcmVjb3JkX3R1cGxlcyhzZWxmKSAtPiBMaXN0W1R1cGxlW3N0ciwgaW50LCBzdHJdXToKKyAg
ICAgICAgIiIiQSBsaXN0IG9mIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGxvZyByZWNvcmRz
IGludGVuZGVkCiAgICAgICAgIGZvciB1c2UgaW4gYXNzZXJ0aW9uIGNvbXBhcmlzb24uCiAKICAg
ICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgdHVwbGUgaXM6CkBAIC0yNzAsNTAgKzQwNCw3NyBAQCBj
bGFzcyBMb2dDYXB0dXJlRml4dHVyZShvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgcmV0
dXJuIFsoci5uYW1lLCByLmxldmVsbm8sIHIuZ2V0TWVzc2FnZSgpKSBmb3IgciBpbiBzZWxmLnJl
Y29yZHNdCiAKLSAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgQHByb3BlcnR5CisgICAgZGVmIG1l
c3NhZ2VzKHNlbGYpIC0+IExpc3Rbc3RyXToKKyAgICAgICAgIiIiQSBsaXN0IG9mIGZvcm1hdC1p
bnRlcnBvbGF0ZWQgbG9nIG1lc3NhZ2VzLgorCisgICAgICAgIFVubGlrZSAncmVjb3JkcycsIHdo
aWNoIGNvbnRhaW5zIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBwYXJhbWV0ZXJzIGZvcgorICAgICAg
ICBpbnRlcnBvbGF0aW9uLCBsb2cgbWVzc2FnZXMgaW4gdGhpcyBsaXN0IGFyZSBhbGwgaW50ZXJw
b2xhdGVkLgorCisgICAgICAgIFVubGlrZSAndGV4dCcsIHdoaWNoIGNvbnRhaW5zIHRoZSBvdXRw
dXQgZnJvbSB0aGUgaGFuZGxlciwgbG9nCisgICAgICAgIG1lc3NhZ2VzIGluIHRoaXMgbGlzdCBh
cmUgdW5hZG9ybmVkIHdpdGggbGV2ZWxzLCB0aW1lc3RhbXBzLCBldGMsCisgICAgICAgIG1ha2lu
ZyBleGFjdCBjb21wYXJpc29ucyBtb3JlIHJlbGlhYmxlLgorCisgICAgICAgIE5vdGUgdGhhdCB0
cmFjZWJhY2sgb3Igc3RhY2sgaW5mbyAoZnJvbSA6ZnVuYzpgbG9nZ2luZy5leGNlcHRpb25gIG9y
CisgICAgICAgIHRoZSBgZXhjX2luZm9gIG9yIGBzdGFja19pbmZvYCBhcmd1bWVudHMgdG8gdGhl
IGxvZ2dpbmcgZnVuY3Rpb25zKSBpcworICAgICAgICBub3QgaW5jbHVkZWQsIGFzIHRoaXMgaXMg
YWRkZWQgYnkgdGhlIGZvcm1hdHRlciBpbiB0aGUgaGFuZGxlci4KKworICAgICAgICAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjcKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBbci5nZXRNZXNzYWdl
KCkgZm9yIHIgaW4gc2VsZi5yZWNvcmRzXQorCisgICAgZGVmIGNsZWFyKHNlbGYpIC0+IE5vbmU6
CiAgICAgICAgICIiIlJlc2V0IHRoZSBsaXN0IG9mIGxvZyByZWNvcmRzIGFuZCB0aGUgY2FwdHVy
ZWQgbG9nIHRleHQuIiIiCiAgICAgICAgIHNlbGYuaGFuZGxlci5yZXNldCgpCiAKLSAgICBkZWYg
c2V0X2xldmVsKHNlbGYsIGxldmVsLCBsb2dnZXI9Tm9uZSk6Ci0gICAgICAgICIiIlNldHMgdGhl
IGxldmVsIGZvciBjYXB0dXJpbmcgb2YgbG9ncy4gVGhlIGxldmVsIHdpbGwgYmUgcmVzdG9yZWQg
dG8gaXRzIHByZXZpb3VzIHZhbHVlIGF0IHRoZSBlbmQgb2YKLSAgICAgICAgdGhlIHRlc3QuCi0K
LSAgICAgICAgOnBhcmFtIGludCBsZXZlbDogdGhlIGxvZ2dlciB0byBsZXZlbC4KLSAgICAgICAg
OnBhcmFtIHN0ciBsb2dnZXI6IHRoZSBsb2dnZXIgdG8gdXBkYXRlIHRoZSBsZXZlbC4gSWYgbm90
IGdpdmVuLCB0aGUgcm9vdCBsb2dnZXIgbGV2ZWwgaXMgdXBkYXRlZC4KKyAgICBkZWYgc2V0X2xl
dmVsKHNlbGYsIGxldmVsOiBVbmlvbltpbnQsIHN0cl0sIGxvZ2dlcjogT3B0aW9uYWxbc3RyXSA9
IE5vbmUpIC0+IE5vbmU6CisgICAgICAgICIiIlNldCB0aGUgbGV2ZWwgb2YgYSBsb2dnZXIgZm9y
IHRoZSBkdXJhdGlvbiBvZiBhIHRlc3QuCiAKICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAz
LjQKLSAgICAgICAgICAgIFRoZSBsZXZlbHMgb2YgdGhlIGxvZ2dlcnMgY2hhbmdlZCBieSB0aGlz
IGZ1bmN0aW9uIHdpbGwgYmUgcmVzdG9yZWQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMgYXQgdGhl
Ci0gICAgICAgICAgICBlbmQgb2YgdGhlIHRlc3QuCisgICAgICAgICAgICBUaGUgbGV2ZWxzIG9m
IHRoZSBsb2dnZXJzIGNoYW5nZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIGJlCisgICAgICAgICAg
ICByZXN0b3JlZCB0byB0aGVpciBpbml0aWFsIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0
LgorCisgICAgICAgIDpwYXJhbSBpbnQgbGV2ZWw6IFRoZSBsZXZlbC4KKyAgICAgICAgOnBhcmFt
IHN0ciBsb2dnZXI6IFRoZSBsb2dnZXIgdG8gdXBkYXRlLiBJZiBub3QgZ2l2ZW4sIHRoZSByb290
IGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGxvZ2dlcl9uYW1lID0gbG9nZ2VyCi0gICAg
ICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcl9uYW1lKQotICAgICAgICAjIHNh
dmUgdGhlIG9yaWdpbmFsIGxvZy1sZXZlbCB0byByZXN0b3JlIGl0IGR1cmluZyB0ZWFyZG93bgot
ICAgICAgICBzZWxmLl9pbml0aWFsX2xvZ19sZXZlbHMuc2V0ZGVmYXVsdChsb2dnZXJfbmFtZSwg
bG9nZ2VyLmxldmVsKQotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCisgICAgICAgIGxv
Z2dlcl9vYmogPSBsb2dnaW5nLmdldExvZ2dlcihsb2dnZXIpCisgICAgICAgICMgU2F2ZSB0aGUg
b3JpZ2luYWwgbG9nLWxldmVsIHRvIHJlc3RvcmUgaXQgZHVyaW5nIHRlYXJkb3duLgorICAgICAg
ICBzZWxmLl9pbml0aWFsX2xvZ2dlcl9sZXZlbHMuc2V0ZGVmYXVsdChsb2dnZXIsIGxvZ2dlcl9v
YmoubGV2ZWwpCisgICAgICAgIGxvZ2dlcl9vYmouc2V0TGV2ZWwobGV2ZWwpCisgICAgICAgIGlm
IHNlbGYuX2luaXRpYWxfaGFuZGxlcl9sZXZlbCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5f
aW5pdGlhbF9oYW5kbGVyX2xldmVsID0gc2VsZi5oYW5kbGVyLmxldmVsCisgICAgICAgIHNlbGYu
aGFuZGxlci5zZXRMZXZlbChsZXZlbCkKIAogICAgIEBjb250ZXh0bWFuYWdlcgotICAgIGRlZiBh
dF9sZXZlbChzZWxmLCBsZXZlbCwgbG9nZ2VyPU5vbmUpOgotICAgICAgICAiIiJDb250ZXh0IG1h
bmFnZXIgdGhhdCBzZXRzIHRoZSBsZXZlbCBmb3IgY2FwdHVyaW5nIG9mIGxvZ3MuIEFmdGVyIHRo
ZSBlbmQgb2YgdGhlICd3aXRoJyBzdGF0ZW1lbnQgdGhlCi0gICAgICAgIGxldmVsIGlzIHJlc3Rv
cmVkIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZS4KLQotICAgICAgICA6cGFyYW0gaW50IGxldmVsOiB0
aGUgbG9nZ2VyIHRvIGxldmVsLgotICAgICAgICA6cGFyYW0gc3RyIGxvZ2dlcjogdGhlIGxvZ2dl
ciB0byB1cGRhdGUgdGhlIGxldmVsLiBJZiBub3QgZ2l2ZW4sIHRoZSByb290IGxvZ2dlciBsZXZl
bCBpcyB1cGRhdGVkLgorICAgIGRlZiBhdF9sZXZlbCgKKyAgICAgICAgc2VsZiwgbGV2ZWw6IGlu
dCwgbG9nZ2VyOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgICkgLT4gR2VuZXJhdG9yW05vbmUs
IE5vbmUsIE5vbmVdOgorICAgICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCBzZXRzIHRoZSBs
ZXZlbCBmb3IgY2FwdHVyaW5nIG9mIGxvZ3MuIEFmdGVyCisgICAgICAgIHRoZSBlbmQgb2YgdGhl
ICd3aXRoJyBzdGF0ZW1lbnQgdGhlIGxldmVsIGlzIHJlc3RvcmVkIHRvIGl0cyBvcmlnaW5hbAor
ICAgICAgICB2YWx1ZS4KKworICAgICAgICA6cGFyYW0gaW50IGxldmVsOiBUaGUgbGV2ZWwuCisg
ICAgICAgIDpwYXJhbSBzdHIgbG9nZ2VyOiBUaGUgbG9nZ2VyIHRvIHVwZGF0ZS4gSWYgbm90IGdp
dmVuLCB0aGUgcm9vdCBsb2dnZXIuCiAgICAgICAgICIiIgotICAgICAgICBsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcihsb2dnZXIpCi0gICAgICAgIG9yaWdfbGV2ZWwgPSBsb2dnZXIubGV2ZWwK
LSAgICAgICAgbG9nZ2VyLnNldExldmVsKGxldmVsKQorICAgICAgICBsb2dnZXJfb2JqID0gbG9n
Z2luZy5nZXRMb2dnZXIobG9nZ2VyKQorICAgICAgICBvcmlnX2xldmVsID0gbG9nZ2VyX29iai5s
ZXZlbAorICAgICAgICBsb2dnZXJfb2JqLnNldExldmVsKGxldmVsKQorICAgICAgICBoYW5kbGVy
X29yaWdfbGV2ZWwgPSBzZWxmLmhhbmRsZXIubGV2ZWwKKyAgICAgICAgc2VsZi5oYW5kbGVyLnNl
dExldmVsKGxldmVsKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB5aWVsZAogICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKG9yaWdfbGV2ZWwpCisgICAgICAg
ICAgICBsb2dnZXJfb2JqLnNldExldmVsKG9yaWdfbGV2ZWwpCisgICAgICAgICAgICBzZWxmLmhh
bmRsZXIuc2V0TGV2ZWwoaGFuZGxlcl9vcmlnX2xldmVsKQogCiAKIEBweXRlc3QuZml4dHVyZQot
ZGVmIGNhcGxvZyhyZXF1ZXN0KToKK2RlZiBjYXBsb2cocmVxdWVzdDogRml4dHVyZVJlcXVlc3Qp
IC0+IEdlbmVyYXRvcltMb2dDYXB0dXJlRml4dHVyZSwgTm9uZSwgTm9uZV06CiAgICAgIiIiQWNj
ZXNzIGFuZCBjb250cm9sIGxvZyBjYXB0dXJpbmcuCiAKLSAgICBDYXB0dXJlZCBsb2dzIGFyZSBh
dmFpbGFibGUgdGhyb3VnaCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6OgorICAgIENhcHR1cmVkIGxv
Z3MgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcy9tZXRob2Rz
OjoKIAorICAgICogY2FwbG9nLm1lc3NhZ2VzICAgICAgICAtPiBsaXN0IG9mIGZvcm1hdC1pbnRl
cnBvbGF0ZWQgbG9nIG1lc3NhZ2VzCiAgICAgKiBjYXBsb2cudGV4dCAgICAgICAgICAgIC0+IHN0
cmluZyBjb250YWluaW5nIGZvcm1hdHRlZCBsb2cgb3V0cHV0CiAgICAgKiBjYXBsb2cucmVjb3Jk
cyAgICAgICAgIC0+IGxpc3Qgb2YgbG9nZ2luZy5Mb2dSZWNvcmQgaW5zdGFuY2VzCiAgICAgKiBj
YXBsb2cucmVjb3JkX3R1cGxlcyAgIC0+IGxpc3Qgb2YgKGxvZ2dlcl9uYW1lLCBsZXZlbCwgbWVz
c2FnZSkgdHVwbGVzCkBAIC0zMjQsOSArNDg1LDcgQEAgZGVmIGNhcGxvZyhyZXF1ZXN0KToKICAg
ICByZXN1bHQuX2ZpbmFsaXplKCkKIAogCi1kZWYgZ2V0X2FjdHVhbF9sb2dfbGV2ZWwoY29uZmln
LCAqc2V0dGluZ19uYW1lcyk6Ci0gICAgIiIiUmV0dXJuIHRoZSBhY3R1YWwgbG9nZ2luZyBsZXZl
bC4iIiIKLQorZGVmIGdldF9sb2dfbGV2ZWxfZm9yX3NldHRpbmcoY29uZmlnOiBDb25maWcsICpz
ZXR0aW5nX25hbWVzOiBzdHIpIC0+IE9wdGlvbmFsW2ludF06CiAgICAgZm9yIHNldHRpbmdfbmFt
ZSBpbiBzZXR0aW5nX25hbWVzOgogICAgICAgICBsb2dfbGV2ZWwgPSBjb25maWcuZ2V0b3B0aW9u
KHNldHRpbmdfbmFtZSkKICAgICAgICAgaWYgbG9nX2xldmVsIGlzIE5vbmU6CkBAIC0zMzQsMjMx
ICs0OTMsMjk5IEBAIGRlZiBnZXRfYWN0dWFsX2xvZ19sZXZlbChjb25maWcsICpzZXR0aW5nX25h
bWVzKToKICAgICAgICAgaWYgbG9nX2xldmVsOgogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNl
OgotICAgICAgICByZXR1cm4KKyAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGlmIGlzaW5zdGFu
Y2UobG9nX2xldmVsLCBzaXguc3RyaW5nX3R5cGVzKToKKyAgICBpZiBpc2luc3RhbmNlKGxvZ19s
ZXZlbCwgc3RyKToKICAgICAgICAgbG9nX2xldmVsID0gbG9nX2xldmVsLnVwcGVyKCkKICAgICB0
cnk6CiAgICAgICAgIHJldHVybiBpbnQoZ2V0YXR0cihsb2dnaW5nLCBsb2dfbGV2ZWwsIGxvZ19s
ZXZlbCkpCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMg
ZToKICAgICAgICAgIyBQeXRob24gbG9nZ2luZyBkb2VzIG5vdCByZWNvZ25pc2UgdGhpcyBhcyBh
IGxvZ2dpbmcgbGV2ZWwKICAgICAgICAgcmFpc2UgcHl0ZXN0LlVzYWdlRXJyb3IoCiAgICAgICAg
ICAgICAiJ3t9JyBpcyBub3QgcmVjb2duaXplZCBhcyBhIGxvZ2dpbmcgbGV2ZWwgbmFtZSBmb3Ig
IgogICAgICAgICAgICAgIid7fScuIFBsZWFzZSBjb25zaWRlciBwYXNzaW5nIHRoZSAiCiAgICAg
ICAgICAgICAibG9nZ2luZyBsZXZlbCBudW0gaW5zdGVhZC4iLmZvcm1hdChsb2dfbGV2ZWwsIHNl
dHRpbmdfbmFtZSkKLSAgICAgICAgKQorICAgICAgICApIGZyb20gZQogCiAKLWRlZiBweXRlc3Rf
Y29uZmlndXJlKGNvbmZpZyk6CisjIHJ1biBhZnRlciB0ZXJtaW5hbHJlcG9ydGVyL2NhcHR1cmVt
YW5hZ2VyIGFyZSBjb25maWd1cmVkCitAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKK2Rl
ZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIGNvbmZpZy5w
bHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKExvZ2dpbmdQbHVnaW4oY29uZmlnKSwgImxvZ2dpbmctcGx1
Z2luIikKIAogCi1AY29udGV4dG1hbmFnZXIKLWRlZiBfZHVtbXlfY29udGV4dF9tYW5hZ2VyKCk6
Ci0gICAgeWllbGQKK2NsYXNzIExvZ2dpbmdQbHVnaW46CisgICAgIiIiQXR0YWNoZXMgdG8gdGhl
IGxvZ2dpbmcgbW9kdWxlIGFuZCBjYXB0dXJlcyBsb2cgbWVzc2FnZXMgZm9yIGVhY2ggdGVzdC4i
IiIKIAotCi1jbGFzcyBMb2dnaW5nUGx1Z2luKG9iamVjdCk6Ci0gICAgIiIiQXR0YWNoZXMgdG8g
dGhlIGxvZ2dpbmcgbW9kdWxlIGFuZCBjYXB0dXJlcyBsb2cgbWVzc2FnZXMgZm9yIGVhY2ggdGVz
dC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgotICAgICAgICAi
IiJDcmVhdGVzIGEgbmV3IHBsdWdpbiB0byBjYXB0dXJlIGxvZyBtZXNzYWdlcy4KKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CisgICAgICAgICIiIkNyZWF0
ZSBhIG5ldyBwbHVnaW4gdG8gY2FwdHVyZSBsb2cgbWVzc2FnZXMuCiAKICAgICAgICAgVGhlIGZv
cm1hdHRlciBjYW4gYmUgc2FmZWx5IHNoYXJlZCBhY3Jvc3MgYWxsIGhhbmRsZXJzIHNvCiAgICAg
ICAgIGNyZWF0ZSBhIHNpbmdsZSBvbmUgZm9yIHRoZSBlbnRpcmUgdGVzdCBzZXNzaW9uIGhlcmUu
CiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9jb25maWcgPSBjb25maWcKIAotICAgICAgICAj
IGVuYWJsZSB2ZXJib3NlIG91dHB1dCBhdXRvbWF0aWNhbGx5IGlmIGxpdmUgbG9nZ2luZyBpcyBl
bmFibGVkCi0gICAgICAgIGlmIHNlbGYuX2xvZ19jbGlfZW5hYmxlZCgpIGFuZCBub3QgY29uZmln
LmdldG9wdGlvbigidmVyYm9zZSIpOgotICAgICAgICAgICAgIyBzYW5pdHkgY2hlY2s6IHRlcm1p
bmFsIHJlcG9ydGVyIHNob3VsZCBub3QgaGF2ZSBiZWVuIGxvYWRlZCBhdCB0aGlzIHBvaW50Ci0g
ICAgICAgICAgICBhc3NlcnQgc2VsZi5fY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigi
dGVybWluYWxyZXBvcnRlciIpIGlzIE5vbmUKLSAgICAgICAgICAgIGNvbmZpZy5vcHRpb24udmVy
Ym9zZSA9IDEKLQotICAgICAgICBzZWxmLnByaW50X2xvZ3MgPSBnZXRfb3B0aW9uX2luaShjb25m
aWcsICJsb2dfcHJpbnQiKQotICAgICAgICBzZWxmLmZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0
dGVyKAorICAgICAgICAjIFJlcG9ydCBsb2dnaW5nLgorICAgICAgICBzZWxmLmZvcm1hdHRlciA9
IHNlbGYuX2NyZWF0ZV9mb3JtYXR0ZXIoCiAgICAgICAgICAgICBnZXRfb3B0aW9uX2luaShjb25m
aWcsICJsb2dfZm9ybWF0IiksCiAgICAgICAgICAgICBnZXRfb3B0aW9uX2luaShjb25maWcsICJs
b2dfZGF0ZV9mb3JtYXQiKSwKKyAgICAgICAgICAgIGdldF9vcHRpb25faW5pKGNvbmZpZywgImxv
Z19hdXRvX2luZGVudCIpLAorICAgICAgICApCisgICAgICAgIHNlbGYubG9nX2xldmVsID0gZ2V0
X2xvZ19sZXZlbF9mb3Jfc2V0dGluZyhjb25maWcsICJsb2dfbGV2ZWwiKQorICAgICAgICBzZWxm
LmNhcGxvZ19oYW5kbGVyID0gTG9nQ2FwdHVyZUhhbmRsZXIoKQorICAgICAgICBzZWxmLmNhcGxv
Z19oYW5kbGVyLnNldEZvcm1hdHRlcihzZWxmLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5yZXBv
cnRfaGFuZGxlciA9IExvZ0NhcHR1cmVIYW5kbGVyKCkKKyAgICAgICAgc2VsZi5yZXBvcnRfaGFu
ZGxlci5zZXRGb3JtYXR0ZXIoc2VsZi5mb3JtYXR0ZXIpCisKKyAgICAgICAgIyBGaWxlIGxvZ2dp
bmcuCisgICAgICAgIHNlbGYubG9nX2ZpbGVfbGV2ZWwgPSBnZXRfbG9nX2xldmVsX2Zvcl9zZXR0
aW5nKGNvbmZpZywgImxvZ19maWxlX2xldmVsIikKKyAgICAgICAgbG9nX2ZpbGUgPSBnZXRfb3B0
aW9uX2luaShjb25maWcsICJsb2dfZmlsZSIpIG9yIG9zLmRldm51bGwKKyAgICAgICAgaWYgbG9n
X2ZpbGUgIT0gb3MuZGV2bnVsbDoKKyAgICAgICAgICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGly
bmFtZShvcy5wYXRoLmFic3BhdGgobG9nX2ZpbGUpKQorICAgICAgICAgICAgaWYgbm90IG9zLnBh
dGguaXNkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJlY3Rv
cnkpCisKKyAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyID0gX0ZpbGVIYW5kbGVyKGxvZ19m
aWxlLCBtb2RlPSJ3IiwgZW5jb2Rpbmc9IlVURi04IikKKyAgICAgICAgbG9nX2ZpbGVfZm9ybWF0
ID0gZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2ZpbGVfZm9ybWF0IiwgImxvZ19mb3JtYXQi
KQorICAgICAgICBsb2dfZmlsZV9kYXRlX2Zvcm1hdCA9IGdldF9vcHRpb25faW5pKAorICAgICAg
ICAgICAgY29uZmlnLCAibG9nX2ZpbGVfZGF0ZV9mb3JtYXQiLCAibG9nX2RhdGVfZm9ybWF0Igog
ICAgICAgICApCi0gICAgICAgIHNlbGYubG9nX2xldmVsID0gZ2V0X2FjdHVhbF9sb2dfbGV2ZWwo
Y29uZmlnLCAibG9nX2xldmVsIikKIAotICAgICAgICBsb2dfZmlsZSA9IGdldF9vcHRpb25faW5p
KGNvbmZpZywgImxvZ19maWxlIikKLSAgICAgICAgaWYgbG9nX2ZpbGU6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ19maWxlX2xldmVsID0gZ2V0X2FjdHVhbF9sb2dfbGV2ZWwoY29uZmlnLCAibG9nX2Zp
bGVfbGV2ZWwiKQorICAgICAgICBsb2dfZmlsZV9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRl
cigKKyAgICAgICAgICAgIGxvZ19maWxlX2Zvcm1hdCwgZGF0ZWZtdD1sb2dfZmlsZV9kYXRlX2Zv
cm1hdAorICAgICAgICApCisgICAgICAgIHNlbGYubG9nX2ZpbGVfaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nX2ZpbGVfZm9ybWF0dGVyKQogCi0gICAgICAgICAgICBsb2dfZmlsZV9mb3JtYXQgPSBn
ZXRfb3B0aW9uX2luaShjb25maWcsICJsb2dfZmlsZV9mb3JtYXQiLCAibG9nX2Zvcm1hdCIpCi0g
ICAgICAgICAgICBsb2dfZmlsZV9kYXRlX2Zvcm1hdCA9IGdldF9vcHRpb25faW5pKAotICAgICAg
ICAgICAgICAgIGNvbmZpZywgImxvZ19maWxlX2RhdGVfZm9ybWF0IiwgImxvZ19kYXRlX2Zvcm1h
dCIKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgICMgRWFjaCBweXRlc3QgcnVudGVzdHMgc2Vz
c2lvbiB3aWxsIHdyaXRlIHRvIGEgY2xlYW4gbG9nZmlsZQotICAgICAgICAgICAgc2VsZi5sb2df
ZmlsZV9oYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcihsb2dfZmlsZSwgbW9kZT0idyIpCi0g
ICAgICAgICAgICBsb2dfZmlsZV9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigKLSAgICAg
ICAgICAgICAgICBsb2dfZmlsZV9mb3JtYXQsIGRhdGVmbXQ9bG9nX2ZpbGVfZGF0ZV9mb3JtYXQK
LSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYubG9nX2ZpbGVfaGFuZGxlci5zZXRGb3Jt
YXR0ZXIobG9nX2ZpbGVfZm9ybWF0dGVyKQorICAgICAgICAjIENMSS9saXZlIGxvZ2dpbmcuCisg
ICAgICAgIHNlbGYubG9nX2NsaV9sZXZlbCA9IGdldF9sb2dfbGV2ZWxfZm9yX3NldHRpbmcoCisg
ICAgICAgICAgICBjb25maWcsICJsb2dfY2xpX2xldmVsIiwgImxvZ19sZXZlbCIKKyAgICAgICAg
KQorICAgICAgICBpZiBzZWxmLl9sb2dfY2xpX2VuYWJsZWQoKToKKyAgICAgICAgICAgIHRlcm1p
bmFsX3JlcG9ydGVyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigidGVybWluYWxy
ZXBvcnRlciIpCisgICAgICAgICAgICBjYXB0dXJlX21hbmFnZXIgPSBjb25maWcucGx1Z2lubWFu
YWdlci5nZXRfcGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCisgICAgICAgICAgICAjIGlmIGNhcHR1
cmVtYW5hZ2VyIHBsdWdpbiBpcyBkaXNhYmxlZCwgbGl2ZSBsb2dnaW5nIHN0aWxsIHdvcmtzLgor
ICAgICAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIgPSBfTGl2ZUxvZ2dpbmdTdHJlYW1IYW5k
bGVyKAorICAgICAgICAgICAgICAgIHRlcm1pbmFsX3JlcG9ydGVyLCBjYXB0dXJlX21hbmFnZXIK
KyAgICAgICAgICAgICkgICMgdHlwZTogVW5pb25bX0xpdmVMb2dnaW5nU3RyZWFtSGFuZGxlciwg
X0xpdmVMb2dnaW5nTnVsbEhhbmRsZXJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
LmxvZ19jbGlfaGFuZGxlciA9IF9MaXZlTG9nZ2luZ051bGxIYW5kbGVyKCkKKyAgICAgICAgbG9n
X2NsaV9mb3JtYXR0ZXIgPSBzZWxmLl9jcmVhdGVfZm9ybWF0dGVyKAorICAgICAgICAgICAgZ2V0
X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2NsaV9mb3JtYXQiLCAibG9nX2Zvcm1hdCIpLAorICAg
ICAgICAgICAgZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2NsaV9kYXRlX2Zvcm1hdCIsICJs
b2dfZGF0ZV9mb3JtYXQiKSwKKyAgICAgICAgICAgIGdldF9vcHRpb25faW5pKGNvbmZpZywgImxv
Z19hdXRvX2luZGVudCIpLAorICAgICAgICApCisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVy
LnNldEZvcm1hdHRlcihsb2dfY2xpX2Zvcm1hdHRlcikKKworICAgIGRlZiBfY3JlYXRlX2Zvcm1h
dHRlcihzZWxmLCBsb2dfZm9ybWF0LCBsb2dfZGF0ZV9mb3JtYXQsIGF1dG9faW5kZW50KToKKyAg
ICAgICAgIyBDb2xvciBvcHRpb24gZG9lc24ndCBleGlzdCBpZiB0ZXJtaW5hbCBwbHVnaW4gaXMg
ZGlzYWJsZWQuCisgICAgICAgIGNvbG9yID0gZ2V0YXR0cihzZWxmLl9jb25maWcub3B0aW9uLCAi
Y29sb3IiLCAibm8iKQorICAgICAgICBpZiBjb2xvciAhPSAibm8iIGFuZCBDb2xvcmVkTGV2ZWxG
b3JtYXR0ZXIuTEVWRUxOQU1FX0ZNVF9SRUdFWC5zZWFyY2goCisgICAgICAgICAgICBsb2dfZm9y
bWF0CisgICAgICAgICk6CisgICAgICAgICAgICBmb3JtYXR0ZXIgPSBDb2xvcmVkTGV2ZWxGb3Jt
YXR0ZXIoCisgICAgICAgICAgICAgICAgY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihzZWxmLl9jb25m
aWcpLCBsb2dfZm9ybWF0LCBsb2dfZGF0ZV9mb3JtYXQKKyAgICAgICAgICAgICkgICMgdHlwZTog
bG9nZ2luZy5Gb3JtYXR0ZXIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubG9nX2Zp
bGVfaGFuZGxlciA9IE5vbmUKKyAgICAgICAgICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0
dGVyKGxvZ19mb3JtYXQsIGxvZ19kYXRlX2Zvcm1hdCkKIAotICAgICAgICAjIGluaXRpYWxpemVk
IGR1cmluZyBweXRlc3RfcnVudGVzdGxvb3AKLSAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIg
PSBOb25lCisgICAgICAgIGZvcm1hdHRlci5fc3R5bGUgPSBQZXJjZW50U3R5bGVNdWx0aWxpbmUo
CisgICAgICAgICAgICBmb3JtYXR0ZXIuX3N0eWxlLl9mbXQsIGF1dG9faW5kZW50PWF1dG9faW5k
ZW50CisgICAgICAgICkKIAotICAgIGRlZiBfbG9nX2NsaV9lbmFibGVkKHNlbGYpOgotICAgICAg
ICAiIiJSZXR1cm4gVHJ1ZSBpZiBsb2dfY2xpIHNob3VsZCBiZSBjb25zaWRlcmVkIGVuYWJsZWQs
IGVpdGhlciBleHBsaWNpdGx5Ci0gICAgICAgIG9yIGJlY2F1c2UgLS1sb2ctY2xpLWxldmVsIHdh
cyBnaXZlbiBpbiB0aGUgY29tbWFuZC1saW5lLgorICAgICAgICByZXR1cm4gZm9ybWF0dGVyCisK
KyAgICBkZWYgc2V0X2xvZ19wYXRoKHNlbGYsIGZuYW1lOiBzdHIpIC0+IE5vbmU6CisgICAgICAg
ICIiIlNldCB0aGUgZmlsZW5hbWUgcGFyYW1ldGVyIGZvciBMb2dnaW5nLkZpbGVIYW5kbGVyKCku
CisKKyAgICAgICAgQ3JlYXRlcyBwYXJlbnQgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGV4aXN0
LgorCisgICAgICAgIC4uIHdhcm5pbmc6OgorICAgICAgICAgICAgVGhpcyBpcyBhbiBleHBlcmlt
ZW50YWwgQVBJLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZy5nZXRv
cHRpb24oCi0gICAgICAgICAgICAiLS1sb2ctY2xpLWxldmVsIgotICAgICAgICApIGlzIG5vdCBO
b25lIG9yIHNlbGYuX2NvbmZpZy5nZXRpbmkoCi0gICAgICAgICAgICAibG9nX2NsaSIKLSAgICAg
ICAgKQorICAgICAgICBmcGF0aCA9IFBhdGgoZm5hbWUpCiAKLSAgICBAY29udGV4dG1hbmFnZXIK
LSAgICBkZWYgX3J1bnRlc3RfZm9yKHNlbGYsIGl0ZW0sIHdoZW4pOgotICAgICAgICAiIiJJbXBs
ZW1lbnRzIHRoZSBpbnRlcm5hbHMgb2YgcHl0ZXN0X3J1bnRlc3RfeHh4KCkgaG9vay4iIiIKLSAg
ICAgICAgd2l0aCBjYXRjaGluZ19sb2dzKAotICAgICAgICAgICAgTG9nQ2FwdHVyZUhhbmRsZXIo
KSwgZm9ybWF0dGVyPXNlbGYuZm9ybWF0dGVyLCBsZXZlbD1zZWxmLmxvZ19sZXZlbAotICAgICAg
ICApIGFzIGxvZ19oYW5kbGVyOgotICAgICAgICAgICAgaWYgc2VsZi5sb2dfY2xpX2hhbmRsZXI6
Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIuc2V0X3doZW4od2hlbikKLQot
ICAgICAgICAgICAgaWYgaXRlbSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHlpZWxkICAjIHJ1
biB0aGUgdGVzdAotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBpZiBub3Qg
aGFzYXR0cihpdGVtLCAiY2F0Y2hfbG9nX2hhbmRsZXJzIik6Ci0gICAgICAgICAgICAgICAgaXRl
bS5jYXRjaF9sb2dfaGFuZGxlcnMgPSB7fQotICAgICAgICAgICAgaXRlbS5jYXRjaF9sb2dfaGFu
ZGxlcnNbd2hlbl0gPSBsb2dfaGFuZGxlcgotICAgICAgICAgICAgaXRlbS5jYXRjaF9sb2dfaGFu
ZGxlciA9IGxvZ19oYW5kbGVyCisgICAgICAgIGlmIG5vdCBmcGF0aC5pc19hYnNvbHV0ZSgpOgor
ICAgICAgICAgICAgZnBhdGggPSBzZWxmLl9jb25maWcucm9vdHBhdGggLyBmcGF0aAorCisgICAg
ICAgIGlmIG5vdCBmcGF0aC5wYXJlbnQuZXhpc3RzKCk6CisgICAgICAgICAgICBmcGF0aC5wYXJl
bnQubWtkaXIoZXhpc3Rfb2s9VHJ1ZSwgcGFyZW50cz1UcnVlKQorCisgICAgICAgIHN0cmVhbSA9
IGZwYXRoLm9wZW4obW9kZT0idyIsIGVuY29kaW5nPSJVVEYtOCIpCisgICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsIDcpOgorICAgICAgICAgICAgb2xkX3N0cmVhbSA9IHNlbGYubG9n
X2ZpbGVfaGFuZGxlci5zZXRTdHJlYW0oc3RyZWFtKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgb2xkX3N0cmVhbSA9IHNlbGYubG9nX2ZpbGVfaGFuZGxlci5zdHJlYW0KKyAgICAgICAgICAg
IHNlbGYubG9nX2ZpbGVfaGFuZGxlci5hY3F1aXJlKCkKICAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICB5aWVsZCAgIyBydW4gdGVzdAorICAgICAgICAgICAgICAgIHNlbGYubG9nX2Zp
bGVfaGFuZGxlci5mbHVzaCgpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVy
LnN0cmVhbSA9IHN0cmVhbQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBk
ZWwgaXRlbS5jYXRjaF9sb2dfaGFuZGxlcgotICAgICAgICAgICAgICAgIGlmIHdoZW4gPT0gInRl
YXJkb3duIjoKLSAgICAgICAgICAgICAgICAgICAgZGVsIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXJz
CisgICAgICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyLnJlbGVhc2UoKQorICAgICAg
ICBpZiBvbGRfc3RyZWFtOgorICAgICAgICAgICAgb2xkX3N0cmVhbS5jbG9zZSgpCiAKLSAgICAg
ICAgICAgIGlmIHNlbGYucHJpbnRfbG9nczoKLSAgICAgICAgICAgICAgICAjIEFkZCBhIGNhcHR1
cmVkIGxvZyBzZWN0aW9uIHRvIHRoZSByZXBvcnQuCi0gICAgICAgICAgICAgICAgbG9nID0gbG9n
X2hhbmRsZXIuc3RyZWFtLmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIGl0ZW0u
YWRkX3JlcG9ydF9zZWN0aW9uKHdoZW4sICJsb2ciLCBsb2cpCisgICAgZGVmIF9sb2dfY2xpX2Vu
YWJsZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIGxpdmUgbG9nZ2luZyBpcyBl
bmFibGVkLiIiIgorICAgICAgICBlbmFibGVkID0gc2VsZi5fY29uZmlnLmdldG9wdGlvbigKKyAg
ICAgICAgICAgICItLWxvZy1jbGktbGV2ZWwiCisgICAgICAgICkgaXMgbm90IE5vbmUgb3Igc2Vs
Zi5fY29uZmlnLmdldGluaSgibG9nX2NsaSIpCisgICAgICAgIGlmIG5vdCBlbmFibGVkOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVy
PVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKHNlbGYsIGl0ZW0pOgotICAgICAg
ICB3aXRoIHNlbGYuX3J1bnRlc3RfZm9yKGl0ZW0sICJzZXR1cCIpOgotICAgICAgICAgICAgeWll
bGQKKyAgICAgICAgdGVybWluYWxfcmVwb3J0ZXIgPSBzZWxmLl9jb25maWcucGx1Z2lubWFuYWdl
ci5nZXRfcGx1Z2luKCJ0ZXJtaW5hbHJlcG9ydGVyIikKKyAgICAgICAgaWYgdGVybWluYWxfcmVw
b3J0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgdGVybWluYWwgcmVwb3J0ZXIgaXMgZGlzYWJs
ZWQgZS5nLiBieSBweXRlc3QteGRpc3QuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVl
LCB0cnlmaXJzdD1UcnVlKQorICAgIGRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlbGYpIC0+IEdl
bmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIu
c2V0X3doZW4oInNlc3Npb25zdGFydCIpCisKKyAgICAgICAgd2l0aCBjYXRjaGluZ19sb2dzKHNl
bGYubG9nX2NsaV9oYW5kbGVyLCBsZXZlbD1zZWxmLmxvZ19jbGlfbGV2ZWwpOgorICAgICAgICAg
ICAgd2l0aCBjYXRjaGluZ19sb2dzKHNlbGYubG9nX2ZpbGVfaGFuZGxlciwgbGV2ZWw9c2VsZi5s
b2dfZmlsZV9sZXZlbCk6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgIEBweXRlc3QuaG9v
a2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5Zmlyc3Q9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X2Nv
bGxlY3Rpb24oc2VsZikgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICBz
ZWxmLmxvZ19jbGlfaGFuZGxlci5zZXRfd2hlbigiY29sbGVjdGlvbiIpCisKKyAgICAgICAgd2l0
aCBjYXRjaGluZ19sb2dzKHNlbGYubG9nX2NsaV9oYW5kbGVyLCBsZXZlbD1zZWxmLmxvZ19jbGlf
bGV2ZWwpOgorICAgICAgICAgICAgd2l0aCBjYXRjaGluZ19sb2dzKHNlbGYubG9nX2ZpbGVfaGFu
ZGxlciwgbGV2ZWw9c2VsZi5sb2dfZmlsZV9sZXZlbCk6CisgICAgICAgICAgICAgICAgeWllbGQK
IAogICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0
X3J1bnRlc3RfY2FsbChzZWxmLCBpdGVtKToKLSAgICAgICAgd2l0aCBzZWxmLl9ydW50ZXN0X2Zv
cihpdGVtLCAiY2FsbCIpOgorICAgIGRlZiBweXRlc3RfcnVudGVzdGxvb3Aoc2VsZiwgc2Vzc2lv
bjogU2Vzc2lvbikgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICBpZiBz
ZXNzaW9uLmNvbmZpZy5vcHRpb24uY29sbGVjdG9ubHk6CiAgICAgICAgICAgICB5aWVsZAorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgc2VsZi5fbG9nX2NsaV9lbmFibGVkKCkgYW5k
IHNlbGYuX2NvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA8IDE6CisgICAgICAgICAgICAjIFRo
ZSB2ZXJib3NlIGZsYWcgaXMgbmVlZGVkIHRvIGF2b2lkIG1lc3N5IHRlc3QgcHJvZ3Jlc3Mgb3V0
cHV0LgorICAgICAgICAgICAgc2VsZi5fY29uZmlnLm9wdGlvbi52ZXJib3NlID0gMQorCisgICAg
ICAgIHdpdGggY2F0Y2hpbmdfbG9ncyhzZWxmLmxvZ19jbGlfaGFuZGxlciwgbGV2ZWw9c2VsZi5s
b2dfY2xpX2xldmVsKToKKyAgICAgICAgICAgIHdpdGggY2F0Y2hpbmdfbG9ncyhzZWxmLmxvZ19m
aWxlX2hhbmRsZXIsIGxldmVsPXNlbGYubG9nX2ZpbGVfbGV2ZWwpOgorICAgICAgICAgICAgICAg
IHlpZWxkICAjIFJ1biBhbGwgdGhlIHRlc3RzLgorCisgICAgQHB5dGVzdC5ob29raW1wbAorICAg
IGRlZiBweXRlc3RfcnVudGVzdF9sb2dzdGFydChzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxm
LmxvZ19jbGlfaGFuZGxlci5yZXNldCgpCisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyLnNl
dF93aGVuKCJzdGFydCIpCisKKyAgICBAcHl0ZXN0Lmhvb2tpbXBsCisgICAgZGVmIHB5dGVzdF9y
dW50ZXN0X2xvZ3JlcG9ydChzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmxvZ19jbGlfaGFu
ZGxlci5zZXRfd2hlbigibG9ncmVwb3J0IikKKworICAgIGRlZiBfcnVudGVzdF9mb3Ioc2VsZiwg
aXRlbTogbm9kZXMuSXRlbSwgd2hlbjogc3RyKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9u
ZV06CisgICAgICAgICIiIkltcGxlbWVudCB0aGUgaW50ZXJuYWxzIG9mIHRoZSBweXRlc3RfcnVu
dGVzdF94eHgoKSBob29rcy4iIiIKKyAgICAgICAgd2l0aCBjYXRjaGluZ19sb2dzKAorICAgICAg
ICAgICAgc2VsZi5jYXBsb2dfaGFuZGxlciwgbGV2ZWw9c2VsZi5sb2dfbGV2ZWwsCisgICAgICAg
ICkgYXMgY2FwbG9nX2hhbmRsZXIsIGNhdGNoaW5nX2xvZ3MoCisgICAgICAgICAgICBzZWxmLnJl
cG9ydF9oYW5kbGVyLCBsZXZlbD1zZWxmLmxvZ19sZXZlbCwKKyAgICAgICAgKSBhcyByZXBvcnRf
aGFuZGxlcjoKKyAgICAgICAgICAgIGNhcGxvZ19oYW5kbGVyLnJlc2V0KCkKKyAgICAgICAgICAg
IHJlcG9ydF9oYW5kbGVyLnJlc2V0KCkKKyAgICAgICAgICAgIGl0ZW0uX3N0b3JlW2NhcGxvZ19y
ZWNvcmRzX2tleV1bd2hlbl0gPSBjYXBsb2dfaGFuZGxlci5yZWNvcmRzCisgICAgICAgICAgICBp
dGVtLl9zdG9yZVtjYXBsb2dfaGFuZGxlcl9rZXldID0gY2FwbG9nX2hhbmRsZXIKIAotICAgIEBw
eXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rf
dGVhcmRvd24oc2VsZiwgaXRlbSk6Ci0gICAgICAgIHdpdGggc2VsZi5fcnVudGVzdF9mb3IoaXRl
bSwgInRlYXJkb3duIik6CiAgICAgICAgICAgICB5aWVsZAogCisgICAgICAgICAgICBsb2cgPSBy
ZXBvcnRfaGFuZGxlci5zdHJlYW0uZ2V0dmFsdWUoKS5zdHJpcCgpCisgICAgICAgICAgICBpdGVt
LmFkZF9yZXBvcnRfc2VjdGlvbih3aGVuLCAibG9nIiwgbG9nKQorCiAgICAgQHB5dGVzdC5ob29r
aW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dzdGFydChz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5sb2dfY2xpX2hhbmRsZXI6Ci0gICAgICAgICAgICBzZWxm
LmxvZ19jbGlfaGFuZGxlci5yZXNldCgpCi0gICAgICAgIHdpdGggc2VsZi5fcnVudGVzdF9mb3Io
Tm9uZSwgInN0YXJ0Iik6Ci0gICAgICAgICAgICB5aWVsZAorICAgIGRlZiBweXRlc3RfcnVudGVz
dF9zZXR1cChzZWxmLCBpdGVtOiBub2Rlcy5JdGVtKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwg
Tm9uZV06CisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyLnNldF93aGVuKCJzZXR1cCIpCisK
KyAgICAgICAgZW1wdHkgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgTGlzdFtsb2dnaW5nLkxvZ1Jl
Y29yZF1dCisgICAgICAgIGl0ZW0uX3N0b3JlW2NhcGxvZ19yZWNvcmRzX2tleV0gPSBlbXB0eQor
ICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX3J1bnRlc3RfZm9yKGl0ZW0sICJzZXR1cCIpCiAKICAg
ICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50
ZXN0X2xvZ2ZpbmlzaChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLl9ydW50ZXN0X2ZvcihOb25l
LCAiZmluaXNoIik6Ci0gICAgICAgICAgICB5aWVsZAorICAgIGRlZiBweXRlc3RfcnVudGVzdF9j
YWxsKHNlbGYsIGl0ZW06IG5vZGVzLkl0ZW0pIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25l
XToKKyAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIuc2V0X3doZW4oImNhbGwiKQorCisgICAg
ICAgIHlpZWxkIGZyb20gc2VsZi5fcnVudGVzdF9mb3IoaXRlbSwgImNhbGwiKQogCiAgICAgQHB5
dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdGxv
b3Aoc2VsZiwgc2Vzc2lvbik6Ci0gICAgICAgICIiIlJ1bnMgYWxsIGNvbGxlY3RlZCB0ZXN0IGl0
ZW1zLiIiIgotICAgICAgICBzZWxmLl9zZXR1cF9jbGlfbG9nZ2luZygpCi0gICAgICAgIHdpdGgg
c2VsZi5saXZlX2xvZ3NfY29udGV4dDoKLSAgICAgICAgICAgIGlmIHNlbGYubG9nX2ZpbGVfaGFu
ZGxlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3aXRoIGNsb3Npbmcoc2VsZi5sb2df
ZmlsZV9oYW5kbGVyKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBjYXRjaGluZ19sb2dzKAot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyLCBsZXZlbD1zZWxm
LmxvZ19maWxlX2xldmVsCi0gICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB5aWVsZCAgIyBydW4gYWxsIHRoZSB0ZXN0cwotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICB5aWVsZCAgIyBydW4gYWxsIHRoZSB0ZXN0cworICAgIGRlZiBweXRlc3Rf
cnVudGVzdF90ZWFyZG93bihzZWxmLCBpdGVtOiBub2Rlcy5JdGVtKSAtPiBHZW5lcmF0b3JbTm9u
ZSwgTm9uZSwgTm9uZV06CisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyLnNldF93aGVuKCJ0
ZWFyZG93biIpCiAKLSAgICBkZWYgX3NldHVwX2NsaV9sb2dnaW5nKHNlbGYpOgotICAgICAgICAi
IiJTZXRzIHVwIHRoZSBoYW5kbGVyIGFuZCBsb2dnZXIgZm9yIHRoZSBMaXZlIExvZ3MgZmVhdHVy
ZSwgaWYgZW5hYmxlZC4KKyAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9ydW50ZXN0X2ZvcihpdGVt
LCAidGVhcmRvd24iKQorICAgICAgICBkZWwgaXRlbS5fc3RvcmVbY2FwbG9nX3JlY29yZHNfa2V5
XQorICAgICAgICBkZWwgaXRlbS5fc3RvcmVbY2FwbG9nX2hhbmRsZXJfa2V5XQogCi0gICAgICAg
IFRoaXMgbXVzdCBiZSBkb25lIHJpZ2h0IGJlZm9yZSBzdGFydGluZyB0aGUgbG9vcCBzbyB3ZSBj
YW4gYWNjZXNzIHRoZSB0ZXJtaW5hbCByZXBvcnRlciBwbHVnaW4uCi0gICAgICAgICIiIgotICAg
ICAgICB0ZXJtaW5hbF9yZXBvcnRlciA9IHNlbGYuX2NvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9w
bHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKQotICAgICAgICBpZiBzZWxmLl9sb2dfY2xpX2VuYWJs
ZWQoKSBhbmQgdGVybWluYWxfcmVwb3J0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjYXB0
dXJlX21hbmFnZXIgPSBzZWxmLl9jb25maWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2luKCJjYXB0
dXJlbWFuYWdlciIpCi0gICAgICAgICAgICBsb2dfY2xpX2hhbmRsZXIgPSBfTGl2ZUxvZ2dpbmdT
dHJlYW1IYW5kbGVyKAotICAgICAgICAgICAgICAgIHRlcm1pbmFsX3JlcG9ydGVyLCBjYXB0dXJl
X21hbmFnZXIKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGxvZ19jbGlfZm9ybWF0ID0gZ2V0
X29wdGlvbl9pbmkoCi0gICAgICAgICAgICAgICAgc2VsZi5fY29uZmlnLCAibG9nX2NsaV9mb3Jt
YXQiLCAibG9nX2Zvcm1hdCIKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGxvZ19jbGlfZGF0
ZV9mb3JtYXQgPSBnZXRfb3B0aW9uX2luaSgKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25maWcs
ICJsb2dfY2xpX2RhdGVfZm9ybWF0IiwgImxvZ19kYXRlX2Zvcm1hdCIKLSAgICAgICAgICAgICkK
LSAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25maWcub3B0aW9uLmNv
bG9yICE9ICJubyIKLSAgICAgICAgICAgICAgICBhbmQgQ29sb3JlZExldmVsRm9ybWF0dGVyLkxF
VkVMTkFNRV9GTVRfUkVHRVguc2VhcmNoKGxvZ19jbGlfZm9ybWF0KQotICAgICAgICAgICAgKToK
LSAgICAgICAgICAgICAgICBsb2dfY2xpX2Zvcm1hdHRlciA9IENvbG9yZWRMZXZlbEZvcm1hdHRl
cigKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihzZWxmLl9jb25m
aWcpLAotICAgICAgICAgICAgICAgICAgICBsb2dfY2xpX2Zvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgZGF0ZWZtdD1sb2dfY2xpX2RhdGVfZm9ybWF0LAotICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nX2NsaV9mb3JtYXR0ZXIgPSBsb2dn
aW5nLkZvcm1hdHRlcigKLSAgICAgICAgICAgICAgICAgICAgbG9nX2NsaV9mb3JtYXQsIGRhdGVm
bXQ9bG9nX2NsaV9kYXRlX2Zvcm1hdAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGxv
Z19jbGlfbGV2ZWwgPSBnZXRfYWN0dWFsX2xvZ19sZXZlbCgKLSAgICAgICAgICAgICAgICBzZWxm
Ll9jb25maWcsICJsb2dfY2xpX2xldmVsIiwgImxvZ19sZXZlbCIKLSAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyID0gbG9nX2NsaV9oYW5kbGVyCi0gICAgICAg
ICAgICBzZWxmLmxpdmVfbG9nc19jb250ZXh0ID0gY2F0Y2hpbmdfbG9ncygKLSAgICAgICAgICAg
ICAgICBsb2dfY2xpX2hhbmRsZXIsIGZvcm1hdHRlcj1sb2dfY2xpX2Zvcm1hdHRlciwgbGV2ZWw9
bG9nX2NsaV9sZXZlbAotICAgICAgICAgICAgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c2VsZi5saXZlX2xvZ3NfY29udGV4dCA9IF9kdW1teV9jb250ZXh0X21hbmFnZXIoKQorICAgIEBw
eXRlc3QuaG9va2ltcGwKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyLnNldF93aGVuKCJmaW5pc2giKQor
CisgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlLCB0cnlmaXJzdD1UcnVlKQor
ICAgIGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZWxmKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9u
ZSwgTm9uZV06CisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyLnNldF93aGVuKCJzZXNzaW9u
ZmluaXNoIikKKworICAgICAgICB3aXRoIGNhdGNoaW5nX2xvZ3Moc2VsZi5sb2dfY2xpX2hhbmRs
ZXIsIGxldmVsPXNlbGYubG9nX2NsaV9sZXZlbCk6CisgICAgICAgICAgICB3aXRoIGNhdGNoaW5n
X2xvZ3Moc2VsZi5sb2dfZmlsZV9oYW5kbGVyLCBsZXZlbD1zZWxmLmxvZ19maWxlX2xldmVsKToK
KyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgQHB5dGVzdC5ob29raW1wbAorICAgIGRlZiBw
eXRlc3RfdW5jb25maWd1cmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIyBDbG9zZSB0aGUgRmls
ZUhhbmRsZXIgZXhwbGljaXRseS4KKyAgICAgICAgIyAobG9nZ2luZy5zaHV0ZG93biBtaWdodCBo
YXZlIGxvc3QgdGhlIHdlYWtyZWY/ISkKKyAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyLmNs
b3NlKCkKKworCitjbGFzcyBfRmlsZUhhbmRsZXIobG9nZ2luZy5GaWxlSGFuZGxlcik6CisgICAg
IiIiQSBsb2dnaW5nIEZpbGVIYW5kbGVyIHdpdGggcHl0ZXN0IHR3ZWFrcy4iIiIKKworICAgIGRl
ZiBoYW5kbGVFcnJvcihzZWxmLCByZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBOb25lOgor
ICAgICAgICAjIEhhbmRsZWQgYnkgTG9nQ2FwdHVyZUhhbmRsZXIuCisgICAgICAgIHBhc3MKIAog
CiBjbGFzcyBfTGl2ZUxvZ2dpbmdTdHJlYW1IYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6
Ci0gICAgIiIiCi0gICAgQ3VzdG9tIFN0cmVhbUhhbmRsZXIgdXNlZCBieSB0aGUgbGl2ZSBsb2dn
aW5nIGZlYXR1cmU6IGl0IHdpbGwgd3JpdGUgYSBuZXdsaW5lIGJlZm9yZSB0aGUgZmlyc3QgbG9n
IG1lc3NhZ2UKLSAgICBpbiBlYWNoIHRlc3QuCisgICAgIiIiQSBsb2dnaW5nIFN0cmVhbUhhbmRs
ZXIgdXNlZCBieSB0aGUgbGl2ZSBsb2dnaW5nIGZlYXR1cmU6IGl0IHdpbGwKKyAgICB3cml0ZSBh
IG5ld2xpbmUgYmVmb3JlIHRoZSBmaXJzdCBsb2cgbWVzc2FnZSBpbiBlYWNoIHRlc3QuCiAKLSAg
ICBEdXJpbmcgbGl2ZSBsb2dnaW5nIHdlIG11c3QgYWxzbyBleHBsaWNpdGx5IGRpc2FibGUgc3Rk
b3V0L3N0ZGVyciBjYXB0dXJpbmcgb3RoZXJ3aXNlIGl0IHdpbGwgZ2V0IGNhcHR1cmVkCi0gICAg
YW5kIHdvbid0IGFwcGVhciBpbiB0aGUgdGVybWluYWwuCisgICAgRHVyaW5nIGxpdmUgbG9nZ2lu
ZyB3ZSBtdXN0IGFsc28gZXhwbGljaXRseSBkaXNhYmxlIHN0ZG91dC9zdGRlcnIKKyAgICBjYXB0
dXJpbmcgb3RoZXJ3aXNlIGl0IHdpbGwgZ2V0IGNhcHR1cmVkIGFuZCB3b24ndCBhcHBlYXIgaW4g
dGhlCisgICAgdGVybWluYWwuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVy
bWluYWxfcmVwb3J0ZXIsIGNhcHR1cmVfbWFuYWdlcik6Ci0gICAgICAgICIiIgotICAgICAgICA6
cGFyYW0gX3B5dGVzdC50ZXJtaW5hbC5UZXJtaW5hbFJlcG9ydGVyIHRlcm1pbmFsX3JlcG9ydGVy
OgotICAgICAgICA6cGFyYW0gX3B5dGVzdC5jYXB0dXJlLkNhcHR1cmVNYW5hZ2VyIGNhcHR1cmVf
bWFuYWdlcjoKLSAgICAgICAgIiIiCi0gICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlci5fX2lu
aXRfXyhzZWxmLCBzdHJlYW09dGVybWluYWxfcmVwb3J0ZXIpCisgICAgIyBPZmZpY2lhbGx5IHN0
cmVhbSBuZWVkcyB0byBiZSBhIElPW3N0cl0sIGJ1dCBUZXJtaW5hbFJlcG9ydGVyCisgICAgIyBp
c24ndC4gU28gZm9yY2UgaXQuCisgICAgc3RyZWFtID0gTm9uZSAgIyB0eXBlOiBUZXJtaW5hbFJl
cG9ydGVyICMgdHlwZTogaWdub3JlCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYs
CisgICAgICAgIHRlcm1pbmFsX3JlcG9ydGVyOiBUZXJtaW5hbFJlcG9ydGVyLAorICAgICAgICBj
YXB0dXJlX21hbmFnZXI6IE9wdGlvbmFsW0NhcHR1cmVNYW5hZ2VyXSwKKyAgICApIC0+IE5vbmU6
CisgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlci5fX2luaXRfXyhzZWxmLCBzdHJlYW09dGVy
bWluYWxfcmVwb3J0ZXIpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KICAgICAgICAgc2VsZi5j
YXB0dXJlX21hbmFnZXIgPSBjYXB0dXJlX21hbmFnZXIKICAgICAgICAgc2VsZi5yZXNldCgpCiAg
ICAgICAgIHNlbGYuc2V0X3doZW4oTm9uZSkKICAgICAgICAgc2VsZi5fdGVzdF9vdXRjb21lX3dy
aXR0ZW4gPSBGYWxzZQogCi0gICAgZGVmIHJlc2V0KHNlbGYpOgotICAgICAgICAiIiJSZXNldCB0
aGUgaGFuZGxlcjsgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggdGVz
dCIiIgorICAgIGRlZiByZXNldChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJSZXNldCB0aGUg
aGFuZGxlcjsgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdC4i
IiIKICAgICAgICAgc2VsZi5fZmlyc3RfcmVjb3JkX2VtaXR0ZWQgPSBGYWxzZQogCi0gICAgZGVm
IHNldF93aGVuKHNlbGYsIHdoZW4pOgotICAgICAgICAiIiJQcmVwYXJlcyBmb3IgdGhlIGdpdmVu
IHRlc3QgcGhhc2UgKHNldHVwL2NhbGwvdGVhcmRvd24pIiIiCisgICAgZGVmIHNldF93aGVuKHNl
bGYsIHdoZW46IE9wdGlvbmFsW3N0cl0pIC0+IE5vbmU6CisgICAgICAgICIiIlByZXBhcmUgZm9y
IHRoZSBnaXZlbiB0ZXN0IHBoYXNlIChzZXR1cC9jYWxsL3RlYXJkb3duKS4iIiIKICAgICAgICAg
c2VsZi5fd2hlbiA9IHdoZW4KICAgICAgICAgc2VsZi5fc2VjdGlvbl9uYW1lX3Nob3duID0gRmFs
c2UKICAgICAgICAgaWYgd2hlbiA9PSAic3RhcnQiOgogICAgICAgICAgICAgc2VsZi5fdGVzdF9v
dXRjb21lX3dyaXR0ZW4gPSBGYWxzZQogCi0gICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKLSAg
ICAgICAgaWYgc2VsZi5jYXB0dXJlX21hbmFnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBz
ZWxmLmNhcHR1cmVfbWFuYWdlci5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgdHJ5
OgorICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZDogbG9nZ2luZy5Mb2dSZWNvcmQpIC0+IE5vbmU6
CisgICAgICAgIGN0eF9tYW5hZ2VyID0gKAorICAgICAgICAgICAgc2VsZi5jYXB0dXJlX21hbmFn
ZXIuZ2xvYmFsX2FuZF9maXh0dXJlX2Rpc2FibGVkKCkKKyAgICAgICAgICAgIGlmIHNlbGYuY2Fw
dHVyZV9tYW5hZ2VyCisgICAgICAgICAgICBlbHNlIG51bGxjb250ZXh0KCkKKyAgICAgICAgKQor
ICAgICAgICB3aXRoIGN0eF9tYW5hZ2VyOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpcnN0
X3JlY29yZF9lbWl0dGVkOgogICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCJcbiIp
CiAgICAgICAgICAgICAgICAgc2VsZi5fZmlyc3RfcmVjb3JkX2VtaXR0ZWQgPSBUcnVlCkBAIC01
NjksNyArNzk2LDIyIEBAIGNsYXNzIF9MaXZlTG9nZ2luZ1N0cmVhbUhhbmRsZXIobG9nZ2luZy5T
dHJlYW1IYW5kbGVyKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9zZWN0aW9uX25hbWVfc2hv
d24gYW5kIHNlbGYuX3doZW46CiAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0uc2VjdGlvbigi
bGl2ZSBsb2cgIiArIHNlbGYuX3doZW4sIHNlcD0iLSIsIGJvbGQ9VHJ1ZSkKICAgICAgICAgICAg
ICAgICBzZWxmLl9zZWN0aW9uX25hbWVfc2hvd24gPSBUcnVlCi0gICAgICAgICAgICBsb2dnaW5n
LlN0cmVhbUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBpZiBzZWxmLmNhcHR1cmVfbWFuYWdlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBzZWxmLmNhcHR1cmVfbWFuYWdlci5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAg
ICAgICAgc3VwZXIoKS5lbWl0KHJlY29yZCkKKworICAgIGRlZiBoYW5kbGVFcnJvcihzZWxmLCBy
ZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBOb25lOgorICAgICAgICAjIEhhbmRsZWQgYnkg
TG9nQ2FwdHVyZUhhbmRsZXIuCisgICAgICAgIHBhc3MKKworCitjbGFzcyBfTGl2ZUxvZ2dpbmdO
dWxsSGFuZGxlcihsb2dnaW5nLk51bGxIYW5kbGVyKToKKyAgICAiIiJBIGxvZ2dpbmcgaGFuZGxl
ciB1c2VkIHdoZW4gbGl2ZSBsb2dnaW5nIGlzIGRpc2FibGVkLiIiIgorCisgICAgZGVmIHJlc2V0
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBzZXRfd2hlbihzZWxmLCB3
aGVuOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBoYW5kbGVFcnJvcihz
ZWxmLCByZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBOb25lOgorICAgICAgICAjIEhhbmRs
ZWQgYnkgTG9nQ2FwdHVyZUhhbmRsZXIuCisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L21haW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tYWlu
LnB5CmluZGV4IDIzNTYyMzU4ZDdjMy4uZWYxMDZjNDZhNDMzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9tYWluLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21h
aW4ucHkKQEAgLTEsMzMgKzEsNTQgQEAKLSIiIiBjb3JlIGltcGxlbWVudGF0aW9uIG9mIHRlc3Rp
bmcgcHJvY2VzczogaW5pdCwgc2Vzc2lvbiwgcnVudGVzdCBsb29wLiAiIiIKLWZyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQot
aW1wb3J0IGNvbnRleHRsaWIKKyIiIkNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHRlc3Rpbmcg
cHJvY2VzczogaW5pdCwgc2Vzc2lvbiwgcnVudGVzdCBsb29wLiIiIgoraW1wb3J0IGFyZ3BhcnNl
CitpbXBvcnQgZm5tYXRjaAogaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGltcG9ydGxpYgogaW1w
b3J0IG9zCi1pbXBvcnQgcGtndXRpbAotaW1wb3J0IHNpeAogaW1wb3J0IHN5cwotCi1pbXBvcnQg
X3B5dGVzdAotZnJvbSBfcHl0ZXN0IGltcG9ydCBub2RlcwotaW1wb3J0IF9weXRlc3QuX2NvZGUK
K2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zy
b20gdHlwaW5nIGltcG9ydCBGcm96ZW5TZXQKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgor
ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJv
bSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgU2V0Citmcm9tIHR5
cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBvcnQgYXR0
cgogaW1wb3J0IHB5CiAKLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGRpcmVjdG9yeV9hcmcs
IFVzYWdlRXJyb3IsIGhvb2tpbXBsCitpbXBvcnQgX3B5dGVzdC5fY29kZQorZnJvbSBfcHl0ZXN0
IGltcG9ydCBub2RlcworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5
dGVzdC5jb21wYXQgaW1wb3J0IG92ZXJsb2FkCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBU
WVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IGRpcmVjdG9yeV9hcmcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBob29raW1wbAorZnJvbSBf
cHl0ZXN0LmNvbmZpZyBpbXBvcnQgUHl0ZXN0UGx1Z2luTWFuYWdlcgorZnJvbSBfcHl0ZXN0LmNv
bmZpZyBpbXBvcnQgVXNhZ2VFcnJvcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGlt
cG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZU1hbmFnZXIK
IGZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZXhpdAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIg
aW1wb3J0IGFic29sdXRlcGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGJlc3RyZWxw
YXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhs
aWIgaW1wb3J0IHZpc2l0Citmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBvcnQgQ29sbGVjdFJlcG9y
dAorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0IFRlc3RSZXBvcnQKIGZyb20gX3B5dGVzdC5y
dW5uZXIgaW1wb3J0IGNvbGxlY3Rfb25lX25vZGUKK2Zyb20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0
IFNldHVwU3RhdGUKIAogCi0jIGV4aXRjb2RlcyBmb3IgdGhlIGNvbW1hbmQgbGluZQotRVhJVF9P
SyA9IDAKLUVYSVRfVEVTVFNGQUlMRUQgPSAxCi1FWElUX0lOVEVSUlVQVEVEID0gMgotRVhJVF9J
TlRFUk5BTEVSUk9SID0gMwotRVhJVF9VU0FHRUVSUk9SID0gNAotRVhJVF9OT1RFU1RTQ09MTEVD
VEVEID0gNQoraWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQor
ICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwKIAogCi1kZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIp
IC0+IE5vbmU6CiAgICAgcGFyc2VyLmFkZGluaSgKICAgICAgICAgIm5vcmVjdXJzZWRpcnMiLAog
ICAgICAgICAiZGlyZWN0b3J5IHBhdHRlcm5zIHRvIGF2b2lkIGZvciByZWN1cnNpb24iLApAQCAt
NDEsMTEgKzYyLDYgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgdHlw
ZT0iYXJncyIsCiAgICAgICAgIGRlZmF1bHQ9W10sCiAgICAgKQotICAgICMgcGFyc2VyLmFkZGlu
aSgiZGlycGF0dGVybnMiLAotICAgICMgICAgInBhdHRlcm5zIHNwZWNpZnlpbmcgcG9zc2libGUg
bG9jYXRpb25zIG9mIHRlc3QgZmlsZXMiLAotICAgICMgICAgdHlwZT0ibGluZWxpc3QiLCBkZWZh
dWx0PVsiKiovdGVzdF8qLnR4dCIsCi0gICAgIyAgICAgICAgICAgICIqKi90ZXN0XyoucHkiLCAi
KiovKl90ZXN0LnB5Il0KLSAgICAjICkKICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2Vu
ZXJhbCIsICJydW5uaW5nIGFuZCBzZWxlY3Rpb24gb3B0aW9ucyIpCiAgICAgZ3JvdXAuX2FkZG9w
dGlvbigKICAgICAgICAgIi14IiwKQEAgLTU0LDcgKzcwLDIxIEBAIGRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6CiAgICAgICAgIGRlc3Q9Im1heGZhaWwiLAogICAgICAgICBjb25zdD0xLAog
ICAgICAgICBoZWxwPSJleGl0IGluc3RhbnRseSBvbiBmaXJzdCBlcnJvciBvciBmYWlsZWQgdGVz
dC4iLAotICAgICksCisgICAgKQorICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJweXRlc3Qt
d2FybmluZ3MiKQorICAgIGdyb3VwLmFkZG9wdGlvbigKKyAgICAgICAgIi1XIiwKKyAgICAgICAg
Ii0tcHl0aG9ud2FybmluZ3MiLAorICAgICAgICBhY3Rpb249ImFwcGVuZCIsCisgICAgICAgIGhl
bHA9InNldCB3aGljaCB3YXJuaW5ncyB0byByZXBvcnQsIHNlZSAtVyBvcHRpb24gb2YgcHl0aG9u
IGl0c2VsZi4iLAorICAgICkKKyAgICBwYXJzZXIuYWRkaW5pKAorICAgICAgICAiZmlsdGVyd2Fy
bmluZ3MiLAorICAgICAgICB0eXBlPSJsaW5lbGlzdCIsCisgICAgICAgIGhlbHA9IkVhY2ggbGlu
ZSBzcGVjaWZpZXMgYSBwYXR0ZXJuIGZvciAiCisgICAgICAgICJ3YXJuaW5ncy5maWx0ZXJ3YXJu
aW5ncy4gIgorICAgICAgICAiUHJvY2Vzc2VkIGFmdGVyIC1XLy0tcHl0aG9ud2FybmluZ3MuIiwK
KyAgICApCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKICAgICAgICAgIi0tbWF4ZmFpbCIsCiAgICAg
ICAgIG1ldGF2YXI9Im51bSIsCkBAIC02NSw5ICs5NSwxNSBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlv
bihwYXJzZXIpOgogICAgICAgICBoZWxwPSJleGl0IGFmdGVyIGZpcnN0IG51bSBmYWlsdXJlcyBv
ciBlcnJvcnMuIiwKICAgICApCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKKyAgICAgICAgIi0tc3Ry
aWN0LWNvbmZpZyIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9
ImFueSB3YXJuaW5ncyBlbmNvdW50ZXJlZCB3aGlsZSBwYXJzaW5nIHRoZSBgcHl0ZXN0YCBzZWN0
aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgcmFpc2UgZXJyb3JzLiIsCisgICAgKQorICAg
IGdyb3VwLl9hZGRvcHRpb24oCisgICAgICAgICItLXN0cmljdC1tYXJrZXJzIiwKICAgICAgICAg
Ii0tc3RyaWN0IiwKICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgaGVscD0i
bWFya3Mgbm90IHJlZ2lzdGVyZWQgaW4gY29uZmlndXJhdGlvbiBmaWxlIHJhaXNlIGVycm9ycy4i
LAorICAgICAgICBoZWxwPSJtYXJrZXJzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBgbWFya2Vyc2Ag
c2VjdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJhaXNlIGVycm9ycy4iLAogICAgICkK
ICAgICBncm91cC5fYWRkb3B0aW9uKAogICAgICAgICAiLWMiLApAQCAtOTcsOSArMTMzLDEwIEBA
IGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAg
ICAgICAiLS1jb2xsZWN0b25seSIsCiAgICAgICAgICItLWNvbGxlY3Qtb25seSIsCisgICAgICAg
ICItLWNvIiwKICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgaGVscD0ib25s
eSBjb2xsZWN0IHRlc3RzLCBkb24ndCBleGVjdXRlIHRoZW0uIiwKLSAgICApLAorICAgICkKICAg
ICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLXB5YXJncyIsCiAgICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCkBAIC0xMTEsMTQgKzE0OCwxOCBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihw
YXJzZXIpOgogICAgICAgICBtZXRhdmFyPSJwYXRoIiwKICAgICAgICAgaGVscD0iaWdub3JlIHBh
dGggZHVyaW5nIGNvbGxlY3Rpb24gKG11bHRpLWFsbG93ZWQpLiIsCiAgICAgKQorICAgIGdyb3Vw
LmFkZG9wdGlvbigKKyAgICAgICAgIi0taWdub3JlLWdsb2IiLAorICAgICAgICBhY3Rpb249ImFw
cGVuZCIsCisgICAgICAgIG1ldGF2YXI9InBhdGgiLAorICAgICAgICBoZWxwPSJpZ25vcmUgcGF0
aCBwYXR0ZXJuIGR1cmluZyBjb2xsZWN0aW9uIChtdWx0aS1hbGxvd2VkKS4iLAorICAgICkKICAg
ICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWRlc2VsZWN0IiwKICAgICAgICAgYWN0aW9u
PSJhcHBlbmQiLAogICAgICAgICBtZXRhdmFyPSJub2RlaWRfcHJlZml4IiwKLSAgICAgICAgaGVs
cD0iZGVzZWxlY3QgaXRlbSBkdXJpbmcgY29sbGVjdGlvbiAobXVsdGktYWxsb3dlZCkuIiwKKyAg
ICAgICAgaGVscD0iZGVzZWxlY3QgaXRlbSAodmlhIG5vZGUgaWQgcHJlZml4KSBkdXJpbmcgY29s
bGVjdGlvbiAobXVsdGktYWxsb3dlZCkuIiwKICAgICApCi0gICAgIyB3aGVuIGNoYW5naW5nIHRo
aXMgdG8gLS1jb25mLWN1dC1kaXIsIGNvbmZpZy5weSBDb25mdGVzdC5zZXRpbml0aWFsCi0gICAg
IyBuZWVkcyB1cGdyYWRpbmcgYXMgd2VsbAogICAgIGdyb3VwLmFkZG9wdGlvbigKICAgICAgICAg
Ii0tY29uZmN1dGRpciIsCiAgICAgICAgIGRlc3Q9ImNvbmZjdXRkaXIiLApAQCAtMTQ5LDI1ICsx
OTAsNjMgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgZGVmYXVsdD1G
YWxzZSwKICAgICAgICAgaGVscD0iRG9uJ3QgaWdub3JlIHRlc3RzIGluIGEgbG9jYWwgdmlydHVh
bGVudiBkaXJlY3RvcnkiLAogICAgICkKKyAgICBncm91cC5hZGRvcHRpb24oCisgICAgICAgICIt
LWltcG9ydC1tb2RlIiwKKyAgICAgICAgZGVmYXVsdD0icHJlcGVuZCIsCisgICAgICAgIGNob2lj
ZXM9WyJwcmVwZW5kIiwgImFwcGVuZCIsICJpbXBvcnRsaWIiXSwKKyAgICAgICAgZGVzdD0iaW1w
b3J0bW9kZSIsCisgICAgICAgIGhlbHA9InByZXBlbmQvYXBwZW5kIHRvIHN5cy5wYXRoIHdoZW4g
aW1wb3J0aW5nIHRlc3QgbW9kdWxlcyBhbmQgY29uZnRlc3QgZmlsZXMsICIKKyAgICAgICAgImRl
ZmF1bHQgaXMgdG8gcHJlcGVuZC4iLAorICAgICkKIAogICAgIGdyb3VwID0gcGFyc2VyLmdldGdy
b3VwKCJkZWJ1Z2NvbmZpZyIsICJ0ZXN0IHNlc3Npb24gZGVidWdnaW5nIGFuZCBjb25maWd1cmF0
aW9uIikKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWJhc2V0ZW1wIiwKICAgICAg
ICAgZGVzdD0iYmFzZXRlbXAiLAogICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIHR5cGU9
dmFsaWRhdGVfYmFzZXRlbXAsCiAgICAgICAgIG1ldGF2YXI9ImRpciIsCi0gICAgICAgIGhlbHA9
ImJhc2UgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgdGhpcyB0ZXN0IHJ1bi4iLAorICAgICAgICBo
ZWxwPSgKKyAgICAgICAgICAgICJiYXNlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIHRoaXMgdGVz
dCBydW4uIgorICAgICAgICAgICAgIih3YXJuaW5nOiB0aGlzIGRpcmVjdG9yeSBpcyByZW1vdmVk
IGlmIGl0IGV4aXN0cykiCisgICAgICAgICksCiAgICAgKQogCiAKLWRlZiBweXRlc3RfY29uZmln
dXJlKGNvbmZpZyk6Ci0gICAgX19pbXBvcnRfXygicHl0ZXN0IikuY29uZmlnID0gY29uZmlnICAj
IGNvbXBhdGliaWxpdHkKK2RlZiB2YWxpZGF0ZV9iYXNldGVtcChwYXRoOiBzdHIpIC0+IHN0cjoK
KyAgICAjIEdIIDcxMTkKKyAgICBtc2cgPSAiYmFzZXRlbXAgbXVzdCBub3QgYmUgZW1wdHksIHRo
ZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFueSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0
IgorCisgICAgIyBlbXB0eSBwYXRoCisgICAgaWYgbm90IHBhdGg6CisgICAgICAgIHJhaXNlIGFy
Z3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKG1zZykKKworICAgIGRlZiBpc19hbmNlc3RvcihiYXNl
OiBQYXRoLCBxdWVyeTogUGF0aCkgLT4gYm9vbDoKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIg
cXVlcnkgaXMgYW4gYW5jZXN0b3Igb2YgYmFzZS4iIiIKKyAgICAgICAgaWYgYmFzZSA9PSBxdWVy
eToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGZvciBwYXJlbnQgaW4gYmFzZS5w
YXJlbnRzOgorICAgICAgICAgICAgaWYgcGFyZW50ID09IHF1ZXJ5OgorICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgIyBjaGVjayBpZiBwYXRo
IGlzIGFuIGFuY2VzdG9yIG9mIGN3ZAorICAgIGlmIGlzX2FuY2VzdG9yKFBhdGguY3dkKCksIFBh
dGgocGF0aCkuYWJzb2x1dGUoKSk6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlw
ZUVycm9yKG1zZykKIAorICAgICMgY2hlY2sgc3ltbGlua3MgZm9yIGFuY2VzdG9ycworICAgIGlm
IGlzX2FuY2VzdG9yKFBhdGguY3dkKCkucmVzb2x2ZSgpLCBQYXRoKHBhdGgpLnJlc29sdmUoKSk6
CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKG1zZykKIAotZGVmIHdy
YXBfc2Vzc2lvbihjb25maWcsIGRvaXQpOgotICAgICIiIlNrZWxldG9uIGNvbW1hbmQgbGluZSBw
cm9ncmFtIiIiCi0gICAgc2Vzc2lvbiA9IFNlc3Npb24oY29uZmlnKQotICAgIHNlc3Npb24uZXhp
dHN0YXR1cyA9IEVYSVRfT0sKKyAgICByZXR1cm4gcGF0aAorCisKK2RlZiB3cmFwX3Nlc3Npb24o
CisgICAgY29uZmlnOiBDb25maWcsIGRvaXQ6IENhbGxhYmxlW1tDb25maWcsICJTZXNzaW9uIl0s
IE9wdGlvbmFsW1VuaW9uW2ludCwgRXhpdENvZGVdXV0KKykgLT4gVW5pb25baW50LCBFeGl0Q29k
ZV06CisgICAgIiIiU2tlbGV0b24gY29tbWFuZCBsaW5lIHByb2dyYW0uIiIiCisgICAgc2Vzc2lv
biA9IFNlc3Npb24uZnJvbV9jb25maWcoY29uZmlnKQorICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9
IEV4aXRDb2RlLk9LCiAgICAgaW5pdHN0YXRlID0gMAogICAgIHRyeToKICAgICAgICAgdHJ5OgpA
QCAtMTc3LDU2ICsyNTYsNzkgQEAgZGVmIHdyYXBfc2Vzc2lvbihjb25maWcsIGRvaXQpOgogICAg
ICAgICAgICAgaW5pdHN0YXRlID0gMgogICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0g
ZG9pdChjb25maWcsIHNlc3Npb24pIG9yIDAKICAgICAgICAgZXhjZXB0IFVzYWdlRXJyb3I6Cisg
ICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFeGl0Q29kZS5VU0FHRV9FUlJPUgogICAg
ICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IEZhaWxlZDoKLSAgICAgICAgICAgIHNlc3Np
b24uZXhpdHN0YXR1cyA9IEVYSVRfVEVTVFNGQUlMRUQKLSAgICAgICAgZXhjZXB0IEtleWJvYXJk
SW50ZXJydXB0OgotICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9u
SW5mbygpCi0gICAgICAgICAgICBpZiBpbml0c3RhdGUgPCAyIGFuZCBpc2luc3RhbmNlKGV4Y2lu
Zm8udmFsdWUsIGV4aXQuRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCJ7fToge31cbiIuZm9ybWF0KGV4Y2luZm8udHlwZW5hbWUsIGV4Y2luZm8udmFsdWUubXNn
KSkKKyAgICAgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9IEV4aXRDb2RlLlRFU1RTX0ZBSUxF
RAorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBleGl0LkV4Y2VwdGlvbik6Cisg
ICAgICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3Vy
cmVudCgpCisgICAgICAgICAgICBleGl0c3RhdHVzID0gRXhpdENvZGUuSU5URVJSVVBURUQgICMg
dHlwZTogVW5pb25baW50LCBFeGl0Q29kZV0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhj
aW5mby52YWx1ZSwgZXhpdC5FeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIGlmIGV4Y2luZm8u
dmFsdWUucmV0dXJuY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZXhpdHN0
YXR1cyA9IGV4Y2luZm8udmFsdWUucmV0dXJuY29kZQorICAgICAgICAgICAgICAgIGlmIGluaXRz
dGF0ZSA8IDI6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAie306IHt9XG4iLmZvcm1hdChleGNpbmZvLnR5cGVuYW1lLCBleGNp
bmZvLnZhbHVlLm1zZykKKyAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgY29uZmln
Lmhvb2sucHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdChleGNpbmZvPWV4Y2luZm8pCi0gICAgICAg
ICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFWElUX0lOVEVSUlVQVEVECi0gICAgICAgIGV4Y2Vw
dDogICMgbm9xYQotICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9u
SW5mbygpCi0gICAgICAgICAgICBjb25maWcubm90aWZ5X2V4Y2VwdGlvbihleGNpbmZvLCBjb25m
aWcub3B0aW9uKQotICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gRVhJVF9JTlRFUk5B
TEVSUk9SCi0gICAgICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoU3lzdGVtRXhpdCk6
Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgibWFpbmxvb3A6IGNhdWdodCBTcHVy
aW91cyBTeXN0ZW1FeGl0IVxuIikKKyAgICAgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9IGV4
aXRzdGF0dXMKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICBzZXNz
aW9uLmV4aXRzdGF0dXMgPSBFeGl0Q29kZS5JTlRFUk5BTF9FUlJPUgorICAgICAgICAgICAgZXhj
aW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvbmZpZy5ub3RpZnlfZXhjZXB0aW9uKGV4Y2lu
Zm8sIGNvbmZpZy5vcHRpb24pCisgICAgICAgICAgICBleGNlcHQgZXhpdC5FeGNlcHRpb24gYXMg
ZXhjOgorICAgICAgICAgICAgICAgIGlmIGV4Yy5yZXR1cm5jb2RlIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBleGMucmV0dXJuY29kZQorICAg
ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoInt9OiB7fVxuIi5mb3JtYXQodHlwZShleGMp
Ll9fbmFtZV9fLCBleGMpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCJtYWlubG9vcDogY2F1Z2h0IHVuZXhwZWN0ZWQgU3lzdGVtRXhp
dCFcbiIpCiAKICAgICBmaW5hbGx5OgotICAgICAgICBleGNpbmZvID0gTm9uZSAgIyBFeHBsaWNp
dGx5IGJyZWFrIHJlZmVyZW5jZSBjeWNsZS4KKyAgICAgICAgIyBFeHBsaWNpdGx5IGJyZWFrIHJl
ZmVyZW5jZSBjeWNsZS4KKyAgICAgICAgZXhjaW5mbyA9IE5vbmUgICMgdHlwZTogaWdub3JlCiAg
ICAgICAgIHNlc3Npb24uc3RhcnRkaXIuY2hkaXIoKQogICAgICAgICBpZiBpbml0c3RhdGUgPj0g
MjoKLSAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9zZXNzaW9uZmluaXNoKAotICAgICAg
ICAgICAgICAgIHNlc3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1cz1zZXNzaW9uLmV4aXRzdGF0dXMK
LSAgICAgICAgICAgICkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb25maWcu
aG9vay5weXRlc3Rfc2Vzc2lvbmZpbmlzaCgKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1z
ZXNzaW9uLCBleGl0c3RhdHVzPXNlc3Npb24uZXhpdHN0YXR1cworICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIGV4Y2VwdCBleGl0LkV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAg
ICAgaWYgZXhjLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNl
c3Npb24uZXhpdHN0YXR1cyA9IGV4Yy5yZXR1cm5jb2RlCisgICAgICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgie306IHt9XG4iLmZvcm1hdCh0eXBlKGV4YykuX19uYW1lX18sIGV4YykpCiAg
ICAgICAgIGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkKICAgICByZXR1cm4gc2Vzc2lvbi5l
eGl0c3RhdHVzCiAKIAotZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKK2RlZiBweXRl
c3RfY21kbGluZV9tYWluKGNvbmZpZzogQ29uZmlnKSAtPiBVbmlvbltpbnQsIEV4aXRDb2RlXToK
ICAgICByZXR1cm4gd3JhcF9zZXNzaW9uKGNvbmZpZywgX21haW4pCiAKIAotZGVmIF9tYWluKGNv
bmZpZywgc2Vzc2lvbik6Ci0gICAgIiIiIGRlZmF1bHQgY29tbWFuZCBsaW5lIHByb3RvY29sIGZv
ciBpbml0aWFsaXphdGlvbiwgc2Vzc2lvbiwKLSAgICBydW5uaW5nIHRlc3RzIGFuZCByZXBvcnRp
bmcuICIiIgorZGVmIF9tYWluKGNvbmZpZzogQ29uZmlnLCBzZXNzaW9uOiAiU2Vzc2lvbiIpIC0+
IE9wdGlvbmFsW1VuaW9uW2ludCwgRXhpdENvZGVdXToKKyAgICAiIiJEZWZhdWx0IGNvbW1hbmQg
bGluZSBwcm90b2NvbCBmb3IgaW5pdGlhbGl6YXRpb24sIHNlc3Npb24sCisgICAgcnVubmluZyB0
ZXN0cyBhbmQgcmVwb3J0aW5nLiIiIgogICAgIGNvbmZpZy5ob29rLnB5dGVzdF9jb2xsZWN0aW9u
KHNlc3Npb249c2Vzc2lvbikKICAgICBjb25maWcuaG9vay5weXRlc3RfcnVudGVzdGxvb3Aoc2Vz
c2lvbj1zZXNzaW9uKQogCiAgICAgaWYgc2Vzc2lvbi50ZXN0c2ZhaWxlZDoKLSAgICAgICAgcmV0
dXJuIEVYSVRfVEVTVFNGQUlMRUQKKyAgICAgICAgcmV0dXJuIEV4aXRDb2RlLlRFU1RTX0ZBSUxF
RAogICAgIGVsaWYgc2Vzc2lvbi50ZXN0c2NvbGxlY3RlZCA9PSAwOgotICAgICAgICByZXR1cm4g
RVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgICAgIHJldHVybiBFeGl0Q29kZS5OT19URVNUU19D
T0xMRUNURUQKKyAgICByZXR1cm4gTm9uZQogCiAKLWRlZiBweXRlc3RfY29sbGVjdGlvbihzZXNz
aW9uKToKLSAgICByZXR1cm4gc2Vzc2lvbi5wZXJmb3JtX2NvbGxlY3QoKQorZGVmIHB5dGVzdF9j
b2xsZWN0aW9uKHNlc3Npb246ICJTZXNzaW9uIikgLT4gTm9uZToKKyAgICBzZXNzaW9uLnBlcmZv
cm1fY29sbGVjdCgpCiAKIAotZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZXNzaW9uKToKK2RlZiBw
eXRlc3RfcnVudGVzdGxvb3Aoc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBib29sOgogICAgIGlmIHNl
c3Npb24udGVzdHNmYWlsZWQgYW5kIG5vdCBzZXNzaW9uLmNvbmZpZy5vcHRpb24uY29udGludWVf
b25fY29sbGVjdGlvbl9lcnJvcnM6Ci0gICAgICAgIHJhaXNlIHNlc3Npb24uSW50ZXJydXB0ZWQo
IiVkIGVycm9ycyBkdXJpbmcgY29sbGVjdGlvbiIgJSBzZXNzaW9uLnRlc3RzZmFpbGVkKQorICAg
ICAgICByYWlzZSBzZXNzaW9uLkludGVycnVwdGVkKAorICAgICAgICAgICAgIiVkIGVycm9yJXMg
ZHVyaW5nIGNvbGxlY3Rpb24iCisgICAgICAgICAgICAlIChzZXNzaW9uLnRlc3RzZmFpbGVkLCAi
cyIgaWYgc2Vzc2lvbi50ZXN0c2ZhaWxlZCAhPSAxIGVsc2UgIiIpCisgICAgICAgICkKIAogICAg
IGlmIHNlc3Npb24uY29uZmlnLm9wdGlvbi5jb2xsZWN0b25seToKICAgICAgICAgcmV0dXJuIFRy
dWUKQEAgLTI0MSw5ICszNDMsOSBAQCBkZWYgcHl0ZXN0X3J1bnRlc3Rsb29wKHNlc3Npb24pOgog
ICAgIHJldHVybiBUcnVlCiAKIAotZGVmIF9pbl92ZW52KHBhdGgpOgotICAgICIiIkF0dGVtcHRz
IHRvIGRldGVjdCBpZiBgYHBhdGhgYCBpcyB0aGUgcm9vdCBvZiBhIFZpcnR1YWwgRW52aXJvbm1l
bnQgYnkKLSAgICBjaGVja2luZyBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUg
YWN0aXZhdGUgc2NyaXB0IiIiCitkZWYgX2luX3ZlbnYocGF0aDogcHkucGF0aC5sb2NhbCkgLT4g
Ym9vbDoKKyAgICAiIiJBdHRlbXB0IHRvIGRldGVjdCBpZiBgYHBhdGhgYCBpcyB0aGUgcm9vdCBv
ZiBhIFZpcnR1YWwgRW52aXJvbm1lbnQgYnkKKyAgICBjaGVja2luZyBmb3IgdGhlIGV4aXN0ZW5j
ZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWN0aXZhdGUgc2NyaXB0LiIiIgogICAgIGJpbmRpciA9IHBh
dGguam9pbigiU2NyaXB0cyIgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpIGVsc2Ug
ImJpbiIpCiAgICAgaWYgbm90IGJpbmRpci5pc2RpcigpOgogICAgICAgICByZXR1cm4gRmFsc2UK
QEAgLTI1OCw3ICszNjAsNyBAQCBkZWYgX2luX3ZlbnYocGF0aCk6CiAgICAgcmV0dXJuIGFueShb
Zm5hbWUuYmFzZW5hbWUgaW4gYWN0aXZhdGVzIGZvciBmbmFtZSBpbiBiaW5kaXIubGlzdGRpcigp
XSkKIAogCi1kZWYgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGgsIGNvbmZpZyk6CitkZWYgcHl0
ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGg6IHB5LnBhdGgubG9jYWwsIGNvbmZpZzogQ29uZmlnKSAt
PiBPcHRpb25hbFtib29sXToKICAgICBpZ25vcmVfcGF0aHMgPSBjb25maWcuX2dldGNvbmZ0ZXN0
X3BhdGhsaXN0KCJjb2xsZWN0X2lnbm9yZSIsIHBhdGg9cGF0aC5kaXJwYXRoKCkpCiAgICAgaWdu
b3JlX3BhdGhzID0gaWdub3JlX3BhdGhzIG9yIFtdCiAgICAgZXhjbHVkZW9wdCA9IGNvbmZpZy5n
ZXRvcHRpb24oImlnbm9yZSIpCkBAIC0yNjgsMjMgKzM3MCwyNCBAQCBkZWYgcHl0ZXN0X2lnbm9y
ZV9jb2xsZWN0KHBhdGgsIGNvbmZpZyk6CiAgICAgaWYgcHkucGF0aC5sb2NhbChwYXRoKSBpbiBp
Z25vcmVfcGF0aHM6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBhbGxvd19pbl92ZW52ID0g
Y29uZmlnLmdldG9wdGlvbigiY29sbGVjdF9pbl92aXJ0dWFsZW52IikKLSAgICBpZiBfaW5fdmVu
dihwYXRoKSBhbmQgbm90IGFsbG93X2luX3ZlbnY6Ci0gICAgICAgIHJldHVybiBUcnVlCisgICAg
aWdub3JlX2dsb2JzID0gY29uZmlnLl9nZXRjb25mdGVzdF9wYXRobGlzdCgKKyAgICAgICAgImNv
bGxlY3RfaWdub3JlX2dsb2IiLCBwYXRoPXBhdGguZGlycGF0aCgpCisgICAgKQorICAgIGlnbm9y
ZV9nbG9icyA9IGlnbm9yZV9nbG9icyBvciBbXQorICAgIGV4Y2x1ZGVnbG9ib3B0ID0gY29uZmln
LmdldG9wdGlvbigiaWdub3JlX2dsb2IiKQorICAgIGlmIGV4Y2x1ZGVnbG9ib3B0OgorICAgICAg
ICBpZ25vcmVfZ2xvYnMuZXh0ZW5kKFtweS5wYXRoLmxvY2FsKHgpIGZvciB4IGluIGV4Y2x1ZGVn
bG9ib3B0XSkKIAotICAgICMgU2tpcCBkdXBsaWNhdGUgcGF0aHMuCi0gICAga2VlcGR1cGxpY2F0
ZXMgPSBjb25maWcuZ2V0b3B0aW9uKCJrZWVwZHVwbGljYXRlcyIpCi0gICAgZHVwbGljYXRlX3Bh
dGhzID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuX2R1cGxpY2F0ZXBhdGhzCi0gICAgaWYgbm90IGtl
ZXBkdXBsaWNhdGVzOgotICAgICAgICBpZiBwYXRoIGluIGR1cGxpY2F0ZV9wYXRoczoKLSAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkdXBsaWNhdGVf
cGF0aHMuYWRkKHBhdGgpCisgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChzdHIocGF0aCksIHN0
cihnbG9iKSkgZm9yIGdsb2IgaW4gaWdub3JlX2dsb2JzKToKKyAgICAgICAgcmV0dXJuIFRydWUK
IAotICAgIHJldHVybiBGYWxzZQorICAgIGFsbG93X2luX3ZlbnYgPSBjb25maWcuZ2V0b3B0aW9u
KCJjb2xsZWN0X2luX3ZpcnR1YWxlbnYiKQorICAgIGlmIG5vdCBhbGxvd19pbl92ZW52IGFuZCBf
aW5fdmVudihwYXRoKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gTm9uZQogCiAK
LWRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhpdGVtcywgY29uZmlnKToKK2RlZiBw
eXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhpdGVtczogTGlzdFtub2Rlcy5JdGVtXSwgY29u
ZmlnOiBDb25maWcpIC0+IE5vbmU6CiAgICAgZGVzZWxlY3RfcHJlZml4ZXMgPSB0dXBsZShjb25m
aWcuZ2V0b3B0aW9uKCJkZXNlbGVjdCIpIG9yIFtdKQogICAgIGlmIG5vdCBkZXNlbGVjdF9wcmVm
aXhlczoKICAgICAgICAgcmV0dXJuCkBAIC0zMDIsOTkgKzQwNSw5NCBAQCBkZWYgcHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoaXRlbXMsIGNvbmZpZyk6CiAgICAgICAgIGl0ZW1zWzpdID0g
cmVtYWluaW5nCiAKIAotQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLWRlZiBfcGF0Y2hlZF9m
aW5kX21vZHVsZSgpOgotICAgICIiIlBhdGNoIGJ1ZyBpbiBwa2d1dGlsLkltcEltcG9ydGVyLmZp
bmRfbW9kdWxlCi0KLSAgICBXaGVuIHVzaW5nIHBrZ3V0aWwuZmluZF9sb2FkZXIgb24gcHl0aG9u
PDMuNCBpdCByZW1vdmVzIHN5bWxpbmtzCi0gICAgZnJvbSB0aGUgcGF0aCBkdWUgdG8gYSBjYWxs
IHRvIG9zLnBhdGgucmVhbHBhdGguIFRoaXMgaXMgbm90IGNvbnNpc3RlbnQKLSAgICB3aXRoIGFj
dHVhbGx5IGRvaW5nIHRoZSBpbXBvcnQgKGluIHRoZXNlIHZlcnNpb25zLCBwa2d1dGlsIGFuZCBf
X2ltcG9ydF9fCi0gICAgZGlkIG5vdCBzaGFyZSB0aGUgc2FtZSB1bmRlcmx5aW5nIGNvZGUpLiBU
aGlzIGNhbiBicmVhayBjb25mdGVzdAotICAgIGRpc2NvdmVyeSBmb3IgcHl0ZXN0IHdoZXJlIHN5
bWxpbmtzIGFyZSBpbnZvbHZlZC4KLQotICAgIFRoZSBvbmx5IHN1cHBvcnRlZCBweXRob248My40
IGJ5IHB5dGVzdCBpcyBweXRob24gMi43LgotICAgICIiIgotICAgIGlmIHNpeC5QWTI6ICAjIHB5
dGhvbiAzLjQrIHVzZXMgaW1wb3J0bGliIGluc3RlYWQKLQotICAgICAgICBkZWYgZmluZF9tb2R1
bGVfcGF0Y2hlZChzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgICAgICMgTm90
ZTogd2UgaWdub3JlICdwYXRoJyBhcmd1bWVudCBzaW5jZSBpdCBpcyBvbmx5IHVzZWQgdmlhIG1l
dGFfcGF0aAotICAgICAgICAgICAgc3VibmFtZSA9IGZ1bGxuYW1lLnNwbGl0KCIuIilbLTFdCi0g
ICAgICAgICAgICBpZiBzdWJuYW1lICE9IGZ1bGxuYW1lIGFuZCBzZWxmLnBhdGggaXMgTm9uZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgc2VsZi5wYXRoIGlz
IE5vbmU6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgIyBvcmlnaW5hbDogcGF0aCA9IFtvcy5wYXRoLnJlYWxwYXRoKHNlbGYu
cGF0aCldCi0gICAgICAgICAgICAgICAgcGF0aCA9IFtzZWxmLnBhdGhdCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgZmlsZSwgZmlsZW5hbWUsIGV0YyA9IHBrZ3V0aWwuaW1wLmZp
bmRfbW9kdWxlKHN1Ym5hbWUsIHBhdGgpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJldHVybiBwa2d1dGls
LkltcExvYWRlcihmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0YykKLQotICAgICAgICBvbGRf
ZmluZF9tb2R1bGUgPSBwa2d1dGlsLkltcEltcG9ydGVyLmZpbmRfbW9kdWxlCi0gICAgICAgIHBr
Z3V0aWwuSW1wSW1wb3J0ZXIuZmluZF9tb2R1bGUgPSBmaW5kX21vZHVsZV9wYXRjaGVkCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBwa2d1dGlsLkltcEltcG9ydGVyLmZpbmRfbW9kdWxlID0gb2xkX2ZpbmRfbW9kdWxlCi0gICAg
ZWxzZToKLSAgICAgICAgeWllbGQKLQotCi1jbGFzcyBGU0hvb2tQcm94eShvYmplY3QpOgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzcGF0aCwgcG0sIHJlbW92ZV9tb2RzKToKLSAgICAgICAg
c2VsZi5mc3BhdGggPSBmc3BhdGgKK2NsYXNzIEZTSG9va1Byb3h5OgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwbTogUHl0ZXN0UGx1Z2luTWFuYWdlciwgcmVtb3ZlX21vZHMpIC0+IE5vbmU6CiAg
ICAgICAgIHNlbGYucG0gPSBwbQogICAgICAgICBzZWxmLnJlbW92ZV9tb2RzID0gcmVtb3ZlX21v
ZHMKIAotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICBkZWYgX19nZXRhdHRy
X18oc2VsZiwgbmFtZTogc3RyKToKICAgICAgICAgeCA9IHNlbGYucG0uc3Vic2V0X2hvb2tfY2Fs
bGVyKG5hbWUsIHJlbW92ZV9wbHVnaW5zPXNlbGYucmVtb3ZlX21vZHMpCiAgICAgICAgIHNlbGYu
X19kaWN0X19bbmFtZV0gPSB4CiAgICAgICAgIHJldHVybiB4CiAKIAotY2xhc3MgTm9NYXRjaChF
eGNlcHRpb24pOgotICAgICIiIiByYWlzZWQgaWYgbWF0Y2hpbmcgY2Fubm90IGxvY2F0ZSBhIG1h
dGNoaW5nIG5hbWVzLiAiIiIKLQotCiBjbGFzcyBJbnRlcnJ1cHRlZChLZXlib2FyZEludGVycnVw
dCk6Ci0gICAgIiIiIHNpZ25hbHMgYW4gaW50ZXJydXB0ZWQgdGVzdCBydW4uICIiIgotICAgIF9f
bW9kdWxlX18gPSAiYnVpbHRpbnMiICAjIGZvciBweTMKKyAgICAiIiJTaWduYWxzIHRoYXQgdGhl
IHRlc3QgcnVuIHdhcyBpbnRlcnJ1cHRlZC4iIiIKKworICAgIF9fbW9kdWxlX18gPSAiYnVpbHRp
bnMiICAjIEZvciBweTMuCiAKIAogY2xhc3MgRmFpbGVkKEV4Y2VwdGlvbik6Ci0gICAgIiIiIHNp
Z25hbHMgYSBzdG9wIGFzIGZhaWxlZCB0ZXN0IHJ1bi4gIiIiCisgICAgIiIiU2lnbmFscyBhIHN0
b3AgYXMgZmFpbGVkIHRlc3QgcnVuLiIiIgogCiAKK0BhdHRyLnMKK2NsYXNzIF9iZXN0cmVscGF0
aF9jYWNoZShEaWN0W1BhdGgsIHN0cl0pOgorICAgIHBhdGggPSBhdHRyLmliKHR5cGU9UGF0aCkK
KworICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBwYXRoOiBQYXRoKSAtPiBzdHI6CisgICAgICAg
IHIgPSBiZXN0cmVscGF0aChzZWxmLnBhdGgsIHBhdGgpCisgICAgICAgIHNlbGZbcGF0aF0gPSBy
CisgICAgICAgIHJldHVybiByCisKKworQGZpbmFsCiBjbGFzcyBTZXNzaW9uKG5vZGVzLkZTQ29s
bGVjdG9yKToKICAgICBJbnRlcnJ1cHRlZCA9IEludGVycnVwdGVkCiAgICAgRmFpbGVkID0gRmFp
bGVkCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgbm9kZXMuRlND
b2xsZWN0b3IuX19pbml0X18oCi0gICAgICAgICAgICBzZWxmLCBjb25maWcucm9vdGRpciwgcGFy
ZW50PU5vbmUsIGNvbmZpZz1jb25maWcsIHNlc3Npb249c2VsZiwgbm9kZWlkPSIiCisgICAgIyBT
ZXQgb24gdGhlIHNlc3Npb24gYnkgcnVubmVyLnB5dGVzdF9zZXNzaW9uc3RhcnQuCisgICAgX3Nl
dHVwc3RhdGUgPSBOb25lICAjIHR5cGU6IFNldHVwU3RhdGUKKyAgICAjIFNldCBvbiB0aGUgc2Vz
c2lvbiBieSBmaXh0dXJlcy5weXRlc3Rfc2Vzc2lvbnN0YXJ0LgorICAgIF9maXh0dXJlbWFuYWdl
ciA9IE5vbmUgICMgdHlwZTogRml4dHVyZU1hbmFnZXIKKyAgICBleGl0c3RhdHVzID0gTm9uZSAg
IyB0eXBlOiBVbmlvbltpbnQsIEV4aXRDb2RlXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZzogQ29uZmlnKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKAorICAgICAg
ICAgICAgY29uZmlnLnJvb3RkaXIsIHBhcmVudD1Ob25lLCBjb25maWc9Y29uZmlnLCBzZXNzaW9u
PXNlbGYsIG5vZGVpZD0iIgogICAgICAgICApCiAgICAgICAgIHNlbGYudGVzdHNmYWlsZWQgPSAw
CiAgICAgICAgIHNlbGYudGVzdHNjb2xsZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYuc2hvdWxkc3Rv
cCA9IEZhbHNlCi0gICAgICAgIHNlbGYuc2hvdWxkZmFpbCA9IEZhbHNlCisgICAgICAgIHNlbGYu
c2hvdWxkc3RvcCA9IEZhbHNlICAjIHR5cGU6IFVuaW9uW2Jvb2wsIHN0cl0KKyAgICAgICAgc2Vs
Zi5zaG91bGRmYWlsID0gRmFsc2UgICMgdHlwZTogVW5pb25bYm9vbCwgc3RyXQogICAgICAgICBz
ZWxmLnRyYWNlID0gY29uZmlnLnRyYWNlLnJvb3QuZ2V0KCJjb2xsZWN0aW9uIikKLSAgICAgICAg
c2VsZi5fbm9yZWN1cnNlcGF0dGVybnMgPSBjb25maWcuZ2V0aW5pKCJub3JlY3Vyc2VkaXJzIikK
LSAgICAgICAgc2VsZi5zdGFydGRpciA9IHB5LnBhdGgubG9jYWwoKQorICAgICAgICBzZWxmLnN0
YXJ0ZGlyID0gY29uZmlnLmludm9jYXRpb25fZGlyCisgICAgICAgIHNlbGYuX2luaXRpYWxwYXRo
cyA9IGZyb3plbnNldCgpICAjIHR5cGU6IEZyb3plblNldFtweS5wYXRoLmxvY2FsXQorCisgICAg
ICAgIHNlbGYuX2Jlc3RyZWxwYXRoY2FjaGUgPSBfYmVzdHJlbHBhdGhfY2FjaGUoCisgICAgICAg
ICAgICBjb25maWcucm9vdHBhdGgKKyAgICAgICAgKSAgIyB0eXBlOiBEaWN0W1BhdGgsIHN0cl0K
IAogICAgICAgICBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHNlbGYsIG5hbWU9
InNlc3Npb24iKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fY29uZmlnKGNscywg
Y29uZmlnOiBDb25maWcpIC0+ICJTZXNzaW9uIjoKKyAgICAgICAgc2Vzc2lvbiA9IGNscy5fY3Jl
YXRlKGNvbmZpZykgICMgdHlwZTogU2Vzc2lvbgorICAgICAgICByZXR1cm4gc2Vzc2lvbgorCisg
ICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8JXMgJXMgZXhp
dHN0YXR1cz0lciB0ZXN0c2ZhaWxlZD0lZCB0ZXN0c2NvbGxlY3RlZD0lZD4iICUgKAorICAgICAg
ICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICBzZWxmLm5hbWUsCisg
ICAgICAgICAgICBnZXRhdHRyKHNlbGYsICJleGl0c3RhdHVzIiwgIjxVTlNFVD4iKSwKKyAgICAg
ICAgICAgIHNlbGYudGVzdHNmYWlsZWQsCisgICAgICAgICAgICBzZWxmLnRlc3RzY29sbGVjdGVk
LAorICAgICAgICApCisKKyAgICBkZWYgX25vZGVfbG9jYXRpb25fdG9fcmVscGF0aChzZWxmLCBu
b2RlX3BhdGg6IFBhdGgpIC0+IHN0cjoKKyAgICAgICAgIyBiZXN0cmVscGF0aCBpcyBhIHF1aXRl
IHNsb3cgZnVuY3Rpb24uCisgICAgICAgIHJldHVybiBzZWxmLl9iZXN0cmVscGF0aGNhY2hlW25v
ZGVfcGF0aF0KKwogICAgIEBob29raW1wbCh0cnlmaXJzdD1UcnVlKQotICAgIGRlZiBweXRlc3Rf
Y29sbGVjdHN0YXJ0KHNlbGYpOgorICAgIGRlZiBweXRlc3RfY29sbGVjdHN0YXJ0KHNlbGYpIC0+
IE5vbmU6CiAgICAgICAgIGlmIHNlbGYuc2hvdWxkZmFpbDoKICAgICAgICAgICAgIHJhaXNlIHNl
bGYuRmFpbGVkKHNlbGYuc2hvdWxkZmFpbCkKICAgICAgICAgaWYgc2VsZi5zaG91bGRzdG9wOgog
ICAgICAgICAgICAgcmFpc2Ugc2VsZi5JbnRlcnJ1cHRlZChzZWxmLnNob3VsZHN0b3ApCiAKICAg
ICBAaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVw
b3J0KHNlbGYsIHJlcG9ydCk6CisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCgKKyAg
ICAgICAgc2VsZiwgcmVwb3J0OiBVbmlvbltUZXN0UmVwb3J0LCBDb2xsZWN0UmVwb3J0XQorICAg
ICkgLT4gTm9uZToKICAgICAgICAgaWYgcmVwb3J0LmZhaWxlZCBhbmQgbm90IGhhc2F0dHIocmVw
b3J0LCAid2FzeGZhaWwiKToKICAgICAgICAgICAgIHNlbGYudGVzdHNmYWlsZWQgKz0gMQogICAg
ICAgICAgICAgbWF4ZmFpbCA9IHNlbGYuY29uZmlnLmdldHZhbHVlKCJtYXhmYWlsIikKQEAgLTQw
MywyMDAgKzUwMSwyOTYgQEAgY2xhc3MgU2Vzc2lvbihub2Rlcy5GU0NvbGxlY3Rvcik6CiAKICAg
ICBweXRlc3RfY29sbGVjdHJlcG9ydCA9IHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydAogCi0gICAg
ZGVmIGlzaW5pdHBhdGgoc2VsZiwgcGF0aCk6CisgICAgZGVmIGlzaW5pdHBhdGgoc2VsZiwgcGF0
aDogcHkucGF0aC5sb2NhbCkgLT4gYm9vbDoKICAgICAgICAgcmV0dXJuIHBhdGggaW4gc2VsZi5f
aW5pdGlhbHBhdGhzCiAKLSAgICBkZWYgZ2V0aG9va3Byb3h5KHNlbGYsIGZzcGF0aCk6Ci0gICAg
ICAgICMgY2hlY2sgaWYgd2UgaGF2ZSB0aGUgY29tbW9uIGNhc2Ugb2YgcnVubmluZwotICAgICAg
ICAjIGhvb2tzIHdpdGggYWxsIGNvbmZ0ZXN0LnB5IGZpbGVzCisgICAgZGVmIGdldGhvb2twcm94
eShzZWxmLCBmc3BhdGg6IHB5LnBhdGgubG9jYWwpOgorICAgICAgICAjIENoZWNrIGlmIHdlIGhh
dmUgdGhlIGNvbW1vbiBjYXNlIG9mIHJ1bm5pbmcKKyAgICAgICAgIyBob29rcyB3aXRoIGFsbCBj
b25mdGVzdC5weSBmaWxlcy4KICAgICAgICAgcG0gPSBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2Vy
Ci0gICAgICAgIG15X2NvbmZ0ZXN0bW9kdWxlcyA9IHBtLl9nZXRjb25mdGVzdG1vZHVsZXMoZnNw
YXRoKQorICAgICAgICBteV9jb25mdGVzdG1vZHVsZXMgPSBwbS5fZ2V0Y29uZnRlc3Rtb2R1bGVz
KAorICAgICAgICAgICAgZnNwYXRoLCBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImltcG9ydG1vZGUi
KQorICAgICAgICApCiAgICAgICAgIHJlbW92ZV9tb2RzID0gcG0uX2NvbmZ0ZXN0X3BsdWdpbnMu
ZGlmZmVyZW5jZShteV9jb25mdGVzdG1vZHVsZXMpCiAgICAgICAgIGlmIHJlbW92ZV9tb2RzOgot
ICAgICAgICAgICAgIyBvbmUgb3IgbW9yZSBjb25mdGVzdHMgYXJlIG5vdCBpbiB1c2UgYXQgdGhp
cyBmc3BhdGgKLSAgICAgICAgICAgIHByb3h5ID0gRlNIb29rUHJveHkoZnNwYXRoLCBwbSwgcmVt
b3ZlX21vZHMpCisgICAgICAgICAgICAjIE9uZSBvciBtb3JlIGNvbmZ0ZXN0cyBhcmUgbm90IGlu
IHVzZSBhdCB0aGlzIGZzcGF0aC4KKyAgICAgICAgICAgIHByb3h5ID0gRlNIb29rUHJveHkocG0s
IHJlbW92ZV9tb2RzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBhbGwgcGx1Z2lzIGFy
ZSBhY3RpdmUgZm9yIHRoaXMgZnNwYXRoCisgICAgICAgICAgICAjIEFsbCBwbHVnaW5zIGFyZSBh
Y3RpdmUgZm9yIHRoaXMgZnNwYXRoLgogICAgICAgICAgICAgcHJveHkgPSBzZWxmLmNvbmZpZy5o
b29rCiAgICAgICAgIHJldHVybiBwcm94eQogCi0gICAgZGVmIHBlcmZvcm1fY29sbGVjdChzZWxm
LCBhcmdzPU5vbmUsIGdlbml0ZW1zPVRydWUpOgorICAgIGRlZiBfcmVjdXJzZShzZWxmLCBkaXJl
bnRyeTogIm9zLkRpckVudHJ5W3N0cl0iKSAtPiBib29sOgorICAgICAgICBpZiBkaXJlbnRyeS5u
YW1lID09ICJfX3B5Y2FjaGVfXyI6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
cGF0aCA9IHB5LnBhdGgubG9jYWwoZGlyZW50cnkucGF0aCkKKyAgICAgICAgaWhvb2sgPSBzZWxm
LmdldGhvb2twcm94eShwYXRoLmRpcnBhdGgoKSkKKyAgICAgICAgaWYgaWhvb2sucHl0ZXN0X2ln
bm9yZV9jb2xsZWN0KHBhdGg9cGF0aCwgY29uZmlnPXNlbGYuY29uZmlnKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICBub3JlY3Vyc2VwYXR0ZXJucyA9IHNlbGYuY29uZmlnLmdl
dGluaSgibm9yZWN1cnNlZGlycyIpCisgICAgICAgIGlmIGFueShwYXRoLmNoZWNrKGZubWF0Y2g9
cGF0KSBmb3IgcGF0IGluIG5vcmVjdXJzZXBhdHRlcm5zKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9jb2xsZWN0ZmlsZSgKKyAgICAg
ICAgc2VsZiwgcGF0aDogcHkucGF0aC5sb2NhbCwgaGFuZGxlX2R1cGVzOiBib29sID0gVHJ1ZQor
ICAgICkgLT4gU2VxdWVuY2Vbbm9kZXMuQ29sbGVjdG9yXToKKyAgICAgICAgYXNzZXJ0ICgKKyAg
ICAgICAgICAgIHBhdGguaXNmaWxlKCkKKyAgICAgICAgKSwgInshcn0gaXMgbm90IGEgZmlsZSAo
aXNkaXI9eyFyfSwgZXhpc3RzPXshcn0sIGlzbGluaz17IXJ9KSIuZm9ybWF0KAorICAgICAgICAg
ICAgcGF0aCwgcGF0aC5pc2RpcigpLCBwYXRoLmV4aXN0cygpLCBwYXRoLmlzbGluaygpCisgICAg
ICAgICkKKyAgICAgICAgaWhvb2sgPSBzZWxmLmdldGhvb2twcm94eShwYXRoKQorICAgICAgICBp
ZiBub3Qgc2VsZi5pc2luaXRwYXRoKHBhdGgpOgorICAgICAgICAgICAgaWYgaWhvb2sucHl0ZXN0
X2lnbm9yZV9jb2xsZWN0KHBhdGg9cGF0aCwgY29uZmlnPXNlbGYuY29uZmlnKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKCkKKworICAgICAgICBpZiBoYW5kbGVfZHVwZXM6CisgICAgICAgICAg
ICBrZWVwZHVwbGljYXRlcyA9IHNlbGYuY29uZmlnLmdldG9wdGlvbigia2VlcGR1cGxpY2F0ZXMi
KQorICAgICAgICAgICAgaWYgbm90IGtlZXBkdXBsaWNhdGVzOgorICAgICAgICAgICAgICAgIGR1
cGxpY2F0ZV9wYXRocyA9IHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIuX2R1cGxpY2F0ZXBhdGhz
CisgICAgICAgICAgICAgICAgaWYgcGF0aCBpbiBkdXBsaWNhdGVfcGF0aHM6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIGR1cGxpY2F0ZV9wYXRocy5hZGQocGF0aCkKKworICAgICAgICByZXR1cm4gaWhvb2su
cHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoPXBhdGgsIHBhcmVudD1zZWxmKSAgIyB0eXBlOiBpZ25v
cmVbbm8tYW55LXJldHVybl0KKworICAgIEBvdmVybG9hZAorICAgIGRlZiBwZXJmb3JtX2NvbGxl
Y3QoCisgICAgICAgIHNlbGYsIGFyZ3M6IE9wdGlvbmFsW1NlcXVlbmNlW3N0cl1dID0gLi4uLCBn
ZW5pdGVtczogIkxpdGVyYWxbVHJ1ZV0iID0gLi4uCisgICAgKSAtPiBTZXF1ZW5jZVtub2Rlcy5J
dGVtXToKKyAgICAgICAgLi4uCisKKyAgICBAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorICAgIGRl
ZiBwZXJmb3JtX2NvbGxlY3QoICAjIG5vcWE6IEY4MTEKKyAgICAgICAgc2VsZiwgYXJnczogT3B0
aW9uYWxbU2VxdWVuY2Vbc3RyXV0gPSAuLi4sIGdlbml0ZW1zOiBib29sID0gLi4uCisgICAgKSAt
PiBTZXF1ZW5jZVtVbmlvbltub2Rlcy5JdGVtLCBub2Rlcy5Db2xsZWN0b3JdXToKKyAgICAgICAg
Li4uCisKKyAgICBkZWYgcGVyZm9ybV9jb2xsZWN0KCAgIyBub3FhOiBGODExCisgICAgICAgIHNl
bGYsIGFyZ3M6IE9wdGlvbmFsW1NlcXVlbmNlW3N0cl1dID0gTm9uZSwgZ2VuaXRlbXM6IGJvb2wg
PSBUcnVlCisgICAgKSAtPiBTZXF1ZW5jZVtVbmlvbltub2Rlcy5JdGVtLCBub2Rlcy5Db2xsZWN0
b3JdXToKKyAgICAgICAgIiIiUGVyZm9ybSB0aGUgY29sbGVjdGlvbiBwaGFzZSBmb3IgdGhpcyBz
ZXNzaW9uLgorCisgICAgICAgIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBkZWZhdWx0CisgICAgICAg
IDpmdW5jOmBweXRlc3RfY29sbGVjdGlvbiA8X3B5dGVzdC5ob29rc3BlYy5weXRlc3RfY29sbGVj
dGlvbj5gIGhvb2sKKyAgICAgICAgaW1wbGVtZW50YXRpb247IHNlZSB0aGUgZG9jdW1lbnRhdGlv
biBvZiB0aGlzIGhvb2sgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgRm9yIHRlc3RpbmcgcHVy
cG9zZXMsIGl0IG1heSBhbHNvIGJlIGNhbGxlZCBkaXJlY3RseSBvbiBhIGZyZXNoCisgICAgICAg
IGBgU2Vzc2lvbmBgLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb24gbm9ybWFsbHkgcmVjdXJzaXZl
bHkgZXhwYW5kcyBhbnkgY29sbGVjdG9ycyBjb2xsZWN0ZWQKKyAgICAgICAgZnJvbSB0aGUgc2Vz
c2lvbiB0byB0aGVpciBpdGVtcywgYW5kIG9ubHkgaXRlbXMgYXJlIHJldHVybmVkLiBGb3IKKyAg
ICAgICAgdGVzdGluZyBwdXJwb3NlcywgdGhpcyBtYXkgYmUgc3VwcHJlc3NlZCBieSBwYXNzaW5n
IGBgZ2VuaXRlbXM9RmFsc2VgYCwKKyAgICAgICAgaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuIHZh
bHVlIGNvbnRhaW5zIHRoZXNlIGNvbGxlY3RvcnMgdW5leHBhbmRlZCwKKyAgICAgICAgYW5kIGBg
c2Vzc2lvbi5pdGVtc2BgIGlzIGVtcHR5LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgYXJncyBp
cyBOb25lOgorICAgICAgICAgICAgYXJncyA9IHNlbGYuY29uZmlnLmFyZ3MKKworICAgICAgICBz
ZWxmLnRyYWNlKCJwZXJmb3JtX2NvbGxlY3QiLCBzZWxmLCBhcmdzKQorICAgICAgICBzZWxmLnRy
YWNlLnJvb3QuaW5kZW50ICs9IDEKKworICAgICAgICBzZWxmLl9ub3Rmb3VuZCA9IFtdICAjIHR5
cGU6IExpc3RbVHVwbGVbc3RyLCBTZXF1ZW5jZVtub2Rlcy5Db2xsZWN0b3JdXV0KKyAgICAgICAg
c2VsZi5faW5pdGlhbF9wYXJ0cyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbcHkucGF0aC5sb2Nh
bCwgTGlzdFtzdHJdXV0KKyAgICAgICAgc2VsZi5pdGVtcyA9IFtdICAjIHR5cGU6IExpc3Rbbm9k
ZXMuSXRlbV0KKwogICAgICAgICBob29rID0gc2VsZi5jb25maWcuaG9vaworCisgICAgICAgIGl0
ZW1zID0gc2VsZi5pdGVtcyAgIyB0eXBlOiBTZXF1ZW5jZVtVbmlvbltub2Rlcy5JdGVtLCBub2Rl
cy5Db2xsZWN0b3JdXQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpdGVtcyA9IHNlbGYuX3Bl
cmZvcm1fY29sbGVjdChhcmdzLCBnZW5pdGVtcykKKyAgICAgICAgICAgIGluaXRpYWxwYXRocyA9
IFtdICAjIHR5cGU6IExpc3RbcHkucGF0aC5sb2NhbF0KKyAgICAgICAgICAgIGZvciBhcmcgaW4g
YXJnczoKKyAgICAgICAgICAgICAgICBmc3BhdGgsIHBhcnRzID0gcmVzb2x2ZV9jb2xsZWN0aW9u
X2FyZ3VtZW50KAorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5pbnZvY2F0aW9uX3Bh
cmFtcy5kaXIsCisgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgICAgICAgICAg
YXNfcHlwYXRoPXNlbGYuY29uZmlnLm9wdGlvbi5weWFyZ3MsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIHNlbGYuX2luaXRpYWxfcGFydHMuYXBwZW5kKChmc3BhdGgsIHBhcnRz
KSkKKyAgICAgICAgICAgICAgICBpbml0aWFscGF0aHMuYXBwZW5kKGZzcGF0aCkKKyAgICAgICAg
ICAgIHNlbGYuX2luaXRpYWxwYXRocyA9IGZyb3plbnNldChpbml0aWFscGF0aHMpCisgICAgICAg
ICAgICByZXAgPSBjb2xsZWN0X29uZV9ub2RlKHNlbGYpCisgICAgICAgICAgICBzZWxmLmlob29r
LnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydD1yZXApCisgICAgICAgICAgICBzZWxmLnRyYWNl
LnJvb3QuaW5kZW50IC09IDEKKyAgICAgICAgICAgIGlmIHNlbGYuX25vdGZvdW5kOgorICAgICAg
ICAgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGFyZywgY29scyBpbiBz
ZWxmLl9ub3Rmb3VuZDoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9ICIobm8gbmFtZSB7IXJ9
IGluIGFueSBvZiB7IXJ9KSIuZm9ybWF0KGFyZywgY29scykKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZCgibm90IGZvdW5kOiB7fVxue30iLmZvcm1hdChhcmcsIGxpbmUpKQorICAg
ICAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoKmVycm9ycykKKyAgICAgICAgICAgIGlmIG5v
dCBnZW5pdGVtczoKKyAgICAgICAgICAgICAgICBpdGVtcyA9IHJlcC5yZXN1bHQKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcmVwLnBhc3NlZDoKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIG5vZGUgaW4gcmVwLnJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuaXRlbXMuZXh0ZW5kKHNlbGYuZ2VuaXRlbXMobm9kZSkpCisKICAgICAgICAgICAgIHNlbGYu
Y29uZmlnLnBsdWdpbm1hbmFnZXIuY2hlY2tfcGVuZGluZygpCiAgICAgICAgICAgICBob29rLnB5
dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKAogICAgICAgICAgICAgICAgIHNlc3Npb249c2Vs
ZiwgY29uZmlnPXNlbGYuY29uZmlnLCBpdGVtcz1pdGVtcwogICAgICAgICAgICAgKQogICAgICAg
ICBmaW5hbGx5OgogICAgICAgICAgICAgaG9vay5weXRlc3RfY29sbGVjdGlvbl9maW5pc2goc2Vz
c2lvbj1zZWxmKQorCiAgICAgICAgIHNlbGYudGVzdHNjb2xsZWN0ZWQgPSBsZW4oaXRlbXMpCiAg
ICAgICAgIHJldHVybiBpdGVtcwogCi0gICAgZGVmIF9wZXJmb3JtX2NvbGxlY3Qoc2VsZiwgYXJn
cywgZ2VuaXRlbXMpOgotICAgICAgICBpZiBhcmdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBhcmdz
ID0gc2VsZi5jb25maWcuYXJncwotICAgICAgICBzZWxmLnRyYWNlKCJwZXJmb3JtX2NvbGxlY3Qi
LCBzZWxmLCBhcmdzKQotICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50ICs9IDEKLSAgICAg
ICAgc2VsZi5fbm90Zm91bmQgPSBbXQotICAgICAgICBzZWxmLl9pbml0aWFscGF0aHMgPSBzZXQo
KQotICAgICAgICBzZWxmLl9pbml0aWFscGFydHMgPSBbXQotICAgICAgICBzZWxmLml0ZW1zID0g
aXRlbXMgPSBbXQotICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICBwYXJ0cyA9
IHNlbGYuX3BhcnNlYXJnKGFyZykKLSAgICAgICAgICAgIHNlbGYuX2luaXRpYWxwYXJ0cy5hcHBl
bmQocGFydHMpCi0gICAgICAgICAgICBzZWxmLl9pbml0aWFscGF0aHMuYWRkKHBhcnRzWzBdKQot
ICAgICAgICByZXAgPSBjb2xsZWN0X29uZV9ub2RlKHNlbGYpCi0gICAgICAgIHNlbGYuaWhvb2su
cHl0ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcCkKLSAgICAgICAgc2VsZi50cmFjZS5yb290
LmluZGVudCAtPSAxCi0gICAgICAgIGlmIHNlbGYuX25vdGZvdW5kOgotICAgICAgICAgICAgZXJy
b3JzID0gW10KLSAgICAgICAgICAgIGZvciBhcmcsIGV4YyBpbiBzZWxmLl9ub3Rmb3VuZDoKLSAg
ICAgICAgICAgICAgICBsaW5lID0gIihubyBuYW1lICVyIGluIGFueSBvZiAlcikiICUgKGFyZywg
ZXhjLmFyZ3NbMF0pCi0gICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgibm90IGZvdW5kOiAl
c1xuJXMiICUgKGFyZywgbGluZSkpCi0gICAgICAgICAgICAgICAgIyBYWFg6IHRlc3QgdGhpcwot
ICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigqZXJyb3JzKQotICAgICAgICBpZiBub3QgZ2Vu
aXRlbXM6Ci0gICAgICAgICAgICByZXR1cm4gcmVwLnJlc3VsdAotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgaWYgcmVwLnBhc3NlZDoKLSAgICAgICAgICAgICAgICBmb3Igbm9kZSBpbiByZXAu
cmVzdWx0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLml0ZW1zLmV4dGVuZChzZWxmLmdlbml0
ZW1zKG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZW1zCi0KLSAgICBkZWYgY29sbGVjdChz
ZWxmKToKLSAgICAgICAgZm9yIHBhcnRzIGluIHNlbGYuX2luaXRpYWxwYXJ0czoKLSAgICAgICAg
ICAgIGFyZyA9ICI6OiIuam9pbihtYXAoc3RyLCBwYXJ0cykpCi0gICAgICAgICAgICBzZWxmLnRy
YWNlKCJwcm9jZXNzaW5nIGFyZ3VtZW50IiwgYXJnKQotICAgICAgICAgICAgc2VsZi50cmFjZS5y
b290LmluZGVudCArPSAxCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIHgg
aW4gc2VsZi5fY29sbGVjdChhcmcpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB4Ci0gICAg
ICAgICAgICBleGNlcHQgTm9NYXRjaDoKLSAgICAgICAgICAgICAgICAjIHdlIGFyZSBpbnNpZGUg
YSBtYWtlX3JlcG9ydCBob29rIHNvCi0gICAgICAgICAgICAgICAgIyB3ZSBjYW5ub3QgZGlyZWN0
bHkgcGFzcyB0aHJvdWdoIHRoZSBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLl9ub3Rm
b3VuZC5hcHBlbmQoKGFyZywgc3lzLmV4Y19pbmZvKClbMV0pKQorICAgIGRlZiBjb2xsZWN0KHNl
bGYpIC0+IEl0ZXJhdG9yW1VuaW9uW25vZGVzLkl0ZW0sIG5vZGVzLkNvbGxlY3Rvcl1dOgorICAg
ICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBQYWNrYWdlCiAKLSAgICAgICAgICAgIHNl
bGYudHJhY2Uucm9vdC5pbmRlbnQgLT0gMQorICAgICAgICAjIEtlZXAgdHJhY2sgb2YgYW55IGNv
bGxlY3RlZCBub2RlcyBpbiBoZXJlLCBzbyB3ZSBkb24ndCBkdXBsaWNhdGUgZml4dHVyZXMuCisg
ICAgICAgIG5vZGVfY2FjaGUxID0ge30gICMgdHlwZTogRGljdFtweS5wYXRoLmxvY2FsLCBTZXF1
ZW5jZVtub2Rlcy5Db2xsZWN0b3JdXQorICAgICAgICBub2RlX2NhY2hlMiA9ICgKKyAgICAgICAg
ICAgIHt9CisgICAgICAgICkgICMgdHlwZTogRGljdFtUdXBsZVtUeXBlW25vZGVzLkNvbGxlY3Rv
cl0sIHB5LnBhdGgubG9jYWxdLCBub2Rlcy5Db2xsZWN0b3JdCiAKLSAgICBkZWYgX2NvbGxlY3Qo
c2VsZiwgYXJnKToKLSAgICAgICAgbmFtZXMgPSBzZWxmLl9wYXJzZWFyZyhhcmcpCi0gICAgICAg
IHBhdGggPSBuYW1lcy5wb3AoMCkKLSAgICAgICAgaWYgcGF0aC5jaGVjayhkaXI9MSk6Ci0gICAg
ICAgICAgICBhc3NlcnQgbm90IG5hbWVzLCAiaW52YWxpZCBhcmcgJXIiICUgKGFyZywpCi0gICAg
ICAgICAgICBmb3IgcGF0aCBpbiBwYXRoLnZpc2l0KAotICAgICAgICAgICAgICAgIGZpbD1sYW1i
ZGEgeDogeC5jaGVjayhmaWxlPTEpLCByZWM9c2VsZi5fcmVjdXJzZSwgYmY9VHJ1ZSwgc29ydD1U
cnVlCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYuX2NvbGxl
Y3RmaWxlKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB4Ci0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBhc3NlcnQgcGF0aC5jaGVjayhmaWxlPTEpCi0gICAgICAgICAgICBmb3Ig
eCBpbiBzZWxmLm1hdGNobm9kZXMoc2VsZi5fY29sbGVjdGZpbGUocGF0aCksIG5hbWVzKToKLSAg
ICAgICAgICAgICAgICB5aWVsZCB4CisgICAgICAgICMgS2VlcCB0cmFjayBvZiBhbnkgY29sbGVj
dGVkIGNvbGxlY3RvcnMgaW4gbWF0Y2hub2RlcyBwYXRocywgc28gdGhleQorICAgICAgICAjIGFy
ZSBub3QgY29sbGVjdGVkIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBtYXRjaG5vZGVzX2NhY2hl
ID0gKAorICAgICAgICAgICAge30KKyAgICAgICAgKSAgIyB0eXBlOiBEaWN0W1R1cGxlW1R5cGVb
bm9kZXMuQ29sbGVjdG9yXSwgc3RyXSwgQ29sbGVjdFJlcG9ydF0KIAotICAgIGRlZiBfY29sbGVj
dGZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlob29rID0gc2VsZi5nZXRob29rcHJveHkocGF0
aCkKLSAgICAgICAgaWYgbm90IHNlbGYuaXNpbml0cGF0aChwYXRoKToKLSAgICAgICAgICAgIGlm
IGlob29rLnB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoPXBhdGgsIGNvbmZpZz1zZWxmLmNvbmZp
Zyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgpCi0gICAgICAgIHJldHVybiBpaG9vay5weXRl
c3RfY29sbGVjdF9maWxlKHBhdGg9cGF0aCwgcGFyZW50PXNlbGYpCisgICAgICAgICMgRGlybmFt
ZXMgb2YgcGtncyB3aXRoIGR1bmRlci1pbml0IGZpbGVzLgorICAgICAgICBwa2dfcm9vdHMgPSB7
fSAgIyB0eXBlOiBEaWN0W3N0ciwgUGFja2FnZV0KIAotICAgIGRlZiBfcmVjdXJzZShzZWxmLCBw
YXRoKToKLSAgICAgICAgaWhvb2sgPSBzZWxmLmdldGhvb2twcm94eShwYXRoLmRpcnBhdGgoKSkK
LSAgICAgICAgaWYgaWhvb2sucHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGg9cGF0aCwgY29uZmln
PXNlbGYuY29uZmlnKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmb3IgcGF0IGluIHNl
bGYuX25vcmVjdXJzZXBhdHRlcm5zOgotICAgICAgICAgICAgaWYgcGF0aC5jaGVjayhmbm1hdGNo
PXBhdCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlob29rID0gc2Vs
Zi5nZXRob29rcHJveHkocGF0aCkKLSAgICAgICAgaWhvb2sucHl0ZXN0X2NvbGxlY3RfZGlyZWN0
b3J5KHBhdGg9cGF0aCwgcGFyZW50PXNlbGYpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBk
ZWYgX3RyeWNvbnZlcnRweWFyZyhzZWxmLCB4KToKLSAgICAgICAgIiIiQ29udmVydCBhIGRvdHRl
ZCBtb2R1bGUgbmFtZSB0byBwYXRoLgotCi0gICAgICAgICIiIgorICAgICAgICBmb3IgYXJncGF0
aCwgbmFtZXMgaW4gc2VsZi5faW5pdGlhbF9wYXJ0czoKKyAgICAgICAgICAgIHNlbGYudHJhY2Uo
InByb2Nlc3NpbmcgYXJndW1lbnQiLCAoYXJncGF0aCwgbmFtZXMpKQorICAgICAgICAgICAgc2Vs
Zi50cmFjZS5yb290LmluZGVudCArPSAxCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0
aCBfcGF0Y2hlZF9maW5kX21vZHVsZSgpOgotICAgICAgICAgICAgICAgIGxvYWRlciA9IHBrZ3V0
aWwuZmluZF9sb2FkZXIoeCkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAg
ICAgcmV0dXJuIHgKLSAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1
cm4geAotICAgICAgICAjIFRoaXMgbWV0aG9kIGlzIHNvbWV0aW1lcyBpbnZva2VkIHdoZW4gQXNz
ZXJ0aW9uUmV3cml0aW5nSG9vaywgd2hpY2gKLSAgICAgICAgIyBkb2VzIG5vdCBkZWZpbmUgYSBn
ZXRfZmlsZW5hbWUgbWV0aG9kLCBpcyBhbHJlYWR5IGluIHBsYWNlOgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB3aXRoIF9wYXRjaGVkX2ZpbmRfbW9kdWxlKCk6Ci0gICAgICAgICAgICAgICAg
cGF0aCA9IGxvYWRlci5nZXRfZmlsZW5hbWUoeCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVy
cm9yOgotICAgICAgICAgICAgIyBSZXRyaWV2ZSBwYXRoIGZyb20gQXNzZXJ0aW9uUmV3cml0aW5n
SG9vazoKLSAgICAgICAgICAgIHBhdGggPSBsb2FkZXIubW9kdWxlc1t4XVswXS5jb19maWxlbmFt
ZQotICAgICAgICBpZiBsb2FkZXIuaXNfcGFja2FnZSh4KToKLSAgICAgICAgICAgIHBhdGggPSBv
cy5wYXRoLmRpcm5hbWUocGF0aCkKLSAgICAgICAgcmV0dXJuIHBhdGgKLQotICAgIGRlZiBfcGFy
c2Vhcmcoc2VsZiwgYXJnKToKLSAgICAgICAgIiIiIHJldHVybiAoZnNwYXRoLCBuYW1lcykgdHVw
bGUgYWZ0ZXIgY2hlY2tpbmcgdGhlIGZpbGUgZXhpc3RzLiAiIiIKLSAgICAgICAgcGFydHMgPSBz
dHIoYXJnKS5zcGxpdCgiOjoiKQotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24ucHlhcmdz
OgotICAgICAgICAgICAgcGFydHNbMF0gPSBzZWxmLl90cnljb252ZXJ0cHlhcmcocGFydHNbMF0p
Ci0gICAgICAgIHJlbHBhdGggPSBwYXJ0c1swXS5yZXBsYWNlKCIvIiwgb3Muc2VwKQotICAgICAg
ICBwYXRoID0gc2VsZi5jb25maWcuaW52b2NhdGlvbl9kaXIuam9pbihyZWxwYXRoLCBhYnM9VHJ1
ZSkKLSAgICAgICAgaWYgbm90IHBhdGguY2hlY2soKToKLSAgICAgICAgICAgIGlmIHNlbGYuY29u
ZmlnLm9wdGlvbi5weWFyZ3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigKLSAg
ICAgICAgICAgICAgICAgICAgImZpbGUgb3IgcGFja2FnZSBub3QgZm91bmQ6ICIgKyBhcmcgKyAi
IChtaXNzaW5nIF9faW5pdF9fLnB5PykiCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
IyBTdGFydCB3aXRoIGEgU2Vzc2lvbiByb290LCBhbmQgZGVsdmUgdG8gYXJncGF0aCBpdGVtIChk
aXIgb3IgZmlsZSkKKyAgICAgICAgICAgICMgYW5kIHN0YWNrIGFsbCBQYWNrYWdlcyBmb3VuZCBv
biB0aGUgd2F5LgorICAgICAgICAgICAgIyBObyBwb2ludCBpbiBmaW5kaW5nIHBhY2thZ2VzIHdo
ZW4gY29sbGVjdGluZyBkb2N0ZXN0cy4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbmZpZy5n
ZXRvcHRpb24oImRvY3Rlc3Rtb2R1bGVzIiwgRmFsc2UpOgorICAgICAgICAgICAgICAgIHBtID0g
c2VsZi5jb25maWcucGx1Z2lubWFuYWdlcgorICAgICAgICAgICAgICAgIGZvciBwYXJlbnQgaW4g
cmV2ZXJzZWQoYXJncGF0aC5wYXJ0cygpKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcG0uX2Nv
bmZjdXRkaXIgYW5kIHBtLl9jb25mY3V0ZGlyLnJlbHRvKHBhcmVudCk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmVudC5pc2Rpcigp
OgorICAgICAgICAgICAgICAgICAgICAgICAgcGtnaW5pdCA9IHBhcmVudC5qb2luKCJfX2luaXRf
Xy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwa2dpbml0LmlzZmlsZSgpIGFuZCBw
a2dpbml0IG5vdCBpbiBub2RlX2NhY2hlMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2wgPSBzZWxmLl9jb2xsZWN0ZmlsZShwa2dpbml0LCBoYW5kbGVfZHVwZXM9RmFsc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29sOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKGNvbFswXSwgUGFja2FnZSk6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwa2dfcm9vdHNbc3RyKHBhcmVudCldID0gY29sWzBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVfY2FjaGUxW2NvbFswXS5mc3BhdGhdID0g
W2NvbFswXV0KKworICAgICAgICAgICAgIyBJZiBpdCdzIGEgZGlyZWN0b3J5IGFyZ3VtZW50LCBy
ZWN1cnNlIGFuZCBsb29rIGZvciBhbnkgU3VicGFja2FnZXMuCisgICAgICAgICAgICAjIExldCB0
aGUgUGFja2FnZSBjb2xsZWN0b3IgZGVhbCB3aXRoIHN1Ym5vZGVzLCBkb24ndCBjb2xsZWN0IGhl
cmUuCisgICAgICAgICAgICBpZiBhcmdwYXRoLmNoZWNrKGRpcj0xKToKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgbm90IG5hbWVzLCAiaW52YWxpZCBhcmcgeyFyfSIuZm9ybWF0KChhcmdwYXRoLCBu
YW1lcykpCisKKyAgICAgICAgICAgICAgICBzZWVuX2RpcnMgPSBzZXQoKSAgIyB0eXBlOiBTZXRb
cHkucGF0aC5sb2NhbF0KKyAgICAgICAgICAgICAgICBmb3IgZGlyZW50cnkgaW4gdmlzaXQoc3Ry
KGFyZ3BhdGgpLCBzZWxmLl9yZWN1cnNlKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRp
cmVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgICAgICAgICAgcGF0aCA9IHB5LnBhdGgubG9jYWwoZGlyZW50cnkucGF0aCkKKyAg
ICAgICAgICAgICAgICAgICAgZGlycGF0aCA9IHBhdGguZGlycGF0aCgpCisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgZGlycGF0aCBub3QgaW4gc2Vlbl9kaXJzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgIyBDb2xsZWN0IHBhY2thZ2VzIGZpcnN0LgorICAgICAgICAgICAgICAgICAgICAgICAg
c2Vlbl9kaXJzLmFkZChkaXJwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgcGtnaW5pdCA9
IGRpcnBhdGguam9pbigiX19pbml0X18ucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
cGtnaW5pdC5leGlzdHMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBz
ZWxmLl9jb2xsZWN0ZmlsZShwa2dpbml0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeWllbGQgeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHgsIFBhY2thZ2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX3Jv
b3RzW3N0cihkaXJwYXRoKV0gPSB4CisgICAgICAgICAgICAgICAgICAgIGlmIHN0cihkaXJwYXRo
KSBpbiBwa2dfcm9vdHM6CisgICAgICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBjb2xsZWN0
IHBhY2thZ2VzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYuX2NvbGxlY3RmaWxlKHBhdGgpOgorICAgICAg
ICAgICAgICAgICAgICAgICAga2V5ID0gKHR5cGUoeCksIHguZnNwYXRoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYga2V5IGluIG5vZGVfY2FjaGUyOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHlpZWxkIG5vZGVfY2FjaGUyW2tleV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZV9jYWNoZTJba2V5XSA9IHgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB4CiAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoImZpbGUgbm90IGZvdW5kOiAiICsgYXJnKQot
ICAgICAgICBwYXJ0c1swXSA9IHBhdGgKLSAgICAgICAgcmV0dXJuIHBhcnRzCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IGFyZ3BhdGguY2hlY2soZmlsZT0xKQorCisgICAgICAgICAgICAgICAgaWYg
YXJncGF0aCBpbiBub2RlX2NhY2hlMToKKyAgICAgICAgICAgICAgICAgICAgY29sID0gbm9kZV9j
YWNoZTFbYXJncGF0aF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBjb2xsZWN0X3Jvb3QgPSBwa2dfcm9vdHMuZ2V0KGFyZ3BhdGguZGlybmFtZSwgc2VsZikKKyAg
ICAgICAgICAgICAgICAgICAgY29sID0gY29sbGVjdF9yb290Ll9jb2xsZWN0ZmlsZShhcmdwYXRo
LCBoYW5kbGVfZHVwZXM9RmFsc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVfY2FjaGUxW2FyZ3BhdGhdID0gY29sCisKKyAgICAgICAg
ICAgICAgICBtYXRjaGluZyA9IFtdCisgICAgICAgICAgICAgICAgd29yayA9IFsKKyAgICAgICAg
ICAgICAgICAgICAgKGNvbCwgbmFtZXMpCisgICAgICAgICAgICAgICAgXSAgIyB0eXBlOiBMaXN0
W1R1cGxlW1NlcXVlbmNlW1VuaW9uW25vZGVzLkl0ZW0sIG5vZGVzLkNvbGxlY3Rvcl1dLCBTZXF1
ZW5jZVtzdHJdXV0KKyAgICAgICAgICAgICAgICB3aGlsZSB3b3JrOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLnRyYWNlKCJtYXRjaG5vZGVzIiwgY29sLCBuYW1lcykKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCArPSAxCisKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2hub2RlcywgbWF0Y2huYW1lcyA9IHdvcmsucG9wKCkKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIG5vZGUgaW4gbWF0Y2hub2RlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBt
YXRjaG5hbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nLmFwcGVuZChu
b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCBub2Rlcy5Db2xsZWN0b3IpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAg
ICBrZXkgPSAodHlwZShub2RlKSwgbm9kZS5ub2RlaWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBrZXkgaW4gbWF0Y2hub2Rlc19jYWNoZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXAgPSBtYXRjaG5vZGVzX2NhY2hlW2tleV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwID0gY29sbGVjdF9vbmVfbm9kZShu
b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNobm9kZXNfY2FjaGVba2V5XSA9
IHJlcAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVwLnBhc3NlZDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJtYXRjaG5vZGVzID0gW10KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgciBpbiByZXAucmVzdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIFRPRE86IFJlbW92ZSBwYXJhbWV0cml6ZWQgd29ya2Fyb3VuZCBvbmNlIGNvbGxlY3Rp
b24gc3RydWN0dXJlIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
cGFyYW1ldHJpemF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLm5hbWUgPT0gbWF0Y2huYW1lc1sw
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igci5uYW1lLnNwbGl0KCJb
IilbMF0gPT0gbWF0Y2huYW1lc1swXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWF0Y2hub2Rlcy5hcHBl
bmQocikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdWJtYXRjaG5vZGVzOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrLmFwcGVuZCgoc3VibWF0Y2hub2Rlcywg
bWF0Y2huYW1lc1sxOl0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIEFjY2Vw
dCBJRHMgdGhhdCBkb24ndCBoYXZlICIoKSIgZm9yIGNsYXNzIGluc3RhbmNlcy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGlmIGxlbihyZXAucmVzdWx0KSA9PSAxIGFuZCByZXAucmVz
dWx0WzBdLm5hbWUgPT0gIigpIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29y
ay5hcHBlbmQoKHJlcC5yZXN1bHQsIG1hdGNobmFtZXMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlcG9ydCBjb2xsZWN0aW9u
IGZhaWx1cmVzIGhlcmUgdG8gYXZvaWQgZmFpbGluZyB0byBydW4gc29tZSB0ZXN0CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWZpZWQgaW4gdGhlIGNvbW1hbmQgbGluZSBiZWNh
dXNlIHRoZSBtb2R1bGUgY291bGQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBpbXBvcnRlZCAoIzEzNCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5paG9v
ay5weXRlc3RfY29sbGVjdHJlcG9ydChyZXBvcnQ9cmVwKQorCisgICAgICAgICAgICAgICAgICAg
IHNlbGYudHJhY2UoIm1hdGNobm9kZXMgZmluaXNoZWQgLT4gIiwgbGVuKG1hdGNoaW5nKSwgIm5v
ZGVzIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCAtPSAxCisK
KyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2hpbmc6CisgICAgICAgICAgICAgICAgICAgIHJl
cG9ydF9hcmcgPSAiOjoiLmpvaW4oKHN0cihhcmdwYXRoKSwgKm5hbWVzKSkKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbm90Zm91bmQuYXBwZW5kKChyZXBvcnRfYXJnLCBjb2wpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBJZiBfX2luaXRfXy5w
eSB3YXMgdGhlIG9ubHkgZmlsZSByZXF1ZXN0ZWQsIHRoZW4gdGhlIG1hdGNoZWQgbm9kZSB3aWxs
IGJlCisgICAgICAgICAgICAgICAgIyB0aGUgY29ycmVzcG9uZGluZyBQYWNrYWdlLCBhbmQgdGhl
IGZpcnN0IHlpZWxkZWQgaXRlbSB3aWxsIGJlIHRoZSBfX2luaXRfXworICAgICAgICAgICAgICAg
ICMgTW9kdWxlIGl0c2VsZiwgc28ganVzdCB1c2UgdGhhdC4gSWYgdGhpcyBzcGVjaWFsIGNhc2Ug
aXNuJ3QgdGFrZW4sIHRoZW4gYWxsCisgICAgICAgICAgICAgICAgIyB0aGUgZmlsZXMgaW4gdGhl
IHBhY2thZ2Ugd2lsbCBiZSB5aWVsZGVkLgorICAgICAgICAgICAgICAgIGlmIGFyZ3BhdGguYmFz
ZW5hbWUgPT0gIl9faW5pdF9fLnB5IjoKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UobWF0Y2hpbmdbMF0sIG5vZGVzLkNvbGxlY3RvcikKKyAgICAgICAgICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgbmV4dChpdGVyKG1hdGNoaW5nWzBd
LmNvbGxlY3QoKSkpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgor
ICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgcGFja2FnZSBjb2xsZWN0cyBub3RoaW5nIHdp
dGggb25seSBhbiBfX2luaXRfXy5weQorICAgICAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGlu
IGl0LCB3aGljaCBnZXRzIGlnbm9yZWQgYnkgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICMgInB5dGhvbl9maWxlcyIgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgeWll
bGQgZnJvbSBtYXRjaGluZwogCi0gICAgZGVmIG1hdGNobm9kZXMoc2VsZiwgbWF0Y2hpbmcsIG5h
bWVzKToKLSAgICAgICAgc2VsZi50cmFjZSgibWF0Y2hub2RlcyIsIG1hdGNoaW5nLCBuYW1lcykK
LSAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCArPSAxCi0gICAgICAgIG5vZGVzID0gc2Vs
Zi5fbWF0Y2hub2RlcyhtYXRjaGluZywgbmFtZXMpCi0gICAgICAgIG51bSA9IGxlbihub2RlcykK
LSAgICAgICAgc2VsZi50cmFjZSgibWF0Y2hub2RlcyBmaW5pc2hlZCAtPiAiLCBudW0sICJub2Rl
cyIpCi0gICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgLT0gMQotICAgICAgICBpZiBudW0g
PT0gMDoKLSAgICAgICAgICAgIHJhaXNlIE5vTWF0Y2gobWF0Y2hpbmcsIG5hbWVzWzoxXSkKLSAg
ICAgICAgcmV0dXJuIG5vZGVzCi0KLSAgICBkZWYgX21hdGNobm9kZXMoc2VsZiwgbWF0Y2hpbmcs
IG5hbWVzKToKLSAgICAgICAgaWYgbm90IG1hdGNoaW5nIG9yIG5vdCBuYW1lczoKLSAgICAgICAg
ICAgIHJldHVybiBtYXRjaGluZwotICAgICAgICBuYW1lID0gbmFtZXNbMF0KLSAgICAgICAgYXNz
ZXJ0IG5hbWUKLSAgICAgICAgbmV4dG5hbWVzID0gbmFtZXNbMTpdCi0gICAgICAgIHJlc3VsdG5v
ZGVzID0gW10KLSAgICAgICAgZm9yIG5vZGUgaW4gbWF0Y2hpbmc6Ci0gICAgICAgICAgICBpZiBp
c2luc3RhbmNlKG5vZGUsIG5vZGVzLkl0ZW0pOgotICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1l
czoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0bm9kZXMuYXBwZW5kKG5vZGUpCi0gICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIG5v
ZGVzLkNvbGxlY3RvcikKLSAgICAgICAgICAgIHJlcCA9IGNvbGxlY3Rfb25lX25vZGUobm9kZSkK
LSAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAgICAgICAgaGFzX21hdGNoZWQg
PSBGYWxzZQotICAgICAgICAgICAgICAgIGZvciB4IGluIHJlcC5yZXN1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgICMgVE9ETzogcmVtb3ZlIHBhcmFtZXRyaXplZCB3b3JrYXJvdW5kIG9uY2UgY29s
bGVjdGlvbiBzdHJ1Y3R1cmUgY29udGFpbnMgcGFyYW1ldHJpemF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgIGlmIHgubmFtZSA9PSBuYW1lIG9yIHgubmFtZS5zcGxpdCgiWyIpWzBdID09IG5hbWU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRub2Rlcy5leHRlbmQoc2VsZi5tYXRjaG5v
ZGVzKFt4XSwgbmV4dG5hbWVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhc19tYXRjaGVk
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgWFhYIGFjY2VwdCBJRHMgdGhhdCBkb24ndCBoYXZl
ICIoKSIgZm9yIGNsYXNzIGluc3RhbmNlcwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNfbWF0
Y2hlZCBhbmQgbGVuKHJlcC5yZXN1bHQpID09IDEgYW5kIHgubmFtZSA9PSAiKCkiOgotICAgICAg
ICAgICAgICAgICAgICBuZXh0bmFtZXMuaW5zZXJ0KDAsIG5hbWUpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdG5vZGVzLmV4dGVuZChzZWxmLm1hdGNobm9kZXMoW3hdLCBuZXh0bmFtZXMpKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIHJlcG9ydCBjb2xsZWN0aW9uIGZh
aWx1cmVzIGhlcmUgdG8gYXZvaWQgZmFpbGluZyB0byBydW4gc29tZSB0ZXN0Ci0gICAgICAgICAg
ICAgICAgIyBzcGVjaWZpZWQgaW4gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSBtb2R1bGUg
Y291bGQgbm90IGJlCi0gICAgICAgICAgICAgICAgIyBpbXBvcnRlZCAoIzEzNCkKLSAgICAgICAg
ICAgICAgICBub2RlLmlob29rLnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydD1yZXApCi0gICAg
ICAgIHJldHVybiByZXN1bHRub2RlcworICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVu
dCAtPSAxCiAKLSAgICBkZWYgZ2VuaXRlbXMoc2VsZiwgbm9kZSk6CisgICAgZGVmIGdlbml0ZW1z
KAorICAgICAgICBzZWxmLCBub2RlOiBVbmlvbltub2Rlcy5JdGVtLCBub2Rlcy5Db2xsZWN0b3Jd
CisgICAgKSAtPiBJdGVyYXRvcltub2Rlcy5JdGVtXToKICAgICAgICAgc2VsZi50cmFjZSgiZ2Vu
aXRlbXMiLCBub2RlKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIG5vZGVzLkl0ZW0pOgog
ICAgICAgICAgICAgbm9kZS5paG9vay5weXRlc3RfaXRlbWNvbGxlY3RlZChpdGVtPW5vZGUpCkBA
IC02MDYsNiArODAwLDY5IEBAIGNsYXNzIFNlc3Npb24obm9kZXMuRlNDb2xsZWN0b3IpOgogICAg
ICAgICAgICAgcmVwID0gY29sbGVjdF9vbmVfbm9kZShub2RlKQogICAgICAgICAgICAgaWYgcmVw
LnBhc3NlZDoKICAgICAgICAgICAgICAgICBmb3Igc3Vibm9kZSBpbiByZXAucmVzdWx0OgotICAg
ICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmLmdlbml0ZW1zKHN1Ym5vZGUpOgotICAgICAg
ICAgICAgICAgICAgICAgICAgeWllbGQgeAorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9t
IHNlbGYuZ2VuaXRlbXMoc3Vibm9kZSkKICAgICAgICAgICAgIG5vZGUuaWhvb2sucHl0ZXN0X2Nv
bGxlY3RyZXBvcnQocmVwb3J0PXJlcCkKKworCitkZWYgc2VhcmNoX3B5cGF0aChtb2R1bGVfbmFt
ZTogc3RyKSAtPiBzdHI6CisgICAgIiIiU2VhcmNoIHN5cy5wYXRoIGZvciB0aGUgZ2l2ZW4gYSBk
b3R0ZWQgbW9kdWxlIG5hbWUsIGFuZCByZXR1cm4gaXRzIGZpbGUgc3lzdGVtIHBhdGguIiIiCisg
ICAgdHJ5OgorICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG1vZHVsZV9u
YW1lKQorICAgICMgQXR0cmlidXRlRXJyb3I6IGxvb2tzIGxpa2UgcGFja2FnZSBtb2R1bGUsIGJ1
dCBhY3R1YWxseSBmaWxlbmFtZQorICAgICMgSW1wb3J0RXJyb3I6IG1vZHVsZSBkb2VzIG5vdCBl
eGlzdAorICAgICMgVmFsdWVFcnJvcjogbm90IGEgbW9kdWxlIG5hbWUKKyAgICBleGNlcHQgKEF0
dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJldHVybiBt
b2R1bGVfbmFtZQorICAgIGlmIHNwZWMgaXMgTm9uZSBvciBzcGVjLm9yaWdpbiBpcyBOb25lIG9y
IHNwZWMub3JpZ2luID09ICJuYW1lc3BhY2UiOgorICAgICAgICByZXR1cm4gbW9kdWxlX25hbWUK
KyAgICBlbGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM6CisgICAgICAgIHJldHVy
biBvcy5wYXRoLmRpcm5hbWUoc3BlYy5vcmlnaW4pCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJu
IHNwZWMub3JpZ2luCisKKworZGVmIHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVudCgKKyAgICBp
bnZvY2F0aW9uX3BhdGg6IFBhdGgsIGFyZzogc3RyLCAqLCBhc19weXBhdGg6IGJvb2wgPSBGYWxz
ZQorKSAtPiBUdXBsZVtweS5wYXRoLmxvY2FsLCBMaXN0W3N0cl1dOgorICAgICIiIlBhcnNlIHBh
dGggYXJndW1lbnRzIG9wdGlvbmFsbHkgY29udGFpbmluZyBzZWxlY3Rpb24gcGFydHMgYW5kIHJl
dHVybiAoZnNwYXRoLCBuYW1lcykuCisKKyAgICBDb21tYW5kLWxpbmUgYXJndW1lbnRzIGNhbiBw
b2ludCB0byBmaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMsIGFuZCBvcHRpb25hbGx5IGNvbnRhaW4K
KyAgICBwYXJ0cyBmb3Igc3BlY2lmaWMgdGVzdHMgc2VsZWN0aW9uLCBmb3IgZXhhbXBsZToKKwor
ICAgICAgICAicGtnL3Rlc3RzL3Rlc3RfZm9vLnB5OjpUZXN0Q2xhc3M6OnRlc3RfZm9vIgorCisg
ICAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoZSBwYXRoIGV4aXN0cywgYW5kIHJldHVybnMgYSB0
dXBsZToKKworICAgICAgICAocHkucGF0aC5wYXRoKCIvZnVsbC9wYXRoL3RvL3BrZy90ZXN0cy90
ZXN0X2Zvby5weSIpLCBbIlRlc3RDbGFzcyIsICJ0ZXN0X2ZvbyJdKQorCisgICAgV2hlbiBhc19w
eXBhdGggaXMgVHJ1ZSwgZXhwZWN0cyB0aGF0IHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnQgYWN0
dWFsbHkgY29udGFpbnMKKyAgICBtb2R1bGUgcGF0aHMgaW5zdGVhZCBvZiBmaWxlLXN5c3RlbSBw
YXRoczoKKworICAgICAgICAicGtnLnRlc3RzLnRlc3RfZm9vOjpUZXN0Q2xhc3M6OnRlc3RfZm9v
IgorCisgICAgSW4gd2hpY2ggY2FzZSB3ZSBzZWFyY2ggc3lzLnBhdGggZm9yIGEgbWF0Y2hpbmcg
bW9kdWxlLCBhbmQgdGhlbiByZXR1cm4gdGhlICpwYXRoKiB0byB0aGUKKyAgICBmb3VuZCBtb2R1
bGUuCisKKyAgICBJZiB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0LCByYWlzZSBVc2FnZUVycm9yLgor
ICAgIElmIHRoZSBwYXRoIGlzIGEgZGlyZWN0b3J5IGFuZCBzZWxlY3Rpb24gcGFydHMgYXJlIHBy
ZXNlbnQsIHJhaXNlIFVzYWdlRXJyb3IuCisgICAgIiIiCisgICAgc3RycGF0aCwgKnBhcnRzID0g
c3RyKGFyZykuc3BsaXQoIjo6IikKKyAgICBpZiBhc19weXBhdGg6CisgICAgICAgIHN0cnBhdGgg
PSBzZWFyY2hfcHlwYXRoKHN0cnBhdGgpCisgICAgZnNwYXRoID0gaW52b2NhdGlvbl9wYXRoIC8g
c3RycGF0aAorICAgIGZzcGF0aCA9IGFic29sdXRlcGF0aChmc3BhdGgpCisgICAgaWYgbm90IGZz
cGF0aC5leGlzdHMoKToKKyAgICAgICAgbXNnID0gKAorICAgICAgICAgICAgIm1vZHVsZSBvciBw
YWNrYWdlIG5vdCBmb3VuZDoge2FyZ30gKG1pc3NpbmcgX19pbml0X18ucHk/KSIKKyAgICAgICAg
ICAgIGlmIGFzX3B5cGF0aAorICAgICAgICAgICAgZWxzZSAiZmlsZSBvciBkaXJlY3Rvcnkgbm90
IGZvdW5kOiB7YXJnfSIKKyAgICAgICAgKQorICAgICAgICByYWlzZSBVc2FnZUVycm9yKG1zZy5m
b3JtYXQoYXJnPWFyZykpCisgICAgaWYgcGFydHMgYW5kIGZzcGF0aC5pc19kaXIoKToKKyAgICAg
ICAgbXNnID0gKAorICAgICAgICAgICAgInBhY2thZ2UgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4g
Ojogc2VsZWN0aW9uIHBhcnRzOiB7YXJnfSIKKyAgICAgICAgICAgIGlmIGFzX3B5cGF0aAorICAg
ICAgICAgICAgZWxzZSAiZGlyZWN0b3J5IGFyZ3VtZW50IGNhbm5vdCBjb250YWluIDo6IHNlbGVj
dGlvbiBwYXJ0czoge2FyZ30iCisgICAgICAgICkKKyAgICAgICAgcmFpc2UgVXNhZ2VFcnJvciht
c2cuZm9ybWF0KGFyZz1hcmcpKQorICAgIHJldHVybiBweS5wYXRoLmxvY2FsKHN0cihmc3BhdGgp
KSwgcGFydHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvX19pbml0
X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tYXJrL19faW5pdF9fLnB5CmluZGV4IGUz
OTE4Y2E2YTRmYi4uNmE5YjI2MjMwN2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9tYXJrL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsv
X19pbml0X18ucHkKQEAgLTEsNTUgKzEsNzQgQEAKLSIiIiBnZW5lcmljIG1lY2hhbmlzbSBmb3Ig
bWFya2luZyBhbmQgc2VsZWN0aW5nIHB5dGhvbiBmdW5jdGlvbnMuICIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIiIi
R2VuZXJpYyBtZWNoYW5pc20gZm9yIG1hcmtpbmcgYW5kIHNlbGVjdGluZyBweXRob24gZnVuY3Rp
b25zLiIiIgoraW1wb3J0IHR5cGluZworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHR5cGluZyBpbXBv
cnQgQWJzdHJhY3RTZXQKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBv
cnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBvcnQgYXR0cgorCitm
cm9tIC5leHByZXNzaW9uIGltcG9ydCBFeHByZXNzaW9uCitmcm9tIC5leHByZXNzaW9uIGltcG9y
dCBQYXJzZUVycm9yCitmcm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCBFTVBUWV9QQVJBTUVURVJTRVRf
T1BUSU9OCitmcm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCBnZXRfZW1wdHlfcGFyYW1ldGVyc2V0X21h
cmsKK2Zyb20gLnN0cnVjdHVyZXMgaW1wb3J0IE1hcmsKK2Zyb20gLnN0cnVjdHVyZXMgaW1wb3J0
IE1BUktfR0VOCitmcm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCBNYXJrRGVjb3JhdG9yCitmcm9tIC5z
dHJ1Y3R1cmVzIGltcG9ydCBNYXJrR2VuZXJhdG9yCitmcm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCBQ
YXJhbWV0ZXJTZXQKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zy
b20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBv
cnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCiBmcm9tIF9w
eXRlc3QuY29uZmlnIGltcG9ydCBVc2FnZUVycm9yCi1mcm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCAo
Ci0gICAgUGFyYW1ldGVyU2V0LAotICAgIEVNUFRZX1BBUkFNRVRFUlNFVF9PUFRJT04sCi0gICAg
TUFSS19HRU4sCi0gICAgTWFyaywKLSAgICBNYXJrSW5mbywKLSAgICBNYXJrRGVjb3JhdG9yLAot
ICAgIE1hcmtHZW5lcmF0b3IsCi0gICAgdHJhbnNmZXJfbWFya2VycywKLSAgICBnZXRfZW1wdHlf
cGFyYW1ldGVyc2V0X21hcmssCi0pCi1mcm9tIC5sZWdhY3kgaW1wb3J0IG1hdGNoa2V5d29yZCwg
bWF0Y2htYXJrCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgor
ZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IE1JTlVTX0tfQ09MT04KK2Zyb20gX3B5dGVz
dC5kZXByZWNhdGVkIGltcG9ydCBNSU5VU19LX0RBU0gKK2Zyb20gX3B5dGVzdC5zdG9yZSBpbXBv
cnQgU3RvcmVLZXkKKworaWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIF9weXRlc3Qubm9kZXMg
aW1wb3J0IEl0ZW0KKwogCiBfX2FsbF9fID0gWworICAgICJNQVJLX0dFTiIsCiAgICAgIk1hcmsi
LAotICAgICJNYXJrSW5mbyIsCiAgICAgIk1hcmtEZWNvcmF0b3IiLAogICAgICJNYXJrR2VuZXJh
dG9yIiwKLSAgICAidHJhbnNmZXJfbWFya2VycyIsCisgICAgIlBhcmFtZXRlclNldCIsCiAgICAg
ImdldF9lbXB0eV9wYXJhbWV0ZXJzZXRfbWFyayIsCiBdCiAKIAotY2xhc3MgTWFya2VyRXJyb3Io
RXhjZXB0aW9uKToKK29sZF9tYXJrX2NvbmZpZ19rZXkgPSBTdG9yZUtleVtPcHRpb25hbFtDb25m
aWddXSgpCiAKLSAgICAiIiJFcnJvciBpbiB1c2Ugb2YgYSBweXRlc3QgbWFya2VyL2F0dHJpYnV0
ZS4iIiIKIAotCi1kZWYgcGFyYW0oKnZhbHVlcywgKiprdyk6CitkZWYgcGFyYW0oCisgICAgKnZh
bHVlczogb2JqZWN0LAorICAgIG1hcmtzOiAiVW5pb25bTWFya0RlY29yYXRvciwgdHlwaW5nLkNv
bGxlY3Rpb25bVW5pb25bTWFya0RlY29yYXRvciwgTWFya11dXSIgPSAoKSwKKyAgICBpZDogT3B0
aW9uYWxbc3RyXSA9IE5vbmUKKykgLT4gUGFyYW1ldGVyU2V0OgogICAgICIiIlNwZWNpZnkgYSBw
YXJhbWV0ZXIgaW4gYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYF8gY2FsbHMgb3IKICAgICA6cmVm
OmBwYXJhbWV0cml6ZWQgZml4dHVyZXMgPGZpeHR1cmUtcGFyYW1ldHJpemUtbWFya3M+YC4KIAog
ICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoInRlc3RfaW5wdXQsZXhwZWN0ZWQiLCBbCi0gICAgICAgICAgICAoIjMrNSIsIDgpLAot
ICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCI2KjkiLCA0MiwgbWFya3M9cHl0ZXN0Lm1hcmsueGZh
aWwpLAotICAgICAgICBdKQorICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAg
ICAgICAgICAidGVzdF9pbnB1dCxleHBlY3RlZCIsCisgICAgICAgICAgICBbKCIzKzUiLCA4KSwg
cHl0ZXN0LnBhcmFtKCI2KjkiLCA0MiwgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwpLF0sCisgICAg
ICAgICkKICAgICAgICAgZGVmIHRlc3RfZXZhbCh0ZXN0X2lucHV0LCBleHBlY3RlZCk6CiAgICAg
ICAgICAgICBhc3NlcnQgZXZhbCh0ZXN0X2lucHV0KSA9PSBleHBlY3RlZAogCi0gICAgOnBhcmFt
IHZhbHVlczogdmFyaWFibGUgYXJncyBvZiB0aGUgdmFsdWVzIG9mIHRoZSBwYXJhbWV0ZXIgc2V0
LCBpbiBvcmRlci4KLSAgICA6a2V5d29yZCBtYXJrczogYSBzaW5nbGUgbWFyayBvciBhIGxpc3Qg
b2YgbWFya3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIHBhcmFtZXRlciBzZXQuCi0gICAgOmtleXdv
cmQgc3RyIGlkOiB0aGUgaWQgdG8gYXR0cmlidXRlIHRvIHRoaXMgcGFyYW1ldGVyIHNldC4KKyAg
ICA6cGFyYW0gdmFsdWVzOiBWYXJpYWJsZSBhcmdzIG9mIHRoZSB2YWx1ZXMgb2YgdGhlIHBhcmFt
ZXRlciBzZXQsIGluIG9yZGVyLgorICAgIDprZXl3b3JkIG1hcmtzOiBBIHNpbmdsZSBtYXJrIG9y
IGEgbGlzdCBvZiBtYXJrcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgcGFyYW1ldGVyIHNldC4KKyAg
ICA6a2V5d29yZCBzdHIgaWQ6IFRoZSBpZCB0byBhdHRyaWJ1dGUgdG8gdGhpcyBwYXJhbWV0ZXIg
c2V0LgogICAgICIiIgotICAgIHJldHVybiBQYXJhbWV0ZXJTZXQucGFyYW0oKnZhbHVlcywgKipr
dykKKyAgICByZXR1cm4gUGFyYW1ldGVyU2V0LnBhcmFtKCp2YWx1ZXMsIG1hcmtzPW1hcmtzLCBp
ZD1pZCkKIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3Jv
dXAoImdlbmVyYWwiKQogICAgIGdyb3VwLl9hZGRvcHRpb24oCiAgICAgICAgICItayIsCkBAIC02
NCw5ICs4MywxMSBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICAib3Ro
ZXInIG1hdGNoZXMgYWxsIHRlc3QgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHdob3NlIG5hbWUgIgog
ICAgICAgICAiY29udGFpbnMgJ3Rlc3RfbWV0aG9kJyBvciAndGVzdF9vdGhlcicsIHdoaWxlIC1r
ICdub3QgdGVzdF9tZXRob2QnICIKICAgICAgICAgIm1hdGNoZXMgdGhvc2UgdGhhdCBkb24ndCBj
b250YWluICd0ZXN0X21ldGhvZCcgaW4gdGhlaXIgbmFtZXMuICIKKyAgICAgICAgIi1rICdub3Qg
dGVzdF9tZXRob2QgYW5kIG5vdCB0ZXN0X290aGVyJyB3aWxsIGVsaW1pbmF0ZSB0aGUgbWF0Y2hl
cy4gIgogICAgICAgICAiQWRkaXRpb25hbGx5IGtleXdvcmRzIGFyZSBtYXRjaGVkIHRvIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyAiCiAgICAgICAgICJjb250YWluaW5nIGV4dHJhIG5hbWVzIGluIHRo
ZWlyICdleHRyYV9rZXl3b3JkX21hdGNoZXMnIHNldCwgIgotICAgICAgICAiYXMgd2VsbCBhcyBm
dW5jdGlvbnMgd2hpY2ggaGF2ZSBuYW1lcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVtLiIsCisg
ICAgICAgICJhcyB3ZWxsIGFzIGZ1bmN0aW9ucyB3aGljaCBoYXZlIG5hbWVzIGFzc2lnbmVkIGRp
cmVjdGx5IHRvIHRoZW0uICIKKyAgICAgICAgIlRoZSBtYXRjaGluZyBpcyBjYXNlLWluc2Vuc2l0
aXZlLiIsCiAgICAgKQogCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKQEAgLTc1LDggKzk2LDggQEAg
ZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgZGVzdD0ibWFya2V4cHIiLAog
ICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICBtZXRhdmFyPSJNQVJLRVhQUiIsCi0gICAgICAg
IGhlbHA9Im9ubHkgcnVuIHRlc3RzIG1hdGNoaW5nIGdpdmVuIG1hcmsgZXhwcmVzc2lvbi4gICIK
LSAgICAgICAgImV4YW1wbGU6IC1tICdtYXJrMSBhbmQgbm90IG1hcmsyJy4iLAorICAgICAgICBo
ZWxwPSJvbmx5IHJ1biB0ZXN0cyBtYXRjaGluZyBnaXZlbiBtYXJrIGV4cHJlc3Npb24uXG4iCisg
ICAgICAgICJGb3IgZXhhbXBsZTogLW0gJ21hcmsxIGFuZCBub3QgbWFyazInLiIsCiAgICAgKQog
CiAgICAgZ3JvdXAuYWRkb3B0aW9uKApAQCAtODksNyArMTEwLDggQEAgZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyKToKICAgICBwYXJzZXIuYWRkaW5pKEVNUFRZX1BBUkFNRVRFUlNFVF9PUFRJ
T04sICJkZWZhdWx0IG1hcmtlciBmb3IgZW1wdHkgcGFyYW1ldGVyc2V0cyIpCiAKIAotZGVmIHB5
dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKK0Bob29raW1wbCh0cnlmaXJzdD1UcnVlKQorZGVm
IHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnOiBDb25maWcpIC0+IE9wdGlvbmFsW1VuaW9uW2lu
dCwgRXhpdENvZGVdXToKICAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcKIAogICAgIGlmIGNvbmZp
Zy5vcHRpb24ubWFya2VyczoKQEAgLTEwNSwyMyArMTI3LDg3IEBAIGRlZiBweXRlc3RfY21kbGlu
ZV9tYWluKGNvbmZpZyk6CiAgICAgICAgIGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkKICAg
ICAgICAgcmV0dXJuIDAKIAorICAgIHJldHVybiBOb25lCisKKworQGF0dHIucyhzbG90cz1UcnVl
KQorY2xhc3MgS2V5d29yZE1hdGNoZXI6CisgICAgIiIiQSBtYXRjaGVyIGZvciBrZXl3b3Jkcy4K
KworICAgIEdpdmVuIGEgbGlzdCBvZiBuYW1lcywgbWF0Y2hlcyBhbnkgc3Vic3RyaW5nIG9mIG9u
ZSBvZiB0aGVzZSBuYW1lcy4gVGhlCisgICAgc3RyaW5nIGluY2x1c2lvbiBjaGVjayBpcyBjYXNl
LWluc2Vuc2l0aXZlLgorCisgICAgV2lsbCBtYXRjaCBvbiB0aGUgbmFtZSBvZiBjb2xpdGVtLCBp
bmNsdWRpbmcgdGhlIG5hbWVzIG9mIGl0cyBwYXJlbnRzLgorICAgIE9ubHkgbWF0Y2hlcyBuYW1l
cyBvZiBpdGVtcyB3aGljaCBhcmUgZWl0aGVyIGEgOmNsYXNzOmBDbGFzc2Agb3IgYQorICAgIDpj
bGFzczpgRnVuY3Rpb25gLgorCisgICAgQWRkaXRpb25hbGx5LCBtYXRjaGVzIG9uIG5hbWVzIGlu
IHRoZSAnZXh0cmFfa2V5d29yZF9tYXRjaGVzJyBzZXQgb2YKKyAgICBhbnkgaXRlbSwgYXMgd2Vs
bCBhcyBuYW1lcyBkaXJlY3RseSBhc3NpZ25lZCB0byB0ZXN0IGZ1bmN0aW9ucy4KKyAgICAiIiIK
KworICAgIF9uYW1lcyA9IGF0dHIuaWIodHlwZT1BYnN0cmFjdFNldFtzdHJdKQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIGZyb21faXRlbShjbHMsIGl0ZW06ICJJdGVtIikgLT4gIktleXdv
cmRNYXRjaGVyIjoKKyAgICAgICAgbWFwcGVkX25hbWVzID0gc2V0KCkKKworICAgICAgICAjIEFk
ZCB0aGUgbmFtZXMgb2YgdGhlIGN1cnJlbnQgaXRlbSBhbmQgYW55IHBhcmVudCBpdGVtcy4KKyAg
ICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIGZvciBub2RlIGluIGl0ZW0ubGlzdGNoYWlu
KCk6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAocHl0ZXN0Lkluc3RhbmNl
LCBweXRlc3QuU2Vzc2lvbikpOgorICAgICAgICAgICAgICAgIG1hcHBlZF9uYW1lcy5hZGQobm9k
ZS5uYW1lKQorCisgICAgICAgICMgQWRkIHRoZSBuYW1lcyBhZGRlZCBhcyBleHRyYSBrZXl3b3Jk
cyB0byBjdXJyZW50IG9yIHBhcmVudCBpdGVtcy4KKyAgICAgICAgbWFwcGVkX25hbWVzLnVwZGF0
ZShpdGVtLmxpc3RleHRyYWtleXdvcmRzKCkpCisKKyAgICAgICAgIyBBZGQgdGhlIG5hbWVzIGF0
dGFjaGVkIHRvIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHRocm91Z2ggZGlyZWN0IGFzc2lnbm1lbnQu
CisgICAgICAgIGZ1bmN0aW9uX29iaiA9IGdldGF0dHIoaXRlbSwgImZ1bmN0aW9uIiwgTm9uZSkK
KyAgICAgICAgaWYgZnVuY3Rpb25fb2JqOgorICAgICAgICAgICAgbWFwcGVkX25hbWVzLnVwZGF0
ZShmdW5jdGlvbl9vYmouX19kaWN0X18pCiAKLXB5dGVzdF9jbWRsaW5lX21haW4udHJ5Zmlyc3Qg
PSBUcnVlCisgICAgICAgICMgQWRkIHRoZSBtYXJrZXJzIHRvIHRoZSBrZXl3b3JkcyBhcyB3ZSBu
byBsb25nZXIgaGFuZGxlIHRoZW0gY29ycmVjdGx5LgorICAgICAgICBtYXBwZWRfbmFtZXMudXBk
YXRlKG1hcmsubmFtZSBmb3IgbWFyayBpbiBpdGVtLml0ZXJfbWFya2VycygpKQogCisgICAgICAg
IHJldHVybiBjbHMobWFwcGVkX25hbWVzKQogCi1kZWYgZGVzZWxlY3RfYnlfa2V5d29yZChpdGVt
cywgY29uZmlnKToKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgc3VibmFtZTogc3RyKSAtPiBib29s
OgorICAgICAgICBzdWJuYW1lID0gc3VibmFtZS5sb3dlcigpCisgICAgICAgIG5hbWVzID0gKG5h
bWUubG93ZXIoKSBmb3IgbmFtZSBpbiBzZWxmLl9uYW1lcykKKworICAgICAgICBmb3IgbmFtZSBp
biBuYW1lczoKKyAgICAgICAgICAgIGlmIHN1Ym5hbWUgaW4gbmFtZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitkZWYgZGVzZWxlY3RfYnlf
a2V5d29yZChpdGVtczogIkxpc3RbSXRlbV0iLCBjb25maWc6IENvbmZpZykgLT4gTm9uZToKICAg
ICBrZXl3b3JkZXhwciA9IGNvbmZpZy5vcHRpb24ua2V5d29yZC5sc3RyaXAoKQorICAgIGlmIG5v
dCBrZXl3b3JkZXhwcjoKKyAgICAgICAgcmV0dXJuCisKICAgICBpZiBrZXl3b3JkZXhwci5zdGFy
dHN3aXRoKCItIik6CisgICAgICAgICMgVG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QgNy4wLjAuCisg
ICAgICAgIHdhcm5pbmdzLndhcm4oTUlOVVNfS19EQVNILCBzdGFja2xldmVsPTIpCiAgICAgICAg
IGtleXdvcmRleHByID0gIm5vdCAiICsga2V5d29yZGV4cHJbMTpdCiAgICAgc2VsZWN0dW50aWwg
PSBGYWxzZQogICAgIGlmIGtleXdvcmRleHByWy0xOl0gPT0gIjoiOgorICAgICAgICAjIFRvIGJl
IHJlbW92ZWQgaW4gcHl0ZXN0IDcuMC4wLgorICAgICAgICB3YXJuaW5ncy53YXJuKE1JTlVTX0tf
Q09MT04sIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZWN0dW50aWwgPSBUcnVlCiAgICAgICAg
IGtleXdvcmRleHByID0ga2V5d29yZGV4cHJbOi0xXQogCisgICAgdHJ5OgorICAgICAgICBleHBy
ZXNzaW9uID0gRXhwcmVzc2lvbi5jb21waWxlKGtleXdvcmRleHByKQorICAgIGV4Y2VwdCBQYXJz
ZUVycm9yIGFzIGU6CisgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoCisgICAgICAgICAgICAiV3Jv
bmcgZXhwcmVzc2lvbiBwYXNzZWQgdG8gJy1rJzoge306IHt9Ii5mb3JtYXQoa2V5d29yZGV4cHIs
IGUpCisgICAgICAgICkgZnJvbSBOb25lCisKICAgICByZW1haW5pbmcgPSBbXQogICAgIGRlc2Vs
ZWN0ZWQgPSBbXQogICAgIGZvciBjb2xpdGVtIGluIGl0ZW1zOgotICAgICAgICBpZiBrZXl3b3Jk
ZXhwciBhbmQgbm90IG1hdGNoa2V5d29yZChjb2xpdGVtLCBrZXl3b3JkZXhwcik6CisgICAgICAg
IGlmIGtleXdvcmRleHByIGFuZCBub3QgZXhwcmVzc2lvbi5ldmFsdWF0ZShLZXl3b3JkTWF0Y2hl
ci5mcm9tX2l0ZW0oY29saXRlbSkpOgogICAgICAgICAgICAgZGVzZWxlY3RlZC5hcHBlbmQoY29s
aXRlbSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHNlbGVjdHVudGlsOgpAQCAtMTMz
LDE1ICsyMTksNDAgQEAgZGVmIGRlc2VsZWN0X2J5X2tleXdvcmQoaXRlbXMsIGNvbmZpZyk6CiAg
ICAgICAgIGl0ZW1zWzpdID0gcmVtYWluaW5nCiAKIAotZGVmIGRlc2VsZWN0X2J5X21hcmsoaXRl
bXMsIGNvbmZpZyk6CitAYXR0ci5zKHNsb3RzPVRydWUpCitjbGFzcyBNYXJrTWF0Y2hlcjoKKyAg
ICAiIiJBIG1hdGNoZXIgZm9yIG1hcmtlcnMgd2hpY2ggYXJlIHByZXNlbnQuCisKKyAgICBUcmll
cyB0byBtYXRjaCBvbiBhbnkgbWFya2VyIG5hbWVzLCBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gY29s
aXRlbS4KKyAgICAiIiIKKworICAgIG93bl9tYXJrX25hbWVzID0gYXR0ci5pYigpCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9pdGVtKGNscywgaXRlbSkgLT4gIk1hcmtNYXRjaGVy
IjoKKyAgICAgICAgbWFya19uYW1lcyA9IHttYXJrLm5hbWUgZm9yIG1hcmsgaW4gaXRlbS5pdGVy
X21hcmtlcnMoKX0KKyAgICAgICAgcmV0dXJuIGNscyhtYXJrX25hbWVzKQorCisgICAgZGVmIF9f
Y2FsbF9fKHNlbGYsIG5hbWU6IHN0cikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIG5hbWUgaW4g
c2VsZi5vd25fbWFya19uYW1lcworCisKK2RlZiBkZXNlbGVjdF9ieV9tYXJrKGl0ZW1zOiAiTGlz
dFtJdGVtXSIsIGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIG1hdGNoZXhwciA9IGNvbmZp
Zy5vcHRpb24ubWFya2V4cHIKICAgICBpZiBub3QgbWF0Y2hleHByOgogICAgICAgICByZXR1cm4K
IAorICAgIHRyeToKKyAgICAgICAgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb24uY29tcGlsZShtYXRj
aGV4cHIpCisgICAgZXhjZXB0IFBhcnNlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgVXNhZ2VF
cnJvcigKKyAgICAgICAgICAgICJXcm9uZyBleHByZXNzaW9uIHBhc3NlZCB0byAnLW0nOiB7fTog
e30iLmZvcm1hdChtYXRjaGV4cHIsIGUpCisgICAgICAgICkgZnJvbSBOb25lCisKICAgICByZW1h
aW5pbmcgPSBbXQogICAgIGRlc2VsZWN0ZWQgPSBbXQogICAgIGZvciBpdGVtIGluIGl0ZW1zOgot
ICAgICAgICBpZiBtYXRjaG1hcmsoaXRlbSwgbWF0Y2hleHByKToKKyAgICAgICAgaWYgZXhwcmVz
c2lvbi5ldmFsdWF0ZShNYXJrTWF0Y2hlci5mcm9tX2l0ZW0oaXRlbSkpOgogICAgICAgICAgICAg
cmVtYWluaW5nLmFwcGVuZChpdGVtKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGVzZWxl
Y3RlZC5hcHBlbmQoaXRlbSkKQEAgLTE1MSwyNCArMjYyLDIzIEBAIGRlZiBkZXNlbGVjdF9ieV9t
YXJrKGl0ZW1zLCBjb25maWcpOgogICAgICAgICBpdGVtc1s6XSA9IHJlbWFpbmluZwogCiAKLWRl
ZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhpdGVtcywgY29uZmlnKToKK2RlZiBweXRl
c3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhpdGVtczogIkxpc3RbSXRlbV0iLCBjb25maWc6IENv
bmZpZykgLT4gTm9uZToKICAgICBkZXNlbGVjdF9ieV9rZXl3b3JkKGl0ZW1zLCBjb25maWcpCiAg
ICAgZGVzZWxlY3RfYnlfbWFyayhpdGVtcywgY29uZmlnKQogCiAKLWRlZiBweXRlc3RfY29uZmln
dXJlKGNvbmZpZyk6Ci0gICAgY29uZmlnLl9vbGRfbWFya19jb25maWcgPSBNQVJLX0dFTi5fY29u
ZmlnCi0gICAgaWYgY29uZmlnLm9wdGlvbi5zdHJpY3Q6Ci0gICAgICAgIE1BUktfR0VOLl9jb25m
aWcgPSBjb25maWcKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25l
OgorICAgIGNvbmZpZy5fc3RvcmVbb2xkX21hcmtfY29uZmlnX2tleV0gPSBNQVJLX0dFTi5fY29u
ZmlnCisgICAgTUFSS19HRU4uX2NvbmZpZyA9IGNvbmZpZwogCiAgICAgZW1wdHlfcGFyYW1ldGVy
c2V0ID0gY29uZmlnLmdldGluaShFTVBUWV9QQVJBTUVURVJTRVRfT1BUSU9OKQogCi0gICAgaWYg
ZW1wdHlfcGFyYW1ldGVyc2V0IG5vdCBpbiAoInNraXAiLCAieGZhaWwiLCBOb25lLCAiIik6Cisg
ICAgaWYgZW1wdHlfcGFyYW1ldGVyc2V0IG5vdCBpbiAoInNraXAiLCAieGZhaWwiLCAiZmFpbF9h
dF9jb2xsZWN0IiwgTm9uZSwgIiIpOgogICAgICAgICByYWlzZSBVc2FnZUVycm9yKAotICAgICAg
ICAgICAgInshc30gbXVzdCBiZSBvbmUgb2Ygc2tpcCBhbmQgeGZhaWwsIgorICAgICAgICAgICAg
Inshc30gbXVzdCBiZSBvbmUgb2Ygc2tpcCwgeGZhaWwgb3IgZmFpbF9hdF9jb2xsZWN0IgogICAg
ICAgICAgICAgIiBidXQgaXQgaXMgeyFyfSIuZm9ybWF0KEVNUFRZX1BBUkFNRVRFUlNFVF9PUFRJ
T04sIGVtcHR5X3BhcmFtZXRlcnNldCkKICAgICAgICAgKQogCiAKLWRlZiBweXRlc3RfdW5jb25m
aWd1cmUoY29uZmlnKToKLSAgICBNQVJLX0dFTi5fY29uZmlnID0gZ2V0YXR0cihjb25maWcsICJf
b2xkX21hcmtfY29uZmlnIiwgTm9uZSkKK2RlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnOiBD
b25maWcpIC0+IE5vbmU6CisgICAgTUFSS19HRU4uX2NvbmZpZyA9IGNvbmZpZy5fc3RvcmUuZ2V0
KG9sZF9tYXJrX2NvbmZpZ19rZXksIE5vbmUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9tYXJrL2V2YWx1YXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9l
dmFsdWF0ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNkMTFlZTBmODFhLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9ldmFsdWF0ZS5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCBzaXgK
LWltcG9ydCBzeXMKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIC4u
b3V0Y29tZXMgaW1wb3J0IGZhaWwsIFRFU1RfT1VUQ09NRQotCi0KLWRlZiBjYWNoZWRfZXZhbChj
b25maWcsIGV4cHIsIGQpOgotICAgIGlmIG5vdCBoYXNhdHRyKGNvbmZpZywgIl9ldmFsY2FjaGUi
KToKLSAgICAgICAgY29uZmlnLl9ldmFsY2FjaGUgPSB7fQotICAgIHRyeToKLSAgICAgICAgcmV0
dXJuIGNvbmZpZy5fZXZhbGNhY2hlW2V4cHJdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAg
ICBpbXBvcnQgX3B5dGVzdC5fY29kZQotCi0gICAgICAgIGV4cHJjb2RlID0gX3B5dGVzdC5fY29k
ZS5jb21waWxlKGV4cHIsIG1vZGU9ImV2YWwiKQotICAgICAgICBjb25maWcuX2V2YWxjYWNoZVtl
eHByXSA9IHggPSBldmFsKGV4cHJjb2RlLCBkKQotICAgICAgICByZXR1cm4geAotCi0KLWNsYXNz
IE1hcmtFdmFsdWF0b3Iob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtLCBu
YW1lKToKLSAgICAgICAgc2VsZi5pdGVtID0gaXRlbQotICAgICAgICBzZWxmLl9tYXJrcyA9IE5v
bmUKLSAgICAgICAgc2VsZi5fbWFyayA9IE5vbmUKLSAgICAgICAgc2VsZi5fbWFya19uYW1lID0g
bmFtZQotCi0gICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICAjIGRvbnQgY2FjaGUgaGVy
ZSB0byBwcmV2ZW50IHN0YWxlbmVzcwotICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9nZXRfbWFy
a3MoKSkKLQotICAgIF9fbm9uemVyb19fID0gX19ib29sX18KLQotICAgIGRlZiB3YXN2YWxpZChz
ZWxmKToKLSAgICAgICAgcmV0dXJuIG5vdCBoYXNhdHRyKHNlbGYsICJleGMiKQotCi0gICAgZGVm
IF9nZXRfbWFya3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRlbS5pdGVyX21h
cmtlcnMobmFtZT1zZWxmLl9tYXJrX25hbWUpKQotCi0gICAgZGVmIGludmFsaWRyYWlzZShzZWxm
LCBleGMpOgotICAgICAgICByYWlzZXMgPSBzZWxmLmdldCgicmFpc2VzIikKLSAgICAgICAgaWYg
bm90IHJhaXNlczoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXR1cm4gbm90IGlzaW5z
dGFuY2UoZXhjLCByYWlzZXMpCi0KLSAgICBkZWYgaXN0cnVlKHNlbGYpOgotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5faXN0cnVlKCkKLSAgICAgICAgZXhjZXB0IFRFU1Rf
T1VUQ09NRToKLSAgICAgICAgICAgIHNlbGYuZXhjID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leGNbMV0sIFN5bnRheEVycm9yKToKLSAgICAgICAgICAg
ICAgICBtc2cgPSBbIiAiICogKHNlbGYuZXhjWzFdLm9mZnNldCArIDQpICsgIl4iXQotICAgICAg
ICAgICAgICAgIG1zZy5hcHBlbmQoIlN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheCIpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1zZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhj
ZXB0aW9uX29ubHkoKnNlbGYuZXhjWzoyXSkKLSAgICAgICAgICAgIGZhaWwoCi0gICAgICAgICAg
ICAgICAgIkVycm9yIGV2YWx1YXRpbmcgJXIgZXhwcmVzc2lvblxuIgotICAgICAgICAgICAgICAg
ICIgICAgJXNcbiIKLSAgICAgICAgICAgICAgICAiJXMiICUgKHNlbGYuX21hcmtfbmFtZSwgc2Vs
Zi5leHByLCAiXG4iLmpvaW4obXNnKSksCi0gICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSwK
LSAgICAgICAgICAgICkKLQotICAgIGRlZiBfZ2V0Z2xvYmFscyhzZWxmKToKLSAgICAgICAgZCA9
IHsib3MiOiBvcywgInN5cyI6IHN5cywgInBsYXRmb3JtIjogcGxhdGZvcm0sICJjb25maWciOiBz
ZWxmLml0ZW0uY29uZmlnfQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYuaXRlbSwgIm9iaiIpOgot
ICAgICAgICAgICAgZC51cGRhdGUoc2VsZi5pdGVtLm9iai5fX2dsb2JhbHNfXykKLSAgICAgICAg
cmV0dXJuIGQKLQotICAgIGRlZiBfaXN0cnVlKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHNl
bGYsICJyZXN1bHQiKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdAotICAgICAgICBz
ZWxmLl9tYXJrcyA9IHNlbGYuX2dldF9tYXJrcygpCi0KLSAgICAgICAgaWYgc2VsZi5fbWFya3M6
Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlCi0gICAgICAgICAgICBmb3IgbWFyayBp
biBzZWxmLl9tYXJrczoKLSAgICAgICAgICAgICAgICBzZWxmLl9tYXJrID0gbWFyawotICAgICAg
ICAgICAgICAgIGlmICJjb25kaXRpb24iIGluIG1hcmsua3dhcmdzOgotICAgICAgICAgICAgICAg
ICAgICBhcmdzID0gKG1hcmsua3dhcmdzWyJjb25kaXRpb24iXSwpCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IG1hcmsuYXJncwotCi0gICAgICAgICAg
ICAgICAgZm9yIGV4cHIgaW4gYXJnczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leHByID0g
ZXhwcgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cHIsIHNpeC5zdHJpbmdf
dHlwZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHNlbGYuX2dldGdsb2JhbHMoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVkX2V2YWwoc2VsZi5pdGVtLmNv
bmZpZywgZXhwciwgZCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICJyZWFzb24iIG5vdCBpbiBtYXJrLmt3YXJnczoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIFhYWCBiZXR0ZXIgYmUgY2hlY2tlZCBhdCBjb2xsZWN0aW9uIHRpbWUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAieW91IG5lZWQgdG8gc3BlY2lmeSBy
ZWFzb249U1RSSU5HICIgIndoZW4gdXNpbmcgYm9vbGVhbnMgYXMgY29uZGl0aW9ucy4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChtc2cpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBib29sKGV4cHIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gVHJ1ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5yZWFzb24gPSBtYXJrLmt3YXJncy5nZXQoInJlYXNvbiIsIE5vbmUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cHIgPSBleHByCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQKLQotICAgICAgICAgICAgICAgIGlmIG5vdCBhcmdz
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IFRydWUKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5yZWFzb24gPSBtYXJrLmt3YXJncy5nZXQoInJlYXNvbiIsIE5vbmUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdAotICAgICAgICByZXR1cm4gRmFsc2UK
LQotICAgIGRlZiBnZXQoc2VsZiwgYXR0ciwgZGVmYXVsdD1Ob25lKToKLSAgICAgICAgaWYgc2Vs
Zi5fbWFyayBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgcmV0
dXJuIHNlbGYuX21hcmsua3dhcmdzLmdldChhdHRyLCBkZWZhdWx0KQotCi0gICAgZGVmIGdldGV4
cGxhbmF0aW9uKHNlbGYpOgotICAgICAgICBleHBsID0gZ2V0YXR0cihzZWxmLCAicmVhc29uIiwg
Tm9uZSkgb3Igc2VsZi5nZXQoInJlYXNvbiIsIE5vbmUpCi0gICAgICAgIGlmIG5vdCBleHBsOgot
ICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgImV4cHIiKToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gIiIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJj
b25kaXRpb246ICIgKyBzdHIoc2VsZi5leHByKQotICAgICAgICByZXR1cm4gZXhwbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9leHByZXNzaW9uLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvbWFyay9leHByZXNzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZjU3MDAxMDk3NTcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9leHByZXNzaW9uLnB5CkBAIC0wLDAgKzEsMjI0IEBA
CityIiIiRXZhbHVhdGUgbWF0Y2ggZXhwcmVzc2lvbnMsIGFzIHVzZWQgYnkgYC1rYCBhbmQgYC1t
YC4KKworVGhlIGdyYW1tYXIgaXM6CisKK2V4cHJlc3Npb246IGV4cHI/IEVPRgorZXhwcjogICAg
ICAgYW5kX2V4cHIgKCdvcicgYW5kX2V4cHIpKgorYW5kX2V4cHI6ICAgbm90X2V4cHIgKCdhbmQn
IG5vdF9leHByKSoKK25vdF9leHByOiAgICdub3QnIG5vdF9leHByIHwgJygnIGV4cHIgJyknIHwg
aWRlbnQKK2lkZW50OiAgICAgIChcd3w6fFwrfC18XC58XFt8XF0pKworCitUaGUgc2VtYW50aWNz
IGFyZToKKworLSBFbXB0eSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBGYWxzZS4KKy0gaWRlbnQg
ZXZhbHVhdGVzIHRvIFRydWUgb2YgRmFsc2UgYWNjb3JkaW5nIHRvIGEgcHJvdmlkZWQgbWF0Y2hl
ciBmdW5jdGlvbi4KKy0gb3IvYW5kL25vdCBldmFsdWF0ZSBhY2NvcmRpbmcgdG8gdGhlIHVzdWFs
IGJvb2xlYW4gc2VtYW50aWNzLgorIiIiCitpbXBvcnQgYXN0CitpbXBvcnQgZW51bQoraW1wb3J0
IHJlCitpbXBvcnQgdHlwZXMKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBp
bmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQgTWFwcGluZworZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgU2VxdWVuY2UKKworaW1wb3J0
IGF0dHIKKworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworCitpZiBU
WVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBOb1JldHVybgorCisKK19fYWxs
X18gPSBbCisgICAgIkV4cHJlc3Npb24iLAorICAgICJQYXJzZUVycm9yIiwKK10KKworCitjbGFz
cyBUb2tlblR5cGUoZW51bS5FbnVtKToKKyAgICBMUEFSRU4gPSAibGVmdCBwYXJlbnRoZXNpcyIK
KyAgICBSUEFSRU4gPSAicmlnaHQgcGFyZW50aGVzaXMiCisgICAgT1IgPSAib3IiCisgICAgQU5E
ID0gImFuZCIKKyAgICBOT1QgPSAibm90IgorICAgIElERU5UID0gImlkZW50aWZpZXIiCisgICAg
RU9GID0gImVuZCBvZiBpbnB1dCIKKworCitAYXR0ci5zKGZyb3plbj1UcnVlLCBzbG90cz1UcnVl
KQorY2xhc3MgVG9rZW46CisgICAgdHlwZSA9IGF0dHIuaWIodHlwZT1Ub2tlblR5cGUpCisgICAg
dmFsdWUgPSBhdHRyLmliKHR5cGU9c3RyKQorICAgIHBvcyA9IGF0dHIuaWIodHlwZT1pbnQpCisK
KworY2xhc3MgUGFyc2VFcnJvcihFeGNlcHRpb24pOgorICAgICIiIlRoZSBleHByZXNzaW9uIGNv
bnRhaW5zIGludmFsaWQgc3ludGF4LgorCisgICAgOnBhcmFtIGNvbHVtbjogVGhlIGNvbHVtbiBp
biB0aGUgbGluZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQgKDEtYmFzZWQpLgorICAgIDpwYXJh
bSBtZXNzYWdlOiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvci4KKyAgICAiIiIKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjb2x1bW46IGludCwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAg
ICAgICBzZWxmLmNvbHVtbiA9IGNvbHVtbgorICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdl
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAiYXQgY29s
dW1uIHt9OiB7fSIuZm9ybWF0KHNlbGYuY29sdW1uLCBzZWxmLm1lc3NhZ2UpCisKKworY2xhc3Mg
U2Nhbm5lcjoKKyAgICBfX3Nsb3RzX18gPSAoInRva2VucyIsICJjdXJyZW50IikKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBpbnB1dDogc3RyKSAtPiBOb25lOgorICAgICAgICBzZWxmLnRva2Vu
cyA9IHNlbGYubGV4KGlucHV0KQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBuZXh0KHNlbGYudG9r
ZW5zKQorCisgICAgZGVmIGxleChzZWxmLCBpbnB1dDogc3RyKSAtPiBJdGVyYXRvcltUb2tlbl06
CisgICAgICAgIHBvcyA9IDAKKyAgICAgICAgd2hpbGUgcG9zIDwgbGVuKGlucHV0KToKKyAgICAg
ICAgICAgIGlmIGlucHV0W3Bvc10gaW4gKCIgIiwgIlx0Iik6CisgICAgICAgICAgICAgICAgcG9z
ICs9IDEKKyAgICAgICAgICAgIGVsaWYgaW5wdXRbcG9zXSA9PSAiKCI6CisgICAgICAgICAgICAg
ICAgeWllbGQgVG9rZW4oVG9rZW5UeXBlLkxQQVJFTiwgIigiLCBwb3MpCisgICAgICAgICAgICAg
ICAgcG9zICs9IDEKKyAgICAgICAgICAgIGVsaWYgaW5wdXRbcG9zXSA9PSAiKSI6CisgICAgICAg
ICAgICAgICAgeWllbGQgVG9rZW4oVG9rZW5UeXBlLlJQQVJFTiwgIikiLCBwb3MpCisgICAgICAg
ICAgICAgICAgcG9zICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWF0
Y2ggPSByZS5tYXRjaChyIig6P1x3fDp8XCt8LXxcLnxcW3xcXSkrIiwgaW5wdXRbcG9zOl0pCisg
ICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbWF0
Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgPT0gIm9yIjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuVHlwZS5PUiwgdmFsdWUsIHBvcykK
KyAgICAgICAgICAgICAgICAgICAgZWxpZiB2YWx1ZSA9PSAiYW5kIjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuVHlwZS5BTkQsIHZhbHVlLCBwb3MpCisgICAgICAg
ICAgICAgICAgICAgIGVsaWYgdmFsdWUgPT0gIm5vdCI6CisgICAgICAgICAgICAgICAgICAgICAg
ICB5aWVsZCBUb2tlbihUb2tlblR5cGUuTk9ULCB2YWx1ZSwgcG9zKQorICAgICAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW4oVG9rZW5UeXBl
LklERU5ULCB2YWx1ZSwgcG9zKQorICAgICAgICAgICAgICAgICAgICBwb3MgKz0gbGVuKHZhbHVl
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcnNl
RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKyAxLCAndW5leHBlY3RlZCBjaGFy
YWN0ZXIgInt9IicuZm9ybWF0KGlucHV0W3Bvc10pLAorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgIHlpZWxkIFRva2VuKFRva2VuVHlwZS5FT0YsICIiLCBwb3MpCisKKyAgICBkZWYgYWNj
ZXB0KHNlbGYsIHR5cGU6IFRva2VuVHlwZSwgKiwgcmVqZWN0OiBib29sID0gRmFsc2UpIC0+IE9w
dGlvbmFsW1Rva2VuXToKKyAgICAgICAgaWYgc2VsZi5jdXJyZW50LnR5cGUgaXMgdHlwZToKKyAg
ICAgICAgICAgIHRva2VuID0gc2VsZi5jdXJyZW50CisgICAgICAgICAgICBpZiB0b2tlbi50eXBl
IGlzIG5vdCBUb2tlblR5cGUuRU9GOgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudCA9IG5l
eHQoc2VsZi50b2tlbnMpCisgICAgICAgICAgICByZXR1cm4gdG9rZW4KKyAgICAgICAgaWYgcmVq
ZWN0OgorICAgICAgICAgICAgc2VsZi5yZWplY3QoKHR5cGUsKSkKKyAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiByZWplY3Qoc2VsZiwgZXhwZWN0ZWQ6IFNlcXVlbmNlW1Rva2VuVHlwZV0p
IC0+ICJOb1JldHVybiI6CisgICAgICAgIHJhaXNlIFBhcnNlRXJyb3IoCisgICAgICAgICAgICBz
ZWxmLmN1cnJlbnQucG9zICsgMSwKKyAgICAgICAgICAgICJleHBlY3RlZCB7fTsgZ290IHt9Ii5m
b3JtYXQoCisgICAgICAgICAgICAgICAgIiBPUiAiLmpvaW4odHlwZS52YWx1ZSBmb3IgdHlwZSBp
biBleHBlY3RlZCksIHNlbGYuY3VycmVudC50eXBlLnZhbHVlLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgKQorCisKKyMgVHJ1ZSwgRmFsc2UgYW5kIE5vbmUgYXJlIGxlZ2FsIG1hdGNoIGV4cHJl
c3Npb24gaWRlbnRpZmllcnMsCisjIGJ1dCBpbGxlZ2FsIGFzIFB5dGhvbiBpZGVudGlmaWVycy4g
VG8gZml4IHRoaXMsIHRoaXMgcHJlZml4CisjIGlzIGFkZGVkIHRvIGlkZW50aWZpZXJzIGluIHRo
ZSBjb252ZXJzaW9uIHRvIFB5dGhvbiBBU1QuCitJREVOVF9QUkVGSVggPSAiJCIKKworCitkZWYg
ZXhwcmVzc2lvbihzOiBTY2FubmVyKSAtPiBhc3QuRXhwcmVzc2lvbjoKKyAgICBpZiBzLmFjY2Vw
dChUb2tlblR5cGUuRU9GKToKKyAgICAgICAgcmV0ID0gYXN0Lk5hbWVDb25zdGFudChGYWxzZSkg
ICMgdHlwZTogYXN0LmV4cHIKKyAgICBlbHNlOgorICAgICAgICByZXQgPSBleHByKHMpCisgICAg
ICAgIHMuYWNjZXB0KFRva2VuVHlwZS5FT0YsIHJlamVjdD1UcnVlKQorICAgIHJldHVybiBhc3Qu
Zml4X21pc3NpbmdfbG9jYXRpb25zKGFzdC5FeHByZXNzaW9uKHJldCkpCisKKworZGVmIGV4cHIo
czogU2Nhbm5lcikgLT4gYXN0LmV4cHI6CisgICAgcmV0ID0gYW5kX2V4cHIocykKKyAgICB3aGls
ZSBzLmFjY2VwdChUb2tlblR5cGUuT1IpOgorICAgICAgICByaHMgPSBhbmRfZXhwcihzKQorICAg
ICAgICByZXQgPSBhc3QuQm9vbE9wKGFzdC5PcigpLCBbcmV0LCByaHNdKQorICAgIHJldHVybiBy
ZXQKKworCitkZWYgYW5kX2V4cHIoczogU2Nhbm5lcikgLT4gYXN0LmV4cHI6CisgICAgcmV0ID0g
bm90X2V4cHIocykKKyAgICB3aGlsZSBzLmFjY2VwdChUb2tlblR5cGUuQU5EKToKKyAgICAgICAg
cmhzID0gbm90X2V4cHIocykKKyAgICAgICAgcmV0ID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFty
ZXQsIHJoc10pCisgICAgcmV0dXJuIHJldAorCisKK2RlZiBub3RfZXhwcihzOiBTY2FubmVyKSAt
PiBhc3QuZXhwcjoKKyAgICBpZiBzLmFjY2VwdChUb2tlblR5cGUuTk9UKToKKyAgICAgICAgcmV0
dXJuIGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgbm90X2V4cHIocykpCisgICAgaWYgcy5hY2NlcHQo
VG9rZW5UeXBlLkxQQVJFTik6CisgICAgICAgIHJldCA9IGV4cHIocykKKyAgICAgICAgcy5hY2Nl
cHQoVG9rZW5UeXBlLlJQQVJFTiwgcmVqZWN0PVRydWUpCisgICAgICAgIHJldHVybiByZXQKKyAg
ICBpZGVudCA9IHMuYWNjZXB0KFRva2VuVHlwZS5JREVOVCkKKyAgICBpZiBpZGVudDoKKyAgICAg
ICAgcmV0dXJuIGFzdC5OYW1lKElERU5UX1BSRUZJWCArIGlkZW50LnZhbHVlLCBhc3QuTG9hZCgp
KQorICAgIHMucmVqZWN0KChUb2tlblR5cGUuTk9ULCBUb2tlblR5cGUuTFBBUkVOLCBUb2tlblR5
cGUuSURFTlQpKQorCisKK2NsYXNzIE1hdGNoZXJBZGFwdGVyKE1hcHBpbmdbc3RyLCBib29sXSk6
CisgICAgIiIiQWRhcHRzIGEgbWF0Y2hlciBmdW5jdGlvbiB0byBhIGxvY2FscyBtYXBwaW5nIGFz
IHJlcXVpcmVkIGJ5IGV2YWwoKS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXRjaGVy
OiBDYWxsYWJsZVtbc3RyXSwgYm9vbF0pIC0+IE5vbmU6CisgICAgICAgIHNlbGYubWF0Y2hlciA9
IG1hdGNoZXIKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IHN0cikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIHNlbGYubWF0Y2hlcihrZXlbbGVuKElERU5UX1BSRUZJWCkgOl0pCisK
KyAgICBkZWYgX19pdGVyX18oc2VsZikgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKSAtPiBpbnQ6Cisg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisKK2NsYXNzIEV4cHJlc3Npb246
CisgICAgIiIiQSBjb21waWxlZCBtYXRjaCBleHByZXNzaW9uIGFzIHVzZWQgYnkgLWsgYW5kIC1t
LgorCisgICAgVGhlIGV4cHJlc3Npb24gY2FuIGJlIGV2YXVsYXRlZCBhZ2FpbnN0IGRpZmZlcmVu
dCBtYXRjaGVycy4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgiY29kZSIsKQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGNvZGU6IHR5cGVzLkNvZGVUeXBlKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmNvZGUgPSBjb2RlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY29tcGlsZShz
ZWxmLCBpbnB1dDogc3RyKSAtPiAiRXhwcmVzc2lvbiI6CisgICAgICAgICIiIkNvbXBpbGUgYSBt
YXRjaCBleHByZXNzaW9uLgorCisgICAgICAgIDpwYXJhbSBpbnB1dDogVGhlIGlucHV0IGV4cHJl
c3Npb24gLSBvbmUgbGluZS4KKyAgICAgICAgIiIiCisgICAgICAgIGFzdGV4cHIgPSBleHByZXNz
aW9uKFNjYW5uZXIoaW5wdXQpKQorICAgICAgICBjb2RlID0gY29tcGlsZSgKKyAgICAgICAgICAg
IGFzdGV4cHIsIGZpbGVuYW1lPSI8cHl0ZXN0IG1hdGNoIGV4cHJlc3Npb24+IiwgbW9kZT0iZXZh
bCIsCisgICAgICAgICkgICMgdHlwZTogdHlwZXMuQ29kZVR5cGUKKyAgICAgICAgcmV0dXJuIEV4
cHJlc3Npb24oY29kZSkKKworICAgIGRlZiBldmFsdWF0ZShzZWxmLCBtYXRjaGVyOiBDYWxsYWJs
ZVtbc3RyXSwgYm9vbF0pIC0+IGJvb2w6CisgICAgICAgICIiIkV2YWx1YXRlIHRoZSBtYXRjaCBl
eHByZXNzaW9uLgorCisgICAgICAgIDpwYXJhbSBtYXRjaGVyOgorICAgICAgICAgICAgR2l2ZW4g
YW4gaWRlbnRpZmllciwgc2hvdWxkIHJldHVybiB3aGV0aGVyIGl0IG1hdGNoZXMgb3Igbm90Lgor
ICAgICAgICAgICAgU2hvdWxkIGJlIHByZXBhcmVkIHRvIGhhbmRsZSBhcmJpdHJhcnkgc3RyaW5n
cyBhcyBpbnB1dC4KKworICAgICAgICA6cmV0dXJuczogV2hldGhlciB0aGUgZXhwcmVzc2lvbiBt
YXRjaGVzIG9yIG5vdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldCA9IGV2YWwoCisgICAgICAg
ICAgICBzZWxmLmNvZGUsIHsiX19idWlsdGluc19fIjoge319LCBNYXRjaGVyQWRhcHRlcihtYXRj
aGVyKQorICAgICAgICApICAjIHR5cGU6IGJvb2wKKyAgICAgICAgcmV0dXJuIHJldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9sZWdhY3kucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvX3B5dGVzdC9tYXJrL2xlZ2FjeS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYWIwMTZhMDM1NWI3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3QvbWFyay9sZWdhY3kucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0iIiIKLXRo
aXMgaXMgYSBwbGFjZSB3aGVyZSB3ZSBwdXQgZGF0YXN0cnVjdHVyZXMgdXNlZCBieSBsZWdhY3kg
YXBpcwotd2UgaG9wZSBvdCByZW1vdmUKLSIiIgotaW1wb3J0IGF0dHIKLWltcG9ydCBrZXl3b3Jk
Ci0KLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFVzYWdlRXJyb3IKLQotCi1AYXR0ci5zCi1j
bGFzcyBNYXJrTWFwcGluZyhvYmplY3QpOgotICAgICIiIlByb3ZpZGVzIGEgbG9jYWwgbWFwcGlu
ZyBmb3IgbWFya2VycyB3aGVyZSBpdGVtIGFjY2VzcwotICAgIHJlc29sdmVzIHRvIFRydWUgaWYg
dGhlIG1hcmtlciBpcyBwcmVzZW50LiAiIiIKLQotICAgIG93bl9tYXJrX25hbWVzID0gYXR0ci5p
YigpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV9pdGVtKGNscywgaXRlbSk6Ci0g
ICAgICAgIG1hcmtfbmFtZXMgPSB7bWFyay5uYW1lIGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJr
ZXJzKCl9Ci0gICAgICAgIHJldHVybiBjbHMobWFya19uYW1lcykKLQotICAgIGRlZiBfX2dldGl0
ZW1fXyhzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5vd25fbWFya19u
YW1lcwotCi0KLWNsYXNzIEtleXdvcmRNYXBwaW5nKG9iamVjdCk6Ci0gICAgIiIiUHJvdmlkZXMg
YSBsb2NhbCBtYXBwaW5nIGZvciBrZXl3b3Jkcy4KLSAgICBHaXZlbiBhIGxpc3Qgb2YgbmFtZXMs
IG1hcCBhbnkgc3Vic3RyaW5nIG9mIG9uZSBvZiB0aGVzZSBuYW1lcyB0byBUcnVlLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzKToKLSAgICAgICAgc2VsZi5fbmFtZXMg
PSBuYW1lcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21faXRlbShjbHMsIGl0ZW0p
OgotICAgICAgICBtYXBwZWRfbmFtZXMgPSBzZXQoKQotCi0gICAgICAgICMgQWRkIHRoZSBuYW1l
cyBvZiB0aGUgY3VycmVudCBpdGVtIGFuZCBhbnkgcGFyZW50IGl0ZW1zCi0gICAgICAgIGltcG9y
dCBweXRlc3QKLQotICAgICAgICBmb3IgaXRlbSBpbiBpdGVtLmxpc3RjaGFpbigpOgotICAgICAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgcHl0ZXN0Lkluc3RhbmNlKToKLSAgICAgICAg
ICAgICAgICBtYXBwZWRfbmFtZXMuYWRkKGl0ZW0ubmFtZSkKLQotICAgICAgICAjIEFkZCB0aGUg
bmFtZXMgYWRkZWQgYXMgZXh0cmEga2V5d29yZHMgdG8gY3VycmVudCBvciBwYXJlbnQgaXRlbXMK
LSAgICAgICAgZm9yIG5hbWUgaW4gaXRlbS5saXN0ZXh0cmFrZXl3b3JkcygpOgotICAgICAgICAg
ICAgbWFwcGVkX25hbWVzLmFkZChuYW1lKQotCi0gICAgICAgICMgQWRkIHRoZSBuYW1lcyBhdHRh
Y2hlZCB0byB0aGUgY3VycmVudCBmdW5jdGlvbiB0aHJvdWdoIGRpcmVjdCBhc3NpZ25tZW50Ci0g
ICAgICAgIGlmIGhhc2F0dHIoaXRlbSwgImZ1bmN0aW9uIik6Ci0gICAgICAgICAgICBmb3IgbmFt
ZSBpbiBpdGVtLmZ1bmN0aW9uLl9fZGljdF9fOgotICAgICAgICAgICAgICAgIG1hcHBlZF9uYW1l
cy5hZGQobmFtZSkKLQotICAgICAgICByZXR1cm4gY2xzKG1hcHBlZF9uYW1lcykKLQotICAgIGRl
ZiBfX2dldGl0ZW1fXyhzZWxmLCBzdWJuYW1lKToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5f
bmFtZXM6Ci0gICAgICAgICAgICBpZiBzdWJuYW1lIGluIG5hbWU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotcHl0aG9uX2tleXdvcmRzX2Fs
bG93ZWRfbGlzdCA9IFsib3IiLCAiYW5kIiwgIm5vdCJdCi0KLQotZGVmIG1hdGNobWFyayhjb2xp
dGVtLCBtYXJrZXhwcik6Ci0gICAgIiIiVHJpZXMgdG8gbWF0Y2ggb24gYW55IG1hcmtlciBuYW1l
cywgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIGNvbGl0ZW0uIiIiCi0gICAgcmV0dXJuIGV2YWwobWFy
a2V4cHIsIHt9LCBNYXJrTWFwcGluZy5mcm9tX2l0ZW0oY29saXRlbSkpCi0KLQotZGVmIG1hdGNo
a2V5d29yZChjb2xpdGVtLCBrZXl3b3JkZXhwcik6Ci0gICAgIiIiVHJpZXMgdG8gbWF0Y2ggZ2l2
ZW4ga2V5d29yZCBleHByZXNzaW9uIHRvIGdpdmVuIGNvbGxlY3RvciBpdGVtLgotCi0gICAgV2ls
bCBtYXRjaCBvbiB0aGUgbmFtZSBvZiBjb2xpdGVtLCBpbmNsdWRpbmcgdGhlIG5hbWVzIG9mIGl0
cyBwYXJlbnRzLgotICAgIE9ubHkgbWF0Y2hlcyBuYW1lcyBvZiBpdGVtcyB3aGljaCBhcmUgZWl0
aGVyIGEgOmNsYXNzOmBDbGFzc2Agb3IgYQotICAgIDpjbGFzczpgRnVuY3Rpb25gLgotICAgIEFk
ZGl0aW9uYWxseSwgbWF0Y2hlcyBvbiBuYW1lcyBpbiB0aGUgJ2V4dHJhX2tleXdvcmRfbWF0Y2hl
cycgc2V0IG9mCi0gICAgYW55IGl0ZW0sIGFzIHdlbGwgYXMgbmFtZXMgZGlyZWN0bHkgYXNzaWdu
ZWQgdG8gdGVzdCBmdW5jdGlvbnMuCi0gICAgIiIiCi0gICAgbWFwcGluZyA9IEtleXdvcmRNYXBw
aW5nLmZyb21faXRlbShjb2xpdGVtKQotICAgIGlmICIgIiBub3QgaW4ga2V5d29yZGV4cHI6Ci0g
ICAgICAgICMgc3BlY2lhbCBjYXNlIHRvIGFsbG93IGZvciBzaW1wbGUgIi1rIHBhc3MiIGFuZCAi
LWsgMS4zIgotICAgICAgICByZXR1cm4gbWFwcGluZ1trZXl3b3JkZXhwcl0KLSAgICBlbGlmIGtl
eXdvcmRleHByLnN0YXJ0c3dpdGgoIm5vdCAiKSBhbmQgIiAiIG5vdCBpbiBrZXl3b3JkZXhwcls0
Ol06Ci0gICAgICAgIHJldHVybiBub3QgbWFwcGluZ1trZXl3b3JkZXhwcls0Ol1dCi0gICAgZm9y
IGt3ZCBpbiBrZXl3b3JkZXhwci5zcGxpdCgpOgotICAgICAgICBpZiBrZXl3b3JkLmlza2V5d29y
ZChrd2QpIGFuZCBrd2Qgbm90IGluIHB5dGhvbl9rZXl3b3Jkc19hbGxvd2VkX2xpc3Q6Ci0gICAg
ICAgICAgICByYWlzZSBVc2FnZUVycm9yKAotICAgICAgICAgICAgICAgICJQeXRob24ga2V5d29y
ZCAne30nIG5vdCBhY2NlcHRlZCBpbiBleHByZXNzaW9ucyBwYXNzZWQgdG8gJy1rJyIuZm9ybWF0
KAotICAgICAgICAgICAgICAgICAgICBrd2QKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICApCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZXZhbChrZXl3b3JkZXhwciwge30sIG1hcHBp
bmcpCi0gICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJX
cm9uZyBleHByZXNzaW9uIHBhc3NlZCB0byAnLWsnOiB7fSIuZm9ybWF0KGtleXdvcmRleHByKSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvc3RydWN0dXJlcy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvc3RydWN0dXJlcy5weQppbmRleCAxYTJiZDcz
ZGU1NjguLjM5YTIzMjFiM2ZmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
bWFyay9zdHJ1Y3R1cmVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvc3Ry
dWN0dXJlcy5weQpAQCAtMSwxMTMgKzEsMTk4IEBACitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBp
bXBvcnQgaW5zcGVjdAoraW1wb3J0IHR5cGluZwogaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBhdHRyZ2V0dGVy
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitm
cm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcKK2Zyb20g
dHlwaW5nIGltcG9ydCBOYW1lZFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zy
b20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorZnJvbSB0
eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBp
bmcgaW1wb3J0IFVuaW9uCiAKIGltcG9ydCBhdHRyCiAKLWZyb20gLi5kZXByZWNhdGVkIGltcG9y
dCBNQVJLX1BBUkFNRVRFUlNFVF9VTlBBQ0tJTkcsIE1BUktfSU5GT19BVFRSSUJVVEUKLWZyb20g
Li5jb21wYXQgaW1wb3J0IE5PVFNFVCwgZ2V0ZnNsaW5lbm8sIE1hcHBpbmdNaXhpbgotZnJvbSBz
aXgubW92ZXMgaW1wb3J0IG1hcCwgcmVkdWNlCitmcm9tIC4uX2NvZGUgaW1wb3J0IGdldGZzbGlu
ZW5vCitmcm9tIC4uY29tcGF0IGltcG9ydCBhc2NpaV9lc2NhcGVkCitmcm9tIC4uY29tcGF0IGlt
cG9ydCBmaW5hbAorZnJvbSAuLmNvbXBhdCBpbXBvcnQgTk9UU0VUCitmcm9tIC4uY29tcGF0IGlt
cG9ydCBOb3RTZXRUeXBlCitmcm9tIC4uY29tcGF0IGltcG9ydCBvdmVybG9hZAorZnJvbSAuLmNv
bXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29u
ZmlnCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwKK2Zyb20gX3B5dGVzdC53YXJu
aW5nX3R5cGVzIGltcG9ydCBQeXRlc3RVbmtub3duTWFya1dhcm5pbmcKIAoraWYgVFlQRV9DSEVD
S0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQogCi1FTVBUWV9QQVJBTUVURVJTRVRf
T1BUSU9OID0gImVtcHR5X3BhcmFtZXRlcl9zZXRfbWFyayIKKyAgICBmcm9tIC4ubm9kZXMgaW1w
b3J0IE5vZGUKIAogCi1kZWYgYWxpYXMobmFtZSwgd2FybmluZz1Ob25lKToKLSAgICBnZXR0ZXIg
PSBhdHRyZ2V0dGVyKG5hbWUpCitFTVBUWV9QQVJBTUVURVJTRVRfT1BUSU9OID0gImVtcHR5X3Bh
cmFtZXRlcl9zZXRfbWFyayIKIAotICAgIGRlZiB3YXJuZWQoc2VsZik6Ci0gICAgICAgIHdhcm5p
bmdzLndhcm4od2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByZXR1cm4gZ2V0dGVyKHNl
bGYpCiAKLSAgICByZXR1cm4gcHJvcGVydHkoZ2V0dGVyIGlmIHdhcm5pbmcgaXMgTm9uZSBlbHNl
IHdhcm5lZCwgZG9jPSJhbGlhcyBmb3IgIiArIG5hbWUpCitkZWYgaXN0ZXN0ZnVuYyhmdW5jKSAt
PiBib29sOgorICAgIHJldHVybiAoCisgICAgICAgIGhhc2F0dHIoZnVuYywgIl9fY2FsbF9fIikK
KyAgICAgICAgYW5kIGdldGF0dHIoZnVuYywgIl9fbmFtZV9fIiwgIjxsYW1iZGE+IikgIT0gIjxs
YW1iZGE+IgorICAgICkKIAogCi1kZWYgaXN0ZXN0ZnVuYyhmdW5jKToKLSAgICByZXR1cm4gaGFz
YXR0cihmdW5jLCAiX19jYWxsX18iKSBhbmQgZ2V0YXR0cigKLSAgICAgICAgZnVuYywgIl9fbmFt
ZV9fIiwgIjxsYW1iZGE+IgotICAgICkgIT0gIjxsYW1iZGE+IgorZGVmIGdldF9lbXB0eV9wYXJh
bWV0ZXJzZXRfbWFyaygKKyAgICBjb25maWc6IENvbmZpZywgYXJnbmFtZXM6IFNlcXVlbmNlW3N0
cl0sIGZ1bmMKKykgLT4gIk1hcmtEZWNvcmF0b3IiOgorICAgIGZyb20gLi5ub2RlcyBpbXBvcnQg
Q29sbGVjdG9yCiAKKyAgICBmcywgbGluZW5vID0gZ2V0ZnNsaW5lbm8oZnVuYykKKyAgICByZWFz
b24gPSAiZ290IGVtcHR5IHBhcmFtZXRlciBzZXQgJXIsIGZ1bmN0aW9uICVzIGF0ICVzOiVkIiAl
ICgKKyAgICAgICAgYXJnbmFtZXMsCisgICAgICAgIGZ1bmMuX19uYW1lX18sCisgICAgICAgIGZz
LAorICAgICAgICBsaW5lbm8sCisgICAgKQogCi1kZWYgZ2V0X2VtcHR5X3BhcmFtZXRlcnNldF9t
YXJrKGNvbmZpZywgYXJnbmFtZXMsIGZ1bmMpOgogICAgIHJlcXVlc3RlZF9tYXJrID0gY29uZmln
LmdldGluaShFTVBUWV9QQVJBTUVURVJTRVRfT1BUSU9OKQogICAgIGlmIHJlcXVlc3RlZF9tYXJr
IGluICgiIiwgTm9uZSwgInNraXAiKToKLSAgICAgICAgbWFyayA9IE1BUktfR0VOLnNraXAKKyAg
ICAgICAgbWFyayA9IE1BUktfR0VOLnNraXAocmVhc29uPXJlYXNvbikKICAgICBlbGlmIHJlcXVl
c3RlZF9tYXJrID09ICJ4ZmFpbCI6Ci0gICAgICAgIG1hcmsgPSBNQVJLX0dFTi54ZmFpbChydW49
RmFsc2UpCisgICAgICAgIG1hcmsgPSBNQVJLX0dFTi54ZmFpbChyZWFzb249cmVhc29uLCBydW49
RmFsc2UpCisgICAgZWxpZiByZXF1ZXN0ZWRfbWFyayA9PSAiZmFpbF9hdF9jb2xsZWN0IjoKKyAg
ICAgICAgZl9uYW1lID0gZnVuYy5fX25hbWVfXworICAgICAgICBfLCBsaW5lbm8gPSBnZXRmc2xp
bmVubyhmdW5jKQorICAgICAgICByYWlzZSBDb2xsZWN0b3IuQ29sbGVjdEVycm9yKAorICAgICAg
ICAgICAgIkVtcHR5IHBhcmFtZXRlciBzZXQgaW4gJyVzJyBhdCBsaW5lICVkIiAlIChmX25hbWUs
IGxpbmVubyArIDEpCisgICAgICAgICkKICAgICBlbHNlOgogICAgICAgICByYWlzZSBMb29rdXBF
cnJvcihyZXF1ZXN0ZWRfbWFyaykKLSAgICBmcywgbGluZW5vID0gZ2V0ZnNsaW5lbm8oZnVuYykK
LSAgICByZWFzb24gPSAiZ290IGVtcHR5IHBhcmFtZXRlciBzZXQgJXIsIGZ1bmN0aW9uICVzIGF0
ICVzOiVkIiAlICgKLSAgICAgICAgYXJnbmFtZXMsIGZ1bmMuX19uYW1lX18sIGZzLCBsaW5lbm8K
LSAgICApCi0gICAgcmV0dXJuIG1hcmsocmVhc29uPXJlYXNvbikKKyAgICByZXR1cm4gbWFyawog
CiAKLWNsYXNzIFBhcmFtZXRlclNldChuYW1lZHR1cGxlKCJQYXJhbWV0ZXJTZXQiLCAidmFsdWVz
LCBtYXJrcywgaWQiKSk6Ci0KK2NsYXNzIFBhcmFtZXRlclNldCgKKyAgICBOYW1lZFR1cGxlKAor
ICAgICAgICAiUGFyYW1ldGVyU2V0IiwKKyAgICAgICAgWworICAgICAgICAgICAgKCJ2YWx1ZXMi
LCBTZXF1ZW5jZVtVbmlvbltvYmplY3QsIE5vdFNldFR5cGVdXSksCisgICAgICAgICAgICAoIm1h
cmtzIiwgInR5cGluZy5Db2xsZWN0aW9uW1VuaW9uW01hcmtEZWNvcmF0b3IsIE1hcmtdXSIpLAor
ICAgICAgICAgICAgKCJpZCIsIE9wdGlvbmFsW3N0cl0pLAorICAgICAgICBdLAorICAgICkKKyk6
CiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBhcmFtKGNscywgKnZhbHVlcywgKiprdyk6Ci0g
ICAgICAgIG1hcmtzID0ga3cucG9wKCJtYXJrcyIsICgpKQorICAgIGRlZiBwYXJhbSgKKyAgICAg
ICAgY2xzLAorICAgICAgICAqdmFsdWVzOiBvYmplY3QsCisgICAgICAgIG1hcmtzOiAiVW5pb25b
TWFya0RlY29yYXRvciwgdHlwaW5nLkNvbGxlY3Rpb25bVW5pb25bTWFya0RlY29yYXRvciwgTWFy
a11dXSIgPSAoKSwKKyAgICAgICAgaWQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgKSAtPiAi
UGFyYW1ldGVyU2V0IjoKICAgICAgICAgaWYgaXNpbnN0YW5jZShtYXJrcywgTWFya0RlY29yYXRv
cik6Ci0gICAgICAgICAgICBtYXJrcyA9IG1hcmtzLAorICAgICAgICAgICAgbWFya3MgPSAobWFy
a3MsKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWFya3Ms
ICh0dXBsZSwgbGlzdCwgc2V0KSkKLQotICAgICAgICBkZWYgcGFyYW1fZXh0cmFjdF9pZChpZD1O
b25lKToKLSAgICAgICAgICAgIHJldHVybiBpZAorICAgICAgICAgICAgIyBUT0RPKHB5MzYpOiBD
aGFuZ2UgdG8gY29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb24uCisgICAgICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShtYXJrcywgKGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSwgc2V0KSkKIAotICAg
ICAgICBpZF8gPSBwYXJhbV9leHRyYWN0X2lkKCoqa3cpCi0gICAgICAgIHJldHVybiBjbHModmFs
dWVzLCBtYXJrcywgaWRfKQorICAgICAgICBpZiBpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKGlkLCBzdHIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGlkIHRvIGJlIGEgc3RyaW5nLCBn
b3Qge306IHshcn0iLmZvcm1hdCh0eXBlKGlkKSwgaWQpCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWQgPSBhc2NpaV9lc2NhcGVkKGlkKQorICAgICAgICByZXR1cm4gY2xzKHZhbHVl
cywgbWFya3MsIGlkKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGV4dHJhY3RfZnJvbShj
bHMsIHBhcmFtZXRlcnNldCwgbGVnYWN5X2ZvcmNlX3R1cGxlPUZhbHNlKToKLSAgICAgICAgIiIi
Ci0gICAgICAgIDpwYXJhbSBwYXJhbWV0ZXJzZXQ6Ci0gICAgICAgICAgICBhIGxlZ2FjeSBzdHls
ZSBwYXJhbWV0ZXJzZXQgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBhIHR1cGxlLAotICAgICAgICAg
ICAgYW5kIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQgaW50byBhIG1lc3Mgb2YgbWFyayBvYmpl
Y3RzCisgICAgZGVmIGV4dHJhY3RfZnJvbSgKKyAgICAgICAgY2xzLAorICAgICAgICBwYXJhbWV0
ZXJzZXQ6IFVuaW9uWyJQYXJhbWV0ZXJTZXQiLCBTZXF1ZW5jZVtvYmplY3RdLCBvYmplY3RdLAor
ICAgICAgICBmb3JjZV90dXBsZTogYm9vbCA9IEZhbHNlLAorICAgICkgLT4gIlBhcmFtZXRlclNl
dCI6CisgICAgICAgICIiIkV4dHJhY3QgZnJvbSBhbiBvYmplY3Qgb3Igb2JqZWN0cy4KIAotICAg
ICAgICA6cGFyYW0gbGVnYWN5X2ZvcmNlX3R1cGxlOgotICAgICAgICAgICAgZW5mb3JjZSB0dXBs
ZSB3cmFwcGluZyBzbyBzaW5nbGUgYXJndW1lbnQgdHVwbGUgdmFsdWVzCi0gICAgICAgICAgICBk
b24ndCBnZXQgZGVjb21wb3NlZCBhbmQgYnJlYWsgdGVzdHMKKyAgICAgICAgOnBhcmFtIHBhcmFt
ZXRlcnNldDoKKyAgICAgICAgICAgIEEgbGVnYWN5IHN0eWxlIHBhcmFtZXRlcnNldCB0aGF0IG1h
eSBvciBtYXkgbm90IGJlIGEgdHVwbGUsCisgICAgICAgICAgICBhbmQgbWF5IG9yIG1heSBub3Qg
YmUgd3JhcHBlZCBpbnRvIGEgbWVzcyBvZiBtYXJrIG9iamVjdHMuCiAKKyAgICAgICAgOnBhcmFt
IGZvcmNlX3R1cGxlOgorICAgICAgICAgICAgRW5mb3JjZSB0dXBsZSB3cmFwcGluZyBzbyBzaW5n
bGUgYXJndW1lbnQgdHVwbGUgdmFsdWVzCisgICAgICAgICAgICBkb24ndCBnZXQgZGVjb21wb3Nl
ZCBhbmQgYnJlYWsgdGVzdHMuCiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
cGFyYW1ldGVyc2V0LCBjbHMpOgogICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNldAotICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzZXQsIE1hcmtEZWNvcmF0b3IpIGFuZCBs
ZWdhY3lfZm9yY2VfdHVwbGU6CisgICAgICAgIGlmIGZvcmNlX3R1cGxlOgogICAgICAgICAgICAg
cmV0dXJuIGNscy5wYXJhbShwYXJhbWV0ZXJzZXQpCi0KLSAgICAgICAgbmV3bWFya3MgPSBbXQot
ICAgICAgICBhcmd2YWwgPSBwYXJhbWV0ZXJzZXQKLSAgICAgICAgd2hpbGUgaXNpbnN0YW5jZShh
cmd2YWwsIE1hcmtEZWNvcmF0b3IpOgotICAgICAgICAgICAgbmV3bWFya3MuYXBwZW5kKAotICAg
ICAgICAgICAgICAgIE1hcmtEZWNvcmF0b3IoTWFyayhhcmd2YWwubWFya25hbWUsIGFyZ3ZhbC5h
cmdzWzotMV0sIGFyZ3ZhbC5rd2FyZ3MpKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgYXJn
dmFsID0gYXJndmFsLmFyZ3NbLTFdCi0gICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShhcmd2
YWwsIFBhcmFtZXRlclNldCkKLSAgICAgICAgaWYgbGVnYWN5X2ZvcmNlX3R1cGxlOgotICAgICAg
ICAgICAgYXJndmFsID0gYXJndmFsLAotCi0gICAgICAgIGlmIG5ld21hcmtzOgotICAgICAgICAg
ICAgd2FybmluZ3Mud2FybihNQVJLX1BBUkFNRVRFUlNFVF9VTlBBQ0tJTkcpCi0KLSAgICAgICAg
cmV0dXJuIGNscyhhcmd2YWwsIG1hcmtzPW5ld21hcmtzLCBpZD1Ob25lKQotCi0gICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIF9mb3JfcGFyYW1ldHJpemUoY2xzLCBhcmduYW1lcywgYXJndmFsdWVz
LCBmdW5jLCBjb25maWcpOgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUT0RPOiBSZWZh
Y3RvciB0byBmaXggdGhpcyB0eXBlLWlnbm9yZS4gQ3VycmVudGx5IHRoZSBmb2xsb3dpbmcKKyAg
ICAgICAgICAgICMgdHlwZS1jaGVja3MgYnV0IGNyYXNoZXM6CisgICAgICAgICAgICAjCisgICAg
ICAgICAgICAjICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgneCcsICd5JyksIFsxLCAyXSkK
KyAgICAgICAgICAgICMgICBkZWYgdGVzdF9mb28oeCwgeSk6IHBhc3MKKyAgICAgICAgICAgIHJl
dHVybiBjbHMocGFyYW1ldGVyc2V0LCBtYXJrcz1bXSwgaWQ9Tm9uZSkgICMgdHlwZTogaWdub3Jl
W2FyZy10eXBlXQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfcGFyc2VfcGFyYW1ldHJp
emVfYXJncygKKyAgICAgICAgYXJnbmFtZXM6IFVuaW9uW3N0ciwgTGlzdFtzdHJdLCBUdXBsZVtz
dHIsIC4uLl1dLAorICAgICAgICBhcmd2YWx1ZXM6IEl0ZXJhYmxlW1VuaW9uWyJQYXJhbWV0ZXJT
ZXQiLCBTZXF1ZW5jZVtvYmplY3RdLCBvYmplY3RdXSwKKyAgICAgICAgKmFyZ3MsCisgICAgICAg
ICoqa3dhcmdzCisgICAgKSAtPiBUdXBsZVtVbmlvbltMaXN0W3N0cl0sIFR1cGxlW3N0ciwgLi4u
XV0sIGJvb2xdOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmduYW1lcywgKHR1cGxlLCBs
aXN0KSk6CiAgICAgICAgICAgICBhcmduYW1lcyA9IFt4LnN0cmlwKCkgZm9yIHggaW4gYXJnbmFt
ZXMuc3BsaXQoIiwiKSBpZiB4LnN0cmlwKCldCiAgICAgICAgICAgICBmb3JjZV90dXBsZSA9IGxl
bihhcmduYW1lcykgPT0gMQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yY2VfdHVwbGUg
PSBGYWxzZQotICAgICAgICBwYXJhbWV0ZXJzID0gWwotICAgICAgICAgICAgUGFyYW1ldGVyU2V0
LmV4dHJhY3RfZnJvbSh4LCBsZWdhY3lfZm9yY2VfdHVwbGU9Zm9yY2VfdHVwbGUpCi0gICAgICAg
ICAgICBmb3IgeCBpbiBhcmd2YWx1ZXMKKyAgICAgICAgcmV0dXJuIGFyZ25hbWVzLCBmb3JjZV90
dXBsZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfcGFyc2VfcGFyYW1ldHJpemVfcGFy
YW1ldGVycygKKyAgICAgICAgYXJndmFsdWVzOiBJdGVyYWJsZVtVbmlvblsiUGFyYW1ldGVyU2V0
IiwgU2VxdWVuY2Vbb2JqZWN0XSwgb2JqZWN0XV0sCisgICAgICAgIGZvcmNlX3R1cGxlOiBib29s
LAorICAgICkgLT4gTGlzdFsiUGFyYW1ldGVyU2V0Il06CisgICAgICAgIHJldHVybiBbCisgICAg
ICAgICAgICBQYXJhbWV0ZXJTZXQuZXh0cmFjdF9mcm9tKHgsIGZvcmNlX3R1cGxlPWZvcmNlX3R1
cGxlKSBmb3IgeCBpbiBhcmd2YWx1ZXMKICAgICAgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisg
ICAgZGVmIF9mb3JfcGFyYW1ldHJpemUoCisgICAgICAgIGNscywKKyAgICAgICAgYXJnbmFtZXM6
IFVuaW9uW3N0ciwgTGlzdFtzdHJdLCBUdXBsZVtzdHIsIC4uLl1dLAorICAgICAgICBhcmd2YWx1
ZXM6IEl0ZXJhYmxlW1VuaW9uWyJQYXJhbWV0ZXJTZXQiLCBTZXF1ZW5jZVtvYmplY3RdLCBvYmpl
Y3RdXSwKKyAgICAgICAgZnVuYywKKyAgICAgICAgY29uZmlnOiBDb25maWcsCisgICAgICAgIG5v
ZGVpZDogc3RyLAorICAgICkgLT4gVHVwbGVbVW5pb25bTGlzdFtzdHJdLCBUdXBsZVtzdHIsIC4u
Ll1dLCBMaXN0WyJQYXJhbWV0ZXJTZXQiXV06CisgICAgICAgIGFyZ25hbWVzLCBmb3JjZV90dXBs
ZSA9IGNscy5fcGFyc2VfcGFyYW1ldHJpemVfYXJncyhhcmduYW1lcywgYXJndmFsdWVzKQorICAg
ICAgICBwYXJhbWV0ZXJzID0gY2xzLl9wYXJzZV9wYXJhbWV0cml6ZV9wYXJhbWV0ZXJzKGFyZ3Zh
bHVlcywgZm9yY2VfdHVwbGUpCiAgICAgICAgIGRlbCBhcmd2YWx1ZXMKIAotICAgICAgICBpZiBu
b3QgcGFyYW1ldGVyczoKKyAgICAgICAgaWYgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICMgQ2hl
Y2sgYWxsIHBhcmFtZXRlciBzZXRzIGhhdmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHZhbHVlcy4K
KyAgICAgICAgICAgIGZvciBwYXJhbSBpbiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIGlm
IGxlbihwYXJhbS52YWx1ZXMpICE9IGxlbihhcmduYW1lcyk6CisgICAgICAgICAgICAgICAgICAg
IG1zZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICd7bm9kZWlkfTogaW4gInBhcmFtZXRy
aXplIiB0aGUgbnVtYmVyIG9mIG5hbWVzICh7bmFtZXNfbGVufSk6XG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAiICB7bmFtZXN9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBi
ZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHZhbHVlcyAoe3ZhbHVlc19sZW59KTpcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICIgIHt2YWx1ZXN9IgorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgICAgIGZhaWwoCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cuZm9y
bWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVpZD1ub2RlaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXBhcmFtLnZhbHVlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lcz1hcmduYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lc19sZW49bGVuKGFyZ25hbWVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZXNfbGVuPWxlbihwYXJhbS52YWx1ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRW1wdHkgcGFyYW1ldGVyIHNldCAo
bGlrZWx5IGNvbXB1dGVkIGF0IHJ1bnRpbWUpOiBjcmVhdGUgYSBzaW5nbGUKKyAgICAgICAgICAg
ICMgcGFyYW1ldGVyIHNldCB3aXRoIE5PVFNFVCB2YWx1ZXMsIHdpdGggdGhlICJlbXB0eSBwYXJh
bWV0ZXIgc2V0IiBtYXJrIGFwcGxpZWQgdG8gaXQuCiAgICAgICAgICAgICBtYXJrID0gZ2V0X2Vt
cHR5X3BhcmFtZXRlcnNldF9tYXJrKGNvbmZpZywgYXJnbmFtZXMsIGZ1bmMpCiAgICAgICAgICAg
ICBwYXJhbWV0ZXJzLmFwcGVuZCgKICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJTZXQodmFsdWVz
PShOT1RTRVQsKSAqIGxlbihhcmduYW1lcyksIG1hcmtzPVttYXJrXSwgaWQ9Tm9uZSkKQEAgLTEx
NSwzOCArMjAwLDY3IEBAIGNsYXNzIFBhcmFtZXRlclNldChuYW1lZHR1cGxlKCJQYXJhbWV0ZXJT
ZXQiLCAidmFsdWVzLCBtYXJrcywgaWQiKSk6CiAgICAgICAgIHJldHVybiBhcmduYW1lcywgcGFy
YW1ldGVycwogCiAKK0BmaW5hbAogQGF0dHIucyhmcm96ZW49VHJ1ZSkKLWNsYXNzIE1hcmsob2Jq
ZWN0KToKLSAgICAjOiBuYW1lIG9mIHRoZSBtYXJrCitjbGFzcyBNYXJrOgorICAgICM6IE5hbWUg
b2YgdGhlIG1hcmsuCiAgICAgbmFtZSA9IGF0dHIuaWIodHlwZT1zdHIpCi0gICAgIzogcG9zaXRp
b25hbCBhcmd1bWVudHMgb2YgdGhlIG1hcmsgZGVjb3JhdG9yCi0gICAgYXJncyA9IGF0dHIuaWIo
dHlwZT0iTGlzdFtvYmplY3RdIikKLSAgICAjOiBrZXl3b3JkIGFyZ3VtZW50cyBvZiB0aGUgbWFy
ayBkZWNvcmF0b3IKLSAgICBrd2FyZ3MgPSBhdHRyLmliKHR5cGU9IkRpY3Rbc3RyLCBvYmplY3Rd
IikKKyAgICAjOiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBvZiB0aGUgbWFyayBkZWNvcmF0b3IuCisg
ICAgYXJncyA9IGF0dHIuaWIodHlwZT1UdXBsZVtBbnksIC4uLl0pCisgICAgIzogS2V5d29yZCBh
cmd1bWVudHMgb2YgdGhlIG1hcmsgZGVjb3JhdG9yLgorICAgIGt3YXJncyA9IGF0dHIuaWIodHlw
ZT1NYXBwaW5nW3N0ciwgQW55XSkKKworICAgICM6IFNvdXJjZSBNYXJrIGZvciBpZHMgd2l0aCBw
YXJhbWV0cml6ZSBNYXJrcy4KKyAgICBfcGFyYW1faWRzX2Zyb20gPSBhdHRyLmliKHR5cGU9T3B0
aW9uYWxbIk1hcmsiXSwgZGVmYXVsdD1Ob25lLCByZXByPUZhbHNlKQorICAgICM6IFJlc29sdmVk
L2dlbmVyYXRlZCBpZHMgd2l0aCBwYXJhbWV0cml6ZSBNYXJrcy4KKyAgICBfcGFyYW1faWRzX2dl
bmVyYXRlZCA9IGF0dHIuaWIoCisgICAgICAgIHR5cGU9T3B0aW9uYWxbU2VxdWVuY2Vbc3RyXV0s
IGRlZmF1bHQ9Tm9uZSwgcmVwcj1GYWxzZQorICAgICkKIAotICAgIGRlZiBjb21iaW5lZF93aXRo
KHNlbGYsIG90aGVyKToKLSAgICAgICAgIiIiCi0gICAgICAgIDpwYXJhbSBvdGhlcjogdGhlIG1h
cmsgdG8gY29tYmluZSB3aXRoCi0gICAgICAgIDp0eXBlIG90aGVyOiBNYXJrCi0gICAgICAgIDpy
dHlwZTogTWFyaworICAgIGRlZiBfaGFzX3BhcmFtX2lkcyhzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gImlkcyIgaW4gc2VsZi5rd2FyZ3Mgb3IgbGVuKHNlbGYuYXJncykgPj0gNAorCisg
ICAgZGVmIGNvbWJpbmVkX3dpdGgoc2VsZiwgb3RoZXI6ICJNYXJrIikgLT4gIk1hcmsiOgorICAg
ICAgICAiIiJSZXR1cm4gYSBuZXcgTWFyayB3aGljaCBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoaXMK
KyAgICAgICAgTWFyayBhbmQgYW5vdGhlciBNYXJrLgogCi0gICAgICAgIGNvbWJpbmVzIGJ5IGFw
cGVuZGluZyBhYXJncyBhbmQgbWVyZ2luZyB0aGUgbWFwcGluZ3MKKyAgICAgICAgQ29tYmluZXMg
YnkgYXBwZW5kaW5nIGFyZ3MgYW5kIG1lcmdpbmcga3dhcmdzLgorCisgICAgICAgIDpwYXJhbSBN
YXJrIG90aGVyOiBUaGUgbWFyayB0byBjb21iaW5lIHdpdGguCisgICAgICAgIDpydHlwZTogTWFy
awogICAgICAgICAiIiIKICAgICAgICAgYXNzZXJ0IHNlbGYubmFtZSA9PSBvdGhlci5uYW1lCisK
KyAgICAgICAgIyBSZW1lbWJlciBzb3VyY2Ugb2YgaWRzIHdpdGggcGFyYW1ldHJpemUgTWFya3Mu
CisgICAgICAgIHBhcmFtX2lkc19mcm9tID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtNYXJrXQor
ICAgICAgICBpZiBzZWxmLm5hbWUgPT0gInBhcmFtZXRyaXplIjoKKyAgICAgICAgICAgIGlmIG90
aGVyLl9oYXNfcGFyYW1faWRzKCk6CisgICAgICAgICAgICAgICAgcGFyYW1faWRzX2Zyb20gPSBv
dGhlcgorICAgICAgICAgICAgZWxpZiBzZWxmLl9oYXNfcGFyYW1faWRzKCk6CisgICAgICAgICAg
ICAgICAgcGFyYW1faWRzX2Zyb20gPSBzZWxmCisKICAgICAgICAgcmV0dXJuIE1hcmsoCi0gICAg
ICAgICAgICBzZWxmLm5hbWUsIHNlbGYuYXJncyArIG90aGVyLmFyZ3MsIGRpY3Qoc2VsZi5rd2Fy
Z3MsICoqb3RoZXIua3dhcmdzKQorICAgICAgICAgICAgc2VsZi5uYW1lLAorICAgICAgICAgICAg
c2VsZi5hcmdzICsgb3RoZXIuYXJncywKKyAgICAgICAgICAgIGRpY3Qoc2VsZi5rd2FyZ3MsICoq
b3RoZXIua3dhcmdzKSwKKyAgICAgICAgICAgIHBhcmFtX2lkc19mcm9tPXBhcmFtX2lkc19mcm9t
LAogICAgICAgICApCiAKIAorIyBBIGdlbmVyaWMgcGFyYW1ldGVyIGRlc2lnbmF0aW5nIGFuIG9i
amVjdCB0byB3aGljaCBhIE1hcmsgbWF5CisjIGJlIGFwcGxpZWQgLS0gYSB0ZXN0IGZ1bmN0aW9u
IChjYWxsYWJsZSkgb3IgY2xhc3MuCisjIE5vdGU6IGEgbGFtYmRhIGlzIG5vdCBhbGxvd2VkLCBi
dXQgdGhpcyBjYW4ndCBiZSByZXByZXNlbnRlZC4KK19NYXJrYWJsZSA9IFR5cGVWYXIoIl9NYXJr
YWJsZSIsIGJvdW5kPVVuaW9uW0NhbGxhYmxlWy4uLiwgb2JqZWN0XSwgdHlwZV0pCisKKwogQGF0
dHIucwotY2xhc3MgTWFya0RlY29yYXRvcihvYmplY3QpOgotICAgICIiIiBBIGRlY29yYXRvciBm
b3IgdGVzdCBmdW5jdGlvbnMgYW5kIHRlc3QgY2xhc3Nlcy4gIFdoZW4gYXBwbGllZAotICAgIGl0
IHdpbGwgY3JlYXRlIDpjbGFzczpgTWFya0luZm9gIG9iamVjdHMgd2hpY2ggbWF5IGJlCi0gICAg
OnJlZjpgcmV0cmlldmVkIGJ5IGhvb2tzIGFzIGl0ZW0ga2V5d29yZHMgPGV4Y29udHJvbHNraXA+
YC4KLSAgICBNYXJrRGVjb3JhdG9yIGluc3RhbmNlcyBhcmUgb2Z0ZW4gY3JlYXRlZCBsaWtlIHRo
aXM6OgorY2xhc3MgTWFya0RlY29yYXRvcjoKKyAgICAiIiJBIGRlY29yYXRvciBmb3IgYXBwbHlp
bmcgYSBtYXJrIG9uIHRlc3QgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLgogCi0gICAgICAgIG1hcmsx
ID0gcHl0ZXN0Lm1hcmsuTkFNRSAgICAgICAgICAgICAgIyBzaW1wbGUgTWFya0RlY29yYXRvcgot
ICAgICAgICBtYXJrMiA9IHB5dGVzdC5tYXJrLk5BTUUobmFtZTE9dmFsdWUpICMgcGFyYW1ldHJp
emVkIE1hcmtEZWNvcmF0b3IKKyAgICBNYXJrRGVjb3JhdG9ycyBhcmUgY3JlYXRlZCB3aXRoIGBg
cHl0ZXN0Lm1hcmtgYDo6CisKKyAgICAgICAgbWFyazEgPSBweXRlc3QubWFyay5OQU1FICAgICAg
ICAgICAgICAjIFNpbXBsZSBNYXJrRGVjb3JhdG9yCisgICAgICAgIG1hcmsyID0gcHl0ZXN0Lm1h
cmsuTkFNRShuYW1lMT12YWx1ZSkgIyBQYXJhbWV0cml6ZWQgTWFya0RlY29yYXRvcgogCiAgICAg
YW5kIGNhbiB0aGVuIGJlIGFwcGxpZWQgYXMgZGVjb3JhdG9ycyB0byB0ZXN0IGZ1bmN0aW9uczo6
CiAKQEAgLTE1NCwyMjAgKzI2OCwyNzQgQEAgY2xhc3MgTWFya0RlY29yYXRvcihvYmplY3QpOgog
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgV2hl
biBhIE1hcmtEZWNvcmF0b3IgaW5zdGFuY2UgaXMgY2FsbGVkIGl0IGRvZXMgdGhlIGZvbGxvd2lu
ZzoKLSAgICAgIDEuIElmIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGNsYXNzIGFzIGl0cyBvbmx5IHBv
c2l0aW9uYWwgYXJndW1lbnQgYW5kIG5vCi0gICAgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJn
dW1lbnRzLCBpdCBhdHRhY2hlcyBpdHNlbGYgdG8gdGhlIGNsYXNzIHNvIGl0Ci0gICAgICAgICBn
ZXRzIGFwcGxpZWQgYXV0b21hdGljYWxseSB0byBhbGwgdGVzdCBjYXNlcyBmb3VuZCBpbiB0aGF0
IGNsYXNzLgotICAgICAgMi4gSWYgY2FsbGVkIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gYXMgaXRz
IG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQKLSAgICAgICAgIG5vIGFkZGl0aW9uYWwga2V5
d29yZCBhcmd1bWVudHMsIGl0IGF0dGFjaGVzIGEgTWFya0luZm8gb2JqZWN0IHRvIHRoZQotICAg
ICAgICAgZnVuY3Rpb24sIGNvbnRhaW5pbmcgYWxsIHRoZSBhcmd1bWVudHMgYWxyZWFkeSBzdG9y
ZWQgaW50ZXJuYWxseSBpbgotICAgICAgICAgdGhlIE1hcmtEZWNvcmF0b3IuCi0gICAgICAzLiBX
aGVuIGNhbGxlZCBpbiBhbnkgb3RoZXIgY2FzZSwgaXQgcGVyZm9ybXMgYSAnZmFrZSBjb25zdHJ1
Y3Rpb24nIGNhbGwsCi0gICAgICAgICBpLmUuIGl0IHJldHVybnMgYSBuZXcgTWFya0RlY29yYXRv
ciBpbnN0YW5jZSB3aXRoIHRoZSBvcmlnaW5hbAotICAgICAgICAgTWFya0RlY29yYXRvcidzIGNv
bnRlbnQgdXBkYXRlZCB3aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoaXMKLSAgICAgICAg
IGNhbGwuCi0KLSAgICBOb3RlOiBUaGUgcnVsZXMgYWJvdmUgcHJldmVudCBNYXJrRGVjb3JhdG9y
IG9iamVjdHMgZnJvbSBzdG9yaW5nIG9ubHkgYQotICAgIHNpbmdsZSBmdW5jdGlvbiBvciBjbGFz
cyByZWZlcmVuY2UgYXMgdGhlaXIgcG9zaXRpb25hbCBhcmd1bWVudCB3aXRoIG5vCi0gICAgYWRk
aXRpb25hbCBrZXl3b3JkIG9yIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorICAgIFdoZW4gYSBNYXJr
RGVjb3JhdG9yIGlzIGNhbGxlZCBpdCBkb2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAxLiBJZiBj
YWxsZWQgd2l0aCBhIHNpbmdsZSBjbGFzcyBhcyBpdHMgb25seSBwb3NpdGlvbmFsIGFyZ3VtZW50
IGFuZCBubworICAgICAgIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGl0IGF0dGFjaGVz
IHRoZSBtYXJrIHRvIHRoZSBjbGFzcyBzbyBpdAorICAgICAgIGdldHMgYXBwbGllZCBhdXRvbWF0
aWNhbGx5IHRvIGFsbCB0ZXN0IGNhc2VzIGZvdW5kIGluIHRoYXQgY2xhc3MuCisKKyAgICAyLiBJ
ZiBjYWxsZWQgd2l0aCBhIHNpbmdsZSBmdW5jdGlvbiBhcyBpdHMgb25seSBwb3NpdGlvbmFsIGFy
Z3VtZW50IGFuZAorICAgICAgIG5vIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGl0IGF0
dGFjaGVzIHRoZSBtYXJrIHRvIHRoZSBmdW5jdGlvbiwKKyAgICAgICBjb250YWluaW5nIGFsbCB0
aGUgYXJndW1lbnRzIGFscmVhZHkgc3RvcmVkIGludGVybmFsbHkgaW4gdGhlCisgICAgICAgTWFy
a0RlY29yYXRvci4KKworICAgIDMuIFdoZW4gY2FsbGVkIGluIGFueSBvdGhlciBjYXNlLCBpdCBy
ZXR1cm5zIGEgbmV3IE1hcmtEZWNvcmF0b3IgaW5zdGFuY2UKKyAgICAgICB3aXRoIHRoZSBvcmln
aW5hbCBNYXJrRGVjb3JhdG9yJ3MgY29udGVudCB1cGRhdGVkIHdpdGggdGhlIGFyZ3VtZW50cwor
ICAgICAgIHBhc3NlZCB0byB0aGlzIGNhbGwuCiAKKyAgICBOb3RlOiBUaGUgcnVsZXMgYWJvdmUg
cHJldmVudCBNYXJrRGVjb3JhdG9ycyBmcm9tIHN0b3Jpbmcgb25seSBhIHNpbmdsZQorICAgIGZ1
bmN0aW9uIG9yIGNsYXNzIHJlZmVyZW5jZSBhcyB0aGVpciBwb3NpdGlvbmFsIGFyZ3VtZW50IHdp
dGggbm8KKyAgICBhZGRpdGlvbmFsIGtleXdvcmQgb3IgcG9zaXRpb25hbCBhcmd1bWVudHMuIFlv
dSBjYW4gd29yayBhcm91bmQgdGhpcyBieQorICAgIHVzaW5nIGB3aXRoX2FyZ3MoKWAuCiAgICAg
IiIiCiAKLSAgICBtYXJrID0gYXR0ci5pYih2YWxpZGF0b3I9YXR0ci52YWxpZGF0b3JzLmluc3Rh
bmNlX29mKE1hcmspKQorICAgIG1hcmsgPSBhdHRyLmliKHR5cGU9TWFyaywgdmFsaWRhdG9yPWF0
dHIudmFsaWRhdG9ycy5pbnN0YW5jZV9vZihNYXJrKSkKIAotICAgIG5hbWUgPSBhbGlhcygibWFy
ay5uYW1lIikKLSAgICBhcmdzID0gYWxpYXMoIm1hcmsuYXJncyIpCi0gICAga3dhcmdzID0gYWxp
YXMoIm1hcmsua3dhcmdzIikKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKSAtPiBz
dHI6CisgICAgICAgICIiIkFsaWFzIGZvciBtYXJrLm5hbWUuIiIiCisgICAgICAgIHJldHVybiBz
ZWxmLm1hcmsubmFtZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIG1hcmtuYW1lKHNlbGYpOgot
ICAgICAgICByZXR1cm4gc2VsZi5uYW1lICAjIGZvciBiYWNrd2FyZC1jb21wYXQgKDIuNC4xIGhh
ZCB0aGlzIGF0dHIpCisgICAgZGVmIGFyZ3Moc2VsZikgLT4gVHVwbGVbQW55LCAuLi5dOgorICAg
ICAgICAiIiJBbGlhcyBmb3IgbWFyay5hcmdzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5tYXJr
LmFyZ3MKIAotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5tYXJrID09IG90aGVyLm1hcmsgaWYgaXNpbnN0YW5jZShvdGhlciwgTWFya0RlY29yYXRvcikg
ZWxzZSBGYWxzZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBrd2FyZ3Moc2VsZikgLT4gTWFwcGlu
Z1tzdHIsIEFueV06CisgICAgICAgICIiIkFsaWFzIGZvciBtYXJrLmt3YXJncy4iIiIKKyAgICAg
ICAgcmV0dXJuIHNlbGYubWFyay5rd2FyZ3MKIAotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuICI8TWFya0RlY29yYXRvciAlcj4iICUgKHNlbGYubWFyaywpCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIG1hcmtuYW1lKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuIHNl
bGYubmFtZSAgIyBmb3IgYmFja3dhcmQtY29tcGF0ICgyLjQuMSBoYWQgdGhpcyBhdHRyKQogCi0g
ICAgZGVmIHdpdGhfYXJncyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAiIiIgcmV0
dXJuIGEgTWFya0RlY29yYXRvciB3aXRoIGV4dHJhIGFyZ3VtZW50cyBhZGRlZAorICAgIGRlZiBf
X3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAiPE1hcmtEZWNvcmF0b3IgeyFy
fT4iLmZvcm1hdChzZWxmLm1hcmspCiAKLSAgICAgICAgdW5saWtlIGNhbGwgdGhpcyBjYW4gYmUg
dXNlZCBldmVuIGlmIHRoZSBzb2xlIGFyZ3VtZW50IGlzIGEgY2FsbGFibGUvY2xhc3MKKyAgICBk
ZWYgd2l0aF9hcmdzKHNlbGYsICphcmdzOiBvYmplY3QsICoqa3dhcmdzOiBvYmplY3QpIC0+ICJN
YXJrRGVjb3JhdG9yIjoKKyAgICAgICAgIiIiUmV0dXJuIGEgTWFya0RlY29yYXRvciB3aXRoIGV4
dHJhIGFyZ3VtZW50cyBhZGRlZC4KIAotICAgICAgICA6cmV0dXJuOiBNYXJrRGVjb3JhdG9yCi0g
ICAgICAgICIiIgorICAgICAgICBVbmxpa2UgY2FsbGluZyB0aGUgTWFya0RlY29yYXRvciwgd2l0
aF9hcmdzKCkgY2FuIGJlIHVzZWQgZXZlbgorICAgICAgICBpZiB0aGUgc29sZSBhcmd1bWVudCBp
cyBhIGNhbGxhYmxlL2NsYXNzLgogCisgICAgICAgIDpydHlwZTogTWFya0RlY29yYXRvcgorICAg
ICAgICAiIiIKICAgICAgICAgbWFyayA9IE1hcmsoc2VsZi5uYW1lLCBhcmdzLCBrd2FyZ3MpCiAg
ICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLm1hcmsuY29tYmluZWRfd2l0aChtYXJr
KSkKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAi
IiIgaWYgcGFzc2VkIGEgc2luZ2xlIGNhbGxhYmxlIGFyZ3VtZW50OiBkZWNvcmF0ZSBpdCB3aXRo
IG1hcmsgaW5mby4KLSAgICAgICAgICAgIG90aGVyd2lzZSBhZGQgKmFyZ3MvKiprd2FyZ3MgaW4t
cGxhY2UgdG8gbWFyayBpbmZvcm1hdGlvbi4gIiIiCisgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVz
ZSB0aGUgb3ZlcmxvYWRzIG92ZXJsYXAgd2l0aCBhbiBpbmNvbXBhdGlibGUKKyAgICAjIHJldHVy
biB0eXBlLiBOb3QgbXVjaCB3ZSBjYW4gZG8gYWJvdXQgdGhhdC4gVGhhbmtmdWxseSBteXB5IHBp
Y2tzCisgICAgIyB0aGUgZmlyc3QgbWF0Y2ggc28gaXQgd29ya3Mgb3V0IGV2ZW4gaWYgd2UgYnJl
YWsgdGhlIHJ1bGVzLgorICAgIEBvdmVybG9hZAorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhcmc6
IF9NYXJrYWJsZSkgLT4gX01hcmthYmxlOiAgIyB0eXBlOiBpZ25vcmVbbWlzY10KKyAgICAgICAg
cGFzcworCisgICAgQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICBkZWYgX19jYWxsX18oICAj
IG5vcWE6IEY4MTEKKyAgICAgICAgc2VsZiwgKmFyZ3M6IG9iamVjdCwgKiprd2FyZ3M6IG9iamVj
dAorICAgICkgLT4gIk1hcmtEZWNvcmF0b3IiOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX19j
YWxsX18oc2VsZiwgKmFyZ3M6IG9iamVjdCwgKiprd2FyZ3M6IG9iamVjdCk6ICAjIG5vcWE6IEY4
MTEKKyAgICAgICAgIiIiQ2FsbCB0aGUgTWFya0RlY29yYXRvci4iIiIKICAgICAgICAgaWYgYXJn
cyBhbmQgbm90IGt3YXJnczoKICAgICAgICAgICAgIGZ1bmMgPSBhcmdzWzBdCiAgICAgICAgICAg
ICBpc19jbGFzcyA9IGluc3BlY3QuaXNjbGFzcyhmdW5jKQogICAgICAgICAgICAgaWYgbGVuKGFy
Z3MpID09IDEgYW5kIChpc3Rlc3RmdW5jKGZ1bmMpIG9yIGlzX2NsYXNzKToKLSAgICAgICAgICAg
ICAgICBpZiBpc19jbGFzczoKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVfbWFyayhmdW5jLCBz
ZWxmLm1hcmspCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc3Rv
cmVfbGVnYWN5X21hcmtpbmZvKGZ1bmMsIHNlbGYubWFyaykKLSAgICAgICAgICAgICAgICAgICAg
c3RvcmVfbWFyayhmdW5jLCBzZWxmLm1hcmspCisgICAgICAgICAgICAgICAgc3RvcmVfbWFyayhm
dW5jLCBzZWxmLm1hcmspCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMKICAgICAgICAgcmV0
dXJuIHNlbGYud2l0aF9hcmdzKCphcmdzLCAqKmt3YXJncykKIAogCi1kZWYgZ2V0X3VucGFja2Vk
X21hcmtzKG9iaik6Ci0gICAgIiIiCi0gICAgb2J0YWluIHRoZSB1bnBhY2tlZCBtYXJrcyB0aGF0
IGFyZSBzdG9yZWQgb24gYW4gb2JqZWN0Ci0gICAgIiIiCitkZWYgZ2V0X3VucGFja2VkX21hcmtz
KG9iaikgLT4gTGlzdFtNYXJrXToKKyAgICAiIiJPYnRhaW4gdGhlIHVucGFja2VkIG1hcmtzIHRo
YXQgYXJlIHN0b3JlZCBvbiBhbiBvYmplY3QuIiIiCiAgICAgbWFya19saXN0ID0gZ2V0YXR0cihv
YmosICJweXRlc3RtYXJrIiwgW10pCi0KICAgICBpZiBub3QgaXNpbnN0YW5jZShtYXJrX2xpc3Qs
IGxpc3QpOgogICAgICAgICBtYXJrX2xpc3QgPSBbbWFya19saXN0XQotICAgIHJldHVybiBbZ2V0
YXR0cihtYXJrLCAibWFyayIsIG1hcmspIGZvciBtYXJrIGluIG1hcmtfbGlzdF0gICMgdW5wYWNr
IE1hcmtEZWNvcmF0b3IKKyAgICByZXR1cm4gbm9ybWFsaXplX21hcmtfbGlzdChtYXJrX2xpc3Qp
CiAKIAotZGVmIHN0b3JlX21hcmsob2JqLCBtYXJrKToKLSAgICAiIiJzdG9yZSBhIE1hcmsgb24g
YW4gb2JqZWN0Ci0gICAgdGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgTWFyayBkZWNsYXJh
dGlvbnMvZGVjb3JhdG9ycyBjb3JyZWN0bHkKLSAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0YW5j
ZShtYXJrLCBNYXJrKSwgbWFyawotICAgICMgYWx3YXlzIHJlYXNzaWduIG5hbWUgdG8gYXZvaWQg
dXBkYXRpbmcgcHl0ZXN0bWFyawotICAgICMgaW4gYSByZWZlcmVuY2UgdGhhdCB3YXMgb25seSBi
b3Jyb3dlZAotICAgIG9iai5weXRlc3RtYXJrID0gZ2V0X3VucGFja2VkX21hcmtzKG9iaikgKyBb
bWFya10KK2RlZiBub3JtYWxpemVfbWFya19saXN0KG1hcmtfbGlzdDogSXRlcmFibGVbVW5pb25b
TWFyaywgTWFya0RlY29yYXRvcl1dKSAtPiBMaXN0W01hcmtdOgorICAgICIiIk5vcm1hbGl6ZSBt
YXJrZXIgZGVjb3JhdGluZyBoZWxwZXJzIHRvIG1hcmsgb2JqZWN0cy4KIAotCi1kZWYgc3RvcmVf
bGVnYWN5X21hcmtpbmZvKGZ1bmMsIG1hcmspOgotICAgICIiImNyZWF0ZSB0aGUgbGVnYWN5IE1h
cmtJbmZvIG9iamVjdHMgYW5kIHB1dCB0aGVtIG9udG8gdGhlIGZ1bmN0aW9uCisgICAgOnR5cGUg
TGlzdFtVbmlvbltNYXJrLCBNYXJrZGVjb3JhdG9yXV0gbWFya19saXN0OgorICAgIDpydHlwZTog
TGlzdFtNYXJrXQogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKG1hcmssIE1hcmspOgot
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoImdvdCB7bWFyayFyfSBpbnN0ZWFkIG9mIGEgTWFyayIu
Zm9ybWF0KG1hcms9bWFyaykpCi0gICAgaG9sZGVyID0gZ2V0YXR0cihmdW5jLCBtYXJrLm5hbWUs
IE5vbmUpCi0gICAgaWYgaG9sZGVyIGlzIE5vbmU6Ci0gICAgICAgIGhvbGRlciA9IE1hcmtJbmZv
LmZvcl9tYXJrKG1hcmspCi0gICAgICAgIHNldGF0dHIoZnVuYywgbWFyay5uYW1lLCBob2xkZXIp
Ci0gICAgZWxzZToKLSAgICAgICAgaG9sZGVyLmFkZF9tYXJrKG1hcmspCisgICAgZXh0cmFjdGVk
ID0gWworICAgICAgICBnZXRhdHRyKG1hcmssICJtYXJrIiwgbWFyaykgZm9yIG1hcmsgaW4gbWFy
a19saXN0CisgICAgXSAgIyB1bnBhY2sgTWFya0RlY29yYXRvcgorICAgIGZvciBtYXJrIGluIGV4
dHJhY3RlZDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWFyaywgTWFyayk6CisgICAgICAg
ICAgICByYWlzZSBUeXBlRXJyb3IoImdvdCB7IXJ9IGluc3RlYWQgb2YgTWFyayIuZm9ybWF0KG1h
cmspKQorICAgIHJldHVybiBbeCBmb3IgeCBpbiBleHRyYWN0ZWQgaWYgaXNpbnN0YW5jZSh4LCBN
YXJrKV0KIAogCi1kZWYgdHJhbnNmZXJfbWFya2VycyhmdW5jb2JqLCBjbHMsIG1vZCk6Ci0gICAg
IiIiCi0gICAgdGhpcyBmdW5jdGlvbiB0cmFuc2ZlcnMgY2xhc3MgbGV2ZWwgbWFya2VycyBhbmQg
bW9kdWxlIGxldmVsIG1hcmtlcnMKLSAgICBpbnRvIGZ1bmN0aW9uIGxldmVsIG1hcmtpbmZvIG9i
amVjdHMKK2RlZiBzdG9yZV9tYXJrKG9iaiwgbWFyazogTWFyaykgLT4gTm9uZToKKyAgICAiIiJT
dG9yZSBhIE1hcmsgb24gYW4gb2JqZWN0LgogCi0gICAgdGhpcyBpcyB0aGUgbWFpbiByZWFzb24g
d2h5IG1hcmtzIGFyZSBzbyBicm9rZW4KLSAgICB0aGUgcmVzb2x1dGlvbiB3aWxsIGludm9sdmUg
cGhhc2luZyBvdXQgZnVuY3Rpb24gbGV2ZWwgTWFya0luZm8gb2JqZWN0cwotCi0gICAgIiIiCi0g
ICAgZm9yIG9iaiBpbiAoY2xzLCBtb2QpOgotICAgICAgICBmb3IgbWFyayBpbiBnZXRfdW5wYWNr
ZWRfbWFya3Mob2JqKToKLSAgICAgICAgICAgIGlmIG5vdCBfbWFya2VkKGZ1bmNvYmosIG1hcmsp
OgotICAgICAgICAgICAgICAgIHN0b3JlX2xlZ2FjeV9tYXJraW5mbyhmdW5jb2JqLCBtYXJrKQot
Ci0KLWRlZiBfbWFya2VkKGZ1bmMsIG1hcmspOgotICAgICIiIiBSZXR1cm5zIFRydWUgaWYgOmZ1
bmM6IGlzIGFscmVhZHkgbWFya2VkIHdpdGggOm1hcms6LCBGYWxzZSBvdGhlcndpc2UuCi0gICAg
VGhpcyBjYW4gaGFwcGVuIGlmIG1hcmtlciBpcyBhcHBsaWVkIHRvIGNsYXNzIGFuZCB0aGUgdGVz
dCBmaWxlIGlzCi0gICAgaW52b2tlZCBtb3JlIHRoYW4gb25jZS4KKyAgICBUaGlzIGlzIHVzZWQg
dG8gaW1wbGVtZW50IHRoZSBNYXJrIGRlY2xhcmF0aW9ucy9kZWNvcmF0b3JzIGNvcnJlY3RseS4K
ICAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGZ1bmNfbWFyayA9IGdldGF0dHIoZnVuYywgZ2V0
YXR0cihtYXJrLCAiY29tYmluZWQiLCBtYXJrKS5uYW1lKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVF
cnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIGFueShtYXJrID09IGluZm8u
Y29tYmluZWQgZm9yIGluZm8gaW4gZnVuY19tYXJrKQotCi0KLUBhdHRyLnMKLWNsYXNzIE1hcmtJ
bmZvKG9iamVjdCk6Ci0gICAgIiIiIE1hcmtpbmcgb2JqZWN0IGNyZWF0ZWQgYnkgOmNsYXNzOmBN
YXJrRGVjb3JhdG9yYCBpbnN0YW5jZXMuICIiIgotCi0gICAgX21hcmtzID0gYXR0ci5pYihjb252
ZXJ0PWxpc3QpCi0KLSAgICBAX21hcmtzLnZhbGlkYXRvcgotICAgIGRlZiB2YWxpZGF0ZV9tYXJr
cyhzZWxmLCBhdHRyaWJ1dGUsIHZhbHVlKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6Ci0g
ICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCBNYXJrKToKLSAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiTWFya0luZm8gZXhwZWN0
cyBNYXJrIGluc3RhbmNlcywgZ290IHshcn0gKHshcn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpdGVtLCB0eXBlKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICAgICApCi0KLSAgICBjb21iaW5lZCA9IGF0dHIuaWIoCi0gICAgICAgIHJlcHI9RmFs
c2UsCi0gICAgICAgIGRlZmF1bHQ9YXR0ci5GYWN0b3J5KAotICAgICAgICAgICAgbGFtYmRhIHNl
bGY6IHJlZHVjZShNYXJrLmNvbWJpbmVkX3dpdGgsIHNlbGYuX21hcmtzKSwgdGFrZXNfc2VsZj1U
cnVlCi0gICAgICAgICksCi0gICAgKQotCi0gICAgbmFtZSA9IGFsaWFzKCJjb21iaW5lZC5uYW1l
Iiwgd2FybmluZz1NQVJLX0lORk9fQVRUUklCVVRFKQotICAgIGFyZ3MgPSBhbGlhcygiY29tYmlu
ZWQuYXJncyIsIHdhcm5pbmc9TUFSS19JTkZPX0FUVFJJQlVURSkKLSAgICBrd2FyZ3MgPSBhbGlh
cygiY29tYmluZWQua3dhcmdzIiwgd2FybmluZz1NQVJLX0lORk9fQVRUUklCVVRFKQotCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIGZvcl9tYXJrKGNscywgbWFyayk6Ci0gICAgICAgIHJldHVy
biBjbHMoW21hcmtdKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4g
IjxNYXJrSW5mbyB7IXJ9PiIuZm9ybWF0KHNlbGYuY29tYmluZWQpCi0KLSAgICBkZWYgYWRkX21h
cmsoc2VsZiwgbWFyayk6Ci0gICAgICAgICIiIiBhZGQgYSBNYXJrSW5mbyB3aXRoIHRoZSBnaXZl
biBhcmdzIGFuZCBrd2FyZ3MuICIiIgotICAgICAgICBzZWxmLl9tYXJrcy5hcHBlbmQobWFyaykK
LSAgICAgICAgc2VsZi5jb21iaW5lZCA9IHNlbGYuY29tYmluZWQuY29tYmluZWRfd2l0aChtYXJr
KQotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAiIiIgeWllbGQgTWFya0luZm8g
b2JqZWN0cyBlYWNoIHJlbGF0aW5nIHRvIGEgbWFya2luZy1jYWxsLiAiIiIKLSAgICAgICAgcmV0
dXJuIG1hcChNYXJrSW5mby5mb3JfbWFyaywgc2VsZi5fbWFya3MpCisgICAgYXNzZXJ0IGlzaW5z
dGFuY2UobWFyaywgTWFyayksIG1hcmsKKyAgICAjIEFsd2F5cyByZWFzc2lnbiBuYW1lIHRvIGF2
b2lkIHVwZGF0aW5nIHB5dGVzdG1hcmsgaW4gYSByZWZlcmVuY2UgdGhhdAorICAgICMgd2FzIG9u
bHkgYm9ycm93ZWQuCisgICAgb2JqLnB5dGVzdG1hcmsgPSBnZXRfdW5wYWNrZWRfbWFya3Mob2Jq
KSArIFttYXJrXQogCiAKLWNsYXNzIE1hcmtHZW5lcmF0b3Iob2JqZWN0KToKLSAgICAiIiIgRmFj
dG9yeSBmb3IgOmNsYXNzOmBNYXJrRGVjb3JhdG9yYCBvYmplY3RzIC0gZXhwb3NlZCBhcwotICAg
IGEgYGBweXRlc3QubWFya2BgIHNpbmdsZXRvbiBpbnN0YW5jZS4gIEV4YW1wbGU6OgorIyBUeXBp
bmcgZm9yIGJ1aWx0aW4gcHl0ZXN0IG1hcmtzLiBUaGlzIGlzIGNoZWF0aW5nOyBpdCBnaXZlcyBi
dWlsdGluIG1hcmtzCisjIHNwZWNpYWwgcHJpdmlsZWdlLCBhbmQgYnJlYWtzIG1vZHVsYXJpdHku
IEJ1dCBwcmFjdGljYWxpdHkgYmVhdHMgcHVyaXR5Li4uCitpZiBUWVBFX0NIRUNLSU5HOgorICAg
IGZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgX1Njb3BlCisKKyAgICBjbGFzcyBfU2tpcE1h
cmtEZWNvcmF0b3IoTWFya0RlY29yYXRvcik6CisgICAgICAgIEBvdmVybG9hZCAgIyB0eXBlOiBp
Z25vcmVbb3ZlcnJpZGUsbWlzY10KKyAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGFyZzogX01h
cmthYmxlKSAtPiBfTWFya2FibGU6CisgICAgICAgICAgICAuLi4KKworICAgICAgICBAb3Zlcmxv
YWQgICMgbm9xYTogRjgxMQorICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVhc29uOiBzdHIg
PSAuLi4pIC0+ICJNYXJrRGVjb3JhdG9yIjogICMgbm9xYTogRjgxMQorICAgICAgICAgICAgLi4u
CisKKyAgICBjbGFzcyBfU2tpcGlmTWFya0RlY29yYXRvcihNYXJrRGVjb3JhdG9yKToKKyAgICAg
ICAgZGVmIF9fY2FsbF9fKCAgIyB0eXBlOiBpZ25vcmVbb3ZlcnJpZGVdCisgICAgICAgICAgICBz
ZWxmLAorICAgICAgICAgICAgY29uZGl0aW9uOiBVbmlvbltzdHIsIGJvb2xdID0gLi4uLAorICAg
ICAgICAgICAgKmNvbmRpdGlvbnM6IFVuaW9uW3N0ciwgYm9vbF0sCisgICAgICAgICAgICByZWFz
b246IHN0ciA9IC4uLgorICAgICAgICApIC0+IE1hcmtEZWNvcmF0b3I6CisgICAgICAgICAgICAu
Li4KKworICAgIGNsYXNzIF9YZmFpbE1hcmtEZWNvcmF0b3IoTWFya0RlY29yYXRvcik6CisgICAg
ICAgIEBvdmVybG9hZCAgIyB0eXBlOiBpZ25vcmVbb3ZlcnJpZGUsbWlzY10KKyAgICAgICAgZGVm
IF9fY2FsbF9fKHNlbGYsIGFyZzogX01hcmthYmxlKSAtPiBfTWFya2FibGU6CisgICAgICAgICAg
ICAuLi4KKworICAgICAgICBAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorICAgICAgICBkZWYgX19j
YWxsX18oICAjIG5vcWE6IEY4MTEKKyAgICAgICAgICAgIHNlbGYsCisgICAgICAgICAgICBjb25k
aXRpb246IFVuaW9uW3N0ciwgYm9vbF0gPSAuLi4sCisgICAgICAgICAgICAqY29uZGl0aW9uczog
VW5pb25bc3RyLCBib29sXSwKKyAgICAgICAgICAgIHJlYXNvbjogc3RyID0gLi4uLAorICAgICAg
ICAgICAgcnVuOiBib29sID0gLi4uLAorICAgICAgICAgICAgcmFpc2VzOiBVbmlvblsKKyAgICAg
ICAgICAgICAgICAiVHlwZVtCYXNlRXhjZXB0aW9uXSIsIFR1cGxlWyJUeXBlW0Jhc2VFeGNlcHRp
b25dIiwgLi4uXQorICAgICAgICAgICAgXSA9IC4uLiwKKyAgICAgICAgICAgIHN0cmljdDogYm9v
bCA9IC4uLgorICAgICAgICApIC0+IE1hcmtEZWNvcmF0b3I6CisgICAgICAgICAgICAuLi4KKwor
ICAgIGNsYXNzIF9QYXJhbWV0cml6ZU1hcmtEZWNvcmF0b3IoTWFya0RlY29yYXRvcik6CisgICAg
ICAgIGRlZiBfX2NhbGxfXyggICMgdHlwZTogaWdub3JlW292ZXJyaWRlXQorICAgICAgICAgICAg
c2VsZiwKKyAgICAgICAgICAgIGFyZ25hbWVzOiBVbmlvbltzdHIsIExpc3Rbc3RyXSwgVHVwbGVb
c3RyLCAuLi5dXSwKKyAgICAgICAgICAgIGFyZ3ZhbHVlczogSXRlcmFibGVbVW5pb25bUGFyYW1l
dGVyU2V0LCBTZXF1ZW5jZVtvYmplY3RdLCBvYmplY3RdXSwKKyAgICAgICAgICAgICosCisgICAg
ICAgICAgICBpbmRpcmVjdDogVW5pb25bYm9vbCwgU2VxdWVuY2Vbc3RyXV0gPSAuLi4sCisgICAg
ICAgICAgICBpZHM6IE9wdGlvbmFsWworICAgICAgICAgICAgICAgIFVuaW9uWworICAgICAgICAg
ICAgICAgICAgICBJdGVyYWJsZVtVbmlvbltOb25lLCBzdHIsIGZsb2F0LCBpbnQsIGJvb2xdXSwK
KyAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW0FueV0sIE9wdGlvbmFsW29iamVjdF1dLAor
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0gPSAuLi4sCisgICAgICAgICAgICBzY29w
ZTogT3B0aW9uYWxbX1Njb3BlXSA9IC4uLgorICAgICAgICApIC0+IE1hcmtEZWNvcmF0b3I6Cisg
ICAgICAgICAgICAuLi4KKworICAgIGNsYXNzIF9Vc2VmaXh0dXJlc01hcmtEZWNvcmF0b3IoTWFy
a0RlY29yYXRvcik6CisgICAgICAgIGRlZiBfX2NhbGxfXyggICMgdHlwZTogaWdub3JlW292ZXJy
aWRlXQorICAgICAgICAgICAgc2VsZiwgKmZpeHR1cmVzOiBzdHIKKyAgICAgICAgKSAtPiBNYXJr
RGVjb3JhdG9yOgorICAgICAgICAgICAgLi4uCisKKyAgICBjbGFzcyBfRmlsdGVyd2FybmluZ3NN
YXJrRGVjb3JhdG9yKE1hcmtEZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19jYWxsX18oICAjIHR5
cGU6IGlnbm9yZVtvdmVycmlkZV0KKyAgICAgICAgICAgIHNlbGYsICpmaWx0ZXJzOiBzdHIKKyAg
ICAgICAgKSAtPiBNYXJrRGVjb3JhdG9yOgorICAgICAgICAgICAgLi4uCisKKworQGZpbmFsCitj
bGFzcyBNYXJrR2VuZXJhdG9yOgorICAgICIiIkZhY3RvcnkgZm9yIDpjbGFzczpgTWFya0RlY29y
YXRvcmAgb2JqZWN0cyAtIGV4cG9zZWQgYXMKKyAgICBhIGBgcHl0ZXN0Lm1hcmtgYCBzaW5nbGV0
b24gaW5zdGFuY2UuCisKKyAgICBFeGFtcGxlOjoKIAogICAgICAgICAgaW1wb3J0IHB5dGVzdAor
CiAgICAgICAgICBAcHl0ZXN0Lm1hcmsuc2xvd3Rlc3QKICAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uKCk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICB3aWxsIHNldCBhICdzbG93dGVzdCcgOmNs
YXNzOmBNYXJrSW5mb2Agb2JqZWN0Ci0gICAgb24gdGhlIGBgdGVzdF9mdW5jdGlvbmBgIG9iamVj
dC4gIiIiCi0gICAgX2NvbmZpZyA9IE5vbmUKKyAgICBhcHBsaWVzIGEgJ3Nsb3d0ZXN0JyA6Y2xh
c3M6YE1hcmtgIG9uIGBgdGVzdF9mdW5jdGlvbmBgLgorICAgICIiIgorCisgICAgX2NvbmZpZyA9
IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbQ29uZmlnXQorICAgIF9tYXJrZXJzID0gc2V0KCkgICMg
dHlwZTogU2V0W3N0cl0KKworICAgICMgU2VlIFRZUEVfQ0hFQ0tJTkcgYWJvdmUuCisgICAgaWYg
VFlQRV9DSEVDS0lORzoKKyAgICAgICAgIyBUT0RPKHB5MzYpOiBDaGFuZ2UgdG8gYnVpbHRpbiBh
bm5vdGF0aW9uIHN5bnRheC4KKyAgICAgICAgc2tpcCA9IF9Ta2lwTWFya0RlY29yYXRvcihNYXJr
KCJza2lwIiwgKCksIHt9KSkKKyAgICAgICAgc2tpcGlmID0gX1NraXBpZk1hcmtEZWNvcmF0b3Io
TWFyaygic2tpcGlmIiwgKCksIHt9KSkKKyAgICAgICAgeGZhaWwgPSBfWGZhaWxNYXJrRGVjb3Jh
dG9yKE1hcmsoInhmYWlsIiwgKCksIHt9KSkKKyAgICAgICAgcGFyYW1ldHJpemUgPSBfUGFyYW1l
dHJpemVNYXJrRGVjb3JhdG9yKE1hcmsoInBhcmFtZXRyaXplIiwgKCksIHt9KSkKKyAgICAgICAg
dXNlZml4dHVyZXMgPSBfVXNlZml4dHVyZXNNYXJrRGVjb3JhdG9yKE1hcmsoInVzZWZpeHR1cmVz
IiwgKCksIHt9KSkKKyAgICAgICAgZmlsdGVyd2FybmluZ3MgPSBfRmlsdGVyd2FybmluZ3NNYXJr
RGVjb3JhdG9yKE1hcmsoImZpbHRlcndhcm5pbmdzIiwgKCksIHt9KSkKIAotICAgIGRlZiBfX2dl
dGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZTogc3Ry
KSAtPiBNYXJrRGVjb3JhdG9yOgogICAgICAgICBpZiBuYW1lWzBdID09ICJfIjoKICAgICAgICAg
ICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNYXJrZXIgbmFtZSBtdXN0IE5PVCBzdGFydCB3aXRo
IHVuZGVyc2NvcmUiKQorCiAgICAgICAgIGlmIHNlbGYuX2NvbmZpZyBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIHNlbGYuX2NoZWNrKG5hbWUpCi0gICAgICAgIHJldHVybiBNYXJrRGVjb3JhdG9y
KE1hcmsobmFtZSwgKCksIHt9KSkKKyAgICAgICAgICAgICMgV2Ugc3RvcmUgYSBzZXQgb2YgbWFy
a2VycyBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXNhdGlvbiAtIGlmIGEgbWFyaworICAgICAgICAg
ICAgIyBuYW1lIGlzIGluIHRoZSBzZXQgd2UgZGVmaW5pdGVseSBrbm93IGl0LCBidXQgYSBtYXJr
IG1heSBiZSBrbm93biBhbmQKKyAgICAgICAgICAgICMgbm90IGluIHRoZSBzZXQuICBXZSB0aGVy
ZWZvcmUgc3RhcnQgYnkgdXBkYXRpbmcgdGhlIHNldCEKKyAgICAgICAgICAgIGlmIG5hbWUgbm90
IGluIHNlbGYuX21hcmtlcnM6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29u
ZmlnLmdldGluaSgibWFya2VycyIpOgorICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgbGlu
ZXM6ICJza2lwaWYoY29uZGl0aW9uKTogc2tpcCB0aGUgZ2l2ZW4gdGVzdCBpZi4uLiIKKyAgICAg
ICAgICAgICAgICAgICAgIyBvciAiaHlwb3RoZXNpczogdGVzdHMgd2hpY2ggdXNlIEh5cG90aGVz
aXMiLCBzbyB0byBnZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgbWFya2VyIG5hbWUgd2Ug
c3BsaXQgb24gYm90aCBgOmAgYW5kIGAoYC4KKyAgICAgICAgICAgICAgICAgICAgbWFya2VyID0g
bGluZS5zcGxpdCgiOiIpWzBdLnNwbGl0KCIoIilbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9tYXJrZXJzLmFkZChtYXJrZXIpCisKKyAgICAgICAgICAgICMgSWYgdGhlIG5h
bWUgaXMgbm90IGluIHRoZSBzZXQgb2Yga25vd24gbWFya3MgYWZ0ZXIgdXBkYXRpbmcsCisgICAg
ICAgICAgICAjIHRoZW4gaXQgcmVhbGx5IGlzIHRpbWUgdG8gaXNzdWUgYSB3YXJuaW5nIG9yIGFu
IGVycm9yLgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5fbWFya2VyczoKKyAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9jb25maWcub3B0aW9uLnN0cmljdF9tYXJrZXJzOgorICAgICAg
ICAgICAgICAgICAgICBmYWlsKAorICAgICAgICAgICAgICAgICAgICAgICAgInshcn0gbm90IGZv
dW5kIGluIGBtYXJrZXJzYCBjb25maWd1cmF0aW9uIG9wdGlvbiIuZm9ybWF0KG5hbWUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
KQogCi0gICAgZGVmIF9jaGVjayhzZWxmLCBuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgaWYgbmFtZSBpbiBzZWxmLl9tYXJrZXJzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHNl
bGYuX21hcmtlcnMgPSB2YWx1ZXMgPSBzZXQoKQotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9j
b25maWcuZ2V0aW5pKCJtYXJrZXJzIik6Ci0gICAgICAgICAgICBtYXJrZXIgPSBsaW5lLnNwbGl0
KCI6IiwgMSlbMF0KLSAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlci5yc3RyaXAoKQotICAgICAg
ICAgICAgeCA9IG1hcmtlci5zcGxpdCgiKCIsIDEpWzBdCi0gICAgICAgICAgICB2YWx1ZXMuYWRk
KHgpCi0gICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX21hcmtlcnM6Ci0gICAgICAgICAgICBy
YWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgbm90IGEgcmVnaXN0ZXJlZCBtYXJrZXIiICUgKG5hbWUs
KSkKKyAgICAgICAgICAgICAgICAjIFJhaXNlIGEgc3BlY2lmaWMgZXJyb3IgZm9yIGNvbW1vbiBt
aXNzcGVsbGluZ3Mgb2YgInBhcmFtZXRyaXplIi4KKyAgICAgICAgICAgICAgICBpZiBuYW1lIGlu
IFsicGFyYW1ldGVyaXplIiwgInBhcmFtZXRyaXNlIiwgInBhcmFtZXRlcmlzZSJdOgorICAgICAg
ICAgICAgICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbCgiVW5rbm93biAne30nIG1hcmssIGRpZCB5b3UgbWVhbiAncGFyYW1ldHJpemUnPyIu
Zm9ybWF0KG5hbWUpKQorCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAg
ICAgICAgICAgICAgIlVua25vd24gcHl0ZXN0Lm1hcmsuJXMgLSBpcyB0aGlzIGEgdHlwbz8gIFlv
dSBjYW4gcmVnaXN0ZXIgIgorICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIG1hcmtzIHRvIGF2
b2lkIHRoaXMgd2FybmluZyAtIGZvciBkZXRhaWxzLCBzZWUgIgorICAgICAgICAgICAgICAgICAg
ICAiaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL21hcmsuaHRtbCIgJSBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICBQeXRlc3RVbmtub3duTWFya1dhcm5pbmcsCisgICAgICAgICAg
ICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgKQogCisgICAgICAgIHJldHVybiBNYXJrRGVj
b3JhdG9yKE1hcmsobmFtZSwgKCksIHt9KSkKIAotTUFSS19HRU4gPSBNYXJrR2VuZXJhdG9yKCkK
IAorTUFSS19HRU4gPSBNYXJrR2VuZXJhdG9yKCkKIAotY2xhc3MgTm9kZUtleXdvcmRzKE1hcHBp
bmdNaXhpbik6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSk6CisjIFRPRE8ocHkzNik6
IGluaGVyaXQgZnJvbSB0eXBpbmcuTXV0YWJsZU1hcHBpbmdbc3RyLCBBbnldLgorQGZpbmFsCitj
bGFzcyBOb2RlS2V5d29yZHMoY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nKTogICMgdHlw
ZTogaWdub3JlW3R5cGUtYXJnXQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlOiAiTm9kZSIp
IC0+IE5vbmU6CiAgICAgICAgIHNlbGYubm9kZSA9IG5vZGUKICAgICAgICAgc2VsZi5wYXJlbnQg
PSBub2RlLnBhcmVudAogICAgICAgICBzZWxmLl9tYXJrZXJzID0ge25vZGUubmFtZTogVHJ1ZX0K
IAotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgIGRlZiBfX2dldGl0ZW1fXyhz
ZWxmLCBrZXk6IHN0cikgLT4gQW55OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4g
c2VsZi5fbWFya2Vyc1trZXldCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTM3NSw1NCAr
NTQzLDI0IEBAIGNsYXNzIE5vZGVLZXl3b3JkcyhNYXBwaW5nTWl4aW4pOgogICAgICAgICAgICAg
ICAgIHJhaXNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXJlbnQua2V5d29yZHNba2V5XQog
Ci0gICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgIGRlZiBfX3NldGl0
ZW1fXyhzZWxmLCBrZXk6IHN0ciwgdmFsdWU6IEFueSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5f
bWFya2Vyc1trZXldID0gdmFsdWUKIAotICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgor
ICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXk6IHN0cikgLT4gTm9uZToKICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiY2Fubm90IGRlbGV0ZSBrZXkgaW4ga2V5d29yZHMgZGljdCIpCiAKLSAg
ICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9y
W3N0cl06CiAgICAgICAgIHNlZW4gPSBzZWxmLl9zZWVuKCkKICAgICAgICAgcmV0dXJuIGl0ZXIo
c2VlbikKIAotICAgIGRlZiBfc2VlbihzZWxmKToKKyAgICBkZWYgX3NlZW4oc2VsZikgLT4gU2V0
W3N0cl06CiAgICAgICAgIHNlZW4gPSBzZXQoc2VsZi5fbWFya2VycykKICAgICAgICAgaWYgc2Vs
Zi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWVuLnVwZGF0ZShzZWxmLnBhcmVu
dC5rZXl3b3JkcykKICAgICAgICAgcmV0dXJuIHNlZW4KIAotICAgIGRlZiBfX2xlbl9fKHNlbGYp
OgorICAgIGRlZiBfX2xlbl9fKHNlbGYpIC0+IGludDoKICAgICAgICAgcmV0dXJuIGxlbihzZWxm
Ll9zZWVuKCkpCiAKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPE5v
ZGVLZXl3b3JkcyBmb3Igbm9kZSAlcz4iICUgKHNlbGYubm9kZSwpCi0KLQotQGF0dHIucyhjbXA9
RmFsc2UsIGhhc2g9RmFsc2UpCi1jbGFzcyBOb2RlTWFya2VycyhvYmplY3QpOgotICAgICIiIgot
ICAgIGludGVybmFsIHN0cnVjdXRyZSBmb3Igc3RvcmluZyBtYXJrcyBiZWxvbmdvbmcgdG8gYSBu
b2RlCi0KLSAgICAuLndhcm5pbmc6OgotCi0gICAgICAgIHVuc3RhYmxlIGFwaQotCi0gICAgIiIi
Ci0gICAgb3duX21hcmtlcnMgPSBhdHRyLmliKGRlZmF1bHQ9YXR0ci5GYWN0b3J5KGxpc3QpKQot
Ci0gICAgZGVmIHVwZGF0ZShzZWxmLCBhZGRfbWFya2Vycyk6Ci0gICAgICAgICIiInVwZGF0ZSB0
aGUgb3duIG1hcmtlcnMKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYub3duX21hcmtlcnMuZXh0
ZW5kKGFkZF9tYXJrZXJzKQotCi0gICAgZGVmIGZpbmQoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIi
IgotICAgICAgICBmaW5kIG1hcmtlcnMgaW4gb3duIG5vZGVzIG9yIHBhcmVudCBub2RlcwotICAg
ICAgICBuZWVkcyBhIGJldHRlciBwbGFjZQotICAgICAgICAiIiIKLSAgICAgICAgZm9yIG1hcmsg
aW4gc2VsZi5vd25fbWFya2VyczoKLSAgICAgICAgICAgIGlmIG1hcmsubmFtZSA9PSBuYW1lOgot
ICAgICAgICAgICAgICAgIHlpZWxkIG1hcmsKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5vd25fbWFya2VycykKKyAgICBkZWYgX19yZXByX18oc2Vs
ZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIjxOb2RlS2V5d29yZHMgZm9yIG5vZGUge30+Ii5m
b3JtYXQoc2VsZi5ub2RlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFy
ay93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MTBjMDE4NjA0ZC4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9tYXJrL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9l
dmFsdWF0ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvbGVnYWN5LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9zdHJ1Y3R1cmVzLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9tb25rZXlwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L21vbmtleXBhdGNoLnB5CmluZGV4IDE2MDgwYjVkNWNiMi4uYmJkOTY3NzlkYTVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tb25rZXlwYXRjaC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9tb25rZXlwYXRjaC5weQpAQCAtMSw0MyArMSw1OCBAQAotIiIi
IG1vbmtleXBhdGNoaW5nIGFuZCBtb2NraW5nIGZ1bmN0aW9uYWxpdHkuICAiIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQorIiIiTW9ua2V5cGF0Y2hpbmcgYW5kIG1vY2tpbmcgZnVuY3Rpb25hbGl0eS4iIiIKIGltcG9y
dCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MK
IGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKLQotaW1wb3J0IHNpeAorZnJv
bSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0
eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJv
bSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20g
dHlwaW5nIGltcG9ydCBUeXBlVmFyCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0
IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5j
b21wYXQgaW1wb3J0IG92ZXJsb2FkCiBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IGZpeHR1
cmUKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCiAKLVJFX0lNUE9SVF9FUlJPUl9O
QU1FID0gcmUuY29tcGlsZSgiXk5vIG1vZHVsZSBuYW1lZCAoLiopJCIpCitSRV9JTVBPUlRfRVJS
T1JfTkFNRSA9IHJlLmNvbXBpbGUociJeTm8gbW9kdWxlIG5hbWVkICguKikkIikKKworCitLID0g
VHlwZVZhcigiSyIpCitWID0gVHlwZVZhcigiViIpCiAKIAogQGZpeHR1cmUKLWRlZiBtb25rZXlw
YXRjaCgpOgotICAgICIiIlRoZSByZXR1cm5lZCBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBwcm92
aWRlcyB0aGVzZQotICAgIGhlbHBlciBtZXRob2RzIHRvIG1vZGlmeSBvYmplY3RzLCBkaWN0aW9u
YXJpZXMgb3Igb3MuZW52aXJvbjo6CitkZWYgbW9ua2V5cGF0Y2goKSAtPiBHZW5lcmF0b3JbIk1v
bmtleVBhdGNoIiwgTm9uZSwgTm9uZV06CisgICAgIiIiQSBjb252ZW5pZW50IGZpeHR1cmUgZm9y
IG1vbmtleS1wYXRjaGluZy4KKworICAgIFRoZSBmaXh0dXJlIHByb3ZpZGVzIHRoZXNlIG1ldGhv
ZHMgdG8gbW9kaWZ5IG9iamVjdHMsIGRpY3Rpb25hcmllcyBvcgorICAgIG9zLmVudmlyb246Ogog
CiAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIob2JqLCBuYW1lLCB2YWx1ZSwgcmFpc2luZz1U
cnVlKQogICAgICAgICBtb25rZXlwYXRjaC5kZWxhdHRyKG9iaiwgbmFtZSwgcmFpc2luZz1UcnVl
KQogICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKG1hcHBpbmcsIG5hbWUsIHZhbHVlKQogICAg
ICAgICBtb25rZXlwYXRjaC5kZWxpdGVtKG9iaiwgbmFtZSwgcmFpc2luZz1UcnVlKQogICAgICAg
ICBtb25rZXlwYXRjaC5zZXRlbnYobmFtZSwgdmFsdWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgICAg
IG1vbmtleXBhdGNoLmRlbGVudihuYW1lLCB2YWx1ZSwgcmFpc2luZz1UcnVlKQorICAgICAgICBt
b25rZXlwYXRjaC5kZWxlbnYobmFtZSwgcmFpc2luZz1UcnVlKQogICAgICAgICBtb25rZXlwYXRj
aC5zeXNwYXRoX3ByZXBlbmQocGF0aCkKICAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIocGF0aCkK
IAotICAgIEFsbCBtb2RpZmljYXRpb25zIHdpbGwgYmUgdW5kb25lIGFmdGVyIHRoZSByZXF1ZXN0
aW5nCi0gICAgdGVzdCBmdW5jdGlvbiBvciBmaXh0dXJlIGhhcyBmaW5pc2hlZC4gVGhlIGBgcmFp
c2luZ2BgCi0gICAgcGFyYW1ldGVyIGRldGVybWluZXMgaWYgYSBLZXlFcnJvciBvciBBdHRyaWJ1
dGVFcnJvcgotICAgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBzZXQvZGVsZXRpb24gb3BlcmF0aW9u
IGhhcyBubyB0YXJnZXQuCisgICAgQWxsIG1vZGlmaWNhdGlvbnMgd2lsbCBiZSB1bmRvbmUgYWZ0
ZXIgdGhlIHJlcXVlc3RpbmcgdGVzdCBmdW5jdGlvbiBvcgorICAgIGZpeHR1cmUgaGFzIGZpbmlz
aGVkLiBUaGUgYGByYWlzaW5nYGAgcGFyYW1ldGVyIGRldGVybWluZXMgaWYgYSBLZXlFcnJvcgor
ICAgIG9yIEF0dHJpYnV0ZUVycm9yIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBzZXQvZGVsZXRpb24g
b3BlcmF0aW9uIGhhcyBubyB0YXJnZXQuCiAgICAgIiIiCiAgICAgbXBhdGNoID0gTW9ua2V5UGF0
Y2goKQogICAgIHlpZWxkIG1wYXRjaAogICAgIG1wYXRjaC51bmRvKCkKIAogCi1kZWYgcmVzb2x2
ZShuYW1lKToKLSAgICAjIHNpbXBsaWZpZWQgZnJvbSB6b3BlLmRvdHRlZG5hbWUKK2RlZiByZXNv
bHZlKG5hbWU6IHN0cikgLT4gb2JqZWN0OgorICAgICMgU2ltcGxpZmllZCBmcm9tIHpvcGUuZG90
dGVkbmFtZS4KICAgICBwYXJ0cyA9IG5hbWUuc3BsaXQoIi4iKQogCiAgICAgdXNlZCA9IHBhcnRz
LnBvcCgwKQpAQCAtNTAsMzQgKzY1LDM3IEBAIGRlZiByZXNvbHZlKG5hbWUpOgogICAgICAgICAg
ICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyB3
ZSB1c2UgZXhwbGljaXQgdW4tbmVzdGluZyBvZiB0aGUgaGFuZGxpbmcgYmxvY2sgaW4gb3JkZXIK
LSAgICAgICAgIyB0byBhdm9pZCBuZXN0ZWQgZXhjZXB0aW9ucyBvbiBweXRob24gMworICAgICAg
ICAjIFdlIHVzZSBleHBsaWNpdCB1bi1uZXN0aW5nIG9mIHRoZSBoYW5kbGluZyBibG9jayBpbiBv
cmRlcgorICAgICAgICAjIHRvIGF2b2lkIG5lc3RlZCBleGNlcHRpb25zLgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBfX2ltcG9ydF9fKHVzZWQpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJv
ciBhcyBleDoKLSAgICAgICAgICAgICMgc3RyIGlzIHVzZWQgZm9yIHB5MiB2cyBweTMKICAgICAg
ICAgICAgIGV4cGVjdGVkID0gc3RyKGV4KS5zcGxpdCgpWy0xXQogICAgICAgICAgICAgaWYgZXhw
ZWN0ZWQgPT0gdXNlZDoKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiaW1wb3J0IGVycm9yIGluICVzOiAl
cyIgJSAodXNlZCwgZXgpKQorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJpbXBv
cnQgZXJyb3IgaW4ge306IHt9Ii5mb3JtYXQodXNlZCwgZXgpKSBmcm9tIGV4CiAgICAgICAgIGZv
dW5kID0gYW5ub3RhdGVkX2dldGF0dHIoZm91bmQsIHBhcnQsIHVzZWQpCiAgICAgcmV0dXJuIGZv
dW5kCiAKIAotZGVmIGFubm90YXRlZF9nZXRhdHRyKG9iaiwgbmFtZSwgYW5uKToKK2RlZiBhbm5v
dGF0ZWRfZ2V0YXR0cihvYmo6IG9iamVjdCwgbmFtZTogc3RyLCBhbm46IHN0cikgLT4gb2JqZWN0
OgogICAgIHRyeToKICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIG5hbWUpCi0gICAgZXhjZXB0
IEF0dHJpYnV0ZUVycm9yOgorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgogICAgICAg
ICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKLSAgICAgICAgICAgICIlciBvYmplY3QgYXQgJXMgaGFz
IG5vIGF0dHJpYnV0ZSAlciIgJSAodHlwZShvYmopLl9fbmFtZV9fLCBhbm4sIG5hbWUpCi0gICAg
ICAgICkKKyAgICAgICAgICAgICJ7IXJ9IG9iamVjdCBhdCB7fSBoYXMgbm8gYXR0cmlidXRlIHsh
cn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICB0eXBlKG9iaikuX19uYW1lX18sIGFubiwgbmFt
ZQorICAgICAgICAgICAgKQorICAgICAgICApIGZyb20gZQogICAgIHJldHVybiBvYmoKIAogCi1k
ZWYgZGVyaXZlX2ltcG9ydHBhdGgoaW1wb3J0X3BhdGgsIHJhaXNpbmcpOgotICAgIGlmIG5vdCBp
c2luc3RhbmNlKGltcG9ydF9wYXRoLCBzaXguc3RyaW5nX3R5cGVzKSBvciAiLiIgbm90IGluIGlt
cG9ydF9wYXRoOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm11c3QgYmUgYWJzb2x1dGUgaW1w
b3J0IHBhdGggc3RyaW5nLCBub3QgJXIiICUgKGltcG9ydF9wYXRoLCkpCitkZWYgZGVyaXZlX2lt
cG9ydHBhdGgoaW1wb3J0X3BhdGg6IHN0ciwgcmFpc2luZzogYm9vbCkgLT4gVHVwbGVbc3RyLCBv
YmplY3RdOgorICAgIGlmIG5vdCBpc2luc3RhbmNlKGltcG9ydF9wYXRoLCBzdHIpIG9yICIuIiBu
b3QgaW4gaW1wb3J0X3BhdGg6ICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAgICAg
cmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgIm11c3QgYmUgYWJzb2x1dGUgaW1wb3J0IHBh
dGggc3RyaW5nLCBub3QgeyFyfSIuZm9ybWF0KGltcG9ydF9wYXRoKQorICAgICAgICApCiAgICAg
bW9kdWxlLCBhdHRyID0gaW1wb3J0X3BhdGgucnNwbGl0KCIuIiwgMSkKICAgICB0YXJnZXQgPSBy
ZXNvbHZlKG1vZHVsZSkKICAgICBpZiByYWlzaW5nOgpAQCAtODUsMzQgKzEwMywzOSBAQCBkZWYg
ZGVyaXZlX2ltcG9ydHBhdGgoaW1wb3J0X3BhdGgsIHJhaXNpbmcpOgogICAgIHJldHVybiBhdHRy
LCB0YXJnZXQKIAogCi1jbGFzcyBOb3RzZXQob2JqZWN0KToKLQotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKK2NsYXNzIE5vdHNldDoKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAg
ICAgICByZXR1cm4gIjxub3RzZXQ+IgogCiAKIG5vdHNldCA9IE5vdHNldCgpCiAKIAotY2xhc3Mg
TW9ua2V5UGF0Y2gob2JqZWN0KToKLSAgICAiIiIgT2JqZWN0IHJldHVybmVkIGJ5IHRoZSBgYG1v
bmtleXBhdGNoYGAgZml4dHVyZSBrZWVwaW5nIGEgcmVjb3JkIG9mIHNldGF0dHIvaXRlbS9lbnYv
c3lzcGF0aCBjaGFuZ2VzLgotICAgICIiIgorQGZpbmFsCitjbGFzcyBNb25rZXlQYXRjaDoKKyAg
ICAiIiJPYmplY3QgcmV0dXJuZWQgYnkgdGhlIGBgbW9ua2V5cGF0Y2hgYCBmaXh0dXJlIGtlZXBp
bmcgYSByZWNvcmQgb2YKKyAgICBzZXRhdHRyL2l0ZW0vZW52L3N5c3BhdGggY2hhbmdlcy4iIiIK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fc2V0YXR0ciA9IFtdCi0g
ICAgICAgIHNlbGYuX3NldGl0ZW0gPSBbXQotICAgICAgICBzZWxmLl9jd2QgPSBOb25lCi0gICAg
ICAgIHNlbGYuX3NhdmVzeXNwYXRoID0gTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBO
b25lOgorICAgICAgICBzZWxmLl9zZXRhdHRyID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtvYmpl
Y3QsIHN0ciwgb2JqZWN0XV0KKyAgICAgICAgc2VsZi5fc2V0aXRlbSA9ICgKKyAgICAgICAgICAg
IFtdCisgICAgICAgICkgICMgdHlwZTogTGlzdFtUdXBsZVtNdXRhYmxlTWFwcGluZ1tBbnksIEFu
eV0sIG9iamVjdCwgb2JqZWN0XV0KKyAgICAgICAgc2VsZi5fY3dkID0gTm9uZSAgIyB0eXBlOiBP
cHRpb25hbFtzdHJdCisgICAgICAgIHNlbGYuX3NhdmVzeXNwYXRoID0gTm9uZSAgIyB0eXBlOiBP
cHRpb25hbFtMaXN0W3N0cl1dCiAKICAgICBAY29udGV4dG1hbmFnZXIKLSAgICBkZWYgY29udGV4
dChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIENvbnRleHQgbWFuYWdlciB0aGF0IHJldHVy
bnMgYSBuZXcgOmNsYXNzOmBNb25rZXlQYXRjaGAgb2JqZWN0IHdoaWNoCi0gICAgICAgIHVuZG9l
cyBhbnkgcGF0Y2hpbmcgZG9uZSBpbnNpZGUgdGhlIGBgd2l0aGBgIGJsb2NrIHVwb24gZXhpdDoK
KyAgICBkZWYgY29udGV4dChzZWxmKSAtPiBHZW5lcmF0b3JbIk1vbmtleVBhdGNoIiwgTm9uZSwg
Tm9uZV06CisgICAgICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHJldHVybnMgYSBuZXcgOmNs
YXNzOmBNb25rZXlQYXRjaGAgb2JqZWN0CisgICAgICAgIHdoaWNoIHVuZG9lcyBhbnkgcGF0Y2hp
bmcgZG9uZSBpbnNpZGUgdGhlIGBgd2l0aGBgIGJsb2NrIHVwb24gZXhpdC4KKworICAgICAgICBF
eGFtcGxlOgogCiAgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICAgICAgICAg
aW1wb3J0IGZ1bmN0b29scworCisKICAgICAgICAgICAgIGRlZiB0ZXN0X3BhcnRpYWwobW9ua2V5
cGF0Y2gpOgogICAgICAgICAgICAgICAgIHdpdGggbW9ua2V5cGF0Y2guY29udGV4dCgpIGFzIG06
CiAgICAgICAgICAgICAgICAgICAgIG0uc2V0YXR0cihmdW5jdG9vbHMsICJwYXJ0aWFsIiwgMykK
QEAgLTEyNywyNSArMTUwLDQxIEBAIGNsYXNzIE1vbmtleVBhdGNoKG9iamVjdCk6CiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBtLnVuZG8oKQogCi0gICAgZGVmIHNldGF0dHIoc2VsZiwg
dGFyZ2V0LCBuYW1lLCB2YWx1ZT1ub3RzZXQsIHJhaXNpbmc9VHJ1ZSk6Ci0gICAgICAgICIiIiBT
ZXQgYXR0cmlidXRlIHZhbHVlIG9uIHRhcmdldCwgbWVtb3JpemluZyB0aGUgb2xkIHZhbHVlLgot
ICAgICAgICBCeSBkZWZhdWx0IHJhaXNlIEF0dHJpYnV0ZUVycm9yIGlmIHRoZSBhdHRyaWJ1dGUg
ZGlkIG5vdCBleGlzdC4KKyAgICBAb3ZlcmxvYWQKKyAgICBkZWYgc2V0YXR0cigKKyAgICAgICAg
c2VsZiwgdGFyZ2V0OiBzdHIsIG5hbWU6IG9iamVjdCwgdmFsdWU6IE5vdHNldCA9IC4uLiwgcmFp
c2luZzogYm9vbCA9IC4uLiwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIC4uLgorCisgICAgQG92
ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICBkZWYgc2V0YXR0ciggICMgbm9xYTogRjgxMQorICAg
ICAgICBzZWxmLCB0YXJnZXQ6IG9iamVjdCwgbmFtZTogc3RyLCB2YWx1ZTogb2JqZWN0LCByYWlz
aW5nOiBib29sID0gLi4uLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgLi4uCisKKyAgICBkZWYg
c2V0YXR0ciggICMgbm9xYTogRjgxMQorICAgICAgICBzZWxmLAorICAgICAgICB0YXJnZXQ6IFVu
aW9uW3N0ciwgb2JqZWN0XSwKKyAgICAgICAgbmFtZTogVW5pb25bb2JqZWN0LCBzdHJdLAorICAg
ICAgICB2YWx1ZTogb2JqZWN0ID0gbm90c2V0LAorICAgICAgICByYWlzaW5nOiBib29sID0gVHJ1
ZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIlNldCBhdHRyaWJ1dGUgdmFsdWUgb24gdGFy
Z2V0LCBtZW1vcml6aW5nIHRoZSBvbGQgdmFsdWUuCiAKICAgICAgICAgRm9yIGNvbnZlbmllbmNl
IHlvdSBjYW4gc3BlY2lmeSBhIHN0cmluZyBhcyBgYHRhcmdldGBgIHdoaWNoCiAgICAgICAgIHdp
bGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSBkb3R0ZWQgaW1wb3J0IHBhdGgsIHdpdGggdGhlIGxhc3Qg
cGFydAotICAgICAgICBiZWluZyB0aGUgYXR0cmlidXRlIG5hbWUuICBFeGFtcGxlOgorICAgICAg
ICBiZWluZyB0aGUgYXR0cmlidXRlIG5hbWUuIEZvciBleGFtcGxlLAogICAgICAgICBgYG1vbmtl
eXBhdGNoLnNldGF0dHIoIm9zLmdldGN3ZCIsIGxhbWJkYTogIi8iKWBgCiAgICAgICAgIHdvdWxk
IHNldCB0aGUgYGBnZXRjd2RgYCBmdW5jdGlvbiBvZiB0aGUgYGBvc2BgIG1vZHVsZS4KIAotICAg
ICAgICBUaGUgYGByYWlzaW5nYGAgdmFsdWUgZGV0ZXJtaW5lcyBpZiB0aGUgc2V0YXR0ciBzaG91
bGQgZmFpbAotICAgICAgICBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBhbHJlYWR5IHByZXNlbnQg
KGRlZmF1bHRzIHRvIFRydWUKLSAgICAgICAgd2hpY2ggbWVhbnMgaXQgd2lsbCByYWlzZSkuCisg
ICAgICAgIFJhaXNlcyBBdHRyaWJ1dGVFcnJvciBpZiB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4
aXN0LCB1bmxlc3MKKyAgICAgICAgYGByYWlzaW5nYGAgaXMgc2V0IHRvIEZhbHNlLgogICAgICAg
ICAiIiIKICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAgICAgIGltcG9ydCBp
bnNwZWN0CiAKLSAgICAgICAgaWYgdmFsdWUgaXMgbm90c2V0OgotICAgICAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UodGFyZ2V0LCBzaXguc3RyaW5nX3R5cGVzKToKKyAgICAgICAgaWYgaXNpbnN0
YW5jZSh2YWx1ZSwgTm90c2V0KToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhcmdl
dCwgc3RyKToKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAg
ICAgICAgICJ1c2Ugc2V0YXR0cih0YXJnZXQsIG5hbWUsIHZhbHVlKSBvciAiCiAgICAgICAgICAg
ICAgICAgICAgICJzZXRhdHRyKHRhcmdldCwgdmFsdWUpIHdpdGggdGFyZ2V0IGJlaW5nIGEgZG90
dGVkICIKQEAgLTE1MywxMCArMTkyLDE3IEBAIGNsYXNzIE1vbmtleVBhdGNoKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgdmFsdWUgPSBuYW1lCiAgICAgICAgICAgICBu
YW1lLCB0YXJnZXQgPSBkZXJpdmVfaW1wb3J0cGF0aCh0YXJnZXQsIHJhaXNpbmcpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgInVzZSBzZXRh
dHRyKHRhcmdldCwgbmFtZSwgdmFsdWUpIHdpdGggbmFtZSBiZWluZyBhIHN0cmluZyBvciAiCisg
ICAgICAgICAgICAgICAgICAgICJzZXRhdHRyKHRhcmdldCwgdmFsdWUpIHdpdGggdGFyZ2V0IGJl
aW5nIGEgZG90dGVkICIKKyAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzdHJpbmciCisgICAg
ICAgICAgICAgICAgKQogCiAgICAgICAgIG9sZHZhbCA9IGdldGF0dHIodGFyZ2V0LCBuYW1lLCBu
b3RzZXQpCiAgICAgICAgIGlmIHJhaXNpbmcgYW5kIG9sZHZhbCBpcyBub3RzZXQ6Ci0gICAgICAg
ICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAodGFy
Z2V0LCBuYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJ7IXJ9IGhhcyBu
byBhdHRyaWJ1dGUgeyFyfSIuZm9ybWF0KHRhcmdldCwgbmFtZSkpCiAKICAgICAgICAgIyBhdm9p
ZCBjbGFzcyBkZXNjcmlwdG9ycyBsaWtlIHN0YXRpY21ldGhvZC9jbGFzc21ldGhvZAogICAgICAg
ICBpZiBpbnNwZWN0LmlzY2xhc3ModGFyZ2V0KToKQEAgLTE2NCwyMCArMjEwLDI2IEBAIGNsYXNz
IE1vbmtleVBhdGNoKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3NldGF0dHIuYXBwZW5kKCh0YXJn
ZXQsIG5hbWUsIG9sZHZhbCkpCiAgICAgICAgIHNldGF0dHIodGFyZ2V0LCBuYW1lLCB2YWx1ZSkK
IAotICAgIGRlZiBkZWxhdHRyKHNlbGYsIHRhcmdldCwgbmFtZT1ub3RzZXQsIHJhaXNpbmc9VHJ1
ZSk6Ci0gICAgICAgICIiIiBEZWxldGUgYXR0cmlidXRlIGBgbmFtZWBgIGZyb20gYGB0YXJnZXRg
YCwgYnkgZGVmYXVsdCByYWlzZQotICAgICAgICBBdHRyaWJ1dGVFcnJvciBpdCB0aGUgYXR0cmli
dXRlIGRpZCBub3QgcHJldmlvdXNseSBleGlzdC4KKyAgICBkZWYgZGVsYXR0cigKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgdGFyZ2V0OiBVbmlvbltvYmplY3QsIHN0cl0sCisgICAgICAgIG5hbWU6
IFVuaW9uW3N0ciwgTm90c2V0XSA9IG5vdHNldCwKKyAgICAgICAgcmFpc2luZzogYm9vbCA9IFRy
dWUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJEZWxldGUgYXR0cmlidXRlIGBgbmFtZWBg
IGZyb20gYGB0YXJnZXRgYC4KIAogICAgICAgICBJZiBubyBgYG5hbWVgYCBpcyBzcGVjaWZpZWQg
YW5kIGBgdGFyZ2V0YGAgaXMgYSBzdHJpbmcKICAgICAgICAgaXQgd2lsbCBiZSBpbnRlcnByZXRl
ZCBhcyBhIGRvdHRlZCBpbXBvcnQgcGF0aCB3aXRoIHRoZQogICAgICAgICBsYXN0IHBhcnQgYmVp
bmcgdGhlIGF0dHJpYnV0ZSBuYW1lLgogCi0gICAgICAgIElmIGBgcmFpc2luZ2BgIGlzIHNldCB0
byBGYWxzZSwgbm8gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGlmIHRoZQotICAgICAgICBhdHRy
aWJ1dGUgaXMgbWlzc2luZy4KKyAgICAgICAgUmFpc2VzIEF0dHJpYnV0ZUVycm9yIGl0IHRoZSBh
dHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIHVubGVzcworICAgICAgICBgYHJhaXNpbmdgYCBpcyBz
ZXQgdG8gRmFsc2UuCiAgICAgICAgICIiIgogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKLSAgICAgICAgaWYgbmFtZSBpcyBub3RzZXQ6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZSh0YXJnZXQsIHNpeC5zdHJpbmdfdHlwZXMpOgorICAgICAgICBpbXBvcnQgaW5zcGVjdAor
CisgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgTm90c2V0KToKKyAgICAgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKHRhcmdldCwgc3RyKToKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoCiAgICAgICAgICAgICAgICAgICAgICJ1c2UgZGVsYXR0cih0YXJnZXQsIG5hbWUpIG9yICIK
ICAgICAgICAgICAgICAgICAgICAgImRlbGF0dHIodGFyZ2V0KSB3aXRoIHRhcmdldCBiZWluZyBh
IGRvdHRlZCAiCkBAIC0xODksMTkgKzI0MSwyMyBAQCBjbGFzcyBNb25rZXlQYXRjaChvYmplY3Qp
OgogICAgICAgICAgICAgaWYgcmFpc2luZzoKICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1
dGVFcnJvcihuYW1lKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc2V0YXR0ci5h
cHBlbmQoKHRhcmdldCwgbmFtZSwgZ2V0YXR0cih0YXJnZXQsIG5hbWUsIG5vdHNldCkpKQorICAg
ICAgICAgICAgb2xkdmFsID0gZ2V0YXR0cih0YXJnZXQsIG5hbWUsIG5vdHNldCkKKyAgICAgICAg
ICAgICMgQXZvaWQgY2xhc3MgZGVzY3JpcHRvcnMgbGlrZSBzdGF0aWNtZXRob2QvY2xhc3NtZXRo
b2QuCisgICAgICAgICAgICBpZiBpbnNwZWN0LmlzY2xhc3ModGFyZ2V0KToKKyAgICAgICAgICAg
ICAgICBvbGR2YWwgPSB0YXJnZXQuX19kaWN0X18uZ2V0KG5hbWUsIG5vdHNldCkKKyAgICAgICAg
ICAgIHNlbGYuX3NldGF0dHIuYXBwZW5kKCh0YXJnZXQsIG5hbWUsIG9sZHZhbCkpCiAgICAgICAg
ICAgICBkZWxhdHRyKHRhcmdldCwgbmFtZSkKIAotICAgIGRlZiBzZXRpdGVtKHNlbGYsIGRpYywg
bmFtZSwgdmFsdWUpOgotICAgICAgICAiIiIgU2V0IGRpY3Rpb25hcnkgZW50cnkgYGBuYW1lYGAg
dG8gdmFsdWUuICIiIgorICAgIGRlZiBzZXRpdGVtKHNlbGYsIGRpYzogTXV0YWJsZU1hcHBpbmdb
SywgVl0sIG5hbWU6IEssIHZhbHVlOiBWKSAtPiBOb25lOgorICAgICAgICAiIiJTZXQgZGljdGlv
bmFyeSBlbnRyeSBgYG5hbWVgYCB0byB2YWx1ZS4iIiIKICAgICAgICAgc2VsZi5fc2V0aXRlbS5h
cHBlbmQoKGRpYywgbmFtZSwgZGljLmdldChuYW1lLCBub3RzZXQpKSkKICAgICAgICAgZGljW25h
bWVdID0gdmFsdWUKIAotICAgIGRlZiBkZWxpdGVtKHNlbGYsIGRpYywgbmFtZSwgcmFpc2luZz1U
cnVlKToKLSAgICAgICAgIiIiIERlbGV0ZSBgYG5hbWVgYCBmcm9tIGRpY3QuIFJhaXNlIEtleUVy
cm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuCisgICAgZGVmIGRlbGl0ZW0oc2VsZiwgZGljOiBNdXRh
YmxlTWFwcGluZ1tLLCBWXSwgbmFtZTogSywgcmFpc2luZzogYm9vbCA9IFRydWUpIC0+IE5vbmU6
CisgICAgICAgICIiIkRlbGV0ZSBgYG5hbWVgYCBmcm9tIGRpY3QuCiAKLSAgICAgICAgSWYgYGBy
YWlzaW5nYGAgaXMgc2V0IHRvIEZhbHNlLCBubyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaWYg
dGhlCi0gICAgICAgIGtleSBpcyBtaXNzaW5nLgorICAgICAgICBSYWlzZXMgYGBLZXlFcnJvcmBg
IGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHVubGVzcyBgYHJhaXNpbmdgYCBpcyBzZXQgdG8KKyAgICAg
ICAgRmFsc2UuCiAgICAgICAgICIiIgogICAgICAgICBpZiBuYW1lIG5vdCBpbiBkaWM6CiAgICAg
ICAgICAgICBpZiByYWlzaW5nOgpAQCAtMjEwLDQ1ICsyNjYsNzkgQEAgY2xhc3MgTW9ua2V5UGF0
Y2gob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3NldGl0ZW0uYXBwZW5kKChkaWMsIG5hbWUs
IGRpYy5nZXQobmFtZSwgbm90c2V0KSkpCiAgICAgICAgICAgICBkZWwgZGljW25hbWVdCiAKLSAg
ICBkZWYgc2V0ZW52KHNlbGYsIG5hbWUsIHZhbHVlLCBwcmVwZW5kPU5vbmUpOgotICAgICAgICAi
IiIgU2V0IGVudmlyb25tZW50IHZhcmlhYmxlIGBgbmFtZWBgIHRvIGBgdmFsdWVgYC4gIElmIGBg
cHJlcGVuZGBgCi0gICAgICAgIGlzIGEgY2hhcmFjdGVyLCByZWFkIHRoZSBjdXJyZW50IGVudmly
b25tZW50IHZhcmlhYmxlIHZhbHVlCi0gICAgICAgIGFuZCBwcmVwZW5kIHRoZSBgYHZhbHVlYGAg
YWRqb2luZWQgd2l0aCB0aGUgYGBwcmVwZW5kYGAgY2hhcmFjdGVyLiIiIgotICAgICAgICB2YWx1
ZSA9IHN0cih2YWx1ZSkKKyAgICBkZWYgc2V0ZW52KHNlbGYsIG5hbWU6IHN0ciwgdmFsdWU6IHN0
ciwgcHJlcGVuZDogT3B0aW9uYWxbc3RyXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgICIiIlNl
dCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYG5hbWVgYCB0byBgYHZhbHVlYGAuCisKKyAgICAgICAg
SWYgYGBwcmVwZW5kYGAgaXMgYSBjaGFyYWN0ZXIsIHJlYWQgdGhlIGN1cnJlbnQgZW52aXJvbm1l
bnQgdmFyaWFibGUKKyAgICAgICAgdmFsdWUgYW5kIHByZXBlbmQgdGhlIGBgdmFsdWVgYCBhZGpv
aW5lZCB3aXRoIHRoZSBgYHByZXBlbmRgYAorICAgICAgICBjaGFyYWN0ZXIuCisgICAgICAgICIi
IgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgIHdh
cm5pbmdzLndhcm4oICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAgICAgICAgICAg
ICBweXRlc3QuUHl0ZXN0V2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mIGVu
dmlyb25tZW50IHZhcmlhYmxlIHtuYW1lfSB0eXBlIHNob3VsZCBiZSBzdHIsIGJ1dCBnb3QgIgor
ICAgICAgICAgICAgICAgICAgICAie3ZhbHVlIXJ9ICh0eXBlOiB7dHlwZX0pOyBjb252ZXJ0ZWQg
dG8gc3RyIGltcGxpY2l0bHkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9
bmFtZSwgdmFsdWU9dmFsdWUsIHR5cGU9dHlwZSh2YWx1ZSkuX19uYW1lX18KKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgc3RhY2tsZXZl
bD0yLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgdmFsdWUgPSBzdHIodmFsdWUpCiAgICAg
ICAgIGlmIHByZXBlbmQgYW5kIG5hbWUgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUgKyBwcmVwZW5kICsgb3MuZW52aXJvbltuYW1lXQogICAgICAgICBzZWxmLnNldGl0
ZW0ob3MuZW52aXJvbiwgbmFtZSwgdmFsdWUpCiAKLSAgICBkZWYgZGVsZW52KHNlbGYsIG5hbWUs
IHJhaXNpbmc9VHJ1ZSk6Ci0gICAgICAgICIiIiBEZWxldGUgYGBuYW1lYGAgZnJvbSB0aGUgZW52
aXJvbm1lbnQuIFJhaXNlIEtleUVycm9yIGl0IGRvZXMgbm90Ci0gICAgICAgIGV4aXN0LgorICAg
IGRlZiBkZWxlbnYoc2VsZiwgbmFtZTogc3RyLCByYWlzaW5nOiBib29sID0gVHJ1ZSkgLT4gTm9u
ZToKKyAgICAgICAgIiIiRGVsZXRlIGBgbmFtZWBgIGZyb20gdGhlIGVudmlyb25tZW50LgogCi0g
ICAgICAgIElmIGBgcmFpc2luZ2BgIGlzIHNldCB0byBGYWxzZSwgbm8gZXhjZXB0aW9uIHdpbGwg
YmUgcmFpc2VkIGlmIHRoZQotICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBtaXNzaW5n
LgorICAgICAgICBSYWlzZXMgYGBLZXlFcnJvcmBgIGlmIGl0IGRvZXMgbm90IGV4aXN0LCB1bmxl
c3MgYGByYWlzaW5nYGAgaXMgc2V0IHRvCisgICAgICAgIEZhbHNlLgogICAgICAgICAiIiIKLSAg
ICAgICAgc2VsZi5kZWxpdGVtKG9zLmVudmlyb24sIG5hbWUsIHJhaXNpbmc9cmFpc2luZykKKyAg
ICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24gICMgdHlwZTogTXV0YWJsZU1hcHBpbmdbc3RyLCBz
dHJdCisgICAgICAgIHNlbGYuZGVsaXRlbShlbnZpcm9uLCBuYW1lLCByYWlzaW5nPXJhaXNpbmcp
CisKKyAgICBkZWYgc3lzcGF0aF9wcmVwZW5kKHNlbGYsIHBhdGgpIC0+IE5vbmU6CisgICAgICAg
ICIiIlByZXBlbmQgYGBwYXRoYGAgdG8gYGBzeXMucGF0aGBgIGxpc3Qgb2YgaW1wb3J0IGxvY2F0
aW9ucy4iIiIKKyAgICAgICAgZnJvbSBwa2dfcmVzb3VyY2VzIGltcG9ydCBmaXh1cF9uYW1lc3Bh
Y2VfcGFja2FnZXMKIAotICAgIGRlZiBzeXNwYXRoX3ByZXBlbmQoc2VsZiwgcGF0aCk6Ci0gICAg
ICAgICIiIiBQcmVwZW5kIGBgcGF0aGBgIHRvIGBgc3lzLnBhdGhgYCBsaXN0IG9mIGltcG9ydCBs
b2NhdGlvbnMuICIiIgogICAgICAgICBpZiBzZWxmLl9zYXZlc3lzcGF0aCBpcyBOb25lOgogICAg
ICAgICAgICAgc2VsZi5fc2F2ZXN5c3BhdGggPSBzeXMucGF0aFs6XQogICAgICAgICBzeXMucGF0
aC5pbnNlcnQoMCwgc3RyKHBhdGgpKQogCi0gICAgZGVmIGNoZGlyKHNlbGYsIHBhdGgpOgotICAg
ICAgICAiIiIgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVj
aWZpZWQgcGF0aC4KKyAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHlwYS9zZXR1cHRvb2xz
L2Jsb2IvZDhiOTAxYmMvZG9jcy9wa2dfcmVzb3VyY2VzLnR4dCNMMTYyLUwxNzEKKyAgICAgICAg
Zml4dXBfbmFtZXNwYWNlX3BhY2thZ2VzKHN0cihwYXRoKSkKKworICAgICAgICAjIEEgY2FsbCB0
byBzeXNwYXRoaW5zZXJ0KCkgdXN1YWxseSBtZWFucyB0aGF0IHRoZSBjYWxsZXIgd2FudHMgdG8K
KyAgICAgICAgIyBpbXBvcnQgc29tZSBkeW5hbWljYWxseSBjcmVhdGVkIGZpbGVzLCB0aHVzIHdp
dGggcHl0aG9uMyB3ZQorICAgICAgICAjIGludmFsaWRhdGUgaXRzIGltcG9ydCBjYWNoZXMuCisg
ICAgICAgICMgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB3aGVuIGFueSBuYW1lc3BhY2Ug
cGFja2FnZSBpcyBpbiB1c2UsCisgICAgICAgICMgc2luY2UgdGhlbiB0aGUgbXRpbWUgYmFzZWQg
RmlsZUZpbmRlciBjYWNoZSAodGhhdCBnZXRzIGNyZWF0ZWQgaW4KKyAgICAgICAgIyB0aGlzIGNh
c2UgYWxyZWFkeSkgZ2V0cyBub3QgaW52YWxpZGF0ZWQgd2hlbiB3cml0aW5nIHRoZSBuZXcgZmls
ZXMKKyAgICAgICAgIyBxdWlja2x5IGFmdGVyd2FyZHMuCisgICAgICAgIGZyb20gaW1wb3J0bGli
IGltcG9ydCBpbnZhbGlkYXRlX2NhY2hlcworCisgICAgICAgIGludmFsaWRhdGVfY2FjaGVzKCkK
KworICAgIGRlZiBjaGRpcihzZWxmLCBwYXRoKSAtPiBOb25lOgorICAgICAgICAiIiJDaGFuZ2Ug
dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHNwZWNpZmllZCBwYXRoLgorCiAg
ICAgICAgIFBhdGggY2FuIGJlIGEgc3RyaW5nIG9yIGEgcHkucGF0aC5sb2NhbCBvYmplY3QuCiAg
ICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLl9jd2QgaXMgTm9uZToKICAgICAgICAgICAgIHNl
bGYuX2N3ZCA9IG9zLmdldGN3ZCgpCiAgICAgICAgIGlmIGhhc2F0dHIocGF0aCwgImNoZGlyIik6
CiAgICAgICAgICAgICBwYXRoLmNoZGlyKCkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhdGgs
IFBhdGgpOgorICAgICAgICAgICAgIyBNb2Rlcm4gcHl0aG9uIHVzZXMgdGhlIGZzcGF0aCBwcm90
b2NvbCBoZXJlIExFR0FDWQorICAgICAgICAgICAgb3MuY2hkaXIoc3RyKHBhdGgpKQogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgb3MuY2hkaXIocGF0aCkKIAotICAgIGRlZiB1bmRvKHNlbGYp
OgotICAgICAgICAiIiIgVW5kbyBwcmV2aW91cyBjaGFuZ2VzLiAgVGhpcyBjYWxsIGNvbnN1bWVz
IHRoZQotICAgICAgICB1bmRvIHN0YWNrLiBDYWxsaW5nIGl0IGEgc2Vjb25kIHRpbWUgaGFzIG5v
IGVmZmVjdCB1bmxlc3MKLSAgICAgICAgeW91IGRvIG1vcmUgbW9ua2V5cGF0Y2hpbmcgYWZ0ZXIg
dGhlIHVuZG8gY2FsbC4KKyAgICBkZWYgdW5kbyhzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJV
bmRvIHByZXZpb3VzIGNoYW5nZXMuCisKKyAgICAgICAgVGhpcyBjYWxsIGNvbnN1bWVzIHRoZSB1
bmRvIHN0YWNrLiBDYWxsaW5nIGl0IGEgc2Vjb25kIHRpbWUgaGFzIG5vCisgICAgICAgIGVmZmVj
dCB1bmxlc3MgeW91IGRvIG1vcmUgbW9ua2V5cGF0Y2hpbmcgYWZ0ZXIgdGhlIHVuZG8gY2FsbC4K
IAogICAgICAgICBUaGVyZSBpcyBnZW5lcmFsbHkgbm8gbmVlZCB0byBjYWxsIGB1bmRvKClgLCBz
aW5jZSBpdCBpcwogICAgICAgICBjYWxsZWQgYXV0b21hdGljYWxseSBkdXJpbmcgdGVhci1kb3du
LgpAQCAtMjY1LDE0ICszNTUsMTQgQEAgY2xhc3MgTW9ua2V5UGF0Y2gob2JqZWN0KToKICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVsYXR0cihvYmosIG5hbWUpCiAgICAgICAg
IHNlbGYuX3NldGF0dHJbOl0gPSBbXQotICAgICAgICBmb3IgZGljdGlvbmFyeSwgbmFtZSwgdmFs
dWUgaW4gcmV2ZXJzZWQoc2VsZi5fc2V0aXRlbSk6CisgICAgICAgIGZvciBkaWN0aW9uYXJ5LCBr
ZXksIHZhbHVlIGluIHJldmVyc2VkKHNlbGYuX3NldGl0ZW0pOgogICAgICAgICAgICAgaWYgdmFs
dWUgaXMgbm90c2V0OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAg
ZGVsIGRpY3Rpb25hcnlbbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgZGVsIGRpY3Rpb25hcnlb
a2V5XQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAg
ICAgcGFzcyAgIyB3YXMgYWxyZWFkeSBkZWxldGVkLCBzbyB3ZSBoYXZlIHRoZSBkZXNpcmVkIHN0
YXRlCisgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgV2FzIGFscmVhZHkgZGVsZXRlZCwgc28g
d2UgaGF2ZSB0aGUgZGVzaXJlZCBzdGF0ZS4KICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgZGljdGlvbmFyeVtuYW1lXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgZGljdGlvbmFy
eVtrZXldID0gdmFsdWUKICAgICAgICAgc2VsZi5fc2V0aXRlbVs6XSA9IFtdCiAgICAgICAgIGlm
IHNlbGYuX3NhdmVzeXNwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3lzLnBhdGhbOl0g
PSBzZWxmLl9zYXZlc3lzcGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
bm9kZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ub2Rlcy5weQppbmRleCBlZjc0YzUz
ZWJhNGUuLjM2NjVkOGQ1ZWY0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
bm9kZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvbm9kZXMucHkKQEAgLTEsMzI1
ICsxLDQ5MCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlz
aW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IG9zCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gZnVu
Y3Rvb2xzIGltcG9ydCBscnVfY2FjaGUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlw
aW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBp
bXBvcnQgU2V0Citmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBU
eXBlVmFyCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAotaW1wb3J0IHNpeAogaW1wb3J0IHB5
Ci1pbXBvcnQgYXR0cgogCi1pbXBvcnQgX3B5dGVzdAogaW1wb3J0IF9weXRlc3QuX2NvZGUKK2Zy
b20gX3B5dGVzdC5fY29kZSBpbXBvcnQgZ2V0ZnNsaW5lbm8KK2Zyb20gX3B5dGVzdC5fY29kZS5j
b2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQg
VGVybWluYWxSZXByCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBjYWNoZWRfcHJvcGVydHkK
K2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IG92ZXJsb2FkCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcK
K2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZ0ZXN0SW1wb3J0RmFpbHVyZQorZnJvbSBf
cHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IEZTQ09MTEVDVE9SX0dFVEhPT0tQUk9YWV9JU0lOSVRQ
QVRICitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZpeHR1cmVEZWYKK2Zyb20gX3B5dGVz
dC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZUxvb2t1cEVycm9yCitmcm9tIF9weXRlc3QubWFyay5z
dHJ1Y3R1cmVzIGltcG9ydCBNYXJrCitmcm9tIF9weXRlc3QubWFyay5zdHJ1Y3R1cmVzIGltcG9y
dCBNYXJrRGVjb3JhdG9yCitmcm9tIF9weXRlc3QubWFyay5zdHJ1Y3R1cmVzIGltcG9ydCBOb2Rl
S2V5d29yZHMKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbAorZnJvbSBfcHl0ZXN0
LnBhdGhsaWIgaW1wb3J0IGFic29sdXRlcGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0
IFBhdGgKK2Zyb20gX3B5dGVzdC5zdG9yZSBpbXBvcnQgU3RvcmUKKworaWYgVFlQRV9DSEVDS0lO
RzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQorCisgICAgIyBJbXBvcnRlZCBoZXJlIGR1
ZSB0byBjaXJjdWxhciBpbXBvcnQuCisgICAgZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Np
b24KKyAgICBmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0V2FybmluZwor
ICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBfVHJhY2ViYWNrU3R5bGUKIAotZnJv
bSBfcHl0ZXN0Lm1hcmsuc3RydWN0dXJlcyBpbXBvcnQgTm9kZUtleXdvcmRzLCBNYXJrSW5mbwog
CiBTRVAgPSAiLyIKIAogdHJhY2ViYWNrY3V0ZGlyID0gcHkucGF0aC5sb2NhbChfcHl0ZXN0Ll9f
ZmlsZV9fKS5kaXJwYXRoKCkKIAogCi1kZWYgX3NwbGl0bm9kZShub2RlaWQpOgorQGxydV9jYWNo
ZShtYXhzaXplPU5vbmUpCitkZWYgX3NwbGl0bm9kZShub2RlaWQ6IHN0cikgLT4gVHVwbGVbc3Ry
LCAuLi5dOgogICAgICIiIlNwbGl0IGEgbm9kZWlkIGludG8gY29uc3RpdHVlbnQgJ3BhcnRzJy4K
IAogICAgIE5vZGUgSURzIGFyZSBzdHJpbmdzLCBhbmQgY2FuIGJlIHRoaW5ncyBsaWtlOgogICAg
ICAgICAnJwogICAgICAgICAndGVzdGluZy9jb2RlJwogICAgICAgICAndGVzdGluZy9jb2RlL3Rl
c3RfZXhjaW5mby5weScKLSAgICAgICAgJ3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2luZm8ucHk6OlRl
c3RGb3JtYXR0ZWRFeGNpbmZvOjooKScKKyAgICAgICAgJ3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2lu
Zm8ucHk6OlRlc3RGb3JtYXR0ZWRFeGNpbmZvJwogCiAgICAgUmV0dXJuIHZhbHVlcyBhcmUgbGlz
dHMgZS5nLgogICAgICAgICBbXQogICAgICAgICBbJ3Rlc3RpbmcnLCAnY29kZSddCiAgICAgICAg
IFsndGVzdGluZycsICdjb2RlJywgJ3Rlc3RfZXhjaW5mby5weSddCi0gICAgICAgIFsndGVzdGlu
ZycsICdjb2RlJywgJ3Rlc3RfZXhjaW5mby5weScsICdUZXN0Rm9ybWF0dGVkRXhjaW5mbycsICco
KSddCisgICAgICAgIFsndGVzdGluZycsICdjb2RlJywgJ3Rlc3RfZXhjaW5mby5weScsICdUZXN0
Rm9ybWF0dGVkRXhjaW5mbyddCiAgICAgIiIiCiAgICAgaWYgbm9kZWlkID09ICIiOgotICAgICAg
ICAjIElmIHRoZXJlIGlzIG5vIHJvb3Qgbm9kZSBhdCBhbGwsIHJldHVybiBhbiBlbXB0eSBsaXN0
IHNvIHRoZSBjYWxsZXIncyBsb2dpYyBjYW4gcmVtYWluIHNhbmUKLSAgICAgICAgcmV0dXJuIFtd
CisgICAgICAgICMgSWYgdGhlcmUgaXMgbm8gcm9vdCBub2RlIGF0IGFsbCwgcmV0dXJuIGFuIGVt
cHR5IGxpc3Qgc28gdGhlIGNhbGxlcidzCisgICAgICAgICMgbG9naWMgY2FuIHJlbWFpbiBzYW5l
LgorICAgICAgICByZXR1cm4gKCkKICAgICBwYXJ0cyA9IG5vZGVpZC5zcGxpdChTRVApCi0gICAg
IyBSZXBsYWNlIHNpbmdsZSBsYXN0IGVsZW1lbnQgJ3Rlc3RfZm9vLnB5OjpCYXI6OigpJyB3aXRo
IG11bHRpcGxlIGVsZW1lbnRzICd0ZXN0X2Zvby5weScsICdCYXInLCAnKCknCisgICAgIyBSZXBs
YWNlIHNpbmdsZSBsYXN0IGVsZW1lbnQgJ3Rlc3RfZm9vLnB5OjpCYXInIHdpdGggbXVsdGlwbGUg
ZWxlbWVudHMKKyAgICAjICd0ZXN0X2Zvby5weScsICdCYXInLgogICAgIHBhcnRzWy0xOl0gPSBw
YXJ0c1stMV0uc3BsaXQoIjo6IikKLSAgICByZXR1cm4gcGFydHMKKyAgICAjIENvbnZlcnQgcGFy
dHMgaW50byBhIHR1cGxlIHRvIGF2b2lkIHBvc3NpYmxlIGVycm9ycyB3aXRoIGNhY2hpbmcgb2Yg
YQorICAgICMgbXV0YWJsZSB0eXBlLgorICAgIHJldHVybiB0dXBsZShwYXJ0cykKIAogCi1kZWYg
aXNjaGlsZG5vZGUoYmFzZWlkLCBub2RlaWQpOgorZGVmIGlzY2hpbGRub2RlKGJhc2VpZDogc3Ry
LCBub2RlaWQ6IHN0cikgLT4gYm9vbDoKICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgbm9kZWlk
IGlzIGEgY2hpbGQgbm9kZSBvZiB0aGUgYmFzZWlkLgogCi0gICAgRS5nLiAnZm9vL2Jhcjo6QmF6
OjooKScgaXMgYSBjaGlsZCBvZiAnZm9vJywgJ2Zvby9iYXInIGFuZCAnZm9vL2Jhcjo6QmF6Jywg
YnV0IG5vdCBvZiAnZm9vL2Jsb3JwJworICAgIEUuZy4gJ2Zvby9iYXI6OkJheicgaXMgYSBjaGls
ZCBvZiAnZm9vJywgJ2Zvby9iYXInIGFuZCAnZm9vL2Jhcjo6QmF6JywKKyAgICBidXQgbm90IG9m
ICdmb28vYmxvcnAnLgogICAgICIiIgogICAgIGJhc2VfcGFydHMgPSBfc3BsaXRub2RlKGJhc2Vp
ZCkKICAgICBub2RlX3BhcnRzID0gX3NwbGl0bm9kZShub2RlaWQpCiAgICAgaWYgbGVuKG5vZGVf
cGFydHMpIDwgbGVuKGJhc2VfcGFydHMpOgogICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1
cm4gbm9kZV9wYXJ0c1s6bGVuKGJhc2VfcGFydHMpXSA9PSBiYXNlX3BhcnRzCisgICAgcmV0dXJu
IG5vZGVfcGFydHNbOiBsZW4oYmFzZV9wYXJ0cyldID09IGJhc2VfcGFydHMKIAogCi1AYXR0ci5z
Ci1jbGFzcyBfQ29tcGF0UHJvcGVydHkob2JqZWN0KToKLSAgICBuYW1lID0gYXR0ci5pYigpCitf
Tm9kZVR5cGUgPSBUeXBlVmFyKCJfTm9kZVR5cGUiLCBib3VuZD0iTm9kZSIpCiAKLSAgICBkZWYg
X19nZXRfXyhzZWxmLCBvYmosIG93bmVyKToKLSAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZgogCi0gICAgICAgICMgVE9ETzogcmVlbmFibGUgaW4gdGhlIGZl
YXR1cmVzIGJyYW5jaAotICAgICAgICAjIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICMgICAgICJ1
c2FnZSBvZiB7b3duZXIhcn0ue25hbWV9IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgcHl0ZXN0
LntuYW1lfSBpbnN0ZWFkIi5mb3JtYXQoCi0gICAgICAgICMgICAgICAgICBuYW1lPXNlbGYubmFt
ZSwgb3duZXI9dHlwZShvd25lcikuX19uYW1lX18pLAotICAgICAgICAjICAgICBQZW5kaW5nRGVw
cmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHJldHVybiBnZXRhdHRyKF9f
aW1wb3J0X18oInB5dGVzdCIpLCBzZWxmLm5hbWUpCitjbGFzcyBOb2RlTWV0YSh0eXBlKToKKyAg
ICBkZWYgX19jYWxsX18oc2VsZiwgKmssICoqa3cpOgorICAgICAgICBtc2cgPSAoCisgICAgICAg
ICAgICAiRGlyZWN0IGNvbnN0cnVjdGlvbiBvZiB7bmFtZX0gaGFzIGJlZW4gZGVwcmVjYXRlZCwg
cGxlYXNlIHVzZSB7bmFtZX0uZnJvbV9wYXJlbnQuXG4iCisgICAgICAgICAgICAiU2VlICIKKyAg
ICAgICAgICAgICJodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25z
Lmh0bWwjbm9kZS1jb25zdHJ1Y3Rpb24tY2hhbmdlZC10by1ub2RlLWZyb20tcGFyZW50IgorICAg
ICAgICAgICAgIiBmb3IgbW9yZSBkZXRhaWxzLiIKKyAgICAgICAgKS5mb3JtYXQobmFtZT1zZWxm
Ll9fbmFtZV9fKQorICAgICAgICBmYWlsKG1zZywgcHl0cmFjZT1GYWxzZSkKIAorICAgIGRlZiBf
Y3JlYXRlKHNlbGYsICprLCAqKmt3KToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19jYWxsX18o
KmssICoqa3cpCiAKLWNsYXNzIE5vZGUob2JqZWN0KToKLSAgICAiIiIgYmFzZSBjbGFzcyBmb3Ig
Q29sbGVjdG9yIGFuZCBJdGVtIHRoZSB0ZXN0IGNvbGxlY3Rpb24gdHJlZS4KLSAgICBDb2xsZWN0
b3Igc3ViY2xhc3NlcyBoYXZlIGNoaWxkcmVuLCBJdGVtcyBhcmUgdGVybWluYWwgbm9kZXMuIiIi
CisKK2NsYXNzIE5vZGUobWV0YWNsYXNzPU5vZGVNZXRhKToKKyAgICAiIiJCYXNlIGNsYXNzIGZv
ciBDb2xsZWN0b3IgYW5kIEl0ZW0sIHRoZSBjb21wb25lbnRzIG9mIHRoZSB0ZXN0CisgICAgY29s
bGVjdGlvbiB0cmVlLgorCisgICAgQ29sbGVjdG9yIHN1YmNsYXNzZXMgaGF2ZSBjaGlsZHJlbjsg
SXRlbXMgYXJlIGxlYWYgbm9kZXMuCisgICAgIiIiCisKKyAgICAjIFVzZSBfX3Nsb3RzX18gdG8g
bWFrZSBhdHRyaWJ1dGUgYWNjZXNzIGZhc3Rlci4KKyAgICAjIE5vdGUgdGhhdCBfX2RpY3RfXyBp
cyBzdGlsbCBhdmFpbGFibGUuCisgICAgX19zbG90c19fID0gKAorICAgICAgICAibmFtZSIsCisg
ICAgICAgICJwYXJlbnQiLAorICAgICAgICAiY29uZmlnIiwKKyAgICAgICAgInNlc3Npb24iLAor
ICAgICAgICAiZnNwYXRoIiwKKyAgICAgICAgIl9ub2RlaWQiLAorICAgICAgICAiX3N0b3JlIiwK
KyAgICAgICAgIl9fZGljdF9fIiwKKyAgICApCiAKICAgICBkZWYgX19pbml0X18oCi0gICAgICAg
IHNlbGYsIG5hbWUsIHBhcmVudD1Ob25lLCBjb25maWc9Tm9uZSwgc2Vzc2lvbj1Ob25lLCBmc3Bh
dGg9Tm9uZSwgbm9kZWlkPU5vbmUKLSAgICApOgotICAgICAgICAjOiBhIHVuaXF1ZSBuYW1lIHdp
dGhpbiB0aGUgc2NvcGUgb2YgdGhlIHBhcmVudCBub2RlCisgICAgICAgIHNlbGYsCisgICAgICAg
IG5hbWU6IHN0ciwKKyAgICAgICAgcGFyZW50OiAiT3B0aW9uYWxbTm9kZV0iID0gTm9uZSwKKyAg
ICAgICAgY29uZmlnOiBPcHRpb25hbFtDb25maWddID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbjog
Ik9wdGlvbmFsW1Nlc3Npb25dIiA9IE5vbmUsCisgICAgICAgIGZzcGF0aDogT3B0aW9uYWxbcHku
cGF0aC5sb2NhbF0gPSBOb25lLAorICAgICAgICBub2RlaWQ6IE9wdGlvbmFsW3N0cl0gPSBOb25l
LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIzogQSB1bmlxdWUgbmFtZSB3aXRoaW4gdGhlIHNj
b3BlIG9mIHRoZSBwYXJlbnQgbm9kZS4KICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogCi0gICAg
ICAgICM6IHRoZSBwYXJlbnQgY29sbGVjdG9yIG5vZGUuCisgICAgICAgICM6IFRoZSBwYXJlbnQg
Y29sbGVjdG9yIG5vZGUuCiAgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAKLSAgICAgICAg
IzogdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0Ci0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmln
IG9yIHBhcmVudC5jb25maWcKKyAgICAgICAgIzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0Lgor
ICAgICAgICBpZiBjb25maWc6CisgICAgICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZyAgIyB0
eXBlOiBDb25maWcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBwYXJlbnQ6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb25maWcgb3IgcGFyZW50IG11c3QgYmUg
cHJvdmlkZWQiKQorICAgICAgICAgICAgc2VsZi5jb25maWcgPSBwYXJlbnQuY29uZmlnCiAKLSAg
ICAgICAgIzogdGhlIHNlc3Npb24gdGhpcyBub2RlIGlzIHBhcnQgb2YKLSAgICAgICAgc2VsZi5z
ZXNzaW9uID0gc2Vzc2lvbiBvciBwYXJlbnQuc2Vzc2lvbgorICAgICAgICAjOiBUaGUgcHl0ZXN0
IHNlc3Npb24gdGhpcyBub2RlIGlzIHBhcnQgb2YuCisgICAgICAgIGlmIHNlc3Npb246CisgICAg
ICAgICAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBpZiBub3QgcGFyZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigic2Vzc2lv
biBvciBwYXJlbnQgbXVzdCBiZSBwcm92aWRlZCIpCisgICAgICAgICAgICBzZWxmLnNlc3Npb24g
PSBwYXJlbnQuc2Vzc2lvbgogCi0gICAgICAgICM6IGZpbGVzeXN0ZW0gcGF0aCB3aGVyZSB0aGlz
IG5vZGUgd2FzIGNvbGxlY3RlZCBmcm9tIChjYW4gYmUgTm9uZSkKKyAgICAgICAgIzogRmlsZXN5
c3RlbSBwYXRoIHdoZXJlIHRoaXMgbm9kZSB3YXMgY29sbGVjdGVkIGZyb20gKGNhbiBiZSBOb25l
KS4KICAgICAgICAgc2VsZi5mc3BhdGggPSBmc3BhdGggb3IgZ2V0YXR0cihwYXJlbnQsICJmc3Bh
dGgiLCBOb25lKQogCi0gICAgICAgICM6IGtleXdvcmRzL21hcmtlcnMgY29sbGVjdGVkIGZyb20g
YWxsIHNjb3BlcworICAgICAgICAjOiBLZXl3b3Jkcy9tYXJrZXJzIGNvbGxlY3RlZCBmcm9tIGFs
bCBzY29wZXMuCiAgICAgICAgIHNlbGYua2V5d29yZHMgPSBOb2RlS2V5d29yZHMoc2VsZikKIAot
ICAgICAgICAjOiB0aGUgbWFya2VyIG9iamVjdHMgYmVsb25naW5nIHRvIHRoaXMgbm9kZQotICAg
ICAgICBzZWxmLm93bl9tYXJrZXJzID0gW10KKyAgICAgICAgIzogVGhlIG1hcmtlciBvYmplY3Rz
IGJlbG9uZ2luZyB0byB0aGlzIG5vZGUuCisgICAgICAgIHNlbGYub3duX21hcmtlcnMgPSBbXSAg
IyB0eXBlOiBMaXN0W01hcmtdCiAKLSAgICAgICAgIzogYWxsb3cgYWRkaW5nIG9mIGV4dHJhIGtl
eXdvcmRzIHRvIHVzZSBmb3IgbWF0Y2hpbmcKLSAgICAgICAgc2VsZi5leHRyYV9rZXl3b3JkX21h
dGNoZXMgPSBzZXQoKQorICAgICAgICAjOiBBbGxvdyBhZGRpbmcgb2YgZXh0cmEga2V5d29yZHMg
dG8gdXNlIGZvciBtYXRjaGluZy4KKyAgICAgICAgc2VsZi5leHRyYV9rZXl3b3JkX21hdGNoZXMg
PSBzZXQoKSAgIyB0eXBlOiBTZXRbc3RyXQogCi0gICAgICAgICMgdXNlZCBmb3Igc3RvcmluZyBh
cnRpZmljaWFsIGZpeHR1cmVkZWZzIGZvciBkaXJlY3QgcGFyYW1ldHJpemF0aW9uCi0gICAgICAg
IHNlbGYuX25hbWUycHNldWRvZml4dHVyZWRlZiA9IHt9CisgICAgICAgICMgVXNlZCBmb3Igc3Rv
cmluZyBhcnRpZmljaWFsIGZpeHR1cmVkZWZzIGZvciBkaXJlY3QgcGFyYW1ldHJpemF0aW9uLgor
ICAgICAgICBzZWxmLl9uYW1lMnBzZXVkb2ZpeHR1cmVkZWYgPSB7fSAgIyB0eXBlOiBEaWN0W3N0
ciwgRml4dHVyZURlZltBbnldXQogCiAgICAgICAgIGlmIG5vZGVpZCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGFzc2VydCAiOjooKSIgbm90IGluIG5vZGVpZAogICAgICAgICAgICAgc2VsZi5f
bm9kZWlkID0gbm9kZWlkCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgcGFyZW50
IGlzIG5vdCBOb25lCi0gICAgICAgICAgICBzZWxmLl9ub2RlaWQgPSBzZWxmLnBhcmVudC5ub2Rl
aWQgKyAiOjoiICsgc2VsZi5uYW1lCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5wYXJlbnQ6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub2RlaWQgb3IgcGFyZW50IG11c3QgYmUg
cHJvdmlkZWQiKQorICAgICAgICAgICAgc2VsZi5fbm9kZWlkID0gc2VsZi5wYXJlbnQubm9kZWlk
CisgICAgICAgICAgICBpZiBzZWxmLm5hbWUgIT0gIigpIjoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9ub2RlaWQgKz0gIjo6IiArIHNlbGYubmFtZQorCisgICAgICAgICMgQSBwbGFjZSB3aGVyZSBw
bHVnaW5zIGNhbiBzdG9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgbm9kZSBmb3IgdGhlaXIKKyAgICAg
ICAgIyBvd24gdXNlLiBDdXJyZW50bHkgb25seSBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgcGx1Z2lu
cy4KKyAgICAgICAgc2VsZi5fc3RvcmUgPSBTdG9yZSgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgZnJvbV9wYXJlbnQoY2xzLCBwYXJlbnQ6ICJOb2RlIiwgKiprdyk6CisgICAgICAgICIi
IlB1YmxpYyBjb25zdHJ1Y3RvciBmb3IgTm9kZXMuCisKKyAgICAgICAgVGhpcyBpbmRpcmVjdGlv
biBnb3QgaW50cm9kdWNlZCBpbiBvcmRlciB0byBlbmFibGUgcmVtb3ZpbmcKKyAgICAgICAgdGhl
IGZyYWdpbGUgbG9naWMgZnJvbSB0aGUgbm9kZSBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgU3Vi
Y2xhc3NlcyBjYW4gdXNlIGBgc3VwZXIoKS5mcm9tX3BhcmVudCguLi4pYGAgd2hlbiBvdmVycmlk
aW5nIHRoZQorICAgICAgICBjb25zdHJ1Y3Rpb24uCisKKyAgICAgICAgOnBhcmFtIHBhcmVudDog
VGhlIHBhcmVudCBub2RlIG9mIHRoaXMgTm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICJj
b25maWciIGluIGt3OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb25maWcgaXMgbm90
IGEgdmFsaWQgYXJndW1lbnQgZm9yIGZyb21fcGFyZW50IikKKyAgICAgICAgaWYgInNlc3Npb24i
IGluIGt3OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJzZXNzaW9uIGlzIG5vdCBhIHZh
bGlkIGFyZ3VtZW50IGZvciBmcm9tX3BhcmVudCIpCisgICAgICAgIHJldHVybiBjbHMuX2NyZWF0
ZShwYXJlbnQ9cGFyZW50LCAqKmt3KQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlob29rKHNl
bGYpOgotICAgICAgICAiIiIgZnNwYXRoIHNlbnNpdGl2ZSBob29rIHByb3h5IHVzZWQgdG8gY2Fs
bCBweXRlc3QgaG9va3MiIiIKKyAgICAgICAgIiIiZnNwYXRoLXNlbnNpdGl2ZSBob29rIHByb3h5
IHVzZWQgdG8gY2FsbCBweXRlc3QgaG9va3MuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnNlc3Np
b24uZ2V0aG9va3Byb3h5KHNlbGYuZnNwYXRoKQogCi0gICAgTW9kdWxlID0gX0NvbXBhdFByb3Bl
cnR5KCJNb2R1bGUiKQotICAgIENsYXNzID0gX0NvbXBhdFByb3BlcnR5KCJDbGFzcyIpCi0gICAg
SW5zdGFuY2UgPSBfQ29tcGF0UHJvcGVydHkoIkluc3RhbmNlIikKLSAgICBGdW5jdGlvbiA9IF9D
b21wYXRQcm9wZXJ0eSgiRnVuY3Rpb24iKQotICAgIEZpbGUgPSBfQ29tcGF0UHJvcGVydHkoIkZp
bGUiKQotICAgIEl0ZW0gPSBfQ29tcGF0UHJvcGVydHkoIkl0ZW0iKQotCi0gICAgZGVmIF9nZXRj
dXN0b21jbGFzcyhzZWxmLCBuYW1lKToKLSAgICAgICAgbWF5YmVfY29tcGF0cHJvcCA9IGdldGF0
dHIodHlwZShzZWxmKSwgbmFtZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShtYXliZV9jb21wYXRw
cm9wLCBfQ29tcGF0UHJvcGVydHkpOgotICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoX19pbXBv
cnRfXygicHl0ZXN0IiksIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjbHMgPSBn
ZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICAjIFRPRE86IHJlZW5hYmxlIGluIHRoZSBm
ZWF0dXJlcyBicmFuY2gKLSAgICAgICAgICAgICMgd2FybmluZ3Mud2FybigidXNlIG9mIG5vZGUu
JXMgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgIyAgICAidXNlIHB5dGVzdF9weWNvbGxl
Y3RfbWFrZWl0ZW0oLi4uKSB0byBjcmVhdGUgY3VzdG9tICIKLSAgICAgICAgICAgICMgICAgImNv
bGxlY3Rpb24gbm9kZXMiICUgbmFtZSwgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQotICAg
ICAgICByZXR1cm4gY2xzCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVy
biAiPCVzICVyPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGdldGF0dHIoc2VsZiwgIm5h
bWUiLCBOb25lKSkKLQotICAgIGRlZiB3YXJuKHNlbGYsIGNvZGUsIG1lc3NhZ2UpOgotICAgICAg
ICAiIiIgZ2VuZXJhdGUgYSB3YXJuaW5nIHdpdGggdGhlIGdpdmVuIGNvZGUgYW5kIG1lc3NhZ2Ug
Zm9yIHRoaXMKLSAgICAgICAgaXRlbS4gIiIiCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNv
ZGUsIHN0cikKLSAgICAgICAgZnNsb2NhdGlvbiA9IGdldGF0dHIoc2VsZiwgImxvY2F0aW9uIiwg
Tm9uZSkKLSAgICAgICAgaWYgZnNsb2NhdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgZnNsb2Nh
dGlvbiA9IGdldGF0dHIoc2VsZiwgImZzcGF0aCIsIE5vbmUpCi0gICAgICAgIHNlbGYuaWhvb2su
cHl0ZXN0X2xvZ3dhcm5pbmcuY2FsbF9oaXN0b3JpYygKLSAgICAgICAgICAgIGt3YXJncz1kaWN0
KAotICAgICAgICAgICAgICAgIGNvZGU9Y29kZSwgbWVzc2FnZT1tZXNzYWdlLCBub2RlaWQ9c2Vs
Zi5ub2RlaWQsIGZzbG9jYXRpb249ZnNsb2NhdGlvbgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAt
PiBzdHI6CisgICAgICAgIHJldHVybiAiPHt9IHt9PiIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9f
bmFtZV9fLCBnZXRhdHRyKHNlbGYsICJuYW1lIiwgTm9uZSkpCisKKyAgICBkZWYgd2FybihzZWxm
LCB3YXJuaW5nOiAiUHl0ZXN0V2FybmluZyIpIC0+IE5vbmU6CisgICAgICAgICIiIklzc3VlIGEg
d2FybmluZyBmb3IgdGhpcyBOb2RlLgorCisgICAgICAgIFdhcm5pbmdzIHdpbGwgYmUgZGlzcGxh
eWVkIGFmdGVyIHRoZSB0ZXN0IHNlc3Npb24sIHVubGVzcyBleHBsaWNpdGx5IHN1cHByZXNzZWQu
CisKKyAgICAgICAgOnBhcmFtIFdhcm5pbmcgd2FybmluZzoKKyAgICAgICAgICAgIFRoZSB3YXJu
aW5nIGluc3RhbmNlIHRvIGlzc3VlLiBNdXN0IGJlIGEgc3ViY2xhc3Mgb2YgUHl0ZXN0V2Fybmlu
Zy4KKworICAgICAgICA6cmFpc2VzIFZhbHVlRXJyb3I6IElmIGBgd2FybmluZ2BgIGluc3RhbmNl
IGlzIG5vdCBhIHN1YmNsYXNzIG9mIFB5dGVzdFdhcm5pbmcuCisKKyAgICAgICAgRXhhbXBsZSB1
c2FnZToKKworICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgICAgICAgIG5v
ZGUud2FybihQeXRlc3RXYXJuaW5nKCJzb21lIG1lc3NhZ2UiKSkKKyAgICAgICAgIiIiCisgICAg
ICAgIGZyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RXYXJuaW5nCisKKyAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2Uod2FybmluZywgUHl0ZXN0V2FybmluZyk6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJ3YXJuaW5nIG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgUHl0ZXN0V2FybmluZyBvciBzdWJjbGFzcywgZ290IHshcn0iLmZvcm1h
dCgKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZworICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICkKKyAgICAgICAgcGF0aCwgbGluZW5vID0gZ2V0X2ZzbG9jYXRpb25fZnJvbV9pdGVt
KHNlbGYpCisgICAgICAgIGFzc2VydCBsaW5lbm8gaXMgbm90IE5vbmUKKyAgICAgICAgd2Fybmlu
Z3Mud2Fybl9leHBsaWNpdCgKKyAgICAgICAgICAgIHdhcm5pbmcsIGNhdGVnb3J5PU5vbmUsIGZp
bGVuYW1lPXN0cihwYXRoKSwgbGluZW5vPWxpbmVubyArIDEsCiAgICAgICAgICkKIAotICAgICMg
bWV0aG9kcyBmb3Igb3JkZXJpbmcgbm9kZXMKKyAgICAjIE1ldGhvZHMgZm9yIG9yZGVyaW5nIG5v
ZGVzLgorCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIG5vZGVpZChzZWxmKToKLSAgICAgICAgIiIi
IGEgOjotc2VwYXJhdGVkIHN0cmluZyBkZW5vdGluZyBpdHMgY29sbGVjdGlvbiB0cmVlIGFkZHJl
c3MuICIiIgorICAgIGRlZiBub2RlaWQoc2VsZikgLT4gc3RyOgorICAgICAgICAiIiJBIDo6LXNl
cGFyYXRlZCBzdHJpbmcgZGVub3RpbmcgaXRzIGNvbGxlY3Rpb24gdHJlZSBhZGRyZXNzLiIiIgog
ICAgICAgICByZXR1cm4gc2VsZi5fbm9kZWlkCiAKLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0g
ICAgICAgIHJldHVybiBoYXNoKHNlbGYubm9kZWlkKQorICAgIGRlZiBfX2hhc2hfXyhzZWxmKSAt
PiBpbnQ6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYuX25vZGVpZCkKIAotICAgIGRlZiBzZXR1
cChzZWxmKToKKyAgICBkZWYgc2V0dXAoc2VsZikgLT4gTm9uZToKICAgICAgICAgcGFzcwogCi0g
ICAgZGVmIHRlYXJkb3duKHNlbGYpOgorICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25lOgog
ICAgICAgICBwYXNzCiAKLSAgICBkZWYgbGlzdGNoYWluKHNlbGYpOgotICAgICAgICAiIiIgcmV0
dXJuIGxpc3Qgb2YgYWxsIHBhcmVudCBjb2xsZWN0b3JzIHVwIHRvIHNlbGYsCi0gICAgICAgICAg
ICBzdGFydGluZyBmcm9tIHJvb3Qgb2YgY29sbGVjdGlvbiB0cmVlLiAiIiIKKyAgICBkZWYgbGlz
dGNoYWluKHNlbGYpIC0+IExpc3RbIk5vZGUiXToKKyAgICAgICAgIiIiUmV0dXJuIGxpc3Qgb2Yg
YWxsIHBhcmVudCBjb2xsZWN0b3JzIHVwIHRvIHNlbGYsIHN0YXJ0aW5nIGZyb20KKyAgICAgICAg
dGhlIHJvb3Qgb2YgY29sbGVjdGlvbiB0cmVlLiIiIgogICAgICAgICBjaGFpbiA9IFtdCi0gICAg
ICAgIGl0ZW0gPSBzZWxmCisgICAgICAgIGl0ZW0gPSBzZWxmICAjIHR5cGU6IE9wdGlvbmFsW05v
ZGVdCiAgICAgICAgIHdoaWxlIGl0ZW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBjaGFpbi5h
cHBlbmQoaXRlbSkKICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnBhcmVudAogICAgICAgICBjaGFp
bi5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIGNoYWluCiAKLSAgICBkZWYgYWRkX21hcmtlcihz
ZWxmLCBtYXJrZXIpOgotICAgICAgICAiIiJkeW5hbWljYWxseSBhZGQgYSBtYXJrZXIgb2JqZWN0
IHRvIHRoZSBub2RlLgorICAgIGRlZiBhZGRfbWFya2VyKAorICAgICAgICBzZWxmLCBtYXJrZXI6
IFVuaW9uW3N0ciwgTWFya0RlY29yYXRvcl0sIGFwcGVuZDogYm9vbCA9IFRydWUKKyAgICApIC0+
IE5vbmU6CisgICAgICAgICIiIkR5bmFtaWNhbGx5IGFkZCBhIG1hcmtlciBvYmplY3QgdG8gdGhl
IG5vZGUuCiAKLSAgICAgICAgOnR5cGUgbWFya2VyOiBzdHIgb3IgcHl0ZXN0Lm1hcmsuKgorICAg
ICAgICA6cGFyYW0gYXBwZW5kOgorICAgICAgICAgICAgV2hldGhlciB0byBhcHBlbmQgdGhlIG1h
cmtlciwgb3IgcHJlcGVuZCBpdC4KICAgICAgICAgIiIiCi0gICAgICAgIGZyb20gX3B5dGVzdC5t
YXJrIGltcG9ydCBNYXJrRGVjb3JhdG9yLCBNQVJLX0dFTgorICAgICAgICBmcm9tIF9weXRlc3Qu
bWFyayBpbXBvcnQgTUFSS19HRU4KIAotICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmtlciwgc2l4
LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBtYXJrZXIgPSBnZXRhdHRyKE1BUktfR0VOLCBt
YXJrZXIpCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UobWFya2VyLCBNYXJrRGVjb3JhdG9y
KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShtYXJrZXIsIE1hcmtEZWNvcmF0b3IpOgorICAgICAg
ICAgICAgbWFya2VyXyA9IG1hcmtlcgorICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWFya2VyLCBz
dHIpOgorICAgICAgICAgICAgbWFya2VyXyA9IGdldGF0dHIoTUFSS19HRU4sIG1hcmtlcikKKyAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImlzIG5vdCBhIHN0cmlu
ZyBvciBweXRlc3QubWFyay4qIE1hcmtlciIpCi0gICAgICAgIHNlbGYua2V5d29yZHNbbWFya2Vy
Lm5hbWVdID0gbWFya2VyCi0gICAgICAgIHNlbGYub3duX21hcmtlcnMuYXBwZW5kKG1hcmtlci5t
YXJrKQorICAgICAgICBzZWxmLmtleXdvcmRzW21hcmtlcl8ubmFtZV0gPSBtYXJrZXJfCisgICAg
ICAgIGlmIGFwcGVuZDoKKyAgICAgICAgICAgIHNlbGYub3duX21hcmtlcnMuYXBwZW5kKG1hcmtl
cl8ubWFyaykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYub3duX21hcmtlcnMuaW5z
ZXJ0KDAsIG1hcmtlcl8ubWFyaykKIAotICAgIGRlZiBpdGVyX21hcmtlcnMoc2VsZiwgbmFtZT1O
b25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIDpwYXJhbSBuYW1lOiBpZiBnaXZlbiwgZmlsdGVy
IHRoZSByZXN1bHRzIGJ5IHRoZSBuYW1lIGF0dHJpYnV0ZQorICAgIGRlZiBpdGVyX21hcmtlcnMo
c2VsZiwgbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUpIC0+IEl0ZXJhdG9yW01hcmtdOgorICAg
ICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIG1hcmtlcnMgb2YgdGhlIG5vZGUuCiAKLSAgICAgICAg
aXRlcmF0ZSBvdmVyIGFsbCBtYXJrZXJzIG9mIHRoZSBub2RlCisgICAgICAgIDpwYXJhbSBuYW1l
OiBJZiBnaXZlbiwgZmlsdGVyIHRoZSByZXN1bHRzIGJ5IHRoZSBuYW1lIGF0dHJpYnV0ZS4KICAg
ICAgICAgIiIiCiAgICAgICAgIHJldHVybiAoeFsxXSBmb3IgeCBpbiBzZWxmLml0ZXJfbWFya2Vy
c193aXRoX25vZGUobmFtZT1uYW1lKSkKIAotICAgIGRlZiBpdGVyX21hcmtlcnNfd2l0aF9ub2Rl
KHNlbGYsIG5hbWU9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICA6cGFyYW0gbmFtZTogaWYg
Z2l2ZW4sIGZpbHRlciB0aGUgcmVzdWx0cyBieSB0aGUgbmFtZSBhdHRyaWJ1dGUKKyAgICBkZWYg
aXRlcl9tYXJrZXJzX3dpdGhfbm9kZSgKKyAgICAgICAgc2VsZiwgbmFtZTogT3B0aW9uYWxbc3Ry
XSA9IE5vbmUKKyAgICApIC0+IEl0ZXJhdG9yW1R1cGxlWyJOb2RlIiwgTWFya11dOgorICAgICAg
ICAiIiJJdGVyYXRlIG92ZXIgYWxsIG1hcmtlcnMgb2YgdGhlIG5vZGUuCiAKLSAgICAgICAgaXRl
cmF0ZSBvdmVyIGFsbCBtYXJrZXJzIG9mIHRoZSBub2RlCi0gICAgICAgIHJldHVybnMgc2VxdWVu
Y2Ugb2YgdHVwbGVzIChub2RlLCBtYXJrKQorICAgICAgICA6cGFyYW0gbmFtZTogSWYgZ2l2ZW4s
IGZpbHRlciB0aGUgcmVzdWx0cyBieSB0aGUgbmFtZSBhdHRyaWJ1dGUuCisgICAgICAgIDpyZXR1
cm5zOiBBbiBpdGVyYXRvciBvZiAobm9kZSwgbWFyaykgdHVwbGVzLgogICAgICAgICAiIiIKICAg
ICAgICAgZm9yIG5vZGUgaW4gcmV2ZXJzZWQoc2VsZi5saXN0Y2hhaW4oKSk6CiAgICAgICAgICAg
ICBmb3IgbWFyayBpbiBub2RlLm93bl9tYXJrZXJzOgogICAgICAgICAgICAgICAgIGlmIG5hbWUg
aXMgTm9uZSBvciBnZXRhdHRyKG1hcmssICJuYW1lIiwgTm9uZSkgPT0gbmFtZToKICAgICAgICAg
ICAgICAgICAgICAgeWllbGQgbm9kZSwgbWFyawogCi0gICAgZGVmIGdldF9jbG9zZXN0X21hcmtl
cihzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgotICAgICAgICAiIiJyZXR1cm4gdGhlIGZpcnN0
IG1hcmtlciBtYXRjaGluZyB0aGUgbmFtZSwgZnJvbSBjbG9zZXN0IChmb3IgZXhhbXBsZSBmdW5j
dGlvbikgdG8gZmFydGhlciBsZXZlbCAoZm9yIGV4YW1wbGUKLSAgICAgICAgbW9kdWxlIGxldmVs
KS4KKyAgICBAb3ZlcmxvYWQKKyAgICBkZWYgZ2V0X2Nsb3Nlc3RfbWFya2VyKHNlbGYsIG5hbWU6
IHN0cikgLT4gT3B0aW9uYWxbTWFya106CisgICAgICAgIC4uLgogCi0gICAgICAgIDpwYXJhbSBk
ZWZhdWx0OiBmYWxsYmFjayByZXR1cm4gdmFsdWUgb2Ygbm8gbWFya2VyIHdhcyBmb3VuZAotICAg
ICAgICA6cGFyYW0gbmFtZTogbmFtZSB0byBmaWx0ZXIgYnkKLSAgICAgICAgIiIiCi0gICAgICAg
IHJldHVybiBuZXh0KHNlbGYuaXRlcl9tYXJrZXJzKG5hbWU9bmFtZSksIGRlZmF1bHQpCisgICAg
QG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICBkZWYgZ2V0X2Nsb3Nlc3RfbWFya2VyKHNlbGYs
IG5hbWU6IHN0ciwgZGVmYXVsdDogTWFyaykgLT4gTWFyazogICMgbm9xYTogRjgxMQorICAgICAg
ICAuLi4KIAotICAgIGRlZiBnZXRfbWFya2VyKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiIgZ2V0
IGEgbWFya2VyIG9iamVjdCBmcm9tIHRoaXMgbm9kZSBvciBOb25lIGlmCi0gICAgICAgIHRoZSBu
b2RlIGRvZXNuJ3QgaGF2ZSBhIG1hcmtlciB3aXRoIHRoYXQgbmFtZS4KKyAgICBkZWYgZ2V0X2Ns
b3Nlc3RfbWFya2VyKCAgIyBub3FhOiBGODExCisgICAgICAgIHNlbGYsIG5hbWU6IHN0ciwgZGVm
YXVsdDogT3B0aW9uYWxbTWFya10gPSBOb25lCisgICAgKSAtPiBPcHRpb25hbFtNYXJrXToKKyAg
ICAgICAgIiIiUmV0dXJuIHRoZSBmaXJzdCBtYXJrZXIgbWF0Y2hpbmcgdGhlIG5hbWUsIGZyb20g
Y2xvc2VzdCAoZm9yCisgICAgICAgIGV4YW1wbGUgZnVuY3Rpb24pIHRvIGZhcnRoZXIgbGV2ZWwg
KGZvciBleGFtcGxlIG1vZHVsZSBsZXZlbCkuCiAKLSAgICAgICAgLi4gZGVwcmVjYXRlZDo6IDMu
NgotICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9y
IG9mCi0gICAgICAgICAgICA6bWV0aDpgTm9kZS5nZXRfY2xvc2VzdF9tYXJrZXIgPF9weXRlc3Qu
bm9kZXMuTm9kZS5nZXRfY2xvc2VzdF9tYXJrZXI+YCBhbmQKLSAgICAgICAgICAgIDptZXRoOmBO
b2RlLml0ZXJfbWFya2VycyA8X3B5dGVzdC5ub2Rlcy5Ob2RlLml0ZXJfbWFya2Vycz5gLCBzZWUg
OnJlZjpgdXBkYXRlIG1hcmtlciBjb2RlYAotICAgICAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4K
KyAgICAgICAgOnBhcmFtIGRlZmF1bHQ6IEZhbGxiYWNrIHJldHVybiB2YWx1ZSBpZiBubyBtYXJr
ZXIgd2FzIGZvdW5kLgorICAgICAgICA6cGFyYW0gbmFtZTogTmFtZSB0byBmaWx0ZXIgYnkuCiAg
ICAgICAgICIiIgotICAgICAgICBtYXJrZXJzID0gbGlzdChzZWxmLml0ZXJfbWFya2VycyhuYW1l
PW5hbWUpKQotICAgICAgICBpZiBtYXJrZXJzOgotICAgICAgICAgICAgcmV0dXJuIE1hcmtJbmZv
KG1hcmtlcnMpCisgICAgICAgIHJldHVybiBuZXh0KHNlbGYuaXRlcl9tYXJrZXJzKG5hbWU9bmFt
ZSksIGRlZmF1bHQpCiAKLSAgICBkZWYgbGlzdGV4dHJha2V5d29yZHMoc2VsZik6Ci0gICAgICAg
ICIiIiBSZXR1cm4gYSBzZXQgb2YgYWxsIGV4dHJhIGtleXdvcmRzIGluIHNlbGYgYW5kIGFueSBw
YXJlbnRzLiIiIgotICAgICAgICBleHRyYV9rZXl3b3JkcyA9IHNldCgpCisgICAgZGVmIGxpc3Rl
eHRyYWtleXdvcmRzKHNlbGYpIC0+IFNldFtzdHJdOgorICAgICAgICAiIiJSZXR1cm4gYSBzZXQg
b2YgYWxsIGV4dHJhIGtleXdvcmRzIGluIHNlbGYgYW5kIGFueSBwYXJlbnRzLiIiIgorICAgICAg
ICBleHRyYV9rZXl3b3JkcyA9IHNldCgpICAjIHR5cGU6IFNldFtzdHJdCiAgICAgICAgIGZvciBp
dGVtIGluIHNlbGYubGlzdGNoYWluKCk6CiAgICAgICAgICAgICBleHRyYV9rZXl3b3Jkcy51cGRh
dGUoaXRlbS5leHRyYV9rZXl3b3JkX21hdGNoZXMpCiAgICAgICAgIHJldHVybiBleHRyYV9rZXl3
b3JkcwogCi0gICAgZGVmIGxpc3RuYW1lcyhzZWxmKToKKyAgICBkZWYgbGlzdG5hbWVzKHNlbGYp
IC0+IExpc3Rbc3RyXToKICAgICAgICAgcmV0dXJuIFt4Lm5hbWUgZm9yIHggaW4gc2VsZi5saXN0
Y2hhaW4oKV0KIAotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluKToKLSAgICAgICAgIiIi
IHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhpcyBub2RlIGlzIGZpbmFs
aXplZC4KKyAgICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbjogQ2FsbGFibGVbW10sIG9iamVj
dF0pIC0+IE5vbmU6CisgICAgICAgICIiIlJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVk
IHdoZW4gdGhpcyBub2RlIGlzIGZpbmFsaXplZC4KIAogICAgICAgICBUaGlzIG1ldGhvZCBjYW4g
b25seSBiZSBjYWxsZWQgd2hlbiB0aGlzIG5vZGUgaXMgYWN0aXZlCiAgICAgICAgIGluIGEgc2V0
dXAgY2hhaW4sIGZvciBleGFtcGxlIGR1cmluZyBzZWxmLnNldHVwKCkuCiAgICAgICAgICIiIgog
ICAgICAgICBzZWxmLnNlc3Npb24uX3NldHVwc3RhdGUuYWRkZmluYWxpemVyKGZpbiwgc2VsZikK
IAotICAgIGRlZiBnZXRwYXJlbnQoc2VsZiwgY2xzKToKLSAgICAgICAgIiIiIGdldCB0aGUgbmV4
dCBwYXJlbnQgbm9kZSAoaW5jbHVkaW5nIG91cnNlbGYpCi0gICAgICAgIHdoaWNoIGlzIGFuIGlu
c3RhbmNlIG9mIHRoZSBnaXZlbiBjbGFzcyIiIgotICAgICAgICBjdXJyZW50ID0gc2VsZgorICAg
IGRlZiBnZXRwYXJlbnQoc2VsZiwgY2xzOiAiVHlwZVtfTm9kZVR5cGVdIikgLT4gT3B0aW9uYWxb
X05vZGVUeXBlXToKKyAgICAgICAgIiIiR2V0IHRoZSBuZXh0IHBhcmVudCBub2RlIChpbmNsdWRp
bmcgc2VsZikgd2hpY2ggaXMgYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgdGhlIGdpdmVuIGNsYXNz
LiIiIgorICAgICAgICBjdXJyZW50ID0gc2VsZiAgIyB0eXBlOiBPcHRpb25hbFtOb2RlXQogICAg
ICAgICB3aGlsZSBjdXJyZW50IGFuZCBub3QgaXNpbnN0YW5jZShjdXJyZW50LCBjbHMpOgogICAg
ICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50CisgICAgICAgIGFzc2VydCBjdXJyZW50
IGlzIE5vbmUgb3IgaXNpbnN0YW5jZShjdXJyZW50LCBjbHMpCiAgICAgICAgIHJldHVybiBjdXJy
ZW50CiAKLSAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2luZm8pOgorICAgIGRlZiBf
cHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9u
XSkgLT4gTm9uZToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIF9yZXByX2ZhaWx1cmVfcHkoc2Vs
ZiwgZXhjaW5mbywgc3R5bGU9Tm9uZSk6Ci0gICAgICAgIGZtID0gc2VsZi5zZXNzaW9uLl9maXh0
dXJlbWFuYWdlcgotICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoZm0uRml4dHVyZUxv
b2t1cEVycm9yKToKKyAgICBkZWYgX3JlcHJfZmFpbHVyZV9weSgKKyAgICAgICAgc2VsZiwKKyAg
ICAgICAgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSwKKyAgICAgICAgc3R5
bGU6ICJPcHRpb25hbFtfVHJhY2ViYWNrU3R5bGVdIiA9IE5vbmUsCisgICAgKSAtPiBUZXJtaW5h
bFJlcHI6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjaW5mby52YWx1ZSwgQ29uZnRlc3RJbXBv
cnRGYWlsdXJlKToKKyAgICAgICAgICAgIGV4Y2luZm8gPSBFeGNlcHRpb25JbmZvKGV4Y2luZm8u
dmFsdWUuZXhjaW5mbykKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBmYWls
LkV4Y2VwdGlvbik6CisgICAgICAgICAgICBpZiBub3QgZXhjaW5mby52YWx1ZS5weXRyYWNlOgor
ICAgICAgICAgICAgICAgIHN0eWxlID0gInZhbHVlIgorICAgICAgICBpZiBpc2luc3RhbmNlKGV4
Y2luZm8udmFsdWUsIEZpeHR1cmVMb29rdXBFcnJvcik6CiAgICAgICAgICAgICByZXR1cm4gZXhj
aW5mby52YWx1ZS5mb3JtYXRyZXByKCkKLSAgICAgICAgdGJmaWx0ZXIgPSBUcnVlCi0gICAgICAg
IGlmIHNlbGYuY29uZmlnLm9wdGlvbi5mdWxsdHJhY2U6CisgICAgICAgIGlmIHNlbGYuY29uZmln
LmdldG9wdGlvbigiZnVsbHRyYWNlIiwgRmFsc2UpOgogICAgICAgICAgICAgc3R5bGUgPSAibG9u
ZyIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRiID0gX3B5dGVzdC5fY29kZS5UcmFjZWJh
Y2soW2V4Y2luZm8udHJhY2ViYWNrWy0xXV0pCiAgICAgICAgICAgICBzZWxmLl9wcnVuZXRyYWNl
YmFjayhleGNpbmZvKQogICAgICAgICAgICAgaWYgbGVuKGV4Y2luZm8udHJhY2ViYWNrKSA9PSAw
OgogICAgICAgICAgICAgICAgIGV4Y2luZm8udHJhY2ViYWNrID0gdGIKLSAgICAgICAgICAgIHRi
ZmlsdGVyID0gRmFsc2UgICMgcHJ1bmV0cmFjZWJhY2sgYWxyZWFkeSBkb2VzIGl0CiAgICAgICAg
ICAgICBpZiBzdHlsZSA9PSAiYXV0byI6CiAgICAgICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIK
ICAgICAgICAgIyBYWFggc2hvdWxkIGV4Y2luZm8uZ2V0cmVwciByZWNvcmQgYWxsIGRhdGEgYW5k
IHRvdGVybWluYWwoKSBwcm9jZXNzIGl0PwogICAgICAgICBpZiBzdHlsZSBpcyBOb25lOgotICAg
ICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgPT0gInNob3J0IjoKKyAgICAg
ICAgICAgIGlmIHNlbGYuY29uZmlnLmdldG9wdGlvbigidGJzdHlsZSIsICJhdXRvIikgPT0gInNo
b3J0IjoKICAgICAgICAgICAgICAgICBzdHlsZSA9ICJzaG9ydCIKICAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIKIAorICAgICAgICBpZiBzZWxmLmNvbmZp
Zy5nZXRvcHRpb24oInZlcmJvc2UiLCAwKSA+IDE6CisgICAgICAgICAgICB0cnVuY2F0ZV9sb2Nh
bHMgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ1bmNhdGVfbG9jYWxzID0g
VHJ1ZQorCisgICAgICAgICMgZXhjaW5mby5nZXRyZXByKCkgZm9ybWF0cyBwYXRocyByZWxhdGl2
ZSB0byB0aGUgQ1dEIGlmIGBhYnNwYXRoYCBpcyBGYWxzZS4KKyAgICAgICAgIyBJdCBpcyBwb3Nz
aWJsZSBmb3IgYSBmaXh0dXJlL3Rlc3QgdG8gY2hhbmdlIHRoZSBDV0Qgd2hpbGUgdGhpcyBjb2Rl
IHJ1bnMsIHdoaWNoCisgICAgICAgICMgd291bGQgdGhlbiByZXN1bHQgaW4gdGhlIHVzZXIgc2Vl
aW5nIGNvbmZ1c2luZyBwYXRocyBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlLgorICAgICAgICAjIFRv
IGZpeCB0aGlzLCBpZiB0aGUgQ1dEIGNoYW5nZWQsIGFsd2F5cyBkaXNwbGF5IHRoZSBmdWxsIGFi
c29sdXRlIHBhdGguCisgICAgICAgICMgSXQgd2lsbCBiZSBiZXR0ZXIgdG8ganVzdCBhbHdheXMg
ZGlzcGxheSBwYXRocyByZWxhdGl2ZSB0byBpbnZvY2F0aW9uX2RpciwgYnV0CisgICAgICAgICMg
dGhpcyByZXF1aXJlcyBhIGxvdCBvZiBwbHVtYmluZyAoIzY0MjgpLgogICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBvcy5nZXRjd2QoKQotICAgICAgICAgICAgYWJzcGF0aCA9IEZhbHNlCisgICAg
ICAgICAgICBhYnNwYXRoID0gUGF0aChvcy5nZXRjd2QoKSkgIT0gc2VsZi5jb25maWcuaW52b2Nh
dGlvbl9wYXJhbXMuZGlyCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgYWJz
cGF0aCA9IFRydWUKIAogICAgICAgICByZXR1cm4gZXhjaW5mby5nZXRyZXByKAogICAgICAgICAg
ICAgZnVuY2FyZ3M9VHJ1ZSwKICAgICAgICAgICAgIGFic3BhdGg9YWJzcGF0aCwKLSAgICAgICAg
ICAgIHNob3dsb2NhbHM9c2VsZi5jb25maWcub3B0aW9uLnNob3dsb2NhbHMsCisgICAgICAgICAg
ICBzaG93bG9jYWxzPXNlbGYuY29uZmlnLmdldG9wdGlvbigic2hvd2xvY2FscyIsIEZhbHNlKSwK
ICAgICAgICAgICAgIHN0eWxlPXN0eWxlLAotICAgICAgICAgICAgdGJmaWx0ZXI9dGJmaWx0ZXIs
CisgICAgICAgICAgICB0YmZpbHRlcj1GYWxzZSwgICMgcHJ1bmVkIGFscmVhZHksIG9yIGluIC0t
ZnVsbHRyYWNlIG1vZGUuCisgICAgICAgICAgICB0cnVuY2F0ZV9sb2NhbHM9dHJ1bmNhdGVfbG9j
YWxzLAogICAgICAgICApCiAKLSAgICByZXByX2ZhaWx1cmUgPSBfcmVwcl9mYWlsdXJlX3B5Cisg
ICAgZGVmIHJlcHJfZmFpbHVyZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZXhjaW5mbzogRXhj
ZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSwKKyAgICAgICAgc3R5bGU6ICJPcHRpb25hbFtfVHJh
Y2ViYWNrU3R5bGVdIiA9IE5vbmUsCisgICAgKSAtPiBVbmlvbltzdHIsIFRlcm1pbmFsUmVwcl06
CisgICAgICAgICIiIlJldHVybiBhIHJlcHJlc2VudGF0aW9uIG9mIGEgY29sbGVjdGlvbiBvciB0
ZXN0IGZhaWx1cmUuCiAKKyAgICAgICAgOnBhcmFtIGV4Y2luZm86IEV4Y2VwdGlvbiBpbmZvcm1h
dGlvbiBmb3IgdGhlIGZhaWx1cmUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5f
cmVwcl9mYWlsdXJlX3B5KGV4Y2luZm8sIHN0eWxlKQogCi1jbGFzcyBDb2xsZWN0b3IoTm9kZSk6
Ci0gICAgIiIiIENvbGxlY3RvciBpbnN0YW5jZXMgY3JlYXRlIGNoaWxkcmVuIHRocm91Z2ggY29s
bGVjdCgpCi0gICAgICAgIGFuZCB0aHVzIGl0ZXJhdGl2ZWx5IGJ1aWxkIGEgdHJlZS4KKworZGVm
IGdldF9mc2xvY2F0aW9uX2Zyb21faXRlbSgKKyAgICBub2RlOiAiTm9kZSIsCispIC0+IFR1cGxl
W1VuaW9uW3N0ciwgcHkucGF0aC5sb2NhbF0sIE9wdGlvbmFsW2ludF1dOgorICAgICIiIlRyeSB0
byBleHRyYWN0IHRoZSBhY3R1YWwgbG9jYXRpb24gZnJvbSBhIG5vZGUsIGRlcGVuZGluZyBvbiBh
dmFpbGFibGUgYXR0cmlidXRlczoKKworICAgICogImxvY2F0aW9uIjogYSBwYWlyIChwYXRoLCBs
aW5lbm8pCisgICAgKiAib2JqIjogYSBQeXRob24gb2JqZWN0IHRoYXQgdGhlIG5vZGUgd3JhcHMu
CisgICAgKiAiZnNwYXRoIjoganVzdCBhIHBhdGgKKworICAgIDpydHlwZTogQSB0dXBsZSBvZiAo
c3RyfHB5LnBhdGgubG9jYWwsIGludCkgd2l0aCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIuCiAg
ICAgIiIiCisgICAgIyBTZWUgSXRlbS5sb2NhdGlvbi4KKyAgICBsb2NhdGlvbiA9IGdldGF0dHIo
CisgICAgICAgIG5vZGUsICJsb2NhdGlvbiIsIE5vbmUKKyAgICApICAjIHR5cGU6IE9wdGlvbmFs
W1R1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXV0KKyAgICBpZiBsb2NhdGlvbiBpcyBub3Qg
Tm9uZToKKyAgICAgICAgcmV0dXJuIGxvY2F0aW9uWzoyXQorICAgIG9iaiA9IGdldGF0dHIobm9k
ZSwgIm9iaiIsIE5vbmUpCisgICAgaWYgb2JqIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4g
Z2V0ZnNsaW5lbm8ob2JqKQorICAgIHJldHVybiBnZXRhdHRyKG5vZGUsICJmc3BhdGgiLCAidW5r
bm93biBsb2NhdGlvbiIpLCAtMQorCisKK2NsYXNzIENvbGxlY3RvcihOb2RlKToKKyAgICAiIiJD
b2xsZWN0b3IgaW5zdGFuY2VzIGNyZWF0ZSBjaGlsZHJlbiB0aHJvdWdoIGNvbGxlY3QoKSBhbmQg
dGh1cworICAgIGl0ZXJhdGl2ZWx5IGJ1aWxkIGEgdHJlZS4iIiIKIAogICAgIGNsYXNzIENvbGxl
Y3RFcnJvcihFeGNlcHRpb24pOgotICAgICAgICAiIiIgYW4gZXJyb3IgZHVyaW5nIGNvbGxlY3Rp
b24sIGNvbnRhaW5zIGEgY3VzdG9tIG1lc3NhZ2UuICIiIgorICAgICAgICAiIiJBbiBlcnJvciBk
dXJpbmcgY29sbGVjdGlvbiwgY29udGFpbnMgYSBjdXN0b20gbWVzc2FnZS4iIiIKIAotICAgIGRl
ZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJucyBhIGxpc3Qgb2YgY2hpbGRyZW4g
KGl0ZW1zIGFuZCBjb2xsZWN0b3JzKQotICAgICAgICAgICAgZm9yIHRoaXMgY29sbGVjdGlvbiBu
b2RlLgotICAgICAgICAiIiIKKyAgICBkZWYgY29sbGVjdChzZWxmKSAtPiBJdGVyYWJsZVtVbmlv
blsiSXRlbSIsICJDb2xsZWN0b3IiXV06CisgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY2hp
bGRyZW4gKGl0ZW1zIGFuZCBjb2xsZWN0b3JzKSBmb3IgdGhpcworICAgICAgICBjb2xsZWN0aW9u
IG5vZGUuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImFic3RyYWN0IikK
IAotICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgICIiIiByZXBy
ZXNlbnQgYSBjb2xsZWN0aW9uIGZhaWx1cmUuICIiIgotICAgICAgICBpZiBleGNpbmZvLmVycmlz
aW5zdGFuY2Uoc2VsZi5Db2xsZWN0RXJyb3IpOgorICAgICMgVE9ETzogVGhpcyBvbWl0cyB0aGUg
c3R5bGU9IHBhcmFtZXRlciB3aGljaCBicmVha3MgTGlza292IFN1YnN0aXR1dGlvbi4KKyAgICBk
ZWYgcmVwcl9mYWlsdXJlKCAgIyB0eXBlOiBpZ25vcmVbb3ZlcnJpZGVdCisgICAgICAgIHNlbGYs
IGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0KKyAgICApIC0+IFVuaW9uW3N0
ciwgVGVybWluYWxSZXByXToKKyAgICAgICAgIiIiUmV0dXJuIGEgcmVwcmVzZW50YXRpb24gb2Yg
YSBjb2xsZWN0aW9uIGZhaWx1cmUuCisKKyAgICAgICAgOnBhcmFtIGV4Y2luZm86IEV4Y2VwdGlv
biBpbmZvcm1hdGlvbiBmb3IgdGhlIGZhaWx1cmUuCisgICAgICAgICIiIgorICAgICAgICBpZiBp
c2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIHNlbGYuQ29sbGVjdEVycm9yKSBhbmQgbm90IHNlbGYu
Y29uZmlnLmdldG9wdGlvbigKKyAgICAgICAgICAgICJmdWxsdHJhY2UiLCBGYWxzZQorICAgICAg
ICApOgogICAgICAgICAgICAgZXhjID0gZXhjaW5mby52YWx1ZQogICAgICAgICAgICAgcmV0dXJu
IHN0cihleGMuYXJnc1swXSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfZmFpbHVyZV9weShl
eGNpbmZvLCBzdHlsZT0ic2hvcnQiKQogCi0gICAgZGVmIF9wcnVuZXRyYWNlYmFjayhzZWxmLCBl
eGNpbmZvKToKKyAgICAgICAgIyBSZXNwZWN0IGV4cGxpY2l0IHRic3R5bGUgb3B0aW9uLCBidXQg
ZGVmYXVsdCB0byAic2hvcnQiCisgICAgICAgICMgKF9yZXByX2ZhaWx1cmVfcHkgdXNlcyAibG9u
ZyIgd2l0aCAiZnVsbHRyYWNlIiBvcHRpb24gYWx3YXlzKS4KKyAgICAgICAgdGJzdHlsZSA9IHNl
bGYuY29uZmlnLmdldG9wdGlvbigidGJzdHlsZSIsICJhdXRvIikKKyAgICAgICAgaWYgdGJzdHls
ZSA9PSAiYXV0byI6CisgICAgICAgICAgICB0YnN0eWxlID0gInNob3J0IgorCisgICAgICAgIHJl
dHVybiBzZWxmLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywgc3R5bGU9dGJzdHlsZSkKKworICAg
IGRlZiBfcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhj
ZXB0aW9uXSkgLT4gTm9uZToKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiZnNwYXRoIik6CiAg
ICAgICAgICAgICB0cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjawogICAgICAgICAgICAgbnRy
YWNlYmFjayA9IHRyYWNlYmFjay5jdXQocGF0aD1zZWxmLmZzcGF0aCkKQEAgLTMzMSwxMyArNDk2
LDE4IEBAIGNsYXNzIENvbGxlY3RvcihOb2RlKToKIGRlZiBfY2hlY2tfaW5pdGlhbHBhdGhzX2Zv
cl9yZWxwYXRoKHNlc3Npb24sIGZzcGF0aCk6CiAgICAgZm9yIGluaXRpYWxfcGF0aCBpbiBzZXNz
aW9uLl9pbml0aWFscGF0aHM6CiAgICAgICAgIGlmIGZzcGF0aC5jb21tb24oaW5pdGlhbF9wYXRo
KSA9PSBpbml0aWFsX3BhdGg6Ci0gICAgICAgICAgICByZXR1cm4gZnNwYXRoLnJlbHRvKGluaXRp
YWxfcGF0aC5kaXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIGZzcGF0aC5yZWx0byhpbml0aWFs
X3BhdGgpCiAKIAogY2xhc3MgRlNDb2xsZWN0b3IoQ29sbGVjdG9yKToKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmc3BhdGgsIHBhcmVudD1Ob25lLCBjb25maWc9Tm9uZSwgc2Vzc2lvbj1Ob25l
LCBub2RlaWQ9Tm9uZSk6Ci0gICAgICAgIGZzcGF0aCA9IHB5LnBhdGgubG9jYWwoZnNwYXRoKSAg
IyB4eHggb25seSBmb3IgdGVzdF9yZXN1bHRsb2cucHk/CisgICAgZGVmIF9faW5pdF9fKAorICAg
ICAgICBzZWxmLAorICAgICAgICBmc3BhdGg6IHB5LnBhdGgubG9jYWwsCisgICAgICAgIHBhcmVu
dD1Ob25lLAorICAgICAgICBjb25maWc6IE9wdGlvbmFsW0NvbmZpZ10gPSBOb25lLAorICAgICAg
ICBzZXNzaW9uOiBPcHRpb25hbFsiU2Vzc2lvbiJdID0gTm9uZSwKKyAgICAgICAgbm9kZWlkOiBP
cHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIG5hbWUgPSBmc3Bh
dGguYmFzZW5hbWUKICAgICAgICAgaWYgcGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAg
cmVsID0gZnNwYXRoLnJlbHRvKHBhcmVudC5mc3BhdGgpCkBAIC0zNTMsMzYgKzUyMyw2MSBAQCBj
bGFzcyBGU0NvbGxlY3RvcihDb2xsZWN0b3IpOgogCiAgICAgICAgICAgICBpZiBub3Qgbm9kZWlk
OgogICAgICAgICAgICAgICAgIG5vZGVpZCA9IF9jaGVja19pbml0aWFscGF0aHNfZm9yX3JlbHBh
dGgoc2Vzc2lvbiwgZnNwYXRoKQotICAgICAgICAgICAgaWYgb3Muc2VwICE9IFNFUDoKKyAgICAg
ICAgICAgIGlmIG5vZGVpZCBhbmQgb3Muc2VwICE9IFNFUDoKICAgICAgICAgICAgICAgICBub2Rl
aWQgPSBub2RlaWQucmVwbGFjZShvcy5zZXAsIFNFUCkKIAotICAgICAgICBzdXBlcihGU0NvbGxl
Y3Rvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICBuYW1lLCBwYXJlbnQsIGNvbmZpZywg
c2Vzc2lvbiwgbm9kZWlkPW5vZGVpZCwgZnNwYXRoPWZzcGF0aAotICAgICAgICApCisgICAgICAg
IHN1cGVyKCkuX19pbml0X18obmFtZSwgcGFyZW50LCBjb25maWcsIHNlc3Npb24sIG5vZGVpZD1u
b2RlaWQsIGZzcGF0aD1mc3BhdGgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9w
YXJlbnQoY2xzLCBwYXJlbnQsICosIGZzcGF0aCwgKiprdyk6CisgICAgICAgICIiIlRoZSBwdWJs
aWMgY29uc3RydWN0b3IuIiIiCisgICAgICAgIHJldHVybiBzdXBlcigpLmZyb21fcGFyZW50KHBh
cmVudD1wYXJlbnQsIGZzcGF0aD1mc3BhdGgsICoqa3cpCisKKyAgICBkZWYgZ2V0aG9va3Byb3h5
KHNlbGYsIGZzcGF0aDogcHkucGF0aC5sb2NhbCk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oRlND
T0xMRUNUT1JfR0VUSE9PS1BST1hZX0lTSU5JVFBBVEgsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAg
cmV0dXJuIHNlbGYuc2Vzc2lvbi5nZXRob29rcHJveHkoZnNwYXRoKQorCisgICAgZGVmIGlzaW5p
dHBhdGgoc2VsZiwgcGF0aDogcHkucGF0aC5sb2NhbCkgLT4gYm9vbDoKKyAgICAgICAgd2Fybmlu
Z3Mud2FybihGU0NPTExFQ1RPUl9HRVRIT09LUFJPWFlfSVNJTklUUEFUSCwgc3RhY2tsZXZlbD0y
KQorICAgICAgICByZXR1cm4gc2VsZi5zZXNzaW9uLmlzaW5pdHBhdGgocGF0aCkKIAogCiBjbGFz
cyBGaWxlKEZTQ29sbGVjdG9yKToKLSAgICAiIiIgYmFzZSBjbGFzcyBmb3IgY29sbGVjdGluZyB0
ZXN0cyBmcm9tIGEgZmlsZS4gIiIiCisgICAgIiIiQmFzZSBjbGFzcyBmb3IgY29sbGVjdGluZyB0
ZXN0cyBmcm9tIGEgZmlsZS4KKworICAgIDpyZWY6YG5vbi1weXRob24gdGVzdHNgLgorICAgICIi
IgogCiAKIGNsYXNzIEl0ZW0oTm9kZSk6Ci0gICAgIiIiIGEgYmFzaWMgdGVzdCBpbnZvY2F0aW9u
IGl0ZW0uIE5vdGUgdGhhdCBmb3IgYSBzaW5nbGUgZnVuY3Rpb24KLSAgICB0aGVyZSBtaWdodCBi
ZSBtdWx0aXBsZSB0ZXN0IGludm9jYXRpb24gaXRlbXMuCi0gICAgIiIiCi0gICAgbmV4dGl0ZW0g
PSBOb25lCisgICAgIiIiQSBiYXNpYyB0ZXN0IGludm9jYXRpb24gaXRlbS4KIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lLCBwYXJlbnQ9Tm9uZSwgY29uZmlnPU5vbmUsIHNlc3Npb249Tm9u
ZSwgbm9kZWlkPU5vbmUpOgotICAgICAgICBzdXBlcihJdGVtLCBzZWxmKS5fX2luaXRfXyhuYW1l
LCBwYXJlbnQsIGNvbmZpZywgc2Vzc2lvbiwgbm9kZWlkPW5vZGVpZCkKLSAgICAgICAgc2VsZi5f
cmVwb3J0X3NlY3Rpb25zID0gW10KKyAgICBOb3RlIHRoYXQgZm9yIGEgc2luZ2xlIGZ1bmN0aW9u
IHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIHRlc3QgaW52b2NhdGlvbiBpdGVtcy4KKyAgICAiIiIK
IAotICAgICAgICAjOiB1c2VyIHByb3BlcnRpZXMgaXMgYSBsaXN0IG9mIHR1cGxlcyAobmFtZSwg
dmFsdWUpIHRoYXQgaG9sZHMgdXNlcgotICAgICAgICAjOiBkZWZpbmVkIHByb3BlcnRpZXMgZm9y
IHRoaXMgdGVzdC4KLSAgICAgICAgc2VsZi51c2VyX3Byb3BlcnRpZXMgPSBbXQorICAgIG5leHRp
dGVtID0gTm9uZQogCi0gICAgZGVmIGFkZF9yZXBvcnRfc2VjdGlvbihzZWxmLCB3aGVuLCBrZXks
IGNvbnRlbnQpOgotICAgICAgICAiIiIKLSAgICAgICAgQWRkcyBhIG5ldyByZXBvcnQgc2VjdGlv
biwgc2ltaWxhciB0byB3aGF0J3MgZG9uZSBpbnRlcm5hbGx5IHRvIGFkZCBzdGRvdXQgYW5kCi0g
ICAgICAgIHN0ZGVyciBjYXB0dXJlZCBvdXRwdXQ6OgorICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgbmFtZSwKKyAgICAgICAgcGFyZW50PU5vbmUsCisgICAgICAgIGNv
bmZpZzogT3B0aW9uYWxbQ29uZmlnXSA9IE5vbmUsCisgICAgICAgIHNlc3Npb246IE9wdGlvbmFs
WyJTZXNzaW9uIl0gPSBOb25lLAorICAgICAgICBub2RlaWQ6IE9wdGlvbmFsW3N0cl0gPSBOb25l
LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQs
IGNvbmZpZywgc2Vzc2lvbiwgbm9kZWlkPW5vZGVpZCkKKyAgICAgICAgc2VsZi5fcmVwb3J0X3Nl
Y3Rpb25zID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIHN0ciwgc3RyXV0KKworICAgICAg
ICAjOiBBIGxpc3Qgb2YgdHVwbGVzIChuYW1lLCB2YWx1ZSkgdGhhdCBob2xkcyB1c2VyIGRlZmlu
ZWQgcHJvcGVydGllcworICAgICAgICAjOiBmb3IgdGhpcyB0ZXN0LgorICAgICAgICBzZWxmLnVz
ZXJfcHJvcGVydGllcyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbc3RyLCBvYmplY3RdXQorCisg
ICAgZGVmIHJ1bnRlc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcigicnVudGVzdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IEl0ZW0gc3ViY2xhc3MiKQor
CisgICAgZGVmIGFkZF9yZXBvcnRfc2VjdGlvbihzZWxmLCB3aGVuOiBzdHIsIGtleTogc3RyLCBj
b250ZW50OiBzdHIpIC0+IE5vbmU6CisgICAgICAgICIiIkFkZCBhIG5ldyByZXBvcnQgc2VjdGlv
biwgc2ltaWxhciB0byB3aGF0J3MgZG9uZSBpbnRlcm5hbGx5IHRvIGFkZAorICAgICAgICBzdGRv
dXQgYW5kIHN0ZGVyciBjYXB0dXJlZCBvdXRwdXQ6OgogCiAgICAgICAgICAgICBpdGVtLmFkZF9y
ZXBvcnRfc2VjdGlvbigiY2FsbCIsICJzdGRvdXQiLCAicmVwb3J0IHNlY3Rpb24gY29udGVudHMi
KQogCkBAIC0zOTEsMjkgKzU4NiwxOSBAQCBjbGFzcyBJdGVtKE5vZGUpOgogICAgICAgICA6cGFy
YW0gc3RyIGtleToKICAgICAgICAgICAgIE5hbWUgb2YgdGhlIHNlY3Rpb24sIGNhbiBiZSBjdXN0
b21pemVkIGF0IHdpbGwuIFB5dGVzdCB1c2VzIGBgInN0ZG91dCJgYCBhbmQKICAgICAgICAgICAg
IGBgInN0ZGVyciJgYCBpbnRlcm5hbGx5LgotCiAgICAgICAgIDpwYXJhbSBzdHIgY29udGVudDoK
ICAgICAgICAgICAgIFRoZSBmdWxsIGNvbnRlbnRzIGFzIGEgc3RyaW5nLgogICAgICAgICAiIiIK
ICAgICAgICAgaWYgY29udGVudDoKICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9zZWN0aW9ucy5h
cHBlbmQoKHdoZW4sIGtleSwgY29udGVudCkpCiAKLSAgICBkZWYgcmVwb3J0aW5mbyhzZWxmKToK
KyAgICBkZWYgcmVwb3J0aW5mbyhzZWxmKSAtPiBUdXBsZVtVbmlvbltweS5wYXRoLmxvY2FsLCBz
dHJdLCBPcHRpb25hbFtpbnRdLCBzdHJdOgogICAgICAgICByZXR1cm4gc2VsZi5mc3BhdGgsIE5v
bmUsICIiCiAKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbG9jYXRpb24oc2VsZik6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhdGlvbgotICAgICAgICBleGNlcHQg
QXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBsb2NhdGlvbiA9IHNlbGYucmVwb3J0aW5mbygp
Ci0gICAgICAgICAgICAjIGJlc3RyZWxwYXRoIGlzIGEgcXVpdGUgc2xvdyBmdW5jdGlvbgotICAg
ICAgICAgICAgY2FjaGUgPSBzZWxmLmNvbmZpZy5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfYmVzdHJl
bHBhdGhjYWNoZSIsIHt9KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZzcGF0
aCA9IGNhY2hlW2xvY2F0aW9uWzBdXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgICAgIGZzcGF0aCA9IHNlbGYuc2Vzc2lvbi5mc3BhdGguYmVzdHJlbHBhdGgobG9j
YXRpb25bMF0pCi0gICAgICAgICAgICAgICAgY2FjaGVbbG9jYXRpb25bMF1dID0gZnNwYXRoCi0g
ICAgICAgICAgICBsb2NhdGlvbiA9IChmc3BhdGgsIGxvY2F0aW9uWzFdLCBzdHIobG9jYXRpb25b
Ml0pKQotICAgICAgICAgICAgc2VsZi5fbG9jYXRpb24gPSBsb2NhdGlvbgotICAgICAgICAgICAg
cmV0dXJuIGxvY2F0aW9uCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiBsb2NhdGlvbihz
ZWxmKSAtPiBUdXBsZVtzdHIsIE9wdGlvbmFsW2ludF0sIHN0cl06CisgICAgICAgIGxvY2F0aW9u
ID0gc2VsZi5yZXBvcnRpbmZvKCkKKyAgICAgICAgZnNwYXRoID0gYWJzb2x1dGVwYXRoKHN0cihs
b2NhdGlvblswXSkpCisgICAgICAgIHJlbGZzcGF0aCA9IHNlbGYuc2Vzc2lvbi5fbm9kZV9sb2Nh
dGlvbl90b19yZWxwYXRoKGZzcGF0aCkKKyAgICAgICAgYXNzZXJ0IHR5cGUobG9jYXRpb25bMl0p
IGlzIHN0cgorICAgICAgICByZXR1cm4gKHJlbGZzcGF0aCwgbG9jYXRpb25bMV0sIGxvY2F0aW9u
WzJdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvbm9zZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L25vc2UucHkKaW5kZXggYmIyZTQyNzdkMWM4Li5iYjhmOTk3NzJh
YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L25vc2UucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3Qvbm9zZS5weQpAQCAtMSw0MiArMSwxNyBAQAotIiIiIHJ1biB0
ZXN0IHN1aXRlcyB3cml0dGVuIGZvciBub3NlLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHN5cwot
Ci1mcm9tIF9weXRlc3QgaW1wb3J0IHVuaXR0ZXN0LCBydW5uZXIsIHB5dGhvbgorIiIiUnVuIHRl
c3RzdWl0ZXMgd3JpdHRlbiBmb3Igbm9zZS4iIiIKK2Zyb20gX3B5dGVzdCBpbXBvcnQgcHl0aG9u
Citmcm9tIF9weXRlc3QgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBob29raW1wbAotCi0KLWRlZiBnZXRfc2tpcF9leGNlcHRpb25zKCk6Ci0gICAgc2tpcF9jbGFz
c2VzID0gc2V0KCkKLSAgICBmb3IgbW9kdWxlX25hbWUgaW4gKCJ1bml0dGVzdCIsICJ1bml0dGVz
dDIiLCAibm9zZSIpOgotICAgICAgICBtb2QgPSBzeXMubW9kdWxlcy5nZXQobW9kdWxlX25hbWUp
Ci0gICAgICAgIGlmIGhhc2F0dHIobW9kLCAiU2tpcFRlc3QiKToKLSAgICAgICAgICAgIHNraXBf
Y2xhc3Nlcy5hZGQobW9kLlNraXBUZXN0KQotICAgIHJldHVybiB0dXBsZShza2lwX2NsYXNzZXMp
Ci0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6Ci0gICAgaWYg
Y2FsbC5leGNpbmZvIGFuZCBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZShnZXRfc2tpcF9leGNl
cHRpb25zKCkpOgotICAgICAgICAjIGxldCdzIHN1YnN0aXR1dGUgdGhlIGV4Y2luZm8gd2l0aCBh
IHB5dGVzdC5za2lwIG9uZQotICAgICAgICBjYWxsMiA9IGNhbGwuX19jbGFzc19fKGxhbWJkYTog
cnVubmVyLnNraXAoc3RyKGNhbGwuZXhjaW5mby52YWx1ZSkpLCBjYWxsLndoZW4pCi0gICAgICAg
IGNhbGwuZXhjaW5mbyA9IGNhbGwyLmV4Y2luZm8KK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQg
SXRlbQogCiAKIEBob29raW1wbCh0cnlsYXN0PVRydWUpCiBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0
dXAoaXRlbSk6CiAgICAgaWYgaXNfcG90ZW50aWFsX25vc2V0ZXN0KGl0ZW0pOgotICAgICAgICBp
ZiBpc2luc3RhbmNlKGl0ZW0ucGFyZW50LCBweXRob24uR2VuZXJhdG9yKToKLSAgICAgICAgICAg
IGdlbiA9IGl0ZW0ucGFyZW50Ci0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihnZW4sICJfbm9z
ZWdlbnNldHVwIik6Ci0gICAgICAgICAgICAgICAgY2FsbF9vcHRpb25hbChnZW4ub2JqLCAic2V0
dXAiKQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ2VuLnBhcmVudCwgcHl0aG9uLklu
c3RhbmNlKToKLSAgICAgICAgICAgICAgICAgICAgY2FsbF9vcHRpb25hbChnZW4ucGFyZW50Lm9i
aiwgInNldHVwIikKLSAgICAgICAgICAgICAgICBnZW4uX25vc2VnZW5zZXR1cCA9IFRydWUKICAg
ICAgICAgaWYgbm90IGNhbGxfb3B0aW9uYWwoaXRlbS5vYmosICJzZXR1cCIpOgotICAgICAgICAg
ICAgIyBjYWxsIG1vZHVsZSBsZXZlbCBzZXR1cCBpZiB0aGVyZSBpcyBubyBvYmplY3QgbGV2ZWwg
b25lCisgICAgICAgICAgICAjIENhbGwgbW9kdWxlIGxldmVsIHNldHVwIGlmIHRoZXJlIGlzIG5v
IG9iamVjdCBsZXZlbCBvbmUuCiAgICAgICAgICAgICBjYWxsX29wdGlvbmFsKGl0ZW0ucGFyZW50
Lm9iaiwgInNldHVwIikKLSAgICAgICAgIyBYWFggdGhpcyBpbXBsaWVzIHdlIG9ubHkgY2FsbCB0
ZWFyZG93biB3aGVuIHNldHVwIHdvcmtlZAorICAgICAgICAjIFhYWCBUaGlzIGltcGxpZXMgd2Ug
b25seSBjYWxsIHRlYXJkb3duIHdoZW4gc2V0dXAgd29ya2VkLgogICAgICAgICBpdGVtLnNlc3Np
b24uX3NldHVwc3RhdGUuYWRkZmluYWxpemVyKChsYW1iZGE6IHRlYXJkb3duX25vc2UoaXRlbSkp
LCBpdGVtKQogCiAKQEAgLTQ0LDE5ICsxOSwxMSBAQCBkZWYgdGVhcmRvd25fbm9zZShpdGVtKToK
ICAgICBpZiBpc19wb3RlbnRpYWxfbm9zZXRlc3QoaXRlbSk6CiAgICAgICAgIGlmIG5vdCBjYWxs
X29wdGlvbmFsKGl0ZW0ub2JqLCAidGVhcmRvd24iKToKICAgICAgICAgICAgIGNhbGxfb3B0aW9u
YWwoaXRlbS5wYXJlbnQub2JqLCAidGVhcmRvd24iKQotICAgICAgICAjIGlmIGhhc2F0dHIoaXRl
bS5wYXJlbnQsICdfbm9zZWdlbnNldHVwJyk6Ci0gICAgICAgICMgICAgI2NhbGxfb3B0aW9uYWwo
aXRlbS5fbm9zZWdlbnNldHVwLCAndGVhcmRvd24nKQotICAgICAgICAjICAgIGRlbCBpdGVtLnBh
cmVudC5fbm9zZWdlbnNldHVwCi0KLQotZGVmIHB5dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNv
bGxlY3Rvcik6Ci0gICAgaWYgaXNpbnN0YW5jZShjb2xsZWN0b3IsIHB5dGhvbi5HZW5lcmF0b3Ip
OgotICAgICAgICBjYWxsX29wdGlvbmFsKGNvbGxlY3Rvci5vYmosICJzZXR1cCIpCiAKIAotZGVm
IGlzX3BvdGVudGlhbF9ub3NldGVzdChpdGVtKToKLSAgICAjIGV4dHJhIGNoZWNrIG5lZWRlZCBz
aW5jZSB3ZSBkbyBub3QgZG8gbm9zZSBzdHlsZSBzZXR1cC90ZWFyZG93bgotICAgICMgb24gZGly
ZWN0IHVuaXR0ZXN0IHN0eWxlIGNsYXNzZXMKK2RlZiBpc19wb3RlbnRpYWxfbm9zZXRlc3QoaXRl
bTogSXRlbSkgLT4gYm9vbDoKKyAgICAjIEV4dHJhIGNoZWNrIG5lZWRlZCBzaW5jZSB3ZSBkbyBu
b3QgZG8gbm9zZSBzdHlsZSBzZXR1cC90ZWFyZG93bgorICAgICMgb24gZGlyZWN0IHVuaXR0ZXN0
IHN0eWxlIGNsYXNzZXMuCiAgICAgcmV0dXJuIGlzaW5zdGFuY2UoaXRlbSwgcHl0aG9uLkZ1bmN0
aW9uKSBhbmQgbm90IGlzaW5zdGFuY2UoCiAgICAgICAgIGl0ZW0sIHVuaXR0ZXN0LlRlc3RDYXNl
RnVuY3Rpb24KICAgICApCkBAIC02Nyw2ICszNCw2IEBAIGRlZiBjYWxsX29wdGlvbmFsKG9iaiwg
bmFtZSk6CiAgICAgaXNmaXh0dXJlID0gaGFzYXR0cihtZXRob2QsICJfcHl0ZXN0Zml4dHVyZWZ1
bmN0aW9uIikKICAgICBpZiBtZXRob2QgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2ZpeHR1cmUgYW5k
IGNhbGxhYmxlKG1ldGhvZCk6CiAgICAgICAgICMgSWYgdGhlcmUncyBhbnkgcHJvYmxlbXMgYWxs
b3cgdGhlIGV4Y2VwdGlvbiB0byByYWlzZSByYXRoZXIgdGhhbgotICAgICAgICAjIHNpbGVudGx5
IGlnbm9yaW5nIHRoZW0KKyAgICAgICAgIyBzaWxlbnRseSBpZ25vcmluZyB0aGVtLgogICAgICAg
ICBtZXRob2QoKQogICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3Qvb3V0Y29tZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9vdXRjb21l
cy5weQppbmRleCA4YTM2NjJlMWIzZTcuLmEyZGRjM2ExZjFhZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3Qvb3V0Y29tZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3Qvb3V0Y29tZXMucHkKQEAgLTEsMjkgKzEsNDYgQEAKLSIiIgotZXhjZXB0aW9uIGNsYXNzZXMg
YW5kIGNvbnN0YW50cyBoYW5kbGluZyB0ZXN0IG91dGNvbWVzCi1hcyB3ZWxsIGFzIGZ1bmN0aW9u
cyBjcmVhdGluZyB0aGVtCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBweQorIiIiRXhjZXB0aW9uIGNs
YXNzZXMgYW5kIGNvbnN0YW50cyBoYW5kbGluZyB0ZXN0IG91dGNvbWVzIGFzIHdlbGwgYXMKK2Z1
bmN0aW9ucyBjcmVhdGluZyB0aGVtLiIiIgogaW1wb3J0IHN5cworZnJvbSB0eXBpbmcgaW1wb3J0
IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgY2Fz
dAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZh
cgogCitUWVBFX0NIRUNLSU5HID0gRmFsc2UgICMgQXZvaWQgY2lyY3VsYXIgaW1wb3J0IHRocm91
Z2ggY29tcGF0LgorCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBO
b1JldHVybgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlICAjIG5vcWE6IEY0MDEgKHVzZWQg
aW4gdHlwZSBzdHJpbmcpCisgICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgUHJvdG9j
b2wKK2Vsc2U6CisgICAgIyB0eXBpbmcuUHJvdG9jb2wgaXMgb25seSBhdmFpbGFibGUgc3RhcnRp
bmcgZnJvbSBQeXRob24gMy44LiBJdCBpcyBhbHNvCisgICAgIyBhdmFpbGFibGUgZnJvbSB0eXBp
bmdfZXh0ZW5zaW9ucywgYnV0IHdlIGRvbid0IHdhbnQgYSBydW50aW1lIGRlcGVuZGVuY3kKKyAg
ICAjIG9uIHRoYXQuIFNvIHVzZSBhIGR1bW15IHJ1bnRpbWUgaW1wbGVtZW50YXRpb24uCisgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKKworICAgIFByb3RvY29sID0gR2VuZXJpYwogCi1j
bGFzcyBPdXRjb21lRXhjZXB0aW9uKEJhc2VFeGNlcHRpb24pOgotICAgICIiIiBPdXRjb21lRXhj
ZXB0aW9uIGFuZCBpdHMgc3ViY2xhc3MgaW5zdGFuY2VzIGluZGljYXRlIGFuZAotICAgICAgICBj
b250YWluIGluZm8gYWJvdXQgdGVzdCBhbmQgY29sbGVjdGlvbiBvdXRjb21lcy4KLSAgICAiIiIK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2c9Tm9uZSwgcHl0cmFjZT1UcnVlKToKK2NsYXNz
IE91dGNvbWVFeGNlcHRpb24oQmFzZUV4Y2VwdGlvbik6CisgICAgIiIiT3V0Y29tZUV4Y2VwdGlv
biBhbmQgaXRzIHN1YmNsYXNzIGluc3RhbmNlcyBpbmRpY2F0ZSBhbmQgY29udGFpbiBpbmZvCisg
ICAgYWJvdXQgdGVzdCBhbmQgY29sbGVjdGlvbiBvdXRjb21lcy4iIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtc2c6IE9wdGlvbmFsW3N0cl0gPSBOb25lLCBweXRyYWNlOiBib29sID0gVHJ1
ZSkgLT4gTm9uZToKKyAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5j
ZShtc2csIHN0cik6CisgICAgICAgICAgICBlcnJvcl9tc2cgPSAoICAjIHR5cGU6IGlnbm9yZVt1
bnJlYWNoYWJsZV0KKyAgICAgICAgICAgICAgICAie30gZXhwZWN0ZWQgc3RyaW5nIGFzICdtc2cn
IHBhcmFtZXRlciwgZ290ICd7fScgaW5zdGVhZC5cbiIKKyAgICAgICAgICAgICAgICAiUGVyaGFw
cyB5b3UgbWVhbnQgdG8gdXNlIGEgbWFyaz8iCisgICAgICAgICAgICApCisgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoZXJyb3JfbXNnLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLCB0eXBl
KG1zZykuX19uYW1lX18pKQogICAgICAgICBCYXNlRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1z
ZykKICAgICAgICAgc2VsZi5tc2cgPSBtc2cKICAgICAgICAgc2VsZi5weXRyYWNlID0gcHl0cmFj
ZQogCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBz
dHI6CiAgICAgICAgIGlmIHNlbGYubXNnOgotICAgICAgICAgICAgdmFsID0gc2VsZi5tc2cKLSAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgdmFs
ID0gcHkuX2J1aWx0aW4uX3RvdGV4dCh2YWwsIGVycm9ycz0icmVwbGFjZSIpCi0gICAgICAgICAg
ICByZXR1cm4gdmFsCi0gICAgICAgIHJldHVybiAiPCVzIGluc3RhbmNlPiIgJSAoc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18sKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYubXNnCisgICAgICAgIHJl
dHVybiAiPHt9IGluc3RhbmNlPiIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQogCiAg
ICAgX19zdHJfXyA9IF9fcmVwcl9fCiAKQEAgLTM2LDExOSArNTMsMTcyIEBAIGNsYXNzIFNraXBw
ZWQoT3V0Y29tZUV4Y2VwdGlvbik6CiAgICAgIyBpbiBvcmRlciB0byBoYXZlIFNraXBwZWQgZXhj
ZXB0aW9uIHByaW50aW5nIHNob3J0ZXIvbmljZXIKICAgICBfX21vZHVsZV9fID0gImJ1aWx0aW5z
IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZz1Ob25lLCBweXRyYWNlPVRydWUsIGFsbG93
X21vZHVsZV9sZXZlbD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAor
ICAgICAgICBtc2c6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBweXRyYWNlOiBib29s
ID0gVHJ1ZSwKKyAgICAgICAgYWxsb3dfbW9kdWxlX2xldmVsOiBib29sID0gRmFsc2UsCisgICAg
KSAtPiBOb25lOgogICAgICAgICBPdXRjb21lRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZz1t
c2csIHB5dHJhY2U9cHl0cmFjZSkKICAgICAgICAgc2VsZi5hbGxvd19tb2R1bGVfbGV2ZWwgPSBh
bGxvd19tb2R1bGVfbGV2ZWwKIAogCiBjbGFzcyBGYWlsZWQoT3V0Y29tZUV4Y2VwdGlvbik6Ci0g
ICAgIiIiIHJhaXNlZCBmcm9tIGFuIGV4cGxpY2l0IGNhbGwgdG8gcHl0ZXN0LmZhaWwoKSAiIiIK
KyAgICAiIiJSYWlzZWQgZnJvbSBhbiBleHBsaWNpdCBjYWxsIHRvIHB5dGVzdC5mYWlsKCkuIiIi
CisKICAgICBfX21vZHVsZV9fID0gImJ1aWx0aW5zIgogCiAKLWNsYXNzIEV4aXQoS2V5Ym9hcmRJ
bnRlcnJ1cHQpOgotICAgICIiIiByYWlzZWQgZm9yIGltbWVkaWF0ZSBwcm9ncmFtIGV4aXRzIChu
byB0cmFjZWJhY2tzL3N1bW1hcmllcykiIiIKK2NsYXNzIEV4aXQoRXhjZXB0aW9uKToKKyAgICAi
IiJSYWlzZWQgZm9yIGltbWVkaWF0ZSBwcm9ncmFtIGV4aXRzIChubyB0cmFjZWJhY2tzL3N1bW1h
cmllcykuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnPSJ1bmtub3duIHJlYXNvbiIp
OgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbXNnOiBzdHIgPSAidW5rbm93biBy
ZWFzb24iLCByZXR1cm5jb2RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICkgLT4gTm9uZToK
ICAgICAgICAgc2VsZi5tc2cgPSBtc2cKLSAgICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQuX19pbml0
X18oc2VsZiwgbXNnKQorICAgICAgICBzZWxmLnJldHVybmNvZGUgPSByZXR1cm5jb2RlCisgICAg
ICAgIHN1cGVyKCkuX19pbml0X18obXNnKQogCiAKLSMgZXhwb3NlZCBoZWxwZXIgbWV0aG9kcwor
IyBFbGFib3JhdGUgaGFjayB0byB3b3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L215cHkvaXNzdWVzLzIwODcuCisjIElkZWFsbHkgd291bGQganVzdCBiZSBgZXhpdC5FeGNlcHRp
b24gPSBFeGl0YCBldGMuCiAKK19GID0gVHlwZVZhcigiX0YiLCBib3VuZD1DYWxsYWJsZVsuLi4s
IG9iamVjdF0pCitfRVQgPSBUeXBlVmFyKCJfRVQiLCBib3VuZD0iVHlwZVtCYXNlRXhjZXB0aW9u
XSIpCiAKLWRlZiBleGl0KG1zZyk6Ci0gICAgIiIiIGV4aXQgdGVzdGluZyBwcm9jZXNzIGFzIGlm
IEtleWJvYXJkSW50ZXJydXB0IHdhcyB0cmlnZ2VyZWQuICIiIgotICAgIF9fdHJhY2ViYWNraGlk
ZV9fID0gVHJ1ZQotICAgIHJhaXNlIEV4aXQobXNnKQogCitjbGFzcyBfV2l0aEV4Y2VwdGlvbihQ
cm90b2NvbFtfRiwgX0VUXSk6CisgICAgRXhjZXB0aW9uID0gTm9uZSAgIyB0eXBlOiBfRVQKKyAg
ICBfX2NhbGxfXyA9IE5vbmUgICMgdHlwZTogX0YKKworCitkZWYgX3dpdGhfZXhjZXB0aW9uKGV4
Y2VwdGlvbl90eXBlOiBfRVQpIC0+IENhbGxhYmxlW1tfRl0sIF9XaXRoRXhjZXB0aW9uW19GLCBf
RVRdXToKKyAgICBkZWYgZGVjb3JhdGUoZnVuYzogX0YpIC0+IF9XaXRoRXhjZXB0aW9uW19GLCBf
RVRdOgorICAgICAgICBmdW5jX3dpdGhfZXhjZXB0aW9uID0gY2FzdChfV2l0aEV4Y2VwdGlvbltf
RiwgX0VUXSwgZnVuYykKKyAgICAgICAgZnVuY193aXRoX2V4Y2VwdGlvbi5FeGNlcHRpb24gPSBl
eGNlcHRpb25fdHlwZQorICAgICAgICByZXR1cm4gZnVuY193aXRoX2V4Y2VwdGlvbgorCisgICAg
cmV0dXJuIGRlY29yYXRlCiAKLWV4aXQuRXhjZXB0aW9uID0gRXhpdAogCisjIEV4cG9zZWQgaGVs
cGVyIG1ldGhvZHMuCiAKLWRlZiBza2lwKG1zZz0iIiwgKiprd2FyZ3MpOgotICAgICIiIiBza2lw
IGFuIGV4ZWN1dGluZyB0ZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuICBOb3RlOiBpdCdzIHVz
dWFsbHkKLSAgICBiZXR0ZXIgdG8gdXNlIHRoZSBweXRlc3QubWFyay5za2lwaWYgbWFya2VyIHRv
IGRlY2xhcmUgYSB0ZXN0IHRvIGJlCi0gICAgc2tpcHBlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlv
bnMgbGlrZSBtaXNtYXRjaGluZyBwbGF0Zm9ybXMgb3IKLSAgICBkZXBlbmRlbmNpZXMuICBTZWUg
dGhlIHB5dGVzdF9za2lwcGluZyBwbHVnaW4gZm9yIGRldGFpbHMuCiAKLSAgICA6a3dhcmcgYm9v
bCBhbGxvd19tb2R1bGVfbGV2ZWw6IGFsbG93cyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBh
dAotICAgICAgICBtb2R1bGUgbGV2ZWwsIHNraXBwaW5nIHRoZSByZXN0IG9mIHRoZSBtb2R1bGUu
IERlZmF1bHQgdG8gRmFsc2UuCitAX3dpdGhfZXhjZXB0aW9uKEV4aXQpCitkZWYgZXhpdChtc2c6
IHN0ciwgcmV0dXJuY29kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+ICJOb1JldHVybiI6Cisg
ICAgIiIiRXhpdCB0ZXN0aW5nIHByb2Nlc3MuCisKKyAgICA6cGFyYW0gc3RyIG1zZzogTWVzc2Fn
ZSB0byBkaXNwbGF5IHVwb24gZXhpdC4KKyAgICA6cGFyYW0gaW50IHJldHVybmNvZGU6IFJldHVy
biBjb2RlIHRvIGJlIHVzZWQgd2hlbiBleGl0aW5nIHB5dGVzdC4KICAgICAiIiIKICAgICBfX3Ry
YWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICBhbGxvd19tb2R1bGVfbGV2ZWwgPSBrd2FyZ3MucG9w
KCJhbGxvd19tb2R1bGVfbGV2ZWwiLCBGYWxzZSkKLSAgICBpZiBrd2FyZ3M6Ci0gICAgICAgIGtl
eXMgPSBbayBmb3IgayBpbiBrd2FyZ3Mua2V5cygpXQotICAgICAgICByYWlzZSBUeXBlRXJyb3Io
InVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudHM6IHt9Ii5mb3JtYXQoa2V5cykpCi0gICAgcmFp
c2UgU2tpcHBlZChtc2c9bXNnLCBhbGxvd19tb2R1bGVfbGV2ZWw9YWxsb3dfbW9kdWxlX2xldmVs
KQorICAgIHJhaXNlIEV4aXQobXNnLCByZXR1cm5jb2RlKQogCiAKLXNraXAuRXhjZXB0aW9uID0g
U2tpcHBlZAorQF93aXRoX2V4Y2VwdGlvbihTa2lwcGVkKQorZGVmIHNraXAobXNnOiBzdHIgPSAi
IiwgKiwgYWxsb3dfbW9kdWxlX2xldmVsOiBib29sID0gRmFsc2UpIC0+ICJOb1JldHVybiI6Cisg
ICAgIiIiU2tpcCBhbiBleGVjdXRpbmcgdGVzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLgogCisg
ICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZHVyaW5nIHRlc3RpbmcgKHNl
dHVwLCBjYWxsIG9yIHRlYXJkb3duKSBvcgorICAgIGR1cmluZyBjb2xsZWN0aW9uIGJ5IHVzaW5n
IHRoZSBgYGFsbG93X21vZHVsZV9sZXZlbGBgIGZsYWcuICBUaGlzIGZ1bmN0aW9uIGNhbgorICAg
IGJlIGNhbGxlZCBpbiBkb2N0ZXN0cyBhcyB3ZWxsLgogCi1kZWYgZmFpbChtc2c9IiIsIHB5dHJh
Y2U9VHJ1ZSk6Ci0gICAgIiIiIGV4cGxpY2l0bHkgZmFpbCBhIGN1cnJlbnRseS1leGVjdXRpbmcg
dGVzdCB3aXRoIHRoZSBnaXZlbiBNZXNzYWdlLgorICAgIDpwYXJhbSBib29sIGFsbG93X21vZHVs
ZV9sZXZlbDoKKyAgICAgICAgQWxsb3dzIHRoaXMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGF0IG1v
ZHVsZSBsZXZlbCwgc2tpcHBpbmcgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIG1vZHVsZS4gRGVm
YXVsdHMgdG8gRmFsc2UuCiAKLSAgICA6YXJnIHB5dHJhY2U6IGlmIGZhbHNlIHRoZSBtc2cgcmVw
cmVzZW50cyB0aGUgZnVsbCBmYWlsdXJlIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICBh
bmQgbm8gcHl0aG9uIHRyYWNlYmFjayB3aWxsIGJlIHJlcG9ydGVkLgorICAgIC4uIG5vdGU6Ogor
ICAgICAgICBJdCBpcyBiZXR0ZXIgdG8gdXNlIHRoZSA6cmVmOmBweXRlc3QubWFyay5za2lwaWYg
cmVmYCBtYXJrZXIgd2hlbgorICAgICAgICBwb3NzaWJsZSB0byBkZWNsYXJlIGEgdGVzdCB0byBi
ZSBza2lwcGVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucworICAgICAgICBsaWtlIG1pc21hdGNo
aW5nIHBsYXRmb3JtcyBvciBkZXBlbmRlbmNpZXMuCisgICAgICAgIFNpbWlsYXJseSwgdXNlIHRo
ZSBgYCMgZG9jdGVzdDogK1NLSVBgYCBkaXJlY3RpdmUgKHNlZSBgZG9jdGVzdC5TS0lQCisgICAg
ICAgIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvZG9jdGVzdC5odG1sI2RvY3Rl
c3QuU0tJUD5gXykKKyAgICAgICAgdG8gc2tpcCBhIGRvY3Rlc3Qgc3RhdGljYWxseS4KKyAgICAi
IiIKKyAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICByYWlzZSBTa2lwcGVkKG1zZz1t
c2csIGFsbG93X21vZHVsZV9sZXZlbD1hbGxvd19tb2R1bGVfbGV2ZWwpCisKKworQF93aXRoX2V4
Y2VwdGlvbihGYWlsZWQpCitkZWYgZmFpbChtc2c6IHN0ciA9ICIiLCBweXRyYWNlOiBib29sID0g
VHJ1ZSkgLT4gIk5vUmV0dXJuIjoKKyAgICAiIiJFeHBsaWNpdGx5IGZhaWwgYW4gZXhlY3V0aW5n
IHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS4KKworICAgIDpwYXJhbSBzdHIgbXNnOgorICAg
ICAgICBUaGUgbWVzc2FnZSB0byBzaG93IHRoZSB1c2VyIGFzIHJlYXNvbiBmb3IgdGhlIGZhaWx1
cmUuCisgICAgOnBhcmFtIGJvb2wgcHl0cmFjZToKKyAgICAgICAgSWYgRmFsc2UsIG1zZyByZXBy
ZXNlbnRzIHRoZSBmdWxsIGZhaWx1cmUgaW5mb3JtYXRpb24gYW5kIG5vCisgICAgICAgIHB5dGhv
biB0cmFjZWJhY2sgd2lsbCBiZSByZXBvcnRlZC4KICAgICAiIiIKICAgICBfX3RyYWNlYmFja2hp
ZGVfXyA9IFRydWUKICAgICByYWlzZSBGYWlsZWQobXNnPW1zZywgcHl0cmFjZT1weXRyYWNlKQog
CiAKLWZhaWwuRXhjZXB0aW9uID0gRmFpbGVkCitjbGFzcyBYRmFpbGVkKEZhaWxlZCk6CisgICAg
IiIiUmFpc2VkIGZyb20gYW4gZXhwbGljaXQgY2FsbCB0byBweXRlc3QueGZhaWwoKS4iIiIKIAog
Ci1jbGFzcyBYRmFpbGVkKGZhaWwuRXhjZXB0aW9uKToKLSAgICAiIiIgcmFpc2VkIGZyb20gYW4g
ZXhwbGljaXQgY2FsbCB0byBweXRlc3QueGZhaWwoKSAiIiIKK0Bfd2l0aF9leGNlcHRpb24oWEZh
aWxlZCkKK2RlZiB4ZmFpbChyZWFzb246IHN0ciA9ICIiKSAtPiAiTm9SZXR1cm4iOgorICAgICIi
IkltcGVyYXRpdmVseSB4ZmFpbCBhbiBleGVjdXRpbmcgdGVzdCBvciBzZXR1cCBmdW5jdGlvbiB3
aXRoIHRoZSBnaXZlbiByZWFzb24uCiAKKyAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxs
ZWQgb25seSBkdXJpbmcgdGVzdGluZyAoc2V0dXAsIGNhbGwgb3IgdGVhcmRvd24pLgogCi1kZWYg
eGZhaWwocmVhc29uPSIiKToKLSAgICAiIiIgeGZhaWwgYW4gZXhlY3V0aW5nIHRlc3Qgb3Igc2V0
dXAgZnVuY3Rpb25zIHdpdGggdGhlIGdpdmVuIHJlYXNvbi4iIiIKKyAgICAuLiBub3RlOjoKKyAg
ICAgICAgSXQgaXMgYmV0dGVyIHRvIHVzZSB0aGUgOnJlZjpgcHl0ZXN0Lm1hcmsueGZhaWwgcmVm
YCBtYXJrZXIgd2hlbgorICAgICAgICBwb3NzaWJsZSB0byBkZWNsYXJlIGEgdGVzdCB0byBiZSB4
ZmFpbGVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucworICAgICAgICBsaWtlIGtub3duIGJ1Z3Mg
b3IgbWlzc2luZyBmZWF0dXJlcy4KKyAgICAiIiIKICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKICAgICByYWlzZSBYRmFpbGVkKHJlYXNvbikKIAogCi14ZmFpbC5FeGNlcHRpb24gPSBYRmFp
bGVkCitkZWYgaW1wb3J0b3Jza2lwKAorICAgIG1vZG5hbWU6IHN0ciwgbWludmVyc2lvbjogT3B0
aW9uYWxbc3RyXSA9IE5vbmUsIHJlYXNvbjogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKykgLT4gQW55
OgorICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGBgbW9kbmFt
ZWBgLCBvciBza2lwIHRoZQorICAgIGN1cnJlbnQgdGVzdCBpZiB0aGUgbW9kdWxlIGNhbm5vdCBi
ZSBpbXBvcnRlZC4KKworICAgIDpwYXJhbSBzdHIgbW9kbmFtZToKKyAgICAgICAgVGhlIG5hbWUg
b2YgdGhlIG1vZHVsZSB0byBpbXBvcnQuCisgICAgOnBhcmFtIHN0ciBtaW52ZXJzaW9uOgorICAg
ICAgICBJZiBnaXZlbiwgdGhlIGltcG9ydGVkIG1vZHVsZSdzIGBgX192ZXJzaW9uX19gYCBhdHRy
aWJ1dGUgbXVzdCBiZSBhdAorICAgICAgICBsZWFzdCB0aGlzIG1pbmltYWwgdmVyc2lvbiwgb3Ro
ZXJ3aXNlIHRoZSB0ZXN0IGlzIHN0aWxsIHNraXBwZWQuCisgICAgOnBhcmFtIHN0ciByZWFzb246
CisgICAgICAgIElmIGdpdmVuLCB0aGlzIHJlYXNvbiBpcyBzaG93biBhcyB0aGUgbWVzc2FnZSB3
aGVuIHRoZSBtb2R1bGUgY2Fubm90CisgICAgICAgIGJlIGltcG9ydGVkLgogCisgICAgOnJldHVy
bnM6CisgICAgICAgIFRoZSBpbXBvcnRlZCBtb2R1bGUuIFRoaXMgc2hvdWxkIGJlIGFzc2lnbmVk
IHRvIGl0cyBjYW5vbmljYWwgbmFtZS4KIAotZGVmIGltcG9ydG9yc2tpcChtb2RuYW1lLCBtaW52
ZXJzaW9uPU5vbmUpOgotICAgICIiIiByZXR1cm4gaW1wb3J0ZWQgbW9kdWxlIGlmIGl0IGhhcyBh
dCBsZWFzdCAibWludmVyc2lvbiIgYXMgaXRzCi0gICAgX192ZXJzaW9uX18gYXR0cmlidXRlLiAg
SWYgbm8gbWludmVyc2lvbiBpcyBzcGVjaWZpZWQgdGhlIGEgc2tpcAotICAgIGlzIG9ubHkgdHJp
Z2dlcmVkIGlmIHRoZSBtb2R1bGUgY2FuIG5vdCBiZSBpbXBvcnRlZC4KKyAgICBFeGFtcGxlOjoK
KworICAgICAgICBkb2N1dGlscyA9IHB5dGVzdC5pbXBvcnRvcnNraXAoImRvY3V0aWxzIikKICAg
ICAiIiIKICAgICBpbXBvcnQgd2FybmluZ3MKIAogICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1
ZQogICAgIGNvbXBpbGUobW9kbmFtZSwgIiIsICJldmFsIikgICMgdG8gY2F0Y2ggc3ludGF4ZXJy
b3JzCi0gICAgc2hvdWxkX3NraXAgPSBGYWxzZQogCiAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93
YXJuaW5ncygpOgotICAgICAgICAjIG1ha2Ugc3VyZSB0byBpZ25vcmUgSW1wb3J0V2FybmluZ3Mg
dGhhdCBtaWdodCBoYXBwZW4gYmVjYXVzZQorICAgICAgICAjIE1ha2Ugc3VyZSB0byBpZ25vcmUg
SW1wb3J0V2FybmluZ3MgdGhhdCBtaWdodCBoYXBwZW4gYmVjYXVzZQogICAgICAgICAjIG9mIGV4
aXN0aW5nIGRpcmVjdG9yaWVzIHdpdGggdGhlIHNhbWUgbmFtZSB3ZSdyZSB0cnlpbmcgdG8KLSAg
ICAgICAgIyBpbXBvcnQgYnV0IHdpdGhvdXQgYSBfX2luaXRfXy5weSBmaWxlCisgICAgICAgICMg
aW1wb3J0IGJ1dCB3aXRob3V0IGEgX19pbml0X18ucHkgZmlsZS4KICAgICAgICAgd2FybmluZ3Mu
c2ltcGxlZmlsdGVyKCJpZ25vcmUiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfX2ltcG9y
dF9fKG1vZG5hbWUpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICMg
RG8gbm90IHJhaXNlIGNoYWluZWQgZXhjZXB0aW9uIGhlcmUoIzE0ODUpCi0gICAgICAgICAgICBz
aG91bGRfc2tpcCA9IFRydWUKLSAgICBpZiBzaG91bGRfc2tpcDoKLSAgICAgICAgcmFpc2UgU2tp
cHBlZCgiY291bGQgbm90IGltcG9ydCAlciIgJSAobW9kbmFtZSwpLCBhbGxvd19tb2R1bGVfbGV2
ZWw9VHJ1ZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAg
IGlmIHJlYXNvbiBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlYXNvbiA9ICJjb3VsZCBub3Qg
aW1wb3J0IHshcn06IHt9Ii5mb3JtYXQobW9kbmFtZSwgZXhjKQorICAgICAgICAgICAgcmFpc2Ug
U2tpcHBlZChyZWFzb24sIGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKSBmcm9tIE5vbmUKICAgICBt
b2QgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQogICAgIGlmIG1pbnZlcnNpb24gaXMgTm9uZToKICAg
ICAgICAgcmV0dXJuIG1vZAogICAgIHZlcmF0dHIgPSBnZXRhdHRyKG1vZCwgIl9fdmVyc2lvbl9f
IiwgTm9uZSkKICAgICBpZiBtaW52ZXJzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBmcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0IHBhcnNlX3ZlcnNpb24gYXMgcHYK
LSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmFpc2UgU2tpcHBlZCgK
LSAgICAgICAgICAgICAgICAid2UgaGF2ZSBhIHJlcXVpcmVkIHZlcnNpb24gZm9yICVyIGJ1dCBj
YW4gbm90IGltcG9ydCAiCi0gICAgICAgICAgICAgICAgInBrZ19yZXNvdXJjZXMgdG8gcGFyc2Ug
dmVyc2lvbiBzdHJpbmdzLiIgJSAobW9kbmFtZSwpLAotICAgICAgICAgICAgICAgIGFsbG93X21v
ZHVsZV9sZXZlbD1UcnVlLAotICAgICAgICAgICAgKQotICAgICAgICBpZiB2ZXJhdHRyIGlzIE5v
bmUgb3IgcHYodmVyYXR0cikgPCBwdihtaW52ZXJzaW9uKToKKyAgICAgICAgIyBJbXBvcnRlZCBs
YXppbHkgdG8gaW1wcm92ZSBzdGFydC11cCB0aW1lLgorICAgICAgICBmcm9tIHBhY2thZ2luZy52
ZXJzaW9uIGltcG9ydCBWZXJzaW9uCisKKyAgICAgICAgaWYgdmVyYXR0ciBpcyBOb25lIG9yIFZl
cnNpb24odmVyYXR0cikgPCBWZXJzaW9uKG1pbnZlcnNpb24pOgogICAgICAgICAgICAgcmFpc2Ug
U2tpcHBlZCgKICAgICAgICAgICAgICAgICAibW9kdWxlICVyIGhhcyBfX3ZlcnNpb25fXyAlciwg
cmVxdWlyZWQgaXM6ICVyIgogICAgICAgICAgICAgICAgICUgKG1vZG5hbWUsIHZlcmF0dHIsIG1p
bnZlcnNpb24pLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGFzdGViaW4u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9wYXN0ZWJpbi5weQppbmRleCA2YWYyMDJkMWYw
YTkuLjA1NDZkMjM3NzYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGFz
dGViaW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGFzdGViaW4ucHkKQEAgLTEs
MTMgKzEsMjEgQEAKLSIiIiBzdWJtaXQgZmFpbHVyZSBvciB0ZXN0IHNlc3Npb24gaW5mb3JtYXRp
b24gdG8gYSBwYXN0ZWJpbiBzZXJ2aWNlLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyIiIlN1Ym1pdCBmYWlsdXJl
IG9yIHRlc3Qgc2Vzc2lvbiBpbmZvcm1hdGlvbiB0byBhIHBhc3RlYmluIHNlcnZpY2UuIiIiCitp
bXBvcnQgdGVtcGZpbGUKK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitmcm9tIHR5cGluZyBpbXBv
cnQgSU8KK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogCiBpbXBvcnQgcHl0ZXN0Ci1pbXBvcnQg
c2l4Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IENvbmZpZworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgY3JlYXRlX3Rlcm1pbmFsX3dy
aXRlcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGltcG9ydCBQYXJzZXIKK2Zyb20g
X3B5dGVzdC5zdG9yZSBpbXBvcnQgU3RvcmVLZXkKK2Zyb20gX3B5dGVzdC50ZXJtaW5hbCBpbXBv
cnQgVGVybWluYWxSZXBvcnRlcgorCisKK3Bhc3RlYmluZmlsZV9rZXkgPSBTdG9yZUtleVtJT1ti
eXRlc11dKCkKIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9h
ZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0
Z3JvdXAoInRlcm1pbmFsIHJlcG9ydGluZyIpCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKICAgICAg
ICAgIi0tcGFzdGViaW4iLApAQCAtMjEsODkgKzI5LDgyIEBAIGRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcik6CiAKIAogQHB5dGVzdC5ob29raW1wbCh0cnlsYXN0PVRydWUpCi1kZWYgcHl0ZXN0
X2NvbmZpZ3VyZShjb25maWcpOgorZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcp
IC0+IE5vbmU6CiAgICAgaWYgY29uZmlnLm9wdGlvbi5wYXN0ZWJpbiA9PSAiYWxsIjoKICAgICAg
ICAgdHIgPSBjb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIi
KQotICAgICAgICAjIGlmIG5vIHRlcm1pbmFsIHJlcG9ydGVyIHBsdWdpbiBpcyBwcmVzZW50LCBu
b3RoaW5nIHdlIGNhbiBkbyBoZXJlOwotICAgICAgICAjIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRo
aXMgZnVuY3Rpb24gZXhlY3V0ZXMgaW4gYSBzbGF2ZSBub2RlCi0gICAgICAgICMgd2hlbiB1c2lu
ZyBweXRlc3QteGRpc3QsIGZvciBleGFtcGxlCisgICAgICAgICMgSWYgbm8gdGVybWluYWwgcmVw
b3J0ZXIgcGx1Z2luIGlzIHByZXNlbnQsIG5vdGhpbmcgd2UgY2FuIGRvIGhlcmU7CisgICAgICAg
ICMgdGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhpcyBmdW5jdGlvbiBleGVjdXRlcyBpbiBhIHdvcmtl
ciBub2RlCisgICAgICAgICMgd2hlbiB1c2luZyBweXRlc3QteGRpc3QsIGZvciBleGFtcGxlLgog
ICAgICAgICBpZiB0ciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgcGFzdGViaW4gZmlsZSB3
aWxsIGJlIHV0Zi04IGVuY29kZWQgYmluYXJ5IGZpbGUKLSAgICAgICAgICAgIGNvbmZpZy5fcGFz
dGViaW5maWxlID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgidytiIikKKyAgICAgICAgICAgICMg
cGFzdGViaW4gZmlsZSB3aWxsIGJlIFVURi04IGVuY29kZWQgYmluYXJ5IGZpbGUuCisgICAgICAg
ICAgICBjb25maWcuX3N0b3JlW3Bhc3RlYmluZmlsZV9rZXldID0gdGVtcGZpbGUuVGVtcG9yYXJ5
RmlsZSgidytiIikKICAgICAgICAgICAgIG9sZHdyaXRlID0gdHIuX3R3LndyaXRlCiAKICAgICAg
ICAgICAgIGRlZiB0ZWVfd3JpdGUocywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIG9sZHdy
aXRlKHMsICoqa3dhcmdzKQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uocywgc2l4LnRl
eHRfdHlwZSk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAg
ICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoInV0Zi04IikKLSAgICAgICAgICAgICAgICBjb25m
aWcuX3Bhc3RlYmluZmlsZS53cml0ZShzKQorICAgICAgICAgICAgICAgIGNvbmZpZy5fc3RvcmVb
cGFzdGViaW5maWxlX2tleV0ud3JpdGUocykKIAogICAgICAgICAgICAgdHIuX3R3LndyaXRlID0g
dGVlX3dyaXRlCiAKIAotZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgotICAgIGlmIGhh
c2F0dHIoY29uZmlnLCAiX3Bhc3RlYmluZmlsZSIpOgotICAgICAgICAjIGdldCB0ZXJtaW5hbCBj
b250ZW50cyBhbmQgZGVsZXRlIGZpbGUKLSAgICAgICAgY29uZmlnLl9wYXN0ZWJpbmZpbGUuc2Vl
aygwKQotICAgICAgICBzZXNzaW9ubG9nID0gY29uZmlnLl9wYXN0ZWJpbmZpbGUucmVhZCgpCi0g
ICAgICAgIGNvbmZpZy5fcGFzdGViaW5maWxlLmNsb3NlKCkKLSAgICAgICAgZGVsIGNvbmZpZy5f
cGFzdGViaW5maWxlCi0gICAgICAgICMgdW5kbyBvdXIgcGF0Y2hpbmcgaW4gdGhlIHRlcm1pbmFs
IHJlcG9ydGVyCitkZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25l
OgorICAgIGlmIHBhc3RlYmluZmlsZV9rZXkgaW4gY29uZmlnLl9zdG9yZToKKyAgICAgICAgcGFz
dGViaW5maWxlID0gY29uZmlnLl9zdG9yZVtwYXN0ZWJpbmZpbGVfa2V5XQorICAgICAgICAjIEdl
dCB0ZXJtaW5hbCBjb250ZW50cyBhbmQgZGVsZXRlIGZpbGUuCisgICAgICAgIHBhc3RlYmluZmls
ZS5zZWVrKDApCisgICAgICAgIHNlc3Npb25sb2cgPSBwYXN0ZWJpbmZpbGUucmVhZCgpCisgICAg
ICAgIHBhc3RlYmluZmlsZS5jbG9zZSgpCisgICAgICAgIGRlbCBjb25maWcuX3N0b3JlW3Bhc3Rl
YmluZmlsZV9rZXldCisgICAgICAgICMgVW5kbyBvdXIgcGF0Y2hpbmcgaW4gdGhlIHRlcm1pbmFs
IHJlcG9ydGVyLgogICAgICAgICB0ciA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigi
dGVybWluYWxyZXBvcnRlciIpCiAgICAgICAgIGRlbCB0ci5fdHcuX19kaWN0X19bIndyaXRlIl0K
LSAgICAgICAgIyB3cml0ZSBzdW1tYXJ5CisgICAgICAgICMgV3JpdGUgc3VtbWFyeS4KICAgICAg
ICAgdHIud3JpdGVfc2VwKCI9IiwgIlNlbmRpbmcgaW5mb3JtYXRpb24gdG8gUGFzdGUgU2Vydmlj
ZSIpCiAgICAgICAgIHBhc3RlYmludXJsID0gY3JlYXRlX25ld19wYXN0ZShzZXNzaW9ubG9nKQog
ICAgICAgICB0ci53cml0ZV9saW5lKCJwYXN0ZWJpbiBzZXNzaW9uLWxvZzogJXNcbiIgJSBwYXN0
ZWJpbnVybCkKIAogCi1kZWYgY3JlYXRlX25ld19wYXN0ZShjb250ZW50cyk6Ci0gICAgIiIiCi0g
ICAgQ3JlYXRlcyBhIG5ldyBwYXN0ZSB1c2luZyBicGFzdGUubmV0IHNlcnZpY2UuCitkZWYgY3Jl
YXRlX25ld19wYXN0ZShjb250ZW50czogVW5pb25bc3RyLCBieXRlc10pIC0+IHN0cjoKKyAgICAi
IiJDcmVhdGUgYSBuZXcgcGFzdGUgdXNpbmcgdGhlIGJwYXN0ZS5uZXQgc2VydmljZS4KIAotICAg
IDpjb250ZW50czogcGFzdGUgY29udGVudHMgYXMgdXRmLTggZW5jb2RlZCBieXRlcwotICAgIDpy
ZXR1cm5zOiB1cmwgdG8gdGhlIHBhc3RlZCBjb250ZW50cworICAgIDpjb250ZW50czogUGFzdGUg
Y29udGVudHMgc3RyaW5nLgorICAgIDpyZXR1cm5zOiBVUkwgdG8gdGhlIHBhc3RlZCBjb250ZW50
cywgb3IgYW4gZXJyb3IgbWVzc2FnZS4KICAgICAiIiIKICAgICBpbXBvcnQgcmUKKyAgICBmcm9t
IHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1w
b3J0IHVybGVuY29kZQogCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICAg
ICAgZnJvbSB1cmxsaWIgaW1wb3J0IHVybG9wZW4sIHVybGVuY29kZQotICAgIGVsc2U6Ci0gICAg
ICAgIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KLSAgICAgICAgZnJvbSB1cmxs
aWIucGFyc2UgaW1wb3J0IHVybGVuY29kZQotCi0gICAgcGFyYW1zID0gewotICAgICAgICAiY29k
ZSI6IGNvbnRlbnRzLAotICAgICAgICAibGV4ZXIiOiAicHl0aG9uMyIgaWYgc3lzLnZlcnNpb25f
aW5mb1swXSA9PSAzIGVsc2UgInB5dGhvbiIsCi0gICAgICAgICJleHBpcnkiOiAiMXdlZWsiLAot
ICAgIH0KKyAgICBwYXJhbXMgPSB7ImNvZGUiOiBjb250ZW50cywgImxleGVyIjogInRleHQiLCAi
ZXhwaXJ5IjogIjF3ZWVrIn0KICAgICB1cmwgPSAiaHR0cHM6Ly9icGFzdGUubmV0IgotICAgIHJl
c3BvbnNlID0gdXJsb3Blbih1cmwsIGRhdGE9dXJsZW5jb2RlKHBhcmFtcykuZW5jb2RlKCJhc2Np
aSIpKS5yZWFkKCkKLSAgICBtID0gcmUuc2VhcmNoKHInaHJlZj0iL3Jhdy8oXHcrKSInLCByZXNw
b25zZS5kZWNvZGUoInV0Zi04IikpCisgICAgdHJ5OgorICAgICAgICByZXNwb25zZSA9ICgKKyAg
ICAgICAgICAgIHVybG9wZW4odXJsLCBkYXRhPXVybGVuY29kZShwYXJhbXMpLmVuY29kZSgiYXNj
aWkiKSkucmVhZCgpLmRlY29kZSgidXRmLTgiKQorICAgICAgICApICAjIHR5cGU6IHN0cgorICAg
IGV4Y2VwdCBPU0Vycm9yIGFzIGV4Y19pbmZvOiAgIyB1cmxsaWIgZXJyb3JzCisgICAgICAgIHJl
dHVybiAiYmFkIHJlc3BvbnNlOiAlcyIgJSBleGNfaW5mbworICAgIG0gPSByZS5zZWFyY2gocido
cmVmPSIvcmF3LyhcdyspIicsIHJlc3BvbnNlKQogICAgIGlmIG06Ci0gICAgICAgIHJldHVybiAi
JXMvc2hvdy8lcyIgJSAodXJsLCBtLmdyb3VwKDEpKQorICAgICAgICByZXR1cm4gInt9L3Nob3cv
e30iLmZvcm1hdCh1cmwsIG0uZ3JvdXAoMSkpCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuICJi
YWQgcmVzcG9uc2U6ICIgKyByZXNwb25zZQotCisgICAgICAgIHJldHVybiAiYmFkIHJlc3BvbnNl
OiBpbnZhbGlkIGZvcm1hdCAoJyIgKyByZXNwb25zZSArICInKSIKIAotZGVmIHB5dGVzdF90ZXJt
aW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXIpOgotICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZp
ZwogCitkZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVybWluYWxyZXBvcnRlcjogVGVybWlu
YWxSZXBvcnRlcikgLT4gTm9uZToKICAgICBpZiB0ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZy5vcHRp
b24ucGFzdGViaW4gIT0gImZhaWxlZCI6CiAgICAgICAgIHJldHVybgotICAgIHRyID0gdGVybWlu
YWxyZXBvcnRlcgotICAgIGlmICJmYWlsZWQiIGluIHRyLnN0YXRzOgorICAgIGlmICJmYWlsZWQi
IGluIHRlcm1pbmFscmVwb3J0ZXIuc3RhdHM6CiAgICAgICAgIHRlcm1pbmFscmVwb3J0ZXIud3Jp
dGVfc2VwKCI9IiwgIlNlbmRpbmcgaW5mb3JtYXRpb24gdG8gUGFzdGUgU2VydmljZSIpCi0gICAg
ICAgIGZvciByZXAgaW4gdGVybWluYWxyZXBvcnRlci5zdGF0cy5nZXQoImZhaWxlZCIpOgorICAg
ICAgICBmb3IgcmVwIGluIHRlcm1pbmFscmVwb3J0ZXIuc3RhdHNbImZhaWxlZCJdOgogICAgICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG1zZyA9IHJlcC5sb25ncmVwci5yZXBydHJhY2Vi
YWNrLnJlcHJlbnRyaWVzWy0xXS5yZXByZmlsZWxvYwogICAgICAgICAgICAgZXhjZXB0IEF0dHJp
YnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIG1zZyA9IHRyLl9nZXRmYWlsdXJlaGVhZGxpbmUo
cmVwKQotICAgICAgICAgICAgdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWluYWxfd3Jp
dGVyKAotICAgICAgICAgICAgICAgIHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLCBzdHJpbmdpbz1U
cnVlCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgbXNnID0gdGVybWluYWxyZXBvcnRl
ci5fZ2V0ZmFpbHVyZWhlYWRsaW5lKHJlcCkKKyAgICAgICAgICAgIGZpbGUgPSBTdHJpbmdJTygp
CisgICAgICAgICAgICB0dyA9IGNyZWF0ZV90ZXJtaW5hbF93cml0ZXIodGVybWluYWxyZXBvcnRl
ci5jb25maWcsIGZpbGUpCiAgICAgICAgICAgICByZXAudG90ZXJtaW5hbCh0dykKLSAgICAgICAg
ICAgIHMgPSB0dy5zdHJpbmdpby5nZXR2YWx1ZSgpCisgICAgICAgICAgICBzID0gZmlsZS5nZXR2
YWx1ZSgpCiAgICAgICAgICAgICBhc3NlcnQgbGVuKHMpCiAgICAgICAgICAgICBwYXN0ZWJpbnVy
bCA9IGNyZWF0ZV9uZXdfcGFzdGUocykKLSAgICAgICAgICAgIHRyLndyaXRlX2xpbmUoIiVzIC0t
PiAlcyIgJSAobXNnLCBwYXN0ZWJpbnVybCkpCisgICAgICAgICAgICB0ZXJtaW5hbHJlcG9ydGVy
LndyaXRlX2xpbmUoInt9IC0tPiB7fSIuZm9ybWF0KG1zZywgcGFzdGViaW51cmwpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGF0aGxpYi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L3BhdGhsaWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4zNTUyODEwMzlmZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9wYXRobGliLnB5CkBAIC0wLDAgKzEsNjExIEBACitpbXBvcnQgYXRleGl0CitpbXBvcnQg
Y29udGV4dGxpYgoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAoraW1wb3J0
IGl0ZXJ0b29scworaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQg
dXVpZAoraW1wb3J0IHdhcm5pbmdzCitmcm9tIGVudW0gaW1wb3J0IEVudW0KK2Zyb20gZnVuY3Rv
b2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIG9zLnBhdGggaW1wb3J0IGV4cGFuZHVzZXIKK2Zyb20g
b3MucGF0aCBpbXBvcnQgZXhwYW5kdmFycworZnJvbSBvcy5wYXRoIGltcG9ydCBpc2FicworZnJv
bSBvcy5wYXRoIGltcG9ydCBzZXAKK2Zyb20gcG9zaXhwYXRoIGltcG9ydCBzZXAgYXMgcG9zaXhf
c2VwCitmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2Fs
bGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEl0
ZXJhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBT
ZXQKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24K
KworaW1wb3J0IHB5CisKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGFzc2VydF9uZXZlcgor
ZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBza2lwCitmcm9tIF9weXRlc3Qud2FybmluZ190
eXBlcyBpbXBvcnQgUHl0ZXN0V2FybmluZworCitpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAo
MywgNik6CisgICAgZnJvbSBwYXRobGliIGltcG9ydCBQYXRoLCBQdXJlUGF0aAorZWxzZToKKyAg
ICBmcm9tIHBhdGhsaWIyIGltcG9ydCBQYXRoLCBQdXJlUGF0aAorCitfX2FsbF9fID0gWyJQYXRo
IiwgIlB1cmVQYXRoIl0KKworCitMT0NLX1RJTUVPVVQgPSA2MCAqIDYwICogMworCisKK19BbnlQ
dXJlUGF0aCA9IFR5cGVWYXIoIl9BbnlQdXJlUGF0aCIsIGJvdW5kPVB1cmVQYXRoKQorCisKK2Rl
ZiBnZXRfbG9ja19wYXRoKHBhdGg6IF9BbnlQdXJlUGF0aCkgLT4gX0FueVB1cmVQYXRoOgorICAg
IHJldHVybiBwYXRoLmpvaW5wYXRoKCIubG9jayIpCisKKworZGVmIGVuc3VyZV9yZXNldF9kaXIo
cGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAiIiJFbnN1cmUgdGhlIGdpdmVuIHBhdGggaXMgYW4g
ZW1wdHkgZGlyZWN0b3J5LiIiIgorICAgIGlmIHBhdGguZXhpc3RzKCk6CisgICAgICAgIHJtX3Jm
KHBhdGgpCisgICAgcGF0aC5ta2RpcigpCisKKworZGVmIG9uX3JtX3JmX2Vycm9yKGZ1bmMsIHBh
dGg6IHN0ciwgZXhjLCAqLCBzdGFydF9wYXRoOiBQYXRoKSAtPiBib29sOgorICAgICIiIkhhbmRs
ZSBrbm93biByZWFkLW9ubHkgZXJyb3JzIGR1cmluZyBybXRyZWUuCisKKyAgICBUaGUgcmV0dXJu
ZWQgdmFsdWUgaXMgdXNlZCBvbmx5IGJ5IG91ciBvd24gdGVzdHMuCisgICAgIiIiCisgICAgZXhj
dHlwZSwgZXhjdmFsdWUgPSBleGNbOjJdCisKKyAgICAjIEFub3RoZXIgcHJvY2VzcyByZW1vdmVk
IHRoZSBmaWxlIGluIHRoZSBtaWRkbGUgb2YgdGhlICJybV9yZiIgKHhkaXN0IGZvciBleGFtcGxl
KS4KKyAgICAjIE1vcmUgY29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81OTc0I2lzc3VlY29tbWVudC01NDM3OTkwMTgKKyAgICBpZiBpc2luc3RhbmNl
KGV4Y3ZhbHVlLCBGaWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjdmFsdWUsIFBlcm1pc3Npb25FcnJvcik6CisgICAgICAg
IHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICBQeXRlc3RXYXJuaW5nKAorICAgICAgICAgICAg
ICAgICIocm1fcmYpIGVycm9yIHJlbW92aW5nIHt9XG57fToge30iLmZvcm1hdChwYXRoLCBleGN0
eXBlLCBleGN2YWx1ZSkKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGlmIGZ1bmMgbm90IGluIChvcy5ybWRpciwgb3MucmVtb3ZlLCBvcy51bmxp
bmspOgorICAgICAgICBpZiBmdW5jIG5vdCBpbiAob3Mub3BlbiwpOgorICAgICAgICAgICAgd2Fy
bmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICBQeXRlc3RXYXJuaW5nKAorICAgICAgICAgICAg
ICAgICAgICAiKHJtX3JmKSB1bmtub3duIGZ1bmN0aW9uIHt9IHdoZW4gcmVtb3Zpbmcge306XG57
fToge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMsIHBhdGgsIGV4Y3R5
cGUsIGV4Y3ZhbHVlCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgIyBDaG1vZCArIHJldHJ5
LgorICAgIGltcG9ydCBzdGF0CisKKyAgICBkZWYgY2htb2RfcncocDogc3RyKSAtPiBOb25lOgor
ICAgICAgICBtb2RlID0gb3Muc3RhdChwKS5zdF9tb2RlCisgICAgICAgIG9zLmNobW9kKHAsIG1v
ZGUgfCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IpCisKKyAgICAjIEZvciBmaWxlcywgd2Ug
bmVlZCB0byByZWN1cnNpdmVseSBnbyB1cHdhcmRzIGluIHRoZSBkaXJlY3RvcmllcyB0bworICAg
ICMgZW5zdXJlIHRoZXkgYWxsIGFyZSBhbHNvIHdyaXRhYmxlLgorICAgIHAgPSBQYXRoKHBhdGgp
CisgICAgaWYgcC5pc19maWxlKCk6CisgICAgICAgIGZvciBwYXJlbnQgaW4gcC5wYXJlbnRzOgor
ICAgICAgICAgICAgY2htb2Rfcncoc3RyKHBhcmVudCkpCisgICAgICAgICAgICAjIFN0b3Agd2hl
biB3ZSByZWFjaCB0aGUgb3JpZ2luYWwgcGF0aCBwYXNzZWQgdG8gcm1fcmYuCisgICAgICAgICAg
ICBpZiBwYXJlbnQgPT0gc3RhcnRfcGF0aDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgIGNo
bW9kX3J3KHN0cihwYXRoKSkKKworICAgIGZ1bmMocGF0aCkKKyAgICByZXR1cm4gVHJ1ZQorCisK
K2RlZiBlbnN1cmVfZXh0ZW5kZWRfbGVuZ3RoX3BhdGgocGF0aDogUGF0aCkgLT4gUGF0aDoKKyAg
ICAiIiJHZXQgdGhlIGV4dGVuZGVkLWxlbmd0aCB2ZXJzaW9uIG9mIGEgcGF0aCAoV2luZG93cyku
CisKKyAgICBPbiBXaW5kb3dzLCBieSBkZWZhdWx0LCB0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBw
YXRoIChNQVhfUEFUSCkgaXMgMjYwCisgICAgY2hhcmFjdGVycywgYW5kIG9wZXJhdGlvbnMgb24g
cGF0aHMgbG9uZ2VyIHRoYW4gdGhhdCBmYWlsLiBCdXQgaXQgaXMgcG9zc2libGUKKyAgICB0byBv
dmVyY29tZSB0aGlzIGJ5IGNvbnZlcnRpbmcgdGhlIHBhdGggdG8gImV4dGVuZGVkLWxlbmd0aCIg
Zm9ybSBiZWZvcmUKKyAgICBwZXJmb3JtaW5nIHRoZSBvcGVyYXRpb246CisgICAgaHR0cHM6Ly9k
b2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9maWxlaW8vbmFtaW5nLWEtZmls
ZSNtYXhpbXVtLXBhdGgtbGVuZ3RoLWxpbWl0YXRpb24KKworICAgIE9uIFdpbmRvd3MsIHRoaXMg
ZnVuY3Rpb24gcmV0dXJucyB0aGUgZXh0ZW5kZWQtbGVuZ3RoIGFic29sdXRlIHZlcnNpb24gb2Yg
cGF0aC4KKyAgICBPbiBvdGhlciBwbGF0Zm9ybXMgaXQgcmV0dXJucyBwYXRoIHVuY2hhbmdlZC4K
KyAgICAiIiIKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luMzIiKToKKyAgICAg
ICAgcGF0aCA9IHBhdGgucmVzb2x2ZSgpCisgICAgICAgIHBhdGggPSBQYXRoKGdldF9leHRlbmRl
ZF9sZW5ndGhfcGF0aF9zdHIoc3RyKHBhdGgpKSkKKyAgICByZXR1cm4gcGF0aAorCisKK2RlZiBn
ZXRfZXh0ZW5kZWRfbGVuZ3RoX3BhdGhfc3RyKHBhdGg6IHN0cikgLT4gc3RyOgorICAgICIiIkNv
bnZlcnQgYSBwYXRoIHRvIGEgV2luZG93cyBleHRlbmRlZCBsZW5ndGggcGF0aC4iIiIKKyAgICBs
b25nX3BhdGhfcHJlZml4ID0gIlxcXFw/XFwiCisgICAgdW5jX2xvbmdfcGF0aF9wcmVmaXggPSAi
XFxcXD9cXFVOQ1xcIgorICAgIGlmIHBhdGguc3RhcnRzd2l0aCgobG9uZ19wYXRoX3ByZWZpeCwg
dW5jX2xvbmdfcGF0aF9wcmVmaXgpKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKyAgICAjIFVOQwor
ICAgIGlmIHBhdGguc3RhcnRzd2l0aCgiXFxcXCIpOgorICAgICAgICByZXR1cm4gdW5jX2xvbmdf
cGF0aF9wcmVmaXggKyBwYXRoWzI6XQorICAgIHJldHVybiBsb25nX3BhdGhfcHJlZml4ICsgcGF0
aAorCisKK2RlZiBybV9yZihwYXRoOiBQYXRoKSAtPiBOb25lOgorICAgICIiIlJlbW92ZSB0aGUg
cGF0aCBjb250ZW50cyByZWN1cnNpdmVseSwgZXZlbiBpZiBzb21lIGVsZW1lbnRzCisgICAgYXJl
IHJlYWQtb25seS4iIiIKKyAgICBwYXRoID0gZW5zdXJlX2V4dGVuZGVkX2xlbmd0aF9wYXRoKHBh
dGgpCisgICAgb25lcnJvciA9IHBhcnRpYWwob25fcm1fcmZfZXJyb3IsIHN0YXJ0X3BhdGg9cGF0
aCkKKyAgICBzaHV0aWwucm10cmVlKHN0cihwYXRoKSwgb25lcnJvcj1vbmVycm9yKQorCisKK2Rl
ZiBmaW5kX3ByZWZpeGVkKHJvb3Q6IFBhdGgsIHByZWZpeDogc3RyKSAtPiBJdGVyYXRvcltQYXRo
XToKKyAgICAiIiJGaW5kIGFsbCBlbGVtZW50cyBpbiByb290IHRoYXQgYmVnaW4gd2l0aCB0aGUg
cHJlZml4LCBjYXNlIGluc2Vuc2l0aXZlLiIiIgorICAgIGxfcHJlZml4ID0gcHJlZml4Lmxvd2Vy
KCkKKyAgICBmb3IgeCBpbiByb290Lml0ZXJkaXIoKToKKyAgICAgICAgaWYgeC5uYW1lLmxvd2Vy
KCkuc3RhcnRzd2l0aChsX3ByZWZpeCk6CisgICAgICAgICAgICB5aWVsZCB4CisKKworZGVmIGV4
dHJhY3Rfc3VmZml4ZXMoaXRlcjogSXRlcmFibGVbUHVyZVBhdGhdLCBwcmVmaXg6IHN0cikgLT4g
SXRlcmF0b3Jbc3RyXToKKyAgICAiIiJSZXR1cm4gdGhlIHBhcnRzIG9mIHRoZSBwYXRocyBmb2xs
b3dpbmcgdGhlIHByZWZpeC4KKworICAgIDpwYXJhbSBpdGVyOiBJdGVyYXRvciBvdmVyIHBhdGgg
bmFtZXMuCisgICAgOnBhcmFtIHByZWZpeDogRXhwZWN0ZWQgcHJlZml4IG9mIHRoZSBwYXRoIG5h
bWVzLgorICAgICIiIgorICAgIHBfbGVuID0gbGVuKHByZWZpeCkKKyAgICBmb3IgcCBpbiBpdGVy
OgorICAgICAgICB5aWVsZCBwLm5hbWVbcF9sZW46XQorCisKK2RlZiBmaW5kX3N1ZmZpeGVzKHJv
b3Q6IFBhdGgsIHByZWZpeDogc3RyKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICIiIkNvbWJpbmUg
ZmluZF9wcmVmaXhlcyBhbmQgZXh0cmFjdF9zdWZmaXhlcy4iIiIKKyAgICByZXR1cm4gZXh0cmFj
dF9zdWZmaXhlcyhmaW5kX3ByZWZpeGVkKHJvb3QsIHByZWZpeCksIHByZWZpeCkKKworCitkZWYg
cGFyc2VfbnVtKG1heWJlX251bSkgLT4gaW50OgorICAgICIiIlBhcnNlIG51bWJlciBwYXRoIHN1
ZmZpeGVzLCByZXR1cm5zIC0xIG9uIGVycm9yLiIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJu
IGludChtYXliZV9udW0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHJldHVybiAt
MQorCisKK2RlZiBfZm9yY2Vfc3ltbGluaygKKyAgICByb290OiBQYXRoLCB0YXJnZXQ6IFVuaW9u
W3N0ciwgUHVyZVBhdGhdLCBsaW5rX3RvOiBVbmlvbltzdHIsIFBhdGhdCispIC0+IE5vbmU6Cisg
ICAgIiIiSGVscGVyIHRvIGNyZWF0ZSB0aGUgY3VycmVudCBzeW1saW5rLgorCisgICAgSXQncyBm
dWxsIG9mIHJhY2UgY29uZGl0aW9ucyB0aGF0IGFyZSByZWFzb25hYmx5IE9LIHRvIGlnbm9yZQor
ICAgIGZvciB0aGUgY29udGV4dCBvZiBiZXN0IGVmZm9ydCBsaW5raW5nIHRvIHRoZSBsYXRlc3Qg
dGVzdCBydW4uCisKKyAgICBUaGUgcHJlc3VtcHRpb24gYmVpbmcgdGhhdCBpbiBjYXNlIG9mIG11
Y2ggcGFyYWxsZWxpc20KKyAgICB0aGUgaW5hY2N1cmFjeSBpcyBnb2luZyB0byBiZSBhY2NlcHRh
YmxlLgorICAgICIiIgorICAgIGN1cnJlbnRfc3ltbGluayA9IHJvb3Quam9pbnBhdGgodGFyZ2V0
KQorICAgIHRyeToKKyAgICAgICAgY3VycmVudF9zeW1saW5rLnVubGluaygpCisgICAgZXhjZXB0
IE9TRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIGN1cnJlbnRfc3ltbGlu
ay5zeW1saW5rX3RvKGxpbmtfdG8pCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcGFz
cworCisKK2RlZiBtYWtlX251bWJlcmVkX2Rpcihyb290OiBQYXRoLCBwcmVmaXg6IHN0cikgLT4g
UGF0aDoKKyAgICAiIiJDcmVhdGUgYSBkaXJlY3Rvcnkgd2l0aCBhbiBpbmNyZWFzZWQgbnVtYmVy
IGFzIHN1ZmZpeCBmb3IgdGhlIGdpdmVuIHByZWZpeC4iIiIKKyAgICBmb3IgaSBpbiByYW5nZSgx
MCk6CisgICAgICAgICMgdHJ5IHVwIHRvIDEwIHRpbWVzIHRvIGNyZWF0ZSB0aGUgZm9sZGVyCisg
ICAgICAgIG1heF9leGlzdGluZyA9IG1heChtYXAocGFyc2VfbnVtLCBmaW5kX3N1ZmZpeGVzKHJv
b3QsIHByZWZpeCkpLCBkZWZhdWx0PS0xKQorICAgICAgICBuZXdfbnVtYmVyID0gbWF4X2V4aXN0
aW5nICsgMQorICAgICAgICBuZXdfcGF0aCA9IHJvb3Quam9pbnBhdGgoInt9e30iLmZvcm1hdChw
cmVmaXgsIG5ld19udW1iZXIpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXdfcGF0aC5t
a2RpcigpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBwYXNzCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBfZm9yY2Vfc3ltbGluayhyb290LCBwcmVmaXggKyAiY3Vy
cmVudCIsIG5ld19wYXRoKQorICAgICAgICAgICAgcmV0dXJuIG5ld19wYXRoCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgT1NFcnJvcigKKyAgICAgICAgICAgICJjb3VsZCBub3QgY3JlYXRlIG51
bWJlcmVkIGRpciB3aXRoIHByZWZpeCAiCisgICAgICAgICAgICAie3ByZWZpeH0gaW4ge3Jvb3R9
IGFmdGVyIDEwIHRyaWVzIi5mb3JtYXQocHJlZml4PXByZWZpeCwgcm9vdD1yb290KQorICAgICAg
ICApCisKKworZGVmIGNyZWF0ZV9jbGVhbnVwX2xvY2socDogUGF0aCkgLT4gUGF0aDoKKyAgICAi
IiJDcmVhdGUgYSBsb2NrIHRvIHByZXZlbnQgcHJlbWF0dXJlIGZvbGRlciBjbGVhbnVwLiIiIgor
ICAgIGxvY2tfcGF0aCA9IGdldF9sb2NrX3BhdGgocCkKKyAgICB0cnk6CisgICAgICAgIGZkID0g
b3Mub3BlbihzdHIobG9ja19wYXRoKSwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUIHwgb3MuT19F
WENMLCAwbzY0NCkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yIGFzIGU6CisgICAgICAgIHJh
aXNlIE9TRXJyb3IoImNhbm5vdCBjcmVhdGUgbG9ja2ZpbGUgaW4ge3BhdGh9Ii5mb3JtYXQocGF0
aD1wKSkgZnJvbSBlCisgICAgZWxzZToKKyAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAg
ICAgc3BpZCA9IHN0cihwaWQpLmVuY29kZSgpCisgICAgICAgIG9zLndyaXRlKGZkLCBzcGlkKQor
ICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgaWYgbm90IGxvY2tfcGF0aC5pc19maWxlKCk6
CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJsb2NrIHBhdGggZ290IHJlbmFtZWQgYWZ0ZXIg
c3VjY2Vzc2Z1bCBjcmVhdGlvbiIpCisgICAgICAgIHJldHVybiBsb2NrX3BhdGgKKworCitkZWYg
cmVnaXN0ZXJfY2xlYW51cF9sb2NrX3JlbW92YWwobG9ja19wYXRoOiBQYXRoLCByZWdpc3Rlcj1h
dGV4aXQucmVnaXN0ZXIpOgorICAgICIiIlJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbiBmb3Ig
cmVtb3ZpbmcgYSBsb2NrLCBieSBkZWZhdWx0IG9uIGF0ZXhpdC4iIiIKKyAgICBwaWQgPSBvcy5n
ZXRwaWQoKQorCisgICAgZGVmIGNsZWFudXBfb25fZXhpdChsb2NrX3BhdGg6IFBhdGggPSBsb2Nr
X3BhdGgsIG9yaWdpbmFsX3BpZDogaW50ID0gcGlkKSAtPiBOb25lOgorICAgICAgICBjdXJyZW50
X3BpZCA9IG9zLmdldHBpZCgpCisgICAgICAgIGlmIGN1cnJlbnRfcGlkICE9IG9yaWdpbmFsX3Bp
ZDoKKyAgICAgICAgICAgICMgZm9yaworICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGxvY2tfcGF0aC51bmxpbmsoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoK
KyAgICAgICAgICAgIHBhc3MKKworICAgIHJldHVybiByZWdpc3RlcihjbGVhbnVwX29uX2V4aXQp
CisKKworZGVmIG1heWJlX2RlbGV0ZV9hX251bWJlcmVkX2RpcihwYXRoOiBQYXRoKSAtPiBOb25l
OgorICAgICIiIlJlbW92ZSBhIG51bWJlcmVkIGRpcmVjdG9yeSBpZiBpdHMgbG9jayBjYW4gYmUg
b2J0YWluZWQgYW5kIGl0IGRvZXMKKyAgICBub3Qgc2VlbSB0byBiZSBpbiB1c2UuIiIiCisgICAg
cGF0aCA9IGVuc3VyZV9leHRlbmRlZF9sZW5ndGhfcGF0aChwYXRoKQorICAgIGxvY2tfcGF0aCA9
IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGxvY2tfcGF0aCA9IGNyZWF0ZV9jbGVhbnVwX2xvY2so
cGF0aCkKKyAgICAgICAgcGFyZW50ID0gcGF0aC5wYXJlbnQKKworICAgICAgICBnYXJiYWdlID0g
cGFyZW50LmpvaW5wYXRoKCJnYXJiYWdlLXt9Ii5mb3JtYXQodXVpZC51dWlkNCgpKSkKKyAgICAg
ICAgcGF0aC5yZW5hbWUoZ2FyYmFnZSkKKyAgICAgICAgcm1fcmYoZ2FyYmFnZSkKKyAgICBleGNl
cHQgT1NFcnJvcjoKKyAgICAgICAgIyAga25vd24gcmFjZXM6CisgICAgICAgICMgICogb3RoZXIg
cHJvY2VzcyBkaWQgYSBjbGVhbnVwIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgIyAgKiBkZWxl
dGFibGUgZm9sZGVyIHdhcyBmb3VuZAorICAgICAgICAjICAqIHByb2Nlc3MgY3dkIChXaW5kb3dz
KQorICAgICAgICByZXR1cm4KKyAgICBmaW5hbGx5OgorICAgICAgICAjIElmIHdlIGNyZWF0ZWQg
dGhlIGxvY2ssIGVuc3VyZSB3ZSByZW1vdmUgaXQgZXZlbiBpZiB3ZSBmYWlsZWQKKyAgICAgICAg
IyB0byBwcm9wZXJseSByZW1vdmUgdGhlIG51bWJlcmVkIGRpci4KKyAgICAgICAgaWYgbG9ja19w
YXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2tf
cGF0aC51bmxpbmsoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAg
ICAgcGFzcworCisKK2RlZiBlbnN1cmVfZGVsZXRhYmxlKHBhdGg6IFBhdGgsIGNvbnNpZGVyX2xv
Y2tfZGVhZF9pZl9jcmVhdGVkX2JlZm9yZTogZmxvYXQpIC0+IGJvb2w6CisgICAgIiIiQ2hlY2sg
aWYgYHBhdGhgIGlzIGRlbGV0YWJsZSBiYXNlZCBvbiB3aGV0aGVyIHRoZSBsb2NrIGZpbGUgaXMg
ZXhwaXJlZC4iIiIKKyAgICBpZiBwYXRoLmlzX3N5bWxpbmsoKToKKyAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgbG9jayA9IGdldF9sb2NrX3BhdGgocGF0aCkKKyAgICB0cnk6CisgICAgICAgIGlm
IG5vdCBsb2NrLmlzX2ZpbGUoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgZXhjZXB0
IE9TRXJyb3I6CisgICAgICAgICMgd2UgbWlnaHQgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2Nr
IGZpbGUgYXQgYWxsLCBpbiB0aGlzIGNhc2UgYXNzdW1lCisgICAgICAgICMgd2UgZG9uJ3QgaGF2
ZSBhY2Nlc3MgdG8gdGhlIGVudGlyZSBkaXJlY3RvcnkgKCM3NDkxKS4KKyAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgdHJ5OgorICAgICAgICBsb2NrX3RpbWUgPSBsb2NrLnN0YXQoKS5zdF9tdGlt
ZQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6
CisgICAgICAgIGlmIGxvY2tfdGltZSA8IGNvbnNpZGVyX2xvY2tfZGVhZF9pZl9jcmVhdGVkX2Jl
Zm9yZToKKyAgICAgICAgICAgICMgV2Ugd2FudCB0byBpZ25vcmUgYW55IGVycm9ycyB3aGlsZSB0
cnlpbmcgdG8gcmVtb3ZlIHRoZSBsb2NrIHN1Y2ggYXM6CisgICAgICAgICAgICAjIC0gUGVybWlz
c2lvbkRlbmllZCwgbGlrZSB0aGUgZmlsZSBwZXJtaXNzaW9ucyBoYXZlIGNoYW5nZWQgc2luY2Ug
dGhlIGxvY2sgY3JlYXRpb247CisgICAgICAgICAgICAjIC0gRmlsZU5vdEZvdW5kRXJyb3IsIGlu
IGNhc2UgYW5vdGhlciBweXRlc3QgcHJvY2VzcyBnb3QgaGVyZSBmaXJzdDsKKyAgICAgICAgICAg
ICMgYW5kIGFueSBvdGhlciBjYXVzZSBvZiBmYWlsdXJlLgorICAgICAgICAgICAgd2l0aCBjb250
ZXh0bGliLnN1cHByZXNzKE9TRXJyb3IpOgorICAgICAgICAgICAgICAgIGxvY2sudW5saW5rKCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitk
ZWYgdHJ5X2NsZWFudXAocGF0aDogUGF0aCwgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRf
YmVmb3JlOiBmbG9hdCkgLT4gTm9uZToKKyAgICAiIiJUcnkgdG8gY2xlYW51cCBhIGZvbGRlciBp
ZiB3ZSBjYW4gZW5zdXJlIGl0J3MgZGVsZXRhYmxlLiIiIgorICAgIGlmIGVuc3VyZV9kZWxldGFi
bGUocGF0aCwgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVmb3JlKToKKyAgICAgICAg
bWF5YmVfZGVsZXRlX2FfbnVtYmVyZWRfZGlyKHBhdGgpCisKKworZGVmIGNsZWFudXBfY2FuZGlk
YXRlcyhyb290OiBQYXRoLCBwcmVmaXg6IHN0ciwga2VlcDogaW50KSAtPiBJdGVyYXRvcltQYXRo
XToKKyAgICAiIiJMaXN0IGNhbmRpZGF0ZXMgZm9yIG51bWJlcmVkIGRpcmVjdG9yaWVzIHRvIGJl
IHJlbW92ZWQgLSBmb2xsb3dzIHB5LnBhdGguIiIiCisgICAgbWF4X2V4aXN0aW5nID0gbWF4KG1h
cChwYXJzZV9udW0sIGZpbmRfc3VmZml4ZXMocm9vdCwgcHJlZml4KSksIGRlZmF1bHQ9LTEpCisg
ICAgbWF4X2RlbGV0ZSA9IG1heF9leGlzdGluZyAtIGtlZXAKKyAgICBwYXRocyA9IGZpbmRfcHJl
Zml4ZWQocm9vdCwgcHJlZml4KQorICAgIHBhdGhzLCBwYXRoczIgPSBpdGVydG9vbHMudGVlKHBh
dGhzKQorICAgIG51bWJlcnMgPSBtYXAocGFyc2VfbnVtLCBleHRyYWN0X3N1ZmZpeGVzKHBhdGhz
MiwgcHJlZml4KSkKKyAgICBmb3IgcGF0aCwgbnVtYmVyIGluIHppcChwYXRocywgbnVtYmVycyk6
CisgICAgICAgIGlmIG51bWJlciA8PSBtYXhfZGVsZXRlOgorICAgICAgICAgICAgeWllbGQgcGF0
aAorCisKK2RlZiBjbGVhbnVwX251bWJlcmVkX2RpcigKKyAgICByb290OiBQYXRoLCBwcmVmaXg6
IHN0ciwga2VlcDogaW50LCBjb25zaWRlcl9sb2NrX2RlYWRfaWZfY3JlYXRlZF9iZWZvcmU6IGZs
b2F0CispIC0+IE5vbmU6CisgICAgIiIiQ2xlYW51cCBmb3IgbG9jayBkcml2ZW4gbnVtYmVyZWQg
ZGlyZWN0b3JpZXMuIiIiCisgICAgZm9yIHBhdGggaW4gY2xlYW51cF9jYW5kaWRhdGVzKHJvb3Qs
IHByZWZpeCwga2VlcCk6CisgICAgICAgIHRyeV9jbGVhbnVwKHBhdGgsIGNvbnNpZGVyX2xvY2tf
ZGVhZF9pZl9jcmVhdGVkX2JlZm9yZSkKKyAgICBmb3IgcGF0aCBpbiByb290Lmdsb2IoImdhcmJh
Z2UtKiIpOgorICAgICAgICB0cnlfY2xlYW51cChwYXRoLCBjb25zaWRlcl9sb2NrX2RlYWRfaWZf
Y3JlYXRlZF9iZWZvcmUpCisKKworZGVmIG1ha2VfbnVtYmVyZWRfZGlyX3dpdGhfY2xlYW51cCgK
KyAgICByb290OiBQYXRoLCBwcmVmaXg6IHN0ciwga2VlcDogaW50LCBsb2NrX3RpbWVvdXQ6IGZs
b2F0CispIC0+IFBhdGg6CisgICAgIiIiQ3JlYXRlIGEgbnVtYmVyZWQgZGlyIHdpdGggYSBjbGVh
bnVwIGxvY2sgYW5kIHJlbW92ZSBvbGQgb25lcy4iIiIKKyAgICBlID0gTm9uZQorICAgIGZvciBp
IGluIHJhbmdlKDEwKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcCA9IG1ha2VfbnVtYmVy
ZWRfZGlyKHJvb3QsIHByZWZpeCkKKyAgICAgICAgICAgIGxvY2tfcGF0aCA9IGNyZWF0ZV9jbGVh
bnVwX2xvY2socCkKKyAgICAgICAgICAgIHJlZ2lzdGVyX2NsZWFudXBfbG9ja19yZW1vdmFsKGxv
Y2tfcGF0aCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBl
ID0gZXhjCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25zaWRlcl9sb2NrX2RlYWRfaWZf
Y3JlYXRlZF9iZWZvcmUgPSBwLnN0YXQoKS5zdF9tdGltZSAtIGxvY2tfdGltZW91dAorICAgICAg
ICAgICAgIyBSZWdpc3RlciBhIGNsZWFudXAgZm9yIHByb2dyYW0gZXhpdAorICAgICAgICAgICAg
YXRleGl0LnJlZ2lzdGVyKAorICAgICAgICAgICAgICAgIGNsZWFudXBfbnVtYmVyZWRfZGlyLAor
ICAgICAgICAgICAgICAgIHJvb3QsCisgICAgICAgICAgICAgICAgcHJlZml4LAorICAgICAgICAg
ICAgICAgIGtlZXAsCisgICAgICAgICAgICAgICAgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0
ZWRfYmVmb3JlLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIHAKKyAgICBhc3Nl
cnQgZSBpcyBub3QgTm9uZQorICAgIHJhaXNlIGUKKworCitkZWYgcmVzb2x2ZV9mcm9tX3N0cihp
bnB1dDogc3RyLCByb290cGF0aDogUGF0aCkgLT4gUGF0aDoKKyAgICBpbnB1dCA9IGV4cGFuZHVz
ZXIoaW5wdXQpCisgICAgaW5wdXQgPSBleHBhbmR2YXJzKGlucHV0KQorICAgIGlmIGlzYWJzKGlu
cHV0KToKKyAgICAgICAgcmV0dXJuIFBhdGgoaW5wdXQpCisgICAgZWxzZToKKyAgICAgICAgcmV0
dXJuIHJvb3RwYXRoLmpvaW5wYXRoKGlucHV0KQorCisKK2RlZiBmbm1hdGNoX2V4KHBhdHRlcm46
IHN0ciwgcGF0aCkgLT4gYm9vbDoKKyAgICAiIiJBIHBvcnQgb2YgRk5NYXRjaGVyIGZyb20gcHku
cGF0aC5jb21tb24gd2hpY2ggd29ya3Mgd2l0aCBQdXJlUGF0aCgpIGluc3RhbmNlcy4KKworICAg
IFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbGdvcml0aG0gYW5kIFB1cmVQYXRoLm1hdGNo
KCkgaXMgdGhhdCB0aGUKKyAgICBsYXR0ZXIgbWF0Y2hlcyAiKioiIGdsb2IgZXhwcmVzc2lvbnMg
Zm9yIGVhY2ggcGFydCBvZiB0aGUgcGF0aCwgd2hpbGUKKyAgICB0aGlzIGFsZ29yaXRobSB1c2Vz
IHRoZSB3aG9sZSBwYXRoIGluc3RlYWQuCisKKyAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgInRl
c3RzL2Zvby9iYXIvZG9jL3Rlc3RfZm9vLnB5IiBtYXRjaGVzIHBhdHRlcm4gInRlc3RzLyoqL2Rv
Yy90ZXN0Ki5weSIKKyAgICAgICAgd2l0aCB0aGlzIGFsZ29yaXRobSwgYnV0IG5vdCB3aXRoIFB1
cmVQYXRoLm1hdGNoKCkuCisKKyAgICBUaGlzIGFsZ29yaXRobSB3YXMgcG9ydGVkIHRvIGtlZXAg
YmFja3dhcmQtY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nCisgICAgc2V0dGluZ3Mgd2hpY2gg
YXNzdW1lIHBhdGhzIG1hdGNoIGFjY29yZGluZyB0aGlzIGxvZ2ljLgorCisgICAgUmVmZXJlbmNl
czoKKyAgICAqIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjkyNDkKKyAgICAqIGh0dHBz
Oi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ3MzEKKyAgICAiIiIKKyAgICBwYXRoID0gUHVyZVBh
dGgocGF0aCkKKyAgICBpc3dpbjMyID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpCisK
KyAgICBpZiBpc3dpbjMyIGFuZCBzZXAgbm90IGluIHBhdHRlcm4gYW5kIHBvc2l4X3NlcCBpbiBw
YXR0ZXJuOgorICAgICAgICAjIFJ1bm5pbmcgb24gV2luZG93cywgdGhlIHBhdHRlcm4gaGFzIG5v
IFdpbmRvd3MgcGF0aCBzZXBhcmF0b3JzLAorICAgICAgICAjIGFuZCB0aGUgcGF0dGVybiBoYXMg
b25lIG9yIG1vcmUgUG9zaXggcGF0aCBzZXBhcmF0b3JzLiBSZXBsYWNlCisgICAgICAgICMgdGhl
IFBvc2l4IHBhdGggc2VwYXJhdG9ycyB3aXRoIHRoZSBXaW5kb3dzIHBhdGggc2VwYXJhdG9yLgor
ICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKHBvc2l4X3NlcCwgc2VwKQorCisgICAg
aWYgc2VwIG5vdCBpbiBwYXR0ZXJuOgorICAgICAgICBuYW1lID0gcGF0aC5uYW1lCisgICAgZWxz
ZToKKyAgICAgICAgbmFtZSA9IHN0cihwYXRoKQorICAgICAgICBpZiBwYXRoLmlzX2Fic29sdXRl
KCkgYW5kIG5vdCBvcy5wYXRoLmlzYWJzKHBhdHRlcm4pOgorICAgICAgICAgICAgcGF0dGVybiA9
ICIqe317fSIuZm9ybWF0KG9zLnNlcCwgcGF0dGVybikKKyAgICByZXR1cm4gZm5tYXRjaC5mbm1h
dGNoKG5hbWUsIHBhdHRlcm4pCisKKworZGVmIHBhcnRzKHM6IHN0cikgLT4gU2V0W3N0cl06Cisg
ICAgcGFydHMgPSBzLnNwbGl0KHNlcCkKKyAgICByZXR1cm4ge3NlcC5qb2luKHBhcnRzWzogaSAr
IDFdKSBvciBzZXAgZm9yIGkgaW4gcmFuZ2UobGVuKHBhcnRzKSl9CisKKworZGVmIHN5bWxpbmtf
b3Jfc2tpcChzcmMsIGRzdCwgKiprd2FyZ3MpOgorICAgICIiIk1ha2UgYSBzeW1saW5rLCBvciBz
a2lwIHRoZSB0ZXN0IGluIGNhc2Ugc3ltbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQuIiIiCisgICAg
dHJ5OgorICAgICAgICBvcy5zeW1saW5rKHN0cihzcmMpLCBzdHIoZHN0KSwgKiprd2FyZ3MpCisg
ICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgc2tpcCgic3ltbGlua3Mgbm90IHN1cHBv
cnRlZDoge30iLmZvcm1hdChlKSkKKworCitjbGFzcyBJbXBvcnRNb2RlKEVudW0pOgorICAgICIi
IlBvc3NpYmxlIHZhbHVlcyBmb3IgYG1vZGVgIHBhcmFtZXRlciBvZiBgaW1wb3J0X3BhdGhgLiIi
IgorCisgICAgcHJlcGVuZCA9ICJwcmVwZW5kIgorICAgIGFwcGVuZCA9ICJhcHBlbmQiCisgICAg
aW1wb3J0bGliID0gImltcG9ydGxpYiIKKworCitjbGFzcyBJbXBvcnRQYXRoTWlzbWF0Y2hFcnJv
cihJbXBvcnRFcnJvcik6CisgICAgIiIiUmFpc2VkIG9uIGltcG9ydF9wYXRoKCkgaWYgdGhlcmUg
aXMgYSBtaXNtYXRjaCBvZiBfX2ZpbGVfXydzLgorCisgICAgVGhpcyBjYW4gaGFwcGVuIHdoZW4g
YGltcG9ydF9wYXRoYCBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgZmls
ZW5hbWVzIHRoYXQgaGFzCisgICAgdGhlIHNhbWUgYmFzZW5hbWUgYnV0IHJlc2lkZSBpbiBwYWNr
YWdlcworICAgIChmb3IgZXhhbXBsZSAiL3Rlc3RzMS90ZXN0X2Zvby5weSIgYW5kICIvdGVzdHMy
L3Rlc3RfZm9vLnB5IikuCisgICAgIiIiCisKKworZGVmIGltcG9ydF9wYXRoKAorICAgIHA6IFVu
aW9uW3N0ciwgcHkucGF0aC5sb2NhbCwgUGF0aF0sCisgICAgKiwKKyAgICBtb2RlOiBVbmlvbltz
dHIsIEltcG9ydE1vZGVdID0gSW1wb3J0TW9kZS5wcmVwZW5kCispIC0+IE1vZHVsZVR5cGU6Cisg
ICAgIiIiSW1wb3J0IGFuZCByZXR1cm4gYSBtb2R1bGUgZnJvbSB0aGUgZ2l2ZW4gcGF0aCwgd2hp
Y2ggY2FuIGJlIGEgZmlsZSAoYSBtb2R1bGUpIG9yCisgICAgYSBkaXJlY3RvcnkgKGEgcGFja2Fn
ZSkuCisKKyAgICBUaGUgaW1wb3J0IG1lY2hhbmlzbSB1c2VkIGlzIGNvbnRyb2xsZWQgYnkgdGhl
IGBtb2RlYCBwYXJhbWV0ZXI6CisKKyAgICAqIGBtb2RlID09IEltcG9ydE1vZGUucHJlcGVuZGA6
IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgbW9kdWxlIChvciBwYWNrYWdlLCB0YWtpbmcK
KyAgICAgIGBfX2luaXRfXy5weWAgZmlsZXMgaW50byBhY2NvdW50KSB3aWxsIGJlIHB1dCBhdCB0
aGUgKnN0YXJ0KiBvZiBgc3lzLnBhdGhgIGJlZm9yZQorICAgICAgYmVpbmcgaW1wb3J0ZWQgd2l0
aCBgX19pbXBvcnRfXy4KKworICAgICogYG1vZGUgPT0gSW1wb3J0TW9kZS5hcHBlbmRgOiBzYW1l
IGFzIGBwcmVwZW5kYCwgYnV0IHRoZSBkaXJlY3Rvcnkgd2lsbCBiZSBhcHBlbmRlZAorICAgICAg
dG8gdGhlIGVuZCBvZiBgc3lzLnBhdGhgLCBpZiBub3QgYWxyZWFkeSBpbiBgc3lzLnBhdGhgLgor
CisgICAgKiBgbW9kZSA9PSBJbXBvcnRNb2RlLmltcG9ydGxpYmA6IHVzZXMgbW9yZSBmaW5lIGNv
bnRyb2wgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBgaW1wb3J0bGliYAorICAgICAgdG8gaW1wb3J0
IHRoZSBtb2R1bGUsIHdoaWNoIGF2b2lkcyBoYXZpbmcgdG8gdXNlIGBfX2ltcG9ydF9fYCBhbmQg
bXVjayB3aXRoIGBzeXMucGF0aGAKKyAgICAgIGF0IGFsbC4gSXQgZWZmZWN0aXZlbHkgYWxsb3dz
IGhhdmluZyBzYW1lLW5hbWVkIHRlc3QgbW9kdWxlcyBpbiBkaWZmZXJlbnQgcGxhY2VzLgorCisg
ICAgOnJhaXNlcyBJbXBvcnRQYXRoTWlzbWF0Y2hFcnJvcjoKKyAgICAgICAgSWYgYWZ0ZXIgaW1w
b3J0aW5nIHRoZSBnaXZlbiBgcGF0aGAgYW5kIHRoZSBtb2R1bGUgYF9fZmlsZV9fYAorICAgICAg
ICBhcmUgZGlmZmVyZW50LiBPbmx5IHJhaXNlZCBpbiBgcHJlcGVuZGAgYW5kIGBhcHBlbmRgIG1v
ZGVzLgorICAgICIiIgorICAgIG1vZGUgPSBJbXBvcnRNb2RlKG1vZGUpCisKKyAgICBwYXRoID0g
UGF0aChzdHIocCkpCisKKyAgICBpZiBub3QgcGF0aC5leGlzdHMoKToKKyAgICAgICAgcmFpc2Ug
SW1wb3J0RXJyb3IocGF0aCkKKworICAgIGlmIG1vZGUgaXMgSW1wb3J0TW9kZS5pbXBvcnRsaWI6
CisgICAgICAgIG1vZHVsZV9uYW1lID0gcGF0aC5zdGVtCisKKyAgICAgICAgZm9yIG1ldGFfaW1w
b3J0ZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgICAgIHNwZWMgPSBtZXRhX2ltcG9ydGVy
LmZpbmRfc3BlYyhtb2R1bGVfbmFtZSwgW3N0cihwYXRoLnBhcmVudCldKQorICAgICAgICAgICAg
aWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0
aW9uKG1vZHVsZV9uYW1lLCBzdHIocGF0aCkpCisKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgor
ICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbid0IGZp
bmQgbW9kdWxlIHt9IGF0IGxvY2F0aW9uIHt9Ii5mb3JtYXQobW9kdWxlX25hbWUsIHN0cihwYXRo
KSkKKyAgICAgICAgICAgICkKKyAgICAgICAgbW9kID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zy
b21fc3BlYyhzcGVjKQorICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2QpICAjIHR5
cGU6IGlnbm9yZVt1bmlvbi1hdHRyXQorICAgICAgICByZXR1cm4gbW9kCisKKyAgICBwa2dfcGF0
aCA9IHJlc29sdmVfcGFja2FnZV9wYXRoKHBhdGgpCisgICAgaWYgcGtnX3BhdGggaXMgbm90IE5v
bmU6CisgICAgICAgIHBrZ19yb290ID0gcGtnX3BhdGgucGFyZW50CisgICAgICAgIG5hbWVzID0g
bGlzdChwYXRoLndpdGhfc3VmZml4KCIiKS5yZWxhdGl2ZV90byhwa2dfcm9vdCkucGFydHMpCisg
ICAgICAgIGlmIG5hbWVzWy0xXSA9PSAiX19pbml0X18iOgorICAgICAgICAgICAgbmFtZXMucG9w
KCkKKyAgICAgICAgbW9kdWxlX25hbWUgPSAiLiIuam9pbihuYW1lcykKKyAgICBlbHNlOgorICAg
ICAgICBwa2dfcm9vdCA9IHBhdGgucGFyZW50CisgICAgICAgIG1vZHVsZV9uYW1lID0gcGF0aC5z
dGVtCisKKyAgICAjIENoYW5nZSBzeXMucGF0aCBwZXJtYW5lbnRseTogcmVzdG9yaW5nIGl0IGF0
IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB3b3VsZCBjYXVzZSBzdXJwcmlzaW5nCisgICAgIyBw
cm9ibGVtcyBiZWNhdXNlIG9mIGRlbGF5ZWQgaW1wb3J0czogZm9yIGV4YW1wbGUsIGEgY29uZnRl
c3QucHkgZmlsZSBpbXBvcnRlZCBieSB0aGlzIGZ1bmN0aW9uCisgICAgIyBtaWdodCBoYXZlIGxv
Y2FsIGltcG9ydHMsIHdoaWNoIHdvdWxkIGZhaWwgYXQgcnVudGltZSBpZiB3ZSByZXN0b3JlZCBz
eXMucGF0aC4KKyAgICBpZiBtb2RlIGlzIEltcG9ydE1vZGUuYXBwZW5kOgorICAgICAgICBpZiBz
dHIocGtnX3Jvb3QpIG5vdCBpbiBzeXMucGF0aDoKKyAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVu
ZChzdHIocGtnX3Jvb3QpKQorICAgIGVsaWYgbW9kZSBpcyBJbXBvcnRNb2RlLnByZXBlbmQ6Cisg
ICAgICAgIGlmIHN0cihwa2dfcm9vdCkgIT0gc3lzLnBhdGhbMF06CisgICAgICAgICAgICBzeXMu
cGF0aC5pbnNlcnQoMCwgc3RyKHBrZ19yb290KSkKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnRf
bmV2ZXIobW9kZSkKKworICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lKQor
CisgICAgbW9kID0gc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCisgICAgaWYgcGF0aC5uYW1lID09
ICJfX2luaXRfXy5weSI6CisgICAgICAgIHJldHVybiBtb2QKKworICAgIGlnbm9yZSA9IG9zLmVu
dmlyb24uZ2V0KCJQWV9JR05PUkVfSU1QT1JUTUlTTUFUQ0giLCAiIikKKyAgICBpZiBpZ25vcmUg
IT0gIjEiOgorICAgICAgICBtb2R1bGVfZmlsZSA9IG1vZC5fX2ZpbGVfXworICAgICAgICBpZiBt
b2R1bGVfZmlsZS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKToKKyAgICAgICAgICAgIG1vZHVs
ZV9maWxlID0gbW9kdWxlX2ZpbGVbOi0xXQorICAgICAgICBpZiBtb2R1bGVfZmlsZS5lbmRzd2l0
aChvcy5wYXRoLnNlcCArICJfX2luaXRfXy5weSIpOgorICAgICAgICAgICAgbW9kdWxlX2ZpbGUg
PSBtb2R1bGVfZmlsZVs6IC0obGVuKG9zLnBhdGguc2VwICsgIl9faW5pdF9fLnB5IikpXQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIGlzX3NhbWUgPSBvcy5wYXRoLnNhbWVmaWxlKHN0cihw
YXRoKSwgbW9kdWxlX2ZpbGUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAg
ICAgICAgICAgIGlzX3NhbWUgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBpc19zYW1lOgorICAg
ICAgICAgICAgcmFpc2UgSW1wb3J0UGF0aE1pc21hdGNoRXJyb3IobW9kdWxlX25hbWUsIG1vZHVs
ZV9maWxlLCBwYXRoKQorCisgICAgcmV0dXJuIG1vZAorCisKK2RlZiByZXNvbHZlX3BhY2thZ2Vf
cGF0aChwYXRoOiBQYXRoKSAtPiBPcHRpb25hbFtQYXRoXToKKyAgICAiIiJSZXR1cm4gdGhlIFB5
dGhvbiBwYWNrYWdlIHBhdGggYnkgbG9va2luZyBmb3IgdGhlIGxhc3QKKyAgICBkaXJlY3Rvcnkg
dXB3YXJkcyB3aGljaCBzdGlsbCBjb250YWlucyBhbiBfX2luaXRfXy5weS4KKworICAgIFJldHVy
bnMgTm9uZSBpZiBpdCBjYW4gbm90IGJlIGRldGVybWluZWQuCisgICAgIiIiCisgICAgcmVzdWx0
ID0gTm9uZQorICAgIGZvciBwYXJlbnQgaW4gaXRlcnRvb2xzLmNoYWluKChwYXRoLCksIHBhdGgu
cGFyZW50cyk6CisgICAgICAgIGlmIHBhcmVudC5pc19kaXIoKToKKyAgICAgICAgICAgIGlmIG5v
dCBwYXJlbnQuam9pbnBhdGgoIl9faW5pdF9fLnB5IikuaXNfZmlsZSgpOgorICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICBpZiBub3QgcGFyZW50Lm5hbWUuaXNpZGVudGlmaWVyKCk6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBhcmVudAorICAg
IHJldHVybiByZXN1bHQKKworCitkZWYgdmlzaXQoCisgICAgcGF0aDogc3RyLCByZWN1cnNlOiBD
YWxsYWJsZVtbIm9zLkRpckVudHJ5W3N0cl0iXSwgYm9vbF0KKykgLT4gSXRlcmF0b3JbIm9zLkRp
ckVudHJ5W3N0cl0iXToKKyAgICAiIiJXYWxrIGEgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5LCBpbiBi
cmVhZHRoLWZpcnN0IG9yZGVyLgorCisgICAgRW50cmllcyBhdCBlYWNoIGRpcmVjdG9yeSBsZXZl
bCBhcmUgc29ydGVkLgorICAgICIiIgorICAgIGVudHJpZXMgPSBzb3J0ZWQob3Muc2NhbmRpcihw
YXRoKSwga2V5PWxhbWJkYSBlbnRyeTogZW50cnkubmFtZSkKKyAgICB5aWVsZCBmcm9tIGVudHJp
ZXMKKyAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgaWYgZW50cnkuaXNfZGlyKGZv
bGxvd19zeW1saW5rcz1GYWxzZSkgYW5kIHJlY3Vyc2UoZW50cnkpOgorICAgICAgICAgICAgeWll
bGQgZnJvbSB2aXNpdChlbnRyeS5wYXRoLCByZWN1cnNlKQorCisKK2RlZiBhYnNvbHV0ZXBhdGgo
cGF0aDogVW5pb25bUGF0aCwgc3RyXSkgLT4gUGF0aDoKKyAgICAiIiJDb252ZXJ0IGEgcGF0aCB0
byBhbiBhYnNvbHV0ZSBwYXRoIHVzaW5nIG9zLnBhdGguYWJzcGF0aC4KKworICAgIFByZWZlciB0
aGlzIG92ZXIgUGF0aC5yZXNvbHZlKCkgKHNlZSAjNjUyMykuCisgICAgUHJlZmVyIHRoaXMgb3Zl
ciBQYXRoLmFic29sdXRlKCkgKG5vdCBwdWJsaWMsIGRvZXNuJ3Qgbm9ybWFsaXplKS4KKyAgICAi
IiIKKyAgICByZXR1cm4gUGF0aChvcy5wYXRoLmFic3BhdGgoc3RyKHBhdGgpKSkKKworCitkZWYg
Y29tbW9ucGF0aChwYXRoMTogUGF0aCwgcGF0aDI6IFBhdGgpIC0+IE9wdGlvbmFsW1BhdGhdOgor
ICAgICIiIlJldHVybiB0aGUgY29tbW9uIHBhcnQgc2hhcmVkIHdpdGggdGhlIG90aGVyIHBhdGgs
IG9yIE5vbmUgaWYgdGhlcmUgaXMKKyAgICBubyBjb21tb24gcGFydC4iIiIKKyAgICB0cnk6Cisg
ICAgICAgIHJldHVybiBQYXRoKG9zLnBhdGguY29tbW9ucGF0aCgoc3RyKHBhdGgxKSwgc3RyKHBh
dGgyKSkpKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisK
K2RlZiBiZXN0cmVscGF0aChkaXJlY3Rvcnk6IFBhdGgsIGRlc3Q6IFBhdGgpIC0+IHN0cjoKKyAg
ICAiIiJSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgYSByZWxhdGl2ZSBwYXRoIGZyb20gZGlyZWN0
b3J5IHRvIGRlc3Qgc3VjaAorICAgIHRoYXQgZGlyZWN0b3J5L2Jlc3RyZWxwYXRoID09IGRlc3Qu
CisKKyAgICBJZiBubyBzdWNoIHBhdGggY2FuIGJlIGRldGVybWluZWQsIHJldHVybnMgZGVzdC4K
KyAgICAiIiIKKyAgICBpZiBkZXN0ID09IGRpcmVjdG9yeToKKyAgICAgICAgcmV0dXJuIG9zLmN1
cmRpcgorICAgICMgRmluZCB0aGUgbG9uZ2VzdCBjb21tb24gZGlyZWN0b3J5LgorICAgIGJhc2Ug
PSBjb21tb25wYXRoKGRpcmVjdG9yeSwgZGVzdCkKKyAgICAjIENhbiBiZSB0aGUgY2FzZSBvbiBX
aW5kb3dzLgorICAgIGlmIG5vdCBiYXNlOgorICAgICAgICByZXR1cm4gc3RyKGRlc3QpCisgICAg
cmVsZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnJlbGF0aXZlX3RvKGJhc2UpCisgICAgcmVsZGVzdCA9
IGRlc3QucmVsYXRpdmVfdG8oYmFzZSkKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKAorICAgICAg
ICAjIEJhY2sgZnJvbSBkaXJlY3RvcnkgdG8gYmFzZS4KKyAgICAgICAgKihbb3MucGFyZGlyXSAq
IGxlbihyZWxkaXJlY3RvcnkucGFydHMpKSwKKyAgICAgICAgIyBGb3J3YXJkIGZyb20gYmFzZSB0
byBkZXN0LgorICAgICAgICAqcmVsZGVzdC5wYXJ0cywKKyAgICApCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9weS50eXBlZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5
LnR5cGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJi
MmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRlc3Rlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGVzdGVyLnB5CmluZGV4IGM5ZGVmZTAzYTY2OC4uZDc4
MDYyYTg2Y2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRlc3Rlci5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRlc3Rlci5weQpAQCAtMSw0NSArMSw3
MiBAQAotIiIiKGRpc2FibGVkIGJ5IGRlZmF1bHQpIHN1cHBvcnQgZm9yIHRlc3RpbmcgcHl0ZXN0
IGFuZCBweXRlc3QgcGx1Z2lucy4iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGNvZGVjcworIiIiKERp
c2FibGVkIGJ5IGRlZmF1bHQpIHN1cHBvcnQgZm9yIHRlc3RpbmcgcHl0ZXN0IGFuZCBweXRlc3Qg
cGx1Z2lucy4iIiIKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBnYworaW1wb3J0IGlt
cG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogaW1wb3J0IHN1
YnByb2Nlc3MKLWltcG9ydCBzaXgKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdHJh
Y2ViYWNrCiBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKLQorZnJvbSBpbyBpbXBvcnQgU3Ry
aW5nSU8KK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IERp
Y3QKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVy
YWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bAorZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUK
K2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrS2V5RGlj
dGlvbmFyeQogCi1mcm9tIF9weXRlc3QuY2FwdHVyZSBpbXBvcnQgTXVsdGlDYXB0dXJlLCBTeXND
YXB0dXJlCi1mcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IFNvdXJjZQogaW1wb3J0IHB5Ci1pbXBv
cnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbiwgRVhJVF9PSwotZnJv
bSBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlIGltcG9ydCBBc3NlcnRpb25SZXdyaXRpbmdIb29r
Citmcm9tIGluaWNvbmZpZyBpbXBvcnQgSW5pQ29uZmlnCiAKLQotUFlURVNUX0ZVTExQQVRIID0g
b3MucGF0aC5hYnNwYXRoKHB5dGVzdC5fX2ZpbGVfXy5yc3RyaXAoIm9jIikpLnJlcGxhY2UoCi0g
ICAgIiRweS5jbGFzcyIsICIucHkiCi0pCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QgaW1w
b3J0IHRpbWluZworZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBTb3VyY2UKK2Zyb20gX3B5dGVz
dC5jYXB0dXJlIGltcG9ydCBfZ2V0X211bHRpY2FwdHVyZQorZnJvbSBfcHl0ZXN0LmNvbXBhdCBp
bXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IG92ZXJsb2FkCitmcm9tIF9w
eXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuY29uZmlnIGlt
cG9ydCBfUGx1Z2d5UGx1Z2luCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zy
b20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3QuY29uZmlnIGlt
cG9ydCBQeXRlc3RQbHVnaW5NYW5hZ2VyCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcg
aW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVxdWVz
dAorZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zyb20gX3B5dGVzdC5tb25rZXlw
YXRjaCBpbXBvcnQgTW9ua2V5UGF0Y2gKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVj
dG9yCitmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0KK2Zyb20gX3B5dGVzdC5wYXRobGli
IGltcG9ydCBtYWtlX251bWJlcmVkX2RpcgorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBh
dGgKK2Zyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IE1vZHVsZQorZnJvbSBfcHl0ZXN0LnJlcG9y
dHMgaW1wb3J0IENvbGxlY3RSZXBvcnQKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBUZXN0
UmVwb3J0Citmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCBUZW1wZGlyRmFjdG9yeQorCitpZiBU
WVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCisgICAgZnJvbSB0eXBp
bmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAorCisgICAgaW1wb3J0IHBleHBlY3QKIAogCiBJ
R05PUkVfUEFNID0gWyAgIyBmaWxlbmFtZXMgYWRkZWQgd2hlbiBvYnRhaW5pbmcgZGV0YWlscyBh
Ym91dCB0aGUgY3VycmVudCB1c2VyCi0gICAgdSIvdmFyL2xpYi9zc3MvbWMvcGFzc3dkIgorICAg
ICIvdmFyL2xpYi9zc3MvbWMvcGFzc3dkIgogXQogCiAKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBh
cnNlcik6CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4gTm9uZToKICAg
ICBwYXJzZXIuYWRkb3B0aW9uKAogICAgICAgICAiLS1sc29mIiwKICAgICAgICAgYWN0aW9uPSJz
dG9yZV90cnVlIiwKICAgICAgICAgZGVzdD0ibHNvZiIsCiAgICAgICAgIGRlZmF1bHQ9RmFsc2Us
Ci0gICAgICAgIGhlbHA9KCJydW4gRkQgY2hlY2tzIGlmIGxzb2YgaXMgYXZhaWxhYmxlIiksCisg
ICAgICAgIGhlbHA9InJ1biBGRCBjaGVja3MgaWYgbHNvZiBpcyBhdmFpbGFibGUiLAogICAgICkK
IAogICAgIHBhcnNlci5hZGRvcHRpb24oCkBAIC01MywyOCArODAsMzUgQEAgZGVmIHB5dGVzdF9h
ZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgKSwKICAgICApCiAKKyAgICBwYXJzZXIuYWRkaW5p
KAorICAgICAgICAicHl0ZXN0ZXJfZXhhbXBsZV9kaXIiLCBoZWxwPSJkaXJlY3RvcnkgdG8gdGFr
ZSB0aGUgcHl0ZXN0ZXIgZXhhbXBsZSBmaWxlcyBmcm9tIgorICAgICkKIAotZGVmIHB5dGVzdF9j
b25maWd1cmUoY29uZmlnKToKKworZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcp
IC0+IE5vbmU6CiAgICAgaWYgY29uZmlnLmdldHZhbHVlKCJsc29mIik6CiAgICAgICAgIGNoZWNr
ZXIgPSBMc29mRmRMZWFrQ2hlY2tlcigpCiAgICAgICAgIGlmIGNoZWNrZXIubWF0Y2hpbmdfcGxh
dGZvcm0oKToKICAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKGNoZWNr
ZXIpCiAKKyAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgKKyAgICAgICAgIm1hcmtlcnMiLAor
ICAgICAgICAicHl0ZXN0ZXJfZXhhbXBsZV9wYXRoKCpwYXRoX3NlZ21lbnRzKTogam9pbiB0aGUg
Z2l2ZW4gcGF0aCAiCisgICAgICAgICJzZWdtZW50cyB0byBgcHl0ZXN0ZXJfZXhhbXBsZV9kaXJg
IGZvciB0aGlzIHRlc3QuIiwKKyAgICApCiAKLWNsYXNzIExzb2ZGZExlYWtDaGVja2VyKG9iamVj
dCk6Ci0KLSAgICBkZWYgZ2V0X29wZW5fZmlsZXMoc2VsZik6Ci0gICAgICAgIG91dCA9IHNlbGYu
X2V4ZWNfbHNvZigpCi0gICAgICAgIG9wZW5fZmlsZXMgPSBzZWxmLl9wYXJzZV9sc29mX291dHB1
dChvdXQpCi0gICAgICAgIHJldHVybiBvcGVuX2ZpbGVzCi0KLSAgICBkZWYgX2V4ZWNfbHNvZihz
ZWxmKToKLSAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLSAgICAgICAgcmV0dXJuIHB5LnByb2Nl
c3MuY21kZXhlYygibHNvZiAtRmZuMCAtcCAlZCIgJSBwaWQpCiAKLSAgICBkZWYgX3BhcnNlX2xz
b2Zfb3V0cHV0KHNlbGYsIG91dCk6CitjbGFzcyBMc29mRmRMZWFrQ2hlY2tlcjoKKyAgICBkZWYg
Z2V0X29wZW5fZmlsZXMoc2VsZikgLT4gTGlzdFtUdXBsZVtzdHIsIHN0cl1dOgorICAgICAgICBv
dXQgPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAgICAgICAgICgibHNvZiIsICItRmZuMCIsICItcCIs
IHN0cihvcy5nZXRwaWQoKSkpLAorICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwK
KyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICBjaGVj
az1UcnVlLAorICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICku
c3Rkb3V0CiAKLSAgICAgICAgZGVmIGlzb3BlbihsaW5lKToKKyAgICAgICAgZGVmIGlzb3Blbihs
aW5lOiBzdHIpIC0+IGJvb2w6CiAgICAgICAgICAgICByZXR1cm4gbGluZS5zdGFydHN3aXRoKCJm
IikgYW5kICgKICAgICAgICAgICAgICAgICAiZGVsZXRlZCIgbm90IGluIGxpbmUKICAgICAgICAg
ICAgICAgICBhbmQgIm1lbSIgbm90IGluIGxpbmUKQEAgLTk2LDE5ICsxMzAsMTYgQEAgY2xhc3Mg
THNvZkZkTGVha0NoZWNrZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gb3Blbl9maWxlcwog
Ci0gICAgZGVmIG1hdGNoaW5nX3BsYXRmb3JtKHNlbGYpOgorICAgIGRlZiBtYXRjaGluZ19wbGF0
Zm9ybShzZWxmKSAtPiBib29sOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBweS5wcm9jZXNz
LmNtZGV4ZWMoImxzb2YgLXYiKQotICAgICAgICBleGNlcHQgKHB5LnByb2Nlc3MuY21kZXhlYy5F
cnJvciwgVW5pY29kZURlY29kZUVycm9yKToKLSAgICAgICAgICAgICMgY21kZXhlYyBtYXkgcmFp
c2UgVW5pY29kZURlY29kZUVycm9yIG9uIFdpbmRvd3Mgc3lzdGVtcyB3aXRoCi0gICAgICAgICAg
ICAjIGxvY2FsZSBvdGhlciB0aGFuIEVuZ2xpc2g6Ci0gICAgICAgICAgICAjIGh0dHBzOi8vYml0
YnVja2V0Lm9yZy9weXRlc3QtZGV2L3B5L2lzc3Vlcy82NgorICAgICAgICAgICAgc3VicHJvY2Vz
cy5ydW4oKCJsc29mIiwgIi12IiksIGNoZWNrPVRydWUpCisgICAgICAgIGV4Y2VwdCAoT1NFcnJv
ciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgQHB5dGVz
dC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlLCB0cnlmaXJzdD1UcnVlKQotICAgIGRlZiBweXRl
c3RfcnVudGVzdF9wcm90b2NvbChzZWxmLCBpdGVtKToKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rf
cHJvdG9jb2woc2VsZiwgaXRlbTogSXRlbSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVd
OgogICAgICAgICBsaW5lczEgPSBzZWxmLmdldF9vcGVuX2ZpbGVzKCkKICAgICAgICAgeWllbGQK
ICAgICAgICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgpAQCAtMTE4LDEz
OSArMTQ5LDkxIEBAIGNsYXNzIExzb2ZGZExlYWtDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIG5l
d19mZHMgPSB7dFswXSBmb3IgdCBpbiBsaW5lczJ9IC0ge3RbMF0gZm9yIHQgaW4gbGluZXMxfQog
ICAgICAgICBsZWFrZWRfZmlsZXMgPSBbdCBmb3IgdCBpbiBsaW5lczIgaWYgdFswXSBpbiBuZXdf
ZmRzXQogICAgICAgICBpZiBsZWFrZWRfZmlsZXM6Ci0gICAgICAgICAgICBlcnJvciA9IFtdCi0g
ICAgICAgICAgICBlcnJvci5hcHBlbmQoIioqKioqICVzIEZEIGxlYWthZ2UgZGV0ZWN0ZWQiICUg
bGVuKGxlYWtlZF9maWxlcykpCi0gICAgICAgICAgICBlcnJvci5leHRlbmQoW3N0cihmKSBmb3Ig
ZiBpbiBsZWFrZWRfZmlsZXNdKQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKiogQmVmb3Jl
OiIpCi0gICAgICAgICAgICBlcnJvci5leHRlbmQoW3N0cihmKSBmb3IgZiBpbiBsaW5lczFdKQot
ICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKiogQWZ0ZXI6IikKLSAgICAgICAgICAgIGVycm9y
LmV4dGVuZChbc3RyKGYpIGZvciBmIGluIGxpbmVzMl0pCi0gICAgICAgICAgICBlcnJvci5hcHBl
bmQoZXJyb3JbMF0pCi0gICAgICAgICAgICBlcnJvci5hcHBlbmQoIioqKiBmdW5jdGlvbiAlczol
czogJXMgIiAlIGl0ZW0ubG9jYXRpb24pCi0gICAgICAgICAgICBlcnJvci5hcHBlbmQoIlNlZSBp
c3N1ZSAjMjM2NiIpCi0gICAgICAgICAgICBpdGVtLndhcm4oIiIsICJcbiIuam9pbihlcnJvcikp
Ci0KLQotIyBYWFggY29waWVkIGZyb20gZXhlY25ldCdzIGNvbmZ0ZXN0LnB5IC0gbmVlZHMgdG8g
YmUgbWVyZ2VkCi13aW5weW1hcCA9IHsKLSAgICAicHl0aG9uMi43IjogciJDOlxQeXRob24yN1xw
eXRob24uZXhlIiwKLSAgICAicHl0aG9uMy40IjogciJDOlxQeXRob24zNFxweXRob24uZXhlIiwK
LSAgICAicHl0aG9uMy41IjogciJDOlxQeXRob24zNVxweXRob24uZXhlIiwKLSAgICAicHl0aG9u
My42IjogciJDOlxQeXRob24zNlxweXRob24uZXhlIiwKLX0KLQotCi1kZWYgZ2V0ZXhlY3V0YWJs
ZShuYW1lLCBjYWNoZT17fSk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gY2FjaGVbbmFtZV0K
LSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIGV4ZWN1dGFibGUgPSBweS5wYXRoLmxvY2Fs
LnN5c2ZpbmQobmFtZSkKLSAgICAgICAgaWYgZXhlY3V0YWJsZToKLSAgICAgICAgICAgIGltcG9y
dCBzdWJwcm9jZXNzCi0KLSAgICAgICAgICAgIHBvcGVuID0gc3VicHJvY2Vzcy5Qb3BlbigKLSAg
ICAgICAgICAgICAgICBbc3RyKGV4ZWN1dGFibGUpLCAiLS12ZXJzaW9uIl0sCi0gICAgICAgICAg
ICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgc3RkZXJyPXN1
YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIG91dCwgZXJyID0gcG9w
ZW4uY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgaWYgbmFtZSA9PSAianl0aG9uIjoKLSAgICAg
ICAgICAgICAgICBpZiBub3QgZXJyIG9yICIyLjUiIG5vdCBpbiBlcnI6Ci0gICAgICAgICAgICAg
ICAgICAgIGV4ZWN1dGFibGUgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgIjIuNS4yIiBpbiBl
cnI6Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBOb25lICAjIGh0dHA6Ly9idWdz
Lmp5dGhvbi5vcmcvaXNzdWUxNzkwCi0gICAgICAgICAgICBlbGlmIHBvcGVuLnJldHVybmNvZGUg
IT0gMDoKLSAgICAgICAgICAgICAgICAjIGhhbmRsZSBweWVudidzIDEyNwotICAgICAgICAgICAg
ICAgIGV4ZWN1dGFibGUgPSBOb25lCi0gICAgICAgIGNhY2hlW25hbWVdID0gZXhlY3V0YWJsZQot
ICAgICAgICByZXR1cm4gZXhlY3V0YWJsZQotCi0KLUBweXRlc3QuZml4dHVyZShwYXJhbXM9WyJw
eXRob24yLjciLCAicHl0aG9uMy40IiwgInB5cHkiLCAicHlweTMiXSkKLWRlZiBhbnlweXRob24o
cmVxdWVzdCk6Ci0gICAgbmFtZSA9IHJlcXVlc3QucGFyYW0KLSAgICBleGVjdXRhYmxlID0gZ2V0
ZXhlY3V0YWJsZShuYW1lKQotICAgIGlmIGV4ZWN1dGFibGUgaXMgTm9uZToKLSAgICAgICAgaWYg
c3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBleGVjdXRhYmxlID0gd2lucHlt
YXAuZ2V0KG5hbWUsIE5vbmUpCi0gICAgICAgICAgICBpZiBleGVjdXRhYmxlOgotICAgICAgICAg
ICAgICAgIGV4ZWN1dGFibGUgPSBweS5wYXRoLmxvY2FsKGV4ZWN1dGFibGUpCi0gICAgICAgICAg
ICAgICAgaWYgZXhlY3V0YWJsZS5jaGVjaygpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXhlY3V0YWJsZQotICAgICAgICBweXRlc3Quc2tpcCgibm8gc3VpdGFibGUgJXMgZm91bmQiICUg
KG5hbWUsKSkKLSAgICByZXR1cm4gZXhlY3V0YWJsZQorICAgICAgICAgICAgZXJyb3IgPSBbCisg
ICAgICAgICAgICAgICAgIioqKioqICVzIEZEIGxlYWthZ2UgZGV0ZWN0ZWQiICUgbGVuKGxlYWtl
ZF9maWxlcyksCisgICAgICAgICAgICAgICAgKihzdHIoZikgZm9yIGYgaW4gbGVha2VkX2ZpbGVz
KSwKKyAgICAgICAgICAgICAgICAiKioqIEJlZm9yZToiLAorICAgICAgICAgICAgICAgICooc3Ry
KGYpIGZvciBmIGluIGxpbmVzMSksCisgICAgICAgICAgICAgICAgIioqKiBBZnRlcjoiLAorICAg
ICAgICAgICAgICAgICooc3RyKGYpIGZvciBmIGluIGxpbmVzMiksCisgICAgICAgICAgICAgICAg
IioqKioqICVzIEZEIGxlYWthZ2UgZGV0ZWN0ZWQiICUgbGVuKGxlYWtlZF9maWxlcyksCisgICAg
ICAgICAgICAgICAgIioqKiBmdW5jdGlvbiAlczolczogJXMgIiAlIGl0ZW0ubG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgIlNlZSBpc3N1ZSAjMjM2NiIsCisgICAgICAgICAgICBdCisgICAgICAg
ICAgICBpdGVtLndhcm4ocHl0ZXN0LlB5dGVzdFdhcm5pbmcoIlxuIi5qb2luKGVycm9yKSkpCiAK
IAogIyB1c2VkIGF0IGxlYXN0IGJ5IHB5dGVzdC14ZGlzdCBwbHVnaW4KIAogCiBAcHl0ZXN0LmZp
eHR1cmUKLWRlZiBfcHl0ZXN0KHJlcXVlc3QpOgorZGVmIF9weXRlc3QocmVxdWVzdDogRml4dHVy
ZVJlcXVlc3QpIC0+ICJQeXRlc3RBcmciOgogICAgICIiIlJldHVybiBhIGhlbHBlciB3aGljaCBv
ZmZlcnMgYSBnZXRob29rcmVjb3JkZXIoaG9vaykgbWV0aG9kIHdoaWNoCiAgICAgcmV0dXJucyBh
IEhvb2tSZWNvcmRlciBpbnN0YW5jZSB3aGljaCBoZWxwcyB0byBtYWtlIGFzc2VydGlvbnMgYWJv
dXQgY2FsbGVkCi0gICAgaG9va3MuCi0KLSAgICAiIiIKKyAgICBob29rcy4iIiIKICAgICByZXR1
cm4gUHl0ZXN0QXJnKHJlcXVlc3QpCiAKIAotY2xhc3MgUHl0ZXN0QXJnKG9iamVjdCk6Ci0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CitjbGFzcyBQeXRlc3RBcmc6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBOb25lOgogICAgICAg
ICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0CiAKLSAgICBkZWYgZ2V0aG9va3JlY29yZGVyKHNlbGYs
IGhvb2spOgorICAgIGRlZiBnZXRob29rcmVjb3JkZXIoc2VsZiwgaG9vaykgLT4gIkhvb2tSZWNv
cmRlciI6CiAgICAgICAgIGhvb2tyZWNvcmRlciA9IEhvb2tSZWNvcmRlcihob29rLl9wbSkKICAg
ICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihob29rcmVjb3JkZXIuZmluaXNoX3JlY29y
ZGluZykKICAgICAgICAgcmV0dXJuIGhvb2tyZWNvcmRlcgogCiAKLWRlZiBnZXRfcHVibGljX25h
bWVzKHZhbHVlcyk6CitkZWYgZ2V0X3B1YmxpY19uYW1lcyh2YWx1ZXM6IEl0ZXJhYmxlW3N0cl0p
IC0+IExpc3Rbc3RyXToKICAgICAiIiJPbmx5IHJldHVybiBuYW1lcyBmcm9tIGl0ZXJhdG9yIHZh
bHVlcyB3aXRob3V0IGEgbGVhZGluZyB1bmRlcnNjb3JlLiIiIgogICAgIHJldHVybiBbeCBmb3Ig
eCBpbiB2YWx1ZXMgaWYgeFswXSAhPSAiXyJdCiAKIAotY2xhc3MgUGFyc2VkQ2FsbChvYmplY3Qp
OgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGt3YXJncyk6CitjbGFzcyBQYXJzZWRD
YWxsOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIGt3YXJncykgLT4gTm9uZToK
ICAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoa3dhcmdzKQogICAgICAgICBzZWxmLl9uYW1l
ID0gbmFtZQogCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIGRlZiBfX3JlcHJfXyhzZWxm
KSAtPiBzdHI6CiAgICAgICAgIGQgPSBzZWxmLl9fZGljdF9fLmNvcHkoKQogICAgICAgICBkZWwg
ZFsiX25hbWUiXQotICAgICAgICByZXR1cm4gIjxQYXJzZWRDYWxsICVyKCoqJXIpPiIgJSAoc2Vs
Zi5fbmFtZSwgZCkKKyAgICAgICAgcmV0dXJuICI8UGFyc2VkQ2FsbCB7IXJ9KCoqeyFyfSk+Ii5m
b3JtYXQoc2VsZi5fbmFtZSwgZCkKKworICAgIGlmIFRZUEVfQ0hFQ0tJTkc6CisgICAgICAgICMg
VGhlIGNsYXNzIGhhcyB1bmRldGVybWluZWQgYXR0cmlidXRlcywgdGhpcyB0ZWxscyBteXB5IGFi
b3V0IGl0LgorICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwga2V5OiBzdHIpOgorICAgICAg
ICAgICAgLi4uCiAKIAotY2xhc3MgSG9va1JlY29yZGVyKG9iamVjdCk6CitjbGFzcyBIb29rUmVj
b3JkZXI6CiAgICAgIiIiUmVjb3JkIGFsbCBob29rcyBjYWxsZWQgaW4gYSBwbHVnaW4gbWFuYWdl
ci4KIAogICAgIFRoaXMgd3JhcHMgYWxsIHRoZSBob29rIGNhbGxzIGluIHRoZSBwbHVnaW4gbWFu
YWdlciwgcmVjb3JkaW5nIGVhY2ggY2FsbAogICAgIGJlZm9yZSBwcm9wYWdhdGluZyB0aGUgbm9y
bWFsIGNhbGxzLgotCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGx1Z2lubWFu
YWdlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsdWdpbm1hbmFnZXI6IFB5dGVzdFBsdWdp
bk1hbmFnZXIpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX3BsdWdpbm1hbmFnZXIgPSBwbHVnaW5t
YW5hZ2VyCi0gICAgICAgIHNlbGYuY2FsbHMgPSBbXQorICAgICAgICBzZWxmLmNhbGxzID0gW10g
ICMgdHlwZTogTGlzdFtQYXJzZWRDYWxsXQorICAgICAgICBzZWxmLnJldCA9IE5vbmUgICMgdHlw
ZTogT3B0aW9uYWxbVW5pb25baW50LCBFeGl0Q29kZV1dCiAKLSAgICAgICAgZGVmIGJlZm9yZSho
b29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncyk6CisgICAgICAgIGRlZiBiZWZvcmUoaG9va19u
YW1lOiBzdHIsIGhvb2tfaW1wbHMsIGt3YXJncykgLT4gTm9uZToKICAgICAgICAgICAgIHNlbGYu
Y2FsbHMuYXBwZW5kKFBhcnNlZENhbGwoaG9va19uYW1lLCBrd2FyZ3MpKQogCi0gICAgICAgIGRl
ZiBhZnRlcihvdXRjb21lLCBob29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncyk6CisgICAgICAg
IGRlZiBhZnRlcihvdXRjb21lLCBob29rX25hbWU6IHN0ciwgaG9va19pbXBscywga3dhcmdzKSAt
PiBOb25lOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuX3VuZG9fd3JhcHBpbmcg
PSBwbHVnaW5tYW5hZ2VyLmFkZF9ob29rY2FsbF9tb25pdG9yaW5nKGJlZm9yZSwgYWZ0ZXIpCiAK
LSAgICBkZWYgZmluaXNoX3JlY29yZGluZyhzZWxmKToKKyAgICBkZWYgZmluaXNoX3JlY29yZGlu
ZyhzZWxmKSAtPiBOb25lOgogICAgICAgICBzZWxmLl91bmRvX3dyYXBwaW5nKCkKIAotICAgIGRl
ZiBnZXRjYWxscyhzZWxmLCBuYW1lcyk6CisgICAgZGVmIGdldGNhbGxzKHNlbGYsIG5hbWVzOiBV
bmlvbltzdHIsIEl0ZXJhYmxlW3N0cl1dKSAtPiBMaXN0W1BhcnNlZENhbGxdOgogICAgICAgICBp
ZiBpc2luc3RhbmNlKG5hbWVzLCBzdHIpOgogICAgICAgICAgICAgbmFtZXMgPSBuYW1lcy5zcGxp
dCgpCiAgICAgICAgIHJldHVybiBbY2FsbCBmb3IgY2FsbCBpbiBzZWxmLmNhbGxzIGlmIGNhbGwu
X25hbWUgaW4gbmFtZXNdCiAKLSAgICBkZWYgYXNzZXJ0X2NvbnRhaW5zKHNlbGYsIGVudHJpZXMp
OgorICAgIGRlZiBhc3NlcnRfY29udGFpbnMoc2VsZiwgZW50cmllczogU2VxdWVuY2VbVHVwbGVb
c3RyLCBzdHJdXSkgLT4gTm9uZToKICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAg
ICAgICAgIGkgPSAwCiAgICAgICAgIGVudHJpZXMgPSBsaXN0KGVudHJpZXMpCkBAIC0yNjksNDQg
KzI1Miw3MiBAQCBjbGFzcyBIb29rUmVjb3JkZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKICAgICAgICAgICAgICAgICBwcmludCgiTk9OQU1FTUFUQ0giLCBuYW1lLCAid2l0
aCIsIGNhbGwpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHB5dGVzdC5mYWls
KCJjb3VsZCBub3QgZmluZCAlciBjaGVjayAlciIgJSAobmFtZSwgY2hlY2spKQorICAgICAgICAg
ICAgICAgIHB5dGVzdC5mYWlsKCJjb3VsZCBub3QgZmluZCB7IXJ9IGNoZWNrIHshcn0iLmZvcm1h
dChuYW1lLCBjaGVjaykpCiAKLSAgICBkZWYgcG9wY2FsbChzZWxmLCBuYW1lKToKKyAgICBkZWYg
cG9wY2FsbChzZWxmLCBuYW1lOiBzdHIpIC0+IFBhcnNlZENhbGw6CiAgICAgICAgIF9fdHJhY2Vi
YWNraGlkZV9fID0gVHJ1ZQogICAgICAgICBmb3IgaSwgY2FsbCBpbiBlbnVtZXJhdGUoc2VsZi5j
YWxscyk6CiAgICAgICAgICAgICBpZiBjYWxsLl9uYW1lID09IG5hbWU6CiAgICAgICAgICAgICAg
ICAgZGVsIHNlbGYuY2FsbHNbaV0KICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbAotICAgICAg
ICBsaW5lcyA9IFsiY291bGQgbm90IGZpbmQgY2FsbCAlciwgaW46IiAlIChuYW1lLCldCi0gICAg
ICAgIGxpbmVzLmV4dGVuZChbIiAgJXMiICUgc3RyKHgpIGZvciB4IGluIHNlbGYuY2FsbHNdKQor
ICAgICAgICBsaW5lcyA9IFsiY291bGQgbm90IGZpbmQgY2FsbCB7IXJ9LCBpbjoiLmZvcm1hdChu
YW1lKV0KKyAgICAgICAgbGluZXMuZXh0ZW5kKFsiICAlcyIgJSB4IGZvciB4IGluIHNlbGYuY2Fs
bHNdKQogICAgICAgICBweXRlc3QuZmFpbCgiXG4iLmpvaW4obGluZXMpKQogCi0gICAgZGVmIGdl
dGNhbGwoc2VsZiwgbmFtZSk6CisgICAgZGVmIGdldGNhbGwoc2VsZiwgbmFtZTogc3RyKSAtPiBQ
YXJzZWRDYWxsOgogICAgICAgICB2YWx1ZXMgPSBzZWxmLmdldGNhbGxzKG5hbWUpCiAgICAgICAg
IGFzc2VydCBsZW4odmFsdWVzKSA9PSAxLCAobmFtZSwgdmFsdWVzKQogICAgICAgICByZXR1cm4g
dmFsdWVzWzBdCiAKICAgICAjIGZ1bmN0aW9uYWxpdHkgZm9yIHRlc3QgcmVwb3J0cwogCi0gICAg
ZGVmIGdldHJlcG9ydHMoc2VsZiwgbmFtZXM9InB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCBweXRl
c3RfY29sbGVjdHJlcG9ydCIpOgorICAgIEBvdmVybG9hZAorICAgIGRlZiBnZXRyZXBvcnRzKAor
ICAgICAgICBzZWxmLCBuYW1lczogIkxpdGVyYWxbJ3B5dGVzdF9jb2xsZWN0cmVwb3J0J10iLAor
ICAgICkgLT4gU2VxdWVuY2VbQ29sbGVjdFJlcG9ydF06CisgICAgICAgIC4uLgorCisgICAgQG92
ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICBkZWYgZ2V0cmVwb3J0cyggICMgbm9xYTogRjgxMQor
ICAgICAgICBzZWxmLCBuYW1lczogIkxpdGVyYWxbJ3B5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCdd
IiwKKyAgICApIC0+IFNlcXVlbmNlW1Rlc3RSZXBvcnRdOgorICAgICAgICAuLi4KKworICAgIEBv
dmVybG9hZCAgIyBub3FhOiBGODExCisgICAgZGVmIGdldHJlcG9ydHMoICAjIG5vcWE6IEY4MTEK
KyAgICAgICAgc2VsZiwKKyAgICAgICAgbmFtZXM6IFVuaW9uW3N0ciwgSXRlcmFibGVbc3RyXV0g
PSAoCisgICAgICAgICAgICAicHl0ZXN0X2NvbGxlY3RyZXBvcnQiLAorICAgICAgICAgICAgInB5
dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIsCisgICAgICAgICksCisgICAgKSAtPiBTZXF1ZW5jZVtV
bmlvbltDb2xsZWN0UmVwb3J0LCBUZXN0UmVwb3J0XV06CisgICAgICAgIC4uLgorCisgICAgZGVm
IGdldHJlcG9ydHMoICAjIG5vcWE6IEY4MTEKKyAgICAgICAgc2VsZiwKKyAgICAgICAgbmFtZXM6
IFVuaW9uW3N0ciwgSXRlcmFibGVbc3RyXV0gPSAoCisgICAgICAgICAgICAicHl0ZXN0X2NvbGxl
Y3RyZXBvcnQiLAorICAgICAgICAgICAgInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIsCisgICAg
ICAgICksCisgICAgKSAtPiBTZXF1ZW5jZVtVbmlvbltDb2xsZWN0UmVwb3J0LCBUZXN0UmVwb3J0
XV06CiAgICAgICAgIHJldHVybiBbeC5yZXBvcnQgZm9yIHggaW4gc2VsZi5nZXRjYWxscyhuYW1l
cyldCiAKICAgICBkZWYgbWF0Y2hyZXBvcnQoCiAgICAgICAgIHNlbGYsCi0gICAgICAgIGluYW1l
cGFydD0iIiwKLSAgICAgICAgbmFtZXM9InB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCBweXRlc3Rf
Y29sbGVjdHJlcG9ydCIsCi0gICAgICAgIHdoZW49Tm9uZSwKLSAgICApOgotICAgICAgICAiIiJy
ZXR1cm4gYSB0ZXN0cmVwb3J0IHdob3NlIGRvdHRlZCBpbXBvcnQgcGF0aCBtYXRjaGVzIiIiCisg
ICAgICAgIGluYW1lcGFydDogc3RyID0gIiIsCisgICAgICAgIG5hbWVzOiBVbmlvbltzdHIsIEl0
ZXJhYmxlW3N0cl1dID0gKAorICAgICAgICAgICAgInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIs
CisgICAgICAgICAgICAicHl0ZXN0X2NvbGxlY3RyZXBvcnQiLAorICAgICAgICApLAorICAgICAg
ICB3aGVuOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICApIC0+IFVuaW9uW0NvbGxlY3RSZXBv
cnQsIFRlc3RSZXBvcnRdOgorICAgICAgICAiIiJSZXR1cm4gYSB0ZXN0cmVwb3J0IHdob3NlIGRv
dHRlZCBpbXBvcnQgcGF0aCBtYXRjaGVzLiIiIgogICAgICAgICB2YWx1ZXMgPSBbXQogICAgICAg
ICBmb3IgcmVwIGluIHNlbGYuZ2V0cmVwb3J0cyhuYW1lcz1uYW1lcyk6Ci0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHdoZW4gYW5kIHJlcC53aGVuICE9ICJjYWxsIiBh
bmQgcmVwLnBhc3NlZDoKLSAgICAgICAgICAgICAgICAgICAgIyBzZXR1cC90ZWFyZG93biBwYXNz
aW5nIHJlcG9ydHMgLSBsZXQncyBpZ25vcmUgdGhvc2UKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAg
ICBwYXNzCi0gICAgICAgICAgICBpZiB3aGVuIGFuZCBnZXRhdHRyKHJlcCwgIndoZW4iLCBOb25l
KSAhPSB3aGVuOgorICAgICAgICAgICAgaWYgbm90IHdoZW4gYW5kIHJlcC53aGVuICE9ICJjYWxs
IiBhbmQgcmVwLnBhc3NlZDoKKyAgICAgICAgICAgICAgICAjIHNldHVwL3RlYXJkb3duIHBhc3Np
bmcgcmVwb3J0cyAtIGxldCdzIGlnbm9yZSB0aG9zZQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBpZiB3aGVuIGFuZCByZXAud2hlbiAhPSB3aGVuOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBub3QgaW5hbWVwYXJ0IG9yIGluYW1lcGFydCBp
biByZXAubm9kZWlkLnNwbGl0KCI6OiIpOgogICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQo
cmVwKQpAQCAtMzE3LDEzMyArMzI4LDI2MCBAQCBjbGFzcyBIb29rUmVjb3JkZXIob2JqZWN0KToK
ICAgICAgICAgICAgICkKICAgICAgICAgaWYgbGVuKHZhbHVlcykgPiAxOgogICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAiZm91bmQgMiBvciBtb3JlIHRlc3Ry
ZXBvcnRzIG1hdGNoaW5nICVyOiAlcyIgJSAoaW5hbWVwYXJ0LCB2YWx1ZXMpCisgICAgICAgICAg
ICAgICAgImZvdW5kIDIgb3IgbW9yZSB0ZXN0cmVwb3J0cyBtYXRjaGluZyB7IXJ9OiB7fSIuZm9y
bWF0KAorICAgICAgICAgICAgICAgICAgICBpbmFtZXBhcnQsIHZhbHVlcworICAgICAgICAgICAg
ICAgICkKICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHZhbHVlc1swXQogCi0gICAgZGVm
IGdldGZhaWx1cmVzKHNlbGYsIG5hbWVzPSJweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQgcHl0ZXN0
X2NvbGxlY3RyZXBvcnQiKToKKyAgICBAb3ZlcmxvYWQKKyAgICBkZWYgZ2V0ZmFpbHVyZXMoCisg
ICAgICAgIHNlbGYsIG5hbWVzOiAiTGl0ZXJhbFsncHl0ZXN0X2NvbGxlY3RyZXBvcnQnXSIsCisg
ICAgKSAtPiBTZXF1ZW5jZVtDb2xsZWN0UmVwb3J0XToKKyAgICAgICAgLi4uCisKKyAgICBAb3Zl
cmxvYWQgICMgbm9xYTogRjgxMQorICAgIGRlZiBnZXRmYWlsdXJlcyggICMgbm9xYTogRjgxMQor
ICAgICAgICBzZWxmLCBuYW1lczogIkxpdGVyYWxbJ3B5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCdd
IiwKKyAgICApIC0+IFNlcXVlbmNlW1Rlc3RSZXBvcnRdOgorICAgICAgICAuLi4KKworICAgIEBv
dmVybG9hZCAgIyBub3FhOiBGODExCisgICAgZGVmIGdldGZhaWx1cmVzKCAgIyBub3FhOiBGODEx
CisgICAgICAgIHNlbGYsCisgICAgICAgIG5hbWVzOiBVbmlvbltzdHIsIEl0ZXJhYmxlW3N0cl1d
ID0gKAorICAgICAgICAgICAgInB5dGVzdF9jb2xsZWN0cmVwb3J0IiwKKyAgICAgICAgICAgICJw
eXRlc3RfcnVudGVzdF9sb2dyZXBvcnQiLAorICAgICAgICApLAorICAgICkgLT4gU2VxdWVuY2Vb
VW5pb25bQ29sbGVjdFJlcG9ydCwgVGVzdFJlcG9ydF1dOgorICAgICAgICAuLi4KKworICAgIGRl
ZiBnZXRmYWlsdXJlcyggICMgbm9xYTogRjgxMQorICAgICAgICBzZWxmLAorICAgICAgICBuYW1l
czogVW5pb25bc3RyLCBJdGVyYWJsZVtzdHJdXSA9ICgKKyAgICAgICAgICAgICJweXRlc3RfY29s
bGVjdHJlcG9ydCIsCisgICAgICAgICAgICAicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IiwKKyAg
ICAgICAgKSwKKyAgICApIC0+IFNlcXVlbmNlW1VuaW9uW0NvbGxlY3RSZXBvcnQsIFRlc3RSZXBv
cnRdXToKICAgICAgICAgcmV0dXJuIFtyZXAgZm9yIHJlcCBpbiBzZWxmLmdldHJlcG9ydHMobmFt
ZXMpIGlmIHJlcC5mYWlsZWRdCiAKLSAgICBkZWYgZ2V0ZmFpbGVkY29sbGVjdGlvbnMoc2VsZik6
CisgICAgZGVmIGdldGZhaWxlZGNvbGxlY3Rpb25zKHNlbGYpIC0+IFNlcXVlbmNlW0NvbGxlY3RS
ZXBvcnRdOgogICAgICAgICByZXR1cm4gc2VsZi5nZXRmYWlsdXJlcygicHl0ZXN0X2NvbGxlY3Ry
ZXBvcnQiKQogCi0gICAgZGVmIGxpc3RvdXRjb21lcyhzZWxmKToKKyAgICBkZWYgbGlzdG91dGNv
bWVzKAorICAgICAgICBzZWxmLAorICAgICkgLT4gVHVwbGVbCisgICAgICAgIFNlcXVlbmNlW1Rl
c3RSZXBvcnRdLAorICAgICAgICBTZXF1ZW5jZVtVbmlvbltDb2xsZWN0UmVwb3J0LCBUZXN0UmVw
b3J0XV0sCisgICAgICAgIFNlcXVlbmNlW1VuaW9uW0NvbGxlY3RSZXBvcnQsIFRlc3RSZXBvcnRd
XSwKKyAgICBdOgogICAgICAgICBwYXNzZWQgPSBbXQogICAgICAgICBza2lwcGVkID0gW10KICAg
ICAgICAgZmFpbGVkID0gW10KLSAgICAgICAgZm9yIHJlcCBpbiBzZWxmLmdldHJlcG9ydHMoInB5
dGVzdF9jb2xsZWN0cmVwb3J0IHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpOgorICAgICAgICBm
b3IgcmVwIGluIHNlbGYuZ2V0cmVwb3J0cygKKyAgICAgICAgICAgICgicHl0ZXN0X2NvbGxlY3Ry
ZXBvcnQiLCAicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICAgICAgKToKICAgICAgICAg
ICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAgICAgICAgaWYgZ2V0YXR0cihyZXAsICJ3aGVu
IiwgTm9uZSkgPT0gImNhbGwiOgorICAgICAgICAgICAgICAgIGlmIHJlcC53aGVuID09ICJjYWxs
IjoKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVwLCBUZXN0UmVwb3J0
KQogICAgICAgICAgICAgICAgICAgICBwYXNzZWQuYXBwZW5kKHJlcCkKICAgICAgICAgICAgIGVs
aWYgcmVwLnNraXBwZWQ6CiAgICAgICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQocmVwKQotICAg
ICAgICAgICAgZWxpZiByZXAuZmFpbGVkOgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgcmVwLmZhaWxlZCwgIlVuZXhwZWN0ZWQgb3V0Y29tZTogeyFyfSIuZm9ybWF0
KHJlcCkKICAgICAgICAgICAgICAgICBmYWlsZWQuYXBwZW5kKHJlcCkKICAgICAgICAgcmV0dXJu
IHBhc3NlZCwgc2tpcHBlZCwgZmFpbGVkCiAKLSAgICBkZWYgY291bnRvdXRjb21lcyhzZWxmKToK
KyAgICBkZWYgY291bnRvdXRjb21lcyhzZWxmKSAtPiBMaXN0W2ludF06CiAgICAgICAgIHJldHVy
biBbbGVuKHgpIGZvciB4IGluIHNlbGYubGlzdG91dGNvbWVzKCldCiAKLSAgICBkZWYgYXNzZXJ0
b3V0Y29tZShzZWxmLCBwYXNzZWQ9MCwgc2tpcHBlZD0wLCBmYWlsZWQ9MCk6Ci0gICAgICAgIHJl
YWxwYXNzZWQsIHJlYWxza2lwcGVkLCByZWFsZmFpbGVkID0gc2VsZi5saXN0b3V0Y29tZXMoKQot
ICAgICAgICBhc3NlcnQgcGFzc2VkID09IGxlbihyZWFscGFzc2VkKQotICAgICAgICBhc3NlcnQg
c2tpcHBlZCA9PSBsZW4ocmVhbHNraXBwZWQpCi0gICAgICAgIGFzc2VydCBmYWlsZWQgPT0gbGVu
KHJlYWxmYWlsZWQpCisgICAgZGVmIGFzc2VydG91dGNvbWUoc2VsZiwgcGFzc2VkOiBpbnQgPSAw
LCBza2lwcGVkOiBpbnQgPSAwLCBmYWlsZWQ6IGludCA9IDApIC0+IE5vbmU6CisgICAgICAgIF9f
dHJhY2ViYWNraGlkZV9fID0gVHJ1ZQorCisgICAgICAgIG91dGNvbWVzID0gc2VsZi5saXN0b3V0
Y29tZXMoKQorICAgICAgICByZWFscGFzc2VkLCByZWFsc2tpcHBlZCwgcmVhbGZhaWxlZCA9IG91
dGNvbWVzCisgICAgICAgIG9idGFpbmVkID0geworICAgICAgICAgICAgInBhc3NlZCI6IGxlbihy
ZWFscGFzc2VkKSwKKyAgICAgICAgICAgICJza2lwcGVkIjogbGVuKHJlYWxza2lwcGVkKSwKKyAg
ICAgICAgICAgICJmYWlsZWQiOiBsZW4ocmVhbGZhaWxlZCksCisgICAgICAgIH0KKyAgICAgICAg
ZXhwZWN0ZWQgPSB7InBhc3NlZCI6IHBhc3NlZCwgInNraXBwZWQiOiBza2lwcGVkLCAiZmFpbGVk
IjogZmFpbGVkfQorICAgICAgICBhc3NlcnQgb2J0YWluZWQgPT0gZXhwZWN0ZWQsIG91dGNvbWVz
CiAKLSAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgZGVmIGNsZWFyKHNlbGYpIC0+IE5vbmU6CiAg
ICAgICAgIHNlbGYuY2FsbHNbOl0gPSBbXQogCiAKIEBweXRlc3QuZml4dHVyZQotZGVmIGxpbmVj
b21wKHJlcXVlc3QpOgorZGVmIGxpbmVjb21wKCkgLT4gIkxpbmVDb21wIjoKKyAgICAiIiJBIDpj
bGFzczogYExpbmVDb21wYCBpbnN0YW5jZSBmb3IgY2hlY2tpbmcgdGhhdCBhbiBpbnB1dCBsaW5l
YXJseQorICAgIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncy4iIiIKICAgICByZXR1cm4g
TGluZUNvbXAoKQogCiAKIEBweXRlc3QuZml4dHVyZShuYW1lPSJMaW5lTWF0Y2hlciIpCi1kZWYg
TGluZU1hdGNoZXJfZml4dHVyZShyZXF1ZXN0KToKK2RlZiBMaW5lTWF0Y2hlcl9maXh0dXJlKHJl
cXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiAiVHlwZVtMaW5lTWF0Y2hlcl0iOgorICAgICIiIkEg
cmVmZXJlbmNlIHRvIHRoZSA6Y2xhc3M6IGBMaW5lTWF0Y2hlcmAuCisKKyAgICBUaGlzIGlzIGlu
c3RhbnRpYWJsZSB3aXRoIGEgbGlzdCBvZiBsaW5lcyAod2l0aG91dCB0aGVpciB0cmFpbGluZyBu
ZXdsaW5lcykuCisgICAgVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgbGFyZ2UgdGV4dHMsIHN1
Y2ggYXMgdGhlIG91dHB1dCBvZiBjb21tYW5kcy4KKyAgICAiIiIKICAgICByZXR1cm4gTGluZU1h
dGNoZXIKIAogCiBAcHl0ZXN0LmZpeHR1cmUKLWRlZiB0ZXN0ZGlyKHJlcXVlc3QsIHRtcGRpcl9m
YWN0b3J5KToKK2RlZiB0ZXN0ZGlyKHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0LCB0bXBkaXJfZmFj
dG9yeTogVGVtcGRpckZhY3RvcnkpIC0+ICJUZXN0ZGlyIjoKKyAgICAiIiJBIDpjbGFzczogYFRl
c3REaXJgIGluc3RhbmNlLCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJ1biBhbmQgdGVzdCBweXRlc3Qg
aXRzZWxmLgorCisgICAgSXQgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgdGVzdGluZyBwbHVn
aW5zLiBJdCBpcyBzaW1pbGFyIHRvIHRoZSBgdG1wZGlyYCBmaXh0dXJlCisgICAgYnV0IHByb3Zp
ZGVzIG1ldGhvZHMgd2hpY2ggYWlkIGluIHRlc3RpbmcgcHl0ZXN0IGl0c2VsZi4KKyAgICAiIiIK
ICAgICByZXR1cm4gVGVzdGRpcihyZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSkKIAogCi1yZXhfb3V0
Y29tZSA9IHJlLmNvbXBpbGUociIoXGQrKSAoW1x3LV0rKSIpCitAcHl0ZXN0LmZpeHR1cmUKK2Rl
ZiBfc3lzX3NuYXBzaG90KCkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgIHNu
YXBwYXRocyA9IFN5c1BhdGhzU25hcHNob3QoKQorICAgIHNuYXBtb2RzID0gU3lzTW9kdWxlc1Nu
YXBzaG90KCkKKyAgICB5aWVsZAorICAgIHNuYXBtb2RzLnJlc3RvcmUoKQorICAgIHNuYXBwYXRo
cy5yZXN0b3JlKCkKKwogCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBfY29uZmlnX2Zvcl90ZXN0KCkg
LT4gR2VuZXJhdG9yW0NvbmZpZywgTm9uZSwgTm9uZV06CisgICAgZnJvbSBfcHl0ZXN0LmNvbmZp
ZyBpbXBvcnQgZ2V0X2NvbmZpZwogCi1jbGFzcyBSdW5SZXN1bHQob2JqZWN0KToKLSAgICAiIiJU
aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYSBjb21tYW5kLgorICAgIGNvbmZpZyA9IGdldF9jb25maWco
KQorICAgIHlpZWxkIGNvbmZpZworICAgIGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkgICMg
Y2xlYW51cCwgZS5nLiBjYXBtYW4gY2xvc2luZyB0bXBmaWxlcy4KIAotICAgIEF0dHJpYnV0ZXM6
CiAKLSAgICA6cmV0OiB0aGUgcmV0dXJuIHZhbHVlCi0gICAgOm91dGxpbmVzOiBsaXN0IG9mIGxp
bmVzIGNhcHR1cmVkIGZyb20gc3Rkb3V0Ci0gICAgOmVycmxpbmVzOiBsaXN0IG9mIGxpbmVzIGNh
cHR1cmVzIGZyb20gc3RkZXJyCi0gICAgOnN0ZG91dDogOnB5OmNsYXNzOmBMaW5lTWF0Y2hlcmAg
b2Ygc3Rkb3V0LCB1c2UgYGBzdGRvdXQuc3RyKClgYCB0bwotICAgICAgIHJlY29uc3RydWN0IHN0
ZG91dCBvciB0aGUgY29tbW9ubHkgdXNlZCBgYHN0ZG91dC5mbm1hdGNoX2xpbmVzKClgYAotICAg
ICAgIG1ldGhvZAotICAgIDpzdGRlcnI6IDpweTpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZGVy
cgotICAgIDpkdXJhdGlvbjogZHVyYXRpb24gaW4gc2Vjb25kcworIyBSZWdleCB0byBtYXRjaCB0
aGUgc2Vzc2lvbiBkdXJhdGlvbiBzdHJpbmcgaW4gdGhlIHN1bW1hcnk6ICI3NC4zNHMiLgorcmV4
X3Nlc3Npb25fZHVyYXRpb24gPSByZS5jb21waWxlKHIiXGQrXC5cZFxkcyIpCisjIFJlZ2V4IHRv
IG1hdGNoIGFsbCB0aGUgY291bnRzIGFuZCBwaHJhc2VzIGluIHRoZSBzdW1tYXJ5IGxpbmU6ICIz
NCBwYXNzZWQsIDExMSBza2lwcGVkIi4KK3JleF9vdXRjb21lID0gcmUuY29tcGlsZShyIihcZCsp
IChcdyspIikKIAotICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldCwgb3V0bGlu
ZXMsIGVycmxpbmVzLCBkdXJhdGlvbik6Ci0gICAgICAgIHNlbGYucmV0ID0gcmV0CitjbGFzcyBS
dW5SZXN1bHQ6CisgICAgIiIiVGhlIHJlc3VsdCBvZiBydW5uaW5nIGEgY29tbWFuZC4iIiIKKwor
ICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcmV0OiBVbmlvbltpbnQs
IEV4aXRDb2RlXSwKKyAgICAgICAgb3V0bGluZXM6IExpc3Rbc3RyXSwKKyAgICAgICAgZXJybGlu
ZXM6IExpc3Rbc3RyXSwKKyAgICAgICAgZHVyYXRpb246IGZsb2F0LAorICAgICkgLT4gTm9uZToK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5yZXQgPSBweXRlc3QuRXhpdENvZGUocmV0
KSAgIyB0eXBlOiBVbmlvbltpbnQsIEV4aXRDb2RlXQorICAgICAgICAgICAgIiIiVGhlIHJldHVy
biB2YWx1ZS4iIiIKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBzZWxm
LnJldCA9IHJldAogICAgICAgICBzZWxmLm91dGxpbmVzID0gb3V0bGluZXMKKyAgICAgICAgIiIi
TGlzdCBvZiBsaW5lcyBjYXB0dXJlZCBmcm9tIHN0ZG91dC4iIiIKICAgICAgICAgc2VsZi5lcnJs
aW5lcyA9IGVycmxpbmVzCisgICAgICAgICIiIkxpc3Qgb2YgbGluZXMgY2FwdHVyZWQgZnJvbSBz
dGRlcnIuIiIiCiAgICAgICAgIHNlbGYuc3Rkb3V0ID0gTGluZU1hdGNoZXIob3V0bGluZXMpCisg
ICAgICAgICIiIjpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZG91dC4KKworICAgICAgICBVc2Ug
ZS5nLiA6ZnVuYzpgc3Rkb3V0LnN0cigpIDxMaW5lTWF0Y2hlci5zdHIoKT5gIHRvIHJlY29uc3Ry
dWN0IHN0ZG91dCwgb3IgdGhlIGNvbW1vbmx5IHVzZWQKKyAgICAgICAgOmZ1bmM6YHN0ZG91dC5m
bm1hdGNoX2xpbmVzKCkgPExpbmVNYXRjaGVyLmZubWF0Y2hfbGluZXMoKT5gIG1ldGhvZC4KKyAg
ICAgICAgIiIiCiAgICAgICAgIHNlbGYuc3RkZXJyID0gTGluZU1hdGNoZXIoZXJybGluZXMpCisg
ICAgICAgICIiIjpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZGVyci4iIiIKICAgICAgICAgc2Vs
Zi5kdXJhdGlvbiA9IGR1cmF0aW9uCisgICAgICAgICIiIkR1cmF0aW9uIGluIHNlY29uZHMuIiIi
CisKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gKAorICAg
ICAgICAgICAgIjxSdW5SZXN1bHQgcmV0PSVzIGxlbihzdGRvdXQubGluZXMpPSVkIGxlbihzdGRl
cnIubGluZXMpPSVkIGR1cmF0aW9uPSUuMmZzPiIKKyAgICAgICAgICAgICUgKHNlbGYucmV0LCBs
ZW4oc2VsZi5zdGRvdXQubGluZXMpLCBsZW4oc2VsZi5zdGRlcnIubGluZXMpLCBzZWxmLmR1cmF0
aW9uKQorICAgICAgICApCiAKLSAgICBkZWYgcGFyc2VvdXRjb21lcyhzZWxmKToKLSAgICAgICAg
IiIiUmV0dXJuIGEgZGljdGlvbmFyeSBvZiBvdXRjb21lc3RyaW5nLT5udW0gZnJvbSBwYXJzaW5n
IHRoZSB0ZXJtaW5hbAorICAgIGRlZiBwYXJzZW91dGNvbWVzKHNlbGYpIC0+IERpY3Rbc3RyLCBp
bnRdOgorICAgICAgICAiIiJSZXR1cm4gYSBkaWN0aW9uYXJ5IG9mIG91dGNvbWUgbm91biAtPiBj
b3VudCBmcm9tIHBhcnNpbmcgdGhlIHRlcm1pbmFsCiAgICAgICAgIG91dHB1dCB0aGF0IHRoZSB0
ZXN0IHByb2Nlc3MgcHJvZHVjZWQuCiAKKyAgICAgICAgVGhlIHJldHVybmVkIG5vdW5zIHdpbGwg
YWx3YXlzIGJlIGluIHBsdXJhbCBmb3JtOjoKKworICAgICAgICAgICAgPT09PT09PSAxIGZhaWxl
ZCwgMSBwYXNzZWQsIDEgd2FybmluZywgMSBlcnJvciBpbiAwLjEzcyA9PT09CisKKyAgICAgICAg
V2lsbCByZXR1cm4gYGB7ImZhaWxlZCI6IDEsICJwYXNzZWQiOiAxLCAid2FybmluZ3MiOiAxLCAi
ZXJyb3JzIjogMX1gYC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX3N1
bW1hcnlfbm91bnMoc2VsZi5vdXRsaW5lcykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBw
YXJzZV9zdW1tYXJ5X25vdW5zKGNscywgbGluZXMpIC0+IERpY3Rbc3RyLCBpbnRdOgorICAgICAg
ICAiIiJFeHRyYWN0IHRoZSBub3VucyBmcm9tIGEgcHl0ZXN0IHRlcm1pbmFsIHN1bW1hcnkgbGlu
ZS4KKworICAgICAgICBJdCBhbHdheXMgcmV0dXJucyB0aGUgcGx1cmFsIG5vdW4gZm9yIGNvbnNp
c3RlbmN5OjoKKworICAgICAgICAgICAgPT09PT09PSAxIGZhaWxlZCwgMSBwYXNzZWQsIDEgd2Fy
bmluZywgMSBlcnJvciBpbiAwLjEzcyA9PT09CisKKyAgICAgICAgV2lsbCByZXR1cm4gYGB7ImZh
aWxlZCI6IDEsICJwYXNzZWQiOiAxLCAid2FybmluZ3MiOiAxLCAiZXJyb3JzIjogMX1gYC4KICAg
ICAgICAgIiIiCi0gICAgICAgIGZvciBsaW5lIGluIHJldmVyc2VkKHNlbGYub3V0bGluZXMpOgot
ICAgICAgICAgICAgaWYgInNlY29uZHMiIGluIGxpbmU6CisgICAgICAgIGZvciBsaW5lIGluIHJl
dmVyc2VkKGxpbmVzKToKKyAgICAgICAgICAgIGlmIHJleF9zZXNzaW9uX2R1cmF0aW9uLnNlYXJj
aChsaW5lKToKICAgICAgICAgICAgICAgICBvdXRjb21lcyA9IHJleF9vdXRjb21lLmZpbmRhbGwo
bGluZSkKLSAgICAgICAgICAgICAgICBpZiBvdXRjb21lczoKLSAgICAgICAgICAgICAgICAgICAg
ZCA9IHt9Ci0gICAgICAgICAgICAgICAgICAgIGZvciBudW0sIGNhdCBpbiBvdXRjb21lczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRbY2F0XSA9IGludChudW0pCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBkCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlB5dGVzdCB0ZXJtaW5hbCBy
ZXBvcnQgbm90IGZvdW5kIikKLQotICAgIGRlZiBhc3NlcnRfb3V0Y29tZXMoc2VsZiwgcGFzc2Vk
PTAsIHNraXBwZWQ9MCwgZmFpbGVkPTAsIGVycm9yPTApOgorICAgICAgICAgICAgICAgIHJldCA9
IHtub3VuOiBpbnQoY291bnQpIGZvciAoY291bnQsIG5vdW4pIGluIG91dGNvbWVzfQorICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJQeXRlc3QgdGVybWluYWwgc3VtbWFyeSByZXBvcnQgbm90IGZvdW5kIikKKworICAgICAg
ICB0b19wbHVyYWwgPSB7CisgICAgICAgICAgICAid2FybmluZyI6ICJ3YXJuaW5ncyIsCisgICAg
ICAgICAgICAiZXJyb3IiOiAiZXJyb3JzIiwKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge3Rv
X3BsdXJhbC5nZXQoaywgayk6IHYgZm9yIGssIHYgaW4gcmV0Lml0ZW1zKCl9CisKKyAgICBkZWYg
YXNzZXJ0X291dGNvbWVzKAorICAgICAgICBzZWxmLAorICAgICAgICBwYXNzZWQ6IGludCA9IDAs
CisgICAgICAgIHNraXBwZWQ6IGludCA9IDAsCisgICAgICAgIGZhaWxlZDogaW50ID0gMCwKKyAg
ICAgICAgZXJyb3JzOiBpbnQgPSAwLAorICAgICAgICB4cGFzc2VkOiBpbnQgPSAwLAorICAgICAg
ICB4ZmFpbGVkOiBpbnQgPSAwLAorICAgICkgLT4gTm9uZToKICAgICAgICAgIiIiQXNzZXJ0IHRo
YXQgdGhlIHNwZWNpZmllZCBvdXRjb21lcyBhcHBlYXIgd2l0aCB0aGUgcmVzcGVjdGl2ZQotICAg
ICAgICBudW1iZXJzICgwIG1lYW5zIGl0IGRpZG4ndCBvY2N1cikgaW4gdGhlIHRleHQgb3V0cHV0
IGZyb20gYSB0ZXN0IHJ1bi4KKyAgICAgICAgbnVtYmVycyAoMCBtZWFucyBpdCBkaWRuJ3Qgb2Nj
dXIpIGluIHRoZSB0ZXh0IG91dHB1dCBmcm9tIGEgdGVzdCBydW4uIiIiCisgICAgICAgIF9fdHJh
Y2ViYWNraGlkZV9fID0gVHJ1ZQogCi0gICAgICAgICIiIgogICAgICAgICBkID0gc2VsZi5wYXJz
ZW91dGNvbWVzKCkKICAgICAgICAgb2J0YWluZWQgPSB7CiAgICAgICAgICAgICAicGFzc2VkIjog
ZC5nZXQoInBhc3NlZCIsIDApLAogICAgICAgICAgICAgInNraXBwZWQiOiBkLmdldCgic2tpcHBl
ZCIsIDApLAogICAgICAgICAgICAgImZhaWxlZCI6IGQuZ2V0KCJmYWlsZWQiLCAwKSwKLSAgICAg
ICAgICAgICJlcnJvciI6IGQuZ2V0KCJlcnJvciIsIDApLAorICAgICAgICAgICAgImVycm9ycyI6
IGQuZ2V0KCJlcnJvcnMiLCAwKSwKKyAgICAgICAgICAgICJ4cGFzc2VkIjogZC5nZXQoInhwYXNz
ZWQiLCAwKSwKKyAgICAgICAgICAgICJ4ZmFpbGVkIjogZC5nZXQoInhmYWlsZWQiLCAwKSwKICAg
ICAgICAgfQotICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgb2J0YWluZWQgPT0gZGljdChw
YXNzZWQ9cGFzc2VkLCBza2lwcGVkPXNraXBwZWQsIGZhaWxlZD1mYWlsZWQsIGVycm9yPWVycm9y
KQotICAgICAgICApCi0KKyAgICAgICAgZXhwZWN0ZWQgPSB7CisgICAgICAgICAgICAicGFzc2Vk
IjogcGFzc2VkLAorICAgICAgICAgICAgInNraXBwZWQiOiBza2lwcGVkLAorICAgICAgICAgICAg
ImZhaWxlZCI6IGZhaWxlZCwKKyAgICAgICAgICAgICJlcnJvcnMiOiBlcnJvcnMsCisgICAgICAg
ICAgICAieHBhc3NlZCI6IHhwYXNzZWQsCisgICAgICAgICAgICAieGZhaWxlZCI6IHhmYWlsZWQs
CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0IG9idGFpbmVkID09IGV4cGVjdGVkCiAKLWNsYXNz
IEN3ZFNuYXBzaG90KG9iamVjdCk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6CitjbGFzcyBD
d2RTbmFwc2hvdDoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKICAgICAgICAgc2Vs
Zi5fX3NhdmVkID0gb3MuZ2V0Y3dkKCkKIAotICAgIGRlZiByZXN0b3JlKHNlbGYpOgorICAgIGRl
ZiByZXN0b3JlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX19zYXZlZCkK
IAogCi1jbGFzcyBTeXNNb2R1bGVzU25hcHNob3Qob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwcmVzZXJ2ZT1Ob25lKToKK2NsYXNzIFN5c01vZHVsZXNTbmFwc2hvdDoKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcHJlc2VydmU6IE9wdGlvbmFsW0NhbGxhYmxlW1tzdHJdLCBib29s
XV0gPSBOb25lKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9fcHJlc2VydmUgPSBwcmVzZXJ2ZQog
ICAgICAgICBzZWxmLl9fc2F2ZWQgPSBkaWN0KHN5cy5tb2R1bGVzKQogCi0gICAgZGVmIHJlc3Rv
cmUoc2VsZik6CisgICAgZGVmIHJlc3RvcmUoc2VsZikgLT4gTm9uZToKICAgICAgICAgaWYgc2Vs
Zi5fX3ByZXNlcnZlOgogICAgICAgICAgICAgc2VsZi5fX3NhdmVkLnVwZGF0ZSgKICAgICAgICAg
ICAgICAgICAoaywgbSkgZm9yIGssIG0gaW4gc3lzLm1vZHVsZXMuaXRlbXMoKSBpZiBzZWxmLl9f
cHJlc2VydmUoaykKQEAgLTQ1MiwxMjQgKzU5MCwxNTUgQEAgY2xhc3MgU3lzTW9kdWxlc1NuYXBz
aG90KG9iamVjdCk6CiAgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShzZWxmLl9fc2F2ZWQpCiAK
IAotY2xhc3MgU3lzUGF0aHNTbmFwc2hvdChvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorY2xhc3MgU3lzUGF0aHNTbmFwc2hvdDoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4g
Tm9uZToKICAgICAgICAgc2VsZi5fX3NhdmVkID0gbGlzdChzeXMucGF0aCksIGxpc3Qoc3lzLm1l
dGFfcGF0aCkKIAotICAgIGRlZiByZXN0b3JlKHNlbGYpOgorICAgIGRlZiByZXN0b3JlKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgIHN5cy5wYXRoWzpdLCBzeXMubWV0YV9wYXRoWzpdID0gc2VsZi5f
X3NhdmVkCiAKIAotY2xhc3MgVGVzdGRpcihvYmplY3QpOgorQGZpbmFsCitjbGFzcyBUZXN0ZGly
OgogICAgICIiIlRlbXBvcmFyeSB0ZXN0IGRpcmVjdG9yeSB3aXRoIHRvb2xzIHRvIHRlc3QvcnVu
IHB5dGVzdCBpdHNlbGYuCiAKLSAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSBgYHRtcGRpcmBgIGZp
eHR1cmUgYnV0IHByb3ZpZGVzIGEgbnVtYmVyIG9mIG1ldGhvZHMKKyAgICBUaGlzIGlzIGJhc2Vk
IG9uIHRoZSA6Zml4dHVyZTpgdG1wZGlyYCBmaXh0dXJlIGJ1dCBwcm92aWRlcyBhIG51bWJlciBv
ZiBtZXRob2RzCiAgICAgd2hpY2ggYWlkIHdpdGggdGVzdGluZyBweXRlc3QgaXRzZWxmLiAgVW5s
ZXNzIDpweTptZXRoOmBjaGRpcmAgaXMgdXNlZCBhbGwKICAgICBtZXRob2RzIHdpbGwgdXNlIDpw
eTphdHRyOmB0bXBkaXJgIGFzIHRoZWlyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAKICAg
ICBBdHRyaWJ1dGVzOgogCi0gICAgOnRtcGRpcjogVGhlIDpweTpjbGFzczpgcHkucGF0aC5sb2Nh
bGAgaW5zdGFuY2Ugb2YgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisgICAgOml2YXIgdG1wZGly
OiBUaGUgOnB5OmNsYXNzOmBweS5wYXRoLmxvY2FsYCBpbnN0YW5jZSBvZiB0aGUgdGVtcG9yYXJ5
IGRpcmVjdG9yeS4KIAotICAgIDpwbHVnaW5zOiBBIGxpc3Qgb2YgcGx1Z2lucyB0byB1c2Ugd2l0
aCA6cHk6bWV0aDpgcGFyc2Vjb25maWdgIGFuZAorICAgIDppdmFyIHBsdWdpbnM6CisgICAgICAg
QSBsaXN0IG9mIHBsdWdpbnMgdG8gdXNlIHdpdGggOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBhbmQK
ICAgICAgICA6cHk6bWV0aDpgcnVucHl0ZXN0YC4gIEluaXRpYWxseSB0aGlzIGlzIGFuIGVtcHR5
IGxpc3QgYnV0IHBsdWdpbnMgY2FuCiAgICAgICAgYmUgYWRkZWQgdG8gdGhlIGxpc3QuICBUaGUg
dHlwZSBvZiBpdGVtcyB0byBhZGQgdG8gdGhlIGxpc3QgZGVwZW5kcyBvbgogICAgICAgIHRoZSBt
ZXRob2QgdXNpbmcgdGhlbSBzbyByZWZlciB0byB0aGVtIGZvciBkZXRhaWxzLgotCiAgICAgIiIi
CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgdG1wZGlyX2ZhY3RvcnkpOgorICAg
IF9fdGVzdF9fID0gRmFsc2UKKworICAgIENMT1NFX1NURElOID0gb2JqZWN0CisKKyAgICBjbGFz
cyBUaW1lb3V0RXhwaXJlZChFeGNlcHRpb24pOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVxdWVzdDogRml4dHVyZVJlcXVlc3QsIHRtcGRpcl9mYWN0b3J5OiBUZW1w
ZGlyRmFjdG9yeSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAotICAg
ICAgICBzZWxmLl9tb2RfY29sbGVjdGlvbnMgPSBXZWFrS2V5RGljdGlvbmFyeSgpCi0gICAgICAg
IG5hbWUgPSByZXF1ZXN0LmZ1bmN0aW9uLl9fbmFtZV9fCisgICAgICAgIHNlbGYuX21vZF9jb2xs
ZWN0aW9ucyA9ICgKKyAgICAgICAgICAgIFdlYWtLZXlEaWN0aW9uYXJ5KCkKKyAgICAgICAgKSAg
IyB0eXBlOiBXZWFrS2V5RGljdGlvbmFyeVtNb2R1bGUsIExpc3RbVW5pb25bSXRlbSwgQ29sbGVj
dG9yXV1dCisgICAgICAgIGlmIHJlcXVlc3QuZnVuY3Rpb246CisgICAgICAgICAgICBuYW1lID0g
cmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXyAgIyB0eXBlOiBzdHIKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIG5hbWUgPSByZXF1ZXN0Lm5vZGUubmFtZQorICAgICAgICBzZWxmLl9uYW1lID0g
bmFtZQogICAgICAgICBzZWxmLnRtcGRpciA9IHRtcGRpcl9mYWN0b3J5Lm1rdGVtcChuYW1lLCBu
dW1iZXJlZD1UcnVlKQotICAgICAgICBzZWxmLnBsdWdpbnMgPSBbXQorICAgICAgICBzZWxmLnRl
c3RfdG1wcm9vdCA9IHRtcGRpcl9mYWN0b3J5Lm1rdGVtcCgidG1wLSIgKyBuYW1lLCBudW1iZXJl
ZD1UcnVlKQorICAgICAgICBzZWxmLnBsdWdpbnMgPSBbXSAgIyB0eXBlOiBMaXN0W1VuaW9uW3N0
ciwgX1BsdWdneVBsdWdpbl1dCiAgICAgICAgIHNlbGYuX2N3ZF9zbmFwc2hvdCA9IEN3ZFNuYXBz
aG90KCkKICAgICAgICAgc2VsZi5fc3lzX3BhdGhfc25hcHNob3QgPSBTeXNQYXRoc1NuYXBzaG90
KCkKICAgICAgICAgc2VsZi5fc3lzX21vZHVsZXNfc25hcHNob3QgPSBzZWxmLl9fdGFrZV9zeXNf
bW9kdWxlc19zbmFwc2hvdCgpCiAgICAgICAgIHNlbGYuY2hkaXIoKQogICAgICAgICBzZWxmLnJl
cXVlc3QuYWRkZmluYWxpemVyKHNlbGYuZmluYWxpemUpCi0gICAgICAgIG1ldGhvZCA9IHNlbGYu
cmVxdWVzdC5jb25maWcuZ2V0b3B0aW9uKCItLXJ1bnB5dGVzdCIpCi0gICAgICAgIGlmIG1ldGhv
ZCA9PSAiaW5wcm9jZXNzIjoKLSAgICAgICAgICAgIHNlbGYuX3J1bnB5dGVzdF9tZXRob2QgPSBz
ZWxmLnJ1bnB5dGVzdF9pbnByb2Nlc3MKLSAgICAgICAgZWxpZiBtZXRob2QgPT0gInN1YnByb2Nl
c3MiOgotICAgICAgICAgICAgc2VsZi5fcnVucHl0ZXN0X21ldGhvZCA9IHNlbGYucnVucHl0ZXN0
X3N1YnByb2Nlc3MKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8
VGVzdGRpciAlcj4iICUgKHNlbGYudG1wZGlyLCkKLQotICAgIGRlZiBmaW5hbGl6ZShzZWxmKToK
KyAgICAgICAgc2VsZi5fbWV0aG9kID0gc2VsZi5yZXF1ZXN0LmNvbmZpZy5nZXRvcHRpb24oIi0t
cnVucHl0ZXN0IikKKworICAgICAgICBtcCA9IHNlbGYubW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRj
aCgpCisgICAgICAgIG1wLnNldGVudigiUFlURVNUX0RFQlVHX1RFTVBST09UIiwgc3RyKHNlbGYu
dGVzdF90bXByb290KSkKKyAgICAgICAgIyBFbnN1cmUgbm8gdW5leHBlY3RlZCBjYWNoaW5nIHZp
YSB0b3guCisgICAgICAgIG1wLmRlbGVudigiVE9YX0VOVl9ESVIiLCByYWlzaW5nPUZhbHNlKQor
ICAgICAgICAjIERpc2NhcmQgb3V0ZXIgcHl0ZXN0IG9wdGlvbnMuCisgICAgICAgIG1wLmRlbGVu
digiUFlURVNUX0FERE9QVFMiLCByYWlzaW5nPUZhbHNlKQorICAgICAgICAjIEVuc3VyZSBubyB1
c2VyIGNvbmZpZyBpcyB1c2VkLgorICAgICAgICB0bXBob21lID0gc3RyKHNlbGYudG1wZGlyKQor
ICAgICAgICBtcC5zZXRlbnYoIkhPTUUiLCB0bXBob21lKQorICAgICAgICBtcC5zZXRlbnYoIlVT
RVJQUk9GSUxFIiwgdG1waG9tZSkKKyAgICAgICAgIyBEbyBub3QgdXNlIGNvbG9ycyBmb3IgaW5u
ZXIgcnVucyBieSBkZWZhdWx0LgorICAgICAgICBtcC5zZXRlbnYoIlBZX0NPTE9SUyIsICIwIikK
KworICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAiPFRlc3Rk
aXIgeyFyfT4iLmZvcm1hdChzZWxmLnRtcGRpcikKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+
IHN0cjoKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnRtcGRpcikKKworICAgIGRlZiBmaW5hbGl6
ZShzZWxmKSAtPiBOb25lOgogICAgICAgICAiIiJDbGVhbiB1cCBnbG9iYWwgc3RhdGUgYXJ0aWZh
Y3RzLgogCiAgICAgICAgIFNvbWUgbWV0aG9kcyBtb2RpZnkgdGhlIGdsb2JhbCBpbnRlcnByZXRl
ciBzdGF0ZSBhbmQgdGhpcyB0cmllcyB0bwogICAgICAgICBjbGVhbiB0aGlzIHVwLiAgSXQgZG9l
cyBub3QgcmVtb3ZlIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGhvd2V2ZXIgc28KICAgICAgICAg
aXQgY2FuIGJlIGxvb2tlZCBhdCBhZnRlciB0aGUgdGVzdCBydW4gaGFzIGZpbmlzaGVkLgotCiAg
ICAgICAgICIiIgogICAgICAgICBzZWxmLl9zeXNfbW9kdWxlc19zbmFwc2hvdC5yZXN0b3JlKCkK
ICAgICAgICAgc2VsZi5fc3lzX3BhdGhfc25hcHNob3QucmVzdG9yZSgpCiAgICAgICAgIHNlbGYu
X2N3ZF9zbmFwc2hvdC5yZXN0b3JlKCkKKyAgICAgICAgc2VsZi5tb25rZXlwYXRjaC51bmRvKCkK
IAotICAgIGRlZiBfX3Rha2Vfc3lzX21vZHVsZXNfc25hcHNob3Qoc2VsZik6Ci0gICAgICAgICMg
c29tZSB6b3BlIG1vZHVsZXMgdXNlZCBieSB0d2lzdGVkLXJlbGF0ZWQgdGVzdHMga2VlcCBpbnRl
cm5hbCBzdGF0ZQorICAgIGRlZiBfX3Rha2Vfc3lzX21vZHVsZXNfc25hcHNob3Qoc2VsZikgLT4g
U3lzTW9kdWxlc1NuYXBzaG90OgorICAgICAgICAjIFNvbWUgem9wZSBtb2R1bGVzIHVzZWQgYnkg
dHdpc3RlZC1yZWxhdGVkIHRlc3RzIGtlZXAgaW50ZXJuYWwgc3RhdGUKICAgICAgICAgIyBhbmQg
Y2FuJ3QgYmUgZGVsZXRlZDsgd2UgaGFkIHNvbWUgdHJvdWJsZSBpbiB0aGUgcGFzdCB3aXRoCi0g
ICAgICAgICMgYHpvcGUuaW50ZXJmYWNlYCBmb3IgZXhhbXBsZQorICAgICAgICAjIGB6b3BlLmlu
dGVyZmFjZWAgZm9yIGV4YW1wbGUuCiAgICAgICAgIGRlZiBwcmVzZXJ2ZV9tb2R1bGUobmFtZSk6
CiAgICAgICAgICAgICByZXR1cm4gbmFtZS5zdGFydHN3aXRoKCJ6b3BlIikKIAogICAgICAgICBy
ZXR1cm4gU3lzTW9kdWxlc1NuYXBzaG90KHByZXNlcnZlPXByZXNlcnZlX21vZHVsZSkKIAotICAg
IGRlZiBtYWtlX2hvb2tfcmVjb3JkZXIoc2VsZiwgcGx1Z2lubWFuYWdlcik6CisgICAgZGVmIG1h
a2VfaG9va19yZWNvcmRlcihzZWxmLCBwbHVnaW5tYW5hZ2VyOiBQeXRlc3RQbHVnaW5NYW5hZ2Vy
KSAtPiBIb29rUmVjb3JkZXI6CiAgICAgICAgICIiIkNyZWF0ZSBhIG5ldyA6cHk6Y2xhc3M6YEhv
b2tSZWNvcmRlcmAgZm9yIGEgUGx1Z2luTWFuYWdlci4iIiIKLSAgICAgICAgYXNzZXJ0IG5vdCBo
YXNhdHRyKHBsdWdpbm1hbmFnZXIsICJyZXByZWMiKQogICAgICAgICBwbHVnaW5tYW5hZ2VyLnJl
cHJlYyA9IHJlcHJlYyA9IEhvb2tSZWNvcmRlcihwbHVnaW5tYW5hZ2VyKQogICAgICAgICBzZWxm
LnJlcXVlc3QuYWRkZmluYWxpemVyKHJlcHJlYy5maW5pc2hfcmVjb3JkaW5nKQogICAgICAgICBy
ZXR1cm4gcmVwcmVjCiAKLSAgICBkZWYgY2hkaXIoc2VsZik6CisgICAgZGVmIGNoZGlyKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgICIiIkNkIGludG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkuCiAK
ICAgICAgICAgVGhpcyBpcyBkb25lIGF1dG9tYXRpY2FsbHkgdXBvbiBpbnN0YW50aWF0aW9uLgot
CiAgICAgICAgICIiIgogICAgICAgICBzZWxmLnRtcGRpci5jaGRpcigpCiAKLSAgICBkZWYgX21h
a2VmaWxlKHNlbGYsIGV4dCwgYXJncywga3dhcmdzLCBlbmNvZGluZz0idXRmLTgiKToKLSAgICAg
ICAgaXRlbXMgPSBsaXN0KGt3YXJncy5pdGVtcygpKQorICAgIGRlZiBfbWFrZWZpbGUoc2VsZiwg
ZXh0OiBzdHIsIGxpbmVzLCBmaWxlcywgZW5jb2Rpbmc6IHN0ciA9ICJ1dGYtOCIpOgorICAgICAg
ICBpdGVtcyA9IGxpc3QoZmlsZXMuaXRlbXMoKSkKIAogICAgICAgICBkZWYgdG9fdGV4dChzKToK
LSAgICAgICAgICAgIHJldHVybiBzLmRlY29kZShlbmNvZGluZykgaWYgaXNpbnN0YW5jZShzLCBi
eXRlcykgZWxzZSBzaXgudGV4dF90eXBlKHMpCisgICAgICAgICAgICByZXR1cm4gcy5kZWNvZGUo
ZW5jb2RpbmcpIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpIGVsc2Ugc3RyKHMpCiAKLSAgICAgICAg
aWYgYXJnczoKLSAgICAgICAgICAgIHNvdXJjZSA9IHUiXG4iLmpvaW4odG9fdGV4dCh4KSBmb3Ig
eCBpbiBhcmdzKQotICAgICAgICAgICAgYmFzZW5hbWUgPSBzZWxmLnJlcXVlc3QuZnVuY3Rpb24u
X19uYW1lX18KKyAgICAgICAgaWYgbGluZXM6CisgICAgICAgICAgICBzb3VyY2UgPSAiXG4iLmpv
aW4odG9fdGV4dCh4KSBmb3IgeCBpbiBsaW5lcykKKyAgICAgICAgICAgIGJhc2VuYW1lID0gc2Vs
Zi5fbmFtZQogICAgICAgICAgICAgaXRlbXMuaW5zZXJ0KDAsIChiYXNlbmFtZSwgc291cmNlKSkK
IAogICAgICAgICByZXQgPSBOb25lCiAgICAgICAgIGZvciBiYXNlbmFtZSwgdmFsdWUgaW4gaXRl
bXM6CiAgICAgICAgICAgICBwID0gc2VsZi50bXBkaXIuam9pbihiYXNlbmFtZSkubmV3KGV4dD1l
eHQpCiAgICAgICAgICAgICBwLmRpcnBhdGgoKS5lbnN1cmVfZGlyKCkKLSAgICAgICAgICAgIHNv
dXJjZSA9IFNvdXJjZSh2YWx1ZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHUiXG4iLmpvaW4odG9f
dGV4dChsaW5lKSBmb3IgbGluZSBpbiBzb3VyY2UubGluZXMpCisgICAgICAgICAgICBzb3VyY2Vf
ID0gU291cmNlKHZhbHVlKQorICAgICAgICAgICAgc291cmNlID0gIlxuIi5qb2luKHRvX3RleHQo
bGluZSkgZm9yIGxpbmUgaW4gc291cmNlXy5saW5lcykKICAgICAgICAgICAgIHAud3JpdGUoc291
cmNlLnN0cmlwKCkuZW5jb2RlKGVuY29kaW5nKSwgIndiIikKICAgICAgICAgICAgIGlmIHJldCBp
cyBOb25lOgogICAgICAgICAgICAgICAgIHJldCA9IHAKICAgICAgICAgcmV0dXJuIHJldAogCi0g
ICAgZGVmIG1ha2VmaWxlKHNlbGYsIGV4dCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIi
Q3JlYXRlIGEgbmV3IGZpbGUgaW4gdGhlIHRlc3RkaXIuCisgICAgZGVmIG1ha2VmaWxlKHNlbGYs
IGV4dDogc3RyLCAqYXJnczogc3RyLCAqKmt3YXJncyk6CisgICAgICAgIHIiIiJDcmVhdGUgbmV3
IGZpbGUocykgaW4gdGhlIHRlc3RkaXIuCisKKyAgICAgICAgOnBhcmFtIHN0ciBleHQ6CisgICAg
ICAgICAgICBUaGUgZXh0ZW5zaW9uIHRoZSBmaWxlKHMpIHNob3VsZCB1c2UsIGluY2x1ZGluZyB0
aGUgZG90LCBlLmcuIGAucHlgLgorICAgICAgICA6cGFyYW0gYXJnczoKKyAgICAgICAgICAgIEFs
bCBhcmdzIGFyZSB0cmVhdGVkIGFzIHN0cmluZ3MgYW5kIGpvaW5lZCB1c2luZyBuZXdsaW5lcy4K
KyAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgd3JpdHRlbiBhcyBjb250ZW50cyB0byB0aGUgZmls
ZS4gIFRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgZmlsZSBpcyBiYXNlZCBvbiB0aGUgdGVz
dCBmdW5jdGlvbiByZXF1ZXN0aW5nIHRoaXMgZml4dHVyZS4KKyAgICAgICAgOnBhcmFtIGt3YXJn
czoKKyAgICAgICAgICAgIEVhY2gga2V5d29yZCBpcyB0aGUgbmFtZSBvZiBhIGZpbGUsIHdoaWxl
IHRoZSB2YWx1ZSBvZiBpdCB3aWxsCisgICAgICAgICAgICBiZSB3cml0dGVuIGFzIGNvbnRlbnRz
IG9mIHRoZSBmaWxlLgogCi0gICAgICAgIGV4dDogVGhlIGV4dGVuc2lvbiB0aGUgZmlsZSBzaG91
bGQgdXNlLCBpbmNsdWRpbmcgdGhlIGRvdCwgZS5nLiBgLnB5YC4KKyAgICAgICAgRXhhbXBsZXM6
CiAKLSAgICAgICAgYXJnczogQWxsIGFyZ3Mgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MgYW5k
IGpvaW5lZCB1c2luZyBuZXdsaW5lcy4KLSAgICAgICAgICAgVGhlIHJlc3VsdCB3aWxsIGJlIHdy
aXR0ZW4gYXMgY29udGVudHMgdG8gdGhlIGZpbGUuICBUaGUgbmFtZSBvZiB0aGUKLSAgICAgICAg
ICAgZmlsZSB3aWxsIGJlIGJhc2VkIG9uIHRoZSB0ZXN0IGZ1bmN0aW9uIHJlcXVlc3RpbmcgdGhp
cyBmaXh0dXJlLgotICAgICAgICAgICBFLmcuICJ0ZXN0ZGlyLm1ha2VmaWxlKCcudHh0JywgJ2xp
bmUxJywgJ2xpbmUyJykiCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgICAg
ICBrd2FyZ3M6IEVhY2gga2V5d29yZCBpcyB0aGUgbmFtZSBvZiBhIGZpbGUsIHdoaWxlIHRoZSB2
YWx1ZSBvZiBpdCB3aWxsCi0gICAgICAgICAgIGJlIHdyaXR0ZW4gYXMgY29udGVudHMgb2YgdGhl
IGZpbGUuCi0gICAgICAgICAgIEUuZy4gInRlc3RkaXIubWFrZWZpbGUoJy5pbmknLCBweXRlc3Q9
J1tweXRlc3RdXG5hZGRvcHRzPS1yc1xuJykiCisgICAgICAgICAgICB0ZXN0ZGlyLm1ha2VmaWxl
KCIudHh0IiwgImxpbmUxIiwgImxpbmUyIikKKworICAgICAgICAgICAgdGVzdGRpci5tYWtlZmls
ZSgiLmluaSIsIHB5dGVzdD0iW3B5dGVzdF1cbmFkZG9wdHM9LXJzXG4iKQogCiAgICAgICAgICIi
IgogICAgICAgICByZXR1cm4gc2VsZi5fbWFrZWZpbGUoZXh0LCBhcmdzLCBrd2FyZ3MpCkBAIC01
ODIsNzcgKzc1MSwxNDkgQEAgY2xhc3MgVGVzdGRpcihvYmplY3QpOgogICAgICAgICAiIiJXcml0
ZSBhIHRveC5pbmkgZmlsZSB3aXRoICdzb3VyY2UnIGFzIGNvbnRlbnRzLiIiIgogICAgICAgICBy
ZXR1cm4gc2VsZi5tYWtlZmlsZSgiLmluaSIsIHRveD1zb3VyY2UpCiAKLSAgICBkZWYgZ2V0aW5p
Y2ZnKHNlbGYsIHNvdXJjZSk6CisgICAgZGVmIGdldGluaWNmZyhzZWxmLCBzb3VyY2UpIC0+IElu
aUNvbmZpZzoKICAgICAgICAgIiIiUmV0dXJuIHRoZSBweXRlc3Qgc2VjdGlvbiBmcm9tIHRoZSB0
b3guaW5pIGNvbmZpZyBmaWxlLiIiIgogICAgICAgICBwID0gc2VsZi5tYWtlaW5pKHNvdXJjZSkK
LSAgICAgICAgcmV0dXJuIHB5LmluaWNvbmZpZy5JbmlDb25maWcocClbInB5dGVzdCJdCisgICAg
ICAgIHJldHVybiBJbmlDb25maWcocClbInB5dGVzdCJdCisKKyAgICBkZWYgbWFrZXB5cHJvamVj
dHRvbWwoc2VsZiwgc291cmNlKToKKyAgICAgICAgIiIiV3JpdGUgYSBweXByb2plY3QudG9tbCBm
aWxlIHdpdGggJ3NvdXJjZScgYXMgY29udGVudHMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVk
OjogNi4wCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5tYWtlZmlsZSgiLnRvbWwi
LCBweXByb2plY3Q9c291cmNlKQogCiAgICAgZGVmIG1ha2VweWZpbGUoc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKToKLSAgICAgICAgIiIiU2hvcnRjdXQgZm9yIC5tYWtlZmlsZSgpIHdpdGggYSAucHkg
ZXh0ZW5zaW9uLiIiIgorICAgICAgICByIiIiU2hvcnRjdXQgZm9yIC5tYWtlZmlsZSgpIHdpdGgg
YSAucHkgZXh0ZW5zaW9uLgorCisgICAgICAgIERlZmF1bHRzIHRvIHRoZSB0ZXN0IG5hbWUgd2l0
aCBhICcucHknIGV4dGVuc2lvbiwgZS5nIHRlc3RfZm9vYmFyLnB5LCBvdmVyd3JpdGluZworICAg
ICAgICBleGlzdGluZyBmaWxlcy4KKworICAgICAgICBFeGFtcGxlczoKKworICAgICAgICAuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3NvbWV0aGluZyh0ZXN0
ZGlyKToKKyAgICAgICAgICAgICAgICAjIEluaXRpYWwgZmlsZSBpcyBjcmVhdGVkIHRlc3Rfc29t
ZXRoaW5nLnB5LgorICAgICAgICAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZm9vYmFyIikK
KyAgICAgICAgICAgICAgICAjIFRvIGNyZWF0ZSBtdWx0aXBsZSBmaWxlcywgcGFzcyBrd2FyZ3Mg
YWNjb3JkaW5nbHkuCisgICAgICAgICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKGN1c3RvbT0i
Zm9vYmFyIikKKyAgICAgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQsIGJvdGggJ3Rlc3Rfc29t
ZXRoaW5nLnB5JyAmICdjdXN0b20ucHknIGV4aXN0IGluIHRoZSB0ZXN0IGRpcmVjdG9yeS4KKwor
ICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKCIucHkiLCBhcmdzLCBr
d2FyZ3MpCiAKICAgICBkZWYgbWFrZXR4dGZpbGUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAg
ICAgICAgIiIiU2hvcnRjdXQgZm9yIC5tYWtlZmlsZSgpIHdpdGggYSAudHh0IGV4dGVuc2lvbi4i
IiIKKyAgICAgICAgciIiIlNob3J0Y3V0IGZvciAubWFrZWZpbGUoKSB3aXRoIGEgLnR4dCBleHRl
bnNpb24uCisKKyAgICAgICAgRGVmYXVsdHMgdG8gdGhlIHRlc3QgbmFtZSB3aXRoIGEgJy50eHQn
IGV4dGVuc2lvbiwgZS5nIHRlc3RfZm9vYmFyLnR4dCwgb3ZlcndyaXRpbmcKKyAgICAgICAgZXhp
c3RpbmcgZmlsZXMuCisKKyAgICAgICAgRXhhbXBsZXM6CisKKyAgICAgICAgLi4gY29kZS1ibG9j
azo6IHB5dGhvbgorCisgICAgICAgICAgICBkZWYgdGVzdF9zb21ldGhpbmcodGVzdGRpcik6Cisg
ICAgICAgICAgICAgICAgIyBJbml0aWFsIGZpbGUgaXMgY3JlYXRlZCB0ZXN0X3NvbWV0aGluZy50
eHQuCisgICAgICAgICAgICAgICAgdGVzdGRpci5tYWtldHh0ZmlsZSgiZm9vYmFyIikKKyAgICAg
ICAgICAgICAgICAjIFRvIGNyZWF0ZSBtdWx0aXBsZSBmaWxlcywgcGFzcyBrd2FyZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgICAgICAgICAgdGVzdGRpci5tYWtldHh0ZmlsZShjdXN0b209ImZvb2Jh
ciIpCisgICAgICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50LCBib3RoICd0ZXN0X3NvbWV0aGlu
Zy50eHQnICYgJ2N1c3RvbS50eHQnIGV4aXN0IGluIHRoZSB0ZXN0IGRpcmVjdG9yeS4KKworICAg
ICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKCIudHh0IiwgYXJncywga3dh
cmdzKQogCi0gICAgZGVmIHN5c3BhdGhpbnNlcnQoc2VsZiwgcGF0aD1Ob25lKToKKyAgICBkZWYg
c3lzcGF0aGluc2VydChzZWxmLCBwYXRoPU5vbmUpIC0+IE5vbmU6CiAgICAgICAgICIiIlByZXBl
bmQgYSBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsIGRlZmF1bHRzIHRvIDpweTphdHRyOmB0bXBkaXJg
LgogCiAgICAgICAgIFRoaXMgaXMgdW5kb25lIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG9iamVj
dCBkaWVzIGF0IHRoZSBlbmQgb2YgZWFjaAogICAgICAgICB0ZXN0LgotCiAgICAgICAgICIiIgog
ICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXRoID0gc2VsZi50bXBkaXIK
LSAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHN0cihwYXRoKSkKLSAgICAgICAgIyBhIGNhbGwg
dG8gc3lzcGF0aGluc2VydCgpIHVzdWFsbHkgbWVhbnMgdGhhdCB0aGUgY2FsbGVyIHdhbnRzIHRv
Ci0gICAgICAgICMgaW1wb3J0IHNvbWUgZHluYW1pY2FsbHkgY3JlYXRlZCBmaWxlcywgdGh1cyB3
aXRoIHB5dGhvbjMgd2UKLSAgICAgICAgIyBpbnZhbGlkYXRlIGl0cyBpbXBvcnQgY2FjaGVzCi0g
ICAgICAgIHNlbGYuX3Bvc3NpYmx5X2ludmFsaWRhdGVfaW1wb3J0X2NhY2hlcygpCi0KLSAgICBk
ZWYgX3Bvc3NpYmx5X2ludmFsaWRhdGVfaW1wb3J0X2NhY2hlcyhzZWxmKToKLSAgICAgICAgIyBp
bnZhbGlkYXRlIGNhY2hlcyBpZiB3ZSBjYW4gKHB5MzMgYW5kIGFib3ZlKQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBpbXBvcnQgaW1wb3J0bGliCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGhhc2F0
dHIoaW1wb3J0bGliLCAiaW52YWxpZGF0ZV9jYWNoZXMiKToKLSAgICAgICAgICAgICAgICBpbXBv
cnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogCi0gICAgZGVmIG1rZGlyKHNlbGYsIG5hbWUpOgor
ICAgICAgICBzZWxmLm1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZChzdHIocGF0aCkpCisKKyAg
ICBkZWYgbWtkaXIoc2VsZiwgbmFtZSkgLT4gcHkucGF0aC5sb2NhbDoKICAgICAgICAgIiIiQ3Jl
YXRlIGEgbmV3IChzdWIpZGlyZWN0b3J5LiIiIgogICAgICAgICByZXR1cm4gc2VsZi50bXBkaXIu
bWtkaXIobmFtZSkKIAotICAgIGRlZiBta3B5ZGlyKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJD
cmVhdGUgYSBuZXcgcHl0aG9uIHBhY2thZ2UuCisgICAgZGVmIG1rcHlkaXIoc2VsZiwgbmFtZSkg
LT4gcHkucGF0aC5sb2NhbDoKKyAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IFB5dGhvbiBwYWNrYWdl
LgogCiAgICAgICAgIFRoaXMgY3JlYXRlcyBhIChzdWIpZGlyZWN0b3J5IHdpdGggYW4gZW1wdHkg
YGBfX2luaXRfXy5weWBgIGZpbGUgc28gaXQKLSAgICAgICAgZ2V0cyByZWNvZ25pc2VkIGFzIGEg
cHl0aG9uIHBhY2thZ2UuCi0KKyAgICAgICAgZ2V0cyByZWNvZ25pc2VkIGFzIGEgUHl0aG9uIHBh
Y2thZ2UuCiAgICAgICAgICIiIgogICAgICAgICBwID0gc2VsZi5ta2RpcihuYW1lKQogICAgICAg
ICBwLmVuc3VyZSgiX19pbml0X18ucHkiKQogICAgICAgICByZXR1cm4gcAogCi0gICAgU2Vzc2lv
biA9IFNlc3Npb24KKyAgICBkZWYgY29weV9leGFtcGxlKHNlbGYsIG5hbWU9Tm9uZSkgLT4gcHku
cGF0aC5sb2NhbDoKKyAgICAgICAgIiIiQ29weSBmaWxlIGZyb20gcHJvamVjdCdzIGRpcmVjdG9y
eSBpbnRvIHRoZSB0ZXN0ZGlyLgogCi0gICAgZGVmIGdldG5vZGUoc2VsZiwgY29uZmlnLCBhcmcp
OgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNvbGxlY3Rpb24gbm9kZSBvZiBhIGZpbGUuCisgICAg
ICAgIDpwYXJhbSBzdHIgbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY29weS4KKyAgICAg
ICAgOnJldHVybnM6IFBhdGggdG8gdGhlIGNvcGllZCBkaXJlY3RvcnkgKGluc2lkZSBgYHNlbGYu
dG1wZGlyYGApLgorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAg
IGZyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQWVRFU1RFUl9DT1BZX0VYQU1QTEUK
KworICAgICAgICB3YXJuaW5ncy53YXJuKFBZVEVTVEVSX0NPUFlfRVhBTVBMRSwgc3RhY2tsZXZl
bD0yKQorICAgICAgICBleGFtcGxlX2RpciA9IHNlbGYucmVxdWVzdC5jb25maWcuZ2V0aW5pKCJw
eXRlc3Rlcl9leGFtcGxlX2RpciIpCisgICAgICAgIGlmIGV4YW1wbGVfZGlyIGlzIE5vbmU6Cisg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJweXRlc3Rlcl9leGFtcGxlX2RpciBpcyB1bnNl
dCwgY2FuJ3QgY29weSBleGFtcGxlcyIpCisgICAgICAgIGV4YW1wbGVfZGlyID0gc2VsZi5yZXF1
ZXN0LmNvbmZpZy5yb290ZGlyLmpvaW4oZXhhbXBsZV9kaXIpCisKKyAgICAgICAgZm9yIGV4dHJh
X2VsZW1lbnQgaW4gc2VsZi5yZXF1ZXN0Lm5vZGUuaXRlcl9tYXJrZXJzKCJweXRlc3Rlcl9leGFt
cGxlX3BhdGgiKToKKyAgICAgICAgICAgIGFzc2VydCBleHRyYV9lbGVtZW50LmFyZ3MKKyAgICAg
ICAgICAgIGV4YW1wbGVfZGlyID0gZXhhbXBsZV9kaXIuam9pbigqZXh0cmFfZWxlbWVudC5hcmdz
KQorCisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIGZ1bmNfbmFtZSA9IHNl
bGYuX25hbWUKKyAgICAgICAgICAgIG1heWJlX2RpciA9IGV4YW1wbGVfZGlyIC8gZnVuY19uYW1l
CisgICAgICAgICAgICBtYXliZV9maWxlID0gZXhhbXBsZV9kaXIgLyAoZnVuY19uYW1lICsgIi5w
eSIpCisKKyAgICAgICAgICAgIGlmIG1heWJlX2Rpci5pc2RpcigpOgorICAgICAgICAgICAgICAg
IGV4YW1wbGVfcGF0aCA9IG1heWJlX2RpcgorICAgICAgICAgICAgZWxpZiBtYXliZV9maWxlLmlz
ZmlsZSgpOgorICAgICAgICAgICAgICAgIGV4YW1wbGVfcGF0aCA9IG1heWJlX2ZpbGUKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoCisgICAgICAg
ICAgICAgICAgICAgICJ7fSBjYW50IGJlIGZvdW5kIGFzIG1vZHVsZSBvciBwYWNrYWdlIGluIHt9
Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUsIGV4YW1wbGVfZGly
LmJlc3RyZWxwYXRoKHNlbGYucmVxdWVzdC5jb25maWcucm9vdGRpcikKKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4
YW1wbGVfcGF0aCA9IGV4YW1wbGVfZGlyLmpvaW4obmFtZSkKKworICAgICAgICBpZiBleGFtcGxl
X3BhdGguaXNkaXIoKSBhbmQgbm90IGV4YW1wbGVfcGF0aC5qb2luKCJfX2luaXRfXy5weSIpLmlz
ZmlsZSgpOgorICAgICAgICAgICAgZXhhbXBsZV9wYXRoLmNvcHkoc2VsZi50bXBkaXIpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi50bXBkaXIKKyAgICAgICAgZWxpZiBleGFtcGxlX3BhdGguaXNm
aWxlKCk6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnRtcGRpci5qb2luKGV4YW1wbGVfcGF0
aC5iYXNlbmFtZSkKKyAgICAgICAgICAgIGV4YW1wbGVfcGF0aC5jb3B5KHJlc3VsdCkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIExv
b2t1cEVycm9yKAorICAgICAgICAgICAgICAgICdleGFtcGxlICJ7fSIgaXMgbm90IGZvdW5kIGFz
IGEgZmlsZSBvciBkaXJlY3RvcnknLmZvcm1hdChleGFtcGxlX3BhdGgpCisgICAgICAgICAgICAp
CiAKLSAgICAgICAgOnBhcmFtIGNvbmZpZzogOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5Db25m
aWdgIGluc3RhbmNlLCBzZWUKLSAgICAgICAgICAgOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBhbmQg
OnB5Om1ldGg6YHBhcnNlY29uZmlndXJlYCB0byBjcmVhdGUgdGhlCi0gICAgICAgICAgIGNvbmZp
Z3VyYXRpb24KKyAgICBTZXNzaW9uID0gU2Vzc2lvbgogCi0gICAgICAgIDpwYXJhbSBhcmc6IGEg
OnB5OmNsYXNzOmBweS5wYXRoLmxvY2FsYCBpbnN0YW5jZSBvZiB0aGUgZmlsZQorICAgIGRlZiBn
ZXRub2RlKHNlbGYsIGNvbmZpZzogQ29uZmlnLCBhcmcpOgorICAgICAgICAiIiJSZXR1cm4gdGhl
IGNvbGxlY3Rpb24gbm9kZSBvZiBhIGZpbGUuCiAKKyAgICAgICAgOnBhcmFtIF9weXRlc3QuY29u
ZmlnLkNvbmZpZyBjb25maWc6CisgICAgICAgICAgIEEgcHl0ZXN0IGNvbmZpZy4KKyAgICAgICAg
ICAgU2VlIDpweTptZXRoOmBwYXJzZWNvbmZpZ2AgYW5kIDpweTptZXRoOmBwYXJzZWNvbmZpZ3Vy
ZWAgZm9yIGNyZWF0aW5nIGl0LgorICAgICAgICA6cGFyYW0gcHkucGF0aC5sb2NhbCBhcmc6Cisg
ICAgICAgICAgICBQYXRoIHRvIHRoZSBmaWxlLgogICAgICAgICAiIiIKLSAgICAgICAgc2Vzc2lv
biA9IFNlc3Npb24oY29uZmlnKQorICAgICAgICBzZXNzaW9uID0gU2Vzc2lvbi5mcm9tX2NvbmZp
Zyhjb25maWcpCiAgICAgICAgIGFzc2VydCAiOjoiIG5vdCBpbiBzdHIoYXJnKQogICAgICAgICBw
ID0gcHkucGF0aC5sb2NhbChhcmcpCiAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9zZXNzaW9u
c3RhcnQoc2Vzc2lvbj1zZXNzaW9uKQogICAgICAgICByZXMgPSBzZXNzaW9uLnBlcmZvcm1fY29s
bGVjdChbc3RyKHApXSwgZ2VuaXRlbXM9RmFsc2UpWzBdCi0gICAgICAgIGNvbmZpZy5ob29rLnB5
dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1cz1FWElUX09LKQor
ICAgICAgICBjb25maWcuaG9vay5weXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uPXNlc3Npb24s
IGV4aXRzdGF0dXM9RXhpdENvZGUuT0spCiAgICAgICAgIHJldHVybiByZXMKIAogICAgIGRlZiBn
ZXRwYXRobm9kZShzZWxmLCBwYXRoKToKQEAgLTY2MSwyNiArOTAyLDI0IEBAIGNsYXNzIFRlc3Rk
aXIob2JqZWN0KToKICAgICAgICAgVGhpcyBpcyBsaWtlIDpweTptZXRoOmBnZXRub2RlYCBidXQg
dXNlcyA6cHk6bWV0aDpgcGFyc2Vjb25maWd1cmVgIHRvCiAgICAgICAgIGNyZWF0ZSB0aGUgKGNv
bmZpZ3VyZWQpIHB5dGVzdCBDb25maWcgaW5zdGFuY2UuCiAKLSAgICAgICAgOnBhcmFtIHBhdGg6
IGEgOnB5OmNsYXNzOmBweS5wYXRoLmxvY2FsYCBpbnN0YW5jZSBvZiB0aGUgZmlsZQotCisgICAg
ICAgIDpwYXJhbSBweS5wYXRoLmxvY2FsIHBhdGg6IFBhdGggdG8gdGhlIGZpbGUuCiAgICAgICAg
ICIiIgogICAgICAgICBjb25maWcgPSBzZWxmLnBhcnNlY29uZmlndXJlKHBhdGgpCi0gICAgICAg
IHNlc3Npb24gPSBTZXNzaW9uKGNvbmZpZykKKyAgICAgICAgc2Vzc2lvbiA9IFNlc3Npb24uZnJv
bV9jb25maWcoY29uZmlnKQogICAgICAgICB4ID0gc2Vzc2lvbi5mc3BhdGguYmVzdHJlbHBhdGgo
cGF0aCkKICAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uPXNl
c3Npb24pCiAgICAgICAgIHJlcyA9IHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KFt4XSwgZ2VuaXRl
bXM9RmFsc2UpWzBdCi0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9zZXNzaW9uZmluaXNoKHNl
c3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1cz1FWElUX09LKQorICAgICAgICBjb25maWcuaG9vay5w
eXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uPXNlc3Npb24sIGV4aXRzdGF0dXM9RXhpdENvZGUu
T0spCiAgICAgICAgIHJldHVybiByZXMKIAotICAgIGRlZiBnZW5pdGVtcyhzZWxmLCBjb2xpdGVt
cyk6CisgICAgZGVmIGdlbml0ZW1zKHNlbGYsIGNvbGl0ZW1zOiBTZXF1ZW5jZVtVbmlvbltJdGVt
LCBDb2xsZWN0b3JdXSkgLT4gTGlzdFtJdGVtXToKICAgICAgICAgIiIiR2VuZXJhdGUgYWxsIHRl
c3QgaXRlbXMgZnJvbSBhIGNvbGxlY3Rpb24gbm9kZS4KIAogICAgICAgICBUaGlzIHJlY3Vyc2Vz
IGludG8gdGhlIGNvbGxlY3Rpb24gbm9kZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZQog
ICAgICAgICB0ZXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4uCi0KICAgICAgICAgIiIiCiAgICAg
ICAgIHNlc3Npb24gPSBjb2xpdGVtc1swXS5zZXNzaW9uCi0gICAgICAgIHJlc3VsdCA9IFtdCisg
ICAgICAgIHJlc3VsdCA9IFtdICAjIHR5cGU6IExpc3RbSXRlbV0KICAgICAgICAgZm9yIGNvbGl0
ZW0gaW4gY29saXRlbXM6CiAgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKHNlc3Npb24uZ2VuaXRl
bXMoY29saXRlbSkpCiAgICAgICAgIHJldHVybiByZXN1bHQKQEAgLTY5Miw3ICs5MzEsNiBAQCBj
bGFzcyBUZXN0ZGlyKG9iamVjdCk6CiAgICAgICAgIHByb3ZpZGUgYSBgYC5nZXRydW5uZXIoKWBg
IG1ldGhvZCB3aGljaCBzaG91bGQgcmV0dXJuIGEgcnVubmVyIHdoaWNoCiAgICAgICAgIGNhbiBy
dW4gdGhlIHRlc3QgcHJvdG9jb2wgZm9yIGEgc2luZ2xlIGl0ZW0sIGUuZy4KICAgICAgICAgOnB5
OmZ1bmM6YF9weXRlc3QucnVubmVyLnJ1bnRlc3Rwcm90b2NvbGAuCi0KICAgICAgICAgIiIiCiAg
ICAgICAgICMgdXNlZCBmcm9tIHJ1bm5lciBmdW5jdGlvbmFsIHRlc3RzCiAgICAgICAgIGl0ZW0g
PSBzZWxmLmdldGl0ZW0oc291cmNlKQpAQCAtNzAxLDM3ICs5MzksMzcgQEAgY2xhc3MgVGVzdGRp
cihvYmplY3QpOgogICAgICAgICBydW5uZXIgPSB0ZXN0Y2xhc3NpbnN0YW5jZS5nZXRydW5uZXIo
KQogICAgICAgICByZXR1cm4gcnVubmVyKGl0ZW0pCiAKLSAgICBkZWYgaW5saW5lX3J1bnNvdXJj
ZShzZWxmLCBzb3VyY2UsICpjbWRsaW5lYXJncyk6CisgICAgZGVmIGlubGluZV9ydW5zb3VyY2Uo
c2VsZiwgc291cmNlLCAqY21kbGluZWFyZ3MpIC0+IEhvb2tSZWNvcmRlcjoKICAgICAgICAgIiIi
UnVuIGEgdGVzdCBtb2R1bGUgaW4gcHJvY2VzcyB1c2luZyBgYHB5dGVzdC5tYWluKClgYC4KIAog
ICAgICAgICBUaGlzIHJ1biB3cml0ZXMgInNvdXJjZSIgaW50byBhIHRlbXBvcmFyeSBmaWxlIGFu
ZCBydW5zCiAgICAgICAgIGBgcHl0ZXN0Lm1haW4oKWBgIG9uIGl0LCByZXR1cm5pbmcgYSA6cHk6
Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5zdGFuY2UKICAgICAgICAgZm9yIHRoZSByZXN1bHQuCiAK
LSAgICAgICAgOnBhcmFtIHNvdXJjZTogdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSB0ZXN0IG1vZHVs
ZQotCi0gICAgICAgIDpwYXJhbSBjbWRsaW5lYXJnczogYW55IGV4dHJhIGNvbW1hbmQgbGluZSBh
cmd1bWVudHMgdG8gdXNlCisgICAgICAgIDpwYXJhbSBzb3VyY2U6IFRoZSBzb3VyY2UgY29kZSBv
ZiB0aGUgdGVzdCBtb2R1bGUuCiAKLSAgICAgICAgOnJldHVybjogOnB5OmNsYXNzOmBIb29rUmVj
b3JkZXJgIGluc3RhbmNlIG9mIHRoZSByZXN1bHQKKyAgICAgICAgOnBhcmFtIGNtZGxpbmVhcmdz
OiBBbnkgZXh0cmEgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byB1c2UuCiAKKyAgICAgICAgOnJl
dHVybnM6IDpweTpjbGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0Lgog
ICAgICAgICAiIiIKICAgICAgICAgcCA9IHNlbGYubWFrZXB5ZmlsZShzb3VyY2UpCiAgICAgICAg
IHZhbHVlcyA9IGxpc3QoY21kbGluZWFyZ3MpICsgW3BdCiAgICAgICAgIHJldHVybiBzZWxmLmlu
bGluZV9ydW4oKnZhbHVlcykKIAotICAgIGRlZiBpbmxpbmVfZ2VuaXRlbXMoc2VsZiwgKmFyZ3Mp
OgorICAgIGRlZiBpbmxpbmVfZ2VuaXRlbXMoc2VsZiwgKmFyZ3MpIC0+IFR1cGxlW0xpc3RbSXRl
bV0sIEhvb2tSZWNvcmRlcl06CiAgICAgICAgICIiIlJ1biBgYHB5dGVzdC5tYWluKFsnLS1jb2xs
ZWN0b25seSddKWBgIGluLXByb2Nlc3MuCiAKICAgICAgICAgUnVucyB0aGUgOnB5OmZ1bmM6YHB5
dGVzdC5tYWluYCBmdW5jdGlvbiB0byBydW4gYWxsIG9mIHB5dGVzdCBpbnNpZGUKICAgICAgICAg
dGhlIHRlc3QgcHJvY2VzcyBpdHNlbGYgbGlrZSA6cHk6bWV0aDpgaW5saW5lX3J1bmAsIGJ1dCBy
ZXR1cm5zIGEKICAgICAgICAgdHVwbGUgb2YgdGhlIGNvbGxlY3RlZCBpdGVtcyBhbmQgYSA6cHk6
Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5zdGFuY2UuCi0KICAgICAgICAgIiIiCiAgICAgICAgIHJl
YyA9IHNlbGYuaW5saW5lX3J1bigiLS1jb2xsZWN0LW9ubHkiLCAqYXJncykKICAgICAgICAgaXRl
bXMgPSBbeC5pdGVtIGZvciB4IGluIHJlYy5nZXRjYWxscygicHl0ZXN0X2l0ZW1jb2xsZWN0ZWQi
KV0KICAgICAgICAgcmV0dXJuIGl0ZW1zLCByZWMKIAotICAgIGRlZiBpbmxpbmVfcnVuKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGlubGluZV9ydW4oCisgICAgICAgIHNlbGYsICph
cmdzLCBwbHVnaW5zPSgpLCBub19yZXJhaXNlX2N0cmxjOiBib29sID0gRmFsc2UKKyAgICApIC0+
IEhvb2tSZWNvcmRlcjoKICAgICAgICAgIiIiUnVuIGBgcHl0ZXN0Lm1haW4oKWBgIGluLXByb2Nl
c3MsIHJldHVybmluZyBhIEhvb2tSZWNvcmRlci4KIAogICAgICAgICBSdW5zIHRoZSA6cHk6ZnVu
YzpgcHl0ZXN0Lm1haW5gIGZ1bmN0aW9uIHRvIHJ1biBhbGwgb2YgcHl0ZXN0IGluc2lkZQpAQCAt
NzQwLDI4ICs5NzgsMjQgQEAgY2xhc3MgVGVzdGRpcihvYmplY3QpOgogICAgICAgICBmcm9tIHRo
YXQgcnVuIHRoYW4gY2FuIGJlIGRvbmUgYnkgbWF0Y2hpbmcgc3Rkb3V0L3N0ZGVyciBmcm9tCiAg
ICAgICAgIDpweTptZXRoOmBydW5weXRlc3RgLgogCi0gICAgICAgIDpwYXJhbSBhcmdzOiBjb21t
YW5kIGxpbmUgYXJndW1lbnRzIHRvIHBhc3MgdG8gOnB5OmZ1bmM6YHB5dGVzdC5tYWluYAotCi0g
ICAgICAgIDpwYXJhbSBwbHVnaW46IChrZXl3b3JkLW9ubHkpIGV4dHJhIHBsdWdpbiBpbnN0YW5j
ZXMgdGhlCi0gICAgICAgICAgIGBgcHl0ZXN0Lm1haW4oKWBgIGluc3RhbmNlIHNob3VsZCB1c2UK
LQotICAgICAgICA6cmV0dXJuOiBhIDpweTpjbGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZQor
ICAgICAgICA6cGFyYW0gYXJnczoKKyAgICAgICAgICAgIENvbW1hbmQgbGluZSBhcmd1bWVudHMg
dG8gcGFzcyB0byA6cHk6ZnVuYzpgcHl0ZXN0Lm1haW5gLgorICAgICAgICA6cGFyYW0gcGx1Z2lu
czoKKyAgICAgICAgICAgIEV4dHJhIHBsdWdpbiBpbnN0YW5jZXMgdGhlIGBgcHl0ZXN0Lm1haW4o
KWBgIGluc3RhbmNlIHNob3VsZCB1c2UuCisgICAgICAgIDpwYXJhbSBub19yZXJhaXNlX2N0cmxj
OgorICAgICAgICAgICAgVHlwaWNhbGx5IHdlIHJlcmFpc2Uga2V5Ym9hcmQgaW50ZXJydXB0cyBm
cm9tIHRoZSBjaGlsZCBydW4uIElmCisgICAgICAgICAgICBUcnVlLCB0aGUgS2V5Ym9hcmRJbnRl
cnJ1cHQgZXhjZXB0aW9uIGlzIGNhcHR1cmVkLgogCisgICAgICAgIDpyZXR1cm5zOiBBIDpweTpj
bGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZS4KICAgICAgICAgIiIiCisgICAgICAgICMgKG1h
eWJlIGEgY3B5dGhvbiBidWc/KSB0aGUgaW1wb3J0bGliIGNhY2hlIHNvbWV0aW1lcyBpc24ndCB1
cGRhdGVkCisgICAgICAgICMgcHJvcGVybHkgYmV0d2VlbiBmaWxlIGNyZWF0aW9uIGFuZCBpbmxp
bmVfcnVuIChlc3BlY2lhbGx5IGlmIGltcG9ydHMKKyAgICAgICAgIyBhcmUgaW50ZXJzcGVyc2Vk
IHdpdGggZmlsZSBjcmVhdGlvbikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVz
KCkKKworICAgICAgICBwbHVnaW5zID0gbGlzdChwbHVnaW5zKQogICAgICAgICBmaW5hbGl6ZXJz
ID0gW10KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBXaGVuIHJ1bm5pbmcgcHl0ZXN0IGlu
bGluZSBhbnkgcGx1Z2lucyBhY3RpdmUgaW4gdGhlIG1haW4gdGVzdAotICAgICAgICAgICAgIyBw
cm9jZXNzIGFyZSBhbHJlYWR5IGltcG9ydGVkLiAgU28gdGhpcyBkaXNhYmxlcyB0aGUgd2Fybmlu
ZyB3aGljaAotICAgICAgICAgICAgIyB3aWxsIHRyaWdnZXIgdG8gc2F5IHRoZXkgY2FuIG5vIGxv
bmdlciBiZSByZXdyaXR0ZW4sIHdoaWNoIGlzCi0gICAgICAgICAgICAjIGZpbmUgYXMgdGhleSBo
YXZlIGFscmVhZHkgYmVlbiByZXdyaXR0ZW4uCi0gICAgICAgICAgICBvcmlnX3dhcm4gPSBBc3Nl
cnRpb25SZXdyaXRpbmdIb29rLl93YXJuX2FscmVhZHlfaW1wb3J0ZWQKLQotICAgICAgICAgICAg
ZGVmIHJldmVydF93YXJuX2FscmVhZHlfaW1wb3J0ZWQoKToKLSAgICAgICAgICAgICAgICBBc3Nl
cnRpb25SZXdyaXRpbmdIb29rLl93YXJuX2FscmVhZHlfaW1wb3J0ZWQgPSBvcmlnX3dhcm4KLQot
ICAgICAgICAgICAgZmluYWxpemVycy5hcHBlbmQocmV2ZXJ0X3dhcm5fYWxyZWFkeV9pbXBvcnRl
ZCkKLSAgICAgICAgICAgIEFzc2VydGlvblJld3JpdGluZ0hvb2suX3dhcm5fYWxyZWFkeV9pbXBv
cnRlZCA9IGxhbWJkYSAqYTogTm9uZQotCiAgICAgICAgICAgICAjIEFueSBzeXMubW9kdWxlIG9y
IHN5cy5wYXRoIGNoYW5nZXMgZG9uZSB3aGlsZSBydW5uaW5nIHB5dGVzdAogICAgICAgICAgICAg
IyBpbmxpbmUgc2hvdWxkIGJlIHJldmVydGVkIGFmdGVyIHRoZSB0ZXN0IHJ1biBjb21wbGV0ZXMg
dG8gYXZvaWQKICAgICAgICAgICAgICMgY2xhc2hpbmcgd2l0aCBsYXRlciBpbmxpbmUgdGVzdHMg
cnVuIHdpdGhpbiB0aGUgc2FtZSBweXRlc3QgdGVzdCwKQEAgLTc3NywyNiArMTAxMSwyNCBAQCBj
bGFzcyBUZXN0ZGlyKG9iamVjdCk6CiAKICAgICAgICAgICAgIHJlYyA9IFtdCiAKLSAgICAgICAg
ICAgIGNsYXNzIENvbGxlY3Qob2JqZWN0KToKLQotICAgICAgICAgICAgICAgIGRlZiBweXRlc3Rf
Y29uZmlndXJlKHgsIGNvbmZpZyk6CisgICAgICAgICAgICBjbGFzcyBDb2xsZWN0OgorICAgICAg
ICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKHgsIGNvbmZpZzogQ29uZmlnKSAtPiBOb25l
OgogICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKHNlbGYubWFrZV9ob29rX3JlY29yZGVy
KGNvbmZpZy5wbHVnaW5tYW5hZ2VyKSkKIAotICAgICAgICAgICAgcGx1Z2lucyA9IGt3YXJncy5n
ZXQoInBsdWdpbnMiKSBvciBbXQogICAgICAgICAgICAgcGx1Z2lucy5hcHBlbmQoQ29sbGVjdCgp
KQogICAgICAgICAgICAgcmV0ID0gcHl0ZXN0Lm1haW4obGlzdChhcmdzKSwgcGx1Z2lucz1wbHVn
aW5zKQogICAgICAgICAgICAgaWYgbGVuKHJlYykgPT0gMToKICAgICAgICAgICAgICAgICByZXBy
ZWMgPSByZWMucG9wKCkKICAgICAgICAgICAgIGVsc2U6CiAKLSAgICAgICAgICAgICAgICBjbGFz
cyByZXByZWMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBjbGFzcyByZXByZWM6ICAjIHR5cGU6
IGlnbm9yZQogICAgICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgICAgIHJlcHJlYy5y
ZXQgPSByZXQKIAotICAgICAgICAgICAgIyB0eXBpY2FsbHkgd2UgcmVyYWlzZSBrZXlib2FyZCBp
bnRlcnJ1cHRzIGZyb20gdGhlIGNoaWxkIHJ1bgotICAgICAgICAgICAgIyBiZWNhdXNlIGl0J3Mg
b3VyIHVzZXIgcmVxdWVzdGluZyBpbnRlcnJ1cHRpb24gb2YgdGhlIHRlc3RpbmcKLSAgICAgICAg
ICAgIGlmIHJldCA9PSAyIGFuZCBub3Qga3dhcmdzLmdldCgibm9fcmVyYWlzZV9jdHJsYyIpOgor
ICAgICAgICAgICAgIyBUeXBpY2FsbHkgd2UgcmVyYWlzZSBrZXlib2FyZCBpbnRlcnJ1cHRzIGZy
b20gdGhlIGNoaWxkIHJ1bgorICAgICAgICAgICAgIyBiZWNhdXNlIGl0J3Mgb3VyIHVzZXIgcmVx
dWVzdGluZyBpbnRlcnJ1cHRpb24gb2YgdGhlIHRlc3RpbmcuCisgICAgICAgICAgICBpZiByZXQg
PT0gRXhpdENvZGUuSU5URVJSVVBURUQgYW5kIG5vdCBub19yZXJhaXNlX2N0cmxjOgogICAgICAg
ICAgICAgICAgIGNhbGxzID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3Rfa2V5Ym9hcmRfaW50ZXJy
dXB0IikKICAgICAgICAgICAgICAgICBpZiBjYWxscyBhbmQgY2FsbHNbLTFdLmV4Y2luZm8udHlw
ZSA9PSBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9h
cmRJbnRlcnJ1cHQoKQpAQCAtODA1LDI5ICsxMDM3LDM0IEBAIGNsYXNzIFRlc3RkaXIob2JqZWN0
KToKICAgICAgICAgICAgIGZvciBmaW5hbGl6ZXIgaW4gZmluYWxpemVyczoKICAgICAgICAgICAg
ICAgICBmaW5hbGl6ZXIoKQogCi0gICAgZGVmIHJ1bnB5dGVzdF9pbnByb2Nlc3Moc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKKyAgICBkZWYgcnVucHl0ZXN0X2lucHJvY2VzcyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpIC0+IFJ1blJlc3VsdDoKICAgICAgICAgIiIiUmV0dXJuIHJlc3VsdCBvZiBydW5u
aW5nIHB5dGVzdCBpbi1wcm9jZXNzLCBwcm92aWRpbmcgYSBzaW1pbGFyCi0gICAgICAgIGludGVy
ZmFjZSB0byB3aGF0IHNlbGYucnVucHl0ZXN0KCkgcHJvdmlkZXMuCisgICAgICAgIGludGVyZmFj
ZSB0byB3aGF0IHNlbGYucnVucHl0ZXN0KCkgcHJvdmlkZXMuIiIiCisgICAgICAgIHN5c3BhdGhp
bnNlcnQgPSBrd2FyZ3MucG9wKCJzeXNwYXRoaW5zZXJ0IiwgRmFsc2UpCiAKLSAgICAgICAgIiIi
Ci0gICAgICAgIGlmIGt3YXJncy5nZXQoInN5c3BhdGhpbnNlcnQiKToKKyAgICAgICAgaWYgc3lz
cGF0aGluc2VydDoKICAgICAgICAgICAgIHNlbGYuc3lzcGF0aGluc2VydCgpCi0gICAgICAgIG5v
dyA9IHRpbWUudGltZSgpCi0gICAgICAgIGNhcHR1cmUgPSBNdWx0aUNhcHR1cmUoQ2FwdHVyZT1T
eXNDYXB0dXJlKQorICAgICAgICBub3cgPSB0aW1pbmcudGltZSgpCisgICAgICAgIGNhcHR1cmUg
PSBfZ2V0X211bHRpY2FwdHVyZSgic3lzIikKICAgICAgICAgY2FwdHVyZS5zdGFydF9jYXB0dXJp
bmcoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVw
cmVjID0gc2VsZi5pbmxpbmVfcnVuKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgIGV4Y2Vw
dCBTeXN0ZW1FeGl0IGFzIGU6CisgICAgICAgICAgICAgICAgcmV0ID0gZS5hcmdzWzBdCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXQgPSBFeGl0Q29kZShlLmFy
Z3NbMF0pCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAg
ICAgICAgIHBhc3MKIAotICAgICAgICAgICAgICAgIGNsYXNzIHJlcHJlYyhvYmplY3QpOgotICAg
ICAgICAgICAgICAgICAgICByZXQgPSBlLmFyZ3NbMF0KKyAgICAgICAgICAgICAgICBjbGFzcyBy
ZXByZWM6ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICAgICAgICAgICAgICByZXQgPSByZXQKIAog
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICB0cmFjZWJhY2su
cHJpbnRfZXhjKCkKIAotICAgICAgICAgICAgICAgIGNsYXNzIHJlcHJlYyhvYmplY3QpOgotICAg
ICAgICAgICAgICAgICAgICByZXQgPSAzCisgICAgICAgICAgICAgICAgY2xhc3MgcmVwcmVjOiAg
IyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gRXhpdENvZGUoMykKIAog
ICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXB0dXJlLnJlYWRvdXRl
cnIoKQpAQCAtODM1LDMwICsxMDcyLDMzIEBAIGNsYXNzIFRlc3RkaXIob2JqZWN0KToKICAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3V0KQogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZShlcnIpCiAKLSAgICAgICAgcmVzID0gUnVuUmVzdWx0KHJlcHJlYy5yZXQsIG91dC5zcGxpdCgi
XG4iKSwgZXJyLnNwbGl0KCJcbiIpLCB0aW1lLnRpbWUoKSAtIG5vdykKLSAgICAgICAgcmVzLnJl
cHJlYyA9IHJlcHJlYworICAgICAgICBhc3NlcnQgcmVwcmVjLnJldCBpcyBub3QgTm9uZQorICAg
ICAgICByZXMgPSBSdW5SZXN1bHQoCisgICAgICAgICAgICByZXByZWMucmV0LCBvdXQuc3BsaXRs
aW5lcygpLCBlcnIuc3BsaXRsaW5lcygpLCB0aW1pbmcudGltZSgpIC0gbm93CisgICAgICAgICkK
KyAgICAgICAgcmVzLnJlcHJlYyA9IHJlcHJlYyAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgcmV0
dXJuIHJlcwogCi0gICAgZGVmIHJ1bnB5dGVzdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAg
IGRlZiBydW5weXRlc3Qoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKSAtPiBSdW5SZXN1bHQ6CiAgICAg
ICAgICIiIlJ1biBweXRlc3QgaW5saW5lIG9yIGluIGEgc3VicHJvY2VzcywgZGVwZW5kaW5nIG9u
IHRoZSBjb21tYW5kIGxpbmUKLSAgICAgICAgb3B0aW9uICItLXJ1bnB5dGVzdCIgYW5kIHJldHVy
biBhIDpweTpjbGFzczpgUnVuUmVzdWx0YC4KLQotICAgICAgICAiIiIKKyAgICAgICAgb3B0aW9u
ICItLXJ1bnB5dGVzdCIgYW5kIHJldHVybiBhIDpweTpjbGFzczpgUnVuUmVzdWx0YC4iIiIKICAg
ICAgICAgYXJncyA9IHNlbGYuX2Vuc3VyZV9iYXNldGVtcChhcmdzKQotICAgICAgICByZXR1cm4g
c2VsZi5fcnVucHl0ZXN0X21ldGhvZCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGlmIHNlbGYu
X21ldGhvZCA9PSAiaW5wcm9jZXNzIjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bnB5dGVz
dF9pbnByb2Nlc3MoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBlbGlmIHNlbGYuX21ldGhvZCA9
PSAic3VicHJvY2VzcyI6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5weXRlc3Rfc3VicHJv
Y2VzcygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVW5yZWNv
Z25pemVkIHJ1bnB5dGVzdCBvcHRpb246IHt9Ii5mb3JtYXQoc2VsZi5fbWV0aG9kKSkKIAogICAg
IGRlZiBfZW5zdXJlX2Jhc2V0ZW1wKHNlbGYsIGFyZ3MpOgotICAgICAgICBhcmdzID0gW3N0cih4
KSBmb3IgeCBpbiBhcmdzXQorICAgICAgICBhcmdzID0gbGlzdChhcmdzKQogICAgICAgICBmb3Ig
eCBpbiBhcmdzOgogICAgICAgICAgICAgaWYgc3RyKHgpLnN0YXJ0c3dpdGgoIi0tYmFzZXRlbXAi
KToKLSAgICAgICAgICAgICAgICAjIHByaW50KCJiYXNlZHRlbXAgZXhpc3RzOiAlcyIgJShhcmdz
LCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKCItLWJhc2V0ZW1wPSVzIiAlIHNlbGYudG1wZGlyLmRpcnBhdGgoImJhc2V0ZW1w
IikpCi0gICAgICAgICAgICAjIHByaW50KCJhZGRlZCBiYXNldGVtcDogJXMiICUoYXJncywpKQog
ICAgICAgICByZXR1cm4gYXJncwogCi0gICAgZGVmIHBhcnNlY29uZmlnKHNlbGYsICphcmdzKToK
KyAgICBkZWYgcGFyc2Vjb25maWcoc2VsZiwgKmFyZ3MpIC0+IENvbmZpZzoKICAgICAgICAgIiIi
UmV0dXJuIGEgbmV3IHB5dGVzdCBDb25maWcgaW5zdGFuY2UgZnJvbSBnaXZlbiBjb21tYW5kbGlu
ZSBhcmdzLgogCiAgICAgICAgIFRoaXMgaW52b2tlcyB0aGUgcHl0ZXN0IGJvb3RzdHJhcHBpbmcg
Y29kZSBpbiBfcHl0ZXN0LmNvbmZpZyB0byBjcmVhdGUKQEAgLTg2OCwxNTUgKzExMDgsMjA4IEBA
IGNsYXNzIFRlc3RkaXIob2JqZWN0KToKIAogICAgICAgICBJZiA6cHk6YXR0cjpgcGx1Z2luc2Ag
aGFzIGJlZW4gcG9wdWxhdGVkIHRoZXkgc2hvdWxkIGJlIHBsdWdpbiBtb2R1bGVzCiAgICAgICAg
IHRvIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgUGx1Z2luTWFuYWdlci4KLQogICAgICAgICAiIiIK
ICAgICAgICAgYXJncyA9IHNlbGYuX2Vuc3VyZV9iYXNldGVtcChhcmdzKQogCiAgICAgICAgIGlt
cG9ydCBfcHl0ZXN0LmNvbmZpZwogCi0gICAgICAgIGNvbmZpZyA9IF9weXRlc3QuY29uZmlnLl9w
cmVwYXJlY29uZmlnKGFyZ3MsIHNlbGYucGx1Z2lucykKKyAgICAgICAgY29uZmlnID0gX3B5dGVz
dC5jb25maWcuX3ByZXBhcmVjb25maWcoYXJncywgc2VsZi5wbHVnaW5zKSAgIyB0eXBlOiBpZ25v
cmVbYXJnLXR5cGVdCiAgICAgICAgICMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSB0ZXN0IHdpbGwg
ZG8gd2l0aCB0aGlzIGhhbGYtc2V0dXAgY29uZmlnCiAgICAgICAgICMgb2JqZWN0IGFuZCB0aHVz
IHdlIG1ha2Ugc3VyZSBpdCBnZXRzIHVuY29uZmlndXJlZCBwcm9wZXJseSBpbiBhbnkKICAgICAg
ICAgIyBjYXNlIChvdGhlcndpc2UgY2FwdHVyaW5nIGNvdWxkIHN0aWxsIGJlIGFjdGl2ZSwgZm9y
IGV4YW1wbGUpCiAgICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIoY29uZmlnLl9lbnN1
cmVfdW5jb25maWd1cmUpCiAgICAgICAgIHJldHVybiBjb25maWcKIAotICAgIGRlZiBwYXJzZWNv
bmZpZ3VyZShzZWxmLCAqYXJncyk6CisgICAgZGVmIHBhcnNlY29uZmlndXJlKHNlbGYsICphcmdz
KSAtPiBDb25maWc6CiAgICAgICAgICIiIlJldHVybiBhIG5ldyBweXRlc3QgY29uZmlndXJlZCBD
b25maWcgaW5zdGFuY2UuCiAKLSAgICAgICAgVGhpcyByZXR1cm5zIGEgbmV3IDpweTpjbGFzczpg
X3B5dGVzdC5jb25maWcuQ29uZmlnYCBpbnN0YW5jZSBsaWtlCisgICAgICAgIFJldHVybnMgYSBu
ZXcgOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5Db25maWdgIGluc3RhbmNlIGxpa2UKICAgICAg
ICAgOnB5Om1ldGg6YHBhcnNlY29uZmlnYCwgYnV0IGFsc28gY2FsbHMgdGhlIHB5dGVzdF9jb25m
aWd1cmUgaG9vay4KLQogICAgICAgICAiIiIKICAgICAgICAgY29uZmlnID0gc2VsZi5wYXJzZWNv
bmZpZygqYXJncykKICAgICAgICAgY29uZmlnLl9kb19jb25maWd1cmUoKQotICAgICAgICBzZWxm
LnJlcXVlc3QuYWRkZmluYWxpemVyKGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKQogICAgICAg
ICByZXR1cm4gY29uZmlnCiAKLSAgICBkZWYgZ2V0aXRlbShzZWxmLCBzb3VyY2UsIGZ1bmNuYW1l
PSJ0ZXN0X2Z1bmMiKToKKyAgICBkZWYgZ2V0aXRlbShzZWxmLCBzb3VyY2UsIGZ1bmNuYW1lOiBz
dHIgPSAidGVzdF9mdW5jIikgLT4gSXRlbToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0ZXN0IGl0
ZW0gZm9yIGEgdGVzdCBmdW5jdGlvbi4KIAotICAgICAgICBUaGlzIHdyaXRlcyB0aGUgc291cmNl
IHRvIGEgcHl0aG9uIGZpbGUgYW5kIHJ1bnMgcHl0ZXN0J3MgY29sbGVjdGlvbiBvbgorICAgICAg
ICBXcml0ZXMgdGhlIHNvdXJjZSB0byBhIHB5dGhvbiBmaWxlIGFuZCBydW5zIHB5dGVzdCdzIGNv
bGxlY3Rpb24gb24KICAgICAgICAgdGhlIHJlc3VsdGluZyBtb2R1bGUsIHJldHVybmluZyB0aGUg
dGVzdCBpdGVtIGZvciB0aGUgcmVxdWVzdGVkCiAgICAgICAgIGZ1bmN0aW9uIG5hbWUuCiAKLSAg
ICAgICAgOnBhcmFtIHNvdXJjZTogdGhlIG1vZHVsZSBzb3VyY2UKLQotICAgICAgICA6cGFyYW0g
ZnVuY25hbWU6IHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZ1bmN0aW9uIGZvciB3aGljaCB0byByZXR1
cm4gYQotICAgICAgICAgICAgdGVzdCBpdGVtCi0KKyAgICAgICAgOnBhcmFtIHNvdXJjZToKKyAg
ICAgICAgICAgIFRoZSBtb2R1bGUgc291cmNlLgorICAgICAgICA6cGFyYW0gZnVuY25hbWU6Cisg
ICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgdGVzdCBmdW5jdGlvbiBmb3Igd2hpY2ggdG8gcmV0
dXJuIGEgdGVzdCBpdGVtLgogICAgICAgICAiIiIKICAgICAgICAgaXRlbXMgPSBzZWxmLmdldGl0
ZW1zKHNvdXJjZSkKICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAgICBpZiBp
dGVtLm5hbWUgPT0gZnVuY25hbWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICAg
ICAgYXNzZXJ0IDAsICgKLSAgICAgICAgICAgICIlciBpdGVtIG5vdCBmb3VuZCBpbiBtb2R1bGU6
XG4lc1xuaXRlbXM6ICVzIiAlIChmdW5jbmFtZSwgc291cmNlLCBpdGVtcykKKyAgICAgICAgYXNz
ZXJ0IDAsICJ7IXJ9IGl0ZW0gbm90IGZvdW5kIGluIG1vZHVsZTpcbnt9XG5pdGVtczoge30iLmZv
cm1hdCgKKyAgICAgICAgICAgIGZ1bmNuYW1lLCBzb3VyY2UsIGl0ZW1zCiAgICAgICAgICkKIAot
ICAgIGRlZiBnZXRpdGVtcyhzZWxmLCBzb3VyY2UpOgorICAgIGRlZiBnZXRpdGVtcyhzZWxmLCBz
b3VyY2UpIC0+IExpc3RbSXRlbV06CiAgICAgICAgICIiIlJldHVybiBhbGwgdGVzdCBpdGVtcyBj
b2xsZWN0ZWQgZnJvbSB0aGUgbW9kdWxlLgogCi0gICAgICAgIFRoaXMgd3JpdGVzIHRoZSBzb3Vy
Y2UgdG8gYSBweXRob24gZmlsZSBhbmQgcnVucyBweXRlc3QncyBjb2xsZWN0aW9uIG9uCisgICAg
ICAgIFdyaXRlcyB0aGUgc291cmNlIHRvIGEgUHl0aG9uIGZpbGUgYW5kIHJ1bnMgcHl0ZXN0J3Mg
Y29sbGVjdGlvbiBvbgogICAgICAgICB0aGUgcmVzdWx0aW5nIG1vZHVsZSwgcmV0dXJuaW5nIGFs
bCB0ZXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4uCi0KICAgICAgICAgIiIiCiAgICAgICAgIG1v
ZGNvbCA9IHNlbGYuZ2V0bW9kdWxlY29sKHNvdXJjZSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2Vu
aXRlbXMoW21vZGNvbF0pCiAKLSAgICBkZWYgZ2V0bW9kdWxlY29sKHNlbGYsIHNvdXJjZSwgY29u
ZmlnYXJncz0oKSwgd2l0aGluaXQ9RmFsc2UpOgorICAgIGRlZiBnZXRtb2R1bGVjb2woc2VsZiwg
c291cmNlLCBjb25maWdhcmdzPSgpLCB3aXRoaW5pdDogYm9vbCA9IEZhbHNlKToKICAgICAgICAg
IiIiUmV0dXJuIHRoZSBtb2R1bGUgY29sbGVjdGlvbiBub2RlIGZvciBgYHNvdXJjZWBgLgogCi0g
ICAgICAgIFRoaXMgd3JpdGVzIGBgc291cmNlYGAgdG8gYSBmaWxlIHVzaW5nIDpweTptZXRoOmBt
YWtlcHlmaWxlYCBhbmQgdGhlbgorICAgICAgICBXcml0ZXMgYGBzb3VyY2VgYCB0byBhIGZpbGUg
dXNpbmcgOnB5Om1ldGg6YG1ha2VweWZpbGVgIGFuZCB0aGVuCiAgICAgICAgIHJ1bnMgdGhlIHB5
dGVzdCBjb2xsZWN0aW9uIG9uIGl0LCByZXR1cm5pbmcgdGhlIGNvbGxlY3Rpb24gbm9kZSBmb3Ig
dGhlCiAgICAgICAgIHRlc3QgbW9kdWxlLgogCi0gICAgICAgIDpwYXJhbSBzb3VyY2U6IHRoZSBz
b3VyY2UgY29kZSBvZiB0aGUgbW9kdWxlIHRvIGNvbGxlY3QKLQotICAgICAgICA6cGFyYW0gY29u
ZmlnYXJnczogYW55IGV4dHJhIGFyZ3VtZW50cyB0byBwYXNzIHRvCi0gICAgICAgICAgICA6cHk6
bWV0aDpgcGFyc2Vjb25maWd1cmVgCisgICAgICAgIDpwYXJhbSBzb3VyY2U6CisgICAgICAgICAg
ICBUaGUgc291cmNlIGNvZGUgb2YgdGhlIG1vZHVsZSB0byBjb2xsZWN0LgogCi0gICAgICAgIDpw
YXJhbSB3aXRoaW5pdDogd2hldGhlciB0byBhbHNvIHdyaXRlIGFuIGBgX19pbml0X18ucHlgYCBm
aWxlIHRvIHRoZQotICAgICAgICAgICAgc2FtZSBkaXJlY3RvcnkgdG8gZW5zdXJlIGl0IGlzIGEg
cGFja2FnZQorICAgICAgICA6cGFyYW0gY29uZmlnYXJnczoKKyAgICAgICAgICAgIEFueSBleHRy
YSBhcmd1bWVudHMgdG8gcGFzcyB0byA6cHk6bWV0aDpgcGFyc2Vjb25maWd1cmVgLgogCisgICAg
ICAgIDpwYXJhbSB3aXRoaW5pdDoKKyAgICAgICAgICAgIFdoZXRoZXIgdG8gYWxzbyB3cml0ZSBh
biBgYF9faW5pdF9fLnB5YGAgZmlsZSB0byB0aGUgc2FtZQorICAgICAgICAgICAgZGlyZWN0b3J5
IHRvIGVuc3VyZSBpdCBpcyBhIHBhY2thZ2UuCiAgICAgICAgICIiIgotICAgICAgICBrdyA9IHtz
ZWxmLnJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX186IFNvdXJjZShzb3VyY2UpLnN0cmlwKCl9Ci0g
ICAgICAgIHBhdGggPSBzZWxmLm1ha2VweWZpbGUoKiprdykKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZShzb3VyY2UsIFBhdGgpOgorICAgICAgICAgICAgcGF0aCA9IHNlbGYudG1wZGlyLmpvaW4oc3Ry
KHNvdXJjZSkpCisgICAgICAgICAgICBhc3NlcnQgbm90IHdpdGhpbml0LCAibm90IHN1cHBvcnRl
ZCBmb3IgcGF0aHMiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBrdyA9IHtzZWxmLl9uYW1l
OiBTb3VyY2Uoc291cmNlKS5zdHJpcCgpfQorICAgICAgICAgICAgcGF0aCA9IHNlbGYubWFrZXB5
ZmlsZSgqKmt3KQogICAgICAgICBpZiB3aXRoaW5pdDoKICAgICAgICAgICAgIHNlbGYubWFrZXB5
ZmlsZShfX2luaXRfXz0iIyIpCiAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnID0gc2VsZi5w
YXJzZWNvbmZpZ3VyZShwYXRoLCAqY29uZmlnYXJncykKLSAgICAgICAgbm9kZSA9IHNlbGYuZ2V0
bm9kZShjb25maWcsIHBhdGgpCisgICAgICAgIHJldHVybiBzZWxmLmdldG5vZGUoY29uZmlnLCBw
YXRoKQogCi0gICAgICAgIHJldHVybiBub2RlCi0KLSAgICBkZWYgY29sbGVjdF9ieV9uYW1lKHNl
bGYsIG1vZGNvbCwgbmFtZSk6CisgICAgZGVmIGNvbGxlY3RfYnlfbmFtZSgKKyAgICAgICAgc2Vs
ZiwgbW9kY29sOiBNb2R1bGUsIG5hbWU6IHN0cgorICAgICkgLT4gT3B0aW9uYWxbVW5pb25bSXRl
bSwgQ29sbGVjdG9yXV06CiAgICAgICAgICIiIlJldHVybiB0aGUgY29sbGVjdGlvbiBub2RlIGZv
ciBuYW1lIGZyb20gdGhlIG1vZHVsZSBjb2xsZWN0aW9uLgogCi0gICAgICAgIFRoaXMgd2lsbCBz
ZWFyY2ggYSBtb2R1bGUgY29sbGVjdGlvbiBub2RlIGZvciBhIGNvbGxlY3Rpb24gbm9kZQotICAg
ICAgICBtYXRjaGluZyB0aGUgZ2l2ZW4gbmFtZS4KLQotICAgICAgICA6cGFyYW0gbW9kY29sOiBh
IG1vZHVsZSBjb2xsZWN0aW9uIG5vZGU7IHNlZSA6cHk6bWV0aDpgZ2V0bW9kdWxlY29sYAotCi0g
ICAgICAgIDpwYXJhbSBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgbm9kZSB0byByZXR1cm4KKyAgICAg
ICAgU2VhcmNocyBhIG1vZHVsZSBjb2xsZWN0aW9uIG5vZGUgZm9yIGEgY29sbGVjdGlvbiBub2Rl
IG1hdGNoaW5nIHRoZQorICAgICAgICBnaXZlbiBuYW1lLgogCisgICAgICAgIDpwYXJhbSBtb2Rj
b2w6IEEgbW9kdWxlIGNvbGxlY3Rpb24gbm9kZTsgc2VlIDpweTptZXRoOmBnZXRtb2R1bGVjb2xg
LgorICAgICAgICA6cGFyYW0gbmFtZTogVGhlIG5hbWUgb2YgdGhlIG5vZGUgdG8gcmV0dXJuLgog
ICAgICAgICAiIiIKICAgICAgICAgaWYgbW9kY29sIG5vdCBpbiBzZWxmLl9tb2RfY29sbGVjdGlv
bnM6CiAgICAgICAgICAgICBzZWxmLl9tb2RfY29sbGVjdGlvbnNbbW9kY29sXSA9IGxpc3QobW9k
Y29sLmNvbGxlY3QoKSkKICAgICAgICAgZm9yIGNvbGl0ZW0gaW4gc2VsZi5fbW9kX2NvbGxlY3Rp
b25zW21vZGNvbF06CiAgICAgICAgICAgICBpZiBjb2xpdGVtLm5hbWUgPT0gbmFtZToKICAgICAg
ICAgICAgICAgICByZXR1cm4gY29saXRlbQorICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVm
IHBvcGVuKHNlbGYsIGNtZGFyZ3MsIHN0ZG91dCwgc3RkZXJyLCAqKmt3KToKKyAgICBkZWYgcG9w
ZW4oCisgICAgICAgIHNlbGYsCisgICAgICAgIGNtZGFyZ3MsCisgICAgICAgIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsCisgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgIHN0
ZGluPUNMT1NFX1NURElOLAorICAgICAgICAqKmt3CisgICAgKToKICAgICAgICAgIiIiSW52b2tl
IHN1YnByb2Nlc3MuUG9wZW4uCiAKLSAgICAgICAgVGhpcyBjYWxscyBzdWJwcm9jZXNzLlBvcGVu
IG1ha2luZyBzdXJlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAgICAgIGlzIGlu
IHRoZSBQWVRIT05QQVRILgorICAgICAgICBDYWxscyBzdWJwcm9jZXNzLlBvcGVuIG1ha2luZyBz
dXJlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzCisgICAgICAgIGluIHRoZSBQWVRI
T05QQVRILgogCiAgICAgICAgIFlvdSBwcm9iYWJseSB3YW50IHRvIHVzZSA6cHk6bWV0aDpgcnVu
YCBpbnN0ZWFkLgotCiAgICAgICAgICIiIgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHko
KQogICAgICAgICBlbnZbIlBZVEhPTlBBVEgiXSA9IG9zLnBhdGhzZXAuam9pbigKLSAgICAgICAg
ICAgIGZpbHRlcihOb25lLCBbc3RyKG9zLmdldGN3ZCgpKSwgZW52LmdldCgiUFlUSE9OUEFUSCIs
ICIiKV0pCisgICAgICAgICAgICBmaWx0ZXIoTm9uZSwgW29zLmdldGN3ZCgpLCBlbnYuZ2V0KCJQ
WVRIT05QQVRIIiwgIiIpXSkKICAgICAgICAgKQogICAgICAgICBrd1siZW52Il0gPSBlbnYKIAot
ICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oCi0gICAgICAgICAgICBjbWRhcmdzLCBz
dGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIsICoqa3cK
LSAgICAgICAgKQotICAgICAgICBwb3Blbi5zdGRpbi5jbG9zZSgpCisgICAgICAgIGlmIHN0ZGlu
IGlzIFRlc3RkaXIuQ0xPU0VfU1RESU46CisgICAgICAgICAgICBrd1sic3RkaW4iXSA9IHN1YnBy
b2Nlc3MuUElQRQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGJ5dGVzKToKKyAgICAg
ICAgICAgIGt3WyJzdGRpbiJdID0gc3VicHJvY2Vzcy5QSVBFCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBrd1sic3RkaW4iXSA9IHN0ZGluCisKKyAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNz
LlBvcGVuKGNtZGFyZ3MsIHN0ZG91dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIsICoqa3cpCisgICAg
ICAgIGlmIHN0ZGluIGlzIFRlc3RkaXIuQ0xPU0VfU1RESU46CisgICAgICAgICAgICBhc3NlcnQg
cG9wZW4uc3RkaW4gaXMgbm90IE5vbmUKKyAgICAgICAgICAgIHBvcGVuLnN0ZGluLmNsb3NlKCkK
KyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBieXRlcyk6CisgICAgICAgICAgICBhc3Nl
cnQgcG9wZW4uc3RkaW4gaXMgbm90IE5vbmUKKyAgICAgICAgICAgIHBvcGVuLnN0ZGluLndyaXRl
KHN0ZGluKQogCiAgICAgICAgIHJldHVybiBwb3BlbgogCi0gICAgZGVmIHJ1bihzZWxmLCAqY21k
YXJncyk6CisgICAgZGVmIHJ1bigKKyAgICAgICAgc2VsZiwgKmNtZGFyZ3MsIHRpbWVvdXQ6IE9w
dGlvbmFsW2Zsb2F0XSA9IE5vbmUsIHN0ZGluPUNMT1NFX1NURElOCisgICAgKSAtPiBSdW5SZXN1
bHQ6CiAgICAgICAgICIiIlJ1biBhIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuCiAKICAgICAgICAg
UnVuIGEgcHJvY2VzcyB1c2luZyBzdWJwcm9jZXNzLlBvcGVuIHNhdmluZyB0aGUgc3Rkb3V0IGFu
ZCBzdGRlcnIuCiAKLSAgICAgICAgUmV0dXJucyBhIDpweTpjbGFzczpgUnVuUmVzdWx0YC4KLQor
ICAgICAgICA6cGFyYW0gYXJnczoKKyAgICAgICAgICAgIFRoZSBzZXF1ZW5jZSBvZiBhcmd1bWVu
dHMgdG8gcGFzcyB0byBgc3VicHJvY2Vzcy5Qb3BlbigpYC4KKyAgICAgICAgOnBhcmFtIHRpbWVv
dXQ6CisgICAgICAgICAgICBUaGUgcGVyaW9kIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdG8gdGlt
ZW91dCBhbmQgcmFpc2UKKyAgICAgICAgICAgIDpweTpjbGFzczpgVGVzdGRpci5UaW1lb3V0RXhw
aXJlZGAuCisgICAgICAgIDpwYXJhbSBzdGRpbjoKKyAgICAgICAgICAgIE9wdGlvbmFsIHN0YW5k
YXJkIGlucHV0LiAgQnl0ZXMgYXJlIGJlaW5nIHNlbmQsIGNsb3NpbmcKKyAgICAgICAgICAgIHRo
ZSBwaXBlLCBvdGhlcndpc2UgaXQgaXMgcGFzc2VkIHRocm91Z2ggdG8gYGBwb3BlbmBgLgorICAg
ICAgICAgICAgRGVmYXVsdHMgdG8gYGBDTE9TRV9TVERJTmBgLCB3aGljaCB0cmFuc2xhdGVzIHRv
IHVzaW5nIGEgcGlwZQorICAgICAgICAgICAgKGBgc3VicHJvY2Vzcy5QSVBFYGApIHRoYXQgZ2V0
cyBjbG9zZWQuCisKKyAgICAgICAgOnJ0eXBlOiBSdW5SZXN1bHQKICAgICAgICAgIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9ydW4oKmNtZGFyZ3MpCisgICAgICAgIF9fdHJhY2ViYWNraGlkZV9f
ID0gVHJ1ZQogCi0gICAgZGVmIF9ydW4oc2VsZiwgKmNtZGFyZ3MpOgotICAgICAgICBjbWRhcmdz
ID0gW3N0cih4KSBmb3IgeCBpbiBjbWRhcmdzXQorICAgICAgICBjbWRhcmdzID0gdHVwbGUoCisg
ICAgICAgICAgICBzdHIoYXJnKSBpZiBpc2luc3RhbmNlKGFyZywgcHkucGF0aC5sb2NhbCkgZWxz
ZSBhcmcgZm9yIGFyZyBpbiBjbWRhcmdzCisgICAgICAgICkKICAgICAgICAgcDEgPSBzZWxmLnRt
cGRpci5qb2luKCJzdGRvdXQiKQogICAgICAgICBwMiA9IHNlbGYudG1wZGlyLmpvaW4oInN0ZGVy
ciIpCi0gICAgICAgIHByaW50KCJydW5uaW5nOiIsICIgIi5qb2luKGNtZGFyZ3MpKQotICAgICAg
ICBwcmludCgiICAgICBpbjoiLCBzdHIocHkucGF0aC5sb2NhbCgpKSkKLSAgICAgICAgZjEgPSBj
b2RlY3Mub3BlbihzdHIocDEpLCAidyIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgZjIgPSBj
b2RlY3Mub3BlbihzdHIocDIpLCAidyIsIGVuY29kaW5nPSJ1dGY4IikKKyAgICAgICAgcHJpbnQo
InJ1bm5pbmc6IiwgKmNtZGFyZ3MpCisgICAgICAgIHByaW50KCIgICAgIGluOiIsIHB5LnBhdGgu
bG9jYWwoKSkKKyAgICAgICAgZjEgPSBvcGVuKHN0cihwMSksICJ3IiwgZW5jb2Rpbmc9InV0Zjgi
KQorICAgICAgICBmMiA9IG9wZW4oc3RyKHAyKSwgInciLCBlbmNvZGluZz0idXRmOCIpCiAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBub3cg
PSB0aW1pbmcudGltZSgpCiAgICAgICAgICAgICBwb3BlbiA9IHNlbGYucG9wZW4oCi0gICAgICAg
ICAgICAgICAgY21kYXJncywgc3Rkb3V0PWYxLCBzdGRlcnI9ZjIsIGNsb3NlX2Zkcz0oc3lzLnBs
YXRmb3JtICE9ICJ3aW4zMiIpCisgICAgICAgICAgICAgICAgY21kYXJncywKKyAgICAgICAgICAg
ICAgICBzdGRpbj1zdGRpbiwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9ZjEsCisgICAgICAgICAg
ICAgICAgc3RkZXJyPWYyLAorICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0oc3lzLnBsYXRmb3Jt
ICE9ICJ3aW4zMiIpLAogICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0ID0gcG9wZW4ud2Fp
dCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0ZGluLCBieXRlcyk6CisgICAgICAgICAg
ICAgICAgcG9wZW4uc3RkaW4uY2xvc2UoKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3RpbWVv
dXQoKSAtPiBOb25lOgorICAgICAgICAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQor
CisgICAgICAgICAgICAgICAgdGltZW91dF9tZXNzYWdlID0gKAorICAgICAgICAgICAgICAgICAg
ICAie3NlY29uZHN9IHNlY29uZCB0aW1lb3V0IGV4cGlyZWQgcnVubmluZzoiCisgICAgICAgICAg
ICAgICAgICAgICIge2NvbW1hbmR9Ii5mb3JtYXQoc2Vjb25kcz10aW1lb3V0LCBjb21tYW5kPWNt
ZGFyZ3MpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgcG9wZW4ua2lsbCgp
CisgICAgICAgICAgICAgICAgcG9wZW4ud2FpdCgpCisgICAgICAgICAgICAgICAgcmFpc2Ugc2Vs
Zi5UaW1lb3V0RXhwaXJlZCh0aW1lb3V0X21lc3NhZ2UpCisKKyAgICAgICAgICAgIGlmIHRpbWVv
dXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXQgPSBwb3Blbi53YWl0KCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXQg
PSBwb3Blbi53YWl0KHRpbWVvdXQpCisgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3Mu
VGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV90aW1lb3V0KCkKICAg
ICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYxLmNsb3NlKCkKICAgICAgICAgICAgIGYyLmNs
b3NlKCkKLSAgICAgICAgZjEgPSBjb2RlY3Mub3BlbihzdHIocDEpLCAiciIsIGVuY29kaW5nPSJ1
dGY4IikKLSAgICAgICAgZjIgPSBjb2RlY3Mub3BlbihzdHIocDIpLCAiciIsIGVuY29kaW5nPSJ1
dGY4IikKKyAgICAgICAgZjEgPSBvcGVuKHN0cihwMSksIGVuY29kaW5nPSJ1dGY4IikKKyAgICAg
ICAgZjIgPSBvcGVuKHN0cihwMiksIGVuY29kaW5nPSJ1dGY4IikKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgb3V0ID0gZjEucmVhZCgpLnNwbGl0bGluZXMoKQogICAgICAgICAgICAgZXJyID0g
ZjIucmVhZCgpLnNwbGl0bGluZXMoKQpAQCAtMTAyNSwxMTUgKzEzMTgsMTE0IEBAIGNsYXNzIFRl
c3RkaXIob2JqZWN0KToKICAgICAgICAgICAgIGYyLmNsb3NlKCkKICAgICAgICAgc2VsZi5fZHVt
cF9saW5lcyhvdXQsIHN5cy5zdGRvdXQpCiAgICAgICAgIHNlbGYuX2R1bXBfbGluZXMoZXJyLCBz
eXMuc3RkZXJyKQotICAgICAgICByZXR1cm4gUnVuUmVzdWx0KHJldCwgb3V0LCBlcnIsIHRpbWUu
dGltZSgpIC0gbm93KQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXQgPSBFeGl0Q29kZShy
ZXQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAg
ICByZXR1cm4gUnVuUmVzdWx0KHJldCwgb3V0LCBlcnIsIHRpbWluZy50aW1lKCkgLSBub3cpCiAK
ICAgICBkZWYgX2R1bXBfbGluZXMoc2VsZiwgbGluZXMsIGZwKToKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgICAgICAgcHJpbnQobGluZSwg
ZmlsZT1mcCkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKLSAgICAgICAgICAg
IHByaW50KCJjb3VsZG4ndCBwcmludCB0byAlcyBiZWNhdXNlIG9mIGVuY29kaW5nIiAlIChmcCwp
KQorICAgICAgICAgICAgcHJpbnQoImNvdWxkbid0IHByaW50IHRvIHt9IGJlY2F1c2Ugb2YgZW5j
b2RpbmciLmZvcm1hdChmcCkpCiAKLSAgICBkZWYgX2dldHB5dGVzdGFyZ3Moc2VsZik6Ci0gICAg
ICAgICMgd2UgY2Fubm90IHVzZSBgKHN5cy5leGVjdXRhYmxlLCBzY3JpcHQpYCBiZWNhdXNlIG9u
IFdpbmRvd3MgdGhlCi0gICAgICAgICMgc2NyaXB0IGlzIGUuZy4gYHB5dGVzdC5leGVgCi0gICAg
ICAgIHJldHVybiAoc3lzLmV4ZWN1dGFibGUsIFBZVEVTVF9GVUxMUEFUSCkgICMgbm9xYQorICAg
IGRlZiBfZ2V0cHl0ZXN0YXJncyhzZWxmKSAtPiBUdXBsZVtzdHIsIC4uLl06CisgICAgICAgIHJl
dHVybiBzeXMuZXhlY3V0YWJsZSwgIi1tcHl0ZXN0IgogCi0gICAgZGVmIHJ1bnB5dGhvbihzZWxm
LCBzY3JpcHQpOgorICAgIGRlZiBydW5weXRob24oc2VsZiwgc2NyaXB0KSAtPiBSdW5SZXN1bHQ6
CiAgICAgICAgICIiIlJ1biBhIHB5dGhvbiBzY3JpcHQgdXNpbmcgc3lzLmV4ZWN1dGFibGUgYXMg
aW50ZXJwcmV0ZXIuCiAKLSAgICAgICAgUmV0dXJucyBhIDpweTpjbGFzczpgUnVuUmVzdWx0YC4K
LQorICAgICAgICA6cnR5cGU6IFJ1blJlc3VsdAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuKHN5cy5leGVjdXRhYmxlLCBzY3JpcHQpCiAKICAgICBkZWYgcnVucHl0aG9uX2Mo
c2VsZiwgY29tbWFuZCk6Ci0gICAgICAgICIiIlJ1biBweXRob24gLWMgImNvbW1hbmQiLCByZXR1
cm4gYSA6cHk6Y2xhc3M6YFJ1blJlc3VsdGAuIiIiCisgICAgICAgICIiIlJ1biBweXRob24gLWMg
ImNvbW1hbmQiLgorCisgICAgICAgIDpydHlwZTogUnVuUmVzdWx0CisgICAgICAgICIiIgogICAg
ICAgICByZXR1cm4gc2VsZi5ydW4oc3lzLmV4ZWN1dGFibGUsICItYyIsIGNvbW1hbmQpCiAKLSAg
ICBkZWYgcnVucHl0ZXN0X3N1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBk
ZWYgcnVucHl0ZXN0X3N1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsIHRpbWVvdXQ6IE9wdGlvbmFsW2Zs
b2F0XSA9IE5vbmUpIC0+IFJ1blJlc3VsdDoKICAgICAgICAgIiIiUnVuIHB5dGVzdCBhcyBhIHN1
YnByb2Nlc3Mgd2l0aCBnaXZlbiBhcmd1bWVudHMuCiAKLSAgICAgICAgQW55IHBsdWdpbnMgYWRk
ZWQgdG8gdGhlIDpweTphdHRyOmBwbHVnaW5zYCBsaXN0IHdpbGwgYWRkZWQgdXNpbmcgdGhlCi0g
ICAgICAgIGBgLXBgYCBjb21tYW5kIGxpbmUgb3B0aW9uLiAgQWRkaXRpb25hbGx5IGBgLS1iYXNl
dGVtcGBgIGlzIHVzZWQgcHV0CisgICAgICAgIEFueSBwbHVnaW5zIGFkZGVkIHRvIHRoZSA6cHk6
YXR0cjpgcGx1Z2luc2AgbGlzdCB3aWxsIGJlIGFkZGVkIHVzaW5nIHRoZQorICAgICAgICBgYC1w
YGAgY29tbWFuZCBsaW5lIG9wdGlvbi4gIEFkZGl0aW9uYWxseSBgYC0tYmFzZXRlbXBgYCBpcyB1
c2VkIHRvIHB1dAogICAgICAgICBhbnkgdGVtcG9yYXJ5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyBp
biBhIG51bWJlcmVkIGRpcmVjdG9yeSBwcmVmaXhlZAotICAgICAgICB3aXRoICJydW5weXRlc3Qt
IiBzbyB0aGV5IGRvIG5vdCBjb25mbGljdCB3aXRoIHRoZSBub3JtYWwgbnVtYmVyZWQKLSAgICAg
ICAgcHl0ZXN0IGxvY2F0aW9uIGZvciB0ZW1wb3JhcnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgor
ICAgICAgICB3aXRoICJydW5weXRlc3QtIiB0byBub3QgY29uZmxpY3Qgd2l0aCB0aGUgbm9ybWFs
IG51bWJlcmVkIHB5dGVzdAorICAgICAgICBsb2NhdGlvbiBmb3IgdGVtcG9yYXJ5IGZpbGVzIGFu
ZCBkaXJlY3Rvcmllcy4KIAotICAgICAgICBSZXR1cm5zIGEgOnB5OmNsYXNzOmBSdW5SZXN1bHRg
LgorICAgICAgICA6cGFyYW0gYXJnczoKKyAgICAgICAgICAgIFRoZSBzZXF1ZW5jZSBvZiBhcmd1
bWVudHMgdG8gcGFzcyB0byB0aGUgcHl0ZXN0IHN1YnByb2Nlc3MuCisgICAgICAgIDpwYXJhbSB0
aW1lb3V0OgorICAgICAgICAgICAgVGhlIHBlcmlvZCBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRv
IHRpbWVvdXQgYW5kIHJhaXNlCisgICAgICAgICAgICA6cHk6Y2xhc3M6YFRlc3RkaXIuVGltZW91
dEV4cGlyZWRgLgogCisgICAgICAgIDpydHlwZTogUnVuUmVzdWx0CiAgICAgICAgICIiIgotICAg
ICAgICBwID0gcHkucGF0aC5sb2NhbC5tYWtlX251bWJlcmVkX2RpcigKLSAgICAgICAgICAgIHBy
ZWZpeD0icnVucHl0ZXN0LSIsIGtlZXA9Tm9uZSwgcm9vdGRpcj1zZWxmLnRtcGRpcgotICAgICAg
ICApCisgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQorICAgICAgICBwID0gbWFrZV9u
dW1iZXJlZF9kaXIocm9vdD1QYXRoKHN0cihzZWxmLnRtcGRpcikpLCBwcmVmaXg9InJ1bnB5dGVz
dC0iKQogICAgICAgICBhcmdzID0gKCItLWJhc2V0ZW1wPSVzIiAlIHAsKSArIGFyZ3MKICAgICAg
ICAgcGx1Z2lucyA9IFt4IGZvciB4IGluIHNlbGYucGx1Z2lucyBpZiBpc2luc3RhbmNlKHgsIHN0
cildCiAgICAgICAgIGlmIHBsdWdpbnM6CiAgICAgICAgICAgICBhcmdzID0gKCItcCIsIHBsdWdp
bnNbMF0pICsgYXJncwogICAgICAgICBhcmdzID0gc2VsZi5fZ2V0cHl0ZXN0YXJncygpICsgYXJn
cwotICAgICAgICByZXR1cm4gc2VsZi5ydW4oKmFyZ3MpCisgICAgICAgIHJldHVybiBzZWxmLnJ1
bigqYXJncywgdGltZW91dD10aW1lb3V0KQogCi0gICAgZGVmIHNwYXduX3B5dGVzdChzZWxmLCBz
dHJpbmcsIGV4cGVjdF90aW1lb3V0PTEwLjApOgorICAgIGRlZiBzcGF3bl9weXRlc3QoCisgICAg
ICAgIHNlbGYsIHN0cmluZzogc3RyLCBleHBlY3RfdGltZW91dDogZmxvYXQgPSAxMC4wCisgICAg
KSAtPiAicGV4cGVjdC5zcGF3biI6CiAgICAgICAgICIiIlJ1biBweXRlc3QgdXNpbmcgcGV4cGVj
dC4KIAogICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdG8gdXNlIHRoZSByaWdodCBweXRlc3QgYW5k
IHNldHMgdXAgdGhlIHRlbXBvcmFyeQogICAgICAgICBkaXJlY3RvcnkgbG9jYXRpb25zLgogCiAg
ICAgICAgIFRoZSBwZXhwZWN0IGNoaWxkIGlzIHJldHVybmVkLgotCiAgICAgICAgICIiIgogICAg
ICAgICBiYXNldGVtcCA9IHNlbGYudG1wZGlyLm1rZGlyKCJ0ZW1wLXBleHBlY3QiKQogICAgICAg
ICBpbnZva2UgPSAiICIuam9pbihtYXAoc3RyLCBzZWxmLl9nZXRweXRlc3RhcmdzKCkpKQotICAg
ICAgICBjbWQgPSAiJXMgLS1iYXNldGVtcD0lcyAlcyIgJSAoaW52b2tlLCBiYXNldGVtcCwgc3Ry
aW5nKQorICAgICAgICBjbWQgPSAie30gLS1iYXNldGVtcD17fSB7fSIuZm9ybWF0KGludm9rZSwg
YmFzZXRlbXAsIHN0cmluZykKICAgICAgICAgcmV0dXJuIHNlbGYuc3Bhd24oY21kLCBleHBlY3Rf
dGltZW91dD1leHBlY3RfdGltZW91dCkKIAotICAgIGRlZiBzcGF3bihzZWxmLCBjbWQsIGV4cGVj
dF90aW1lb3V0PTEwLjApOgorICAgIGRlZiBzcGF3bihzZWxmLCBjbWQ6IHN0ciwgZXhwZWN0X3Rp
bWVvdXQ6IGZsb2F0ID0gMTAuMCkgLT4gInBleHBlY3Quc3Bhd24iOgogICAgICAgICAiIiJSdW4g
YSBjb21tYW5kIHVzaW5nIHBleHBlY3QuCiAKICAgICAgICAgVGhlIHBleHBlY3QgY2hpbGQgaXMg
cmV0dXJuZWQuCi0KICAgICAgICAgIiIiCiAgICAgICAgIHBleHBlY3QgPSBweXRlc3QuaW1wb3J0
b3Jza2lwKCJwZXhwZWN0IiwgIjMuMCIpCiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAicHlweV92
ZXJzaW9uX2luZm8iKSBhbmQgIjY0IiBpbiBwbGF0Zm9ybS5tYWNoaW5lKCk6CiAgICAgICAgICAg
ICBweXRlc3Quc2tpcCgicHlweS02NCBiaXQgbm90IHN1cHBvcnRlZCIpCi0gICAgICAgIGlmIHN5
cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJmcmVlYnNkIik6Ci0gICAgICAgICAgICBweXRlc3QueGZh
aWwoInBleHBlY3QgZG9lcyBub3Qgd29yayByZWxpYWJseSBvbiBmcmVlYnNkIikKKyAgICAgICAg
aWYgbm90IGhhc2F0dHIocGV4cGVjdCwgInNwYXduIik6CisgICAgICAgICAgICBweXRlc3Quc2tp
cCgicGV4cGVjdC5zcGF3biBub3QgYXZhaWxhYmxlIikKICAgICAgICAgbG9nZmlsZSA9IHNlbGYu
dG1wZGlyLmpvaW4oInNwYXduLm91dCIpLm9wZW4oIndiIikKKwogICAgICAgICBjaGlsZCA9IHBl
eHBlY3Quc3Bhd24oY21kLCBsb2dmaWxlPWxvZ2ZpbGUpCiAgICAgICAgIHNlbGYucmVxdWVzdC5h
ZGRmaW5hbGl6ZXIobG9nZmlsZS5jbG9zZSkKICAgICAgICAgY2hpbGQudGltZW91dCA9IGV4cGVj
dF90aW1lb3V0CiAgICAgICAgIHJldHVybiBjaGlsZAogCiAKLWRlZiBnZXRkZWNvZGVkKG91dCk6
Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gb3V0LmRlY29kZSgidXRmLTgiKQotICAgIGV4Y2Vw
dCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgIHJldHVybiAiSU5URVJOQUwgbm90LXV0Zjgt
ZGVjb2RlYWJsZSwgdHJ1bmNhdGVkIHN0cmluZzpcbiVzIiAlICgKLSAgICAgICAgICAgIHB5Lmlv
LnNhZmVyZXByKG91dCksCi0gICAgICAgICkKLQotCi1jbGFzcyBMaW5lQ29tcChvYmplY3QpOgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0cmluZ2lvID0gcHkuaW8u
VGV4dElPKCkKLQotICAgIGRlZiBhc3NlcnRfY29udGFpbnNfbGluZXMoc2VsZiwgbGluZXMyKToK
LSAgICAgICAgIiIiQXNzZXJ0IHRoYXQgbGluZXMyIGFyZSBjb250YWluZWQgKGxpbmVhcmx5KSBp
biBsaW5lczEuCitjbGFzcyBMaW5lQ29tcDoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5zdHJpbmdpbyA9IFN0cmluZ0lPKCkKKyAgICAgICAgIiIiOmNsYXNz
OmBweXRob246aW8uU3RyaW5nSU8oKWAgaW5zdGFuY2UgdXNlZCBmb3IgaW5wdXQuIiIiCiAKLSAg
ICAgICAgUmV0dXJuIGEgbGlzdCBvZiBleHRyYWxpbmVzIGZvdW5kLgorICAgIGRlZiBhc3NlcnRf
Y29udGFpbnNfbGluZXMoc2VsZiwgbGluZXMyOiBTZXF1ZW5jZVtzdHJdKSAtPiBOb25lOgorICAg
ICAgICAiIiJBc3NlcnQgdGhhdCBgYGxpbmVzMmBgIGFyZSBjb250YWluZWQgKGxpbmVhcmx5KSBp
biA6YXR0cjpgc3RyaW5naW9gJ3MgdmFsdWUuCiAKKyAgICAgICAgTGluZXMgYXJlIG1hdGNoZWQg
dXNpbmcgOmZ1bmM6YExpbmVNYXRjaGVyLmZubWF0Y2hfbGluZXNgLgogICAgICAgICAiIiIKICAg
ICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAgICAgIHZhbCA9IHNlbGYuc3RyaW5n
aW8uZ2V0dmFsdWUoKQogICAgICAgICBzZWxmLnN0cmluZ2lvLnRydW5jYXRlKDApCiAgICAgICAg
IHNlbGYuc3RyaW5naW8uc2VlaygwKQogICAgICAgICBsaW5lczEgPSB2YWwuc3BsaXQoIlxuIikK
LSAgICAgICAgcmV0dXJuIExpbmVNYXRjaGVyKGxpbmVzMSkuZm5tYXRjaF9saW5lcyhsaW5lczIp
CisgICAgICAgIExpbmVNYXRjaGVyKGxpbmVzMSkuZm5tYXRjaF9saW5lcyhsaW5lczIpCiAKIAot
Y2xhc3MgTGluZU1hdGNoZXIob2JqZWN0KToKK2NsYXNzIExpbmVNYXRjaGVyOgogICAgICIiIkZs
ZXhpYmxlIG1hdGNoaW5nIG9mIHRleHQuCiAKICAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgY2xh
c3MgdG8gdGVzdCBsYXJnZSB0ZXh0cyBsaWtlIHRoZSBvdXRwdXQgb2YKQEAgLTExNDEsNDkgKzE0
MzMsMzMgQEAgY2xhc3MgTGluZU1hdGNoZXIob2JqZWN0KToKIAogICAgIFRoZSBjb25zdHJ1Y3Rv
ciB0YWtlcyBhIGxpc3Qgb2YgbGluZXMgd2l0aG91dCB0aGVpciB0cmFpbGluZyBuZXdsaW5lcywg
aS5lLgogICAgIGBgdGV4dC5zcGxpdGxpbmVzKClgYC4KLQogICAgICIiIgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxpbmVzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZXM6IExpc3Rb
c3RyXSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCi0gICAgICAgIHNlbGYu
X2xvZ19vdXRwdXQgPSBbXQotCi0gICAgZGVmIHN0cihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJu
IHRoZSBlbnRpcmUgb3JpZ2luYWwgdGV4dC4iIiIKLSAgICAgICAgcmV0dXJuICJcbiIuam9pbihz
ZWxmLmxpbmVzKQorICAgICAgICBzZWxmLl9sb2dfb3V0cHV0ID0gW10gICMgdHlwZTogTGlzdFtz
dHJdCiAKLSAgICBkZWYgX2dldGxpbmVzKHNlbGYsIGxpbmVzMik6CisgICAgZGVmIF9nZXRsaW5l
cyhzZWxmLCBsaW5lczI6IFVuaW9uW3N0ciwgU2VxdWVuY2Vbc3RyXSwgU291cmNlXSkgLT4gU2Vx
dWVuY2Vbc3RyXToKICAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lczIsIHN0cik6CiAgICAgICAg
ICAgICBsaW5lczIgPSBTb3VyY2UobGluZXMyKQogICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmVz
MiwgU291cmNlKToKICAgICAgICAgICAgIGxpbmVzMiA9IGxpbmVzMi5zdHJpcCgpLmxpbmVzCiAg
ICAgICAgIHJldHVybiBsaW5lczIKIAotICAgIGRlZiBmbm1hdGNoX2xpbmVzX3JhbmRvbShzZWxm
LCBsaW5lczIpOgotICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlzdCBpbiB0aGUgb3V0cHV0IHVz
aW5nIGluIGFueSBvcmRlci4KLQotICAgICAgICBMaW5lcyBhcmUgY2hlY2tlZCB1c2luZyBgYGZu
bWF0Y2guZm5tYXRjaGBgLiBUaGUgYXJndW1lbnQgaXMgYSBsaXN0IG9mCi0gICAgICAgIGxpbmVz
IHdoaWNoIGhhdmUgdG8gb2NjdXIgaW4gdGhlIG91dHB1dCwgaW4gYW55IG9yZGVyLgotCi0gICAg
ICAgICIiIgorICAgIGRlZiBmbm1hdGNoX2xpbmVzX3JhbmRvbShzZWxmLCBsaW5lczI6IFNlcXVl
bmNlW3N0cl0pIC0+IE5vbmU6CisgICAgICAgICIiIkNoZWNrIGxpbmVzIGV4aXN0IGluIHRoZSBv
dXRwdXQgaW4gYW55IG9yZGVyICh1c2luZyA6ZnVuYzpgcHl0aG9uOmZubWF0Y2guZm5tYXRjaGAp
LiIiIgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKICAgICAgICAgc2VsZi5fbWF0
Y2hfbGluZXNfcmFuZG9tKGxpbmVzMiwgZm5tYXRjaCkKIAotICAgIGRlZiByZV9tYXRjaF9saW5l
c19yYW5kb20oc2VsZiwgbGluZXMyKToKLSAgICAgICAgIiIiQ2hlY2sgbGluZXMgZXhpc3QgaW4g
dGhlIG91dHB1dCB1c2luZyBgYHJlLm1hdGNoYGAsIGluIGFueSBvcmRlci4KLQotICAgICAgICBU
aGUgYXJndW1lbnQgaXMgYSBsaXN0IG9mIGxpbmVzIHdoaWNoIGhhdmUgdG8gb2NjdXIgaW4gdGhl
IG91dHB1dCwgaW4KLSAgICAgICAgYW55IG9yZGVyLgotCi0gICAgICAgICIiIgotICAgICAgICBz
ZWxmLl9tYXRjaF9saW5lc19yYW5kb20obGluZXMyLCBsYW1iZGEgbmFtZSwgcGF0OiByZS5tYXRj
aChwYXQsIG5hbWUpKQotCi0gICAgZGVmIF9tYXRjaF9saW5lc19yYW5kb20oc2VsZiwgbGluZXMy
LCBtYXRjaF9mdW5jKToKLSAgICAgICAgIiIiQ2hlY2sgbGluZXMgZXhpc3QgaW4gdGhlIG91dHB1
dC4KLQotICAgICAgICBUaGUgYXJndW1lbnQgaXMgYSBsaXN0IG9mIGxpbmVzIHdoaWNoIGhhdmUg
dG8gb2NjdXIgaW4gdGhlIG91dHB1dCwgaW4KLSAgICAgICAgYW55IG9yZGVyLiAgRWFjaCBsaW5l
IGNhbiBjb250YWluIGdsb2Igd2hpbGRjYXJkcy4KKyAgICBkZWYgcmVfbWF0Y2hfbGluZXNfcmFu
ZG9tKHNlbGYsIGxpbmVzMjogU2VxdWVuY2Vbc3RyXSkgLT4gTm9uZToKKyAgICAgICAgIiIiQ2hl
Y2sgbGluZXMgZXhpc3QgaW4gdGhlIG91dHB1dCBpbiBhbnkgb3JkZXIgKHVzaW5nIDpmdW5jOmBw
eXRob246cmUubWF0Y2hgKS4iIiIKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisg
ICAgICAgIHNlbGYuX21hdGNoX2xpbmVzX3JhbmRvbShsaW5lczIsIGxhbWJkYSBuYW1lLCBwYXQ6
IGJvb2wocmUubWF0Y2gocGF0LCBuYW1lKSkpCiAKLSAgICAgICAgIiIiCisgICAgZGVmIF9tYXRj
aF9saW5lc19yYW5kb20oCisgICAgICAgIHNlbGYsIGxpbmVzMjogU2VxdWVuY2Vbc3RyXSwgbWF0
Y2hfZnVuYzogQ2FsbGFibGVbW3N0ciwgc3RyXSwgYm9vbF0KKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogICAgICAgICBsaW5lczIgPSBzZWxmLl9nZXRs
aW5lcyhsaW5lczIpCiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzMjoKICAgICAgICAgICAgIGZv
ciB4IGluIHNlbGYubGluZXM6CkBAIC0xMTkxLDgyICsxNDY3LDE3OCBAQCBjbGFzcyBMaW5lTWF0
Y2hlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2coIm1hdGNoZWQ6ICIs
IHJlcHIobGluZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZygibGluZSAlciBub3QgZm91bmQgaW4gb3V0cHV0
IiAlIGxpbmUpCi0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzZWxmLl9sb2dfdGV4
dCkKKyAgICAgICAgICAgICAgICBtc2cgPSAibGluZSAlciBub3QgZm91bmQgaW4gb3V0cHV0IiAl
IGxpbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2cobXNnKQorICAgICAgICAgICAgICAgIHNl
bGYuX2ZhaWwobXNnKQogCi0gICAgZGVmIGdldF9saW5lc19hZnRlcihzZWxmLCBmbmxpbmUpOgor
ICAgIGRlZiBnZXRfbGluZXNfYWZ0ZXIoc2VsZiwgZm5saW5lOiBzdHIpIC0+IFNlcXVlbmNlW3N0
cl06CiAgICAgICAgICIiIlJldHVybiBhbGwgbGluZXMgZm9sbG93aW5nIHRoZSBnaXZlbiBsaW5l
IGluIHRoZSB0ZXh0LgogCiAgICAgICAgIFRoZSBnaXZlbiBsaW5lIGNhbiBjb250YWluIGdsb2Ig
d2lsZGNhcmRzLgotCiAgICAgICAgICIiIgogICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJh
dGUoc2VsZi5saW5lcyk6CiAgICAgICAgICAgICBpZiBmbmxpbmUgPT0gbGluZSBvciBmbm1hdGNo
KGxpbmUsIGZubGluZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubGluZXNbaSArIDE6
XQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxpbmVzW2kgKyAxIDpdCiAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoImxpbmUgJXIgbm90IGZvdW5kIGluIG91dHB1dCIgJSBmbmxpbmUpCiAK
LSAgICBkZWYgX2xvZyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHNlbGYuX2xvZ19vdXRwdXQuYXBw
ZW5kKCIgIi5qb2luKChzdHIoeCkgZm9yIHggaW4gYXJncykpKQorICAgIGRlZiBfbG9nKHNlbGYs
ICphcmdzKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dfb3V0cHV0LmFwcGVuZCgiICIuam9p
bihzdHIoeCkgZm9yIHggaW4gYXJncykpCiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgX2xvZ190
ZXh0KHNlbGYpOgorICAgIGRlZiBfbG9nX3RleHQoc2VsZikgLT4gc3RyOgogICAgICAgICByZXR1
cm4gIlxuIi5qb2luKHNlbGYuX2xvZ19vdXRwdXQpCiAKLSAgICBkZWYgZm5tYXRjaF9saW5lcyhz
ZWxmLCBsaW5lczIpOgotICAgICAgICAiIiJTZWFyY2ggY2FwdHVyZWQgdGV4dCBmb3IgbWF0Y2hp
bmcgbGluZXMgdXNpbmcgYGBmbm1hdGNoLmZubWF0Y2hgYC4KKyAgICBkZWYgZm5tYXRjaF9saW5l
cygKKyAgICAgICAgc2VsZiwgbGluZXMyOiBTZXF1ZW5jZVtzdHJdLCAqLCBjb25zZWN1dGl2ZTog
Ym9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlz
dCBpbiB0aGUgb3V0cHV0ICh1c2luZyA6ZnVuYzpgcHl0aG9uOmZubWF0Y2guZm5tYXRjaGApLgog
CiAgICAgICAgIFRoZSBhcmd1bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBt
YXRjaCBhbmQgY2FuIHVzZSBnbG9iCiAgICAgICAgIHdpbGRjYXJkcy4gIElmIHRoZXkgZG8gbm90
IG1hdGNoIGEgcHl0ZXN0LmZhaWwoKSBpcyBjYWxsZWQuICBUaGUKLSAgICAgICAgbWF0Y2hlcyBh
bmQgbm9uLW1hdGNoZXMgYXJlIGFsc28gcHJpbnRlZCBvbiBzdGRvdXQuCisgICAgICAgIG1hdGNo
ZXMgYW5kIG5vbi1tYXRjaGVzIGFyZSBhbHNvIHNob3duIGFzIHBhcnQgb2YgdGhlIGVycm9yIG1l
c3NhZ2UuCiAKKyAgICAgICAgOnBhcmFtIGxpbmVzMjogU3RyaW5nIHBhdHRlcm5zIHRvIG1hdGNo
LgorICAgICAgICA6cGFyYW0gY29uc2VjdXRpdmU6IE1hdGNoIGxpbmVzIGNvbnNlY3V0aXZlbHk/
CiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9tYXRjaF9saW5lcyhsaW5lczIsIGZubWF0Y2gs
ICJmbm1hdGNoIikKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIHNl
bGYuX21hdGNoX2xpbmVzKGxpbmVzMiwgZm5tYXRjaCwgImZubWF0Y2giLCBjb25zZWN1dGl2ZT1j
b25zZWN1dGl2ZSkKIAotICAgIGRlZiByZV9tYXRjaF9saW5lcyhzZWxmLCBsaW5lczIpOgotICAg
ICAgICAiIiJTZWFyY2ggY2FwdHVyZWQgdGV4dCBmb3IgbWF0Y2hpbmcgbGluZXMgdXNpbmcgYGBy
ZS5tYXRjaGBgLgorICAgIGRlZiByZV9tYXRjaF9saW5lcygKKyAgICAgICAgc2VsZiwgbGluZXMy
OiBTZXF1ZW5jZVtzdHJdLCAqLCBjb25zZWN1dGl2ZTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlzdCBpbiB0aGUgb3V0cHV0ICh1c2luZyA6
ZnVuYzpgcHl0aG9uOnJlLm1hdGNoYCkuCiAKICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgbGlz
dCBvZiBsaW5lcyB3aGljaCBoYXZlIHRvIG1hdGNoIHVzaW5nIGBgcmUubWF0Y2hgYC4KICAgICAg
ICAgSWYgdGhleSBkbyBub3QgbWF0Y2ggYSBweXRlc3QuZmFpbCgpIGlzIGNhbGxlZC4KIAotICAg
ICAgICBUaGUgbWF0Y2hlcyBhbmQgbm9uLW1hdGNoZXMgYXJlIGFsc28gcHJpbnRlZCBvbiBzdGRv
dXQuCisgICAgICAgIFRoZSBtYXRjaGVzIGFuZCBub24tbWF0Y2hlcyBhcmUgYWxzbyBzaG93biBh
cyBwYXJ0IG9mIHRoZSBlcnJvciBtZXNzYWdlLgogCisgICAgICAgIDpwYXJhbSBsaW5lczI6IHN0
cmluZyBwYXR0ZXJucyB0byBtYXRjaC4KKyAgICAgICAgOnBhcmFtIGNvbnNlY3V0aXZlOiBtYXRj
aCBsaW5lcyBjb25zZWN1dGl2ZWx5PwogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWF0Y2hf
bGluZXMobGluZXMyLCBsYW1iZGEgbmFtZSwgcGF0OiByZS5tYXRjaChwYXQsIG5hbWUpLCAicmUu
bWF0Y2giKQorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICAgICAgc2VsZi5f
bWF0Y2hfbGluZXMoCisgICAgICAgICAgICBsaW5lczIsCisgICAgICAgICAgICBsYW1iZGEgbmFt
ZSwgcGF0OiBib29sKHJlLm1hdGNoKHBhdCwgbmFtZSkpLAorICAgICAgICAgICAgInJlLm1hdGNo
IiwKKyAgICAgICAgICAgIGNvbnNlY3V0aXZlPWNvbnNlY3V0aXZlLAorICAgICAgICApCiAKLSAg
ICBkZWYgX21hdGNoX2xpbmVzKHNlbGYsIGxpbmVzMiwgbWF0Y2hfZnVuYywgbWF0Y2hfbmlja25h
bWUpOgorICAgIGRlZiBfbWF0Y2hfbGluZXMoCisgICAgICAgIHNlbGYsCisgICAgICAgIGxpbmVz
MjogU2VxdWVuY2Vbc3RyXSwKKyAgICAgICAgbWF0Y2hfZnVuYzogQ2FsbGFibGVbW3N0ciwgc3Ry
XSwgYm9vbF0sCisgICAgICAgIG1hdGNoX25pY2tuYW1lOiBzdHIsCisgICAgICAgICosCisgICAg
ICAgIGNvbnNlY3V0aXZlOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CiAgICAgICAgICIi
IlVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2YgYGBmbm1hdGNoX2xpbmVzYGAgYW5kIGBgcmVf
bWF0Y2hfbGluZXNgYC4KIAotICAgICAgICA6cGFyYW0gbGlzdFtzdHJdIGxpbmVzMjogbGlzdCBv
ZiBzdHJpbmcgcGF0dGVybnMgdG8gbWF0Y2guIFRoZSBhY3R1YWwKLSAgICAgICAgICAgIGZvcm1h
dCBkZXBlbmRzIG9uIGBgbWF0Y2hfZnVuY2BgCi0gICAgICAgIDpwYXJhbSBtYXRjaF9mdW5jOiBh
IGNhbGxhYmxlIGBgbWF0Y2hfZnVuYyhsaW5lLCBwYXR0ZXJuKWBgIHdoZXJlIGxpbmUKLSAgICAg
ICAgICAgIGlzIHRoZSBjYXB0dXJlZCBsaW5lIGZyb20gc3Rkb3V0L3N0ZGVyciBhbmQgcGF0dGVy
biBpcyB0aGUgbWF0Y2hpbmcKLSAgICAgICAgICAgIHBhdHRlcm4KLSAgICAgICAgOnBhcmFtIHN0
ciBtYXRjaF9uaWNrbmFtZTogdGhlIG5pY2tuYW1lIGZvciB0aGUgbWF0Y2ggZnVuY3Rpb24gdGhh
dAotICAgICAgICAgICAgd2lsbCBiZSBsb2dnZWQgdG8gc3Rkb3V0IHdoZW4gYSBtYXRjaCBvY2N1
cnMKLQorICAgICAgICA6cGFyYW0gU2VxdWVuY2Vbc3RyXSBsaW5lczI6CisgICAgICAgICAgICBM
aXN0IG9mIHN0cmluZyBwYXR0ZXJucyB0byBtYXRjaC4gVGhlIGFjdHVhbCBmb3JtYXQgZGVwZW5k
cyBvbgorICAgICAgICAgICAgYGBtYXRjaF9mdW5jYGAuCisgICAgICAgIDpwYXJhbSBtYXRjaF9m
dW5jOgorICAgICAgICAgICAgQSBjYWxsYWJsZSBgYG1hdGNoX2Z1bmMobGluZSwgcGF0dGVybilg
YCB3aGVyZSBsaW5lIGlzIHRoZQorICAgICAgICAgICAgY2FwdHVyZWQgbGluZSBmcm9tIHN0ZG91
dC9zdGRlcnIgYW5kIHBhdHRlcm4gaXMgdGhlIG1hdGNoaW5nCisgICAgICAgICAgICBwYXR0ZXJu
LgorICAgICAgICA6cGFyYW0gc3RyIG1hdGNoX25pY2tuYW1lOgorICAgICAgICAgICAgVGhlIG5p
Y2tuYW1lIGZvciB0aGUgbWF0Y2ggZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGxvZ2dlZCB0byBzdGRv
dXQKKyAgICAgICAgICAgIHdoZW4gYSBtYXRjaCBvY2N1cnMuCisgICAgICAgIDpwYXJhbSBjb25z
ZWN1dGl2ZToKKyAgICAgICAgICAgIE1hdGNoIGxpbmVzIGNvbnNlY3V0aXZlbHk/CiAgICAgICAg
ICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsaW5lczIsIGNvbGxlY3Rpb25zLmFiYy5T
ZXF1ZW5jZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgdHlwZSBmb3Ig
bGluZXMyOiB7fSIuZm9ybWF0KHR5cGUobGluZXMyKS5fX25hbWVfXykpCiAgICAgICAgIGxpbmVz
MiA9IHNlbGYuX2dldGxpbmVzKGxpbmVzMikKICAgICAgICAgbGluZXMxID0gc2VsZi5saW5lc1s6
XQogICAgICAgICBuZXh0bGluZSA9IE5vbmUKICAgICAgICAgZXh0cmFsaW5lcyA9IFtdCiAgICAg
ICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQorICAgICAgICB3bmljayA9IGxlbihtYXRjaF9u
aWNrbmFtZSkgKyAxCisgICAgICAgIHN0YXJ0ZWQgPSBGYWxzZQogICAgICAgICBmb3IgbGluZSBp
biBsaW5lczI6CiAgICAgICAgICAgICBub21hdGNocHJpbnRlZCA9IEZhbHNlCiAgICAgICAgICAg
ICB3aGlsZSBsaW5lczE6CiAgICAgICAgICAgICAgICAgbmV4dGxpbmUgPSBsaW5lczEucG9wKDAp
CiAgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBuZXh0bGluZToKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nKCJleGFjdCBtYXRjaDoiLCByZXByKGxpbmUpKQorICAgICAgICAgICAgICAg
ICAgICBzdGFydGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAg
ICAgICAgIGVsaWYgbWF0Y2hfZnVuYyhuZXh0bGluZSwgbGluZSk6CiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZygiJXM6IiAlIG1hdGNoX25pY2tuYW1lLCByZXByKGxpbmUpKQotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9sb2coIiAgIHdpdGg6IiwgcmVwcihuZXh0bGluZSkpCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZygKKyAgICAgICAgICAgICAgICAgICAgICAgICJ7Oj57
d2lkdGh9fSIuZm9ybWF0KCJ3aXRoOiIsIHdpZHRoPXduaWNrKSwgcmVwcihuZXh0bGluZSkKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQog
ICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGlmIGNvbnNlY3V0aXZlIGFuZCBzdGFydGVkOgorICAgICAgICAgICAgICAg
ICAgICAgICAgbXNnID0gIm5vIGNvbnNlY3V0aXZlIG1hdGNoOiB7IXJ9Ii5mb3JtYXQobGluZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZyhtc2cpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIns6Pnt3aWR0
aH19Ii5mb3JtYXQoIndpdGg6Iiwgd2lkdGg9d25pY2spLCByZXByKG5leHRsaW5lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmFpbCht
c2cpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBub21hdGNocHJpbnRlZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZygibm9tYXRjaDoiLCByZXByKGxpbmUpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ7Oj57d2lkdGh9fSIuZm9ybWF0KCJub21hdGNoOiIsIHdpZHRoPXduaWNrKSwgcmVwcihsaW5l
KQorICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9t
YXRjaHByaW50ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZygiICAgIGFu
ZDoiLCByZXByKG5leHRsaW5lKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nKCJ7Oj57
d2lkdGh9fSIuZm9ybWF0KCJhbmQ6Iiwgd2lkdGg9d25pY2spLCByZXByKG5leHRsaW5lKSkKICAg
ICAgICAgICAgICAgICBleHRyYWxpbmVzLmFwcGVuZChuZXh0bGluZSkKICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nKCJyZW1haW5zIHVubWF0Y2hlZDogJXIiICUg
KGxpbmUsKSkKLSAgICAgICAgICAgICAgICBweXRlc3QuZmFpbChzZWxmLl9sb2dfdGV4dCkKKyAg
ICAgICAgICAgICAgICBtc2cgPSAicmVtYWlucyB1bm1hdGNoZWQ6IHshcn0iLmZvcm1hdChsaW5l
KQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZyhtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5f
ZmFpbChtc2cpCisgICAgICAgIHNlbGYuX2xvZ19vdXRwdXQgPSBbXQorCisgICAgZGVmIG5vX2Zu
bWF0Y2hfbGluZShzZWxmLCBwYXQ6IHN0cikgLT4gTm9uZToKKyAgICAgICAgIiIiRW5zdXJlIGNh
cHR1cmVkIGxpbmVzIGRvIG5vdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybiwgdXNpbmcgYGBmbm1h
dGNoLmZubWF0Y2hgYC4KKworICAgICAgICA6cGFyYW0gc3RyIHBhdDogVGhlIHBhdHRlcm4gdG8g
bWF0Y2ggbGluZXMuCisgICAgICAgICIiIgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKKyAgICAgICAgc2VsZi5fbm9fbWF0Y2hfbGluZShwYXQsIGZubWF0Y2gsICJmbm1hdGNoIikK
KworICAgIGRlZiBub19yZV9tYXRjaF9saW5lKHNlbGYsIHBhdDogc3RyKSAtPiBOb25lOgorICAg
ICAgICAiIiJFbnN1cmUgY2FwdHVyZWQgbGluZXMgZG8gbm90IG1hdGNoIHRoZSBnaXZlbiBwYXR0
ZXJuLCB1c2luZyBgYHJlLm1hdGNoYGAuCisKKyAgICAgICAgOnBhcmFtIHN0ciBwYXQ6IFRoZSBy
ZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggbGluZXMuCisgICAgICAgICIiIgorICAgICAgICBf
X3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICAgICAgc2VsZi5fbm9fbWF0Y2hfbGluZSgKKyAg
ICAgICAgICAgIHBhdCwgbGFtYmRhIG5hbWUsIHBhdDogYm9vbChyZS5tYXRjaChwYXQsIG5hbWUp
KSwgInJlLm1hdGNoIgorICAgICAgICApCisKKyAgICBkZWYgX25vX21hdGNoX2xpbmUoCisgICAg
ICAgIHNlbGYsIHBhdDogc3RyLCBtYXRjaF9mdW5jOiBDYWxsYWJsZVtbc3RyLCBzdHJdLCBib29s
XSwgbWF0Y2hfbmlja25hbWU6IHN0cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiRW5zdXJl
IGNhcHR1cmVkIGxpbmVzIGRvZXMgbm90IGhhdmUgYSB0aGUgZ2l2ZW4gcGF0dGVybiwgdXNpbmcg
YGBmbm1hdGNoLmZubWF0Y2hgYC4KKworICAgICAgICA6cGFyYW0gc3RyIHBhdDogVGhlIHBhdHRl
cm4gdG8gbWF0Y2ggbGluZXMuCisgICAgICAgICIiIgorICAgICAgICBfX3RyYWNlYmFja2hpZGVf
XyA9IFRydWUKKyAgICAgICAgbm9tYXRjaF9wcmludGVkID0gRmFsc2UKKyAgICAgICAgd25pY2sg
PSBsZW4obWF0Y2hfbmlja25hbWUpICsgMQorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVz
OgorICAgICAgICAgICAgaWYgbWF0Y2hfZnVuYyhsaW5lLCBwYXQpOgorICAgICAgICAgICAgICAg
IG1zZyA9ICJ7fTogeyFyfSIuZm9ybWF0KG1hdGNoX25pY2tuYW1lLCBwYXQpCisgICAgICAgICAg
ICAgICAgc2VsZi5fbG9nKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2coIns6Pnt3aWR0
aH19Ii5mb3JtYXQoIndpdGg6Iiwgd2lkdGg9d25pY2spLCByZXByKGxpbmUpKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2ZhaWwobXNnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBpZiBub3Qgbm9tYXRjaF9wcmludGVkOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2co
Ins6Pnt3aWR0aH19Ii5mb3JtYXQoIm5vbWF0Y2g6Iiwgd2lkdGg9d25pY2spLCByZXByKHBhdCkp
CisgICAgICAgICAgICAgICAgICAgIG5vbWF0Y2hfcHJpbnRlZCA9IFRydWUKKyAgICAgICAgICAg
ICAgICBzZWxmLl9sb2coIns6Pnt3aWR0aH19Ii5mb3JtYXQoImFuZDoiLCB3aWR0aD13bmljayks
IHJlcHIobGluZSkpCisgICAgICAgIHNlbGYuX2xvZ19vdXRwdXQgPSBbXQorCisgICAgZGVmIF9m
YWlsKHNlbGYsIG1zZzogc3RyKSAtPiBOb25lOgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9
IFRydWUKKyAgICAgICAgbG9nX3RleHQgPSBzZWxmLl9sb2dfdGV4dAorICAgICAgICBzZWxmLl9s
b2dfb3V0cHV0ID0gW10KKyAgICAgICAgcHl0ZXN0LmZhaWwobG9nX3RleHQpCisKKyAgICBkZWYg
c3RyKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgb3JpZ2luYWwg
dGV4dC4iIiIKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzZWxmLmxpbmVzKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHl0aG9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvcHl0aG9uLnB5CmluZGV4IDQ4NTE2MTk5ZmZmNy4uN2QzZTMwMWMwNzZjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRob24ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvcHl0aG9uLnB5CkBAIC0xLDkzICsxLDg0IEBACi0iIiIgUHl0aG9uIHRlc3Qg
ZGlzY292ZXJ5LCBzZXR1cCBhbmQgcnVuIG9mIHRlc3QgZnVuY3Rpb25zLiAiIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQorIiIiUHl0aG9uIHRlc3QgZGlzY292ZXJ5LCBzZXR1cCBhbmQgcnVuIG9mIHRlc3QgZnVuY3Rp
b25zLiIiIgoraW1wb3J0IGVudW0KIGltcG9ydCBmbm1hdGNoCiBpbXBvcnQgaW5zcGVjdAotaW1w
b3J0IHN5cworaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCi1pbXBvcnQgY29sbGVjdGlvbnMK
K2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHR5cGluZwogaW1wb3J0IHdhcm5pbmdz
Ci1mcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBjb3Vu
dAotCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDb3VudGVyCitmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBkZWZhdWx0ZGljdAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlCitm
cm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJv
bSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0
eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCitmcm9t
IHR5cGluZyBpbXBvcnQgSXRlcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5
cGluZyBpbXBvcnQgTWFwcGluZworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5
cGluZyBpbXBvcnQgU2V0Citmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGlt
cG9ydCBVbmlvbgogCiBpbXBvcnQgcHkKLWltcG9ydCBzaXgKLWZyb20gX3B5dGVzdC5tYXJrIGlt
cG9ydCBNYXJrZXJFcnJvcgotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va2ltcGwKIAog
aW1wb3J0IF9weXRlc3QKLWltcG9ydCBwbHVnZ3kKIGZyb20gX3B5dGVzdCBpbXBvcnQgZml4dHVy
ZXMKIGZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKLWZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVj
YXRlZAotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgKAotICAgIGlzY2xhc3MsCi0gICAgaXNm
dW5jdGlvbiwKLSAgICBpc19nZW5lcmF0b3IsCi0gICAgYXNjaWlfZXNjYXBlZCwKLSAgICBSRUdF
WF9UWVBFLAotICAgIFNUUklOR19UWVBFUywKLSAgICBOb25lVHlwZSwKLSAgICBOT1RTRVQsCi0g
ICAgZ2V0X3JlYWxfZnVuYywKLSAgICBnZXRmc2xpbmVubywKLSAgICBzYWZlX2dldGF0dHIsCi0g
ICAgc2FmZV9zdHIsCi0gICAgZ2V0bG9jYXRpb24sCi0gICAgZW51bSwKLSAgICBnZXRfZGVmYXVs
dF9hcmdfbmFtZXMsCi0pCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGZpbHRlcl90cmFjZWJh
Y2sKK2Zyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgZ2V0ZnNsaW5lbm8KK2Zyb20gX3B5dGVzdC5f
Y29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBp
bXBvcnQgVGVybWluYWxSZXByCitmcm9tIF9weXRlc3QuX2lvIGltcG9ydCBUZXJtaW5hbFdyaXRl
cgorZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgc2FmZXJlcHIKK2Zyb20gX3B5dGVz
dC5jb21wYXQgaW1wb3J0IGFzY2lpX2VzY2FwZWQKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBnZXRfZGVmYXVsdF9hcmdfbmFtZXMK
K2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldF9yZWFsX2Z1bmMKK2Zyb20gX3B5dGVzdC5j
b21wYXQgaW1wb3J0IGdldGltZnVuYworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0bG9j
YXRpb24KK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGlzX2FzeW5jX2Z1bmN0aW9uCitmcm9t
IF9weXRlc3QuY29tcGF0IGltcG9ydCBpc19nZW5lcmF0b3IKK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IE5PVFNFVAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgUkVHRVhfVFlQRQorZnJv
bSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgc2FmZV9nZXRhdHRyCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBzYWZlX2lzY2xhc3MKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFNUUklOR19U
WVBFUworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0
ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0
Q29kZQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va2ltcGwKK2Zyb20gX3B5dGVzdC5j
b25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBp
bXBvcnQgRlNDT0xMRUNUT1JfR0VUSE9PS1BST1hZX0lTSU5JVFBBVEgKK2Zyb20gX3B5dGVzdC5m
aXh0dXJlcyBpbXBvcnQgRnVuY0ZpeHR1cmVJbmZvCitmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQg
U2Vzc2lvbgorZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1BUktfR0VOCitmcm9tIF9weXRlc3Qu
bWFyayBpbXBvcnQgUGFyYW1ldGVyU2V0Citmcm9tIF9weXRlc3QubWFyay5zdHJ1Y3R1cmVzIGlt
cG9ydCBnZXRfdW5wYWNrZWRfbWFya3MKK2Zyb20gX3B5dGVzdC5tYXJrLnN0cnVjdHVyZXMgaW1w
b3J0IE1hcmsKK2Zyb20gX3B5dGVzdC5tYXJrLnN0cnVjdHVyZXMgaW1wb3J0IE1hcmtEZWNvcmF0
b3IKK2Zyb20gX3B5dGVzdC5tYXJrLnN0cnVjdHVyZXMgaW1wb3J0IG5vcm1hbGl6ZV9tYXJrX2xp
c3QKIGZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbAotZnJvbSBfcHl0ZXN0Lm1hcmsu
c3RydWN0dXJlcyBpbXBvcnQgdHJhbnNmZXJfbWFya2VycywgZ2V0X3VucGFja2VkX21hcmtzCi0K
LQotIyByZWxhdGl2ZSBwYXRocyB0aGF0IHdlIHVzZSB0byBmaWx0ZXIgdHJhY2ViYWNrIGVudHJp
ZXMgZnJvbSBhcHBlYXJpbmcgdG8gdGhlIHVzZXI7Ci0jIHNlZSBmaWx0ZXJfdHJhY2ViYWNrCi0j
IG5vdGU6IGlmIHdlIG5lZWQgdG8gYWRkIG1vcmUgcGF0aHMgdGhhbiB3aGF0IHdlIGhhdmUgbm93
IHdlIHNob3VsZCBwcm9iYWJseSB1c2UgYSBsaXN0Ci0jIGZvciBiZXR0ZXIgbWFpbnRlbmFuY2UK
LV9wbHVnZ3lfZGlyID0gcHkucGF0aC5sb2NhbChwbHVnZ3kuX19maWxlX18ucnN0cmlwKCJvYyIp
KQotIyBwbHVnZ3kgaXMgZWl0aGVyIGEgcGFja2FnZSBvciBhIHNpbmdsZSBtb2R1bGUgZGVwZW5k
aW5nIG9uIHRoZSB2ZXJzaW9uCi1pZiBfcGx1Z2d5X2Rpci5iYXNlbmFtZSA9PSAiX19pbml0X18u
cHkiOgotICAgIF9wbHVnZ3lfZGlyID0gX3BsdWdneV9kaXIuZGlycGF0aCgpCi1fcHl0ZXN0X2Rp
ciA9IHB5LnBhdGgubG9jYWwoX3B5dGVzdC5fX2ZpbGVfXykuZGlycGF0aCgpCi1fcHlfZGlyID0g
cHkucGF0aC5sb2NhbChweS5fX2ZpbGVfXykuZGlycGF0aCgpCi0KK2Zyb20gX3B5dGVzdC5vdXRj
b21lcyBpbXBvcnQgc2tpcAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGltcG9ydF9wYXRo
Citmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgSW1wb3J0UGF0aE1pc21hdGNoRXJyb3IKK2Zy
b20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBwYXJ0cworZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1w
b3J0IHZpc2l0Citmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0Q29sbGVj
dGlvbldhcm5pbmcKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RVbmhh
bmRsZWRDb3JvdXRpbmVXYXJuaW5nCiAKLWRlZiBmaWx0ZXJfdHJhY2ViYWNrKGVudHJ5KToKLSAg
ICAiIiJSZXR1cm4gVHJ1ZSBpZiBhIFRyYWNlYmFja0VudHJ5IGluc3RhbmNlIHNob3VsZCBiZSBy
ZW1vdmVkIGZyb20gdHJhY2ViYWNrczoKLSAgICAqIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjb2Rl
IChubyBjb2RlIHRvIHNob3cgdXAgZm9yIGl0KTsKLSAgICAqIGludGVybmFsIHRyYWNlYmFjayBm
cm9tIHB5dGVzdCBvciBpdHMgaW50ZXJuYWwgbGlicmFyaWVzLCBweSBhbmQgcGx1Z2d5LgotICAg
ICIiIgotICAgICMgZW50cnkucGF0aCBtaWdodCBzb21ldGltZXMgcmV0dXJuIGEgc3RyIG9iamVj
dCB3aGVuIHRoZSBlbnRyeQotICAgICMgcG9pbnRzIHRvIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBj
b2RlCi0gICAgIyBzZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5dGVzdC1kZXYvcHkvaXNzdWVz
LzcxCi0gICAgcmF3X2ZpbGVuYW1lID0gZW50cnkuZnJhbWUuY29kZS5yYXcuY29fZmlsZW5hbWUK
LSAgICBpc19nZW5lcmF0ZWQgPSAiPCIgaW4gcmF3X2ZpbGVuYW1lIGFuZCAiPiIgaW4gcmF3X2Zp
bGVuYW1lCi0gICAgaWYgaXNfZ2VuZXJhdGVkOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAj
IGVudHJ5LnBhdGggbWlnaHQgcG9pbnQgdG8gYSBub24tZXhpc3RpbmcgZmlsZSwgaW4gd2hpY2gg
Y2FzZSBpdCB3aWxsCi0gICAgIyBhbHNvIHJldHVybiBhIHN0ciBvYmplY3QuIHNlZSAjMTEzMwot
ICAgIHAgPSBweS5wYXRoLmxvY2FsKGVudHJ5LnBhdGgpCi0gICAgcmV0dXJuIG5vdCBwLnJlbHRv
KF9wbHVnZ3lfZGlyKSBhbmQgbm90IHAucmVsdG8oX3B5dGVzdF9kaXIpIGFuZCBub3QgcC5yZWx0
bygKLSAgICAgICAgX3B5X2RpcgotICAgICkKLQotCi1kZWYgcHlvYmpfcHJvcGVydHkobmFtZSk6
CitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCisgICAgZnJv
bSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAorICAgIGZyb20gX3B5dGVzdC5maXh0
dXJlcyBpbXBvcnQgX1Njb3BlCiAKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICBub2RlID0g
c2VsZi5nZXRwYXJlbnQoZ2V0YXR0cihfX2ltcG9ydF9fKCJweXRlc3QiKSwgbmFtZSkpCi0gICAg
ICAgIGlmIG5vZGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS5vYmoKIAot
ICAgIGRvYyA9ICJweXRob24gJXMgb2JqZWN0IHRoaXMgbm9kZSB3YXMgY29sbGVjdGVkIGZyb20g
KGNhbiBiZSBOb25lKS4iICUgKAotICAgICAgICBuYW1lLmxvd2VyKCksCi0gICAgKQotICAgIHJl
dHVybiBwcm9wZXJ0eShnZXQsIE5vbmUsIE5vbmUsIGRvYykKLQotCi1kZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5v
bmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImdlbmVyYWwiKQogICAgIGdyb3VwLmFk
ZG9wdGlvbigKICAgICAgICAgIi0tZml4dHVyZXMiLApAQCAtMTA1LDE1ICs5NiwxMCBAQCBkZWYg
cHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAg
ICBoZWxwPSJzaG93IGZpeHR1cmVzIHBlciB0ZXN0IiwKICAgICApCi0gICAgcGFyc2VyLmFkZGlu
aSgKLSAgICAgICAgInVzZWZpeHR1cmVzIiwKLSAgICAgICAgdHlwZT0iYXJncyIsCi0gICAgICAg
IGRlZmF1bHQ9W10sCi0gICAgICAgIGhlbHA9Imxpc3Qgb2YgZGVmYXVsdCBmaXh0dXJlcyB0byBi
ZSB1c2VkIHdpdGggdGhpcyBwcm9qZWN0IiwKLSAgICApCiAgICAgcGFyc2VyLmFkZGluaSgKICAg
ICAgICAgInB5dGhvbl9maWxlcyIsCiAgICAgICAgIHR5cGU9ImFyZ3MiLAorICAgICAgICAjIE5P
VEU6IGRlZmF1bHQgaXMgYWxzbyB1c2VkIGluIEFzc2VydGlvblJld3JpdGluZ0hvb2suCiAgICAg
ICAgIGRlZmF1bHQ9WyJ0ZXN0XyoucHkiLCAiKl90ZXN0LnB5Il0sCiAgICAgICAgIGhlbHA9Imds
b2Itc3R5bGUgZmlsZSBwYXR0ZXJucyBmb3IgUHl0aG9uIHRlc3QgbW9kdWxlIGRpc2NvdmVyeSIs
CiAgICAgKQpAQCAtMTI3LDQxICsxMTMsMzQgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2Vy
KToKICAgICAgICAgInB5dGhvbl9mdW5jdGlvbnMiLAogICAgICAgICB0eXBlPSJhcmdzIiwKICAg
ICAgICAgZGVmYXVsdD1bInRlc3QiXSwKLSAgICAgICAgaGVscD0icHJlZml4ZXMgb3IgZ2xvYiBu
YW1lcyBmb3IgUHl0aG9uIHRlc3QgZnVuY3Rpb24gYW5kICIgIm1ldGhvZCBkaXNjb3ZlcnkiLAor
ICAgICAgICBoZWxwPSJwcmVmaXhlcyBvciBnbG9iIG5hbWVzIGZvciBQeXRob24gdGVzdCBmdW5j
dGlvbiBhbmQgbWV0aG9kIGRpc2NvdmVyeSIsCiAgICAgKQotCi0gICAgZ3JvdXAuYWRkb3B0aW9u
KAotICAgICAgICAiLS1pbXBvcnQtbW9kZSIsCi0gICAgICAgIGRlZmF1bHQ9InByZXBlbmQiLAot
ICAgICAgICBjaG9pY2VzPVsicHJlcGVuZCIsICJhcHBlbmQiXSwKLSAgICAgICAgZGVzdD0iaW1w
b3J0bW9kZSIsCi0gICAgICAgIGhlbHA9InByZXBlbmQvYXBwZW5kIHRvIHN5cy5wYXRoIHdoZW4g
aW1wb3J0aW5nIHRlc3QgbW9kdWxlcywgIgotICAgICAgICAiZGVmYXVsdCBpcyB0byBwcmVwZW5k
LiIsCisgICAgcGFyc2VyLmFkZGluaSgKKyAgICAgICAgImRpc2FibGVfdGVzdF9pZF9lc2NhcGlu
Z19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9zdXBwb3J0IiwKKyAgICAgICAg
dHlwZT0iYm9vbCIsCisgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9ImRpc2Fi
bGUgc3RyaW5nIGVzY2FwZSBub24tYXNjaWkgY2hhcmFjdGVycywgbWlnaHQgY2F1c2UgdW53YW50
ZWQgIgorICAgICAgICAic2lkZSBlZmZlY3RzKHVzZSBhdCB5b3VyIG93biByaXNrKSIsCiAgICAg
KQogCiAKLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NtZGxp
bmVfbWFpbihjb25maWc6IENvbmZpZykgLT4gT3B0aW9uYWxbVW5pb25baW50LCBFeGl0Q29kZV1d
OgogICAgIGlmIGNvbmZpZy5vcHRpb24uc2hvd2ZpeHR1cmVzOgogICAgICAgICBzaG93Zml4dHVy
ZXMoY29uZmlnKQogICAgICAgICByZXR1cm4gMAogICAgIGlmIGNvbmZpZy5vcHRpb24uc2hvd19m
aXh0dXJlc19wZXJfdGVzdDoKICAgICAgICAgc2hvd19maXh0dXJlc19wZXJfdGVzdChjb25maWcp
CiAgICAgICAgIHJldHVybiAwCisgICAgcmV0dXJuIE5vbmUKIAogCi1kZWYgcHl0ZXN0X2dlbmVy
YXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAjIHRob3NlIGFsdGVybmF0aXZlIHNwZWxsaW5ncyBh
cmUgY29tbW9uIC0gcmFpc2UgYSBzcGVjaWZpYyBlcnJvciB0byBhbGVydAotICAgICMgdGhlIHVz
ZXIKLSAgICBhbHRfc3BlbGxpbmdzID0gWyJwYXJhbWV0ZXJpemUiLCAicGFyYW1ldHJpc2UiLCAi
cGFyYW1ldGVyaXNlIl0KLSAgICBmb3IgYXR0ciBpbiBhbHRfc3BlbGxpbmdzOgotICAgICAgICBp
ZiBoYXNhdHRyKG1ldGFmdW5jLmZ1bmN0aW9uLCBhdHRyKToKLSAgICAgICAgICAgIG1zZyA9ICJ7
MH0gaGFzICd7MX0nLCBzcGVsbGluZyBzaG91bGQgYmUgJ3BhcmFtZXRyaXplJyIKLSAgICAgICAg
ICAgIHJhaXNlIE1hcmtlckVycm9yKG1zZy5mb3JtYXQobWV0YWZ1bmMuZnVuY3Rpb24uX19uYW1l
X18sIGF0dHIpKQorZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYzogIk1ldGFmdW5j
IikgLT4gTm9uZToKICAgICBmb3IgbWFya2VyIGluIG1ldGFmdW5jLmRlZmluaXRpb24uaXRlcl9t
YXJrZXJzKG5hbWU9InBhcmFtZXRyaXplIik6Ci0gICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXpl
KCptYXJrZXIuYXJncywgKiptYXJrZXIua3dhcmdzKQorICAgICAgICAjIFRPRE86IEZpeCB0aGlz
IHR5cGUtaWdub3JlIChvdmVybGFwcGluZyBrd2FyZ3MpLgorICAgICAgICBtZXRhZnVuYy5wYXJh
bWV0cml6ZSgqbWFya2VyLmFyZ3MsICoqbWFya2VyLmt3YXJncywgX3BhcmFtX21hcms9bWFya2Vy
KSAgIyB0eXBlOiBpZ25vcmVbbWlzY10KIAogCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcp
OgorZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CiAgICAgY29u
ZmlnLmFkZGluaXZhbHVlX2xpbmUoCiAgICAgICAgICJtYXJrZXJzIiwKICAgICAgICAgInBhcmFt
ZXRyaXplKGFyZ25hbWVzLCBhcmd2YWx1ZXMpOiBjYWxsIGEgdGVzdCBmdW5jdGlvbiBtdWx0aXBs
ZSAiCkBAIC0xNzAsMTE3ICsxNDksMTY4IEBAIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6
CiAgICAgICAgICJvciBhIGxpc3Qgb2YgdHVwbGVzIG9mIHZhbHVlcyBpZiBhcmduYW1lcyBzcGVj
aWZpZXMgbXVsdGlwbGUgbmFtZXMuICIKICAgICAgICAgIkV4YW1wbGU6IEBwYXJhbWV0cml6ZSgn
YXJnMScsIFsxLDJdKSB3b3VsZCBsZWFkIHRvIHR3byBjYWxscyBvZiB0aGUgIgogICAgICAgICAi
ZGVjb3JhdGVkIHRlc3QgZnVuY3Rpb24sIG9uZSB3aXRoIGFyZzE9MSBhbmQgYW5vdGhlciB3aXRo
IGFyZzE9Mi4iCi0gICAgICAgICJzZWUgaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L3BhcmFtZXRy
aXplLmh0bWwgZm9yIG1vcmUgaW5mbyBhbmQgIgotICAgICAgICAiZXhhbXBsZXMuIiwKKyAgICAg
ICAgInNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvcGFyYW1ldHJpemUuaHRt
bCBmb3IgbW9yZSBpbmZvICIKKyAgICAgICAgImFuZCBleGFtcGxlcy4iLAogICAgICkKICAgICBj
b25maWcuYWRkaW5pdmFsdWVfbGluZSgKICAgICAgICAgIm1hcmtlcnMiLAogICAgICAgICAidXNl
Zml4dHVyZXMoZml4dHVyZW5hbWUxLCBmaXh0dXJlbmFtZTIsIC4uLik6IG1hcmsgdGVzdHMgYXMg
bmVlZGluZyAiCi0gICAgICAgICJhbGwgb2YgdGhlIHNwZWNpZmllZCBmaXh0dXJlcy4gc2VlIGh0
dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9maXh0dXJlLmh0bWwjdXNlZml4dHVyZXMgIiwKKyAgICAg
ICAgImFsbCBvZiB0aGUgc3BlY2lmaWVkIGZpeHR1cmVzLiBzZWUgIgorICAgICAgICAiaHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2ZpeHR1cmUuaHRtbCN1c2VmaXh0dXJlcyAiLAog
ICAgICkKIAogCitkZWYgYXN5bmNfd2Fybl9hbmRfc2tpcChub2RlaWQ6IHN0cikgLT4gTm9uZToK
KyAgICBtc2cgPSAiYXN5bmMgZGVmIGZ1bmN0aW9ucyBhcmUgbm90IG5hdGl2ZWx5IHN1cHBvcnRl
ZCBhbmQgaGF2ZSBiZWVuIHNraXBwZWQuXG4iCisgICAgbXNnICs9ICgKKyAgICAgICAgIllvdSBu
ZWVkIHRvIGluc3RhbGwgYSBzdWl0YWJsZSBwbHVnaW4gZm9yIHlvdXIgYXN5bmMgZnJhbWV3b3Jr
LCBmb3IgZXhhbXBsZTpcbiIKKyAgICApCisgICAgbXNnICs9ICIgIC0gYW55aW9cbiIKKyAgICBt
c2cgKz0gIiAgLSBweXRlc3QtYXN5bmNpb1xuIgorICAgIG1zZyArPSAiICAtIHB5dGVzdC10b3Ju
YXN5bmNcbiIKKyAgICBtc2cgKz0gIiAgLSBweXRlc3QtdHJpb1xuIgorICAgIG1zZyArPSAiICAt
IHB5dGVzdC10d2lzdGVkIgorICAgIHdhcm5pbmdzLndhcm4oUHl0ZXN0VW5oYW5kbGVkQ29yb3V0
aW5lV2FybmluZyhtc2cuZm9ybWF0KG5vZGVpZCkpKQorICAgIHNraXAobXNnPSJhc3luYyBkZWYg
ZnVuY3Rpb24gYW5kIG5vIGFzeW5jIHBsdWdpbiBpbnN0YWxsZWQgKHNlZSB3YXJuaW5ncykiKQor
CisKIEBob29raW1wbCh0cnlsYXN0PVRydWUpCi1kZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHB5ZnVu
Y2l0ZW0pOgorZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChweWZ1bmNpdGVtOiAiRnVuY3Rpb24iKSAt
PiBPcHRpb25hbFtvYmplY3RdOgogICAgIHRlc3RmdW5jdGlvbiA9IHB5ZnVuY2l0ZW0ub2JqCi0g
ICAgaWYgcHlmdW5jaXRlbS5faXN5aWVsZGVkZnVuY3Rpb24oKToKLSAgICAgICAgdGVzdGZ1bmN0
aW9uKCpweWZ1bmNpdGVtLl9hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIGZ1bmNhcmdzID0gcHlm
dW5jaXRlbS5mdW5jYXJncwotICAgICAgICB0ZXN0YXJncyA9IHt9Ci0gICAgICAgIGZvciBhcmcg
aW4gcHlmdW5jaXRlbS5fZml4dHVyZWluZm8uYXJnbmFtZXM6Ci0gICAgICAgICAgICB0ZXN0YXJn
c1thcmddID0gZnVuY2FyZ3NbYXJnXQotICAgICAgICB0ZXN0ZnVuY3Rpb24oKip0ZXN0YXJncykK
KyAgICBpZiBpc19hc3luY19mdW5jdGlvbih0ZXN0ZnVuY3Rpb24pOgorICAgICAgICBhc3luY193
YXJuX2FuZF9za2lwKHB5ZnVuY2l0ZW0ubm9kZWlkKQorICAgIGZ1bmNhcmdzID0gcHlmdW5jaXRl
bS5mdW5jYXJncworICAgIHRlc3RhcmdzID0ge2FyZzogZnVuY2FyZ3NbYXJnXSBmb3IgYXJnIGlu
IHB5ZnVuY2l0ZW0uX2ZpeHR1cmVpbmZvLmFyZ25hbWVzfQorICAgIHJlc3VsdCA9IHRlc3RmdW5j
dGlvbigqKnRlc3RhcmdzKQorICAgIGlmIGhhc2F0dHIocmVzdWx0LCAiX19hd2FpdF9fIikgb3Ig
aGFzYXR0cihyZXN1bHQsICJfX2FpdGVyX18iKToKKyAgICAgICAgYXN5bmNfd2Fybl9hbmRfc2tp
cChweWZ1bmNpdGVtLm5vZGVpZCkKICAgICByZXR1cm4gVHJ1ZQogCiAKLWRlZiBweXRlc3RfY29s
bGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CitkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZSgKKyAgICBw
YXRoOiBweS5wYXRoLmxvY2FsLCBwYXJlbnQ6IG5vZGVzLkNvbGxlY3RvcgorKSAtPiBPcHRpb25h
bFsiTW9kdWxlIl06CiAgICAgZXh0ID0gcGF0aC5leHQKICAgICBpZiBleHQgPT0gIi5weSI6CiAg
ICAgICAgIGlmIG5vdCBwYXJlbnQuc2Vzc2lvbi5pc2luaXRwYXRoKHBhdGgpOgotICAgICAgICAg
ICAgZm9yIHBhdCBpbiBwYXJlbnQuY29uZmlnLmdldGluaSgicHl0aG9uX2ZpbGVzIik6Ci0gICAg
ICAgICAgICAgICAgaWYgcGF0aC5mbm1hdGNoKHBhdCk6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAg
ICAgaWYgbm90IHBhdGhfbWF0Y2hlc19wYXR0ZXJucygKKyAgICAgICAgICAgICAgICBwYXRoLCBw
YXJlbnQuY29uZmlnLmdldGluaSgicHl0aG9uX2ZpbGVzIikgKyBbIl9faW5pdF9fLnB5Il0KKyAg
ICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgaWhvb2sg
PSBwYXJlbnQuc2Vzc2lvbi5nZXRob29rcHJveHkocGF0aCkKLSAgICAgICAgcmV0dXJuIGlob29r
LnB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZShwYXRoPXBhdGgsIHBhcmVudD1wYXJlbnQpCisg
ICAgICAgIG1vZHVsZSA9IGlob29rLnB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZSgKKyAgICAg
ICAgICAgIHBhdGg9cGF0aCwgcGFyZW50PXBhcmVudAorICAgICAgICApICAjIHR5cGU6IE1vZHVs
ZQorICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgcmV0dXJuIE5vbmUKIAogCi1kZWYgcHl0ZXN0
X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgcmV0dXJuIE1vZHVsZShw
YXRoLCBwYXJlbnQpCitkZWYgcGF0aF9tYXRjaGVzX3BhdHRlcm5zKHBhdGg6IHB5LnBhdGgubG9j
YWwsIHBhdHRlcm5zOiBJdGVyYWJsZVtzdHJdKSAtPiBib29sOgorICAgICIiIlJldHVybiB3aGV0
aGVyIHBhdGggbWF0Y2hlcyBhbnkgb2YgdGhlIHBhdHRlcm5zIGluIHRoZSBsaXN0IG9mIGdsb2Jz
IGdpdmVuLiIiIgorICAgIHJldHVybiBhbnkocGF0aC5mbm1hdGNoKHBhdHRlcm4pIGZvciBwYXR0
ZXJuIGluIHBhdHRlcm5zKQogCiAKLUBob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5
dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yLCBuYW1lLCBvYmopOgotICAgIG91dGNv
bWUgPSB5aWVsZAotICAgIHJlcyA9IG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0gICAgaWYgcmVzIGlz
IG5vdCBOb25lOgotICAgICAgICByZXR1cm4KLSAgICAjIG5vdGhpbmcgd2FzIGNvbGxlY3RlZCBl
bHNld2hlcmUsIGxldCdzIGRvIGl0IGhlcmUKLSAgICBpZiBpc2NsYXNzKG9iaik6CitkZWYgcHl0
ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGg6IHB5LnBhdGgubG9jYWwsIHBhcmVudCkgLT4g
Ik1vZHVsZSI6CisgICAgaWYgcGF0aC5iYXNlbmFtZSA9PSAiX19pbml0X18ucHkiOgorICAgICAg
ICBwa2cgPSBQYWNrYWdlLmZyb21fcGFyZW50KHBhcmVudCwgZnNwYXRoPXBhdGgpICAjIHR5cGU6
IFBhY2thZ2UKKyAgICAgICAgcmV0dXJuIHBrZworICAgIG1vZCA9IE1vZHVsZS5mcm9tX3BhcmVu
dChwYXJlbnQsIGZzcGF0aD1wYXRoKSAgIyB0eXBlOiBNb2R1bGUKKyAgICByZXR1cm4gbW9kCisK
KworQGhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVt
KGNvbGxlY3RvcjogIlB5Q29sbGVjdG9yIiwgbmFtZTogc3RyLCBvYmo6IG9iamVjdCk6CisgICAg
IyBOb3RoaW5nIHdhcyBjb2xsZWN0ZWQgZWxzZXdoZXJlLCBsZXQncyBkbyBpdCBoZXJlLgorICAg
IGlmIHNhZmVfaXNjbGFzcyhvYmopOgogICAgICAgICBpZiBjb2xsZWN0b3IuaXN0ZXN0Y2xhc3Mo
b2JqLCBuYW1lKToKLSAgICAgICAgICAgIENsYXNzID0gY29sbGVjdG9yLl9nZXRjdXN0b21jbGFz
cygiQ2xhc3MiKQotICAgICAgICAgICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQoQ2xhc3MobmFtZSwg
cGFyZW50PWNvbGxlY3RvcikpCisgICAgICAgICAgICByZXR1cm4gQ2xhc3MuZnJvbV9wYXJlbnQo
Y29sbGVjdG9yLCBuYW1lPW5hbWUsIG9iaj1vYmopCiAgICAgZWxpZiBjb2xsZWN0b3IuaXN0ZXN0
ZnVuY3Rpb24ob2JqLCBuYW1lKToKLSAgICAgICAgIyBtb2NrIHNlZW1zIHRvIHN0b3JlIHVuYm91
bmQgbWV0aG9kcyAoaXNzdWU0NzMpLCBub3JtYWxpemUgaXQKKyAgICAgICAgIyBtb2NrIHNlZW1z
IHRvIHN0b3JlIHVuYm91bmQgbWV0aG9kcyAoaXNzdWU0NzMpLCBub3JtYWxpemUgaXQuCiAgICAg
ICAgIG9iaiA9IGdldGF0dHIob2JqLCAiX19mdW5jX18iLCBvYmopCiAgICAgICAgICMgV2UgbmVl
ZCB0byB0cnkgYW5kIHVud3JhcCB0aGUgZnVuY3Rpb24gaWYgaXQncyBhIGZ1bmN0b29scy5wYXJ0
aWFsCi0gICAgICAgICMgb3IgYSBmdW50b29scy53cmFwcGVkLgotICAgICAgICAjIFdlIG11c24n
dCBpZiBpdCdzIGJlZW4gd3JhcHBlZCB3aXRoIG1vY2sucGF0Y2ggKHB5dGhvbiAyIG9ubHkpCi0g
ICAgICAgIGlmIG5vdCAoaXNmdW5jdGlvbihvYmopIG9yIGlzZnVuY3Rpb24oZ2V0X3JlYWxfZnVu
YyhvYmopKSk6Ci0gICAgICAgICAgICBjb2xsZWN0b3Iud2FybigKLSAgICAgICAgICAgICAgICBj
b2RlPSJDMiIsCi0gICAgICAgICAgICAgICAgbWVzc2FnZT0iY2Fubm90IGNvbGxlY3QgJXIgYmVj
YXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iICUgbmFtZSwKKyAgICAgICAgIyBvciBhIGZ1bmN0
b29scy53cmFwcGVkLgorICAgICAgICAjIFdlIG11c3RuJ3QgaWYgaXQncyBiZWVuIHdyYXBwZWQg
d2l0aCBtb2NrLnBhdGNoIChweXRob24gMiBvbmx5KS4KKyAgICAgICAgaWYgbm90IChpbnNwZWN0
LmlzZnVuY3Rpb24ob2JqKSBvciBpbnNwZWN0LmlzZnVuY3Rpb24oZ2V0X3JlYWxfZnVuYyhvYmop
KSk6CisgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vID0gZ2V0ZnNsaW5lbm8ob2JqKQorICAg
ICAgICAgICAgd2FybmluZ3Mud2Fybl9leHBsaWNpdCgKKyAgICAgICAgICAgICAgICBtZXNzYWdl
PVB5dGVzdENvbGxlY3Rpb25XYXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNv
bGxlY3QgJXIgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iICUgbmFtZQorICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Tm9uZSwKKyAgICAgICAgICAgICAg
ICBmaWxlbmFtZT1zdHIoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIGxpbmVubz1saW5lbm8g
KyAxLAogICAgICAgICAgICAgKQogICAgICAgICBlbGlmIGdldGF0dHIob2JqLCAiX190ZXN0X18i
LCBUcnVlKToKICAgICAgICAgICAgIGlmIGlzX2dlbmVyYXRvcihvYmopOgotICAgICAgICAgICAg
ICAgIHJlcyA9IEdlbmVyYXRvcihuYW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQorICAgICAgICAgICAg
ICAgIHJlcyA9IEZ1bmN0aW9uLmZyb21fcGFyZW50KGNvbGxlY3RvciwgbmFtZT1uYW1lKQorICAg
ICAgICAgICAgICAgIHJlYXNvbiA9ICJ5aWVsZCB0ZXN0cyB3ZXJlIHJlbW92ZWQgaW4gcHl0ZXN0
IDQuMCAtIHtuYW1lfSB3aWxsIGJlIGlnbm9yZWQiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZT1uYW1lCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlcy5hZGRf
bWFya2VyKE1BUktfR0VOLnhmYWlsKHJ1bj1GYWxzZSwgcmVhc29uPXJlYXNvbikpCisgICAgICAg
ICAgICAgICAgcmVzLndhcm4oUHl0ZXN0Q29sbGVjdGlvbldhcm5pbmcocmVhc29uKSkKICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVzID0gbGlzdChjb2xsZWN0b3IuX2dlbmZ1
bmN0aW9ucyhuYW1lLCBvYmopKQotICAgICAgICAgICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQocmVz
KQorICAgICAgICAgICAgcmV0dXJuIHJlcwogCiAKLWRlZiBweXRlc3RfbWFrZV9wYXJhbWV0cml6
ZV9pZChjb25maWcsIHZhbCwgYXJnbmFtZT1Ob25lKToKLSAgICByZXR1cm4gTm9uZQotCi0KLWNs
YXNzIFB5b2JqQ29udGV4dChvYmplY3QpOgotICAgIG1vZHVsZSA9IHB5b2JqX3Byb3BlcnR5KCJN
b2R1bGUiKQotICAgIGNscyA9IHB5b2JqX3Byb3BlcnR5KCJDbGFzcyIpCi0gICAgaW5zdGFuY2Ug
PSBweW9ial9wcm9wZXJ0eSgiSW5zdGFuY2UiKQotCi0KLWNsYXNzIFB5b2JqTWl4aW4oUHlvYmpD
b250ZXh0KToKK2NsYXNzIFB5b2JqTWl4aW46CiAgICAgX0FMTE9XX01BUktFUlMgPSBUcnVlCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgKmssICoqa3cpOgotICAgICAgICBzdXBlcihQeW9iak1p
eGluLCBzZWxmKS5fX2luaXRfXygqaywgKiprdykKKyAgICAjIEZ1bmN0aW9uIGFuZCBhdHRyaWJ1
dGVzIHRoYXQgdGhlIG1peGluIG5lZWRzIChmb3IgdHlwZS1jaGVja2luZyBvbmx5KS4KKyAgICBp
ZiBUWVBFX0NIRUNLSU5HOgorICAgICAgICBuYW1lID0gIiIgICMgdHlwZTogc3RyCisgICAgICAg
IHBhcmVudCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbbm9kZXMuTm9kZV0KKyAgICAgICAgb3du
X21hcmtlcnMgPSBbXSAgIyB0eXBlOiBMaXN0W01hcmtdCisKKyAgICAgICAgZGVmIGdldHBhcmVu
dChzZWxmLCBjbHM6IFR5cGVbbm9kZXMuX05vZGVUeXBlXSkgLT4gT3B0aW9uYWxbbm9kZXMuX05v
ZGVUeXBlXToKKyAgICAgICAgICAgIC4uLgogCi0gICAgZGVmIG9iaigpOgorICAgICAgICBkZWYg
bGlzdGNoYWluKHNlbGYpIC0+IExpc3Rbbm9kZXMuTm9kZV06CisgICAgICAgICAgICAuLi4KIAot
ICAgICAgICBkZWYgZmdldChzZWxmKToKLSAgICAgICAgICAgIG9iaiA9IGdldGF0dHIoc2VsZiwg
Il9vYmoiLCBOb25lKQotICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fb2JqID0gb2JqID0gc2VsZi5fZ2V0b2JqKCkKLSAgICAgICAgICAgICAgICAjIFhY
WCBldmlsIGhhY2sKLSAgICAgICAgICAgICAgICAjIHVzZWQgdG8gYXZvaWQgSW5zdGFuY2UgY29s
bGVjdG9yIG1hcmtlciBkdXBsaWNhdGlvbgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX0FMTE9X
X01BUktFUlM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYub3duX21hcmtlcnMuZXh0ZW5kKGdl
dF91bnBhY2tlZF9tYXJrcyhzZWxmLm9iaikpCi0gICAgICAgICAgICByZXR1cm4gb2JqCisgICAg
QHByb3BlcnR5CisgICAgZGVmIG1vZHVsZShzZWxmKToKKyAgICAgICAgIiIiUHl0aG9uIG1vZHVs
ZSBvYmplY3QgdGhpcyBub2RlIHdhcyBjb2xsZWN0ZWQgZnJvbSAoY2FuIGJlIE5vbmUpLiIiIgor
ICAgICAgICBub2RlID0gc2VsZi5nZXRwYXJlbnQoTW9kdWxlKQorICAgICAgICByZXR1cm4gbm9k
ZS5vYmogaWYgbm9kZSBpcyBub3QgTm9uZSBlbHNlIE5vbmUKIAotICAgICAgICBkZWYgZnNldChz
ZWxmLCB2YWx1ZSk6Ci0gICAgICAgICAgICBzZWxmLl9vYmogPSB2YWx1ZQorICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBjbHMoc2VsZik6CisgICAgICAgICIiIlB5dGhvbiBjbGFzcyBvYmplY3QgdGhp
cyBub2RlIHdhcyBjb2xsZWN0ZWQgZnJvbSAoY2FuIGJlIE5vbmUpLiIiIgorICAgICAgICBub2Rl
ID0gc2VsZi5nZXRwYXJlbnQoQ2xhc3MpCisgICAgICAgIHJldHVybiBub2RlLm9iaiBpZiBub2Rl
IGlzIG5vdCBOb25lIGVsc2UgTm9uZQogCi0gICAgICAgIHJldHVybiBwcm9wZXJ0eShmZ2V0LCBm
c2V0LCBOb25lLCAidW5kZXJseWluZyBweXRob24gb2JqZWN0IikKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgaW5zdGFuY2Uoc2VsZik6CisgICAgICAgICIiIlB5dGhvbiBpbnN0YW5jZSBvYmplY3Qg
dGhpcyBub2RlIHdhcyBjb2xsZWN0ZWQgZnJvbSAoY2FuIGJlIE5vbmUpLiIiIgorICAgICAgICBu
b2RlID0gc2VsZi5nZXRwYXJlbnQoSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBub2RlLm9iaiBp
ZiBub2RlIGlzIG5vdCBOb25lIGVsc2UgTm9uZQogCi0gICAgb2JqID0gb2JqKCkKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgb2JqKHNlbGYpOgorICAgICAgICAiIiJVbmRlcmx5aW5nIFB5dGhvbiBv
YmplY3QuIiIiCisgICAgICAgIG9iaiA9IGdldGF0dHIoc2VsZiwgIl9vYmoiLCBOb25lKQorICAg
ICAgICBpZiBvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX29iaiA9IG9iaiA9IHNlbGYu
X2dldG9iaigpCisgICAgICAgICAgICAjIFhYWCBldmlsIGhhY2sKKyAgICAgICAgICAgICMgdXNl
ZCB0byBhdm9pZCBJbnN0YW5jZSBjb2xsZWN0b3IgbWFya2VyIGR1cGxpY2F0aW9uCisgICAgICAg
ICAgICBpZiBzZWxmLl9BTExPV19NQVJLRVJTOgorICAgICAgICAgICAgICAgIHNlbGYub3duX21h
cmtlcnMuZXh0ZW5kKGdldF91bnBhY2tlZF9tYXJrcyhzZWxmLm9iaikpCisgICAgICAgIHJldHVy
biBvYmoKKworICAgIEBvYmouc2V0dGVyCisgICAgZGVmIG9iaihzZWxmLCB2YWx1ZSk6CisgICAg
ICAgIHNlbGYuX29iaiA9IHZhbHVlCiAKICAgICBkZWYgX2dldG9iaihzZWxmKToKLSAgICAgICAg
cmV0dXJuIGdldGF0dHIoc2VsZi5wYXJlbnQub2JqLCBzZWxmLm5hbWUpCi0KLSAgICBkZWYgZ2V0
bW9kcGF0aChzZWxmLCBzdG9wYXRtb2R1bGU9VHJ1ZSwgaW5jbHVkZW1vZHVsZT1GYWxzZSk6Ci0g
ICAgICAgICIiIiByZXR1cm4gcHl0aG9uIHBhdGggcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcg
bW9kdWxlLiAiIiIKKyAgICAgICAgIiIiR2V0IHRoZSB1bmRlcmx5aW5nIFB5dGhvbiBvYmplY3Qu
IE1heSBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzLiIiIgorICAgICAgICAjIFRPRE86IElt
cHJvdmUgdGhlIHR5cGUgb2YgYHBhcmVudGAgc3VjaCB0aGF0IGFzc2VydC9pZ25vcmUgYXJlbid0
IG5lZWRlZC4KKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50IGlzIG5vdCBOb25lCisgICAgICAg
IG9iaiA9IHNlbGYucGFyZW50Lm9iaiAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAg
ICAgICByZXR1cm4gZ2V0YXR0cihvYmosIHNlbGYubmFtZSkKKworICAgIGRlZiBnZXRtb2RwYXRo
KHNlbGYsIHN0b3BhdG1vZHVsZTogYm9vbCA9IFRydWUsIGluY2x1ZGVtb2R1bGU6IGJvb2wgPSBG
YWxzZSkgLT4gc3RyOgorICAgICAgICAiIiJSZXR1cm4gUHl0aG9uIHBhdGggcmVsYXRpdmUgdG8g
dGhlIGNvbnRhaW5pbmcgbW9kdWxlLiIiIgogICAgICAgICBjaGFpbiA9IHNlbGYubGlzdGNoYWlu
KCkKICAgICAgICAgY2hhaW4ucmV2ZXJzZSgpCiAgICAgICAgIHBhcnRzID0gW10KQEAgLTI5Niwy
MSArMzI2LDE4IEBAIGNsYXNzIFB5b2JqTWl4aW4oUHlvYmpDb250ZXh0KToKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChuYW1lKQogICAgICAgICBw
YXJ0cy5yZXZlcnNlKCkKLSAgICAgICAgcyA9ICIuIi5qb2luKHBhcnRzKQotICAgICAgICByZXR1
cm4gcy5yZXBsYWNlKCIuWyIsICJbIikKKyAgICAgICAgcmV0dXJuICIuIi5qb2luKHBhcnRzKQog
Ci0gICAgZGVmIF9nZXRmc2xpbmVubyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGdldGZzbGluZW5v
KHNlbGYub2JqKQotCi0gICAgZGVmIHJlcG9ydGluZm8oc2VsZik6CisgICAgZGVmIHJlcG9ydGlu
Zm8oc2VsZikgLT4gVHVwbGVbVW5pb25bcHkucGF0aC5sb2NhbCwgc3RyXSwgaW50LCBzdHJdOgog
ICAgICAgICAjIFhYWCBjYWNoaW5nPwogICAgICAgICBvYmogPSBzZWxmLm9iagogICAgICAgICBj
b21wYXRfY29fZmlyc3RsaW5lbm8gPSBnZXRhdHRyKG9iaiwgImNvbXBhdF9jb19maXJzdGxpbmVu
byIsIE5vbmUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29tcGF0X2NvX2ZpcnN0bGluZW5vLCBp
bnQpOgogICAgICAgICAgICAgIyBub3NlIGNvbXBhdGliaWxpdHkKLSAgICAgICAgICAgIGZzcGF0
aCA9IHN5cy5tb2R1bGVzW29iai5fX21vZHVsZV9fXS5fX2ZpbGVfXwotICAgICAgICAgICAgaWYg
ZnNwYXRoLmVuZHN3aXRoKCIucHljIik6Ci0gICAgICAgICAgICAgICAgZnNwYXRoID0gZnNwYXRo
WzotMV0KKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IHN5cy5tb2R1bGVzW29iai5fX21vZHVsZV9f
XS5fX2ZpbGVfXworICAgICAgICAgICAgaWYgZmlsZV9wYXRoLmVuZHN3aXRoKCIucHljIik6Cisg
ICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gZmlsZV9wYXRoWzotMV0KKyAgICAgICAgICAgIGZz
cGF0aCA9IGZpbGVfcGF0aCAgIyB0eXBlOiBVbmlvbltweS5wYXRoLmxvY2FsLCBzdHJdCiAgICAg
ICAgICAgICBsaW5lbm8gPSBjb21wYXRfY29fZmlyc3RsaW5lbm8KICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIGZzcGF0aCwgbGluZW5vID0gZ2V0ZnNsaW5lbm8ob2JqKQpAQCAtMzE5LDMzICsz
NDYsNDcgQEAgY2xhc3MgUHlvYmpNaXhpbihQeW9iakNvbnRleHQpOgogICAgICAgICByZXR1cm4g
ZnNwYXRoLCBsaW5lbm8sIG1vZHBhdGgKIAogCi1jbGFzcyBQeUNvbGxlY3RvcihQeW9iak1peGlu
LCBub2Rlcy5Db2xsZWN0b3IpOgorIyBBcyBhbiBvcHRpbWl6YXRpb24sIHRoZXNlIGJ1aWx0aW4g
YXR0cmlidXRlIG5hbWVzIGFyZSBwcmUtaWdub3JlZCB3aGVuCisjIGl0ZXJhdGluZyBvdmVyIGFu
IG9iamVjdCBkdXJpbmcgY29sbGVjdGlvbiAtLSB0aGUgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRl
bQorIyBob29rIGlzIG5vdCBjYWxsZWQgZm9yIHRoZW0uCisjIGZtdDogb2ZmCitjbGFzcyBfRW1w
dHlDbGFzczogcGFzcyAgIyBub3FhOiBFNzAxCitJR05PUkVEX0FUVFJJQlVURVMgPSBmcm96ZW5z
ZXQudW5pb24oICAjIG5vcWE6IEUzMDUKKyAgICBmcm96ZW5zZXQoKSwKKyAgICAjIE1vZHVsZS4K
KyAgICBkaXIodHlwZXMuTW9kdWxlVHlwZSgiZW1wdHlfbW9kdWxlIikpLAorICAgICMgU29tZSBl
eHRyYSBtb2R1bGUgYXR0cmlidXRlcyB0aGUgYWJvdmUgZG9lc24ndCBjYXRjaC4KKyAgICB7Il9f
YnVpbHRpbnNfXyIsICJfX2ZpbGVfXyIsICJfX2NhY2hlZF9fIn0sCisgICAgIyBDbGFzcy4KKyAg
ICBkaXIoX0VtcHR5Q2xhc3MpLAorICAgICMgSW5zdGFuY2UuCisgICAgZGlyKF9FbXB0eUNsYXNz
KCkpLAorKQorZGVsIF9FbXB0eUNsYXNzCisjIGZtdDogb24KIAotICAgIGRlZiBmdW5jbmFtZWZp
bHRlcihzZWxmLCBuYW1lKToKKworY2xhc3MgUHlDb2xsZWN0b3IoUHlvYmpNaXhpbiwgbm9kZXMu
Q29sbGVjdG9yKToKKyAgICBkZWYgZnVuY25hbWVmaWx0ZXIoc2VsZiwgbmFtZTogc3RyKSAtPiBi
b29sOgogICAgICAgICByZXR1cm4gc2VsZi5fbWF0Y2hlc19wcmVmaXhfb3JfZ2xvYl9vcHRpb24o
InB5dGhvbl9mdW5jdGlvbnMiLCBuYW1lKQogCi0gICAgZGVmIGlzbm9zZXRlc3Qoc2VsZiwgb2Jq
KToKLSAgICAgICAgIiIiIExvb2sgZm9yIHRoZSBfX3Rlc3RfXyBhdHRyaWJ1dGUsIHdoaWNoIGlz
IGFwcGxpZWQgYnkgdGhlCi0gICAgICAgIEBub3NlLnRvb2xzLmlzdGVzdCBkZWNvcmF0b3IKKyAg
ICBkZWYgaXNub3NldGVzdChzZWxmLCBvYmo6IG9iamVjdCkgLT4gYm9vbDoKKyAgICAgICAgIiIi
TG9vayBmb3IgdGhlIF9fdGVzdF9fIGF0dHJpYnV0ZSwgd2hpY2ggaXMgYXBwbGllZCBieSB0aGUK
KyAgICAgICAgQG5vc2UudG9vbHMuaXN0ZXN0IGRlY29yYXRvci4KICAgICAgICAgIiIiCiAgICAg
ICAgICMgV2UgZXhwbGljaXRseSBjaGVjayBmb3IgImlzIFRydWUiIGhlcmUgdG8gbm90IG1pc3Rh
a2VubHkgdHJlYXQKICAgICAgICAgIyBjbGFzc2VzIHdpdGggYSBjdXN0b20gX19nZXRhdHRyX18g
cmV0dXJuaW5nIHNvbWV0aGluZyB0cnV0aHkgKGxpa2UgYQogICAgICAgICAjIGZ1bmN0aW9uKSBh
cyB0ZXN0IGNsYXNzZXMuCiAgICAgICAgIHJldHVybiBzYWZlX2dldGF0dHIob2JqLCAiX190ZXN0
X18iLCBGYWxzZSkgaXMgVHJ1ZQogCi0gICAgZGVmIGNsYXNzbmFtZWZpbHRlcihzZWxmLCBuYW1l
KToKKyAgICBkZWYgY2xhc3NuYW1lZmlsdGVyKHNlbGYsIG5hbWU6IHN0cikgLT4gYm9vbDoKICAg
ICAgICAgcmV0dXJuIHNlbGYuX21hdGNoZXNfcHJlZml4X29yX2dsb2Jfb3B0aW9uKCJweXRob25f
Y2xhc3NlcyIsIG5hbWUpCiAKLSAgICBkZWYgaXN0ZXN0ZnVuY3Rpb24oc2VsZiwgb2JqLCBuYW1l
KToKKyAgICBkZWYgaXN0ZXN0ZnVuY3Rpb24oc2VsZiwgb2JqOiBvYmplY3QsIG5hbWU6IHN0cikg
LT4gYm9vbDoKICAgICAgICAgaWYgc2VsZi5mdW5jbmFtZWZpbHRlcihuYW1lKSBvciBzZWxmLmlz
bm9zZXRlc3Qob2JqKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBzdGF0aWNtZXRo
b2QpOgotICAgICAgICAgICAgICAgICMgc3RhdGljIG1ldGhvZHMgbmVlZCB0byBiZSB1bndyYXBw
ZWQKKyAgICAgICAgICAgICAgICAjIHN0YXRpY21ldGhvZHMgbmVlZCB0byBiZSB1bndyYXBwZWQu
CiAgICAgICAgICAgICAgICAgb2JqID0gc2FmZV9nZXRhdHRyKG9iaiwgIl9fZnVuY19fIiwgRmFs
c2UpCi0gICAgICAgICAgICAgICAgaWYgb2JqIGlzIEZhbHNlOgotICAgICAgICAgICAgICAgICAg
ICAjIFB5dGhvbiAyLjYgd3JhcHMgaW4gYSBkaWZmZXJlbnQgd2F5IHRoYXQgd2Ugd29uJ3QgdHJ5
IHRvIGhhbmRsZQotICAgICAgICAgICAgICAgICAgICBtc2cgPSAiY2Fubm90IGNvbGxlY3Qgc3Rh
dGljIG1ldGhvZCAlciBiZWNhdXNlIGl0IGlzIG5vdCBhIGZ1bmN0aW9uIgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLndhcm4oY29kZT0iQzIiLCBtZXNzYWdlPW1zZyAlIG5hbWUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgcmV0dXJuICgKICAgICAgICAg
ICAgICAgICBzYWZlX2dldGF0dHIob2JqLCAiX19jYWxsX18iLCBGYWxzZSkKICAgICAgICAgICAg
ICAgICBhbmQgZml4dHVyZXMuZ2V0Zml4dHVyZW1hcmtlcihvYmopIGlzIE5vbmUKQEAgLTM1Myw2
OCArMzk0LDcyIEBAIGNsYXNzIFB5Q29sbGVjdG9yKFB5b2JqTWl4aW4sIG5vZGVzLkNvbGxlY3Rv
cik6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBp
c3Rlc3RjbGFzcyhzZWxmLCBvYmosIG5hbWUpOgorICAgIGRlZiBpc3Rlc3RjbGFzcyhzZWxmLCBv
Ymo6IG9iamVjdCwgbmFtZTogc3RyKSAtPiBib29sOgogICAgICAgICByZXR1cm4gc2VsZi5jbGFz
c25hbWVmaWx0ZXIobmFtZSkgb3Igc2VsZi5pc25vc2V0ZXN0KG9iaikKIAotICAgIGRlZiBfbWF0
Y2hlc19wcmVmaXhfb3JfZ2xvYl9vcHRpb24oc2VsZiwgb3B0aW9uX25hbWUsIG5hbWUpOgotICAg
ICAgICAiIiIKLSAgICAgICAgY2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1lIG1hdGNoZXMgdGhlIHBy
ZWZpeCBvciBnbG9iLXBhdHRlcm4gZGVmaW5lZAotICAgICAgICBpbiBpbmkgY29uZmlndXJhdGlv
bi4KLSAgICAgICAgIiIiCisgICAgZGVmIF9tYXRjaGVzX3ByZWZpeF9vcl9nbG9iX29wdGlvbihz
ZWxmLCBvcHRpb25fbmFtZTogc3RyLCBuYW1lOiBzdHIpIC0+IGJvb2w6CisgICAgICAgICIiIkNo
ZWNrIGlmIHRoZSBnaXZlbiBuYW1lIG1hdGNoZXMgdGhlIHByZWZpeCBvciBnbG9iLXBhdHRlcm4g
ZGVmaW5lZAorICAgICAgICBpbiBpbmkgY29uZmlndXJhdGlvbi4iIiIKICAgICAgICAgZm9yIG9w
dGlvbiBpbiBzZWxmLmNvbmZpZy5nZXRpbmkob3B0aW9uX25hbWUpOgogICAgICAgICAgICAgaWYg
bmFtZS5zdGFydHN3aXRoKG9wdGlvbik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAg
ICAgICAgICAgICMgY2hlY2sgdGhhdCBuYW1lIGxvb2tzIGxpa2UgYSBnbG9iLXN0cmluZyBiZWZv
cmUgY2FsbGluZyBmbm1hdGNoCisgICAgICAgICAgICAjIENoZWNrIHRoYXQgbmFtZSBsb29rcyBs
aWtlIGEgZ2xvYi1zdHJpbmcgYmVmb3JlIGNhbGxpbmcgZm5tYXRjaAogICAgICAgICAgICAgIyBi
ZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZvciBldmVyeSBuYW1lIGluIGVhY2ggY29sbGVjdGVkIG1v
ZHVsZSwKLSAgICAgICAgICAgICMgYW5kIGZubWF0Y2ggaXMgc29tZXdoYXQgZXhwZW5zaXZlIHRv
IGNhbGwKKyAgICAgICAgICAgICMgYW5kIGZubWF0Y2ggaXMgc29tZXdoYXQgZXhwZW5zaXZlIHRv
IGNhbGwuCiAgICAgICAgICAgICBlbGlmICgiKiIgaW4gb3B0aW9uIG9yICI/IiBpbiBvcHRpb24g
b3IgIlsiIGluIG9wdGlvbikgYW5kIGZubWF0Y2guZm5tYXRjaCgKICAgICAgICAgICAgICAgICBu
YW1lLCBvcHRpb24KICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUK
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgY29sbGVjdChzZWxmKToKKyAgICBkZWYg
Y29sbGVjdChzZWxmKSAtPiBJdGVyYWJsZVtVbmlvbltub2Rlcy5JdGVtLCBub2Rlcy5Db2xsZWN0
b3JdXToKICAgICAgICAgaWYgbm90IGdldGF0dHIoc2VsZi5vYmosICJfX3Rlc3RfXyIsIFRydWUp
OgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKICAgICAgICAgIyBOQi4gd2UgYXZvaWQgcmFuZG9t
IGdldGF0dHJzIGFuZCBwZWVrIGluIHRoZSBfX2RpY3RfXyBpbnN0ZWFkCiAgICAgICAgICMgKFhY
WCBvcmlnaW5hbGx5IGludHJvZHVjZWQgZnJvbSBhIFB5UHkgbmVlZCwgc3RpbGwgdHJ1ZT8pCiAg
ICAgICAgIGRpY3RzID0gW2dldGF0dHIoc2VsZi5vYmosICJfX2RpY3RfXyIsIHt9KV0KLSAgICAg
ICAgZm9yIGJhc2VjbHMgaW4gaW5zcGVjdC5nZXRtcm8oc2VsZi5vYmouX19jbGFzc19fKToKKyAg
ICAgICAgZm9yIGJhc2VjbHMgaW4gc2VsZi5vYmouX19jbGFzc19fLl9fbXJvX186CiAgICAgICAg
ICAgICBkaWN0cy5hcHBlbmQoYmFzZWNscy5fX2RpY3RfXykKLSAgICAgICAgc2VlbiA9IHt9Ci0g
ICAgICAgIHZhbHVlcyA9IFtdCisgICAgICAgIHNlZW4gPSBzZXQoKSAgIyB0eXBlOiBTZXRbc3Ry
XQorICAgICAgICB2YWx1ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1VuaW9uW25vZGVzLkl0ZW0sIG5v
ZGVzLkNvbGxlY3Rvcl1dCisgICAgICAgIGlob29rID0gc2VsZi5paG9vawogICAgICAgICBmb3Ig
ZGljIGluIGRpY3RzOgorICAgICAgICAgICAgIyBOb3RlOiBzZWVtcyBsaWtlIHRoZSBkaWN0IGNh
biBjaGFuZ2UgZHVyaW5nIGl0ZXJhdGlvbiAtCisgICAgICAgICAgICAjIGJlIGNhcmVmdWwgbm90
IHRvIHJlbW92ZSB0aGUgbGlzdCgpIHdpdGhvdXQgY29uc2lkZXJhdGlvbi4KICAgICAgICAgICAg
IGZvciBuYW1lLCBvYmogaW4gbGlzdChkaWMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgaWYg
bmFtZSBpbiBJR05PUkVEX0FUVFJJQlVURVM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CiAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgICAgIHNlZW5bbmFtZV0gPSBUcnVlCi0gICAgICAgICAgICAg
ICAgcmVzID0gc2VsZi5fbWFrZWl0ZW0obmFtZSwgb2JqKQorICAgICAgICAgICAgICAgIHNlZW4u
YWRkKG5hbWUpCisgICAgICAgICAgICAgICAgcmVzID0gaWhvb2sucHl0ZXN0X3B5Y29sbGVjdF9t
YWtlaXRlbSgKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdG9yPXNlbGYsIG5hbWU9bmFtZSwg
b2JqPW9iagorICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBpZiByZXMgaXMgTm9u
ZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShyZXMsIGxpc3QpOgotICAgICAgICAgICAgICAgICAgICByZXMgPSBbcmVzXQot
ICAgICAgICAgICAgICAgIHZhbHVlcy5leHRlbmQocmVzKQotICAgICAgICB2YWx1ZXMuc29ydChr
ZXk9bGFtYmRhIGl0ZW06IGl0ZW0ucmVwb3J0aW5mbygpWzoyXSkKLSAgICAgICAgcmV0dXJuIHZh
bHVlcworICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXMsIGxpc3QpOgorICAgICAg
ICAgICAgICAgICAgICB2YWx1ZXMuZXh0ZW5kKHJlcykKKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHJlcykKIAotICAgIGRlZiBtYWtlaXRl
bShzZWxmLCBuYW1lLCBvYmopOgotICAgICAgICB3YXJuaW5ncy53YXJuKGRlcHJlY2F0ZWQuQ09M
TEVDVE9SX01BS0VJVEVNLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHNlbGYuX21ha2VpdGVtKG5h
bWUsIG9iaikKKyAgICAgICAgZGVmIHNvcnRfa2V5KGl0ZW0pOgorICAgICAgICAgICAgZnNwYXRo
LCBsaW5lbm8sIF8gPSBpdGVtLnJlcG9ydGluZm8oKQorICAgICAgICAgICAgcmV0dXJuIChzdHIo
ZnNwYXRoKSwgbGluZW5vKQogCi0gICAgZGVmIF9tYWtlaXRlbShzZWxmLCBuYW1lLCBvYmopOgot
ICAgICAgICAjIGFzc2VydCBzZWxmLmlob29rLmZzcGF0aCA9PSBzZWxmLmZzcGF0aCwgc2VsZgot
ICAgICAgICByZXR1cm4gc2VsZi5paG9vay5weXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxl
Y3Rvcj1zZWxmLCBuYW1lPW5hbWUsIG9iaj1vYmopCisgICAgICAgIHZhbHVlcy5zb3J0KGtleT1z
b3J0X2tleSkKKyAgICAgICAgcmV0dXJuIHZhbHVlcwogCi0gICAgZGVmIF9nZW5mdW5jdGlvbnMo
c2VsZiwgbmFtZSwgZnVuY29iaik6Ci0gICAgICAgIG1vZHVsZSA9IHNlbGYuZ2V0cGFyZW50KE1v
ZHVsZSkub2JqCisgICAgZGVmIF9nZW5mdW5jdGlvbnMoc2VsZiwgbmFtZTogc3RyLCBmdW5jb2Jq
KSAtPiBJdGVyYXRvclsiRnVuY3Rpb24iXToKKyAgICAgICAgbW9kdWxlY29sID0gc2VsZi5nZXRw
YXJlbnQoTW9kdWxlKQorICAgICAgICBhc3NlcnQgbW9kdWxlY29sIGlzIG5vdCBOb25lCisgICAg
ICAgIG1vZHVsZSA9IG1vZHVsZWNvbC5vYmoKICAgICAgICAgY2xzY29sID0gc2VsZi5nZXRwYXJl
bnQoQ2xhc3MpCiAgICAgICAgIGNscyA9IGNsc2NvbCBhbmQgY2xzY29sLm9iaiBvciBOb25lCi0g
ICAgICAgIHRyYW5zZmVyX21hcmtlcnMoZnVuY29iaiwgY2xzLCBtb2R1bGUpCiAgICAgICAgIGZt
ID0gc2VsZi5zZXNzaW9uLl9maXh0dXJlbWFuYWdlcgogCi0gICAgICAgIGRlZmluaXRpb24gPSBG
dW5jdGlvbkRlZmluaXRpb24obmFtZT1uYW1lLCBwYXJlbnQ9c2VsZiwgY2FsbG9iaj1mdW5jb2Jq
KQotICAgICAgICBmaXh0dXJlaW5mbyA9IGZtLmdldGZpeHR1cmVpbmZvKGRlZmluaXRpb24sIGZ1
bmNvYmosIGNscykKKyAgICAgICAgZGVmaW5pdGlvbiA9IEZ1bmN0aW9uRGVmaW5pdGlvbi5mcm9t
X3BhcmVudChzZWxmLCBuYW1lPW5hbWUsIGNhbGxvYmo9ZnVuY29iaikKKyAgICAgICAgZml4dHVy
ZWluZm8gPSBkZWZpbml0aW9uLl9maXh0dXJlaW5mbwogCiAgICAgICAgIG1ldGFmdW5jID0gTWV0
YWZ1bmMoCiAgICAgICAgICAgICBkZWZpbml0aW9uLCBmaXh0dXJlaW5mbywgc2VsZi5jb25maWcs
IGNscz1jbHMsIG1vZHVsZT1tb2R1bGUKQEAgLTQyMiwyNyArNDY3LDI3IEBAIGNsYXNzIFB5Q29s
bGVjdG9yKFB5b2JqTWl4aW4sIG5vZGVzLkNvbGxlY3Rvcik6CiAgICAgICAgIG1ldGhvZHMgPSBb
XQogICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgInB5dGVzdF9nZW5lcmF0ZV90ZXN0cyIpOgog
ICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQobW9kdWxlLnB5dGVzdF9nZW5lcmF0ZV90ZXN0cykK
LSAgICAgICAgaWYgaGFzYXR0cihjbHMsICJweXRlc3RfZ2VuZXJhdGVfdGVzdHMiKToKKyAgICAg
ICAgaWYgY2xzIGlzIG5vdCBOb25lIGFuZCBoYXNhdHRyKGNscywgInB5dGVzdF9nZW5lcmF0ZV90
ZXN0cyIpOgogICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQoY2xzKCkucHl0ZXN0X2dlbmVyYXRl
X3Rlc3RzKQotICAgICAgICBpZiBtZXRob2RzOgotICAgICAgICAgICAgc2VsZi5paG9vay5weXRl
c3RfZ2VuZXJhdGVfdGVzdHMuY2FsbF9leHRyYSgKLSAgICAgICAgICAgICAgICBtZXRob2RzLCBk
aWN0KG1ldGFmdW5jPW1ldGFmdW5jKQotICAgICAgICAgICAgKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgc2VsZi5paG9vay5weXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmM9bWV0YWZ1
bmMpCiAKLSAgICAgICAgRnVuY3Rpb24gPSBzZWxmLl9nZXRjdXN0b21jbGFzcygiRnVuY3Rpb24i
KQorICAgICAgICBzZWxmLmlob29rLnB5dGVzdF9nZW5lcmF0ZV90ZXN0cy5jYWxsX2V4dHJhKG1l
dGhvZHMsIGRpY3QobWV0YWZ1bmM9bWV0YWZ1bmMpKQorCiAgICAgICAgIGlmIG5vdCBtZXRhZnVu
Yy5fY2FsbHM6Ci0gICAgICAgICAgICB5aWVsZCBGdW5jdGlvbihuYW1lLCBwYXJlbnQ9c2VsZiwg
Zml4dHVyZWluZm89Zml4dHVyZWluZm8pCisgICAgICAgICAgICB5aWVsZCBGdW5jdGlvbi5mcm9t
X3BhcmVudChzZWxmLCBuYW1lPW5hbWUsIGZpeHR1cmVpbmZvPWZpeHR1cmVpbmZvKQogICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgIyBhZGQgZnVuY2FyZ3MoKSBhcyBmaXh0dXJlZGVmcyB0byBm
aXh0dXJlaW5mby5hcmcyZml4dHVyZWRlZnMKKyAgICAgICAgICAgICMgQWRkIGZ1bmNhcmdzKCkg
YXMgZml4dHVyZWRlZnMgdG8gZml4dHVyZWluZm8uYXJnMmZpeHR1cmVkZWZzLgogICAgICAgICAg
ICAgZml4dHVyZXMuYWRkX2Z1bmNhcmdfcHNldWRvX2ZpeHR1cmVfZGVmKHNlbGYsIG1ldGFmdW5j
LCBmbSkKIAorICAgICAgICAgICAgIyBBZGRfZnVuY2FyZ19wc2V1ZG9fZml4dHVyZV9kZWYgbWF5
IGhhdmUgc2hhZG93ZWQgc29tZSBmaXh0dXJlcworICAgICAgICAgICAgIyB3aXRoIGRpcmVjdCBw
YXJhbWV0cml6YXRpb24sIHNvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgd2hhdCB0aGUKKyAgICAgICAg
ICAgICMgZnVuY3Rpb24gcmVhbGx5IG5lZWRzLgorICAgICAgICAgICAgZml4dHVyZWluZm8ucHJ1
bmVfZGVwZW5kZW5jeV90cmVlKCkKKwogICAgICAgICAgICAgZm9yIGNhbGxzcGVjIGluIG1ldGFm
dW5jLl9jYWxsczoKLSAgICAgICAgICAgICAgICBzdWJuYW1lID0gIiVzWyVzXSIgJSAobmFtZSwg
Y2FsbHNwZWMuaWQpCi0gICAgICAgICAgICAgICAgeWllbGQgRnVuY3Rpb24oCisgICAgICAgICAg
ICAgICAgc3VibmFtZSA9ICJ7fVt7fV0iLmZvcm1hdChuYW1lLCBjYWxsc3BlYy5pZCkKKyAgICAg
ICAgICAgICAgICB5aWVsZCBGdW5jdGlvbi5mcm9tX3BhcmVudCgKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZiwKICAgICAgICAgICAgICAgICAgICAgbmFtZT1zdWJuYW1lLAotICAgICAgICAgICAg
ICAgICAgICBwYXJlbnQ9c2VsZiwKICAgICAgICAgICAgICAgICAgICAgY2FsbHNwZWM9Y2FsbHNw
ZWMsCiAgICAgICAgICAgICAgICAgICAgIGNhbGxvYmo9ZnVuY29iaiwKICAgICAgICAgICAgICAg
ICAgICAgZml4dHVyZWluZm89Zml4dHVyZWluZm8sCkBAIC00NTIsMjYgKzQ5Nyw4MyBAQCBjbGFz
cyBQeUNvbGxlY3RvcihQeW9iak1peGluLCBub2Rlcy5Db2xsZWN0b3IpOgogCiAKIGNsYXNzIE1v
ZHVsZShub2Rlcy5GaWxlLCBQeUNvbGxlY3Rvcik6Ci0gICAgIiIiIENvbGxlY3RvciBmb3IgdGVz
dCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuICIiIgorICAgICIiIkNvbGxlY3RvciBmb3IgdGVzdCBj
bGFzc2VzIGFuZCBmdW5jdGlvbnMuIiIiCiAKICAgICBkZWYgX2dldG9iaihzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2ltcG9ydHRlc3Rtb2R1bGUoKQogCi0gICAgZGVmIGNvbGxlY3Qoc2Vs
Zik6CisgICAgZGVmIGNvbGxlY3Qoc2VsZikgLT4gSXRlcmFibGVbVW5pb25bbm9kZXMuSXRlbSwg
bm9kZXMuQ29sbGVjdG9yXV06CisgICAgICAgIHNlbGYuX2luamVjdF9zZXR1cF9tb2R1bGVfZml4
dHVyZSgpCisgICAgICAgIHNlbGYuX2luamVjdF9zZXR1cF9mdW5jdGlvbl9maXh0dXJlKCkKICAg
ICAgICAgc2VsZi5zZXNzaW9uLl9maXh0dXJlbWFuYWdlci5wYXJzZWZhY3RvcmllcyhzZWxmKQot
ICAgICAgICByZXR1cm4gc3VwZXIoTW9kdWxlLCBzZWxmKS5jb2xsZWN0KCkKKyAgICAgICAgcmV0
dXJuIHN1cGVyKCkuY29sbGVjdCgpCisKKyAgICBkZWYgX2luamVjdF9zZXR1cF9tb2R1bGVfZml4
dHVyZShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJJbmplY3QgYSBoaWRkZW4gYXV0b3VzZSwg
bW9kdWxlIHNjb3BlZCBmaXh0dXJlIGludG8gdGhlIGNvbGxlY3RlZCBtb2R1bGUgb2JqZWN0Cisg
ICAgICAgIHRoYXQgaW52b2tlcyBzZXRVcE1vZHVsZS90ZWFyRG93bk1vZHVsZSBpZiBlaXRoZXIg
b3IgYm90aCBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgIFVzaW5nIGEgZml4dHVyZSB0byBpbnZv
a2UgdGhpcyBtZXRob2RzIGVuc3VyZXMgd2UgcGxheSBuaWNlbHkgYW5kIHVuc3VycHJpc2luZ2x5
IHdpdGgKKyAgICAgICAgb3RoZXIgZml4dHVyZXMgKCM1MTcpLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2V0dXBfbW9kdWxlID0gX2dldF9maXJzdF9ub25fZml4dHVyZV9mdW5jKAorICAgICAgICAg
ICAgc2VsZi5vYmosICgic2V0VXBNb2R1bGUiLCAic2V0dXBfbW9kdWxlIikKKyAgICAgICAgKQor
ICAgICAgICB0ZWFyZG93bl9tb2R1bGUgPSBfZ2V0X2ZpcnN0X25vbl9maXh0dXJlX2Z1bmMoCisg
ICAgICAgICAgICBzZWxmLm9iaiwgKCJ0ZWFyRG93bk1vZHVsZSIsICJ0ZWFyZG93bl9tb2R1bGUi
KQorICAgICAgICApCisKKyAgICAgICAgaWYgc2V0dXBfbW9kdWxlIGlzIE5vbmUgYW5kIHRlYXJk
b3duX21vZHVsZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgQGZpeHR1
cmVzLmZpeHR1cmUoYXV0b3VzZT1UcnVlLCBzY29wZT0ibW9kdWxlIikKKyAgICAgICAgZGVmIHh1
bml0X3NldHVwX21vZHVsZV9maXh0dXJlKHJlcXVlc3QpIC0+IEdlbmVyYXRvcltOb25lLCBOb25l
LCBOb25lXToKKyAgICAgICAgICAgIGlmIHNldHVwX21vZHVsZSBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBfY2FsbF93aXRoX29wdGlvbmFsX2FyZ3VtZW50KHNldHVwX21vZHVsZSwgcmVx
dWVzdC5tb2R1bGUpCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgaWYgdGVhcmRvd25f
bW9kdWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfb3B0aW9uYWxf
YXJndW1lbnQodGVhcmRvd25fbW9kdWxlLCByZXF1ZXN0Lm1vZHVsZSkKKworICAgICAgICBzZWxm
Lm9iai5fX3B5dGVzdF9zZXR1cF9tb2R1bGUgPSB4dW5pdF9zZXR1cF9tb2R1bGVfZml4dHVyZQor
CisgICAgZGVmIF9pbmplY3Rfc2V0dXBfZnVuY3Rpb25fZml4dHVyZShzZWxmKSAtPiBOb25lOgor
ICAgICAgICAiIiJJbmplY3QgYSBoaWRkZW4gYXV0b3VzZSwgZnVuY3Rpb24gc2NvcGVkIGZpeHR1
cmUgaW50byB0aGUgY29sbGVjdGVkIG1vZHVsZSBvYmplY3QKKyAgICAgICAgdGhhdCBpbnZva2Vz
IHNldHVwX2Z1bmN0aW9uL3RlYXJkb3duX2Z1bmN0aW9uIGlmIGVpdGhlciBvciBib3RoIGFyZSBh
dmFpbGFibGUuCisKKyAgICAgICAgVXNpbmcgYSBmaXh0dXJlIHRvIGludm9rZSB0aGlzIG1ldGhv
ZHMgZW5zdXJlcyB3ZSBwbGF5IG5pY2VseSBhbmQgdW5zdXJwcmlzaW5nbHkgd2l0aAorICAgICAg
ICBvdGhlciBmaXh0dXJlcyAoIzUxNykuCisgICAgICAgICIiIgorICAgICAgICBzZXR1cF9mdW5j
dGlvbiA9IF9nZXRfZmlyc3Rfbm9uX2ZpeHR1cmVfZnVuYyhzZWxmLm9iaiwgKCJzZXR1cF9mdW5j
dGlvbiIsKSkKKyAgICAgICAgdGVhcmRvd25fZnVuY3Rpb24gPSBfZ2V0X2ZpcnN0X25vbl9maXh0
dXJlX2Z1bmMoCisgICAgICAgICAgICBzZWxmLm9iaiwgKCJ0ZWFyZG93bl9mdW5jdGlvbiIsKQor
ICAgICAgICApCisgICAgICAgIGlmIHNldHVwX2Z1bmN0aW9uIGlzIE5vbmUgYW5kIHRlYXJkb3du
X2Z1bmN0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBAZml4dHVy
ZXMuZml4dHVyZShhdXRvdXNlPVRydWUsIHNjb3BlPSJmdW5jdGlvbiIpCisgICAgICAgIGRlZiB4
dW5pdF9zZXR1cF9mdW5jdGlvbl9maXh0dXJlKHJlcXVlc3QpIC0+IEdlbmVyYXRvcltOb25lLCBO
b25lLCBOb25lXToKKyAgICAgICAgICAgIGlmIHJlcXVlc3QuaW5zdGFuY2UgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgIyBpbiB0aGlzIGNhc2Ugd2UgYXJlIGJvdW5kIHRvIGFuIGluc3Rh
bmNlLCBzbyB3ZSBuZWVkIHRvIGxldAorICAgICAgICAgICAgICAgICMgc2V0dXBfbWV0aG9kIGhh
bmRsZSB0aGlzCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgICAgIGlmIHNldHVwX2Z1bmN0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIF9jYWxsX3dpdGhfb3B0aW9uYWxfYXJndW1lbnQoc2V0dXBfZnVuY3Rpb24sIHJlcXVlc3Qu
ZnVuY3Rpb24pCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgaWYgdGVhcmRvd25fZnVu
Y3Rpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9vcHRpb25hbF9h
cmd1bWVudCh0ZWFyZG93bl9mdW5jdGlvbiwgcmVxdWVzdC5mdW5jdGlvbikKKworICAgICAgICBz
ZWxmLm9iai5fX3B5dGVzdF9zZXR1cF9mdW5jdGlvbiA9IHh1bml0X3NldHVwX2Z1bmN0aW9uX2Zp
eHR1cmUKIAogICAgIGRlZiBfaW1wb3J0dGVzdG1vZHVsZShzZWxmKToKLSAgICAgICAgIyB3ZSBh
c3N1bWUgd2UgYXJlIG9ubHkgY2FsbGVkIG9uY2UgcGVyIG1vZHVsZQorICAgICAgICAjIFdlIGFz
c3VtZSB3ZSBhcmUgb25seSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLgogICAgICAgICBpbXBvcnRt
b2RlID0gc2VsZi5jb25maWcuZ2V0b3B0aW9uKCItLWltcG9ydC1tb2RlIikKICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgbW9kID0gc2VsZi5mc3BhdGgucHlpbXBvcnQoZW5zdXJlc3lzcGF0aD1p
bXBvcnRtb2RlKQotICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6CisgICAgICAgICAgICBtb2Qg
PSBpbXBvcnRfcGF0aChzZWxmLmZzcGF0aCwgbW9kZT1pbXBvcnRtb2RlKQorICAgICAgICBleGNl
cHQgU3ludGF4RXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIHNlbGYuQ29sbGVjdEVycm9y
KAotICAgICAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpLmdldHJlcHIo
c3R5bGU9InNob3J0IikKLSAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IHNlbGYuZnNwYXRo
LkltcG9ydE1pc21hdGNoRXJyb3I6Ci0gICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0K
KyAgICAgICAgICAgICAgICBFeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpLmdldHJlcHIoc3R5
bGU9InNob3J0IikKKyAgICAgICAgICAgICkgZnJvbSBlCisgICAgICAgIGV4Y2VwdCBJbXBvcnRQ
YXRoTWlzbWF0Y2hFcnJvciBhcyBlOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5Db2xsZWN0RXJy
b3IoCiAgICAgICAgICAgICAgICAgImltcG9ydCBmaWxlIG1pc21hdGNoOlxuIgogICAgICAgICAg
ICAgICAgICJpbXBvcnRlZCBtb2R1bGUgJXIgaGFzIHRoaXMgX19maWxlX18gYXR0cmlidXRlOlxu
IgpAQCAtNDgwLDI0ICs1ODIsMjQgQEAgY2xhc3MgTW9kdWxlKG5vZGVzLkZpbGUsIFB5Q29sbGVj
dG9yKToKICAgICAgICAgICAgICAgICAiICAlc1xuIgogICAgICAgICAgICAgICAgICJISU5UOiBy
ZW1vdmUgX19weWNhY2hlX18gLyAucHljIGZpbGVzIGFuZC9vciB1c2UgYSAiCiAgICAgICAgICAg
ICAgICAgInVuaXF1ZSBiYXNlbmFtZSBmb3IgeW91ciB0ZXN0IGZpbGUgbW9kdWxlcyIgJSBlLmFy
Z3MKLSAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAg
ICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8KLQotICAgICAg
ICAgICAgZXhjX2luZm8gPSBFeGNlcHRpb25JbmZvKCkKKyAgICAgICAgICAgICkgZnJvbSBlCisg
ICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjX2luZm8gPSBF
eGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5n
ZXRvcHRpb24oInZlcmJvc2UiKSA8IDI6CiAgICAgICAgICAgICAgICAgZXhjX2luZm8udHJhY2Vi
YWNrID0gZXhjX2luZm8udHJhY2ViYWNrLmZpbHRlcihmaWx0ZXJfdHJhY2ViYWNrKQotICAgICAg
ICAgICAgZXhjX3JlcHIgPSBleGNfaW5mby5nZXRyZXByKAotICAgICAgICAgICAgICAgIHN0eWxl
PSJzaG9ydCIKLSAgICAgICAgICAgICkgaWYgZXhjX2luZm8udHJhY2ViYWNrIGVsc2UgZXhjX2lu
Zm8uZXhjb25seSgpCi0gICAgICAgICAgICBmb3JtYXR0ZWRfdGIgPSBzYWZlX3N0cihleGNfcmVw
cikKKyAgICAgICAgICAgIGV4Y19yZXByID0gKAorICAgICAgICAgICAgICAgIGV4Y19pbmZvLmdl
dHJlcHIoc3R5bGU9InNob3J0IikKKyAgICAgICAgICAgICAgICBpZiBleGNfaW5mby50cmFjZWJh
Y2sKKyAgICAgICAgICAgICAgICBlbHNlIGV4Y19pbmZvLmV4Y29ubHkoKQorICAgICAgICAgICAg
KQorICAgICAgICAgICAgZm9ybWF0dGVkX3RiID0gc3RyKGV4Y19yZXByKQogICAgICAgICAgICAg
cmFpc2Ugc2VsZi5Db2xsZWN0RXJyb3IoCiAgICAgICAgICAgICAgICAgIkltcG9ydEVycm9yIHdo
aWxlIGltcG9ydGluZyB0ZXN0IG1vZHVsZSAne2ZzcGF0aH0nLlxuIgogICAgICAgICAgICAgICAg
ICJIaW50OiBtYWtlIHN1cmUgeW91ciB0ZXN0IG1vZHVsZXMvcGFja2FnZXMgaGF2ZSB2YWxpZCBQ
eXRob24gbmFtZXMuXG4iCiAgICAgICAgICAgICAgICAgIlRyYWNlYmFjazpcbiIKICAgICAgICAg
ICAgICAgICAie3RyYWNlYmFja30iLmZvcm1hdChmc3BhdGg9c2VsZi5mc3BhdGgsIHRyYWNlYmFj
az1mb3JtYXR0ZWRfdGIpCi0gICAgICAgICAgICApCi0gICAgICAgIGV4Y2VwdCBfcHl0ZXN0LnJ1
bm5lci5Ta2lwcGVkIGFzIGU6CisgICAgICAgICAgICApIGZyb20gZQorICAgICAgICBleGNlcHQg
c2tpcC5FeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGlmIGUuYWxsb3dfbW9kdWxlX2xldmVs
OgogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICByYWlzZSBzZWxmLkNvbGxlY3RF
cnJvcigKQEAgLTUwNSwyNDMgKzYwNywyNzcgQEAgY2xhc3MgTW9kdWxlKG5vZGVzLkZpbGUsIFB5
Q29sbGVjdG9yKToKICAgICAgICAgICAgICAgICAiVG8gZGVjb3JhdGUgYSB0ZXN0IGZ1bmN0aW9u
LCB1c2UgdGhlIEBweXRlc3QubWFyay5za2lwICIKICAgICAgICAgICAgICAgICAib3IgQHB5dGVz
dC5tYXJrLnNraXBpZiBkZWNvcmF0b3JzIGluc3RlYWQsIGFuZCB0byBza2lwIGEgIgogICAgICAg
ICAgICAgICAgICJtb2R1bGUgdXNlIGBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsue3NraXAsc2tp
cGlmfS4iCi0gICAgICAgICAgICApCisgICAgICAgICAgICApIGZyb20gZQogICAgICAgICBzZWxm
LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmNvbnNpZGVyX21vZHVsZShtb2QpCiAgICAgICAgIHJldHVy
biBtb2QKIAotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgc2V0dXBfbW9kdWxlID0gX2dl
dF94dW5pdF9zZXR1cF90ZWFyZG93bihzZWxmLm9iaiwgInNldFVwTW9kdWxlIikKLSAgICAgICAg
aWYgc2V0dXBfbW9kdWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZXR1cF9tb2R1bGUgPSBfZ2V0
X3h1bml0X3NldHVwX3RlYXJkb3duKHNlbGYub2JqLCAic2V0dXBfbW9kdWxlIikKKworY2xhc3Mg
UGFja2FnZShNb2R1bGUpOgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAg
ICAgZnNwYXRoOiBweS5wYXRoLmxvY2FsLAorICAgICAgICBwYXJlbnQ6IG5vZGVzLkNvbGxlY3Rv
ciwKKyAgICAgICAgIyBOT1RFOiBmb2xsb3dpbmcgYXJncyBhcmUgdW51c2VkOgorICAgICAgICBj
b25maWc9Tm9uZSwKKyAgICAgICAgc2Vzc2lvbj1Ob25lLAorICAgICAgICBub2RlaWQ9Tm9uZSwK
KyAgICApIC0+IE5vbmU6CisgICAgICAgICMgTk9URTogQ291bGQgYmUganVzdCB0aGUgZm9sbG93
aW5nLCBidXQga2VwdCBhcy1pcyBmb3IgY29tcGF0LgorICAgICAgICAjIG5vZGVzLkZTQ29sbGVj
dG9yLl9faW5pdF9fKHNlbGYsIGZzcGF0aCwgcGFyZW50PXBhcmVudCkKKyAgICAgICAgc2Vzc2lv
biA9IHBhcmVudC5zZXNzaW9uCisgICAgICAgIG5vZGVzLkZTQ29sbGVjdG9yLl9faW5pdF9fKAor
ICAgICAgICAgICAgc2VsZiwgZnNwYXRoLCBwYXJlbnQ9cGFyZW50LCBjb25maWc9Y29uZmlnLCBz
ZXNzaW9uPXNlc3Npb24sIG5vZGVpZD1ub2RlaWQKKyAgICAgICAgKQorICAgICAgICBzZWxmLm5h
bWUgPSBvcy5wYXRoLmJhc2VuYW1lKHN0cihmc3BhdGguZGlybmFtZSkpCisKKyAgICBkZWYgc2V0
dXAoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIyBOb3QgdXNpbmcgZml4dHVyZXMgdG8gY2FsbCBz
ZXR1cF9tb2R1bGUgaGVyZSBiZWNhdXNlIGF1dG91c2UgZml4dHVyZXMKKyAgICAgICAgIyBmcm9t
IHBhY2thZ2VzIGFyZSBub3QgY2FsbGVkIGF1dG9tYXRpY2FsbHkgKCM0MDg1KS4KKyAgICAgICAg
c2V0dXBfbW9kdWxlID0gX2dldF9maXJzdF9ub25fZml4dHVyZV9mdW5jKAorICAgICAgICAgICAg
c2VsZi5vYmosICgic2V0VXBNb2R1bGUiLCAic2V0dXBfbW9kdWxlIikKKyAgICAgICAgKQogICAg
ICAgICBpZiBzZXR1cF9tb2R1bGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cF9tb2R1
bGUoKQorICAgICAgICAgICAgX2NhbGxfd2l0aF9vcHRpb25hbF9hcmd1bWVudChzZXR1cF9tb2R1
bGUsIHNlbGYub2JqKQogCi0gICAgICAgIHRlYXJkb3duX21vZHVsZSA9IF9nZXRfeHVuaXRfc2V0
dXBfdGVhcmRvd24oc2VsZi5vYmosICJ0ZWFyRG93bk1vZHVsZSIpCi0gICAgICAgIGlmIHRlYXJk
b3duX21vZHVsZSBpcyBOb25lOgotICAgICAgICAgICAgdGVhcmRvd25fbW9kdWxlID0gX2dldF94
dW5pdF9zZXR1cF90ZWFyZG93bihzZWxmLm9iaiwgInRlYXJkb3duX21vZHVsZSIpCisgICAgICAg
IHRlYXJkb3duX21vZHVsZSA9IF9nZXRfZmlyc3Rfbm9uX2ZpeHR1cmVfZnVuYygKKyAgICAgICAg
ICAgIHNlbGYub2JqLCAoInRlYXJEb3duTW9kdWxlIiwgInRlYXJkb3duX21vZHVsZSIpCisgICAg
ICAgICkKICAgICAgICAgaWYgdGVhcmRvd25fbW9kdWxlIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgc2VsZi5hZGRmaW5hbGl6ZXIodGVhcmRvd25fbW9kdWxlKQorICAgICAgICAgICAgZnVuYyA9
IHBhcnRpYWwoX2NhbGxfd2l0aF9vcHRpb25hbF9hcmd1bWVudCwgdGVhcmRvd25fbW9kdWxlLCBz
ZWxmLm9iaikKKyAgICAgICAgICAgIHNlbGYuYWRkZmluYWxpemVyKGZ1bmMpCiAKKyAgICBkZWYg
Z2V0aG9va3Byb3h5KHNlbGYsIGZzcGF0aDogcHkucGF0aC5sb2NhbCk6CisgICAgICAgIHdhcm5p
bmdzLndhcm4oRlNDT0xMRUNUT1JfR0VUSE9PS1BST1hZX0lTSU5JVFBBVEgsIHN0YWNrbGV2ZWw9
MikKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vzc2lvbi5nZXRob29rcHJveHkoZnNwYXRoKQogCi1k
ZWYgX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihob2xkZXIsIGF0dHJfbmFtZSwgcGFyYW1fb2Jq
PU5vbmUpOgotICAgICIiIgotICAgIFJldHVybiBhIGNhbGxhYmxlIHRvIHBlcmZvcm0geHVuaXQt
c3R5bGUgc2V0dXAgb3IgdGVhcmRvd24gaWYKLSAgICB0aGUgZnVuY3Rpb24gZXhpc3RzIGluIHRo
ZSBgYGhvbGRlcmBgIG9iamVjdC4KLSAgICBUaGUgYGBwYXJhbV9vYmpgYCBwYXJhbWV0ZXIgaXMg
dGhlIHBhcmFtZXRlciB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24KLSAgICB3
aGVuIHRoZSBjYWxsYWJsZSBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGRlZmF1bHRzIHRv
IHRoZSBgYGhvbGRlcmBgIG9iamVjdC4KLSAgICBSZXR1cm4gYGBOb25lYGAgaWYgYSBzdWl0YWJs
ZSBjYWxsYWJsZSBpcyBub3QgZm91bmQuCi0gICAgIiIiCi0gICAgcGFyYW1fb2JqID0gcGFyYW1f
b2JqIGlmIHBhcmFtX29iaiBpcyBub3QgTm9uZSBlbHNlIGhvbGRlcgotICAgIHJlc3VsdCA9IF9n
ZXRfeHVuaXRfZnVuYyhob2xkZXIsIGF0dHJfbmFtZSkKLSAgICBpZiByZXN1bHQgaXMgbm90IE5v
bmU6Ci0gICAgICAgIGFyZ19jb3VudCA9IHJlc3VsdC5fX2NvZGVfXy5jb19hcmdjb3VudAotICAg
ICAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKHJlc3VsdCk6Ci0gICAgICAgICAgICBhcmdfY291bnQg
LT0gMQotICAgICAgICBpZiBhcmdfY291bnQ6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhOiBy
ZXN1bHQocGFyYW1fb2JqKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dAorICAgIGRlZiBpc2luaXRwYXRoKHNlbGYsIHBhdGg6IHB5LnBhdGgubG9jYWwpIC0+IGJvb2w6
CisgICAgICAgIHdhcm5pbmdzLndhcm4oRlNDT0xMRUNUT1JfR0VUSE9PS1BST1hZX0lTSU5JVFBB
VEgsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vzc2lvbi5pc2luaXRwYXRo
KHBhdGgpCisKKyAgICBkZWYgX3JlY3Vyc2Uoc2VsZiwgZGlyZW50cnk6ICJvcy5EaXJFbnRyeVtz
dHJdIikgLT4gYm9vbDoKKyAgICAgICAgaWYgZGlyZW50cnkubmFtZSA9PSAiX19weWNhY2hlX18i
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHBhdGggPSBweS5wYXRoLmxvY2Fs
KGRpcmVudHJ5LnBhdGgpCisgICAgICAgIGlob29rID0gc2VsZi5zZXNzaW9uLmdldGhvb2twcm94
eShwYXRoLmRpcnBhdGgoKSkKKyAgICAgICAgaWYgaWhvb2sucHl0ZXN0X2lnbm9yZV9jb2xsZWN0
KHBhdGg9cGF0aCwgY29uZmlnPXNlbGYuY29uZmlnKToKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBub3JlY3Vyc2VwYXR0ZXJucyA9IHNlbGYuY29uZmlnLmdldGluaSgibm9yZWN1
cnNlZGlycyIpCisgICAgICAgIGlmIGFueShwYXRoLmNoZWNrKGZubWF0Y2g9cGF0KSBmb3IgcGF0
IGluIG5vcmVjdXJzZXBhdHRlcm5zKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9jb2xsZWN0ZmlsZSgKKyAgICAgICAgc2VsZiwgcGF0
aDogcHkucGF0aC5sb2NhbCwgaGFuZGxlX2R1cGVzOiBib29sID0gVHJ1ZQorICAgICkgLT4gdHlw
aW5nLlNlcXVlbmNlW25vZGVzLkNvbGxlY3Rvcl06CisgICAgICAgIGFzc2VydCAoCisgICAgICAg
ICAgICBwYXRoLmlzZmlsZSgpCisgICAgICAgICksICJ7IXJ9IGlzIG5vdCBhIGZpbGUgKGlzZGly
PXshcn0sIGV4aXN0cz17IXJ9LCBpc2xpbms9eyFyfSkiLmZvcm1hdCgKKyAgICAgICAgICAgIHBh
dGgsIHBhdGguaXNkaXIoKSwgcGF0aC5leGlzdHMoKSwgcGF0aC5pc2xpbmsoKQorICAgICAgICAp
CisgICAgICAgIGlob29rID0gc2VsZi5zZXNzaW9uLmdldGhvb2twcm94eShwYXRoKQorICAgICAg
ICBpZiBub3Qgc2VsZi5zZXNzaW9uLmlzaW5pdHBhdGgocGF0aCk6CisgICAgICAgICAgICBpZiBp
aG9vay5weXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aD1wYXRoLCBjb25maWc9c2VsZi5jb25maWcp
OgorICAgICAgICAgICAgICAgIHJldHVybiAoKQorCisgICAgICAgIGlmIGhhbmRsZV9kdXBlczoK
KyAgICAgICAgICAgIGtlZXBkdXBsaWNhdGVzID0gc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJrZWVw
ZHVwbGljYXRlcyIpCisgICAgICAgICAgICBpZiBub3Qga2VlcGR1cGxpY2F0ZXM6CisgICAgICAg
ICAgICAgICAgZHVwbGljYXRlX3BhdGhzID0gc2VsZi5jb25maWcucGx1Z2lubWFuYWdlci5fZHVw
bGljYXRlcGF0aHMKKyAgICAgICAgICAgICAgICBpZiBwYXRoIGluIGR1cGxpY2F0ZV9wYXRoczoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgZHVwbGljYXRlX3BhdGhzLmFkZChwYXRoKQorCisgICAgICAgIHJl
dHVybiBpaG9vay5weXRlc3RfY29sbGVjdF9maWxlKHBhdGg9cGF0aCwgcGFyZW50PXNlbGYpICAj
IHR5cGU6IGlnbm9yZVtuby1hbnktcmV0dXJuXQorCisgICAgZGVmIGNvbGxlY3Qoc2VsZikgLT4g
SXRlcmFibGVbVW5pb25bbm9kZXMuSXRlbSwgbm9kZXMuQ29sbGVjdG9yXV06CisgICAgICAgIHRo
aXNfcGF0aCA9IHNlbGYuZnNwYXRoLmRpcnBhdGgoKQorICAgICAgICBpbml0X21vZHVsZSA9IHRo
aXNfcGF0aC5qb2luKCJfX2luaXRfXy5weSIpCisgICAgICAgIGlmIGluaXRfbW9kdWxlLmNoZWNr
KGZpbGU9MSkgYW5kIHBhdGhfbWF0Y2hlc19wYXR0ZXJucygKKyAgICAgICAgICAgIGluaXRfbW9k
dWxlLCBzZWxmLmNvbmZpZy5nZXRpbmkoInB5dGhvbl9maWxlcyIpCisgICAgICAgICk6CisgICAg
ICAgICAgICB5aWVsZCBNb2R1bGUuZnJvbV9wYXJlbnQoc2VsZiwgZnNwYXRoPWluaXRfbW9kdWxl
KQorICAgICAgICBwa2dfcHJlZml4ZXMgPSBzZXQoKSAgIyB0eXBlOiBTZXRbcHkucGF0aC5sb2Nh
bF0KKyAgICAgICAgZm9yIGRpcmVudHJ5IGluIHZpc2l0KHN0cih0aGlzX3BhdGgpLCByZWN1cnNl
PXNlbGYuX3JlY3Vyc2UpOgorICAgICAgICAgICAgcGF0aCA9IHB5LnBhdGgubG9jYWwoZGlyZW50
cnkucGF0aCkKKworICAgICAgICAgICAgIyBXZSB3aWxsIHZpc2l0IG91ciBvd24gX19pbml0X18u
cHkgZmlsZSwgaW4gd2hpY2ggY2FzZSB3ZSBza2lwIGl0LgorICAgICAgICAgICAgaWYgZGlyZW50
cnkuaXNfZmlsZSgpOgorICAgICAgICAgICAgICAgIGlmIGRpcmVudHJ5Lm5hbWUgPT0gIl9faW5p
dF9fLnB5IiBhbmQgcGF0aC5kaXJwYXRoKCkgPT0gdGhpc19wYXRoOgorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgICAgICBwYXJ0c18gPSBwYXJ0cyhkaXJlbnRyeS5wYXRo
KQorICAgICAgICAgICAgaWYgYW55KAorICAgICAgICAgICAgICAgIHN0cihwa2dfcHJlZml4KSBp
biBwYXJ0c18gYW5kIHBrZ19wcmVmaXguam9pbigiX19pbml0X18ucHkiKSAhPSBwYXRoCisgICAg
ICAgICAgICAgICAgZm9yIHBrZ19wcmVmaXggaW4gcGtnX3ByZWZpeGVzCisgICAgICAgICAgICAp
OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIGRpcmVudHJ5Lmlz
X2ZpbGUoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX2NvbGxlY3RmaWxlKHBh
dGgpCisgICAgICAgICAgICBlbGlmIG5vdCBkaXJlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAg
ICAgICAjIEJyb2tlbiBzeW1saW5rIG9yIGludmFsaWQvbWlzc2luZyBmaWxlLgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIHBhdGguam9pbigiX19pbml0X18ucHki
KS5jaGVjayhmaWxlPTEpOgorICAgICAgICAgICAgICAgIHBrZ19wcmVmaXhlcy5hZGQocGF0aCkK
KworCitkZWYgX2NhbGxfd2l0aF9vcHRpb25hbF9hcmd1bWVudChmdW5jLCBhcmcpIC0+IE5vbmU6
CisgICAgIiIiQ2FsbCB0aGUgZ2l2ZW4gZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnQg
aWYgZnVuYyBhY2NlcHRzIG9uZSBhcmd1bWVudCwgb3RoZXJ3aXNlCisgICAgY2FsbHMgZnVuYyB3
aXRob3V0IGFyZ3VtZW50cy4iIiIKKyAgICBhcmdfY291bnQgPSBmdW5jLl9fY29kZV9fLmNvX2Fy
Z2NvdW50CisgICAgaWYgaW5zcGVjdC5pc21ldGhvZChmdW5jKToKKyAgICAgICAgYXJnX2NvdW50
IC09IDEKKyAgICBpZiBhcmdfY291bnQ6CisgICAgICAgIGZ1bmMoYXJnKQorICAgIGVsc2U6Cisg
ICAgICAgIGZ1bmMoKQogCiAKLWRlZiBfZ2V0X3h1bml0X2Z1bmMob2JqLCBuYW1lKToKK2RlZiBf
Z2V0X2ZpcnN0X25vbl9maXh0dXJlX2Z1bmMob2JqOiBvYmplY3QsIG5hbWVzOiBJdGVyYWJsZVtz
dHJdKToKICAgICAiIiJSZXR1cm4gdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3Qg
dG8gYmUgdXNlZCBhcyBhIHNldHVwL3RlYXJkb3duCi0gICAgeHVuaXQtc3R5bGUgZnVuY3Rpb24s
IGJ1dCBvbmx5IGlmIG5vdCBtYXJrZWQgYXMgYSBmaXh0dXJlIHRvCi0gICAgYXZvaWQgY2FsbGlu
ZyBpdCB0d2ljZS4KLSAgICAiIiIKLSAgICBtZXRoID0gZ2V0YXR0cihvYmosIG5hbWUsIE5vbmUp
Ci0gICAgaWYgZml4dHVyZXMuZ2V0Zml4dHVyZW1hcmtlcihtZXRoKSBpcyBOb25lOgotICAgICAg
ICByZXR1cm4gbWV0aAorICAgIHh1bml0LXN0eWxlIGZ1bmN0aW9uLCBidXQgb25seSBpZiBub3Qg
bWFya2VkIGFzIGEgZml4dHVyZSB0byBhdm9pZCBjYWxsaW5nIGl0IHR3aWNlLiIiIgorICAgIGZv
ciBuYW1lIGluIG5hbWVzOgorICAgICAgICBtZXRoID0gZ2V0YXR0cihvYmosIG5hbWUsIE5vbmUp
CisgICAgICAgIGlmIG1ldGggaXMgbm90IE5vbmUgYW5kIGZpeHR1cmVzLmdldGZpeHR1cmVtYXJr
ZXIobWV0aCkgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBtZXRoCiAKIAogY2xhc3MgQ2xh
c3MoUHlDb2xsZWN0b3IpOgotICAgICIiIiBDb2xsZWN0b3IgZm9yIHRlc3QgbWV0aG9kcy4gIiIi
CisgICAgIiIiQ29sbGVjdG9yIGZvciB0ZXN0IG1ldGhvZHMuIiIiCiAKLSAgICBkZWYgY29sbGVj
dChzZWxmKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9wYXJlbnQoY2xzLCBwYXJl
bnQsICosIG5hbWUsIG9iaj1Ob25lKToKKyAgICAgICAgIiIiVGhlIHB1YmxpYyBjb25zdHJ1Y3Rv
ci4iIiIKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuZnJvbV9wYXJlbnQobmFtZT1uYW1lLCBwYXJl
bnQ9cGFyZW50KQorCisgICAgZGVmIGNvbGxlY3Qoc2VsZikgLT4gSXRlcmFibGVbVW5pb25bbm9k
ZXMuSXRlbSwgbm9kZXMuQ29sbGVjdG9yXV06CiAgICAgICAgIGlmIG5vdCBzYWZlX2dldGF0dHIo
c2VsZi5vYmosICJfX3Rlc3RfXyIsIFRydWUpOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAg
ICAgIGlmIGhhc2luaXQoc2VsZi5vYmopOgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50
IGlzIG5vdCBOb25lCiAgICAgICAgICAgICBzZWxmLndhcm4oCi0gICAgICAgICAgICAgICAgIkMx
IiwKLSAgICAgICAgICAgICAgICAiY2Fubm90IGNvbGxlY3QgdGVzdCBjbGFzcyAlciBiZWNhdXNl
IGl0IGhhcyBhICIKLSAgICAgICAgICAgICAgICAiX19pbml0X18gY29uc3RydWN0b3IiICUgc2Vs
Zi5vYmouX19uYW1lX18sCisgICAgICAgICAgICAgICAgUHl0ZXN0Q29sbGVjdGlvbldhcm5pbmco
CisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29sbGVjdCB0ZXN0IGNsYXNzICVyIGJlY2F1
c2UgaXQgaGFzIGEgIgorICAgICAgICAgICAgICAgICAgICAiX19pbml0X18gY29uc3RydWN0b3Ig
KGZyb206ICVzKSIKKyAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5vYmouX19uYW1lX18sIHNl
bGYucGFyZW50Lm5vZGVpZCkKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAg
ICAgICAgICByZXR1cm4gW10KICAgICAgICAgZWxpZiBoYXNuZXcoc2VsZi5vYmopOgorICAgICAg
ICAgICAgYXNzZXJ0IHNlbGYucGFyZW50IGlzIG5vdCBOb25lCiAgICAgICAgICAgICBzZWxmLndh
cm4oCi0gICAgICAgICAgICAgICAgIkMxIiwKLSAgICAgICAgICAgICAgICAiY2Fubm90IGNvbGxl
Y3QgdGVzdCBjbGFzcyAlciBiZWNhdXNlIGl0IGhhcyBhICIKLSAgICAgICAgICAgICAgICAiX19u
ZXdfXyBjb25zdHJ1Y3RvciIgJSBzZWxmLm9iai5fX25hbWVfXywKKyAgICAgICAgICAgICAgICBQ
eXRlc3RDb2xsZWN0aW9uV2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb2xs
ZWN0IHRlc3QgY2xhc3MgJXIgYmVjYXVzZSBpdCBoYXMgYSAiCisgICAgICAgICAgICAgICAgICAg
ICJfX25ld19fIGNvbnN0cnVjdG9yIChmcm9tOiAlcykiCisgICAgICAgICAgICAgICAgICAgICUg
KHNlbGYub2JqLl9fbmFtZV9fLCBzZWxmLnBhcmVudC5ub2RlaWQpCisgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgKQogICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIHJldHVybiBb
c2VsZi5fZ2V0Y3VzdG9tY2xhc3MoIkluc3RhbmNlIikobmFtZT0iKCkiLCBwYXJlbnQ9c2VsZild
Ci0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIHNldHVwX2NsYXNzID0gX2dldF94dW5p
dF9mdW5jKHNlbGYub2JqLCAic2V0dXBfY2xhc3MiKQotICAgICAgICBpZiBzZXR1cF9jbGFzcyBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHNldHVwX2NsYXNzID0gZ2V0YXR0cihzZXR1cF9jbGFz
cywgImltX2Z1bmMiLCBzZXR1cF9jbGFzcykKLSAgICAgICAgICAgIHNldHVwX2NsYXNzID0gZ2V0
YXR0cihzZXR1cF9jbGFzcywgIl9fZnVuY19fIiwgc2V0dXBfY2xhc3MpCi0gICAgICAgICAgICBz
ZXR1cF9jbGFzcyhzZWxmLm9iaikKLQotICAgICAgICBmaW5fY2xhc3MgPSBnZXRhdHRyKHNlbGYu
b2JqLCAidGVhcmRvd25fY2xhc3MiLCBOb25lKQotICAgICAgICBpZiBmaW5fY2xhc3MgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBmaW5fY2xhc3MgPSBnZXRhdHRyKGZpbl9jbGFzcywgImltX2Z1
bmMiLCBmaW5fY2xhc3MpCi0gICAgICAgICAgICBmaW5fY2xhc3MgPSBnZXRhdHRyKGZpbl9jbGFz
cywgIl9fZnVuY19fIiwgZmluX2NsYXNzKQotICAgICAgICAgICAgc2VsZi5hZGRmaW5hbGl6ZXIo
bGFtYmRhOiBmaW5fY2xhc3Moc2VsZi5vYmopKQogCisgICAgICAgIHNlbGYuX2luamVjdF9zZXR1
cF9jbGFzc19maXh0dXJlKCkKKyAgICAgICAgc2VsZi5faW5qZWN0X3NldHVwX21ldGhvZF9maXh0
dXJlKCkKIAotY2xhc3MgSW5zdGFuY2UoUHlDb2xsZWN0b3IpOgotICAgIF9BTExPV19NQVJLRVJT
ID0gRmFsc2UgICMgaGFjaywgZGVzdHJveSBsYXRlcgotICAgICMgaW5zdGFuY2VzIHNoYXJlIHRo
ZSBvYmplY3Qgd2l0aCB0aGVpciBwYXJlbnRzIGluIGEgd2F5Ci0gICAgIyB0aGF0IGR1cGxpY2F0
ZXMgbWFya2VycyBpbnN0YW5jZXMgaWYgbm90IHRha2VuIG91dAotICAgICMgY2FuIGJlIHJlbW92
ZWQgYXQgbm9kZSBzdHJ1Y3V0cmUgcmVvcmdhbml6YXRpb24gdGltZQorICAgICAgICByZXR1cm4g
W0luc3RhbmNlLmZyb21fcGFyZW50KHNlbGYsIG5hbWU9IigpIildCiAKLSAgICBkZWYgX2dldG9i
aihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGFyZW50Lm9iaigpCisgICAgZGVmIF9pbmpl
Y3Rfc2V0dXBfY2xhc3NfZml4dHVyZShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJJbmplY3Qg
YSBoaWRkZW4gYXV0b3VzZSwgY2xhc3Mgc2NvcGVkIGZpeHR1cmUgaW50byB0aGUgY29sbGVjdGVk
IGNsYXNzIG9iamVjdAorICAgICAgICB0aGF0IGludm9rZXMgc2V0dXBfY2xhc3MvdGVhcmRvd25f
Y2xhc3MgaWYgZWl0aGVyIG9yIGJvdGggYXJlIGF2YWlsYWJsZS4KIAotICAgIGRlZiBjb2xsZWN0
KHNlbGYpOgotICAgICAgICBzZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLnBhcnNlZmFjdG9y
aWVzKHNlbGYpCi0gICAgICAgIHJldHVybiBzdXBlcihJbnN0YW5jZSwgc2VsZikuY29sbGVjdCgp
CisgICAgICAgIFVzaW5nIGEgZml4dHVyZSB0byBpbnZva2UgdGhpcyBtZXRob2RzIGVuc3VyZXMg
d2UgcGxheSBuaWNlbHkgYW5kIHVuc3VycHJpc2luZ2x5IHdpdGgKKyAgICAgICAgb3RoZXIgZml4
dHVyZXMgKCM1MTcpLgorICAgICAgICAiIiIKKyAgICAgICAgc2V0dXBfY2xhc3MgPSBfZ2V0X2Zp
cnN0X25vbl9maXh0dXJlX2Z1bmMoc2VsZi5vYmosICgic2V0dXBfY2xhc3MiLCkpCisgICAgICAg
IHRlYXJkb3duX2NsYXNzID0gZ2V0YXR0cihzZWxmLm9iaiwgInRlYXJkb3duX2NsYXNzIiwgTm9u
ZSkKKyAgICAgICAgaWYgc2V0dXBfY2xhc3MgaXMgTm9uZSBhbmQgdGVhcmRvd25fY2xhc3MgaXMg
Tm9uZToKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIG5ld2luc3RhbmNlKHNlbGYpOgot
ICAgICAgICBzZWxmLm9iaiA9IHNlbGYuX2dldG9iaigpCi0gICAgICAgIHJldHVybiBzZWxmLm9i
agorICAgICAgICBAZml4dHVyZXMuZml4dHVyZShhdXRvdXNlPVRydWUsIHNjb3BlPSJjbGFzcyIp
CisgICAgICAgIGRlZiB4dW5pdF9zZXR1cF9jbGFzc19maXh0dXJlKGNscykgLT4gR2VuZXJhdG9y
W05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICAgICAgaWYgc2V0dXBfY2xhc3MgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgZnVuYyA9IGdldGltZnVuYyhzZXR1cF9jbGFzcykKKyAgICAg
ICAgICAgICAgICBfY2FsbF93aXRoX29wdGlvbmFsX2FyZ3VtZW50KGZ1bmMsIHNlbGYub2JqKQor
ICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGlmIHRlYXJkb3duX2NsYXNzIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRpbWZ1bmModGVhcmRvd25fY2xhc3MpCisg
ICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9vcHRpb25hbF9hcmd1bWVudChmdW5jLCBzZWxmLm9i
aikKIAorICAgICAgICBzZWxmLm9iai5fX3B5dGVzdF9zZXR1cF9jbGFzcyA9IHh1bml0X3NldHVw
X2NsYXNzX2ZpeHR1cmUKIAotY2xhc3MgRnVuY3Rpb25NaXhpbihQeW9iak1peGluKToKLSAgICAi
IiIgbWl4aW4gZm9yIHRoZSBjb2RlIGNvbW1vbiB0byBGdW5jdGlvbiBhbmQgR2VuZXJhdG9yLgot
ICAgICIiIgorICAgIGRlZiBfaW5qZWN0X3NldHVwX21ldGhvZF9maXh0dXJlKHNlbGYpIC0+IE5v
bmU6CisgICAgICAgICIiIkluamVjdCBhIGhpZGRlbiBhdXRvdXNlLCBmdW5jdGlvbiBzY29wZWQg
Zml4dHVyZSBpbnRvIHRoZSBjb2xsZWN0ZWQgY2xhc3Mgb2JqZWN0CisgICAgICAgIHRoYXQgaW52
b2tlcyBzZXR1cF9tZXRob2QvdGVhcmRvd25fbWV0aG9kIGlmIGVpdGhlciBvciBib3RoIGFyZSBh
dmFpbGFibGUuCiAKLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgICIiIiBwZXJmb3JtIHNl
dHVwIGZvciB0aGlzIHRlc3QgZnVuY3Rpb24uICIiIgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYs
ICJfcHJlc2VydmVkcGFyZW50Iik6Ci0gICAgICAgICAgICBvYmogPSBzZWxmLl9wcmVzZXJ2ZWRw
YXJlbnQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYucGFyZW50LCBJbnN0YW5jZSk6Ci0g
ICAgICAgICAgICBvYmogPSBzZWxmLnBhcmVudC5uZXdpbnN0YW5jZSgpCi0gICAgICAgICAgICBz
ZWxmLm9iaiA9IHNlbGYuX2dldG9iaigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvYmog
PSBzZWxmLnBhcmVudC5vYmoKLSAgICAgICAgaWYgaW5zcGVjdC5pc21ldGhvZChzZWxmLm9iaik6
Ci0gICAgICAgICAgICBzZXR1cF9uYW1lID0gInNldHVwX21ldGhvZCIKLSAgICAgICAgICAgIHRl
YXJkb3duX25hbWUgPSAidGVhcmRvd25fbWV0aG9kIgotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc2V0dXBfbmFtZSA9ICJzZXR1cF9mdW5jdGlvbiIKLSAgICAgICAgICAgIHRlYXJkb3duX25h
bWUgPSAidGVhcmRvd25fZnVuY3Rpb24iCi0gICAgICAgIHNldHVwX2Z1bmNfb3JfbWV0aG9kID0g
X2dldF94dW5pdF9zZXR1cF90ZWFyZG93bigKLSAgICAgICAgICAgIG9iaiwgc2V0dXBfbmFtZSwg
cGFyYW1fb2JqPXNlbGYub2JqCi0gICAgICAgICkKLSAgICAgICAgaWYgc2V0dXBfZnVuY19vcl9t
ZXRob2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cF9mdW5jX29yX21ldGhvZCgpCi0g
ICAgICAgIHRlYXJkb3duX2Z1bmNfb3JfbWV0aG9kID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93
bigKLSAgICAgICAgICAgIG9iaiwgdGVhcmRvd25fbmFtZSwgcGFyYW1fb2JqPXNlbGYub2JqCi0g
ICAgICAgICkKLSAgICAgICAgaWYgdGVhcmRvd25fZnVuY19vcl9tZXRob2QgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBzZWxmLmFkZGZpbmFsaXplcih0ZWFyZG93bl9mdW5jX29yX21ldGhvZCkK
KyAgICAgICAgVXNpbmcgYSBmaXh0dXJlIHRvIGludm9rZSB0aGlzIG1ldGhvZHMgZW5zdXJlcyB3
ZSBwbGF5IG5pY2VseSBhbmQgdW5zdXJwcmlzaW5nbHkgd2l0aAorICAgICAgICBvdGhlciBmaXh0
dXJlcyAoIzUxNykuCisgICAgICAgICIiIgorICAgICAgICBzZXR1cF9tZXRob2QgPSBfZ2V0X2Zp
cnN0X25vbl9maXh0dXJlX2Z1bmMoc2VsZi5vYmosICgic2V0dXBfbWV0aG9kIiwpKQorICAgICAg
ICB0ZWFyZG93bl9tZXRob2QgPSBnZXRhdHRyKHNlbGYub2JqLCAidGVhcmRvd25fbWV0aG9kIiwg
Tm9uZSkKKyAgICAgICAgaWYgc2V0dXBfbWV0aG9kIGlzIE5vbmUgYW5kIHRlYXJkb3duX21ldGhv
ZCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICBkZWYgX3BydW5ldHJhY2ViYWNr
KHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJfb2JqIikgYW5kIG5v
dCBzZWxmLmNvbmZpZy5vcHRpb24uZnVsbHRyYWNlOgotICAgICAgICAgICAgY29kZSA9IF9weXRl
c3QuX2NvZGUuQ29kZShnZXRfcmVhbF9mdW5jKHNlbGYub2JqKSkKLSAgICAgICAgICAgIHBhdGgs
IGZpcnN0bGluZW5vID0gY29kZS5wYXRoLCBjb2RlLmZpcnN0bGluZW5vCi0gICAgICAgICAgICB0
cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjawotICAgICAgICAgICAgbnRyYWNlYmFjayA9IHRy
YWNlYmFjay5jdXQocGF0aD1wYXRoLCBmaXJzdGxpbmVubz1maXJzdGxpbmVubykKLSAgICAgICAg
ICAgIGlmIG50cmFjZWJhY2sgPT0gdHJhY2ViYWNrOgotICAgICAgICAgICAgICAgIG50cmFjZWJh
Y2sgPSBudHJhY2ViYWNrLmN1dChwYXRoPXBhdGgpCi0gICAgICAgICAgICAgICAgaWYgbnRyYWNl
YmFjayA9PSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSBudHJh
Y2ViYWNrLmZpbHRlcihmaWx0ZXJfdHJhY2ViYWNrKQotICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgbnRyYWNlYmFjazoKLSAgICAgICAgICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSB0cmFj
ZWJhY2sKKyAgICAgICAgQGZpeHR1cmVzLmZpeHR1cmUoYXV0b3VzZT1UcnVlLCBzY29wZT0iZnVu
Y3Rpb24iKQorICAgICAgICBkZWYgeHVuaXRfc2V0dXBfbWV0aG9kX2ZpeHR1cmUoc2VsZiwgcmVx
dWVzdCkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICAgICAgbWV0aG9k
ID0gcmVxdWVzdC5mdW5jdGlvbgorICAgICAgICAgICAgaWYgc2V0dXBfbWV0aG9kIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsICJzZXR1cF9tZXRob2Qi
KQorICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfb3B0aW9uYWxfYXJndW1lbnQoZnVuYywgbWV0
aG9kKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGlmIHRlYXJkb3duX21ldGhvZCBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCAidGVhcmRv
d25fbWV0aG9kIikKKyAgICAgICAgICAgICAgICBfY2FsbF93aXRoX29wdGlvbmFsX2FyZ3VtZW50
KGZ1bmMsIG1ldGhvZCkKIAotICAgICAgICAgICAgZXhjaW5mby50cmFjZWJhY2sgPSBudHJhY2Vi
YWNrLmZpbHRlcigpCi0gICAgICAgICAgICAjIGlzc3VlMzY0OiBtYXJrIGFsbCBidXQgZmlyc3Qg
YW5kIGxhc3QgZnJhbWVzIHRvCi0gICAgICAgICAgICAjIG9ubHkgc2hvdyBhIHNpbmdsZS1saW5l
IG1lc3NhZ2UgZm9yIGVhY2ggZnJhbWUKLSAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlv
bi50YnN0eWxlID09ICJhdXRvIjoKLSAgICAgICAgICAgICAgICBpZiBsZW4oZXhjaW5mby50cmFj
ZWJhY2spID4gMjoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGV4Y2luZm8udHJh
Y2ViYWNrWzE6LTFdOgotICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2V0X3JlcHJfc3R5
bGUoInNob3J0IikKKyAgICAgICAgc2VsZi5vYmouX19weXRlc3Rfc2V0dXBfbWV0aG9kID0geHVu
aXRfc2V0dXBfbWV0aG9kX2ZpeHR1cmUKIAotICAgIGRlZiBfcmVwcl9mYWlsdXJlX3B5KHNlbGYs
IGV4Y2luZm8sIHN0eWxlPSJsb25nIik6Ci0gICAgICAgIGlmIGV4Y2luZm8uZXJyaXNpbnN0YW5j
ZShmYWlsLkV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBpZiBub3QgZXhjaW5mby52YWx1ZS5weXRy
YWNlOgotICAgICAgICAgICAgICAgIHJldHVybiBweS5fYnVpbHRpbi5fdG90ZXh0KGV4Y2luZm8u
dmFsdWUpCi0gICAgICAgIHJldHVybiBzdXBlcihGdW5jdGlvbk1peGluLCBzZWxmKS5fcmVwcl9m
YWlsdXJlX3B5KGV4Y2luZm8sIHN0eWxlPXN0eWxlKQogCi0gICAgZGVmIHJlcHJfZmFpbHVyZShz
ZWxmLCBleGNpbmZvLCBvdXRlcnI9Tm9uZSk6Ci0gICAgICAgIGFzc2VydCBvdXRlcnIgaXMgTm9u
ZSwgIlhYWCBvdXRlcnIgdXNhZ2UgaXMgZGVwcmVjYXRlZCIKLSAgICAgICAgc3R5bGUgPSBzZWxm
LmNvbmZpZy5vcHRpb24udGJzdHlsZQotICAgICAgICBpZiBzdHlsZSA9PSAiYXV0byI6Ci0gICAg
ICAgICAgICBzdHlsZSA9ICJsb25nIgotICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9mYWlsdXJl
X3B5KGV4Y2luZm8sIHN0eWxlPXN0eWxlKQorY2xhc3MgSW5zdGFuY2UoUHlDb2xsZWN0b3IpOgor
ICAgIF9BTExPV19NQVJLRVJTID0gRmFsc2UgICMgaGFjaywgZGVzdHJveSBsYXRlcgorICAgICMg
SW5zdGFuY2VzIHNoYXJlIHRoZSBvYmplY3Qgd2l0aCB0aGVpciBwYXJlbnRzIGluIGEgd2F5Cisg
ICAgIyB0aGF0IGR1cGxpY2F0ZXMgbWFya2VycyBpbnN0YW5jZXMgaWYgbm90IHRha2VuIG91dAor
ICAgICMgY2FuIGJlIHJlbW92ZWQgYXQgbm9kZSBzdHJ1Y3R1cmUgcmVvcmdhbml6YXRpb24gdGlt
ZS4KIAorICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgorICAgICAgICAjIFRPRE86IEltcHJvdmUgdGhl
IHR5cGUgb2YgYHBhcmVudGAgc3VjaCB0aGF0IGFzc2VydC9pZ25vcmUgYXJlbid0IG5lZWRlZC4K
KyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50IGlzIG5vdCBOb25lCisgICAgICAgIG9iaiA9IHNl
bGYucGFyZW50Lm9iaiAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAgICByZXR1
cm4gb2JqKCkKIAotY2xhc3MgR2VuZXJhdG9yKEZ1bmN0aW9uTWl4aW4sIFB5Q29sbGVjdG9yKToK
LQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICAjIHRlc3QgZ2VuZXJhdG9ycyBhcmUg
c2VlbiBhcyBjb2xsZWN0b3JzIGJ1dCB0aGV5IGFsc28KLSAgICAgICAgIyBpbnZva2Ugc2V0dXAv
dGVhcmRvd24gb24gcG9wdWxhciByZXF1ZXN0Ci0gICAgICAgICMgKGluZHVjZWQgYnkgdGhlIGNv
bW1vbiAidGVzdF8qIiBuYW1pbmcgc2hhcmVkIHdpdGggbm9ybWFsIHRlc3RzKQotICAgICAgICBm
cm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKLQotICAgICAgICBzZWxmLnNlc3Npb24uX3Nl
dHVwc3RhdGUucHJlcGFyZShzZWxmKQotICAgICAgICAjIHNlZSBGdW5jdGlvbk1peGluLnNldHVw
IGFuZCB0ZXN0X3NldHVwc3RhdGVfaXNfcHJlc2VydmVkXzEzNAotICAgICAgICBzZWxmLl9wcmVz
ZXJ2ZWRwYXJlbnQgPSBzZWxmLnBhcmVudC5vYmoKLSAgICAgICAgdmFsdWVzID0gW10KLSAgICAg
ICAgc2VlbiA9IHt9Ci0gICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShzZWxmLm9iaigpKToK
LSAgICAgICAgICAgIG5hbWUsIGNhbGwsIGFyZ3MgPSBzZWxmLmdldGNhbGxhcmdzKHgpCi0gICAg
ICAgICAgICBpZiBub3QgY2FsbGFibGUoY2FsbCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCIlciB5aWVsZGVkIG5vbiBjYWxsYWJsZSB0ZXN0ICVyIiAlIChzZWxmLm9iaiwgY2Fs
bCkpCi0gICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbmFtZSA9
ICJbJWRdIiAlIGkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICJb
JyVzJ10iICUgbmFtZQotICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICIlciBnZW5lcmF0ZWQg
dGVzdHMgd2l0aCBub24tdW5pcXVlIG5hbWUgJXIiICUgKHNlbGYsIG5hbWUpCi0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgc2VlbltuYW1lXSA9IFRydWUKLSAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQoc2VsZi5GdW5jdGlvbihuYW1lLCBzZWxmLCBhcmdzPWFyZ3MsIGNhbGxvYmo9Y2Fs
bCkpCi0gICAgICAgIHNlbGYud2FybigiQzEiLCBkZXByZWNhdGVkLllJRUxEX1RFU1RTKQotICAg
ICAgICByZXR1cm4gdmFsdWVzCisgICAgZGVmIGNvbGxlY3Qoc2VsZikgLT4gSXRlcmFibGVbVW5p
b25bbm9kZXMuSXRlbSwgbm9kZXMuQ29sbGVjdG9yXV06CisgICAgICAgIHNlbGYuc2Vzc2lvbi5f
Zml4dHVyZW1hbmFnZXIucGFyc2VmYWN0b3JpZXMoc2VsZikKKyAgICAgICAgcmV0dXJuIHN1cGVy
KCkuY29sbGVjdCgpCiAKLSAgICBkZWYgZ2V0Y2FsbGFyZ3Moc2VsZiwgb2JqKToKLSAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2Uob2JqLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIG9iaiA9
IChvYmosKQotICAgICAgICAjIGV4cGxpY2l0IG5hbWluZwotICAgICAgICBpZiBpc2luc3RhbmNl
KG9ialswXSwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBuYW1lID0gb2JqWzBdCi0g
ICAgICAgICAgICBvYmogPSBvYmpbMTpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1l
ID0gTm9uZQotICAgICAgICBjYWxsLCBhcmdzID0gb2JqWzBdLCBvYmpbMTpdCi0gICAgICAgIHJl
dHVybiBuYW1lLCBjYWxsLCBhcmdzCisgICAgZGVmIG5ld2luc3RhbmNlKHNlbGYpOgorICAgICAg
ICBzZWxmLm9iaiA9IHNlbGYuX2dldG9iaigpCisgICAgICAgIHJldHVybiBzZWxmLm9iagogCiAK
LWRlZiBoYXNpbml0KG9iaik6Ci0gICAgaW5pdCA9IGdldGF0dHIob2JqLCAiX19pbml0X18iLCBO
b25lKQorZGVmIGhhc2luaXQob2JqOiBvYmplY3QpIC0+IGJvb2w6CisgICAgaW5pdCA9IGdldGF0
dHIob2JqLCAiX19pbml0X18iLCBOb25lKSAgIyB0eXBlOiBvYmplY3QKICAgICBpZiBpbml0Ogog
ICAgICAgICByZXR1cm4gaW5pdCAhPSBvYmplY3QuX19pbml0X18KKyAgICByZXR1cm4gRmFsc2UK
IAogCi1kZWYgaGFzbmV3KG9iaik6Ci0gICAgbmV3ID0gZ2V0YXR0cihvYmosICJfX25ld19fIiwg
Tm9uZSkKK2RlZiBoYXNuZXcob2JqOiBvYmplY3QpIC0+IGJvb2w6CisgICAgbmV3ID0gZ2V0YXR0
cihvYmosICJfX25ld19fIiwgTm9uZSkgICMgdHlwZTogb2JqZWN0CiAgICAgaWYgbmV3OgogICAg
ICAgICByZXR1cm4gbmV3ICE9IG9iamVjdC5fX25ld19fCisgICAgcmV0dXJuIEZhbHNlCiAKIAot
Y2xhc3MgQ2FsbFNwZWMyKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0YWZ1
bmMpOgorQGZpbmFsCitjbGFzcyBDYWxsU3BlYzI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1l
dGFmdW5jOiAiTWV0YWZ1bmMiKSAtPiBOb25lOgogICAgICAgICBzZWxmLm1ldGFmdW5jID0gbWV0
YWZ1bmMKLSAgICAgICAgc2VsZi5mdW5jYXJncyA9IHt9Ci0gICAgICAgIHNlbGYuX2lkbGlzdCA9
IFtdCi0gICAgICAgIHNlbGYucGFyYW1zID0ge30KLSAgICAgICAgc2VsZi5fZ2xvYmFsaWQgPSBO
T1RTRVQKLSAgICAgICAgc2VsZi5fZ2xvYmFsaWRfYXJncyA9IHNldCgpCi0gICAgICAgIHNlbGYu
X2dsb2JhbHBhcmFtID0gTk9UU0VUCi0gICAgICAgIHNlbGYuX2FyZzJzY29wZW51bSA9IHt9ICAj
IHVzZWQgZm9yIHNvcnRpbmcgcGFyYW1ldHJpemVkIHJlc291cmNlcwotICAgICAgICBzZWxmLm1h
cmtzID0gW10KLSAgICAgICAgc2VsZi5pbmRpY2VzID0ge30KLQotICAgIGRlZiBjb3B5KHNlbGYs
IG1ldGFmdW5jKToKKyAgICAgICAgc2VsZi5mdW5jYXJncyA9IHt9ICAjIHR5cGU6IERpY3Rbc3Ry
LCBvYmplY3RdCisgICAgICAgIHNlbGYuX2lkbGlzdCA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQor
ICAgICAgICBzZWxmLnBhcmFtcyA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBvYmplY3RdCisgICAg
ICAgICMgVXNlZCBmb3Igc29ydGluZyBwYXJhbWV0cml6ZWQgcmVzb3VyY2VzLgorICAgICAgICBz
ZWxmLl9hcmcyc2NvcGVudW0gPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgaW50XQorICAgICAgICBz
ZWxmLm1hcmtzID0gW10gICMgdHlwZTogTGlzdFtNYXJrXQorICAgICAgICBzZWxmLmluZGljZXMg
PSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgaW50XQorCisgICAgZGVmIGNvcHkoc2VsZikgLT4gIkNh
bGxTcGVjMiI6CiAgICAgICAgIGNzID0gQ2FsbFNwZWMyKHNlbGYubWV0YWZ1bmMpCiAgICAgICAg
IGNzLmZ1bmNhcmdzLnVwZGF0ZShzZWxmLmZ1bmNhcmdzKQogICAgICAgICBjcy5wYXJhbXMudXBk
YXRlKHNlbGYucGFyYW1zKQpAQCAtNzQ5LDI0OSArODg1LDM2MCBAQCBjbGFzcyBDYWxsU3BlYzIo
b2JqZWN0KToKICAgICAgICAgY3MuaW5kaWNlcy51cGRhdGUoc2VsZi5pbmRpY2VzKQogICAgICAg
ICBjcy5fYXJnMnNjb3BlbnVtLnVwZGF0ZShzZWxmLl9hcmcyc2NvcGVudW0pCiAgICAgICAgIGNz
Ll9pZGxpc3QgPSBsaXN0KHNlbGYuX2lkbGlzdCkKLSAgICAgICAgY3MuX2dsb2JhbGlkID0gc2Vs
Zi5fZ2xvYmFsaWQKLSAgICAgICAgY3MuX2dsb2JhbGlkX2FyZ3MgPSBzZWxmLl9nbG9iYWxpZF9h
cmdzCi0gICAgICAgIGNzLl9nbG9iYWxwYXJhbSA9IHNlbGYuX2dsb2JhbHBhcmFtCiAgICAgICAg
IHJldHVybiBjcwogCi0gICAgZGVmIF9jaGVja2FyZ25vdGNvbnRhaW5lZChzZWxmLCBhcmcpOgor
ICAgIGRlZiBfY2hlY2thcmdub3Rjb250YWluZWQoc2VsZiwgYXJnOiBzdHIpIC0+IE5vbmU6CiAg
ICAgICAgIGlmIGFyZyBpbiBzZWxmLnBhcmFtcyBvciBhcmcgaW4gc2VsZi5mdW5jYXJnczoKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSAlciIgJSAoYXJnLCkpCisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdXBsaWNhdGUgeyFyfSIuZm9ybWF0KGFyZykpCiAK
LSAgICBkZWYgZ2V0cGFyYW0oc2VsZiwgbmFtZSk6CisgICAgZGVmIGdldHBhcmFtKHNlbGYsIG5h
bWU6IHN0cikgLT4gb2JqZWN0OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5wYXJhbXNbbmFtZV0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgaWYg
c2VsZi5fZ2xvYmFscGFyYW0gaXMgTk9UU0VUOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IobmFtZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nbG9iYWxwYXJhbQorICAgICAg
ICBleGNlcHQgS2V5RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobmFt
ZSkgZnJvbSBlCiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgaWQoc2VsZik6Ci0gICAgICAgIHJl
dHVybiAiLSIuam9pbihtYXAoc3RyLCBmaWx0ZXIoTm9uZSwgc2VsZi5faWRsaXN0KSkpCisgICAg
ZGVmIGlkKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICItIi5qb2luKG1hcChzdHIsIHNl
bGYuX2lkbGlzdCkpCiAKLSAgICBkZWYgc2V0bXVsdGkyKHNlbGYsIHZhbHR5cGVzLCBhcmduYW1l
cywgdmFsc2V0LCBpZCwgbWFya3MsIHNjb3BlbnVtLCBwYXJhbV9pbmRleCk6CisgICAgZGVmIHNl
dG11bHRpMigKKyAgICAgICAgc2VsZiwKKyAgICAgICAgdmFsdHlwZXM6IE1hcHBpbmdbc3RyLCAi
TGl0ZXJhbFsncGFyYW1zJywgJ2Z1bmNhcmdzJ10iXSwKKyAgICAgICAgYXJnbmFtZXM6IHR5cGlu
Zy5TZXF1ZW5jZVtzdHJdLAorICAgICAgICB2YWxzZXQ6IEl0ZXJhYmxlW29iamVjdF0sCisgICAg
ICAgIGlkOiBzdHIsCisgICAgICAgIG1hcmtzOiBJdGVyYWJsZVtVbmlvbltNYXJrLCBNYXJrRGVj
b3JhdG9yXV0sCisgICAgICAgIHNjb3BlbnVtOiBpbnQsCisgICAgICAgIHBhcmFtX2luZGV4OiBp
bnQsCisgICAgKSAtPiBOb25lOgogICAgICAgICBmb3IgYXJnLCB2YWwgaW4gemlwKGFyZ25hbWVz
LCB2YWxzZXQpOgogICAgICAgICAgICAgc2VsZi5fY2hlY2thcmdub3Rjb250YWluZWQoYXJnKQog
ICAgICAgICAgICAgdmFsdHlwZV9mb3JfYXJnID0gdmFsdHlwZXNbYXJnXQotICAgICAgICAgICAg
Z2V0YXR0cihzZWxmLCB2YWx0eXBlX2Zvcl9hcmcpW2FyZ10gPSB2YWwKKyAgICAgICAgICAgIGlm
IHZhbHR5cGVfZm9yX2FyZyA9PSAicGFyYW1zIjoKKyAgICAgICAgICAgICAgICBzZWxmLnBhcmFt
c1thcmddID0gdmFsCisgICAgICAgICAgICBlbGlmIHZhbHR5cGVfZm9yX2FyZyA9PSAiZnVuY2Fy
Z3MiOgorICAgICAgICAgICAgICAgIHNlbGYuZnVuY2FyZ3NbYXJnXSA9IHZhbAorICAgICAgICAg
ICAgZWxzZTogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxz
ZSwgIlVuaGFuZGxlZCB2YWx0eXBlIGZvciBhcmc6IHt9Ii5mb3JtYXQodmFsdHlwZV9mb3JfYXJn
KQogICAgICAgICAgICAgc2VsZi5pbmRpY2VzW2FyZ10gPSBwYXJhbV9pbmRleAogICAgICAgICAg
ICAgc2VsZi5fYXJnMnNjb3BlbnVtW2FyZ10gPSBzY29wZW51bQogICAgICAgICBzZWxmLl9pZGxp
c3QuYXBwZW5kKGlkKQotICAgICAgICBzZWxmLm1hcmtzLmV4dGVuZChtYXJrcykKLQotICAgIGRl
ZiBzZXRhbGwoc2VsZiwgZnVuY2FyZ3MsIGlkLCBwYXJhbSk6Ci0gICAgICAgIGZvciB4IGluIGZ1
bmNhcmdzOgotICAgICAgICAgICAgc2VsZi5fY2hlY2thcmdub3Rjb250YWluZWQoeCkKLSAgICAg
ICAgc2VsZi5mdW5jYXJncy51cGRhdGUoZnVuY2FyZ3MpCi0gICAgICAgIGlmIGlkIGlzIG5vdCBO
T1RTRVQ6Ci0gICAgICAgICAgICBzZWxmLl9pZGxpc3QuYXBwZW5kKGlkKQotICAgICAgICBpZiBw
YXJhbSBpcyBub3QgTk9UU0VUOgotICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2dsb2JhbHBhcmFt
IGlzIE5PVFNFVAotICAgICAgICAgICAgc2VsZi5fZ2xvYmFscGFyYW0gPSBwYXJhbQotICAgICAg
ICBmb3IgYXJnIGluIGZ1bmNhcmdzOgotICAgICAgICAgICAgc2VsZi5fYXJnMnNjb3BlbnVtW2Fy
Z10gPSBmaXh0dXJlcy5zY29wZW51bV9mdW5jdGlvbgotCi0KLWNsYXNzIE1ldGFmdW5jKGZpeHR1
cmVzLkZ1bmNhcmduYW1lc0NvbXBhdEF0dHIpOgotICAgICIiIgotICAgIE1ldGFmdW5jIG9iamVj
dHMgYXJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyA8X3B5dGVz
dC5ob29rc3BlYy5weXRlc3RfZ2VuZXJhdGVfdGVzdHM+YCBob29rLgorICAgICAgICBzZWxmLm1h
cmtzLmV4dGVuZChub3JtYWxpemVfbWFya19saXN0KG1hcmtzKSkKKworCitAZmluYWwKK2NsYXNz
IE1ldGFmdW5jOgorICAgICIiIk9iamVjdHMgcGFzc2VkIHRvIHRoZSA6ZnVuYzpgcHl0ZXN0X2dl
bmVyYXRlX3Rlc3RzIDxfcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF9nZW5lcmF0ZV90ZXN0cz5gIGhv
b2suCisKICAgICBUaGV5IGhlbHAgdG8gaW5zcGVjdCBhIHRlc3QgZnVuY3Rpb24gYW5kIHRvIGdl
bmVyYXRlIHRlc3RzIGFjY29yZGluZyB0bwogICAgIHRlc3QgY29uZmlndXJhdGlvbiBvciB2YWx1
ZXMgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBvciBtb2R1bGUgd2hlcmUgYQogICAgIHRlc3QgZnVu
Y3Rpb24gaXMgZGVmaW5lZC4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZp
bml0aW9uLCBmaXh0dXJlaW5mbywgY29uZmlnLCBjbHM9Tm9uZSwgbW9kdWxlPU5vbmUpOgotICAg
ICAgICAjOiBhY2Nlc3MgdG8gdGhlIDpjbGFzczpgX3B5dGVzdC5jb25maWcuQ29uZmlnYCBvYmpl
Y3QgZm9yIHRoZSB0ZXN0IHNlc3Npb24KLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIGlz
aW5zdGFuY2UoZGVmaW5pdGlvbiwgRnVuY3Rpb25EZWZpbml0aW9uKQotICAgICAgICAgICAgb3Ig
dHlwZShkZWZpbml0aW9uKS5fX25hbWVfXyA9PSAiRGVmaW5pdGlvbk1vY2siCi0gICAgICAgICkK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIGRlZmluaXRpb246ICJG
dW5jdGlvbkRlZmluaXRpb24iLAorICAgICAgICBmaXh0dXJlaW5mbzogZml4dHVyZXMuRnVuY0Zp
eHR1cmVJbmZvLAorICAgICAgICBjb25maWc6IENvbmZpZywKKyAgICAgICAgY2xzPU5vbmUsCisg
ICAgICAgIG1vZHVsZT1Ob25lLAorICAgICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5kZWZpbml0
aW9uID0gZGVmaW5pdGlvbgorCisgICAgICAgICM6IEFjY2VzcyB0byB0aGUgOmNsYXNzOmBfcHl0
ZXN0LmNvbmZpZy5Db25maWdgIG9iamVjdCBmb3IgdGhlIHRlc3Qgc2Vzc2lvbi4KICAgICAgICAg
c2VsZi5jb25maWcgPSBjb25maWcKIAotICAgICAgICAjOiB0aGUgbW9kdWxlIG9iamVjdCB3aGVy
ZSB0aGUgdGVzdCBmdW5jdGlvbiBpcyBkZWZpbmVkIGluLgorICAgICAgICAjOiBUaGUgbW9kdWxl
IG9iamVjdCB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiBpcyBkZWZpbmVkIGluLgogICAgICAgICBz
ZWxmLm1vZHVsZSA9IG1vZHVsZQogCi0gICAgICAgICM6IHVuZGVybHlpbmcgcHl0aG9uIHRlc3Qg
ZnVuY3Rpb24KKyAgICAgICAgIzogVW5kZXJseWluZyBQeXRob24gdGVzdCBmdW5jdGlvbi4KICAg
ICAgICAgc2VsZi5mdW5jdGlvbiA9IGRlZmluaXRpb24ub2JqCiAKLSAgICAgICAgIzogc2V0IG9m
IGZpeHR1cmUgbmFtZXMgcmVxdWlyZWQgYnkgdGhlIHRlc3QgZnVuY3Rpb24KKyAgICAgICAgIzog
U2V0IG9mIGZpeHR1cmUgbmFtZXMgcmVxdWlyZWQgYnkgdGhlIHRlc3QgZnVuY3Rpb24uCiAgICAg
ICAgIHNlbGYuZml4dHVyZW5hbWVzID0gZml4dHVyZWluZm8ubmFtZXNfY2xvc3VyZQogCi0gICAg
ICAgICM6IGNsYXNzIG9iamVjdCB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiBpcyBkZWZpbmVkIGlu
IG9yIGBgTm9uZWBgLgorICAgICAgICAjOiBDbGFzcyBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVu
Y3Rpb24gaXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYC4KICAgICAgICAgc2VsZi5jbHMgPSBjbHMK
IAotICAgICAgICBzZWxmLl9jYWxscyA9IFtdCi0gICAgICAgIHNlbGYuX2lkcyA9IHNldCgpCisg
ICAgICAgIHNlbGYuX2NhbGxzID0gW10gICMgdHlwZTogTGlzdFtDYWxsU3BlYzJdCiAgICAgICAg
IHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9IGZpeHR1cmVpbmZvLm5hbWUyZml4dHVyZWRlZnMKIAot
ICAgIGRlZiBwYXJhbWV0cml6ZShzZWxmLCBhcmduYW1lcywgYXJndmFsdWVzLCBpbmRpcmVjdD1G
YWxzZSwgaWRzPU5vbmUsIHNjb3BlPU5vbmUpOgotICAgICAgICAiIiIgQWRkIG5ldyBpbnZvY2F0
aW9ucyB0byB0aGUgdW5kZXJseWluZyB0ZXN0IGZ1bmN0aW9uIHVzaW5nIHRoZSBsaXN0CisgICAg
ZGVmIHBhcmFtZXRyaXplKAorICAgICAgICBzZWxmLAorICAgICAgICBhcmduYW1lczogVW5pb25b
c3RyLCBMaXN0W3N0cl0sIFR1cGxlW3N0ciwgLi4uXV0sCisgICAgICAgIGFyZ3ZhbHVlczogSXRl
cmFibGVbVW5pb25bUGFyYW1ldGVyU2V0LCB0eXBpbmcuU2VxdWVuY2Vbb2JqZWN0XSwgb2JqZWN0
XV0sCisgICAgICAgIGluZGlyZWN0OiBVbmlvbltib29sLCB0eXBpbmcuU2VxdWVuY2Vbc3RyXV0g
PSBGYWxzZSwKKyAgICAgICAgaWRzOiBPcHRpb25hbFsKKyAgICAgICAgICAgIFVuaW9uWworICAg
ICAgICAgICAgICAgIEl0ZXJhYmxlW1VuaW9uW05vbmUsIHN0ciwgZmxvYXQsIGludCwgYm9vbF1d
LAorICAgICAgICAgICAgICAgIENhbGxhYmxlW1tBbnldLCBPcHRpb25hbFtvYmplY3RdXSwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgXSA9IE5vbmUsCisgICAgICAgIHNjb3BlOiAiT3B0aW9uYWxb
X1Njb3BlXSIgPSBOb25lLAorICAgICAgICAqLAorICAgICAgICBfcGFyYW1fbWFyazogT3B0aW9u
YWxbTWFya10gPSBOb25lCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJBZGQgbmV3IGludm9j
YXRpb25zIHRvIHRoZSB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24gdXNpbmcgdGhlIGxpc3QKICAg
ICAgICAgb2YgYXJndmFsdWVzIGZvciB0aGUgZ2l2ZW4gYXJnbmFtZXMuICBQYXJhbWV0cml6YXRp
b24gaXMgcGVyZm9ybWVkCiAgICAgICAgIGR1cmluZyB0aGUgY29sbGVjdGlvbiBwaGFzZS4gIElm
IHlvdSBuZWVkIHRvIHNldHVwIGV4cGVuc2l2ZSByZXNvdXJjZXMKICAgICAgICAgc2VlIGFib3V0
IHNldHRpbmcgaW5kaXJlY3QgdG8gZG8gaXQgcmF0aGVyIGF0IHRlc3Qgc2V0dXAgdGltZS4KIAot
ICAgICAgICA6YXJnIGFyZ25hbWVzOiBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgZGVub3Rpbmcg
b25lIG9yIG1vcmUgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMsIG9yIGEg
bGlzdC90dXBsZSBvZiBhcmd1bWVudCBzdHJpbmdzLgorICAgICAgICA6cGFyYW0gYXJnbmFtZXM6
CisgICAgICAgICAgICBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgZGVub3Rpbmcgb25lIG9yIG1v
cmUgYXJndW1lbnQgbmFtZXMsIG9yCisgICAgICAgICAgICBhIGxpc3QvdHVwbGUgb2YgYXJndW1l
bnQgc3RyaW5ncy4KKworICAgICAgICA6cGFyYW0gYXJndmFsdWVzOgorICAgICAgICAgICAgVGhl
IGxpc3Qgb2YgYXJndmFsdWVzIGRldGVybWluZXMgaG93IG9mdGVuIGEgdGVzdCBpcyBpbnZva2Vk
IHdpdGgKKyAgICAgICAgICAgIGRpZmZlcmVudCBhcmd1bWVudCB2YWx1ZXMuCiAKLSAgICAgICAg
OmFyZyBhcmd2YWx1ZXM6IFRoZSBsaXN0IG9mIGFyZ3ZhbHVlcyBkZXRlcm1pbmVzIGhvdyBvZnRl
biBhCi0gICAgICAgICAgICB0ZXN0IGlzIGludm9rZWQgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQg
dmFsdWVzLiAgSWYgb25seSBvbmUKLSAgICAgICAgICAgIGFyZ25hbWUgd2FzIHNwZWNpZmllZCBh
cmd2YWx1ZXMgaXMgYSBsaXN0IG9mIHZhbHVlcy4gIElmIE4KLSAgICAgICAgICAgIGFyZ25hbWVz
IHdlcmUgc3BlY2lmaWVkLCBhcmd2YWx1ZXMgbXVzdCBiZSBhIGxpc3Qgb2YgTi10dXBsZXMsCi0g
ICAgICAgICAgICB3aGVyZSBlYWNoIHR1cGxlLWVsZW1lbnQgc3BlY2lmaWVzIGEgdmFsdWUgZm9y
IGl0cyByZXNwZWN0aXZlCi0gICAgICAgICAgICBhcmduYW1lLgorICAgICAgICAgICAgSWYgb25s
eSBvbmUgYXJnbmFtZSB3YXMgc3BlY2lmaWVkIGFyZ3ZhbHVlcyBpcyBhIGxpc3Qgb2YgdmFsdWVz
LgorICAgICAgICAgICAgSWYgTiBhcmduYW1lcyB3ZXJlIHNwZWNpZmllZCwgYXJndmFsdWVzIG11
c3QgYmUgYSBsaXN0IG9mCisgICAgICAgICAgICBOLXR1cGxlcywgd2hlcmUgZWFjaCB0dXBsZS1l
bGVtZW50IHNwZWNpZmllcyBhIHZhbHVlIGZvciBpdHMKKyAgICAgICAgICAgIHJlc3BlY3RpdmUg
YXJnbmFtZS4KIAotICAgICAgICA6YXJnIGluZGlyZWN0OiBUaGUgbGlzdCBvZiBhcmduYW1lcyBv
ciBib29sZWFuLiBBIGxpc3Qgb2YgYXJndW1lbnRzJwotICAgICAgICAgICAgbmFtZXMgKHN1YnNl
dCBvZiBhcmduYW1lcykuIElmIFRydWUgdGhlIGxpc3QgY29udGFpbnMgYWxsIG5hbWVzIGZyb20K
LSAgICAgICAgICAgIHRoZSBhcmduYW1lcy4gRWFjaCBhcmd2YWx1ZSBjb3JyZXNwb25kaW5nIHRv
IGFuIGFyZ25hbWUgaW4gdGhpcyBsaXN0IHdpbGwKKyAgICAgICAgOnBhcmFtIGluZGlyZWN0Ogor
ICAgICAgICAgICAgQSBsaXN0IG9mIGFyZ3VtZW50cycgbmFtZXMgKHN1YnNldCBvZiBhcmduYW1l
cykgb3IgYSBib29sZWFuLgorICAgICAgICAgICAgSWYgVHJ1ZSB0aGUgbGlzdCBjb250YWlucyBh
bGwgbmFtZXMgZnJvbSB0aGUgYXJnbmFtZXMuIEVhY2gKKyAgICAgICAgICAgIGFyZ3ZhbHVlIGNv
cnJlc3BvbmRpbmcgdG8gYW4gYXJnbmFtZSBpbiB0aGlzIGxpc3Qgd2lsbAogICAgICAgICAgICAg
YmUgcGFzc2VkIGFzIHJlcXVlc3QucGFyYW0gdG8gaXRzIHJlc3BlY3RpdmUgYXJnbmFtZSBmaXh0
dXJlCiAgICAgICAgICAgICBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiBwZXJmb3JtIG1vcmUgZXhw
ZW5zaXZlIHNldHVwcyBkdXJpbmcgdGhlCiAgICAgICAgICAgICBzZXR1cCBwaGFzZSBvZiBhIHRl
c3QgcmF0aGVyIHRoYW4gYXQgY29sbGVjdGlvbiB0aW1lLgogCi0gICAgICAgIDphcmcgaWRzOiBs
aXN0IG9mIHN0cmluZyBpZHMsIG9yIGEgY2FsbGFibGUuCi0gICAgICAgICAgICBJZiBzdHJpbmdz
LCBlYWNoIGlzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFyZ3ZhbHVlcyBzbyB0aGF0IHRoZXkgYXJl
Ci0gICAgICAgICAgICBwYXJ0IG9mIHRoZSB0ZXN0IGlkLiBJZiBOb25lIGlzIGdpdmVuIGFzIGlk
IG9mIHNwZWNpZmljIHRlc3QsIHRoZQotICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgaWQgZm9yIHRoYXQgYXJndW1lbnQgd2lsbCBiZSB1c2VkLgotICAgICAgICAgICAgSWYgY2Fs
bGFibGUsIGl0IHNob3VsZCB0YWtlIG9uZSBhcmd1bWVudCAoYSBzaW5nbGUgYXJndmFsdWUpIGFu
ZCByZXR1cm4KLSAgICAgICAgICAgIGEgc3RyaW5nIG9yIHJldHVybiBOb25lLiBJZiBOb25lLCB0
aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWQgZm9yIHRoYXQKLSAgICAgICAgICAgIGFyZ3Vt
ZW50IHdpbGwgYmUgdXNlZC4KKyAgICAgICAgOnBhcmFtIGlkczoKKyAgICAgICAgICAgIFNlcXVl
bmNlIG9mIChvciBnZW5lcmF0b3IgZm9yKSBpZHMgZm9yIGBgYXJndmFsdWVzYGAsCisgICAgICAg
ICAgICBvciBhIGNhbGxhYmxlIHRvIHJldHVybiBwYXJ0IG9mIHRoZSBpZCBmb3IgZWFjaCBhcmd2
YWx1ZS4KKworICAgICAgICAgICAgV2l0aCBzZXF1ZW5jZXMgKGFuZCBnZW5lcmF0b3JzIGxpa2Ug
YGBpdGVydG9vbHMuY291bnQoKWBgKSB0aGUKKyAgICAgICAgICAgIHJldHVybmVkIGlkcyBzaG91
bGQgYmUgb2YgdHlwZSBgYHN0cmluZ2BgLCBgYGludGBgLCBgYGZsb2F0YGAsCisgICAgICAgICAg
ICBgYGJvb2xgYCwgb3IgYGBOb25lYGAuCisgICAgICAgICAgICBUaGV5IGFyZSBtYXBwZWQgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgaW5kZXggaW4gYGBhcmd2YWx1ZXNgYC4KKyAgICAgICAgICAgIGBg
Tm9uZWBgIG1lYW5zIHRvIHVzZSB0aGUgYXV0by1nZW5lcmF0ZWQgaWQuCisKKyAgICAgICAgICAg
IElmIGl0IGlzIGEgY2FsbGFibGUgaXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggZW50cnkgaW4K
KyAgICAgICAgICAgIGBgYXJndmFsdWVzYGAsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHVzZWQg
YXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIGF1dG8tZ2VuZXJhdGVkIGlkIGZvciB0aGUgd2hv
bGUgc2V0ICh3aGVyZSBwYXJ0cyBhcmUgam9pbmVkIHdpdGgKKyAgICAgICAgICAgIGRhc2hlcyAo
Ii0iKSkuCisgICAgICAgICAgICBUaGlzIGlzIHVzZWZ1bCB0byBwcm92aWRlIG1vcmUgc3BlY2lm
aWMgaWRzIGZvciBjZXJ0YWluIGl0ZW1zLCBlLmcuCisgICAgICAgICAgICBkYXRlcy4gIFJldHVy
bmluZyBgYE5vbmVgYCB3aWxsIHVzZSBhbiBhdXRvLWdlbmVyYXRlZCBpZC4KKwogICAgICAgICAg
ICAgSWYgbm8gaWRzIGFyZSBwcm92aWRlZCB0aGV5IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRp
Y2FsbHkgZnJvbQogICAgICAgICAgICAgdGhlIGFyZ3ZhbHVlcy4KIAotICAgICAgICA6YXJnIHNj
b3BlOiBpZiBzcGVjaWZpZWQgaXQgZGVub3RlcyB0aGUgc2NvcGUgb2YgdGhlIHBhcmFtZXRlcnMu
CisgICAgICAgIDpwYXJhbSBzY29wZToKKyAgICAgICAgICAgIElmIHNwZWNpZmllZCBpdCBkZW5v
dGVzIHRoZSBzY29wZSBvZiB0aGUgcGFyYW1ldGVycy4KICAgICAgICAgICAgIFRoZSBzY29wZSBp
cyB1c2VkIGZvciBncm91cGluZyB0ZXN0cyBieSBwYXJhbWV0ZXIgaW5zdGFuY2VzLgogICAgICAg
ICAgICAgSXQgd2lsbCBhbHNvIG92ZXJyaWRlIGFueSBmaXh0dXJlLWZ1bmN0aW9uIGRlZmluZWQg
c2NvcGUsIGFsbG93aW5nCiAgICAgICAgICAgICB0byBzZXQgYSBkeW5hbWljIHNjb3BlIHVzaW5n
IHRlc3QgY29udGV4dCBvciBjb25maWd1cmF0aW9uLgogICAgICAgICAiIiIKICAgICAgICAgZnJv
bSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBzY29wZTJpbmRleAotICAgICAgICBmcm9tIF9weXRl
c3QubWFyayBpbXBvcnQgUGFyYW1ldGVyU2V0Ci0gICAgICAgIGZyb20gcHkuaW8gaW1wb3J0IHNh
ZmVyZXByCiAKICAgICAgICAgYXJnbmFtZXMsIHBhcmFtZXRlcnMgPSBQYXJhbWV0ZXJTZXQuX2Zv
cl9wYXJhbWV0cml6ZSgKLSAgICAgICAgICAgIGFyZ25hbWVzLCBhcmd2YWx1ZXMsIHNlbGYuZnVu
Y3Rpb24sIHNlbGYuY29uZmlnCisgICAgICAgICAgICBhcmduYW1lcywKKyAgICAgICAgICAgIGFy
Z3ZhbHVlcywKKyAgICAgICAgICAgIHNlbGYuZnVuY3Rpb24sCisgICAgICAgICAgICBzZWxmLmNv
bmZpZywKKyAgICAgICAgICAgIG5vZGVpZD1zZWxmLmRlZmluaXRpb24ubm9kZWlkLAogICAgICAg
ICApCiAgICAgICAgIGRlbCBhcmd2YWx1ZXMKLSAgICAgICAgZGVmYXVsdF9hcmdfbmFtZXMgPSBz
ZXQoZ2V0X2RlZmF1bHRfYXJnX25hbWVzKHNlbGYuZnVuY3Rpb24pKQorCisgICAgICAgIGlmICJy
ZXF1ZXN0IiBpbiBhcmduYW1lczoKKyAgICAgICAgICAgIGZhaWwoCisgICAgICAgICAgICAgICAg
IidyZXF1ZXN0JyBpcyBhIHJlc2VydmVkIG5hbWUgYW5kIGNhbm5vdCBiZSB1c2VkIGluIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSIsCisgICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSwKKyAg
ICAgICAgICAgICkKIAogICAgICAgICBpZiBzY29wZSBpcyBOb25lOgogICAgICAgICAgICAgc2Nv
cGUgPSBfZmluZF9wYXJhbWV0cml6ZWRfc2NvcGUoYXJnbmFtZXMsIHNlbGYuX2FyZzJmaXh0dXJl
ZGVmcywgaW5kaXJlY3QpCiAKLSAgICAgICAgc2NvcGVudW0gPSBzY29wZTJpbmRleChzY29wZSwg
ZGVzY3I9ImNhbGwgdG8ge30iLmZvcm1hdChzZWxmLnBhcmFtZXRyaXplKSkKLSAgICAgICAgdmFs
dHlwZXMgPSB7fQotICAgICAgICBmb3IgYXJnIGluIGFyZ25hbWVzOgotICAgICAgICAgICAgaWYg
YXJnIG5vdCBpbiBzZWxmLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgICAgICBpZiBhcmcgaW4g
ZGVmYXVsdF9hcmdfbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiJXIgYWxyZWFkeSB0YWtlcyBhbiBhcmd1bWVudCAl
ciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYu
ZnVuY3Rpb24sIGFyZykKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5kaXJlY3QsICh0dXBsZSwg
bGlzdCkpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJmaXh0dXJlIiBpZiBhcmcg
aW4gaW5kaXJlY3QgZWxzZSAiYXJndW1lbnQiCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gImZpeHR1cmUiIGlmIGluZGlyZWN0IGVsc2Ug
ImFyZ3VtZW50IgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciB1c2Vz
IG5vICVzICVyIiAlIChzZWxmLmZ1bmN0aW9uLCBuYW1lLCBhcmcpKQorICAgICAgICBzZWxmLl92
YWxpZGF0ZV9pZl91c2luZ19hcmdfbmFtZXMoYXJnbmFtZXMsIGluZGlyZWN0KQogCi0gICAgICAg
IGlmIGluZGlyZWN0IGlzIFRydWU6Ci0gICAgICAgICAgICB2YWx0eXBlcyA9IGRpY3QuZnJvbWtl
eXMoYXJnbmFtZXMsICJwYXJhbXMiKQotICAgICAgICBlbGlmIGluZGlyZWN0IGlzIEZhbHNlOgot
ICAgICAgICAgICAgdmFsdHlwZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVuY2FyZ3Mi
KQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoaW5kaXJlY3QsICh0dXBsZSwgbGlzdCkpOgotICAg
ICAgICAgICAgdmFsdHlwZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVuY2FyZ3MiKQot
ICAgICAgICAgICAgZm9yIGFyZyBpbiBpbmRpcmVjdDoKLSAgICAgICAgICAgICAgICBpZiBhcmcg
bm90IGluIGFyZ25hbWVzOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAot
ICAgICAgICAgICAgICAgICAgICAgICAgImluZGlyZWN0IGdpdmVuIHRvICVyOiBmaXh0dXJlICVy
IGRvZXNuJ3QgZXhpc3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmZ1bmN0aW9u
LCBhcmcpCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICB2YWx0eXBlc1th
cmddID0gInBhcmFtcyIKLSAgICAgICAgaWRmbiA9IE5vbmUKLSAgICAgICAgaWYgY2FsbGFibGUo
aWRzKToKLSAgICAgICAgICAgIGlkZm4gPSBpZHMKLSAgICAgICAgICAgIGlkcyA9IE5vbmUKLSAg
ICAgICAgaWYgaWRzOgotICAgICAgICAgICAgaWYgbGVuKGlkcykgIT0gbGVuKHBhcmFtZXRlcnMp
OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAg
ICIlZCB0ZXN0cyBzcGVjaWZpZWQgd2l0aCAlZCBpZHMiICUgKGxlbihwYXJhbWV0ZXJzKSwgbGVu
KGlkcykpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgZm9yIGlkX3ZhbHVlIGluIGlk
czoKLSAgICAgICAgICAgICAgICBpZiBpZF92YWx1ZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5z
dGFuY2UoaWRfdmFsdWUsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgICAgICAgICBt
c2cgPSAiaWRzIG11c3QgYmUgbGlzdCBvZiBzdHJpbmdzLCBmb3VuZDogJXMgKHR5cGU6ICVzKSIK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZyAlIChzYWZlcmVwcihpZF92YWx1ZSksIHR5cGUoaWRfdmFsdWUpLl9fbmFtZV9f
KQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIGlkcyA9IGlkbWFrZXIoYXJnbmFtZXMs
IHBhcmFtZXRlcnMsIGlkZm4sIGlkcywgc2VsZi5jb25maWcpCisgICAgICAgIGFyZ192YWx1ZXNf
dHlwZXMgPSBzZWxmLl9yZXNvbHZlX2FyZ192YWx1ZV90eXBlcyhhcmduYW1lcywgaW5kaXJlY3Qp
CisKKyAgICAgICAgIyBVc2UgYW55IGFscmVhZHkgKHBvc3NpYmx5KSBnZW5lcmF0ZWQgaWRzIHdp
dGggcGFyYW1ldHJpemUgTWFya3MuCisgICAgICAgIGlmIF9wYXJhbV9tYXJrIGFuZCBfcGFyYW1f
bWFyay5fcGFyYW1faWRzX2Zyb206CisgICAgICAgICAgICBnZW5lcmF0ZWRfaWRzID0gX3BhcmFt
X21hcmsuX3BhcmFtX2lkc19mcm9tLl9wYXJhbV9pZHNfZ2VuZXJhdGVkCisgICAgICAgICAgICBp
ZiBnZW5lcmF0ZWRfaWRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlkcyA9IGdlbmVy
YXRlZF9pZHMKKworICAgICAgICBpZHMgPSBzZWxmLl9yZXNvbHZlX2FyZ19pZHMoCisgICAgICAg
ICAgICBhcmduYW1lcywgaWRzLCBwYXJhbWV0ZXJzLCBub2RlaWQ9c2VsZi5kZWZpbml0aW9uLm5v
ZGVpZAorICAgICAgICApCisKKyAgICAgICAgIyBTdG9yZSB1c2VkIChwb3NzaWJseSBnZW5lcmF0
ZWQpIGlkcyB3aXRoIHBhcmFtZXRyaXplIE1hcmtzLgorICAgICAgICBpZiBfcGFyYW1fbWFyayBh
bmQgX3BhcmFtX21hcmsuX3BhcmFtX2lkc19mcm9tIGFuZCBnZW5lcmF0ZWRfaWRzIGlzIE5vbmU6
CisgICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oX3BhcmFtX21hcmsuX3BhcmFtX2lkc19m
cm9tLCAiX3BhcmFtX2lkc19nZW5lcmF0ZWQiLCBpZHMpCisKKyAgICAgICAgc2NvcGVudW0gPSBz
Y29wZTJpbmRleCgKKyAgICAgICAgICAgIHNjb3BlLCBkZXNjcj0icGFyYW1ldHJpemUoKSBjYWxs
IGluIHt9Ii5mb3JtYXQoc2VsZi5mdW5jdGlvbi5fX25hbWVfXykKKyAgICAgICAgKQorCisgICAg
ICAgICMgQ3JlYXRlIHRoZSBuZXcgY2FsbHM6IGlmIHdlIGFyZSBwYXJhbWV0cml6ZSgpIG11bHRp
cGxlIHRpbWVzIChieSBhcHBseWluZyB0aGUgZGVjb3JhdG9yCisgICAgICAgICMgbW9yZSB0aGFu
IG9uY2UpIHRoZW4gd2UgYWNjdW11bGF0ZSB0aG9zZSBjYWxscyBnZW5lcmF0aW5nIHRoZSBjYXJ0
ZXNpYW4gcHJvZHVjdAorICAgICAgICAjIG9mIGFsbCBjYWxscy4KICAgICAgICAgbmV3Y2FsbHMg
PSBbXQogICAgICAgICBmb3IgY2FsbHNwZWMgaW4gc2VsZi5fY2FsbHMgb3IgW0NhbGxTcGVjMihz
ZWxmKV06Ci0gICAgICAgICAgICBlbGVtZW50cyA9IHppcChpZHMsIHBhcmFtZXRlcnMsIGNvdW50
KCkpCi0gICAgICAgICAgICBmb3IgYV9pZCwgcGFyYW0sIHBhcmFtX2luZGV4IGluIGVsZW1lbnRz
OgotICAgICAgICAgICAgICAgIGlmIGxlbihwYXJhbS52YWx1ZXMpICE9IGxlbihhcmduYW1lcyk6
Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnSW4gInBhcmFtZXRyaXplIiB0aGUgbnVtYmVyIG9mIHZhbHVlcyAoe30pIG11c3Qg
YmUgJwotICAgICAgICAgICAgICAgICAgICAgICAgImVxdWFsIHRvIHRoZSBudW1iZXIgb2YgbmFt
ZXMgKHt9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVl
cywgYXJnbmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgICAgIG5ld2NhbGxzcGVjID0gY2FsbHNwZWMuY29weShzZWxmKQor
ICAgICAgICAgICAgZm9yIHBhcmFtX2luZGV4LCAocGFyYW1faWQsIHBhcmFtX3NldCkgaW4gZW51
bWVyYXRlKHppcChpZHMsIHBhcmFtZXRlcnMpKToKKyAgICAgICAgICAgICAgICBuZXdjYWxsc3Bl
YyA9IGNhbGxzcGVjLmNvcHkoKQogICAgICAgICAgICAgICAgIG5ld2NhbGxzcGVjLnNldG11bHRp
MigKLSAgICAgICAgICAgICAgICAgICAgdmFsdHlwZXMsCisgICAgICAgICAgICAgICAgICAgIGFy
Z192YWx1ZXNfdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgIGFyZ25hbWVzLAotICAgICAgICAg
ICAgICAgICAgICBwYXJhbS52YWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgIGFfaWQsCi0gICAg
ICAgICAgICAgICAgICAgIHBhcmFtLm1hcmtzLAorICAgICAgICAgICAgICAgICAgICBwYXJhbV9z
ZXQudmFsdWVzLAorICAgICAgICAgICAgICAgICAgICBwYXJhbV9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1fc2V0Lm1hcmtzLAogICAgICAgICAgICAgICAgICAgICBzY29wZW51bSwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1faW5kZXgsCiAgICAgICAgICAgICAgICAgKQogICAgICAg
ICAgICAgICAgIG5ld2NhbGxzLmFwcGVuZChuZXdjYWxsc3BlYykKICAgICAgICAgc2VsZi5fY2Fs
bHMgPSBuZXdjYWxscwogCi0gICAgZGVmIGFkZGNhbGwoc2VsZiwgZnVuY2FyZ3M9Tm9uZSwgaWQ9
Tk9UU0VULCBwYXJhbT1OT1RTRVQpOgotICAgICAgICAiIiIgQWRkIGEgbmV3IGNhbGwgdG8gdGhl
IHVuZGVybHlpbmcgdGVzdCBmdW5jdGlvbiBkdXJpbmcgdGhlIGNvbGxlY3Rpb24gcGhhc2Ugb2Yg
YSB0ZXN0IHJ1bi4KLQotICAgICAgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgZGVmIF9yZXNv
bHZlX2FyZ19pZHMoCisgICAgICAgIHNlbGYsCisgICAgICAgIGFyZ25hbWVzOiB0eXBpbmcuU2Vx
dWVuY2Vbc3RyXSwKKyAgICAgICAgaWRzOiBPcHRpb25hbFsKKyAgICAgICAgICAgIFVuaW9uWwor
ICAgICAgICAgICAgICAgIEl0ZXJhYmxlW1VuaW9uW05vbmUsIHN0ciwgZmxvYXQsIGludCwgYm9v
bF1dLAorICAgICAgICAgICAgICAgIENhbGxhYmxlW1tBbnldLCBPcHRpb25hbFtvYmplY3RdXSwK
KyAgICAgICAgICAgIF0KKyAgICAgICAgXSwKKyAgICAgICAgcGFyYW1ldGVyczogdHlwaW5nLlNl
cXVlbmNlW1BhcmFtZXRlclNldF0sCisgICAgICAgIG5vZGVpZDogc3RyLAorICAgICkgLT4gTGlz
dFtzdHJdOgorICAgICAgICAiIiJSZXNvbHZlIHRoZSBhY3R1YWwgaWRzIGZvciB0aGUgZ2l2ZW4g
YXJnbmFtZXMsIGJhc2VkIG9uIHRoZSBgYGlkc2BgIHBhcmFtZXRlciBnaXZlbgorICAgICAgICB0
byBgYHBhcmFtZXRyaXplYGAuCisKKyAgICAgICAgOnBhcmFtIExpc3Rbc3RyXSBhcmduYW1lczog
TGlzdCBvZiBhcmd1bWVudCBuYW1lcyBwYXNzZWQgdG8gYGBwYXJhbWV0cml6ZSgpYGAuCisgICAg
ICAgIDpwYXJhbSBpZHM6IFRoZSBpZHMgcGFyYW1ldGVyIG9mIHRoZSBwYXJhbWV0cml6ZWQgY2Fs
bCAoc2VlIGRvY3MpLgorICAgICAgICA6cGFyYW0gTGlzdFtQYXJhbWV0ZXJTZXRdIHBhcmFtZXRl
cnM6IFRoZSBsaXN0IG9mIHBhcmFtZXRlciB2YWx1ZXMsIHNhbWUgc2l6ZSBhcyBgYGFyZ25hbWVz
YGAuCisgICAgICAgIDpwYXJhbSBzdHIgc3RyOiBUaGUgbm9kZWlkIG9mIHRoZSBpdGVtIHRoYXQg
Z2VuZXJhdGVkIHRoaXMgcGFyYW1ldHJpemVkIGNhbGwuCisgICAgICAgIDpydHlwZTogTGlzdFtz
dHJdCisgICAgICAgIDpyZXR1cm5zOiBUaGUgbGlzdCBvZiBpZHMgZm9yIGVhY2ggYXJnbmFtZSBn
aXZlbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlkcyBpcyBOb25lOgorICAgICAgICAgICAg
aWRmbiA9IE5vbmUKKyAgICAgICAgICAgIGlkc18gPSBOb25lCisgICAgICAgIGVsaWYgY2FsbGFi
bGUoaWRzKToKKyAgICAgICAgICAgIGlkZm4gPSBpZHMKKyAgICAgICAgICAgIGlkc18gPSBOb25l
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZGZuID0gTm9uZQorICAgICAgICAgICAgaWRz
XyA9IHNlbGYuX3ZhbGlkYXRlX2lkcyhpZHMsIHBhcmFtZXRlcnMsIHNlbGYuZnVuY3Rpb24uX19u
YW1lX18pCisgICAgICAgIHJldHVybiBpZG1ha2VyKGFyZ25hbWVzLCBwYXJhbWV0ZXJzLCBpZGZu
LCBpZHNfLCBzZWxmLmNvbmZpZywgbm9kZWlkPW5vZGVpZCkKIAotICAgICAgICAgICAgVXNlIDpt
ZXRoOmBwYXJhbWV0cml6ZWAgaW5zdGVhZC4KKyAgICBkZWYgX3ZhbGlkYXRlX2lkcygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgaWRzOiBJdGVyYWJsZVtVbmlvbltOb25lLCBzdHIsIGZsb2F0LCBp
bnQsIGJvb2xdXSwKKyAgICAgICAgcGFyYW1ldGVyczogdHlwaW5nLlNlcXVlbmNlW1BhcmFtZXRl
clNldF0sCisgICAgICAgIGZ1bmNfbmFtZTogc3RyLAorICAgICkgLT4gTGlzdFtVbmlvbltOb25l
LCBzdHJdXToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbnVtX2lkcyA9IGxlbihpZHMpICAj
IHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdGVyKGlkcykKKyAgICAgICAgICAgIGV4Y2Vw
dCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImlkcyBt
dXN0IGJlIGEgY2FsbGFibGUgb3IgYW4gaXRlcmFibGUiKSBmcm9tIGUKKyAgICAgICAgICAgIG51
bV9pZHMgPSBsZW4ocGFyYW1ldGVycykKKworICAgICAgICAjIG51bV9pZHMgPT0gMCBpcyBhIHNw
ZWNpYWwgY2FzZTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8x
ODQ5CisgICAgICAgIGlmIG51bV9pZHMgIT0gbGVuKHBhcmFtZXRlcnMpIGFuZCBudW1faWRzICE9
IDA6CisgICAgICAgICAgICBtc2cgPSAiSW4ge306IHt9IHBhcmFtZXRlciBzZXRzIHNwZWNpZmll
ZCwgd2l0aCBkaWZmZXJlbnQgbnVtYmVyIG9mIGlkczoge30iCisgICAgICAgICAgICBmYWlsKG1z
Zy5mb3JtYXQoZnVuY19uYW1lLCBsZW4ocGFyYW1ldGVycyksIG51bV9pZHMpLCBweXRyYWNlPUZh
bHNlKQorCisgICAgICAgIG5ld19pZHMgPSBbXQorICAgICAgICBmb3IgaWR4LCBpZF92YWx1ZSBp
biBlbnVtZXJhdGUoaXRlcnRvb2xzLmlzbGljZShpZHMsIG51bV9pZHMpKToKKyAgICAgICAgICAg
IGlmIGlkX3ZhbHVlIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShpZF92YWx1ZSwgc3RyKToKKyAgICAg
ICAgICAgICAgICBuZXdfaWRzLmFwcGVuZChpZF92YWx1ZSkKKyAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShpZF92YWx1ZSwgKGZsb2F0LCBpbnQsIGJvb2wpKToKKyAgICAgICAgICAgICAgICBu
ZXdfaWRzLmFwcGVuZChzdHIoaWRfdmFsdWUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBtc2cgPSAoICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAgICAgICAg
ICAgICAgICAgIkluIHt9OiBpZHMgbXVzdCBiZSBsaXN0IG9mIHN0cmluZy9mbG9hdC9pbnQvYm9v
bCwgIgorICAgICAgICAgICAgICAgICAgICAiZm91bmQ6IHt9ICh0eXBlOiB7IXJ9KSBhdCBpbmRl
eCB7fSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZmFpbCgKKyAgICAgICAg
ICAgICAgICAgICAgbXNnLmZvcm1hdChmdW5jX25hbWUsIHNhZmVyZXByKGlkX3ZhbHVlKSwgdHlw
ZShpZF92YWx1ZSksIGlkeCksCisgICAgICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gbmV3X2lkcwogCi0gICAgICAgIE5vdGUg
dGhhdCByZXF1ZXN0LmFkZGNhbGwoKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSB0ZXN0IGNvbGxlY3Rp
b24gcGhhc2UgcHJpb3IgYW5kCi0gICAgICAgIGluZGVwZW5kZW50bHkgdG8gYWN0dWFsIHRlc3Qg
ZXhlY3V0aW9uLiAgWW91IHNob3VsZCBvbmx5IHVzZSBhZGRjYWxsKCkKLSAgICAgICAgaWYgeW91
IG5lZWQgdG8gc3BlY2lmeSBtdWx0aXBsZSBhcmd1bWVudHMgb2YgYSB0ZXN0IGZ1bmN0aW9uLgor
ICAgIGRlZiBfcmVzb2x2ZV9hcmdfdmFsdWVfdHlwZXMoCisgICAgICAgIHNlbGYsCisgICAgICAg
IGFyZ25hbWVzOiB0eXBpbmcuU2VxdWVuY2Vbc3RyXSwKKyAgICAgICAgaW5kaXJlY3Q6IFVuaW9u
W2Jvb2wsIHR5cGluZy5TZXF1ZW5jZVtzdHJdXSwKKyAgICApIC0+IERpY3Rbc3RyLCAiTGl0ZXJh
bFsncGFyYW1zJywgJ2Z1bmNhcmdzJ10iXToKKyAgICAgICAgIiIiUmVzb2x2ZSBpZiBlYWNoIHBh
cmFtZXRyaXplZCBhcmd1bWVudCBtdXN0IGJlIGNvbnNpZGVyZWQgYQorICAgICAgICBwYXJhbWV0
ZXIgdG8gYSBmaXh0dXJlIG9yIGEgImZ1bmNhcmciIHRvIHRoZSBmdW5jdGlvbiwgYmFzZWQgb24g
dGhlCisgICAgICAgIGBgaW5kaXJlY3RgYCBwYXJhbWV0ZXIgb2YgdGhlIHBhcmFtZXRyaXplZCgp
IGNhbGwuCisKKyAgICAgICAgOnBhcmFtIExpc3Rbc3RyXSBhcmduYW1lczogTGlzdCBvZiBhcmd1
bWVudCBuYW1lcyBwYXNzZWQgdG8gYGBwYXJhbWV0cml6ZSgpYGAuCisgICAgICAgIDpwYXJhbSBp
bmRpcmVjdDogU2FtZSBhcyB0aGUgYGBpbmRpcmVjdGBgIHBhcmFtZXRlciBvZiBgYHBhcmFtZXRy
aXplKClgYC4KKyAgICAgICAgOnJ0eXBlOiBEaWN0W3N0ciwgc3RyXQorICAgICAgICAgICAgQSBk
aWN0IG1hcHBpbmcgZWFjaCBhcmcgbmFtZSB0byBlaXRoZXI6CisgICAgICAgICAgICAqICJwYXJh
bXMiIGlmIHRoZSBhcmduYW1lIHNob3VsZCBiZSB0aGUgcGFyYW1ldGVyIG9mIGEgZml4dHVyZSBv
ZiB0aGUgc2FtZSBuYW1lLgorICAgICAgICAgICAgKiAiZnVuY2FyZ3MiIGlmIHRoZSBhcmduYW1l
IHNob3VsZCBiZSBhIHBhcmFtZXRlciB0byB0aGUgcGFyYW1ldHJpemVkIHRlc3QgZnVuY3Rpb24u
CisgICAgICAgICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGluZGlyZWN0LCBib29sKToKKyAg
ICAgICAgICAgIHZhbHR5cGVzID0gZGljdC5mcm9ta2V5cygKKyAgICAgICAgICAgICAgICBhcmdu
YW1lcywgInBhcmFtcyIgaWYgaW5kaXJlY3QgZWxzZSAiZnVuY2FyZ3MiCisgICAgICAgICAgICAp
ICAjIHR5cGU6IERpY3Rbc3RyLCBMaXRlcmFsWyJwYXJhbXMiLCAiZnVuY2FyZ3MiXV0KKyAgICAg
ICAgZWxpZiBpc2luc3RhbmNlKGluZGlyZWN0LCBTZXF1ZW5jZSk6CisgICAgICAgICAgICB2YWx0
eXBlcyA9IGRpY3QuZnJvbWtleXMoYXJnbmFtZXMsICJmdW5jYXJncyIpCisgICAgICAgICAgICBm
b3IgYXJnIGluIGluZGlyZWN0OgorICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnbmFt
ZXM6CisgICAgICAgICAgICAgICAgICAgIGZhaWwoCisgICAgICAgICAgICAgICAgICAgICAgICAi
SW4ge306IGluZGlyZWN0IGZpeHR1cmUgJ3t9JyBkb2Vzbid0IGV4aXN0Ii5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mdW5jdGlvbi5fX25hbWVfXywgYXJnCisgICAg
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgcHl0cmFjZT1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHZhbHR5cGVzW2Fy
Z10gPSAicGFyYW1zIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmFpbCgKKyAgICAgICAg
ICAgICAgICAiSW4ge2Z1bmN9OiBleHBlY3RlZCBTZXF1ZW5jZSBvciBib29sZWFuIGZvciBpbmRp
cmVjdCwgZ290IHt0eXBlfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICB0eXBlPXR5cGUo
aW5kaXJlY3QpLl9fbmFtZV9fLCBmdW5jPXNlbGYuZnVuY3Rpb24uX19uYW1lX18KKyAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAgICAp
CisgICAgICAgIHJldHVybiB2YWx0eXBlcwogCi0gICAgICAgIDphcmcgZnVuY2FyZ3M6IGFyZ3Vt
ZW50IGtleXdvcmQgZGljdGlvbmFyeSB1c2VkIHdoZW4gaW52b2tpbmcKLSAgICAgICAgICAgIHRo
ZSB0ZXN0IGZ1bmN0aW9uLgorICAgIGRlZiBfdmFsaWRhdGVfaWZfdXNpbmdfYXJnX25hbWVzKAor
ICAgICAgICBzZWxmLAorICAgICAgICBhcmduYW1lczogdHlwaW5nLlNlcXVlbmNlW3N0cl0sCisg
ICAgICAgIGluZGlyZWN0OiBVbmlvbltib29sLCB0eXBpbmcuU2VxdWVuY2Vbc3RyXV0sCisgICAg
KSAtPiBOb25lOgorICAgICAgICAiIiJDaGVjayBpZiBhbGwgYXJnbmFtZXMgYXJlIGJlaW5nIHVz
ZWQsIGJ5IGRlZmF1bHQgdmFsdWVzLCBvciBkaXJlY3RseS9pbmRpcmVjdGx5LgorCisgICAgICAg
IDpwYXJhbSBMaXN0W3N0cl0gYXJnbmFtZXM6IExpc3Qgb2YgYXJndW1lbnQgbmFtZXMgcGFzc2Vk
IHRvIGBgcGFyYW1ldHJpemUoKWBgLgorICAgICAgICA6cGFyYW0gaW5kaXJlY3Q6IFNhbWUgYXMg
dGhlIGBgaW5kaXJlY3RgYCBwYXJhbWV0ZXIgb2YgYGBwYXJhbWV0cml6ZSgpYGAuCisgICAgICAg
IDpyYWlzZXMgVmFsdWVFcnJvcjogSWYgdmFsaWRhdGlvbiBmYWlscy4KKyAgICAgICAgIiIiCisg
ICAgICAgIGRlZmF1bHRfYXJnX25hbWVzID0gc2V0KGdldF9kZWZhdWx0X2FyZ19uYW1lcyhzZWxm
LmZ1bmN0aW9uKSkKKyAgICAgICAgZnVuY19uYW1lID0gc2VsZi5mdW5jdGlvbi5fX25hbWVfXwor
ICAgICAgICBmb3IgYXJnIGluIGFyZ25hbWVzOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBz
ZWxmLmZpeHR1cmVuYW1lczoKKyAgICAgICAgICAgICAgICBpZiBhcmcgaW4gZGVmYXVsdF9hcmdf
bmFtZXM6CisgICAgICAgICAgICAgICAgICAgIGZhaWwoCisgICAgICAgICAgICAgICAgICAgICAg
ICAiSW4ge306IGZ1bmN0aW9uIGFscmVhZHkgdGFrZXMgYW4gYXJndW1lbnQgJ3t9JyB3aXRoIGEg
ZGVmYXVsdCB2YWx1ZSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNf
bmFtZSwgYXJnCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAg
ICAgICAgcHl0cmFjZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5kaXJlY3QsIFNl
cXVlbmNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiZml4dHVyZSIgaWYgYXJn
IGluIGluZGlyZWN0IGVsc2UgImFyZ3VtZW50IgorICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJmaXh0dXJlIiBpZiBpbmRpcmVjdCBlbHNl
ICJhcmd1bWVudCIKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJJbiB7fTogZnVuY3Rpb24gdXNlcyBubyB7fSAne30nIi5mb3JtYXQoZnVuY19uYW1l
LCBuYW1lLCBhcmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgKQogCi0gICAgICAgIDphcmcgaWQ6IHVzZWQgZm9yIHJlcG9ydGlu
ZyBhbmQgaWRlbnRpZmljYXRpb24gcHVycG9zZXMuICBJZiB5b3UKLSAgICAgICAgICAgIGRvbid0
IHN1cHBseSBhbiBgaWRgIGFuIGF1dG9tYXRpYyB1bmlxdWUgaWQgd2lsbCBiZSBnZW5lcmF0ZWQu
CiAKLSAgICAgICAgOmFyZyBwYXJhbTogYSBwYXJhbWV0ZXIgd2hpY2ggd2lsbCBiZSBleHBvc2Vk
IHRvIGEgbGF0ZXIgZml4dHVyZSBmdW5jdGlvbgotICAgICAgICAgICAgaW52b2NhdGlvbiB0aHJv
dWdoIHRoZSBgYHJlcXVlc3QucGFyYW1gYCBhdHRyaWJ1dGUuCi0gICAgICAgICIiIgotICAgICAg
ICBpZiBzZWxmLmNvbmZpZzoKLSAgICAgICAgICAgIHNlbGYuY29uZmlnLndhcm4oCi0gICAgICAg
ICAgICAgICAgIkMxIiwgbWVzc2FnZT1kZXByZWNhdGVkLk1FVEFGVU5DX0FERF9DQUxMLCBmc2xv
Y2F0aW9uPU5vbmUKLSAgICAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGZ1bmNhcmdzIGlzIE5v
bmUgb3IgaXNpbnN0YW5jZShmdW5jYXJncywgZGljdCkKLSAgICAgICAgaWYgZnVuY2FyZ3MgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmdW5jYXJnczoKLSAgICAgICAgICAg
ICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgICAgICAg
ICAgZmFpbCgiZnVuY2FyZyAlciBub3QgdXNlZCBpbiB0aGlzIGZ1bmN0aW9uLiIgJSBuYW1lKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnVuY2FyZ3MgPSB7fQotICAgICAgICBpZiBpZCBp
cyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaWQ9Tm9uZSBub3QgYWxsb3dl
ZCIpCi0gICAgICAgIGlmIGlkIGlzIE5PVFNFVDoKLSAgICAgICAgICAgIGlkID0gbGVuKHNlbGYu
X2NhbGxzKQotICAgICAgICBpZCA9IHN0cihpZCkKLSAgICAgICAgaWYgaWQgaW4gc2VsZi5faWRz
OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRlIGlkICVyIiAlIGlkKQot
ICAgICAgICBzZWxmLl9pZHMuYWRkKGlkKQotCi0gICAgICAgIGNzID0gQ2FsbFNwZWMyKHNlbGYp
Ci0gICAgICAgIGNzLnNldGFsbChmdW5jYXJncywgaWQsIHBhcmFtKQotICAgICAgICBzZWxmLl9j
YWxscy5hcHBlbmQoY3MpCi0KLQotZGVmIF9maW5kX3BhcmFtZXRyaXplZF9zY29wZShhcmduYW1l
cywgYXJnMmZpeHR1cmVkZWZzLCBpbmRpcmVjdCk6CitkZWYgX2ZpbmRfcGFyYW1ldHJpemVkX3Nj
b3BlKAorICAgIGFyZ25hbWVzOiB0eXBpbmcuU2VxdWVuY2Vbc3RyXSwKKyAgICBhcmcyZml4dHVy
ZWRlZnM6IE1hcHBpbmdbc3RyLCB0eXBpbmcuU2VxdWVuY2VbZml4dHVyZXMuRml4dHVyZURlZltv
YmplY3RdXV0sCisgICAgaW5kaXJlY3Q6IFVuaW9uW2Jvb2wsIHR5cGluZy5TZXF1ZW5jZVtzdHJd
XSwKKykgLT4gImZpeHR1cmVzLl9TY29wZSI6CiAgICAgIiIiRmluZCB0aGUgbW9zdCBhcHByb3By
aWF0ZSBzY29wZSBmb3IgYSBwYXJhbWV0cml6ZWQgY2FsbCBiYXNlZCBvbiBpdHMgYXJndW1lbnRz
LgogCiAgICAgV2hlbiB0aGVyZSdzIGF0IGxlYXN0IG9uZSBkaXJlY3QgYXJndW1lbnQsIGFsd2F5
cyB1c2UgImZ1bmN0aW9uIiBzY29wZS4KQEAgLTEwMDEsODggKzEyNDgsMTM3IEBAIGRlZiBfZmlu
ZF9wYXJhbWV0cml6ZWRfc2NvcGUoYXJnbmFtZXMsIGFyZzJmaXh0dXJlZGVmcywgaW5kaXJlY3Qp
OgogCiAgICAgUmVsYXRlZCB0byBpc3N1ZSAjMTgzMiwgYmFzZWQgb24gY29kZSBwb3N0ZWQgYnkg
QEtpbmdkcmVhZC4KICAgICAiIiIKLSAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IHNj
b3BlcworICAgIGlmIGlzaW5zdGFuY2UoaW5kaXJlY3QsIFNlcXVlbmNlKToKKyAgICAgICAgYWxs
X2FyZ3VtZW50c19hcmVfZml4dHVyZXMgPSBsZW4oaW5kaXJlY3QpID09IGxlbihhcmduYW1lcykK
KyAgICBlbHNlOgorICAgICAgICBhbGxfYXJndW1lbnRzX2FyZV9maXh0dXJlcyA9IGJvb2woaW5k
aXJlY3QpCiAKLSAgICBpbmRpcmVjdF9hc19saXN0ID0gaXNpbnN0YW5jZShpbmRpcmVjdCwgKGxp
c3QsIHR1cGxlKSkKLSAgICBhbGxfYXJndW1lbnRzX2FyZV9maXh0dXJlcyA9IGluZGlyZWN0IGlz
IFRydWUgb3IgaW5kaXJlY3RfYXNfbGlzdCBhbmQgbGVuKAotICAgICAgICBpbmRpcmVjdAotICAg
ICkgPT0gYXJnbmFtZXMKICAgICBpZiBhbGxfYXJndW1lbnRzX2FyZV9maXh0dXJlczoKICAgICAg
ICAgZml4dHVyZWRlZnMgPSBhcmcyZml4dHVyZWRlZnMgb3Ige30KLSAgICAgICAgdXNlZF9zY29w
ZXMgPSBbZml4dHVyZWRlZlswXS5zY29wZSBmb3IgbmFtZSwgZml4dHVyZWRlZiBpbiBmaXh0dXJl
ZGVmcy5pdGVtcygpXQorICAgICAgICB1c2VkX3Njb3BlcyA9IFsKKyAgICAgICAgICAgIGZpeHR1
cmVkZWZbMF0uc2NvcGUKKyAgICAgICAgICAgIGZvciBuYW1lLCBmaXh0dXJlZGVmIGluIGZpeHR1
cmVkZWZzLml0ZW1zKCkKKyAgICAgICAgICAgIGlmIG5hbWUgaW4gYXJnbmFtZXMKKyAgICAgICAg
XQogICAgICAgICBpZiB1c2VkX3Njb3BlczoKLSAgICAgICAgICAgICMgVGFrZXMgdGhlIG1vc3Qg
bmFycm93IHNjb3BlIGZyb20gdXNlZCBmaXh0dXJlcwotICAgICAgICAgICAgZm9yIHNjb3BlIGlu
IHJldmVyc2VkKHNjb3Blcyk6CisgICAgICAgICAgICAjIFRha2VzIHRoZSBtb3N0IG5hcnJvdyBz
Y29wZSBmcm9tIHVzZWQgZml4dHVyZXMuCisgICAgICAgICAgICBmb3Igc2NvcGUgaW4gcmV2ZXJz
ZWQoZml4dHVyZXMuc2NvcGVzKToKICAgICAgICAgICAgICAgICBpZiBzY29wZSBpbiB1c2VkX3Nj
b3BlczoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlCiAKICAgICByZXR1cm4gImZ1
bmN0aW9uIgogCiAKLWRlZiBfaWR2YWwodmFsLCBhcmduYW1lLCBpZHgsIGlkZm4sIGNvbmZpZz1O
b25lKToKK2RlZiBfYXNjaWlfZXNjYXBlZF9ieV9jb25maWcodmFsOiBVbmlvbltzdHIsIGJ5dGVz
XSwgY29uZmlnOiBPcHRpb25hbFtDb25maWddKSAtPiBzdHI6CisgICAgaWYgY29uZmlnIGlzIE5v
bmU6CisgICAgICAgIGVzY2FwZV9vcHRpb24gPSBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIGVz
Y2FwZV9vcHRpb24gPSBjb25maWcuZ2V0aW5pKAorICAgICAgICAgICAgImRpc2FibGVfdGVzdF9p
ZF9lc2NhcGluZ19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9zdXBwb3J0Igor
ICAgICAgICApCisgICAgIyBUT0RPOiBJZiBlc2NhcGluZyBpcyB0dXJuZWQgb2ZmIGFuZCB0aGUg
dXNlciBwYXNzZXMgYnl0ZXMsCisgICAgIyAgICAgICB3aWxsIHJldHVybiBhIGJ5dGVzLiBGb3Ig
bm93IHdlIGlnbm9yZSB0aGlzIGJ1dCB0aGUKKyAgICAjICAgICAgIGNvZGUgKnByb2JhYmx5KiBk
b2Vzbid0IGhhbmRsZSB0aGlzIGNhc2UuCisgICAgcmV0dXJuIHZhbCBpZiBlc2NhcGVfb3B0aW9u
IGVsc2UgYXNjaWlfZXNjYXBlZCh2YWwpICAjIHR5cGU6IGlnbm9yZQorCisKK2RlZiBfaWR2YWwo
CisgICAgdmFsOiBvYmplY3QsCisgICAgYXJnbmFtZTogc3RyLAorICAgIGlkeDogaW50LAorICAg
IGlkZm46IE9wdGlvbmFsW0NhbGxhYmxlW1tBbnldLCBPcHRpb25hbFtvYmplY3RdXV0sCisgICAg
bm9kZWlkOiBPcHRpb25hbFtzdHJdLAorICAgIGNvbmZpZzogT3B0aW9uYWxbQ29uZmlnXSwKKykg
LT4gc3RyOgogICAgIGlmIGlkZm46Ci0gICAgICAgIHMgPSBOb25lCiAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHMgPSBpZGZuKHZhbCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAg
ICAgICAgICMgU2VlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjE2OQotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0KLSAgICAgICAgICAgIG1z
ZyA9ICJSYWlzZWQgd2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBpZCBvZiBwYXJhbWV0ZXIgJXMg
YXQgcG9zaXRpb24gJWQuIiAlICgKLSAgICAgICAgICAgICAgICBhcmduYW1lLCBpZHgKLSAgICAg
ICAgICAgICkKLSAgICAgICAgICAgIG1zZyArPSAiXG5VcGRhdGUgeW91ciBjb2RlIGFzIHRoaXMg
d2lsbCByYWlzZSBhbiBlcnJvciBpbiBweXRlc3QtNC4wLiIKLSAgICAgICAgICAgIHdhcm5pbmdz
Lndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGlmIHM6Ci0gICAgICAgICAg
ICByZXR1cm4gYXNjaWlfZXNjYXBlZChzKQotCi0gICAgaWYgY29uZmlnOgorICAgICAgICAgICAg
Z2VuZXJhdGVkX2lkID0gaWRmbih2YWwpCisgICAgICAgICAgICBpZiBnZW5lcmF0ZWRfaWQgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgdmFsID0gZ2VuZXJhdGVkX2lkCisgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByZWZpeCA9ICJ7fTogIi5mb3JtYXQo
bm9kZWlkKSBpZiBub2RlaWQgaXMgbm90IE5vbmUgZWxzZSAiIgorICAgICAgICAgICAgbXNnID0g
ImVycm9yIHJhaXNlZCB3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlkIG9mIHBhcmFtZXRlciAn
e30nIGF0IHBvc2l0aW9uIHt9IgorICAgICAgICAgICAgbXNnID0gcHJlZml4ICsgbXNnLmZvcm1h
dChhcmduYW1lLCBpZHgpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykgZnJvbSBl
CisgICAgZWxpZiBjb25maWc6CiAgICAgICAgIGhvb2tfaWQgPSBjb25maWcuaG9vay5weXRlc3Rf
bWFrZV9wYXJhbWV0cml6ZV9pZCgKICAgICAgICAgICAgIGNvbmZpZz1jb25maWcsIHZhbD12YWws
IGFyZ25hbWU9YXJnbmFtZQotICAgICAgICApCisgICAgICAgICkgICMgdHlwZTogT3B0aW9uYWxb
c3RyXQogICAgICAgICBpZiBob29rX2lkOgogICAgICAgICAgICAgcmV0dXJuIGhvb2tfaWQKIAog
ICAgIGlmIGlzaW5zdGFuY2UodmFsLCBTVFJJTkdfVFlQRVMpOgotICAgICAgICByZXR1cm4gYXNj
aWlfZXNjYXBlZCh2YWwpCi0gICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgKGZsb2F0LCBpbnQsIGJv
b2wsIE5vbmVUeXBlKSk6CisgICAgICAgIHJldHVybiBfYXNjaWlfZXNjYXBlZF9ieV9jb25maWco
dmFsLCBjb25maWcpCisgICAgZWxpZiB2YWwgaXMgTm9uZSBvciBpc2luc3RhbmNlKHZhbCwgKGZs
b2F0LCBpbnQsIGJvb2wpKToKICAgICAgICAgcmV0dXJuIHN0cih2YWwpCiAgICAgZWxpZiBpc2lu
c3RhbmNlKHZhbCwgUkVHRVhfVFlQRSk6CiAgICAgICAgIHJldHVybiBhc2NpaV9lc2NhcGVkKHZh
bC5wYXR0ZXJuKQotICAgIGVsaWYgZW51bSBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZSh2YWws
IGVudW0uRW51bSk6CisgICAgZWxpZiB2YWwgaXMgTk9UU0VUOgorICAgICAgICAjIEZhbGxiYWNr
IHRvIGRlZmF1bHQuIE5vdGUgdGhhdCBOT1RTRVQgaXMgYW4gZW51bS5FbnVtLgorICAgICAgICBw
YXNzCisgICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgZW51bS5FbnVtKToKICAgICAgICAgcmV0dXJu
IHN0cih2YWwpCi0gICAgZWxpZiAoaXNjbGFzcyh2YWwpIG9yIGlzZnVuY3Rpb24odmFsKSkgYW5k
IGhhc2F0dHIodmFsLCAiX19uYW1lX18iKToKLSAgICAgICAgcmV0dXJuIHZhbC5fX25hbWVfXwor
ICAgIGVsaWYgaXNpbnN0YW5jZShnZXRhdHRyKHZhbCwgIl9fbmFtZV9fIiwgTm9uZSksIHN0cik6
CisgICAgICAgICMgTmFtZSBvZiBhIGNsYXNzLCBmdW5jdGlvbiwgbW9kdWxlLCBldGMuCisgICAg
ICAgIG5hbWUgPSBnZXRhdHRyKHZhbCwgIl9fbmFtZV9fIikgICMgdHlwZTogc3RyCisgICAgICAg
IHJldHVybiBuYW1lCiAgICAgcmV0dXJuIHN0cihhcmduYW1lKSArIHN0cihpZHgpCiAKIAotZGVm
IF9pZHZhbHNldChpZHgsIHBhcmFtZXRlcnNldCwgYXJnbmFtZXMsIGlkZm4sIGlkcywgY29uZmln
PU5vbmUpOgorZGVmIF9pZHZhbHNldCgKKyAgICBpZHg6IGludCwKKyAgICBwYXJhbWV0ZXJzZXQ6
IFBhcmFtZXRlclNldCwKKyAgICBhcmduYW1lczogSXRlcmFibGVbc3RyXSwKKyAgICBpZGZuOiBP
cHRpb25hbFtDYWxsYWJsZVtbQW55XSwgT3B0aW9uYWxbb2JqZWN0XV1dLAorICAgIGlkczogT3B0
aW9uYWxbTGlzdFtVbmlvbltOb25lLCBzdHJdXV0sCisgICAgbm9kZWlkOiBPcHRpb25hbFtzdHJd
LAorICAgIGNvbmZpZzogT3B0aW9uYWxbQ29uZmlnXSwKKykgLT4gc3RyOgogICAgIGlmIHBhcmFt
ZXRlcnNldC5pZCBpcyBub3QgTm9uZToKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNldC5pZAot
ICAgIGlmIGlkcyBpcyBOb25lIG9yIChpZHggPj0gbGVuKGlkcykgb3IgaWRzW2lkeF0gaXMgTm9u
ZSk6CisgICAgaWQgPSBOb25lIGlmIGlkcyBpcyBOb25lIG9yIGlkeCA+PSBsZW4oaWRzKSBlbHNl
IGlkc1tpZHhdCisgICAgaWYgaWQgaXMgTm9uZToKICAgICAgICAgdGhpc19pZCA9IFsKLSAgICAg
ICAgICAgIF9pZHZhbCh2YWwsIGFyZ25hbWUsIGlkeCwgaWRmbiwgY29uZmlnKQorICAgICAgICAg
ICAgX2lkdmFsKHZhbCwgYXJnbmFtZSwgaWR4LCBpZGZuLCBub2RlaWQ9bm9kZWlkLCBjb25maWc9
Y29uZmlnKQogICAgICAgICAgICAgZm9yIHZhbCwgYXJnbmFtZSBpbiB6aXAocGFyYW1ldGVyc2V0
LnZhbHVlcywgYXJnbmFtZXMpCiAgICAgICAgIF0KICAgICAgICAgcmV0dXJuICItIi5qb2luKHRo
aXNfaWQpCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGFzY2lpX2VzY2FwZWQoaWRzW2lkeF0p
Ci0KLQotZGVmIGlkbWFrZXIoYXJnbmFtZXMsIHBhcmFtZXRlcnNldHMsIGlkZm49Tm9uZSwgaWRz
PU5vbmUsIGNvbmZpZz1Ob25lKToKLSAgICBpZHMgPSBbCi0gICAgICAgIF9pZHZhbHNldCh2YWxp
bmRleCwgcGFyYW1ldGVyc2V0LCBhcmduYW1lcywgaWRmbiwgaWRzLCBjb25maWcpCisgICAgICAg
IHJldHVybiBfYXNjaWlfZXNjYXBlZF9ieV9jb25maWcoaWQsIGNvbmZpZykKKworCitkZWYgaWRt
YWtlcigKKyAgICBhcmduYW1lczogSXRlcmFibGVbc3RyXSwKKyAgICBwYXJhbWV0ZXJzZXRzOiBJ
dGVyYWJsZVtQYXJhbWV0ZXJTZXRdLAorICAgIGlkZm46IE9wdGlvbmFsW0NhbGxhYmxlW1tBbnld
LCBPcHRpb25hbFtvYmplY3RdXV0gPSBOb25lLAorICAgIGlkczogT3B0aW9uYWxbTGlzdFtVbmlv
bltOb25lLCBzdHJdXV0gPSBOb25lLAorICAgIGNvbmZpZzogT3B0aW9uYWxbQ29uZmlnXSA9IE5v
bmUsCisgICAgbm9kZWlkOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKykgLT4gTGlzdFtzdHJdOgor
ICAgIHJlc29sdmVkX2lkcyA9IFsKKyAgICAgICAgX2lkdmFsc2V0KAorICAgICAgICAgICAgdmFs
aW5kZXgsIHBhcmFtZXRlcnNldCwgYXJnbmFtZXMsIGlkZm4sIGlkcywgY29uZmlnPWNvbmZpZywg
bm9kZWlkPW5vZGVpZAorICAgICAgICApCiAgICAgICAgIGZvciB2YWxpbmRleCwgcGFyYW1ldGVy
c2V0IGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzZXRzKQogICAgIF0KLSAgICBpZiBsZW4oc2V0KGlk
cykpICE9IGxlbihpZHMpOgotICAgICAgICAjIFRoZSBpZHMgYXJlIG5vdCB1bmlxdWUKLSAgICAg
ICAgZHVwbGljYXRlcyA9IFt0ZXN0aWQgZm9yIHRlc3RpZCBpbiBpZHMgaWYgaWRzLmNvdW50KHRl
c3RpZCkgPiAxXQotICAgICAgICBjb3VudGVycyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxh
bWJkYTogMCkKLSAgICAgICAgZm9yIGluZGV4LCB0ZXN0aWQgaW4gZW51bWVyYXRlKGlkcyk6Ci0g
ICAgICAgICAgICBpZiB0ZXN0aWQgaW4gZHVwbGljYXRlczoKLSAgICAgICAgICAgICAgICBpZHNb
aW5kZXhdID0gdGVzdGlkICsgc3RyKGNvdW50ZXJzW3Rlc3RpZF0pCi0gICAgICAgICAgICAgICAg
Y291bnRlcnNbdGVzdGlkXSArPSAxCi0gICAgcmV0dXJuIGlkcworCisgICAgIyBBbGwgSURzIG11
c3QgYmUgdW5pcXVlIQorICAgIHVuaXF1ZV9pZHMgPSBzZXQocmVzb2x2ZWRfaWRzKQorICAgIGlm
IGxlbih1bmlxdWVfaWRzKSAhPSBsZW4ocmVzb2x2ZWRfaWRzKToKKworICAgICAgICAjIFJlY29y
ZCB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIGVhY2ggdGVzdCBJRC4KKyAgICAgICAgdGVz
dF9pZF9jb3VudHMgPSBDb3VudGVyKHJlc29sdmVkX2lkcykKKworICAgICAgICAjIE1hcCB0aGUg
dGVzdCBJRCB0byBpdHMgbmV4dCBzdWZmaXguCisgICAgICAgIHRlc3RfaWRfc3VmZml4ZXMgPSBk
ZWZhdWx0ZGljdChpbnQpICAjIHR5cGU6IERpY3Rbc3RyLCBpbnRdCisKKyAgICAgICAgIyBTdWZm
aXggbm9uLXVuaXF1ZSBJRHMgdG8gbWFrZSB0aGVtIHVuaXF1ZS4KKyAgICAgICAgZm9yIGluZGV4
LCB0ZXN0X2lkIGluIGVudW1lcmF0ZShyZXNvbHZlZF9pZHMpOgorICAgICAgICAgICAgaWYgdGVz
dF9pZF9jb3VudHNbdGVzdF9pZF0gPiAxOgorICAgICAgICAgICAgICAgIHJlc29sdmVkX2lkc1tp
bmRleF0gPSAie317fSIuZm9ybWF0KHRlc3RfaWQsIHRlc3RfaWRfc3VmZml4ZXNbdGVzdF9pZF0p
CisgICAgICAgICAgICAgICAgdGVzdF9pZF9zdWZmaXhlc1t0ZXN0X2lkXSArPSAxCisKKyAgICBy
ZXR1cm4gcmVzb2x2ZWRfaWRzCiAKIAogZGVmIHNob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29uZmln
KToKQEAgLTEwOTEsNyArMTM4Nyw3IEBAIGRlZiBzaG93X2ZpeHR1cmVzX3Blcl90ZXN0KGNvbmZp
Zyk6CiAgICAgcmV0dXJuIHdyYXBfc2Vzc2lvbihjb25maWcsIF9zaG93X2ZpeHR1cmVzX3Blcl90
ZXN0KQogCiAKLWRlZiBfc2hvd19maXh0dXJlc19wZXJfdGVzdChjb25maWcsIHNlc3Npb24pOgor
ZGVmIF9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0KGNvbmZpZzogQ29uZmlnLCBzZXNzaW9uOiBTZXNz
aW9uKSAtPiBOb25lOgogICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwogCiAgICAgc2Vzc2lvbi5w
ZXJmb3JtX2NvbGxlY3QoKQpAQCAtMTEwMCwxMCArMTM5NiwxMCBAQCBkZWYgX3Nob3dfZml4dHVy
ZXNfcGVyX3Rlc3QoY29uZmlnLCBzZXNzaW9uKToKICAgICB2ZXJib3NlID0gY29uZmlnLmdldHZh
bHVlKCJ2ZXJib3NlIikKIAogICAgIGRlZiBnZXRfYmVzdF9yZWxwYXRoKGZ1bmMpOgotICAgICAg
ICBsb2MgPSBnZXRsb2NhdGlvbihmdW5jLCBjdXJkaXIpCi0gICAgICAgIHJldHVybiBjdXJkaXIu
YmVzdHJlbHBhdGgobG9jKQorICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihmdW5jLCBzdHIoY3Vy
ZGlyKSkKKyAgICAgICAgcmV0dXJuIGN1cmRpci5iZXN0cmVscGF0aChweS5wYXRoLmxvY2FsKGxv
YykpCiAKLSAgICBkZWYgd3JpdGVfZml4dHVyZShmaXh0dXJlX2RlZik6CisgICAgZGVmIHdyaXRl
X2ZpeHR1cmUoZml4dHVyZV9kZWY6IGZpeHR1cmVzLkZpeHR1cmVEZWZbb2JqZWN0XSkgLT4gTm9u
ZToKICAgICAgICAgYXJnbmFtZSA9IGZpeHR1cmVfZGVmLmFyZ25hbWUKICAgICAgICAgaWYgdmVy
Ym9zZSA8PSAwIGFuZCBhcmduYW1lLnN0YXJ0c3dpdGgoIl8iKToKICAgICAgICAgICAgIHJldHVy
bgpAQCAtMTExMyw0MyArMTQwOSw0MSBAQCBkZWYgX3Nob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29u
ZmlnLCBzZXNzaW9uKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bmNhcmdzcGVjID0g
YXJnbmFtZQogICAgICAgICB0dy5saW5lKGZ1bmNhcmdzcGVjLCBncmVlbj1UcnVlKQotICAgICAg
ICBmaXh0dXJlX2RvYyA9IGZpeHR1cmVfZGVmLmZ1bmMuX19kb2NfXworICAgICAgICBmaXh0dXJl
X2RvYyA9IGluc3BlY3QuZ2V0ZG9jKGZpeHR1cmVfZGVmLmZ1bmMpCiAgICAgICAgIGlmIGZpeHR1
cmVfZG9jOgogICAgICAgICAgICAgd3JpdGVfZG9jc3RyaW5nKHR3LCBmaXh0dXJlX2RvYykKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHR3LmxpbmUoIiAgICBubyBkb2NzdHJpbmcgYXZhaWxh
YmxlIiwgcmVkPVRydWUpCiAKLSAgICBkZWYgd3JpdGVfaXRlbShpdGVtKToKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgaW5mbyA9IGl0ZW0uX2ZpeHR1cmVpbmZvCi0gICAgICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICMgZG9jdGVzdHMgaXRlbXMgaGF2ZSBubyBfZml4
dHVyZWluZm8gYXR0cmlidXRlCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbm90IGlu
Zm8ubmFtZTJmaXh0dXJlZGVmczoKLSAgICAgICAgICAgICMgdGhpcyB0ZXN0IGl0ZW0gZG9lcyBu
b3QgdXNlIGFueSBmaXh0dXJlcworICAgIGRlZiB3cml0ZV9pdGVtKGl0ZW06IG5vZGVzLkl0ZW0p
IC0+IE5vbmU6CisgICAgICAgICMgTm90IGFsbCBpdGVtcyBoYXZlIF9maXh0dXJlaW5mbyBhdHRy
aWJ1dGUuCisgICAgICAgIGluZm8gPSBnZXRhdHRyKGl0ZW0sICJfZml4dHVyZWluZm8iLCBOb25l
KSAgIyB0eXBlOiBPcHRpb25hbFtGdW5jRml4dHVyZUluZm9dCisgICAgICAgIGlmIGluZm8gaXMg
Tm9uZSBvciBub3QgaW5mby5uYW1lMmZpeHR1cmVkZWZzOgorICAgICAgICAgICAgIyBUaGlzIHRl
c3QgaXRlbSBkb2VzIG5vdCB1c2UgYW55IGZpeHR1cmVzLgogICAgICAgICAgICAgcmV0dXJuCiAg
ICAgICAgIHR3LmxpbmUoKQogICAgICAgICB0dy5zZXAoIi0iLCAiZml4dHVyZXMgdXNlZCBieSB7
fSIuZm9ybWF0KGl0ZW0ubmFtZSkpCi0gICAgICAgIHR3LnNlcCgiLSIsICIoe30pIi5mb3JtYXQo
Z2V0X2Jlc3RfcmVscGF0aChpdGVtLmZ1bmN0aW9uKSkpCi0gICAgICAgICMgZGljdCBrZXkgbm90
IHVzZWQgaW4gbG9vcCBidXQgbmVlZGVkIGZvciBzb3J0aW5nCisgICAgICAgICMgVE9ETzogRml4
IHRoaXMgdHlwZSBpZ25vcmUuCisgICAgICAgIHR3LnNlcCgiLSIsICIoe30pIi5mb3JtYXQoZ2V0
X2Jlc3RfcmVscGF0aChpdGVtLmZ1bmN0aW9uKSkpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmlu
ZWRdCisgICAgICAgICMgZGljdCBrZXkgbm90IHVzZWQgaW4gbG9vcCBidXQgbmVlZGVkIGZvciBz
b3J0aW5nLgogICAgICAgICBmb3IgXywgZml4dHVyZWRlZnMgaW4gc29ydGVkKGluZm8ubmFtZTJm
aXh0dXJlZGVmcy5pdGVtcygpKToKICAgICAgICAgICAgIGFzc2VydCBmaXh0dXJlZGVmcyBpcyBu
b3QgTm9uZQogICAgICAgICAgICAgaWYgbm90IGZpeHR1cmVkZWZzOgogICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICAjIGxhc3QgaXRlbSBpcyBleHBlY3RlZCB0byBiZSB0aGUg
b25lIHVzZWQgYnkgdGhlIHRlc3QgaXRlbQorICAgICAgICAgICAgIyBMYXN0IGl0ZW0gaXMgZXhw
ZWN0ZWQgdG8gYmUgdGhlIG9uZSB1c2VkIGJ5IHRoZSB0ZXN0IGl0ZW0uCiAgICAgICAgICAgICB3
cml0ZV9maXh0dXJlKGZpeHR1cmVkZWZzWy0xXSkKIAogICAgIGZvciBzZXNzaW9uX2l0ZW0gaW4g
c2Vzc2lvbi5pdGVtczoKICAgICAgICAgd3JpdGVfaXRlbShzZXNzaW9uX2l0ZW0pCiAKIAotZGVm
IHNob3dmaXh0dXJlcyhjb25maWcpOgorZGVmIHNob3dmaXh0dXJlcyhjb25maWc6IENvbmZpZykg
LT4gVW5pb25baW50LCBFeGl0Q29kZV06CiAgICAgZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IHdy
YXBfc2Vzc2lvbgogCiAgICAgcmV0dXJuIHdyYXBfc2Vzc2lvbihjb25maWcsIF9zaG93Zml4dHVy
ZXNfbWFpbikKIAogCi1kZWYgX3Nob3dmaXh0dXJlc19tYWluKGNvbmZpZywgc2Vzc2lvbik6Citk
ZWYgX3Nob3dmaXh0dXJlc19tYWluKGNvbmZpZzogQ29uZmlnLCBzZXNzaW9uOiBTZXNzaW9uKSAt
PiBOb25lOgogICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwogCiAgICAgc2Vzc2lvbi5wZXJmb3Jt
X2NvbGxlY3QoKQpAQCAtMTE2MCwxNCArMTQ1NCwxNCBAQCBkZWYgX3Nob3dmaXh0dXJlc19tYWlu
KGNvbmZpZywgc2Vzc2lvbik6CiAgICAgZm0gPSBzZXNzaW9uLl9maXh0dXJlbWFuYWdlcgogCiAg
ICAgYXZhaWxhYmxlID0gW10KLSAgICBzZWVuID0gc2V0KCkKKyAgICBzZWVuID0gc2V0KCkgICMg
dHlwZTogU2V0W1R1cGxlW3N0ciwgc3RyXV0KIAogICAgIGZvciBhcmduYW1lLCBmaXh0dXJlZGVm
cyBpbiBmbS5fYXJnMmZpeHR1cmVkZWZzLml0ZW1zKCk6CiAgICAgICAgIGFzc2VydCBmaXh0dXJl
ZGVmcyBpcyBub3QgTm9uZQogICAgICAgICBpZiBub3QgZml4dHVyZWRlZnM6CiAgICAgICAgICAg
ICBjb250aW51ZQogICAgICAgICBmb3IgZml4dHVyZWRlZiBpbiBmaXh0dXJlZGVmczoKLSAgICAg
ICAgICAgIGxvYyA9IGdldGxvY2F0aW9uKGZpeHR1cmVkZWYuZnVuYywgY3VyZGlyKQorICAgICAg
ICAgICAgbG9jID0gZ2V0bG9jYXRpb24oZml4dHVyZWRlZi5mdW5jLCBzdHIoY3VyZGlyKSkKICAg
ICAgICAgICAgIGlmIChmaXh0dXJlZGVmLmFyZ25hbWUsIGxvYykgaW4gc2VlbjoKICAgICAgICAg
ICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc2Vlbi5hZGQoKGZpeHR1cmVkZWYuYXJnbmFt
ZSwgbG9jKSkKQEAgLTExNzUsNyArMTQ2OSw3IEBAIGRlZiBfc2hvd2ZpeHR1cmVzX21haW4oY29u
ZmlnLCBzZXNzaW9uKToKICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgIGxl
bihmaXh0dXJlZGVmLmJhc2VpZCksCiAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuZnVu
Yy5fX21vZHVsZV9fLAotICAgICAgICAgICAgICAgICAgICBjdXJkaXIuYmVzdHJlbHBhdGgobG9j
KSwKKyAgICAgICAgICAgICAgICAgICAgY3VyZGlyLmJlc3RyZWxwYXRoKHB5LnBhdGgubG9jYWwo
bG9jKSksCiAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuYXJnbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgZml4dHVyZWRlZiwKICAgICAgICAgICAgICAgICApCkBAIC0xMTg3LDY1ICsx
NDgxLDkwIEBAIGRlZiBfc2hvd2ZpeHR1cmVzX21haW4oY29uZmlnLCBzZXNzaW9uKToKICAgICAg
ICAgaWYgY3VycmVudG1vZHVsZSAhPSBtb2R1bGU6CiAgICAgICAgICAgICBpZiBub3QgbW9kdWxl
LnN0YXJ0c3dpdGgoIl9weXRlc3QuIik6CiAgICAgICAgICAgICAgICAgdHcubGluZSgpCi0gICAg
ICAgICAgICAgICAgdHcuc2VwKCItIiwgImZpeHR1cmVzIGRlZmluZWQgZnJvbSAlcyIgJSAobW9k
dWxlLCkpCisgICAgICAgICAgICAgICAgdHcuc2VwKCItIiwgImZpeHR1cmVzIGRlZmluZWQgZnJv
bSB7fSIuZm9ybWF0KG1vZHVsZSkpCiAgICAgICAgICAgICAgICAgY3VycmVudG1vZHVsZSA9IG1v
ZHVsZQogICAgICAgICBpZiB2ZXJib3NlIDw9IDAgYW5kIGFyZ25hbWVbMF0gPT0gIl8iOgogICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgdHcud3JpdGUoYXJnbmFtZSwgZ3JlZW49VHJ1ZSkK
KyAgICAgICAgaWYgZml4dHVyZWRlZi5zY29wZSAhPSAiZnVuY3Rpb24iOgorICAgICAgICAgICAg
dHcud3JpdGUoIiBbJXMgc2NvcGVdIiAlIGZpeHR1cmVkZWYuc2NvcGUsIGN5YW49VHJ1ZSkKICAg
ICAgICAgaWYgdmVyYm9zZSA+IDA6Ci0gICAgICAgICAgICBmdW5jYXJnc3BlYyA9ICIlcyAtLSAl
cyIgJSAoYXJnbmFtZSwgYmVzdHJlbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmNh
cmdzcGVjID0gYXJnbmFtZQotICAgICAgICB0dy5saW5lKGZ1bmNhcmdzcGVjLCBncmVlbj1UcnVl
KQotICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihmaXh0dXJlZGVmLmZ1bmMsIGN1cmRpcikKLSAg
ICAgICAgZG9jID0gZml4dHVyZWRlZi5mdW5jLl9fZG9jX18gb3IgIiIKKyAgICAgICAgICAgIHR3
LndyaXRlKCIgLS0gJXMiICUgYmVzdHJlbCwgeWVsbG93PVRydWUpCisgICAgICAgIHR3LndyaXRl
KCJcbiIpCisgICAgICAgIGxvYyA9IGdldGxvY2F0aW9uKGZpeHR1cmVkZWYuZnVuYywgc3RyKGN1
cmRpcikpCisgICAgICAgIGRvYyA9IGluc3BlY3QuZ2V0ZG9jKGZpeHR1cmVkZWYuZnVuYykKICAg
ICAgICAgaWYgZG9jOgogICAgICAgICAgICAgd3JpdGVfZG9jc3RyaW5nKHR3LCBkb2MpCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICB0dy5saW5lKCIgICAgJXM6IG5vIGRvY3N0cmluZyBhdmFp
bGFibGUiICUgKGxvYywpLCByZWQ9VHJ1ZSkKLQotCi1kZWYgd3JpdGVfZG9jc3RyaW5nKHR3LCBk
b2MpOgotICAgIElOREVOVCA9ICIgICAgIgotICAgIGRvYyA9IGRvYy5yc3RyaXAoKQotICAgIGlm
ICJcbiIgaW4gZG9jOgotICAgICAgICBmaXJzdGxpbmUsIHJlc3QgPSBkb2Muc3BsaXQoIlxuIiwg
MSkKLSAgICBlbHNlOgotICAgICAgICBmaXJzdGxpbmUsIHJlc3QgPSBkb2MsICIiCi0KLSAgICBp
ZiBmaXJzdGxpbmUuc3RyaXAoKToKLSAgICAgICAgdHcubGluZShJTkRFTlQgKyBmaXJzdGxpbmUu
c3RyaXAoKSkKLQotICAgIGlmIHJlc3Q6Ci0gICAgICAgIGZvciBsaW5lIGluIGRlZGVudChyZXN0
KS5zcGxpdCgiXG4iKToKLSAgICAgICAgICAgIHR3LndyaXRlKElOREVOVCArIGxpbmUgKyAiXG4i
KQorICAgICAgICAgICAgdHcubGluZSgiICAgIHt9OiBubyBkb2NzdHJpbmcgYXZhaWxhYmxlIi5m
b3JtYXQobG9jKSwgcmVkPVRydWUpCisgICAgICAgIHR3LmxpbmUoKQogCiAKLWNsYXNzIEZ1bmN0
aW9uKEZ1bmN0aW9uTWl4aW4sIG5vZGVzLkl0ZW0sIGZpeHR1cmVzLkZ1bmNhcmduYW1lc0NvbXBh
dEF0dHIpOgotICAgICIiIiBhIEZ1bmN0aW9uIEl0ZW0gaXMgcmVzcG9uc2libGUgZm9yIHNldHRp
bmcgdXAgYW5kIGV4ZWN1dGluZyBhCi0gICAgUHl0aG9uIHRlc3QgZnVuY3Rpb24uCitkZWYgd3Jp
dGVfZG9jc3RyaW5nKHR3OiBUZXJtaW5hbFdyaXRlciwgZG9jOiBzdHIsIGluZGVudDogc3RyID0g
IiAgICAiKSAtPiBOb25lOgorICAgIGZvciBsaW5lIGluIGRvYy5zcGxpdCgiXG4iKToKKyAgICAg
ICAgdHcubGluZShpbmRlbnQgKyBsaW5lKQorCisKK2NsYXNzIEZ1bmN0aW9uKFB5b2JqTWl4aW4s
IG5vZGVzLkl0ZW0pOgorICAgICIiIkFuIEl0ZW0gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAg
YW5kIGV4ZWN1dGluZyBhIFB5dGhvbiB0ZXN0IGZ1bmN0aW9uLgorCisgICAgcGFyYW0gbmFtZToK
KyAgICAgICAgVGhlIGZ1bGwgZnVuY3Rpb24gbmFtZSwgaW5jbHVkaW5nIGFueSBkZWNvcmF0aW9u
cyBsaWtlIHRob3NlCisgICAgICAgIGFkZGVkIGJ5IHBhcmFtZXRyaXphdGlvbiAoYGBteV9mdW5j
W215X3BhcmFtXWBgKS4KKyAgICBwYXJhbSBwYXJlbnQ6CisgICAgICAgIFRoZSBwYXJlbnQgTm9k
ZS4KKyAgICBwYXJhbSBjb25maWc6CisgICAgICAgIFRoZSBweXRlc3QgQ29uZmlnIG9iamVjdC4K
KyAgICBwYXJhbSBjYWxsc3BlYzoKKyAgICAgICAgSWYgZ2l2ZW4sIHRoaXMgaXMgZnVuY3Rpb24g
aGFzIGJlZW4gcGFyYW1ldHJpemVkIGFuZCB0aGUgY2FsbHNwZWMgY29udGFpbnMKKyAgICAgICAg
bWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyYW1ldHJpemF0aW9uLgorICAgIHBhcmFtIGNh
bGxvYmo6CisgICAgICAgIElmIGdpdmVuLCB0aGUgb2JqZWN0IHdoaWNoIHdpbGwgYmUgY2FsbGVk
IHdoZW4gdGhlIEZ1bmN0aW9uIGlzIGludm9rZWQsCisgICAgICAgIG90aGVyd2lzZSB0aGUgY2Fs
bG9iaiB3aWxsIGJlIG9idGFpbmVkIGZyb20gYGBwYXJlbnRgYCB1c2luZyBgYG9yaWdpbmFsbmFt
ZWBgLgorICAgIHBhcmFtIGtleXdvcmRzOgorICAgICAgICBLZXl3b3JkcyBib3VuZCB0byB0aGUg
ZnVuY3Rpb24gb2JqZWN0IGZvciAiLWsiIG1hdGNoaW5nLgorICAgIHBhcmFtIHNlc3Npb246Cisg
ICAgICAgIFRoZSBweXRlc3QgU2Vzc2lvbiBvYmplY3QuCisgICAgcGFyYW0gZml4dHVyZWluZm86
CisgICAgICAgIEZpeHR1cmUgaW5mb3JtYXRpb24gYWxyZWFkeSByZXNvbHZlZCBhdCB0aGlzIGZp
eHR1cmUgbm9kZS4uCisgICAgcGFyYW0gb3JpZ2luYWxuYW1lOgorICAgICAgICBUaGUgYXR0cmli
dXRlIG5hbWUgdG8gdXNlIGZvciBhY2Nlc3NpbmcgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2Jq
ZWN0LgorICAgICAgICBEZWZhdWx0cyB0byBgYG5hbWVgYC4gU2V0IHRoaXMgaWYgbmFtZSBpcyBk
aWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgbmFtZSwKKyAgICAgICAgZm9yIGV4YW1wbGUgd2hl
biBpdCBjb250YWlucyBkZWNvcmF0aW9ucyBsaWtlIHRob3NlIGFkZGVkIGJ5IHBhcmFtZXRyaXph
dGlvbgorICAgICAgICAoYGBteV9mdW5jW215X3BhcmFtXWBgKS4KICAgICAiIiIKLSAgICBfZ2Vu
aWQgPSBOb25lCi0gICAgIyBkaXNhYmxlIHNpbmNlIGZ1bmN0aW9ucyBoYW5kbGUgaXQgdGhlbXNl
bGZlcworCisgICAgIyBEaXNhYmxlIHNpbmNlIGZ1bmN0aW9ucyBoYW5kbGUgaXQgdGhlbXNlbHZl
cy4KICAgICBfQUxMT1dfTUFSS0VSUyA9IEZhbHNlCiAKICAgICBkZWYgX19pbml0X18oCiAgICAg
ICAgIHNlbGYsCi0gICAgICAgIG5hbWUsCisgICAgICAgIG5hbWU6IHN0ciwKICAgICAgICAgcGFy
ZW50LAotICAgICAgICBhcmdzPU5vbmUsCi0gICAgICAgIGNvbmZpZz1Ob25lLAotICAgICAgICBj
YWxsc3BlYz1Ob25lLAorICAgICAgICBjb25maWc6IE9wdGlvbmFsW0NvbmZpZ10gPSBOb25lLAor
ICAgICAgICBjYWxsc3BlYzogT3B0aW9uYWxbQ2FsbFNwZWMyXSA9IE5vbmUsCiAgICAgICAgIGNh
bGxvYmo9Tk9UU0VULAogICAgICAgICBrZXl3b3Jkcz1Ob25lLAotICAgICAgICBzZXNzaW9uPU5v
bmUsCi0gICAgICAgIGZpeHR1cmVpbmZvPU5vbmUsCi0gICAgICAgIG9yaWdpbmFsbmFtZT1Ob25l
LAotICAgICk6Ci0gICAgICAgIHN1cGVyKEZ1bmN0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBw
YXJlbnQsIGNvbmZpZz1jb25maWcsIHNlc3Npb249c2Vzc2lvbikKLSAgICAgICAgc2VsZi5fYXJn
cyA9IGFyZ3MKKyAgICAgICAgc2Vzc2lvbjogT3B0aW9uYWxbU2Vzc2lvbl0gPSBOb25lLAorICAg
ICAgICBmaXh0dXJlaW5mbzogT3B0aW9uYWxbRnVuY0ZpeHR1cmVJbmZvXSA9IE5vbmUsCisgICAg
ICAgIG9yaWdpbmFsbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgor
ICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIHBhcmVudCwgY29uZmlnPWNvbmZpZywgc2Vz
c2lvbj1zZXNzaW9uKQorCiAgICAgICAgIGlmIGNhbGxvYmogaXMgbm90IE5PVFNFVDoKICAgICAg
ICAgICAgIHNlbGYub2JqID0gY2FsbG9iagogCisgICAgICAgICM6IE9yaWdpbmFsIGZ1bmN0aW9u
IG5hbWUsIHdpdGhvdXQgYW55IGRlY29yYXRpb25zIChmb3IgZXhhbXBsZQorICAgICAgICAjOiBw
YXJhbWV0cml6YXRpb24gYWRkcyBhIGBgIlsuLi5dImBgIHN1ZmZpeCB0byBmdW5jdGlvbiBuYW1l
cyksIHVzZWQgdG8gYWNjZXNzCisgICAgICAgICM6IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9i
amVjdCBmcm9tIGBgcGFyZW50YGAgKGluIGNhc2UgYGBjYWxsb2JqYGAgaXMgbm90IGdpdmVuCisg
ICAgICAgICM6IGV4cGxpY2l0bHkpLgorICAgICAgICAjOgorICAgICAgICAjOiAuLiB2ZXJzaW9u
YWRkZWQ6OiAzLjAKKyAgICAgICAgc2VsZi5vcmlnaW5hbG5hbWUgPSBvcmlnaW5hbG5hbWUgb3Ig
bmFtZQorCisgICAgICAgICMgTm90ZTogd2hlbiBGdW5jdGlvbkRlZmluaXRpb24gaXMgaW50cm9k
dWNlZCwgd2Ugc2hvdWxkIGNoYW5nZSBgYG9yaWdpbmFsbmFtZWBgCisgICAgICAgICMgdG8gYSBy
ZWFkb25seSBwcm9wZXJ0eSB0aGF0IHJldHVybnMgRnVuY3Rpb25EZWZpbml0aW9uLm5hbWUuCisK
ICAgICAgICAgc2VsZi5rZXl3b3Jkcy51cGRhdGUoc2VsZi5vYmouX19kaWN0X18pCiAgICAgICAg
IHNlbGYub3duX21hcmtlcnMuZXh0ZW5kKGdldF91bnBhY2tlZF9tYXJrcyhzZWxmLm9iaikpCiAg
ICAgICAgIGlmIGNhbGxzcGVjOgpAQCAtMTI1Nyw3NSArMTU3Niw5OCBAQCBjbGFzcyBGdW5jdGlv
bihGdW5jdGlvbk1peGluLCBub2Rlcy5JdGVtLCBmaXh0dXJlcy5GdW5jYXJnbmFtZXNDb21wYXRB
dHRyKToKICAgICAgICAgICAgICAgICAjIGZlZWwgZnJlZSB0byBjcnksIHRoaXMgd2FzIGJyb2tl
biBmb3IgeWVhcnMgYmVmb3JlCiAgICAgICAgICAgICAgICAgIyBhbmQga2V5d29yZHMgY2FudCBm
aXggaXQgcGVyIGRlc2lnbgogICAgICAgICAgICAgICAgIHNlbGYua2V5d29yZHNbbWFyay5uYW1l
XSA9IG1hcmsKLSAgICAgICAgICAgIHNlbGYub3duX21hcmtlcnMuZXh0ZW5kKGNhbGxzcGVjLm1h
cmtzKQorICAgICAgICAgICAgc2VsZi5vd25fbWFya2Vycy5leHRlbmQobm9ybWFsaXplX21hcmtf
bGlzdChjYWxsc3BlYy5tYXJrcykpCiAgICAgICAgIGlmIGtleXdvcmRzOgogICAgICAgICAgICAg
c2VsZi5rZXl3b3Jkcy51cGRhdGUoa2V5d29yZHMpCiAKKyAgICAgICAgIyB0b2RvOiB0aGlzIGlz
IGEgaGVsbCBvZiBhIGhhY2sKKyAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzQ1NjkKKworICAgICAgICBzZWxmLmtleXdvcmRzLnVwZGF0ZSgKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtYXJrLm5hbWU6IFRydWUKKyAgICAgICAgICAg
ICAgICBmb3IgbWFyayBpbiBzZWxmLml0ZXJfbWFya2VycygpCisgICAgICAgICAgICAgICAgaWYg
bWFyay5uYW1lIG5vdCBpbiBzZWxmLmtleXdvcmRzCisgICAgICAgICAgICB9CisgICAgICAgICkK
KwogICAgICAgICBpZiBmaXh0dXJlaW5mbyBpcyBOb25lOgogICAgICAgICAgICAgZml4dHVyZWlu
Zm8gPSBzZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLmdldGZpeHR1cmVpbmZvKAotICAgICAg
ICAgICAgICAgIHNlbGYsIHNlbGYub2JqLCBzZWxmLmNscywgZnVuY2FyZ3M9bm90IHNlbGYuX2lz
eWllbGRlZGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLm9iaiwgc2VsZi5j
bHMsIGZ1bmNhcmdzPVRydWUKICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5fZml4dHVyZWlu
Zm8gPSBmaXh0dXJlaW5mbworICAgICAgICBzZWxmLl9maXh0dXJlaW5mbyA9IGZpeHR1cmVpbmZv
ICAjIHR5cGU6IEZ1bmNGaXh0dXJlSW5mbwogICAgICAgICBzZWxmLmZpeHR1cmVuYW1lcyA9IGZp
eHR1cmVpbmZvLm5hbWVzX2Nsb3N1cmUKICAgICAgICAgc2VsZi5faW5pdHJlcXVlc3QoKQogCi0g
ICAgICAgICM6IG9yaWdpbmFsIGZ1bmN0aW9uIG5hbWUsIHdpdGhvdXQgYW55IGRlY29yYXRpb25z
IChmb3IgZXhhbXBsZQotICAgICAgICAjOiBwYXJhbWV0cml6YXRpb24gYWRkcyBhIGBgIlsuLi5d
ImBgIHN1ZmZpeCB0byBmdW5jdGlvbiBuYW1lcykuCi0gICAgICAgICM6Ci0gICAgICAgICM6IC4u
IHZlcnNpb25hZGRlZDo6IDMuMAotICAgICAgICBzZWxmLm9yaWdpbmFsbmFtZSA9IG9yaWdpbmFs
bmFtZQotCi0gICAgZGVmIF9pbml0cmVxdWVzdChzZWxmKToKLSAgICAgICAgc2VsZi5mdW5jYXJn
cyA9IHt9Ci0gICAgICAgIGlmIHNlbGYuX2lzeWllbGRlZGZ1bmN0aW9uKCk6Ci0gICAgICAgICAg
ICBhc3NlcnQgbm90IGhhc2F0dHIoCi0gICAgICAgICAgICAgICAgc2VsZiwgImNhbGxzcGVjIgot
ICAgICAgICAgICAgKSwgInlpZWxkZWQgZnVuY3Rpb25zIChkZXByZWNhdGVkKSBjYW5ub3QgaGF2
ZSBmdW5jYXJncyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwg
ImNhbGxzcGVjIik6Ci0gICAgICAgICAgICAgICAgY2FsbHNwZWMgPSBzZWxmLmNhbGxzcGVjCi0g
ICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBjYWxsc3BlYy5mdW5jYXJncwotICAgICAgICAgICAg
ICAgIHNlbGYuX2dlbmlkID0gY2FsbHNwZWMuaWQKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRy
KGNhbGxzcGVjLCAicGFyYW0iKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJhbSA9IGNh
bGxzcGVjLnBhcmFtCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fcGFyZW50KGNscywg
cGFyZW50LCAqKmt3KTogICMgdG9kbzogZGV0ZXJtaW5lIHNvdW5kIHR5cGUgbGltaXRhdGlvbnMK
KyAgICAgICAgIiIiVGhlIHB1YmxpYyBjb25zdHJ1Y3Rvci4iIiIKKyAgICAgICAgcmV0dXJuIHN1
cGVyKCkuZnJvbV9wYXJlbnQocGFyZW50PXBhcmVudCwgKiprdykKKworICAgIGRlZiBfaW5pdHJl
cXVlc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5mdW5jYXJncyA9IHt9ICAjIHR5cGU6
IERpY3Rbc3RyLCBvYmplY3RdCiAgICAgICAgIHNlbGYuX3JlcXVlc3QgPSBmaXh0dXJlcy5GaXh0
dXJlUmVxdWVzdChzZWxmKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGZ1bmN0aW9uKHNlbGYp
OgotICAgICAgICAidW5kZXJseWluZyBweXRob24gJ2Z1bmN0aW9uJyBvYmplY3QiCi0gICAgICAg
IHJldHVybiBnZXRhdHRyKHNlbGYub2JqLCAiaW1fZnVuYyIsIHNlbGYub2JqKQorICAgICAgICAi
IiJVbmRlcmx5aW5nIHB5dGhvbiAnZnVuY3Rpb24nIG9iamVjdC4iIiIKKyAgICAgICAgcmV0dXJu
IGdldGltZnVuYyhzZWxmLm9iaikKIAogICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAgICBu
YW1lID0gc2VsZi5uYW1lCi0gICAgICAgIGkgPSBuYW1lLmZpbmQoIlsiKSAgIyBwYXJhbWV0cml6
YXRpb24KLSAgICAgICAgaWYgaSAhPSAtMToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lWzppXQot
ICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnBhcmVudC5vYmosIG5hbWUpCisgICAgICAgIGFz
c2VydCBzZWxmLnBhcmVudCBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxm
LnBhcmVudC5vYmosIHNlbGYub3JpZ2luYWxuYW1lKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZp
bmVkXQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9weWZ1bmNpdGVtKHNlbGYpOgotICAgICAg
ICAiKGNvbXBhdG9ubHkpIGZvciBjb2RlIGV4cGVjdGluZyBweXRlc3QtMi4yIHN0eWxlIHJlcXVl
c3Qgb2JqZWN0cyIKKyAgICAgICAgIiIiKGNvbXBhdG9ubHkpIGZvciBjb2RlIGV4cGVjdGluZyBw
eXRlc3QtMi4yIHN0eWxlIHJlcXVlc3Qgb2JqZWN0cy4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYK
IAotICAgIGRlZiBfaXN5aWVsZGVkZnVuY3Rpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBnZXRh
dHRyKHNlbGYsICJfYXJncyIsIE5vbmUpIGlzIG5vdCBOb25lCi0KLSAgICBkZWYgcnVudGVzdChz
ZWxmKToKLSAgICAgICAgIiIiIGV4ZWN1dGUgdGhlIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlvbi4g
IiIiCisgICAgZGVmIHJ1bnRlc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiRXhlY3V0ZSB0
aGUgdW5kZXJseWluZyB0ZXN0IGZ1bmN0aW9uLiIiIgogICAgICAgICBzZWxmLmlob29rLnB5dGVz
dF9weWZ1bmNfY2FsbChweWZ1bmNpdGVtPXNlbGYpCiAKLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0g
ICAgICAgIHN1cGVyKEZ1bmN0aW9uLCBzZWxmKS5zZXR1cCgpCi0gICAgICAgIGZpeHR1cmVzLmZp
bGxmaXh0dXJlcyhzZWxmKQorICAgIGRlZiBzZXR1cChzZWxmKSAtPiBOb25lOgorICAgICAgICBp
ZiBpc2luc3RhbmNlKHNlbGYucGFyZW50LCBJbnN0YW5jZSk6CisgICAgICAgICAgICBzZWxmLnBh
cmVudC5uZXdpbnN0YW5jZSgpCisgICAgICAgICAgICBzZWxmLm9iaiA9IHNlbGYuX2dldG9iaigp
CisgICAgICAgIHNlbGYuX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCisKKyAgICBkZWYgX3BydW5l
dHJhY2ViYWNrKHNlbGYsIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0pIC0+
IE5vbmU6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIl9vYmoiKSBhbmQgbm90IHNlbGYuY29u
ZmlnLmdldG9wdGlvbigiZnVsbHRyYWNlIiwgRmFsc2UpOgorICAgICAgICAgICAgY29kZSA9IF9w
eXRlc3QuX2NvZGUuQ29kZShnZXRfcmVhbF9mdW5jKHNlbGYub2JqKSkKKyAgICAgICAgICAgIHBh
dGgsIGZpcnN0bGluZW5vID0gY29kZS5wYXRoLCBjb2RlLmZpcnN0bGluZW5vCisgICAgICAgICAg
ICB0cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjaworICAgICAgICAgICAgbnRyYWNlYmFjayA9
IHRyYWNlYmFjay5jdXQocGF0aD1wYXRoLCBmaXJzdGxpbmVubz1maXJzdGxpbmVubykKKyAgICAg
ICAgICAgIGlmIG50cmFjZWJhY2sgPT0gdHJhY2ViYWNrOgorICAgICAgICAgICAgICAgIG50cmFj
ZWJhY2sgPSBudHJhY2ViYWNrLmN1dChwYXRoPXBhdGgpCisgICAgICAgICAgICAgICAgaWYgbnRy
YWNlYmFjayA9PSB0cmFjZWJhY2s6CisgICAgICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSBu
dHJhY2ViYWNrLmZpbHRlcihmaWx0ZXJfdHJhY2ViYWNrKQorICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgbnRyYWNlYmFjazoKKyAgICAgICAgICAgICAgICAgICAgICAgIG50cmFjZWJhY2sgPSB0
cmFjZWJhY2sKKworICAgICAgICAgICAgZXhjaW5mby50cmFjZWJhY2sgPSBudHJhY2ViYWNrLmZp
bHRlcigpCisgICAgICAgICAgICAjIGlzc3VlMzY0OiBtYXJrIGFsbCBidXQgZmlyc3QgYW5kIGxh
c3QgZnJhbWVzIHRvCisgICAgICAgICAgICAjIG9ubHkgc2hvdyBhIHNpbmdsZS1saW5lIG1lc3Nh
Z2UgZm9yIGVhY2ggZnJhbWUuCisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24o
InRic3R5bGUiLCAiYXV0byIpID09ICJhdXRvIjoKKyAgICAgICAgICAgICAgICBpZiBsZW4oZXhj
aW5mby50cmFjZWJhY2spID4gMjoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGV4
Y2luZm8udHJhY2ViYWNrWzE6LTFdOgorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2V0
X3JlcHJfc3R5bGUoInNob3J0IikKKworICAgICMgVE9ETzogVHlwZSBpZ25vcmVkIC0tIGJyZWFr
cyBMaXNrb3YgU3Vic3RpdHV0aW9uLgorICAgIGRlZiByZXByX2ZhaWx1cmUoICAjIHR5cGU6IGln
bm9yZVtvdmVycmlkZV0KKyAgICAgICAgc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNl
RXhjZXB0aW9uXSwKKyAgICApIC0+IFVuaW9uW3N0ciwgVGVybWluYWxSZXByXToKKyAgICAgICAg
c3R5bGUgPSBzZWxmLmNvbmZpZy5nZXRvcHRpb24oInRic3R5bGUiLCAiYXV0byIpCisgICAgICAg
IGlmIHN0eWxlID09ICJhdXRvIjoKKyAgICAgICAgICAgIHN0eWxlID0gImxvbmciCisgICAgICAg
IHJldHVybiBzZWxmLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywgc3R5bGU9c3R5bGUpCiAKIAog
Y2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uKToKLSAgICAiIiIKLSAgICBpbnRlcm5h
bCBoYWNrIHVudGlsIHdlIGdldCBhY3R1YWwgZGVmaW5pdGlvbiBub2RlcyBpbnN0ZWFkIG9mIHRo
ZQotICAgIGNyYXBweSBtZXRhZnVuYyBoYWNrCi0gICAgIiIiCisgICAgIiIiSW50ZXJuYWwgaGFj
ayB1bnRpbCB3ZSBnZXQgYWN0dWFsIGRlZmluaXRpb24gbm9kZXMgaW5zdGVhZCBvZiB0aGUKKyAg
ICBjcmFwcHkgbWV0YWZ1bmMgaGFjay4iIiIKIAotICAgIGRlZiBydW50ZXN0KHNlbGYpOgorICAg
IGRlZiBydW50ZXN0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigi
ZnVuY3Rpb24gZGVmaW5pdGlvbnMgYXJlIG5vdCBzdXBwb3NlZCB0byBiZSB1c2VkIikKIAogICAg
IHNldHVwID0gcnVudGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHl0
aG9uX2FwaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbl9hcGkucHkKaW5kZXgg
OTI1N2QyMTBjMjcwLi5mNWFkMDRhMTJjOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L3B5dGhvbl9hcGkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHl0aG9u
X2FwaS5weQpAQCAtMSwxMDggKzEsMTIwIEBACiBpbXBvcnQgbWF0aAotaW1wb3J0IHN5cworaW1w
b3J0IHBwcmludAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEl0ZXJhYmxlCitmcm9tIGNv
bGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0
IFNpemVkCitmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKK2Zyb20gbnVtYmVycyBpbXBvcnQg
TnVtYmVyCitmcm9tIHR5cGVzIGltcG9ydCBUcmFjZWJhY2tUeXBlCitmcm9tIHR5cGluZyBpbXBv
cnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBj
YXN0Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJpYworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCitmcm9tIHR5cGluZyBpbXBvcnQgUGF0dGVybgorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxl
Citmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAK
LWltcG9ydCBweQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHppcCwgZmlsdGVyZmFsc2UKLWZyb20g
bW9yZV9pdGVydG9vbHMubW9yZSBpbXBvcnQgYWx3YXlzX2l0ZXJhYmxlCi0KLWZyb20gX3B5dGVz
dC5jb21wYXQgaW1wb3J0IGlzY2xhc3MKLQotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgTWFw
cGluZywgU2VxdWVuY2UKK2ltcG9ydCBfcHl0ZXN0Ll9jb2RlCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBmaW5hbAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgb3ZlcmxvYWQKIGZyb20g
X3B5dGVzdC5jb21wYXQgaW1wb3J0IFNUUklOR19UWVBFUwotCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBUWVBFX0NIRUNLSU5HCiBmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwK
LWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0KLUJBU0VfVFlQRSA9ICh0eXBlLCBTVFJJTkdfVFlQRVMp
CiAKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKIAotZGVm
IF9jbXBfcmFpc2VzX3R5cGVfZXJyb3Ioc2VsZiwgb3RoZXIpOgotICAgICIiIl9fY21wX18gaW1w
bGVtZW50YXRpb24gd2hpY2ggcmFpc2VzIFR5cGVFcnJvci4gVXNlZAotICAgIGJ5IEFwcHJveCBi
YXNlIGNsYXNzZXMgdG8gaW1wbGVtZW50IG9ubHkgPT0gYW5kICE9IGFuZCByYWlzZSBhCi0gICAg
VHlwZUVycm9yIGZvciBvdGhlciBjb21wYXJpc29ucy4KIAotICAgIE5lZWRlZCBpbiBQeXRob24g
MiBvbmx5LCBQeXRob24gMyBhbGwgaXQgdGFrZXMgaXMgbm90IGltcGxlbWVudGluZyB0aGUKLSAg
ICBvdGhlciBvcGVyYXRvcnMgYXQgYWxsLgotICAgICIiIgotICAgIF9fdHJhY2ViYWNraGlkZV9f
ID0gVHJ1ZQotICAgIHJhaXNlIFR5cGVFcnJvcigKLSAgICAgICAgIkNvbXBhcmlzb24gb3BlcmF0
b3JzIG90aGVyIHRoYW4gPT0gYW5kICE9IG5vdCBzdXBwb3J0ZWQgYnkgYXBwcm94IG9iamVjdHMi
CitkZWYgX25vbl9udW1lcmljX3R5cGVfZXJyb3IodmFsdWUsIGF0OiBPcHRpb25hbFtzdHJdKSAt
PiBUeXBlRXJyb3I6CisgICAgYXRfc3RyID0gIiBhdCB7fSIuZm9ybWF0KGF0KSBpZiBhdCBlbHNl
ICIiCisgICAgcmV0dXJuIFR5cGVFcnJvcigKKyAgICAgICAgImNhbm5vdCBtYWtlIGFwcHJveGlt
YXRlIGNvbXBhcmlzb25zIHRvIG5vbi1udW1lcmljIHZhbHVlczogeyFyfSB7fSIuZm9ybWF0KAor
ICAgICAgICAgICAgdmFsdWUsIGF0X3N0cgorICAgICAgICApCiAgICAgKQogCiAKICMgYnVpbHRp
biBweXRlc3QuYXBwcm94IGhlbHBlcgogCiAKLWNsYXNzIEFwcHJveEJhc2Uob2JqZWN0KToKLSAg
ICAiIiIKLSAgICBQcm92aWRlIHNoYXJlZCB1dGlsaXRpZXMgZm9yIG1ha2luZyBhcHByb3hpbWF0
ZSBjb21wYXJpc29ucyBiZXR3ZWVuIG51bWJlcnMKLSAgICBvciBzZXF1ZW5jZXMgb2YgbnVtYmVy
cy4KLSAgICAiIiIKK2NsYXNzIEFwcHJveEJhc2U6CisgICAgIiIiUHJvdmlkZSBzaGFyZWQgdXRp
bGl0aWVzIGZvciBtYWtpbmcgYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgYmV0d2VlbgorICAgIG51
bWJlcnMgb3Igc2VxdWVuY2VzIG9mIG51bWJlcnMuIiIiCiAKLSAgICAjIFRlbGwgbnVtcHkgdG8g
dXNlIG91ciBgX19lcV9fYCBvcGVyYXRvciBpbnN0ZWFkIG9mIGl0cworICAgICMgVGVsbCBudW1w
eSB0byB1c2Ugb3VyIGBfX2VxX19gIG9wZXJhdG9yIGluc3RlYWQgb2YgaXRzLgogICAgIF9fYXJy
YXlfdWZ1bmNfXyA9IE5vbmUKICAgICBfX2FycmF5X3ByaW9yaXR5X18gPSAxMDAKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgcmVsPU5vbmUsIGFicz1Ob25lLCBuYW5fb2s9RmFs
c2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgcmVsPU5vbmUsIGFicz1Ob25l
LCBuYW5fb2s6IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAgICAgICAgX190cmFjZWJhY2toaWRl
X18gPSBUcnVlCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAogICAgICAgICBzZWxm
LmFicyA9IGFicwogICAgICAgICBzZWxmLnJlbCA9IHJlbAogICAgICAgICBzZWxmLm5hbl9vayA9
IG5hbl9vaworICAgICAgICBzZWxmLl9jaGVja190eXBlKCkKIAotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCk6CisgICAgZGVm
IF9fZXFfXyhzZWxmLCBhY3R1YWwpIC0+IGJvb2w6CiAgICAgICAgIHJldHVybiBhbGwoCiAgICAg
ICAgICAgICBhID09IHNlbGYuX2FwcHJveF9zY2FsYXIoeCkgZm9yIGEsIHggaW4gc2VsZi5feWll
bGRfY29tcGFyaXNvbnMoYWN0dWFsKQogICAgICAgICApCiAKLSAgICBfX2hhc2hfXyA9IE5vbmUK
KyAgICAjIElnbm9yZSB0eXBlIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9t
eXB5L2lzc3Vlcy80MjY2LgorICAgIF9faGFzaF9fID0gTm9uZSAgIyB0eXBlOiBpZ25vcmUKIAot
ICAgIGRlZiBfX25lX18oc2VsZiwgYWN0dWFsKToKKyAgICBkZWYgX19uZV9fKHNlbGYsIGFjdHVh
bCkgLT4gYm9vbDoKICAgICAgICAgcmV0dXJuIG5vdCAoYWN0dWFsID09IHNlbGYpCiAKLSAgICBp
ZiBzeXMudmVyc2lvbl9pbmZvWzBdID09IDI6Ci0gICAgICAgIF9fY21wX18gPSBfY21wX3JhaXNl
c190eXBlX2Vycm9yCi0KLSAgICBkZWYgX2FwcHJveF9zY2FsYXIoc2VsZiwgeCk6CisgICAgZGVm
IF9hcHByb3hfc2NhbGFyKHNlbGYsIHgpIC0+ICJBcHByb3hTY2FsYXIiOgogICAgICAgICByZXR1
cm4gQXBwcm94U2NhbGFyKHgsIHJlbD1zZWxmLnJlbCwgYWJzPXNlbGYuYWJzLCBuYW5fb2s9c2Vs
Zi5uYW5fb2spCiAKICAgICBkZWYgX3lpZWxkX2NvbXBhcmlzb25zKHNlbGYsIGFjdHVhbCk6Ci0g
ICAgICAgICIiIgotICAgICAgICBZaWVsZCBhbGwgdGhlIHBhaXJzIG9mIG51bWJlcnMgdG8gYmUg
Y29tcGFyZWQuICBUaGlzIGlzIHVzZWQgdG8KLSAgICAgICAgaW1wbGVtZW50IHRoZSBgX19lcV9f
YCBtZXRob2QuCisgICAgICAgICIiIllpZWxkIGFsbCB0aGUgcGFpcnMgb2YgbnVtYmVycyB0byBi
ZSBjb21wYXJlZC4KKworICAgICAgICBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBgX19l
cV9fYCBtZXRob2QuCiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKKyAgICBkZWYgX2NoZWNrX3R5cGUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiUmFp
c2UgYSBUeXBlRXJyb3IgaWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIG5vdCBhIHZhbGlkIHR5cGUu
IiIiCisgICAgICAgICMgVGhpcyBpcyBvbmx5IGEgY29uY2VybiBpZiB0aGUgZXhwZWN0ZWQgdmFs
dWUgaXMgYSBzZXF1ZW5jZS4gIEluIGV2ZXJ5CisgICAgICAgICMgb3RoZXIgY2FzZSwgdGhlIGFw
cHJveCgpIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGUgZXhwZWN0ZWQgdmFsdWUgaGFzCisgICAg
ICAgICMgYSBudW1lcmljIHR5cGUuICBGb3IgdGhpcyByZWFzb24sIHRoZSBkZWZhdWx0IGlzIHRv
IGRvIG5vdGhpbmcuICBUaGUKKyAgICAgICAgIyBjbGFzc2VzIHRoYXQgZGVhbCB3aXRoIHNlcXVl
bmNlcyBzaG91bGQgcmVpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8KKyAgICAgICAgIyByYWlzZSBp
ZiB0aGVyZSBhcmUgYW55IG5vbi1udW1lcmljIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZS4KKyAg
ICAgICAgcGFzcwogCi1jbGFzcyBBcHByb3hOdW1weShBcHByb3hCYXNlKToKLSAgICAiIiIKLSAg
ICBQZXJmb3JtIGFwcHJveGltYXRlIGNvbXBhcmlzb25zIGZvciBudW1weSBhcnJheXMuCi0gICAg
IiIiCiAKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICMgSXQgbWlnaHQgYmUgbmlj
ZSB0byByZXdyaXRlIHRoaXMgZnVuY3Rpb24gdG8gYWNjb3VudCBmb3IgdGhlCi0gICAgICAgICMg
c2hhcGUgb2YgdGhlIGFycmF5Li4uCi0gICAgICAgIGltcG9ydCBudW1weSBhcyBucAorZGVmIF9y
ZWN1cnNpdmVfbGlzdF9tYXAoZiwgeCk6CisgICAgaWYgaXNpbnN0YW5jZSh4LCBsaXN0KToKKyAg
ICAgICAgcmV0dXJuIGxpc3QoX3JlY3Vyc2l2ZV9saXN0X21hcChmLCB4aSkgZm9yIHhpIGluIHgp
CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGYoeCkKIAotICAgICAgICByZXR1cm4gImFwcHJv
eCh7IXJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgbGlzdChzZWxmLl9hcHByb3hfc2NhbGFyKHgp
IGZvciB4IGluIG5wLmFzYXJyYXkoc2VsZi5leHBlY3RlZCkpCi0gICAgICAgICkKIAotICAgIGlm
IHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMjoKLSAgICAgICAgX19jbXBfXyA9IF9jbXBfcmFpc2Vz
X3R5cGVfZXJyb3IKK2NsYXNzIEFwcHJveE51bXB5KEFwcHJveEJhc2UpOgorICAgICIiIlBlcmZv
cm0gYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgd2hlcmUgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIG51
bXB5IGFycmF5LiIiIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAg
bGlzdF9zY2FsYXJzID0gX3JlY3Vyc2l2ZV9saXN0X21hcChzZWxmLl9hcHByb3hfc2NhbGFyLCBz
ZWxmLmV4cGVjdGVkLnRvbGlzdCgpKQorICAgICAgICByZXR1cm4gImFwcHJveCh7IXJ9KSIuZm9y
bWF0KGxpc3Rfc2NhbGFycykKIAotICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToKKyAgICBk
ZWYgX19lcV9fKHNlbGYsIGFjdHVhbCkgLT4gYm9vbDoKICAgICAgICAgaW1wb3J0IG51bXB5IGFz
IG5wCiAKLSAgICAgICAgIyBzZWxmLmV4cGVjdGVkIGlzIHN1cHBvc2VkIHRvIGFsd2F5cyBiZSBh
biBhcnJheSBoZXJlCisgICAgICAgICMgc2VsZi5leHBlY3RlZCBpcyBzdXBwb3NlZCB0byBhbHdh
eXMgYmUgYW4gYXJyYXkgaGVyZS4KIAogICAgICAgICBpZiBub3QgbnAuaXNzY2FsYXIoYWN0dWFs
KToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBhY3R1YWwgPSBucC5hc2FycmF5
KGFjdHVhbCkKLSAgICAgICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgJ3t9JyB0byBudW1weS5uZGFycmF5Ii5mb3Jt
YXQoYWN0dWFsKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29t
cGFyZSAne30nIHRvIG51bXB5Lm5kYXJyYXkiLmZvcm1hdChhY3R1YWwpCisgICAgICAgICAgICAg
ICAgKSBmcm9tIGUKIAogICAgICAgICBpZiBub3QgbnAuaXNzY2FsYXIoYWN0dWFsKSBhbmQgYWN0
dWFsLnNoYXBlICE9IHNlbGYuZXhwZWN0ZWQuc2hhcGU6CiAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKQEAgLTExOCwyNCArMTMwLDIyIEBAIGNsYXNzIEFwcHJveE51bXB5KEFwcHJveEJhc2UpOgog
CiAgICAgICAgIGlmIG5wLmlzc2NhbGFyKGFjdHVhbCk6CiAgICAgICAgICAgICBmb3IgaSBpbiBu
cC5uZGluZGV4KHNlbGYuZXhwZWN0ZWQuc2hhcGUpOgotICAgICAgICAgICAgICAgIHlpZWxkIGFj
dHVhbCwgbnAuYXNzY2FsYXIoc2VsZi5leHBlY3RlZFtpXSkKKyAgICAgICAgICAgICAgICB5aWVs
ZCBhY3R1YWwsIHNlbGYuZXhwZWN0ZWRbaV0uaXRlbSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBmb3IgaSBpbiBucC5uZGluZGV4KHNlbGYuZXhwZWN0ZWQuc2hhcGUpOgotICAgICAgICAg
ICAgICAgIHlpZWxkIG5wLmFzc2NhbGFyKGFjdHVhbFtpXSksIG5wLmFzc2NhbGFyKHNlbGYuZXhw
ZWN0ZWRbaV0pCisgICAgICAgICAgICAgICAgeWllbGQgYWN0dWFsW2ldLml0ZW0oKSwgc2VsZi5l
eHBlY3RlZFtpXS5pdGVtKCkKIAogCiBjbGFzcyBBcHByb3hNYXBwaW5nKEFwcHJveEJhc2UpOgot
ICAgICIiIgotICAgIFBlcmZvcm0gYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgZm9yIG1hcHBpbmdz
IHdoZXJlIHRoZSB2YWx1ZXMgYXJlIG51bWJlcnMKLSAgICAodGhlIGtleXMgY2FuIGJlIGFueXRo
aW5nKS4KLSAgICAiIiIKKyAgICAiIiJQZXJmb3JtIGFwcHJveGltYXRlIGNvbXBhcmlzb25zIHdo
ZXJlIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIG1hcHBpbmcKKyAgICB3aXRoIG51bWVyaWMgdmFs
dWVzICh0aGUga2V5cyBjYW4gYmUgYW55dGhpbmcpLiIiIgogCi0gICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIHJldHVybiAiYXBw
cm94KHshcn0pIi5mb3JtYXQoCiAgICAgICAgICAgICB7azogc2VsZi5fYXBwcm94X3NjYWxhcih2
KSBmb3IgaywgdiBpbiBzZWxmLmV4cGVjdGVkLml0ZW1zKCl9CiAgICAgICAgICkKIAotICAgIGRl
ZiBfX2VxX18oc2VsZiwgYWN0dWFsKToKKyAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCkgLT4g
Ym9vbDoKICAgICAgICAgaWYgc2V0KGFjdHVhbC5rZXlzKCkpICE9IHNldChzZWxmLmV4cGVjdGVk
LmtleXMoKSk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtMTQ1LDEzICsxNTUsMjAg
QEAgY2xhc3MgQXBwcm94TWFwcGluZyhBcHByb3hCYXNlKToKICAgICAgICAgZm9yIGsgaW4gc2Vs
Zi5leHBlY3RlZC5rZXlzKCk6CiAgICAgICAgICAgICB5aWVsZCBhY3R1YWxba10sIHNlbGYuZXhw
ZWN0ZWRba10KIAorICAgIGRlZiBfY2hlY2tfdHlwZShzZWxmKSAtPiBOb25lOgorICAgICAgICBf
X3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5l
eHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHlwZShz
ZWxmLmV4cGVjdGVkKSk6CisgICAgICAgICAgICAgICAgbXNnID0gInB5dGVzdC5hcHByb3goKSBk
b2VzIG5vdCBzdXBwb3J0IG5lc3RlZCBkaWN0aW9uYXJpZXM6IGtleT17IXJ9IHZhbHVlPXshcn1c
biAgZnVsbCBtYXBwaW5nPXt9IgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cu
Zm9ybWF0KGtleSwgdmFsdWUsIHBwcmludC5wZm9ybWF0KHNlbGYuZXhwZWN0ZWQpKSkKKyAgICAg
ICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIE51bWJlcik6CisgICAgICAgICAgICAg
ICAgcmFpc2UgX25vbl9udW1lcmljX3R5cGVfZXJyb3Ioc2VsZi5leHBlY3RlZCwgYXQ9ImtleT17
IXJ9Ii5mb3JtYXQoa2V5KSkKIAotY2xhc3MgQXBwcm94U2VxdWVuY2UoQXBwcm94QmFzZSk6Ci0g
ICAgIiIiCi0gICAgUGVyZm9ybSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyBmb3Igc2VxdWVuY2Vz
IG9mIG51bWJlcnMuCi0gICAgIiIiCiAKLSAgICBkZWYgX19yZXByX18oc2VsZik6CitjbGFzcyBB
cHByb3hTZXF1ZW5jZWxpa2UoQXBwcm94QmFzZSk6CisgICAgIiIiUGVyZm9ybSBhcHByb3hpbWF0
ZSBjb21wYXJpc29ucyB3aGVyZSB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBzZXF1ZW5jZSBvZiBu
dW1iZXJzLiIiIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICAgc2Vx
X3R5cGUgPSB0eXBlKHNlbGYuZXhwZWN0ZWQpCiAgICAgICAgIGlmIHNlcV90eXBlIG5vdCBpbiAo
dHVwbGUsIGxpc3QsIHNldCk6CiAgICAgICAgICAgICBzZXFfdHlwZSA9IGxpc3QKQEAgLTE1OSw3
ICsxNzYsNyBAQCBjbGFzcyBBcHByb3hTZXF1ZW5jZShBcHByb3hCYXNlKToKICAgICAgICAgICAg
IHNlcV90eXBlKHNlbGYuX2FwcHJveF9zY2FsYXIoeCkgZm9yIHggaW4gc2VsZi5leHBlY3RlZCkK
ICAgICAgICAgKQogCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBhY3R1YWwpOgorICAgIGRlZiBfX2Vx
X18oc2VsZiwgYWN0dWFsKSAtPiBib29sOgogICAgICAgICBpZiBsZW4oYWN0dWFsKSAhPSBsZW4o
c2VsZi5leHBlY3RlZCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJu
IEFwcHJveEJhc2UuX19lcV9fKHNlbGYsIGFjdHVhbCkKQEAgLTE2Nyw0OCArMTg0LDU2IEBAIGNs
YXNzIEFwcHJveFNlcXVlbmNlKEFwcHJveEJhc2UpOgogICAgIGRlZiBfeWllbGRfY29tcGFyaXNv
bnMoc2VsZiwgYWN0dWFsKToKICAgICAgICAgcmV0dXJuIHppcChhY3R1YWwsIHNlbGYuZXhwZWN0
ZWQpCiAKKyAgICBkZWYgX2NoZWNrX3R5cGUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgX190cmFj
ZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIGZvciBpbmRleCwgeCBpbiBlbnVtZXJhdGUoc2Vs
Zi5leHBlY3RlZCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHgsIHR5cGUoc2VsZi5leHBl
Y3RlZCkpOgorICAgICAgICAgICAgICAgIG1zZyA9ICJweXRlc3QuYXBwcm94KCkgZG9lcyBub3Qg
c3VwcG9ydCBuZXN0ZWQgZGF0YSBzdHJ1Y3R1cmVzOiB7IXJ9IGF0IGluZGV4IHt9XG4gIGZ1bGwg
c2VxdWVuY2U6IHt9IgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cuZm9ybWF0
KHgsIGluZGV4LCBwcHJpbnQucGZvcm1hdChzZWxmLmV4cGVjdGVkKSkpCisgICAgICAgICAgICBl
bGlmIG5vdCBpc2luc3RhbmNlKHgsIE51bWJlcik6CisgICAgICAgICAgICAgICAgcmFpc2UgX25v
bl9udW1lcmljX3R5cGVfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQs
IGF0PSJpbmRleCB7fSIuZm9ybWF0KGluZGV4KQorICAgICAgICAgICAgICAgICkKKwogCiBjbGFz
cyBBcHByb3hTY2FsYXIoQXBwcm94QmFzZSk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBhcHByb3hp
bWF0ZSBjb21wYXJpc29ucyBmb3Igc2luZ2xlIG51bWJlcnMgb25seS4KLSAgICAiIiIKLSAgICBE
RUZBVUxUX0FCU09MVVRFX1RPTEVSQU5DRSA9IDFlLTEyCi0gICAgREVGQVVMVF9SRUxBVElWRV9U
T0xFUkFOQ0UgPSAxZS02CisgICAgIiIiUGVyZm9ybSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyB3
aGVyZSB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBzaW5nbGUgbnVtYmVyLiIiIgogCi0gICAgZGVm
IF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgc3RyaW5nIGNv
bW11bmljYXRpbmcgYm90aCB0aGUgZXhwZWN0ZWQgdmFsdWUgYW5kIHRoZSB0b2xlcmFuY2UKLSAg
ICAgICAgZm9yIHRoZSBjb21wYXJpc29uIGJlaW5nIG1hZGUsIGUuZy4gJzEuMCArLSAxZS02Jy4g
IFVzZSB0aGUgdW5pY29kZQotICAgICAgICBwbHVzL21pbnVzIHN5bWJvbCBpZiB0aGlzIGlzIHB5
dGhvbjMgKGl0J3MgdG9vIGhhcmQgdG8gZ2V0IHJpZ2h0IGZvcgotICAgICAgICBweXRob24yKS4K
KyAgICAjIFVzaW5nIFJlYWwgc2hvdWxkIGJlIGJldHRlciB0aGFuIHRoaXMgVW5pb24sIGJ1dCBu
b3QgcG9zc2libGUgeWV0OgorICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBlc2hl
ZC9wdWxsLzMxMDgKKyAgICBERUZBVUxUX0FCU09MVVRFX1RPTEVSQU5DRSA9IDFlLTEyICAjIHR5
cGU6IFVuaW9uW2Zsb2F0LCBEZWNpbWFsXQorICAgIERFRkFVTFRfUkVMQVRJVkVfVE9MRVJBTkNF
ID0gMWUtNiAgIyB0eXBlOiBVbmlvbltmbG9hdCwgRGVjaW1hbF0KKworICAgIGRlZiBfX3JlcHJf
XyhzZWxmKSAtPiBzdHI6CisgICAgICAgICIiIlJldHVybiBhIHN0cmluZyBjb21tdW5pY2F0aW5n
IGJvdGggdGhlIGV4cGVjdGVkIHZhbHVlIGFuZCB0aGUKKyAgICAgICAgdG9sZXJhbmNlIGZvciB0
aGUgY29tcGFyaXNvbiBiZWluZyBtYWRlLgorCisgICAgICAgIEZvciBleGFtcGxlLCBgYDEuMCDC
sSAxZS02YGAsIGBgKDMrNGopIMKxIDVlLTYg4oigIMKxMTgwwrBgYC4KICAgICAgICAgIiIiCi0g
ICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leHBlY3RlZCwgY29tcGxleCk6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RyKHNlbGYuZXhwZWN0ZWQpCiAKICAgICAgICAgIyBJbmZpbml0aWVzIGFyZW4n
dCBjb21wYXJlZCB1c2luZyB0b2xlcmFuY2VzLCBzbyBkb24ndCBzaG93IGEKLSAgICAgICAgIyB0
b2xlcmFuY2UuCi0gICAgICAgIGlmIG1hdGguaXNpbmYoc2VsZi5leHBlY3RlZCk6CisgICAgICAg
ICMgdG9sZXJhbmNlLiBOZWVkIHRvIGNhbGwgYWJzIHRvIGhhbmRsZSBjb21wbGV4IG51bWJlcnMs
IGUuZy4gKGluZiArIDFqKS4KKyAgICAgICAgaWYgbWF0aC5pc2luZihhYnMoc2VsZi5leHBlY3Rl
ZCkpOgogICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmV4cGVjdGVkKQogCiAgICAgICAgICMg
SWYgYSBzZW5zaWJsZSB0b2xlcmFuY2UgY2FuJ3QgYmUgY2FsY3VsYXRlZCwgc2VsZi50b2xlcmFu
Y2Ugd2lsbAogICAgICAgICAjIHJhaXNlIGEgVmFsdWVFcnJvci4gIEluIHRoaXMgY2FzZSwgZGlz
cGxheSAnPz8/Jy4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdmV0dGVkX3RvbGVyYW5jZSA9
ICJ7Oi4xZX0iLmZvcm1hdChzZWxmLnRvbGVyYW5jZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uoc2VsZi5leHBlY3RlZCwgY29tcGxleCkgYW5kIG5vdCBtYXRoLmlzaW5mKHNlbGYudG9sZXJh
bmNlKToKKyAgICAgICAgICAgICAgICB2ZXR0ZWRfdG9sZXJhbmNlICs9ICIg4oigIMKxMTgwwrAi
CiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgdmV0dGVkX3RvbGVyYW5j
ZSA9ICI/Pz8iCiAKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAyOgotICAgICAg
ICAgICAgcmV0dXJuICJ7fSArLSB7fSIuZm9ybWF0KHNlbGYuZXhwZWN0ZWQsIHZldHRlZF90b2xl
cmFuY2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdSJ7fSBcdTAwYjEge30i
LmZvcm1hdChzZWxmLmV4cGVjdGVkLCB2ZXR0ZWRfdG9sZXJhbmNlKQorICAgICAgICByZXR1cm4g
Int9IMKxIHt9Ii5mb3JtYXQoc2VsZi5leHBlY3RlZCwgdmV0dGVkX3RvbGVyYW5jZSkKIAotICAg
IGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0
cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZXhwZWN0ZWQgdmFsdWUgd2l0
aGluCi0gICAgICAgIHRoZSBwcmUtc3BlY2lmaWVkIHRvbGVyYW5jZS4KLSAgICAgICAgIiIiCisg
ICAgZGVmIF9fZXFfXyhzZWxmLCBhY3R1YWwpIC0+IGJvb2w6CisgICAgICAgICIiIlJldHVybiB3
aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZXhwZWN0ZWQgdmFsdWUKKyAg
ICAgICAgd2l0aGluIHRoZSBwcmUtc3BlY2lmaWVkIHRvbGVyYW5jZS4iIiIKICAgICAgICAgaWYg
X2lzX251bXB5X2FycmF5KGFjdHVhbCk6Ci0gICAgICAgICAgICByZXR1cm4gQXBwcm94TnVtcHko
YWN0dWFsLCBzZWxmLmFicywgc2VsZi5yZWwsIHNlbGYubmFuX29rKSA9PSBzZWxmLmV4cGVjdGVk
CisgICAgICAgICAgICAjIENhbGwgYGBfX2VxX18oKWBgIG1hbnVhbGx5IHRvIHByZXZlbnQgaW5m
aW5pdGUtcmVjdXJzaW9uIHdpdGgKKyAgICAgICAgICAgICMgbnVtcHk8MS4xMy4gIFNlZSAjMzc0
OC4KKyAgICAgICAgICAgIHJldHVybiBhbGwoc2VsZi5fX2VxX18oYSkgZm9yIGEgaW4gYWN0dWFs
LmZsYXQpCiAKICAgICAgICAgIyBTaG9ydC1jaXJjdWl0IGV4YWN0IGVxdWFsaXR5LgogICAgICAg
ICBpZiBhY3R1YWwgPT0gc2VsZi5leHBlY3RlZDoKQEAgLTIzMCwxNiArMjU1LDE4IEBAIGNsYXNz
IEFwcHJveFNjYWxhcihBcHByb3hCYXNlKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAg
ICAgICAgICMgUmV0dXJuIHRydWUgaWYgdGhlIHR3byBudW1iZXJzIGFyZSB3aXRoaW4gdGhlIHRv
bGVyYW5jZS4KLSAgICAgICAgcmV0dXJuIGFicyhzZWxmLmV4cGVjdGVkIC0gYWN0dWFsKSA8PSBz
ZWxmLnRvbGVyYW5jZQorICAgICAgICByZXN1bHQgPSBhYnMoc2VsZi5leHBlY3RlZCAtIGFjdHVh
bCkgPD0gc2VsZi50b2xlcmFuY2UgICMgdHlwZTogYm9vbAorICAgICAgICByZXR1cm4gcmVzdWx0
CiAKLSAgICBfX2hhc2hfXyA9IE5vbmUKKyAgICAjIElnbm9yZSB0eXBlIGJlY2F1c2Ugb2YgaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy80MjY2LgorICAgIF9faGFzaF9fID0g
Tm9uZSAgIyB0eXBlOiBpZ25vcmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiB0b2xlcmFuY2Uo
c2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gdGhlIHRvbGVyYW5jZSBmb3IgdGhl
IGNvbXBhcmlzb24uICBUaGlzIGNvdWxkIGJlIGVpdGhlciBhbgotICAgICAgICBhYnNvbHV0ZSB0
b2xlcmFuY2Ugb3IgYSByZWxhdGl2ZSB0b2xlcmFuY2UsIGRlcGVuZGluZyBvbiB3aGF0IHRoZSB1
c2VyCi0gICAgICAgIHNwZWNpZmllZCBvciB3aGljaCB3b3VsZCBiZSBsYXJnZXIuCisgICAgICAg
ICIiIlJldHVybiB0aGUgdG9sZXJhbmNlIGZvciB0aGUgY29tcGFyaXNvbi4KKworICAgICAgICBU
aGlzIGNvdWxkIGJlIGVpdGhlciBhbiBhYnNvbHV0ZSB0b2xlcmFuY2Ugb3IgYSByZWxhdGl2ZSB0
b2xlcmFuY2UsCisgICAgICAgIGRlcGVuZGluZyBvbiB3aGF0IHRoZSB1c2VyIHNwZWNpZmllZCBv
ciB3aGljaCB3b3VsZCBiZSBsYXJnZXIuCiAgICAgICAgICIiIgogCiAgICAgICAgIGRlZiBzZXRf
ZGVmYXVsdCh4LCBkZWZhdWx0KToKQEAgLTI2OSw5ICsyOTYsNyBAQCBjbGFzcyBBcHByb3hTY2Fs
YXIoQXBwcm94QmFzZSk6CiAgICAgICAgICMgd2UgYXJlbid0IGV2ZW4gZ29pbmcgdG8gdXNlIGl0
LgogICAgICAgICByZWxhdGl2ZV90b2xlcmFuY2UgPSBzZXRfZGVmYXVsdCgKICAgICAgICAgICAg
IHNlbGYucmVsLCBzZWxmLkRFRkFVTFRfUkVMQVRJVkVfVE9MRVJBTkNFCi0gICAgICAgICkgKiBh
YnMoCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkCi0gICAgICAgICkKKyAgICAgICAgKSAqIGFi
cyhzZWxmLmV4cGVjdGVkKQogCiAgICAgICAgIGlmIHJlbGF0aXZlX3RvbGVyYW5jZSA8IDA6CiAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKApAQCAtMjg1LDE1ICszMTAsMTQgQEAgY2xhc3Mg
QXBwcm94U2NhbGFyKEFwcHJveEJhc2UpOgogCiAKIGNsYXNzIEFwcHJveERlY2ltYWwoQXBwcm94
U2NhbGFyKToKLSAgICBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKKyAgICAiIiJQZXJmb3Jt
IGFwcHJveGltYXRlIGNvbXBhcmlzb25zIHdoZXJlIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIERl
Y2ltYWwuIiIiCiAKICAgICBERUZBVUxUX0FCU09MVVRFX1RPTEVSQU5DRSA9IERlY2ltYWwoIjFl
LTEyIikKICAgICBERUZBVUxUX1JFTEFUSVZFX1RPTEVSQU5DRSA9IERlY2ltYWwoIjFlLTYiKQog
CiAKLWRlZiBhcHByb3goZXhwZWN0ZWQsIHJlbD1Ob25lLCBhYnM9Tm9uZSwgbmFuX29rPUZhbHNl
KToKLSAgICAiIiIKLSAgICBBc3NlcnQgdGhhdCB0d28gbnVtYmVycyAob3IgdHdvIHNldHMgb2Yg
bnVtYmVycykgYXJlIGVxdWFsIHRvIGVhY2ggb3RoZXIKK2RlZiBhcHByb3goZXhwZWN0ZWQsIHJl
bD1Ob25lLCBhYnM9Tm9uZSwgbmFuX29rOiBib29sID0gRmFsc2UpIC0+IEFwcHJveEJhc2U6Cisg
ICAgIiIiQXNzZXJ0IHRoYXQgdHdvIG51bWJlcnMgKG9yIHR3byBzZXRzIG9mIG51bWJlcnMpIGFy
ZSBlcXVhbCB0byBlYWNoIG90aGVyCiAgICAgd2l0aGluIHNvbWUgdG9sZXJhbmNlLgogCiAgICAg
RHVlIHRvIHRoZSBgaW50cmljYWNpZXMgb2YgZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpY2BfXywg
bnVtYmVycyB0aGF0IHdlCkBAIC00NDQsODQgKzQ2OCwxMzAgQEAgZGVmIGFwcHJveChleHBlY3Rl
ZCwgcmVsPU5vbmUsIGFicz1Ob25lLCBuYW5fb2s9RmFsc2UpOgogICAgICAgIF9fIGh0dHBzOi8v
ZG9jcy5weXRob24ub3JnLzMvcmVmZXJlbmNlL2RhdGFtb2RlbC5odG1sI29iamVjdC5fX2dlX18K
ICAgICAiIiIKIAotICAgIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAotCiAgICAgIyBEZWxl
Z2F0ZSB0aGUgY29tcGFyaXNvbiB0byBhIGNsYXNzIHRoYXQga25vd3MgaG93IHRvIGRlYWwgd2l0
aCB0aGUgdHlwZQogICAgICMgb2YgdGhlIGV4cGVjdGVkIHZhbHVlIChlLmcuIGludCwgZmxvYXQs
IGxpc3QsIGRpY3QsIG51bXB5LmFycmF5LCBldGMpLgogICAgICMKLSAgICAjIFRoaXMgYXJjaGl0
ZWN0dXJlIGlzIHJlYWxseSBkcml2ZW4gYnkgdGhlIG5lZWQgdG8gc3VwcG9ydCBudW1weSBhcnJh
eXMuCi0gICAgIyBUaGUgb25seSB3YXkgdG8gb3ZlcnJpZGUgYD09YCBmb3IgYXJyYXlzIHdpdGhv
dXQgcmVxdWlyaW5nIHRoYXQgYXBwcm94IGJlCi0gICAgIyB0aGUgbGVmdCBvcGVyYW5kIGlzIHRv
IGluaGVyaXQgdGhlIGFwcHJveCBvYmplY3QgZnJvbSBgbnVtcHkubmRhcnJheWAuCi0gICAgIyBC
dXQgdGhhdCBjYW4ndCBiZSBhIGdlbmVyYWwgc29sdXRpb24sIGJlY2F1c2UgaXQgcmVxdWlyZXMg
KDEpIG51bXB5IHRvIGJlCi0gICAgIyBpbnN0YWxsZWQgYW5kICgyKSB0aGUgZXhwZWN0ZWQgdmFs
dWUgdG8gYmUgYSBudW1weSBhcnJheS4gIFNvIHRoZSBnZW5lcmFsCi0gICAgIyBzb2x1dGlvbiBp
cyB0byBkZWxlZ2F0ZSBlYWNoIHR5cGUgb2YgZXhwZWN0ZWQgdmFsdWUgdG8gYSBkaWZmZXJlbnQg
Y2xhc3MuCisgICAgIyBUaGUgcHJpbWFyeSByZXNwb25zaWJpbGl0eSBvZiB0aGVzZSBjbGFzc2Vz
IGlzIHRvIGltcGxlbWVudCBgYF9fZXFfXygpYGAKKyAgICAjIGFuZCBgYF9fcmVwcl9fKClgYC4g
IFRoZSBmb3JtZXIgaXMgdXNlZCB0byBhY3R1YWxseSBjaGVjayBpZiBzb21lCisgICAgIyAiYWN0
dWFsIiB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIHRoZSBnaXZlbiBleHBlY3RlZCB2YWx1ZSB3aXRo
aW4gdGhlCisgICAgIyBhbGxvd2VkIHRvbGVyYW5jZS4gIFRoZSBsYXR0ZXIgaXMgdXNlZCB0byBz
aG93IHRoZSB1c2VyIHRoZSBleHBlY3RlZAorICAgICMgdmFsdWUgYW5kIHRvbGVyYW5jZSwgaW4g
dGhlIGNhc2UgdGhhdCBhIHRlc3QgZmFpbGVkLgogICAgICMKLSAgICAjIFRoaXMgaGFzIHRoZSBh
ZHZhbnRhZ2UgdGhhdCBpdCBtYWRlIGl0IGVhc3kgdG8gc3VwcG9ydCBtYXBwaW5nIHR5cGVzCi0g
ICAgIyAoaS5lLiBkaWN0KS4gIFRoZSBvbGQgY29kZSBhY2NlcHRlZCBtYXBwaW5nIHR5cGVzLCBi
dXQgd291bGQgb25seSBjb21wYXJlCi0gICAgIyB0aGVpciBrZXlzLCB3aGljaCBpcyBwcm9iYWJs
eSBub3Qgd2hhdCBtb3N0IHBlb3BsZSB3b3VsZCBleHBlY3QuCisgICAgIyBUaGUgYWN0dWFsIGxv
Z2ljIGZvciBtYWtpbmcgYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgY2FuIGJlIGZvdW5kIGluCisg
ICAgIyBBcHByb3hTY2FsYXIsIHdoaWNoIGlzIHVzZWQgdG8gY29tcGFyZSBpbmRpdmlkdWFsIG51
bWJlcnMuICBBbGwgb2YgdGhlCisgICAgIyBvdGhlciBBcHByb3ggY2xhc3NlcyBldmVudHVhbGx5
IGRlbGVnYXRlIHRvIHRoaXMgY2xhc3MuICBUaGUgQXBwcm94QmFzZQorICAgICMgY2xhc3MgcHJv
dmlkZXMgc29tZSBjb252ZW5pZW50IG1ldGhvZHMgYW5kIG92ZXJsb2FkcywgYnV0IGlzbid0IHJl
YWxseQorICAgICMgZXNzZW50aWFsLgogCi0gICAgaWYgX2lzX251bXB5X2FycmF5KGV4cGVjdGVk
KToKLSAgICAgICAgY2xzID0gQXBwcm94TnVtcHkKKyAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKKworICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIERlY2ltYWwpOgorICAgICAgICBjbHMg
PSBBcHByb3hEZWNpbWFsICAjIHR5cGU6IFR5cGVbQXBwcm94QmFzZV0KKyAgICBlbGlmIGlzaW5z
dGFuY2UoZXhwZWN0ZWQsIE51bWJlcik6CisgICAgICAgIGNscyA9IEFwcHJveFNjYWxhcgogICAg
IGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgTWFwcGluZyk6CiAgICAgICAgIGNscyA9IEFwcHJv
eE1hcHBpbmcKLSAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIFNlcXVlbmNlKSBhbmQgbm90
IGlzaW5zdGFuY2UoZXhwZWN0ZWQsIFNUUklOR19UWVBFUyk6Ci0gICAgICAgIGNscyA9IEFwcHJv
eFNlcXVlbmNlCi0gICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBEZWNpbWFsKToKLSAgICAg
ICAgY2xzID0gQXBwcm94RGVjaW1hbAorICAgIGVsaWYgX2lzX251bXB5X2FycmF5KGV4cGVjdGVk
KToKKyAgICAgICAgY2xzID0gQXBwcm94TnVtcHkKKyAgICBlbGlmICgKKyAgICAgICAgaXNpbnN0
YW5jZShleHBlY3RlZCwgSXRlcmFibGUpCisgICAgICAgIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVk
LCBTaXplZCkKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSB0aGUgZXJyb3IgaXMgd3Jv
bmcgLS0gbm90IHVucmVhY2hhYmxlLgorICAgICAgICBhbmQgbm90IGlzaW5zdGFuY2UoZXhwZWN0
ZWQsIFNUUklOR19UWVBFUykgICMgdHlwZTogaWdub3JlW3VucmVhY2hhYmxlXQorICAgICk6Cisg
ICAgICAgIGNscyA9IEFwcHJveFNlcXVlbmNlbGlrZQogICAgIGVsc2U6Ci0gICAgICAgIGNscyA9
IEFwcHJveFNjYWxhcgorICAgICAgICByYWlzZSBfbm9uX251bWVyaWNfdHlwZV9lcnJvcihleHBl
Y3RlZCwgYXQ9Tm9uZSkKIAogICAgIHJldHVybiBjbHMoZXhwZWN0ZWQsIHJlbCwgYWJzLCBuYW5f
b2spCiAKIAotZGVmIF9pc19udW1weV9hcnJheShvYmopOgotICAgICIiIgotICAgIFJldHVybiB0
cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBudW1weSBhcnJheS4gIE1ha2UgYSBzcGVjaWFs
IGVmZm9ydCB0bwotICAgIGF2b2lkIGltcG9ydGluZyBudW1weSB1bmxlc3MgaXQncyByZWFsbHkg
bmVjZXNzYXJ5LgotICAgICIiIgotICAgIGltcG9ydCBpbnNwZWN0Ci0KLSAgICBmb3IgY2xzIGlu
IGluc3BlY3QuZ2V0bXJvKHR5cGUob2JqKSk6Ci0gICAgICAgIGlmIGNscy5fX21vZHVsZV9fID09
ICJudW1weSI6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IG51bXB5
IGFzIG5wCitkZWYgX2lzX251bXB5X2FycmF5KG9iajogb2JqZWN0KSAtPiBib29sOgorICAgICIi
IlJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBudW1weSBhcnJheS4KIAotICAg
ICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG9iaiwgbnAubmRhcnJheSkKLSAgICAgICAg
ICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgQSBzcGVj
aWFsIGVmZm9ydCBpcyBtYWRlIHRvIGF2b2lkIGltcG9ydGluZyBudW1weSB1bmxlc3MgaXQncyBy
ZWFsbHkgbmVjZXNzYXJ5LgorICAgICIiIgorICAgIGltcG9ydCBzeXMKIAorICAgIG5wID0gc3lz
Lm1vZHVsZXMuZ2V0KCJudW1weSIpICAjIHR5cGU6IEFueQorICAgIGlmIG5wIGlzIG5vdCBOb25l
OgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIG5wLm5kYXJyYXkpCiAgICAgcmV0dXJu
IEZhbHNlCiAKIAogIyBidWlsdGluIHB5dGVzdC5yYWlzZXMgaGVscGVyCiAKK19FID0gVHlwZVZh
cigiX0UiLCBib3VuZD1CYXNlRXhjZXB0aW9uKQorCisKK0BvdmVybG9hZAorZGVmIHJhaXNlcygK
KyAgICBleHBlY3RlZF9leGNlcHRpb246IFVuaW9uWyJUeXBlW19FXSIsIFR1cGxlWyJUeXBlW19F
XSIsIC4uLl1dLAorICAgICosCisgICAgbWF0Y2g6ICJPcHRpb25hbFtVbmlvbltzdHIsIFBhdHRl
cm5bc3RyXV1dIiA9IC4uLgorKSAtPiAiUmFpc2VzQ29udGV4dFtfRV0iOgorICAgIC4uLgorCisK
K0BvdmVybG9hZCAgIyBub3FhOiBGODExCitkZWYgcmFpc2VzKCAgIyBub3FhOiBGODExCisgICAg
ZXhwZWN0ZWRfZXhjZXB0aW9uOiBVbmlvblsiVHlwZVtfRV0iLCBUdXBsZVsiVHlwZVtfRV0iLCAu
Li5dXSwKKyAgICBmdW5jOiBDYWxsYWJsZVsuLi4sIEFueV0sCisgICAgKmFyZ3M6IEFueSwKKyAg
ICAqKmt3YXJnczogQW55CispIC0+IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mb1tfRV06Cisg
ICAgLi4uCisKIAotZGVmIHJhaXNlcyhleHBlY3RlZF9leGNlcHRpb24sICphcmdzLCAqKmt3YXJn
cyk6Ci0gICAgciIiIgotICAgIEFzc2VydCB0aGF0IGEgY29kZSBibG9jay9mdW5jdGlvbiBjYWxs
IHJhaXNlcyBgYGV4cGVjdGVkX2V4Y2VwdGlvbmBgCi0gICAgYW5kIHJhaXNlIGEgZmFpbHVyZSBl
eGNlcHRpb24gb3RoZXJ3aXNlLgorZGVmIHJhaXNlcyggICMgbm9xYTogRjgxMQorICAgIGV4cGVj
dGVkX2V4Y2VwdGlvbjogVW5pb25bIlR5cGVbX0VdIiwgVHVwbGVbIlR5cGVbX0VdIiwgLi4uXV0s
CisgICAgKmFyZ3M6IEFueSwKKyAgICAqKmt3YXJnczogQW55CispIC0+IFVuaW9uWyJSYWlzZXND
b250ZXh0W19FXSIsIF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mb1tfRV1dOgorICAgIHIiIiJB
c3NlcnQgdGhhdCBhIGNvZGUgYmxvY2svZnVuY3Rpb24gY2FsbCByYWlzZXMgYGBleHBlY3RlZF9l
eGNlcHRpb25gYAorICAgIG9yIHJhaXNlIGEgZmFpbHVyZSBleGNlcHRpb24gb3RoZXJ3aXNlLgog
Ci0gICAgOmFyZyBtZXNzYWdlOiBpZiBzcGVjaWZpZWQsIHByb3ZpZGVzIGEgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZSBpZiB0aGUKLSAgICAgICAgZXhjZXB0aW9uIGlzIG5vdCByYWlzZWQKLSAgICA6
YXJnIG1hdGNoOiBpZiBzcGVjaWZpZWQsIGFzc2VydHMgdGhhdCB0aGUgZXhjZXB0aW9uIG1hdGNo
ZXMgYSB0ZXh0IG9yIHJlZ2V4CisgICAgOmt3cGFyYW0gbWF0Y2g6CisgICAgICAgIElmIHNwZWNp
ZmllZCwgYSBzdHJpbmcgY29udGFpbmluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwKKyAgICAgICAg
b3IgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0LCB0aGF0IGlzIHRlc3RlZCBhZ2FpbnN0IHRo
ZSBzdHJpbmcKKyAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGV4Y2VwdGlvbiB1c2luZyBg
YHJlLnNlYXJjaGBgLiBUbyBtYXRjaCBhIGxpdGVyYWwKKyAgICAgICAgc3RyaW5nIHRoYXQgbWF5
IGNvbnRhaW4gYHNwZWNpYWwgY2hhcmFjdGVyc2BfXywgdGhlIHBhdHRlcm4gY2FuCisgICAgICAg
IGZpcnN0IGJlIGVzY2FwZWQgd2l0aCBgYHJlLmVzY2FwZWBgLgogCi0gICAgVGhpcyBoZWxwZXIg
cHJvZHVjZXMgYSBgYEV4Y2VwdGlvbkluZm8oKWBgIG9iamVjdCAoc2VlIGJlbG93KS4KKyAgICAg
ICAgKFRoaXMgaXMgb25seSB1c2VkIHdoZW4gYGBweXRlc3QucmFpc2VzYGAgaXMgdXNlZCBhcyBh
IGNvbnRleHQgbWFuYWdlciwKKyAgICAgICAgYW5kIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBmdW5j
dGlvbiBvdGhlcndpc2UuCisgICAgICAgIFdoZW4gdXNpbmcgYGBweXRlc3QucmFpc2VzYGAgYXMg
YSBmdW5jdGlvbiwgeW91IGNhbiB1c2U6CisgICAgICAgIGBgcHl0ZXN0LnJhaXNlcyhFeGMsIGZ1
bmMsIG1hdGNoPSJwYXNzZWQgb24iKS5tYXRjaCgibXkgcGF0dGVybiIpYGAuKQogCi0gICAgWW91
IG1heSB1c2UgdGhpcyBmdW5jdGlvbiBhcyBhIGNvbnRleHQgbWFuYWdlcjo6CisgICAgICAgIF9f
IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9yZS5odG1sI3JlZ3VsYXItZXhwcmVz
c2lvbi1zeW50YXgKKworICAgIC4uIGN1cnJlbnRtb2R1bGU6OiBfcHl0ZXN0Ll9jb2RlCisKKyAg
ICBVc2UgYGBweXRlc3QucmFpc2VzYGAgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHdoaWNoIHdpbGwg
Y2FwdHVyZSB0aGUgZXhjZXB0aW9uIG9mIHRoZSBnaXZlbgorICAgIHR5cGU6OgogCiAgICAgICAg
ID4+PiB3aXRoIHJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgIC4uLiAgICAxLzAK
IAotICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi4xMAorICAgIElmIHRoZSBjb2RlIGJsb2NrIGRv
ZXMgbm90IHJhaXNlIHRoZSBleHBlY3RlZCBleGNlcHRpb24gKGBgWmVyb0RpdmlzaW9uRXJyb3Jg
YCBpbiB0aGUgZXhhbXBsZQorICAgIGFib3ZlKSwgb3Igbm8gZXhjZXB0aW9uIGF0IGFsbCwgdGhl
IGNoZWNrIHdpbGwgZmFpbCBpbnN0ZWFkLgorCisgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUga2V5
d29yZCBhcmd1bWVudCBgYG1hdGNoYGAgdG8gYXNzZXJ0IHRoYXQgdGhlCisgICAgZXhjZXB0aW9u
IG1hdGNoZXMgYSB0ZXh0IG9yIHJlZ2V4OjoKKworICAgICAgICA+Pj4gd2l0aCByYWlzZXMoVmFs
dWVFcnJvciwgbWF0Y2g9J211c3QgYmUgMCBvciBOb25lJyk6CisgICAgICAgIC4uLiAgICAgcmFp
c2UgVmFsdWVFcnJvcigidmFsdWUgbXVzdCBiZSAwIG9yIE5vbmUiKQorCisgICAgICAgID4+PiB3
aXRoIHJhaXNlcyhWYWx1ZUVycm9yLCBtYXRjaD1yJ211c3QgYmUgXGQrJCcpOgorICAgICAgICAu
Li4gICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgNDIiKQogCi0gICAgSW4gdGhl
IGNvbnRleHQgbWFuYWdlciBmb3JtIHlvdSBtYXkgdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50Ci0g
ICAgYGBtZXNzYWdlYGAgdG8gc3BlY2lmeSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2U6OgorICAg
IFRoZSBjb250ZXh0IG1hbmFnZXIgcHJvZHVjZXMgYW4gOmNsYXNzOmBFeGNlcHRpb25JbmZvYCBv
YmplY3Qgd2hpY2ggY2FuIGJlIHVzZWQgdG8gaW5zcGVjdCB0aGUKKyAgICBkZXRhaWxzIG9mIHRo
ZSBjYXB0dXJlZCBleGNlcHRpb246OgogCi0gICAgICAgID4+PiB3aXRoIHJhaXNlcyhaZXJvRGl2
aXNpb25FcnJvciwgbWVzc2FnZT0iRXhwZWN0aW5nIFplcm9EaXZpc2lvbkVycm9yIik6Ci0gICAg
ICAgIC4uLiAgICBwYXNzCi0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0
KToKLSAgICAgICAgICAuLi4KLSAgICAgICAgRmFpbGVkOiBFeHBlY3RpbmcgWmVyb0RpdmlzaW9u
RXJyb3IKKyAgICAgICAgPj4+IHdpdGggcmFpc2VzKFZhbHVlRXJyb3IpIGFzIGV4Y19pbmZvOgor
ICAgICAgICAuLi4gICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgNDIiKQorICAg
ICAgICA+Pj4gYXNzZXJ0IGV4Y19pbmZvLnR5cGUgaXMgVmFsdWVFcnJvcgorICAgICAgICA+Pj4g
YXNzZXJ0IGV4Y19pbmZvLnZhbHVlLmFyZ3NbMF0gPT0gInZhbHVlIG11c3QgYmUgNDIiCiAKICAg
ICAuLiBub3RlOjoKIApAQCAtNTM1LDcgKzYwNSw3IEBAIGRlZiByYWlzZXMoZXhwZWN0ZWRfZXhj
ZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICA+Pj4gd2l0aCByYWlzZXMoVmFs
dWVFcnJvcikgYXMgZXhjX2luZm86CiAgICAgICAgICAgIC4uLiAgICAgaWYgdmFsdWUgPiAxMDoK
ICAgICAgICAgICAgLi4uICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidmFsdWUgbXVzdCBiZSA8
PSAxMCIpCi0gICAgICAgICAgIC4uLiAgICAgYXNzZXJ0IGV4Y19pbmZvLnR5cGUgPT0gVmFsdWVF
cnJvciAgIyB0aGlzIHdpbGwgbm90IGV4ZWN1dGUKKyAgICAgICAgICAgLi4uICAgICBhc3NlcnQg
ZXhjX2luZm8udHlwZSBpcyBWYWx1ZUVycm9yICAjIHRoaXMgd2lsbCBub3QgZXhlY3V0ZQogCiAg
ICAgICAgSW5zdGVhZCwgdGhlIGZvbGxvd2luZyBhcHByb2FjaCBtdXN0IGJlIHRha2VuIChub3Rl
IHRoZSBkaWZmZXJlbmNlIGluCiAgICAgICAgc2NvcGUpOjoKQEAgLTU0NCwyMiArNjE0LDE3IEBA
IGRlZiByYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAg
ICAgICAuLi4gICAgIGlmIHZhbHVlID4gMTA6CiAgICAgICAgICAgIC4uLiAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgPD0gMTAiKQogICAgICAgICAgICAuLi4KLSAgICAg
ICAgICAgPj4+IGFzc2VydCBleGNfaW5mby50eXBlID09IFZhbHVlRXJyb3IKKyAgICAgICAgICAg
Pj4+IGFzc2VydCBleGNfaW5mby50eXBlIGlzIFZhbHVlRXJyb3IKIAorICAgICoqVXNpbmcgd2l0
aCoqIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYAogCi0gICAgU2luY2UgdmVyc2lvbiBgYDMu
MWBgIHlvdSBjYW4gdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBgbWF0Y2hgYCB0byBhc3NlcnQg
dGhhdCB0aGUKLSAgICBleGNlcHRpb24gbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXg6OgorICAgIFdo
ZW4gdXNpbmcgOnJlZjpgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUgcmVmYAorICAgIGl0IGlzIHBv
c3NpYmxlIHRvIHBhcmFtZXRyaXplIHRlc3RzIHN1Y2ggdGhhdAorICAgIHNvbWUgcnVucyByYWlz
ZSBhbiBleGNlcHRpb24gYW5kIG90aGVycyBkbyBub3QuCiAKLSAgICAgICAgPj4+IHdpdGggcmFp
c2VzKFZhbHVlRXJyb3IsIG1hdGNoPSdtdXN0IGJlIDAgb3IgTm9uZScpOgotICAgICAgICAuLi4g
ICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgMCBvciBOb25lIikKKyAgICBTZWUg
OnJlZjpgcGFyYW1ldHJpemluZ19jb25kaXRpb25hbF9yYWlzaW5nYCBmb3IgYW4gZXhhbXBsZS4K
IAotICAgICAgICA+Pj4gd2l0aCByYWlzZXMoVmFsdWVFcnJvciwgbWF0Y2g9cidtdXN0IGJlIFxk
KyQnKToKLSAgICAgICAgLi4uICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBtdXN0IGJlIDQy
IikKLQotICAgICoqTGVnYWN5IGZvcm1zKioKLQotICAgIFRoZSBmb3JtcyBiZWxvdyBhcmUgZnVs
bHkgc3VwcG9ydGVkIGJ1dCBhcmUgZGlzY291cmFnZWQgZm9yIG5ldyBjb2RlIGJlY2F1c2UgdGhl
Ci0gICAgY29udGV4dCBtYW5hZ2VyIGZvcm0gaXMgcmVnYXJkZWQgYXMgbW9yZSByZWFkYWJsZSBh
bmQgbGVzcyBlcnJvci1wcm9uZS4KKyAgICAqKkxlZ2FjeSBmb3JtKioKIAogICAgIEl0IGlzIHBv
c3NpYmxlIHRvIHNwZWNpZnkgYSBjYWxsYWJsZSBieSBwYXNzaW5nIGEgdG8tYmUtY2FsbGVkIGxh
bWJkYTo6CiAKQEAgLTU3NSwxNyArNjQwLDggQEAgZGVmIHJhaXNlcyhleHBlY3RlZF9leGNlcHRp
b24sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgID4+PiByYWlzZXMoWmVyb0RpdmlzaW9uRXJy
b3IsIGYsIHg9MCkKICAgICAgICAgPEV4Y2VwdGlvbkluZm8gLi4uPgogCi0gICAgSXQgaXMgYWxz
byBwb3NzaWJsZSB0byBwYXNzIGEgc3RyaW5nIHRvIGJlIGV2YWx1YXRlZCBhdCBydW50aW1lOjoK
LQotICAgICAgICA+Pj4gcmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCAiZigwKSIpCi0gICAgICAg
IDxFeGNlcHRpb25JbmZvIC4uLj4KLQotICAgIFRoZSBzdHJpbmcgd2lsbCBiZSBldmFsdWF0ZWQg
dXNpbmcgdGhlIHNhbWUgYGBsb2NhbHMoKWBgIGFuZCBgYGdsb2JhbHMoKWBgCi0gICAgYXQgdGhl
IG1vbWVudCBvZiB0aGUgYGByYWlzZXNgYCBjYWxsLgotCi0gICAgLi4gY3VycmVudG1vZHVsZTo6
IF9weXRlc3QuX2NvZGUKLQotICAgIENvbnN1bHQgdGhlIEFQSSBvZiBgYGV4Y2luZm9gYCBvYmpl
Y3RzOiA6Y2xhc3M6YEV4Y2VwdGlvbkluZm9gLgorICAgIFRoZSBmb3JtIGFib3ZlIGlzIGZ1bGx5
IHN1cHBvcnRlZCBidXQgZGlzY291cmFnZWQgZm9yIG5ldyBjb2RlIGJlY2F1c2UgdGhlCisgICAg
Y29udGV4dCBtYW5hZ2VyIGZvcm0gaXMgcmVnYXJkZWQgYXMgbW9yZSByZWFkYWJsZSBhbmQgbGVz
cyBlcnJvci1wcm9uZS4KIAogICAgIC4uIG5vdGU6OgogICAgICAgICBTaW1pbGFyIHRvIGNhdWdo
dCBleGNlcHRpb24gb2JqZWN0cyBpbiBQeXRob24sIGV4cGxpY2l0bHkgY2xlYXJpbmcKQEAgLTU5
Nyw3OCArNjUzLDg3IEBAIGRlZiByYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uLCAqYXJncywgKipr
d2FyZ3MpOgogICAgICAgICB0aGUgZXhjZXB0aW9uIC0tPiBjdXJyZW50IGZyYW1lIHN0YWNrIC0t
PiBsb2NhbCB2YXJpYWJsZXMgLS0+CiAgICAgICAgIGBgRXhjZXB0aW9uSW5mb2BgKSB3aGljaCBt
YWtlcyBQeXRob24ga2VlcCBhbGwgb2JqZWN0cyByZWZlcmVuY2VkCiAgICAgICAgIGZyb20gdGhh
dCBjeWNsZSAoaW5jbHVkaW5nIGFsbCBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQKLSAg
ICAgICAgZnJhbWUpIGFsaXZlIHVudGlsIHRoZSBuZXh0IGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3Rp
b24gcnVuLiBTZWUgdGhlCi0gICAgICAgIG9mZmljaWFsIFB5dGhvbiBgYHRyeWBgIHN0YXRlbWVu
dCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbGVkCi0gICAgICAgIGluZm9ybWF0aW9uLgot
CisgICAgICAgIGZyYW1lKSBhbGl2ZSB1bnRpbCB0aGUgbmV4dCBjeWNsaWMgZ2FyYmFnZSBjb2xs
ZWN0aW9uIHJ1bi4KKyAgICAgICAgTW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBjYW4gYmUgZm91
bmQgaW4gdGhlIG9mZmljaWFsIFB5dGhvbgorICAgICAgICBkb2N1bWVudGF0aW9uIGZvciA6cmVm
OmB0aGUgdHJ5IHN0YXRlbWVudCA8cHl0aG9uOnRyeT5gLgogICAgICIiIgogICAgIF9fdHJhY2Vi
YWNraGlkZV9fID0gVHJ1ZQotICAgIGZvciBleGMgaW4gZmlsdGVyZmFsc2UoaXNjbGFzcywgYWx3
YXlzX2l0ZXJhYmxlKGV4cGVjdGVkX2V4Y2VwdGlvbiwgQkFTRV9UWVBFKSk6Ci0gICAgICAgIG1z
ZyA9ICgKLSAgICAgICAgICAgICJleGNlcHRpb25zIG11c3QgYmUgb2xkLXN0eWxlIGNsYXNzZXMg
b3IiCi0gICAgICAgICAgICAiIGRlcml2ZWQgZnJvbSBCYXNlRXhjZXB0aW9uLCBub3QgJXMiCi0g
ICAgICAgICkKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZyAlIHR5cGUoZXhjKSkKKworICAg
IGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWRfZXhjZXB0aW9uLCB0eXBlKToKKyAgICAgICAgZXhjZXB0
ZWRfZXhjZXB0aW9ucyA9IChleHBlY3RlZF9leGNlcHRpb24sKSAgIyB0eXBlOiBUdXBsZVtUeXBl
W19FXSwgLi4uXQorICAgIGVsc2U6CisgICAgICAgIGV4Y2VwdGVkX2V4Y2VwdGlvbnMgPSBleHBl
Y3RlZF9leGNlcHRpb24KKyAgICBmb3IgZXhjIGluIGV4Y2VwdGVkX2V4Y2VwdGlvbnM6CisgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGV4YywgdHlwZSkgb3Igbm90IGlzc3ViY2xhc3MoZXhjLCBC
YXNlRXhjZXB0aW9uKTogICMgdHlwZTogaWdub3JlW3VucmVhY2hhYmxlXQorICAgICAgICAgICAg
bXNnID0gImV4cGVjdGVkIGV4Y2VwdGlvbiBtdXN0IGJlIGEgQmFzZUV4Y2VwdGlvbiB0eXBlLCBu
b3Qge30iICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAgICAgICAgIG5vdF9hID0g
ZXhjLl9fbmFtZV9fIGlmIGlzaW5zdGFuY2UoZXhjLCB0eXBlKSBlbHNlIHR5cGUoZXhjKS5fX25h
bWVfXworICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZy5mb3JtYXQobm90X2EpKQogCiAg
ICAgbWVzc2FnZSA9ICJESUQgTk9UIFJBSVNFIHt9Ii5mb3JtYXQoZXhwZWN0ZWRfZXhjZXB0aW9u
KQotICAgIG1hdGNoX2V4cHIgPSBOb25lCiAKICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgaWYg
Im1lc3NhZ2UiIGluIGt3YXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBrd2FyZ3MucG9wKCJt
ZXNzYWdlIikKLSAgICAgICAgaWYgIm1hdGNoIiBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBtYXRj
aF9leHByID0ga3dhcmdzLnBvcCgibWF0Y2giKQorICAgICAgICBtYXRjaCA9IGt3YXJncy5wb3Ao
Im1hdGNoIiwgTm9uZSkgICMgdHlwZTogT3B0aW9uYWxbVW5pb25bc3RyLCBQYXR0ZXJuW3N0cl1d
XQogICAgICAgICBpZiBrd2FyZ3M6CiAgICAgICAgICAgICBtc2cgPSAiVW5leHBlY3RlZCBrZXl3
b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8gcHl0ZXN0LnJhaXNlczogIgotICAgICAgICAgICAgbXNn
ICs9ICIsICIuam9pbihrd2FyZ3Mua2V5cygpKQorICAgICAgICAgICAgbXNnICs9ICIsICIuam9p
bihzb3J0ZWQoa3dhcmdzKSkKKyAgICAgICAgICAgIG1zZyArPSAiXG5Vc2UgY29udGV4dC1tYW5h
Z2VyIGZvcm0gaW5zdGVhZD8iCiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQotICAg
ICAgICByZXR1cm4gUmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIG1lc3NhZ2UsIG1h
dGNoX2V4cHIpCi0gICAgZWxpZiBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cik6Ci0gICAgICAgIGNv
ZGUsID0gYXJncwotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2RlLCBzdHIpCi0gICAgICAg
IGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQotICAgICAgICBsb2MgPSBmcmFtZS5mX2xvY2Fscy5j
b3B5KCkKLSAgICAgICAgbG9jLnVwZGF0ZShrd2FyZ3MpCi0gICAgICAgICMgcHJpbnQgInJhaXNl
cyBmcmFtZSBzY29wZTogJXIiICUgZnJhbWUuZl9sb2NhbHMKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgY29kZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKGNvZGUpLmNvbXBpbGUoKQotICAgICAg
ICAgICAgcHkuYnVpbHRpbi5leGVjXyhjb2RlLCBmcmFtZS5mX2dsb2JhbHMsIGxvYykKLSAgICAg
ICAgICAgICMgWFhYIGRpZG4nVCBtZWFuIGZfZ2xvYmFscyA9PSBmX2xvY2FscyBzb21ldGhpbmcg
c3BlY2lhbD8KLSAgICAgICAgICAgICMgICAgIHRoaXMgaXMgZGVzdHJveWVkIGhlcmUgLi4uCi0g
ICAgICAgIGV4Y2VwdCBleHBlY3RlZF9leGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gX3B5
dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAgICAgcmV0dXJuIFJhaXNlc0NvbnRleHQo
ZXhwZWN0ZWRfZXhjZXB0aW9uLCBtZXNzYWdlLCBtYXRjaCkKICAgICBlbHNlOgogICAgICAgICBm
dW5jID0gYXJnc1swXQorICAgICAgICBpZiBub3QgY2FsbGFibGUoZnVuYyk6CisgICAgICAgICAg
ICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgInshcn0gb2JqZWN0ICh0eXBlOiB7
fSkgbXVzdCBiZSBjYWxsYWJsZSIuZm9ybWF0KGZ1bmMsIHR5cGUoZnVuYykpCisgICAgICAgICAg
ICApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZ1bmMoKmFyZ3NbMTpdLCAqKmt3YXJncykK
LSAgICAgICAgZXhjZXB0IGV4cGVjdGVkX2V4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBf
cHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICBleGNlcHQgZXhwZWN0ZWRfZXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIFdlIGp1c3QgY2F1Z2h0IHRoZSBleGNlcHRpb24g
LSB0aGVyZSBpcyBhIHRyYWNlYmFjay4KKyAgICAgICAgICAgIGFzc2VydCBlLl9fdHJhY2ViYWNr
X18gaXMgbm90IE5vbmUKKyAgICAgICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlv
bkluZm8uZnJvbV9leGNfaW5mbygKKyAgICAgICAgICAgICAgICAodHlwZShlKSwgZSwgZS5fX3Ry
YWNlYmFja19fKQorICAgICAgICAgICAgKQogICAgIGZhaWwobWVzc2FnZSkKIAogCi1yYWlzZXMu
RXhjZXB0aW9uID0gZmFpbC5FeGNlcHRpb24KKyMgVGhpcyBkb2Vzbid0IHdvcmsgd2l0aCBteXB5
IGZvciBub3cuIFVzZSBmYWlsLkV4Y2VwdGlvbiBpbnN0ZWFkLgorcmFpc2VzLkV4Y2VwdGlvbiA9
IGZhaWwuRXhjZXB0aW9uICAjIHR5cGU6IGlnbm9yZQogCiAKLWNsYXNzIFJhaXNlc0NvbnRleHQo
b2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZF9leGNlcHRpb24sIG1l
c3NhZ2UsIG1hdGNoX2V4cHIpOgorQGZpbmFsCitjbGFzcyBSYWlzZXNDb250ZXh0KEdlbmVyaWNb
X0VdKToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIGV4cGVjdGVk
X2V4Y2VwdGlvbjogVW5pb25bIlR5cGVbX0VdIiwgVHVwbGVbIlR5cGVbX0VdIiwgLi4uXV0sCisg
ICAgICAgIG1lc3NhZ2U6IHN0ciwKKyAgICAgICAgbWF0Y2hfZXhwcjogT3B0aW9uYWxbVW5pb25b
c3RyLCAiUGF0dGVybltzdHJdIl1dID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIHNl
bGYuZXhwZWN0ZWRfZXhjZXB0aW9uID0gZXhwZWN0ZWRfZXhjZXB0aW9uCiAgICAgICAgIHNlbGYu
bWVzc2FnZSA9IG1lc3NhZ2UKICAgICAgICAgc2VsZi5tYXRjaF9leHByID0gbWF0Y2hfZXhwcgot
ICAgICAgICBzZWxmLmV4Y2luZm8gPSBOb25lCisgICAgICAgIHNlbGYuZXhjaW5mbyA9IE5vbmUg
ICMgdHlwZTogT3B0aW9uYWxbX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvW19FXV0KIAotICAg
IGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuZXhjaW5mbyA9IG9iamVjdC5fX25l
d19fKF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbykKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYp
IC0+IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mb1tfRV06CisgICAgICAgIHNlbGYuZXhjaW5m
byA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mb3JfbGF0ZXIoKQogICAgICAgICByZXR1
cm4gc2VsZi5leGNpbmZvCiAKLSAgICBkZWYgX19leGl0X18oc2VsZiwgKnRwKToKKyAgICBkZWYg
X19leGl0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIGV4Y190eXBlOiBPcHRpb25hbFsiVHlw
ZVtCYXNlRXhjZXB0aW9uXSJdLAorICAgICAgICBleGNfdmFsOiBPcHRpb25hbFtCYXNlRXhjZXB0
aW9uXSwKKyAgICAgICAgZXhjX3RiOiBPcHRpb25hbFtUcmFjZWJhY2tUeXBlXSwKKyAgICApIC0+
IGJvb2w6CiAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICBpZiB0cFsw
XSBpcyBOb25lOgorICAgICAgICBpZiBleGNfdHlwZSBpcyBOb25lOgogICAgICAgICAgICAgZmFp
bChzZWxmLm1lc3NhZ2UpCi0gICAgICAgIHNlbGYuZXhjaW5mby5fX2luaXRfXyh0cCkKLSAgICAg
ICAgc3VwcHJlc3NfZXhjZXB0aW9uID0gaXNzdWJjbGFzcyhzZWxmLmV4Y2luZm8udHlwZSwgc2Vs
Zi5leHBlY3RlZF9leGNlcHRpb24pCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPT0g
MiBhbmQgc3VwcHJlc3NfZXhjZXB0aW9uOgotICAgICAgICAgICAgc3lzLmV4Y19jbGVhcigpCi0g
ICAgICAgIGlmIHNlbGYubWF0Y2hfZXhwciBhbmQgc3VwcHJlc3NfZXhjZXB0aW9uOgorICAgICAg
ICBhc3NlcnQgc2VsZi5leGNpbmZvIGlzIG5vdCBOb25lCisgICAgICAgIGlmIG5vdCBpc3N1YmNs
YXNzKGV4Y190eXBlLCBzZWxmLmV4cGVjdGVkX2V4Y2VwdGlvbik6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgIyBDYXN0IHRvIG5hcnJvdyB0aGUgZXhjZXB0aW9uIHR5cGUgbm93
IHRoYXQgaXQncyB2ZXJpZmllZC4KKyAgICAgICAgZXhjX2luZm8gPSBjYXN0KAorICAgICAgICAg
ICAgVHVwbGVbIlR5cGVbX0VdIiwgX0UsIFRyYWNlYmFja1R5cGVdLCAoZXhjX3R5cGUsIGV4Y192
YWwsIGV4Y190YikKKyAgICAgICAgKQorICAgICAgICBzZWxmLmV4Y2luZm8uZmlsbF91bmZpbGxl
ZChleGNfaW5mbykKKyAgICAgICAgaWYgc2VsZi5tYXRjaF9leHByIGlzIG5vdCBOb25lOgogICAg
ICAgICAgICAgc2VsZi5leGNpbmZvLm1hdGNoKHNlbGYubWF0Y2hfZXhwcikKLSAgICAgICAgcmV0
dXJuIHN1cHByZXNzX2V4Y2VwdGlvbgorICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcmVjd2Fybi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3JlY3dhcm4ucHkKaW5kZXggNzgzOWY1NzAwYzg3Li4zOWQ2ZGU5MTQ1NTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3JlY3dhcm4ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvcmVjd2Fybi5weQpAQCAtMSwyMSArMSwzMyBAQAotIiIiIHJlY29yZGluZyB3
YXJuaW5ncyBkdXJpbmcgdGVzdCBmdW5jdGlvbiBleGVjdXRpb24uICIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1p
bXBvcnQgaW5zcGVjdAotCi1pbXBvcnQgX3B5dGVzdC5fY29kZQotaW1wb3J0IHB5Ci1pbXBvcnQg
c3lzCisiIiJSZWNvcmQgd2FybmluZ3MgZHVyaW5nIHRlc3QgZnVuY3Rpb24gZXhlY3V0aW9uLiIi
IgoraW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKK2Zyb20gdHlwZXMgaW1wb3J0IFRyYWNlYmFj
a1R5cGUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJs
ZQorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJh
dG9yCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFs
Citmcm9tIHR5cGluZyBpbXBvcnQgUGF0dGVybgorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitm
cm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCisKK2Zy
b20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9y
dCBvdmVybG9hZAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJv
bSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBmaXh0dXJlCitmcm9tIF9weXRlc3Qub3V0Y29tZXMg
aW1wb3J0IGZhaWwKIAotaW1wb3J0IHJlCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBUeXBlCiAKLWZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgeWllbGRfZml4
dHVyZQotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsCiAKK1QgPSBUeXBlVmFyKCJU
IikKIAotQHlpZWxkX2ZpeHR1cmUKLWRlZiByZWN3YXJuKCk6CisKK0BmaXh0dXJlCitkZWYgcmVj
d2FybigpIC0+IEdlbmVyYXRvclsiV2FybmluZ3NSZWNvcmRlciIsIE5vbmUsIE5vbmVdOgogICAg
ICIiIlJldHVybiBhIDpjbGFzczpgV2FybmluZ3NSZWNvcmRlcmAgaW5zdGFuY2UgdGhhdCByZWNv
cmRzIGFsbCB3YXJuaW5ncyBlbWl0dGVkIGJ5IHRlc3QgZnVuY3Rpb25zLgogCiAgICAgU2VlIGh0
dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS93YXJuaW5ncy5odG1sIGZvciBpbmZvcm1hdGlv
bgpAQCAtMjcsOSArMzksMjYgQEAgZGVmIHJlY3dhcm4oKToKICAgICAgICAgeWllbGQgd3JlYwog
CiAKLWRlZiBkZXByZWNhdGVkX2NhbGwoZnVuYz1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAg
ICIiImNvbnRleHQgbWFuYWdlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuc3VyZSBhIGJsb2NrIG9m
IGNvZGUgdHJpZ2dlcnMgYQotICAgIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgb3IgYGBQZW5kaW5n
RGVwcmVjYXRpb25XYXJuaW5nYGA6OgorQG92ZXJsb2FkCitkZWYgZGVwcmVjYXRlZF9jYWxsKAor
ICAgICosIG1hdGNoOiBPcHRpb25hbFtVbmlvbltzdHIsICJQYXR0ZXJuW3N0cl0iXV0gPSAuLi4K
KykgLT4gIldhcm5pbmdzUmVjb3JkZXIiOgorICAgIC4uLgorCisKK0BvdmVybG9hZCAgIyBub3Fh
OiBGODExCitkZWYgZGVwcmVjYXRlZF9jYWxsKCAgIyBub3FhOiBGODExCisgICAgZnVuYzogQ2Fs
bGFibGVbLi4uLCBUXSwgKmFyZ3M6IEFueSwgKiprd2FyZ3M6IEFueQorKSAtPiBUOgorICAgIC4u
LgorCisKK2RlZiBkZXByZWNhdGVkX2NhbGwoICAjIG5vcWE6IEY4MTEKKyAgICBmdW5jOiBPcHRp
b25hbFtDYWxsYWJsZVsuLi4sIEFueV1dID0gTm9uZSwgKmFyZ3M6IEFueSwgKiprd2FyZ3M6IEFu
eQorKSAtPiBVbmlvblsiV2FybmluZ3NSZWNvcmRlciIsIEFueV06CisgICAgIiIiQXNzZXJ0IHRo
YXQgY29kZSBwcm9kdWNlcyBhIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgb3IgYGBQZW5kaW5nRGVw
cmVjYXRpb25XYXJuaW5nYGAuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFzIGEg
Y29udGV4dCBtYW5hZ2VyOjoKIAogICAgICAgICA+Pj4gaW1wb3J0IHdhcm5pbmdzCiAgICAgICAg
ID4+PiBkZWYgYXBpX2NhbGxfdjIoKToKQEAgLTM5LDUyICs2OCw0NyBAQCBkZWYgZGVwcmVjYXRl
ZF9jYWxsKGZ1bmM9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgPj4+IHdpdGggZGVw
cmVjYXRlZF9jYWxsKCk6CiAgICAgICAgIC4uLiAgICBhc3NlcnQgYXBpX2NhbGxfdjIoKSA9PSAy
MDAKIAotICAgIGBgZGVwcmVjYXRlZF9jYWxsYGAgY2FuIGFsc28gYmUgdXNlZCBieSBwYXNzaW5n
IGEgZnVuY3Rpb24gYW5kIGBgKmFyZ3NgYCBhbmQgYGAqa3dhcmdzYGAsCi0gICAgaW4gd2hpY2gg
Y2FzZSBpdCB3aWxsIGVuc3VyZSBjYWxsaW5nIGBgZnVuYygqYXJncywgKiprd2FyZ3MpYGAgcHJv
ZHVjZXMgb25lIG9mIHRoZSB3YXJuaW5ncwotICAgIHR5cGVzIGFib3ZlLgotICAgICIiIgotICAg
IGlmIG5vdCBmdW5jOgotICAgICAgICByZXR1cm4gX0RlcHJlY2F0ZWRDYWxsQ29udGV4dCgpCi0g
ICAgZWxzZToKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIHdpdGgg
X0RlcHJlY2F0ZWRDYWxsQ29udGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3Ms
ICoqa3dhcmdzKQotCi0KLWNsYXNzIF9EZXByZWNhdGVkQ2FsbENvbnRleHQob2JqZWN0KToKLSAg
ICAiIiJJbXBsZW1lbnRzIHRoZSBsb2dpYyB0byBjYXB0dXJlIGRlcHJlY2F0aW9uIHdhcm5pbmdz
IGFzIGEgY29udGV4dCBtYW5hZ2VyLiIiIgotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAg
ICAgICAgc2VsZi5fY2FwdHVyZWRfY2F0ZWdvcmllcyA9IFtdCi0gICAgICAgIHNlbGYuX29sZF93
YXJuID0gd2FybmluZ3Mud2FybgotICAgICAgICBzZWxmLl9vbGRfd2Fybl9leHBsaWNpdCA9IHdh
cm5pbmdzLndhcm5fZXhwbGljaXQKLSAgICAgICAgd2FybmluZ3Mud2Fybl9leHBsaWNpdCA9IHNl
bGYuX3dhcm5fZXhwbGljaXQKLSAgICAgICAgd2FybmluZ3Mud2FybiA9IHNlbGYuX3dhcm4KLQot
ICAgIGRlZiBfd2Fybl9leHBsaWNpdChzZWxmLCBtZXNzYWdlLCBjYXRlZ29yeSwgKmFyZ3MsICoq
a3dhcmdzKToKLSAgICAgICAgc2VsZi5fY2FwdHVyZWRfY2F0ZWdvcmllcy5hcHBlbmQoY2F0ZWdv
cnkpCi0KLSAgICBkZWYgX3dhcm4oc2VsZiwgbWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBXYXJuaW5nKToKLSAg
ICAgICAgICAgIHNlbGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMuYXBwZW5kKG1lc3NhZ2UuX19jbGFz
c19fKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fY2FwdHVyZWRfY2F0ZWdvcmll
cy5hcHBlbmQoY2F0ZWdvcnkpCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4
Y192YWwsIGV4Y190Yik6Ci0gICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgPSBzZWxmLl9v
bGRfd2Fybl9leHBsaWNpdAotICAgICAgICB3YXJuaW5ncy53YXJuID0gc2VsZi5fb2xkX3dhcm4K
LQotICAgICAgICBpZiBleGNfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgZGVwcmVjYXRpb25f
Y2F0ZWdvcmllcyA9IChEZXByZWNhdGlvbldhcm5pbmcsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5p
bmcpCi0gICAgICAgICAgICBpZiBub3QgYW55KAotICAgICAgICAgICAgICAgIGlzc3ViY2xhc3Mo
YywgZGVwcmVjYXRpb25fY2F0ZWdvcmllcykgZm9yIGMgaW4gc2VsZi5fY2FwdHVyZWRfY2F0ZWdv
cmllcwotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9
IFRydWUKLSAgICAgICAgICAgICAgICBtc2cgPSAiRGlkIG5vdCBwcm9kdWNlIERlcHJlY2F0aW9u
V2FybmluZyBvciBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIgotICAgICAgICAgICAgICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yKG1zZykKKyAgICBJdCBjYW4gYWxzbyBiZSB1c2VkIGJ5IHBhc3Np
bmcgYSBmdW5jdGlvbiBhbmQgYGAqYXJnc2BgIGFuZCBgYCoqa3dhcmdzYGAsCisgICAgaW4gd2hp
Y2ggY2FzZSBpdCB3aWxsIGVuc3VyZSBjYWxsaW5nIGBgZnVuYygqYXJncywgKiprd2FyZ3MpYGAg
cHJvZHVjZXMgb25lIG9mCisgICAgdGhlIHdhcm5pbmdzIHR5cGVzIGFib3ZlLiBUaGUgcmV0dXJu
IHZhbHVlIGlzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uLgogCisgICAgSW4gdGhl
IGNvbnRleHQgbWFuYWdlciBmb3JtIHlvdSBtYXkgdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBg
bWF0Y2hgYCB0byBhc3NlcnQKKyAgICB0aGF0IHRoZSB3YXJuaW5nIG1hdGNoZXMgYSB0ZXh0IG9y
IHJlZ2V4LgogCi1kZWYgd2FybnMoZXhwZWN0ZWRfd2FybmluZywgKmFyZ3MsICoqa3dhcmdzKToK
KyAgICBUaGUgY29udGV4dCBtYW5hZ2VyIHByb2R1Y2VzIGEgbGlzdCBvZiA6Y2xhc3M6YHdhcm5p
bmdzLldhcm5pbmdNZXNzYWdlYCBvYmplY3RzLAorICAgIG9uZSBmb3IgZWFjaCB3YXJuaW5nIHJh
aXNlZC4KKyAgICAiIiIKKyAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICBpZiBmdW5j
IGlzIG5vdCBOb25lOgorICAgICAgICBhcmdzID0gKGZ1bmMsKSArIGFyZ3MKKyAgICByZXR1cm4g
d2FybnMoKERlcHJlY2F0aW9uV2FybmluZywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyksICph
cmdzLCAqKmt3YXJncykKKworCitAb3ZlcmxvYWQKK2RlZiB3YXJucygKKyAgICBleHBlY3RlZF93
YXJuaW5nOiBPcHRpb25hbFtVbmlvblsiVHlwZVtXYXJuaW5nXSIsIFR1cGxlWyJUeXBlW1dhcm5p
bmddIiwgLi4uXV1dLAorICAgICosCisgICAgbWF0Y2g6ICJPcHRpb25hbFtVbmlvbltzdHIsIFBh
dHRlcm5bc3RyXV1dIiA9IC4uLgorKSAtPiAiV2FybmluZ3NDaGVja2VyIjoKKyAgICAuLi4KKwor
CitAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorZGVmIHdhcm5zKCAgIyBub3FhOiBGODExCisgICAg
ZXhwZWN0ZWRfd2FybmluZzogT3B0aW9uYWxbVW5pb25bIlR5cGVbV2FybmluZ10iLCBUdXBsZVsi
VHlwZVtXYXJuaW5nXSIsIC4uLl1dXSwKKyAgICBmdW5jOiBDYWxsYWJsZVsuLi4sIFRdLAorICAg
ICphcmdzOiBBbnksCisgICAgKiprd2FyZ3M6IEFueQorKSAtPiBUOgorICAgIC4uLgorCisKK2Rl
ZiB3YXJucyggICMgbm9xYTogRjgxMQorICAgIGV4cGVjdGVkX3dhcm5pbmc6IE9wdGlvbmFsW1Vu
aW9uWyJUeXBlW1dhcm5pbmddIiwgVHVwbGVbIlR5cGVbV2FybmluZ10iLCAuLi5dXV0sCisgICAg
KmFyZ3M6IEFueSwKKyAgICBtYXRjaDogT3B0aW9uYWxbVW5pb25bc3RyLCAiUGF0dGVybltzdHJd
Il1dID0gTm9uZSwKKyAgICAqKmt3YXJnczogQW55CispIC0+IFVuaW9uWyJXYXJuaW5nc0NoZWNr
ZXIiLCBBbnldOgogICAgIHIiIiJBc3NlcnQgdGhhdCBjb2RlIHJhaXNlcyBhIHBhcnRpY3VsYXIg
Y2xhc3Mgb2Ygd2FybmluZy4KIAogICAgIFNwZWNpZmljYWxseSwgdGhlIHBhcmFtZXRlciBgYGV4
cGVjdGVkX3dhcm5pbmdgYCBjYW4gYmUgYSB3YXJuaW5nIGNsYXNzIG9yCkBAIC0xMDEsNyArMTI1
LDcgQEAgZGVmIHdhcm5zKGV4cGVjdGVkX3dhcm5pbmcsICphcmdzLCAqKmt3YXJncyk6CiAgICAg
ICAgIC4uLiAgICB3YXJuaW5ncy53YXJuKCJteSB3YXJuaW5nIiwgUnVudGltZVdhcm5pbmcpCiAK
ICAgICBJbiB0aGUgY29udGV4dCBtYW5hZ2VyIGZvcm0geW91IG1heSB1c2UgdGhlIGtleXdvcmQg
YXJndW1lbnQgYGBtYXRjaGBgIHRvIGFzc2VydAotICAgIHRoYXQgdGhlIGV4Y2VwdGlvbiBtYXRj
aGVzIGEgdGV4dCBvciByZWdleDo6CisgICAgdGhhdCB0aGUgd2FybmluZyBtYXRjaGVzIGEgdGV4
dCBvciByZWdleDo6CiAKICAgICAgICAgPj4+IHdpdGggd2FybnMoVXNlcldhcm5pbmcsIG1hdGNo
PSdtdXN0IGJlIDAgb3IgTm9uZScpOgogICAgICAgICAuLi4gICAgIHdhcm5pbmdzLndhcm4oInZh
bHVlIG11c3QgYmUgMCBvciBOb25lIiwgVXNlcldhcm5pbmcpCkBAIC0xMTYsMjQgKzE0MCwyMSBA
QCBkZWYgd2FybnMoZXhwZWN0ZWRfd2FybmluZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAg
RmFpbGVkOiBESUQgTk9UIFdBUk4uIE5vIHdhcm5pbmdzIG9mIHR5cGUgLi4uVXNlcldhcm5pbmcu
Li4gd2FzIGVtaXR0ZWQuLi4KIAogICAgICIiIgotICAgIG1hdGNoX2V4cHIgPSBOb25lCisgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgIGlmICJt
YXRjaCIgaW4ga3dhcmdzOgotICAgICAgICAgICAgbWF0Y2hfZXhwciA9IGt3YXJncy5wb3AoIm1h
dGNoIikKLSAgICAgICAgcmV0dXJuIFdhcm5pbmdzQ2hlY2tlcihleHBlY3RlZF93YXJuaW5nLCBt
YXRjaF9leHByPW1hdGNoX2V4cHIpCi0gICAgZWxpZiBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cik6
Ci0gICAgICAgIGNvZGUsID0gYXJncwotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2RlLCBz
dHIpCi0gICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQotICAgICAgICBsb2MgPSBmcmFt
ZS5mX2xvY2Fscy5jb3B5KCkKLSAgICAgICAgbG9jLnVwZGF0ZShrd2FyZ3MpCi0KLSAgICAgICAg
d2l0aCBXYXJuaW5nc0NoZWNrZXIoZXhwZWN0ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaF9l
eHByKToKLSAgICAgICAgICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShjb2RlKS5jb21w
aWxlKCkKLSAgICAgICAgICAgIHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgZnJhbWUuZl9nbG9iYWxz
LCBsb2MpCisgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgIG1zZyA9ICJVbmV4cGVjdGVk
IGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCB0byBweXRlc3Qud2FybnM6ICIKKyAgICAgICAgICAg
IG1zZyArPSAiLCAiLmpvaW4oc29ydGVkKGt3YXJncykpCisgICAgICAgICAgICBtc2cgKz0gIlxu
VXNlIGNvbnRleHQtbWFuYWdlciBmb3JtIGluc3RlYWQ/IgorICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKG1zZykKKyAgICAgICAgcmV0dXJuIFdhcm5pbmdzQ2hlY2tlcihleHBlY3RlZF93YXJu
aW5nLCBtYXRjaF9leHByPW1hdGNoKQogICAgIGVsc2U6CiAgICAgICAgIGZ1bmMgPSBhcmdzWzBd
Ci0gICAgICAgIHdpdGggV2FybmluZ3NDaGVja2VyKGV4cGVjdGVkX3dhcm5pbmcsIG1hdGNoX2V4
cHI9bWF0Y2hfZXhwcik6CisgICAgICAgIGlmIG5vdCBjYWxsYWJsZShmdW5jKToKKyAgICAgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAieyFyfSBvYmplY3QgKHR5cGU6
IHt9KSBtdXN0IGJlIGNhbGxhYmxlIi5mb3JtYXQoZnVuYywgdHlwZShmdW5jKSkKKyAgICAgICAg
ICAgICkKKyAgICAgICAgd2l0aCBXYXJuaW5nc0NoZWNrZXIoZXhwZWN0ZWRfd2FybmluZyk6CiAg
ICAgICAgICAgICByZXR1cm4gZnVuYygqYXJnc1sxOl0sICoqa3dhcmdzKQogCiAKQEAgLTE0Mywy
OSArMTY0LDMwIEBAIGNsYXNzIFdhcm5pbmdzUmVjb3JkZXIod2FybmluZ3MuY2F0Y2hfd2Fybmlu
Z3MpOgogICAgIEFkYXB0ZWQgZnJvbSBgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3NgLgogICAgICIi
IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihXYXJuaW5nc1JlY29y
ZGVyLCBzZWxmKS5fX2luaXRfXyhyZWNvcmQ9VHJ1ZSkKKyAgICBkZWYgX19pbml0X18oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgZHVlIHRvIHRoZSB3YXkgdHlwZXNoZWQg
aGFuZGxlcyB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncy4KKyAgICAgICAgc3VwZXIoKS5fX2luaXRf
XyhyZWNvcmQ9VHJ1ZSkgICMgdHlwZTogaWdub3JlW2NhbGwtYXJnXQogICAgICAgICBzZWxmLl9l
bnRlcmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fbGlzdCA9IFtdCisgICAgICAgIHNlbGYuX2xp
c3QgPSBbXSAgIyB0eXBlOiBMaXN0W3dhcm5pbmdzLldhcm5pbmdNZXNzYWdlXQogCiAgICAgQHBy
b3BlcnR5Ci0gICAgZGVmIGxpc3Qoc2VsZik6CisgICAgZGVmIGxpc3Qoc2VsZikgLT4gTGlzdFsi
d2FybmluZ3MuV2FybmluZ01lc3NhZ2UiXToKICAgICAgICAgIiIiVGhlIGxpc3Qgb2YgcmVjb3Jk
ZWQgd2FybmluZ3MuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9saXN0CiAKLSAgICBkZWYgX19n
ZXRpdGVtX18oc2VsZiwgaSk6CisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGk6IGludCkgLT4g
Indhcm5pbmdzLldhcm5pbmdNZXNzYWdlIjoKICAgICAgICAgIiIiR2V0IGEgcmVjb3JkZWQgd2Fy
bmluZyBieSBpbmRleC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RbaV0KIAotICAgIGRl
ZiBfX2l0ZXJfXyhzZWxmKToKKyAgICBkZWYgX19pdGVyX18oc2VsZikgLT4gSXRlcmF0b3JbIndh
cm5pbmdzLldhcm5pbmdNZXNzYWdlIl06CiAgICAgICAgICIiIkl0ZXJhdGUgdGhyb3VnaCB0aGUg
cmVjb3JkZWQgd2FybmluZ3MuIiIiCiAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2xpc3QpCiAK
LSAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICBkZWYgX19sZW5fXyhzZWxmKSAtPiBpbnQ6CiAg
ICAgICAgICIiIlRoZSBudW1iZXIgb2YgcmVjb3JkZWQgd2FybmluZ3MuIiIiCiAgICAgICAgIHJl
dHVybiBsZW4oc2VsZi5fbGlzdCkKIAotICAgIGRlZiBwb3Aoc2VsZiwgY2xzPVdhcm5pbmcpOgor
ICAgIGRlZiBwb3Aoc2VsZiwgY2xzOiAiVHlwZVtXYXJuaW5nXSIgPSBXYXJuaW5nKSAtPiAid2Fy
bmluZ3MuV2FybmluZ01lc3NhZ2UiOgogICAgICAgICAiIiJQb3AgdGhlIGZpcnN0IHJlY29yZGVk
IHdhcm5pbmcsIHJhaXNlIGV4Y2VwdGlvbiBpZiBub3QgZXhpc3RzLiIiIgogICAgICAgICBmb3Ig
aSwgdyBpbiBlbnVtZXJhdGUoc2VsZi5fbGlzdCk6CiAgICAgICAgICAgICBpZiBpc3N1YmNsYXNz
KHcuY2F0ZWdvcnksIGNscyk6CkBAIC0xNzMsNTAgKzE5NSw3OSBAQCBjbGFzcyBXYXJuaW5nc1Jl
Y29yZGVyKHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKToKICAgICAgICAgX190cmFjZWJhY2toaWRl
X18gPSBUcnVlCiAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlciBub3QgZm91bmQgaW4g
d2FybmluZyBsaXN0IiAlIGNscykKIAotICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICBkZWYgY2xl
YXIoc2VsZikgLT4gTm9uZToKICAgICAgICAgIiIiQ2xlYXIgdGhlIGxpc3Qgb2YgcmVjb3JkZWQg
d2FybmluZ3MuIiIiCiAgICAgICAgIHNlbGYuX2xpc3RbOl0gPSBbXQogCi0gICAgZGVmIF9fZW50
ZXJfXyhzZWxmKToKKyAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIGl0IGRvZXNuJ3QgZXhhY3Rs
eSB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncy5fX2VudGVyX18KKyAgICAjIC0tIGl0IHJldHVybnMg
YSBMaXN0IGJ1dCB3ZSBvbmx5IGVtdWxhdGUgb25lLgorICAgIGRlZiBfX2VudGVyX18oc2VsZikg
LT4gIldhcm5pbmdzUmVjb3JkZXIiOiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgaWYgc2VsZi5f
ZW50ZXJlZDoKICAgICAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogICAgICAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW5ub3QgZW50ZXIgJXIgdHdpY2UiICUgc2VsZikKLSAg
ICAgICAgc2VsZi5fbGlzdCA9IHN1cGVyKFdhcm5pbmdzUmVjb3JkZXIsIHNlbGYpLl9fZW50ZXJf
XygpCisgICAgICAgIF9saXN0ID0gc3VwZXIoKS5fX2VudGVyX18oKQorICAgICAgICAjIHJlY29y
ZD1UcnVlIG1lYW5zIGl0J3MgTm9uZS4KKyAgICAgICAgYXNzZXJ0IF9saXN0IGlzIG5vdCBOb25l
CisgICAgICAgIHNlbGYuX2xpc3QgPSBfbGlzdAogICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0
ZXIoImFsd2F5cyIpCiAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgX19leGl0X18oc2Vs
ZiwgKmV4Y19pbmZvKToKKyAgICBkZWYgX19leGl0X18oCisgICAgICAgIHNlbGYsCisgICAgICAg
IGV4Y190eXBlOiBPcHRpb25hbFsiVHlwZVtCYXNlRXhjZXB0aW9uXSJdLAorICAgICAgICBleGNf
dmFsOiBPcHRpb25hbFtCYXNlRXhjZXB0aW9uXSwKKyAgICAgICAgZXhjX3RiOiBPcHRpb25hbFtU
cmFjZWJhY2tUeXBlXSwKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9lbnRl
cmVkOgogICAgICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBleGl0ICVyIHdpdGhvdXQgZW50ZXJpbmcgZmlyc3Qi
ICUgc2VsZikKLSAgICAgICAgc3VwZXIoV2FybmluZ3NSZWNvcmRlciwgc2VsZikuX19leGl0X18o
KmV4Y19pbmZvKQogCisgICAgICAgIHN1cGVyKCkuX19leGl0X18oZXhjX3R5cGUsIGV4Y192YWws
IGV4Y190YikKIAotY2xhc3MgV2FybmluZ3NDaGVja2VyKFdhcm5pbmdzUmVjb3JkZXIpOgorICAg
ICAgICAjIEJ1aWx0LWluIGNhdGNoX3dhcm5pbmdzIGRvZXMgbm90IHJlc2V0IGVudGVyZWQgc3Rh
dGUgc28gd2UgZG8gaXQKKyAgICAgICAgIyBtYW51YWxseSBoZXJlIGZvciB0aGlzIGNvbnRleHQg
bWFuYWdlciB0byBiZWNvbWUgcmV1c2FibGUuCisgICAgICAgIHNlbGYuX2VudGVyZWQgPSBGYWxz
ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmc9Tm9uZSwgbWF0Y2hf
ZXhwcj1Ob25lKToKLSAgICAgICAgc3VwZXIoV2FybmluZ3NDaGVja2VyLCBzZWxmKS5fX2luaXRf
XygpCiAKLSAgICAgICAgbXNnID0gKAotICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBv
bGQtc3R5bGUgY2xhc3NlcyBvciAiICJkZXJpdmVkIGZyb20gV2FybmluZywgbm90ICVzIgotICAg
ICAgICApCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWRfd2FybmluZywgdHVwbGUpOgor
QGZpbmFsCitjbGFzcyBXYXJuaW5nc0NoZWNrZXIoV2FybmluZ3NSZWNvcmRlcik6CisgICAgZGVm
IF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBleHBlY3RlZF93YXJuaW5nOiBPcHRp
b25hbFsKKyAgICAgICAgICAgIFVuaW9uWyJUeXBlW1dhcm5pbmddIiwgVHVwbGVbIlR5cGVbV2Fy
bmluZ10iLCAuLi5dXQorICAgICAgICBdID0gTm9uZSwKKyAgICAgICAgbWF0Y2hfZXhwcjogT3B0
aW9uYWxbVW5pb25bc3RyLCAiUGF0dGVybltzdHJdIl1dID0gTm9uZSwKKyAgICApIC0+IE5vbmU6
CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisgICAgICAgIG1zZyA9ICJleGNlcHRpb25z
IG11c3QgYmUgZGVyaXZlZCBmcm9tIFdhcm5pbmcsIG5vdCAlcyIKKyAgICAgICAgaWYgZXhwZWN0
ZWRfd2FybmluZyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWRfd2FybmluZ190dXAgPSBO
b25lCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZF93YXJuaW5nLCB0dXBsZSk6CiAg
ICAgICAgICAgICBmb3IgZXhjIGluIGV4cGVjdGVkX3dhcm5pbmc6Ci0gICAgICAgICAgICAgICAg
aWYgbm90IGluc3BlY3QuaXNjbGFzcyhleGMpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1
YmNsYXNzKGV4YywgV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJv
cihtc2cgJSB0eXBlKGV4YykpCi0gICAgICAgIGVsaWYgaW5zcGVjdC5pc2NsYXNzKGV4cGVjdGVk
X3dhcm5pbmcpOgotICAgICAgICAgICAgZXhwZWN0ZWRfd2FybmluZyA9IChleHBlY3RlZF93YXJu
aW5nLCkKLSAgICAgICAgZWxpZiBleHBlY3RlZF93YXJuaW5nIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgZXhwZWN0ZWRfd2FybmluZ190dXAgPSBleHBlY3RlZF93YXJuaW5nCisgICAgICAgIGVs
aWYgaXNzdWJjbGFzcyhleHBlY3RlZF93YXJuaW5nLCBXYXJuaW5nKToKKyAgICAgICAgICAgIGV4
cGVjdGVkX3dhcm5pbmdfdHVwID0gKGV4cGVjdGVkX3dhcm5pbmcsKQorICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZyAlIHR5cGUoZXhwZWN0ZWRfd2FybmluZykp
CiAKLSAgICAgICAgc2VsZi5leHBlY3RlZF93YXJuaW5nID0gZXhwZWN0ZWRfd2FybmluZworICAg
ICAgICBzZWxmLmV4cGVjdGVkX3dhcm5pbmcgPSBleHBlY3RlZF93YXJuaW5nX3R1cAogICAgICAg
ICBzZWxmLm1hdGNoX2V4cHIgPSBtYXRjaF9leHByCiAKLSAgICBkZWYgX19leGl0X18oc2VsZiwg
KmV4Y19pbmZvKToKLSAgICAgICAgc3VwZXIoV2FybmluZ3NDaGVja2VyLCBzZWxmKS5fX2V4aXRf
XygqZXhjX2luZm8pCisgICAgZGVmIF9fZXhpdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBl
eGNfdHlwZTogT3B0aW9uYWxbIlR5cGVbQmFzZUV4Y2VwdGlvbl0iXSwKKyAgICAgICAgZXhjX3Zh
bDogT3B0aW9uYWxbQmFzZUV4Y2VwdGlvbl0sCisgICAgICAgIGV4Y190YjogT3B0aW9uYWxbVHJh
Y2ViYWNrVHlwZV0sCisgICAgKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9fZXhpdF9fKGV4
Y190eXBlLCBleGNfdmFsLCBleGNfdGIpCisKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBU
cnVlCiAKICAgICAgICAgIyBvbmx5IGNoZWNrIGlmIHdlJ3JlIG5vdCBjdXJyZW50bHkgaGFuZGxp
bmcgYW4gZXhjZXB0aW9uCi0gICAgICAgIGlmIGFsbChhIGlzIE5vbmUgZm9yIGEgaW4gZXhjX2lu
Zm8pOgorICAgICAgICBpZiBleGNfdHlwZSBpcyBOb25lIGFuZCBleGNfdmFsIGlzIE5vbmUgYW5k
IGV4Y190YiBpcyBOb25lOgogICAgICAgICAgICAgaWYgc2VsZi5leHBlY3RlZF93YXJuaW5nIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGlmIG5vdCBhbnkoaXNzdWJjbGFzcyhyLmNhdGVn
b3J5LCBzZWxmLmV4cGVjdGVkX3dhcm5pbmcpIGZvciByIGluIHNlbGYpOgogICAgICAgICAgICAg
ICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L3JlcG9ydHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZXBvcnRz
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQyZjc3OGVjNDBi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcmVwb3J0cy5weQpA
QCAtMCwwICsxLDU2OCBAQAorZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gcHByaW50IGlt
cG9ydCBwcHJpbnQKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBj
YXN0Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxl
Citmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citm
cm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJv
bSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBv
cnQgYXR0cgoraW1wb3J0IHB5CisKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNl
cHRpb25DaGFpblJlcHIKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25J
bmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uUmVwcgorZnJvbSBf
cHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFJlcHJFbnRyeQorZnJvbSBfcHl0ZXN0Ll9jb2RlLmNv
ZGUgaW1wb3J0IFJlcHJFbnRyeU5hdGl2ZQorZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0
IFJlcHJFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgUmVwckZp
bGVMb2NhdGlvbgorZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFJlcHJGdW5jQXJncwor
ZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFJlcHJMb2NhbHMKK2Zyb20gX3B5dGVzdC5f
Y29kZS5jb2RlIGltcG9ydCBSZXByVHJhY2ViYWNrCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBp
bXBvcnQgVGVybWluYWxSZXByCitmcm9tIF9weXRlc3QuX2lvIGltcG9ydCBUZXJtaW5hbFdyaXRl
cgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZwor
ZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBDb2xsZWN0b3IKK2Zyb20gX3B5dGVzdC5ub2RlcyBp
bXBvcnQgSXRlbQorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBza2lwCitmcm9tIF9weXRl
c3QucGF0aGxpYiBpbXBvcnQgUGF0aAorCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBOb1JldHVybgorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IFR5
cGUKKyAgICBmcm9tIHR5cGluZ19leHRlbnNpb25zIGltcG9ydCBMaXRlcmFsCisKKyAgICBmcm9t
IF9weXRlc3QucnVubmVyIGltcG9ydCBDYWxsSW5mbworCisKK2RlZiBnZXR3b3JrZXJpbmZvbGlu
ZShub2RlKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBub2RlLl93b3JrZXJpbmZvY2FjaGUK
KyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGQgPSBub2RlLndvcmtlcmluZm8K
KyAgICAgICAgdmVyID0gIiVzLiVzLiVzIiAlIGRbInZlcnNpb25faW5mbyJdWzozXQorICAgICAg
ICBub2RlLl93b3JrZXJpbmZvY2FjaGUgPSBzID0gIlt7fV0ge30gLS0gUHl0aG9uIHt9IHt9Ii5m
b3JtYXQoCisgICAgICAgICAgICBkWyJpZCJdLCBkWyJzeXNwbGF0Zm9ybSJdLCB2ZXIsIGRbImV4
ZWN1dGFibGUiXQorICAgICAgICApCisgICAgICAgIHJldHVybiBzCisKKworX1IgPSBUeXBlVmFy
KCJfUiIsIGJvdW5kPSJCYXNlUmVwb3J0IikKKworCitjbGFzcyBCYXNlUmVwb3J0OgorICAgIHdo
ZW4gPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICBsb2NhdGlvbiA9IE5vbmUgICMg
dHlwZTogT3B0aW9uYWxbVHVwbGVbc3RyLCBPcHRpb25hbFtpbnRdLCBzdHJdXQorICAgIGxvbmdy
ZXByID0gKAorICAgICAgICBOb25lCisgICAgKSAgIyB0eXBlOiBVbmlvbltOb25lLCBFeGNlcHRp
b25JbmZvW0Jhc2VFeGNlcHRpb25dLCBUdXBsZVtzdHIsIGludCwgc3RyXSwgc3RyLCBUZXJtaW5h
bFJlcHJdCisgICAgc2VjdGlvbnMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgc3RyXV0K
KyAgICBub2RlaWQgPSBOb25lICAjIHR5cGU6IHN0cgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
ICoqa3c6IEFueSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoa3cpCisK
KyAgICBpZiBUWVBFX0NIRUNLSU5HOgorICAgICAgICAjIENhbiBoYXZlIGFyYml0cmFyeSBmaWVs
ZHMgZ2l2ZW4gdG8gX19pbml0X18oKS4KKyAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGtl
eTogc3RyKSAtPiBBbnk6CisgICAgICAgICAgICAuLi4KKworICAgIGRlZiB0b3Rlcm1pbmFsKHNl
bGYsIG91dDogVGVybWluYWxXcml0ZXIpIC0+IE5vbmU6CisgICAgICAgIGlmIGhhc2F0dHIoc2Vs
ZiwgIm5vZGUiKToKKyAgICAgICAgICAgIG91dC5saW5lKGdldHdvcmtlcmluZm9saW5lKHNlbGYu
bm9kZSkpCisKKyAgICAgICAgbG9uZ3JlcHIgPSBzZWxmLmxvbmdyZXByCisgICAgICAgIGlmIGxv
bmdyZXByIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBoYXNhdHRy
KGxvbmdyZXByLCAidG90ZXJtaW5hbCIpOgorICAgICAgICAgICAgbG9uZ3JlcHJfdGVybWluYWwg
PSBjYXN0KFRlcm1pbmFsUmVwciwgbG9uZ3JlcHIpCisgICAgICAgICAgICBsb25ncmVwcl90ZXJt
aW5hbC50b3Rlcm1pbmFsKG91dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBzID0gc3RyKGxvbmdyZXByKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNv
ZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzID0gIjx1bnByaW50YWJsZSBsb25ncmVw
cj4iCisgICAgICAgICAgICBvdXQubGluZShzKQorCisgICAgZGVmIGdldF9zZWN0aW9ucyhzZWxm
LCBwcmVmaXg6IHN0cikgLT4gSXRlcmF0b3JbVHVwbGVbc3RyLCBzdHJdXToKKyAgICAgICAgZm9y
IG5hbWUsIGNvbnRlbnQgaW4gc2VsZi5zZWN0aW9uczoKKyAgICAgICAgICAgIGlmIG5hbWUuc3Rh
cnRzd2l0aChwcmVmaXgpOgorICAgICAgICAgICAgICAgIHlpZWxkIHByZWZpeCwgY29udGVudAor
CisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvbmdyZXBydGV4dChzZWxmKSAtPiBzdHI6CisgICAg
ICAgICIiIlJlYWQtb25seSBwcm9wZXJ0eSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mCisgICAgICAgIGBgbG9uZ3JlcHJgYC4KKworICAgICAgICAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjAKKyAgICAgICAgIiIiCisgICAgICAgIGZpbGUgPSBTdHJpbmdJTygpCisg
ICAgICAgIHR3ID0gVGVybWluYWxXcml0ZXIoZmlsZSkKKyAgICAgICAgdHcuaGFzbWFya3VwID0g
RmFsc2UKKyAgICAgICAgc2VsZi50b3Rlcm1pbmFsKHR3KQorICAgICAgICBleGMgPSBmaWxlLmdl
dHZhbHVlKCkKKyAgICAgICAgcmV0dXJuIGV4Yy5zdHJpcCgpCisKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgY2FwbG9nKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIiIiUmV0dXJuIGNhcHR1cmVkIGxv
ZyBsaW5lcywgaWYgbG9nIGNhcHR1cmluZyBpcyBlbmFibGVkLgorCisgICAgICAgIC4uIHZlcnNp
b25hZGRlZDo6IDMuNQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbigKKyAg
ICAgICAgICAgIGNvbnRlbnQgZm9yIChwcmVmaXgsIGNvbnRlbnQpIGluIHNlbGYuZ2V0X3NlY3Rp
b25zKCJDYXB0dXJlZCBsb2ciKQorICAgICAgICApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
Y2Fwc3Rkb3V0KHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIiIiUmV0dXJuIGNhcHR1cmVkIHRleHQg
ZnJvbSBzdGRvdXQsIGlmIGNhcHR1cmluZyBpcyBlbmFibGVkLgorCisgICAgICAgIC4uIHZlcnNp
b25hZGRlZDo6IDMuMAorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oCisgICAg
ICAgICAgICBjb250ZW50IGZvciAocHJlZml4LCBjb250ZW50KSBpbiBzZWxmLmdldF9zZWN0aW9u
cygiQ2FwdHVyZWQgc3Rkb3V0IikKKyAgICAgICAgKQorCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGNhcHN0ZGVycihzZWxmKSAtPiBzdHI6CisgICAgICAgICIiIlJldHVybiBjYXB0dXJlZCB0ZXh0
IGZyb20gc3RkZXJyLCBpZiBjYXB0dXJpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjAKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAiIi5qb2luKAorICAg
ICAgICAgICAgY29udGVudCBmb3IgKHByZWZpeCwgY29udGVudCkgaW4gc2VsZi5nZXRfc2VjdGlv
bnMoIkNhcHR1cmVkIHN0ZGVyciIpCisgICAgICAgICkKKworICAgIHBhc3NlZCA9IHByb3BlcnR5
KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0gInBhc3NlZCIpCisgICAgZmFpbGVkID0gcHJvcGVydHko
bGFtYmRhIHg6IHgub3V0Y29tZSA9PSAiZmFpbGVkIikKKyAgICBza2lwcGVkID0gcHJvcGVydHko
bGFtYmRhIHg6IHgub3V0Y29tZSA9PSAic2tpcHBlZCIpCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgZnNwYXRoKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuIHNlbGYubm9kZWlkLnNwbGl0
KCI6OiIpWzBdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY291bnRfdG93YXJkc19zdW1tYXJ5
KHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIiIioqRXhwZXJpbWVudGFsKiogV2hldGhlciB0aGlz
IHJlcG9ydCBzaG91bGQgYmUgY291bnRlZCB0b3dhcmRzIHRoZQorICAgICAgICB0b3RhbHMgc2hv
d24gYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBzZXNzaW9uOiAiMSBwYXNzZWQsIDEgZmFpbHVyZSwg
ZXRjIi4KKworICAgICAgICAuLiBub3RlOjoKKworICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBp
cyBjb25zaWRlcmVkICoqZXhwZXJpbWVudGFsKiosIHNvIGJld2FyZSB0aGF0IGl0IGlzIHN1Ympl
Y3QgdG8gY2hhbmdlcworICAgICAgICAgICAgZXZlbiBpbiBwYXRjaCByZWxlYXNlcy4KKyAgICAg
ICAgIiIiCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaGVh
ZF9saW5lKHNlbGYpIC0+IE9wdGlvbmFsW3N0cl06CisgICAgICAgICIiIioqRXhwZXJpbWVudGFs
KiogVGhlIGhlYWQgbGluZSBzaG93biB3aXRoIGxvbmdyZXByIG91dHB1dCBmb3IgdGhpcworICAg
ICAgICByZXBvcnQsIG1vcmUgY29tbW9ubHkgZHVyaW5nIHRyYWNlYmFjayByZXByZXNlbnRhdGlv
biBkdXJpbmcKKyAgICAgICAgZmFpbHVyZXM6OgorCisgICAgICAgICAgICBfX19fX19fXyBUZXN0
LmZvbyBfX19fX19fXworCisKKyAgICAgICAgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBoZWFk
X2xpbmUgaXMgIlRlc3QuZm9vIi4KKworICAgICAgICAuLiBub3RlOjoKKworICAgICAgICAgICAg
VGhpcyBmdW5jdGlvbiBpcyBjb25zaWRlcmVkICoqZXhwZXJpbWVudGFsKiosIHNvIGJld2FyZSB0
aGF0IGl0IGlzIHN1YmplY3QgdG8gY2hhbmdlcworICAgICAgICAgICAgZXZlbiBpbiBwYXRjaCBy
ZWxlYXNlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYubG9jYXRpb24gaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBmc3BhdGgsIGxpbmVubywgZG9tYWluID0gc2VsZi5sb2NhdGlvbgor
ICAgICAgICAgICAgcmV0dXJuIGRvbWFpbgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVm
IF9nZXRfdmVyYm9zZV93b3JkKHNlbGYsIGNvbmZpZzogQ29uZmlnKToKKyAgICAgICAgX2NhdGVn
b3J5LCBfc2hvcnQsIHZlcmJvc2UgPSBjb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3Rlc3RzdGF0
dXMoCisgICAgICAgICAgICByZXBvcnQ9c2VsZiwgY29uZmlnPWNvbmZpZworICAgICAgICApCisg
ICAgICAgIHJldHVybiB2ZXJib3NlCisKKyAgICBkZWYgX3RvX2pzb24oc2VsZikgLT4gRGljdFtz
dHIsIEFueV06CisgICAgICAgICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhpcyByZXBvcnQg
YXMgYSBkaWN0IG9mIGJ1aWx0aW4gZW50cmllcywKKyAgICAgICAgc3VpdGFibGUgZm9yIHNlcmlh
bGl6YXRpb24uCisKKyAgICAgICAgVGhpcyB3YXMgb3JpZ2luYWxseSB0aGUgc2VyaWFsaXplX3Jl
cG9ydCgpIGZ1bmN0aW9uIGZyb20geGRpc3QgKGNhMDMyNjkpLgorCisgICAgICAgIEV4cGVyaW1l
bnRhbCBtZXRob2QuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gX3JlcG9ydF90b19qc29u
KHNlbGYpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2Zyb21fanNvbihjbHM6ICJUeXBl
W19SXSIsIHJlcG9ydGRpY3Q6IERpY3Rbc3RyLCBvYmplY3RdKSAtPiBfUjoKKyAgICAgICAgIiIi
Q3JlYXRlIGVpdGhlciBhIFRlc3RSZXBvcnQgb3IgQ29sbGVjdFJlcG9ydCwgZGVwZW5kaW5nIG9u
IHRoZSBjYWxsaW5nIGNsYXNzLgorCisgICAgICAgIEl0IGlzIHRoZSBjYWxsZXJzIHJlc3BvbnNp
YmlsaXR5IHRvIGtub3cgd2hpY2ggY2xhc3MgdG8gcGFzcyBoZXJlLgorCisgICAgICAgIFRoaXMg
d2FzIG9yaWdpbmFsbHkgdGhlIHNlcmlhbGl6ZV9yZXBvcnQoKSBmdW5jdGlvbiBmcm9tIHhkaXN0
IChjYTAzMjY5KS4KKworICAgICAgICBFeHBlcmltZW50YWwgbWV0aG9kLgorICAgICAgICAiIiIK
KyAgICAgICAga3dhcmdzID0gX3JlcG9ydF9rd2FyZ3NfZnJvbV9qc29uKHJlcG9ydGRpY3QpCisg
ICAgICAgIHJldHVybiBjbHMoKiprd2FyZ3MpCisKKworZGVmIF9yZXBvcnRfdW5zZXJpYWxpemF0
aW9uX2ZhaWx1cmUoCisgICAgdHlwZV9uYW1lOiBzdHIsIHJlcG9ydF9jbGFzczogIlR5cGVbQmFz
ZVJlcG9ydF0iLCByZXBvcnRkaWN0CispIC0+ICJOb1JldHVybiI6CisgICAgdXJsID0gImh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMiCisgICAgc3RyZWFtID0gU3Ry
aW5nSU8oKQorICAgIHBwcmludCgiLSIgKiAxMDAsIHN0cmVhbT1zdHJlYW0pCisgICAgcHByaW50
KCJJTlRFUk5BTEVSUk9SOiBVbmtub3duIGVudHJ5IHR5cGUgcmV0dXJuZWQ6ICVzIiAlIHR5cGVf
bmFtZSwgc3RyZWFtPXN0cmVhbSkKKyAgICBwcHJpbnQoInJlcG9ydF9uYW1lOiAlcyIgJSByZXBv
cnRfY2xhc3MsIHN0cmVhbT1zdHJlYW0pCisgICAgcHByaW50KHJlcG9ydGRpY3QsIHN0cmVhbT1z
dHJlYW0pCisgICAgcHByaW50KCJQbGVhc2UgcmVwb3J0IHRoaXMgYnVnIGF0ICVzIiAlIHVybCwg
c3RyZWFtPXN0cmVhbSkKKyAgICBwcHJpbnQoIi0iICogMTAwLCBzdHJlYW09c3RyZWFtKQorICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcihzdHJlYW0uZ2V0dmFsdWUoKSkKKworCitAZmluYWwKK2NsYXNz
IFRlc3RSZXBvcnQoQmFzZVJlcG9ydCk6CisgICAgIiIiQmFzaWMgdGVzdCByZXBvcnQgb2JqZWN0
IChhbHNvIHVzZWQgZm9yIHNldHVwIGFuZCB0ZWFyZG93biBjYWxscyBpZgorICAgIHRoZXkgZmFp
bCkuIiIiCisKKyAgICBfX3Rlc3RfXyA9IEZhbHNlCisKKyAgICBkZWYgX19pbml0X18oCisgICAg
ICAgIHNlbGYsCisgICAgICAgIG5vZGVpZDogc3RyLAorICAgICAgICBsb2NhdGlvbjogVHVwbGVb
c3RyLCBPcHRpb25hbFtpbnRdLCBzdHJdLAorICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgb3V0
Y29tZTogIkxpdGVyYWxbJ3Bhc3NlZCcsICdmYWlsZWQnLCAnc2tpcHBlZCddIiwKKyAgICAgICAg
bG9uZ3JlcHI6IFVuaW9uWworICAgICAgICAgICAgTm9uZSwgRXhjZXB0aW9uSW5mb1tCYXNlRXhj
ZXB0aW9uXSwgVHVwbGVbc3RyLCBpbnQsIHN0cl0sIHN0ciwgVGVybWluYWxSZXByCisgICAgICAg
IF0sCisgICAgICAgIHdoZW46ICJMaXRlcmFsWydzZXR1cCcsICdjYWxsJywgJ3RlYXJkb3duJ10i
LAorICAgICAgICBzZWN0aW9uczogSXRlcmFibGVbVHVwbGVbc3RyLCBzdHJdXSA9ICgpLAorICAg
ICAgICBkdXJhdGlvbjogZmxvYXQgPSAwLAorICAgICAgICB1c2VyX3Byb3BlcnRpZXM6IE9wdGlv
bmFsW0l0ZXJhYmxlW1R1cGxlW3N0ciwgb2JqZWN0XV1dID0gTm9uZSwKKyAgICAgICAgKipleHRy
YQorICAgICkgLT4gTm9uZToKKyAgICAgICAgIzogTm9ybWFsaXplZCBjb2xsZWN0aW9uIG5vZGVp
ZC4KKyAgICAgICAgc2VsZi5ub2RlaWQgPSBub2RlaWQKKworICAgICAgICAjOiBBIChmaWxlc3lz
dGVtcGF0aCwgbGluZW5vLCBkb21haW5pbmZvKSB0dXBsZSBpbmRpY2F0aW5nIHRoZQorICAgICAg
ICAjOiBhY3R1YWwgbG9jYXRpb24gb2YgYSB0ZXN0IGl0ZW0gLSBpdCBtaWdodCBiZSBkaWZmZXJl
bnQgZnJvbSB0aGUKKyAgICAgICAgIzogY29sbGVjdGVkIG9uZSBlLmcuIGlmIGEgbWV0aG9kIGlz
IGluaGVyaXRlZCBmcm9tIGEgZGlmZmVyZW50IG1vZHVsZS4KKyAgICAgICAgc2VsZi5sb2NhdGlv
biA9IGxvY2F0aW9uICAjIHR5cGU6IFR1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXQorCisg
ICAgICAgICM6IEEgbmFtZSAtPiB2YWx1ZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIGtleXdv
cmRzIGFuZAorICAgICAgICAjOiBtYXJrZXJzIGFzc29jaWF0ZWQgd2l0aCBhIHRlc3QgaW52b2Nh
dGlvbi4KKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGtleXdvcmRzCisKKyAgICAgICAgIzogVGVz
dCBvdXRjb21lLCBhbHdheXMgb25lIG9mICJwYXNzZWQiLCAiZmFpbGVkIiwgInNraXBwZWQiLgor
ICAgICAgICBzZWxmLm91dGNvbWUgPSBvdXRjb21lCisKKyAgICAgICAgIzogTm9uZSBvciBhIGZh
aWx1cmUgcmVwcmVzZW50YXRpb24uCisgICAgICAgIHNlbGYubG9uZ3JlcHIgPSBsb25ncmVwcgor
CisgICAgICAgICM6IE9uZSBvZiAnc2V0dXAnLCAnY2FsbCcsICd0ZWFyZG93bicgdG8gaW5kaWNh
dGUgcnVudGVzdCBwaGFzZS4KKyAgICAgICAgc2VsZi53aGVuID0gd2hlbgorCisgICAgICAgICM6
IFVzZXIgcHJvcGVydGllcyBpcyBhIGxpc3Qgb2YgdHVwbGVzIChuYW1lLCB2YWx1ZSkgdGhhdCBo
b2xkcyB1c2VyCisgICAgICAgICM6IGRlZmluZWQgcHJvcGVydGllcyBvZiB0aGUgdGVzdC4KKyAg
ICAgICAgc2VsZi51c2VyX3Byb3BlcnRpZXMgPSBsaXN0KHVzZXJfcHJvcGVydGllcyBvciBbXSkK
KworICAgICAgICAjOiBMaXN0IG9mIHBhaXJzIGBgKHN0ciwgc3RyKWBgIG9mIGV4dHJhIGluZm9y
bWF0aW9uIHdoaWNoIG5lZWRzIHRvCisgICAgICAgICM6IG1hcnNoYWxsYWJsZS4gVXNlZCBieSBw
eXRlc3QgdG8gYWRkIGNhcHR1cmVkIHRleHQKKyAgICAgICAgIzogZnJvbSBgYHN0ZG91dGBgIGFu
ZCBgYHN0ZGVycmBgLCBidXQgbWF5IGJlIHVzZWQgYnkgb3RoZXIgcGx1Z2lucworICAgICAgICAj
OiB0byBhZGQgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIHRvIHJlcG9ydHMuCisgICAgICAgIHNlbGYu
c2VjdGlvbnMgPSBsaXN0KHNlY3Rpb25zKQorCisgICAgICAgICM6IFRpbWUgaXQgdG9vayB0byBy
dW4ganVzdCB0aGUgdGVzdC4KKyAgICAgICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCisKKyAg
ICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZXh0cmEpCisKKyAgICBkZWYgX19yZXByX18oc2Vs
ZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIjx7fSB7IXJ9IHdoZW49eyFyfSBvdXRjb21lPXsh
cn0+Ii5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5u
b2RlaWQsIHNlbGYud2hlbiwgc2VsZi5vdXRjb21lCisgICAgICAgICkKKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBmcm9tX2l0ZW1fYW5kX2NhbGwoY2xzLCBpdGVtOiBJdGVtLCBjYWxsOiAi
Q2FsbEluZm9bTm9uZV0iKSAtPiAiVGVzdFJlcG9ydCI6CisgICAgICAgICIiIkNyZWF0ZSBhbmQg
ZmlsbCBhIFRlc3RSZXBvcnQgd2l0aCBzdGFuZGFyZCBpdGVtIGFuZCBjYWxsIGluZm8uIiIiCisg
ICAgICAgIHdoZW4gPSBjYWxsLndoZW4KKyAgICAgICAgIyBSZW1vdmUgImNvbGxlY3QiIGZyb20g
dGhlIExpdGVyYWwgdHlwZSAtLSBvbmx5IGZvciBjb2xsZWN0aW9uIGNhbGxzLgorICAgICAgICBh
c3NlcnQgd2hlbiAhPSAiY29sbGVjdCIKKyAgICAgICAgZHVyYXRpb24gPSBjYWxsLmR1cmF0aW9u
CisgICAgICAgIGtleXdvcmRzID0ge3g6IDEgZm9yIHggaW4gaXRlbS5rZXl3b3Jkc30KKyAgICAg
ICAgZXhjaW5mbyA9IGNhbGwuZXhjaW5mbworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAg
IGlmIG5vdCBjYWxsLmV4Y2luZm86CisgICAgICAgICAgICBvdXRjb21lID0gInBhc3NlZCIgICMg
dHlwZTogTGl0ZXJhbFsicGFzc2VkIiwgImZhaWxlZCIsICJza2lwcGVkIl0KKyAgICAgICAgICAg
IGxvbmdyZXByID0gKAorICAgICAgICAgICAgICAgIE5vbmUKKyAgICAgICAgICAgICkgICMgdHlw
ZTogVW5pb25bTm9uZSwgRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSwgVHVwbGVbc3RyLCBp
bnQsIHN0cl0sIHN0ciwgVGVybWluYWxSZXByXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UoZXhjaW5mbywgRXhjZXB0aW9uSW5mbyk6CisgICAgICAgICAgICAg
ICAgb3V0Y29tZSA9ICJmYWlsZWQiCisgICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBleGNpbmZv
CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXhjaW5mby52YWx1ZSwgc2tpcC5FeGNlcHRp
b24pOgorICAgICAgICAgICAgICAgIG91dGNvbWUgPSAic2tpcHBlZCIKKyAgICAgICAgICAgICAg
ICByID0gZXhjaW5mby5fZ2V0cmVwcmNyYXNoKCkKKyAgICAgICAgICAgICAgICBsb25ncmVwciA9
IChzdHIoci5wYXRoKSwgci5saW5lbm8sIHIubWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgb3V0Y29tZSA9ICJmYWlsZWQiCisgICAgICAgICAgICAgICAgaWYgY2Fs
bC53aGVuID09ICJjYWxsIjoKKyAgICAgICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBpdGVtLnJl
cHJfZmFpbHVyZShleGNpbmZvKQorICAgICAgICAgICAgICAgIGVsc2U6ICAjIGV4Y2VwdGlvbiBp
biBzZXR1cCBvciB0ZWFyZG93bgorICAgICAgICAgICAgICAgICAgICBsb25ncmVwciA9IGl0ZW0u
X3JlcHJfZmFpbHVyZV9weSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2luZm8sIHN0eWxl
PWl0ZW0uY29uZmlnLmdldG9wdGlvbigidGJzdHlsZSIsICJhdXRvIikKKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICBmb3IgcndoZW4sIGtleSwgY29udGVudCBpbiBpdGVtLl9yZXBvcnRf
c2VjdGlvbnM6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCB7fSB7fSIu
Zm9ybWF0KGtleSwgcndoZW4pLCBjb250ZW50KSkKKyAgICAgICAgcmV0dXJuIGNscygKKyAgICAg
ICAgICAgIGl0ZW0ubm9kZWlkLAorICAgICAgICAgICAgaXRlbS5sb2NhdGlvbiwKKyAgICAgICAg
ICAgIGtleXdvcmRzLAorICAgICAgICAgICAgb3V0Y29tZSwKKyAgICAgICAgICAgIGxvbmdyZXBy
LAorICAgICAgICAgICAgd2hlbiwKKyAgICAgICAgICAgIHNlY3Rpb25zLAorICAgICAgICAgICAg
ZHVyYXRpb24sCisgICAgICAgICAgICB1c2VyX3Byb3BlcnRpZXM9aXRlbS51c2VyX3Byb3BlcnRp
ZXMsCisgICAgICAgICkKKworCitAZmluYWwKK2NsYXNzIENvbGxlY3RSZXBvcnQoQmFzZVJlcG9y
dCk6CisgICAgIiIiQ29sbGVjdGlvbiByZXBvcnQgb2JqZWN0LiIiIgorCisgICAgd2hlbiA9ICJj
b2xsZWN0IgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBub2Rl
aWQ6IHN0ciwKKyAgICAgICAgb3V0Y29tZTogIkxpdGVyYWxbJ3Bhc3NlZCcsICdza2lwcGVkJywg
J2ZhaWxlZCddIiwKKyAgICAgICAgbG9uZ3JlcHIsCisgICAgICAgIHJlc3VsdDogT3B0aW9uYWxb
TGlzdFtVbmlvbltJdGVtLCBDb2xsZWN0b3JdXV0sCisgICAgICAgIHNlY3Rpb25zOiBJdGVyYWJs
ZVtUdXBsZVtzdHIsIHN0cl1dID0gKCksCisgICAgICAgICoqZXh0cmEKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICM6IE5vcm1hbGl6ZWQgY29sbGVjdGlvbiBub2RlaWQuCisgICAgICAgIHNlbGYu
bm9kZWlkID0gbm9kZWlkCisKKyAgICAgICAgIzogVGVzdCBvdXRjb21lLCBhbHdheXMgb25lIG9m
ICJwYXNzZWQiLCAiZmFpbGVkIiwgInNraXBwZWQiLgorICAgICAgICBzZWxmLm91dGNvbWUgPSBv
dXRjb21lCisKKyAgICAgICAgIzogTm9uZSBvciBhIGZhaWx1cmUgcmVwcmVzZW50YXRpb24uCisg
ICAgICAgIHNlbGYubG9uZ3JlcHIgPSBsb25ncmVwcgorCisgICAgICAgICM6IFRoZSBjb2xsZWN0
ZWQgaXRlbXMgYW5kIGNvbGxlY3Rpb24gbm9kZXMuCisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVz
dWx0IG9yIFtdCisKKyAgICAgICAgIzogTGlzdCBvZiBwYWlycyBgYChzdHIsIHN0cilgYCBvZiBl
eHRyYSBpbmZvcm1hdGlvbiB3aGljaCBuZWVkcyB0bworICAgICAgICAjOiBtYXJzaGFsbGFibGUu
CisgICAgICAgICMgVXNlZCBieSBweXRlc3QgdG8gYWRkIGNhcHR1cmVkIHRleHQgOiBmcm9tIGBg
c3Rkb3V0YGAgYW5kIGBgc3RkZXJyYGAsCisgICAgICAgICMgYnV0IG1heSBiZSB1c2VkIGJ5IG90
aGVyIHBsdWdpbnMgOiB0byBhZGQgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIHRvCisgICAgICAgICMg
cmVwb3J0cy4KKyAgICAgICAgc2VsZi5zZWN0aW9ucyA9IGxpc3Qoc2VjdGlvbnMpCisKKyAgICAg
ICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZXh0cmEpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
bG9jYXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5mc3BhdGgsIE5vbmUsIHNlbGYu
ZnNwYXRoKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJu
ICI8Q29sbGVjdFJlcG9ydCB7IXJ9IGxlbnJlc3VsdD17fSBvdXRjb21lPXshcn0+Ii5mb3JtYXQo
CisgICAgICAgICAgICBzZWxmLm5vZGVpZCwgbGVuKHNlbGYucmVzdWx0KSwgc2VsZi5vdXRjb21l
CisgICAgICAgICkKKworCitjbGFzcyBDb2xsZWN0RXJyb3JSZXByKFRlcm1pbmFsUmVwcik6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZzogc3RyKSAtPiBOb25lOgorICAgICAgICBzZWxmLmxv
bmdyZXByID0gbXNnCisKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCBvdXQ6IFRlcm1pbmFsV3Jp
dGVyKSAtPiBOb25lOgorICAgICAgICBvdXQubGluZShzZWxmLmxvbmdyZXByLCByZWQ9VHJ1ZSkK
KworCitkZWYgcHl0ZXN0X3JlcG9ydF90b19zZXJpYWxpemFibGUoCisgICAgcmVwb3J0OiBVbmlv
bltDb2xsZWN0UmVwb3J0LCBUZXN0UmVwb3J0XQorKSAtPiBPcHRpb25hbFtEaWN0W3N0ciwgQW55
XV06CisgICAgaWYgaXNpbnN0YW5jZShyZXBvcnQsIChUZXN0UmVwb3J0LCBDb2xsZWN0UmVwb3J0
KSk6CisgICAgICAgIGRhdGEgPSByZXBvcnQuX3RvX2pzb24oKQorICAgICAgICBkYXRhWyIkcmVw
b3J0X3R5cGUiXSA9IHJlcG9ydC5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgcmV0dXJuIGRh
dGEKKyAgICAjIFRPRE86IENoZWNrIGlmIHRoaXMgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLgorICAg
IHJldHVybiBOb25lICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKworCitkZWYgcHl0ZXN0
X3JlcG9ydF9mcm9tX3NlcmlhbGl6YWJsZSgKKyAgICBkYXRhOiBEaWN0W3N0ciwgQW55XSwKKykg
LT4gT3B0aW9uYWxbVW5pb25bQ29sbGVjdFJlcG9ydCwgVGVzdFJlcG9ydF1dOgorICAgIGlmICIk
cmVwb3J0X3R5cGUiIGluIGRhdGE6CisgICAgICAgIGlmIGRhdGFbIiRyZXBvcnRfdHlwZSJdID09
ICJUZXN0UmVwb3J0IjoKKyAgICAgICAgICAgIHJldHVybiBUZXN0UmVwb3J0Ll9mcm9tX2pzb24o
ZGF0YSkKKyAgICAgICAgZWxpZiBkYXRhWyIkcmVwb3J0X3R5cGUiXSA9PSAiQ29sbGVjdFJlcG9y
dCI6CisgICAgICAgICAgICByZXR1cm4gQ29sbGVjdFJlcG9ydC5fZnJvbV9qc29uKGRhdGEpCisg
ICAgICAgIGFzc2VydCBGYWxzZSwgIlVua25vd24gcmVwb3J0X3R5cGUgdW5zZXJpYWxpemUgZGF0
YToge30iLmZvcm1hdCgKKyAgICAgICAgICAgIGRhdGFbIiRyZXBvcnRfdHlwZSJdCisgICAgICAg
ICkKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfcmVwb3J0X3RvX2pzb24ocmVwb3J0OiBCYXNl
UmVwb3J0KSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRzIG9m
IHRoaXMgcmVwb3J0IGFzIGEgZGljdCBvZiBidWlsdGluIGVudHJpZXMsCisgICAgc3VpdGFibGUg
Zm9yIHNlcmlhbGl6YXRpb24uCisKKyAgICBUaGlzIHdhcyBvcmlnaW5hbGx5IHRoZSBzZXJpYWxp
emVfcmVwb3J0KCkgZnVuY3Rpb24gZnJvbSB4ZGlzdCAoY2EwMzI2OSkuCisgICAgIiIiCisKKyAg
ICBkZWYgc2VyaWFsaXplX3JlcHJfZW50cnkoCisgICAgICAgIGVudHJ5OiBVbmlvbltSZXByRW50
cnksIFJlcHJFbnRyeU5hdGl2ZV0KKyAgICApIC0+IERpY3Rbc3RyLCBBbnldOgorICAgICAgICBk
YXRhID0gYXR0ci5hc2RpY3QoZW50cnkpCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRhdGEu
aXRlbXMoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICJfX2RpY3RfXyIpOgorICAg
ICAgICAgICAgICAgIGRhdGFba2V5XSA9IGF0dHIuYXNkaWN0KHZhbHVlKQorICAgICAgICBlbnRy
eV9kYXRhID0geyJ0eXBlIjogdHlwZShlbnRyeSkuX19uYW1lX18sICJkYXRhIjogZGF0YX0KKyAg
ICAgICAgcmV0dXJuIGVudHJ5X2RhdGEKKworICAgIGRlZiBzZXJpYWxpemVfcmVwcl90cmFjZWJh
Y2socmVwcnRyYWNlYmFjazogUmVwclRyYWNlYmFjaykgLT4gRGljdFtzdHIsIEFueV06CisgICAg
ICAgIHJlc3VsdCA9IGF0dHIuYXNkaWN0KHJlcHJ0cmFjZWJhY2spCisgICAgICAgIHJlc3VsdFsi
cmVwcmVudHJpZXMiXSA9IFsKKyAgICAgICAgICAgIHNlcmlhbGl6ZV9yZXByX2VudHJ5KHgpIGZv
ciB4IGluIHJlcHJ0cmFjZWJhY2sucmVwcmVudHJpZXMKKyAgICAgICAgXQorICAgICAgICByZXR1
cm4gcmVzdWx0CisKKyAgICBkZWYgc2VyaWFsaXplX3JlcHJfY3Jhc2goCisgICAgICAgIHJlcHJj
cmFzaDogT3B0aW9uYWxbUmVwckZpbGVMb2NhdGlvbl0sCisgICAgKSAtPiBPcHRpb25hbFtEaWN0
W3N0ciwgQW55XV06CisgICAgICAgIGlmIHJlcHJjcmFzaCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBhdHRyLmFzZGljdChyZXByY3Jhc2gpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHNlcmlhbGl6ZV9leGNlcHRpb25fbG9uZ3JlcHIo
cmVwOiBCYXNlUmVwb3J0KSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgYXNzZXJ0IHJlcC5s
b25ncmVwciBpcyBub3QgTm9uZQorICAgICAgICAjIFRPRE86IEludmVzdGlnYXRlIHdoZXRoZXIg
dGhlIGR1Y2sgdHlwaW5nIGlzIHJlYWxseSBuZWNlc3NhcnkgaGVyZS4KKyAgICAgICAgbG9uZ3Jl
cHIgPSBjYXN0KEV4Y2VwdGlvblJlcHIsIHJlcC5sb25ncmVwcikKKyAgICAgICAgcmVzdWx0ID0g
eworICAgICAgICAgICAgInJlcHJjcmFzaCI6IHNlcmlhbGl6ZV9yZXByX2NyYXNoKGxvbmdyZXBy
LnJlcHJjcmFzaCksCisgICAgICAgICAgICAicmVwcnRyYWNlYmFjayI6IHNlcmlhbGl6ZV9yZXBy
X3RyYWNlYmFjayhsb25ncmVwci5yZXBydHJhY2ViYWNrKSwKKyAgICAgICAgICAgICJzZWN0aW9u
cyI6IGxvbmdyZXByLnNlY3Rpb25zLAorICAgICAgICB9ICAjIHR5cGU6IERpY3Rbc3RyLCBBbnld
CisgICAgICAgIGlmIGlzaW5zdGFuY2UobG9uZ3JlcHIsIEV4Y2VwdGlvbkNoYWluUmVwcik6Cisg
ICAgICAgICAgICByZXN1bHRbImNoYWluIl0gPSBbXQorICAgICAgICAgICAgZm9yIHJlcHJfdHJh
Y2ViYWNrLCByZXByX2NyYXNoLCBkZXNjcmlwdGlvbiBpbiBsb25ncmVwci5jaGFpbjoKKyAgICAg
ICAgICAgICAgICByZXN1bHRbImNoYWluIl0uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVfcmVwcl90cmFjZWJhY2socmVwcl90
cmFjZWJhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplX3JlcHJfY3Jhc2go
cmVwcl9jcmFzaCksCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJlc3VsdFsiY2hhaW4iXSA9IE5vbmUKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisg
ICAgZCA9IHJlcG9ydC5fX2RpY3RfXy5jb3B5KCkKKyAgICBpZiBoYXNhdHRyKHJlcG9ydC5sb25n
cmVwciwgInRvdGVybWluYWwiKToKKyAgICAgICAgaWYgaGFzYXR0cihyZXBvcnQubG9uZ3JlcHIs
ICJyZXBydHJhY2ViYWNrIikgYW5kIGhhc2F0dHIoCisgICAgICAgICAgICByZXBvcnQubG9uZ3Jl
cHIsICJyZXByY3Jhc2giCisgICAgICAgICk6CisgICAgICAgICAgICBkWyJsb25ncmVwciJdID0g
c2VyaWFsaXplX2V4Y2VwdGlvbl9sb25ncmVwcihyZXBvcnQpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBkWyJsb25ncmVwciJdID0gc3RyKHJlcG9ydC5sb25ncmVwcikKKyAgICBlbHNlOgor
ICAgICAgICBkWyJsb25ncmVwciJdID0gcmVwb3J0LmxvbmdyZXByCisgICAgZm9yIG5hbWUgaW4g
ZDoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShkW25hbWVdLCAocHkucGF0aC5sb2NhbCwgUGF0aCkp
OgorICAgICAgICAgICAgZFtuYW1lXSA9IHN0cihkW25hbWVdKQorICAgICAgICBlbGlmIG5hbWUg
PT0gInJlc3VsdCI6CisgICAgICAgICAgICBkW25hbWVdID0gTm9uZSAgIyBmb3Igbm93CisgICAg
cmV0dXJuIGQKKworCitkZWYgX3JlcG9ydF9rd2FyZ3NfZnJvbV9qc29uKHJlcG9ydGRpY3Q6IERp
Y3Rbc3RyLCBBbnldKSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAiIiJSZXR1cm4gKiprd2FyZ3Mg
dGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBUZXN0UmVwb3J0IG9yCisgICAgQ29sbGVj
dFJlcG9ydCBpbnN0YW5jZS4KKworICAgIFRoaXMgd2FzIG9yaWdpbmFsbHkgdGhlIHNlcmlhbGl6
ZV9yZXBvcnQoKSBmdW5jdGlvbiBmcm9tIHhkaXN0IChjYTAzMjY5KS4KKyAgICAiIiIKKworICAg
IGRlZiBkZXNlcmlhbGl6ZV9yZXByX2VudHJ5KGVudHJ5X2RhdGEpOgorICAgICAgICBkYXRhID0g
ZW50cnlfZGF0YVsiZGF0YSJdCisgICAgICAgIGVudHJ5X3R5cGUgPSBlbnRyeV9kYXRhWyJ0eXBl
Il0KKyAgICAgICAgaWYgZW50cnlfdHlwZSA9PSAiUmVwckVudHJ5IjoKKyAgICAgICAgICAgIHJl
cHJmdW5jYXJncyA9IE5vbmUKKyAgICAgICAgICAgIHJlcHJmaWxlbG9jID0gTm9uZQorICAgICAg
ICAgICAgcmVwcmxvY2FscyA9IE5vbmUKKyAgICAgICAgICAgIGlmIGRhdGFbInJlcHJmdW5jYXJn
cyJdOgorICAgICAgICAgICAgICAgIHJlcHJmdW5jYXJncyA9IFJlcHJGdW5jQXJncygqKmRhdGFb
InJlcHJmdW5jYXJncyJdKQorICAgICAgICAgICAgaWYgZGF0YVsicmVwcmZpbGVsb2MiXToKKyAg
ICAgICAgICAgICAgICByZXByZmlsZWxvYyA9IFJlcHJGaWxlTG9jYXRpb24oKipkYXRhWyJyZXBy
ZmlsZWxvYyJdKQorICAgICAgICAgICAgaWYgZGF0YVsicmVwcmxvY2FscyJdOgorICAgICAgICAg
ICAgICAgIHJlcHJsb2NhbHMgPSBSZXByTG9jYWxzKGRhdGFbInJlcHJsb2NhbHMiXVsibGluZXMi
XSkKKworICAgICAgICAgICAgcmVwcmVudHJ5ID0gUmVwckVudHJ5KAorICAgICAgICAgICAgICAg
IGxpbmVzPWRhdGFbImxpbmVzIl0sCisgICAgICAgICAgICAgICAgcmVwcmZ1bmNhcmdzPXJlcHJm
dW5jYXJncywKKyAgICAgICAgICAgICAgICByZXBybG9jYWxzPXJlcHJsb2NhbHMsCisgICAgICAg
ICAgICAgICAgcmVwcmZpbGVsb2M9cmVwcmZpbGVsb2MsCisgICAgICAgICAgICAgICAgc3R5bGU9
ZGF0YVsic3R5bGUiXSwKKyAgICAgICAgICAgICkgICMgdHlwZTogVW5pb25bUmVwckVudHJ5LCBS
ZXByRW50cnlOYXRpdmVdCisgICAgICAgIGVsaWYgZW50cnlfdHlwZSA9PSAiUmVwckVudHJ5TmF0
aXZlIjoKKyAgICAgICAgICAgIHJlcHJlbnRyeSA9IFJlcHJFbnRyeU5hdGl2ZShkYXRhWyJsaW5l
cyJdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgX3JlcG9ydF91bnNlcmlhbGl6YXRpb25f
ZmFpbHVyZShlbnRyeV90eXBlLCBUZXN0UmVwb3J0LCByZXBvcnRkaWN0KQorICAgICAgICByZXR1
cm4gcmVwcmVudHJ5CisKKyAgICBkZWYgZGVzZXJpYWxpemVfcmVwcl90cmFjZWJhY2socmVwcl90
cmFjZWJhY2tfZGljdCk6CisgICAgICAgIHJlcHJfdHJhY2ViYWNrX2RpY3RbInJlcHJlbnRyaWVz
Il0gPSBbCisgICAgICAgICAgICBkZXNlcmlhbGl6ZV9yZXByX2VudHJ5KHgpIGZvciB4IGluIHJl
cHJfdHJhY2ViYWNrX2RpY3RbInJlcHJlbnRyaWVzIl0KKyAgICAgICAgXQorICAgICAgICByZXR1
cm4gUmVwclRyYWNlYmFjaygqKnJlcHJfdHJhY2ViYWNrX2RpY3QpCisKKyAgICBkZWYgZGVzZXJp
YWxpemVfcmVwcl9jcmFzaChyZXByX2NyYXNoX2RpY3Q6IE9wdGlvbmFsW0RpY3Rbc3RyLCBBbnld
XSk6CisgICAgICAgIGlmIHJlcHJfY3Jhc2hfZGljdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IHJldHVybiBSZXByRmlsZUxvY2F0aW9uKCoqcmVwcl9jcmFzaF9kaWN0KQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGlmICgKKyAgICAgICAgcmVwb3J0ZGlj
dFsibG9uZ3JlcHIiXQorICAgICAgICBhbmQgInJlcHJjcmFzaCIgaW4gcmVwb3J0ZGljdFsibG9u
Z3JlcHIiXQorICAgICAgICBhbmQgInJlcHJ0cmFjZWJhY2siIGluIHJlcG9ydGRpY3RbImxvbmdy
ZXByIl0KKyAgICApOgorCisgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBkZXNlcmlhbGl6ZV9yZXBy
X3RyYWNlYmFjaygKKyAgICAgICAgICAgIHJlcG9ydGRpY3RbImxvbmdyZXByIl1bInJlcHJ0cmFj
ZWJhY2siXQorICAgICAgICApCisgICAgICAgIHJlcHJjcmFzaCA9IGRlc2VyaWFsaXplX3JlcHJf
Y3Jhc2gocmVwb3J0ZGljdFsibG9uZ3JlcHIiXVsicmVwcmNyYXNoIl0pCisgICAgICAgIGlmIHJl
cG9ydGRpY3RbImxvbmdyZXByIl1bImNoYWluIl06CisgICAgICAgICAgICBjaGFpbiA9IFtdCisg
ICAgICAgICAgICBmb3IgcmVwcl90cmFjZWJhY2tfZGF0YSwgcmVwcl9jcmFzaF9kYXRhLCBkZXNj
cmlwdGlvbiBpbiByZXBvcnRkaWN0WworICAgICAgICAgICAgICAgICJsb25ncmVwciIKKyAgICAg
ICAgICAgIF1bImNoYWluIl06CisgICAgICAgICAgICAgICAgY2hhaW4uYXBwZW5kKAorICAgICAg
ICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNlcmlhbGl6ZV9yZXBy
X3RyYWNlYmFjayhyZXByX3RyYWNlYmFja19kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlc2VyaWFsaXplX3JlcHJfY3Jhc2gocmVwcl9jcmFzaF9kYXRhKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgZXhjZXB0aW9uX2luZm8gPSBFeGNlcHRpb25DaGFpblJlcHIo
CisgICAgICAgICAgICAgICAgY2hhaW4KKyAgICAgICAgICAgICkgICMgdHlwZTogVW5pb25bRXhj
ZXB0aW9uQ2hhaW5SZXByLFJlcHJFeGNlcHRpb25JbmZvXQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZXhjZXB0aW9uX2luZm8gPSBSZXByRXhjZXB0aW9uSW5mbyhyZXBydHJhY2ViYWNrLCBy
ZXByY3Jhc2gpCisKKyAgICAgICAgZm9yIHNlY3Rpb24gaW4gcmVwb3J0ZGljdFsibG9uZ3JlcHIi
XVsic2VjdGlvbnMiXToKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9pbmZvLmFkZHNlY3Rpb24oKnNl
Y3Rpb24pCisgICAgICAgIHJlcG9ydGRpY3RbImxvbmdyZXByIl0gPSBleGNlcHRpb25faW5mbwor
CisgICAgcmV0dXJuIHJlcG9ydGRpY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3Jlc3VsdGxvZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3Jlc3VsdGxvZy5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzMDBjOTgzMDAxLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcmVzdWx0bG9nLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTIwICswLDAgQEAKLSIiIiBsb2cgbWFjaGluZS1wYXJzZWFibGUgdGVzdCBzZXNzaW9u
IHJlc3VsdCBpbmZvcm1hdGlvbiBpbiBhIHBsYWluCi10ZXh0IGZpbGUuCi0iIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IHB5Ci1pbXBvcnQgb3MKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIp
OgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmciLCAicmVz
dWx0bG9nIHBsdWdpbiBvcHRpb25zIikKLSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICIt
LXJlc3VsdGxvZyIsCi0gICAgICAgICItLXJlc3VsdC1sb2ciLAotICAgICAgICBhY3Rpb249InN0
b3JlIiwKLSAgICAgICAgbWV0YXZhcj0icGF0aCIsCi0gICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgaGVscD0iREVQUkVDQVRFRCBwYXRoIGZvciBtYWNoaW5lLXJlYWRhYmxlIHJlc3VsdCBs
b2cuIiwKLSAgICApCi0KLQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICByZXN1
bHRsb2cgPSBjb25maWcub3B0aW9uLnJlc3VsdGxvZwotICAgICMgcHJldmVudCBvcGVuaW5nIHJl
c3VsdGxvZyBvbiBzbGF2ZSBub2RlcyAoeGRpc3QpCi0gICAgaWYgcmVzdWx0bG9nIGFuZCBub3Qg
aGFzYXR0cihjb25maWcsICJzbGF2ZWlucHV0Iik6Ci0gICAgICAgIGRpcm5hbWUgPSBvcy5wYXRo
LmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHJlc3VsdGxvZykpCi0gICAgICAgIGlmIG5vdCBvcy5w
YXRoLmlzZGlyKGRpcm5hbWUpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMoZGlybmFtZSkKLSAg
ICAgICAgbG9nZmlsZSA9IG9wZW4ocmVzdWx0bG9nLCAidyIsIDEpICAjIGxpbmUgYnVmZmVyZWQK
LSAgICAgICAgY29uZmlnLl9yZXN1bHRsb2cgPSBSZXN1bHRMb2coY29uZmlnLCBsb2dmaWxlKQot
ICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3Rlcihjb25maWcuX3Jlc3VsdGxvZykK
LQotICAgICAgICBmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQgUkVTVUxUX0xPRwotCi0g
ICAgICAgIGNvbmZpZy53YXJuKCJDMSIsIFJFU1VMVF9MT0cpCi0KLQotZGVmIHB5dGVzdF91bmNv
bmZpZ3VyZShjb25maWcpOgotICAgIHJlc3VsdGxvZyA9IGdldGF0dHIoY29uZmlnLCAiX3Jlc3Vs
dGxvZyIsIE5vbmUpCi0gICAgaWYgcmVzdWx0bG9nOgotICAgICAgICByZXN1bHRsb2cubG9nZmls
ZS5jbG9zZSgpCi0gICAgICAgIGRlbCBjb25maWcuX3Jlc3VsdGxvZwotICAgICAgICBjb25maWcu
cGx1Z2lubWFuYWdlci51bnJlZ2lzdGVyKHJlc3VsdGxvZykKLQotCi1kZWYgZ2VuZXJpY19wYXRo
KGl0ZW0pOgotICAgIGNoYWluID0gaXRlbS5saXN0Y2hhaW4oKQotICAgIGdwYXRoID0gW2NoYWlu
WzBdLm5hbWVdCi0gICAgZnNwYXRoID0gY2hhaW5bMF0uZnNwYXRoCi0gICAgZnNwYXJ0ID0gRmFs
c2UKLSAgICBmb3Igbm9kZSBpbiBjaGFpblsxOl06Ci0gICAgICAgIG5ld2ZzcGF0aCA9IG5vZGUu
ZnNwYXRoCi0gICAgICAgIGlmIG5ld2ZzcGF0aCA9PSBmc3BhdGg6Ci0gICAgICAgICAgICBpZiBm
c3BhcnQ6Ci0gICAgICAgICAgICAgICAgZ3BhdGguYXBwZW5kKCI6IikKLSAgICAgICAgICAgICAg
ICBmc3BhcnQgPSBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBncGF0
aC5hcHBlbmQoIi4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ3BhdGguYXBwZW5kKCIv
IikKLSAgICAgICAgICAgIGZzcGFydCA9IFRydWUKLSAgICAgICAgbmFtZSA9IG5vZGUubmFtZQot
ICAgICAgICBpZiBuYW1lWzBdIGluICIoWyI6Ci0gICAgICAgICAgICBncGF0aC5wb3AoKQotICAg
ICAgICBncGF0aC5hcHBlbmQobmFtZSkKLSAgICAgICAgZnNwYXRoID0gbmV3ZnNwYXRoCi0gICAg
cmV0dXJuICIiLmpvaW4oZ3BhdGgpCi0KLQotY2xhc3MgUmVzdWx0TG9nKG9iamVjdCk6Ci0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnLCBsb2dmaWxlKToKLSAgICAgICAgc2VsZi5jb25m
aWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5sb2dmaWxlID0gbG9nZmlsZSAgIyBwcmVmZXJhYmx5
IGxpbmUgYnVmZmVyZWQKLQotICAgIGRlZiB3cml0ZV9sb2dfZW50cnkoc2VsZiwgdGVzdHBhdGgs
IGxldHRlcmNvZGUsIGxvbmdyZXByKToKLSAgICAgICAgcHJpbnQoIiVzICVzIiAlIChsZXR0ZXJj
b2RlLCB0ZXN0cGF0aCksIGZpbGU9c2VsZi5sb2dmaWxlKQotICAgICAgICBmb3IgbGluZSBpbiBs
b25ncmVwci5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBwcmludCgiICVzIiAlIGxpbmUsIGZp
bGU9c2VsZi5sb2dmaWxlKQotCi0gICAgZGVmIGxvZ19vdXRjb21lKHNlbGYsIHJlcG9ydCwgbGV0
dGVyY29kZSwgbG9uZ3JlcHIpOgotICAgICAgICB0ZXN0cGF0aCA9IGdldGF0dHIocmVwb3J0LCAi
bm9kZWlkIiwgTm9uZSkKLSAgICAgICAgaWYgdGVzdHBhdGggaXMgTm9uZToKLSAgICAgICAgICAg
IHRlc3RwYXRoID0gcmVwb3J0LmZzcGF0aAotICAgICAgICBzZWxmLndyaXRlX2xvZ19lbnRyeSh0
ZXN0cGF0aCwgbGV0dGVyY29kZSwgbG9uZ3JlcHIpCi0KLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rf
bG9ncmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIHJlcG9ydC53aGVuICE9ICJjYWxs
IiBhbmQgcmVwb3J0LnBhc3NlZDoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXMgPSBz
ZWxmLmNvbmZpZy5ob29rLnB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQ9cmVwb3J0KQot
ICAgICAgICBjb2RlID0gcmVzWzFdCi0gICAgICAgIGlmIGNvZGUgPT0gIngiOgotICAgICAgICAg
ICAgbG9uZ3JlcHIgPSBzdHIocmVwb3J0LmxvbmdyZXByKQotICAgICAgICBlbGlmIGNvZGUgPT0g
IlgiOgotICAgICAgICAgICAgbG9uZ3JlcHIgPSAiIgotICAgICAgICBlbGlmIHJlcG9ydC5wYXNz
ZWQ6Ci0gICAgICAgICAgICBsb25ncmVwciA9ICIiCi0gICAgICAgIGVsaWYgcmVwb3J0LmZhaWxl
ZDoKLSAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwcikKLSAgICAgICAg
ZWxpZiByZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5s
b25ncmVwclsyXSkKLSAgICAgICAgc2VsZi5sb2dfb3V0Y29tZShyZXBvcnQsIGNvZGUsIGxvbmdy
ZXByKQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAg
ICAgIGlmIG5vdCByZXBvcnQucGFzc2VkOgotICAgICAgICAgICAgaWYgcmVwb3J0LmZhaWxlZDoK
LSAgICAgICAgICAgICAgICBjb2RlID0gIkYiCi0gICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBz
dHIocmVwb3J0LmxvbmdyZXByKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBh
c3NlcnQgcmVwb3J0LnNraXBwZWQKLSAgICAgICAgICAgICAgICBjb2RlID0gIlMiCi0gICAgICAg
ICAgICAgICAgbG9uZ3JlcHIgPSAiJXM6JWQ6ICVzIiAlIHJlcG9ydC5sb25ncmVwcgotICAgICAg
ICAgICAgc2VsZi5sb2dfb3V0Y29tZShyZXBvcnQsIGNvZGUsIGxvbmdyZXByKQotCi0gICAgZGVm
IHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIpOgotICAgICAgICByZXByY3Jhc2gg
PSBnZXRhdHRyKGV4Y3JlcHIsICJyZXByY3Jhc2giLCBOb25lKQotICAgICAgICBwYXRoID0gZ2V0
YXR0cihyZXByY3Jhc2gsICJwYXRoIiwgTm9uZSkKLSAgICAgICAgaWYgcGF0aCBpcyBOb25lOgot
ICAgICAgICAgICAgcGF0aCA9ICJjd2Q6JXMiICUgcHkucGF0aC5sb2NhbCgpCi0gICAgICAgIHNl
bGYud3JpdGVfbG9nX2VudHJ5KHBhdGgsICIhIiwgc3RyKGV4Y3JlcHIpKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcnVubmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3QvcnVubmVyLnB5CmluZGV4IDE4ZTkyNTUwOWVjYy4uZjI5ZDM1NmZlMDdlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvcnVubmVyLnB5CkBAIC0xLDIwICsxLDQ5IEBACi0iIiIgYmFzaWMgY29sbGVjdCBh
bmQgcnVudGVzdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbnMgIiIiCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KKyIiIkJh
c2ljIGNvbGxlY3QgYW5kIHJ1bnRlc3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb25zLiIiIgogaW1w
b3J0IGJkYgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUKLQot
aW1wb3J0IHB5Ci1mcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgVGVybWluYWxSZXByLCBF
eGNlcHRpb25JbmZvCi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IHNraXAsIFNraXBwZWQs
IFRFU1RfT1VUQ09NRQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBp
bXBvcnQgY2FzdAorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBH
ZW5lcmljCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFy
Citmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0IGF0dHIKKworZnJvbSAucmVwb3J0
cyBpbXBvcnQgQmFzZVJlcG9ydAorZnJvbSAucmVwb3J0cyBpbXBvcnQgQ29sbGVjdEVycm9yUmVw
cgorZnJvbSAucmVwb3J0cyBpbXBvcnQgQ29sbGVjdFJlcG9ydAorZnJvbSAucmVwb3J0cyBpbXBv
cnQgVGVzdFJlcG9ydAorZnJvbSBfcHl0ZXN0IGltcG9ydCB0aW1pbmcKK2Zyb20gX3B5dGVzdC5f
Y29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25DaGFpblJlcHIKK2Zyb20gX3B5dGVzdC5fY29kZS5j
b2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQg
VGVybWluYWxSZXByCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJvbSBfcHl0
ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdw
YXJzaW5nIGltcG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9y
Citmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0KK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBv
cnQgTm9kZQorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBFeGl0Citmcm9tIF9weXRlc3Qu
b3V0Y29tZXMgaW1wb3J0IFNraXBwZWQKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgVEVT
VF9PVVRDT01FCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5
cGUKKyAgICBmcm9tIHR5cGluZ19leHRlbnNpb25zIGltcG9ydCBMaXRlcmFsCisKKyAgICBmcm9t
IF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgorICAgIGZyb20gX3B5dGVzdC50ZXJtaW5hbCBp
bXBvcnQgVGVybWluYWxSZXBvcnRlcgogCiAjCi0jIHB5dGVzdCBwbHVnaW4gaG9va3MKKyMgcHl0
ZXN0IHBsdWdpbiBob29rcy4KIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVm
IHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBw
YXJzZXIuZ2V0Z3JvdXAoInRlcm1pbmFsIHJlcG9ydGluZyIsICJyZXBvcnRpbmciLCBhZnRlcj0i
Z2VuZXJhbCIpCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAiLS1kdXJhdGlvbnMiLApA
QCAtMjMsMTEgKzUyLDIxIEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAg
IGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgbWV0YXZhcj0iTiIsCiAgICAgICAgIGhlbHA9InNob3cg
TiBzbG93ZXN0IHNldHVwL3Rlc3QgZHVyYXRpb25zIChOPTAgZm9yIGFsbCkuIiwKLSAgICApLAor
ICAgICkKKyAgICBncm91cC5hZGRvcHRpb24oCisgICAgICAgICItLWR1cmF0aW9ucy1taW4iLAor
ICAgICAgICBhY3Rpb249InN0b3JlIiwKKyAgICAgICAgdHlwZT1mbG9hdCwKKyAgICAgICAgZGVm
YXVsdD0wLjAwNSwKKyAgICAgICAgbWV0YXZhcj0iTiIsCisgICAgICAgIGhlbHA9Ik1pbmltYWwg
ZHVyYXRpb24gaW4gc2Vjb25kcyBmb3IgaW5jbHVzaW9uIGluIHNsb3dlc3QgbGlzdC4gRGVmYXVs
dCAwLjAwNSIsCisgICAgKQogCiAKLWRlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5h
bHJlcG9ydGVyKToKK2RlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5hbHJlcG9ydGVy
OiAiVGVybWluYWxSZXBvcnRlciIpIC0+IE5vbmU6CiAgICAgZHVyYXRpb25zID0gdGVybWluYWxy
ZXBvcnRlci5jb25maWcub3B0aW9uLmR1cmF0aW9ucworICAgIGR1cmF0aW9uc19taW4gPSB0ZXJt
aW5hbHJlcG9ydGVyLmNvbmZpZy5vcHRpb24uZHVyYXRpb25zX21pbgorICAgIHZlcmJvc2UgPSB0
ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZy5nZXR2YWx1ZSgidmVyYm9zZSIpCiAgICAgaWYgZHVyYXRp
b25zIGlzIE5vbmU6CiAgICAgICAgIHJldHVybgogICAgIHRyID0gdGVybWluYWxyZXBvcnRlcgpA
QCAtNDEsOTQgKzgwLDEwOSBAQCBkZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVybWluYWxy
ZXBvcnRlcik6CiAgICAgZGxpc3Quc29ydChrZXk9bGFtYmRhIHg6IHguZHVyYXRpb24pCiAgICAg
ZGxpc3QucmV2ZXJzZSgpCiAgICAgaWYgbm90IGR1cmF0aW9uczoKLSAgICAgICAgdHIud3JpdGVf
c2VwKCI9IiwgInNsb3dlc3QgdGVzdCBkdXJhdGlvbnMiKQorICAgICAgICB0ci53cml0ZV9zZXAo
Ij0iLCAic2xvd2VzdCBkdXJhdGlvbnMiKQogICAgIGVsc2U6Ci0gICAgICAgIHRyLndyaXRlX3Nl
cCgiPSIsICJzbG93ZXN0ICVzIHRlc3QgZHVyYXRpb25zIiAlIGR1cmF0aW9ucykKKyAgICAgICAg
dHIud3JpdGVfc2VwKCI9IiwgInNsb3dlc3QgJXMgZHVyYXRpb25zIiAlIGR1cmF0aW9ucykKICAg
ICAgICAgZGxpc3QgPSBkbGlzdFs6ZHVyYXRpb25zXQogCi0gICAgZm9yIHJlcCBpbiBkbGlzdDoK
LSAgICAgICAgbm9kZWlkID0gcmVwLm5vZGVpZC5yZXBsYWNlKCI6OigpOjoiLCAiOjoiKQotICAg
ICAgICB0ci53cml0ZV9saW5lKCIlMDIuMmZzICUtOHMgJXMiICUgKHJlcC5kdXJhdGlvbiwgcmVw
LndoZW4sIG5vZGVpZCkpCisgICAgZm9yIGksIHJlcCBpbiBlbnVtZXJhdGUoZGxpc3QpOgorICAg
ICAgICBpZiB2ZXJib3NlIDwgMiBhbmQgcmVwLmR1cmF0aW9uIDwgZHVyYXRpb25zX21pbjoKKyAg
ICAgICAgICAgIHRyLndyaXRlX2xpbmUoIiIpCisgICAgICAgICAgICB0ci53cml0ZV9saW5lKAor
ICAgICAgICAgICAgICAgICIoJXMgZHVyYXRpb25zIDwgJWdzIGhpZGRlbi4gIFVzZSAtdnYgdG8g
c2hvdyB0aGVzZSBkdXJhdGlvbnMuKSIKKyAgICAgICAgICAgICAgICAlIChsZW4oZGxpc3QpIC0g
aSwgZHVyYXRpb25zX21pbikKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgIHRyLndyaXRlX2xpbmUoIns6MDIuMmZ9cyB7Ojw4fSB7fSIuZm9ybWF0KHJlcC5kdXJhdGlv
biwgcmVwLndoZW4sIHJlcC5ub2RlaWQpKQogCiAKLWRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNl
c3Npb24pOgorZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBO
b25lOgogICAgIHNlc3Npb24uX3NldHVwc3RhdGUgPSBTZXR1cFN0YXRlKCkKIAogCi1kZWYgcHl0
ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbik6CitkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vz
c2lvbjogIlNlc3Npb24iKSAtPiBOb25lOgogICAgIHNlc3Npb24uX3NldHVwc3RhdGUudGVhcmRv
d25fYWxsKCkKIAogCi1kZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSwgbmV4dGl0ZW0p
OgotICAgIGl0ZW0uaWhvb2sucHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQobm9kZWlkPWl0ZW0ubm9k
ZWlkLCBsb2NhdGlvbj1pdGVtLmxvY2F0aW9uKQorZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29s
KGl0ZW06IEl0ZW0sIG5leHRpdGVtOiBPcHRpb25hbFtJdGVtXSkgLT4gYm9vbDoKKyAgICBpaG9v
ayA9IGl0ZW0uaWhvb2sKKyAgICBpaG9vay5weXRlc3RfcnVudGVzdF9sb2dzdGFydChub2RlaWQ9
aXRlbS5ub2RlaWQsIGxvY2F0aW9uPWl0ZW0ubG9jYXRpb24pCiAgICAgcnVudGVzdHByb3RvY29s
KGl0ZW0sIG5leHRpdGVtPW5leHRpdGVtKQotICAgIGl0ZW0uaWhvb2sucHl0ZXN0X3J1bnRlc3Rf
bG9nZmluaXNoKG5vZGVpZD1pdGVtLm5vZGVpZCwgbG9jYXRpb249aXRlbS5sb2NhdGlvbikKKyAg
ICBpaG9vay5weXRlc3RfcnVudGVzdF9sb2dmaW5pc2gobm9kZWlkPWl0ZW0ubm9kZWlkLCBsb2Nh
dGlvbj1pdGVtLmxvY2F0aW9uKQogICAgIHJldHVybiBUcnVlCiAKIAotZGVmIHJ1bnRlc3Rwcm90
b2NvbChpdGVtLCBsb2c9VHJ1ZSwgbmV4dGl0ZW09Tm9uZSk6CitkZWYgcnVudGVzdHByb3RvY29s
KAorICAgIGl0ZW06IEl0ZW0sIGxvZzogYm9vbCA9IFRydWUsIG5leHRpdGVtOiBPcHRpb25hbFtJ
dGVtXSA9IE5vbmUKKykgLT4gTGlzdFtUZXN0UmVwb3J0XToKICAgICBoYXNyZXF1ZXN0ID0gaGFz
YXR0cihpdGVtLCAiX3JlcXVlc3QiKQotICAgIGlmIGhhc3JlcXVlc3QgYW5kIG5vdCBpdGVtLl9y
ZXF1ZXN0OgotICAgICAgICBpdGVtLl9pbml0cmVxdWVzdCgpCisgICAgaWYgaGFzcmVxdWVzdCBh
bmQgbm90IGl0ZW0uX3JlcXVlc3Q6ICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAg
ICAgIGl0ZW0uX2luaXRyZXF1ZXN0KCkgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KICAg
ICByZXAgPSBjYWxsX2FuZF9yZXBvcnQoaXRlbSwgInNldHVwIiwgbG9nKQogICAgIHJlcG9ydHMg
PSBbcmVwXQogICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgIGlmIGl0ZW0uY29uZmlnLm9wdGlv
bi5zZXR1cHNob3c6CisgICAgICAgIGlmIGl0ZW0uY29uZmlnLmdldG9wdGlvbigic2V0dXBzaG93
IiwgRmFsc2UpOgogICAgICAgICAgICAgc2hvd190ZXN0X2l0ZW0oaXRlbSkKLSAgICAgICAgaWYg
bm90IGl0ZW0uY29uZmlnLm9wdGlvbi5zZXR1cG9ubHk6CisgICAgICAgIGlmIG5vdCBpdGVtLmNv
bmZpZy5nZXRvcHRpb24oInNldHVwb25seSIsIEZhbHNlKToKICAgICAgICAgICAgIHJlcG9ydHMu
YXBwZW5kKGNhbGxfYW5kX3JlcG9ydChpdGVtLCAiY2FsbCIsIGxvZykpCiAgICAgcmVwb3J0cy5h
cHBlbmQoY2FsbF9hbmRfcmVwb3J0KGl0ZW0sICJ0ZWFyZG93biIsIGxvZywgbmV4dGl0ZW09bmV4
dGl0ZW0pKQotICAgICMgYWZ0ZXIgYWxsIHRlYXJkb3duIGhvb2tzIGhhdmUgYmVlbiBjYWxsZWQK
LSAgICAjIHdhbnQgZnVuY2FyZ3MgYW5kIHJlcXVlc3QgaW5mbyB0byBnbyBhd2F5CisgICAgIyBB
ZnRlciBhbGwgdGVhcmRvd24gaG9va3MgaGF2ZSBiZWVuIGNhbGxlZAorICAgICMgd2FudCBmdW5j
YXJncyBhbmQgcmVxdWVzdCBpbmZvIHRvIGdvIGF3YXkuCiAgICAgaWYgaGFzcmVxdWVzdDoKLSAg
ICAgICAgaXRlbS5fcmVxdWVzdCA9IEZhbHNlCi0gICAgICAgIGl0ZW0uZnVuY2FyZ3MgPSBOb25l
CisgICAgICAgIGl0ZW0uX3JlcXVlc3QgPSBGYWxzZSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZp
bmVkXQorICAgICAgICBpdGVtLmZ1bmNhcmdzID0gTm9uZSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1k
ZWZpbmVkXQogICAgIHJldHVybiByZXBvcnRzCiAKIAotZGVmIHNob3dfdGVzdF9pdGVtKGl0ZW0p
OgorZGVmIHNob3dfdGVzdF9pdGVtKGl0ZW06IEl0ZW0pIC0+IE5vbmU6CiAgICAgIiIiU2hvdyB0
ZXN0IGZ1bmN0aW9uLCBwYXJhbWV0ZXJzIGFuZCB0aGUgZml4dHVyZXMgb2YgdGhlIHRlc3QgaXRl
bS4iIiIKICAgICB0dyA9IGl0ZW0uY29uZmlnLmdldF90ZXJtaW5hbF93cml0ZXIoKQogICAgIHR3
LmxpbmUoKQogICAgIHR3LndyaXRlKCIgIiAqIDgpCi0gICAgdHcud3JpdGUoaXRlbS5fbm9kZWlk
KQotICAgIHVzZWRfZml4dHVyZXMgPSBzb3J0ZWQoaXRlbS5fZml4dHVyZWluZm8ubmFtZTJmaXh0
dXJlZGVmcy5rZXlzKCkpCisgICAgdHcud3JpdGUoaXRlbS5ub2RlaWQpCisgICAgdXNlZF9maXh0
dXJlcyA9IHNvcnRlZChnZXRhdHRyKGl0ZW0sICJmaXh0dXJlbmFtZXMiLCBbXSkpCiAgICAgaWYg
dXNlZF9maXh0dXJlczoKICAgICAgICAgdHcud3JpdGUoIiAoZml4dHVyZXMgdXNlZDoge30pIi5m
b3JtYXQoIiwgIi5qb2luKHVzZWRfZml4dHVyZXMpKSkKKyAgICB0dy5mbHVzaCgpCiAKIAotZGVm
IHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgorZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0
ZW06IEl0ZW0pIC0+IE5vbmU6CiAgICAgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sICJz
ZXR1cCIpCiAgICAgaXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlLnByZXBhcmUoaXRlbSkKIAogCi1k
ZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtKToKK2RlZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0
ZW06IEl0ZW0pIC0+IE5vbmU6CiAgICAgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sICJj
YWxsIikKLSAgICBzeXMubGFzdF90eXBlLCBzeXMubGFzdF92YWx1ZSwgc3lzLmxhc3RfdHJhY2Vi
YWNrID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgdHJ5OgorICAgICAgICBkZWwgc3lzLmxhc3Rf
dHlwZQorICAgICAgICBkZWwgc3lzLmxhc3RfdmFsdWUKKyAgICAgICAgZGVsIHN5cy5sYXN0X3Ry
YWNlYmFjaworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcwogICAgIHRy
eToKICAgICAgICAgaXRlbS5ydW50ZXN0KCkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgIyBTdG9yZSB0cmFjZSBpbmZvIHRvIGFsbG93
IHBvc3Rtb3J0ZW0gZGVidWdnaW5nCi0gICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNf
aW5mbygpCi0gICAgICAgIHRiID0gdGIudGJfbmV4dCAgIyBTa2lwICp0aGlzKiBmcmFtZQotICAg
ICAgICBzeXMubGFzdF90eXBlID0gdHlwZQotICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVl
Ci0gICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCi0gICAgICAgIGRlbCB0eXBlLCB2YWx1
ZSwgdGIgICMgR2V0IHJpZCBvZiB0aGVzZSBpbiB0aGlzIGZyYW1lCi0gICAgICAgIHJhaXNlCisg
ICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXBlKGUpCisgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0g
ZQorICAgICAgICBhc3NlcnQgZS5fX3RyYWNlYmFja19fIGlzIG5vdCBOb25lCisgICAgICAgICMg
U2tpcCAqdGhpcyogZnJhbWUKKyAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gZS5fX3RyYWNl
YmFja19fLnRiX25leHQKKyAgICAgICAgcmFpc2UgZQogCiAKLWRlZiBweXRlc3RfcnVudGVzdF90
ZWFyZG93bihpdGVtLCBuZXh0aXRlbSk6CitkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRl
bTogSXRlbSwgbmV4dGl0ZW06IE9wdGlvbmFsW0l0ZW1dKSAtPiBOb25lOgogICAgIF91cGRhdGVf
Y3VycmVudF90ZXN0X3ZhcihpdGVtLCAidGVhcmRvd24iKQogICAgIGl0ZW0uc2Vzc2lvbi5fc2V0
dXBzdGF0ZS50ZWFyZG93bl9leGFjdChpdGVtLCBuZXh0aXRlbSkKICAgICBfdXBkYXRlX2N1cnJl
bnRfdGVzdF92YXIoaXRlbSwgTm9uZSkKIAogCi1kZWYgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFy
KGl0ZW0sIHdoZW4pOgotICAgICIiIgotICAgIFVwZGF0ZSBQWVRFU1RfQ1VSUkVOVF9URVNUIHRv
IHJlZmxlY3QgdGhlIGN1cnJlbnQgaXRlbSBhbmQgc3RhZ2UuCitkZWYgX3VwZGF0ZV9jdXJyZW50
X3Rlc3RfdmFyKAorICAgIGl0ZW06IEl0ZW0sIHdoZW46IE9wdGlvbmFsWyJMaXRlcmFsWydzZXR1
cCcsICdjYWxsJywgJ3RlYXJkb3duJ10iXQorKSAtPiBOb25lOgorICAgICIiIlVwZGF0ZSA6ZW52
dmFyOmBQWVRFU1RfQ1VSUkVOVF9URVNUYCB0byByZWZsZWN0IHRoZSBjdXJyZW50IGl0ZW0gYW5k
IHN0YWdlLgogCi0gICAgSWYgYGB3aGVuYGAgaXMgTm9uZSwgZGVsZXRlIFBZVEVTVF9DVVJSRU5U
X1RFU1QgZnJvbSB0aGUgZW52aXJvbm1lbnQuCisgICAgSWYgYGB3aGVuYGAgaXMgTm9uZSwgZGVs
ZXRlIGBgUFlURVNUX0NVUlJFTlRfVEVTVGBgIGZyb20gdGhlIGVudmlyb25tZW50LgogICAgICIi
IgogICAgIHZhcl9uYW1lID0gIlBZVEVTVF9DVVJSRU5UX1RFU1QiCiAgICAgaWYgd2hlbjoKQEAg
LTE0MCw3ICsxOTQsNyBAQCBkZWYgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sIHdoZW4p
OgogICAgICAgICBvcy5lbnZpcm9uLnBvcCh2YXJfbmFtZSkKIAogCi1kZWYgcHl0ZXN0X3JlcG9y
dF90ZXN0c3RhdHVzKHJlcG9ydCk6CitkZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9y
dDogQmFzZVJlcG9ydCkgLT4gT3B0aW9uYWxbVHVwbGVbc3RyLCBzdHIsIHN0cl1dOgogICAgIGlm
IHJlcG9ydC53aGVuIGluICgic2V0dXAiLCAidGVhcmRvd24iKToKICAgICAgICAgaWYgcmVwb3J0
LmZhaWxlZDoKICAgICAgICAgICAgICMgICAgICBjYXRlZ29yeSwgc2hvcnRsZXR0ZXIsIHZlcmJv
c2Utd29yZApAQCAtMTQ5LDE2ICsyMDMsMTkgQEAgZGVmIHB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1
cyhyZXBvcnQpOgogICAgICAgICAgICAgcmV0dXJuICJza2lwcGVkIiwgInMiLCAiU0tJUFBFRCIK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiAiIiwgIiIsICIiCisgICAgcmV0dXJu
IE5vbmUKIAogCiAjCiAjIEltcGxlbWVudGF0aW9uCiAKIAotZGVmIGNhbGxfYW5kX3JlcG9ydChp
dGVtLCB3aGVuLCBsb2c9VHJ1ZSwgKiprd2RzKToKK2RlZiBjYWxsX2FuZF9yZXBvcnQoCisgICAg
aXRlbTogSXRlbSwgd2hlbjogIkxpdGVyYWxbJ3NldHVwJywgJ2NhbGwnLCAndGVhcmRvd24nXSIs
IGxvZzogYm9vbCA9IFRydWUsICoqa3dkcworKSAtPiBUZXN0UmVwb3J0OgogICAgIGNhbGwgPSBj
YWxsX3J1bnRlc3RfaG9vayhpdGVtLCB3aGVuLCAqKmt3ZHMpCiAgICAgaG9vayA9IGl0ZW0uaWhv
b2sKLSAgICByZXBvcnQgPSBob29rLnB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbT1pdGVt
LCBjYWxsPWNhbGwpCisgICAgcmVwb3J0ID0gaG9vay5weXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0
KGl0ZW09aXRlbSwgY2FsbD1jYWxsKSAgIyB0eXBlOiBUZXN0UmVwb3J0CiAgICAgaWYgbG9nOgog
ICAgICAgICBob29rLnB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChyZXBvcnQ9cmVwb3J0KQogICAg
IGlmIGNoZWNrX2ludGVyYWN0aXZlX2V4Y2VwdGlvbihjYWxsLCByZXBvcnQpOgpAQCAtMTY2LDMy
MiArMjIzLDE1OSBAQCBkZWYgY2FsbF9hbmRfcmVwb3J0KGl0ZW0sIHdoZW4sIGxvZz1UcnVlLCAq
Kmt3ZHMpOgogICAgIHJldHVybiByZXBvcnQKIAogCi1kZWYgY2hlY2tfaW50ZXJhY3RpdmVfZXhj
ZXB0aW9uKGNhbGwsIHJlcG9ydCk6Ci0gICAgcmV0dXJuIGNhbGwuZXhjaW5mbyBhbmQgbm90ICgK
LSAgICAgICAgaGFzYXR0cihyZXBvcnQsICJ3YXN4ZmFpbCIpCi0gICAgICAgIG9yIGNhbGwuZXhj
aW5mby5lcnJpc2luc3RhbmNlKHNraXAuRXhjZXB0aW9uKQotICAgICAgICBvciBjYWxsLmV4Y2lu
Zm8uZXJyaXNpbnN0YW5jZShiZGIuQmRiUXVpdCkKLSAgICApCitkZWYgY2hlY2tfaW50ZXJhY3Rp
dmVfZXhjZXB0aW9uKGNhbGw6ICJDYWxsSW5mb1tvYmplY3RdIiwgcmVwb3J0OiBCYXNlUmVwb3J0
KSAtPiBib29sOgorICAgICIiIkNoZWNrIHdoZXRoZXIgdGhlIGNhbGwgcmFpc2VkIGFuIGV4Y2Vw
dGlvbiB0aGF0IHNob3VsZCBiZSByZXBvcnRlZCBhcworICAgIGludGVyYWN0aXZlLiIiIgorICAg
IGlmIGNhbGwuZXhjaW5mbyBpcyBOb25lOgorICAgICAgICAjIERpZG4ndCByYWlzZS4KKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgaWYgaGFzYXR0cihyZXBvcnQsICJ3YXN4ZmFpbCIpOgorICAg
ICAgICAjIEV4Y2VwdGlvbiB3YXMgZXhwZWN0ZWQuCisgICAgICAgIHJldHVybiBGYWxzZQorICAg
IGlmIGlzaW5zdGFuY2UoY2FsbC5leGNpbmZvLnZhbHVlLCAoU2tpcHBlZCwgYmRiLkJkYlF1aXQp
KToKKyAgICAgICAgIyBTcGVjaWFsIGNvbnRyb2wgZmxvdyBleGNlcHRpb24uCisgICAgICAgIHJl
dHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCiAKIAotZGVmIGNhbGxfcnVudGVzdF9ob29rKGl0
ZW0sIHdoZW4sICoqa3dkcyk6Ci0gICAgaG9va25hbWUgPSAicHl0ZXN0X3J1bnRlc3RfIiArIHdo
ZW4KLSAgICBpaG9vayA9IGdldGF0dHIoaXRlbS5paG9vaywgaG9va25hbWUpCi0gICAgcmV0dXJu
IENhbGxJbmZvKAotICAgICAgICBsYW1iZGE6IGlob29rKGl0ZW09aXRlbSwgKiprd2RzKSwKLSAg
ICAgICAgd2hlbj13aGVuLAotICAgICAgICB0cmVhdF9rZXlib2FyZF9pbnRlcnJ1cHRfYXNfZXhj
ZXB0aW9uPWl0ZW0uY29uZmlnLmdldHZhbHVlKCJ1c2VwZGIiKSwKK2RlZiBjYWxsX3J1bnRlc3Rf
aG9vaygKKyAgICBpdGVtOiBJdGVtLCB3aGVuOiAiTGl0ZXJhbFsnc2V0dXAnLCAnY2FsbCcsICd0
ZWFyZG93biddIiwgKiprd2RzCispIC0+ICJDYWxsSW5mb1tOb25lXSI6CisgICAgaWYgd2hlbiA9
PSAic2V0dXAiOgorICAgICAgICBpaG9vayA9IGl0ZW0uaWhvb2sucHl0ZXN0X3J1bnRlc3Rfc2V0
dXAgICMgdHlwZTogQ2FsbGFibGVbLi4uLCBOb25lXQorICAgIGVsaWYgd2hlbiA9PSAiY2FsbCI6
CisgICAgICAgIGlob29rID0gaXRlbS5paG9vay5weXRlc3RfcnVudGVzdF9jYWxsCisgICAgZWxp
ZiB3aGVuID09ICJ0ZWFyZG93biI6CisgICAgICAgIGlob29rID0gaXRlbS5paG9vay5weXRlc3Rf
cnVudGVzdF90ZWFyZG93bgorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBGYWxzZSwgIlVuaGFu
ZGxlZCBydW50ZXN0IGhvb2sgY2FzZToge30iLmZvcm1hdCh3aGVuKQorICAgIHJlcmFpc2UgPSAo
RXhpdCwpICAjIHR5cGU6IFR1cGxlW1R5cGVbQmFzZUV4Y2VwdGlvbl0sIC4uLl0KKyAgICBpZiBu
b3QgaXRlbS5jb25maWcuZ2V0b3B0aW9uKCJ1c2VwZGIiLCBGYWxzZSk6CisgICAgICAgIHJlcmFp
c2UgKz0gKEtleWJvYXJkSW50ZXJydXB0LCkKKyAgICByZXR1cm4gQ2FsbEluZm8uZnJvbV9jYWxs
KAorICAgICAgICBsYW1iZGE6IGlob29rKGl0ZW09aXRlbSwgKiprd2RzKSwgd2hlbj13aGVuLCBy
ZXJhaXNlPXJlcmFpc2UKICAgICApCiAKIAotY2xhc3MgQ2FsbEluZm8ob2JqZWN0KToKLSAgICAi
IiIgUmVzdWx0L0V4Y2VwdGlvbiBpbmZvIGEgZnVuY3Rpb24gaW52b2NhdGlvbi4gIiIiCi0gICAg
IzogTm9uZSBvciBFeGNlcHRpb25JbmZvIG9iamVjdC4KLSAgICBleGNpbmZvID0gTm9uZQotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIHdoZW4sIHRyZWF0X2tleWJvYXJkX2ludGVycnVw
dF9hc19leGNlcHRpb249RmFsc2UpOgotICAgICAgICAjOiBjb250ZXh0IG9mIGludm9jYXRpb246
IG9uZSBvZiAic2V0dXAiLCAiY2FsbCIsCi0gICAgICAgICM6ICJ0ZWFyZG93biIsICJtZW1vY29s
bGVjdCIKLSAgICAgICAgc2VsZi53aGVuID0gd2hlbgotICAgICAgICBzZWxmLnN0YXJ0ID0gdGlt
ZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gZnVuYygpCi0gICAg
ICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIGlmIHRyZWF0X2tleWJv
YXJkX2ludGVycnVwdF9hc19leGNlcHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5leGNpbmZv
ID0gRXhjZXB0aW9uSW5mbygpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNl
bGYuc3RvcCA9IHRpbWUoKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDog
ICMgbm9xYQotICAgICAgICAgICAgc2VsZi5leGNpbmZvID0gRXhjZXB0aW9uSW5mbygpCi0gICAg
ICAgIHNlbGYuc3RvcCA9IHRpbWUoKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAg
ICBpZiBzZWxmLmV4Y2luZm86Ci0gICAgICAgICAgICBzdGF0dXMgPSAiZXhjZXB0aW9uOiAlcyIg
JSBzdHIoc2VsZi5leGNpbmZvLnZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3Rh
dHVzID0gInJlc3VsdDogJXIiICUgKHNlbGYucmVzdWx0LCkKLSAgICAgICAgcmV0dXJuICI8Q2Fs
bEluZm8gd2hlbj0lciAlcz4iICUgKHNlbGYud2hlbiwgc3RhdHVzKQorVFJlc3VsdCA9IFR5cGVW
YXIoIlRSZXN1bHQiLCBjb3ZhcmlhbnQ9VHJ1ZSkKIAogCi1kZWYgZ2V0c2xhdmVpbmZvbGluZShu
b2RlKToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBub2RlLl9zbGF2ZWluZm9jYWNoZQotICAg
IGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgZCA9IG5vZGUuc2xhdmVpbmZvCi0gICAg
ICAgIHZlciA9ICIlcy4lcy4lcyIgJSBkWyJ2ZXJzaW9uX2luZm8iXVs6M10KLSAgICAgICAgbm9k
ZS5fc2xhdmVpbmZvY2FjaGUgPSBzID0gIlslc10gJXMgLS0gUHl0aG9uICVzICVzIiAlICgKLSAg
ICAgICAgICAgIGRbImlkIl0sIGRbInN5c3BsYXRmb3JtIl0sIHZlciwgZFsiZXhlY3V0YWJsZSJd
Ci0gICAgICAgICkKLSAgICAgICAgcmV0dXJuIHMKLQotCi1jbGFzcyBCYXNlUmVwb3J0KG9iamVj
dCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6Ci0gICAgICAgIHNlbGYuX19kaWN0
X18udXBkYXRlKGt3KQotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgb3V0KToKLSAgICAgICAg
aWYgaGFzYXR0cihzZWxmLCAibm9kZSIpOgotICAgICAgICAgICAgb3V0LmxpbmUoZ2V0c2xhdmVp
bmZvbGluZShzZWxmLm5vZGUpKQotCi0gICAgICAgIGxvbmdyZXByID0gc2VsZi5sb25ncmVwcgot
ICAgICAgICBpZiBsb25ncmVwciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgaWYgaGFzYXR0cihsb25ncmVwciwgInRvdGVybWluYWwiKToKLSAgICAgICAgICAgIGxvbmdy
ZXByLnRvdGVybWluYWwob3V0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIG91dC5saW5lKGxvbmdyZXByKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNv
ZGVFbmNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICBvdXQubGluZSgiPHVucHJpbnRhYmxlIGxv
bmdyZXByPiIpCi0KLSAgICBkZWYgZ2V0X3NlY3Rpb25zKHNlbGYsIHByZWZpeCk6Ci0gICAgICAg
IGZvciBuYW1lLCBjb250ZW50IGluIHNlbGYuc2VjdGlvbnM6Ci0gICAgICAgICAgICBpZiBuYW1l
LnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgICAgICB5aWVsZCBwcmVmaXgsIGNvbnRl
bnQKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBsb25ncmVwcnRleHQoc2VsZik6Ci0gICAgICAg
ICIiIgotICAgICAgICBSZWFkLW9ubHkgcHJvcGVydHkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHN0
cmluZyByZXByZXNlbnRhdGlvbgotICAgICAgICBvZiBgYGxvbmdyZXByYGAuCi0KLSAgICAgICAg
Li4gdmVyc2lvbmFkZGVkOjogMy4wCi0gICAgICAgICIiIgotICAgICAgICB0dyA9IHB5LmlvLlRl
cm1pbmFsV3JpdGVyKHN0cmluZ2lvPVRydWUpCi0gICAgICAgIHR3Lmhhc21hcmt1cCA9IEZhbHNl
Ci0gICAgICAgIHNlbGYudG90ZXJtaW5hbCh0dykKLSAgICAgICAgZXhjID0gdHcuc3RyaW5naW8u
Z2V0dmFsdWUoKQotICAgICAgICByZXR1cm4gZXhjLnN0cmlwKCkKLQotICAgIEBwcm9wZXJ0eQot
ICAgIGRlZiBjYXBsb2coc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBjYXB0dXJlZCBsb2cgbGlu
ZXMsIGlmIGxvZyBjYXB0dXJpbmcgaXMgZW5hYmxlZAotCi0gICAgICAgIC4uIHZlcnNpb25hZGRl
ZDo6IDMuNQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICJcbiIuam9pbigKLSAgICAgICAg
ICAgIGNvbnRlbnQgZm9yIChwcmVmaXgsIGNvbnRlbnQpIGluIHNlbGYuZ2V0X3NlY3Rpb25zKCJD
YXB0dXJlZCBsb2ciKQotICAgICAgICApCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgY2Fwc3Rk
b3V0KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gY2FwdHVyZWQgdGV4dCBmcm9tIHN0ZG91dCwg
aWYgY2FwdHVyaW5nIGlzIGVuYWJsZWQKLQotICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjAK
LSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAiIi5qb2luKAotICAgICAgICAgICAgY29udGVu
dCBmb3IgKHByZWZpeCwgY29udGVudCkgaW4gc2VsZi5nZXRfc2VjdGlvbnMoIkNhcHR1cmVkIHN0
ZG91dCIpCi0gICAgICAgICkKK0BmaW5hbAorQGF0dHIucyhyZXByPUZhbHNlKQorY2xhc3MgQ2Fs
bEluZm8oR2VuZXJpY1tUUmVzdWx0XSk6CisgICAgIiIiUmVzdWx0L0V4Y2VwdGlvbiBpbmZvIGEg
ZnVuY3Rpb24gaW52b2NhdGlvbi4KIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjYXBzdGRlcnIo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiBjYXB0dXJlZCB0ZXh0IGZyb20gc3RkZXJyLCBpZiBj
YXB0dXJpbmcgaXMgZW5hYmxlZAotCi0gICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMAotICAg
ICAgICAiIiIKLSAgICAgICAgcmV0dXJuICIiLmpvaW4oCi0gICAgICAgICAgICBjb250ZW50IGZv
ciAocHJlZml4LCBjb250ZW50KSBpbiBzZWxmLmdldF9zZWN0aW9ucygiQ2FwdHVyZWQgc3RkZXJy
IikKLSAgICAgICAgKQorICAgIDpwYXJhbSBUIHJlc3VsdDoKKyAgICAgICAgVGhlIHJldHVybiB2
YWx1ZSBvZiB0aGUgY2FsbCwgaWYgaXQgZGlkbid0IHJhaXNlLiBDYW4gb25seSBiZQorICAgICAg
ICBhY2Nlc3NlZCBpZiBleGNpbmZvIGlzIE5vbmUuCisgICAgOnBhcmFtIE9wdGlvbmFsW0V4Y2Vw
dGlvbkluZm9dIGV4Y2luZm86CisgICAgICAgIFRoZSBjYXB0dXJlZCBleGNlcHRpb24gb2YgdGhl
IGNhbGwsIGlmIGl0IHJhaXNlZC4KKyAgICA6cGFyYW0gZmxvYXQgc3RhcnQ6CisgICAgICAgIFRo
ZSBzeXN0ZW0gdGltZSB3aGVuIHRoZSBjYWxsIHN0YXJ0ZWQsIGluIHNlY29uZHMgc2luY2UgdGhl
IGVwb2NoLgorICAgIDpwYXJhbSBmbG9hdCBzdG9wOgorICAgICAgICBUaGUgc3lzdGVtIHRpbWUg
d2hlbiB0aGUgY2FsbCBlbmRlZCwgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guCisgICAgOnBh
cmFtIGZsb2F0IGR1cmF0aW9uOgorICAgICAgICBUaGUgY2FsbCBkdXJhdGlvbiwgaW4gc2Vjb25k
cy4KKyAgICA6cGFyYW0gc3RyIHdoZW46CisgICAgICAgIFRoZSBjb250ZXh0IG9mIGludm9jYXRp
b246ICJzZXR1cCIsICJjYWxsIiwgInRlYXJkb3duIiwgLi4uCisgICAgIiIiCiAKLSAgICBwYXNz
ZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21lID09ICJwYXNzZWQiKQotICAgIGZhaWxl
ZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0gImZhaWxlZCIpCi0gICAgc2tpcHBl
ZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0gInNraXBwZWQiKQorICAgIF9yZXN1
bHQgPSBhdHRyLmliKHR5cGU9Ik9wdGlvbmFsW1RSZXN1bHRdIikKKyAgICBleGNpbmZvID0gYXR0
ci5pYih0eXBlPU9wdGlvbmFsW0V4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl1dKQorICAgIHN0
YXJ0ID0gYXR0ci5pYih0eXBlPWZsb2F0KQorICAgIHN0b3AgPSBhdHRyLmliKHR5cGU9ZmxvYXQp
CisgICAgZHVyYXRpb24gPSBhdHRyLmliKHR5cGU9ZmxvYXQpCisgICAgd2hlbiA9IGF0dHIuaWIo
dHlwZT0iTGl0ZXJhbFsnY29sbGVjdCcsICdzZXR1cCcsICdjYWxsJywgJ3RlYXJkb3duJ10iKQog
CiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIGZzcGF0aChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYubm9kZWlkLnNwbGl0KCI6OiIpWzBdCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBv
cnQoaXRlbSwgY2FsbCk6Ci0gICAgd2hlbiA9IGNhbGwud2hlbgotICAgIGR1cmF0aW9uID0gY2Fs
bC5zdG9wIC0gY2FsbC5zdGFydAotICAgIGtleXdvcmRzID0ge3g6IDEgZm9yIHggaW4gaXRlbS5r
ZXl3b3Jkc30KLSAgICBleGNpbmZvID0gY2FsbC5leGNpbmZvCi0gICAgc2VjdGlvbnMgPSBbXQot
ICAgIGlmIG5vdCBjYWxsLmV4Y2luZm86Ci0gICAgICAgIG91dGNvbWUgPSAicGFzc2VkIgotICAg
ICAgICBsb25ncmVwciA9IE5vbmUKLSAgICBlbHNlOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShleGNpbmZvLCBFeGNlcHRpb25JbmZvKToKLSAgICAgICAgICAgIG91dGNvbWUgPSAiZmFpbGVk
IgotICAgICAgICAgICAgbG9uZ3JlcHIgPSBleGNpbmZvCi0gICAgICAgIGVsaWYgZXhjaW5mby5l
cnJpc2luc3RhbmNlKHNraXAuRXhjZXB0aW9uKToKLSAgICAgICAgICAgIG91dGNvbWUgPSAic2tp
cHBlZCIKLSAgICAgICAgICAgIHIgPSBleGNpbmZvLl9nZXRyZXByY3Jhc2goKQotICAgICAgICAg
ICAgbG9uZ3JlcHIgPSAoc3RyKHIucGF0aCksIHIubGluZW5vLCByLm1lc3NhZ2UpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBvdXRjb21lID0gImZhaWxlZCIKLSAgICAgICAgICAgIGlmIGNh
bGwud2hlbiA9PSAiY2FsbCI6Ci0gICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBpdGVtLnJlcHJf
ZmFpbHVyZShleGNpbmZvKQotICAgICAgICAgICAgZWxzZTogICMgZXhjZXB0aW9uIGluIHNldHVw
IG9yIHRlYXJkb3duCi0gICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBpdGVtLl9yZXByX2ZhaWx1
cmVfcHkoCi0gICAgICAgICAgICAgICAgICAgIGV4Y2luZm8sIHN0eWxlPWl0ZW0uY29uZmlnLm9w
dGlvbi50YnN0eWxlCi0gICAgICAgICAgICAgICAgKQotICAgIGZvciByd2hlbiwga2V5LCBjb250
ZW50IGluIGl0ZW0uX3JlcG9ydF9zZWN0aW9uczoKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCgi
Q2FwdHVyZWQgJXMgJXMiICUgKGtleSwgcndoZW4pLCBjb250ZW50KSkKLSAgICByZXR1cm4gVGVz
dFJlcG9ydCgKLSAgICAgICAgaXRlbS5ub2RlaWQsCi0gICAgICAgIGl0ZW0ubG9jYXRpb24sCi0g
ICAgICAgIGtleXdvcmRzLAotICAgICAgICBvdXRjb21lLAotICAgICAgICBsb25ncmVwciwKLSAg
ICAgICAgd2hlbiwKLSAgICAgICAgc2VjdGlvbnMsCi0gICAgICAgIGR1cmF0aW9uLAotICAgICAg
ICB1c2VyX3Byb3BlcnRpZXM9aXRlbS51c2VyX3Byb3BlcnRpZXMsCi0gICAgKQotCi0KLWNsYXNz
IFRlc3RSZXBvcnQoQmFzZVJlcG9ydCk6Ci0gICAgIiIiIEJhc2ljIHRlc3QgcmVwb3J0IG9iamVj
dCAoYWxzbyB1c2VkIGZvciBzZXR1cCBhbmQgdGVhcmRvd24gY2FsbHMgaWYKLSAgICB0aGV5IGZh
aWwpLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKAotICAgICAgICBzZWxmLAotICAgICAg
ICBub2RlaWQsCi0gICAgICAgIGxvY2F0aW9uLAotICAgICAgICBrZXl3b3JkcywKLSAgICAgICAg
b3V0Y29tZSwKLSAgICAgICAgbG9uZ3JlcHIsCi0gICAgICAgIHdoZW4sCi0gICAgICAgIHNlY3Rp
b25zPSgpLAotICAgICAgICBkdXJhdGlvbj0wLAotICAgICAgICB1c2VyX3Byb3BlcnRpZXM9KCks
Ci0gICAgICAgICoqZXh0cmEKLSAgICApOgotICAgICAgICAjOiBub3JtYWxpemVkIGNvbGxlY3Rp
b24gbm9kZSBpZAotICAgICAgICBzZWxmLm5vZGVpZCA9IG5vZGVpZAotCi0gICAgICAgICM6IGEg
KGZpbGVzeXN0ZW1wYXRoLCBsaW5lbm8sIGRvbWFpbmluZm8pIHR1cGxlIGluZGljYXRpbmcgdGhl
Ci0gICAgICAgICM6IGFjdHVhbCBsb2NhdGlvbiBvZiBhIHRlc3QgaXRlbSAtIGl0IG1pZ2h0IGJl
IGRpZmZlcmVudCBmcm9tIHRoZQotICAgICAgICAjOiBjb2xsZWN0ZWQgb25lIGUuZy4gaWYgYSBt
ZXRob2QgaXMgaW5oZXJpdGVkIGZyb20gYSBkaWZmZXJlbnQgbW9kdWxlLgotICAgICAgICBzZWxm
LmxvY2F0aW9uID0gbG9jYXRpb24KLQotICAgICAgICAjOiBhIG5hbWUgLT4gdmFsdWUgZGljdGlv
bmFyeSBjb250YWluaW5nIGFsbCBrZXl3b3JkcyBhbmQKLSAgICAgICAgIzogbWFya2VycyBhc3Nv
Y2lhdGVkIHdpdGggYSB0ZXN0IGludm9jYXRpb24uCi0gICAgICAgIHNlbGYua2V5d29yZHMgPSBr
ZXl3b3JkcwotCi0gICAgICAgICM6IHRlc3Qgb3V0Y29tZSwgYWx3YXlzIG9uZSBvZiAicGFzc2Vk
IiwgImZhaWxlZCIsICJza2lwcGVkIi4KLSAgICAgICAgc2VsZi5vdXRjb21lID0gb3V0Y29tZQot
Ci0gICAgICAgICM6IE5vbmUgb3IgYSBmYWlsdXJlIHJlcHJlc2VudGF0aW9uLgotICAgICAgICBz
ZWxmLmxvbmdyZXByID0gbG9uZ3JlcHIKLQotICAgICAgICAjOiBvbmUgb2YgJ3NldHVwJywgJ2Nh
bGwnLCAndGVhcmRvd24nIHRvIGluZGljYXRlIHJ1bnRlc3QgcGhhc2UuCi0gICAgICAgIHNlbGYu
d2hlbiA9IHdoZW4KLQotICAgICAgICAjOiB1c2VyIHByb3BlcnRpZXMgaXMgYSBsaXN0IG9mIHR1
cGxlcyAobmFtZSwgdmFsdWUpIHRoYXQgaG9sZHMgdXNlcgotICAgICAgICAjOiBkZWZpbmVkIHBy
b3BlcnRpZXMgb2YgdGhlIHRlc3QKLSAgICAgICAgc2VsZi51c2VyX3Byb3BlcnRpZXMgPSB1c2Vy
X3Byb3BlcnRpZXMKLQotICAgICAgICAjOiBsaXN0IG9mIHBhaXJzIGBgKHN0ciwgc3RyKWBgIG9m
IGV4dHJhIGluZm9ybWF0aW9uIHdoaWNoIG5lZWRzIHRvCi0gICAgICAgICM6IG1hcnNoYWxsYWJs
ZS4gVXNlZCBieSBweXRlc3QgdG8gYWRkIGNhcHR1cmVkIHRleHQKLSAgICAgICAgIzogZnJvbSBg
YHN0ZG91dGBgIGFuZCBgYHN0ZGVycmBgLCBidXQgbWF5IGJlIHVzZWQgYnkgb3RoZXIgcGx1Z2lu
cwotICAgICAgICAjOiB0byBhZGQgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIHRvIHJlcG9ydHMuCi0g
ICAgICAgIHNlbGYuc2VjdGlvbnMgPSBsaXN0KHNlY3Rpb25zKQotCi0gICAgICAgICM6IHRpbWUg
aXQgdG9vayB0byBydW4ganVzdCB0aGUgdGVzdAotICAgICAgICBzZWxmLmR1cmF0aW9uID0gZHVy
YXRpb24KLQotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShleHRyYSkKLQotICAgIGRlZiBf
X3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8VGVzdFJlcG9ydCAlciB3aGVuPSVyIG91
dGNvbWU9JXI+IiAlICgKLSAgICAgICAgICAgIHNlbGYubm9kZWlkLCBzZWxmLndoZW4sIHNlbGYu
b3V0Y29tZQorICAgIGRlZiByZXN1bHQoc2VsZikgLT4gVFJlc3VsdDoKKyAgICAgICAgaWYgc2Vs
Zi5leGNpbmZvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3Io
Inshcn0gaGFzIG5vIHZhbGlkIHJlc3VsdCIuZm9ybWF0KHNlbGYpKQorICAgICAgICAjIFRoZSBj
YXN0IGlzIHNhZmUgYmVjYXVzZSBhbiBleGNlcHRpb24gd2Fzbid0IHJhaXNlZCwgaGVuY2UKKyAg
ICAgICAgIyBfcmVzdWx0IGhhcyB0aGUgZXhwZWN0ZWQgZnVuY3Rpb24gcmV0dXJuIHR5cGUgKHdo
aWNoIG1heSBiZQorICAgICAgICAjICBOb25lLCB0aGF0J3Mgd2h5IGEgY2FzdCBhbmQgbm90IGFu
IGFzc2VydCkuCisgICAgICAgIHJldHVybiBjYXN0KFRSZXN1bHQsIHNlbGYuX3Jlc3VsdCkKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2NhbGwoCisgICAgICAgIGNscywKKyAgICAg
ICAgZnVuYzogIkNhbGxhYmxlW1tdLCBUUmVzdWx0XSIsCisgICAgICAgIHdoZW46ICJMaXRlcmFs
Wydjb2xsZWN0JywgJ3NldHVwJywgJ2NhbGwnLCAndGVhcmRvd24nXSIsCisgICAgICAgIHJlcmFp
c2U6ICJPcHRpb25hbFtVbmlvbltUeXBlW0Jhc2VFeGNlcHRpb25dLCBUdXBsZVtUeXBlW0Jhc2VF
eGNlcHRpb25dLCAuLi5dXV0iID0gTm9uZSwKKyAgICApIC0+ICJDYWxsSW5mb1tUUmVzdWx0XSI6
CisgICAgICAgIGV4Y2luZm8gPSBOb25lCisgICAgICAgIHN0YXJ0ID0gdGltaW5nLnRpbWUoKQor
ICAgICAgICBwcmVjaXNlX3N0YXJ0ID0gdGltaW5nLnBlcmZfY291bnRlcigpCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMoKSAgIyB0eXBlOiBPcHRpb25hbFtUUmVzdWx0
XQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGV4Y2luZm8gPSBF
eGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCisgICAgICAgICAgICBpZiByZXJhaXNlIGlzIG5v
dCBOb25lIGFuZCBpc2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIHJlcmFpc2UpOgorICAgICAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgICMgdXNlIHRo
ZSBwZXJmIGNvdW50ZXIKKyAgICAgICAgcHJlY2lzZV9zdG9wID0gdGltaW5nLnBlcmZfY291bnRl
cigpCisgICAgICAgIGR1cmF0aW9uID0gcHJlY2lzZV9zdG9wIC0gcHJlY2lzZV9zdGFydAorICAg
ICAgICBzdG9wID0gdGltaW5nLnRpbWUoKQorICAgICAgICByZXR1cm4gY2xzKAorICAgICAgICAg
ICAgc3RhcnQ9c3RhcnQsCisgICAgICAgICAgICBzdG9wPXN0b3AsCisgICAgICAgICAgICBkdXJh
dGlvbj1kdXJhdGlvbiwKKyAgICAgICAgICAgIHdoZW49d2hlbiwKKyAgICAgICAgICAgIHJlc3Vs
dD1yZXN1bHQsCisgICAgICAgICAgICBleGNpbmZvPWV4Y2luZm8sCiAgICAgICAgICkKIAorICAg
IGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIGlmIHNlbGYuZXhjaW5mbyBpcyBO
b25lOgorICAgICAgICAgICAgcmV0dXJuICI8Q2FsbEluZm8gd2hlbj17IXJ9IHJlc3VsdDogeyFy
fT4iLmZvcm1hdChzZWxmLndoZW4sIHNlbGYuX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuICI8Q2Fs
bEluZm8gd2hlbj17IXJ9IGV4Y2luZm89eyFyfT4iLmZvcm1hdChzZWxmLndoZW4sIHNlbGYuZXhj
aW5mbykKIAotY2xhc3MgVGVhcmRvd25FcnJvclJlcG9ydChCYXNlUmVwb3J0KToKLSAgICBvdXRj
b21lID0gImZhaWxlZCIKLSAgICB3aGVuID0gInRlYXJkb3duIgogCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvbmdyZXByLCAqKmV4dHJhKToKLSAgICAgICAgc2VsZi5sb25ncmVwciA9IGxvbmdy
ZXByCi0gICAgICAgIHNlbGYuc2VjdGlvbnMgPSBbXQotICAgICAgICBzZWxmLl9fZGljdF9fLnVw
ZGF0ZShleHRyYSkKK2RlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW06IEl0ZW0sIGNh
bGw6IENhbGxJbmZvW05vbmVdKSAtPiBUZXN0UmVwb3J0OgorICAgIHJldHVybiBUZXN0UmVwb3J0
LmZyb21faXRlbV9hbmRfY2FsbChpdGVtLCBjYWxsKQogCiAKLWRlZiBweXRlc3RfbWFrZV9jb2xs
ZWN0X3JlcG9ydChjb2xsZWN0b3IpOgotICAgIGNhbGwgPSBDYWxsSW5mbyhsYW1iZGE6IGxpc3Qo
Y29sbGVjdG9yLmNvbGxlY3QoKSksICJjb2xsZWN0IikKLSAgICBsb25ncmVwciA9IE5vbmUKK2Rl
ZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3I6IENvbGxlY3RvcikgLT4gQ29s
bGVjdFJlcG9ydDoKKyAgICBjYWxsID0gQ2FsbEluZm8uZnJvbV9jYWxsKGxhbWJkYTogbGlzdChj
b2xsZWN0b3IuY29sbGVjdCgpKSwgImNvbGxlY3QiKQorICAgIGxvbmdyZXByID0gTm9uZSAgIyB0
eXBlOiBVbmlvbltOb25lLCBUdXBsZVtzdHIsIGludCwgc3RyXSwgc3RyLCBUZXJtaW5hbFJlcHJd
CiAgICAgaWYgbm90IGNhbGwuZXhjaW5mbzoKLSAgICAgICAgb3V0Y29tZSA9ICJwYXNzZWQiCisg
ICAgICAgIG91dGNvbWUgPSAicGFzc2VkIiAgIyB0eXBlOiBMaXRlcmFsWyJwYXNzZWQiLCAic2tp
cHBlZCIsICJmYWlsZWQiXQogICAgIGVsc2U6Ci0gICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQg
bm9zZQotCi0gICAgICAgIHNraXBfZXhjZXB0aW9ucyA9IChTa2lwcGVkLCkgKyBub3NlLmdldF9z
a2lwX2V4Y2VwdGlvbnMoKQotICAgICAgICBpZiBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZShz
a2lwX2V4Y2VwdGlvbnMpOgorICAgICAgICBza2lwX2V4Y2VwdGlvbnMgPSBbU2tpcHBlZF0KKyAg
ICAgICAgdW5pdHRlc3QgPSBzeXMubW9kdWxlcy5nZXQoInVuaXR0ZXN0IikKKyAgICAgICAgaWYg
dW5pdHRlc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNl
IHVuaXR0ZXN0IGlzIGxvYWRlZCBkeW5hbWljYWxseS4KKyAgICAgICAgICAgIHNraXBfZXhjZXB0
aW9ucy5hcHBlbmQodW5pdHRlc3QuU2tpcFRlc3QpICAjIHR5cGU6IGlnbm9yZQorICAgICAgICBp
ZiBpc2luc3RhbmNlKGNhbGwuZXhjaW5mby52YWx1ZSwgdHVwbGUoc2tpcF9leGNlcHRpb25zKSk6
CiAgICAgICAgICAgICBvdXRjb21lID0gInNraXBwZWQiCi0gICAgICAgICAgICByID0gY29sbGVj
dG9yLl9yZXByX2ZhaWx1cmVfcHkoY2FsbC5leGNpbmZvLCAibGluZSIpLnJlcHJjcmFzaAorICAg
ICAgICAgICAgcl8gPSBjb2xsZWN0b3IuX3JlcHJfZmFpbHVyZV9weShjYWxsLmV4Y2luZm8sICJs
aW5lIikKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJfLCBFeGNlcHRpb25DaGFpblJl
cHIpLCByZXByKHJfKQorICAgICAgICAgICAgciA9IHJfLnJlcHJjcmFzaAorICAgICAgICAgICAg
YXNzZXJ0IHIKICAgICAgICAgICAgIGxvbmdyZXByID0gKHN0cihyLnBhdGgpLCByLmxpbmVubywg
ci5tZXNzYWdlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3V0Y29tZSA9ICJmYWlsZWQi
CiAgICAgICAgICAgICBlcnJvcmluZm8gPSBjb2xsZWN0b3IucmVwcl9mYWlsdXJlKGNhbGwuZXhj
aW5mbykKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGVycm9yaW5mbywgInRvdGVybWluYWwi
KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShlcnJvcmluZm8sIHN0cikKICAg
ICAgICAgICAgICAgICBlcnJvcmluZm8gPSBDb2xsZWN0RXJyb3JSZXByKGVycm9yaW5mbykKICAg
ICAgICAgICAgIGxvbmdyZXByID0gZXJyb3JpbmZvCi0gICAgcmVwID0gQ29sbGVjdFJlcG9ydCgK
LSAgICAgICAgY29sbGVjdG9yLm5vZGVpZCwgb3V0Y29tZSwgbG9uZ3JlcHIsIGdldGF0dHIoY2Fs
bCwgInJlc3VsdCIsIE5vbmUpCi0gICAgKQotICAgIHJlcC5jYWxsID0gY2FsbCAgIyBzZWUgY29s
bGVjdF9vbmVfbm9kZQorICAgIHJlc3VsdCA9IGNhbGwucmVzdWx0IGlmIG5vdCBjYWxsLmV4Y2lu
Zm8gZWxzZSBOb25lCisgICAgcmVwID0gQ29sbGVjdFJlcG9ydChjb2xsZWN0b3Iubm9kZWlkLCBv
dXRjb21lLCBsb25ncmVwciwgcmVzdWx0KQorICAgIHJlcC5jYWxsID0gY2FsbCAgIyB0eXBlOiBp
Z25vcmUgIyBzZWUgY29sbGVjdF9vbmVfbm9kZQogICAgIHJldHVybiByZXAKIAogCi1jbGFzcyBD
b2xsZWN0UmVwb3J0KEJhc2VSZXBvcnQpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGVp
ZCwgb3V0Y29tZSwgbG9uZ3JlcHIsIHJlc3VsdCwgc2VjdGlvbnM9KCksICoqZXh0cmEpOgotICAg
ICAgICBzZWxmLm5vZGVpZCA9IG5vZGVpZAotICAgICAgICBzZWxmLm91dGNvbWUgPSBvdXRjb21l
Ci0gICAgICAgIHNlbGYubG9uZ3JlcHIgPSBsb25ncmVwcgotICAgICAgICBzZWxmLnJlc3VsdCA9
IHJlc3VsdCBvciBbXQotICAgICAgICBzZWxmLnNlY3Rpb25zID0gbGlzdChzZWN0aW9ucykKLSAg
ICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZXh0cmEpCi0KLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbG9jYXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5mc3BhdGgsIE5vbmUsIHNl
bGYuZnNwYXRoKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxD
b2xsZWN0UmVwb3J0ICVyIGxlbnJlc3VsdD0lcyBvdXRjb21lPSVyPiIgJSAoCi0gICAgICAgICAg
ICBzZWxmLm5vZGVpZCwgbGVuKHNlbGYucmVzdWx0KSwgc2VsZi5vdXRjb21lCi0gICAgICAgICkK
LQotCi1jbGFzcyBDb2xsZWN0RXJyb3JSZXByKFRlcm1pbmFsUmVwcik6Ci0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbXNnKToKLSAgICAgICAgc2VsZi5sb25ncmVwciA9IG1zZwotCi0gICAgZGVm
IHRvdGVybWluYWwoc2VsZiwgb3V0KToKLSAgICAgICAgb3V0LmxpbmUoc2VsZi5sb25ncmVwciwg
cmVkPVRydWUpCi0KLQotY2xhc3MgU2V0dXBTdGF0ZShvYmplY3QpOgotICAgICIiIiBzaGFyZWQg
c3RhdGUgZm9yIHNldHRpbmcgdXAvdGVhcmluZyBkb3duIHRlc3QgaXRlbXMgb3IgY29sbGVjdG9y
cy4gIiIiCitjbGFzcyBTZXR1cFN0YXRlOgorICAgICIiIlNoYXJlZCBzdGF0ZSBmb3Igc2V0dGlu
ZyB1cC90ZWFyaW5nIGRvd24gdGVzdCBpdGVtcyBvciBjb2xsZWN0b3JzLiIiIgogCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0YWNrID0gW10KLSAgICAgICAgc2VsZi5f
ZmluYWxpemVycyA9IHt9Ci0KLSAgICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplciwg
Y29saXRlbSk6Ci0gICAgICAgICIiIiBhdHRhY2ggYSBmaW5hbGl6ZXIgdG8gdGhlIGdpdmVuIGNv
bGl0ZW0uCi0gICAgICAgIGlmIGNvbGl0ZW0gaXMgTm9uZSwgdGhpcyB3aWxsIGFkZCBhIGZpbmFs
aXplciB0aGF0Ci0gICAgICAgIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIHRlYXJkb3duX2FsbCgp
LgotICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5zdGFjayA9IFtdICAjIHR5cGU6IExpc3RbTm9k
ZV0KKyAgICAgICAgc2VsZi5fZmluYWxpemVycyA9IHt9ICAjIHR5cGU6IERpY3RbTm9kZSwgTGlz
dFtDYWxsYWJsZVtbXSwgb2JqZWN0XV1dCisKKyAgICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZp
bmFsaXplcjogQ2FsbGFibGVbW10sIG9iamVjdF0sIGNvbGl0ZW0pIC0+IE5vbmU6CisgICAgICAg
ICIiIkF0dGFjaCBhIGZpbmFsaXplciB0byB0aGUgZ2l2ZW4gY29saXRlbS4iIiIKICAgICAgICAg
YXNzZXJ0IGNvbGl0ZW0gYW5kIG5vdCBpc2luc3RhbmNlKGNvbGl0ZW0sIHR1cGxlKQogICAgICAg
ICBhc3NlcnQgY2FsbGFibGUoZmluYWxpemVyKQogICAgICAgICAjIGFzc2VydCBjb2xpdGVtIGlu
IHNlbGYuc3RhY2sgICMgc29tZSB1bml0IHRlc3RzIGRvbid0IHNldHVwIHN0YWNrIDovCkBAIC00
OTEsNzkgKzM4NSw3NiBAQCBjbGFzcyBTZXR1cFN0YXRlKG9iamVjdCk6CiAgICAgICAgIGNvbGl0
ZW0gPSBzZWxmLnN0YWNrLnBvcCgpCiAgICAgICAgIHNlbGYuX3RlYXJkb3duX3dpdGhfZmluYWxp
emF0aW9uKGNvbGl0ZW0pCiAKLSAgICBkZWYgX2NhbGxmaW5hbGl6ZXJzKHNlbGYsIGNvbGl0ZW0p
OgorICAgIGRlZiBfY2FsbGZpbmFsaXplcnMoc2VsZiwgY29saXRlbSkgLT4gTm9uZToKICAgICAg
ICAgZmluYWxpemVycyA9IHNlbGYuX2ZpbmFsaXplcnMucG9wKGNvbGl0ZW0sIE5vbmUpCiAgICAg
ICAgIGV4YyA9IE5vbmUKICAgICAgICAgd2hpbGUgZmluYWxpemVyczoKICAgICAgICAgICAgIGZp
biA9IGZpbmFsaXplcnMucG9wKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBm
aW4oKQotICAgICAgICAgICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKKyAgICAgICAgICAgIGV4Y2Vw
dCBURVNUX09VVENPTUUgYXMgZToKICAgICAgICAgICAgICAgICAjIFhYWCBPbmx5IGZpcnN0IGV4
Y2VwdGlvbiB3aWxsIGJlIHNlZW4gYnkgdXNlciwKICAgICAgICAgICAgICAgICAjICAgICBpZGVh
bGx5IGFsbCBzaG91bGQgYmUgcmVwb3J0ZWQuCiAgICAgICAgICAgICAgICAgaWYgZXhjIGlzIE5v
bmU6Ci0gICAgICAgICAgICAgICAgICAgIGV4YyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAg
ICAgICAgICAgIGV4YyA9IGUKICAgICAgICAgaWYgZXhjOgotICAgICAgICAgICAgcHkuYnVpbHRp
bi5fcmVyYWlzZSgqZXhjKQorICAgICAgICAgICAgcmFpc2UgZXhjCiAKLSAgICBkZWYgX3RlYXJk
b3duX3dpdGhfZmluYWxpemF0aW9uKHNlbGYsIGNvbGl0ZW0pOgorICAgIGRlZiBfdGVhcmRvd25f
d2l0aF9maW5hbGl6YXRpb24oc2VsZiwgY29saXRlbSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5f
Y2FsbGZpbmFsaXplcnMoY29saXRlbSkKLSAgICAgICAgaWYgaGFzYXR0cihjb2xpdGVtLCAidGVh
cmRvd24iKToKLSAgICAgICAgICAgIGNvbGl0ZW0udGVhcmRvd24oKQorICAgICAgICBjb2xpdGVt
LnRlYXJkb3duKCkKICAgICAgICAgZm9yIGNvbGl0ZW0gaW4gc2VsZi5fZmluYWxpemVyczoKLSAg
ICAgICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICAgICAgY29saXRlbSBpcyBOb25lIG9yIGNv
bGl0ZW0gaW4gc2VsZi5zdGFjayBvciBpc2luc3RhbmNlKGNvbGl0ZW0sIHR1cGxlKQotICAgICAg
ICAgICAgKQorICAgICAgICAgICAgYXNzZXJ0IGNvbGl0ZW0gaW4gc2VsZi5zdGFjawogCi0gICAg
ZGVmIHRlYXJkb3duX2FsbChzZWxmKToKKyAgICBkZWYgdGVhcmRvd25fYWxsKHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIHdoaWxlIHNlbGYuc3RhY2s6CiAgICAgICAgICAgICBzZWxmLl9wb3BfYW5k
X3RlYXJkb3duKCkKICAgICAgICAgZm9yIGtleSBpbiBsaXN0KHNlbGYuX2ZpbmFsaXplcnMpOgog
ICAgICAgICAgICAgc2VsZi5fdGVhcmRvd25fd2l0aF9maW5hbGl6YXRpb24oa2V5KQogICAgICAg
ICBhc3NlcnQgbm90IHNlbGYuX2ZpbmFsaXplcnMKIAotICAgIGRlZiB0ZWFyZG93bl9leGFjdChz
ZWxmLCBpdGVtLCBuZXh0aXRlbSk6CisgICAgZGVmIHRlYXJkb3duX2V4YWN0KHNlbGYsIGl0ZW0s
IG5leHRpdGVtKSAtPiBOb25lOgogICAgICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IG5leHRpdGVt
IGFuZCBuZXh0aXRlbS5saXN0Y2hhaW4oKSBvciBbXQogICAgICAgICBzZWxmLl90ZWFyZG93bl90
b3dhcmRzKG5lZWRlZF9jb2xsZWN0b3JzKQogCi0gICAgZGVmIF90ZWFyZG93bl90b3dhcmRzKHNl
bGYsIG5lZWRlZF9jb2xsZWN0b3JzKToKKyAgICBkZWYgX3RlYXJkb3duX3Rvd2FyZHMoc2VsZiwg
bmVlZGVkX2NvbGxlY3RvcnMpIC0+IE5vbmU6CiAgICAgICAgIGV4YyA9IE5vbmUKICAgICAgICAg
d2hpbGUgc2VsZi5zdGFjazoKLSAgICAgICAgICAgIGlmIHNlbGYuc3RhY2sgPT0gbmVlZGVkX2Nv
bGxlY3RvcnNbOmxlbihzZWxmLnN0YWNrKV06CisgICAgICAgICAgICBpZiBzZWxmLnN0YWNrID09
IG5lZWRlZF9jb2xsZWN0b3JzWzogbGVuKHNlbGYuc3RhY2spXToKICAgICAgICAgICAgICAgICBi
cmVhawogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX3BvcF9hbmRfdGVh
cmRvd24oKQotICAgICAgICAgICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKKyAgICAgICAgICAgIGV4
Y2VwdCBURVNUX09VVENPTUUgYXMgZToKICAgICAgICAgICAgICAgICAjIFhYWCBPbmx5IGZpcnN0
IGV4Y2VwdGlvbiB3aWxsIGJlIHNlZW4gYnkgdXNlciwKICAgICAgICAgICAgICAgICAjICAgICBp
ZGVhbGx5IGFsbCBzaG91bGQgYmUgcmVwb3J0ZWQuCiAgICAgICAgICAgICAgICAgaWYgZXhjIGlz
IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGV4YyA9IHN5cy5leGNfaW5mbygpCisgICAgICAg
ICAgICAgICAgICAgIGV4YyA9IGUKICAgICAgICAgaWYgZXhjOgotICAgICAgICAgICAgcHkuYnVp
bHRpbi5fcmVyYWlzZSgqZXhjKQorICAgICAgICAgICAgcmFpc2UgZXhjCiAKLSAgICBkZWYgcHJl
cGFyZShzZWxmLCBjb2xpdGVtKToKLSAgICAgICAgIiIiIHNldHVwIG9iamVjdHMgYWxvbmcgdGhl
IGNvbGxlY3RvciBjaGFpbiB0byB0aGUgdGVzdC1tZXRob2QKLSAgICAgICAgICAgIGFuZCB0ZWFy
ZG93biBwcmV2aW91c2x5IHNldHVwIG9iamVjdHMuIiIiCi0gICAgICAgIG5lZWRlZF9jb2xsZWN0
b3JzID0gY29saXRlbS5saXN0Y2hhaW4oKQotICAgICAgICBzZWxmLl90ZWFyZG93bl90b3dhcmRz
KG5lZWRlZF9jb2xsZWN0b3JzKQorICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbGl0ZW0pIC0+IE5v
bmU6CisgICAgICAgICIiIlNldHVwIG9iamVjdHMgYWxvbmcgdGhlIGNvbGxlY3RvciBjaGFpbiB0
byB0aGUgdGVzdC1tZXRob2QuIiIiCiAKLSAgICAgICAgIyBjaGVjayBpZiB0aGUgbGFzdCBjb2xs
ZWN0aW9uIG5vZGUgaGFzIHJhaXNlZCBhbiBlcnJvcgorICAgICAgICAjIENoZWNrIGlmIHRoZSBs
YXN0IGNvbGxlY3Rpb24gbm9kZSBoYXMgcmFpc2VkIGFuIGVycm9yLgogICAgICAgICBmb3IgY29s
IGluIHNlbGYuc3RhY2s6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKGNvbCwgIl9wcmVwYXJlX2V4
YyIpOgotICAgICAgICAgICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoKmNvbC5fcHJlcGFyZV9l
eGMpCi0gICAgICAgIGZvciBjb2wgaW4gbmVlZGVkX2NvbGxlY3RvcnNbbGVuKHNlbGYuc3RhY2sp
Ol06CisgICAgICAgICAgICAgICAgZXhjID0gY29sLl9wcmVwYXJlX2V4YyAgIyB0eXBlOiBpZ25v
cmVbYXR0ci1kZWZpbmVkXQorICAgICAgICAgICAgICAgIHJhaXNlIGV4YworCisgICAgICAgIG5l
ZWRlZF9jb2xsZWN0b3JzID0gY29saXRlbS5saXN0Y2hhaW4oKQorICAgICAgICBmb3IgY29sIGlu
IG5lZWRlZF9jb2xsZWN0b3JzW2xlbihzZWxmLnN0YWNrKSA6XToKICAgICAgICAgICAgIHNlbGYu
c3RhY2suYXBwZW5kKGNvbCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjb2wu
c2V0dXAoKQotICAgICAgICAgICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgICAgICAg
ICBjb2wuX3ByZXBhcmVfZXhjID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgICAgICByYWlz
ZQorICAgICAgICAgICAgZXhjZXB0IFRFU1RfT1VUQ09NRSBhcyBlOgorICAgICAgICAgICAgICAg
IGNvbC5fcHJlcGFyZV9leGMgPSBlICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAg
ICAgICAgICAgICAgcmFpc2UgZQogCiAKLWRlZiBjb2xsZWN0X29uZV9ub2RlKGNvbGxlY3Rvcik6
CitkZWYgY29sbGVjdF9vbmVfbm9kZShjb2xsZWN0b3I6IENvbGxlY3RvcikgLT4gQ29sbGVjdFJl
cG9ydDoKICAgICBpaG9vayA9IGNvbGxlY3Rvci5paG9vawogICAgIGlob29rLnB5dGVzdF9jb2xs
ZWN0c3RhcnQoY29sbGVjdG9yPWNvbGxlY3RvcikKLSAgICByZXAgPSBpaG9vay5weXRlc3RfbWFr
ZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3I9Y29sbGVjdG9yKQorICAgIHJlcCA9IGlob29rLnB5
dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcj1jb2xsZWN0b3IpICAjIHR5cGU6IENv
bGxlY3RSZXBvcnQKICAgICBjYWxsID0gcmVwLl9fZGljdF9fLnBvcCgiY2FsbCIsIE5vbmUpCiAg
ICAgaWYgY2FsbCBhbmQgY2hlY2tfaW50ZXJhY3RpdmVfZXhjZXB0aW9uKGNhbGwsIHJlcCk6CiAg
ICAgICAgIGlob29rLnB5dGVzdF9leGNlcHRpb25faW50ZXJhY3Qobm9kZT1jb2xsZWN0b3IsIGNh
bGw9Y2FsbCwgcmVwb3J0PXJlcCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L3NldHVwb25seS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVwb25seS5weQppbmRl
eCA4MTI0MGQ5ZDA1NWUuLjQ0YTEwOTRjMGQyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3Qvc2V0dXBvbmx5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVw
b25seS5weQpAQCAtMSwxMCArMSwxNyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorZnJvbSB0eXBpbmcgaW1wb3J0IEdl
bmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQg
VW5pb24KIAogaW1wb3J0IHB5dGVzdAotaW1wb3J0IHN5cworZnJvbSBfcHl0ZXN0Ll9pby5zYWZl
cmVwciBpbXBvcnQgc2FmZXJlcHIKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZwor
ZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5jb25maWcu
YXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZp
eHR1cmVEZWYKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgU3ViUmVxdWVzdAogCiAKLWRl
ZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6
IFBhcnNlcikgLT4gTm9uZToKICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZGVidWdjb25m
aWciKQogICAgIGdyb3VwLmFkZG9wdGlvbigKICAgICAgICAgIi0tc2V0dXBvbmx5IiwKQEAgLTIx
LDM3ICsyOCwzOSBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogCiAKIEBweXRlc3Qu
aG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0
dXJlZGVmLCByZXF1ZXN0KToKK2RlZiBweXRlc3RfZml4dHVyZV9zZXR1cCgKKyAgICBmaXh0dXJl
ZGVmOiBGaXh0dXJlRGVmW29iamVjdF0sIHJlcXVlc3Q6IFN1YlJlcXVlc3QKKykgLT4gR2VuZXJh
dG9yW05vbmUsIE5vbmUsIE5vbmVdOgogICAgIHlpZWxkCi0gICAgY29uZmlnID0gcmVxdWVzdC5j
b25maWcKLSAgICBpZiBjb25maWcub3B0aW9uLnNldHVwc2hvdzoKKyAgICBpZiByZXF1ZXN0LmNv
bmZpZy5vcHRpb24uc2V0dXBzaG93OgogICAgICAgICBpZiBoYXNhdHRyKHJlcXVlc3QsICJwYXJh
bSIpOgogICAgICAgICAgICAgIyBTYXZlIHRoZSBmaXh0dXJlIHBhcmFtZXRlciBzbyAuX3Nob3df
Zml4dHVyZV9hY3Rpb24oKSBjYW4KICAgICAgICAgICAgICMgZGlzcGxheSBpdCBub3cgYW5kIGR1
cmluZyB0aGUgdGVhcmRvd24gKGluIC5maW5pc2goKSkuCiAgICAgICAgICAgICBpZiBmaXh0dXJl
ZGVmLmlkczoKICAgICAgICAgICAgICAgICBpZiBjYWxsYWJsZShmaXh0dXJlZGVmLmlkcyk6Ci0g
ICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuY2FjaGVkX3BhcmFtID0gZml4dHVyZWRlZi5p
ZHMocmVxdWVzdC5wYXJhbSkKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBmaXh0dXJlZGVm
LmlkcyhyZXF1ZXN0LnBhcmFtKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIGZpeHR1cmVkZWYuY2FjaGVkX3BhcmFtID0gZml4dHVyZWRlZi5pZHNbcmVxdWVzdC5w
YXJhbV9pbmRleF0KKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBmaXh0dXJlZGVmLmlkc1ty
ZXF1ZXN0LnBhcmFtX2luZGV4XQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBm
aXh0dXJlZGVmLmNhY2hlZF9wYXJhbSA9IHJlcXVlc3QucGFyYW0KKyAgICAgICAgICAgICAgICBw
YXJhbSA9IHJlcXVlc3QucGFyYW0KKyAgICAgICAgICAgIGZpeHR1cmVkZWYuY2FjaGVkX3BhcmFt
ID0gcGFyYW0gICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KICAgICAgICAgX3Nob3dfZml4
dHVyZV9hY3Rpb24oZml4dHVyZWRlZiwgIlNFVFVQIikKIAogCi1kZWYgcHl0ZXN0X2ZpeHR1cmVf
cG9zdF9maW5hbGl6ZXIoZml4dHVyZWRlZik6Ci0gICAgaWYgaGFzYXR0cihmaXh0dXJlZGVmLCAi
Y2FjaGVkX3Jlc3VsdCIpOgorZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1
cmVkZWY6IEZpeHR1cmVEZWZbb2JqZWN0XSkgLT4gTm9uZToKKyAgICBpZiBmaXh0dXJlZGVmLmNh
Y2hlZF9yZXN1bHQgaXMgbm90IE5vbmU6CiAgICAgICAgIGNvbmZpZyA9IGZpeHR1cmVkZWYuX2Zp
eHR1cmVtYW5hZ2VyLmNvbmZpZwogICAgICAgICBpZiBjb25maWcub3B0aW9uLnNldHVwc2hvdzoK
ICAgICAgICAgICAgIF9zaG93X2ZpeHR1cmVfYWN0aW9uKGZpeHR1cmVkZWYsICJURUFSRE9XTiIp
CiAgICAgICAgICAgICBpZiBoYXNhdHRyKGZpeHR1cmVkZWYsICJjYWNoZWRfcGFyYW0iKToKLSAg
ICAgICAgICAgICAgICBkZWwgZml4dHVyZWRlZi5jYWNoZWRfcGFyYW0KKyAgICAgICAgICAgICAg
ICBkZWwgZml4dHVyZWRlZi5jYWNoZWRfcGFyYW0gICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5l
ZF0KIAogCi1kZWYgX3Nob3dfZml4dHVyZV9hY3Rpb24oZml4dHVyZWRlZiwgbXNnKToKK2RlZiBf
c2hvd19maXh0dXJlX2FjdGlvbihmaXh0dXJlZGVmOiBGaXh0dXJlRGVmW29iamVjdF0sIG1zZzog
c3RyKSAtPiBOb25lOgogICAgIGNvbmZpZyA9IGZpeHR1cmVkZWYuX2ZpeHR1cmVtYW5hZ2VyLmNv
bmZpZwogICAgIGNhcG1hbiA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigiY2FwdHVy
ZW1hbmFnZXIiKQogICAgIGlmIGNhcG1hbjoKLSAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4uc3Vz
cGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgIGNhcG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0
dXJlKCkKIAogICAgIHR3ID0gY29uZmlnLmdldF90ZXJtaW5hbF93cml0ZXIoKQogICAgIHR3Lmxp
bmUoKQpAQCAtNzAsMTUgKzc5LDE2IEBAIGRlZiBfc2hvd19maXh0dXJlX2FjdGlvbihmaXh0dXJl
ZGVmLCBtc2cpOgogICAgICAgICAgICAgdHcud3JpdGUoIiAoZml4dHVyZXMgdXNlZDoge30pIi5m
b3JtYXQoIiwgIi5qb2luKGRlcHMpKSkKIAogICAgIGlmIGhhc2F0dHIoZml4dHVyZWRlZiwgImNh
Y2hlZF9wYXJhbSIpOgotICAgICAgICB0dy53cml0ZSgiW3t9XSIuZm9ybWF0KGZpeHR1cmVkZWYu
Y2FjaGVkX3BhcmFtKSkKKyAgICAgICAgdHcud3JpdGUoIlt7fV0iLmZvcm1hdChzYWZlcmVwcihm
aXh0dXJlZGVmLmNhY2hlZF9wYXJhbSwgbWF4c2l6ZT00MikpKSAgIyB0eXBlOiBpZ25vcmVbYXR0
ci1kZWZpbmVkXQorCisgICAgdHcuZmx1c2goKQogCiAgICAgaWYgY2FwbWFuOgogICAgICAgICBj
YXBtYW4ucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShv
dXQpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQogCiAKIEBweXRlc3QuaG9va2ltcGwo
dHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6CitkZWYgcHl0
ZXN0X2NtZGxpbmVfbWFpbihjb25maWc6IENvbmZpZykgLT4gT3B0aW9uYWxbVW5pb25baW50LCBF
eGl0Q29kZV1dOgogICAgIGlmIGNvbmZpZy5vcHRpb24uc2V0dXBvbmx5OgogICAgICAgICBjb25m
aWcub3B0aW9uLnNldHVwc2hvdyA9IFRydWUKKyAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2V0dXBwbGFuLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3Qvc2V0dXBwbGFuLnB5CmluZGV4IDIzZjRmOTdlNmQ5Ny4uOWJhODFjY2FmMGE0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9zZXR1cHBsYW4ucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3Qvc2V0dXBwbGFuLnB5CkBAIC0xLDkgKzEsMTUgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
K2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAK
IGltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJvbSBf
cHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5jb25maWcuYXJncGFy
c2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZpeHR1cmVE
ZWYKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgU3ViUmVxdWVzdAogCiAKLWRlZiBweXRl
c3RfYWRkb3B0aW9uKHBhcnNlcik6CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNl
cikgLT4gTm9uZToKICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZGVidWdjb25maWciKQog
ICAgIGdyb3VwLmFkZG9wdGlvbigKICAgICAgICAgIi0tc2V0dXBwbGFuIiwKQEAgLTE1LDE1ICsy
MSwyMCBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogCiAKIEBweXRlc3QuaG9va2lt
cGwodHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCBy
ZXF1ZXN0KToKK2RlZiBweXRlc3RfZml4dHVyZV9zZXR1cCgKKyAgICBmaXh0dXJlZGVmOiBGaXh0
dXJlRGVmW29iamVjdF0sIHJlcXVlc3Q6IFN1YlJlcXVlc3QKKykgLT4gT3B0aW9uYWxbb2JqZWN0
XToKICAgICAjIFdpbGwgcmV0dXJuIGEgZHVtbXkgZml4dHVyZSBpZiB0aGUgc2V0dXBvbmx5IG9w
dGlvbiBpcyBwcm92aWRlZC4KICAgICBpZiByZXF1ZXN0LmNvbmZpZy5vcHRpb24uc2V0dXBwbGFu
OgotICAgICAgICBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQgPSAoTm9uZSwgTm9uZSwgTm9uZSkK
KyAgICAgICAgbXlfY2FjaGVfa2V5ID0gZml4dHVyZWRlZi5jYWNoZV9rZXkocmVxdWVzdCkKKyAg
ICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKE5vbmUsIG15X2NhY2hlX2tleSwgTm9u
ZSkKICAgICAgICAgcmV0dXJuIGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdAorICAgIHJldHVybiBO
b25lCiAKIAogQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9jbWRs
aW5lX21haW4oY29uZmlnKToKK2RlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZzogQ29uZmln
KSAtPiBPcHRpb25hbFtVbmlvbltpbnQsIEV4aXRDb2RlXV06CiAgICAgaWYgY29uZmlnLm9wdGlv
bi5zZXR1cHBsYW46CiAgICAgICAgIGNvbmZpZy5vcHRpb24uc2V0dXBvbmx5ID0gVHJ1ZQogICAg
ICAgICBjb25maWcub3B0aW9uLnNldHVwc2hvdyA9IFRydWUKKyAgICByZXR1cm4gTm9uZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2tpcHBpbmcucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvX3B5dGVzdC9za2lwcGluZy5weQppbmRleCBhMzQ4ZDU0ODRjZGIuLmM1YjRmZjM5ZTg1
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2tpcHBpbmcucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2tpcHBpbmcucHkKQEAgLTEsMTkgKzEsMzkgQEAKLSIi
IiBzdXBwb3J0IGZvciBza2lwL3hmYWlsIGZ1bmN0aW9ucyBhbmQgbWFya2Vycy4gIiIiCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCi0KKyIiIlN1cHBvcnQgZm9yIHNraXAveGZhaWwgZnVuY3Rpb25zIGFuZCBtYXJrZXJzLiIi
IgoraW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJh
Y2sKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRp
b25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisKK2ltcG9ydCBhdHRyCisKK2Zyb20gX3B5
dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IENvbmZpZwogZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va2ltcGwKLWZyb20gX3B5
dGVzdC5tYXJrLmV2YWx1YXRlIGltcG9ydCBNYXJrRXZhbHVhdG9yCi1mcm9tIF9weXRlc3Qub3V0
Y29tZXMgaW1wb3J0IGZhaWwsIHNraXAsIHhmYWlsCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3Bh
cnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0ZXN0Lm1hcmsuc3RydWN0dXJlcyBpbXBvcnQg
TWFyaworZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCitmcm9tIF9weXRlc3Qub3V0Y29t
ZXMgaW1wb3J0IGZhaWwKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgc2tpcAorZnJvbSBf
cHl0ZXN0Lm91dGNvbWVzIGltcG9ydCB4ZmFpbAorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0
IEJhc2VSZXBvcnQKK2Zyb20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0IENhbGxJbmZvCitmcm9tIF9w
eXRlc3Quc3RvcmUgaW1wb3J0IFN0b3JlS2V5CisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJv
bSB0eXBpbmcgaW1wb3J0IFR5cGUKIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgor
ZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAg
PSBwYXJzZXIuZ2V0Z3JvdXAoImdlbmVyYWwiKQogICAgIGdyb3VwLmFkZG9wdGlvbigKICAgICAg
ICAgIi0tcnVueGZhaWwiLAogICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICBk
ZXN0PSJydW54ZmFpbCIsCiAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgIGhlbHA9InJ1
biB0ZXN0cyBldmVuIGlmIHRoZXkgYXJlIG1hcmtlZCB4ZmFpbCIsCisgICAgICAgIGhlbHA9InJl
cG9ydCB0aGUgcmVzdWx0cyBvZiB4ZmFpbCB0ZXN0cyBhcyBpZiB0aGV5IHdlcmUgbm90IG1hcmtl
ZCIsCiAgICAgKQogCiAgICAgcGFyc2VyLmFkZGluaSgKQEAgLTI1LDcgKzQ1LDcgQEAgZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICApCiAKIAotZGVmIHB5dGVzdF9jb25maWd1cmUo
Y29uZmlnKToKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgog
ICAgIGlmIGNvbmZpZy5vcHRpb24ucnVueGZhaWw6CiAgICAgICAgICMgeWF5IGEgaGFjawogICAg
ICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0zNiw3ICs1Niw3IEBAIGRlZiBweXRlc3RfY29uZmlndXJl
KGNvbmZpZyk6CiAgICAgICAgIGRlZiBub3AoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAg
IHBhc3MKIAotICAgICAgICBub3AuRXhjZXB0aW9uID0geGZhaWwuRXhjZXB0aW9uCisgICAgICAg
IG5vcC5FeGNlcHRpb24gPSB4ZmFpbC5FeGNlcHRpb24gICMgdHlwZTogaWdub3JlW2F0dHItZGVm
aW5lZF0KICAgICAgICAgc2V0YXR0cihweXRlc3QsICJ4ZmFpbCIsIG5vcCkKIAogICAgIGNvbmZp
Zy5hZGRpbml2YWx1ZV9saW5lKApAQCAtNDcsMjQ3ICs2NywyNTAgQEAgZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKToKICAgICApCiAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCiAgICAg
ICAgICJtYXJrZXJzIiwKLSAgICAgICAgInNraXBpZihjb25kaXRpb24pOiBza2lwIHRoZSBnaXZl
biB0ZXN0IGZ1bmN0aW9uIGlmIGV2YWwoY29uZGl0aW9uKSAiCi0gICAgICAgICJyZXN1bHRzIGlu
IGEgVHJ1ZSB2YWx1ZS4gIEV2YWx1YXRpb24gaGFwcGVucyB3aXRoaW4gdGhlICIKLSAgICAgICAg
Im1vZHVsZSBnbG9iYWwgY29udGV4dC4gRXhhbXBsZTogc2tpcGlmKCdzeXMucGxhdGZvcm0gPT0g
XCJ3aW4zMlwiJykgIgotICAgICAgICAic2tpcHMgdGhlIHRlc3QgaWYgd2UgYXJlIG9uIHRoZSB3
aW4zMiBwbGF0Zm9ybS4gc2VlICIKLSAgICAgICAgImh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9z
a2lwcGluZy5odG1sIiwKKyAgICAgICAgInNraXBpZihjb25kaXRpb24sIC4uLiwgKiwgcmVhc29u
PS4uLik6ICIKKyAgICAgICAgInNraXAgdGhlIGdpdmVuIHRlc3QgZnVuY3Rpb24gaWYgYW55IG9m
IHRoZSBjb25kaXRpb25zIGV2YWx1YXRlIHRvIFRydWUuICIKKyAgICAgICAgIkV4YW1wbGU6IHNr
aXBpZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykgc2tpcHMgdGhlIHRlc3QgaWYgd2UgYXJlIG9u
IHRoZSB3aW4zMiBwbGF0Zm9ybS4gIgorICAgICAgICAiU2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRlc3QtbWFyay1za2lwaWYiLAogICAgICkK
ICAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgKICAgICAgICAgIm1hcmtlcnMiLAotICAgICAg
ICAieGZhaWwoY29uZGl0aW9uLCByZWFzb249Tm9uZSwgcnVuPVRydWUsIHJhaXNlcz1Ob25lLCBz
dHJpY3Q9RmFsc2UpOiAiCi0gICAgICAgICJtYXJrIHRoZSB0ZXN0IGZ1bmN0aW9uIGFzIGFuIGV4
cGVjdGVkIGZhaWx1cmUgaWYgZXZhbChjb25kaXRpb24pICIKLSAgICAgICAgImhhcyBhIFRydWUg
dmFsdWUuIE9wdGlvbmFsbHkgc3BlY2lmeSBhIHJlYXNvbiBmb3IgYmV0dGVyIHJlcG9ydGluZyAi
CisgICAgICAgICJ4ZmFpbChjb25kaXRpb24sIC4uLiwgKiwgcmVhc29uPS4uLiwgcnVuPVRydWUs
IHJhaXNlcz1Ob25lLCBzdHJpY3Q9eGZhaWxfc3RyaWN0KTogIgorICAgICAgICAibWFyayB0aGUg
dGVzdCBmdW5jdGlvbiBhcyBhbiBleHBlY3RlZCBmYWlsdXJlIGlmIGFueSBvZiB0aGUgY29uZGl0
aW9ucyAiCisgICAgICAgICJldmFsdWF0ZSB0byBUcnVlLiBPcHRpb25hbGx5IHNwZWNpZnkgYSBy
ZWFzb24gZm9yIGJldHRlciByZXBvcnRpbmcgIgogICAgICAgICAiYW5kIHJ1bj1GYWxzZSBpZiB5
b3UgZG9uJ3QgZXZlbiB3YW50IHRvIGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb24uICIKICAgICAg
ICAgIklmIG9ubHkgc3BlY2lmaWMgZXhjZXB0aW9uKHMpIGFyZSBleHBlY3RlZCwgeW91IGNhbiBs
aXN0IHRoZW0gaW4gIgogICAgICAgICAicmFpc2VzLCBhbmQgaWYgdGhlIHRlc3QgZmFpbHMgaW4g
b3RoZXIgd2F5cywgaXQgd2lsbCBiZSByZXBvcnRlZCBhcyAiCi0gICAgICAgICJhIHRydWUgZmFp
bHVyZS4gU2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9za2lwcGluZy5odG1sIiwKKyAgICAg
ICAgImEgdHJ1ZSBmYWlsdXJlLiBTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxl
L3JlZmVyZW5jZS5odG1sI3B5dGVzdC1tYXJrLXhmYWlsIiwKICAgICApCiAKIAotQGhvb2tpbXBs
KHRyeWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6Ci0gICAgIyBD
aGVjayBpZiBza2lwIG9yIHNraXBpZiBhcmUgc3BlY2lmaWVkIGFzIHB5dGVzdCBtYXJrcwotICAg
IGl0ZW0uX3NraXBwZWRfYnlfbWFyayA9IEZhbHNlCi0gICAgZXZhbF9za2lwaWYgPSBNYXJrRXZh
bHVhdG9yKGl0ZW0sICJza2lwaWYiKQotICAgIGlmIGV2YWxfc2tpcGlmLmlzdHJ1ZSgpOgotICAg
ICAgICBpdGVtLl9za2lwcGVkX2J5X21hcmsgPSBUcnVlCi0gICAgICAgIHNraXAoZXZhbF9za2lw
aWYuZ2V0ZXhwbGFuYXRpb24oKSkKLQotICAgIGZvciBza2lwX2luZm8gaW4gaXRlbS5pdGVyX21h
cmtlcnMobmFtZT0ic2tpcCIpOgotICAgICAgICBpdGVtLl9za2lwcGVkX2J5X21hcmsgPSBUcnVl
Ci0gICAgICAgIGlmICJyZWFzb24iIGluIHNraXBfaW5mby5rd2FyZ3M6Ci0gICAgICAgICAgICBz
a2lwKHNraXBfaW5mby5rd2FyZ3NbInJlYXNvbiJdKQotICAgICAgICBlbGlmIHNraXBfaW5mby5h
cmdzOgotICAgICAgICAgICAgc2tpcChza2lwX2luZm8uYXJnc1swXSkKK2RlZiBldmFsdWF0ZV9j
b25kaXRpb24oaXRlbTogSXRlbSwgbWFyazogTWFyaywgY29uZGl0aW9uOiBvYmplY3QpIC0+IFR1
cGxlW2Jvb2wsIHN0cl06CisgICAgIiIiRXZhbHVhdGUgYSBzaW5nbGUgc2tpcGlmL3hmYWlsIGNv
bmRpdGlvbi4KKworICAgIElmIGFuIG9sZC1zdHlsZSBzdHJpbmcgY29uZGl0aW9uIGlzIGdpdmVu
LCBpdCBpcyBldmFsKCknZCwgb3RoZXJ3aXNlIHRoZQorICAgIGNvbmRpdGlvbiBpcyBib29sKCkn
ZC4gSWYgdGhpcyBmYWlscywgYW4gYXBwcm9wcmlhdGVseSBmb3JtYXR0ZWQgcHl0ZXN0LmZhaWwK
KyAgICBpcyByYWlzZWQuCisKKyAgICBSZXR1cm5zIChyZXN1bHQsIHJlYXNvbikuIFRoZSByZWFz
b24gaXMgb25seSByZWxldmFudCBpZiB0aGUgcmVzdWx0IGlzIFRydWUuCisgICAgIiIiCisgICAg
IyBTdHJpbmcgY29uZGl0aW9uLgorICAgIGlmIGlzaW5zdGFuY2UoY29uZGl0aW9uLCBzdHIpOgor
ICAgICAgICBnbG9iYWxzXyA9IHsKKyAgICAgICAgICAgICJvcyI6IG9zLAorICAgICAgICAgICAg
InN5cyI6IHN5cywKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6IHBsYXRmb3JtLAorICAgICAgICAg
ICAgImNvbmZpZyI6IGl0ZW0uY29uZmlnLAorICAgICAgICB9CisgICAgICAgIGlmIGhhc2F0dHIo
aXRlbSwgIm9iaiIpOgorICAgICAgICAgICAgZ2xvYmFsc18udXBkYXRlKGl0ZW0ub2JqLl9fZ2xv
YmFsc19fKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAgICB0cnk6CisgICAg
ICAgICAgICBmaWxlbmFtZSA9ICI8e30gY29uZGl0aW9uPiIuZm9ybWF0KG1hcmsubmFtZSkKKyAg
ICAgICAgICAgIGNvbmRpdGlvbl9jb2RlID0gY29tcGlsZShjb25kaXRpb24sIGZpbGVuYW1lLCAi
ZXZhbCIpCisgICAgICAgICAgICByZXN1bHQgPSBldmFsKGNvbmRpdGlvbl9jb2RlLCBnbG9iYWxz
XykKKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIG1zZ2xp
bmVzID0gWworICAgICAgICAgICAgICAgICJFcnJvciBldmFsdWF0aW5nICVyIGNvbmRpdGlvbiIg
JSBtYXJrLm5hbWUsCisgICAgICAgICAgICAgICAgIiAgICAiICsgY29uZGl0aW9uLAorICAgICAg
ICAgICAgICAgICIgICAgIiArICIgIiAqIChleGMub2Zmc2V0IG9yIDApICsgIl4iLAorICAgICAg
ICAgICAgICAgICJTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgiLAorICAgICAgICAgICAgXQor
ICAgICAgICAgICAgZmFpbCgiXG4iLmpvaW4obXNnbGluZXMpLCBweXRyYWNlPUZhbHNlKQorICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIG1zZ2xpbmVzID0gWwor
ICAgICAgICAgICAgICAgICJFcnJvciBldmFsdWF0aW5nICVyIGNvbmRpdGlvbiIgJSBtYXJrLm5h
bWUsCisgICAgICAgICAgICAgICAgIiAgICAiICsgY29uZGl0aW9uLAorICAgICAgICAgICAgICAg
ICp0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUoZXhjKSwgZXhjKSwKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIGZhaWwoIlxuIi5qb2luKG1zZ2xpbmVzKSwgcHl0cmFjZT1G
YWxzZSkKKworICAgICMgQm9vbGVhbiBjb25kaXRpb24uCisgICAgZWxzZToKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgcmVzdWx0ID0gYm9vbChjb25kaXRpb24pCisgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgbXNnbGluZXMgPSBbCisgICAgICAgICAgICAg
ICAgIkVycm9yIGV2YWx1YXRpbmcgJXIgY29uZGl0aW9uIGFzIGEgYm9vbGVhbiIgJSBtYXJrLm5h
bWUsCisgICAgICAgICAgICAgICAgKnRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlw
ZShleGMpLCBleGMpLAorICAgICAgICAgICAgXQorICAgICAgICAgICAgZmFpbCgiXG4iLmpvaW4o
bXNnbGluZXMpLCBweXRyYWNlPUZhbHNlKQorCisgICAgcmVhc29uID0gbWFyay5rd2FyZ3MuZ2V0
KCJyZWFzb24iLCBOb25lKQorICAgIGlmIHJlYXNvbiBpcyBOb25lOgorICAgICAgICBpZiBpc2lu
c3RhbmNlKGNvbmRpdGlvbiwgc3RyKToKKyAgICAgICAgICAgIHJlYXNvbiA9ICJjb25kaXRpb246
ICIgKyBjb25kaXRpb24KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNraXAoInVuY29uZGl0
aW9uYWwgc2tpcCIpCisgICAgICAgICAgICAjIFhYWCBiZXR0ZXIgYmUgY2hlY2tlZCBhdCBjb2xs
ZWN0aW9uIHRpbWUKKyAgICAgICAgICAgIG1zZyA9ICgKKyAgICAgICAgICAgICAgICAiRXJyb3Ig
ZXZhbHVhdGluZyAlcjogIiAlIG1hcmsubmFtZQorICAgICAgICAgICAgICAgICsgInlvdSBuZWVk
IHRvIHNwZWNpZnkgcmVhc29uPVNUUklORyB3aGVuIHVzaW5nIGJvb2xlYW5zIGFzIGNvbmRpdGlv
bnMuIgorICAgICAgICAgICAgKQorICAgICAgICAgICAgZmFpbChtc2csIHB5dHJhY2U9RmFsc2Up
CiAKLSAgICBpdGVtLl9ldmFseGZhaWwgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICJ4ZmFpbCIpCi0g
ICAgY2hlY2tfeGZhaWxfbm9fcnVuKGl0ZW0pCisgICAgcmV0dXJuIHJlc3VsdCwgcmVhc29uCiAK
IAotQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHB5
ZnVuY2l0ZW0pOgotICAgIGNoZWNrX3hmYWlsX25vX3J1bihweWZ1bmNpdGVtKQotICAgIG91dGNv
bWUgPSB5aWVsZAotICAgIHBhc3NlZCA9IG91dGNvbWUuZXhjaW5mbyBpcyBOb25lCi0gICAgaWYg
cGFzc2VkOgotICAgICAgICBjaGVja19zdHJpY3RfeGZhaWwocHlmdW5jaXRlbSkKK0BhdHRyLnMo
c2xvdHM9VHJ1ZSwgZnJvemVuPVRydWUpCitjbGFzcyBTa2lwOgorICAgICIiIlRoZSByZXN1bHQg
b2YgZXZhbHVhdGVfc2tpcF9tYXJrcygpLiIiIgorCisgICAgcmVhc29uID0gYXR0ci5pYih0eXBl
PXN0cikKKworCitkZWYgZXZhbHVhdGVfc2tpcF9tYXJrcyhpdGVtOiBJdGVtKSAtPiBPcHRpb25h
bFtTa2lwXToKKyAgICAiIiJFdmFsdWF0ZSBza2lwIGFuZCBza2lwaWYgbWFya3Mgb24gaXRlbSwg
cmV0dXJuaW5nIFNraXAgaWYgdHJpZ2dlcmVkLiIiIgorICAgIGZvciBtYXJrIGluIGl0ZW0uaXRl
cl9tYXJrZXJzKG5hbWU9InNraXBpZiIpOgorICAgICAgICBpZiAiY29uZGl0aW9uIiBub3QgaW4g
bWFyay5rd2FyZ3M6CisgICAgICAgICAgICBjb25kaXRpb25zID0gbWFyay5hcmdzCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBjb25kaXRpb25zID0gKG1hcmsua3dhcmdzWyJjb25kaXRpb24i
XSwpCisKKyAgICAgICAgIyBVbmNvbmRpdGlvbmFsLgorICAgICAgICBpZiBub3QgY29uZGl0aW9u
czoKKyAgICAgICAgICAgIHJlYXNvbiA9IG1hcmsua3dhcmdzLmdldCgicmVhc29uIiwgIiIpCisg
ICAgICAgICAgICByZXR1cm4gU2tpcChyZWFzb24pCisKKyAgICAgICAgIyBJZiBhbnkgb2YgdGhl
IGNvbmRpdGlvbnMgYXJlIHRydWUuCisgICAgICAgIGZvciBjb25kaXRpb24gaW4gY29uZGl0aW9u
czoKKyAgICAgICAgICAgIHJlc3VsdCwgcmVhc29uID0gZXZhbHVhdGVfY29uZGl0aW9uKGl0ZW0s
IG1hcmssIGNvbmRpdGlvbikKKyAgICAgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU2tpcChyZWFzb24pCisKKyAgICBmb3IgbWFyayBpbiBpdGVtLml0ZXJfbWFya2Vy
cyhuYW1lPSJza2lwIik6CisgICAgICAgIGlmICJyZWFzb24iIGluIG1hcmsua3dhcmdzOgorICAg
ICAgICAgICAgcmVhc29uID0gbWFyay5rd2FyZ3NbInJlYXNvbiJdCisgICAgICAgIGVsaWYgbWFy
ay5hcmdzOgorICAgICAgICAgICAgcmVhc29uID0gbWFyay5hcmdzWzBdCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICByZWFzb24gPSAidW5jb25kaXRpb25hbCBza2lwIgorICAgICAgICByZXR1
cm4gU2tpcChyZWFzb24pCisKKyAgICByZXR1cm4gTm9uZQorCisKK0BhdHRyLnMoc2xvdHM9VHJ1
ZSwgZnJvemVuPVRydWUpCitjbGFzcyBYZmFpbDoKKyAgICAiIiJUaGUgcmVzdWx0IG9mIGV2YWx1
YXRlX3hmYWlsX21hcmtzKCkuIiIiCisKKyAgICByZWFzb24gPSBhdHRyLmliKHR5cGU9c3RyKQor
ICAgIHJ1biA9IGF0dHIuaWIodHlwZT1ib29sKQorICAgIHN0cmljdCA9IGF0dHIuaWIodHlwZT1i
b29sKQorICAgIHJhaXNlcyA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFtUdXBsZVsiVHlwZVtCYXNl
RXhjZXB0aW9uXSIsIC4uLl1dKQorCisKK2RlZiBldmFsdWF0ZV94ZmFpbF9tYXJrcyhpdGVtOiBJ
dGVtKSAtPiBPcHRpb25hbFtYZmFpbF06CisgICAgIiIiRXZhbHVhdGUgeGZhaWwgbWFya3Mgb24g
aXRlbSwgcmV0dXJuaW5nIFhmYWlsIGlmIHRyaWdnZXJlZC4iIiIKKyAgICBmb3IgbWFyayBpbiBp
dGVtLml0ZXJfbWFya2VycyhuYW1lPSJ4ZmFpbCIpOgorICAgICAgICBydW4gPSBtYXJrLmt3YXJn
cy5nZXQoInJ1biIsIFRydWUpCisgICAgICAgIHN0cmljdCA9IG1hcmsua3dhcmdzLmdldCgic3Ry
aWN0IiwgaXRlbS5jb25maWcuZ2V0aW5pKCJ4ZmFpbF9zdHJpY3QiKSkKKyAgICAgICAgcmFpc2Vz
ID0gbWFyay5rd2FyZ3MuZ2V0KCJyYWlzZXMiLCBOb25lKQorICAgICAgICBpZiAiY29uZGl0aW9u
IiBub3QgaW4gbWFyay5rd2FyZ3M6CisgICAgICAgICAgICBjb25kaXRpb25zID0gbWFyay5hcmdz
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25kaXRpb25zID0gKG1hcmsua3dhcmdzWyJj
b25kaXRpb24iXSwpCiAKKyAgICAgICAgIyBVbmNvbmRpdGlvbmFsLgorICAgICAgICBpZiBub3Qg
Y29uZGl0aW9uczoKKyAgICAgICAgICAgIHJlYXNvbiA9IG1hcmsua3dhcmdzLmdldCgicmVhc29u
IiwgIiIpCisgICAgICAgICAgICByZXR1cm4gWGZhaWwocmVhc29uLCBydW4sIHN0cmljdCwgcmFp
c2VzKQogCi1kZWYgY2hlY2tfeGZhaWxfbm9fcnVuKGl0ZW0pOgotICAgICIiImNoZWNrIHhmYWls
KHJ1bj1GYWxzZSkiIiIKLSAgICBpZiBub3QgaXRlbS5jb25maWcub3B0aW9uLnJ1bnhmYWlsOgot
ICAgICAgICBldmFseGZhaWwgPSBpdGVtLl9ldmFseGZhaWwKLSAgICAgICAgaWYgZXZhbHhmYWls
LmlzdHJ1ZSgpOgotICAgICAgICAgICAgaWYgbm90IGV2YWx4ZmFpbC5nZXQoInJ1biIsIFRydWUp
OgotICAgICAgICAgICAgICAgIHhmYWlsKCJbTk9UUlVOXSAiICsgZXZhbHhmYWlsLmdldGV4cGxh
bmF0aW9uKCkpCisgICAgICAgICMgSWYgYW55IG9mIHRoZSBjb25kaXRpb25zIGFyZSB0cnVlLgor
ICAgICAgICBmb3IgY29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICByZXN1bHQs
IHJlYXNvbiA9IGV2YWx1YXRlX2NvbmRpdGlvbihpdGVtLCBtYXJrLCBjb25kaXRpb24pCisgICAg
ICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFhmYWlsKHJlYXNvbiwg
cnVuLCBzdHJpY3QsIHJhaXNlcykKIAorICAgIHJldHVybiBOb25lCiAKLWRlZiBjaGVja19zdHJp
Y3RfeGZhaWwocHlmdW5jaXRlbSk6Ci0gICAgIiIiY2hlY2sgeGZhaWwoc3RyaWN0PVRydWUpIGZv
ciB0aGUgZ2l2ZW4gUEFTU0lORyB0ZXN0IiIiCi0gICAgZXZhbHhmYWlsID0gcHlmdW5jaXRlbS5f
ZXZhbHhmYWlsCi0gICAgaWYgZXZhbHhmYWlsLmlzdHJ1ZSgpOgotICAgICAgICBzdHJpY3RfZGVm
YXVsdCA9IHB5ZnVuY2l0ZW0uY29uZmlnLmdldGluaSgieGZhaWxfc3RyaWN0IikKLSAgICAgICAg
aXNfc3RyaWN0X3hmYWlsID0gZXZhbHhmYWlsLmdldCgic3RyaWN0Iiwgc3RyaWN0X2RlZmF1bHQp
Ci0gICAgICAgIGlmIGlzX3N0cmljdF94ZmFpbDoKLSAgICAgICAgICAgIGRlbCBweWZ1bmNpdGVt
Ll9ldmFseGZhaWwKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gZXZhbHhmYWlsLmdldGV4cGxh
bmF0aW9uKCkKLSAgICAgICAgICAgIGZhaWwoIltYUEFTUyhzdHJpY3QpXSAiICsgZXhwbGFuYXRp
b24sIHB5dHJhY2U9RmFsc2UpCisKKyMgV2hldGhlciBza2lwcGVkIGR1ZSB0byBza2lwIG9yIHNr
aXBpZiBtYXJrcy4KK3NraXBwZWRfYnlfbWFya19rZXkgPSBTdG9yZUtleVtib29sXSgpCisjIFNh
dmVzIHRoZSB4ZmFpbCBtYXJrIGV2YWx1YXRpb24uIENhbiBiZSByZWZyZXNoZWQgZHVyaW5nIGNh
bGwgaWYgTm9uZS4KK3hmYWlsZWRfa2V5ID0gU3RvcmVLZXlbT3B0aW9uYWxbWGZhaWxdXSgpCit1
bmV4cGVjdGVkc3VjY2Vzc19rZXkgPSBTdG9yZUtleVtzdHJdKCkKKworCitAaG9va2ltcGwodHJ5
Zmlyc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtOiBJdGVtKSAtPiBOb25l
OgorICAgIHNraXBwZWQgPSBldmFsdWF0ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgaXRlbS5fc3Rv
cmVbc2tpcHBlZF9ieV9tYXJrX2tleV0gPSBza2lwcGVkIGlzIG5vdCBOb25lCisgICAgaWYgc2tp
cHBlZDoKKyAgICAgICAgc2tpcChza2lwcGVkLnJlYXNvbikKKworICAgIGl0ZW0uX3N0b3JlW3hm
YWlsZWRfa2V5XSA9IHhmYWlsZWQgPSBldmFsdWF0ZV94ZmFpbF9tYXJrcyhpdGVtKQorICAgIGlm
IHhmYWlsZWQgYW5kIG5vdCBpdGVtLmNvbmZpZy5vcHRpb24ucnVueGZhaWwgYW5kIG5vdCB4ZmFp
bGVkLnJ1bjoKKyAgICAgICAgeGZhaWwoIltOT1RSVU5dICIgKyB4ZmFpbGVkLnJlYXNvbikKIAog
CiBAaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVw
b3J0KGl0ZW0sIGNhbGwpOgorZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoaXRlbTogSXRlbSkgLT4g
R2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgIHhmYWlsZWQgPSBpdGVtLl9zdG9yZS5n
ZXQoeGZhaWxlZF9rZXksIE5vbmUpCisgICAgaWYgeGZhaWxlZCBpcyBOb25lOgorICAgICAgICBp
dGVtLl9zdG9yZVt4ZmFpbGVkX2tleV0gPSB4ZmFpbGVkID0gZXZhbHVhdGVfeGZhaWxfbWFya3Mo
aXRlbSkKKworICAgIGlmIHhmYWlsZWQgYW5kIG5vdCBpdGVtLmNvbmZpZy5vcHRpb24ucnVueGZh
aWwgYW5kIG5vdCB4ZmFpbGVkLnJ1bjoKKyAgICAgICAgeGZhaWwoIltOT1RSVU5dICIgKyB4ZmFp
bGVkLnJlYXNvbikKKworICAgIHlpZWxkCisKKyAgICAjIFRoZSB0ZXN0IHJ1biBtYXkgaGF2ZSBh
ZGRlZCBhbiB4ZmFpbCBtYXJrIGR5bmFtaWNhbGx5LgorICAgIHhmYWlsZWQgPSBpdGVtLl9zdG9y
ZS5nZXQoeGZhaWxlZF9rZXksIE5vbmUpCisgICAgaWYgeGZhaWxlZCBpcyBOb25lOgorICAgICAg
ICBpdGVtLl9zdG9yZVt4ZmFpbGVkX2tleV0gPSB4ZmFpbGVkID0gZXZhbHVhdGVfeGZhaWxfbWFy
a3MoaXRlbSkKKworCitAaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKK2RlZiBweXRlc3RfcnVu
dGVzdF9tYWtlcmVwb3J0KGl0ZW06IEl0ZW0sIGNhbGw6IENhbGxJbmZvW05vbmVdKToKICAgICBv
dXRjb21lID0geWllbGQKICAgICByZXAgPSBvdXRjb21lLmdldF9yZXN1bHQoKQotICAgIGV2YWx4
ZmFpbCA9IGdldGF0dHIoaXRlbSwgIl9ldmFseGZhaWwiLCBOb25lKQotICAgICMgdW5pdHR0ZXN0
IHNwZWNpYWwgY2FzZSwgc2VlIHNldHRpbmcgb2YgX3VuZXhwZWN0ZWRzdWNjZXNzCi0gICAgaWYg
aGFzYXR0cihpdGVtLCAiX3VuZXhwZWN0ZWRzdWNjZXNzIikgYW5kIHJlcC53aGVuID09ICJjYWxs
IjoKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX2lzX3VuaXR0ZXN0X3VuZXhw
ZWN0ZWRfc3VjY2Vzc19hX2ZhaWx1cmUKLQotICAgICAgICBpZiBpdGVtLl91bmV4cGVjdGVkc3Vj
Y2VzczoKLSAgICAgICAgICAgIHJlcC5sb25ncmVwciA9ICJVbmV4cGVjdGVkIHN1Y2Nlc3M6IHt9
Ii5mb3JtYXQoaXRlbS5fdW5leHBlY3RlZHN1Y2Nlc3MpCisgICAgeGZhaWxlZCA9IGl0ZW0uX3N0
b3JlLmdldCh4ZmFpbGVkX2tleSwgTm9uZSkKKyAgICAjIHVuaXR0ZXN0IHNwZWNpYWwgY2FzZSwg
c2VlIHNldHRpbmcgb2YgdW5leHBlY3RlZHN1Y2Nlc3Nfa2V5CisgICAgaWYgdW5leHBlY3RlZHN1
Y2Nlc3Nfa2V5IGluIGl0ZW0uX3N0b3JlIGFuZCByZXAud2hlbiA9PSAiY2FsbCI6CisgICAgICAg
IHJlYXNvbiA9IGl0ZW0uX3N0b3JlW3VuZXhwZWN0ZWRzdWNjZXNzX2tleV0KKyAgICAgICAgaWYg
cmVhc29uOgorICAgICAgICAgICAgcmVwLmxvbmdyZXByID0gIlVuZXhwZWN0ZWQgc3VjY2Vzczog
e30iLmZvcm1hdChyZWFzb24pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXAubG9uZ3Jl
cHIgPSAiVW5leHBlY3RlZCBzdWNjZXNzIgotICAgICAgICBpZiBfaXNfdW5pdHRlc3RfdW5leHBl
Y3RlZF9zdWNjZXNzX2FfZmFpbHVyZSgpOgotICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAiZmFp
bGVkIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAicGFzc2VkIgot
ICAgICAgICAgICAgcmVwLndhc3hmYWlsID0gcmVwLmxvbmdyZXByCisgICAgICAgIHJlcC5vdXRj
b21lID0gImZhaWxlZCIKICAgICBlbGlmIGl0ZW0uY29uZmlnLm9wdGlvbi5ydW54ZmFpbDoKLSAg
ICAgICAgcGFzcyAgIyBkb24ndCBpbnRlcmVmZXJlCi0gICAgZWxpZiBjYWxsLmV4Y2luZm8gYW5k
IGNhbGwuZXhjaW5mby5lcnJpc2luc3RhbmNlKHhmYWlsLkV4Y2VwdGlvbik6CisgICAgICAgIHBh
c3MgICMgZG9uJ3QgaW50ZXJmZXJlCisgICAgZWxpZiBjYWxsLmV4Y2luZm8gYW5kIGlzaW5zdGFu
Y2UoY2FsbC5leGNpbmZvLnZhbHVlLCB4ZmFpbC5FeGNlcHRpb24pOgorICAgICAgICBhc3NlcnQg
Y2FsbC5leGNpbmZvLnZhbHVlLm1zZyBpcyBub3QgTm9uZQogICAgICAgICByZXAud2FzeGZhaWwg
PSAicmVhc29uOiAiICsgY2FsbC5leGNpbmZvLnZhbHVlLm1zZwogICAgICAgICByZXAub3V0Y29t
ZSA9ICJza2lwcGVkIgotICAgIGVsaWYgZXZhbHhmYWlsIGFuZCBub3QgcmVwLnNraXBwZWQgYW5k
IGV2YWx4ZmFpbC53YXN2YWxpZCgpIGFuZCBldmFseGZhaWwuaXN0cnVlKCk6CisgICAgZWxpZiBu
b3QgcmVwLnNraXBwZWQgYW5kIHhmYWlsZWQ6CiAgICAgICAgIGlmIGNhbGwuZXhjaW5mbzoKLSAg
ICAgICAgICAgIGlmIGV2YWx4ZmFpbC5pbnZhbGlkcmFpc2UoY2FsbC5leGNpbmZvLnZhbHVlKToK
KyAgICAgICAgICAgIHJhaXNlcyA9IHhmYWlsZWQucmFpc2VzCisgICAgICAgICAgICBpZiByYWlz
ZXMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGNhbGwuZXhjaW5mby52YWx1ZSwgcmFp
c2VzKToKICAgICAgICAgICAgICAgICByZXAub3V0Y29tZSA9ICJmYWlsZWQiCiAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgIHJlcC5vdXRjb21lID0gInNraXBwZWQiCi0gICAgICAg
ICAgICAgICAgcmVwLndhc3hmYWlsID0gZXZhbHhmYWlsLmdldGV4cGxhbmF0aW9uKCkKKyAgICAg
ICAgICAgICAgICByZXAud2FzeGZhaWwgPSB4ZmFpbGVkLnJlYXNvbgogICAgICAgICBlbGlmIGNh
bGwud2hlbiA9PSAiY2FsbCI6Ci0gICAgICAgICAgICBzdHJpY3RfZGVmYXVsdCA9IGl0ZW0uY29u
ZmlnLmdldGluaSgieGZhaWxfc3RyaWN0IikKLSAgICAgICAgICAgIGlzX3N0cmljdF94ZmFpbCA9
IGV2YWx4ZmFpbC5nZXQoInN0cmljdCIsIHN0cmljdF9kZWZhdWx0KQotICAgICAgICAgICAgZXhw
bGFuYXRpb24gPSBldmFseGZhaWwuZ2V0ZXhwbGFuYXRpb24oKQotICAgICAgICAgICAgaWYgaXNf
c3RyaWN0X3hmYWlsOgorICAgICAgICAgICAgaWYgeGZhaWxlZC5zdHJpY3Q6CiAgICAgICAgICAg
ICAgICAgcmVwLm91dGNvbWUgPSAiZmFpbGVkIgotICAgICAgICAgICAgICAgIHJlcC5sb25ncmVw
ciA9ICJbWFBBU1Moc3RyaWN0KV0ge30iLmZvcm1hdChleHBsYW5hdGlvbikKKyAgICAgICAgICAg
ICAgICByZXAubG9uZ3JlcHIgPSAiW1hQQVNTKHN0cmljdCldICIgKyB4ZmFpbGVkLnJlYXNvbgog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXAub3V0Y29tZSA9ICJwYXNzZWQi
Ci0gICAgICAgICAgICAgICAgcmVwLndhc3hmYWlsID0gZXhwbGFuYXRpb24KLSAgICBlbGlmIGdl
dGF0dHIoaXRlbSwgIl9za2lwcGVkX2J5X21hcmsiLCBGYWxzZSkgYW5kIHJlcC5za2lwcGVkIGFu
ZCB0eXBlKAotICAgICAgICByZXAubG9uZ3JlcHIKLSAgICApIGlzIHR1cGxlOgotICAgICAgICAj
IHNraXBwZWQgYnkgbWFyay5za2lwaWY7IGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgdGhlIGZhaWx1
cmUKKyAgICAgICAgICAgICAgICByZXAud2FzeGZhaWwgPSB4ZmFpbGVkLnJlYXNvbgorCisgICAg
aWYgKAorICAgICAgICBpdGVtLl9zdG9yZS5nZXQoc2tpcHBlZF9ieV9tYXJrX2tleSwgVHJ1ZSkK
KyAgICAgICAgYW5kIHJlcC5za2lwcGVkCisgICAgICAgIGFuZCB0eXBlKHJlcC5sb25ncmVwcikg
aXMgdHVwbGUKKyAgICApOgorICAgICAgICAjIFNraXBwZWQgYnkgbWFyay5za2lwaWY7IGNoYW5n
ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGZhaWx1cmUKICAgICAgICAgIyB0byBwb2ludCB0byB0aGUg
aXRlbSBkZWZpbml0aW9uLCBvdGhlcndpc2UgaXQgd2lsbCBkaXNwbGF5Ci0gICAgICAgICMgdGhl
IGxvY2F0aW9uIG9mIHdoZXJlIHRoZSBza2lwIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIHdpdGhpbiBw
eXRlc3QKLSAgICAgICAgZmlsZW5hbWUsIGxpbmUsIHJlYXNvbiA9IHJlcC5sb25ncmVwcgotICAg
ICAgICBmaWxlbmFtZSwgbGluZSA9IGl0ZW0ubG9jYXRpb25bOjJdCi0gICAgICAgIHJlcC5sb25n
cmVwciA9IGZpbGVuYW1lLCBsaW5lLCByZWFzb24KLQorICAgICAgICAjIHRoZSBsb2NhdGlvbiBv
ZiB3aGVyZSB0aGUgc2tpcCBleGNlcHRpb24gd2FzIHJhaXNlZCB3aXRoaW4gcHl0ZXN0LgorICAg
ICAgICBfLCBfLCByZWFzb24gPSByZXAubG9uZ3JlcHIKKyAgICAgICAgZmlsZW5hbWUsIGxpbmUg
PSBpdGVtLnJlcG9ydGluZm8oKVs6Ml0KKyAgICAgICAgYXNzZXJ0IGxpbmUgaXMgbm90IE5vbmUK
KyAgICAgICAgcmVwLmxvbmdyZXByID0gc3RyKGZpbGVuYW1lKSwgbGluZSArIDEsIHJlYXNvbgog
Ci0jIGNhbGxlZCBieSB0ZXJtaW5hbHJlcG9ydGVyIHByb2dyZXNzIHJlcG9ydGluZwogCi0KLWRl
ZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0KToKK2RlZiBweXRlc3RfcmVwb3J0X3Rl
c3RzdGF0dXMocmVwb3J0OiBCYXNlUmVwb3J0KSAtPiBPcHRpb25hbFtUdXBsZVtzdHIsIHN0ciwg
c3RyXV06CiAgICAgaWYgaGFzYXR0cihyZXBvcnQsICJ3YXN4ZmFpbCIpOgogICAgICAgICBpZiBy
ZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAgIHJldHVybiAieGZhaWxlZCIsICJ4IiwgInhmYWls
IgorICAgICAgICAgICAgcmV0dXJuICJ4ZmFpbGVkIiwgIngiLCAiWEZBSUwiCiAgICAgICAgIGVs
aWYgcmVwb3J0LnBhc3NlZDoKLSAgICAgICAgICAgIHJldHVybiAieHBhc3NlZCIsICJYIiwgKCJY
UEFTUyIsIHsieWVsbG93IjogVHJ1ZX0pCi0KLQotIyBjYWxsZWQgYnkgdGhlIHRlcm1pbmFscmVw
b3J0ZXIgaW5zdGFuY2UvcGx1Z2luCi0KLQotZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRl
cm1pbmFscmVwb3J0ZXIpOgotICAgIHRyID0gdGVybWluYWxyZXBvcnRlcgotICAgIGlmIG5vdCB0
ci5yZXBvcnRjaGFyczoKLSAgICAgICAgIyBmb3IgbmFtZSBpbiAieGZhaWxlZCBza2lwcGVkIGZh
aWxlZCB4cGFzc2VkIjoKLSAgICAgICAgIyAgICBpZiBub3QgdHIuc3RhdHMuZ2V0KG5hbWUsIDAp
OgotICAgICAgICAjICAgICAgICB0ci53cml0ZV9saW5lKCJISU5UOiB1c2UgJy1yJyBvcHRpb24g
dG8gc2VlIGV4dHJhICIKLSAgICAgICAgIyAgICAgICAgICAgICAgInN1bW1hcnkgaW5mbyBhYm91
dCB0ZXN0cyIpCi0gICAgICAgICMgICAgICAgIGJyZWFrCi0gICAgICAgIHJldHVybgotCi0gICAg
bGluZXMgPSBbXQotICAgIGZvciBjaGFyIGluIHRyLnJlcG9ydGNoYXJzOgotICAgICAgICBhY3Rp
b24gPSBSRVBPUlRDSEFSX0FDVElPTlMuZ2V0KGNoYXIsIGxhbWJkYSB0ciwgbGluZXM6IE5vbmUp
Ci0gICAgICAgIGFjdGlvbih0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcykKLQotICAgIGlmIGxpbmVz
OgotICAgICAgICB0ci5fdHcuc2VwKCI9IiwgInNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvIikKLSAg
ICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICB0ci5fdHcubGluZShsaW5lKQot
Ci0KLWRlZiBzaG93X3NpbXBsZSh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcywgc3RhdCwgZm9ybWF0
KToKLSAgICBmYWlsZWQgPSB0ZXJtaW5hbHJlcG9ydGVyLnN0YXRzLmdldChzdGF0KQotICAgIGlm
IGZhaWxlZDoKLSAgICAgICAgZm9yIHJlcCBpbiBmYWlsZWQ6Ci0gICAgICAgICAgICBwb3MgPSB0
ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZy5jd2RfcmVsYXRpdmVfbm9kZWlkKHJlcC5ub2RlaWQpCi0g
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoZm9ybWF0ICUgKHBvcywpKQotCi0KLWRlZiBzaG93X3hm
YWlsZWQodGVybWluYWxyZXBvcnRlciwgbGluZXMpOgotICAgIHhmYWlsZWQgPSB0ZXJtaW5hbHJl
cG9ydGVyLnN0YXRzLmdldCgieGZhaWxlZCIpCi0gICAgaWYgeGZhaWxlZDoKLSAgICAgICAgZm9y
IHJlcCBpbiB4ZmFpbGVkOgotICAgICAgICAgICAgcG9zID0gdGVybWluYWxyZXBvcnRlci5jb25m
aWcuY3dkX3JlbGF0aXZlX25vZGVpZChyZXAubm9kZWlkKQotICAgICAgICAgICAgcmVhc29uID0g
cmVwLndhc3hmYWlsCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIlhGQUlMICVzIiAlIChwb3Ms
KSkKLSAgICAgICAgICAgIGlmIHJlYXNvbjoKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
IiAgIiArIHN0cihyZWFzb24pKQotCi0KLWRlZiBzaG93X3hwYXNzZWQodGVybWluYWxyZXBvcnRl
ciwgbGluZXMpOgotICAgIHhwYXNzZWQgPSB0ZXJtaW5hbHJlcG9ydGVyLnN0YXRzLmdldCgieHBh
c3NlZCIpCi0gICAgaWYgeHBhc3NlZDoKLSAgICAgICAgZm9yIHJlcCBpbiB4cGFzc2VkOgotICAg
ICAgICAgICAgcG9zID0gdGVybWluYWxyZXBvcnRlci5jb25maWcuY3dkX3JlbGF0aXZlX25vZGVp
ZChyZXAubm9kZWlkKQotICAgICAgICAgICAgcmVhc29uID0gcmVwLndhc3hmYWlsCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIlhQQVNTICVzICVzIiAlIChwb3MsIHJlYXNvbikpCi0KLQotZGVm
IGZvbGRlZF9za2lwcyhza2lwcGVkKToKLSAgICBkID0ge30KLSAgICBmb3IgZXZlbnQgaW4gc2tp
cHBlZDoKLSAgICAgICAga2V5ID0gZXZlbnQubG9uZ3JlcHIKLSAgICAgICAgYXNzZXJ0IGxlbihr
ZXkpID09IDMsIChldmVudCwga2V5KQotICAgICAgICBrZXl3b3JkcyA9IGdldGF0dHIoZXZlbnQs
ICJrZXl3b3JkcyIsIHt9KQotICAgICAgICAjIGZvbGRpbmcgcmVwb3J0cyB3aXRoIGdsb2JhbCBw
eXRlc3RtYXJrIHZhcmlhYmxlCi0gICAgICAgICMgdGhpcyBpcyB3b3JrYXJvdW5kLCBiZWNhdXNl
IGZvciBub3cgd2UgY2Fubm90IGlkZW50aWZ5IHRoZSBzY29wZSBvZiBhIHNraXAgbWFya2VyCi0g
ICAgICAgICMgVE9ETzogcmV2aXNpdCBhZnRlciBtYXJrcyBzY29wZSB3b3VsZCBiZSBmaXhlZAot
ICAgICAgICB3aGVuID0gZ2V0YXR0cihldmVudCwgIndoZW4iLCBOb25lKQotICAgICAgICBpZiB3
aGVuID09ICJzZXR1cCIgYW5kICJza2lwIiBpbiBrZXl3b3JkcyBhbmQgInB5dGVzdG1hcmsiIG5v
dCBpbiBrZXl3b3JkczoKLSAgICAgICAgICAgIGtleSA9IChrZXlbMF0sIE5vbmUsIGtleVsyXSkK
LSAgICAgICAgZC5zZXRkZWZhdWx0KGtleSwgW10pLmFwcGVuZChldmVudCkKLSAgICB2YWx1ZXMg
PSBbXQotICAgIGZvciBrZXksIGV2ZW50cyBpbiBkLml0ZW1zKCk6Ci0gICAgICAgIHZhbHVlcy5h
cHBlbmQoKGxlbihldmVudHMpLCkgKyBrZXkpCi0gICAgcmV0dXJuIHZhbHVlcwotCi0KLWRlZiBz
aG93X3NraXBwZWQodGVybWluYWxyZXBvcnRlciwgbGluZXMpOgotICAgIHRyID0gdGVybWluYWxy
ZXBvcnRlcgotICAgIHNraXBwZWQgPSB0ci5zdGF0cy5nZXQoInNraXBwZWQiLCBbXSkKLSAgICBp
ZiBza2lwcGVkOgotICAgICAgICAjIGlmIG5vdCB0ci5oYXNvcHQoJ3NraXBwZWQnKToKLSAgICAg
ICAgIyAgICB0ci53cml0ZV9saW5lKAotICAgICAgICAjICAgICAgICAiJWQgc2tpcHBlZCB0ZXN0
cywgc3BlY2lmeSAtcnMgZm9yIG1vcmUgaW5mbyIgJQotICAgICAgICAjICAgICAgICBsZW4oc2tp
cHBlZCkpCi0gICAgICAgICMgICAgcmV0dXJuCi0gICAgICAgIGZza2lwcyA9IGZvbGRlZF9za2lw
cyhza2lwcGVkKQotICAgICAgICBpZiBmc2tpcHM6Ci0gICAgICAgICAgICAjIHRyLndyaXRlX3Nl
cCgiXyIsICJza2lwcGVkIHRlc3Qgc3VtbWFyeSIpCi0gICAgICAgICAgICBmb3IgbnVtLCBmc3Bh
dGgsIGxpbmVubywgcmVhc29uIGluIGZza2lwczoKLSAgICAgICAgICAgICAgICBpZiByZWFzb24u
c3RhcnRzd2l0aCgiU2tpcHBlZDogIik6Ci0gICAgICAgICAgICAgICAgICAgIHJlYXNvbiA9IHJl
YXNvbls5Ol0KLSAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICJTS0lQ
IFslZF0gJXM6JWQ6ICVzIiAlIChudW0sIGZzcGF0aCwgbGluZW5vICsgMSwgcmVhc29uKQotICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCJTS0lQIFslZF0gJXM6ICVzIiAlIChudW0sIGZzcGF0aCwgcmVh
c29uKSkKLQotCi1kZWYgc2hvd2VyKHN0YXQsIGZvcm1hdCk6Ci0KLSAgICBkZWYgc2hvd18odGVy
bWluYWxyZXBvcnRlciwgbGluZXMpOgotICAgICAgICByZXR1cm4gc2hvd19zaW1wbGUodGVybWlu
YWxyZXBvcnRlciwgbGluZXMsIHN0YXQsIGZvcm1hdCkKLQotICAgIHJldHVybiBzaG93XwotCi0K
LVJFUE9SVENIQVJfQUNUSU9OUyA9IHsKLSAgICAieCI6IHNob3dfeGZhaWxlZCwKLSAgICAiWCI6
IHNob3dfeHBhc3NlZCwKLSAgICAiZiI6IHNob3dlcigiZmFpbGVkIiwgIkZBSUwgJXMiKSwKLSAg
ICAiRiI6IHNob3dlcigiZmFpbGVkIiwgIkZBSUwgJXMiKSwKLSAgICAicyI6IHNob3dfc2tpcHBl
ZCwKLSAgICAiUyI6IHNob3dfc2tpcHBlZCwKLSAgICAicCI6IHNob3dlcigicGFzc2VkIiwgIlBB
U1NFRCAlcyIpLAotICAgICJFIjogc2hvd2VyKCJlcnJvciIsICJFUlJPUiAlcyIpLAotfQorICAg
ICAgICAgICAgcmV0dXJuICJ4cGFzc2VkIiwgIlgiLCAiWFBBU1MiCisgICAgcmV0dXJuIE5vbmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3N0ZXB3aXNlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3Qvc3RlcHdpc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi44NWNiZTI5MzE1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvX3B5dGVzdC9zdGVwd2lzZS5weQpAQCAtMCwwICsxLDEyMiBAQAorZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitpbXBvcnQgcHl0ZXN0
Citmcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBD
b25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9t
IF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0
IFRlc3RSZXBvcnQKKworCitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4g
Tm9uZToKKyAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCisgICAgZ3JvdXAu
YWRkb3B0aW9uKAorICAgICAgICAiLS1zdyIsCisgICAgICAgICItLXN0ZXB3aXNlIiwKKyAgICAg
ICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgZGVzdD0ic3RlcHdpc2UiLAorICAgICAg
ICBoZWxwPSJleGl0IG9uIHRlc3QgZmFpbHVyZSBhbmQgY29udGludWUgZnJvbSBsYXN0IGZhaWxp
bmcgdGVzdCBuZXh0IHRpbWUiLAorICAgICkKKyAgICBncm91cC5hZGRvcHRpb24oCisgICAgICAg
ICItLXN0ZXB3aXNlLXNraXAiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAg
ICBkZXN0PSJzdGVwd2lzZV9za2lwIiwKKyAgICAgICAgaGVscD0iaWdub3JlIHRoZSBmaXJzdCBm
YWlsaW5nIHRlc3QgYnV0IHN0b3Agb24gdGhlIG5leHQgZmFpbGluZyB0ZXN0IiwKKyAgICApCisK
KworQHB5dGVzdC5ob29raW1wbAorZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcp
IC0+IE5vbmU6CisgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoU3RlcHdpc2VQbHVn
aW4oY29uZmlnKSwgInN0ZXB3aXNlcGx1Z2luIikKKworCitjbGFzcyBTdGVwd2lzZVBsdWdpbjoK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYuY29uZmlnID0gY29uZmlnCisgICAgICAgIHNlbGYuYWN0aXZlID0gY29uZmlnLmdldHZh
bHVlKCJzdGVwd2lzZSIpCisgICAgICAgIHNlbGYuc2Vzc2lvbiA9IE5vbmUgICMgdHlwZTogT3B0
aW9uYWxbU2Vzc2lvbl0KKyAgICAgICAgc2VsZi5yZXBvcnRfc3RhdHVzID0gIiIKKworICAgICAg
ICBpZiBzZWxmLmFjdGl2ZToKKyAgICAgICAgICAgIGFzc2VydCBjb25maWcuY2FjaGUgaXMgbm90
IE5vbmUKKyAgICAgICAgICAgIHNlbGYubGFzdGZhaWxlZCA9IGNvbmZpZy5jYWNoZS5nZXQoImNh
Y2hlL3N0ZXB3aXNlIiwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuc2tpcCA9IGNvbmZpZy5nZXR2
YWx1ZSgic3RlcHdpc2Vfc2tpcCIpCisKKyAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxm
LCBzZXNzaW9uOiBTZXNzaW9uKSAtPiBOb25lOgorICAgICAgICBzZWxmLnNlc3Npb24gPSBzZXNz
aW9uCisKKyAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoCisgICAgICAgIHNl
bGYsIHNlc3Npb246IFNlc3Npb24sIGNvbmZpZzogQ29uZmlnLCBpdGVtczogTGlzdFtub2Rlcy5J
dGVtXQorICAgICkgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IHNlbGYuYWN0aXZlOgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLmxhc3RmYWlsZWQ6CisgICAgICAgICAg
ICBzZWxmLnJlcG9ydF9zdGF0dXMgPSAibm8gcHJldmlvdXNseSBmYWlsZWQgdGVzdHMsIG5vdCBz
a2lwcGluZy4iCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhbHJlYWR5X3Bhc3NlZCA9
IFtdCisgICAgICAgIGZvdW5kID0gRmFsc2UKKworICAgICAgICAjIE1ha2UgYSBsaXN0IG9mIGFs
bCB0ZXN0cyB0aGF0IGhhdmUgYmVlbiBydW4gYmVmb3JlIHRoZSBsYXN0IGZhaWxpbmcgb25lLgor
ICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGl0ZW0ubm9kZWlkID09
IHNlbGYubGFzdGZhaWxlZDoKKyAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhbHJlYWR5
X3Bhc3NlZC5hcHBlbmQoaXRlbSkKKworICAgICAgICAjIElmIHRoZSBwcmV2aW91c2x5IGZhaWxl
ZCB0ZXN0IHdhcyBub3QgZm91bmQgYW1vbmcgdGhlIHRlc3QgaXRlbXMsCisgICAgICAgICMgZG8g
bm90IHNraXAgYW55IHRlc3RzLgorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICBz
ZWxmLnJlcG9ydF9zdGF0dXMgPSAicHJldmlvdXNseSBmYWlsZWQgdGVzdCBub3QgZm91bmQsIG5v
dCBza2lwcGluZy4iCisgICAgICAgICAgICBhbHJlYWR5X3Bhc3NlZCA9IFtdCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLnJlcG9ydF9zdGF0dXMgPSAic2tpcHBpbmcge30gYWxyZWFk
eSBwYXNzZWQgaXRlbXMuIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgbGVuKGFscmVhZHlfcGFz
c2VkKQorICAgICAgICAgICAgKQorCisgICAgICAgIGZvciBpdGVtIGluIGFscmVhZHlfcGFzc2Vk
OgorICAgICAgICAgICAgaXRlbXMucmVtb3ZlKGl0ZW0pCisKKyAgICAgICAgY29uZmlnLmhvb2su
cHl0ZXN0X2Rlc2VsZWN0ZWQoaXRlbXM9YWxyZWFkeV9wYXNzZWQpCisKKyAgICBkZWYgcHl0ZXN0
X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKKyAg
ICAgICAgaWYgbm90IHNlbGYuYWN0aXZlOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
aWYgcmVwb3J0LmZhaWxlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuc2tpcDoKKyAgICAgICAgICAg
ICAgICAjIFJlbW92ZSB0ZXN0IGZyb20gdGhlIGZhaWxlZCBvbmVzIChpZiBpdCBleGlzdHMpIGFu
ZCB1bnNldCB0aGUgc2tpcCBvcHRpb24KKyAgICAgICAgICAgICAgICAjIHRvIG1ha2Ugc3VyZSB0
aGUgZm9sbG93aW5nIHRlc3RzIHdpbGwgbm90IGJlIHNraXBwZWQuCisgICAgICAgICAgICAgICAg
aWYgcmVwb3J0Lm5vZGVpZCA9PSBzZWxmLmxhc3RmYWlsZWQ6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYubGFzdGZhaWxlZCA9IE5vbmUKKworICAgICAgICAgICAgICAgIHNlbGYuc2tpcCA9IEZh
bHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgTWFyayB0ZXN0IGFzIHRo
ZSBsYXN0IGZhaWxpbmcgYW5kIGludGVycnVwdCB0aGUgdGVzdCBzZXNzaW9uLgorICAgICAgICAg
ICAgICAgIHNlbGYubGFzdGZhaWxlZCA9IHJlcG9ydC5ub2RlaWQKKyAgICAgICAgICAgICAgICBh
c3NlcnQgc2VsZi5zZXNzaW9uIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5zZXNz
aW9uLnNob3VsZHN0b3AgPSAoCisgICAgICAgICAgICAgICAgICAgICJUZXN0IGZhaWxlZCwgY29u
dGludWluZyBmcm9tIHRoaXMgdGVzdCBuZXh0IHJ1bi4iCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHRoZSB0ZXN0IHdhcyBhY3R1YWxseSBydW4g
YW5kIGRpZCBwYXNzLgorICAgICAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gImNhbGwiOgorICAg
ICAgICAgICAgICAgICMgUmVtb3ZlIHRlc3QgZnJvbSB0aGUgZmFpbGVkIG9uZXMsIGlmIGV4aXN0
cy4KKyAgICAgICAgICAgICAgICBpZiByZXBvcnQubm9kZWlkID09IHNlbGYubGFzdGZhaWxlZDoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkID0gTm9uZQorCisgICAgZGVmIHB5
dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZpbmlzaChzZWxmKSAtPiBPcHRpb25hbFtzdHJdOgorICAg
ICAgICBpZiBzZWxmLmFjdGl2ZSBhbmQgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3NlIikg
Pj0gMCBhbmQgc2VsZi5yZXBvcnRfc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuICJzdGVwd2lz
ZTogJXMiICUgc2VsZi5yZXBvcnRfc3RhdHVzCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBk
ZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2VsZiwgc2Vzc2lvbjogU2Vzc2lvbikgLT4gTm9uZToK
KyAgICAgICAgYXNzZXJ0IHNlbGYuY29uZmlnLmNhY2hlIGlzIG5vdCBOb25lCisgICAgICAgIGlm
IHNlbGYuYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5jb25maWcuY2FjaGUuc2V0KCJjYWNoZS9z
dGVwd2lzZSIsIHNlbGYubGFzdGZhaWxlZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMg
Q2xlYXIgdGhlIGxpc3Qgb2YgZmFpbGluZyB0ZXN0cyBpZiB0aGUgcGx1Z2luIGlzIG5vdCBhY3Rp
dmUuCisgICAgICAgICAgICBzZWxmLmNvbmZpZy5jYWNoZS5zZXQoImNhY2hlL3N0ZXB3aXNlIiwg
W10pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9zdG9yZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L3N0b3JlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmJmM2M1ODhmMzZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3Qvc3RvcmUucHkKQEAgLTAsMCArMSwxMjUgQEAKK2Zyb20gdHlwaW5nIGltcG9y
dCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAor
ZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCitm
cm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworCitfX2FsbF9fID0gWyJTdG9yZSIsICJTdG9yZUtl
eSJdCisKKworVCA9IFR5cGVWYXIoIlQiKQorRCA9IFR5cGVWYXIoIkQiKQorCisKK2NsYXNzIFN0
b3JlS2V5KEdlbmVyaWNbVF0pOgorICAgICIiIlN0b3JlS2V5IGlzIGFuIG9iamVjdCB1c2VkIGFz
IGEga2V5IHRvIGEgU3RvcmUuCisKKyAgICBBIFN0b3JlS2V5IGlzIGFzc29jaWF0ZWQgd2l0aCB0
aGUgdHlwZSBUIG9mIHRoZSB2YWx1ZSBvZiB0aGUga2V5LgorCisgICAgQSBTdG9yZUtleSBpcyB1
bmlxdWUgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIGFub3RoZXIga2V5LgorICAgICIiIgorCisg
ICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBTdG9yZToKKyAgICAiIiJTdG9yZSBpcyBhIHR5
cGUtc2FmZSBoZXRlcm9nZW5vdXMgbXV0YWJsZSBtYXBwaW5nIHRoYXQKKyAgICBhbGxvd3Mga2V5
cyBhbmQgdmFsdWUgdHlwZXMgdG8gYmUgZGVmaW5lZCBzZXBhcmF0ZWx5IGZyb20KKyAgICB3aGVy
ZSBpdCAodGhlIFN0b3JlKSBpcyBjcmVhdGVkLgorCisgICAgVXN1YWxseSB5b3Ugd2lsbCBiZSBn
aXZlbiBhbiBvYmplY3Qgd2hpY2ggaGFzIGEgYGBTdG9yZWBgOgorCisgICAgLi4gY29kZS1ibG9j
azo6IHB5dGhvbgorCisgICAgICAgIHN0b3JlOiBTdG9yZSA9IHNvbWVfb2JqZWN0LnN0b3JlCisK
KyAgICBJZiBhIG1vZHVsZSB3YW50cyB0byBzdG9yZSBkYXRhIGluIHRoaXMgU3RvcmUsIGl0IGNy
ZWF0ZXMgU3RvcmVLZXlzCisgICAgZm9yIGl0cyBrZXlzIChhdCB0aGUgbW9kdWxlIGxldmVsKToK
KworICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICBzb21lX3N0cl9rZXkgPSBT
dG9yZUtleVtzdHJdKCkKKyAgICAgICAgc29tZV9ib29sX2tleSA9IFN0b3JlS2V5W2Jvb2xdKCkK
KworICAgIFRvIHN0b3JlIGluZm9ybWF0aW9uOgorCisgICAgLi4gY29kZS1ibG9jazo6IHB5dGhv
bgorCisgICAgICAgICMgVmFsdWUgdHlwZSBtdXN0IG1hdGNoIHRoZSBrZXkuCisgICAgICAgIHN0
b3JlW3NvbWVfc3RyX2tleV0gPSAidmFsdWUiCisgICAgICAgIHN0b3JlW3NvbWVfYm9vbF9rZXld
ID0gVHJ1ZQorCisgICAgVG8gcmV0cmlldmUgdGhlIGluZm9ybWF0aW9uOgorCisgICAgLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgorCisgICAgICAgICMgVGhlIHN0YXRpYyB0eXBlIG9mIHNvbWVfc3Ry
IGlzIHN0ci4KKyAgICAgICAgc29tZV9zdHIgPSBzdG9yZVtzb21lX3N0cl9rZXldCisgICAgICAg
ICMgVGhlIHN0YXRpYyB0eXBlIG9mIHNvbWVfYm9vbCBpcyBib29sLgorICAgICAgICBzb21lX2Jv
b2wgPSBzdG9yZVtzb21lX2Jvb2xfa2V5XQorCisgICAgV2h5IHVzZSB0aGlzPworICAgIC0tLS0t
LS0tLS0tLS0KKworICAgIFByb2JsZW06IG1vZHVsZSBJbnRlcm5hbCBkZWZpbmVzIGFuIG9iamVj
dC4gTW9kdWxlIEV4dGVybmFsLCB3aGljaAorICAgIG1vZHVsZSBJbnRlcm5hbCBkb2Vzbid0IGtu
b3cgYWJvdXQsIHJlY2VpdmVzIHRoZSBvYmplY3QgYW5kIHdhbnRzIHRvCisgICAgYXR0YWNoIGlu
Zm9ybWF0aW9uIHRvIGl0LCB0byBiZSByZXRyaWV2ZWQgbGF0ZXIgZ2l2ZW4gdGhlIG9iamVjdC4K
KworICAgIEJhZCBzb2x1dGlvbiAxOiBNb2R1bGUgRXh0ZXJuYWwgYXNzaWducyBwcml2YXRlIGF0
dHJpYnV0ZXMgZGlyZWN0bHkgb24KKyAgICB0aGUgb2JqZWN0LiBUaGlzIGRvZXNuJ3Qgd29yayB3
ZWxsIGJlY2F1c2UgdGhlIHR5cGUgY2hlY2tlciBkb2Vzbid0CisgICAga25vdyBhYm91dCB0aGVz
ZSBhdHRyaWJ1dGVzIGFuZCBpdCBjb21wbGFpbnMgYWJvdXQgdW5kZWZpbmVkIGF0dHJpYnV0ZXMu
CisKKyAgICBCYWQgc29sdXRpb24gMjogbW9kdWxlIEludGVybmFsIGFkZHMgYSBgYERpY3Rbc3Ry
LCBBbnldYGAgYXR0cmlidXRlIHRvCisgICAgdGhlIG9iamVjdC4gTW9kdWxlIEV4dGVybmFsIHN0
b3JlcyBpdHMgZGF0YSBpbiBwcml2YXRlIGtleXMgb2YgdGhpcyBkaWN0LgorICAgIFRoaXMgZG9l
c24ndCB3b3JrIHdlbGwgYmVjYXVzZSByZXRyaWV2ZWQgdmFsdWVzIGFyZSB1bnR5cGVkLgorCisg
ICAgR29vZCBzb2x1dGlvbjogbW9kdWxlIEludGVybmFsIGFkZHMgYSBgYFN0b3JlYGAgdG8gdGhl
IG9iamVjdC4gTW9kdWxlCisgICAgRXh0ZXJuYWwgbWludHMgU3RvcmVLZXlzIGZvciBpdHMgb3du
IGtleXMuIE1vZHVsZSBFeHRlcm5hbCBzdG9yZXMgYW5kCisgICAgcmV0cmlldmVzIGl0cyBkYXRh
IHVzaW5nIHRoZXNlIGtleXMuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoIl9zdG9yZSIs
KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3N0b3Jl
ID0ge30gICMgdHlwZTogRGljdFtTdG9yZUtleVtBbnldLCBvYmplY3RdCisKKyAgICBkZWYgX19z
ZXRpdGVtX18oc2VsZiwga2V5OiBTdG9yZUtleVtUXSwgdmFsdWU6IFQpIC0+IE5vbmU6CisgICAg
ICAgICIiIlNldCBhIHZhbHVlIGZvciBrZXkuIiIiCisgICAgICAgIHNlbGYuX3N0b3JlW2tleV0g
PSB2YWx1ZQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogU3RvcmVLZXlbVF0pIC0+
IFQ6CisgICAgICAgICIiIkdldCB0aGUgdmFsdWUgZm9yIGtleS4KKworICAgICAgICBSYWlzZXMg
YGBLZXlFcnJvcmBgIGlmIHRoZSBrZXkgd2Fzbid0IHNldCBiZWZvcmUuCisgICAgICAgICIiIgor
ICAgICAgICByZXR1cm4gY2FzdChULCBzZWxmLl9zdG9yZVtrZXldKQorCisgICAgZGVmIGdldChz
ZWxmLCBrZXk6IFN0b3JlS2V5W1RdLCBkZWZhdWx0OiBEKSAtPiBVbmlvbltULCBEXToKKyAgICAg
ICAgIiIiR2V0IHRoZSB2YWx1ZSBmb3Iga2V5LCBvciByZXR1cm4gZGVmYXVsdCBpZiB0aGUga2V5
IHdhc24ndCBzZXQKKyAgICAgICAgYmVmb3JlLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAg
IHJldHVybiBkZWZhdWx0CisKKyAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXk6IFN0b3JlS2V5
W1RdLCBkZWZhdWx0OiBUKSAtPiBUOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIGtl
eSBpZiBhbHJlYWR5IHNldCwgb3RoZXJ3aXNlIHNldCB0aGUgdmFsdWUKKyAgICAgICAgb2Yga2V5
IHRvIGRlZmF1bHQgYW5kIHJldHVybiBkZWZhdWx0LiIiIgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAg
ICAgIHNlbGZba2V5XSA9IGRlZmF1bHQKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAg
ICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5OiBTdG9yZUtleVtUXSkgLT4gTm9uZToKKyAgICAg
ICAgIiIiRGVsZXRlIHRoZSB2YWx1ZSBmb3Iga2V5LgorCisgICAgICAgIFJhaXNlcyBgYEtleUVy
cm9yYGAgaWYgdGhlIGtleSB3YXNuJ3Qgc2V0IGJlZm9yZS4KKyAgICAgICAgIiIiCisgICAgICAg
IGRlbCBzZWxmLl9zdG9yZVtrZXldCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleTog
U3RvcmVLZXlbVF0pIC0+IGJvb2w6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIGtleSB3YXMg
c2V0LiIiIgorICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX3N0b3JlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90ZXJtaW5hbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3Rlcm1pbmFsLnB5CmluZGV4IDljNGVlYzc1MzFhOS4uMzQ5MzNhZDIxODUyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90ZXJtaW5hbC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvX3B5dGVzdC90ZXJtaW5hbC5weQpAQCAtMSw0MyArMSw5MSBAQAotIiIiIHRlcm1pbmFs
IHJlcG9ydGluZyBvZiB0aGUgZnVsbCB0ZXN0aW5nIHByb2Nlc3MuCisiIiJUZXJtaW5hbCByZXBv
cnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9jZXNzLgogCiBUaGlzIGlzIGEgZ29vZCBzb3Vy
Y2UgZm9yIGxvb2tpbmcgYXQgdGhlIHZhcmlvdXMgcmVwb3J0aW5nIGhvb2tzLgogIiIiCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCi0KLWltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGRhdGV0aW1l
CitpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGlt
ZQotCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9t
IHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlw
aW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBp
bXBvcnQgU2V0Citmcm9tIHR5cGluZyBpbXBvcnQgVGV4dElPCitmcm9tIHR5cGluZyBpbXBvcnQg
VHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCitpbXBvcnQgYXR0cgogaW1wb3J0IHBs
dWdneQogaW1wb3J0IHB5Ci1pbXBvcnQgc2l4Ci1mcm9tIG1vcmVfaXRlcnRvb2xzIGltcG9ydCBj
b2xsYXBzZQogCiBpbXBvcnQgcHl0ZXN0CiBmcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCi1mcm9t
IF9weXRlc3QubWFpbiBpbXBvcnQgKAotICAgIEVYSVRfT0ssCi0gICAgRVhJVF9URVNUU0ZBSUxF
RCwKLSAgICBFWElUX0lOVEVSUlVQVEVELAotICAgIEVYSVRfVVNBR0VFUlJPUiwKLSAgICBFWElU
X05PVEVTVFNDT0xMRUNURUQsCitmcm9tIF9weXRlc3QgaW1wb3J0IHRpbWluZworZnJvbSBfcHl0
ZXN0Ll9jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBp
bXBvcnQgRXhjZXB0aW9uUmVwcgorZnJvbSBfcHl0ZXN0Ll9pby53Y3dpZHRoIGltcG9ydCB3Y3N3
aWR0aAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21w
YXQgaW1wb3J0IG9yZGVyX3ByZXNlcnZpbmdfZGljdAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBv
cnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgX1BsdWdneVBsdWdp
bgorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmln
IGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGltcG9ydCBQ
YXJzZXIKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRlbQorZnJvbSBfcHl0ZXN0Lm5vZGVz
IGltcG9ydCBOb2RlCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgYWJzb2x1dGVwYXRoCitm
cm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgYmVzdHJlbHBhdGgKK2Zyb20gX3B5dGVzdC5wYXRo
bGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBvcnQgQmFzZVJlcG9ydAor
ZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0IENvbGxlY3RSZXBvcnQKK2Zyb20gX3B5dGVzdC5y
ZXBvcnRzIGltcG9ydCBUZXN0UmVwb3J0CisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0
eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAorCisgICAgZnJvbSBfcHl0ZXN0Lm1haW4g
aW1wb3J0IFNlc3Npb24KKworCitSRVBPUlRfQ09MTEVDVElOR19SRVNPTFVUSU9OID0gMC41CisK
K0tOT1dOX1RZUEVTID0gKAorICAgICJmYWlsZWQiLAorICAgICJwYXNzZWQiLAorICAgICJza2lw
cGVkIiwKKyAgICAiZGVzZWxlY3RlZCIsCisgICAgInhmYWlsZWQiLAorICAgICJ4cGFzc2VkIiwK
KyAgICAid2FybmluZ3MiLAorICAgICJlcnJvciIsCiApCiAKLQotaW1wb3J0IGFyZ3BhcnNlCitf
UkVQT1JUQ0hBUlNfREVGQVVMVCA9ICJmRSIKIAogCiBjbGFzcyBNb3JlUXVpZXRBY3Rpb24oYXJn
cGFyc2UuQWN0aW9uKToKLSAgICAiIiIKLSAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGFyZ3Bh
cnNlIGNvdW50IGFjdGlvbiB3aGljaCBjb3VudHMgZG93biBhbmQgdXBkYXRlcwotICAgIHRoZSBs
ZWdhY3kgcXVpZXQgYXR0cmlidXRlIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAiIiJBIG1vZGlmaWVk
IGNvcHkgb2YgdGhlIGFyZ3BhcnNlIGNvdW50IGFjdGlvbiB3aGljaCBjb3VudHMgZG93biBhbmQg
dXBkYXRlcworICAgIHRoZSBsZWdhY3kgcXVpZXQgYXR0cmlidXRlIGF0IHRoZSBzYW1lIHRpbWUu
CiAKLSAgICB1c2VkIHRvIHVuaWZ5IHZlcmJvc2l0eSBoYW5kbGluZworICAgIFVzZWQgdG8gdW5p
ZnkgdmVyYm9zaXR5IGhhbmRsaW5nLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbl9zdHJpbmdzLCBkZXN0LCBkZWZhdWx0PU5vbmUsIHJlcXVpcmVkPUZhbHNlLCBoZWxw
PU5vbmUpOgotICAgICAgICBzdXBlcihNb3JlUXVpZXRBY3Rpb24sIHNlbGYpLl9faW5pdF9fKAor
ICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgb3B0aW9uX3N0cmluZ3M6
IFNlcXVlbmNlW3N0cl0sCisgICAgICAgIGRlc3Q6IHN0ciwKKyAgICAgICAgZGVmYXVsdDogb2Jq
ZWN0ID0gTm9uZSwKKyAgICAgICAgcmVxdWlyZWQ6IGJvb2wgPSBGYWxzZSwKKyAgICAgICAgaGVs
cDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICBzdXBlcigp
Ll9faW5pdF9fKAogICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3M9b3B0aW9uX3N0cmluZ3MsCiAg
ICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgICBuYXJncz0wLApAQCAtNDYsMTQgKzk0
LDIwIEBAIGNsYXNzIE1vcmVRdWlldEFjdGlvbihhcmdwYXJzZS5BY3Rpb24pOgogICAgICAgICAg
ICAgaGVscD1oZWxwLAogICAgICAgICApCiAKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2Vy
LCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKKyAgICBkZWYgX19jYWxs
X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIHBhcnNlcjogYXJncGFyc2UuQXJndW1lbnRQYXJz
ZXIsCisgICAgICAgIG5hbWVzcGFjZTogYXJncGFyc2UuTmFtZXNwYWNlLAorICAgICAgICB2YWx1
ZXM6IFVuaW9uW3N0ciwgU2VxdWVuY2Vbb2JqZWN0XSwgTm9uZV0sCisgICAgICAgIG9wdGlvbl9z
dHJpbmc6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICkgLT4gTm9uZToKICAgICAgICAgbmV3
X2NvdW50ID0gZ2V0YXR0cihuYW1lc3BhY2UsIHNlbGYuZGVzdCwgMCkgLSAxCiAgICAgICAgIHNl
dGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIG5ld19jb3VudCkKICAgICAgICAgIyB0b2RvIERl
cHJlY2F0ZSBjb25maWcucXVpZXQKICAgICAgICAgbmFtZXNwYWNlLnF1aWV0ID0gZ2V0YXR0cihu
YW1lc3BhY2UsICJxdWlldCIsIDApICsgMQogCiAKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNl
cik6CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4gTm9uZToKICAgICBn
cm91cCA9IHBhcnNlci5nZXRncm91cCgidGVybWluYWwgcmVwb3J0aW5nIiwgInJlcG9ydGluZyIs
IGFmdGVyPSJnZW5lcmFsIikKICAgICBncm91cC5fYWRkb3B0aW9uKAogICAgICAgICAiLXYiLApA
QCAtNjIsNyArMTE2LDIxIEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAg
IGRlZmF1bHQ9MCwKICAgICAgICAgZGVzdD0idmVyYm9zZSIsCiAgICAgICAgIGhlbHA9ImluY3Jl
YXNlIHZlcmJvc2l0eS4iLAotICAgICksCisgICAgKQorICAgIGdyb3VwLl9hZGRvcHRpb24oCisg
ICAgICAgICItLW5vLWhlYWRlciIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGRlc3Q9Im5vX2hlYWRlciIsCisgICAgICAgIGhl
bHA9ImRpc2FibGUgaGVhZGVyIiwKKyAgICApCisgICAgZ3JvdXAuX2FkZG9wdGlvbigKKyAgICAg
ICAgIi0tbm8tc3VtbWFyeSIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAg
IGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGRlc3Q9Im5vX3N1bW1hcnkiLAorICAgICAgICBoZWxw
PSJkaXNhYmxlIHN1bW1hcnkiLAorICAgICkKICAgICBncm91cC5fYWRkb3B0aW9uKAogICAgICAg
ICAiLXEiLAogICAgICAgICAiLS1xdWlldCIsCkBAIC03MCwyMSArMTM4LDI1IEBAIGRlZiBweXRl
c3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAgIGRlZmF1bHQ9MCwKICAgICAgICAgZGVzdD0i
dmVyYm9zZSIsCiAgICAgICAgIGhlbHA9ImRlY3JlYXNlIHZlcmJvc2l0eS4iLAotICAgICksCisg
ICAgKQogICAgIGdyb3VwLl9hZGRvcHRpb24oCi0gICAgICAgICItLXZlcmJvc2l0eSIsIGRlc3Q9
InZlcmJvc2UiLCB0eXBlPWludCwgZGVmYXVsdD0wLCBoZWxwPSJzZXQgdmVyYm9zaXR5IgorICAg
ICAgICAiLS12ZXJib3NpdHkiLAorICAgICAgICBkZXN0PSJ2ZXJib3NlIiwKKyAgICAgICAgdHlw
ZT1pbnQsCisgICAgICAgIGRlZmF1bHQ9MCwKKyAgICAgICAgaGVscD0ic2V0IHZlcmJvc2l0eS4g
RGVmYXVsdCBpcyAwLiIsCiAgICAgKQogICAgIGdyb3VwLl9hZGRvcHRpb24oCiAgICAgICAgICIt
ciIsCiAgICAgICAgIGFjdGlvbj0ic3RvcmUiLAogICAgICAgICBkZXN0PSJyZXBvcnRjaGFycyIs
Ci0gICAgICAgIGRlZmF1bHQ9IiIsCisgICAgICAgIGRlZmF1bHQ9X1JFUE9SVENIQVJTX0RFRkFV
TFQsCiAgICAgICAgIG1ldGF2YXI9ImNoYXJzIiwKLSAgICAgICAgaGVscD0ic2hvdyBleHRyYSB0
ZXN0IHN1bW1hcnkgaW5mbyBhcyBzcGVjaWZpZWQgYnkgY2hhcnMgKGYpYWlsZWQsICIKLSAgICAg
ICAgIihFKWVycm9yLCAocylza2lwcGVkLCAoeClmYWlsZWQsIChYKXBhc3NlZCwgIgotICAgICAg
ICAiKHApcGFzc2VkLCAoUClwYXNzZWQgd2l0aCBvdXRwdXQsIChhKWFsbCBleGNlcHQgcFAuICIK
LSAgICAgICAgIldhcm5pbmdzIGFyZSBkaXNwbGF5ZWQgYXQgYWxsIHRpbWVzIGV4Y2VwdCB3aGVu
ICIKLSAgICAgICAgIi0tZGlzYWJsZS13YXJuaW5ncyBpcyBzZXQiLAorICAgICAgICBoZWxwPSJz
aG93IGV4dHJhIHRlc3Qgc3VtbWFyeSBpbmZvIGFzIHNwZWNpZmllZCBieSBjaGFyczogKGYpYWls
ZWQsICIKKyAgICAgICAgIihFKXJyb3IsIChzKWtpcHBlZCwgKHgpZmFpbGVkLCAoWClwYXNzZWQs
ICIKKyAgICAgICAgIihwKWFzc2VkLCAoUClhc3NlZCB3aXRoIG91dHB1dCwgKGEpbGwgZXhjZXB0
IHBhc3NlZCAocC9QKSwgb3IgKEEpbGwuICIKKyAgICAgICAgIih3KWFybmluZ3MgYXJlIGVuYWJs
ZWQgYnkgZGVmYXVsdCAoc2VlIC0tZGlzYWJsZS13YXJuaW5ncyksICIKKyAgICAgICAgIidOJyBj
YW4gYmUgdXNlZCB0byByZXNldCB0aGUgbGlzdC4gKGRlZmF1bHQ6ICdmRScpLiIsCiAgICAgKQog
ICAgIGdyb3VwLl9hZGRvcHRpb24oCiAgICAgICAgICItLWRpc2FibGUtd2FybmluZ3MiLApAQCAt
MTM2LDE1ICsyMDgsMjEgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAg
Y2hvaWNlcz1bInllcyIsICJubyIsICJhdXRvIl0sCiAgICAgICAgIGhlbHA9ImNvbG9yIHRlcm1p
bmFsIG91dHB1dCAoeWVzL25vL2F1dG8pLiIsCiAgICAgKQorICAgIGdyb3VwLl9hZGRvcHRpb24o
CisgICAgICAgICItLWNvZGUtaGlnaGxpZ2h0IiwKKyAgICAgICAgZGVmYXVsdD0ieWVzIiwKKyAg
ICAgICAgY2hvaWNlcz1bInllcyIsICJubyJdLAorICAgICAgICBoZWxwPSJXaGV0aGVyIGNvZGUg
c2hvdWxkIGJlIGhpZ2hsaWdodGVkIChvbmx5IGlmIC0tY29sb3IgaXMgYWxzbyBlbmFibGVkKSIs
CisgICAgKQogCiAgICAgcGFyc2VyLmFkZGluaSgKICAgICAgICAgImNvbnNvbGVfb3V0cHV0X3N0
eWxlIiwKLSAgICAgICAgaGVscD0iY29uc29sZSBvdXRwdXQ6IGNsYXNzaWMgb3Igd2l0aCBhZGRp
dGlvbmFsIHByb2dyZXNzIGluZm9ybWF0aW9uIChjbGFzc2ljfHByb2dyZXNzKS4iLAorICAgICAg
ICBoZWxwPSdjb25zb2xlIG91dHB1dDogImNsYXNzaWMiLCBvciB3aXRoIGFkZGl0aW9uYWwgcHJv
Z3Jlc3MgaW5mb3JtYXRpb24gKCJwcm9ncmVzcyIgKHBlcmNlbnRhZ2UpIHwgImNvdW50IikuJywK
ICAgICAgICAgZGVmYXVsdD0icHJvZ3Jlc3MiLAogICAgICkKIAogCi1kZWYgcHl0ZXN0X2NvbmZp
Z3VyZShjb25maWcpOgorZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcpIC0+IE5v
bmU6CiAgICAgcmVwb3J0ZXIgPSBUZXJtaW5hbFJlcG9ydGVyKGNvbmZpZywgc3lzLnN0ZG91dCkK
ICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihyZXBvcnRlciwgInRlcm1pbmFscmVw
b3J0ZXIiKQogICAgIGlmIGNvbmZpZy5vcHRpb24uZGVidWcgb3IgY29uZmlnLm9wdGlvbi50cmFj
ZWNvbmZpZzoKQEAgLTE1NiwxMjMgKzIzNCwxNzQgQEAgZGVmIHB5dGVzdF9jb25maWd1cmUoY29u
ZmlnKToKICAgICAgICAgY29uZmlnLnRyYWNlLnJvb3Quc2V0cHJvY2Vzc29yKCJweXRlc3Q6Y29u
ZmlnIiwgbXl3cml0ZXIpCiAKIAotZGVmIGdldHJlcG9ydG9wdChjb25maWcpOgorZGVmIGdldHJl
cG9ydG9wdChjb25maWc6IENvbmZpZykgLT4gc3RyOgorICAgIHJlcG9ydGNoYXJzID0gY29uZmln
Lm9wdGlvbi5yZXBvcnRjaGFycyAgIyB0eXBlOiBzdHIKKworICAgIG9sZF9hbGlhc2VzID0geyJG
IiwgIlMifQogICAgIHJlcG9ydG9wdHMgPSAiIgotICAgIHJlcG9ydGNoYXJzID0gY29uZmlnLm9w
dGlvbi5yZXBvcnRjaGFycwotICAgIGlmIG5vdCBjb25maWcub3B0aW9uLmRpc2FibGVfd2Fybmlu
Z3MgYW5kICJ3IiBub3QgaW4gcmVwb3J0Y2hhcnM6Ci0gICAgICAgIHJlcG9ydGNoYXJzICs9ICJ3
IgotICAgIGVsaWYgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdzIGFuZCAidyIgaW4gcmVw
b3J0Y2hhcnM6Ci0gICAgICAgIHJlcG9ydGNoYXJzID0gcmVwb3J0Y2hhcnMucmVwbGFjZSgidyIs
ICIiKQotICAgIGlmIHJlcG9ydGNoYXJzOgotICAgICAgICBmb3IgY2hhciBpbiByZXBvcnRjaGFy
czoKLSAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIHJlcG9ydG9wdHMgYW5kIGNoYXIgIT0gImEi
OgotICAgICAgICAgICAgICAgIHJlcG9ydG9wdHMgKz0gY2hhcgotICAgICAgICAgICAgZWxpZiBj
aGFyID09ICJhIjoKLSAgICAgICAgICAgICAgICByZXBvcnRvcHRzID0gImZFc3hYdyIKKyAgICBm
b3IgY2hhciBpbiByZXBvcnRjaGFyczoKKyAgICAgICAgaWYgY2hhciBpbiBvbGRfYWxpYXNlczoK
KyAgICAgICAgICAgIGNoYXIgPSBjaGFyLmxvd2VyKCkKKyAgICAgICAgaWYgY2hhciA9PSAiYSI6
CisgICAgICAgICAgICByZXBvcnRvcHRzID0gInN4WEVmIgorICAgICAgICBlbGlmIGNoYXIgPT0g
IkEiOgorICAgICAgICAgICAgcmVwb3J0b3B0cyA9ICJQcHN4WEVmIgorICAgICAgICBlbGlmIGNo
YXIgPT0gIk4iOgorICAgICAgICAgICAgcmVwb3J0b3B0cyA9ICIiCisgICAgICAgIGVsaWYgY2hh
ciBub3QgaW4gcmVwb3J0b3B0czoKKyAgICAgICAgICAgIHJlcG9ydG9wdHMgKz0gY2hhcgorCisg
ICAgaWYgbm90IGNvbmZpZy5vcHRpb24uZGlzYWJsZV93YXJuaW5ncyBhbmQgInciIG5vdCBpbiBy
ZXBvcnRvcHRzOgorICAgICAgICByZXBvcnRvcHRzID0gInciICsgcmVwb3J0b3B0cworICAgIGVs
aWYgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdzIGFuZCAidyIgaW4gcmVwb3J0b3B0czoK
KyAgICAgICAgcmVwb3J0b3B0cyA9IHJlcG9ydG9wdHMucmVwbGFjZSgidyIsICIiKQorCiAgICAg
cmV0dXJuIHJlcG9ydG9wdHMKIAogCi1kZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9y
dCk6CitAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkgICMgYWZ0ZXIgX3B5dGVzdC5ydW5u
ZXIKK2RlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0OiBCYXNlUmVwb3J0KSAtPiBU
dXBsZVtzdHIsIHN0ciwgc3RyXToKKyAgICBsZXR0ZXIgPSAiRiIKICAgICBpZiByZXBvcnQucGFz
c2VkOgogICAgICAgICBsZXR0ZXIgPSAiLiIKICAgICBlbGlmIHJlcG9ydC5za2lwcGVkOgogICAg
ICAgICBsZXR0ZXIgPSAicyIKLSAgICBlbGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgIGxldHRl
ciA9ICJGIgotICAgICAgICBpZiByZXBvcnQud2hlbiAhPSAiY2FsbCI6Ci0gICAgICAgICAgICBs
ZXR0ZXIgPSAiZiIKLSAgICByZXR1cm4gcmVwb3J0Lm91dGNvbWUsIGxldHRlciwgcmVwb3J0Lm91
dGNvbWUudXBwZXIoKQogCisgICAgb3V0Y29tZSA9IHJlcG9ydC5vdXRjb21lICAjIHR5cGU6IHN0
cgorICAgIGlmIHJlcG9ydC53aGVuIGluICgiY29sbGVjdCIsICJzZXR1cCIsICJ0ZWFyZG93biIp
IGFuZCBvdXRjb21lID09ICJmYWlsZWQiOgorICAgICAgICBvdXRjb21lID0gImVycm9yIgorICAg
ICAgICBsZXR0ZXIgPSAiRSIKIAotY2xhc3MgV2FybmluZ1JlcG9ydChvYmplY3QpOgotICAgICIi
IgotICAgIFNpbXBsZSBzdHJ1Y3R1cmUgdG8gaG9sZCB3YXJuaW5ncyBpbmZvcm1hdGlvbiBjYXB0
dXJlZCBieSBgYHB5dGVzdF9sb2d3YXJuaW5nYGAuCisgICAgcmV0dXJuIG91dGNvbWUsIGxldHRl
ciwgb3V0Y29tZS51cHBlcigpCisKKworQGF0dHIucworY2xhc3MgV2FybmluZ1JlcG9ydDoKKyAg
ICAiIiJTaW1wbGUgc3RydWN0dXJlIHRvIGhvbGQgd2FybmluZ3MgaW5mb3JtYXRpb24gY2FwdHVy
ZWQgYnkgYGBweXRlc3Rfd2FybmluZ19yZWNvcmRlZGBgLgorCisgICAgOml2YXIgc3RyIG1lc3Nh
Z2U6CisgICAgICAgIFVzZXIgZnJpZW5kbHkgbWVzc2FnZSBhYm91dCB0aGUgd2FybmluZy4KKyAg
ICA6aXZhciBzdHJ8Tm9uZSBub2RlaWQ6CisgICAgICAgIG5vZGVpZCB0aGF0IGdlbmVyYXRlZCB0
aGUgd2FybmluZyAoc2VlIGBgZ2V0X2xvY2F0aW9uYGApLgorICAgIDppdmFyIHR1cGxlfHB5LnBh
dGgubG9jYWwgZnNsb2NhdGlvbjoKKyAgICAgICAgRmlsZSBzeXN0ZW0gbG9jYXRpb24gb2YgdGhl
IHNvdXJjZSBvZiB0aGUgd2FybmluZyAoc2VlIGBgZ2V0X2xvY2F0aW9uYGApLgogICAgICIiIgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUsIG1lc3NhZ2UsIG5vZGVpZD1Ob25lLCBmc2xv
Y2F0aW9uPU5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgOnBhcmFtIGNvZGU6IHVudXNlZAot
ICAgICAgICA6cGFyYW0gc3RyIG1lc3NhZ2U6IHVzZXIgZnJpZW5kbHkgbWVzc2FnZSBhYm91dCB0
aGUgd2FybmluZwotICAgICAgICA6cGFyYW0gc3RyfE5vbmUgbm9kZWlkOiBub2RlIGlkIHRoYXQg
Z2VuZXJhdGVkIHRoZSB3YXJuaW5nIChzZWUgYGBnZXRfbG9jYXRpb25gYCkuCi0gICAgICAgIDpw
YXJhbSB0dXBsZXxweS5wYXRoLmxvY2FsIGZzbG9jYXRpb246Ci0gICAgICAgICAgICBmaWxlIHN5
c3RlbSBsb2NhdGlvbiBvZiB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nIChzZWUgYGBnZXRfbG9j
YXRpb25gYCkuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvZGUgPSBjb2RlCi0gICAgICAg
IHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKLSAgICAgICAgc2VsZi5ub2RlaWQgPSBub2RlaWQKLSAg
ICAgICAgc2VsZi5mc2xvY2F0aW9uID0gZnNsb2NhdGlvbgorICAgIG1lc3NhZ2UgPSBhdHRyLmli
KHR5cGU9c3RyKQorICAgIG5vZGVpZCA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFtzdHJdLCBkZWZh
dWx0PU5vbmUpCisgICAgZnNsb2NhdGlvbiA9IGF0dHIuaWIoCisgICAgICAgIHR5cGU9T3B0aW9u
YWxbVW5pb25bVHVwbGVbc3RyLCBpbnRdLCBweS5wYXRoLmxvY2FsXV0sIGRlZmF1bHQ9Tm9uZQor
ICAgICkKKyAgICBjb3VudF90b3dhcmRzX3N1bW1hcnkgPSBUcnVlCiAKLSAgICBkZWYgZ2V0X2xv
Y2F0aW9uKHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm5zIHRoZSBt
b3JlIHVzZXItZnJpZW5kbHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uCi0gICAgICAg
IG9mIGEgd2FybmluZywgb3IgTm9uZS4KLSAgICAgICAgIiIiCisgICAgZGVmIGdldF9sb2NhdGlv
bihzZWxmLCBjb25maWc6IENvbmZpZykgLT4gT3B0aW9uYWxbc3RyXToKKyAgICAgICAgIiIiUmV0
dXJuIHRoZSBtb3JlIHVzZXItZnJpZW5kbHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9u
IG9mIGEgd2FybmluZywgb3IgTm9uZS4iIiIKICAgICAgICAgaWYgc2VsZi5ub2RlaWQ6CiAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5ub2RlaWQKICAgICAgICAgaWYgc2VsZi5mc2xvY2F0aW9uOgog
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmZzbG9jYXRpb24sIHR1cGxlKSBhbmQgbGVu
KHNlbGYuZnNsb2NhdGlvbikgPj0gMjoKICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW51
bSA9IHNlbGYuZnNsb2NhdGlvbls6Ml0KLSAgICAgICAgICAgICAgICByZWxwYXRoID0gcHkucGF0
aC5sb2NhbChmaWxlbmFtZSkucmVsdG8oY29uZmlnLmludm9jYXRpb25fZGlyKQotICAgICAgICAg
ICAgICAgIHJldHVybiAiJXM6JXMiICUgKHJlbHBhdGgsIGxpbmVudW0pCisgICAgICAgICAgICAg
ICAgcmVscGF0aCA9IGJlc3RyZWxwYXRoKAorICAgICAgICAgICAgICAgICAgICBjb25maWcuaW52
b2NhdGlvbl9wYXJhbXMuZGlyLCBhYnNvbHV0ZXBhdGgoZmlsZW5hbWUpCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgIHJldHVybiAie306e30iLmZvcm1hdChyZWxwYXRoLCBsaW5l
bnVtKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYu
ZnNsb2NhdGlvbikKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1jbGFzcyBUZXJtaW5hbFJlcG9y
dGVyKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnLCBmaWxlPU5vbmUp
OgorQGZpbmFsCitjbGFzcyBUZXJtaW5hbFJlcG9ydGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjb25maWc6IENvbmZpZywgZmlsZTogT3B0aW9uYWxbVGV4dElPXSA9IE5vbmUpIC0+IE5vbmU6
CiAgICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwogCiAgICAgICAgIHNlbGYuY29uZmlnID0g
Y29uZmlnCi0gICAgICAgIHNlbGYudmVyYm9zaXR5ID0gc2VsZi5jb25maWcub3B0aW9uLnZlcmJv
c2UKLSAgICAgICAgc2VsZi5zaG93aGVhZGVyID0gc2VsZi52ZXJib3NpdHkgPj0gMAotICAgICAg
ICBzZWxmLnNob3dmc3BhdGggPSBzZWxmLnZlcmJvc2l0eSA+PSAwCi0gICAgICAgIHNlbGYuc2hv
d2xvbmd0ZXN0aW5mbyA9IHNlbGYudmVyYm9zaXR5ID4gMAogICAgICAgICBzZWxmLl9udW1jb2xs
ZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYuX3Nlc3Npb24gPSBOb25lCi0KLSAgICAgICAgc2VsZi5z
dGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuc3RhcnRkaXIgPSBweS5wYXRoLmxvY2FsKCkKKyAgICAg
ICAgc2VsZi5fc2Vzc2lvbiA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbU2Vzc2lvbl0KKyAgICAg
ICAgc2VsZi5fc2hvd2ZzcGF0aCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbYm9vbF0KKworICAg
ICAgICBzZWxmLnN0YXRzID0ge30gICMgdHlwZTogRGljdFtzdHIsIExpc3RbQW55XV0KKyAgICAg
ICAgc2VsZi5fbWFpbl9jb2xvciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbc3RyXQorICAgICAg
ICBzZWxmLl9rbm93bl90eXBlcyA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbTGlzdFtzdHJdXQor
ICAgICAgICBzZWxmLnN0YXJ0ZGlyID0gY29uZmlnLmludm9jYXRpb25fZGlyCisgICAgICAgIHNl
bGYuc3RhcnRwYXRoID0gY29uZmlnLmludm9jYXRpb25fcGFyYW1zLmRpcgogICAgICAgICBpZiBm
aWxlIGlzIE5vbmU6CiAgICAgICAgICAgICBmaWxlID0gc3lzLnN0ZG91dAogICAgICAgICBzZWxm
Ll90dyA9IF9weXRlc3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5hbF93cml0ZXIoY29uZmlnLCBmaWxl
KQotICAgICAgICAjIHNlbGYud3JpdGVyIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBweXRlc3QtMy40
Ci0gICAgICAgIHNlbGYud3JpdGVyID0gc2VsZi5fdHcKICAgICAgICAgc2VsZi5fc2NyZWVuX3dp
ZHRoID0gc2VsZi5fdHcuZnVsbHdpZHRoCi0gICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IE5v
bmUKKyAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0gTm9uZSAgIyB0eXBlOiBVbmlvbltOb25l
LCBQYXRoLCBzdHIsIGludF0KICAgICAgICAgc2VsZi5yZXBvcnRjaGFycyA9IGdldHJlcG9ydG9w
dChjb25maWcpCiAgICAgICAgIHNlbGYuaGFzbWFya3VwID0gc2VsZi5fdHcuaGFzbWFya3VwCiAg
ICAgICAgIHNlbGYuaXNhdHR5ID0gZmlsZS5pc2F0dHkoKQotICAgICAgICBzZWxmLl9wcm9ncmVz
c19ub2RlaWRzX3JlcG9ydGVkID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcHJvZ3Jlc3Nfbm9kZWlk
c19yZXBvcnRlZCA9IHNldCgpICAjIHR5cGU6IFNldFtzdHJdCiAgICAgICAgIHNlbGYuX3Nob3df
cHJvZ3Jlc3NfaW5mbyA9IHNlbGYuX2RldGVybWluZV9zaG93X3Byb2dyZXNzX2luZm8oKQorICAg
ICAgICBzZWxmLl9jb2xsZWN0X3JlcG9ydF9sYXN0X3dyaXRlID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtmbG9hdF0KKyAgICAgICAgc2VsZi5fYWxyZWFkeV9kaXNwbGF5ZWRfd2FybmluZ3MgPSBO
b25lICAjIHR5cGU6IE9wdGlvbmFsW2ludF0KKyAgICAgICAgc2VsZi5fa2V5Ym9hcmRpbnRlcnJ1
cHRfbWVtbyA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbRXhjZXB0aW9uUmVwcl0KIAotICAgIGRl
ZiBfZGV0ZXJtaW5lX3Nob3dfcHJvZ3Jlc3NfaW5mbyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJu
IFRydWUgaWYgd2Ugc2hvdWxkIGRpc3BsYXkgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYmFzZWQgb24g
dGhlIGN1cnJlbnQgY29uZmlnIiIiCisgICAgZGVmIF9kZXRlcm1pbmVfc2hvd19wcm9ncmVzc19p
bmZvKHNlbGYpIC0+ICJMaXRlcmFsWydwcm9ncmVzcycsICdjb3VudCcsIEZhbHNlXSI6CisgICAg
ICAgICIiIlJldHVybiB3aGV0aGVyIHdlIHNob3VsZCBkaXNwbGF5IHByb2dyZXNzIGluZm9ybWF0
aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZy4iIiIKICAgICAgICAgIyBkbyBub3Qgc2hv
dyBwcm9ncmVzcyBpZiB3ZSBhcmUgbm90IGNhcHR1cmluZyBvdXRwdXQgKCMzMDM4KQotICAgICAg
ICBpZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImNhcHR1cmUiKSA9PSAibm8iOgorICAgICAgICBp
ZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImNhcHR1cmUiLCAibm8iKSA9PSAibm8iOgogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICMgZG8gbm90IHNob3cgcHJvZ3Jlc3MgaWYgd2Ug
YXJlIHNob3dpbmcgZml4dHVyZSBzZXR1cC90ZWFyZG93bgotICAgICAgICBpZiBzZWxmLmNvbmZp
Zy5nZXRvcHRpb24oInNldHVwc2hvdyIpOgorICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXRvcHRp
b24oInNldHVwc2hvdyIsIEZhbHNlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICBjZmcgPSBzZWxmLmNvbmZpZy5nZXRpbmkoImNvbnNvbGVfb3V0cHV0X3N0eWxlIikgICMgdHlw
ZTogc3RyCisgICAgICAgIGlmIGNmZyA9PSAicHJvZ3Jlc3MiOgorICAgICAgICAgICAgcmV0dXJu
ICJwcm9ncmVzcyIKKyAgICAgICAgZWxpZiBjZmcgPT0gImNvdW50IjoKKyAgICAgICAgICAgIHJl
dHVybiAiY291bnQiCisgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgcmV0dXJuIHNlbGYuY29uZmlnLmdldGluaSgiY29uc29sZV9vdXRwdXRfc3R5bGUiKSA9
PSAicHJvZ3Jlc3MiCiAKLSAgICBkZWYgaGFzb3B0KHNlbGYsIGNoYXIpOgorICAgIEBwcm9wZXJ0
eQorICAgIGRlZiB2ZXJib3NpdHkoc2VsZikgLT4gaW50OgorICAgICAgICB2ZXJib3NpdHkgPSBz
ZWxmLmNvbmZpZy5vcHRpb24udmVyYm9zZSAgIyB0eXBlOiBpbnQKKyAgICAgICAgcmV0dXJuIHZl
cmJvc2l0eQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNob3doZWFkZXIoc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIHNlbGYudmVyYm9zaXR5ID49IDAKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBub19oZWFkZXIoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIGJvb2woc2Vs
Zi5jb25maWcub3B0aW9uLm5vX2hlYWRlcikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub19z
dW1tYXJ5KHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuY29uZmlnLm9w
dGlvbi5ub19zdW1tYXJ5KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNob3dmc3BhdGgoc2Vs
ZikgLT4gYm9vbDoKKyAgICAgICAgaWYgc2VsZi5fc2hvd2ZzcGF0aCBpcyBOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYudmVyYm9zaXR5ID49IDAKKyAgICAgICAgcmV0dXJuIHNlbGYuX3No
b3dmc3BhdGgKKworICAgIEBzaG93ZnNwYXRoLnNldHRlcgorICAgIGRlZiBzaG93ZnNwYXRoKHNl
bGYsIHZhbHVlOiBPcHRpb25hbFtib29sXSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fc2hvd2Zz
cGF0aCA9IHZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2hvd2xvbmd0ZXN0aW5mbyhz
ZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2VsZi52ZXJib3NpdHkgPiAwCisKKyAgICBk
ZWYgaGFzb3B0KHNlbGYsIGNoYXI6IHN0cikgLT4gYm9vbDoKICAgICAgICAgY2hhciA9IHsieGZh
aWxlZCI6ICJ4IiwgInNraXBwZWQiOiAicyJ9LmdldChjaGFyLCBjaGFyKQogICAgICAgICByZXR1
cm4gY2hhciBpbiBzZWxmLnJlcG9ydGNoYXJzCiAKLSAgICBkZWYgd3JpdGVfZnNwYXRoX3Jlc3Vs
dChzZWxmLCBub2RlaWQsIHJlcyk6Ci0gICAgICAgIGZzcGF0aCA9IHNlbGYuY29uZmlnLnJvb3Rk
aXIuam9pbihub2RlaWQuc3BsaXQoIjo6IilbMF0pCi0gICAgICAgIGlmIGZzcGF0aCAhPSBzZWxm
LmN1cnJlbnRmc3BhdGg6Ci0gICAgICAgICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGggaXMgbm90
IE5vbmU6CisgICAgZGVmIHdyaXRlX2ZzcGF0aF9yZXN1bHQoc2VsZiwgbm9kZWlkOiBzdHIsIHJl
cywgKiptYXJrdXA6IGJvb2wpIC0+IE5vbmU6CisgICAgICAgIGZzcGF0aCA9IHNlbGYuY29uZmln
LnJvb3RwYXRoIC8gbm9kZWlkLnNwbGl0KCI6OiIpWzBdCisgICAgICAgIGlmIHNlbGYuY3VycmVu
dGZzcGF0aCBpcyBOb25lIG9yIGZzcGF0aCAhPSBzZWxmLmN1cnJlbnRmc3BhdGg6CisgICAgICAg
ICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGggaXMgbm90IE5vbmUgYW5kIHNlbGYuX3Nob3dfcHJv
Z3Jlc3NfaW5mbzoKICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9wcm9ncmVzc19pbmZvcm1h
dGlvbl9maWxsaW5nX3NwYWNlKCkKICAgICAgICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IGZz
cGF0aAotICAgICAgICAgICAgZnNwYXRoID0gc2VsZi5zdGFydGRpci5iZXN0cmVscGF0aChmc3Bh
dGgpCisgICAgICAgICAgICByZWxmc3BhdGggPSBiZXN0cmVscGF0aChzZWxmLnN0YXJ0cGF0aCwg
ZnNwYXRoKQogICAgICAgICAgICAgc2VsZi5fdHcubGluZSgpCi0gICAgICAgICAgICBzZWxmLl90
dy53cml0ZShmc3BhdGggKyAiICIpCi0gICAgICAgIHNlbGYuX3R3LndyaXRlKHJlcykKKyAgICAg
ICAgICAgIHNlbGYuX3R3LndyaXRlKHJlbGZzcGF0aCArICIgIikKKyAgICAgICAgc2VsZi5fdHcu
d3JpdGUocmVzLCBmbHVzaD1UcnVlLCAqKm1hcmt1cCkKIAotICAgIGRlZiB3cml0ZV9lbnN1cmVf
cHJlZml4KHNlbGYsIHByZWZpeCwgZXh0cmE9IiIsICoqa3dhcmdzKToKKyAgICBkZWYgd3JpdGVf
ZW5zdXJlX3ByZWZpeChzZWxmLCBwcmVmaXg6IHN0ciwgZXh0cmE6IHN0ciA9ICIiLCAqKmt3YXJn
cykgLT4gTm9uZToKICAgICAgICAgaWYgc2VsZi5jdXJyZW50ZnNwYXRoICE9IHByZWZpeDoKICAg
ICAgICAgICAgIHNlbGYuX3R3LmxpbmUoKQogICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRo
ID0gcHJlZml4CkBAIC0yODEsMjUgKzQxMCwyOCBAQCBjbGFzcyBUZXJtaW5hbFJlcG9ydGVyKG9i
amVjdCk6CiAgICAgICAgICAgICBzZWxmLl90dy53cml0ZShleHRyYSwgKiprd2FyZ3MpCiAgICAg
ICAgICAgICBzZWxmLmN1cnJlbnRmc3BhdGggPSAtMgogCi0gICAgZGVmIGVuc3VyZV9uZXdsaW5l
KHNlbGYpOgorICAgIGRlZiBlbnN1cmVfbmV3bGluZShzZWxmKSAtPiBOb25lOgogICAgICAgICBp
ZiBzZWxmLmN1cnJlbnRmc3BhdGg6CiAgICAgICAgICAgICBzZWxmLl90dy5saW5lKCkKICAgICAg
ICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IE5vbmUKIAotICAgIGRlZiB3cml0ZShzZWxmLCBj
b250ZW50LCAqKm1hcmt1cCk6Ci0gICAgICAgIHNlbGYuX3R3LndyaXRlKGNvbnRlbnQsICoqbWFy
a3VwKQorICAgIGRlZiB3cml0ZShzZWxmLCBjb250ZW50OiBzdHIsICosIGZsdXNoOiBib29sID0g
RmFsc2UsICoqbWFya3VwOiBib29sKSAtPiBOb25lOgorICAgICAgICBzZWxmLl90dy53cml0ZShj
b250ZW50LCBmbHVzaD1mbHVzaCwgKiptYXJrdXApCisKKyAgICBkZWYgZmx1c2goc2VsZikgLT4g
Tm9uZToKKyAgICAgICAgc2VsZi5fdHcuZmx1c2goKQogCi0gICAgZGVmIHdyaXRlX2xpbmUoc2Vs
ZiwgbGluZSwgKiptYXJrdXApOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsaW5lLCBzaXgu
dGV4dF90eXBlKToKLSAgICAgICAgICAgIGxpbmUgPSBzaXgudGV4dF90eXBlKGxpbmUsIGVycm9y
cz0icmVwbGFjZSIpCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZTogVW5pb25bc3RyLCBi
eXRlc10sICoqbWFya3VwOiBib29sKSAtPiBOb25lOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShsaW5lLCBzdHIpOgorICAgICAgICAgICAgbGluZSA9IHN0cihsaW5lLCBlcnJvcnM9InJlcGxh
Y2UiKQogICAgICAgICBzZWxmLmVuc3VyZV9uZXdsaW5lKCkKICAgICAgICAgc2VsZi5fdHcubGlu
ZShsaW5lLCAqKm1hcmt1cCkKIAotICAgIGRlZiByZXdyaXRlKHNlbGYsIGxpbmUsICoqbWFya3Vw
KToKLSAgICAgICAgIiIiCi0gICAgICAgIFJld2luZHMgdGhlIHRlcm1pbmFsIGN1cnNvciB0byB0
aGUgYmVnaW5uaW5nIGFuZCB3cml0ZXMgdGhlIGdpdmVuIGxpbmUuCisgICAgZGVmIHJld3JpdGUo
c2VsZiwgbGluZTogc3RyLCAqKm1hcmt1cDogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgIiIiUmV3
aW5kcyB0aGUgdGVybWluYWwgY3Vyc29yIHRvIHRoZSBiZWdpbm5pbmcgYW5kIHdyaXRlcyB0aGUg
Z2l2ZW4gbGluZS4KIAotICAgICAgICA6a3dhcmcgZXJhc2U6IGlmIFRydWUsIHdpbGwgYWxzbyBh
ZGQgc3BhY2VzIHVudGlsIHRoZSBmdWxsIHRlcm1pbmFsIHdpZHRoIHRvIGVuc3VyZQorICAgICAg
ICA6cGFyYW0gZXJhc2U6CisgICAgICAgICAgICBJZiBUcnVlLCB3aWxsIGFsc28gYWRkIHNwYWNl
cyB1bnRpbCB0aGUgZnVsbCB0ZXJtaW5hbCB3aWR0aCB0byBlbnN1cmUKICAgICAgICAgICAgIHBy
ZXZpb3VzIGxpbmVzIGFyZSBwcm9wZXJseSBlcmFzZWQuCiAKICAgICAgICAgVGhlIHJlc3Qgb2Yg
dGhlIGtleXdvcmQgYXJndW1lbnRzIGFyZSBtYXJrdXAgaW5zdHJ1Y3Rpb25zLgpAQCAtMzEzLDc5
ICs0NDUsMTAyIEBAIGNsYXNzIFRlcm1pbmFsUmVwb3J0ZXIob2JqZWN0KToKICAgICAgICAgbGlu
ZSA9IHN0cihsaW5lKQogICAgICAgICBzZWxmLl90dy53cml0ZSgiXHIiICsgbGluZSArIGZpbGws
ICoqbWFya3VwKQogCi0gICAgZGVmIHdyaXRlX3NlcChzZWxmLCBzZXAsIHRpdGxlPU5vbmUsICoq
bWFya3VwKToKKyAgICBkZWYgd3JpdGVfc2VwKAorICAgICAgICBzZWxmLAorICAgICAgICBzZXA6
IHN0ciwKKyAgICAgICAgdGl0bGU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBmdWxs
d2lkdGg6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICAqKm1hcmt1cDogYm9vbAorICAg
ICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5lbnN1cmVfbmV3bGluZSgpCi0gICAgICAgIHNlbGYu
X3R3LnNlcChzZXAsIHRpdGxlLCAqKm1hcmt1cCkKKyAgICAgICAgc2VsZi5fdHcuc2VwKHNlcCwg
dGl0bGUsIGZ1bGx3aWR0aCwgKiptYXJrdXApCiAKLSAgICBkZWYgc2VjdGlvbihzZWxmLCB0aXRs
ZSwgc2VwPSI9IiwgKiprdyk6CisgICAgZGVmIHNlY3Rpb24oc2VsZiwgdGl0bGU6IHN0ciwgc2Vw
OiBzdHIgPSAiPSIsICoqa3c6IGJvb2wpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX3R3LnNlcChz
ZXAsIHRpdGxlLCAqKmt3KQogCi0gICAgZGVmIGxpbmUoc2VsZiwgbXNnLCAqKmt3KToKKyAgICBk
ZWYgbGluZShzZWxmLCBtc2c6IHN0ciwgKiprdzogYm9vbCkgLT4gTm9uZToKICAgICAgICAgc2Vs
Zi5fdHcubGluZShtc2csICoqa3cpCiAKLSAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2Vs
ZiwgZXhjcmVwcik6Ci0gICAgICAgIGZvciBsaW5lIGluIHNpeC50ZXh0X3R5cGUoZXhjcmVwciku
c3BsaXQoIlxuIik6CisgICAgZGVmIF9hZGRfc3RhdHMoc2VsZiwgY2F0ZWdvcnk6IHN0ciwgaXRl
bXM6IFNlcXVlbmNlW0FueV0pIC0+IE5vbmU6CisgICAgICAgIHNldF9tYWluX2NvbG9yID0gY2F0
ZWdvcnkgbm90IGluIHNlbGYuc3RhdHMKKyAgICAgICAgc2VsZi5zdGF0cy5zZXRkZWZhdWx0KGNh
dGVnb3J5LCBbXSkuZXh0ZW5kKGl0ZW1zKQorICAgICAgICBpZiBzZXRfbWFpbl9jb2xvcjoKKyAg
ICAgICAgICAgIHNlbGYuX3NldF9tYWluX2NvbG9yKCkKKworICAgIGRlZiBweXRlc3RfaW50ZXJu
YWxlcnJvcihzZWxmLCBleGNyZXByOiBFeGNlcHRpb25SZXByKSAtPiBib29sOgorICAgICAgICBm
b3IgbGluZSBpbiBzdHIoZXhjcmVwcikuc3BsaXQoIlxuIik6CiAgICAgICAgICAgICBzZWxmLndy
aXRlX2xpbmUoIklOVEVSTkFMRVJST1I+ICIgKyBsaW5lKQotICAgICAgICByZXR1cm4gMQorICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHB5dGVzdF93YXJuaW5nX3JlY29yZGVkKAorICAg
ICAgICBzZWxmLCB3YXJuaW5nX21lc3NhZ2U6IHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlLCBub2Rl
aWQ6IHN0ciwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGZyb20gX3B5dGVzdC53YXJuaW5ncyBp
bXBvcnQgd2FybmluZ19yZWNvcmRfdG9fc3RyCiAKLSAgICBkZWYgcHl0ZXN0X2xvZ3dhcm5pbmco
c2VsZiwgY29kZSwgZnNsb2NhdGlvbiwgbWVzc2FnZSwgbm9kZWlkKToKLSAgICAgICAgd2Fybmlu
Z3MgPSBzZWxmLnN0YXRzLnNldGRlZmF1bHQoIndhcm5pbmdzIiwgW10pCi0gICAgICAgIHdhcm5p
bmcgPSBXYXJuaW5nUmVwb3J0KAotICAgICAgICAgICAgY29kZT1jb2RlLCBmc2xvY2F0aW9uPWZz
bG9jYXRpb24sIG1lc3NhZ2U9bWVzc2FnZSwgbm9kZWlkPW5vZGVpZAorICAgICAgICBmc2xvY2F0
aW9uID0gd2FybmluZ19tZXNzYWdlLmZpbGVuYW1lLCB3YXJuaW5nX21lc3NhZ2UubGluZW5vCisg
ICAgICAgIG1lc3NhZ2UgPSB3YXJuaW5nX3JlY29yZF90b19zdHIod2FybmluZ19tZXNzYWdlKQor
CisgICAgICAgIHdhcm5pbmdfcmVwb3J0ID0gV2FybmluZ1JlcG9ydCgKKyAgICAgICAgICAgIGZz
bG9jYXRpb249ZnNsb2NhdGlvbiwgbWVzc2FnZT1tZXNzYWdlLCBub2RlaWQ9bm9kZWlkCiAgICAg
ICAgICkKLSAgICAgICAgd2FybmluZ3MuYXBwZW5kKHdhcm5pbmcpCisgICAgICAgIHNlbGYuX2Fk
ZF9zdGF0cygid2FybmluZ3MiLCBbd2FybmluZ19yZXBvcnRdKQogCi0gICAgZGVmIHB5dGVzdF9w
bHVnaW5fcmVnaXN0ZXJlZChzZWxmLCBwbHVnaW4pOgorICAgIGRlZiBweXRlc3RfcGx1Z2luX3Jl
Z2lzdGVyZWQoc2VsZiwgcGx1Z2luOiBfUGx1Z2d5UGx1Z2luKSAtPiBOb25lOgogICAgICAgICBp
ZiBzZWxmLmNvbmZpZy5vcHRpb24udHJhY2Vjb25maWc6Ci0gICAgICAgICAgICBtc2cgPSAiUExV
R0lOIHJlZ2lzdGVyZWQ6ICVzIiAlIChwbHVnaW4sKQotICAgICAgICAgICAgIyBYWFggdGhpcyBl
dmVudCBtYXkgaGFwcGVuIGR1cmluZyBzZXR1cC90ZWFyZG93biB0aW1lCisgICAgICAgICAgICBt
c2cgPSAiUExVR0lOIHJlZ2lzdGVyZWQ6IHt9Ii5mb3JtYXQocGx1Z2luKQorICAgICAgICAgICAg
IyBYWFggVGhpcyBldmVudCBtYXkgaGFwcGVuIGR1cmluZyBzZXR1cC90ZWFyZG93biB0aW1lCiAg
ICAgICAgICAgICAjICAgICB3aGljaCB1bmZvcnR1bmF0ZWx5IGNhcHR1cmVzIG91ciBvdXRwdXQg
aGVyZQotICAgICAgICAgICAgIyAgICAgd2hpY2ggZ2FyYmxlcyBvdXIgb3V0cHV0IGlmIHdlIHVz
ZSBzZWxmLndyaXRlX2xpbmUKKyAgICAgICAgICAgICMgICAgIHdoaWNoIGdhcmJsZXMgb3VyIG91
dHB1dCBpZiB3ZSB1c2Ugc2VsZi53cml0ZV9saW5lLgogICAgICAgICAgICAgc2VsZi53cml0ZV9s
aW5lKG1zZykKIAotICAgIGRlZiBweXRlc3RfZGVzZWxlY3RlZChzZWxmLCBpdGVtcyk6Ci0gICAg
ICAgIHNlbGYuc3RhdHMuc2V0ZGVmYXVsdCgiZGVzZWxlY3RlZCIsIFtdKS5leHRlbmQoaXRlbXMp
CisgICAgZGVmIHB5dGVzdF9kZXNlbGVjdGVkKHNlbGYsIGl0ZW1zOiBTZXF1ZW5jZVtJdGVtXSkg
LT4gTm9uZToKKyAgICAgICAgc2VsZi5fYWRkX3N0YXRzKCJkZXNlbGVjdGVkIiwgaXRlbXMpCiAK
LSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQoc2VsZiwgbm9kZWlkLCBsb2NhdGlvbik6
Ci0gICAgICAgICMgZW5zdXJlIHRoYXQgdGhlIHBhdGggaXMgcHJpbnRlZCBiZWZvcmUgdGhlCi0g
ICAgICAgICMgMXN0IHRlc3Qgb2YgYSBtb2R1bGUgc3RhcnRzIHJ1bm5pbmcKKyAgICBkZWYgcHl0
ZXN0X3J1bnRlc3RfbG9nc3RhcnQoCisgICAgICAgIHNlbGYsIG5vZGVpZDogc3RyLCBsb2NhdGlv
bjogVHVwbGVbc3RyLCBPcHRpb25hbFtpbnRdLCBzdHJdCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAjIEVuc3VyZSB0aGF0IHRoZSBwYXRoIGlzIHByaW50ZWQgYmVmb3JlIHRoZQorICAgICAgICAj
IDFzdCB0ZXN0IG9mIGEgbW9kdWxlIHN0YXJ0cyBydW5uaW5nLgogICAgICAgICBpZiBzZWxmLnNo
b3dsb25ndGVzdGluZm86CiAgICAgICAgICAgICBsaW5lID0gc2VsZi5fbG9jYXRpb25saW5lKG5v
ZGVpZCwgKmxvY2F0aW9uKQogICAgICAgICAgICAgc2VsZi53cml0ZV9lbnN1cmVfcHJlZml4KGxp
bmUsICIiKQorICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGVsaWYgc2VsZi5zaG93
ZnNwYXRoOgotICAgICAgICAgICAgZnNpZCA9IG5vZGVpZC5zcGxpdCgiOjoiKVswXQotICAgICAg
ICAgICAgc2VsZi53cml0ZV9mc3BhdGhfcmVzdWx0KGZzaWQsICIiKQorICAgICAgICAgICAgc2Vs
Zi53cml0ZV9mc3BhdGhfcmVzdWx0KG5vZGVpZCwgIiIpCisgICAgICAgICAgICBzZWxmLmZsdXNo
KCkKIAotICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQoc2VsZiwgcmVwb3J0KToKKyAg
ICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkg
LT4gTm9uZToKKyAgICAgICAgc2VsZi5fdGVzdHNfcmFuID0gVHJ1ZQogICAgICAgICByZXAgPSBy
ZXBvcnQKLSAgICAgICAgcmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3Rlc3Rz
dGF0dXMocmVwb3J0PXJlcCkKLSAgICAgICAgY2F0LCBsZXR0ZXIsIHdvcmQgPSByZXMKLSAgICAg
ICAgaWYgaXNpbnN0YW5jZSh3b3JkLCB0dXBsZSk6Ci0gICAgICAgICAgICB3b3JkLCBtYXJrdXAg
PSB3b3JkCi0gICAgICAgIGVsc2U6CisgICAgICAgIHJlcyA9IHNlbGYuY29uZmlnLmhvb2sucHl0
ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKAorICAgICAgICAgICAgcmVwb3J0PXJlcCwgY29uZmlnPXNl
bGYuY29uZmlnCisgICAgICAgICkgICMgdHlwZTogVHVwbGVbc3RyLCBzdHIsIFVuaW9uW3N0ciwg
VHVwbGVbc3RyLCBNYXBwaW5nW3N0ciwgYm9vbF1dXV0KKyAgICAgICAgY2F0ZWdvcnksIGxldHRl
ciwgd29yZCA9IHJlcworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh3b3JkLCB0dXBsZSk6CiAg
ICAgICAgICAgICBtYXJrdXAgPSBOb25lCi0gICAgICAgIHNlbGYuc3RhdHMuc2V0ZGVmYXVsdChj
YXQsIFtdKS5hcHBlbmQocmVwKQotICAgICAgICBzZWxmLl90ZXN0c19yYW4gPSBUcnVlCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICB3b3JkLCBtYXJrdXAgPSB3b3JkCisgICAgICAgIHNlbGYu
X2FkZF9zdGF0cyhjYXRlZ29yeSwgW3JlcF0pCiAgICAgICAgIGlmIG5vdCBsZXR0ZXIgYW5kIG5v
dCB3b3JkOgotICAgICAgICAgICAgIyBwcm9iYWJseSBwYXNzZWQgc2V0dXAvdGVhcmRvd24KKyAg
ICAgICAgICAgICMgUHJvYmFibHkgcGFzc2VkIHNldHVwL3RlYXJkb3duLgogICAgICAgICAgICAg
cmV0dXJuCiAgICAgICAgIHJ1bm5pbmdfeGRpc3QgPSBoYXNhdHRyKHJlcCwgIm5vZGUiKQotICAg
ICAgICBpZiBzZWxmLnZlcmJvc2l0eSA8PSAwOgotICAgICAgICAgICAgaWYgbm90IHJ1bm5pbmdf
eGRpc3QgYW5kIHNlbGYuc2hvd2ZzcGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2Zz
cGF0aF9yZXN1bHQocmVwLm5vZGVpZCwgbGV0dGVyKQorICAgICAgICBpZiBtYXJrdXAgaXMgTm9u
ZToKKyAgICAgICAgICAgIHdhc194ZmFpbCA9IGhhc2F0dHIocmVwb3J0LCAid2FzeGZhaWwiKQor
ICAgICAgICAgICAgaWYgcmVwLnBhc3NlZCBhbmQgbm90IHdhc194ZmFpbDoKKyAgICAgICAgICAg
ICAgICBtYXJrdXAgPSB7ImdyZWVuIjogVHJ1ZX0KKyAgICAgICAgICAgIGVsaWYgcmVwLnBhc3Nl
ZCBhbmQgd2FzX3hmYWlsOgorICAgICAgICAgICAgICAgIG1hcmt1cCA9IHsieWVsbG93IjogVHJ1
ZX0KKyAgICAgICAgICAgIGVsaWYgcmVwLmZhaWxlZDoKKyAgICAgICAgICAgICAgICBtYXJrdXAg
PSB7InJlZCI6IFRydWV9CisgICAgICAgICAgICBlbGlmIHJlcC5za2lwcGVkOgorICAgICAgICAg
ICAgICAgIG1hcmt1cCA9IHsieWVsbG93IjogVHJ1ZX0KICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUobGV0dGVyKQorICAgICAgICAgICAgICAgIG1hcmt1
cCA9IHt9CisgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5IDw9IDA6CisgICAgICAgICAgICBzZWxm
Ll90dy53cml0ZShsZXR0ZXIsICoqbWFya3VwKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
c2VsZi5fcHJvZ3Jlc3Nfbm9kZWlkc19yZXBvcnRlZC5hZGQocmVwLm5vZGVpZCkKLSAgICAgICAg
ICAgIGlmIG1hcmt1cCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0g
ICAgICAgICAgICAgICAgICAgIG1hcmt1cCA9IHsiZ3JlZW4iOiBUcnVlfQotICAgICAgICAgICAg
ICAgIGVsaWYgcmVwLmZhaWxlZDoKLSAgICAgICAgICAgICAgICAgICAgbWFya3VwID0geyJyZWQi
OiBUcnVlfQotICAgICAgICAgICAgICAgIGVsaWYgcmVwLnNraXBwZWQ6Ci0gICAgICAgICAgICAg
ICAgICAgIG1hcmt1cCA9IHsieWVsbG93IjogVHJ1ZX0KLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7fQogICAgICAgICAgICAgbGluZSA9IHNlbGYu
X2xvY2F0aW9ubGluZShyZXAubm9kZWlkLCAqcmVwLmxvY2F0aW9uKQogICAgICAgICAgICAgaWYg
bm90IHJ1bm5pbmdfeGRpc3Q6CiAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9lbnN1cmVfcHJl
Zml4KGxpbmUsIHdvcmQsICoqbWFya3VwKQpAQCAtNDAzLDc0ICs1NTgsMTE0IEBAIGNsYXNzIFRl
cm1pbmFsUmVwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl90dy53cml0ZSh3
b3JkLCAqKm1hcmt1cCkKICAgICAgICAgICAgICAgICBzZWxmLl90dy53cml0ZSgiICIgKyBsaW5l
KQogICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IC0yCisgICAgICAgIHNlbGYu
Zmx1c2goKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9pc19sYXN0X2l0ZW0oc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3Nlc3Npb24gaXMgbm90IE5vbmUKKyAgICAgICAg
cmV0dXJuIGxlbihzZWxmLl9wcm9ncmVzc19ub2RlaWRzX3JlcG9ydGVkKSA9PSBzZWxmLl9zZXNz
aW9uLnRlc3RzY29sbGVjdGVkCiAKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoKHNl
bGYsIG5vZGVpZCk6CisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaChzZWxmLCBub2Rl
aWQ6IHN0cikgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3Nlc3Npb24KICAgICAgICAg
aWYgc2VsZi52ZXJib3NpdHkgPD0gMCBhbmQgc2VsZi5fc2hvd19wcm9ncmVzc19pbmZvOgorICAg
ICAgICAgICAgaWYgc2VsZi5fc2hvd19wcm9ncmVzc19pbmZvID09ICJjb3VudCI6CisgICAgICAg
ICAgICAgICAgbnVtX3Rlc3RzID0gc2VsZi5fc2Vzc2lvbi50ZXN0c2NvbGxlY3RlZAorICAgICAg
ICAgICAgICAgIHByb2dyZXNzX2xlbmd0aCA9IGxlbigiIFt7fS97fV0iLmZvcm1hdChzdHIobnVt
X3Rlc3RzKSwgc3RyKG51bV90ZXN0cykpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBwcm9ncmVzc19sZW5ndGggPSBsZW4oIiBbMTAwJV0iKQorCiAgICAgICAgICAgICBzZWxm
Ll9wcm9ncmVzc19ub2RlaWRzX3JlcG9ydGVkLmFkZChub2RlaWQpCi0gICAgICAgICAgICBsYXN0
X2l0ZW0gPSBsZW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJvZ3Jlc3Nfbm9kZWlkc19yZXBv
cnRlZAotICAgICAgICAgICAgKSA9PSBzZWxmLl9zZXNzaW9uLnRlc3RzY29sbGVjdGVkCi0gICAg
ICAgICAgICBpZiBsYXN0X2l0ZW06CisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2xhc3RfaXRl
bToKICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9wcm9ncmVzc19pbmZvcm1hdGlvbl9maWxs
aW5nX3NwYWNlKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcGFzdF9lZGdl
ID0gc2VsZi5fdHcuY2hhcnNfb25fY3VycmVudF9saW5lICsgc2VsZi5fUFJPR1JFU1NfTEVOR1RI
ICsgMSA+PSBzZWxmLl9zY3JlZW5fd2lkdGgKKyAgICAgICAgICAgICAgICBtYWluX2NvbG9yLCBf
ID0gc2VsZi5fZ2V0X21haW5fY29sb3IoKQorICAgICAgICAgICAgICAgIHcgPSBzZWxmLl93aWR0
aF9vZl9jdXJyZW50X2xpbmUKKyAgICAgICAgICAgICAgICBwYXN0X2VkZ2UgPSB3ICsgcHJvZ3Jl
c3NfbGVuZ3RoICsgMSA+PSBzZWxmLl9zY3JlZW5fd2lkdGgKICAgICAgICAgICAgICAgICBpZiBw
YXN0X2VkZ2U6CiAgICAgICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2dldF9wcm9ncmVzc19p
bmZvcm1hdGlvbl9tZXNzYWdlKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUo
bXNnICsgIlxuIiwgY3lhbj1UcnVlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy53cml0
ZShtc2cgKyAiXG4iLCAqKnttYWluX2NvbG9yOiBUcnVlfSkKIAotICAgIF9QUk9HUkVTU19MRU5H
VEggPSBsZW4oIiBbMTAwJV0iKQotCi0gICAgZGVmIF9nZXRfcHJvZ3Jlc3NfaW5mb3JtYXRpb25f
bWVzc2FnZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJjYXB0dXJl
IikgPT0gIm5vIjoKLSAgICAgICAgICAgIHJldHVybiAiIgorICAgIGRlZiBfZ2V0X3Byb2dyZXNz
X2luZm9ybWF0aW9uX21lc3NhZ2Uoc2VsZikgLT4gc3RyOgorICAgICAgICBhc3NlcnQgc2VsZi5f
c2Vzc2lvbgogICAgICAgICBjb2xsZWN0ZWQgPSBzZWxmLl9zZXNzaW9uLnRlc3RzY29sbGVjdGVk
Ci0gICAgICAgIGlmIGNvbGxlY3RlZDoKLSAgICAgICAgICAgIHByb2dyZXNzID0gbGVuKHNlbGYu
X3Byb2dyZXNzX25vZGVpZHNfcmVwb3J0ZWQpICogMTAwIC8vIGNvbGxlY3RlZAotICAgICAgICAg
ICAgcmV0dXJuICIgW3s6M2R9JV0iLmZvcm1hdChwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICIg
WzEwMCVdIgorICAgICAgICBpZiBzZWxmLl9zaG93X3Byb2dyZXNzX2luZm8gPT0gImNvdW50IjoK
KyAgICAgICAgICAgIGlmIGNvbGxlY3RlZDoKKyAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IHNl
bGYuX3Byb2dyZXNzX25vZGVpZHNfcmVwb3J0ZWQKKyAgICAgICAgICAgICAgICBjb3VudGVyX2Zv
cm1hdCA9ICJ7ezp7fWR9fSIuZm9ybWF0KGxlbihzdHIoY29sbGVjdGVkKSkpCisgICAgICAgICAg
ICAgICAgZm9ybWF0X3N0cmluZyA9ICIgW3t9L3t7fX1dIi5mb3JtYXQoY291bnRlcl9mb3JtYXQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9zdHJpbmcuZm9ybWF0KGxlbihwcm9ncmVz
cyksIGNvbGxlY3RlZCkKKyAgICAgICAgICAgIHJldHVybiAiIFsge30gLyB7fSBdIi5mb3JtYXQo
Y29sbGVjdGVkLCBjb2xsZWN0ZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBjb2xs
ZWN0ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICIgW3s6M2R9JV0iLmZvcm1hdCgKKyAgICAg
ICAgICAgICAgICAgICAgbGVuKHNlbGYuX3Byb2dyZXNzX25vZGVpZHNfcmVwb3J0ZWQpICogMTAw
IC8vIGNvbGxlY3RlZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiAiIFsx
MDAlXSIKIAotICAgIGRlZiBfd3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFj
ZShzZWxmKToKKyAgICBkZWYgX3dyaXRlX3Byb2dyZXNzX2luZm9ybWF0aW9uX2ZpbGxpbmdfc3Bh
Y2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgY29sb3IsIF8gPSBzZWxmLl9nZXRfbWFpbl9jb2xv
cigpCiAgICAgICAgIG1zZyA9IHNlbGYuX2dldF9wcm9ncmVzc19pbmZvcm1hdGlvbl9tZXNzYWdl
KCkKLSAgICAgICAgZmlsbCA9ICIgIiAqICgKLSAgICAgICAgICAgIHNlbGYuX3R3LmZ1bGx3aWR0
aCAtIHNlbGYuX3R3LmNoYXJzX29uX2N1cnJlbnRfbGluZSAtIGxlbihtc2cpIC0gMQotICAgICAg
ICApCi0gICAgICAgIHNlbGYud3JpdGUoZmlsbCArIG1zZywgY3lhbj1UcnVlKQorICAgICAgICB3
ID0gc2VsZi5fd2lkdGhfb2ZfY3VycmVudF9saW5lCisgICAgICAgIGZpbGwgPSBzZWxmLl90dy5m
dWxsd2lkdGggLSB3IC0gMQorICAgICAgICBzZWxmLndyaXRlKG1zZy5yanVzdChmaWxsKSwgZmx1
c2g9VHJ1ZSwgKip7Y29sb3I6IFRydWV9KQogCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uKHNl
bGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc2F0dHkgYW5kIHNlbGYuY29uZmlnLm9wdGlvbi52
ZXJib3NlID49IDE6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCJjb2xsZWN0aW5nIC4uLiAiLCBi
b2xkPVRydWUpCisgICAgQHByb3BlcnR5CisgICAgZGVmIF93aWR0aF9vZl9jdXJyZW50X2xpbmUo
c2VsZikgLT4gaW50OgorICAgICAgICAiIiJSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSBjdXJyZW50
IGxpbmUuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl90dy53aWR0aF9vZl9jdXJyZW50X2xpbmUK
IAotICAgIGRlZiBweXRlc3RfY29sbGVjdHJlcG9ydChzZWxmLCByZXBvcnQpOgorICAgIGRlZiBw
eXRlc3RfY29sbGVjdGlvbihzZWxmKSAtPiBOb25lOgorICAgICAgICBpZiBzZWxmLmlzYXR0eToK
KyAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi52ZXJib3NlID49IDA6CisgICAgICAg
ICAgICAgICAgc2VsZi53cml0ZSgiY29sbGVjdGluZyAuLi4gIiwgZmx1c2g9VHJ1ZSwgYm9sZD1U
cnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbGxlY3RfcmVwb3J0X2xhc3Rfd3JpdGUgPSB0
aW1pbmcudGltZSgpCisgICAgICAgIGVsaWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPj0g
MToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoImNvbGxlY3RpbmcgLi4uICIsIGZsdXNoPVRydWUs
IGJvbGQ9VHJ1ZSkKKworICAgIGRlZiBweXRlc3RfY29sbGVjdHJlcG9ydChzZWxmLCByZXBvcnQ6
IENvbGxlY3RSZXBvcnQpIC0+IE5vbmU6CiAgICAgICAgIGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAg
ICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoImVycm9yIiwgW10pLmFwcGVuZChyZXBvcnQp
CisgICAgICAgICAgICBzZWxmLl9hZGRfc3RhdHMoImVycm9yIiwgW3JlcG9ydF0pCiAgICAgICAg
IGVsaWYgcmVwb3J0LnNraXBwZWQ6Ci0gICAgICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQo
InNraXBwZWQiLCBbXSkuYXBwZW5kKHJlcG9ydCkKKyAgICAgICAgICAgIHNlbGYuX2FkZF9zdGF0
cygic2tpcHBlZCIsIFtyZXBvcnRdKQogICAgICAgICBpdGVtcyA9IFt4IGZvciB4IGluIHJlcG9y
dC5yZXN1bHQgaWYgaXNpbnN0YW5jZSh4LCBweXRlc3QuSXRlbSldCiAgICAgICAgIHNlbGYuX251
bWNvbGxlY3RlZCArPSBsZW4oaXRlbXMpCiAgICAgICAgIGlmIHNlbGYuaXNhdHR5OgotICAgICAg
ICAgICAgIyBzZWxmLndyaXRlX2ZzcGF0aF9yZXN1bHQocmVwb3J0Lm5vZGVpZCwgJ0UnKQogICAg
ICAgICAgICAgc2VsZi5yZXBvcnRfY29sbGVjdCgpCiAKLSAgICBkZWYgcmVwb3J0X2NvbGxlY3Qo
c2VsZiwgZmluYWw9RmFsc2UpOgorICAgIGRlZiByZXBvcnRfY29sbGVjdChzZWxmLCBmaW5hbDog
Ym9vbCA9IEZhbHNlKSAtPiBOb25lOgogICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udmVy
Ym9zZSA8IDA6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBpZiBub3QgZmluYWw6Cisg
ICAgICAgICAgICAjIE9ubHkgd3JpdGUgImNvbGxlY3RpbmciIHJlcG9ydCBldmVyeSAwLjVzLgor
ICAgICAgICAgICAgdCA9IHRpbWluZy50aW1lKCkKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9jb2xsZWN0X3JlcG9ydF9sYXN0X3dyaXRlIGlzIG5vdCBOb25lCisgICAg
ICAgICAgICAgICAgYW5kIHNlbGYuX2NvbGxlY3RfcmVwb3J0X2xhc3Rfd3JpdGUgPiB0IC0gUkVQ
T1JUX0NPTExFQ1RJTkdfUkVTT0xVVElPTgorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYuX2NvbGxlY3RfcmVwb3J0X2xhc3Rfd3JpdGUgPSB0
CisKICAgICAgICAgZXJyb3JzID0gbGVuKHNlbGYuc3RhdHMuZ2V0KCJlcnJvciIsIFtdKSkKICAg
ICAgICAgc2tpcHBlZCA9IGxlbihzZWxmLnN0YXRzLmdldCgic2tpcHBlZCIsIFtdKSkKICAgICAg
ICAgZGVzZWxlY3RlZCA9IGxlbihzZWxmLnN0YXRzLmdldCgiZGVzZWxlY3RlZCIsIFtdKSkKKyAg
ICAgICAgc2VsZWN0ZWQgPSBzZWxmLl9udW1jb2xsZWN0ZWQgLSBlcnJvcnMgLSBza2lwcGVkIC0g
ZGVzZWxlY3RlZAogICAgICAgICBpZiBmaW5hbDoKICAgICAgICAgICAgIGxpbmUgPSAiY29sbGVj
dGVkICIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxpbmUgPSAiY29sbGVjdGluZyAiCi0g
ICAgICAgIGxpbmUgKz0gc3RyKHNlbGYuX251bWNvbGxlY3RlZCkgKyAiIGl0ZW0iICsgKAotICAg
ICAgICAgICAgIiIgaWYgc2VsZi5fbnVtY29sbGVjdGVkID09IDEgZWxzZSAicyIKKyAgICAgICAg
bGluZSArPSAoCisgICAgICAgICAgICBzdHIoc2VsZi5fbnVtY29sbGVjdGVkKSArICIgaXRlbSIg
KyAoIiIgaWYgc2VsZi5fbnVtY29sbGVjdGVkID09IDEgZWxzZSAicyIpCiAgICAgICAgICkKICAg
ICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgbGluZSArPSAiIC8gJWQgZXJyb3JzIiAlIGVy
cm9ycworICAgICAgICAgICAgbGluZSArPSAiIC8gJWQgZXJyb3IlcyIgJSAoZXJyb3JzLCAicyIg
aWYgZXJyb3JzICE9IDEgZWxzZSAiIikKICAgICAgICAgaWYgZGVzZWxlY3RlZDoKICAgICAgICAg
ICAgIGxpbmUgKz0gIiAvICVkIGRlc2VsZWN0ZWQiICUgZGVzZWxlY3RlZAogICAgICAgICBpZiBz
a2lwcGVkOgogICAgICAgICAgICAgbGluZSArPSAiIC8gJWQgc2tpcHBlZCIgJSBza2lwcGVkCisg
ICAgICAgIGlmIHNlbGYuX251bWNvbGxlY3RlZCA+IHNlbGVjdGVkID4gMDoKKyAgICAgICAgICAg
IGxpbmUgKz0gIiAvICVkIHNlbGVjdGVkIiAlIHNlbGVjdGVkCiAgICAgICAgIGlmIHNlbGYuaXNh
dHR5OgogICAgICAgICAgICAgc2VsZi5yZXdyaXRlKGxpbmUsIGJvbGQ9VHJ1ZSwgZXJhc2U9VHJ1
ZSkKICAgICAgICAgICAgIGlmIGZpbmFsOgpAQCAtNDc5LDc0ICs2NzQsODggQEAgY2xhc3MgVGVy
bWluYWxSZXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGxpbmUp
CiAKICAgICBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2VsZik6Ci0gICAgICAgIHNlbGYucmVwb3J0X2NvbGxlY3Qo
VHJ1ZSkKLQotICAgIEBweXRlc3QuaG9va2ltcGwodHJ5bGFzdD1UcnVlKQotICAgIGRlZiBweXRl
c3Rfc2Vzc2lvbnN0YXJ0KHNlbGYsIHNlc3Npb24pOgorICAgIGRlZiBweXRlc3Rfc2Vzc2lvbnN0
YXJ0KHNlbGYsIHNlc3Npb246ICJTZXNzaW9uIikgLT4gTm9uZToKICAgICAgICAgc2VsZi5fc2Vz
c2lvbiA9IHNlc3Npb24KLSAgICAgICAgc2VsZi5fc2Vzc2lvbnN0YXJ0dGltZSA9IHRpbWUudGlt
ZSgpCisgICAgICAgIHNlbGYuX3Nlc3Npb25zdGFydHRpbWUgPSB0aW1pbmcudGltZSgpCiAgICAg
ICAgIGlmIG5vdCBzZWxmLnNob3doZWFkZXI6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAg
c2VsZi53cml0ZV9zZXAoIj0iLCAidGVzdCBzZXNzaW9uIHN0YXJ0cyIsIGJvbGQ9VHJ1ZSkKICAg
ICAgICAgdmVyaW5mbyA9IHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkKLSAgICAgICAgbXNnID0g
InBsYXRmb3JtICVzIC0tIFB5dGhvbiAlcyIgJSAoc3lzLnBsYXRmb3JtLCB2ZXJpbmZvKQotICAg
ICAgICBpZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6Ci0gICAgICAgICAgICB2
ZXJpbmZvID0gIi4iLmpvaW4obWFwKHN0ciwgc3lzLnB5cHlfdmVyc2lvbl9pbmZvWzozXSkpCi0g
ICAgICAgICAgICBtc2cgKz0gIltweXB5LSVzLSVzXSIgJSAodmVyaW5mbywgc3lzLnB5cHlfdmVy
c2lvbl9pbmZvWzNdKQotICAgICAgICBtc2cgKz0gIiwgcHl0ZXN0LSVzLCBweS0lcywgcGx1Z2d5
LSVzIiAlICgKLSAgICAgICAgICAgIHB5dGVzdC5fX3ZlcnNpb25fXywgcHkuX192ZXJzaW9uX18s
IHBsdWdneS5fX3ZlcnNpb25fXwotICAgICAgICApCi0gICAgICAgIGlmICgKLSAgICAgICAgICAg
IHNlbGYudmVyYm9zaXR5ID4gMAotICAgICAgICAgICAgb3Igc2VsZi5jb25maWcub3B0aW9uLmRl
YnVnCi0gICAgICAgICAgICBvciBnZXRhdHRyKHNlbGYuY29uZmlnLm9wdGlvbiwgInBhc3RlYmlu
IiwgTm9uZSkKLSAgICAgICAgKToKLSAgICAgICAgICAgIG1zZyArPSAiIC0tICIgKyBzdHIoc3lz
LmV4ZWN1dGFibGUpCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShtc2cpCi0gICAgICAgIGxpbmVz
ID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X2hlYWRlcigKLSAgICAgICAgICAgIGNv
bmZpZz1zZWxmLmNvbmZpZywgc3RhcnRkaXI9c2VsZi5zdGFydGRpcgotICAgICAgICApCi0gICAg
ICAgIHNlbGYuX3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hvb2tzKGxpbmVzKQorICAgICAgICBp
ZiBub3Qgc2VsZi5ub19oZWFkZXI6CisgICAgICAgICAgICBtc2cgPSAicGxhdGZvcm0ge30gLS0g
UHl0aG9uIHt9Ii5mb3JtYXQoc3lzLnBsYXRmb3JtLCB2ZXJpbmZvKQorICAgICAgICAgICAgcHlw
eV92ZXJzaW9uX2luZm8gPSBnZXRhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIiwgTm9uZSkK
KyAgICAgICAgICAgIGlmIHB5cHlfdmVyc2lvbl9pbmZvOgorICAgICAgICAgICAgICAgIHZlcmlu
Zm8gPSAiLiIuam9pbihtYXAoc3RyLCBweXB5X3ZlcnNpb25faW5mb1s6M10pKQorICAgICAgICAg
ICAgICAgIG1zZyArPSAiW3B5cHkte30te31dIi5mb3JtYXQodmVyaW5mbywgcHlweV92ZXJzaW9u
X2luZm9bM10pCisgICAgICAgICAgICBtc2cgKz0gIiwgcHl0ZXN0LXt9LCBweS17fSwgcGx1Z2d5
LXt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgcHl0ZXN0Ll9fdmVyc2lvbl9fLCBweS5fX3Zl
cnNpb25fXywgcGx1Z2d5Ll9fdmVyc2lvbl9fCisgICAgICAgICAgICApCisgICAgICAgICAgICBp
ZiAoCisgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPiAwCisgICAgICAgICAgICAgICAg
b3Igc2VsZi5jb25maWcub3B0aW9uLmRlYnVnCisgICAgICAgICAgICAgICAgb3IgZ2V0YXR0cihz
ZWxmLmNvbmZpZy5vcHRpb24sICJwYXN0ZWJpbiIsIE5vbmUpCisgICAgICAgICAgICApOgorICAg
ICAgICAgICAgICAgIG1zZyArPSAiIC0tICIgKyBzdHIoc3lzLmV4ZWN1dGFibGUpCisgICAgICAg
ICAgICBzZWxmLndyaXRlX2xpbmUobXNnKQorICAgICAgICAgICAgbGluZXMgPSBzZWxmLmNvbmZp
Zy5ob29rLnB5dGVzdF9yZXBvcnRfaGVhZGVyKAorICAgICAgICAgICAgICAgIGNvbmZpZz1zZWxm
LmNvbmZpZywgc3RhcnRkaXI9c2VsZi5zdGFydGRpcgorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5fd3JpdGVfcmVwb3J0X2xpbmVzX2Zyb21faG9va3MobGluZXMpCisKKyAgICBkZWYg
X3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hvb2tzKAorICAgICAgICBzZWxmLCBsaW5lczogU2Vx
dWVuY2VbVW5pb25bc3RyLCBTZXF1ZW5jZVtzdHJdXV0KKyAgICApIC0+IE5vbmU6CisgICAgICAg
IGZvciBsaW5lX29yX2xpbmVzIGluIHJldmVyc2VkKGxpbmVzKToKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UobGluZV9vcl9saW5lcywgc3RyKToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRl
X2xpbmUobGluZV9vcl9saW5lcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gbGluZV9vcl9saW5lczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0
ZV9saW5lKGxpbmUpCiAKLSAgICBkZWYgX3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hvb2tzKHNl
bGYsIGxpbmVzKToKLSAgICAgICAgbGluZXMucmV2ZXJzZSgpCi0gICAgICAgIGZvciBsaW5lIGlu
IGNvbGxhcHNlKGxpbmVzKToKLSAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShsaW5lKQorICAg
IGRlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihzZWxmLCBjb25maWc6IENvbmZpZykgLT4gTGlzdFtz
dHJdOgorICAgICAgICBsaW5lID0gInJvb3RkaXI6ICVzIiAlIGNvbmZpZy5yb290cGF0aAorCisg
ICAgICAgIGlmIGNvbmZpZy5pbmlwYXRoOgorICAgICAgICAgICAgbGluZSArPSAiLCBjb25maWdm
aWxlOiAiICsgYmVzdHJlbHBhdGgoY29uZmlnLnJvb3RwYXRoLCBjb25maWcuaW5pcGF0aCkKIAot
ICAgIGRlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihzZWxmLCBjb25maWcpOgotICAgICAgICBpbmlm
aWxlID0gIiIKLSAgICAgICAgaWYgY29uZmlnLmluaWZpbGU6Ci0gICAgICAgICAgICBpbmlmaWxl
ID0gIiAiICsgY29uZmlnLnJvb3RkaXIuYmVzdHJlbHBhdGgoY29uZmlnLmluaWZpbGUpCi0gICAg
ICAgIGxpbmVzID0gWyJyb290ZGlyOiAlcywgaW5pZmlsZTolcyIgJSAoY29uZmlnLnJvb3RkaXIs
IGluaWZpbGUpXQorICAgICAgICB0ZXN0cGF0aHMgPSBjb25maWcuZ2V0aW5pKCJ0ZXN0cGF0aHMi
KSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgaWYgdGVzdHBhdGhzIGFuZCBjb25maWcuYXJn
cyA9PSB0ZXN0cGF0aHM6CisgICAgICAgICAgICBsaW5lICs9ICIsIHRlc3RwYXRoczoge30iLmZv
cm1hdCgiLCAiLmpvaW4odGVzdHBhdGhzKSkKKworICAgICAgICByZXN1bHQgPSBbbGluZV0KIAog
ICAgICAgICBwbHVnaW5pbmZvID0gY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9wbHVnaW5fZGlz
dGluZm8oKQogICAgICAgICBpZiBwbHVnaW5pbmZvOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgicGx1Z2luczogJXMiICUgIiwgIi5qb2luKF9wbHVnaW5fbmFtZXZlcnNpb25zKHBsdWdpbmlu
Zm8pKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQo
InBsdWdpbnM6ICVzIiAlICIsICIuam9pbihfcGx1Z2luX25hbWV2ZXJzaW9ucyhwbHVnaW5pbmZv
KSkpCi0gICAgICAgIHJldHVybiBsaW5lcworICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbl9maW5p
c2goc2VsZiwgc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBOb25lOgorICAgICAgICBzZWxmLnJlcG9y
dF9jb2xsZWN0KFRydWUpCiAKLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNoKHNlbGYs
IHNlc3Npb24pOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24uY29sbGVjdG9ubHk6Ci0g
ICAgICAgICAgICBzZWxmLl9wcmludGNvbGxlY3RlZGl0ZW1zKHNlc3Npb24uaXRlbXMpCi0gICAg
ICAgICAgICBpZiBzZWxmLnN0YXRzLmdldCgiZmFpbGVkIik6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fdHcuc2VwKCIhIiwgImNvbGxlY3Rpb24gZmFpbHVyZXMiKQotICAgICAgICAgICAgICAgIGZv
ciByZXAgaW4gc2VsZi5zdGF0cy5nZXQoImZhaWxlZCIpOgotICAgICAgICAgICAgICAgICAgICBy
ZXAudG90ZXJtaW5hbChzZWxmLl90dykKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAg
ICAgICAgcmV0dXJuIDAKICAgICAgICAgbGluZXMgPSBzZWxmLmNvbmZpZy5ob29rLnB5dGVzdF9y
ZXBvcnRfY29sbGVjdGlvbmZpbmlzaCgKICAgICAgICAgICAgIGNvbmZpZz1zZWxmLmNvbmZpZywg
c3RhcnRkaXI9c2VsZi5zdGFydGRpciwgaXRlbXM9c2Vzc2lvbi5pdGVtcwogICAgICAgICApCiAg
ICAgICAgIHNlbGYuX3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hvb2tzKGxpbmVzKQogCi0gICAg
ZGVmIF9wcmludGNvbGxlY3RlZGl0ZW1zKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIyB0byBwcmlu
dCBvdXQgaXRlbXMgYW5kIHRoZWlyIHBhcmVudCBjb2xsZWN0b3JzCisgICAgICAgIGlmIHNlbGYu
Y29uZmlnLmdldG9wdGlvbigiY29sbGVjdG9ubHkiKToKKyAgICAgICAgICAgIGlmIHNlc3Npb24u
aXRlbXM6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPiAt
MToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZSgiIikKKyAgICAgICAgICAgICAg
ICBzZWxmLl9wcmludGNvbGxlY3RlZGl0ZW1zKHNlc3Npb24uaXRlbXMpCisKKyAgICAgICAgICAg
IGZhaWxlZCA9IHNlbGYuc3RhdHMuZ2V0KCJmYWlsZWQiKQorICAgICAgICAgICAgaWYgZmFpbGVk
OgorICAgICAgICAgICAgICAgIHNlbGYuX3R3LnNlcCgiISIsICJjb2xsZWN0aW9uIGZhaWx1cmVz
IikKKyAgICAgICAgICAgICAgICBmb3IgcmVwIGluIGZhaWxlZDoKKyAgICAgICAgICAgICAgICAg
ICAgcmVwLnRvdGVybWluYWwoc2VsZi5fdHcpCisKKyAgICBkZWYgX3ByaW50Y29sbGVjdGVkaXRl
bXMoc2VsZiwgaXRlbXM6IFNlcXVlbmNlW0l0ZW1dKSAtPiBOb25lOgorICAgICAgICAjIFRvIHBy
aW50IG91dCBpdGVtcyBhbmQgdGhlaXIgcGFyZW50IGNvbGxlY3RvcnMKICAgICAgICAgIyB3ZSB0
YWtlIGNhcmUgdG8gbGVhdmUgb3V0IEluc3RhbmNlcyBha2EgKCkKLSAgICAgICAgIyBiZWNhdXNl
IGxhdGVyIHZlcnNpb25zIGFyZSBnb2luZyB0byBnZXQgcmlkIG9mIHRoZW0gYW55d2F5CisgICAg
ICAgICMgYmVjYXVzZSBsYXRlciB2ZXJzaW9ucyBhcmUgZ29pbmcgdG8gZ2V0IHJpZCBvZiB0aGVt
IGFueXdheS4KICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPCAwOgogICAg
ICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPCAtMToKLSAgICAgICAgICAg
ICAgICBjb3VudHMgPSB7fQorICAgICAgICAgICAgICAgIGNvdW50cyA9IHt9ICAjIHR5cGU6IERp
Y3Rbc3RyLCBpbnRdCiAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAg
ICAgICAgICAgICAgIG5hbWUgPSBpdGVtLm5vZGVpZC5zcGxpdCgiOjoiLCAxKVswXQogICAgICAg
ICAgICAgICAgICAgICBjb3VudHNbbmFtZV0gPSBjb3VudHMuZ2V0KG5hbWUsIDApICsgMQpAQCAt
NTU0LDYzICs3NjMsNzggQEAgY2xhc3MgVGVybWluYWxSZXBvcnRlcihvYmplY3QpOgogICAgICAg
ICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKCIlczogJWQiICUgKG5hbWUsIGNvdW50KSkKICAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAg
ICAgICAgICAgICAgICAgIG5vZGVpZCA9IGl0ZW0ubm9kZWlkCi0gICAgICAgICAgICAgICAgICAg
IG5vZGVpZCA9IG5vZGVpZC5yZXBsYWNlKCI6OigpOjoiLCAiOjoiKQotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl90dy5saW5lKG5vZGVpZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcu
bGluZShpdGVtLm5vZGVpZCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzdGFjayA9IFtd
CisgICAgICAgIHN0YWNrID0gW10gICMgdHlwZTogTGlzdFtOb2RlXQogICAgICAgICBpbmRlbnQg
PSAiIgogICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgIG5lZWRlZF9jb2xs
ZWN0b3JzID0gaXRlbS5saXN0Y2hhaW4oKVsxOl0gICMgc3RyaXAgcm9vdCBub2RlCiAgICAgICAg
ICAgICB3aGlsZSBzdGFjazoKLSAgICAgICAgICAgICAgICBpZiBzdGFjayA9PSBuZWVkZWRfY29s
bGVjdG9yc1s6bGVuKHN0YWNrKV06CisgICAgICAgICAgICAgICAgaWYgc3RhY2sgPT0gbmVlZGVk
X2NvbGxlY3RvcnNbOiBsZW4oc3RhY2spXToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAg
ICAgICAgICAgICAgICBzdGFjay5wb3AoKQotICAgICAgICAgICAgZm9yIGNvbCBpbiBuZWVkZWRf
Y29sbGVjdG9yc1tsZW4oc3RhY2spOl06CisgICAgICAgICAgICBmb3IgY29sIGluIG5lZWRlZF9j
b2xsZWN0b3JzW2xlbihzdGFjaykgOl06CiAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKGNv
bCkKLSAgICAgICAgICAgICAgICAjIGlmIGNvbC5uYW1lID09ICIoKSI6Ci0gICAgICAgICAgICAg
ICAgIyAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGNvbC5uYW1lID09ICIoKSI6ICAj
IFNraXAgSW5zdGFuY2VzLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg
ICAgICAgIGluZGVudCA9IChsZW4oc3RhY2spIC0gMSkgKiAiICAiCi0gICAgICAgICAgICAgICAg
c2VsZi5fdHcubGluZSgiJXMlcyIgJSAoaW5kZW50LCBjb2wpKQorICAgICAgICAgICAgICAgIHNl
bGYuX3R3LmxpbmUoInt9e30iLmZvcm1hdChpbmRlbnQsIGNvbCkpCisgICAgICAgICAgICAgICAg
aWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPj0gMToKKyAgICAgICAgICAgICAgICAgICAg
b2JqID0gZ2V0YXR0cihjb2wsICJvYmoiLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBkb2Mg
PSBpbnNwZWN0LmdldGRvYyhvYmopIGlmIG9iaiBlbHNlIE5vbmUKKyAgICAgICAgICAgICAgICAg
ICAgaWYgZG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZG9jLnNwbGl0
bGluZXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKCJ7fXt9
Ii5mb3JtYXQoaW5kZW50ICsgIiAgIiwgbGluZSkpCiAKICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhv
b2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYsIGV4aXRz
dGF0dXMpOgorICAgIGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaCgKKyAgICAgICAgc2VsZiwgc2Vz
c2lvbjogIlNlc3Npb24iLCBleGl0c3RhdHVzOiBVbmlvbltpbnQsIEV4aXRDb2RlXQorICAgICk6
CiAgICAgICAgIG91dGNvbWUgPSB5aWVsZAogICAgICAgICBvdXRjb21lLmdldF9yZXN1bHQoKQog
ICAgICAgICBzZWxmLl90dy5saW5lKCIiKQogICAgICAgICBzdW1tYXJ5X2V4aXRfY29kZXMgPSAo
Ci0gICAgICAgICAgICBFWElUX09LLAotICAgICAgICAgICAgRVhJVF9URVNUU0ZBSUxFRCwKLSAg
ICAgICAgICAgIEVYSVRfSU5URVJSVVBURUQsCi0gICAgICAgICAgICBFWElUX1VTQUdFRVJST1Is
Ci0gICAgICAgICAgICBFWElUX05PVEVTVFNDT0xMRUNURUQsCisgICAgICAgICAgICBFeGl0Q29k
ZS5PSywKKyAgICAgICAgICAgIEV4aXRDb2RlLlRFU1RTX0ZBSUxFRCwKKyAgICAgICAgICAgIEV4
aXRDb2RlLklOVEVSUlVQVEVELAorICAgICAgICAgICAgRXhpdENvZGUuVVNBR0VfRVJST1IsCisg
ICAgICAgICAgICBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQsCiAgICAgICAgICkKLSAgICAg
ICAgaWYgZXhpdHN0YXR1cyBpbiBzdW1tYXJ5X2V4aXRfY29kZXM6CisgICAgICAgIGlmIGV4aXRz
dGF0dXMgaW4gc3VtbWFyeV9leGl0X2NvZGVzIGFuZCBub3Qgc2VsZi5ub19zdW1tYXJ5OgogICAg
ICAgICAgICAgc2VsZi5jb25maWcuaG9vay5weXRlc3RfdGVybWluYWxfc3VtbWFyeSgKLSAgICAg
ICAgICAgICAgICB0ZXJtaW5hbHJlcG9ydGVyPXNlbGYsIGV4aXRzdGF0dXM9ZXhpdHN0YXR1cwor
ICAgICAgICAgICAgICAgIHRlcm1pbmFscmVwb3J0ZXI9c2VsZiwgZXhpdHN0YXR1cz1leGl0c3Rh
dHVzLCBjb25maWc9c2VsZi5jb25maWcKICAgICAgICAgICAgICkKLSAgICAgICAgaWYgZXhpdHN0
YXR1cyA9PSBFWElUX0lOVEVSUlVQVEVEOgorICAgICAgICBpZiBzZXNzaW9uLnNob3VsZGZhaWw6
CisgICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiISIsIHN0cihzZXNzaW9uLnNob3VsZGZhaWwp
LCByZWQ9VHJ1ZSkKKyAgICAgICAgaWYgZXhpdHN0YXR1cyA9PSBFeGl0Q29kZS5JTlRFUlJVUFRF
RDoKICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9rZXlib2FyZGludGVycnVwdCgpCi0gICAgICAg
ICAgICBkZWwgc2VsZi5fa2V5Ym9hcmRpbnRlcnJ1cHRfbWVtbworICAgICAgICAgICAgc2VsZi5f
a2V5Ym9hcmRpbnRlcnJ1cHRfbWVtbyA9IE5vbmUKKyAgICAgICAgZWxpZiBzZXNzaW9uLnNob3Vs
ZHN0b3A6CisgICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiISIsIHN0cihzZXNzaW9uLnNob3Vs
ZHN0b3ApLCByZWQ9VHJ1ZSkKICAgICAgICAgc2VsZi5zdW1tYXJ5X3N0YXRzKCkKIAogICAgIEBw
eXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3Rlcm1pbmFs
X3N1bW1hcnkoc2VsZik6CisgICAgZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHNlbGYpIC0+
IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKICAgICAgICAgc2VsZi5zdW1tYXJ5X2Vycm9y
cygpCiAgICAgICAgIHNlbGYuc3VtbWFyeV9mYWlsdXJlcygpCi0gICAgICAgIHlpZWxkCiAgICAg
ICAgIHNlbGYuc3VtbWFyeV93YXJuaW5ncygpCiAgICAgICAgIHNlbGYuc3VtbWFyeV9wYXNzZXMo
KQorICAgICAgICB5aWVsZAorICAgICAgICBzZWxmLnNob3J0X3Rlc3Rfc3VtbWFyeSgpCisgICAg
ICAgICMgRGlzcGxheSBhbnkgZXh0cmEgd2FybmluZ3MgZnJvbSB0ZWFyZG93biBoZXJlIChpZiBh
bnkpLgorICAgICAgICBzZWxmLnN1bW1hcnlfd2FybmluZ3MoKQogCi0gICAgZGVmIHB5dGVzdF9r
ZXlib2FyZF9pbnRlcnJ1cHQoc2VsZiwgZXhjaW5mbyk6CisgICAgZGVmIHB5dGVzdF9rZXlib2Fy
ZF9pbnRlcnJ1cHQoc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSkg
LT4gTm9uZToKICAgICAgICAgc2VsZi5fa2V5Ym9hcmRpbnRlcnJ1cHRfbWVtbyA9IGV4Y2luZm8u
Z2V0cmVwcihmdW5jYXJncz1UcnVlKQogCi0gICAgZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShzZWxm
KToKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX2tleWJvYXJkaW50ZXJydXB0X21lbW8iKToK
KyAgICBkZWYgcHl0ZXN0X3VuY29uZmlndXJlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNl
bGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxm
Ll9yZXBvcnRfa2V5Ym9hcmRpbnRlcnJ1cHQoKQogCi0gICAgZGVmIF9yZXBvcnRfa2V5Ym9hcmRp
bnRlcnJ1cHQoc2VsZik6CisgICAgZGVmIF9yZXBvcnRfa2V5Ym9hcmRpbnRlcnJ1cHQoc2VsZikg
LT4gTm9uZToKICAgICAgICAgZXhjcmVwciA9IHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8K
KyAgICAgICAgYXNzZXJ0IGV4Y3JlcHIgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IGV4Y3Jl
cHIucmVwcmNyYXNoIGlzIG5vdCBOb25lCiAgICAgICAgIG1zZyA9IGV4Y3JlcHIucmVwcmNyYXNo
Lm1lc3NhZ2UKICAgICAgICAgc2VsZi53cml0ZV9zZXAoIiEiLCBtc2cpCiAgICAgICAgIGlmICJL
ZXlib2FyZEludGVycnVwdCIgaW4gbXNnOgpAQCAtNjE5LDM3ICs4NDMsMzcgQEAgY2xhc3MgVGVy
bWluYWxSZXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBleGNyZXByLnJlcHJjcmFzaC50b3Rlcm1pbmFsKHNlbGYuX3R3KQogICAgICAgICAgICAgICAg
IHNlbGYuX3R3LmxpbmUoCi0gICAgICAgICAgICAgICAgICAgICIodG8gc2hvdyBhIGZ1bGwgdHJh
Y2ViYWNrIG9uIEtleWJvYXJkSW50ZXJydXB0IHVzZSAtLWZ1bGx0cmFjZSkiLAorICAgICAgICAg
ICAgICAgICAgICAiKHRvIHNob3cgYSBmdWxsIHRyYWNlYmFjayBvbiBLZXlib2FyZEludGVycnVw
dCB1c2UgLS1mdWxsLXRyYWNlKSIsCiAgICAgICAgICAgICAgICAgICAgIHllbGxvdz1UcnVlLAog
ICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiBfbG9jYXRpb25saW5lKHNlbGYsIG5vZGVpZCwg
ZnNwYXRoLCBsaW5lbm8sIGRvbWFpbik6Ci0KICAgICAgICAgZGVmIG1rcmVsKG5vZGVpZCk6CiAg
ICAgICAgICAgICBsaW5lID0gc2VsZi5jb25maWcuY3dkX3JlbGF0aXZlX25vZGVpZChub2RlaWQp
CiAgICAgICAgICAgICBpZiBkb21haW4gYW5kIGxpbmUuZW5kc3dpdGgoZG9tYWluKToKLSAgICAg
ICAgICAgICAgICBsaW5lID0gbGluZVs6LWxlbihkb21haW4pXQorICAgICAgICAgICAgICAgIGxp
bmUgPSBsaW5lWzogLWxlbihkb21haW4pXQogICAgICAgICAgICAgICAgIHZhbHVlcyA9IGRvbWFp
bi5zcGxpdCgiWyIpCiAgICAgICAgICAgICAgICAgdmFsdWVzWzBdID0gdmFsdWVzWzBdLnJlcGxh
Y2UoIi4iLCAiOjoiKSAgIyBkb24ndCByZXBsYWNlICcuJyBpbiBwYXJhbXMKICAgICAgICAgICAg
ICAgICBsaW5lICs9ICJbIi5qb2luKHZhbHVlcykKICAgICAgICAgICAgIHJldHVybiBsaW5lCiAK
LSAgICAgICAgIyBjb2xsZWN0X2ZzcGF0aCBjb21lcyBmcm9tIHRlc3RpZCB3aGljaCBoYXMgYSAi
LyItbm9ybWFsaXplZCBwYXRoCisgICAgICAgICMgY29sbGVjdF9mc3BhdGggY29tZXMgZnJvbSB0
ZXN0aWQgd2hpY2ggaGFzIGEgIi8iLW5vcm1hbGl6ZWQgcGF0aC4KIAogICAgICAgICBpZiBmc3Bh
dGg6Ci0gICAgICAgICAgICByZXMgPSBta3JlbChub2RlaWQpLnJlcGxhY2UoIjo6KCkiLCAiIikg
ICMgcGFyZW5zLW5vcm1hbGl6YXRpb24KLSAgICAgICAgICAgIGlmIG5vZGVpZC5zcGxpdCgiOjoi
KVswXSAhPSBmc3BhdGgucmVwbGFjZSgiXFwiLCBub2Rlcy5TRVApOgotICAgICAgICAgICAgICAg
IHJlcyArPSAiIDwtICIgKyBzZWxmLnN0YXJ0ZGlyLmJlc3RyZWxwYXRoKGZzcGF0aCkKKyAgICAg
ICAgICAgIHJlcyA9IG1rcmVsKG5vZGVpZCkKKyAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5
ID49IDIgYW5kIG5vZGVpZC5zcGxpdCgiOjoiKVswXSAhPSBmc3BhdGgucmVwbGFjZSgKKyAgICAg
ICAgICAgICAgICAiXFwiLCBub2Rlcy5TRVAKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAg
ICAgcmVzICs9ICIgPC0gIiArIGJlc3RyZWxwYXRoKHNlbGYuc3RhcnRwYXRoLCBmc3BhdGgpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXMgPSAiW2xvY2F0aW9uXSIKICAgICAgICAgcmV0
dXJuIHJlcyArICIgIgogCiAgICAgZGVmIF9nZXRmYWlsdXJlaGVhZGxpbmUoc2VsZiwgcmVwKToK
LSAgICAgICAgaWYgaGFzYXR0cihyZXAsICJsb2NhdGlvbiIpOgotICAgICAgICAgICAgZnNwYXRo
LCBsaW5lbm8sIGRvbWFpbiA9IHJlcC5sb2NhdGlvbgotICAgICAgICAgICAgcmV0dXJuIGRvbWFp
bgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJ0ZXN0IHNlc3Npb24iICAjIFhY
WD8KKyAgICAgICAgaGVhZF9saW5lID0gcmVwLmhlYWRfbGluZQorICAgICAgICBpZiBoZWFkX2xp
bmU6CisgICAgICAgICAgICByZXR1cm4gaGVhZF9saW5lCisgICAgICAgIHJldHVybiAidGVzdCBz
ZXNzaW9uIiAgIyBYWFg/CiAKICAgICBkZWYgX2dldGNyYXNobGluZShzZWxmLCByZXApOgogICAg
ICAgICB0cnk6CkBAIC02NjEsOTMgKzg4NSwxNDQgQEAgY2xhc3MgVGVybWluYWxSZXBvcnRlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiAiIgogCiAgICAgIwotICAgICMgc3VtbWFy
aWVzIGZvciBzZXNzaW9uZmluaXNoCisgICAgIyBTdW1tYXJpZXMgZm9yIHNlc3Npb25maW5pc2gu
CiAgICAgIwotICAgIGRlZiBnZXRyZXBvcnRzKHNlbGYsIG5hbWUpOgorICAgIGRlZiBnZXRyZXBv
cnRzKHNlbGYsIG5hbWU6IHN0cik6CiAgICAgICAgIHZhbHVlcyA9IFtdCiAgICAgICAgIGZvciB4
IGluIHNlbGYuc3RhdHMuZ2V0KG5hbWUsIFtdKToKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRy
KHgsICJfcGRic2hvd24iKToKICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHgpCiAgICAg
ICAgIHJldHVybiB2YWx1ZXMKIAotICAgIGRlZiBzdW1tYXJ5X3dhcm5pbmdzKHNlbGYpOgorICAg
IGRlZiBzdW1tYXJ5X3dhcm5pbmdzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGlmIHNlbGYuaGFz
b3B0KCJ3Iik6Ci0gICAgICAgICAgICBhbGxfd2FybmluZ3MgPSBzZWxmLnN0YXRzLmdldCgid2Fy
bmluZ3MiKQorICAgICAgICAgICAgYWxsX3dhcm5pbmdzID0gc2VsZi5zdGF0cy5nZXQoCisgICAg
ICAgICAgICAgICAgIndhcm5pbmdzIgorICAgICAgICAgICAgKSAgIyB0eXBlOiBPcHRpb25hbFtM
aXN0W1dhcm5pbmdSZXBvcnRdXQogICAgICAgICAgICAgaWYgbm90IGFsbF93YXJuaW5nczoKICAg
ICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAgZ3JvdXBlZCA9IGl0ZXJ0b29scy5n
cm91cGJ5KAotICAgICAgICAgICAgICAgIGFsbF93YXJuaW5ncywga2V5PWxhbWJkYSB3cjogd3Iu
Z2V0X2xvY2F0aW9uKHNlbGYuY29uZmlnKQotICAgICAgICAgICAgKQorICAgICAgICAgICAgZmlu
YWwgPSBzZWxmLl9hbHJlYWR5X2Rpc3BsYXllZF93YXJuaW5ncyBpcyBub3QgTm9uZQorICAgICAg
ICAgICAgaWYgZmluYWw6CisgICAgICAgICAgICAgICAgd2FybmluZ19yZXBvcnRzID0gYWxsX3dh
cm5pbmdzW3NlbGYuX2FscmVhZHlfZGlzcGxheWVkX3dhcm5pbmdzIDpdCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHdhcm5pbmdfcmVwb3J0cyA9IGFsbF93YXJuaW5ncworICAg
ICAgICAgICAgc2VsZi5fYWxyZWFkeV9kaXNwbGF5ZWRfd2FybmluZ3MgPSBsZW4od2FybmluZ19y
ZXBvcnRzKQorICAgICAgICAgICAgaWYgbm90IHdhcm5pbmdfcmVwb3J0czoKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAgICAgcmVwb3J0c19ncm91cGVkX2J5X21lc3NhZ2UgPSAo
CisgICAgICAgICAgICAgICAgb3JkZXJfcHJlc2VydmluZ19kaWN0KCkKKyAgICAgICAgICAgICkg
ICMgdHlwZTogRGljdFtzdHIsIExpc3RbV2FybmluZ1JlcG9ydF1dCisgICAgICAgICAgICBmb3Ig
d3IgaW4gd2FybmluZ19yZXBvcnRzOgorICAgICAgICAgICAgICAgIHJlcG9ydHNfZ3JvdXBlZF9i
eV9tZXNzYWdlLnNldGRlZmF1bHQod3IubWVzc2FnZSwgW10pLmFwcGVuZCh3cikKKworICAgICAg
ICAgICAgZGVmIGNvbGxhcHNlZF9sb2NhdGlvbl9yZXBvcnQocmVwb3J0czogTGlzdFtXYXJuaW5n
UmVwb3J0XSkgLT4gc3RyOgorICAgICAgICAgICAgICAgIGxvY2F0aW9ucyA9IFtdCisgICAgICAg
ICAgICAgICAgZm9yIHcgaW4gcmVwb3J0czoKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24g
PSB3LmdldF9sb2NhdGlvbihzZWxmLmNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9j
YXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuYXBwZW5kKGxvY2F0aW9u
KQorCisgICAgICAgICAgICAgICAgaWYgbGVuKGxvY2F0aW9ucykgPCAxMDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICJcbiIuam9pbihtYXAoc3RyLCBsb2NhdGlvbnMpKQorCisgICAgICAg
ICAgICAgICAgY291bnRzX2J5X2ZpbGVuYW1lID0gb3JkZXJfcHJlc2VydmluZ19kaWN0KCkgICMg
dHlwZTogRGljdFtzdHIsIGludF0KKyAgICAgICAgICAgICAgICBmb3IgbG9jIGluIGxvY2F0aW9u
czoKKyAgICAgICAgICAgICAgICAgICAga2V5ID0gc3RyKGxvYykuc3BsaXQoIjo6IiwgMSlbMF0K
KyAgICAgICAgICAgICAgICAgICAgY291bnRzX2J5X2ZpbGVuYW1lW2tleV0gPSBjb3VudHNfYnlf
ZmlsZW5hbWUuZ2V0KGtleSwgMCkgKyAxCisgICAgICAgICAgICAgICAgcmV0dXJuICJcbiIuam9p
bigKKyAgICAgICAgICAgICAgICAgICAgInt9OiB7fSB3YXJuaW5ne30iLmZvcm1hdChrLCB2LCAi
cyIgaWYgdiA+IDEgZWxzZSAiIikKKyAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gY291
bnRzX2J5X2ZpbGVuYW1lLml0ZW1zKCkKKyAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAg
IHNlbGYud3JpdGVfc2VwKCI9IiwgIndhcm5pbmdzIHN1bW1hcnkiLCB5ZWxsb3c9VHJ1ZSwgYm9s
ZD1GYWxzZSkKLSAgICAgICAgICAgIGZvciBsb2NhdGlvbiwgd2FybmluZ19yZWNvcmRzIGluIGdy
b3VwZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZShzdHIobG9jYXRpb24pIGlmIGxv
Y2F0aW9uIGVsc2UgIjx1bmRldGVybWluZWQgbG9jYXRpb24+IikKLSAgICAgICAgICAgICAgICBm
b3IgdyBpbiB3YXJuaW5nX3JlY29yZHM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gdy5t
ZXNzYWdlLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgdGl0bGUgPSAid2FybmluZ3Mgc3VtbWFy
eSAoZmluYWwpIiBpZiBmaW5hbCBlbHNlICJ3YXJuaW5ncyBzdW1tYXJ5IgorICAgICAgICAgICAg
c2VsZi53cml0ZV9zZXAoIj0iLCB0aXRsZSwgeWVsbG93PVRydWUsIGJvbGQ9RmFsc2UpCisgICAg
ICAgICAgICBmb3IgbWVzc2FnZSwgbWVzc2FnZV9yZXBvcnRzIGluIHJlcG9ydHNfZ3JvdXBlZF9i
eV9tZXNzYWdlLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgbWF5YmVfbG9jYXRpb24gPSBjb2xs
YXBzZWRfbG9jYXRpb25fcmVwb3J0KG1lc3NhZ2VfcmVwb3J0cykKKyAgICAgICAgICAgICAgICBp
ZiBtYXliZV9sb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZShtYXli
ZV9sb2NhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBtZXNzYWdlLnNwbGl0bGlu
ZXMoKQogICAgICAgICAgICAgICAgICAgICBpbmRlbnRlZCA9ICJcbiIuam9pbigiICAiICsgeCBm
b3IgeCBpbiBsaW5lcykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZShpbmRlbnRl
ZCkKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGluZGVudGVkLnJzdHJpcCgpCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2Uu
cnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKG1lc3NhZ2UpCiAgICAgICAg
ICAgICAgICAgc2VsZi5fdHcubGluZSgpCi0gICAgICAgICAgICBzZWxmLl90dy5saW5lKCItLSBE
b2NzOiBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dhcm5pbmdzLmh0bWwiKQorICAg
ICAgICAgICAgc2VsZi5fdHcubGluZSgiLS0gRG9jczogaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL3dhcm5pbmdzLmh0bWwiKQogCi0gICAgZGVmIHN1bW1hcnlfcGFzc2VzKHNlbGYp
OgorICAgIGRlZiBzdW1tYXJ5X3Bhc3NlcyhzZWxmKSAtPiBOb25lOgogICAgICAgICBpZiBzZWxm
LmNvbmZpZy5vcHRpb24udGJzdHlsZSAhPSAibm8iOgogICAgICAgICAgICAgaWYgc2VsZi5oYXNv
cHQoIlAiKToKLSAgICAgICAgICAgICAgICByZXBvcnRzID0gc2VsZi5nZXRyZXBvcnRzKCJwYXNz
ZWQiKQorICAgICAgICAgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoInBhc3NlZCIp
ICAjIHR5cGU6IExpc3RbVGVzdFJlcG9ydF0KICAgICAgICAgICAgICAgICBpZiBub3QgcmVwb3J0
czoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgc2VsZi53cml0
ZV9zZXAoIj0iLCAiUEFTU0VTIikKICAgICAgICAgICAgICAgICBmb3IgcmVwIGluIHJlcG9ydHM6
Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2dldGZhaWx1cmVoZWFkbGluZShyZXAp
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCJfIiwgbXNnKQotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vdXRyZXBfc3VtbWFyeShyZXApCi0KLSAgICBkZWYgcHJpbnRfdGVh
cmRvd25fc2VjdGlvbnMoc2VsZiwgcmVwKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVwLnNl
Y3Rpb25zOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gc2VsZi5fZ2V0ZmFpbHVyZWhl
YWRsaW5lKHJlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCJfIiwg
bXNnLCBncmVlbj1UcnVlLCBib2xkPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9vdXRyZXBfc3VtbWFyeShyZXApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90
ZWFyZG93bl9zZWN0aW9ucyhyZXAubm9kZWlkKQorCisgICAgZGVmIF9nZXRfdGVhcmRvd25fcmVw
b3J0cyhzZWxmLCBub2RlaWQ6IHN0cikgLT4gTGlzdFtUZXN0UmVwb3J0XToKKyAgICAgICAgcmVw
b3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygiIikKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAg
IHJlcG9ydAorICAgICAgICAgICAgZm9yIHJlcG9ydCBpbiByZXBvcnRzCisgICAgICAgICAgICBp
ZiByZXBvcnQud2hlbiA9PSAidGVhcmRvd24iIGFuZCByZXBvcnQubm9kZWlkID09IG5vZGVpZAor
ICAgICAgICBdCisKKyAgICBkZWYgX2hhbmRsZV90ZWFyZG93bl9zZWN0aW9ucyhzZWxmLCBub2Rl
aWQ6IHN0cikgLT4gTm9uZToKKyAgICAgICAgZm9yIHJlcG9ydCBpbiBzZWxmLl9nZXRfdGVhcmRv
d25fcmVwb3J0cyhub2RlaWQpOgorICAgICAgICAgICAgc2VsZi5wcmludF90ZWFyZG93bl9zZWN0
aW9ucyhyZXBvcnQpCisKKyAgICBkZWYgcHJpbnRfdGVhcmRvd25fc2VjdGlvbnMoc2VsZiwgcmVw
OiBUZXN0UmVwb3J0KSAtPiBOb25lOgorICAgICAgICBzaG93Y2FwdHVyZSA9IHNlbGYuY29uZmln
Lm9wdGlvbi5zaG93Y2FwdHVyZQorICAgICAgICBpZiBzaG93Y2FwdHVyZSA9PSAibm8iOgorICAg
ICAgICAgICAgcmV0dXJuCiAgICAgICAgIGZvciBzZWNuYW1lLCBjb250ZW50IGluIHJlcC5zZWN0
aW9uczoKKyAgICAgICAgICAgIGlmIHNob3djYXB0dXJlICE9ICJhbGwiIGFuZCBzaG93Y2FwdHVy
ZSBub3QgaW4gc2VjbmFtZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
aWYgInRlYXJkb3duIiBpbiBzZWNuYW1lOgogICAgICAgICAgICAgICAgIHNlbGYuX3R3LnNlcCgi
LSIsIHNlY25hbWUpCiAgICAgICAgICAgICAgICAgaWYgY29udGVudFstMTpdID09ICJcbiI6CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50WzotMV0KICAgICAgICAgICAgICAg
ICBzZWxmLl90dy5saW5lKGNvbnRlbnQpCiAKLSAgICBkZWYgc3VtbWFyeV9mYWlsdXJlcyhzZWxm
KToKKyAgICBkZWYgc3VtbWFyeV9mYWlsdXJlcyhzZWxmKSAtPiBOb25lOgogICAgICAgICBpZiBz
ZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSAhPSAibm8iOgotICAgICAgICAgICAgcmVwb3J0cyA9
IHNlbGYuZ2V0cmVwb3J0cygiZmFpbGVkIikKKyAgICAgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdl
dHJlcG9ydHMoImZhaWxlZCIpICAjIHR5cGU6IExpc3RbQmFzZVJlcG9ydF0KICAgICAgICAgICAg
IGlmIG5vdCByZXBvcnRzOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgc2Vs
Zi53cml0ZV9zZXAoIj0iLCAiRkFJTFVSRVMiKQotICAgICAgICAgICAgZm9yIHJlcCBpbiByZXBv
cnRzOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi50YnN0eWxlID09ICJs
aW5lIjoKKyAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi50YnN0eWxlID09ICJsaW5l
IjoKKyAgICAgICAgICAgICAgICBmb3IgcmVwIGluIHJlcG9ydHM6CiAgICAgICAgICAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLl9nZXRjcmFzaGxpbmUocmVwKQogICAgICAgICAgICAgICAgICAgICBz
ZWxmLndyaXRlX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgcmVwIGluIHJlcG9ydHM6CiAgICAgICAgICAgICAg
ICAgICAgIG1zZyA9IHNlbGYuX2dldGZhaWx1cmVoZWFkbGluZShyZXApCi0gICAgICAgICAgICAg
ICAgICAgIG1hcmt1cCA9IHsicmVkIjogVHJ1ZSwgImJvbGQiOiBUcnVlfQotICAgICAgICAgICAg
ICAgICAgICBzZWxmLndyaXRlX3NlcCgiXyIsIG1zZywgKiptYXJrdXApCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYud3JpdGVfc2VwKCJfIiwgbXNnLCByZWQ9VHJ1ZSwgYm9sZD1UcnVlKQogICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9vdXRyZXBfc3VtbWFyeShyZXApCi0gICAgICAgICAgICAg
ICAgICAgIGZvciByZXBvcnQgaW4gc2VsZi5nZXRyZXBvcnRzKCIiKToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHJlcG9ydC5ub2RlaWQgPT0gcmVwLm5vZGVpZCBhbmQgcmVwb3J0LndoZW4g
PT0gInRlYXJkb3duIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByaW50X3Rl
YXJkb3duX3NlY3Rpb25zKHJlcG9ydCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxl
X3RlYXJkb3duX3NlY3Rpb25zKHJlcC5ub2RlaWQpCiAKLSAgICBkZWYgc3VtbWFyeV9lcnJvcnMo
c2VsZik6CisgICAgZGVmIHN1bW1hcnlfZXJyb3JzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGlm
IHNlbGYuY29uZmlnLm9wdGlvbi50YnN0eWxlICE9ICJubyI6Ci0gICAgICAgICAgICByZXBvcnRz
ID0gc2VsZi5nZXRyZXBvcnRzKCJlcnJvciIpCisgICAgICAgICAgICByZXBvcnRzID0gc2VsZi5n
ZXRyZXBvcnRzKCJlcnJvciIpICAjIHR5cGU6IExpc3RbQmFzZVJlcG9ydF0KICAgICAgICAgICAg
IGlmIG5vdCByZXBvcnRzOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgc2Vs
Zi53cml0ZV9zZXAoIj0iLCAiRVJST1JTIikKICAgICAgICAgICAgIGZvciByZXAgaW4gc2VsZi5z
dGF0c1siZXJyb3IiXToKICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRmYWlsdXJlaGVh
ZGxpbmUocmVwKQotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHJlcCwgIndoZW4iKToK
LSAgICAgICAgICAgICAgICAgICAgIyBjb2xsZWN0CisgICAgICAgICAgICAgICAgaWYgcmVwLndo
ZW4gPT0gImNvbGxlY3QiOgogICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRVJST1IgY29sbGVj
dGluZyAiICsgbXNnCi0gICAgICAgICAgICAgICAgZWxpZiByZXAud2hlbiA9PSAic2V0dXAiOgot
ICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRVJST1IgYXQgc2V0dXAgb2YgIiArIG1zZwotICAg
ICAgICAgICAgICAgIGVsaWYgcmVwLndoZW4gPT0gInRlYXJkb3duIjoKLSAgICAgICAgICAgICAg
ICAgICAgbXNnID0gIkVSUk9SIGF0IHRlYXJkb3duIG9mICIgKyBtc2cKLSAgICAgICAgICAgICAg
ICBzZWxmLndyaXRlX3NlcCgiXyIsIG1zZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICBtc2cgPSAiRVJST1IgYXQge30gb2Yge30iLmZvcm1hdChyZXAud2hlbiwg
bXNnKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCJfIiwgbXNnLCByZWQ9VHJ1ZSwg
Ym9sZD1UcnVlKQogICAgICAgICAgICAgICAgIHNlbGYuX291dHJlcF9zdW1tYXJ5KHJlcCkKIAot
ICAgIGRlZiBfb3V0cmVwX3N1bW1hcnkoc2VsZiwgcmVwKToKKyAgICBkZWYgX291dHJlcF9zdW1t
YXJ5KHNlbGYsIHJlcDogQmFzZVJlcG9ydCkgLT4gTm9uZToKICAgICAgICAgcmVwLnRvdGVybWlu
YWwoc2VsZi5fdHcpCiAgICAgICAgIHNob3djYXB0dXJlID0gc2VsZi5jb25maWcub3B0aW9uLnNo
b3djYXB0dXJlCiAgICAgICAgIGlmIHNob3djYXB0dXJlID09ICJubyI6CkBAIC03NjAsNzAgKzEw
MzUsMjc0IEBAIGNsYXNzIFRlcm1pbmFsUmVwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBjb250ZW50ID0gY29udGVudFs6LTFdCiAgICAgICAgICAgICBzZWxmLl90dy5saW5lKGNvbnRl
bnQpCiAKLSAgICBkZWYgc3VtbWFyeV9zdGF0cyhzZWxmKToKLSAgICAgICAgc2Vzc2lvbl9kdXJh
dGlvbiA9IHRpbWUudGltZSgpIC0gc2VsZi5fc2Vzc2lvbnN0YXJ0dGltZQotICAgICAgICAobGlu
ZSwgY29sb3IpID0gYnVpbGRfc3VtbWFyeV9zdGF0c19saW5lKHNlbGYuc3RhdHMpCi0gICAgICAg
IG1zZyA9ICIlcyBpbiAlLjJmIHNlY29uZHMiICUgKGxpbmUsIHNlc3Npb25fZHVyYXRpb24pCi0g
ICAgICAgIG1hcmt1cCA9IHtjb2xvcjogVHJ1ZSwgImJvbGQiOiBUcnVlfQorICAgIGRlZiBzdW1t
YXJ5X3N0YXRzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5IDwgLTE6
CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZXNzaW9uX2R1cmF0aW9uID0gdGltaW5n
LnRpbWUoKSAtIHNlbGYuX3Nlc3Npb25zdGFydHRpbWUKKyAgICAgICAgKHBhcnRzLCBtYWluX2Nv
bG9yKSA9IHNlbGYuYnVpbGRfc3VtbWFyeV9zdGF0c19saW5lKCkKKyAgICAgICAgbGluZV9wYXJ0
cyA9IFtdCisKKyAgICAgICAgZGlzcGxheV9zZXAgPSBzZWxmLnZlcmJvc2l0eSA+PSAwCisgICAg
ICAgIGlmIGRpc3BsYXlfc2VwOgorICAgICAgICAgICAgZnVsbHdpZHRoID0gc2VsZi5fdHcuZnVs
bHdpZHRoCisgICAgICAgIGZvciB0ZXh0LCBtYXJrdXAgaW4gcGFydHM6CisgICAgICAgICAgICB3
aXRoX21hcmt1cCA9IHNlbGYuX3R3Lm1hcmt1cCh0ZXh0LCAqKm1hcmt1cCkKKyAgICAgICAgICAg
IGlmIGRpc3BsYXlfc2VwOgorICAgICAgICAgICAgICAgIGZ1bGx3aWR0aCArPSBsZW4od2l0aF9t
YXJrdXApIC0gbGVuKHRleHQpCisgICAgICAgICAgICBsaW5lX3BhcnRzLmFwcGVuZCh3aXRoX21h
cmt1cCkKKyAgICAgICAgbXNnID0gIiwgIi5qb2luKGxpbmVfcGFydHMpCisKKyAgICAgICAgbWFp
bl9tYXJrdXAgPSB7bWFpbl9jb2xvcjogVHJ1ZX0KKyAgICAgICAgZHVyYXRpb24gPSAiIGluIHt9
Ii5mb3JtYXQoZm9ybWF0X3Nlc3Npb25fZHVyYXRpb24oc2Vzc2lvbl9kdXJhdGlvbikpCisgICAg
ICAgIGR1cmF0aW9uX3dpdGhfbWFya3VwID0gc2VsZi5fdHcubWFya3VwKGR1cmF0aW9uLCAqKm1h
aW5fbWFya3VwKQorICAgICAgICBpZiBkaXNwbGF5X3NlcDoKKyAgICAgICAgICAgIGZ1bGx3aWR0
aCArPSBsZW4oZHVyYXRpb25fd2l0aF9tYXJrdXApIC0gbGVuKGR1cmF0aW9uKQorICAgICAgICBt
c2cgKz0gZHVyYXRpb25fd2l0aF9tYXJrdXAKKworICAgICAgICBpZiBkaXNwbGF5X3NlcDoKKyAg
ICAgICAgICAgIG1hcmt1cF9mb3JfZW5kX3NlcCA9IHNlbGYuX3R3Lm1hcmt1cCgiIiwgKiptYWlu
X21hcmt1cCkKKyAgICAgICAgICAgIGlmIG1hcmt1cF9mb3JfZW5kX3NlcC5lbmRzd2l0aCgiXHgx
YlswbSIpOgorICAgICAgICAgICAgICAgIG1hcmt1cF9mb3JfZW5kX3NlcCA9IG1hcmt1cF9mb3Jf
ZW5kX3NlcFs6LTRdCisgICAgICAgICAgICBmdWxsd2lkdGggKz0gbGVuKG1hcmt1cF9mb3JfZW5k
X3NlcCkKKyAgICAgICAgICAgIG1zZyArPSBtYXJrdXBfZm9yX2VuZF9zZXAKKworICAgICAgICBp
ZiBkaXNwbGF5X3NlcDoKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgbXNnLCBmdWxs
d2lkdGg9ZnVsbHdpZHRoLCAqKm1haW5fbWFya3VwKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi53cml0ZV9saW5lKG1zZywgKiptYWluX21hcmt1cCkKKworICAgIGRlZiBzaG9ydF90
ZXN0X3N1bW1hcnkoc2VsZikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IHNlbGYucmVwb3J0Y2hh
cnM6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBkZWYgc2hvd19zaW1wbGUoc3RhdCwg
bGluZXM6IExpc3Rbc3RyXSkgLT4gTm9uZToKKyAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYuc3Rh
dHMuZ2V0KHN0YXQsIFtdKQorICAgICAgICAgICAgaWYgbm90IGZhaWxlZDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgICAgIHRlcm13aWR0aCA9IHNlbGYuX3R3LmZ1bGx3aWR0aAor
ICAgICAgICAgICAgY29uZmlnID0gc2VsZi5jb25maWcKKyAgICAgICAgICAgIGZvciByZXAgaW4g
ZmFpbGVkOgorICAgICAgICAgICAgICAgIGxpbmUgPSBfZ2V0X2xpbmVfd2l0aF9yZXByY3Jhc2hf
bWVzc2FnZShjb25maWcsIHJlcCwgdGVybXdpZHRoKQorICAgICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZChsaW5lKQorCisgICAgICAgIGRlZiBzaG93X3hmYWlsZWQobGluZXM6IExpc3Rbc3RyXSkg
LT4gTm9uZToKKyAgICAgICAgICAgIHhmYWlsZWQgPSBzZWxmLnN0YXRzLmdldCgieGZhaWxlZCIs
IFtdKQorICAgICAgICAgICAgZm9yIHJlcCBpbiB4ZmFpbGVkOgorICAgICAgICAgICAgICAgIHZl
cmJvc2Vfd29yZCA9IHJlcC5fZ2V0X3ZlcmJvc2Vfd29yZChzZWxmLmNvbmZpZykKKyAgICAgICAg
ICAgICAgICBwb3MgPSBfZ2V0X3BvcyhzZWxmLmNvbmZpZywgcmVwKQorICAgICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgie30ge30iLmZvcm1hdCh2ZXJib3NlX3dvcmQsIHBvcykpCisgICAgICAg
ICAgICAgICAgcmVhc29uID0gcmVwLndhc3hmYWlsCisgICAgICAgICAgICAgICAgaWYgcmVhc29u
OgorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgIiArIHN0cihyZWFzb24pKQor
CisgICAgICAgIGRlZiBzaG93X3hwYXNzZWQobGluZXM6IExpc3Rbc3RyXSkgLT4gTm9uZToKKyAg
ICAgICAgICAgIHhwYXNzZWQgPSBzZWxmLnN0YXRzLmdldCgieHBhc3NlZCIsIFtdKQorICAgICAg
ICAgICAgZm9yIHJlcCBpbiB4cGFzc2VkOgorICAgICAgICAgICAgICAgIHZlcmJvc2Vfd29yZCA9
IHJlcC5fZ2V0X3ZlcmJvc2Vfd29yZChzZWxmLmNvbmZpZykKKyAgICAgICAgICAgICAgICBwb3Mg
PSBfZ2V0X3BvcyhzZWxmLmNvbmZpZywgcmVwKQorICAgICAgICAgICAgICAgIHJlYXNvbiA9IHJl
cC53YXN4ZmFpbAorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgie30ge30ge30iLmZvcm1h
dCh2ZXJib3NlX3dvcmQsIHBvcywgcmVhc29uKSkKKworICAgICAgICBkZWYgc2hvd19za2lwcGVk
KGxpbmVzOiBMaXN0W3N0cl0pIC0+IE5vbmU6CisgICAgICAgICAgICBza2lwcGVkID0gc2VsZi5z
dGF0cy5nZXQoInNraXBwZWQiLCBbXSkgICMgdHlwZTogTGlzdFtDb2xsZWN0UmVwb3J0XQorICAg
ICAgICAgICAgZnNraXBzID0gX2ZvbGRlZF9za2lwcyhzZWxmLnN0YXJ0cGF0aCwgc2tpcHBlZCkg
aWYgc2tpcHBlZCBlbHNlIFtdCisgICAgICAgICAgICBpZiBub3QgZnNraXBzOgorICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgdmVyYm9zZV93b3JkID0gc2tpcHBlZFswXS5fZ2V0
X3ZlcmJvc2Vfd29yZChzZWxmLmNvbmZpZykKKyAgICAgICAgICAgIGZvciBudW0sIGZzcGF0aCwg
bGluZW5vLCByZWFzb24gaW4gZnNraXBzOgorICAgICAgICAgICAgICAgIGlmIHJlYXNvbi5zdGFy
dHN3aXRoKCJTa2lwcGVkOiAiKToKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gcmVhc29u
Wzk6XQorICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIFslZF0g
JXM6JWQ6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAodmVyYm9zZV93b3JkLCBudW0s
IGZzcGF0aCwgbGluZW5vLCByZWFzb24pCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVzIFslZF0g
JXM6ICVzIiAlICh2ZXJib3NlX3dvcmQsIG51bSwgZnNwYXRoLCByZWFzb24pKQorCisgICAgICAg
IFJFUE9SVENIQVJfQUNUSU9OUyA9IHsKKyAgICAgICAgICAgICJ4Ijogc2hvd194ZmFpbGVkLAor
ICAgICAgICAgICAgIlgiOiBzaG93X3hwYXNzZWQsCisgICAgICAgICAgICAiZiI6IHBhcnRpYWwo
c2hvd19zaW1wbGUsICJmYWlsZWQiKSwKKyAgICAgICAgICAgICJzIjogc2hvd19za2lwcGVkLAor
ICAgICAgICAgICAgInAiOiBwYXJ0aWFsKHNob3dfc2ltcGxlLCAicGFzc2VkIiksCisgICAgICAg
ICAgICAiRSI6IHBhcnRpYWwoc2hvd19zaW1wbGUsICJlcnJvciIpLAorICAgICAgICB9ICAjIHR5
cGU6IE1hcHBpbmdbc3RyLCBDYWxsYWJsZVtbTGlzdFtzdHJdXSwgTm9uZV1dCisKKyAgICAgICAg
bGluZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgZm9yIGNoYXIgaW4gc2VsZi5y
ZXBvcnRjaGFyczoKKyAgICAgICAgICAgIGFjdGlvbiA9IFJFUE9SVENIQVJfQUNUSU9OUy5nZXQo
Y2hhcikKKyAgICAgICAgICAgIGlmIGFjdGlvbjogICMgc2tpcHBpbmcgZS5nLiAiUCIgKHBhc3Nl
ZCB3aXRoIG91dHB1dCkgaGVyZS4KKyAgICAgICAgICAgICAgICBhY3Rpb24obGluZXMpCisKKyAg
ICAgICAgaWYgbGluZXM6CisgICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiPSIsICJzaG9ydCB0
ZXN0IHN1bW1hcnkgaW5mbyIpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAg
ICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUobGluZSkKKworICAgIGRlZiBfZ2V0X21haW5fY29s
b3Ioc2VsZikgLT4gVHVwbGVbc3RyLCBMaXN0W3N0cl1dOgorICAgICAgICBpZiBzZWxmLl9tYWlu
X2NvbG9yIGlzIE5vbmUgb3Igc2VsZi5fa25vd25fdHlwZXMgaXMgTm9uZSBvciBzZWxmLl9pc19s
YXN0X2l0ZW06CisgICAgICAgICAgICBzZWxmLl9zZXRfbWFpbl9jb2xvcigpCisgICAgICAgICAg
ICBhc3NlcnQgc2VsZi5fbWFpbl9jb2xvcgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2tub3du
X3R5cGVzCisgICAgICAgIHJldHVybiBzZWxmLl9tYWluX2NvbG9yLCBzZWxmLl9rbm93bl90eXBl
cworCisgICAgZGVmIF9kZXRlcm1pbmVfbWFpbl9jb2xvcihzZWxmLCB1bmtub3duX3R5cGVfc2Vl
bjogYm9vbCkgLT4gc3RyOgorICAgICAgICBzdGF0cyA9IHNlbGYuc3RhdHMKKyAgICAgICAgaWYg
ImZhaWxlZCIgaW4gc3RhdHMgb3IgImVycm9yIiBpbiBzdGF0czoKKyAgICAgICAgICAgIG1haW5f
Y29sb3IgPSAicmVkIgorICAgICAgICBlbGlmICJ3YXJuaW5ncyIgaW4gc3RhdHMgb3IgInhwYXNz
ZWQiIGluIHN0YXRzIG9yIHVua25vd25fdHlwZV9zZWVuOgorICAgICAgICAgICAgbWFpbl9jb2xv
ciA9ICJ5ZWxsb3ciCisgICAgICAgIGVsaWYgInBhc3NlZCIgaW4gc3RhdHMgb3Igbm90IHNlbGYu
X2lzX2xhc3RfaXRlbToKKyAgICAgICAgICAgIG1haW5fY29sb3IgPSAiZ3JlZW4iCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBtYWluX2NvbG9yID0gInllbGxvdyIKKyAgICAgICAgcmV0dXJu
IG1haW5fY29sb3IKKworICAgIGRlZiBfc2V0X21haW5fY29sb3Ioc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgdW5rbm93bl90eXBlcyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgICAgICBmb3Ig
Zm91bmRfdHlwZSBpbiBzZWxmLnN0YXRzLmtleXMoKToKKyAgICAgICAgICAgIGlmIGZvdW5kX3R5
cGU6ICAjIHNldHVwL3RlYXJkb3duIHJlcG9ydHMgaGF2ZSBhbiBlbXB0eSBrZXksIGlnbm9yZSB0
aGVtCisgICAgICAgICAgICAgICAgaWYgZm91bmRfdHlwZSBub3QgaW4gS05PV05fVFlQRVMgYW5k
IGZvdW5kX3R5cGUgbm90IGluIHVua25vd25fdHlwZXM6CisgICAgICAgICAgICAgICAgICAgIHVu
a25vd25fdHlwZXMuYXBwZW5kKGZvdW5kX3R5cGUpCisgICAgICAgIHNlbGYuX2tub3duX3R5cGVz
ID0gbGlzdChLTk9XTl9UWVBFUykgKyB1bmtub3duX3R5cGVzCisgICAgICAgIHNlbGYuX21haW5f
Y29sb3IgPSBzZWxmLl9kZXRlcm1pbmVfbWFpbl9jb2xvcihib29sKHVua25vd25fdHlwZXMpKQor
CisgICAgZGVmIGJ1aWxkX3N1bW1hcnlfc3RhdHNfbGluZShzZWxmKSAtPiBUdXBsZVtMaXN0W1R1
cGxlW3N0ciwgRGljdFtzdHIsIGJvb2xdXV0sIHN0cl06CisgICAgICAgIG1haW5fY29sb3IsIGtu
b3duX3R5cGVzID0gc2VsZi5fZ2V0X21haW5fY29sb3IoKQorCisgICAgICAgIHBhcnRzID0gW10K
KyAgICAgICAgZm9yIGtleSBpbiBrbm93bl90eXBlczoKKyAgICAgICAgICAgIHJlcG9ydHMgPSBz
ZWxmLnN0YXRzLmdldChrZXksIE5vbmUpCisgICAgICAgICAgICBpZiByZXBvcnRzOgorICAgICAg
ICAgICAgICAgIGNvdW50ID0gc3VtKAorICAgICAgICAgICAgICAgICAgICAxIGZvciByZXAgaW4g
cmVwb3J0cyBpZiBnZXRhdHRyKHJlcCwgImNvdW50X3Rvd2FyZHNfc3VtbWFyeSIsIFRydWUpCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbG9yID0gX2NvbG9yX2Zvcl90eXBl
LmdldChrZXksIF9jb2xvcl9mb3JfdHlwZV9kZWZhdWx0KQorICAgICAgICAgICAgICAgIG1hcmt1
cCA9IHtjb2xvcjogVHJ1ZSwgImJvbGQiOiBjb2xvciA9PSBtYWluX2NvbG9yfQorICAgICAgICAg
ICAgICAgIHBhcnRzLmFwcGVuZCgoIiVkICVzIiAlIF9tYWtlX3BsdXJhbChjb3VudCwga2V5KSwg
bWFya3VwKSkKKworICAgICAgICBpZiBub3QgcGFydHM6CisgICAgICAgICAgICBwYXJ0cyA9IFso
Im5vIHRlc3RzIHJhbiIsIHtfY29sb3JfZm9yX3R5cGVfZGVmYXVsdDogVHJ1ZX0pXQorCisgICAg
ICAgIHJldHVybiBwYXJ0cywgbWFpbl9jb2xvcgorCisKK2RlZiBfZ2V0X3Bvcyhjb25maWc6IENv
bmZpZywgcmVwOiBCYXNlUmVwb3J0KToKKyAgICBub2RlaWQgPSBjb25maWcuY3dkX3JlbGF0aXZl
X25vZGVpZChyZXAubm9kZWlkKQorICAgIHJldHVybiBub2RlaWQKKwogCi0gICAgICAgIGlmIHNl
bGYudmVyYm9zaXR5ID49IDA6Ci0gICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiPSIsIG1zZywg
KiptYXJrdXApCi0gICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID09IC0xOgotICAgICAgICAgICAg
c2VsZi53cml0ZV9saW5lKG1zZywgKiptYXJrdXApCitkZWYgX2dldF9saW5lX3dpdGhfcmVwcmNy
YXNoX21lc3NhZ2UoCisgICAgY29uZmlnOiBDb25maWcsIHJlcDogQmFzZVJlcG9ydCwgdGVybXdp
ZHRoOiBpbnQKKykgLT4gc3RyOgorICAgICIiIkdldCBzdW1tYXJ5IGxpbmUgZm9yIGEgcmVwb3J0
LCB0cnlpbmcgdG8gYWRkIHJlcHJjcmFzaCBtZXNzYWdlLiIiIgorICAgIHZlcmJvc2Vfd29yZCA9
IHJlcC5fZ2V0X3ZlcmJvc2Vfd29yZChjb25maWcpCisgICAgcG9zID0gX2dldF9wb3MoY29uZmln
LCByZXApCiAKKyAgICBsaW5lID0gInt9IHt9Ii5mb3JtYXQodmVyYm9zZV93b3JkLCBwb3MpCisg
ICAgbGVuX2xpbmUgPSB3Y3N3aWR0aChsaW5lKQorICAgIGVsbGlwc2lzLCBsZW5fZWxsaXBzaXMg
PSAiLi4uIiwgMworICAgIGlmIGxlbl9saW5lID4gdGVybXdpZHRoIC0gbGVuX2VsbGlwc2lzOgor
ICAgICAgICAjIE5vIHNwYWNlIGZvciBhbiBhZGRpdGlvbmFsIG1lc3NhZ2UuCisgICAgICAgIHJl
dHVybiBsaW5lCiAKLWRlZiByZXByX3B5dGhvbnZlcnNpb24odj1Ob25lKToKLSAgICBpZiB2IGlz
IE5vbmU6Ci0gICAgICAgIHYgPSBzeXMudmVyc2lvbl9pbmZvCiAgICAgdHJ5OgotICAgICAgICBy
ZXR1cm4gIiVzLiVzLiVzLSVzLSVzIiAlIHYKLSAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVF
cnJvcik6Ci0gICAgICAgIHJldHVybiBzdHIodikKLQotCi1kZWYgYnVpbGRfc3VtbWFyeV9zdGF0
c19saW5lKHN0YXRzKToKLSAgICBrZXlzID0gKAotICAgICAgICAiZmFpbGVkIHBhc3NlZCBza2lw
cGVkIGRlc2VsZWN0ZWQgIiAieGZhaWxlZCB4cGFzc2VkIHdhcm5pbmdzIGVycm9yIgotICAgICku
c3BsaXQoKQotICAgIHVua25vd25fa2V5X3NlZW4gPSBGYWxzZQotICAgIGZvciBrZXkgaW4gc3Rh
dHMua2V5cygpOgotICAgICAgICBpZiBrZXkgbm90IGluIGtleXM6Ci0gICAgICAgICAgICBpZiBr
ZXk6ICAjIHNldHVwL3RlYXJkb3duIHJlcG9ydHMgaGF2ZSBhbiBlbXB0eSBrZXksIGlnbm9yZSB0
aGVtCi0gICAgICAgICAgICAgICAga2V5cy5hcHBlbmQoa2V5KQotICAgICAgICAgICAgICAgIHVu
a25vd25fa2V5X3NlZW4gPSBUcnVlCi0gICAgcGFydHMgPSBbXQotICAgIGZvciBrZXkgaW4ga2V5
czoKLSAgICAgICAgdmFsID0gc3RhdHMuZ2V0KGtleSwgTm9uZSkKLSAgICAgICAgaWYgdmFsOgot
ICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIlZCAlcyIgJSAobGVuKHZhbCksIGtleSkpCi0KLSAg
ICBpZiBwYXJ0czoKLSAgICAgICAgbGluZSA9ICIsICIuam9pbihwYXJ0cykKKyAgICAgICAgIyBU
eXBlIGlnbm9yZWQgaW50ZW50aW9uYWxseSAtLSBwb3NzaWJsZSBBdHRyaWJ1dGVFcnJvciBleHBl
Y3RlZC4KKyAgICAgICAgbXNnID0gcmVwLmxvbmdyZXByLnJlcHJjcmFzaC5tZXNzYWdlICAjIHR5
cGU6IGlnbm9yZVt1bmlvbi1hdHRyXQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAg
ICAgcGFzcwogICAgIGVsc2U6Ci0gICAgICAgIGxpbmUgPSAibm8gdGVzdHMgcmFuIgotCi0gICAg
aWYgImZhaWxlZCIgaW4gc3RhdHMgb3IgImVycm9yIiBpbiBzdGF0czoKLSAgICAgICAgY29sb3Ig
PSAicmVkIgotICAgIGVsaWYgIndhcm5pbmdzIiBpbiBzdGF0cyBvciB1bmtub3duX2tleV9zZWVu
OgotICAgICAgICBjb2xvciA9ICJ5ZWxsb3ciCi0gICAgZWxpZiAicGFzc2VkIiBpbiBzdGF0czoK
LSAgICAgICAgY29sb3IgPSAiZ3JlZW4iCi0gICAgZWxzZToKLSAgICAgICAgY29sb3IgPSAieWVs
bG93IgorICAgICAgICAjIE9ubHkgdXNlIHRoZSBmaXJzdCBsaW5lLgorICAgICAgICBpID0gbXNn
LmZpbmQoIlxuIikKKyAgICAgICAgaWYgaSAhPSAtMToKKyAgICAgICAgICAgIG1zZyA9IG1zZ1s6
aV0KKyAgICAgICAgbGVuX21zZyA9IHdjc3dpZHRoKG1zZykKKworICAgICAgICBzZXAsIGxlbl9z
ZXAgPSAiIC0gIiwgMworICAgICAgICBtYXhfbGVuX21zZyA9IHRlcm13aWR0aCAtIGxlbl9saW5l
IC0gbGVuX3NlcAorICAgICAgICBpZiBtYXhfbGVuX21zZyA+PSBsZW5fZWxsaXBzaXM6CisgICAg
ICAgICAgICBpZiBsZW5fbXNnID4gbWF4X2xlbl9tc2c6CisgICAgICAgICAgICAgICAgbWF4X2xl
bl9tc2cgLT0gbGVuX2VsbGlwc2lzCisgICAgICAgICAgICAgICAgbXNnID0gbXNnWzptYXhfbGVu
X21zZ10KKyAgICAgICAgICAgICAgICB3aGlsZSB3Y3N3aWR0aChtc2cpID4gbWF4X2xlbl9tc2c6
CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZ1s6LTFdCisgICAgICAgICAgICAgICAgbXNn
ICs9IGVsbGlwc2lzCisgICAgICAgICAgICBsaW5lICs9IHNlcCArIG1zZworICAgIHJldHVybiBs
aW5lCisKKworZGVmIF9mb2xkZWRfc2tpcHMoCisgICAgc3RhcnRwYXRoOiBQYXRoLCBza2lwcGVk
OiBTZXF1ZW5jZVtDb2xsZWN0UmVwb3J0XSwKKykgLT4gTGlzdFtUdXBsZVtpbnQsIHN0ciwgT3B0
aW9uYWxbaW50XSwgc3RyXV06CisgICAgZCA9IHt9ICAjIHR5cGU6IERpY3RbVHVwbGVbc3RyLCBP
cHRpb25hbFtpbnRdLCBzdHJdLCBMaXN0W0NvbGxlY3RSZXBvcnRdXQorICAgIGZvciBldmVudCBp
biBza2lwcGVkOgorICAgICAgICBhc3NlcnQgZXZlbnQubG9uZ3JlcHIgaXMgbm90IE5vbmUKKyAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZXZlbnQubG9uZ3JlcHIsIHR1cGxlKSwgKGV2ZW50LCBl
dmVudC5sb25ncmVwcikKKyAgICAgICAgYXNzZXJ0IGxlbihldmVudC5sb25ncmVwcikgPT0gMywg
KGV2ZW50LCBldmVudC5sb25ncmVwcikKKyAgICAgICAgZnNwYXRoLCBsaW5lbm8sIHJlYXNvbiA9
IGV2ZW50LmxvbmdyZXByCisgICAgICAgICMgRm9yIGNvbnNpc3RlbmN5LCByZXBvcnQgYWxsIGZz
cGF0aHMgaW4gcmVsYXRpdmUgZm9ybS4KKyAgICAgICAgZnNwYXRoID0gYmVzdHJlbHBhdGgoc3Rh
cnRwYXRoLCBQYXRoKGZzcGF0aCkpCisgICAgICAgIGtleXdvcmRzID0gZ2V0YXR0cihldmVudCwg
ImtleXdvcmRzIiwge30pCisgICAgICAgICMgRm9sZGluZyByZXBvcnRzIHdpdGggZ2xvYmFsIHB5
dGVzdG1hcmsgdmFyaWFibGUuCisgICAgICAgICMgVGhpcyBpcyBhIHdvcmthcm91bmQsIGJlY2F1
c2UgZm9yIG5vdyB3ZSBjYW5ub3QgaWRlbnRpZnkgdGhlIHNjb3BlIG9mIGEgc2tpcCBtYXJrZXIK
KyAgICAgICAgIyBUT0RPOiBSZXZpc2l0IGFmdGVyIG1hcmtzIHNjb3BlIHdvdWxkIGJlIGZpeGVk
LgorICAgICAgICBpZiAoCisgICAgICAgICAgICBldmVudC53aGVuID09ICJzZXR1cCIKKyAgICAg
ICAgICAgIGFuZCAic2tpcCIgaW4ga2V5d29yZHMKKyAgICAgICAgICAgIGFuZCAicHl0ZXN0bWFy
ayIgbm90IGluIGtleXdvcmRzCisgICAgICAgICk6CisgICAgICAgICAgICBrZXkgPSAoZnNwYXRo
LCBOb25lLCByZWFzb24pICAjIHR5cGU6IFR1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAga2V5ID0gKGZzcGF0aCwgbGluZW5vLCByZWFzb24p
CisgICAgICAgIGQuc2V0ZGVmYXVsdChrZXksIFtdKS5hcHBlbmQoZXZlbnQpCisgICAgdmFsdWVz
ID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtpbnQsIHN0ciwgT3B0aW9uYWxbaW50XSwgc3RyXV0K
KyAgICBmb3Iga2V5LCBldmVudHMgaW4gZC5pdGVtcygpOgorICAgICAgICB2YWx1ZXMuYXBwZW5k
KChsZW4oZXZlbnRzKSwgKmtleSkpCisgICAgcmV0dXJuIHZhbHVlcworCisKK19jb2xvcl9mb3Jf
dHlwZSA9IHsKKyAgICAiZmFpbGVkIjogInJlZCIsCisgICAgImVycm9yIjogInJlZCIsCisgICAg
Indhcm5pbmdzIjogInllbGxvdyIsCisgICAgInBhc3NlZCI6ICJncmVlbiIsCit9CitfY29sb3Jf
Zm9yX3R5cGVfZGVmYXVsdCA9ICJ5ZWxsb3ciCisKKworZGVmIF9tYWtlX3BsdXJhbChjb3VudDog
aW50LCBub3VuOiBzdHIpIC0+IFR1cGxlW2ludCwgc3RyXToKKyAgICAjIE5vIG5lZWQgdG8gcGx1
cmFsaXplIHdvcmRzIHN1Y2ggYXMgYGZhaWxlZGAgb3IgYHBhc3NlZGAuCisgICAgaWYgbm91biBu
b3QgaW4gWyJlcnJvciIsICJ3YXJuaW5ncyJdOgorICAgICAgICByZXR1cm4gY291bnQsIG5vdW4K
IAotICAgIHJldHVybiAobGluZSwgY29sb3IpCisgICAgIyBUaGUgYHdhcm5pbmdzYCBrZXkgaXMg
cGx1cmFsLiBUbyBhdm9pZCBBUEkgYnJlYWthZ2UsIHdlIGtlZXAgaXQgdGhhdCB3YXkgYnV0Cisg
ICAgIyBzZXQgaXQgdG8gc2luZ3VsYXIgaGVyZSBzbyB3ZSBjYW4gZGV0ZXJtaW5lIHBsdXJhbGl0
eSBpbiB0aGUgc2FtZSB3YXkgYXMgd2UgZG8KKyAgICAjIGZvciBgZXJyb3JgLgorICAgIG5vdW4g
PSBub3VuLnJlcGxhY2UoIndhcm5pbmdzIiwgIndhcm5pbmciKQogCisgICAgcmV0dXJuIGNvdW50
LCBub3VuICsgInMiIGlmIGNvdW50ICE9IDEgZWxzZSBub3VuCiAKLWRlZiBfcGx1Z2luX25hbWV2
ZXJzaW9ucyhwbHVnaW5pbmZvKToKLSAgICB2YWx1ZXMgPSBbXQorCitkZWYgX3BsdWdpbl9uYW1l
dmVyc2lvbnMocGx1Z2luaW5mbykgLT4gTGlzdFtzdHJdOgorICAgIHZhbHVlcyA9IFtdICAjIHR5
cGU6IExpc3Rbc3RyXQogICAgIGZvciBwbHVnaW4sIGRpc3QgaW4gcGx1Z2luaW5mbzoKLSAgICAg
ICAgIyBnZXRzIHVzIG5hbWUgYW5kIHZlcnNpb24hCisgICAgICAgICMgR2V0cyB1cyBuYW1lIGFu
ZCB2ZXJzaW9uIQogICAgICAgICBuYW1lID0gIntkaXN0LnByb2plY3RfbmFtZX0te2Rpc3QudmVy
c2lvbn0iLmZvcm1hdChkaXN0PWRpc3QpCi0gICAgICAgICMgcXVlc3Rpb25hYmxlIGNvbnZlbmll
bmNlLCBidXQgaXQga2VlcHMgdGhpbmdzIHNob3J0CisgICAgICAgICMgUXVlc3Rpb25hYmxlIGNv
bnZlbmllbmNlLCBidXQgaXQga2VlcHMgdGhpbmdzIHNob3J0LgogICAgICAgICBpZiBuYW1lLnN0
YXJ0c3dpdGgoInB5dGVzdC0iKToKICAgICAgICAgICAgIG5hbWUgPSBuYW1lWzc6XQotICAgICAg
ICAjIHdlIGRlY2lkZWQgdG8gcHJpbnQgcHl0aG9uIHBhY2thZ2UgbmFtZXMKLSAgICAgICAgIyB0
aGV5IGNhbiBoYXZlIG1vcmUgdGhhbiBvbmUgcGx1Z2luCisgICAgICAgICMgV2UgZGVjaWRlZCB0
byBwcmludCBweXRob24gcGFja2FnZSBuYW1lcyB0aGV5IGNhbiBoYXZlIG1vcmUgdGhhbiBvbmUg
cGx1Z2luLgogICAgICAgICBpZiBuYW1lIG5vdCBpbiB2YWx1ZXM6CiAgICAgICAgICAgICB2YWx1
ZXMuYXBwZW5kKG5hbWUpCiAgICAgcmV0dXJuIHZhbHVlcworCisKK2RlZiBmb3JtYXRfc2Vzc2lv
bl9kdXJhdGlvbihzZWNvbmRzOiBmbG9hdCkgLT4gc3RyOgorICAgICIiIkZvcm1hdCB0aGUgZ2l2
ZW4gc2Vjb25kcyBpbiBhIGh1bWFuIHJlYWRhYmxlIG1hbm5lciB0byBzaG93IGluIHRoZSBmaW5h
bCBzdW1tYXJ5LiIiIgorICAgIGlmIHNlY29uZHMgPCA2MDoKKyAgICAgICAgcmV0dXJuICJ7Oi4y
Zn1zIi5mb3JtYXQoc2Vjb25kcykKKyAgICBlbHNlOgorICAgICAgICBkdCA9IGRhdGV0aW1lLnRp
bWVkZWx0YShzZWNvbmRzPWludChzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuICJ7Oi4yZn1zICh7
fSkiLmZvcm1hdChzZWNvbmRzLCBkdCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3RpbWluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3RpbWluZy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYyNDQyZGU3NTI4NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3RpbWluZy5weQpAQCAtMCwwICsxLDEy
IEBACisiIiJJbmRpcmVjdGlvbiBmb3IgdGltZSBmdW5jdGlvbnMuCisKK1dlIGludGVudGlvbmFs
bHkgZ3JhYiBzb21lICJ0aW1lIiBmdW5jdGlvbnMgaW50ZXJuYWxseSB0byBhdm9pZCB0ZXN0cyBt
b2NraW5nICJ0aW1lIiB0byBhZmZlY3QKK3B5dGVzdCBydW50aW1lIGluZm9ybWF0aW9uIChpc3N1
ZSAjMTg1KS4KKworRml4dHVyZSAibW9ja190aW1pbmlnIiBhbHNvIGludGVyYWN0cyB3aXRoIHRo
aXMgbW9kdWxlIGZvciBweXRlc3QncyBvd24gdGVzdHMuCisiIiIKK2Zyb20gdGltZSBpbXBvcnQg
cGVyZl9jb3VudGVyCitmcm9tIHRpbWUgaW1wb3J0IHNsZWVwCitmcm9tIHRpbWUgaW1wb3J0IHRp
bWUKKworX19hbGxfXyA9IFsicGVyZl9jb3VudGVyIiwgInNsZWVwIiwgInRpbWUiXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdG1wZGlyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvdG1wZGlyLnB5CmluZGV4IDI2MGQyODQyMjM0My4uZWI4YWE5ZjkxMDRiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90bXBkaXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvdG1wZGlyLnB5CkBAIC0xLDg0ICsxLDEzMCBAQAotIiIiIHN1cHBvcnQg
Zm9yIHByb3ZpZGluZyB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdG8gdGVzdCBmdW5jdGlvbnMuICAi
IiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLQorIiIiU3VwcG9ydCBmb3IgcHJvdmlkaW5nIHRlbXBvcmFyeSBkaXJlY3Rv
cmllcyB0byB0ZXN0IGZ1bmN0aW9ucy4iIiIKK2ltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQg
dGVtcGZpbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAogCi1pbXBvcnQgcHl0ZXN0Citp
bXBvcnQgYXR0cgogaW1wb3J0IHB5CisKK2ltcG9ydCBweXRlc3QKK2Zyb20gLnBhdGhsaWIgaW1w
b3J0IGVuc3VyZV9yZXNldF9kaXIKK2Zyb20gLnBhdGhsaWIgaW1wb3J0IExPQ0tfVElNRU9VVAor
ZnJvbSAucGF0aGxpYiBpbXBvcnQgbWFrZV9udW1iZXJlZF9kaXIKK2Zyb20gLnBhdGhsaWIgaW1w
b3J0IG1ha2VfbnVtYmVyZWRfZGlyX3dpdGhfY2xlYW51cAorZnJvbSAucGF0aGxpYiBpbXBvcnQg
UGF0aAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb25m
aWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVx
dWVzdAogZnJvbSBfcHl0ZXN0Lm1vbmtleXBhdGNoIGltcG9ydCBNb25rZXlQYXRjaAogCiAKLWNs
YXNzIFRlbXBkaXJGYWN0b3J5KG9iamVjdCk6CitAZmluYWwKK0BhdHRyLnMKK2NsYXNzIFRlbXBQ
YXRoRmFjdG9yeToKICAgICAiIiJGYWN0b3J5IGZvciB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdW5k
ZXIgdGhlIGNvbW1vbiBiYXNlIHRlbXAgZGlyZWN0b3J5LgogCiAgICAgVGhlIGJhc2UgZGlyZWN0
b3J5IGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSBgYC0tYmFzZXRlbXBgYCBvcHRpb24uCiAg
ICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgc2VsZi5j
b25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5nZXQoInRt
cGRpciIpCisgICAgX2dpdmVuX2Jhc2V0ZW1wID0gYXR0ci5pYigKKyAgICAgICAgdHlwZT1PcHRp
b25hbFtQYXRoXSwKKyAgICAgICAgIyBVc2Ugb3MucGF0aC5hYnNwYXRoKCkgdG8gZ2V0IGFic29s
dXRlIHBhdGggaW5zdGVhZCBvZiByZXNvbHZlKCkgYXMgaXQKKyAgICAgICAgIyBkb2VzIG5vdCB3
b3JrIHRoZSBzYW1lIGluIGFsbCBwbGF0Zm9ybXMgKHNlZSAjNDQyNykuCisgICAgICAgICMgUGF0
aC5hYnNvbHV0ZSgpIGV4aXN0cywgYnV0IGl0IGlzIG5vdCBwdWJsaWMgKHNlZSBodHRwczovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTI1MDEyKS4KKyAgICAgICAgIyBJZ25vcmUgdHlwZSBiZWNhdXNl
IG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMvNjE3Mi4KKyAgICAgICAg
Y29udmVydGVyPWF0dHIuY29udmVydGVycy5vcHRpb25hbCgKKyAgICAgICAgICAgIGxhbWJkYSBw
OiBQYXRoKG9zLnBhdGguYWJzcGF0aChzdHIocCkpKSAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAg
KSwKKyAgICApCisgICAgX3RyYWNlID0gYXR0ci5pYigpCisgICAgX2Jhc2V0ZW1wID0gYXR0ci5p
Yih0eXBlPU9wdGlvbmFsW1BhdGhdLCBkZWZhdWx0PU5vbmUpCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgZnJvbV9jb25maWcoY2xzLCBjb25maWc6IENvbmZpZykgLT4gIlRlbXBQYXRoRmFj
dG9yeSI6CisgICAgICAgICIiIkNyZWF0ZSBhIGZhY3RvcnkgYWNjb3JkaW5nIHRvIHB5dGVzdCBj
b25maWd1cmF0aW9uLiIiIgorICAgICAgICByZXR1cm4gY2xzKAorICAgICAgICAgICAgZ2l2ZW5f
YmFzZXRlbXA9Y29uZmlnLm9wdGlvbi5iYXNldGVtcCwgdHJhY2U9Y29uZmlnLnRyYWNlLmdldCgi
dG1wZGlyIikKKyAgICAgICAgKQorCisgICAgZGVmIF9lbnN1cmVfcmVsYXRpdmVfdG9fYmFzZXRl
bXAoc2VsZiwgYmFzZW5hbWU6IHN0cikgLT4gc3RyOgorICAgICAgICBiYXNlbmFtZSA9IG9zLnBh
dGgubm9ybXBhdGgoYmFzZW5hbWUpCisgICAgICAgIGlmIChzZWxmLmdldGJhc2V0ZW1wKCkgLyBi
YXNlbmFtZSkucmVzb2x2ZSgpLnBhcmVudCAhPSBzZWxmLmdldGJhc2V0ZW1wKCk6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgYSBub3Jt
YWxpemVkIGFuZCByZWxhdGl2ZSBwYXRoIi5mb3JtYXQoYmFzZW5hbWUpCisgICAgICAgICAgICAp
CisgICAgICAgIHJldHVybiBiYXNlbmFtZQogCi0gICAgZGVmIGVuc3VyZXRlbXAoc2VsZiwgc3Ry
aW5nLCBkaXI9MSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCkgcmV0dXJuIHRlbXBvcmFyeSBk
aXJlY3RvcnkgcGF0aCB3aXRoCi0gICAgICAgICAgICB0aGUgZ2l2ZW4gc3RyaW5nIGFzIHRoZSB0
cmFpbGluZyBwYXJ0LiAgSXQgaXMgdXN1YWxseQotICAgICAgICAgICAgYmV0dGVyIHRvIHVzZSB0
aGUgJ3RtcGRpcicgZnVuY3Rpb24gYXJndW1lbnQgd2hpY2gKLSAgICAgICAgICAgIHByb3ZpZGVz
IGFuIGVtcHR5IHVuaXF1ZS1wZXItdGVzdC1pbnZvY2F0aW9uIGRpcmVjdG9yeQotICAgICAgICAg
ICAgYW5kIGlzIGd1YXJhbnRlZWQgdG8gYmUgZW1wdHkuCi0gICAgICAgICIiIgotICAgICAgICAj
IHB5LmxvZy5fYXBpd2FybigiPjEuMSIsICJ1c2UgdG1wZGlyIGZ1bmN0aW9uIGFyZ3VtZW50IikK
LSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0YmFzZXRlbXAoKS5lbnN1cmUoc3RyaW5nLCBkaXI9ZGly
KQorICAgIGRlZiBta3RlbXAoc2VsZiwgYmFzZW5hbWU6IHN0ciwgbnVtYmVyZWQ6IGJvb2wgPSBU
cnVlKSAtPiBQYXRoOgorICAgICAgICAiIiJDcmVhdGUgYSBuZXcgdGVtcG9yYXJ5IGRpcmVjdG9y
eSBtYW5hZ2VkIGJ5IHRoZSBmYWN0b3J5LgogCi0gICAgZGVmIG1rdGVtcChzZWxmLCBiYXNlbmFt
ZSwgbnVtYmVyZWQ9VHJ1ZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBvZiB0
aGUgYmFzZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCByZXR1cm4gaXQuCi0gICAgICAgIElmIGBg
bnVtYmVyZWRgYCwgZW5zdXJlIHRoZSBkaXJlY3RvcnkgaXMgdW5pcXVlIGJ5IGFkZGluZyBhIG51
bWJlcgotICAgICAgICBwcmVmaXggZ3JlYXRlciB0aGFuIGFueSBleGlzdGluZyBvbmUuCisgICAg
ICAgIDpwYXJhbSBiYXNlbmFtZToKKyAgICAgICAgICAgIERpcmVjdG9yeSBiYXNlIG5hbWUsIG11
c3QgYmUgYSByZWxhdGl2ZSBwYXRoLgorCisgICAgICAgIDpwYXJhbSBudW1iZXJlZDoKKyAgICAg
ICAgICAgIElmIGBgVHJ1ZWBgLCBlbnN1cmUgdGhlIGRpcmVjdG9yeSBpcyB1bmlxdWUgYnkgYWRk
aW5nIGEgbnVtYmVyZWQKKyAgICAgICAgICAgIHN1ZmZpeCBncmVhdGVyIHRoYW4gYW55IGV4aXN0
aW5nIG9uZTogYGBiYXNlbmFtZT0iZm9vLSJgYCBhbmQgYGBudW1iZXJlZD1UcnVlYGAKKyAgICAg
ICAgICAgIG1lYW5zIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBkaXJlY3RvcmllcyBu
YW1lZCBgYCJmb28tMCJgYCwKKyAgICAgICAgICAgIGBgImZvby0xImBgLCBgYCJmb28tMiJgYCBh
bmQgc28gb24uCisKKyAgICAgICAgOnJldHVybnM6CisgICAgICAgICAgICBUaGUgcGF0aCB0byB0
aGUgbmV3IGRpcmVjdG9yeS4KICAgICAgICAgIiIiCi0gICAgICAgIGJhc2V0ZW1wID0gc2VsZi5n
ZXRiYXNldGVtcCgpCisgICAgICAgIGJhc2VuYW1lID0gc2VsZi5fZW5zdXJlX3JlbGF0aXZlX3Rv
X2Jhc2V0ZW1wKGJhc2VuYW1lKQogICAgICAgICBpZiBub3QgbnVtYmVyZWQ6Ci0gICAgICAgICAg
ICBwID0gYmFzZXRlbXAubWtkaXIoYmFzZW5hbWUpCisgICAgICAgICAgICBwID0gc2VsZi5nZXRi
YXNldGVtcCgpLmpvaW5wYXRoKGJhc2VuYW1lKQorICAgICAgICAgICAgcC5ta2RpcigpCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBwID0gcHkucGF0aC5sb2NhbC5tYWtlX251bWJlcmVkX2Rp
cigKLSAgICAgICAgICAgICAgICBwcmVmaXg9YmFzZW5hbWUsIGtlZXA9MCwgcm9vdGRpcj1iYXNl
dGVtcCwgbG9ja190aW1lb3V0PU5vbmUKLSAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi50cmFj
ZSgibWt0ZW1wIiwgcCkKKyAgICAgICAgICAgIHAgPSBtYWtlX251bWJlcmVkX2Rpcihyb290PXNl
bGYuZ2V0YmFzZXRlbXAoKSwgcHJlZml4PWJhc2VuYW1lKQorICAgICAgICAgICAgc2VsZi5fdHJh
Y2UoIm1rdGVtcCIsIHApCiAgICAgICAgIHJldHVybiBwCiAKLSAgICBkZWYgZ2V0YmFzZXRlbXAo
c2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gYmFzZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAiIiIK
LSAgICAgICAgdHJ5OgorICAgIGRlZiBnZXRiYXNldGVtcChzZWxmKSAtPiBQYXRoOgorICAgICAg
ICAiIiJSZXR1cm4gYmFzZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIiIgorICAgICAgICBpZiBzZWxm
Ll9iYXNldGVtcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9iYXNldGVt
cAotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBiYXNldGVtcCA9
IHNlbGYuY29uZmlnLm9wdGlvbi5iYXNldGVtcAotICAgICAgICAgICAgaWYgYmFzZXRlbXA6Ci0g
ICAgICAgICAgICAgICAgYmFzZXRlbXAgPSBweS5wYXRoLmxvY2FsKGJhc2V0ZW1wKQotICAgICAg
ICAgICAgICAgIGlmIGJhc2V0ZW1wLmNoZWNrKCk6Ci0gICAgICAgICAgICAgICAgICAgIGJhc2V0
ZW1wLnJlbW92ZSgpCi0gICAgICAgICAgICAgICAgYmFzZXRlbXAubWtkaXIoKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZW1wcm9vdCA9IHB5LnBhdGgubG9jYWwuZ2V0X3Rl
bXByb290KCkKLSAgICAgICAgICAgICAgICB1c2VyID0gZ2V0X3VzZXIoKQotICAgICAgICAgICAg
ICAgIGlmIHVzZXI6Ci0gICAgICAgICAgICAgICAgICAgICMgdXNlIGEgc3ViLWRpcmVjdG9yeSBp
biB0aGUgdGVtcHJvb3QgdG8gc3BlZWQtdXAKLSAgICAgICAgICAgICAgICAgICAgIyBtYWtlX251
bWJlcmVkX2RpcigpIGNhbGwKLSAgICAgICAgICAgICAgICAgICAgcm9vdGRpciA9IHRlbXByb290
LmpvaW4oInB5dGVzdC1vZi0lcyIgJSB1c2VyKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIHJvb3RkaXIgPSB0ZW1wcm9vdAotICAgICAgICAgICAgICAgIHJvb3Rk
aXIuZW5zdXJlKGRpcj0xKQotICAgICAgICAgICAgICAgIGJhc2V0ZW1wID0gcHkucGF0aC5sb2Nh
bC5tYWtlX251bWJlcmVkX2RpcigKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4PSJweXRlc3Qt
Iiwgcm9vdGRpcj1yb290ZGlyCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5f
YmFzZXRlbXAgPSB0ID0gYmFzZXRlbXAucmVhbHBhdGgoKQotICAgICAgICAgICAgc2VsZi50cmFj
ZSgibmV3IGJhc2V0ZW1wIiwgdCkKLSAgICAgICAgICAgIHJldHVybiB0Ci0KLSAgICBkZWYgZmlu
aXNoKHNlbGYpOgotICAgICAgICBzZWxmLnRyYWNlKCJmaW5pc2giKQotCi0KLWRlZiBnZXRfdXNl
cigpOgorCisgICAgICAgIGlmIHNlbGYuX2dpdmVuX2Jhc2V0ZW1wIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgYmFzZXRlbXAgPSBzZWxmLl9naXZlbl9iYXNldGVtcAorICAgICAgICAgICAgZW5z
dXJlX3Jlc2V0X2RpcihiYXNldGVtcCkKKyAgICAgICAgICAgIGJhc2V0ZW1wID0gYmFzZXRlbXAu
cmVzb2x2ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmcm9tX2VudiA9IG9zLmVudmly
b24uZ2V0KCJQWVRFU1RfREVCVUdfVEVNUFJPT1QiKQorICAgICAgICAgICAgdGVtcHJvb3QgPSBQ
YXRoKGZyb21fZW52IG9yIHRlbXBmaWxlLmdldHRlbXBkaXIoKSkucmVzb2x2ZSgpCisgICAgICAg
ICAgICB1c2VyID0gZ2V0X3VzZXIoKSBvciAidW5rbm93biIKKyAgICAgICAgICAgICMgdXNlIGEg
c3ViLWRpcmVjdG9yeSBpbiB0aGUgdGVtcHJvb3QgdG8gc3BlZWQtdXAKKyAgICAgICAgICAgICMg
bWFrZV9udW1iZXJlZF9kaXIoKSBjYWxsCisgICAgICAgICAgICByb290ZGlyID0gdGVtcHJvb3Qu
am9pbnBhdGgoInB5dGVzdC1vZi17fSIuZm9ybWF0KHVzZXIpKQorICAgICAgICAgICAgcm9vdGRp
ci5ta2RpcihleGlzdF9vaz1UcnVlKQorICAgICAgICAgICAgYmFzZXRlbXAgPSBtYWtlX251bWJl
cmVkX2Rpcl93aXRoX2NsZWFudXAoCisgICAgICAgICAgICAgICAgcHJlZml4PSJweXRlc3QtIiwg
cm9vdD1yb290ZGlyLCBrZWVwPTMsIGxvY2tfdGltZW91dD1MT0NLX1RJTUVPVVQKKyAgICAgICAg
ICAgICkKKyAgICAgICAgYXNzZXJ0IGJhc2V0ZW1wIGlzIG5vdCBOb25lLCBiYXNldGVtcAorICAg
ICAgICBzZWxmLl9iYXNldGVtcCA9IHQgPSBiYXNldGVtcAorICAgICAgICBzZWxmLl90cmFjZSgi
bmV3IGJhc2V0ZW1wIiwgdCkKKyAgICAgICAgcmV0dXJuIHQKKworCitAZmluYWwKK0BhdHRyLnMK
K2NsYXNzIFRlbXBkaXJGYWN0b3J5OgorICAgICIiIkJhY2t3YXJkIGNvbXB0aWJpbGl0eSB3cmFw
cGVyIHRoYXQgaW1wbGVtZW50cyA6Y2xhc3M6YGBweS5wYXRoLmxvY2FsYGAKKyAgICBmb3IgOmNs
YXNzOmBgVGVtcFBhdGhGYWN0b3J5YGAuIiIiCisKKyAgICBfdG1wcGF0aF9mYWN0b3J5ID0gYXR0
ci5pYih0eXBlPVRlbXBQYXRoRmFjdG9yeSkKKworICAgIGRlZiBta3RlbXAoc2VsZiwgYmFzZW5h
bWU6IHN0ciwgbnVtYmVyZWQ6IGJvb2wgPSBUcnVlKSAtPiBweS5wYXRoLmxvY2FsOgorICAgICAg
ICAiIiJTYW1lIGFzIDptZXRoOmBUZW1wUGF0aEZhY3RvcnkubWt0ZW1wYCwgYnV0IHJldHVybnMg
YSBgYHB5LnBhdGgubG9jYWxgYCBvYmplY3QuIiIiCisgICAgICAgIHJldHVybiBweS5wYXRoLmxv
Y2FsKHNlbGYuX3RtcHBhdGhfZmFjdG9yeS5ta3RlbXAoYmFzZW5hbWUsIG51bWJlcmVkKS5yZXNv
bHZlKCkpCisKKyAgICBkZWYgZ2V0YmFzZXRlbXAoc2VsZikgLT4gcHkucGF0aC5sb2NhbDoKKyAg
ICAgICAgIiIiQmFja3dhcmQgY29tcGF0IHdyYXBwZXIgZm9yIGBgX3RtcHBhdGhfZmFjdG9yeS5n
ZXRiYXNldGVtcGBgLiIiIgorICAgICAgICByZXR1cm4gcHkucGF0aC5sb2NhbChzZWxmLl90bXBw
YXRoX2ZhY3RvcnkuZ2V0YmFzZXRlbXAoKS5yZXNvbHZlKCkpCisKKworZGVmIGdldF91c2VyKCkg
LT4gT3B0aW9uYWxbc3RyXToKICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBuYW1lLCBv
ciBOb25lIGlmIGdldHVzZXIoKSBkb2VzIG5vdCB3b3JrCi0gICAgaW4gdGhlIGN1cnJlbnQgZW52
aXJvbm1lbnQgKHNlZSAjMTAxMCkuCi0gICAgIiIiCisgICAgaW4gdGhlIGN1cnJlbnQgZW52aXJv
bm1lbnQgKHNlZSAjMTAxMCkuIiIiCiAgICAgaW1wb3J0IGdldHBhc3MKIAogICAgIHRyeToKQEAg
LTg3LDExICsxMzMsNyBAQCBkZWYgZ2V0X3VzZXIoKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAog
Ci0jIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLVRlbXBkaXJIYW5kbGVyID0gVGVtcGRpckZhY3Rv
cnkKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgorZGVmIHB5dGVzdF9jb25maWd1
cmUoY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CiAgICAgIiIiQ3JlYXRlIGEgVGVtcGRpckZhY3Rv
cnkgYW5kIGF0dGFjaCBpdCB0byB0aGUgY29uZmlnIG9iamVjdC4KIAogICAgIFRoaXMgaXMgdG8g
Y29tcGx5IHdpdGggZXhpc3RpbmcgcGx1Z2lucyB3aGljaCBleHBlY3QgdGhlIGhhbmRsZXIgdG8g
YmUKQEAgLTk5LDMzICsxNDEsNTkgQEAgZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKICAg
ICB0byB0aGUgdG1wZGlyX2ZhY3Rvcnkgc2Vzc2lvbiBmaXh0dXJlLgogICAgICIiIgogICAgIG1w
ID0gTW9ua2V5UGF0Y2goKQotICAgIHQgPSBUZW1wZGlyRmFjdG9yeShjb25maWcpCi0gICAgY29u
ZmlnLl9jbGVhbnVwLmV4dGVuZChbbXAudW5kbywgdC5maW5pc2hdKQorICAgIHRtcHBhdGhfaGFu
ZGxlciA9IFRlbXBQYXRoRmFjdG9yeS5mcm9tX2NvbmZpZyhjb25maWcpCisgICAgdCA9IFRlbXBk
aXJGYWN0b3J5KHRtcHBhdGhfaGFuZGxlcikKKyAgICBjb25maWcuX2NsZWFudXAuYXBwZW5kKG1w
LnVuZG8pCisgICAgbXAuc2V0YXR0cihjb25maWcsICJfdG1wX3BhdGhfZmFjdG9yeSIsIHRtcHBh
dGhfaGFuZGxlciwgcmFpc2luZz1GYWxzZSkKICAgICBtcC5zZXRhdHRyKGNvbmZpZywgIl90bXBk
aXJoYW5kbGVyIiwgdCwgcmFpc2luZz1GYWxzZSkKLSAgICBtcC5zZXRhdHRyKHB5dGVzdCwgImVu
c3VyZXRlbXAiLCB0LmVuc3VyZXRlbXAsIHJhaXNpbmc9RmFsc2UpCiAKIAogQHB5dGVzdC5maXh0
dXJlKHNjb3BlPSJzZXNzaW9uIikKLWRlZiB0bXBkaXJfZmFjdG9yeShyZXF1ZXN0KToKLSAgICAi
IiJSZXR1cm4gYSBUZW1wZGlyRmFjdG9yeSBpbnN0YW5jZSBmb3IgdGhlIHRlc3Qgc2Vzc2lvbi4K
LSAgICAiIiIKLSAgICByZXR1cm4gcmVxdWVzdC5jb25maWcuX3RtcGRpcmhhbmRsZXIKK2RlZiB0
bXBkaXJfZmFjdG9yeShyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCkgLT4gVGVtcGRpckZhY3Rvcnk6
CisgICAgIiIiUmV0dXJuIGEgOmNsYXNzOmBfcHl0ZXN0LnRtcGRpci5UZW1wZGlyRmFjdG9yeWAg
aW5zdGFuY2UgZm9yIHRoZSB0ZXN0IHNlc3Npb24uIiIiCisgICAgIyBTZXQgZHluYW1pY2FsbHkg
YnkgcHl0ZXN0X2NvbmZpZ3VyZSgpIGFib3ZlLgorICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5f
dG1wZGlyaGFuZGxlciAgIyB0eXBlOiBpZ25vcmUKIAogCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiB0
bXBkaXIocmVxdWVzdCwgdG1wZGlyX2ZhY3RvcnkpOgotICAgICIiIlJldHVybiBhIHRlbXBvcmFy
eSBkaXJlY3RvcnkgcGF0aCBvYmplY3QKLSAgICB3aGljaCBpcyB1bmlxdWUgdG8gZWFjaCB0ZXN0
IGZ1bmN0aW9uIGludm9jYXRpb24sCi0gICAgY3JlYXRlZCBhcyBhIHN1YiBkaXJlY3Rvcnkgb2Yg
dGhlIGJhc2UgdGVtcG9yYXJ5Ci0gICAgZGlyZWN0b3J5LiAgVGhlIHJldHVybmVkIG9iamVjdCBp
cyBhIGBweS5wYXRoLmxvY2FsYF8KLSAgICBwYXRoIG9iamVjdC4KK0BweXRlc3QuZml4dHVyZShz
Y29wZT0ic2Vzc2lvbiIpCitkZWYgdG1wX3BhdGhfZmFjdG9yeShyZXF1ZXN0OiBGaXh0dXJlUmVx
dWVzdCkgLT4gVGVtcFBhdGhGYWN0b3J5OgorICAgICIiIlJldHVybiBhIDpjbGFzczpgX3B5dGVz
dC50bXBkaXIuVGVtcFBhdGhGYWN0b3J5YCBpbnN0YW5jZSBmb3IgdGhlIHRlc3Qgc2Vzc2lvbi4i
IiIKKyAgICAjIFNldCBkeW5hbWljYWxseSBieSBweXRlc3RfY29uZmlndXJlKCkgYWJvdmUuCisg
ICAgcmV0dXJuIHJlcXVlc3QuY29uZmlnLl90bXBfcGF0aF9mYWN0b3J5ICAjIHR5cGU6IGlnbm9y
ZQogCi0gICAgLi4gX2BweS5wYXRoLmxvY2FsYDogaHR0cHM6Ly9weS5yZWFkdGhlZG9jcy5pby9l
bi9sYXRlc3QvcGF0aC5odG1sCi0gICAgIiIiCisKK2RlZiBfbWtfdG1wKHJlcXVlc3Q6IEZpeHR1
cmVSZXF1ZXN0LCBmYWN0b3J5OiBUZW1wUGF0aEZhY3RvcnkpIC0+IFBhdGg6CiAgICAgbmFtZSA9
IHJlcXVlc3Qubm9kZS5uYW1lCiAgICAgbmFtZSA9IHJlLnN1YihyIltcV10iLCAiXyIsIG5hbWUp
CiAgICAgTUFYVkFMID0gMzAKLSAgICBpZiBsZW4obmFtZSkgPiBNQVhWQUw6Ci0gICAgICAgIG5h
bWUgPSBuYW1lWzpNQVhWQUxdCi0gICAgeCA9IHRtcGRpcl9mYWN0b3J5Lm1rdGVtcChuYW1lLCBu
dW1iZXJlZD1UcnVlKQotICAgIHJldHVybiB4CisgICAgbmFtZSA9IG5hbWVbOk1BWFZBTF0KKyAg
ICByZXR1cm4gZmFjdG9yeS5ta3RlbXAobmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKKworCitAcHl0ZXN0
LmZpeHR1cmUKK2RlZiB0bXBkaXIodG1wX3BhdGg6IFBhdGgpIC0+IHB5LnBhdGgubG9jYWw6Cisg
ICAgIiIiUmV0dXJuIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoIG9iamVjdCB3aGljaCBpcyB1
bmlxdWUgdG8gZWFjaCB0ZXN0CisgICAgZnVuY3Rpb24gaW52b2NhdGlvbiwgY3JlYXRlZCBhcyBh
IHN1YiBkaXJlY3Rvcnkgb2YgdGhlIGJhc2UgdGVtcG9yYXJ5CisgICAgZGlyZWN0b3J5LgorCisg
ICAgVGhlIHJldHVybmVkIG9iamVjdCBpcyBhIGBweS5wYXRoLmxvY2FsYF8gcGF0aCBvYmplY3Qu
CisKKyAgICAuLiBfYHB5LnBhdGgubG9jYWxgOiBodHRwczovL3B5LnJlYWR0aGVkb2NzLmlvL2Vu
L2xhdGVzdC9wYXRoLmh0bWwKKyAgICAiIiIKKyAgICByZXR1cm4gcHkucGF0aC5sb2NhbCh0bXBf
cGF0aCkKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiB0bXBfcGF0aChyZXF1ZXN0OiBGaXh0dXJl
UmVxdWVzdCwgdG1wX3BhdGhfZmFjdG9yeTogVGVtcFBhdGhGYWN0b3J5KSAtPiBQYXRoOgorICAg
ICIiIlJldHVybiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aCBvYmplY3Qgd2hpY2ggaXMgdW5p
cXVlIHRvIGVhY2ggdGVzdAorICAgIGZ1bmN0aW9uIGludm9jYXRpb24sIGNyZWF0ZWQgYXMgYSBz
dWIgZGlyZWN0b3J5IG9mIHRoZSBiYXNlIHRlbXBvcmFyeQorICAgIGRpcmVjdG9yeS4KKworICAg
IFRoZSByZXR1cm5lZCBvYmplY3QgaXMgYSA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAgb2JqZWN0Lgor
CisgICAgLi4gbm90ZTo6CisKKyAgICAgICAgSW4gcHl0aG9uIDwgMy42IHRoaXMgaXMgYSBwYXRo
bGliMi5QYXRoLgorICAgICIiIgorCisgICAgcmV0dXJuIF9ta190bXAocmVxdWVzdCwgdG1wX3Bh
dGhfZmFjdG9yeSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3VuaXR0ZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdW5pdHRlc3QucHkKaW5kZXggNmFkOWZkYTg4
NzA1Li4wOWFhMDE0YzU4YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3Vu
aXR0ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3VuaXR0ZXN0LnB5CkBAIC0x
LDExMiArMSwxNzcgQEAKLSIiIiBkaXNjb3ZlcnkgYW5kIHJ1bm5pbmcgb2Ygc3RkLWxpYnJhcnkg
InVuaXR0ZXN0IiBzdHlsZSB0ZXN0cy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KKyIiIkRpc2NvdmVyIGFuZCBy
dW4gc3RkLWxpYnJhcnkgInVuaXR0ZXN0IiBzdHlsZSB0ZXN0cy4iIiIKIGltcG9ydCBzeXMKIGlt
cG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB0eXBlcworZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJv
bSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitm
cm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9t
IHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0
eXBpbmcgaW1wb3J0IFVuaW9uCiAKLSMgZm9yIHRyYW5zZmVycmluZyBtYXJrZXJzCiBpbXBvcnQg
X3B5dGVzdC5fY29kZQoraW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQg
Z2V0aW1mdW5jCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBpc19hc3luY19mdW5jdGlvbgor
ZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORwogZnJvbSBfcHl0ZXN0LmNv
bmZpZyBpbXBvcnQgaG9va2ltcGwKLWZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbCwg
c2tpcCwgeGZhaWwKLWZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IHRyYW5zZmVyX21hcmtlcnMs
IENsYXNzLCBNb2R1bGUsIEZ1bmN0aW9uCi0KLQotZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0
ZW0oY29sbGVjdG9yLCBuYW1lLCBvYmopOgotICAgICMgaGFzIHVuaXR0ZXN0IGJlZW4gaW1wb3J0
ZWQgYW5kIGlzIG9iaiBhIHN1YmNsYXNzIG9mIGl0cyBUZXN0Q2FzZT8KK2Zyb20gX3B5dGVzdC5m
aXh0dXJlcyBpbXBvcnQgRml4dHVyZVJlcXVlc3QKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQg
Q29sbGVjdG9yCitmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0KK2Zyb20gX3B5dGVzdC5v
dXRjb21lcyBpbXBvcnQgZXhpdAorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsCitm
cm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IHNraXAKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBp
bXBvcnQgeGZhaWwKK2Zyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IENsYXNzCitmcm9tIF9weXRl
c3QucHl0aG9uIGltcG9ydCBGdW5jdGlvbgorZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgUHlD
b2xsZWN0b3IKK2Zyb20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0IENhbGxJbmZvCitmcm9tIF9weXRl
c3Quc2tpcHBpbmcgaW1wb3J0IHNraXBwZWRfYnlfbWFya19rZXkKK2Zyb20gX3B5dGVzdC5za2lw
cGluZyBpbXBvcnQgdW5leHBlY3RlZHN1Y2Nlc3Nfa2V5CisKK2lmIFRZUEVfQ0hFQ0tJTkc6Cisg
ICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKKworICAgIGZy
b20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgX1Njb3BlCisKKyAgICBfU3lzRXhjSW5mb1R5cGUg
PSBVbmlvblsKKyAgICAgICAgVHVwbGVbVHlwZVtCYXNlRXhjZXB0aW9uXSwgQmFzZUV4Y2VwdGlv
biwgdHlwZXMuVHJhY2ViYWNrVHlwZV0sCisgICAgICAgIFR1cGxlW05vbmUsIE5vbmUsIE5vbmVd
LAorICAgIF0KKworCitkZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbSgKKyAgICBjb2xsZWN0
b3I6IFB5Q29sbGVjdG9yLCBuYW1lOiBzdHIsIG9iajogb2JqZWN0CispIC0+IE9wdGlvbmFsWyJV
bml0VGVzdENhc2UiXToKKyAgICAjIEhhcyB1bml0dGVzdCBiZWVuIGltcG9ydGVkIGFuZCBpcyBv
YmogYSBzdWJjbGFzcyBvZiBpdHMgVGVzdENhc2U/CiAgICAgdHJ5OgotICAgICAgICBpZiBub3Qg
aXNzdWJjbGFzcyhvYmosIHN5cy5tb2R1bGVzWyJ1bml0dGVzdCJdLlRlc3RDYXNlKToKLSAgICAg
ICAgICAgIHJldHVybgorICAgICAgICB1dCA9IHN5cy5tb2R1bGVzWyJ1bml0dGVzdCJdCisgICAg
ICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgYHV0YCBpcyBhbiBvcGFxdWUgbW9kdWxlLgorICAg
ICAgICBpZiBub3QgaXNzdWJjbGFzcyhvYmosIHV0LlRlc3RDYXNlKTogICMgdHlwZTogaWdub3Jl
CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAg
IHJldHVybgotICAgICMgeWVzLCBzbyBsZXQncyBjb2xsZWN0IGl0Ci0gICAgcmV0dXJuIFVuaXRU
ZXN0Q2FzZShuYW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQorICAgICAgICByZXR1cm4gTm9uZQorICAg
ICMgWWVzLCBzbyBsZXQncyBjb2xsZWN0IGl0LgorICAgIGl0ZW0gPSBVbml0VGVzdENhc2UuZnJv
bV9wYXJlbnQoY29sbGVjdG9yLCBuYW1lPW5hbWUsIG9iaj1vYmopICAjIHR5cGU6IFVuaXRUZXN0
Q2FzZQorICAgIHJldHVybiBpdGVtCiAKIAogY2xhc3MgVW5pdFRlc3RDYXNlKENsYXNzKToKLSAg
ICAjIG1hcmtlciBmb3IgZml4dHVyZW1hbmdlci5nZXRmaXh0dXJlaW5mbygpCi0gICAgIyB0byBk
ZWNsYXJlIHRoYXQgb3VyIGNoaWxkcmVuIGRvIG5vdCBzdXBwb3J0IGZ1bmNhcmdzCisgICAgIyBN
YXJrZXIgZm9yIGZpeHR1cmVtYW5nZXIuZ2V0Zml4dHVyZWluZm8oKQorICAgICMgdG8gZGVjbGFy
ZSB0aGF0IG91ciBjaGlsZHJlbiBkbyBub3Qgc3VwcG9ydCBmdW5jYXJncy4KICAgICBub2Z1bmNh
cmdzID0gVHJ1ZQogCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBjbHMgPSBzZWxmLm9i
agotICAgICAgICBpZiBnZXRhdHRyKGNscywgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2UpOgot
ICAgICAgICAgICAgcmV0dXJuICAjIHNraXBwZWQKLSAgICAgICAgc2V0dXAgPSBnZXRhdHRyKGNs
cywgInNldFVwQ2xhc3MiLCBOb25lKQotICAgICAgICBpZiBzZXR1cCBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIHNldHVwKCkKLSAgICAgICAgdGVhcmRvd24gPSBnZXRhdHRyKGNscywgInRlYXJE
b3duQ2xhc3MiLCBOb25lKQotICAgICAgICBpZiB0ZWFyZG93biBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYuYWRkZmluYWxpemVyKHRlYXJkb3duKQotICAgICAgICBzdXBlcihVbml0VGVz
dENhc2UsIHNlbGYpLnNldHVwKCkKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgorICAgIGRlZiBj
b2xsZWN0KHNlbGYpIC0+IEl0ZXJhYmxlW1VuaW9uW0l0ZW0sIENvbGxlY3Rvcl1dOgogICAgICAg
ICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0TG9hZGVyCiAKICAgICAgICAgY2xzID0gc2VsZi5v
YmoKICAgICAgICAgaWYgbm90IGdldGF0dHIoY2xzLCAiX190ZXN0X18iLCBUcnVlKToKICAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIHNraXBwZWQgPSBfaXNfc2tpcHBlZChjbHMpCisgICAg
ICAgIGlmIG5vdCBza2lwcGVkOgorICAgICAgICAgICAgc2VsZi5faW5qZWN0X3NldHVwX3RlYXJk
b3duX2ZpeHR1cmVzKGNscykKKyAgICAgICAgICAgIHNlbGYuX2luamVjdF9zZXR1cF9jbGFzc19m
aXh0dXJlKCkKKwogICAgICAgICBzZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLnBhcnNlZmFj
dG9yaWVzKHNlbGYsIHVuaXR0ZXN0PVRydWUpCiAgICAgICAgIGxvYWRlciA9IFRlc3RMb2FkZXIo
KQotICAgICAgICBtb2R1bGUgPSBzZWxmLmdldHBhcmVudChNb2R1bGUpLm9iagogICAgICAgICBm
b3VuZHNvbWV0aGluZyA9IEZhbHNlCiAgICAgICAgIGZvciBuYW1lIGluIGxvYWRlci5nZXRUZXN0
Q2FzZU5hbWVzKHNlbGYub2JqKToKICAgICAgICAgICAgIHggPSBnZXRhdHRyKHNlbGYub2JqLCBu
YW1lKQogICAgICAgICAgICAgaWYgbm90IGdldGF0dHIoeCwgIl9fdGVzdF9fIiwgVHJ1ZSk6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZ1bmNvYmogPSBnZXRhdHRyKHgs
ICJpbV9mdW5jIiwgeCkKLSAgICAgICAgICAgIHRyYW5zZmVyX21hcmtlcnMoZnVuY29iaiwgY2xz
LCBtb2R1bGUpCi0gICAgICAgICAgICB5aWVsZCBUZXN0Q2FzZUZ1bmN0aW9uKG5hbWUsIHBhcmVu
dD1zZWxmLCBjYWxsb2JqPWZ1bmNvYmopCisgICAgICAgICAgICBmdW5jb2JqID0gZ2V0aW1mdW5j
KHgpCisgICAgICAgICAgICB5aWVsZCBUZXN0Q2FzZUZ1bmN0aW9uLmZyb21fcGFyZW50KHNlbGYs
IG5hbWU9bmFtZSwgY2FsbG9iaj1mdW5jb2JqKQogICAgICAgICAgICAgZm91bmRzb21ldGhpbmcg
PSBUcnVlCiAKICAgICAgICAgaWYgbm90IGZvdW5kc29tZXRoaW5nOgogICAgICAgICAgICAgcnVu
dGVzdCA9IGdldGF0dHIoc2VsZi5vYmosICJydW5UZXN0IiwgTm9uZSkKICAgICAgICAgICAgIGlm
IHJ1bnRlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdXQgPSBzeXMubW9kdWxlcy5n
ZXQoInR3aXN0ZWQudHJpYWwudW5pdHRlc3QiLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIHV0
IGlzIE5vbmUgb3IgcnVudGVzdCAhPSB1dC5UZXN0Q2FzZS5ydW5UZXN0OgotICAgICAgICAgICAg
ICAgICAgICB5aWVsZCBUZXN0Q2FzZUZ1bmN0aW9uKCJydW5UZXN0IiwgcGFyZW50PXNlbGYpCisg
ICAgICAgICAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBgdXRgIGlzIGFuIG9wYXF1ZSBt
b2R1bGUuCisgICAgICAgICAgICAgICAgaWYgdXQgaXMgTm9uZSBvciBydW50ZXN0ICE9IHV0LlRl
c3RDYXNlLnJ1blRlc3Q6ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICAgICAgICAgICAgICB5aWVs
ZCBUZXN0Q2FzZUZ1bmN0aW9uLmZyb21fcGFyZW50KHNlbGYsIG5hbWU9InJ1blRlc3QiKQorCisg
ICAgZGVmIF9pbmplY3Rfc2V0dXBfdGVhcmRvd25fZml4dHVyZXMoc2VsZiwgY2xzOiB0eXBlKSAt
PiBOb25lOgorICAgICAgICAiIiJJbmplY3RzIGEgaGlkZGVuIGF1dG8tdXNlIGZpeHR1cmUgdG8g
aW52b2tlIHNldFVwQ2xhc3Mvc2V0dXBfbWV0aG9kIGFuZCBjb3JyZXNwb25kaW5nCisgICAgICAg
IHRlYXJkb3duIGZ1bmN0aW9ucyAoIzUxNykuIiIiCisgICAgICAgIGNsYXNzX2ZpeHR1cmUgPSBf
bWFrZV94dW5pdF9maXh0dXJlKAorICAgICAgICAgICAgY2xzLCAic2V0VXBDbGFzcyIsICJ0ZWFy
RG93bkNsYXNzIiwgc2NvcGU9ImNsYXNzIiwgcGFzc19zZWxmPUZhbHNlCisgICAgICAgICkKKyAg
ICAgICAgaWYgY2xhc3NfZml4dHVyZToKKyAgICAgICAgICAgIGNscy5fX3B5dGVzdF9jbGFzc19z
ZXR1cCA9IGNsYXNzX2ZpeHR1cmUgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworICAg
ICAgICBtZXRob2RfZml4dHVyZSA9IF9tYWtlX3h1bml0X2ZpeHR1cmUoCisgICAgICAgICAgICBj
bHMsICJzZXR1cF9tZXRob2QiLCAidGVhcmRvd25fbWV0aG9kIiwgc2NvcGU9ImZ1bmN0aW9uIiwg
cGFzc19zZWxmPVRydWUKKyAgICAgICAgKQorICAgICAgICBpZiBtZXRob2RfZml4dHVyZToKKyAg
ICAgICAgICAgIGNscy5fX3B5dGVzdF9tZXRob2Rfc2V0dXAgPSBtZXRob2RfZml4dHVyZSAgIyB0
eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorCisKK2RlZiBfbWFrZV94dW5pdF9maXh0dXJlKAor
ICAgIG9iajogdHlwZSwgc2V0dXBfbmFtZTogc3RyLCB0ZWFyZG93bl9uYW1lOiBzdHIsIHNjb3Bl
OiAiX1Njb3BlIiwgcGFzc19zZWxmOiBib29sCispOgorICAgIHNldHVwID0gZ2V0YXR0cihvYmos
IHNldHVwX25hbWUsIE5vbmUpCisgICAgdGVhcmRvd24gPSBnZXRhdHRyKG9iaiwgdGVhcmRvd25f
bmFtZSwgTm9uZSkKKyAgICBpZiBzZXR1cCBpcyBOb25lIGFuZCB0ZWFyZG93biBpcyBOb25lOgor
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPXNjb3BlLCBh
dXRvdXNlPVRydWUpCisgICAgZGVmIGZpeHR1cmUoc2VsZiwgcmVxdWVzdDogRml4dHVyZVJlcXVl
c3QpIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgaWYgX2lzX3NraXBw
ZWQoc2VsZik6CisgICAgICAgICAgICByZWFzb24gPSBzZWxmLl9fdW5pdHRlc3Rfc2tpcF93aHlf
XworICAgICAgICAgICAgcHl0ZXN0LnNraXAocmVhc29uKQorICAgICAgICBpZiBzZXR1cCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGlmIHBhc3Nfc2VsZjoKKyAgICAgICAgICAgICAgICBzZXR1
cChzZWxmLCByZXF1ZXN0LmZ1bmN0aW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzZXR1cCgpCisgICAgICAgIHlpZWxkCisgICAgICAgIGlmIHRlYXJkb3duIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgaWYgcGFzc19zZWxmOgorICAgICAgICAgICAgICAgIHRlYXJkb3du
KHNlbGYsIHJlcXVlc3QuZnVuY3Rpb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHRlYXJkb3duKCkKKworICAgIHJldHVybiBmaXh0dXJlCiAKIAogY2xhc3MgVGVzdENhc2VG
dW5jdGlvbihGdW5jdGlvbik6CiAgICAgbm9mdW5jYXJncyA9IFRydWUKLSAgICBfZXhjaW5mbyA9
IE5vbmUKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdGNhc2UgPSBz
ZWxmLnBhcmVudC5vYmooc2VsZi5uYW1lKQotICAgICAgICBzZWxmLl9maXhfdW5pdHRlc3Rfc2tp
cF9kZWNvcmF0b3IoKQorICAgIF9leGNpbmZvID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtMaXN0
W19weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXV1dCisgICAgX3Rlc3Rj
YXNlID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFt1bml0dGVzdC5UZXN0Q2FzZV0KKworICAgIGRl
ZiBzZXR1cChzZWxmKSAtPiBOb25lOgorICAgICAgICAjIEEgYm91bmQgbWV0aG9kIHRvIGJlIGNh
bGxlZCBkdXJpbmcgdGVhcmRvd24oKSBpZiBzZXQgKHNlZSAncnVudGVzdCgpJykuCisgICAgICAg
IHNlbGYuX2V4cGxpY2l0X3RlYXJEb3duID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtDYWxsYWJs
ZVtbXSwgTm9uZV1dCisgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudCBpcyBub3QgTm9uZQorICAg
ICAgICBzZWxmLl90ZXN0Y2FzZSA9IHNlbGYucGFyZW50Lm9iaihzZWxmLm5hbWUpICAjIHR5cGU6
IGlnbm9yZVthdHRyLWRlZmluZWRdCiAgICAgICAgIHNlbGYuX29iaiA9IGdldGF0dHIoc2VsZi5f
dGVzdGNhc2UsIHNlbGYubmFtZSkKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLl90ZXN0Y2FzZSwg
InNldHVwX21ldGhvZCIpOgotICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2Uuc2V0dXBfbWV0aG9k
KHNlbGYuX29iaikKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX3JlcXVlc3QiKToKICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCiAKLSAgICBkZWYgX2ZpeF91bml0
dGVzdF9za2lwX2RlY29yYXRvcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBAdW5p
dHRlc3Quc2tpcCBkZWNvcmF0b3IgY2FsbHMgZnVuY3Rvb2xzLndyYXBzKHNlbGYuX3Rlc3RjYXNl
KQotICAgICAgICBUaGUgY2FsbCB0byBmdW5jdG9vbHMud3JhcHMoKSBmYWlscyB1bmxlc3Mgc2Vs
Zi5fdGVzdGNhc2UKLSAgICAgICAgaGFzIGEgX19uYW1lX18gYXR0cmlidXRlLiBUaGlzIGlzIHVz
dWFsbHkgYXV0b21hdGljYWxseSBzdXBwbGllZAotICAgICAgICBpZiB0aGUgdGVzdCBpcyBhIGZ1
bmN0aW9uIG9yIG1ldGhvZCwgYnV0IHdlIG5lZWQgdG8gYWRkIG1hbnVhbGx5Ci0gICAgICAgIGhl
cmUuCi0KLSAgICAgICAgU2VlIGlzc3VlICMxMTY5Ci0gICAgICAgICIiIgotICAgICAgICBpZiBz
eXMudmVyc2lvbl9pbmZvWzBdID09IDI6Ci0gICAgICAgICAgICBzZXRhdHRyKHNlbGYuX3Rlc3Rj
YXNlLCAiX19uYW1lX18iLCBzZWxmLm5hbWUpCi0KLSAgICBkZWYgdGVhcmRvd24oc2VsZik6Ci0g
ICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fdGVzdGNhc2UsICJ0ZWFyZG93bl9tZXRob2QiKToKLSAg
ICAgICAgICAgIHNlbGYuX3Rlc3RjYXNlLnRlYXJkb3duX21ldGhvZChzZWxmLl9vYmopCi0gICAg
ICAgICMgQWxsb3cgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIFRlc3RDYXNlIGluc3RhbmNlIGF0dHJp
YnV0ZXMuCisgICAgZGVmIHRlYXJkb3duKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYu
X2V4cGxpY2l0X3RlYXJEb3duIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZXhwbGlj
aXRfdGVhckRvd24oKQorICAgICAgICAgICAgc2VsZi5fZXhwbGljaXRfdGVhckRvd24gPSBOb25l
CiAgICAgICAgIHNlbGYuX3Rlc3RjYXNlID0gTm9uZQogICAgICAgICBzZWxmLl9vYmogPSBOb25l
CiAKLSAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3RjYXNlKToKKyAgICBkZWYgc3RhcnRUZXN0
KHNlbGYsIHRlc3RjYXNlOiAidW5pdHRlc3QuVGVzdENhc2UiKSAtPiBOb25lOgogICAgICAgICBw
YXNzCiAKLSAgICBkZWYgX2FkZGV4Y2luZm8oc2VsZiwgcmF3ZXhjaW5mbyk6Ci0gICAgICAgICMg
dW53cmFwIHBvdGVudGlhbCBleGNlcHRpb24gaW5mbyAoc2VlIHR3aXN0ZWQgdHJpYWwgc3VwcG9y
dCBiZWxvdykKKyAgICBkZWYgX2FkZGV4Y2luZm8oc2VsZiwgcmF3ZXhjaW5mbzogIl9TeXNFeGNJ
bmZvVHlwZSIpIC0+IE5vbmU6CisgICAgICAgICMgVW53cmFwIHBvdGVudGlhbCBleGNlcHRpb24g
aW5mbyAoc2VlIHR3aXN0ZWQgdHJpYWwgc3VwcG9ydCBiZWxvdykuCiAgICAgICAgIHJhd2V4Y2lu
Zm8gPSBnZXRhdHRyKHJhd2V4Y2luZm8sICJfcmF3ZXhjaW5mbyIsIHJhd2V4Y2luZm8pCiAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbklu
Zm8ocmF3ZXhjaW5mbykKKyAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2Vw
dGlvbkluZm8ocmF3ZXhjaW5mbykgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgICAgICAg
ICAgIyBJbnZva2UgdGhlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciBzdG9yaW5nIHRoZSB0cmFjZWJh
Y2sKKyAgICAgICAgICAgICMgdHJpYWwgY2F1c2VzIHNvbWUgaXNzdWUgdGhlcmUuCisgICAgICAg
ICAgICBleGNpbmZvLnZhbHVlCisgICAgICAgICAgICBleGNpbmZvLnRyYWNlYmFjawogICAgICAg
ICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRy
eToKQEAgLTExOSw3ICsxODQsNyBAQCBjbGFzcyBUZXN0Q2FzZUZ1bmN0aW9uKEZ1bmN0aW9uKToK
ICAgICAgICAgICAgICAgICAgICAgZmFpbCgiIi5qb2luKHZhbHVlcyksIHB5dHJhY2U9RmFsc2Up
CiAgICAgICAgICAgICAgICAgZXhjZXB0IChmYWlsLkV4Y2VwdGlvbiwgS2V5Ym9hcmRJbnRlcnJ1
cHQpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGV4Y2VwdDog
ICMgbm9xYQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAg
ICAgICAgICAgICBmYWlsKAogICAgICAgICAgICAgICAgICAgICAgICAgIkVSUk9SOiBVbmtub3du
IEluY29tcGF0aWJsZSBFeGNlcHRpb24gIgogICAgICAgICAgICAgICAgICAgICAgICAgInJlcHJl
c2VudGF0aW9uOlxuJXIiICUgKHJhd2V4Y2luZm8sKSwKQEAgLTEyOCw2OSArMTkzLDk1IEBAIGNs
YXNzIFRlc3RDYXNlRnVuY3Rpb24oRnVuY3Rpb24pOgogICAgICAgICAgICAgZXhjZXB0IEtleWJv
YXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQg
ZmFpbC5FeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUu
RXhjZXB0aW9uSW5mbygpCisgICAgICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUu
RXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAgICAgICBzZWxmLl9fZGljdF9fLnNldGRl
ZmF1bHQoIl9leGNpbmZvIiwgW10pLmFwcGVuZChleGNpbmZvKQogCi0gICAgZGVmIGFkZEVycm9y
KHNlbGYsIHRlc3RjYXNlLCByYXdleGNpbmZvKToKKyAgICBkZWYgYWRkRXJyb3IoCisgICAgICAg
IHNlbGYsIHRlc3RjYXNlOiAidW5pdHRlc3QuVGVzdENhc2UiLCByYXdleGNpbmZvOiAiX1N5c0V4
Y0luZm9UeXBlIgorICAgICkgLT4gTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShyYXdleGNpbmZvWzFdLCBleGl0LkV4Y2VwdGlvbik6CisgICAgICAgICAgICAg
ICAgZXhpdChyYXdleGNpbmZvWzFdLm1zZykKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAg
ICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5fYWRkZXhjaW5mbyhyYXdleGNpbmZvKQogCi0g
ICAgZGVmIGFkZEZhaWx1cmUoc2VsZiwgdGVzdGNhc2UsIHJhd2V4Y2luZm8pOgorICAgIGRlZiBh
ZGRGYWlsdXJlKAorICAgICAgICBzZWxmLCB0ZXN0Y2FzZTogInVuaXR0ZXN0LlRlc3RDYXNlIiwg
cmF3ZXhjaW5mbzogIl9TeXNFeGNJbmZvVHlwZSIKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIHNl
bGYuX2FkZGV4Y2luZm8ocmF3ZXhjaW5mbykKIAotICAgIGRlZiBhZGRTa2lwKHNlbGYsIHRlc3Rj
YXNlLCByZWFzb24pOgorICAgIGRlZiBhZGRTa2lwKHNlbGYsIHRlc3RjYXNlOiAidW5pdHRlc3Qu
VGVzdENhc2UiLCByZWFzb246IHN0cikgLT4gTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgc2tpcChyZWFzb24pCiAgICAgICAgIGV4Y2VwdCBza2lwLkV4Y2VwdGlvbjoKLSAgICAgICAg
ICAgIHNlbGYuX3NraXBwZWRfYnlfbWFyayA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX3N0b3Jl
W3NraXBwZWRfYnlfbWFya19rZXldID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fYWRkZXhjaW5m
byhzeXMuZXhjX2luZm8oKSkKIAotICAgIGRlZiBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgdGVz
dGNhc2UsIHJhd2V4Y2luZm8sIHJlYXNvbj0iIik6CisgICAgZGVmIGFkZEV4cGVjdGVkRmFpbHVy
ZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgdGVzdGNhc2U6ICJ1bml0dGVzdC5UZXN0Q2FzZSIs
CisgICAgICAgIHJhd2V4Y2luZm86ICJfU3lzRXhjSW5mb1R5cGUiLAorICAgICAgICByZWFzb246
IHN0ciA9ICIiLAorICAgICkgLT4gTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgeGZh
aWwoc3RyKHJlYXNvbikpCiAgICAgICAgIGV4Y2VwdCB4ZmFpbC5FeGNlcHRpb246CiAgICAgICAg
ICAgICBzZWxmLl9hZGRleGNpbmZvKHN5cy5leGNfaW5mbygpKQogCi0gICAgZGVmIGFkZFVuZXhw
ZWN0ZWRTdWNjZXNzKHNlbGYsIHRlc3RjYXNlLCByZWFzb249IiIpOgotICAgICAgICBzZWxmLl91
bmV4cGVjdGVkc3VjY2VzcyA9IHJlYXNvbgorICAgIGRlZiBhZGRVbmV4cGVjdGVkU3VjY2VzcygK
KyAgICAgICAgc2VsZiwgdGVzdGNhc2U6ICJ1bml0dGVzdC5UZXN0Q2FzZSIsIHJlYXNvbjogc3Ry
ID0gIiIKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3N0b3JlW3VuZXhwZWN0ZWRzdWNj
ZXNzX2tleV0gPSByZWFzb24KIAotICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3RjYXNlKToK
KyAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCB0ZXN0Y2FzZTogInVuaXR0ZXN0LlRlc3RDYXNlIikg
LT4gTm9uZToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIHN0b3BUZXN0KHNlbGYsIHRlc3RjYXNl
KToKKyAgICBkZWYgc3RvcFRlc3Qoc2VsZiwgdGVzdGNhc2U6ICJ1bml0dGVzdC5UZXN0Q2FzZSIp
IC0+IE5vbmU6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBfaGFuZGxlX3NraXAoc2VsZik6Ci0g
ICAgICAgICMgaW1wbGVtZW50cyB0aGUgc2tpcHBpbmcgbWFjaGluZXJ5IChzZWUgIzIxMzcpCi0g
ICAgICAgICMgYW5hbG9nIHRvIHB5dGhvbnMgTGliL3VuaXR0ZXN0L2Nhc2UucHk6cnVuCi0gICAg
ICAgIHRlc3RNZXRob2QgPSBnZXRhdHRyKHNlbGYuX3Rlc3RjYXNlLCBzZWxmLl90ZXN0Y2FzZS5f
dGVzdE1ldGhvZE5hbWUpCi0gICAgICAgIGlmICgKLSAgICAgICAgICAgIGdldGF0dHIoc2VsZi5f
dGVzdGNhc2UuX19jbGFzc19fLCAiX191bml0dGVzdF9za2lwX18iLCBGYWxzZSkKLSAgICAgICAg
ICAgIG9yIGdldGF0dHIodGVzdE1ldGhvZCwgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2UpCi0g
ICAgICAgICk6Ci0gICAgICAgICAgICAjIElmIHRoZSBjbGFzcyBvciBtZXRob2Qgd2FzIHNraXBw
ZWQuCi0gICAgICAgICAgICBza2lwX3doeSA9ICgKLSAgICAgICAgICAgICAgICBnZXRhdHRyKHNl
bGYuX3Rlc3RjYXNlLl9fY2xhc3NfXywgIl9fdW5pdHRlc3Rfc2tpcF93aHlfXyIsICIiKQotICAg
ICAgICAgICAgICAgIG9yIGdldGF0dHIodGVzdE1ldGhvZCwgIl9fdW5pdHRlc3Rfc2tpcF93aHlf
XyIsICIiKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgdHJ5OiAgIyBQWTMsIHVuaXR0ZXN0
MiBvbiBQWTIKLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS5fYWRkU2tpcChzZWxmLCBz
ZWxmLl90ZXN0Y2FzZSwgc2tpcF93aHkpCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOiAg
IyBQWTIKLSAgICAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdICE9IDI6Ci0gICAg
ICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2UuX2Fk
ZFNraXAoc2VsZiwgc2tpcF93aHkpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICBkZWYgX2V4cGVjdGluZ19mYWlsdXJlKHNlbGYsIHRlc3RfbWV0aG9k
KSAtPiBib29sOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZ2l2ZW4gdW5pdHRlc3Qg
bWV0aG9kIChvciB0aGUgZW50aXJlIGNsYXNzKSBpcyBtYXJrZWQKKyAgICAgICAgd2l0aCBAZXhw
ZWN0ZWRGYWlsdXJlLiIiIgorICAgICAgICBleHBlY3RpbmdfZmFpbHVyZV9tZXRob2QgPSBnZXRh
dHRyKAorICAgICAgICAgICAgdGVzdF9tZXRob2QsICJfX3VuaXR0ZXN0X2V4cGVjdGluZ19mYWls
dXJlX18iLCBGYWxzZQorICAgICAgICApCisgICAgICAgIGV4cGVjdGluZ19mYWlsdXJlX2NsYXNz
ID0gZ2V0YXR0cihzZWxmLCAiX191bml0dGVzdF9leHBlY3RpbmdfZmFpbHVyZV9fIiwgRmFsc2Up
CisgICAgICAgIHJldHVybiBib29sKGV4cGVjdGluZ19mYWlsdXJlX2NsYXNzIG9yIGV4cGVjdGlu
Z19mYWlsdXJlX21ldGhvZCkKIAotICAgIGRlZiBydW50ZXN0KHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInBkYmludm9rZSIpIGlzIE5vbmU6
Ci0gICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZShyZXN1bHQ9c2VsZikKKyAgICBkZWYgcnVudGVz
dChzZWxmKSAtPiBOb25lOgorICAgICAgICBmcm9tIF9weXRlc3QuZGVidWdnaW5nIGltcG9ydCBt
YXliZV93cmFwX3B5dGVzdF9mdW5jdGlvbl9mb3JfdHJhY2luZworCisgICAgICAgIGFzc2VydCBz
ZWxmLl90ZXN0Y2FzZSBpcyBub3QgTm9uZQorCisgICAgICAgIG1heWJlX3dyYXBfcHl0ZXN0X2Z1
bmN0aW9uX2Zvcl90cmFjaW5nKHNlbGYpCisKKyAgICAgICAgIyBMZXQgdGhlIHVuaXR0ZXN0IGZy
YW1ld29yayBoYW5kbGUgYXN5bmMgZnVuY3Rpb25zLgorICAgICAgICBpZiBpc19hc3luY19mdW5j
dGlvbihzZWxmLm9iaik6CisgICAgICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIHNlbGYg
YWN0cyBhcyB0aGUgVGVzdFJlc3VsdCwgYnV0IGlzIG5vdCBhY3R1YWxseSBvbmUuCisgICAgICAg
ICAgICBzZWxmLl90ZXN0Y2FzZShyZXN1bHQ9c2VsZikgICMgdHlwZTogaWdub3JlW2FyZy10eXBl
XQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBkaXNhYmxlcyB0ZWFyRG93biBhbmQgY2xl
YW51cHMgZm9yIHBvc3QgbW9ydGVtIGRlYnVnZ2luZyAoc2VlICMxODkwKQotICAgICAgICAgICAg
aWYgc2VsZi5faGFuZGxlX3NraXAoKToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgIHNlbGYuX3Rlc3RjYXNlLmRlYnVnKCkKKyAgICAgICAgICAgICMgV2hlbiAtLXBkYiBpcyBn
aXZlbiwgd2Ugd2FudCB0byBwb3N0cG9uZSBjYWxsaW5nIHRlYXJEb3duKCkgb3RoZXJ3aXNlCisg
ICAgICAgICAgICAjIHdoZW4gZW50ZXJpbmcgdGhlIHBkYiBwcm9tcHQsIHRlYXJEb3duKCkgd291
bGQgaGF2ZSBwcm9iYWJseSBjbGVhbmVkIHVwCisgICAgICAgICAgICAjIGluc3RhbmNlIHZhcmlh
Ymxlcywgd2hpY2ggbWFrZXMgaXQgZGlmZmljdWx0IHRvIGRlYnVnLgorICAgICAgICAgICAgIyBB
cmd1YWJseSB3ZSBjb3VsZCBhbHdheXMgcG9zdHBvbmUgdGVhckRvd24oKSwgYnV0IHRoaXMgY2hh
bmdlcyB0aGUgbW9tZW50IHdoZXJlIHRoZQorICAgICAgICAgICAgIyBUZXN0Q2FzZSBpbnN0YW5j
ZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdWx0cyBvYmplY3QsIHNvIGJldHRlciB0byBvbmx5IGRv
IGl0CisgICAgICAgICAgICAjIHdoZW4gYWJzb2x1dGVseSBuZWVkZWQuCisgICAgICAgICAgICBp
ZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oInVzZXBkYiIpIGFuZCBub3QgX2lzX3NraXBwZWQoc2Vs
Zi5vYmopOgorICAgICAgICAgICAgICAgIHNlbGYuX2V4cGxpY2l0X3RlYXJEb3duID0gc2VsZi5f
dGVzdGNhc2UudGVhckRvd24KKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuX3Rlc3RjYXNl
LCAidGVhckRvd24iLCBsYW1iZGEgKmFyZ3M6IE5vbmUpCisKKyAgICAgICAgICAgICMgV2UgbmVl
ZCB0byB1cGRhdGUgdGhlIGFjdHVhbCBib3VuZCBtZXRob2Qgd2l0aCBzZWxmLm9iaiwgYmVjYXVz
ZQorICAgICAgICAgICAgIyB3cmFwX3B5dGVzdF9mdW5jdGlvbl9mb3JfdHJhY2luZyByZXBsYWNl
cyBzZWxmLm9iaiBieSBhIHdyYXBwZXIuCisgICAgICAgICAgICBzZXRhdHRyKHNlbGYuX3Rlc3Rj
YXNlLCBzZWxmLm5hbWUsIHNlbGYub2JqKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIHNlbGYuX3Rlc3RjYXNlKHJlc3VsdD1zZWxmKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVd
CisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGRlbGF0dHIoc2VsZi5fdGVz
dGNhc2UsIHNlbGYubmFtZSkKIAotICAgIGRlZiBfcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5m
byk6CisgICAgZGVmIF9wcnVuZXRyYWNlYmFjaygKKyAgICAgICAgc2VsZiwgZXhjaW5mbzogX3B5
dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dCisgICAgKSAtPiBOb25lOgog
ICAgICAgICBGdW5jdGlvbi5fcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbykKICAgICAgICAg
dHJhY2ViYWNrID0gZXhjaW5mby50cmFjZWJhY2suZmlsdGVyKAogICAgICAgICAgICAgbGFtYmRh
IHg6IG5vdCB4LmZyYW1lLmZfZ2xvYmFscy5nZXQoIl9fdW5pdHRlc3QiKQpAQCAtMjAwLDcgKzI5
MSw3IEBAIGNsYXNzIFRlc3RDYXNlRnVuY3Rpb24oRnVuY3Rpb24pOgogCiAKIEBob29raW1wbCh0
cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6
CitkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtOiBJdGVtLCBjYWxsOiBDYWxsSW5m
b1tOb25lXSkgLT4gTm9uZToKICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFRlc3RDYXNlRnVuY3Rp
b24pOgogICAgICAgICBpZiBpdGVtLl9leGNpbmZvOgogICAgICAgICAgICAgY2FsbC5leGNpbmZv
ID0gaXRlbS5fZXhjaW5mby5wb3AoMCkKQEAgLTIwOSwxNCArMzAwLDI3IEBAIGRlZiBweXRlc3Rf
cnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgogICAgICAgICAgICAgZXhjZXB0IEF0dHJp
YnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIHVuaXR0ZXN0ID0gc3lzLm1v
ZHVsZXMuZ2V0KCJ1bml0dGVzdCIpCisgICAgaWYgKAorICAgICAgICB1bml0dGVzdAorICAgICAg
ICBhbmQgY2FsbC5leGNpbmZvCisgICAgICAgIGFuZCBpc2luc3RhbmNlKGNhbGwuZXhjaW5mby52
YWx1ZSwgdW5pdHRlc3QuU2tpcFRlc3QpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisg
ICAgKToKKyAgICAgICAgZXhjaW5mbyA9IGNhbGwuZXhjaW5mbworICAgICAgICAjIExldCdzIHN1
YnN0aXR1dGUgdGhlIGV4Y2luZm8gd2l0aCBhIHB5dGVzdC5za2lwIG9uZS4KKyAgICAgICAgY2Fs
bDIgPSBDYWxsSW5mb1tOb25lXS5mcm9tX2NhbGwoCisgICAgICAgICAgICBsYW1iZGE6IHB5dGVz
dC5za2lwKHN0cihleGNpbmZvLnZhbHVlKSksIGNhbGwud2hlbgorICAgICAgICApCisgICAgICAg
IGNhbGwuZXhjaW5mbyA9IGNhbGwyLmV4Y2luZm8KKwogCi0jIHR3aXN0ZWQgdHJpYWwgc3VwcG9y
dAorIyBUd2lzdGVkIHRyaWFsIHN1cHBvcnQuCiAKIAogQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRy
dWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSk6CitkZWYgcHl0ZXN0X3J1bnRl
c3RfcHJvdG9jb2woaXRlbTogSXRlbSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgog
ICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgVGVzdENhc2VGdW5jdGlvbikgYW5kICJ0d2lzdGVkLnRy
aWFsLnVuaXR0ZXN0IiBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgdXQgPSBzeXMubW9kdWxlc1si
dHdpc3RlZC5weXRob24uZmFpbHVyZSJdCisgICAgICAgIHV0ID0gc3lzLm1vZHVsZXNbInR3aXN0
ZWQucHl0aG9uLmZhaWx1cmUiXSAgIyB0eXBlOiBBbnkKICAgICAgICAgRmFpbHVyZV9faW5pdF9f
ID0gdXQuRmFpbHVyZS5fX2luaXRfXwogICAgICAgICBjaGVja190ZXN0Y2FzZV9pbXBsZW1lbnRz
X3RyaWFsX3JlcG9ydGVyKCkKIApAQCAtMjQzLDcgKzM0Nyw3IEBAIGRlZiBweXRlc3RfcnVudGVz
dF9wcm90b2NvbChpdGVtKToKICAgICAgICAgeWllbGQKIAogCi1kZWYgY2hlY2tfdGVzdGNhc2Vf
aW1wbGVtZW50c190cmlhbF9yZXBvcnRlcihkb25lPVtdKToKK2RlZiBjaGVja190ZXN0Y2FzZV9p
bXBsZW1lbnRzX3RyaWFsX3JlcG9ydGVyKGRvbmU6IExpc3RbaW50XSA9IFtdKSAtPiBOb25lOgog
ICAgIGlmIGRvbmU6CiAgICAgICAgIHJldHVybgogICAgIGZyb20gem9wZS5pbnRlcmZhY2UgaW1w
b3J0IGNsYXNzSW1wbGVtZW50cwpAQCAtMjUxLDMgKzM1NSw4IEBAIGRlZiBjaGVja190ZXN0Y2Fz
ZV9pbXBsZW1lbnRzX3RyaWFsX3JlcG9ydGVyKGRvbmU9W10pOgogCiAgICAgY2xhc3NJbXBsZW1l
bnRzKFRlc3RDYXNlRnVuY3Rpb24sIElSZXBvcnRlcikKICAgICBkb25lLmFwcGVuZCgxKQorCisK
K2RlZiBfaXNfc2tpcHBlZChvYmopIC0+IGJvb2w6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhl
IGdpdmVuIG9iamVjdCBoYXMgYmVlbiBtYXJrZWQgd2l0aCBAdW5pdHRlc3Quc2tpcC4iIiIKKyAg
ICByZXR1cm4gYm9vbChnZXRhdHRyKG9iaiwgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2UpKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWIzMmI5NTNhOGMzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fX2luaXRfXy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L19hcmdjb21wbGV0ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Nh
Y2hlcHJvdmlkZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jYXB0dXJlLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
ZGVidWdnaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZGVwcmVjYXRlZC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2RvY3Rlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9maXh0dXJlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZyZWV6ZV9zdXBwb3J0LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvaGVscGNvbmZpZy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L2hvb2tzcGVjLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvanVuaXR4bWwu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9sb2dnaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvbWFpbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21vbmtleXBhdGNoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvbm9kZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9ub3NlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvb3V0Y29tZXMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9wYXN0ZWJpbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L3B5dGVzdGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHl0aG9uLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvcHl0aG9uX2FwaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L3JlY3dhcm4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZXN1bHRsb2cucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9ydW5uZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9z
ZXR1cG9ubHkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9zZXR1cHBsYW4ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9za2lwcGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L3Rlcm1pbmFsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdG1wZGlyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvdW5pdHRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93
YXJuaW5ncy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvd2FybmluZ190
eXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3dhcm5pbmdfdHlwZXMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MmU0ZDJiMTRjYjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93YXJuaW5nX3R5cGVzLnB5CkBAIC0w
LDAgKzEsMTE2IEBACitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQg
R2VuZXJpYworZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKKworaW1wb3J0IGF0dHIKKworZnJv
bSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IFRZUEVfQ0hFQ0tJTkcKKworaWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBv
cnQgVHlwZSAgIyBub3FhOiBGNDAxICh1c2VkIGluIHR5cGUgc3RyaW5nKQorCisKK2NsYXNzIFB5
dGVzdFdhcm5pbmcoVXNlcldhcm5pbmcpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGFsbCB3YXJu
aW5ncyBlbWl0dGVkIGJ5IHB5dGVzdC4iIiIKKworICAgIF9fbW9kdWxlX18gPSAicHl0ZXN0Igor
CisKK0BmaW5hbAorY2xhc3MgUHl0ZXN0QXNzZXJ0UmV3cml0ZVdhcm5pbmcoUHl0ZXN0V2Fybmlu
Zyk6CisgICAgIiIiV2FybmluZyBlbWl0dGVkIGJ5IHRoZSBweXRlc3QgYXNzZXJ0IHJld3JpdGUg
bW9kdWxlLiIiIgorCisgICAgX19tb2R1bGVfXyA9ICJweXRlc3QiCisKKworQGZpbmFsCitjbGFz
cyBQeXRlc3RDYWNoZVdhcm5pbmcoUHl0ZXN0V2FybmluZyk6CisgICAgIiIiV2FybmluZyBlbWl0
dGVkIGJ5IHRoZSBjYWNoZSBwbHVnaW4gaW4gdmFyaW91cyBzaXR1YXRpb25zLiIiIgorCisgICAg
X19tb2R1bGVfXyA9ICJweXRlc3QiCisKKworQGZpbmFsCitjbGFzcyBQeXRlc3RDb25maWdXYXJu
aW5nKFB5dGVzdFdhcm5pbmcpOgorICAgICIiIldhcm5pbmcgZW1pdHRlZCBmb3IgY29uZmlndXJh
dGlvbiBpc3N1ZXMuIiIiCisKKyAgICBfX21vZHVsZV9fID0gInB5dGVzdCIKKworCitAZmluYWwK
K2NsYXNzIFB5dGVzdENvbGxlY3Rpb25XYXJuaW5nKFB5dGVzdFdhcm5pbmcpOgorICAgICIiIldh
cm5pbmcgZW1pdHRlZCB3aGVuIHB5dGVzdCBpcyBub3QgYWJsZSB0byBjb2xsZWN0IGEgZmlsZSBv
ciBzeW1ib2wgaW4gYSBtb2R1bGUuIiIiCisKKyAgICBfX21vZHVsZV9fID0gInB5dGVzdCIKKwor
CitAZmluYWwKK2NsYXNzIFB5dGVzdERlcHJlY2F0aW9uV2FybmluZyhQeXRlc3RXYXJuaW5nLCBE
ZXByZWNhdGlvbldhcm5pbmcpOgorICAgICIiIldhcm5pbmcgY2xhc3MgZm9yIGZlYXR1cmVzIHRo
YXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIiIiCisKKyAgICBfX21vZHVs
ZV9fID0gInB5dGVzdCIKKworCitAZmluYWwKK2NsYXNzIFB5dGVzdEV4cGVyaW1lbnRhbEFwaVdh
cm5pbmcoUHl0ZXN0V2FybmluZywgRnV0dXJlV2FybmluZyk6CisgICAgIiIiV2FybmluZyBjYXRl
Z29yeSB1c2VkIHRvIGRlbm90ZSBleHBlcmltZW50cyBpbiBweXRlc3QuCisKKyAgICBVc2Ugc3Bh
cmluZ2x5IGFzIHRoZSBBUEkgbWlnaHQgY2hhbmdlIG9yIGV2ZW4gYmUgcmVtb3ZlZCBjb21wbGV0
ZWx5IGluIGEKKyAgICBmdXR1cmUgdmVyc2lvbi4KKyAgICAiIiIKKworICAgIF9fbW9kdWxlX18g
PSAicHl0ZXN0IgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNpbXBsZShjbHMsIGFwaW5h
bWU6IHN0cikgLT4gIlB5dGVzdEV4cGVyaW1lbnRhbEFwaVdhcm5pbmciOgorICAgICAgICByZXR1
cm4gY2xzKAorICAgICAgICAgICAgInthcGluYW1lfSBpcyBhbiBleHBlcmltZW50YWwgYXBpIHRo
YXQgbWF5IGNoYW5nZSBvdmVyIHRpbWUiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBhcGluYW1l
PWFwaW5hbWUKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisKK0BmaW5hbAorY2xhc3MgUHl0
ZXN0VW5oYW5kbGVkQ29yb3V0aW5lV2FybmluZyhQeXRlc3RXYXJuaW5nKToKKyAgICAiIiJXYXJu
aW5nIGVtaXR0ZWQgZm9yIGFuIHVuaGFuZGxlZCBjb3JvdXRpbmUuCisKKyAgICBBIGNvcm91dGlu
ZSB3YXMgZW5jb3VudGVyZWQgd2hlbiBjb2xsZWN0aW5nIHRlc3QgZnVuY3Rpb25zLCBidXQgd2Fz
IG5vdAorICAgIGhhbmRsZWQgYnkgYW55IGFzeW5jLWF3YXJlIHBsdWdpbi4KKyAgICBDb3JvdXRp
bmUgdGVzdCBmdW5jdGlvbnMgYXJlIG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQuCisgICAgIiIiCisK
KyAgICBfX21vZHVsZV9fID0gInB5dGVzdCIKKworCitAZmluYWwKK2NsYXNzIFB5dGVzdFVua25v
d25NYXJrV2FybmluZyhQeXRlc3RXYXJuaW5nKToKKyAgICAiIiJXYXJuaW5nIGVtaXR0ZWQgb24g
dXNlIG9mIHVua25vd24gbWFya2Vycy4KKworICAgIFNlZSA6cmVmOmBtYXJrYCBmb3IgZGV0YWls
cy4KKyAgICAiIiIKKworICAgIF9fbW9kdWxlX18gPSAicHl0ZXN0IgorCisKK19XID0gVHlwZVZh
cigiX1ciLCBib3VuZD1QeXRlc3RXYXJuaW5nKQorCisKK0BmaW5hbAorQGF0dHIucworY2xhc3Mg
VW5mb3JtYXR0ZWRXYXJuaW5nKEdlbmVyaWNbX1ddKToKKyAgICAiIiJBIHdhcm5pbmcgbWVhbnQg
dG8gYmUgZm9ybWF0dGVkIGR1cmluZyBydW50aW1lLgorCisgICAgVGhpcyBpcyB1c2VkIHRvIGhv
bGQgd2FybmluZ3MgdGhhdCBuZWVkIHRvIGZvcm1hdCB0aGVpciBtZXNzYWdlIGF0IHJ1bnRpbWUs
CisgICAgYXMgb3Bwb3NlZCB0byBhIGRpcmVjdCBtZXNzYWdlLgorICAgICIiIgorCisgICAgY2F0
ZWdvcnkgPSBhdHRyLmliKHR5cGU9IlR5cGVbX1ddIikKKyAgICB0ZW1wbGF0ZSA9IGF0dHIuaWIo
dHlwZT1zdHIpCisKKyAgICBkZWYgZm9ybWF0KHNlbGYsICoqa3dhcmdzOiBBbnkpIC0+IF9XOgor
ICAgICAgICAiIiJSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIHdhcm5pbmcgY2F0ZWdvcnksIGZv
cm1hdHRlZCB3aXRoIGdpdmVuIGt3YXJncy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY2F0ZWdv
cnkoc2VsZi50ZW1wbGF0ZS5mb3JtYXQoKiprd2FyZ3MpKQorCisKK1BZVEVTVEVSX0NPUFlfRVhB
TVBMRSA9IFB5dGVzdEV4cGVyaW1lbnRhbEFwaVdhcm5pbmcuc2ltcGxlKCJ0ZXN0ZGlyLmNvcHlf
ZXhhbXBsZSIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93YXJuaW5ncy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3dhcm5pbmdzLnB5CmluZGV4IGUwMjNkMGFiNDkx
Yi4uOTUwZDBiYjM4NTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93YXJu
aW5ncy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93YXJuaW5ncy5weQpAQCAtMSwx
MTIgKzEsMTM5IEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KK2ltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogZnJv
bSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorZnJvbSB0eXBpbmcgaW1wb3J0IEdl
bmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAKIGltcG9ydCBweXRlc3QKLQot
ZnJvbSBfcHl0ZXN0IGltcG9ydCBjb21wYXQKLQotCi1kZWYgX3NldG9wdGlvbih3bW9kLCBhcmcp
OgotICAgICIiIgotICAgIENvcHkgb2YgdGhlIHdhcm5pbmcuX3NldG9wdGlvbiBmdW5jdGlvbiBi
dXQgZG9lcyBub3QgZXNjYXBlIGFyZ3VtZW50cy4KLSAgICAiIiIKLSAgICBwYXJ0cyA9IGFyZy5z
cGxpdCgiOiIpCi0gICAgaWYgbGVuKHBhcnRzKSA+IDU6Ci0gICAgICAgIHJhaXNlIHdtb2QuX09w
dGlvbkVycm9yKCJ0b28gbWFueSBmaWVsZHMgKG1heCA1KTogJXIiICUgKGFyZywpKQotICAgIHdo
aWxlIGxlbihwYXJ0cykgPCA1OgotICAgICAgICBwYXJ0cy5hcHBlbmQoIiIpCi0gICAgYWN0aW9u
LCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8gPSBbcy5zdHJpcCgpIGZvciBzIGlu
IHBhcnRzXQotICAgIGFjdGlvbiA9IHdtb2QuX2dldGFjdGlvbihhY3Rpb24pCi0gICAgY2F0ZWdv
cnkgPSB3bW9kLl9nZXRjYXRlZ29yeShjYXRlZ29yeSkKLSAgICBpZiBsaW5lbm86Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGxpbmVubyA9IGludChsaW5lbm8pCi0gICAgICAgICAgICBpZiBs
aW5lbm8gPCAwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgZXhj
ZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKLSAgICAgICAgICAgIHJhaXNlIHdtb2Qu
X09wdGlvbkVycm9yKCJpbnZhbGlkIGxpbmVubyAlciIgJSAobGluZW5vLCkpCi0gICAgZWxzZToK
LSAgICAgICAgbGluZW5vID0gMAotICAgIHdtb2QuZmlsdGVyd2FybmluZ3MoYWN0aW9uLCBtZXNz
YWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8pCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24o
cGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgicHl0ZXN0LXdhcm5pbmdzIikK
LSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICItVyIsCi0gICAgICAgICItLXB5dGhvbndh
cm5pbmdzIiwKLSAgICAgICAgYWN0aW9uPSJhcHBlbmQiLAotICAgICAgICBoZWxwPSJzZXQgd2hp
Y2ggd2FybmluZ3MgdG8gcmVwb3J0LCBzZWUgLVcgb3B0aW9uIG9mIHB5dGhvbiBpdHNlbGYuIiwK
LSAgICApCi0gICAgcGFyc2VyLmFkZGluaSgKLSAgICAgICAgImZpbHRlcndhcm5pbmdzIiwKLSAg
ICAgICAgdHlwZT0ibGluZWxpc3QiLAotICAgICAgICBoZWxwPSJFYWNoIGxpbmUgc3BlY2lmaWVz
IGEgcGF0dGVybiBmb3IgIgotICAgICAgICAid2FybmluZ3MuZmlsdGVyd2FybmluZ3MuICIKLSAg
ICAgICAgIlByb2Nlc3NlZCBhZnRlciAtVyBhbmQgLS1weXRob253YXJuaW5ncy4iLAorZnJvbSBf
cHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgYXBwbHlfd2FybmluZ19maWx0ZXJzCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBD
b25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IHBhcnNlX3dhcm5pbmdfZmlsdGVyCitm
cm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgorZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9y
dCBJdGVtCitmcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0ZXIKKwor
aWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZ19leHRlbnNpb25zIGltcG9ydCBMaXRl
cmFsCisKKworZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcpIC0+IE5vbmU6Cisg
ICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCisgICAgICAgICJtYXJrZXJzIiwKKyAgICAgICAg
ImZpbHRlcndhcm5pbmdzKHdhcm5pbmcpOiBhZGQgYSB3YXJuaW5nIGZpbHRlciB0byB0aGUgZ2l2
ZW4gdGVzdC4gIgorICAgICAgICAic2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS93YXJuaW5ncy5odG1sI3B5dGVzdC1tYXJrLWZpbHRlcndhcm5pbmdzICIsCiAgICAgKQogCiAK
IEBjb250ZXh0bWFuYWdlcgotZGVmIGNhdGNoX3dhcm5pbmdzX2Zvcl9pdGVtKGl0ZW0pOgotICAg
ICIiIgotICAgIGNhdGNoZXMgdGhlIHdhcm5pbmdzIGdlbmVyYXRlZCBkdXJpbmcgc2V0dXAvY2Fs
bC90ZWFyZG93biBleGVjdXRpb24KLSAgICBvZiB0aGUgZ2l2ZW4gaXRlbSBhbmQgYWZ0ZXIgaXQg
aXMgZG9uZSBwb3N0cyB0aGVtIGFzIHdhcm5pbmdzIHRvIHRoaXMKLSAgICBpdGVtLgorZGVmIGNh
dGNoX3dhcm5pbmdzX2Zvcl9pdGVtKAorICAgIGNvbmZpZzogQ29uZmlnLAorICAgIGlob29rLAor
ICAgIHdoZW46ICJMaXRlcmFsWydjb25maWcnLCAnY29sbGVjdCcsICdydW50ZXN0J10iLAorICAg
IGl0ZW06IE9wdGlvbmFsW0l0ZW1dLAorKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06
CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgY2F0Y2hlcyB3YXJuaW5ncyBnZW5lcmF0ZWQg
aW4gdGhlIGNvbnRhaW5lZCBleGVjdXRpb24gYmxvY2suCisKKyAgICBgYGl0ZW1gYCBjYW4gYmUg
Tm9uZSBpZiB3ZSBhcmUgbm90IGluIHRoZSBjb250ZXh0IG9mIGFuIGl0ZW0gZXhlY3V0aW9uLgor
CisgICAgRWFjaCB3YXJuaW5nIGNhcHR1cmVkIHRyaWdnZXJzIHRoZSBgYHB5dGVzdF93YXJuaW5n
X3JlY29yZGVkYGAgaG9vay4KICAgICAiIiIKLSAgICBhcmdzID0gaXRlbS5jb25maWcuZ2V0b3B0
aW9uKCJweXRob253YXJuaW5ncyIpIG9yIFtdCi0gICAgaW5pZmlsdGVycyA9IGl0ZW0uY29uZmln
LmdldGluaSgiZmlsdGVyd2FybmluZ3MiKQorICAgIGNvbmZpZ19maWx0ZXJzID0gY29uZmlnLmdl
dGluaSgiZmlsdGVyd2FybmluZ3MiKQorICAgIGNtZGxpbmVfZmlsdGVycyA9IGNvbmZpZy5rbm93
bl9hcmdzX25hbWVzcGFjZS5weXRob253YXJuaW5ncyBvciBbXQogICAgIHdpdGggd2FybmluZ3Mu
Y2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIGxvZzoKLSAgICAgICAgZm9yIGFyZyBpbiBh
cmdzOgotICAgICAgICAgICAgd2FybmluZ3MuX3NldG9wdGlvbihhcmcpCisgICAgICAgICMgbXlw
eSBjYW4ndCBpbmZlciB0aGF0IHJlY29yZD1UcnVlIG1lYW5zIGxvZyBpcyBub3QgTm9uZTsgaGVs
cCBpdC4KKyAgICAgICAgYXNzZXJ0IGxvZyBpcyBub3QgTm9uZQogCi0gICAgICAgIGZvciBhcmcg
aW4gaW5pZmlsdGVyczoKLSAgICAgICAgICAgIF9zZXRvcHRpb24od2FybmluZ3MsIGFyZykKKyAg
ICAgICAgaWYgbm90IHN5cy53YXJub3B0aW9uczoKKyAgICAgICAgICAgICMgSWYgdXNlciBpcyBu
b3QgZXhwbGljaXRseSBjb25maWd1cmluZyB3YXJuaW5nIGZpbHRlcnMsIHNob3cgZGVwcmVjYXRp
b24gd2FybmluZ3MgYnkgZGVmYXVsdCAoIzI5MDgpLgorICAgICAgICAgICAgd2FybmluZ3MuZmls
dGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZykKKyAgICAg
ICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1QZW5kaW5n
RGVwcmVjYXRpb25XYXJuaW5nKQogCi0gICAgICAgIGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJr
ZXJzKG5hbWU9ImZpbHRlcndhcm5pbmdzIik6Ci0gICAgICAgICAgICBmb3IgYXJnIGluIG1hcmsu
YXJnczoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5fc2V0b3B0aW9uKGFyZykKKyAgICAgICAg
YXBwbHlfd2FybmluZ19maWx0ZXJzKGNvbmZpZ19maWx0ZXJzLCBjbWRsaW5lX2ZpbHRlcnMpCisK
KyAgICAgICAgIyBhcHBseSBmaWx0ZXJzIGZyb20gImZpbHRlcndhcm5pbmdzIiBtYXJrcworICAg
ICAgICBub2RlaWQgPSAiIiBpZiBpdGVtIGlzIE5vbmUgZWxzZSBpdGVtLm5vZGVpZAorICAgICAg
ICBpZiBpdGVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIG1hcmsgaW4gaXRlbS5pdGVy
X21hcmtlcnMobmFtZT0iZmlsdGVyd2FybmluZ3MiKToKKyAgICAgICAgICAgICAgICBmb3IgYXJn
IGluIG1hcmsuYXJnczoKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2Fybmlu
Z3MoKnBhcnNlX3dhcm5pbmdfZmlsdGVyKGFyZywgZXNjYXBlPUZhbHNlKSkKIAogICAgICAgICB5
aWVsZAogCi0gICAgICAgIGZvciB3YXJuaW5nIGluIGxvZzoKLSAgICAgICAgICAgIHdhcm5fbXNn
ID0gd2FybmluZy5tZXNzYWdlCi0gICAgICAgICAgICB1bmljb2RlX3dhcm5pbmcgPSBGYWxzZQot
Ci0gICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAgICAgY29tcGF0Ll9QWTIKLSAgICAgICAg
ICAgICAgICBhbmQgYW55KGlzaW5zdGFuY2UobSwgY29tcGF0LlVOSUNPREVfVFlQRVMpIGZvciBt
IGluIHdhcm5fbXNnLmFyZ3MpCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIG5ld19h
cmdzID0gW10KLSAgICAgICAgICAgICAgICBmb3IgbSBpbiB3YXJuX21zZy5hcmdzOgotICAgICAg
ICAgICAgICAgICAgICBuZXdfYXJncy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21wYXQuYXNjaWlfZXNjYXBlZChtKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZShtLCBjb21wYXQuVU5JQ09ERV9UWVBFUykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgbQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgdW5pY29kZV93YXJu
aW5nID0gbGlzdCh3YXJuX21zZy5hcmdzKSAhPSBuZXdfYXJncwotICAgICAgICAgICAgICAgIHdh
cm5fbXNnLmFyZ3MgPSBuZXdfYXJncwotCi0gICAgICAgICAgICBtc2cgPSB3YXJuaW5ncy5mb3Jt
YXR3YXJuaW5nKAotICAgICAgICAgICAgICAgIHdhcm5fbXNnLAotICAgICAgICAgICAgICAgIHdh
cm5pbmcuY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgd2FybmluZy5maWxlbmFtZSwKLSAgICAg
ICAgICAgICAgICB3YXJuaW5nLmxpbmVubywKLSAgICAgICAgICAgICAgICB3YXJuaW5nLmxpbmUs
CisgICAgICAgIGZvciB3YXJuaW5nX21lc3NhZ2UgaW4gbG9nOgorICAgICAgICAgICAgaWhvb2su
cHl0ZXN0X3dhcm5pbmdfY2FwdHVyZWQuY2FsbF9oaXN0b3JpYygKKyAgICAgICAgICAgICAgICBr
d2FyZ3M9ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ19tZXNzYWdlPXdhcm5pbmdf
bWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgd2hlbj13aGVuLAorICAgICAgICAgICAgICAg
ICAgICBpdGVtPWl0ZW0sCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCisgICAg
ICAgICAgICAgICAgKQogICAgICAgICAgICAgKQotICAgICAgICAgICAgaXRlbS53YXJuKCJ1bnVz
ZWQiLCBtc2cpCi0KLSAgICAgICAgICAgIGlmIHVuaWNvZGVfd2FybmluZzoKLSAgICAgICAgICAg
ICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICAgICAiV2FybmluZyBpcyB1c2lu
ZyB1bmljb2RlIG5vbiBjb252ZXJ0aWJsZSB0byBhc2NpaSwgIgotICAgICAgICAgICAgICAgICAg
ICAiY29udmVydGluZyB0byBhIHNhZmUgcmVwcmVzZW50YXRpb246XG4gICVzIiAlIG1zZywKLSAg
ICAgICAgICAgICAgICAgICAgVW5pY29kZVdhcm5pbmcsCisgICAgICAgICAgICBpaG9vay5weXRl
c3Rfd2FybmluZ19yZWNvcmRlZC5jYWxsX2hpc3RvcmljKAorICAgICAgICAgICAgICAgIGt3YXJn
cz1kaWN0KAorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nX21lc3NhZ2U9d2FybmluZ19tZXNz
YWdlLAorICAgICAgICAgICAgICAgICAgICBub2RlaWQ9bm9kZWlkLAorICAgICAgICAgICAgICAg
ICAgICB3aGVuPXdoZW4sCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCiAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisKK2RlZiB3YXJuaW5nX3JlY29yZF90b19z
dHIod2FybmluZ19tZXNzYWdlOiB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSkgLT4gc3RyOgorICAg
ICIiIkNvbnZlcnQgYSB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSB0byBhIHN0cmluZy4iIiIKKyAg
ICB3YXJuX21zZyA9IHdhcm5pbmdfbWVzc2FnZS5tZXNzYWdlCisgICAgbXNnID0gd2FybmluZ3Mu
Zm9ybWF0d2FybmluZygKKyAgICAgICAgc3RyKHdhcm5fbXNnKSwKKyAgICAgICAgd2FybmluZ19t
ZXNzYWdlLmNhdGVnb3J5LAorICAgICAgICB3YXJuaW5nX21lc3NhZ2UuZmlsZW5hbWUsCisgICAg
ICAgIHdhcm5pbmdfbWVzc2FnZS5saW5lbm8sCisgICAgICAgIHdhcm5pbmdfbWVzc2FnZS5saW5l
LAorICAgICkKKyAgICByZXR1cm4gbXNnCisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBl
cj1UcnVlLCB0cnlmaXJzdD1UcnVlKQorZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW06
IEl0ZW0pIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICB3aXRoIGNhdGNoX3dh
cm5pbmdzX2Zvcl9pdGVtKAorICAgICAgICBjb25maWc9aXRlbS5jb25maWcsIGlob29rPWl0ZW0u
aWhvb2ssIHdoZW49InJ1bnRlc3QiLCBpdGVtPWl0ZW0KKyAgICApOgorICAgICAgICB5aWVsZAor
CisKK0BweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5Zmlyc3Q9VHJ1ZSkKK2Rl
ZiBweXRlc3RfY29sbGVjdGlvbihzZXNzaW9uOiBTZXNzaW9uKSAtPiBHZW5lcmF0b3JbTm9uZSwg
Tm9uZSwgTm9uZV06CisgICAgY29uZmlnID0gc2Vzc2lvbi5jb25maWcKKyAgICB3aXRoIGNhdGNo
X3dhcm5pbmdzX2Zvcl9pdGVtKAorICAgICAgICBjb25maWc9Y29uZmlnLCBpaG9vaz1jb25maWcu
aG9vaywgd2hlbj0iY29sbGVjdCIsIGl0ZW09Tm9uZQorICAgICk6CisgICAgICAgIHlpZWxkCisK
KworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF90ZXJtaW5h
bF9zdW1tYXJ5KAorICAgIHRlcm1pbmFscmVwb3J0ZXI6IFRlcm1pbmFsUmVwb3J0ZXIsCispIC0+
IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICBjb25maWcgPSB0ZXJtaW5hbHJlcG9y
dGVyLmNvbmZpZworICAgIHdpdGggY2F0Y2hfd2FybmluZ3NfZm9yX2l0ZW0oCisgICAgICAgIGNv
bmZpZz1jb25maWcsIGlob29rPWNvbmZpZy5ob29rLCB3aGVuPSJjb25maWciLCBpdGVtPU5vbmUK
KyAgICApOgorICAgICAgICB5aWVsZAorCisKK0BweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9
VHJ1ZSkKK2RlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uOiBTZXNzaW9uKSAtPiBHZW5l
cmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgY29uZmlnID0gc2Vzc2lvbi5jb25maWcKKyAg
ICB3aXRoIGNhdGNoX3dhcm5pbmdzX2Zvcl9pdGVtKAorICAgICAgICBjb25maWc9Y29uZmlnLCBp
aG9vaz1jb25maWcuaG9vaywgd2hlbj0iY29uZmlnIiwgaXRlbT1Ob25lCisgICAgKToKKyAgICAg
ICAgeWllbGQKIAogCiBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0
ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSk6Ci0gICAgd2l0aCBjYXRjaF93YXJuaW5nc19mb3Jf
aXRlbShpdGVtKToKK2RlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cygKKyAgICBlYXJs
eV9jb25maWc6ICJDb25maWciLAorKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06Cisg
ICAgd2l0aCBjYXRjaF93YXJuaW5nc19mb3JfaXRlbSgKKyAgICAgICAgY29uZmlnPWVhcmx5X2Nv
bmZpZywgaWhvb2s9ZWFybHlfY29uZmlnLmhvb2ssIHdoZW49ImNvbmZpZyIsIGl0ZW09Tm9uZQor
ICAgICk6CiAgICAgICAgIHlpZWxkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvcHl0ZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjI3ZjVhMTk1NWIyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5
dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLSMgUFlUSE9OX0FSR0NPTVBM
RVRFX09LCi0iIiIKLXB5dGVzdDogdW5pdCBhbmQgZnVuY3Rpb25hbCB0ZXN0aW5nIHdpdGggUHl0
aG9uLgotIiIiCi0KLQotIyBlbHNlIHdlIGFyZSBpbXBvcnRlZAotCi1mcm9tIF9weXRlc3QuY29u
ZmlnIGltcG9ydCBtYWluLCBVc2FnZUVycm9yLCBjbWRsaW5lLCBob29rc3BlYywgaG9va2ltcGwK
LWZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgZml4dHVyZSwgeWllbGRfZml4dHVyZQotZnJv
bSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgcmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUKLWZyb20g
X3B5dGVzdC5mcmVlemVfc3VwcG9ydCBpbXBvcnQgZnJlZXplX2luY2x1ZGVzCi1mcm9tIF9weXRl
c3QgaW1wb3J0IF9fdmVyc2lvbl9fCi1mcm9tIF9weXRlc3QuZGVidWdnaW5nIGltcG9ydCBweXRl
c3RQREIgYXMgX19weXRlc3RQREIKLWZyb20gX3B5dGVzdC5yZWN3YXJuIGltcG9ydCB3YXJucywg
ZGVwcmVjYXRlZF9jYWxsCi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwsIHNraXAs
IGltcG9ydG9yc2tpcCwgZXhpdCwgeGZhaWwKLWZyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBNQVJL
X0dFTiBhcyBtYXJrLCBwYXJhbQotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KLWZy
b20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRlbSwgQ29sbGVjdG9yLCBGaWxlCi1mcm9tIF9weXRl
c3QuZml4dHVyZXMgaW1wb3J0IGZpbGxmaXh0dXJlcyBhcyBfZmlsbGZ1bmNhcmdzCi1mcm9tIF9w
eXRlc3QucHl0aG9uIGltcG9ydCBNb2R1bGUsIENsYXNzLCBJbnN0YW5jZSwgRnVuY3Rpb24sIEdl
bmVyYXRvcgotCi1mcm9tIF9weXRlc3QucHl0aG9uX2FwaSBpbXBvcnQgYXBwcm94LCByYWlzZXMK
LQotc2V0X3RyYWNlID0gX19weXRlc3RQREIuc2V0X3RyYWNlCi0KLV9fYWxsX18gPSBbCi0gICAg
Im1haW4iLAotICAgICJVc2FnZUVycm9yIiwKLSAgICAiY21kbGluZSIsCi0gICAgImhvb2tzcGVj
IiwKLSAgICAiaG9va2ltcGwiLAotICAgICJfX3ZlcnNpb25fXyIsCi0gICAgInJlZ2lzdGVyX2Fz
c2VydF9yZXdyaXRlIiwKLSAgICAiZnJlZXplX2luY2x1ZGVzIiwKLSAgICAic2V0X3RyYWNlIiwK
LSAgICAid2FybnMiLAotICAgICJkZXByZWNhdGVkX2NhbGwiLAotICAgICJmaXh0dXJlIiwKLSAg
ICAieWllbGRfZml4dHVyZSIsCi0gICAgImZhaWwiLAotICAgICJza2lwIiwKLSAgICAieGZhaWwi
LAotICAgICJpbXBvcnRvcnNraXAiLAotICAgICJleGl0IiwKLSAgICAibWFyayIsCi0gICAgInBh
cmFtIiwKLSAgICAiYXBwcm94IiwKLSAgICAiX2ZpbGxmdW5jYXJncyIsCi0gICAgIkl0ZW0iLAot
ICAgICJGaWxlIiwKLSAgICAiQ29sbGVjdG9yIiwKLSAgICAiU2Vzc2lvbiIsCi0gICAgIk1vZHVs
ZSIsCi0gICAgIkNsYXNzIiwKLSAgICAiSW5zdGFuY2UiLAotICAgICJGdW5jdGlvbiIsCi0gICAg
IkdlbmVyYXRvciIsCi0gICAgInJhaXNlcyIsCi1dCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6Ci0gICAgIyBpZiBydW4gYXMgYSBzY3JpcHQgb3IgYnkgJ3B5dGhvbiAtbSBweXRlc3QnCi0g
ICAgIyB3ZSB0cmlnZ2VyIHRoZSBiZWxvdyAiZWxzZSIgY29uZGl0aW9uIGJ5IHRoZSBmb2xsb3dp
bmcgaW1wb3J0Ci0gICAgaW1wb3J0IHB5dGVzdAotCi0gICAgcmFpc2UgU3lzdGVtRXhpdChweXRl
c3QubWFpbigpKQotZWxzZToKLQotICAgIGZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IF9zZXR1
cF9jb2xsZWN0X2Zha2Vtb2R1bGUKLQotICAgIF9zZXR1cF9jb2xsZWN0X2Zha2Vtb2R1bGUoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC9fX2luaXRfXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9weXRlc3QvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5jNGMyODE5MTg3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvcHl0ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsOTcgQEAKKyMgUFlUSE9OX0FSR0NPTVBM
RVRFX09LCisiIiJweXRlc3Q6IHVuaXQgYW5kIGZ1bmN0aW9uYWwgdGVzdGluZyB3aXRoIFB5dGhv
bi4iIiIKK2Zyb20gLiBpbXBvcnQgY29sbGVjdAorZnJvbSBfcHl0ZXN0IGltcG9ydCBfX3ZlcnNp
b25fXworZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgcmVnaXN0ZXJfYXNzZXJ0X3Jld3Jp
dGUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGNtZGxpbmUKK2Zyb20gX3B5dGVzdC5jb25m
aWcgaW1wb3J0IGNvbnNvbGVfbWFpbgorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENv
ZGUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCitmcm9tIF9weXRlc3QuY29u
ZmlnIGltcG9ydCBob29rc3BlYworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgbWFpbgorZnJv
bSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgVXNhZ2VFcnJvcgorZnJvbSBfcHl0ZXN0LmRlYnVnZ2lu
ZyBpbXBvcnQgcHl0ZXN0UERCIGFzIF9fcHl0ZXN0UERCCitmcm9tIF9weXRlc3QuZml4dHVyZXMg
aW1wb3J0IGZpbGxmaXh0dXJlcyBhcyBfZmlsbGZ1bmNhcmdzCitmcm9tIF9weXRlc3QuZml4dHVy
ZXMgaW1wb3J0IGZpeHR1cmUKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZUxv
b2t1cEVycm9yCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IHlpZWxkX2ZpeHR1cmUKK2Zy
b20gX3B5dGVzdC5mcmVlemVfc3VwcG9ydCBpbXBvcnQgZnJlZXplX2luY2x1ZGVzCitmcm9tIF9w
eXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgorZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1BUktf
R0VOIGFzIG1hcmsKK2Zyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBwYXJhbQorZnJvbSBfcHl0ZXN0
Lm5vZGVzIGltcG9ydCBDb2xsZWN0b3IKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgRmlsZQor
ZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1w
b3J0IGV4aXQKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbAorZnJvbSBfcHl0ZXN0
Lm91dGNvbWVzIGltcG9ydCBpbXBvcnRvcnNraXAKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBv
cnQgc2tpcAorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCB4ZmFpbAorZnJvbSBfcHl0ZXN0
LnB5dGhvbiBpbXBvcnQgQ2xhc3MKK2Zyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IEZ1bmN0aW9u
Citmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBJbnN0YW5jZQorZnJvbSBfcHl0ZXN0LnB5dGhv
biBpbXBvcnQgTW9kdWxlCitmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBQYWNrYWdlCitmcm9t
IF9weXRlc3QucHl0aG9uX2FwaSBpbXBvcnQgYXBwcm94Citmcm9tIF9weXRlc3QucHl0aG9uX2Fw
aSBpbXBvcnQgcmFpc2VzCitmcm9tIF9weXRlc3QucmVjd2FybiBpbXBvcnQgZGVwcmVjYXRlZF9j
YWxsCitmcm9tIF9weXRlc3QucmVjd2FybiBpbXBvcnQgd2FybnMKK2Zyb20gX3B5dGVzdC53YXJu
aW5nX3R5cGVzIGltcG9ydCBQeXRlc3RBc3NlcnRSZXdyaXRlV2FybmluZworZnJvbSBfcHl0ZXN0
Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdENhY2hlV2FybmluZworZnJvbSBfcHl0ZXN0Lndh
cm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdENvbGxlY3Rpb25XYXJuaW5nCitmcm9tIF9weXRlc3Qu
d2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0Q29uZmlnV2FybmluZworZnJvbSBfcHl0ZXN0Lndh
cm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdERlcHJlY2F0aW9uV2FybmluZworZnJvbSBfcHl0ZXN0
Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdEV4cGVyaW1lbnRhbEFwaVdhcm5pbmcKK2Zyb20g
X3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RVbmhhbmRsZWRDb3JvdXRpbmVXYXJu
aW5nCitmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0VW5rbm93bk1hcmtX
YXJuaW5nCitmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0V2FybmluZwor
CitzZXRfdHJhY2UgPSBfX3B5dGVzdFBEQi5zZXRfdHJhY2UKKworX19hbGxfXyA9IFsKKyAgICAi
X192ZXJzaW9uX18iLAorICAgICJfZmlsbGZ1bmNhcmdzIiwKKyAgICAiYXBwcm94IiwKKyAgICAi
Q2xhc3MiLAorICAgICJjbWRsaW5lIiwKKyAgICAiY29sbGVjdCIsCisgICAgIkNvbGxlY3RvciIs
CisgICAgImNvbnNvbGVfbWFpbiIsCisgICAgImRlcHJlY2F0ZWRfY2FsbCIsCisgICAgImV4aXQi
LAorICAgICJFeGl0Q29kZSIsCisgICAgImZhaWwiLAorICAgICJGaWxlIiwKKyAgICAiZml4dHVy
ZSIsCisgICAgIkZpeHR1cmVMb29rdXBFcnJvciIsCisgICAgImZyZWV6ZV9pbmNsdWRlcyIsCisg
ICAgIkZ1bmN0aW9uIiwKKyAgICAiaG9va2ltcGwiLAorICAgICJob29rc3BlYyIsCisgICAgImlt
cG9ydG9yc2tpcCIsCisgICAgIkluc3RhbmNlIiwKKyAgICAiSXRlbSIsCisgICAgIm1haW4iLAor
ICAgICJtYXJrIiwKKyAgICAiTW9kdWxlIiwKKyAgICAiUGFja2FnZSIsCisgICAgInBhcmFtIiwK
KyAgICAiUHl0ZXN0QXNzZXJ0UmV3cml0ZVdhcm5pbmciLAorICAgICJQeXRlc3RDYWNoZVdhcm5p
bmciLAorICAgICJQeXRlc3RDb2xsZWN0aW9uV2FybmluZyIsCisgICAgIlB5dGVzdENvbmZpZ1dh
cm5pbmciLAorICAgICJQeXRlc3REZXByZWNhdGlvbldhcm5pbmciLAorICAgICJQeXRlc3RFeHBl
cmltZW50YWxBcGlXYXJuaW5nIiwKKyAgICAiUHl0ZXN0VW5oYW5kbGVkQ29yb3V0aW5lV2Fybmlu
ZyIsCisgICAgIlB5dGVzdFVua25vd25NYXJrV2FybmluZyIsCisgICAgIlB5dGVzdFdhcm5pbmci
LAorICAgICJyYWlzZXMiLAorICAgICJyZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSIsCisgICAgIlNl
c3Npb24iLAorICAgICJzZXRfdHJhY2UiLAorICAgICJza2lwIiwKKyAgICAiVXNhZ2VFcnJvciIs
CisgICAgIndhcm5zIiwKKyAgICAieGZhaWwiLAorICAgICJ5aWVsZF9maXh0dXJlIiwKK10KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9weXRlc3QvX19tYWluX18ucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvcHl0ZXN0L19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYjE3MDE1MjkzN2IzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L3B5dGVzdC9fX21haW5fXy5weQpAQCAtMCwwICsxLDUgQEAKKyIiIlRoZSBweXRlc3QgZW50cnkg
cG9pbnQuIiIiCitpbXBvcnQgcHl0ZXN0CisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Cisg
ICAgcmFpc2UgU3lzdGVtRXhpdChweXRlc3QuY29uc29sZV9tYWluKCkpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvcHl0ZXN0L2NvbGxlY3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvcHl0ZXN0
L2NvbGxlY3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yZWRm
NDQ3MGY0ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvcHl0ZXN0L2NvbGxl
Y3QucHkKQEAgLTAsMCArMSwzOSBAQAoraW1wb3J0IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9t
IHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5
cGluZyBpbXBvcnQgTGlzdAorCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuZGVwcmVjYXRl
ZCBpbXBvcnQgUFlURVNUX0NPTExFQ1RfTU9EVUxFCisKK0NPTExFQ1RfRkFLRU1PRFVMRV9BVFRS
SUJVVEVTID0gWworICAgICJDb2xsZWN0b3IiLAorICAgICJNb2R1bGUiLAorICAgICJGdW5jdGlv
biIsCisgICAgIkluc3RhbmNlIiwKKyAgICAiU2Vzc2lvbiIsCisgICAgIkl0ZW0iLAorICAgICJD
bGFzcyIsCisgICAgIkZpbGUiLAorICAgICJfZmlsbGZ1bmNhcmdzIiwKK10KKworCitjbGFzcyBG
YWtlQ29sbGVjdE1vZHVsZShNb2R1bGVUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4g
Tm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicHl0ZXN0LmNvbGxlY3QiKQorICAgICAg
ICBzZWxmLl9fYWxsX18gPSBsaXN0KENPTExFQ1RfRkFLRU1PRFVMRV9BVFRSSUJVVEVTKQorICAg
ICAgICBzZWxmLl9fcHl0ZXN0ID0gcHl0ZXN0CisKKyAgICBkZWYgX19kaXJfXyhzZWxmKSAtPiBM
aXN0W3N0cl06CisgICAgICAgIHJldHVybiBkaXIoc3VwZXIoKSkgKyBzZWxmLl9fYWxsX18KKwor
ICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lOiBzdHIpIC0+IEFueToKKyAgICAgICAgaWYg
bmFtZSBub3QgaW4gc2VsZi5fX2FsbF9fOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJy
b3IobmFtZSkKKyAgICAgICAgd2FybmluZ3Mud2FybihQWVRFU1RfQ09MTEVDVF9NT0RVTEUuZm9y
bWF0KG5hbWU9bmFtZSksIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIGdldGF0dHIocHl0
ZXN0LCBuYW1lKQorCisKK3N5cy5tb2R1bGVzWyJweXRlc3QuY29sbGVjdCJdID0gRmFrZUNvbGxl
Y3RNb2R1bGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC9weS50eXBlZCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9weXRlc3QvcHkudHlwZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3MWQzYmE4YWQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGFza3MvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9fX2luaXRfXy5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE1YjEyOTNlMzNlLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGFza3MvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi0iIiIKLUludm9rZSB0YXNrcyB0byBoZWxwIHdpdGggcHl0ZXN0IGRldmVs
b3BtZW50IGFuZCByZWxlYXNlIHByb2Nlc3MuCi0iIiIKLQotaW1wb3J0IGludm9rZQotCi1mcm9t
IC4gaW1wb3J0IGdlbmVyYXRlCi0KLQotbnMgPSBpbnZva2UuQ29sbGVjdGlvbihnZW5lcmF0ZSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL2dlbmVyYXRlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGFza3MvZ2VuZXJhdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5OGFmNzBj
OTQyNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL2dlbmVyYXRlLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLSIiIgotSW52b2tlIGRldmVsb3BtZW50IHRh
c2tzLgotIiIiCi1mcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKLWZyb20gc3VicHJvY2VzcyBpbXBv
cnQgY2hlY2tfb3V0cHV0LCBjaGVja19jYWxsCi0KLWltcG9ydCBpbnZva2UKLQotCi1AaW52b2tl
LnRhc2soaGVscD17InZlcnNpb24iOiAidmVyc2lvbiBiZWluZyByZWxlYXNlZCJ9KQotZGVmIGFu
bm91bmNlKGN0eCwgdmVyc2lvbik6Ci0gICAgIiIiR2VuZXJhdGVzIGEgbmV3IHJlbGVhc2UgYW5u
b3VuY2VtZW50IGVudHJ5IGluIHRoZSBkb2NzLiIiIgotICAgICMgR2V0IG91ciBsaXN0IG9mIGF1
dGhvcnMKLSAgICBzdGRvdXQgPSBjaGVja19vdXRwdXQoWyJnaXQiLCAiZGVzY3JpYmUiLCAiLS1h
YmJyZXY9MCIsICItLXRhZ3MiXSkKLSAgICBzdGRvdXQgPSBzdGRvdXQuZGVjb2RlKCJ1dGYtOCIp
Ci0gICAgbGFzdF92ZXJzaW9uID0gc3Rkb3V0LnN0cmlwKCkKLQotICAgIHN0ZG91dCA9IGNoZWNr
X291dHB1dCgKLSAgICAgICAgWyJnaXQiLCAibG9nIiwgInt9Li5IRUFEIi5mb3JtYXQobGFzdF92
ZXJzaW9uKSwgIi0tZm9ybWF0PSVhTiJdCi0gICAgKQotICAgIHN0ZG91dCA9IHN0ZG91dC5kZWNv
ZGUoInV0Zi04IikKLQotICAgIGNvbnRyaWJ1dG9ycyA9IHNldChzdGRvdXQuc3BsaXRsaW5lcygp
KQotCi0gICAgdGVtcGxhdGVfbmFtZSA9ICJyZWxlYXNlLm1pbm9yLnJzdCIgaWYgdmVyc2lvbi5l
bmRzd2l0aCgKLSAgICAgICAgIi4wIgotICAgICkgZWxzZSAicmVsZWFzZS5wYXRjaC5yc3QiCi0g
ICAgdGVtcGxhdGVfdGV4dCA9IFBhdGgoX19maWxlX18pLnBhcmVudC5qb2lucGF0aCh0ZW1wbGF0
ZV9uYW1lKS5yZWFkX3RleHQoCi0gICAgICAgIGVuY29kaW5nPSJVVEYtOCIKLSAgICApCi0KLSAg
ICBjb250cmlidXRvcnNfdGV4dCA9ICJcbiIuam9pbigKLSAgICAgICAgIioge30iLmZvcm1hdChu
YW1lKSBmb3IgbmFtZSBpbiBzb3J0ZWQoY29udHJpYnV0b3JzKQotICAgICkgKyAiXG4iCi0gICAg
dGV4dCA9IHRlbXBsYXRlX3RleHQuZm9ybWF0KHZlcnNpb249dmVyc2lvbiwgY29udHJpYnV0b3Jz
PWNvbnRyaWJ1dG9yc190ZXh0KQotCi0gICAgdGFyZ2V0ID0gUGF0aChfX2ZpbGVfXykucGFyZW50
LmpvaW5wYXRoKAotICAgICAgICAiLi4vZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ute30ucnN0Ii5m
b3JtYXQodmVyc2lvbikKLSAgICApCi0gICAgdGFyZ2V0LndyaXRlX3RleHQodGV4dCwgZW5jb2Rp
bmc9IlVURi04IikKLSAgICBwcmludCgiW2dlbmVyYXRlLmFubm91bmNlXSBHZW5lcmF0ZWQge30i
LmZvcm1hdCh0YXJnZXQubmFtZSkpCi0KLSAgICAjIFVwZGF0ZSBpbmRleCB3aXRoIHRoZSBuZXcg
cmVsZWFzZSBlbnRyeQotICAgIGluZGV4X3BhdGggPSBQYXRoKF9fZmlsZV9fKS5wYXJlbnQuam9p
bnBhdGgoIi4uL2RvYy9lbi9hbm5vdW5jZS9pbmRleC5yc3QiKQotICAgIGxpbmVzID0gaW5kZXhf
cGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9IlVURi04Iikuc3BsaXRsaW5lcygpCi0gICAgaW5kZW50
ID0gIiAgICIKLSAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKCJ7fXJlbGVhc2UtIi5mb3JtYXQoaW5kZW50KSk6Ci0gICAg
ICAgICAgICBuZXdfbGluZSA9IGluZGVudCArIHRhcmdldC5zdGVtCi0gICAgICAgICAgICBpZiBs
aW5lICE9IG5ld19saW5lOgotICAgICAgICAgICAgICAgIGxpbmVzLmluc2VydChpbmRleCwgbmV3
X2xpbmUpCi0gICAgICAgICAgICAgICAgaW5kZXhfcGF0aC53cml0ZV90ZXh0KCJcbiIuam9pbihs
aW5lcykgKyAiXG4iLCBlbmNvZGluZz0iVVRGLTgiKQotICAgICAgICAgICAgICAgIHByaW50KCJb
Z2VuZXJhdGUuYW5ub3VuY2VdIFVwZGF0ZWQge30iLmZvcm1hdChpbmRleF9wYXRoLm5hbWUpKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCgKLSAgICAgICAgICAgICAg
ICAgICAgIltnZW5lcmF0ZS5hbm5vdW5jZV0gU2tpcCB7fSAoYWxyZWFkeSBjb250YWlucyByZWxl
YXNlKSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfcGF0aC5uYW1lCi0g
ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBicmVh
awotCi0gICAgY2hlY2tfY2FsbChbImdpdCIsICJhZGQiLCBzdHIodGFyZ2V0KV0pCi0KLQotQGlu
dm9rZS50YXNrKCkKLWRlZiByZWdlbihjdHgpOgotICAgICIiIkNhbGwgcmVnZW5kb2MgdG9vbCB0
byB1cGRhdGUgZXhhbXBsZXMgYW5kIHB5dGVzdCBvdXRwdXQgaW4gdGhlIGRvY3MuIiIiCi0gICAg
cHJpbnQoIltnZW5lcmF0ZS5yZWdlbl0gVXBkYXRpbmcgZG9jcyIpCi0gICAgY2hlY2tfY2FsbChb
InRveCIsICItZSIsICJyZWdlbiJdKQotCi0KLUBpbnZva2UudGFzaygpCi1kZWYgbWFrZV90YWco
Y3R4LCB2ZXJzaW9uKToKLSAgICAiIiJDcmVhdGUgYSBuZXcsIGxvY2FsIHRhZyBmb3IgdGhlIHJl
bGVhc2UsIG9ubHkgaWYgdGhlIHJlcG9zaXRvcnkgaXMgY2xlYW4uIiIiCi0gICAgZnJvbSBnaXQg
aW1wb3J0IFJlcG8KLQotICAgIHJlcG8gPSBSZXBvKCIuIikKLSAgICBpZiByZXBvLmlzX2RpcnR5
KCk6Ci0gICAgICAgIHByaW50KCJDdXJyZW50IHJlcG9zaXRvcnkgaXMgZGlydHkuIFBsZWFzZSBj
b21taXQgYW55IGNoYW5nZXMgYW5kIHRyeSBhZ2Fpbi4iKQotICAgICAgICByYWlzZSBpbnZva2Uu
RXhpdChjb2RlPTIpCi0KLSAgICB0YWdfbmFtZXMgPSBbeC5uYW1lIGZvciB4IGluIHJlcG8udGFn
c10KLSAgICBpZiB2ZXJzaW9uIGluIHRhZ19uYW1lczoKLSAgICAgICAgcHJpbnQoIltnZW5lcmF0
ZS5tYWtlX3RhZ10gRGVsZXRlIGV4aXN0aW5nIHRhZyB7fSIuZm9ybWF0KHZlcnNpb24pKQotICAg
ICAgICByZXBvLmRlbGV0ZV90YWcodmVyc2lvbikKLQotICAgIHByaW50KCJbZ2VuZXJhdGUubWFr
ZV90YWddIENyZWF0ZSB0YWcge30iLmZvcm1hdCh2ZXJzaW9uKSkKLSAgICByZXBvLmNyZWF0ZV90
YWcodmVyc2lvbikKLQotCi1AaW52b2tlLnRhc2soaGVscD17InZlcnNpb24iOiAidmVyc2lvbiBi
ZWluZyByZWxlYXNlZCJ9KQotZGVmIHByZV9yZWxlYXNlKGN0eCwgdmVyc2lvbik6Ci0gICAgIiIi
R2VuZXJhdGVzIG5ldyBkb2NzLCByZWxlYXNlIGFubm91bmNlbWVudHMgYW5kIGNyZWF0ZXMgYSBs
b2NhbCB0YWcuIiIiCi0gICAgYW5ub3VuY2UoY3R4LCB2ZXJzaW9uKQotICAgIHJlZ2VuKGN0eCkK
LSAgICBjaGFuZ2Vsb2coY3R4LCB2ZXJzaW9uLCB3cml0ZV9vdXQ9VHJ1ZSkKLQotICAgIG1zZyA9
ICJQcmVwYXJpbmcgcmVsZWFzZSB2ZXJzaW9uIHt9Ii5mb3JtYXQodmVyc2lvbikKLSAgICBjaGVj
a19jYWxsKFsiZ2l0IiwgImNvbW1pdCIsICItYSIsICItbSIsIG1zZ10pCi0KLSAgICBtYWtlX3Rh
ZyhjdHgsIHZlcnNpb24pCi0KLSAgICBwcmludCgpCi0gICAgcHJpbnQoIltnZW5lcmF0ZS5wcmVf
cmVsZWFzZV0gUGxlYXNlIHB1c2ggeW91ciBicmFuY2ggYW5kIG9wZW4gYSBQUi4iKQotCi0KLUBp
bnZva2UudGFzaygKLSAgICBoZWxwPXsKLSAgICAgICAgInZlcnNpb24iOiAidmVyc2lvbiBiZWlu
ZyByZWxlYXNlZCIsCi0gICAgICAgICJ3cml0ZV9vdXQiOiAid3JpdGUgY2hhbmdlcyB0byB0aGUg
YWN0dWFsIGNoYW5nZWxvZyIsCi0gICAgfQotKQotZGVmIGNoYW5nZWxvZyhjdHgsIHZlcnNpb24s
IHdyaXRlX291dD1GYWxzZSk6Ci0gICAgaWYgd3JpdGVfb3V0OgotICAgICAgICBhZGRvcHRzID0g
W10KLSAgICBlbHNlOgotICAgICAgICBhZGRvcHRzID0gWyItLWRyYWZ0Il0KLSAgICBjaGVja19j
YWxsKFsidG93bmNyaWVyIiwgIi0teWVzIiwgIi0tdmVyc2lvbiIsIHZlcnNpb25dICsgYWRkb3B0
cykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3JlcXVpcmVtZW50cy50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90YXNrcy9yZXF1aXJlbWVudHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkYjU0ZTc2ZTg1YzguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9y
ZXF1aXJlbWVudHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0tZSAuCi1naXRw
eXRob24KLWludm9rZQotdG93bmNyaWVyCi10b3gKLXdoZWVsCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90YXNrcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWUwODUzZDMyZDguLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGFza3MvZ2VuZXJhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9yZWxl
YXNlLm1pbm9yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3JlbGVhc2UucGF0Y2gucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGFza3MvcmVxdWlyZW1lbnRzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9hY2NlcHRhbmNlX3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2FjY2VwdGFu
Y2VfdGVzdC5weQppbmRleCBjMmVlZDQxOWM5Y2IuLjAzOWQ4ZGFkOTY5ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9hY2NlcHRhbmNlX3Rlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9hY2NlcHRhbmNlX3Rlc3QucHkKQEAgLTEsMzAgKzEsMzEgQEAKLSMgLSotIGNvZGlu
ZzogdXRmLTggLSotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBl
cwogCi1pbXBvcnQgc2l4Ci0KLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCitpbXBvcnQgYXR0cgogaW1w
b3J0IHB5CisKIGltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX05P
VEVTVFNDT0xMRUNURUQsIEVYSVRfVVNBR0VFUlJPUgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBv
cnQgaW1wb3J0bGliX21ldGFkYXRhCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29k
ZQorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IHN5bWxpbmtfb3Jfc2tpcAorZnJvbSBfcHl0
ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCisKIAorZGVmIHByZXBlbmRfcHl0aG9ucGF0aCgq
ZGlycyk6CisgICAgY3VyID0gb3MuZ2V0ZW52KCJQWVRIT05QQVRIIikKKyAgICBpZiBjdXI6Cisg
ICAgICAgIGRpcnMgKz0gKGN1ciwpCisgICAgcmV0dXJuIG9zLnBhdGhzZXAuam9pbihzdHIocCkg
Zm9yIHAgaW4gZGlycykKIAotY2xhc3MgVGVzdEdlbmVyYWxVc2FnZShvYmplY3QpOgogCitjbGFz
cyBUZXN0R2VuZXJhbFVzYWdlOgogICAgIGRlZiB0ZXN0X2NvbmZpZ19lcnJvcihzZWxmLCB0ZXN0
ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgICAgIHJhaXNlIHB5dGVzdC5Vc2FnZUVycm9yKCJo
ZWxsbyIpCi0gICAgICAgICIiIgotICAgICAgICApCisgICAgICAgIHRlc3RkaXIuY29weV9leGFt
cGxlKCJjb25mdGVzdF91c2FnZWVycm9yL2NvbmZ0ZXN0LnB5IikKICAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QodGVzdGRpci50bXBkaXIpCi0gICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ICE9IDAKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuVVNBR0VfRVJS
T1IKICAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKkVSUk9SOiBoZWxsbyJd
KQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqcHl0ZXN0X3VuY29uZmln
dXJlX2NhbGxlZCJdKQogCiAgICAgZGVmIHRlc3Rfcm9vdF9jb25mdGVzdF9zeW50YXhfZXJyb3Io
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZShjb25mdGVzdD0icmFp
c2UgU3ludGF4RXJyb3JcbiIpCkBAIC02OSw3ICs3MCw3IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNh
Z2Uob2JqZWN0KToKICAgICBkZWYgdGVzdF9maWxlX25vdF9mb3VuZChzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoImFzZCIpCiAgICAgICAgIGFzc2Vy
dCByZXN1bHQucmV0ICE9IDAKLSAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsi
RVJST1I6IGZpbGUgbm90IGZvdW5kKmFzZCJdKQorICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0
Y2hfbGluZXMoWyJFUlJPUjogZmlsZSBvciBkaXJlY3Rvcnkgbm90IGZvdW5kOiBhc2QiXSkKIAog
ICAgIGRlZiB0ZXN0X2ZpbGVfbm90X2ZvdW5kX3VuY29uZmlndXJlX2lzc3VlMTQzKHNlbGYsIHRl
c3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKQEAgLTgxLDggKzgyLDggQEAg
Y2xhc3MgVGVzdEdlbmVyYWxVc2FnZShvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXMiLCAiYXNkIikKLSAgICAgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gNCAgIyBFWElUX1VTQUdFRVJST1IKLSAgICAgICAgcmVzdWx0
LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiRVJST1I6IGZpbGUgbm90IGZvdW5kKmFzZCJdKQorICAg
ICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgorICAgICAgICBy
ZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyJFUlJPUjogZmlsZSBvciBkaXJlY3Rvcnkgbm90
IGZvdW5kOiBhc2QiXSkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKi0t
LWNvbmZpZ3VyZSIsICIqLS0tdW5jb25maWd1cmUiXSkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ19w
cmVwYXJzZV9wbHVnaW5fb3B0aW9uKHNlbGYsIHRlc3RkaXIpOgpAQCAtMTAyLDcgKzEwMyw1MiBA
QCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDAKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2Vk
KiJdKQogCi0gICAgZGVmIHRlc3RfYXNzZXJ0aW9uX21hZ2ljKHNlbGYsIHRlc3RkaXIpOgorICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibG9hZF9jb3ZfZWFybHkiLCBbVHJ1ZSwgRmFsc2Vd
KQorICAgIGRlZiB0ZXN0X2Vhcmx5X2xvYWRfc2V0dXB0b29sc19uYW1lKHNlbGYsIHRlc3RkaXIs
IG1vbmtleXBhdGNoLCBsb2FkX2Nvdl9lYXJseSk6CisgICAgICAgIG1vbmtleXBhdGNoLmRlbGVu
digiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIikKKworICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUobXl0ZXN0cGx1Z2luMV9tb2R1bGU9IiIpCisgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZShteXRlc3RwbHVnaW4yX21vZHVsZT0iIikKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KG15Y292X21vZHVsZT0iIikKKyAgICAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKKworICAg
ICAgICBsb2FkZWQgPSBbXQorCisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3MgRHVtbXlF
bnRyeVBvaW50OgorICAgICAgICAgICAgbmFtZSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgbW9k
dWxlID0gYXR0ci5pYigpCisgICAgICAgICAgICBncm91cCA9ICJweXRlc3QxMSIKKworICAgICAg
ICAgICAgZGVmIGxvYWQoc2VsZik6CisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhzZWxmLm1v
ZHVsZSkKKyAgICAgICAgICAgICAgICBsb2FkZWQuYXBwZW5kKHNlbGYubmFtZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVdCisKKyAgICAgICAgZW50cnlf
cG9pbnRzID0gWworICAgICAgICAgICAgRHVtbXlFbnRyeVBvaW50KCJteXBsdWdpbjEiLCAibXl0
ZXN0cGx1Z2luMV9tb2R1bGUiKSwKKyAgICAgICAgICAgIER1bW15RW50cnlQb2ludCgibXlwbHVn
aW4yIiwgIm15dGVzdHBsdWdpbjJfbW9kdWxlIiksCisgICAgICAgICAgICBEdW1teUVudHJ5UG9p
bnQoIm15Y292IiwgIm15Y292X21vZHVsZSIpLAorICAgICAgICBdCisKKyAgICAgICAgQGF0dHIu
cworICAgICAgICBjbGFzcyBEdW1teURpc3Q6CisgICAgICAgICAgICBlbnRyeV9wb2ludHMgPSBh
dHRyLmliKCkKKyAgICAgICAgICAgIGZpbGVzID0gKCkKKworICAgICAgICBkZWYgbXlfZGlzdHMo
KToKKyAgICAgICAgICAgIHJldHVybiAoRHVtbXlEaXN0KGVudHJ5X3BvaW50cyksKQorCisgICAg
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIoaW1wb3J0bGliX21ldGFkYXRhLCAiZGlzdHJpYnV0aW9u
cyIsIG15X2Rpc3RzKQorICAgICAgICBwYXJhbXMgPSAoIi1wIiwgIm15Y292IikgaWYgbG9hZF9j
b3ZfZWFybHkgZWxzZSAoKQorICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoKnBh
cmFtcykKKyAgICAgICAgaWYgbG9hZF9jb3ZfZWFybHk6CisgICAgICAgICAgICBhc3NlcnQgbG9h
ZGVkID09IFsibXljb3YiLCAibXlwbHVnaW4xIiwgIm15cGx1Z2luMiJdCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBhc3NlcnQgbG9hZGVkID09IFsibXlwbHVnaW4xIiwgIm15cGx1Z2luMiIs
ICJteWNvdiJdCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImltcG9ydF9tb2RlIiwg
WyJwcmVwZW5kIiwgImFwcGVuZCIsICJpbXBvcnRsaWIiXSkKKyAgICBkZWYgdGVzdF9hc3NlcnRp
b25fcmV3cml0ZShzZWxmLCB0ZXN0ZGlyLCBpbXBvcnRfbW9kZSk6CiAgICAgICAgIHAgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X3Ro
aXMoKToKQEAgLTExMCw3ICsxNTYsNyBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHgKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QocCwgIi0taW1wb3J0LW1vZGU9e30iLmZvcm1hdChpbXBvcnRfbW9kZSkpCiAg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIj4gICAgICAgYXNzZXJ0IHgiLCAi
RSAgICAgICBhc3NlcnQgMCJdKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCiAKQEAg
LTEyNiw3ICsxNzIsNiBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAjIFhYWCBvbiBqeXRo
b24gdGhpcyBmYWlsczogICI+ICAgaW1wb3J0IGltcG9ydF9mYWlscyIsCiAgICAgICAgICAgICAg
ICAgIkltcG9ydEVycm9yIHdoaWxlIGltcG9ydGluZyB0ZXN0IG1vZHVsZSoiLAogICAgICAgICAg
ICAgICAgICIqTm8gbW9kdWxlIG5hbWVkICpkb2VzX25vdF93b3JrKiIsCiAgICAgICAgICAgICBd
CkBAIC0xMzcsMTIgKzE4MiwyNiBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAg
ICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCIiKQogICAgICAgICBwMiA9IHRlc3RkaXIu
bWFrZWZpbGUoIi5weWMiLCAiMTIzIikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QocDEsIHAyKQotICAgICAgICBhc3NlcnQgcmVzdWx0LnJldAotICAgICAgICByZXN1bHQuc3Rk
ZXJyLmZubWF0Y2hfbGluZXMoWyIqRVJST1I6IG5vdCBmb3VuZDoqJXMiICUgKHAyLmJhc2VuYW1l
LCldKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgor
ICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgIkVSUk9SOiBub3QgZm91bmQ6IHt9Ii5mb3JtYXQocDIpLAorICAgICAgICAg
ICAgICAgICIobm8gbmFtZSB7IXJ9IGluIGFueSBvZiBbW11bXV0pIi5mb3JtYXQoc3RyKHAyKSks
CisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKIAotICAgIGRl
ZiB0ZXN0X2lzc3VlNDg2X2JldHRlcl9yZXBvcnRpbmdfb25fY29uZnRlc3RfbG9hZF9mYWlsdXJl
KHNlbGYsIHRlc3RkaXIpOgorICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZGVmYXVs
dCIpCisgICAgZGVmIHRlc3RfYmV0dGVyX3JlcG9ydGluZ19vbl9jb25mdGVzdF9sb2FkX2ZhaWx1
cmUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlNob3cgYSB1c2VyLWZyaWVuZGx5IHRyYWNl
YmFjayBvbiBjb25mdGVzdCBpbXBvcnQgZmFpbHVyZXMgKCM0ODYsICMzMzMyKSIiIgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoIiIpCi0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KCJp
bXBvcnQgcXdlcnR5IikKKyAgICAgICAgY29uZnRlc3QgPSB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgK
KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgICAg
IGltcG9ydCBxd2VydHkKKyAgICAgICAgICAgIGZvbygpCisgICAgICAgICIiIgorICAgICAgICAp
CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWhlbHAiKQogICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICAiIiIKQEAgLTE1MSwzOCAr
MjEwLDM0IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uob2JqZWN0KToKICAgICAgICAgIiIiCiAg
ICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBy
ZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
ICpFUlJPUipjb3VsZCBub3QgbG9hZCpjb25mdGVzdC5weSoKLSAgICAgICAgIiIiCisgICAgICAg
IGV4Y19uYW1lID0gKAorICAgICAgICAgICAgIk1vZHVsZU5vdEZvdW5kRXJyb3IiIGlmIHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsIDYpIGVsc2UgIkltcG9ydEVycm9yIgogICAgICAgICApCisgICAg
ICAgIGFzc2VydCByZXN1bHQuc3Rkb3V0LmxpbmVzID09IFtdCisgICAgICAgIGFzc2VydCByZXN1
bHQuc3RkZXJyLmxpbmVzID09IFsKKyAgICAgICAgICAgICJJbXBvcnRFcnJvciB3aGlsZSBsb2Fk
aW5nIGNvbmZ0ZXN0ICd7fScuIi5mb3JtYXQoY29uZnRlc3QpLAorICAgICAgICAgICAgImNvbmZ0
ZXN0LnB5OjM6IGluIDxtb2R1bGU+IiwKKyAgICAgICAgICAgICIgICAgZm9vKCkiLAorICAgICAg
ICAgICAgImNvbmZ0ZXN0LnB5OjI6IGluIGZvbyIsCisgICAgICAgICAgICAiICAgIGltcG9ydCBx
d2VydHkiLAorICAgICAgICAgICAgIkUgICB7fTogTm8gbW9kdWxlIG5hbWVkICdxd2VydHknIi5m
b3JtYXQoZXhjX25hbWUpLAorICAgICAgICBdCiAKICAgICBkZWYgdGVzdF9lYXJseV9za2lwKHNl
bGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1rZGlyKCJ4eXoiKQogICAgICAgICB0ZXN0
ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5
dGVzdAotICAgICAgICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeSgpOgorICAgICAg
ICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUoKToKICAgICAgICAgICAgICAgICBweXRlc3Qu
c2tpcCgiZWFybHkiKQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9U
RVNUU0NPTExFQ1RFRAorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19U
RVNUU19DT0xMRUNURUQKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEg
c2tpcCoiXSkKIAogICAgIGRlZiB0ZXN0X2lzc3VlODhfaW5pdGlhbF9maWxlX211bHRpbm9kZXMo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBjbGFzcyBNeUZp
bGUocHl0ZXN0LkZpbGUpOgotICAgICAgICAgICAgICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gW015SXRlbSgiaGVsbG8iLCBwYXJlbnQ9c2VsZildCi0g
ICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgotICAgICAg
ICAgICAgICAgIHJldHVybiBNeUZpbGUocGF0aCwgcGFyZW50KQotICAgICAgICAgICAgY2xhc3Mg
TXlJdGVtKHB5dGVzdC5JdGVtKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIiIgot
ICAgICAgICApCisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJpc3N1ZTg4X2luaXRpYWxf
ZmlsZV9tdWx0aW5vZGVzIikKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRl
c3RfaGVsbG8oKTogcGFzcyIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAs
ICItLWNvbGxlY3Qtb25seSIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IipNeUZpbGUqdGVzdF9pc3N1ZTg4KiIsICIqTW9kdWxlKnRlc3RfaXNzdWU4OCoiXSkKQEAgLTE5
MSwxOSArMjQ2LDE5IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uob2JqZWN0KToKICAgICAgICAg
dGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9y
dCBzeXMKLSAgICAgICAgICAgIHByaW50ICgic2hvdWxkIG5vdCBiZSBzZWVuIikKKyAgICAgICAg
ICAgIHByaW50KCJzaG91bGQgbm90IGJlIHNlZW4iKQogICAgICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgic3RkZXI0MlxcbiIpCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJ
VF9OT1RFU1RTQ09MTEVDVEVECi0gICAgICAgIGFzc2VydCAic2hvdWxkIG5vdCBiZSBzZWVuIiBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBF
eGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1h
dGNoX2xpbmUoIipzaG91bGQgbm90IGJlIHNlZW4qIikKICAgICAgICAgYXNzZXJ0ICJzdGRlcnI0
MiIgbm90IGluIHJlc3VsdC5zdGRlcnIuc3RyKCkKIAogICAgIGRlZiB0ZXN0X2NvbmZ0ZXN0X3By
aW50aW5nX3Nob3dzX2lmX2Vycm9yKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1h
a2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgcHJpbnQgKCJzaG91bGQg
YmUgc2VlbiIpCisgICAgICAgICAgICBwcmludCgic2hvdWxkIGJlIHNlZW4iKQogICAgICAgICAg
ICAgYXNzZXJ0IDAKICAgICAgICAgIiIiCiAgICAgICAgICkKQEAgLTIxMSw0MSArMjY2LDE4IEBA
IGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgIT0gMAogICAgICAgICBhc3NlcnQgInNob3VsZCBiZSBzZWVuIiBpbiByZXN1bHQuc3Rkb3V0
LnN0cigpCiAKLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAotICAgICAgICBub3QgaGFzYXR0cihw
eS5wYXRoLmxvY2FsLCAibWtzeW1saW5rdG8iKSwKLSAgICAgICAgcmVhc29uPSJzeW1saW5rIG5v
dCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIsCi0gICAgKQotICAgIGRlZiB0ZXN0X2NoZGly
KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJweSIpLm1rc3lt
bGlua3RvKHB5Ll9weWRpcikKLSAgICAgICAgcCA9IHRlc3RkaXIudG1wZGlyLmpvaW4oIm1haW4u
cHkiKQotICAgICAgICBwLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
Ci0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgc3lzLCBvcwotICAgICAg
ICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsICcnKQotICAgICAgICAgICAgaW1wb3J0IHB5Ci0gICAg
ICAgICAgICBwcmludCAocHkuX19maWxlX18pCi0gICAgICAgICAgICBwcmludCAocHkuX19wYXRo
X18pCi0gICAgICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUob3MuZ2V0Y3dkKCkpKQot
ICAgICAgICAgICAgcHJpbnQgKHB5LmxvZykKLSAgICAgICAgIiIiCi0gICAgICAgICAgICApCi0g
ICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRob24ocCkKLSAgICAgICAg
YXNzZXJ0IG5vdCByZXN1bHQucmV0Ci0KICAgICBkZWYgdGVzdF9pc3N1ZTEwOV9zaWJsaW5nX2Nv
bmZ0ZXN0c19ub3RfbG9hZGVkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBzdWIxID0gdGVzdGRp
ci5ta2Rpcigic3ViMSIpCiAgICAgICAgIHN1YjIgPSB0ZXN0ZGlyLm1rZGlyKCJzdWIyIikKICAg
ICAgICAgc3ViMS5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKCJhc3NlcnQgMCIpCiAgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN1YjIpCi0gICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9
PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKICAgICAgICAgc3ViMi5lbnN1cmUoIl9faW5p
dF9fLnB5IikKICAgICAgICAgcCA9IHN1YjIuZW5zdXJlKCJ0ZXN0X2hlbGxvLnB5IikKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdChzdWIxKQotICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX1VTQUdFRVJS
T1IKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuVVNBR0VfRVJST1IKIAog
ICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9za2lwcGVkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0
ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKQEAgLTI1Nyw3ICsyODksNyBAQCBjbGFzcyBUZXN0R2VuZXJh
bFVzYWdlKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJk
ZWYgdGVzdF9oZWxsbygpOiBwYXNzIikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQotICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQK
KyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVE
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHNraXBwZWQqIl0pCiAK
ICAgICBkZWYgdGVzdF9tdWx0aXBsZV9pdGVtc19wZXJfY29sbGVjdG9yX2J5aWQoc2VsZiwgdGVz
dGRpcik6CkBAIC0yNjksMTAgKzMwMSwxMCBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGNsYXNzIE15Q29sbGVj
dG9yKHB5dGVzdC5GaWxlKToKICAgICAgICAgICAgICAgICBkZWYgY29sbGVjdChzZWxmKToKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFtNeUl0ZW0obmFtZT0ieHl6IiwgcGFyZW50PXNlbGYp
XQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gW015SXRlbS5mcm9tX3BhcmVudChuYW1lPSJ4
eXoiLCBwYXJlbnQ9c2VsZildCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShw
YXRoLCBwYXJlbnQpOgogICAgICAgICAgICAgICAgIGlmIHBhdGguYmFzZW5hbWUuc3RhcnRzd2l0
aCgiY29uZnRlc3QiKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15Q29sbGVjdG9yKHBh
dGgsIHBhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15Q29sbGVjdG9yLmZyb21f
cGFyZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQogICAgICAgICAiIiIKICAgICAgICAg
KQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChjLmJhc2VuYW1lICsgIjo6IiAr
ICJ4eXoiKQpAQCAtMjg0LDkgKzMxNiw5IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uob2JqZWN0
KToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAg
ICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgICAgICAgICAg
bWV0YWZ1bmMuYWRkY2FsbCh7J3gnOiAzfSwgaWQ9J2hlbGxvLTEyMycpCisgICAgICAgICAgICAg
ICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoJ3gnLCBbM10sIGlkcz1bJ2hlbGxvLTEyMyddKQogICAg
ICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICAgICAgICAgICAg
IHByaW50IChpdGVtLmtleXdvcmRzKQorICAgICAgICAgICAgICAgIHByaW50KGl0ZW0ua2V5d29y
ZHMpCiAgICAgICAgICAgICAgICAgaWYgJ2hlbGxvLTEyMycgaW4gaXRlbS5rZXl3b3JkczoKICAg
ICAgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoImhlbGxvIikKICAgICAgICAgICAgICAgICBh
c3NlcnQgMApAQCAtMzAxLDggKzMzMyw3IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uob2JqZWN0
KToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAg
ICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgICAg
ICAgICAgbWV0YWZ1bmMuYWRkY2FsbCh7J2knOiAxfSwgaWQ9IjEiKQotICAgICAgICAgICAgICAg
IG1ldGFmdW5jLmFkZGNhbGwoeydpJzogMn0sIGlkPSIyIikKKyAgICAgICAgICAgICAgICBtZXRh
ZnVuYy5wYXJhbWV0cml6ZSgnaScsIFsxLCAyXSwgaWRzPVsiMSIsICIyIl0pCiAgICAgICAgICAg
ICBkZWYgdGVzdF9mdW5jKGkpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCkBA
IC0zNTYsMTkgKzM4NywyNyBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAg
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSA0ICAjIHVzYWdlIGVycm9yIG9ubHkgaWYgaXRl
bSBub3QgZm91bmQKIAogICAgIGRlZiB0ZXN0X3JlcG9ydF9hbGxfZmFpbGVkX2NvbGxlY3Rpb25z
X2luaXRhcmdzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgK
KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQg
RXhpdENvZGUKKworICAgICAgICAgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKGV4aXRzdGF0
dXMpOgorICAgICAgICAgICAgICAgIGFzc2VydCBleGl0c3RhdHVzID09IEV4aXRDb2RlLlVTQUdF
X0VSUk9SCisgICAgICAgICAgICAgICAgcHJpbnQoInB5dGVzdF9zZXNzaW9uZmluaXNoX2NhbGxl
ZCIpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUodGVzdF9hPSJkZWYiLCB0ZXN0X2I9ImRlZiIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCJ0ZXN0X2EucHk6OmEiLCAidGVzdF9iLnB5OjpiIikKICAgICAgICAgcmVzdWx0
LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKkVSUk9SKnRlc3RfYS5weTo6YSoiLCAiKkVSUk9SKnRl
c3RfYi5weTo6YioiXSkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsicHl0
ZXN0X3Nlc3Npb25maW5pc2hfY2FsbGVkIl0pCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IEV4aXRDb2RlLlVTQUdFX0VSUk9SCiAKLSAgICBAcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoInJl
Y3dhcm4iKQogICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9pbXBvcnRfZG9lc250X2NvbmZ1c2VfaW1w
b3J0X2hvb2soc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIgotICAgICAgICBSZWYgIzM4My4g
UHl0aG9uIDMuMydzIG5hbWVzcGFjZSBwYWNrYWdlIG1lc3NlZCB3aXRoIG91ciBpbXBvcnQgaG9v
a3MKKyAgICAgICAgIiIiUmVmICMzODMuCisKKyAgICAgICAgUHl0aG9uIDMuMydzIG5hbWVzcGFj
ZSBwYWNrYWdlIG1lc3NlZCB3aXRoIG91ciBpbXBvcnQgaG9va3MuCiAgICAgICAgIEltcG9ydGlu
ZyBhIG1vZHVsZSB0aGF0IGRpZG4ndCBleGlzdCwgZXZlbiBpZiB0aGUgSW1wb3J0RXJyb3Igd2Fz
CiAgICAgICAgIGdyYWNlZnVsbHkgaGFuZGxlZCwgd291bGQgbWFrZSBvdXIgdGVzdCBjcmFzaC4K
LQotICAgICAgICBVc2UgcmVjd2FybiBoZXJlIHRvIHNpbGVuY2UgdGhpcyB3YXJuaW5nIGluIFB5
dGhvbiAyLjc6Ci0gICAgICAgICAgICBJbXBvcnRXYXJuaW5nOiBOb3QgaW1wb3J0aW5nIGRpcmVj
dG9yeSAnLi4uXG5vdF9hX3BhY2thZ2UnOiBtaXNzaW5nIF9faW5pdF9fLnB5CiAgICAgICAgICIi
IgogICAgICAgICB0ZXN0ZGlyLm1rZGlyKCJub3RfYV9wYWNrYWdlIikKICAgICAgICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKQEAgLTM5OSw3ICs0MzgsNyBAQCBjbGFzcyBUZXN0R2VuZXJhbFVz
YWdlKG9iamVjdCk6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAg
ICAiIiIKICAgICAgICAgICAgIGRlZiByYWlzZV9lcnJvcihvYmopOgotICAgICAgICAgICAgICAg
IHJhaXNlIElPRXJyb3IoJ3NvdXJjZSBjb2RlIG5vdCBhdmFpbGFibGUnKQorICAgICAgICAgICAg
ICAgIHJhaXNlIE9TRXJyb3IoJ3NvdXJjZSBjb2RlIG5vdCBhdmFpbGFibGUnKQogCiAgICAgICAg
ICAgICBpbXBvcnQgaW5zcGVjdAogICAgICAgICAgICAgaW5zcGVjdC5nZXRzb3VyY2VsaW5lcyA9
IHJhaXNlX2Vycm9yCkBAIC00MTMsMTEgKzQ1Miw5IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uo
b2JqZWN0KToKICAgICAgICAgICAgIFsiKnNvdXJjZSBjb2RlIG5vdCBhdmFpbGFibGUqIiwgIkUq
Zml4dHVyZSAnaW52YWxpZF9maXh0dXJlJyBub3QgZm91bmQiXQogICAgICAgICApCiAKLSAgICBk
ZWYgdGVzdF9wbHVnaW5zX2dpdmVuX2FzX3N0cmluZ3Moc2VsZiwgdG1wZGlyLCBtb25rZXlwYXRj
aCk6Ci0gICAgICAgICIiInRlc3QgdGhhdCBzdHIgdmFsdWVzIHBhc3NlZCB0byBtYWluKCkgYXMg
YHBsdWdpbnNgIGFyZwotICAgICAgICBhcmUgaW50ZXJwcmV0ZWQgYXMgbW9kdWxlIG5hbWVzIHRv
IGJlIGltcG9ydGVkIGFuZCByZWdpc3RlcmVkLgotICAgICAgICAjODU1LgotICAgICAgICAiIiIK
KyAgICBkZWYgdGVzdF9wbHVnaW5zX2dpdmVuX2FzX3N0cmluZ3Moc2VsZiwgdG1wZGlyLCBtb25r
ZXlwYXRjaCwgX3N5c19zbmFwc2hvdCk6CisgICAgICAgICIiIlRlc3QgdGhhdCBzdHIgdmFsdWVz
IHBhc3NlZCB0byBtYWluKCkgYXMgYHBsdWdpbnNgIGFyZyBhcmUKKyAgICAgICAgaW50ZXJwcmV0
ZWQgYXMgbW9kdWxlIG5hbWVzIHRvIGJlIGltcG9ydGVkIGFuZCByZWdpc3RlcmVkICgjODU1KS4i
IiIKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGNpbmZvOgog
ICAgICAgICAgICAgcHl0ZXN0Lm1haW4oW3N0cih0bXBkaXIpXSwgcGx1Z2lucz1bImludmFsaWQu
bW9kdWxlIl0pCiAgICAgICAgIGFzc2VydCAiaW52YWxpZCIgaW4gc3RyKGV4Y2luZm8udmFsdWUp
CkBAIC00NDQsMjEgKzQ4MSwxOSBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAg
ICAgZGVmIHRlc3RfcGFyYW1ldHJpemVkX3dpdGhfbnVsbF9ieXRlcyhzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgIiIiVGVzdCBwYXJhbWV0cml6YXRpb24gd2l0aCB2YWx1ZXMgdGhhdCBjb250YWlu
IG51bGwgYnl0ZXMgYW5kIHVuaWNvZGUgY2hhcmFjdGVycyAoIzI2NDQsICMyOTU3KSIiIgogICAg
ICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgdSIiIgotICAgICAgICAg
ICAgIyBlbmNvZGluZzogVVRGLTgKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGltcG9y
dCBweXRlc3QKIAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJkYXRhIiwg
W2IiXFx4MDAiLCAiXFx4MDAiLCB1J2HDp8OjbyddKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJkYXRhIiwgW2IiXFx4MDAiLCAiXFx4MDAiLCAnYcOnw6NvJ10pCiAgICAg
ICAgICAgICBkZWYgdGVzdF9mb28oZGF0YSk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IGRhdGEK
LSAgICAgICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXMgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICByZXMuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0z
KQogCiAKLWNsYXNzIFRlc3RJbnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKLQorY2xhc3MgVGVz
dEludm9jYXRpb25WYXJpYW50czoKICAgICBkZWYgdGVzdF9lYXJseWluaXQoc2VsZiwgdGVzdGRp
cik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAg
LTQ2OSwxMCArNTA0LDkgQEAgY2xhc3MgVGVzdEludm9jYXRpb25WYXJpYW50cyhvYmplY3QpOgog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGhvbihwKQogICAgICAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAwCiAKLSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoInN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCdqYXZhJykiKQogICAgIGRlZiB0ZXN0X3B5ZG9jKHNlbGYsIHRlc3RkaXIpOgogICAg
ICAgICBmb3IgbmFtZSBpbiAoInB5LnRlc3QiLCAicHl0ZXN0Iik6Ci0gICAgICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGhvbl9jKCJpbXBvcnQgJXM7aGVscCglcykiICUgKG5hbWUsIG5h
bWUpKQorICAgICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRob25fYygiaW1wb3J0IHt9
O2hlbHAoe30pIi5mb3JtYXQobmFtZSwgbmFtZSkpCiAgICAgICAgICAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSAwCiAgICAgICAgICAgICBzID0gcmVzdWx0LnN0ZG91dC5zdHIoKQogICAgICAgICAg
ICAgYXNzZXJ0ICJNYXJrR2VuZXJhdG9yIiBpbiBzCkBAIC01NDEsMjUgKzU3NSwyMyBAQCBjbGFz
cyBUZXN0SW52b2NhdGlvblZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXMucmV0
ID09IDAKICAgICAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQog
Ci0gICAgZGVmIHRlc3RfZXF1aXZhbGVuY2VfcHl0ZXN0X3B5dGVzdChzZWxmKToKLSAgICAgICAg
YXNzZXJ0IHB5dGVzdC5tYWluID09IHB5LnRlc3QuY21kbGluZS5tYWluCisgICAgZGVmIHRlc3Rf
ZXF1aXZhbGVuY2VfcHl0ZXN0X3B5ZG90dGVzdChzZWxmKSAtPiBOb25lOgorICAgICAgICAjIFR5
cGUgaWdub3JlZCBiZWNhdXNlIGBweS50ZXN0YCBpcyBub3QgYW5kIHdpbGwgbm90IGJlIHR5cGVk
LgorICAgICAgICBhc3NlcnQgcHl0ZXN0Lm1haW4gPT0gcHkudGVzdC5jbWRsaW5lLm1haW4gICMg
dHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KIAotICAgIGRlZiB0ZXN0X2ludm9rZV93aXRoX3N0
cmluZyhzZWxmLCBjYXBzeXMpOgotICAgICAgICByZXRjb2RlID0gcHl0ZXN0Lm1haW4oIi1oIikK
LSAgICAgICAgYXNzZXJ0IG5vdCByZXRjb2RlCi0gICAgICAgIG91dCwgZXJyID0gY2Fwc3lzLnJl
YWRvdXRlcnIoKQotICAgICAgICBhc3NlcnQgIi0taGVscCIgaW4gb3V0Ci0gICAgICAgIHB5dGVz
dC5yYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBweXRlc3QubWFpbigwKSkKKyAgICBkZWYgdGVz
dF9pbnZva2Vfd2l0aF9pbnZhbGlkX3R5cGUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLCBtYXRjaD0iZXhwZWN0ZWQgdG8g
YmUgYSBsaXN0IG9mIHN0cmluZ3MsIGdvdDogJy1oJyIKKyAgICAgICAgKToKKyAgICAgICAgICAg
IHB5dGVzdC5tYWluKCItaCIpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KIAotICAgIGRlZiB0
ZXN0X2ludm9rZV93aXRoX3BhdGgoc2VsZiwgdG1wZGlyLCBjYXBzeXMpOgorICAgIGRlZiB0ZXN0
X2ludm9rZV93aXRoX3BhdGgoc2VsZiwgdG1wZGlyOiBweS5wYXRoLmxvY2FsLCBjYXBzeXMpIC0+
IE5vbmU6CiAgICAgICAgIHJldGNvZGUgPSBweXRlc3QubWFpbih0bXBkaXIpCi0gICAgICAgIGFz
c2VydCByZXRjb2RlID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAgICBhc3NlcnQgcmV0
Y29kZSA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKICAgICAgICAgb3V0LCBlcnIgPSBj
YXBzeXMucmVhZG91dGVycigpCiAKLSAgICBkZWYgdGVzdF9pbnZva2VfcGx1Z2luX2FwaShzZWxm
LCB0ZXN0ZGlyLCBjYXBzeXMpOgotCi0gICAgICAgIGNsYXNzIE15UGx1Z2luKG9iamVjdCk6Ci0K
KyAgICBkZWYgdGVzdF9pbnZva2VfcGx1Z2luX2FwaShzZWxmLCBjYXBzeXMpOgorICAgICAgICBj
bGFzcyBNeVBsdWdpbjoKICAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHNlbGYsIHBh
cnNlcik6CiAgICAgICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1teW9wdCIpCiAKQEAg
LTU3NSw3ICs2MDcsMjYgQEAgY2xhc3MgVGVzdEludm9jYXRpb25WYXJpYW50cyhvYmplY3QpOgog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1weWFyZ3MiLCAidHBrZy50ZXN0
X2hlbGxvIiwgc3lzcGF0aGluc2VydD1UcnVlKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAh
PSAwCiAKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiY29sbGVjdGVkKjAq
aXRlbXMqLyoxKmVycm9ycyJdKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyJjb2xsZWN0ZWQqMCppdGVtcyovKjEqZXJyb3IiXSkKKworICAgIGRlZiB0ZXN0X3B5YXJnc19v
bmx5X2ltcG9ydGVkX29uY2Uoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHBrZyA9IHRlc3RkaXIu
bWtweWRpcigiZm9vIikKKyAgICAgICAgcGtnLmpvaW4oInRlc3RfZm9vLnB5Iikud3JpdGUoInBy
aW50KCdoZWxsbyBmcm9tIHRlc3RfZm9vJylcbmRlZiB0ZXN0KCk6IHBhc3MiKQorICAgICAgICBw
a2cuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKKyAgICAgICAgICAgICJkZWYgcHl0ZXN0X2Nv
bmZpZ3VyZShjb25maWcpOiBwcmludCgnY29uZmlndXJpbmcnKSIKKyAgICAgICAgKQorCisgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXB5YXJncyIsICJmb28udGVzdF9mb28i
LCAiLXMiLCBzeXNwYXRoaW5zZXJ0PVRydWUpCisgICAgICAgICMgc2hvdWxkIG9ubHkgaW1wb3J0
IG9uY2UKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5vdXRsaW5lcy5jb3VudCgiaGVsbG8gZnJvbSB0
ZXN0X2ZvbyIpID09IDEKKyAgICAgICAgIyBzaG91bGQgb25seSBjb25maWd1cmUgb25jZQorICAg
ICAgICBhc3NlcnQgcmVzdWx0Lm91dGxpbmVzLmNvdW50KCJjb25maWd1cmluZyIpID09IDEKKwor
ICAgIGRlZiB0ZXN0X3B5YXJnc19maWxlbmFtZV9sb29rc19saWtlX21vZHVsZShzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigiY29uZnRlc3QucHkiKS5lbnN1cmUo
KQorICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0LnB5Iikud3JpdGUoImRlZiB0ZXN0KCk6
IHBhc3MiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1weWFyZ3MiLCAi
dC5weSIpCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk9LCiAKICAgICBk
ZWYgdGVzdF9jbWRsaW5lX3B5dGhvbl9wYWNrYWdlKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNo
KToKICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCkBAIC01OTEsMTQgKzY0Miw4IEBAIGNsYXNzIFRl
c3RJbnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gMAogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0p
CiAKLSAgICAgICAgZGVmIGpvaW5fcHl0aG9ucGF0aCh3aGF0KToKLSAgICAgICAgICAgIGN1ciA9
IG9zLmVudmlyb24uZ2V0KCJQWVRIT05QQVRIIikKLSAgICAgICAgICAgIGlmIGN1cjoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RyKHdoYXQpICsgb3MucGF0aHNlcCArIGN1cgotICAgICAgICAg
ICAgcmV0dXJuIHdoYXQKLQogICAgICAgICBlbXB0eV9wYWNrYWdlID0gdGVzdGRpci5ta3B5ZGly
KCJlbXB0eV9wYWNrYWdlIikKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05QQVRI
Iiwgam9pbl9weXRob25wYXRoKGVtcHR5X3BhY2thZ2UpKQorICAgICAgICBtb25rZXlwYXRjaC5z
ZXRlbnYoIlBZVEhPTlBBVEgiLCBzdHIoZW1wdHlfcGFja2FnZSksIHByZXBlbmQ9b3MucGF0aHNl
cCkKICAgICAgICAgIyB0aGUgcGF0aCB3aGljaCBpcyBub3QgYSBwYWNrYWdlIHJhaXNlcyBhIHdh
cm5pbmcgb24gcHlweTsKICAgICAgICAgIyBubyBpZGVhIHdoeSBvbmx5IHB5cHkgYW5kIG5vdCBu
b3JtYWwgcHl0aG9uIHdhcm4gYWJvdXQgaXQgaGVyZQogICAgICAgICB3aXRoIHdhcm5pbmdzLmNh
dGNoX3dhcm5pbmdzKCk6CkBAIC02MDcsMTQgKzY1MiwxNSBAQCBjbGFzcyBUZXN0SW52b2NhdGlv
blZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkKiJdKQogCi0gICAgICAg
IG1vbmtleXBhdGNoLnNldGVudigiUFlUSE9OUEFUSCIsIGpvaW5fcHl0aG9ucGF0aCh0ZXN0ZGly
KSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05QQVRIIiwgc3RyKHRlc3RkaXIp
LCBwcmVwZW5kPW9zLnBhdGhzZXApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLXB5YXJncyIsICJ0cGtnLnRlc3RfbWlzc2luZyIsIHN5c3BhdGhpbnNlcnQ9VHJ1ZSkKICAg
ICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMAogICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0
Y2hfbGluZXMoWyIqbm90KmZvdW5kKnRlc3RfbWlzc2luZyoiXSkKIAogICAgIGRlZiB0ZXN0X2Nt
ZGxpbmVfcHl0aG9uX25hbWVzcGFjZV9wYWNrYWdlKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNo
KToKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3QgLS1weWFyZ3Mgb3B0aW9uIHdpdGggbmFtZXNw
YWNlIHBhY2thZ2VzICgjMTU2NykKKyAgICAgICAgIiIiVGVzdCAtLXB5YXJncyBvcHRpb24gd2l0
aCBuYW1lc3BhY2UgcGFja2FnZXMgKCMxNTY3KS4KKworICAgICAgICBSZWY6IGh0dHBzOi8vcGFj
a2FnaW5nLnB5dGhvbi5vcmcvZ3VpZGVzL3BhY2thZ2luZy1uYW1lc3BhY2UtcGFja2FnZXMvCiAg
ICAgICAgICIiIgogICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEhPTkRPTlRXUklURUJZ
VEVDT0RFIiwgcmFpc2luZz1GYWxzZSkKIApAQCAtNjI5LDcgKzY3NSw3IEBAIGNsYXNzIFRlc3RJ
bnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKICAgICAgICAgICAgIGxpYiA9IG5zLm1rZGlyKGRp
cm5hbWUpCiAgICAgICAgICAgICBsaWIuZW5zdXJlKCJfX2luaXRfXy5weSIpCiAgICAgICAgICAg
ICBsaWIuam9pbigidGVzdF97fS5weSIuZm9ybWF0KGRpcm5hbWUpKS53cml0ZSgKLSAgICAgICAg
ICAgICAgICAiZGVmIHRlc3Rfe30oKTogcGFzc1xuIiAiZGVmIHRlc3Rfb3RoZXIoKTpwYXNzIi5m
b3JtYXQoZGlybmFtZSkKKyAgICAgICAgICAgICAgICAiZGVmIHRlc3Rfe30oKTogcGFzc1xuZGVm
IHRlc3Rfb3RoZXIoKTpwYXNzIi5mb3JtYXQoZGlybmFtZSkKICAgICAgICAgICAgICkKIAogICAg
ICAgICAjIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3QgZGlyZWN0b3J5IGlzIG5vdzoKQEAgLTY0
NywyNyArNjkzLDIyIEBAIGNsYXNzIFRlc3RJbnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKICAg
ICAgICAgIyAgICAgICAgICAgICDilJzilIDilIAgX19pbml0X18ucHkKICAgICAgICAgIyAgICAg
ICAgICAgICDilJTilIDilIAgdGVzdF93b3JsZC5weQogCi0gICAgICAgIGRlZiBqb2luX3B5dGhv
bnBhdGgoKmRpcnMpOgotICAgICAgICAgICAgY3VyID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTlBB
VEgiKQotICAgICAgICAgICAgaWYgY3VyOgotICAgICAgICAgICAgICAgIGRpcnMgKz0gKGN1ciwp
Ci0gICAgICAgICAgICByZXR1cm4gb3MucGF0aHNlcC5qb2luKHN0cihwKSBmb3IgcCBpbiBkaXJz
KQotCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlUSE9OUEFUSCIsIGpvaW5fcHl0aG9u
cGF0aCgqc2VhcmNoX3BhdGgpKQorICAgICAgICAjIE5PVEU6IHRoZSBkaWZmZXJlbnQvcmV2ZXJz
ZWQgb3JkZXJpbmcgaXMgaW50ZW50aW9uYWwgaGVyZS4KKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0
ZW52KCJQWVRIT05QQVRIIiwgcHJlcGVuZF9weXRob25wYXRoKCpzZWFyY2hfcGF0aCkpCiAgICAg
ICAgIGZvciBwIGluIHNlYXJjaF9wYXRoOgogICAgICAgICAgICAgbW9ua2V5cGF0Y2guc3lzcGF0
aF9wcmVwZW5kKHApCiAKICAgICAgICAgIyBtaXhlZCBtb2R1bGUgYW5kIGZpbGVuYW1lczoKLSAg
ICAgICAgb3MuY2hkaXIoIndvcmxkIikKKyAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIoIndvcmxk
IikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tcHlhcmdzIiwgIi12Iiwg
Im5zX3BrZy5oZWxsbyIsICJuc19wa2cvd29ybGQiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAiKnRlc3RfaGVsbG8ucHk6OnRlc3RfaGVsbG8qUEFTU0VEKiIs
Ci0gICAgICAgICAgICAgICAgIip0ZXN0X2hlbGxvLnB5Ojp0ZXN0X290aGVyKlBBU1NFRCoiLAot
ICAgICAgICAgICAgICAgICIqdGVzdF93b3JsZC5weTo6dGVzdF93b3JsZCpQQVNTRUQqIiwKLSAg
ICAgICAgICAgICAgICAiKnRlc3Rfd29ybGQucHk6OnRlc3Rfb3RoZXIqUEFTU0VEKiIsCi0gICAg
ICAgICAgICAgICAgIio0IHBhc3NlZCoiLAorICAgICAgICAgICAgICAgICJ0ZXN0X2hlbGxvLnB5
Ojp0ZXN0X2hlbGxvKlBBU1NFRCoiLAorICAgICAgICAgICAgICAgICJ0ZXN0X2hlbGxvLnB5Ojp0
ZXN0X290aGVyKlBBU1NFRCoiLAorICAgICAgICAgICAgICAgICJuc19wa2cvd29ybGQvdGVzdF93
b3JsZC5weTo6dGVzdF93b3JsZCpQQVNTRUQqIiwKKyAgICAgICAgICAgICAgICAibnNfcGtnL3dv
cmxkL3Rlc3Rfd29ybGQucHk6OnRlc3Rfb3RoZXIqUEFTU0VEKiIsCisgICAgICAgICAgICAgICAg
Iio0IHBhc3NlZCBpbioiLAogICAgICAgICAgICAgXQogICAgICAgICApCiAKQEAgLTY4MSwyNiAr
NzIyLDIzIEBAIGNsYXNzIFRlc3RJbnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKICAgICAgICAg
ICAgIFsiKnRlc3Rfd29ybGQucHk6OnRlc3Rfb3RoZXIqUEFTU0VEKiIsICIqMSBwYXNzZWQqIl0K
ICAgICAgICAgKQogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZihub3QgaGFzYXR0cihvcywgInN5
bWxpbmsiKSwgcmVhc29uPSJyZXF1aXJlcyBzeW1saW5rcyIpCisgICAgZGVmIHRlc3RfaW52b2tl
X3Rlc3RfYW5kX2RvY3Rlc3Rtb2R1bGVzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwID0gdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdCgp
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3RyKHApICsgIjo6dGVzdCIsICItLWRvY3Rlc3Qt
bW9kdWxlcyIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3Nl
ZCoiXSkKKwogICAgIGRlZiB0ZXN0X2NtZGxpbmVfcHl0aG9uX3BhY2thZ2Vfc3ltbGluayhzZWxm
LCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgICAgICIiIgotICAgICAgICB0ZXN0IC0tcHlh
cmdzIG9wdGlvbiB3aXRoIHBhY2thZ2VzIHdpdGggcGF0aCBjb250YWluaW5nIHN5bWxpbmsgY2Fu
Ci0gICAgICAgIGhhdmUgY29uZnRlc3QucHkgaW4gdGhlaXIgcGFja2FnZSAoIzI5ODUpCisgICAg
ICAgIC0tcHlhcmdzIHdpdGggcGFja2FnZXMgd2l0aCBwYXRoIGNvbnRhaW5pbmcgc3ltbGluayBj
YW4gaGF2ZSBjb25mdGVzdC5weSBpbgorICAgICAgICB0aGVpciBwYWNrYWdlICgjMjk4NSkKICAg
ICAgICAgIiIiCi0gICAgICAgICMgZHVtbXkgY2hlY2sgdGhhdCB3ZSBjYW4gYWN0dWFsbHkgY3Jl
YXRlIHN5bWxpbmtzOiBvbiBXaW5kb3dzIGBvcy5zeW1saW5rYCBpcyBhdmFpbGFibGUsCi0gICAg
ICAgICMgYnV0IG5vcm1hbCB1c2VycyByZXF1aXJlIHNwZWNpYWwgYWRtaW4gcHJpdmlsZWdlcyB0
byBjcmVhdGUgc3ltbGlua3MuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoCi0gICAgICAgICAg
ICAgICAgICAgIHN0cih0ZXN0ZGlyLnRtcGRpci5lbnN1cmUoInRtcGZpbGUiKSksCi0gICAgICAg
ICAgICAgICAgICAgIHN0cih0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0bXBmaWxlMiIpKSwKLSAgICAg
ICAgICAgICAgICApCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAg
ICAgICAgIHB5dGVzdC5za2lwKHNpeC50ZXh0X3R5cGUoZS5hcmdzWzBdKSkKICAgICAgICAgbW9u
a2V5cGF0Y2guZGVsZW52KCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIsIHJhaXNpbmc9RmFsc2Up
CiAKLSAgICAgICAgc2VhcmNoX3BhdGggPSBbImxpYiIsIG9zLnBhdGguam9pbigibG9jYWwiLCAi
bGliIildCi0KICAgICAgICAgZGlybmFtZSA9ICJsaWIiCiAgICAgICAgIGQgPSB0ZXN0ZGlyLm1r
ZGlyKGRpcm5hbWUpCiAgICAgICAgIGZvbyA9IGQubWtkaXIoImZvbyIpCkBAIC03MDgsMjIgKzc0
NiwxOSBAQCBjbGFzcyBUZXN0SW52b2NhdGlvblZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAgIGxp
YiA9IGZvby5ta2RpcigiYmFyIikKICAgICAgICAgbGliLmVuc3VyZSgiX19pbml0X18ucHkiKQog
ICAgICAgICBsaWIuam9pbigidGVzdF9iYXIucHkiKS53cml0ZSgKLSAgICAgICAgICAgICJkZWYg
dGVzdF9iYXIoKTogcGFzc1xuIiAiZGVmIHRlc3Rfb3RoZXIoYV9maXh0dXJlKTpwYXNzIgorICAg
ICAgICAgICAgImRlZiB0ZXN0X2JhcigpOiBwYXNzXG5kZWYgdGVzdF9vdGhlcihhX2ZpeHR1cmUp
OnBhc3MiCiAgICAgICAgICkKICAgICAgICAgbGliLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUo
Ci0gICAgICAgICAgICAiaW1wb3J0IHB5dGVzdFxuIiAiQHB5dGVzdC5maXh0dXJlXG4iICJkZWYg
YV9maXh0dXJlKCk6cGFzcyIKKyAgICAgICAgICAgICJpbXBvcnQgcHl0ZXN0XG5AcHl0ZXN0LmZp
eHR1cmVcbmRlZiBhX2ZpeHR1cmUoKTpwYXNzIgogICAgICAgICApCiAKLSAgICAgICAgZF9sb2Nh
bCA9IHRlc3RkaXIubWtkaXIoImxvY2FsIikKLSAgICAgICAgc3ltbGlua19sb2NhdGlvbiA9IG9z
LnBhdGguam9pbihzdHIoZF9sb2NhbCksICJsaWIiKQotICAgICAgICBpZiBzaXguUFkyOgotICAg
ICAgICAgICAgb3Muc3ltbGluayhzdHIoZCksIHN5bWxpbmtfbG9jYXRpb24pCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBvcy5zeW1saW5rKHN0cihkKSwgc3ltbGlua19sb2NhdGlvbiwgdGFy
Z2V0X2lzX2RpcmVjdG9yeT1UcnVlKQorICAgICAgICBkX2xvY2FsID0gdGVzdGRpci5ta2Rpcigi
c3ltbGlua19yb290IikKKyAgICAgICAgc3ltbGlua19sb2NhdGlvbiA9IGRfbG9jYWwgLyAibGli
IgorICAgICAgICBzeW1saW5rX29yX3NraXAoZCwgc3ltbGlua19sb2NhdGlvbiwgdGFyZ2V0X2lz
X2RpcmVjdG9yeT1UcnVlKQogCiAgICAgICAgICMgVGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdCBk
aXJlY3RvcnkgaXMgbm93OgogICAgICAgICAjIC4KLSAgICAgICAgIyDilJzilIDilIAgbG9jYWwK
KyAgICAgICAgIyDilJzilIDilIAgc3ltbGlua19yb290CiAgICAgICAgICMg4pSCICAg4pSU4pSA
4pSAIGxpYiAtPiAuLi9saWIKICAgICAgICAgIyDilJTilIDilIAgbGliCiAgICAgICAgICMgICAg
IOKUlOKUgOKUgCBmb28KQEAgLTczMywyNCArNzY4LDIxIEBAIGNsYXNzIFRlc3RJbnZvY2F0aW9u
VmFyaWFudHMob2JqZWN0KToKICAgICAgICAgIyAgICAgICAgICAgICDilJzilIDilIAgY29uZnRl
c3QucHkKICAgICAgICAgIyAgICAgICAgICAgICDilJTilIDilIAgdGVzdF9iYXIucHkKIAotICAg
ICAgICBkZWYgam9pbl9weXRob25wYXRoKCpkaXJzKToKLSAgICAgICAgICAgIGN1ciA9IG9zLmdl
dGVudigiUFlUSE9OUEFUSCIpCi0gICAgICAgICAgICBpZiBjdXI6Ci0gICAgICAgICAgICAgICAg
ZGlycyArPSAoY3VyLCkKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRoc2VwLmpvaW4oc3RyKHAp
IGZvciBwIGluIGRpcnMpCi0KLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05QQVRI
Iiwgam9pbl9weXRob25wYXRoKCpzZWFyY2hfcGF0aCkpCisgICAgICAgICMgTk9URTogdGhlIGRp
ZmZlcmVudC9yZXZlcnNlZCBvcmRlcmluZyBpcyBpbnRlbnRpb25hbCBoZXJlLgorICAgICAgICBz
ZWFyY2hfcGF0aCA9IFsibGliIiwgb3MucGF0aC5qb2luKCJzeW1saW5rX3Jvb3QiLCAibGliIild
CisgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlUSE9OUEFUSCIsIHByZXBlbmRfcHl0aG9u
cGF0aCgqc2VhcmNoX3BhdGgpKQogICAgICAgICBmb3IgcCBpbiBzZWFyY2hfcGF0aDoKICAgICAg
ICAgICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZChwKQogCiAgICAgICAgICMgbW9kdWxl
IHBpY2tlZCB1cCBpbiBzeW1saW5rLWVkIGRpcmVjdG9yeToKKyAgICAgICAgIyBJdCBwaWNrcyB1
cCBzeW1saW5rX3Jvb3QvbGliL2Zvby9iYXIgKHN5bWxpbmspIHZpYSBzeXMucGF0aC4KICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tcHlhcmdzIiwgIi12IiwgImZvby5iYXIi
KQogICAgICAgICB0ZXN0ZGlyLmNoZGlyKCkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
MAogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgIipsaWIvZm9vL2Jhci90ZXN0X2Jhci5weTo6dGVzdF9iYXIqUEFTU0VE
KiIsCi0gICAgICAgICAgICAgICAgIipsaWIvZm9vL2Jhci90ZXN0X2Jhci5weTo6dGVzdF9vdGhl
cipQQVNTRUQqIiwKKyAgICAgICAgICAgICAgICAic3ltbGlua19yb290L2xpYi9mb28vYmFyL3Rl
c3RfYmFyLnB5Ojp0ZXN0X2JhciBQQVNTRUQqIiwKKyAgICAgICAgICAgICAgICAic3ltbGlua19y
b290L2xpYi9mb28vYmFyL3Rlc3RfYmFyLnB5Ojp0ZXN0X290aGVyIFBBU1NFRCoiLAogICAgICAg
ICAgICAgICAgICIqMiBwYXNzZWQqIiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQpAQCAtNzU4
LDcgKzc5MCw3IEBAIGNsYXNzIFRlc3RJbnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKICAgICBk
ZWYgdGVzdF9jbWRsaW5lX3B5dGhvbl9wYWNrYWdlX25vdF9leGlzdHMoc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXB5YXJncyIsICJ0cGtnd2hh
dHYiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldAotICAgICAgICByZXN1bHQuc3RkZXJyLmZu
bWF0Y2hfbGluZXMoWyJFUlJPUipmaWxlKm9yKnBhY2thZ2Uqbm90KmZvdW5kKiJdKQorICAgICAg
ICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyJFUlJPUiptb2R1bGUqb3IqcGFja2FnZSpu
b3QqZm91bmQqIl0pCiAKICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJkZWNpZGU6IGZl
YXR1cmUgb3IgYnVnIikKICAgICBkZWYgdGVzdF9ub2NsYXNzX2Rpc2NvdmVyeV9pZl9ub3RfdGVz
dGNhc2Uoc2VsZiwgdGVzdGRpcik6CkBAIC03ODUsMTEzICs4MTcsMTQ1IEBAIGNsYXNzIFRlc3RJ
bnZvY2F0aW9uVmFyaWFudHMob2JqZWN0KToKICAgICAgICAgICAgIDQKICAgICAgICAgIiIiLAog
ICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcmYiKQotICAg
ICAgICBsaW5lcyA9IHJlc3VsdC5zdGRvdXQuc3RyKCkuc3BsaXRsaW5lcygpCi0gICAgICAgIGZv
ciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJGQUlMICIp
OgotICAgICAgICAgICAgICAgIHRlc3RpZCA9IGxpbmVbNTpdLnN0cmlwKCkKLSAgICAgICAgICAg
ICAgICBicmVhawotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCh0ZXN0aWQsICIt
cmYiKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoW2xpbmUsICIqMSBmYWls
ZWQqIl0pCisgICAgICAgIHRlc3RpZCA9ICJ0ZXN0X2RvY3Rlc3RfaWQudHh0Ojp0ZXN0X2RvY3Rl
c3RfaWQudHh0IgorICAgICAgICBleHBlY3RlZF9saW5lcyA9IFsKKyAgICAgICAgICAgICIqPSBG
QUlMVVJFUyA9KiIsCisgICAgICAgICAgICAiKl8gP2RvY3Rlc3Q/IHRlc3RfZG9jdGVzdF9pZC50
eHQgXyoiLAorICAgICAgICAgICAgIkZBSUxFRCB0ZXN0X2RvY3Rlc3RfaWQudHh0Ojp0ZXN0X2Rv
Y3Rlc3RfaWQudHh0IiwKKyAgICAgICAgICAgICIqPSAxIGZhaWxlZCBpbioiLAorICAgICAgICBd
CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHRlc3RpZCwgIi1yZiIsICItLXRi
PXNob3J0IikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKGV4cGVjdGVkX2xp
bmVzKQorCisgICAgICAgICMgRW5zdXJlIHRoYXQgcmUtcnVubmluZyBpdCB3aWxsIHN0aWxsIGhh
bmRsZSBpdCBhcworICAgICAgICAjIGRvY3Rlc3QuRG9jVGVzdEZhaWx1cmUsIHdoaWNoIHdhcyBu
b3QgdGhlIGNhc2UgYmVmb3JlIHdoZW4KKyAgICAgICAgIyByZS1pbXBvcnRpbmcgZG9jdGVzdCwg
YnV0IG5vdCBjcmVhdGluZyBhIG5ldyBSVU5ORVJfQ0xBU1MuCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHRlc3RpZCwgIi1yZiIsICItLXRiPXNob3J0IikKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKGV4cGVjdGVkX2xpbmVzKQogCiAgICAgZGVmIHRlc3Rf
Y29yZV9iYWNrd2FyZF9jb21wYXRpYmlsaXR5KHNlbGYpOgogICAgICAgICAiIiJUZXN0IGJhY2t3
YXJkIGNvbXBhdGliaWxpdHkgZm9yIGdldF9wbHVnaW5fbWFuYWdlciBmdW5jdGlvbi4gU2VlICM3
ODcuIiIiCiAgICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwogCi0gICAgICAgIGFzc2VydCB0
eXBlKAotICAgICAgICAgICAgX3B5dGVzdC5jb25maWcuZ2V0X3BsdWdpbl9tYW5hZ2VyKCkKLSAg
ICAgICAgKSBpcyBfcHl0ZXN0LmNvbmZpZy5QeXRlc3RQbHVnaW5NYW5hZ2VyCisgICAgICAgIGFz
c2VydCAoCisgICAgICAgICAgICB0eXBlKF9weXRlc3QuY29uZmlnLmdldF9wbHVnaW5fbWFuYWdl
cigpKQorICAgICAgICAgICAgaXMgX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlcgor
ICAgICAgICApCiAKICAgICBkZWYgdGVzdF9oYXNfcGx1Z2luKHNlbGYsIHJlcXVlc3QpOgogICAg
ICAgICAiIiJUZXN0IGhhc3BsdWdpbiBmdW5jdGlvbiBvZiB0aGUgcGx1Z2luIG1hbmFnZXIgKCM5
MzIpLiIiIgogICAgICAgICBhc3NlcnQgcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5oYXNw
bHVnaW4oInB5dGhvbiIpCiAKIAotY2xhc3MgVGVzdER1cmF0aW9ucyhvYmplY3QpOgorY2xhc3Mg
VGVzdER1cmF0aW9uczoKICAgICBzb3VyY2UgPSAiIiIKLSAgICAgICAgaW1wb3J0IHRpbWUKLSAg
ICAgICAgZnJhZyA9IDAuMDAyCisgICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgdGltaW5nCiAg
ICAgICAgIGRlZiB0ZXN0X3NvbWV0aGluZygpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBk
ZWYgdGVzdF8yKCk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKGZyYWcqNSkKKyAgICAgICAgICAg
IHRpbWluZy5zbGVlcCgwLjAxMCkKICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAg
dGltZS5zbGVlcChmcmFnKQorICAgICAgICAgICAgdGltaW5nLnNsZWVwKDAuMDAyKQogICAgICAg
ICBkZWYgdGVzdF8zKCk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKGZyYWcqMTApCisgICAgICAg
ICAgICB0aW1pbmcuc2xlZXAoMC4wMjApCiAgICAgIiIiCiAKLSAgICBkZWYgdGVzdF9jYWxscyhz
ZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9jYWxscyhzZWxmLCB0ZXN0ZGlyLCBtb2NrX3Rp
bWluZyk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZShzZWxmLnNvdXJjZSkKLSAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZHVyYXRpb25zPTEwIikKKyAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLWR1cmF0aW9ucz0xMCIpCiAgICAg
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKwogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXNfcmFuZG9tKAotICAgICAgICAgICAgWyIqZHVyYXRpb25zKiIsICIqY2FsbCp0ZXN0
XzMqIiwgIipjYWxsKnRlc3RfMioiLCAiKmNhbGwqdGVzdF8xKiJdCisgICAgICAgICAgICBbIipk
dXJhdGlvbnMqIiwgIipjYWxsKnRlc3RfMyoiLCAiKmNhbGwqdGVzdF8yKiJdCisgICAgICAgICkK
KworICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbIig4
IGR1cmF0aW9ucyA8IDAuMDA1cyBoaWRkZW4uICBVc2UgLXZ2IHRvIHNob3cgdGhlc2UgZHVyYXRp
b25zLikiXQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9jYWxsc19zaG93XzIoc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIHRlc3RfY2FsbHNfc2hvd18yKHNlbGYsIHRlc3RkaXIsIG1vY2tfdGlt
aW5nKToKKwogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoc2VsZi5zb3VyY2UpCi0gICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWR1cmF0aW9ucz0yIikKKyAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLWR1cmF0aW9ucz0yIikKICAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCiAgICAgICAgIGxpbmVzID0gcmVzdWx0LnN0ZG91
dC5nZXRfbGluZXNfYWZ0ZXIoIipzbG93ZXN0KmR1cmF0aW9ucyoiKQogICAgICAgICBhc3NlcnQg
IjQgcGFzc2VkIiBpbiBsaW5lc1syXQogCi0gICAgZGVmIHRlc3RfY2FsbHNfc2hvd2FsbChzZWxm
LCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9jYWxsc19zaG93YWxsKHNlbGYsIHRlc3RkaXIsIG1v
Y2tfdGltaW5nKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKHNlbGYuc291cmNlKQorICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tZHVyYXRpb25zPTAi
KQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKyAgICAgICAgdGVzdGVkID0gIjMi
CisgICAgICAgIGZvciB4IGluIHRlc3RlZDoKKyAgICAgICAgICAgIGZvciB5IGluICgiY2FsbCIs
KTogICMgJ3NldHVwJywgJ2NhbGwnLCAndGVhcmRvd24nOgorICAgICAgICAgICAgICAgIGZvciBs
aW5lIGluIHJlc3VsdC5zdGRvdXQubGluZXM6CisgICAgICAgICAgICAgICAgICAgIGlmICgidGVz
dF8lcyIgJSB4KSBpbiBsaW5lIGFuZCB5IGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNl
IEFzc2VydGlvbkVycm9yKCJub3QgZm91bmQge30ge30iLmZvcm1hdCh4LCB5KSkKKworICAgIGRl
ZiB0ZXN0X2NhbGxzX3Nob3dhbGxfdmVyYm9zZShzZWxmLCB0ZXN0ZGlyLCBtb2NrX3RpbWluZyk6
CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZShzZWxmLnNvdXJjZSkKLSAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZHVyYXRpb25zPTAiKQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tZHVyYXRpb25zPTAiLCAiLXZ2IikKICAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCiAgICAgICAgIGZvciB4IGluICIxMjMiOgogICAg
ICAgICAgICAgZm9yIHkgaW4gKCJjYWxsIiwpOiAgIyAnc2V0dXAnLCAnY2FsbCcsICd0ZWFyZG93
bic6CiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0LnN0ZG91dC5saW5lczoKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCJ0ZXN0XyVzIiAlIHgpIGluIGxpbmUgYW5kIHkgaW4gbGlu
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIm5vdCBmb3VuZCAlcyAl
cyIgJSAoeCwgeSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJu
b3QgZm91bmQge30ge30iLmZvcm1hdCh4LCB5KSkKIAotICAgIGRlZiB0ZXN0X3dpdGhfZGVzZWxl
Y3RlZChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF93aXRoX2Rlc2VsZWN0ZWQoc2VsZiwg
dGVzdGRpciwgbW9ja190aW1pbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoc2VsZi5z
b3VyY2UpCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWR1cmF0aW9ucz0y
IiwgIi1rIHRlc3RfMSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJv
Y2VzcygiLS1kdXJhdGlvbnM9MiIsICItayB0ZXN0XzMiKQogICAgICAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSAwCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipkdXJhdGlv
bnMqIiwgIipjYWxsKnRlc3RfMSoiXSkKIAotICAgIGRlZiB0ZXN0X3dpdGhfZmFpbGluZ19jb2xs
ZWN0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqZHVyYXRpb25zKiIsICIqY2FsbCp0ZXN0XzMqIl0pCisKKyAgICBkZWYgdGVzdF93aXRo
X2ZhaWxpbmdfY29sbGVjdGlvbihzZWxmLCB0ZXN0ZGlyLCBtb2NrX3RpbWluZyk6CiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZShzZWxmLnNvdXJjZSkKICAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKHRlc3RfY29sbGVjdGVycm9yPSIiInh5eiIiIikKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tZHVyYXRpb25zPTIiLCAiLWsgdGVzdF8xIikKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLWR1cmF0aW9ucz0yIiwgIi1rIHRlc3Rf
MSIpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDIKLSAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKkludGVycnVwdGVkOiAxIGVycm9ycyBkdXJpbmcgY29sbGVjdGlv
bioiXSkKKworICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqSW50ZXJydXB0
ZWQ6IDEgZXJyb3IgZHVyaW5nIGNvbGxlY3Rpb24qIl0pCiAgICAgICAgICMgQ29sbGVjdGlvbiBl
cnJvcnMgYWJvcnQgdGVzdCBleGVjdXRpb24sIHRoZXJlZm9yZSBubyBkdXJhdGlvbiBpcwogICAg
ICAgICAjIG91dHB1dAotICAgICAgICBhc3NlcnQgImR1cmF0aW9uIiBub3QgaW4gcmVzdWx0LnN0
ZG91dC5zdHIoKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmR1cmF0
aW9uKiIpCiAKLSAgICBkZWYgdGVzdF93aXRoX25vdChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYg
dGVzdF93aXRoX25vdChzZWxmLCB0ZXN0ZGlyLCBtb2NrX3RpbWluZyk6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZShzZWxmLnNvdXJjZSkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi1rIG5vdCAxIikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5w
cm9jZXNzKCItayBub3QgMSIpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAogCi1j
bGFzcyBUZXN0RHVyYXRpb25XaXRoRml4dHVyZShvYmplY3QpOgorY2xhc3MgVGVzdER1cmF0aW9u
c1dpdGhGaXh0dXJlOgogICAgIHNvdXJjZSA9ICIiIgotICAgICAgICBpbXBvcnQgdGltZQotICAg
ICAgICBmcmFnID0gMC4wMDEKLSAgICAgICAgZGVmIHNldHVwX2Z1bmN0aW9uKGZ1bmMpOgotICAg
ICAgICAgICAgdGltZS5zbGVlcChmcmFnICogMykKLSAgICAgICAgZGVmIHRlc3RfMSgpOgotICAg
ICAgICAgICAgdGltZS5zbGVlcChmcmFnKjIpCi0gICAgICAgIGRlZiB0ZXN0XzIoKToKLSAgICAg
ICAgICAgIHRpbWUuc2xlZXAoZnJhZykKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBm
cm9tIF9weXRlc3QgaW1wb3J0IHRpbWluZworCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAg
ICAgICBkZWYgc2V0dXBfZml4dCgpOgorICAgICAgICAgICAgdGltaW5nLnNsZWVwKDIpCisKKyAg
ICAgICAgZGVmIHRlc3RfMShzZXR1cF9maXh0KToKKyAgICAgICAgICAgIHRpbWluZy5zbGVlcCg1
KQogICAgICIiIgogCi0gICAgZGVmIHRlc3Rfc2V0dXBfZnVuY3Rpb24oc2VsZiwgdGVzdGRpcik6
CisgICAgZGVmIHRlc3Rfc2V0dXBfZnVuY3Rpb24oc2VsZiwgdGVzdGRpciwgbW9ja190aW1pbmcp
OgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoc2VsZi5zb3VyY2UpCi0gICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWR1cmF0aW9ucz0xMCIpCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygiLS1kdXJhdGlvbnM9MTAiKQogICAgICAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzX3JhbmRvbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgKmR1cmF0aW9ucyoKLSAg
ICAgICAgICAgICogc2V0dXAgKnRlc3RfMSoKLSAgICAgICAgICAgICogY2FsbCAqdGVzdF8xKgor
ICAgICAgICAgICAgNS4wMHMgY2FsbCAqdGVzdF8xKgorICAgICAgICAgICAgMi4wMHMgc2V0dXAg
KnRlc3RfMSoKICAgICAgICAgIiIiCiAgICAgICAgICkKIApAQCAtOTA1LDcgKzk2OSw3IEBAIGRl
ZiB0ZXN0X3ppcGltcG9ydF9ob29rKHRlc3RkaXIsIHRtcGRpcik6CiAgICAgICAgICAgICAiYXBw
L2Zvby5weSI6ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgZGVm
IG1haW4oKToKLSAgICAgICAgICAgICAgICBweXRlc3QubWFpbihbJy0tcHlhcmcnLCAnZm9vJ10p
CisgICAgICAgICAgICAgICAgcHl0ZXN0Lm1haW4oWyctLXB5YXJncycsICdmb28nXSkKICAgICAg
ICAgIiIiCiAgICAgICAgIH0KICAgICApCkBAIC05MTQsMjkgKzk3OCwzMyBAQCBkZWYgdGVzdF96
aXBpbXBvcnRfaG9vayh0ZXN0ZGlyLCB0bXBkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0aG9uKHRhcmdldCkKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgcmVzdWx0LnN0
ZGVyci5mbm1hdGNoX2xpbmVzKFsiKm5vdCBmb3VuZCpmb28qIl0pCi0gICAgYXNzZXJ0ICJJTlRF
Uk5BTEVSUk9SPiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0
Lm5vX2ZubWF0Y2hfbGluZSgiKklOVEVSTkFMRVJST1I+KiIpCiAKIAogZGVmIHRlc3RfaW1wb3J0
X3BsdWdpbl91bmljb2RlX25hbWUodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKG15
cGx1Z2luPSIiKQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAg
IGRlZiB0ZXN0KCk6IHBhc3MKLSAgICAiIiIKLSAgICApCi0gICAgdGVzdGRpci5tYWtlY29uZnRl
c3QoCi0gICAgICAgICIiIgotICAgICAgICBweXRlc3RfcGx1Z2lucyA9IFt1J215cGx1Z2luJ10K
LSAgICAiIiIKLSAgICApCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdCgpOiBwYXNz
IikKKyAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgicHl0ZXN0X3BsdWdpbnMgPSBbJ215cGx1Z2lu
J10iKQogICAgIHIgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgYXNzZXJ0IHIucmV0ID09IDAK
IAogCitkZWYgdGVzdF9weXRlc3RfcGx1Z2luc19hc19tb2R1bGUodGVzdGRpcik6CisgICAgIiIi
RG8gbm90IHJhaXNlIGFuIGVycm9yIGlmIHB5dGVzdF9wbHVnaW5zIGF0dHJpYnV0ZSBpcyBhIG1v
ZHVsZSAoIzM4OTkpIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAqKnsKKyAg
ICAgICAgICAgICJfX2luaXRfXy5weSI6ICIiLAorICAgICAgICAgICAgInB5dGVzdF9wbHVnaW5z
LnB5IjogIiIsCisgICAgICAgICAgICAiY29uZnRlc3QucHkiOiAiZnJvbSAuIGltcG9ydCBweXRl
c3RfcGx1Z2lucyIsCisgICAgICAgICAgICAidGVzdF9mb28ucHkiOiAiZGVmIHRlc3QoKTogcGFz
cyIsCisgICAgICAgIH0KKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQor
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4gKiJdKQorCisK
IGRlZiB0ZXN0X2RlZmVycmVkX2hvb2tfY2hlY2tpbmcodGVzdGRpcik6Ci0gICAgIiIiCi0gICAg
Q2hlY2sgaG9va3MgYXMgbGF0ZSBhcyBwb3NzaWJsZSAoIzE4MjEpLgotICAgICIiIgorICAgICIi
IkNoZWNrIGhvb2tzIGFzIGxhdGUgYXMgcG9zc2libGUgKCMxODIxKS4iIiIKICAgICB0ZXN0ZGly
LnN5c3BhdGhpbnNlcnQoKQogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgKip7CkBA
IC0xMDA0LDEzICsxMDcyLDE1IEBAIGRlZiB0ZXN0X2ZpeHR1cmVfdmFsdWVzX2xlYWsodGVzdGRp
cik6CiAgICAgICAgICAgICBhc3NlcnQgZml4X29mX3Rlc3QxX3JlZigpIGlzIE5vbmUKICAgICAi
IiIKICAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICMgUnVubmlu
ZyBvbiBzdWJwcm9jZXNzIGRvZXMgbm90IGFjdGl2YXRlIHRoZSBIb29rUmVjb3JkZXIKKyAgICAj
IHdoaWNoIGhvbGRzIGl0c2VsZiBhIHJlZmVyZW5jZSB0byBvYmplY3RzIGluIGNhc2Ugb2YgdGhl
CisgICAgIyBweXRlc3RfYXNzZXJ0X3JlcHJjb21wYXJlIGhvb2sKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqIDIgcGFzc2VkICoiXSkKIAogCiBkZWYgdGVzdF9maXh0dXJlX29yZGVyX3Jlc3BlY3Rz
X3Njb3BlKHRlc3RkaXIpOgotICAgICIiIkVuc3VyZSB0aGF0IGZpeHR1cmVzIGFyZSBjcmVhdGVk
IGFjY29yZGluZyB0byBzY29wZSBvcmRlciwgcmVncmVzc2lvbiB0ZXN0IGZvciAjMjQwNQotICAg
ICIiIgorICAgICIiIkVuc3VyZSB0aGF0IGZpeHR1cmVzIGFyZSBjcmVhdGVkIGFjY29yZGluZyB0
byBzY29wZSBvcmRlciAoIzI0MDUpLiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTEwMzUsNyArMTEwNSw4IEBAIGRlZiB0
ZXN0X2ZpeHR1cmVfb3JkZXJfcmVzcGVjdHNfc2NvcGUodGVzdGRpcik6CiAKIAogZGVmIHRlc3Rf
ZnJhbWVfbGVha19vbl9mYWlsaW5nX3Rlc3QodGVzdGRpcik6Ci0gICAgIiIicHl0ZXN0IHdvdWxk
IGxlYWsgZ2FyYmFnZSByZWZlcmVuY2luZyB0aGUgZnJhbWVzIG9mIHRlc3RzIHRoYXQgZmFpbGVk
IHRoYXQgY291bGQgbmV2ZXIgYmUgcmVjbGFpbWVkICgjMjc5OCkKKyAgICAiIiJQeXRlc3Qgd291
bGQgbGVhayBnYXJiYWdlIHJlZmVyZW5jaW5nIHRoZSBmcmFtZXMgb2YgdGVzdHMgdGhhdCBmYWls
ZWQKKyAgICB0aGF0IGNvdWxkIG5ldmVyIGJlIHJlY2xhaW1lZCAoIzI3OTgpLgogCiAgICAgVW5m
b3J0dW5hdGVseSBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIHJlbW92ZSB0aGUgYWN0dWFsIGNpcmNs
ZXMgYmVjYXVzZSBtb3N0IG9mIHRoZW0KICAgICBhcmUgbWFkZSBvZiB0cmFjZWJhY2sgb2JqZWN0
cyB3aGljaCBjYW5ub3QgYmUgd2Vha2x5IHJlZmVyZW5jZWQuIFRob3NlIG9iamVjdHMgYXQgbGVh
c3QKQEAgLTEwNjQsMyArMTEzNSwxNjIgQEAgZGVmIHRlc3RfZnJhbWVfbGVha19vbl9mYWlsaW5n
X3Rlc3QodGVzdGRpcik6CiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1
YnByb2Nlc3MoKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIGZhaWxlZCwg
MSBwYXNzZWQgaW4qIl0pCisKKworZGVmIHRlc3RfZml4dHVyZV9tb2NrX2ludGVncmF0aW9uKHRl
c3RkaXIpOgorICAgICIiIlRlc3QgdGhhdCBkZWNvcmF0b3JzIGFwcGxpZWQgdG8gZml4dHVyZSBh
cmUgbGVmdCB3b3JraW5nICgjMzc3NCkiIiIKKyAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1wbGUo
ImFjY2VwdGFuY2UvZml4dHVyZV9tb2NrX2ludGVncmF0aW9uLnB5IikKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdChwKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiox
IHBhc3NlZCoiXSkKKworCitkZWYgdGVzdF91c2FnZV9lcnJvcl9jb2RlKHRlc3RkaXIpOgorICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdW5rbm93bi1vcHRpb24tIikKKyAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgorCisKK0BweXRlc3QubWFyay5m
aWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCitkZWYgdGVzdF93YXJuX29uX2FzeW5jX2Z1bmN0aW9u
KHRlc3RkaXIpOgorICAgICMgSW4gdGhlIGJlbG93IHdlIC5jbG9zZSgpIHRoZSBjb3JvdXRpbmUg
b25seSB0byBhdm9pZAorICAgICMgIlJ1bnRpbWVXYXJuaW5nOiBjb3JvdXRpbmUgJ3Rlc3RfMicg
d2FzIG5ldmVyIGF3YWl0ZWQiCisgICAgIyB3aGljaCBtZXNzZXMgd2l0aCBvdGhlciB0ZXN0cy4K
KyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHRlc3RfYXN5bmM9IiIiCisgICAgICAg
IGFzeW5jIGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXN5bmMgZGVm
IHRlc3RfMigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgdGVzdF8zKCk6CisgICAg
ICAgICAgICBjb3JvID0gdGVzdF8yKCkKKyAgICAgICAgICAgIGNvcm8uY2xvc2UoKQorICAgICAg
ICAgICAgcmV0dXJuIGNvcm8KKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWwor
ICAgICAgICAgICAgInRlc3RfYXN5bmMucHk6OnRlc3RfMSIsCisgICAgICAgICAgICAidGVzdF9h
c3luYy5weTo6dGVzdF8yIiwKKyAgICAgICAgICAgICJ0ZXN0X2FzeW5jLnB5Ojp0ZXN0XzMiLAor
ICAgICAgICAgICAgIiphc3luYyBkZWYgZnVuY3Rpb25zIGFyZSBub3QgbmF0aXZlbHkgc3VwcG9y
dGVkKiIsCisgICAgICAgICAgICAiKjMgc2tpcHBlZCwgMyB3YXJuaW5ncyBpbioiLAorICAgICAg
ICBdCisgICAgKQorICAgICMgZW5zdXJlIG91ciB3YXJuaW5nIG1lc3NhZ2UgYXBwZWFycyBvbmx5
IG9uY2UKKyAgICBhc3NlcnQgKAorICAgICAgICByZXN1bHQuc3Rkb3V0LnN0cigpLmNvdW50KCJh
c3luYyBkZWYgZnVuY3Rpb25zIGFyZSBub3QgbmF0aXZlbHkgc3VwcG9ydGVkIikgPT0gMQorICAg
ICkKKworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorQHB5dGVzdC5t
YXJrLnNraXBpZigKKyAgICBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDYpLCByZWFzb249ImFzeW5j
IGdlbiBzeW50YXggYXZhaWxhYmxlIGluIFB5dGhvbiAzLjYrIgorKQorZGVmIHRlc3Rfd2Fybl9v
bl9hc3luY19nZW5fZnVuY3Rpb24odGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICB0ZXN0X2FzeW5jPSIiIgorICAgICAgICBhc3luYyBkZWYgdGVzdF8xKCk6CisgICAg
ICAgICAgICB5aWVsZAorICAgICAgICBhc3luYyBkZWYgdGVzdF8yKCk6CisgICAgICAgICAgICB5
aWVsZAorICAgICAgICBkZWYgdGVzdF8zKCk6CisgICAgICAgICAgICByZXR1cm4gdGVzdF8yKCkK
KyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgInRlc3Rf
YXN5bmMucHk6OnRlc3RfMSIsCisgICAgICAgICAgICAidGVzdF9hc3luYy5weTo6dGVzdF8yIiwK
KyAgICAgICAgICAgICJ0ZXN0X2FzeW5jLnB5Ojp0ZXN0XzMiLAorICAgICAgICAgICAgIiphc3lu
YyBkZWYgZnVuY3Rpb25zIGFyZSBub3QgbmF0aXZlbHkgc3VwcG9ydGVkKiIsCisgICAgICAgICAg
ICAiKjMgc2tpcHBlZCwgMyB3YXJuaW5ncyBpbioiLAorICAgICAgICBdCisgICAgKQorICAgICMg
ZW5zdXJlIG91ciB3YXJuaW5nIG1lc3NhZ2UgYXBwZWFycyBvbmx5IG9uY2UKKyAgICBhc3NlcnQg
KAorICAgICAgICByZXN1bHQuc3Rkb3V0LnN0cigpLmNvdW50KCJhc3luYyBkZWYgZnVuY3Rpb25z
IGFyZSBub3QgbmF0aXZlbHkgc3VwcG9ydGVkIikgPT0gMQorICAgICkKKworCitkZWYgdGVzdF9w
ZGJfY2FuX2JlX3Jld3JpdHRlbih0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisg
ICAgICAgICoqeworICAgICAgICAgICAgImNvbmZ0ZXN0LnB5IjogIiIiCisgICAgICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRf
cmV3cml0ZSgicGRiIikKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAiX19pbml0
X18ucHkiOiAiIiwKKyAgICAgICAgICAgICJwZGIucHkiOiAiIiIKKyAgICAgICAgICAgICAgICBk
ZWYgY2hlY2soKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDEgPT0gMgorICAgICAgICAg
ICAgICAgICIiIiwKKyAgICAgICAgICAgICJ0ZXN0X3BkYi5weSI6ICIiIgorICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBwZGIKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0IHBkYi5jaGVjaygpCisgICAgICAgICAgICAgICAgIiIiLAorICAg
ICAgICB9CisgICAgKQorICAgICMgRGlzYWJsZSBkZWJ1Z2dpbmcgcGx1Z2luIGl0c2VsZiB0byBh
dm9pZDoKKyAgICAjID4gSU5URVJOQUxFUlJPUj4gQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAncGRi
JyBoYXMgbm8gYXR0cmlidXRlICdzZXRfdHJhY2UnCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3Rfc3VicHJvY2VzcygiLXAiLCAibm86ZGVidWdnaW5nIiwgIi12diIpCisgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiICAgIGRlZiBj
aGVjaygpOiIsCisgICAgICAgICAgICAiPiAgICAgICBhc3NlcnQgMSA9PSAyIiwKKyAgICAgICAg
ICAgICJFICAgICAgIGFzc2VydCAxID09IDIiLAorICAgICAgICAgICAgIkUgICAgICAgICArMSIs
CisgICAgICAgICAgICAiRSAgICAgICAgIC0yIiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAg
ICAgInBkYi5weToyOiBBc3NlcnRpb25FcnJvciIsCisgICAgICAgICAgICAiKj0gMSBmYWlsZWQg
aW4gKiIsCisgICAgICAgIF0KKyAgICApCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQorCisK
K2RlZiB0ZXN0X3RlZV9zdGRpb19jYXB0dXJlc19hbmRfbGl2ZV9wcmludHModGVzdGRpcik6Cisg
ICAgdGVzdHBhdGggPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBp
bXBvcnQgc3lzCisgICAgICAgIGRlZiB0ZXN0X3NpbXBsZSgpOgorICAgICAgICAgICAgcHJpbnQg
KCJAdGhpcyBpcyBzdGRvdXRAIikKKyAgICAgICAgICAgIHByaW50ICgiQHRoaXMgaXMgc3RkZXJy
QCIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3Rfc3VicHJvY2VzcygKKyAgICAgICAgdGVzdHBhdGgsCisgICAgICAgICItLWNh
cHR1cmU9dGVlLXN5cyIsCisgICAgICAgICItLWp1bml0eG1sPW91dHB1dC54bWwiLAorICAgICAg
ICAiLW8iLAorICAgICAgICAianVuaXRfbG9nZ2luZz1hbGwiLAorICAgICkKKworICAgICMgZW5z
dXJlIHN0ZG91dC9zdGRlcnIgd2VyZSAnbGl2ZSBwcmludGVkJworICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIipAdGhpcyBpcyBzdGRvdXRAKiJdKQorICAgIHJlc3VsdC5zdGRlcnIu
Zm5tYXRjaF9saW5lcyhbIipAdGhpcyBpcyBzdGRlcnJAKiJdKQorCisgICAgIyBub3cgZW5zdXJl
IHRoZSBvdXRwdXQgaXMgaW4gdGhlIGp1bml0eG1sCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9p
bih0ZXN0ZGlyLnRtcGRpci5zdHJwYXRoLCAib3V0cHV0LnhtbCIpKSBhcyBmOgorICAgICAgICBm
dWxsWG1sID0gZi5yZWFkKCkKKyAgICBhc3NlcnQgIkB0aGlzIGlzIHN0ZG91dEBcbiIgaW4gZnVs
bFhtbAorICAgIGFzc2VydCAiQHRoaXMgaXMgc3RkZXJyQFxuIiBpbiBmdWxsWG1sCisKKworQHB5
dGVzdC5tYXJrLnNraXBpZigKKyAgICBzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICByZWFz
b249IldpbmRvd3MgcmFpc2VzIGBPU0Vycm9yOiBbRXJybm8gMjJdIEludmFsaWQgYXJndW1lbnRg
IGluc3RlYWQiLAorKQorZGVmIHRlc3Rfbm9fYnJva2VucGlwZWVycm9yX21lc3NhZ2UodGVzdGRp
cjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAiIiJFbnN1cmUgdGhhdCB0aGUgYnJva2VuIHBpcGUg
ZXJyb3IgbWVzc2FnZSBpcyBzdXByZXNzZWQuCisKKyAgICBJbiBzb21lIFB5dGhvbiB2ZXJzaW9u
cywgaXQgcmVhY2hlcyBzeXMudW5yYWlzYWJsZWhvb2ssIGluIG90aGVycworICAgIGEgQnJva2Vu
UGlwZUVycm9yIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkLCBidXQgZWl0aGVyIHdheSBpdCBwcmlu
dHMKKyAgICB0byBzdGRlcnIgb24gc2h1dGRvd24sIHNvIGNoZWNraW5nIG5vdGhpbmcgaXMgcHJp
bnRlZCBpcyBlbm91Z2guCisgICAgIiIiCisgICAgcG9wZW4gPSB0ZXN0ZGlyLnBvcGVuKCgqdGVz
dGRpci5fZ2V0cHl0ZXN0YXJncygpLCAiLS1oZWxwIikpCisgICAgcG9wZW4uc3Rkb3V0LmNsb3Nl
KCkKKyAgICByZXQgPSBwb3Blbi53YWl0KCkKKyAgICBhc3NlcnQgcG9wZW4uc3RkZXJyLnJlYWQo
KSA9PSBiIiIKKyAgICBhc3NlcnQgcmV0ID09IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvY29kZS90ZXN0X2NvZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9j
b2RlLnB5CmluZGV4IGJmYWUzNjkxODgyZS4uYmFlODZiZTM0N2ZhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9jb2RlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvY29kZS90ZXN0X2NvZGUucHkKQEAgLTEsMjEwICsxLDIxMSBAQAotIyBjb2Rpbmc6IHV0Zi04
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50
X2Z1bmN0aW9uCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKK2Zyb20gdHlwZXMgaW1wb3J0IEZyYW1l
VHlwZQorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCi1pbXBvcnQgX3B5dGVzdC5fY29kZQot
aW1wb3J0IHB5CiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHRlc3RfZXhjaW5mbyBpbXBvcnQgVFdNb2Nr
Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IENv
ZGUKK2Zyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0ZXN0
Ll9jb2RlIGltcG9ydCBGcmFtZQorZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBTb3VyY2UKK2Zy
b20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25DaGFpblJlcHIKK2Zyb20gX3B5
dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRnVuY0FyZ3MKIAogCi1kZWYgdGVzdF9uZSgpOgot
ICAgIGNvZGUxID0gX3B5dGVzdC5fY29kZS5Db2RlKGNvbXBpbGUoJ2ZvbyA9ICJiYXIiJywgIiIs
ICJleGVjIikpCitkZWYgdGVzdF9uZSgpIC0+IE5vbmU6CisgICAgY29kZTEgPSBDb2RlKGNvbXBp
bGUoJ2ZvbyA9ICJiYXIiJywgIiIsICJleGVjIikpCiAgICAgYXNzZXJ0IGNvZGUxID09IGNvZGUx
Ci0gICAgY29kZTIgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoY29tcGlsZSgnZm9vID0gImJheiInLCAi
IiwgImV4ZWMiKSkKKyAgICBjb2RlMiA9IENvZGUoY29tcGlsZSgnZm9vID0gImJheiInLCAiIiwg
ImV4ZWMiKSkKICAgICBhc3NlcnQgY29kZTIgIT0gY29kZTEKIAogCi1kZWYgdGVzdF9jb2RlX2dp
dmVzX2JhY2tfbmFtZV9mb3Jfbm90X2V4aXN0aW5nX2ZpbGUoKToKK2RlZiB0ZXN0X2NvZGVfZ2l2
ZXNfYmFja19uYW1lX2Zvcl9ub3RfZXhpc3RpbmdfZmlsZSgpIC0+IE5vbmU6CiAgICAgbmFtZSA9
ICJhYmMtMTIzIgogICAgIGNvX2NvZGUgPSBjb21waWxlKCJwYXNzXG4iLCBuYW1lLCAiZXhlYyIp
CiAgICAgYXNzZXJ0IGNvX2NvZGUuY29fZmlsZW5hbWUgPT0gbmFtZQotICAgIGNvZGUgPSBfcHl0
ZXN0Ll9jb2RlLkNvZGUoY29fY29kZSkKKyAgICBjb2RlID0gQ29kZShjb19jb2RlKQogICAgIGFz
c2VydCBzdHIoY29kZS5wYXRoKSA9PSBuYW1lCiAgICAgYXNzZXJ0IGNvZGUuZnVsbHNvdXJjZSBp
cyBOb25lCiAKIAotZGVmIHRlc3RfY29kZV93aXRoX2NsYXNzKCk6Ci0KLSAgICBjbGFzcyBBKG9i
amVjdCk6CitkZWYgdGVzdF9jb2RlX3dpdGhfY2xhc3MoKSAtPiBOb25lOgorICAgIGNsYXNzIEE6
CiAgICAgICAgIHBhc3MKIAotICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCAiX3B5dGVzdC5f
Y29kZS5Db2RlKEEpIikKLQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBDb2RlLCBBKQog
Ci1pZiBUcnVlOgogCi0gICAgZGVmIHgoKToKLSAgICAgICAgcGFzcworZGVmIHgoKSAtPiBOb25l
OgorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCiAKLWRlZiB0ZXN0X2NvZGVfZnVs
bHNvdXJjZSgpOgotICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoeCkKK2RlZiB0ZXN0X2Nv
ZGVfZnVsbHNvdXJjZSgpIC0+IE5vbmU6CisgICAgY29kZSA9IENvZGUoeCkKICAgICBmdWxsID0g
Y29kZS5mdWxsc291cmNlCiAgICAgYXNzZXJ0ICJ0ZXN0X2NvZGVfZnVsbHNvdXJjZSgpIiBpbiBz
dHIoZnVsbCkKIAogCi1kZWYgdGVzdF9jb2RlX3NvdXJjZSgpOgotICAgIGNvZGUgPSBfcHl0ZXN0
Ll9jb2RlLkNvZGUoeCkKK2RlZiB0ZXN0X2NvZGVfc291cmNlKCkgLT4gTm9uZToKKyAgICBjb2Rl
ID0gQ29kZSh4KQogICAgIHNyYyA9IGNvZGUuc291cmNlKCkKLSAgICBleHBlY3RlZCA9ICIiImRl
ZiB4KCk6Ci0gICAgcGFzcyIiIgorICAgIGV4cGVjdGVkID0gIiIiZGVmIHgoKSAtPiBOb25lOgor
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKSIiIgogICAgIGFzc2VydCBzdHIoc3JjKSA9
PSBleHBlY3RlZAogCiAKLWRlZiB0ZXN0X2ZyYW1lX2dldHNvdXJjZWxpbmVub19teXNlbGYoKToK
LQotICAgIGRlZiBmdW5jKCk6CitkZWYgdGVzdF9mcmFtZV9nZXRzb3VyY2VsaW5lbm9fbXlzZWxm
KCkgLT4gTm9uZToKKyAgICBkZWYgZnVuYygpIC0+IEZyYW1lVHlwZToKICAgICAgICAgcmV0dXJu
IHN5cy5fZ2V0ZnJhbWUoMCkKIAotICAgIGYgPSBmdW5jKCkKLSAgICBmID0gX3B5dGVzdC5fY29k
ZS5GcmFtZShmKQorICAgIGYgPSBGcmFtZShmdW5jKCkpCiAgICAgc291cmNlLCBsaW5lbm8gPSBm
LmNvZGUuZnVsbHNvdXJjZSwgZi5saW5lbm8KKyAgICBhc3NlcnQgc291cmNlIGlzIG5vdCBOb25l
CiAgICAgYXNzZXJ0IHNvdXJjZVtsaW5lbm9dLnN0YXJ0c3dpdGgoIiAgICAgICAgcmV0dXJuIHN5
cy5fZ2V0ZnJhbWUoMCkiKQogCiAKLWRlZiB0ZXN0X2dldHN0YXRlbWVudF9lbXB0eV9mdWxsc291
cmNlKCk6Ci0KLSAgICBkZWYgZnVuYygpOgorZGVmIHRlc3RfZ2V0c3RhdGVtZW50X2VtcHR5X2Z1
bGxzb3VyY2UoKSAtPiBOb25lOgorICAgIGRlZiBmdW5jKCkgLT4gRnJhbWVUeXBlOgogICAgICAg
ICByZXR1cm4gc3lzLl9nZXRmcmFtZSgwKQogCi0gICAgZiA9IGZ1bmMoKQotICAgIGYgPSBfcHl0
ZXN0Ll9jb2RlLkZyYW1lKGYpCi0gICAgcHJvcCA9IGYuY29kZS5fX2NsYXNzX18uZnVsbHNvdXJj
ZQotICAgIHRyeToKLSAgICAgICAgZi5jb2RlLl9fY2xhc3NfXy5mdWxsc291cmNlID0gTm9uZQot
ICAgICAgICBhc3NlcnQgZi5zdGF0ZW1lbnQgPT0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoIiIpCi0g
ICAgZmluYWxseToKLSAgICAgICAgZi5jb2RlLl9fY2xhc3NfXy5mdWxsc291cmNlID0gcHJvcAor
ICAgIGYgPSBGcmFtZShmdW5jKCkpCisgICAgd2l0aCBtb2NrLnBhdGNoLm9iamVjdChmLmNvZGUu
X19jbGFzc19fLCAiZnVsbHNvdXJjZSIsIE5vbmUpOgorICAgICAgICBhc3NlcnQgZi5zdGF0ZW1l
bnQgPT0gU291cmNlKCIiKQogCiAKLWRlZiB0ZXN0X2NvZGVfZnJvbV9mdW5jKCk6Ci0gICAgY28g
PSBfcHl0ZXN0Ll9jb2RlLkNvZGUodGVzdF9mcmFtZV9nZXRzb3VyY2VsaW5lbm9fbXlzZWxmKQor
ZGVmIHRlc3RfY29kZV9mcm9tX2Z1bmMoKSAtPiBOb25lOgorICAgIGNvID0gQ29kZSh0ZXN0X2Zy
YW1lX2dldHNvdXJjZWxpbmVub19teXNlbGYpCiAgICAgYXNzZXJ0IGNvLmZpcnN0bGluZW5vCiAg
ICAgYXNzZXJ0IGNvLnBhdGgKIAogCi1kZWYgdGVzdF91bmljb2RlX2hhbmRsaW5nKCk6Ci0gICAg
dmFsdWUgPSBweS5idWlsdGluLl90b3RleHQoIlx4YzRceDg1XHhjNFx4ODdcbiIsICJ1dGYtOCIp
LmVuY29kZSgidXRmOCIpCitkZWYgdGVzdF91bmljb2RlX2hhbmRsaW5nKCkgLT4gTm9uZToKKyAg
ICB2YWx1ZSA9ICLEhcSHIi5lbmNvZGUoKQogCi0gICAgZGVmIGYoKToKKyAgICBkZWYgZigpIC0+
IE5vbmU6CiAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbih2YWx1ZSkKIAogICAgIGV4Y2luZm8gPSBw
eXRlc3QucmFpc2VzKEV4Y2VwdGlvbiwgZikKICAgICBzdHIoZXhjaW5mbykKLSAgICBpZiBzeXMu
dmVyc2lvbl9pbmZvWzBdIDwgMzoKLSAgICAgICAgdGV4dF90eXBlKGV4Y2luZm8pCi0KLQotQHB5
dGVzdC5tYXJrLnNraXBpZihzeXMudmVyc2lvbl9pbmZvWzBdID49IDMsIHJlYXNvbj0icHl0aG9u
IDIgb25seSBpc3N1ZSIpCi1kZWYgdGVzdF91bmljb2RlX2hhbmRsaW5nX3N5bnRheF9lcnJvcigp
OgotICAgIHZhbHVlID0gcHkuYnVpbHRpbi5fdG90ZXh0KCJceGM0XHg4NVx4YzRceDg3XG4iLCAi
dXRmLTgiKS5lbmNvZGUoInV0ZjgiKQogCi0gICAgZGVmIGYoKToKLSAgICAgICAgcmFpc2UgU3lu
dGF4RXJyb3IoImludmFsaWQgc3ludGF4IiwgKE5vbmUsIDEsIDMsIHZhbHVlKSkKLQotICAgIGV4
Y2luZm8gPSBweXRlc3QucmFpc2VzKEV4Y2VwdGlvbiwgZikKLSAgICBzdHIoZXhjaW5mbykKLSAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdIDwgMzoKLSAgICAgICAgdGV4dF90eXBlKGV4Y2luZm8p
Ci0KLQotZGVmIHRlc3RfY29kZV9nZXRhcmdzKCk6CiAKK2RlZiB0ZXN0X2NvZGVfZ2V0YXJncygp
IC0+IE5vbmU6CiAgICAgZGVmIGYxKHgpOgotICAgICAgICBwYXNzCisgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYzEgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoZjEpCisg
ICAgYzEgPSBDb2RlKGYxKQogICAgIGFzc2VydCBjMS5nZXRhcmdzKHZhcj1UcnVlKSA9PSAoIngi
LCkKIAogICAgIGRlZiBmMih4LCAqeSk6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBjMiA9IF9weXRlc3QuX2NvZGUuQ29kZShmMikKKyAg
ICBjMiA9IENvZGUoZjIpCiAgICAgYXNzZXJ0IGMyLmdldGFyZ3ModmFyPVRydWUpID09ICgieCIs
ICJ5IikKIAogICAgIGRlZiBmMyh4LCAqKnopOgotICAgICAgICBwYXNzCisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYzMgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoZjMp
CisgICAgYzMgPSBDb2RlKGYzKQogICAgIGFzc2VydCBjMy5nZXRhcmdzKHZhcj1UcnVlKSA9PSAo
IngiLCAieiIpCiAKICAgICBkZWYgZjQoeCwgKnksICoqeik6Ci0gICAgICAgIHBhc3MKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBjNCA9IF9weXRlc3QuX2NvZGUu
Q29kZShmNCkKKyAgICBjNCA9IENvZGUoZjQpCiAgICAgYXNzZXJ0IGM0LmdldGFyZ3ModmFyPVRy
dWUpID09ICgieCIsICJ5IiwgInoiKQogCiAKLWRlZiB0ZXN0X2ZyYW1lX2dldGFyZ3MoKToKLQot
ICAgIGRlZiBmMSh4KToKK2RlZiB0ZXN0X2ZyYW1lX2dldGFyZ3MoKSAtPiBOb25lOgorICAgIGRl
ZiBmMSh4KSAtPiBGcmFtZVR5cGU6CiAgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKDApCiAK
LSAgICBmcjEgPSBfcHl0ZXN0Ll9jb2RlLkZyYW1lKGYxKCJhIikpCisgICAgZnIxID0gRnJhbWUo
ZjEoImEiKSkKICAgICBhc3NlcnQgZnIxLmdldGFyZ3ModmFyPVRydWUpID09IFsoIngiLCAiYSIp
XQogCi0gICAgZGVmIGYyKHgsICp5KToKKyAgICBkZWYgZjIoeCwgKnkpIC0+IEZyYW1lVHlwZToK
ICAgICAgICAgcmV0dXJuIHN5cy5fZ2V0ZnJhbWUoMCkKIAotICAgIGZyMiA9IF9weXRlc3QuX2Nv
ZGUuRnJhbWUoZjIoImEiLCAiYiIsICJjIikpCisgICAgZnIyID0gRnJhbWUoZjIoImEiLCAiYiIs
ICJjIikpCiAgICAgYXNzZXJ0IGZyMi5nZXRhcmdzKHZhcj1UcnVlKSA9PSBbKCJ4IiwgImEiKSwg
KCJ5IiwgKCJiIiwgImMiKSldCiAKLSAgICBkZWYgZjMoeCwgKip6KToKKyAgICBkZWYgZjMoeCwg
Kip6KSAtPiBGcmFtZVR5cGU6CiAgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKDApCiAKLSAg
ICBmcjMgPSBfcHl0ZXN0Ll9jb2RlLkZyYW1lKGYzKCJhIiwgYj0iYyIpKQorICAgIGZyMyA9IEZy
YW1lKGYzKCJhIiwgYj0iYyIpKQogICAgIGFzc2VydCBmcjMuZ2V0YXJncyh2YXI9VHJ1ZSkgPT0g
WygieCIsICJhIiksICgieiIsIHsiYiI6ICJjIn0pXQogCi0gICAgZGVmIGY0KHgsICp5LCAqKnop
OgorICAgIGRlZiBmNCh4LCAqeSwgKip6KSAtPiBGcmFtZVR5cGU6CiAgICAgICAgIHJldHVybiBz
eXMuX2dldGZyYW1lKDApCiAKLSAgICBmcjQgPSBfcHl0ZXN0Ll9jb2RlLkZyYW1lKGY0KCJhIiwg
ImIiLCBjPSJkIikpCisgICAgZnI0ID0gRnJhbWUoZjQoImEiLCAiYiIsIGM9ImQiKSkKICAgICBh
c3NlcnQgZnI0LmdldGFyZ3ModmFyPVRydWUpID09IFsoIngiLCAiYSIpLCAoInkiLCAoImIiLCkp
LCAoInoiLCB7ImMiOiAiZCJ9KV0KIAogCi1jbGFzcyBUZXN0RXhjZXB0aW9uSW5mbyhvYmplY3Qp
OgotCi0gICAgZGVmIHRlc3RfYmFkX2dldHNvdXJjZShzZWxmKToKK2NsYXNzIFRlc3RFeGNlcHRp
b25JbmZvOgorICAgIGRlZiB0ZXN0X2JhZF9nZXRzb3VyY2Uoc2VsZikgLT4gTm9uZToKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgaWYgRmFsc2U6CiAgICAgICAgICAgICAgICAgcGFzcwogICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKICAgICAgICAgZXhj
ZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgZXhjaSA9IF9weXRlc3QuX2NvZGUuRXhj
ZXB0aW9uSW5mbygpCisgICAgICAgICAgICBleGNpID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJl
bnQoKQogICAgICAgICBhc3NlcnQgZXhjaS5nZXRyZXByKCkKIAorICAgIGRlZiB0ZXN0X2Zyb21f
Y3VycmVudF93aXRoX21pc3Npbmcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKEFzc2VydGlvbkVycm9yLCBtYXRjaD0ibm8gY3VycmVudCBleGNlcHRpb24iKToKKyAg
ICAgICAgICAgIEV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkKIAotY2xhc3MgVGVzdFRyYWNl
YmFja0VudHJ5KG9iamVjdCk6CiAKLSAgICBkZWYgdGVzdF9nZXRzb3VyY2Uoc2VsZik6CitjbGFz
cyBUZXN0VHJhY2ViYWNrRW50cnk6CisgICAgZGVmIHRlc3RfZ2V0c291cmNlKHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIEZhbHNlOgogICAgICAgICAgICAgICAg
IHBhc3MKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCiAg
ICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKLSAgICAgICAgICAgIGV4Y2kgPSBfcHl0ZXN0
Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICAgICAgZXhjaSA9IEV4Y2VwdGlvbkluZm8u
ZnJvbV9jdXJyZW50KCkKICAgICAgICAgZW50cnkgPSBleGNpLnRyYWNlYmFja1swXQogICAgICAg
ICBzb3VyY2UgPSBlbnRyeS5nZXRzb3VyY2UoKQorICAgICAgICBhc3NlcnQgc291cmNlIGlzIG5v
dCBOb25lCiAgICAgICAgIGFzc2VydCBsZW4oc291cmNlKSA9PSA2CiAgICAgICAgIGFzc2VydCAi
YXNzZXJ0IEZhbHNlIiBpbiBzb3VyY2VbNV0KIAorICAgIGRlZiB0ZXN0X3RiX2VudHJ5X3N0cihz
ZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgIGV4
Y2VwdCBBc3NlcnRpb25FcnJvcjoKKyAgICAgICAgICAgIGV4Y2kgPSBFeGNlcHRpb25JbmZvLmZy
b21fY3VycmVudCgpCisgICAgICAgIHBhdHRlcm4gPSByIiAgRmlsZSAnLip0ZXN0X2NvZGUucHkn
OlxkKyBpbiB0ZXN0X3RiX2VudHJ5X3N0clxuICBhc3NlcnQgRmFsc2UiCisgICAgICAgIGVudHJ5
ID0gc3RyKGV4Y2kudHJhY2ViYWNrWzBdKQorICAgICAgICBhc3NlcnQgcmUubWF0Y2gocGF0dGVy
biwgZW50cnkpCiAKLWNsYXNzIFRlc3RSZXByRnVuY0FyZ3Mob2JqZWN0KToKIAotICAgIGRlZiB0
ZXN0X25vdF9yYWlzZV9leGNlcHRpb25fd2l0aF9taXhlZF9lbmNvZGluZyhzZWxmKToKLSAgICAg
ICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFJlcHJGdW5jQXJncworY2xhc3MgVGVz
dFJlcHJGdW5jQXJnczoKKyAgICBkZWYgdGVzdF9ub3RfcmFpc2VfZXhjZXB0aW9uX3dpdGhfbWl4
ZWRfZW5jb2Rpbmcoc2VsZiwgdHdfbW9jaykgLT4gTm9uZToKKyAgICAgICAgYXJncyA9IFsoInVu
aWNvZGVfc3RyaW5nIiwgIlPDo28gUGF1bG8iKSwgKCJ1dGY4X3N0cmluZyIsIGIiU1x4YzNceGEz
byBQYXVsbyIpXQogCi0gICAgICAgIHR3ID0gVFdNb2NrKCkKKyAgICAgICAgciA9IFJlcHJGdW5j
QXJncyhhcmdzKQorICAgICAgICByLnRvdGVybWluYWwodHdfbW9jaykKIAotICAgICAgICBhcmdz
ID0gWygidW5pY29kZV9zdHJpbmciLCB1IlPDo28gUGF1bG8iKSwgKCJ1dGY4X3N0cmluZyIsICJT
XHhjM1x4YTNvIFBhdWxvIildCisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICB0d19tb2Nr
LmxpbmVzWzBdCisgICAgICAgICAgICA9PSByInVuaWNvZGVfc3RyaW5nID0gU8OjbyBQYXVsbywg
dXRmOF9zdHJpbmcgPSBiJ1NceGMzXHhhM28gUGF1bG8nIgorICAgICAgICApCiAKLSAgICAgICAg
ciA9IFJlcHJGdW5jQXJncyhhcmdzKQotICAgICAgICByLnRvdGVybWluYWwodHcpCi0gICAgICAg
IGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKLSAgICAgICAgICAgIGFzc2VydCB0dy5saW5l
c1swXSA9PSAidW5pY29kZV9zdHJpbmcgPSBTw6NvIFBhdWxvLCB1dGY4X3N0cmluZyA9IFPDg8Kj
byBQYXVsbyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCB0dy5saW5lc1swXSA9
PSAidW5pY29kZV9zdHJpbmcgPSBTw6NvIFBhdWxvLCB1dGY4X3N0cmluZyA9IFPDo28gUGF1bG8i
CisKK2RlZiB0ZXN0X0V4Y2VwdGlvbkNoYWluUmVwcigpOgorICAgICIiIlRlc3QgRXhjZXB0aW9u
Q2hhaW5SZXByLCBlc3BlY2lhbGx5IHdpdGggcmVnYXJkIHRvIGJlaW5nIGhhc2hhYmxlLiIiIgor
ICAgIHRyeToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CisgICAgICAgIGV4Y2luZm8xID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQorICAg
ICAgICBleGNpbmZvMiA9IEV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkKKworICAgIHJlcHIx
ID0gZXhjaW5mbzEuZ2V0cmVwcigpCisgICAgcmVwcjIgPSBleGNpbmZvMi5nZXRyZXByKCkKKyAg
ICBhc3NlcnQgcmVwcjEgIT0gcmVwcjIKKworICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcHIxLCBF
eGNlcHRpb25DaGFpblJlcHIpCisgICAgYXNzZXJ0IGhhc2gocmVwcjEpICE9IGhhc2gocmVwcjIp
CisgICAgYXNzZXJ0IHJlcHIxIGlzIG5vdCBleGNpbmZvMS5nZXRyZXByKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2luZm8ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2NvZGUvdGVzdF9leGNpbmZvLnB5CmluZGV4IGY0MDQ0YjZlY2M0NC4uNTc1NDk3N2Rk
YzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9leGNpbmZvLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2luZm8ucHkKQEAgLTEsMjEg
KzEsMjQgQEAKLSMgLSotIGNvZGluZzogdXRmLTggLSotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KK2ltcG9ydCBpbwog
aW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKK2ltcG9ydCBxdWV1ZQogaW1wb3J0IHN5cwotaW1w
b3J0IF9weXRlc3QKK2ltcG9ydCB0ZXh0d3JhcAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJv
bSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBp
bmcgaW1wb3J0IFVuaW9uCisKIGltcG9ydCBweQotaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0
Ll9jb2RlLmNvZGUgaW1wb3J0ICgKLSAgICBFeGNlcHRpb25JbmZvLAotICAgIEZvcm1hdHRlZEV4
Y2luZm8sCi0gICAgUmVwckV4Y2VwdGlvbkluZm8sCi0gICAgRXhjZXB0aW9uQ2hhaW5SZXByLAot
KQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHF1ZXVlCiAKLWZyb20gdGVzdF9zb3VyY2UgaW1wb3J0
IGFzdG9ubHkKK2ltcG9ydCBfcHl0ZXN0CitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuX2Nv
ZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uQ2hhaW5SZXByCitmcm9tIF9weXRlc3QuX2NvZGUuY29k
ZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEZv
cm1hdHRlZEV4Y2luZm8KK2Zyb20gX3B5dGVzdC5faW8gaW1wb3J0IFRlcm1pbmFsV3JpdGVyCitm
cm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QucHl0
ZXN0ZXIgaW1wb3J0IExpbmVNYXRjaGVyCiAKIHRyeToKICAgICBpbXBvcnQgaW1wb3J0bGliCkBA
IC0yNCw0OCArMjcsMzYgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogZWxzZToKICAgICBpbnZhbGlk
YXRlX2ltcG9ydF9jYWNoZXMgPSBnZXRhdHRyKGltcG9ydGxpYiwgImludmFsaWRhdGVfY2FjaGVz
IiwgTm9uZSkKIAotZmFpbHNvbmp5dGhvbiA9IHB5dGVzdC5tYXJrLnhmYWlsKCJzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnamF2YScpIikKLQotcHl0ZXN0X3ZlcnNpb25faW5mbyA9IHR1cGxlKG1h
cChpbnQsIHB5dGVzdC5fX3ZlcnNpb25fXy5zcGxpdCgiLiIpWzozXSkpCi0KLQotY2xhc3MgVFdN
b2NrKG9iamVjdCk6Ci0gICAgV1JJVEUgPSBvYmplY3QoKQotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICBzZWxmLmxpbmVzID0gW10KLSAgICAgICAgc2VsZi5pc193cml0aW5nID0g
RmFsc2UKLQotICAgIGRlZiBzZXAoc2VsZiwgc2VwLCBsaW5lPU5vbmUpOgotICAgICAgICBzZWxm
LmxpbmVzLmFwcGVuZCgoc2VwLCBsaW5lKSkKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSBf
cHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IF9UcmFjZWJhY2tTdHlsZQogCi0gICAgZGVmIHdyaXRl
KHNlbGYsIG1zZywgKiprdyk6Ci0gICAgICAgIHNlbGYubGluZXMuYXBwZW5kKChUV01vY2suV1JJ
VEUsIG1zZykpCiAKLSAgICBkZWYgbGluZShzZWxmLCBsaW5lLCAqKmt3KToKLSAgICAgICAgc2Vs
Zi5saW5lcy5hcHBlbmQobGluZSkKK0BweXRlc3QuZml4dHVyZQorZGVmIGxpbWl0ZWRfcmVjdXJz
aW9uX2RlcHRoKCk6CisgICAgYmVmb3JlID0gc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkKKyAgICBz
eXMuc2V0cmVjdXJzaW9ubGltaXQoMTUwKQorICAgIHlpZWxkCisgICAgc3lzLnNldHJlY3Vyc2lv
bmxpbWl0KGJlZm9yZSkKIAotICAgIGRlZiBtYXJrdXAoc2VsZiwgdGV4dCwgKiprdyk6Ci0gICAg
ICAgIHJldHVybiB0ZXh0CiAKLSAgICBkZWYgZ2V0X3dyaXRlX21zZyhzZWxmLCBpZHgpOgotICAg
ICAgICBmbGFnLCBtc2cgPSBzZWxmLmxpbmVzW2lkeF0KLSAgICAgICAgYXNzZXJ0IGZsYWcgPT0g
VFdNb2NrLldSSVRFCi0gICAgICAgIHJldHVybiBtc2cKLQotICAgIGZ1bGx3aWR0aCA9IDgwCitk
ZWYgdGVzdF9leGNpbmZvX3NpbXBsZSgpIC0+IE5vbmU6CisgICAgdHJ5OgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIGluZm8gPSBfcHl0
ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkKKyAgICBhc3NlcnQgaW5mby50
eXBlID09IFZhbHVlRXJyb3IKIAogCi1kZWYgdGVzdF9leGNpbmZvX3NpbXBsZSgpOgorZGVmIHRl
c3RfZXhjaW5mb19mcm9tX2V4Y19pbmZvX3NpbXBsZSgpIC0+IE5vbmU6CiAgICAgdHJ5OgogICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIGlu
Zm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9y
IGFzIGU6CisgICAgICAgIGFzc2VydCBlLl9fdHJhY2ViYWNrX18gaXMgbm90IE5vbmUKKyAgICAg
ICAgaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2V4Y19pbmZvKCh0eXBl
KGUpLCBlLCBlLl9fdHJhY2ViYWNrX18pKQogICAgIGFzc2VydCBpbmZvLnR5cGUgPT0gVmFsdWVF
cnJvcgogCiAKIGRlZiB0ZXN0X2V4Y2luZm9fZ2V0c3RhdGVtZW50KCk6Ci0KICAgICBkZWYgZygp
OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAKQEAgLTc1LDExICs2NiwxMSBAQCBkZWYgdGVz
dF9leGNpbmZvX2dldHN0YXRlbWVudCgpOgogICAgIHRyeToKICAgICAgICAgZigpCiAgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlv
bkluZm8oKQorICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZy
b21fY3VycmVudCgpCiAgICAgbGluZW51bWJlcnMgPSBbCi0gICAgICAgIF9weXRlc3QuX2NvZGUu
Z2V0cmF3Y29kZShmKS5jb19maXJzdGxpbmVubyAtIDEgKyA0LAotICAgICAgICBfcHl0ZXN0Ll9j
b2RlLmdldHJhd2NvZGUoZikuY29fZmlyc3RsaW5lbm8gLSAxICsgMSwKLSAgICAgICAgX3B5dGVz
dC5fY29kZS5nZXRyYXdjb2RlKGcpLmNvX2ZpcnN0bGluZW5vIC0gMSArIDEsCisgICAgICAgIGYu
X19jb2RlX18uY29fZmlyc3RsaW5lbm8gLSAxICsgNCwKKyAgICAgICAgZi5fX2NvZGVfXy5jb19m
aXJzdGxpbmVubyAtIDEgKyAxLAorICAgICAgICBnLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vIC0g
MSArIDEsCiAgICAgXQogICAgIHZhbHVlcyA9IGxpc3QoZXhjaW5mby50cmFjZWJhY2spCiAgICAg
Zm91bmRsaW5lbnVtYmVycyA9IFt4LmxpbmVubyBmb3IgeCBpbiB2YWx1ZXNdCkBAIC0xMTEsMTMg
KzEwMiwxMiBAQCBkZWYgaCgpOgogICAgICMKIAogCi1jbGFzcyBUZXN0VHJhY2ViYWNrX2ZfZ19o
KG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RUcmFjZWJhY2tfZl9nX2g6CiAgICAgZGVmIHNldHVwX21l
dGhvZChzZWxmLCBtZXRob2QpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBoKCkKICAgICAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLmV4Y2luZm8gPSBfcHl0ZXN0
Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICAgICAgc2VsZi5leGNpbmZvID0gX3B5dGVz
dC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAKICAgICBkZWYgdGVzdF90cmFj
ZWJhY2tfZW50cmllcyhzZWxmKToKICAgICAgICAgdGIgPSBzZWxmLmV4Y2luZm8udHJhY2ViYWNr
CkBAIC0xMzgsMjcgKzEyOCwyOSBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrX2ZfZ19oKG9iamVjdCk6
CiAgICAgICAgIGFzc2VydCBzLnN0YXJ0c3dpdGgoImRlZiBmKCk6IikKICAgICAgICAgYXNzZXJ0
IHMuZW5kc3dpdGgoInJhaXNlIFZhbHVlRXJyb3IiKQogCi0gICAgQGFzdG9ubHkKLSAgICBAZmFp
bHNvbmp5dGhvbgogICAgIGRlZiB0ZXN0X3RyYWNlYmFja19lbnRyeV9nZXRzb3VyY2VfaW5fY29u
c3RydWN0KHNlbGYpOgotICAgICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAg
ICAgICAgICAgICIiIlwKLSAgICAgICAgICAgIGRlZiB4eXooKToKLSAgICAgICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgICAgICAg
ICBleGNlcHQgc29tZW5vbmFtZToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgeHl6KCkKLSAgICAgICAgIiIiCi0gICAgICAgICkKKyAgICAgICAgZGVmIHh5eigpOgorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAg
ICAgIGV4Y2VwdCBzb21lbm9uYW1lOiAgIyB0eXBlOiBpZ25vcmVbbmFtZS1kZWZpbmVkXSAjIG5v
cWE6IEY4MjEKKyAgICAgICAgICAgICAgICBwYXNzICAjIHByYWdtYTogbm8gY292ZXIKKwogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBleGVjKHNvdXJjZS5jb21waWxlKCkpCisgICAgICAgICAg
ICB4eXooKQogICAgICAgICBleGNlcHQgTmFtZUVycm9yOgotICAgICAgICAgICAgdGIgPSBfcHl0
ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKS50cmFjZWJhY2sKLSAgICAgICAgICAgIHByaW50KHRi
Wy0xXS5nZXRzb3VyY2UoKSkKLSAgICAgICAgICAgIHMgPSBzdHIodGJbLTFdLmdldHNvdXJjZSgp
KQotICAgICAgICAgICAgYXNzZXJ0IHMuc3RhcnRzd2l0aCgiZGVmIHh5eigpOlxuICAgIHRyeToi
KQotICAgICAgICAgICAgYXNzZXJ0IHMuc3RyaXAoKS5lbmRzd2l0aCgiZXhjZXB0IHNvbWVub25h
bWU6IikKKyAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8u
ZnJvbV9jdXJyZW50KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZSwg
ImRpZCBub3QgcmFpc2UgTmFtZUVycm9yIgorCisgICAgICAgIHRiID0gZXhjaW5mby50cmFjZWJh
Y2sKKyAgICAgICAgc291cmNlID0gdGJbLTFdLmdldHNvdXJjZSgpCisgICAgICAgIGFzc2VydCBz
b3VyY2UgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHNvdXJjZS5kZWluZGVudCgpLmxpbmVz
ID09IFsKKyAgICAgICAgICAgICJkZWYgeHl6KCk6IiwKKyAgICAgICAgICAgICIgICAgdHJ5OiIs
CisgICAgICAgICAgICAiICAgICAgICByYWlzZSBWYWx1ZUVycm9yIiwKKyAgICAgICAgICAgICIg
ICAgZXhjZXB0IHNvbWVub25hbWU6ICAjIHR5cGU6IGlnbm9yZVtuYW1lLWRlZmluZWRdICMgbm9x
YTogRjgyMSIsCisgICAgICAgIF0KIAogICAgIGRlZiB0ZXN0X3RyYWNlYmFja19jdXQoc2VsZik6
CiAgICAgICAgIGNvID0gX3B5dGVzdC5fY29kZS5Db2RlKGYpCkBAIC0xNzEsNyArMTYzLDggQEAg
Y2xhc3MgVGVzdFRyYWNlYmFja19mX2dfaChvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfdHJhY2Vi
YWNrX2N1dF9leGNsdWRlcGF0aChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgiZGVmIGYoKTogcmFpc2UgVmFsdWVFcnJvciIpCi0gICAgICAgIGV4Y2luZm8g
PSBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsICJwLnB5aW1wb3J0KCkuZigpIikKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAgICBw
LnB5aW1wb3J0KCkuZigpCiAgICAgICAgIGJhc2VkaXIgPSBweS5wYXRoLmxvY2FsKHB5dGVzdC5f
X2ZpbGVfXykuZGlycGF0aCgpCiAgICAgICAgIG5ld3RyYWNlYmFjayA9IGV4Y2luZm8udHJhY2Vi
YWNrLmN1dChleGNsdWRlcGF0aD1iYXNlZGlyKQogICAgICAgICBmb3IgeCBpbiBuZXd0cmFjZWJh
Y2s6CkBAIC0xOTQsNyArMTg3LDYgQEAgY2xhc3MgVGVzdFRyYWNlYmFja19mX2dfaChvYmplY3Qp
OgogICAgICAgICBdLAogICAgICkKICAgICBkZWYgdGVzdF90cmFjZWJhY2tfZmlsdGVyX3NlbGVj
dGl2ZShzZWxmLCB0cmFjZWJhY2toaWRlLCBtYXRjaGluZyk6Ci0KICAgICAgICAgZGVmIGYoKToK
ICAgICAgICAgICAgICMKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKQEAgLTIyNCw3ICsy
MTYsNiBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrX2ZfZ19oKG9iamVjdCk6CiAgICAgICAgICAgICBh
c3NlcnQgbGVuKG50cmFjZWJhY2spID09IGxlbih0cmFjZWJhY2spIC0gMQogCiAgICAgZGVmIHRl
c3RfdHJhY2ViYWNrX3JlY3Vyc2lvbl9pbmRleChzZWxmKToKLQogICAgICAgICBkZWYgZihuKToK
ICAgICAgICAgICAgIGlmIG4gPCAxMDoKICAgICAgICAgICAgICAgICBuICs9IDEKQEAgLTIzNiwz
NSArMjI3LDM1IEBAIGNsYXNzIFRlc3RUcmFjZWJhY2tfZl9nX2gob2JqZWN0KToKICAgICAgICAg
YXNzZXJ0IHJlY2luZGV4ID09IDMKIAogICAgIGRlZiB0ZXN0X3RyYWNlYmFja19vbmx5X3NwZWNp
ZmljX3JlY3Vyc2lvbl9lcnJvcnMoc2VsZiwgbW9ua2V5cGF0Y2gpOgotCiAgICAgICAgIGRlZiBm
KG4pOgogICAgICAgICAgICAgaWYgbiA9PSAwOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcigiaGVsbG8iKQogICAgICAgICAgICAgZihuIC0gMSkKIAotICAgICAgICBleGNpbmZv
ID0gcHl0ZXN0LnJhaXNlcyhSdW50aW1lRXJyb3IsIGYsIDEwMCkKKyAgICAgICAgZXhjaW5mbyA9
IHB5dGVzdC5yYWlzZXMoUnVudGltZUVycm9yLCBmLCAyNSkKICAgICAgICAgbW9ua2V5cGF0Y2gu
ZGVsYXR0cihleGNpbmZvLnRyYWNlYmFjay5fX2NsYXNzX18sICJyZWN1cnNpb25pbmRleCIpCiAg
ICAgICAgIHJlcHIgPSBleGNpbmZvLmdldHJlcHIoKQogICAgICAgICBhc3NlcnQgIlJ1bnRpbWVF
cnJvcjogaGVsbG8iIGluIHN0cihyZXByLnJlcHJjcmFzaCkKIAotICAgIGRlZiB0ZXN0X3RyYWNl
YmFja19ub19yZWN1cnNpb25faW5kZXgoc2VsZik6Ci0KLSAgICAgICAgZGVmIGRvX3N0dWZmKCk6
CisgICAgZGVmIHRlc3RfdHJhY2ViYWNrX25vX3JlY3Vyc2lvbl9pbmRleChzZWxmKSAtPiBOb25l
OgorICAgICAgICBkZWYgZG9fc3R1ZmYoKSAtPiBOb25lOgogICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yCiAKLSAgICAgICAgZGVmIHJlcmFpc2VfbWUoKToKKyAgICAgICAgZGVmIHJlcmFp
c2VfbWUoKSAtPiBOb25lOgogICAgICAgICAgICAgaW1wb3J0IHN5cwogCiAgICAgICAgICAgICBl
eGMsIHZhbCwgdGIgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgcHkuYnVpbHRpbi5fcmVy
YWlzZShleGMsIHZhbCwgdGIpCisgICAgICAgICAgICBhc3NlcnQgdmFsIGlzIG5vdCBOb25lCisg
ICAgICAgICAgICByYWlzZSB2YWwud2l0aF90cmFjZWJhY2sodGIpCiAKLSAgICAgICAgZGVmIGYo
bik6CisgICAgICAgIGRlZiBmKG46IGludCkgLT4gTm9uZToKICAgICAgICAgICAgIHRyeToKICAg
ICAgICAgICAgICAgICBkb19zdHVmZigpCi0gICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWEKKyAg
ICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHJlcmFpc2Vf
bWUoKQogCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFJ1bnRpbWVFcnJvciwgZiwg
OCkKKyAgICAgICAgYXNzZXJ0IGV4Y2luZm8gaXMgbm90IE5vbmUKICAgICAgICAgdHJhY2ViYWNr
ID0gZXhjaW5mby50cmFjZWJhY2sKICAgICAgICAgcmVjaW5kZXggPSB0cmFjZWJhY2sucmVjdXJz
aW9uaW5kZXgoKQogICAgICAgICBhc3NlcnQgcmVjaW5kZXggaXMgTm9uZQpAQCAtMjc0LDcgKzI2
NSw3IEBAIGNsYXNzIFRlc3RUcmFjZWJhY2tfZl9nX2gob2JqZWN0KToKICAgICAgICAgZGVjb3Jh
dG9yID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgiZGVjb3JhdG9yIikuZGVjb3JhdG9yCiAKICAgICAg
ICAgZGVmIGxvZyhmLCAqaywgKiprdyk6Ci0gICAgICAgICAgICBwcmludCgiJXMgJXMiICUgKGss
IGt3KSkKKyAgICAgICAgICAgIHByaW50KCJ7fSB7fSIuZm9ybWF0KGssIGt3KSkKICAgICAgICAg
ICAgIGYoKmssICoqa3cpCiAKICAgICAgICAgbG9nID0gZGVjb3JhdG9yKGxvZykKQEAgLTI4OCw3
ICsyNzksNiBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrX2ZfZ19oKG9iamVjdCk6CiAgICAgICAgIGFz
c2VydCBleGNpbmZvLnRyYWNlYmFjay5yZWN1cnNpb25pbmRleCgpIGlzIE5vbmUKIAogICAgIGRl
ZiB0ZXN0X3RyYWNlYmFja19nZXRjcmFzaGVudHJ5KHNlbGYpOgotCiAgICAgICAgIGRlZiBpKCk6
CiAgICAgICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IKQEAgLTMxMiw3ICszMDIsNiBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrX2ZfZ19o
KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBlbnRyeS5mcmFtZS5jb2RlLm5hbWUgPT0gImgiCiAK
ICAgICBkZWYgdGVzdF90cmFjZWJhY2tfZ2V0Y3Jhc2hlbnRyeV9lbXB0eShzZWxmKToKLQogICAg
ICAgICBkZWYgZygpOgogICAgICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yCkBAIC0zMzMsMjQgKzMyMiwzNCBAQCBjbGFzcyBUZXN0
VHJhY2ViYWNrX2ZfZ19oKG9iamVjdCk6CiBkZWYgdGVzdF9leGNpbmZvX2V4Y29ubHkoKToKICAg
ICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBoKQogICAgIGFzc2VydCBleGNp
bmZvLmV4Y29ubHkoKS5zdGFydHN3aXRoKCJWYWx1ZUVycm9yIikKLSAgICBleGNpbmZvID0gcHl0
ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAicmFpc2UgVmFsdWVFcnJvcignaGVsbG9cXG53b3JsZCcp
IikKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcikgYXMgZXhjaW5mbzoKKyAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiaGVsbG9cbndvcmxkIikKICAgICBtc2cgPSBleGNpbmZvLmV4
Y29ubHkodHJ5c2hvcnQ9VHJ1ZSkKICAgICBhc3NlcnQgbXNnLnN0YXJ0c3dpdGgoIlZhbHVlRXJy
b3IiKQogICAgIGFzc2VydCBtc2cuZW5kc3dpdGgoIndvcmxkIikKIAogCi1kZWYgdGVzdF9leGNp
bmZvX3JlcHIoKToKLSAgICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBoKQot
ICAgIHMgPSByZXByKGV4Y2luZm8pCi0gICAgYXNzZXJ0IHMgPT0gIjxFeGNlcHRpb25JbmZvIFZh
bHVlRXJyb3IgdGJsZW49ND4iCitkZWYgdGVzdF9leGNpbmZvX3JlcHJfc3RyKCkgLT4gTm9uZToK
KyAgICBleGNpbmZvMSA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgaCkKKyAgICBhc3NlcnQg
cmVwcihleGNpbmZvMSkgPT0gIjxFeGNlcHRpb25JbmZvIFZhbHVlRXJyb3IoKSB0Ymxlbj00PiIK
KyAgICBhc3NlcnQgc3RyKGV4Y2luZm8xKSA9PSAiPEV4Y2VwdGlvbkluZm8gVmFsdWVFcnJvcigp
IHRibGVuPTQ+IgogCisgICAgY2xhc3MgQ3VzdG9tRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAg
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAiY3VzdG9tX3JlcHIi
CisKKyAgICBkZWYgcmFpc2VzKCkgLT4gTm9uZToKKyAgICAgICAgcmFpc2UgQ3VzdG9tRXhjZXB0
aW9uKCkKKworICAgIGV4Y2luZm8yID0gcHl0ZXN0LnJhaXNlcyhDdXN0b21FeGNlcHRpb24sIHJh
aXNlcykKKyAgICBhc3NlcnQgcmVwcihleGNpbmZvMikgPT0gIjxFeGNlcHRpb25JbmZvIGN1c3Rv
bV9yZXByIHRibGVuPTI+IgorICAgIGFzc2VydCBzdHIoZXhjaW5mbzIpID09ICI8RXhjZXB0aW9u
SW5mbyBjdXN0b21fcmVwciB0Ymxlbj0yPiIKIAotZGVmIHRlc3RfZXhjaW5mb19zdHIoKToKLSAg
ICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBoKQotICAgIHMgPSBzdHIoZXhj
aW5mbykKLSAgICBhc3NlcnQgcy5zdGFydHN3aXRoKF9fZmlsZV9fWzotOV0pICAjIHB5YyBmaWxl
IGFuZCAkcHkuY2xhc3MKLSAgICBhc3NlcnQgcy5lbmRzd2l0aCgiVmFsdWVFcnJvciIpCi0gICAg
YXNzZXJ0IGxlbihzLnNwbGl0KCI6IikpID49IDMgICMgb24gd2luZG93cyBpdCdzIDQKKworZGVm
IHRlc3RfZXhjaW5mb19mb3JfbGF0ZXIoKSAtPiBOb25lOgorICAgIGUgPSBFeGNlcHRpb25JbmZv
W0Jhc2VFeGNlcHRpb25dLmZvcl9sYXRlcigpCisgICAgYXNzZXJ0ICJmb3IgcmFpc2VzIiBpbiBy
ZXByKGUpCisgICAgYXNzZXJ0ICJmb3IgcmFpc2VzIiBpbiBzdHIoZSkKIAogCiBkZWYgdGVzdF9l
eGNpbmZvX2VycmlzaW5zdGFuY2UoKToKQEAgLTM2Miw3ICszNjEsNyBAQCBkZWYgdGVzdF9leGNp
bmZvX25vX3NvdXJjZWNvZGUoKToKICAgICB0cnk6CiAgICAgICAgIGV4ZWMoInJhaXNlIFZhbHVl
RXJyb3IoKSIpCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIGV4Y2luZm8gPSBfcHl0
ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29k
ZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAgICAgcyA9IHN0cihleGNpbmZvLnRyYWNl
YmFja1stMV0pCiAgICAgYXNzZXJ0IHMgPT0gIiAgRmlsZSAnPHN0cmluZz4nOjEgaW4gPG1vZHVs
ZT5cbiAgPz8/XG4iCiAKQEAgLTM3OCw4ICszNzcsOCBAQCBkZWYgdGVzdF9leGNpbmZvX25vX3B5
dGhvbl9zb3VyY2Vjb2RlKHRtcGRpcik6CiAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFs
dWVFcnJvciwgdGVtcGxhdGUucmVuZGVyLCBoPWgpCiAgICAgZm9yIGl0ZW0gaW4gZXhjaW5mby50
cmFjZWJhY2s6CiAgICAgICAgIHByaW50KGl0ZW0pICAjIFhYWDogZm9yIHNvbWUgcmVhc29uIGpp
bmphLlRlbXBsYXRlLnJlbmRlciBpcyBwcmludGVkIGluIGZ1bGwKLSAgICAgICAgaXRlbS5zb3Vy
Y2UgICMgc2hvdWxkbnQgZmFpbAotICAgICAgICBpZiBpdGVtLnBhdGguYmFzZW5hbWUgPT0gInRl
c3QudHh0IjoKKyAgICAgICAgaXRlbS5zb3VyY2UgICMgc2hvdWxkbid0IGZhaWwKKyAgICAgICAg
aWYgaXNpbnN0YW5jZShpdGVtLnBhdGgsIHB5LnBhdGgubG9jYWwpIGFuZCBpdGVtLnBhdGguYmFz
ZW5hbWUgPT0gInRlc3QudHh0IjoKICAgICAgICAgICAgIGFzc2VydCBzdHIoaXRlbS5zb3VyY2Up
ID09ICJ7eyBoKCl9fToiCiAKIApAQCAtMzg3LDcgKzM4Niw3IEBAIGRlZiB0ZXN0X2VudHJ5c291
cmNlX1F1ZXVlX2V4YW1wbGUoKToKICAgICB0cnk6CiAgICAgICAgIHF1ZXVlLlF1ZXVlKCkuZ2V0
KHRpbWVvdXQ9MC4wMDEpCiAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgotICAgICAgICBleGNpbmZv
ID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAgICAgZXhjaW5mbyA9IF9weXRl
c3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAgIGVudHJ5ID0gZXhjaW5m
by50cmFjZWJhY2tbLTFdCiAgICAgc291cmNlID0gZW50cnkuZ2V0c291cmNlKCkKICAgICBhc3Nl
cnQgc291cmNlIGlzIG5vdCBOb25lCkBAIC0zOTksNyArMzk4LDcgQEAgZGVmIHRlc3RfY29kZXBh
dGhfUXVldWVfZXhhbXBsZSgpOgogICAgIHRyeToKICAgICAgICAgcXVldWUuUXVldWUoKS5nZXQo
dGltZW91dD0wLjAwMSkKICAgICBleGNlcHQgcXVldWUuRW1wdHk6Ci0gICAgICAgIGV4Y2luZm8g
PSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICBleGNpbmZvID0gX3B5dGVz
dC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAgICAgZW50cnkgPSBleGNpbmZv
LnRyYWNlYmFja1stMV0KICAgICBwYXRoID0gZW50cnkucGF0aAogICAgIGFzc2VydCBpc2luc3Rh
bmNlKHBhdGgsIHB5LnBhdGgubG9jYWwpCkBAIC00MjUsMTYgKzQyNCwyMyBAQCBkZWYgdGVzdF9t
YXRjaF9yYWlzZXNfZXJyb3IodGVzdGRpcik6CiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCi0gICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKkFzc2VydGlvbkVycm9yKlBhdHRlcm4qWzEyM10qbm90IGZvdW5k
KiJdKQogCisgICAgZXhjX21zZyA9ICJSZWdleCBwYXR0ZXJuICdbW10xMjNbXV0rJyBkb2VzIG5v
dCBtYXRjaCAnZGl2aXNpb24gYnkgemVybycuIgorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIkUgKiBBc3NlcnRpb25FcnJvcjoge30iLmZvcm1hdChleGNfbXNnKV0pCisgICAgcmVz
dWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUqIikK
KworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWZ1bGx0cmFjZSIpCisgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQgIT0gMAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAg
ICAgICAgWyIqX190cmFjZWJhY2toaWRlX18gPSBUcnVlKiIsICJFICogQXNzZXJ0aW9uRXJyb3I6
IHt9Ii5mb3JtYXQoZXhjX21zZyldCisgICAgKQogCi1jbGFzcyBUZXN0Rm9ybWF0dGVkRXhjaW5m
byhvYmplY3QpOgogCitjbGFzcyBUZXN0Rm9ybWF0dGVkRXhjaW5mbzoKICAgICBAcHl0ZXN0LmZp
eHR1cmUKLSAgICBkZWYgaW1wb3J0YXNtb2Qoc2VsZiwgcmVxdWVzdCk6Ci0KKyAgICBkZWYgaW1w
b3J0YXNtb2Qoc2VsZiwgcmVxdWVzdCwgX3N5c19zbmFwc2hvdCk6CiAgICAgICAgIGRlZiBpbXBv
cnRhc21vZChzb3VyY2UpOgotICAgICAgICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3Vy
Y2Uoc291cmNlKQorICAgICAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KHNvdXJjZSkK
ICAgICAgICAgICAgIHRtcGRpciA9IHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCJ0bXBkaXIiKQog
ICAgICAgICAgICAgbW9kcGF0aCA9IHRtcGRpci5qb2luKCJtb2QucHkiKQogICAgICAgICAgICAg
dG1wZGlyLmVuc3VyZSgiX19pbml0X18ucHkiKQpAQCAtNDQ1LDIzICs0NTEsMTMgQEAgY2xhc3Mg
VGVzdEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gaW1wb3J0YXNt
b2QKIAotICAgIGRlZiBleGNpbmZvX2Zyb21fZXhlYyhzZWxmLCBzb3VyY2UpOgotICAgICAgICBz
b3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShzb3VyY2UpLnN0cmlwKCkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZXhlYyhzb3VyY2UuY29tcGlsZSgpKQotICAgICAgICBleGNlcHQgS2V5
Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQ6ICAjIG5v
cWEKLSAgICAgICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAg
ICAgICBhc3NlcnQgMCwgImRpZCBub3QgcmFpc2UiCi0KICAgICBkZWYgdGVzdF9yZXByX3NvdXJj
ZShzZWxmKToKICAgICAgICAgcHIgPSBGb3JtYXR0ZWRFeGNpbmZvKCkKICAgICAgICAgc291cmNl
ID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIi
IlwKICAgICAgICAgICAgIGRlZiBmKHgpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAg
IiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgKS5zdHJpcCgpCiAgICAgICAgIHByLmZsb3df
bWFya2VyID0gInwiCiAgICAgICAgIGxpbmVzID0gcHIuZ2V0X3NvdXJjZShzb3VyY2UsIDApCkBA
IC00NjksMjAgKzQ2NSwzMSBAQCBjbGFzcyBUZXN0Rm9ybWF0dGVkRXhjaW5mbyhvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgbGluZXNbMF0gPT0gInwgICBkZWYgZih4KToiCiAgICAgICAgIGFzc2Vy
dCBsaW5lc1sxXSA9PSAiICAgICAgICBwYXNzIgogCi0gICAgZGVmIHRlc3RfcmVwcl9zb3VyY2Vf
ZXhjaW5mbyhzZWxmKToKLSAgICAgICAgIiIiIGNoZWNrIGlmIGluZGVudGF0aW9uIGlzIHJpZ2h0
ICIiIgotICAgICAgICBwciA9IEZvcm1hdHRlZEV4Y2luZm8oKQotICAgICAgICBleGNpbmZvID0g
c2VsZi5leGNpbmZvX2Zyb21fZXhlYygKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAg
IGRlZiBmKCk6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICAgICAgICAg
ZigpCi0gICAgICAgICIiIgotICAgICAgICApCisgICAgZGVmIHRlc3RfcmVwcl9zb3VyY2VfZXhj
aW5mbyhzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJDaGVjayBpZiBpbmRlbnRhdGlvbiBpcyBy
aWdodC4iIiIKKyAgICAgICAgdHJ5OgorCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAg
ICAgICAgIDEgLyAwCisKKyAgICAgICAgICAgIGYoKQorCisgICAgICAgIGV4Y2VwdCBCYXNlRXhj
ZXB0aW9uOgorICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5m
by5mcm9tX2N1cnJlbnQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNl
LCAiZGlkIG5vdCByYWlzZSIKKwogICAgICAgICBwciA9IEZvcm1hdHRlZEV4Y2luZm8oKQogICAg
ICAgICBzb3VyY2UgPSBwci5fZ2V0ZW50cnlzb3VyY2UoZXhjaW5mby50cmFjZWJhY2tbLTFdKQor
ICAgICAgICBhc3NlcnQgc291cmNlIGlzIG5vdCBOb25lCiAgICAgICAgIGxpbmVzID0gcHIuZ2V0
X3NvdXJjZShzb3VyY2UsIDEsIGV4Y2luZm8pCi0gICAgICAgIGFzc2VydCBsaW5lcyA9PSBbIiAg
ICBkZWYgZigpOiIsICI+ICAgICAgIGFzc2VydCAwIiwgIkUgICAgICAgQXNzZXJ0aW9uRXJyb3Ii
XQorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIHByaW50KGxpbmUpCisg
ICAgICAgIGFzc2VydCBsaW5lcyA9PSBbCisgICAgICAgICAgICAiICAgIGRlZiBmKCk6IiwKKyAg
ICAgICAgICAgICI+ICAgICAgIDEgLyAwIiwKKyAgICAgICAgICAgICJFICAgICAgIFplcm9EaXZp
c2lvbkVycm9yOiBkaXZpc2lvbiBieSB6ZXJvIiwKKyAgICAgICAgXQogCiAgICAgZGVmIHRlc3Rf
cmVwcl9zb3VyY2Vfbm90X2V4aXN0aW5nKHNlbGYpOgogICAgICAgICBwciA9IEZvcm1hdHRlZEV4
Y2luZm8oKQpAQCAtNDkwLDExICs0OTcsMTAgQEAgY2xhc3MgVGVzdEZvcm1hdHRlZEV4Y2luZm8o
b2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhlYyhjbykKICAgICAgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNl
cHRpb25JbmZvKCkKKyAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlv
bkluZm8uZnJvbV9jdXJyZW50KCkKICAgICAgICAgcmVwciA9IHByLnJlcHJfZXhjaW5mbyhleGNp
bmZvKQogICAgICAgICBhc3NlcnQgcmVwci5yZXBydHJhY2ViYWNrLnJlcHJlbnRyaWVzWzFdLmxp
bmVzWzBdID09ICI+ICAgPz8/IgotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6
Ci0gICAgICAgICAgICBhc3NlcnQgcmVwci5jaGFpblswXVswXS5yZXByZW50cmllc1sxXS5saW5l
c1swXSA9PSAiPiAgID8/PyIKKyAgICAgICAgYXNzZXJ0IHJlcHIuY2hhaW5bMF1bMF0ucmVwcmVu
dHJpZXNbMV0ubGluZXNbMF0gPT0gIj4gICA/Pz8iCiAKICAgICBkZWYgdGVzdF9yZXByX21hbnlf
bGluZV9zb3VyY2Vfbm90X2V4aXN0aW5nKHNlbGYpOgogICAgICAgICBwciA9IEZvcm1hdHRlZEV4
Y2luZm8oKQpAQCAtNTA5LDg5ICs1MTUsODQgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIGV4ZWMoY28pCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgot
ICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCisgICAg
ICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVu
dCgpCiAgICAgICAgIHJlcHIgPSBwci5yZXByX2V4Y2luZm8oZXhjaW5mbykKICAgICAgICAgYXNz
ZXJ0IHJlcHIucmVwcnRyYWNlYmFjay5yZXByZW50cmllc1sxXS5saW5lc1swXSA9PSAiPiAgID8/
PyIKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgotICAgICAgICAgICAgYXNz
ZXJ0IHJlcHIuY2hhaW5bMF1bMF0ucmVwcmVudHJpZXNbMV0ubGluZXNbMF0gPT0gIj4gICA/Pz8i
CisgICAgICAgIGFzc2VydCByZXByLmNoYWluWzBdWzBdLnJlcHJlbnRyaWVzWzFdLmxpbmVzWzBd
ID09ICI+ICAgPz8/IgogCi0gICAgZGVmIHRlc3RfcmVwcl9zb3VyY2VfZmFpbGluZ19mdWxsc291
cmNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JlcHJfc291cmNlX2ZhaWxpbmdfZnVsbHNvdXJjZShz
ZWxmLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICAgICAgcHIgPSBGb3JtYXR0ZWRFeGNpbmZv
KCkKIAotICAgICAgICBjbGFzcyBGYWtlQ29kZShvYmplY3QpOgotCi0gICAgICAgICAgICBjbGFz
cyByYXcob2JqZWN0KToKLSAgICAgICAgICAgICAgICBjb19maWxlbmFtZSA9ICI/IgotCi0gICAg
ICAgICAgICBwYXRoID0gIj8iCi0gICAgICAgICAgICBmaXJzdGxpbmVubyA9IDUKLQotICAgICAg
ICAgICAgZGVmIGZ1bGxzb3VyY2Uoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LQotICAgICAgICAgICAgZnVsbHNvdXJjZSA9IHByb3BlcnR5KGZ1bGxzb3VyY2UpCi0KLSAgICAg
ICAgY2xhc3MgRmFrZUZyYW1lKG9iamVjdCk6Ci0gICAgICAgICAgICBjb2RlID0gRmFrZUNvZGUo
KQotICAgICAgICAgICAgZl9sb2NhbHMgPSB7fQotICAgICAgICAgICAgZl9nbG9iYWxzID0ge30K
LQotICAgICAgICBjbGFzcyBGYWtlVHJhY2ViYWNrRW50cnkoX3B5dGVzdC5fY29kZS5UcmFjZWJh
Y2suRW50cnkpOgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdGIsIGV4Y2luZm89
Tm9uZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSA1ICsgMwotCi0gICAgICAgICAg
ICBAcHJvcGVydHkKLSAgICAgICAgICAgIGRlZiBmcmFtZShzZWxmKToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gRmFrZUZyYW1lKCkKLQotICAgICAgICBjbGFzcyBUcmFjZWJhY2soX3B5dGVzdC5f
Y29kZS5UcmFjZWJhY2spOgotICAgICAgICAgICAgRW50cnkgPSBGYWtlVHJhY2ViYWNrRW50cnkK
LQotICAgICAgICBjbGFzcyBGYWtlRXhjaW5mbyhfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8p
OgotICAgICAgICAgICAgdHlwZW5hbWUgPSAiRm9vIgotICAgICAgICAgICAgdmFsdWUgPSBFeGNl
cHRpb24oKQotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAg
ICAgcGFzcwotCi0gICAgICAgICAgICBkZWYgZXhjb25seShzZWxmLCB0cnlzaG9ydCk6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICJFWEMiCi0KLSAgICAgICAgICAgIGRlZiBlcnJpc2luc3RhbmNl
KHNlbGYsIGNscyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgZXhj
aW5mbyA9IEZha2VFeGNpbmZvKCkKLQotICAgICAgICBjbGFzcyBGYWtlUmF3VEIob2JqZWN0KToK
LSAgICAgICAgICAgIHRiX25leHQgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEg
LyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIGV4Y2lu
Zm8gPSBFeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAKLSAgICAgICAgdGIgPSBGYWtlUmF3
VEIoKQotICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IFRyYWNlYmFjayh0YikKKyAgICAgICAg
d2l0aCBtb25rZXlwYXRjaC5jb250ZXh0KCkgYXMgbToKKyAgICAgICAgICAgIG0uc2V0YXR0cihf
cHl0ZXN0Ll9jb2RlLkNvZGUsICJmdWxsc291cmNlIiwgcHJvcGVydHkobGFtYmRhIHNlbGY6IE5v
bmUpKQorICAgICAgICAgICAgcmVwciA9IHByLnJlcHJfZXhjaW5mbyhleGNpbmZvKQogCi0gICAg
ICAgIGZhaWwgPSBJT0Vycm9yKCkKLSAgICAgICAgcmVwciA9IHByLnJlcHJfZXhjaW5mbyhleGNp
bmZvKQogICAgICAgICBhc3NlcnQgcmVwci5yZXBydHJhY2ViYWNrLnJlcHJlbnRyaWVzWzBdLmxp
bmVzWzBdID09ICI+ICAgPz8/IgotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6
Ci0gICAgICAgICAgICBhc3NlcnQgcmVwci5jaGFpblswXVswXS5yZXByZW50cmllc1swXS5saW5l
c1swXSA9PSAiPiAgID8/PyIKKyAgICAgICAgYXNzZXJ0IHJlcHIuY2hhaW5bMF1bMF0ucmVwcmVu
dHJpZXNbMF0ubGluZXNbMF0gPT0gIj4gICA/Pz8iCiAKLSAgICAgICAgZmFpbCA9IHB5LmVycm9y
LkVOT0VOVCAgIyBub3FhCi0gICAgICAgIHJlcHIgPSBwci5yZXByX2V4Y2luZm8oZXhjaW5mbykK
LSAgICAgICAgYXNzZXJ0IHJlcHIucmVwcnRyYWNlYmFjay5yZXByZW50cmllc1swXS5saW5lc1sw
XSA9PSAiPiAgID8/PyIKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgotICAg
ICAgICAgICAgYXNzZXJ0IHJlcHIuY2hhaW5bMF1bMF0ucmVwcmVudHJpZXNbMF0ubGluZXNbMF0g
PT0gIj4gICA/Pz8iCi0KLSAgICBkZWYgdGVzdF9yZXByX2xvY2FsKHNlbGYpOgorICAgIGRlZiB0
ZXN0X3JlcHJfbG9jYWwoc2VsZikgLT4gTm9uZToKICAgICAgICAgcCA9IEZvcm1hdHRlZEV4Y2lu
Zm8oc2hvd2xvY2Fscz1UcnVlKQogICAgICAgICBsb2MgPSB7InkiOiA1LCAieiI6IDcsICJ4Ijog
MywgIkB4IjogMiwgIl9fYnVpbHRpbnNfXyI6IHt9fQogICAgICAgICByZXBybG9jYWxzID0gcC5y
ZXByX2xvY2Fscyhsb2MpCisgICAgICAgIGFzc2VydCByZXBybG9jYWxzIGlzIG5vdCBOb25lCiAg
ICAgICAgIGFzc2VydCByZXBybG9jYWxzLmxpbmVzCiAgICAgICAgIGFzc2VydCByZXBybG9jYWxz
LmxpbmVzWzBdID09ICJfX2J1aWx0aW5zX18gPSA8YnVpbHRpbnM+IgogICAgICAgICBhc3NlcnQg
cmVwcmxvY2Fscy5saW5lc1sxXSA9PSAieCAgICAgICAgICA9IDMiCiAgICAgICAgIGFzc2VydCBy
ZXBybG9jYWxzLmxpbmVzWzJdID09ICJ5ICAgICAgICAgID0gNSIKICAgICAgICAgYXNzZXJ0IHJl
cHJsb2NhbHMubGluZXNbM10gPT0gInogICAgICAgICAgPSA3IgogCi0gICAgZGVmIHRlc3RfcmVw
cl90cmFjZWJhY2tlbnRyeV9saW5lcyhzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVmIHRlc3Rf
cmVwcl9sb2NhbF93aXRoX2Vycm9yKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGNsYXNzIE9ialdp
dGhFcnJvckluUmVwcjoKKyAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICAgICAgcCA9IEZvcm1hdHRl
ZEV4Y2luZm8oc2hvd2xvY2Fscz1UcnVlLCB0cnVuY2F0ZV9sb2NhbHM9RmFsc2UpCisgICAgICAg
IGxvYyA9IHsieCI6IE9ialdpdGhFcnJvckluUmVwcigpLCAiX19idWlsdGluc19fIjoge319Cisg
ICAgICAgIHJlcHJsb2NhbHMgPSBwLnJlcHJfbG9jYWxzKGxvYykKKyAgICAgICAgYXNzZXJ0IHJl
cHJsb2NhbHMgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHJlcHJsb2NhbHMubGluZXMKKyAg
ICAgICAgYXNzZXJ0IHJlcHJsb2NhbHMubGluZXNbMF0gPT0gIl9fYnVpbHRpbnNfXyA9IDxidWls
dGlucz4iCisgICAgICAgIGFzc2VydCAiW05vdEltcGxlbWVudGVkRXJyb3IoKSByYWlzZWQgaW4g
cmVwcigpXSIgaW4gcmVwcmxvY2Fscy5saW5lc1sxXQorCisgICAgZGVmIHRlc3RfcmVwcl9sb2Nh
bF93aXRoX2V4Y2VwdGlvbl9pbl9jbGFzc19wcm9wZXJ0eShzZWxmKSAtPiBOb25lOgorICAgICAg
ICBjbGFzcyBFeGNlcHRpb25XaXRoQnJva2VuQ2xhc3MoRXhjZXB0aW9uKToKKyAgICAgICAgICAg
ICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgaXQncyBieXBhc3NlZCBpbnRlbnRpb25hbGx5LgorICAg
ICAgICAgICAgQHByb3BlcnR5ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICAgICAgZGVmIF9fY2xh
c3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJvb20hIikKKwor
ICAgICAgICBjbGFzcyBPYmpXaXRoRXJyb3JJblJlcHI6CisgICAgICAgICAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uV2l0aEJyb2tlbkNsYXNz
KCkKKworICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhzaG93bG9jYWxzPVRydWUsIHRydW5j
YXRlX2xvY2Fscz1GYWxzZSkKKyAgICAgICAgbG9jID0geyJ4IjogT2JqV2l0aEVycm9ySW5SZXBy
KCksICJfX2J1aWx0aW5zX18iOiB7fX0KKyAgICAgICAgcmVwcmxvY2FscyA9IHAucmVwcl9sb2Nh
bHMobG9jKQorICAgICAgICBhc3NlcnQgcmVwcmxvY2FscyBpcyBub3QgTm9uZQorICAgICAgICBh
c3NlcnQgcmVwcmxvY2Fscy5saW5lcworICAgICAgICBhc3NlcnQgcmVwcmxvY2Fscy5saW5lc1sw
XSA9PSAiX19idWlsdGluc19fID0gPGJ1aWx0aW5zPiIKKyAgICAgICAgYXNzZXJ0ICJbRXhjZXB0
aW9uV2l0aEJyb2tlbkNsYXNzKCkgcmFpc2VkIGluIHJlcHIoKV0iIGluIHJlcHJsb2NhbHMubGlu
ZXNbMV0KKworICAgIGRlZiB0ZXN0X3JlcHJfbG9jYWxfdHJ1bmNhdGVkKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIGxvYyA9IHsibCI6IFtpIGZvciBpIGluIHJhbmdlKDEwKV19CisgICAgICAgIHAg
PSBGb3JtYXR0ZWRFeGNpbmZvKHNob3dsb2NhbHM9VHJ1ZSkKKyAgICAgICAgdHJ1bmNhdGVkX3Jl
cHJsb2NhbHMgPSBwLnJlcHJfbG9jYWxzKGxvYykKKyAgICAgICAgYXNzZXJ0IHRydW5jYXRlZF9y
ZXBybG9jYWxzIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCB0cnVuY2F0ZWRfcmVwcmxvY2Fs
cy5saW5lcworICAgICAgICBhc3NlcnQgdHJ1bmNhdGVkX3JlcHJsb2NhbHMubGluZXNbMF0gPT0g
ImwgICAgICAgICAgPSBbMCwgMSwgMiwgMywgNCwgNSwgLi4uXSIKKworICAgICAgICBxID0gRm9y
bWF0dGVkRXhjaW5mbyhzaG93bG9jYWxzPVRydWUsIHRydW5jYXRlX2xvY2Fscz1GYWxzZSkKKyAg
ICAgICAgZnVsbF9yZXBybG9jYWxzID0gcS5yZXByX2xvY2Fscyhsb2MpCisgICAgICAgIGFzc2Vy
dCBmdWxsX3JlcHJsb2NhbHMgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IGZ1bGxfcmVwcmxv
Y2Fscy5saW5lcworICAgICAgICBhc3NlcnQgZnVsbF9yZXBybG9jYWxzLmxpbmVzWzBdID09ICJs
ICAgICAgICAgID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldIgorCisgICAgZGVmIHRl
c3RfcmVwcl90cmFjZWJhY2tlbnRyeV9saW5lcyhzZWxmLCBpbXBvcnRhc21vZCkgLT4gTm9uZToK
ICAgICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
IGRlZiBmdW5jMSgpOgpAQCAtNjE4LDEzICs2MTksMTMgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAg
ICAgICAgIGFzc2VydCBsaW5lc1szXSA9PSAiRSAgICAgICB3b3JsZCIKICAgICAgICAgYXNzZXJ0
IG5vdCBsaW5lc1s0Ol0KIAotICAgICAgICBsb2MgPSByZXByX2VudHJ5LnJlcHJsb2NhbHMgaXMg
bm90IE5vbmUKICAgICAgICAgbG9jID0gcmVwcl9lbnRyeS5yZXByZmlsZWxvYworICAgICAgICBh
c3NlcnQgbG9jIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBsb2MucGF0aCA9PSBtb2QuX19m
aWxlX18KICAgICAgICAgYXNzZXJ0IGxvYy5saW5lbm8gPT0gMwogICAgICAgICAjIGFzc2VydCBs
b2MubWVzc2FnZSA9PSAiVmFsdWVFcnJvcjogaGVsbG8iCiAKLSAgICBkZWYgdGVzdF9yZXByX3Ry
YWNlYmFja2VudHJ5X2xpbmVzMihzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVmIHRlc3RfcmVw
cl90cmFjZWJhY2tlbnRyeV9saW5lczIoc2VsZiwgaW1wb3J0YXNtb2QsIHR3X21vY2spIC0+IE5v
bmU6CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBkZWYgZnVuYzEobSwgeCwgeSwgeik6CkBAIC02MzYsNiArNjM3LDcgQEAgcmFpc2UgVmFs
dWVFcnJvcigpCiAgICAgICAgIGVudHJ5ID0gZXhjaW5mby50cmFjZWJhY2tbLTFdCiAgICAgICAg
IHAgPSBGb3JtYXR0ZWRFeGNpbmZvKGZ1bmNhcmdzPVRydWUpCiAgICAgICAgIHJlcHJmdW5jYXJn
cyA9IHAucmVwcl9hcmdzKGVudHJ5KQorICAgICAgICBhc3NlcnQgcmVwcmZ1bmNhcmdzIGlzIG5v
dCBOb25lCiAgICAgICAgIGFzc2VydCByZXByZnVuY2FyZ3MuYXJnc1swXSA9PSAoIm0iLCByZXBy
KCJtIiAqIDkwKSkKICAgICAgICAgYXNzZXJ0IHJlcHJmdW5jYXJncy5hcmdzWzFdID09ICgieCIs
ICI1IikKICAgICAgICAgYXNzZXJ0IHJlcHJmdW5jYXJncy5hcmdzWzJdID09ICgieSIsICIxMyIp
CkBAIC02NDMsMTQgKzY0NSwxNCBAQCByYWlzZSBWYWx1ZUVycm9yKCkKIAogICAgICAgICBwID0g
Rm9ybWF0dGVkRXhjaW5mbyhmdW5jYXJncz1UcnVlKQogICAgICAgICByZXByX2VudHJ5ID0gcC5y
ZXByX3RyYWNlYmFja19lbnRyeShlbnRyeSkKKyAgICAgICAgYXNzZXJ0IHJlcHJfZW50cnkucmVw
cmZ1bmNhcmdzIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCByZXByX2VudHJ5LnJlcHJmdW5j
YXJncy5hcmdzID09IHJlcHJmdW5jYXJncy5hcmdzCi0gICAgICAgIHR3ID0gVFdNb2NrKCkKLSAg
ICAgICAgcmVwcl9lbnRyeS50b3Rlcm1pbmFsKHR3KQotICAgICAgICBhc3NlcnQgdHcubGluZXNb
MF0gPT0gIm0gPSAiICsgcmVwcigibSIgKiA5MCkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzFd
ID09ICJ4ID0gNSwgeSA9IDEzIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMl0gPT0gInogPSAi
ICsgcmVwcigieiIgKiAxMjApCisgICAgICAgIHJlcHJfZW50cnkudG90ZXJtaW5hbCh0d19tb2Nr
KQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1swXSA9PSAibSA9ICIgKyByZXByKCJtIiAq
IDkwKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxXSA9PSAieCA9IDUsIHkgPSAxMyIK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMl0gPT0gInogPSAiICsgcmVwcigieiIgKiAx
MjApCiAKLSAgICBkZWYgdGVzdF9yZXByX3RyYWNlYmFja2VudHJ5X2xpbmVzX3Zhcl9rd19hcmdz
KHNlbGYsIGltcG9ydGFzbW9kKToKKyAgICBkZWYgdGVzdF9yZXByX3RyYWNlYmFja2VudHJ5X2xp
bmVzX3Zhcl9rd19hcmdzKHNlbGYsIGltcG9ydGFzbW9kLCB0d19tb2NrKSAtPiBOb25lOgogICAg
ICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVm
IGZ1bmMxKHgsICp5LCAqKnopOgpAQCAtNjYyLDE4ICs2NjQsMTkgQEAgcmFpc2UgVmFsdWVFcnJv
cigpCiAgICAgICAgIGVudHJ5ID0gZXhjaW5mby50cmFjZWJhY2tbLTFdCiAgICAgICAgIHAgPSBG
b3JtYXR0ZWRFeGNpbmZvKGZ1bmNhcmdzPVRydWUpCiAgICAgICAgIHJlcHJmdW5jYXJncyA9IHAu
cmVwcl9hcmdzKGVudHJ5KQorICAgICAgICBhc3NlcnQgcmVwcmZ1bmNhcmdzIGlzIG5vdCBOb25l
CiAgICAgICAgIGFzc2VydCByZXByZnVuY2FyZ3MuYXJnc1swXSA9PSAoIngiLCByZXByKCJhIikp
CiAgICAgICAgIGFzc2VydCByZXByZnVuY2FyZ3MuYXJnc1sxXSA9PSAoInkiLCByZXByKCgiYiIs
KSkpCiAgICAgICAgIGFzc2VydCByZXByZnVuY2FyZ3MuYXJnc1syXSA9PSAoInoiLCByZXByKHsi
YyI6ICJkIn0pKQogCiAgICAgICAgIHAgPSBGb3JtYXR0ZWRFeGNpbmZvKGZ1bmNhcmdzPVRydWUp
CiAgICAgICAgIHJlcHJfZW50cnkgPSBwLnJlcHJfdHJhY2ViYWNrX2VudHJ5KGVudHJ5KQorICAg
ICAgICBhc3NlcnQgcmVwcl9lbnRyeS5yZXByZnVuY2FyZ3MKICAgICAgICAgYXNzZXJ0IHJlcHJf
ZW50cnkucmVwcmZ1bmNhcmdzLmFyZ3MgPT0gcmVwcmZ1bmNhcmdzLmFyZ3MKLSAgICAgICAgdHcg
PSBUV01vY2soKQotICAgICAgICByZXByX2VudHJ5LnRvdGVybWluYWwodHcpCi0gICAgICAgIGFz
c2VydCB0dy5saW5lc1swXSA9PSAieCA9ICdhJywgeSA9ICgnYicsKSwgeiA9IHsnYyc6ICdkJ30i
CisgICAgICAgIHJlcHJfZW50cnkudG90ZXJtaW5hbCh0d19tb2NrKQorICAgICAgICBhc3NlcnQg
dHdfbW9jay5saW5lc1swXSA9PSAieCA9ICdhJywgeSA9ICgnYicsKSwgeiA9IHsnYyc6ICdkJ30i
CiAKLSAgICBkZWYgdGVzdF9yZXByX3RyYWNlYmFja2VudHJ5X3Nob3J0KHNlbGYsIGltcG9ydGFz
bW9kKToKKyAgICBkZWYgdGVzdF9yZXByX3RyYWNlYmFja2VudHJ5X3Nob3J0KHNlbGYsIGltcG9y
dGFzbW9kKSAtPiBOb25lOgogICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgZGVmIGZ1bmMxKCk6CkBAIC02ODgsNiArNjkxLDcgQEAgcmFpc2Ug
VmFsdWVFcnJvcigpCiAgICAgICAgIGxpbmVzID0gcmVwcnRiLmxpbmVzCiAgICAgICAgIGJhc2Vu
YW1lID0gcHkucGF0aC5sb2NhbChtb2QuX19maWxlX18pLmJhc2VuYW1lCiAgICAgICAgIGFzc2Vy
dCBsaW5lc1swXSA9PSAiICAgIGZ1bmMxKCkiCisgICAgICAgIGFzc2VydCByZXBydGIucmVwcmZp
bGVsb2MgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGJhc2VuYW1lIGluIHN0cihyZXBydGIu
cmVwcmZpbGVsb2MucGF0aCkKICAgICAgICAgYXNzZXJ0IHJlcHJ0Yi5yZXByZmlsZWxvYy5saW5l
bm8gPT0gNQogCkBAIC02OTcsNiArNzAxLDcgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAg
IGxpbmVzID0gcmVwcnRiLmxpbmVzCiAgICAgICAgIGFzc2VydCBsaW5lc1swXSA9PSAnICAgIHJh
aXNlIFZhbHVlRXJyb3IoImhlbGxvIiknCiAgICAgICAgIGFzc2VydCBsaW5lc1sxXSA9PSAiRSAg
IFZhbHVlRXJyb3I6IGhlbGxvIgorICAgICAgICBhc3NlcnQgcmVwcnRiLnJlcHJmaWxlbG9jIGlz
IG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBiYXNlbmFtZSBpbiBzdHIocmVwcnRiLnJlcHJmaWxl
bG9jLnBhdGgpCiAgICAgICAgIGFzc2VydCByZXBydGIucmVwcmZpbGVsb2MubGluZW5vID09IDMK
IApAQCAtNzM2LDcgKzc0MSw3IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICByZXBydGIg
PSBwLnJlcHJfdHJhY2ViYWNrKGV4Y2luZm8pCiAgICAgICAgIGFzc2VydCBsZW4ocmVwcnRiLnJl
cHJlbnRyaWVzKSA9PSAzCiAKLSAgICBkZWYgdGVzdF90cmFjZWJhY2tfc2hvcnRfbm9fc291cmNl
KHNlbGYsIGltcG9ydGFzbW9kLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRlc3RfdHJhY2ViYWNr
X3Nob3J0X25vX3NvdXJjZShzZWxmLCBpbXBvcnRhc21vZCwgbW9ua2V5cGF0Y2gpIC0+IE5vbmU6
CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICBkZWYgZnVuYzEoKToKQEAgLTc0OSw3ICs3NTQsNyBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAg
ICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IENvZGUKIAogICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKENvZGUsICJwYXRoIiwgImJvZ3VzIikKLSAgICAgICAgZXhjaW5mby50
cmFjZWJhY2tbMF0uZnJhbWUuY29kZS5wYXRoID0gImJvZ3VzIgorICAgICAgICBleGNpbmZvLnRy
YWNlYmFja1swXS5mcmFtZS5jb2RlLnBhdGggPSAiYm9ndXMiICAjIHR5cGU6IGlnbm9yZVttaXNj
XQogICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhzdHlsZT0ic2hvcnQiKQogICAgICAgICBy
ZXBydGIgPSBwLnJlcHJfdHJhY2ViYWNrX2VudHJ5KGV4Y2luZm8udHJhY2ViYWNrWy0yXSkKICAg
ICAgICAgbGluZXMgPSByZXBydGIubGluZXMKQEAgLTc2Miw3ICs3NjcsNyBAQCByYWlzZSBWYWx1
ZUVycm9yKCkKICAgICAgICAgYXNzZXJ0IGxhc3RfbGluZXNbMF0gPT0gJyAgICByYWlzZSBWYWx1
ZUVycm9yKCJoZWxsbyIpJwogICAgICAgICBhc3NlcnQgbGFzdF9saW5lc1sxXSA9PSAiRSAgIFZh
bHVlRXJyb3I6IGhlbGxvIgogCi0gICAgZGVmIHRlc3RfcmVwcl90cmFjZWJhY2tfYW5kX2V4Y2lu
Zm8oc2VsZiwgaW1wb3J0YXNtb2QpOgorICAgIGRlZiB0ZXN0X3JlcHJfdHJhY2ViYWNrX2FuZF9l
eGNpbmZvKHNlbGYsIGltcG9ydGFzbW9kKSAtPiBOb25lOgogICAgICAgICBtb2QgPSBpbXBvcnRh
c21vZCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGYoeCk6CkBAIC03NzMsNyAr
Nzc4LDggQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAgICkKICAgICAgICAgZXhjaW5mbyA9
IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbW9kLmVudHJ5KQogCi0gICAgICAgIGZvciBzdHls
ZSBpbiAoImxvbmciLCAic2hvcnQiKToKKyAgICAgICAgc3R5bGVzID0gKCJsb25nIiwgInNob3J0
IikgICMgdHlwZTogVHVwbGVbX1RyYWNlYmFja1N0eWxlLCAuLi5dCisgICAgICAgIGZvciBzdHls
ZSBpbiBzdHlsZXM6CiAgICAgICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhzdHlsZT1zdHls
ZSkKICAgICAgICAgICAgIHJlcHJ0YiA9IHAucmVwcl90cmFjZWJhY2soZXhjaW5mbykKICAgICAg
ICAgICAgIGFzc2VydCBsZW4ocmVwcnRiLnJlcHJlbnRyaWVzKSA9PSAyCkBAIC03ODIsMTMgKzc4
OCwxNCBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgICAgIHJlcHIgPSBwLnJlcHJfZXhj
aW5mbyhleGNpbmZvKQogICAgICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcnRyYWNlYmFjawogICAg
ICAgICAgICAgYXNzZXJ0IGxlbihyZXByLnJlcHJ0cmFjZWJhY2sucmVwcmVudHJpZXMpID09IGxl
bihyZXBydGIucmVwcmVudHJpZXMpCi0gICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBd
ID49IDM6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHJlcHIuY2hhaW5bMF1bMF0KLSAgICAgICAg
ICAgICAgICBhc3NlcnQgbGVuKHJlcHIuY2hhaW5bMF1bMF0ucmVwcmVudHJpZXMpID09IGxlbihy
ZXBydGIucmVwcmVudHJpZXMpCisKKyAgICAgICAgICAgIGFzc2VydCByZXByLmNoYWluWzBdWzBd
CisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlcHIuY2hhaW5bMF1bMF0ucmVwcmVudHJpZXMpID09
IGxlbihyZXBydGIucmVwcmVudHJpZXMpCisgICAgICAgICAgICBhc3NlcnQgcmVwci5yZXByY3Jh
c2ggaXMgbm90IE5vbmUKICAgICAgICAgICAgIGFzc2VydCByZXByLnJlcHJjcmFzaC5wYXRoLmVu
ZHN3aXRoKCJtb2QucHkiKQogICAgICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcmNyYXNoLm1lc3Nh
Z2UgPT0gIlZhbHVlRXJyb3I6IDAiCiAKLSAgICBkZWYgdGVzdF9yZXByX3RyYWNlYmFja193aXRo
X2ludmFsaWRfY3dkKHNlbGYsIGltcG9ydGFzbW9kLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRl
c3RfcmVwcl90cmFjZWJhY2tfd2l0aF9pbnZhbGlkX2N3ZChzZWxmLCBpbXBvcnRhc21vZCwgbW9u
a2V5cGF0Y2gpIC0+IE5vbmU6CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAg
ICAgIiIiCiAgICAgICAgICAgICBkZWYgZih4KToKQEAgLTc5OSwxNiArODA2LDQ3IEBAIHJhaXNl
IFZhbHVlRXJyb3IoKQogICAgICAgICApCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2Vz
KFZhbHVlRXJyb3IsIG1vZC5lbnRyeSkKIAotICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbygp
CisgICAgICAgIHAgPSBGb3JtYXR0ZWRFeGNpbmZvKGFic3BhdGg9RmFsc2UpCisKKyAgICAgICAg
cmFpc2VkID0gMAorCisgICAgICAgIG9yaWdfZ2V0Y3dkID0gb3MuZ2V0Y3dkCiAKICAgICAgICAg
ZGVmIHJhaXNlb3MoKToKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMikKKyAgICAgICAgICAg
IG5vbmxvY2FsIHJhaXNlZAorICAgICAgICAgICAgdXBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKS5m
X2JhY2sKKyAgICAgICAgICAgIGFzc2VydCB1cGZyYW1lIGlzIG5vdCBOb25lCisgICAgICAgICAg
ICBpZiB1cGZyYW1lLmZfY29kZS5jb19uYW1lID09ICJjaGVja2VkX2NhbGwiOgorICAgICAgICAg
ICAgICAgICMgT25seSByYWlzZSB3aXRoIGV4cGVjdGVkIGNhbGxzLCBidXQgbm90IHZpYSBlLmcu
IGluc3BlY3QgZm9yCisgICAgICAgICAgICAgICAgIyBweTM4LXdpbmRvd3MuCisgICAgICAgICAg
ICAgICAgcmFpc2VkICs9IDEKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKDIsICJjdXN0
b21fb3NlcnJvciIpCisgICAgICAgICAgICByZXR1cm4gb3JpZ19nZXRjd2QoKQogCiAgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIob3MsICJnZXRjd2QiLCByYWlzZW9zKQogICAgICAgICBhc3Nl
cnQgcC5fbWFrZXBhdGgoX19maWxlX18pID09IF9fZmlsZV9fCi0gICAgICAgIHAucmVwcl90cmFj
ZWJhY2soZXhjaW5mbykKKyAgICAgICAgYXNzZXJ0IHJhaXNlZCA9PSAxCisgICAgICAgIHJlcHJf
dGIgPSBwLnJlcHJfdHJhY2ViYWNrKGV4Y2luZm8pCisKKyAgICAgICAgbWF0Y2hlciA9IExpbmVN
YXRjaGVyKHN0cihyZXByX3RiKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIG1hdGNoZXIuZm5tYXRj
aF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiZGVmIGVudHJ5KCk6IiwK
KyAgICAgICAgICAgICAgICAiPiAgICAgICBmKDApIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAg
ICAgICAgICAgICAgICAie306NTogIi5mb3JtYXQobW9kLl9fZmlsZV9fKSwKKyAgICAgICAgICAg
ICAgICAiXyBfICoiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIgICAg
ZGVmIGYoeCk6IiwKKyAgICAgICAgICAgICAgICAiPiAgICAgICByYWlzZSBWYWx1ZUVycm9yKHgp
IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICBWYWx1ZUVycm9yOiAwIiwKKyAgICAgICAgICAg
ICAgICAiIiwKKyAgICAgICAgICAgICAgICAie306MzogVmFsdWVFcnJvciIuZm9ybWF0KG1vZC5f
X2ZpbGVfXyksCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJhaXNl
ZCA9PSAzCiAKLSAgICBkZWYgdGVzdF9yZXByX2V4Y2luZm9fYWRkb3V0ZXJyKHNlbGYsIGltcG9y
dGFzbW9kKToKKyAgICBkZWYgdGVzdF9yZXByX2V4Y2luZm9fYWRkb3V0ZXJyKHNlbGYsIGltcG9y
dGFzbW9kLCB0d19tb2NrKToKICAgICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAg
ICAiIiIKICAgICAgICAgICAgIGRlZiBlbnRyeSgpOgpAQCAtODE4LDEyICs4NTYsMTEgQEAgcmFp
c2UgVmFsdWVFcnJvcigpCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFZhbHVlRXJy
b3IsIG1vZC5lbnRyeSkKICAgICAgICAgcmVwciA9IGV4Y2luZm8uZ2V0cmVwcigpCiAgICAgICAg
IHJlcHIuYWRkc2VjdGlvbigidGl0bGUiLCAiY29udGVudCIpCi0gICAgICAgIHR3bW9jayA9IFRX
TW9jaygpCi0gICAgICAgIHJlcHIudG90ZXJtaW5hbCh0d21vY2spCi0gICAgICAgIGFzc2VydCB0
d21vY2subGluZXNbLTFdID09ICJjb250ZW50IgotICAgICAgICBhc3NlcnQgdHdtb2NrLmxpbmVz
Wy0yXSA9PSAoIi0iLCAidGl0bGUiKQorICAgICAgICByZXByLnRvdGVybWluYWwodHdfbW9jaykK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbLTFdID09ICJjb250ZW50IgorICAgICAgICBh
c3NlcnQgdHdfbW9jay5saW5lc1stMl0gPT0gKCItIiwgInRpdGxlIikKIAotICAgIGRlZiB0ZXN0
X3JlcHJfZXhjaW5mb19yZXByY3Jhc2goc2VsZiwgaW1wb3J0YXNtb2QpOgorICAgIGRlZiB0ZXN0
X3JlcHJfZXhjaW5mb19yZXByY3Jhc2goc2VsZiwgaW1wb3J0YXNtb2QpIC0+IE5vbmU6CiAgICAg
ICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYg
ZW50cnkoKToKQEAgLTgzMiw2ICs4NjksNyBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAg
KQogICAgICAgICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBtb2QuZW50cnkp
CiAgICAgICAgIHJlcHIgPSBleGNpbmZvLmdldHJlcHIoKQorICAgICAgICBhc3NlcnQgcmVwci5y
ZXByY3Jhc2ggaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcmNyYXNoLnBhdGgu
ZW5kc3dpdGgoIm1vZC5weSIpCiAgICAgICAgIGFzc2VydCByZXByLnJlcHJjcmFzaC5saW5lbm8g
PT0gMwogICAgICAgICBhc3NlcnQgcmVwci5yZXByY3Jhc2gubWVzc2FnZSA9PSAiVmFsdWVFcnJv
ciIKQEAgLTg1Niw3ICs4OTQsNyBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgICAgIGFz
c2VydCByZXBydGIuZXh0cmFsaW5lID09ICIhISEgUmVjdXJzaW9uIGRldGVjdGVkIChzYW1lIGxv
Y2FscyAmIHBvc2l0aW9uKSIKICAgICAgICAgICAgIGFzc2VydCBzdHIocmVwcnRiKQogCi0gICAg
ZGVmIHRlc3RfcmVwcmV4Y2luZm9fZ2V0cmVwcihzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVm
IHRlc3RfcmVwcmV4Y2luZm9fZ2V0cmVwcihzZWxmLCBpbXBvcnRhc21vZCkgLT4gTm9uZToKICAg
ICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRl
ZiBmKHgpOgpAQCAtODY3LDI5ICs5MDUsMjcgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAg
ICkKICAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbW9kLmVudHJ5
KQogCi0gICAgICAgIGZvciBzdHlsZSBpbiAoInNob3J0IiwgImxvbmciLCAibm8iKToKKyAgICAg
ICAgc3R5bGVzID0gKCJzaG9ydCIsICJsb25nIiwgIm5vIikgICMgdHlwZTogVHVwbGVbX1RyYWNl
YmFja1N0eWxlLCAuLi5dCisgICAgICAgIGZvciBzdHlsZSBpbiBzdHlsZXM6CiAgICAgICAgICAg
ICBmb3Igc2hvd2xvY2FscyBpbiAoVHJ1ZSwgRmFsc2UpOgogICAgICAgICAgICAgICAgIHJlcHIg
PSBleGNpbmZvLmdldHJlcHIoc3R5bGU9c3R5bGUsIHNob3dsb2NhbHM9c2hvd2xvY2FscykKLSAg
ICAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdIDwgMzoKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVwciwgUmVwckV4Y2VwdGlvbkluZm8pCiAgICAgICAg
ICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcnRyYWNlYmFjay5zdHlsZSA9PSBzdHlsZQotICAgICAg
ICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKLSAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVwciwgRXhjZXB0aW9uQ2hhaW5SZXByKQotICAgICAgICAg
ICAgICAgICAgICBmb3IgcmVwciBpbiByZXByLmNoYWluOgotICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IHJlcHJbMF0uc3R5bGUgPT0gc3R5bGUKKworICAgICAgICAgICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKHJlcHIsIEV4Y2VwdGlvbkNoYWluUmVwcikKKyAgICAgICAgICAgICAgICBm
b3IgciBpbiByZXByLmNoYWluOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgclswXS5zdHls
ZSA9PSBzdHlsZQogCiAgICAgZGVmIHRlc3RfcmVwcmV4Y2luZm9fdW5pY29kZShzZWxmKToKICAg
ICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgogCiAgICAg
ICAgIGNsYXNzIE15UmVwcihUZXJtaW5hbFJlcHIpOgorICAgICAgICAgICAgZGVmIHRvdGVybWlu
YWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgorICAgICAgICAgICAgICAgIHR3
LmxpbmUoItGPIikKIAotICAgICAgICAgICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAg
ICAgICAgICAgICAgIHR3LmxpbmUocHkuYnVpbHRpbi5fdG90ZXh0KCLRjyIsICJ1dGYtOCIpKQot
Ci0gICAgICAgIHggPSBweS5idWlsdGluLl90b3RleHQoTXlSZXByKCkpCi0gICAgICAgIGFzc2Vy
dCB4ID09IHB5LmJ1aWx0aW4uX3RvdGV4dCgi0Y8iLCAidXRmLTgiKQorICAgICAgICB4ID0gc3Ry
KE15UmVwcigpKQorICAgICAgICBhc3NlcnQgeCA9PSAi0Y8iCiAKLSAgICBkZWYgdGVzdF90b3Rl
cm1pbmFsX2xvbmcoc2VsZiwgaW1wb3J0YXNtb2QpOgorICAgIGRlZiB0ZXN0X3RvdGVybWluYWxf
bG9uZyhzZWxmLCBpbXBvcnRhc21vZCwgdHdfbW9jayk6CiAgICAgICAgIG1vZCA9IGltcG9ydGFz
bW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgZyh4KToKQEAgLTkwMSwyNyAr
OTM3LDI2IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBleGNpbmZvID0gcHl0ZXN0LnJh
aXNlcyhWYWx1ZUVycm9yLCBtb2QuZikKICAgICAgICAgZXhjaW5mby50cmFjZWJhY2sgPSBleGNp
bmZvLnRyYWNlYmFjay5maWx0ZXIoKQogICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXByKCkK
LSAgICAgICAgdHcgPSBUV01vY2soKQotICAgICAgICByZXByLnRvdGVybWluYWwodHcpCi0gICAg
ICAgIGFzc2VydCB0dy5saW5lc1swXSA9PSAiIgotICAgICAgICB0dy5saW5lcy5wb3AoMCkKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzBdID09ICIgICAgZGVmIGYoKToiCi0gICAgICAgIGFzc2Vy
dCB0dy5saW5lc1sxXSA9PSAiPiAgICAgICBnKDMpIgotICAgICAgICBhc3NlcnQgdHcubGluZXNb
Ml0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0ZV9tc2coMykKKyAgICAgICAgcmVw
ci50b3Rlcm1pbmFsKHR3X21vY2spCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzBdID09
ICIiCisgICAgICAgIHR3X21vY2subGluZXMucG9wKDApCisgICAgICAgIGFzc2VydCB0d19tb2Nr
LmxpbmVzWzBdID09ICIgICAgZGVmIGYoKToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVz
WzFdID09ICI+ICAgICAgIGcoMykiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzJdID09
ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2coMykKICAgICAgICAgYXNz
ZXJ0IGxpbmUuZW5kc3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s0XSA9
PSAoIjo1OiAiKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbNV0gPT0gKCJfICIsIE5vbmUpCi0g
ICAgICAgIGFzc2VydCB0dy5saW5lc1s2XSA9PSAiIgotICAgICAgICBhc3NlcnQgdHcubGluZXNb
N10gPT0gIiAgICBkZWYgZyh4KToiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s4XSA9PSAiPiAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKHgpIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbOV0gPT0g
IkUgICAgICAgVmFsdWVFcnJvcjogMyIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzEwXSA9PSAi
IgotICAgICAgICBsaW5lID0gdHcuZ2V0X3dyaXRlX21zZygxMSkKKyAgICAgICAgYXNzZXJ0IHR3
X21vY2subGluZXNbNF0gPT0gKCI6NTogIikKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNb
NV0gPT0gKCJfICIsIE5vbmUpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzZdID09ICIi
CisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzddID09ICIgICAgZGVmIGcoeCk6IgorICAg
ICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s4XSA9PSAiPiAgICAgICByYWlzZSBWYWx1ZUVycm9y
KHgpIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s5XSA9PSAiRSAgICAgICBWYWx1ZUVy
cm9yOiAzIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxMF0gPT0gIiIKKyAgICAgICAg
bGluZSA9IHR3X21vY2suZ2V0X3dyaXRlX21zZygxMSkKICAgICAgICAgYXNzZXJ0IGxpbmUuZW5k
c3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sxMl0gPT0gIjozOiBWYWx1
ZUVycm9yIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxMl0gPT0gIjozOiBWYWx1ZUVy
cm9yIgogCi0gICAgZGVmIHRlc3RfdG90ZXJtaW5hbF9sb25nX21pc3Npbmdfc291cmNlKHNlbGYs
IGltcG9ydGFzbW9kLCB0bXBkaXIpOgorICAgIGRlZiB0ZXN0X3RvdGVybWluYWxfbG9uZ19taXNz
aW5nX3NvdXJjZShzZWxmLCBpbXBvcnRhc21vZCwgdG1wZGlyLCB0d19tb2NrKToKICAgICAgICAg
bW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBnKHgp
OgpAQCAtOTM0LDI1ICs5NjksMjQgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAgIHRtcGRp
ci5qb2luKCJtb2QucHkiKS5yZW1vdmUoKQogICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IGV4
Y2luZm8udHJhY2ViYWNrLmZpbHRlcigpCiAgICAgICAgIHJlcHIgPSBleGNpbmZvLmdldHJlcHIo
KQotICAgICAgICB0dyA9IFRXTW9jaygpCi0gICAgICAgIHJlcHIudG90ZXJtaW5hbCh0dykKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzBdID09ICIiCi0gICAgICAgIHR3LmxpbmVzLnBvcCgwKQot
ICAgICAgICBhc3NlcnQgdHcubGluZXNbMF0gPT0gIj4gICA/Pz8iCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1sxXSA9PSAiIgotICAgICAgICBsaW5lID0gdHcuZ2V0X3dyaXRlX21zZygyKQorICAg
ICAgICByZXByLnRvdGVybWluYWwodHdfbW9jaykKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbMF0gPT0gIiIKKyAgICAgICAgdHdfbW9jay5saW5lcy5wb3AoMCkKKyAgICAgICAgYXNzZXJ0
IHR3X21vY2subGluZXNbMF0gPT0gIj4gICA/Pz8iCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxp
bmVzWzFdID09ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2coMikKICAg
ICAgICAgYXNzZXJ0IGxpbmUuZW5kc3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5s
aW5lc1szXSA9PSAiOjU6ICIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzRdID09ICgiXyAiLCBO
b25lKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbNV0gPT0gIiIKLSAgICAgICAgYXNzZXJ0IHR3
LmxpbmVzWzZdID09ICI+ICAgPz8/IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbN10gPT0gIkUg
ICBWYWx1ZUVycm9yOiAzIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbOF0gPT0gIiIKLSAgICAg
ICAgbGluZSA9IHR3LmdldF93cml0ZV9tc2coOSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbM10gPT0gIjo1OiAiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzRdID09ICgiXyAi
LCBOb25lKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s1XSA9PSAiIgorICAgICAgICBh
c3NlcnQgdHdfbW9jay5saW5lc1s2XSA9PSAiPiAgID8/PyIKKyAgICAgICAgYXNzZXJ0IHR3X21v
Y2subGluZXNbN10gPT0gIkUgICBWYWx1ZUVycm9yOiAzIgorICAgICAgICBhc3NlcnQgdHdfbW9j
ay5saW5lc1s4XSA9PSAiIgorICAgICAgICBsaW5lID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKDkp
CiAgICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAgICBhc3NlcnQg
dHcubGluZXNbMTBdID09ICI6MzogVmFsdWVFcnJvciIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2su
bGluZXNbMTBdID09ICI6MzogVmFsdWVFcnJvciIKIAotICAgIGRlZiB0ZXN0X3RvdGVybWluYWxf
bG9uZ19pbmNvbXBsZXRlX3NvdXJjZShzZWxmLCBpbXBvcnRhc21vZCwgdG1wZGlyKToKKyAgICBk
ZWYgdGVzdF90b3Rlcm1pbmFsX2xvbmdfaW5jb21wbGV0ZV9zb3VyY2Uoc2VsZiwgaW1wb3J0YXNt
b2QsIHRtcGRpciwgdHdfbW9jayk6CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAg
ICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgZyh4KToKQEAgLTk2NSwyNSArOTk5LDI0IEBAIHJh
aXNlIFZhbHVlRXJyb3IoKQogICAgICAgICB0bXBkaXIuam9pbigibW9kLnB5Iikud3JpdGUoImFz
ZGYiKQogICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IGV4Y2luZm8udHJhY2ViYWNrLmZpbHRl
cigpCiAgICAgICAgIHJlcHIgPSBleGNpbmZvLmdldHJlcHIoKQotICAgICAgICB0dyA9IFRXTW9j
aygpCi0gICAgICAgIHJlcHIudG90ZXJtaW5hbCh0dykKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVz
WzBdID09ICIiCi0gICAgICAgIHR3LmxpbmVzLnBvcCgwKQotICAgICAgICBhc3NlcnQgdHcubGlu
ZXNbMF0gPT0gIj4gICA/Pz8iCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sxXSA9PSAiIgotICAg
ICAgICBsaW5lID0gdHcuZ2V0X3dyaXRlX21zZygyKQorICAgICAgICByZXByLnRvdGVybWluYWwo
dHdfbW9jaykKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMF0gPT0gIiIKKyAgICAgICAg
dHdfbW9jay5saW5lcy5wb3AoMCkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMF0gPT0g
Ij4gICA/Pz8iCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzFdID09ICIiCisgICAgICAg
IGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2coMikKICAgICAgICAgYXNzZXJ0IGxpbmUuZW5k
c3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1szXSA9PSAiOjU6ICIKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzRdID09ICgiXyAiLCBOb25lKQotICAgICAgICBhc3NlcnQg
dHcubGluZXNbNV0gPT0gIiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzZdID09ICI+ICAgPz8/
IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbN10gPT0gIkUgICBWYWx1ZUVycm9yOiAzIgotICAg
ICAgICBhc3NlcnQgdHcubGluZXNbOF0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0
ZV9tc2coOSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbM10gPT0gIjo1OiAiCisgICAg
ICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzRdID09ICgiXyAiLCBOb25lKQorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1s1XSA9PSAiIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s2
XSA9PSAiPiAgID8/PyIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbN10gPT0gIkUgICBW
YWx1ZUVycm9yOiAzIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s4XSA9PSAiIgorICAg
ICAgICBsaW5lID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKDkpCiAgICAgICAgIGFzc2VydCBsaW5l
LmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbMTBdID09ICI6Mzog
VmFsdWVFcnJvciIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTBdID09ICI6MzogVmFs
dWVFcnJvciIKIAotICAgIGRlZiB0ZXN0X3RvdGVybWluYWxfbG9uZ19maWxlbmFtZXMoc2VsZiwg
aW1wb3J0YXNtb2QpOgorICAgIGRlZiB0ZXN0X3RvdGVybWluYWxfbG9uZ19maWxlbmFtZXMoc2Vs
ZiwgaW1wb3J0YXNtb2QsIHR3X21vY2spOgogICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAg
ICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGYoKToKQEAgLTk5MSwyMyArMTAyNCwyMiBA
QCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgZXhj
aW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbW9kLmYpCi0gICAgICAgIHR3ID0gVFdN
b2NrKCkKICAgICAgICAgcGF0aCA9IHB5LnBhdGgubG9jYWwobW9kLl9fZmlsZV9fKQogICAgICAg
ICBvbGQgPSBwYXRoLmRpcnBhdGgoKS5jaGRpcigpCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IHJlcHIgPSBleGNpbmZvLmdldHJlcHIoYWJzcGF0aD1GYWxzZSkKLSAgICAgICAgICAgIHJlcHIu
dG90ZXJtaW5hbCh0dykKKyAgICAgICAgICAgIHJlcHIudG90ZXJtaW5hbCh0d19tb2NrKQogICAg
ICAgICAgICAgeCA9IHB5LnBhdGgubG9jYWwoKS5iZXN0cmVscGF0aChwYXRoKQogICAgICAgICAg
ICAgaWYgbGVuKHgpIDwgbGVuKHN0cihwYXRoKSk6Ci0gICAgICAgICAgICAgICAgbXNnID0gdHcu
Z2V0X3dyaXRlX21zZygtMikKKyAgICAgICAgICAgICAgICBtc2cgPSB0d19tb2NrLmdldF93cml0
ZV9tc2coLTIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IG1zZyA9PSAibW9kLnB5IgotICAgICAg
ICAgICAgICAgIGFzc2VydCB0dy5saW5lc1stMV0gPT0gIjozOiBWYWx1ZUVycm9yIgorICAgICAg
ICAgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWy0xXSA9PSAiOjM6IFZhbHVlRXJyb3IiCiAK
ICAgICAgICAgICAgIHJlcHIgPSBleGNpbmZvLmdldHJlcHIoYWJzcGF0aD1UcnVlKQotICAgICAg
ICAgICAgcmVwci50b3Rlcm1pbmFsKHR3KQotICAgICAgICAgICAgbXNnID0gdHcuZ2V0X3dyaXRl
X21zZygtMikKKyAgICAgICAgICAgIHJlcHIudG90ZXJtaW5hbCh0d19tb2NrKQorICAgICAgICAg
ICAgbXNnID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKC0yKQogICAgICAgICAgICAgYXNzZXJ0IG1z
ZyA9PSBwYXRoCi0gICAgICAgICAgICBsaW5lID0gdHcubGluZXNbLTFdCisgICAgICAgICAgICBs
aW5lID0gdHdfbW9jay5saW5lc1stMV0KICAgICAgICAgICAgIGFzc2VydCBsaW5lID09ICI6Mzog
VmFsdWVFcnJvciIKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9sZC5jaGRpcigpCkBA
IC0xMDE1LDM0ICsxMDQ3LDQxIEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKICAgICAgICAgInJlcHJvcHRpb25zIiwKICAgICAgICAgWwotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICJzdHlsZSI6IHN0eWxlLAotICAgICAgICAgICAgICAg
ICJzaG93bG9jYWxzIjogc2hvd2xvY2FscywKLSAgICAgICAgICAgICAgICAiZnVuY2FyZ3MiOiBm
dW5jYXJncywKLSAgICAgICAgICAgICAgICAidGJmaWx0ZXIiOiB0YmZpbHRlciwKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGZvciBzdHlsZSBpbiAoImxvbmciLCAic2hvcnQiLCAibm8iKQor
ICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgInN0eWxlIjogc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICJzaG93bG9jYWxz
Ijogc2hvd2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgImZ1bmNhcmdzIjogZnVuY2FyZ3Ms
CisgICAgICAgICAgICAgICAgICAgICJ0YmZpbHRlciI6IHRiZmlsdGVyLAorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgaWQ9InN0eWxlPXt9LHNob3dsb2NhbHM9e30sZnVuY2Fy
Z3M9e30sdGJmaWx0ZXI9e30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUsIHNo
b3dsb2NhbHMsIGZ1bmNhcmdzLCB0YmZpbHRlcgorICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICApCisgICAgICAgICAgICBmb3Igc3R5bGUgaW4gWyJsb25nIiwgInNob3J0IiwgImxpbmUi
LCAibm8iLCAibmF0aXZlIiwgInZhbHVlIiwgImF1dG8iXQogICAgICAgICAgICAgZm9yIHNob3ds
b2NhbHMgaW4gKFRydWUsIEZhbHNlKQogICAgICAgICAgICAgZm9yIHRiZmlsdGVyIGluIChUcnVl
LCBGYWxzZSkKICAgICAgICAgICAgIGZvciBmdW5jYXJncyBpbiAoVHJ1ZSwgRmFsc2UpCiAgICAg
ICAgIF0sCiAgICAgKQotICAgIGRlZiB0ZXN0X2Zvcm1hdF9leGNpbmZvKHNlbGYsIGltcG9ydGFz
bW9kLCByZXByb3B0aW9ucyk6Ci0gICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBkZWYgZyh4KToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKHgpCi0gICAgICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgICAgIGcoMykKLSAg
ICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFs
dWVFcnJvciwgbW9kLmYpCi0gICAgICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoc3RyaW5n
aW89VHJ1ZSkKKyAgICBkZWYgdGVzdF9mb3JtYXRfZXhjaW5mbyhzZWxmLCByZXByb3B0aW9uczog
RGljdFtzdHIsIEFueV0pIC0+IE5vbmU6CisgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAg
IGFzc2VydCBGYWxzZSwgInNvbWUgZXJyb3IiCisKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAg
ICAgICAgYmFyKCkKKworICAgICAgICAjIHVzaW5nIGlubGluZSBmdW5jdGlvbnMgYXMgb3Bwb3Nl
ZCB0byBpbXBvcnRhc21vZCBzbyB3ZSBnZXQgc291cmNlIGNvZGUgbGluZXMKKyAgICAgICAgIyBp
biB0aGUgdHJhY2ViYWNrcyAob3RoZXJ3aXNlIGdldGluc3BlY3QgZG9lc24ndCBmaW5kIHRoZSBz
b3VyY2UgY29kZSkuCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvcikg
YXMgZXhjaW5mbzoKKyAgICAgICAgICAgIGZvbygpCisgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJ
TygpCisgICAgICAgIHR3ID0gVGVybWluYWxXcml0ZXIoZmlsZT1maWxlKQogICAgICAgICByZXBy
ID0gZXhjaW5mby5nZXRyZXByKCoqcmVwcm9wdGlvbnMpCiAgICAgICAgIHJlcHIudG90ZXJtaW5h
bCh0dykKLSAgICAgICAgYXNzZXJ0IHR3LnN0cmluZ2lvLmdldHZhbHVlKCkKKyAgICAgICAgYXNz
ZXJ0IGZpbGUuZ2V0dmFsdWUoKQogCi0gICAgZGVmIHRlc3RfdHJhY2ViYWNrX3JlcHJfc3R5bGUo
c2VsZiwgaW1wb3J0YXNtb2QpOgorICAgIGRlZiB0ZXN0X3RyYWNlYmFja19yZXByX3N0eWxlKHNl
bGYsIGltcG9ydGFzbW9kLCB0d19tb2NrKToKICAgICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBmKCk6CkBAIC0xMDYwLDM2ICsxMDk5LDM0
IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBleGNpbmZvLnRyYWNlYmFja1sxXS5zZXRf
cmVwcl9zdHlsZSgic2hvcnQiKQogICAgICAgICBleGNpbmZvLnRyYWNlYmFja1syXS5zZXRfcmVw
cl9zdHlsZSgic2hvcnQiKQogICAgICAgICByID0gZXhjaW5mby5nZXRyZXByKHN0eWxlPSJsb25n
IikKLSAgICAgICAgdHcgPSBUV01vY2soKQotICAgICAgICByLnRvdGVybWluYWwodHcpCi0gICAg
ICAgIGZvciBsaW5lIGluIHR3LmxpbmVzOgorICAgICAgICByLnRvdGVybWluYWwodHdfbW9jaykK
KyAgICAgICAgZm9yIGxpbmUgaW4gdHdfbW9jay5saW5lczoKICAgICAgICAgICAgIHByaW50KGxp
bmUpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1swXSA9PSAiIgotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbMV0gPT0gIiAgICBkZWYgZigpOiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzJdID09
ICI+ICAgICAgIGcoKSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzNdID09ICIiCi0gICAgICAg
IG1zZyA9IHR3LmdldF93cml0ZV9tc2coNCkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNb
MF0gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMV0gPT0gIiAgICBkZWYgZigp
OiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMl0gPT0gIj4gICAgICAgZygpIgorICAg
ICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1szXSA9PSAiIgorICAgICAgICBtc2cgPSB0d19tb2Nr
LmdldF93cml0ZV9tc2coNCkKICAgICAgICAgYXNzZXJ0IG1zZy5lbmRzd2l0aCgibW9kLnB5IikK
LSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzVdID09ICI6MzogIgotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbNl0gPT0gKCJfICIsIE5vbmUpCi0gICAgICAgIHR3LmdldF93cml0ZV9tc2coNykKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzhdLmVuZHN3aXRoKCJpbiBnIikKLSAgICAgICAgYXNzZXJ0
IHR3LmxpbmVzWzldID09ICIgICAgaCgpIgotICAgICAgICB0dy5nZXRfd3JpdGVfbXNnKDEwKQot
ICAgICAgICBhc3NlcnQgdHcubGluZXNbMTFdLmVuZHN3aXRoKCJpbiBoIikKLSAgICAgICAgYXNz
ZXJ0IHR3LmxpbmVzWzEyXSA9PSAiICAgIGkoKSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzEz
XSA9PSAoIl8gIiwgTm9uZSkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzE0XSA9PSAiIgotICAg
ICAgICBhc3NlcnQgdHcubGluZXNbMTVdID09ICIgICAgZGVmIGkoKToiCi0gICAgICAgIGFzc2Vy
dCB0dy5saW5lc1sxNl0gPT0gIj4gICAgICAgcmFpc2UgVmFsdWVFcnJvcigpIgotICAgICAgICBh
c3NlcnQgdHcubGluZXNbMTddID09ICJFICAgICAgIFZhbHVlRXJyb3IiCi0gICAgICAgIGFzc2Vy
dCB0dy5saW5lc1sxOF0gPT0gIiIKLSAgICAgICAgbXNnID0gdHcuZ2V0X3dyaXRlX21zZygxOSkK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNV0gPT0gIjozOiAiCisgICAgICAgIGFzc2Vy
dCB0d19tb2NrLmxpbmVzWzZdID09ICgiXyAiLCBOb25lKQorICAgICAgICB0d19tb2NrLmdldF93
cml0ZV9tc2coNykKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbOF0uZW5kc3dpdGgoImlu
IGciKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s5XSA9PSAiICAgIGgoKSIKKyAgICAg
ICAgdHdfbW9jay5nZXRfd3JpdGVfbXNnKDEwKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5l
c1sxMV0uZW5kc3dpdGgoImluIGgiKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxMl0g
PT0gIiAgICBpKCkiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzEzXSA9PSAoIl8gIiwg
Tm9uZSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTRdID09ICIiCisgICAgICAgIGFz
c2VydCB0d19tb2NrLmxpbmVzWzE1XSA9PSAiICAgIGRlZiBpKCk6IgorICAgICAgICBhc3NlcnQg
dHdfbW9jay5saW5lc1sxNl0gPT0gIj4gICAgICAgcmFpc2UgVmFsdWVFcnJvcigpIgorICAgICAg
ICBhc3NlcnQgdHdfbW9jay5saW5lc1sxN10gPT0gIkUgICAgICAgVmFsdWVFcnJvciIKKyAgICAg
ICAgYXNzZXJ0IHR3X21vY2subGluZXNbMThdID09ICIiCisgICAgICAgIG1zZyA9IHR3X21vY2su
Z2V0X3dyaXRlX21zZygxOSkKICAgICAgICAgbXNnLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAg
ICBhc3NlcnQgdHcubGluZXNbMjBdID09ICI6OTogVmFsdWVFcnJvciIKKyAgICAgICAgYXNzZXJ0
IHR3X21vY2subGluZXNbMjBdID09ICI6OTogVmFsdWVFcnJvciIKIAotICAgIEBweXRlc3QubWFy
ay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bMF0gPCAzIikKLSAgICBkZWYgdGVzdF9leGNfY2hh
aW5fcmVwcihzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVmIHRlc3RfZXhjX2NoYWluX3JlcHIo
c2VsZiwgaW1wb3J0YXNtb2QsIHR3X21vY2spOgogICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgK
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgY2xhc3MgRXJyKEV4Y2VwdGlvbik6CkBAIC0x
MTEwLDExMyArMTE0NywxMjEgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAgICkKICAgICAg
ICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vZC5mKQogICAgICAg
ICByID0gZXhjaW5mby5nZXRyZXByKHN0eWxlPSJsb25nIikKLSAgICAgICAgdHcgPSBUV01vY2so
KQotICAgICAgICByLnRvdGVybWluYWwodHcpCi0gICAgICAgIGZvciBsaW5lIGluIHR3LmxpbmVz
OgorICAgICAgICByLnRvdGVybWluYWwodHdfbW9jaykKKyAgICAgICAgZm9yIGxpbmUgaW4gdHdf
bW9jay5saW5lczoKICAgICAgICAgICAgIHByaW50KGxpbmUpCi0gICAgICAgIGFzc2VydCB0dy5s
aW5lc1swXSA9PSAiIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMV0gPT0gIiAgICBkZWYgZigp
OiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzJdID09ICIgICAgICAgIHRyeToiCi0gICAgICAg
IGFzc2VydCB0dy5saW5lc1szXSA9PSAiPiAgICAgICAgICAgZygpIgotICAgICAgICBhc3NlcnQg
dHcubGluZXNbNF0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0ZV9tc2coNSkKKyAg
ICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMF0gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21v
Y2subGluZXNbMV0gPT0gIiAgICBkZWYgZigpOiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbMl0gPT0gIiAgICAgICAgdHJ5OiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbM10g
PT0gIj4gICAgICAgICAgIGcoKSIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNF0gPT0g
IiIKKyAgICAgICAgbGluZSA9IHR3X21vY2suZ2V0X3dyaXRlX21zZyg1KQogICAgICAgICBhc3Nl
cnQgbGluZS5lbmRzd2l0aCgibW9kLnB5IikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzZdID09
ICI6NjogIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbN10gPT0gKCJfICIsIE5vbmUpCi0gICAg
ICAgIGFzc2VydCB0dy5saW5lc1s4XSA9PSAiIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbOV0g
PT0gIiAgICBkZWYgZygpOiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzEwXSA9PSAiPiAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCkiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sxMV0gPT0gIkUg
ICAgICAgVmFsdWVFcnJvciIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzEyXSA9PSAiIgotICAg
ICAgICBsaW5lID0gdHcuZ2V0X3dyaXRlX21zZygxMykKKyAgICAgICAgYXNzZXJ0IHR3X21vY2su
bGluZXNbNl0gPT0gIjo2OiAiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzddID09ICgi
XyAiLCBOb25lKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s4XSA9PSAiIgorICAgICAg
ICBhc3NlcnQgdHdfbW9jay5saW5lc1s5XSA9PSAiICAgIGRlZiBnKCk6IgorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1sxMF0gPT0gIj4gICAgICAgcmFpc2UgVmFsdWVFcnJvcigpIgorICAg
ICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxMV0gPT0gIkUgICAgICAgVmFsdWVFcnJvciIKKyAg
ICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTJdID09ICIiCisgICAgICAgIGxpbmUgPSB0d19t
b2NrLmdldF93cml0ZV9tc2coMTMpCiAgICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2Qu
cHkiKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbMTRdID09ICI6MTI6IFZhbHVlRXJyb3IiCi0g
ICAgICAgIGFzc2VydCB0dy5saW5lc1sxNV0gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2su
bGluZXNbMTRdID09ICI6MTI6IFZhbHVlRXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxp
bmVzWzE1XSA9PSAiIgogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgdHcubGluZXNbMTZd
CisgICAgICAgICAgICB0d19tb2NrLmxpbmVzWzE2XQogICAgICAgICAgICAgPT0gIlRoZSBhYm92
ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRp
b246IgogICAgICAgICApCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sxN10gPT0gIiIKLSAgICAg
ICAgYXNzZXJ0IHR3LmxpbmVzWzE4XSA9PSAiICAgIGRlZiBmKCk6IgotICAgICAgICBhc3NlcnQg
dHcubGluZXNbMTldID09ICIgICAgICAgIHRyeToiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sy
MF0gPT0gIiAgICAgICAgICAgIGcoKSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzIxXSA9PSAi
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6IgotICAgICAgICBhc3NlcnQgdHcubGluZXNb
MjJdID09ICI+ICAgICAgICAgICByYWlzZSBFcnIoKSBmcm9tIGUiCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1syM10gPT0gIkUgICAgICAgICAgIHRlc3RfZXhjX2NoYWluX3JlcHIwLm1vZC5FcnIi
Ci0gICAgICAgIGFzc2VydCB0dy5saW5lc1syNF0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3Lmdl
dF93cml0ZV9tc2coMjUpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzE3XSA9PSAiIgor
ICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxOF0gPT0gIiAgICBkZWYgZigpOiIKKyAgICAg
ICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTldID09ICIgICAgICAgIHRyeToiCisgICAgICAgIGFz
c2VydCB0d19tb2NrLmxpbmVzWzIwXSA9PSAiICAgICAgICAgICAgZygpIgorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1syMV0gPT0gIiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOiIK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMjJdID09ICI+ICAgICAgICAgICByYWlzZSBF
cnIoKSBmcm9tIGUiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzIzXSA9PSAiRSAgICAg
ICAgICAgdGVzdF9leGNfY2hhaW5fcmVwcjAubW9kLkVyciIKKyAgICAgICAgYXNzZXJ0IHR3X21v
Y2subGluZXNbMjRdID09ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2co
MjUpCiAgICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAgICBhc3Nl
cnQgdHcubGluZXNbMjZdID09ICI6ODogRXJyIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMjdd
ID09ICIiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzI2XSA9PSAiOjg6IEVyciIKKyAg
ICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMjddID09ICIiCiAgICAgICAgIGFzc2VydCAoCi0g
ICAgICAgICAgICB0dy5saW5lc1syOF0KKyAgICAgICAgICAgIHR3X21vY2subGluZXNbMjhdCiAg
ICAgICAgICAgICA9PSAiRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFu
b3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOiIKICAgICAgICAgKQotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbMjldID09ICIiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1szMF0gPT0gIiAgICBkZWYg
ZigpOiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzMxXSA9PSAiICAgICAgICB0cnk6IgotICAg
ICAgICBhc3NlcnQgdHcubGluZXNbMzJdID09ICIgICAgICAgICAgICBnKCkiCi0gICAgICAgIGFz
c2VydCB0dy5saW5lc1szM10gPT0gIiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOiIKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzM0XSA9PSAiICAgICAgICAgICAgcmFpc2UgRXJyKCkgZnJv
bSBlIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMzVdID09ICIgICAgICAgIGZpbmFsbHk6Igot
ICAgICAgICBhc3NlcnQgdHcubGluZXNbMzZdID09ICI+ICAgICAgICAgICBoKCkiCi0gICAgICAg
IGFzc2VydCB0dy5saW5lc1szN10gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0ZV9t
c2coMzgpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzI5XSA9PSAiIgorICAgICAgICBh
c3NlcnQgdHdfbW9jay5saW5lc1szMF0gPT0gIiAgICBkZWYgZigpOiIKKyAgICAgICAgYXNzZXJ0
IHR3X21vY2subGluZXNbMzFdID09ICIgICAgICAgIHRyeToiCisgICAgICAgIGFzc2VydCB0d19t
b2NrLmxpbmVzWzMyXSA9PSAiICAgICAgICAgICAgZygpIgorICAgICAgICBhc3NlcnQgdHdfbW9j
ay5saW5lc1szM10gPT0gIiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOiIKKyAgICAgICAg
YXNzZXJ0IHR3X21vY2subGluZXNbMzRdID09ICIgICAgICAgICAgICByYWlzZSBFcnIoKSBmcm9t
IGUiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzM1XSA9PSAiICAgICAgICBmaW5hbGx5
OiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMzZdID09ICI+ICAgICAgICAgICBoKCki
CisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzM3XSA9PSAiIgorICAgICAgICBsaW5lID0g
dHdfbW9jay5nZXRfd3JpdGVfbXNnKDM4KQogICAgICAgICBhc3NlcnQgbGluZS5lbmRzd2l0aCgi
bW9kLnB5IikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzM5XSA9PSAiOjEwOiAiCi0gICAgICAg
IGFzc2VydCB0dy5saW5lc1s0MF0gPT0gKCJfICIsIE5vbmUpCi0gICAgICAgIGFzc2VydCB0dy5s
aW5lc1s0MV0gPT0gIiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzQyXSA9PSAiICAgIGRlZiBo
KCk6IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbNDNdID09ICI+ICAgICAgIHJhaXNlIEF0dHJp
YnV0ZUVycm9yKCkiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s0NF0gPT0gIkUgICAgICAgQXR0
cmlidXRlRXJyb3IiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s0NV0gPT0gIiIKLSAgICAgICAg
bGluZSA9IHR3LmdldF93cml0ZV9tc2coNDYpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVz
WzM5XSA9PSAiOjEwOiAiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzQwXSA9PSAoIl8g
IiwgTm9uZSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNDFdID09ICIiCisgICAgICAg
IGFzc2VydCB0d19tb2NrLmxpbmVzWzQyXSA9PSAiICAgIGRlZiBoKCk6IgorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1s0M10gPT0gIj4gICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoKSIK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNDRdID09ICJFICAgICAgIEF0dHJpYnV0ZUVy
cm9yIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s0NV0gPT0gIiIKKyAgICAgICAgbGlu
ZSA9IHR3X21vY2suZ2V0X3dyaXRlX21zZyg0NikKICAgICAgICAgYXNzZXJ0IGxpbmUuZW5kc3dp
dGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s0N10gPT0gIjoxNTogQXR0cmli
dXRlRXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzQ3XSA9PSAiOjE1OiBBdHRy
aWJ1dGVFcnJvciIKIAotICAgIEBweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9b
MF0gPCAzIikKLSAgICBkZWYgdGVzdF9leGNfcmVwcl93aXRoX3JhaXNlX2Zyb21fbm9uZV9jaGFp
bl9zdXBwcmVzc2lvbihzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJtb2RlIiwgWyJmcm9tX25vbmUiLCAiZXhwbGljaXRfc3VwcHJlc3MiXSkKKyAgICBk
ZWYgdGVzdF9leGNfcmVwcl9jaGFpbl9zdXBwcmVzc2lvbihzZWxmLCBpbXBvcnRhc21vZCwgbW9k
ZSwgdHdfbW9jayk6CisgICAgICAgICIiIkNoZWNrIHRoYXQgZXhjIHJlcHIgZG9lcyBub3Qgc2hv
dyBjaGFpbmVkIGV4Y2VwdGlvbnMgaW4gUHl0aG9uIDMuCisgICAgICAgIC0gV2hlbiB0aGUgZXhj
ZXB0aW9uIGlzIHJhaXNlZCB3aXRoICJmcm9tIE5vbmUiCisgICAgICAgIC0gRXhwbGljaXRseSBz
dXBwcmVzc2VkIHdpdGggImNoYWluPUZhbHNlIiB0byBFeGNlcHRpb25JbmZvLmdldHJlcHIoKS4K
KyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlX3N1ZmZpeCA9ICIgZnJvbSBOb25lIiBpZiBtb2Rl
ID09ICJmcm9tX25vbmUiIGVsc2UgIiIKICAgICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgICAgICBnKCkKICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigpIGZyb20gTm9uZQor
ICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigpe3JhaXNlX3N1ZmZpeH0K
ICAgICAgICAgICAgIGRlZiBnKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigp
Ci0gICAgICAgICIiIgorICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHJhaXNl
X3N1ZmZpeD1yYWlzZV9zdWZmaXgKKyAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICBl
eGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbW9kLmYpCi0gICAgICAgIHIg
PSBleGNpbmZvLmdldHJlcHIoc3R5bGU9ImxvbmciKQotICAgICAgICB0dyA9IFRXTW9jaygpCi0g
ICAgICAgIHIudG90ZXJtaW5hbCh0dykKLSAgICAgICAgZm9yIGxpbmUgaW4gdHcubGluZXM6Cisg
ICAgICAgIHIgPSBleGNpbmZvLmdldHJlcHIoc3R5bGU9ImxvbmciLCBjaGFpbj1tb2RlICE9ICJl
eHBsaWNpdF9zdXBwcmVzcyIpCisgICAgICAgIHIudG90ZXJtaW5hbCh0d19tb2NrKQorICAgICAg
ICBmb3IgbGluZSBpbiB0d19tb2NrLmxpbmVzOgogICAgICAgICAgICAgcHJpbnQobGluZSkKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzBdID09ICIiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sx
XSA9PSAiICAgIGRlZiBmKCk6IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMl0gPT0gIiAgICAg
ICAgdHJ5OiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzNdID09ICIgICAgICAgICAgICBnKCki
Ci0gICAgICAgIGFzc2VydCB0dy5saW5lc1s0XSA9PSAiICAgICAgICBleGNlcHQgRXhjZXB0aW9u
OiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzVdID09ICI+ICAgICAgICAgICByYWlzZSBBdHRy
aWJ1dGVFcnJvcigpIGZyb20gTm9uZSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzZdID09ICJF
ICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzddID09
ICIiCi0gICAgICAgIGxpbmUgPSB0dy5nZXRfd3JpdGVfbXNnKDgpCisgICAgICAgIGFzc2VydCB0
d19tb2NrLmxpbmVzWzBdID09ICIiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzFdID09
ICIgICAgZGVmIGYoKToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzJdID09ICIgICAg
ICAgIHRyeToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzNdID09ICIgICAgICAgICAg
ICBnKCkiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzRdID09ICIgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246IgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s1XSA9PSAiPiAgICAg
ICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoKXt9Ii5mb3JtYXQoCisgICAgICAgICAgICByYWlz
ZV9zdWZmaXgKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s2XSA9PSAi
RSAgICAgICAgICAgQXR0cmlidXRlRXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVz
WzddID09ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2coOCkKICAgICAg
ICAgYXNzZXJ0IGxpbmUuZW5kc3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5l
c1s5XSA9PSAiOjY6IEF0dHJpYnV0ZUVycm9yIgotICAgICAgICBhc3NlcnQgbGVuKHR3LmxpbmVz
KSA9PSAxMAorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s5XSA9PSAiOjY6IEF0dHJpYnV0
ZUVycm9yIgorICAgICAgICBhc3NlcnQgbGVuKHR3X21vY2subGluZXMpID09IDEwCiAKLSAgICBA
cHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdIDwgMyIpCiAgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKAogICAgICAgICAicmVhc29uLCBkZXNjcmlwdGlvbiIsCiAgICAg
ICAgIFsKLSAgICAgICAgICAgICgKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKICAgICAgICAg
ICAgICAgICAiY2F1c2UiLAogICAgICAgICAgICAgICAgICJUaGUgYWJvdmUgZXhjZXB0aW9uIHdh
cyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOiIsCisgICAgICAg
ICAgICAgICAgaWQ9ImNhdXNlIiwKICAgICAgICAgICAgICksCi0gICAgICAgICAgICAoCisgICAg
ICAgICAgICBweXRlc3QucGFyYW0oCiAgICAgICAgICAgICAgICAgImNvbnRleHQiLAogICAgICAg
ICAgICAgICAgICJEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhl
ciBleGNlcHRpb24gb2NjdXJyZWQ6IiwKKyAgICAgICAgICAgICAgICBpZD0iY29udGV4dCIsCiAg
ICAgICAgICAgICApLAogICAgICAgICBdLAogICAgICkKQEAgLTEyMjYsOCArMTI3MSw2IEBAIHJh
aXNlIFZhbHVlRXJyb3IoKQogICAgICAgICByZWFsIHRyYWNlYmFjaywgc3VjaCBhcyB0aG9zZSBy
YWlzZWQgaW4gYSBzdWJwcm9jZXNzIHN1Ym1pdHRlZCBieSB0aGUgbXVsdGlwcm9jZXNzaW5nCiAg
ICAgICAgIG1vZHVsZSAoIzE5ODQpLgogICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0
LnB5dGVzdGVyIGltcG9ydCBMaW5lTWF0Y2hlcgotCiAgICAgICAgIGV4Y19oYW5kbGluZ19jb2Rl
ID0gIiBmcm9tIGUiIGlmIHJlYXNvbiA9PSAiY2F1c2UiIGVsc2UgIiIKICAgICAgICAgbW9kID0g
aW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKQEAgLTEyNTEsMTEgKzEyOTQsMTIgQEAgcmFp
c2UgVmFsdWVFcnJvcigpCiAgICAgICAgIGdldGF0dHIoZXhjaW5mby52YWx1ZSwgYXR0cikuX190
cmFjZWJhY2tfXyA9IE5vbmUKIAogICAgICAgICByID0gZXhjaW5mby5nZXRyZXByKCkKLSAgICAg
ICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcihzdHJpbmdpbz1UcnVlKQorICAgICAgICBmaWxl
ID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKGZpbGU9ZmlsZSkK
ICAgICAgICAgdHcuaGFzbWFya3VwID0gRmFsc2UKICAgICAgICAgci50b3Rlcm1pbmFsKHR3KQog
Ci0gICAgICAgIG1hdGNoZXIgPSBMaW5lTWF0Y2hlcih0dy5zdHJpbmdpby5nZXR2YWx1ZSgpLnNw
bGl0bGluZXMoKSkKKyAgICAgICAgbWF0Y2hlciA9IExpbmVNYXRjaGVyKGZpbGUuZ2V0dmFsdWUo
KS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIG1hdGNoZXIuZm5tYXRjaF9saW5lcygKICAgICAgICAg
ICAgIFsKICAgICAgICAgICAgICAgICAiVmFsdWVFcnJvcjogaW52YWxpZCB2YWx1ZSIsCkBAIC0x
MjY2LDE3ICsxMzEwLDczIEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICAgICAgXQogICAg
ICAgICApCiAKKyAgICBkZWYgdGVzdF9leGNfY2hhaW5fcmVwcl9jeWNsZShzZWxmLCBpbXBvcnRh
c21vZCwgdHdfbW9jayk6CisgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAorICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBjbGFzcyBFcnIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBw
YXNzCisgICAgICAgICAgICBkZWYgZmFpbCgpOgorICAgICAgICAgICAgICAgIHJldHVybiAwIC8g
MAorICAgICAgICAgICAgZGVmIHJlcmFpc2UoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgICAgIGZhaWwoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNp
b25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnIoKSBmcm9tIGUKKyAg
ICAgICAgICAgIGRlZiB1bnJlcmFpc2UoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAg
ICAgICAgICAgICAgIHJlcmFpc2UoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFcnIgYXMgZToK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZS5fX2NhdXNlX18KKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3Is
IG1vZC51bnJlcmFpc2UpCisgICAgICAgIHIgPSBleGNpbmZvLmdldHJlcHIoc3R5bGU9InNob3J0
IikKKyAgICAgICAgci50b3Rlcm1pbmFsKHR3X21vY2spCisgICAgICAgIG91dCA9ICJcbiIuam9p
bihsaW5lIGZvciBsaW5lIGluIHR3X21vY2subGluZXMgaWYgaXNpbnN0YW5jZShsaW5lLCBzdHIp
KQorICAgICAgICBleHBlY3RlZF9vdXQgPSB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAi
IiJcCisgICAgICAgICAgICA6MTM6IGluIHVucmVyYWlzZQorICAgICAgICAgICAgICAgIHJlcmFp
c2UoKQorICAgICAgICAgICAgOjEwOiBpbiByZXJhaXNlCisgICAgICAgICAgICAgICAgcmFpc2Ug
RXJyKCkgZnJvbSBlCisgICAgICAgICAgICBFICAgdGVzdF9leGNfY2hhaW5fcmVwcl9jeWNsZTAu
bW9kLkVycgorCisgICAgICAgICAgICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2Vw
dGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6CisgICAgICAgICAgICA6MTU6IGluIHVu
cmVyYWlzZQorICAgICAgICAgICAgICAgIHJhaXNlIGUuX19jYXVzZV9fCisgICAgICAgICAgICA6
ODogaW4gcmVyYWlzZQorICAgICAgICAgICAgICAgIGZhaWwoKQorICAgICAgICAgICAgOjU6IGlu
IGZhaWwKKyAgICAgICAgICAgICAgICByZXR1cm4gMCAvIDAKKyAgICAgICAgICAgIEUgICBaZXJv
RGl2aXNpb25FcnJvcjogZGl2aXNpb24gYnkgemVybyIiIgorICAgICAgICApCisgICAgICAgIGFz
c2VydCBvdXQgPT0gZXhwZWN0ZWRfb3V0CisKKyAgICBkZWYgdGVzdF9leGVjX3R5cGVfZXJyb3Jf
ZmlsdGVyKHNlbGYsIGltcG9ydGFzbW9kKToKKyAgICAgICAgIiIiU2VlICM3NzQyIiIiCisgICAg
ICAgIG1vZCA9IGltcG9ydGFzbW9kKAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgZGVm
IGYoKToKKyAgICAgICAgICAgICAgICBleGVjKCJhID0gMSIsIHt9LCBbXSkKKyAgICAgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpIGFz
IGV4Y2luZm86CisgICAgICAgICAgICBtb2QuZigpCisgICAgICAgICMgcHJldmlvdXNseSBjcmFz
aGVkIHdpdGggYEF0dHJpYnV0ZUVycm9yOiBsaXN0IGhhcyBubyBhdHRyaWJ1dGUgZ2V0YAorICAg
ICAgICBleGNpbmZvLnRyYWNlYmFjay5maWx0ZXIoKQorCiAKIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgic3R5bGUiLCBbInNob3J0IiwgImxvbmciXSkKIEBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgiZW5jb2RpbmciLCBbTm9uZSwgInV0ZjgiLCAidXRmMTYiXSkKIGRlZiB0ZXN0X3JlcHJfdHJh
Y2ViYWNrX3dpdGhfdW5pY29kZShzdHlsZSwgZW5jb2RpbmcpOgotICAgIG1zZyA9IHUi4pi5Igot
ICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgotICAgICAgICBtc2cgPSBtc2cuZW5jb2RlKGVu
Y29kaW5nKQorICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CisgICAgICAgIG1zZyA9ICLimLkiICAj
IHR5cGU6IFVuaW9uW3N0ciwgYnl0ZXNdCisgICAgZWxzZToKKyAgICAgICAgbXNnID0gIuKYuSIu
ZW5jb2RlKGVuY29kaW5nKQogICAgIHRyeToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1z
ZykKICAgICBleGNlcHQgUnVudGltZUVycm9yOgotICAgICAgICBlX2luZm8gPSBFeGNlcHRpb25J
bmZvKCkKKyAgICAgICAgZV9pbmZvID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAg
IGZvcm1hdHRlciA9IEZvcm1hdHRlZEV4Y2luZm8oc3R5bGU9c3R5bGUpCiAgICAgcmVwcl90cmFj
ZWJhY2sgPSBmb3JtYXR0ZXIucmVwcl90cmFjZWJhY2soZV9pbmZvKQogICAgIGFzc2VydCByZXBy
X3RyYWNlYmFjayBpcyBub3QgTm9uZQpAQCAtMTI5MywxNyArMTM5MywxOCBAQCBkZWYgdGVzdF9j
d2RfZGVsZXRlZCh0ZXN0ZGlyKToKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBmYWlsZWQgaW4gKiJd
KQotICAgIGFzc2VydCAiSU5URVJOQUxFUlJPUiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkg
KyByZXN1bHQuc3RkZXJyLnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUo
IipJTlRFUk5BTEVSUk9SKiIpCisgICAgcmVzdWx0LnN0ZGVyci5ub19mbm1hdGNoX2xpbmUoIipJ
TlRFUk5BTEVSUk9SKiIpCiAKIAorQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCJsaW1pdGVkX3Jl
Y3Vyc2lvbl9kZXB0aCIpCiBkZWYgdGVzdF9leGNlcHRpb25fcmVwcl9leHRyYWN0aW9uX2Vycm9y
X29uX3JlY3Vyc2lvbigpOgogICAgICIiIgogICAgIEVuc3VyZSB3ZSBjYW4gcHJvcGVybHkgZGV0
ZWN0IGEgcmVjdXJzaW9uIGVycm9yIGV2ZW4KICAgICBpZiBzb21lIGxvY2FscyByYWlzZSBlcnJv
ciBvbiBjb21wYXJpc29uICgjMjQ1OSkuCiAgICAgIiIiCiAKLSAgICBjbGFzcyBudW1weV9saWtl
KG9iamVjdCk6Ci0KKyAgICBjbGFzcyBudW1weV9saWtlOgogICAgICAgICBkZWYgX19lcV9fKHNl
bGYsIG90aGVyKToKICAgICAgICAgICAgIGlmIHR5cGUob3RoZXIpIGlzIG51bXB5X2xpa2U6CiAg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKQEAgLTEzMTcsNDEgKzE0MTgsMzAgQEAg
ZGVmIHRlc3RfZXhjZXB0aW9uX3JlcHJfZXh0cmFjdGlvbl9lcnJvcl9vbl9yZWN1cnNpb24oKToK
ICAgICBkZWYgYih4KToKICAgICAgICAgcmV0dXJuIGEobnVtcHlfbGlrZSgpKQogCi0gICAgdHJ5
OgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGV4Y2luZm86CiAgICAg
ICAgIGEobnVtcHlfbGlrZSgpKQotICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICBmcm9tIF9w
eXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbwotICAgICAgICBmcm9tIF9weXRl
c3QucHl0ZXN0ZXIgaW1wb3J0IExpbmVNYXRjaGVyCi0KLSAgICAgICAgZXhjX2luZm8gPSBFeGNl
cHRpb25JbmZvKCkKIAotICAgICAgICBtYXRjaGVyID0gTGluZU1hdGNoZXIoc3RyKGV4Y19pbmZv
LmdldHJlcHIoKSkuc3BsaXRsaW5lcygpKQotICAgICAgICBtYXRjaGVyLmZubWF0Y2hfbGluZXMo
Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIiEhISBSZWN1cnNpb24gZXJyb3IgZGV0
ZWN0ZWQsIGJ1dCBhbiBlcnJvciBvY2N1cnJlZCBsb2NhdGluZyB0aGUgb3JpZ2luIG9mIHJlY3Vy
c2lvbi4iLAotICAgICAgICAgICAgICAgICIqVGhlIGZvbGxvd2luZyBleGNlcHRpb24gaGFwcGVu
ZWQqIiwKLSAgICAgICAgICAgICAgICAiKlZhbHVlRXJyb3I6IFRoZSB0cnV0aCB2YWx1ZSBvZiBh
biBhcnJheSoiLAotICAgICAgICAgICAgXQotICAgICAgICApCisgICAgbWF0Y2hlciA9IExpbmVN
YXRjaGVyKHN0cihleGNpbmZvLmdldHJlcHIoKSkuc3BsaXRsaW5lcygpKQorICAgIG1hdGNoZXIu
Zm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIiEhISBSZWN1cnNpb24gZXJy
b3IgZGV0ZWN0ZWQsIGJ1dCBhbiBlcnJvciBvY2N1cnJlZCBsb2NhdGluZyB0aGUgb3JpZ2luIG9m
IHJlY3Vyc2lvbi4iLAorICAgICAgICAgICAgIipUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbiBoYXBw
ZW5lZCoiLAorICAgICAgICAgICAgIipWYWx1ZUVycm9yOiBUaGUgdHJ1dGggdmFsdWUgb2YgYW4g
YXJyYXkqIiwKKyAgICAgICAgXQorICAgICkKIAogCitAcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMo
ImxpbWl0ZWRfcmVjdXJzaW9uX2RlcHRoIikKIGRlZiB0ZXN0X25vX3JlY3Vyc2lvbl9pbmRleF9v
bl9yZWN1cnNpb25fZXJyb3IoKToKICAgICAiIiIKICAgICBFbnN1cmUgdGhhdCB3ZSBkb24ndCBi
cmVhayBpbiBjYXNlIHdlIGNhbid0IGZpbmQgdGhlIHJlY3Vyc2lvbiBpbmRleAogICAgIGR1cmlu
ZyBhIHJlY3Vyc2lvbiBlcnJvciAoIzI0ODYpLgogICAgICIiIgotICAgIHRyeToKLQotICAgICAg
ICBjbGFzcyBSZWN1cnNpb25EZXB0aEVycm9yKG9iamVjdCk6CiAKLSAgICAgICAgICAgIGRlZiBf
X2dldGF0dHJfXyhzZWxmLCBhdHRyKToKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihz
ZWxmLCAiXyIgKyBhdHRyKQorICAgIGNsYXNzIFJlY3Vyc2lvbkRlcHRoRXJyb3I6CisgICAgICAg
IGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRy
KHNlbGYsICJfIiArIGF0dHIpCiAKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUnVudGltZUVycm9y
KSBhcyBleGNpbmZvOgogICAgICAgICBSZWN1cnNpb25EZXB0aEVycm9yKCkudHJpZ2dlcgotICAg
IGV4Y2VwdDogICMgbm9xYQotICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQg
RXhjZXB0aW9uSW5mbwotCi0gICAgICAgIGV4Y19pbmZvID0gRXhjZXB0aW9uSW5mbygpCi0gICAg
ICAgIGFzc2VydCAibWF4aW11bSByZWN1cnNpb24iIGluIHN0cihleGNfaW5mby5nZXRyZXByKCkp
Ci0gICAgZWxzZToKLSAgICAgICAgYXNzZXJ0IDAKKyAgICBhc3NlcnQgIm1heGltdW0gcmVjdXJz
aW9uIiBpbiBzdHIoZXhjaW5mby5nZXRyZXByKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVz
dF9zb3VyY2UucHkKaW5kZXggNTZkYWQ3NTY3MWZhLi5kMTJjNTVkOTM1YjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvY29kZS90ZXN0X3NvdXJjZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2UucHkKQEAgLTEsMjIgKzEsMjUgQEAKICMgZmxha2U4
OiBub3FhCiAjIGRpc2FibGUgZmxha2UgY2hlY2sgb24gdGhpcyBmaWxlIGJlY2F1c2Ugc29tZSBj
b25zdHJ1Y3RzIGFyZSBzdHJhbmdlCiAjIG9yIHJlZHVuZGFudCBvbiBwdXJwb3NlIGFuZCBjYW4n
dCBiZSBkaXNhYmxlIG9uIGEgbGluZS1ieS1saW5lIGJhc2lzCi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitpbXBvcnQgYXN0
CiBpbXBvcnQgaW5zcGVjdAoraW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHN5cworaW1wb3J0IHRl
eHR3cmFwCitmcm9tIHR5cGVzIGltcG9ydCBDb2RlVHlwZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFu
eQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAor
CitpbXBvcnQgcHkucGF0aAogCiBpbXBvcnQgX3B5dGVzdC5fY29kZQotaW1wb3J0IHB5CiBpbXBv
cnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGdldGZzbGluZW5vCiBmcm9tIF9w
eXRlc3QuX2NvZGUgaW1wb3J0IFNvdXJjZQotZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBpbXBv
cnQgYXN0Ci0KIAotYXN0b25seSA9IHB5dGVzdC5tYXJrLm5vdGhpbmcKLWZhaWxzb25qeXRob24g
PSBweXRlc3QubWFyay54ZmFpbCgic3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKSIpCiAK
LQotZGVmIHRlc3Rfc291cmNlX3N0cl9mdW5jdGlvbigpOgorZGVmIHRlc3Rfc291cmNlX3N0cl9m
dW5jdGlvbigpIC0+IE5vbmU6CiAgICAgeCA9IFNvdXJjZSgiMyIpCiAgICAgYXNzZXJ0IHN0cih4
KSA9PSAiMyIKIApAQCAtMjYsNDEgKzI5LDE4IEBAIGRlZiB0ZXN0X3NvdXJjZV9zdHJfZnVuY3Rp
b24oKToKICAgICB4ID0gU291cmNlKAogICAgICAgICAiIiIKICAgICAgICAgMwotICAgICIiIiwK
LSAgICAgICAgcnN0cmlwPUZhbHNlLAotICAgICkKLSAgICBhc3NlcnQgc3RyKHgpID09ICJcbjNc
biAgICAiCi0KLSAgICB4ID0gU291cmNlKAogICAgICAgICAiIiIKLSAgICAgICAgMwotICAgICIi
IiwKLSAgICAgICAgcnN0cmlwPVRydWUsCiAgICAgKQogICAgIGFzc2VydCBzdHIoeCkgPT0gIlxu
MyIKIAogCi1kZWYgdGVzdF91bmljb2RlKCk6Ci0gICAgdHJ5OgotICAgICAgICB1bmljb2RlCi0g
ICAgZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAgICAgcmV0dXJuCi0gICAgeCA9IFNvdXJjZSh1bmlj
b2RlKCI0IikpCi0gICAgYXNzZXJ0IHN0cih4KSA9PSAiNCIKLSAgICBjbyA9IF9weXRlc3QuX2Nv
ZGUuY29tcGlsZSh1bmljb2RlKCd1Ilx4YzNceGE1IicsICJ1dGY4IiksIG1vZGU9ImV2YWwiKQot
ICAgIHZhbCA9IGV2YWwoY28pCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsLCB1bmljb2RlKQot
Ci0KLWRlZiB0ZXN0X3NvdXJjZV9mcm9tX2Z1bmN0aW9uKCk6CitkZWYgdGVzdF9zb3VyY2VfZnJv
bV9mdW5jdGlvbigpIC0+IE5vbmU6CiAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
dGVzdF9zb3VyY2Vfc3RyX2Z1bmN0aW9uKQotICAgIGFzc2VydCBzdHIoc291cmNlKS5zdGFydHN3
aXRoKCJkZWYgdGVzdF9zb3VyY2Vfc3RyX2Z1bmN0aW9uKCk6IikKLQorICAgIGFzc2VydCBzdHIo
c291cmNlKS5zdGFydHN3aXRoKCJkZWYgdGVzdF9zb3VyY2Vfc3RyX2Z1bmN0aW9uKCkgLT4gTm9u
ZToiKQogCi1kZWYgdGVzdF9zb3VyY2VfZnJvbV9tZXRob2QoKToKLQotICAgIGNsYXNzIFRlc3RD
bGFzcyhvYmplY3QpOgogCitkZWYgdGVzdF9zb3VyY2VfZnJvbV9tZXRob2QoKSAtPiBOb25lOgor
ICAgIGNsYXNzIFRlc3RDbGFzczoKICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgogICAg
ICAgICAgICAgcGFzcwogCkBAIC02OCwxNTkgKzQ4LDc4IEBAIGRlZiB0ZXN0X3NvdXJjZV9mcm9t
X21ldGhvZCgpOgogICAgIGFzc2VydCBzb3VyY2UubGluZXMgPT0gWyJkZWYgdGVzdF9tZXRob2Qo
c2VsZik6IiwgIiAgICBwYXNzIl0KIAogCi1kZWYgdGVzdF9zb3VyY2VfZnJvbV9saW5lcygpOgor
ZGVmIHRlc3Rfc291cmNlX2Zyb21fbGluZXMoKSAtPiBOb25lOgogICAgIGxpbmVzID0gWyJhIFxu
IiwgImJcbiIsICJjIl0KICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShsaW5lcykK
ICAgICBhc3NlcnQgc291cmNlLmxpbmVzID09IFsiYSAiLCAiYiIsICJjIl0KIAogCi1kZWYgdGVz
dF9zb3VyY2VfZnJvbV9pbm5lcl9mdW5jdGlvbigpOgotCitkZWYgdGVzdF9zb3VyY2VfZnJvbV9p
bm5lcl9mdW5jdGlvbigpIC0+IE5vbmU6CiAgICAgZGVmIGYoKToKLSAgICAgICAgcGFzcworICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAotICAgIHNvdXJjZSA9IF9weXRlc3Qu
X2NvZGUuU291cmNlKGYsIGRlaW5kZW50PUZhbHNlKQotICAgIGFzc2VydCBzdHIoc291cmNlKS5z
dGFydHN3aXRoKCIgICAgZGVmIGYoKToiKQogICAgIHNvdXJjZSA9IF9weXRlc3QuX2NvZGUuU291
cmNlKGYpCiAgICAgYXNzZXJ0IHN0cihzb3VyY2UpLnN0YXJ0c3dpdGgoImRlZiBmKCk6IikKIAog
Ci1kZWYgdGVzdF9zb3VyY2VfcHV0YXJvdW5kX3NpbXBsZSgpOgotICAgIHNvdXJjZSA9IFNvdXJj
ZSgicmFpc2UgVmFsdWVFcnJvciIpCi0gICAgc291cmNlID0gc291cmNlLnB1dGFyb3VuZCgKLSAg
ICAgICAgInRyeToiLAotICAgICAgICAiIiJcCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgot
ICAgICAgICAgICAgeCA9IDQyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB4ID0gMjMiIiIs
Ci0gICAgKQotICAgIGFzc2VydCAoCi0gICAgICAgIHN0cihzb3VyY2UpCi0gICAgICAgID09ICIi
IlwKLXRyeToKLSAgICByYWlzZSBWYWx1ZUVycm9yCi1leGNlcHQgVmFsdWVFcnJvcjoKLSAgICB4
ID0gNDIKLWVsc2U6Ci0gICAgeCA9IDIzIiIiCi0gICAgKQotCi0KLWRlZiB0ZXN0X3NvdXJjZV9w
dXRhcm91bmQoKToKLSAgICBzb3VyY2UgPSBTb3VyY2UoKQotICAgIHNvdXJjZSA9IHNvdXJjZS5w
dXRhcm91bmQoCi0gICAgICAgICIiIgotICAgICAgICBpZiAxOgotICAgICAgICAgICAgeD0xCi0g
ICAgIiIiCi0gICAgKQotICAgIGFzc2VydCBzdHIoc291cmNlKS5zdHJpcCgpID09ICJpZiAxOlxu
ICAgIHg9MSIKLQotCi1kZWYgdGVzdF9zb3VyY2Vfc3RyaXBzKCk6CitkZWYgdGVzdF9zb3VyY2Vf
c3RyaXBzKCkgLT4gTm9uZToKICAgICBzb3VyY2UgPSBTb3VyY2UoIiIpCiAgICAgYXNzZXJ0IHNv
dXJjZSA9PSBTb3VyY2UoKQogICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAiIgogICAgIGFzc2Vy
dCBzb3VyY2Uuc3RyaXAoKSA9PSBzb3VyY2UKIAogCi1kZWYgdGVzdF9zb3VyY2Vfc3RyaXBfbXVs
dGlsaW5lKCk6CitkZWYgdGVzdF9zb3VyY2Vfc3RyaXBfbXVsdGlsaW5lKCkgLT4gTm9uZToKICAg
ICBzb3VyY2UgPSBTb3VyY2UoKQogICAgIHNvdXJjZS5saW5lcyA9IFsiIiwgIiBoZWxsbyIsICIg
ICJdCiAgICAgc291cmNlMiA9IHNvdXJjZS5zdHJpcCgpCiAgICAgYXNzZXJ0IHNvdXJjZTIubGlu
ZXMgPT0gWyIgaGVsbG8iXQogCiAKLWRlZiB0ZXN0X3N5bnRheGVycm9yX3JlcmVwcmVzZW50YXRp
b24oKToKLSAgICBleCA9IHB5dGVzdC5yYWlzZXMoU3ludGF4RXJyb3IsIF9weXRlc3QuX2NvZGUu
Y29tcGlsZSwgInh5eiB4eXoiKQotICAgIGFzc2VydCBleC52YWx1ZS5saW5lbm8gPT0gMQotICAg
IGFzc2VydCBleC52YWx1ZS5vZmZzZXQgaW4gKDQsIDcpICAjIFhYWCBweXB5L2p5dGhvbiB2ZXJz
dXMgY3B5dGhvbj8KLSAgICBhc3NlcnQgZXgudmFsdWUudGV4dC5zdHJpcCgpLCAieCB4IgotCi0K
LWRlZiB0ZXN0X2lzcGFyc2VhYmxlKCk6Ci0gICAgYXNzZXJ0IFNvdXJjZSgiaGVsbG8iKS5pc3Bh
cnNlYWJsZSgpCi0gICAgYXNzZXJ0IFNvdXJjZSgiaWYgMTpcbiAgcGFzcyIpLmlzcGFyc2VhYmxl
KCkKLSAgICBhc3NlcnQgU291cmNlKCIgXG5pZiAxOlxuICBwYXNzIikuaXNwYXJzZWFibGUoKQot
ICAgIGFzc2VydCBub3QgU291cmNlKCJpZiAxOlxuIikuaXNwYXJzZWFibGUoKQotICAgIGFzc2Vy
dCBub3QgU291cmNlKCIgXG5pZiAxOlxucGFzcyIpLmlzcGFyc2VhYmxlKCkKLSAgICBhc3NlcnQg
bm90IFNvdXJjZShjaHIoMCkpLmlzcGFyc2VhYmxlKCkKLQotCi1jbGFzcyBUZXN0QWNjZXNzZXMo
b2JqZWN0KToKLSAgICBzb3VyY2UgPSBTb3VyY2UoCi0gICAgICAgICIiIlwKLSAgICAgICAgZGVm
IGYoeCk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGRlZiBnKHgpOgotICAgICAgICAgICAg
cGFzcwotICAgICIiIgotICAgICkKK2NsYXNzIFRlc3RBY2Nlc3NlczoKKyAgICBkZWYgc2V0dXBf
Y2xhc3Moc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5zb3VyY2UgPSBTb3VyY2UoCisgICAg
ICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYgZih4KToKKyAgICAgICAgICAgICAgICBwYXNz
CisgICAgICAgICAgICBkZWYgZyh4KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIi
IgorICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9nZXRyYW5nZShzZWxmKToKKyAgICBkZWYgdGVz
dF9nZXRyYW5nZShzZWxmKSAtPiBOb25lOgogICAgICAgICB4ID0gc2VsZi5zb3VyY2VbMDoyXQot
ICAgICAgICBhc3NlcnQgeC5pc3BhcnNlYWJsZSgpCiAgICAgICAgIGFzc2VydCBsZW4oeC5saW5l
cykgPT0gMgogICAgICAgICBhc3NlcnQgc3RyKHgpID09ICJkZWYgZih4KTpcbiAgICBwYXNzIgog
Ci0gICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKToKKyAgICBkZWYgdGVzdF9nZXRyYW5nZV9zdGVw
X25vdF9zdXBwb3J0ZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2Vz
KEluZGV4RXJyb3IsIG1hdGNoPXIic3RlcCIpOgorICAgICAgICAgICAgc2VsZi5zb3VyY2VbOjoy
XQorCisgICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKSAtPiBOb25lOgogICAgICAgICB4ID0gc2Vs
Zi5zb3VyY2VbMF0KICAgICAgICAgYXNzZXJ0IHggPT0gImRlZiBmKHgpOiIKIAotICAgIGRlZiB0
ZXN0X2xlbihzZWxmKToKKyAgICBkZWYgdGVzdF9sZW4oc2VsZikgLT4gTm9uZToKICAgICAgICAg
YXNzZXJ0IGxlbihzZWxmLnNvdXJjZSkgPT0gNAogCi0gICAgZGVmIHRlc3RfaXRlcihzZWxmKToK
KyAgICBkZWYgdGVzdF9pdGVyKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHZhbHVlcyA9IFt4IGZv
ciB4IGluIHNlbGYuc291cmNlXQogICAgICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gNAogCiAK
LWNsYXNzIFRlc3RTb3VyY2VQYXJzaW5nQW5kQ29tcGlsaW5nKG9iamVjdCk6Ci0gICAgc291cmNl
ID0gU291cmNlKAotICAgICAgICAiIiJcCi0gICAgICAgIGRlZiBmKHgpOgotICAgICAgICAgICAg
YXNzZXJ0ICh4ID09Ci0gICAgICAgICAgICAgICAgICAgIDMgKwotICAgICAgICAgICAgICAgICAg
ICA0KQotICAgICIiIgotICAgICkuc3RyaXAoKQotCi0gICAgZGVmIHRlc3RfY29tcGlsZShzZWxm
KToKLSAgICAgICAgY28gPSBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUoIng9MyIpCi0gICAgICAgIGQg
PSB7fQotICAgICAgICBleGVjKGNvLCBkKQotICAgICAgICBhc3NlcnQgZFsieCJdID09IDMKLQot
ICAgIGRlZiB0ZXN0X2NvbXBpbGVfYW5kX2dldHNvdXJjZV9zaW1wbGUoc2VsZik6Ci0gICAgICAg
IGNvID0gX3B5dGVzdC5fY29kZS5jb21waWxlKCJ4PTMiKQotICAgICAgICBleGVjKGNvKQotICAg
ICAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShjbykKLSAgICAgICAgYXNzZXJ0IHN0
cihzb3VyY2UpID09ICJ4PTMiCi0KLSAgICBkZWYgdGVzdF9jb21waWxlX2FuZF9nZXRzb3VyY2Vf
dGhyb3VnaF9zYW1lX2Z1bmN0aW9uKHNlbGYpOgotCi0gICAgICAgIGRlZiBnZW5zb3VyY2Uoc291
cmNlKToKLSAgICAgICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUoc291cmNlKQot
Ci0gICAgICAgIGNvMSA9IGdlbnNvdXJjZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
ZGVmIGYoKToKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigpCi0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIGNvMiA9IGdlbnNvdXJjZSgKLSAgICAgICAgICAgICIiIgotICAg
ICAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkKK2Ns
YXNzIFRlc3RTb3VyY2VQYXJzaW5nOgorICAgIGRlZiBzZXR1cF9jbGFzcyhzZWxmKSAtPiBOb25l
OgorICAgICAgICBzZWxmLnNvdXJjZSA9IFNvdXJjZSgKKyAgICAgICAgICAgICIiIlwKKyAgICAg
ICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgICAgIGFzc2VydCAoeCA9PQorICAgICAgICAg
ICAgICAgICAgICAgICAgMyArCisgICAgICAgICAgICAgICAgICAgICAgICA0KQogICAgICAgICAi
IiIKLSAgICAgICAgKQotICAgICAgICBzb3VyY2UxID0gaW5zcGVjdC5nZXRzb3VyY2UoY28xKQot
ICAgICAgICBhc3NlcnQgIktleUVycm9yIiBpbiBzb3VyY2UxCi0gICAgICAgIHNvdXJjZTIgPSBp
bnNwZWN0LmdldHNvdXJjZShjbzIpCi0gICAgICAgIGFzc2VydCAiVmFsdWVFcnJvciIgaW4gc291
cmNlMgorICAgICAgICApLnN0cmlwKCkKIAotICAgIGRlZiB0ZXN0X2dldHN0YXRlbWVudChzZWxm
KToKKyAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnQoc2VsZikgLT4gTm9uZToKICAgICAgICAgIyBw
cmludCBzdHIoc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzcyA9IHN0cihzZWxmLnNvdXJjZVsxOl0p
CiAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDQpOgpAQCAtMjI5LDE5ICsxMjgsMTggQEAgY2xh
c3MgVGVzdFNvdXJjZVBhcnNpbmdBbmRDb21waWxpbmcob2JqZWN0KToKICAgICAgICAgICAgICMg
eCA9IHMuZGVpbmRlbnQoKQogICAgICAgICAgICAgYXNzZXJ0IHN0cihzKSA9PSBhc3MKIAotICAg
IGRlZiB0ZXN0X2dldHN0YXRlbWVudHJhbmdlX3RyaXBsZV9xdW90ZWQoc2VsZik6CisgICAgZGVm
IHRlc3RfZ2V0c3RhdGVtZW50cmFuZ2VfdHJpcGxlX3F1b3RlZChzZWxmKSAtPiBOb25lOgogICAg
ICAgICAjIHByaW50IHN0cihzZWxmLnNvdXJjZSkKICAgICAgICAgc291cmNlID0gU291cmNlKAog
ICAgICAgICAgICAgIiIiaGVsbG8oJycnCiAgICAgICAgICcnJykiIiIKICAgICAgICAgKQogICAg
ICAgICBzID0gc291cmNlLmdldHN0YXRlbWVudCgwKQotICAgICAgICBhc3NlcnQgcyA9PSBzdHIo
c291cmNlKQorICAgICAgICBhc3NlcnQgcyA9PSBzb3VyY2UKICAgICAgICAgcyA9IHNvdXJjZS5n
ZXRzdGF0ZW1lbnQoMSkKLSAgICAgICAgYXNzZXJ0IHMgPT0gc3RyKHNvdXJjZSkKKyAgICAgICAg
YXNzZXJ0IHMgPT0gc291cmNlCiAKLSAgICBAYXN0b25seQotICAgIGRlZiB0ZXN0X2dldHN0YXRl
bWVudHJhbmdlX3dpdGhpbl9jb25zdHJ1Y3RzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dldHN0YXRl
bWVudHJhbmdlX3dpdGhpbl9jb25zdHJ1Y3RzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJj
ZSA9IFNvdXJjZSgKICAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIHRyeToKQEAgLTI2Myw3
ICsxNjEsNyBAQCBjbGFzcyBUZXN0U291cmNlUGFyc2luZ0FuZENvbXBpbGluZyhvYmplY3QpOgog
ICAgICAgICAjIGFzc2VydCBzb3VyY2UuZ2V0c3RhdGVtZW50cmFuZ2UoNSkgPT0gKDAsIDcpCiAg
ICAgICAgIGFzc2VydCBzb3VyY2UuZ2V0c3RhdGVtZW50cmFuZ2UoNikgPT0gKDYsIDcpCiAKLSAg
ICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV9idWcoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0
c3RhdGVtZW50cmFuZ2VfYnVnKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IFNvdXJj
ZSgKICAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIHRyeToKQEAgLTI3Nyw3ICsxNzUsNyBA
QCBjbGFzcyBUZXN0U291cmNlUGFyc2luZ0FuZENvbXBpbGluZyhvYmplY3QpOgogICAgICAgICBh
c3NlcnQgbGVuKHNvdXJjZSkgPT0gNgogICAgICAgICBhc3NlcnQgc291cmNlLmdldHN0YXRlbWVu
dHJhbmdlKDIpID09ICgxLCA0KQogCi0gICAgZGVmIHRlc3RfZ2V0c3RhdGVtZW50cmFuZ2VfYnVn
MihzZWxmKToKKyAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV9idWcyKHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIHNvdXJjZSA9IFNvdXJjZSgKICAgICAgICAgICAgICIiIlwKICAgICAgICAg
ICAgIGFzc2VydCAoCkBAIC0yOTQsNyArMTkyLDcgQEAgY2xhc3MgVGVzdFNvdXJjZVBhcnNpbmdB
bmRDb21waWxpbmcob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGxlbihzb3VyY2UpID09IDkKICAg
ICAgICAgYXNzZXJ0IHNvdXJjZS5nZXRzdGF0ZW1lbnRyYW5nZSg1KSA9PSAoMCwgOSkKIAotICAg
IGRlZiB0ZXN0X2dldHN0YXRlbWVudHJhbmdlX2FzdF9pc3N1ZTU4KHNlbGYpOgorICAgIGRlZiB0
ZXN0X2dldHN0YXRlbWVudHJhbmdlX2FzdF9pc3N1ZTU4KHNlbGYpIC0+IE5vbmU6CiAgICAgICAg
IHNvdXJjZSA9IFNvdXJjZSgKICAgICAgICAgICAgICIiIlwKIApAQCAtMzA4LDYxICsyMDYsMTkg
QEAgY2xhc3MgVGVzdFNvdXJjZVBhcnNpbmdBbmRDb21waWxpbmcob2JqZWN0KToKICAgICAgICAg
YXNzZXJ0IGdldHN0YXRlbWVudCgyLCBzb3VyY2UpLmxpbmVzID09IHNvdXJjZS5saW5lc1syOjNd
CiAgICAgICAgIGFzc2VydCBnZXRzdGF0ZW1lbnQoMywgc291cmNlKS5saW5lcyA9PSBzb3VyY2Uu
bGluZXNbMzo0XQogCi0gICAgZGVmIHRlc3RfZ2V0c3RhdGVtZW50cmFuZ2Vfb3V0X29mX2JvdW5k
c19weTMoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0c3RhdGVtZW50cmFuZ2Vfb3V0X29mX2JvdW5k
c19weTMoc2VsZikgLT4gTm9uZToKICAgICAgICAgc291cmNlID0gU291cmNlKCJpZiB4eHg6XG4g
ICBmcm9tIC5jb2xsZWN0aW9ucyBpbXBvcnQgc29tZXRoaW5nIikKICAgICAgICAgciA9IHNvdXJj
ZS5nZXRzdGF0ZW1lbnRyYW5nZSgxKQogICAgICAgICBhc3NlcnQgciA9PSAoMSwgMikKIAotICAg
IGRlZiB0ZXN0X2dldHN0YXRlbWVudHJhbmdlX3dpdGhfc3ludGF4ZXJyb3JfaXNzdWU3KHNlbGYp
OgorICAgIGRlZiB0ZXN0X2dldHN0YXRlbWVudHJhbmdlX3dpdGhfc3ludGF4ZXJyb3JfaXNzdWU3
KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IFNvdXJjZSgiOiIpCiAgICAgICAgIHB5
dGVzdC5yYWlzZXMoU3ludGF4RXJyb3IsIGxhbWJkYTogc291cmNlLmdldHN0YXRlbWVudHJhbmdl
KDApKQogCi0gICAgZGVmIHRlc3RfY29tcGlsZV90b19hc3Qoc2VsZik6Ci0gICAgICAgIGltcG9y
dCBhc3QKLQotICAgICAgICBzb3VyY2UgPSBTb3VyY2UoInggPSA0IikKLSAgICAgICAgbW9kID0g
c291cmNlLmNvbXBpbGUoZmxhZz1hc3QuUHlDRl9PTkxZX0FTVCkKLSAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UobW9kLCBhc3QuTW9kdWxlKQotICAgICAgICBjb21waWxlKG1vZCwgIjxmaWxlbmFt
ZT4iLCAiZXhlYyIpCi0KLSAgICBkZWYgdGVzdF9jb21waWxlX2FuZF9nZXRzb3VyY2Uoc2VsZik6
Ci0gICAgICAgIGNvID0gc2VsZi5zb3VyY2UuY29tcGlsZSgpCi0gICAgICAgIHB5LmJ1aWx0aW4u
ZXhlY18oY28sIGdsb2JhbHMoKSkKLSAgICAgICAgZig3KQotICAgICAgICBleGNpbmZvID0gcHl0
ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvciwgImYoNikiKQotICAgICAgICBmcmFtZSA9IGV4Y2lu
Zm8udHJhY2ViYWNrWy0xXS5mcmFtZQotICAgICAgICBzdG10ID0gZnJhbWUuY29kZS5mdWxsc291
cmNlLmdldHN0YXRlbWVudChmcmFtZS5saW5lbm8pCi0gICAgICAgICMgcHJpbnQgImJsb2NrIiwg
c3RyKGJsb2NrKQotICAgICAgICBhc3NlcnQgc3RyKHN0bXQpLnN0cmlwKCkuc3RhcnRzd2l0aCgi
YXNzZXJ0IikKLQotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibmFtZSIsIFsiIiwgTm9u
ZSwgIm15Il0pCi0gICAgZGVmIHRlc3RfY29tcGlsZWZ1bmNzX2FuZF9wYXRoX3Nhbml0eShzZWxm
LCBuYW1lKToKLQotICAgICAgICBkZWYgY2hlY2soY29tcCwgbmFtZSk6Ci0gICAgICAgICAgICBj
byA9IGNvbXAoc2VsZi5zb3VyY2UsIG5hbWUpCi0gICAgICAgICAgICBpZiBub3QgbmFtZToKLSAg
ICAgICAgICAgICAgICBleHBlY3RlZCA9ICJjb2RlZ2VuICVzOiVkPiIgJSAobXlwYXRoLCBteWxp
bmVubyArIDIgKyAzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleHBlY3Rl
ZCA9ICJjb2RlZ2VuICVyICVzOiVkPiIgJSAobmFtZSwgbXlwYXRoLCBteWxpbmVubyArIDIgKyAz
KQotICAgICAgICAgICAgZm4gPSBjby5jb19maWxlbmFtZQotICAgICAgICAgICAgYXNzZXJ0IGZu
LmVuZHN3aXRoKGV4cGVjdGVkKQogCi0gICAgICAgIG15Y29kZSA9IF9weXRlc3QuX2NvZGUuQ29k
ZShzZWxmLnRlc3RfY29tcGlsZWZ1bmNzX2FuZF9wYXRoX3Nhbml0eSkKLSAgICAgICAgbXlsaW5l
bm8gPSBteWNvZGUuZmlyc3RsaW5lbm8KLSAgICAgICAgbXlwYXRoID0gbXljb2RlLnBhdGgKLQot
ICAgICAgICBmb3IgY29tcCBpbiBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUsIF9weXRlc3QuX2NvZGUu
U291cmNlLmNvbXBpbGU6Ci0gICAgICAgICAgICBjaGVjayhjb21wLCBuYW1lKQotCi0gICAgZGVm
IHRlc3Rfb2Zmc2V0bGVzc19zeW5lcnIoc2VsZik6Ci0gICAgICAgIHB5dGVzdC5yYWlzZXMoU3lu
dGF4RXJyb3IsIF9weXRlc3QuX2NvZGUuY29tcGlsZSwgImxhbWJkYSBhLGE6IDAiLCBtb2RlPSJl
dmFsIikKLQotCi1kZWYgdGVzdF9nZXRzdGFydGluZ2Jsb2NrX3NpbmdsZWxpbmUoKToKLQotICAg
IGNsYXNzIEEob2JqZWN0KToKLQotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgor
ZGVmIHRlc3RfZ2V0c3RhcnRpbmdibG9ja19zaW5nbGVsaW5lKCkgLT4gTm9uZToKKyAgICBjbGFz
cyBBOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpIC0+IE5vbmU6CiAgICAgICAg
ICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKICAgICAgICAgICAgIHNlbGYuc291cmNlID0g
X3B5dGVzdC5fY29kZS5GcmFtZShmcmFtZSkuc3RhdGVtZW50CiAKQEAgLTM3Miw3NSArMjI4LDY0
IEBAIGRlZiB0ZXN0X2dldHN0YXJ0aW5nYmxvY2tfc2luZ2xlbGluZSgpOgogICAgIGFzc2VydCBs
ZW4odmFsdWVzKSA9PSAxCiAKIAotZGVmIHRlc3RfZ2V0bGluZV9maW5hbGx5KCk6Ci0KLSAgICBk
ZWYgYygpOgorZGVmIHRlc3RfZ2V0bGluZV9maW5hbGx5KCkgLT4gTm9uZToKKyAgICBkZWYgYygp
IC0+IE5vbmU6CiAgICAgICAgIHBhc3MKIAotICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKAot
ICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICIiIgotICAgICAgICAgICB0ZWFyZG93biA9IE5v
bmUKLSAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGMoMSkKLSAgICAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgICAgICBpZiB0ZWFyZG93bjoKLSAgICAgICAgICAgICAgICAgICAg
dGVhcmRvd24oKQotICAgICIiIiwKLSAgICApCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVF
cnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgdGVhcmRvd24gPSBOb25lCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGMoMSkgICMgdHlwZTogaWdub3JlCisgICAgICAgIGZpbmFsbHk6CisgICAg
ICAgICAgICBpZiB0ZWFyZG93bjoKKyAgICAgICAgICAgICAgICB0ZWFyZG93bigpICAjIHR5cGU6
IGlnbm9yZVt1bnJlYWNoYWJsZV0KICAgICBzb3VyY2UgPSBleGNpbmZvLnRyYWNlYmFja1stMV0u
c3RhdGVtZW50Ci0gICAgYXNzZXJ0IHN0cihzb3VyY2UpLnN0cmlwKCkgPT0gImMoMSkiCisgICAg
YXNzZXJ0IHN0cihzb3VyY2UpLnN0cmlwKCkgPT0gImMoMSkgICMgdHlwZTogaWdub3JlIgogCiAK
LWRlZiB0ZXN0X2dldGZ1bmNzb3VyY2VfZHluYW1pYygpOgotICAgIHNvdXJjZSA9ICIiIgotICAg
ICAgICBkZWYgZigpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorZGVmIHRlc3RfZ2V0
ZnVuY3NvdXJjZV9keW5hbWljKCkgLT4gTm9uZToKKyAgICBkZWYgZigpOgorICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAotICAgICAgICBkZWYgZygpOiBwYXNzCi0gICAgIiIi
Ci0gICAgY28gPSBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUoc291cmNlKQotICAgIHB5LmJ1aWx0aW4u
ZXhlY18oY28sIGdsb2JhbHMoKSkKLSAgICBhc3NlcnQgc3RyKF9weXRlc3QuX2NvZGUuU291cmNl
KGYpKS5zdHJpcCgpID09ICJkZWYgZigpOlxuICAgIHJhaXNlIFZhbHVlRXJyb3IiCi0gICAgYXNz
ZXJ0IHN0cihfcHl0ZXN0Ll9jb2RlLlNvdXJjZShnKSkuc3RyaXAoKSA9PSAiZGVmIGcoKTogcGFz
cyIKKyAgICBkZWYgZygpOgorICAgICAgICBwYXNzICAjIHByYWdtYTogbm8gY292ZXIKIAorICAg
IGZfc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoZikKKyAgICBnX3NvdXJjZSA9IF9weXRl
c3QuX2NvZGUuU291cmNlKGcpCisgICAgYXNzZXJ0IHN0cihmX3NvdXJjZSkuc3RyaXAoKSA9PSAi
ZGVmIGYoKTpcbiAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkiCisgICAgYXNzZXJ0IHN0
cihnX3NvdXJjZSkuc3RyaXAoKSA9PSAiZGVmIGcoKTpcbiAgICBwYXNzICAjIHByYWdtYTogbm8g
Y292ZXIiCiAKLWRlZiB0ZXN0X2dldGZ1bmNzb3VyY2Vfd2l0aF9tdWx0aW5lX3N0cmluZygpOgog
CitkZWYgdGVzdF9nZXRmdW5jc291cmNlX3dpdGhfbXVsdGluZV9zdHJpbmcoKSAtPiBOb25lOgog
ICAgIGRlZiBmKCk6CiAgICAgICAgIGMgPSAiIiJ3aGlsZSBUcnVlOgogICAgIHBhc3MKICIiIgog
Ci0gICAgYXNzZXJ0ICgKLSAgICAgICAgc3RyKF9weXRlc3QuX2NvZGUuU291cmNlKGYpKS5zdHJp
cCgpCi0gICAgICAgID09ICdkZWYgZigpOlxuICAgIGMgPSAiIiJ3aGlsZSBUcnVlOlxuICAgIHBh
c3NcbiIiIicKLSAgICApCi0KLQotZGVmIHRlc3RfZGVpbmRlbnQoKToKLSAgICBmcm9tIF9weXRl
c3QuX2NvZGUuc291cmNlIGltcG9ydCBkZWluZGVudCBhcyBkZWluZGVudAotCi0gICAgYXNzZXJ0
IGRlaW5kZW50KFsiXHRmb28iLCAiXHRiYXIiXSkgPT0gWyJmb28iLCAiYmFyIl0KLQorICAgIGV4
cGVjdGVkID0gJycnXAogICAgIGRlZiBmKCk6CiAgICAgICAgIGMgPSAiIiJ3aGlsZSBUcnVlOgog
ICAgIHBhc3MKICIiIgorJycnCisgICAgYXNzZXJ0IHN0cihfcHl0ZXN0Ll9jb2RlLlNvdXJjZShm
KSkgPT0gZXhwZWN0ZWQucnN0cmlwKCkKIAotICAgIGxpbmVzID0gZGVpbmRlbnQoaW5zcGVjdC5n
ZXRzb3VyY2UoZikuc3BsaXRsaW5lcygpKQotICAgIGFzc2VydCBsaW5lcyA9PSBbImRlZiBmKCk6
IiwgJyAgICBjID0gIiIid2hpbGUgVHJ1ZTonLCAiICAgIHBhc3MiLCAnIiIiJ10KIAotICAgIHNv
dXJjZSA9ICIiIgorZGVmIHRlc3RfZGVpbmRlbnQoKSAtPiBOb25lOgorICAgIGZyb20gX3B5dGVz
dC5fY29kZS5zb3VyY2UgaW1wb3J0IGRlaW5kZW50IGFzIGRlaW5kZW50CisKKyAgICBhc3NlcnQg
ZGVpbmRlbnQoWyJcdGZvbyIsICJcdGJhciJdKSA9PSBbImZvbyIsICJiYXIiXQorCisgICAgc291
cmNlID0gIiIiXAogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgZGVmIGcoKToKICAgICAg
ICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAgICAgbGluZXMgPSBkZWluZGVudChzb3VyY2Uuc3Bs
aXRsaW5lcygpKQotICAgIGFzc2VydCBsaW5lcyA9PSBbIiIsICJkZWYgZigpOiIsICIgICAgZGVm
IGcoKToiLCAiICAgICAgICBwYXNzIiwgIiAgICAiXQorICAgIGFzc2VydCBsaW5lcyA9PSBbImRl
ZiBmKCk6IiwgIiAgICBkZWYgZygpOiIsICIgICAgICAgIHBhc3MiXQogCiAKLWRlZiB0ZXN0X3Nv
dXJjZV9vZl9jbGFzc19hdF9lb2Zfd2l0aG91dF9uZXdsaW5lKHRtcGRpcik6CitkZWYgdGVzdF9z
b3VyY2Vfb2ZfY2xhc3NfYXRfZW9mX3dpdGhvdXRfbmV3bGluZSh0bXBkaXIsIF9zeXNfc25hcHNo
b3QpIC0+IE5vbmU6CiAgICAgIyB0aGlzIHRlc3QgZmFpbHMgYmVjYXVzZSB0aGUgaW1wbGljaXQg
aW5zcGVjdC5nZXRzb3VyY2UoQSkgYmVsb3cKICAgICAjIGRvZXMgbm90IHJldHVybiB0aGUgIngg
PSAxIiBsYXN0IGxpbmUuCiAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoCkBAIC00
NjIsMTE4ICszMDcsMTE1IEBAIGlmIFRydWU6CiAgICAgICAgIHBhc3MKIAogCi1kZWYgdGVzdF9n
ZXRzb3VyY2VfZmFsbGJhY2soKToKLSAgICBmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGltcG9y
dCBnZXRzb3VyY2UKLQorZGVmIHRlc3Rfc291cmNlX2ZhbGxiYWNrKCkgLT4gTm9uZToKKyAgICBz
cmMgPSBTb3VyY2UoeCkKICAgICBleHBlY3RlZCA9ICIiImRlZiB4KCk6CiAgICAgcGFzcyIiIgot
ICAgIHNyYyA9IGdldHNvdXJjZSh4KQotICAgIGFzc2VydCBzcmMgPT0gZXhwZWN0ZWQKLQotCi1k
ZWYgdGVzdF9pZGVtX2NvbXBpbGVfYW5kX2dldHNvdXJjZSgpOgotICAgIGZyb20gX3B5dGVzdC5f
Y29kZS5zb3VyY2UgaW1wb3J0IGdldHNvdXJjZQorICAgIGFzc2VydCBzdHIoc3JjKSA9PSBleHBl
Y3RlZAogCi0gICAgZXhwZWN0ZWQgPSAiZGVmIHgoKTogcGFzcyIKLSAgICBjbyA9IF9weXRlc3Qu
X2NvZGUuY29tcGlsZShleHBlY3RlZCkKLSAgICBzcmMgPSBnZXRzb3VyY2UoY28pCi0gICAgYXNz
ZXJ0IHNyYyA9PSBleHBlY3RlZAogCi0KLWRlZiB0ZXN0X2ZpbmRzb3VyY2VfZmFsbGJhY2soKToK
K2RlZiB0ZXN0X2ZpbmRzb3VyY2VfZmFsbGJhY2soKSAtPiBOb25lOgogICAgIGZyb20gX3B5dGVz
dC5fY29kZS5zb3VyY2UgaW1wb3J0IGZpbmRzb3VyY2UKIAogICAgIHNyYywgbGluZW5vID0gZmlu
ZHNvdXJjZSh4KQorICAgIGFzc2VydCBzcmMgaXMgbm90IE5vbmUKICAgICBhc3NlcnQgInRlc3Rf
ZmluZHNvdXJjZV9zaW1wbGUiIGluIHN0cihzcmMpCiAgICAgYXNzZXJ0IHNyY1tsaW5lbm9dID09
ICIgICAgZGVmIHgoKToiCiAKIAotZGVmIHRlc3RfZmluZHNvdXJjZSgpOgorZGVmIHRlc3RfZmlu
ZHNvdXJjZShtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICBmcm9tIF9weXRlc3QuX2NvZGUuc291
cmNlIGltcG9ydCBmaW5kc291cmNlCiAKLSAgICBjbyA9IF9weXRlc3QuX2NvZGUuY29tcGlsZSgK
LSAgICAgICAgIiIiaWYgMToKLSAgICBkZWYgeCgpOgotICAgICAgICBwYXNzCi0iIiIKLSAgICAp
CisgICAgZmlsZW5hbWUgPSAiPHB5dGVzdC10ZXN0X2ZpbmRzb3VyY2U+IgorICAgIGxpbmVzID0g
WyJpZiAxOlxuIiwgIiAgICBkZWYgeCgpOlxuIiwgIiAgICAgICAgICBwYXNzXG4iXQorICAgIGNv
ID0gY29tcGlsZSgiIi5qb2luKGxpbmVzKSwgZmlsZW5hbWUsICJleGVjIikKKworICAgICMgVHlw
ZSBpZ25vcmVkIGJlY2F1c2UgbGluZWNhY2hlLmNhY2hlIGlzIHByaXZhdGUuCisgICAgbW9ua2V5
cGF0Y2guc2V0aXRlbShsaW5lY2FjaGUuY2FjaGUsIGZpbGVuYW1lLCAoMSwgTm9uZSwgbGluZXMs
IGZpbGVuYW1lKSkgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KIAogICAgIHNyYywgbGlu
ZW5vID0gZmluZHNvdXJjZShjbykKKyAgICBhc3NlcnQgc3JjIGlzIG5vdCBOb25lCiAgICAgYXNz
ZXJ0ICJpZiAxOiIgaW4gc3RyKHNyYykKIAotICAgIGQgPSB7fQorICAgIGQgPSB7fSAgIyB0eXBl
OiBEaWN0W3N0ciwgQW55XQogICAgIGV2YWwoY28sIGQpCiAgICAgc3JjLCBsaW5lbm8gPSBmaW5k
c291cmNlKGRbIngiXSkKKyAgICBhc3NlcnQgc3JjIGlzIG5vdCBOb25lCiAgICAgYXNzZXJ0ICJp
ZiAxOiIgaW4gc3RyKHNyYykKICAgICBhc3NlcnQgc3JjW2xpbmVub10gPT0gIiAgICBkZWYgeCgp
OiIKIAogCi1kZWYgdGVzdF9nZXRmc2xpbmVubygpOgotICAgIGZyb20gX3B5dGVzdC5fY29kZSBp
bXBvcnQgZ2V0ZnNsaW5lbm8KLQotICAgIGRlZiBmKHgpOgotICAgICAgICBwYXNzCitkZWYgdGVz
dF9nZXRmc2xpbmVubygpIC0+IE5vbmU6CisgICAgZGVmIGYoeCkgLT4gTm9uZToKKyAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKICAgICBmc3BhdGgsIGxpbmVubyA9IGdldGZz
bGluZW5vKGYpCiAKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShmc3BhdGgsIHB5LnBhdGgubG9jYWwp
CiAgICAgYXNzZXJ0IGZzcGF0aC5iYXNlbmFtZSA9PSAidGVzdF9zb3VyY2UucHkiCi0gICAgYXNz
ZXJ0IGxpbmVubyA9PSBfcHl0ZXN0Ll9jb2RlLmdldHJhd2NvZGUoZikuY29fZmlyc3RsaW5lbm8g
LSAxICAjIHNlZSBmaW5kc291cmNlCisgICAgYXNzZXJ0IGxpbmVubyA9PSBmLl9fY29kZV9fLmNv
X2ZpcnN0bGluZW5vIC0gMSAgIyBzZWUgZmluZHNvdXJjZQogCi0gICAgY2xhc3MgQShvYmplY3Qp
OgorICAgIGNsYXNzIEE6CiAgICAgICAgIHBhc3MKIAogICAgIGZzcGF0aCwgbGluZW5vID0gZ2V0
ZnNsaW5lbm8oQSkKIAogICAgIF8sIEFfbGluZW5vID0gaW5zcGVjdC5maW5kc291cmNlKEEpCisg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoZnNwYXRoLCBweS5wYXRoLmxvY2FsKQogICAgIGFzc2VydCBm
c3BhdGguYmFzZW5hbWUgPT0gInRlc3Rfc291cmNlLnB5IgogICAgIGFzc2VydCBsaW5lbm8gPT0g
QV9saW5lbm8KIAogICAgIGFzc2VydCBnZXRmc2xpbmVubygzKSA9PSAoIiIsIC0xKQogCi0gICAg
Y2xhc3MgQihvYmplY3QpOgorICAgIGNsYXNzIEI6CiAgICAgICAgIHBhc3MKIAotICAgIEIuX19u
YW1lX18gPSAiQjIiCisgICAgQi5fX25hbWVfXyA9IEIuX19xdWFsbmFtZV9fID0gIkIyIgogICAg
IGFzc2VydCBnZXRmc2xpbmVubyhCKVsxXSA9PSAtMQogCisgICAgY28gPSBjb21waWxlKCIuLi4i
LCAiIiwgImV2YWwiKQorICAgIGFzc2VydCBjby5jb19maWxlbmFtZSA9PSAiIgogCi1kZWYgdGVz
dF9jb2RlX29mX29iamVjdF9pbnN0YW5jZV93aXRoX2NhbGwoKToKKyAgICBpZiBoYXNhdHRyKHN5
cywgInB5cHlfdmVyc2lvbl9pbmZvIik6CisgICAgICAgIGFzc2VydCBnZXRmc2xpbmVubyhjbykg
PT0gKCIiLCAtMSkKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgZ2V0ZnNsaW5lbm8oY28pID09
ICgiIiwgMCkKIAotICAgIGNsYXNzIEEob2JqZWN0KToKKworZGVmIHRlc3RfY29kZV9vZl9vYmpl
Y3RfaW5zdGFuY2Vfd2l0aF9jYWxsKCkgLT4gTm9uZToKKyAgICBjbGFzcyBBOgogICAgICAgICBw
YXNzCiAKICAgICBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBfcHl0ZXN0Ll9jb2Rl
LlNvdXJjZShBKCkpKQogCi0gICAgY2xhc3MgV2l0aENhbGwob2JqZWN0KToKLQotICAgICAgICBk
ZWYgX19jYWxsX18oc2VsZik6CisgICAgY2xhc3MgV2l0aENhbGw6CisgICAgICAgIGRlZiBfX2Nh
bGxfXyhzZWxmKSAtPiBOb25lOgogICAgICAgICAgICAgcGFzcwogCiAgICAgY29kZSA9IF9weXRl
c3QuX2NvZGUuQ29kZShXaXRoQ2FsbCgpKQogICAgIGFzc2VydCAicGFzcyIgaW4gc3RyKGNvZGUu
c291cmNlKCkpCiAKLSAgICBjbGFzcyBIZWxsbyhvYmplY3QpOgotCi0gICAgICAgIGRlZiBfX2Nh
bGxfXyhzZWxmKToKKyAgICBjbGFzcyBIZWxsbzoKKyAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgICAgICBwYXNzCiAKICAgICBweXRlc3QucmFpc2VzKFR5cGVFcnJv
ciwgbGFtYmRhOiBfcHl0ZXN0Ll9jb2RlLkNvZGUoSGVsbG8pKQogCiAKLWRlZiBnZXRzdGF0ZW1l
bnQobGluZW5vLCBzb3VyY2UpOgorZGVmIGdldHN0YXRlbWVudChsaW5lbm86IGludCwgc291cmNl
KSAtPiBTb3VyY2U6CiAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBpbXBvcnQgZ2V0c3Rh
dGVtZW50cmFuZ2VfYXN0CiAKLSAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShzb3Vy
Y2UsIGRlaW5kZW50PUZhbHNlKQotICAgIGFzdCwgc3RhcnQsIGVuZCA9IGdldHN0YXRlbWVudHJh
bmdlX2FzdChsaW5lbm8sIHNvdXJjZSkKLSAgICByZXR1cm4gc291cmNlW3N0YXJ0OmVuZF0KKyAg
ICBzcmMgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShzb3VyY2UpCisgICAgYXN0LCBzdGFydCwgZW5k
ID0gZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KGxpbmVubywgc3JjKQorICAgIHJldHVybiBzcmNbc3Rh
cnQ6ZW5kXQogCiAKLWRlZiB0ZXN0X29uZWxpbmUoKToKK2RlZiB0ZXN0X29uZWxpbmUoKSAtPiBO
b25lOgogICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgwLCAicmFpc2UgVmFsdWVFcnJvciIpCiAg
ICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICJyYWlzZSBWYWx1ZUVycm9yIgogCiAKLWRlZiB0ZXN0
X2NvbW1lbnRfYW5kX25vX25ld2xpbmVfYXRfZW5kKCk6CitkZWYgdGVzdF9jb21tZW50X2FuZF9u
b19uZXdsaW5lX2F0X2VuZCgpIC0+IE5vbmU6CiAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJj
ZSBpbXBvcnQgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0CiAKICAgICBzb3VyY2UgPSBTb3VyY2UoCkBA
IC01ODcsMTMgKzQyOSwxMiBAQCBkZWYgdGVzdF9jb21tZW50X2FuZF9ub19uZXdsaW5lX2F0X2Vu
ZCgpOgogICAgIGFzc2VydCBlbmQgPT0gMgogCiAKLWRlZiB0ZXN0X29uZWxpbmVfYW5kX2NvbW1l
bnQoKToKK2RlZiB0ZXN0X29uZWxpbmVfYW5kX2NvbW1lbnQoKSAtPiBOb25lOgogICAgIHNvdXJj
ZSA9IGdldHN0YXRlbWVudCgwLCAicmFpc2UgVmFsdWVFcnJvclxuI2hlbGxvIikKICAgICBhc3Nl
cnQgc3RyKHNvdXJjZSkgPT0gInJhaXNlIFZhbHVlRXJyb3IiCiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKGhhc2F0dHIoc3lzLCAicHlweV92ZXJzaW9uX2luZm8iKSwgcmVhc29uPSJkb2VzIG5vdCB3
b3JrIG9uIHB5cHkiKQotZGVmIHRlc3RfY29tbWVudHMoKToKK2RlZiB0ZXN0X2NvbW1lbnRzKCkg
LT4gTm9uZToKICAgICBzb3VyY2UgPSAnJydkZWYgdGVzdCgpOgogICAgICJjb21tZW50IDEiCiAg
ICAgeCA9IDEKQEAgLTYwOCwxMiArNDQ5LDE4IEBAIGNvbW1lbnQgNAogJycnCiAgICAgZm9yIGxp
bmUgaW4gcmFuZ2UoMiwgNik6CiAgICAgICAgIGFzc2VydCBzdHIoZ2V0c3RhdGVtZW50KGxpbmUs
IHNvdXJjZSkpID09ICIgICAgeCA9IDEiCi0gICAgZm9yIGxpbmUgaW4gcmFuZ2UoNiwgMTApOgor
ICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpIG9yIGhhc2F0dHIoc3lzLCAicHlweV92
ZXJzaW9uX2luZm8iKToKKyAgICAgICAgdHFzX3N0YXJ0ID0gOAorICAgIGVsc2U6CisgICAgICAg
IHRxc19zdGFydCA9IDEwCisgICAgICAgIGFzc2VydCBzdHIoZ2V0c3RhdGVtZW50KDEwLCBzb3Vy
Y2UpKSA9PSAnIiIiJworICAgIGZvciBsaW5lIGluIHJhbmdlKDYsIHRxc19zdGFydCk6CiAgICAg
ICAgIGFzc2VydCBzdHIoZ2V0c3RhdGVtZW50KGxpbmUsIHNvdXJjZSkpID09ICIgICAgYXNzZXJ0
IEZhbHNlIgotICAgIGFzc2VydCBzdHIoZ2V0c3RhdGVtZW50KDEwLCBzb3VyY2UpKSA9PSAnIiIi
JworICAgIGZvciBsaW5lIGluIHJhbmdlKHRxc19zdGFydCwgMTApOgorICAgICAgICBhc3NlcnQg
c3RyKGdldHN0YXRlbWVudChsaW5lLCBzb3VyY2UpKSA9PSAnIiIiXG5jb21tZW50IDRcbiIiIicK
IAogCi1kZWYgdGVzdF9jb21tZW50X2luX3N0YXRlbWVudCgpOgorZGVmIHRlc3RfY29tbWVudF9p
bl9zdGF0ZW1lbnQoKSAtPiBOb25lOgogICAgIHNvdXJjZSA9ICIiInRlc3QoZm9vPTEsCiAgICAg
IyBjb21tZW50IDEKICAgICBiYXI9MikKQEAgLTYyNSwxNyArNDcyLDQ0IEBAIGRlZiB0ZXN0X2Nv
bW1lbnRfaW5fc3RhdGVtZW50KCk6CiAgICAgICAgICkKIAogCi1kZWYgdGVzdF9zaW5nbGVfbGlu
ZV9lbHNlKCk6CitkZWYgdGVzdF9zb3VyY2Vfd2l0aF9kZWNvcmF0b3IoKSAtPiBOb25lOgorICAg
ICIiIlRlc3QgYmVoYXZpb3Igd2l0aCBTb3VyY2UgLyBDb2RlKCkuc291cmNlIHdpdGggcmVnYXJk
IHRvIGRlY29yYXRvcnMuIiIiCisgICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0X3Jl
YWxfZnVuYworCisgICAgQHB5dGVzdC5tYXJrLmZvbworICAgIGRlZiBkZWNvX21hcmsoKToKKyAg
ICAgICAgYXNzZXJ0IEZhbHNlCisKKyAgICBzcmMgPSBpbnNwZWN0LmdldHNvdXJjZShkZWNvX21h
cmspCisgICAgYXNzZXJ0IHRleHR3cmFwLmluZGVudChzdHIoU291cmNlKGRlY29fbWFyaykpLCAi
ICAgICIpICsgIlxuIiA9PSBzcmMKKyAgICBhc3NlcnQgc3JjLnN0YXJ0c3dpdGgoIiAgICBAcHl0
ZXN0Lm1hcmsuZm9vIikKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBkZWNvX2ZpeHR1
cmUoKToKKyAgICAgICAgYXNzZXJ0IEZhbHNlCisKKyAgICBzcmMgPSBpbnNwZWN0LmdldHNvdXJj
ZShkZWNvX2ZpeHR1cmUpCisgICAgYXNzZXJ0IHNyYyA9PSAiICAgIEBweXRlc3QuZml4dHVyZVxu
ICAgIGRlZiBkZWNvX2ZpeHR1cmUoKTpcbiAgICAgICAgYXNzZXJ0IEZhbHNlXG4iCisgICAgIyBj
dXJyZW5seSBTb3VyY2UgZG9lcyBub3QgdW53cmFwIGRlY29yYXRvcnMsIHRlc3RpbmcgdGhlCisg
ICAgIyBleGlzdGluZyBiZWhhdmlvciBoZXJlIGZvciBleHBsaWNpdG5lc3MsIGJ1dCBwZXJoYXBz
IHdlIHNob3VsZCByZXZpc2l0L2NoYW5nZSB0aGlzCisgICAgIyBpbiB0aGUgZnV0dXJlCisgICAg
YXNzZXJ0IHN0cihTb3VyY2UoZGVjb19maXh0dXJlKSkuc3RhcnRzd2l0aCgiQGZ1bmN0b29scy53
cmFwcyhmdW5jdGlvbikiKQorICAgIGFzc2VydCAoCisgICAgICAgIHRleHR3cmFwLmluZGVudChz
dHIoU291cmNlKGdldF9yZWFsX2Z1bmMoZGVjb19maXh0dXJlKSkpLCAiICAgICIpICsgIlxuIiA9
PSBzcmMKKyAgICApCisKKworZGVmIHRlc3Rfc2luZ2xlX2xpbmVfZWxzZSgpIC0+IE5vbmU6CiAg
ICAgc291cmNlID0gZ2V0c3RhdGVtZW50KDEsICJpZiBGYWxzZTogMlxuZWxzZTogMyIpCiAgICAg
YXNzZXJ0IHN0cihzb3VyY2UpID09ICJlbHNlOiAzIgogCiAKLWRlZiB0ZXN0X3NpbmdsZV9saW5l
X2ZpbmFsbHkoKToKK2RlZiB0ZXN0X3NpbmdsZV9saW5lX2ZpbmFsbHkoKSAtPiBOb25lOgogICAg
IHNvdXJjZSA9IGdldHN0YXRlbWVudCgxLCAidHJ5OiAxXG5maW5hbGx5OiAzIikKICAgICBhc3Nl
cnQgc3RyKHNvdXJjZSkgPT0gImZpbmFsbHk6IDMiCiAKIAotZGVmIHRlc3RfaXNzdWU1NSgpOgor
ZGVmIHRlc3RfaXNzdWU1NSgpIC0+IE5vbmU6CiAgICAgc291cmNlID0gKAogICAgICAgICAiZGVm
IHJvdW5kX3RyaXAoZGlucCk6XG4gIGFzc2VydCAxID09IGRpbnBcbiIKICAgICAgICAgJ2RlZiB0
ZXN0X3J0KCk6XG4gIHJvdW5kX3RyaXAoIiIiXG4iIiIpXG4nCkBAIC02NDQsNyArNTE4LDcgQEAg
ZGVmIHRlc3RfaXNzdWU1NSgpOgogICAgIGFzc2VydCBzdHIocykgPT0gJyAgcm91bmRfdHJpcCgi
IiJcbiIiIiknCiAKIAotZGVmIFhYWHRlc3RfbXVsdGlsaW5lKCk6CitkZWYgdGVzdF9tdWx0aWxp
bmUoKSAtPiBOb25lOgogICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgKICAgICAgICAgMCwKICAg
ICAgICAgIiIiXApAQCAtNjU3LDkgKzUzMSw5IEBAIHggPSAzCiAgICAgYXNzZXJ0IHN0cihzb3Vy
Y2UpID09ICJyYWlzZSBWYWx1ZUVycm9yKFxuICAgIDIzXG4pIgogCiAKLWNsYXNzIFRlc3RUcnko
b2JqZWN0KToKLSAgICBweXRlc3RtYXJrID0gYXN0b25seQotICAgIHNvdXJjZSA9ICIiIlwKK2Ns
YXNzIFRlc3RUcnk6CisgICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYuc291cmNlID0gIiIiXAogdHJ5OgogICAgIHJhaXNlIFZhbHVlRXJyb3IKIGV4Y2VwdCBT
b21ldGhpbmc6CkBAIC02NjgsNDMgKzU0Miw0NCBAQCBlbHNlOgogICAgIHJhaXNlIEtleUVycm9y
KCkKICIiIgogCi0gICAgZGVmIHRlc3RfYm9keShzZWxmKToKKyAgICBkZWYgdGVzdF9ib2R5KHNl
bGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgxLCBzZWxmLnNvdXJj
ZSkKICAgICAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICIgICAgcmFpc2UgVmFsdWVFcnJvciIK
IAotICAgIGRlZiB0ZXN0X2V4Y2VwdF9saW5lKHNlbGYpOgorICAgIGRlZiB0ZXN0X2V4Y2VwdF9s
aW5lKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgyLCBzZWxm
LnNvdXJjZSkKICAgICAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICJleGNlcHQgU29tZXRoaW5n
OiIKIAotICAgIGRlZiB0ZXN0X2V4Y2VwdF9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X2V4Y2Vw
dF9ib2R5KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgzLCBz
ZWxmLnNvdXJjZSkKICAgICAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICIgICAgcmFpc2UgSW5k
ZXhFcnJvcigxKSIKIAotICAgIGRlZiB0ZXN0X2Vsc2Uoc2VsZik6CisgICAgZGVmIHRlc3RfZWxz
ZShzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBnZXRzdGF0ZW1lbnQoNSwgc2VsZi5z
b3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAiICAgIHJhaXNlIEtleUVycm9y
KCkiCiAKIAotY2xhc3MgVGVzdFRyeUZpbmFsbHkob2JqZWN0KToKLSAgICBzb3VyY2UgPSAiIiJc
CitjbGFzcyBUZXN0VHJ5RmluYWxseToKKyAgICBkZWYgc2V0dXBfY2xhc3Moc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5zb3VyY2UgPSAiIiJcCiB0cnk6CiAgICAgcmFpc2UgVmFsdWVFcnJv
cgogZmluYWxseToKICAgICByYWlzZSBJbmRleEVycm9yKDEpCiAiIiIKIAotICAgIGRlZiB0ZXN0
X2JvZHkoc2VsZik6CisgICAgZGVmIHRlc3RfYm9keShzZWxmKSAtPiBOb25lOgogICAgICAgICBz
b3VyY2UgPSBnZXRzdGF0ZW1lbnQoMSwgc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIo
c291cmNlKSA9PSAiICAgIHJhaXNlIFZhbHVlRXJyb3IiCiAKLSAgICBkZWYgdGVzdF9maW5hbGx5
KHNlbGYpOgorICAgIGRlZiB0ZXN0X2ZpbmFsbHkoc2VsZikgLT4gTm9uZToKICAgICAgICAgc291
cmNlID0gZ2V0c3RhdGVtZW50KDMsIHNlbGYuc291cmNlKQogICAgICAgICBhc3NlcnQgc3RyKHNv
dXJjZSkgPT0gIiAgICByYWlzZSBJbmRleEVycm9yKDEpIgogCiAKLWNsYXNzIFRlc3RJZihvYmpl
Y3QpOgotICAgIHB5dGVzdG1hcmsgPSBhc3Rvbmx5Ci0gICAgc291cmNlID0gIiIiXAorY2xhc3Mg
VGVzdElmOgorICAgIGRlZiBzZXR1cF9jbGFzcyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxm
LnNvdXJjZSA9ICIiIlwKIGlmIDE6CiAgICAgeSA9IDMKIGVsaWYgRmFsc2U6CkBAIC03MTMsMjQg
KzU4OCwyNCBAQCBlbHNlOgogICAgIHkgPSA3CiAiIiIKIAotICAgIGRlZiB0ZXN0X2JvZHkoc2Vs
Zik6CisgICAgZGVmIHRlc3RfYm9keShzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBn
ZXRzdGF0ZW1lbnQoMSwgc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIoc291cmNlKSA9
PSAiICAgIHkgPSAzIgogCi0gICAgZGVmIHRlc3RfZWxpZl9jbGF1c2Uoc2VsZik6CisgICAgZGVm
IHRlc3RfZWxpZl9jbGF1c2Uoc2VsZikgLT4gTm9uZToKICAgICAgICAgc291cmNlID0gZ2V0c3Rh
dGVtZW50KDIsIHNlbGYuc291cmNlKQogICAgICAgICBhc3NlcnQgc3RyKHNvdXJjZSkgPT0gImVs
aWYgRmFsc2U6IgogCi0gICAgZGVmIHRlc3RfZWxpZihzZWxmKToKKyAgICBkZWYgdGVzdF9lbGlm
KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgzLCBzZWxmLnNv
dXJjZSkKICAgICAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICIgICAgeSA9IDUiCiAKLSAgICBk
ZWYgdGVzdF9lbHNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Vsc2Uoc2VsZikgLT4gTm9uZToKICAg
ICAgICAgc291cmNlID0gZ2V0c3RhdGVtZW50KDUsIHNlbGYuc291cmNlKQogICAgICAgICBhc3Nl
cnQgc3RyKHNvdXJjZSkgPT0gIiAgICB5ID0gNyIKIAogCi1kZWYgdGVzdF9zZW1pY29sb24oKToK
K2RlZiB0ZXN0X3NlbWljb2xvbigpIC0+IE5vbmU6CiAgICAgcyA9ICIiIlwKIGhlbGxvIDsgcHl0
ZXN0LnNraXAoKQogIiIiCkBAIC03MzgsNyArNjEzLDcgQEAgaGVsbG8gOyBweXRlc3Quc2tpcCgp
CiAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09IHMuc3RyaXAoKQogCiAKLWRlZiB0ZXN0X2RlZl9v
bmxpbmUoKToKK2RlZiB0ZXN0X2RlZl9vbmxpbmUoKSAtPiBOb25lOgogICAgIHMgPSAiIiJcCiBk
ZWYgZnVuYygpOiByYWlzZSBWYWx1ZUVycm9yKDQyKQogCkBAIC03NDksMTAgKzYyNCwyNiBAQCBk
ZWYgc29tZXRoaW5nKCk6CiAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICJkZWYgZnVuYygpOiBy
YWlzZSBWYWx1ZUVycm9yKDQyKSIKIAogCi1kZWYgWFhYX3Rlc3RfZXhwcmVzc2lvbl9tdWx0aWxp
bmUoKToKK2RlZiBYWFhfdGVzdF9leHByZXNzaW9uX211bHRpbGluZSgpIC0+IE5vbmU6CiAgICAg
c291cmNlID0gIiIiXAogc29tZXRoaW5nCiAnJycKICcnJyIiIgogICAgIHJlc3VsdCA9IGdldHN0
YXRlbWVudCgxLCBzb3VyY2UpCiAgICAgYXNzZXJ0IHN0cihyZXN1bHQpID09ICInJydcbicnJyIK
KworCitkZWYgdGVzdF9nZXRzdGFydGluZ2Jsb2NrX211bHRpbGluZSgpIC0+IE5vbmU6CisgICAg
Y2xhc3MgQToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAg
IGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQorICAgICAgICAgICAgc2VsZi5zb3VyY2UgPSBfcHl0
ZXN0Ll9jb2RlLkZyYW1lKGZyYW1lKS5zdGF0ZW1lbnQKKworICAgICMgZm10OiBvZmYKKyAgICB4
ID0gQSgneCcsCisgICAgICAgICAgJ3knCisgICAgICAgICAgLAorICAgICAgICAgICd6JykKKyAg
ICAjIGZtdDogb24KKyAgICB2YWx1ZXMgPSBbaSBmb3IgaSBpbiB4LnNvdXJjZS5saW5lcyBpZiBp
LnN0cmlwKCldCisgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvY29kZS90ZXN0X3NvdXJjZV9tdWx0aWxpbmVfYmxvY2sucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2VfbXVsdGlsaW5lX2Jsb2NrLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmY3NDEyZWI4Y2YuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2VfbXVsdGlsaW5lX2Jsb2NrLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIyBmbGFrZTg6IG5vcWEKLWltcG9ydCBz
eXMKLQotaW1wb3J0IF9weXRlc3QuX2NvZGUKLQotCi1kZWYgdGVzdF9nZXRzdGFydGluZ2Jsb2Nr
X211bHRpbGluZSgpOgotICAgICIiIgotICAgIFRoaXMgdGVzdCB3YXMgb3JpZ2luYWxseSBmb3Vu
ZCBpbiB0ZXN0X3NvdXJjZS5weSwgYnV0IGl0IGRlcGVuZHMgb24gdGhlIHdlaXJkCi0gICAgZm9y
bWF0dGluZyBvZiB0aGUgYGB4ID0gQWBgIGNvbnN0cnVjdCBzZWVuIGhlcmUgYW5kIG91ciBhdXRv
cGVwOCB0b29sIGNhbiBvbmx5IGV4Y2x1ZGUgZW50aXJlCi0gICAgZmlsZXMgKGl0IGRvZXMgbm90
IHN1cHBvcnQgZXhjbHVkaW5nIGxpbmVzL2Jsb2NrcyB1c2luZyB0aGUgdHJhZGl0aW9uYWwgI25v
cWEgY29tbWVudCB5ZXQsCi0gICAgc2VlIGhoYXR0by9hdXRvcGVwOCMzMDcpLiBJdCB3YXMgY29u
c2lkZXJlZCBiZXR0ZXIgdG8ganVzdCBtb3ZlIHRoaXMgc2luZ2xlIHRlc3QgdG8gaXRzIG93bgot
ICAgIGZpbGUgYW5kIGV4Y2x1ZGUgaXQgZnJvbSBhdXRvcGVwOCB0aGFuIHRyeSB0byBjb21wbGlj
YXRlIHRoaW5ncy4KLSAgICAiIiIKLQotICAgIGNsYXNzIEEob2JqZWN0KToKLQotICAgICAgICBk
ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZy
YW1lKDEpCi0gICAgICAgICAgICBzZWxmLnNvdXJjZSA9IF9weXRlc3QuX2NvZGUuRnJhbWUoZnJh
bWUpLnN0YXRlbWVudAotCi0gICAgIyBmbXQ6IG9mZgotICAgIHggPSBBKCd4JywKLSAgICAgICAg
ICAneScKLSAgICAgICAgICAsCi0gICAgICAgICAgJ3onKQotICAgICMgZm10OiBvbgotICAgIHZh
bHVlcyA9IFtpIGZvciBpIGluIHguc291cmNlLmxpbmVzIGlmIGkuc3RyaXAoKV0KLSAgICBhc3Nl
cnQgbGVuKHZhbHVlcykgPT0gNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2Rl
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2IwZmZkNTgxZmMuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUv
dGVzdF9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3RfZXhjaW5mby5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvY29kZS90ZXN0X3NvdXJjZS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvY29kZS90ZXN0X3NvdXJjZV9tdWx0aWxpbmVfYmxvY2sucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvbmZ0
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTY2N2JlNDJm
Y2JkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb25mdGVzdC5weQpA
QCAtMCwwICsxLDIzNyBAQAoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitmcm9tIHR5cGluZyBpbXBv
cnQgTGlzdAorCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IFJ1
blJlc3VsdAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCisKK2lmIHN5cy5n
ZXR0cmFjZSgpOgorCisgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSkKKyAgICBkZWYg
cmVzdG9yZV90cmFjaW5nKCk6CisgICAgICAgICIiIlJlc3RvcmUgdHJhY2luZyBmdW5jdGlvbiAo
d2hlbiBydW4gd2l0aCBDb3ZlcmFnZS5weSkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLnB5dGhv
bi5vcmcvaXNzdWUzNzAxMQorICAgICAgICAiIiIKKyAgICAgICAgb3JpZ190cmFjZSA9IHN5cy5n
ZXR0cmFjZSgpCisgICAgICAgIHlpZWxkCisgICAgICAgIGlmIHN5cy5nZXR0cmFjZSgpICE9IG9y
aWdfdHJhY2U6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uob3JpZ190cmFjZSkKKworCitAcHl0
ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRydWUpCitkZWYgcHl0ZXN0
X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoaXRlbXMpOgorICAgICIiIlByZWZlciBmYXN0ZXIgdGVz
dHMuCisKKyAgICBVc2UgYSBob29rd3JhcHBlciB0byBkbyB0aGlzIGluIHRoZSBiZWdpbm5pbmcs
IHNvIGUuZy4gLS1mZiBzdGlsbCB3b3JrcworICAgIGNvcnJlY3RseS4KKyAgICAiIiIKKyAgICBm
YXN0X2l0ZW1zID0gW10KKyAgICBzbG93X2l0ZW1zID0gW10KKyAgICBzbG93ZXN0X2l0ZW1zID0g
W10KKyAgICBuZXV0cmFsX2l0ZW1zID0gW10KKworICAgIHNwYXduX25hbWVzID0geyJzcGF3bl9w
eXRlc3QiLCAic3Bhd24ifQorCisgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGZpeHR1cmVzID0gaXRlbS5maXh0dXJlbmFtZXMKKyAgICAgICAgZXhjZXB0
IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBkb2N0ZXN0IGF0IGxlYXN0CisgICAgICAg
ICAgICAjIChodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwNzAp
CisgICAgICAgICAgICBuZXV0cmFsX2l0ZW1zLmFwcGVuZChpdGVtKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgaWYgInRlc3RkaXIiIGluIGZpeHR1cmVzOgorICAgICAgICAgICAgICAgIGNv
X25hbWVzID0gaXRlbS5mdW5jdGlvbi5fX2NvZGVfXy5jb19uYW1lcworICAgICAgICAgICAgICAg
IGlmIHNwYXduX25hbWVzLmludGVyc2VjdGlvbihjb19uYW1lcyk6CisgICAgICAgICAgICAgICAg
ICAgIGl0ZW0uYWRkX21hcmtlcihweXRlc3QubWFyay51c2VzX3BleHBlY3QpCisgICAgICAgICAg
ICAgICAgICAgIHNsb3dlc3RfaXRlbXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgZWxp
ZiAicnVucHl0ZXN0X3N1YnByb2Nlc3MiIGluIGNvX25hbWVzOgorICAgICAgICAgICAgICAgICAg
ICBzbG93ZXN0X2l0ZW1zLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHNsb3dfaXRlbXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAg
aXRlbS5hZGRfbWFya2VyKHB5dGVzdC5tYXJrLnNsb3cpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIG1hcmtlciA9IGl0ZW0uZ2V0X2Nsb3Nlc3RfbWFya2VyKCJzbG93IikKKyAg
ICAgICAgICAgICAgICBpZiBtYXJrZXI6CisgICAgICAgICAgICAgICAgICAgIHNsb3dlc3RfaXRl
bXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgZmFzdF9pdGVtcy5hcHBlbmQoaXRlbSkKKworICAgIGl0ZW1zWzpdID0gZmFzdF9pdGVtcyAr
IG5ldXRyYWxfaXRlbXMgKyBzbG93X2l0ZW1zICsgc2xvd2VzdF9pdGVtcworCisgICAgeWllbGQK
KworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiB0d19tb2NrKCk6CisgICAgIiIiUmV0dXJucyBhIG1v
Y2sgdGVybWluYWwgd3JpdGVyIiIiCisKKyAgICBjbGFzcyBUV01vY2s6CisgICAgICAgIFdSSVRF
ID0gb2JqZWN0KCkKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBz
ZWxmLmxpbmVzID0gW10KKyAgICAgICAgICAgIHNlbGYuaXNfd3JpdGluZyA9IEZhbHNlCisKKyAg
ICAgICAgZGVmIHNlcChzZWxmLCBzZXAsIGxpbmU9Tm9uZSk6CisgICAgICAgICAgICBzZWxmLmxp
bmVzLmFwcGVuZCgoc2VwLCBsaW5lKSkKKworICAgICAgICBkZWYgd3JpdGUoc2VsZiwgbXNnLCAq
Kmt3KToKKyAgICAgICAgICAgIHNlbGYubGluZXMuYXBwZW5kKChUV01vY2suV1JJVEUsIG1zZykp
CisKKyAgICAgICAgZGVmIF93cml0ZV9zb3VyY2Uoc2VsZiwgbGluZXMsIGluZGVudHM9KCkpOgor
ICAgICAgICAgICAgaWYgbm90IGluZGVudHM6CisgICAgICAgICAgICAgICAgaW5kZW50cyA9IFsi
Il0gKiBsZW4obGluZXMpCisgICAgICAgICAgICBmb3IgaW5kZW50LCBsaW5lIGluIHppcChpbmRl
bnRzLCBsaW5lcyk6CisgICAgICAgICAgICAgICAgc2VsZi5saW5lKGluZGVudCArIGxpbmUpCisK
KyAgICAgICAgZGVmIGxpbmUoc2VsZiwgbGluZSwgKiprdyk6CisgICAgICAgICAgICBzZWxmLmxp
bmVzLmFwcGVuZChsaW5lKQorCisgICAgICAgIGRlZiBtYXJrdXAoc2VsZiwgdGV4dCwgKiprdyk6
CisgICAgICAgICAgICByZXR1cm4gdGV4dAorCisgICAgICAgIGRlZiBnZXRfd3JpdGVfbXNnKHNl
bGYsIGlkeCk6CisgICAgICAgICAgICBmbGFnLCBtc2cgPSBzZWxmLmxpbmVzW2lkeF0KKyAgICAg
ICAgICAgIGFzc2VydCBmbGFnID09IFRXTW9jay5XUklURQorICAgICAgICAgICAgcmV0dXJuIG1z
ZworCisgICAgICAgIGZ1bGx3aWR0aCA9IDgwCisKKyAgICByZXR1cm4gVFdNb2NrKCkKKworCitA
cHl0ZXN0LmZpeHR1cmUKK2RlZiBkdW1teV95YW1sX2N1c3RvbV90ZXN0KHRlc3RkaXIpOgorICAg
ICIiIldyaXRlcyBhIGNvbmZ0ZXN0IGZpbGUgdGhhdCBjb2xsZWN0cyBhbmQgZXhlY3V0ZXMgYSBk
dW1teSB5YW1sIHRlc3QuCisKKyAgICBUYWtlbiBmcm9tIHRoZSBkb2NzLCBidXQgc3RyaXBwZWQg
ZG93biB0byB0aGUgYmFyZSBtaW5pbXVtLCB1c2VmdWwgZm9yCisgICAgdGVzdHMgd2hpY2ggbmVl
ZHMgY3VzdG9tIGl0ZW1zIGNvbGxlY3RlZC4KKyAgICAiIiIKKyAgICB0ZXN0ZGlyLm1ha2Vjb25m
dGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBkZWYg
cHl0ZXN0X2NvbGxlY3RfZmlsZShwYXJlbnQsIHBhdGgpOgorICAgICAgICAgICAgaWYgcGF0aC5l
eHQgPT0gIi55YW1sIiBhbmQgcGF0aC5iYXNlbmFtZS5zdGFydHN3aXRoKCJ0ZXN0Iik6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFlhbWxGaWxlLmZyb21fcGFyZW50KGZzcGF0aD1wYXRoLCBwYXJl
bnQ9cGFyZW50KQorCisgICAgICAgIGNsYXNzIFlhbWxGaWxlKHB5dGVzdC5GaWxlKToKKyAgICAg
ICAgICAgIGRlZiBjb2xsZWN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkIFlhbWxJdGVt
LmZyb21fcGFyZW50KG5hbWU9c2VsZi5mc3BhdGguYmFzZW5hbWUsIHBhcmVudD1zZWxmKQorCisg
ICAgICAgIGNsYXNzIFlhbWxJdGVtKHB5dGVzdC5JdGVtKToKKyAgICAgICAgICAgIGRlZiBydW50
ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgdGVz
dGRpci5tYWtlZmlsZSgiLnlhbWwiLCB0ZXN0MT0iIikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2Rl
ZiB0ZXN0ZGlyKHRlc3RkaXI6IFRlc3RkaXIpIC0+IFRlc3RkaXI6CisgICAgdGVzdGRpci5tb25r
ZXlwYXRjaC5zZXRlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIsICIxIikKKyAg
ICByZXR1cm4gdGVzdGRpcgorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitk
ZWYgY29sb3JfbWFwcGluZygpOgorICAgICIiIlJldHVybnMgYSB1dGlsaXR5IGNsYXNzIHdoaWNo
IGNhbiByZXBsYWNlIGtleXMgaW4gc3RyaW5ncyBpbiB0aGUgZm9ybSAie05BTUV9IgorICAgIGJ5
IHRoZWlyIGVxdWl2YWxlbnQgQVNDSUkgY29kZXMgaW4gdGhlIHRlcm1pbmFsLgorCisgICAgVXNl
ZCBieSB0ZXN0cyB3aGljaCBjaGVjayB0aGUgYWN0dWFsIGNvbG9ycyBvdXRwdXQgYnkgcHl0ZXN0
LgorICAgICIiIgorCisgICAgY2xhc3MgQ29sb3JNYXBwaW5nOgorICAgICAgICBDT0xPUlMgPSB7
CisgICAgICAgICAgICAicmVkIjogIlx4MWJbMzFtIiwKKyAgICAgICAgICAgICJncmVlbiI6ICJc
eDFiWzMybSIsCisgICAgICAgICAgICAieWVsbG93IjogIlx4MWJbMzNtIiwKKyAgICAgICAgICAg
ICJib2xkIjogIlx4MWJbMW0iLAorICAgICAgICAgICAgInJlc2V0IjogIlx4MWJbMG0iLAorICAg
ICAgICAgICAgImt3IjogIlx4MWJbOTRtIiwKKyAgICAgICAgICAgICJobC1yZXNldCI6ICJceDFi
WzM5OzQ5OzAwbSIsCisgICAgICAgICAgICAiZnVuY3Rpb24iOiAiXHgxYls5Mm0iLAorICAgICAg
ICAgICAgIm51bWJlciI6ICJceDFiWzk0bSIsCisgICAgICAgICAgICAic3RyIjogIlx4MWJbMzNt
IiwKKyAgICAgICAgICAgICJwcmludCI6ICJceDFiWzk2bSIsCisgICAgICAgIH0KKyAgICAgICAg
UkVfQ09MT1JTID0ge2s6IHJlLmVzY2FwZSh2KSBmb3IgaywgdiBpbiBDT0xPUlMuaXRlbXMoKX0K
KworICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGZvcm1hdChjbHMsIGxpbmVzOiBM
aXN0W3N0cl0pIC0+IExpc3Rbc3RyXToKKyAgICAgICAgICAgICIiIlN0cmFpZ2h0Zm9yd2FyZCBy
ZXBsYWNlbWVudCBvZiBjb2xvciBuYW1lcyB0byB0aGVpciBBU0NJSSBjb2Rlcy4iIiIKKyAgICAg
ICAgICAgIHJldHVybiBbbGluZS5mb3JtYXQoKipjbHMuQ09MT1JTKSBmb3IgbGluZSBpbiBsaW5l
c10KKworICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGZvcm1hdF9mb3JfZm5tYXRj
aChjbHMsIGxpbmVzOiBMaXN0W3N0cl0pIC0+IExpc3Rbc3RyXToKKyAgICAgICAgICAgICIiIlJl
cGxhY2UgY29sb3IgbmFtZXMgZm9yIHVzZSB3aXRoIExpbmVNYXRjaGVyLmZubWF0Y2hfbGluZXMi
IiIKKyAgICAgICAgICAgIHJldHVybiBbbGluZS5mb3JtYXQoKipjbHMuQ09MT1JTKS5yZXBsYWNl
KCJbIiwgIltbXSIpIGZvciBsaW5lIGluIGxpbmVzXQorCisgICAgICAgIEBjbGFzc21ldGhvZAor
ICAgICAgICBkZWYgZm9ybWF0X2Zvcl9yZW1hdGNoKGNscywgbGluZXM6IExpc3Rbc3RyXSkgLT4g
TGlzdFtzdHJdOgorICAgICAgICAgICAgIiIiUmVwbGFjZSBjb2xvciBuYW1lcyBmb3IgdXNlIHdp
dGggTGluZU1hdGNoZXIucmVfbWF0Y2hfbGluZXMiIiIKKyAgICAgICAgICAgIHJldHVybiBbbGlu
ZS5mb3JtYXQoKipjbHMuUkVfQ09MT1JTKSBmb3IgbGluZSBpbiBsaW5lc10KKworICAgICAgICBA
Y2xhc3NtZXRob2QKKyAgICAgICAgZGVmIHJlcXVpcmVzX29yZGVyZWRfbWFya3VwKGNscywgcmVz
dWx0OiBSdW5SZXN1bHQpOgorICAgICAgICAgICAgIiIiU2hvdWxkIGJlIGNhbGxlZCBpZiBhIHRl
c3QgZXhwZWN0cyBtYXJrdXAgdG8gYXBwZWFyIGluIHRoZSBvdXRwdXQKKyAgICAgICAgICAgIGlu
IHRoZSBvcmRlciB0aGV5IHdlcmUgcGFzc2VkLCBmb3IgZXhhbXBsZToKKworICAgICAgICAgICAg
ICAgIHR3LndyaXRlKGxpbmUsIGJvbGQ9VHJ1ZSwgcmVkPVRydWUpCisKKyAgICAgICAgICAgIElu
IFB5dGhvbiAzLjUgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgZ2VuZXJhdGVkIG1hcmt1
cCB3aWxsIGFwcGVhcgorICAgICAgICAgICAgaW4gdGhlIG9yZGVyIGNhbGxlZCwgc28gd2UgZG8g
c29tZSBsaW1pdGVkIGNvbG9yIHRlc3RpbmcgYW5kIHNraXAgdGhlIHJlc3Qgb2YKKyAgICAgICAg
ICAgIHRoZSB0ZXN0LgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvIDwgKDMsIDYpOgorICAgICAgICAgICAgICAgICMgdGVybWluYWwgd3JpdGVyLndyaXRl
IGFjY2VwdHMga2V5d29yZCBhcmd1bWVudHMsIHNvCisgICAgICAgICAgICAgICAgIyBweTM2KyBp
cyByZXF1aXJlZCBzbyB0aGUgbWFya3VwIGFwcGVhcnMgaW4gdGhlIGV4cGVjdGVkIG9yZGVyCisg
ICAgICAgICAgICAgICAgb3V0cHV0ID0gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAgICAgICAg
ICAgIGFzc2VydCAidGVzdCBzZXNzaW9uIHN0YXJ0cyIgaW4gb3V0cHV0CisgICAgICAgICAgICAg
ICAgYXNzZXJ0ICJceDFiWzFtIiBpbiBvdXRwdXQKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tp
cCgKKyAgICAgICAgICAgICAgICAgICAgImRvaW5nIGxpbWl0ZWQgdGVzdGluZyBiZWNhdXNlIGxh
Y2tpbmcgb3JkZXJlZCBtYXJrdXAgb24gcHkzNSIKKyAgICAgICAgICAgICAgICApCisKKyAgICBy
ZXR1cm4gQ29sb3JNYXBwaW5nCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgbW9ja190aW1pbmco
bW9ua2V5cGF0Y2gpOgorICAgICIiIk1vY2tzIF9weXRlc3QudGltaW5nIHdpdGggYSBrbm93biBv
YmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRpbWluZyBpbiB0ZXN0cworICAgIGRl
dGVybWluaXN0aWNhbGx5LgorCisgICAgcHl0ZXN0IGl0c2VsZiBzaG91bGQgYWx3YXlzIHVzZSBm
dW5jdGlvbnMgZnJvbSBgX3B5dGVzdC50aW1pbmdgIGluc3RlYWQgb2YgYHRpbWVgIGRpcmVjdGx5
LgorCisgICAgVGhpcyB0aGVuIGFsbG93cyB1cyBtb3JlIGNvbnRyb2wgb3ZlciB0aW1lIGR1cmlu
ZyB0ZXN0aW5nLCBpZiB0ZXN0aW5nIGNvZGUgYWxzbworICAgIHVzZXMgYF9weXRlc3QudGltaW5n
YCBmdW5jdGlvbnMuCisKKyAgICBUaW1lIGlzIHN0YXRpYywgYW5kIG9ubHkgYWR2YW5jZXMgdGhy
b3VnaCBgc2xlZXBgIGNhbGxzLCB0aHVzIHRlc3RzIG1pZ2h0IHNsZWVwIG92ZXIgbGFyZ2UKKyAg
ICBudW1iZXJzIGFuZCBvYnRhaW4gYWNjdXJhdGUgdGltZSgpIGNhbGxzIGF0IHRoZSBlbmQsIG1h
a2luZyB0ZXN0cyByZWxpYWJsZSBhbmQgaW5zdGFudC4KKyAgICAiIiIKKyAgICBpbXBvcnQgYXR0
cgorCisgICAgQGF0dHIucworICAgIGNsYXNzIE1vY2tUaW1pbmc6CisKKyAgICAgICAgX2N1cnJl
bnRfdGltZSA9IGF0dHIuaWIoZGVmYXVsdD0xNTkwMTUwMDUwLjApCisKKyAgICAgICAgZGVmIHNs
ZWVwKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2VsZi5fY3VycmVudF90aW1lICs9IHNl
Y29uZHMKKworICAgICAgICBkZWYgdGltZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9jdXJyZW50X3RpbWUKKworICAgICAgICBkZWYgcGF0Y2goc2VsZik6CisgICAgICAgICAgICBm
cm9tIF9weXRlc3QgaW1wb3J0IHRpbWluZworCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKHRpbWluZywgInNsZWVwIiwgc2VsZi5zbGVlcCkKKyAgICAgICAgICAgIG1vbmtleXBhdGNo
LnNldGF0dHIodGltaW5nLCAidGltZSIsIHNlbGYudGltZSkKKyAgICAgICAgICAgIG1vbmtleXBh
dGNoLnNldGF0dHIodGltaW5nLCAicGVyZl9jb3VudGVyIiwgc2VsZi50aW1lKQorCisgICAgcmVz
dWx0ID0gTW9ja1RpbWluZygpCisgICAgcmVzdWx0LnBhdGNoKCkKKyAgICByZXR1cm4gcmVzdWx0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2RlcHJlY2F0ZWRfdGVzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZGVwcmVjYXRlZF90ZXN0LnB5CmluZGV4IDM5ZmYxZjFmYzM4NS4u
ZWI1ZDUyN2Y1MmJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2RlcHJlY2F0ZWRf
dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2RlcHJlY2F0ZWRfdGVzdC5weQpAQCAt
MSwyNjUgKzEsODAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBweXRlc3QKLQotCi1kZWYgdGVzdF95aWVs
ZF90ZXN0c19kZXByZWNhdGlvbih0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0g
ICAgICAgICIiIgotICAgICAgICBkZWYgZnVuYzEoYXJnLCBhcmcyKToKLSAgICAgICAgICAgIGFz
c2VydCBhcmcgPT0gYXJnMgotICAgICAgICBkZWYgdGVzdF9nZW4oKToKLSAgICAgICAgICAgIHlp
ZWxkICJtMSIsIGZ1bmMxLCAxNSwgMyo1Ci0gICAgICAgICAgICB5aWVsZCAibTIiLCBmdW5jMSwg
NDIsIDYqNwotICAgICAgICBkZWYgdGVzdF9nZW4yKCk6Ci0gICAgICAgICAgICBmb3IgayBpbiBy
YW5nZSgxMCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgZnVuYzEsIDEsIDEKLSAgICAiIiIKLSAg
ICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1yYSIpCi0gICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbCi0gICAgICAgICAgICAiKnlpZWxkIHRlc3Rz
IGFyZSBkZXByZWNhdGVkLCBhbmQgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gcHl0ZXN0IDQu
MCoiLAotICAgICAgICAgICAgIioyIHBhc3NlZCoiLAotICAgICAgICBdCi0gICAgKQotICAgIGFz
c2VydCByZXN1bHQuc3Rkb3V0LnN0cigpLmNvdW50KCJ5aWVsZCB0ZXN0cyBhcmUgZGVwcmVjYXRl
ZCIpID09IDIKLQotCi1kZWYgdGVzdF9mdW5jYXJnX3ByZWZpeF9kZXByZWNhdGlvbih0ZXN0ZGly
KToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICBkZWYgcHl0
ZXN0X2Z1bmNhcmdfX3ZhbHVlKCk6Ci0gICAgICAgICAgICByZXR1cm4gMTAKLQotICAgICAgICBk
ZWYgdGVzdF9mdW5jYXJnX3ByZWZpeCh2YWx1ZSk6Ci0gICAgICAgICAgICBhc3NlcnQgdmFsdWUg
PT0gMTAKLSAgICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1y
YSIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbCi0gICAgICAg
ICAgICAoCi0gICAgICAgICAgICAgICAgIipweXRlc3RfZnVuY2FyZ19fdmFsdWU6ICIKLSAgICAg
ICAgICAgICAgICAnZGVjbGFyaW5nIGZpeHR1cmVzIHVzaW5nICJweXRlc3RfZnVuY2FyZ19fIiBw
cmVmaXggaXMgZGVwcmVjYXRlZCAnCi0gICAgICAgICAgICAgICAgImFuZCBzY2hlZHVsZWQgdG8g
YmUgcmVtb3ZlZCBpbiBweXRlc3QgNC4wLiAgIgotICAgICAgICAgICAgICAgICJQbGVhc2UgcmVt
b3ZlIHRoZSBwcmVmaXggYW5kIHVzZSB0aGUgQHB5dGVzdC5maXh0dXJlIGRlY29yYXRvciBpbnN0
ZWFkLiIKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICAiKjEgcGFzc2VkKiIsCi0gICAgICAg
IF0KLSAgICApCi0KLQotZGVmIHRlc3RfcHl0ZXN0X3NldHVwX2NmZ19kZXByZWNhdGVkKHRlc3Rk
aXIpOgotICAgIHRlc3RkaXIubWFrZWZpbGUoCi0gICAgICAgICIuY2ZnIiwKLSAgICAgICAgc2V0
dXA9IiIiCi0gICAgICAgIFtweXRlc3RdCi0gICAgICAgIGFkZG9wdHMgPSAtLXZlcmJvc2UKLSAg
ICAiIiIsCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiKnB5dGVzdCpzZWN0aW9uIGluIHNl
dHVwLmNmZyBmaWxlcyBpcyBkZXByZWNhdGVkKnVzZSp0b29sOnB5dGVzdCppbnN0ZWFkKiJdCi0g
ICAgKQotCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIAotZGVm
IHRlc3RfcHl0ZXN0X2N1c3RvbV9jZmdfZGVwcmVjYXRlZCh0ZXN0ZGlyKToKLSAgICB0ZXN0ZGly
Lm1ha2VmaWxlKAotICAgICAgICAiLmNmZyIsCi0gICAgICAgIGN1c3RvbT0iIiIKLSAgICAgICAg
W3B5dGVzdF0KLSAgICAgICAgYWRkb3B0cyA9IC0tdmVyYm9zZQotICAgICIiIiwKLSAgICApCi0g
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1jIiwgImN1c3RvbS5jZmciKQotICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyIqcHl0ZXN0KnNlY3Rpb24gaW4g
Y3VzdG9tLmNmZyBmaWxlcyBpcyBkZXByZWNhdGVkKnVzZSp0b29sOnB5dGVzdCppbnN0ZWFkKiJd
Ci0gICAgKQotCi0KLWRlZiB0ZXN0X3N0cl9hcmdzX2RlcHJlY2F0ZWQodG1wZGlyLCB0ZXN0ZGly
KToKLSAgICAiIiJEZXByZWNhdGUgcGFzc2luZyBzdHJpbmdzIHRvIHB5dGVzdC5tYWluKCkuIFNj
aGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBweXRlc3QtNC4wLiIiIgotICAgIGZyb20gX3B5dGVzdC5t
YWluIGltcG9ydCBFWElUX05PVEVTVFNDT0xMRUNURUQKLQotICAgIHdhcm5pbmdzID0gW10KLQot
ICAgIGNsYXNzIENvbGxlY3Qob2JqZWN0KToKLQotICAgICAgICBkZWYgcHl0ZXN0X2xvZ3dhcm5p
bmcoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQobWVzc2FnZSkK
LQotICAgIHJldCA9IHB5dGVzdC5tYWluKCIlcyAteCIgJSB0bXBkaXIsIHBsdWdpbnM9W0NvbGxl
Y3QoKV0pCi0gICAgbXNnID0gKAotICAgICAgICAicGFzc2luZyBhIHN0cmluZyB0byBweXRlc3Qu
bWFpbigpIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgInBhc3MgYSBsaXN0IG9mIGFyZ3VtZW50
cyBpbnN0ZWFkLiIKLSAgICApCi0gICAgYXNzZXJ0IG1zZyBpbiB3YXJuaW5ncwotICAgIGFzc2Vy
dCByZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0KLQotZGVmIHRlc3RfZ2V0ZnVuY2FyZ3Zh
bHVlX2lzX2RlcHJlY2F0ZWQocmVxdWVzdCk6Ci0gICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChy
ZXF1ZXN0LmdldGZ1bmNhcmd2YWx1ZSwgInRtcGRpciIpCi0KLQotZGVmIHRlc3RfcmVzdWx0bG9n
X2lzX2RlcHJlY2F0ZWQodGVzdGRpcik6Ci0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0taGVscCIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkRFUFJFQ0FURUQg
cGF0aCBmb3IgbWFjaGluZS1yZWFkYWJsZSByZXN1bHQgbG9nKiJdKQotCi0gICAgdGVzdGRpci5t
YWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHRlc3QoKToKLSAgICAgICAgICAg
IHBhc3MKLSAgICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
cmVzdWx0LWxvZz0lcyIgJSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJyZXN1bHQubG9nIikpCi0gICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbCi0gICAgICAgICAgICAiKi0t
cmVzdWx0LWxvZyBpcyBkZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gcHl0
ZXN0IDQuMCoiLAotICAgICAgICAgICAgIipTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvKi91
c2FnZS5odG1sI2NyZWF0aW5nLXJlc3VsdGxvZy1mb3JtYXQtZmlsZXMgZm9yIG1vcmUgaW5mb3Jt
YXRpb24qIiwKLSAgICAgICAgXQotICAgICkKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdCBp
bXBvcnQgZGVwcmVjYXRlZAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCiAK
IAotQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJhbHdheXM6TWV0YWZ1bmMuYWRkY2FsbCBp
cyBkZXByZWNhdGVkIikKLWRlZiB0ZXN0X21ldGFmdW5jX2FkZGNhbGxfZGVwcmVjYXRlZCh0ZXN0
ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICBkZWYg
cHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgIG1ldGFmdW5jLmFk
ZGNhbGwoeydpJzogMX0pCi0gICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHsnaSc6IDJ9KQot
ICAgICAgICBkZWYgdGVzdF9mdW5jKGkpOgotICAgICAgICAgICAgcGFzcwotICAgICIiIgotICAg
ICkKLSAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXMiKQotICAgIGFzc2VydCByZXMucmV0
ID09IDAKLSAgICByZXMuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiKk1ldGFmdW5j
LmFkZGNhbGwgaXMgZGVwcmVjYXRlZCoiLCAiKjIgcGFzc2VkLCAyIHdhcm5pbmdzKiJdCi0gICAg
KQorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhdHRyaWJ1dGUiLCBweXRlc3QuY29sbGVjdC5f
X2FsbF9fKSAgIyB0eXBlOiBpZ25vcmUKKyMgZmFsc2UgcG9zaXRpdmUgZHVlIHRvIGR5bmFtaWMg
YXR0cmlidXRlCitkZWYgdGVzdF9weXRlc3RfY29sbGVjdF9tb2R1bGVfZGVwcmVjYXRlZChhdHRy
aWJ1dGUpOgorICAgIHdpdGggcHl0ZXN0Lndhcm5zKERlcHJlY2F0aW9uV2FybmluZywgbWF0Y2g9
YXR0cmlidXRlKToKKyAgICAgICAgZ2V0YXR0cihweXRlc3QuY29sbGVjdCwgYXR0cmlidXRlKQog
CiAKLWRlZiB0ZXN0X3Rlcm1pbmFsX3JlcG9ydGVyX3dyaXRlcl9hdHRyKHB5dGVzdGNvbmZpZyk6
Ci0gICAgIiIiQ2hlY2sgdGhhdCBUZXJtaW5hbFJlcG9ydGVyLl90dyBpcyBhbHNvIGF2YWlsYWJs
ZSBhcyAnd3JpdGVyJyAoIzI5ODQpCi0gICAgVGhpcyBhdHRyaWJ1dGUgaXMgcGxhbm5lZCB0byBi
ZSBkZXByZWNhdGVkIGluIDMuNC4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB4
ZGlzdCAgIyBub3FhCi0KLSAgICAgICAgcHl0ZXN0LnNraXAoInhkaXN0IHdvcmtlcnMgZGlzYWJs
ZSB0aGUgdGVybWluYWwgcmVwb3J0ZXIgcGx1Z2luIikKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgIHBhc3MKLSAgICB0ZXJtaW5hbF9yZXBvcnRlciA9IHB5dGVzdGNvbmZpZy5wbHVn
aW5tYW5hZ2VyLmdldF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKQotICAgIGFzc2VydCB0ZXJt
aW5hbF9yZXBvcnRlci53cml0ZXIgaXMgdGVybWluYWxfcmVwb3J0ZXIuX3R3CitAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoInBsdWdpbiIsIHNvcnRlZChkZXByZWNhdGVkLkRFUFJFQ0FURURfRVhU
RVJOQUxfUExVR0lOUykpCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQor
ZGVmIHRlc3RfZXh0ZXJuYWxfcGx1Z2luc19pbnRlZ3JhdGVkKHRlc3RkaXIsIHBsdWdpbik6Cisg
ICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoKip7cGx1
Z2luOiAiIn0pCiAKKyAgICB3aXRoIHB5dGVzdC53YXJucyhweXRlc3QuUHl0ZXN0Q29uZmlnV2Fy
bmluZyk6CisgICAgICAgIHRlc3RkaXIucGFyc2Vjb25maWcoIi1wIiwgcGx1Z2luKQogCi1AcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoInBsdWdpbiIsIFsiY2F0Y2hsb2ciLCAiY2FwdHVyZWxvZyJd
KQotZGVmIHRlc3RfcHl0ZXN0X2NhdGNobG9nX2RlcHJlY2F0ZWQodGVzdGRpciwgcGx1Z2luKToK
LSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICBkZWYgdGVzdF9m
dW5jKHB5dGVzdGNvbmZpZyk6Ci0gICAgICAgICAgICBweXRlc3Rjb25maWcucGx1Z2lubWFuYWdl
ci5yZWdpc3RlcihOb25lLCAncHl0ZXN0X3t9JykKLSAgICAiIiIuZm9ybWF0KAotICAgICAgICAg
ICAgcGx1Z2luCi0gICAgICAgICkKLSAgICApCi0gICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3Qo
KQotICAgIGFzc2VydCByZXMucmV0ID09IDAKLSAgICByZXMuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
Ci0gICAgICAgIFsiKnB5dGVzdC0qbG9nIHBsdWdpbiBoYXMgYmVlbiBtZXJnZWQgaW50byB0aGUg
Y29yZSoiLCAiKjEgcGFzc2VkLCAxIHdhcm5pbmdzKiJdCi0gICAgKQogCitkZWYgdGVzdF9maWxs
ZnVuY2FyZ3NfaXNfZGVwcmVjYXRlZCgpIC0+IE5vbmU6CisgICAgd2l0aCBweXRlc3Qud2FybnMo
CisgICAgICAgIHB5dGVzdC5QeXRlc3REZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgIG1hdGNo
PSJUaGUgYF9maWxsZnVuY2FyZ3NgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAorICAgICk6Cisg
ICAgICAgIHB5dGVzdC5fZmlsbGZ1bmNhcmdzKG1vY2suTW9jaygpKQogCi1kZWYgdGVzdF9weXRl
c3RfcGx1Z2luc19pbl9ub25fdG9wX2xldmVsX2NvbmZ0ZXN0X2RlcHJlY2F0ZWQodGVzdGRpcik6
Ci0gICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IFBZVEVTVF9QTFVHSU5TX0ZST01f
Tk9OX1RPUF9MRVZFTF9DT05GVEVTVAogCi0gICAgc3ViZGlyZWN0b3J5ID0gdGVzdGRpci50bXBk
aXIuam9pbigic3ViZGlyZWN0b3J5IikKLSAgICBzdWJkaXJlY3RvcnkubWtkaXIoKQotICAgICMg
Y3JlYXRlIHRoZSBpbm5lciBjb25mdGVzdCB3aXRoIG1ha2Vjb25mdGVzdCBhbmQgdGhlbiBtb3Zl
IGl0IHRvIHRoZSBzdWJkaXJlY3RvcnkKLSAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAg
ICAgIiIiCi0gICAgICAgIHB5dGVzdF9wbHVnaW5zPVsnY2FwdHVyZSddCi0gICAgIiIiCi0gICAg
KQotICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oImNvbmZ0ZXN0LnB5IikubW92ZShzdWJkaXJlY3Rv
cnkuam9pbigiY29uZnRlc3QucHkiKSkKLSAgICAjIG1ha2UgdGhlIHRvcCBsZXZlbCBjb25mdGVz
dAotICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0
IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdhbHdheXMnLCBjYXRl
Z29yeT1EZXByZWNhdGlvbldhcm5pbmcpCitkZWYgdGVzdF9taW51c19rX2Rhc2hfaXNfZGVwcmVj
YXRlZCh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRocmVlcGFzcyA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgdGVzdF90aHJlZXBhc3M9IiIiCisgICAgICAgIGRlZiB0ZXN0X29uZSgpOiBh
c3NlcnQgMQorICAgICAgICBkZWYgdGVzdF90d28oKTogYXNzZXJ0IDEKKyAgICAgICAgZGVmIHRl
c3RfdGhyZWUoKTogYXNzZXJ0IDEKICAgICAiIiIKICAgICApCi0gICAgdGVzdGRpci5tYWtlcHlm
aWxlKAotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAgICAg
cGFzcwotICAgICIiIgotICAgICkKLSAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9j
ZXNzKCkKLSAgICBhc3NlcnQgcmVzLnJldCA9PSAwCi0gICAgcmVzLnN0ZGVyci5mbm1hdGNoX2xp
bmVzKAotICAgICAgICAiKiIgKyBzdHIoUFlURVNUX1BMVUdJTlNfRlJPTV9OT05fVE9QX0xFVkVM
X0NPTkZURVNUKS5zcGxpdGxpbmVzKClbMF0KLSAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi1rPS10ZXN0X3R3byIsIHRocmVlcGFzcykKKyAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqVGhlIGAtayAnLWV4cHInYCBzeW50YXgqZGVwcmVjYXRlZCoiXSkKIAog
Ci1kZWYgdGVzdF9weXRlc3RfcGx1Z2luc19pbl9ub25fdG9wX2xldmVsX2NvbmZ0ZXN0X2RlcHJl
Y2F0ZWRfbm9fdG9wX2xldmVsX2NvbmZ0ZXN0KAotICAgIHRlc3RkaXIKLSk6Ci0gICAgZnJvbSBf
cHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IFBZVEVTVF9QTFVHSU5TX0ZST01fTk9OX1RPUF9MRVZF
TF9DT05GVEVTVAotCi0gICAgc3ViZGlyZWN0b3J5ID0gdGVzdGRpci50bXBkaXIuam9pbigic3Vi
ZGlyZWN0b3J5IikKLSAgICBzdWJkaXJlY3RvcnkubWtkaXIoKQotICAgIHRlc3RkaXIubWFrZWNv
bmZ0ZXN0KAotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdh
cm5pbmdzLmZpbHRlcndhcm5pbmdzKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5p
bmcpCi0gICAgICAgIHB5dGVzdF9wbHVnaW5zPVsnY2FwdHVyZSddCitkZWYgdGVzdF9taW51c19r
X2NvbG9uX2lzX2RlcHJlY2F0ZWQodGVzdGRpcikgLT4gTm9uZToKKyAgICB0aHJlZXBhc3MgPSB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHRlc3RfdGhyZWVwYXNzPSIiIgorICAgICAgICBk
ZWYgdGVzdF9vbmUoKTogYXNzZXJ0IDEKKyAgICAgICAgZGVmIHRlc3RfdHdvKCk6IGFzc2VydCAx
CisgICAgICAgIGRlZiB0ZXN0X3RocmVlKCk6IGFzc2VydCAxCiAgICAgIiIiCiAgICAgKQotICAg
IHRlc3RkaXIudG1wZGlyLmpvaW4oImNvbmZ0ZXN0LnB5IikubW92ZShzdWJkaXJlY3Rvcnkuam9p
bigiY29uZnRlc3QucHkiKSkKLQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIi
Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKLSAg
ICApCi0KLSAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKLSAgICBhc3Nl
cnQgcmVzLnJldCA9PSAwCi0gICAgcmVzLnN0ZGVyci5mbm1hdGNoX2xpbmVzKAotICAgICAgICAi
KiIgKyBzdHIoUFlURVNUX1BMVUdJTlNfRlJPTV9OT05fVE9QX0xFVkVMX0NPTkZURVNUKS5zcGxp
dGxpbmVzKClbMF0KLSAgICApCi0KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLWsi
LCAidGVzdF90d286IiwgdGhyZWVwYXNzKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIipUaGUgYC1rICdleHByOidgIHN5bnRheCpkZXByZWNhdGVkKiJdKQogCi1kZWYgdGVzdF9w
eXRlc3RfcGx1Z2luc19pbl9ub25fdG9wX2xldmVsX2NvbmZ0ZXN0X2RlcHJlY2F0ZWRfbm9fZmFs
c2VfcG9zaXRpdmVzKAotICAgIHRlc3RkaXIKLSk6Ci0gICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0
ZWQgaW1wb3J0IFBZVEVTVF9QTFVHSU5TX0ZST01fTk9OX1RPUF9MRVZFTF9DT05GVEVTVAogCi0g
ICAgc3ViZGlyZWN0b3J5ID0gdGVzdGRpci50bXBkaXIuam9pbigic3ViZGlyZWN0b3J5IikKLSAg
ICBzdWJkaXJlY3RvcnkubWtkaXIoKQotICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorZGVmIHRl
c3RfZnNjb2xsZWN0b3JfZ2V0aG9va3Byb3h5X2lzaW5pdHBhdGgodGVzdGRpcjogVGVzdGRpcikg
LT4gTm9uZToKKyAgICBtb2R1bGUgPSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgKICAgICAgICAgIiIi
Ci0gICAgICAgIHBhc3MKLSAgICAiIiIKLSAgICApCi0gICAgdGVzdGRpci50bXBkaXIuam9pbigi
Y29uZnRlc3QucHkiKS5tb3ZlKHN1YmRpcmVjdG9yeS5qb2luKCJjb25mdGVzdC5weSIpKQotCi0g
ICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgd2Fy
bmluZ3MKLSAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2Fsd2F5cycsIGNhdGVnb3J5
PURlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgcHl0ZXN0X3BsdWdpbnM9WydjYXB0dXJlJ10K
LSAgICAiIiIKLSAgICApCi0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAg
ICAgICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAgICAgcGFzcwotICAgICIiIgotICAgICkK
LSAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKLSAgICBhc3NlcnQgcmVz
LnJldCA9PSAwCi0gICAgYXNzZXJ0IHN0cihQWVRFU1RfUExVR0lOU19GUk9NX05PTl9UT1BfTEVW
RUxfQ09ORlRFU1QpLnNwbGl0bGluZXMoKVsKLSAgICAgICAgMAotICAgIF0gbm90IGluIHJlcy5z
dGRlcnIuc3RyKCkKKyAgICAgICAgZGVmIHRlc3RfZm9vKCk6IHBhc3MKKyAgICAgICAgIiIiLAor
ICAgICAgICB3aXRoaW5pdD1UcnVlLAorICAgICkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShtb2R1
bGUsIHB5dGVzdC5Nb2R1bGUpCisgICAgcGFja2FnZSA9IG1vZHVsZS5wYXJlbnQKKyAgICBhc3Nl
cnQgaXNpbnN0YW5jZShwYWNrYWdlLCBweXRlc3QuUGFja2FnZSkKKworICAgIHdpdGggcHl0ZXN0
Lndhcm5zKHB5dGVzdC5QeXRlc3REZXByZWNhdGlvbldhcm5pbmcsIG1hdGNoPSJnZXRob29rcHJv
eHkiKToKKyAgICAgICAgcGFja2FnZS5nZXRob29rcHJveHkodGVzdGRpci50bXBkaXIpCisKKyAg
ICB3aXRoIHB5dGVzdC53YXJucyhweXRlc3QuUHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nLCBtYXRj
aD0iaXNpbml0cGF0aCIpOgorICAgICAgICBwYWNrYWdlLmlzaW5pdHBhdGgodGVzdGRpci50bXBk
aXIpCisKKyAgICAjIFRoZSBtZXRob2RzIG9uIFNlc3Npb24gYXJlICpub3QqIGRlcHJlY2F0ZWQu
CisgICAgc2Vzc2lvbiA9IG1vZHVsZS5zZXNzaW9uCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93
YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgcmVjOgorICAgICAgICBzZXNzaW9uLmdldGhvb2twcm94
eSh0ZXN0ZGlyLnRtcGRpcikKKyAgICAgICAgc2Vzc2lvbi5pc2luaXRwYXRoKHRlc3RkaXIudG1w
ZGlyKQorICAgIGFzc2VydCBsZW4ocmVjKSA9PSAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9SRUFETUUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9l
eGFtcGxlX3NjcmlwdHMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjk3ZDBmZGE1YzVkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL1JFQURNRS5yc3QKQEAgLTAsMCArMSw5IEBACitFeGFtcGxl
IHRlc3Qgc2NyaXB0cworPT09PT09PT09PT09PT09PT09PT09CisKKworVGhlIGZpbGVzIGluIHRo
aXMgZm9sZGVyIGFyZSBub3QgZGlyZWN0IHRlc3RzLCBidXQgcmF0aGVyIGV4YW1wbGUgdGVzdCBz
dWl0ZXMgdGhhdCBkZW1vbnN0cmF0ZSBjZXJ0YWluIGlzc3Vlcy9iZWhhdmlvdXJzLgorCitJbiB0
aGUgZnV0dXJlIHdlIHdpbGwgbW92ZSBwYXJ0IG9mIHRoZSBjb250ZW50IG9mIHRoZSBhY2NlcHRh
bmNlIHRlc3RzIGhlcmUgaW4gb3JkZXIgdG8gaGF2ZSBkaXJlY3RseSB0ZXN0YWJsZSBjb2RlIGlu
c3RlYWQgb2Ygd3JpdGluZyBvdXQgdGhpbmdzIGFuZCB0aGVuIHJ1bm5pbmcgdGhlbSBpbiBuZXN0
ZWQgcHl0ZXN0IHNlc3Npb25zL3N1YnByb2Nlc3Nlcy4KKworVGhpcyB3aWxsIGFpZCBkZWJ1Z2dp
bmcgYW5kIGNvbXByZWhlbnNpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4
YW1wbGVfc2NyaXB0cy9hY2NlcHRhbmNlL2ZpeHR1cmVfbW9ja19pbnRlZ3JhdGlvbi5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2FjY2VwdGFuY2UvZml4dHVyZV9tb2Nr
X2ludGVncmF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NWIwMGFjOTBlMWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvYWNjZXB0YW5jZS9maXh0dXJlX21vY2tfaW50ZWdyYXRpb24ucHkKQEAgLTAs
MCArMSwxNiBAQAorIiIiUmVwcm9kdWNlcyBpc3N1ZSAjMzc3NCIiIgorZnJvbSB1bml0dGVzdCBp
bXBvcnQgbW9jaworCitpbXBvcnQgcHl0ZXN0CisKK2NvbmZpZyA9IHsibXlrZXkiOiAiT1JJR0lO
QUwifQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0iZnVuY3Rpb24iKQorQG1vY2sucGF0Y2gu
ZGljdChjb25maWcsIHsibXlrZXkiOiAiTU9DS0VEIn0pCitkZWYgbXlfZml4dHVyZSgpOgorICAg
IHJldHVybiBjb25maWdbIm15a2V5Il0KKworCitkZWYgdGVzdF9mb29iYXIobXlfZml4dHVyZSk6
CisgICAgYXNzZXJ0IG15X2ZpeHR1cmUgPT0gIk1PQ0tFRCIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvY29sbGVjdF9pbml0X3Rlc3RzL3B5
dGVzdC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L2Nv
bGxlY3RfaW5pdF90ZXN0cy9weXRlc3QuaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uN2M0Nzk1NTQwMjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9jb2xsZWN0X2luaXRfdGVzdHMvcHl0ZXN0
LmluaQpAQCAtMCwwICsxLDIgQEAKK1tweXRlc3RdCitweXRob25fZmlsZXMgPSAqLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L2NvbGxl
Y3RfaW5pdF90ZXN0cy90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhh
bXBsZV9zY3JpcHRzL2NvbGxlY3QvY29sbGVjdF9pbml0X3Rlc3RzL3Rlc3RzL19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWNkMzY2Mjk1ZTc2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29s
bGVjdC9jb2xsZWN0X2luaXRfdGVzdHMvdGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSwyIEBA
CitkZWYgdGVzdF9pbml0KCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9jb2xsZWN0X2luaXRfdGVzdHMvdGVzdHMvdGVz
dF9mb28ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L2Nv
bGxlY3RfaW5pdF90ZXN0cy90ZXN0cy90ZXN0X2Zvby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjhmMmQ3M2NmYTRmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvY29sbGVjdF9pbml0X3Rlc3Rz
L3Rlc3RzL3Rlc3RfZm9vLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRlc3RfZm9vKCk6CisgICAg
cGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29s
bGVjdC9wYWNrYWdlX2luZmluaXRlX3JlY3Vyc2lvbi9fX2luaXRfXy5weWkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5maW5pdGVfcmVjdXJz
aW9uL19faW5pdF9fLnB5aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvY29sbGVjdC9wYWNrYWdlX2luZmluaXRlX3JlY3Vyc2lvbi9jb25mdGVzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvcGFja2FnZV9pbmZpbml0
ZV9yZWN1cnNpb24vY29uZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45NjI5ZmE2NDZhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5maW5pdGVfcmVjdXJzaW9uL2Nv
bmZ0ZXN0LnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRo
KToKKyAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhh
bXBsZV9zY3JpcHRzL2NvbGxlY3QvcGFja2FnZV9pbmZpbml0ZV9yZWN1cnNpb24vdGVzdHMvX19p
bml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3Bh
Y2thZ2VfaW5maW5pdGVfcmVjdXJzaW9uL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5maW5pdGVf
cmVjdXJzaW9uL3Rlc3RzL3Rlc3RfYmFzaWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1w
bGVfc2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5maW5pdGVfcmVjdXJzaW9uL3Rlc3RzL3Rlc3Rf
YmFzaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMTc0ODIz
ODU0ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5maW5pdGVfcmVjdXJzaW9uL3Rlc3RzL3Rlc3RfYmFzaWMu
cHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdCgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvcGFja2FnZV9pbml0X2dp
dmVuX2FzX2FyZy9wa2cvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVf
c2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5pdF9naXZlbl9hc19hcmcvcGtnL19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3Bh
Y2thZ2VfaW5pdF9naXZlbl9hc19hcmcvcGtnL3Rlc3RfZm9vLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdlX2luaXRfZ2l2ZW5fYXNfYXJnL3Br
Zy90ZXN0X2Zvby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYx
NzQ4MjM4NTRlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBs
ZV9zY3JpcHRzL2NvbGxlY3QvcGFja2FnZV9pbml0X2dpdmVuX2FzX2FyZy9wa2cvdGVzdF9mb28u
cHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdCgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZpZy9jb2xsZWN0X3B5dGVzdF9w
cmVmaXgvX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
Y29uZmlnL2NvbGxlY3RfcHl0ZXN0X3ByZWZpeC9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZpZy9jb2xsZWN0X3B5dGVzdF9wcmVm
aXgvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb25m
aWcvY29sbGVjdF9weXRlc3RfcHJlZml4L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMmRhNGZmZTJmZWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29uZmlnL2NvbGxlY3RfcHl0ZXN0X3By
ZWZpeC9jb25mdGVzdC5weQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIHB5dGVzdF9zb21ldGhpbmc6
CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvY29uZmlnL2NvbGxlY3RfcHl0ZXN0X3ByZWZpeC90ZXN0X2Zvby5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZpZy9jb2xsZWN0X3B5dGVzdF9wcmVmaXgvdGVz
dF9mb28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZjJkNzNj
ZmE0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9jb25maWcvY29sbGVjdF9weXRlc3RfcHJlZml4L3Rlc3RfZm9vLnB5CkBAIC0wLDAgKzEs
MiBAQAorZGVmIHRlc3RfZm9vKCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29uZnRlc3RfdXNhZ2VlcnJvci9fX2luaXRfXy5weWkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb25mdGVzdF91c2FnZWVycm9y
L19faW5pdF9fLnB5aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2
OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvY29uZnRlc3RfdXNhZ2VlcnJvci9jb25mdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
ZXhhbXBsZV9zY3JpcHRzL2NvbmZ0ZXN0X3VzYWdlZXJyb3IvY29uZnRlc3QucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OTczZTQyNTJkM2UKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb25mdGVzdF91c2Fn
ZWVycm9yL2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEsOCBAQAorZGVmIHB5dGVzdF9jb25maWd1cmUo
Y29uZmlnKToKKyAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICByYWlzZSBweXRlc3QuVXNhZ2VFcnJv
cigiaGVsbG8iKQorCisKK2RlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKToKKyAgICBwcmlu
dCgicHl0ZXN0X3VuY29uZmlndXJlX2NhbGxlZCIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVfZGF0YWNsYXNz
ZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90
ZXN0X2NvbXBhcmVfZGF0YWNsYXNzZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kOTZjOTBhOTFiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVfZGF0YWNsYXNz
ZXMucHkKQEAgLTAsMCArMSwxNCBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNz
Citmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBmaWVsZAorCisKK2RlZiB0ZXN0X2RhdGFjbGFzc2Vz
KCkgLT4gTm9uZToKKyAgICBAZGF0YWNsYXNzCisgICAgY2xhc3MgU2ltcGxlRGF0YU9iamVjdDoK
KyAgICAgICAgZmllbGRfYTogaW50ID0gZmllbGQoKQorICAgICAgICBmaWVsZF9iOiBzdHIgPSBm
aWVsZCgpCisKKyAgICBsZWZ0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAiYiIpCisgICAgcmlnaHQg
PSBTaW1wbGVEYXRhT2JqZWN0KDEsICJjIikKKworICAgIGFzc2VydCBsZWZ0ID09IHJpZ2h0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nl
cy90ZXN0X2NvbXBhcmVfZGF0YWNsYXNzZXNfZmllbGRfY29tcGFyaXNvbl9vZmYucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVf
ZGF0YWNsYXNzZXNfZmllbGRfY29tcGFyaXNvbl9vZmYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi43NDc5YzY2YzFiZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVf
ZGF0YWNsYXNzZXNfZmllbGRfY29tcGFyaXNvbl9vZmYucHkKQEAgLTAsMCArMSwxNCBAQAorZnJv
bSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBm
aWVsZAorCisKK2RlZiB0ZXN0X2RhdGFjbGFzc2VzX3dpdGhfYXR0cmlidXRlX2NvbXBhcmlzb25f
b2ZmKCkgLT4gTm9uZToKKyAgICBAZGF0YWNsYXNzCisgICAgY2xhc3MgU2ltcGxlRGF0YU9iamVj
dDoKKyAgICAgICAgZmllbGRfYTogaW50ID0gZmllbGQoKQorICAgICAgICBmaWVsZF9iOiBzdHIg
PSBmaWVsZChjb21wYXJlPUZhbHNlKQorCisgICAgbGVmdCA9IFNpbXBsZURhdGFPYmplY3QoMSwg
ImIiKQorICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAiYyIpCisKKyAgICBhc3NlcnQg
bGVmdCA9PSByaWdodApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzX3ZlcmJvc2UucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBh
cmVfZGF0YWNsYXNzZXNfdmVyYm9zZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjQ3MzdlZjkwNGUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL2RhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV9kYXRhY2xhc3Nl
c192ZXJib3NlLnB5CkBAIC0wLDAgKzEsMTQgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRh
dGFjbGFzcworZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZmllbGQKKworCitkZWYgdGVzdF9kYXRh
Y2xhc3Nlc192ZXJib3NlKCkgLT4gTm9uZToKKyAgICBAZGF0YWNsYXNzCisgICAgY2xhc3MgU2lt
cGxlRGF0YU9iamVjdDoKKyAgICAgICAgZmllbGRfYTogaW50ID0gZmllbGQoKQorICAgICAgICBm
aWVsZF9iOiBzdHIgPSBmaWVsZCgpCisKKyAgICBsZWZ0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAi
YiIpCisgICAgcmlnaHQgPSBTaW1wbGVEYXRhT2JqZWN0KDEsICJjIikKKworICAgIGFzc2VydCBs
ZWZ0ID09IHJpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVfcmVjdXJzaXZlX2RhdGFjbGFzc2VzLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0YWNsYXNzZXMvdGVzdF9jb21w
YXJlX3JlY3Vyc2l2ZV9kYXRhY2xhc3Nlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjE2NzE0MGUxNmE2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2RhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV9yZWN1cnNp
dmVfZGF0YWNsYXNzZXMucHkKQEAgLTAsMCArMSwzOCBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBv
cnQgZGF0YWNsYXNzCisKKworQGRhdGFjbGFzcworY2xhc3MgUzoKKyAgICBhOiBpbnQKKyAgICBi
OiBzdHIKKworCitAZGF0YWNsYXNzCitjbGFzcyBDOgorICAgIGM6IFMKKyAgICBkOiBTCisKKwor
QGRhdGFjbGFzcworY2xhc3MgQzI6CisgICAgZTogQworICAgIGY6IFMKKworCitAZGF0YWNsYXNz
CitjbGFzcyBDMzoKKyAgICBnOiBTCisgICAgaDogQzIKKyAgICBpOiBzdHIKKyAgICBqOiBzdHIK
KworCitkZWYgdGVzdF9yZWN1cnNpdmVfZGF0YWNsYXNzZXMoKToKKyAgICBsZWZ0ID0gQzMoCisg
ICAgICAgIFMoMTAsICJ0ZW4iKSwgQzIoQyhTKDEsICJvbmUiKSwgUygyLCAidHdvIikpLCBTKDIs
ICJ0aHJlZSIpKSwgImVxdWFsIiwgImxlZnQiLAorICAgICkKKyAgICByaWdodCA9IEMzKAorICAg
ICAgICBTKDIwLCAieHh4IiksIEMyKEMoUygxLCAib25lIiksIFMoMiwgInl5eSIpKSwgUygzLCAi
dGhyZWUiKSksICJlcXVhbCIsICJyaWdodCIsCisgICAgKQorCisgICAgYXNzZXJ0IGxlZnQgPT0g
cmlnaHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Rh
dGFjbGFzc2VzL3Rlc3RfY29tcGFyZV90d29fZGlmZmVyZW50X2RhdGFjbGFzc2VzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJl
X3R3b19kaWZmZXJlbnRfZGF0YWNsYXNzZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4wYTQ4MjBjNjliYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVfdHdvX2Rp
ZmZlcmVudF9kYXRhY2xhc3Nlcy5weQpAQCAtMCwwICsxLDE5IEBACitmcm9tIGRhdGFjbGFzc2Vz
IGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGZpZWxkCisKKworZGVm
IHRlc3RfY29tcGFyaW5nX3R3b19kaWZmZXJlbnRfZGF0YV9jbGFzc2VzKCkgLT4gTm9uZToKKyAg
ICBAZGF0YWNsYXNzCisgICAgY2xhc3MgU2ltcGxlRGF0YU9iamVjdE9uZToKKyAgICAgICAgZmll
bGRfYTogaW50ID0gZmllbGQoKQorICAgICAgICBmaWVsZF9iOiBzdHIgPSBmaWVsZCgpCisKKyAg
ICBAZGF0YWNsYXNzCisgICAgY2xhc3MgU2ltcGxlRGF0YU9iamVjdFR3bzoKKyAgICAgICAgZmll
bGRfYTogaW50ID0gZmllbGQoKQorICAgICAgICBmaWVsZF9iOiBzdHIgPSBmaWVsZCgpCisKKyAg
ICBsZWZ0ID0gU2ltcGxlRGF0YU9iamVjdE9uZSgxLCAiYiIpCisgICAgcmlnaHQgPSBTaW1wbGVE
YXRhT2JqZWN0VHdvKDEsICJjIikKKworICAgIGFzc2VydCBsZWZ0ICE9IHJpZ2h0ICAjIHR5cGU6
IGlnbm9yZVtjb21wYXJpc29uLW92ZXJsYXBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9jdXN0b21faXRlbS9fX2luaXRfXy5weWkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9jdXN0b21faXRlbS9f
X2luaXRfXy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlk
ZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRz
L2ZpeHR1cmVzL2N1c3RvbV9pdGVtL2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9l
eGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vY29uZnRlc3QucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNjE5MzRiNThmN2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9jdXN0
b21faXRlbS9jb25mdGVzdC5weQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgcHl0ZXN0CisKKwor
Y2xhc3MgQ3VzdG9tSXRlbShweXRlc3QuSXRlbSk6CisgICAgZGVmIHJ1bnRlc3Qoc2VsZik6Cisg
ICAgICAgIHBhc3MKKworCitjbGFzcyBDdXN0b21GaWxlKHB5dGVzdC5GaWxlKToKKyAgICBkZWYg
Y29sbGVjdChzZWxmKToKKyAgICAgICAgeWllbGQgQ3VzdG9tSXRlbS5mcm9tX3BhcmVudChuYW1l
PSJmb28iLCBwYXJlbnQ9c2VsZikKKworCitkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBw
YXJlbnQpOgorICAgIHJldHVybiBDdXN0b21GaWxlLmZyb21fcGFyZW50KGZzcGF0aD1wYXRoLCBw
YXJlbnQ9cGFyZW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vZm9vL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vZm9vL19faW5pdF9f
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJl
cy9jdXN0b21faXRlbS9mb28vdGVzdF9mb28ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1w
bGVfc2NyaXB0cy9maXh0dXJlcy9jdXN0b21faXRlbS9mb28vdGVzdF9mb28ucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMTc0ODIzODU0ZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9jdXN0
b21faXRlbS9mb28vdGVzdF9mb28ucHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdCgpOgorICAg
IHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Zp
eHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJs
ZV9pbl9zdWJkaXIvc3ViMS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBs
ZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19v
bmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0
X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2luX3N1YmRpci9zdWIxL2NvbmZ0ZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9m
aXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2luX3N1YmRpci9z
dWIxL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
YmU1YWRiZWI2ZTUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdz
X29ubHlfYXZhaWxhYmxlX2luX3N1YmRpci9zdWIxL2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEsNyBA
QAoraW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGFyZzEocmVxdWVzdCk6
CisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5GaXh0dXJlTG9va3VwRXJyb3IpOgorICAg
ICAgICByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgiYXJnMiIpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3Rf
Y29uZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3ViZGlyL3N1YjEvdGVzdF9pbl9z
dWIxLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmls
bF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2luX3N1YmRp
ci9zdWIxL3Rlc3RfaW5fc3ViMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmRmMzZkYTEzNjliMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9m
dW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMS90ZXN0X2luX3N1YjEucHkKQEAg
LTAsMCArMSwyIEBACitkZWYgdGVzdF8xKGFyZzEpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMv
dGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMi9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2Zp
bGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJk
aXIvc3ViMi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29u
bHlfYXZhaWxhYmxlX2luX3N1YmRpci9zdWIyL2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0
X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2luX3N1YmRpci9zdWIyL2NvbmZ0ZXN0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDA5ODFjNWRjMTJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMv
ZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2luX3N1
YmRpci9zdWIyL2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHB5dGVzdAorCisK
K0BweXRlc3QuZml4dHVyZQorZGVmIGFyZzIocmVxdWVzdCk6CisgICAgcHl0ZXN0LnJhaXNlcyhF
eGNlcHRpb24sIHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlLCAiYXJnMSIpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVz
L3Rlc3RfY29uZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3ViZGlyL3N1YjIvdGVz
dF9pbl9zdWIyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVy
ZXMvZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2lu
X3N1YmRpci9zdWIyL3Rlc3RfaW5fc3ViMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjFjMzRmOTRhY2M0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25m
dGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMi90ZXN0X2luX3N1YjIu
cHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdF8yKGFyZzIpOgorICAgIHBhc3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4
dHVyZXMvdGVzdF9kZXRlY3RfcmVjdXJzaXZlX2RlcGVuZGVuY3lfZXJyb3IucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3Rf
ZGV0ZWN0X3JlY3Vyc2l2ZV9kZXBlbmRlbmN5X2Vycm9yLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZDFlZmNiYjMzOGMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90
ZXN0X2RldGVjdF9yZWN1cnNpdmVfZGVwZW5kZW5jeV9lcnJvci5weQpAQCAtMCwwICsxLDE1IEBA
CitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZml4MShmaXgyKToKKyAg
ICByZXR1cm4gMQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGZpeDIoZml4MSk6CisgICAgcmV0
dXJuIDEKKworCitkZWYgdGVzdChmaXgxKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3Rf
ZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfY29uZnRlc3QvX19pbml0X18ucHlpIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4
dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L19faW5pdF9fLnB5aQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90
ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L2NvbmZ0ZXN0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0
X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWRmZDJmNzc5NTc5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9m
aXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L2NvbmZ0ZXN0LnB5
CkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QuZml4dHVyZQorZGVm
IHNwYW0oKToKKyAgICByZXR1cm4gInNwYW0iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2Zp
eHR1cmVfY29uZnRlc3RfY29uZnRlc3QvcGtnL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9m
aXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L3BrZy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0
X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L3BrZy9jb25mdGVzdC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVz
dF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdC9wa2cvY29uZnRlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZTIyY2U1YTEzNzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9m
aWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfY29uZnRlc3QvcGtnL2Nv
bmZ0ZXN0LnB5CkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QuZml4
dHVyZQorZGVmIHNwYW0oc3BhbSk6CisgICAgcmV0dXJuIHNwYW0gKiAyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVz
L3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfY29uZnRlc3QvcGtnL3Rlc3Rfc3BhbS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVy
ZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdC9wa2cvdGVzdF9zcGFtLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGQ4OTFmYmI1MDNmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4
dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0
L3BrZy90ZXN0X3NwYW0ucHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdF9zcGFtKHNwYW0pOgor
ICAgIGFzc2VydCBzcGFtID09ICJzcGFtc3BhbSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRf
Zml4dHVyZV9jb25mdGVzdF9tb2R1bGUvX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0
dXJlX2NvbmZ0ZXN0X21vZHVsZS9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRf
Zml4dHVyZV9jb25mdGVzdF9tb2R1bGUvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1
cmVfY29uZnRlc3RfbW9kdWxlL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNWRmZDJmNzc5NTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4
dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X21vZHVsZS9jb25mdGVzdC5weQpAQCAtMCwwICsxLDYgQEAK
K2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzcGFtKCk6CisgICAgcmV0
dXJuICJzcGFtIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X21v
ZHVsZS90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X21vZHVsZS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRl
bmRfZml4dHVyZV9jb25mdGVzdF9tb2R1bGUvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9t
b2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NmQxNDQ2
ZjQ3MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3Rf
bW9kdWxlL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfbW9kdWxlLnB5CkBAIC0wLDAgKzEs
MTAgQEAKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzcGFtKHNwYW0p
OgorICAgIHJldHVybiBzcGFtICogMgorCisKK2RlZiB0ZXN0X3NwYW0oc3BhbSk6CisgICAgYXNz
ZXJ0IHNwYW0gPT0gInNwYW1zcGFtIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9l
eGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJl
X21vZHVsZV9jbGFzcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Zp
eHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9tb2R1bGVfY2xhc3MucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2EwYzg5NDExMTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0
dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfbW9kdWxlX2NsYXNzLnB5CkBA
IC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBz
cGFtKCk6CisgICAgcmV0dXJuICJzcGFtIgorCisKK2NsYXNzIFRlc3RTcGFtOgorICAgIEBweXRl
c3QuZml4dHVyZQorICAgIGRlZiBzcGFtKHNlbGYsIHNwYW0pOgorICAgICAgICByZXR1cm4gc3Bh
bSAqIDIKKworICAgIGRlZiB0ZXN0X3NwYW0oc2VsZiwgc3BhbSk6CisgICAgICAgIGFzc2VydCBz
cGFtID09ICJzcGFtc3BhbSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBs
ZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9mdW5jYXJnX2Jhc2ljLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJl
cy90ZXN0X2Z1bmNhcmdfYmFzaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi4wNjYxY2IzMDFmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZnVuY2FyZ19i
YXNpYy5weQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5maXh0
dXJlCitkZWYgc29tZShyZXF1ZXN0KToKKyAgICByZXR1cm4gcmVxdWVzdC5mdW5jdGlvbi5fX25h
bWVfXworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIG90aGVyKHJlcXVlc3QpOgorICAgIHJldHVy
biA0MgorCisKK2RlZiB0ZXN0X2Z1bmMoc29tZSwgb3RoZXIpOgorICAgIHBhc3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4
dHVyZXMvdGVzdF9mdW5jYXJnX2xvb2t1cF9jbGFzc2xldmVsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2Z1bmNhcmdf
bG9va3VwX2NsYXNzbGV2ZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4yNTZiOTJhMTdkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZnVuY2FyZ19sb29r
dXBfY2xhc3NsZXZlbC5weQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgcHl0ZXN0CisKKworY2xh
c3MgVGVzdENsYXNzOgorICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBzb21ldGhpbmcoc2Vs
ZiwgcmVxdWVzdCk6CisgICAgICAgIHJldHVybiByZXF1ZXN0Lmluc3RhbmNlCisKKyAgICBkZWYg
dGVzdF9tZXRob2Qoc2VsZiwgc29tZXRoaW5nKToKKyAgICAgICAgYXNzZXJ0IHNvbWV0aGluZyBp
cyBzZWxmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9m
aXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZnVuY2FyZ19sb29rdXBfbW9kdWxlbGV2ZWwucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1
cmVzL3Rlc3RfZnVuY2FyZ19sb29rdXBfbW9kdWxlbGV2ZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMTVkYmQyY2E0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVz
L3Rlc3RfZnVuY2FyZ19sb29rdXBfbW9kdWxlbGV2ZWwucHkKQEAgLTAsMCArMSwxNSBAQAoraW1w
b3J0IHB5dGVzdAorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHNvbWV0aGluZyhyZXF1ZXN0KToK
KyAgICByZXR1cm4gcmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXworCisKK2NsYXNzIFRlc3RDbGFz
czoKKyAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZiwgc29tZXRoaW5nKToKKyAgICAgICAgYXNzZXJ0
IHNvbWV0aGluZyA9PSAidGVzdF9tZXRob2QiCisKKworZGVmIHRlc3RfZnVuYyhzb21ldGhpbmcp
OgorICAgIGFzc2VydCBzb21ldGhpbmcgPT0gInRlc3RfZnVuYyIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVz
dF9mdW5jYXJnX2xvb2t1cGZhaWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2Z1bmNhcmdfbG9va3VwZmFpbHMucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNzc1MjAzMjMxZjgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0
dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZnVuY2FyZ19sb29rdXBmYWlscy5weQpAQCAtMCwwICsx
LDEwIEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgeHl6c29tZXRo
aW5nKHJlcXVlc3QpOgorICAgIHJldHVybiA0MgorCisKK2RlZiB0ZXN0X2Z1bmMoc29tZSk6Cisg
ICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
Zml4dHVyZXMvdGVzdF9maXh0dXJlX25hbWVkX3JlcXVlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy90ZXN0X2ZpeHR1cmVfbmFtZWRfcmVxdWVzdC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc1NTE0YmY4YjhjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Zp
eHR1cmVzL3Rlc3RfZml4dHVyZV9uYW1lZF9yZXF1ZXN0LnB5CkBAIC0wLDAgKzEsMTAgQEAKK2lt
cG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiByZXF1ZXN0KCk6CisgICAgcGFz
cworCisKK2RlZiB0ZXN0KCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvdGVzdF9nZXRmaXh0dXJldmFsdWVfZHluYW1p
Yy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL3Rlc3Rf
Z2V0Zml4dHVyZXZhbHVlX2R5bmFtaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi4wNTVhMTIyMGIxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy90ZXN0X2dldGZpeHR1cmV2YWx1ZV9keW5h
bWljLnB5CkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1
cmUKK2RlZiBkeW5hbWljKCk6CisgICAgcGFzcworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGEo
cmVxdWVzdCk6CisgICAgcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoImR5bmFtaWMiKQorCisKK0Bw
eXRlc3QuZml4dHVyZQorZGVmIGIoYSk6CisgICAgcGFzcworCisKK2RlZiB0ZXN0KGIsIHJlcXVl
c3QpOgorICAgIGFzc2VydCByZXF1ZXN0LmZpeHR1cmVuYW1lcyA9PSBbImIiLCAicmVxdWVzdCIs
ICJhIiwgImR5bmFtaWMiXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvaXNzdWU4OF9pbml0aWFsX2ZpbGVfbXVsdGlub2Rlcy9fX2luaXRfXy5weWkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9pc3N1ZTg4X2luaXRpYWxfZmlsZV9t
dWx0aW5vZGVzL19faW5pdF9fLnB5aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvaXNzdWU4OF9pbml0aWFsX2ZpbGVfbXVsdGlub2Rlcy9jb25mdGVzdC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lzc3VlODhfaW5pdGlhbF9maWxl
X211bHRpbm9kZXMvY29uZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5hMDUzYTYzOGE5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9pc3N1ZTg4X2luaXRpYWxfZmlsZV9tdWx0aW5vZGVzL2NvbmZ0
ZXN0LnB5CkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBweXRlc3QKKworCitjbGFzcyBNeUZpbGUo
cHl0ZXN0LkZpbGUpOgorICAgIGRlZiBjb2xsZWN0KHNlbGYpOgorICAgICAgICByZXR1cm4gW015
SXRlbS5mcm9tX3BhcmVudChuYW1lPSJoZWxsbyIsIHBhcmVudD1zZWxmKV0KKworCitkZWYgcHl0
ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgorICAgIHJldHVybiBNeUZpbGUuZnJvbV9w
YXJlbnQoZnNwYXRoPXBhdGgsIHBhcmVudD1wYXJlbnQpCisKKworY2xhc3MgTXlJdGVtKHB5dGVz
dC5JdGVtKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1w
bGVfc2NyaXB0cy9pc3N1ZTg4X2luaXRpYWxfZmlsZV9tdWx0aW5vZGVzL3Rlc3RfaGVsbG8ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9pc3N1ZTg4X2luaXRpYWxfZmls
ZV9tdWx0aW5vZGVzL3Rlc3RfaGVsbG8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi41NjQ0NGQxNDc0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9pc3N1ZTg4X2luaXRpYWxfZmlsZV9tdWx0aW5vZGVzL3Rl
c3RfaGVsbG8ucHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdF9oZWxsbygpOgorICAgIHBhc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lzc3VlXzUx
OS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lzc3VlXzUxOS5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAyMWRhZGE0OTIzOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lzc3Vl
XzUxOS5weQpAQCAtMCwwICsxLDUzIEBACitpbXBvcnQgcHByaW50Citmcm9tIHR5cGluZyBpbXBv
cnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisKK2ltcG9ydCBweXRlc3QKKworCitk
ZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKKyAgICBpZiAiYXJnMSIgaW4gbWV0
YWZ1bmMuZml4dHVyZW5hbWVzOgorICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgiYXJnMSIs
IFsiYXJnMXYxIiwgImFyZzF2MiJdLCBzY29wZT0ibW9kdWxlIikKKworICAgIGlmICJhcmcyIiBp
biBtZXRhZnVuYy5maXh0dXJlbmFtZXM6CisgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJh
cmcyIiwgWyJhcmcydjEiLCAiYXJnMnYyIl0sIHNjb3BlPSJmdW5jdGlvbiIpCisKKworQHB5dGVz
dC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBjaGVja2VkX29yZGVyKCk6CisgICAgb3Jk
ZXIgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgc3RyLCBzdHJdXQorCisgICAgeWllbGQg
b3JkZXIKKyAgICBwcHJpbnQucHByaW50KG9yZGVyKQorICAgIGFzc2VydCBvcmRlciA9PSBbCisg
ICAgICAgICgidGVzdGluZy9leGFtcGxlX3NjcmlwdHMvaXNzdWVfNTE5LnB5IiwgImZpeDEiLCAi
YXJnMXYxIiksCisgICAgICAgICgidGVzdF9vbmVbYXJnMXYxLWFyZzJ2MV0iLCAiZml4MiIsICJh
cmcydjEiKSwKKyAgICAgICAgKCJ0ZXN0X3R3b1thcmcxdjEtYXJnMnYxXSIsICJmaXgyIiwgImFy
ZzJ2MSIpLAorICAgICAgICAoInRlc3Rfb25lW2FyZzF2MS1hcmcydjJdIiwgImZpeDIiLCAiYXJn
MnYyIiksCisgICAgICAgICgidGVzdF90d29bYXJnMXYxLWFyZzJ2Ml0iLCAiZml4MiIsICJhcmcy
djIiKSwKKyAgICAgICAgKCJ0ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9pc3N1ZV81MTkucHkiLCAi
Zml4MSIsICJhcmcxdjIiKSwKKyAgICAgICAgKCJ0ZXN0X29uZVthcmcxdjItYXJnMnYxXSIsICJm
aXgyIiwgImFyZzJ2MSIpLAorICAgICAgICAoInRlc3RfdHdvW2FyZzF2Mi1hcmcydjFdIiwgImZp
eDIiLCAiYXJnMnYxIiksCisgICAgICAgICgidGVzdF9vbmVbYXJnMXYyLWFyZzJ2Ml0iLCAiZml4
MiIsICJhcmcydjIiKSwKKyAgICAgICAgKCJ0ZXN0X3R3b1thcmcxdjItYXJnMnYyXSIsICJmaXgy
IiwgImFyZzJ2MiIpLAorICAgIF0KKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIp
CitkZWYgZml4MShyZXF1ZXN0LCBhcmcxLCBjaGVja2VkX29yZGVyKToKKyAgICBjaGVja2VkX29y
ZGVyLmFwcGVuZCgocmVxdWVzdC5ub2RlLm5hbWUsICJmaXgxIiwgYXJnMSkpCisgICAgeWllbGQg
ImZpeDEtIiArIGFyZzEKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ImZ1bmN0aW9uIikKK2Rl
ZiBmaXgyKHJlcXVlc3QsIGZpeDEsIGFyZzIsIGNoZWNrZWRfb3JkZXIpOgorICAgIGNoZWNrZWRf
b3JkZXIuYXBwZW5kKChyZXF1ZXN0Lm5vZGUubmFtZSwgImZpeDIiLCBhcmcyKSkKKyAgICB5aWVs
ZCAiZml4Mi0iICsgYXJnMiArIGZpeDEKKworCitkZWYgdGVzdF9vbmUoZml4Mik6CisgICAgcGFz
cworCisKK2RlZiB0ZXN0X3R3byhmaXgyKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9qdW5pdC0xMC54c2QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9qdW5pdC0xMC54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4yODZmYmY3Yzg3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9qdW5pdC0xMC54c2QKQEAgLTAsMCArMSwx
NDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorVGhl
IE1JVCBMaWNlbnNlIChNSVQpCisKK0NvcHlyaWdodCAoYykgMjAxNCwgR3JlZ29yeSBCb2lzc2lu
b3QKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBT
b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U
WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElOCitUSEUgU09GVFdBUkUuCistLT4KKzx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KKyAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJTVVJFRklS
RV9USU1FIj4KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CisgICAg
ICAgICAgICA8eHM6cGF0dGVybiB2YWx1ZT0iKChbMC05XXswLDN9LCkqWzAtOV17M318WzAtOV17
MCwzfSkqKFwuWzAtOV17MCwzfSk/Ii8+CisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CisgICAg
PC94czpzaW1wbGVUeXBlPgorCisgICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlcnVuVHlwZSIg
bWl4ZWQ9InRydWUiPiA8IS0tIG1peGVkIChYTUwgY29udGFpbnMgdGV4dCkgdG8gYmUgY29tcGF0
aWJsZSB3aXRoIHZlcnNpb24gcHJldmlvdXMgdGhhbiAyLjIyLjEgLS0+CisgICAgICAgIDx4czpz
ZXF1ZW5jZT4KKyAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9InN0YWNrVHJhY2UiIHR5cGU9
InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiAvPiA8IS0tIG9wdGlvbmFsIHRvIGJlIGNvbXBhdGli
bGUgd2l0aCB2ZXJzaW9uIHByZXZpb3VzIHRoYW4gMi4yMi4xIC0tPgorICAgICAgICAgICAgPHhz
OmVsZW1lbnQgbmFtZT0ic3lzdGVtLW91dCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi
IC8+CisgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJzeXN0ZW0tZXJyIiB0eXBlPSJ4czpz
dHJpbmciIG1pbk9jY3Vycz0iMCIgLz4KKyAgICAgICAgPC94czpzZXF1ZW5jZT4KKyAgICAgICAg
PHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAg
IDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVk
IiAvPgorICAgIDwveHM6Y29tcGxleFR5cGU+CisKKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJmYWls
dXJlIj4KKyAgICAgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KKyAgICAgICAgICAg
IDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAg
ICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIvPgorICAgICAg
ICA8L3hzOmNvbXBsZXhUeXBlPgorICAgIDwveHM6ZWxlbWVudD4KKworICAgIDx4czplbGVtZW50
IG5hbWU9ImVycm9yIj4KKyAgICAgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KKyAg
ICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+Cisg
ICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIv
PgorICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgorICAgIDwveHM6ZWxlbWVudD4KKworICAgIDx4
czplbGVtZW50IG5hbWU9InNraXBwZWQiPgorICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9
InRydWUiPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpz
dHJpbmciLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZSIgdHlwZT0i
eHM6c3RyaW5nIi8+CisgICAgICAgIDwveHM6Y29tcGxleFR5cGU+CisgICAgPC94czplbGVtZW50
PgorCisgICAgPHhzOmVsZW1lbnQgbmFtZT0icHJvcGVydGllcyI+CisgICAgICAgIDx4czpjb21w
bGV4VHlwZT4KKyAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KKyAgICAgICAgICAgICAgICA8eHM6
ZWxlbWVudCByZWY9InByb3BlcnR5IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk
Ii8+CisgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgorICAgICAgICA8L3hzOmNvbXBsZXhUeXBl
PgorICAgIDwveHM6ZWxlbWVudD4KKworICAgIDx4czplbGVtZW50IG5hbWU9InByb3BlcnR5Ij4K
KyAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1l
PSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgICAgIDx4
czphdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCIv
PgorICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgorICAgIDwveHM6ZWxlbWVudD4KKworICAgIDx4
czplbGVtZW50IG5hbWU9InN5c3RlbS1lcnIiIHR5cGU9InhzOnN0cmluZyIvPgorICAgIDx4czpl
bGVtZW50IG5hbWU9InN5c3RlbS1vdXQiIHR5cGU9InhzOnN0cmluZyIvPgorICAgIDx4czplbGVt
ZW50IG5hbWU9InJlcnVuRmFpbHVyZSIgdHlwZT0icmVydW5UeXBlIi8+CisgICAgPHhzOmVsZW1l
bnQgbmFtZT0icmVydW5FcnJvciIgdHlwZT0icmVydW5UeXBlIi8+CisgICAgPHhzOmVsZW1lbnQg
bmFtZT0iZmxha3lGYWlsdXJlIiB0eXBlPSJyZXJ1blR5cGUiLz4KKyAgICA8eHM6ZWxlbWVudCBu
YW1lPSJmbGFreUVycm9yIiB0eXBlPSJyZXJ1blR5cGUiLz4KKworICAgIDx4czplbGVtZW50IG5h
bWU9InRlc3RjYXNlIj4KKyAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgorICAgICAgICAgICAgPHhz
OnNlcXVlbmNlPgorICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhP
Y2N1cnM9InVuYm91bmRlZCI+CisgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0i
c2tpcHBlZCIvPgorICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVycm9yIi8+
CisgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZmFpbHVyZSIvPgorICAgICAg
ICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcnVuRmFpbHVyZSIgbWluT2NjdXJzPSIw
IiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVu
dCByZWY9InJlcnVuRXJyb3IiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4K
KyAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmbGFreUZhaWx1cmUiIG1pbk9j
Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAgICAgICAgICAgICAgPHhz
OmVsZW1lbnQgcmVmPSJmbGFreUVycm9yIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu
ZGVkIi8+CisgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lzdGVtLW91dCIv
PgorICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5c3RlbS1lcnIiLz4KKyAg
ICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KKyAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+Cisg
ICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIgdXNl
PSJyZXF1aXJlZCIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lIiB0eXBl
PSJ4czpzdHJpbmciLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3NuYW1l
IiB0eXBlPSJ4czpzdHJpbmciLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ3Jv
dXAiIHR5cGU9InhzOnN0cmluZyIvPgorICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgorICAgIDwv
eHM6ZWxlbWVudD4KKworICAgIDx4czplbGVtZW50IG5hbWU9InRlc3RzdWl0ZSI+CisgICAgICAg
IDx4czpjb21wbGV4VHlwZT4KKyAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBt
YXhPY2N1cnM9InVuYm91bmRlZCI+CisgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0
ZXN0c3VpdGUiLz4KKyAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb3BlcnRpZXMi
Lz4KKyAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlc3RjYXNlIi8+CisgICAgICAg
ICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeXN0ZW0tb3V0Ii8+CisgICAgICAgICAgICAgICAg
PHhzOmVsZW1lbnQgcmVmPSJzeXN0ZW0tZXJyIi8+CisgICAgICAgICAgICA8L3hzOmNob2ljZT4K
KyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1
c2U9InJlcXVpcmVkIi8+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlc3RzIiB0
eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1
dGUgbmFtZT0iZmFpbHVyZXMiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCIvPgorICAg
ICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvcnMiIHR5cGU9InhzOnN0cmluZyIgdXNl
PSJyZXF1aXJlZCIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJncm91cCIgdHlw
ZT0ieHM6c3RyaW5nIiAvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lIiB0
eXBlPSJTVVJFRklSRV9USU1FIi8+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNr
aXBwZWQiIHR5cGU9InhzOnN0cmluZyIgLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFt
ZT0idGltZXN0YW1wIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAgICAgICA8eHM6YXR0cmli
dXRlIG5hbWU9Imhvc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAgICAgICA8eHM6
YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAgICAgICA8eHM6
YXR0cmlidXRlIG5hbWU9InBhY2thZ2UiIHR5cGU9InhzOnN0cmluZyIgLz4KKyAgICAgICAgICAg
IDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZSIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAg
ICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvZyIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAg
ICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAg
ICA8eHM6YXR0cmlidXRlIG5hbWU9InZlcnNpb24iIHR5cGU9InhzOnN0cmluZyIvPgorICAgICAg
ICA8L3hzOmNvbXBsZXhUeXBlPgorICAgIDwveHM6ZWxlbWVudD4KKworICAgIDx4czplbGVtZW50
IG5hbWU9InRlc3RzdWl0ZXMiPgorICAgICAgICA8eHM6Y29tcGxleFR5cGU+CisgICAgICAgICAg
ICA8eHM6c2VxdWVuY2U+CisgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXN0c3Vp
dGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CisgICAgICAgICAgICA8
L3hzOnNlcXVlbmNlPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBl
PSJ4czpzdHJpbmciIC8+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWUiIHR5
cGU9IlNVUkVGSVJFX1RJTUUiLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVz
dHMiIHR5cGU9InhzOnN0cmluZyIgLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0i
ZmFpbHVyZXMiIHR5cGU9InhzOnN0cmluZyIgLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUg
bmFtZT0iZXJyb3JzIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAgIDwveHM6Y29tcGxleFR5
cGU+CisgICAgPC94czplbGVtZW50PgorCis8L3hzOnNjaGVtYT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL21hcmtzL21hcmtzX2NvbnNpZGVyZWRfa2V5
d29yZHMvX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
bWFya3MvbWFya3NfY29uc2lkZXJlZF9rZXl3b3Jkcy9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL21hcmtzL21hcmtzX2NvbnNpZGVyZWRf
a2V5d29yZHMvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0
cy9tYXJrcy9tYXJrc19jb25zaWRlcmVkX2tleXdvcmRzL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9tYXJrcy9tYXJrc19jb25zaWRlcmVk
X2tleXdvcmRzL3Rlc3RfbWFya3NfYXNfa2V5d29yZHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2V4YW1wbGVfc2NyaXB0cy9tYXJrcy9tYXJrc19jb25zaWRlcmVkX2tleXdvcmRzL3Rlc3RfbWFy
a3NfYXNfa2V5d29yZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4zNWEyYzdiNzYyODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4
YW1wbGVfc2NyaXB0cy9tYXJrcy9tYXJrc19jb25zaWRlcmVkX2tleXdvcmRzL3Rlc3RfbWFya3Nf
YXNfa2V5d29yZHMucHkKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVz
dC5tYXJrLmZvbworZGVmIHRlc3RfbWFyaygpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3BlcmZfZXhhbXBsZXMvY29sbGVjdF9zdGF0
cy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvcGVyZl9l
eGFtcGxlcy9jb2xsZWN0X3N0YXRzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4xYzQ1YzJlYTM1MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9wZXJmX2V4YW1wbGVzL2NvbGxlY3Rfc3RhdHMv
LmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACitmb29fKgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9leGFtcGxlX3NjcmlwdHMvcGVyZl9leGFtcGxlcy9jb2xsZWN0X3N0YXRzL2dlbmVy
YXRlX2ZvbGRlcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9wZXJm
X2V4YW1wbGVzL2NvbGxlY3Rfc3RhdHMvZ2VuZXJhdGVfZm9sZGVycy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZmMWVhZjdkNmJiOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3BlcmZfZXhhbXBsZXMvY29s
bGVjdF9zdGF0cy9nZW5lcmF0ZV9mb2xkZXJzLnB5CkBAIC0wLDAgKzEsMjcgQEAKK2ltcG9ydCBh
cmdwYXJzZQoraW1wb3J0IHBhdGhsaWIKKworSEVSRSA9IHBhdGhsaWIuUGF0aChfX2ZpbGVfXyku
cGFyZW50CitURVNUX0NPTlRFTlQgPSAoSEVSRSAvICJ0ZW1wbGF0ZV90ZXN0LnB5IikucmVhZF9i
eXRlcygpCisKK3BhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKK3BhcnNlci5hZGRf
YXJndW1lbnQoIm51bWJlcnMiLCBuYXJncz0iKiIsIHR5cGU9aW50KQorCisKK2RlZiBnZW5lcmF0
ZV9mb2xkZXJzKHJvb3QsIGVsZW1lbnRzLCAqbW9yZV9udW1iZXJzKToKKyAgICBmaWxsX2xlbiA9
IGxlbihzdHIoZWxlbWVudHMpKQorICAgIGlmIG1vcmVfbnVtYmVyczoKKyAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoZWxlbWVudHMpOgorICAgICAgICAgICAgbmV3X2ZvbGRlciA9IHJvb3Quam9pbnBh
dGgoZiJmb29fe2k6MD57ZmlsbF9sZW59fSIpCisgICAgICAgICAgICBuZXdfZm9sZGVyLm1rZGly
KCkKKyAgICAgICAgICAgIG5ld19mb2xkZXIuam9pbnBhdGgoIl9faW5pdF9fLnB5Iikud3JpdGVf
Ynl0ZXMoVEVTVF9DT05URU5UKQorICAgICAgICAgICAgZ2VuZXJhdGVfZm9sZGVycyhuZXdfZm9s
ZGVyLCAqbW9yZV9udW1iZXJzKQorICAgIGVsc2U6CisgICAgICAgIGZvciBpIGluIHJhbmdlKGVs
ZW1lbnRzKToKKyAgICAgICAgICAgIG5ld190ZXN0ID0gcm9vdC5qb2lucGF0aChmInRlc3Rfe2k6
MDx7ZmlsbF9sZW59fS5weSIpCisgICAgICAgICAgICBuZXdfdGVzdC53cml0ZV9ieXRlcyhURVNU
X0NPTlRFTlQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBhcmdzID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQorICAgIGdlbmVyYXRlX2ZvbGRlcnMoSEVSRSwgKihhcmdzLm51bWJl
cnMgb3IgKDEwLCAxMDApKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBs
ZV9zY3JpcHRzL3BlcmZfZXhhbXBsZXMvY29sbGVjdF9zdGF0cy90ZW1wbGF0ZV90ZXN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvcGVyZl9leGFtcGxlcy9jb2xsZWN0
X3N0YXRzL3RlbXBsYXRlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi4wNjRhZGUxOTBhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9wZXJmX2V4YW1wbGVzL2NvbGxlY3Rfc3RhdHMvdGVtcGxhdGVf
dGVzdC5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiB0ZXN0X3goKToKKyAgICBwYXNzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9weXRlc3QuaW5pIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvcHl0ZXN0LmluaQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjNWZlMGU4M2E3MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3B5dGVzdC5pbmkKQEAgLTAs
MCArMSwyIEBACitbcHl0ZXN0XQorIyBkdW1teSBweXRlc3QuaW5pIHRvIGVhc2UgZGlyZWN0IHJ1
bm5pbmcgb2YgZXhhbXBsZSBzY3JpcHRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2V4YW1wbGVfc2NyaXB0cy90bXBkaXIvdG1wZGlyX2ZpeHR1cmUucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy90bXBkaXIvdG1wZGlyX2ZpeHR1cmUucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNGFkMDc0NjJjYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy90bXBkaXIvdG1wZGly
X2ZpeHR1cmUucHkKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJhIiwgW3IicXdlL1xhYmMiXSkKK2RlZiB0ZXN0X2ZpeHR1cmUodG1w
ZGlyLCBhKToKKyAgICB0bXBkaXIuY2hlY2soZGlyPTEpCisgICAgYXNzZXJ0IHRtcGRpci5saXN0
ZGlyKCkgPT0gW10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3Jp
cHRzL3VuaXR0ZXN0L3Rlc3RfcGFyYW1ldHJpemVkX2ZpeHR1cmVfZXJyb3JfbWVzc2FnZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3RfcGFyYW1l
dHJpemVkX2ZpeHR1cmVfZXJyb3JfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmQ0MjFjZTkyN2M5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3RfcGFyYW1ldHJpemVkX2Zp
eHR1cmVfZXJyb3JfbWVzc2FnZS5weQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgdW5pdHRlc3QK
KworaW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QuZml4dHVyZShwYXJhbXM9WzEsIDJdKQorZGVm
IHR3byhyZXF1ZXN0KToKKyAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQorCisKK0BweXRlc3QubWFy
ay51c2VmaXh0dXJlcygidHdvIikKK2NsYXNzIFRlc3RTb21ldGhpbmdFbHNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKKyAgICBkZWYgdGVzdF90d28oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3Rfc2V0
dXBfc2tpcC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0
L3Rlc3Rfc2V0dXBfc2tpcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjkzZjc5YmIzYjJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
ZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3Rfc2V0dXBfc2tpcC5weQpAQCAtMCwwICsxLDEz
IEBACisiIiJTa2lwcGluZyBhbiBlbnRpcmUgc3ViY2xhc3Mgd2l0aCB1bml0dGVzdC5za2lwKCkg
c2hvdWxkICpub3QqIGNhbGwgc2V0VXAgZnJvbSBhIGJhc2UgY2xhc3MuIiIiCitpbXBvcnQgdW5p
dHRlc3QKKworCitjbGFzcyBCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIGFzc2VydCAwCisKKworQHVuaXR0ZXN0LnNraXAoInNraXAgYWxsIHRl
c3RzIikKK2NsYXNzIFRlc3QoQmFzZSk6CisgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgICAg
ICBhc3NlcnQgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvdW5pdHRlc3QvdGVzdF9zZXR1cF9za2lwX2NsYXNzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF9zZXR1cF9za2lwX2NsYXNzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGYyNTFkY2JhMTc4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3Qv
dGVzdF9zZXR1cF9za2lwX2NsYXNzLnB5CkBAIC0wLDAgKzEsMTQgQEAKKyIiIlNraXBwaW5nIGFu
IGVudGlyZSBzdWJjbGFzcyB3aXRoIHVuaXR0ZXN0LnNraXAoKSBzaG91bGQgKm5vdCogY2FsbCBz
ZXRVcENsYXNzIGZyb20gYSBiYXNlIGNsYXNzLiIiIgoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xh
c3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNl
dFVwQ2xhc3MoY2xzKToKKyAgICAgICAgYXNzZXJ0IDAKKworCitAdW5pdHRlc3Quc2tpcCgic2tp
cCBhbGwgdGVzdHMiKQorY2xhc3MgVGVzdChCYXNlKToKKyAgICBkZWYgdGVzdF9mb28oc2VsZik6
CisgICAgICAgIGFzc2VydCAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1w
bGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3NldHVwX3NraXBfbW9kdWxlLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF9zZXR1cF9za2lwX21vZHVs
ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk4YmVmYmU1MTBm
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRz
L3VuaXR0ZXN0L3Rlc3Rfc2V0dXBfc2tpcF9tb2R1bGUucHkKQEAgLTAsMCArMSwxMiBAQAorIiIi
c2V0VXBNb2R1bGUgaXMgYWx3YXlzIGNhbGxlZCwgZXZlbiBpZiBhbGwgdGVzdHMgaW4gdGhlIG1v
ZHVsZSBhcmUgc2tpcHBlZCIiIgoraW1wb3J0IHVuaXR0ZXN0CisKKworZGVmIHNldFVwTW9kdWxl
KCk6CisgICAgYXNzZXJ0IDAKKworCitAdW5pdHRlc3Quc2tpcCgic2tpcCBhbGwgdGVzdHMiKQor
Y2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Qoc2VsZik6CisgICAg
ICAgIGFzc2VydCAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy91bml0dGVzdC90ZXN0X3VuaXR0ZXN0X2FzeW5jaW8ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3VuaXR0ZXN0X2FzeW5jaW8ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMWI5ZDJjZDk2MzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVz
dC90ZXN0X3VuaXR0ZXN0X2FzeW5jaW8ucHkKQEAgLTAsMCArMSwyNSBAQAorZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IElzb2xhdGVkQXN5bmNpb1Rlc3RDYXNl
ICAjIHR5cGU6IGlnbm9yZQorCisKK3RlYXJkb3ducyA9IFtdICAjIHR5cGU6IExpc3RbTm9uZV0K
KworCitjbGFzcyBBc3luY0FyZ3VtZW50cyhJc29sYXRlZEFzeW5jaW9UZXN0Q2FzZSk6CisgICAg
YXN5bmMgZGVmIGFzeW5jVGVhckRvd24oc2VsZik6CisgICAgICAgIHRlYXJkb3ducy5hcHBlbmQo
Tm9uZSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X3NvbWV0aGluZ19hc3luYyhzZWxmKToKKyAgICAg
ICAgYXN5bmMgZGVmIGFkZGl0aW9uKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIHggKyB5CisK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBhZGRpdGlvbigyLCAyKSwgNCkKKworICAg
IGFzeW5jIGRlZiB0ZXN0X3NvbWV0aGluZ19hc3luY19mYWlscyhzZWxmKToKKyAgICAgICAgYXN5
bmMgZGVmIGFkZGl0aW9uKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIHggKyB5CisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBhZGRpdGlvbigyLCAyKSwgMykKKworICAgIGRlZiB0
ZXN0X3RlYXJkb3ducyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGxlbih0ZWFyZG93bnMpID09IDIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0
L3Rlc3RfdW5pdHRlc3RfYXN5bmN0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvdW5pdHRlc3QvdGVzdF91bml0dGVzdF9hc3luY3Rlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40N2I1ZjNmNmQ2M2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3Vu
aXR0ZXN0X2FzeW5jdGVzdC5weQpAQCAtMCwwICsxLDIzIEBACisiIiJJc3N1ZSAjNzExMCIiIgor
aW1wb3J0IGFzeW5jaW8KK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0CisKK2ltcG9ydCBhc3luY3Rl
c3QKKworCit0ZWFyZG93bnMgPSBbXSAgIyB0eXBlOiBMaXN0W05vbmVdCisKKworY2xhc3MgVGVz
dChhc3luY3Rlc3QuVGVzdENhc2UpOgorICAgIGFzeW5jIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg
ICAgICAgdGVhcmRvd25zLmFwcGVuZChOb25lKQorCisgICAgYXN5bmMgZGVmIHRlc3RfZXJyb3Io
c2VsZik6CisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMCkKKyAgICAgICAgc2VsZi5mYWls
KCJmYWlsaW5nIG9uIHB1cnBvc2UiKQorCisgICAgYXN5bmMgZGVmIHRlc3Rfb2soc2VsZik6Cisg
ICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMCkKKworICAgIGRlZiB0ZXN0X3RlYXJkb3ducyhz
ZWxmKToKKyAgICAgICAgYXNzZXJ0IGxlbih0ZWFyZG93bnMpID09IDIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3RfdW5pdHRlc3Rf
cGxhaW5fYXN5bmMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0
dGVzdC90ZXN0X3VuaXR0ZXN0X3BsYWluX2FzeW5jLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNzhkZmVjZTY4NGViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF91bml0dGVzdF9wbGFp
bl9hc3luYy5weQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGFzeW5jIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAg
ICAgICAgYXNzZXJ0IEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1w
bGVfc2NyaXB0cy93YXJuaW5ncy90ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy93YXJuaW5ncy90ZXN0X2dyb3VwX3dh
cm5pbmdzX2J5X21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi42OTg1Y2FhNDQwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2V4YW1wbGVfc2NyaXB0cy93YXJuaW5ncy90ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2Uu
cHkKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IHdhcm5pbmdzCisKK2ltcG9ydCBweXRlc3QKKwor
CitkZWYgZnVuYyhtc2cpOgorICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcobXNnKSkKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1KSkKK2RlZiB0ZXN0X2Zvbyhp
KToKKyAgICBmdW5jKCJmb28iKQorCisKK2RlZiB0ZXN0X2Zvb18xKCk6CisgICAgZnVuYygiZm9v
IikKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1KSkKK2RlZiB0ZXN0
X2JhcihpKToKKyAgICBmdW5jKCJiYXIiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvd2FybmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdl
X3N1bW1hcnkvdGVzdF8xLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
d2FybmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlX3N1bW1hcnkvdGVzdF8xLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjhjMTFjYjcxYzk4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvd2Fy
bmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlX3N1bW1hcnkvdGVzdF8xLnB5CkBA
IC0wLDAgKzEsMjEgQEAKK2ltcG9ydCB3YXJuaW5ncworCitpbXBvcnQgcHl0ZXN0CisKKworZGVm
IGZ1bmMobXNnKToKKyAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKG1zZykpCisKKworQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpIiwgcmFuZ2UoMjApKQorZGVmIHRlc3RfZm9vKGkpOgor
ICAgIGZ1bmMoImZvbyIpCisKKworZGVmIHRlc3RfZm9vXzEoKToKKyAgICBmdW5jKCJmb28iKQor
CisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaSIsIHJhbmdlKDIwKSkKK2RlZiB0ZXN0X2Jh
cihpKToKKyAgICBmdW5jKCJiYXIiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9l
eGFtcGxlX3NjcmlwdHMvd2FybmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlX3N1
bW1hcnkvdGVzdF8yLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvd2Fy
bmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlX3N1bW1hcnkvdGVzdF8yLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjM2ZDA0YTU1MDVhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvd2Fybmlu
Z3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlX3N1bW1hcnkvdGVzdF8yLnB5CkBAIC0w
LDAgKzEsNSBAQAorZnJvbSB0ZXN0XzEgaW1wb3J0IGZ1bmMKKworCitkZWYgdGVzdF8yKCk6Cisg
ICAgZnVuYygiZm9vIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZXMv
dGVzdF9pc3N1ZTUxOS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZXMvdGVzdF9pc3N1
ZTUxOS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU4M2YxOGZk
YzkzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZXMvdGVz
dF9pc3N1ZTUxOS5weQpAQCAtMCwwICsxLDMgQEAKK2RlZiB0ZXN0XzUxMCh0ZXN0ZGlyKToKKyAg
ICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiaXNzdWVfNTE5LnB5IikKKyAgICB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiaXNzdWVfNTE5LnB5IikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJl
ZXplLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS8uZ2l0aWdub3JlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjUzMzE5MDg3MjQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvLmdpdGlnbm9yZQpAQCAt
MCwwICsxLDMgQEAKK2J1aWxkLworZGlzdC8KKyouc3BlYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9mcmVlemUvY3JlYXRlX2V4ZWN1dGFibGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2ZyZWV6ZS9jcmVhdGVfZXhlY3V0YWJsZS5weQppbmRleCA5OGFhMjAzNGM5ZDcuLjk5OGRm
N2IxY2E3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvY3JlYXRlX2V4
ZWN1dGFibGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvY3JlYXRlX2V4ZWN1
dGFibGUucHkKQEAgLTEsNiArMSw0IEBACi0iIiIKLUdlbmVyYXRlcyBhbiBleGVjdXRhYmxlIHdp
dGggcHl0ZXN0IHJ1bm5lciBlbWJlZGRlZCB1c2luZyBQeUluc3RhbGxlci4KLSIiIgorIiIiR2Vu
ZXJhdGUgYW4gZXhlY3V0YWJsZSB3aXRoIHB5dGVzdCBydW5uZXIgZW1iZWRkZWQgdXNpbmcgUHlJ
bnN0YWxsZXIuIiIiCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCBweXRl
c3QKICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtOCw1ICs2LDYgQEAgaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKICAgICBoaWRkZW4gPSBbXQogICAgIGZvciB4IGluIHB5dGVzdC5mcmVlemVf
aW5jbHVkZXMoKToKICAgICAgICAgaGlkZGVuLmV4dGVuZChbIi0taGlkZGVuLWltcG9ydCIsIHhd
KQorICAgIGhpZGRlbi5leHRlbmQoWyItLWhpZGRlbi1pbXBvcnQiLCAiZGlzdHV0aWxzIl0pCiAg
ICAgYXJncyA9IFsicHlpbnN0YWxsZXIiLCAiLS1ub2NvbmZpcm0iXSArIGhpZGRlbiArIFsicnVu
dGVzdHNfc2NyaXB0LnB5Il0KICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoIiAiLmpvaW4oYXJn
cyksIHNoZWxsPVRydWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS9y
dW50ZXN0c19zY3JpcHQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS9ydW50ZXN0c19z
Y3JpcHQucHkKaW5kZXggZDAzYmNhODQwNmRlLi41OTE4NjMwMTZhY2UgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3J1bnRlc3RzX3NjcmlwdC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2ZyZWV6ZS9ydW50ZXN0c19zY3JpcHQucHkKQEAgLTEsNiArMSw2IEBACiAi
IiIKIFRoaXMgaXMgdGhlIHNjcmlwdCB0aGF0IGlzIGFjdHVhbGx5IGZyb3plbiBpbnRvIGFuIGV4
ZWN1dGFibGU6IHNpbXBseSBleGVjdXRlcwotcHkudGVzdCBtYWluKCkuCitweXRlc3QgbWFpbigp
LgogIiIiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2ZyZWV6ZS90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZnJlZXplL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5MzcyZGIxZmY5ODUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2ZyZWV6ZS90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3Rlc3RzL3Rlc3RfZG9j
dGVzdC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS90ZXN0cy90ZXN0X3RyaXZpYWwu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUyMDg1YjY1YjdmZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvY3JlYXRlX2V4
ZWN1dGFibGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS9ydW50ZXN0c19zY3JpcHQu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS90b3hfcnVuLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2lvL3Rlc3Rfc2FmZXJlcHIucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2lvL3Rlc3Rfc2FmZXJlcHIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi43YTk3Y2Y0MjRjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2lvL3Rlc3Rfc2FmZXJlcHIucHkKQEAgLTAsMCArMSwxNzMgQEAKK2ltcG9ydCBweXRlc3QK
K2Zyb20gX3B5dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0IF9wZm9ybWF0X2Rpc3BhdGNoCitmcm9t
IF9weXRlc3QuX2lvLnNhZmVyZXByIGltcG9ydCBzYWZlcmVwcgorCisKK2RlZiB0ZXN0X3NpbXBs
ZV9yZXByKCk6CisgICAgYXNzZXJ0IHNhZmVyZXByKDEpID09ICIxIgorICAgIGFzc2VydCBzYWZl
cmVwcihOb25lKSA9PSAiTm9uZSIKKworCitkZWYgdGVzdF9tYXhzaXplKCk6CisgICAgcyA9IHNh
ZmVyZXByKCJ4IiAqIDUwLCBtYXhzaXplPTI1KQorICAgIGFzc2VydCBsZW4ocykgPT0gMjUKKyAg
ICBleHBlY3RlZCA9IHJlcHIoIngiICogMTAgKyAiLi4uIiArICJ4IiAqIDEwKQorICAgIGFzc2Vy
dCBzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3RfbWF4c2l6ZV9lcnJvcl9vbl9pbnN0YW5jZSgp
OgorICAgIGNsYXNzIEE6CisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIi4uLiIpCisKKyAgICBzID0gc2FmZXJlcHIoKCIqIiAqIDUwLCBB
KCkpLCBtYXhzaXplPTI1KQorICAgIGFzc2VydCBsZW4ocykgPT0gMjUKKyAgICBhc3NlcnQgc1sw
XSA9PSAiKCIgYW5kIHNbLTFdID09ICIpIgorCisKK2RlZiB0ZXN0X2V4Y2VwdGlvbnMoKSAtPiBO
b25lOgorICAgIGNsYXNzIEJyb2tlblJlcHI6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBl
eCk6CisgICAgICAgICAgICBzZWxmLmV4ID0gZXgKKworICAgICAgICBkZWYgX19yZXByX18oc2Vs
Zik6CisgICAgICAgICAgICByYWlzZSBzZWxmLmV4CisKKyAgICBjbGFzcyBCcm9rZW5SZXByRXhj
ZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgICAgIF9fc3RyX18gPSBOb25lICAjIHR5cGU6IGlnbm9y
ZVthc3NpZ25tZW50XQorICAgICAgICBfX3JlcHJfXyA9IE5vbmUgICMgdHlwZTogaWdub3JlW2Fz
c2lnbm1lbnRdCisKKyAgICBhc3NlcnQgIkV4Y2VwdGlvbiIgaW4gc2FmZXJlcHIoQnJva2VuUmVw
cihFeGNlcHRpb24oImJyb2tlbiIpKSkKKyAgICBzID0gc2FmZXJlcHIoQnJva2VuUmVwckV4Y2Vw
dGlvbigicmVhbGx5IGJyb2tlbiIpKQorICAgIGFzc2VydCAiVHlwZUVycm9yIiBpbiBzCisgICAg
YXNzZXJ0ICJUeXBlRXJyb3IiIGluIHNhZmVyZXByKEJyb2tlblJlcHIoInN0cmluZyIpKQorCisg
ICAgbm9uZSA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIG5vbmUoKSAgIyB0eXBlOiBpZ25vcmVb
bWlzY10KKyAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgIGV4cF9leGMg
PSByZXByKGV4YykKKyAgICBvYmogPSBCcm9rZW5SZXByKEJyb2tlblJlcHJFeGNlcHRpb24oIm9t
ZyBldmVuIHdvcnNlIikpCisgICAgczIgPSBzYWZlcmVwcihvYmopCisgICAgYXNzZXJ0IHMyID09
ICgKKyAgICAgICAgIjxbdW5wcmVzZW50YWJsZSBleGNlcHRpb24gKHshc30pIHJhaXNlZCBpbiBy
ZXByKCldIEJyb2tlblJlcHIgb2JqZWN0IGF0IDB4ezp4fT4iLmZvcm1hdCgKKyAgICAgICAgICAg
IGV4cF9leGMsIGlkKG9iaikKKyAgICAgICAgKQorICAgICkKKworCitkZWYgdGVzdF9iYXNlZXhj
ZXB0aW9uKCk6CisgICAgIiIiVGVzdCBzYWZlcmVwcigpIHdpdGggQmFzZUV4Y2VwdGlvbnMsIHdo
aWNoIGluY2x1ZGVzIHB5dGVzdCBvdXRjb21lcy4iIiIKKworICAgIGNsYXNzIFJhaXNpbmdPblN0
clJlcHIoQmFzZUV4Y2VwdGlvbik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNfdHlw
ZXMpOgorICAgICAgICAgICAgc2VsZi5leGNfdHlwZXMgPSBleGNfdHlwZXMKKworICAgICAgICBk
ZWYgcmFpc2VfZXhjKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICBzZWxmLmV4Y190eXBlID0gc2VsZi5leGNfdHlwZXMucG9wKDApCisgICAgICAgICAgICBl
eGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiBo
YXNhdHRyKHNlbGYuZXhjX3R5cGUsICJfX2NhbGxfXyIpOgorICAgICAgICAgICAgICAgIHJhaXNl
IHNlbGYuZXhjX3R5cGUoKmFyZ3MpCisgICAgICAgICAgICByYWlzZSBzZWxmLmV4Y190eXBlCisK
KyAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Yygi
X19zdHJfXyIpCisKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgc2Vs
Zi5yYWlzZV9leGMoIl9fcmVwcl9fIikKKworICAgIGNsYXNzIEJyb2tlbk9iajoKKyAgICAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGV4Yyk6CisgICAgICAgICAgICBzZWxmLmV4YyA9IGV4YworCisg
ICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZXhjCisK
KyAgICAgICAgX19zdHJfXyA9IF9fcmVwcl9fCisKKyAgICBiYXNlZXhjX3N0ciA9IEJhc2VFeGNl
cHRpb24oIl9fc3RyX18iKQorICAgIG9iaiA9IEJyb2tlbk9iaihSYWlzaW5nT25TdHJSZXByKFtC
YXNlRXhjZXB0aW9uXSkpCisgICAgYXNzZXJ0IHNhZmVyZXByKG9iaikgPT0gKAorICAgICAgICAi
PFt1bnByZXNlbnRhYmxlIGV4Y2VwdGlvbiAoeyFyfSkgIgorICAgICAgICAicmFpc2VkIGluIHJl
cHIoKV0gQnJva2VuT2JqIG9iamVjdCBhdCAweHs6eH0+Ii5mb3JtYXQoYmFzZWV4Y19zdHIsIGlk
KG9iaikpCisgICAgKQorICAgIG9iaiA9IEJyb2tlbk9iaihSYWlzaW5nT25TdHJSZXByKFtSYWlz
aW5nT25TdHJSZXByKFtCYXNlRXhjZXB0aW9uXSldKSkKKyAgICBhc3NlcnQgc2FmZXJlcHIob2Jq
KSA9PSAoCisgICAgICAgICI8W3shcn0gcmFpc2VkIGluIHJlcHIoKV0gQnJva2VuT2JqIG9iamVj
dCBhdCAweHs6eH0+Ii5mb3JtYXQoCisgICAgICAgICAgICBiYXNlZXhjX3N0ciwgaWQob2JqKQor
ICAgICAgICApCisgICAgKQorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKEtleWJvYXJkSW50ZXJy
dXB0KToKKyAgICAgICAgc2FmZXJlcHIoQnJva2VuT2JqKEtleWJvYXJkSW50ZXJydXB0KCkpKQor
CisgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpOgorICAgICAgICBzYWZlcmVwcihC
cm9rZW5PYmooU3lzdGVtRXhpdCgpKSkKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhLZXlib2Fy
ZEludGVycnVwdCk6CisgICAgICAgIHNhZmVyZXByKEJyb2tlbk9iaihSYWlzaW5nT25TdHJSZXBy
KFtLZXlib2FyZEludGVycnVwdF0pKSkKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTeXN0ZW1F
eGl0KToKKyAgICAgICAgc2FmZXJlcHIoQnJva2VuT2JqKFJhaXNpbmdPblN0clJlcHIoW1N5c3Rl
bUV4aXRdKSkpCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQpOgor
ICAgICAgICBwcmludChzYWZlcmVwcihCcm9rZW5PYmooUmFpc2luZ09uU3RyUmVwcihbQmFzZUV4
Y2VwdGlvbiwgS2V5Ym9hcmRJbnRlcnJ1cHRdKSkpKQorCisgICAgd2l0aCBweXRlc3QucmFpc2Vz
KFN5c3RlbUV4aXQpOgorICAgICAgICBzYWZlcmVwcihCcm9rZW5PYmooUmFpc2luZ09uU3RyUmVw
cihbQmFzZUV4Y2VwdGlvbiwgU3lzdGVtRXhpdF0pKSkKKworCitkZWYgdGVzdF9idWdneV9idWls
dGluX3JlcHIoKToKKyAgICAjIFNpbXVsYXRlIGEgY2FzZSB3aGVyZSBhIHJlcHIgZm9yIGEgYnVp
bHRpbiByYWlzZXMuCisgICAgIyByZXBybGliIGRpc3BhdGNoZXMgYnkgdHlwZSBuYW1lLCBzbyB1
c2UgImludCIuCisKKyAgICBjbGFzcyBpbnQ6CisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkJ1Z2d5IHJlcHIhIikKKworICAgIGFzc2Vy
dCAiQnVnZ3kiIGluIHNhZmVyZXByKGludCgpKQorCisKK2RlZiB0ZXN0X2JpZ19yZXByKCk6Cisg
ICAgZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgU2FmZVJlcHIKKworICAgIGFzc2Vy
dCBsZW4oc2FmZXJlcHIocmFuZ2UoMTAwMCkpKSA8PSBsZW4oIlsiICsgU2FmZVJlcHIoMCkubWF4
bGlzdCAqICIxMDAwIiArICJdIikKKworCitkZWYgdGVzdF9yZXByX29uX25ld3N0eWxlKCkgLT4g
Tm9uZToKKyAgICBjbGFzcyBGdW5jdGlvbjoKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgor
ICAgICAgICAgICAgcmV0dXJuICI8JXM+IiAlIChzZWxmLm5hbWUpICAjIHR5cGU6IGlnbm9yZVth
dHRyLWRlZmluZWRdCisKKyAgICBhc3NlcnQgc2FmZXJlcHIoRnVuY3Rpb24oKSkKKworCitkZWYg
dGVzdF91bmljb2RlKCk6CisgICAgdmFsID0gIsKj4oKsIgorICAgIHJlcHJ2YWwgPSAiJ8Kj4oKs
JyIKKyAgICBhc3NlcnQgc2FmZXJlcHIodmFsKSA9PSByZXBydmFsCisKKworZGVmIHRlc3RfcGZv
cm1hdF9kaXNwYXRjaCgpOgorICAgIGFzc2VydCBfcGZvcm1hdF9kaXNwYXRjaCgiYSIpID09ICIn
YSciCisgICAgYXNzZXJ0IF9wZm9ybWF0X2Rpc3BhdGNoKCJhIiAqIDEwLCB3aWR0aD01KSA9PSAi
J2FhYWFhYWFhYWEnIgorICAgIGFzc2VydCBfcGZvcm1hdF9kaXNwYXRjaCgiZm9vIGJhciIsIHdp
ZHRoPTUpID09ICIoJ2ZvbyAnXG4gJ2JhcicpIgorCisKK2RlZiB0ZXN0X2Jyb2tlbl9nZXRhdHRy
aWJ1dGUoKToKKyAgICAiIiJzYWZlcmVwcigpIGNhbiBjcmVhdGUgcHJvcGVyIHJlcHJlc2VudGF0
aW9ucyBvZiBjbGFzc2VzIHdpdGgKKyAgICBicm9rZW4gX19nZXRhdHRyaWJ1dGVfXyAoIzcxNDUp
CisgICAgIiIiCisKKyAgICBjbGFzcyBTb21lQ2xhc3M6CisgICAgICAgIGRlZiBfX2dldGF0dHJp
YnV0ZV9fKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAg
ICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
CisKKyAgICBhc3NlcnQgc2FmZXJlcHIoU29tZUNsYXNzKCkpLnN0YXJ0c3dpdGgoCisgICAgICAg
ICI8W1J1bnRpbWVFcnJvcigpIHJhaXNlZCBpbiByZXByKCldIFNvbWVDbGFzcyBvYmplY3QgYXQg
MHgiCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3Rlcm1p
bmFsd3JpdGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3Rlcm1pbmFsd3JpdGVy
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGIwY2NmMDZhNDA0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3Rlcm1pbmFs
d3JpdGVyLnB5CkBAIC0wLDAgKzEsMjgzIEBACitpbXBvcnQgaW8KK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJh
dG9yCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5
dGVzdC5faW8gaW1wb3J0IHRlcm1pbmFsd3JpdGVyCitmcm9tIF9weXRlc3QubW9ua2V5cGF0Y2gg
aW1wb3J0IE1vbmtleVBhdGNoCisKKworIyBUaGVzZSB0ZXN0cyB3ZXJlIGluaXRpYWxseSBjb3Bp
ZWQgZnJvbSBweSAxLjguMS4KKworCitkZWYgdGVzdF90ZXJtaW5hbF93aWR0aF9DT0xVTU5TKG1v
bmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICBtb25rZXlwYXRjaC5zZXRlbnYo
IkNPTFVNTlMiLCAiNDIiKQorICAgIGFzc2VydCB0ZXJtaW5hbHdyaXRlci5nZXRfdGVybWluYWxf
d2lkdGgoKSA9PSA0MgorICAgIG1vbmtleXBhdGNoLmRlbGVudigiQ09MVU1OUyIsIHJhaXNpbmc9
RmFsc2UpCisKKworZGVmIHRlc3RfdGVybWluYWx3cml0ZXJfd2lkdGhfYm9ndXMobW9ua2V5cGF0
Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgorICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc2h1dGls
LCAiZ2V0X3Rlcm1pbmFsX3NpemUiLCBtb2NrLk1vY2socmV0dXJuX3ZhbHVlPSgxMCwgMTApKSkK
KyAgICBtb25rZXlwYXRjaC5kZWxlbnYoIkNPTFVNTlMiLCByYWlzaW5nPUZhbHNlKQorICAgIHR3
ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQorICAgIGFzc2VydCB0dy5mdWxsd2lk
dGggPT0gODAKKworCitkZWYgdGVzdF90ZXJtaW5hbHdyaXRlcl9jb21wdXRlc193aWR0aChtb25r
ZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0
ZXJtaW5hbHdyaXRlciwgImdldF90ZXJtaW5hbF93aWR0aCIsIGxhbWJkYTogNDIpCisgICAgdHcg
PSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdyaXRlcigpCisgICAgYXNzZXJ0IHR3LmZ1bGx3aWR0
aCA9PSA0MgorCisKK2RlZiB0ZXN0X3Rlcm1pbmFsd3JpdGVyX2R1bWJfdGVybV9ub19tYXJrdXAo
bW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgorICAgIG1vbmtleXBhdGNoLnNldGF0
dHIob3MsICJlbnZpcm9uIiwgeyJURVJNIjogImR1bWIiLCAiUEFUSCI6ICIifSkKKworICAgIGNs
YXNzIE15RmlsZToKKyAgICAgICAgY2xvc2VkID0gRmFsc2UKKworICAgICAgICBkZWYgaXNhdHR5
KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIHdpdGggbW9ua2V5cGF0Y2gu
Y29udGV4dCgpIGFzIG06CisgICAgICAgIG0uc2V0YXR0cihzeXMsICJzdGRvdXQiLCBNeUZpbGUo
KSkKKyAgICAgICAgYXNzZXJ0IHN5cy5zdGRvdXQuaXNhdHR5KCkKKyAgICAgICAgdHcgPSB0ZXJt
aW5hbHdyaXRlci5UZXJtaW5hbFdyaXRlcigpCisgICAgICAgIGFzc2VydCBub3QgdHcuaGFzbWFy
a3VwCisKKworZGVmIHRlc3RfdGVybWluYWx3cml0ZXJfbm90X3VuaWNvZGUoKSAtPiBOb25lOgor
ICAgICIiIklmIHRoZSBmaWxlIGRvZXNuJ3Qgc3VwcG9ydCBVbmljb2RlLCB0aGUgc3RyaW5nIGlz
IHVuaWNvZGUtZXNjYXBlZCAoIzc0NzUpLiIiIgorICAgIGJ1ZmZlciA9IGlvLkJ5dGVzSU8oKQor
ICAgIGZpbGUgPSBpby5UZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9ImNwMTI1MiIpCisg
ICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdyaXRlcihmaWxlKQorICAgIHR3LndyaXRl
KCJoZWxsbyDwn4yAIHfDtHJsZCDXkNeR15IiLCBmbHVzaD1UcnVlKQorICAgIGFzc2VydCBidWZm
ZXIuZ2V0dmFsdWUoKSA9PSBiciJoZWxsbyBcVTAwMDFmMzAwIHdceGY0cmxkIFx1MDVkMFx1MDVk
MVx1MDVkMiIKKworCit3aW4zMiA9IGludChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKKworCitj
bGFzcyBUZXN0VGVybWluYWxXcml0ZXI6CisgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bInBh
dGgiLCAic3RyaW5naW8iXSkKKyAgICBkZWYgdHcoCisgICAgICAgIHNlbGYsIHJlcXVlc3QsIHRt
cGRpcgorICAgICkgLT4gR2VuZXJhdG9yW3Rlcm1pbmFsd3JpdGVyLlRlcm1pbmFsV3JpdGVyLCBO
b25lLCBOb25lXToKKyAgICAgICAgaWYgcmVxdWVzdC5wYXJhbSA9PSAicGF0aCI6CisgICAgICAg
ICAgICBwID0gdG1wZGlyLmpvaW4oInRtcGZpbGUiKQorICAgICAgICAgICAgZiA9IG9wZW4oc3Ry
KHApLCAidysiLCBlbmNvZGluZz0idXRmOCIpCisgICAgICAgICAgICB0dyA9IHRlcm1pbmFsd3Jp
dGVyLlRlcm1pbmFsV3JpdGVyKGYpCisKKyAgICAgICAgICAgIGRlZiBnZXRsaW5lcygpOgorICAg
ICAgICAgICAgICAgIGYuZmx1c2goKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzdHIocCks
IGVuY29kaW5nPSJ1dGY4IikgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmcC5y
ZWFkbGluZXMoKQorCisgICAgICAgIGVsaWYgcmVxdWVzdC5wYXJhbSA9PSAic3RyaW5naW8iOgor
ICAgICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIHR3ID0gdGVybWluYWx3
cml0ZXIuVGVybWluYWxXcml0ZXIoZikKKworICAgICAgICAgICAgZGVmIGdldGxpbmVzKCk6Cisg
ICAgICAgICAgICAgICAgZi5zZWVrKDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGYucmVhZGxp
bmVzKCkKKworICAgICAgICB0dy5nZXRsaW5lcyA9IGdldGxpbmVzICAjIHR5cGU6IGlnbm9yZQor
ICAgICAgICB0dy5nZXR2YWx1ZSA9IGxhbWJkYTogIiIuam9pbihnZXRsaW5lcygpKSAgIyB0eXBl
OiBpZ25vcmUKKworICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICB5aWVsZCB0dworCisgICAg
ZGVmIHRlc3RfbGluZShzZWxmLCB0dykgLT4gTm9uZToKKyAgICAgICAgdHcubGluZSgiaGVsbG8i
KQorICAgICAgICBsaW5lcyA9IHR3LmdldGxpbmVzKCkKKyAgICAgICAgYXNzZXJ0IGxlbihsaW5l
cykgPT0gMQorICAgICAgICBhc3NlcnQgbGluZXNbMF0gPT0gImhlbGxvXG4iCisKKyAgICBkZWYg
dGVzdF9saW5lX3VuaWNvZGUoc2VsZiwgdHcpIC0+IE5vbmU6CisgICAgICAgIG1zZyA9ICJiXHUw
MGY2eSIKKyAgICAgICAgdHcubGluZShtc2cpCisgICAgICAgIGxpbmVzID0gdHcuZ2V0bGluZXMo
KQorICAgICAgICBhc3NlcnQgbGluZXNbMF0gPT0gbXNnICsgIlxuIgorCisgICAgZGVmIHRlc3Rf
c2VwX25vX3RpdGxlKHNlbGYsIHR3KSAtPiBOb25lOgorICAgICAgICB0dy5zZXAoIi0iLCBmdWxs
d2lkdGg9NjApCisgICAgICAgIGxpbmVzID0gdHcuZ2V0bGluZXMoKQorICAgICAgICBhc3NlcnQg
bGVuKGxpbmVzKSA9PSAxCisgICAgICAgIGFzc2VydCBsaW5lc1swXSA9PSAiLSIgKiAoNjAgLSB3
aW4zMikgKyAiXG4iCisKKyAgICBkZWYgdGVzdF9zZXBfd2l0aF90aXRsZShzZWxmLCB0dykgLT4g
Tm9uZToKKyAgICAgICAgdHcuc2VwKCItIiwgImhlbGxvIiwgZnVsbHdpZHRoPTYwKQorICAgICAg
ICBsaW5lcyA9IHR3LmdldGxpbmVzKCkKKyAgICAgICAgYXNzZXJ0IGxlbihsaW5lcykgPT0gMQor
ICAgICAgICBhc3NlcnQgbGluZXNbMF0gPT0gIi0iICogMjYgKyAiIGhlbGxvICIgKyAiLSIgKiAo
MjcgLSB3aW4zMikgKyAiXG4iCisKKyAgICBkZWYgdGVzdF9zZXBfbG9uZ2VyX3RoYW5fd2lkdGgo
c2VsZiwgdHcpIC0+IE5vbmU6CisgICAgICAgIHR3LnNlcCgiLSIsICJhIiAqIDEwLCBmdWxsd2lk
dGg9NSkKKyAgICAgICAgKGxpbmUsKSA9IHR3LmdldGxpbmVzKCkKKyAgICAgICAgIyBldmVuIHRo
b3VnaCB0aGUgc3RyaW5nIGlzIHdpZGVyIHRoYW4gdGhlIGxpbmUsIHN0aWxsIGhhdmUgYSBzZXBh
cmF0b3IKKyAgICAgICAgYXNzZXJ0IGxpbmUgPT0gIi0gYWFhYWFhYWFhYSAtXG4iCisKKyAgICBA
cHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCByZWFzb249IndpbjMy
IGhhcyBubyBuYXRpdmUgYW5zaSIpCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJib2xk
IiwgKFRydWUsIEZhbHNlKSkKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImNvbG9yIiwg
KCJyZWQiLCAiZ3JlZW4iKSkKKyAgICBkZWYgdGVzdF9tYXJrdXAoc2VsZiwgdHcsIGJvbGQ6IGJv
b2wsIGNvbG9yOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIHRleHQgPSB0dy5tYXJrdXAoImhlbGxv
IiwgKip7Y29sb3I6IFRydWUsICJib2xkIjogYm9sZH0pCisgICAgICAgIGFzc2VydCAiaGVsbG8i
IGluIHRleHQKKworICAgIGRlZiB0ZXN0X21hcmt1cF9iYWQoc2VsZiwgdHcpIC0+IE5vbmU6Cisg
ICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHR3Lm1h
cmt1cCgieCIsIHdyb25rdz0zKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJv
cik6CisgICAgICAgICAgICB0dy5tYXJrdXAoIngiLCB3cm9ua3c9MCkKKworICAgIGRlZiB0ZXN0
X2xpbmVfd3JpdGVfbWFya3VwKHNlbGYsIHR3KSAtPiBOb25lOgorICAgICAgICB0dy5oYXNtYXJr
dXAgPSBUcnVlCisgICAgICAgIHR3LmxpbmUoIngiLCBib2xkPVRydWUpCisgICAgICAgIHR3Lndy
aXRlKCJ4XG4iLCByZWQ9VHJ1ZSkKKyAgICAgICAgbGluZXMgPSB0dy5nZXRsaW5lcygpCisgICAg
ICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAid2luMzIiOgorICAgICAgICAgICAgYXNzZXJ0IGxlbihs
aW5lc1swXSkgPj0gMiwgbGluZXMKKyAgICAgICAgICAgIGFzc2VydCBsZW4obGluZXNbMV0pID49
IDIsIGxpbmVzCisKKyAgICBkZWYgdGVzdF9hdHRyX2Z1bGx3aWR0aChzZWxmLCB0dykgLT4gTm9u
ZToKKyAgICAgICAgdHcuc2VwKCItIiwgImhlbGxvIiwgZnVsbHdpZHRoPTcwKQorICAgICAgICB0
dy5mdWxsd2lkdGggPSA3MAorICAgICAgICB0dy5zZXAoIi0iLCAiaGVsbG8iKQorICAgICAgICBs
aW5lcyA9IHR3LmdldGxpbmVzKCkKKyAgICAgICAgYXNzZXJ0IGxlbihsaW5lc1swXSkgPT0gbGVu
KGxpbmVzWzFdKQorCisKK0BweXRlc3QubWFyay5za2lwaWYoc3lzLnBsYXRmb3JtID09ICJ3aW4z
MiIsIHJlYXNvbj0id2luMzIgaGFzIG5vIG5hdGl2ZSBhbnNpIikKK2RlZiB0ZXN0X2F0dHJfaGFz
bWFya3VwKCkgLT4gTm9uZToKKyAgICBmaWxlID0gaW8uU3RyaW5nSU8oKQorICAgIHR3ID0gdGVy
bWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoZmlsZSkKKyAgICBhc3NlcnQgbm90IHR3Lmhhc21h
cmt1cAorICAgIHR3Lmhhc21hcmt1cCA9IFRydWUKKyAgICB0dy5saW5lKCJoZWxsbyIsIGJvbGQ9
VHJ1ZSkKKyAgICBzID0gZmlsZS5nZXR2YWx1ZSgpCisgICAgYXNzZXJ0IGxlbihzKSA+IGxlbigi
aGVsbG9cbiIpCisgICAgYXNzZXJ0ICJceDFiWzFtIiBpbiBzCisgICAgYXNzZXJ0ICJceDFiWzBt
IiBpbiBzCisKKworZGVmIGFzc2VydF9jb2xvcl9zZXQoKToKKyAgICBmaWxlID0gaW8uU3RyaW5n
SU8oKQorICAgIHR3ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoZmlsZSkKKyAgICBh
c3NlcnQgdHcuaGFzbWFya3VwCisgICAgdHcubGluZSgiaGVsbG8iLCBib2xkPVRydWUpCisgICAg
cyA9IGZpbGUuZ2V0dmFsdWUoKQorICAgIGFzc2VydCBsZW4ocykgPiBsZW4oImhlbGxvXG4iKQor
ICAgIGFzc2VydCAiXHgxYlsxbSIgaW4gcworICAgIGFzc2VydCAiXHgxYlswbSIgaW4gcworCisK
K2RlZiBhc3NlcnRfY29sb3Jfbm90X3NldCgpOgorICAgIGYgPSBpby5TdHJpbmdJTygpCisgICAg
Zi5pc2F0dHkgPSBsYW1iZGE6IFRydWUgICMgdHlwZTogaWdub3JlCisgICAgdHcgPSB0ZXJtaW5h
bHdyaXRlci5UZXJtaW5hbFdyaXRlcihmaWxlPWYpCisgICAgYXNzZXJ0IG5vdCB0dy5oYXNtYXJr
dXAKKyAgICB0dy5saW5lKCJoZWxsbyIsIGJvbGQ9VHJ1ZSkKKyAgICBzID0gZi5nZXR2YWx1ZSgp
CisgICAgYXNzZXJ0IHMgPT0gImhlbGxvXG4iCisKKworZGVmIHRlc3Rfc2hvdWxkX2RvX21hcmt1
cF9QWV9DT0xPUlNfZXFfMShtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAg
bW9ua2V5cGF0Y2guc2V0aXRlbShvcy5lbnZpcm9uLCAiUFlfQ09MT1JTIiwgIjEiKQorICAgIGFz
c2VydF9jb2xvcl9zZXQoKQorCisKK2RlZiB0ZXN0X3Nob3VsZF9ub3RfZG9fbWFya3VwX1BZX0NP
TE9SU19lcV8wKG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICBtb25rZXlw
YXRjaC5zZXRpdGVtKG9zLmVudmlyb24sICJQWV9DT0xPUlMiLCAiMCIpCisgICAgYXNzZXJ0X2Nv
bG9yX25vdF9zZXQoKQorCisKK2RlZiB0ZXN0X3Nob3VsZF9ub3RfZG9fbWFya3VwX05PX0NPTE9S
KG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICBtb25rZXlwYXRjaC5zZXRp
dGVtKG9zLmVudmlyb24sICJOT19DT0xPUiIsICIxIikKKyAgICBhc3NlcnRfY29sb3Jfbm90X3Nl
dCgpCisKKworZGVmIHRlc3Rfc2hvdWxkX2RvX21hcmt1cF9GT1JDRV9DT0xPUihtb25rZXlwYXRj
aDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShvcy5lbnZp
cm9uLCAiRk9SQ0VfQ09MT1IiLCAiMSIpCisgICAgYXNzZXJ0X2NvbG9yX3NldCgpCisKKworZGVm
IHRlc3Rfc2hvdWxkX25vdF9kb19tYXJrdXBfTk9fQ09MT1JfYW5kX0ZPUkNFX0NPTE9SKAorICAg
IG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCwKKykgLT4gTm9uZToKKyAgICBtb25rZXlwYXRjaC5z
ZXRpdGVtKG9zLmVudmlyb24sICJOT19DT0xPUiIsICIxIikKKyAgICBtb25rZXlwYXRjaC5zZXRp
dGVtKG9zLmVudmlyb24sICJGT1JDRV9DT0xPUiIsICIxIikKKyAgICBhc3NlcnRfY29sb3Jfbm90
X3NldCgpCisKKworY2xhc3MgVGVzdFRlcm1pbmFsV3JpdGVyTGluZVdpZHRoOgorICAgIGRlZiB0
ZXN0X2luaXQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJt
aW5hbFdyaXRlcigpCisgICAgICAgIGFzc2VydCB0dy53aWR0aF9vZl9jdXJyZW50X2xpbmUgPT0g
MAorCisgICAgZGVmIHRlc3RfdXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHR3ID0gdGVy
bWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQorICAgICAgICB0dy53cml0ZSgiaGVsbG8gd29y
bGQiKQorICAgICAgICBhc3NlcnQgdHcud2lkdGhfb2ZfY3VycmVudF9saW5lID09IDExCisKKyAg
ICBkZWYgdGVzdF91cGRhdGVfd2l0aF9uZXdsaW5lKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHR3
ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQorICAgICAgICB0dy53cml0ZSgiaGVs
bG9cbndvcmxkIikKKyAgICAgICAgYXNzZXJ0IHR3LndpZHRoX29mX2N1cnJlbnRfbGluZSA9PSA1
CisKKyAgICBkZWYgdGVzdF91cGRhdGVfd2l0aF93aWRlX3RleHQoc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdyaXRlcigpCisgICAgICAgIHR3Lndy
aXRlKCLkuYfkuYLjhJLlsLrljYIg44SS5Y2E5Lio5Yya5YyaIikKKyAgICAgICAgYXNzZXJ0IHR3
LndpZHRoX29mX2N1cnJlbnRfbGluZSA9PSAyMSAgIyA1KjIgKyAxICsgNSoyCisKKyAgICBkZWYg
dGVzdF9jb21wb3NlZChzZWxmKSAtPiBOb25lOgorICAgICAgICB0dyA9IHRlcm1pbmFsd3JpdGVy
LlRlcm1pbmFsV3JpdGVyKCkKKyAgICAgICAgdGV4dCA9ICJjYWbDqSBmb29kIgorICAgICAgICBh
c3NlcnQgbGVuKHRleHQpID09IDkKKyAgICAgICAgdHcud3JpdGUodGV4dCkKKyAgICAgICAgYXNz
ZXJ0IHR3LndpZHRoX29mX2N1cnJlbnRfbGluZSA9PSA5CisKKyAgICBkZWYgdGVzdF9jb21iaW5p
bmcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdy
aXRlcigpCisgICAgICAgIHRleHQgPSAiY2FmZcyBIGZvb2QiCisgICAgICAgIGFzc2VydCBsZW4o
dGV4dCkgPT0gMTAKKyAgICAgICAgdHcud3JpdGUodGV4dCkKKyAgICAgICAgYXNzZXJ0IHR3Lndp
ZHRoX29mX2N1cnJlbnRfbGluZSA9PSA5CisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAor
ICAgICgiaGFzX21hcmt1cCIsICJjb2RlX2hpZ2hsaWdodCIsICJleHBlY3RlZCIpLAorICAgIFsK
KyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgVHJ1ZSwKKyAgICAgICAgICAgIFRy
dWUsCisgICAgICAgICAgICAie2t3fWFzc2VydHtobC1yZXNldH0ge251bWJlcn0we2hsLXJlc2V0
fVxuIiwKKyAgICAgICAgICAgIGlkPSJ3aXRoIG1hcmt1cCBhbmQgY29kZV9oaWdobGlnaHQiLAor
ICAgICAgICApLAorICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICBUcnVlLCBGYWxz
ZSwgImFzc2VydCAwXG4iLCBpZD0id2l0aCBtYXJrdXAgYnV0IG5vIGNvZGVfaGlnaGxpZ2h0IiwK
KyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgRmFsc2UsIFRy
dWUsICJhc3NlcnQgMFxuIiwgaWQ9IndpdGhvdXQgbWFya3VwIGJ1dCB3aXRoIGNvZGVfaGlnaGxp
Z2h0IiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgRmFs
c2UsIEZhbHNlLCAiYXNzZXJ0IDBcbiIsIGlkPSJuZWl0aGVyIG1hcmt1cCBub3IgY29kZV9oaWdo
bGlnaHQiLAorICAgICAgICApLAorICAgIF0sCispCitkZWYgdGVzdF9jb2RlX2hpZ2hsaWdodCho
YXNfbWFya3VwLCBjb2RlX2hpZ2hsaWdodCwgZXhwZWN0ZWQsIGNvbG9yX21hcHBpbmcpOgorICAg
IGYgPSBpby5TdHJpbmdJTygpCisgICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdyaXRl
cihmKQorICAgIHR3Lmhhc21hcmt1cCA9IGhhc19tYXJrdXAKKyAgICB0dy5jb2RlX2hpZ2hsaWdo
dCA9IGNvZGVfaGlnaGxpZ2h0CisgICAgdHcuX3dyaXRlX3NvdXJjZShbImFzc2VydCAwIl0pCisK
KyAgICBhc3NlcnQgZi5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkgPT0gY29s
b3JfbWFwcGluZy5mb3JtYXQoW2V4cGVjdGVkXSkKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcygK
KyAgICAgICAgVmFsdWVFcnJvciwKKyAgICAgICAgbWF0Y2g9cmUuZXNjYXBlKCJpbmRlbnRzIHNp
emUgKDIpIHNob3VsZCBoYXZlIHNhbWUgc2l6ZSBhcyBsaW5lcyAoMSkiKSwKKyAgICApOgorICAg
ICAgICB0dy5fd3JpdGVfc291cmNlKFsiYXNzZXJ0IDAiXSwgWyIgIiwgIiAiXSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvaW8vdGVzdF93Y3dpZHRoLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9pby90ZXN0X3djd2lkdGgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi43Y2M3NGRmNWQwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2lvL3Rlc3Rfd2N3aWR0aC5weQpAQCAtMCwwICsxLDM4IEBACitpbXBvcnQgcHl0ZXN0
Citmcm9tIF9weXRlc3QuX2lvLndjd2lkdGggaW1wb3J0IHdjc3dpZHRoCitmcm9tIF9weXRlc3Qu
X2lvLndjd2lkdGggaW1wb3J0IHdjd2lkdGgKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgKCJjIiwgImV4cGVjdGVkIiksCisgICAgWworICAgICAgICAoIlwwIiwgMCksCisgICAg
ICAgICgiXG4iLCAtMSksCisgICAgICAgICgiYSIsIDEpLAorICAgICAgICAoIjEiLCAxKSwKKyAg
ICAgICAgKCLXkCIsIDEpLAorICAgICAgICAoIlx1MjAwQiIsIDApLAorICAgICAgICAoIlx1MUFC
RSIsIDApLAorICAgICAgICAoIlx1MDU5MSIsIDApLAorICAgICAgICAoIvCfiZAiLCAyKSwKKyAg
ICAgICAgKCLvvIQiLCAyKSwKKyAgICBdLAorKQorZGVmIHRlc3Rfd2N3aWR0aChjOiBzdHIsIGV4
cGVjdGVkOiBpbnQpIC0+IE5vbmU6CisgICAgYXNzZXJ0IHdjd2lkdGgoYykgPT0gZXhwZWN0ZWQK
KworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgKCJzIiwgImV4cGVjdGVkIiksCisg
ICAgWworICAgICAgICAoIiIsIDApLAorICAgICAgICAoImhlbGxvLCB3b3JsZCEiLCAxMyksCisg
ICAgICAgICgiaGVsbG8sIHdvcmxkIVxuIiwgLTEpLAorICAgICAgICAoIjAxMjM0NTY3ODkiLCAx
MCksCisgICAgICAgICgi16nXnNeV150sINei15XXnNedISIsIDExKSwKKyAgICAgICAgKCLXqdaw
15HWu9ei1rjXmdeZ150iLCA2KSwKKyAgICAgICAgKCLwn4mQ8J+JkPCfiZAiLCA2KSwKKyAgICBd
LAorKQorZGVmIHRlc3Rfd2Nzd2lkdGgoczogc3RyLCBleHBlY3RlZDogaW50KSAtPiBOb25lOgor
ICAgIGFzc2VydCB3Y3N3aWR0aChzKSA9PSBleHBlY3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfZml4dHVyZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
bG9nZ2luZy90ZXN0X2ZpeHR1cmUucHkKaW5kZXggOGQ5YWU2YjUxOGRhLi5mZmQ1MWJjYWQ3YTAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90ZXN0X2ZpeHR1cmUucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfZml4dHVyZS5weQpAQCAtMSw3
ICsxLDggQEAKLSMgLSotIGNvZGluZzogdXRmLTggLSotCiBpbXBvcnQgbG9nZ2luZwogCiBpbXBv
cnQgcHl0ZXN0Citmcm9tIF9weXRlc3QubG9nZ2luZyBpbXBvcnQgY2FwbG9nX3JlY29yZHNfa2V5
Citmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKIAogbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCiBzdWJsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXyArICIuYmF6IikKQEAgLTI3LDggKzI4LDExIEBAIGRlZiB0ZXN0X2NoYW5nZV9sZXZlbChj
YXBsb2cpOgogICAgIGFzc2VydCAiQ1JJVElDQUwiIGluIGNhcGxvZy50ZXh0CiAKIAotZGVmIHRl
c3RfY2hhbmdlX2xldmVsX3VuZG8odGVzdGRpcik6Ci0gICAgIiIiRW5zdXJlIHRoYXQgJ3NldF9s
ZXZlbCcgaXMgdW5kb25lIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHRlc3QiIiIKK2RlZiB0ZXN0X2No
YW5nZV9sZXZlbF91bmRvKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiRW5zdXJl
IHRoYXQgJ3NldF9sZXZlbCcgaXMgdW5kb25lIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHRlc3QuCisK
KyAgICBUZXN0cyB0aGUgbG9nZ2luZyBvdXRwdXQgdGhlbXNlbHZlcyAoYWZmYWN0ZWQgYm90aCBi
eSBsb2dnZXIgYW5kIGhhbmRsZXIgbGV2ZWxzKS4KKyAgICAiIiIKICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgbG9nZ2luZwpAQCAtNDUsOSArNDks
MzcgQEAgZGVmIHRlc3RfY2hhbmdlX2xldmVsX3VuZG8odGVzdGRpcik6CiAgICAgICAgICAgICBh
c3NlcnQgMAogICAgICIiIgogICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9z
dWJwcm9jZXNzKCkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmxvZyBmcm9tIHRlc3QxKiIsICIqMiBmYWlsZWQgaW4g
KiJdKQotICAgIGFzc2VydCAibG9nIGZyb20gdGVzdDIiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipsb2cgZnJvbSB0ZXN0Mioi
KQorCisKK2RlZiB0ZXN0X2NoYW5nZV9sZXZlbF91bmRvc19oYW5kbGVyX2xldmVsKHRlc3RkaXI6
IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiRW5zdXJlIHRoYXQgJ3NldF9sZXZlbCcgaXMgdW5k
b25lIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHRlc3QgKGhhbmRsZXIpLgorCisgICAgSXNzdWUgIzc1
NjkuIFRlc3RzIHRoZSBoYW5kbGVyIGxldmVsIHNwZWNpZmljYWxseS4KKyAgICAiIiIKKyAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZwor
CisgICAgICAgIGRlZiB0ZXN0MShjYXBsb2cpOgorICAgICAgICAgICAgYXNzZXJ0IGNhcGxvZy5o
YW5kbGVyLmxldmVsID09IDAKKyAgICAgICAgICAgIGNhcGxvZy5zZXRfbGV2ZWwoOTk5OSkKKyAg
ICAgICAgICAgIGNhcGxvZy5zZXRfbGV2ZWwoNDEpCisgICAgICAgICAgICBhc3NlcnQgY2FwbG9n
LmhhbmRsZXIubGV2ZWwgPT0gNDEKKworICAgICAgICBkZWYgdGVzdDIoY2FwbG9nKToKKyAgICAg
ICAgICAgIGFzc2VydCBjYXBsb2cuaGFuZGxlci5sZXZlbCA9PSAwCisKKyAgICAgICAgZGVmIHRl
c3QzKGNhcGxvZyk6CisgICAgICAgICAgICBhc3NlcnQgY2FwbG9nLmhhbmRsZXIubGV2ZWwgPT0g
MAorICAgICAgICAgICAgY2FwbG9nLnNldF9sZXZlbCg0MykKKyAgICAgICAgICAgIGFzc2VydCBj
YXBsb2cuaGFuZGxlci5sZXZlbCA9PSA0MworICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MykK
IAogCiBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChjYXBsb2cpOgpAQCAtNzMsNiArMTA1LDI3IEBA
IGRlZiB0ZXN0X2xvZ19hY2Nlc3MoY2FwbG9nKToKICAgICBhc3NlcnQgImJvbyBhcmciIGluIGNh
cGxvZy50ZXh0CiAKIAorZGVmIHRlc3RfbWVzc2FnZXMoY2FwbG9nKToKKyAgICBjYXBsb2cuc2V0
X2xldmVsKGxvZ2dpbmcuSU5GTykKKyAgICBsb2dnZXIuaW5mbygiYm9vICVzIiwgImFyZyIpCisg
ICAgbG9nZ2VyLmluZm8oImJhciAlc1xuYmF6ICVzIiwgImFyZzEiLCAiYXJnMiIpCisgICAgYXNz
ZXJ0ICJib28gYXJnIiA9PSBjYXBsb2cubWVzc2FnZXNbMF0KKyAgICBhc3NlcnQgImJhciBhcmcx
XG5iYXogYXJnMiIgPT0gY2FwbG9nLm1lc3NhZ2VzWzFdCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0
LmNvdW50KCJcbiIpID4gbGVuKGNhcGxvZy5tZXNzYWdlcykKKyAgICBhc3NlcnQgbGVuKGNhcGxv
Zy50ZXh0LnNwbGl0bGluZXMoKSkgPiBsZW4oY2FwbG9nLm1lc3NhZ2VzKQorCisgICAgdHJ5Ogor
ICAgICAgICByYWlzZSBFeGNlcHRpb24oInRlc3QiKQorICAgIGV4Y2VwdCBFeGNlcHRpb246Cisg
ICAgICAgIGxvZ2dlci5leGNlcHRpb24oIm9vcHMiKQorCisgICAgYXNzZXJ0ICJvb3BzIiBpbiBj
YXBsb2cudGV4dAorICAgIGFzc2VydCAib29wcyIgaW4gY2FwbG9nLm1lc3NhZ2VzWy0xXQorICAg
ICMgVHJhY2ViYWNrcyBhcmUgc3RvcmVkIGluIHRoZSByZWNvcmQgYW5kIG5vdCBhZGRlZCB1bnRp
bCB0aGUgZm9ybWF0dGVyIG9yIGhhbmRsZXIuCisgICAgYXNzZXJ0ICJFeGNlcHRpb24iIGluIGNh
cGxvZy50ZXh0CisgICAgYXNzZXJ0ICJFeGNlcHRpb24iIG5vdCBpbiBjYXBsb2cubWVzc2FnZXNb
LTFdCisKKwogZGVmIHRlc3RfcmVjb3JkX3R1cGxlcyhjYXBsb2cpOgogICAgIGNhcGxvZy5zZXRf
bGV2ZWwobG9nZ2luZy5JTkZPKQogICAgIGxvZ2dlci5pbmZvKCJib28gJXMiLCAiYXJnIikKQEAg
LTgyLDE1ICsxMzUsMTUgQEAgZGVmIHRlc3RfcmVjb3JkX3R1cGxlcyhjYXBsb2cpOgogCiBkZWYg
dGVzdF91bmljb2RlKGNhcGxvZyk6CiAgICAgY2FwbG9nLnNldF9sZXZlbChsb2dnaW5nLklORk8p
Ci0gICAgbG9nZ2VyLmluZm8odSJixasiKQorICAgIGxvZ2dlci5pbmZvKCJixasiKQogICAgIGFz
c2VydCBjYXBsb2cucmVjb3Jkc1swXS5sZXZlbG5hbWUgPT0gIklORk8iCi0gICAgYXNzZXJ0IGNh
cGxvZy5yZWNvcmRzWzBdLm1zZyA9PSB1ImLFqyIKLSAgICBhc3NlcnQgdSJixasiIGluIGNhcGxv
Zy50ZXh0CisgICAgYXNzZXJ0IGNhcGxvZy5yZWNvcmRzWzBdLm1zZyA9PSAiYsWrIgorICAgIGFz
c2VydCAiYsWrIiBpbiBjYXBsb2cudGV4dAogCiAKIGRlZiB0ZXN0X2NsZWFyKGNhcGxvZyk6CiAg
ICAgY2FwbG9nLnNldF9sZXZlbChsb2dnaW5nLklORk8pCi0gICAgbG9nZ2VyLmluZm8odSJixasi
KQorICAgIGxvZ2dlci5pbmZvKCJixasiKQogICAgIGFzc2VydCBsZW4oY2FwbG9nLnJlY29yZHMp
CiAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0CiAgICAgY2FwbG9nLmNsZWFyKCkKQEAgLTExNSw1ICsx
NjgsMTQxIEBAIGRlZiB0ZXN0X2NhcGxvZ19jYXB0dXJlc19mb3JfYWxsX3N0YWdlcyhjYXBsb2cs
IGxvZ2dpbmdfZHVyaW5nX3NldHVwX2FuZF90ZWFyZG93CiAKICAgICBhc3NlcnQgW3gubWVzc2Fn
ZSBmb3IgeCBpbiBjYXBsb2cuZ2V0X3JlY29yZHMoInNldHVwIildID09IFsiYV9zZXR1cF9sb2ci
XQogCi0gICAgIyBUaGlzIHJlYWNoZXJzIGludG8gcHJpdmF0ZSBBUEksIGRvbid0IHVzZSB0aGlz
IHR5cGUgb2YgdGhpbmcgaW4gcmVhbCB0ZXN0cyEKLSAgICBhc3NlcnQgc2V0KGNhcGxvZy5faXRl
bS5jYXRjaF9sb2dfaGFuZGxlcnMua2V5cygpKSA9PSB7InNldHVwIiwgImNhbGwifQorICAgICMg
VGhpcyByZWFjaGVzIGludG8gcHJpdmF0ZSBBUEksIGRvbid0IHVzZSB0aGlzIHR5cGUgb2YgdGhp
bmcgaW4gcmVhbCB0ZXN0cyEKKyAgICBhc3NlcnQgc2V0KGNhcGxvZy5faXRlbS5fc3RvcmVbY2Fw
bG9nX3JlY29yZHNfa2V5XSkgPT0geyJzZXR1cCIsICJjYWxsIn0KKworCitkZWYgdGVzdF9pbmlf
Y29udHJvbHNfZ2xvYmFsX2xvZ19sZXZlbCh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGltcG9ydCBs
b2dnaW5nCisgICAgICAgIGRlZiB0ZXN0X2xvZ19sZXZlbF9vdmVycmlkZShyZXF1ZXN0LCBjYXBs
b2cpOgorICAgICAgICAgICAgcGx1Z2luID0gcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5n
ZXRwbHVnaW4oJ2xvZ2dpbmctcGx1Z2luJykKKyAgICAgICAgICAgIGFzc2VydCBwbHVnaW4ubG9n
X2xldmVsID09IGxvZ2dpbmcuRVJST1IKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCdjYXRjaGxvZycpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiV0FSTklORyBt
ZXNzYWdlIHdvbid0IGJlIHNob3duIikKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRVJST1Ig
bWVzc2FnZSB3aWxsIGJlIHNob3duIikKKyAgICAgICAgICAgIGFzc2VydCAnV0FSTklORycgbm90
IGluIGNhcGxvZy50ZXh0CisgICAgICAgICAgICBhc3NlcnQgJ0VSUk9SJyBpbiBjYXBsb2cudGV4
dAorICAgICIiIgorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAg
ICAgICBbcHl0ZXN0XQorICAgICAgICBsb2dfbGV2ZWw9RVJST1IKKyAgICAiIiIKKyAgICApCisK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgIyBtYWtlIHN1cmUgdGhhdCB0
aGF0IHdlIGdldCBhICcwJyBleGl0IGNvZGUgZm9yIHRoZSB0ZXN0c3VpdGUKKyAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3RfY2FwbG9nX2Nhbl9vdmVycmlkZV9nbG9iYWxf
bG9nX2xldmVsKHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIi
CisgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICAgICAg
ZGVmIHRlc3RfbG9nX2xldmVsX292ZXJyaWRlKHJlcXVlc3QsIGNhcGxvZyk6CisgICAgICAgICAg
ICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignY2F0Y2hsb2cnKQorICAgICAgICAgICAgcGx1
Z2luID0gcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oJ2xvZ2dpbmctcGx1
Z2luJykKKyAgICAgICAgICAgIGFzc2VydCBwbHVnaW4ubG9nX2xldmVsID09IGxvZ2dpbmcuV0FS
TklORworCisgICAgICAgICAgICBsb2dnZXIuaW5mbygiSU5GTyBtZXNzYWdlIHdvbid0IGJlIHNo
b3duIikKKworICAgICAgICAgICAgY2FwbG9nLnNldF9sZXZlbChsb2dnaW5nLklORk8sIGxvZ2dl
ci5uYW1lKQorCisgICAgICAgICAgICB3aXRoIGNhcGxvZy5hdF9sZXZlbChsb2dnaW5nLkRFQlVH
LCBsb2dnZXIubmFtZSk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJERUJVRyBtZXNz
YWdlIHdpbGwgYmUgc2hvd24iKQorCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkRFQlVHIG1l
c3NhZ2Ugd29uJ3QgYmUgc2hvd24iKQorCisgICAgICAgICAgICB3aXRoIGNhcGxvZy5hdF9sZXZl
bChsb2dnaW5nLkNSSVRJQ0FMLCBsb2dnZXIubmFtZSk6CisgICAgICAgICAgICAgICAgbG9nZ2Vy
Lndhcm5pbmcoIldBUk5JTkcgbWVzc2FnZSB3b24ndCBiZSBzaG93biIpCisKKyAgICAgICAgICAg
IGxvZ2dlci5kZWJ1ZygiREVCVUcgbWVzc2FnZSB3b24ndCBiZSBzaG93biIpCisgICAgICAgICAg
ICBsb2dnZXIuaW5mbygiSU5GTyBtZXNzYWdlIHdpbGwgYmUgc2hvd24iKQorCisgICAgICAgICAg
ICBhc3NlcnQgIm1lc3NhZ2Ugd29uJ3QgYmUgc2hvd24iIG5vdCBpbiBjYXBsb2cudGV4dAorICAg
ICIiIgorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAgICBb
cHl0ZXN0XQorICAgICAgICBsb2dfbGV2ZWw9V0FSTklORworICAgICIiIgorICAgICkKKworICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAw
CisKKworZGVmIHRlc3RfY2FwbG9nX2NhcHR1cmVzX2Rlc3BpdGVfZXhjZXB0aW9uKHRlc3RkaXIp
OgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBw
eXRlc3QKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICAgICAgZGVmIHRlc3RfbG9nX2xldmVs
X292ZXJyaWRlKHJlcXVlc3QsIGNhcGxvZyk6CisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5n
LmdldExvZ2dlcignY2F0Y2hsb2cnKQorICAgICAgICAgICAgcGx1Z2luID0gcmVxdWVzdC5jb25m
aWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oJ2xvZ2dpbmctcGx1Z2luJykKKyAgICAgICAgICAg
IGFzc2VydCBwbHVnaW4ubG9nX2xldmVsID09IGxvZ2dpbmcuV0FSTklORworCisgICAgICAgICAg
ICBsb2dnZXIuZXJyb3IoIkVSUk9SIG1lc3NhZ2UgIiArICJ3aWxsIGJlIHNob3duIikKKworICAg
ICAgICAgICAgd2l0aCBjYXBsb2cuYXRfbGV2ZWwobG9nZ2luZy5ERUJVRywgbG9nZ2VyLm5hbWUp
OgorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiREVCVUcgbWVzc2FnZSAiICsgIndvbid0
IGJlIHNob3duIikKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oKQorICAgICIiIgor
ICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAgICBbcHl0ZXN0
XQorICAgICAgICBsb2dfbGV2ZWw9V0FSTklORworICAgICIiIgorICAgICkKKworICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqRVJST1IgbWVzc2FnZSB3aWxsIGJlIHNob3duKiJdKQorICAgIHJlc3VsdC5zdGRvdXQubm9f
Zm5tYXRjaF9saW5lKCIqREVCVUcgbWVzc2FnZSB3b24ndCBiZSBzaG93bioiKQorICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IDEKKworCitkZWYgdGVzdF9sb2dfcmVwb3J0X2NhcHR1cmVzX2FjY29y
ZGluZ190b19jb25maWdfb3B0aW9uX3Vwb25fZmFpbHVyZSh0ZXN0ZGlyKToKKyAgICAiIiJUZXN0
IHRoYXQgdXBvbiBmYWlsdXJlOgorICAgICgxKSBgY2FwbG9nYCBzdWNjZWVkZWQgdG8gY2FwdHVy
ZSB0aGUgREVCVUcgbWVzc2FnZSBhbmQgYXNzZXJ0IG9uIGl0ID0+IE5vIGBFeGNlcHRpb25gIGlz
IHJhaXNlZC4KKyAgICAoMikgVGhlIGBERUJVR2AgbWVzc2FnZSBkb2VzIE5PVCBhcHBlYXIgaW4g
dGhlIGBDYXB0dXJlZCBsb2cgY2FsbGAgcmVwb3J0LgorICAgICgzKSBUaGUgc3Rkb3V0LCBgSU5G
T2AsIGFuZCBgV0FSTklOR2AgbWVzc2FnZXMgRE8gYXBwZWFyIGluIHRoZSB0ZXN0IHJlcG9ydHMg
ZHVlIHRvIGAtLWxvZy1sZXZlbD1JTkZPYC4KKyAgICAiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGltcG9ydCBs
b2dnaW5nCisKKyAgICAgICAgZGVmIGZ1bmN0aW9uX3RoYXRfbG9ncygpOgorICAgICAgICAgICAg
bG9nZ2luZy5kZWJ1ZygnREVCVUcgbG9nICcgKyAnbWVzc2FnZScpCisgICAgICAgICAgICBsb2dn
aW5nLmluZm8oJ0lORk8gbG9nICcgKyAnbWVzc2FnZScpCisgICAgICAgICAgICBsb2dnaW5nLndh
cm5pbmcoJ1dBUk5JTkcgbG9nICcgKyAnbWVzc2FnZScpCisgICAgICAgICAgICBwcmludCgnUHJp
bnQgJyArICdtZXNzYWdlJykKKworICAgICAgICBkZWYgdGVzdF90aGF0X2ZhaWxzKHJlcXVlc3Qs
IGNhcGxvZyk6CisgICAgICAgICAgICBwbHVnaW4gPSByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5h
Z2VyLmdldHBsdWdpbignbG9nZ2luZy1wbHVnaW4nKQorICAgICAgICAgICAgYXNzZXJ0IHBsdWdp
bi5sb2dfbGV2ZWwgPT0gbG9nZ2luZy5JTkZPCisKKyAgICAgICAgICAgIHdpdGggY2FwbG9nLmF0
X2xldmVsKGxvZ2dpbmcuREVCVUcpOgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3RoYXRfbG9n
cygpCisKKyAgICAgICAgICAgIGlmICdERUJVRyBsb2cgJyArICdtZXNzYWdlJyBub3QgaW4gY2Fw
bG9nLnRleHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdjYXBsb2cgZmFpbGVk
IHRvICcgKyAnY2FwdHVyZSBERUJVRycpCisKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAg
ICIiIgorICAgICkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxvZy1sZXZl
bD1JTkZPIikKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKkV4Y2VwdGlvbjog
Y2FwbG9nIGZhaWxlZCB0byBjYXB0dXJlIERFQlVHKiIpCisgICAgcmVzdWx0LnN0ZG91dC5ub19m
bm1hdGNoX2xpbmUoIipERUJVRyBsb2cgbWVzc2FnZSoiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgWyIqUHJpbnQgbWVzc2FnZSoiLCAiKklORk8gbG9nIG1lc3Nh
Z2UqIiwgIipXQVJOSU5HIGxvZyBtZXNzYWdlKiJdCisgICAgKQorICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90ZXN0X2Zv
cm1hdHRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90ZXN0X2Zvcm1hdHRlci5w
eQppbmRleCBjYTJhNDEwNjUzNzYuLmE5MDM4NGE5NTUzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfZm9ybWF0dGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvbG9nZ2luZy90ZXN0X2Zvcm1hdHRlci5weQpAQCAtMSwxMCArMSwxMSBAQAogaW1wb3J0
IGxvZ2dpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKIAotaW1wb3J0IHB5LmlvCitmcm9tIF9w
eXRlc3QuX2lvIGltcG9ydCBUZXJtaW5hbFdyaXRlcgogZnJvbSBfcHl0ZXN0LmxvZ2dpbmcgaW1w
b3J0IENvbG9yZWRMZXZlbEZvcm1hdHRlcgogCiAKLWRlZiB0ZXN0X2NvbG9yZWRsb2dmb3JtYXR0
ZXIoKToKK2RlZiB0ZXN0X2NvbG9yZWRsb2dmb3JtYXR0ZXIoKSAtPiBOb25lOgogICAgIGxvZ2Zt
dCA9ICIlKGZpbGVuYW1lKS0yNXMgJShsaW5lbm8pNGQgJShsZXZlbG5hbWUpLThzICUobWVzc2Fn
ZSlzIgogCiAgICAgcmVjb3JkID0gbG9nZ2luZy5Mb2dSZWNvcmQoCkBAIC0xNCwyNCArMTUsMTM2
IEBAIGRlZiB0ZXN0X2NvbG9yZWRsb2dmb3JtYXR0ZXIoKToKICAgICAgICAgbGluZW5vPTEwLAog
ICAgICAgICBtc2c9IlRlc3QgTWVzc2FnZSIsCiAgICAgICAgIGFyZ3M9KCksCi0gICAgICAgIGV4
Y19pbmZvPUZhbHNlLAorICAgICAgICBleGNfaW5mbz1Ob25lLAogICAgICkKIAotICAgIGNsYXNz
IENvbG9yQ29uZmlnKG9iamVjdCk6Ci0KLSAgICAgICAgY2xhc3Mgb3B0aW9uKG9iamVjdCk6Cisg
ICAgY2xhc3MgQ29sb3JDb25maWc6CisgICAgICAgIGNsYXNzIG9wdGlvbjoKICAgICAgICAgICAg
IHBhc3MKIAotICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoKQorICAgIHR3ID0gVGVybWlu
YWxXcml0ZXIoKQogICAgIHR3Lmhhc21hcmt1cCA9IFRydWUKICAgICBmb3JtYXR0ZXIgPSBDb2xv
cmVkTGV2ZWxGb3JtYXR0ZXIodHcsIGxvZ2ZtdCkKICAgICBvdXRwdXQgPSBmb3JtYXR0ZXIuZm9y
bWF0KHJlY29yZCkKLSAgICBhc3NlcnQgKAotICAgICAgICBvdXRwdXQKLSAgICAgICAgPT0gKCJk
dW1teXBhdGggICAgICAgICAgICAgICAgICAgMTAgIiAiXHgxYlszMm1JTkZPICAgIFx4MWJbMG0g
VGVzdCBNZXNzYWdlIikKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0
aCAgICAgICAgICAgICAgICAgICAxMCBceDFiWzMybUlORk8gICAgXHgxYlswbSBUZXN0IE1lc3Nh
Z2UiCiAgICAgKQogCiAgICAgdHcuaGFzbWFya3VwID0gRmFsc2UKICAgICBmb3JtYXR0ZXIgPSBD
b2xvcmVkTGV2ZWxGb3JtYXR0ZXIodHcsIGxvZ2ZtdCkKICAgICBvdXRwdXQgPSBmb3JtYXR0ZXIu
Zm9ybWF0KHJlY29yZCkKLSAgICBhc3NlcnQgb3V0cHV0ID09ICgiZHVtbXlwYXRoICAgICAgICAg
ICAgICAgICAgIDEwICIgIklORk8gICAgIFRlc3QgTWVzc2FnZSIpCisgICAgYXNzZXJ0IG91dHB1
dCA9PSAoImR1bW15cGF0aCAgICAgICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3Nh
Z2UiKQorCisKK2RlZiB0ZXN0X211bHRpbGluZV9tZXNzYWdlKCkgLT4gTm9uZToKKyAgICBmcm9t
IF9weXRlc3QubG9nZ2luZyBpbXBvcnQgUGVyY2VudFN0eWxlTXVsdGlsaW5lCisKKyAgICBsb2dm
bXQgPSAiJShmaWxlbmFtZSktMjVzICUobGluZW5vKTRkICUobGV2ZWxuYW1lKS04cyAlKG1lc3Nh
Z2UpcyIKKworICAgIHJlY29yZCA9IGxvZ2dpbmcuTG9nUmVjb3JkKAorICAgICAgICBuYW1lPSJk
dW1teSIsCisgICAgICAgIGxldmVsPWxvZ2dpbmcuSU5GTywKKyAgICAgICAgcGF0aG5hbWU9ImR1
bW15cGF0aCIsCisgICAgICAgIGxpbmVubz0xMCwKKyAgICAgICAgbXNnPSJUZXN0IE1lc3NhZ2Ug
bGluZTFcbmxpbmUyIiwKKyAgICAgICAgYXJncz0oKSwKKyAgICAgICAgZXhjX2luZm89Tm9uZSwK
KyAgICApICAjIHR5cGU6IEFueQorICAgICMgdGhpcyBpcyBjYWxsZWQgYnkgbG9nZ2luZy5Gb3Jt
YXR0ZXIuZm9ybWF0CisgICAgcmVjb3JkLm1lc3NhZ2UgPSByZWNvcmQuZ2V0TWVzc2FnZSgpCisK
KyAgICBhaV9vbl9zdHlsZSA9IFBlcmNlbnRTdHlsZU11bHRpbGluZShsb2dmbXQsIFRydWUpCisg
ICAgb3V0cHV0ID0gYWlfb25fc3R5bGUuZm9ybWF0KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0
ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAgICAgICAgICAgICAgICAgICAxMCBJTkZPICAgICBU
ZXN0IE1lc3NhZ2UgbGluZTFcbiIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lMiIKKyAgICApCisKKyAgICBhaV9vZmZfc3R5bGUgPSBQZXJjZW50
U3R5bGVNdWx0aWxpbmUobG9nZm10LCBGYWxzZSkKKyAgICBvdXRwdXQgPSBhaV9vZmZfc3R5bGUu
Zm9ybWF0KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0
aCAgICAgICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbmxpbmUy
IgorICAgICkKKworICAgIGFpX25vbmVfc3R5bGUgPSBQZXJjZW50U3R5bGVNdWx0aWxpbmUobG9n
Zm10LCBOb25lKQorICAgIG91dHB1dCA9IGFpX25vbmVfc3R5bGUuZm9ybWF0KHJlY29yZCkKKyAg
ICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAgICAgICAgICAgICAgICAg
ICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbmxpbmUyIgorICAgICkKKworICAgIHJl
Y29yZC5hdXRvX2luZGVudCA9IEZhbHNlCisgICAgb3V0cHV0ID0gYWlfb25fc3R5bGUuZm9ybWF0
KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAgICAg
ICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbmxpbmUyIgorICAg
ICkKKworICAgIHJlY29yZC5hdXRvX2luZGVudCA9IFRydWUKKyAgICBvdXRwdXQgPSBhaV9vZmZf
c3R5bGUuZm9ybWF0KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1
bW15cGF0aCAgICAgICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFc
biIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
MiIKKyAgICApCisKKyAgICByZWNvcmQuYXV0b19pbmRlbnQgPSAiRmFsc2UiCisgICAgb3V0cHV0
ID0gYWlfb25fc3R5bGUuZm9ybWF0KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAg
ICAgICAgImR1bW15cGF0aCAgICAgICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3Nh
Z2UgbGluZTFcbmxpbmUyIgorICAgICkKKworICAgIHJlY29yZC5hdXRvX2luZGVudCA9ICJUcnVl
IgorICAgIG91dHB1dCA9IGFpX29mZl9zdHlsZS5mb3JtYXQocmVjb3JkKQorICAgIGFzc2VydCBv
dXRwdXQgPT0gKAorICAgICAgICAiZHVtbXlwYXRoICAgICAgICAgICAgICAgICAgIDEwIElORk8g
ICAgIFRlc3QgTWVzc2FnZSBsaW5lMVxuIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmUyIgorICAgICkKKworICAgICMgYmFkIHN0cmluZyB2YWx1
ZXMgZGVmYXVsdCB0byBGYWxzZQorICAgIHJlY29yZC5hdXRvX2luZGVudCA9ICJqdW5rIgorICAg
IG91dHB1dCA9IGFpX29mZl9zdHlsZS5mb3JtYXQocmVjb3JkKQorICAgIGFzc2VydCBvdXRwdXQg
PT0gKAorICAgICAgICAiZHVtbXlwYXRoICAgICAgICAgICAgICAgICAgIDEwIElORk8gICAgIFRl
c3QgTWVzc2FnZSBsaW5lMVxubGluZTIiCisgICAgKQorCisgICAgIyBhbnl0aGluZyBvdGhlciB0
aGFuIHN0cmluZyBvciBpbnQgd2lsbCBkZWZhdWx0IHRvIEZhbHNlCisgICAgcmVjb3JkLmF1dG9f
aW5kZW50ID0gZGljdCgpCisgICAgb3V0cHV0ID0gYWlfb2ZmX3N0eWxlLmZvcm1hdChyZWNvcmQp
CisgICAgYXNzZXJ0IG91dHB1dCA9PSAoCisgICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAg
ICAgICAgMTAgSU5GTyAgICAgVGVzdCBNZXNzYWdlIGxpbmUxXG5saW5lMiIKKyAgICApCisKKyAg
ICByZWNvcmQuYXV0b19pbmRlbnQgPSAiNSIKKyAgICBvdXRwdXQgPSBhaV9vZmZfc3R5bGUuZm9y
bWF0KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAg
ICAgICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbiAgICAgbGlu
ZTIiCisgICAgKQorCisgICAgcmVjb3JkLmF1dG9faW5kZW50ID0gNQorICAgIG91dHB1dCA9IGFp
X29mZl9zdHlsZS5mb3JtYXQocmVjb3JkKQorICAgIGFzc2VydCBvdXRwdXQgPT0gKAorICAgICAg
ICAiZHVtbXlwYXRoICAgICAgICAgICAgICAgICAgIDEwIElORk8gICAgIFRlc3QgTWVzc2FnZSBs
aW5lMVxuICAgICBsaW5lMiIKKyAgICApCisKKworZGVmIHRlc3RfY29sb3JlZF9zaG9ydF9sZXZl
bCgpIC0+IE5vbmU6CisgICAgbG9nZm10ID0gIiUobGV2ZWxuYW1lKS4xcyAlKG1lc3NhZ2UpcyIK
KworICAgIHJlY29yZCA9IGxvZ2dpbmcuTG9nUmVjb3JkKAorICAgICAgICBuYW1lPSJkdW1teSIs
CisgICAgICAgIGxldmVsPWxvZ2dpbmcuSU5GTywKKyAgICAgICAgcGF0aG5hbWU9ImR1bW15cGF0
aCIsCisgICAgICAgIGxpbmVubz0xMCwKKyAgICAgICAgbXNnPSJUZXN0IE1lc3NhZ2UiLAorICAg
ICAgICBhcmdzPSgpLAorICAgICAgICBleGNfaW5mbz1Ob25lLAorICAgICkKKworICAgIGNsYXNz
IENvbG9yQ29uZmlnOgorICAgICAgICBjbGFzcyBvcHRpb246CisgICAgICAgICAgICBwYXNzCisK
KyAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKCkKKyAgICB0dy5oYXNtYXJrdXAgPSBUcnVlCisgICAg
Zm9ybWF0dGVyID0gQ29sb3JlZExldmVsRm9ybWF0dGVyKHR3LCBsb2dmbXQpCisgICAgb3V0cHV0
ID0gZm9ybWF0dGVyLmZvcm1hdChyZWNvcmQpCisgICAgIyB0aGUgSSAob2YgSU5GTykgaXMgY29s
b3JlZAorICAgIGFzc2VydCBvdXRwdXQgPT0gKCJceDFiWzMybUlceDFiWzBtIFRlc3QgTWVzc2Fn
ZSIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9yZXBvcnRp
bmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9yZXBvcnRpbmcucHkKaW5k
ZXggOTFlZDJlNDc1OGNiLi43NTkwYjU3NjI4OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvbG9nZ2luZy90ZXN0X3JlcG9ydGluZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2xvZ2dpbmcvdGVzdF9yZXBvcnRpbmcucHkKQEAgLTEsMTAgKzEsMTMgQEAKLSMgLSotIGNvZGlu
ZzogdXRmLTggLSotCi1pbXBvcnQgcmUKK2ltcG9ydCBpbwogaW1wb3J0IG9zCi0KLWltcG9ydCBz
aXgKK2ltcG9ydCByZQorZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKIAogaW1wb3J0IHB5dGVzdAor
ZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IENhcHR1cmVNYW5hZ2VyCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0
ZGlyCitmcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0ZXIKIAogCiBk
ZWYgdGVzdF9ub3RoaW5nX2xvZ2dlZCh0ZXN0ZGlyKToKQEAgLTUzLDYgKzU2LDcgQEAgZGVmIHRl
c3Rfcm9vdF9sb2dnZXJfYWZmZWN0ZWQodGVzdGRpcik6CiAgICAgICAgICIiIgogICAgICAgICBp
bXBvcnQgbG9nZ2luZwogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisKICAg
ICAgICAgZGVmIHRlc3RfZm9vKCk6CiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnaW5mbyB0ZXh0
ICcgKyAnZ29pbmcgdG8gbG9nZ2VyJykKICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCd3YXJu
aW5nIHRleHQgJyArICdnb2luZyB0byBsb2dnZXInKQpAQCAtNjUsMTUgKzY5LDE0IEBAIGRlZiB0
ZXN0X3Jvb3RfbG9nZ2VyX2FmZmVjdGVkKHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItLWxvZy1sZXZlbD1FUlJPUiIsICItLWxvZy1maWxlPXB5dGVzdC5sb2ciKQog
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKIAotICAgICMgdGhlIGNhcHR1cmUgbG9nIGNhbGxz
IGluIHRoZSBzdGRvdXQgc2VjdGlvbiBvbmx5IGNvbnRhaW4gdGhlCi0gICAgIyBsb2dnZXIuZXJy
b3IgbXNnLCBiZWNhdXNlIC0tbG9nLWxldmVsPUVSUk9SCisgICAgIyBUaGUgY2FwdHVyZSBsb2cg
Y2FsbHMgaW4gdGhlIHN0ZG91dCBzZWN0aW9uIG9ubHkgY29udGFpbiB0aGUKKyAgICAjIGxvZ2dl
ci5lcnJvciBtc2csIGJlY2F1c2Ugb2YgLS1sb2ctbGV2ZWw9RVJST1IuCiAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmVycm9yIHRleHQgZ29pbmcgdG8gbG9nZ2VyKiJdKQotICAg
IHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24pOgotICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqd2FybmluZyB0ZXh0IGdvaW5nIHRvIGxvZ2dlcioi
XSkKLSAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKToKLSAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmluZm8gdGV4dCBnb2luZyB0byBsb2dn
ZXIqIl0pCisgICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIGFzc2VydCAid2Fy
bmluZyB0ZXh0IGdvaW5nIHRvIGxvZ2dlciIgbm90IGluIHN0ZG91dAorICAgIGFzc2VydCAiaW5m
byB0ZXh0IGdvaW5nIHRvIGxvZ2dlciIgbm90IGluIHN0ZG91dAogCi0gICAgIyB0aGUgbG9nIGZp
bGUgc2hvdWxkIGNvbnRhaW4gdGhlIHdhcm5pbmcgYW5kIHRoZSBlcnJvciBsb2cgbWVzc2FnZXMg
YW5kCisgICAgIyBUaGUgbG9nIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIHdhcm5pbmcgYW5kIHRo
ZSBlcnJvciBsb2cgbWVzc2FnZXMgYW5kCiAgICAgIyBub3QgdGhlIGluZm8gb25lLCBiZWNhdXNl
IHRoZSBkZWZhdWx0IGxldmVsIG9mIHRoZSByb290IGxvZ2dlciBpcwogICAgICMgV0FSTklORy4K
ICAgICBhc3NlcnQgb3MucGF0aC5pc2ZpbGUobG9nX2ZpbGUpCkBAIC0xMTEsNyArMTE0LDcgQEAg
ZGVmIHRlc3RfbG9nX2NsaV9sZXZlbF9sb2dfbGV2ZWxfaW50ZXJhY3Rpb24odGVzdGRpcik6CiAg
ICAgICAgICAgICAiPSogMSBmYWlsZWQgaW4gKj0iLAogICAgICAgICBdCiAgICAgKQotICAgIGFz
c2VydCAiREVCVUciIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91
dC5ub19yZV9tYXRjaF9saW5lKCJERUJVRyIpCiAKIAogZGVmIHRlc3Rfc2V0dXBfbG9nZ2luZyh0
ZXN0ZGlyKToKQEAgLTE2OCw2MCArMTcxLDYgQEAgZGVmIHRlc3RfdGVhcmRvd25fbG9nZ2luZyh0
ZXN0ZGlyKToKICAgICApCiAKIAotZGVmIHRlc3RfZGlzYWJsZV9sb2dfY2FwdHVyaW5nKHRlc3Rk
aXIpOgotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9y
dCBzeXMKLSAgICAgICAgaW1wb3J0IGxvZ2dpbmcKLQotICAgICAgICBsb2dnZXIgPSBsb2dnaW5n
LmdldExvZ2dlcihfX25hbWVfXykKLQotICAgICAgICBkZWYgdGVzdF9mb28oKToKLSAgICAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoJ3RleHQgZ29pbmcgdG8gc3Rkb3V0JykKLSAgICAgICAgICAg
IGxvZ2dlci53YXJuaW5nKCdjYXRjaCBtZSBpZiB5b3UgY2FuIScpCi0gICAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCd0ZXh0IGdvaW5nIHRvIHN0ZGVycicpCi0gICAgICAgICAgICBhc3NlcnQg
RmFsc2UKLSAgICAgICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLW5vLXByaW50LWxvZ3MiKQotICAgIHByaW50KHJlc3VsdC5zdGRvdXQpCi0gICAgYXNzZXJ0
IHJlc3VsdC5yZXQgPT0gMQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiotIENh
cHR1cmVkIHN0ZG91dCBjYWxsIC0qIiwgInRleHQgZ29pbmcgdG8gc3Rkb3V0Il0pCi0gICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKi0gQ2FwdHVyZWQgc3RkZXJyIGNhbGwgLSoiLCAi
dGV4dCBnb2luZyB0byBzdGRlcnIiXSkKLSAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZh
aWwuRXhjZXB0aW9uKToKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKi0g
Q2FwdHVyZWQgKmxvZyBjYWxsIC0qIl0pCi0KLQotZGVmIHRlc3RfZGlzYWJsZV9sb2dfY2FwdHVy
aW5nX2luaSh0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VpbmkoCi0gICAgICAgICIiIgotICAg
ICAgICBbcHl0ZXN0XQotICAgICAgICBsb2dfcHJpbnQ9RmFsc2UKLSAgICAgICAgIiIiCi0gICAg
KQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBz
eXMKLSAgICAgICAgaW1wb3J0IGxvZ2dpbmcKLQotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKLQotICAgICAgICBkZWYgdGVzdF9mb28oKToKLSAgICAgICAgICAg
IHN5cy5zdGRvdXQud3JpdGUoJ3RleHQgZ29pbmcgdG8gc3Rkb3V0JykKLSAgICAgICAgICAgIGxv
Z2dlci53YXJuaW5nKCdjYXRjaCBtZSBpZiB5b3UgY2FuIScpCi0gICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCd0ZXh0IGdvaW5nIHRvIHN0ZGVycicpCi0gICAgICAgICAgICBhc3NlcnQgRmFs
c2UKLSAgICAgICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
LSAgICBwcmludChyZXN1bHQuc3Rkb3V0KQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKLSAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqLSBDYXB0dXJlZCBzdGRvdXQgY2FsbCAt
KiIsICJ0ZXh0IGdvaW5nIHRvIHN0ZG91dCJdKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiotIENhcHR1cmVkIHN0ZGVyciBjYWxsIC0qIiwgInRleHQgZ29pbmcgdG8gc3RkZXJy
Il0pCi0gICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6Ci0gICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiotIENhcHR1cmVkICpsb2cgY2FsbCAt
KiJdKQotCi0KIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZW5hYmxlZCIsIFtUcnVlLCBGYWxz
ZV0pCiBkZWYgdGVzdF9sb2dfY2xpX2VuYWJsZWRfZGlzYWJsZWQodGVzdGRpciwgZW5hYmxlZCk6
CiAgICAgbXNnID0gImNyaXRpY2FsIG1lc3NhZ2UgbG9nZ2VkIGJ5IHRlc3QiCkBAIC0yNDcsNyAr
MTk2LDcgQEAgZGVmIHRlc3RfbG9nX2NsaV9lbmFibGVkX2Rpc2FibGVkKHRlc3RkaXIsIGVuYWJs
ZWQpOgogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICJ0ZXN0X2xvZ19jbGlfZW5hYmxl
ZF9kaXNhYmxlZC5weTo6dGVzdF9sb2dfY2xpICIsCiAgICAgICAgICAgICAgICAgIiotLSBsaXZl
IGxvZyBjYWxsIC0tKiIsCi0gICAgICAgICAgICAgICAgInRlc3RfbG9nX2NsaV9lbmFibGVkX2Rp
c2FibGVkLnB5KiBDUklUSUNBTCBjcml0aWNhbCBtZXNzYWdlIGxvZ2dlZCBieSB0ZXN0IiwKKyAg
ICAgICAgICAgICAgICAiQ1JJVElDQUwgKnRlc3RfbG9nX2NsaV9lbmFibGVkX2Rpc2FibGVkLnB5
KiBjcml0aWNhbCBtZXNzYWdlIGxvZ2dlZCBieSB0ZXN0IiwKICAgICAgICAgICAgICAgICAiUEFT
U0VEKiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKQEAgLTI4MSwxMCArMjMwLDEwIEBAIGRl
ZiB0ZXN0X2xvZ19jbGlfZGVmYXVsdF9sZXZlbCh0ZXN0ZGlyKToKICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKICAgICAgICAgICAgICJ0ZXN0X2xvZ19jbGlfZGVm
YXVsdF9sZXZlbC5weTo6dGVzdF9sb2dfY2xpICIsCi0gICAgICAgICAgICAidGVzdF9sb2dfY2xp
X2RlZmF1bHRfbGV2ZWwucHkqV0FSTklORyBtZXNzYWdlIHdpbGwgYmUgc2hvd24qIiwKKyAgICAg
ICAgICAgICJXQVJOSU5HKnRlc3RfbG9nX2NsaV9kZWZhdWx0X2xldmVsLnB5KiBtZXNzYWdlIHdp
bGwgYmUgc2hvd24qIiwKICAgICAgICAgXQogICAgICkKLSAgICBhc3NlcnQgIklORk8gbWVzc2Fn
ZSB3b24ndCBiZSBzaG93biIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQu
c3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKklORk8gbWVzc2FnZSB3b24ndCBiZSBzaG93bioiKQog
ICAgICMgbWFrZSBzdXJlIHRoYXQgdGhhdCB3ZSBnZXQgYSAnMCcgZXhpdCBjb2RlIGZvciB0aGUg
dGVzdHN1aXRlCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCkBAIC01MjAsMTYgKzQ2OSwy
MiBAQCBkZWYgdGVzdF9zZWN0aW9uc19zaW5nbGVfbmV3X2xpbmVfYWZ0ZXJfdGVzdF9vdXRjb21l
KHRlc3RkaXIsIHJlcXVlc3QpOgogICAgICAgICAgICAgIj0qIDEgcGFzc2VkIGluICo9IiwKICAg
ICAgICAgXQogICAgICkKLSAgICBhc3NlcnQgcmUuc2VhcmNoKAotICAgICAgICByIiguKylsaXZl
IGxvZyB0ZWFyZG93biguKylcbiguKylXQVJOSU5HKC4rKVxuKC4rKVdBUk5JTkcoLispIiwKLSAg
ICAgICAgcmVzdWx0LnN0ZG91dC5zdHIoKSwKLSAgICAgICAgcmUuTVVMVElMSU5FLAotICAgICkg
aXMgbm90IE5vbmUKLSAgICBhc3NlcnQgcmUuc2VhcmNoKAotICAgICAgICByIiguKylsaXZlIGxv
ZyBmaW5pc2goLispXG4oLispV0FSTklORyguKylcbiguKylXQVJOSU5HKC4rKSIsCi0gICAgICAg
IHJlc3VsdC5zdGRvdXQuc3RyKCksCi0gICAgICAgIHJlLk1VTFRJTElORSwKLSAgICApIGlzIG5v
dCBOb25lCisgICAgYXNzZXJ0ICgKKyAgICAgICAgcmUuc2VhcmNoKAorICAgICAgICAgICAgciIo
LispbGl2ZSBsb2cgdGVhcmRvd24oLispXG5XQVJOSU5HKC4rKVxuV0FSTklORyguKykiLAorICAg
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5zdHIoKSwKKyAgICAgICAgICAgIHJlLk1VTFRJTElORSwK
KyAgICAgICAgKQorICAgICAgICBpcyBub3QgTm9uZQorICAgICkKKyAgICBhc3NlcnQgKAorICAg
ICAgICByZS5zZWFyY2goCisgICAgICAgICAgICByIiguKylsaXZlIGxvZyBmaW5pc2goLispXG5X
QVJOSU5HKC4rKVxuV0FSTklORyguKykiLAorICAgICAgICAgICAgcmVzdWx0LnN0ZG91dC5zdHIo
KSwKKyAgICAgICAgICAgIHJlLk1VTFRJTElORSwKKyAgICAgICAgKQorICAgICAgICBpcyBub3Qg
Tm9uZQorICAgICkKIAogCiBkZWYgdGVzdF9sb2dfY2xpX2xldmVsKHRlc3RkaXIpOgpAQCAtNTU4
LDExICs1MTMsMTEgQEAgZGVmIHRlc3RfbG9nX2NsaV9sZXZlbCh0ZXN0ZGlyKToKICAgICAjIGZu
bWF0Y2hfbGluZXMgZG9lcyBhbiBhc3NlcnRpb24gaW50ZXJuYWxseQogICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwotICAgICAgICAgICAgInRlc3RfbG9nX2NsaV9s
ZXZlbC5weSpUaGlzIGxvZyBtZXNzYWdlIHdpbGwgYmUgc2hvd24iLAorICAgICAgICAgICAgIip0
ZXN0X2xvZ19jbGlfbGV2ZWwucHkqVGhpcyBsb2cgbWVzc2FnZSB3aWxsIGJlIHNob3duIiwKICAg
ICAgICAgICAgICJQQVNTRUQiLCAgIyAnUEFTU0VEJyBvbiBpdHMgb3duIGxpbmUgYmVjYXVzZSB0
aGUgbG9nIG1lc3NhZ2UgcHJpbnRzIGEgbmV3IGxpbmUKICAgICAgICAgXQogICAgICkKLSAgICBh
c3NlcnQgIlRoaXMgbG9nIG1lc3NhZ2Ugd29uJ3QgYmUgc2hvd24iIG5vdCBpbiByZXN1bHQuc3Rk
b3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipUaGlzIGxvZyBt
ZXNzYWdlIHdvbid0IGJlIHNob3duKiIpCiAKICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoYXQgd2Ug
Z2V0IGEgJzAnIGV4aXQgY29kZSBmb3IgdGhlIHRlc3RzdWl0ZQogICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDAKQEAgLTU3MiwxMSArNTI3LDExIEBAIGRlZiB0ZXN0X2xvZ19jbGlfbGV2ZWwodGVz
dGRpcik6CiAgICAgIyBmbm1hdGNoX2xpbmVzIGRvZXMgYW4gYXNzZXJ0aW9uIGludGVybmFsbHkK
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKLSAgICAgICAgICAg
ICJ0ZXN0X2xvZ19jbGlfbGV2ZWwucHkqIFRoaXMgbG9nIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biIs
CisgICAgICAgICAgICAiKnRlc3RfbG9nX2NsaV9sZXZlbC5weSogVGhpcyBsb2cgbWVzc2FnZSB3
aWxsIGJlIHNob3duIiwKICAgICAgICAgICAgICJQQVNTRUQiLCAgIyAnUEFTU0VEJyBvbiBpdHMg
b3duIGxpbmUgYmVjYXVzZSB0aGUgbG9nIG1lc3NhZ2UgcHJpbnRzIGEgbmV3IGxpbmUKICAgICAg
ICAgXQogICAgICkKLSAgICBhc3NlcnQgIlRoaXMgbG9nIG1lc3NhZ2Ugd29uJ3QgYmUgc2hvd24i
IG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNo
X2xpbmUoIipUaGlzIGxvZyBtZXNzYWdlIHdvbid0IGJlIHNob3duKiIpCiAKICAgICAjIG1ha2Ug
c3VyZSB0aGF0IHRoYXQgd2UgZ2V0IGEgJzAnIGV4aXQgY29kZSBmb3IgdGhlIHRlc3RzdWl0ZQog
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKQEAgLTYwOCwxMSArNTYzLDExIEBAIGRlZiB0ZXN0
X2xvZ19jbGlfaW5pX2xldmVsKHRlc3RkaXIpOgogICAgICMgZm5tYXRjaF9saW5lcyBkb2VzIGFu
IGFzc2VydGlvbiBpbnRlcm5hbGx5CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAog
ICAgICAgICBbCi0gICAgICAgICAgICAidGVzdF9sb2dfY2xpX2luaV9sZXZlbC5weSogVGhpcyBs
b2cgbWVzc2FnZSB3aWxsIGJlIHNob3duIiwKKyAgICAgICAgICAgICIqdGVzdF9sb2dfY2xpX2lu
aV9sZXZlbC5weSogVGhpcyBsb2cgbWVzc2FnZSB3aWxsIGJlIHNob3duIiwKICAgICAgICAgICAg
ICJQQVNTRUQiLCAgIyAnUEFTU0VEJyBvbiBpdHMgb3duIGxpbmUgYmVjYXVzZSB0aGUgbG9nIG1l
c3NhZ2UgcHJpbnRzIGEgbmV3IGxpbmUKICAgICAgICAgXQogICAgICkKLSAgICBhc3NlcnQgIlRo
aXMgbG9nIG1lc3NhZ2Ugd29uJ3QgYmUgc2hvd24iIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigp
CisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipUaGlzIGxvZyBtZXNzYWdlIHdv
bid0IGJlIHNob3duKiIpCiAKICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoYXQgd2UgZ2V0IGEgJzAn
IGV4aXQgY29kZSBmb3IgdGhlIHRlc3RzdWl0ZQogICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAK
QEAgLTYyMiwxMyArNTc3LDEyIEBAIGRlZiB0ZXN0X2xvZ19jbGlfaW5pX2xldmVsKHRlc3RkaXIp
OgogICAgICJjbGlfYXJncyIsCiAgICAgWyIiLCAiLS1sb2ctbGV2ZWw9V0FSTklORyIsICItLWxv
Zy1maWxlLWxldmVsPVdBUk5JTkciLCAiLS1sb2ctY2xpLWxldmVsPVdBUk5JTkciXSwKICkKLWRl
ZiB0ZXN0X2xvZ19jbGlfYXV0b19lbmFibGUodGVzdGRpciwgcmVxdWVzdCwgY2xpX2FyZ3MpOgor
ZGVmIHRlc3RfbG9nX2NsaV9hdXRvX2VuYWJsZSh0ZXN0ZGlyLCBjbGlfYXJncyk6CiAgICAgIiIi
Q2hlY2sgdGhhdCBsaXZlIGxvZ3MgYXJlIGVuYWJsZWQgaWYgLS1sb2ctbGV2ZWwgb3IgLS1sb2ct
Y2xpLWxldmVsIGlzIHBhc3NlZCBvbiB0aGUgQ0xJLgogICAgIEl0IHNob3VsZCBub3QgYmUgYXV0
byBlbmFibGVkIGlmIHRoZSBzYW1lIGNvbmZpZ3MgYXJlIHNldCBvbiB0aGUgSU5JIGZpbGUuCiAg
ICAgIiIiCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKLSAgICAgICAgaW1w
b3J0IHB5dGVzdAogICAgICAgICBpbXBvcnQgbG9nZ2luZwogCiAgICAgICAgIGRlZiB0ZXN0X2xv
Z18xKCk6CkBAIC02NDYsNiArNjAwLDcgQEAgZGVmIHRlc3RfbG9nX2NsaV9hdXRvX2VuYWJsZSh0
ZXN0ZGlyLCByZXF1ZXN0LCBjbGlfYXJncyk6CiAgICAgKQogCiAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoY2xpX2FyZ3MpCisgICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dC5zdHIoKQog
ICAgIGlmIGNsaV9hcmdzID09ICItLWxvZy1jbGktbGV2ZWw9V0FSTklORyI6CiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKQEAgLTY1NiwxMyArNjEx
LDEzIEBAIGRlZiB0ZXN0X2xvZ19jbGlfYXV0b19lbmFibGUodGVzdGRpciwgcmVxdWVzdCwgY2xp
X2FyZ3MpOgogICAgICAgICAgICAgICAgICI9KiAxIHBhc3NlZCBpbiAqPSIsCiAgICAgICAgICAg
ICBdCiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0ICJJTkZPIiBub3QgaW4gcmVzdWx0LnN0ZG91
dC5zdHIoKQorICAgICAgICBhc3NlcnQgIklORk8iIG5vdCBpbiBzdGRvdXQKICAgICBlbHNlOgog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbIip0ZXN0
X2xvZ19jbGlfYXV0b19lbmFibGUqMTAwJSoiLCAiPSogMSBwYXNzZWQgaW4gKj0iXQogICAgICAg
ICApCi0gICAgICAgIGFzc2VydCAiSU5GTyIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKLSAg
ICAgICAgYXNzZXJ0ICJXQVJOSU5HIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAg
ICBhc3NlcnQgIklORk8iIG5vdCBpbiBzdGRvdXQKKyAgICAgICAgYXNzZXJ0ICJXQVJOSU5HIiBu
b3QgaW4gc3Rkb3V0CiAKIAogZGVmIHRlc3RfbG9nX2ZpbGVfY2xpKHRlc3RkaXIpOgpAQCAtNzQw
LDcgKzY5NSw3IEBAIGRlZiB0ZXN0X2xvZ19sZXZlbF9ub3RfY2hhbmdlZF9ieV9kZWZhdWx0KHRl
c3RkaXIpOgogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXMiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKiAxIHBhc3NlZCBpbiAqIikK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEgcGFzc2VkIGluICoiXSkKIAog
CiBkZWYgdGVzdF9sb2dfZmlsZV9pbmkodGVzdGRpcik6CkBAIC04MjEsOCArNzc2LDQzIEBAIGRl
ZiB0ZXN0X2xvZ19maWxlX2luaV9sZXZlbCh0ZXN0ZGlyKToKICAgICAgICAgYXNzZXJ0ICJUaGlz
IGxvZyBtZXNzYWdlIHdvbid0IGJlIHNob3duIiBub3QgaW4gY29udGVudHMKIAogCitkZWYgdGVz
dF9sb2dfZmlsZV91bmljb2RlKHRlc3RkaXIpOgorICAgIGxvZ19maWxlID0gdGVzdGRpci50bXBk
aXIuam9pbigicHl0ZXN0LmxvZyIpLnN0cnBhdGgKKworICAgIHRlc3RkaXIubWFrZWluaSgKKyAg
ICAgICAgIiIiCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGxvZ19maWxlPXt9CisgICAgICAg
IGxvZ19maWxlX2xldmVsID0gSU5GTworICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAg
bG9nX2ZpbGUKKyAgICAgICAgKQorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICIiIlwKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICBkZWYgdGVzdF9sb2df
ZmlsZSgpOgorICAgICAgICAgICAgbG9nZ2luZy5nZXRMb2dnZXIoJ2NhdGNobG9nJykuaW5mbygi
Tm9ybWFsIG1lc3NhZ2UiKQorICAgICAgICAgICAgbG9nZ2luZy5nZXRMb2dnZXIoJ2NhdGNobG9n
JykuaW5mbygi4pScIikKKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdjYXRjaGxvZycp
LmluZm8oIkFub3RoZXIgbm9ybWFsIG1lc3NhZ2UiKQorICAgICAgICAiIiIKKyAgICApCisKKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisKKyAgICAjIG1ha2Ugc3VyZSB0aGF0IHRo
YXQgd2UgZ2V0IGEgJzAnIGV4aXQgY29kZSBmb3IgdGhlIHRlc3RzdWl0ZQorICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IDAKKyAgICBhc3NlcnQgb3MucGF0aC5pc2ZpbGUobG9nX2ZpbGUpCisgICAg
d2l0aCBvcGVuKGxvZ19maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyByZmg6CisgICAgICAgIGNv
bnRlbnRzID0gcmZoLnJlYWQoKQorICAgICAgICBhc3NlcnQgIk5vcm1hbCBtZXNzYWdlIiBpbiBj
b250ZW50cworICAgICAgICBhc3NlcnQgIuKUnCIgaW4gY29udGVudHMKKyAgICAgICAgYXNzZXJ0
ICJBbm90aGVyIG5vcm1hbCBtZXNzYWdlIiBpbiBjb250ZW50cworCisKIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgiaGFzX2NhcHR1cmVfbWFuYWdlciIsIFtUcnVlLCBGYWxzZV0pCi1kZWYgdGVz
dF9saXZlX2xvZ2dpbmdfc3VzcGVuZHNfY2FwdHVyZShoYXNfY2FwdHVyZV9tYW5hZ2VyLCByZXF1
ZXN0KToKK2RlZiB0ZXN0X2xpdmVfbG9nZ2luZ19zdXNwZW5kc19jYXB0dXJlKGhhc19jYXB0dXJl
X21hbmFnZXI6IGJvb2wsIHJlcXVlc3QpIC0+IE5vbmU6CiAgICAgIiIiVGVzdCB0aGF0IGNhcHR1
cmUgbWFuYWdlciBpcyBzdXNwZW5kZWQgd2hlbiB3ZSBlbWl0dGluZyBtZXNzYWdlcyBmb3IgbGl2
ZSBsb2dnaW5nLgogCiAgICAgVGhpcyB0ZXN0cyB0aGUgaW1wbGVtZW50YXRpb24gY2FsbHMgaW5z
dGVhZCBvZiBiZWhhdmlvciBiZWNhdXNlIGl0IGlzIGRpZmZpY3VsdC9pbXBvc3NpYmxlIHRvIGRv
IGl0IHVzaW5nCkBAIC04MzIsMzAgKzgyMiwyNyBAQCBkZWYgdGVzdF9saXZlX2xvZ2dpbmdfc3Vz
cGVuZHNfY2FwdHVyZShoYXNfY2FwdHVyZV9tYW5hZ2VyLCByZXF1ZXN0KToKICAgICBpcyBpbnN0
YWxsZWQuCiAgICAgIiIiCiAgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICBpbXBvcnQgY29udGV4dGxp
YgogICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCi0gICAgZnJvbSBfcHl0ZXN0LmNh
cHR1cmUgaW1wb3J0IENhcHR1cmVNYW5hZ2VyCiAgICAgZnJvbSBfcHl0ZXN0LmxvZ2dpbmcgaW1w
b3J0IF9MaXZlTG9nZ2luZ1N0cmVhbUhhbmRsZXIKIAogICAgIGNsYXNzIE1vY2tDYXB0dXJlTWFu
YWdlcjoKICAgICAgICAgY2FsbHMgPSBbXQogCi0gICAgICAgIGRlZiBzdXNwZW5kX2dsb2JhbF9j
YXB0dXJlKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5jYWxscy5hcHBlbmQoInN1c3BlbmRfZ2xv
YmFsX2NhcHR1cmUiKQotCi0gICAgICAgIGRlZiByZXN1bWVfZ2xvYmFsX2NhcHR1cmUoc2VsZik6
Ci0gICAgICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZCgicmVzdW1lX2dsb2JhbF9jYXB0dXJlIikK
LQotICAgICMgc2FuaXR5IGNoZWNrCi0gICAgYXNzZXJ0IENhcHR1cmVNYW5hZ2VyLnN1c3BlbmRf
Y2FwdHVyZV9pdGVtCi0gICAgYXNzZXJ0IENhcHR1cmVNYW5hZ2VyLnJlc3VtZV9nbG9iYWxfY2Fw
dHVyZQotCi0gICAgY2xhc3MgRHVtbXlUZXJtaW5hbChzaXguU3RyaW5nSU8pOgorICAgICAgICBA
Y29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgICAgICBkZWYgZ2xvYmFsX2FuZF9maXh0dXJl
X2Rpc2FibGVkKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5jYWxscy5hcHBlbmQoImVudGVyIGRp
c2FibGVkIikKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBzZWxmLmNhbGxzLmFwcGVu
ZCgiZXhpdCBkaXNhYmxlZCIpCiAKKyAgICBjbGFzcyBEdW1teVRlcm1pbmFsKGlvLlN0cmluZ0lP
KToKICAgICAgICAgZGVmIHNlY3Rpb24oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAg
ICAgIHBhc3MKIAotICAgIG91dF9maWxlID0gRHVtbXlUZXJtaW5hbCgpCi0gICAgY2FwdHVyZV9t
YW5hZ2VyID0gTW9ja0NhcHR1cmVNYW5hZ2VyKCkgaWYgaGFzX2NhcHR1cmVfbWFuYWdlciBlbHNl
IE5vbmUKKyAgICBvdXRfZmlsZSA9IGNhc3QoVGVybWluYWxSZXBvcnRlciwgRHVtbXlUZXJtaW5h
bCgpKQorICAgIGNhcHR1cmVfbWFuYWdlciA9ICgKKyAgICAgICAgY2FzdChDYXB0dXJlTWFuYWdl
ciwgTW9ja0NhcHR1cmVNYW5hZ2VyKCkpIGlmIGhhc19jYXB0dXJlX21hbmFnZXIgZWxzZSBOb25l
CisgICAgKQogICAgIGhhbmRsZXIgPSBfTGl2ZUxvZ2dpbmdTdHJlYW1IYW5kbGVyKG91dF9maWxl
LCBjYXB0dXJlX21hbmFnZXIpCiAgICAgaGFuZGxlci5zZXRfd2hlbigiY2FsbCIpCiAKQEAgLTg2
NSwxMCArODUyLDMwNSBAQCBkZWYgdGVzdF9saXZlX2xvZ2dpbmdfc3VzcGVuZHNfY2FwdHVyZSho
YXNfY2FwdHVyZV9tYW5hZ2VyLCByZXF1ZXN0KToKIAogICAgIGxvZ2dlci5jcml0aWNhbCgic29t
ZSBtZXNzYWdlIikKICAgICBpZiBoYXNfY2FwdHVyZV9tYW5hZ2VyOgotICAgICAgICBhc3NlcnQg
KAotICAgICAgICAgICAgTW9ja0NhcHR1cmVNYW5hZ2VyLmNhbGxzCi0gICAgICAgICAgICA9PSBb
InN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUiLCAicmVzdW1lX2dsb2JhbF9jYXB0dXJlIl0KLSAgICAg
ICAgKQorICAgICAgICBhc3NlcnQgTW9ja0NhcHR1cmVNYW5hZ2VyLmNhbGxzID09IFsiZW50ZXIg
ZGlzYWJsZWQiLCAiZXhpdCBkaXNhYmxlZCJdCiAgICAgZWxzZToKICAgICAgICAgYXNzZXJ0IE1v
Y2tDYXB0dXJlTWFuYWdlci5jYWxscyA9PSBbXQotICAgIGFzc2VydCBvdXRfZmlsZS5nZXR2YWx1
ZSgpID09ICJcbnNvbWUgbWVzc2FnZVxuIgorICAgIGFzc2VydCBjYXN0KGlvLlN0cmluZ0lPLCBv
dXRfZmlsZSkuZ2V0dmFsdWUoKSA9PSAiXG5zb21lIG1lc3NhZ2VcbiIKKworCitkZWYgdGVzdF9j
b2xsZWN0aW9uX2xpdmVfbG9nZ2luZyh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZworCisgICAgICAgIGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkuaW5mbygiTm9ybWFsIG1lc3NhZ2UiKQorICAgICIiIgorICAgICkKKworICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxvZy1jbGktbGV2ZWw9SU5GTyIpCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIiotLS0gbGl2ZSBsb2cgY29s
bGVjdGlvbiAtLS0qIiwgIipOb3JtYWwgbWVzc2FnZSoiLCAiY29sbGVjdGVkIDAgaXRlbXMiXQor
ICAgICkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcmJvc2UiLCBbIiIsICItcSIs
ICItcXEiXSkKK2RlZiB0ZXN0X2NvbGxlY3Rpb25fY29sbGVjdF9vbmx5X2xpdmVfbG9nZ2luZyh0
ZXN0ZGlyLCB2ZXJib3NlKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgor
ICAgICAgICBkZWYgdGVzdF9zaW1wbGUoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAg
ICApCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xsZWN0LW9ubHkiLCAi
LS1sb2ctY2xpLWxldmVsPUlORk8iLCB2ZXJib3NlKQorCisgICAgZXhwZWN0ZWRfbGluZXMgPSBb
XQorCisgICAgaWYgbm90IHZlcmJvc2U6CisgICAgICAgIGV4cGVjdGVkX2xpbmVzLmV4dGVuZCgK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKmNvbGxlY3RlZCAxIGl0ZW0qIiwKKyAg
ICAgICAgICAgICAgICAiKjxNb2R1bGUgdGVzdF9jb2xsZWN0aW9uX2NvbGxlY3Rfb25seV9saXZl
X2xvZ2dpbmcucHk+KiIsCisgICAgICAgICAgICAgICAgIipubyB0ZXN0cyByYW4qIiwKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgKQorICAgIGVsaWYgdmVyYm9zZSA9PSAiLXEiOgorICAgICAgICBy
ZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmNvbGxlY3RlZCAxIGl0ZW0qKiIpCisgICAg
ICAgIGV4cGVjdGVkX2xpbmVzLmV4dGVuZCgKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAiKnRlc3RfY29sbGVjdGlvbl9jb2xsZWN0X29ubHlfbGl2ZV9sb2dnaW5nLnB5Ojp0ZXN0X3Np
bXBsZSoiLAorICAgICAgICAgICAgICAgICJubyB0ZXN0cyByYW4gaW4gWzAtOV0uWzAtOV1bMC05
XXMiLAorICAgICAgICAgICAgXQorICAgICAgICApCisgICAgZWxpZiB2ZXJib3NlID09ICItcXEi
OgorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmNvbGxlY3RlZCAxIGl0
ZW0qKiIpCisgICAgICAgIGV4cGVjdGVkX2xpbmVzLmV4dGVuZChbIip0ZXN0X2NvbGxlY3Rpb25f
Y29sbGVjdF9vbmx5X2xpdmVfbG9nZ2luZy5weTogMSoiXSkKKworICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhleHBlY3RlZF9saW5lcykKKworCitkZWYgdGVzdF9jb2xsZWN0aW9uX2xv
Z2dpbmdfdG9fZmlsZSh0ZXN0ZGlyKToKKyAgICBsb2dfZmlsZSA9IHRlc3RkaXIudG1wZGlyLmpv
aW4oInB5dGVzdC5sb2ciKS5zdHJwYXRoCisKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAg
ICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAgICBsb2dfZmlsZT17fQorICAgICAgICBsb2df
ZmlsZV9sZXZlbCA9IElORk8KKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGxvZ19m
aWxlCisgICAgICAgICkKKyAgICApCisKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAg
ICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZworCisgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCkuaW5mbygiTm9ybWFsIG1lc3NhZ2UiKQorCisgICAgICAgIGRlZiB0ZXN0X3NpbXBsZSgpOgor
ICAgICAgICAgICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5kZWJ1ZygiZGVidWcgbWVzc2FnZSBpbiB0
ZXN0X3NpbXBsZSIpCisgICAgICAgICAgICBsb2dnaW5nLmdldExvZ2dlcigpLmluZm8oImluZm8g
bWVzc2FnZSBpbiB0ZXN0X3NpbXBsZSIpCisgICAgIiIiCisgICAgKQorCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoKQorCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUo
IiotLS0gbGl2ZSBsb2cgY29sbGVjdGlvbiAtLS0qIikKKworICAgIGFzc2VydCByZXN1bHQucmV0
ID09IDAKKyAgICBhc3NlcnQgb3MucGF0aC5pc2ZpbGUobG9nX2ZpbGUpCisgICAgd2l0aCBvcGVu
KGxvZ19maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyByZmg6CisgICAgICAgIGNvbnRlbnRzID0g
cmZoLnJlYWQoKQorICAgICAgICBhc3NlcnQgIk5vcm1hbCBtZXNzYWdlIiBpbiBjb250ZW50cwor
ICAgICAgICBhc3NlcnQgImRlYnVnIG1lc3NhZ2UgaW4gdGVzdF9zaW1wbGUiIG5vdCBpbiBjb250
ZW50cworICAgICAgICBhc3NlcnQgImluZm8gbWVzc2FnZSBpbiB0ZXN0X3NpbXBsZSIgaW4gY29u
dGVudHMKKworCitkZWYgdGVzdF9sb2dfaW5faG9va3ModGVzdGRpcik6CisgICAgbG9nX2ZpbGUg
PSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJweXRlc3QubG9nIikuc3RycGF0aAorCisgICAgdGVzdGRp
ci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgbG9nX2Zp
bGU9e30KKyAgICAgICAgbG9nX2ZpbGVfbGV2ZWwgPSBJTkZPCisgICAgICAgIGxvZ19jbGk9dHJ1
ZQorICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgbG9nX2ZpbGUKKyAgICAgICAgKQor
ICAgICkKKyAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGlt
cG9ydCBsb2dnaW5nCisKKyAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZXNzaW9uKToK
KyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygncnVudGVzdGxvb3AnKQorCisgICAgICAgIGRlZiBw
eXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb24pOgorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdz
ZXNzaW9uc3RhcnQnKQorCisgICAgICAgIGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9u
LCBleGl0c3RhdHVzKToKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnc2Vzc2lvbmZpbmlzaCcp
CisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqc2Vzc2lvbnN0YXJ0KiIsICIqcnVudGVzdGxv
b3AqIiwgIipzZXNzaW9uZmluaXNoKiJdKQorICAgIHdpdGggb3Blbihsb2dfZmlsZSkgYXMgcmZo
OgorICAgICAgICBjb250ZW50cyA9IHJmaC5yZWFkKCkKKyAgICAgICAgYXNzZXJ0ICJzZXNzaW9u
c3RhcnQiIGluIGNvbnRlbnRzCisgICAgICAgIGFzc2VydCAicnVudGVzdGxvb3AiIGluIGNvbnRl
bnRzCisgICAgICAgIGFzc2VydCAic2Vzc2lvbmZpbmlzaCIgaW4gY29udGVudHMKKworCitkZWYg
dGVzdF9sb2dfaW5fcnVudGVzdF9sb2dyZXBvcnQodGVzdGRpcik6CisgICAgbG9nX2ZpbGUgPSB0
ZXN0ZGlyLnRtcGRpci5qb2luKCJweXRlc3QubG9nIikuc3RycGF0aAorCisgICAgdGVzdGRpci5t
YWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgbG9nX2ZpbGU9
e30KKyAgICAgICAgbG9nX2ZpbGVfbGV2ZWwgPSBJTkZPCisgICAgICAgIGxvZ19jbGk9dHJ1ZQor
ICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgbG9nX2ZpbGUKKyAgICAgICAgKQorICAg
ICkKKyAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9y
dCBsb2dnaW5nCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQor
CisgICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0KToKKyAgICAgICAg
ICAgIGxvZ2dlci5pbmZvKCJsb2dyZXBvcnQiKQorICAgICIiIgorICAgICkKKyAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfZmlyc3QoKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAgICAgICAiIiIKKyAgICApCisgICAgdGVz
dGRpci5ydW5weXRlc3QoKQorICAgIHdpdGggb3Blbihsb2dfZmlsZSkgYXMgcmZoOgorICAgICAg
ICBjb250ZW50cyA9IHJmaC5yZWFkKCkKKyAgICAgICAgYXNzZXJ0IGNvbnRlbnRzLmNvdW50KCJs
b2dyZXBvcnQiKSA9PSAzCisKKworZGVmIHRlc3RfbG9nX3NldF9wYXRoKHRlc3RkaXIpOgorICAg
IHJlcG9ydF9kaXJfYmFzZSA9IHRlc3RkaXIudG1wZGlyLnN0cnBhdGgKKworICAgIHRlc3RkaXIu
bWFrZWluaSgKKyAgICAgICAgIiIiCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGxvZ19maWxl
X2xldmVsID0gREVCVUcKKyAgICAgICAgbG9nX2NsaT10cnVlCisgICAgICAgICIiIgorICAgICkK
KyAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBv
cnQgb3MKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIEBweXRlc3QuaG9v
a2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5Zmlyc3Q9VHJ1ZSkKKyAgICAgICAgICAgIGRlZiBw
eXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKKyAgICAgICAgICAgICAgICBjb25maWcgPSBpdGVt
LmNvbmZpZworICAgICAgICAgICAgICAgIGxvZ2dpbmdfcGx1Z2luID0gY29uZmlnLnBsdWdpbm1h
bmFnZXIuZ2V0X3BsdWdpbigibG9nZ2luZy1wbHVnaW4iKQorICAgICAgICAgICAgICAgIHJlcG9y
dF9maWxlID0gb3MucGF0aC5qb2luKHt9LCBpdGVtLl9yZXF1ZXN0Lm5vZGUubmFtZSkKKyAgICAg
ICAgICAgICAgICBsb2dnaW5nX3BsdWdpbi5zZXRfbG9nX3BhdGgocmVwb3J0X2ZpbGUpCisgICAg
ICAgICAgICAgICAgeWllbGQKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIHJlcHIo
cmVwb3J0X2Rpcl9iYXNlKQorICAgICAgICApCisgICAgKQorICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICAgICAg
bG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3RjYXNlLWxvZ2dlciIpCisgICAgICAgICAg
ICBkZWYgdGVzdF9maXJzdCgpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJtZXNzYWdl
IGZyb20gdGVzdCAxIikKKyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorCisgICAgICAgICAg
ICBkZWYgdGVzdF9zZWNvbmQoKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIm1lc3Nh
Z2UgZnJvbSB0ZXN0IDIiKQorICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCisgICAgICAgICIi
IgorICAgICkKKyAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgd2l0aCBvcGVuKG9zLnBhdGgu
am9pbihyZXBvcnRfZGlyX2Jhc2UsICJ0ZXN0X2ZpcnN0IikpIGFzIHJmaDoKKyAgICAgICAgY29u
dGVudCA9IHJmaC5yZWFkKCkKKyAgICAgICAgYXNzZXJ0ICJtZXNzYWdlIGZyb20gdGVzdCAxIiBp
biBjb250ZW50CisKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHJlcG9ydF9kaXJfYmFzZSwg
InRlc3Rfc2Vjb25kIikpIGFzIHJmaDoKKyAgICAgICAgY29udGVudCA9IHJmaC5yZWFkKCkKKyAg
ICAgICAgYXNzZXJ0ICJtZXNzYWdlIGZyb20gdGVzdCAyIiBpbiBjb250ZW50CisKKworZGVmIHRl
c3RfY29sb3JlZF9jYXB0dXJlZF9sb2codGVzdGRpcik6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBs
ZXZlbCBuYW1lcyBvZiBjYXB0dXJlZCBsb2cgbWVzc2FnZXMgb2YgYSBmYWlsaW5nIHRlc3QKKyAg
ICBhcmUgY29sb3JlZC4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgor
ICAgICAgICBpbXBvcnQgbG9nZ2luZworCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQorCisgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgbG9n
Z2VyLmluZm8oJ3RleHQgZ29pbmcgdG8gbG9nZ2VyIGZyb20gY2FsbCcpCisgICAgICAgICAgICBh
c3NlcnQgRmFsc2UKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLWxvZy1sZXZlbD1JTkZPIiwgIi0tY29sb3I9eWVzIikKKyAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAxCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBb
CisgICAgICAgICAgICAiKi0tIENhcHR1cmVkIGxvZyBjYWxsIC0tKiIsCisgICAgICAgICAgICAi
XHgxYlszMm1JTkZPICAgIFx4MWJbMG0qdGV4dCBnb2luZyB0byBsb2dnZXIgZnJvbSBjYWxsIiwK
KyAgICAgICAgXQorICAgICkKKworCitkZWYgdGVzdF9jb2xvcmVkX2Fuc2lfZXNjX2NhcGxvZ3Rl
eHQodGVzdGRpcik6CisgICAgIiIiTWFrZSBzdXJlIHRoYXQgY2FwbG9nLnRleHQgZG9lcyBub3Qg
Y29udGFpbiBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICBsb2dnZXIg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworICAgICAgICBkZWYgdGVzdF9mb28oY2Fw
bG9nKToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCd0ZXh0IGdvaW5nIHRvIGxvZ2dlciBmcm9t
IGNhbGwnKQorICAgICAgICAgICAgYXNzZXJ0ICdceDFiJyBub3QgaW4gY2FwbG9nLnRleHQKKyAg
ICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxvZy1s
ZXZlbD1JTkZPIiwgIi0tY29sb3I9eWVzIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisK
KworZGVmIHRlc3RfbG9nZ2luZ19lbWl0X2Vycm9yKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6
CisgICAgIiIiQW4gZXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgZW1pdCgpIHNob3VsZCBmYWlsIHRo
ZSB0ZXN0LgorCisgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgbG9nZ2luZyBpcyB0byBwcmlu
dCAiTG9nZ2luZyBlcnJvciIKKyAgICB0byBzdGRlcnIgd2l0aCB0aGUgY2FsbCBzdGFjayBhbmQg
c29tZSBleHRyYSBkZXRhaWxzLgorCisgICAgcHl0ZXN0IG92ZXJyaWRlcyB0aGlzIGJlaGF2aW9y
IHRvIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLgorICAgICIiIgorICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBsb2dnaW5nCisKKyAgICAgICAgZGVm
IHRlc3RfYmFkX2xvZygpOgorICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdvb3BzJywgJ2Zp
cnN0JywgMikKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKGZhaWxlZD0xKQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIj09PT0qIEZBSUxV
UkVTICo9PT09IiwKKyAgICAgICAgICAgICIqbm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1
cmluZyBzdHJpbmcgZm9ybWF0dGluZyoiLAorICAgICAgICBdCisgICAgKQorCisKK2RlZiB0ZXN0
X2xvZ2dpbmdfZW1pdF9lcnJvcl9zdXByZXNzZWQodGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToK
KyAgICAiIiJJZiBsb2dnaW5nIGlzIGNvbmZpZ3VyZWQgdG8gc2lsZW50bHkgaWdub3JlIGVycm9y
cywgcHl0ZXN0CisgICAgZG9lc24ndCBwcm9wYWdhdGUgZXJyb3JzIGVpdGhlci4iIiIKKyAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZwor
CisgICAgICAgIGRlZiB0ZXN0X2JhZF9sb2cobW9ua2V5cGF0Y2gpOgorICAgICAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cihsb2dnaW5nLCAncmFpc2VFeGNlcHRpb25zJywgRmFsc2UpCisgICAg
ICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ29vcHMnLCAnZmlyc3QnLCAyKQorICAgICAgICAiIiIK
KyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5hc3Nl
cnRfb3V0Y29tZXMocGFzc2VkPTEpCisKKworZGVmIHRlc3RfbG9nX2ZpbGVfY2xpX3N1YmRpcmVj
dG9yaWVzX2FyZV9zdWNjZXNzZnVsbHlfY3JlYXRlZCh0ZXN0ZGlyKToKKyAgICBwYXRoID0gdGVz
dGRpci5tYWtlcHlmaWxlKCIiIiBkZWYgdGVzdF9sb2dnZXIoKTogcGFzcyAiIiIpCisgICAgZXhw
ZWN0ZWQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN0cihwYXRoKSksICJmb28iLCAi
YmFyIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sb2ctZmlsZT1mb28vYmFy
L2xvZ2YubG9nIikKKyAgICBhc3NlcnQgImxvZ2YubG9nIiBpbiBvcy5saXN0ZGlyKGV4cGVjdGVk
KQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk9LCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2xvZ2dpbmcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFmMjc4MDY4NzFhZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9n
Z2luZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90ZXN0X2ZpeHR1cmUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9mb3JtYXR0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2xvZ2dpbmcvdGVzdF9yZXBvcnRpbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9wbHVnaW5zX2ludGVncmF0aW9uLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5kOTM0NDQ3YTAzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIg
QEAKKyouaHRtbAorYXNzZXRzLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVn
aW5zX2ludGVncmF0aW9uL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNf
aW50ZWdyYXRpb24vUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjhmMDI3YzNiZDM1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9SRUFETUUucnN0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMg
Zm9sZGVyIGNvbnRhaW5zIHRlc3RzIGFuZCBzdXBwb3J0IGZpbGVzIGZvciBzbW9rZSB0ZXN0aW5n
IHBvcHVsYXIgcGx1Z2lucyBhZ2FpbnN0IHRoZSBjdXJyZW50IHB5dGVzdCB2ZXJzaW9uLgorCitU
aGUgb2JqZWN0aXZlIGlzIHRvIGdhdWdlIGlmIGFueSBpbnRlbnRpb25hbCBvciB1bmludGVudGlv
bmFsIGNoYW5nZXMgaW4gcHl0ZXN0IGJyZWFrIHBsdWdpbnMuCisKK0FzIGEgcnVsZSBvZiB0aHVt
Yiwgd2Ugc2hvdWxkIGFkZCBwbHVnaW5zIGhlcmU6CisKKzEuIFRoYXQgYXJlIHVzZWQgYXQgbGFy
Z2UuIFRoaXMgbWlnaHQgYmUgc3ViamVjdGl2ZSBpbiBzb21lIGNhc2VzLCBidXQgaWYgYW5zd2Vy
IGlzIHllcyB0bworICAgdGhlIHF1ZXN0aW9uOiAqaWYgYSBuZXcgcmVsZWFzZSBvZiBweXRlc3Qg
Y2F1c2VzIHB5dGVzdC1YIHRvIGJyZWFrLCB3aWxsIHRoaXMgYnJlYWsgYSB0b24gb2YgdGVzdCBz
dWl0ZXMgb3V0IHRoZXJlPyouCisyLiBUaGF0IGRvbid0IGhhdmUgbGFyZ2UgZXh0ZXJuYWwgZGVw
ZW5kZW5jaWVzOiBzdWNoIGFzIGV4dGVybmFsIHNlcnZpY2VzLgorCitCZXNpZGVzIGFkZGluZyB0
aGUgcGx1Z2luIGFzIGRlcGVuZGVuY3ksIHdlIHNob3VsZCBhbHNvIGFkZCBhIHF1aWNrIHRlc3Qg
d2hpY2ggdXNlcyBzb21lCittaW5pbWFsIHBhcnQgb2YgdGhlIHBsdWdpbiwgYSBzbW9rZSB0ZXN0
LiBBbHNvIGNvbnNpZGVyIHJldXNpbmcgb25lIG9mIHRoZSBleGlzdGluZyB0ZXN0cyBpZiB0aGF0
J3MKK3Bvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2lu
dGVncmF0aW9uL2JkZF93YWxsZXQuZmVhdHVyZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2lu
c19pbnRlZ3JhdGlvbi9iZGRfd2FsbGV0LmZlYXR1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lNDA0YzQ5NDhlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vYmRkX3dhbGxldC5mZWF0dXJlCkBAIC0w
LDAgKzEsOSBAQAorRmVhdHVyZTogQnV5IHRoaW5ncyB3aXRoIGFwcGxlCisKKyAgICBTY2VuYXJp
bzogQnV5IGZydWl0cworICAgICAgICBHaXZlbiBBIHdhbGxldCB3aXRoIDUwCisKKyAgICAgICAg
V2hlbiBJIGJ1eSBzb21lIGFwcGxlcyBmb3IgMQorICAgICAgICBBbmQgSSBidXkgc29tZSBiYW5h
bmFzIGZvciAyCisKKyAgICAgICAgVGhlbiBJIGhhdmUgNDcgbGVmdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL2JkZF93YWxsZXQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vYmRkX3dhbGxldC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM1OTI3ZWE1ODc1ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9iZGRfd2Fs
bGV0LnB5CkBAIC0wLDAgKzEsMzkgQEAKK2Zyb20gcHl0ZXN0X2JkZCBpbXBvcnQgZ2l2ZW4KK2Zy
b20gcHl0ZXN0X2JkZCBpbXBvcnQgc2NlbmFyaW8KK2Zyb20gcHl0ZXN0X2JkZCBpbXBvcnQgdGhl
bgorZnJvbSBweXRlc3RfYmRkIGltcG9ydCB3aGVuCisKK2ltcG9ydCBweXRlc3QKKworCitAc2Nl
bmFyaW8oImJkZF93YWxsZXQuZmVhdHVyZSIsICJCdXkgZnJ1aXRzIikKK2RlZiB0ZXN0X3B1Ymxp
c2goKToKKyAgICBwYXNzCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgd2FsbGV0KCk6CisgICAg
Y2xhc3MgV2FsbGV0OgorICAgICAgICBhbW91bnQgPSAwCisKKyAgICByZXR1cm4gV2FsbGV0KCkK
KworCitAZ2l2ZW4oIkEgd2FsbGV0IHdpdGggNTAiKQorZGVmIGZpbGxfd2FsbGV0KHdhbGxldCk6
CisgICAgd2FsbGV0LmFtb3VudCA9IDUwCisKKworQHdoZW4oIkkgYnV5IHNvbWUgYXBwbGVzIGZv
ciAxIikKK2RlZiBidXlfYXBwbGVzKHdhbGxldCk6CisgICAgd2FsbGV0LmFtb3VudCAtPSAxCisK
KworQHdoZW4oIkkgYnV5IHNvbWUgYmFuYW5hcyBmb3IgMiIpCitkZWYgYnV5X2JhbmFuYXMod2Fs
bGV0KToKKyAgICB3YWxsZXQuYW1vdW50IC09IDIKKworCitAdGhlbigiSSBoYXZlIDQ3IGxlZnQi
KQorZGVmIGNoZWNrKHdhbGxldCk6CisgICAgYXNzZXJ0IHdhbGxldC5hbW91bnQgPT0gNDcKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9kamFuZ29f
c2V0dGluZ3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vZGph
bmdvX3NldHRpbmdzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MDcxNWY0NzY1MzE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVn
aW5zX2ludGVncmF0aW9uL2RqYW5nb19zZXR0aW5ncy5weQpAQCAtMCwwICsxIEBACitTRUNSRVRf
S0VZID0gIm15c2VjcmV0IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5z
X2ludGVncmF0aW9uL3B5dGVzdC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50
ZWdyYXRpb24vcHl0ZXN0LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmY2Yzc3YjBkZWU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
cGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3QuaW5pCkBAIC0wLDAgKzEsNCBAQAorW3B5dGVzdF0K
K2FkZG9wdHMgPSAtLXN0cmljdC1tYXJrZXJzCitmaWx0ZXJ3YXJuaW5ncyA9CisgICAgZXJyb3I6
OnB5dGVzdC5QeXRlc3RXYXJuaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Bs
dWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0X2FueWlvX2ludGVncmF0aW9uLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF9hbnlpb19pbnRlZ3JhdGlvbi5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY1YzJmNTkzNjYzNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlv
bi9weXRlc3RfYW55aW9faW50ZWdyYXRpb24ucHkKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgYW55
aW8KKworaW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QubWFyay5hbnlpbworYXN5bmMgZGVmIHRl
c3Rfc2xlZXAoKToKKyAgICBhd2FpdCBhbnlpby5zbGVlcCgwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF9hc3luY2lvX2ludGVncmF0
aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF9h
c3luY2lvX2ludGVncmF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNWQyYTNmYWNjZmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF9hc3luY2lvX2ludGVncmF0aW9uLnB5CkBAIC0w
LDAgKzEsOCBAQAoraW1wb3J0IGFzeW5jaW8KKworaW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3Qu
bWFyay5hc3luY2lvCithc3luYyBkZWYgdGVzdF9zbGVlcCgpOgorICAgIGF3YWl0IGFzeW5jaW8u
c2xlZXAoMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3Jh
dGlvbi9weXRlc3RfbW9ja19pbnRlZ3JhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1
Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfbW9ja19pbnRlZ3JhdGlvbi5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc0MDQ2OWQwMGZiOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfbW9ja19p
bnRlZ3JhdGlvbi5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiB0ZXN0X21vY2tlcihtb2NrZXIpOgor
ICAgIG1vY2tlci5NYWdpY01vY2soKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9w
bHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF90cmlvX2ludGVncmF0aW9uLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF90cmlvX2ludGVncmF0aW9uLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTk5Zjc4NTBiYzQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9u
L3B5dGVzdF90cmlvX2ludGVncmF0aW9uLnB5CkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHRyaW8K
KworaW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QubWFyay50cmlvCithc3luYyBkZWYgdGVzdF9z
bGVlcCgpOgorICAgIGF3YWl0IHRyaW8uc2xlZXAoMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfdHdpc3RlZF9pbnRlZ3JhdGlvbi5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfdHdpc3Rl
ZF9pbnRlZ3JhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
Ljk0NzQ4ZDAzNmU1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1
Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfdHdpc3RlZF9pbnRlZ3JhdGlvbi5weQpAQCAtMCwwICsx
LDE4IEBACitpbXBvcnQgcHl0ZXN0X3R3aXN0ZWQKK2Zyb20gdHdpc3RlZC5pbnRlcm5ldC50YXNr
IGltcG9ydCBkZWZlckxhdGVyCisKKworZGVmIHNsZWVwKCk6CisgICAgaW1wb3J0IHR3aXN0ZWQu
aW50ZXJuZXQucmVhY3RvcgorCisgICAgcmV0dXJuIGRlZmVyTGF0ZXIoY2xvY2s9dHdpc3RlZC5p
bnRlcm5ldC5yZWFjdG9yLCBkZWxheT0wKQorCisKK0BweXRlc3RfdHdpc3RlZC5pbmxpbmVDYWxs
YmFja3MKK2RlZiB0ZXN0X2lubGluZUNhbGxiYWNrcygpOgorICAgIHlpZWxkIHNsZWVwKCkKKwor
CitAcHl0ZXN0X3R3aXN0ZWQuZW5zdXJlRGVmZXJyZWQKK2FzeW5jIGRlZiB0ZXN0X2lubGluZUNh
bGxiYWNrc19hc3luYygpOgorICAgIGF3YWl0IHNsZWVwKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9zaW1wbGVfaW50ZWdyYXRpb24ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vc2ltcGxlX2ludGVncmF0aW9u
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjBiMmZjNGI1YmI3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0
aW9uL3NpbXBsZV9pbnRlZ3JhdGlvbi5weQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgcHl0ZXN0
CisKKworZGVmIHRlc3RfZm9vKCk6CisgICAgYXNzZXJ0IFRydWUKKworCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoImkiLCByYW5nZSgzKSkKK2RlZiB0ZXN0X2JhcihpKToKKyAgICBhc3NlcnQg
VHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vYXBwcm94LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vYXBwcm94LnB5CmluZGV4IDllMjVmZWIwYjRkNi4u
MTk0NDIzZGMzYjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9hcHBy
b3gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vYXBwcm94LnB5CkBAIC0xLDY2
ICsxLDkyIEBACi0jIGVuY29kaW5nOiB1dGYtOAogaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgc3lz
Ci1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgZG9jdGVzdAotCi1mcm9tIHB5dGVzdCBpbXBvcnQgYXBw
cm94Ci1mcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbmUKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVj
aW1hbAogZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCitmcm9tIG9wZXJhdG9yIGltcG9y
dCBlcQorZnJvbSBvcGVyYXRvciBpbXBvcnQgbmUKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bAorCitpbXBvcnQgcHl0ZXN0Citmcm9tIHB5dGVzdCBpbXBvcnQgYXBwcm94CiAKIGluZiwgbmFu
ID0gZmxvYXQoImluZiIpLCBmbG9hdCgibmFuIikKIAogCi1jbGFzcyBNeURvY1Rlc3RSdW5uZXIo
ZG9jdGVzdC5Eb2NUZXN0UnVubmVyKToKK0BweXRlc3QuZml4dHVyZQorZGVmIG1vY2tlZF9kb2N0
ZXN0X3J1bm5lcihtb25rZXlwYXRjaCk6CisgICAgaW1wb3J0IGRvY3Rlc3QKKworICAgIGNsYXNz
IE1vY2tlZFBkYjoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dCk6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgZGVmIHNldF90cmFjZShzZWxmKToKKyAgICAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IoIm5vdCB1c2VkIikKKworICAgICAgICBkZWYgcmVzZXQoc2Vs
Zik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIHNldF9jb250aW51ZShzZWxmKToK
KyAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgZG9j
dGVzdC5Eb2NUZXN0UnVubmVyLl9faW5pdF9fKHNlbGYpCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cigiZG9jdGVzdC5fT3V0cHV0UmVkaXJlY3RpbmdQZGIiLCBNb2NrZWRQZGIpCiAKLSAgICBkZWYg
cmVwb3J0X2ZhaWx1cmUoc2VsZiwgb3V0LCB0ZXN0LCBleGFtcGxlLCBnb3QpOgotICAgICAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcigKLSAgICAgICAgICAgICIne30nIGV2YWx1YXRlcyB0byAne30n
LCBub3QgJ3t9JyIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGV4YW1wbGUuc291cmNlLnN0cmlw
KCksIGdvdC5zdHJpcCgpLCBleGFtcGxlLndhbnQuc3RyaXAoKQorICAgIGNsYXNzIE15RG9jVGVz
dFJ1bm5lcihkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIpOgorICAgICAgICBkZWYgcmVwb3J0X2ZhaWx1
cmUoc2VsZiwgb3V0LCB0ZXN0LCBleGFtcGxlLCBnb3QpOgorICAgICAgICAgICAgcmFpc2UgQXNz
ZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgIid7fScgZXZhbHVhdGVzIHRvICd7fScsIG5v
dCAne30nIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUuc291cmNlLnN0cmlw
KCksIGdvdC5zdHJpcCgpLCBleGFtcGxlLndhbnQuc3RyaXAoKQorICAgICAgICAgICAgICAgICkK
ICAgICAgICAgICAgICkKLSAgICAgICAgKQogCisgICAgcmV0dXJuIE15RG9jVGVzdFJ1bm5lcigp
CiAKLWNsYXNzIFRlc3RBcHByb3gob2JqZWN0KToKIAorY2xhc3MgVGVzdEFwcHJveDoKICAgICBk
ZWYgdGVzdF9yZXByX3N0cmluZyhzZWxmKToKLSAgICAgICAgcGx1c19taW51cyA9IHUiXHUwMGIx
IiBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID4gMiBlbHNlIHUiKy0iCi0gICAgICAgIHRvbDEsIHRv
bDIsIGluZnIgPSAiMS4wZS0wNiIsICIyLjBlLTA2IiwgImluZiIKLSAgICAgICAgYXNzZXJ0IHJl
cHIoYXBwcm94KDEuMCkpID09ICIxLjAge3BtfSB7dG9sMX0iLmZvcm1hdChwbT1wbHVzX21pbnVz
LCB0b2wxPXRvbDEpCi0gICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICByZXByKGFwcHJveChb
MS4wLCAyLjBdKSkKLSAgICAgICAgICAgID09ICJhcHByb3goWzEuMCB7cG19IHt0b2wxfSwgMi4w
IHtwbX0ge3RvbDJ9XSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBwbT1wbHVzX21pbnVzLCB0
b2wxPXRvbDEsIHRvbDI9dG9sMgotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgICAgIGFz
c2VydCAoCi0gICAgICAgICAgICByZXByKGFwcHJveCgoMS4wLCAyLjApKSkKLSAgICAgICAgICAg
ID09ICJhcHByb3goKDEuMCB7cG19IHt0b2wxfSwgMi4wIHtwbX0ge3RvbDJ9KSkiLmZvcm1hdCgK
LSAgICAgICAgICAgICAgICBwbT1wbHVzX21pbnVzLCB0b2wxPXRvbDEsIHRvbDI9dG9sMgotICAg
ICAgICAgICAgKQotICAgICAgICApCisgICAgICAgIGFzc2VydCByZXByKGFwcHJveCgxLjApKSA9
PSAiMS4wIMKxIDEuMGUtMDYiCisgICAgICAgIGFzc2VydCByZXByKGFwcHJveChbMS4wLCAyLjBd
KSkgPT0gImFwcHJveChbMS4wIMKxIDEuMGUtMDYsIDIuMCDCsSAyLjBlLTA2XSkiCisgICAgICAg
IGFzc2VydCByZXByKGFwcHJveCgoMS4wLCAyLjApKSkgPT0gImFwcHJveCgoMS4wIMKxIDEuMGUt
MDYsIDIuMCDCsSAyLjBlLTA2KSkiCiAgICAgICAgIGFzc2VydCByZXByKGFwcHJveChpbmYpKSA9
PSAiaW5mIgotICAgICAgICBhc3NlcnQgcmVwcihhcHByb3goMS4wLCByZWw9bmFuKSkgPT0gIjEu
MCB7cG19ID8/PyIuZm9ybWF0KHBtPXBsdXNfbWludXMpCi0gICAgICAgIGFzc2VydCAoCi0gICAg
ICAgICAgICByZXByKGFwcHJveCgxLjAsIHJlbD1pbmYpKQotICAgICAgICAgICAgPT0gIjEuMCB7
cG19IHtpbmZyfSIuZm9ybWF0KHBtPXBsdXNfbWludXMsIGluZnI9aW5mcikKLSAgICAgICAgKQot
ICAgICAgICBhc3NlcnQgcmVwcihhcHByb3goMS4waiwgcmVsPWluZikpID09ICIxaiIKKyAgICAg
ICAgYXNzZXJ0IHJlcHIoYXBwcm94KDEuMCwgcmVsPW5hbikpID09ICIxLjAgwrEgPz8/IgorICAg
ICAgICBhc3NlcnQgcmVwcihhcHByb3goMS4wLCByZWw9aW5mKSkgPT0gIjEuMCDCsSBpbmYiCiAK
ICAgICAgICAgIyBEaWN0aW9uYXJpZXMgYXJlbid0IG9yZGVyZWQsIHNvIHdlIG5lZWQgdG8gY2hl
Y2sgYm90aCBvcmRlcnMuCiAgICAgICAgIGFzc2VydCByZXByKGFwcHJveCh7ImEiOiAxLjAsICJi
IjogMi4wfSkpIGluICgKLSAgICAgICAgICAgICJhcHByb3goe3snYSc6IDEuMCB7cG19IHt0b2wx
fSwgJ2InOiAyLjAge3BtfSB7dG9sMn19fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBwbT1w
bHVzX21pbnVzLCB0b2wxPXRvbDEsIHRvbDI9dG9sMgotICAgICAgICAgICAgKSwKLSAgICAgICAg
ICAgICJhcHByb3goe3snYic6IDIuMCB7cG19IHt0b2wyfSwgJ2EnOiAxLjAge3BtfSB7dG9sMX19
fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBwbT1wbHVzX21pbnVzLCB0b2wxPXRvbDEsIHRv
bDI9dG9sMgotICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICJhcHByb3goeydhJzogMS4wIMKx
IDEuMGUtMDYsICdiJzogMi4wIMKxIDIuMGUtMDZ9KSIsCisgICAgICAgICAgICAiYXBwcm94KHsn
Yic6IDIuMCDCsSAyLjBlLTA2LCAnYSc6IDEuMCDCsSAxLjBlLTA2fSkiLAogICAgICAgICApCiAK
KyAgICBkZWYgdGVzdF9yZXByX2NvbXBsZXhfbnVtYmVycyhzZWxmKToKKyAgICAgICAgYXNzZXJ0
IHJlcHIoYXBwcm94KGluZiArIDFqKSkgPT0gIihpbmYrMWopIgorICAgICAgICBhc3NlcnQgcmVw
cihhcHByb3goMS4waiwgcmVsPWluZikpID09ICIxaiDCsSBpbmYiCisKKyAgICAgICAgIyBjYW4n
dCBjb21wdXRlIGEgc2Vuc2libGUgdG9sZXJhbmNlCisgICAgICAgIGFzc2VydCByZXByKGFwcHJv
eChuYW4gKyAxaikpID09ICIobmFuKzFqKSDCsSA/Pz8iCisKKyAgICAgICAgYXNzZXJ0IHJlcHIo
YXBwcm94KDEuMGopKSA9PSAiMWogwrEgMS4wZS0wNiDiiKAgwrExODDCsCIKKworICAgICAgICAj
IHJlbGF0aXZlIHRvbGVyYW5jZSBpcyBzY2FsZWQgdG8gfDMrNGp8ID0gNQorICAgICAgICBhc3Nl
cnQgcmVwcihhcHByb3goMyArIDQgKiAxaikpID09ICIoMys0aikgwrEgNS4wZS0wNiDiiKAgwrEx
ODDCsCIKKworICAgICAgICAjIGFic29sdXRlIHRvbGVyYW5jZSBpcyBub3Qgc2NhbGVkCisgICAg
ICAgIGFzc2VydCByZXByKGFwcHJveCgzLjMgKyA0LjQgKiAxaiwgYWJzPTAuMDIpKSA9PSAiKDMu
Mys0LjRqKSDCsSAyLjBlLTAyIOKIoCDCsTE4MMKwIgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKAorICAgICAgICAidmFsdWUsIGV4cGVjdGVkX3JlcHJfc3RyaW5nIiwKKyAgICAgICAg
WworICAgICAgICAgICAgKDUuMCwgImFwcHJveCg1LjAgwrEgNS4wZS0wNikiKSwKKyAgICAgICAg
ICAgIChbNS4wXSwgImFwcHJveChbNS4wIMKxIDUuMGUtMDZdKSIpLAorICAgICAgICAgICAgKFtb
NS4wXV0sICJhcHByb3goW1s1LjAgwrEgNS4wZS0wNl1dKSIpLAorICAgICAgICAgICAgKFtbNS4w
LCA2LjBdXSwgImFwcHJveChbWzUuMCDCsSA1LjBlLTA2LCA2LjAgwrEgNi4wZS0wNl1dKSIpLAor
ICAgICAgICAgICAgKFtbNS4wXSwgWzYuMF1dLCAiYXBwcm94KFtbNS4wIMKxIDUuMGUtMDZdLCBb
Ni4wIMKxIDYuMGUtMDZdXSkiKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfcmVw
cl9uZF9hcnJheShzZWxmLCB2YWx1ZSwgZXhwZWN0ZWRfcmVwcl9zdHJpbmcpOgorICAgICAgICAi
IiJNYWtlIHN1cmUgdGhhdCBhcnJheXMgb2YgYWxsIGRpZmZlcmVudCBkaW1lbnNpb25zIGFyZSBy
ZXByJ2QgY29ycmVjdGx5LiIiIgorICAgICAgICBucCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIm51
bXB5IikKKyAgICAgICAgbnBfYXJyYXkgPSBucC5hcnJheSh2YWx1ZSkKKyAgICAgICAgYXNzZXJ0
IHJlcHIoYXBwcm94KG5wX2FycmF5KSkgPT0gZXhwZWN0ZWRfcmVwcl9zdHJpbmcKKwogICAgIGRl
ZiB0ZXN0X29wZXJhdG9yX292ZXJsb2FkaW5nKHNlbGYpOgogICAgICAgICBhc3NlcnQgMSA9PSBh
cHByb3goMSwgcmVsPTFlLTYsIGFicz0xZS0xMikKICAgICAgICAgYXNzZXJ0IG5vdCAoMSAhPSBh
cHByb3goMSwgcmVsPTFlLTYsIGFicz0xZS0xMikpCkBAIC05NiwxOCArMTIyLDIyIEBAIGNsYXNz
IFRlc3RBcHByb3gob2JqZWN0KToKICAgICAgICAgICAgIGFzc2VydCBhID09IGFwcHJveCh4LCBy
ZWw9NWUtMSwgYWJzPTAuMCkKICAgICAgICAgICAgIGFzc2VydCBhICE9IGFwcHJveCh4LCByZWw9
NWUtMiwgYWJzPTAuMCkKIAotICAgIGRlZiB0ZXN0X25lZ2F0aXZlX3RvbGVyYW5jZShzZWxmKToK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgicmVsIiwgImFicyIpLAor
ICAgICAgICBbCisgICAgICAgICAgICAoLTFlMTAwLCBOb25lKSwKKyAgICAgICAgICAgIChOb25l
LCAtMWUxMDApLAorICAgICAgICAgICAgKDFlMTAwLCAtMWUxMDApLAorICAgICAgICAgICAgKC0x
ZTEwMCwgMWUxMDApLAorICAgICAgICAgICAgKC0xZTEwMCwgLTFlMTAwKSwKKyAgICAgICAgXSwK
KyAgICApCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfdG9sZXJhbmNlKAorICAgICAgICBzZWxmLCBy
ZWw6IE9wdGlvbmFsW2Zsb2F0XSwgYWJzOiBPcHRpb25hbFtmbG9hdF0KKyAgICApIC0+IE5vbmU6
CiAgICAgICAgICMgTmVnYXRpdmUgdG9sZXJhbmNlcyBhcmUgbm90IGFsbG93ZWQuCi0gICAgICAg
IGlsbGVnYWxfa3dhcmdzID0gWwotICAgICAgICAgICAgZGljdChyZWw9LTFlMTAwKSwKLSAgICAg
ICAgICAgIGRpY3QoYWJzPS0xZTEwMCksCi0gICAgICAgICAgICBkaWN0KHJlbD0xZTEwMCwgYWJz
PS0xZTEwMCksCi0gICAgICAgICAgICBkaWN0KHJlbD0tMWUxMDAsIGFicz0xZTEwMCksCi0gICAg
ICAgICAgICBkaWN0KHJlbD0tMWUxMDAsIGFicz0tMWUxMDApLAotICAgICAgICBdCi0gICAgICAg
IGZvciBrd2FyZ3MgaW4gaWxsZWdhbF9rd2FyZ3M6Ci0gICAgICAgICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgMS4xID09IGFwcHJveCgxLCAqKmt3
YXJncykKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAg
ICAgMS4xID09IGFwcHJveCgxLCByZWwsIGFicykKIAogICAgIGRlZiB0ZXN0X2luZl90b2xlcmFu
Y2Uoc2VsZik6CiAgICAgICAgICMgRXZlcnl0aGluZyBzaG91bGQgYmUgZXF1YWwgaWYgdGhlIHRv
bGVyYW5jZSBpcyBpbmZpbml0ZS4KQEAgLTExOCwxOSArMTQ4LDIxIEBAIGNsYXNzIFRlc3RBcHBy
b3gob2JqZWN0KToKICAgICAgICAgICAgIGFzc2VydCBhID09IGFwcHJveCh4LCByZWw9MC4wLCBh
YnM9aW5mKQogICAgICAgICAgICAgYXNzZXJ0IGEgPT0gYXBwcm94KHgsIHJlbD1pbmYsIGFicz1p
bmYpCiAKLSAgICBkZWYgdGVzdF9pbmZfdG9sZXJhbmNlX2V4cGVjdGluZ196ZXJvKHNlbGYpOgor
ICAgIGRlZiB0ZXN0X2luZl90b2xlcmFuY2VfZXhwZWN0aW5nX3plcm8oc2VsZikgLT4gTm9uZToK
ICAgICAgICAgIyBJZiB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIGlzIHplcm8gYnV0IHRoZSBleHBl
Y3RlZCB2YWx1ZSBpcyBpbmZpbml0ZSwKICAgICAgICAgIyB0aGUgYWN0dWFsIHRvbGVyYW5jZSBp
cyBhIE5hTiwgd2hpY2ggc2hvdWxkIGJlIGFuIGVycm9yLgotICAgICAgICBpbGxlZ2FsX2t3YXJn
cyA9IFtkaWN0KHJlbD1pbmYsIGFicz0wLjApLCBkaWN0KHJlbD1pbmYsIGFicz1pbmYpXQotICAg
ICAgICBmb3Iga3dhcmdzIGluIGlsbGVnYWxfa3dhcmdzOgotICAgICAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIDEgPT0gYXBwcm94KDAsICoq
a3dhcmdzKQotCi0gICAgZGVmIHRlc3RfbmFuX3RvbGVyYW5jZShzZWxmKToKLSAgICAgICAgaWxs
ZWdhbF9rd2FyZ3MgPSBbZGljdChyZWw9bmFuKSwgZGljdChhYnM9bmFuKSwgZGljdChyZWw9bmFu
LCBhYnM9bmFuKV0KLSAgICAgICAgZm9yIGt3YXJncyBpbiBpbGxlZ2FsX2t3YXJnczoKLSAgICAg
ICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAx
LjEgPT0gYXBwcm94KDEsICoqa3dhcmdzKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFs
dWVFcnJvcik6CisgICAgICAgICAgICAxID09IGFwcHJveCgwLCByZWw9aW5mLCBhYnM9MC4wKQor
ICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAxID09
IGFwcHJveCgwLCByZWw9aW5mLCBhYnM9aW5mKQorCisgICAgZGVmIHRlc3RfbmFuX3RvbGVyYW5j
ZShzZWxmKSAtPiBOb25lOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6
CisgICAgICAgICAgICAxLjEgPT0gYXBwcm94KDEsIHJlbD1uYW4pCisgICAgICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIDEuMSA9PSBhcHByb3goMSwgYWJz
PW5hbikKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAg
ICAgMS4xID09IGFwcHJveCgxLCByZWw9bmFuLCBhYnM9bmFuKQogCiAgICAgZGVmIHRlc3RfcmVh
c29uYWJsZV9kZWZhdWx0cyhzZWxmKToKICAgICAgICAgIyBXaGF0ZXZlciB0aGUgZGVmYXVsdHMg
YXJlLCB0aGV5IHNob3VsZCB3b3JrIGZvciBudW1iZXJzIGNsb3NlIHRvIDEKQEAgLTMzMiw2ICsz
NjQsNjggQEAgY2xhc3MgVGVzdEFwcHJveChvYmplY3QpOgogICAgICAgICBhc3NlcnQgYWN0dWFs
ID09IGFwcHJveChsaXN0KGV4cGVjdGVkKSwgcmVsPTVlLTcsIGFicz0wKQogICAgICAgICBhc3Nl
cnQgYWN0dWFsICE9IGFwcHJveChsaXN0KGV4cGVjdGVkKSwgcmVsPTVlLTgsIGFicz0wKQogCisg
ICAgZGVmIHRlc3RfbnVtcHlfdG9sZXJhbmNlX2FyZ3Moc2VsZik6CisgICAgICAgICIiIgorICAg
ICAgICBDaGVjayB0aGF0IG51bXB5IHJlbC9hYnMgYXJncyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkK
KyAgICAgICAgZm9yIGNvbXBhcmlzb24gYWdhaW5zdCBhbiBucC5hcnJheQorICAgICAgICBDaGVj
ayBib3RoIHNpZGVzIG9mIHRoZSBvcGVyYXRvciwgaG9wZWZ1bGx5IGl0IGRvZXNuJ3QgaW1wYWN0
IHRoaW5ncy4KKyAgICAgICAgVGVzdCBhbGwgcGVybXV0YXRpb25zIG9mIHdoZXJlIHRoZSBhcHBy
b3ggYW5kIG5wLmFycmF5KCkgY2FuIHNob3cgdXAKKyAgICAgICAgIiIiCisgICAgICAgIG5wID0g
cHl0ZXN0LmltcG9ydG9yc2tpcCgibnVtcHkiKQorICAgICAgICBleHBlY3RlZCA9IDEwMC4wCisg
ICAgICAgIGFjdHVhbCA9IDk5LjAKKyAgICAgICAgYWJzX2RpZmYgPSBleHBlY3RlZCAtIGFjdHVh
bAorICAgICAgICByZWxfZGlmZiA9IChleHBlY3RlZCAtIGFjdHVhbCkgLyBleHBlY3RlZAorCisg
ICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGVxLCBhYnNfZGlmZiwgMCksCisgICAgICAg
ICAgICAoZXEsIDAsIHJlbF9kaWZmKSwKKyAgICAgICAgICAgIChuZSwgMCwgcmVsX2RpZmYgLyAy
LjApLCAgIyByZWwgZGlmZiBmYWlsCisgICAgICAgICAgICAobmUsIGFic19kaWZmIC8gMi4wLCAw
KSwgICMgYWJzIGRpZmYgZmFpbAorICAgICAgICBdCisKKyAgICAgICAgZm9yIG9wLCBfYWJzLCBf
cmVsIGluIHRlc3RzOgorICAgICAgICAgICAgYXNzZXJ0IG9wKG5wLmFycmF5KGFjdHVhbCksIGFw
cHJveChleHBlY3RlZCwgYWJzPV9hYnMsIHJlbD1fcmVsKSkgICMgYSwgYgorICAgICAgICAgICAg
YXNzZXJ0IG9wKGFwcHJveChleHBlY3RlZCwgYWJzPV9hYnMsIHJlbD1fcmVsKSwgbnAuYXJyYXko
YWN0dWFsKSkgICMgYiwgYQorCisgICAgICAgICAgICBhc3NlcnQgb3AoYWN0dWFsLCBhcHByb3go
bnAuYXJyYXkoZXhwZWN0ZWQpLCBhYnM9X2FicywgcmVsPV9yZWwpKSAgIyBhLCBiCisgICAgICAg
ICAgICBhc3NlcnQgb3AoYXBwcm94KG5wLmFycmF5KGV4cGVjdGVkKSwgYWJzPV9hYnMsIHJlbD1f
cmVsKSwgYWN0dWFsKSAgIyBiLCBhCisKKyAgICAgICAgICAgIGFzc2VydCBvcChucC5hcnJheShh
Y3R1YWwpLCBhcHByb3gobnAuYXJyYXkoZXhwZWN0ZWQpLCBhYnM9X2FicywgcmVsPV9yZWwpKQor
ICAgICAgICAgICAgYXNzZXJ0IG9wKGFwcHJveChucC5hcnJheShleHBlY3RlZCksIGFicz1fYWJz
LCByZWw9X3JlbCksIG5wLmFycmF5KGFjdHVhbCkpCisKKyAgICBkZWYgdGVzdF9udW1weV9leHBl
Y3RpbmdfbmFuKHNlbGYpOgorICAgICAgICBucCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIm51bXB5
IikKKyAgICAgICAgZXhhbXBsZXMgPSBbCisgICAgICAgICAgICAoZXEsIG5hbiwgbmFuKSwKKyAg
ICAgICAgICAgIChlcSwgLW5hbiwgLW5hbiksCisgICAgICAgICAgICAoZXEsIG5hbiwgLW5hbiks
CisgICAgICAgICAgICAobmUsIDAuMCwgbmFuKSwKKyAgICAgICAgICAgIChuZSwgaW5mLCBuYW4p
LAorICAgICAgICBdCisgICAgICAgIGZvciBvcCwgYSwgeCBpbiBleGFtcGxlczoKKyAgICAgICAg
ICAgICMgTm90aGluZyBpcyBlcXVhbCB0byBOYU4gYnkgZGVmYXVsdC4KKyAgICAgICAgICAgIGFz
c2VydCBucC5hcnJheShhKSAhPSBhcHByb3goeCkKKyAgICAgICAgICAgIGFzc2VydCBhICE9IGFw
cHJveChucC5hcnJheSh4KSkKKworICAgICAgICAgICAgIyBJZiBgYG5hbl9vaz1UcnVlYGAsIHRo
ZW4gTmFOIGlzIGVxdWFsIHRvIE5hTi4KKyAgICAgICAgICAgIGFzc2VydCBvcChucC5hcnJheShh
KSwgYXBwcm94KHgsIG5hbl9vaz1UcnVlKSkKKyAgICAgICAgICAgIGFzc2VydCBvcChhLCBhcHBy
b3gobnAuYXJyYXkoeCksIG5hbl9vaz1UcnVlKSkKKworICAgIGRlZiB0ZXN0X251bXB5X2V4cGVj
dGluZ19pbmYoc2VsZik6CisgICAgICAgIG5wID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgibnVtcHki
KQorICAgICAgICBleGFtcGxlcyA9IFsKKyAgICAgICAgICAgIChlcSwgaW5mLCBpbmYpLAorICAg
ICAgICAgICAgKGVxLCAtaW5mLCAtaW5mKSwKKyAgICAgICAgICAgIChuZSwgaW5mLCAtaW5mKSwK
KyAgICAgICAgICAgIChuZSwgMC4wLCBpbmYpLAorICAgICAgICAgICAgKG5lLCBuYW4sIGluZiks
CisgICAgICAgIF0KKyAgICAgICAgZm9yIG9wLCBhLCB4IGluIGV4YW1wbGVzOgorICAgICAgICAg
ICAgYXNzZXJ0IG9wKG5wLmFycmF5KGEpLCBhcHByb3goeCkpCisgICAgICAgICAgICBhc3NlcnQg
b3AoYSwgYXBwcm94KG5wLmFycmF5KHgpKSkKKyAgICAgICAgICAgIGFzc2VydCBvcChucC5hcnJh
eShhKSwgYXBwcm94KG5wLmFycmF5KHgpKSkKKwogICAgIGRlZiB0ZXN0X251bXB5X2FycmF5X3dy
b25nX3NoYXBlKHNlbGYpOgogICAgICAgICBucCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIm51bXB5
IikKIApAQCAtMzQxLDEzICs0MzUsMTUgQEAgY2xhc3MgVGVzdEFwcHJveChvYmplY3QpOgogICAg
ICAgICBhc3NlcnQgYTEyICE9IGFwcHJveChhMjEpCiAgICAgICAgIGFzc2VydCBhMjEgIT0gYXBw
cm94KGExMikKIAotICAgIGRlZiB0ZXN0X2RvY3Rlc3RzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Rv
Y3Rlc3RzKHNlbGYsIG1vY2tlZF9kb2N0ZXN0X3J1bm5lcikgLT4gTm9uZToKKyAgICAgICAgaW1w
b3J0IGRvY3Rlc3QKKwogICAgICAgICBwYXJzZXIgPSBkb2N0ZXN0LkRvY1Rlc3RQYXJzZXIoKQor
ICAgICAgICBhc3NlcnQgYXBwcm94Ll9fZG9jX18gaXMgbm90IE5vbmUKICAgICAgICAgdGVzdCA9
IHBhcnNlci5nZXRfZG9jdGVzdCgKICAgICAgICAgICAgIGFwcHJveC5fX2RvY19fLCB7ImFwcHJv
eCI6IGFwcHJveH0sIGFwcHJveC5fX25hbWVfXywgTm9uZSwgTm9uZQogICAgICAgICApCi0gICAg
ICAgIHJ1bm5lciA9IE15RG9jVGVzdFJ1bm5lcigpCi0gICAgICAgIHJ1bm5lci5ydW4odGVzdCkK
KyAgICAgICAgbW9ja2VkX2RvY3Rlc3RfcnVubmVyLnJ1bih0ZXN0KQogCiAgICAgZGVmIHRlc3Rf
dW5pY29kZV9wbHVzX21pbnVzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAiIiIKQEAgLTM2NCw5
ICs0NjAsMjQgQEAgY2xhc3MgVGVzdEFwcHJveChvYmplY3QpOgogICAgICAgICBleHBlY3RlZCA9
ICI0LjBlLTA2IgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgIFsiKkF0IGluZGV4IDAg
ZGlmZjogMyAhPSA0ICoge30iLmZvcm1hdChleHBlY3RlZCksICI9KiAxIGZhaWxlZCBpbiAqPSJd
CisgICAgICAgICAgICBbIipBdCBpbmRleCAwIGRpZmY6IDMgIT0gNCDCsSB7fSIuZm9ybWF0KGV4
cGVjdGVkKSwgIj0qIDEgZmFpbGVkIGluICo9Il0KICAgICAgICAgKQogCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAieCIsCisgICAgICAgIFsKKyAgICAgICAgICAgIHB5
dGVzdC5wYXJhbShOb25lKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgic3RyaW5nIiksCisg
ICAgICAgICAgICBweXRlc3QucGFyYW0oWyJzdHJpbmciXSwgaWQ9Im5lc3RlZC1zdHIiKSwKKyAg
ICAgICAgICAgIHB5dGVzdC5wYXJhbShbWzFdXSwgaWQ9Im5lc3RlZC1saXN0IiksCisgICAgICAg
ICAgICBweXRlc3QucGFyYW0oeyJrZXkiOiAic3RyaW5nIn0sIGlkPSJkaWN0LXdpdGgtc3RyaW5n
IiksCisgICAgICAgICAgICBweXRlc3QucGFyYW0oeyJrZXkiOiB7ImtleSI6IDF9fSwgaWQ9Im5l
c3RlZC1kaWN0IiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2V4cGVjdGVkX3Zh
bHVlX3R5cGVfZXJyb3Ioc2VsZiwgeCk6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBl
RXJyb3IpOgorICAgICAgICAgICAgYXBwcm94KHgpCisKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoCiAgICAgICAgICJvcCIsCiAgICAgICAgIFsKQEAgLTM3Nyw5ICs0ODgsNyBAQCBjbGFz
cyBUZXN0QXBwcm94KG9iamVjdCk6CiAgICAgICAgIF0sCiAgICAgKQogICAgIGRlZiB0ZXN0X2Nv
bXBhcmlzb25fb3BlcmF0b3JfdHlwZV9lcnJvcihzZWxmLCBvcCk6Ci0gICAgICAgICIiIgotICAg
ICAgICBweXRlc3QuYXBwcm94IHNob3VsZCByYWlzZSBUeXBlRXJyb3IgZm9yIG9wZXJhdG9ycyBv
dGhlciB0aGFuID09IGFuZCAhPSAoIzIwMDMpLgotICAgICAgICAiIiIKKyAgICAgICAgIiIicHl0
ZXN0LmFwcHJveCBzaG91bGQgcmFpc2UgVHlwZUVycm9yIGZvciBvcGVyYXRvcnMgb3RoZXIgdGhh
biA9PSBhbmQgIT0gKCMyMDAzKS4iIiIKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVF
cnJvcik6CiAgICAgICAgICAgICBvcCgxLCBhcHByb3goMSwgcmVsPTFlLTYsIGFicz0xZS0xMikp
CiAKQEAgLTQwNCwzICs1MTMsMTQgQEAgY2xhc3MgVGVzdEFwcHJveChvYmplY3QpOgogICAgICAg
ICBhc3NlcnQgYWN0dWFsICE9IGFwcHJveChleHBlY3RlZCwgcmVsPTVlLTgsIGFicz0wKQogICAg
ICAgICBhc3NlcnQgYXBwcm94KGV4cGVjdGVkLCByZWw9NWUtNywgYWJzPTApID09IGFjdHVhbAog
ICAgICAgICBhc3NlcnQgYXBwcm94KGV4cGVjdGVkLCByZWw9NWUtOCwgYWJzPTApICE9IGFjdHVh
bAorCisgICAgZGVmIHRlc3RfZ2VuZXJpY19zaXplZF9pdGVyYWJsZV9vYmplY3Qoc2VsZik6Cisg
ICAgICAgIGNsYXNzIE15U2l6ZWRJdGVyYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhz
ZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihbMSwgMiwgMywgNF0pCisKKyAgICAg
ICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA0CisKKyAg
ICAgICAgZXhwZWN0ZWQgPSBNeVNpemVkSXRlcmFibGUoKQorICAgICAgICBhc3NlcnQgWzEsIDIs
IDMsIDRdID09IGFwcHJveChleHBlY3RlZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvcHl0aG9uL2NvbGxlY3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9jb2xsZWN0
LnB5CmluZGV4IDcyNDUwNGIxYWY3MC4uMDEyOTQwMzk4NjA4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3B5dGhvbi9jb2xsZWN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
cHl0aG9uL2NvbGxlY3QucHkKQEAgLTEsMjAgKzEsMTYgQEAKLSMgLSotIGNvZGluZzogdXRmLTgg
LSotCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKLWZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAor
aW1wb3J0IHRleHR3cmFwCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBv
cnQgRGljdAogCiBpbXBvcnQgX3B5dGVzdC5fY29kZQogaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0
ZXN0Lm1haW4gaW1wb3J0IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorZnJvbSBfcHl0ZXN0LmNvbmZp
ZyBpbXBvcnQgRXhpdENvZGUKIGZyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9yCitm
cm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKIAotaWdub3JlX3BhcmFtZXRyaXpl
ZF9tYXJrcyA9IHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKAotICAgICJpZ25vcmU6QXBwbHlp
bmcgbWFya3MgZGlyZWN0bHkgdG8gcGFyYW1ldGVycyIKLSkKLQotCi1jbGFzcyBUZXN0TW9kdWxl
KG9iamVjdCk6CiAKK2NsYXNzIFRlc3RNb2R1bGU6CiAgICAgZGVmIHRlc3RfZmFpbGluZ19pbXBv
cnQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29s
KCJpbXBvcnQgYWxrc2RqYWxza2RqYWxramFscyIpCiAgICAgICAgIHB5dGVzdC5yYWlzZXMoQ29s
bGVjdG9yLkNvbGxlY3RFcnJvciwgbW9kY29sLmNvbGxlY3QpCkBAIC0zOSw4ICszNSw2IEBAIGNs
YXNzIFRlc3RNb2R1bGUob2JqZWN0KToKICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfaW1wb3J0
X3ByZXBlbmRfYXBwZW5kKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKLSAgICAgICAgc3lz
cGF0aCA9IGxpc3Qoc3lzLnBhdGgpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAi
cGF0aCIsIHN5c3BhdGgpCiAgICAgICAgIHJvb3QxID0gdGVzdGRpci5ta2Rpcigicm9vdDEiKQog
ICAgICAgICByb290MiA9IHRlc3RkaXIubWtkaXIoInJvb3QyIikKICAgICAgICAgcm9vdDEuZW5z
dXJlKCJ4NDU2LnB5IikKQEAgLTQ4LDEzICs0MiwxNCBAQCBjbGFzcyBUZXN0TW9kdWxlKG9iamVj
dCk6CiAgICAgICAgIHAgPSByb290Mi5qb2luKCJ0ZXN0X3g0NTYucHkiKQogICAgICAgICBtb25r
ZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQoc3RyKHJvb3QxKSkKICAgICAgICAgcC53cml0ZSgKLSAg
ICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKICAgICAgICAg
ICAgICAgICAiIiJcCi0gICAgICAgICAgICBpbXBvcnQgeDQ1NgotICAgICAgICAgICAgZGVmIHRl
c3QoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgeDQ1Ni5fX2ZpbGVfXy5zdGFydHN3aXRoKCVy
KQotICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICAlIHN0cihyb290MikKKyAgICAgICAgICAg
ICAgICBpbXBvcnQgeDQ1NgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCB4NDU2Ll9fZmlsZV9fLnN0YXJ0c3dpdGgoeyFyfSkKKyAgICAgICAg
ICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzdHIocm9vdDIpCisgICAg
ICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHdpdGggcm9v
dDIuYXNfY3dkKCk6CkBAIC03NSw3ICs3MCw3IEBAIGNsYXNzIFRlc3RNb2R1bGUob2JqZWN0KToK
ICAgICBkZWYgdGVzdF9pbnZhbGlkX3Rlc3RfbW9kdWxlX25hbWUoc2VsZiwgdGVzdGRpcik6CiAg
ICAgICAgIGEgPSB0ZXN0ZGlyLm1rZGlyKCJhIikKICAgICAgICAgYS5lbnN1cmUoInRlc3Rfb25l
LnBhcnQxLnB5IikKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ydyIpCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICJJbXBvcnRF
cnJvciB3aGlsZSBpbXBvcnRpbmcgdGVzdCBtb2R1bGUqdGVzdF9vbmUucGFydDEqIiwKQEAgLTEx
MywyMiArMTA4LDE2IEBAIGNsYXNzIFRlc3RNb2R1bGUob2JqZWN0KToKICAgICAgICAgYXNzZXJ0
IHJlc3VsdC5yZXQgPT0gMgogCiAgICAgICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkK
LSAgICAgICAgZm9yIG5hbWUgaW4gKCJfcHl0ZXN0Iiwgb3MucGF0aC5qb2luKCJweSIsICJfcGF0
aCIpKToKLSAgICAgICAgICAgIGlmIHZlcmJvc2UgPT0gMjoKLSAgICAgICAgICAgICAgICBhc3Nl
cnQgbmFtZSBpbiBzdGRvdXQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IG5hbWUgbm90IGluIHN0ZG91dAorICAgICAgICBpZiB2ZXJib3NlID09IDI6CisgICAgICAg
ICAgICBhc3NlcnQgIl9weXRlc3QiIGluIHN0ZG91dAorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgYXNzZXJ0ICJfcHl0ZXN0IiBub3QgaW4gc3Rkb3V0CiAKICAgICBkZWYgdGVzdF9zaG93X3Ry
YWNlYmFja19pbXBvcnRfZXJyb3JfdW5pY29kZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIi
Q2hlY2sgdGVzdCBtb2R1bGVzIGNvbGxlY3RlZCB3aGljaCByYWlzZSBJbXBvcnRFcnJvciB3aXRo
IHVuaWNvZGUgbWVzc2FnZXMKICAgICAgICAgYXJlIGhhbmRsZWQgcHJvcGVybHkgKCMyMzM2KS4K
ICAgICAgICAgIiIiCi0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHUi
IiIKLSAgICAgICAgICAgICMgLSotIGNvZGluZzogdXRmLTggLSotCi0gICAgICAgICAgICByYWlz
ZSBJbXBvcnRFcnJvcih1J1NvbWV0aGluZyBiYWQgaGFwcGVuZWQg4pi6JykKLSAgICAgICAgIiIi
Ci0gICAgICAgICkKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJyYWlzZSBJbXBvcnRFcnJv
cignU29tZXRoaW5nIGJhZCBoYXBwZW5lZCDimLonKSIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAg
ICAgICAgICAgWwpAQCAtMTQwLDggKzEyOSw3IEBAIGNsYXNzIFRlc3RNb2R1bGUob2JqZWN0KToK
ICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMgogCiAKLWNsYXNzIFRlc3RDbGFzcyhvYmpl
Y3QpOgotCitjbGFzcyBUZXN0Q2xhc3M6CiAgICAgZGVmIHRlc3RfY2xhc3Nfd2l0aF9pbml0X3dh
cm5pbmcoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgpAQCAtMTUwLDEwICsxMzgsMjcgQEAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ydyIpCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAog
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqY2Fubm90IGNvbGxlY3QgdGVzdCBjbGFz
cyAnVGVzdENsYXNzMScgYmVjYXVzZSBpdCBoYXMgYSBfX2luaXRfXyBjb25zdHJ1Y3RvciIKKyAg
ICAgICAgICAgICAgICAiKmNhbm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJ1Rlc3RDbGFzczEnIGJl
Y2F1c2UgaXQgaGFzICIKKyAgICAgICAgICAgICAgICAiYSBfX2luaXRfXyBjb25zdHJ1Y3RvciAo
ZnJvbTogdGVzdF9jbGFzc193aXRoX2luaXRfd2FybmluZy5weSkiCisgICAgICAgICAgICBdCisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2NsYXNzX3dpdGhfbmV3X3dhcm5pbmcoc2VsZiwgdGVz
dGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgY2xhc3MgVGVzdENsYXNzMShvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBf
X25ld19fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIiIgorICAg
ICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICIqY2Fubm90IGNvbGxlY3QgdGVzdCBjbGFzcyAnVGVzdENsYXNzMScgYmVjYXVzZSBpdCBoYXMg
IgorICAgICAgICAgICAgICAgICJhIF9fbmV3X18gY29uc3RydWN0b3IgKGZyb206IHRlc3RfY2xh
c3Nfd2l0aF9uZXdfd2FybmluZy5weSkiCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIApAQCAt
MjI2LDcgKzIzMSw3IEBAIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgogICAgICAgICAgICAgVGVz
dENhc2UgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdUZXN0Q2FzZScsIFsnYSddKQogICAgICAg
ICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJ3
IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICAiKmNhbm5vdCBjb2xsZWN0IHRlc3Qg
Y2xhc3MgJ1Rlc3RDYXNlJyAiCiAgICAgICAgICAgICAiYmVjYXVzZSBpdCBoYXMgYSBfX25ld19f
IGNvbnN0cnVjdG9yKiIKQEAgLTI0MiwyMjkgKzI0NywxNyBAQCBjbGFzcyBUZXN0Q2xhc3Mob2Jq
ZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQotICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xM
RUNURUQKLQotCi1jbGFzcyBUZXN0R2VuZXJhdG9yKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9n
ZW5lcmF0aXZlX2Z1bmN0aW9ucyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgbW9kY29sID0gdGVz
dGRpci5nZXRtb2R1bGVjb2woCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBmdW5j
MShhcmcsIGFyZzIpOgotICAgICAgICAgICAgICAgIGFzc2VydCBhcmcgPT0gYXJnMgotCi0gICAg
ICAgICAgICBkZWYgdGVzdF9nZW4oKToKLSAgICAgICAgICAgICAgICB5aWVsZCBmdW5jMSwgMTcs
IDMqNQotICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmMxLCA0MiwgNio3Ci0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIGNvbGl0ZW1zID0gbW9kY29sLmNvbGxlY3QoKQotICAgICAgICBh
c3NlcnQgbGVuKGNvbGl0ZW1zKSA9PSAxCi0gICAgICAgIGdlbmNvbCA9IGNvbGl0ZW1zWzBdCi0g
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGdlbmNvbCwgcHl0ZXN0LkdlbmVyYXRvcikKLSAgICAg
ICAgZ2VuY29saXRlbXMgPSBnZW5jb2wuY29sbGVjdCgpCi0gICAgICAgIGFzc2VydCBsZW4oZ2Vu
Y29saXRlbXMpID09IDIKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29saXRlbXNbMF0s
IHB5dGVzdC5GdW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29saXRlbXNb
MV0sIHB5dGVzdC5GdW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBdLm5hbWUg
PT0gIlswXSIKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBdLm9iai5fX25hbWVfXyA9PSAi
ZnVuYzEiCi0KLSAgICBkZWYgdGVzdF9nZW5lcmF0aXZlX21ldGhvZHMoc2VsZiwgdGVzdGRpcik6
Ci0gICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKAotICAgICAgICAgICAgIiIi
Ci0gICAgICAgICAgICBkZWYgZnVuYzEoYXJnLCBhcmcyKToKLSAgICAgICAgICAgICAgICBhc3Nl
cnQgYXJnID09IGFyZzIKLSAgICAgICAgICAgIGNsYXNzIFRlc3RHZW5NZXRob2RzKG9iamVjdCk6
Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfZ2VuKHNlbGYpOgotICAgICAgICAgICAgICAgICAg
ICB5aWVsZCBmdW5jMSwgMTcsIDMqNQotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdW5jMSwg
NDIsIDYqNwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBnZW5jb2wgPSBtb2Rjb2wu
Y29sbGVjdCgpWzBdLmNvbGxlY3QoKVswXS5jb2xsZWN0KClbMF0KLSAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UoZ2VuY29sLCBweXRlc3QuR2VuZXJhdG9yKQotICAgICAgICBnZW5jb2xpdGVtcyA9
IGdlbmNvbC5jb2xsZWN0KCkKLSAgICAgICAgYXNzZXJ0IGxlbihnZW5jb2xpdGVtcykgPT0gMgot
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShnZW5jb2xpdGVtc1swXSwgcHl0ZXN0LkZ1bmN0aW9u
KQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShnZW5jb2xpdGVtc1sxXSwgcHl0ZXN0LkZ1bmN0
aW9uKQotICAgICAgICBhc3NlcnQgZ2VuY29saXRlbXNbMF0ubmFtZSA9PSAiWzBdIgotICAgICAg
ICBhc3NlcnQgZ2VuY29saXRlbXNbMF0ub2JqLl9fbmFtZV9fID09ICJmdW5jMSIKLQotICAgIGRl
ZiB0ZXN0X2dlbmVyYXRpdmVfZnVuY3Rpb25zX3dpdGhfZXhwbGljaXRfbmFtZXMoc2VsZiwgdGVz
dGRpcik6Ci0gICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKAotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBkZWYgZnVuYzEoYXJnLCBhcmcyKToKLSAgICAgICAgICAgICAg
ICBhc3NlcnQgYXJnID09IGFyZzIKLQotICAgICAgICAgICAgZGVmIHRlc3RfZ2VuKCk6Ci0gICAg
ICAgICAgICAgICAgeWllbGQgInNldmVudGVlbiIsIGZ1bmMxLCAxNywgMyo1Ci0gICAgICAgICAg
ICAgICAgeWllbGQgImZvcnR5dHdvIiwgZnVuYzEsIDQyLCA2KjcKLSAgICAgICAgIiIiCi0gICAg
ICAgICkKLSAgICAgICAgY29saXRlbXMgPSBtb2Rjb2wuY29sbGVjdCgpCi0gICAgICAgIGFzc2Vy
dCBsZW4oY29saXRlbXMpID09IDEKLSAgICAgICAgZ2VuY29sID0gY29saXRlbXNbMF0KLSAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29sLCBweXRlc3QuR2VuZXJhdG9yKQotICAgICAgICBn
ZW5jb2xpdGVtcyA9IGdlbmNvbC5jb2xsZWN0KCkKLSAgICAgICAgYXNzZXJ0IGxlbihnZW5jb2xp
dGVtcykgPT0gMgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShnZW5jb2xpdGVtc1swXSwgcHl0
ZXN0LkZ1bmN0aW9uKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShnZW5jb2xpdGVtc1sxXSwg
cHl0ZXN0LkZ1bmN0aW9uKQotICAgICAgICBhc3NlcnQgZ2VuY29saXRlbXNbMF0ubmFtZSA9PSAi
WydzZXZlbnRlZW4nXSIKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBdLm9iai5fX25hbWVf
XyA9PSAiZnVuYzEiCi0gICAgICAgIGFzc2VydCBnZW5jb2xpdGVtc1sxXS5uYW1lID09ICJbJ2Zv
cnR5dHdvJ10iCi0gICAgICAgIGFzc2VydCBnZW5jb2xpdGVtc1sxXS5vYmouX19uYW1lX18gPT0g
ImZ1bmMxIgotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZV9mdW5jdGlvbnNfdW5pcXVlX2V4cGxp
Y2l0X25hbWVzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAjIGdlbmVyYXRpdmUKLSAgICAgICAg
bW9kY29sID0gdGVzdGRpci5nZXRtb2R1bGVjb2woCi0gICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGRlZiBmdW5jKCk6IHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0X2dlbigpOgotICAgICAg
ICAgICAgICAgIHlpZWxkICJuYW1lIiwgZnVuYwotICAgICAgICAgICAgICAgIHlpZWxkICJuYW1l
IiwgZnVuYwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjb2xpdGVtcyA9IG1vZGNv
bC5jb2xsZWN0KCkKLSAgICAgICAgYXNzZXJ0IGxlbihjb2xpdGVtcykgPT0gMQotICAgICAgICBn
ZW5jb2wgPSBjb2xpdGVtc1swXQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShnZW5jb2wsIHB5
dGVzdC5HZW5lcmF0b3IpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgImdlbmNv
bC5jb2xsZWN0KCkiKQotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZV9tZXRob2RzX3dpdGhfZXhw
bGljaXRfbmFtZXMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0
bW9kdWxlY29sKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgZnVuYzEoYXJnLCBh
cmcyKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYXJnID09IGFyZzIKLSAgICAgICAgICAgIGNs
YXNzIFRlc3RHZW5NZXRob2RzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfZ2Vu
KHNlbGYpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCAibTEiLCBmdW5jMSwgMTcsIDMqNQot
ICAgICAgICAgICAgICAgICAgICB5aWVsZCAibTIiLCBmdW5jMSwgNDIsIDYqNwotICAgICAgICAi
IiIKLSAgICAgICAgKQotICAgICAgICBnZW5jb2wgPSBtb2Rjb2wuY29sbGVjdCgpWzBdLmNvbGxl
Y3QoKVswXS5jb2xsZWN0KClbMF0KLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29sLCBw
eXRlc3QuR2VuZXJhdG9yKQotICAgICAgICBnZW5jb2xpdGVtcyA9IGdlbmNvbC5jb2xsZWN0KCkK
LSAgICAgICAgYXNzZXJ0IGxlbihnZW5jb2xpdGVtcykgPT0gMgotICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShnZW5jb2xpdGVtc1swXSwgcHl0ZXN0LkZ1bmN0aW9uKQotICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShnZW5jb2xpdGVtc1sxXSwgcHl0ZXN0LkZ1bmN0aW9uKQotICAgICAgICBhc3Nl
cnQgZ2VuY29saXRlbXNbMF0ubmFtZSA9PSAiWydtMSddIgotICAgICAgICBhc3NlcnQgZ2VuY29s
aXRlbXNbMF0ub2JqLl9fbmFtZV9fID09ICJmdW5jMSIKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0
ZW1zWzFdLm5hbWUgPT0gIlsnbTInXSIKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzFdLm9i
ai5fX25hbWVfXyA9PSAiZnVuYzEiCi0KLSAgICBkZWYgdGVzdF9vcmRlcl9vZl9leGVjdXRpb25f
Z2VuZXJhdG9yX3NhbWVfY29kZWxpbmUoc2VsZiwgdGVzdGRpciwgdG1wZGlyKToKLSAgICAgICAg
byA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotICAgICAgICAgICAgZGVmIHRlc3Rf
Z2VuZXJhdGl2ZV9vcmRlcl9vZl9leGVjdXRpb24oKToKLSAgICAgICAgICAgICAgICBpbXBvcnQg
cHksIHB5dGVzdAotICAgICAgICAgICAgICAgIHRlc3RfbGlzdCA9IFtdCi0gICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfbGlzdCA9IGxpc3QocmFuZ2UoNikpCi0KLSAgICAgICAgICAgICAgICBkZWYg
bGlzdF9hcHBlbmQoaXRlbSk6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdC5hcHBlbmQo
aXRlbSkKLQotICAgICAgICAgICAgICAgIGRlZiBhc3NlcnRfb3JkZXJfb2ZfZXhlY3V0aW9uKCk6
Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCdleHBlY3RlZCBvcmRlcicsIGV4cGVjdGVkX2xp
c3QpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdidXQgZ290ICAgICAgICcsIHRlc3RfbGlz
dCkKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHRlc3RfbGlzdCA9PSBleHBlY3RlZF9saXN0
Ci0KLSAgICAgICAgICAgICAgICBmb3IgaSBpbiBleHBlY3RlZF9saXN0OgotICAgICAgICAgICAg
ICAgICAgICB5aWVsZCBsaXN0X2FwcGVuZCwgaQotICAgICAgICAgICAgICAgIHlpZWxkIGFzc2Vy
dF9vcmRlcl9vZl9leGVjdXRpb24KLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVw
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKG8pCi0gICAgICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFp
bGVkID0gcmVwcmVjLmNvdW50b3V0Y29tZXMoKQotICAgICAgICBhc3NlcnQgcGFzc2VkID09IDcK
LSAgICAgICAgYXNzZXJ0IG5vdCBza2lwcGVkIGFuZCBub3QgZmFpbGVkCi0KLSAgICBkZWYgdGVz
dF9vcmRlcl9vZl9leGVjdXRpb25fZ2VuZXJhdG9yX2RpZmZlcmVudF9jb2RlbGluZShzZWxmLCB0
ZXN0ZGlyKToKLSAgICAgICAgbyA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIi
IgotICAgICAgICAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotICAg
ICAgICAgICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZV90ZXN0c19kaWZmZXJlbnRfY29kZWxpbmUoKToK
LSAgICAgICAgICAgICAgICBpbXBvcnQgcHksIHB5dGVzdAotICAgICAgICAgICAgICAgIHRlc3Rf
bGlzdCA9IFtdCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGlzdCA9IGxpc3QocmFuZ2UoMykp
Ci0KLSAgICAgICAgICAgICAgICBkZWYgbGlzdF9hcHBlbmRfMigpOgotICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2xpc3QuYXBwZW5kKDIpCi0KLSAgICAgICAgICAgICAgICBkZWYgbGlzdF9hcHBl
bmRfMSgpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QuYXBwZW5kKDEpCi0KLSAgICAg
ICAgICAgICAgICBkZWYgbGlzdF9hcHBlbmRfMCgpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0
X2xpc3QuYXBwZW5kKDApCi0KLSAgICAgICAgICAgICAgICBkZWYgYXNzZXJ0X29yZGVyX29mX2V4
ZWN1dGlvbigpOgotICAgICAgICAgICAgICAgICAgICBwcmludCgnZXhwZWN0ZWQgb3JkZXInLCBl
eHBlY3RlZF9saXN0KQotICAgICAgICAgICAgICAgICAgICBwcmludCgnYnV0IGdvdCAgICAgICAn
LCB0ZXN0X2xpc3QpCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydCB0ZXN0X2xpc3QgPT0gZXhw
ZWN0ZWRfbGlzdAotCi0gICAgICAgICAgICAgICAgeWllbGQgbGlzdF9hcHBlbmRfMAotICAgICAg
ICAgICAgICAgIHlpZWxkIGxpc3RfYXBwZW5kXzEKLSAgICAgICAgICAgICAgICB5aWVsZCBsaXN0
X2FwcGVuZF8yCi0gICAgICAgICAgICAgICAgeWllbGQgYXNzZXJ0X29yZGVyX29mX2V4ZWN1dGlv
bgotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGlu
ZV9ydW4obykKLSAgICAgICAgcGFzc2VkLCBza2lwcGVkLCBmYWlsZWQgPSByZXByZWMuY291bnRv
dXRjb21lcygpCi0gICAgICAgIGFzc2VydCBwYXNzZWQgPT0gNAotICAgICAgICBhc3NlcnQgbm90
IHNraXBwZWQgYW5kIG5vdCBmYWlsZWQKLQotICAgIGRlZiB0ZXN0X3NldHVwc3RhdGVfaXNfcHJl
c2VydmVkXzEzNChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIyB5aWVsZC1iYXNlZCB0ZXN0cyBh
cmUgbWVzc3kgd3J0IHRvIHNldHVwc3RhdGUgYmVjYXVzZQotICAgICAgICAjIGR1cmluZyBjb2xs
ZWN0aW9uIHRoZXkgYWxyZWFkeSBpbnZva2Ugc2V0dXAgZnVuY3Rpb25zCi0gICAgICAgICMgYW5k
IHRoZW4gYWdhaW4gd2hlbiB0aGV5IGFyZSBydW4uICBGb3Igbm93LCB3ZSB3YW50IHRvIG1ha2Ug
c3VyZQotICAgICAgICAjIHRoYXQgdGhlIG9sZCAxLjMuNCBiZWhhdmlvdXIgaXMgcHJlc2VydmVk
IHN1Y2ggdGhhdCBhbGwKLSAgICAgICAgIyB5aWVsZGVkIGZ1bmN0aW9ucyBhbGwgc2hhcmUgdGhl
IHNhbWUgInNlbGYiIGluc3RhbmNlIHRoYXQKLSAgICAgICAgIyBoYXMgYmVlbiB1c2VkIGR1cmlu
ZyBjb2xsZWN0aW9uLgotICAgICAgICBvID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBzZXR1cGxpc3QgPSBbXQotICAgICAgICAgICAgY2xhc3MgVGVz
dENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHNldHVwX21ldGhvZChzZWxmLCBm
dW5jKToKLSAgICAgICAgICAgICAgICAgICAgI3ByaW50ICJzZXR1cF9tZXRob2QiLCBzZWxmLCBm
dW5jCi0gICAgICAgICAgICAgICAgICAgIHNldHVwbGlzdC5hcHBlbmQoc2VsZikKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5pbml0ID0gNDIKLQotICAgICAgICAgICAgICAgIGRlZiB0ZWFyZG93
bl9tZXRob2Qoc2VsZiwgZnVuYyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdCA9IE5v
bmUKLQotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMxKHNlbGYpOgotICAgICAgICAgICAg
ICAgICAgICBwYXNzCi0KLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMihzZWxmKToKLSAg
ICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5mdW5jMgotICAgICAgICAgICAgICAgICAgICB5
aWVsZCBzZWxmLmZ1bmMyCi0KLSAgICAgICAgICAgICAgICBkZWYgZnVuYzIoc2VsZik6Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLmluaXQKLQotICAgICAgICAgICAgZGVmIHRlc3Rf
c2V0dXBsaXN0KCk6Ci0gICAgICAgICAgICAgICAgIyBvbmNlIGZvciB0ZXN0X2Z1bmMyIGR1cmlu
ZyBjb2xsZWN0aW9uCi0gICAgICAgICAgICAgICAgIyBvbmNlIGZvciB0ZXN0X2Z1bmMxIGR1cmlu
ZyB0ZXN0IHJ1bgotICAgICAgICAgICAgICAgICMgb25jZSBmb3IgdGVzdF9mdW5jMiBkdXJpbmcg
dGVzdCBydW4KLSAgICAgICAgICAgICAgICAjcHJpbnQgc2V0dXBsaXN0Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0IGxlbihzZXR1cGxpc3QpID09IDMsIGxlbihzZXR1cGxpc3QpCi0gICAgICAgICAg
ICAgICAgYXNzZXJ0IHNldHVwbGlzdFswXSA9PSBzZXR1cGxpc3RbMl0sIHNldHVwbGlzdAotICAg
ICAgICAgICAgICAgIGFzc2VydCBzZXR1cGxpc3RbMV0gIT0gc2V0dXBsaXN0WzJdLCBzZXR1cGxp
c3QKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxp
bmVfcnVuKG8sICItdiIpCi0gICAgICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbGVkID0gcmVwcmVj
LmNvdW50b3V0Y29tZXMoKQotICAgICAgICBhc3NlcnQgcGFzc2VkID09IDQKLSAgICAgICAgYXNz
ZXJ0IG5vdCBza2lwcGVkIGFuZCBub3QgZmFpbGVkCi0KKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKLWNsYXNzIFRlc3RGdW5jdGlvbihv
YmplY3QpOgogCitjbGFzcyBUZXN0RnVuY3Rpb246CiAgICAgZGVmIHRlc3RfZ2V0bW9kdWxlY29s
bGVjdG9yKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKCJk
ZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQogICAgICAgICBtb2Rjb2wgPSBpdGVtLmdldHBhcmVudChw
eXRlc3QuTW9kdWxlKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtb2Rjb2wsIHB5dGVzdC5N
b2R1bGUpCiAgICAgICAgIGFzc2VydCBoYXNhdHRyKG1vZGNvbC5vYmosICJ0ZXN0X2Z1bmMiKQog
CisgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikKICAgICBkZWYgdGVz
dF9mdW5jdGlvbl9hc19vYmplY3RfaW5zdGFuY2VfaWdub3JlZChzZWxmLCB0ZXN0ZGlyKToKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC00NzUsMjkgKzI2
OCw0NSBAQCBjbGFzcyBUZXN0RnVuY3Rpb24ob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfYSA9
IEEoKQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlu
bGluZV9ydW4oKQotICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZSgpCisgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMCBpdGVtcyIs
CisgICAgICAgICAgICAgICAgIip0ZXN0X2Z1bmN0aW9uX2FzX29iamVjdF9pbnN0YW5jZV9pZ25v
cmVkLnB5OjI6ICIKKyAgICAgICAgICAgICAgICAiKmNhbm5vdCBjb2xsZWN0ICd0ZXN0X2EnIGJl
Y2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQog
Ci0gICAgZGVmIHRlc3RfZnVuY3Rpb25fZXF1YWxpdHkoc2VsZiwgdGVzdGRpciwgdG1wZGlyKToK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1ha2VfZnVuY3Rpb24odGVzdGRpciwgKiprd2Fy
Z3MpOgogICAgICAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZpeHR1cmVNYW5hZ2Vy
CiAKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZ3VyZSgpCi0gICAgICAgIHNl
c3Npb24gPSB0ZXN0ZGlyLlNlc3Npb24oY29uZmlnKQorICAgICAgICBzZXNzaW9uID0gdGVzdGRp
ci5TZXNzaW9uLmZyb21fY29uZmlnKGNvbmZpZykKICAgICAgICAgc2Vzc2lvbi5fZml4dHVyZW1h
bmFnZXIgPSBGaXh0dXJlTWFuYWdlcihzZXNzaW9uKQogCisgICAgICAgIHJldHVybiBweXRlc3Qu
RnVuY3Rpb24uZnJvbV9wYXJlbnQocGFyZW50PXNlc3Npb24sICoqa3dhcmdzKQorCisgICAgZGVm
IHRlc3RfZnVuY3Rpb25fZXF1YWxpdHkoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGRlZiBmdW5j
MSgpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlZiBmdW5jMigpOgogICAgICAgICAg
ICAgcGFzcwogCi0gICAgICAgIGYxID0gcHl0ZXN0LkZ1bmN0aW9uKAotICAgICAgICAgICAgbmFt
ZT0ibmFtZSIsIHBhcmVudD1zZXNzaW9uLCBjb25maWc9Y29uZmlnLCBhcmdzPSgxLCksIGNhbGxv
Ymo9ZnVuYzEKLSAgICAgICAgKQorICAgICAgICBmMSA9IHNlbGYubWFrZV9mdW5jdGlvbih0ZXN0
ZGlyLCBuYW1lPSJuYW1lIiwgY2FsbG9iaj1mdW5jMSkKICAgICAgICAgYXNzZXJ0IGYxID09IGYx
Ci0gICAgICAgIGYyID0gcHl0ZXN0LkZ1bmN0aW9uKG5hbWU9Im5hbWUiLCBjb25maWc9Y29uZmln
LCBjYWxsb2JqPWZ1bmMyLCBwYXJlbnQ9c2Vzc2lvbikKKyAgICAgICAgZjIgPSBzZWxmLm1ha2Vf
ZnVuY3Rpb24oCisgICAgICAgICAgICB0ZXN0ZGlyLCBuYW1lPSJuYW1lIiwgY2FsbG9iaj1mdW5j
Miwgb3JpZ2luYWxuYW1lPSJmb29iYXIiCisgICAgICAgICkKICAgICAgICAgYXNzZXJ0IGYxICE9
IGYyCiAKKyAgICBkZWYgdGVzdF9yZXByX3Byb2R1Y2VzX2FjdHVhbF90ZXN0X2lkKHNlbGYsIHRl
c3RkaXIpOgorICAgICAgICBmID0gc2VsZi5tYWtlX2Z1bmN0aW9uKAorICAgICAgICAgICAgdGVz
dGRpciwgbmFtZT1yInRlc3RbXHhlNV0iLCBjYWxsb2JqPXNlbGYudGVzdF9yZXByX3Byb2R1Y2Vz
X2FjdHVhbF90ZXN0X2lkCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlcHIoZikgPT0gciI8
RnVuY3Rpb24gdGVzdFtceGU1XT4iCisKICAgICBkZWYgdGVzdF9pc3N1ZTE5N19wYXJhbWV0cml6
ZV9lbXB0eXNldChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAog
ICAgICAgICAgICAgIiIiCkBAIC02MzQsNyArNDQzLDM3IEBAIGNsYXNzIFRlc3RGdW5jdGlvbihv
YmplY3QpOgogICAgICAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZWMu
YXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAotICAgIEBpZ25vcmVfcGFyYW1ldHJpemVkX21hcmtz
CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfb3ZlcnJpZGVzX2luZGlyZWN0X2RlcGVuZGVuY3lf
Zml4dHVyZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiVGVzdCBwYXJhbWV0cml6YXRpb24g
d2hlbiBwYXJhbWV0ZXIgb3ZlcnJpZGVzIGEgZml4dHVyZSB0aGF0IGEgdGVzdCBpbmRpcmVjdGx5
IGRlcGVuZHMgb24iIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIGZpeDNfaW5zdGFu
dGlhdGVkID0gRmFsc2UKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAg
ICBkZWYgZml4MShmaXgyKToKKyAgICAgICAgICAgICAgIHJldHVybiBmaXgyICsgJzEnCisKKyAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgZGVmIGZpeDIoZml4Myk6Cisg
ICAgICAgICAgICAgICByZXR1cm4gZml4MyArICcyJworCisgICAgICAgICAgICBAcHl0ZXN0LmZp
eHR1cmUKKyAgICAgICAgICAgIGRlZiBmaXgzKCk6CisgICAgICAgICAgICAgICBnbG9iYWwgZml4
M19pbnN0YW50aWF0ZWQKKyAgICAgICAgICAgICAgIGZpeDNfaW5zdGFudGlhdGVkID0gVHJ1ZQor
ICAgICAgICAgICAgICAgcmV0dXJuICczJworCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoJ2ZpeDInLCBbJzInXSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X2l0KGZpeDEpOgor
ICAgICAgICAgICAgICAgYXNzZXJ0IGZpeDEgPT0gJzIxJworICAgICAgICAgICAgICAgYXNzZXJ0
IG5vdCBmaXgzX2luc3RhbnRpYXRlZAorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MSkKKwogICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfbWFyayhzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgaXRlbXMgPSB0ZXN0ZGlyLmdldGl0ZW1zKAogICAgICAgICAgICAgIiIiCkBA
IC02NDIsNyArNDgxLDcgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uKG9iamVjdCk6CiAgICAgICAgICAg
ICBAcHl0ZXN0Lm1hcmsuZm9vCiAgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
J2FyZycsIFsKICAgICAgICAgICAgICAgICAxLAotICAgICAgICAgICAgICAgIHB5dGVzdC5tYXJr
LmJhcihweXRlc3QubWFyay5iYXooMikpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKDIs
IG1hcmtzPVtweXRlc3QubWFyay5iYXosIHB5dGVzdC5tYXJrLmJhcl0pCiAgICAgICAgICAgICBd
KQogICAgICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oYXJnKToKICAgICAgICAgICAgICAgICBw
YXNzCkBAIC02NTYsNyArNDk1LDIwIEBAIGNsYXNzIFRlc3RGdW5jdGlvbihvYmplY3QpOgogICAg
ICAgICApCiAgICAgICAgIGFzc2VydCAiZm9vIiBpbiBrZXl3b3Jkc1sxXSBhbmQgImJhciIgaW4g
a2V5d29yZHNbMV0gYW5kICJiYXoiIGluIGtleXdvcmRzWzFdCiAKLSAgICBkZWYgdGVzdF9mdW5j
dGlvbl9lcXVhbGl0eV93aXRoX2NhbGxzcGVjKHNlbGYsIHRlc3RkaXIsIHRtcGRpcik6CisgICAg
ZGVmIHRlc3RfcGFyYW1ldHJpemVfd2l0aF9lbXB0eV9zdHJpbmdfYXJndW1lbnRzKHNlbGYsIHRl
c3RkaXIpOgorICAgICAgICBpdGVtcyA9IHRlc3RkaXIuZ2V0aXRlbXMoCisgICAgICAgICAgICAi
IiJcCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgndicsICgnJywgJyAnKSkKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgndycsICgnJywgJyAnKSkKKyAgICAgICAgICAgIGRlZiB0ZXN0KHYsIHcpOiAu
Li4KKyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIG5hbWVzID0ge2l0ZW0ubmFt
ZSBmb3IgaXRlbSBpbiBpdGVtc30KKyAgICAgICAgYXNzZXJ0IG5hbWVzID09IHsidGVzdFstXSIs
ICJ0ZXN0WyAtXSIsICJ0ZXN0Wy0gXSIsICJ0ZXN0WyAtIF0ifQorCisgICAgZGVmIHRlc3RfZnVu
Y3Rpb25fZXF1YWxpdHlfd2l0aF9jYWxsc3BlYyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRl
bXMgPSB0ZXN0ZGlyLmdldGl0ZW1zKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0CkBAIC02NzIsMTQgKzUyNCwxMiBAQCBjbGFzcyBUZXN0RnVuY3Rpb24ob2JqZWN0
KToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgiZGVmIHRlc3RfZnVuYygpOiByYWlz
ZSBWYWx1ZUVycm9yIikKICAgICAgICAgY29uZmlnID0gaXRlbS5jb25maWcKIAotICAgICAgICBj
bGFzcyBNeVBsdWdpbjEob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIHB5dGVzdF9weWZ1bmNf
Y2FsbChzZWxmLCBweWZ1bmNpdGVtKToKKyAgICAgICAgY2xhc3MgTXlQbHVnaW4xOgorICAgICAg
ICAgICAgZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChzZWxmKToKICAgICAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yCiAKLSAgICAgICAgY2xhc3MgTXlQbHVnaW4yKG9iamVjdCk6Ci0KLSAgICAg
ICAgICAgIGRlZiBweXRlc3RfcHlmdW5jX2NhbGwoc2VsZiwgcHlmdW5jaXRlbSk6CisgICAgICAg
IGNsYXNzIE15UGx1Z2luMjoKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcHlmdW5jX2NhbGwoc2Vs
Zik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICBjb25maWcucGx1Z2lu
bWFuYWdlci5yZWdpc3RlcihNeVBsdWdpbjEoKSkKQEAgLTcyMiw3ICs1NzIsNiBAQCBjbGFzcyBU
ZXN0RnVuY3Rpb24ob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGNvbGl0ZW1zWzJdLm5hbWUgPT0g
InRlc3QyW2EtY10iCiAgICAgICAgIGFzc2VydCBjb2xpdGVtc1szXS5uYW1lID09ICJ0ZXN0Mlti
LWNdIgogCi0gICAgQGlnbm9yZV9wYXJhbWV0cml6ZWRfbWFya3MKICAgICBkZWYgdGVzdF9wYXJh
bWV0cml6ZV9za2lwaWYoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgpAQCAtNzMwLDE1ICs1NzksMTQgQEAgY2xhc3MgVGVzdEZ1bmN0
aW9uKG9iamVjdCk6CiAKICAgICAgICAgICAgIG0gPSBweXRlc3QubWFyay5za2lwaWYoJ1RydWUn
KQogCi0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3gnLCBbMCwgMSwgbSgy
KV0pCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3gnLCBbMCwgMSwgcHl0
ZXN0LnBhcmFtKDIsIG1hcmtzPW0pXSkKICAgICAgICAgICAgIGRlZiB0ZXN0X3NraXBfaWYoeCk6
CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHggPCAyCiAgICAgICAgICIiIgogICAgICAgICApCiAg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKCIqIDIgcGFzc2VkLCAxIHNraXBwZWQgaW4gKiIpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMiBwYXNzZWQsIDEgc2tpcHBlZCBpbiAqIl0p
CiAKLSAgICBAaWdub3JlX3BhcmFtZXRyaXplZF9tYXJrcwogICAgIGRlZiB0ZXN0X3BhcmFtZXRy
aXplX3NraXAoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgICAgICIiIgpAQCAtNzQ2LDE1ICs1OTQsMTQgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uKG9i
amVjdCk6CiAKICAgICAgICAgICAgIG0gPSBweXRlc3QubWFyay5za2lwKCcnKQogCi0gICAgICAg
ICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3gnLCBbMCwgMSwgbSgyKV0pCisgICAgICAg
ICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3gnLCBbMCwgMSwgcHl0ZXN0LnBhcmFtKDIs
IG1hcmtzPW0pXSkKICAgICAgICAgICAgIGRlZiB0ZXN0X3NraXAoeCk6CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0IHggPCAyCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KCIqIDIgcGFzc2VkLCAxIHNraXBwZWQgaW4gKiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIiogMiBwYXNzZWQsIDEgc2tpcHBlZCBpbiAqIl0pCiAKLSAgICBAaWdub3Jl
X3BhcmFtZXRyaXplZF9tYXJrcwogICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3NraXBpZl9ub19z
a2lwKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAg
ICAgICAiIiIKQEAgLTc2OCw5ICs2MTUsOCBAQCBjbGFzcyBUZXN0RnVuY3Rpb24ob2JqZWN0KToK
ICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiogMSBmYWlsZWQsIDIg
cGFzc2VkIGluICoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEg
ZmFpbGVkLCAyIHBhc3NlZCBpbiAqIl0pCiAKLSAgICBAaWdub3JlX3BhcmFtZXRyaXplZF9tYXJr
cwogICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3hmYWlsKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTc3OCwxNSArNjI0LDE0
IEBAIGNsYXNzIFRlc3RGdW5jdGlvbihvYmplY3QpOgogCiAgICAgICAgICAgICBtID0gcHl0ZXN0
Lm1hcmsueGZhaWwoJ1RydWUnKQogCi0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoJ3gnLCBbMCwgMSwgbSgyKV0pCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoJ3gnLCBbMCwgMSwgcHl0ZXN0LnBhcmFtKDIsIG1hcmtzPW0pXSkKICAgICAgICAgICAgIGRl
ZiB0ZXN0X3hmYWlsKHgpOgogICAgICAgICAgICAgICAgIGFzc2VydCB4IDwgMgogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKiAyIHBhc3NlZCwgMSB4ZmFpbGVkIGlu
ICoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDIgcGFzc2VkLCAx
IHhmYWlsZWQgaW4gKiJdKQogCi0gICAgQGlnbm9yZV9wYXJhbWV0cml6ZWRfbWFya3MKICAgICBk
ZWYgdGVzdF9wYXJhbWV0cml6ZV9wYXNzZWQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtNzk0LDE1ICs2MzksMTQgQEAgY2xh
c3MgVGVzdEZ1bmN0aW9uKG9iamVjdCk6CiAKICAgICAgICAgICAgIG0gPSBweXRlc3QubWFyay54
ZmFpbCgnVHJ1ZScpCiAKLSAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgneCcs
IFswLCAxLCBtKDIpXSkKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgneCcs
IFswLCAxLCBweXRlc3QucGFyYW0oMiwgbWFya3M9bSldKQogICAgICAgICAgICAgZGVmIHRlc3Rf
eGZhaWwoeCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygiKiAyIHBhc3NlZCwgMSB4cGFzc2VkIGluICoiKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDIgcGFzc2VkLCAxIHhwYXNzZWQgaW4gKiJd
KQogCi0gICAgQGlnbm9yZV9wYXJhbWV0cml6ZWRfbWFya3MKICAgICBkZWYgdGVzdF9wYXJhbWV0
cml6ZV94ZmFpbF9wYXNzZWQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtODE2LDIzICs2NjAsNDkgQEAgY2xhc3MgVGVzdEZ1
bmN0aW9uKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KCIqIDMgcGFzc2VkIGluICoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqIDMgcGFzc2VkIGluICoiXSkKIAotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX29yaWdpbmFsX25h
bWUoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfZnVuY3Rpb25fb3JpZ2luYWxuYW1lKHNl
bGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIGl0ZW1zID0gdGVzdGRpci5n
ZXRpdGVtcygKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCiAg
ICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ2FyZycsIFsxLDJdKQogICAgICAg
ICAgICAgZGVmIHRlc3RfZnVuYyhhcmcpOgogICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICAgICAgZGVmIHRlc3Rfbm9fcGFyYW0oKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIGFzc2VydCBbeC5vcmlnaW5hbG5hbWUgZm9yIHggaW4g
aXRlbXNdID09IFsidGVzdF9mdW5jIiwgInRlc3RfZnVuYyJdCisgICAgICAgIG9yaWdpbmFsbmFt
ZXMgPSBbXQorICAgICAgICBmb3IgeCBpbiBpdGVtczoKKyAgICAgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHgsIHB5dGVzdC5GdW5jdGlvbikKKyAgICAgICAgICAgIG9yaWdpbmFsbmFtZXMuYXBw
ZW5kKHgub3JpZ2luYWxuYW1lKQorICAgICAgICBhc3NlcnQgb3JpZ2luYWxuYW1lcyA9PSBbCisg
ICAgICAgICAgICAidGVzdF9mdW5jIiwKKyAgICAgICAgICAgICJ0ZXN0X2Z1bmMiLAorICAgICAg
ICAgICAgInRlc3Rfbm9fcGFyYW0iLAorICAgICAgICBdCiAKKyAgICBkZWYgdGVzdF9mdW5jdGlv
bl93aXRoX3NxdWFyZV9icmFja2V0cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgor
ICAgICAgICAiIiJDaGVjayB0aGF0IGZ1bmN0aW9ucyB3aXRoIHNxdWFyZSBicmFja2V0cyBkb24n
dCBjYXVzZSB0cm91YmxlLiIiIgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgbG9jYWxzKClbInRlc3RfZm9vW25hbWVdIl0gPSBs
YW1iZGE6IE5vbmUKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsIHN0cihwMSkpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAidGVzdF9mdW5j
dGlvbl93aXRoX3NxdWFyZV9icmFja2V0cy5weTo6dGVzdF9mb29bW11uYW1lW11dIFBBU1NFRCAq
IiwKKyAgICAgICAgICAgICAgICAiKj0gMSBwYXNzZWQgaW4gKiIsCisgICAgICAgICAgICBdCisg
ICAgICAgICkKIAotY2xhc3MgVGVzdFNvcnRpbmcob2JqZWN0KToKIAotICAgIGRlZiB0ZXN0X2No
ZWNrX2VxdWFsaXR5KHNlbGYsIHRlc3RkaXIpOgorY2xhc3MgVGVzdFNvcnRpbmc6CisgICAgZGVm
IHRlc3RfY2hlY2tfZXF1YWxpdHkoc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgbW9k
Y29sID0gdGVzdGRpci5nZXRtb2R1bGVjb2woCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
IGRlZiB0ZXN0X3Bhc3MoKTogcGFzcwpAQCAtODQ2LDggKzcxNiw2IEBAIGNsYXNzIFRlc3RTb3J0
aW5nKG9iamVjdCk6CiAKICAgICAgICAgYXNzZXJ0IGZuMSA9PSBmbjIKICAgICAgICAgYXNzZXJ0
IGZuMSAhPSBtb2Rjb2wKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAg
ICAgICAgICAgIGFzc2VydCBjbXAoZm4xLCBmbjIpID09IDAgICMgTk9RQQogICAgICAgICBhc3Nl
cnQgaGFzaChmbjEpID09IGhhc2goZm4yKQogCiAgICAgICAgIGZuMyA9IHRlc3RkaXIuY29sbGVj
dF9ieV9uYW1lKG1vZGNvbCwgInRlc3RfZmFpbCIpCkBAIC04NTYsMTAgKzcyNCwxMCBAQCBjbGFz
cyBUZXN0U29ydGluZyhvYmplY3QpOgogICAgICAgICBhc3NlcnQgZm4xICE9IGZuMwogCiAgICAg
ICAgIGZvciBmbiBpbiBmbjEsIGZuMiwgZm4zOgotICAgICAgICAgICAgYXNzZXJ0IGZuICE9IDMK
KyAgICAgICAgICAgIGFzc2VydCBmbiAhPSAzICAjIHR5cGU6IGlnbm9yZVtjb21wYXJpc29uLW92
ZXJsYXBdCiAgICAgICAgICAgICBhc3NlcnQgZm4gIT0gbW9kY29sCi0gICAgICAgICAgICBhc3Nl
cnQgZm4gIT0gWzEsIDIsIDNdCi0gICAgICAgICAgICBhc3NlcnQgWzEsIDIsIDNdICE9IGZuCisg
ICAgICAgICAgICBhc3NlcnQgZm4gIT0gWzEsIDIsIDNdICAjIHR5cGU6IGlnbm9yZVtjb21wYXJp
c29uLW92ZXJsYXBdCisgICAgICAgICAgICBhc3NlcnQgWzEsIDIsIDNdICE9IGZuICAjIHR5cGU6
IGlnbm9yZVtjb21wYXJpc29uLW92ZXJsYXBdCiAgICAgICAgICAgICBhc3NlcnQgbW9kY29sICE9
IGZuCiAKICAgICBkZWYgdGVzdF9hbGxvd19zYW5lX3NvcnRpbmdfZm9yX2RlY29yYXRvcnMoc2Vs
ZiwgdGVzdGRpcik6CkBAIC04ODUsOCArNzUzLDcgQEAgY2xhc3MgVGVzdFNvcnRpbmcob2JqZWN0
KToKICAgICAgICAgYXNzZXJ0IFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gY29saXRlbXNdID09IFsi
dGVzdF9iIiwgInRlc3RfYSJdCiAKIAotY2xhc3MgVGVzdENvbmZ0ZXN0Q3VzdG9taXphdGlvbihv
YmplY3QpOgotCitjbGFzcyBUZXN0Q29uZnRlc3RDdXN0b21pemF0aW9uOgogICAgIGRlZiB0ZXN0
X3B5dGVzdF9weWNvbGxlY3RfbW9kdWxlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGly
Lm1ha2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgpAQCAtODk1LDcgKzc2Miw3IEBAIGNsYXNz
IFRlc3RDb25mdGVzdEN1c3RvbWl6YXRpb24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXNz
CiAgICAgICAgICAgICBkZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVu
dCk6CiAgICAgICAgICAgICAgICAgaWYgcGF0aC5iYXNlbmFtZSA9PSAidGVzdF94eXoucHkiOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlNb2R1bGUocGF0aCwgcGFyZW50KQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTXlNb2R1bGUuZnJvbV9wYXJlbnQoZnNwYXRoPXBhdGgsIHBh
cmVudD1wYXJlbnQpCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgiZGVmIHRlc3Rfc29tZSgpOiBwYXNzIikKQEAgLTkwNiwyMyArNzczLDIzIEBAIGNs
YXNzIFRlc3RDb25mdGVzdEN1c3RvbWl6YXRpb24ob2JqZWN0KToKICAgICBkZWYgdGVzdF9jdXN0
b21pemVkX3B5bWFrZW1vZHVsZV9pc3N1ZTIwNV9zdWJkaXIoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIGIgPSB0ZXN0ZGlyLm1rZGlyKCJhIikubWtkaXIoImIiKQogICAgICAgICBiLmpvaW4oImNv
bmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAg
ICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIEBweXRlc3QuaG9va2ltcGwo
aG9va3dyYXBwZXI9VHJ1ZSkKKyAgICAgICAgICAgICAgICBkZWYgcHl0ZXN0X3B5Y29sbGVjdF9t
YWtlbW9kdWxlKCk6CisgICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSB5aWVsZAorICAgICAg
ICAgICAgICAgICAgICBtb2QgPSBvdXRjb21lLmdldF9yZXN1bHQoKQorICAgICAgICAgICAgICAg
ICAgICBtb2Qub2JqLmhlbGxvID0gIndvcmxkIgogICAgICAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5ob29raW1wbChob29rd3Jh
cHBlcj1UcnVlKQotICAgICAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZSgp
OgotICAgICAgICAgICAgICAgIG91dGNvbWUgPSB5aWVsZAotICAgICAgICAgICAgICAgIG1vZCA9
IG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0gICAgICAgICAgICAgICAgbW9kLm9iai5oZWxsbyA9ICJ3
b3JsZCIKLSAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgYi5q
b2luKCJ0ZXN0X21vZHVsZS5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5T
b3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIi
XAorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKCk6CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydCBoZWxsbyA9PSAid29ybGQiCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBkZWYgdGVzdF9oZWxsbygpOgotICAgICAgICAgICAgICAgIGFzc2VydCBoZWxsbyA9PSAid29y
bGQiCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlcHJl
YyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCkBAIC05MzEsMzEgKzc5OCwzMSBAQCBjbGFzcyBUZXN0
Q29uZnRlc3RDdXN0b21pemF0aW9uKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfY3VzdG9taXplZF9w
eW1ha2VpdGVtKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBiID0gdGVzdGRpci5ta2RpcigiYSIp
Lm1rZGlyKCJiIikKICAgICAgICAgYi5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAotICAgICAg
ICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQo
CisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAg
ICAgICAgICAgICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgICAg
ICAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oKToKKyAgICAgICAgICAgICAg
ICAgICAgb3V0Y29tZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgICAgIGlmIG91dGNvbWUuZXhj
aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gb3V0Y29tZS5n
ZXRfcmVzdWx0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgZnVuYyBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmMuX3NvbWUxMjMgPSAid29ybGQiCiAgICAgICAgICAgICAgICAg
IiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0Lmhvb2tp
bXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X3B5Y29sbGVjdF9t
YWtlaXRlbSgpOgotICAgICAgICAgICAgICAgIG91dGNvbWUgPSB5aWVsZAotICAgICAgICAgICAg
ICAgIGlmIG91dGNvbWUuZXhjaW5mbyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSBvdXRjb21lLmdldF9yZXN1bHQoKQotICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZnVuYyBpbiByZXN1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuYy5fc29tZTEyMyA9ICJ3b3JsZCIKLSAgICAgICAgIiIiCiAg
ICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgYi5qb2luKCJ0ZXN0X21vZHVsZS5weSIp
LndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICB0ZXh0d3JhcC5k
ZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKIAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKCkKLSAgICAgICAgICAgIGRlZiBvYmoo
cmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Qubm9kZS5fc29tZTEyMwot
ICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8ob2JqKToKLSAgICAgICAgICAgICAgICBhc3NlcnQg
b2JqID09ICJ3b3JsZCIKLSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0
dXJlKCkKKyAgICAgICAgICAgICAgICBkZWYgb2JqKHJlcXVlc3QpOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVxdWVzdC5ub2RlLl9zb21lMTIzCisgICAgICAgICAgICAgICAgZGVmIHRl
c3RfaGVsbG8ob2JqKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG9iaiA9PSAid29ybGQi
CisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAg
cmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKQEAgLTk2OSwyMiArODM2LDEzIEBAIGNsYXNz
IFRlc3RDb25mdGVzdEN1c3RvbWl6YXRpb24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXNz
CiAgICAgICAgICAgICBkZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3IsIG5h
bWUsIG9iaik6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAic29tZSI6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBNeUZ1bmN0aW9uKG5hbWUsIGNvbGxlY3RvcikKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE15RnVuY3Rpb24uZnJvbV9wYXJlbnQobmFtZT1uYW1lLCBwYXJlbnQ9
Y29sbGVjdG9yKQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoImRlZiBzb21lKCk6IHBhc3MiKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1jb2xsZWN0LW9ubHkiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqTXlGdW5jdGlvbipzb21lKiJdKQogCi0gICAgZGVmIHRlc3RfbWFrZWl0ZW1fbm9uX3Vu
ZGVyc2NvcmUoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotICAgICAgICBtb2Rjb2wgPSB0
ZXN0ZGlyLmdldG1vZHVsZWNvbCgiZGVmIF9oZWxsbygpOiBwYXNzIikKLSAgICAgICAgdmFsdWVz
ID0gW10KLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKLSAgICAgICAgICAgIHB5dGVzdC5N
b2R1bGUsICJtYWtlaXRlbSIsIGxhbWJkYSBzZWxmLCBuYW1lLCBvYmo6IHZhbHVlcy5hcHBlbmQo
bmFtZSkKLSAgICAgICAgKQotICAgICAgICB2YWx1ZXMgPSBtb2Rjb2wuY29sbGVjdCgpCi0gICAg
ICAgIGFzc2VydCAiX2hlbGxvIiBub3QgaW4gdmFsdWVzCi0KICAgICBkZWYgdGVzdF9pc3N1ZTIz
NjlfY29sbGVjdF9tb2R1bGVfZmlsZWV4dChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIiRW5z
dXJlIHdlIGNhbiBjb2xsZWN0IGZpbGVzIHdpdGggd2VpcmQgZmlsZSBleHRlbnNpb25zIGFzIFB5
dGhvbgogICAgICAgICBtb2R1bGVzICgjMjM2OSkiIiIKQEAgLTEwMDYsNDYgKzg2NCw3NCBAQCBj
bGFzcyBUZXN0Q29uZnRlc3RDdXN0b21pemF0aW9uKG9iamVjdCk6CiAKICAgICAgICAgICAgIGRl
ZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAgICAgICAgaWYg
cGF0aC5leHQgPT0gIi5uYXJmIjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1vZHVsZShw
YXRoLCBwYXJlbnQpIiIiCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2R1bGUuZnJvbV9w
YXJlbnQoZnNwYXRoPXBhdGgsIHBhcmVudD1wYXJlbnQpIiIiCiAgICAgICAgICkKICAgICAgICAg
dGVzdGRpci5tYWtlZmlsZSgKICAgICAgICAgICAgICIubmFyZiIsCi0gICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0X3NvbWV0aGluZygpOgogICAg
ICAgICAgICAgICAgIGFzc2VydCAxICsgMSA9PSAyIiIiLAogICAgICAgICApCiAgICAgICAgICMg
VXNlIHJ1bnB5dGVzdF9zdWJwcm9jZXNzLCBzaW5jZSB3ZSdyZSBmdXR6aW5nIHdpdGggc3lzLm1l
dGFfcGF0aC4KICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2Vzcygp
Ci0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgcGFzc2VkKiIpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKKworICAgIGRl
ZiB0ZXN0X2Vhcmx5X2lnbm9yZWRfYXR0cmlidXRlcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAt
PiBOb25lOgorICAgICAgICAiIiJCdWlsdGluIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIGlnbm9yZWQg
ZWFybHkgb24sIGV2ZW4gaWYKKyAgICAgICAgY29uZmlndXJhdGlvbiB3b3VsZCBvdGhlcndpc2Ug
YWxsb3cgdGhlbS4KKworICAgICAgICBUaGlzIHRlc3RzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0
aW9uLCBub3QgY29ycmVjdG5lc3MsIHJlYWxseSwKKyAgICAgICAgYWx0aG91Z2ggaXQgdGVzdHMg
UHl0ZXN0Q29sbGVjdGlvbldhcm5pbmcgaXMgbm90IHJhaXNlZCwgd2hpbGUKKyAgICAgICAgaXQg
d291bGQgaGF2ZSBiZWVuIHJhaXNlZCBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAgICB0
ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFtweXRlc3RdCisg
ICAgICAgICAgICBweXRob25fY2xhc3Nlcz0qCisgICAgICAgICAgICBweXRob25fZnVuY3Rpb25z
PSoKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjbGFzcyBUZXN0RW1wdHk6CisgICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgdGVzdF9lbXB0eSA9IFRlc3RFbXB0eSgpCisgICAgICAg
ICAgICBkZWYgdGVzdF9yZWFsKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIK
KyAgICAgICAgKQorICAgICAgICBpdGVtcywgcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMo
KQorICAgICAgICBhc3NlcnQgcmVjLnJldCA9PSAwCisgICAgICAgIGFzc2VydCBsZW4oaXRlbXMp
ID09IDEKIAogCiBkZWYgdGVzdF9zZXR1cF9vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIodGVzdGRp
cik6CiAgICAgc3ViMSA9IHRlc3RkaXIubWtweWRpcigic3ViMSIpCiAgICAgc3ViMiA9IHRlc3Rk
aXIubWtweWRpcigic3ViMiIpCiAgICAgc3ViMS5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAot
ICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAor
ICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAg
ZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgorICAgICAgICAgICAgICAgIGFzc2VydCBp
dGVtLmZzcGF0aC5wdXJlYmFzZW5hbWUgPT0gInRlc3RfaW5fc3ViMSIKKyAgICAgICAgICAgIGRl
ZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pOgorICAgICAgICAgICAgICAgIGFzc2VydCBpdGVt
LmZzcGF0aC5wdXJlYmFzZW5hbWUgPT0gInRlc3RfaW5fc3ViMSIKKyAgICAgICAgICAgIGRlZiBw
eXRlc3RfcnVudGVzdF90ZWFyZG93bihpdGVtKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXRl
bS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2luX3N1YjEiCiAgICAgICAgICAgICAiIiIK
LSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAo
aXRlbSk6Ci0gICAgICAgICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0
ZXN0X2luX3N1YjEiCi0gICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pOgotICAg
ICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNwYXRoLnB1cmViYXNlbmFtZSA9PSAidGVzdF9pbl9zdWIx
IgotICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSk6Ci0gICAgICAgICAg
ICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2luX3N1YjEiCi0gICAg
IiIiCiAgICAgICAgICkKICAgICApCiAgICAgc3ViMi5qb2luKCJjb25mdGVzdC5weSIpLndyaXRl
KAotICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50
KAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAg
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgorICAgICAgICAgICAgICAgIGFzc2Vy
dCBpdGVtLmZzcGF0aC5wdXJlYmFzZW5hbWUgPT0gInRlc3RfaW5fc3ViMiIKKyAgICAgICAgICAg
IGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pOgorICAgICAgICAgICAgICAgIGFzc2VydCBp
dGVtLmZzcGF0aC5wdXJlYmFzZW5hbWUgPT0gInRlc3RfaW5fc3ViMiIKKyAgICAgICAgICAgIGRl
ZiBweXRlc3RfcnVudGVzdF90ZWFyZG93bihpdGVtKToKKyAgICAgICAgICAgICAgICBhc3NlcnQg
aXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2luX3N1YjIiCiAgICAgICAgICAgICAi
IiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0
dXAoaXRlbSk6Ci0gICAgICAgICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09
ICJ0ZXN0X2luX3N1YjIiCi0gICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pOgot
ICAgICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNwYXRoLnB1cmViYXNlbmFtZSA9PSAidGVzdF9pbl9z
dWIyIgotICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSk6Ci0gICAgICAg
ICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2luX3N1YjIiCi0g
ICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgc3ViMS5qb2luKCJ0ZXN0X2luX3N1YjEucHki
KS53cml0ZSgiZGVmIHRlc3RfMSgpOiBwYXNzIikKQEAgLTEwNTUsMTggKzk0MSwyMCBAQCBkZWYg
dGVzdF9zZXR1cF9vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIodGVzdGRpcik6CiAKIAogZGVmIHRl
c3RfbW9kdWxlY29sX3JvdW5kdHJpcCh0ZXN0ZGlyKToKLSAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdl
dG1vZHVsZWNvbCgicGFzcyIsIHdpdGhpbml0PVRydWUpCisgICAgbW9kY29sID0gdGVzdGRpci5n
ZXRtb2R1bGVjb2woInBhc3MiLCB3aXRoaW5pdD1GYWxzZSkKICAgICB0cmFpbCA9IG1vZGNvbC5u
b2RlaWQKICAgICBuZXdjb2wgPSBtb2Rjb2wuc2Vzc2lvbi5wZXJmb3JtX2NvbGxlY3QoW3RyYWls
XSwgZ2VuaXRlbXM9MClbMF0KICAgICBhc3NlcnQgbW9kY29sLm5hbWUgPT0gbmV3Y29sLm5hbWUK
IAogCi1jbGFzcyBUZXN0VHJhY2ViYWNrQ3V0dGluZyhvYmplY3QpOgotCitjbGFzcyBUZXN0VHJh
Y2ViYWNrQ3V0dGluZzoKICAgICBkZWYgdGVzdF9za2lwX3NpbXBsZShzZWxmKToKLSAgICAgICAg
ZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMocHl0ZXN0LnNraXAuRXhjZXB0aW9uLCAncHl0ZXN0LnNr
aXAoInh4eCIpJykKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5za2lwLkV4Y2Vw
dGlvbikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ4eHgiKQogICAgICAg
ICBhc3NlcnQgZXhjaW5mby50cmFjZWJhY2tbLTFdLmZyYW1lLmNvZGUubmFtZSA9PSAic2tpcCIK
ICAgICAgICAgYXNzZXJ0IGV4Y2luZm8udHJhY2ViYWNrWy0xXS5pc2hpZGRlbigpCisgICAgICAg
IGFzc2VydCBleGNpbmZvLnRyYWNlYmFja1stMl0uZnJhbWUuY29kZS5uYW1lID09ICJ0ZXN0X3Nr
aXBfc2ltcGxlIgorICAgICAgICBhc3NlcnQgbm90IGV4Y2luZm8udHJhY2ViYWNrWy0yXS5pc2hp
ZGRlbigpCiAKICAgICBkZWYgdGVzdF90cmFjZWJhY2tfYXJnc2V0dXAoc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KApAQCAtMTExNSw4ICsxMDAzLDcgQEAgY2xh
c3MgVGVzdFRyYWNlYmFja0N1dHRpbmcob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKFsiPiphc2QqIiwgIkUqTmFtZUVycm9yKiJdKQogCiAgICAgZGVmIHRlc3Rf
dHJhY2ViYWNrX2ZpbHRlcl9lcnJvcl9kdXJpbmdfZml4dHVyZV9jb2xsZWN0aW9uKHNlbGYsIHRl
c3RkaXIpOgotICAgICAgICAiIiJpbnRlZ3JhdGlvbiB0ZXN0IGZvciBpc3N1ZSAjOTk1LgotICAg
ICAgICAiIiIKKyAgICAgICAgIiIiSW50ZWdyYXRpb24gdGVzdCBmb3IgaXNzdWUgIzk5NS4iIiIK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC0xMTQxLDM0ICsxMDI4LDM3IEBAIGNsYXNzIFRlc3RUcmFjZWJh
Y2tDdXR0aW5nKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCAiSU5URVJOQUxFUlJPUj4iIG5vdCBp
biBvdXQKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKlZhbHVlRXJyb3I6
IGZhaWwgbWUqIiwgIiogMSBlcnJvciBpbiAqIl0pCiAKLSAgICBkZWYgdGVzdF9maWx0ZXJfdHJh
Y2ViYWNrX2dlbmVyYXRlZF9jb2RlKHNlbGYpOgotICAgICAgICAiIiJ0ZXN0IHRoYXQgZmlsdGVy
X3RyYWNlYmFjaygpIHdvcmtzIHdpdGggdGhlIGZhY3QgdGhhdAotICAgICAgICBweS5jb2RlLkNv
ZGUucGF0aCBhdHRyaWJ1dGUgbWlnaHQgcmV0dXJuIGFuIHN0ciBvYmplY3QuCisgICAgZGVmIHRl
c3RfZmlsdGVyX3RyYWNlYmFja19nZW5lcmF0ZWRfY29kZShzZWxmKSAtPiBOb25lOgorICAgICAg
ICAiIiJUZXN0IHRoYXQgZmlsdGVyX3RyYWNlYmFjaygpIHdvcmtzIHdpdGggdGhlIGZhY3QgdGhh
dAorICAgICAgICBfcHl0ZXN0Ll9jb2RlLmNvZGUuQ29kZS5wYXRoIGF0dHJpYnV0ZSBtaWdodCBy
ZXR1cm4gYW4gc3RyIG9iamVjdC4KKwogICAgICAgICBJbiB0aGlzIGNhc2UsIG9uZSBvZiB0aGUg
ZW50cmllcyBvbiB0aGUgdHJhY2ViYWNrIHdhcyBwcm9kdWNlZCBieQogICAgICAgICBkeW5hbWlj
YWxseSBnZW5lcmF0ZWQgY29kZS4KICAgICAgICAgU2VlOiBodHRwczovL2JpdGJ1Y2tldC5vcmcv
cHl0ZXN0LWRldi9weS9pc3N1ZXMvNzEKICAgICAgICAgVGhpcyBmaXhlcyAjOTk1LgogICAgICAg
ICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgZmlsdGVyX3RyYWNlYmFj
aworICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGZpbHRlcl90cmFjZWJhY2sKIAog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBucyA9IHt9CisgICAgICAgICAgICBucyA9IHt9ICAj
IHR5cGU6IERpY3Rbc3RyLCBBbnldCiAgICAgICAgICAgICBleGVjKCJkZWYgZm9vKCk6IHJhaXNl
IFZhbHVlRXJyb3IiLCBucykKICAgICAgICAgICAgIG5zWyJmb28iXSgpCiAgICAgICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgXywgXywgdGIgPSBzeXMuZXhjX2luZm8oKQogCi0g
ICAgICAgIHRiID0gX3B5dGVzdC5fY29kZS5UcmFjZWJhY2sodGIpCi0gICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKHRiWy0xXS5wYXRoLCBzdHIpCi0gICAgICAgIGFzc2VydCBub3QgZmlsdGVyX3Ry
YWNlYmFjayh0YlstMV0pCisgICAgICAgIGFzc2VydCB0YiBpcyBub3QgTm9uZQorICAgICAgICB0
cmFjZWJhY2sgPSBfcHl0ZXN0Ll9jb2RlLlRyYWNlYmFjayh0YikKKyAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UodHJhY2ViYWNrWy0xXS5wYXRoLCBzdHIpCisgICAgICAgIGFzc2VydCBub3QgZmls
dGVyX3RyYWNlYmFjayh0cmFjZWJhY2tbLTFdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNl
YmFja19wYXRoX25vX2xvbmdlcl92YWxpZChzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgorICAgICAg
ICAiIiJUZXN0IHRoYXQgZmlsdGVyX3RyYWNlYmFjaygpIHdvcmtzIHdpdGggdGhlIGZhY3QgdGhh
dAorICAgICAgICBfcHl0ZXN0Ll9jb2RlLmNvZGUuQ29kZS5wYXRoIGF0dHJpYnV0ZSBtaWdodCBy
ZXR1cm4gYW4gc3RyIG9iamVjdC4KIAotICAgIGRlZiB0ZXN0X2ZpbHRlcl90cmFjZWJhY2tfcGF0
aF9ub19sb25nZXJfdmFsaWQoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiInRlc3QgdGhhdCBm
aWx0ZXJfdHJhY2ViYWNrKCkgd29ya3Mgd2l0aCB0aGUgZmFjdCB0aGF0Ci0gICAgICAgIHB5LmNv
ZGUuQ29kZS5wYXRoIGF0dHJpYnV0ZSBtaWdodCByZXR1cm4gYW4gc3RyIG9iamVjdC4KICAgICAg
ICAgSW4gdGhpcyBjYXNlLCBvbmUgb2YgdGhlIGZpbGVzIGluIHRoZSB0cmFjZWJhY2sgbm8gbG9u
Z2VyIGV4aXN0cy4KICAgICAgICAgVGhpcyBmaXhlcyAjMTEzMy4KICAgICAgICAgIiIiCi0gICAg
ICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IGZpbHRlcl90cmFjZWJhY2sKKyAgICAgICAg
ZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBmaWx0ZXJfdHJhY2ViYWNrCiAKICAgICAgICAgdGVz
dGRpci5zeXNwYXRoaW5zZXJ0KCkKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMTE4
NCwxNSArMTA3NCwxNSBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrQ3V0dGluZyhvYmplY3QpOgogICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIF8sIF8sIHRiID0gc3lzLmV4Y19p
bmZvKCkKIAorICAgICAgICBhc3NlcnQgdGIgaXMgbm90IE5vbmUKICAgICAgICAgdGVzdGRpci50
bXBkaXIuam9pbigiZmlsdGVyX3RyYWNlYmFja19lbnRyeV9hc19zdHIucHkiKS5yZW1vdmUoKQot
ICAgICAgICB0YiA9IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKHRiKQotICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZSh0YlstMV0ucGF0aCwgc3RyKQotICAgICAgICBhc3NlcnQgZmlsdGVyX3RyYWNl
YmFjayh0YlstMV0pCi0KKyAgICAgICAgdHJhY2ViYWNrID0gX3B5dGVzdC5fY29kZS5UcmFjZWJh
Y2sodGIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHRyYWNlYmFja1stMV0ucGF0aCwgc3Ry
KQorICAgICAgICBhc3NlcnQgZmlsdGVyX3RyYWNlYmFjayh0cmFjZWJhY2tbLTFdKQogCi1jbGFz
cyBUZXN0UmVwb3J0SW5mbyhvYmplY3QpOgogCi0gICAgZGVmIHRlc3RfaXRlbXJlcG9ydF9yZXBv
cnRpbmZvKHNlbGYsIHRlc3RkaXIsIGxpbmVjb21wKToKK2NsYXNzIFRlc3RSZXBvcnRJbmZvOgor
ICAgIGRlZiB0ZXN0X2l0ZW1yZXBvcnRfcmVwb3J0aW5mbyhzZWxmLCB0ZXN0ZGlyKToKICAgICAg
ICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKQEAgLTEyMDEsNyArMTA5MSw3IEBAIGNsYXNzIFRlc3RSZXBvcnRJbmZvKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiQUJDREUiLCA0MiwgImN1c3RvbSIK
ICAgICAgICAgICAgIGRlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFt
ZSwgb2JqKToKICAgICAgICAgICAgICAgICBpZiBuYW1lID09ICJ0ZXN0X2Z1bmMiOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTXlGdW5jdGlvbihuYW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlGdW5jdGlvbi5mcm9tX3BhcmVudChuYW1lPW5h
bWUsIHBhcmVudD1jb2xsZWN0b3IpCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIGl0
ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0oImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCkBAIC0xMjI5LDM5
ICsxMTE5LDkgQEAgY2xhc3MgVGVzdFJlcG9ydEluZm8ob2JqZWN0KToKICAgICAgICAgYXNzZXJ0
IGxpbmVubyA9PSAxCiAgICAgICAgIGFzc2VydCBtc2cgPT0gIlRlc3RDbGFzcyIKIAotICAgIGRl
ZiB0ZXN0X2dlbmVyYXRvcl9yZXBvcnRpbmZvKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBtb2Rj
b2wgPSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
IyBsaW5lbm8gMAotICAgICAgICAgICAgZGVmIHRlc3RfZ2VuKCk6Ci0gICAgICAgICAgICAgICAg
ZGVmIGNoZWNrKHgpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgeAotICAgICAgICAgICAg
ICAgIHlpZWxkIGNoZWNrLCAzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGdlbmNv
bCA9IHRlc3RkaXIuY29sbGVjdF9ieV9uYW1lKG1vZGNvbCwgInRlc3RfZ2VuIikKLSAgICAgICAg
ZnNwYXRoLCBsaW5lbm8sIG1vZHBhdGggPSBnZW5jb2wucmVwb3J0aW5mbygpCi0gICAgICAgIGFz
c2VydCBmc3BhdGggPT0gbW9kY29sLmZzcGF0aAotICAgICAgICBhc3NlcnQgbGluZW5vID09IDEK
LSAgICAgICAgYXNzZXJ0IG1vZHBhdGggPT0gInRlc3RfZ2VuIgotCi0gICAgICAgIGdlbml0ZW0g
PSBnZW5jb2wuY29sbGVjdCgpWzBdCi0gICAgICAgIGZzcGF0aCwgbGluZW5vLCBtb2RwYXRoID0g
Z2VuaXRlbS5yZXBvcnRpbmZvKCkKLSAgICAgICAgYXNzZXJ0IGZzcGF0aCA9PSBtb2Rjb2wuZnNw
YXRoCi0gICAgICAgIGFzc2VydCBsaW5lbm8gPT0gMgotICAgICAgICBhc3NlcnQgbW9kcGF0aCA9
PSAidGVzdF9nZW5bMF0iCi0gICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygp
OgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0X2dlbmZ1bmMoKToK
LSAgICAgICAgICAgICAgICBkZWYgY2hlY2soeCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MK
LSAgICAgICAgICAgICAgICB5aWVsZCBjaGVjaywgMwotICAgICAgICAgICAgY2xhc3MgVGVzdENs
YXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgotICAg
ICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIiIiCi0KKyAgICBAcHl0ZXN0Lm1hcmsuZmls
dGVyd2FybmluZ3MoCisgICAgICAgICJpZ25vcmU6dXNhZ2Ugb2YgR2VuZXJhdG9yLkZ1bmN0aW9u
IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgcHl0ZXN0LkZ1bmN0aW9uIGluc3RlYWQiCisgICAg
KQogICAgIGRlZiB0ZXN0X3JlcG9ydGluZm9fd2l0aF9uYXN0eV9nZXRhdHRyKHNlbGYsIHRlc3Rk
aXIpOgogICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMTIwNAogICAgICAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgKQEAgLTEzMzEs
NTYgKzExOTEsNiBAQCBkZWYgdGVzdF9jdXN0b21pemVkX3B5dGhvbl9kaXNjb3ZlcnlfZnVuY3Rp
b25zKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3Nl
ZCoiXSkKIAogCi1kZWYgdGVzdF9jb2xsZWN0b3JfYXR0cmlidXRlcyh0ZXN0ZGlyKToKLSAgICB0
ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QK
LSAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yKToKLSAgICAg
ICAgICAgIGFzc2VydCBjb2xsZWN0b3IuRnVuY3Rpb24gPT0gcHl0ZXN0LkZ1bmN0aW9uCi0gICAg
ICAgICAgICBhc3NlcnQgY29sbGVjdG9yLkNsYXNzID09IHB5dGVzdC5DbGFzcwotICAgICAgICAg
ICAgYXNzZXJ0IGNvbGxlY3Rvci5JbnN0YW5jZSA9PSBweXRlc3QuSW5zdGFuY2UKLSAgICAgICAg
ICAgIGFzc2VydCBjb2xsZWN0b3IuTW9kdWxlID09IHB5dGVzdC5Nb2R1bGUKLSAgICAiIiIKLSAg
ICApCi0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgIGRlZiB0
ZXN0X2hlbGxvKCk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqMSBwYXNzZWQqIl0pCi0KLQotZGVmIHRlc3RfY3VzdG9taXplX3Rocm91Z2hfYXR0cmlidXRl
cyh0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAgICAgIiIiCi0gICAg
ICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgY2xhc3MgTXlGdW5jdGlvbihweXRlc3QuRnVuY3Rp
b24pOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBjbGFzcyBNeUluc3RhbmNlKHB5dGVzdC5J
bnN0YW5jZSk6Ci0gICAgICAgICAgICBGdW5jdGlvbiA9IE15RnVuY3Rpb24KLSAgICAgICAgY2xh
c3MgTXlDbGFzcyhweXRlc3QuQ2xhc3MpOgotICAgICAgICAgICAgSW5zdGFuY2UgPSBNeUluc3Rh
bmNlCi0KLSAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yLCBu
YW1lLCBvYmopOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJNeVRlc3RDbGFzcyIp
OgotICAgICAgICAgICAgICAgIHJldHVybiBNeUNsYXNzKG5hbWUsIHBhcmVudD1jb2xsZWN0b3Ip
Ci0gICAgIiIiCi0gICAgKQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0g
ICAgICAgICBjbGFzcyBNeVRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAgICAgZGVmIHRlc3Rf
aGVsbG8oc2VsZik6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICIiIgotICAgICkKLSAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xsZWN0LW9ubHkiKQotICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyIqTXlDbGFzcyoiLCAiKk15SW5zdGFuY2Uq
IiwgIipNeUZ1bmN0aW9uKnRlc3RfaGVsbG8qIl0KLSAgICApCi0KLQogZGVmIHRlc3RfdW5vcmRl
cmFibGVfdHlwZXModGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAi
IiIKQEAgLTEzOTYsNjEgKzEyMDYsMTYgQEAgZGVmIHRlc3RfdW5vcmRlcmFibGVfdHlwZXModGVz
dGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
LSAgICBhc3NlcnQgIlR5cGVFcnJvciIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKLSAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKLQotCi1kZWYgdGVzdF9j
b2xsZWN0X2Z1bmN0b29sc19wYXJ0aWFsKHRlc3RkaXIpOgotICAgICIiIgotICAgIFRlc3QgdGhh
dCBjb2xsZWN0aW9uIG9mIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdCB3b3JrcywgYW5kIGFyZ3Vt
ZW50cwotICAgIHRvIHRoZSB3cmFwcGVkIGZ1bmN0aW9ucyBhcmUgZGVhbHQgY29ycmVjdGx5IChz
ZWUgIzgxMSkuCi0gICAgIiIiCi0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIK
LSAgICAgICAgaW1wb3J0IGZ1bmN0b29scwotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICAg
ICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgIGRlZiBmaXgxKCk6Ci0gICAgICAgICAgICByZXR1
cm4gJ2ZpeDEnCi0KLSAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgIGRlZiBmaXgyKCk6
Ci0gICAgICAgICAgICByZXR1cm4gJ2ZpeDInCi0KLSAgICAgICAgZGVmIGNoZWNrMShpLCBmaXgx
KToKLSAgICAgICAgICAgIGFzc2VydCBpID09IDIKLSAgICAgICAgICAgIGFzc2VydCBmaXgxID09
ICdmaXgxJwotCi0gICAgICAgIGRlZiBjaGVjazIoZml4MSwgaSk6Ci0gICAgICAgICAgICBhc3Nl
cnQgaSA9PSAyCi0gICAgICAgICAgICBhc3NlcnQgZml4MSA9PSAnZml4MScKLQotICAgICAgICBk
ZWYgY2hlY2szKGZpeDEsIGksIGZpeDIpOgotICAgICAgICAgICAgYXNzZXJ0IGkgPT0gMgotICAg
ICAgICAgICAgYXNzZXJ0IGZpeDEgPT0gJ2ZpeDEnCi0gICAgICAgICAgICBhc3NlcnQgZml4MiA9
PSAnZml4MicKLQotICAgICAgICB0ZXN0X29rXzEgPSBmdW5jdG9vbHMucGFydGlhbChjaGVjazEs
IGk9MikKLSAgICAgICAgdGVzdF9va18yID0gZnVuY3Rvb2xzLnBhcnRpYWwoY2hlY2sxLCBpPTIs
IGZpeDE9J2ZpeDEnKQotICAgICAgICB0ZXN0X29rXzMgPSBmdW5jdG9vbHMucGFydGlhbChjaGVj
azEsIDIpCi0gICAgICAgIHRlc3Rfb2tfNCA9IGZ1bmN0b29scy5wYXJ0aWFsKGNoZWNrMiwgaT0y
KQotICAgICAgICB0ZXN0X29rXzUgPSBmdW5jdG9vbHMucGFydGlhbChjaGVjazMsIGk9MikKLSAg
ICAgICAgdGVzdF9va182ID0gZnVuY3Rvb2xzLnBhcnRpYWwoY2hlY2szLCBpPTIsIGZpeDE9J2Zp
eDEnKQotCi0gICAgICAgIHRlc3RfZmFpbF8xID0gZnVuY3Rvb2xzLnBhcnRpYWwoY2hlY2syLCAy
KQotICAgICAgICB0ZXN0X2ZhaWxfMiA9IGZ1bmN0b29scy5wYXJ0aWFsKGNoZWNrMywgMikKLSAg
ICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICByZXN1
bHQuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9NiwgZmFpbGVkPTIpCisgICAgcmVzdWx0LnN0ZG91dC5u
b19mbm1hdGNoX2xpbmUoIipUeXBlRXJyb3IqIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBF
eGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKIAogCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2Fybmlu
Z3MoImRlZmF1bHQiKQogZGVmIHRlc3RfZG9udF9jb2xsZWN0X25vbl9mdW5jdGlvbl9jYWxsYWJs
ZSh0ZXN0ZGlyKToKICAgICAiIiJUZXN0IGZvciBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMQogCiAgICAgSW4gdGhpcyBjYXNlIGFuIElOVEVSTkFM
RVJST1Igb2NjdXJyZWQgdHJ5aW5nIHRvIHJlcG9ydCB0aGUgZmFpbHVyZSBvZgotICAgIGEgdGVz
dCBsaWtlIHRoaXMgb25lIGJlY2F1c2UgcHkgdGVzdCBmYWlsZWQgdG8gZ2V0IHRoZSBzb3VyY2Ug
bGluZXMuCisgICAgYSB0ZXN0IGxpa2UgdGhpcyBvbmUgYmVjYXVzZSBweXRlc3QgZmFpbGVkIHRv
IGdldCB0aGUgc291cmNlIGxpbmVzLgogICAgICIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgIiIiCkBAIC0xNDY0LDEyICsxMjI5LDEyIEBAIGRlZiB0ZXN0X2RvbnRfY29sbGVj
dF9ub25fZnVuY3Rpb25fY2FsbGFibGUodGVzdGRpcik6CiAgICAgICAgICAgICBwYXNzCiAgICAg
IiIiCiAgICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcnciKQorICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCiAgICAgICAgIFsKICAgICAgICAgICAgICIqY29sbGVjdGVkIDEgaXRlbSoiLAotICAgICAg
ICAgICAgIipjYW5ub3QgY29sbGVjdCAndGVzdF9hJyBiZWNhdXNlIGl0IGlzIG5vdCBhIGZ1bmN0
aW9uKiIsCi0gICAgICAgICAgICAiKjEgcGFzc2VkLCAxIHdhcm5pbmdzIGluICoiLAorICAgICAg
ICAgICAgIip0ZXN0X2RvbnRfY29sbGVjdF9ub25fZnVuY3Rpb25fY2FsbGFibGUucHk6MjogKmNh
bm5vdCBjb2xsZWN0ICd0ZXN0X2EnIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24qIiwKKyAg
ICAgICAgICAgICIqMSBwYXNzZWQsIDEgd2FybmluZyBpbiAqIiwKICAgICAgICAgXQogICAgICkK
IApAQCAtMTQ5NywyNCArMTI2MiwzOSBAQCBkZWYgdGVzdF9jbGFzc19pbmplY3Rpb25fZG9lc19u
b3RfYnJlYWtfY29sbGVjdGlvbih0ZXN0ZGlyKToKICAgICAnJycKICAgICApCiAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGFzc2VydCAiUnVudGltZUVycm9yOiBkaWN0aW9u
YXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5z
dHIoKQorICAgIGFzc2VydCAoCisgICAgICAgICJSdW50aW1lRXJyb3I6IGRpY3Rpb25hcnkgY2hh
bmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iCisgICAgICAgIG5vdCBpbiByZXN1bHQuc3Rkb3V0
LnN0cigpCisgICAgKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3Nl
ZCoiXSkKIAogCiBkZWYgdGVzdF9zeW50YXhfZXJyb3Jfd2l0aF9ub25fYXNjaWlfY2hhcnModGVz
dGRpcik6Ci0gICAgIiIiRml4IGRlY29kaW5nIGlzc3VlIHdoaWxlIGZvcm1hdHRpbmcgU3ludGF4
RXJyb3JzIGR1cmluZyBjb2xsZWN0aW9uICgjNTc4KQotICAgICIiIgotICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKLSAgICAgICAgdSIiIgotICAgICMgLSotIGNvZGluZzogVVRGLTggLSotCi0KLSAg
ICDimIMKLSAgICAiIiIKLSAgICApCisgICAgIiIiRml4IGRlY29kaW5nIGlzc3VlIHdoaWxlIGZv
cm1hdHRpbmcgU3ludGF4RXJyb3JzIGR1cmluZyBjb2xsZWN0aW9uICgjNTc4KS4iIiIKKyAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoIuKYgyIpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipFUlJPUiBjb2xsZWN0aW5nKiIs
ICIqU3ludGF4RXJyb3IqIiwgIioxIGVycm9yIGluKiJdKQogCiAKK2RlZiB0ZXN0X2NvbGxlY3Rf
ZXJyb3Jfd2l0aF9mdWxsdHJhY2UodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJh
c3NlcnQgMCIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZnVsbHRyYWNlIikK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAg
ICJjb2xsZWN0ZWQgMCBpdGVtcyAvIDEgZXJyb3IiLAorICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAiKj0gRVJST1JTID0qIiwKKyAgICAgICAgICAgICIqXyBFUlJPUiBjb2xsZWN0aW5nIHRl
c3RfY29sbGVjdF9lcnJvcl93aXRoX2Z1bGx0cmFjZS5weSBfKiIsCisgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgICI+ICAgYXNzZXJ0IDAiLAorICAgICAgICAgICAgIkUgICBhc3NlcnQgMCIs
CisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICJ0ZXN0X2NvbGxlY3RfZXJyb3Jfd2l0aF9m
dWxsdHJhY2UucHk6MTogQXNzZXJ0aW9uRXJyb3IiLAorICAgICAgICAgICAgIiohIEludGVycnVw
dGVkOiAxIGVycm9yIGR1cmluZyBjb2xsZWN0aW9uICEqIiwKKyAgICAgICAgXQorICAgICkKKwor
CiBkZWYgdGVzdF9za2lwX2R1cGxpY2F0ZXNfYnlfZGVmYXVsdCh0ZXN0ZGlyKToKICAgICAiIiJU
ZXN0IGZvciBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzE2MDkgKCMxNjA5KQogCkBAIC0xNTIzLDEyICsxMzAzLDEyIEBAIGRlZiB0ZXN0X3NraXBfZHVw
bGljYXRlc19ieV9kZWZhdWx0KHRlc3RkaXIpOgogICAgIGEgPSB0ZXN0ZGlyLm1rZGlyKCJhIikK
ICAgICBmaCA9IGEuam9pbigidGVzdF9hLnB5IikKICAgICBmaC53cml0ZSgKLSAgICAgICAgX3B5
dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAg
ICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0X3Jl
YWwoKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgaW1w
b3J0IHB5dGVzdAotICAgICAgICBkZWYgdGVzdF9yZWFsKCk6Ci0gICAgICAgICAgICBwYXNzCi0g
ICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
YS5zdHJwYXRoLCBhLnN0cnBhdGgpCkBAIC0xNTQzLDEzICsxMzIzLDEwMSBAQCBkZWYgdGVzdF9r
ZWVwX2R1cGxpY2F0ZXModGVzdGRpcik6CiAgICAgYSA9IHRlc3RkaXIubWtkaXIoImEiKQogICAg
IGZoID0gYS5qb2luKCJ0ZXN0X2EucHkiKQogICAgIGZoLndyaXRlKAotICAgICAgICBfcHl0ZXN0
Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgIiIi
XAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZGVmIHRlc3RfcmVhbCgp
OgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICIiIgotICAgICAgICBpbXBvcnQg
cHl0ZXN0Ci0gICAgICAgIGRlZiB0ZXN0X3JlYWwoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAi
IiIKICAgICAgICAgKQogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1r
ZWVwLWR1cGxpY2F0ZXMiLCBhLnN0cnBhdGgsIGEuc3RycGF0aCkKICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqY29sbGVjdGVkIDIgaXRlbSoiXSkKKworCitkZWYgdGVzdF9wYWNr
YWdlX2NvbGxlY3Rpb25faW5maW5pdGVfcmVjdXJzaW9uKHRlc3RkaXIpOgorICAgIHRlc3RkaXIu
Y29weV9leGFtcGxlKCJjb2xsZWN0L3BhY2thZ2VfaW5maW5pdGVfcmVjdXJzaW9uIikKKyAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKjEgcGFzc2VkKiJdKQorCisKK2RlZiB0ZXN0X3BhY2thZ2VfY29sbGVjdGlvbl9pbml0
X2dpdmVuX2FzX2FyZ3VtZW50KHRlc3RkaXIpOgorICAgICIiIlJlZ3Jlc3Npb24gdGVzdCBmb3Ig
IzM3NDkiIiIKKyAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoImNvbGxlY3QvcGFja2FnZV9p
bml0X2dpdmVuX2FzX2FyZyIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCAvICJw
a2ciIC8gIl9faW5pdF9fLnB5IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
MSBwYXNzZWQqIl0pCisKKworZGVmIHRlc3RfcGFja2FnZV93aXRoX21vZHVsZXModGVzdGRpcik6
CisgICAgIiIiCisgICAgLgorICAgIOKUlOKUgOKUgCByb290CisgICAgICAgIOKUnOKUgOKUgCBf
X2luaXRfXy5weQorICAgICAgICDilJzilIDilIAgc3ViMQorICAgICAgICDilIIgICDilJzilIDi
lIAgX19pbml0X18ucHkKKyAgICAgICAg4pSCICAg4pSU4pSA4pSAIHN1YjFfMQorICAgICAgICDi
lIIgICAgICAg4pSc4pSA4pSAIF9faW5pdF9fLnB5CisgICAgICAgIOKUgiAgICAgICDilJTilIDi
lIAgdGVzdF9pbl9zdWIxLnB5CisgICAgICAgIOKUlOKUgOKUgCBzdWIyCisgICAgICAgICAgICDi
lJTilIDilIAgdGVzdAorICAgICAgICAgICAgICAgIOKUlOKUgOKUgCB0ZXN0X2luX3N1YjIucHkK
KworICAgICIiIgorICAgIHJvb3QgPSB0ZXN0ZGlyLm1rcHlkaXIoInJvb3QiKQorICAgIHN1YjEg
PSByb290Lm1rZGlyKCJzdWIxIikKKyAgICBzdWIxLmVuc3VyZSgiX19pbml0X18ucHkiKQorICAg
IHN1YjFfdGVzdCA9IHN1YjEubWtkaXIoInN1YjFfMSIpCisgICAgc3ViMV90ZXN0LmVuc3VyZSgi
X19pbml0X18ucHkiKQorICAgIHN1YjIgPSByb290Lm1rZGlyKCJzdWIyIikKKyAgICBzdWIyX3Rl
c3QgPSBzdWIyLm1rZGlyKCJzdWIyIikKKworICAgIHN1YjFfdGVzdC5qb2luKCJ0ZXN0X2luX3N1
YjEucHkiKS53cml0ZSgiZGVmIHRlc3RfMSgpOiBwYXNzIikKKyAgICBzdWIyX3Rlc3Quam9pbigi
dGVzdF9pbl9zdWIyLnB5Iikud3JpdGUoImRlZiB0ZXN0XzIoKTogcGFzcyIpCisKKyAgICAjIEV4
ZWN1dGUgZnJvbSAuCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi1zIikK
KyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0yKQorCisgICAgIyBFeGVjdXRlIGZy
b20gLiB3aXRoIG9uZSBhcmd1bWVudCAicm9vdCIKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLXYiLCAiLXMiLCAicm9vdCIpCisgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNz
ZWQ9MikKKworICAgICMgQ2hkaXIgaW50byBwYWNrYWdlJ3Mgcm9vdCBhbmQgZXhlY3V0ZSB3aXRo
IG5vIGFyZ3MKKyAgICByb290LmNoZGlyKCkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXYiLCAiLXMiKQorICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTIpCisKKwor
ZGVmIHRlc3RfcGFja2FnZV9vcmRlcmluZyh0ZXN0ZGlyKToKKyAgICAiIiIKKyAgICAuCisgICAg
4pSU4pSA4pSAIHJvb3QKKyAgICAgICAg4pSc4pSA4pSAIFRlc3Rfcm9vdC5weQorICAgICAgICDi
lJzilIDilIAgX19pbml0X18ucHkKKyAgICAgICAg4pSc4pSA4pSAIHN1YjEKKyAgICAgICAg4pSC
ICAg4pSc4pSA4pSAIFRlc3Rfc3ViMS5weQorICAgICAgICDilIIgICDilJTilIDilIAgX19pbml0
X18ucHkKKyAgICAgICAg4pSU4pSA4pSAIHN1YjIKKyAgICAgICAgICAgIOKUlOKUgOKUgCB0ZXN0
CisgICAgICAgICAgICAgICAg4pSU4pSA4pSAIHRlc3Rfc3ViMi5weQorCisgICAgIiIiCisgICAg
dGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAg
cHl0aG9uX2ZpbGVzPSoucHkKKyAgICAiIiIKKyAgICApCisgICAgcm9vdCA9IHRlc3RkaXIubWtw
eWRpcigicm9vdCIpCisgICAgc3ViMSA9IHJvb3QubWtkaXIoInN1YjEiKQorICAgIHN1YjEuZW5z
dXJlKCJfX2luaXRfXy5weSIpCisgICAgc3ViMiA9IHJvb3QubWtkaXIoInN1YjIiKQorICAgIHN1
YjJfdGVzdCA9IHN1YjIubWtkaXIoInN1YjIiKQorCisgICAgcm9vdC5qb2luKCJUZXN0X3Jvb3Qu
cHkiKS53cml0ZSgiZGVmIHRlc3RfMSgpOiBwYXNzIikKKyAgICBzdWIxLmpvaW4oIlRlc3Rfc3Vi
MS5weSIpLndyaXRlKCJkZWYgdGVzdF8yKCk6IHBhc3MiKQorICAgIHN1YjJfdGVzdC5qb2luKCJ0
ZXN0X3N1YjIucHkiKS53cml0ZSgiZGVmIHRlc3RfMygpOiBwYXNzIikKKworICAgICMgRXhlY3V0
ZSBmcm9tIC4KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLXMiKQorICAg
IHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3B5dGhvbi9maXh0dXJlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24v
Zml4dHVyZXMucHkKc2ltaWxhcml0eSBpbmRleCA3NCUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9weXRob24vZml4dHVyZS5weQpyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9w
eXRob24vZml4dHVyZXMucHkKaW5kZXggNmQyYmI2NjNiNmNkLi45YWU1YTkxZGI0MzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmUucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9weXRob24vZml4dHVyZXMucHkKQEAgLTEsMjQzICsxLDE1NiBAQAotZnJv
bSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CitpbXBvcnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKIAot
aW1wb3J0IF9weXRlc3QuX2NvZGUKIGltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdC5weXRlc3Rl
ciBpbXBvcnQgZ2V0X3B1YmxpY19uYW1lcwotZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBG
aXh0dXJlTG9va3VwRXJyb3IsIEZpeHR1cmVSZXF1ZXN0CiBmcm9tIF9weXRlc3QgaW1wb3J0IGZp
eHR1cmVzCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBnZXRmdW5jYXJnbmFtZXMKK2Zyb20g
X3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1w
b3J0IEZpeHR1cmVSZXF1ZXN0Citmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJv
bSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBnZXRfcHVibGljX25hbWVzCiAKIAotZGVmIHRlc3Rf
Z2V0ZnVuY2FyZ25hbWVzKCk6CitkZWYgdGVzdF9nZXRmdW5jYXJnbmFtZXNfZnVuY3Rpb25zKCk6
CisgICAgIiIiVGVzdCBnZXRmdW5jYXJnbmFtZXMgZm9yIG5vcm1hbCBmdW5jdGlvbnMiIiIKIAog
ICAgIGRlZiBmKCk6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcigpCiAKLSAgICBhc3NlcnQgbm90IGZpeHR1cmVzLmdldGZ1bmNhcmduYW1lcyhmKQorICAg
IGFzc2VydCBub3QgZ2V0ZnVuY2FyZ25hbWVzKGYpCiAKICAgICBkZWYgZyhhcmcpOgotICAgICAg
ICBwYXNzCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYXNzZXJ0
IGZpeHR1cmVzLmdldGZ1bmNhcmduYW1lcyhnKSA9PSAoImFyZyIsKQorICAgIGFzc2VydCBnZXRm
dW5jYXJnbmFtZXMoZykgPT0gKCJhcmciLCkKIAogICAgIGRlZiBoKGFyZzEsIGFyZzI9ImhlbGxv
Iik6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAK
LSAgICBhc3NlcnQgZml4dHVyZXMuZ2V0ZnVuY2FyZ25hbWVzKGgpID09ICgiYXJnMSIsKQorICAg
IGFzc2VydCBnZXRmdW5jYXJnbmFtZXMoaCkgPT0gKCJhcmcxIiwpCiAKLSAgICBkZWYgaChhcmcx
LCBhcmcyLCBhcmczPSJoZWxsbyIpOgotICAgICAgICBwYXNzCisgICAgZGVmIGooYXJnMSwgYXJn
MiwgYXJnMz0iaGVsbG8iKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAK
LSAgICBhc3NlcnQgZml4dHVyZXMuZ2V0ZnVuY2FyZ25hbWVzKGgpID09ICgiYXJnMSIsICJhcmcy
IikKKyAgICBhc3NlcnQgZ2V0ZnVuY2FyZ25hbWVzKGopID09ICgiYXJnMSIsICJhcmcyIikKIAot
ICAgIGNsYXNzIEEob2JqZWN0KToKIAorZGVmIHRlc3RfZ2V0ZnVuY2FyZ25hbWVzX21ldGhvZHMo
KToKKyAgICAiIiJUZXN0IGdldGZ1bmNhcmduYW1lcyBmb3Igbm9ybWFsIG1ldGhvZHMiIiIKKwor
ICAgIGNsYXNzIEE6CiAgICAgICAgIGRlZiBmKHNlbGYsIGFyZzEsIGFyZzI9ImhlbGxvIik6Ci0g
ICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkK
IAorICAgIGFzc2VydCBnZXRmdW5jYXJnbmFtZXMoQSgpLmYpID09ICgiYXJnMSIsKQorCisKK2Rl
ZiB0ZXN0X2dldGZ1bmNhcmduYW1lc19zdGF0aWNtZXRob2QoKToKKyAgICAiIiJUZXN0IGdldGZ1
bmNhcmduYW1lcyBmb3Igc3RhdGljbWV0aG9kcyIiIgorCisgICAgY2xhc3MgQToKICAgICAgICAg
QHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgc3RhdGljKGFyZzEsIGFyZzIpOgotICAgICAgICAg
ICAgcGFzcworICAgICAgICBkZWYgc3RhdGljKGFyZzEsIGFyZzIsIHg9MSk6CisgICAgICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIGFzc2VydCBnZXRmdW5jYXJnbmFt
ZXMoQS5zdGF0aWMsIGNscz1BKSA9PSAoImFyZzEiLCAiYXJnMiIpCisKKworZGVmIHRlc3RfZ2V0
ZnVuY2FyZ25hbWVzX3BhcnRpYWwoKToKKyAgICAiIiJDaGVjayBnZXRmdW5jYXJnbmFtZXMgZm9y
IG1ldGhvZHMgZGVmaW5lZCB3aXRoIGZ1bmN0b29scy5wYXJ0aWFsICgjNTcwMSkiIiIKKyAgICBp
bXBvcnQgZnVuY3Rvb2xzCisKKyAgICBkZWYgY2hlY2soYXJnMSwgYXJnMiwgaSk6CisgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgY2xhc3MgVDoKKyAgICAgICAgdGVz
dF9vayA9IGZ1bmN0b29scy5wYXJ0aWFsKGNoZWNrLCBpPTIpCisKKyAgICB2YWx1ZXMgPSBnZXRm
dW5jYXJnbmFtZXMoVCgpLnRlc3Rfb2ssIG5hbWU9InRlc3Rfb2siKQorICAgIGFzc2VydCB2YWx1
ZXMgPT0gKCJhcmcxIiwgImFyZzIiKQorCiAKLSAgICBhc3NlcnQgZml4dHVyZXMuZ2V0ZnVuY2Fy
Z25hbWVzKEEoKS5mKSA9PSAoImFyZzEiLCkKLSAgICBhc3NlcnQgZml4dHVyZXMuZ2V0ZnVuY2Fy
Z25hbWVzKEEuc3RhdGljLCBjbHM9QSkgPT0gKCJhcmcxIiwgImFyZzIiKQorZGVmIHRlc3RfZ2V0
ZnVuY2FyZ25hbWVzX3N0YXRpY21ldGhvZF9wYXJ0aWFsKCk6CisgICAgIiIiQ2hlY2sgZ2V0ZnVu
Y2FyZ25hbWVzIGZvciBzdGF0aWNtZXRob2RzIGRlZmluZWQgd2l0aCBmdW5jdG9vbHMucGFydGlh
bCAoIzU3MDEpIiIiCisgICAgaW1wb3J0IGZ1bmN0b29scwogCisgICAgZGVmIGNoZWNrKGFyZzEs
IGFyZzIsIGkpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAotY2xhc3Mg
VGVzdEZpbGxGaXh0dXJlcyhvYmplY3QpOgorICAgIGNsYXNzIFQ6CisgICAgICAgIHRlc3Rfb2sg
PSBzdGF0aWNtZXRob2QoZnVuY3Rvb2xzLnBhcnRpYWwoY2hlY2ssIGk9MikpCiAKKyAgICB2YWx1
ZXMgPSBnZXRmdW5jYXJnbmFtZXMoVCgpLnRlc3Rfb2ssIG5hbWU9InRlc3Rfb2siKQorICAgIGFz
c2VydCB2YWx1ZXMgPT0gKCJhcmcxIiwgImFyZzIiKQorCisKK0BweXRlc3QubWFyay5weXRlc3Rl
cl9leGFtcGxlX3BhdGgoImZpeHR1cmVzL2ZpbGxfZml4dHVyZXMiKQorY2xhc3MgVGVzdEZpbGxG
aXh0dXJlczoKICAgICBkZWYgdGVzdF9maWxsZnVuY2FyZ3NfZXhwb3NlZChzZWxmKToKICAgICAg
ICAgIyB1c2VkIGJ5IG9lanNraXQsIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkKICAgICAgICAgYXNz
ZXJ0IHB5dGVzdC5fZmlsbGZ1bmNhcmdzID09IGZpeHR1cmVzLmZpbGxmaXh0dXJlcwogCiAgICAg
ZGVmIHRlc3RfZnVuY2FyZ19sb29rdXBmYWlscyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0Ci0KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIHh5enNv
bWV0aGluZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gNDIKLQotICAgICAgICAg
ICAgZGVmIHRlc3RfZnVuYyhzb21lKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIi
IgotICAgICAgICApCisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCkKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKSAgIyAiLS1jb2xsZWN0LW9ubHkiKQogICAgICAgICBh
c3NlcnQgcmVzdWx0LnJldCAhPSAwCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKLSAgICAgICAgICAgIFsiKmRlZiB0ZXN0X2Z1bmMoc29tZSkqIiwgIipmaXh0dXJlKnNvbWUq
bm90IGZvdW5kKiIsICIqeHl6c29tZXRoaW5nKiJdCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0
X2Z1bmNhcmdfYmFzaWMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdl
dGl0ZW0oCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAg
ICAgICAgICpkZWYgdGVzdF9mdW5jKHNvbWUpKgorICAgICAgICAgICAgKmZpeHR1cmUqc29tZSpu
b3QgZm91bmQqCisgICAgICAgICAgICAqeHl6c29tZXRoaW5nKgorICAgICAgICAgICAgIiIiCisg
ICAgICAgICkKIAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYg
c29tZShyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5mdW5jdGlvbi5f
X25hbWVfXwotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgb3Ro
ZXIocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDQyCi0gICAgICAgICAgICBkZWYg
dGVzdF9mdW5jKHNvbWUsIG90aGVyKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIi
IgorICAgIGRlZiB0ZXN0X2RldGVjdF9yZWN1cnNpdmVfZGVwZW5kZW5jeV9lcnJvcihzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoKQorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKKyAgICAgICAgICAgIFsiKnJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGludm9sdmluZyBmaXh0dXJl
ICdmaXgxJyBkZXRlY3RlZCoiXQogICAgICAgICApCi0gICAgICAgIGZpeHR1cmVzLmZpbGxmaXh0
dXJlcyhpdGVtKQorCisgICAgZGVmIHRlc3RfZnVuY2FyZ19iYXNpYyhzZWxmLCB0ZXN0ZGlyKToK
KyAgICAgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoKQorICAgICAgICBpdGVtID0gdGVzdGRpci5n
ZXRpdGVtKFBhdGgoInRlc3RfZnVuY2FyZ19iYXNpYy5weSIpKQorICAgICAgICBpdGVtLl9yZXF1
ZXN0Ll9maWxsZml4dHVyZXMoKQogICAgICAgICBkZWwgaXRlbS5mdW5jYXJnc1sicmVxdWVzdCJd
CiAgICAgICAgIGFzc2VydCBsZW4oZ2V0X3B1YmxpY19uYW1lcyhpdGVtLmZ1bmNhcmdzKSkgPT0g
MgogICAgICAgICBhc3NlcnQgaXRlbS5mdW5jYXJnc1sic29tZSJdID09ICJ0ZXN0X2Z1bmMiCiAg
ICAgICAgIGFzc2VydCBpdGVtLmZ1bmNhcmdzWyJvdGhlciJdID09IDQyCiAKICAgICBkZWYgdGVz
dF9mdW5jYXJnX2xvb2t1cF9tb2R1bGVsZXZlbChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0Ci0KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIHNvbWV0
aGluZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5mdW5jdGlvbi5f
X25hbWVfXwotCi0gICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAg
ICAgICAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZiwgc29tZXRoaW5nKToKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0IHNvbWV0aGluZyA9PSAidGVzdF9tZXRob2QiCi0gICAgICAgICAgICBkZWYg
dGVzdF9mdW5jKHNvbWV0aGluZyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNvbWV0aGluZyA9
PSAidGVzdF9mdW5jIgotICAgICAgICAiIiIKLSAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLmNv
cHlfZXhhbXBsZSgpCiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCiAgICAg
ICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCiAgICAgZGVmIHRlc3RfZnVuY2Fy
Z19sb29rdXBfY2xhc3NsZXZlbChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcCA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAot
ICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6Ci0KLSAgICAgICAgICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgICAgICBkZWYgc29tZXRoaW5nKHNlbGYsIHJlcXVl
c3QpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5pbnN0YW5jZQotCi0gICAg
ICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYsIHNvbWV0aGluZyk6Ci0gICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBzb21ldGhpbmcgaXMgc2VsZgotICAgICAgICAiIiIKLSAgICAgICAg
KQorICAgICAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoKQogICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqMSBwYXNzZWQqIl0pCiAKICAgICBkZWYgdGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2
YWlsYWJsZV9pbl9zdWJkaXIoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHN1YjEgPSB0ZXN0ZGly
Lm1rcHlkaXIoInN1YjEiKQotICAgICAgICBzdWIyID0gdGVzdGRpci5ta3B5ZGlyKCJzdWIyIikK
LSAgICAgICAgc3ViMS5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5
dGVzdC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBh
cmcxKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoRXhjZXB0aW9uLCAi
cmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoJ2FyZzInKSIpCi0gICAgICAgICIiIgotICAgICAgICAg
ICAgKQotICAgICAgICApCi0gICAgICAgIHN1YjIuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgK
LSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0g
ICAgICAgICAgICBkZWYgYXJnMihyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBweXRlc3QucmFp
c2VzKEV4Y2VwdGlvbiwgInJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCdhcmcxJykiKQotICAgICAg
ICAiIiIKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotCi0gICAgICAgIHN1YjEuam9pbigidGVz
dF9pbl9zdWIxLnB5Iikud3JpdGUoImRlZiB0ZXN0XzEoYXJnMSk6IHBhc3MiKQotICAgICAgICBz
dWIyLmpvaW4oInRlc3RfaW5fc3ViMi5weSIpLndyaXRlKCJkZWYgdGVzdF8yKGFyZzIpOiBwYXNz
IikKKyAgICAgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoKQogICAgICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLXYiKQogICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3Nl
ZD0yKQogCiAgICAgZGVmIHRlc3RfZXh0ZW5kX2ZpeHR1cmVfbW9kdWxlX2NsYXNzKHNlbGYsIHRl
c3RkaXIpOgotICAgICAgICB0ZXN0ZmlsZSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAg
ICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0gICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBzcGFtKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICdzcGFtJwotCi0gICAgICAgICAgICBjbGFzcyBUZXN0U3BhbShvYmplY3QpOgotCi0gICAgICAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgICAgICBkZWYgc3BhbShzZWxm
LCBzcGFtKToKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcGFtICogMgotCi0gICAgICAg
ICAgICAgICAgIGRlZiB0ZXN0X3NwYW0oc2VsZiwgc3BhbSk6Ci0gICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQgc3BhbSA9PSAnc3BhbXNwYW0nCi0gICAgICAgICIiIgotICAgICAgICApCisgICAg
ICAgIHRlc3RmaWxlID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoKQogICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IioxIHBhc3NlZCoiXSkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdGZp
bGUpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkK
IAogICAgIGRlZiB0ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X21vZHVsZShzZWxmLCB0ZXN0
ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0g
ICAgICAgICAgICBkZWYgc3BhbSgpOgotICAgICAgICAgICAgICAgIHJldHVybiAnc3BhbScKLSAg
ICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZp
bGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgc3BhbShzcGFtKToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3BhbSAqIDIKLQotICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShz
cGFtKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc3BhbSA9PSAnc3BhbXNwYW0nCi0gICAgICAg
ICIiIgotICAgICAgICApCisgICAgICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgpCiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCh0ZXN0ZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3Ry
KG5leHQoUGF0aChzdHIocCkpLnJnbG9iKCJ0ZXN0XyoucHkiKSkpKQogICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKICAgICBkZWYgdGVzdF9leHRl
bmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVz
dGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKLQotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgc3Bh
bSgpOgotICAgICAgICAgICAgICAgIHJldHVybiAnc3BhbScKLSAgICAgICAgIiIiCi0gICAgICAg
ICkKLSAgICAgICAgcGtnID0gdGVzdGRpci5ta3B5ZGlyKCJwa2ciKQotICAgICAgICBwa2cuam9p
bigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNl
KAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0gICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBzcGFtKHNwYW0pOgotICAg
ICAgICAgICAgICAgIHJldHVybiBzcGFtICogMgotICAgICAgICAiIiIKLSAgICAgICAgICAgICkK
LSAgICAgICAgKQotICAgICAgICB0ZXN0ZmlsZSA9IHBrZy5qb2luKCJ0ZXN0X3NwYW0ucHkiKQot
ICAgICAgICB0ZXN0ZmlsZS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNl
KAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShzcGFtKToK
LSAgICAgICAgICAgICAgICBhc3NlcnQgc3BhbSA9PSAic3BhbXNwYW0iCi0gICAgICAgICIiIgot
ICAgICAgICAgICAgKQotICAgICAgICApCisgICAgICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBs
ZSgpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQotICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCh0ZXN0ZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3Qoc3RyKG5leHQoUGF0aChzdHIocCkpLnJnbG9iKCJ0ZXN0XyoucHkiKSkpKQogICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKICAgICBkZWYg
dGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9wbHVnaW4oc2VsZiwgdGVzdGRpcik6CkBAIC0z
NDQsMjMgKzI1NywyMyBAQCBjbGFzcyBUZXN0RmlsbEZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAg
ICkKICAgICAgICAgc3ViZGlyID0gdGVzdGRpci5ta3B5ZGlyKCJzdWJkaXIiKQogICAgICAgICBz
dWJkaXIuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2Nv
ZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZQotICAgICAgICAgICAgZGVmIHNwYW0oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ3NwYW0n
Ci0gICAgICAgICIiIgorICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAg
ICAgICAgIGRlZiBzcGFtKCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnc3BhbScKKyAg
ICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICB0ZXN0
ZmlsZSA9IHN1YmRpci5qb2luKCJ0ZXN0X3NwYW0ucHkiKQogICAgICAgICB0ZXN0ZmlsZS53cml0
ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdy
YXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBkZWYgdGVz
dF9zcGFtKHNwYW0pOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgc3BhbSA9PSAic3BhbSIK
ICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X3NwYW0oc3BhbSk6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0gPT0gInNwYW0iCi0gICAgICAgICIiIgogICAgICAg
ICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
QEAgLTQxMiwyNiArMzI1LDI2IEBAIGNsYXNzIFRlc3RGaWxsRml4dHVyZXMob2JqZWN0KToKICAg
ICAgICAgKQogICAgICAgICBzdWJkaXIgPSB0ZXN0ZGlyLm1rcHlkaXIoInN1YmRpciIpCiAgICAg
ICAgIHN1YmRpci5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVz
dC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIi
XAorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAotICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlKHBhcmFtcz1bMSwgMiwgM10pCi0gICAgICAgICAgICBkZWYgc3BhbShyZXF1ZXN0KToK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQotICAgICAgICAiIiIKKyAgICAg
ICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsxLCAyLCAzXSkKKyAgICAgICAgICAg
ICAgICBkZWYgc3BhbShyZXF1ZXN0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVl
c3QucGFyYW0KKyAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQog
ICAgICAgICB0ZXN0ZmlsZSA9IHN1YmRpci5qb2luKCJ0ZXN0X3NwYW0ucHkiKQogICAgICAgICB0
ZXN0ZmlsZS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAg
ICAgICAgICAgICIiIgotICAgICAgICAgICAgcGFyYW1zID0geydzcGFtJzogMX0KKyAgICAgICAg
ICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAg
ICAgcGFyYW1zID0geydzcGFtJzogMX0KIAotICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShzcGFt
KToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc3BhbSA9PSBwYXJhbXNbJ3NwYW0nXQotICAgICAg
ICAgICAgICAgIHBhcmFtc1snc3BhbSddICs9IDEKLSAgICAgICAgIiIiCisgICAgICAgICAgICAg
ICAgZGVmIHRlc3Rfc3BhbShzcGFtKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0g
PT0gcGFyYW1zWydzcGFtJ10KKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zWydzcGFtJ10gKz0g
MQorICAgICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKQEAgLTQ1NiwyNiArMzY5LDI2IEBAIGNsYXNz
IFRlc3RGaWxsRml4dHVyZXMob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICBzdWJkaXIgPSB0
ZXN0ZGlyLm1rcHlkaXIoInN1YmRpciIpCiAgICAgICAgIHN1YmRpci5qb2luKCJjb25mdGVzdC5w
eSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKIAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bMSwgMiwgM10pCi0g
ICAgICAgICAgICBkZWYgc3BhbShyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVx
dWVzdC5wYXJhbQotICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUo
cGFyYW1zPVsxLCAyLCAzXSkKKyAgICAgICAgICAgICAgICBkZWYgc3BhbShyZXF1ZXN0KToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KKyAgICAgICAgICAgICAgICAi
IiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICB0ZXN0ZmlsZSA9IHN1YmRpci5q
b2luKCJ0ZXN0X3NwYW0ucHkiKQogICAgICAgICB0ZXN0ZmlsZS53cml0ZSgKLSAgICAgICAgICAg
IF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
cGFyYW1zID0geydzcGFtJzogMX0KKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAg
ICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgcGFyYW1zID0geydzcGFtJzogMX0KIAot
ICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShzcGFtKToKLSAgICAgICAgICAgICAgICBhc3NlcnQg
c3BhbSA9PSBwYXJhbXNbJ3NwYW0nXQotICAgICAgICAgICAgICAgIHBhcmFtc1snc3BhbSddICs9
IDEKLSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShzcGFtKToKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0gPT0gcGFyYW1zWydzcGFtJ10KKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWydzcGFtJ10gKz0gMQorICAgICAgICAgICAgICAgICIiIgogICAg
ICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKQEAgLTQ4Myw2ICszOTYsMTMyIEBAIGNsYXNzIFRlc3RGaWxsRml4dHVyZXMob2JqZWN0KToK
ICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdGZpbGUpCiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiozIHBhc3NlZCoiXSkKIAorICAgIGRlZiB0ZXN0
X292ZXJyaWRlX2ZpeHR1cmVfcmV1c2luZ19zdXBlcl9maXh0dXJlX3BhcmFtZXRyaXphdGlvbihz
ZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgYSBmaXh0dXJlIGF0IGEgbG93ZXIg
bGV2ZWwsIHJldXNpbmcgdGhlIGhpZ2hlci1sZXZlbCBmaXh0dXJlIHRoYXQKKyAgICAgICAgaXMg
cGFyYW1ldHJpemVkICgjMTk1MykuCisgICAgICAgICIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vj
b25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisg
ICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsxLCAyXSkKKyAgICAgICAgICAgIGRl
ZiBmb28ocmVxdWVzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KKyAg
ICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBmb28oZm9vKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZm9vICogMgorCisgICAgICAgICAgICBkZWYgdGVzdF9zcGFtKGZvbyk6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0IGZvbyBpbiAoMiwgNCkKKyAgICAgICAgICAgICIiIgorICAgICAg
ICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkKiJdKQorCisgICAgZGVmIHRlc3Rfb3Zl
cnJpZGVfcGFyYW1ldHJpemVfZml4dHVyZV9hbmRfaW5kaXJlY3Qoc2VsZiwgdGVzdGRpcik6Cisg
ICAgICAgICIiIk92ZXJyaWRlIGEgZml4dHVyZSBhdCBhIGxvd2VyIGxldmVsLCByZXVzaW5nIHRo
ZSBoaWdoZXItbGV2ZWwgZml4dHVyZSB0aGF0CisgICAgICAgIGlzIHBhcmFtZXRyaXplZCwgd2hp
bGUgYWxzbyB1c2luZyBpbmRpcmVjdCBwYXJhbWV0cml6YXRpb24uCisgICAgICAgICIiIgorICAg
ICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsxLCAy
XSkKKyAgICAgICAgICAgIGRlZiBmb28ocmVxdWVzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlcXVlc3QucGFyYW0KKyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBmb28oZm9v
KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9vICogMgorCisgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBiYXIocmVxdWVzdCk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlcXVlc3QucGFyYW0gKiAxMDAKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJiYXIiLCBbNDJdLCBpbmRpcmVjdD1UcnVlKQorICAgICAgICAgICAgZGVmIHRl
c3Rfc3BhbShiYXIsIGZvbyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGJhciA9PSA0MjAwCisg
ICAgICAgICAgICAgICAgYXNzZXJ0IGZvbyBpbiAoMiwgNCkKKyAgICAgICAgICAgICIiIgorICAg
ICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkKiJdKQorCisgICAgZGVmIHRlc3Rf
b3ZlcnJpZGVfdG9wX2xldmVsX2ZpeHR1cmVfcmV1c2luZ19zdXBlcl9maXh0dXJlX3BhcmFtZXRy
aXphdGlvbigKKyAgICAgICAgc2VsZiwgdGVzdGRpcgorICAgICk6CisgICAgICAgICIiIlNhbWUg
YXMgdGhlIGFib3ZlIHRlc3QsIGJ1dCB3aXRoIGFub3RoZXIgbGV2ZWwgb2Ygb3ZlcndyaXRpbmcu
IiIiCisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShwYXJh
bXM9Wyd1bnVzZWQnLCAndW51c2VkJ10pCisgICAgICAgICAgICBkZWYgZm9vKHJlcXVlc3QpOgor
ICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBh
cmFtcz1bMSwgMl0pCisgICAgICAgICAgICBkZWYgZm9vKHJlcXVlc3QpOgorICAgICAgICAgICAg
ICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCisKKyAgICAgICAgICAgIGNsYXNzIFRlc3Q6CisKKyAg
ICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNl
bGYsIGZvbyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb28gKiAyCisKKyAgICAgICAg
ICAgICAgICBkZWYgdGVzdF9zcGFtKHNlbGYsIGZvbyk6CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydCBmb28gaW4gKDIsIDQpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbIioyIHBhc3NlZCoiXSkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX3BhcmFtZXRy
aXplZF9maXh0dXJlX3dpdGhfbmV3X3BhcmFtZXRyaXplZF9maXh0dXJlKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICAiIiJPdmVycmlkaW5nIGEgcGFyYW1ldHJpemVkIGZpeHR1cmUsIHdoaWxlIGFs
c28gcGFyYW1ldHJpemluZyB0aGUgbmV3IGZpeHR1cmUgYW5kCisgICAgICAgIHNpbXVsdGFuZW91
c2x5IHJlcXVlc3RpbmcgdGhlIG92ZXJ3cml0dGVuIGZpeHR1cmUgYXMgcGFyYW1ldGVyLCB5aWVs
ZHMgdGhlIHNhbWUgdmFsdWUKKyAgICAgICAgYXMgYGByZXF1ZXN0LnBhcmFtYGAuCisgICAgICAg
ICIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFy
YW1zPVsnaWdub3JlZCcsICdpZ25vcmVkJ10pCisgICAgICAgICAgICBkZWYgZm9vKHJlcXVlc3Qp
OgorICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJl
KHBhcmFtcz1bMTAsIDIwXSkKKyAgICAgICAgICAgIGRlZiBmb28oZm9vLCByZXF1ZXN0KToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgcmVxdWVzdC5wYXJhbSA9PSBmb28KKyAgICAgICAgICAgICAg
ICByZXR1cm4gZm9vICogMgorCisgICAgICAgICAgICBkZWYgdGVzdF9zcGFtKGZvbyk6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0IGZvbyBpbiAoMjAsIDQwKQorICAgICAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNzZWQqIl0pCisKICAgICBkZWYgdGVzdF9h
dXRvdXNlX2ZpeHR1cmVfcGx1Z2luKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAjIEEgZml4dHVy
ZSBmcm9tIGEgcGx1Z2luIGhhcyBubyBiYXNlaWQgc2V0LCB3aGljaCBzY3Jld2VkIHVwCiAgICAg
ICAgICMgdGhlIGF1dG91c2UgZml4dHVyZSBoYW5kbGluZy4KQEAgLTUzNywxMiArNTc2LDEzIEBA
IGNsYXNzIFRlc3RGaWxsRml4dHVyZXMob2JqZWN0KToKICAgICAgICAgICAgICAgICAiKkVSUk9S
IGF0IHNldHVwIG9mIHRlc3RfbG9va3VwX2Vycm9yKiIsCiAgICAgICAgICAgICAgICAgIiAgZGVm
IHRlc3RfbG9va3VwX2Vycm9yKHVua25vd24pOioiLAogICAgICAgICAgICAgICAgICJFICAgICAg
IGZpeHR1cmUgJ3Vua25vd24nIG5vdCBmb3VuZCIsCi0gICAgICAgICAgICAgICAgIj4gICAgICAg
YXZhaWxhYmxlIGZpeHR1cmVzOiphX2ZpeHR1cmUsKmJfZml4dHVyZSwqY19maXh0dXJlLCpkX2Zp
eHR1cmUqbW9ua2V5cGF0Y2gsKiIsICAjIHNvcnRlZAorICAgICAgICAgICAgICAgICI+ICAgICAg
IGF2YWlsYWJsZSBmaXh0dXJlczoqYV9maXh0dXJlLCpiX2ZpeHR1cmUsKmNfZml4dHVyZSwqZF9m
aXh0dXJlKm1vbmtleXBhdGNoLCoiLAorICAgICAgICAgICAgICAgICMgc29ydGVkCiAgICAgICAg
ICAgICAgICAgIj4gICAgICAgdXNlICdweSp0ZXN0IC0tZml4dHVyZXMgKicgZm9yIGhlbHAgb24g
dGhlbS4iLAogICAgICAgICAgICAgICAgICIqMSBlcnJvcioiLAogICAgICAgICAgICAgXQogICAg
ICAgICApCi0gICAgICAgIGFzc2VydCAiSU5URVJOQUwiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqSU5URVJOQUwqIikK
IAogICAgIGRlZiB0ZXN0X2ZpeHR1cmVfZXhjaW5mb19sZWFrKHNlbGYsIHRlc3RkaXIpOgogICAg
ICAgICAjIG9uIHB5dGhvbjIgc3lzLmV4Y2luZm8gd291bGQgbGVhayBpbnRvIGZpeHR1cmUgZXhl
Y3V0aW9ucwpAQCAtNTY5LDggKzYwOSw3IEBAIGNsYXNzIFRlc3RGaWxsRml4dHVyZXMob2JqZWN0
KToKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAKLWNsYXNzIFRlc3RSZXF1ZXN0
QmFzaWMob2JqZWN0KToKLQorY2xhc3MgVGVzdFJlcXVlc3RCYXNpYzoKICAgICBkZWYgdGVzdF9y
ZXF1ZXN0X2F0dHJpYnV0ZXMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGly
LmdldGl0ZW0oCiAgICAgICAgICAgICAiIiIKQEAgLTU5MSw3ICs2MzAsNyBAQCBjbGFzcyBUZXN0
UmVxdWVzdEJhc2ljKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXByKHJlcSkuZmluZChyZXEu
ZnVuY3Rpb24uX19uYW1lX18pICE9IC0xCiAKICAgICBkZWYgdGVzdF9yZXF1ZXN0X2F0dHJpYnV0
ZXNfbWV0aG9kKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBpdGVtLCA9IHRlc3RkaXIuZ2V0aXRl
bXMoCisgICAgICAgIChpdGVtLCkgPSB0ZXN0ZGlyLmdldGl0ZW1zKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBjbGFzcyBUZXN0QihvYmpl
Y3QpOgpAQCAtNjE5LDEzICs2NTgsMjMgQEAgY2xhc3MgVGVzdFJlcXVlc3RCYXNpYyhvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAg
ICAgIGl0ZW0xLCA9IHRlc3RkaXIuZ2VuaXRlbXMoW21vZGNvbF0pCisgICAgICAgIChpdGVtMSwp
ID0gdGVzdGRpci5nZW5pdGVtcyhbbW9kY29sXSkKICAgICAgICAgYXNzZXJ0IGl0ZW0xLm5hbWUg
PT0gInRlc3RfbWV0aG9kIgogICAgICAgICBhcmcyZml4dHVyZWRlZnMgPSBmaXh0dXJlcy5GaXh0
dXJlUmVxdWVzdChpdGVtMSkuX2FyZzJmaXh0dXJlZGVmcwogICAgICAgICBhc3NlcnQgbGVuKGFy
ZzJmaXh0dXJlZGVmcykgPT0gMQogICAgICAgICBhc3NlcnQgYXJnMmZpeHR1cmVkZWZzWyJzb21l
dGhpbmciXVswXS5hcmduYW1lID09ICJzb21ldGhpbmciCiAKKyAgICBAcHl0ZXN0Lm1hcmsuc2tp
cGlmKAorICAgICAgICBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIiksCisgICAgICAg
IHJlYXNvbj0idGhpcyBtZXRob2Qgb2YgdGVzdCBkb2Vzbid0IHdvcmsgb24gcHlweSIsCisgICAg
KQogICAgIGRlZiB0ZXN0X3JlcXVlc3RfZ2FyYmFnZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgaW1wb3J0IHhkaXN0ICAjIG5vcWEKKyAgICAgICAgZXhjZXB0IElt
cG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cHl0ZXN0LnhmYWlsKCJ0aGlzIHRlc3QgaXMgZmxha3kgd2hlbiBleGVjdXRlZCB3aXRoIHhkaXN0
IikKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBpbXBvcnQgc3lzCkBAIC02MzUsMzMgKzY4NCwyNSBAQCBjbGFzcyBUZXN0UmVxdWVzdEJh
c2ljKG9iamVjdCk6CiAKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUp
CiAgICAgICAgICAgICBkZWYgc29tZXRoaW5nKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgICMg
dGhpcyBtZXRob2Qgb2YgdGVzdCBkb2Vzbid0IHdvcmsgb24gcHlweQotICAgICAgICAgICAgICAg
IGlmIGhhc2F0dHIoc3lzLCAicHlweV92ZXJzaW9uX2luZm8iKToKLSAgICAgICAgICAgICAgICAg
ICAgeWllbGQKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcmln
aW5hbCA9IGdjLmdldF9kZWJ1ZygpCi0gICAgICAgICAgICAgICAgICAgIGdjLnNldF9kZWJ1Zyhn
Yy5ERUJVR19TQVZFQUxMKQotICAgICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAg
ICAgICAgICAgICBvcmlnaW5hbCA9IGdjLmdldF9kZWJ1ZygpCisgICAgICAgICAgICAgICAgZ2Mu
c2V0X2RlYnVnKGdjLkRFQlVHX1NBVkVBTEwpCisgICAgICAgICAgICAgICAgZ2MuY29sbGVjdCgp
CiAKLSAgICAgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICB5aWVsZAogCisg
ICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAg
ICAgICAgICAgICAgICAgICAgbGVha2VkX3R5cGVzID0gc3VtKDEgZm9yIF8gaW4gZ2MuZ2FyYmFn
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShf
LCBQc2V1ZG9GaXh0dXJlRGVmKSkKLQotICAgICAgICAgICAgICAgICAgICBnYy5nYXJiYWdlWzpd
ID0gW10KLQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQgbGVha2VkX3R5cGVzID09IDAKLSAgICAgICAgICAgICAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGdjLnNldF9kZWJ1ZyhvcmlnaW5hbCkKKyAgICAgICAg
ICAgICAgICAgICAgbGVha2VkID0gW3ggZm9yIF8gaW4gZ2MuZ2FyYmFnZSBpZiBpc2luc3RhbmNl
KF8sIFBzZXVkb0ZpeHR1cmVEZWYpXQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGVha2Vk
ID09IFtdCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgZ2Mu
c2V0X2RlYnVnKG9yaWdpbmFsKQogCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CiAgICAg
ICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXByZWMg
PSB0ZXN0ZGlyLmlubGluZV9ydW4oKQotICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4gKiJdKQog
CiAgICAgZGVmIHRlc3RfZ2V0Zml4dHVyZXZhbHVlX3JlY3Vyc2l2ZShzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCkBAIC02ODcsOCArNzI4LDQ1IEBAIGNsYXNz
IFRlc3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxp
bmVfcnVuKCkKICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImdldGZpeG1ldGhvZCIsICgiZ2V0Zml4dHVyZXZhbHVl
IiwgImdldGZ1bmNhcmd2YWx1ZSIpKQotICAgIGRlZiB0ZXN0X2dldGZpeHR1cmV2YWx1ZShzZWxm
LCB0ZXN0ZGlyLCBnZXRmaXhtZXRob2QpOgorICAgIGRlZiB0ZXN0X2dldGZpeHR1cmV2YWx1ZV90
ZWFyZG93bihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIElzc3VlICMxODk1
CisKKyAgICAgICAgYHRlc3RfaW5uZXJgIHJlcXVlc3RzIGBpbm5lcmAgZml4dHVyZSwgd2hpY2gg
aW4gdHVybiByZXF1ZXN0cyBgcmVzb3VyY2VgCisgICAgICAgIHVzaW5nIGBnZXRmaXh0dXJldmFs
dWVgLiBgdGVzdF9mdW5jYCB0aGVuIHJlcXVlc3RzIGByZXNvdXJjZWAuCisKKyAgICAgICAgYHJl
c291cmNlYCBpcyB0ZWFyZG93biBiZWZvcmUgYGlubmVyYCBiZWNhdXNlIHRoZSBmaXh0dXJlIG1l
Y2hhbmlzbSB3b24ndCBjb25zaWRlcgorICAgICAgICBgaW5uZXJgIGRlcGVuZGVudCBvbiBgcmVz
b3VyY2VgIHdoZW4gaXQgaXMgdXNlZCB2aWEgYGdldGZpeHR1cmV2YWx1ZWA6IGB0ZXN0X2Z1bmNg
CisgICAgICAgIHdpbGwgdGhlbiBjYXVzZSB0aGUgYHJlc291cmNlYCdzIGZpbmFsaXplciB0byBi
ZSBjYWxsZWQgZmlyc3QgYmVjYXVzZSBvZiB0aGlzLgorICAgICAgICAiIiIKKyAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0CisKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nc2Vzc2lvbicpCisgICAg
ICAgICAgICBkZWYgcmVzb3VyY2UoKToKKyAgICAgICAgICAgICAgICByID0gWyd2YWx1ZSddCisg
ICAgICAgICAgICAgICAgeWllbGQgcgorICAgICAgICAgICAgICAgIHIucG9wKCkKKworICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdzZXNzaW9uJykKKyAgICAgICAgICAgIGRlZiBp
bm5lcihyZXF1ZXN0KToKKyAgICAgICAgICAgICAgICByZXNvdXJjZSA9IHJlcXVlc3QuZ2V0Zml4
dHVyZXZhbHVlKCdyZXNvdXJjZScpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlc291cmNlID09
IFsndmFsdWUnXQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgYXNzZXJ0
IHJlc291cmNlID09IFsndmFsdWUnXQorCisgICAgICAgICAgICBkZWYgdGVzdF9pbm5lcihpbm5l
cik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKHJl
c291cmNlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIiIgorICAgICAgICApCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKiAyIHBhc3NlZCBpbiAqIl0pCisKKyAgICBkZWYgdGVzdF9nZXRm
aXh0dXJldmFsdWUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0
ZW0oCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTcwMSwz
NSArNzc5LDIyIEBAIGNsYXNzIFRlc3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAgICAgICAgICAg
IGRlZiB0ZXN0X2Z1bmMoc29tZXRoaW5nKTogcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQot
ICAgICAgICBpbXBvcnQgY29udGV4dGxpYgotCi0gICAgICAgIGlmIGdldGZpeG1ldGhvZCA9PSAi
Z2V0ZnVuY2FyZ3ZhbHVlIjoKLSAgICAgICAgICAgIHdhcm5pbmdfZXhwZWN0YXRpb24gPSBweXRl
c3Qud2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
IyBzZWUgIzE4MzAgZm9yIGEgY2xlYW5lciB3YXkgdG8gYWNjb21wbGlzaCB0aGlzCi0gICAgICAg
ICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotICAgICAgICAgICAgZGVmIGV4cGVjdGlu
Z19ub193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgeWllbGQKLQotICAgICAgICAgICAgd2Fy
bmluZ19leHBlY3RhdGlvbiA9IGV4cGVjdGluZ19ub193YXJuaW5nKCkKLQogICAgICAgICByZXEg
PSBpdGVtLl9yZXF1ZXN0Ci0gICAgICAgIHdpdGggd2FybmluZ19leHBlY3RhdGlvbjoKLSAgICAg
ICAgICAgIGZpeHR1cmVfZmV0Y2hlciA9IGdldGF0dHIocmVxLCBnZXRmaXhtZXRob2QpCi0gICAg
ICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoRml4dHVyZUxvb2t1cEVycm9yKToKLSAgICAgICAg
ICAgICAgICBmaXh0dXJlX2ZldGNoZXIoIm5vdGV4aXN0cyIpCi0gICAgICAgICAgICB2YWwgPSBm
aXh0dXJlX2ZldGNoZXIoInNvbWV0aGluZyIpCi0gICAgICAgICAgICBhc3NlcnQgdmFsID09IDEK
LSAgICAgICAgICAgIHZhbCA9IGZpeHR1cmVfZmV0Y2hlcigic29tZXRoaW5nIikKLSAgICAgICAg
ICAgIGFzc2VydCB2YWwgPT0gMQotICAgICAgICAgICAgdmFsMiA9IGZpeHR1cmVfZmV0Y2hlcigi
b3RoZXIiKQotICAgICAgICAgICAgYXNzZXJ0IHZhbDIgPT0gMgotICAgICAgICAgICAgdmFsMiA9
IGZpeHR1cmVfZmV0Y2hlcigib3RoZXIiKSAgIyBzZWUgYWJvdXQgY2FjaGluZwotICAgICAgICAg
ICAgYXNzZXJ0IHZhbDIgPT0gMgotICAgICAgICAgICAgcHl0ZXN0Ll9maWxsZnVuY2FyZ3MoaXRl
bSkKLSAgICAgICAgICAgIGFzc2VydCBpdGVtLmZ1bmNhcmdzWyJzb21ldGhpbmciXSA9PSAxCi0g
ICAgICAgICAgICBhc3NlcnQgbGVuKGdldF9wdWJsaWNfbmFtZXMoaXRlbS5mdW5jYXJncykpID09
IDIKLSAgICAgICAgICAgIGFzc2VydCAicmVxdWVzdCIgaW4gaXRlbS5mdW5jYXJncworCisgICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuRml4dHVyZUxvb2t1cEVycm9yKToKKyAgICAg
ICAgICAgIHJlcS5nZXRmaXh0dXJldmFsdWUoIm5vdGV4aXN0cyIpCisgICAgICAgIHZhbCA9IHJl
cS5nZXRmaXh0dXJldmFsdWUoInNvbWV0aGluZyIpCisgICAgICAgIGFzc2VydCB2YWwgPT0gMQor
ICAgICAgICB2YWwgPSByZXEuZ2V0Zml4dHVyZXZhbHVlKCJzb21ldGhpbmciKQorICAgICAgICBh
c3NlcnQgdmFsID09IDEKKyAgICAgICAgdmFsMiA9IHJlcS5nZXRmaXh0dXJldmFsdWUoIm90aGVy
IikKKyAgICAgICAgYXNzZXJ0IHZhbDIgPT0gMgorICAgICAgICB2YWwyID0gcmVxLmdldGZpeHR1
cmV2YWx1ZSgib3RoZXIiKSAgIyBzZWUgYWJvdXQgY2FjaGluZworICAgICAgICBhc3NlcnQgdmFs
MiA9PSAyCisgICAgICAgIGl0ZW0uX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCisgICAgICAgIGFz
c2VydCBpdGVtLmZ1bmNhcmdzWyJzb21ldGhpbmciXSA9PSAxCisgICAgICAgIGFzc2VydCBsZW4o
Z2V0X3B1YmxpY19uYW1lcyhpdGVtLmZ1bmNhcmdzKSkgPT0gMgorICAgICAgICBhc3NlcnQgInJl
cXVlc3QiIGluIGl0ZW0uZnVuY2FyZ3MKIAogICAgIGRlZiB0ZXN0X3JlcXVlc3RfYWRkZmluYWxp
emVyKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKApAQCAt
NzQzLDcgKzgwOCw3IEBAIGNsYXNzIFRlc3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAgICAgICAg
IiIiCiAgICAgICAgICkKICAgICAgICAgaXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlLnByZXBhcmUo
aXRlbSkKLSAgICAgICAgcHl0ZXN0Ll9maWxsZnVuY2FyZ3MoaXRlbSkKKyAgICAgICAgaXRlbS5f
cmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkKICAgICAgICAgIyBzdWNjZXNzaXZlbHkgY2hlY2sgZmlu
YWxpemF0aW9uIGNhbGxzCiAgICAgICAgIHRlYXJkb3dubGlzdCA9IGl0ZW0uZ2V0cGFyZW50KHB5
dGVzdC5Nb2R1bGUpLm9iai50ZWFyZG93bmxpc3QKICAgICAgICAgc3MgPSBpdGVtLnNlc3Npb24u
X3NldHVwc3RhdGUKQEAgLTc1MiwyNSArODE3LDYgQEAgY2xhc3MgVGVzdFJlcXVlc3RCYXNpYyhv
YmplY3QpOgogICAgICAgICBwcmludChzcy5zdGFjaykKICAgICAgICAgYXNzZXJ0IHRlYXJkb3du
bGlzdCA9PSBbMV0KIAotICAgIGRlZiB0ZXN0X21hcmtfYXNfZml4dHVyZV93aXRoX3ByZWZpeF9h
bmRfZGVjb3JhdG9yX2ZhaWxzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2Vj
b25mdGVzdCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0g
ICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBweXRlc3RfZnVuY2Fy
Z19fbWFya2VkX3dpdGhfcHJlZml4X2FuZF9kZWNvcmF0b3IoKToKLSAgICAgICAgICAgICAgICBw
YXNzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoKQotICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCi0gICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAiKkFzc2VydGlvbkVycm9yOiBmaXh0dXJlcyBjYW5ub3QgaGF2ZSpAcHl0ZXN0LmZp
eHR1cmUqIiwKLSAgICAgICAgICAgICAgICAiKnB5dGVzdF9mdW5jYXJnX19tYXJrZWRfd2l0aF9w
cmVmaXhfYW5kX2RlY29yYXRvcioiLAotICAgICAgICAgICAgXQotICAgICAgICApCi0KICAgICBk
ZWYgdGVzdF9yZXF1ZXN0X2FkZGZpbmFsaXplcl9mYWlsaW5nX3NldHVwKHNlbGYsIHRlc3RkaXIp
OgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTg2Miw3
ICs5MDgsNyBAQCBjbGFzcyBUZXN0UmVxdWVzdEJhc2ljKG9iamVjdCk6CiAKICAgICBkZWYgdGVz
dF9yZXF1ZXN0X2dldG1vZHVsZXBhdGgoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIG1vZGNvbCA9
IHRlc3RkaXIuZ2V0bW9kdWxlY29sKCJkZWYgdGVzdF9zb21lZnVuYygpOiBwYXNzIikKLSAgICAg
ICAgaXRlbSwgPSB0ZXN0ZGlyLmdlbml0ZW1zKFttb2Rjb2xdKQorICAgICAgICAoaXRlbSwpID0g
dGVzdGRpci5nZW5pdGVtcyhbbW9kY29sXSkKICAgICAgICAgcmVxID0gZml4dHVyZXMuRml4dHVy
ZVJlcXVlc3QoaXRlbSkKICAgICAgICAgYXNzZXJ0IHJlcS5mc3BhdGggPT0gbW9kY29sLmZzcGF0
aAogCkBAIC04ODMsMzAgKzkyOSwxNyBAQCBjbGFzcyBUZXN0UmVxdWVzdEJhc2ljKG9iamVjdCk6
CiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihyZXF1ZXN0LCBmYXJnKToKICAgICAgICAg
ICAgICAgICBhc3NlcnQgc2V0KGdldF9wdWJsaWNfbmFtZXMocmVxdWVzdC5maXh0dXJlbmFtZXMp
KSA9PSBcCiAgICAgICAgICAgICAgICAgICAgICAgIHNldChbInRtcGRpciIsICJzYXJnIiwgImFy
ZzEiLCAicmVxdWVzdCIsICJmYXJnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG1w
ZGlyX2ZhY3RvcnkiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG1wX3BhdGgiLCAi
dG1wX3BhdGhfZmFjdG9yeSJdKQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShw
YXNzZWQ9MSkKIAotICAgIGRlZiB0ZXN0X2Z1bmNhcmduYW1lc19jb21wYXRhdHRyKHNlbGYsIHRl
c3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVf
dGVzdHMobWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5mdW5jYXJn
bmFtZXMgPT0gbWV0YWZ1bmMuZml4dHVyZW5hbWVzCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUKLSAgICAgICAgICAgIGRlZiBmbihyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBhc3NlcnQg
cmVxdWVzdC5fcHlmdW5jaXRlbS5mdW5jYXJnbmFtZXMgPT0gXAotICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Ll9weWZ1bmNpdGVtLmZpeHR1cmVuYW1lcwotICAgICAgICAgICAgICAgIHJl
dHVybiByZXF1ZXN0LmZ1bmNhcmduYW1lcywgcmVxdWVzdC5maXh0dXJlbmFtZXMKLQotICAgICAg
ICAgICAgZGVmIHRlc3RfaGVsbG8oZm4pOgotICAgICAgICAgICAgICAgIGFzc2VydCBmblswXSA9
PSBmblsxXQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICByZXByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW4oKQotICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKKyAg
ICBkZWYgdGVzdF9yZXF1ZXN0X2ZpeHR1cmVuYW1lc19keW5hbWljX2ZpeHR1cmUoc2VsZiwgdGVz
dGRpcik6CisgICAgICAgICIiIlJlZ3Jlc3Npb24gdGVzdCBmb3IgIzMwNTciIiIKKyAgICAgICAg
dGVzdGRpci5jb3B5X2V4YW1wbGUoImZpeHR1cmVzL3Rlc3RfZ2V0Zml4dHVyZXZhbHVlX2R5bmFt
aWMucHkiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKIAogICAgIGRlZiB0ZXN0
X3NldHVwZGVjb3JhdG9yX2FuZF94dW5pdChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKApAQCAtOTQ0LDEzICs5NzcsMTMgQEAgY2xhc3MgVGVzdFJlcXVlc3RCYXNp
YyhvYmplY3QpOgogICAgICAgICAjIHRoaXMgdGVzdHMgdGhhdCBub3JtYWxpemF0aW9uIG9mIG5v
ZGVpZHMgdGFrZXMgcGxhY2UKICAgICAgICAgYiA9IHRlc3RkaXIubWtkaXIoInRlc3RzIikubWtk
aXIoInVuaXQiKQogICAgICAgICBiLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAg
ICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgK
KyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAg
ICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgICAgIGRlZiBhcmcxKCk6
CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAg
ICAgZGVmIGFyZzEoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIiIgogICAgICAg
ICAgICAgKQogICAgICAgICApCiAgICAgICAgIHAgPSBiLmpvaW4oInRlc3RfbW9kdWxlLnB5IikK
QEAgLTEwMDIsOCArMTAzNSw3IEBAIGNsYXNzIFRlc3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAg
ICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCiAKIAotY2xhc3MgVGVzdFJlcXVl
c3RNYXJraW5nKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RSZXF1ZXN0TWFya2luZzoKICAgICBkZWYg
dGVzdF9hcHBseW1hcmtlcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRlbTEsIGl0ZW0yID0g
dGVzdGRpci5nZXRpdGVtcygKICAgICAgICAgICAgICIiIgpAQCAtMTAyNSwyMjcgKzEwNTcsNTUg
QEAgY2xhc3MgVGVzdFJlcXVlc3RNYXJraW5nKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCAieGZh
aWwiIGluIGl0ZW0xLmtleXdvcmRzCiAgICAgICAgIGFzc2VydCAic2tpcGlmIiBub3QgaW4gaXRl
bTEua2V5d29yZHMKICAgICAgICAgcmVxMS5hcHBseW1hcmtlcihweXRlc3QubWFyay5za2lwaWYp
Ci0gICAgICAgIGFzc2VydCAic2tpcGlmIiBpbiBpdGVtMS5rZXl3b3JkcwotICAgICAgICBweXRl
c3QucmFpc2VzKFZhbHVlRXJyb3IsICJyZXExLmFwcGx5bWFya2VyKDQyKSIpCi0KLSAgICBkZWYg
dGVzdF9hY2Nlc3NrZXl3b3JkcyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoKQotICAgICAgICAgICAgZGVmIGtleXdvcmRzKHJlcXVl
c3QpOgotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmtleXdvcmRzCi0gICAgICAgICAg
ICBAcHl0ZXN0Lm1hcmsuWFlaCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihrZXl3b3Jk
cyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGtleXdvcmRzWyJYWVoiXQotICAgICAgICAgICAg
ICAgIGFzc2VydCAiYWJjIiBub3QgaW4ga2V5d29yZHMKLSAgICAgICAgIiIiCi0gICAgICAgICkK
LSAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVwcmVjLmFz
c2VydG91dGNvbWUocGFzc2VkPTEpCi0KLSAgICBkZWYgdGVzdF9hY2Nlc3NtYXJrZXJfZHluYW1p
YyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBweXRlc3Qu
Zml4dHVyZSgpCi0gICAgICAgICAgICBkZWYga2V5d29yZHMocmVxdWVzdCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHJlcXVlc3Qua2V5d29yZHMKLQotICAgICAgICAgICAgQHB5dGVzdC5maXh0
dXJlKHNjb3BlPSJjbGFzcyIsIGF1dG91c2U9VHJ1ZSkKLSAgICAgICAgICAgIGRlZiBtYXJraW5n
KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwbHltYXJrZXIocHl0ZXN0Lm1h
cmsuWFlaKCJoZWxsbyIpKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
LSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bjEoa2V5d29yZHMpOgotICAgICAgICAgICAgICAgIGFz
c2VydCBrZXl3b3Jkc1siWFlaIl0gaXMgbm90IE5vbmUKLSAgICAgICAgICAgICAgICBhc3NlcnQg
ImFiYyIgbm90IGluIGtleXdvcmRzCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW4yKGtleXdvcmRz
KToKLSAgICAgICAgICAgICAgICBhc3NlcnQga2V5d29yZHNbIlhZWiJdIGlzIG5vdCBOb25lCi0g
ICAgICAgICAgICAgICAgYXNzZXJ0ICJhYmMiIG5vdCBpbiBrZXl3b3JkcwotICAgICAgICAiIiIK
LSAgICAgICAgKQotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQotICAgICAg
ICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MikKLQotCi1jbGFzcyBUZXN0UmVxdWVzdENh
Y2hlZFNldHVwKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0X2NhY2hlZHNldHVwX2Rl
ZmF1bHRtb2R1bGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bnNvdXJjZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgbXlzZXR1cCA9IFsi
aGVsbG8iLF0ucG9wCi0KLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAg
QHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgc29tZXRoaW5nKHJlcXVlc3QpOgotICAg
ICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNhY2hlZF9zZXR1cChteXNldHVwLCBzY29wZT0i
bW9kdWxlIikKLQotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzEoc29tZXRoaW5nKToKLSAgICAg
ICAgICAgICAgICBhc3NlcnQgc29tZXRoaW5nID09ICJoZWxsbyIKLSAgICAgICAgICAgIGNsYXNz
IFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMxYShzZWxm
LCBzb21ldGhpbmcpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgc29tZXRoaW5nID09ICJo
ZWxsbyIKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVwcmVjLmFzc2VydG91dGNv
bWUocGFzc2VkPTIpCi0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0X2NhY2hlZHNldHVwX2NsYXNzKHNl
bGYsIHRlc3RkaXIpOgotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2Uo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIG15c2V0dXAgPSBbImhlbGxvIiwgImhlbGxv
MiIsICJoZWxsbzMiXS5wb3AKLQotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAg
ICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgc29tZXRoaW5nKHJlcXVlc3QpOgot
ICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNhY2hlZF9zZXR1cChteXNldHVwLCBzY29w
ZT0iY2xhc3MiKQotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzEoc29tZXRoaW5nKToKLSAgICAg
ICAgICAgICAgICBhc3NlcnQgc29tZXRoaW5nID09ICJoZWxsbzMiCi0gICAgICAgICAgICBkZWYg
dGVzdF9mdW5jMihzb21ldGhpbmcpOgotICAgICAgICAgICAgICAgIGFzc2VydCBzb21ldGhpbmcg
PT0gImhlbGxvMiIKLSAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAg
ICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMxYShzZWxmLCBzb21ldGhpbmcpOgotICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQgc29tZXRoaW5nID09ICJoZWxsbyIKLSAgICAgICAgICAgICAgICBkZWYg
dGVzdF9mdW5jMmIoc2VsZiwgc29tZXRoaW5nKToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
IHNvbWV0aGluZyA9PSAiaGVsbG8iCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJl
cHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD00KQotCi0gICAgZGVmIHRlc3RfcmVxdWVzdF9jYWNo
ZWRzZXR1cF9leHRyYWtleShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgaXRlbTEgPSB0ZXN0ZGly
LmdldGl0ZW0oImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCi0gICAgICAgIHJlcTEgPSBmaXh0dXJl
cy5GaXh0dXJlUmVxdWVzdChpdGVtMSkKLSAgICAgICAgdmFsdWVzID0gWyJoZWxsbyIsICJ3b3Js
ZCJdCi0KLSAgICAgICAgZGVmIHNldHVwKCk6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVzLnBv
cCgpCi0KLSAgICAgICAgcmV0MSA9IHJlcTEuY2FjaGVkX3NldHVwKHNldHVwLCBleHRyYWtleT0x
KQotICAgICAgICByZXQyID0gcmVxMS5jYWNoZWRfc2V0dXAoc2V0dXAsIGV4dHJha2V5PTIpCi0g
ICAgICAgIGFzc2VydCByZXQyID09ICJoZWxsbyIKLSAgICAgICAgYXNzZXJ0IHJldDEgPT0gIndv
cmxkIgotICAgICAgICByZXQxYiA9IHJlcTEuY2FjaGVkX3NldHVwKHNldHVwLCBleHRyYWtleT0x
KQotICAgICAgICByZXQyYiA9IHJlcTEuY2FjaGVkX3NldHVwKHNldHVwLCBleHRyYWtleT0yKQot
ICAgICAgICBhc3NlcnQgcmV0MSA9PSByZXQxYgotICAgICAgICBhc3NlcnQgcmV0MiA9PSByZXQy
YgotCi0gICAgZGVmIHRlc3RfcmVxdWVzdF9jYWNoZWRzZXR1cF9jYWNoZV9kZWxldGlvbihzZWxm
LCB0ZXN0ZGlyKToKLSAgICAgICAgaXRlbTEgPSB0ZXN0ZGlyLmdldGl0ZW0oImRlZiB0ZXN0X2Z1
bmMoKTogcGFzcyIpCi0gICAgICAgIHJlcTEgPSBmaXh0dXJlcy5GaXh0dXJlUmVxdWVzdChpdGVt
MSkKLSAgICAgICAgdmFsdWVzID0gW10KLQotICAgICAgICBkZWYgc2V0dXAoKToKLSAgICAgICAg
ICAgIHZhbHVlcy5hcHBlbmQoInNldHVwIikKLQotICAgICAgICBkZWYgdGVhcmRvd24odmFsKToK
LSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoInRlYXJkb3duIikKLQotICAgICAgICByZXExLmNh
Y2hlZF9zZXR1cChzZXR1cCwgdGVhcmRvd24sIHNjb3BlPSJmdW5jdGlvbiIpCi0gICAgICAgIGFz
c2VydCB2YWx1ZXMgPT0gWyJzZXR1cCJdCi0gICAgICAgICMgYXJ0aWZpY2lhbCBjYWxsIG9mIGZp
bmFsaXplcgotICAgICAgICBzZXR1cHN0YXRlID0gcmVxMS5fcHlmdW5jaXRlbS5zZXNzaW9uLl9z
ZXR1cHN0YXRlCi0gICAgICAgIHNldHVwc3RhdGUuX2NhbGxmaW5hbGl6ZXJzKGl0ZW0xKQotICAg
ICAgICBhc3NlcnQgdmFsdWVzID09IFsic2V0dXAiLCAidGVhcmRvd24iXQotICAgICAgICByZXEx
LmNhY2hlZF9zZXR1cChzZXR1cCwgdGVhcmRvd24sIHNjb3BlPSJmdW5jdGlvbiIpCi0gICAgICAg
IGFzc2VydCB2YWx1ZXMgPT0gWyJzZXR1cCIsICJ0ZWFyZG93biIsICJzZXR1cCJdCi0gICAgICAg
IHNldHVwc3RhdGUuX2NhbGxmaW5hbGl6ZXJzKGl0ZW0xKQotICAgICAgICBhc3NlcnQgdmFsdWVz
ID09IFsic2V0dXAiLCAidGVhcmRvd24iLCAic2V0dXAiLCAidGVhcmRvd24iXQotCi0gICAgZGVm
IHRlc3RfcmVxdWVzdF9jYWNoZWRfc2V0dXBfdHdvX2FyZ3Moc2VsZiwgdGVzdGRpcik6Ci0gICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAotCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRl
ZiBhcmcxKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNhY2hlZF9z
ZXR1cChsYW1iZGE6IDQyKQotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAg
ICBkZWYgYXJnMihyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNo
ZWRfc2V0dXAobGFtYmRhOiAxNykKLSAgICAgICAgICAgIGRlZiB0ZXN0X3R3b19kaWZmZXJlbnRf
c2V0dXBzKGFyZzEsIGFyZzIpOgotICAgICAgICAgICAgICAgIGFzc2VydCBhcmcxICE9IGFyZzIK
LSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi12IikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2Vk
KiJdKQotCi0gICAgZGVmIHRlc3RfcmVxdWVzdF9jYWNoZWRfc2V0dXBfZ2V0Zml4dHVyZXZhbHVl
KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAg
ICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlCi0gICAgICAgICAgICBkZWYgYXJnMShyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBh
cmcxID0gcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoImFyZzIiKQotICAgICAgICAgICAgICAgIHJl
dHVybiByZXF1ZXN0LmNhY2hlZF9zZXR1cChsYW1iZGE6IGFyZzEgKyAxKQotICAgICAgICAgICAg
QHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgYXJnMihyZXF1ZXN0KToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNoZWRfc2V0dXAobGFtYmRhOiAxMCkKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X3R3b19mdW5jYXJnKGFyZzEpOgotICAgICAgICAgICAgICAgIGFzc2VydCBh
cmcxID09IDExCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItdiIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IioxIHBhc3NlZCoiXSkKKyAgICAgICAgYXNzZXJ0ICJza2lwaWYiIGluIGl0ZW0xLmtleXdvcmRz
CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHJl
cTEuYXBwbHltYXJrZXIoNDIpCiAKLSAgICBkZWYgdGVzdF9yZXF1ZXN0X2NhY2hlZF9zZXR1cF9m
dW5jdGlvbmFsKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2FjY2Vzc2tleXdvcmRzKHNl
bGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICB0
ZXN0XzA9IiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAg
ICAgICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAg
ICAgICAgIGRlZiBzb21ldGhpbmcocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgdmFsID0gcmVx
dWVzdC5jYWNoZWRfc2V0dXAoZnNldHVwLCBmdGVhcmRvd24pCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHZhbAotICAgICAgICAgICAgZGVmIGZzZXR1cChteWNhY2hlPVsxXSk6Ci0gICAgICAgICAg
ICAgICAgdmFsdWVzLmFwcGVuZChteWNhY2hlLnBvcCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biB2YWx1ZXMKLSAgICAgICAgICAgIGRlZiBmdGVhcmRvd24oc29tZXRoaW5nKToKLSAgICAgICAg
ICAgICAgICB2YWx1ZXMucmVtb3ZlKHNvbWV0aGluZ1swXSkKLSAgICAgICAgICAgICAgICB2YWx1
ZXMuYXBwZW5kKDIpCi0gICAgICAgICAgICBkZWYgdGVzdF9saXN0X29uY2Uoc29tZXRoaW5nKToK
LSAgICAgICAgICAgICAgICBhc3NlcnQgc29tZXRoaW5nID09IFsxXQotICAgICAgICAgICAgZGVm
IHRlc3RfbGlzdF90d2ljZShzb21ldGhpbmcpOgotICAgICAgICAgICAgICAgIGFzc2VydCBzb21l
dGhpbmcgPT0gWzFdCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoKQorICAgICAgICAgICAg
ZGVmIGtleXdvcmRzKHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0Lmtl
eXdvcmRzCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuWFlaCisgICAgICAgICAgICBkZWYgdGVz
dF9mdW5jdGlvbihrZXl3b3Jkcyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGtleXdvcmRzWyJY
WVoiXQorICAgICAgICAgICAgICAgIGFzc2VydCAiYWJjIiBub3QgaW4ga2V5d29yZHMKICAgICAg
ICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAg
ICAgdGVzdF8xPSIiIgotICAgICAgICAgICAgaW1wb3J0IHRlc3RfMCAjIHNob3VsZCBoYXZlIHJ1
biBhbHJlYWR5Ci0gICAgICAgICAgICBkZWYgdGVzdF9jaGVja190ZXN0MF9oYXNfdGVhcmRvd25f
Y29ycmVjdCgpOgotICAgICAgICAgICAgICAgIGFzc2VydCB0ZXN0XzAudmFsdWVzID09IFsyXQor
ICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICByZXByZWMuYXNz
ZXJ0b3V0Y29tZShwYXNzZWQ9MSkKKworICAgIGRlZiB0ZXN0X2FjY2Vzc21hcmtlcl9keW5hbWlj
KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlKCkKKyAgICAgICAgICAgIGRlZiBrZXl3b3JkcyhyZXF1ZXN0KToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVxdWVzdC5rZXl3b3JkcworCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUoc2NvcGU9ImNsYXNzIiwgYXV0b3VzZT1UcnVlKQorICAgICAgICAgICAgZGVmIG1hcmtpbmco
cmVxdWVzdCk6CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBseW1hcmtlcihweXRlc3QubWFy
ay5YWVooImhlbGxvIikpCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiozIHBhc3NlZCoiXSkKLQotICAgIGRlZiB0ZXN0X2lzc3VlMTE3X3Nlc3Npb25zY29w
ZXRlYXJkb3duKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAg
QHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgYXBwKHJlcXVlc3QpOgotICAgICAgICAg
ICAgICAgIGFwcCA9IHJlcXVlc3QuY2FjaGVkX3NldHVwKAotICAgICAgICAgICAgICAgICAgICBz
Y29wZT0nc2Vzc2lvbicsCi0gICAgICAgICAgICAgICAgICAgIHNldHVwPWxhbWJkYTogMCwKLSAg
ICAgICAgICAgICAgICAgICAgdGVhcmRvd249bGFtYmRhIHg6IDMveCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gYXBwCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW5jKGFwcCk6Ci0gICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfZnVuMShrZXl3b3Jkcyk6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGtleXdvcmRzWyJYWVoiXSBpcyBub3QgTm9uZQorICAgICAgICAgICAg
ICAgIGFzc2VydCAiYWJjIiBub3QgaW4ga2V5d29yZHMKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1
bjIoa2V5d29yZHMpOgorICAgICAgICAgICAgICAgIGFzc2VydCBrZXl3b3Jkc1siWFlaIl0gaXMg
bm90IE5vbmUKKyAgICAgICAgICAgICAgICBhc3NlcnQgImFiYyIgbm90IGluIGtleXdvcmRzCiAg
ICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMAotICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqMy94KiIsICIqWmVyb0RpdmlzaW9uRXJyb3IqIl0pCi0KKyAgICAg
ICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVwcmVjLmFzc2VydG91
dGNvbWUocGFzc2VkPTIpCiAKLWNsYXNzIFRlc3RGaXh0dXJlVXNhZ2VzKG9iamVjdCk6CiAKK2Ns
YXNzIFRlc3RGaXh0dXJlVXNhZ2VzOgogICAgIGRlZiB0ZXN0X25vYXJnZml4dHVyZWRlYyhzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIi
CkBAIC0xMzAzLDggKzExNjMsOCBAQCBjbGFzcyBUZXN0Rml4dHVyZVVzYWdlcyhvYmplY3QpOgog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCiAgICAg
ICAgICAgICAgICAgIipTY29wZU1pc21hdGNoKmludm9sdmVkIGZhY3RvcmllcyoiLAotICAgICAg
ICAgICAgICAgICIqIGRlZiBhcmcyKiIsCi0gICAgICAgICAgICAgICAgIiogZGVmIGFyZzEqIiwK
KyAgICAgICAgICAgICAgICAidGVzdF9yZWNlaXZlc19mdW5jYXJnc19zY29wZV9taXNtYXRjaC5w
eTo2OiAgZGVmIGFyZzIoYXJnMSkiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3JlY2VpdmVzX2Z1
bmNhcmdzX3Njb3BlX21pc21hdGNoLnB5OjI6ICBkZWYgYXJnMSgpIiwKICAgICAgICAgICAgICAg
ICAiKjEgZXJyb3IqIiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQpAQCAtMTM0NCwxMSArMTIw
NCw0MCBAQCBjbGFzcyBUZXN0Rml4dHVyZVVzYWdlcyhvYmplY3QpOgogICAgICAgICApCiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygpCiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAi
KlZhbHVlRXJyb3I6IGZpeHR1cmUgYmFkc2NvcGUgZnJvbSB0ZXN0X2ludmFsaWRfc2NvcGUucHkg
aGFzIGFuIHVuc3VwcG9ydGVkIgotICAgICAgICAgICAgICAgICIgc2NvcGUgdmFsdWUgJ2Z1bmN0
aW9ucyciCisgICAgICAgICAgICAiKkZpeHR1cmUgJ2JhZHNjb3BlJyBmcm9tIHRlc3RfaW52YWxp
ZF9zY29wZS5weSBnb3QgYW4gdW5leHBlY3RlZCBzY29wZSB2YWx1ZSAnZnVuY3Rpb25zJyIKKyAg
ICAgICAgKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzY29wZSIsIFsiZnVuY3Rp
b24iLCAic2Vzc2lvbiJdKQorICAgIGRlZiB0ZXN0X3BhcmFtZXRlcnNfd2l0aG91dF9lcV9zZW1h
bnRpY3Moc2VsZiwgc2NvcGUsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGNsYXNzIE5vRXExOiAgIyBmYWlscyBvbiBg
YSA9PSBiYCBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIF8pOgor
ICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICAgICAgY2xh
c3MgTm9FcTI6ICAjIGZhaWxzIG9uIGBpZiBhID09IGI6YCBzdGF0ZW1lbnQKKyAgICAgICAgICAg
ICAgICBkZWYgX19lcV9fKHNlbGYsIF8pOgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBOb0Jv
b2w6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOb0Jvb2woKQorCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAg
ICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVtOb0VxMSgpLCBOb0VxMigpXSwgc2NvcGU9e3Nj
b3BlIXJ9KQorICAgICAgICAgICAgZGVmIG5vX2VxKHJlcXVlc3QpOgorICAgICAgICAgICAgICAg
IHJldHVybiByZXF1ZXN0LnBhcmFtCisKKyAgICAgICAgICAgIGRlZiB0ZXN0MShub19lcSk6Cisg
ICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgdGVzdDIobm9fZXEpOgorICAg
ICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBz
Y29wZT1zY29wZQogICAgICAgICAgICAgKQogICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
KjQgcGFzc2VkKiJdKQogCiAgICAgZGVmIHRlc3RfZnVuY2FyZ19wYXJhbWV0cml6ZWRfYW5kX3Vz
ZWRfdHdpY2Uoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAg
LTE0MTUsMjEgKzEzMDQsNiBAQCBjbGFzcyBUZXN0Rml4dHVyZVVzYWdlcyhvYmplY3QpOgogICAg
ICAgICB2YWx1ZXMgPSByZXByZWMuZ2V0ZmFpbGVkY29sbGVjdGlvbnMoKQogICAgICAgICBhc3Nl
cnQgbGVuKHZhbHVlcykgPT0gMQogCi0gICAgZGVmIHRlc3RfcmVxdWVzdF9jYW5fYmVfb3ZlcnJp
ZGRlbihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUoKQotICAgICAgICAgICAgZGVmIHJlcXVlc3QocmVxdWVzdCk6Ci0gICAgICAgICAg
ICAgICAgcmVxdWVzdC5hID0gMQotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0Ci0gICAg
ICAgICAgICBkZWYgdGVzdF9yZXF1ZXN0KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIGFzc2Vy
dCByZXF1ZXN0LmEgPT0gMQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICByZXByZWMg
PSB0ZXN0ZGlyLmlubGluZV9ydW4oKQotICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MSkKLQogICAgIGRlZiB0ZXN0X3VzZWZpeHR1cmVzX21hcmtlcihzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0xNTM4LDkg
KzE0MTIsNDcgQEAgY2xhc3MgVGVzdEZpeHR1cmVVc2FnZXMob2JqZWN0KToKICAgICAgICAgdmFs
dWVzID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3RfcnVudGVzdF9jYWxsIilbMF0uaXRlbS5tb2R1
bGUudmFsdWVzCiAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWzEsIDIsIDEwLCAyMF0KIAorICAg
IGRlZiB0ZXN0X3NldHVwX2Z1bmN0aW9uc19hc19maXh0dXJlcyhzZWxmLCB0ZXN0ZGlyKToKKyAg
ICAgICAgIiIiRW5zdXJlIHNldHVwXyogbWV0aG9kcyBvYmV5IGZpeHR1cmUgc2NvcGUgcnVsZXMg
KCM1MTcsICMzMDk0KS4iIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIERCX0lOSVRJ
QUxJWkVEID0gTm9uZQorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Np
b24iLCBhdXRvdXNlPVRydWUpCisgICAgICAgICAgICBkZWYgZGIoKToKKyAgICAgICAgICAgICAg
ICBnbG9iYWwgREJfSU5JVElBTElaRUQKKyAgICAgICAgICAgICAgICBEQl9JTklUSUFMSVpFRCA9
IFRydWUKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIERCX0lOSVRJQUxJ
WkVEID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIHNldHVwX21vZHVsZSgpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBEQl9JTklUSUFMSVpFRAorCisgICAgICAgICAgICBkZWYgdGVhcmRvd25f
bW9kdWxlKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IERCX0lOSVRJQUxJWkVECiAKLWNsYXNz
IFRlc3RGaXh0dXJlTWFuYWdlclBhcnNlRmFjdG9yaWVzKG9iamVjdCk6CisgICAgICAgICAgICBj
bGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKKworICAgICAgICAgICAgICAgIGRlZiBzZXR1cF9tZXRo
b2Qoc2VsZiwgbWV0aG9kKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IERCX0lOSVRJQUxJ
WkVECisKKyAgICAgICAgICAgICAgICBkZWYgdGVhcmRvd25fbWV0aG9kKHNlbGYsIG1ldGhvZCk6
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBEQl9JTklUSUFMSVpFRAorCisgICAgICAgICAg
ICAgICAgZGVmIHRlc3RfcHJpbnRlcl8xKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNz
CisKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9wcmludGVyXzIoc2VsZik6CisgICAgICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqIDIgcGFzc2VkIGluICoiXSkKIAorCitjbGFzcyBUZXN0Rml4dHVyZU1hbmFnZXJQYXJzZUZh
Y3RvcmllczoKICAgICBAcHl0ZXN0LmZpeHR1cmUKICAgICBkZWYgdGVzdGRpcihzZWxmLCByZXF1
ZXN0KToKICAgICAgICAgdGVzdGRpciA9IHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCJ0ZXN0ZGly
IikKQEAgLTE1OTUsNyArMTUwNyw3IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFuYWdlclBhcnNlRmFj
dG9yaWVzKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9wYXJzZWZhY3Rvcmllc19jb25mdGVzdF9h
bmRfbW9kdWxlX2FuZF9jbGFzcyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CiAKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQpAQCAtMTYwNywxMiAr
MTUxOSwxMyBAQCBjbGFzcyBUZXN0Rml4dHVyZU1hbmFnZXJQYXJzZUZhY3RvcmllcyhvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNsYXNzIgogICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0X2hlbGxvKHNlbGYsIGl0ZW0sIGZtKToKICAgICAgICAgICAgICAgICAgICAgZmFjbGlz
dCA9IGZtLmdldGZpeHR1cmVkZWZzKCJoZWxsbyIsIGl0ZW0ubm9kZWlkKQotICAgICAgICAgICAg
ICAgICAgICBwcmludCAoZmFjbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZmFjbGlz
dCkKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihmYWNsaXN0KSA9PSAzCisKICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0IGZhY2xpc3RbMF0uZnVuYyhpdGVtLl9yZXF1ZXN0KSA9PSAi
Y29uZnRlc3QiCiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWNsaXN0WzFdLmZ1bmMoaXRl
bS5fcmVxdWVzdCkgPT0gIm1vZHVsZSIKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhY2xp
c3RbMl0uZnVuYyhpdGVtLl9yZXF1ZXN0KSA9PSAiY2xhc3MiCi0gICAgICAgICIiIgorICAgICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVu
KCItcyIpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQpAQCAtMTYyMyw0
MSArMTUzNiw0MSBAQCBjbGFzcyBUZXN0Rml4dHVyZU1hbmFnZXJQYXJzZUZhY3RvcmllcyhvYmpl
Y3QpOgogICAgICAgICBydW5uZXIgPSB0ZXN0ZGlyLm1rZGlyKCJydW5uZXIiKQogICAgICAgICBw
YWNrYWdlID0gdGVzdGRpci5ta2RpcigicGFja2FnZSIpCiAgICAgICAgIHBhY2thZ2Uuam9pbigi
Y29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRl
eHR3cmFwLmRlZGVudCgKICAgICAgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CiAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKICAgICAgICAgICAgIGRlZiBvbmUo
KToKICAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAiIiIKKyAgICAgICAgICAgICIi
IgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHBhY2thZ2Uuam9pbigidGVzdF94
LnB5Iikud3JpdGUoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3JhcC5k
ZWRlbnQoCiAgICAgICAgICAgICAgICAgIiIiXAotICAgICAgICAgICAgZGVmIHRlc3RfeChvbmUp
OgotICAgICAgICAgICAgICAgIGFzc2VydCBvbmUgPT0gMQotICAgICAgICAiIiIKKyAgICAgICAg
ICAgICAgICBkZWYgdGVzdF94KG9uZSk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBvbmUg
PT0gMQorICAgICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAg
ICAgIHN1YiA9IHBhY2thZ2UubWtkaXIoInN1YiIpCiAgICAgICAgIHN1Yi5qb2luKCJfX2luaXRf
Xy5weSIpLmVuc3VyZSgpCiAgICAgICAgIHN1Yi5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAot
ICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAogICAgICAg
ICAgICAgICAgICIiIlwKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBw
eXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIG9uZSgpOgotICAgICAgICAgICAgICAgIHJl
dHVybiAyCi0gICAgICAgICIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAg
ICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgICAgICBkZWYgb25lKCk6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICApCiAgICAgICAgICkKICAgICAgICAgc3ViLmpvaW4oInRlc3RfeS5weSIpLndyaXRlKAot
ICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAogICAgICAg
ICAgICAgICAgICIiIlwKLSAgICAgICAgICAgIGRlZiB0ZXN0X3gob25lKToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgb25lID09IDIKLSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZGVmIHRl
c3RfeChvbmUpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgb25lID09IDIKKyAgICAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICByZXByZWMgPSB0
ZXN0ZGlyLmlubGluZV9ydW4oKQpAQCAtMTY2Niw5ICsxNTc5LDEwNSBAQCBjbGFzcyBUZXN0Rml4
dHVyZU1hbmFnZXJQYXJzZUZhY3RvcmllcyhvYmplY3QpOgogICAgICAgICAgICAgcmVwcmVjID0g
dGVzdGRpci5pbmxpbmVfcnVuKCIuLiIpCiAgICAgICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29t
ZShwYXNzZWQ9MikKIAorICAgIGRlZiB0ZXN0X3BhY2thZ2VfeHVuaXRfZml4dHVyZShzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgX19pbml0
X189IiIiXAorICAgICAgICAgICAgdmFsdWVzID0gW10KKyAgICAgICAgIiIiCisgICAgICAgICkK
KyAgICAgICAgcGFja2FnZSA9IHRlc3RkaXIubWtkaXIoInBhY2thZ2UiKQorICAgICAgICBwYWNr
YWdlLmpvaW4oIl9faW5pdF9fLnB5Iikud3JpdGUoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRl
bnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGZyb20gLi4gaW1wb3J0
IHZhbHVlcworICAgICAgICAgICAgICAgIGRlZiBzZXR1cF9tb2R1bGUoKToKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZCgicGFja2FnZSIpCisgICAgICAgICAgICAgICAgZGVmIHRl
YXJkb3duX21vZHVsZSgpOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbOl0gPSBbXQorICAg
ICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHBhY2th
Z2Uuam9pbigidGVzdF94LnB5Iikud3JpdGUoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQo
CisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGZyb20gLi4gaW1wb3J0IHZh
bHVlcworICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3goKToKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0IHZhbHVlcyA9PSBbInBhY2thZ2UiXQorICAgICAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgKQorICAgICAgICApCisgICAgICAgIHBhY2thZ2UgPSB0ZXN0ZGlyLm1rZGlyKCJwYWNr
YWdlMiIpCisgICAgICAgIHBhY2thZ2Uuam9pbigiX19pbml0X18ucHkiKS53cml0ZSgKKyAgICAg
ICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAg
ICAgICAgZnJvbSAuLiBpbXBvcnQgdmFsdWVzCisgICAgICAgICAgICAgICAgZGVmIHNldHVwX21v
ZHVsZSgpOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCJwYWNrYWdlMiIpCisg
ICAgICAgICAgICAgICAgZGVmIHRlYXJkb3duX21vZHVsZSgpOgorICAgICAgICAgICAgICAgICAg
ICB2YWx1ZXNbOl0gPSBbXQorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAg
ICAgICApCisgICAgICAgIHBhY2thZ2Uuam9pbigidGVzdF94LnB5Iikud3JpdGUoCisgICAgICAg
ICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAg
ICAgIGZyb20gLi4gaW1wb3J0IHZhbHVlcworICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3goKToK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbInBhY2thZ2UyIl0KKyAgICAg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICByZXByZWMg
PSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MikKKworICAgIGRlZiB0ZXN0X3BhY2thZ2VfZml4dHVyZV9jb21wbGV4KHNlbGYsIHRlc3Rk
aXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICBfX2luaXRfXz0i
IiJcCisgICAgICAgICAgICB2YWx1ZXMgPSBbXQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAg
ICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQodGVzdGRpci50bXBkaXIuZGlybmFtZSkKKyAgICAg
ICAgcGFja2FnZSA9IHRlc3RkaXIubWtkaXIoInBhY2thZ2UiKQorICAgICAgICBwYWNrYWdlLmpv
aW4oIl9faW5pdF9fLnB5Iikud3JpdGUoIiIpCisgICAgICAgIHBhY2thZ2Uuam9pbigiY29uZnRl
c3QucHkiKS53cml0ZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAg
ICAgICAiIiJcCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAg
IGZyb20gLi4gaW1wb3J0IHZhbHVlcworICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShz
Y29wZT0icGFja2FnZSIpCisgICAgICAgICAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKCJwYWNrYWdlIikKKyAgICAgICAgICAgICAgICAgICAgeWll
bGQgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wb3AoKQorICAgICAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0icGFja2FnZSIsIGF1dG91c2U9VHJ1ZSkKKyAgICAg
ICAgICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQo
InBhY2thZ2UtYXV0byIpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlcworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZXMucG9wKCkKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgICBwYWNrYWdlLmpvaW4oInRlc3RfeC5weSIpLndyaXRl
KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgICAgICBmcm9tIC4uIGltcG9ydCB2YWx1ZXMKKyAgICAgICAgICAgICAgICBkZWYg
dGVzdF9wYWNrYWdlX2F1dG91c2UoKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVl
cyA9PSBbInBhY2thZ2UtYXV0byJdCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcGFja2FnZShv
bmUpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsicGFja2FnZS1hdXRv
IiwgInBhY2thZ2UiXQorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAg
ICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcHJl
Yy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQorCisgICAgZGVmIHRlc3RfY29sbGVjdF9jdXN0b21f
aXRlbXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJmaXh0
dXJlcy9jdXN0b21faXRlbSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCJm
b28iKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqcGFzc2VkKiJdKQog
Ci1jbGFzcyBUZXN0QXV0b3VzZURpc2NvdmVyeShvYmplY3QpOgogCitjbGFzcyBUZXN0QXV0b3Vz
ZURpc2NvdmVyeToKICAgICBAcHl0ZXN0LmZpeHR1cmUKICAgICBkZWYgdGVzdGRpcihzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCkBAIC0xNzc5LDEwICsxNzg4
LDggQEAgY2xhc3MgVGVzdEF1dG91c2VEaXNjb3Zlcnkob2JqZWN0KToKICAgICAgICAgcmVwcmVj
LmFzc2VydG91dGNvbWUocGFzc2VkPTIpCiAKICAgICBkZWYgdGVzdF9jYWxsYWJsZXNfbm9jb2Rl
KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiIKLSAgICAgICAgYW4gaW1wb3J0ZWQgbW9jay5j
YWxsIHdvdWxkIGJyZWFrIHNldHVwL2ZhY3RvcnkgZGlzY292ZXJ5Ci0gICAgICAgIGR1ZSB0byBp
dCBiZWluZyBjYWxsYWJsZSBhbmQgX19jb2RlX18gbm90IGJlaW5nIGEgY29kZSBvYmplY3QKLSAg
ICAgICAgIiIiCisgICAgICAgICIiIkFuIGltcG9ydGVkIG1vY2suY2FsbCB3b3VsZCBicmVhayBz
ZXR1cC9mYWN0b3J5IGRpc2NvdmVyeSBkdWUgdG8KKyAgICAgICAgaXQgYmVpbmcgY2FsbGFibGUg
YW5kIF9fY29kZV9fIG5vdCBiZWluZyBhIGNvZGUgb2JqZWN0LiIiIgogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgY2xhc3MgX2NhbGwodHVw
bGUpOgpAQCAtMTg0NCw1MiArMTg1MSwzMyBAQCBjbGFzcyBUZXN0QXV0b3VzZURpc2NvdmVyeShv
YmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MykKIAogCi1jbGFz
cyBUZXN0QXV0b3VzZU1hbmFnZW1lbnQob2JqZWN0KToKLQorY2xhc3MgVGVzdEF1dG91c2VNYW5h
Z2VtZW50OgogICAgIGRlZiB0ZXN0X2F1dG91c2VfY29uZnRlc3RfbWlkX2RpcmVjdG9yeShzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgcGtnZGlyID0gdGVzdGRpci5ta3B5ZGlyKCJ4eXoxMjMiKQog
ICAgICAgICBwa2dkaXIuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9w
eXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAg
ICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSkKKyAgICAgICAgICAgICAgICBkZWYg
YXBwKCk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgICAgICAg
ICAgc3lzLl9teWFwcCA9ICJoZWxsbyIKICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUp
Ci0gICAgICAgICAgICBkZWYgYXBwKCk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHN5cwotICAg
ICAgICAgICAgICAgIHN5cy5fbXlhcHAgPSAiaGVsbG8iCi0gICAgICAgICIiIgogICAgICAgICAg
ICAgKQogICAgICAgICApCiAgICAgICAgIHQgPSBwa2dkaXIuZW5zdXJlKCJ0ZXN0cyIsICJ0ZXN0
X2FwcC5weSIpCiAgICAgICAgIHQud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNv
dXJjZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJc
CisgICAgICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Fw
cCgpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgc3lzLl9teWFwcCA9PSAiaGVsbG8iCiAg
ICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICBk
ZWYgdGVzdF9hcHAoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc3lzLl9teWFwcCA9PSAiaGVs
bG8iCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlcHJl
YyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLXMiKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29t
ZShwYXNzZWQ9MSkKIAotICAgIGRlZiB0ZXN0X2F1dG91c2VfaG9ub3JlZF9mb3JfeWllbGQoc2Vs
ZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIi
IgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJl
KGF1dG91c2U9VHJ1ZSkKLSAgICAgICAgICAgIGRlZiB0c3QoKToKLSAgICAgICAgICAgICAgICBn
bG9iYWwgeAotICAgICAgICAgICAgICAgIHggPSAzCi0gICAgICAgICAgICBkZWYgdGVzdF9nZW4o
KToKLSAgICAgICAgICAgICAgICBkZWYgZihoZWxsbyk6Ci0gICAgICAgICAgICAgICAgICAgIGFz
c2VydCB4ID09IGFicyhoZWxsbykKLSAgICAgICAgICAgICAgICB5aWVsZCBmLCAzCi0gICAgICAg
ICAgICAgICAgeWllbGQgZiwgLTMKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVw
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUo
cGFzc2VkPTIpCi0KICAgICBkZWYgdGVzdF9mdW5jYXJnX2FuZF9zZXR1cChzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0yMDA5
LDcgKzE5OTcsOSBAQCBjbGFzcyBUZXN0QXV0b3VzZU1hbmFnZW1lbnQob2JqZWN0KToKICAgICAg
ICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItdiIsICItcyIsIGNvbmZjdXQpCiAgICAg
ICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD04KQogICAgICAgICBjb25maWcgPSByZXBy
ZWMuZ2V0Y2FsbHMoInB5dGVzdF91bmNvbmZpZ3VyZSIpWzBdLmNvbmZpZwotICAgICAgICB2YWx1
ZXMgPSBjb25maWcucGx1Z2lubWFuYWdlci5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHApWzBdLnZhbHVl
cworICAgICAgICB2YWx1ZXMgPSBjb25maWcucGx1Z2lubWFuYWdlci5fZ2V0Y29uZnRlc3Rtb2R1
bGVzKHAsIGltcG9ydG1vZGU9InByZXBlbmQiKVsKKyAgICAgICAgICAgIDAKKyAgICAgICAgXS52
YWx1ZXMKICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbImZpbl9hMSIsICJmaW5fYTIiLCAiZmlu
X2IxIiwgImZpbl9iMiJdICogMgogCiAgICAgZGVmIHRlc3Rfc2NvcGVfb3JkZXJpbmcoc2VsZiwg
dGVzdGRpcik6CkBAIC0yMDU2LDcgKzIwNDYsNyBAQCBjbGFzcyBUZXN0QXV0b3VzZU1hbmFnZW1l
bnQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgic3RlcDItJWQi
ICUgaXRlbSkKIAogICAgICAgICAgICAgZGVmIHRlc3RfZmluaXNoKCk6Ci0gICAgICAgICAgICAg
ICAgcHJpbnQgKHZhbHVlcykKKyAgICAgICAgICAgICAgICBwcmludCh2YWx1ZXMpCiAgICAgICAg
ICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbInNldHVwLTEiLCAic3RlcDEtMSIsICJzdGVwMi0x
IiwgInRlYXJkb3duLTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0dXAtMiIs
ICJzdGVwMS0yIiwgInN0ZXAyLTIiLCAidGVhcmRvd24tMiIsXQogICAgICAgICAiIiIKQEAgLTIw
ODMsMTAgKzIwNzMsMTAgQEAgY2xhc3MgVGVzdEF1dG91c2VNYW5hZ2VtZW50KG9iamVjdCk6CiAg
ICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCiAgICAgICAgIHJlcHJlYy5hc3Nl
cnRvdXRjb21lKHBhc3NlZD0xKQogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlMjI2CiAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXJhbTEiLCBbIiIsICJwYXJhbXM9WzFdIl0sIGlkcz1b
InAwMCIsICJwMDEiXSkKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInBhcmFtMiIsIFsi
IiwgInBhcmFtcz1bMV0iXSwgaWRzPVsicDEwIiwgInAxMSJdKQogICAgIGRlZiB0ZXN0X29yZGVy
aW5nX2RlcGVuZGVuY2llc190b3JuZG93bl9maXJzdChzZWxmLCB0ZXN0ZGlyLCBwYXJhbTEsIHBh
cmFtMik6CisgICAgICAgICIiIiMyMjYiIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0yMTExLDggKzIx
MDEsNyBAQCBjbGFzcyBUZXN0QXV0b3VzZU1hbmFnZW1lbnQob2JqZWN0KToKICAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCiAKIAotY2xhc3MgVGVzdEZpeHR1cmVNYXJrZXIo
b2JqZWN0KToKLQorY2xhc3MgVGVzdEZpeHR1cmVNYXJrZXI6CiAgICAgZGVmIHRlc3RfcGFyYW1l
dHJpemUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgpAQCAtMjMzOCwxNSArMjMyNyw3IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2Vy
KG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCiAgICAgICAg
IHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD00KQogCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKAotICAgICAgICAibWV0aG9kIiwKLSAgICAgICAgWwotICAgICAgICAgICAgJ3JlcXVl
c3QuZ2V0Zml4dHVyZXZhbHVlKCJhcmciKScsCi0gICAgICAgICAgICAncmVxdWVzdC5jYWNoZWRf
c2V0dXAobGFtYmRhOiBOb25lLCBzY29wZT0iZnVuY3Rpb24iKScsCi0gICAgICAgIF0sCi0gICAg
ICAgIGlkcz1bImdldGZpeHR1cmV2YWx1ZSIsICJjYWNoZWRfc2V0dXAiXSwKLSAgICApCi0gICAg
ZGVmIHRlc3Rfc2NvcGVfbWlzbWF0Y2hfdmFyaW91cyhzZWxmLCB0ZXN0ZGlyLCBtZXRob2QpOgor
ICAgIGRlZiB0ZXN0X3Njb3BlX21pc21hdGNoX3ZhcmlvdXMoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CkBAIC0yMzYyLDExICsyMzQzLDEwIEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFy
a2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCiAgICAgICAgICAgICAgICAgZGVm
IGFyZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICAgICAgJXMKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoImFyZyIpCiAgICAgICAgICAgICAgICAgZGVmIHRl
c3RfMShhcmcpOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgICUgbWV0aG9kCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCkBAIC0yMzc0LDYgKzIz
NTQsNjggQEAgY2xhc3MgVGVzdEZpeHR1cmVNYXJrZXIob2JqZWN0KToKICAgICAgICAgICAgIFsi
KlNjb3BlTWlzbWF0Y2gqWW91IHRyaWVkKmZ1bmN0aW9uKnNlc3Npb24qcmVxdWVzdCoiXQogICAg
ICAgICApCiAKKyAgICBkZWYgdGVzdF9keW5hbWljX3Njb3BlKHNlbGYsIHRlc3RkaXIpOgorICAg
ICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAorCisKKyAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNl
cik6CisgICAgICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1leHRlbmQtc2NvcGUiLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlKQorCisKKyAgICAgICAgICAgIGRlZiBk
eW5hbWljX3Njb3BlKGZpeHR1cmVfbmFtZSwgY29uZmlnKToKKyAgICAgICAgICAgICAgICBpZiBj
b25maWcuZ2V0b3B0aW9uKCItLWV4dGVuZC1zY29wZSIpOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gInNlc3Npb24iCisgICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIKKworCisg
ICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ZHluYW1pY19zY29wZSkKKyAgICAgICAg
ICAgIGRlZiBkeW5hbWljX2ZpeHR1cmUoY2FsbHM9W10pOgorICAgICAgICAgICAgICAgIGNhbGxz
LmFwcGVuZCgiY2FsbCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbihjYWxscykKKworICAg
ICAgICAiIiIKKyAgICAgICAgKQorCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAg
ICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfZmlyc3QoZHluYW1pY19maXh0dXJlKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgZHluYW1pY19maXh0dXJlID09IDEKKworCisgICAgICAg
ICAgICBkZWYgdGVzdF9zZWNvbmQoZHluYW1pY19maXh0dXJlKToKKyAgICAgICAgICAgICAgICBh
c3NlcnQgZHluYW1pY19maXh0dXJlID09IDIKKworICAgICAgICAiIiIKKyAgICAgICAgKQorCisg
ICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcHJlYy5hc3Nl
cnRvdXRjb21lKHBhc3NlZD0yKQorCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1
bigiLS1leHRlbmQtc2NvcGUiKQorICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9
MSwgZmFpbGVkPTEpCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3Njb3BlX2JhZF9yZXR1cm4oc2Vs
ZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBkZWYgZHluYW1pY19z
Y29wZSgqKl8pOgorICAgICAgICAgICAgICAgIHJldHVybiAid3Jvbmctc2NvcGUiCisKKyAgICAg
ICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT1keW5hbWljX3Njb3BlKQorICAgICAgICAgICAg
ZGVmIGZpeHR1cmUoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICAiRml4dHVyZSAnZml4dHVyZScg
ZnJvbSB0ZXN0X2R5bmFtaWNfc2NvcGVfYmFkX3JldHVybi5weSAiCisgICAgICAgICAgICAiZ290
IGFuIHVuZXhwZWN0ZWQgc2NvcGUgdmFsdWUgJ3dyb25nLXNjb3BlJyIKKyAgICAgICAgKQorCiAg
ICAgZGVmIHRlc3RfcmVnaXN0ZXJfb25seV93aXRoX21hcmsoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCkBAIC0yNzQyLDcgKzI3
ODQsNyBAQCBjbGFzcyBUZXN0Rml4dHVyZU1hcmtlcihvYmplY3QpOgogICAgICAgICAgICAgKjMg
cGFzc2VkKgogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICBhc3NlcnQgImVycm9yIiBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0
Y2hfbGluZSgiKmVycm9yKiIpCiAKICAgICBkZWYgdGVzdF9maXh0dXJlX2ZpbmFsaXplcihzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCkBAIC0yNzYxLDIyICsy
ODAzLDIyIEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2VyKG9iamVjdCk6CiAgICAgICAgICkKICAg
ICAgICAgYiA9IHRlc3RkaXIubWtkaXIoInN1YmRpciIpCiAgICAgICAgIGIuam9pbigidGVzdF9v
dmVycmlkZGVuX2ZpeHR1cmVfZmluYWxpemVyLnB5Iikud3JpdGUoCi0gICAgICAgICAgICBkZWRl
bnQoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBicm93c2VyKGJyb3dzZXIp
OgotICAgICAgICAgICAgICAgIGJyb3dzZXJbJ3Zpc2l0ZWQnXSA9IFRydWUKLSAgICAgICAgICAg
ICAgICByZXR1cm4gYnJvd3NlcgorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAg
ICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICAgICAgZGVmIGJyb3dzZXIoYnJvd3Nl
cik6CisgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJbJ3Zpc2l0ZWQnXSA9IFRydWUKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXIKIAotICAgICAgICAgICAgZGVmIHRlc3RfYnJv
d3Nlcihicm93c2VyKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYnJvd3NlclsndmlzaXRlZCdd
IGlzIFRydWUKLSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfYnJvd3Nlcihi
cm93c2VyKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGJyb3dzZXJbJ3Zpc2l0ZWQnXSBp
cyBUcnVlCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAg
ICAgICAgcmVwcmVjID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKICAgICAgICAgZm9yIHRlc3Qg
aW4gWyJ0ZXN0X2Jyb3dzZXIiXToKLSAgICAgICAgICAgIHJlcHJlYy5zdGRvdXQuZm5tYXRjaF9s
aW5lcygiKkZpbmFsaXplZCoiKQorICAgICAgICAgICAgcmVwcmVjLnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKkZpbmFsaXplZCoiXSkKIAogICAgIGRlZiB0ZXN0X2NsYXNzX3Njb3BlX3dpdGhfbm9y
bWFsX3Rlc3RzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0cGF0aCA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKQEAgLTI4NzUsOSArMjkxNyw5IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2VyKG9i
amVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLXYiKQogICAgICAg
ICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9NSkKIAotICAgIEBweXRlc3QubWFyay5pc3N1
ZTI0NgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgic2NvcGUiLCBbInNlc3Npb24iLCAi
ZnVuY3Rpb24iLCAibW9kdWxlIl0pCiAgICAgZGVmIHRlc3RfZmluYWxpemVyX29yZGVyX29uX3Bh
cmFtZXRyaXphdGlvbihzZWxmLCBzY29wZSwgdGVzdGRpcik6CisgICAgICAgICIiIiMyNDYiIiIK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC0yODk3LDcgKzI5MzksNyBAQCBjbGFzcyBUZXN0Rml4dHVyZU1h
cmtlcihvYmplY3QpOgogICAgICAgICAgICAgZGVmIGJhc2UocmVxdWVzdCwgZml4MSk6CiAgICAg
ICAgICAgICAgICAgZGVmIGNsZWFudXBfYmFzZSgpOgogICAgICAgICAgICAgICAgICAgICB2YWx1
ZXMuYXBwZW5kKCJmaW5fYmFzZSIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ICgiZmluYWxp
emluZyBiYXNlIikKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoImZpbmFsaXppbmcgYmFzZSIp
CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRmaW5hbGl6ZXIoY2xlYW51cF9iYXNlKQogCiAg
ICAgICAgICAgICBkZWYgdGVzdF9iZWdpbigpOgpAQCAtMjkxMiw4ICsyOTU0LDggQEAgY2xhc3Mg
VGVzdEZpeHR1cmVNYXJrZXIob2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxp
bmVfcnVuKCItbHZzIikKICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTMpCiAK
LSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWUzOTYKICAgICBkZWYgdGVzdF9jbGFzc19zY29wZV9wYXJh
bWV0cml6YXRpb25fb3JkZXJpbmcoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIiMzOTYiIiIK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC0yOTM4LDIxICsyOTgwLDE4IEBAIGNsYXNzIFRlc3RGaXh0dXJl
TWFya2VyKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCiAg
ICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD02KQogICAgICAgICB2YWx1ZXMgPSBy
ZXByZWMuZ2V0Y2FsbHMoInB5dGVzdF9ydW50ZXN0X2NhbGwiKVswXS5pdGVtLm1vZHVsZS52YWx1
ZXMKLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIHZhbHVlcwotICAgICAgICAgICAgPT0g
WwotICAgICAgICAgICAgICAgICJ0ZXN0X2hlbGxvIiwKLSAgICAgICAgICAgICAgICAiZmluIEpv
aG4iLAotICAgICAgICAgICAgICAgICJ0ZXN0X2hlbGxvIiwKLSAgICAgICAgICAgICAgICAiZmlu
IERvZSIsCi0gICAgICAgICAgICAgICAgInRlc3RfbmFtZSIsCi0gICAgICAgICAgICAgICAgInRl
c3RfcG9wdWxhdGlvbiIsCi0gICAgICAgICAgICAgICAgImZpbiBKb2huIiwKLSAgICAgICAgICAg
ICAgICAidGVzdF9uYW1lIiwKLSAgICAgICAgICAgICAgICAidGVzdF9wb3B1bGF0aW9uIiwKLSAg
ICAgICAgICAgICAgICAiZmluIERvZSIsCi0gICAgICAgICAgICBdCi0gICAgICAgICkKKyAgICAg
ICAgYXNzZXJ0IHZhbHVlcyA9PSBbCisgICAgICAgICAgICAidGVzdF9oZWxsbyIsCisgICAgICAg
ICAgICAiZmluIEpvaG4iLAorICAgICAgICAgICAgInRlc3RfaGVsbG8iLAorICAgICAgICAgICAg
ImZpbiBEb2UiLAorICAgICAgICAgICAgInRlc3RfbmFtZSIsCisgICAgICAgICAgICAidGVzdF9w
b3B1bGF0aW9uIiwKKyAgICAgICAgICAgICJmaW4gSm9obiIsCisgICAgICAgICAgICAidGVzdF9u
YW1lIiwKKyAgICAgICAgICAgICJ0ZXN0X3BvcHVsYXRpb24iLAorICAgICAgICAgICAgImZpbiBE
b2UiLAorICAgICAgICBdCiAKICAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9zZXR1cF9mdW5jdGlv
bihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMzAyNCw4
ICszMDYzLDcgQEAgY2xhc3MgVGVzdEZpeHR1cmVNYXJrZXIob2JqZWN0KToKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgICAgICAgICBAcHl0ZXN0Lnlp
ZWxkX2ZpeHR1cmUocGFyYW1zPVtvYmplY3QoKSwgb2JqZWN0KCldLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkcz1bJ2FscGhhJywgJ2JldGEnXSkKKyAgICAgICAgICAgIEBw
eXRlc3QuZml4dHVyZShwYXJhbXM9W29iamVjdCgpLCBvYmplY3QoKV0sIGlkcz1bJ2FscGhhJywg
J2JldGEnXSkKICAgICAgICAgICAgIGRlZiBmaXgocmVxdWVzdCk6CiAgICAgICAgICAgICAgICAg
IHlpZWxkIHJlcXVlc3QucGFyYW0KIApAQCAtMzAzNiw4ICszMDc0LDggQEAgY2xhc3MgVGVzdEZp
eHR1cmVNYXJrZXIob2JqZWN0KToKICAgICAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoIi12
IikKICAgICAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3RfZm9vKmFscGhhKiIs
ICIqdGVzdF9mb28qYmV0YSoiXSkKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTkyMAogICAgIGRl
ZiB0ZXN0X2RldGVybWluaXN0aWNfZml4dHVyZV9jb2xsZWN0aW9uKHNlbGYsIHRlc3RkaXIsIG1v
bmtleXBhdGNoKToKKyAgICAgICAgIiIiIzkyMCIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTMwODAs
NyArMzExOCw3IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2VyKG9iamVjdCk6CiAgICAgICAgIGFz
c2VydCBvdXQxID09IG91dDIKIAogCi1jbGFzcyBUZXN0UmVxdWVzdFNjb3BlQWNjZXNzKG9iamVj
dCk6CitjbGFzcyBUZXN0UmVxdWVzdFNjb3BlQWNjZXNzOgogICAgIHB5dGVzdG1hcmsgPSBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKICAgICAgICAgKCJzY29wZSIsICJvayIsICJlcnJvciIpLAog
ICAgICAgICBbCkBAIC0zMTM0LDggKzMxNzIsNyBAQCBjbGFzcyBUZXN0UmVxdWVzdFNjb3BlQWNj
ZXNzKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAK
LWNsYXNzIFRlc3RFcnJvcnMob2JqZWN0KToKLQorY2xhc3MgVGVzdEVycm9yczoKICAgICBkZWYg
dGVzdF9zdWJmYWN0b3J5X21pc3NpbmdfZnVuY2FyZyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0zMTgwLDcgKzMyMTcsNyBA
QCBjbGFzcyBUZXN0RXJyb3JzKG9iamVjdCk6CiAgICAgICAgICAgICAqS2V5RXJyb3IqCiAgICAg
ICAgICAgICAqRVJST1IqdGVhcmRvd24qdGVzdF8yKgogICAgICAgICAgICAgKktleUVycm9yKgot
ICAgICAgICAgICAgKjMgcGFzcyoyIGVycm9yKgorICAgICAgICAgICAgKjMgcGFzcyoyIGVycm9y
cyoKICAgICAgICAgIiIiCiAgICAgICAgICkKIApAQCAtMzIwMiwxOSArMzIzOSwzMiBAQCBjbGFz
cyBUZXN0RXJyb3JzKG9iamVjdCk6CiAgICAgICAgICkKIAogCi1jbGFzcyBUZXN0U2hvd0ZpeHR1
cmVzKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RTaG93Rml4dHVyZXM6CiAgICAgZGVmIHRlc3RfZnVu
Y2FyZ19jb21wYXQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFy
c2Vjb25maWd1cmUoIi0tZnVuY2FyZ3MiKQogICAgICAgICBhc3NlcnQgY29uZmlnLm9wdGlvbi5z
aG93Zml4dHVyZXMKIAogICAgIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXMoc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWZpeHR1cmVzIikKLSAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRtcGRpcioiLCAiKnRlbXBvcmFyeSBk
aXJlY3RvcnkqIl0pCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAidG1wZGlyX2ZhY3RvcnkgW1tdc2Vzc2lvbiBzY29w
ZVtdXSIsCisgICAgICAgICAgICAgICAgIipmb3IgdGhlIHRlc3Qgc2Vzc2lvbioiLAorICAgICAg
ICAgICAgICAgICJ0bXBkaXIiLAorICAgICAgICAgICAgICAgICIqdGVtcG9yYXJ5IGRpcmVjdG9y
eSoiLAorICAgICAgICAgICAgXQorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9zaG93X2ZpeHR1
cmVzX3ZlcmJvc2Uoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLWZpeHR1cmVzIiwgIi12IikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKnRtcGRpciotLSp0bXBkaXIucHkqIiwgIip0ZW1wb3JhcnkgZGlyZWN0b3J5KiJd
KQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgInRtcGRpcl9mYWN0b3J5IFtbXXNlc3Npb24gc2NvcGVbXV0gLS0gKnRt
cGRpci5weSoiLAorICAgICAgICAgICAgICAgICIqZm9yIHRoZSB0ZXN0IHNlc3Npb24qIiwKKyAg
ICAgICAgICAgICAgICAidG1wZGlyIC0tICp0bXBkaXIucHkqIiwKKyAgICAgICAgICAgICAgICAi
KnRlbXBvcmFyeSBkaXJlY3RvcnkqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogCiAgICAg
ZGVmIHRlc3Rfc2hvd19maXh0dXJlc190ZXN0bW9kdWxlKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMzIzNyw3ICszMjg3LDcgQEAgY2xhc3MgVGVz
dFNob3dGaXh0dXJlcyhvYmplY3QpOgogICAgICAgICAgICAgKmhlbGxvIHdvcmxkKgogICAgICAg
ICAiIiIKICAgICAgICAgKQotICAgICAgICBhc3NlcnQgImFyZzAiIG5vdCBpbiByZXN1bHQuc3Rk
b3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqYXJnMCoi
KQogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ0ZXN0bW9kIiwgW1RydWUsIEZhbHNl
XSkKICAgICBkZWYgdGVzdF9zaG93X2ZpeHR1cmVzX2NvbmZ0ZXN0KHNlbGYsIHRlc3RkaXIsIHRl
c3Rtb2QpOgpAQCAtMzI2OCwxMjcgKzMzMTgsMTI0IEBAIGNsYXNzIFRlc3RTaG93Rml4dHVyZXMo
b2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfdHJpbW1lZF9kb2Moc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICBk
ZWRlbnQoCi0gICAgICAgICAgICAgICAgJycnCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0g
ICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBhcmcxKCk6Ci0gICAg
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgbGluZTEKLSAgICAgICAgICAgICAgICBs
aW5lMgorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICcnJ1wK
KyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlCisgICAgICAgICAgICAgICAgZGVmIGFyZzEoKToKKyAgICAgICAgICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICAgICAgICAgIGxpbmUxCisgICAgICAgICAgICAgICAgICAgIGxpbmUy
CiAKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAg
ICAgICAgICAgZGVmIGFyZzIoKToKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAg
ICBsaW5lMQotICAgICAgICAgICAgICAgIGxpbmUyCisgICAgICAgICAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgICAgIGRlZiBhcmcy
KCk6CisgICAgICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgICAgICBsaW5lMQor
ICAgICAgICAgICAgICAgICAgICBsaW5lMgogCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAg
ICcnJworICAgICAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICAnJycKICAgICAg
ICAgICAgICkKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LS1maXh0dXJlcyIsIHApCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAg
ICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAg
ICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgKiBmaXh0dXJlcyBkZWZpbmVkIGZyb20gdGVz
dF9zaG93X2ZpeHR1cmVzX3RyaW1tZWRfZG9jICoKKyAgICAgICAgICAgICAgICBhcmcyCisgICAg
ICAgICAgICAgICAgICAgIGxpbmUxCisgICAgICAgICAgICAgICAgICAgIGxpbmUyCisgICAgICAg
ICAgICAgICAgYXJnMQorICAgICAgICAgICAgICAgICAgICBsaW5lMQorICAgICAgICAgICAgICAg
ICAgICBsaW5lMgogICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgKiBmaXh0dXJlcyBk
ZWZpbmVkIGZyb20gdGVzdF9zaG93X2ZpeHR1cmVzX3RyaW1tZWRfZG9jICoKLSAgICAgICAgICAg
IGFyZzIKLSAgICAgICAgICAgICAgICBsaW5lMQotICAgICAgICAgICAgICAgIGxpbmUyCi0gICAg
ICAgICAgICBhcmcxCi0gICAgICAgICAgICAgICAgbGluZTEKLSAgICAgICAgICAgICAgICBsaW5l
MgotCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAKICAgICBkZWYgdGVz
dF9zaG93X2ZpeHR1cmVzX2luZGVudGVkX2RvYyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRl
eHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAnJydcCisgICAgICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAg
ICAgIGRlZiBmaXh0dXJlMSgpOgorICAgICAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTEKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKKyAg
ICAgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICAgICAgJycnCi0gICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRl
ZiBmaXh0dXJlMSgpOgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgIGxpbmUx
Ci0gICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKLSAgICAgICAgICAgICAgICAiIiIK
LSAgICAgICAgJycnCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tZml4dHVyZXMiLCBwKQogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgICogZml4dHVy
ZXMgZGVmaW5lZCBmcm9tIHRlc3Rfc2hvd19maXh0dXJlc19pbmRlbnRlZF9kb2MgKgorICAgICAg
ICAgICAgICAgIGZpeHR1cmUxCisgICAgICAgICAgICAgICAgICAgIGxpbmUxCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRlbnRlZCBsaW5lCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAg
ICAgICAqIGZpeHR1cmVzIGRlZmluZWQgZnJvbSB0ZXN0X3Nob3dfZml4dHVyZXNfaW5kZW50ZWRf
ZG9jICoKLSAgICAgICAgICAgIGZpeHR1cmUxCi0gICAgICAgICAgICAgICAgbGluZTEKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZW50ZWQgbGluZQotICAgICAgICAiIiIKICAgICAgICAgICAgICkK
ICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc19pbmRlbnRlZF9kb2NfZmly
c3RfbGluZV91bmluZGVudGVkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5t
YWtlcHlmaWxlKAotICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVk
ZW50KAorICAgICAgICAgICAgICAgICcnJ1wKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
CisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICAgICAgZGVmIGZp
eHR1cmUxKCk6CisgICAgICAgICAgICAgICAgICAgICIiImxpbmUxCisgICAgICAgICAgICAgICAg
ICAgIGxpbmUyCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnRlZCBsaW5lCisgICAgICAg
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgICAgICcnJwotICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgZml4
dHVyZTEoKToKLSAgICAgICAgICAgICAgICAiIiJsaW5lMQotICAgICAgICAgICAgICAgIGxpbmUy
Ci0gICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKLSAgICAgICAgICAgICAgICAiIiIK
LSAgICAgICAgJycnCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tZml4dHVyZXMiLCBwKQogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgICogZml4dHVy
ZXMgZGVmaW5lZCBmcm9tIHRlc3Rfc2hvd19maXh0dXJlc19pbmRlbnRlZF9kb2NfZmlyc3RfbGlu
ZV91bmluZGVudGVkICoKKyAgICAgICAgICAgICAgICBmaXh0dXJlMQorICAgICAgICAgICAgICAg
ICAgICBsaW5lMQorICAgICAgICAgICAgICAgICAgICBsaW5lMgorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZW50ZWQgbGluZQogICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgKiBm
aXh0dXJlcyBkZWZpbmVkIGZyb20gdGVzdF9zaG93X2ZpeHR1cmVzX2luZGVudGVkX2RvY19maXJz
dF9saW5lX3VuaW5kZW50ZWQgKgotICAgICAgICAgICAgZml4dHVyZTEKLSAgICAgICAgICAgICAg
ICBsaW5lMQotICAgICAgICAgICAgICAgIGxpbmUyCi0gICAgICAgICAgICAgICAgICAgIGluZGVu
dGVkIGxpbmUKLSAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKIAogICAgIGRl
ZiB0ZXN0X3Nob3dfZml4dHVyZXNfaW5kZW50ZWRfaW5fY2xhc3Moc2VsZiwgdGVzdGRpcik6CiAg
ICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAg
ICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgJycnXAorICAgICAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2Jq
ZWN0KToKKyAgICAgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICAg
ICAgICAgIGRlZiBmaXh0dXJlMShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgICAgICIiImxp
bmUxCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGVudGVkIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgICAgICcnJwotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgY2xh
c3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0g
ICAgICAgICAgICAgICAgZGVmIGZpeHR1cmUxKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICAi
IiJsaW5lMQotICAgICAgICAgICAgICAgICAgICBsaW5lMgotICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZW50ZWQgbGluZQotICAgICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgJycnCiAg
ICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tZml4dHVyZXMiLCBwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
Ci0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAg
ICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgICogZml4dHVyZXMgZGVmaW5lZCBmcm9t
IHRlc3Rfc2hvd19maXh0dXJlc19pbmRlbnRlZF9pbl9jbGFzcyAqCisgICAgICAgICAgICAgICAg
Zml4dHVyZTEKKyAgICAgICAgICAgICAgICAgICAgbGluZTEKKyAgICAgICAgICAgICAgICAgICAg
bGluZTIKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKICAgICAgICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgICogZml4dHVyZXMgZGVmaW5lZCBmcm9tIHRlc3Rfc2hvd19m
aXh0dXJlc19pbmRlbnRlZF9pbl9jbGFzcyAqCi0gICAgICAgICAgICBmaXh0dXJlMQotICAgICAg
ICAgICAgICAgIGxpbmUxCi0gICAgICAgICAgICAgICAgbGluZTIKLSAgICAgICAgICAgICAgICAg
ICAgaW5kZW50ZWQgbGluZQotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQog
CiAgICAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc19kaWZmZXJlbnRfZmlsZXMoc2VsZiwgdGVzdGRp
cik6Ci0gICAgICAgICIiIgotICAgICAgICAjODMzOiAtLWZpeHR1cmVzIG9ubHkgc2hvd3MgZml4
dHVyZXMgZnJvbSBmaXJzdCBmaWxlCi0gICAgICAgICIiIgorICAgICAgICAiIiJgLS1maXh0dXJl
c2Agb25seSBzaG93cyBmaXh0dXJlcyBmcm9tIGZpcnN0IGZpbGUgKCM4MzMpLiIiIgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICB0ZXN0X2E9JycnCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC0zNDc1LDI5ICszNTIyLDQyIEBAIGNsYXNzIFRlc3RTaG93Rml4
dHVyZXMob2JqZWN0KToKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQogICAgICAgICAgICAg
QHB5dGVzdC5maXh0dXJlCiAgICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCiAKLUBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZmxhdm9yIiwgWyJmaXh0dXJlIiwgInlpZWxkX2ZpeHR1
cmUiXSkKLWNsYXNzIFRlc3RDb250ZXh0TWFuYWdlckZpeHR1cmVGdW5jcyhvYmplY3QpOgorY2xh
c3MgVGVzdENvbnRleHRNYW5hZ2VyRml4dHVyZUZ1bmNzOgorICAgIEBweXRlc3QuZml4dHVyZShw
YXJhbXM9WyJmaXh0dXJlIiwgInlpZWxkX2ZpeHR1cmUiXSkKKyAgICBkZWYgZmxhdm9yKHNlbGYs
IHJlcXVlc3QsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0
ZW52KCJQWVRFU1RfRklYVFVSRV9GTEFWT1IiLCByZXF1ZXN0LnBhcmFtKQorICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X2NvbnRleHQ9IiIiCisgICAgICAgICAg
ICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGltcG9y
dCB3YXJuaW5ncworICAgICAgICAgICAgVkFSID0gIlBZVEVTVF9GSVhUVVJFX0ZMQVZPUiIKKyAg
ICAgICAgICAgIGlmIFZBUiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKCJQWVRFU1RfRklYVFVSRV9GTEFWT1Igd2FzIG5vdCBzZXQsIGFzc3VtaW5nIGZp
eHR1cmUiKQorICAgICAgICAgICAgICAgIGZpeHR1cmUgPSBweXRlc3QuZml4dHVyZQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaXh0dXJlID0gZ2V0YXR0cihweXRlc3QsIG9z
LmVudmlyb25bVkFSXSkKKyAgICAgICAgIiIiCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3Np
bXBsZShzZWxmLCB0ZXN0ZGlyLCBmbGF2b3IpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAg
IEBweXRlc3Que2ZsYXZvcn0KKyAgICAgICAgICAgIGZyb20gdGVzdF9jb250ZXh0IGltcG9ydCBm
aXh0dXJlCisgICAgICAgICAgICBAZml4dHVyZQogICAgICAgICAgICAgZGVmIGFyZzEoKToKLSAg
ICAgICAgICAgICAgICBwcmludCAoInNldHVwIikKKyAgICAgICAgICAgICAgICBwcmludCgic2V0
dXAiKQogICAgICAgICAgICAgICAgIHlpZWxkIDEKLSAgICAgICAgICAgICAgICBwcmludCAoInRl
YXJkb3duIikKKyAgICAgICAgICAgICAgICBwcmludCgidGVhcmRvd24iKQogICAgICAgICAgICAg
ZGVmIHRlc3RfMShhcmcxKToKLSAgICAgICAgICAgICAgICBwcmludCAoInRlc3QxICVzIiAlIGFy
ZzEpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlc3QxIiwgYXJnMSkKICAgICAgICAgICAgIGRl
ZiB0ZXN0XzIoYXJnMSk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJ0ZXN0MiAlcyIgJSBhcmcx
KQorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0MiIsIGFyZzEpCiAgICAgICAgICAgICAgICAg
YXNzZXJ0IDAKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBmbGF2b3I9Zmxh
dm9yCi0gICAgICAgICAgICApCisgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKQEAgLTM1MTQsMTkgKzM1NzQsMTcgQEAgY2xhc3MgVGVzdENvbnRleHRNYW5hZ2Vy
Rml4dHVyZUZ1bmNzKG9iamVjdCk6CiAgICAgZGVmIHRlc3Rfc2NvcGVkKHNlbGYsIHRlc3RkaXIs
IGZsYXZvcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC57Zmxhdm9yfShz
Y29wZT0ibW9kdWxlIikKKyAgICAgICAgICAgIGZyb20gdGVzdF9jb250ZXh0IGltcG9ydCBmaXh0
dXJlCisgICAgICAgICAgICBAZml4dHVyZShzY29wZT0ibW9kdWxlIikKICAgICAgICAgICAgIGRl
ZiBhcmcxKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJzZXR1cCIpCisgICAgICAgICAgICAg
ICAgcHJpbnQoInNldHVwIikKICAgICAgICAgICAgICAgICB5aWVsZCAxCi0gICAgICAgICAgICAg
ICAgcHJpbnQgKCJ0ZWFyZG93biIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJkb3duIikK
ICAgICAgICAgICAgIGRlZiB0ZXN0XzEoYXJnMSk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJ0
ZXN0MSAlcyIgJSBhcmcxKQorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0MSIsIGFyZzEpCiAg
ICAgICAgICAgICBkZWYgdGVzdF8yKGFyZzEpOgotICAgICAgICAgICAgICAgIHByaW50ICgidGVz
dDIgJXMiICUgYXJnMSkKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBmbGF2
b3I9Zmxhdm9yCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcHJpbnQoInRlc3QyIiwg
YXJnMSkKKyAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi1zIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKApAQCAt
MzU0MSwxNiArMzU5OSwxNCBAQCBjbGFzcyBUZXN0Q29udGV4dE1hbmFnZXJGaXh0dXJlRnVuY3Mo
b2JqZWN0KToKICAgICBkZWYgdGVzdF9zZXR1cF9leGNlcHRpb24oc2VsZiwgdGVzdGRpciwgZmxh
dm9yKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LntmbGF2b3J9KHNjb3Bl
PSJtb2R1bGUiKQorICAgICAgICAgICAgZnJvbSB0ZXN0X2NvbnRleHQgaW1wb3J0IGZpeHR1cmUK
KyAgICAgICAgICAgIEBmaXh0dXJlKHNjb3BlPSJtb2R1bGUiKQogICAgICAgICAgICAgZGVmIGFy
ZzEoKToKICAgICAgICAgICAgICAgICBweXRlc3QuZmFpbCgic2V0dXAiKQogICAgICAgICAgICAg
ICAgIHlpZWxkIDEKICAgICAgICAgICAgIGRlZiB0ZXN0XzEoYXJnMSk6CiAgICAgICAgICAgICAg
ICAgcGFzcwotICAgICAgICAiIiIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGZsYXZvcj1mbGF2
b3IKLSAgICAgICAgICAgICkKKyAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKApAQCAtMzU2MywxNiArMzYxOSwxNCBAQCBjbGFzcyBUZXN0Q29udGV4dE1hbmFnZXJG
aXh0dXJlRnVuY3Mob2JqZWN0KToKICAgICBkZWYgdGVzdF90ZWFyZG93bl9leGNlcHRpb24oc2Vs
ZiwgdGVzdGRpciwgZmxhdm9yKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0
LntmbGF2b3J9KHNjb3BlPSJtb2R1bGUiKQorICAgICAgICAgICAgZnJvbSB0ZXN0X2NvbnRleHQg
aW1wb3J0IGZpeHR1cmUKKyAgICAgICAgICAgIEBmaXh0dXJlKHNjb3BlPSJtb2R1bGUiKQogICAg
ICAgICAgICAgZGVmIGFyZzEoKToKICAgICAgICAgICAgICAgICB5aWVsZCAxCiAgICAgICAgICAg
ICAgICAgcHl0ZXN0LmZhaWwoInRlYXJkb3duIikKICAgICAgICAgICAgIGRlZiB0ZXN0XzEoYXJn
MSk6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIuZm9ybWF0KAotICAgICAgICAg
ICAgICAgIGZsYXZvcj1mbGF2b3IKLSAgICAgICAgICAgICkKKyAgICAgICAgIiIiCiAgICAgICAg
ICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKICAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKApAQCAtMzU4NSwxNiArMzYzOSwxNCBAQCBjbGFzcyBU
ZXN0Q29udGV4dE1hbmFnZXJGaXh0dXJlRnVuY3Mob2JqZWN0KToKICAgICBkZWYgdGVzdF95aWVs
ZHNfbW9yZV90aGFuX29uZShzZWxmLCB0ZXN0ZGlyLCBmbGF2b3IpOgogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
LSAgICAgICAgICAgIEBweXRlc3Que2ZsYXZvcn0oc2NvcGU9Im1vZHVsZSIpCisgICAgICAgICAg
ICBmcm9tIHRlc3RfY29udGV4dCBpbXBvcnQgZml4dHVyZQorICAgICAgICAgICAgQGZpeHR1cmUo
c2NvcGU9Im1vZHVsZSIpCiAgICAgICAgICAgICBkZWYgYXJnMSgpOgogICAgICAgICAgICAgICAg
IHlpZWxkIDEKICAgICAgICAgICAgICAgICB5aWVsZCAyCiAgICAgICAgICAgICBkZWYgdGVzdF8x
KGFyZzEpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAg
ICAgICAgICAgICBmbGF2b3I9Zmxhdm9yCi0gICAgICAgICAgICApCisgICAgICAgICIiIgogICAg
ICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKQEAgLTM2MDcsMjUgKzM2NTksMjIgQEAgY2xh
c3MgVGVzdENvbnRleHRNYW5hZ2VyRml4dHVyZUZ1bmNzKG9iamVjdCk6CiAgICAgZGVmIHRlc3Rf
Y3VzdG9tX25hbWUoc2VsZiwgdGVzdGRpciwgZmxhdm9yKToKICAgICAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAg
ICAgICAgICBAcHl0ZXN0LntmbGF2b3J9KG5hbWU9J21lb3cnKQorICAgICAgICAgICAgZnJvbSB0
ZXN0X2NvbnRleHQgaW1wb3J0IGZpeHR1cmUKKyAgICAgICAgICAgIEBmaXh0dXJlKG5hbWU9J21l
b3cnKQogICAgICAgICAgICAgZGVmIGFyZzEoKToKICAgICAgICAgICAgICAgICByZXR1cm4gJ21l
dycKICAgICAgICAgICAgIGRlZiB0ZXN0XzEobWVvdyk6CiAgICAgICAgICAgICAgICAgcHJpbnQo
bWVvdykKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBmbGF2b3I9Zmxhdm9y
Ci0gICAgICAgICAgICApCisgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygiKm1ldyoiKQotCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipt
ZXcqIl0pCiAKLWNsYXNzIFRlc3RQYXJhbWV0ZXJpemVkU3ViUmVxdWVzdChvYmplY3QpOgogCitj
bGFzcyBUZXN0UGFyYW1ldGVyaXplZFN1YlJlcXVlc3Q6CiAgICAgZGVmIHRlc3RfY2FsbF9mcm9t
X2ZpeHR1cmUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RmaWxlID0gdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgIHRlc3RfY2FsbF9mcm9tX2ZpeHR1cmU9IiIiCiAgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CiAKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzAsIDEsIDJdKQpA
QCAtMzY0MiwyMiArMzY5MSwyMCBAQCBjbGFzcyBUZXN0UGFyYW1ldGVyaXplZFN1YlJlcXVlc3Qo
b2JqZWN0KToKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgRSpGYWlsZWQ6IFRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1l
dGVyIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IHRlc3QuCi0gICAgICAgICAgICBFKgotICAgICAg
ICAgICAgRSpSZXF1ZXN0ZWQgZml4dHVyZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQgaW46Ci0g
ICAgICAgICAgICBFKnt9OjQKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGhlcmU6Ci0gICAgICAg
ICAgICBFKnt9OjkKLSAgICAgICAgICAgICoxIGVycm9yKgotICAgICAgICAgICAgIiIiLmZvcm1h
dCgKLSAgICAgICAgICAgICAgICB0ZXN0ZmlsZS5iYXNlbmFtZSwgdGVzdGZpbGUuYmFzZW5hbWUK
LSAgICAgICAgICAgICkKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiVGhlIHJlcXVl
c3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBmb3IgdGVzdDoiLAorICAgICAg
ICAgICAgICAgICIgICAgdGVzdF9jYWxsX2Zyb21fZml4dHVyZS5weTo6dGVzdF9mb28iLAorICAg
ICAgICAgICAgICAgICJSZXF1ZXN0ZWQgZml4dHVyZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQg
aW46IiwKKyAgICAgICAgICAgICAgICAidGVzdF9jYWxsX2Zyb21fZml4dHVyZS5weTo0IiwKKyAg
ICAgICAgICAgICAgICAiUmVxdWVzdGVkIGhlcmU6IiwKKyAgICAgICAgICAgICAgICAidGVzdF9j
YWxsX2Zyb21fZml4dHVyZS5weTo5IiwKKyAgICAgICAgICAgICAgICAiKjEgZXJyb3IgaW4qIiwK
KyAgICAgICAgICAgIF0KICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfY2FsbF9mcm9tX3Rlc3Qo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RmaWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAot
ICAgICAgICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAg
IHRlc3RfY2FsbF9mcm9tX3Rlc3Q9IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKICAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzAsIDEsIDJdKQpAQCAtMzY3MCwyMSAr
MzcxNywxOSBAQCBjbGFzcyBUZXN0UGFyYW1ldGVyaXplZFN1YlJlcXVlc3Qob2JqZWN0KToKICAg
ICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
RSpGYWlsZWQ6IFRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1ldGVyIGRlZmluZWQg
Zm9yIHRoZSBjdXJyZW50IHRlc3QuCi0gICAgICAgICAgICBFKgotICAgICAgICAgICAgRSpSZXF1
ZXN0ZWQgZml4dHVyZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQgaW46Ci0gICAgICAgICAgICBF
Knt9OjQKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGhlcmU6Ci0gICAgICAgICAgICBFKnt9OjgK
LSAgICAgICAgICAgICoxIGZhaWxlZCoKLSAgICAgICAgICAgICIiIi5mb3JtYXQoCi0gICAgICAg
ICAgICAgICAgdGVzdGZpbGUuYmFzZW5hbWUsIHRlc3RmaWxlLmJhc2VuYW1lCi0gICAgICAgICAg
ICApCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIlRoZSByZXF1ZXN0ZWQgZml4dHVy
ZSBoYXMgbm8gcGFyYW1ldGVyIGRlZmluZWQgZm9yIHRlc3Q6IiwKKyAgICAgICAgICAgICAgICAi
ICAgIHRlc3RfY2FsbF9mcm9tX3Rlc3QucHk6OnRlc3RfZm9vIiwKKyAgICAgICAgICAgICAgICAi
UmVxdWVzdGVkIGZpeHR1cmUgJ2ZpeF93aXRoX3BhcmFtJyBkZWZpbmVkIGluOiIsCisgICAgICAg
ICAgICAgICAgInRlc3RfY2FsbF9mcm9tX3Rlc3QucHk6NCIsCisgICAgICAgICAgICAgICAgIlJl
cXVlc3RlZCBoZXJlOiIsCisgICAgICAgICAgICAgICAgInRlc3RfY2FsbF9mcm9tX3Rlc3QucHk6
OCIsCisgICAgICAgICAgICAgICAgIioxIGZhaWxlZCoiLAorICAgICAgICAgICAgXQogICAgICAg
ICApCiAKICAgICBkZWYgdGVzdF9leHRlcm5hbF9maXh0dXJlKHNlbGYsIHRlc3RkaXIpOgotICAg
ICAgICBjb25mZmlsZSA9IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICB0ZXN0ZGlyLm1h
a2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAog
CkBAIC0zNjk0LDI1ICszNzM5LDI0IEBAIGNsYXNzIFRlc3RQYXJhbWV0ZXJpemVkU3ViUmVxdWVz
dChvYmplY3QpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICkKIAotICAgICAgICB0ZXN0Zmls
ZSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X2V4dGVybmFsX2ZpeHR1cmU9IiIiCiAgICAg
ICAgICAgICBkZWYgdGVzdF9mb28ocmVxdWVzdCk6CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5n
ZXRmaXh0dXJldmFsdWUoJ2ZpeF93aXRoX3BhcmFtJykKICAgICAgICAgICAgICIiIgogICAgICAg
ICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBFKkZh
aWxlZDogVGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBmb3Ig
dGhlIGN1cnJlbnQgdGVzdC4KLSAgICAgICAgICAgIEUqCi0gICAgICAgICAgICBFKlJlcXVlc3Rl
ZCBmaXh0dXJlICdmaXhfd2l0aF9wYXJhbScgZGVmaW5lZCBpbjoKLSAgICAgICAgICAgIEUqe306
NAotICAgICAgICAgICAgRSpSZXF1ZXN0ZWQgaGVyZToKLSAgICAgICAgICAgIEUqe306MgotICAg
ICAgICAgICAgKjEgZmFpbGVkKgotICAgICAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAg
ICAgICBjb25mZmlsZS5iYXNlbmFtZSwgdGVzdGZpbGUuYmFzZW5hbWUKLSAgICAgICAgICAgICkK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiVGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhh
cyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBmb3IgdGVzdDoiLAorICAgICAgICAgICAgICAgICIgICAg
dGVzdF9leHRlcm5hbF9maXh0dXJlLnB5Ojp0ZXN0X2ZvbyIsCisgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBmaXh0dXJlICdmaXhfd2l0aF9wYXJhbScgZGVm
aW5lZCBpbjoiLAorICAgICAgICAgICAgICAgICJjb25mdGVzdC5weTo0IiwKKyAgICAgICAgICAg
ICAgICAiUmVxdWVzdGVkIGhlcmU6IiwKKyAgICAgICAgICAgICAgICAidGVzdF9leHRlcm5hbF9m
aXh0dXJlLnB5OjIiLAorICAgICAgICAgICAgICAgICIqMSBmYWlsZWQqIiwKKyAgICAgICAgICAg
IF0KICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfbm9uX3JlbGF0aXZlX3BhdGgoc2VsZiwgdGVz
dGRpcik6CkBAIC0zNzIwLDI2ICszNzY0LDI2IEBAIGNsYXNzIFRlc3RQYXJhbWV0ZXJpemVkU3Vi
UmVxdWVzdChvYmplY3QpOgogICAgICAgICBmaXhkaXIgPSB0ZXN0ZGlyLm1rZGlyKCJmaXh0dXJl
cyIpCiAgICAgICAgIGZpeGZpbGUgPSBmaXhkaXIuam9pbigiZml4LnB5IikKICAgICAgICAgZml4
ZmlsZS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAg
ICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgdGV4dHdy
YXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CiAKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzAsIDEsIDJdKQot
ICAgICAgICAgICAgZGVmIGZpeF93aXRoX3BhcmFtKHJlcXVlc3QpOgotICAgICAgICAgICAgICAg
IHJldHVybiByZXF1ZXN0LnBhcmFtCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUocGFyYW1zPVswLCAxLCAyXSkKKyAgICAgICAgICAgICAgICBkZWYgZml4
X3dpdGhfcGFyYW0ocmVxdWVzdCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0
LnBhcmFtCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKIAog
ICAgICAgICB0ZXN0ZmlsZSA9IHRlc3RzX2Rpci5qb2luKCJ0ZXN0X2Zvb3MucHkiKQogICAgICAg
ICB0ZXN0ZmlsZS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAg
ICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZnJvbSBmaXggaW1wb3J0IGZpeF93aXRoX3Bh
cmFtCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAor
ICAgICAgICAgICAgICAgIGZyb20gZml4IGltcG9ydCBmaXhfd2l0aF9wYXJhbQogCi0gICAgICAg
ICAgICBkZWYgdGVzdF9mb28ocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5nZXRm
aXh0dXJldmFsdWUoJ2ZpeF93aXRoX3BhcmFtJykKLSAgICAgICAgICAgICIiIgorICAgICAgICAg
ICAgICAgIGRlZiB0ZXN0X2ZvbyhyZXF1ZXN0KToKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5nZXRmaXh0dXJldmFsdWUoJ2ZpeF93aXRoX3BhcmFtJykKKyAgICAgICAgICAgICAgICAiIiIK
ICAgICAgICAgICAgICkKICAgICAgICAgKQogCkBAIC0zNzQ3LDI0ICszNzkxLDM5IEBAIGNsYXNz
IFRlc3RQYXJhbWV0ZXJpemVkU3ViUmVxdWVzdChvYmplY3QpOgogICAgICAgICB0ZXN0ZGlyLnN5
c3BhdGhpbnNlcnQoZml4ZGlyKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgRSpGYWlsZWQ6IFRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1l
dGVyIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IHRlc3QuCi0gICAgICAgICAgICBFKgotICAgICAg
ICAgICAgRSpSZXF1ZXN0ZWQgZml4dHVyZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQgaW46Ci0g
ICAgICAgICAgICBFKnt9OjUKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGhlcmU6Ci0gICAgICAg
ICAgICBFKnt9OjUKLSAgICAgICAgICAgICoxIGZhaWxlZCoKLSAgICAgICAgICAgICIiIi5mb3Jt
YXQoCi0gICAgICAgICAgICAgICAgZml4ZmlsZS5zdHJwYXRoLCB0ZXN0ZmlsZS5iYXNlbmFtZQot
ICAgICAgICAgICAgKQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJUaGUgcmVxdWVz
dGVkIGZpeHR1cmUgaGFzIG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0ZXN0OiIsCisgICAgICAg
ICAgICAgICAgIiAgICB0ZXN0X2Zvb3MucHk6OnRlc3RfZm9vIiwKKyAgICAgICAgICAgICAgICAi
IiwKKyAgICAgICAgICAgICAgICAiUmVxdWVzdGVkIGZpeHR1cmUgJ2ZpeF93aXRoX3BhcmFtJyBk
ZWZpbmVkIGluOiIsCisgICAgICAgICAgICAgICAgInt9OjQiLmZvcm1hdChmaXhmaWxlKSwKKyAg
ICAgICAgICAgICAgICAiUmVxdWVzdGVkIGhlcmU6IiwKKyAgICAgICAgICAgICAgICAidGVzdF9m
b29zLnB5OjQiLAorICAgICAgICAgICAgICAgICIqMSBmYWlsZWQqIiwKKyAgICAgICAgICAgIF0K
KyAgICAgICAgKQorCisgICAgICAgICMgV2l0aCBub24tb3ZlcmxhcHBpbmcgcm9vdGRpciwgcGFz
c2luZyB0ZXN0c19kaXIuCisgICAgICAgIHJvb3RkaXIgPSB0ZXN0ZGlyLm1rZGlyKCJyb290ZGly
IikKKyAgICAgICAgcm9vdGRpci5jaGRpcigpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLXJvb3RkaXIiLCByb290ZGlyLCB0ZXN0c19kaXIpCisgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiVGhl
IHJlcXVlc3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBmb3IgdGVzdDoiLAor
ICAgICAgICAgICAgICAgICIgICAgdGVzdF9mb29zLnB5Ojp0ZXN0X2ZvbyIsCisgICAgICAgICAg
ICAgICAgIiIsCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBmaXh0dXJlICdmaXhfd2l0aF9w
YXJhbScgZGVmaW5lZCBpbjoiLAorICAgICAgICAgICAgICAgICJ7fTo0Ii5mb3JtYXQoZml4Zmls
ZSksCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBoZXJlOiIsCisgICAgICAgICAgICAgICAg
Int9OjQiLmZvcm1hdCh0ZXN0ZmlsZSksCisgICAgICAgICAgICAgICAgIioxIGZhaWxlZCoiLAor
ICAgICAgICAgICAgXQogICAgICAgICApCiAKIAogZGVmIHRlc3RfcHl0ZXN0X2ZpeHR1cmVfc2V0
dXBfYW5kX3Bvc3RfZmluYWxpemVyX2hvb2sodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlY29u
ZnRlc3QoCiAgICAgICAgICIiIgotICAgICAgICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50
X2Z1bmN0aW9uCiAgICAgICAgIGRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCBy
ZXF1ZXN0KToKICAgICAgICAgICAgIHByaW50KCdST09UIHNldHVwIGhvb2sgY2FsbGVkIGZvciB7
MH0gZnJvbSB7MX0nLmZvcm1hdChmaXh0dXJlZGVmLmFyZ25hbWUsIHJlcXVlc3Qubm9kZS5uYW1l
KSkKICAgICAgICAgZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1cmVkZWYs
IHJlcXVlc3QpOgpAQCAtMzc3NCwxNCArMzgzMywxMiBAQCBkZWYgdGVzdF9weXRlc3RfZml4dHVy
ZV9zZXR1cF9hbmRfcG9zdF9maW5hbGl6ZXJfaG9vayh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICoqewogICAgICAgICAgICAgInRlc3RzL2NvbmZ0ZXN0LnB5Ijog
IiIiCi0gICAgICAgICAgICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAg
ICAgICAgICAgICBkZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6
CiAgICAgICAgICAgICAgICAgcHJpbnQoJ1RFU1RTIHNldHVwIGhvb2sgY2FsbGVkIGZvciB7MH0g
ZnJvbSB7MX0nLmZvcm1hdChmaXh0dXJlZGVmLmFyZ25hbWUsIHJlcXVlc3Qubm9kZS5uYW1lKSkK
ICAgICAgICAgICAgIGRlZiBweXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFsaXplcihmaXh0dXJlZGVm
LCByZXF1ZXN0KToKICAgICAgICAgICAgICAgICBwcmludCgnVEVTVFMgZmluYWxpemVyIGhvb2sg
Y2FsbGVkIGZvciB7MH0gZnJvbSB7MX0nLmZvcm1hdChmaXh0dXJlZGVmLmFyZ25hbWUsIHJlcXVl
c3Qubm9kZS5uYW1lKSkKICAgICAgICAgIiIiLAogICAgICAgICAgICAgInRlc3RzL3Rlc3RfaG9v
a3MucHkiOiAiIiIKLSAgICAgICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAogICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlKCkKQEAgLTM4MDcsMjAgKzM4NjQsMzAgQEAgZGVmIHRlc3RfcHl0ZXN0X2ZpeHR1cmVf
c2V0dXBfYW5kX3Bvc3RfZmluYWxpemVyX2hvb2sodGVzdGRpcik6CiAgICAgKQogCiAKLWNsYXNz
IFRlc3RTY29wZU9yZGVyaW5nKG9iamVjdCk6CitjbGFzcyBUZXN0U2NvcGVPcmRlcmluZzoKICAg
ICAiIiJDbGFzcyBvZiB0ZXN0cyB0aGF0IGVuc3VyZSBmaXh0dXJlcyBhcmUgb3JkZXJlZCBiYXNl
ZCBvbiB0aGVpciBzY29wZXMgKCMyNDA1KSIiIgogCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJ1c2VfbWFyayIsIFtUcnVlLCBGYWxzZV0pCi0gICAgZGVmIHRlc3RfZnVuY19jbG9zdXJl
X21vZHVsZV9hdXRvKHNlbGYsIHRlc3RkaXIsIHVzZV9tYXJrKToKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoInZhcmlhbnQiLCBbIm1hcmsiLCAiYXV0b3VzZSJdKQorICAgIGRlZiB0ZXN0
X2Z1bmNfY2xvc3VyZV9tb2R1bGVfYXV0byhzZWxmLCB0ZXN0ZGlyLCB2YXJpYW50LCBtb25rZXlw
YXRjaCk6CiAgICAgICAgICIiIlNlbWFudGljYWxseSBpZGVudGljYWwgdG8gdGhlIGV4YW1wbGUg
cG9zdGVkIGluICMyNDA1IHdoZW4gYGB1c2VfbWFyaz1UcnVlYGAiIiIKKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0ZW52KCJGSVhUVVJFX0FDVElWQVRJT05fVkFSSUFOVCIsIHZhcmlhbnQpCiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1w
b3J0IHdhcm5pbmdzCisgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKKyAgICAgICAgICAgIFZBUiA9ICdGSVhUVVJFX0FDVElWQVRJT05fVkFSSUFOVCcKKyAg
ICAgICAgICAgIFZBTElEX1ZBUlMgPSAoJ2F1dG91c2UnLCAnbWFyaycpCisKKyAgICAgICAgICAg
IFZBUklBTlQgPSBvcy5lbnZpcm9uLmdldChWQVIpCisgICAgICAgICAgICBpZiBWQVJJQU5UIGlz
IE5vbmUgb3IgVkFSSUFOVCBub3QgaW4gVkFMSURfVkFSUzoKKyAgICAgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKCJ7IXJ9IGlzIG5vdCAgaW4ge30sIGFzc3VtaW5nIGF1dG91c2UiLmZvcm1hdChW
QVJJQU5ULCBWQUxJRF9WQVJTKSApCisgICAgICAgICAgICAgICAgdmFyaWFudCA9ICdtYXJrJwog
Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J21vZHVsZScsIGF1dG91c2U9e2F1
dG91c2V9KQorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdtb2R1bGUnLCBhdXRv
dXNlPVZBUklBTlQgPT0gJ2F1dG91c2UnKQogICAgICAgICAgICAgZGVmIG0xKCk6IHBhc3MKIAot
ICAgICAgICAgICAgaWYge3VzZV9tYXJrfToKKyAgICAgICAgICAgIGlmIFZBUklBTlQ9PSdtYXJr
JzoKICAgICAgICAgICAgICAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMo
J20xJykKIAogICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdmdW5jdGlvbicsIGF1
dG91c2U9VHJ1ZSkKQEAgLTM4MjgsMTUgKzM4OTUsMTMgQEAgY2xhc3MgVGVzdFNjb3BlT3JkZXJp
bmcob2JqZWN0KToKIAogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYyhtMSk6CiAgICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAiIiIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGF1dG91c2U9
bm90IHVzZV9tYXJrLCB1c2VfbWFyaz11c2VfbWFyawotICAgICAgICAgICAgKQorICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICBpdGVtcywgXyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1z
KCkKICAgICAgICAgcmVxdWVzdCA9IEZpeHR1cmVSZXF1ZXN0KGl0ZW1zWzBdKQogICAgICAgICBh
c3NlcnQgcmVxdWVzdC5maXh0dXJlbmFtZXMgPT0gIm0xIGYxIi5zcGxpdCgpCiAKLSAgICBkZWYg
dGVzdF9mdW5jX2Nsb3N1cmVfd2l0aF9uYXRpdmVfZml4dHVyZXMoc2VsZiwgdGVzdGRpciwgbW9u
a2V5cGF0Y2gpOgorICAgIGRlZiB0ZXN0X2Z1bmNfY2xvc3VyZV93aXRoX25hdGl2ZV9maXh0dXJl
cyhzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICAgICAgIiIiU2FuaXR5
IGNoZWNrIHRoYXQgdmVyaWZpZXMgdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBjbG9zdXJlcyBh
bmQgdGhlIGFjdHVhbCBmaXh0dXJlIGV4ZWN1dGlvbiBvcmRlcjoKICAgICAgICAgVGhlIGV4ZWN1
dGlvbiBvcmRlciBtYXkgZGlmZmVyIGJlY2F1c2Ugb2YgZml4dHVyZSBpbnRlci1kZXBlbmRlbmNp
ZXMuCiAgICAgICAgICIiIgpAQCAtMzg1MSw2ICszOTE2LDEwIEBAIGNsYXNzIFRlc3RTY29wZU9y
ZGVyaW5nKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgczEoKToKICAgICAgICAgICAgICAgICBG
SVhUVVJFX09SREVSLmFwcGVuZCgnczEnKQogCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUo
c2NvcGU9InBhY2thZ2UiKQorICAgICAgICAgICAgZGVmIHAxKCk6CisgICAgICAgICAgICAgICAg
RklYVFVSRV9PUkRFUi5hcHBlbmQoJ3AxJykKKwogICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJl
KHNjb3BlPSJtb2R1bGUiKQogICAgICAgICAgICAgZGVmIG0xKCk6CiAgICAgICAgICAgICAgICAg
RklYVFVSRV9PUkRFUi5hcHBlbmQoJ20xJykKQEAgLTM4NzEsMTYgKzM5NDAsMTkgQEAgY2xhc3Mg
VGVzdFNjb3BlT3JkZXJpbmcob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBmMigpOgogICAgICAg
ICAgICAgICAgIEZJWFRVUkVfT1JERVIuYXBwZW5kKCdmMicpCiAKLSAgICAgICAgICAgIGRlZiB0
ZXN0X2ZvbyhmMSwgbTEsIGYyLCBzMSk6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zvbyhm
MSwgcDEsIG0xLCBmMiwgczEpOiBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAg
IGl0ZW1zLCBfID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMoKQogICAgICAgICByZXF1ZXN0ID0g
Rml4dHVyZVJlcXVlc3QoaXRlbXNbMF0pCiAgICAgICAgICMgb3JkZXIgb2YgZml4dHVyZXMgYmFz
ZWQgb24gdGhlaXIgc2NvcGUgYW5kIHBvc2l0aW9uIGluIHRoZSBwYXJhbWV0ZXIgbGlzdAotICAg
ICAgICBhc3NlcnQgcmVxdWVzdC5maXh0dXJlbmFtZXMgPT0gInMxIG15X3RtcGRpcl9mYWN0b3J5
IG0xIGYxIGYyIG15X3RtcGRpciIuc3BsaXQoKQorICAgICAgICBhc3NlcnQgKAorICAgICAgICAg
ICAgcmVxdWVzdC5maXh0dXJlbmFtZXMgPT0gInMxIG15X3RtcGRpcl9mYWN0b3J5IHAxIG0xIGYx
IGYyIG15X3RtcGRpciIuc3BsaXQoKQorICAgICAgICApCiAgICAgICAgIHRlc3RkaXIucnVucHl0
ZXN0KCkKICAgICAgICAgIyBhY3R1YWwgZml4dHVyZSBleGVjdXRpb24gZGlmZmVyczogZGVwZW5k
ZW50IGZpeHR1cmVzIG11c3QgYmUgY3JlYXRlZCBmaXJzdCAoIm15X3RtcGRpciIpCi0gICAgICAg
IGFzc2VydCBweXRlc3QuRklYVFVSRV9PUkRFUiA9PSAiczEgbXlfdG1wZGlyX2ZhY3RvcnkgbTEg
bXlfdG1wZGlyIGYxIGYyIi5zcGxpdCgpCisgICAgICAgIEZJWFRVUkVfT1JERVIgPSBweXRlc3Qu
RklYVFVSRV9PUkRFUiAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAgICBhc3Nl
cnQgRklYVFVSRV9PUkRFUiA9PSAiczEgbXlfdG1wZGlyX2ZhY3RvcnkgcDEgbTEgbXlfdG1wZGly
IGYxIGYyIi5zcGxpdCgpCiAKICAgICBkZWYgdGVzdF9mdW5jX2Nsb3N1cmVfbW9kdWxlKHNlbGYs
IHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0zOTQ5LDkgKzQwMjEs
MTMgQEAgY2xhc3MgVGVzdFNjb3BlT3JkZXJpbmcob2JqZWN0KToKICAgICAgICAgICAgICAgICAi
c3ViL2NvbmZ0ZXN0LnB5IjogIiIiCiAgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCisg
ICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdwYWNrYWdlJywgYXV0b3VzZT1U
cnVlKQorICAgICAgICAgICAgICAgIGRlZiBwX3N1YigpOiBwYXNzCisKICAgICAgICAgICAgICAg
ICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J21vZHVsZScsIGF1dG91c2U9VHJ1ZSkKICAgICAgICAg
ICAgICAgICBkZWYgbV9zdWIoKTogcGFzcwogICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAg
ICAgICJzdWIvX19pbml0X18ucHkiOiAiIiwKICAgICAgICAgICAgICAgICAic3ViL3Rlc3RfZnVu
Yy5weSI6ICIiIgogICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIApAQCAtMzk2OCw3ICs0
MDQ0LDcgQEAgY2xhc3MgVGVzdFNjb3BlT3JkZXJpbmcob2JqZWN0KToKICAgICAgICAgKQogICAg
ICAgICBpdGVtcywgXyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1zKCkKICAgICAgICAgcmVxdWVz
dCA9IEZpeHR1cmVSZXF1ZXN0KGl0ZW1zWzBdKQotICAgICAgICBhc3NlcnQgcmVxdWVzdC5maXh0
dXJlbmFtZXMgPT0gIm1fY29uZiBtX3N1YiBtX3Rlc3QgZjEiLnNwbGl0KCkKKyAgICAgICAgYXNz
ZXJ0IHJlcXVlc3QuZml4dHVyZW5hbWVzID09ICJwX3N1YiBtX2NvbmYgbV9zdWIgbV90ZXN0IGYx
Ii5zcGxpdCgpCiAKICAgICBkZWYgdGVzdF9mdW5jX2Nsb3N1cmVfYWxsX3Njb3Blc19jb21wbGV4
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAiIiJDb21wbGV4IHRlc3QgaW52b2x2aW5nIGFsbCBz
Y29wZXMgYW5kIG1peGluZyBhdXRvdXNlIHdpdGggbm9ybWFsIGZpeHR1cmVzIiIiCkBAIC0zOTc4
LDggKzQwNTQsMTIgQEAgY2xhc3MgVGVzdFNjb3BlT3JkZXJpbmcob2JqZWN0KToKIAogICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdzZXNzaW9uJykKICAgICAgICAgICAgIGRlZiBz
MSgpOiBwYXNzCisKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ncGFja2FnZScs
IGF1dG91c2U9VHJ1ZSkKKyAgICAgICAgICAgIGRlZiBwMSgpOiBwYXNzCiAgICAgICAgICIiIgog
ICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgqKnsiX19pbml0X18ucHkiOiAi
In0pCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNDAwOCw0ICs0MDg4LDI5NSBAQCBjbGFzcyBUZXN0U2Nv
cGVPcmRlcmluZyhvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIGl0ZW1zLCBfID0gdGVzdGRp
ci5pbmxpbmVfZ2VuaXRlbXMoKQogICAgICAgICByZXF1ZXN0ID0gRml4dHVyZVJlcXVlc3QoaXRl
bXNbMF0pCi0gICAgICAgIGFzc2VydCByZXF1ZXN0LmZpeHR1cmVuYW1lcyA9PSAiczEgbTEgbTIg
YzEgZjIgZjEiLnNwbGl0KCkKKyAgICAgICAgYXNzZXJ0IHJlcXVlc3QuZml4dHVyZW5hbWVzID09
ICJzMSBwMSBtMSBtMiBjMSBmMiBmMSIuc3BsaXQoKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVf
cGFja2FnZXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIkNvbXBsZXggdGVzdCBpbnZvbHZp
bmcgbXVsdGlwbGUgcGFja2FnZSBmaXh0dXJlcy4gTWFrZSBzdXJlIHRlYXJkb3ducworICAgICAg
ICBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIuCisgICAgICAgIC4KKyAgICAgICAg4pSU4pSA4pSAIHJv
b3QKKyAgICAgICAgICAgIOKUnOKUgOKUgCBfX2luaXRfXy5weQorICAgICAgICAgICAg4pSc4pSA
4pSAIHN1YjEKKyAgICAgICAgICAgIOKUgiAgIOKUnOKUgOKUgCBfX2luaXRfXy5weQorICAgICAg
ICAgICAg4pSCICAg4pSc4pSA4pSAIGNvbmZ0ZXN0LnB5CisgICAgICAgICAgICDilIIgICDilJTi
lIDilIAgdGVzdF8xLnB5CisgICAgICAgICAgICDilJTilIDilIAgc3ViMgorICAgICAgICAgICAg
ICAgIOKUnOKUgOKUgCBfX2luaXRfXy5weQorICAgICAgICAgICAgICAgIOKUnOKUgOKUgCBjb25m
dGVzdC5weQorICAgICAgICAgICAgICAgIOKUlOKUgOKUgCB0ZXN0XzIucHkKKyAgICAgICAgIiIi
CisgICAgICAgIHJvb3QgPSB0ZXN0ZGlyLm1rZGlyKCJyb290IikKKyAgICAgICAgcm9vdC5qb2lu
KCJfX2luaXRfXy5weSIpLndyaXRlKCJ2YWx1ZXMgPSBbXSIpCisgICAgICAgIHN1YjEgPSByb290
Lm1rZGlyKCJzdWIxIikKKyAgICAgICAgc3ViMS5lbnN1cmUoIl9faW5pdF9fLnB5IikKKyAgICAg
ICAgc3ViMS5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAorICAgICAgICAgICAgdGV4dHdyYXAu
ZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
KyAgICAgICAgICAgIGZyb20gLi4gaW1wb3J0IHZhbHVlcworICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlKHNjb3BlPSJwYWNrYWdlIikKKyAgICAgICAgICAgIGRlZiBmaXgoKToKKyAgICAgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKCJwcmUtc3ViMSIpCisgICAgICAgICAgICAgICAgeWllbGQg
dmFsdWVzCisgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcy5wb3AoKSA9PSAicHJlLXN1YjEi
CisgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHN1YjEuam9p
bigidGVzdF8xLnB5Iikud3JpdGUoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAg
ICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgZnJvbSAuLiBpbXBvcnQgdmFsdWVzCisgICAg
ICAgICAgICBkZWYgdGVzdF8xKGZpeCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9
PSBbInByZS1zdWIxIl0KKyAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgICkKKyAg
ICAgICAgc3ViMiA9IHJvb3QubWtkaXIoInN1YjIiKQorICAgICAgICBzdWIyLmVuc3VyZSgiX19p
bml0X18ucHkiKQorICAgICAgICBzdWIyLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCisgICAg
ICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZnJvbSAuLiBpbXBvcnQgdmFsdWVzCisgICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InBhY2thZ2UiKQorICAgICAgICAgICAgZGVm
IGZpeCgpOgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoInByZS1zdWIyIikKKyAgICAg
ICAgICAgICAgICB5aWVsZCB2YWx1ZXMKKyAgICAgICAgICAgICAgICBhc3NlcnQgdmFsdWVzLnBv
cCgpID09ICJwcmUtc3ViMiIKKyAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgICkK
KyAgICAgICAgc3ViMi5qb2luKCJ0ZXN0XzIucHkiKS53cml0ZSgKKyAgICAgICAgICAgIHRleHR3
cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBmcm9tIC4uIGlt
cG9ydCB2YWx1ZXMKKyAgICAgICAgICAgIGRlZiB0ZXN0XzIoZml4KToKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgdmFsdWVzID09IFsicHJlLXN1YjIiXQorICAgICAgICAiIiIKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MikKKworICAgIGRlZiB0ZXN0X2NsYXNz
X2ZpeHR1cmVfc2VsZl9pbnN0YW5jZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiQ2hlY2sg
dGhhdCBwbHVnaW4gY2xhc3NlcyB3aGljaCBpbXBsZW1lbnQgZml4dHVyZXMgcmVjZWl2ZSB0aGUg
cGx1Z2luIGluc3RhbmNlCisgICAgICAgIGFzIHNlbGYgKHNlZSAjMjI3MCkuCisgICAgICAgICIi
IgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShj
b25maWcpOgorICAgICAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKE15
UGx1Z2luKCkpCisKKyAgICAgICAgICAgIGNsYXNzIE15UGx1Z2luKCk6CisgICAgICAgICAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFyZyA9IDEK
KworICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nZnVuY3Rpb24nKQorICAg
ICAgICAgICAgICAgIGRlZiBteWZpeChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2Uoc2VsZiwgTXlQbHVnaW4pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
ZWxmLmFyZworICAgICAgICAiIiIKKyAgICAgICAgKQorCisgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVj
dCk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfMShzZWxmLCBteWZpeCk6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBteWZpeCA9PSAxCisgICAgICAgICIiIgorICAgICAgICApCisgICAg
ICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcHJlYy5hc3NlcnRv
dXRjb21lKHBhc3NlZD0xKQorCisKK2RlZiB0ZXN0X2NhbGxfZml4dHVyZV9mdW5jdGlvbl9lcnJv
cigpOgorICAgICIiIkNoZWNrIGlmIGFuIGVycm9yIGlzIHJhaXNlZCBpZiBhIGZpeHR1cmUgZnVu
Y3Rpb24gaXMgY2FsbGVkIGRpcmVjdGx5ICgjNDU0NSkiIiIKKworICAgIEBweXRlc3QuZml4dHVy
ZQorICAgIGRlZiBmaXgoKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisK
KyAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKToKKyAgICAgICAg
YXNzZXJ0IGZpeCgpID09IDEKKworCitkZWYgdGVzdF9maXh0dXJlX3BhcmFtX3NoYWRvd2luZyh0
ZXN0ZGlyKToKKyAgICAiIiJQYXJhbWV0cml6ZWQgYXJndW1lbnRzIHdvdWxkIGJlIHNoYWRvd2Vk
IGlmIGEgZml4dHVyZSB3aXRoIHRoZSBzYW1lIG5hbWUgYWxzbyBleGlzdHMgKCM1MDM2KSIiIgor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRl
c3QKKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsnYScsICdiJ10pCisgICAgICAg
IGRlZiBhcmdyb290KHJlcXVlc3QpOgorICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0K
KworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGFyZyhhcmdyb290KToKKyAg
ICAgICAgICAgIHJldHVybiBhcmdyb290CisKKyAgICAgICAgIyBUaGlzIHNob3VsZCBvbmx5IGJl
IHBhcmFtZXRyaXplZCBkaXJlY3RseQorICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImFyZyIsIFsxXSkKKyAgICAgICAgZGVmIHRlc3RfZGlyZWN0KGFyZyk6CisgICAgICAgICAgICBh
c3NlcnQgYXJnID09IDEKKworICAgICAgICAjIFRoaXMgc2hvdWxkIGJlIHBhcmFtZXRyaXplZCBi
YXNlZCBvbiB0aGUgZml4dHVyZXMKKyAgICAgICAgZGVmIHRlc3Rfbm9ybWFsX2ZpeHR1cmUoYXJn
KToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFyZywgc3RyKQorCisgICAgICAgICMg
SW5kaXJlY3Qgc2hvdWxkIHN0aWxsIHdvcms6CisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisg
ICAgICAgIGRlZiBhcmcyKHJlcXVlc3QpOgorICAgICAgICAgICAgcmV0dXJuIDIqcmVxdWVzdC5w
YXJhbQorCisgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYXJnMiIsIFsxXSwgaW5k
aXJlY3Q9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3RfaW5kaXJlY3QoYXJnMik6CisgICAgICAgICAg
ICBhc3NlcnQgYXJnMiA9PSAyCisgICAgIiIiCisgICAgKQorICAgICMgT25seSBvbmUgdGVzdCBz
aG91bGQgaGF2ZSBydW4KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiKQorICAg
IHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTQpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiKjo6dGVzdF9kaXJlY3RbW10xW11dKiJdKQorICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIio6OnRlc3Rfbm9ybWFsX2ZpeHR1cmVbW11hW11dKiJdKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio6OnRlc3Rfbm9ybWFsX2ZpeHR1cmVbW11iW11d
KiJdKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio6OnRlc3RfaW5kaXJlY3Rb
W10xW11dKiJdKQorCisKK2RlZiB0ZXN0X2ZpeHR1cmVfbmFtZWRfcmVxdWVzdCh0ZXN0ZGlyKToK
KyAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiZml4dHVyZXMvdGVzdF9maXh0dXJlX25hbWVkX3Jl
cXVlc3QucHkiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICIqJ3JlcXVlc3Qn
IGlzIGEgcmVzZXJ2ZWQgd29yZCBmb3IgZml4dHVyZXMsIHVzZSBhbm90aGVyIG5hbWU6IiwKKyAg
ICAgICAgICAgICIgICp0ZXN0X2ZpeHR1cmVfbmFtZWRfcmVxdWVzdC5weTo1IiwKKyAgICAgICAg
XQorICAgICkKKworCitkZWYgdGVzdF9pbmRpcmVjdF9maXh0dXJlX2RvZXNfbm90X2JyZWFrX3Nj
b3BlKHRlc3RkaXIpOgorICAgICIiIkVuc3VyZSB0aGF0IGZpeHR1cmUgc2NvcGUgaXMgcmVzcGVj
dGVkIHdoZW4gdXNpbmcgaW5kaXJlY3QgZml4dHVyZXMgKCM1NzApIiIiCisgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBp
bnN0YW50aWF0ZWQgID0gW10KKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Np
b24iKQorICAgICAgICBkZWYgZml4dHVyZV8xKHJlcXVlc3QpOgorICAgICAgICAgICAgaW5zdGFu
dGlhdGVkLmFwcGVuZCgoImZpeHR1cmVfMSIsIHJlcXVlc3QucGFyYW0pKQorCisKKyAgICAgICAg
QHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKKyAgICAgICAgZGVmIGZpeHR1cmVfMihy
ZXF1ZXN0KToKKyAgICAgICAgICAgIGluc3RhbnRpYXRlZC5hcHBlbmQoKCJmaXh0dXJlXzIiLCBy
ZXF1ZXN0LnBhcmFtKSkKKworCisgICAgICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgICAgICgi
QSIsICJhMSIpLAorICAgICAgICAgICAgKCJBIiwgImEyIiksCisgICAgICAgICAgICAoIkIiLCAi
YjEiKSwKKyAgICAgICAgICAgICgiQiIsICJiMiIpLAorICAgICAgICAgICAgKCJDIiwgImMxIiks
CisgICAgICAgICAgICAoIkMiLCAiYzIiKSwKKyAgICAgICAgXQorCisgICAgICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgICAgICJmaXh0dXJlXzEsZml4dHVyZV8yIiwgc2Nl
bmFyaW9zLCBpbmRpcmVjdD1bImZpeHR1cmVfMSIsICJmaXh0dXJlXzIiXQorICAgICAgICApCisg
ICAgICAgIGRlZiB0ZXN0X2NyZWF0ZV9maXh0dXJlcyhmaXh0dXJlXzEsIGZpeHR1cmVfMik6Cisg
ICAgICAgICAgICBwYXNzCisKKworICAgICAgICBkZWYgdGVzdF9jaGVja19maXh0dXJlX2luc3Rh
bnRpYXRpb25zKCk6CisgICAgICAgICAgICBhc3NlcnQgaW5zdGFudGlhdGVkID09IFsKKyAgICAg
ICAgICAgICAgICAoJ2ZpeHR1cmVfMScsICdBJyksCisgICAgICAgICAgICAgICAgKCdmaXh0dXJl
XzInLCAnYTEnKSwKKyAgICAgICAgICAgICAgICAoJ2ZpeHR1cmVfMicsICdhMicpLAorICAgICAg
ICAgICAgICAgICgnZml4dHVyZV8xJywgJ0InKSwKKyAgICAgICAgICAgICAgICAoJ2ZpeHR1cmVf
MicsICdiMScpLAorICAgICAgICAgICAgICAgICgnZml4dHVyZV8yJywgJ2IyJyksCisgICAgICAg
ICAgICAgICAgKCdmaXh0dXJlXzEnLCAnQycpLAorICAgICAgICAgICAgICAgICgnZml4dHVyZV8y
JywgJ2MxJyksCisgICAgICAgICAgICAgICAgKCdmaXh0dXJlXzInLCAnYzInKSwKKyAgICAgICAg
ICAgIF0KKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQor
ICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTcpCisKKworZGVmIHRlc3RfZml4dHVy
ZV9wYXJhbWV0cml6YXRpb25fbnBhcnJheSh0ZXN0ZGlyKToKKyAgICBweXRlc3QuaW1wb3J0b3Jz
a2lwKCJudW1weSIpCisKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAg
ICAgICBmcm9tIG51bXB5IGltcG9ydCBsaW5zcGFjZQorICAgICAgICBmcm9tIHB5dGVzdCBpbXBv
cnQgZml4dHVyZQorCisgICAgICAgIEBmaXh0dXJlKHBhcmFtcz1saW5zcGFjZSgxLCAxMCwgMTAp
KQorICAgICAgICBkZWYgdmFsdWUocmVxdWVzdCk6CisgICAgICAgICAgICByZXR1cm4gcmVxdWVz
dC5wYXJhbQorCisgICAgICAgIGRlZiB0ZXN0X2J1Zyh2YWx1ZSk6CisgICAgICAgICAgICBhc3Nl
cnQgdmFsdWUgPT0gdmFsdWUKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQorICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTEwKQorCisKK2Rl
ZiB0ZXN0X2ZpeHR1cmVfYXJnX29yZGVyaW5nKHRlc3RkaXIpOgorICAgICIiIgorICAgIFRoaXMg
dGVzdCBkZXNjcmliZXMgaG93IGZpeHR1cmVzIGluIHRoZSBzYW1lIHNjb3BlIGJ1dCB3aXRob3V0
IGV4cGxpY2l0IGRlcGVuZGVuY2llcworICAgIGJldHdlZW4gdGhlbSBhcmUgY3JlYXRlZC4gV2hp
bGUgdXNlcnMgc2hvdWxkIG1ha2UgZGVwZW5kZW5jaWVzIGV4cGxpY2l0LCBvZnRlbgorICAgIHRo
ZXkgcmVseSBvbiB0aGlzIG9yZGVyLCBzbyB0aGlzIHRlc3QgZXhpc3RzIHRvIGNhdGNoIHJlZ3Jl
c3Npb25zIGluIHRoaXMgcmVnYXJkLgorICAgIFNlZSAjNjU0MCBhbmQgIzY0OTIuCisgICAgIiIi
CisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBv
cnQgcHl0ZXN0CisKKyAgICAgICAgc3VmZml4ZXMgPSBbXQorCisgICAgICAgIEBweXRlc3QuZml4
dHVyZQorICAgICAgICBkZWYgZml4XzEoKTogc3VmZml4ZXMuYXBwZW5kKCJmaXhfMSIpCisgICAg
ICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgZml4XzIoKTogc3VmZml4ZXMuYXBwZW5k
KCJmaXhfMiIpCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgZml4XzMoKTog
c3VmZml4ZXMuYXBwZW5kKCJmaXhfMyIpCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAg
ICBkZWYgZml4XzQoKTogc3VmZml4ZXMuYXBwZW5kKCJmaXhfNCIpCisgICAgICAgIEBweXRlc3Qu
Zml4dHVyZQorICAgICAgICBkZWYgZml4XzUoKTogc3VmZml4ZXMuYXBwZW5kKCJmaXhfNSIpCisK
KyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgIGRlZiBmaXhfY29tYmluZWQoZml4XzEs
IGZpeF8yLCBmaXhfMywgZml4XzQsIGZpeF81KTogcGFzcworCisgICAgICAgIGRlZiB0ZXN0X3N1
ZmZpeChmaXhfY29tYmluZWQpOgorICAgICAgICAgICAgYXNzZXJ0IHN1ZmZpeGVzID09IFsiZml4
XzEiLCAiZml4XzIiLCAiZml4XzMiLCAiZml4XzQiLCAiZml4XzUiXQorICAgICAgICAiIiIKKyAg
ICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12diIsIHN0cihwMSkpCisgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK2RlZiB0ZXN0X3lpZWxkX2ZpeHR1cmVfd2l0aF9u
b192YWx1ZSh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgor
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIEBweXRlc3QuZml4dHVyZShuYW1lPSdjdXN0
b20nKQorICAgICAgICBkZWYgZW1wdHlfeWllbGQoKToKKyAgICAgICAgICAgIGlmIEZhbHNlOgor
ICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgZGVmIHRlc3RfZml4dChjdXN0b20pOgor
ICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICApCisgICAgZXhwZWN0ZWQgPSAiRSAg
ICAgICAgICAgICAgIFZhbHVlRXJyb3I6IGN1c3RvbSBkaWQgbm90IHlpZWxkIGEgdmFsdWUiCisg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29t
ZXMoZXJyb3JzPTEpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFtleHBlY3RlZF0p
CisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuVEVTVFNfRkFJTEVECmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9pbnRlZ3JhdGlvbi5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvcHl0aG9uL2ludGVncmF0aW9uLnB5CmluZGV4IGYzNDhmZGMyOWZkMi4uODU0
NTkzYTY1YzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9pbnRlZ3Jh
dGlvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9pbnRlZ3JhdGlvbi5weQpA
QCAtMSwxNyArMSwyMCBAQAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorCiBpbXBvcnQgcHl0ZXN0
Ci1mcm9tIF9weXRlc3QgaW1wb3J0IHB5dGhvbgogZnJvbSBfcHl0ZXN0IGltcG9ydCBydW5uZXIK
K2Zyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgZ2V0ZnNsaW5lbm8KIAogCi1jbGFzcyBUZXN0T0VK
U0tJVFNwZWNpYWxzKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9mdW5jYXJnX25vbl9weWNvbGxl
Y3RvYmooc2VsZiwgdGVzdGRpcik6ICAjIHJvdWdoIGpzdGVzdHMgdXNhZ2UKK2NsYXNzIFRlc3RP
RUpTS0lUU3BlY2lhbHM6CisgICAgZGVmIHRlc3RfZnVuY2FyZ19ub25fcHljb2xsZWN0b2JqKAor
ICAgICAgICBzZWxmLCB0ZXN0ZGlyLCByZWN3YXJuCisgICAgKSAtPiBOb25lOiAgIyByb3VnaCBq
c3Rlc3RzIHVzYWdlCiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBkZWYgcHl0ZXN0X3B5
Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3IsIG5hbWUsIG9iaik6CiAgICAgICAgICAgICAgICAg
aWYgbmFtZSA9PSAiTXlDbGFzcyI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBNeUNvbGxl
Y3RvcihuYW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
TXlDb2xsZWN0b3IuZnJvbV9wYXJlbnQoY29sbGVjdG9yLCBuYW1lPW5hbWUpCiAgICAgICAgICAg
ICBjbGFzcyBNeUNvbGxlY3RvcihweXRlc3QuQ29sbGVjdG9yKToKICAgICAgICAgICAgICAgICBk
ZWYgcmVwb3J0aW5mbyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZnNw
YXRoLCAzLCAieHl6IgpAQCAtMjksMTkgKzMyLDIwIEBAIGNsYXNzIFRlc3RPRUpTS0lUU3BlY2lh
bHMob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICAjIHRoaXMgaG9vayBmaW5kcyBmdW5jYXJn
IGZhY3RvcmllcwogICAgICAgICByZXAgPSBydW5uZXIuY29sbGVjdF9vbmVfbm9kZShjb2xsZWN0
b3I9bW9kY29sKQotICAgICAgICBjbHNjb2wgPSByZXAucmVzdWx0WzBdCisgICAgICAgICMgVE9E
TzogRG9uJ3QgdHJlYXQgYXMgQW55LgorICAgICAgICBjbHNjb2wgPSByZXAucmVzdWx0WzBdICAj
IHR5cGU6IEFueQogICAgICAgICBjbHNjb2wub2JqID0gbGFtYmRhIGFyZzE6IE5vbmUKICAgICAg
ICAgY2xzY29sLmZ1bmNhcmdzID0ge30KICAgICAgICAgcHl0ZXN0Ll9maWxsZnVuY2FyZ3MoY2xz
Y29sKQogICAgICAgICBhc3NlcnQgY2xzY29sLmZ1bmNhcmdzWyJhcmcxIl0gPT0gNDIKIAotICAg
IGRlZiB0ZXN0X2F1dG91c2VfZml4dHVyZShzZWxmLCB0ZXN0ZGlyKTogICMgcm91Z2gganN0ZXN0
cyB1c2FnZQorICAgIGRlZiB0ZXN0X2F1dG91c2VfZml4dHVyZShzZWxmLCB0ZXN0ZGlyLCByZWN3
YXJuKSAtPiBOb25lOiAgIyByb3VnaCBqc3Rlc3RzIHVzYWdlCiAgICAgICAgIHRlc3RkaXIubWFr
ZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAg
ICAgICAgICAgICBkZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3IsIG5hbWUs
IG9iaik6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAiTXlDbGFzcyI6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBNeUNvbGxlY3RvcihuYW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gTXlDb2xsZWN0b3IuZnJvbV9wYXJlbnQoY29sbGVjdG9y
LCBuYW1lPW5hbWUpCiAgICAgICAgICAgICBjbGFzcyBNeUNvbGxlY3RvcihweXRlc3QuQ29sbGVj
dG9yKToKICAgICAgICAgICAgICAgICBkZWYgcmVwb3J0aW5mbyhzZWxmKToKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuZnNwYXRoLCAzLCAieHl6IgpAQCAtNjIsNDMgKzY2LDQxIEBA
IGNsYXNzIFRlc3RPRUpTS0lUU3BlY2lhbHMob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICAj
IHRoaXMgaG9vayBmaW5kcyBmdW5jYXJnIGZhY3RvcmllcwogICAgICAgICByZXAgPSBydW5uZXIu
Y29sbGVjdF9vbmVfbm9kZShtb2Rjb2wpCi0gICAgICAgIGNsc2NvbCA9IHJlcC5yZXN1bHRbMF0K
KyAgICAgICAgIyBUT0RPOiBEb24ndCB0cmVhdCBhcyBBbnkuCisgICAgICAgIGNsc2NvbCA9IHJl
cC5yZXN1bHRbMF0gICMgdHlwZTogQW55CiAgICAgICAgIGNsc2NvbC5vYmogPSBsYW1iZGE6IE5v
bmUKICAgICAgICAgY2xzY29sLmZ1bmNhcmdzID0ge30KICAgICAgICAgcHl0ZXN0Ll9maWxsZnVu
Y2FyZ3MoY2xzY29sKQogICAgICAgICBhc3NlcnQgbm90IGNsc2NvbC5mdW5jYXJncwogCiAKLWRl
ZiB0ZXN0X3dyYXBwZWRfZ2V0ZnNsaW5lbm8oKToKLQorZGVmIHRlc3Rfd3JhcHBlZF9nZXRmc2xp
bmVubygpIC0+IE5vbmU6CiAgICAgZGVmIGZ1bmMoKToKICAgICAgICAgcGFzcwogCiAgICAgZGVm
IHdyYXAoZik6Ci0gICAgICAgIGZ1bmMuX193cmFwcGVkX18gPSBmCi0gICAgICAgIGZ1bmMucGF0
Y2hpbmdzID0gWyJxd2UiXQorICAgICAgICBmdW5jLl9fd3JhcHBlZF9fID0gZiAgIyB0eXBlOiBp
Z25vcmUKKyAgICAgICAgZnVuYy5wYXRjaGluZ3MgPSBbInF3ZSJdICAjIHR5cGU6IGlnbm9yZQog
ICAgICAgICByZXR1cm4gZnVuYwogCiAgICAgQHdyYXAKICAgICBkZWYgd3JhcHBlZF9mdW5jKHgs
IHksIHopOgogICAgICAgICBwYXNzCiAKLSAgICBmcywgbGluZW5vID0gcHl0aG9uLmdldGZzbGlu
ZW5vKHdyYXBwZWRfZnVuYykKLSAgICBmczIsIGxpbmVubzIgPSBweXRob24uZ2V0ZnNsaW5lbm8o
d3JhcCkKKyAgICBmcywgbGluZW5vID0gZ2V0ZnNsaW5lbm8od3JhcHBlZF9mdW5jKQorICAgIGZz
MiwgbGluZW5vMiA9IGdldGZzbGluZW5vKHdyYXApCiAgICAgYXNzZXJ0IGxpbmVubyA+IGxpbmVu
bzIsICJnZXRmc2xpbmVubyBkb2VzIG5vdCB1bndyYXAgY29ycmVjdGx5IgogCiAKLWNsYXNzIFRl
c3RNb2NrRGVjb3JhdGlvbihvYmplY3QpOgotCi0gICAgZGVmIHRlc3Rfd3JhcHBlZF9nZXRmdW5j
YXJnbmFtZXMoc2VsZik6CitjbGFzcyBUZXN0TW9ja0RlY29yYXRpb246CisgICAgZGVmIHRlc3Rf
d3JhcHBlZF9nZXRmdW5jYXJnbmFtZXMoc2VsZikgLT4gTm9uZToKICAgICAgICAgZnJvbSBfcHl0
ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0ZnVuY2FyZ25hbWVzCiAKICAgICAgICAgZGVmIHdyYXAoZik6
Ci0KICAgICAgICAgICAgIGRlZiBmdW5jKCk6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAg
ICAgICAgICBmdW5jLl9fd3JhcHBlZF9fID0gZgorICAgICAgICAgICAgZnVuYy5fX3dyYXBwZWRf
XyA9IGYgICMgdHlwZTogaWdub3JlCiAgICAgICAgICAgICByZXR1cm4gZnVuYwogCiAgICAgICAg
IEB3cmFwCkBAIC0xMDgsMjIgKzExMCwxNSBAQCBjbGFzcyBUZXN0TW9ja0RlY29yYXRpb24ob2Jq
ZWN0KToKICAgICAgICAgdmFsdWVzID0gZ2V0ZnVuY2FyZ25hbWVzKGYpCiAgICAgICAgIGFzc2Vy
dCB2YWx1ZXMgPT0gKCJ4IiwpCiAKLSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoCi0gICAgICAgIHN0
cmljdD1GYWxzZSwgcmVhc29uPSJnZXRmdW5jYXJnbmFtZXMgYnJlYWtzIGlmIG1vY2sgaXMgaW1w
b3J0ZWQiCi0gICAgKQotICAgIGRlZiB0ZXN0X3dyYXBwZWRfZ2V0ZnVuY2FyZ25hbWVzX3BhdGNo
aW5nKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dldGZ1bmNhcmduYW1lc19wYXRjaGluZyhzZWxmKToK
ICAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0ZnVuY2FyZ25hbWVzCisgICAg
ICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKIAotICAgICAgICBkZWYgd3JhcChm
KToKLQotICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgY2xhc3MgVDoKKyAgICAgICAg
ICAgIGRlZiBvcmlnaW5hbChzZWxmLCB4LCB5LCB6KToKICAgICAgICAgICAgICAgICBwYXNzCiAK
LSAgICAgICAgICAgIGZ1bmMuX193cmFwcGVkX18gPSBmCi0gICAgICAgICAgICBmdW5jLnBhdGNo
aW5ncyA9IFsicXdlIl0KLSAgICAgICAgICAgIHJldHVybiBmdW5jCi0KLSAgICAgICAgQHdyYXAK
KyAgICAgICAgQHBhdGNoLm9iamVjdChULCAib3JpZ2luYWwiKQogICAgICAgICBkZWYgZih4LCB5
LCB6KToKICAgICAgICAgICAgIHBhc3MKIApAQCAtMTMxLDcgKzEyNiw2IEBAIGNsYXNzIFRlc3RN
b2NrRGVjb3JhdGlvbihvYmplY3QpOgogICAgICAgICBhc3NlcnQgdmFsdWVzID09ICgieSIsICJ6
IikKIAogICAgIGRlZiB0ZXN0X3VuaXR0ZXN0X21vY2soc2VsZiwgdGVzdGRpcik6Ci0gICAgICAg
IHB5dGVzdC5pbXBvcnRvcnNraXAoInVuaXR0ZXN0Lm1vY2siKQogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdC5t
b2NrCkBAIC0xNDcsNyArMTQxLDYgQEAgY2xhc3MgVGVzdE1vY2tEZWNvcmF0aW9uKG9iamVjdCk6
CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAgICAgZGVmIHRlc3Rf
dW5pdHRlc3RfbW9ja19hbmRfZml4dHVyZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcHl0ZXN0
LmltcG9ydG9yc2tpcCgidW5pdHRlc3QubW9jayIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IG9zLnBhdGgKQEAgLTE2OSw3
ICsxNjIsNiBAQCBjbGFzcyBUZXN0TW9ja0RlY29yYXRpb24ob2JqZWN0KToKICAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKICAgICBkZWYgdGVzdF91bml0dGVzdF9tb2Nr
X2FuZF9weXBpX21vY2soc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHB5dGVzdC5pbXBvcnRvcnNr
aXAoInVuaXR0ZXN0Lm1vY2siKQogICAgICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJtb2NrIiwg
IjEuMC4xIikKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBA
IC0xOTIsNiArMTg0LDM0IEBAIGNsYXNzIFRlc3RNb2NrRGVjb3JhdGlvbihvYmplY3QpOgogICAg
ICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0
b3V0Y29tZShwYXNzZWQ9MikKIAorICAgIGRlZiB0ZXN0X21vY2tfc2VudGluZWxfY2hlY2tfYWdh
aW5zdF9udW1weV9saWtlKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJFbnN1cmUgb3VyIGZ1
bmN0aW9uIHRoYXQgZGV0ZWN0cyBtb2NrIGFyZ3VtZW50cyBjb21wYXJlcyBhZ2FpbnN0IHNlbnRp
bmVscyB1c2luZworICAgICAgICBpZGVudGl0eSB0byBjaXJjdW12ZW50IG9iamVjdHMgd2hpY2gg
Y2FuJ3QgYmUgY29tcGFyZWQgd2l0aCBlcXVhbGl0eSBhZ2FpbnN0IG90aGVycworICAgICAgICBp
biBhIHRydXRoIGNvbnRleHQsIGxpa2Ugd2l0aCBudW1weSBhcnJheXMgKCM1NjA2KS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgIGR1bW15PSIi
IgorICAgICAgICAgICAgY2xhc3MgTnVtcHlMaWtlOgorICAgICAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1
ZQorICAgICAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJsaWtlIG51bXB5LCBjYW5ub3QgY29tcGFyZSBhZ2Fp
bnN0IG90aGVycyBmb3IgdHJ1dGgiKQorICAgICAgICAgICAgRk9PID0gTnVtcHlMaWtlKDEwKQor
ICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gK
KyAgICAgICAgICAgIGltcG9ydCBkdW1teQorICAgICAgICAgICAgY2xhc3MgVGVzdChvYmplY3Qp
OgorICAgICAgICAgICAgICAgIEBwYXRjaCgiZHVtbXkuRk9PIiwgbmV3PWR1bW15Lk51bXB5TGlr
ZSg1MCkpCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8oc2VsZik6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBkdW1teS5GT08udmFsdWUgPT0gNTAKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCisKICAgICBkZWYgdGVzdF9tb2NrKHNlbGYsIHRl
c3RkaXIpOgogICAgICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJtb2NrIiwgIjEuMC4xIikKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMjY4LDggKzI4OCw3IEBAIGNsYXNzIFRlc3RN
b2NrRGVjb3JhdGlvbihvYmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MSkKIAogCi1jbGFzcyBUZXN0UmVSdW5UZXN0cyhvYmplY3QpOgotCitjbGFzcyBUZXN0UmVS
dW5UZXN0czoKICAgICBkZWYgdGVzdF9yZXJ1bihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVz
dGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKQEAgLTI4OSw3ICszMDgsNyBAQCBj
bGFzcyBUZXN0UmVSdW5UZXN0cyhvYmplY3QpOgogICAgICAgICAgICAgICAgIGdsb2JhbCBjb3Vu
dCwgcmVxCiAgICAgICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3QgIT0gcmVxCiAgICAgICAgICAg
ICAgICAgcmVxID0gcmVxdWVzdAotICAgICAgICAgICAgICAgIHByaW50ICgiZml4IGNvdW50ICVz
IiAlIGNvdW50KQorICAgICAgICAgICAgICAgIHByaW50KCJmaXggY291bnQgJXMiICUgY291bnQp
CiAgICAgICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgICAgICAgZGVmIHRlc3RfZml4KGZp
eCk6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtMzA5LDE0ICszMjgsMTQgQEAgY2xhc3MgVGVz
dFJlUnVuVGVzdHMob2JqZWN0KToKICAgICAgICAgKQogCiAKLWRlZiB0ZXN0X3B5dGVzdGNvbmZp
Z19pc19zZXNzaW9uX3Njb3BlZCgpOgorZGVmIHRlc3RfcHl0ZXN0Y29uZmlnX2lzX3Nlc3Npb25f
c2NvcGVkKCkgLT4gTm9uZToKICAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IHB5dGVz
dGNvbmZpZwogCi0gICAgYXNzZXJ0IHB5dGVzdGNvbmZpZy5fcHl0ZXN0Zml4dHVyZWZ1bmN0aW9u
LnNjb3BlID09ICJzZXNzaW9uIgotCisgICAgbWFya2VyID0gcHl0ZXN0Y29uZmlnLl9weXRlc3Rm
aXh0dXJlZnVuY3Rpb24gICMgdHlwZTogaWdub3JlCisgICAgYXNzZXJ0IG1hcmtlci5zY29wZSA9
PSAic2Vzc2lvbiIKIAotY2xhc3MgVGVzdE5vc2VsaWtlVGVzdEF0dHJpYnV0ZShvYmplY3QpOgog
CitjbGFzcyBUZXN0Tm9zZWxpa2VUZXN0QXR0cmlidXRlOgogICAgIGRlZiB0ZXN0X21vZHVsZV93
aXRoX2dsb2JhbF90ZXN0KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICAgICAiIiIKQEAgLTQwMCw4ICs0MTksOCBAQCBjbGFzcyBUZXN0Tm9zZWxp
a2VUZXN0QXR0cmlidXRlKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBub3QgY2FsbC5pdGVtcwog
CiAKLUBweXRlc3QubWFyay5pc3N1ZTM1MQotY2xhc3MgVGVzdFBhcmFtZXRlcml6ZShvYmplY3Qp
OgorY2xhc3MgVGVzdFBhcmFtZXRlcml6ZToKKyAgICAiIiIjMzUxIiIiCiAKICAgICBkZWYgdGVz
dF9pZGZuX21hcmtlcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vbWV0YWZ1bmMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9tZXRhZnVuYy5weQppbmRleCBlMTgxZDMxMzFmNTcu
LjZiNTkxMDQ1NjdhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vbWV0
YWZ1bmMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vbWV0YWZ1bmMucHkKQEAg
LTEsNDEgKzEsNTUgQEAKLSMgLSotIGNvZGluZzogdXRmLTggLSotCitpbXBvcnQgaXRlcnRvb2xz
CiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCBhdHRyCi1pbXBvcnQgX3B5dGVzdC5fY29k
ZQotaW1wb3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QgaW1wb3J0IHB5dGhvbiwg
Zml4dHVyZXMKK2ltcG9ydCB0ZXh0d3JhcAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0
eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBp
bXBvcnQgSXRlcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBv
cnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1w
b3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAoraW1wb3J0IGF0dHIKIGltcG9y
dCBoeXBvdGhlc2lzCiBmcm9tIGh5cG90aGVzaXMgaW1wb3J0IHN0cmF0ZWdpZXMKIAotUFkzID0g
c3lzLnZlcnNpb25faW5mbyA+PSAoMywgMCkKLQotCi1jbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0
KToKLQotICAgIGRlZiBNZXRhZnVuYyhzZWxmLCBmdW5jLCBjb25maWc9Tm9uZSk6Ci0gICAgICAg
ICMgdGhlIHVuaXQgdGVzdHMgb2YgdGhpcyBjbGFzcyBjaGVjayBpZiB0aGluZ3Mgd29yayBjb3Jy
ZWN0bHkKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdCBpbXBvcnQgZml4dHVyZXMKK2Zyb20g
X3B5dGVzdCBpbXBvcnQgcHl0aG9uCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfZm9ybWF0
X2FyZ3MKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldGZ1bmNhcmduYW1lcworZnJvbSBf
cHl0ZXN0LmNvbXBhdCBpbXBvcnQgTk9UU0VUCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0
IGZhaWwKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgVGVzdGRpcgorZnJvbSBfcHl0ZXN0
LnB5dGhvbiBpbXBvcnQgX2lkdmFsCitmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBpZG1ha2Vy
CisKKworY2xhc3MgVGVzdE1ldGFmdW5jOgorICAgIGRlZiBNZXRhZnVuYyhzZWxmLCBmdW5jLCBj
b25maWc9Tm9uZSkgLT4gcHl0aG9uLk1ldGFmdW5jOgorICAgICAgICAjIFRoZSB1bml0IHRlc3Rz
IG9mIHRoaXMgY2xhc3MgY2hlY2sgaWYgdGhpbmdzIHdvcmsgY29ycmVjdGx5CiAgICAgICAgICMg
b24gdGhlIGZ1bmNhcmcgbGV2ZWwsIHNvIHdlIGRvbid0IG5lZWQgYSBmdWxsIGJsb3duCi0gICAg
ICAgICMgaW5pdGlsaWF6YXRpb24KLSAgICAgICAgY2xhc3MgRml4dHVyZUluZm8ob2JqZWN0KToK
KyAgICAgICAgIyBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgY2xhc3MgRnVuY0ZpeHR1cmVJbmZv
TW9jazoKICAgICAgICAgICAgIG5hbWUyZml4dHVyZWRlZnMgPSBOb25lCiAKICAgICAgICAgICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc19j
bG9zdXJlID0gbmFtZXMKIAogICAgICAgICBAYXR0ci5zCi0gICAgICAgIGNsYXNzIERlZmluaXRp
b25Nb2NrKG9iamVjdCk6CisgICAgICAgIGNsYXNzIERlZmluaXRpb25Nb2NrKHB5dGhvbi5GdW5j
dGlvbkRlZmluaXRpb24pOgogICAgICAgICAgICAgb2JqID0gYXR0ci5pYigpCisgICAgICAgICAg
ICBfbm9kZWlkID0gYXR0ci5pYigpCiAKLSAgICAgICAgbmFtZXMgPSBmaXh0dXJlcy5nZXRmdW5j
YXJnbmFtZXMoZnVuYykKLSAgICAgICAgZml4dHVyZWluZm8gPSBGaXh0dXJlSW5mbyhuYW1lcykK
LSAgICAgICAgZGVmaW5pdGlvbiA9IERlZmluaXRpb25Nb2NrKGZ1bmMpCisgICAgICAgIG5hbWVz
ID0gZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMpCisgICAgICAgIGZpeHR1cmVpbmZvID0gRnVuY0ZpeHR1
cmVJbmZvTW9jayhuYW1lcykgICMgdHlwZTogQW55CisgICAgICAgIGRlZmluaXRpb24gPSBEZWZp
bml0aW9uTW9jay5fY3JlYXRlKGZ1bmMsICJtb2NrOjpub2RlaWQiKSAgIyB0eXBlOiBBbnkKICAg
ICAgICAgcmV0dXJuIHB5dGhvbi5NZXRhZnVuYyhkZWZpbml0aW9uLCBmaXh0dXJlaW5mbywgY29u
ZmlnKQogCi0gICAgZGVmIHRlc3Rfbm9fZnVuY2FyZ3Moc2VsZiwgdGVzdGRpcik6Ci0KKyAgICBk
ZWYgdGVzdF9ub19mdW5jYXJncyhzZWxmKSAtPiBOb25lOgogICAgICAgICBkZWYgZnVuY3Rpb24o
KToKICAgICAgICAgICAgIHBhc3MKIApAQCAtNDMsOCArNTcsNyBAQCBjbGFzcyBUZXN0TWV0YWZ1
bmMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IG5vdCBtZXRhZnVuYy5maXh0dXJlbmFtZXMKICAg
ICAgICAgcmVwcihtZXRhZnVuYy5fY2FsbHMpCiAKLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9iYXNp
YyhzZWxmKToKLQorICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2Jhc2ljKHNlbGYpIC0+IE5vbmU6CiAg
ICAgICAgIGRlZiBmdW5jKGFyZzEsIGFyZzI9InF3ZSIpOgogICAgICAgICAgICAgcGFzcwogCkBA
IC01NCw5NiArNjcsMTI1IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICBh
c3NlcnQgbWV0YWZ1bmMuZnVuY3Rpb24gaXMgZnVuYwogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMu
Y2xzIGlzIE5vbmUKIAotICAgIGRlZiB0ZXN0X2FkZGNhbGxfbm9fYXJncyhzZWxmKToKLQotICAg
ICAgICBkZWYgZnVuYyhhcmcxKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9lcnJvcihzZWxm
KSAtPiBOb25lOgorICAgICAgICBkZWYgZnVuYyh4LCB5KToKICAgICAgICAgICAgIHBhc3MKIAog
ICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMoZnVuYykKLSAgICAgICAgbWV0YWZ1bmMu
YWRkY2FsbCgpCi0gICAgICAgIGFzc2VydCBsZW4obWV0YWZ1bmMuX2NhbGxzKSA9PSAxCi0gICAg
ICAgIGNhbGwgPSBtZXRhZnVuYy5fY2FsbHNbMF0KLSAgICAgICAgYXNzZXJ0IGNhbGwuaWQgPT0g
IjAiCi0gICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihjYWxsLCAicGFyYW0iKQotCi0gICAgZGVm
IHRlc3RfYWRkY2FsbF9pZChzZWxmKToKLQotICAgICAgICBkZWYgZnVuYyhhcmcxKToKLSAgICAg
ICAgICAgIHBhc3MKKyAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0pCisg
ICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBtZXRhZnVuYy5wYXJhbWV0
cml6ZSgieCIsIFs1LCA2XSkpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbGFt
YmRhOiBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieCIsIFs1LCA2XSkpCisgICAgICAgIG1ldGFmdW5j
LnBhcmFtZXRyaXplKCJ5IiwgWzEsIDJdKQorICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJy
b3IsIGxhbWJkYTogbWV0YWZ1bmMucGFyYW1ldHJpemUoInkiLCBbNSwgNl0pKQorICAgICAgICBw
eXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogbWV0YWZ1bmMucGFyYW1ldHJpemUoInki
LCBbNSwgNl0pKQogCi0gICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQotICAg
ICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsICJtZXRhZnVuYy5hZGRjYWxsKGlkPU5vbmUp
IikKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgbWF0Y2g9Il5pZHMgbXVz
dCBiZSBhIGNhbGxhYmxlIG9yIGFuIGl0ZXJhYmxlJCIpOgorICAgICAgICAgICAgbWV0YWZ1bmMu
cGFyYW1ldHJpemUoInkiLCBbNSwgNl0sIGlkcz00MikgICMgdHlwZTogaWdub3JlW2FyZy10eXBl
XQogCi0gICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoaWQ9MSkKLSAgICAgICAgcHl0ZXN0LnJhaXNl
cyhWYWx1ZUVycm9yLCAibWV0YWZ1bmMuYWRkY2FsbChpZD0xKSIpCi0gICAgICAgIHB5dGVzdC5y
YWlzZXMoVmFsdWVFcnJvciwgIm1ldGFmdW5jLmFkZGNhbGwoaWQ9JzEnKSIpCi0gICAgICAgIG1l
dGFmdW5jLmFkZGNhbGwoaWQ9MikKLSAgICAgICAgYXNzZXJ0IGxlbihtZXRhZnVuYy5fY2FsbHMp
ID09IDIKLSAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5pZCA9PSAiMSIKLSAgICAg
ICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1sxXS5pZCA9PSAiMiIKKyAgICBkZWYgdGVzdF9wYXJh
bWV0cml6ZV9lcnJvcl9pdGVyYXRvcihzZWxmKSAtPiBOb25lOgorICAgICAgICBkZWYgZnVuYyh4
KToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgZGVmIHRl
c3RfYWRkY2FsbF9wYXJhbShzZWxmKToKKyAgICAgICAgY2xhc3MgRXhjKEV4Y2VwdGlvbik6Cisg
ICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJF
eGMoZnJvbV9nZW4pIgogCi0gICAgICAgIGRlZiBmdW5jKGFyZzEpOgotICAgICAgICAgICAgcGFz
cworICAgICAgICBkZWYgZ2VuKCkgLT4gSXRlcmF0b3JbVW5pb25baW50LCBOb25lLCBFeGNdXToK
KyAgICAgICAgICAgIHlpZWxkIDAKKyAgICAgICAgICAgIHlpZWxkIE5vbmUKKyAgICAgICAgICAg
IHlpZWxkIEV4YygpCiAKICAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1bmMpCisg
ICAgICAgICMgV2hlbiB0aGUgaW5wdXQgaXMgYW4gaXRlcmF0b3IsIG9ubHkgbGVuKGFyZ3MpIGFy
ZSB0YWtlbiwKKyAgICAgICAgIyBzbyB0aGUgYmFkIEV4YyBpc24ndCByZWFjaGVkLgorICAgICAg
ICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieCIsIFsxLCAyXSwgaWRzPWdlbigpKSAgIyB0eXBlOiBp
Z25vcmVbYXJnLXR5cGVdCisgICAgICAgIGFzc2VydCBbKHguZnVuY2FyZ3MsIHguaWQpIGZvciB4
IGluIG1ldGFmdW5jLl9jYWxsc10gPT0gWworICAgICAgICAgICAgKHsieCI6IDF9LCAiMCIpLAor
ICAgICAgICAgICAgKHsieCI6IDJ9LCAiMiIpLAorICAgICAgICBdCisgICAgICAgIHdpdGggcHl0
ZXN0LnJhaXNlcygKKyAgICAgICAgICAgIGZhaWwuRXhjZXB0aW9uLAorICAgICAgICAgICAgbWF0
Y2g9KAorICAgICAgICAgICAgICAgIHIiSW4gZnVuYzogaWRzIG11c3QgYmUgbGlzdCBvZiBzdHJp
bmcvZmxvYXQvaW50L2Jvb2wsIGZvdW5kOiIKKyAgICAgICAgICAgICAgICByIiBFeGNcKGZyb21f
Z2VuXCkgXCh0eXBlOiA8Y2xhc3MgLipFeGMnPlwpIGF0IGluZGV4IDIiCisgICAgICAgICAgICAp
LAorICAgICAgICApOgorICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwg
MiwgM10sIGlkcz1nZW4oKSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQogCi0gICAgICAgIGNs
YXNzIG9iaihvYmplY3QpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIG1ldGFmdW5jLmFk
ZGNhbGwocGFyYW09b2JqKQotICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHBhcmFtPW9iaikKLSAg
ICAgICAgbWV0YWZ1bmMuYWRkY2FsbChwYXJhbT0xKQotICAgICAgICBhc3NlcnQgbGVuKG1ldGFm
dW5jLl9jYWxscykgPT0gMwotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzBdLmdldHBh
cmFtKCJhcmcxIikgPT0gb2JqCi0gICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uZ2V0
cGFyYW0oImFyZzEiKSA9PSBvYmoKLSAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1syXS5n
ZXRwYXJhbSgiYXJnMSIpID09IDEKLQotICAgIGRlZiB0ZXN0X2FkZGNhbGxfZnVuY2FyZ3Moc2Vs
Zik6Ci0KKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9iYWRfc2NvcGUoc2VsZikgLT4gTm9uZToK
ICAgICAgICAgZGVmIGZ1bmMoeCk6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgbWV0YWZ1
bmMgPSBzZWxmLk1ldGFmdW5jKGZ1bmMpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAg
ICAgICAgICAgIGZhaWwuRXhjZXB0aW9uLAorICAgICAgICAgICAgbWF0Y2g9ciJwYXJhbWV0cml6
ZVwoXCkgY2FsbCBpbiBmdW5jIGdvdCBhbiB1bmV4cGVjdGVkIHNjb3BlIHZhbHVlICdkb2dneSci
LAorICAgICAgICApOgorICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMV0s
IHNjb3BlPSJkb2dneSIpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KIAotICAgICAgICBjbGFz
cyBvYmoob2JqZWN0KToKLSAgICAgICAgICAgIHBhc3MKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6
ZV9yZXF1ZXN0X25hbWUoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAg
IiIiU2hvdyBwcm9wZXIgZXJyb3IgIHdoZW4gJ3JlcXVlc3QnIGlzIHVzZWQgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBwYXJhbWV0cml6ZSAoIzYxODMpIiIiCiAKLSAgICAgICAgbWV0YWZ1bmMuYWRk
Y2FsbChmdW5jYXJncz17IngiOiAyfSkKLSAgICAgICAgbWV0YWZ1bmMuYWRkY2FsbChmdW5jYXJn
cz17IngiOiAzfSkKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24s
ICJtZXRhZnVuYy5hZGRjYWxsKHsneHl6JzogMH0pIikKLSAgICAgICAgYXNzZXJ0IGxlbihtZXRh
ZnVuYy5fY2FsbHMpID09IDIKLSAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5mdW5j
YXJncyA9PSB7IngiOiAyfQotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzFdLmZ1bmNh
cmdzID09IHsieCI6IDN9Ci0gICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihtZXRhZnVuYy5fY2Fs
bHNbMV0sICJwYXJhbSIpCisgICAgICAgIGRlZiBmdW5jKHJlcXVlc3QpOgorICAgICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9l
cnJvcihzZWxmKToKKyAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1bmMpCisgICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAgICAgICAgIGZhaWwuRXhjZXB0aW9uLAorICAg
ICAgICAgICAgbWF0Y2g9ciIncmVxdWVzdCcgaXMgYSByZXNlcnZlZCBuYW1lIGFuZCBjYW5ub3Qg
YmUgdXNlZCBpbiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUiLAorICAgICAgICApOgorICAgICAg
ICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoInJlcXVlc3QiLCBbMV0pCiAKLSAgICAgICAgZGVm
IGZ1bmMoeCwgeSk6Ci0gICAgICAgICAgICBwYXNzCisgICAgZGVmIHRlc3RfZmluZF9wYXJhbWV0
cml6ZWRfc2NvcGUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiVW5pdCB0ZXN0IGZvciBfZmlu
ZF9wYXJhbWV0cml6ZWRfc2NvcGUgKCMzOTQxKS4iIiIKKyAgICAgICAgZnJvbSBfcHl0ZXN0LnB5
dGhvbiBpbXBvcnQgX2ZpbmRfcGFyYW1ldHJpemVkX3Njb3BlCiAKLSAgICAgICAgbWV0YWZ1bmMg
PSBzZWxmLk1ldGFmdW5jKGZ1bmMpCi0gICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4Iiwg
WzEsIDJdKQotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogbWV0YWZ1
bmMucGFyYW1ldHJpemUoIngiLCBbNSwgNl0pKQotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVl
RXJyb3IsIGxhbWJkYTogbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbNSwgNl0pKQotICAgICAg
ICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieSIsIFsxLCAyXSkKLSAgICAgICAgcHl0ZXN0LnJhaXNl
cyhWYWx1ZUVycm9yLCBsYW1iZGE6IG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ5IiwgWzUsIDZdKSkK
LSAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IG1ldGFmdW5jLnBhcmFt
ZXRyaXplKCJ5IiwgWzUsIDZdKSkKKyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBEdW1t
eUZpeHR1cmVEZWY6CisgICAgICAgICAgICBzY29wZSA9IGF0dHIuaWIoKQorCisgICAgICAgIGZp
eHR1cmVzX2RlZnMgPSBjYXN0KAorICAgICAgICAgICAgRGljdFtzdHIsIFNlcXVlbmNlW2ZpeHR1
cmVzLkZpeHR1cmVEZWZbb2JqZWN0XV1dLAorICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAg
ICAgICBzZXNzaW9uX2ZpeD1bRHVtbXlGaXh0dXJlRGVmKCJzZXNzaW9uIildLAorICAgICAgICAg
ICAgICAgIHBhY2thZ2VfZml4PVtEdW1teUZpeHR1cmVEZWYoInBhY2thZ2UiKV0sCisgICAgICAg
ICAgICAgICAgbW9kdWxlX2ZpeD1bRHVtbXlGaXh0dXJlRGVmKCJtb2R1bGUiKV0sCisgICAgICAg
ICAgICAgICAgY2xhc3NfZml4PVtEdW1teUZpeHR1cmVEZWYoImNsYXNzIildLAorICAgICAgICAg
ICAgICAgIGZ1bmNfZml4PVtEdW1teUZpeHR1cmVEZWYoImZ1bmN0aW9uIildLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYmFkX3Njb3BlKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICAjIHVzZSBhcmd1bWVudHMgdG8gZGV0ZXJtaW5lIG5hcnJv
dyBzY29wZTsgdGhlIGNhdXNlIG9mIHRoZSBidWcgaXMgdGhhdCBpdCB3b3VsZCBsb29rIG9uIGFs
bAorICAgICAgICAjIGZpeHR1cmUgZGVmcyBnaXZlbiB0byB0aGUgbWV0aG9kCisgICAgICAgIGRl
ZiBmaW5kX3Njb3BlKGFyZ25hbWVzLCBpbmRpcmVjdCk6CisgICAgICAgICAgICByZXR1cm4gX2Zp
bmRfcGFyYW1ldHJpemVkX3Njb3BlKGFyZ25hbWVzLCBmaXh0dXJlc19kZWZzLCBpbmRpcmVjdD1p
bmRpcmVjdCkKIAotICAgICAgICBkZWYgZnVuYyh4KToKLSAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgYXNzZXJ0IGZpbmRfc2NvcGUoWyJmdW5jX2ZpeCJdLCBpbmRpcmVjdD1UcnVlKSA9PSAiZnVu
Y3Rpb24iCisgICAgICAgIGFzc2VydCBmaW5kX3Njb3BlKFsiY2xhc3NfZml4Il0sIGluZGlyZWN0
PVRydWUpID09ICJjbGFzcyIKKyAgICAgICAgYXNzZXJ0IGZpbmRfc2NvcGUoWyJtb2R1bGVfZml4
Il0sIGluZGlyZWN0PVRydWUpID09ICJtb2R1bGUiCisgICAgICAgIGFzc2VydCBmaW5kX3Njb3Bl
KFsicGFja2FnZV9maXgiXSwgaW5kaXJlY3Q9VHJ1ZSkgPT0gInBhY2thZ2UiCisgICAgICAgIGFz
c2VydCBmaW5kX3Njb3BlKFsic2Vzc2lvbl9maXgiXSwgaW5kaXJlY3Q9VHJ1ZSkgPT0gInNlc3Np
b24iCiAKLSAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1bmMpCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgWzFdLCBzY29wZT0iZG9n
Z3kiKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyB2ZToKLSAgICAgICAgICAgIGFzc2Vy
dCAiaGFzIGFuIHVuc3VwcG9ydGVkIHNjb3BlIHZhbHVlICdkb2dneSciIGluIHN0cih2ZSkKKyAg
ICAgICAgYXNzZXJ0IGZpbmRfc2NvcGUoWyJjbGFzc19maXgiLCAiZnVuY19maXgiXSwgaW5kaXJl
Y3Q9VHJ1ZSkgPT0gImZ1bmN0aW9uIgorICAgICAgICBhc3NlcnQgZmluZF9zY29wZShbImZ1bmNf
Zml4IiwgInNlc3Npb25fZml4Il0sIGluZGlyZWN0PVRydWUpID09ICJmdW5jdGlvbiIKKyAgICAg
ICAgYXNzZXJ0IGZpbmRfc2NvcGUoWyJzZXNzaW9uX2ZpeCIsICJjbGFzc19maXgiXSwgaW5kaXJl
Y3Q9VHJ1ZSkgPT0gImNsYXNzIgorICAgICAgICBhc3NlcnQgZmluZF9zY29wZShbInBhY2thZ2Vf
Zml4IiwgInNlc3Npb25fZml4Il0sIGluZGlyZWN0PVRydWUpID09ICJwYWNrYWdlIgorICAgICAg
ICBhc3NlcnQgZmluZF9zY29wZShbIm1vZHVsZV9maXgiLCAic2Vzc2lvbl9maXgiXSwgaW5kaXJl
Y3Q9VHJ1ZSkgPT0gIm1vZHVsZSIKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2FuZF9pZChz
ZWxmKToKKyAgICAgICAgIyB3aGVuIGluZGlyZWN0IGlzIEZhbHNlIG9yIGlzIG5vdCBmb3IgYWxs
IHNjb3BlcywgYWx3YXlzIHVzZSBmdW5jdGlvbgorICAgICAgICBhc3NlcnQgZmluZF9zY29wZShb
InNlc3Npb25fZml4IiwgIm1vZHVsZV9maXgiXSwgaW5kaXJlY3Q9RmFsc2UpID09ICJmdW5jdGlv
biIKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIGZpbmRfc2NvcGUoWyJzZXNzaW9uX2Zp
eCIsICJtb2R1bGVfZml4Il0sIGluZGlyZWN0PVsibW9kdWxlX2ZpeCJdKQorICAgICAgICAgICAg
PT0gImZ1bmN0aW9uIgorICAgICAgICApCisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICBm
aW5kX3Njb3BlKAorICAgICAgICAgICAgICAgIFsic2Vzc2lvbl9maXgiLCAibW9kdWxlX2ZpeCJd
LCBpbmRpcmVjdD1bInNlc3Npb25fZml4IiwgIm1vZHVsZV9maXgiXQorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgPT0gIm1vZHVsZSIKKyAgICAgICAgKQogCisgICAgZGVmIHRlc3RfcGFyYW1l
dHJpemVfYW5kX2lkKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGRlZiBmdW5jKHgsIHkpOgogICAg
ICAgICAgICAgcGFzcwogCkBAIC0xNTQsNDMgKzE5Niw1NiBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMo
b2JqZWN0KToKICAgICAgICAgaWRzID0gW3guaWQgZm9yIHggaW4gbWV0YWZ1bmMuX2NhbGxzXQog
ICAgICAgICBhc3NlcnQgaWRzID09IFsiYmFzaWMtYWJjIiwgImJhc2ljLWRlZiIsICJhZHZhbmNl
ZC1hYmMiLCAiYWR2YW5jZWQtZGVmIl0KIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2FuZF9p
ZF91bmljb2RlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2FuZF9pZF91bmljb2Rl
KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICIiIkFsbG93IHVuaWNvZGUgc3RyaW5ncyBmb3IgImlk
cyIgcGFyYW1ldGVyIGluIFB5dGhvbiAyICgjIzE5MDUpIiIiCiAKICAgICAgICAgZGVmIGZ1bmMo
eCk6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5j
KGZ1bmMpCi0gICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgWzEsIDJdLCBpZHM9W3Ui
YmFzaWMiLCB1ImFkdmFuY2VkIl0pCisgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4Iiwg
WzEsIDJdLCBpZHM9WyJiYXNpYyIsICJhZHZhbmNlZCJdKQogICAgICAgICBpZHMgPSBbeC5pZCBm
b3IgeCBpbiBtZXRhZnVuYy5fY2FsbHNdCi0gICAgICAgIGFzc2VydCBpZHMgPT0gW3UiYmFzaWMi
LCB1ImFkdmFuY2VkIl0KLQotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfd3JvbmdfbnVt
YmVyX29mX2lkcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgYXNzZXJ0IGlkcyA9PSBbImJhc2lj
IiwgImFkdmFuY2VkIl0KIAorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfd3JvbmdfbnVt
YmVyX29mX2lkcyhzZWxmKSAtPiBOb25lOgogICAgICAgICBkZWYgZnVuYyh4LCB5KToKICAgICAg
ICAgICAgIHBhc3MKIAogICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMoZnVuYykKIAot
ICAgICAgICBweXRlc3QucmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgbGFtYmRhOiBt
ZXRhZnVuYy5wYXJhbWV0cml6ZSgieCIsIFsxLCAyXSwgaWRzPVsiYmFzaWMiXSkKLSAgICAgICAg
KQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoZmFpbC5FeGNlcHRpb24pOgorICAgICAgICAg
ICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0sIGlkcz1bImJhc2ljIl0pCiAKLSAg
ICAgICAgcHl0ZXN0LnJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsCi0gICAgICAgICAg
ICBsYW1iZGE6IG1ldGFmdW5jLnBhcmFtZXRyaXplKAorICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoZmFpbC5FeGNlcHRpb24pOgorICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoCiAg
ICAgICAgICAgICAgICAgKCJ4IiwgInkiKSwgWygiYWJjIiwgImRlZiIpLCAoImdoaSIsICJqa2wi
KV0sIGlkcz1bIm9uZSJdCi0gICAgICAgICAgICApLAotICAgICAgICApCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pZHNfaXRlcmF0b3Jfd2l0aG91dF9tYXJrKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBmdW5jKHgsIHkpOgorICAgICAgICAgICAgcGFzcwor
CisgICAgICAgIGl0ID0gaXRlcnRvb2xzLmNvdW50KCkKIAotICAgIEBweXRlc3QubWFyay5pc3N1
ZTUxMAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2VtcHR5X2xpc3Qoc2VsZik6CisgICAgICAg
IG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQorICAgICAgICBtZXRhZnVuYy5wYXJhbWV0
cml6ZSgieCIsIFsxLCAyXSwgaWRzPWl0KQorICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgi
eSIsIFszLCA0XSwgaWRzPWl0KQorICAgICAgICBpZHMgPSBbeC5pZCBmb3IgeCBpbiBtZXRhZnVu
Yy5fY2FsbHNdCisgICAgICAgIGFzc2VydCBpZHMgPT0gWyIwLTIiLCAiMC0zIiwgIjEtMiIsICIx
LTMiXQorCisgICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQorICAgICAgICBt
ZXRhZnVuYy5wYXJhbWV0cml6ZSgieCIsIFsxLCAyXSwgaWRzPWl0KQorICAgICAgICBtZXRhZnVu
Yy5wYXJhbWV0cml6ZSgieSIsIFszLCA0XSwgaWRzPWl0KQorICAgICAgICBpZHMgPSBbeC5pZCBm
b3IgeCBpbiBtZXRhZnVuYy5fY2FsbHNdCisgICAgICAgIGFzc2VydCBpZHMgPT0gWyI0LTYiLCAi
NC03IiwgIjUtNiIsICI1LTciXQorCisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfZW1wdHlfbGlz
dChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIjNTEwIiIiCiAKICAgICAgICAgZGVmIGZ1bmMo
eSk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgY2xhc3MgTW9ja0NvbmZpZyhvYmplY3Qp
OgotCisgICAgICAgIGNsYXNzIE1vY2tDb25maWc6CiAgICAgICAgICAgICBkZWYgZ2V0aW5pKHNl
bGYsIG5hbWUpOgogICAgICAgICAgICAgICAgIHJldHVybiAiIgogCkBAIC0yMDUsMTQgKzI2MCwx
MyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgbWV0YWZ1bmMucGFyYW1l
dHJpemUoInkiLCBbXSkKICAgICAgICAgYXNzZXJ0ICJza2lwIiA9PSBtZXRhZnVuYy5fY2FsbHNb
MF0ubWFya3NbMF0ubmFtZQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfd2l0aF91c2Vyb2Jq
ZWN0cyhzZWxmKToKLQorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfdXNlcm9iamVjdHMo
c2VsZikgLT4gTm9uZToKICAgICAgICAgZGVmIGZ1bmMoeCwgeSk6CiAgICAgICAgICAgICBwYXNz
CiAKICAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1bmMpCiAKLSAgICAgICAgY2xh
c3MgQShvYmplY3QpOgorICAgICAgICBjbGFzcyBBOgogICAgICAgICAgICAgcGFzcwogCiAgICAg
ICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgW0EoKSwgQSgpXSkKQEAgLTIyNiw2MyArMjgw
LDc3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgIEBoeXBvdGhlc2lzLnNldHRp
bmdzKAogICAgICAgICBkZWFkbGluZT00MDAuMAogICAgICkgICMgdmVyeSBjbG9zZSB0byBzdGQg
ZGVhZGxpbmUgYW5kIENJIGJveGVzIGFyZSBub3QgcmVsaWFibGUgaW4gQ1BVIHBvd2VyCi0gICAg
ZGVmIHRlc3RfaWR2YWxfaHlwb3RoZXNpcyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGZyb20gX3B5
dGVzdC5weXRob24gaW1wb3J0IF9pZHZhbAotCi0gICAgICAgIGVzY2FwZWQgPSBfaWR2YWwodmFs
dWUsICJhIiwgNiwgTm9uZSkKKyAgICBkZWYgdGVzdF9pZHZhbF9oeXBvdGhlc2lzKHNlbGYsIHZh
bHVlKSAtPiBOb25lOgorICAgICAgICBlc2NhcGVkID0gX2lkdmFsKHZhbHVlLCAiYSIsIDYsIE5v
bmUsIG5vZGVpZD1Ob25lLCBjb25maWc9Tm9uZSkKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
ZXNjYXBlZCwgc3RyKQotICAgICAgICBpZiBQWTM6Ci0gICAgICAgICAgICBlc2NhcGVkLmVuY29k
ZSgiYXNjaWkiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXNjYXBlZC5kZWNvZGUoImFz
Y2lpIikKKyAgICAgICAgZXNjYXBlZC5lbmNvZGUoImFzY2lpIikKIAotICAgIGRlZiB0ZXN0X3Vu
aWNvZGVfaWR2YWwoc2VsZik6Ci0gICAgICAgICIiIlRoaXMgdGVzdHMgdGhhdCBVbmljb2RlIHN0
cmluZ3Mgb3V0c2lkZSB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBnZXQKKyAgICBkZWYgdGVzdF91
bmljb2RlX2lkdmFsKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIlRlc3QgdGhhdCBVbmljb2Rl
IHN0cmluZ3Mgb3V0c2lkZSB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBnZXQKICAgICAgICAgZXNj
YXBlZCwgdXNpbmcgYnl0ZSBlc2NhcGVzIGlmIHRoZXkncmUgaW4gdGhhdCByYW5nZSBvciB1bmlj
b2RlCiAgICAgICAgIGVzY2FwZXMgaWYgdGhleSdyZSBub3QuCiAKICAgICAgICAgIiIiCi0gICAg
ICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IF9pZHZhbAotCiAgICAgICAgIHZhbHVlcyA9
IFsKLSAgICAgICAgICAgICh1IiIsICIiKSwKLSAgICAgICAgICAgICh1ImFzY2lpIiwgImFzY2lp
IiksCi0gICAgICAgICAgICAodSJhw6fDo28iLCAiYVxceGU3XFx4ZTNvIiksCi0gICAgICAgICAg
ICAodSJqb3PDqUBibGFoLmNvbSIsICJqb3NcXHhlOUBibGFoLmNvbSIpLAorICAgICAgICAgICAg
KCIiLCByIiIpLAorICAgICAgICAgICAgKCJhc2NpaSIsIHIiYXNjaWkiKSwKKyAgICAgICAgICAg
ICgiYcOnw6NvIiwgciJhXHhlN1x4ZTNvIiksCisgICAgICAgICAgICAoImpvc8OpQGJsYWguY29t
IiwgciJqb3NceGU5QGJsYWguY29tIiksCiAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAg
dSLOtM6/zrouzrnOvM6uQM+AzrHPgc6szrTOtc65zrPOvM6xLs60zr/Ous65zrzOriIsCi0gICAg
ICAgICAgICAgICAgIlxcdTAzYjRcXHUwM2JmXFx1MDNiYS5cXHUwM2I5XFx1MDNiY1xcdTAzYWVA
XFx1MDNjMFxcdTAzYjFcXHUwM2MxXFx1MDNhY1xcdTAzYjRcXHUwM2I1XFx1MDNiOVxcdTAzYjMi
Ci0gICAgICAgICAgICAgICAgIlxcdTAzYmNcXHUwM2IxLlxcdTAzYjRcXHUwM2JmXFx1MDNiYVxc
dTAzYjlcXHUwM2JjXFx1MDNhZSIsCisgICAgICAgICAgICAgICAgciLOtM6/zrouzrnOvM6uQM+A
zrHPgc6szrTOtc65zrPOvM6xLs60zr/Ous65zrzOriIsCisgICAgICAgICAgICAgICAgciJcdTAz
YjRcdTAzYmZcdTAzYmEuXHUwM2I5XHUwM2JjXHUwM2FlQFx1MDNjMFx1MDNiMVx1MDNjMVx1MDNh
Y1x1MDNiNFx1MDNiNVx1MDNiOVx1MDNiMyIKKyAgICAgICAgICAgICAgICByIlx1MDNiY1x1MDNi
MS5cdTAzYjRcdTAzYmZcdTAzYmFcdTAzYjlcdTAzYmNcdTAzYWUiLAogICAgICAgICAgICAgKSwK
ICAgICAgICAgXQogICAgICAgICBmb3IgdmFsLCBleHBlY3RlZCBpbiB2YWx1ZXM6Ci0gICAgICAg
ICAgICBhc3NlcnQgX2lkdmFsKHZhbCwgImEiLCA2LCBOb25lKSA9PSBleHBlY3RlZAotCi0gICAg
ZGVmIHRlc3RfYnl0ZXNfaWR2YWwoc2VsZik6Ci0gICAgICAgICIiInVuaXR0ZXN0IGZvciB0aGUg
ZXhwZWN0ZWQgYmVoYXZpb3IgdG8gb2J0YWluIGlkcyBmb3IgcGFyYW1ldHJpemVkCi0gICAgICAg
IGJ5dGVzIHZhbHVlczoKLSAgICAgICAgLSBweXRob24yOiBub24tYXNjaWkgc3RyaW5ncyBhcmUg
Y29uc2lkZXJlZCBieXRlcyBhbmQgZm9ybWF0dGVkIHVzaW5nCi0gICAgICAgICJiaW5hcnkgZXNj
YXBlIiwgd2hlcmUgYW55IGJ5dGUgPCAxMjcgaXMgZXNjYXBlZCBpbnRvIGl0cyBoZXggZm9ybS4K
LSAgICAgICAgLSBweXRob24zOiBieXRlcyBvYmplY3RzIGFyZSBhbHdheXMgZXNjYXBlZCB1c2lu
ZyAiYmluYXJ5IGVzY2FwZSIuCi0gICAgICAgICIiIgotICAgICAgICBmcm9tIF9weXRlc3QucHl0
aG9uIGltcG9ydCBfaWR2YWwKKyAgICAgICAgICAgIGFzc2VydCBfaWR2YWwodmFsLCAiYSIsIDYs
IE5vbmUsIG5vZGVpZD1Ob25lLCBjb25maWc9Tm9uZSkgPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0
ZXN0X3VuaWNvZGVfaWR2YWxfd2l0aF9jb25maWcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIi
VW5pdCB0ZXN0IGZvciBleHBlY3RlZCBiZWhhdmlvciB0byBvYnRhaW4gaWRzIHdpdGgKKyAgICAg
ICAgZGlzYWJsZV90ZXN0X2lkX2VzY2FwaW5nX2FuZF9mb3JmZWl0X2FsbF9yaWdodHNfdG9fY29t
bXVuaXR5X3N1cHBvcnQKKyAgICAgICAgb3B0aW9uICgjNTI5NCkuIiIiCisKKyAgICAgICAgY2xh
c3MgTW9ja0NvbmZpZzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgor
ICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisKKyAgICAgICAgICAgIEBwcm9w
ZXJ0eQorICAgICAgICAgICAgZGVmIGhvb2soc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYKIAorICAgICAgICAgICAgZGVmIHB5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKHNlbGYs
ICoqa3cpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIGdldGluaShz
ZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25maWdbbmFtZV0KKwor
ICAgICAgICBvcHRpb24gPSAiZGlzYWJsZV90ZXN0X2lkX2VzY2FwaW5nX2FuZF9mb3JmZWl0X2Fs
bF9yaWdodHNfdG9fY29tbXVuaXR5X3N1cHBvcnQiCisKKyAgICAgICAgdmFsdWVzID0gWworICAg
ICAgICAgICAgKCJhw6fDo28iLCBNb2NrQ29uZmlnKHtvcHRpb246IFRydWV9KSwgImHDp8OjbyIp
LAorICAgICAgICAgICAgKCJhw6fDo28iLCBNb2NrQ29uZmlnKHtvcHRpb246IEZhbHNlfSksICJh
XFx4ZTdcXHhlM28iKSwKKyAgICAgICAgXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgQW55LCBz
dHJdXQorICAgICAgICBmb3IgdmFsLCBjb25maWcsIGV4cGVjdGVkIGluIHZhbHVlczoKKyAgICAg
ICAgICAgIGFjdHVhbCA9IF9pZHZhbCh2YWwsICJhIiwgNiwgTm9uZSwgbm9kZWlkPU5vbmUsIGNv
bmZpZz1jb25maWcpCisgICAgICAgICAgICBhc3NlcnQgYWN0dWFsID09IGV4cGVjdGVkCisKKyAg
ICBkZWYgdGVzdF9ieXRlc19pZHZhbChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJVbml0IHRl
c3QgZm9yIHRoZSBleHBlY3RlZCBiZWhhdmlvciB0byBvYnRhaW4gaWRzIGZvciBwYXJhbWV0cml6
ZWQKKyAgICAgICAgYnl0ZXMgdmFsdWVzOiBieXRlcyBvYmplY3RzIGFyZSBhbHdheXMgZXNjYXBl
ZCB1c2luZyAiYmluYXJ5IGVzY2FwZSIuIiIiCiAgICAgICAgIHZhbHVlcyA9IFsKLSAgICAgICAg
ICAgIChiIiIsICIiKSwKLSAgICAgICAgICAgIChiIlx4YzNceGI0XHhmZlx4ZTQiLCAiXFx4YzNc
XHhiNFxceGZmXFx4ZTQiKSwKLSAgICAgICAgICAgIChiImFzY2lpIiwgImFzY2lpIiksCi0gICAg
ICAgICAgICAodSLOsc+BzqwiLmVuY29kZSgidXRmLTgiKSwgIlxceGNlXFx4YjFcXHhjZlxceDgx
XFx4Y2VcXHhhYyIpLAorICAgICAgICAgICAgKGIiIiwgciIiKSwKKyAgICAgICAgICAgIChiIlx4
YzNceGI0XHhmZlx4ZTQiLCByIlx4YzNceGI0XHhmZlx4ZTQiKSwKKyAgICAgICAgICAgIChiImFz
Y2lpIiwgciJhc2NpaSIpLAorICAgICAgICAgICAgKCLOsc+BzqwiLmVuY29kZSgpLCByIlx4Y2Vc
eGIxXHhjZlx4ODFceGNlXHhhYyIpLAogICAgICAgICBdCiAgICAgICAgIGZvciB2YWwsIGV4cGVj
dGVkIGluIHZhbHVlczoKLSAgICAgICAgICAgIGFzc2VydCBfaWR2YWwodmFsLCAiYSIsIDYsIE5v
bmUpID09IGV4cGVjdGVkCisgICAgICAgICAgICBhc3NlcnQgX2lkdmFsKHZhbCwgImEiLCA2LCBp
ZGZuPU5vbmUsIG5vZGVpZD1Ob25lLCBjb25maWc9Tm9uZSkgPT0gZXhwZWN0ZWQKIAotICAgIGRl
ZiB0ZXN0X2NsYXNzX29yX2Z1bmN0aW9uX2lkdmFsKHNlbGYpOgotICAgICAgICAiIiJ1bml0dGVz
dCBmb3IgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIHRvIG9idGFpbiBpZHMgZm9yIHBhcmFtZXRyaXpl
ZAotICAgICAgICB2YWx1ZXMgdGhhdCBhcmUgY2xhc3NlcyBvciBmdW5jdGlvbnM6IHRoZWlyIF9f
bmFtZV9fLgotICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQg
X2lkdmFsCisgICAgZGVmIHRlc3RfY2xhc3Nfb3JfZnVuY3Rpb25faWR2YWwoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgIiIiVW5pdCB0ZXN0IGZvciB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgdG8gb2J0
YWluIGlkcyBmb3IgcGFyYW1ldHJpemVkCisgICAgICAgIHZhbHVlcyB0aGF0IGFyZSBjbGFzc2Vz
IG9yIGZ1bmN0aW9uczogdGhlaXIgX19uYW1lX18uIiIiCiAKLSAgICAgICAgY2xhc3MgVGVzdENs
YXNzKG9iamVjdCk6CisgICAgICAgIGNsYXNzIFRlc3RDbGFzczoKICAgICAgICAgICAgIHBhc3MK
IAogICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgpAQCAtMjkwLDEyICszNTgsMTggQEAgY2xh
c3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAKICAgICAgICAgdmFsdWVzID0gWyhUZXN0Q2xhc3Ms
ICJUZXN0Q2xhc3MiKSwgKHRlc3RfZnVuY3Rpb24sICJ0ZXN0X2Z1bmN0aW9uIildCiAgICAgICAg
IGZvciB2YWwsIGV4cGVjdGVkIGluIHZhbHVlczoKLSAgICAgICAgICAgIGFzc2VydCBfaWR2YWwo
dmFsLCAiYSIsIDYsIE5vbmUpID09IGV4cGVjdGVkCisgICAgICAgICAgICBhc3NlcnQgX2lkdmFs
KHZhbCwgImEiLCA2LCBOb25lLCBub2RlaWQ9Tm9uZSwgY29uZmlnPU5vbmUpID09IGV4cGVjdGVk
CisKKyAgICBkZWYgdGVzdF9ub3RzZXRfaWR2YWwoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIi
VGVzdCB0aGF0IGEgTk9UU0VUIHZhbHVlICh1c2VkIGJ5IGFuIGVtcHR5IHBhcmFtZXRlcnNldCkg
Z2VuZXJhdGVzCisgICAgICAgIGEgcHJvcGVyIElELgogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3Vl
MjUwCi0gICAgZGVmIHRlc3RfaWRtYWtlcl9hdXRvbmFtZShzZWxmKToKLSAgICAgICAgZnJvbSBf
cHl0ZXN0LnB5dGhvbiBpbXBvcnQgaWRtYWtlcgorICAgICAgICBSZWdyZXNzaW9uIHRlc3QgZm9y
ICM3Njg2LgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IF9pZHZhbChOT1RTRVQsICJhIiwg
MCwgTm9uZSwgbm9kZWlkPU5vbmUsIGNvbmZpZz1Ob25lKSA9PSAiYTAiCiAKKyAgICBkZWYgdGVz
dF9pZG1ha2VyX2F1dG9uYW1lKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIiMyNTAiIiIKICAg
ICAgICAgcmVzdWx0ID0gaWRtYWtlcigKICAgICAgICAgICAgICgiYSIsICJiIiksIFtweXRlc3Qu
cGFyYW0oInN0cmluZyIsIDEuMCksIHB5dGVzdC5wYXJhbSgic3QtcmluZyIsIDIuMCldCiAgICAg
ICAgICkKQEAgLTMwNiwyMSArMzgwLDE0IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgog
ICAgICAgICApCiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWyJhMC0xLjAiLCAiYTEtYjEiXQog
ICAgICAgICAjIHVuaWNvZGUgbWl4aW5nLCBpc3N1ZTI1MAotICAgICAgICByZXN1bHQgPSBpZG1h
a2VyKAotICAgICAgICAgICAgKHB5LmJ1aWx0aW4uX3RvdGV4dCgiYSIpLCAiYiIpLCBbcHl0ZXN0
LnBhcmFtKHt9LCBiIlx4YzNceGI0IildCi0gICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gaWRt
YWtlcigoImEiLCAiYiIpLCBbcHl0ZXN0LnBhcmFtKHt9LCBiIlx4YzNceGI0IildKQogICAgICAg
ICBhc3NlcnQgcmVzdWx0ID09IFsiYTAtXFx4YzNcXHhiNCJdCiAKLSAgICBkZWYgdGVzdF9pZG1h
a2VyX3dpdGhfYnl0ZXNfcmVnZXgoc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24g
aW1wb3J0IGlkbWFrZXIKLQorICAgIGRlZiB0ZXN0X2lkbWFrZXJfd2l0aF9ieXRlc19yZWdleChz
ZWxmKSAtPiBOb25lOgogICAgICAgICByZXN1bHQgPSBpZG1ha2VyKCgiYSIpLCBbcHl0ZXN0LnBh
cmFtKHJlLmNvbXBpbGUoYiJmb28iKSwgMS4wKV0pCiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0g
WyJmb28iXQogCi0gICAgZGVmIHRlc3RfaWRtYWtlcl9uYXRpdmVfc3RyaW5ncyhzZWxmKToKLSAg
ICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgaWRtYWtlcgotCi0gICAgICAgIHRvdGV4
dCA9IHB5LmJ1aWx0aW4uX3RvdGV4dAorICAgIGRlZiB0ZXN0X2lkbWFrZXJfbmF0aXZlX3N0cmlu
Z3Moc2VsZikgLT4gTm9uZToKICAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKICAgICAgICAgICAg
ICgiYSIsICJiIiksCiAgICAgICAgICAgICBbCkBAIC0zMzUsNDIgKzQwMiw2MSBAQCBjbGFzcyBU
ZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oezd9LCBz
ZXQoInNldmVuIikpLAogICAgICAgICAgICAgICAgIHB5dGVzdC5wYXJhbSh0dXBsZSgiZWlnaHQi
KSwgKDgsIC04LCA4KSksCiAgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKGIiXHhjM1x4YjQi
LCBiIm5hbWUiKSwKLSAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oYiJceGMzXHhiNCIsIHRv
dGV4dCgib3RoZXIiKSksCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKGIiXHhjM1x4YjQi
LCAib3RoZXIiKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0ICgK
LSAgICAgICAgICAgIHJlc3VsdAotICAgICAgICAgICAgPT0gWwotICAgICAgICAgICAgICAgICIx
LjAtLTEuMSIsCi0gICAgICAgICAgICAgICAgIjItLTIwMiIsCi0gICAgICAgICAgICAgICAgInRo
cmVlLXRocmVlIGh1bmRyZWQiLAotICAgICAgICAgICAgICAgICJUcnVlLUZhbHNlIiwKLSAgICAg
ICAgICAgICAgICAiTm9uZS1Ob25lIiwKLSAgICAgICAgICAgICAgICAiZm9vLWJhciIsCi0gICAg
ICAgICAgICAgICAgInN0ci1pbnQiLAotICAgICAgICAgICAgICAgICJhNy1iNyIsCi0gICAgICAg
ICAgICAgICAgImE4LWI4IiwKLSAgICAgICAgICAgICAgICAiYTktYjkiLAotICAgICAgICAgICAg
ICAgICJcXHhjM1xceGI0LW5hbWUiLAotICAgICAgICAgICAgICAgICJcXHhjM1xceGI0LW90aGVy
IiwKLSAgICAgICAgICAgIF0KKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbCisgICAgICAgICAg
ICAiMS4wLS0xLjEiLAorICAgICAgICAgICAgIjItLTIwMiIsCisgICAgICAgICAgICAidGhyZWUt
dGhyZWUgaHVuZHJlZCIsCisgICAgICAgICAgICAiVHJ1ZS1GYWxzZSIsCisgICAgICAgICAgICAi
Tm9uZS1Ob25lIiwKKyAgICAgICAgICAgICJmb28tYmFyIiwKKyAgICAgICAgICAgICJzdHItaW50
IiwKKyAgICAgICAgICAgICJhNy1iNyIsCisgICAgICAgICAgICAiYTgtYjgiLAorICAgICAgICAg
ICAgImE5LWI5IiwKKyAgICAgICAgICAgICJcXHhjM1xceGI0LW5hbWUiLAorICAgICAgICAgICAg
IlxceGMzXFx4YjQtb3RoZXIiLAorICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9pZG1ha2VyX25v
bl9wcmludGFibGVfY2hhcmFjdGVycyhzZWxmKSAtPiBOb25lOgorICAgICAgICByZXN1bHQgPSBp
ZG1ha2VyKAorICAgICAgICAgICAgKCJzIiwgIm4iKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICBweXRlc3QucGFyYW0oIlx4MDAiLCAxKSwKKyAgICAgICAgICAgICAgICBweXRlc3Qu
cGFyYW0oIlx4MDUiLCAyKSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oYiJceDAwIiwg
MyksCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKGIiXHgwNSIsIDQpLAorICAgICAgICAg
ICAgICAgIHB5dGVzdC5wYXJhbSgiXHQiLCA1KSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFy
YW0oYiJcdCIsIDYpLAorICAgICAgICAgICAgXSwKICAgICAgICAgKQorICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IFsiXFx4MDAtMSIsICJcXHgwNS0yIiwgIlxceDAwLTMiLCAiXFx4MDUtNCIsICJc
XHQtNSIsICJcXHQtNiJdCiAKLSAgICBkZWYgdGVzdF9pZG1ha2VyX2VudW0oc2VsZik6Ci0gICAg
ICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IGlkbWFrZXIKKyAgICBkZWYgdGVzdF9pZG1h
a2VyX21hbnVhbF9pZHNfbXVzdF9iZV9wcmludGFibGUoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
cmVzdWx0ID0gaWRtYWtlcigKKyAgICAgICAgICAgICgicyIsKSwKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICBweXRlc3QucGFyYW0oIngwMCIsIGlkPSJoZWxsbyBceDAwIiksCisgICAg
ICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCJ4MDUiLCBpZD0iaGVsbG8gXHgwNSIpLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFsiaGVsbG8gXFx4
MDAiLCAiaGVsbG8gXFx4MDUiXQogCisgICAgZGVmIHRlc3RfaWRtYWtlcl9lbnVtKHNlbGYpIC0+
IE5vbmU6CiAgICAgICAgIGVudW0gPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJlbnVtIikKICAgICAg
ICAgZSA9IGVudW0uRW51bSgiRm9vIiwgIm9uZSwgdHdvIikKICAgICAgICAgcmVzdWx0ID0gaWRt
YWtlcigoImEiLCAiYiIpLCBbcHl0ZXN0LnBhcmFtKGUub25lLCBlLnR3byldKQogICAgICAgICBh
c3NlcnQgcmVzdWx0ID09IFsiRm9vLm9uZS1Gb28udHdvIl0KIAotICAgIEBweXRlc3QubWFyay5p
c3N1ZTM1MQotICAgIGRlZiB0ZXN0X2lkbWFrZXJfaWRmbihzZWxmKToKLSAgICAgICAgZnJvbSBf
cHl0ZXN0LnB5dGhvbiBpbXBvcnQgaWRtYWtlcgorICAgIGRlZiB0ZXN0X2lkbWFrZXJfaWRmbihz
ZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIjMzUxIiIiCiAKLSAgICAgICAgZGVmIGlkcyh2YWwp
OgorICAgICAgICBkZWYgaWRzKHZhbDogb2JqZWN0KSAtPiBPcHRpb25hbFtzdHJdOgogICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZSh2YWwsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlcHIodmFsKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICByZXN1bHQg
PSBpZG1ha2VyKAogICAgICAgICAgICAgKCJhIiwgImIiKSwKQEAgLTM4MywxMSArNDY5LDEwIEBA
IGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIGFzc2VydCBy
ZXN1bHQgPT0gWyIxMC4wLUluZGV4RXJyb3IoKSIsICIyMC1LZXlFcnJvcigpIiwgInRocmVlLWIy
Il0KIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTM1MQotICAgIGRlZiB0ZXN0X2lkbWFrZXJfaWRm
bl91bmlxdWVfbmFtZXMoc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0
IGlkbWFrZXIKKyAgICBkZWYgdGVzdF9pZG1ha2VyX2lkZm5fdW5pcXVlX25hbWVzKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgICIiIiMzNTEiIiIKIAotICAgICAgICBkZWYgaWRzKHZhbCk6CisgICAg
ICAgIGRlZiBpZHModmFsOiBvYmplY3QpIC0+IHN0cjoKICAgICAgICAgICAgIHJldHVybiAiYSIK
IAogICAgICAgICByZXN1bHQgPSBpZG1ha2VyKApAQCAtNDAxLDQ4ICs0ODYsNzEgQEAgY2xhc3Mg
VGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9
PSBbImEtYTAiLCAiYS1hMSIsICJhLWEyIl0KIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTM1MQot
ICAgIGRlZiB0ZXN0X2lkbWFrZXJfaWRmbl9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIGZyb20g
X3B5dGVzdC5weXRob24gaW1wb3J0IGlkbWFrZXIKLSAgICAgICAgZnJvbSBfcHl0ZXN0LnJlY3dh
cm4gaW1wb3J0IFdhcm5pbmdzUmVjb3JkZXIKKyAgICBkZWYgdGVzdF9pZG1ha2VyX3dpdGhfaWRm
bl9hbmRfY29uZmlnKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIlVuaXQgdGVzdCBmb3IgZXhw
ZWN0ZWQgYmVoYXZpb3IgdG8gY3JlYXRlIGlkcyB3aXRoIGlkZm4gYW5kCisgICAgICAgIGRpc2Fi
bGVfdGVzdF9pZF9lc2NhcGluZ19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9z
dXBwb3J0CisgICAgICAgIG9wdGlvbiAoIzUyOTQpLgorICAgICAgICAiIiIKIAotICAgICAgICBj
bGFzcyBCYWRJZHNFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgY2xhc3MgTW9ja0NvbmZpZzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25m
aWcpOgorICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisKKyAgICAgICAgICAg
IEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIGhvb2soc2VsZik6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHNlbGYKKworICAgICAgICAgICAgZGVmIHB5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lk
KHNlbGYsICoqa3cpOgorICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBkZWYgaWRzKHZh
bCk6Ci0gICAgICAgICAgICByYWlzZSBCYWRJZHNFeGNlcHRpb24oImlkcyByYWlzZWQiKQotCi0g
ICAgICAgIHJlYyA9IFdhcm5pbmdzUmVjb3JkZXIoKQotICAgICAgICB3aXRoIHJlYzoKLSAgICAg
ICAgICAgIGlkbWFrZXIoCi0gICAgICAgICAgICAgICAgKCJhIiwgImIiKSwKLSAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgxMC4wLCBJbmRleEVycm9y
KCkpLAotICAgICAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oMjAsIEtleUVycm9yKCkpLAot
ICAgICAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oInRocmVlIiwgWzEsIDIsIDNdKSwKLSAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGlkZm49aWRzLAorICAgICAgICAgICAg
ZGVmIGdldGluaShzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25m
aWdbbmFtZV0KKworICAgICAgICBvcHRpb24gPSAiZGlzYWJsZV90ZXN0X2lkX2VzY2FwaW5nX2Fu
ZF9mb3JmZWl0X2FsbF9yaWdodHNfdG9fY29tbXVuaXR5X3N1cHBvcnQiCisKKyAgICAgICAgdmFs
dWVzID0gWworICAgICAgICAgICAgKE1vY2tDb25maWcoe29wdGlvbjogVHJ1ZX0pLCAiYcOnw6Nv
IiksCisgICAgICAgICAgICAoTW9ja0NvbmZpZyh7b3B0aW9uOiBGYWxzZX0pLCAiYVxceGU3XFx4
ZTNvIiksCisgICAgICAgIF0gICMgdHlwZTogTGlzdFtUdXBsZVtBbnksIHN0cl1dCisgICAgICAg
IGZvciBjb25maWcsIGV4cGVjdGVkIGluIHZhbHVlczoKKyAgICAgICAgICAgIHJlc3VsdCA9IGlk
bWFrZXIoCisgICAgICAgICAgICAgICAgKCJhIiwpLCBbcHl0ZXN0LnBhcmFtKCJzdHJpbmciKV0s
IGlkZm49bGFtYmRhIF86ICJhw6fDo28iLCBjb25maWc9Y29uZmlnLAogICAgICAgICAgICAgKQor
ICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbZXhwZWN0ZWRdCiAKLSAgICAgICAgYXNzZXJ0
ICgKLSAgICAgICAgICAgIFtzdHIoaS5tZXNzYWdlKSBmb3IgaSBpbiByZWMubGlzdF0KLSAgICAg
ICAgICAgID09IFsKLSAgICAgICAgICAgICAgICAiUmFpc2VkIHdoaWxlIHRyeWluZyB0byBkZXRl
cm1pbmUgaWQgb2YgcGFyYW1ldGVyIGEgYXQgcG9zaXRpb24gMC4iCi0gICAgICAgICAgICAgICAg
IlxuVXBkYXRlIHlvdXIgY29kZSBhcyB0aGlzIHdpbGwgcmFpc2UgYW4gZXJyb3IgaW4gcHl0ZXN0
LTQuMC4iLAotICAgICAgICAgICAgICAgICJSYWlzZWQgd2hpbGUgdHJ5aW5nIHRvIGRldGVybWlu
ZSBpZCBvZiBwYXJhbWV0ZXIgYiBhdCBwb3NpdGlvbiAwLiIKLSAgICAgICAgICAgICAgICAiXG5V
cGRhdGUgeW91ciBjb2RlIGFzIHRoaXMgd2lsbCByYWlzZSBhbiBlcnJvciBpbiBweXRlc3QtNC4w
LiIsCi0gICAgICAgICAgICAgICAgIlJhaXNlZCB3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlk
IG9mIHBhcmFtZXRlciBhIGF0IHBvc2l0aW9uIDEuIgotICAgICAgICAgICAgICAgICJcblVwZGF0
ZSB5b3VyIGNvZGUgYXMgdGhpcyB3aWxsIHJhaXNlIGFuIGVycm9yIGluIHB5dGVzdC00LjAuIiwK
LSAgICAgICAgICAgICAgICAiUmFpc2VkIHdoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaWQgb2Yg
cGFyYW1ldGVyIGIgYXQgcG9zaXRpb24gMS4iCi0gICAgICAgICAgICAgICAgIlxuVXBkYXRlIHlv
dXIgY29kZSBhcyB0aGlzIHdpbGwgcmFpc2UgYW4gZXJyb3IgaW4gcHl0ZXN0LTQuMC4iLAotICAg
ICAgICAgICAgICAgICJSYWlzZWQgd2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBpZCBvZiBwYXJh
bWV0ZXIgYSBhdCBwb3NpdGlvbiAyLiIKLSAgICAgICAgICAgICAgICAiXG5VcGRhdGUgeW91ciBj
b2RlIGFzIHRoaXMgd2lsbCByYWlzZSBhbiBlcnJvciBpbiBweXRlc3QtNC4wLiIsCi0gICAgICAg
ICAgICAgICAgIlJhaXNlZCB3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlkIG9mIHBhcmFtZXRl
ciBiIGF0IHBvc2l0aW9uIDIuIgotICAgICAgICAgICAgICAgICJcblVwZGF0ZSB5b3VyIGNvZGUg
YXMgdGhpcyB3aWxsIHJhaXNlIGFuIGVycm9yIGluIHB5dGVzdC00LjAuIiwKLSAgICAgICAgICAg
IF0KLSAgICAgICAgKQorICAgIGRlZiB0ZXN0X2lkbWFrZXJfd2l0aF9pZHNfYW5kX2NvbmZpZyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJVbml0IHRlc3QgZm9yIGV4cGVjdGVkIGJlaGF2aW9y
IHRvIGNyZWF0ZSBpZHMgd2l0aCBpZHMgYW5kCisgICAgICAgIGRpc2FibGVfdGVzdF9pZF9lc2Nh
cGluZ19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9zdXBwb3J0CisgICAgICAg
IG9wdGlvbiAoIzUyOTQpLgorICAgICAgICAiIiIKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXpl
X2lkc19leGNlcHRpb24oc2VsZiwgdGVzdGRpcik6CisgICAgICAgIGNsYXNzIE1vY2tDb25maWc6
CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKKyAgICAgICAgICAgICAg
ICBzZWxmLmNvbmZpZyA9IGNvbmZpZworCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAg
ICAgIGRlZiBob29rKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAg
ICAgICAgIGRlZiBweXRlc3RfbWFrZV9wYXJhbWV0cml6ZV9pZChzZWxmLCAqKmt3KToKKyAgICAg
ICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBnZXRpbmkoc2VsZiwgbmFtZSk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlnW25hbWVdCisKKyAgICAgICAgb3B0aW9u
ID0gImRpc2FibGVfdGVzdF9pZF9lc2NhcGluZ19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2Nv
bW11bml0eV9zdXBwb3J0IgorCisgICAgICAgIHZhbHVlcyA9IFsKKyAgICAgICAgICAgIChNb2Nr
Q29uZmlnKHtvcHRpb246IFRydWV9KSwgImHDp8OjbyIpLAorICAgICAgICAgICAgKE1vY2tDb25m
aWcoe29wdGlvbjogRmFsc2V9KSwgImFcXHhlN1xceGUzbyIpLAorICAgICAgICBdICAjIHR5cGU6
IExpc3RbVHVwbGVbQW55LCBzdHJdXQorICAgICAgICBmb3IgY29uZmlnLCBleHBlY3RlZCBpbiB2
YWx1ZXM6CisgICAgICAgICAgICByZXN1bHQgPSBpZG1ha2VyKAorICAgICAgICAgICAgICAgICgi
YSIsKSwgW3B5dGVzdC5wYXJhbSgic3RyaW5nIildLCBpZHM9WyJhw6fDo28iXSwgY29uZmlnPWNv
bmZpZywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gW2V4cGVj
dGVkXQorCisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaWRzX2V4Y2VwdGlvbihzZWxmLCB0ZXN0
ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICAiIiIKICAgICAgICAgOnBhcmFtIHRlc3Rk
aXI6IHRoZSBpbnN0YW5jZSBvZiBUZXN0ZGlyIGNsYXNzLCBhIHRlbXBvcmFyeQogICAgICAgICB0
ZXN0IGRpcmVjdG9yeS4KQEAgLTQ1OSwyNyArNTY3LDQ5IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAiIiIKICAgICAg
ICAgKQotICAgICAgICB3aXRoIHB5dGVzdC53YXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAg
ICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIjxNb2R1bGUg
J3Rlc3RfcGFyYW1ldHJpemVfaWRzX2V4Y2VwdGlvbi5weSc+IiwKLSAgICAgICAgICAgICAgICAi
ICA8RnVuY3Rpb24gJ3Rlc3RfZm9vW2FdJz4iLAotICAgICAgICAgICAgICAgICIgIDxGdW5jdGlv
biAndGVzdF9mb29bYl0nPiIsCisgICAgICAgICAgICAgICAgIipFeGNlcHRpb246IGJhZCBpZHMi
LAorICAgICAgICAgICAgICAgICIqdGVzdF9mb286IGVycm9yIHJhaXNlZCB3aGlsZSB0cnlpbmcg
dG8gZGV0ZXJtaW5lIGlkIG9mIHBhcmFtZXRlciAnYXJnJyBhdCBwb3NpdGlvbiAwIiwKICAgICAg
ICAgICAgIF0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfaWRtYWtlcl93aXRoX2lkcyhzZWxm
KToKLSAgICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgaWRtYWtlcgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX2lkc19yZXR1cm5zX25vbl9zdHJpbmcoc2VsZiwgdGVzdGRpcjogVGVz
dGRpcikgLT4gTm9uZToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAg
IiIiXAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBkZWYgaWRzKGQp
OgorICAgICAgICAgICAgICAgIHJldHVybiBkCiAKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgiYXJnIiwgKHsxOiAyfSwgezMsIDR9KSwgaWRzPWlkcykKKyAgICAgICAgICAg
IGRlZiB0ZXN0KGFyZyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGFyZworCisgICAgICAgICAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFyZyIsICgxLCAyLjAsIFRydWUpLCBpZHM9aWRz
KQorICAgICAgICAgICAgZGVmIHRlc3RfaW50KGFyZyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0
IGFyZworICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi12diIsICItcyIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAidGVzdF9wYXJhbWV0cml6ZV9p
ZHNfcmV0dXJuc19ub25fc3RyaW5nLnB5Ojp0ZXN0W2FyZzBdIFBBU1NFRCIsCisgICAgICAgICAg
ICAgICAgInRlc3RfcGFyYW1ldHJpemVfaWRzX3JldHVybnNfbm9uX3N0cmluZy5weTo6dGVzdFth
cmcxXSBQQVNTRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2lkc19yZXR1
cm5zX25vbl9zdHJpbmcucHk6OnRlc3RfaW50WzFdIFBBU1NFRCIsCisgICAgICAgICAgICAgICAg
InRlc3RfcGFyYW1ldHJpemVfaWRzX3JldHVybnNfbm9uX3N0cmluZy5weTo6dGVzdF9pbnRbMi4w
XSBQQVNTRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2lkc19yZXR1cm5z
X25vbl9zdHJpbmcucHk6OnRlc3RfaW50W1RydWVdIFBBU1NFRCIsCisgICAgICAgICAgICBdCisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2lkbWFrZXJfd2l0aF9pZHMoc2VsZikgLT4gTm9uZToK
ICAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKICAgICAgICAgICAgICgiYSIsICJiIiksIFtweXRl
c3QucGFyYW0oMSwgMiksIHB5dGVzdC5wYXJhbSgzLCA0KV0sIGlkcz1bImEiLCBOb25lXQogICAg
ICAgICApCiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWyJhIiwgIjMtNCJdCiAKLSAgICBkZWYg
dGVzdF9pZG1ha2VyX3dpdGhfcGFyYW1zZXRfaWQoc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVz
dC5weXRob24gaW1wb3J0IGlkbWFrZXIKLQorICAgIGRlZiB0ZXN0X2lkbWFrZXJfd2l0aF9wYXJh
bXNldF9pZChzZWxmKSAtPiBOb25lOgogICAgICAgICByZXN1bHQgPSBpZG1ha2VyKAogICAgICAg
ICAgICAgKCJhIiwgImIiKSwKICAgICAgICAgICAgIFtweXRlc3QucGFyYW0oMSwgMiwgaWQ9Im1l
IiksIHB5dGVzdC5wYXJhbSgzLCA0LCBpZD0ieW91IildLApAQCAtNDg3LDMwICs2MTcsMTQgQEAg
Y2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgYXNzZXJ0IHJl
c3VsdCA9PSBbIm1lIiwgInlvdSJdCiAKLSAgICBkZWYgdGVzdF9pZG1ha2VyX3dpdGhfaWRzX3Vu
aXF1ZV9uYW1lcyhzZWxmKToKLSAgICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgaWRt
YWtlcgotCisgICAgZGVmIHRlc3RfaWRtYWtlcl93aXRoX2lkc191bmlxdWVfbmFtZXMoc2VsZikg
LT4gTm9uZToKICAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKICAgICAgICAgICAgICgiYSIpLCBt
YXAocHl0ZXN0LnBhcmFtLCBbMSwgMiwgMywgNCwgNV0pLCBpZHM9WyJhIiwgImEiLCAiYiIsICJj
IiwgImIiXQogICAgICAgICApCiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWyJhMCIsICJhMSIs
ICJiMCIsICJjIiwgImIxIl0KIAotICAgIGRlZiB0ZXN0X2FkZGNhbGxfYW5kX3BhcmFtZXRyaXpl
KHNlbGYpOgotCi0gICAgICAgIGRlZiBmdW5jKHgsIHkpOgotICAgICAgICAgICAgcGFzcwotCi0g
ICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQotICAgICAgICBtZXRhZnVuYy5h
ZGRjYWxsKHsieCI6IDF9KQotICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieSIsIFsyLCAz
XSkKLSAgICAgICAgYXNzZXJ0IGxlbihtZXRhZnVuYy5fY2FsbHMpID09IDIKLSAgICAgICAgYXNz
ZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5mdW5jYXJncyA9PSB7IngiOiAxLCAieSI6IDJ9Ci0gICAg
ICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uZnVuY2FyZ3MgPT0geyJ4IjogMSwgInkiOiAz
fQotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzBdLmlkID09ICIwLTIiCi0gICAgICAg
IGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uaWQgPT0gIjAtMyIKLQotICAgIEBweXRlc3QubWFy
ay5pc3N1ZTcxNAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0KHNlbGYpOgorICAg
IGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IiM3MTQiIiIKIAogICAgICAgICBkZWYgZnVuYyh4LCB5KToKICAgICAgICAgICAgIHBhc3MKQEAg
LTUyNCw4ICs2MzgsOCBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgYXNz
ZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5wYXJhbXMgPT0gZGljdCh4PTEsIHk9MikKICAgICAgICAg
YXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1sxXS5wYXJhbXMgPT0gZGljdCh4PTEsIHk9MykKIAotICAg
IEBweXRlc3QubWFyay5pc3N1ZTcxNAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0
X2xpc3Qoc2VsZik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaW5kaXJlY3RfbGlzdChzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIjNzE0IiIiCiAKICAgICAgICAgZGVmIGZ1bmMoeCwgeSk6
CiAgICAgICAgICAgICBwYXNzCkBAIC01MzUsOCArNjQ5LDggQEAgY2xhc3MgVGVzdE1ldGFmdW5j
KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMF0uZnVuY2FyZ3MgPT0g
ZGljdCh5PSJiIikKICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5wYXJhbXMgPT0g
ZGljdCh4PSJhIikKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTcxNAotICAgIGRlZiB0ZXN0X3Bh
cmFtZXRyaXplX2luZGlyZWN0X2xpc3RfYWxsKHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRy
aXplX2luZGlyZWN0X2xpc3RfYWxsKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIiM3MTQiIiIK
IAogICAgICAgICBkZWYgZnVuYyh4LCB5KToKICAgICAgICAgICAgIHBhc3MKQEAgLTU0Niw4ICs2
NjAsOCBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IG1ldGFm
dW5jLl9jYWxsc1swXS5mdW5jYXJncyA9PSB7fQogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2Nh
bGxzWzBdLnBhcmFtcyA9PSBkaWN0KHg9ImEiLCB5PSJiIikKIAotICAgIEBweXRlc3QubWFyay5p
c3N1ZTcxNAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0X2xpc3RfZW1wdHkoc2Vs
Zik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaW5kaXJlY3RfbGlzdF9lbXB0eShzZWxmKSAt
PiBOb25lOgorICAgICAgICAiIiIjNzE0IiIiCiAKICAgICAgICAgZGVmIGZ1bmMoeCwgeSk6CiAg
ICAgICAgICAgICBwYXNzCkBAIC01NTcsOSArNjcxLDIwIEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhv
YmplY3QpOgogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzBdLmZ1bmNhcmdzID09IGRp
Y3QoeD0iYSIsIHk9ImIiKQogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzBdLnBhcmFt
cyA9PSB7fQogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1l
dHJpemVfaW5kaXJlY3RfbGlzdF9mdW5jdGlvbmFsKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0X3dyb25nX3R5cGUoc2VsZikgLT4gTm9uZToKKyAgICAg
ICAgZGVmIGZ1bmMoeCwgeSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0YWZ1bmMg
PSBzZWxmLk1ldGFmdW5jKGZ1bmMpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAg
ICAgICAgIGZhaWwuRXhjZXB0aW9uLAorICAgICAgICAgICAgbWF0Y2g9IkluIGZ1bmM6IGV4cGVj
dGVkIFNlcXVlbmNlIG9yIGJvb2xlYW4gZm9yIGluZGlyZWN0LCBnb3QgZGljdCIsCisgICAgICAg
ICk6CisgICAgICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieCwgeSIsIFsoImEiLCAiYiIp
XSwgaW5kaXJlY3Q9e30pICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKworICAgIGRlZiB0ZXN0
X3BhcmFtZXRyaXplX2luZGlyZWN0X2xpc3RfZnVuY3Rpb25hbChzZWxmLCB0ZXN0ZGlyOiBUZXN0
ZGlyKSAtPiBOb25lOgogICAgICAgICAiIiIKKyAgICAgICAgIzcxNAogICAgICAgICBUZXN0IHBh
cmFtZXRyaXphdGlvbiB3aXRoICdpbmRpcmVjdCcgcGFyYW1ldGVyIGFwcGxpZWQgb24KICAgICAg
ICAgcGFydGljdWxhciBhcmd1bWVudHMuIEFzIHkgaXMgaXMgZGlyZWN0LCBpdHMgdmFsdWUgc2hv
dWxkCiAgICAgICAgIGJlIHVzZWQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gYmVpbmcgcGFzc2VkIHRv
IHRoZSBmaXh0dXJlCkBAIC01ODYsMjIgKzcxMSwyNSBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2Jq
ZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKICAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Rfc2ltcGxlKmEtYioiLCAiKjEgcGFz
c2VkKiJdKQogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1l
dHJpemVfaW5kaXJlY3RfbGlzdF9lcnJvcihzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9w
YXJhbWV0cml6ZV9pbmRpcmVjdF9saXN0X2Vycm9yKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IiM3MTQiIiIKIAogICAgICAgICBkZWYgZnVuYyh4LCB5KToKICAgICAgICAgICAgIHBhc3MKIAog
ICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMoZnVuYykKLSAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoZmFpbC5F
eGNlcHRpb24pOgogICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngsIHkiLCBbKCJh
IiwgImIiKV0sIGluZGlyZWN0PVsieCIsICJ6Il0pCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU3
MTQKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV91c2VzX25vX2ZpeHR1cmVfZXJyb3JfaW5kaXJl
Y3RfZmFsc2Uoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfdXNlc19u
b19maXh0dXJlX2Vycm9yX2luZGlyZWN0X2ZhbHNlKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyOiBU
ZXN0ZGlyCisgICAgKSAtPiBOb25lOgogICAgICAgICAiIiJUaGUgJ3VzZXMgbm8gZml4dHVyZScg
ZXJyb3IgdGVsbHMgdGhlIHVzZXIgYXQgY29sbGVjdGlvbiB0aW1lCiAgICAgICAgIHRoYXQgdGhl
IHBhcmFtZXRyaXplIGRhdGEgdGhleSd2ZSBzZXQgdXAgZG9lc24ndCBjb3JyZXNwb25kIHRvIHRo
ZQogICAgICAgICBmaXh0dXJlcyBpbiB0aGVpciB0ZXN0IGZ1bmN0aW9uLCByYXRoZXIgdGhhbiBz
aWxlbnRseSBpZ25vcmluZyB0aGlzCiAgICAgICAgIGFuZCBsZXR0aW5nIHRoZSB0ZXN0IHBvdGVu
dGlhbGx5IHBhc3MuCisKKyAgICAgICAgIzcxNAogICAgICAgICAiIiIKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC02MTUsOCArNzQzLDEwIEBAIGNsYXNz
IFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1jb2xsZWN0LW9ubHkiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqdXNlcyBubyBhcmd1bWVudCAneScqIl0pCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU3MTQK
LSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV91c2VzX25vX2ZpeHR1cmVfZXJyb3JfaW5kaXJlY3Rf
dHJ1ZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV91c2VzX25vX2Zp
eHR1cmVfZXJyb3JfaW5kaXJlY3RfdHJ1ZSgKKyAgICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRp
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiIzcxNCIiIgogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAg
LTYzNSw4ICs3NjUsMTAgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbGxlY3Qtb25seSIpCiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip1c2VzIG5vIGZpeHR1cmUgJ3knKiJdKQogCi0gICAg
QHB5dGVzdC5tYXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaW5kaXJlY3Rf
dXNlc19ub19maXh0dXJlX2Vycm9yX2luZGlyZWN0X3N0cmluZyhzZWxmLCB0ZXN0ZGlyKToKKyAg
ICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdF91c2VzX25vX2ZpeHR1cmVfZXJyb3JfaW5k
aXJlY3Rfc3RyaW5nKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIjNzE0IiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNjUyLDggKzc4NCwx
MCBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiKnVzZXMgbm8gZml4dHVyZSAneScqIl0pCiAKLSAgICBAcHl0ZXN0Lm1hcmsu
aXNzdWU3MTQKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdF91c2VzX25vX2ZpeHR1
cmVfZXJyb3JfaW5kaXJlY3RfbGlzdChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJh
bWV0cml6ZV9pbmRpcmVjdF91c2VzX25vX2ZpeHR1cmVfZXJyb3JfaW5kaXJlY3RfbGlzdCgKKyAg
ICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIi
IzcxNCIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTY2OSw4ICs4MDMsOCBAQCBjbGFzcyBUZXN0TWV0
YWZ1bmMob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29s
bGVjdC1vbmx5IikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnVzZXMg
bm8gZml4dHVyZSAneScqIl0pCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU3MTQKLSAgICBkZWYg
dGVzdF9wYXJhbWV0cml6ZV9hcmd1bWVudF9ub3RfaW5faW5kaXJlY3RfbGlzdChzZWxmLCB0ZXN0
ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9hcmd1bWVudF9ub3RfaW5faW5kaXJlY3Rf
bGlzdChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiIjNzE0IiIi
CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdApAQCAtNjg4LDcgKzgyMiw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhv
YmplY3QpOgogCiAgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfZ2l2ZXNfaW5kaWNhdGl2ZV9lcnJv
cl9vbl9mdW5jdGlvbl93aXRoX2RlZmF1bHRfYXJndW1lbnQoCiAgICAgICAgIHNlbGYsIHRlc3Rk
aXIKLSAgICApOgorICAgICkgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC03MDMsMjIgKzgz
Nyw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICAgICAgWyIqYWxyZWFk
eSB0YWtlcyBhbiBhcmd1bWVudCAneScgd2l0aCBhIGRlZmF1bHQgdmFsdWUiXQogICAgICAgICAp
CiAKLSAgICBkZWYgdGVzdF9hZGRjYWxsc19hbmRfcGFyYW1ldHJpemVfaW5kaXJlY3Qoc2VsZik6
Ci0KLSAgICAgICAgZGVmIGZ1bmMoeCwgeSk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAg
bWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1bmMpCi0gICAgICAgIG1ldGFmdW5jLmFkZGNhbGwo
cGFyYW09IjEyMyIpCi0gICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgWzFdLCBpbmRp
cmVjdD1UcnVlKQotICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieSIsIFsyLCAzXSwgaW5k
aXJlY3Q9VHJ1ZSkKLSAgICAgICAgYXNzZXJ0IGxlbihtZXRhZnVuYy5fY2FsbHMpID09IDIKLSAg
ICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5mdW5jYXJncyA9PSB7fQotICAgICAgICBh
c3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzFdLmZ1bmNhcmdzID09IHt9Ci0gICAgICAgIGFzc2VydCBt
ZXRhZnVuYy5fY2FsbHNbMF0ucGFyYW1zID09IGRpY3QoeD0xLCB5PTIpCi0gICAgICAgIGFzc2Vy
dCBtZXRhZnVuYy5fY2FsbHNbMV0ucGFyYW1zID09IGRpY3QoeD0xLCB5PTMpCi0KLSAgICBkZWYg
dGVzdF9wYXJhbWV0cml6ZV9mdW5jdGlvbmFsKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0
X3BhcmFtZXRyaXplX2Z1bmN0aW9uYWwoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC03MzksNyArODU4LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9i
amVjdCk6CiAgICAgICAgICAgICBbIip0ZXN0X3NpbXBsZSoxLTIqIiwgIip0ZXN0X3NpbXBsZSoy
LTIqIiwgIioyIHBhc3NlZCoiXQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6
ZV9vbmVhcmcoc2VsZik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfb25lYXJnKHNlbGYpIC0+
IE5vbmU6CiAgICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhsYW1iZGEgeDogTm9uZSkK
ICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0pCiAgICAgICAgIGFzc2Vy
dCBsZW4obWV0YWZ1bmMuX2NhbGxzKSA9PSAyCkBAIC03NDgsNyArODY3LDcgQEAgY2xhc3MgVGVz
dE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uZnVu
Y2FyZ3MgPT0gZGljdCh4PTIpCiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uaWQg
PT0gIjIiCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9vbmVhcmdfaW5kaXJlY3Qoc2VsZik6
CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfb25lYXJnX2luZGlyZWN0KHNlbGYpIC0+IE5vbmU6
CiAgICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhsYW1iZGEgeDogTm9uZSkKICAgICAg
ICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0sIGluZGlyZWN0PVRydWUpCiAgICAg
ICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMF0ucGFyYW1zID09IGRpY3QoeD0xKQpAQCAtNzU2
LDcgKzg3NSw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICBhc3NlcnQg
bWV0YWZ1bmMuX2NhbGxzWzFdLnBhcmFtcyA9PSBkaWN0KHg9MikKICAgICAgICAgYXNzZXJ0IG1l
dGFmdW5jLl9jYWxsc1sxXS5pZCA9PSAiMiIKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3R3
b2FyZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfdHdvYXJncyhzZWxmKSAtPiBO
b25lOgogICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMobGFtYmRhIHgsIHk6IE5vbmUp
CiAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCgieCIsICJ5IiksIFsoMSwgMiksICgzLCA0
KV0pCiAgICAgICAgIGFzc2VydCBsZW4obWV0YWZ1bmMuX2NhbGxzKSA9PSAyCkBAIC03NjUsNyAr
ODg0LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBtZXRh
ZnVuYy5fY2FsbHNbMV0uZnVuY2FyZ3MgPT0gZGljdCh4PTMsIHk9NCkKICAgICAgICAgYXNzZXJ0
IG1ldGFmdW5jLl9jYWxsc1sxXS5pZCA9PSAiMy00IgogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJp
emVfbXVsdGlwbGVfdGltZXMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJp
emVfbXVsdGlwbGVfdGltZXMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0CkBAIC03ODIsNyArOTAxLDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6
CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKICAgICAgICAgcmVzdWx0LmFzc2VydF9v
dXRjb21lcyhmYWlsZWQ9NikKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX0NTVihzZWxmLCB0
ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9DU1Yoc2VsZiwgdGVzdGRpcjogVGVz
dGRpcikgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC03OTQsNyArOTEzLDcgQEAgY2xhc3Mg
VGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1
bigpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCi0gICAgZGVmIHRl
c3RfcGFyYW1ldHJpemVfY2xhc3Nfc2NlbmFyaW9zKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX2NsYXNzX3NjZW5hcmlvcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAt
PiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgIyBzYW1lIGFzIGRvYy9lbi9leGFtcGxlL3BhcmFtZXRyaXplIHNjZW5hcmlvIGV4YW1w
bGUKQEAgLTgzNiw0MiArOTU1LDM5IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAg
ICAgICAiIiIKICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfZm9ybWF0X2FyZ3Moc2VsZik6Ci0K
KyAgICBkZWYgdGVzdF9mb3JtYXRfYXJncyhzZWxmKSAtPiBOb25lOgogICAgICAgICBkZWYgZnVu
Y3Rpb24xKCk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgYXNzZXJ0IGZpeHR1cmVzLl9m
b3JtYXRfYXJncyhmdW5jdGlvbjEpID09ICIoKSIKKyAgICAgICAgYXNzZXJ0IF9mb3JtYXRfYXJn
cyhmdW5jdGlvbjEpID09ICIoKSIKIAogICAgICAgICBkZWYgZnVuY3Rpb24yKGFyZzEpOgogICAg
ICAgICAgICAgcGFzcwogCi0gICAgICAgIGFzc2VydCBmaXh0dXJlcy5fZm9ybWF0X2FyZ3MoZnVu
Y3Rpb24yKSA9PSAiKGFyZzEpIgorICAgICAgICBhc3NlcnQgX2Zvcm1hdF9hcmdzKGZ1bmN0aW9u
MikgPT0gIihhcmcxKSIKIAogICAgICAgICBkZWYgZnVuY3Rpb24zKGFyZzEsIGFyZzI9InF3ZSIp
OgogICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGFzc2VydCBmaXh0dXJlcy5fZm9ybWF0X2Fy
Z3MoZnVuY3Rpb24zKSA9PSAiKGFyZzEsIGFyZzI9J3F3ZScpIgorICAgICAgICBhc3NlcnQgX2Zv
cm1hdF9hcmdzKGZ1bmN0aW9uMykgPT0gIihhcmcxLCBhcmcyPSdxd2UnKSIKIAogICAgICAgICBk
ZWYgZnVuY3Rpb240KGFyZzEsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICBwYXNzCiAK
LSAgICAgICAgYXNzZXJ0IGZpeHR1cmVzLl9mb3JtYXRfYXJncyhmdW5jdGlvbjQpID09ICIoYXJn
MSwgKmFyZ3MsICoqa3dhcmdzKSIKKyAgICAgICAgYXNzZXJ0IF9mb3JtYXRfYXJncyhmdW5jdGlv
bjQpID09ICIoYXJnMSwgKmFyZ3MsICoqa3dhcmdzKSIKIAogCi1jbGFzcyBUZXN0TWV0YWZ1bmNG
dW5jdGlvbmFsKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYsIHRlc3Rk
aXIpOgorY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbDoKKyAgICBkZWYgdGVzdF9hdHRyaWJ1
dGVzKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHAgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICMgYXNzdW1lcyB0aGF0
IGdlbmVyYXRlL3Byb3ZpZGUgcnVucyBpbiB0aGUgc2FtZSBwcm9jZXNzCiAgICAgICAgICAgICBp
bXBvcnQgc3lzLCBweXRlc3QKICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMo
bWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwocGFyYW09bWV0YWZ1
bmMpCisgICAgICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoJ21ldGFmdW5jJywgW21l
dGFmdW5jXSkKIAogICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAgICAgICAgICBkZWYg
bWV0YWZ1bmMocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3QuX3B5ZnVu
Y2l0ZW0uX2dlbmlkID09ICIwIgogICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFt
CiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKG1ldGFmdW5jLCBweXRlc3Rjb25maWcp
OgpAQCAtODg0LDExICsxMDAwLDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmLCBtZXRhZnVuYywgcHl0
ZXN0Y29uZmlnKToKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmNvbmZpZyA9
PSBweXRlc3Rjb25maWcKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLm1vZHVs
ZS5fX25hbWVfXyA9PSBfX25hbWVfXwotICAgICAgICAgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvID4gKDMsIDApOgotICAgICAgICAgICAgICAgICAgICAgICAgdW5ib3VuZCA9IFRlc3RD
bGFzcy50ZXN0X21ldGhvZAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgdW5ib3VuZCA9IFRlc3RDbGFzcy50ZXN0X21ldGhvZC5pbV9mdW5jCi0gICAg
ICAgICAgICAgICAgICAgICMgWFhYIGFjdHVhbGx5IGhhdmUgYW4gdW5ib3VuZCB0ZXN0IGZ1bmN0
aW9uIGhlcmU/CisgICAgICAgICAgICAgICAgICAgIHVuYm91bmQgPSBUZXN0Q2xhc3MudGVzdF9t
ZXRob2QKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmZ1bmN0aW9uID09IHVu
Ym91bmQKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmNscyA9PSBUZXN0Q2xh
c3MKICAgICAgICAgIiIiCkBAIC04OTYsNDMgKzEwMDgsMTUgQEAgY2xhc3MgVGVzdE1ldGFmdW5j
RnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChw
LCAiLXYiKQogICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0yKQogCi0gICAg
ZGVmIHRlc3RfYWRkY2FsbF93aXRoX3R3b19mdW5jYXJnc19nZW5lcmF0b3JzKHNlbGYsIHRlc3Rk
aXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAgICAgICAgICIiIgotICAg
ICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0ICJhcmcxIiBpbiBtZXRhZnVuYy5maXh0dXJlbmFtZXMKLSAgICAgICAgICAg
ICAgICBtZXRhZnVuYy5hZGRjYWxsKGZ1bmNhcmdzPWRpY3QoYXJnMT0xLCBhcmcyPTIpKQotICAg
ICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFm
dW5jKToKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKGZ1bmNhcmdzPWRpY3QoYXJn
MT0xLCBhcmcyPTEpKQotCi0gICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAg
ICAgICAgICAgICAgICBkZWYgdGVzdF9teWZ1bmMoc2VsZiwgYXJnMSwgYXJnMik6Ci0gICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBhcmcxID09IGFyZzIKLSAgICAgICAgIiIiCi0gICAgICAgICkK
LSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgcCkKLSAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgWyIqdGVzdF9teWZ1bmMqMCpQ
QVNTKiIsICIqdGVzdF9teWZ1bmMqMSpGQUlMKiIsICIqMSBmYWlsZWQsIDEgcGFzc2VkKiJdCi0g
ICAgICAgICkKLQotICAgIGRlZiB0ZXN0X3R3b19mdW5jdGlvbnMoc2VsZiwgdGVzdGRpcik6Cisg
ICAgZGVmIHRlc3RfdHdvX2Z1bmN0aW9ucyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25l
OgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAg
ICAgICBtZXRhZnVuYy5hZGRjYWxsKHBhcmFtPTEwKQotICAgICAgICAgICAgICAgIG1ldGFmdW5j
LmFkZGNhbGwocGFyYW09MjApCi0KLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGFyZzEocmVxdWVzdCk6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KKyAgICAgICAgICAgICAgICBtZXRhZnVu
Yy5wYXJhbWV0cml6ZSgnYXJnMScsIFsxMCwgMjBdLCBpZHM9WycwJywgJzEnXSkKIAogICAgICAg
ICAgICAgZGVmIHRlc3RfZnVuYzEoYXJnMSk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IGFyZzEg
PT0gMTAKKwogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzIoYXJnMSk6CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGFyZzEgaW4gKDEwLCAyMCkKICAgICAgICAgIiIiCkBAIC05NDMsMTEgKzEwMjcs
MTIgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICAgICAg
ICAgICIqdGVzdF9mdW5jMSowKlBBU1MqIiwKICAgICAgICAgICAgICAgICAiKnRlc3RfZnVuYzEq
MSpGQUlMKiIsCiAgICAgICAgICAgICAgICAgIip0ZXN0X2Z1bmMyKlBBU1MqIiwKKyAgICAgICAg
ICAgICAgICAiKnRlc3RfZnVuYzIqUEFTUyoiLAogICAgICAgICAgICAgICAgICIqMSBmYWlsZWQs
IDMgcGFzc2VkKiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X25v
c2VsZl9pbl9tZXRob2Qoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfbm9zZWxmX2luX21l
dGhvZChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBwID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2dl
bmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKQEAgLTk2MSw0NyArMTA0NiwxMiBAQCBjbGFzcyBUZXN0
TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KHApCiAgICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTEpCiAKLSAg
ICBkZWYgdGVzdF9nZW5lcmF0ZV9wbHVnaW5fYW5kX21vZHVsZShzZWxmLCB0ZXN0ZGlyKToKLSAg
ICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
IGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgIGFz
c2VydCAiYXJnMSIgaW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzCi0gICAgICAgICAgICAgICAgbWV0
YWZ1bmMuYWRkY2FsbChpZD0id29ybGQiLCBwYXJhbT0oMiwxMDApKQotICAgICAgICAiIiIKLSAg
ICAgICAgKQotICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIi
Ci0gICAgICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAg
ICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHBhcmFtPSgxLDEpLCBpZD0iaGVsbG8iKQotCi0g
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAg
ICAgICAgICAgIGRlZiBhcmcxKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVybiByZXF1
ZXN0LnBhcmFtWzBdCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRl
ZiBhcmcyKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtWzFd
Ci0KLSAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAgICAgICAg
IGRlZiB0ZXN0X215ZnVuYyhzZWxmLCBhcmcxLCBhcmcyKToKLSAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0IGFyZzEgPT0gYXJnMgotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCBwKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIip0ZXN0X215ZnVu
YypoZWxsbypQQVNTKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0X215ZnVuYyp3b3JsZCpGQUlM
KiIsCi0gICAgICAgICAgICAgICAgIioxIGZhaWxlZCwgMSBwYXNzZWQqIiwKLSAgICAgICAgICAg
IF0KLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGVfdGVzdHNfaW5fY2xhc3Moc2Vs
ZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfZ2VuZXJhdGVfdGVzdHNfaW5fY2xhc3Moc2VsZiwg
dGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhzZWxmLCBtZXRhZnVu
Yyk6Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoZnVuY2FyZ3M9eydoZWxs
byc6ICd3b3JsZCd9LCBpZD0iaGVsbG8iKQorICAgICAgICAgICAgICAgICAgICBtZXRhZnVuYy5w
YXJhbWV0cml6ZSgnaGVsbG8nLCBbJ3dvcmxkJ10sIGlkcz1bJ2hlbGxvdyddKQogCiAgICAgICAg
ICAgICAgICAgZGVmIHRlc3RfbXlmdW5jKHNlbGYsIGhlbGxvKToKICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGhlbGxvID09ICJ3b3JsZCIKQEAgLTEwMTAsMTIgKzEwNjAsMTEgQEAgY2xhc3Mg
VGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLXYiLCBwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqdGVzdF9teWZ1bmMqaGVsbG8qUEFTUyoiLCAiKjEgcGFzc2VkKiJdKQogCi0gICAgZGVmIHRl
c3RfdHdvX2Z1bmN0aW9uc19ub3Rfc2FtZV9pbnN0YW5jZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBk
ZWYgdGVzdF90d29fZnVuY3Rpb25zX25vdF9zYW1lX2luc3RhbmNlKHNlbGYsIHRlc3RkaXI6IFRl
c3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAg
ICAgICAiIiIKICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMp
OgotICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoeydhcmcxJzogMTB9KQotICAgICAg
ICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoeydhcmcxJzogMjB9KQorICAgICAgICAgICAgICAg
IG1ldGFmdW5jLnBhcmFtZXRyaXplKCdhcmcxJywgWzEwLCAyMF0sIGlkcz1bIjAiLCAiMSJdKQog
CiAgICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKICAgICAgICAgICAgICAgICBk
ZWYgdGVzdF9mdW5jKHNlbGYsIGFyZzEpOgpAQCAtMTAyOCwxMSArMTA3NywxMSBAQCBjbGFzcyBU
ZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAgICBbIip0ZXN0X2Z1bmMq
MCpQQVNTKiIsICIqdGVzdF9mdW5jKjEqUEFTUyoiLCAiKjIgcGFzcyoiXQogICAgICAgICApCiAK
LSAgICBkZWYgdGVzdF9pc3N1ZTI4X3NldHVwX21ldGhvZF9pbl9nZW5lcmF0ZV90ZXN0cyhzZWxm
LCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9pc3N1ZTI4X3NldHVwX21ldGhvZF9pbl9nZW5lcmF0
ZV90ZXN0cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBwID0gdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcHl0ZXN0
X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRj
YWxsKHsnYXJnMSc6IDF9KQorICAgICAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCdh
cmcxJywgWzFdKQogCiAgICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZiwgYXJnMSk6CkBAIC0xMDQ0LDcgKzEwOTMs
NyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCiAgICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMo
cGFzc2VkPTEpCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9mdW5jdGlvbmFsMihzZWxmLCB0
ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9mdW5jdGlvbmFsMihzZWxmLCB0ZXN0
ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1
bmMpOgpAQCAtMTA1OSw3ICsxMTA4LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChv
YmplY3QpOgogICAgICAgICAgICAgWyIqKDEsIDQpKiIsICIqKDEsIDUpKiIsICIqKDIsIDQpKiIs
ICIqKDIsIDUpKiIsICIqNCBmYWlsZWQqIl0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfcGFy
YW1ldHJpemVfYW5kX2lubmVyX2dldGZpeHR1cmV2YWx1ZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBk
ZWYgdGVzdF9wYXJhbWV0cml6ZV9hbmRfaW5uZXJfZ2V0Zml4dHVyZXZhbHVlKHNlbGYsIHRlc3Rk
aXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0
YWZ1bmMpOgpAQCAtMTA4Myw3ICsxMTMyLDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25h
bChvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCBwKQog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9mdW5jMSoxKlBBU1Mq
IiwgIioxIHBhc3NlZCoiXSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX29uX3NldHVwX2Fy
ZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9vbl9zZXR1cF9hcmco
c2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcCA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0
ZV90ZXN0cyhtZXRhZnVuYyk6CkBAIC0xMTA2LDcgKzExNTUsNyBAQCBjbGFzcyBUZXN0TWV0YWZ1
bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItdiIsIHApCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0ZXN0X2Z1
bmMqMSpQQVNTKiIsICIqMSBwYXNzZWQqIl0pCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93
aXRoX2lkcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93aXRoX2lk
cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vp
bmkoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFtweXRlc3RdCkBAIC0xMTMwLDcgKzEx
NzksNyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAg
ICBbIip0ZXN0X2Z1bmN0aW9uKmJhc2ljKlBBU1NFRCIsICIqdGVzdF9mdW5jdGlvbiphZHZhbmNl
ZCpGQUlMRUQiXQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93aXRob3V0
X2lkcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93aXRob3V0X2lk
cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTEx
NTAsNyArMTE5OSw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAg
ICAgICAgIiIiCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfTm9u
ZV9pbl9pZHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfd2l0aF9O
b25lX2luX2lkcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKQEAgLTExNzIsNyArMTIyMSw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2Jq
ZWN0KToKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfZml4dHVyZV9w
YXJhbWV0cml6ZWRfZW1wdHlfaWRzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2ZpeHR1
cmVfcGFyYW1ldHJpemVkX2VtcHR5X2lkcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25l
OgogICAgICAgICAiIiJGaXh0dXJlcyBwYXJhbWV0cml6ZWQgd2l0aCBlbXB0eSBpZHMgY2F1c2Ug
YW4gaW50ZXJuYWwgZXJyb3IgKCMxODQ5KS4iIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgIiIiCkBAIC0xMTg5LDcgKzEyMzgsNyBAQCBjbGFzcyBUZXN0TWV0YWZ1
bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAxIHNraXBwZWQgKiJd
KQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVkX2VtcHR5X2lkcyhzZWxmLCB0ZXN0ZGlyKToK
KyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZWRfZW1wdHlfaWRzKHNlbGYsIHRlc3RkaXI6IFRlc3Rk
aXIpIC0+IE5vbmU6CiAgICAgICAgICIiIlRlc3RzIHBhcmFtZXRyaXplZCB3aXRoIGVtcHR5IGlk
cyBjYXVzZSBhbiBpbnRlcm5hbCBlcnJvciAoIzE4NDkpLiIiIgogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTEyMDMsMjMgKzEyNTIsMjggQEAgY2xhc3Mg
VGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBz
a2lwcGVkICoiXSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplZF9pZHNfaW52YWxpZF90eXBl
KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiJUZXN0cyBwYXJhbWV0cml6ZWQgd2l0aCBpZHMg
YXMgbm9uLXN0cmluZ3MgKCMxODU3KS4iIiIKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZWRfaWRz
X2ludmFsaWRfdHlwZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAi
IiJUZXN0IGVycm9yIHdpdGggbm9uLXN0cmluZ3Mvbm9uLWludHMsIHdpdGhvdXQgZ2VuZXJhdG9y
ICgjMTg1NykuIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIi
IgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoIngsIGV4cGVjdGVkIiwgWygxMCwgMjApLCAoNDAsIDgwKV0sIGlkcz0oTm9u
ZSwgMikpCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIngsIGV4cGVjdGVk
IiwgWygxLCAyKSwgKDMsIDQpLCAoNSwgNildLCBpZHM9KE5vbmUsIDIsIHR5cGUpKQogICAgICAg
ICAgICAgZGVmIHRlc3RfaWRzX251bWJlcnMoeCxleHBlY3RlZCk6CiAgICAgICAgICAgICAgICAg
YXNzZXJ0IHggKiAyID09IGV4cGVjdGVkCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKAotICAgICAgICAgICAgWyIqaWRzIG11c3QgYmUgbGlzdCBvZiBzdHJpbmdzLCBm
b3VuZDogMiAodHlwZTogaW50KSoiXQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJJ
biB0ZXN0X2lkc19udW1iZXJzOiBpZHMgbXVzdCBiZSBsaXN0IG9mIHN0cmluZy9mbG9hdC9pbnQv
Ym9vbCwiCisgICAgICAgICAgICAgICAgIiBmb3VuZDogPGNsYXNzICd0eXBlJz4gKHR5cGU6IDxj
bGFzcyAndHlwZSc+KSBhdCBpbmRleCAyIgorICAgICAgICAgICAgXQogICAgICAgICApCiAKLSAg
ICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93aXRoX2lkZW50aWNhbF9pZHNfZ2V0X3VuaXF1ZV9uYW1l
cyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93aXRoX2lkZW50aWNh
bF9pZHNfZ2V0X3VuaXF1ZV9uYW1lcygKKyAgICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpcgor
ICAgICkgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xMjM4LDEzICsxMjkyLDE1IEBAIGNs
YXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgKQogCiAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgic2NvcGUiLCAibGVuZ3RoIiksIFsoIm1vZHVsZSIsIDIp
LCAoImZ1bmN0aW9uIiwgNCldKQotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3Njb3BlX292ZXJy
aWRlcyhzZWxmLCB0ZXN0ZGlyLCBzY29wZSwgbGVuZ3RoKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0
cml6ZV9zY29wZV9vdmVycmlkZXMoCisgICAgICAgIHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIsIHNj
b3BlOiBzdHIsIGxlbmd0aDogaW50CisgICAgKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKICAg
ICAgICAgICAgIHZhbHVlcyA9IFtdCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rl
c3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBpZiAiYXJnIiBpbiBtZXRhZnVuYy5mdW5j
YXJnbmFtZXM6CisgICAgICAgICAgICAgICAgaWYgImFyZyIgaW4gbWV0YWZ1bmMuZml4dHVyZW5h
bWVzOgogICAgICAgICAgICAgICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgiYXJnIiwgWzEs
Ml0sIGluZGlyZWN0PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNjb3BlPSVyKQogICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCkBAIC0xMjYzLDcgKzEz
MTksNyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJl
cHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21l
KHBhc3NlZD01KQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaXNzdWUzMjMoc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaXNzdWUzMjMoc2VsZiwgdGVzdGRpcjog
VGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAg
ICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xMjgxLDcgKzEzMzcsNyBAQCBj
bGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRl
c3RkaXIuaW5saW5lX3J1bigiLS1jb2xsZWN0LW9ubHkiKQogICAgICAgICBhc3NlcnQgbm90IHJl
cHJlYy5nZXRjYWxscygicHl0ZXN0X2ludGVybmFsZXJyb3IiKQogCi0gICAgZGVmIHRlc3RfdXNl
Zml4dHVyZXNfc2Vlbl9pbl9nZW5lcmF0ZV90ZXN0cyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYg
dGVzdF91c2VmaXh0dXJlc19zZWVuX2luX2dlbmVyYXRlX3Rlc3RzKHNlbGYsIHRlc3RkaXI6IFRl
c3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTI5NywyMyArMTM1MywyMyBAQCBj
bGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVwcmVjLmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9
MSkKIAotICAgIGRlZiB0ZXN0X2dlbmVyYXRlX3Rlc3RzX29ubHlfZG9uZV9pbl9zdWJkaXIoc2Vs
ZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfZ2VuZXJhdGVfdGVzdHNfb25seV9kb25lX2luX3N1
YmRpcihzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBzdWIxID0gdGVz
dGRpci5ta3B5ZGlyKCJzdWIxIikKICAgICAgICAgc3ViMiA9IHRlc3RkaXIubWtweWRpcigic3Vi
MiIpCiAgICAgICAgIHN1YjEuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAg
IF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAg
ICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rl
c3RzKG1ldGFmdW5jKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmZ1bmN0
aW9uLl9fbmFtZV9fID09ICJ0ZXN0XzEiCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBh
c3NlcnQgbWV0YWZ1bmMuZnVuY3Rpb24uX19uYW1lX18gPT0gInRlc3RfMSIKLSAgICAgICAgIiIi
CiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgc3ViMi5qb2luKCJjb25mdGVzdC5w
eSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAg
ICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAg
IGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgorICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQgbWV0YWZ1bmMuZnVuY3Rpb24uX19uYW1lX18gPT0gInRlc3RfMiIKICAgICAgICAg
ICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1
bmMpOgotICAgICAgICAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5mdW5jdGlvbi5fX25hbWVfXyA9
PSAidGVzdF8yIgotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAg
ICBzdWIxLmpvaW4oInRlc3RfaW5fc3ViMS5weSIpLndyaXRlKCJkZWYgdGVzdF8xKCk6IHBhc3Mi
KQpAQCAtMTMyMSw3ICsxMzc3LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmpl
Y3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1rZWVwLWR1cGxpY2F0
ZXMiLCAiLXYiLCAiLXMiLCBzdWIxLCBzdWIyLCBzdWIxKQogICAgICAgICByZXN1bHQuYXNzZXJ0
X291dGNvbWVzKHBhc3NlZD0zKQogCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGVfc2FtZV9mdW5jdGlv
bl9uYW1lc19pc3N1ZTQwMyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9nZW5lcmF0ZV9z
YW1lX2Z1bmN0aW9uX25hbWVzX2lzc3VlNDAzKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5v
bmU6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTMzOSwzNSArMTM5NSwzOCBAQCBjbGFzcyBUZXN0TWV0
YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKICAgICAgICAgcmVwcmVjLmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9NCkKIAotICAgIEBw
eXRlc3QubWFyay5pc3N1ZTQ2MwotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYXR0ciIs
IFsicGFyYW1ldHJpc2UiLCAicGFyYW1ldGVyaXplIiwgInBhcmFtZXRlcmlzZSJdKQotICAgIGRl
ZiB0ZXN0X3BhcmFtZXRyaXplX21pc3NwZWxsaW5nKHNlbGYsIHRlc3RkaXIsIGF0dHIpOgorICAg
IGRlZiB0ZXN0X3BhcmFtZXRyaXplX21pc3NwZWxsaW5nKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIp
IC0+IE5vbmU6CisgICAgICAgICIiIiM0NjMiIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAg
ICAgIEBweXRlc3QubWFyay57fSgieCIsIHJhbmdlKDIpKQorICAgICAgICAgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXNlKCJ4IiwgcmFuZ2UoMikpCiAgICAgICAgICAgICBkZWYgdGVzdF9mb28o
eCk6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIuZm9ybWF0KAotICAgICAgICAg
ICAgICAgIGF0dHIKLSAgICAgICAgICAgICkKKyAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAg
ICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItLWNvbGxlY3Rvbmx5IikKLSAgICAgICAg
ZmFpbHVyZXMgPSByZXByZWMuZ2V0ZmFpbHVyZXMoKQotICAgICAgICBhc3NlcnQgbGVuKGZhaWx1
cmVzKSA9PSAxCi0gICAgICAgIGV4cGVjdGVkZXJyb3IgPSAiTWFya2VyRXJyb3I6IHRlc3RfZm9v
IGhhcyAne30nLCBzcGVsbGluZyBzaG91bGQgYmUgJ3BhcmFtZXRyaXplJyIuZm9ybWF0KAotICAg
ICAgICAgICAgYXR0cgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xs
ZWN0b25seSIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDAgaXRlbXMgLyAxIGVycm9yIiwKKyAg
ICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiKj0gRVJST1JTID0qIiwKKyAgICAg
ICAgICAgICAgICAiKl8gRVJST1IgY29sbGVjdGluZyB0ZXN0X3BhcmFtZXRyaXplX21pc3NwZWxs
aW5nLnB5IF8qIiwKKyAgICAgICAgICAgICAgICAidGVzdF9wYXJhbWV0cml6ZV9taXNzcGVsbGlu
Zy5weTozOiBpbiA8bW9kdWxlPiIsCisgICAgICAgICAgICAgICAgJyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpc2UoIngiLCByYW5nZSgyKSknLAorICAgICAgICAgICAgICAgICJFICAgRmFpbGVk
OiBVbmtub3duICdwYXJhbWV0cmlzZScgbWFyaywgZGlkIHlvdSBtZWFuICdwYXJhbWV0cml6ZSc/
IiwKKyAgICAgICAgICAgICAgICAiKiEgSW50ZXJydXB0ZWQ6IDEgZXJyb3IgZHVyaW5nIGNvbGxl
Y3Rpb24gISoiLAorICAgICAgICAgICAgICAgICIqPSAxIGVycm9yIGluICoiLAorICAgICAgICAg
ICAgXQogICAgICAgICApCi0gICAgICAgIGFzc2VydCBleHBlY3RlZGVycm9yIGluIGZhaWx1cmVz
WzBdLmxvbmdyZXByLnJlcHJjcmFzaC5tZXNzYWdlCiAKIAotY2xhc3MgVGVzdE1ldGFmdW5jRnVu
Y3Rpb25hbEF1dG8ob2JqZWN0KToKLSAgICAiIiIKLSAgICBUZXN0cyByZWxhdGVkIHRvIGF1dG9t
YXRpY2FsbHkgZmluZCBvdXQgdGhlIGNvcnJlY3Qgc2NvcGUgZm9yIHBhcmFtZXRyaXplZCB0ZXN0
cyAoIzE4MzIpLgotICAgICIiIgorY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbEF1dG86Cisg
ICAgIiIiVGVzdHMgcmVsYXRlZCB0byBhdXRvbWF0aWNhbGx5IGZpbmQgb3V0IHRoZSBjb3JyZWN0
IHNjb3BlIGZvcgorICAgIHBhcmFtZXRyaXplZCB0ZXN0cyAoIzE4MzIpLiIiIgogCi0gICAgZGVm
IHRlc3RfcGFyYW1ldHJpemVfYXV0b19zY29wZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVz
dF9wYXJhbWV0cml6ZV9hdXRvX3Njb3BlKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6
CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdApAQCAtMTM4OSw3ICsxNDQ4LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5j
RnVuY3Rpb25hbEF1dG8ob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDMgcGFzc2VkICoi
XSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2F1dG9fc2NvcGVfaW5kaXJlY3Qoc2VsZiwg
dGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYXV0b19zY29wZV9pbmRpcmVjdChz
ZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTE0MTIs
NyArMTQ3MSw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWxBdXRvKG9iamVjdCk6CiAg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKiAzIHBhc3NlZCAqIl0pCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0
cml6ZV9hdXRvX3Njb3BlX292ZXJyaWRlX2ZpeHR1cmUoc2VsZiwgdGVzdGRpcik6CisgICAgZGVm
IHRlc3RfcGFyYW1ldHJpemVfYXV0b19zY29wZV9vdmVycmlkZV9maXh0dXJlKHNlbGYsIHRlc3Rk
aXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTQyOSw3ICsxNDg4LDcg
QEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbEF1dG8ob2JqZWN0KToKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoWyIqIDIgcGFzc2VkICoiXSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2FsbF9p
bmRpcmVjdHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYWxsX2lu
ZGlyZWN0cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
QEAgLTE0NTYsNyArMTUxNSw0MiBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsQXV0byhv
YmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMyBwYXNzZWQgKiJdKQogCi0gICAgZGVmIHRl
c3RfcGFyYW1ldHJpemVfaXNzdWU2MzQoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFy
YW1ldHJpemVfc29tZV9hcmd1bWVudHNfYXV0b19zY29wZSgKKyAgICAgICAgc2VsZiwgdGVzdGRp
cjogVGVzdGRpciwgbW9ua2V5cGF0Y2gKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIkludGVn
cmF0aW9uIHRlc3QgZm9yICgjMzk0MSkiIiIKKyAgICAgICAgY2xhc3NfZml4X3NldHVwID0gW10g
ICMgdHlwZTogTGlzdFtvYmplY3RdCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAi
Y2xhc3NfZml4X3NldHVwIiwgY2xhc3NfZml4X3NldHVwLCByYWlzaW5nPUZhbHNlKQorICAgICAg
ICBmdW5jX2ZpeF9zZXR1cCA9IFtdICAjIHR5cGU6IExpc3Rbb2JqZWN0XQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHN5cywgImZ1bmNfZml4X3NldHVwIiwgZnVuY19maXhfc2V0dXAsIHJh
aXNpbmc9RmFsc2UpCisKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBpbXBvcnQgc3lzCisK
KyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nY2xhc3MnLCBhdXRvdXNlPVRydWUp
CisgICAgICAgICAgICBkZWYgY2xhc3NfZml4KHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHN5
cy5jbGFzc19maXhfc2V0dXAuYXBwZW5kKHJlcXVlc3QucGFyYW0pCisKKyAgICAgICAgICAgIEBw
eXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCisgICAgICAgICAgICBkZWYgZnVuY19maXgoKToK
KyAgICAgICAgICAgICAgICBzeXMuZnVuY19maXhfc2V0dXAuYXBwZW5kKFRydWUpCisKKyAgICAg
ICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgnY2xhc3NfZml4JywgWzEwLCAyMF0sIGlu
ZGlyZWN0PVRydWUpCisgICAgICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0X2JhcihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAg
ICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rf
aW5wcm9jZXNzKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiA0IHBh
c3NlZCBpbiAqIl0pCisgICAgICAgIGFzc2VydCBmdW5jX2ZpeF9zZXR1cCA9PSBbVHJ1ZV0gKiA0
CisgICAgICAgIGFzc2VydCBjbGFzc19maXhfc2V0dXAgPT0gWzEwLCAyMF0KKworICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX2lzc3VlNjM0KHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6
CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdApAQCAtMTQ5MSwxOCArMTU4NSwxNyBAQCBjbGFzcyBUZXN0TWV0YWZ1
bmNGdW5jdGlvbmFsQXV0byhvYmplY3QpOgogICAgICAgICBhc3NlcnQgb3V0cHV0LmNvdW50KCJw
cmVwYXJpbmcgZm9vLTMiKSA9PSAxCiAKIAotQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJp
Z25vcmU6QXBwbHlpbmcgbWFya3MgZGlyZWN0bHkgdG8gcGFyYW1ldGVycyIpCi1AcHl0ZXN0Lm1h
cmsuaXNzdWUzMDgKLWNsYXNzIFRlc3RNYXJrZXJzV2l0aFBhcmFtZXRyaXphdGlvbihvYmplY3Qp
OgorY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uOgorICAgICIiIiMzMDgiIiIK
IAotICAgIGRlZiB0ZXN0X3NpbXBsZV9tYXJrKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0
X3NpbXBsZV9tYXJrKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHMg
PSAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAogICAgICAgICAgICAgQHB5dGVzdC5t
YXJrLmZvbwogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBl
Y3RlZCIpLCBbCiAgICAgICAgICAgICAgICAgKDEsIDIpLAotICAgICAgICAgICAgICAgIHB5dGVz
dC5tYXJrLmJhcigoMSwgMykpLAorICAgICAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgxLCAzLCBt
YXJrcz1weXRlc3QubWFyay5iYXIpLAogICAgICAgICAgICAgICAgICgyLCAzKSwKICAgICAgICAg
ICAgIF0pCiAgICAgICAgICAgICBkZWYgdGVzdF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQpOgpAQCAt
MTUxNiwxMyArMTYwOSwxMyBAQCBjbGFzcyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24o
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0ICJiYXIiIGluIGl0ZW1zWzFdLmtleXdvcmRzCiAgICAg
ICAgIGFzc2VydCAiYmFyIiBub3QgaW4gaXRlbXNbMl0ua2V5d29yZHMKIAotICAgIGRlZiB0ZXN0
X3NlbGVjdF9iYXNlZF9vbl9tYXJrKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3NlbGVj
dF9iYXNlZF9vbl9tYXJrKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAg
IHMgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAogICAgICAgICAgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIpLCBbCiAgICAgICAgICAgICAgICAg
KDEsIDIpLAotICAgICAgICAgICAgICAgIHB5dGVzdC5tYXJrLmZvbygoMiwgMykpLAorICAgICAg
ICAgICAgICAgIHB5dGVzdC5wYXJhbSgyLCAzLCBtYXJrcz1weXRlc3QubWFyay5mb28pLAogICAg
ICAgICAgICAgICAgICgzLCA0KSwKICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICBkZWYgdGVz
dF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQpOgpAQCAtMTUzNSwzNCArMTYyOCwxMyBAQCBjbGFzcyBU
ZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGxl
bihza2lwcGVkKSA9PSAwCiAgICAgICAgIGFzc2VydCBsZW4oZmFpbCkgPT0gMAogCi0gICAgQHB5
dGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0iaXMgdGhpcyBpbXBvcnRhbnQgdG8gc3VwcG9ydD8/IikK
LSAgICBkZWYgdGVzdF9uZXN0ZWRfbWFya3Moc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rf
c2ltcGxlX3hmYWlsKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHMg
PSAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIG1hc3Rlcm1hcmsg
PSBweXRlc3QubWFyay5mb28ocHl0ZXN0Lm1hcmsuYmFyKQogCiAgICAgICAgICAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoKCJuIiwgImV4cGVjdGVkIiksIFsKICAgICAgICAgICAgICAgICAo
MSwgMiksCi0gICAgICAgICAgICAgICAgbWFzdGVybWFyaygoMSwgMykpLAotICAgICAgICAgICAg
ICAgICgyLCAzKSwKLSAgICAgICAgICAgIF0pCi0gICAgICAgICAgICBkZWYgdGVzdF9pbmNyZW1l
bnQobiwgZXhwZWN0ZWQpOgotICAgICAgICAgICAgICAgIGFzc2VydCBuICsgMSA9PSBleHBlY3Rl
ZAotICAgICAgICAiIiIKLSAgICAgICAgaXRlbXMgPSB0ZXN0ZGlyLmdldGl0ZW1zKHMpCi0gICAg
ICAgIGFzc2VydCBsZW4oaXRlbXMpID09IDMKLSAgICAgICAgZm9yIG1hcmsgaW4gWyJmb28iLCAi
YmFyIl06Ci0gICAgICAgICAgICBhc3NlcnQgbWFyayBub3QgaW4gaXRlbXNbMF0ua2V5d29yZHMK
LSAgICAgICAgICAgIGFzc2VydCBtYXJrIGluIGl0ZW1zWzFdLmtleXdvcmRzCi0gICAgICAgICAg
ICBhc3NlcnQgbWFyayBub3QgaW4gaXRlbXNbMl0ua2V5d29yZHMKLQotICAgIGRlZiB0ZXN0X3Np
bXBsZV94ZmFpbChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcyA9ICIiIgotICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAotCi0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKCJu
IiwgImV4cGVjdGVkIiksIFsKLSAgICAgICAgICAgICAgICAoMSwgMiksCi0gICAgICAgICAgICAg
ICAgcHl0ZXN0Lm1hcmsueGZhaWwoKDEsIDMpKSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFy
YW0oMSwgMywgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwpLAogICAgICAgICAgICAgICAgICgyLCAz
KSwKICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICBkZWYgdGVzdF9pbmNyZW1lbnQobiwgZXhw
ZWN0ZWQpOgpAQCAtMTU3MywxMyArMTY0NSwxMyBAQCBjbGFzcyBUZXN0TWFya2Vyc1dpdGhQYXJh
bWV0cml6YXRpb24ob2JqZWN0KToKICAgICAgICAgIyB4ZmFpbCBpcyBza2lwPz8KICAgICAgICAg
cmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIsIHNraXBwZWQ9MSkKIAotICAgIGRlZiB0ZXN0
X3NpbXBsZV94ZmFpbF9zaW5nbGVfYXJnbmFtZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVz
dF9zaW1wbGVfeGZhaWxfc2luZ2xlX2FyZ25hbWUoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgcyA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAgICAg
ICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm4iLCBbCiAgICAgICAgICAgICAgICAg
MiwKLSAgICAgICAgICAgICAgICBweXRlc3QubWFyay54ZmFpbCgzKSwKKyAgICAgICAgICAgICAg
ICBweXRlc3QucGFyYW0oMywgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwpLAogICAgICAgICAgICAg
ICAgIDQsCiAgICAgICAgICAgICBdKQogICAgICAgICAgICAgZGVmIHRlc3RfaXNFdmVuKG4pOgpA
QCAtMTU4OSwxMyArMTY2MSwxMyBAQCBjbGFzcyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRp
b24ob2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKICAgICAg
ICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIsIHNraXBwZWQ9MSkKIAotICAgIGRlZiB0
ZXN0X3hmYWlsX3dpdGhfYXJnKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3hmYWlsX3dp
dGhfYXJnKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHMgPSAiIiIK
ICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIpLCBbCiAgICAgICAgICAgICAgICAgKDEsIDIpLAot
ICAgICAgICAgICAgICAgIHB5dGVzdC5tYXJrLnhmYWlsKCJUcnVlIikoKDEsIDMpKSwKKyAgICAg
ICAgICAgICAgICBweXRlc3QucGFyYW0oMSwgMywgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwoIlRy
dWUiKSksCiAgICAgICAgICAgICAgICAgKDIsIDMpLAogICAgICAgICAgICAgXSkKICAgICAgICAg
ICAgIGRlZiB0ZXN0X2luY3JlbWVudChuLCBleHBlY3RlZCk6CkBAIC0xNjA1LDEzICsxNjc3LDEz
IEBAIGNsYXNzIFRlc3RNYXJrZXJzV2l0aFBhcmFtZXRyaXphdGlvbihvYmplY3QpOgogICAgICAg
ICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0
Y29tZShwYXNzZWQ9Miwgc2tpcHBlZD0xKQogCi0gICAgZGVmIHRlc3RfeGZhaWxfd2l0aF9rd2Fy
ZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF94ZmFpbF93aXRoX2t3YXJnKHNlbGYsIHRl
c3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHMgPSAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKIAogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibiIs
ICJleHBlY3RlZCIpLCBbCiAgICAgICAgICAgICAgICAgKDEsIDIpLAotICAgICAgICAgICAgICAg
IHB5dGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0ic29tZSBidWciKSgoMSwgMykpLAorICAgICAgICAg
ICAgICAgIHB5dGVzdC5wYXJhbSgxLCAzLCBtYXJrcz1weXRlc3QubWFyay54ZmFpbChyZWFzb249
InNvbWUgYnVnIikpLAogICAgICAgICAgICAgICAgICgyLCAzKSwKICAgICAgICAgICAgIF0pCiAg
ICAgICAgICAgICBkZWYgdGVzdF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQpOgpAQCAtMTYyMSwxMyAr
MTY5MywxMyBAQCBjbGFzcyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToK
ICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKICAgICAgICAgcmVwcmVjLmFz
c2VydG91dGNvbWUocGFzc2VkPTIsIHNraXBwZWQ9MSkKIAotICAgIGRlZiB0ZXN0X3hmYWlsX3dp
dGhfYXJnX2FuZF9rd2FyZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF94ZmFpbF93aXRo
X2FyZ19hbmRfa3dhcmcoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAg
cyA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAgICAgICAgICAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoKCJuIiwgImV4cGVjdGVkIiksIFsKICAgICAgICAgICAgICAgICAo
MSwgMiksCi0gICAgICAgICAgICAgICAgcHl0ZXN0Lm1hcmsueGZhaWwoIlRydWUiLCByZWFzb249
InNvbWUgYnVnIikoKDEsIDMpKSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oMSwgMywg
bWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwoIlRydWUiLCByZWFzb249InNvbWUgYnVnIikpLAogICAg
ICAgICAgICAgICAgICgyLCAzKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICBkZWYgdGVz
dF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQpOgpAQCAtMTYzOCwxMyArMTcxMCwxNSBAQCBjbGFzcyBU
ZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToKICAgICAgICAgcmVwcmVjLmFz
c2VydG91dGNvbWUocGFzc2VkPTIsIHNraXBwZWQ9MSkKIAogICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgic3RyaWN0IiwgW1RydWUsIEZhbHNlXSkKLSAgICBkZWYgdGVzdF94ZmFpbF9wYXNz
aW5nX2lzX3hwYXNzKHNlbGYsIHRlc3RkaXIsIHN0cmljdCk6CisgICAgZGVmIHRlc3RfeGZhaWxf
cGFzc2luZ19pc194cGFzcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCBzdHJpY3Q6IGJvb2wpIC0+
IE5vbmU6CiAgICAgICAgIHMgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAorICAg
ICAgICAgICAgbSA9IHB5dGVzdC5tYXJrLnhmYWlsKCJzeXMudmVyc2lvbl9pbmZvID4gKDAsIDAs
IDApIiwgcmVhc29uPSJzb21lIGJ1ZyIsIHN0cmljdD17c3RyaWN0fSkKKwogICAgICAgICAgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIpLCBbCiAgICAgICAgICAg
ICAgICAgKDEsIDIpLAotICAgICAgICAgICAgICAgIHB5dGVzdC5tYXJrLnhmYWlsKCJzeXMudmVy
c2lvbl9pbmZvID4gKDAsIDAsIDApIiwgcmVhc29uPSJzb21lIGJ1ZyIsIHN0cmljdD17c3RyaWN0
fSkoKDIsIDMpKSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oMiwgMywgbWFya3M9bSks
CiAgICAgICAgICAgICAgICAgKDMsIDQpLAogICAgICAgICAgICAgXSkKICAgICAgICAgICAgIGRl
ZiB0ZXN0X2luY3JlbWVudChuLCBleHBlY3RlZCk6CkBAIC0xNjU3LDcgKzE3MzEsNyBAQCBjbGFz
cyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToKICAgICAgICAgcGFzc2Vk
LCBmYWlsZWQgPSAoMiwgMSkgaWYgc3RyaWN0IGVsc2UgKDMsIDApCiAgICAgICAgIHJlcHJlYy5h
c3NlcnRvdXRjb21lKHBhc3NlZD1wYXNzZWQsIGZhaWxlZD1mYWlsZWQpCiAKLSAgICBkZWYgdGVz
dF9wYXJhbWV0cml6ZV9jYWxsZWRfaW5fZ2VuZXJhdGVfdGVzdHMoc2VsZiwgdGVzdGRpcik6Cisg
ICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfY2FsbGVkX2luX2dlbmVyYXRlX3Rlc3RzKHNlbGYsIHRl
c3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHMgPSAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKIApAQCAtMTY2OCw3ICsxNzQyLDcgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRo
UGFyYW1ldHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZmFpbGluZ1Rlc3REYXRh
ID0gWygxLCAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDIpXQog
Ci0gICAgICAgICAgICAgICAgdGVzdERhdGEgPSBwYXNzaW5nVGVzdERhdGEgKyBbcHl0ZXN0Lm1h
cmsueGZhaWwoZCkKKyAgICAgICAgICAgICAgICB0ZXN0RGF0YSA9IHBhc3NpbmdUZXN0RGF0YSAr
IFtweXRlc3QucGFyYW0oKmQsIG1hcmtzPXB5dGVzdC5tYXJrLnhmYWlsKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGZhaWxpbmdUZXN0RGF0YV0KICAgICAgICAg
ICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgoIm4iLCAiZXhwZWN0ZWQiKSwgdGVzdERhdGEp
CiAKQEAgLTE2ODAsOCArMTc1NCw4IEBAIGNsYXNzIFRlc3RNYXJrZXJzV2l0aFBhcmFtZXRyaXph
dGlvbihvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9Miwgc2tpcHBlZD0yKQogCi0gICAgQHB5
dGVzdC5tYXJrLmlzc3VlMjkwCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfSURfZ2VuZXJhdGlv
bl9zdHJpbmdfaW50X3dvcmtzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRy
aXplX0lEX2dlbmVyYXRpb25fc3RyaW5nX2ludF93b3JrcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGly
KSAtPiBOb25lOgorICAgICAgICAiIiIjMjkwIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTY5OSw3
ICsxNzczLDcgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9iamVjdCk6
CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCiAgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJzdHJpY3QiLCBbVHJ1ZSwgRmFsc2VdKQotICAgIGRlZiB0ZXN0X3Bh
cmFtZXRyaXplX21hcmtlZF92YWx1ZShzZWxmLCB0ZXN0ZGlyLCBzdHJpY3QpOgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX21hcmtlZF92YWx1ZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCBzdHJp
Y3Q6IGJvb2wpIC0+IE5vbmU6CiAgICAgICAgIHMgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKIApAQCAtMTcyMyw3ICsxNzk3LDcgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1l
dHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgIHBhc3NlZCwgZmFpbGVkID0gKDAsIDIpIGlmIHN0
cmljdCBlbHNlICgyLCAwKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9cGFz
c2VkLCBmYWlsZWQ9ZmFpbGVkKQogCi0gICAgZGVmIHRlc3RfcHl0ZXN0X21ha2VfcGFyYW1ldHJp
emVfaWQoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcHl0ZXN0X21ha2VfcGFyYW1ldHJp
emVfaWQoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5t
YWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBweXRlc3RfbWFr
ZV9wYXJhbWV0cml6ZV9pZChjb25maWcsIHZhbCk6CkBAIC0xNzQyLDcgKzE4MTYsNyBAQCBjbGFz
cyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKnRlc3RfZnVuYyowKlBBU1MqIiwgIip0ZXN0X2Z1bmMqMipQQVNTKiJdKQogCi0g
ICAgZGVmIHRlc3RfcHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWRfd2l0aF9hcmduYW1lKHNlbGYs
IHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3B5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkX3dpdGhf
YXJnbmFtZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGly
Lm1ha2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHB5dGVzdF9t
YWtlX3BhcmFtZXRyaXplX2lkKGNvbmZpZywgdmFsLCBhcmduYW1lKToKQEAgLTE3NjYsMyArMTg0
MCw1MiBAQCBjbGFzcyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToKICAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWyIqdGVzdF9m
dW5jX2EqMCpQQVNTKiIsICIqdGVzdF9mdW5jX2EqMipQQVNTKiIsICIqdGVzdF9mdW5jX2IqMTAq
UEFTUyoiXQogICAgICAgICApCisKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9wb3NpdGlvbmFs
X2FyZ3Moc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisK
KyAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYSIsIFsxXSwgRmFsc2UpCisg
ICAgICAgICAgICBkZWYgdGVzdF9mb28oYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAg
ICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisg
ICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTEpCisKKyAgICBkZWYgdGVzdF9w
YXJhbWV0cml6ZV9pdGVyYXRvcihzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGlt
cG9ydCBpdGVydG9vbHMKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAg
aWRfcGFyYW1ldHJpemUgPSBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgICAgICAg
ICBpZHM9KCJwYXJhbSVkIiAlIGkgZm9yIGkgaW4gaXRlcnRvb2xzLmNvdW50KCkpCisgICAgICAg
ICAgICApCisKKyAgICAgICAgICAgIEBpZF9wYXJhbWV0cml6ZSgneScsIFsnYScsICdiJ10pCisg
ICAgICAgICAgICBkZWYgdGVzdDEoeSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAg
ICAgICBAaWRfcGFyYW1ldHJpemUoJ3knLCBbJ2EnLCAnYiddKQorICAgICAgICAgICAgZGVmIHRl
c3QyKHkpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJhLCBiIiwgWygxLCAyKSwgKDMsIDQpXSwgaWRzPWl0ZXJ0b29scy5jb3Vu
dCgpKQorICAgICAgICAgICAgZGVmIHRlc3RfY29udmVydGVkX3RvX3N0cihhLCBiKToKKyAgICAg
ICAgICAgICAgICBwYXNzCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItdnYiLCAiLXMiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgInRlc3RfcGFyYW1l
dHJpemVfaXRlcmF0b3IucHk6OnRlc3QxW3BhcmFtMF0gUEFTU0VEIiwKKyAgICAgICAgICAgICAg
ICAidGVzdF9wYXJhbWV0cml6ZV9pdGVyYXRvci5weTo6dGVzdDFbcGFyYW0xXSBQQVNTRUQiLAor
ICAgICAgICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2l0ZXJhdG9yLnB5Ojp0ZXN0MltwYXJh
bTBdIFBBU1NFRCIsCisgICAgICAgICAgICAgICAgInRlc3RfcGFyYW1ldHJpemVfaXRlcmF0b3Iu
cHk6OnRlc3QyW3BhcmFtMV0gUEFTU0VEIiwKKyAgICAgICAgICAgICAgICAidGVzdF9wYXJhbWV0
cml6ZV9pdGVyYXRvci5weTo6dGVzdF9jb252ZXJ0ZWRfdG9fc3RyWzBdIFBBU1NFRCIsCisgICAg
ICAgICAgICAgICAgInRlc3RfcGFyYW1ldHJpemVfaXRlcmF0b3IucHk6OnRlc3RfY29udmVydGVk
X3RvX3N0clsxXSBQQVNTRUQiLAorICAgICAgICAgICAgICAgICIqPSA2IHBhc3NlZCBpbiAqIiwK
KyAgICAgICAgICAgIF0KKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9weXRob24vcmFpc2VzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vcmFpc2VzLnB5
CmluZGV4IDY0MTk5YzNiNmY1Zi4uMjY5MzFhMzc4NDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3B5dGhvbi9yYWlzZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRo
b24vcmFpc2VzLnB5CkBAIC0xLDUwICsxLDY2IEBACi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1w
b3J0IEZhaWxlZAotaW1wb3J0IHB5dGVzdAoraW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKK2ltcG9y
dCBweXRlc3QKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgRmFpbGVkCiAKLWNsYXNzIFRl
c3RSYWlzZXMob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X3JhaXNlcyhzZWxmKToKLSAgICAgICAg
c291cmNlID0gImludCgncXdlJykiCi0gICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFZh
bHVlRXJyb3IsIHNvdXJjZSkKLSAgICAgICAgY29kZSA9IGV4Y2luZm8udHJhY2ViYWNrWy0xXS5m
cmFtZS5jb2RlCi0gICAgICAgIHMgPSBzdHIoY29kZS5mdWxsc291cmNlKQotICAgICAgICBhc3Nl
cnQgcyA9PSBzb3VyY2UKIAotICAgIGRlZiB0ZXN0X3JhaXNlc19leGVjKHNlbGYpOgotICAgICAg
ICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsICJhLHggPSBbXSIpCitjbGFzcyBUZXN0UmFpc2Vz
OgorICAgIGRlZiB0ZXN0X2NoZWNrX2NhbGxhYmxlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIG1hdGNoPXIiLiogbXVzdCBiZSBjYWxsYWJsZSIp
OgorICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhSdW50aW1lRXJyb3IsICJpbnQoJ3F3ZScpIikg
ICMgdHlwZTogaWdub3JlW2NhbGwtb3ZlcmxvYWRdCiAKLSAgICBkZWYgdGVzdF9yYWlzZXNfc3lu
dGF4X2Vycm9yKHNlbGYpOgotICAgICAgICBweXRlc3QucmFpc2VzKFN5bnRheEVycm9yLCAicXdl
IHF3ZSBxd2UiKQorICAgIGRlZiB0ZXN0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgZXhjaW5mbyA9
IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgaW50LCAicXdlIikKKyAgICAgICAgYXNzZXJ0ICJp
bnZhbGlkIGxpdGVyYWwiIGluIHN0cihleGNpbmZvLnZhbHVlKQogCiAgICAgZGVmIHRlc3RfcmFp
c2VzX2Z1bmN0aW9uKHNlbGYpOgotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGlu
dCwgImhlbGxvIikKLQotICAgIGRlZiB0ZXN0X3JhaXNlc19jYWxsYWJsZV9ub19leGNlcHRpb24o
c2VsZik6Ci0KLSAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICBleGNpbmZvID0gcHl0
ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJoZWxsbyIpCisgICAgICAgIGFzc2VydCAiaW52
YWxpZCBsaXRlcmFsIiBpbiBzdHIoZXhjaW5mby52YWx1ZSkKIAorICAgIGRlZiB0ZXN0X3JhaXNl
c19jYWxsYWJsZV9ub19leGNlcHRpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgY2xhc3MgQToK
ICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKICAgICAgICAgICAgICAgICBwYXNzCiAK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBBKCkp
Ci0gICAgICAgIGV4Y2VwdCBweXRlc3QucmFpc2VzLkV4Y2VwdGlvbjoKKyAgICAgICAgZXhjZXB0
IHB5dGVzdC5mYWlsLkV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0
X3JhaXNlc19mYWxzZXlfdHlwZV9lcnJvcihzZWxmKSAtPiBOb25lOgorICAgICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhB
c3NlcnRpb25FcnJvciwgbWF0Y2g9MCk6ICAjIHR5cGU6IGlnbm9yZVtjYWxsLW92ZXJsb2FkXQor
ICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJvaGFpIikKKworICAgIGRlZiB0
ZXN0X3JhaXNlc19yZXByX2luZmxpZ2h0KHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgcmVwcigp
IG9uIGFuIGV4Y2VwdGlvbiBpbmZvIGluc2lkZSBhIHB5dGVzdC5yYWlzZXMgd2l0aCBibG9jayB3
b3JrcyAoIzQzODYpIiIiCisKKyAgICAgICAgY2xhc3MgRShFeGNlcHRpb24pOgogICAgICAgICAg
ICAgcGFzcwogCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhFKSBhcyBleGNpbmZvOgorICAg
ICAgICAgICAgIyB0aGlzIHRlc3QgcHJpbnRzIHRoZSBpbmZsaWdodCB1bmluaXRpYWxpemVkIG9i
amVjdAorICAgICAgICAgICAgIyB1c2luZyByZXByIGFuZCBzdHIgYXMgd2VsbCBhcyBwcHJpbnQg
dG8gZGVtb25zdHJhdGUKKyAgICAgICAgICAgICMgaXQgd29ya3MKKyAgICAgICAgICAgIHByaW50
KHN0cihleGNpbmZvKSkKKyAgICAgICAgICAgIHByaW50KHJlcHIoZXhjaW5mbykpCisgICAgICAg
ICAgICBpbXBvcnQgcHByaW50CisKKyAgICAgICAgICAgIHBwcmludC5wcHJpbnQoZXhjaW5mbykK
KyAgICAgICAgICAgIHJhaXNlIEUoKQorCiAgICAgZGVmIHRlc3RfcmFpc2VzX2FzX2NvbnRleHRt
YW5hZ2VyKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICAgICAiIiIKLSAgICAgICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0
ZW1lbnQKLSAgICAgICAgICAgIGltcG9ydCBweSwgcHl0ZXN0CisgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CiAgICAgICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQogCiAgICAgICAgICAgICBk
ZWYgdGVzdF9zaW1wbGUoKToKICAgICAgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoWmVy
b0RpdmlzaW9uRXJyb3IpIGFzIGV4Y2luZm86CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKGV4Y2luZm8sIF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbykKICAgICAgICAg
ICAgICAgICAgICAgMS8wCi0gICAgICAgICAgICAgICAgcHJpbnQgKGV4Y2luZm8pCisgICAgICAg
ICAgICAgICAgcHJpbnQoZXhjaW5mbykKICAgICAgICAgICAgICAgICBhc3NlcnQgZXhjaW5mby50
eXBlID09IFplcm9EaXZpc2lvbkVycm9yCiAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoZXhjaW5mby52YWx1ZSwgWmVyb0RpdmlzaW9uRXJyb3IpCiAKQEAgLTYyLDIzICs3OCw3MSBA
QCBjbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjMgcGFzc2Vk
KiJdKQogCi0gICAgZGVmIHRlc3Rfbm9jbGFzcyhzZWxmKToKKyAgICBkZWYgdGVzdF9kb2VzX25v
dF9yYWlzZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRt
YW5hZ2VyCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBjb250ZXh0
bWFuYWdlcgorICAgICAgICAgICAgZGVmIGRvZXNfbm90X3JhaXNlKCk6CisgICAgICAgICAgICAg
ICAgeWllbGQKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdleGFtcGxl
X2lucHV0LGV4cGVjdGF0aW9uJywgWworICAgICAgICAgICAgICAgICgzLCBkb2VzX25vdF9yYWlz
ZSgpKSwKKyAgICAgICAgICAgICAgICAoMiwgZG9lc19ub3RfcmFpc2UoKSksCisgICAgICAgICAg
ICAgICAgKDEsIGRvZXNfbm90X3JhaXNlKCkpLAorICAgICAgICAgICAgICAgICgwLCBweXRlc3Qu
cmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSksCisgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ZGVmIHRlc3RfZGl2aXNpb24oZXhhbXBsZV9pbnB1dCwgZXhwZWN0YXRpb24pOgorICAgICAgICAg
ICAgICAgICcnJ1Rlc3QgaG93IG11Y2ggSSBrbm93IGRpdmlzaW9uLicnJworICAgICAgICAgICAg
ICAgIHdpdGggZXhwZWN0YXRpb246CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoNiAvIGV4
YW1wbGVfaW5wdXQpIGlzIG5vdCBOb25lCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiKjQgcGFzc2VkKiJdKQorCisgICAgZGVmIHRlc3RfZG9lc19ub3RfcmFpc2Vf
ZG9lc19yYWlzZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRl
eHRtYW5hZ2VyCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBjb250
ZXh0bWFuYWdlcgorICAgICAgICAgICAgZGVmIGRvZXNfbm90X3JhaXNlKCk6CisgICAgICAgICAg
ICAgICAgeWllbGQKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdleGFt
cGxlX2lucHV0LGV4cGVjdGF0aW9uJywgWworICAgICAgICAgICAgICAgICgwLCBkb2VzX25vdF9y
YWlzZSgpKSwKKyAgICAgICAgICAgICAgICAoMSwgcHl0ZXN0LnJhaXNlcyhaZXJvRGl2aXNpb25F
cnJvcikpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X2RpdmlzaW9uKGV4
YW1wbGVfaW5wdXQsIGV4cGVjdGF0aW9uKToKKyAgICAgICAgICAgICAgICAnJydUZXN0IGhvdyBt
dWNoIEkga25vdyBkaXZpc2lvbi4nJycKKyAgICAgICAgICAgICAgICB3aXRoIGV4cGVjdGF0aW9u
OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKDYgLyBleGFtcGxlX2lucHV0KSBpcyBub3Qg
Tm9uZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIGZhaWxl
ZCoiXSkKKworICAgIGRlZiB0ZXN0X25vY2xhc3Moc2VsZikgLT4gTm9uZToKICAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBweXRlc3QucmFpc2VzKCJ3
cm9uZyIsIGxhbWJkYTogTm9uZSkKKyAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoIndyb25nIiwg
bGFtYmRhOiBOb25lKSAgIyB0eXBlOiBpZ25vcmVbY2FsbC1vdmVybG9hZF0KIAotICAgIGRlZiB0
ZXN0X2ludmFsaWRfYXJndW1lbnRzX3RvX3JhaXNlcyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbnZh
bGlkX2FyZ3VtZW50c190b19yYWlzZXMoc2VsZikgLT4gTm9uZToKICAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKFR5cGVFcnJvciwgbWF0Y2g9InVua25vd24iKToKLSAgICAgICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHVua25vd249ImJvZ3VzIik6CisgICAgICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCB1bmtub3duPSJib2d1cyIpOiAgIyB0eXBlOiBp
Z25vcmVbY2FsbC1vdmVybG9hZF0KICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkK
IAogICAgIGRlZiB0ZXN0X3R1cGxlKHNlbGYpOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMo
KEtleUVycm9yLCBWYWx1ZUVycm9yKSk6CiAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigib29w
cyIpCiAKLSAgICBkZWYgdGVzdF9ub19yYWlzZV9tZXNzYWdlKHNlbGYpOgorICAgIGRlZiB0ZXN0
X25vX3JhaXNlX21lc3NhZ2Uoc2VsZikgLT4gTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIwIikKLSAgICAgICAgZXhjZXB0IHB5
dGVzdC5yYWlzZXMuRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2VwdCBweXRlc3QuZmFpbC5F
eGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGFzc2VydCBlLm1zZyA9PSAiRElEIE5PVCBSQUlT
RSB7fSIuZm9ybWF0KHJlcHIoVmFsdWVFcnJvcikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBhc3NlcnQgRmFsc2UsICJFeHBlY3RlZCBweXRlc3QucmFpc2VzLkV4Y2VwdGlvbiIKQEAgLTg2
LDM2ICsxNTAsMzIgQEAgY2xhc3MgVGVzdFJhaXNlcyhvYmplY3QpOgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAg
ICAgcGFzcwotICAgICAgICBleGNlcHQgcHl0ZXN0LnJhaXNlcy5FeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgZXhjZXB0IHB5dGVzdC5mYWlsLkV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgYXNz
ZXJ0IGUubXNnID09ICJESUQgTk9UIFJBSVNFIHt9Ii5mb3JtYXQocmVwcihWYWx1ZUVycm9yKSkK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgIkV4cGVjdGVkIHB5dGVz
dC5yYWlzZXMuRXhjZXB0aW9uIgogCi0gICAgZGVmIHRlc3RfY3VzdG9tX3JhaXNlX21lc3NhZ2Uo
c2VsZik6Ci0gICAgICAgIG1lc3NhZ2UgPSAiVEVTVF9NRVNTQUdFIgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbWVzc2FnZT1tZXNzYWdl
KToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBweXRlc3QucmFpc2VzLkV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgYXNzZXJ0IGUubXNnID09IG1lc3NhZ2UKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgIkV4cGVjdGVkIHB5dGVzdC5yYWlz
ZXMuRXhjZXB0aW9uIgotCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJtZXRob2QiLCBb
ImZ1bmN0aW9uIiwgIndpdGgiXSkKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1ldGhv
ZCIsIFsiZnVuY3Rpb24iLCAiZnVuY3Rpb25fbWF0Y2giLCAid2l0aCJdKQogICAgIGRlZiB0ZXN0
X3JhaXNlc19jeWNsaWNfcmVmZXJlbmNlKHNlbGYsIG1ldGhvZCk6Ci0gICAgICAgICIiIgotICAg
ICAgICBFbnN1cmUgcHl0ZXN0LnJhaXNlcyBkb2VzIG5vdCBsZWF2ZSBhIHJlZmVyZW5jZSBjeWNs
ZSAoIzE5NjUpLgotICAgICAgICAiIiIKKyAgICAgICAgIiIiRW5zdXJlIHB5dGVzdC5yYWlzZXMg
ZG9lcyBub3QgbGVhdmUgYSByZWZlcmVuY2UgY3ljbGUgKCMxOTY1KS4iIiIKICAgICAgICAgaW1w
b3J0IGdjCiAKLSAgICAgICAgY2xhc3MgVChvYmplY3QpOgotCisgICAgICAgIGNsYXNzIFQ6CiAg
ICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgIyBFYXJseSB2
ZXJzaW9ucyBvZiBQeXRob24gMy41IGhhdmUgc29tZSBidWcgY2F1c2luZyB0aGUKKyAgICAgICAg
ICAgICAgICAjIF9fY2FsbF9fIGZyYW1lIHRvIHN0aWxsIHJlZmVyIHRvIHQgZXZlbiBhZnRlciBl
dmVyeXRoaW5nCisgICAgICAgICAgICAgICAgIyBpcyBkb25lLiBUaGlzIG1ha2VzIHRoZSB0ZXN0
IHBhc3MgZm9yIHRoZW0uCisgICAgICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgz
LCA1LCAyKToKKyAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYKICAgICAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yCiAKICAgICAgICAgdCA9IFQoKQorICAgICAgICByZWZjb3VudCA9IGxl
bihnYy5nZXRfcmVmZXJyZXJzKHQpKQorCiAgICAgICAgIGlmIG1ldGhvZCA9PSAiZnVuY3Rpb24i
OgogICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCB0KQorICAgICAgICBlbGlm
IG1ldGhvZCA9PSAiZnVuY3Rpb25fbWF0Y2giOgorICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhW
YWx1ZUVycm9yLCB0KS5tYXRjaCgiXiQiKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHQoKQpAQCAtMTIz
LDEzICsxODMsOSBAQCBjbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6CiAgICAgICAgICMgZW5zdXJl
IGJvdGggZm9ybXMgb2YgcHl0ZXN0LnJhaXNlcyBkb24ndCBsZWF2ZSBleGNlcHRpb25zIGluIHN5
cy5leGNfaW5mbygpCiAgICAgICAgIGFzc2VydCBzeXMuZXhjX2luZm8oKSA9PSAoTm9uZSwgTm9u
ZSwgTm9uZSkKIAotICAgICAgICBkZWwgdAorICAgICAgICBhc3NlcnQgcmVmY291bnQgPT0gbGVu
KGdjLmdldF9yZWZlcnJlcnModCkpCiAKLSAgICAgICAgIyBlbnN1cmUgdGhlIHQgaW5zdGFuY2Ug
aXMgbm90IHN0dWNrIGluIGEgY3ljbGljIHJlZmVyZW5jZQotICAgICAgICBmb3IgbyBpbiBnYy5n
ZXRfb2JqZWN0cygpOgotICAgICAgICAgICAgYXNzZXJ0IHR5cGUobykgaXMgbm90IFQKLQotICAg
IGRlZiB0ZXN0X3JhaXNlc19tYXRjaChzZWxmKToKKyAgICBkZWYgdGVzdF9yYWlzZXNfbWF0Y2go
c2VsZikgLT4gTm9uZToKICAgICAgICAgbXNnID0gciJ3aXRoIGJhc2UgXGQrIgogICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbWF0Y2g9bXNnKToKICAgICAgICAgICAgIGlu
dCgiYXNkZiIpCkBAIC0xMzksMTMgKzE5NSw0NiBAQCBjbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6
CiAgICAgICAgICAgICBpbnQoImFzZGYiKQogCiAgICAgICAgIG1zZyA9ICJ3aXRoIGJhc2UgMTYi
Ci0gICAgICAgIGV4cHIgPSByIlBhdHRlcm4gJ3t9JyBub3QgZm91bmQgaW4gJ2ludmFsaWQgbGl0
ZXJhbCBmb3IgaW50XChcKSB3aXRoIGJhc2UgMTA6ICdhc2RmJyciLmZvcm1hdCgKKyAgICAgICAg
ZXhwciA9ICJSZWdleCBwYXR0ZXJuIHshcn0gZG9lcyBub3QgbWF0Y2ggXCJpbnZhbGlkIGxpdGVy
YWwgZm9yIGludCgpIHdpdGggYmFzZSAxMDogJ2FzZGYnXCIuIi5mb3JtYXQoCiAgICAgICAgICAg
ICBtc2cKICAgICAgICAgKQotICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJy
b3IsIG1hdGNoPWV4cHIpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJy
b3IsIG1hdGNoPXJlLmVzY2FwZShleHByKSk6CiAgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoVmFsdWVFcnJvciwgbWF0Y2g9bXNnKToKICAgICAgICAgICAgICAgICBpbnQoImFzZGYiLCBi
YXNlPTEwKQogCisgICAgICAgICMgIm1hdGNoIiB3aXRob3V0IGNvbnRleHQgbWFuYWdlci4KKyAg
ICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJhc2RmIikubWF0Y2goImludmFs
aWQgbGl0ZXJhbCIpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvcikg
YXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgaW50LCAi
YXNkZiIpLm1hdGNoKG1zZykKKyAgICAgICAgYXNzZXJ0IHN0cihleGNpbmZvLnZhbHVlKSA9PSBl
eHByCisKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIGludCwgbWF0Y2g9ImludmFs
aWQiKQorCisgICAgICAgIGRlZiB0ZnVuYyhtYXRjaCk6CisgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJtYXRjaD17fSIuZm9ybWF0KG1hdGNoKSkKKworICAgICAgICBweXRlc3QucmFpc2Vz
KFZhbHVlRXJyb3IsIHRmdW5jLCBtYXRjaD0iYXNkZiIpLm1hdGNoKCJtYXRjaD1hc2RmIikKKyAg
ICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCB0ZnVuYywgbWF0Y2g9IiIpLm1hdGNoKCJt
YXRjaD0iKQorCisgICAgZGVmIHRlc3RfbWF0Y2hfZmFpbHVyZV9zdHJpbmdfcXVvdGluZyhzZWxm
KToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBleGNpbmZv
OgorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBtYXRjaD0i
J2ZvbyIpOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCInYmFyIikKKyAg
ICAgICAgKG1zZywpID0gZXhjaW5mby52YWx1ZS5hcmdzCisgICAgICAgIGFzc2VydCBtc2cgPT0g
J1JlZ2V4IHBhdHRlcm4gIlwnZm9vIiBkb2VzIG5vdCBtYXRjaCAiXCdiYXIiLicKKworICAgIGRl
ZiB0ZXN0X21hdGNoX2ZhaWx1cmVfZXhhY3Rfc3RyaW5nX21lc3NhZ2Uoc2VsZik6CisgICAgICAg
IG1lc3NhZ2UgPSAiT2ggaGVyZSBpcyBhIG1lc3NhZ2Ugd2l0aCAoNDIpIG51bWJlcnMgaW4gcGFy
YW1ldGVycyIKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBl
eGNpbmZvOgorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBt
YXRjaD1tZXNzYWdlKToKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtZXNz
YWdlKQorICAgICAgICAobXNnLCkgPSBleGNpbmZvLnZhbHVlLmFyZ3MKKyAgICAgICAgYXNzZXJ0
IG1zZyA9PSAoCisgICAgICAgICAgICAiUmVnZXggcGF0dGVybiAnT2ggaGVyZSBpcyBhIG1lc3Nh
Z2Ugd2l0aCAoNDIpIG51bWJlcnMgaW4gIgorICAgICAgICAgICAgInBhcmFtZXRlcnMnIGRvZXMg
bm90IG1hdGNoICdPaCBoZXJlIGlzIGEgbWVzc2FnZSB3aXRoICg0MikgIgorICAgICAgICAgICAg
Im51bWJlcnMgaW4gcGFyYW1ldGVycycuIERpZCB5b3UgbWVhbiB0byBgcmUuZXNjYXBlKClgIHRo
ZSByZWdleD8iCisgICAgICAgICkKKwogICAgIGRlZiB0ZXN0X3JhaXNlc19tYXRjaF93cm9uZ190
eXBlKHNlbGYpOgogICAgICAgICAiIiJSYWlzaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSB3cm9u
ZyB0eXBlIGFuZCBtYXRjaD0gZ2l2ZW4uCiAKQEAgLTE1NywyMSArMjQ2LDU3IEBAIGNsYXNzIFRl
c3RSYWlzZXMob2JqZWN0KToKICAgICAgICAgICAgICAgICBpbnQoImFzZGYiKQogCiAgICAgZGVm
IHRlc3RfcmFpc2VzX2V4Y2VwdGlvbl9sb29rc19pdGVyYWJsZShzZWxmKToKLSAgICAgICAgZnJv
bSBzaXggaW1wb3J0IGFkZF9tZXRhY2xhc3MKLQotICAgICAgICBjbGFzcyBNZXRhKHR5cGUob2Jq
ZWN0KSk6Ci0KKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKICAgICAgICAgICAgIGRlZiBfX2dl
dGl0ZW1fXyhzZWxmLCBpdGVtKToKICAgICAgICAgICAgICAgICByZXR1cm4gMSAvIDAKIAogICAg
ICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAot
ICAgICAgICBAYWRkX21ldGFjbGFzcyhNZXRhKQotICAgICAgICBjbGFzcyBDbGFzc0xvb2tzSXRl
cmFibGVFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAgICAgY2xhc3MgQ2xhc3NMb29rc0l0ZXJh
YmxlRXhjZXB0aW9uKEV4Y2VwdGlvbiwgbWV0YWNsYXNzPU1ldGEpOgogICAgICAgICAgICAgcGFz
cwogCiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKLSAgICAgICAgICAgIEZhaWxlZCwgbWF0
Y2g9IkRJRCBOT1QgUkFJU0UgPGNsYXNzICdyYWlzZXMuQ2xhc3NMb29rc0l0ZXJhYmxlRXhjZXB0
aW9uJz4iCisgICAgICAgICAgICBGYWlsZWQsCisgICAgICAgICAgICBtYXRjaD1yIkRJRCBOT1Qg
UkFJU0UgPGNsYXNzICdyYWlzZXMoXC4uKikqQ2xhc3NMb29rc0l0ZXJhYmxlRXhjZXB0aW9uJz4i
LAogICAgICAgICApOgogICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhDbGFzc0xvb2tzSXRlcmFi
bGVFeGNlcHRpb24sIGxhbWJkYTogTm9uZSkKKworICAgIGRlZiB0ZXN0X3JhaXNlc193aXRoX3Jh
aXNpbmdfZHVuZGVyX2NsYXNzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIlRlc3QgY3VycmVu
dCBiZWhhdmlvciB3aXRoIHJlZ2FyZCB0byBleGNlcHRpb25zIHZpYSBfX2NsYXNzX18gKCM0Mjg0
KS4iIiIKKworICAgICAgICBjbGFzcyBDcmFwcHlDbGFzcyhFeGNlcHRpb24pOgorICAgICAgICAg
ICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBpdCdzIGJ5cGFzc2VkIGludGVudGlvbmFsbHkuCisg
ICAgICAgICAgICBAcHJvcGVydHkgICMgdHlwZTogaWdub3JlCisgICAgICAgICAgICBkZWYgX19j
bGFzc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgInZpYSBfX2NsYXNz
X18iCisKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBleGNp
bmZvOgorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKENyYXBweUNsYXNzKCkpOiAgIyB0
eXBlOiBpZ25vcmVbY2FsbC1vdmVybG9hZF0KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAg
IGFzc2VydCAidmlhIF9fY2xhc3NfXyIgaW4gZXhjaW5mby52YWx1ZS5hcmdzWzBdCisKKyAgICBk
ZWYgdGVzdF9yYWlzZXNfY29udGV4dF9tYW5hZ2VyX3dpdGhfa3dhcmdzKHNlbGYpOgorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKSBhcyBleGNpbmZvOgorICAgICAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKEV4Y2VwdGlvbiwgZm9vPSJiYXIiKTogICMgdHlwZTogaWdub3Jl
W2NhbGwtb3ZlcmxvYWRdCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBhc3NlcnQgIlVu
ZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudHMiIGluIHN0cihleGNpbmZvLnZhbHVlKQorCisgICAg
ZGVmIHRlc3RfZXhwZWN0ZWRfZXhjZXB0aW9uX2lzX25vdF9hX2Jhc2VleGNlcHRpb24oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcikgYXMgZXhjaW5m
bzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygiaGVsbG8iKTogICMgdHlwZTogaWdu
b3JlW2NhbGwtb3ZlcmxvYWRdCisgICAgICAgICAgICAgICAgcGFzcyAgIyBwcmFnbWE6IG5vIGNv
dmVyCisgICAgICAgIGFzc2VydCAibXVzdCBiZSBhIEJhc2VFeGNlcHRpb24gdHlwZSwgbm90IHN0
ciIgaW4gc3RyKGV4Y2luZm8udmFsdWUpCisKKyAgICAgICAgY2xhc3MgTm90QW5FeGNlcHRpb246
CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJv
cikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhOb3RBbkV4Y2Vw
dGlvbik6ICAjIHR5cGU6IGlnbm9yZVt0eXBlLXZhcl0KKyAgICAgICAgICAgICAgICBwYXNzICAj
IHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgYXNzZXJ0ICJtdXN0IGJlIGEgQmFzZUV4Y2VwdGlv
biB0eXBlLCBub3QgTm90QW5FeGNlcHRpb24iIGluIHN0cihleGNpbmZvLnZhbHVlKQorCisgICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoKCJoZWxsbyIsIE5vdEFuRXhjZXB0aW9uKSk6ICAjIHR5cGU6
IGlnbm9yZVthcmctdHlwZV0KKyAgICAgICAgICAgICAgICBwYXNzICAjIHByYWdtYTogbm8gY292
ZXIKKyAgICAgICAgYXNzZXJ0ICJtdXN0IGJlIGEgQmFzZUV4Y2VwdGlvbiB0eXBlLCBub3Qgc3Ry
IiBpbiBzdHIoZXhjaW5mby52YWx1ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
cHl0aG9uL3NldHVwX3BsYW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zZXR1cF9w
bGFuLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzIxOTM5YThhYWMuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zZXR1cF9wbGFuLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotZGVmIHRlc3Rfc2hvd19maXh0dXJlc19hbmRf
dGVzdCh0ZXN0ZGlyKToKLSAgICAiIiIgVmVyaWZpZXMgdGhhdCBmaXh0dXJlcyBhcmUgbm90IGV4
ZWN1dGVkLiAiIiIKLSAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAg
ICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgZGVm
IGFyZygpOgotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCi0gICAgICAgIGRlZiB0ZXN0X2FyZyhh
cmcpOgotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCi0gICAgIiIiCi0gICAgKQotCi0gICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tc2V0dXAtcGxhbiIsIHApCi0gICAgYXNzZXJ0IHJl
c3VsdC5yZXQgPT0gMAotCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAg
ICBbIipTRVRVUCAgICBGIGFyZyoiLCAiKnRlc3RfYXJnIChmaXh0dXJlcyB1c2VkOiBhcmcpIiwg
IipURUFSRE9XTiBGIGFyZyoiXQotICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvcHl0aG9uL3Nob3dfZml4dHVyZXNfcGVyX3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3B5dGhvbi9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0LnB5CmluZGV4IGUxNDM0NGQ0ZWJmNy4uZWY4
NDE4MTlkMDljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zaG93X2Zp
eHR1cmVzX3Blcl90ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3Nob3df
Zml4dHVyZXNfcGVyX3Rlc3QucHkKQEAgLTEsOSArMSw2IEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQotCi0KIGRlZiB0ZXN0X25vX2l0ZW1zX3Nob3VsZF9ub3Rfc2hvd19vdXRwdXQodGVzdGRp
cik6CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZml4dHVyZXMtcGVyLXRlc3Qi
KQotICAgIGFzc2VydCAiZml4dHVyZXMgdXNlZCBieSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3Ry
KCkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmZpeHR1cmVzIHVzZWQgYnkq
IikKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKIApAQCAtMzMsNyArMzAsNyBAQCBkZWYg
dGVzdF9maXh0dXJlc19pbl9tb2R1bGUodGVzdGRpcik6CiAgICAgICAgICAgICAiICAgIGFyZzEg
ZG9jc3RyaW5nIiwKICAgICAgICAgXQogICAgICkKLSAgICBhc3NlcnQgIl9hcmcwIiBub3QgaW4g
cmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
X2FyZzAqIikKIAogCiBkZWYgdGVzdF9maXh0dXJlc19pbl9jb25mdGVzdCh0ZXN0ZGlyKToKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3Rlc3RfZGVwcmVjYXRpb25zLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vdGVzdF9kZXByZWNhdGlvbnMucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYzExZjBiMDNiNC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3Rlc3RfZGVwcmVjYXRpb25zLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMjIgKzAsMCBAQAotaW1wb3J0IHB5dGVzdAotCi1mcm9tIF9weXRlc3QucHl0
aG9uIGltcG9ydCBQeUNvbGxlY3RvcgotCi0KLWNsYXNzIFB5Q29sbGVjdG9yTW9jayhQeUNvbGxl
Y3Rvcik6Ci0gICAgIiIiZXZpbCBoYWNrIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0g
ICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKLQotICAgIGRlZiBfbWFrZWl0ZW0oc2VsZiwgKmsp
OgotICAgICAgICAiIiJoYWNrIHRvIGRpc2FibGUgdGhlIGFjdHVhbCBiZWhhdmlvdXIiIiIKLSAg
ICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCi0KLQotZGVmIHRlc3RfcHljb2xsZWN0b3JfbWFrZWl0
ZW1faXNfZGVwcmVjYXRlZCgpOgotCi0gICAgY29sbGVjdG9yID0gUHlDb2xsZWN0b3JNb2NrKCkK
LSAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwoKToKLSAgICAgICAgY29sbGVjdG9yLm1h
a2VpdGVtKCJmb28iLCAiYmFyIikKLSAgICBhc3NlcnQgY29sbGVjdG9yLmNhbGxlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3B5dGhvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmMzNzlhNTk2NGM4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9weXRob24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9hcHByb3gucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3B5dGhvbi9jb2xsZWN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRo
b24vZml4dHVyZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ludGVncmF0aW9uLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vbWV0YWZ1bmMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3B5dGhvbi9yYWlzZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zZXR1
cF9vbmx5LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vc2V0dXBfcGxhbi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3Nob3dfZml4dHVyZXNfcGVyX3Rlc3QucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi90ZXN0X2RlcHJlY2F0aW9ucy5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2FyZ2NvbXBsZXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X2FyZ2NvbXBsZXRlLnB5CmluZGV4IGIwNDJkZTVjZTViZS4uOWNhYjI0MmMwZTA2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXJnY29tcGxldGUucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2FyZ2NvbXBsZXRlLnB5CkBAIC0xLDkgKzEsOSBA
QAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmlu
dF9mdW5jdGlvbgogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKKwogaW1wb3J0IHB5dGVz
dAogCi0jIHRlc3QgZm9yIF9hcmdjb21wbGV0ZSBidXQgbm90IHNwZWNpZmljIGZvciBhbnkgYXBw
bGljYXRpb24KKyMgVGVzdCBmb3IgX2FyZ2NvbXBsZXRlIGJ1dCBub3Qgc3BlY2lmaWMgZm9yIGFu
eSBhcHBsaWNhdGlvbi4KIAogCiBkZWYgZXF1YWxfd2l0aF9iYXNoKHByZWZpeCwgZmZjLCBmYywg
b3V0PU5vbmUpOgpAQCAtMTEsMzkgKzExLDI3IEBAIGRlZiBlcXVhbF93aXRoX2Jhc2gocHJlZml4
LCBmZmMsIGZjLCBvdXQ9Tm9uZSk6CiAgICAgcmVzX2Jhc2ggPSBzZXQoZmMocHJlZml4KSkKICAg
ICByZXR2YWwgPSBzZXQocmVzKSA9PSByZXNfYmFzaAogICAgIGlmIG91dDoKLSAgICAgICAgb3V0
LndyaXRlKCJlcXVhbF93aXRoX2Jhc2ggJXMgJXNcbiIgJSAocmV0dmFsLCByZXMpKQorICAgICAg
ICBvdXQud3JpdGUoImVxdWFsX3dpdGhfYmFzaCh7fSkge30ge31cbiIuZm9ybWF0KHByZWZpeCwg
cmV0dmFsLCByZXMpKQogICAgICAgICBpZiBub3QgcmV0dmFsOgogICAgICAgICAgICAgb3V0Lndy
aXRlKCIgcHl0aG9uIC0gYmFzaDogJXNcbiIgJSAoc2V0KHJlcykgLSByZXNfYmFzaCkpCiAgICAg
ICAgICAgICBvdXQud3JpdGUoIiBiYXNoIC0gcHl0aG9uOiAlc1xuIiAlIChyZXNfYmFzaCAtIHNl
dChyZXMpKSkKICAgICByZXR1cm4gcmV0dmFsCiAKIAotIyBjb3BpZWQgZnJvbSBhcmdjb21wbGV0
ZS5jb21wbGV0ZXJzIGFzIGltcG9ydCBmcm9tIHRoZXJlCi0jIGFsc28gcHVsbHMgaW4gYXJnY29t
cGxldGUuX19pbml0X18gd2hpY2ggb3BlbnMgZmlsZWRlc2NyaXB0b3IgOQotIyB0aGlzIGdpdmVz
IGFuIElPRXJyb3IgYXQgdGhlIGVuZCBvZiB0ZXN0cnVuCisjIENvcGllZCBmcm9tIGFyZ2NvbXBs
ZXRlLmNvbXBsZXRlcnMgYXMgaW1wb3J0IGZyb20gdGhlcmUuCisjIEFsc28gcHVsbHMgaW4gYXJn
Y29tcGxldGUuX19pbml0X18gd2hpY2ggb3BlbnMgZmlsZWRlc2NyaXB0b3IgOS4KKyMgVGhpcyBn
aXZlcyBhbiBPU0Vycm9yIGF0IHRoZSBlbmQgb2YgdGVzdHJ1bi4KIAogCiBkZWYgX3dyYXBjYWxs
KCphcmdzLCAqKmthcmdzKToKICAgICB0cnk6Ci0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8g
PiAoMiwgNyk6Ci0gICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKmFy
Z3MsICoqa2FyZ3MpLmRlY29kZSgpLnNwbGl0bGluZXMoKQotICAgICAgICBpZiAic3Rkb3V0IiBp
biBrYXJnczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0ZG91dCBhcmd1bWVudCBu
b3QgYWxsb3dlZCwgaXQgd2lsbCBiZSBvdmVycmlkZGVuLiIpCi0gICAgICAgIHByb2Nlc3MgPSBz
dWJwcm9jZXNzLlBvcGVuKHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsICphcmdzLCAqKmthcmdzKQot
ICAgICAgICBvdXRwdXQsIHVudXNlZF9lcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAg
ICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCi0gICAgICAgIGlmIHJldGNvZGU6Ci0gICAgICAg
ICAgICBjbWQgPSBrYXJncy5nZXQoImFyZ3MiKQotICAgICAgICAgICAgaWYgY21kIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgY21kID0gYXJnc1swXQotICAgICAgICAgICAgcmFpc2Ugc3VicHJv
Y2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgY21kKQotICAgICAgICByZXR1cm4gb3V0
cHV0LmRlY29kZSgpLnNwbGl0bGluZXMoKQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVj
a19vdXRwdXQoKmFyZ3MsICoqa2FyZ3MpLmRlY29kZSgpLnNwbGl0bGluZXMoKQogICAgIGV4Y2Vw
dCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgcmV0dXJuIFtdCiAKIAot
Y2xhc3MgRmlsZXNDb21wbGV0ZXIob2JqZWN0KToKLSAgICAiRmlsZSBjb21wbGV0ZXIgY2xhc3Ms
IG9wdGlvbmFsbHkgdGFrZXMgYSBsaXN0IG9mIGFsbG93ZWQgZXh0ZW5zaW9ucyIKK2NsYXNzIEZp
bGVzQ29tcGxldGVyOgorICAgICIiIkZpbGUgY29tcGxldGVyIGNsYXNzLCBvcHRpb25hbGx5IHRh
a2VzIGEgbGlzdCBvZiBhbGxvd2VkIGV4dGVuc2lvbnMuIiIiCiAKICAgICBkZWYgX19pbml0X18o
c2VsZiwgYWxsb3dlZG5hbWVzPSgpLCBkaXJlY3Rvcmllcz1UcnVlKToKICAgICAgICAgIyBGaXgg
aWYgc29tZW9uZSBwYXNzZXMgaW4gYSBzdHJpbmcgaW5zdGVhZCBvZiBhIGxpc3QKQEAgLTg1LDIy
ICs3MywyNSBAQCBjbGFzcyBGaWxlc0NvbXBsZXRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbgogCiAKLWNsYXNzIFRlc3RBcmdDb21wbGV0ZShvYmplY3QpOgotCitjbGFzcyBU
ZXN0QXJnQ29tcGxldGU6CiAgICAgQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnBsYXRmb3JtIGlu
ICgnd2luMzInLCAnZGFyd2luJykiKQotICAgIGRlZiB0ZXN0X2NvbXBhcmVfd2l0aF9jb21wZ2Vu
KHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbXBhcmVfd2l0aF9jb21wZ2VuKHNlbGYsIHRtcGRpcik6
CiAgICAgICAgIGZyb20gX3B5dGVzdC5fYXJnY29tcGxldGUgaW1wb3J0IEZhc3RGaWxlc0NvbXBs
ZXRlcgogCiAgICAgICAgIGZmYyA9IEZhc3RGaWxlc0NvbXBsZXRlcigpCiAgICAgICAgIGZjID0g
RmlsZXNDb21wbGV0ZXIoKQotICAgICAgICBmb3IgeCBpbiBbIi8iLCAiL2QiLCAiL2RhdGEiLCAi
cXFxIiwgIiJdOgotICAgICAgICAgICAgYXNzZXJ0IGVxdWFsX3dpdGhfYmFzaCh4LCBmZmMsIGZj
LCBvdXQ9c3lzLnN0ZG91dCkKKworICAgICAgICB3aXRoIHRtcGRpci5hc19jd2QoKToKKyAgICAg
ICAgICAgIGFzc2VydCBlcXVhbF93aXRoX2Jhc2goIiIsIGZmYywgZmMsIG91dD1zeXMuc3Rkb3V0
KQorCisgICAgICAgICAgICB0bXBkaXIuZW5zdXJlKCJkYXRhIikKKworICAgICAgICAgICAgZm9y
IHggaW4gWyJkIiwgImRhdGEiLCAiZG9lc25vdGV4aXN0IiwgIiJdOgorICAgICAgICAgICAgICAg
IGFzc2VydCBlcXVhbF93aXRoX2Jhc2goeCwgZmZjLCBmYywgb3V0PXN5cy5zdGRvdXQpCiAKICAg
ICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMucGxhdGZvcm0gaW4gKCd3aW4zMicsICdkYXJ3aW4n
KSIpCiAgICAgZGVmIHRlc3RfcmVtb3ZlX2Rpcl9wcmVmaXgoc2VsZik6Ci0gICAgICAgICIiInRo
aXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjb21wZ2VuIGJ1dCBpdCBpcyB3aXRoIGJhc2ggaXRz
ZWxmOgotICAgICAgICBscyAvdXNyLzxUQUI+Ci0gICAgICAgICIiIgorICAgICAgICAiIiJUaGlz
IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY29tcGdlbiBidXQgaXQgaXMgd2l0aCBiYXNoIGl0c2Vs
ZjogbHMgL3Vzci88VEFCPi4iIiIKICAgICAgICAgZnJvbSBfcHl0ZXN0Ll9hcmdjb21wbGV0ZSBp
bXBvcnQgRmFzdEZpbGVzQ29tcGxldGVyCiAKICAgICAgICAgZmZjID0gRmFzdEZpbGVzQ29tcGxl
dGVyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hc3NlcnRpb24ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNzZXJ0aW9uLnB5CmluZGV4IDM5M2NmODE3Yzdl
OS4uMWNiNjNhMzI5ZjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNz
ZXJ0aW9uLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hc3NlcnRpb24ucHkKQEAg
LTEsMzkgKzEsMzUgQEAKLSMgLSotIGNvZGluZzogdXRmLTggLSotCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitpbXBvcnQg
Y29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGV4dHdyYXAKK2Zyb20gdHlwaW5n
IGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQg
T3B0aW9uYWwKKworaW1wb3J0IGF0dHIKIAogaW1wb3J0IF9weXRlc3QuYXNzZXJ0aW9uIGFzIHBs
dWdpbgotaW1wb3J0IHB5CiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGlt
cG9ydCB1dGlsCitmcm9tIF9weXRlc3QgaW1wb3J0IG91dGNvbWVzCiBmcm9tIF9weXRlc3QuYXNz
ZXJ0aW9uIGltcG9ydCB0cnVuY2F0ZQorZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgdXRp
bAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgQVRUUlNfRVFfRklFTEQKIAotUFkzID0gc3lz
LnZlcnNpb25faW5mbyA+PSAoMywgMCkKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBtb2NrX2Nv
bmZpZygpOgotCi0gICAgY2xhc3MgQ29uZmlnKG9iamVjdCk6Ci0gICAgICAgIHZlcmJvc2UgPSBG
YWxzZQogCitkZWYgbW9ja19jb25maWcodmVyYm9zZT0wKToKKyAgICBjbGFzcyBDb25maWc6CiAg
ICAgICAgIGRlZiBnZXRvcHRpb24oc2VsZiwgbmFtZSk6CiAgICAgICAgICAgICBpZiBuYW1lID09
ICJ2ZXJib3NlIjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52ZXJib3NlCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHZlcmJvc2UKICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCJOb3Qg
bW9ja2VkIG91dDogJXMiICUgbmFtZSkKIAogICAgIHJldHVybiBDb25maWcoKQogCiAKLWNsYXNz
IFRlc3RJbXBvcnRIb29rSW5zdGFsbGF0aW9uKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RJbXBvcnRI
b29rSW5zdGFsbGF0aW9uOgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5pdGlhbF9j
b25mdGVzdCIsIFtUcnVlLCBGYWxzZV0pCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJt
b2RlIiwgWyJwbGFpbiIsICJyZXdyaXRlIl0pCiAgICAgZGVmIHRlc3RfY29uZnRlc3RfYXNzZXJ0
aW9uX3Jld3JpdGUoc2VsZiwgdGVzdGRpciwgaW5pdGlhbF9jb25mdGVzdCwgbW9kZSk6Ci0gICAg
ICAgICIiIlRlc3QgdGhhdCBjb25mdGVzdCBmaWxlcyBhcmUgdXNpbmcgYXNzZXJ0aW9uIHJld3Jp
dGUgb24gaW1wb3J0LgotICAgICAgICAoIzE2MTkpCi0gICAgICAgICIiIgorICAgICAgICAiIiJU
ZXN0IHRoYXQgY29uZnRlc3QgZmlsZXMgYXJlIHVzaW5nIGFzc2VydGlvbiByZXdyaXRlIG9uIGlt
cG9ydCAoIzE2MTkpLiIiIgogICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJmb28vdGVzdHMi
KS5lbnN1cmUoZGlyPTEpCiAgICAgICAgIGNvbmZ0ZXN0X3BhdGggPSAiY29uZnRlc3QucHkiIGlm
IGluaXRpYWxfY29uZnRlc3QgZWxzZSAiZm9vL2NvbmZ0ZXN0LnB5IgogICAgICAgICBjb250ZW50
cyA9IHsKQEAgLTc1LDcgKzcxLDIzIEBAIGNsYXNzIFRlc3RJbXBvcnRIb29rSW5zdGFsbGF0aW9u
KG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoWyIqYXNzZXJ0IDEgPT0gMCoiXSkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICI+ICAgICAgIHIuYXNzZXJ0
b3V0Y29tZShwYXNzZWQ9MSkiLAorICAgICAgICAgICAgICAgICJFICAgICAgIEFzc2VydGlvbkVy
cm9yOiAoW1tdW11dLCBbW11bXV0sIFtbXTxUZXN0UmVwb3J0ICo+W11dKSoiLAorICAgICAgICAg
ICAgICAgICJFICAgICAgIGFzc2VydCB7J2ZhaWxlZCc6IDEsLi4uICdza2lwcGVkJzogMH0gPT0g
eydmYWlsZWQnOiAwLC4uLiAnc2tpcHBlZCc6IDB9IiwKKyAgICAgICAgICAgICAgICAiRSAgICAg
ICAgIE9taXR0aW5nIDEgaWRlbnRpY2FsIGl0ZW1zLCB1c2UgLXZ2IHRvIHNob3ciLAorICAgICAg
ICAgICAgICAgICJFICAgICAgICAgRGlmZmVyaW5nIGl0ZW1zOiIsCisgICAgICAgICAgICAgICAg
IkUgICAgICAgICBVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYiLAorICAgICAgICAgICAgXQor
ICAgICAgICApCisgICAgICAgICMgWFhYOiB1bnN0YWJsZSBvdXRwdXQuCisgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lc19yYW5kb20oCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgIkUgICAgICAgICB7J2ZhaWxlZCc6IDF9ICE9IHsnZmFpbGVkJzogMH0iLAorICAgICAg
ICAgICAgICAgICJFICAgICAgICAgeydwYXNzZWQnOiAwfSAhPSB7J3Bhc3NlZCc6IDF9IiwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgKQogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJt
b2RlIiwgWyJwbGFpbiIsICJyZXdyaXRlIl0pCiAgICAgZGVmIHRlc3RfcHl0ZXN0X3BsdWdpbnNf
cmV3cml0ZShzZWxmLCB0ZXN0ZGlyLCBtb2RlKToKQEAgLTEzNCwxNSArMTQ2LDE1IEBAIGNsYXNz
IFRlc3RJbXBvcnRIb29rSW5zdGFsbGF0aW9uKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfcHl0ZXN0
X3BsdWdpbnNfcmV3cml0ZV9tb2R1bGVfbmFtZXNfY29ycmVjdGx5KHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICAiIiJUZXN0IHRoYXQgd2UgbWF0Y2ggZmlsZXMgY29ycmVjdGx5IHdoZW4gdGhleSBh
cmUgbWFya2VkIGZvciByZXdyaXRpbmcgKCMyOTM5KS4iIiIKICAgICAgICAgY29udGVudHMgPSB7
Ci0gICAgICAgICAgICAiY29uZnRlc3QucHkiOiAiIiIKKyAgICAgICAgICAgICJjb25mdGVzdC5w
eSI6ICIiIlwKICAgICAgICAgICAgICAgICBweXRlc3RfcGx1Z2lucyA9ICJoYW0iCiAgICAgICAg
ICAgICAiIiIsCiAgICAgICAgICAgICAiaGFtLnB5IjogIiIsCiAgICAgICAgICAgICAiaGFtc3Rl
ci5weSI6ICIiLAotICAgICAgICAgICAgInRlc3RfZm9vLnB5IjogIiIiCisgICAgICAgICAgICAi
dGVzdF9mb28ucHkiOiAiIiJcCiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfZm9vKHB5dGVzdGNv
bmZpZyk6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBweXRlc3Rjb25maWcucGx1Z2lubWFu
YWdlci5yZXdyaXRlX2hvb2suZmluZF9tb2R1bGUoJ2hhbScpIGlzIG5vdCBOb25lCi0gICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBweXRlc3Rjb25maWcucGx1Z2lubWFuYWdlci5yZXdyaXRlX2hv
b2suZmluZF9tb2R1bGUoJ2hhbXN0ZXInKSBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgIGFz
c2VydCBweXRlc3Rjb25maWcucGx1Z2lubWFuYWdlci5yZXdyaXRlX2hvb2suZmluZF9zcGVjKCdo
YW0nKSBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcHl0ZXN0Y29uZmln
LnBsdWdpbm1hbmFnZXIucmV3cml0ZV9ob29rLmZpbmRfc3BlYygnaGFtc3RlcicpIGlzIE5vbmUK
ICAgICAgICAgICAgICIiIiwKICAgICAgICAgfQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
Kipjb250ZW50cykKQEAgLTE1MCwxMyArMTYyLDEzIEBAIGNsYXNzIFRlc3RJbXBvcnRIb29rSW5z
dGFsbGF0aW9uKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAogICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibW9kZSIsIFsicGxhaW4iLCAicmV3cml0ZSJdKQot
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGx1Z2luX3N0YXRlIiwgWyJkZXZlbG9wbWVu
dCIsICJpbnN0YWxsZWQiXSkKLSAgICBkZWYgdGVzdF9pbnN0YWxsZWRfcGx1Z2luX3Jld3JpdGUo
c2VsZiwgdGVzdGRpciwgbW9kZSwgcGx1Z2luX3N0YXRlKToKKyAgICBkZWYgdGVzdF9pbnN0YWxs
ZWRfcGx1Z2luX3Jld3JpdGUoc2VsZiwgdGVzdGRpciwgbW9kZSwgbW9ua2V5cGF0Y2gpOgorICAg
ICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIs
IHJhaXNpbmc9RmFsc2UpCiAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBob29rIGlzIGluc3RhbGxl
ZCBlYXJseSBlbm91Z2ggc28gdGhhdCBwbHVnaW5zCiAgICAgICAgICMgaW5zdGFsbGVkIHZpYSBz
ZXR1cHRvb2xzIGFyZSByZXdyaXR0ZW4uCiAgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oImhh
bXBrZyIpLmVuc3VyZShkaXI9MSkKICAgICAgICAgY29udGVudHMgPSB7Ci0gICAgICAgICAgICAi
aGFtcGtnL19faW5pdF9fLnB5IjogIiIiCisgICAgICAgICAgICAiaGFtcGtnL19faW5pdF9fLnB5
IjogIiIiXAogICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAogICAgICAgICAgICAgICAg
IEBweXRlc3QuZml4dHVyZQpAQCAtMTY1LDcgKzE3Nyw3IEBAIGNsYXNzIFRlc3RJbXBvcnRIb29r
SW5zdGFsbGF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdmFs
dWVzLnBvcCgwKSA9PSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2sKICAg
ICAgICAgICAgICIiIiwKLSAgICAgICAgICAgICJzcGFtcGx1Z2luLnB5IjogIiIiCisgICAgICAg
ICAgICAic3BhbXBsdWdpbi5weSI6ICIiIlwKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKICAg
ICAgICAgICAgIGZyb20gaGFtcGtnIGltcG9ydCBjaGVja19maXJzdDIKIApAQCAtMTc1LDQ2ICsx
ODcsMzIgQEAgY2xhc3MgVGVzdEltcG9ydEhvb2tJbnN0YWxsYXRpb24ob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcy5wb3AoMCkgPT0gdmFsdWUKICAgICAgICAgICAg
ICAgICByZXR1cm4gY2hlY2sKICAgICAgICAgICAgICIiIiwKLSAgICAgICAgICAgICJtYWlud3Jh
cHBlci5weSI6ICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdCwgcGtnX3Jlc291cmNlcwot
Ci0gICAgICAgICAgICBwbHVnaW5fc3RhdGUgPSAie3BsdWdpbl9zdGF0ZX0iCi0KLSAgICAgICAg
ICAgIGNsYXNzIER1bW15RGlzdEluZm8ob2JqZWN0KToKLSAgICAgICAgICAgICAgICBwcm9qZWN0
X25hbWUgPSAnc3BhbScKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gJzEuMCcKLQotICAgICAg
ICAgICAgICAgIGRlZiBfZ2V0X21ldGFkYXRhKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgICAg
ICAgICAjICdSRUNPUkQnIG1ldGEtZGF0YSBvbmx5IGF2YWlsYWJsZSBpbiBpbnN0YWxsZWQgcGx1
Z2lucwotICAgICAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdSRUNPUkQnIGFuZCBwbHVnaW5f
c3RhdGUgPT0gImluc3RhbGxlZCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWydz
cGFtcGx1Z2luLnB5LHNoYTI1Nj1hYmMsMTIzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2hhbXBrZy9fX2luaXRfXy5weSxzaGEyNTY9YWJjLDEyMyddCi0gICAgICAgICAgICAg
ICAgICAgICMgJ1NPVVJDRVMudHh0JyBtZXRhLWRhdGEgb25seSBhdmFpbGFibGUgZm9yIHBsdWdp
bnMgaW4gZGV2ZWxvcG1lbnQgbW9kZQotICAgICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgPT0g
J1NPVVJDRVMudHh0JyBhbmQgcGx1Z2luX3N0YXRlID09ICJkZXZlbG9wbWVudCI6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gWydzcGFtcGx1Z2luLnB5JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2hhbXBrZy9fX2luaXRfXy5weSddCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBbXQorICAgICAgICAgICAgIm1haW53cmFwcGVyLnB5IjogIiIiXAorICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBv
cnQgaW1wb3J0bGliX21ldGFkYXRhCiAKICAgICAgICAgICAgIGNsYXNzIER1bW15RW50cnlQb2lu
dChvYmplY3QpOgogICAgICAgICAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgICAgICAg
ICBtb2R1bGVfbmFtZSA9ICdzcGFtLnB5JwotICAgICAgICAgICAgICAgIGF0dHJzID0gKCkKLSAg
ICAgICAgICAgICAgICBleHRyYXMgPSBOb25lCi0gICAgICAgICAgICAgICAgZGlzdCA9IER1bW15
RGlzdEluZm8oKQorICAgICAgICAgICAgICAgIGdyb3VwID0gJ3B5dGVzdDExJwogCi0gICAgICAg
ICAgICAgICAgZGVmIGxvYWQoc2VsZiwgcmVxdWlyZT1UcnVlLCAqYXJncywgKiprd2FyZ3MpOgor
ICAgICAgICAgICAgICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICBpbXBv
cnQgc3BhbXBsdWdpbgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3BhbXBsdWdpbgogCi0g
ICAgICAgICAgICBkZWYgaXRlcl9lbnRyeV9wb2ludHMobmFtZSk6Ci0gICAgICAgICAgICAgICAg
eWllbGQgRHVtbXlFbnRyeVBvaW50KCkKKyAgICAgICAgICAgIGNsYXNzIER1bW15RGlzdEluZm8o
b2JqZWN0KToKKyAgICAgICAgICAgICAgICB2ZXJzaW9uID0gJzEuMCcKKyAgICAgICAgICAgICAg
ICBmaWxlcyA9ICgnc3BhbXBsdWdpbi5weScsICdoYW1wa2cvX19pbml0X18ucHknKQorICAgICAg
ICAgICAgICAgIGVudHJ5X3BvaW50cyA9IChEdW1teUVudHJ5UG9pbnQoKSwpCisgICAgICAgICAg
ICAgICAgbWV0YWRhdGEgPSB7J25hbWUnOiAnZm9vJ30KKworICAgICAgICAgICAgZGVmIGRpc3Ry
aWJ1dGlvbnMoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKER1bW15RGlzdEluZm8oKSwpCiAK
LSAgICAgICAgICAgIHBrZ19yZXNvdXJjZXMuaXRlcl9lbnRyeV9wb2ludHMgPSBpdGVyX2VudHJ5
X3BvaW50cworICAgICAgICAgICAgaW1wb3J0bGliX21ldGFkYXRhLmRpc3RyaWJ1dGlvbnMgPSBk
aXN0cmlidXRpb25zCiAgICAgICAgICAgICBweXRlc3QubWFpbigpCi0gICAgICAgICAgICAiIiIu
Zm9ybWF0KAotICAgICAgICAgICAgICAgIHBsdWdpbl9zdGF0ZT1wbHVnaW5fc3RhdGUKLSAgICAg
ICAgICAgICksCi0gICAgICAgICAgICAidGVzdF9mb28ucHkiOiAiIiIKKyAgICAgICAgICAgICIi
IiwKKyAgICAgICAgICAgICJ0ZXN0X2Zvby5weSI6ICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0
KGNoZWNrX2ZpcnN0KToKICAgICAgICAgICAgICAgICBjaGVja19maXJzdChbMTAsIDMwXSwgMzAp
CiAKQEAgLTI3OSwxNiArMjc3LDE1IEBAIGNsYXNzIFRlc3RJbXBvcnRIb29rSW5zdGFsbGF0aW9u
KG9iamVjdCk6CiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3JlZ2lz
dGVyX2Fzc2VydF9yZXdyaXRlX2NoZWNrc190eXBlcyhzZWxmKToKKyAgICBkZWYgdGVzdF9yZWdp
c3Rlcl9hc3NlcnRfcmV3cml0ZV9jaGVja3NfdHlwZXMoc2VsZikgLT4gTm9uZToKICAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBweXRlc3QucmVnaXN0
ZXJfYXNzZXJ0X3Jld3JpdGUoWyJweXRlc3RfdGVzdHNfaW50ZXJuYWxfbm9uX2V4aXN0aW5nIl0p
CisgICAgICAgICAgICBweXRlc3QucmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoWyJweXRlc3RfdGVz
dHNfaW50ZXJuYWxfbm9uX2V4aXN0aW5nIl0pICAjIHR5cGU6IGlnbm9yZQogICAgICAgICBweXRl
c3QucmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoCiAgICAgICAgICAgICAicHl0ZXN0X3Rlc3RzX2lu
dGVybmFsX25vbl9leGlzdGluZyIsICJweXRlc3RfdGVzdHNfaW50ZXJuYWxfbm9uX2V4aXN0aW5n
MiIKICAgICAgICAgKQogCiAKLWNsYXNzIFRlc3RCaW5SZXBySW50ZWdyYXRpb24ob2JqZWN0KToK
LQorY2xhc3MgVGVzdEJpblJlcHJJbnRlZ3JhdGlvbjoKICAgICBkZWYgdGVzdF9weXRlc3RfYXNz
ZXJ0cmVwcl9jb21wYXJlX2NhbGxlZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5t
YWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKQEAgLTMxNCwxNTIgKzMxMSwzMzUgQEAgY2xh
c3MgVGVzdEJpblJlcHJJbnRlZ3JhdGlvbihvYmplY3QpOgogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9oZWxsbypGQUlMKiIsICIqdGVzdF9jaGVjaypQQVNTKiJd
KQogCiAKLWRlZiBjYWxsZXF1YWwobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgotICAgIGNv
bmZpZyA9IG1vY2tfY29uZmlnKCkKLSAgICBjb25maWcudmVyYm9zZSA9IHZlcmJvc2UKLSAgICBy
ZXR1cm4gcGx1Z2luLnB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUoY29uZmlnLCAiPT0iLCBsZWZ0
LCByaWdodCkKK2RlZiBjYWxsb3Aob3A6IHN0ciwgbGVmdDogQW55LCByaWdodDogQW55LCB2ZXJi
b3NlOiBpbnQgPSAwKSAtPiBPcHRpb25hbFtMaXN0W3N0cl1dOgorICAgIGNvbmZpZyA9IG1vY2tf
Y29uZmlnKHZlcmJvc2U9dmVyYm9zZSkKKyAgICByZXR1cm4gcGx1Z2luLnB5dGVzdF9hc3NlcnRy
ZXByX2NvbXBhcmUoY29uZmlnLCBvcCwgbGVmdCwgcmlnaHQpCisKIAorZGVmIGNhbGxlcXVhbChs
ZWZ0OiBBbnksIHJpZ2h0OiBBbnksIHZlcmJvc2U6IGludCA9IDApIC0+IE9wdGlvbmFsW0xpc3Rb
c3RyXV06CisgICAgcmV0dXJuIGNhbGxvcCgiPT0iLCBsZWZ0LCByaWdodCwgdmVyYm9zZSkKIAot
Y2xhc3MgVGVzdEFzc2VydF9yZXByY29tcGFyZShvYmplY3QpOgogCitjbGFzcyBUZXN0QXNzZXJ0
X3JlcHJjb21wYXJlOgogICAgIGRlZiB0ZXN0X2RpZmZlcmVudF90eXBlcyhzZWxmKToKICAgICAg
ICAgYXNzZXJ0IGNhbGxlcXVhbChbMCwgMV0sICJmb28iKSBpcyBOb25lCiAKLSAgICBkZWYgdGVz
dF9zdW1tYXJ5KHNlbGYpOgotICAgICAgICBzdW1tYXJ5ID0gY2FsbGVxdWFsKFswLCAxXSwgWzAs
IDJdKVswXQorICAgIGRlZiB0ZXN0X3N1bW1hcnkoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbGlu
ZXMgPSBjYWxsZXF1YWwoWzAsIDFdLCBbMCwgMl0pCisgICAgICAgIGFzc2VydCBsaW5lcyBpcyBu
b3QgTm9uZQorICAgICAgICBzdW1tYXJ5ID0gbGluZXNbMF0KICAgICAgICAgYXNzZXJ0IGxlbihz
dW1tYXJ5KSA8IDY1CiAKICAgICBkZWYgdGVzdF90ZXh0X2RpZmYoc2VsZik6Ci0gICAgICAgIGRp
ZmYgPSBjYWxsZXF1YWwoInNwYW0iLCAiZWdncyIpWzE6XQotICAgICAgICBhc3NlcnQgIi0gc3Bh
bSIgaW4gZGlmZgotICAgICAgICBhc3NlcnQgIisgZWdncyIgaW4gZGlmZgorICAgICAgICBhc3Nl
cnQgY2FsbGVxdWFsKCJzcGFtIiwgImVnZ3MiKSA9PSBbCisgICAgICAgICAgICAiJ3NwYW0nID09
ICdlZ2dzJyIsCisgICAgICAgICAgICAiLSBlZ2dzIiwKKyAgICAgICAgICAgICIrIHNwYW0iLAor
ICAgICAgICBdCiAKLSAgICBkZWYgdGVzdF90ZXh0X3NraXBwaW5nKHNlbGYpOgorICAgIGRlZiB0
ZXN0X3RleHRfc2tpcHBpbmcoc2VsZikgLT4gTm9uZToKICAgICAgICAgbGluZXMgPSBjYWxsZXF1
YWwoImEiICogNTAgKyAic3BhbSIsICJhIiAqIDUwICsgImVnZ3MiKQorICAgICAgICBhc3NlcnQg
bGluZXMgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0ICJTa2lwcGluZyIgaW4gbGluZXNbMV0K
ICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgICBhc3NlcnQgImEiICogNTAg
bm90IGluIGxpbmUKIAotICAgIGRlZiB0ZXN0X3RleHRfc2tpcHBpbmdfdmVyYm9zZShzZWxmKToK
LSAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwoImEiICogNTAgKyAic3BhbSIsICJhIiAqIDUwICsg
ImVnZ3MiLCB2ZXJib3NlPVRydWUpCi0gICAgICAgIGFzc2VydCAiLSAiICsgImEiICogNTAgKyAi
c3BhbSIgaW4gbGluZXMKLSAgICAgICAgYXNzZXJ0ICIrICIgKyAiYSIgKiA1MCArICJlZ2dzIiBp
biBsaW5lcworICAgIGRlZiB0ZXN0X3RleHRfc2tpcHBpbmdfdmVyYm9zZShzZWxmKSAtPiBOb25l
OgorICAgICAgICBsaW5lcyA9IGNhbGxlcXVhbCgiYSIgKiA1MCArICJzcGFtIiwgImEiICogNTAg
KyAiZWdncyIsIHZlcmJvc2U9MSkKKyAgICAgICAgYXNzZXJ0IGxpbmVzIGlzIG5vdCBOb25lCisg
ICAgICAgIGFzc2VydCAiLSAiICsgImEiICogNTAgKyAiZWdncyIgaW4gbGluZXMKKyAgICAgICAg
YXNzZXJ0ICIrICIgKyAiYSIgKiA1MCArICJzcGFtIiBpbiBsaW5lcwogCi0gICAgZGVmIHRlc3Rf
bXVsdGlsaW5lX3RleHRfZGlmZihzZWxmKToKKyAgICBkZWYgdGVzdF9tdWx0aWxpbmVfdGV4dF9k
aWZmKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGxlZnQgPSAiZm9vXG5zcGFtXG5iYXIiCiAgICAg
ICAgIHJpZ2h0ID0gImZvb1xuZWdnc1xuYmFyIgogICAgICAgICBkaWZmID0gY2FsbGVxdWFsKGxl
ZnQsIHJpZ2h0KQotICAgICAgICBhc3NlcnQgIi0gc3BhbSIgaW4gZGlmZgotICAgICAgICBhc3Nl
cnQgIisgZWdncyIgaW4gZGlmZgorICAgICAgICBhc3NlcnQgZGlmZiBpcyBub3QgTm9uZQorICAg
ICAgICBhc3NlcnQgIi0gZWdncyIgaW4gZGlmZgorICAgICAgICBhc3NlcnQgIisgc3BhbSIgaW4g
ZGlmZgorCisgICAgZGVmIHRlc3RfYnl0ZXNfZGlmZl9ub3JtYWwoc2VsZik6CisgICAgICAgICIi
IkNoZWNrIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGJ5dGVzIGRpZmYgKCM1MjYwKSIiIgorICAgICAg
ICBkaWZmID0gY2FsbGVxdWFsKGIic3BhbSIsIGIiZWdncyIpCisKKyAgICAgICAgYXNzZXJ0IGRp
ZmYgPT0gWworICAgICAgICAgICAgImInc3BhbScgPT0gYidlZ2dzJyIsCisgICAgICAgICAgICAi
QXQgaW5kZXggMCBkaWZmOiBiJ3MnICE9IGInZSciLAorICAgICAgICAgICAgIlVzZSAtdiB0byBn
ZXQgdGhlIGZ1bGwgZGlmZiIsCisgICAgICAgIF0KIAotICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZik6
CisgICAgZGVmIHRlc3RfYnl0ZXNfZGlmZl92ZXJib3NlKHNlbGYpOgorICAgICAgICAiIiJDaGVj
ayBzcGVjaWFsIGhhbmRsaW5nIGZvciBieXRlcyBkaWZmICgjNTI2MCkiIiIKKyAgICAgICAgZGlm
ZiA9IGNhbGxlcXVhbChiInNwYW0iLCBiImVnZ3MiLCB2ZXJib3NlPTEpCisgICAgICAgIGFzc2Vy
dCBkaWZmID09IFsKKyAgICAgICAgICAgICJiJ3NwYW0nID09IGInZWdncyciLAorICAgICAgICAg
ICAgIkF0IGluZGV4IDAgZGlmZjogYidzJyAhPSBiJ2UnIiwKKyAgICAgICAgICAgICJGdWxsIGRp
ZmY6IiwKKyAgICAgICAgICAgICItIGInZWdncyciLAorICAgICAgICAgICAgIisgYidzcGFtJyIs
CisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZikgLT4gTm9uZToKICAgICAgICAg
ZXhwbCA9IGNhbGxlcXVhbChbMCwgMV0sIFswLCAyXSkKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMg
bm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxlbihleHBsKSA+IDEKIAogICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKICAgICAgICAgWyJsZWZ0IiwgInJpZ2h0IiwgImV4cGVjdGVkIl0sCiAg
ICAgICAgIFsKLSAgICAgICAgICAgICgKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKICAgICAg
ICAgICAgICAgICBbMCwgMV0sCiAgICAgICAgICAgICAgICAgWzAsIDJdLAogICAgICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgICAgIEZ1bGwgZGlmZjoKLSAgICAgICAgICAgICAgICAtIFsw
LCAxXQorICAgICAgICAgICAgICAgIC0gWzAsIDJdCiAgICAgICAgICAgICAgICAgPyAgICAgXgot
ICAgICAgICAgICAgICAgICsgWzAsIDJdCisgICAgICAgICAgICAgICAgKyBbMCwgMV0KICAgICAg
ICAgICAgICAgICA/ICAgICBeCiAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgaWQ9
Imxpc3RzIiwKICAgICAgICAgICAgICksCi0gICAgICAgICAgICAoCisgICAgICAgICAgICBweXRl
c3QucGFyYW0oCiAgICAgICAgICAgICAgICAgezA6IDF9LAogICAgICAgICAgICAgICAgIHswOiAy
fSwKICAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICAgICBGdWxsIGRpZmY6Ci0gICAg
ICAgICAgICAgICAgLSB7MDogMX0KKyAgICAgICAgICAgICAgICAtIHswOiAyfQogICAgICAgICAg
ICAgICAgID8gICAgIF4KLSAgICAgICAgICAgICAgICArIHswOiAyfQorICAgICAgICAgICAgICAg
ICsgezA6IDF9CiAgICAgICAgICAgICAgICAgPyAgICAgXgogICAgICAgICAgICAgIiIiLAorICAg
ICAgICAgICAgICAgIGlkPSJkaWN0cyIsCiAgICAgICAgICAgICApLAotICAgICAgICAgICAgKAor
ICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAogICAgICAgICAgICAgICAgIHswLCAxfSwKICAgICAg
ICAgICAgICAgICB7MCwgMn0sCiAgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICAgICAg
RnVsbCBkaWZmOgotICAgICAgICAgICAgICAgIC0gc2V0KFswLCAxXSkKLSAgICAgICAgICAgICAg
ICA/ICAgICAgICAgXgotICAgICAgICAgICAgICAgICsgc2V0KFswLCAyXSkKLSAgICAgICAgICAg
ICAgICA/ICAgICAgICAgXgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgaWYgbm90
IFBZMwotICAgICAgICAgICAgICAgIGVsc2UgIiIiCi0gICAgICAgICAgICAgICAgRnVsbCBkaWZm
OgotICAgICAgICAgICAgICAgIC0gezAsIDF9CisgICAgICAgICAgICAgICAgLSB7MCwgMn0KICAg
ICAgICAgICAgICAgICA/ICAgICBeCi0gICAgICAgICAgICAgICAgKyB7MCwgMn0KKyAgICAgICAg
ICAgICAgICArIHswLCAxfQogICAgICAgICAgICAgICAgID8gICAgIF4KICAgICAgICAgICAgICIi
IiwKKyAgICAgICAgICAgICAgICBpZD0ic2V0cyIsCiAgICAgICAgICAgICApLAogICAgICAgICBd
LAogICAgICkKLSAgICBkZWYgdGVzdF9pdGVyYWJsZV9mdWxsX2RpZmYoc2VsZiwgbGVmdCwgcmln
aHQsIGV4cGVjdGVkKToKKyAgICBkZWYgdGVzdF9pdGVyYWJsZV9mdWxsX2RpZmYoc2VsZiwgbGVm
dCwgcmlnaHQsIGV4cGVjdGVkKSAtPiBOb25lOgogICAgICAgICAiIiJUZXN0IHRoZSBmdWxsIGRp
ZmYgYXNzZXJ0aW9uIGZhaWx1cmUgZXhwbGFuYXRpb24uCiAKICAgICAgICAgV2hlbiB2ZXJib3Nl
IGlzIEZhbHNlLCB0aGVuIGp1c3QgYSAtdiBub3RpY2UgdG8gZ2V0IHRoZSBkaWZmIGlzIHJlbmRl
cmVkLAogICAgICAgICB3aGVuIHZlcmJvc2UgaXMgVHJ1ZSwgdGhlbiBuZGlmZiBvZiB0aGUgcHBy
aW50IGlzIHJldHVybmVkLgogICAgICAgICAiIiIKLSAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChs
ZWZ0LCByaWdodCwgdmVyYm9zZT1GYWxzZSkKKyAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChsZWZ0
LCByaWdodCwgdmVyYm9zZT0wKQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQogICAg
ICAgICBhc3NlcnQgZXhwbFstMV0gPT0gIlVzZSAtdiB0byBnZXQgdGhlIGZ1bGwgZGlmZiIKLSAg
ICAgICAgZXhwbCA9ICJcbiIuam9pbihjYWxsZXF1YWwobGVmdCwgcmlnaHQsIHZlcmJvc2U9VHJ1
ZSkpCi0gICAgICAgIGFzc2VydCBleHBsLmVuZHN3aXRoKHRleHR3cmFwLmRlZGVudChleHBlY3Rl
ZCkuc3RyaXAoKSkKKyAgICAgICAgdmVyYm9zZV9leHBsID0gY2FsbGVxdWFsKGxlZnQsIHJpZ2h0
LCB2ZXJib3NlPTEpCisgICAgICAgIGFzc2VydCB2ZXJib3NlX2V4cGwgaXMgbm90IE5vbmUKKyAg
ICAgICAgYXNzZXJ0ICJcbiIuam9pbih2ZXJib3NlX2V4cGwpLmVuZHN3aXRoKHRleHR3cmFwLmRl
ZGVudChleHBlY3RlZCkuc3RyaXAoKSkKIAotICAgIGRlZiB0ZXN0X2xpc3RfZGlmZmVyZW50X2xl
bmd0aHMoc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdF9kaWZmZXJlbnRfbGVuZ3RocyhzZWxmKSAt
PiBOb25lOgogICAgICAgICBleHBsID0gY2FsbGVxdWFsKFswLCAxXSwgWzAsIDEsIDJdKQorICAg
ICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgbGVuKGV4cGwpID4g
MQogICAgICAgICBleHBsID0gY2FsbGVxdWFsKFswLCAxLCAyXSwgWzAsIDFdKQorICAgICAgICBh
c3NlcnQgZXhwbCBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgbGVuKGV4cGwpID4gMQogCi0g
ICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICBkZWYgdGVzdF9saXN0X3dyYXBfZm9yX211bHRp
cGxlX2xpbmVzKHNlbGYpOgorICAgICAgICBsb25nX2QgPSAiZCIgKiA4MAorICAgICAgICBsMSA9
IFsiYSIsICJiIiwgImMiXQorICAgICAgICBsMiA9IFsiYSIsICJiIiwgImMiLCBsb25nX2RdCisg
ICAgICAgIGRpZmYgPSBjYWxsZXF1YWwobDEsIGwyLCB2ZXJib3NlPVRydWUpCisgICAgICAgIGFz
c2VydCBkaWZmID09IFsKKyAgICAgICAgICAgICJbJ2EnLCAnYicsICdjJ10gPT0gWydhJywgJ2In
LCAnYy4uLmRkZGRkZGRkZGRkZCddIiwKKyAgICAgICAgICAgICJSaWdodCBjb250YWlucyBvbmUg
bW9yZSBpdGVtOiAnIiArIGxvbmdfZCArICInIiwKKyAgICAgICAgICAgICJGdWxsIGRpZmY6IiwK
KyAgICAgICAgICAgICIgIFsiLAorICAgICAgICAgICAgIiAgICdhJywiLAorICAgICAgICAgICAg
IiAgICdiJywiLAorICAgICAgICAgICAgIiAgICdjJywiLAorICAgICAgICAgICAgIi0gICciICsg
bG9uZ19kICsgIicsIiwKKyAgICAgICAgICAgICIgIF0iLAorICAgICAgICBdCisKKyAgICAgICAg
ZGlmZiA9IGNhbGxlcXVhbChsMiwgbDEsIHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IGRp
ZmYgPT0gWworICAgICAgICAgICAgIlsnYScsICdiJywgJ2MuLi5kZGRkZGRkZGRkZGQnXSA9PSBb
J2EnLCAnYicsICdjJ10iLAorICAgICAgICAgICAgIkxlZnQgY29udGFpbnMgb25lIG1vcmUgaXRl
bTogJyIgKyBsb25nX2QgKyAiJyIsCisgICAgICAgICAgICAiRnVsbCBkaWZmOiIsCisgICAgICAg
ICAgICAiICBbIiwKKyAgICAgICAgICAgICIgICAnYScsIiwKKyAgICAgICAgICAgICIgICAnYics
IiwKKyAgICAgICAgICAgICIgICAnYycsIiwKKyAgICAgICAgICAgICIrICAnIiArIGxvbmdfZCAr
ICInLCIsCisgICAgICAgICAgICAiICBdIiwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfbGlz
dF93cmFwX2Zvcl93aWR0aF9yZXdyYXBfc2FtZV9sZW5ndGgoc2VsZik6CisgICAgICAgIGxvbmdf
YSA9ICJhIiAqIDMwCisgICAgICAgIGxvbmdfYiA9ICJiIiAqIDMwCisgICAgICAgIGxvbmdfYyA9
ICJjIiAqIDMwCisgICAgICAgIGwxID0gW2xvbmdfYSwgbG9uZ19iLCBsb25nX2NdCisgICAgICAg
IGwyID0gW2xvbmdfYiwgbG9uZ19jLCBsb25nX2FdCisgICAgICAgIGRpZmYgPSBjYWxsZXF1YWwo
bDEsIGwyLCB2ZXJib3NlPVRydWUpCisgICAgICAgIGFzc2VydCBkaWZmID09IFsKKyAgICAgICAg
ICAgICJbJ2FhYWFhYWFhYWFhLi4uY2NjY2NjY2NjY2NjJ10gPT0gWydiYmJiYmJiYmJiYi4uLmFh
YWFhYWFhYWFhYSddIiwKKyAgICAgICAgICAgICJBdCBpbmRleCAwIGRpZmY6ICdhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWEnICE9ICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIn
IiwKKyAgICAgICAgICAgICJGdWxsIGRpZmY6IiwKKyAgICAgICAgICAgICIgIFsiLAorICAgICAg
ICAgICAgIisgICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnLCIsCisgICAgICAgICAg
ICAiICAgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicsIiwKKyAgICAgICAgICAgICIg
ICAnY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjJywiLAorICAgICAgICAgICAgIi0gICdh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnLCIsCisgICAgICAgICAgICAiICBdIiwKKyAg
ICAgICAgXQorCisgICAgZGVmIHRlc3RfbGlzdF9kb250X3dyYXBfc3RyaW5ncyhzZWxmKToKKyAg
ICAgICAgbG9uZ19hID0gImEiICogMTAKKyAgICAgICAgbDEgPSBbImEiXSArIFtsb25nX2EgZm9y
IF8gaW4gcmFuZ2UoMCwgNyldCisgICAgICAgIGwyID0gWyJzaG91bGQgbm90IGdldCB3cmFwcGVk
Il0KKyAgICAgICAgZGlmZiA9IGNhbGxlcXVhbChsMSwgbDIsIHZlcmJvc2U9VHJ1ZSkKKyAgICAg
ICAgYXNzZXJ0IGRpZmYgPT0gWworICAgICAgICAgICAgIlsnYScsICdhYWFhYWEuLi5hYWFhYWFh
JywgLi4uXSA9PSBbJ3Nob3VsZCBub3QgZ2V0IHdyYXBwZWQnXSIsCisgICAgICAgICAgICAiQXQg
aW5kZXggMCBkaWZmOiAnYScgIT0gJ3Nob3VsZCBub3QgZ2V0IHdyYXBwZWQnIiwKKyAgICAgICAg
ICAgICJMZWZ0IGNvbnRhaW5zIDcgbW9yZSBpdGVtcywgZmlyc3QgZXh0cmEgaXRlbTogJ2FhYWFh
YWFhYWEnIiwKKyAgICAgICAgICAgICJGdWxsIGRpZmY6IiwKKyAgICAgICAgICAgICIgIFsiLAor
ICAgICAgICAgICAgIi0gICdzaG91bGQgbm90IGdldCB3cmFwcGVkJywiLAorICAgICAgICAgICAg
IisgICdhJywiLAorICAgICAgICAgICAgIisgICdhYWFhYWFhYWFhJywiLAorICAgICAgICAgICAg
IisgICdhYWFhYWFhYWFhJywiLAorICAgICAgICAgICAgIisgICdhYWFhYWFhYWFhJywiLAorICAg
ICAgICAgICAgIisgICdhYWFhYWFhYWFhJywiLAorICAgICAgICAgICAgIisgICdhYWFhYWFhYWFh
JywiLAorICAgICAgICAgICAgIisgICdhYWFhYWFhYWFhJywiLAorICAgICAgICAgICAgIisgICdh
YWFhYWFhYWFhJywiLAorICAgICAgICAgICAgIiAgXSIsCisgICAgICAgIF0KKworICAgIGRlZiB0
ZXN0X2RpY3Rfd3JhcChzZWxmKToKKyAgICAgICAgZDEgPSB7ImNvbW1vbiI6IDEsICJlbnYiOiB7
ImVudjEiOiAxLCAiZW52MiI6IDJ9fQorICAgICAgICBkMiA9IHsiY29tbW9uIjogMSwgImVudiI6
IHsiZW52MSI6IDF9fQorCisgICAgICAgIGRpZmYgPSBjYWxsZXF1YWwoZDEsIGQyLCB2ZXJib3Nl
PVRydWUpCisgICAgICAgIGFzc2VydCBkaWZmID09IFsKKyAgICAgICAgICAgICJ7J2NvbW1vbic6
IDEsLi4uMSwgJ2VudjInOiAyfX0gPT0geydjb21tb24nOiAxLC4uLjogeydlbnYxJzogMX19IiwK
KyAgICAgICAgICAgICJPbWl0dGluZyAxIGlkZW50aWNhbCBpdGVtcywgdXNlIC12diB0byBzaG93
IiwKKyAgICAgICAgICAgICJEaWZmZXJpbmcgaXRlbXM6IiwKKyAgICAgICAgICAgICJ7J2Vudic6
IHsnZW52MSc6IDEsICdlbnYyJzogMn19ICE9IHsnZW52JzogeydlbnYxJzogMX19IiwKKyAgICAg
ICAgICAgICJGdWxsIGRpZmY6IiwKKyAgICAgICAgICAgICItIHsnY29tbW9uJzogMSwgJ2Vudic6
IHsnZW52MSc6IDF9fSIsCisgICAgICAgICAgICAiKyB7J2NvbW1vbic6IDEsICdlbnYnOiB7J2Vu
djEnOiAxLCAnZW52Mic6IDJ9fSIsCisgICAgICAgICAgICAiPyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKysrKysrKysrKysiLAorICAgICAgICBdCisKKyAgICAgICAgbG9uZ19hID0g
ImEiICogODAKKyAgICAgICAgc3ViID0geyJsb25nX2EiOiBsb25nX2EsICJzdWIxIjogeyJsb25n
X2EiOiAic3Vic3RyaW5nIHRoYXQgZ2V0cyB3cmFwcGVkICIgKiAyfX0KKyAgICAgICAgZDEgPSB7
ImVudiI6IHsic3ViIjogc3VifX0KKyAgICAgICAgZDIgPSB7ImVudiI6IHsic3ViIjogc3VifSwg
Im5ldyI6IDF9CisgICAgICAgIGRpZmYgPSBjYWxsZXF1YWwoZDEsIGQyLCB2ZXJib3NlPVRydWUp
CisgICAgICAgIGFzc2VydCBkaWZmID09IFsKKyAgICAgICAgICAgICJ7J2Vudic6IHsnc3ViLi4u
IHdyYXBwZWQgJ319fX0gPT0geydlbnYnOiB7J3N1Yi4uLn19fSwgJ25ldyc6IDF9IiwKKyAgICAg
ICAgICAgICJPbWl0dGluZyAxIGlkZW50aWNhbCBpdGVtcywgdXNlIC12diB0byBzaG93IiwKKyAg
ICAgICAgICAgICJSaWdodCBjb250YWlucyAxIG1vcmUgaXRlbToiLAorICAgICAgICAgICAgInsn
bmV3JzogMX0iLAorICAgICAgICAgICAgIkZ1bGwgZGlmZjoiLAorICAgICAgICAgICAgIiAgeyIs
CisgICAgICAgICAgICAiICAgJ2Vudic6IHsnc3ViJzogeydsb25nX2EnOiAnIiArIGxvbmdfYSAr
ICInLCIsCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICdzdWIxJzogeydsb25nX2En
OiAnc3Vic3RyaW5nIHRoYXQgZ2V0cyB3cmFwcGVkIHN1YnN0cmluZyAnIiwKKyAgICAgICAgICAg
ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGF0IGdldHMgd3JhcHBl
ZCAnfX19LCIsCisgICAgICAgICAgICAiLSAgJ25ldyc6IDEsIiwKKyAgICAgICAgICAgICIgIH0i
LAorICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAg
IGV4cGwgPSBjYWxsZXF1YWwoeyJhIjogMH0sIHsiYSI6IDF9KQorICAgICAgICBhc3NlcnQgZXhw
bCBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgbGVuKGV4cGwpID4gMQogCi0gICAgZGVmIHRl
c3RfZGljdF9vbWl0dGluZyhzZWxmKToKKyAgICBkZWYgdGVzdF9kaWN0X29taXR0aW5nKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKHsiYSI6IDAsICJiIjogMX0sIHsi
YSI6IDEsICJiIjogMX0pCisgICAgICAgIGFzc2VydCBsaW5lcyBpcyBub3QgTm9uZQogICAgICAg
ICBhc3NlcnQgbGluZXNbMV0uc3RhcnRzd2l0aCgiT21pdHRpbmcgMSBpZGVudGljYWwgaXRlbSIp
CiAgICAgICAgIGFzc2VydCAiQ29tbW9uIGl0ZW1zIiBub3QgaW4gbGluZXMKICAgICAgICAgZm9y
IGxpbmUgaW4gbGluZXNbMTpdOgogICAgICAgICAgICAgYXNzZXJ0ICJiIiBub3QgaW4gbGluZQog
Ci0gICAgZGVmIHRlc3RfZGljdF9vbWl0dGluZ193aXRoX3ZlcmJvc2l0eV8xKHNlbGYpOgotICAg
ICAgICAiIiIgRW5zdXJlIGRpZmZlcmluZyBpdGVtcyBhcmUgdmlzaWJsZSBmb3IgdmVyYm9zaXR5
PTEgKCMxNTEyKSAiIiIKKyAgICBkZWYgdGVzdF9kaWN0X29taXR0aW5nX3dpdGhfdmVyYm9zaXR5
XzEoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiRW5zdXJlIGRpZmZlcmluZyBpdGVtcyBhcmUg
dmlzaWJsZSBmb3IgdmVyYm9zaXR5PTEgKCMxNTEyKS4iIiIKICAgICAgICAgbGluZXMgPSBjYWxs
ZXF1YWwoeyJhIjogMCwgImIiOiAxfSwgeyJhIjogMSwgImIiOiAxfSwgdmVyYm9zZT0xKQorICAg
ICAgICBhc3NlcnQgbGluZXMgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxpbmVzWzFdLnN0
YXJ0c3dpdGgoIk9taXR0aW5nIDEgaWRlbnRpY2FsIGl0ZW0iKQogICAgICAgICBhc3NlcnQgbGlu
ZXNbMl0uc3RhcnRzd2l0aCgiRGlmZmVyaW5nIGl0ZW1zIikKICAgICAgICAgYXNzZXJ0IGxpbmVz
WzNdID09ICJ7J2EnOiAwfSAhPSB7J2EnOiAxfSIKICAgICAgICAgYXNzZXJ0ICJDb21tb24gaXRl
bXMiIG5vdCBpbiBsaW5lcwogCi0gICAgZGVmIHRlc3RfZGljdF9vbWl0dGluZ193aXRoX3ZlcmJv
c2l0eV8yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2RpY3Rfb21pdHRpbmdfd2l0aF92ZXJib3NpdHlf
MihzZWxmKSAtPiBOb25lOgogICAgICAgICBsaW5lcyA9IGNhbGxlcXVhbCh7ImEiOiAwLCAiYiI6
IDF9LCB7ImEiOiAxLCAiYiI6IDF9LCB2ZXJib3NlPTIpCisgICAgICAgIGFzc2VydCBsaW5lcyBp
cyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgbGluZXNbMV0uc3RhcnRzd2l0aCgiQ29tbW9uIGl0
ZW1zOiIpCiAgICAgICAgIGFzc2VydCAiT21pdHRpbmciIG5vdCBpbiBsaW5lc1sxXQogICAgICAg
ICBhc3NlcnQgbGluZXNbMl0gPT0gInsnYic6IDF9IgogCi0gICAgZGVmIHRlc3Rfc2V0KHNlbGYp
OgorICAgIGRlZiB0ZXN0X2RpY3RfZGlmZmVyZW50X2l0ZW1zKHNlbGYpOgorICAgICAgICBsaW5l
cyA9IGNhbGxlcXVhbCh7ImEiOiAwfSwgeyJiIjogMSwgImMiOiAyfSwgdmVyYm9zZT0yKQorICAg
ICAgICBhc3NlcnQgbGluZXMgPT0gWworICAgICAgICAgICAgInsnYSc6IDB9ID09IHsnYic6IDEs
ICdjJzogMn0iLAorICAgICAgICAgICAgIkxlZnQgY29udGFpbnMgMSBtb3JlIGl0ZW06IiwKKyAg
ICAgICAgICAgICJ7J2EnOiAwfSIsCisgICAgICAgICAgICAiUmlnaHQgY29udGFpbnMgMiBtb3Jl
IGl0ZW1zOiIsCisgICAgICAgICAgICAieydiJzogMSwgJ2MnOiAyfSIsCisgICAgICAgICAgICAi
RnVsbCBkaWZmOiIsCisgICAgICAgICAgICAiLSB7J2InOiAxLCAnYyc6IDJ9IiwKKyAgICAgICAg
ICAgICIrIHsnYSc6IDB9IiwKKyAgICAgICAgXQorICAgICAgICBsaW5lcyA9IGNhbGxlcXVhbCh7
ImIiOiAxLCAiYyI6IDJ9LCB7ImEiOiAwfSwgdmVyYm9zZT0yKQorICAgICAgICBhc3NlcnQgbGlu
ZXMgPT0gWworICAgICAgICAgICAgInsnYic6IDEsICdjJzogMn0gPT0geydhJzogMH0iLAorICAg
ICAgICAgICAgIkxlZnQgY29udGFpbnMgMiBtb3JlIGl0ZW1zOiIsCisgICAgICAgICAgICAieydi
JzogMSwgJ2MnOiAyfSIsCisgICAgICAgICAgICAiUmlnaHQgY29udGFpbnMgMSBtb3JlIGl0ZW06
IiwKKyAgICAgICAgICAgICJ7J2EnOiAwfSIsCisgICAgICAgICAgICAiRnVsbCBkaWZmOiIsCisg
ICAgICAgICAgICAiLSB7J2EnOiAwfSIsCisgICAgICAgICAgICAiKyB7J2InOiAxLCAnYyc6IDJ9
IiwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3Rfc2VxdWVuY2VfZGlmZmVyZW50X2l0ZW1zKHNl
bGYpOgorICAgICAgICBsaW5lcyA9IGNhbGxlcXVhbCgoMSwgMiksICgzLCA0LCA1KSwgdmVyYm9z
ZT0yKQorICAgICAgICBhc3NlcnQgbGluZXMgPT0gWworICAgICAgICAgICAgIigxLCAyKSA9PSAo
MywgNCwgNSkiLAorICAgICAgICAgICAgIkF0IGluZGV4IDAgZGlmZjogMSAhPSAzIiwKKyAgICAg
ICAgICAgICJSaWdodCBjb250YWlucyBvbmUgbW9yZSBpdGVtOiA1IiwKKyAgICAgICAgICAgICJG
dWxsIGRpZmY6IiwKKyAgICAgICAgICAgICItICgzLCA0LCA1KSIsCisgICAgICAgICAgICAiKyAo
MSwgMikiLAorICAgICAgICBdCisgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKCgxLCAyLCAzKSwg
KDQsKSwgdmVyYm9zZT0yKQorICAgICAgICBhc3NlcnQgbGluZXMgPT0gWworICAgICAgICAgICAg
IigxLCAyLCAzKSA9PSAoNCwpIiwKKyAgICAgICAgICAgICJBdCBpbmRleCAwIGRpZmY6IDEgIT0g
NCIsCisgICAgICAgICAgICAiTGVmdCBjb250YWlucyAyIG1vcmUgaXRlbXMsIGZpcnN0IGV4dHJh
IGl0ZW06IDIiLAorICAgICAgICAgICAgIkZ1bGwgZGlmZjoiLAorICAgICAgICAgICAgIi0gKDQs
KSIsCisgICAgICAgICAgICAiKyAoMSwgMiwgMykiLAorICAgICAgICBdCisKKyAgICBkZWYgdGVz
dF9zZXQoc2VsZikgLT4gTm9uZToKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbCh7MCwgMX0sIHsw
LCAyfSkKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxl
bihleHBsKSA+IDEKIAotICAgIGRlZiB0ZXN0X2Zyb3plbnpldChzZWxmKToKKyAgICBkZWYgdGVz
dF9mcm96ZW56ZXQoc2VsZikgLT4gTm9uZToKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChmcm96
ZW5zZXQoWzAsIDFdKSwgezAsIDJ9KQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQog
ICAgICAgICBhc3NlcnQgbGVuKGV4cGwpID4gMQogCi0gICAgZGVmIHRlc3RfU2VxdWVuY2Uoc2Vs
Zik6Ci0gICAgICAgIGNvbCA9IHB5LmJ1aWx0aW4uX3RyeWltcG9ydCgiY29sbGVjdGlvbnMuYWJj
IiwgImNvbGxlY3Rpb25zIiwgInN5cyIpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKGNvbCwgIk11
dGFibGVTZXF1ZW5jZSIpOgotICAgICAgICAgICAgcHl0ZXN0LnNraXAoImNhbm5vdCBpbXBvcnQg
TXV0YWJsZVNlcXVlbmNlIikKLSAgICAgICAgTXV0YWJsZVNlcXVlbmNlID0gY29sLk11dGFibGVT
ZXF1ZW5jZQotCi0gICAgICAgIGNsYXNzIFRlc3RTZXF1ZW5jZShNdXRhYmxlU2VxdWVuY2UpOiAg
IyB3b3JrcyB3aXRoIGEgU2VxdWVuY2Ugc3ViY2xhc3MKLQorICAgIGRlZiB0ZXN0X1NlcXVlbmNl
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICMgVGVzdCBjb21wYXJpbmcgd2l0aCBhIFNlcXVlbmNl
IHN1YmNsYXNzLgorICAgICAgICAjIFRPRE8ocHkzNik6IEluaGVyaXQgZnJvbSB0eXBpbmcuTXV0
YWJsZVNlcXVlbmNlW2ludF0uCisgICAgICAgIGNsYXNzIFRlc3RTZXF1ZW5jZShjb2xsZWN0aW9u
cy5hYmMuTXV0YWJsZVNlcXVlbmNlKTogICMgdHlwZTogaWdub3JlW3R5cGUtYXJnXQogICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZXJhYmxlKToKICAgICAgICAgICAgICAgICBzZWxm
LmVsZW1lbnRzID0gbGlzdChpdGVyYWJsZSkKIApAQCAtNDc5LDUxICs2NTksODQgQEAgY2xhc3Mg
VGVzdEFzc2VydF9yZXByY29tcGFyZShvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKIAog
ICAgICAgICBleHBsID0gY2FsbGVxdWFsKFRlc3RTZXF1ZW5jZShbMCwgMV0pLCBsaXN0KFswLCAy
XSkpCisgICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBsZW4o
ZXhwbCkgPiAxCiAKLSAgICBkZWYgdGVzdF9saXN0X3R1cGxlcyhzZWxmKToKKyAgICBkZWYgdGVz
dF9saXN0X3R1cGxlcyhzZWxmKSAtPiBOb25lOgogICAgICAgICBleHBsID0gY2FsbGVxdWFsKFtd
LCBbKDEsIDIpXSkKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgYXNz
ZXJ0IGxlbihleHBsKSA+IDEKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChbKDEsIDIpXSwgW10p
CisgICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBsZW4oZXhw
bCkgPiAxCiAKLSAgICBkZWYgdGVzdF9saXN0X2JhZF9yZXByKHNlbGYpOgorICAgIGRlZiB0ZXN0
X3JlcHJfdmVyYm9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICBjbGFzcyBOdW1zOgorICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bXMpOgorICAgICAgICAgICAgICAgIHNlbGYubnVt
cyA9IG51bXMKKworICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAg
ICAgIHJldHVybiBzdHIoc2VsZi5udW1zKQorCisgICAgICAgIGxpc3RfeCA9IGxpc3QocmFuZ2Uo
NTAwMCkpCisgICAgICAgIGxpc3RfeSA9IGxpc3QocmFuZ2UoNTAwMCkpCisgICAgICAgIGxpc3Rf
eVtsZW4obGlzdF95KSAvLyAyXSA9IDMKKyAgICAgICAgbnVtc194ID0gTnVtcyhsaXN0X3gpCisg
ICAgICAgIG51bXNfeSA9IE51bXMobGlzdF95KQorCisgICAgICAgIGFzc2VydCBjYWxsZXF1YWwo
bnVtc194LCBudW1zX3kpIGlzIE5vbmUKIAotICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAg
ICAgIGV4cGwgPSBjYWxsZXF1YWwobnVtc194LCBudW1zX3ksIHZlcmJvc2U9MSkKKyAgICAgICAg
YXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0ICIrIiArIHJlcHIobnVtc194
KSBpbiBleHBsCisgICAgICAgIGFzc2VydCAiLSIgKyByZXByKG51bXNfeSkgaW4gZXhwbAogCisg
ICAgICAgIGV4cGwgPSBjYWxsZXF1YWwobnVtc194LCBudW1zX3ksIHZlcmJvc2U9MikKKyAgICAg
ICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0ICIrIiArIHJlcHIobnVt
c194KSBpbiBleHBsCisgICAgICAgIGFzc2VydCAiLSIgKyByZXByKG51bXNfeSkgaW4gZXhwbAor
CisgICAgZGVmIHRlc3RfbGlzdF9iYWRfcmVwcihzZWxmKSAtPiBOb25lOgorICAgICAgICBjbGFz
cyBBOgogICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoNDIpCiAKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChbXSwgW0EoKV0p
CisgICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCAiVmFsdWVF
cnJvciIgaW4gIiIuam9pbihleHBsKQotICAgICAgICBleHBsID0gY2FsbGVxdWFsKHt9LCB7IjEi
OiBBKCl9KQotICAgICAgICBhc3NlcnQgImZhdWx0eSIgaW4gIiIuam9pbihleHBsKQorICAgICAg
ICBleHBsID0gY2FsbGVxdWFsKHt9LCB7IjEiOiBBKCl9LCB2ZXJib3NlPTIpCisgICAgICAgIGFz
c2VydCBleHBsIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBleHBsWzBdLnN0YXJ0c3dpdGgo
Int9ID09IDxbVmFsdWVFcnJvciIpCisgICAgICAgIGFzc2VydCAicmFpc2VkIGluIHJlcHIiIGlu
IGV4cGxbMF0KKyAgICAgICAgYXNzZXJ0IGV4cGxbMTpdID09IFsKKyAgICAgICAgICAgICIocHl0
ZXN0X2Fzc2VydGlvbiBwbHVnaW46IHJlcHJlc2VudGF0aW9uIG9mIGRldGFpbHMgZmFpbGVkOiIK
KyAgICAgICAgICAgICIge306e306IFZhbHVlRXJyb3I6IDQyLiIuZm9ybWF0KAorICAgICAgICAg
ICAgICAgIF9fZmlsZV9fLCBBLl9fcmVwcl9fLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMQor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICIgUHJvYmFibHkgYW4gb2JqZWN0IGhhcyBhIGZh
dWx0eSBfX3JlcHJfXy4pIiwKKyAgICAgICAgXQogCiAgICAgZGVmIHRlc3Rfb25lX3JlcHJfZW1w
dHkoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICB0aGUgZmF1bHR5IGVtcHR5IHN0cmluZyBy
ZXByIGRpZCB0cmlnZ2VyCi0gICAgICAgIGFuIHVuYm91bmQgbG9jYWwgZXJyb3IgaW4gX2RpZmZf
dGV4dAotICAgICAgICAiIiIKKyAgICAgICAgIiIiVGhlIGZhdWx0eSBlbXB0eSBzdHJpbmcgcmVw
ciBkaWQgdHJpZ2dlciBhbiB1bmJvdW5kIGxvY2FsIGVycm9yIGluIF9kaWZmX3RleHQuIiIiCiAK
ICAgICAgICAgY2xhc3MgQShzdHIpOgotCiAgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6
CiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChB
KCksICIiKQogICAgICAgICBhc3NlcnQgbm90IGV4cGwKIAotICAgIGRlZiB0ZXN0X3JlcHJfbm9f
ZXhjKHNlbGYpOgotICAgICAgICBleHBsID0gIiAiLmpvaW4oY2FsbGVxdWFsKCJmb28iLCAiYmFy
IikpCi0gICAgICAgIGFzc2VydCAicmFpc2VkIGluIHJlcHIoKSIgbm90IGluIGV4cGwKKyAgICBk
ZWYgdGVzdF9yZXByX25vX2V4YyhzZWxmKSAtPiBOb25lOgorICAgICAgICBleHBsID0gY2FsbGVx
dWFsKCJmb28iLCAiYmFyIikKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKKyAgICAg
ICAgYXNzZXJ0ICJyYWlzZWQgaW4gcmVwcigpIiBub3QgaW4gIiAiLmpvaW4oZXhwbCkKIAogICAg
IGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIGxlZnQgPSBweS5idWlsdGluLl90b3Rl
eHQoIsKj4oKsIiwgInV0Zi04IikKLSAgICAgICAgcmlnaHQgPSBweS5idWlsdGluLl90b3RleHQo
IsKjIiwgInV0Zi04IikKLSAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChsZWZ0LCByaWdodCkKLSAg
ICAgICAgYXNzZXJ0IGV4cGxbMF0gPT0gcHkuYnVpbHRpbi5fdG90ZXh0KCInwqPigqwnID09ICfC
oyciLCAidXRmLTgiKQotICAgICAgICBhc3NlcnQgZXhwbFsxXSA9PSBweS5idWlsdGluLl90b3Rl
eHQoIi0gwqPigqwiLCAidXRmLTgiKQotICAgICAgICBhc3NlcnQgZXhwbFsyXSA9PSBweS5idWls
dGluLl90b3RleHQoIisgwqMiLCAidXRmLTgiKQorICAgICAgICBhc3NlcnQgY2FsbGVxdWFsKCLC
o+KCrCIsICLCoyIpID09IFsKKyAgICAgICAgICAgICInwqPigqwnID09ICfCoyciLAorICAgICAg
ICAgICAgIi0gwqMiLAorICAgICAgICAgICAgIisgwqPigqwiLAorICAgICAgICBdCiAKICAgICBk
ZWYgdGVzdF9ub25hc2NpaV90ZXh0KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTUzMiwzMiArNzQ1
LDIzOSBAQCBjbGFzcyBUZXN0QXNzZXJ0X3JlcHJjb21wYXJlKG9iamVjdCk6CiAgICAgICAgICIi
IgogCiAgICAgICAgIGNsYXNzIEEoc3RyKToKLQogICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgogICAgICAgICAgICAgICAgIHJldHVybiAiXHhmZiIKIAogICAgICAgICBleHBsID0gY2Fs
bGVxdWFsKEEoKSwgIjEiKQotICAgICAgICBhc3NlcnQgZXhwbAorICAgICAgICBhc3NlcnQgZXhw
bCA9PSBbIsO/ID09ICcxJyIsICItIDEiXQogCiAgICAgZGVmIHRlc3RfZm9ybWF0X25vbmFzY2lp
X2V4cGxhbmF0aW9uKHNlbGYpOgogICAgICAgICBhc3NlcnQgdXRpbC5mb3JtYXRfZXhwbGFuYXRp
b24oIs67IikKIAotICAgIGRlZiB0ZXN0X21vamliYWtlKHNlbGYpOgorICAgIGRlZiB0ZXN0X21v
amliYWtlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICMgaXNzdWUgNDI5Ci0gICAgICAgIGxlZnQg
PSAiZSIKLSAgICAgICAgcmlnaHQgPSAiXHhjM1x4YTkiCi0gICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGxlZnQsIGJ5dGVzKToKLSAgICAgICAgICAgIGxlZnQgPSBieXRlcyhsZWZ0LCAidXRmLTgi
KQotICAgICAgICAgICAgcmlnaHQgPSBieXRlcyhyaWdodCwgInV0Zi04IikKKyAgICAgICAgbGVm
dCA9IGIiZSIKKyAgICAgICAgcmlnaHQgPSBiIlx4YzNceGE5IgogICAgICAgICBleHBsID0gY2Fs
bGVxdWFsKGxlZnQsIHJpZ2h0KQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQogICAg
ICAgICBmb3IgbGluZSBpbiBleHBsOgotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobGlu
ZSwgcHkuYnVpbHRpbi50ZXh0KQotICAgICAgICBtc2cgPSBweS5idWlsdGluLl90b3RleHQoIlxu
Iikuam9pbihleHBsKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZSwgc3RyKQor
ICAgICAgICBtc2cgPSAiXG4iLmpvaW4oZXhwbCkKICAgICAgICAgYXNzZXJ0IG1zZwogCiAKLWNs
YXNzIFRlc3RGb3JtYXRFeHBsYW5hdGlvbihvYmplY3QpOgorY2xhc3MgVGVzdEFzc2VydF9yZXBy
Y29tcGFyZV9kYXRhY2xhc3M6CisgICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMudmVyc2lvbl9p
bmZvIDwgKDMsIDcpLCByZWFzb249IkRhdGFjbGFzc2VzIGluIFB5dGhvbjMuNysiKQorICAgIGRl
ZiB0ZXN0X2RhdGFjbGFzc2VzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwID0gdGVzdGRpci5j
b3B5X2V4YW1wbGUoImRhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV9kYXRhY2xhc3Nlcy5weSIpCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCisgICAgICAgIHJlc3VsdC5hc3Nl
cnRfb3V0Y29tZXMoZmFpbGVkPTEsIHBhc3NlZD0wKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIkUgICAgICAgICBP
bWl0dGluZyAxIGlkZW50aWNhbCBpdGVtcywgdXNlIC12diB0byBzaG93IiwKKyAgICAgICAgICAg
ICAgICAiRSAgICAgICAgIERpZmZlcmluZyBhdHRyaWJ1dGVzOiIsCisgICAgICAgICAgICAgICAg
IkUgICAgICAgICBbJ2ZpZWxkX2InXSIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAiLAor
ICAgICAgICAgICAgICAgICJFICAgICAgICAgRHJpbGwgZG93biBpbnRvIGRpZmZlcmluZyBhdHRy
aWJ1dGUgZmllbGRfYjoiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAgICBmaWVsZF9iOiAn
YicgIT0gJ2MnLi4uIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICIsCisgICAgICAgICAg
ICAgICAgIkUgICAgICAgICAuLi5GdWxsIG91dHB1dCB0cnVuY2F0ZWQgKDMgbGluZXMgaGlkZGVu
KSwgdXNlICctdnYnIHRvIHNob3ciLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGNvbnNl
Y3V0aXZlPVRydWUsCisgICAgICAgICkKKworICAgIEBweXRlc3QubWFyay5za2lwaWYoc3lzLnZl
cnNpb25faW5mbyA8ICgzLCA3KSwgcmVhc29uPSJEYXRhY2xhc3NlcyBpbiBQeXRob24zLjcrIikK
KyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfZGF0YWNsYXNzZXMoc2VsZiwgdGVzdGRpcik6CisgICAg
ICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX3Jl
Y3Vyc2l2ZV9kYXRhY2xhc3Nlcy5weSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KHApCisgICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMoZmFpbGVkPTEsIHBhc3NlZD0w
KQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgIkUgICAgICAgICBPbWl0dGluZyAxIGlkZW50aWNhbCBpdGVtcywgdXNl
IC12diB0byBzaG93IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIERpZmZlcmluZyBhdHRy
aWJ1dGVzOiIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICBbJ2cnLCAnaCcsICdqJ10iLAor
ICAgICAgICAgICAgICAgICJFICAgICAgICAgIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAg
IERyaWxsIGRvd24gaW50byBkaWZmZXJpbmcgYXR0cmlidXRlIGc6IiwKKyAgICAgICAgICAgICAg
ICAiRSAgICAgICAgICAgZzogUyhhPTEwLCBiPSd0ZW4nKSAhPSBTKGE9MjAsIGI9J3h4eCcpLi4u
IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICIsCisgICAgICAgICAgICAgICAgIkUgICAg
ICAgICAuLi5GdWxsIG91dHB1dCB0cnVuY2F0ZWQgKDUyIGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2
JyB0byBzaG93IiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBjb25zZWN1dGl2ZT1UcnVl
LAorICAgICAgICApCisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm8g
PCAoMywgNyksIHJlYXNvbj0iRGF0YWNsYXNzZXMgaW4gUHl0aG9uMy43KyIpCisgICAgZGVmIHRl
c3RfcmVjdXJzaXZlX2RhdGFjbGFzc2VzX3ZlcmJvc2Uoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX3JlY3Vy
c2l2ZV9kYXRhY2xhc3Nlcy5weSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KHAsICItdnYiKQorICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKGZhaWxlZD0xLCBwYXNz
ZWQ9MCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICJFICAgICAgICAgTWF0Y2hpbmcgYXR0cmlidXRlczoiLAorICAg
ICAgICAgICAgICAgICJFICAgICAgICAgWydpJ10iLAorICAgICAgICAgICAgICAgICJFICAgICAg
ICAgRGlmZmVyaW5nIGF0dHJpYnV0ZXM6IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIFsn
ZycsICdoJywgJ2onXSIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAiLAorICAgICAgICAg
ICAgICAgICJFICAgICAgICAgRHJpbGwgZG93biBpbnRvIGRpZmZlcmluZyBhdHRyaWJ1dGUgZzoi
LAorICAgICAgICAgICAgICAgICJFICAgICAgICAgICBnOiBTKGE9MTAsIGI9J3RlbicpICE9IFMo
YT0yMCwgYj0neHh4JykiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAgICAiLAorICAgICAg
ICAgICAgICAgICJFICAgICAgICAgICBEaWZmZXJpbmcgYXR0cmlidXRlczoiLAorICAgICAgICAg
ICAgICAgICJFICAgICAgICAgICBbJ2EnLCAnYiddIiwKKyAgICAgICAgICAgICAgICAiRSAgICAg
ICAgICAgIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgRHJpbGwgZG93biBpbnRvIGRp
ZmZlcmluZyBhdHRyaWJ1dGUgYToiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAgICAgIGE6
IDEwICE9IDIwIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgICArMTAiLAorICAgICAg
ICAgICAgICAgICJFICAgICAgICAgICAgIC0yMCIsCisgICAgICAgICAgICAgICAgIkUgICAgICAg
ICAgICIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAgIERyaWxsIGRvd24gaW50byBkaWZm
ZXJpbmcgYXR0cmlidXRlIGI6IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgICBiOiAn
dGVuJyAhPSAneHh4JyIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAgICAgLSB4eHgiLAor
ICAgICAgICAgICAgICAgICJFICAgICAgICAgICAgICsgdGVuIiwKKyAgICAgICAgICAgICAgICAi
RSAgICAgICAgICIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICBEcmlsbCBkb3duIGludG8g
ZGlmZmVyaW5nIGF0dHJpYnV0ZSBoOiIsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgY29u
c2VjdXRpdmU9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMu
dmVyc2lvbl9pbmZvIDwgKDMsIDcpLCByZWFzb249IkRhdGFjbGFzc2VzIGluIFB5dGhvbjMuNysi
KQorICAgIGRlZiB0ZXN0X2RhdGFjbGFzc2VzX3ZlcmJvc2Uoc2VsZiwgdGVzdGRpcik6CisgICAg
ICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX2Rh
dGFjbGFzc2VzX3ZlcmJvc2UucHkiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dChwLCAiLXZ2IikKKyAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhmYWlsZWQ9MSwgcGFz
c2VkPTApCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAiKk1hdGNoaW5nIGF0dHJpYnV0ZXM6KiIsCisgICAgICAgICAg
ICAgICAgIipbJ2ZpZWxkX2EnXSoiLAorICAgICAgICAgICAgICAgICIqRGlmZmVyaW5nIGF0dHJp
YnV0ZXM6KiIsCisgICAgICAgICAgICAgICAgIipmaWVsZF9iOiAnYicgIT0gJ2MnKiIsCisgICAg
ICAgICAgICBdCisgICAgICAgICkKKworICAgIEBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNp
b25faW5mbyA8ICgzLCA3KSwgcmVhc29uPSJEYXRhY2xhc3NlcyBpbiBQeXRob24zLjcrIikKKyAg
ICBkZWYgdGVzdF9kYXRhY2xhc3Nlc193aXRoX2F0dHJpYnV0ZV9jb21wYXJpc29uX29mZihzZWxm
LCB0ZXN0ZGlyKToKKyAgICAgICAgcCA9IHRlc3RkaXIuY29weV9leGFtcGxlKAorICAgICAgICAg
ICAgImRhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV9kYXRhY2xhc3Nlc19maWVsZF9jb21wYXJpc29u
X29mZi5weSIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChw
LCAiLXZ2IikKKyAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhmYWlsZWQ9MCwgcGFzc2Vk
PTEpCisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNyks
IHJlYXNvbj0iRGF0YWNsYXNzZXMgaW4gUHl0aG9uMy43KyIpCisgICAgZGVmIHRlc3RfY29tcGFy
aW5nX3R3b19kaWZmZXJlbnRfZGF0YV9jbGFzc2VzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBw
ID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoCisgICAgICAgICAgICAiZGF0YWNsYXNzZXMvdGVzdF9j
b21wYXJlX3R3b19kaWZmZXJlbnRfZGF0YWNsYXNzZXMucHkiCisgICAgICAgICkKKyAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi12diIpCisgICAgICAgIHJlc3VsdC5hc3Nl
cnRfb3V0Y29tZXMoZmFpbGVkPTAsIHBhc3NlZD0xKQorCisKK2NsYXNzIFRlc3RBc3NlcnRfcmVw
cmNvbXBhcmVfYXR0cnNjbGFzczoKKyAgICBkZWYgdGVzdF9hdHRycyhzZWxmKSAtPiBOb25lOgor
ICAgICAgICBAYXR0ci5zCisgICAgICAgIGNsYXNzIFNpbXBsZURhdGFPYmplY3Q6CisgICAgICAg
ICAgICBmaWVsZF9hID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWVsZF9iID0gYXR0ci5pYigp
CisKKyAgICAgICAgbGVmdCA9IFNpbXBsZURhdGFPYmplY3QoMSwgImIiKQorICAgICAgICByaWdo
dCA9IFNpbXBsZURhdGFPYmplY3QoMSwgImMiKQorCisgICAgICAgIGxpbmVzID0gY2FsbGVxdWFs
KGxlZnQsIHJpZ2h0KQorICAgICAgICBhc3NlcnQgbGluZXMgaXMgbm90IE5vbmUKKyAgICAgICAg
YXNzZXJ0IGxpbmVzWzJdLnN0YXJ0c3dpdGgoIk9taXR0aW5nIDEgaWRlbnRpY2FsIGl0ZW0iKQor
ICAgICAgICBhc3NlcnQgIk1hdGNoaW5nIGF0dHJpYnV0ZXMiIG5vdCBpbiBsaW5lcworICAgICAg
ICBmb3IgbGluZSBpbiBsaW5lc1syOl06CisgICAgICAgICAgICBhc3NlcnQgImZpZWxkX2EiIG5v
dCBpbiBsaW5lCisKKyAgICBkZWYgdGVzdF9hdHRyc19yZWN1cnNpdmUoc2VsZikgLT4gTm9uZToK
KyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBPdGhlckRhdGFPYmplY3Q6CisgICAgICAg
ICAgICBmaWVsZF9jID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWVsZF9kID0gYXR0ci5pYigp
CisKKyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBTaW1wbGVEYXRhT2JqZWN0OgorICAg
ICAgICAgICAgZmllbGRfYSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgZmllbGRfYiA9IGF0dHIu
aWIoKQorCisgICAgICAgIGxlZnQgPSBTaW1wbGVEYXRhT2JqZWN0KE90aGVyRGF0YU9iamVjdCgx
LCAiYSIpLCAiYiIpCisgICAgICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdChPdGhlckRhdGFP
YmplY3QoMSwgImIiKSwgImIiKQorCisgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKGxlZnQsIHJp
Z2h0KQorICAgICAgICBhc3NlcnQgbGluZXMgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0ICJN
YXRjaGluZyBhdHRyaWJ1dGVzIiBub3QgaW4gbGluZXMKKyAgICAgICAgZm9yIGxpbmUgaW4gbGlu
ZXNbMTpdOgorICAgICAgICAgICAgYXNzZXJ0ICJmaWVsZF9iOiIgbm90IGluIGxpbmUKKyAgICAg
ICAgICAgIGFzc2VydCAiZmllbGRfYzoiIG5vdCBpbiBsaW5lCisKKyAgICBkZWYgdGVzdF9hdHRy
c19yZWN1cnNpdmVfdmVyYm9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICBAYXR0ci5zCisgICAg
ICAgIGNsYXNzIE90aGVyRGF0YU9iamVjdDoKKyAgICAgICAgICAgIGZpZWxkX2MgPSBhdHRyLmli
KCkKKyAgICAgICAgICAgIGZpZWxkX2QgPSBhdHRyLmliKCkKKworICAgICAgICBAYXR0ci5zCisg
ICAgICAgIGNsYXNzIFNpbXBsZURhdGFPYmplY3Q6CisgICAgICAgICAgICBmaWVsZF9hID0gYXR0
ci5pYigpCisgICAgICAgICAgICBmaWVsZF9iID0gYXR0ci5pYigpCisKKyAgICAgICAgbGVmdCA9
IFNpbXBsZURhdGFPYmplY3QoT3RoZXJEYXRhT2JqZWN0KDEsICJhIiksICJiIikKKyAgICAgICAg
cmlnaHQgPSBTaW1wbGVEYXRhT2JqZWN0KE90aGVyRGF0YU9iamVjdCgxLCAiYiIpLCAiYiIpCisK
KyAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwobGVmdCwgcmlnaHQpCisgICAgICAgIGFzc2VydCBs
aW5lcyBpcyBub3QgTm9uZQorICAgICAgICAjIGluZGVudGF0aW9uIGluIG91dHB1dCBiZWNhdXNl
IG9mIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlCisgICAgICAgIGFzc2VydCAiICAgIGZpZWxkX2Q6
ICdhJyAhPSAnYiciIGluIGxpbmVzCisKKyAgICBkZWYgdGVzdF9hdHRyc192ZXJib3NlKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3MgU2ltcGxlRGF0YU9iamVj
dDoKKyAgICAgICAgICAgIGZpZWxkX2EgPSBhdHRyLmliKCkKKyAgICAgICAgICAgIGZpZWxkX2Ig
PSBhdHRyLmliKCkKKworICAgICAgICBsZWZ0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAiYiIpCisg
ICAgICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAiYyIpCisKKyAgICAgICAgbGluZXMg
PSBjYWxsZXF1YWwobGVmdCwgcmlnaHQsIHZlcmJvc2U9MikKKyAgICAgICAgYXNzZXJ0IGxpbmVz
IGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBsaW5lc1syXS5zdGFydHN3aXRoKCJNYXRjaGlu
ZyBhdHRyaWJ1dGVzOiIpCisgICAgICAgIGFzc2VydCAiT21pdHRpbmciIG5vdCBpbiBsaW5lc1sy
XQorICAgICAgICBhc3NlcnQgbGluZXNbM10gPT0gIlsnZmllbGRfYSddIgorCisgICAgZGVmIHRl
c3RfYXR0cnNfd2l0aF9hdHRyaWJ1dGVfY29tcGFyaXNvbl9vZmYoc2VsZik6CisgICAgICAgIEBh
dHRyLnMKKyAgICAgICAgY2xhc3MgU2ltcGxlRGF0YU9iamVjdDoKKyAgICAgICAgICAgIGZpZWxk
X2EgPSBhdHRyLmliKCkKKyAgICAgICAgICAgIGZpZWxkX2IgPSBhdHRyLmliKCoqe0FUVFJTX0VR
X0ZJRUxEOiBGYWxzZX0pICAjIHR5cGU6IGlnbm9yZQorCisgICAgICAgIGxlZnQgPSBTaW1wbGVE
YXRhT2JqZWN0KDEsICJiIikKKyAgICAgICAgcmlnaHQgPSBTaW1wbGVEYXRhT2JqZWN0KDEsICJi
IikKKworICAgICAgICBsaW5lcyA9IGNhbGxlcXVhbChsZWZ0LCByaWdodCwgdmVyYm9zZT0yKQor
ICAgICAgICBwcmludChsaW5lcykKKyAgICAgICAgYXNzZXJ0IGxpbmVzIGlzIG5vdCBOb25lCisg
ICAgICAgIGFzc2VydCBsaW5lc1syXS5zdGFydHN3aXRoKCJNYXRjaGluZyBhdHRyaWJ1dGVzOiIp
CisgICAgICAgIGFzc2VydCAiT21pdHRpbmciIG5vdCBpbiBsaW5lc1sxXQorICAgICAgICBhc3Nl
cnQgbGluZXNbM10gPT0gIlsnZmllbGRfYSddIgorICAgICAgICBmb3IgbGluZSBpbiBsaW5lc1sz
Ol06CisgICAgICAgICAgICBhc3NlcnQgImZpZWxkX2IiIG5vdCBpbiBsaW5lCisKKyAgICBkZWYg
dGVzdF9jb21wYXJpbmdfdHdvX2RpZmZlcmVudF9hdHRyc19jbGFzc2VzKHNlbGYpOgorICAgICAg
ICBAYXR0ci5zCisgICAgICAgIGNsYXNzIFNpbXBsZURhdGFPYmplY3RPbmU6CisgICAgICAgICAg
ICBmaWVsZF9hID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWVsZF9iID0gYXR0ci5pYigpCisK
KyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBTaW1wbGVEYXRhT2JqZWN0VHdvOgorICAg
ICAgICAgICAgZmllbGRfYSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgZmllbGRfYiA9IGF0dHIu
aWIoKQogCisgICAgICAgIGxlZnQgPSBTaW1wbGVEYXRhT2JqZWN0T25lKDEsICJiIikKKyAgICAg
ICAgcmlnaHQgPSBTaW1wbGVEYXRhT2JqZWN0VHdvKDEsICJjIikKKworICAgICAgICBsaW5lcyA9
IGNhbGxlcXVhbChsZWZ0LCByaWdodCkKKyAgICAgICAgYXNzZXJ0IGxpbmVzIGlzIE5vbmUKKwor
CitjbGFzcyBUZXN0Rm9ybWF0RXhwbGFuYXRpb246CiAgICAgZGVmIHRlc3Rfc3BlY2lhbF9jaGFy
c19mdWxsKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAjIElzc3VlIDQ1MywgZm9yIHRoZSBidWcg
dGhpcyB3b3VsZCByYWlzZSBJbmRleEVycm9yCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
QEAgLTY0NCwxNiArMTA2NCwxMyBAQCBjbGFzcyBUZXN0Rm9ybWF0RXhwbGFuYXRpb24ob2JqZWN0
KToKICAgICAgICAgYXNzZXJ0IHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKGV4cGwpID09IHJlcwog
CiAKLWNsYXNzIFRlc3RUcnVuY2F0ZUV4cGxhbmF0aW9uKG9iamVjdCk6Ci0KLSAgICAiIiIgQ29u
ZmlybSBhc3NlcnRpb24gb3V0cHV0IGlzIHRydW5jYXRlZCBhcyBleHBlY3RlZCAiIiIKLQorY2xh
c3MgVGVzdFRydW5jYXRlRXhwbGFuYXRpb246CiAgICAgIyBUaGUgbnVtYmVyIG9mIGxpbmVzIGlu
IHRoZSB0cnVuY2F0aW9uIGV4cGxhbmF0aW9uIG1lc3NhZ2UuIFVzZWQKICAgICAjIHRvIGNhbGN1
bGF0ZSB0aGF0IHJlc3VsdHMgaGF2ZSB0aGUgZXhwZWN0ZWQgbGVuZ3RoLgogICAgIExJTkVTX0lO
X1RSVU5DQVRJT05fTVNHID0gMgogCi0gICAgZGVmIHRlc3RfZG9lc250X3RydW5jYXRlX3doZW5f
aW5wdXRfaXNfZW1wdHlfbGlzdChzZWxmKToKLSAgICAgICAgZXhwbCA9IFtdCisgICAgZGVmIHRl
c3RfZG9lc250X3RydW5jYXRlX3doZW5faW5wdXRfaXNfZW1wdHlfbGlzdChzZWxmKSAtPiBOb25l
OgorICAgICAgICBleHBsID0gW10gICMgdHlwZTogTGlzdFtzdHJdCiAgICAgICAgIHJlc3VsdCA9
IHRydW5jYXRlLl90cnVuY2F0ZV9leHBsYW5hdGlvbihleHBsLCBtYXhfbGluZXM9OCwgbWF4X2No
YXJzPTEwMCkKICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBsCiAKQEAgLTcxMyw3ICsxMTMw
LDcgQEAgY2xhc3MgVGVzdFRydW5jYXRlRXhwbGFuYXRpb24ob2JqZWN0KToKICAgICAgICAgYXNz
ZXJ0IGxhc3RfbGluZV9iZWZvcmVfdHJ1bmNfbXNnLmVuZHN3aXRoKCIuLi4iKQogCiAgICAgZGVm
IHRlc3RfZnVsbF9vdXRwdXRfdHJ1bmNhdGVkKHNlbGYsIG1vbmtleXBhdGNoLCB0ZXN0ZGlyKToK
LSAgICAgICAgIiIiIFRlc3QgYWdhaW5zdCBmdWxsIHJ1bnB5dGVzdCgpIG91dHB1dC4gIiIiCisg
ICAgICAgICIiIlRlc3QgYWdhaW5zdCBmdWxsIHJ1bnB5dGVzdCgpIG91dHB1dC4iIiIKIAogICAg
ICAgICBsaW5lX2NvdW50ID0gNwogICAgICAgICBsaW5lX2xlbiA9IDEwMApAQCAtNzM1LDkgKzEx
NTIsOSBAQCBjbGFzcyBUZXN0VHJ1bmNhdGVFeHBsYW5hdGlvbihvYmplY3QpOgogICAgICAgICAj
IHdpdGhvdXQgLXZ2LCB0cnVuY2F0ZSB0aGUgbWVzc2FnZSBzaG93aW5nIGEgZmV3IGRpZmYgbGlu
ZXMgb25seQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgIiotIDEqIiwKLSAgICAgICAgICAgICAgICAiKi0gMyoiLAot
ICAgICAgICAgICAgICAgICIqLSA1KiIsCisgICAgICAgICAgICAgICAgIiorIDEqIiwKKyAgICAg
ICAgICAgICAgICAiKisgMyoiLAorICAgICAgICAgICAgICAgICIqKyA1KiIsCiAgICAgICAgICAg
ICAgICAgIip0cnVuY2F0ZWQgKCVkIGxpbmVzIGhpZGRlbikqdXNlKi12dioiICUgZXhwZWN0ZWRf
dHJ1bmNhdGVkX2xpbmVzLAogICAgICAgICAgICAgXQogICAgICAgICApCkBAIC03NzgsMjcgKzEx
OTUsMjMgQEAgZGVmIHRlc3RfcmV3cml0dGVuKHRlc3RkaXIpOgogICAgIGFzc2VydCB0ZXN0ZGly
LnJ1bnB5dGVzdCgpLnJldCA9PSAwCiAKIAotZGVmIHRlc3RfcmVwcmNvbXBhcmVfbm90aW4obW9j
a19jb25maWcpOgotICAgIGRldGFpbCA9IHBsdWdpbi5weXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJl
KAotICAgICAgICBtb2NrX2NvbmZpZywgIm5vdCBpbiIsICJmb28iLCAiYWFhZm9vYmJiIgotICAg
IClbCi0gICAgICAgIDE6CitkZWYgdGVzdF9yZXByY29tcGFyZV9ub3RpbigpIC0+IE5vbmU6Cisg
ICAgYXNzZXJ0IGNhbGxvcCgibm90IGluIiwgImZvbyIsICJhYWFmb29iYmIiKSA9PSBbCisgICAg
ICAgICInZm9vJyBub3QgaW4gJ2FhYWZvb2JiYiciLAorICAgICAgICAiJ2ZvbycgaXMgY29udGFp
bmVkIGhlcmU6IiwKKyAgICAgICAgIiAgYWFhZm9vYmJiIiwKKyAgICAgICAgIj8gICAgKysrIiwK
ICAgICBdCi0gICAgYXNzZXJ0IGRldGFpbCA9PSBbIidmb28nIGlzIGNvbnRhaW5lZCBoZXJlOiIs
ICIgIGFhYWZvb2JiYiIsICI/ICAgICsrKyJdCiAKIAotZGVmIHRlc3RfcmVwcmNvbXBhcmVfd2hp
dGVzcGFjZXMobW9ja19jb25maWcpOgotICAgIGRldGFpbCA9IHBsdWdpbi5weXRlc3RfYXNzZXJ0
cmVwcl9jb21wYXJlKG1vY2tfY29uZmlnLCAiPT0iLCAiXHJcbiIsICJcbiIpCi0gICAgYXNzZXJ0
ICgKLSAgICAgICAgZGV0YWlsCi0gICAgICAgID09IFsKLSAgICAgICAgICAgIHIiJ1xyXG4nID09
ICdcbiciLAotICAgICAgICAgICAgciJTdHJpbmdzIGNvbnRhaW4gb25seSB3aGl0ZXNwYWNlLCBl
c2NhcGluZyB0aGVtIHVzaW5nIHJlcHIoKSIsCi0gICAgICAgICAgICByIi0gJ1xyXG4nIiwKLSAg
ICAgICAgICAgIHIiPyAgLS0iLAotICAgICAgICAgICAgciIrICdcbiciLAotICAgICAgICBdCi0g
ICAgKQorZGVmIHRlc3RfcmVwcmNvbXBhcmVfd2hpdGVzcGFjZXMoKToKKyAgICBhc3NlcnQgY2Fs
bGVxdWFsKCJcclxuIiwgIlxuIikgPT0gWworICAgICAgICByIidcclxuJyA9PSAnXG4nIiwKKyAg
ICAgICAgciJTdHJpbmdzIGNvbnRhaW4gb25seSB3aGl0ZXNwYWNlLCBlc2NhcGluZyB0aGVtIHVz
aW5nIHJlcHIoKSIsCisgICAgICAgIHIiLSAnXG4nIiwKKyAgICAgICAgciIrICdcclxuJyIsCisg
ICAgICAgIHIiPyAgKysiLAorICAgIF0KIAogCiBkZWYgdGVzdF9weXRlc3RfYXNzZXJ0cmVwcl9j
b21wYXJlX2ludGVncmF0aW9uKHRlc3RkaXIpOgpAQCAtODEzLDcgKzEyMjYsMTMgQEAgZGVmIHRl
c3RfcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZV9pbnRlZ3JhdGlvbih0ZXN0ZGlyKToKICAgICAp
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKLSAgICAgICAgWyIqZGVmIHRlc3RfaGVsbG8oKToqIiwgIiphc3NlcnQgeCA9
PSB5KiIsICIqRSpFeHRyYSBpdGVtcypsZWZ0KiIsICIqRSo1MCoiXQorICAgICAgICBbCisgICAg
ICAgICAgICAiKmRlZiB0ZXN0X2hlbGxvKCk6KiIsCisgICAgICAgICAgICAiKmFzc2VydCB4ID09
IHkqIiwKKyAgICAgICAgICAgICIqRSpFeHRyYSBpdGVtcypsZWZ0KiIsCisgICAgICAgICAgICAi
KkUqNTAqIiwKKyAgICAgICAgICAgICIqPSAxIGZhaWxlZCBpbioiLAorICAgICAgICBdCiAgICAg
KQogCiAKQEAgLTg3NSw3ICsxMjk0LDcgQEAgZGVmIHRlc3RfYXNzZXJ0aW9uX29wdGlvbnModGVz
dGRpcik6CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgIGFzc2VydCAiMyA9
PSA0IiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3Rfc3VicHJvY2VzcygiLS1hc3NlcnQ9cGxhaW4iKQotICAgIGFzc2VydCAiMyA9PSA0IiBub3Qg
aW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5l
KCIqMyA9PSA0KiIpCiAKIAogZGVmIHRlc3RfdHJpcGxlX3F1b3RlZF9zdHJpbmdfaXNzdWUxMTMo
dGVzdGRpcik6CkBAIC04ODcsNyArMTMwNiw3IEBAIGRlZiB0ZXN0X3RyaXBsZV9xdW90ZWRfc3Ry
aW5nX2lzc3VlMTEzKHRlc3RkaXIpOgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1mdWxsdHJhY2UiKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiox
IGZhaWxlZCoiXSkKLSAgICBhc3NlcnQgIlN5bnRheEVycm9yIiBub3QgaW4gcmVzdWx0LnN0ZG91
dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqU3ludGF4RXJyb3Iq
IikKIAogCiBkZWYgdGVzdF90cmFjZWJhY2tfZmFpbHVyZSh0ZXN0ZGlyKToKQEAgLTk0NSwxNCAr
MTM2NCw4IEBAIGRlZiB0ZXN0X3RyYWNlYmFja19mYWlsdXJlKHRlc3RkaXIpOgogICAgICkKIAog
Ci1AcHl0ZXN0Lm1hcmsuc2tpcGlmKAotICAgIHN5cy52ZXJzaW9uX2luZm9bOjJdIDw9ICgzLCAz
KSwKLSAgICByZWFzb249IlB5dGhvbiAzLjQrIHNob3dzIGNoYWluZWQgZXhjZXB0aW9ucyBvbiBt
dWx0aXByb2Nlc3MiLAotKQogZGVmIHRlc3RfZXhjZXB0aW9uX2hhbmRsaW5nX25vX3RyYWNlYmFj
ayh0ZXN0ZGlyKToKLSAgICAiIiIKLSAgICBIYW5kbGUgY2hhaW4gZXhjZXB0aW9ucyBpbiB0YXNr
cyBzdWJtaXR0ZWQgYnkgdGhlIG11bHRpcHJvY2VzcyBtb2R1bGUgKCMxOTg0KS4KLSAgICAiIiIK
KyAgICAiIiJIYW5kbGUgY2hhaW4gZXhjZXB0aW9ucyBpbiB0YXNrcyBzdWJtaXR0ZWQgYnkgdGhl
IG11bHRpcHJvY2VzcyBtb2R1bGUgKCMxOTg0KS4iIiIKICAgICBwMSA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQ
b29sCkBAIC05NjksNiArMTM4Miw3IEBAIGRlZiB0ZXN0X2V4Y2VwdGlvbl9oYW5kbGluZ19ub190
cmFjZWJhY2sodGVzdGRpcik6CiAgICAgICAgICAgICBtdWx0aXRhc2tfam9iKCkKICAgICAiIiIK
ICAgICApCisgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdChwMSwgIi0tdGI9bG9uZyIpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAogICAgICAgICBbCkBAIC05ODIsMTUgKzEzOTYsMzYgQEAgZGVmIHRlc3RfZXhjZXB0aW9u
X2hhbmRsaW5nX25vX3RyYWNlYmFjayh0ZXN0ZGlyKToKICAgICApCiAKIAotQHB5dGVzdC5tYXJr
LnNraXBpZigKLSAgICAiJ19fcHlweV9fJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgb3Ig
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKSIKK0BweXRlc3QubWFyay5za2lwaWYoIidf
X3B5cHlfXycgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzIikKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgKKyAgICAiY21kbGluZV9hcmdzLCB3YXJuaW5nX291dHB1dCIsCisgICAgWworICAg
ICAgICAoCisgICAgICAgICAgICBbIi1PTyIsICItbSIsICJweXRlc3QiLCAiLWgiXSwKKyAgICAg
ICAgICAgIFsid2FybmluZyA6KlB5dGVzdENvbmZpZ1dhcm5pbmc6KmFzc2VydCBzdGF0ZW1lbnRz
IGFyZSBub3QgZXhlY3V0ZWQqIl0sCisgICAgICAgICksCisgICAgICAgICgKKyAgICAgICAgICAg
IFsiLU9PIiwgIi1tIiwgInB5dGVzdCJdLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICI9Kj0gd2FybmluZ3Mgc3VtbWFyeSA9Kj0iLAorICAgICAgICAgICAgICAgICIqUHl0ZXN0Q29u
ZmlnV2FybmluZzoqYXNzZXJ0IHN0YXRlbWVudHMgYXJlIG5vdCBleGVjdXRlZCoiLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgKSwKKyAgICAgICAgKAorICAgICAgICAgICAgWyItT08iLCAiLW0i
LCAicHl0ZXN0IiwgIi0tYXNzZXJ0PXBsYWluIl0sCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgIj0qPSB3YXJuaW5ncyBzdW1tYXJ5ID0qPSIsCisgICAgICAgICAgICAgICAgIipQeXRl
c3RDb25maWdXYXJuaW5nOiBBU1NFUlRJT05TIEFSRSBOT1QgRVhFQ1VURUQgYW5kIEZBSUxJTkcg
VEVTVFMgV0lMTCBQQVNTLiAgIgorICAgICAgICAgICAgICAgICJBcmUgeW91IHVzaW5nIHB5dGhv
biAtTz8iLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKSwKKyAgICBdLAogKQotZGVmIHRlc3Rf
d2Fybl9taXNzaW5nKHRlc3RkaXIpOgorZGVmIHRlc3Rfd2Fybl9taXNzaW5nKHRlc3RkaXIsIGNt
ZGxpbmVfYXJncywgd2FybmluZ19vdXRwdXQpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiIikK
LSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bihzeXMuZXhlY3V0YWJsZSwgIi1PTyIsICItbSIsICJw
eXRlc3QiLCAiLWgiKQotICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipXQVJOSU5H
KmFzc2VydCBzdGF0ZW1lbnRzIGFyZSBub3QgZXhlY3V0ZWQqIl0pCi0gICAgcmVzdWx0ID0gdGVz
dGRpci5ydW4oc3lzLmV4ZWN1dGFibGUsICItT08iLCAiLW0iLCAicHl0ZXN0IikKLSAgICByZXN1
bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyIqV0FSTklORyphc3NlcnQgc3RhdGVtZW50cyBhcmUg
bm90IGV4ZWN1dGVkKiJdKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW4oc3lzLmV4ZWN1dGFi
bGUsICpjbWRsaW5lX2FyZ3MpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKHdhcm5p
bmdfb3V0cHV0KQogCiAKIGRlZiB0ZXN0X3JlY3Vyc2lvbl9zb3VyY2VfZGVjb2RlKHRlc3RkaXIp
OgpAQCAtMTAzMiw0NyArMTQ2Nyw3IEBAIGRlZiB0ZXN0X0Fzc2VydGlvbkVycm9yX21lc3NhZ2Uo
dGVzdGRpcik6CiAgICAgKQogCiAKLUBweXRlc3QubWFyay5za2lwaWYoUFkzLCByZWFzb249IlRo
aXMgYnVnIGRvZXMgbm90IGV4aXN0IG9uIFBZMyIpCi1kZWYgdGVzdF9zZXRfd2l0aF91bnNvcnRh
YmxlX2VsZW1lbnRzKCk6Ci0gICAgIyBpc3N1ZSAjNzE4Ci0gICAgY2xhc3MgVW5zb3J0YWJsZUtl
eShvYmplY3QpOgotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAg
ICAgIHNlbGYubmFtZSA9IG5hbWUKLQotICAgICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToK
LSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigpCi0KLSAgICAgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICJyZXByKHt9KSIuZm9ybWF0KHNlbGYubmFtZSkK
LQotICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLm5hbWUgPT0gb3RoZXIubmFtZQotCi0gICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAg
ICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkKLQotICAgIGxlZnRfc2V0ID0ge1Vuc29y
dGFibGVLZXkoc3RyKGkpKSBmb3IgaSBpbiByYW5nZSgxLCAzKX0KLSAgICByaWdodF9zZXQgPSB7
VW5zb3J0YWJsZUtleShzdHIoaSkpIGZvciBpIGluIHJhbmdlKDIsIDQpfQotICAgIGV4cGwgPSBj
YWxsZXF1YWwobGVmdF9zZXQsIHJpZ2h0X3NldCwgdmVyYm9zZT1UcnVlKQotICAgICMgc2tpcCBm
aXJzdCBsaW5lIGJlY2F1c2UgaXQgY29udGFpbnMgdGhlICJjb25zdHJ1Y3Rpb24iIG9mIHRoZSBz
ZXQsIHdoaWNoIGRvZXMgbm90IGhhdmUgYSBndWFyYW50ZWVkIG9yZGVyCi0gICAgZXhwbCA9IGV4
cGxbMTpdCi0gICAgZGVkZW50ID0gdGV4dHdyYXAuZGVkZW50KAotICAgICAgICAiIiIKLSAgICAg
ICAgRXh0cmEgaXRlbXMgaW4gdGhlIGxlZnQgc2V0OgotICAgICAgICByZXByKDEpCi0gICAgICAg
IEV4dHJhIGl0ZW1zIGluIHRoZSByaWdodCBzZXQ6Ci0gICAgICAgIHJlcHIoMykKLSAgICAgICAg
RnVsbCBkaWZmIChmYWxsYmFjayB0byBjYWxsaW5nIHJlcHIgb24gZWFjaCBpdGVtKToKLSAgICAg
ICAgLSByZXByKDEpCi0gICAgICAgIHJlcHIoMikKLSAgICAgICAgKyByZXByKDMpCi0gICAgIiIi
Ci0gICAgKS5zdHJpcCgpCi0gICAgYXNzZXJ0ICJcbiIuam9pbihleHBsKSA9PSBkZWRlbnQKLQot
Ci1kZWYgdGVzdF9kaWZmX25ld2xpbmVfYXRfZW5kKG1vbmtleXBhdGNoLCB0ZXN0ZGlyKToKK2Rl
ZiB0ZXN0X2RpZmZfbmV3bGluZV9hdF9lbmQodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAogICAgICAgICByIiIiCiAgICAgICAgIGRlZiB0ZXN0X2RpZmYoKToKQEAgLTEwODUsMjMg
KzE0ODAsMzMgQEAgZGVmIHRlc3RfZGlmZl9uZXdsaW5lX2F0X2VuZChtb25rZXlwYXRjaCwgdGVz
dGRpcik6CiAgICAgICAgIHIiIiIKICAgICAgICAgKmFzc2VydCAnYXNkZicgPT0gJ2FzZGZcbicK
ICAgICAgICAgKiAgLSBhc2RmCisgICAgICAgICogID8gICAgIC0KICAgICAgICAgKiAgKyBhc2Rm
Ci0gICAgICAgICogID8gICAgICsKICAgICAiIiIKICAgICApCiAKIAorQHB5dGVzdC5tYXJrLmZp
bHRlcndhcm5pbmdzKCJkZWZhdWx0IikKIGRlZiB0ZXN0X2Fzc2VydF90dXBsZV93YXJuaW5nKHRl
c3RkaXIpOgorICAgIG1zZyA9ICJhc3NlcnRpb24gaXMgYWx3YXlzIHRydWUiCiAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgZGVmIHRlc3RfdHVwbGUoKToKICAg
ICAgICAgICAgIGFzc2VydChGYWxzZSwgJ3lvdSBzaGFsbCBub3QgcGFzcycpCiAgICAgIiIiCiAg
ICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcnciKQotICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyIqdGVzdF9hc3NlcnRfdHVwbGVfd2Fybmlu
Zy5weToyIiwgIiphc3NlcnRpb24gaXMgYWx3YXlzIHRydWUqIl0KKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Rf
YXNzZXJ0X3R1cGxlX3dhcm5pbmcucHk6Mjoqe30qIi5mb3JtYXQobXNnKV0pCisKKyAgICAjIHR1
cGxlcyB3aXRoIHNpemUgIT0gMiBzaG91bGQgbm90IHRyaWdnZXIgdGhlIHdhcm5pbmcKKyAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90dXBsZSgp
OgorICAgICAgICAgICAgYXNzZXJ0ICgpCisgICAgIiIiCiAgICAgKQorICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKKyAgICBhc3NlcnQgbXNnIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCiAKIAogZGVmIHRlc3RfYXNzZXJ0X2luZGlyZWN0X3R1cGxlX25vX3dhcm5pbmcodGVzdGRp
cik6CkBAIC0xMTEyLDE4ICsxNTE3LDE3IEBAIGRlZiB0ZXN0X2Fzc2VydF9pbmRpcmVjdF90dXBs
ZV9ub193YXJuaW5nKHRlc3RkaXIpOgogICAgICAgICAgICAgYXNzZXJ0IHRwbAogICAgICIiIgog
ICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJ3IikKKyAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgb3V0cHV0ID0gIlxuIi5qb2luKHJlc3VsdC5zdGRv
dXQubGluZXMpCiAgICAgYXNzZXJ0ICJXUjEiIG5vdCBpbiBvdXRwdXQKIAogCi1kZWYgdGVzdF9h
c3NlcnRfd2l0aF91bmljb2RlKG1vbmtleXBhdGNoLCB0ZXN0ZGlyKToKK2RlZiB0ZXN0X2Fzc2Vy
dF93aXRoX3VuaWNvZGUodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICB1IiIiCi0gICAgICAgICMgLSotIGNvZGluZzogdXRmLTggLSotCisgICAgICAgICIiIlwKICAg
ICAgICAgZGVmIHRlc3RfdW5pY29kZSgpOgotICAgICAgICAgICAgYXNzZXJ0IHUn7Jyg64uI7L2U
65OcJyA9PSB1J1VuaWNvZGUnCi0gICAgIiIiCisgICAgICAgICAgICBhc3NlcnQgJ+ycoOuLiOy9
lOuTnCcgPT0gJ1VuaWNvZGUnCisgICAgICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkFzc2Vy
dGlvbkVycm9yKiJdKQpAQCAtMTE0NCw3ICsxNTQ4LDcgQEAgZGVmIHRlc3RfcmFpc2VfdW5wcmlu
dGFibGVfYXNzZXJ0aW9uX2Vycm9yKHRlc3RkaXIpOgogCiBkZWYgdGVzdF9yYWlzZV9hc3NlcnRp
b25fZXJyb3JfcmFpc2luX3JlcHIodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAot
ICAgICAgICB1IiIiCisgICAgICAgICIiIgogICAgICAgICBjbGFzcyBSYWlzaW5nUmVwcihvYmpl
Y3QpOgogICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigpCkBAIC0xMTY5LDQgKzE1NzMsMzcgQEAgZGVmIHRlc3RfaXNzdWVfMTk0
NCh0ZXN0ZGlyKToKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIGVycm9yKiJdKQotICAgIGFzc2VydCAi
QXR0cmlidXRlRXJyb3I6ICdNb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdfb2JqJyIg
bm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBhc3NlcnQgKAorICAgICAgICAiQXR0cmli
dXRlRXJyb3I6ICdNb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdfb2JqJyIKKyAgICAg
ICAgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICApCisKKworZGVmIHRlc3RfZXhpdF9m
cm9tX2Fzc2VydHJlcHJfY29tcGFyZShtb25rZXlwYXRjaCk6CisgICAgZGVmIHJhaXNlX2V4aXQo
b2JqKToKKyAgICAgICAgb3V0Y29tZXMuZXhpdCgiUXVpdHRpbmcgZGVidWdnZXIiKQorCisgICAg
bW9ua2V5cGF0Y2guc2V0YXR0cih1dGlsLCAiaXN0ZXh0IiwgcmFpc2VfZXhpdCkKKworICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhvdXRjb21lcy5FeGl0LCBtYXRjaD0iUXVpdHRpbmcgZGVidWdnZXIi
KToKKyAgICAgICAgY2FsbGVxdWFsKDEsIDEpCisKKworZGVmIHRlc3RfYXNzZXJ0aW9uX2xvY2F0
aW9uX3dpdGhfY292ZXJhZ2UodGVzdGRpcik6CisgICAgIiIiVGhpcyB1c2VkIHRvIHJlcG9ydCB0
aGUgd3JvbmcgbG9jYXRpb24gd2hlbiBydW4gd2l0aCBjb3ZlcmFnZSAoIzU3NTQpLiIiIgorICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdCgp
OgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAxCisgICAgICAgICAgICBhc3NlcnQgRmFsc2Us
IDIKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0
cihwKSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAg
ICAgICAgICI+ICAgICAgIGFzc2VydCBGYWxzZSwgMSIsCisgICAgICAgICAgICAiRSAgICAgICBB
c3NlcnRpb25FcnJvcjogMSIsCisgICAgICAgICAgICAiRSAgICAgICBhc3NlcnQgRmFsc2UiLAor
ICAgICAgICAgICAgIio9IDEgZmFpbGVkIGluKiIsCisgICAgICAgIF0KKyAgICApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNzZXJ0cmV3cml0ZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9hc3NlcnRyZXdyaXRlLnB5CmluZGV4IDE0NGY2MjViYzZjMy4uYWQz
MDg5YTIzYzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNzZXJ0cmV3
cml0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNzZXJ0cmV3cml0ZS5weQpA
QCAtMSw1OCArMSw1NyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCitpbXBvcnQgYXN0CitpbXBvcnQgZXJybm8KIGlt
cG9ydCBnbG9iCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCBweV9jb21waWxl
CiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgemlwZmls
ZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcKK2Zy
b20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorCiBpbXBv
cnQgcHkKLWltcG9ydCBweXRlc3QKIAogaW1wb3J0IF9weXRlc3QuX2NvZGUKK2ltcG9ydCBweXRl
c3QKIGZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHV0aWwKLWZyb20gX3B5dGVzdC5hc3Nl
cnRpb24ucmV3cml0ZSBpbXBvcnQgKAotICAgIHJld3JpdGVfYXNzZXJ0cywKLSAgICBQWVRFU1Rf
VEFHLAotICAgIEFzc2VydGlvblJld3JpdGluZ0hvb2ssCi0pCi1mcm9tIF9weXRlc3QubWFpbiBp
bXBvcnQgRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0KLWFzdCA9IHB5dGVzdC5pbXBvcnRvcnNraXAo
ImFzdCIpCi1pZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiamF2YSIpOgotICAgICMgWFhYIHNo
b3VsZCBiZSB4ZmFpbAotICAgIHB5dGVzdC5za2lwKCJhc3NlcnQgcmV3cml0ZSBkb2VzIGN1cnJl
bnRseSBub3Qgd29yayBvbiBqeXRob24iKQotCi0KLWRlZiBzZXR1cF9tb2R1bGUobW9kKToKLSAg
ICBtb2QuX29sZF9yZXByY29tcGFyZSA9IHV0aWwuX3JlcHJjb21wYXJlCi0gICAgX3B5dGVzdC5f
Y29kZS5fcmVwcmNvbXBhcmUgPSBOb25lCi0KLQotZGVmIHRlYXJkb3duX21vZHVsZShtb2QpOgot
ICAgIHV0aWwuX3JlcHJjb21wYXJlID0gbW9kLl9vbGRfcmVwcmNvbXBhcmUKLSAgICBkZWwgbW9k
Ll9vbGRfcmVwcmNvbXBhcmUKLQotCi1kZWYgcmV3cml0ZShzcmMpOgorZnJvbSBfcHl0ZXN0LmFz
c2VydGlvbi5yZXdyaXRlIGltcG9ydCBfZ2V0X2Fzc2VydGlvbl9leHBycworZnJvbSBfcHl0ZXN0
LmFzc2VydGlvbi5yZXdyaXRlIGltcG9ydCBBc3NlcnRpb25SZXdyaXRpbmdIb29rCitmcm9tIF9w
eXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IGdldF9jYWNoZV9kaXIKK2Zyb20gX3B5dGVz
dC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQgUFlDX1RBSUwKK2Zyb20gX3B5dGVzdC5hc3NlcnRp
b24ucmV3cml0ZSBpbXBvcnQgUFlURVNUX1RBRworZnJvbSBfcHl0ZXN0LmFzc2VydGlvbi5yZXdy
aXRlIGltcG9ydCByZXdyaXRlX2Fzc2VydHMKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4
aXRDb2RlCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgbWFrZV9udW1iZXJlZF9kaXIKK2Zy
b20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1w
b3J0IFRlc3RkaXIKKworCitkZWYgcmV3cml0ZShzcmM6IHN0cikgLT4gYXN0Lk1vZHVsZToKICAg
ICB0cmVlID0gYXN0LnBhcnNlKHNyYykKLSAgICByZXdyaXRlX2Fzc2VydHModHJlZSkKKyAgICBy
ZXdyaXRlX2Fzc2VydHModHJlZSwgc3JjLmVuY29kZSgpKQogICAgIHJldHVybiB0cmVlCiAKIAot
ZGVmIGdldG1zZyhmLCBleHRyYV9ucz1Ob25lLCBtdXN0X3Bhc3M9RmFsc2UpOgorZGVmIGdldG1z
ZygKKyAgICBmLCBleHRyYV9uczogT3B0aW9uYWxbTWFwcGluZ1tzdHIsIG9iamVjdF1dID0gTm9u
ZSwgKiwgbXVzdF9wYXNzOiBib29sID0gRmFsc2UKKykgLT4gT3B0aW9uYWxbc3RyXToKICAgICAi
IiJSZXdyaXRlIHRoZSBhc3NlcnRpb25zIGluIGYsIHJ1biBpdCwgYW5kIGdldCB0aGUgZmFpbHVy
ZSBtZXNzYWdlLiIiIgogICAgIHNyYyA9ICJcbiIuam9pbihfcHl0ZXN0Ll9jb2RlLkNvZGUoZiku
c291cmNlKCkubGluZXMpCiAgICAgbW9kID0gcmV3cml0ZShzcmMpCiAgICAgY29kZSA9IGNvbXBp
bGUobW9kLCAiPHRlc3Q+IiwgImV4ZWMiKQotICAgIG5zID0ge30KKyAgICBucyA9IHt9ICAjIHR5
cGU6IERpY3Rbc3RyLCBvYmplY3RdCiAgICAgaWYgZXh0cmFfbnMgaXMgbm90IE5vbmU6CiAgICAg
ICAgIG5zLnVwZGF0ZShleHRyYV9ucykKLSAgICBweS5idWlsdGluLmV4ZWNfKGNvZGUsIG5zKQor
ICAgIGV4ZWMoY29kZSwgbnMpCiAgICAgZnVuYyA9IG5zW2YuX19uYW1lX19dCiAgICAgdHJ5Ogot
ICAgICAgICBmdW5jKCkKKyAgICAgICAgZnVuYygpICAjIHR5cGU6IGlnbm9yZVtvcGVyYXRvcl0K
ICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CiAgICAgICAgIGlmIG11c3RfcGFzczoKICAgICAg
ICAgICAgIHB5dGVzdC5mYWlsKCJzaG91bGRuJ3QgaGF2ZSByYWlzZWQiKQpAQCAtNjMsNDMgKzYy
LDIwIEBAIGRlZiBnZXRtc2coZiwgZXh0cmFfbnM9Tm9uZSwgbXVzdF9wYXNzPUZhbHNlKToKICAg
ICBlbHNlOgogICAgICAgICBpZiBub3QgbXVzdF9wYXNzOgogICAgICAgICAgICAgcHl0ZXN0LmZh
aWwoImZ1bmN0aW9uIGRpZG4ndCByYWlzZSBhdCBhbGwiKQorICAgICAgICByZXR1cm4gTm9uZQog
CiAKLWRlZiBhZGp1c3RfYm9keV9mb3JfbmV3X2RvY3N0cmluZ19pbl9tb2R1bGVfbm9kZShtKToK
LSAgICAiIiJNb2R1bGUgZG9jc3RyaW5ncyBpbiAzLjggYXJlIHBhcnQgb2YgTW9kdWxlIG5vZGUu
Ci0gICAgVGhpcyB3YXMgYnJpZWZseSBpbiAzLjcgYXMgd2VsbCBidXQgZ290IHJldmVydGVkIGlu
IGJldGEgNS4KLQotICAgIEl0J3Mgbm90IGluIHRoZSBib2R5IHNvIHdlIHJlbW92ZSBpdCBzbyB0
aGUgZm9sbG93aW5nIGJvZHkgaXRlbXMgaGF2ZQotICAgIHRoZSBzYW1lIGluZGV4ZXMgb24gYWxs
IFB5dGhvbiB2ZXJzaW9uczoKLQotICAgIFRPRE86Ci0KLSAgICBXZSBoYXZlIGEgY29tcGxpY2F0
ZWQgc3lzLnZlcnNpb25faW5mbyBpZiBpbiBoZXJlIHRvIGVhc2UgdGVzdGluZyBvbgotICAgIHZh
cmlvdXMgUHl0aG9uIDMuNyB2ZXJzaW9ucywgYnV0IHdlIHNob3VsZCByZW1vdmUgdGhlIDMuNyBj
aGVjayBhZnRlcgotICAgIDMuNyBpcyByZWxlYXNlZCBhcyBzdGFibGUgdG8gbWFrZSB0aGlzIGNo
ZWNrIG1vcmUgc3RyYWlnaHRmb3J3YXJkLgotICAgICIiIgotICAgIGlmICgKLSAgICAgICAgc3lz
LnZlcnNpb25faW5mbyA8ICgzLCA4KQotICAgICAgICBhbmQgbm90ICgoMywgNykgPD0gc3lzLnZl
cnNpb25faW5mbyA8PSAoMywgNywgMCwgImJldGEiLCA0KSkKLSAgICApOgotICAgICAgICBhc3Nl
cnQgbGVuKG0uYm9keSkgPiAxCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVswXSwg
YXN0LkV4cHIpCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVswXS52YWx1ZSwgYXN0
LlN0cikKLSAgICAgICAgZGVsIG0uYm9keVswXQotCi0KLWNsYXNzIFRlc3RBc3NlcnRpb25SZXdy
aXRlKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlOgogICAgIGRlZiB0ZXN0
X3BsYWNlX2luaXRpYWxfaW1wb3J0cyhzZWxmKToKICAgICAgICAgcyA9ICIiIidEb2Mgc3RyaW5n
J1xub3RoZXIgPSBzdHVmZiIiIgogICAgICAgICBtID0gcmV3cml0ZShzKQotICAgICAgICBhZGp1
c3RfYm9keV9mb3JfbmV3X2RvY3N0cmluZ19pbl9tb2R1bGVfbm9kZShtKQotICAgICAgICBmb3Ig
aW1wIGluIG0uYm9keVswOjJdOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtLmJvZHlbMF0s
IGFzdC5FeHByKQorICAgICAgICBmb3IgaW1wIGluIG0uYm9keVsxOjNdOgogICAgICAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaW1wLCBhc3QuSW1wb3J0KQogICAgICAgICAgICAgYXNzZXJ0IGlt
cC5saW5lbm8gPT0gMgogICAgICAgICAgICAgYXNzZXJ0IGltcC5jb2xfb2Zmc2V0ID09IDAKLSAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzJdLCBhc3QuQXNzaWduKQotICAgICAgICBz
ID0gIiIiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudFxub3RoZXJfc3R1ZmYi
IiIKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzNdLCBhc3QuQXNzaWduKQorICAg
ICAgICBzID0gIiIiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvblxub3RoZXJfc3R1ZmYi
IiIKICAgICAgICAgbSA9IHJld3JpdGUocykKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5i
b2R5WzBdLCBhc3QuSW1wb3J0RnJvbSkKICAgICAgICAgZm9yIGltcCBpbiBtLmJvZHlbMTozXToK
QEAgLTEwNywzNyArODMsMzcgQEAgY2xhc3MgVGVzdEFzc2VydGlvblJld3JpdGUob2JqZWN0KToK
ICAgICAgICAgICAgIGFzc2VydCBpbXAubGluZW5vID09IDIKICAgICAgICAgICAgIGFzc2VydCBp
bXAuY29sX29mZnNldCA9PSAwCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVszXSwg
YXN0LkV4cHIpCi0gICAgICAgIHMgPSAiIiInZG9jIHN0cmluZydcbmZyb20gX19mdXR1cmVfXyBp
bXBvcnQgd2l0aF9zdGF0ZW1lbnQiIiIKKyAgICAgICAgcyA9ICIiIidkb2Mgc3RyaW5nJ1xuZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIiIgogICAgICAgICBtID0gcmV3cml0ZShzKQot
ICAgICAgICBhZGp1c3RfYm9keV9mb3JfbmV3X2RvY3N0cmluZ19pbl9tb2R1bGVfbm9kZShtKQot
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtLmJvZHlbMF0sIGFzdC5JbXBvcnRGcm9tKQotICAg
ICAgICBmb3IgaW1wIGluIG0uYm9keVsxOjNdOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSht
LmJvZHlbMF0sIGFzdC5FeHByKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtLmJvZHlbMV0s
IGFzdC5JbXBvcnRGcm9tKQorICAgICAgICBmb3IgaW1wIGluIG0uYm9keVsyOjRdOgogICAgICAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaW1wLCBhc3QuSW1wb3J0KQogICAgICAgICAgICAgYXNz
ZXJ0IGltcC5saW5lbm8gPT0gMgogICAgICAgICAgICAgYXNzZXJ0IGltcC5jb2xfb2Zmc2V0ID09
IDAKLSAgICAgICAgcyA9ICIiIidkb2Mgc3RyaW5nJ1xuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3
aXRoX3N0YXRlbWVudFxub3RoZXIiIiIKKyAgICAgICAgcyA9ICIiIidkb2Mgc3RyaW5nJ1xuZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvblxub3RoZXIiIiIKICAgICAgICAgbSA9IHJld3Jp
dGUocykKLSAgICAgICAgYWRqdXN0X2JvZHlfZm9yX25ld19kb2NzdHJpbmdfaW5fbW9kdWxlX25v
ZGUobSkKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzBdLCBhc3QuSW1wb3J0RnJv
bSkKLSAgICAgICAgZm9yIGltcCBpbiBtLmJvZHlbMTozXToKKyAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UobS5ib2R5WzBdLCBhc3QuRXhwcikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5i
b2R5WzFdLCBhc3QuSW1wb3J0RnJvbSkKKyAgICAgICAgZm9yIGltcCBpbiBtLmJvZHlbMjo0XToK
ICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGltcCwgYXN0LkltcG9ydCkKICAgICAgICAg
ICAgIGFzc2VydCBpbXAubGluZW5vID09IDMKICAgICAgICAgICAgIGFzc2VydCBpbXAuY29sX29m
ZnNldCA9PSAwCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVszXSwgYXN0LkV4cHIp
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVs0XSwgYXN0LkV4cHIpCiAgICAgICAg
IHMgPSAiIiJmcm9tIC4gaW1wb3J0IHJlbGF0aXZlXG5vdGhlcl9zdHVmZiIiIgogICAgICAgICBt
ID0gcmV3cml0ZShzKQotICAgICAgICBmb3IgaW1wIGluIG0uYm9keVswOjJdOgorICAgICAgICBm
b3IgaW1wIGluIG0uYm9keVs6Ml06CiAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpbXAs
IGFzdC5JbXBvcnQpCiAgICAgICAgICAgICBhc3NlcnQgaW1wLmxpbmVubyA9PSAxCiAgICAgICAg
ICAgICBhc3NlcnQgaW1wLmNvbF9vZmZzZXQgPT0gMAogICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShtLmJvZHlbM10sIGFzdC5FeHByKQogCi0gICAgZGVmIHRlc3RfZG9udF9yZXdyaXRlKHNlbGYp
OgorICAgIGRlZiB0ZXN0X2RvbnRfcmV3cml0ZShzZWxmKSAtPiBOb25lOgogICAgICAgICBzID0g
IiIiJ1BZVEVTVF9ET05UX1JFV1JJVEUnXG5hc3NlcnQgMTQiIiIKICAgICAgICAgbSA9IHJld3Jp
dGUocykKLSAgICAgICAgYWRqdXN0X2JvZHlfZm9yX25ld19kb2NzdHJpbmdfaW5fbW9kdWxlX25v
ZGUobSkKLSAgICAgICAgYXNzZXJ0IGxlbihtLmJvZHkpID09IDEKLSAgICAgICAgYXNzZXJ0IG0u
Ym9keVswXS5tc2cgaXMgTm9uZQorICAgICAgICBhc3NlcnQgbGVuKG0uYm9keSkgPT0gMgorICAg
ICAgICBhc3NlcnQgaXNpbnN0YW5jZShtLmJvZHlbMV0sIGFzdC5Bc3NlcnQpCisgICAgICAgIGFz
c2VydCBtLmJvZHlbMV0ubXNnIGlzIE5vbmUKIAogICAgIGRlZiB0ZXN0X2RvbnRfcmV3cml0ZV9w
bHVnaW4oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGNvbnRlbnRzID0gewpAQCAtMTQ3LDQxICsx
MjMsMTQ0IEBAIGNsYXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlKG9iamVjdCk6CiAgICAgICAgIH0K
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCoqY29udGVudHMpCiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQotICAgICAgICBhc3NlcnQgIndhcm5pbmdz
IiBub3QgaW4gIiIuam9pbihyZXN1bHQub3V0bGluZXMpCi0KLSAgICBkZWYgdGVzdF9uYW1lKHNl
bGYpOgorICAgICAgICBhc3NlcnQgIndhcm5pbmciIG5vdCBpbiAiIi5qb2luKHJlc3VsdC5vdXRs
aW5lcykKKworICAgIGRlZiB0ZXN0X3Jld3JpdGVzX3BsdWdpbl9hc19hX3BhY2thZ2Uoc2VsZiwg
dGVzdGRpcik6CisgICAgICAgIHBrZ2RpciA9IHRlc3RkaXIubWtweWRpcigicGx1Z2luIikKKyAg
ICAgICAgcGtnZGlyLmpvaW4oIl9faW5pdF9fLnB5Iikud3JpdGUoCisgICAgICAgICAgICAiaW1w
b3J0IHB5dGVzdFxuIgorICAgICAgICAgICAgIkBweXRlc3QuZml4dHVyZVxuIgorICAgICAgICAg
ICAgImRlZiBzcGVjaWFsX2Fzc2VydGVyKCk6XG4iCisgICAgICAgICAgICAiICAgIGRlZiBzcGVj
aWFsX2Fzc2VydCh4LCB5KTpcbiIKKyAgICAgICAgICAgICIgICAgICAgIGFzc2VydCB4ID09IHlc
biIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHNwZWNpYWxfYXNzZXJ0XG4iCisgICAgICAgICkK
KyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoJ3B5dGVzdF9wbHVnaW5zID0gWyJwbHVnaW4i
XScpCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3Qoc3BlY2lhbF9hc3NlcnRl
cik6IHNwZWNpYWxfYXNzZXJ0ZXIoMSwgMilcbiIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmFzc2Vy
dCAxID09IDIqIl0pCisKKyAgICBkZWYgdGVzdF9ob25vcnNfcGVwXzIzNShzZWxmLCB0ZXN0ZGly
LCBtb25rZXlwYXRjaCk6CisgICAgICAgICMgbm90ZTogY291bGRuJ3QgbWFrZSBpdCBmYWlsIG9u
IG1hY29zIHdpdGggYSBzaW5nbGUgYHN5cy5wYXRoYCBlbnRyeQorICAgICAgICAjIG5vdGU6IHRo
ZXNlIG1vZHVsZXMgYXJlIG5hbWVkIGB0ZXN0XypgIHRvIHRyaWdnZXIgcmV3cml0aW5nCisgICAg
ICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oInRlc3RfeS5weSIpLndyaXRlKCJ4ID0gMSIpCisgICAg
ICAgIHhkaXIgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ4IikuZW5zdXJlX2RpcigpCisgICAgICAg
IHhkaXIuam9pbigidGVzdF9ZIikuZW5zdXJlX2RpcigpLmpvaW4oIl9faW5pdF9fLnB5Iikud3Jp
dGUoInggPSAyIikKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgImlt
cG9ydCB0ZXN0X3lcbiIKKyAgICAgICAgICAgICJpbXBvcnQgdGVzdF9ZXG4iCisgICAgICAgICAg
ICAiZGVmIHRlc3QoKTpcbiIKKyAgICAgICAgICAgICIgICAgYXNzZXJ0IHRlc3RfeS54ID09IDFc
biIKKyAgICAgICAgICAgICIgICAgYXNzZXJ0IHRlc3RfWS54ID09IDJcbiIKKyAgICAgICAgKQor
ICAgICAgICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQoeGRpcikKKyAgICAgICAgdGVzdGRp
ci5ydW5weXRlc3QoKS5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTEpCiAKLSAgICAgICAgZGVmIGYo
KToKKyAgICBkZWYgdGVzdF9uYW1lKHNlbGYsIHJlcXVlc3QpIC0+IE5vbmU6CisgICAgICAgIGRl
ZiBmMSgpIC0+IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKIAotICAgICAgICBhc3Nl
cnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgRmFsc2UiCisgICAgICAgIGFzc2VydCBnZXRtc2coZjEp
ID09ICJhc3NlcnQgRmFsc2UiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYyKCkg
LT4gTm9uZToKICAgICAgICAgICAgIGYgPSBGYWxzZQogICAgICAgICAgICAgYXNzZXJ0IGYKIAot
ICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgRmFsc2UiCisgICAgICAgIGFzc2Vy
dCBnZXRtc2coZjIpID09ICJhc3NlcnQgRmFsc2UiCiAKLSAgICAgICAgZGVmIGYoKToKLSAgICAg
ICAgICAgIGFzc2VydCBhX2dsb2JhbCAgIyBub3FhCisgICAgICAgIGRlZiBmMygpIC0+IE5vbmU6
CisgICAgICAgICAgICBhc3NlcnQgYV9nbG9iYWwgICMgdHlwZTogaWdub3JlW25hbWUtZGVmaW5l
ZF0gIyBub3FhCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmLCB7ImFfZ2xvYmFsIjogRmFsc2V9
KSA9PSAiYXNzZXJ0IEZhbHNlIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYzLCB7ImFfZ2xvYmFs
IjogRmFsc2V9KSA9PSAiYXNzZXJ0IEZhbHNlIgogCi0gICAgICAgIGRlZiBmKCk6Ci0gICAgICAg
ICAgICBhc3NlcnQgc3lzID09IDQyCisgICAgICAgIGRlZiBmNCgpIC0+IE5vbmU6CisgICAgICAg
ICAgICBhc3NlcnQgc3lzID09IDQyICAjIHR5cGU6IGlnbm9yZVtjb21wYXJpc29uLW92ZXJsYXBd
CiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmLCB7InN5cyI6IHN5c30pID09ICJhc3NlcnQgc3lz
ID09IDQyIgorICAgICAgICB2ZXJib3NlID0gcmVxdWVzdC5jb25maWcuZ2V0b3B0aW9uKCJ2ZXJi
b3NlIikKKyAgICAgICAgbXNnID0gZ2V0bXNnKGY0LCB7InN5cyI6IHN5c30pCisgICAgICAgIGlm
IHZlcmJvc2UgPiAwOgorICAgICAgICAgICAgYXNzZXJ0IG1zZyA9PSAoCisgICAgICAgICAgICAg
ICAgImFzc2VydCA8bW9kdWxlICdzeXMnIChidWlsdC1pbik+ID09IDQyXG4iCisgICAgICAgICAg
ICAgICAgIiAgKzxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT5cbiIKKyAgICAgICAgICAgICAgICAi
ICAtNDIiCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQg
bXNnID09ICJhc3NlcnQgc3lzID09IDQyIgogCi0gICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAg
ICBhc3NlcnQgY2xzID09IDQyICAjIG5vcWEKKyAgICAgICAgZGVmIGY1KCkgLT4gTm9uZToKKyAg
ICAgICAgICAgIGFzc2VydCBjbHMgPT0gNDIgICMgdHlwZTogaWdub3JlW25hbWUtZGVmaW5lZF0g
ICMgbm9xYTogRjgyMQogCi0gICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgY2xhc3Mg
WDoKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYsIHsiY2xzIjog
WH0pID09ICJhc3NlcnQgY2xzID09IDQyIgorICAgICAgICBtc2cgPSBnZXRtc2coZjUsIHsiY2xz
IjogWH0pCisgICAgICAgIGFzc2VydCBtc2cgaXMgbm90IE5vbmUKKyAgICAgICAgbGluZXMgPSBt
c2cuc3BsaXRsaW5lcygpCisgICAgICAgIGlmIHZlcmJvc2UgPiAxOgorICAgICAgICAgICAgYXNz
ZXJ0IGxpbmVzID09IFsKKyAgICAgICAgICAgICAgICAiYXNzZXJ0IHshcn0gPT0gNDIiLmZvcm1h
dChYKSwKKyAgICAgICAgICAgICAgICAiICAreyFyfSIuZm9ybWF0KFgpLAorICAgICAgICAgICAg
ICAgICIgIC00MiIsCisgICAgICAgICAgICBdCisgICAgICAgIGVsaWYgdmVyYm9zZSA+IDA6Cisg
ICAgICAgICAgICBhc3NlcnQgbGluZXMgPT0gWworICAgICAgICAgICAgICAgICJhc3NlcnQgPGNs
YXNzICd0ZXN0Xy4uLmUuPGxvY2Fscz4uWCc+ID09IDQyIiwKKyAgICAgICAgICAgICAgICAiICAr
eyFyfSIuZm9ybWF0KFgpLAorICAgICAgICAgICAgICAgICIgIC00MiIsCisgICAgICAgICAgICBd
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgbGluZXMgPT0gWyJhc3NlcnQgY2xz
ID09IDQyIl0KKworICAgIGRlZiB0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZV9zYW1lX3dpZHRoKHNl
bGYsIHJlcXVlc3QpIC0+IE5vbmU6CisgICAgICAgICIiIlNob3VsZCB1c2Ugc2FtZSB3aWR0aC90
cnVuY2F0aW9uIHdpdGggc2FtZSBpbml0aWFsIHdpZHRoLiIiIgorCisgICAgICAgIGRlZiBmKCkg
LT4gTm9uZToKKyAgICAgICAgICAgIGFzc2VydCAiMTIzNDU2Nzg5MCIgKiA1ICsgIkEiID09ICIx
MjM0NTY3ODkwIiAqIDUgKyAiQiIKKworICAgICAgICBtc2cgPSBnZXRtc2coZikKKyAgICAgICAg
YXNzZXJ0IG1zZyBpcyBub3QgTm9uZQorICAgICAgICBsaW5lID0gbXNnLnNwbGl0bGluZXMoKVsw
XQorICAgICAgICBpZiByZXF1ZXN0LmNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+IDE6Cisg
ICAgICAgICAgICBhc3NlcnQgbGluZSA9PSAoCisgICAgICAgICAgICAgICAgImFzc2VydCAnMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBBJyAiCisgICAg
ICAgICAgICAgICAgIj09ICcxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MEInIgorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
YXNzZXJ0IGxpbmUgPT0gKAorICAgICAgICAgICAgICAgICJhc3NlcnQgJzEyMzQ1Njc4OTAxMi4u
LjkwMTIzNDU2Nzg5MEEnICIKKyAgICAgICAgICAgICAgICAiPT0gJzEyMzQ1Njc4OTAxMi4uLjkw
MTIzNDU2Nzg5MEInIgorICAgICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfYXNzZXJ0X2FscmVh
ZHlfaGFzX21lc3NhZ2Uoc2VsZik6CisgICAgZGVmIHRlc3RfZG9udF9yZXdyaXRlX2lmX2hhc2F0
dHJfZmFpbHMoc2VsZiwgcmVxdWVzdCkgLT4gTm9uZToKKyAgICAgICAgY2xhc3MgWToKKyAgICAg
ICAgICAgICIiIkEgY2xhc3Mgd2hvc2UgZ2V0YXR0ciBmYWlscywgYnV0IG5vdCB3aXRoIGBBdHRy
aWJ1dGVFcnJvcmAuIiIiCiAKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRy
aWJ1dGVfbmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoKQorCisgICAgICAg
ICAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICAgICAgICAgIHJldHVybiAi
WSIKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICAg
ICAgICAgc2VsZi5mb28gPSAzCisKKyAgICAgICAgZGVmIGYoKSAtPiBOb25lOgorICAgICAgICAg
ICAgYXNzZXJ0IGNscygpLmZvbyA9PSAyICAjIHR5cGU6IGlnbm9yZVtuYW1lLWRlZmluZWRdICMg
bm9xYTogRjgyMQorCisgICAgICAgICMgWFhYOiBsb29rcyBsaWtlIHRoZSAid2hlcmUiIHNob3Vs
ZCBhbHNvIGJlIHRoZXJlIGluIHZlcmJvc2UgbW9kZT8hCisgICAgICAgIG1zZyA9IGdldG1zZyhm
LCB7ImNscyI6IFl9KQorICAgICAgICBhc3NlcnQgbXNnIGlzIG5vdCBOb25lCisgICAgICAgIGxp
bmVzID0gbXNnLnNwbGl0bGluZXMoKQorICAgICAgICBpZiByZXF1ZXN0LmNvbmZpZy5nZXRvcHRp
b24oInZlcmJvc2UiKSA+IDA6CisgICAgICAgICAgICBhc3NlcnQgbGluZXMgPT0gWyJhc3NlcnQg
MyA9PSAyIiwgIiAgKzMiLCAiICAtMiJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3Nl
cnQgbGluZXMgPT0gWworICAgICAgICAgICAgICAgICJhc3NlcnQgMyA9PSAyIiwKKyAgICAgICAg
ICAgICAgICAiICsgIHdoZXJlIDMgPSBZLmZvbyIsCisgICAgICAgICAgICAgICAgIiArICAgIHdo
ZXJlIFkgPSBjbHMoKSIsCisgICAgICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfYWxy
ZWFkeV9oYXNfbWVzc2FnZShzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIGFz
c2VydCBGYWxzZSwgInNvbWV0aGluZyBiYWQhIgogCkBAIC0yNTAsMTUyICszMjksMTUyIEBAIGNs
YXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlKG9iamVjdCk6CiAgICAgICAgICAgICBbIipBc3NlcnRp
b25FcnJvcjogVG8gYmUgZXNjYXBlZDogJSIsICIqYXNzZXJ0IDEgPT0gMiJdCiAgICAgICAgICkK
IAotICAgIGRlZiB0ZXN0X2Jvb2xvcChzZWxmKToKKyAgICBkZWYgdGVzdF9hc3NlcnRpb25fbWVz
c2FnZXNfYnl0ZXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgi
ZGVmIHRlc3RfYnl0ZXNfYXNzZXJ0aW9uKCk6XG4gICAgYXNzZXJ0IEZhbHNlLCBiJ29oYWkhJ1xu
IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAxCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipB
c3NlcnRpb25FcnJvcjogYidvaGFpISciLCAiKmFzc2VydCBGYWxzZSJdKQogCi0gICAgICAgIGRl
ZiBmKCk6CisgICAgZGVmIHRlc3RfYm9vbG9wKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBm
MSgpIC0+IE5vbmU6CiAgICAgICAgICAgICBmID0gZyA9IEZhbHNlCiAgICAgICAgICAgICBhc3Nl
cnQgZiBhbmQgZwogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2VydCAoRmFsc2Up
IgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYxKSA9PSAiYXNzZXJ0IChGYWxzZSkiCiAKLSAgICAg
ICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYyKCkgLT4gTm9uZToKICAgICAgICAgICAgIGYgPSBU
cnVlCiAgICAgICAgICAgICBnID0gRmFsc2UKICAgICAgICAgICAgIGFzc2VydCBmIGFuZCBnCiAK
LSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiYXNzZXJ0IChUcnVlIGFuZCBGYWxzZSkiCisg
ICAgICAgIGFzc2VydCBnZXRtc2coZjIpID09ICJhc3NlcnQgKFRydWUgYW5kIEZhbHNlKSIKIAot
ICAgICAgICBkZWYgZigpOgorICAgICAgICBkZWYgZjMoKSAtPiBOb25lOgogICAgICAgICAgICAg
ZiA9IEZhbHNlCiAgICAgICAgICAgICBnID0gVHJ1ZQogICAgICAgICAgICAgYXNzZXJ0IGYgYW5k
IGcKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKEZhbHNlKSIKKyAgICAg
ICAgYXNzZXJ0IGdldG1zZyhmMykgPT0gImFzc2VydCAoRmFsc2UpIgogCi0gICAgICAgIGRlZiBm
KCk6CisgICAgICAgIGRlZiBmNCgpIC0+IE5vbmU6CiAgICAgICAgICAgICBmID0gZyA9IEZhbHNl
CiAgICAgICAgICAgICBhc3NlcnQgZiBvciBnCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9
PSAiYXNzZXJ0IChGYWxzZSBvciBGYWxzZSkiCisgICAgICAgIGFzc2VydCBnZXRtc2coZjQpID09
ICJhc3NlcnQgKEZhbHNlIG9yIEZhbHNlKSIKIAotICAgICAgICBkZWYgZigpOgorICAgICAgICBk
ZWYgZjUoKSAtPiBOb25lOgogICAgICAgICAgICAgZiA9IGcgPSBGYWxzZQogICAgICAgICAgICAg
YXNzZXJ0IG5vdCBmIGFuZCBub3QgZwogCi0gICAgICAgIGdldG1zZyhmLCBtdXN0X3Bhc3M9VHJ1
ZSkKKyAgICAgICAgZ2V0bXNnKGY1LCBtdXN0X3Bhc3M9VHJ1ZSkKIAotICAgICAgICBkZWYgeCgp
OgorICAgICAgICBkZWYgeCgpIC0+IGJvb2w6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAot
ICAgICAgICBkZWYgZigpOgorICAgICAgICBkZWYgZjYoKSAtPiBOb25lOgogICAgICAgICAgICAg
YXNzZXJ0IHgoKSBhbmQgeCgpCiAKICAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIGdldG1z
ZyhmLCB7IngiOiB4fSkKKyAgICAgICAgICAgIGdldG1zZyhmNiwgeyJ4IjogeH0pCiAgICAgICAg
ICAgICA9PSAiIiJhc3NlcnQgKEZhbHNlKQogICsgIHdoZXJlIEZhbHNlID0geCgpIiIiCiAgICAg
ICAgICkKIAotICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlIG9yIHgo
KQorICAgICAgICBkZWYgZjcoKSAtPiBOb25lOgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlIG9y
IHgoKSAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCiAKICAgICAgICAgYXNzZXJ0ICgKLSAg
ICAgICAgICAgIGdldG1zZyhmLCB7IngiOiB4fSkKKyAgICAgICAgICAgIGdldG1zZyhmNywgeyJ4
IjogeH0pCiAgICAgICAgICAgICA9PSAiIiJhc3NlcnQgKEZhbHNlIG9yIEZhbHNlKQogICsgIHdo
ZXJlIEZhbHNlID0geCgpIiIiCiAgICAgICAgICkKIAotICAgICAgICBkZWYgZigpOgorICAgICAg
ICBkZWYgZjgoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IDEgaW4ge30gYW5kIDIgaW4g
e30KIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKDEgaW4ge30pIgorICAg
ICAgICBhc3NlcnQgZ2V0bXNnKGY4KSA9PSAiYXNzZXJ0ICgxIGluIHt9KSIKIAotICAgICAgICBk
ZWYgZigpOgorICAgICAgICBkZWYgZjkoKSAtPiBOb25lOgogICAgICAgICAgICAgeCA9IDEKICAg
ICAgICAgICAgIHkgPSAyCiAgICAgICAgICAgICBhc3NlcnQgeCBpbiB7MTogTm9uZX0gYW5kIHkg
aW4ge30KIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKDEgaW4gezE6IE5v
bmV9IGFuZCAyIGluIHt9KSIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmOSkgPT0gImFzc2VydCAo
MSBpbiB7MTogTm9uZX0gYW5kIDIgaW4ge30pIgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAg
IGRlZiBmMTAoKSAtPiBOb25lOgogICAgICAgICAgICAgZiA9IFRydWUKICAgICAgICAgICAgIGcg
PSBGYWxzZQogICAgICAgICAgICAgYXNzZXJ0IGYgb3IgZwogCi0gICAgICAgIGdldG1zZyhmLCBt
dXN0X3Bhc3M9VHJ1ZSkKKyAgICAgICAgZ2V0bXNnKGYxMCwgbXVzdF9wYXNzPVRydWUpCiAKLSAg
ICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYxMSgpIC0+IE5vbmU6CiAgICAgICAgICAgICBm
ID0gZyA9IGggPSBsYW1iZGE6IFRydWUKICAgICAgICAgICAgIGFzc2VydCBmKCkgYW5kIGcoKSBh
bmQgaCgpCiAKLSAgICAgICAgZ2V0bXNnKGYsIG11c3RfcGFzcz1UcnVlKQorICAgICAgICBnZXRt
c2coZjExLCBtdXN0X3Bhc3M9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X3Nob3J0X2NpcmN1aXRfZXZh
bHVhdGlvbihzZWxmKToKKyAgICBkZWYgdGVzdF9zaG9ydF9jaXJjdWl0X2V2YWx1YXRpb24oc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGYxKCkgLT4gTm9uZToKKyAgICAgICAgICAgIGFzc2Vy
dCBUcnVlIG9yIGV4cGxvZGUgICMgdHlwZTogaWdub3JlW25hbWUtZGVmaW5lZCx1bnJlYWNoYWJs
ZV0gIyBub3FhOiBGODIxCiAKLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAgIGFzc2VydCBU
cnVlIG9yIGV4cGxvZGUgICMgbm9xYQorICAgICAgICBnZXRtc2coZjEsIG11c3RfcGFzcz1UcnVl
KQogCi0gICAgICAgIGdldG1zZyhmLCBtdXN0X3Bhc3M9VHJ1ZSkKLQotICAgICAgICBkZWYgZigp
OgorICAgICAgICBkZWYgZjIoKSAtPiBOb25lOgogICAgICAgICAgICAgeCA9IDEKICAgICAgICAg
ICAgIGFzc2VydCB4ID09IDEgb3IgeCA9PSAyCiAKLSAgICAgICAgZ2V0bXNnKGYsIG11c3RfcGFz
cz1UcnVlKQorICAgICAgICBnZXRtc2coZjIsIG11c3RfcGFzcz1UcnVlKQogCi0gICAgZGVmIHRl
c3RfdW5hcnlfb3Aoc2VsZik6Ci0KLSAgICAgICAgZGVmIGYoKToKKyAgICBkZWYgdGVzdF91bmFy
eV9vcChzZWxmKSAtPiBOb25lOgorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAg
ICAgeCA9IFRydWUKICAgICAgICAgICAgIGFzc2VydCBub3QgeAogCi0gICAgICAgIGFzc2VydCBn
ZXRtc2coZikgPT0gImFzc2VydCBub3QgVHJ1ZSIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmMSkg
PT0gImFzc2VydCBub3QgVHJ1ZSIKIAotICAgICAgICBkZWYgZigpOgorICAgICAgICBkZWYgZjIo
KSAtPiBOb25lOgogICAgICAgICAgICAgeCA9IDAKICAgICAgICAgICAgIGFzc2VydCB+eCArIDEK
IAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKH4wICsgMSkiCisgICAgICAg
IGFzc2VydCBnZXRtc2coZjIpID09ICJhc3NlcnQgKH4wICsgMSkiCiAKLSAgICAgICAgZGVmIGYo
KToKKyAgICAgICAgZGVmIGYzKCkgLT4gTm9uZToKICAgICAgICAgICAgIHggPSAzCiAgICAgICAg
ICAgICBhc3NlcnQgLXggKyB4CiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiYXNzZXJ0
ICgtMyArIDMpIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYzKSA9PSAiYXNzZXJ0ICgtMyArIDMp
IgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmNCgpIC0+IE5vbmU6CiAgICAgICAg
ICAgICB4ID0gMAogICAgICAgICAgICAgYXNzZXJ0ICt4ICsgeAogCi0gICAgICAgIGFzc2VydCBn
ZXRtc2coZikgPT0gImFzc2VydCAoKzAgKyAwKSIKLQotICAgIGRlZiB0ZXN0X2JpbmFyeV9vcChz
ZWxmKToKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmNCkgPT0gImFzc2VydCAoKzAgKyAwKSIKIAot
ICAgICAgICBkZWYgZigpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9vcChzZWxmKSAtPiBOb25lOgor
ICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAgICAgeCA9IDEKICAgICAgICAgICAg
IHkgPSAtMQogICAgICAgICAgICAgYXNzZXJ0IHggKyB5CiAKLSAgICAgICAgYXNzZXJ0IGdldG1z
ZyhmKSA9PSAiYXNzZXJ0ICgxICsgLTEpIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYxKSA9PSAi
YXNzZXJ0ICgxICsgLTEpIgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmMigpIC0+
IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgbm90IDUgJSA0CiAKLSAgICAgICAgYXNzZXJ0IGdl
dG1zZyhmKSA9PSAiYXNzZXJ0IG5vdCAoNSAlIDQpIgotCi0gICAgZGVmIHRlc3RfYm9vbG9wX3Bl
cmNlbnQoc2VsZik6CisgICAgICAgIGFzc2VydCBnZXRtc2coZjIpID09ICJhc3NlcnQgbm90ICg1
ICUgNCkiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICBkZWYgdGVzdF9ib29sb3BfcGVyY2VudChz
ZWxmKSAtPiBOb25lOgorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNz
ZXJ0IDMgJSAyIGFuZCBGYWxzZQogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2Vy
dCAoKDMgJSAyKSBhbmQgRmFsc2UpIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYxKSA9PSAiYXNz
ZXJ0ICgoMyAlIDIpIGFuZCBGYWxzZSkiCiAKLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAg
IGFzc2VydCBGYWxzZSBvciA0ICUgMgorICAgICAgICBkZWYgZjIoKSAtPiBOb25lOgorICAgICAg
ICAgICAgYXNzZXJ0IEZhbHNlIG9yIDQgJSAyICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0K
IAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKEZhbHNlIG9yICg0ICUgMikp
IgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYyKSA9PSAiYXNzZXJ0IChGYWxzZSBvciAoNCAlIDIp
KSIKIAotICAgIEBweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm8gPCAoMyw1KSIp
CiAgICAgZGVmIHRlc3RfYXRfb3BlcmF0b3JfaXNzdWUxMjkwKHNlbGYsIHRlc3RkaXIpOgogICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTQxMCwxNzcgKzQ4
OSwxODIgQEAgY2xhc3MgVGVzdEFzc2VydGlvblJld3JpdGUob2JqZWN0KToKICAgICAgICAgKQog
ICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MSkKIAot
ICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgZGVmIHRlc3Rfc3RhcnJlZF93aXRoX3NpZGVf
ZWZmZWN0KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJTZWUgIzQ0MTIiIiIKKyAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgZGVmIHRl
c3QoKToKKyAgICAgICAgICAgICAgICBmID0gbGFtYmRhIHg6IHgKKyAgICAgICAgICAgICAgICB4
ID0gaXRlcihbMSwgMiwgM10pCisgICAgICAgICAgICAgICAgYXNzZXJ0IDIgKiBuZXh0KHgpID09
IGYoKltuZXh0KHgpXSkKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3Rk
aXIucnVucHl0ZXN0KCkuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0xKQogCi0gICAgICAgIGRlZiBn
KGE9NDIsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHRlc3RfY2FsbChzZWxmKSAtPiBOb25l
OgorICAgICAgICBkZWYgZyhhPTQyLCAqYXJncywgKiprd2FyZ3MpIC0+IGJvb2w6CiAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBucyA9IHsiZyI6IGd9CiAKLSAgICAgICAgZGVm
IGYoKToKKyAgICAgICAgZGVmIGYxKCkgLT4gTm9uZToKICAgICAgICAgICAgIGFzc2VydCBnKCkK
IAogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgZ2V0bXNnKGYsIG5zKQorICAgICAgICAg
ICAgZ2V0bXNnKGYxLCBucykKICAgICAgICAgICAgID09ICIiImFzc2VydCBGYWxzZQogICsgIHdo
ZXJlIEZhbHNlID0gZygpIiIiCiAgICAgICAgICkKIAotICAgICAgICBkZWYgZigpOgorICAgICAg
ICBkZWYgZjIoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IGcoMSkKIAogICAgICAgICBh
c3NlcnQgKAotICAgICAgICAgICAgZ2V0bXNnKGYsIG5zKQorICAgICAgICAgICAgZ2V0bXNnKGYy
LCBucykKICAgICAgICAgICAgID09ICIiImFzc2VydCBGYWxzZQogICsgIHdoZXJlIEZhbHNlID0g
ZygxKSIiIgogICAgICAgICApCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYzKCkg
LT4gTm9uZToKICAgICAgICAgICAgIGFzc2VydCBnKDEsIDIpCiAKICAgICAgICAgYXNzZXJ0ICgK
LSAgICAgICAgICAgIGdldG1zZyhmLCBucykKKyAgICAgICAgICAgIGdldG1zZyhmMywgbnMpCiAg
ICAgICAgICAgICA9PSAiIiJhc3NlcnQgRmFsc2UKICArICB3aGVyZSBGYWxzZSA9IGcoMSwgMiki
IiIKICAgICAgICAgKQogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmNCgpIC0+IE5v
bmU6CiAgICAgICAgICAgICBhc3NlcnQgZygxLCBnPTQyKQogCiAgICAgICAgIGFzc2VydCAoCi0g
ICAgICAgICAgICBnZXRtc2coZiwgbnMpCisgICAgICAgICAgICBnZXRtc2coZjQsIG5zKQogICAg
ICAgICAgICAgPT0gIiIiYXNzZXJ0IEZhbHNlCiAgKyAgd2hlcmUgRmFsc2UgPSBnKDEsIGc9NDIp
IiIiCiAgICAgICAgICkKIAotICAgICAgICBkZWYgZigpOgorICAgICAgICBkZWYgZjUoKSAtPiBO
b25lOgogICAgICAgICAgICAgYXNzZXJ0IGcoMSwgMywgZz0yMykKIAogICAgICAgICBhc3NlcnQg
KAotICAgICAgICAgICAgZ2V0bXNnKGYsIG5zKQorICAgICAgICAgICAgZ2V0bXNnKGY1LCBucykK
ICAgICAgICAgICAgID09ICIiImFzc2VydCBGYWxzZQogICsgIHdoZXJlIEZhbHNlID0gZygxLCAz
LCBnPTIzKSIiIgogICAgICAgICApCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY2
KCkgLT4gTm9uZToKICAgICAgICAgICAgIHNlcSA9IFsxLCAyLCAzXQogICAgICAgICAgICAgYXNz
ZXJ0IGcoKnNlcSkKIAogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgZ2V0bXNnKGYsIG5z
KQorICAgICAgICAgICAgZ2V0bXNnKGY2LCBucykKICAgICAgICAgICAgID09ICIiImFzc2VydCBG
YWxzZQogICsgIHdoZXJlIEZhbHNlID0gZygqWzEsIDIsIDNdKSIiIgogICAgICAgICApCiAKLSAg
ICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY3KCkgLT4gTm9uZToKICAgICAgICAgICAgIHgg
PSAiYSIKICAgICAgICAgICAgIGFzc2VydCBnKCoqe3g6IDJ9KQogCiAgICAgICAgIGFzc2VydCAo
Ci0gICAgICAgICAgICBnZXRtc2coZiwgbnMpCisgICAgICAgICAgICBnZXRtc2coZjcsIG5zKQog
ICAgICAgICAgICAgPT0gIiIiYXNzZXJ0IEZhbHNlCiAgKyAgd2hlcmUgRmFsc2UgPSBnKCoqeydh
JzogMn0pIiIiCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZShzZWxmKToKLQot
ICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgZGVmIHRlc3RfYXR0cmlidXRlKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIGNsYXNzIFg6CiAgICAgICAgICAgICBnID0gMwogCiAgICAgICAgIG5z
ID0geyJ4IjogWH0KIAotICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCB4
LmcgICMgbm9xYQorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgorICAgICAgICAgICAgYXNzZXJ0
IG5vdCB4LmcgICMgdHlwZTogaWdub3JlW25hbWUtZGVmaW5lZF0gIyBub3FhOiBGODIxCiAKICAg
ICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIGdldG1zZyhmLCBucykKKyAgICAgICAgICAgIGdl
dG1zZyhmMSwgbnMpCiAgICAgICAgICAgICA9PSAiIiJhc3NlcnQgbm90IDMKICArICB3aGVyZSAz
ID0geC5nIiIiCiAgICAgICAgICkKIAotICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgeC5h
ID0gRmFsc2UgICMgbm9xYQotICAgICAgICAgICAgYXNzZXJ0IHguYSAgIyBub3FhCisgICAgICAg
IGRlZiBmMigpIC0+IE5vbmU6CisgICAgICAgICAgICB4LmEgPSBGYWxzZSAgIyB0eXBlOiBpZ25v
cmVbbmFtZS1kZWZpbmVkXSAjIG5vcWE6IEY4MjEKKyAgICAgICAgICAgIGFzc2VydCB4LmEgICMg
dHlwZTogaWdub3JlW25hbWUtZGVmaW5lZF0gIyBub3FhOiBGODIxCiAKICAgICAgICAgYXNzZXJ0
ICgKLSAgICAgICAgICAgIGdldG1zZyhmLCBucykKKyAgICAgICAgICAgIGdldG1zZyhmMiwgbnMp
CiAgICAgICAgICAgICA9PSAiIiJhc3NlcnQgRmFsc2UKICArICB3aGVyZSBGYWxzZSA9IHguYSIi
IgogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9jb21wYXJpc29ucyhzZWxmKToKLQotICAgICAg
ICBkZWYgZigpOgorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25zKHNlbGYpIC0+IE5vbmU6CisgICAg
ICAgIGRlZiBmMSgpIC0+IE5vbmU6CiAgICAgICAgICAgICBhLCBiID0gcmFuZ2UoMikKICAgICAg
ICAgICAgIGFzc2VydCBiIDwgYQogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gIiIiYXNz
ZXJ0IDEgPCAwIiIiCisgICAgICAgIGFzc2VydCBnZXRtc2coZjEpID09ICIiImFzc2VydCAxIDwg
MCIiIgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmMigpIC0+IE5vbmU6CiAgICAg
ICAgICAgICBhLCBiLCBjID0gcmFuZ2UoMykKICAgICAgICAgICAgIGFzc2VydCBhID4gYiA+IGMK
IAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICIiImFzc2VydCAwID4gMSIiIgorICAgICAg
ICBhc3NlcnQgZ2V0bXNnKGYyKSA9PSAiIiJhc3NlcnQgMCA+IDEiIiIKIAotICAgICAgICBkZWYg
ZigpOgorICAgICAgICBkZWYgZjMoKSAtPiBOb25lOgogICAgICAgICAgICAgYSwgYiwgYyA9IHJh
bmdlKDMpCiAgICAgICAgICAgICBhc3NlcnQgYSA8IGIgPiBjCiAKLSAgICAgICAgYXNzZXJ0IGdl
dG1zZyhmKSA9PSAiIiJhc3NlcnQgMSA+IDIiIiIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmMykg
PT0gIiIiYXNzZXJ0IDEgPiAyIiIiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY0
KCkgLT4gTm9uZToKICAgICAgICAgICAgIGEsIGIsIGMgPSByYW5nZSgzKQogICAgICAgICAgICAg
YXNzZXJ0IGEgPCBiIDw9IGMKIAotICAgICAgICBnZXRtc2coZiwgbXVzdF9wYXNzPVRydWUpCisg
ICAgICAgIGdldG1zZyhmNCwgbXVzdF9wYXNzPVRydWUpCiAKLSAgICAgICAgZGVmIGYoKToKKyAg
ICAgICAgZGVmIGY1KCkgLT4gTm9uZToKICAgICAgICAgICAgIGEsIGIsIGMgPSByYW5nZSgzKQog
ICAgICAgICAgICAgYXNzZXJ0IGEgPCBiCiAgICAgICAgICAgICBhc3NlcnQgYiA8IGMKIAotICAg
ICAgICBnZXRtc2coZiwgbXVzdF9wYXNzPVRydWUpCi0KLSAgICBkZWYgdGVzdF9sZW4oc2VsZik6
CisgICAgICAgIGdldG1zZyhmNSwgbXVzdF9wYXNzPVRydWUpCiAKKyAgICBkZWYgdGVzdF9sZW4o
c2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICB2YWx1ZXMgPSBs
aXN0KHJhbmdlKDEwKSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odmFsdWVzKSA9PSAxMQogCi0g
ICAgICAgIGFzc2VydCBnZXRtc2coZikuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICIiImFzc2Vy
dCAxMCA9PSAxMQotICsgIHdoZXJlIDEwID0gbGVuKFsiIiIKLSAgICAgICAgKQotCi0gICAgZGVm
IHRlc3RfY3VzdG9tX3JlcHJjb21wYXJlKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbXNn
ID0gZ2V0bXNnKGYpCisgICAgICAgIGlmIHJlcXVlc3QuY29uZmlnLmdldG9wdGlvbigidmVyYm9z
ZSIpID4gMDoKKyAgICAgICAgICAgIGFzc2VydCBtc2cgPT0gImFzc2VydCAxMCA9PSAxMVxuICAr
MTBcbiAgLTExIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IG1zZyA9PSAiYXNz
ZXJ0IDEwID09IDExXG4gKyAgd2hlcmUgMTAgPSBsZW4oWzAsIDEsIDIsIDMsIDQsIDUsIC4uLl0p
IgogCi0gICAgICAgIGRlZiBteV9yZXByY29tcGFyZShvcCwgbGVmdCwgcmlnaHQpOgorICAgIGRl
ZiB0ZXN0X2N1c3RvbV9yZXByY29tcGFyZShzZWxmLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKKyAg
ICAgICAgZGVmIG15X3JlcHJjb21wYXJlMShvcCwgbGVmdCwgcmlnaHQpIC0+IHN0cjoKICAgICAg
ICAgICAgIHJldHVybiAiNDIiCiAKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih1dGlsLCAi
X3JlcHJjb21wYXJlIiwgbXlfcmVwcmNvbXBhcmUpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0
dHIodXRpbCwgIl9yZXByY29tcGFyZSIsIG15X3JlcHJjb21wYXJlMSkKIAotICAgICAgICBkZWYg
ZigpOgorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IDQyIDwg
MwogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2VydCA0MiIKKyAgICAgICAgYXNz
ZXJ0IGdldG1zZyhmMSkgPT0gImFzc2VydCA0MiIKIAotICAgICAgICBkZWYgbXlfcmVwcmNvbXBh
cmUob3AsIGxlZnQsIHJpZ2h0KToKLSAgICAgICAgICAgIHJldHVybiAiJXMgJXMgJXMiICUgKGxl
ZnQsIG9wLCByaWdodCkKKyAgICAgICAgZGVmIG15X3JlcHJjb21wYXJlMihvcCwgbGVmdCwgcmln
aHQpIC0+IHN0cjoKKyAgICAgICAgICAgIHJldHVybiAie30ge30ge30iLmZvcm1hdChsZWZ0LCBv
cCwgcmlnaHQpCiAKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih1dGlsLCAiX3JlcHJjb21w
YXJlIiwgbXlfcmVwcmNvbXBhcmUpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodXRpbCwg
Il9yZXByY29tcGFyZSIsIG15X3JlcHJjb21wYXJlMikKIAotICAgICAgICBkZWYgZigpOgorICAg
ICAgICBkZWYgZjIoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IDEgPCAzIDwgNSA8PSA0
IDwgNwogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2VydCA1IDw9IDQiCi0KLSAg
ICBkZWYgdGVzdF9hc3NlcnRfcmFpc2luZ19ub256ZXJvX2luX2NvbXBhcmlzb24oc2VsZik6Cisg
ICAgICAgIGFzc2VydCBnZXRtc2coZjIpID09ICJhc3NlcnQgNSA8PSA0IgogCi0gICAgICAgIGRl
ZiBmKCk6Ci0KLSAgICAgICAgICAgIGNsYXNzIEEob2JqZWN0KToKLQotICAgICAgICAgICAgICAg
IGRlZiBfX25vbnplcm9fXyhzZWxmKToKKyAgICBkZWYgdGVzdF9hc3NlcnRfcmFpc2luZ19fYm9v
bF9faW5fY29tcGFyaXNvbihzZWxmKSAtPiBOb25lOgorICAgICAgICBkZWYgZigpIC0+IE5vbmU6
CisgICAgICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxm
KToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcig0MikKIAogICAgICAgICAg
ICAgICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgpAQCAtNTg5LDI1ICs2NzMsMjYgQEAgY2xh
c3MgVGVzdEFzc2VydGlvblJld3JpdGUob2JqZWN0KToKICAgICAgICAgICAgICAgICBkZWYgX19y
ZXByX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiPE1ZNDIgb2JqZWN0PiIK
IAotICAgICAgICAgICAgZGVmIG15YW55KHgpOgorICAgICAgICAgICAgZGVmIG15YW55KHgpIC0+
IGJvb2w6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgICAgIGFzc2Vy
dCBteWFueShBKCkgPCAwKQogCi0gICAgICAgIGFzc2VydCAiPE1ZNDIgb2JqZWN0PiA8IDAiIGlu
IGdldG1zZyhmKQorICAgICAgICBtc2cgPSBnZXRtc2coZikKKyAgICAgICAgYXNzZXJ0IG1zZyBp
cyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgIjxNWTQyIG9iamVjdD4gPCAwIiBpbiBtc2cKIAot
ICAgIGRlZiB0ZXN0X2Zvcm1hdGNoYXIoc2VsZik6Ci0KLSAgICAgICAgZGVmIGYoKToKLSAgICAg
ICAgICAgIGFzc2VydCAiJXRlc3QiID09ICJ0ZXN0IgorICAgIGRlZiB0ZXN0X2Zvcm1hdGNoYXIo
c2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGYoKSAtPiBOb25lOgorICAgICAgICAgICAgYXNz
ZXJ0ICIldGVzdCIgPT0gInRlc3QiICAjIHR5cGU6IGlnbm9yZVtjb21wYXJpc29uLW92ZXJsYXBd
CiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKS5zdGFydHN3aXRoKCJhc3NlcnQgJyV0ZXN0JyA9
PSAndGVzdCciKQorICAgICAgICBtc2cgPSBnZXRtc2coZikKKyAgICAgICAgYXNzZXJ0IG1zZyBp
cyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgbXNnLnN0YXJ0c3dpdGgoImFzc2VydCAnJXRlc3Qn
ID09ICd0ZXN0JyIpCiAKLSAgICBkZWYgdGVzdF9jdXN0b21fcmVwcihzZWxmKToKLQotICAgICAg
ICBkZWYgZigpOgotCi0gICAgICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICBkZWYgdGVz
dF9jdXN0b21fcmVwcihzZWxmLCByZXF1ZXN0KSAtPiBOb25lOgorICAgICAgICBkZWYgZigpIC0+
IE5vbmU6CisgICAgICAgICAgICBjbGFzcyBGb286CiAgICAgICAgICAgICAgICAgYSA9IDEKIAog
ICAgICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTYxNiwxMSArNzAxLDMyIEBA
IGNsYXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlKG9iamVjdCk6CiAgICAgICAgICAgICBmID0gRm9v
KCkKICAgICAgICAgICAgIGFzc2VydCAwID09IGYuYQogCi0gICAgICAgIGFzc2VydCByIndoZXJl
IDEgPSBcbnsgXG5+IFxufS5hIiBpbiB1dGlsLl9mb3JtYXRfbGluZXMoW2dldG1zZyhmKV0pWzBd
CisgICAgICAgIG1zZyA9IGdldG1zZyhmKQorICAgICAgICBhc3NlcnQgbXNnIGlzIG5vdCBOb25l
CisgICAgICAgIGxpbmVzID0gdXRpbC5fZm9ybWF0X2xpbmVzKFttc2ddKQorICAgICAgICBpZiBy
ZXF1ZXN0LmNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+IDA6CisgICAgICAgICAgICBhc3Nl
cnQgbGluZXMgPT0gWyJhc3NlcnQgMCA9PSAxXG4gICswXG4gIC0xIl0KKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGFzc2VydCBsaW5lcyA9PSBbImFzc2VydCAwID09IDFcbiArICB3aGVyZSAx
ID0gXFxueyBcXG5+IFxcbn0uYSJdCisKKyAgICBkZWYgdGVzdF9jdXN0b21fcmVwcl9ub25fYXNj
aWkoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGYoKSAtPiBOb25lOgorICAgICAgICAgICAg
Y2xhc3MgQToKKyAgICAgICAgICAgICAgICBuYW1lID0gIsOkIgorCisgICAgICAgICAgICAgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1l
LmVuY29kZSgiVVRGLTgiKSAgIyBvbmx5IGxlZ2FsIGluIHB5dGhvbjIKIAorICAgICAgICAgICAg
YSA9IEEoKQorICAgICAgICAgICAgYXNzZXJ0IG5vdCBhLm5hbWUKIAotY2xhc3MgVGVzdFJld3Jp
dGVPbkltcG9ydChvYmplY3QpOgorICAgICAgICBtc2cgPSBnZXRtc2coZikKKyAgICAgICAgYXNz
ZXJ0IG1zZyBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgIlVuaWNvZGVEZWNvZGVFcnJvciIg
bm90IGluIG1zZworICAgICAgICBhc3NlcnQgIlVuaWNvZGVFbmNvZGVFcnJvciIgbm90IGluIG1z
ZwogCisKK2NsYXNzIFRlc3RSZXdyaXRlT25JbXBvcnQ6CiAgICAgZGVmIHRlc3RfcHljYWNoZV9p
c19hX2ZpbGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oIl9f
cHljYWNoZV9fIikud3JpdGUoIkhlbGxvIikKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApA
QCAtNjYxLDE5ICs3NjcsMTUgQEAgY2xhc3MgVGVzdFJld3JpdGVPbkltcG9ydChvYmplY3QpOgog
ICAgICAgICAgICAgaW1wb3J0IHRlc3RfZ3VtLnRlc3RfbGl6YXJkIiIiCiAgICAgICAgICAgICAl
ICh6X2ZuLCkKICAgICAgICAgKQotICAgICAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3QoKS5y
ZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpLnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKIAogICAgIGRlZiB0ZXN0
X3JlYWRvbmx5KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBzdWIgPSB0ZXN0ZGlyLm1rZGlyKCJ0
ZXN0aW5nIikKICAgICAgICAgc3ViLmpvaW4oInRlc3RfcmVhZG9ubHkucHkiKS53cml0ZSgKLSAg
ICAgICAgICAgIHB5LmJ1aWx0aW4uX3RvdGV4dCgKLSAgICAgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgIGIiIiIKIGRlZiB0ZXN0X3Jld3JpdHRlbigpOgogICAgIGFzc2VydCAiQHB5X2J1aWx0
aW5zIiBpbiBnbG9iYWxzKCkKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgKS5lbmNvZGUo
Ci0gICAgICAgICAgICAgICAgInV0Zi04IgotICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICIi
IiwKICAgICAgICAgICAgICJ3YiIsCiAgICAgICAgICkKICAgICAgICAgb2xkX21vZGUgPSBzdWIu
c3RhdCgpLm1vZGUKQEAgLTY5Niw5ICs3OTgsNiBAQCBkZWYgdGVzdF9yZXdyaXR0ZW4oKToKICAg
ICAgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKS5yZXQgPT0gMAogCiAg
ICAgZGVmIHRlc3Rfb3JwaGFuZWRfcHljX2ZpbGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGlm
IHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCkgYW5kIGhhc2F0dHIoc3lzLCAicHlweV92ZXJzaW9u
X2luZm8iKToKLSAgICAgICAgICAgIHB5dGVzdC5za2lwKCJweXB5MiBkb2Vzbid0IHJ1biBvcnBo
YW5lZCBweWMgZmlsZXMiKQotCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IG9ycGhhbgpAQCAtNzI0LDYgKzgyMywyNCBAQCBk
ZWYgdGVzdF9yZXdyaXR0ZW4oKToKIAogICAgICAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3Qo
KS5yZXQgPT0gMAogCisgICAgZGVmIHRlc3RfY2FjaGVkX3B5Y19pbmNsdWRlc19weXRlc3RfdmVy
c2lvbihzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgICAgICIiIkF2b2lkIHN0YWxl
IGNhY2hlcyAoIzE2NzEpIiIiCisgICAgICAgIG1vbmtleXBhdGNoLmRlbGVudigiUFlUSE9ORE9O
VFdSSVRFQllURUNPREUiLCByYWlzaW5nPUZhbHNlKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICAgICB0ZXN0X2Zvbz0iIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zvbygp
OgorICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCisgICAgICAgICAgICAiIiIKKyAgICAgICAg
KQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKKyAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgICAgICBmb3VuZF9uYW1lcyA9IGdsb2IuZ2xv
YigKKyAgICAgICAgICAgICJfX3B5Y2FjaGVfXy8qLXB5dGVzdC17fS5weWMiLmZvcm1hdChweXRl
c3QuX192ZXJzaW9uX18pCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGZvdW5kX25hbWVzLCAi
cHljIHdpdGggZXhwZWN0ZWQgdGFnIG5vdCBmb3VuZCBpbiBuYW1lczoge30iLmZvcm1hdCgKKyAg
ICAgICAgICAgIGdsb2IuZ2xvYigiX19weWNhY2hlX18vKi5weWMiKQorICAgICAgICApCisKICAg
ICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCciX19weXB5X18iIGluIHN5cy5tb2R1bGVzJykKICAgICBk
ZWYgdGVzdF9weWNfdnNfcHlvKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKApAQCAtNzMzLDkgKzg1MCw3IEBAIGRlZiB0ZXN0X3Jld3JpdHRl
bigpOgogICAgICAgICAgICAgICAgICJoZWxsbyIKICAgICAgICAgICAgICAgICBhc3NlcnQgdGVz
dF9vcHRpbWl6ZWQuX19kb2NfXyBpcyBOb25lIiIiCiAgICAgICAgICkKLSAgICAgICAgcCA9IHB5
LnBhdGgubG9jYWwubWFrZV9udW1iZXJlZF9kaXIoCi0gICAgICAgICAgICBwcmVmaXg9InJ1bnB5
dGVzdC0iLCBrZWVwPU5vbmUsIHJvb3RkaXI9dGVzdGRpci50bXBkaXIKLSAgICAgICAgKQorICAg
ICAgICBwID0gbWFrZV9udW1iZXJlZF9kaXIocm9vdD1QYXRoKHRlc3RkaXIudG1wZGlyKSwgcHJl
Zml4PSJydW5weXRlc3QtIikKICAgICAgICAgdG1wID0gIi0tYmFzZXRlbXA9JXMiICUgcAogICAg
ICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEhPTk9QVElNSVpFIiwgIjIiKQogICAgICAgICBt
b25rZXlwYXRjaC5kZWxlbnYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIiwgcmFpc2luZz1GYWxz
ZSkKQEAgLTc2NCwyNiArODc5LDIyIEBAIGRlZiB0ZXN0X3Jld3JpdHRlbigpOgogICAgICAgICB0
ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0X25ld2xpbmVzLnB5Iikud3JpdGUoYiwgIndiIikKICAg
ICAgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0KCkucmV0ID09IDAKIAotICAgIEBweXRlc3Qu
bWFyay5za2lwaWYoCi0gICAgICAgIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCksCi0gICAgICAg
IHJlYXNvbj0icGFja2FnZXMgd2l0aG91dCBfX2luaXRfXy5weSBub3Qgc3VwcG9ydGVkIG9uIHB5
dGhvbiAyIiwKLSAgICApCiAgICAgZGVmIHRlc3RfcGFja2FnZV93aXRob3V0X19pbml0X19weShz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcGtnID0gdGVzdGRpci5ta2RpcigiYV9wYWNrYWdlX3dp
dGhvdXRfaW5pdF9weSIpCiAgICAgICAgIHBrZy5qb2luKCJtb2R1bGUucHkiKS5lbnN1cmUoKQog
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImltcG9ydCBhX3BhY2thZ2Vfd2l0aG91dF9pbml0
X3B5Lm1vZHVsZSIpCi0gICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLnJldCA9PSBF
WElUX05PVEVTVFNDT0xMRUNURUQKLQotICAgIGRlZiB0ZXN0X3Jld3JpdGVfd2FybmluZyhzZWxm
LCBweXRlc3Rjb25maWcsIG1vbmtleXBhdGNoKToKLSAgICAgICAgaG9vayA9IEFzc2VydGlvblJl
d3JpdGluZ0hvb2socHl0ZXN0Y29uZmlnKQotICAgICAgICB3YXJuaW5ncyA9IFtdCisgICAgICAg
IGFzc2VydCB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xM
RUNURUQKIAotICAgICAgICBkZWYgbXl3YXJuKGNvZGUsIG1zZyk6Ci0gICAgICAgICAgICB3YXJu
aW5ncy5hcHBlbmQoKGNvZGUsIG1zZykpCi0KLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0ciho
b29rLmNvbmZpZywgIndhcm4iLCBteXdhcm4pCi0gICAgICAgIGhvb2subWFya19yZXdyaXRlKCJf
cHl0ZXN0IikKLSAgICAgICAgYXNzZXJ0ICJfcHl0ZXN0IiBpbiB3YXJuaW5nc1swXVsxXQorICAg
IGRlZiB0ZXN0X3Jld3JpdGVfd2FybmluZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRp
ci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKKyAgICAgICAgICAgIHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSgiX3B5dGVzdCIp
CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgICMgbmVlZHMgdG8gYmUgYSBzdWJwcm9j
ZXNzIGJlY2F1c2UgcHl0ZXN0ZXIgZXhwbGljaXRseSBkaXNhYmxlcyB0aGlzIHdhcm5pbmcKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipNb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCo6IF9w
eXRlc3QiXSkKIAogICAgIGRlZiB0ZXN0X3Jld3JpdGVfbW9kdWxlX2ltcG9ydGVkX2Zyb21fY29u
ZnRlc3Qoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KApAQCAt
ODAwLDE3ICs5MTEsMTkgQEAgZGVmIHRlc3RfcmV3cml0dGVuKCk6CiAgICAgICAgIGFzc2VydCB0
ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkucmV0ID09IDAKIAogICAgIGRlZiB0ZXN0X3Jl
bWVtYmVyX3Jld3JpdHRlbl9tb2R1bGVzKHNlbGYsIHB5dGVzdGNvbmZpZywgdGVzdGRpciwgbW9u
a2V5cGF0Y2gpOgotICAgICAgICAiIiIKLSAgICAgICAgQXNzZXJ0aW9uUmV3cml0ZUhvb2sgc2hv
dWxkIHJlbWVtYmVyIHJld3JpdHRlbiBtb2R1bGVzIHNvIGl0Ci0gICAgICAgIGRvZXNuJ3QgZ2l2
ZSBmYWxzZSBwb3NpdGl2ZXMgKCMyMDA1KS4KLSAgICAgICAgIiIiCisgICAgICAgICIiImBBc3Nl
cnRpb25SZXdyaXRlSG9va2Agc2hvdWxkIHJlbWVtYmVyIHJld3JpdHRlbiBtb2R1bGVzIHNvIGl0
CisgICAgICAgIGRvZXNuJ3QgZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMgKCMyMDA1KS4iIiIKICAgICAg
ICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5kKHRlc3RkaXIudG1wZGlyKQogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUodGVzdF9yZW1lbWJlcl9yZXdyaXR0ZW5fbW9kdWxlcz0iIikKICAg
ICAgICAgd2FybmluZ3MgPSBbXQogICAgICAgICBob29rID0gQXNzZXJ0aW9uUmV3cml0aW5nSG9v
ayhweXRlc3Rjb25maWcpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoaG9vay5jb25maWcs
ICJ3YXJuIiwgbGFtYmRhIGNvZGUsIG1zZzogd2FybmluZ3MuYXBwZW5kKG1zZykpCi0gICAgICAg
IGhvb2suZmluZF9tb2R1bGUoInRlc3RfcmVtZW1iZXJfcmV3cml0dGVuX21vZHVsZXMiKQotICAg
ICAgICBob29rLmxvYWRfbW9kdWxlKCJ0ZXN0X3JlbWVtYmVyX3Jld3JpdHRlbl9tb2R1bGVzIikK
KyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIGhvb2ssICJfd2Fybl9h
bHJlYWR5X2ltcG9ydGVkIiwgbGFtYmRhIGNvZGUsIG1zZzogd2FybmluZ3MuYXBwZW5kKG1zZykK
KyAgICAgICAgKQorICAgICAgICBzcGVjID0gaG9vay5maW5kX3NwZWMoInRlc3RfcmVtZW1iZXJf
cmV3cml0dGVuX21vZHVsZXMiKQorICAgICAgICBhc3NlcnQgc3BlYyBpcyBub3QgTm9uZQorICAg
ICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAg
ICAgIGhvb2suZXhlY19tb2R1bGUobW9kdWxlKQogICAgICAgICBob29rLm1hcmtfcmV3cml0ZSgi
dGVzdF9yZW1lbWJlcl9yZXdyaXR0ZW5fbW9kdWxlcyIpCiAgICAgICAgIGhvb2subWFya19yZXdy
aXRlKCJ0ZXN0X3JlbWVtYmVyX3Jld3JpdHRlbl9tb2R1bGVzIikKICAgICAgICAgYXNzZXJ0IHdh
cm5pbmdzID09IFtdCkBAIC04MjgsNyArOTQxLDcgQEAgZGVmIHRlc3RfcmV3cml0dGVuKCk6CiAg
ICAgICAgIHRlc3RkaXIuY2hkaXIoKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dF9zdWJwcm9jZXNzKCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKj0g
MSBwYXNzZWQgaW4gKj0qIl0pCi0gICAgICAgIGFzc2VydCAicHl0ZXN0LXdhcm5pbmcgc3VtbWFy
eSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19m
bm1hdGNoX2xpbmUoIipweXRlc3Qtd2FybmluZyBzdW1tYXJ5KiIpCiAKICAgICBkZWYgdGVzdF9y
ZXdyaXRlX3dhcm5pbmdfdXNpbmdfcHl0ZXN0X3BsdWdpbnNfZW52X3ZhcihzZWxmLCB0ZXN0ZGly
LCBtb25rZXlwYXRjaCk6CiAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX1BMVUdJ
TlMiLCAicGx1Z2luIikKQEAgLTg0NiwxMDAgKzk1OSwxMCBAQCBkZWYgdGVzdF9yZXdyaXR0ZW4o
KToKICAgICAgICAgdGVzdGRpci5jaGRpcigpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqPSAxIHBhc3NlZCBpbiAqPSoiXSkKLSAgICAgICAgYXNzZXJ0ICJweXRlc3Qtd2FybmluZyBz
dW1tYXJ5IiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQotCi0gICAgQHB5dGVzdC5tYXJrLnNr
aXBpZihzeXMudmVyc2lvbl9pbmZvWzBdID4gMiwgcmVhc29uPSJweXRob24gMiBvbmx5IikKLSAg
ICBkZWYgdGVzdF9yZXdyaXRlX2Z1dHVyZV9pbXBvcnRzKHNlbGYsIHRlc3RkaXIpOgotICAgICAg
ICAiIiJUZXN0IHRoYXQgcmV3cml0dGVuIG1vZHVsZXMgZG9uJ3QgaW5oZXJpdCB0aGUgX19mdXR1
cmVfXyBmbGFncwotICAgICAgICBmcm9tIHRoZSBhc3NlcnRyZXdyaXRlIG1vZHVsZS4KLQotICAg
ICAgICBhc3NlcnRpb24ucmV3cml0ZSBpbXBvcnRzIF9fZnV0dXJlX18uZGl2aXNpb24gKGFuZCBv
dGhlcnMpLCBzbwotICAgICAgICBlbnN1cmUgcmV3cml0dGVuIG1vZHVsZXMgZG9uJ3QgaW5oZXJp
dCB0aG9zZSBmbGFncy4KLQotICAgICAgICBUaGUgdGVzdCBiZWxvdyB3aWxsIGZhaWwgaWYgX19m
dXR1cmVfXy5kaXZpc2lvbiBpcyBlbmFibGVkCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0KCk6Ci0g
ICAgICAgICAgICAgICAgeCA9IDEgLyAyCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHR5cGUoeCkg
aXMgaW50Ci0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAotCi0KLWNsYXNzIFRl
c3RBc3NlcnRpb25SZXdyaXRlSG9va0RldGFpbHMob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X2xv
YWRlcl9pc19wYWNrYWdlX2ZhbHNlX2Zvcl9tb2R1bGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHRlc3RfZnVuPSIiIgotICAgICAgICAg
ICAgZGVmIHRlc3RfbG9hZGVyKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBfX2xvYWRl
cl9fLmlzX3BhY2thZ2UoX19uYW1lX18pCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgKQotICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQqIl0pCi0KLSAgICBkZWYgdGVzdF9sb2FkZXJfaXNf
cGFja2FnZV90cnVlX2Zvcl9wYWNrYWdlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCi0gICAgICAgICAgICB0ZXN0X2Z1bj0iIiIKLSAgICAgICAgICAgIGRlZiB0
ZXN0X2xvYWRlcigpOgotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgX19sb2FkZXJfXy5pc19w
YWNrYWdlKF9fbmFtZV9fKQotCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW4oKToKLSAgICAgICAg
ICAgICAgICBhc3NlcnQgX19sb2FkZXJfXy5pc19wYWNrYWdlKCdmdW4nKQotCi0gICAgICAgICAg
ICBkZWYgdGVzdF9taXNzaW5nKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBfX2xvYWRl
cl9fLmlzX3BhY2thZ2UoJ3B5dGVzdF9ub3RfdGhlcmUnKQotICAgICAgICAgICAgIiIiCi0gICAg
ICAgICkKLSAgICAgICAgdGVzdGRpci5ta3B5ZGlyKCJmdW4iKQotICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IiogMyBwYXNzZWQqIl0pCi0KLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9p
bmZvWzBdID49IDMiKQotICAgIEBweXRlc3QubWFyay54ZmFpbCgiaGFzYXR0cihzeXMsICdweXB5
X3RyYW5zbGF0aW9uX2luZm8nKSIpCi0gICAgZGVmIHRlc3RfYXNzdW1lX2FzY2lpKHNlbGYsIHRl
c3RkaXIpOgotICAgICAgICBjb250ZW50ID0gInUnXHhlMlx4OTlceGE1XHgwMVx4ZmUnIgotICAg
ICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0X2VuY29kaW5nLnB5Iikud3JpdGUoY29udGVu
dCwgIndiIikKLSAgICAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBhc3Nl
cnQgcmVzLnJldCAhPSAwCi0gICAgICAgIGFzc2VydCAiU3ludGF4RXJyb3I6IE5vbi1BU0NJSSBj
aGFyYWN0ZXIiIGluIHJlcy5zdGRvdXQuc3RyKCkKLQotICAgIEBweXRlc3QubWFyay5za2lwaWYo
InN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMyIpCi0gICAgZGVmIHRlc3RfZGV0ZWN0X2NvZGluZ19j
b29raWUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAg
ICAgICAgIHRlc3RfY29va2llPSIiIgotICAgICAgICAgICAgIyAtKi0gY29kaW5nOiB1dGYtOCAt
Ki0KLSAgICAgICAgICAgIHUiU3RceGMzXHhhNGQiCi0gICAgICAgICAgICBkZWYgdGVzdF9yZXdy
aXR0ZW4oKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgIkBweV9idWlsdGlucyIgaW4gZ2xvYmFs
cygpIiIiCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0KCkucmV0
ID09IDAKLQotICAgIEBweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bMF0gPj0g
MyIpCi0gICAgZGVmIHRlc3RfZGV0ZWN0X2NvZGluZ19jb29raWVfc2Vjb25kX2xpbmUoc2VsZiwg
dGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHRlc3Rf
Y29va2llPSIiIgotICAgICAgICAgICAgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSAgICAgICAg
ICAgIHUiU3RceGMzXHhhNGQiCi0gICAgICAgICAgICBkZWYgdGVzdF9yZXdyaXR0ZW4oKToKLSAg
ICAgICAgICAgICAgICBhc3NlcnQgIkBweV9idWlsdGlucyIgaW4gZ2xvYmFscygpIiIiCi0gICAg
ICAgICkKLSAgICAgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0KCkucmV0ID09IDAKKyAgICAg
ICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipweXRlc3Qtd2FybmluZyBzdW1tYXJ5
KiIpCiAKLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdID49IDMi
KQotICAgIGRlZiB0ZXN0X2RldGVjdF9jb2RpbmdfY29va2llX2NybGYoc2VsZiwgdGVzdGRpcik6
Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHRlc3RfY29va2llPSIi
IgotICAgICAgICAgICAgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSAgICAgICAgICAgIHUiU3Rc
eGMzXHhhNGQiCi0gICAgICAgICAgICBkZWYgdGVzdF9yZXdyaXR0ZW4oKToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgIkBweV9idWlsdGlucyIgaW4gZ2xvYmFscygpIiIiCi0gICAgICAgICkKLSAg
ICAgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0KCkucmV0ID09IDAKIAorY2xhc3MgVGVzdEFz
c2VydGlvblJld3JpdGVIb29rRGV0YWlsczoKICAgICBkZWYgdGVzdF9zeXNfbWV0YV9wYXRoX211
bmdlZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAg
ICAgICAgIiIiCkBAIC05NDgsMjcgKzk3MSwzOCBAQCBjbGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0
ZUhvb2tEZXRhaWxzKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgYXNzZXJ0IHRlc3RkaXIu
cnVucHl0ZXN0KCkucmV0ID09IDAKIAotICAgIGRlZiB0ZXN0X3dyaXRlX3B5YyhzZWxmLCB0ZXN0
ZGlyLCB0bXBkaXIsIG1vbmtleXBhdGNoKToKKyAgICBkZWYgdGVzdF93cml0ZV9weWMoc2VsZiwg
dGVzdGRpcjogVGVzdGRpciwgdG1wZGlyLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICAgICAg
ZnJvbSBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlIGltcG9ydCBfd3JpdGVfcHljCiAgICAgICAg
IGZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IEFzc2VydGlvblN0YXRlCi0gICAgICAgIGlt
cG9ydCBhdG9taWN3cml0ZXMKLSAgICAgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0
bWFuYWdlcgogCi0gICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoW10pCisgICAg
ICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQogICAgICAgICBzdGF0ZSA9IEFzc2Vy
dGlvblN0YXRlKGNvbmZpZywgInJld3JpdGUiKQotICAgICAgICBzb3VyY2VfcGF0aCA9IHRtcGRp
ci5lbnN1cmUoInNvdXJjZS5weSIpCisgICAgICAgIHNvdXJjZV9wYXRoID0gc3RyKHRtcGRpci5l
bnN1cmUoInNvdXJjZS5weSIpKQogICAgICAgICBweWNwYXRoID0gdG1wZGlyLmpvaW4oInB5YyIp
LnN0cnBhdGgKLSAgICAgICAgYXNzZXJ0IF93cml0ZV9weWMoc3RhdGUsIFsxXSwgc291cmNlX3Bh
dGguc3RhdCgpLCBweWNwYXRoKQorICAgICAgICBjbyA9IGNvbXBpbGUoIjEiLCAiZi5weSIsICJz
aW5nbGUiKQorICAgICAgICBhc3NlcnQgX3dyaXRlX3B5YyhzdGF0ZSwgY28sIG9zLnN0YXQoc291
cmNlX3BhdGgpLCBweWNwYXRoKQorCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
OgorICAgICAgICAgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorCisg
ICAgICAgICAgICBAY29udGV4dG1hbmFnZXIKKyAgICAgICAgICAgIGRlZiBhdG9taWNfd3JpdGVf
ZmFpbGVkKGZuLCBtb2RlPSJyIiwgb3ZlcndyaXRlPUZhbHNlKToKKyAgICAgICAgICAgICAgICBl
ID0gT1NFcnJvcigpCisgICAgICAgICAgICAgICAgZS5lcnJubyA9IDEwCisgICAgICAgICAgICAg
ICAgcmFpc2UgZQorICAgICAgICAgICAgICAgIHlpZWxkICAjIHR5cGU6aWdub3JlW3VucmVhY2hh
YmxlXQorCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgICAg
IF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUsICJhdG9taWNfd3JpdGUiLCBhdG9taWNfd3JpdGVf
ZmFpbGVkCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisKKyAgICAgICAgICAgIGRlZiBy
YWlzZV9vc2Vycm9yKCphcmdzKToKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKIAot
ICAgICAgICBAY29udGV4dG1hbmFnZXIKLSAgICAgICAgZGVmIGF0b21pY193cml0ZV9mYWlsZWQo
Zm4sIG1vZGU9InIiLCBvdmVyd3JpdGU9RmFsc2UpOgotICAgICAgICAgICAgZSA9IElPRXJyb3Io
KQotICAgICAgICAgICAgZS5lcnJubyA9IDEwCi0gICAgICAgICAgICByYWlzZSBlCi0gICAgICAg
ICAgICB5aWVsZCAgIyBub3FhCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJvcy5y
ZW5hbWUiLCByYWlzZV9vc2Vycm9yKQogCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoYXRv
bWljd3JpdGVzLCAiYXRvbWljX3dyaXRlIiwgYXRvbWljX3dyaXRlX2ZhaWxlZCkKLSAgICAgICAg
YXNzZXJ0IG5vdCBfd3JpdGVfcHljKHN0YXRlLCBbMV0sIHNvdXJjZV9wYXRoLnN0YXQoKSwgcHlj
cGF0aCkKKyAgICAgICAgYXNzZXJ0IG5vdCBfd3JpdGVfcHljKHN0YXRlLCBjbywgb3Muc3RhdChz
b3VyY2VfcGF0aCksIHB5Y3BhdGgpCiAKICAgICBkZWYgdGVzdF9yZXNvdXJjZXNfcHJvdmlkZXJf
Zm9yX2xvYWRlcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIiCkBAIC0xMDAwLDcgKzEwMzQs
NyBAQCBjbGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0ZUhvb2tEZXRhaWxzKG9iamVjdCk6CiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQogICAgICAgICByZXN1
bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0xKQogCi0gICAgZGVmIHRlc3RfcmVhZF9weWMoc2Vs
ZiwgdG1wZGlyKToKKyAgICBkZWYgdGVzdF9yZWFkX3B5YyhzZWxmLCB0bXBfcGF0aDogUGF0aCkg
LT4gTm9uZToKICAgICAgICAgIiIiCiAgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBgX3JlYWRfcHlj
YCBjYW4gcHJvcGVybHkgZGVhbCB3aXRoIGNvcnJ1cHRlZCBweWMgZmlsZXMuCiAgICAgICAgIElu
IHRob3NlIGNpcmN1bXN0YW5jZXMgaXQgc2hvdWxkIGp1c3QgZ2l2ZSB1cCBpbnN0ZWFkIG9mIGdl
bmVyYXRpbmcKQEAgLTEwMDksNjUgKzEwNDMsNjggQEAgY2xhc3MgVGVzdEFzc2VydGlvblJld3Jp
dGVIb29rRGV0YWlscyhvYmplY3QpOgogICAgICAgICBpbXBvcnQgcHlfY29tcGlsZQogICAgICAg
ICBmcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IF9yZWFkX3B5YwogCi0gICAg
ICAgIHNvdXJjZSA9IHRtcGRpci5qb2luKCJzb3VyY2UucHkiKQotICAgICAgICBweWMgPSBzb3Vy
Y2UgKyAiYyIKKyAgICAgICAgc291cmNlID0gdG1wX3BhdGggLyAic291cmNlLnB5IgorICAgICAg
ICBweWMgPSBQYXRoKHN0cihzb3VyY2UpICsgImMiKQogCi0gICAgICAgIHNvdXJjZS53cml0ZSgi
ZGVmIHRlc3QoKTogcGFzcyIpCisgICAgICAgIHNvdXJjZS53cml0ZV90ZXh0KCJkZWYgdGVzdCgp
OiBwYXNzIikKICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHN0cihzb3VyY2UpLCBzdHIocHlj
KSkKIAotICAgICAgICBjb250ZW50cyA9IHB5Yy5yZWFkKG1vZGU9InJiIikKKyAgICAgICAgY29u
dGVudHMgPSBweWMucmVhZF9ieXRlcygpCiAgICAgICAgIHN0cmlwX2J5dGVzID0gMjAgICMgaGVh
ZGVyIGlzIGFyb3VuZCA4IGJ5dGVzLCBzdHJpcCBhIGxpdHRsZSBtb3JlCiAgICAgICAgIGFzc2Vy
dCBsZW4oY29udGVudHMpID4gc3RyaXBfYnl0ZXMKLSAgICAgICAgcHljLndyaXRlKGNvbnRlbnRz
WzpzdHJpcF9ieXRlc10sIG1vZGU9IndiIikKKyAgICAgICAgcHljLndyaXRlX2J5dGVzKGNvbnRl
bnRzWzpzdHJpcF9ieXRlc10pCiAKLSAgICAgICAgYXNzZXJ0IF9yZWFkX3B5Yyhzb3VyY2UsIHN0
cihweWMpKSBpcyBOb25lICAjIG5vIGVycm9yCisgICAgICAgIGFzc2VydCBfcmVhZF9weWMoc291
cmNlLCBweWMpIGlzIE5vbmUgICMgbm8gZXJyb3IKIAotICAgIGRlZiB0ZXN0X3JlbG9hZF9pc19z
YW1lKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAjIEEgZmlsZSB0aGF0IHdpbGwgYmUgcGlja2Vk
IHVwIGR1cmluZyBjb2xsZWN0aW5nLgotICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJmaWxl
LnB5IikuZW5zdXJlKCkKLSAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigicHl0ZXN0LmluaSIp
LndyaXRlKAotICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAotICAgICAgICAgICAgICAgICIi
IgorICAgIGRlZiB0ZXN0X3JlbG9hZF9pc19zYW1lX2FuZF9yZWxvYWRzKHNlbGYsIHRlc3RkaXI6
IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIlJlbG9hZGluZyBhIChjb2xsZWN0ZWQpIG1v
ZHVsZSBhZnRlciBjaGFuZ2UgcGlja3MgdXAgdGhlIGNoYW5nZS4iIiIKKyAgICAgICAgdGVzdGRp
ci5tYWtlaW5pKAorICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBbcHl0ZXN0XQogICAgICAg
ICAgICAgcHl0aG9uX2ZpbGVzID0gKi5weQotICAgICAgICAiIiIKLSAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICIiIgogICAgICAgICApCi0KICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgZmlsZT0iIiIKKyAgICAgICAgICAgIGRlZiByZWxvYWRlZCgpOgorICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICAgICBkZWYgcmV3cml0ZV9zZWxmKCk6
CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAndycpIGFzIHNlbGY6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoJ2RlZiByZWxvYWRlZCgpOiByZXR1cm4gVHJ1ZScp
CisgICAgICAgICAgICAiIiIsCiAgICAgICAgICAgICB0ZXN0X2Z1bj0iIiIKICAgICAgICAgICAg
IGltcG9ydCBzeXMKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmcm9tIGltcCBp
bXBvcnQgcmVsb2FkCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHJlbG9hZAogCiAg
ICAgICAgICAgICBkZWYgdGVzdF9sb2FkZXIoKToKICAgICAgICAgICAgICAgICBpbXBvcnQgZmls
ZQorICAgICAgICAgICAgICAgIGFzc2VydCBub3QgZmlsZS5yZWxvYWRlZCgpCisgICAgICAgICAg
ICAgICAgZmlsZS5yZXdyaXRlX3NlbGYoKQogICAgICAgICAgICAgICAgIGFzc2VydCBzeXMubW9k
dWxlc1siZmlsZSJdIGlzIHJlbG9hZChmaWxlKQotICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IGZpbGUucmVsb2FkZWQoKQorICAgICAgICAgICAgIiIiLAogICAgICAgICAp
Ci0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCisgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKiAxIHBhc3NlZCoiXSkKIAogICAgIGRlZiB0ZXN0X2dldF9kYXRhX3N1cHBvcnQoc2Vs
ZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIkltcGxlbWVudCBvcHRpb25hbCBQRVAzMDIgYXBpICgj
ODA4KS4KLSAgICAgICAgIiIiCisgICAgICAgICIiIkltcGxlbWVudCBvcHRpb25hbCBQRVAzMDIg
YXBpICgjODA4KS4iIiIKICAgICAgICAgcGF0aCA9IHRlc3RkaXIubWtweWRpcigiZm9vIikKICAg
ICAgICAgcGF0aC5qb2luKCJ0ZXN0X2Zvby5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVz
dC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAg
ICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGNsYXNzIFRlc3Qob2JqZWN0KToKKyAgICAgICAg
ICAgICAgICAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAg
aW1wb3J0IHBrZ3V0aWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBwa2d1dGlsLmdl
dF9kYXRhKCdmb28udGVzdF9mb28nLCAnZGF0YS50eHQnKQorICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGRhdGEgPT0gYidIZXknCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBjbGFzcyBUZXN0KG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfZm9vKHNlbGYp
OgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgcGtndXRpbAotICAgICAgICAgICAgICAgICAg
ICBkYXRhID0gcGtndXRpbC5nZXRfZGF0YSgnZm9vLnRlc3RfZm9vJywgJ2RhdGEudHh0JykKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IGRhdGEgPT0gYidIZXknCi0gICAgICAgICIiIgogICAg
ICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHBhdGguam9pbigiZGF0YS50eHQiKS53cml0
ZSgiSGV5IikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIioxIHBhc3NlZCoiKQorICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKIAogZGVmIHRlc3RfaXNzdWU3
MzEodGVzdGRpcik6CkBAIC0xMDg2LDExICsxMTIzLDEwIEBAIGRlZiB0ZXN0X2lzc3VlNzMxKHRl
c3RkaXIpOgogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
Ci0gICAgYXNzZXJ0ICJ1bmJhbGFuY2VkIGJyYWNlcyIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3Ry
KCkKLQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqdW5iYWxhbmNlZCBicmFj
ZXMqIikKIAotY2xhc3MgVGVzdElzc3VlOTI1KG9iamVjdCk6CiAKK2NsYXNzIFRlc3RJc3N1ZTky
NToKICAgICBkZWYgdGVzdF9zaW1wbGVfY2FzZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0xMDk5LDcgKzExMzUsNyBAQCBj
bGFzcyBUZXN0SXNzdWU5MjUob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoIipFKmFzc2VydCAoRmFsc2UgPT0gRmFsc2UpID09IEZhbHNlIikKKyAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkUqYXNzZXJ0IChGYWxzZSA9PSBGYWxz
ZSkgPT0gRmFsc2UiXSkKIAogICAgIGRlZiB0ZXN0X2xvbmdfY2FzZShzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMTEwOSw3ICsxMTQ1LDcgQEAgY2xhc3Mg
VGVzdElzc3VlOTI1KG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKCIqRSphc3NlcnQgKEZhbHNlID09IFRydWUpID09IFRydWUiKQorICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqRSphc3NlcnQgKEZhbHNlID09IFRydWUpID09IFRy
dWUiXSkKIAogICAgIGRlZiB0ZXN0X21hbnlfYnJhY2tldHMoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTExMTksMjYgKzExNTUsNDg1IEBAIGNsYXNzIFRl
c3RJc3N1ZTkyNShvYmplY3QpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoIipFKmFzc2VydCBUcnVlID09ICgoRmFsc2UgPT0gVHJ1ZSkgPT0gVHJ1ZSkiKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqRSphc3NlcnQgVHJ1ZSA9PSAo
KEZhbHNlID09IFRydWUpID09IFRydWUpIl0pCiAKIAotY2xhc3MgVGVzdElzc3VlMjEyMSgpOgor
Y2xhc3MgVGVzdElzc3VlMjEyMToKKyAgICBkZWYgdGVzdF9yZXdyaXRlX3B5dGhvbl9maWxlc19j
b250YWluX3N1YmRpcnMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJ0ZXN0cy9maWxlLnB5IjogIiIi
CisgICAgICAgICAgICAgICAgZGVmIHRlc3Rfc2ltcGxlX2ZhaWx1cmUoKToKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0IDEgKyAxID09IDMKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIHB5dGhvbl9maWxl
cyA9IHRlc3RzLyoqLnB5CisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIipFKmFzc2VydCAoMSArIDEpID09IDMiXSkKKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlm
KAorICAgIHN5cy5tYXhzaXplIDw9ICgyICoqIDMxIC0gMSksIHJlYXNvbj0iQ2F1c2VzIE92ZXJm
bG93RXJyb3Igb24gMzJiaXQgc3lzdGVtcyIKKykKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
b2Zmc2V0IiwgWy0xLCArMV0pCitkZWYgdGVzdF9zb3VyY2VfbXRpbWVfbG9uZ19sb25nKHRlc3Rk
aXIsIG9mZnNldCk6CisgICAgIiIiU3VwcG9ydCBtb2RpZmljYXRpb24gZGF0ZXMgYWZ0ZXIgMjAz
OCBpbiByZXdyaXR0ZW4gZmlsZXMgKCM0OTAzKS4KKworICAgIHB5dGVzdCB3b3VsZCBjcmFzaCB3
aXRoOgorCisgICAgICAgICAgICBmcC53cml0ZShzdHJ1Y3QucGFjaygiPGxsIiwgbXRpbWUsIHNp
emUpKQorICAgICAgICBFICAgc3RydWN0LmVycm9yOiBhcmd1bWVudCBvdXQgb2YgcmFuZ2UKKyAg
ICAiIiIKKyAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAg
ZGVmIHRlc3QoKTogcGFzcworICAgICIiIgorICAgICkKKyAgICAjIHVzZSB1bnNpZ25lZCBsb25n
IHRpbWVzdGFtcCB3aGljaCBvdmVyZmxvd3Mgc2lnbmVkIGxvbmcsCisgICAgIyB3aGljaCB3YXMg
dGhlIGNhdXNlIG9mIHRoZSBidWcKKyAgICAjICsxIG9mZnNldCBhbHNvIHRlc3RzIG1hc2tpbmcg
b2YgMHhGRkZGRkZGRgorICAgIHRpbWVzdGFtcCA9IDIgKiogMzIgKyBvZmZzZXQKKyAgICBvcy51
dGltZShzdHIocCksICh0aW1lc3RhbXAsIHRpbWVzdGFtcCkpCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitkZWYgdGVzdF9y
ZXdyaXRlX2luZmluaXRlX3JlY3Vyc2lvbih0ZXN0ZGlyLCBweXRlc3Rjb25maWcsIG1vbmtleXBh
dGNoKSAtPiBOb25lOgorICAgICIiIkZpeCBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiB3cml0aW5n
IHB5YyBmaWxlczogaWYgYW4gaW1wb3J0IGhhcHBlbnMgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gd3Jp
dGluZyB0aGUgcHljCisgICAgZmlsZSwgdGhpcyB3b3VsZCBjYXVzZSBhbm90aGVyIGNhbGwgdG8g
dGhlIGhvb2ssIHdoaWNoIHdvdWxkIHRyaWdnZXIgYW5vdGhlciBweWMgd3JpdGluZywgd2hpY2gg
Y291bGQKKyAgICB0cmlnZ2VyIGFub3RoZXIgaW1wb3J0LCBhbmQgc28gb24uICgjMzUwNikiIiIK
KyAgICBmcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGltcG9ydCByZXdyaXRlIGFzIHJld3JpdGVtb2QK
KworICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKHRl
c3RfZm9vPSJkZWYgdGVzdF9mb28oKTogcGFzcyIpCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKHRl
c3RfYmFyPSJkZWYgdGVzdF9iYXIoKTogcGFzcyIpCisKKyAgICBvcmlnaW5hbF93cml0ZV9weWMg
PSByZXdyaXRlbW9kLl93cml0ZV9weWMKKworICAgIHdyaXRlX3B5Y19jYWxsZWQgPSBbXQorCisg
ICAgZGVmIHNweV93cml0ZV9weWMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBtYWtlIGEg
bm90ZSB0aGF0IHdlIGhhdmUgY2FsbGVkIF93cml0ZV9weWMKKyAgICAgICAgd3JpdGVfcHljX2Nh
bGxlZC5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgIyB0cnkgdG8gaW1wb3J0IGEgbW9kdWxlIGF0IHRo
aXMgcG9pbnQ6IHdlIHNob3VsZCBub3QgdHJ5IHRvIHJld3JpdGUgdGhpcyBtb2R1bGUKKyAgICAg
ICAgYXNzZXJ0IGhvb2suZmluZF9zcGVjKCJ0ZXN0X2JhciIpIGlzIE5vbmUKKyAgICAgICAgcmV0
dXJuIG9yaWdpbmFsX3dyaXRlX3B5YygqYXJncywgKiprd2FyZ3MpCiAKLSAgICBkZWYgdGVzdF9z
aW1wbGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oInRlc3Rz
L2ZpbGUucHkiKS5lbnN1cmUoKS53cml0ZSgKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHJld3Jp
dGVtb2QsICJfd3JpdGVfcHljIiwgc3B5X3dyaXRlX3B5YykKKyAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKHN5cywgImRvbnRfd3JpdGVfYnl0ZWNvZGUiLCBGYWxzZSkKKworICAgIGhvb2sgPSBBc3Nl
cnRpb25SZXdyaXRpbmdIb29rKHB5dGVzdGNvbmZpZykKKyAgICBzcGVjID0gaG9vay5maW5kX3Nw
ZWMoInRlc3RfZm9vIikKKyAgICBhc3NlcnQgc3BlYyBpcyBub3QgTm9uZQorICAgIG1vZHVsZSA9
IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICBob29rLmV4ZWNfbW9k
dWxlKG1vZHVsZSkKKyAgICBhc3NlcnQgbGVuKHdyaXRlX3B5Y19jYWxsZWQpID09IDEKKworCitj
bGFzcyBUZXN0RWFybHlSZXdyaXRlQmFpbG91dDoKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBk
ZWYgaG9vayhzZWxmLCBweXRlc3Rjb25maWcsIG1vbmtleXBhdGNoLCB0ZXN0ZGlyKSAtPiBBc3Nl
cnRpb25SZXdyaXRpbmdIb29rOgorICAgICAgICAiIiJSZXR1cm5zIGEgcGF0Y2hlZCBBc3NlcnRp
b25SZXdyaXRpbmdIb29rIGluc3RhbmNlIHNvIHdlIGNhbiBjb25maWd1cmUgaXRzIGluaXRpYWwg
cGF0aHMgYW5kIHRyYWNrCisgICAgICAgIGlmIFBhdGhGaW5kZXIuZmluZF9zcGVjIGhhcyBiZWVu
IGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5
CisKKyAgICAgICAgc2VsZi5maW5kX3NwZWNfY2FsbHMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0K
KyAgICAgICAgc2VsZi5pbml0aWFsX3BhdGhzID0gc2V0KCkgICMgdHlwZTogU2V0W3B5LnBhdGgu
bG9jYWxdCisKKyAgICAgICAgY2xhc3MgU3R1YlNlc3Npb246CisgICAgICAgICAgICBfaW5pdGlh
bHBhdGhzID0gc2VsZi5pbml0aWFsX3BhdGhzCisKKyAgICAgICAgICAgIGRlZiBpc2luaXRwYXRo
KHNlbGYsIHApOgorICAgICAgICAgICAgICAgIHJldHVybiBwIGluIHNlbGYuX2luaXRpYWxwYXRo
cworCisgICAgICAgIGRlZiBzcHlfZmluZF9zcGVjKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAg
c2VsZi5maW5kX3NwZWNfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByZXR1cm4gaW1w
b3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYyhuYW1lLCBwYXRoKQorCisgICAg
ICAgIGhvb2sgPSBBc3NlcnRpb25SZXdyaXRpbmdIb29rKHB5dGVzdGNvbmZpZykKKyAgICAgICAg
IyB1c2UgZGVmYXVsdCBwYXR0ZXJucywgb3RoZXJ3aXNlIHdlIGluaGVyaXQgcHl0ZXN0J3MgdGVz
dGluZyBjb25maWcKKyAgICAgICAgaG9vay5mbnBhdHNbOl0gPSBbInRlc3RfKi5weSIsICIqX3Rl
c3QucHkiXQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGhvb2ssICJfZmluZF9zcGVjIiwg
c3B5X2ZpbmRfc3BlYykKKyAgICAgICAgaG9vay5zZXRfc2Vzc2lvbihTdHViU2Vzc2lvbigpKSAg
IyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgp
CisgICAgICAgIHJldHVybiBob29rCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmLCB0ZXN0ZGly
LCBob29rOiBBc3NlcnRpb25SZXdyaXRpbmdIb29rKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgRW5zdXJlIHdlIGF2b2lkIGNhbGxpbmcgUGF0aEZpbmRlci5maW5kX3NwZWMgd2hlbiB3
ZSBrbm93IGZvciBzdXJlIGEgY2VydGFpbgorICAgICAgICBtb2R1bGUgd2lsbCBub3QgYmUgcmV3
cml0dGVuIHRvIG9wdGltaXplIGFzc2VydGlvbiByZXdyaXRpbmcgKCMzOTE4KS4KKyAgICAgICAg
IiIiCisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCi1kZWYg
dGVzdF9zaW1wbGVfZmFpbHVyZSgpOgotICAgIGFzc2VydCAxICsgMSA9PSAzCi0iIiIKKyAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAg
ICAgICAgZGVmIGZpeCgpOiByZXR1cm4gMQorICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAg
ICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJweXRlc3QuaW5pIikud3JpdGUoCi0gICAgICAgICAgICB0
ZXh0d3JhcC5kZWRlbnQoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBbcHl0ZXN0
XQotICAgICAgICAgICAgcHl0aG9uX2ZpbGVzID0gdGVzdHMvKioucHkKKyAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKHRlc3RfZm9vPSJkZWYgdGVzdF9mb28oKTogcGFzcyIpCisgICAgICAgIHRl
c3RkaXIubWFrZXB5ZmlsZShiYXI9ImRlZiBiYXIoKTogcGFzcyIpCisgICAgICAgIGZvb2Jhcl9w
YXRoID0gdGVzdGRpci5tYWtlcHlmaWxlKGZvb2Jhcj0iZGVmIGZvb2JhcigpOiBwYXNzIikKKyAg
ICAgICAgc2VsZi5pbml0aWFsX3BhdGhzLmFkZChmb29iYXJfcGF0aCkKKworICAgICAgICAjIGNv
bmZ0ZXN0IGZpbGVzIHNob3VsZCBhbHdheXMgYmUgcmV3cml0dGVuCisgICAgICAgIGFzc2VydCBo
b29rLmZpbmRfc3BlYygiY29uZnRlc3QiKSBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgc2Vs
Zi5maW5kX3NwZWNfY2FsbHMgPT0gWyJjb25mdGVzdCJdCisKKyAgICAgICAgIyBmaWxlcyBtYXRj
aGluZyAicHl0aG9uX2ZpbGVzIiBtYXNrIHNob3VsZCBhbHdheXMgYmUgcmV3cml0dGVuCisgICAg
ICAgIGFzc2VydCBob29rLmZpbmRfc3BlYygidGVzdF9mb28iKSBpcyBub3QgTm9uZQorICAgICAg
ICBhc3NlcnQgc2VsZi5maW5kX3NwZWNfY2FsbHMgPT0gWyJjb25mdGVzdCIsICJ0ZXN0X2ZvbyJd
CisKKyAgICAgICAgIyBmaWxlIGRvZXMgbm90IG1hdGNoICJweXRob25fZmlsZXMiOiBlYXJseSBi
YWlsb3V0CisgICAgICAgIGFzc2VydCBob29rLmZpbmRfc3BlYygiYmFyIikgaXMgTm9uZQorICAg
ICAgICBhc3NlcnQgc2VsZi5maW5kX3NwZWNfY2FsbHMgPT0gWyJjb25mdGVzdCIsICJ0ZXN0X2Zv
byJdCisKKyAgICAgICAgIyBmaWxlIGlzIGFuIGluaXRpYWwgcGF0aCAocGFzc2VkIG9uIHRoZSBj
b21tYW5kLWxpbmUpOiBzaG91bGQgYmUgcmV3cml0dGVuCisgICAgICAgIGFzc2VydCBob29rLmZp
bmRfc3BlYygiZm9vYmFyIikgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYuZmluZF9z
cGVjX2NhbGxzID09IFsiY29uZnRlc3QiLCAidGVzdF9mb28iLCAiZm9vYmFyIl0KKworICAgIGRl
ZiB0ZXN0X3BhdHRlcm5fY29udGFpbnNfc3ViZGlyZWN0b3JpZXMoCisgICAgICAgIHNlbGYsIHRl
c3RkaXIsIGhvb2s6IEFzc2VydGlvblJld3JpdGluZ0hvb2sKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgICIiIklmIG9uZSBvZiB0aGUgcHl0aG9uX2ZpbGVzIHBhdHRlcm5zIGNvbnRhaW4gc3ViZGly
ZWN0b3JpZXMgKCJ0ZXN0cy8qKi5weSIpIHdlIGNhbid0IGJhaWxvdXQgZWFybHkKKyAgICAgICAg
YmVjYXVzZSB3ZSBuZWVkIHRvIG1hdGNoIHdpdGggdGhlIGZ1bGwgcGF0aCwgd2hpY2ggY2FuIG9u
bHkgYmUgZm91bmQgYnkgY2FsbGluZyBQYXRoRmluZGVyLmZpbmRfc3BlYwogICAgICAgICAiIiIK
LSAgICAgICAgICAgICkKKyAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
ICAgICoqeworICAgICAgICAgICAgICAgICJ0ZXN0cy9maWxlLnB5IjogIiIiXAorICAgICAgICAg
ICAgICAgICAgICBkZWYgdGVzdF9zaW1wbGVfZmFpbHVyZSgpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0IDEgKyAxID09IDMKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQocC5kaXJwYXRoKCkp
CisgICAgICAgIGhvb2suZm5wYXRzWzpdID0gWyJ0ZXN0cy8qKi5weSJdCisgICAgICAgIGFzc2Vy
dCBob29rLmZpbmRfc3BlYygiZmlsZSIpIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBzZWxm
LmZpbmRfc3BlY19jYWxscyA9PSBbImZpbGUiXQorCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZigK
KyAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbjMyIiksIHJlYXNvbj0iY2Fubm90
IHJlbW92ZSBjd2Qgb24gV2luZG93cyIKKyAgICApCisgICAgZGVmIHRlc3RfY3dkX2NoYW5nZWQo
c2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICAgICAjIFNldHVwIGNvbmRpdGlvbnMg
Zm9yIHB5J3MgZnNwYXRoIHRyeWluZyB0byBpbXBvcnQgcGF0aGxpYiBvbiBweTM0CisgICAgICAg
ICMgYWx3YXlzIChwcmV2aW91c2x5IHRyaWdnZXJlZCB2aWEgeGRpc3Qgb25seSkuCisgICAgICAg
ICMgUmVmOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weS9wdWxsLzIwNworICAgICAg
ICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQoIiIpCisgICAgICAgIG1vbmtleXBhdGNoLmRl
bGl0ZW0oc3lzLm1vZHVsZXMsICJwYXRobGliIiwgcmFpc2luZz1GYWxzZSkKKworICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAidGVz
dF9zZXR1cF9ub25leGlzdGluZ19jd2QucHkiOiAiIiJcCisgICAgICAgICAgICAgICAgICAgIGlt
cG9ydCBvcworICAgICAgICAgICAgICAgICAgICBpbXBvcnQgc2h1dGlsCisgICAgICAgICAgICAg
ICAgICAgIGltcG9ydCB0ZW1wZmlsZQorCisgICAgICAgICAgICAgICAgICAgIGQgPSB0ZW1wZmls
ZS5ta2R0ZW1wKCkKKyAgICAgICAgICAgICAgICAgICAgb3MuY2hkaXIoZCkKKyAgICAgICAgICAg
ICAgICAgICAgc2h1dGlsLnJtdHJlZShkKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAg
ICAgICAgICAidGVzdF90ZXN0LnB5IjogIiIiXAorICAgICAgICAgICAgICAgICAgICBkZWYgdGVz
dCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICIiIiwK
KyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQg
aW4gKiJdKQorCisKK2NsYXNzIFRlc3RBc3NlcnRpb25QYXNzOgorICAgIGRlZiB0ZXN0X29wdGlv
bl9kZWZhdWx0KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNl
Y29uZmlnKCkKKyAgICAgICAgYXNzZXJ0IGNvbmZpZy5nZXRpbmkoImVuYWJsZV9hc3NlcnRpb25f
cGFzc19ob29rIikgaXMgRmFsc2UKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBmbGFn
X29uKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoIltweXRlc3RdXG5l
bmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9vayA9IFRydWVcbiIpCisKKyAgICBAcHl0ZXN0LmZpeHR1
cmUKKyAgICBkZWYgaG9va19vbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtl
Y29uZnRlc3QoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2Fzc2Vy
dGlvbl9wYXNzKGl0ZW0sIGxpbmVubywgb3JpZywgZXhwbCk6CisgICAgICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCJBc3NlcnRpb24gUGFzc2VkOiB7fSB7fSBhdCBsaW5lIHt9Ii5mb3JtYXQo
b3JpZywgZXhwbCwgbGluZW5vKSkKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9ob29rX2NhbGwoc2VsZiwgdGVzdGRpciwgZmxhZ19vbiwgaG9va19vbik6CisgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X3NpbXBsZSgpOgorICAgICAgICAgICAgICAgIGE9MQorICAgICAgICAgICAgICAgIGI9
MgorICAgICAgICAgICAgICAgIGM9MworICAgICAgICAgICAgICAgIGQ9MAorCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IGErYiA9PSBjK2QKKworICAgICAgICAgICAgIyBjb3ZlciBmYWlsaW5nIGFz
c2VydGlvbnMgd2l0aCBhIG1lc3NhZ2UKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWxzKCk6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiYXNzZXJ0IHdpdGggbWVzc2FnZSIKKyAgICAg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgIipB
c3NlcnRpb24gUGFzc2VkOiBhK2IgPT0gYytkICgxICsgMikgPT0gKDMgKyAwKSBhdCBsaW5lIDcq
IgorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ob29rX2NhbGxfd2l0aF9wYXJlbnMoc2VsZiwg
dGVzdGRpciwgZmxhZ19vbiwgaG9va19vbik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiBmKCk6IHJldHVybiAxCisgICAgICAg
ICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBmKCkKKyAgICAgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqQXNzZXJ0aW9uIFBhc3NlZDogZigp
IDEiKQorCisgICAgZGVmIHRlc3RfaG9va19ub3RfY2FsbGVkX3dpdGhvdXRfaG9va2ltcGwoc2Vs
ZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gsIGZsYWdfb24pOgorICAgICAgICAiIiJBc3NlcnRpb24g
cGFzcyBzaG91bGQgbm90IGJlIGNhbGxlZCAoYW5kIGhlbmNlIGZvcm1hdHRpbmcgc2hvdWxkCisg
ICAgICAgIG5vdCBvY2N1cikgaWYgdGhlcmUgaXMgbm8gaG9vayBkZWNsYXJlZCBmb3IgcHl0ZXN0
X2Fzc2VydGlvbl9wYXNzIiIiCisKKyAgICAgICAgZGVmIHJhaXNlX29uX2Fzc2VydGlvbnBhc3Mo
Kl8sICoqX18pOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJBc3NlcnRpb24gcGFzc2Vk
IGNhbGxlZCB3aGVuIGl0IHNob3VsZG4ndCEiKQorCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0
dHIoCisgICAgICAgICAgICBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlLCAiX2NhbGxfYXNzZXJ0
aW9uX3Bhc3MiLCByYWlzZV9vbl9hc3NlcnRpb25wYXNzCisgICAgICAgICkKKworICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYgdGVz
dF9zaW1wbGUoKToKKyAgICAgICAgICAgICAgICBhPTEKKyAgICAgICAgICAgICAgICBiPTIKKyAg
ICAgICAgICAgICAgICBjPTMKKyAgICAgICAgICAgICAgICBkPTAKKworICAgICAgICAgICAgICAg
IGFzc2VydCBhK2IgPT0gYytkCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29t
ZXMocGFzc2VkPTEpCisKKyAgICBkZWYgdGVzdF9ob29rX25vdF9jYWxsZWRfd2l0aG91dF9jbWRf
b3B0aW9uKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICAgICAgIiIiQXNzZXJ0aW9u
IHBhc3Mgc2hvdWxkIG5vdCBiZSBjYWxsZWQgKGFuZCBoZW5jZSBmb3JtYXR0aW5nIHNob3VsZAor
ICAgICAgICBub3Qgb2NjdXIpIGlmIHRoZXJlIGlzIG5vIGhvb2sgZGVjbGFyZWQgZm9yIHB5dGVz
dF9hc3NlcnRpb25fcGFzcyIiIgorCisgICAgICAgIGRlZiByYWlzZV9vbl9hc3NlcnRpb25wYXNz
KCpfLCAqKl9fKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQXNzZXJ0aW9uIHBhc3Nl
ZCBjYWxsZWQgd2hlbiBpdCBzaG91bGRuJ3QhIikKKworICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKAorICAgICAgICAgICAgX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSwgIl9jYWxsX2Fzc2Vy
dGlvbl9wYXNzIiwgcmFpc2Vfb25fYXNzZXJ0aW9ucGFzcworICAgICAgICApCisKKyAgICAgICAg
dGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYg
cHl0ZXN0X2Fzc2VydGlvbl9wYXNzKGl0ZW0sIGxpbmVubywgb3JpZywgZXhwbCk6CisgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJBc3NlcnRpb24gUGFzc2VkOiB7fSB7fSBhdCBsaW5l
IHt9Ii5mb3JtYXQob3JpZywgZXhwbCwgbGluZW5vKSkKKyAgICAgICAgICAgICIiIgogICAgICAg
ICApCiAKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiXAorICAg
ICAgICAgICAgZGVmIHRlc3Rfc2ltcGxlKCk6CisgICAgICAgICAgICAgICAgYT0xCisgICAgICAg
ICAgICAgICAgYj0yCisgICAgICAgICAgICAgICAgYz0zCisgICAgICAgICAgICAgICAgZD0wCisK
KyAgICAgICAgICAgICAgICBhc3NlcnQgYStiID09IGMrZAorICAgICAgICAgICAgIiIiCisgICAg
ICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIipFKmFzc2VydCAoMSArIDEpID09IDMiKQorICAgICAg
ICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0xKQorCisKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgKKyAgICAoInNyYyIsICJleHBlY3RlZCIpLAorICAgICgKKyAgICAgICAgIyBmbXQ6
IG9mZgorICAgICAgICBweXRlc3QucGFyYW0oYiIiLCB7fSwgaWQ9InRyaXZpYWwiKSwKKyAgICAg
ICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgYiJkZWYgeCgpOiBhc3NlcnQgMVxuIiwKKyAg
ICAgICAgICAgIHsxOiAiMSJ9LAorICAgICAgICAgICAgaWQ9ImFzc2VydCBzdGF0ZW1lbnQgbm90
IG9uIG93biBsaW5lIiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAg
ICAgICAgYiJkZWYgeCgpOlxuIgorICAgICAgICAgICAgYiIgICAgYXNzZXJ0IDFcbiIKKyAgICAg
ICAgICAgIGIiICAgIGFzc2VydCAxKzJcbiIsCisgICAgICAgICAgICB7MjogIjEiLCAzOiAiMSsy
In0sCisgICAgICAgICAgICBpZD0ibXVsdGlwbGUgYXNzZXJ0aW9ucyIsCisgICAgICAgICksCisg
ICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICMgY2hhbmdlcyBpbiBlbmNvZGluZyBj
YXVzZSB0aGUgYnl0ZSBvZmZzZXRzIHRvIGJlIGRpZmZlcmVudAorICAgICAgICAgICAgIiMgLSot
IGNvZGluZzogbGF0aW4xXG4iCisgICAgICAgICAgICAiZGVmIMOAw4DDgMOAw4AoKTogYXNzZXJ0
IDFcbiIuZW5jb2RlKCJsYXRpbjEiKSwKKyAgICAgICAgICAgIHsyOiAiMSJ9LAorICAgICAgICAg
ICAgaWQ9ImxhdGluMSBlbmNvZGVkIG9uIGZpcnN0IGxpbmVcbiIsCisgICAgICAgICksCisgICAg
ICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICMgdXNpbmcgdGhlIGRlZmF1bHQgdXRmLTgg
ZW5jb2RpbmcKKyAgICAgICAgICAgICJkZWYgw4DDgMOAw4DDgCgpOiBhc3NlcnQgMVxuIi5lbmNv
ZGUoKSwKKyAgICAgICAgICAgIHsxOiAiMSJ9LAorICAgICAgICAgICAgaWQ9InV0Zi04IGVuY29k
ZWQgb24gZmlyc3QgbGluZSIsCisgICAgICAgICksCisgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAg
ICAgICAgICAgIGIiZGVmIHgoKTpcbiIKKyAgICAgICAgICAgIGIiICAgIGFzc2VydCAoXG4iCisg
ICAgICAgICAgICBiIiAgICAgICAgMSArIDIgICMgY29tbWVudFxuIgorICAgICAgICAgICAgYiIg
ICAgKVxuIiwKKyAgICAgICAgICAgIHsyOiAiKFxuICAgICAgICAxICsgMiAgIyBjb21tZW50XG4g
ICAgKSJ9LAorICAgICAgICAgICAgaWQ9Im11bHRpLWxpbmUgYXNzZXJ0aW9uIiwKKyAgICAgICAg
KSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgYiJkZWYgeCgpOlxuIgorICAg
ICAgICAgICAgYiIgICAgYXNzZXJ0IHkgPT0gW1xuIgorICAgICAgICAgICAgYiIgICAgICAgIDEs
IDIsIDNcbiIKKyAgICAgICAgICAgIGIiICAgIF1cbiIsCisgICAgICAgICAgICB7MjogInkgPT0g
W1xuICAgICAgICAxLCAyLCAzXG4gICAgXSJ9LAorICAgICAgICAgICAgaWQ9Im11bHRpIGxpbmUg
YXNzZXJ0IHdpdGggbGlzdCBjb250aW51YXRpb24iLAorICAgICAgICApLAorICAgICAgICBweXRl
c3QucGFyYW0oCisgICAgICAgICAgICBiImRlZiB4KCk6XG4iCisgICAgICAgICAgICBiIiAgICBh
c3NlcnQgMSArIFxcXG4iCisgICAgICAgICAgICBiIiAgICAgICAgMlxuIiwKKyAgICAgICAgICAg
IHsyOiAiMSArIFxcXG4gICAgICAgIDIifSwKKyAgICAgICAgICAgIGlkPSJiYWNrc2xhc2ggY29u
dGludWF0aW9uIiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAg
ICAgYiJkZWYgeCgpOlxuIgorICAgICAgICAgICAgYiIgICAgYXNzZXJ0IHgsIHlcbiIsCisgICAg
ICAgICAgICB7MjogIngifSwKKyAgICAgICAgICAgIGlkPSJhc3NlcnRpb24gd2l0aCBtZXNzYWdl
IiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgYiJkZWYg
eCgpOlxuIgorICAgICAgICAgICAgYiIgICAgYXNzZXJ0IChcbiIKKyAgICAgICAgICAgIGIiICAg
ICAgICBmKDEsIDIsIDMpXG4iCisgICAgICAgICAgICBiIiAgICApLCAgJ2YgZGlkIG5vdCB3b3Jr
ISdcbiIsCisgICAgICAgICAgICB7MjogIihcbiAgICAgICAgZigxLCAyLCAzKVxuICAgICkifSwK
KyAgICAgICAgICAgIGlkPSJhc3NlcnRpb24gd2l0aCBtZXNzYWdlLCB0ZXN0IHNwYW5uaW5nIG11
bHRpcGxlIGxpbmVzIiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAg
ICAgICAgYiJkZWYgeCgpOlxuIgorICAgICAgICAgICAgYiIgICAgYXNzZXJ0IFxcXG4iCisgICAg
ICAgICAgICBiIiAgICAgICAgeFxcXG4iCisgICAgICAgICAgICBiIiAgICAgICAgLCAnZmFpbHVy
ZSBtZXNzYWdlJ1xuIiwKKyAgICAgICAgICAgIHsyOiAieCJ9LAorICAgICAgICAgICAgaWQ9ImVz
Y2FwZWQgbmV3bGluZXMgcGx1cyBtZXNzYWdlIiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0
LnBhcmFtKAorICAgICAgICAgICAgYiJkZWYgeCgpOiBhc3NlcnQgNSIsCisgICAgICAgICAgICB7
MTogIjUifSwKKyAgICAgICAgICAgIGlkPSJubyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlIiwKKyAg
ICAgICAgKSwKKyAgICAgICAgIyBmbXQ6IG9uCisgICAgKSwKKykKK2RlZiB0ZXN0X2dldF9hc3Nl
cnRpb25fZXhwcnMoc3JjLCBleHBlY3RlZCk6CisgICAgYXNzZXJ0IF9nZXRfYXNzZXJ0aW9uX2V4
cHJzKHNyYykgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF90cnlfbWFrZWRpcnMobW9ua2V5cGF0
Y2gsIHRtcF9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAgIGZyb20gX3B5dGVzdC5hc3NlcnRpb24u
cmV3cml0ZSBpbXBvcnQgdHJ5X21ha2VkaXJzCisKKyAgICBwID0gdG1wX3BhdGggLyAiZm9vIgor
CisgICAgIyBjcmVhdGUKKyAgICBhc3NlcnQgdHJ5X21ha2VkaXJzKHApCisgICAgYXNzZXJ0IHAu
aXNfZGlyKCkKKworICAgICMgYWxyZWFkeSBleGlzdAorICAgIGFzc2VydCB0cnlfbWFrZWRpcnMo
cCkKKworICAgICMgbW9ua2V5cGF0Y2ggdG8gc2ltdWxhdGUgYWxsIGVycm9yIHNpdHVhdGlvbnMK
KyAgICBkZWYgZmFrZV9ta2RpcihwLCBleGlzdF9vaz1GYWxzZSwgKiwgZXhjKToKKyAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UocCwgc3RyKQorICAgICAgICByYWlzZSBleGMKKworICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIob3MsICJtYWtlZGlycyIsIHBhcnRpYWwoZmFrZV9ta2RpciwgZXhjPUZp
bGVOb3RGb3VuZEVycm9yKCkpKQorICAgIGFzc2VydCBub3QgdHJ5X21ha2VkaXJzKHApCisKKyAg
ICBtb25rZXlwYXRjaC5zZXRhdHRyKG9zLCAibWFrZWRpcnMiLCBwYXJ0aWFsKGZha2VfbWtkaXIs
IGV4Yz1Ob3RBRGlyZWN0b3J5RXJyb3IoKSkpCisgICAgYXNzZXJ0IG5vdCB0cnlfbWFrZWRpcnMo
cCkKKworICAgIG1vbmtleXBhdGNoLnNldGF0dHIob3MsICJtYWtlZGlycyIsIHBhcnRpYWwoZmFr
ZV9ta2RpciwgZXhjPVBlcm1pc3Npb25FcnJvcigpKSkKKyAgICBhc3NlcnQgbm90IHRyeV9tYWtl
ZGlycyhwKQorCisgICAgZXJyID0gT1NFcnJvcigpCisgICAgZXJyLmVycm5vID0gZXJybm8uRVJP
RlMKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9zLCAibWFrZWRpcnMiLCBwYXJ0aWFsKGZha2Vf
bWtkaXIsIGV4Yz1lcnIpKQorICAgIGFzc2VydCBub3QgdHJ5X21ha2VkaXJzKHApCisKKyAgICAj
IHVuaGFuZGxlZCBPU0Vycm9yIHNob3VsZCByYWlzZQorICAgIGVyciA9IE9TRXJyb3IoKQorICAg
IGVyci5lcnJubyA9IGVycm5vLkVDSElMRAorICAgIG1vbmtleXBhdGNoLnNldGF0dHIob3MsICJt
YWtlZGlycyIsIHBhcnRpYWwoZmFrZV9ta2RpciwgZXhjPWVycikpCisgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKE9TRXJyb3IpIGFzIGV4Y19pbmZvOgorICAgICAgICB0cnlfbWFrZWRpcnMocCkKKyAg
ICBhc3NlcnQgZXhjX2luZm8udmFsdWUuZXJybm8gPT0gZXJybm8uRUNISUxECisKKworY2xhc3Mg
VGVzdFB5Q2FjaGVEaXI6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAi
cHJlZml4LCBzb3VyY2UsIGV4cGVjdGVkIiwKKyAgICAgICAgWworICAgICAgICAgICAgKCJjOi90
bXAvcHljcyIsICJkOi9wcm9qZWN0cy9zcmMvZm9vLnB5IiwgImM6L3RtcC9weWNzL3Byb2plY3Rz
L3NyYyIpLAorICAgICAgICAgICAgKE5vbmUsICJkOi9wcm9qZWN0cy9zcmMvZm9vLnB5IiwgImQ6
L3Byb2plY3RzL3NyYy9fX3B5Y2FjaGVfXyIpLAorICAgICAgICAgICAgKCIvdG1wL3B5Y3MiLCAi
L2hvbWUvcHJvamVjdHMvc3JjL2Zvby5weSIsICIvdG1wL3B5Y3MvaG9tZS9wcm9qZWN0cy9zcmMi
KSwKKyAgICAgICAgICAgIChOb25lLCAiL2hvbWUvcHJvamVjdHMvc3JjL2Zvby5weSIsICIvaG9t
ZS9wcm9qZWN0cy9zcmMvX19weWNhY2hlX18iKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVm
IHRlc3RfZ2V0X2NhY2hlX2RpcihzZWxmLCBtb25rZXlwYXRjaCwgcHJlZml4LCBzb3VyY2UsIGV4
cGVjdGVkKToKKyAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA8ICgzLCA4KToKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgicHljYWNoZV9wcmVm
aXggbm90IGF2YWlsYWJsZSBpbiBweTwzOCIpCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKHN5cywgInB5Y2FjaGVfcHJlZml4IiwgcHJlZml4KSAgIyB0eXBlOmlnbm9yZQorCisgICAg
ICAgIGFzc2VydCBnZXRfY2FjaGVfZGlyKFBhdGgoc291cmNlKSkgPT0gUGF0aChleHBlY3RlZCkK
KworICAgIEBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIHN5cy52ZXJzaW9uX2luZm8gPCAo
MywgOCksIHJlYXNvbj0icHljYWNoZV9wcmVmaXggbm90IGF2YWlsYWJsZSBpbiBweTwzOCIKKyAg
ICApCisgICAgZGVmIHRlc3Rfc3lzX3B5Y2FjaGVfcHJlZml4X2ludGVncmF0aW9uKHNlbGYsIHRt
cF9wYXRoLCBtb25rZXlwYXRjaCwgdGVzdGRpcik6CisgICAgICAgICIiIkludGVncmF0aW9uIHRl
c3QgZm9yIHN5cy5weWNhY2hlX3ByZWZpeCAoIzQ3MzApLiIiIgorICAgICAgICBweWNhY2hlX3By
ZWZpeCA9IHRtcF9wYXRoIC8gIm15L3B5Y3MiCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
c3lzLCAicHljYWNoZV9wcmVmaXgiLCBzdHIocHljYWNoZV9wcmVmaXgpKQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHN5cywgImRvbnRfd3JpdGVfYnl0ZWNvZGUiLCBGYWxzZSkKKworICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAg
ICAic3JjL3Rlc3RfZm9vLnB5IjogIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGJhcgorICAg
ICAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisg
ICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgInNyYy9iYXIvX19pbml0X18ucHkiOiAi
IiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworICAgICAgICB0ZXN0
X2ZvbyA9IFBhdGgodGVzdGRpci50bXBkaXIpIC8gInNyYy90ZXN0X2Zvby5weSIKKyAgICAgICAg
YmFyX2luaXQgPSBQYXRoKHRlc3RkaXIudG1wZGlyKSAvICJzcmMvYmFyL19faW5pdF9fLnB5Igor
ICAgICAgICBhc3NlcnQgdGVzdF9mb28uaXNfZmlsZSgpCisgICAgICAgIGFzc2VydCBiYXJfaW5p
dC5pc19maWxlKCkKKworICAgICAgICAjIHRlc3QgZmlsZTogcmV3cml0dGVuLCBjdXN0b20gcHl0
ZXN0IGNhY2hlIHRhZworICAgICAgICB0ZXN0X2Zvb19weWMgPSBnZXRfY2FjaGVfZGlyKHRlc3Rf
Zm9vKSAvICgidGVzdF9mb28iICsgUFlDX1RBSUwpCisgICAgICAgIGFzc2VydCB0ZXN0X2Zvb19w
eWMuaXNfZmlsZSgpCisKKyAgICAgICAgIyBub3JtYWwgZmlsZTogbm90IHRvdWNoZWQgYnkgcHl0
ZXN0LCBub3JtYWwgY2FjaGUgdGFnCisgICAgICAgIGJhcl9pbml0X3B5YyA9IGdldF9jYWNoZV9k
aXIoYmFyX2luaXQpIC8gIl9faW5pdF9fLntjYWNoZV90YWd9LnB5YyIuZm9ybWF0KAorICAgICAg
ICAgICAgY2FjaGVfdGFnPXN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICAgICAgKQor
ICAgICAgICBhc3NlcnQgYmFyX2luaXRfcHljLmlzX2ZpbGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X2NhY2hlcHJvdmlkZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfY2FjaGVwcm92aWRlci5weQppbmRleCAzM2QxZGQ4NDQ4YzEuLmE5MTEyNTdjZTI0YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhY2hlcHJvdmlkZXIucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhY2hlcHJvdmlkZXIucHkKQEAgLTEsMTYgKzEs
MTggQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKLWltcG9ydCBweQotaW1wb3J0IF9weXRlc3QKLWlt
cG9ydCBweXRlc3QKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN0YXQKK2ltcG9y
dCBzeXMKKworaW1wb3J0IHB5CiAKLXB5dGVzdF9wbHVnaW5zID0gInB5dGVzdGVyIiwKK2ltcG9y
dCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRl
c3QucHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKIAorcHl0ZXN0X3BsdWdpbnMgPSAoInB5dGVzdGVy
IiwpCiAKLWNsYXNzIFRlc3ROZXdBUEkob2JqZWN0KToKIAorY2xhc3MgVGVzdE5ld0FQSToKICAg
ICBkZWYgdGVzdF9jb25maWdfY2FjaGVfbWFrZWRpcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
dGVzdGRpci5tYWtlaW5pKCJbcHl0ZXN0XSIpCiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFy
c2Vjb25maWd1cmUoKQpAQCAtMjYsMTAgKzI4LDExIEBAIGNsYXNzIFRlc3ROZXdBUEkob2JqZWN0
KToKICAgICAgICAgY2FjaGUgPSBjb25maWcuY2FjaGUKICAgICAgICAgcHl0ZXN0LnJhaXNlcyhU
eXBlRXJyb3IsIGxhbWJkYTogY2FjaGUuc2V0KCJrZXkvbmFtZSIsIGNhY2hlKSkKICAgICAgICAg
Y29uZmlnLmNhY2hlLnNldCgia2V5L25hbWUiLCAwKQotICAgICAgICBjb25maWcuY2FjaGUuX2dl
dHZhbHVlcGF0aCgia2V5L25hbWUiKS53cml0ZSgiMTIzaW52YWxpZCIpCisgICAgICAgIGNvbmZp
Zy5jYWNoZS5fZ2V0dmFsdWVwYXRoKCJrZXkvbmFtZSIpLndyaXRlX2J5dGVzKGIiMTIzaW52YWxp
ZCIpCiAgICAgICAgIHZhbCA9IGNvbmZpZy5jYWNoZS5nZXQoImtleS9uYW1lIiwgLTIpCiAgICAg
ICAgIGFzc2VydCB2YWwgPT0gLTIKIAorICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygi
aWdub3JlOmNvdWxkIG5vdCBjcmVhdGUgY2FjaGUgcGF0aCIpCiAgICAgZGVmIHRlc3RfY2FjaGVf
d3JpdGVmYWlsX2NhY2hmaWxlX3NpbGVudChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRp
ci5tYWtlaW5pKCJbcHl0ZXN0XSIpCiAgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oIi5weXRl
c3RfY2FjaGUiKS53cml0ZSgiZ29uZSB3cm9uZyIpCkBAIC0zOCwyNiArNDEsNDYgQEAgY2xhc3Mg
VGVzdE5ld0FQSShvYmplY3QpOgogICAgICAgICBjYWNoZS5zZXQoInRlc3QvYnJva2VuIiwgW10p
CiAKICAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4i
KSwgcmVhc29uPSJubyBjaG1vZCBvbiB3aW5kb3dzIikKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVy
d2FybmluZ3MoCisgICAgICAgICJpZ25vcmU6Y291bGQgbm90IGNyZWF0ZSBjYWNoZSBwYXRoOnB5
dGVzdC5QeXRlc3RXYXJuaW5nIgorICAgICkKICAgICBkZWYgdGVzdF9jYWNoZV93cml0ZWZhaWxf
cGVybWlzc2lvbnMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWluaSgiW3B5
dGVzdF0iKQorICAgICAgICBjYWNoZV9kaXIgPSBzdHIodGVzdGRpci50bXBkaXIuZW5zdXJlX2Rp
cigiLnB5dGVzdF9jYWNoZSIpKQorICAgICAgICBtb2RlID0gb3Muc3RhdChjYWNoZV9kaXIpW3N0
YXQuU1RfTU9ERV0KICAgICAgICAgdGVzdGRpci50bXBkaXIuZW5zdXJlX2RpcigiLnB5dGVzdF9j
YWNoZSIpLmNobW9kKDApCi0gICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWd1cmUo
KQotICAgICAgICBjYWNoZSA9IGNvbmZpZy5jYWNoZQotICAgICAgICBjYWNoZS5zZXQoInRlc3Qv
YnJva2VuIiwgW10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIu
cGFyc2Vjb25maWd1cmUoKQorICAgICAgICAgICAgY2FjaGUgPSBjb25maWcuY2FjaGUKKyAgICAg
ICAgICAgIGNhY2hlLnNldCgidGVzdC9icm9rZW4iLCBbXSkKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgIHRlc3RkaXIudG1wZGlyLmVuc3VyZV9kaXIoIi5weXRlc3RfY2FjaGUiKS5jaG1v
ZChtb2RlKQogCiAgICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgid2luIiksIHJlYXNvbj0ibm8gY2htb2Qgb24gd2luZG93cyIpCi0gICAgZGVmIHRlc3RfY2Fj
aGVfZmFpbHVyZV93YXJucyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVy
d2FybmluZ3MoImRlZmF1bHQiKQorICAgIGRlZiB0ZXN0X2NhY2hlX2ZhaWx1cmVfd2FybnMoc2Vs
ZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZ
VEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIsICIxIikKKyAgICAgICAgY2FjaGVfZGlyID0g
c3RyKHRlc3RkaXIudG1wZGlyLmVuc3VyZV9kaXIoIi5weXRlc3RfY2FjaGUiKSkKKyAgICAgICAg
bW9kZSA9IG9zLnN0YXQoY2FjaGVfZGlyKVtzdGF0LlNUX01PREVdCiAgICAgICAgIHRlc3RkaXIu
dG1wZGlyLmVuc3VyZV9kaXIoIi5weXRlc3RfY2FjaGUiKS5jaG1vZCgwKQotICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Vy
cm9yKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCi0KLSAgICAgICAgIiIiCi0g
ICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ydyIpCi0gICAg
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKmNvdWxkIG5vdCBjcmVhdGUgY2FjaGUgcGF0aCoiLCAiKjIgd2FybmluZ3MqIl0p
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3Rf
ZXJyb3IoKTogcmFpc2UgRXhjZXB0aW9uIikKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKKyAgICAgICAg
ICAgICMgd2FybmluZ3MgZnJvbSBub2RlaWRzLCBsYXN0ZmFpbGVkLCBhbmQgc3RlcHdpc2UKKyAg
ICAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICMgVmFsaWRhdGUgbG9jYXRpb24vc3RhY2tsZXZlbCBvZiB3
YXJuaW5nIGZyb20gY2FjaGVwcm92aWRlci4KKyAgICAgICAgICAgICAgICAgICAgIio9IHdhcm5p
bmdzIHN1bW1hcnkgPSoiLAorICAgICAgICAgICAgICAgICAgICAiKi9jYWNoZXByb3ZpZGVyLnB5
OioiLAorICAgICAgICAgICAgICAgICAgICAiICAqL2NhY2hlcHJvdmlkZXIucHk6KjogUHl0ZXN0
Q2FjaGVXYXJuaW5nOiBjb3VsZCBub3QgY3JlYXRlIGNhY2hlIHBhdGggIgorICAgICAgICAgICAg
ICAgICAgICAie30vdi9jYWNoZS9ub2RlaWRzIi5mb3JtYXQoY2FjaGVfZGlyKSwKKyAgICAgICAg
ICAgICAgICAgICAgJyAgICBjb25maWcuY2FjaGUuc2V0KCJjYWNoZS9ub2RlaWRzIiwgc29ydGVk
KHNlbGYuY2FjaGVkX25vZGVpZHMpKScsCisgICAgICAgICAgICAgICAgICAgICIqMSBmYWlsZWQs
IDMgd2FybmluZ3MgaW4qIiwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0ZXN0ZGlyLnRtcGRpci5lbnN1cmVfZGlyKCIucHl0
ZXN0X2NhY2hlIikuY2htb2QobW9kZSkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ19jYWNoZShzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCkBAIC0xMzgsMTUgKzE2
MSwzNyBAQCBjbGFzcyBUZXN0TmV3QVBJKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCB0ZXN0ZGly
LnRtcGRpci5qb2luKCJjdXN0b21fY2FjaGVfZGlyIikuaXNkaXIoKQogCiAKLWRlZiB0ZXN0X2Nh
Y2hlX3JlcG9ydGhlYWRlcih0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoImVudiIsICgoKSwgKCJUT1hfRU5WX0RJUiIsICIvdG94X2Vu
dl9kaXIiKSkpCitkZWYgdGVzdF9jYWNoZV9yZXBvcnRoZWFkZXIoZW52LCB0ZXN0ZGlyLCBtb25r
ZXlwYXRjaCk6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKCIiImRlZiB0ZXN0X2ZvbygpOiBwYXNz
IiIiKQorICAgIGlmIGVudjoKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCplbnYpCisgICAg
ICAgIGV4cGVjdGVkID0gb3MucGF0aC5qb2luKGVudlsxXSwgIi5weXRlc3RfY2FjaGUiKQorICAg
IGVsc2U6CisgICAgICAgIG1vbmtleXBhdGNoLmRlbGVudigiVE9YX0VOVl9ESVIiLCByYWlzaW5n
PUZhbHNlKQorICAgICAgICBleHBlY3RlZCA9ICIucHl0ZXN0X2NhY2hlIgorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiY2FjaGVkaXI6ICVzIiAlIGV4cGVjdGVkXSkKKworCitkZWYgdGVzdF9jYWNoZV9yZXBvcnRo
ZWFkZXJfZXh0ZXJuYWxfYWJzcGF0aCh0ZXN0ZGlyLCB0bXBkaXJfZmFjdG9yeSk6CisgICAgZXh0
ZXJuYWxfY2FjaGUgPSB0bXBkaXJfZmFjdG9yeS5ta3RlbXAoCisgICAgICAgICJ0ZXN0X2NhY2hl
X3JlcG9ydGhlYWRlcl9leHRlcm5hbF9hYnNwYXRoX2FicyIKKyAgICApCisKKyAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoImRlZiB0ZXN0X2hlbGxvKCk6IHBhc3MiKQorICAgIHRlc3RkaXIubWFrZWlu
aSgKICAgICAgICAgIiIiCi0gICAgICAgIGRlZiB0ZXN0X2hlbGxvKCk6Ci0gICAgICAgICAgICBw
YXNzCi0gICAgIiIiCisgICAgW3B5dGVzdF0KKyAgICBjYWNoZV9kaXIgPSB7YWJzY2FjaGV9Cisg
ICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGFic2NhY2hlPWV4dGVybmFsX2NhY2hlCisgICAg
ICAgICkKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKLSAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjYWNoZWRpcjogLnB5dGVzdF9jYWNoZSJdKQor
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWyJjYWNoZWRpcjoge2Fi
c2NhY2hlfSIuZm9ybWF0KGFic2NhY2hlPWV4dGVybmFsX2NhY2hlKV0KKyAgICApCiAKIAogZGVm
IHRlc3RfY2FjaGVfc2hvdyh0ZXN0ZGlyKToKQEAgLTE1Nyw2ICsyMDIsNyBAQCBkZWYgdGVzdF9j
YWNoZV9zaG93KHRlc3RkaXIpOgogICAgICAgICAiIiIKICAgICAgICAgZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKToKICAgICAgICAgICAgIGNvbmZpZy5jYWNoZS5zZXQoIm15L25hbWUiLCBb
MSwyLDNdKQorICAgICAgICAgICAgY29uZmlnLmNhY2hlLnNldCgibXkvaGVsbG8iLCAid29ybGQi
KQogICAgICAgICAgICAgY29uZmlnLmNhY2hlLnNldCgib3RoZXIvc29tZSIsIHsxOjJ9KQogICAg
ICAgICAgICAgZHAgPSBjb25maWcuY2FjaGUubWFrZWRpcigibXlkYiIpCiAgICAgICAgICAgICBk
cC5lbnN1cmUoImhlbGxvIikKQEAgLTE2NSw1OCArMjExLDgxIEBAIGRlZiB0ZXN0X2NhY2hlX3No
b3codGVzdGRpcik6CiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSA1ICAjIG5vIHRlc3RzIGV4ZWN1dGVkCisKICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jYWNoZS1zaG93IikKLSAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXNfcmFuZG9tKAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygK
ICAgICAgICAgWwogICAgICAgICAgICAgIipjYWNoZWRpcjoqIiwKLSAgICAgICAgICAgICItKmNh
Y2hlIHZhbHVlcyotIiwKLSAgICAgICAgICAgICIqbXkvbmFtZSBjb250YWluczoiLAorICAgICAg
ICAgICAgIiotIGNhY2hlIHZhbHVlcyBmb3IgJ1sqXScgLSoiLAorICAgICAgICAgICAgImNhY2hl
L25vZGVpZHMgY29udGFpbnM6IiwKKyAgICAgICAgICAgICJteS9uYW1lIGNvbnRhaW5zOiIsCiAg
ICAgICAgICAgICAiICBbMSwgMiwgM10iLAotICAgICAgICAgICAgIipvdGhlci9zb21lIGNvbnRh
aW5zKiIsCi0gICAgICAgICAgICAiICB7KjEqOiAyfSIsCi0gICAgICAgICAgICAiLSpjYWNoZSBk
aXJlY3RvcmllcyotIiwKKyAgICAgICAgICAgICJvdGhlci9zb21lIGNvbnRhaW5zOiIsCisgICAg
ICAgICAgICAiICB7KicxJzogMn0iLAorICAgICAgICAgICAgIiotIGNhY2hlIGRpcmVjdG9yaWVz
IGZvciAnWypdJyAtKiIsCiAgICAgICAgICAgICAiKm15ZGIvaGVsbG8qbGVuZ3RoIDAqIiwKICAg
ICAgICAgICAgICIqbXlkYi93b3JsZCpsZW5ndGggMCoiLAogICAgICAgICBdCiAgICAgKQorICAg
IGFzc2VydCByZXN1bHQucmV0ID09IDAKIAorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLWNhY2hlLXNob3ciLCAiKi9oZWxsbyIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKmNhY2hlZGlyOioiLAorICAgICAgICAgICAg
IiotIGNhY2hlIHZhbHVlcyBmb3IgJ1sqXS9oZWxsbycgLSoiLAorICAgICAgICAgICAgIm15L2hl
bGxvIGNvbnRhaW5zOiIsCisgICAgICAgICAgICAiICAqJ3dvcmxkJyIsCisgICAgICAgICAgICAi
Ki0gY2FjaGUgZGlyZWN0b3JpZXMgZm9yICdbKl0vaGVsbG8nIC0qIiwKKyAgICAgICAgICAgICJk
L215ZGIvaGVsbG8qbGVuZ3RoIDAqIiwKKyAgICAgICAgXQorICAgICkKKyAgICBzdGRvdXQgPSBy
ZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgYXNzZXJ0ICJvdGhlci9zb21lIiBub3QgaW4gc3Rkb3V0
CisgICAgYXNzZXJ0ICJkL215ZGIvd29ybGQiIG5vdCBpbiBzdGRvdXQKKyAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAwCiAKLWNsYXNzIFRlc3RMYXN0RmFpbGVkKG9iamVjdCk6CiAKK2NsYXNzIFRl
c3RMYXN0RmFpbGVkOgogICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfdXNlY2FzZShzZWxmLCB0ZXN0
ZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlUSE9ORE9O
VFdSSVRFQllURUNPREUiLCAxKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJzeXMuZG9u
dF93cml0ZV9ieXRlY29kZSIsIFRydWUpCiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgMAotICAgICAgICAgICAgZGVmIHRlc3RfMigpOgotICAgICAgICAgICAgICAg
IGFzc2VydCAwCi0gICAgICAgICAgICBkZWYgdGVzdF8zKCk6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IDEKLSAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF8xKCk6IGFzc2VydCAwCisg
ICAgICAgICAgICBkZWYgdGVzdF8yKCk6IGFzc2VydCAwCisgICAgICAgICAgICBkZWYgdGVzdF8z
KCk6IGFzc2VydCAxCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KHN0cihwKSkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgZmFpbGVk
KiJdKQotICAgICAgICBwLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
Ci0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0IDEKLQotICAgICAgICAgICAgZGVmIHRlc3RfMigpOgotICAgICAgICAg
ICAgICAgIGFzc2VydCAxCi0KLSAgICAgICAgICAgIGRlZiB0ZXN0XzMoKToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKLSAgICAgICAgICAgICkKKyAgICAgICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3Rf
MSgpOiBhc3NlcnQgMQorICAgICAgICAgICAgZGVmIHRlc3RfMigpOiBhc3NlcnQgMQorICAgICAg
ICAgICAgZGVmIHRlc3RfMygpOiBhc3NlcnQgMAorICAgICAgICAgICAgIiIiCiAgICAgICAgICkK
LSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiKQotICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNzZWQqMSBkZXNlbCoiXSkKLSAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiKQotICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqMSBmYWlsZWQqMiBwYXNzZWQqIl0pCi0gICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIiwgIi0tY2FjaGUtY2xlYXIiKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocCksICItLWxmIikKKyAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xs
ZWN0ZWQgMyBpdGVtcyAvIDEgZGVzZWxlY3RlZCAvIDIgc2VsZWN0ZWQiLAorICAgICAgICAgICAg
ICAgICJydW4tbGFzdC1mYWlsdXJlOiByZXJ1biBwcmV2aW91cyAyIGZhaWx1cmVzIiwKKyAgICAg
ICAgICAgICAgICAiKj0gMiBwYXNzZWQsIDEgZGVzZWxlY3RlZCBpbiAqIiwKKyAgICAgICAgICAg
IF0KKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocCks
ICItLWxmIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMyBpdGVtcyIsCisgICAgICAgICAgICAg
ICAgInJ1bi1sYXN0LWZhaWx1cmU6IG5vIHByZXZpb3VzbHkgZmFpbGVkIHRlc3RzLCBub3QgZGVz
ZWxlY3RpbmcgaXRlbXMuIiwKKyAgICAgICAgICAgICAgICAiKjEgZmFpbGVkKjIgcGFzc2VkKiIs
CisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigi
LnB5dGVzdF9jYWNoZSIpLm1rZGlyKCIuZ2l0IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3Qoc3RyKHApLCAiLS1sZiIsICItLWNhY2hlLWNsZWFyIikKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgZmFpbGVkKjIgcGFzc2VkKiJdKQorICAgICAgICBh
c3NlcnQgdGVzdGRpci50bXBkaXIuam9pbigiLnB5dGVzdF9jYWNoZSIsICJSRUFETUUubWQiKS5p
c2ZpbGUoKQorICAgICAgICBhc3NlcnQgdGVzdGRpci50bXBkaXIuam9pbigiLnB5dGVzdF9jYWNo
ZSIsICIuZ2l0IikuaXNkaXIoKQogCiAgICAgICAgICMgUnVuIHRoaXMgYWdhaW4gdG8gbWFrZSBz
dXJlIGNsZWFyLWNhY2hlIGlzIHJvYnVzdAogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCIucHl0
ZXN0X2NhY2hlIik6CkBAIC0yMjUsNjMgKzI5NCw0NSBAQCBjbGFzcyBUZXN0TGFzdEZhaWxlZChv
YmplY3QpOgogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBmYWlsZWQq
MiBwYXNzZWQqIl0pCiAKICAgICBkZWYgdGVzdF9mYWlsZWRmaXJzdF9vcmRlcihzZWxmLCB0ZXN0
ZGlyKToKLSAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF9hLnB5Iikud3JpdGUoCi0g
ICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGRlZiB0ZXN0X2Fsd2F5c19wYXNzZXMoKToKLSAgICAgICAgICAgICAgICBhc3Nl
cnQgMQotICAgICAgICAiIiIKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICB0ZXN0
ZGlyLnRtcGRpci5qb2luKCJ0ZXN0X2IucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3Qu
X2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3Rf
YWx3YXlzX2ZhaWxzKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCi0g
ICAgICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgIHRl
c3RfYT0iZGVmIHRlc3RfYWx3YXlzX3Bhc3NlcygpOiBwYXNzIiwKKyAgICAgICAgICAgIHRlc3Rf
Yj0iZGVmIHRlc3RfYWx3YXlzX2ZhaWxzKCk6IGFzc2VydCAwIiwKICAgICAgICAgKQogICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgICMgVGVzdCBvcmRlciB3aWxs
IGJlIGNvbGxlY3Rpb24gb3JkZXI7IGFscGhhYmV0aWNhbAogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyJ0ZXN0X2EucHkqIiwgInRlc3RfYi5weSoiXSkKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZmYiKQotICAgICAgICAjIFRlc3Qgb3JkZXIgd2ls
bCBiZSBmYWlsaW5nIHRlc3RzIGZpcnMKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsidGVzdF9iLnB5KiIsICJ0ZXN0X2EucHkqIl0pCisgICAgICAgICMgVGVzdCBvcmRlciB3
aWxsIGJlIGZhaWxpbmcgdGVzdHMgZmlyc3QKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVt
cyIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDEg
ZmFpbHVyZSBmaXJzdCIsCisgICAgICAgICAgICAgICAgInRlc3RfYi5weSoiLAorICAgICAgICAg
ICAgICAgICJ0ZXN0X2EucHkqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogCiAgICAgZGVm
IHRlc3RfbGFzdGZhaWxlZF9mYWlsZWRmaXJzdF9vcmRlcihzZWxmLCB0ZXN0ZGlyKToKICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgKip7Ci0gICAgICAgICAgICAgICAg
InRlc3RfYS5weSI6ICIiIgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Fsd2F5c19wYXNzZXMo
KToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDEKLSAgICAgICAgICAgICIiIiwKLSAgICAg
ICAgICAgICAgICAidGVzdF9iLnB5IjogIiIiCi0gICAgICAgICAgICAgICAgZGVmIHRlc3RfYWx3
YXlzX2ZhaWxzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICAgICAi
IiIsCi0gICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0X2E9ImRlZiB0ZXN0X2Fsd2F5c19w
YXNzZXMoKTogYXNzZXJ0IDEiLAorICAgICAgICAgICAgdGVzdF9iPSJkZWYgdGVzdF9hbHdheXNf
ZmFpbHMoKTogYXNzZXJ0IDAiLAogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKICAgICAgICAgIyBUZXN0IG9yZGVyIHdpbGwgYmUgY29sbGVjdGlvbiBvcmRl
cjsgYWxwaGFiZXRpY2FsCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbInRl
c3RfYS5weSoiLCAidGVzdF9iLnB5KiJdKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1sZiIsICItLWZmIikKLSAgICAgICAgIyBUZXN0IG9yZGVyIHdpbGwgYmUgZmFpbGlu
ZyB0ZXN0cyBmaXJzCisgICAgICAgICMgVGVzdCBvcmRlciB3aWxsIGJlIGZhaWxpbmcgdGVzdHMg
Zmlyc3QKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsidGVzdF9iLnB5KiJd
KQotICAgICAgICBhc3NlcnQgInRlc3RfYS5weSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
KyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIip0ZXN0X2EucHkqIikKIAog
ICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfZGlmZmVyZW5jZV9pbnZvY2F0aW9ucyhzZWxmLCB0ZXN0
ZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlUSE9ORE9O
VFdSSVRFQllURUNPREUiLCAxKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJzeXMuZG9u
dF93cml0ZV9ieXRlY29kZSIsIFRydWUpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgICAgIHRlc3RfYT0iIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X2ExKCk6Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgICAgIGRlZiB0ZXN0X2EyKCk6Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0IDEKLSAgICAgICAgIiIiLAotICAgICAgICAgICAgdGVzdF9iPSIiIgotICAg
ICAgICAgICAgZGVmIHRlc3RfYjEoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAg
ICAiIiIsCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfYTEoKTogYXNzZXJ0IDAKKyAgICAgICAg
ICAgICAgICBkZWYgdGVzdF9hMigpOiBhc3NlcnQgMQorICAgICAgICAgICAgIiIiLAorICAgICAg
ICAgICAgdGVzdF9iPSJkZWYgdGVzdF9iMSgpOiBhc3NlcnQgMCIsCiAgICAgICAgICkKICAgICAg
ICAgcCA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInRlc3RfYS5weSIpCiAgICAgICAgIHAyID0gdGVz
dGRpci50bXBkaXIuam9pbigidGVzdF9iLnB5IikKQEAgLTI5MCwzNiArMzQxLDI1IEBAIGNsYXNz
IFRlc3RMYXN0RmFpbGVkKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIioyIGZhaWxlZCoiXSkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0tbGYiLCBwMikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgZmFp
bGVkKiJdKQotICAgICAgICBwMi53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291
cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfYjEoKToKLSAg
ICAgICAgICAgICAgICBhc3NlcnQgMQotICAgICAgICAiIiIKLSAgICAgICAgICAgICkKLSAgICAg
ICAgKQorCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2I9ImRlZiB0ZXN0X2IxKCk6
IGFzc2VydCAxIikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCBw
MikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIsIHApCi0gICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIGZhaWxlZCoxIGRlc2VsKiJdKQorICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgImNvbGxlY3RlZCAyIGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMSBzZWxlY3RlZCIsCisg
ICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDEgZmFpbHVy
ZSIsCisgICAgICAgICAgICAgICAgIio9IDEgZmFpbGVkLCAxIGRlc2VsZWN0ZWQgaW4gKiIsCisg
ICAgICAgICAgICBdCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfdXNlY2Fz
ZV9zcGxpY2Uoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotICAgICAgICBtb25rZXlwYXRj
aC5zZXRlbnYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIiwgMSkKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cigic3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUiLCBUcnVlKQogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEo
KToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKKyAgICAgICAgICAgICJk
ZWYgdGVzdF8xKCk6IGFzc2VydCAwIiwgdGVzdF9zb21ldGhpbmc9ImRlZiB0ZXN0XzIoKTogYXNz
ZXJ0IDAiCiAgICAgICAgICkKICAgICAgICAgcDIgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0
X3NvbWV0aGluZy5weSIpCi0gICAgICAgIHAyLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5f
Y29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8y
KCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCi0gICAgICAgICAgICAp
Ci0gICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBmYWlsZWQqIl0pCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIiwgcDIpCkBAIC0zNTYsMjMgKzM5NiwxOSBA
QCBjbGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygiKjEgZmFpbGVkIGluKiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIioxIGZhaWxlZCBpbioiXSkKIAogICAgIGRlZiB0ZXN0X3Rlcm1pbmFs
X3JlcG9ydF9sYXN0ZmFpbGVkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0X2EgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICB0ZXN0X2E9IiIiCi0gICAgICAgICAgICBkZWYg
dGVzdF9hMSgpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Ey
KCk6Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfYTEoKTogcGFz
cworICAgICAgICAgICAgZGVmIHRlc3RfYTIoKTogcGFzcwogICAgICAgICAiIiIKICAgICAgICAg
KQogICAgICAgICB0ZXN0X2IgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICB0ZXN0
X2I9IiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9iMSgpOgotICAgICAgICAgICAgICAgIGFzc2Vy
dCAwCi0gICAgICAgICAgICBkZWYgdGVzdF9iMigpOgotICAgICAgICAgICAgICAgIGFzc2VydCAw
CisgICAgICAgICAgICBkZWYgdGVzdF9iMSgpOiBhc3NlcnQgMAorICAgICAgICAgICAgZGVmIHRl
c3RfYjIoKTogYXNzZXJ0IDAKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoKQpAQCAtMzgxLDkgKzQxNyw5IEBAIGNsYXNzIFRlc3RMYXN0
RmFpbGVkKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxm
IikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgNCBpdGVtcyAvIDIgZGVzZWxlY3RlZCIsCi0gICAg
ICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDIgZmFpbHVyZXMi
LAotICAgICAgICAgICAgICAgICIqMiBmYWlsZWQsIDIgZGVzZWxlY3RlZCBpbioiLAorICAgICAg
ICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0
LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDIgZmFpbHVyZXMgKHNraXBwZWQgMSBmaWxlKSIsCisg
ICAgICAgICAgICAgICAgIioyIGZhaWxlZCBpbioiLAogICAgICAgICAgICAgXQogICAgICAgICAp
CiAKQEAgLTM5MSw3ICs0MjcsNyBAQCBjbGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAg
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCiAgICAgICAg
ICAgICAgICAgImNvbGxlY3RlZCAyIGl0ZW1zIiwKLSAgICAgICAgICAgICAgICAicnVuLWxhc3Qt
ZmFpbHVyZTogcnVuIGFsbCAobm8gcmVjb3JkZWQgZmFpbHVyZXMpIiwKKyAgICAgICAgICAgICAg
ICAicnVuLWxhc3QtZmFpbHVyZTogMiBrbm93biBmYWlsdXJlcyBub3QgaW4gc2VsZWN0ZWQgdGVz
dHMiLAogICAgICAgICAgICAgICAgICIqMiBwYXNzZWQgaW4qIiwKICAgICAgICAgICAgIF0KICAg
ICAgICAgKQpAQCAtNDE3LDEwICs0NTMsOCBAQCBjbGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3Qp
OgogICAgIGRlZiB0ZXN0X3Rlcm1pbmFsX3JlcG9ydF9mYWlsZWRmaXJzdChzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgdGVzdF9hPSIiIgot
ICAgICAgICAgICAgZGVmIHRlc3RfYTEoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAg
ICAgICAgICAgZGVmIHRlc3RfYTIoKToKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAg
ICBkZWYgdGVzdF9hMSgpOiBhc3NlcnQgMAorICAgICAgICAgICAgZGVmIHRlc3RfYTIoKTogcGFz
cwogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpCkBAIC00NDksOCArNDgzLDggQEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToK
ICAgICAgICAgKQogCiAgICAgICAgIGRlZiBybGYoZmFpbF9pbXBvcnQsIGZhaWxfcnVuKToKLSAg
ICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRkFJTElNUE9SVCIsIGZhaWxfaW1wb3J0KQot
ICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJGQUlMVEVTVCIsIGZhaWxfcnVuKQorICAg
ICAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJGQUlMSU1QT1JUIiwgc3RyKGZhaWxfaW1wb3J0
KSkKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRkFJTFRFU1QiLCBzdHIoZmFpbF9y
dW4pKQogCiAgICAgICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXEiKQogICAgICAgICAgICAg
Y29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZ3VyZSgpCkBAIC00NjcsNyArNTAxLDYgQEAgY2xh
c3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGxpc3QobGFzdGZhaWxl
ZCkgPT0gWyJ0ZXN0X21heWJlLnB5Ojp0ZXN0X2hlbGxvIl0KIAogICAgIGRlZiB0ZXN0X2xhc3Rm
YWlsZWRfZmFpbHVyZV9zdWJzZXQoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotCiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgIHRlc3RfbWF5YmU9IiIiCiAgICAg
ICAgICAgICBpbXBvcnQgb3MKQEAgLTQ4NSw2ICs1MTgsNyBAQCBjbGFzcyBUZXN0TGFzdEZhaWxl
ZChvYmplY3QpOgogICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbgogICAgICAgICAgICAgaWYg
JzEnID09IGVudlsnRkFJTElNUE9SVCddOgogICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVy
cm9yKCdmYWlsJykKKwogICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8oKToKICAgICAgICAgICAg
ICAgICBhc3NlcnQgJzAnID09IGVudlsnRkFJTFRFU1QnXQogCkBAIC00OTQsOCArNTI4LDggQEAg
Y2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAgICAgKQogCiAgICAgICAgIGRlZiBy
bGYoZmFpbF9pbXBvcnQsIGZhaWxfcnVuLCBhcmdzPSgpKToKLSAgICAgICAgICAgIG1vbmtleXBh
dGNoLnNldGVudigiRkFJTElNUE9SVCIsIGZhaWxfaW1wb3J0KQotICAgICAgICAgICAgbW9ua2V5
cGF0Y2guc2V0ZW52KCJGQUlMVEVTVCIsIGZhaWxfcnVuKQorICAgICAgICAgICAgbW9ua2V5cGF0
Y2guc2V0ZW52KCJGQUlMSU1QT1JUIiwgc3RyKGZhaWxfaW1wb3J0KSkKKyAgICAgICAgICAgIG1v
bmtleXBhdGNoLnNldGVudigiRkFJTFRFU1QiLCBzdHIoZmFpbF9ydW4pKQogCiAgICAgICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXEiLCAiLS1sZiIsICphcmdzKQogICAgICAg
ICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZ3VyZSgpCkBAIC01MzgsMTIgKzU3Miwx
MSBAQCBjbGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwKLSAg
ICAgICAgICAgIGRlZiB0ZXN0KCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAg
ICAgIGRlZiB0ZXN0KCk6IGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKCIqMSB4ZmFpbGVkKiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIioxIHhmYWlsZWQqIl0pCiAgICAgICAgIGFzc2VydCBzZWxmLmdldF9jYWNoZWRfbGFz
dF9mYWlsZWQodGVzdGRpcikgPT0gW10KIAogICAgIGRlZiB0ZXN0X3hmYWlsX3N0cmljdF9jb25z
aWRlcmVkX2ZhaWx1cmUoc2VsZiwgdGVzdGRpcik6CkBAIC01NTEsMzkgKzU4NCwzNCBAQCBjbGFz
cyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3RyaWN0PVRydWUp
Ci0gICAgICAgICAgICBkZWYgdGVzdCgpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAg
ICAgIGRlZiB0ZXN0KCk6IHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoIioxIGZhaWxlZCoiKQotICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgc2VsZi5n
ZXRfY2FjaGVkX2xhc3RfZmFpbGVkKHRlc3RkaXIpCi0gICAgICAgICAgICA9PSBbInRlc3RfeGZh
aWxfc3RyaWN0X2NvbnNpZGVyZWRfZmFpbHVyZS5weTo6dGVzdCJdCi0gICAgICAgICkKKyAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgZmFpbGVkKiJdKQorICAgICAgICBh
c3NlcnQgc2VsZi5nZXRfY2FjaGVkX2xhc3RfZmFpbGVkKHRlc3RkaXIpID09IFsKKyAgICAgICAg
ICAgICJ0ZXN0X3hmYWlsX3N0cmljdF9jb25zaWRlcmVkX2ZhaWx1cmUucHk6OnRlc3QiCisgICAg
ICAgIF0KIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibWFyayIsIFsibWFyay54ZmFp
bCIsICJtYXJrLnNraXAiXSkKICAgICBkZWYgdGVzdF9mYWlsZWRfY2hhbmdlZF90b194ZmFpbF9v
cl9za2lwKHNlbGYsIHRlc3RkaXIsIG1hcmspOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAg
IGRlZiB0ZXN0KCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgICAgIGRlZiB0
ZXN0KCk6IGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIHNlbGYu
Z2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKQotICAgICAgICAgICAgPT0gWyJ0ZXN0X2Zh
aWxlZF9jaGFuZ2VkX3RvX3hmYWlsX29yX3NraXAucHk6OnRlc3QiXQotICAgICAgICApCisgICAg
ICAgIGFzc2VydCBzZWxmLmdldF9jYWNoZWRfbGFzdF9mYWlsZWQodGVzdGRpcikgPT0gWworICAg
ICAgICAgICAgInRlc3RfZmFpbGVkX2NoYW5nZWRfdG9feGZhaWxfb3Jfc2tpcC5weTo6dGVzdCIK
KyAgICAgICAgXQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCiAKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0CiAgICAgICAgICAgICBAcHl0ZXN0LnttYXJrfQotICAgICAgICAgICAgZGVmIHRlc3QoKToK
LSAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAgICAgZGVmIHRlc3QoKTogYXNzZXJ0
IDAKICAgICAgICAgIiIiLmZvcm1hdCgKICAgICAgICAgICAgICAgICBtYXJrPW1hcmsKICAgICAg
ICAgICAgICkKQEAgLTU5Myw3OSArNjIxLDk2IEBAIGNsYXNzIFRlc3RMYXN0RmFpbGVkKG9iamVj
dCk6CiAgICAgICAgIGFzc2VydCBzZWxmLmdldF9jYWNoZWRfbGFzdF9mYWlsZWQodGVzdGRpcikg
PT0gW10KICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJxdWlldCIsIFtUcnVlLCBGYWxzZV0pCisgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJvcHQiLCBbIi0tZmYiLCAiLS1sZiJdKQorICAgIGRlZiB0ZXN0X2xmX2FuZF9m
Zl9wcmludHNfbm9fbmVlZGxlc3NfbWVzc2FnZShzZWxmLCBxdWlldCwgb3B0LCB0ZXN0ZGlyKToK
KyAgICAgICAgIyBJc3N1ZSAzODUzCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRl
c3QoKTogYXNzZXJ0IDAiKQorICAgICAgICBhcmdzID0gW29wdF0KKyAgICAgICAgaWYgcXVpZXQ6
CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLXEiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgqYXJncykKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUo
IipydW4gYWxsKiIpCisKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3Mp
CisgICAgICAgIGlmIHF1aWV0OgorICAgICAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNo
X2xpbmUoIipydW4gYWxsKiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgInJl
cnVuIHByZXZpb3VzIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisKICAgICBkZWYgZ2V0X2NhY2hl
ZF9sYXN0X2ZhaWxlZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5w
YXJzZWNvbmZpZ3VyZSgpCiAgICAgICAgIHJldHVybiBzb3J0ZWQoY29uZmlnLmNhY2hlLmdldCgi
Y2FjaGUvbGFzdGZhaWxlZCIsIHt9KSkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2N1bXVsYXRpdmUo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IHdvcmtmbG93IHdoZXJl
IHVzZXIgZml4ZXMgZXJyb3JzIGdyYWR1YWxseSBmaWxlIGJ5IGZpbGUgdXNpbmcgLS1sZi4KLSAg
ICAgICAgIiIiCisgICAgICAgICIiIlRlc3Qgd29ya2Zsb3cgd2hlcmUgdXNlciBmaXhlcyBlcnJv
cnMgZ3JhZHVhbGx5IGZpbGUgYnkgZmlsZSB1c2luZyAtLWxmLiIiIgogICAgICAgICAjIDEuIGlu
aXRpYWwgcnVuCiAgICAgICAgIHRlc3RfYmFyID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAg
ICAgICAgdGVzdF9iYXI9IiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9iYXJfMSgpOgotICAgICAg
ICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Jhcl8yKCk6Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0IDAKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Jhcl8xKCk6IHBhc3MKKyAgICAg
ICAgICAgIGRlZiB0ZXN0X2Jhcl8yKCk6IGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICAp
CiAgICAgICAgIHRlc3RfZm9vID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgdGVz
dF9mb289IiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9mb29fMygpOgotICAgICAgICAgICAgICAg
IHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb180KCk6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IDAKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb18zKCk6IHBhc3MKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X2Zvb180KCk6IGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAg
IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIHNlbGYu
Z2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKQotICAgICAgICAgICAgPT0gWyJ0ZXN0X2Jh
ci5weTo6dGVzdF9iYXJfMiIsICJ0ZXN0X2Zvby5weTo6dGVzdF9mb29fNCJdCi0gICAgICAgICkK
KyAgICAgICAgYXNzZXJ0IHNlbGYuZ2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKSA9PSBb
CisgICAgICAgICAgICAidGVzdF9iYXIucHk6OnRlc3RfYmFyXzIiLAorICAgICAgICAgICAgInRl
c3RfZm9vLnB5Ojp0ZXN0X2Zvb180IiwKKyAgICAgICAgXQogCiAgICAgICAgICMgMi4gZml4IHRl
c3RfYmFyXzIsIHJ1biBvbmx5IHRlc3RfYmFyLnB5CiAgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgIHRlc3RfYmFyPSIiIgotICAgICAgICAgICAgZGVmIHRlc3RfYmFyXzEo
KToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBkZWYgdGVzdF9iYXJfMigpOgot
ICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Jhcl8xKCk6IHBhc3MK
KyAgICAgICAgICAgIGRlZiB0ZXN0X2Jhcl8yKCk6IHBhc3MKICAgICAgICAgIiIiCiAgICAgICAg
ICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdF9iYXIpCi0gICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjIgcGFzc2VkKiIpCisgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCoiXSkKICAgICAgICAgIyBlbnN1cmUg
Y2FjaGUgZG9lcyBub3QgZm9yZ2V0IHRoYXQgdGVzdF9mb29fNCBmYWlsZWQgb25jZSBiZWZvcmUK
ICAgICAgICAgYXNzZXJ0IHNlbGYuZ2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKSA9PSBb
InRlc3RfZm9vLnB5Ojp0ZXN0X2Zvb180Il0KIAogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLS1sYXN0LWZhaWxlZCIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygiKjEgZmFpbGVkLCAzIGRlc2VsZWN0ZWQqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQg
MSBpdGVtIiwKKyAgICAgICAgICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlv
dXMgMSBmYWlsdXJlIChza2lwcGVkIDEgZmlsZSkiLAorICAgICAgICAgICAgICAgICIqPSAxIGZh
aWxlZCBpbiAqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogICAgICAgICBhc3NlcnQgc2Vs
Zi5nZXRfY2FjaGVkX2xhc3RfZmFpbGVkKHRlc3RkaXIpID09IFsidGVzdF9mb28ucHk6OnRlc3Rf
Zm9vXzQiXQogCiAgICAgICAgICMgMy4gZml4IHRlc3RfZm9vXzQsIHJ1biBvbmx5IHRlc3RfZm9v
LnB5CiAgICAgICAgIHRlc3RfZm9vID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
dGVzdF9mb289IiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9mb29fMygpOgotICAgICAgICAgICAg
ICAgIHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb180KCk6Ci0gICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAgICAgZGVmIHRlc3RfZm9vXzMoKTogcGFzcworICAgICAgICAgICAgZGVm
IHRlc3RfZm9vXzQoKTogcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCh0ZXN0X2ZvbywgIi0tbGFzdC1mYWlsZWQiKQotICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIioxIHBhc3NlZCwgMSBkZXNlbGVjdGVkKiIp
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMgLyAxIGRlc2VsZWN0ZWQgLyAxIHNlbGVj
dGVkIiwKKyAgICAgICAgICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlvdXMg
MSBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAiKj0gMSBwYXNzZWQsIDEgZGVzZWxlY3RlZCBp
biAqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogICAgICAgICBhc3NlcnQgc2VsZi5nZXRf
Y2FjaGVkX2xhc3RfZmFpbGVkKHRlc3RkaXIpID09IFtdCiAKICAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoIi0tbGFzdC1mYWlsZWQiKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoIio0IHBhc3NlZCoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoWyIqNCBwYXNzZWQqIl0pCiAgICAgICAgIGFzc2VydCBzZWxmLmdldF9jYWNoZWRfbGFz
dF9mYWlsZWQodGVzdGRpcikgPT0gW10KIAogICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfbm9fZmFp
bHVyZXNfYmVoYXZpb3JfYWxsX3Bhc3NlZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKLSAgICAgICAgICAgIGRlZiB0ZXN0XzIoKToK
LSAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAgICAgICAgICAgZGVmIHRlc3RfMSgpOiBw
YXNzCisgICAgICAgICAgICBkZWYgdGVzdF8yKCk6IHBhc3MKICAgICAgICAgIiIiCiAgICAgICAg
ICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQpAQCAtNjc0LDE2ICs3MTks
MzggQEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkKiJdKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLS1sZiIsICItLWxmbmYiLCAiYWxsIikKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkKiJdKQorCisgICAgICAgICMgRW5zdXJlIHRoZSBs
aXN0IHBhc3NlZCB0byBweXRlc3RfZGVzZWxlY3RlZCBpcyBhIGNvcHksCisgICAgICAgICMgYW5k
IG5vdCBhIHJlZmVyZW5jZSB3aGljaCBpcyBjbGVhcmVkIHJpZ2h0IGFmdGVyLgorICAgICAgICB0
ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVzZWxl
Y3RlZCA9IFtdCisKKyAgICAgICAgICAgIGRlZiBweXRlc3RfZGVzZWxlY3RlZChpdGVtcyk6Cisg
ICAgICAgICAgICAgICAgZ2xvYmFsIGRlc2VsZWN0ZWQKKyAgICAgICAgICAgICAgICBkZXNlbGVj
dGVkID0gaXRlbXMKKworICAgICAgICAgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKCk6Cisg
ICAgICAgICAgICAgICAgcHJpbnQoIlxcbmRlc2VsZWN0ZWQ9e30iLmZvcm1hdChsZW4oZGVzZWxl
Y3RlZCkpKQorICAgICAgICAiIiIKKyAgICAgICAgKQorCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItLWxmIiwgIi0tbGZuZiIsICJub25lIikKLSAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgZGVzZWwqIl0pCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVk
IDIgaXRlbXMgLyAyIGRlc2VsZWN0ZWQiLAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWls
dXJlOiBubyBwcmV2aW91c2x5IGZhaWxlZCB0ZXN0cywgZGVzZWxlY3RpbmcgYWxsIGl0ZW1zLiIs
CisgICAgICAgICAgICAgICAgImRlc2VsZWN0ZWQ9MiIsCisgICAgICAgICAgICAgICAgIiogMiBk
ZXNlbGVjdGVkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisgICAgICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAogCiAgICAgZGVmIHRl
c3RfbGFzdGZhaWxlZF9ub19mYWlsdXJlc19iZWhhdmlvcl9lbXB0eV9jYWNoZShzZWxmLCB0ZXN0
ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAg
ICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKLSAgICAg
ICAgICAgIGRlZiB0ZXN0XzIoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAg
ICAgICAgIGRlZiB0ZXN0XzEoKTogcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfMigpOiBhc3Nl
cnQgMAogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLS1sZiIsICItLWNhY2hlLWNsZWFyIikKQEAgLTY5Myw3MSArNzYwLDI4NSBAQCBj
bGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLS1sZiIsICItLWNhY2hlLWNsZWFyIiwgIi0tbGZuZiIsICJub25lIikKICAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgZGVzZWwqIl0pCiAKKyAgICBkZWYg
dGVzdF9sYXN0ZmFpbGVkX3NraXBfY29sbGVjdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
IiIiCisgICAgICAgIFRlc3QgLS1sZiBiZWhhdmlvciByZWdhcmRpbmcgc2tpcHBpbmcgY29sbGVj
dGlvbiBvZiBmaWxlcyB0aGF0IGFyZSBub3QgbWFya2VkIGFzCisgICAgICAgIGZhaWxlZCBpbiB0
aGUgY2FjaGUgKCM1MTcyKS4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJwa2cxL3Rlc3RfMS5weSI6ICIi
IgorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgnaScsIHJhbmdlKDMpKQorICAgICAgICAgICAgICAgIGRlZiB0
ZXN0XzEoaSk6IHBhc3MKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAicGtnMi90
ZXN0XzIucHkiOiAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAg
ICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ2knLCByYW5nZSg1KSkKKyAgICAgICAg
ICAgICAgICBkZWYgdGVzdF8xKGkpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgaSBub3Qg
aW4gKDEsIDMpCisgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAg
ICAgICAgIyBmaXJzdCBydW46IGNvbGxlY3RzIDggaXRlbXMgKHRlc3RfMTogMywgdGVzdF8yOiA1
KQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhbImNvbGxlY3RlZCA4IGl0ZW1zIiwgIioyIGZhaWxlZCo2IHBh
c3NlZCoiXSkKKyAgICAgICAgIyBzZWNvbmQgcnVuOiBjb2xsZWN0cyBvbmx5IDUgaXRlbXMgZnJv
bSB0ZXN0XzIsIGJlY2F1c2UgYWxsIHRlc3RzIGZyb20gdGVzdF8xIGhhdmUgcGFzc2VkCisgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIikKKyAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xs
ZWN0ZWQgMiBpdGVtcyIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVu
IHByZXZpb3VzIDIgZmFpbHVyZXMgKHNraXBwZWQgMSBmaWxlKSIsCisgICAgICAgICAgICAgICAg
Iio9IDIgZmFpbGVkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICAgICAg
IyBhZGQgYW5vdGhlciBmaWxlIGFuZCBjaGVjayBpZiBtZXNzYWdlIGlzIGNvcnJlY3Qgd2hlbiBz
a2lwcGluZyBtb3JlIHRoYW4gMSBmaWxlCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJwa2cxL3Rlc3RfMy5weSI6ICIiIgorICAg
ICAgICAgICAgICAgIGRlZiB0ZXN0XzMoKTogcGFzcworICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICB9CisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
bGYiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAyIGl0ZW1zIiwKKyAgICAgICAgICAgICAgICAi
cnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlvdXMgMiBmYWlsdXJlcyAoc2tpcHBlZCAyIGZp
bGVzKSIsCisgICAgICAgICAgICAgICAgIio9IDIgZmFpbGVkIGluICoiLAorICAgICAgICAgICAg
XQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9sYXN0ZmFpbGVkX3dpdGhfa25vd25fZmFpbHVy
ZXNfbm90X2JlaW5nX3NlbGVjdGVkKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAicGtnMS90ZXN0XzEu
cHkiOiAiIiJkZWYgdGVzdF8xKCk6IGFzc2VydCAwIiIiLAorICAgICAgICAgICAgICAgICJwa2cx
L3Rlc3RfMi5weSI6ICIiImRlZiB0ZXN0XzIoKTogcGFzcyIiIiwKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImNvbGxlY3RlZCAyIGl0ZW1zIiwgIiogMSBmYWls
ZWQsIDEgcGFzc2VkIGluICoiXSkKKworICAgICAgICBweS5wYXRoLmxvY2FsKCJwa2cxL3Rlc3Rf
MS5weSIpLnJlbW92ZSgpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxm
IikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMSBpdGVtIiwKKyAgICAgICAgICAgICAgICAicnVu
LWxhc3QtZmFpbHVyZTogMSBrbm93biBmYWlsdXJlcyBub3QgaW4gc2VsZWN0ZWQgdGVzdHMiLAor
ICAgICAgICAgICAgICAgICIqIDEgcGFzc2VkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAg
ICApCisKKyAgICAgICAgIyBSZWNyZWF0ZSBmaWxlIHdpdGgga25vd24gZmFpbHVyZS4KKyAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKCoqeyJwa2cxL3Rlc3RfMS5weSI6ICIiImRlZiB0ZXN0XzEo
KTogYXNzZXJ0IDAiIiJ9KQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1s
ZiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDEgaXRlbSIsCisgICAgICAgICAgICAgICAgInJ1
bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDEgZmFpbHVyZSAoc2tpcHBlZCAxIGZpbGUp
IiwKKyAgICAgICAgICAgICAgICAiKiAxIGZhaWxlZCBpbiAqIiwKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgKQorCisgICAgICAgICMgUmVtb3ZlL3JlbmFtZSB0ZXN0OiBjb2xsZWN0cyB0aGUgZmls
ZSBhZ2Fpbi4KKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCoqeyJwa2cxL3Rlc3RfMS5weSI6
ICIiImRlZiB0ZXN0X3JlbmFtZWQoKTogYXNzZXJ0IDAiIiJ9KQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIsICItcmYiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAy
IGl0ZW1zIiwKKyAgICAgICAgICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogMSBrbm93biBmYWls
dXJlcyBub3QgaW4gc2VsZWN0ZWQgdGVzdHMiLAorICAgICAgICAgICAgICAgICJwa2cxL3Rlc3Rf
MS5weSBGICoiLAorICAgICAgICAgICAgICAgICJwa2cxL3Rlc3RfMi5weSAuICoiLAorICAgICAg
ICAgICAgICAgICJGQUlMRUQgcGtnMS90ZXN0XzEucHk6OnRlc3RfcmVuYW1lZCAtIGFzc2VydCAw
IiwKKyAgICAgICAgICAgICAgICAiKiAxIGZhaWxlZCwgMSBwYXNzZWQgaW4gKiIsCisgICAgICAg
ICAgICBdCisgICAgICAgICkKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LS1sZiIsICItLWNvIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMSBpdGVtIiwKKyAgICAgICAg
ICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlvdXMgMSBmYWlsdXJlIChza2lw
cGVkIDEgZmlsZSkiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICI8TW9k
dWxlIHBrZzEvdGVzdF8xLnB5PiIsCisgICAgICAgICAgICAgICAgIiAgPEZ1bmN0aW9uIHRlc3Rf
cmVuYW1lZD4iLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9sYXN0
ZmFpbGVkX2FyZ3Nfd2l0aF9kZXNlbGVjdGVkKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5v
bmU6CisgICAgICAgICIiIlRlc3QgcmVncmVzc2lvbiB3aXRoIC0tbGYgcnVubmluZyBpbnRvIE5v
TWF0Y2ggZXJyb3IuCisKKyAgICAgICAgVGhpcyB3YXMgY2F1c2VkIGJ5IGl0IG5vdCBjb2xsZWN0
aW5nIChub24tZmFpbGVkKSBub2RlcyBnaXZlbiBhcworICAgICAgICBhcmd1bWVudHMuCisgICAg
ICAgICIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAg
ICAgICAgICAgICAgICAicGtnMS90ZXN0XzEucHkiOiAiIiIKKyAgICAgICAgICAgICAgICAgICAg
ZGVmIHRlc3RfcGFzcygpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWwo
KTogYXNzZXJ0IDAKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICB9CisgICAgICAg
ICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjb2xsZWN0ZWQgMiBpdGVtcyIsICIqIDEgZmFpbGVkLCAx
IHBhc3NlZCBpbiAqIl0pCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKKworICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgicGtnMS90ZXN0XzEucHk6OnRlc3RfcGFzcyIs
ICItLWxmIiwgIi0tY28iKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAiKmNvbGxlY3RlZCAxIGl0ZW0iLAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWls
dXJlOiAxIGtub3duIGZhaWx1cmVzIG5vdCBpbiBzZWxlY3RlZCB0ZXN0cyIsCisgICAgICAgICAg
ICAgICAgIiIsCisgICAgICAgICAgICAgICAgIjxNb2R1bGUgcGtnMS90ZXN0XzEucHk+IiwKKyAg
ICAgICAgICAgICAgICAiICA8RnVuY3Rpb24gdGVzdF9wYXNzPiIsCisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgY29uc2VjdXRpdmU9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KAorICAgICAgICAgICAgInBrZzEvdGVzdF8xLnB5Ojp0ZXN0
X3Bhc3MiLCAicGtnMS90ZXN0XzEucHk6OnRlc3RfZmFpbCIsICItLWxmIiwgIi0tY28iCisgICAg
ICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxl
Y3RlZCAyIGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMSBzZWxlY3RlZCIsCisgICAgICAgICAgICAg
ICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDEgZmFpbHVyZSIsCisgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIjxNb2R1bGUgcGtnMS90ZXN0XzEucHk+IiwK
KyAgICAgICAgICAgICAgICAiICA8RnVuY3Rpb24gdGVzdF9mYWlsPiIsCisgICAgICAgICAgICAg
ICAgIio9IDEgZGVzZWxlY3RlZCBpbiAqIiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfd2l0aF9jbGFzc19pdGVtcyhzZWxmLCB0ZXN0ZGlyOiBU
ZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiJUZXN0IHJlZ3Jlc3Npb24gd2l0aCAtLWxmIGRl
c2VsZWN0aW5nIHdob2xlIGNsYXNzZXMuIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJwa2cxL3Rlc3RfMS5weSI6ICIiIgor
ICAgICAgICAgICAgICAgICAgICBjbGFzcyBUZXN0Rm9vOgorICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmIHRlc3RfcGFzcyhzZWxmKTogcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgZGVm
IHRlc3RfZmFpbChzZWxmKTogYXNzZXJ0IDAKKworICAgICAgICAgICAgICAgICAgICBkZWYgdGVz
dF9vdGhlcigpOiBhc3NlcnQgMAorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImNvbGxlY3RlZCAzIGl0ZW1zIiwgIiogMiBm
YWlsZWQsIDEgcGFzc2VkIGluICoiXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQor
CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIiwgIi0tY28iKQorICAg
ICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDMgaXRl
bXMgLyAxIGRlc2VsZWN0ZWQgLyAyIHNlbGVjdGVkIiwKKyAgICAgICAgICAgICAgICAicnVuLWxh
c3QtZmFpbHVyZTogcmVydW4gcHJldmlvdXMgMiBmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAg
IiIsCisgICAgICAgICAgICAgICAgIjxNb2R1bGUgcGtnMS90ZXN0XzEucHk+IiwKKyAgICAgICAg
ICAgICAgICAiICA8Q2xhc3MgVGVzdEZvbz4iLAorICAgICAgICAgICAgICAgICIgICAgICA8RnVu
Y3Rpb24gdGVzdF9mYWlsPiIsCisgICAgICAgICAgICAgICAgIiAgPEZ1bmN0aW9uIHRlc3Rfb3Ro
ZXI+IiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiKj0gMSBkZXNlbGVj
dGVkIGluICoiLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGNvbnNlY3V0aXZlPVRydWUs
CisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfd2l0aF9hbGxfZmlsdGVyZWQo
c2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAgICAgKip7CisgICAgICAgICAgICAgICAgInBrZzEvdGVzdF8xLnB5Ijog
IiIiCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWwoKTogYXNzZXJ0IDAKKyAgICAg
ICAgICAgICAgICAgICAgZGVmIHRlc3RfcGFzcygpOiBwYXNzCisgICAgICAgICAgICAgICAgIiIi
LAorICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiY29sbGVjdGVk
IDIgaXRlbXMiLCAiKiAxIGZhaWxlZCwgMSBwYXNzZWQgaW4gKiJdKQorICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAxCiAKLWNsYXNzIFRlc3ROZXdGaXJzdChvYmplY3QpOgorICAgICAgICAj
IFJlbW92ZSBrbm93biBmYWlsdXJlLgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAicGtnMS90ZXN0XzEucHkiOiAiIiIKKyAgICAg
ICAgICAgICAgICAgICAgZGVmIHRlc3RfcGFzcygpOiBwYXNzCisgICAgICAgICAgICAgICAgIiIi
LAorICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLWxmIiwgIi0tY28iKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAxIGl0ZW0iLAor
ICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiAxIGtub3duIGZhaWx1cmVzIG5vdCBp
biBzZWxlY3RlZCB0ZXN0cyIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAg
IjxNb2R1bGUgcGtnMS90ZXN0XzEucHk+IiwKKyAgICAgICAgICAgICAgICAiICA8RnVuY3Rpb24g
dGVzdF9wYXNzPiIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIio9IG5v
IHRlc3RzIHJhbiBpbioiLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGNvbnNlY3V0aXZl
PVRydWUsCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCisKK2Ns
YXNzIFRlc3ROZXdGaXJzdDoKICAgICBkZWYgdGVzdF9uZXdmaXJzdF91c2VjYXNlKHNlbGYsIHRl
c3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAqKnsKICAg
ICAgICAgICAgICAgICAidGVzdF8xL3Rlc3RfMS5weSI6ICIiIgogICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0XzEoKTogYXNzZXJ0IDEKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF8yKCk6IGFzc2Vy
dCAxCi0gICAgICAgICAgICAgICAgZGVmIHRlc3RfMygpOiBhc3NlcnQgMQogICAgICAgICAgICAg
IiIiLAogICAgICAgICAgICAgICAgICJ0ZXN0XzIvdGVzdF8yLnB5IjogIiIiCiAgICAgICAgICAg
ICAgICAgZGVmIHRlc3RfMSgpOiBhc3NlcnQgMQotICAgICAgICAgICAgICAgIGRlZiB0ZXN0XzIo
KTogYXNzZXJ0IDEKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF8zKCk6IGFzc2VydCAxCiAgICAg
ICAgICAgICAiIiIsCiAgICAgICAgICAgICB9CiAgICAgICAgICkKLQogICAgICAgICB0ZXN0ZGly
LnRtcGRpci5qb2luKCJ0ZXN0XzEvdGVzdF8xLnB5Iikuc2V0bXRpbWUoMSkKIAogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVz
dF8xLnB5Ojp0ZXN0XzEgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVzdF8x
LnB5Ojp0ZXN0XzIgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVzdF8xLnB5
Ojp0ZXN0XzMgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0
ZXN0XzEgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0
XzIgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzMg
UEFTU0VEKiIsCi0gICAgICAgICAgICBdCisgICAgICAgICAgICBbIip0ZXN0XzEvdGVzdF8xLnB5
Ojp0ZXN0XzEgUEFTU0VEKiIsICIqdGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8xIFBBU1NFRCoiXQog
ICAgICAgICApCiAKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi0t
bmYiKQotCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAiKnRlc3RfMi90ZXN0XzIucHk6OnRlc3RfMSBQQVNTRUQqIiwK
LSAgICAgICAgICAgICAgICAiKnRlc3RfMi90ZXN0XzIucHk6OnRlc3RfMiBQQVNTRUQqIiwKLSAg
ICAgICAgICAgICAgICAiKnRlc3RfMi90ZXN0XzIucHk6OnRlc3RfMyBQQVNTRUQqIiwKLSAgICAg
ICAgICAgICAgICAiKnRlc3RfMS90ZXN0XzEucHk6OnRlc3RfMSBQQVNTRUQqIiwKLSAgICAgICAg
ICAgICAgICAiKnRlc3RfMS90ZXN0XzEucHk6OnRlc3RfMiBQQVNTRUQqIiwKLSAgICAgICAgICAg
ICAgICAiKnRlc3RfMS90ZXN0XzEucHk6OnRlc3RfMyBQQVNTRUQqIiwKLSAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIFsiKnRlc3RfMi90ZXN0XzIucHk6OnRlc3RfMSBQQVNTRUQqIiwgIip0ZXN0
XzEvdGVzdF8xLnB5Ojp0ZXN0XzEgUEFTU0VEKiJdCiAgICAgICAgICkKIAogICAgICAgICB0ZXN0
ZGlyLnRtcGRpci5qb2luKCJ0ZXN0XzEvdGVzdF8xLnB5Iikud3JpdGUoCi0gICAgICAgICAgICAi
ZGVmIHRlc3RfMSgpOiBhc3NlcnQgMVxuIgotICAgICAgICAgICAgImRlZiB0ZXN0XzIoKTogYXNz
ZXJ0IDFcbiIKLSAgICAgICAgICAgICJkZWYgdGVzdF8zKCk6IGFzc2VydCAxXG4iCi0gICAgICAg
ICAgICAiZGVmIHRlc3RfNCgpOiBhc3NlcnQgMVxuIgorICAgICAgICAgICAgImRlZiB0ZXN0XzEo
KTogYXNzZXJ0IDFcbiIgImRlZiB0ZXN0XzIoKTogYXNzZXJ0IDFcbiIKICAgICAgICAgKQogICAg
ICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0XzEvdGVzdF8xLnB5Iikuc2V0bXRpbWUoMSkK
IAotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLS1uZiIpCisgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLW5mIiwgIi0tY29sbGVjdC1vbmx5Iiwg
Ii1xIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICJ0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzIiLAorICAgICAgICAg
ICAgICAgICJ0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzEiLAorICAgICAgICAgICAgICAgICJ0ZXN0
XzEvdGVzdF8xLnB5Ojp0ZXN0XzEiLAorICAgICAgICAgICAgXQorICAgICAgICApCiAKKyAgICAg
ICAgIyBOZXdlc3QgZmlyc3Qgd2l0aCAocGx1Z2luKSBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlp
dGVtcyBob29rLgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICBteXBs
dWdpbj0iIiIKKyAgICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhp
dGVtcyk6CisgICAgICAgICAgICAgICAgaXRlbXNbOl0gPSBzb3J0ZWQoaXRlbXMsIGtleT1sYW1i
ZGEgaXRlbTogaXRlbS5ub2RlaWQpCisgICAgICAgICAgICAgICAgcHJpbnQoIm5ld19pdGVtczoi
LCBbeC5ub2RlaWQgZm9yIHggaW4gaXRlbXNdKQorICAgICAgICAgICAgIiIiCisgICAgICAgICkK
KyAgICAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tbmYiLCAiLXAiLCAibXlwbHVnaW4iLCAiLS1jb2xsZWN0LW9ubHkiLCAi
LXEiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzQgUEFTU0VEKiIsCi0g
ICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzEgUEFTU0VEKiIsCi0gICAg
ICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzIgUEFTU0VEKiIsCi0gICAgICAg
ICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzMgUEFTU0VEKiIsCi0gICAgICAgICAg
ICAgICAgIip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzEgUEFTU0VEKiIsCi0gICAgICAgICAgICAg
ICAgIip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzIgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAg
Iip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzMgUEFTU0VEKiIsCisgICAgICAgICAgICAgICAgIm5l
d19pdGVtczogKnRlc3RfMS5weSp0ZXN0XzEucHkqdGVzdF8yLnB5KiIsCisgICAgICAgICAgICAg
ICAgInRlc3RfMS90ZXN0XzEucHk6OnRlc3RfMiIsCisgICAgICAgICAgICAgICAgInRlc3RfMi90
ZXN0XzIucHk6OnRlc3RfMSIsCisgICAgICAgICAgICAgICAgInRlc3RfMS90ZXN0XzEucHk6OnRl
c3RfMSIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIApAQCAtNzkwLDcgKzEwNzEsNiBAQCBj
bGFzcyBUZXN0TmV3Rmlyc3Qob2JqZWN0KToKICAgICAgICAgKQogCiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsICItLW5mIikKLQogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgIip0ZXN0XzIv
dGVzdF8yLnB5Ojp0ZXN0XzFbMSoiLApAQCAtODA3LDggKzEwODcsMTMgQEAgY2xhc3MgVGVzdE5l
d0ZpcnN0KG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigi
dGVzdF8xL3Rlc3RfMS5weSIpLnNldG10aW1lKDEpCiAKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi12IiwgIi0tbmYiKQorICAgICAgICAjIFJ1bm5pbmcgb25seSBhIHN1YnNl
dCBkb2VzIG5vdCBmb3JnZXQgYWJvdXQgZXhpc3Rpbmcgb25lcy4KKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi0tbmYiLCAidGVzdF8yL3Rlc3RfMi5weSIpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsiKnRlc3RfMi90
ZXN0XzIucHk6OnRlc3RfMVsxKiIsICIqdGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8xWzIqIl0KKyAg
ICAgICAgKQogCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsICItLW5m
IikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwog
ICAgICAgICAgICAgICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xWzMqIiwKQEAgLTgxOCwz
ICsxMTAzLDY3IEBAIGNsYXNzIFRlc3ROZXdGaXJzdChvYmplY3QpOgogICAgICAgICAgICAgICAg
ICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xWzIqIiwKICAgICAgICAgICAgIF0KICAgICAgICAg
KQorCisKK2NsYXNzIFRlc3RSZWFkbWU6CisgICAgZGVmIGNoZWNrX3JlYWRtZShzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZ3VyZSgpCisgICAgICAg
IHJlYWRtZSA9IGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIuam9pbnBhdGgoIlJFQURNRS5tZCIpCisg
ICAgICAgIHJldHVybiByZWFkbWUuaXNfZmlsZSgpCisKKyAgICBkZWYgdGVzdF9yZWFkbWVfcGFz
c2VkKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0
X2Fsd2F5c19wYXNzZXMoKTogcGFzcyIpCisgICAgICAgIHRlc3RkaXIucnVucHl0ZXN0KCkKKyAg
ICAgICAgYXNzZXJ0IHNlbGYuY2hlY2tfcmVhZG1lKHRlc3RkaXIpIGlzIFRydWUKKworICAgIGRl
ZiB0ZXN0X3JlYWRtZV9mYWlsZWQoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgiZGVmIHRlc3RfYWx3YXlzX2ZhaWxzKCk6IGFzc2VydCAwIikKKyAgICAgICAgdGVz
dGRpci5ydW5weXRlc3QoKQorICAgICAgICBhc3NlcnQgc2VsZi5jaGVja19yZWFkbWUodGVzdGRp
cikgaXMgVHJ1ZQorCisKK2RlZiB0ZXN0X2dpdGlnbm9yZSh0ZXN0ZGlyKToKKyAgICAiIiJFbnN1
cmUgd2UgYXV0b21hdGljYWxseSBjcmVhdGUgLmdpdGlnbm9yZSBmaWxlIGluIHRoZSBweXRlc3Rf
Y2FjaGUgZGlyZWN0b3J5ICgjMzI4NikuIiIiCisgICAgZnJvbSBfcHl0ZXN0LmNhY2hlcHJvdmlk
ZXIgaW1wb3J0IENhY2hlCisKKyAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKKyAg
ICBjYWNoZSA9IENhY2hlLmZvcl9jb25maWcoY29uZmlnKQorICAgIGNhY2hlLnNldCgiZm9vIiwg
ImJhciIpCisgICAgbXNnID0gIiMgQ3JlYXRlZCBieSBweXRlc3QgYXV0b21hdGljYWxseS5cbipc
biIKKyAgICBnaXRpZ25vcmVfcGF0aCA9IGNhY2hlLl9jYWNoZWRpci5qb2lucGF0aCgiLmdpdGln
bm9yZSIpCisgICAgYXNzZXJ0IGdpdGlnbm9yZV9wYXRoLnJlYWRfdGV4dChlbmNvZGluZz0iVVRG
LTgiKSA9PSBtc2cKKworICAgICMgRG9lcyBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nL2N1c3RvbSBv
bmUuCisgICAgZ2l0aWdub3JlX3BhdGgud3JpdGVfdGV4dCgiY3VzdG9tIikKKyAgICBjYWNoZS5z
ZXQoInNvbWV0aGluZyIsICJlbHNlIikKKyAgICBhc3NlcnQgZ2l0aWdub3JlX3BhdGgucmVhZF90
ZXh0KGVuY29kaW5nPSJVVEYtOCIpID09ICJjdXN0b20iCisKKworZGVmIHRlc3RfZG9lc19ub3Rf
Y3JlYXRlX2JvaWxlcnBsYXRlX2luX2V4aXN0aW5nX2RpcnModGVzdGRpcik6CisgICAgZnJvbSBf
cHl0ZXN0LmNhY2hlcHJvdmlkZXIgaW1wb3J0IENhY2hlCisKKyAgICB0ZXN0ZGlyLm1ha2Vpbmko
CisgICAgICAgICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAgICBjYWNoZV9kaXIgPSAuCisg
ICAgICAgICIiIgorICAgICkKKyAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKKyAg
ICBjYWNoZSA9IENhY2hlLmZvcl9jb25maWcoY29uZmlnKQorICAgIGNhY2hlLnNldCgiZm9vIiwg
ImJhciIpCisKKyAgICBhc3NlcnQgb3MucGF0aC5pc2RpcigidiIpICAjIGNhY2hlIGNvbnRlbnRz
CisgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cygiLmdpdGlnbm9yZSIpCisgICAgYXNzZXJ0
IG5vdCBvcy5wYXRoLmV4aXN0cygiUkVBRE1FLm1kIikKKworCitkZWYgdGVzdF9jYWNoZWRpcl90
YWcodGVzdGRpcik6CisgICAgIiIiRW5zdXJlIHdlIGF1dG9tYXRpY2FsbHkgY3JlYXRlIENBQ0hF
RElSLlRBRyBmaWxlIGluIHRoZSBweXRlc3RfY2FjaGUgZGlyZWN0b3J5ICgjNDI3OCkuIiIiCisg
ICAgZnJvbSBfcHl0ZXN0LmNhY2hlcHJvdmlkZXIgaW1wb3J0IENhY2hlCisgICAgZnJvbSBfcHl0
ZXN0LmNhY2hlcHJvdmlkZXIgaW1wb3J0IENBQ0hFRElSX1RBR19DT05URU5UCisKKyAgICBjb25m
aWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKKyAgICBjYWNoZSA9IENhY2hlLmZvcl9jb25maWco
Y29uZmlnKQorICAgIGNhY2hlLnNldCgiZm9vIiwgImJhciIpCisgICAgY2FjaGVkaXJfdGFnX3Bh
dGggPSBjYWNoZS5fY2FjaGVkaXIuam9pbnBhdGgoIkNBQ0hFRElSLlRBRyIpCisgICAgYXNzZXJ0
IGNhY2hlZGlyX3RhZ19wYXRoLnJlYWRfYnl0ZXMoKSA9PSBDQUNIRURJUl9UQUdfQ09OVEVOVApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhcHR1cmUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfY2FwdHVyZS5weQppbmRleCBlMTRiM2FmNzg1MTcuLjVmODIwZDg0
NjViNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhcHR1cmUucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhcHR1cmUucHkKQEAgLTEsMTAzICsxLDk1IEBA
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50
X2Z1bmN0aW9uCi0KLSMgbm90ZTogcHkuaW8gY2FwdHVyZSB0ZXN0cyB3aGVyZSBjb3BpZWQgZnJv
bQotIyBweWxpYiAxLjQuMjAuZGV2MiAocmV2IDEzZDlhZjk1NTQ3ZSkKLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9ydCBwaWNrbGUKK2ltcG9ydCBjb250ZXh0bGli
CitpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2lt
cG9ydCB0ZXh0d3JhcAogZnJvbSBpbyBpbXBvcnQgVW5zdXBwb3J0ZWRPcGVyYXRpb24KK2Zyb20g
dHlwaW5nIGltcG9ydCBCaW5hcnlJTworZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlw
aW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBUZXh0SU8KIAotaW1wb3J0
IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQogaW1wb3J0IHB5dGVzdAotaW1wb3J0IGNvbnRleHRs
aWIKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCiBmcm9tIF9weXRlc3Qg
aW1wb3J0IGNhcHR1cmUKK2Zyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBfZ2V0X211bHRpY2Fw
dHVyZQogZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IENhcHR1cmVNYW5hZ2VyCi1mcm9tIF9w
eXRlc3QubWFpbiBpbXBvcnQgRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0KLQotbmVlZHNvc2R1cCA9
IHB5dGVzdC5tYXJrLnhmYWlsKCJub3QgaGFzYXR0cihvcywgJ2R1cCcpIikKLQotCi1kZWYgdG9i
eXRlcyhvYmopOgotICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0ZXh0X3R5cGUpOgotICAgICAgICBv
YmogPSBvYmouZW5jb2RlKCJVVEYtOCIpCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2Uob2JqLCBiaW5h
cnlfdHlwZSkKLSAgICByZXR1cm4gb2JqCi0KLQotZGVmIHRvdGV4dChvYmopOgotICAgIGlmIGlz
aW5zdGFuY2Uob2JqLCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgIG9iaiA9IHRleHRfdHlwZShvYmos
ICJVVEYtOCIpCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2Uob2JqLCB0ZXh0X3R5cGUpCi0gICAgcmV0
dXJuIG9iagotCi0KLWRlZiBvc3dyaXRlYnl0ZXMoZmQsIG9iaik6Ci0gICAgb3Mud3JpdGUoZmQs
IHRvYnl0ZXMob2JqKSkKK2Zyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBDYXB0dXJlUmVzdWx0
Citmcm9tIF9weXRlc3QuY2FwdHVyZSBpbXBvcnQgTXVsdGlDYXB0dXJlCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0
ZGlyCiAKKyMgbm90ZTogcHkuaW8gY2FwdHVyZSB0ZXN0cyB3aGVyZSBjb3BpZWQgZnJvbQorIyBw
eWxpYiAxLjQuMjAuZGV2MiAocmV2IDEzZDlhZjk1NTQ3ZSkKIAotZGVmIFN0ZENhcHR1cmVGRChv
dXQ9VHJ1ZSwgZXJyPVRydWUsIGluXz1UcnVlKToKLSAgICByZXR1cm4gY2FwdHVyZS5NdWx0aUNh
cHR1cmUob3V0LCBlcnIsIGluXywgQ2FwdHVyZT1jYXB0dXJlLkZEQ2FwdHVyZSkKIAorZGVmIFN0
ZENhcHR1cmVGRCgKKyAgICBvdXQ6IGJvb2wgPSBUcnVlLCBlcnI6IGJvb2wgPSBUcnVlLCBpbl86
IGJvb2wgPSBUcnVlCispIC0+IE11bHRpQ2FwdHVyZVtzdHJdOgorICAgIHJldHVybiBjYXB0dXJl
Lk11bHRpQ2FwdHVyZSgKKyAgICAgICAgaW5fPWNhcHR1cmUuRkRDYXB0dXJlKDApIGlmIGluXyBl
bHNlIE5vbmUsCisgICAgICAgIG91dD1jYXB0dXJlLkZEQ2FwdHVyZSgxKSBpZiBvdXQgZWxzZSBO
b25lLAorICAgICAgICBlcnI9Y2FwdHVyZS5GRENhcHR1cmUoMikgaWYgZXJyIGVsc2UgTm9uZSwK
KyAgICApCiAKLWRlZiBTdGRDYXB0dXJlKG91dD1UcnVlLCBlcnI9VHJ1ZSwgaW5fPVRydWUpOgot
ICAgIHJldHVybiBjYXB0dXJlLk11bHRpQ2FwdHVyZShvdXQsIGVyciwgaW5fLCBDYXB0dXJlPWNh
cHR1cmUuU3lzQ2FwdHVyZSkKIAorZGVmIFN0ZENhcHR1cmUoCisgICAgb3V0OiBib29sID0gVHJ1
ZSwgZXJyOiBib29sID0gVHJ1ZSwgaW5fOiBib29sID0gVHJ1ZQorKSAtPiBNdWx0aUNhcHR1cmVb
c3RyXToKKyAgICByZXR1cm4gY2FwdHVyZS5NdWx0aUNhcHR1cmUoCisgICAgICAgIGluXz1jYXB0
dXJlLlN5c0NhcHR1cmUoMCkgaWYgaW5fIGVsc2UgTm9uZSwKKyAgICAgICAgb3V0PWNhcHR1cmUu
U3lzQ2FwdHVyZSgxKSBpZiBvdXQgZWxzZSBOb25lLAorICAgICAgICBlcnI9Y2FwdHVyZS5TeXND
YXB0dXJlKDIpIGlmIGVyciBlbHNlIE5vbmUsCisgICAgKQogCi1jbGFzcyBUZXN0Q2FwdHVyZU1h
bmFnZXIob2JqZWN0KToKIAotICAgIGRlZiB0ZXN0X2dldG1ldGhvZF9kZWZhdWx0X25vX2ZkKHNl
bGYsIG1vbmtleXBhdGNoKToKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IHB5
dGVzdF9hZGRvcHRpb24KLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGlt
cG9ydCBQYXJzZXIKK2RlZiBUZWVTdGRDYXB0dXJlKAorICAgIG91dDogYm9vbCA9IFRydWUsIGVy
cjogYm9vbCA9IFRydWUsIGluXzogYm9vbCA9IFRydWUKKykgLT4gTXVsdGlDYXB0dXJlW3N0cl06
CisgICAgcmV0dXJuIGNhcHR1cmUuTXVsdGlDYXB0dXJlKAorICAgICAgICBpbl89Y2FwdHVyZS5T
eXNDYXB0dXJlKDAsIHRlZT1UcnVlKSBpZiBpbl8gZWxzZSBOb25lLAorICAgICAgICBvdXQ9Y2Fw
dHVyZS5TeXNDYXB0dXJlKDEsIHRlZT1UcnVlKSBpZiBvdXQgZWxzZSBOb25lLAorICAgICAgICBl
cnI9Y2FwdHVyZS5TeXNDYXB0dXJlKDIsIHRlZT1UcnVlKSBpZiBlcnIgZWxzZSBOb25lLAorICAg
ICkKIAotICAgICAgICBwYXJzZXIgPSBQYXJzZXIoKQotICAgICAgICBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcikKLSAgICAgICAgZGVmYXVsdCA9IHBhcnNlci5fZ3JvdXBzWzBdLm9wdGlvbnNbMF0u
ZGVmYXVsdAotICAgICAgICBhc3NlcnQgZGVmYXVsdCA9PSAiZmQiIGlmIGhhc2F0dHIob3MsICJk
dXAiKSBlbHNlICJzeXMiCi0gICAgICAgIHBhcnNlciA9IFBhcnNlcigpCi0gICAgICAgIG1vbmtl
eXBhdGNoLmRlbGF0dHIob3MsICJkdXAiLCByYWlzaW5nPUZhbHNlKQotICAgICAgICBweXRlc3Rf
YWRkb3B0aW9uKHBhcnNlcikKLSAgICAgICAgYXNzZXJ0IHBhcnNlci5fZ3JvdXBzWzBdLm9wdGlv
bnNbMF0uZGVmYXVsdCA9PSAic3lzIgogCi0gICAgQG5lZWRzb3NkdXAKLSAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoCi0gICAgICAgICJtZXRob2QiLCBbIm5vIiwgInN5cyIsIHB5dGVzdC5t
YXJrLnNraXBpZignbm90IGhhc2F0dHIob3MsICJkdXAiKScsICJmZCIpXQotICAgICkKK2NsYXNz
IFRlc3RDYXB0dXJlTWFuYWdlcjoKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1ldGhv
ZCIsIFsibm8iLCAic3lzIiwgImZkIl0pCiAgICAgZGVmIHRlc3RfY2FwdHVyaW5nX2Jhc2ljX2Fw
aShzZWxmLCBtZXRob2QpOgogICAgICAgICBjYXBvdXRlciA9IFN0ZENhcHR1cmVGRCgpCiAgICAg
ICAgIG9sZCA9IHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIsIHN5cy5zdGRpbgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBjYXBtYW4gPSBDYXB0dXJlTWFuYWdlcihtZXRob2QpCiAgICAgICAgICAg
ICBjYXBtYW4uc3RhcnRfZ2xvYmFsX2NhcHR1cmluZygpCi0gICAgICAgICAgICBvdXRlcnIgPSBj
YXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBjYXBtYW4uc3VzcGVu
ZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBvdXRlcnIgPSBjYXBtYW4ucmVhZF9nbG9i
YWxfY2FwdHVyZSgpCiAgICAgICAgICAgICBhc3NlcnQgb3V0ZXJyID09ICgiIiwgIiIpCi0gICAg
ICAgICAgICBvdXRlcnIgPSBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAg
ICAgICBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBvdXRlcnIg
PSBjYXBtYW4ucmVhZF9nbG9iYWxfY2FwdHVyZSgpCiAgICAgICAgICAgICBhc3NlcnQgb3V0ZXJy
ID09ICgiIiwgIiIpCiAgICAgICAgICAgICBwcmludCgiaGVsbG8iKQotICAgICAgICAgICAgb3V0
LCBlcnIgPSBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBjYXBt
YW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBvdXQsIGVyciA9IGNhcG1h
bi5yZWFkX2dsb2JhbF9jYXB0dXJlKCkKICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAibm8iOgog
ICAgICAgICAgICAgICAgIGFzc2VydCBvbGQgPT0gKHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIsIHN5
cy5zdGRpbikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBv
dXQKICAgICAgICAgICAgIGNhcG1hbi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQogICAgICAgICAg
ICAgcHJpbnQoImhlbGxvIikKLSAgICAgICAgICAgIG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRf
Z2xvYmFsX2NhcHR1cmUoKQorICAgICAgICAgICAgY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1
cmUoKQorICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4ucmVhZF9nbG9iYWxfY2FwdHVyZSgp
CiAgICAgICAgICAgICBpZiBtZXRob2QgIT0gIm5vIjoKICAgICAgICAgICAgICAgICBhc3NlcnQg
b3V0ID09ICJoZWxsb1xuIgogICAgICAgICAgICAgY2FwbWFuLnN0b3BfZ2xvYmFsX2NhcHR1cmlu
ZygpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBjYXBvdXRlci5zdG9wX2NhcHR1cmlu
ZygpCiAKLSAgICBAbmVlZHNvc2R1cAogICAgIGRlZiB0ZXN0X2luaXRfY2FwdHVyaW5nKHNlbGYp
OgogICAgICAgICBjYXBvdXRlciA9IFN0ZENhcHR1cmVGRCgpCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIGNhcG1hbiA9IENhcHR1cmVNYW5hZ2VyKCJmZCIpCiAgICAgICAgICAgICBjYXBtYW4u
c3RhcnRfZ2xvYmFsX2NhcHR1cmluZygpCi0gICAgICAgICAgICBweXRlc3QucmFpc2VzKEFzc2Vy
dGlvbkVycm9yLCAiY2FwbWFuLnN0YXJ0X2dsb2JhbF9jYXB0dXJpbmcoKSIpCisgICAgICAgICAg
ICBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBjYXBtYW4uc3RhcnRfZ2xvYmFsX2NhcHR1
cmluZykKICAgICAgICAgICAgIGNhcG1hbi5zdG9wX2dsb2JhbF9jYXB0dXJpbmcoKQogICAgICAg
ICBmaW5hbGx5OgogICAgICAgICAgICAgY2Fwb3V0ZXIuc3RvcF9jYXB0dXJpbmcoKQpAQCAtMTA1
LDIxICs5NywxNSBAQCBjbGFzcyBUZXN0Q2FwdHVyZU1hbmFnZXIob2JqZWN0KToKIAogQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJtZXRob2QiLCBbImZkIiwgInN5cyJdKQogZGVmIHRlc3RfY2Fw
dHVyaW5nX3VuaWNvZGUodGVzdGRpciwgbWV0aG9kKToKLSAgICBpZiBoYXNhdHRyKHN5cywgInB5
cHlfdmVyc2lvbl9pbmZvIikgYW5kIHN5cy5weXB5X3ZlcnNpb25faW5mbyA8ICgyLCAyKToKLSAg
ICAgICAgcHl0ZXN0LnhmYWlsKCJkb2VzIG5vdCB3b3JrIG9uIHB5cHkgPCAyLjIiKQotICAgIGlm
IHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApOgotICAgICAgICBvYmogPSAiJ2JcdTAwZjZ5JyIK
LSAgICBlbHNlOgotICAgICAgICBvYmogPSAidSdcdTAwZjZ5JyIKKyAgICBvYmogPSAiJ2JcdTAw
ZjZ5JyIKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICAjIGNv
ZGluZz11dGY4CisgICAgICAgICIiIlwKICAgICAgICAgIyB0YWtlbiBmcm9tIGlzc3VlIDIyNyBm
cm9tIG5vc2V0ZXN0cwogICAgICAgICBkZWYgdGVzdF91bmljb2RlKCk6CiAgICAgICAgICAgICBp
bXBvcnQgc3lzCi0gICAgICAgICAgICBwcmludCAoc3lzLnN0ZG91dCkKLSAgICAgICAgICAgIHBy
aW50ICglcykKLSAgICAiIiIKKyAgICAgICAgICAgIHByaW50KHN5cy5zdGRvdXQpCisgICAgICAg
ICAgICBwcmludCglcykKKyAgICAgICAgIiIiCiAgICAgICAgICUgb2JqCiAgICAgKQogICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNhcHR1cmU9JXMiICUgbWV0aG9kKQpAQCAtMTI5
LDEwICsxMTUsMTAgQEAgZGVmIHRlc3RfY2FwdHVyaW5nX3VuaWNvZGUodGVzdGRpciwgbWV0aG9k
KToKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibWV0aG9kIiwgWyJmZCIsICJzeXMiXSkKIGRl
ZiB0ZXN0X2NhcHR1cmluZ19ieXRlc19pbl91dGY4X2VuY29kaW5nKHRlc3RkaXIsIG1ldGhvZCk6
CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKKyAgICAgICAgIiIiXAogICAg
ICAgICBkZWYgdGVzdF91bmljb2RlKCk6Ci0gICAgICAgICAgICBwcmludCAoJ2JcXHUwMGY2eScp
Ci0gICAgIiIiCisgICAgICAgICAgICBwcmludCgnYlxcdTAwZjZ5JykKKyAgICAgICAgIiIiCiAg
ICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNhcHR1cmU9JXMiICUgbWV0
aG9kKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKQEAg
LTE0MSwyOCArMTI3LDM3IEBAIGRlZiB0ZXN0X2NhcHR1cmluZ19ieXRlc19pbl91dGY4X2VuY29k
aW5nKHRlc3RkaXIsIG1ldGhvZCk6CiBkZWYgdGVzdF9jb2xsZWN0X2NhcHR1cmluZyh0ZXN0ZGly
KToKICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKLSAgICAgICAgcHJp
bnQgKCJjb2xsZWN0ICVzIGZhaWx1cmUiICUgMTMpCisgICAgICAgIGltcG9ydCBzeXMKKworICAg
ICAgICBwcmludCgiY29sbGVjdCAlcyBmYWlsdXJlIiAlIDEzKQorICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCJjb2xsZWN0ICVzX3N0ZGVyciBmYWlsdXJlIiAlIDEzKQogICAgICAgICBpbXBvcnQg
eHl6NDIxMjMKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
cCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqQ2FwdHVyZWQgc3Rkb3V0KiIs
ICIqY29sbGVjdCAxMyBmYWlsdXJlKiJdKQotCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKkNhcHR1cmVkIHN0ZG91dCoiLAorICAgICAg
ICAgICAgImNvbGxlY3QgMTMgZmFpbHVyZSIsCisgICAgICAgICAgICAiKkNhcHR1cmVkIHN0ZGVy
cioiLAorICAgICAgICAgICAgImNvbGxlY3QgMTNfc3RkZXJyIGZhaWx1cmUiLAorICAgICAgICBd
CisgICAgKQogCi1jbGFzcyBUZXN0UGVyVGVzdENhcHR1cmluZyhvYmplY3QpOgogCitjbGFzcyBU
ZXN0UGVyVGVzdENhcHR1cmluZzoKICAgICBkZWYgdGVzdF9jYXB0dXJlX2FuZF9maXh0dXJlcyhz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgZGVmIHNldHVwX21vZHVsZShtb2QpOgotICAgICAgICAgICAg
ICAgIHByaW50ICgic2V0dXAgbW9kdWxlIikKKyAgICAgICAgICAgICAgICBwcmludCgic2V0dXAg
bW9kdWxlIikKICAgICAgICAgICAgIGRlZiBzZXR1cF9mdW5jdGlvbihmdW5jdGlvbik6Ci0gICAg
ICAgICAgICAgICAgcHJpbnQgKCJzZXR1cCAiICsgZnVuY3Rpb24uX19uYW1lX18pCisgICAgICAg
ICAgICAgICAgcHJpbnQoInNldHVwICIgKyBmdW5jdGlvbi5fX25hbWVfXykKICAgICAgICAgICAg
IGRlZiB0ZXN0X2Z1bmMxKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJpbiBmdW5jMSIpCisg
ICAgICAgICAgICAgICAgcHJpbnQoImluIGZ1bmMxIikKICAgICAgICAgICAgICAgICBhc3NlcnQg
MAogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzIoKToKLSAgICAgICAgICAgICAgICBwcmludCAo
ImluIGZ1bmMyIikKKyAgICAgICAgICAgICAgICBwcmludCgiaW4gZnVuYzIiKQogICAgICAgICAg
ICAgICAgIGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICApCkBAIC0xODMsMTQgKzE3OCwx
NCBAQCBjbGFzcyBUZXN0UGVyVGVzdENhcHR1cmluZyhvYmplY3QpOgogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgICAgICBkZWYgc2V0dXBfbW9kdWxlKGZ1
bmMpOgotICAgICAgICAgICAgICAgIHByaW50ICgibW9kdWxlLXNldHVwIikKKyAgICAgICAgICAg
ICAgICBwcmludCgibW9kdWxlLXNldHVwIikKICAgICAgICAgICAgIGRlZiBzZXR1cF9mdW5jdGlv
bihmdW5jKToKLSAgICAgICAgICAgICAgICBwcmludCAoImZ1bmN0aW9uLXNldHVwIikKKyAgICAg
ICAgICAgICAgICBwcmludCgiZnVuY3Rpb24tc2V0dXAiKQogICAgICAgICAgICAgZGVmIHRlc3Rf
ZnVuYygpOgotICAgICAgICAgICAgICAgIHByaW50ICgiaW4gZnVuY3Rpb24iKQorICAgICAgICAg
ICAgICAgIHByaW50KCJpbiBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKICAg
ICAgICAgICAgIGRlZiB0ZWFyZG93bl9mdW5jdGlvbihmdW5jKToKLSAgICAgICAgICAgICAgICBw
cmludCAoImluIHRlYXJkb3duIikKKyAgICAgICAgICAgICAgICBwcmludCgiaW4gdGVhcmRvd24i
KQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdChwKQpAQCAtMjA5LDkgKzIwNCw5IEBAIGNsYXNzIFRlc3RQZXJUZXN0Q2FwdHVyaW5nKG9i
amVjdCk6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIK
ICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMxKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJp
biBmdW5jMSIpCisgICAgICAgICAgICAgICAgcHJpbnQoImluIGZ1bmMxIikKICAgICAgICAgICAg
IGRlZiB0ZXN0X2Z1bmMyKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJpbiBmdW5jMiIpCisg
ICAgICAgICAgICAgICAgcHJpbnQoImluIGZ1bmMyIikKICAgICAgICAgICAgICAgICBhc3NlcnQg
MAogICAgICAgICAiIiIKICAgICAgICAgKQpAQCAtMjI0LDEyICsyMTksMTIgQEAgY2xhc3MgVGVz
dFBlclRlc3RDYXB0dXJpbmcob2JqZWN0KToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHNldHVwX2Z1bmN0aW9uKGZ1bmN0
aW9uKToKLSAgICAgICAgICAgICAgICBwcmludCAoInNldHVwIGZ1bmMxIikKKyAgICAgICAgICAg
ICAgICBwcmludCgic2V0dXAgZnVuYzEiKQogICAgICAgICAgICAgZGVmIHRlYXJkb3duX2Z1bmN0
aW9uKGZ1bmN0aW9uKToKLSAgICAgICAgICAgICAgICBwcmludCAoInRlYXJkb3duIGZ1bmMxIikK
KyAgICAgICAgICAgICAgICBwcmludCgidGVhcmRvd24gZnVuYzEiKQogICAgICAgICAgICAgICAg
IGFzc2VydCAwCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMSgpOgotICAgICAgICAgICAgICAg
IHByaW50ICgiaW4gZnVuYzEiKQorICAgICAgICAgICAgICAgIHByaW50KCJpbiBmdW5jMSIpCiAg
ICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQpAQCAtMjQ5LDcgKzI0
NCw3IEBAIGNsYXNzIFRlc3RQZXJUZXN0Q2FwdHVyaW5nKG9iamVjdCk6CiAgICAgICAgIHAgPSB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZWFy
ZG93bl9tb2R1bGUobW9kKToKLSAgICAgICAgICAgICAgICBwcmludCAoInRlYXJkb3duIG1vZHVs
ZSIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJkb3duIG1vZHVsZSIpCiAgICAgICAgICAg
ICAgICAgYXNzZXJ0IDAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKICAgICAgICAgICAg
ICAgICBwYXNzCkBAIC0yNjcsMTYgKzI2MiwxNiBAQCBjbGFzcyBUZXN0UGVyVGVzdENhcHR1cmlu
ZyhvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfY2FwdHVyaW5nX291dGVycihzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgICAgIGRlZiB0
ZXN0X2NhcHR1cmluZygpOgotICAgICAgICAgICAgICAgIHByaW50ICg0MikKKyAgICAgICAgICAg
ICAgICBwcmludCg0MikKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0cigyMykp
CiAgICAgICAgICAgICBkZWYgdGVzdF9jYXB0dXJpbmdfZXJyb3IoKToKLSAgICAgICAgICAgICAg
ICBwcmludCAoMSkKKyAgICAgICAgICAgICAgICBwcmludCgxKQogICAgICAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoc3RyKDIpKQogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IK
LSAgICAgICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdChwMSkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKApAQCAtMjkzLDM3ICsyODgsMzYgQEAgY2xhc3MgVGVzdFBlclRlc3RDYXB0dXJpbmcob2Jq
ZWN0KToKICAgICAgICAgKQogCiAKLWNsYXNzIFRlc3RMb2dnaW5nSW50ZXJhY3Rpb24ob2JqZWN0
KToKLQorY2xhc3MgVGVzdExvZ2dpbmdJbnRlcmFjdGlvbjoKICAgICBkZWYgdGVzdF9sb2dnaW5n
X3N0cmVhbV9vd25lcnNoaXAoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAg
IGRlZiB0ZXN0X2xvZ2dpbmcoKToKICAgICAgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAg
ICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBjYXB0
dXJlLkNhcHR1cmVJTygpCiAgICAgICAgICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhzdHJl
YW09c3RyZWFtKQogICAgICAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpICMgdG8gZnJlZSBtZW1v
cnkvcmVsZWFzZSByZXNvdXJjZXMKLSAgICAgICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAg
ICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKHApCiAg
ICAgICAgIGFzc2VydCByZXN1bHQuc3RkZXJyLnN0cigpLmZpbmQoImF0ZXhpdCIpID09IC0xCiAK
ICAgICBkZWYgdGVzdF9sb2dnaW5nX2FuZF9pbW1lZGlhdGVfc2V0dXB0ZWFyZG93bihzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgIiIiXAogICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAg
ICAgIGRlZiBzZXR1cF9mdW5jdGlvbihmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgbG9nZ2lu
Zy53YXJuKCJoZWxsbzEiKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiaGVsbG8x
IikKIAogICAgICAgICAgICAgZGVmIHRlc3RfbG9nZ2luZygpOgotICAgICAgICAgICAgICAgIGxv
Z2dpbmcud2FybigiaGVsbG8yIikKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoImhl
bGxvMiIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKIAogICAgICAgICAgICAgZGVmIHRlYXJk
b3duX2Z1bmN0aW9uKGZ1bmN0aW9uKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImhl
bGxvMyIpCisgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzMiKQogICAgICAg
ICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAg
ICkKICAgICAgICAgZm9yIG9wdGFyZ3MgaW4gKCgiLS1jYXB0dXJlPXN5cyIsKSwgKCItLWNhcHR1
cmU9ZmQiLCkpOgogICAgICAgICAgICAgcHJpbnQob3B0YXJncykKQEAgLTMzNywxOSArMzMxLDE5
IEBAIGNsYXNzIFRlc3RMb2dnaW5nSW50ZXJhY3Rpb24ob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0
X2xvZ2dpbmdfYW5kX2Nyb3Nzc2NvcGVfZml4dHVyZXMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIi
IlwKICAgICAgICAgICAgIGltcG9ydCBsb2dnaW5nCiAgICAgICAgICAgICBkZWYgc2V0dXBfbW9k
dWxlKGZ1bmN0aW9uKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvMSIpCisg
ICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzEiKQogCiAgICAgICAgICAgICBk
ZWYgdGVzdF9sb2dnaW5nKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuKCJoZWxsbzIi
KQorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiaGVsbG8yIikKICAgICAgICAgICAg
ICAgICBhc3NlcnQgMAogCiAgICAgICAgICAgICBkZWYgdGVhcmRvd25fbW9kdWxlKGZ1bmN0aW9u
KToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvMyIpCisgICAgICAgICAgICAg
ICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzMiKQogICAgICAgICAgICAgICAgIGFzc2VydCAwCi0g
ICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgZm9yIG9wdGFy
Z3MgaW4gKCgiLS1jYXB0dXJlPXN5cyIsKSwgKCItLWNhcHR1cmU9ZmQiLCkpOgogICAgICAgICAg
ICAgcHJpbnQob3B0YXJncykKQEAgLTM2MywzMyArMzU3LDMzIEBAIGNsYXNzIFRlc3RMb2dnaW5n
SW50ZXJhY3Rpb24ob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X2NvbmZ0ZXN0bG9nZ2luZ19pc19z
aG93bihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgICAgICBpbXBvcnQgbG9n
Z2luZwogICAgICAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoKQotICAgICAgICAgICAg
ICAgIGxvZ2dpbmcud2FybigiaGVsbG80MzUiKQotICAgICAgICAiIiIKKyAgICAgICAgICAgICAg
ICBsb2dnaW5nLndhcm5pbmcoImhlbGxvNDM1IikKKyAgICAgICAgICAgICIiIgogICAgICAgICAp
CiAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgbG9nZ2luZyBpcyBzdGlsbCBjYXB0dXJlZCBpbiB0
ZXN0cwogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCItcyIs
ICItcCIsICJubzpjYXB0dXJlbG9nIikKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJ
VF9OT1RFU1RTQ09MTEVDVEVECisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2Rl
Lk5PX1RFU1RTX0NPTExFQ1RFRAogICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMo
WyJXQVJOSU5HKmhlbGxvNDM1KiJdKQogICAgICAgICBhc3NlcnQgIm9wZXJhdGlvbiBvbiBjbG9z
ZWQgZmlsZSIgbm90IGluIHJlc3VsdC5zdGRlcnIuc3RyKCkKIAogICAgIGRlZiB0ZXN0X2NvbmZ0
ZXN0bG9nZ2luZ19hbmRfdGVzdF9sb2dnaW5nKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0
ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAgICAgICAgICIiIgorICAgICAgICAgICAgIiIiXAogICAg
ICAgICAgICAgICAgIGltcG9ydCBsb2dnaW5nCiAgICAgICAgICAgICAgICAgbG9nZ2luZy5iYXNp
Y0NvbmZpZygpCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAg
ICAgIyBtYWtlIHN1cmUgdGhhdCBsb2dnaW5nIGlzIHN0aWxsIGNhcHR1cmVkIGluIHRlc3RzCiAg
ICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKCk6CiAgICAgICAgICAgICAgICAg
aW1wb3J0IGxvZ2dpbmcKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvNDMzIikK
KyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoImhlbGxvNDMzIikKICAgICAgICAgICAg
ICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIgogICAgICAgICApCiAg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MocCwgIi1wIiwgIm5v
OmNhcHR1cmVsb2ciKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCkBAIC0zOTcsMzAg
KzM5MSw2MyBAQCBjbGFzcyBUZXN0TG9nZ2luZ0ludGVyYWN0aW9uKG9iamVjdCk6CiAgICAgICAg
IGFzc2VydCAic29tZXRoaW5nIiBub3QgaW4gcmVzdWx0LnN0ZGVyci5zdHIoKQogICAgICAgICBh
c3NlcnQgIm9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIgbm90IGluIHJlc3VsdC5zdGRlcnIuc3Ry
KCkKIAorICAgIGRlZiB0ZXN0X2xvZ2dpbmdfYWZ0ZXJfY2FwX3N0b3BwZWQoc2VsZiwgdGVzdGRp
cik6CisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiXAorICAg
ICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBpbXBvcnQgbG9nZ2lu
ZworCisgICAgICAgICAgICAgICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisK
KyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgICAgICBkZWYgbG9n
X29uX3RlYXJkb3duKCk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAg
ICAgICAgIGxvZy53YXJuaW5nKCdMb2dnaW5nIG9uIHRlYXJkb3duJykKKyAgICAgICAgICAgICIi
IgorICAgICAgICApCisgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgbG9nZ2luZyBpcyBzdGlsbCBj
YXB0dXJlZCBpbiB0ZXN0cworICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAg
ICAgICAgIiIiXAorICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8obG9nX29uX3RlYXJkb3duKToK
KyAgICAgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICAgICAgICAgIGxvZ2dpbmcu
d2FybmluZygiaGVsbG80MzMiKQorICAgICAgICAgICAgICAgIGFzc2VydCAxCisgICAgICAgICAg
ICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQoKQorICAgICAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcyhwLCAiLS1s
b2ctY2xpLWxldmVsIiwgImluZm8iKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCisg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsiKldBUk5J
TkcqaGVsbG80MzMqIiwgIipXQVJOSU5HKkxvZ2dpbmcgb24gdGVhcmRvd24qIl0KKyAgICAgICAg
KQorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgIkF0dHJpYnV0ZUVycm9yOiAnTm9uZVR5
cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdyZXN1bWVfY2FwdHVyaW5nJyIKKyAgICAgICAg
ICAgIG5vdCBpbiByZXN1bHQuc3RkZXJyLnN0cigpCisgICAgICAgICkKIAotY2xhc3MgVGVzdENh
cHR1cmVGaXh0dXJlKG9iamVjdCk6CiAKK2NsYXNzIFRlc3RDYXB0dXJlRml4dHVyZToKICAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm9wdCIsIFtbXSwgWyItcyJdXSkKICAgICBkZWYgdGVz
dF9zdGRfZnVuY3Rpb25hbChzZWxmLCB0ZXN0ZGlyLCBvcHQpOgogICAgICAgICByZXByZWMgPSB0
ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIi
IlwKICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKGNhcHN5cyk6Ci0gICAgICAgICAgICAgICAg
cHJpbnQgKDQyKQorICAgICAgICAgICAgICAgIHByaW50KDQyKQogICAgICAgICAgICAgICAgIG91
dCwgZXJyID0gY2Fwc3lzLnJlYWRvdXRlcnIoKQogICAgICAgICAgICAgICAgIGFzc2VydCBvdXQu
c3RhcnRzd2l0aCgiNDIiKQotICAgICAgICAiIiIsCi0gICAgICAgICAgICAqb3B0CisgICAgICAg
ICAgICAiIiIsCisgICAgICAgICAgICAqb3B0LAogICAgICAgICApCiAgICAgICAgIHJlcHJlYy5h
c3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAgICAgZGVmIHRlc3RfY2Fwc3lzY2FwZmQoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0X29uZShjYXBzeXMsIGNh
cGZkKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBkZWYgdGVzdF90d28oY2Fw
ZmQsIGNhcHN5cyk6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIKKyAgICAgICAg
ICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKQEAgLTQyOSw3ICs0NTYsNyBA
QCBjbGFzcyBUZXN0Q2FwdHVyZUZpeHR1cmUob2JqZWN0KToKICAgICAgICAgICAgICAgICAiRSpj
YXBmZCpjYXBzeXMqc2FtZSp0aW1lKiIsCiAgICAgICAgICAgICAgICAgIipFUlJPUipzZXR1cCp0
ZXN0X3R3byoiLAogICAgICAgICAgICAgICAgICJFKmNhcHN5cypjYXBmZCpzYW1lKnRpbWUqIiwK
LSAgICAgICAgICAgICAgICAiKjIgZXJyb3IqIiwKKyAgICAgICAgICAgICAgICAiKjIgZXJyb3Jz
KiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIApAQCAtNDM4LDMwICs0NjUsMzAgQEAgY2xh
c3MgVGVzdENhcHR1cmVGaXh0dXJlKG9iamVjdCk6CiAgICAgICAgIGluIHRoZSBzYW1lIHRlc3Qg
aXMgYW4gZXJyb3IuCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0g
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0X29u
ZShjYXBzeXMsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZh
bHVlKCJjYXBmZCIpCiAgICAgICAgICAgICBkZWYgdGVzdF90d28oY2FwZmQsIHJlcXVlc3QpOgog
ICAgICAgICAgICAgICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCJjYXBzeXMiKQotICAgICAg
ICAiIiIKKyAgICAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAg
ICAgICAgICAgWwogICAgICAgICAgICAgICAgICIqdGVzdF9vbmUqIiwKLSAgICAgICAgICAgICAg
ICAiKmNhcHN5cypjYXBmZCpzYW1lKnRpbWUqIiwKKyAgICAgICAgICAgICAgICAiRSAqIGNhbm5v
dCB1c2UgY2FwZmQgYW5kIGNhcHN5cyBhdCB0aGUgc2FtZSB0aW1lIiwKICAgICAgICAgICAgICAg
ICAiKnRlc3RfdHdvKiIsCi0gICAgICAgICAgICAgICAgIipjYXBmZCpjYXBzeXMqc2FtZSp0aW1l
KiIsCisgICAgICAgICAgICAgICAgIkUgKiBjYW5ub3QgdXNlIGNhcHN5cyBhbmQgY2FwZmQgYXQg
dGhlIHNhbWUgdGltZSIsCiAgICAgICAgICAgICAgICAgIioyIGZhaWxlZCBpbioiLAogICAgICAg
ICAgICAgXQogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jYXBzeXNjYXBmZGJpbmFyeShzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAg
ICIiIgorICAgICAgICAgICAgIiIiXAogICAgICAgICAgICAgZGVmIHRlc3Rfb25lKGNhcHN5cywg
Y2FwZmRiaW5hcnkpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiCisgICAgICAg
ICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChw
KQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCkBAIC00NzEsMzQgKzQ5OCwz
OSBAQCBjbGFzcyBUZXN0Q2FwdHVyZUZpeHR1cmUob2JqZWN0KToKICAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoIm1ldGhvZCIsIFsic3lzIiwgImZkIl0pCiAgICAgZGVmIHRlc3RfY2FwdHVy
ZV9pc19yZXByZXNlbnRlZF9vbl9mYWlsdXJlX2lzc3VlMTI4KHNlbGYsIHRlc3RkaXIsIG1ldGhv
ZCk6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKGNhcCVzKToKLSAgICAgICAgICAgICAgICBwcmludCAo
Inh4eDQyeHh4IikKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxv
KGNhcHt9KToKKyAgICAgICAgICAgICAgICBwcmludCgieHh4NDJ4eHgiKQogICAgICAgICAgICAg
ICAgIGFzc2VydCAwCi0gICAgICAgICIiIgotICAgICAgICAgICAgJSBtZXRob2QKKyAgICAgICAg
ICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgbWV0aG9kCisgICAgICAgICAgICApCiAg
ICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKICAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsieHh4NDJ4eHgiXSkKIAotICAgIEBuZWVkc29z
ZHVwCiAgICAgZGVmIHRlc3Rfc3RkZmRfZnVuY3Rpb25hbChzZWxmLCB0ZXN0ZGlyKToKICAgICAg
ICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKAotICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhjYXBmZCk6CiAgICAg
ICAgICAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgICAgICAgICAgb3Mud3JpdGUoMSwgIjQyIi5l
bmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiI0MiIpCiAgICAg
ICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKICAgICAgICAgICAgICAg
ICBhc3NlcnQgb3V0LnN0YXJ0c3dpdGgoIjQyIikKICAgICAgICAgICAgICAgICBjYXBmZC5jbG9z
ZSgpCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBAbmVlZHNvc2R1cAorICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgibmwiLCAoIlxuIiwgIlxyXG4iLCAiXHIiKSkKKyAgICBkZWYg
dGVzdF9jYWZkX3ByZXNlcnZlc19uZXdsaW5lcyhzZWxmLCBjYXBmZCwgbmwpOgorICAgICAgICBw
cmludCgidGVzdCIsIGVuZD1ubCkKKyAgICAgICAgb3V0LCBlcnIgPSBjYXBmZC5yZWFkb3V0ZXJy
KCkKKyAgICAgICAgYXNzZXJ0IG91dC5lbmRzd2l0aChubCkKKwogICAgIGRlZiB0ZXN0X2NhcGZk
YmluYXJ5KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9y
dW5zb3VyY2UoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAg
IGRlZiB0ZXN0X2hlbGxvKGNhcGZkYmluYXJ5KToKICAgICAgICAgICAgICAgICBpbXBvcnQgb3MK
ICAgICAgICAgICAgICAgICAjIHNvbWUgbGlrZWx5IHVuLWRlY29kYWJsZSBieXRlcwpAQCAtNTA2
LDc0ICs1MzgsNzMgQEAgY2xhc3MgVGVzdENhcHR1cmVGaXh0dXJlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgb3V0LCBlcnIgPSBjYXBmZGJpbmFyeS5yZWFkb3V0ZXJyKCkKICAgICAgICAgICAg
ICAgICBhc3NlcnQgb3V0ID09IGInXFx4ZmVcXHg5OFxceDIwJwogICAgICAgICAgICAgICAgIGFz
c2VydCBlcnIgPT0gYicnCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkK
ICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBAcHl0ZXN0Lm1h
cmsuc2tpcGlmKAotICAgICAgICBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKSwgcmVhc29uPSJvbmx5
IGhhdmUgY2Fwc3lzYmluYXJ5IGluIHB5dGhvbiAzIgotICAgICkKICAgICBkZWYgdGVzdF9jYXBz
eXNiaW5hcnkoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5l
X3J1bnNvdXJjZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgIHIiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKGNhcHN5
c2JpbmFyeSk6CiAgICAgICAgICAgICAgICAgaW1wb3J0IHN5cwotICAgICAgICAgICAgICAgICMg
c29tZSBsaWtlbHkgdW4tZGVjb2RhYmxlIGJ5dGVzCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91
dC5idWZmZXIud3JpdGUoYidcXHhmZVxceDk4XFx4MjAnKQorCisgICAgICAgICAgICAgICAgc3lz
LnN0ZG91dC5idWZmZXIud3JpdGUoYidoZWxsbycpCisKKyAgICAgICAgICAgICAgICAjIFNvbWUg
bGlrZWx5IHVuLWRlY29kYWJsZSBieXRlcy4KKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1
ZmZlci53cml0ZShiJ1x4ZmVceDk4XHgyMCcpCisKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0
LmJ1ZmZlci5mbHVzaCgpCisKKyAgICAgICAgICAgICAgICAjIEVuc3VyZSB3cml0aW5nIGluIHRl
eHQgbW9kZSBzdGlsbCB3b3JrcyBhbmQgaXMgY2FwdHVyZWQuCisgICAgICAgICAgICAgICAgIyBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY4NzEKKyAgICAgICAg
ICAgICAgICBwcmludCgid29ybGQiLCBmbHVzaD1UcnVlKQorCiAgICAgICAgICAgICAgICAgb3V0
LCBlcnIgPSBjYXBzeXNiaW5hcnkucmVhZG91dGVycigpCi0gICAgICAgICAgICAgICAgYXNzZXJ0
IG91dCA9PSBiJ1xceGZlXFx4OThcXHgyMCcKKyAgICAgICAgICAgICAgICBhc3NlcnQgb3V0ID09
IGInaGVsbG9ceGZlXHg5OFx4MjB3b3JsZFxuJwogICAgICAgICAgICAgICAgIGFzc2VydCBlcnIg
PT0gYicnCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlcHJlYy5hc3NlcnRvdXRj
b21lKHBhc3NlZD0xKQogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAgICAgc3lzLnZl
cnNpb25faW5mbyA+PSAoMywpLCByZWFzb249Im9ubHkgaGF2ZSBjYXBzeXNiaW5hcnkgaW4gcHl0
aG9uIDMiCi0gICAgKQotICAgIGRlZiB0ZXN0X2NhcHN5c2JpbmFyeV9mb3JiaWRkZW5faW5fcHl0
aG9uMihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAg
ICAgICAgICAgIHByaW50KCJzdGRvdXQgYWZ0ZXIiKQorICAgICAgICAgICAgICAgIHByaW50KCJz
dGRlcnIgYWZ0ZXIiLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X2hlbGxvKGNhcHN5c2JpbmFyeSk6Ci0gICAgICAgICAgICAgICAgcGFzcwot
ICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0cihwMSksICItckEiKQog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgIip0ZXN0X2hlbGxvKiIsCi0gICAgICAgICAgICAgICAgIipjYXBzeXNiaW5h
cnkgaXMgb25seSBzdXBwb3J0ZWQgb24gcHl0aG9uIDMqIiwKLSAgICAgICAgICAgICAgICAiKjEg
ZXJyb3IgaW4qIiwKKyAgICAgICAgICAgICAgICAiKi0gQ2FwdHVyZWQgc3Rkb3V0IGNhbGwgLSoi
LAorICAgICAgICAgICAgICAgICJzdGRvdXQgYWZ0ZXIiLAorICAgICAgICAgICAgICAgICIqLSBD
YXB0dXJlZCBzdGRlcnIgY2FsbCAtKiIsCisgICAgICAgICAgICAgICAgInN0ZGVyciBhZnRlciIs
CisgICAgICAgICAgICAgICAgIio9IDEgcGFzc2VkIGluICoiLAogICAgICAgICAgICAgXQogICAg
ICAgICApCiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3NldHVwX2ZhaWx1cmUoc2VsZiwgdGVzdGRp
cik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKGNhcHN5cywgbWlzc2lu
Z2FyZyk6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIKKyAgICAgICAgICAgICIi
IgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCiAgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0ZXN0X3BhcnRpYWxfc2V0dXBfZmFp
bHVyZSoiLCAiKjEgZXJyb3IqIl0pCiAKLSAgICBAbmVlZHNvc2R1cAogICAgIGRlZiB0ZXN0X2tl
eWJvYXJkaW50ZXJydXB0X2Rpc2FibGVzX2NhcHR1cmluZyhzZWxmLCB0ZXN0ZGlyKToKICAgICAg
ICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
IiIiXAogICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8oY2FwZmQpOgogICAgICAgICAgICAgICAg
IGltcG9ydCBvcwotICAgICAgICAgICAgICAgIG9zLndyaXRlKDEsIHN0cig0MikuZW5jb2RlKCdh
c2NpaScpKQorICAgICAgICAgICAgICAgIG9zLndyaXRlKDEsIGInNDInKQogICAgICAgICAgICAg
ICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkKLSAgICAgICAgIiIiCisgICAgICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9j
ZXNzKHApCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipLZXlib2FyZElu
dGVycnVwdCoiXSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMgogCi0gICAgQHB5dGVz
dC5tYXJrLmlzc3VlMTQKICAgICBkZWYgdGVzdF9jYXB0dXJlX2FuZF9sb2dnaW5nKHNlbGYsIHRl
c3RkaXIpOgorICAgICAgICAiIiIjMTQiIiIKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICAgICAgIiIiXAogICAgICAgICAgICAgaW1wb3J0
IGxvZ2dpbmcKICAgICAgICAgICAgIGRlZiB0ZXN0X2xvZyhjYXBzeXMpOgogICAgICAgICAgICAg
ICAgIGxvZ2dpbmcuZXJyb3IoJ3gnKQpAQCAtNTg2LDcgKzYxNyw3IEBAIGNsYXNzIFRlc3RDYXB0
dXJlRml4dHVyZShvYmplY3QpOgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibm9fY2Fw
dHVyZSIsIFtUcnVlLCBGYWxzZV0pCiAgICAgZGVmIHRlc3RfZGlzYWJsZWRfY2FwdHVyZV9maXh0
dXJlKHNlbGYsIHRlc3RkaXIsIGZpeHR1cmUsIG5vX2NhcHR1cmUpOgogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAg
ICAgIGRlZiB0ZXN0X2Rpc2FibGVkKHtmaXh0dXJlfSk6CiAgICAgICAgICAgICAgICAgcHJpbnQo
J2NhcHR1cmVkIGJlZm9yZScpCiAgICAgICAgICAgICAgICAgd2l0aCB7Zml4dHVyZX0uZGlzYWJs
ZWQoKToKQEAgLTYwMiwyNiArNjMzLDQ4IEBAIGNsYXNzIFRlc3RDYXB0dXJlRml4dHVyZShvYmpl
Y3QpOgogICAgICAgICApCiAgICAgICAgIGFyZ3MgPSAoIi1zIiwpIGlmIG5vX2NhcHR1cmUgZWxz
ZSAoKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCphcmdz
KQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICAiIiIK
LSAgICAgICAgICAgICp3aGlsZSBjYXB0dXJlIGlzIGRpc2FibGVkKgotICAgICAgICAiIiIKLSAg
ICAgICAgKQotICAgICAgICBhc3NlcnQgImNhcHR1cmVkIGJlZm9yZSIgbm90IGluIHJlc3VsdC5z
dGRvdXQuc3RyKCkKLSAgICAgICAgYXNzZXJ0ICJjYXB0dXJlZCBhZnRlciIgbm90IGluIHJlc3Vs
dC5zdGRvdXQuc3RyKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKndo
aWxlIGNhcHR1cmUgaXMgZGlzYWJsZWQqIiwgIio9IDIgcGFzc2VkIGluICoiXSkKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipjYXB0dXJlZCBiZWZvcmUqIikKKyAgICAg
ICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipjYXB0dXJlZCBhZnRlcioiKQogICAg
ICAgICBpZiBub19jYXB0dXJlOgogICAgICAgICAgICAgYXNzZXJ0ICJ0ZXN0X25vcm1hbCBleGVj
dXRlZCIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAg
YXNzZXJ0ICJ0ZXN0X25vcm1hbCBleGVjdXRlZCIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
KyAgICAgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqdGVzdF9ub3JtYWwg
ZXhlY3V0ZWQqIikKIAotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZml4dHVyZSIsIFsi
Y2Fwc3lzIiwgImNhcGZkIl0pCi0gICAgZGVmIHRlc3RfZml4dHVyZV91c2VfYnlfb3RoZXJfZml4
dHVyZXMoc2VsZiwgdGVzdGRpciwgZml4dHVyZSk6Ci0gICAgICAgICIiIgotICAgICAgICBFbnN1
cmUgdGhhdCBjYXBzeXMgYW5kIGNhcGZkIGNhbiBiZSB1c2VkIGJ5IG90aGVyIGZpeHR1cmVzIGR1
cmluZyBzZXR1cCBhbmQgdGVhcmRvd24uCisgICAgZGVmIHRlc3RfZGlzYWJsZWRfY2FwdHVyZV9m
aXh0dXJlX3R3aWNlKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIi
IlRlc3QgdGhhdCBhbiBpbm5lciBkaXNhYmxlZCgpIGV4aXQgZG9lc24ndCB1bmRvIGFuIG91dGVy
IGRpc2FibGVkKCkuCisKKyAgICAgICAgSXNzdWUgIzcxNDguCiAgICAgICAgICIiIgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGZyb20g
X19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyAgICAgICAgICAgIGRlZiB0ZXN0X2Rp
c2FibGVkKGNhcGZkKToKKyAgICAgICAgICAgICAgICBwcmludCgnY2FwdHVyZWQgYmVmb3JlJykK
KyAgICAgICAgICAgICAgICB3aXRoIGNhcGZkLmRpc2FibGVkKCk6CisgICAgICAgICAgICAgICAg
ICAgIHByaW50KCd3aGlsZSBjYXB0dXJlIGlzIGRpc2FibGVkIDEnKQorICAgICAgICAgICAgICAg
ICAgICB3aXRoIGNhcGZkLmRpc2FibGVkKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmlu
dCgnd2hpbGUgY2FwdHVyZSBpcyBkaXNhYmxlZCAyJykKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnQoJ3doaWxlIGNhcHR1cmUgaXMgZGlzYWJsZWQgMSBhZnRlcicpCisgICAgICAgICAgICAgICAg
cHJpbnQoJ2NhcHR1cmVkIGFmdGVyJykKKyAgICAgICAgICAgICAgICBhc3NlcnQgY2FwZmQucmVh
ZG91dGVycigpID09ICgnY2FwdHVyZWQgYmVmb3JlXFxuY2FwdHVyZWQgYWZ0ZXJcXG4nLCAnJykK
KyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3Rfc3VicHJvY2VzcygpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKndoaWxlIGNhcHR1cmUgaXMgZGlzYWJsZWQg
MSIsCisgICAgICAgICAgICAgICAgIip3aGlsZSBjYXB0dXJlIGlzIGRpc2FibGVkIDIiLAorICAg
ICAgICAgICAgICAgICIqd2hpbGUgY2FwdHVyZSBpcyBkaXNhYmxlZCAxIGFmdGVyIiwKKyAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICBjb25zZWN1dGl2ZT1UcnVlLAorICAgICAgICApCisKKyAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZpeHR1cmUiLCBbImNhcHN5cyIsICJjYXBmZCJd
KQorICAgIGRlZiB0ZXN0X2ZpeHR1cmVfdXNlX2J5X290aGVyX2ZpeHR1cmVzKHNlbGYsIHRlc3Rk
aXIsIGZpeHR1cmUpOgorICAgICAgICAiIiJFbnN1cmUgdGhhdCBjYXBzeXMgYW5kIGNhcGZkIGNh
biBiZSB1c2VkIGJ5IG90aGVyIGZpeHR1cmVzIGR1cmluZworICAgICAgICBzZXR1cCBhbmQgdGVh
cmRvd24uIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIlwK
ICAgICAgICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIApAQCAt
NjQ4LDE5ICs3MDEsNDcgQEAgY2xhc3MgVGVzdENhcHR1cmVGaXh0dXJlKG9iamVjdCk6CiAgICAg
ICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rf
c3VicHJvY2VzcygpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgcGFz
c2VkKiIpCi0gICAgICAgIGFzc2VydCAic3Rkb3V0IGNvbnRlbnRzIGJlZ2luIiBub3QgaW4gcmVz
dWx0LnN0ZG91dC5zdHIoKQotICAgICAgICBhc3NlcnQgInN0ZGVyciBjb250ZW50cyBiZWdpbiIg
bm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKjEgcGFzc2VkKiJdKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hf
bGluZSgiKnN0ZG91dCBjb250ZW50cyBiZWdpbioiKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5v
X2ZubWF0Y2hfbGluZSgiKnN0ZGVyciBjb250ZW50cyBiZWdpbioiKQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJjYXAiLCBbImNhcHN5cyIsICJjYXBmZCJdKQorICAgIGRlZiB0ZXN0
X2ZpeHR1cmVfdXNlX2J5X290aGVyX2ZpeHR1cmVzX3RlYXJkb3duKHNlbGYsIHRlc3RkaXIsIGNh
cCk6CisgICAgICAgICIiIkVuc3VyZSB3ZSBjYW4gYWNjZXNzIHNldHVwIGFuZCB0ZWFyZG93biBi
dWZmZXJzIGZyb20gdGVhcmRvd24gd2hlbiB1c2luZyBjYXBzeXMvY2FwZmQgKCMjMzAzMykiIiIK
KyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiXAorICAgICAgICAg
ICAgaW1wb3J0IHN5cworICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgaW1w
b3J0IG9zCisKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZSgpCisgICAgICAgICAgICBkZWYg
Zml4KHtjYXB9KToKKyAgICAgICAgICAgICAgICBwcmludCgic2V0dXAgb3V0IikKKyAgICAgICAg
ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJzZXR1cCBlcnJcXG4iKQorICAgICAgICAgICAgICAg
IHlpZWxkCisgICAgICAgICAgICAgICAgb3V0LCBlcnIgPSB7Y2FwfS5yZWFkb3V0ZXJyKCkKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgb3V0ID09ICdzZXR1cCBvdXRcXG5jYWxsIG91dFxcbicKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgZXJyID09ICdzZXR1cCBlcnJcXG5jYWxsIGVyclxcbicKKwor
ICAgICAgICAgICAgZGVmIHRlc3RfYShmaXgpOgorICAgICAgICAgICAgICAgIHByaW50KCJjYWxs
IG91dCIpCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiY2FsbCBlcnJcXG4iKQor
ICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIGNhcD1jYXAKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAogCiBkZWYgdGVzdF9zZXR1cF9m
YWlsdXJlX2RvZXNfbm90X2tpbGxfY2FwdHVyaW5nKHRlc3RkaXIpOgogICAgIHN1YjEgPSB0ZXN0
ZGlyLm1rcHlkaXIoInN1YjEiKQogICAgIHN1YjEuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgK
LSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgIHRleHR3cmFwLmRlZGVudCgK
KyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChp
dGVtKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKDQyKQogICAgICAgICAgICAg
IiIiCi0gICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKLSAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoNDIpCi0gICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgc3Vi
MS5qb2luKCJ0ZXN0X21vZC5weSIpLndyaXRlKCJkZWYgdGVzdF9mdW5jMSgpOiBwYXNzIikKQEAg
LTY2OCwzMSArNzQ5LDE3IEBAIGRlZiB0ZXN0X3NldHVwX2ZhaWx1cmVfZG9lc19ub3Rfa2lsbF9j
YXB0dXJpbmcodGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKlZh
bHVlRXJyb3IoNDIpKiIsICIqMSBlcnJvcioiXSkKIAogCi1kZWYgdGVzdF9mZGZ1bmNhcmdfc2tp
cHNfb25fbm9fb3NkdXAodGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAiIiIKLSAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgIGlmIGhhc2F0dHIob3MsICdkdXAnKToK
LSAgICAgICAgICAgIGRlbCBvcy5kdXAKLSAgICAgICAgZGVmIHRlc3RfaGVsbG8oY2FwZmQpOgot
ICAgICAgICAgICAgcGFzcwotICAgICIiIgotICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdF9zdWJwcm9jZXNzKCItLWNhcHR1cmU9bm8iKQotICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIioxIHNraXBwZWQqIl0pCi0KLQogZGVmIHRlc3RfY2FwdHVyZV9jb25mdGVz
dF9ydW50ZXN0X3NldHVwKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAg
ICAgICAiIiIKICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKCk6Ci0gICAgICAgICAg
ICBwcmludCAoImhlbGxvMTkiKQorICAgICAgICAgICAgcHJpbnQoImhlbGxvMTkiKQogICAgICIi
IgogICAgICkKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIp
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgIGFzc2VydCByZXN1bHQucmV0
ID09IDAKLSAgICBhc3NlcnQgImhlbGxvMTkiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisg
ICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipoZWxsbzE5KiIpCiAKIAogZGVmIHRl
c3RfY2FwdHVyZV9iYWRvdXRwdXRfaXNzdWU0MTIodGVzdGRpcik6CkBAIC03MDYsNyArNzczLDcg
QEAgZGVmIHRlc3RfY2FwdHVyZV9iYWRvdXRwdXRfaXNzdWU0MTIodGVzdGRpcik6CiAgICAgICAg
ICAgICBhc3NlcnQgMAogICAgICAgICAiIiIKICAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi0tY2FwPWZkIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1j
YXB0dXJlPWZkIikKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICIi
IgogICAgICAgICAqZGVmIHRlc3RfZnVuYyoKQEAgLTcyMSw3ICs3ODgsNyBAQCBkZWYgdGVzdF9j
YXB0dXJlX2Vhcmx5X29wdGlvbl9wYXJzaW5nKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNv
bmZ0ZXN0KAogICAgICAgICAiIiIKICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKCk6
Ci0gICAgICAgICAgICBwcmludCAoImhlbGxvMTkiKQorICAgICAgICAgICAgcHJpbnQoImhlbGxv
MTkiKQogICAgICIiIgogICAgICkKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2Z1
bmMoKTogcGFzcyIpCkBAIC03NTYsMjIgKzgyMywyMSBAQCBkZWYgdGVzdF9lcnJvcl9kdXJpbmdf
cmVhZG91dGVycih0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgIHB5
dGVzdF94eXo9IiIiCiAgICAgICAgIGZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBGRENhcHR1
cmUKKwogICAgICAgICBkZWYgYmFkX3NuYXAoc2VsZik6CiAgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ2Jvb20nKQorCiAgICAgICAgIGFzc2VydCBGRENhcHR1cmUuc25hcAogICAgICAgICBG
RENhcHR1cmUuc25hcCA9IGJhZF9zbmFwCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoCi0gICAgICAgICItcCIsICJweXRlc3RfeHl6Iiwg
Ii0tdmVyc2lvbiIsIHN5c3BhdGhpbnNlcnQ9VHJ1ZQotICAgICkKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCItcCIsICJweXRlc3RfeHl6IiwgIi0tdmVyc2lvbiIp
CiAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbIippbiBiYWRfc25h
cCIsICIgICAgcmFpc2UgRXhjZXB0aW9uKCdib29tJykiLCAiRXhjZXB0aW9uOiBib29tIl0KICAg
ICApCiAKIAotY2xhc3MgVGVzdENhcHR1cmVJTyhvYmplY3QpOgotCitjbGFzcyBUZXN0Q2FwdHVy
ZUlPOgogICAgIGRlZiB0ZXN0X3RleHQoc2VsZik6CiAgICAgICAgIGYgPSBjYXB0dXJlLkNhcHR1
cmVJTygpCiAgICAgICAgIGYud3JpdGUoImhlbGxvIikKQEAgLTc4MSwxNyArODQ3LDkgQEAgY2xh
c3MgVGVzdENhcHR1cmVJTyhvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfdW5pY29kZV9hbmRfc3Ry
X21peHR1cmUoc2VsZik6CiAgICAgICAgIGYgPSBjYXB0dXJlLkNhcHR1cmVJTygpCi0gICAgICAg
IGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApOgotICAgICAgICAgICAgZi53cml0ZSgiXHUw
MGY2IikKLSAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCAiZi53cml0ZShieXRl
cygnaGVsbG8nLCAnVVRGLTgnKSkiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZi53cml0
ZSh0ZXh0X3R5cGUoIlx1MDBmNiIsICJVVEYtOCIpKQotICAgICAgICAgICAgZi53cml0ZSgiaGVs
bG8iKSAgIyBieXRlcwotICAgICAgICAgICAgcyA9IGYuZ2V0dmFsdWUoKQotICAgICAgICAgICAg
Zi5jbG9zZSgpCi0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpCisg
ICAgICAgIGYud3JpdGUoIlx1MDBmNiIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9y
LCBmLndyaXRlLCBiImhlbGxvIikKIAotICAgIEBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNp
b25faW5mb1swXSA9PSAyLCByZWFzb249InB5dGhvbiAzIG9ubHkgYmVoYXZpb3VyIikKICAgICBk
ZWYgdGVzdF93cml0ZV9ieXRlc190b19idWZmZXIoc2VsZik6CiAgICAgICAgICIiIkluIHB5dGhv
bjMsIHN0ZG91dCAvIHN0ZGVyciBhcmUgdGV4dCBpbyB3cmFwcGVycyAoZXhwb3NpbmcgYSBidWZm
ZXIKICAgICAgICAgcHJvcGVydHkgb2YgdGhlIHVuZGVybHlpbmcgYnl0ZXN0cmVhbSkuICBTZWUg
aXNzdWUgIzE0MDcKQEAgLTgwMSwxMjkgKzg1OSwxMDAgQEAgY2xhc3MgVGVzdENhcHR1cmVJTyhv
YmplY3QpOgogICAgICAgICBhc3NlcnQgZi5nZXR2YWx1ZSgpID09ICJmb29cclxuIgogCiAKLWRl
ZiB0ZXN0X2J5dGVzX2lvKCk6Ci0gICAgZiA9IHB5LmlvLkJ5dGVzSU8oKQotICAgIGYud3JpdGUo
dG9ieXRlcygiaGVsbG8iKSkKLSAgICBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgImYud3JpdGUo
dG90ZXh0KCdoZWxsbycpKSIpCi0gICAgcyA9IGYuZ2V0dmFsdWUoKQotICAgIGFzc2VydCBzID09
IHRvYnl0ZXMoImhlbGxvIikKK2NsYXNzIFRlc3RUZWVDYXB0dXJlSU8oVGVzdENhcHR1cmVJTyk6
CisgICAgZGVmIHRlc3RfdGV4dChzZWxmKToKKyAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQor
ICAgICAgICBmID0gY2FwdHVyZS5UZWVDYXB0dXJlSU8oc2lvKQorICAgICAgICBmLndyaXRlKCJo
ZWxsbyIpCisgICAgICAgIHMxID0gZi5nZXR2YWx1ZSgpCisgICAgICAgIGFzc2VydCBzMSA9PSAi
aGVsbG8iCisgICAgICAgIHMyID0gc2lvLmdldHZhbHVlKCkKKyAgICAgICAgYXNzZXJ0IHMyID09
IHMxCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzaW8uY2xvc2UoKQorCisgICAgZGVmIHRl
c3RfdW5pY29kZV9hbmRfc3RyX21peHR1cmUoc2VsZik6CisgICAgICAgIHNpbyA9IGlvLlN0cmlu
Z0lPKCkKKyAgICAgICAgZiA9IGNhcHR1cmUuVGVlQ2FwdHVyZUlPKHNpbykKKyAgICAgICAgZi53
cml0ZSgiXHUwMGY2IikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUs
IGIiaGVsbG8iKQogCiAKIGRlZiB0ZXN0X2RvbnRyZWFkZnJvbWlucHV0KCk6CiAgICAgZnJvbSBf
cHl0ZXN0LmNhcHR1cmUgaW1wb3J0IERvbnRSZWFkRnJvbUlucHV0CiAKICAgICBmID0gRG9udFJl
YWRGcm9tSW5wdXQoKQorICAgIGFzc2VydCBmLmJ1ZmZlciBpcyBmCiAgICAgYXNzZXJ0IG5vdCBm
LmlzYXR0eSgpCi0gICAgcHl0ZXN0LnJhaXNlcyhJT0Vycm9yLCBmLnJlYWQpCi0gICAgcHl0ZXN0
LnJhaXNlcyhJT0Vycm9yLCBmLnJlYWRsaW5lcykKKyAgICBweXRlc3QucmFpc2VzKE9TRXJyb3Is
IGYucmVhZCkKKyAgICBweXRlc3QucmFpc2VzKE9TRXJyb3IsIGYucmVhZGxpbmVzKQogICAgIGl0
ZXJfZiA9IGl0ZXIoZikKLSAgICBweXRlc3QucmFpc2VzKElPRXJyb3IsIG5leHQsIGl0ZXJfZikK
KyAgICBweXRlc3QucmFpc2VzKE9TRXJyb3IsIG5leHQsIGl0ZXJfZikKICAgICBweXRlc3QucmFp
c2VzKFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBmLmZpbGVubykKICAgICBmLmNsb3NlKCkgICMganVz
dCBmb3IgY29tcGxldGVuZXNzCiAKIAotQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25f
aW5mbyA8ICgzLCkiLCByZWFzb249InB5dGhvbjIgaGFzIG5vIGJ1ZmZlciIpCi1kZWYgdGVzdF9k
b250cmVhZGZyb21pbnB1dF9idWZmZXJfcHl0aG9uMygpOgotICAgIGZyb20gX3B5dGVzdC5jYXB0
dXJlIGltcG9ydCBEb250UmVhZEZyb21JbnB1dAotCi0gICAgZiA9IERvbnRSZWFkRnJvbUlucHV0
KCkKLSAgICBmYiA9IGYuYnVmZmVyCi0gICAgYXNzZXJ0IG5vdCBmYi5pc2F0dHkoKQotICAgIHB5
dGVzdC5yYWlzZXMoSU9FcnJvciwgZmIucmVhZCkKLSAgICBweXRlc3QucmFpc2VzKElPRXJyb3Is
IGZiLnJlYWRsaW5lcykKLSAgICBpdGVyX2YgPSBpdGVyKGYpCi0gICAgcHl0ZXN0LnJhaXNlcyhJ
T0Vycm9yLCBuZXh0LCBpdGVyX2YpCi0gICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBmYi5m
aWxlbm8pCi0gICAgZi5jbG9zZSgpICAjIGp1c3QgZm9yIGNvbXBsZXRlbmVzcwotCi0KLUBweXRl
c3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSIsIHJlYXNvbj0icHl0aG9u
MiBoYXMgbm8gYnVmZmVyIikKLWRlZiB0ZXN0X2RvbnRyZWFkZnJvbWlucHV0X2J1ZmZlcl9weXRo
b24yKCk6Ci0gICAgZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IERvbnRSZWFkRnJvbUlucHV0
Ci0KLSAgICBmID0gRG9udFJlYWRGcm9tSW5wdXQoKQotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhB
dHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgIGYuYnVmZmVyCi0gICAgZi5jbG9zZSgpICAjIGp1c3Qg
Zm9yIGNvbXBsZXRlbmVzcwotCi0KLUBweXRlc3QueWllbGRfZml4dHVyZQotZGVmIHRtcGZpbGUo
dGVzdGRpcik6CitkZWYgdGVzdF9jYXB0dXJlcmVzdWx0KCkgLT4gTm9uZToKKyAgICBjciA9IENh
cHR1cmVSZXN1bHQoIm91dCIsICJlcnIiKQorICAgIGFzc2VydCBsZW4oY3IpID09IDIKKyAgICBh
c3NlcnQgY3Iub3V0ID09ICJvdXQiCisgICAgYXNzZXJ0IGNyLmVyciA9PSAiZXJyIgorICAgIG91
dCwgZXJyID0gY3IKKyAgICBhc3NlcnQgb3V0ID09ICJvdXQiCisgICAgYXNzZXJ0IGVyciA9PSAi
ZXJyIgorICAgIGFzc2VydCBjclswXSA9PSAib3V0IgorICAgIGFzc2VydCBjclsxXSA9PSAiZXJy
IgorICAgIGFzc2VydCBjciA9PSBjcgorICAgIGFzc2VydCBjciA9PSBDYXB0dXJlUmVzdWx0KCJv
dXQiLCAiZXJyIikKKyAgICBhc3NlcnQgY3IgIT0gQ2FwdHVyZVJlc3VsdCgid3JvbmciLCAiZXJy
IikKKyAgICBhc3NlcnQgY3IgPT0gKCJvdXQiLCAiZXJyIikKKyAgICBhc3NlcnQgY3IgIT0gKCJv
dXQiLCAid3JvbmciKQorICAgIGFzc2VydCBoYXNoKGNyKSA9PSBoYXNoKENhcHR1cmVSZXN1bHQo
Im91dCIsICJlcnIiKSkKKyAgICBhc3NlcnQgaGFzaChjcikgPT0gaGFzaCgoIm91dCIsICJlcnIi
KSkKKyAgICBhc3NlcnQgaGFzaChjcikgIT0gaGFzaCgoIm91dCIsICJ3cm9uZyIpKQorICAgIGFz
c2VydCBjciA8ICgieiIsKQorICAgIGFzc2VydCBjciA8ICgieiIsICJiIikKKyAgICBhc3NlcnQg
Y3IgPCAoInoiLCAiYiIsICJjIikKKyAgICBhc3NlcnQgY3IuY291bnQoImVyciIpID09IDEKKyAg
ICBhc3NlcnQgY3IuY291bnQoIndyb25nIikgPT0gMAorICAgIGFzc2VydCBjci5pbmRleCgiZXJy
IikgPT0gMQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgYXNz
ZXJ0IGNyLmluZGV4KCJ3cm9uZyIpID09IDAKKyAgICBhc3NlcnQgbmV4dChpdGVyKGNyKSkgPT0g
Im91dCIKKyAgICBhc3NlcnQgY3IuX3JlcGxhY2UoZXJyPSJyZXBsYWNlZCIpID09ICgib3V0Iiwg
InJlcGxhY2VkIikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiB0bXBmaWxlKHRlc3RkaXIpIC0+
IEdlbmVyYXRvcltCaW5hcnlJTywgTm9uZSwgTm9uZV06CiAgICAgZiA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgiIikub3Blbigid2IrIikKICAgICB5aWVsZCBmCiAgICAgaWYgbm90IGYuY2xvc2VkOgog
ICAgICAgICBmLmNsb3NlKCkKIAogCi1AbmVlZHNvc2R1cAotZGVmIHRlc3RfZHVwZmlsZSh0bXBm
aWxlKToKLSAgICBmbGlzdCA9IFtdCi0gICAgZm9yIGkgaW4gcmFuZ2UoNSk6Ci0gICAgICAgIG5m
ID0gY2FwdHVyZS5zYWZlX3RleHRfZHVwZmlsZSh0bXBmaWxlLCAid2IiKQotICAgICAgICBhc3Nl
cnQgbmYgIT0gdG1wZmlsZQotICAgICAgICBhc3NlcnQgbmYuZmlsZW5vKCkgIT0gdG1wZmlsZS5m
aWxlbm8oKQotICAgICAgICBhc3NlcnQgbmYgbm90IGluIGZsaXN0Ci0gICAgICAgIHByaW50KGks
IGVuZD0iIiwgZmlsZT1uZikKLSAgICAgICAgZmxpc3QuYXBwZW5kKG5mKQotCi0gICAgZm5hbWVf
b3BlbiA9IGZsaXN0WzBdLm5hbWUKLSAgICBhc3NlcnQgZm5hbWVfb3BlbiA9PSByZXByKGZsaXN0
WzBdLmJ1ZmZlcikKLQotICAgIGZvciBpIGluIHJhbmdlKDUpOgotICAgICAgICBmID0gZmxpc3Rb
aV0KLSAgICAgICAgZi5jbG9zZSgpCi0gICAgZm5hbWVfY2xvc2VkID0gZmxpc3RbMF0ubmFtZQot
ICAgIGFzc2VydCBmbmFtZV9jbG9zZWQgPT0gcmVwcihmbGlzdFswXS5idWZmZXIpCi0gICAgYXNz
ZXJ0IGZuYW1lX2Nsb3NlZCAhPSBmbmFtZV9vcGVuCi0gICAgdG1wZmlsZS5zZWVrKDApCi0gICAg
cyA9IHRtcGZpbGUucmVhZCgpCi0gICAgYXNzZXJ0ICIwMTIzNCIgaW4gcmVwcihzKQotICAgIHRt
cGZpbGUuY2xvc2UoKQotICAgIGFzc2VydCBmbmFtZV9jbG9zZWQgPT0gcmVwcihmbGlzdFswXS5i
dWZmZXIpCi0KLQotZGVmIHRlc3RfZHVwZmlsZV9vbl9ieXRlc2lvKCk6Ci0gICAgaW8gPSBweS5p
by5CeXRlc0lPKCkKLSAgICBmID0gY2FwdHVyZS5zYWZlX3RleHRfZHVwZmlsZShpbywgIndiIikK
LSAgICBmLndyaXRlKCJoZWxsbyIpCi0gICAgYXNzZXJ0IGlvLmdldHZhbHVlKCkgPT0gYiJoZWxs
byIKLSAgICBhc3NlcnQgIkJ5dGVzSU8gb2JqZWN0IiBpbiBmLm5hbWUKLQotCi1kZWYgdGVzdF9k
dXBmaWxlX29uX3RleHRpbygpOgotICAgIGlvID0gcHkuaW8uVGV4dElPKCkKLSAgICBmID0gY2Fw
dHVyZS5zYWZlX3RleHRfZHVwZmlsZShpbywgIndiIikKLSAgICBmLndyaXRlKCJoZWxsbyIpCi0g
ICAgYXNzZXJ0IGlvLmdldHZhbHVlKCkgPT0gImhlbGxvIgotICAgIGFzc2VydCBub3QgaGFzYXR0
cihmLCAibmFtZSIpCi0KLQogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBsc29mX2No
ZWNrKCk6CiAgICAgcGlkID0gb3MuZ2V0cGlkKCkKICAgICB0cnk6Ci0gICAgICAgIG91dCA9IHB5
LnByb2Nlc3MuY21kZXhlYygibHNvZiAtcCAlZCIgJSBwaWQpCi0gICAgZXhjZXB0IChweS5wcm9j
ZXNzLmNtZGV4ZWMuRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6CisgICAgICAgIG91dCA9IHN1
YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgibHNvZiIsICItcCIsIHN0cihwaWQpKSkuZGVjb2RlKCkK
KyAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yLCBVbmlj
b2RlRGVjb2RlRXJyb3IpIGFzIGV4YzoKICAgICAgICAgIyBhYm91dCBVbmljb2RlRGVjb2RlRXJy
b3IsIHNlZSBub3RlIG9uIHB5dGVzdGVyCi0gICAgICAgIHB5dGVzdC5za2lwKCJjb3VsZCBub3Qg
cnVuICdsc29mJyIpCisgICAgICAgIHB5dGVzdC5za2lwKCJjb3VsZCBub3QgcnVuICdsc29mJyAo
eyFyfSkiLmZvcm1hdChleGMpKQogICAgIHlpZWxkCi0gICAgb3V0MiA9IHB5LnByb2Nlc3MuY21k
ZXhlYygibHNvZiAtcCAlZCIgJSBwaWQpCisgICAgb3V0MiA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0
cHV0KCgibHNvZiIsICItcCIsIHN0cihwaWQpKSkuZGVjb2RlKCkKICAgICBsZW4xID0gbGVuKFt4
IGZvciB4IGluIG91dC5zcGxpdCgiXG4iKSBpZiAiUkVHIiBpbiB4XSkKICAgICBsZW4yID0gbGVu
KFt4IGZvciB4IGluIG91dDIuc3BsaXQoIlxuIikgaWYgIlJFRyIgaW4geF0pCiAgICAgYXNzZXJ0
IGxlbjIgPCBsZW4xICsgMywgb3V0MgogCiAKLWNsYXNzIFRlc3RGRENhcHR1cmUob2JqZWN0KToK
LSAgICBweXRlc3RtYXJrID0gbmVlZHNvc2R1cAotCitjbGFzcyBUZXN0RkRDYXB0dXJlOgogICAg
IGRlZiB0ZXN0X3NpbXBsZShzZWxmLCB0bXBmaWxlKToKICAgICAgICAgZmQgPSB0bXBmaWxlLmZp
bGVubygpCiAgICAgICAgIGNhcCA9IGNhcHR1cmUuRkRDYXB0dXJlKGZkKQotICAgICAgICBkYXRh
ID0gdG9ieXRlcygiaGVsbG8iKQorICAgICAgICBkYXRhID0gYiJoZWxsbyIKICAgICAgICAgb3Mu
d3JpdGUoZmQsIGRhdGEpCi0gICAgICAgIHMgPSBjYXAuc25hcCgpCisgICAgICAgIHB5dGVzdC5y
YWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGNhcC5zbmFwKQogICAgICAgICBjYXAuZG9uZSgpCi0gICAg
ICAgIGFzc2VydCBub3QgcwogICAgICAgICBjYXAgPSBjYXB0dXJlLkZEQ2FwdHVyZShmZCkKICAg
ICAgICAgY2FwLnN0YXJ0KCkKICAgICAgICAgb3Mud3JpdGUoZmQsIGRhdGEpCkBAIC05NDQsNyAr
OTczLDcgQEAgY2xhc3MgVGVzdEZEQ2FwdHVyZShvYmplY3QpOgogICAgICAgICBmZCA9IHRtcGZp
bGUuZmlsZW5vKCkKICAgICAgICAgY2FwID0gY2FwdHVyZS5GRENhcHR1cmUoZmQpCiAgICAgICAg
IGNhcC5kb25lKCkKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBjYXAuc3RhcnQp
CisgICAgICAgIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGNhcC5zdGFydCkKIAogICAg
IGRlZiB0ZXN0X3N0ZGVycihzZWxmKToKICAgICAgICAgY2FwID0gY2FwdHVyZS5GRENhcHR1cmUo
MikKQEAgLTk1NCw0OCArOTgzLDYzIEBAIGNsYXNzIFRlc3RGRENhcHR1cmUob2JqZWN0KToKICAg
ICAgICAgY2FwLmRvbmUoKQogICAgICAgICBhc3NlcnQgcyA9PSAiaGVsbG9cbiIKIAotICAgIGRl
ZiB0ZXN0X3N0ZGluKHNlbGYsIHRtcGZpbGUpOgorICAgIGRlZiB0ZXN0X3N0ZGluKHNlbGYpOgog
ICAgICAgICBjYXAgPSBjYXB0dXJlLkZEQ2FwdHVyZSgwKQogICAgICAgICBjYXAuc3RhcnQoKQog
ICAgICAgICB4ID0gb3MucmVhZCgwLCAxMDApLnN0cmlwKCkKICAgICAgICAgY2FwLmRvbmUoKQot
ICAgICAgICBhc3NlcnQgeCA9PSB0b2J5dGVzKCIiKQorICAgICAgICBhc3NlcnQgeCA9PSBiIiIK
IAogICAgIGRlZiB0ZXN0X3dyaXRlb3JnKHNlbGYsIHRtcGZpbGUpOgotICAgICAgICBkYXRhMSwg
ZGF0YTIgPSB0b2J5dGVzKCJmb28iKSwgdG9ieXRlcygiYmFyIikKKyAgICAgICAgZGF0YTEsIGRh
dGEyID0gYiJmb28iLCBiImJhciIKICAgICAgICAgY2FwID0gY2FwdHVyZS5GRENhcHR1cmUodG1w
ZmlsZS5maWxlbm8oKSkKICAgICAgICAgY2FwLnN0YXJ0KCkKICAgICAgICAgdG1wZmlsZS53cml0
ZShkYXRhMSkKICAgICAgICAgdG1wZmlsZS5mbHVzaCgpCi0gICAgICAgIGNhcC53cml0ZW9yZyhk
YXRhMikKKyAgICAgICAgY2FwLndyaXRlb3JnKGRhdGEyLmRlY29kZSgiYXNjaWkiKSkKICAgICAg
ICAgc2NhcCA9IGNhcC5zbmFwKCkKICAgICAgICAgY2FwLmRvbmUoKQotICAgICAgICBhc3NlcnQg
c2NhcCA9PSB0b3RleHQoZGF0YTEpCisgICAgICAgIGFzc2VydCBzY2FwID09IGRhdGExLmRlY29k
ZSgiYXNjaWkiKQogICAgICAgICB3aXRoIG9wZW4odG1wZmlsZS5uYW1lLCAicmIiKSBhcyBzdG1w
X2ZpbGU6CiAgICAgICAgICAgICBzdG1wID0gc3RtcF9maWxlLnJlYWQoKQogICAgICAgICAgICAg
YXNzZXJ0IHN0bXAgPT0gZGF0YTIKIAotICAgIGRlZiB0ZXN0X3NpbXBsZV9yZXN1bWVfc3VzcGVu
ZChzZWxmLCB0bXBmaWxlKToKKyAgICBkZWYgdGVzdF9zaW1wbGVfcmVzdW1lX3N1c3BlbmQoc2Vs
Zik6CiAgICAgICAgIHdpdGggc2F2ZWRfZmQoMSk6CiAgICAgICAgICAgICBjYXAgPSBjYXB0dXJl
LkZEQ2FwdHVyZSgxKQogICAgICAgICAgICAgY2FwLnN0YXJ0KCkKLSAgICAgICAgICAgIGRhdGEg
PSB0b2J5dGVzKCJoZWxsbyIpCisgICAgICAgICAgICBkYXRhID0gYiJoZWxsbyIKICAgICAgICAg
ICAgIG9zLndyaXRlKDEsIGRhdGEpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ3aGF0
ZXZlciIpCiAgICAgICAgICAgICBzID0gY2FwLnNuYXAoKQogICAgICAgICAgICAgYXNzZXJ0IHMg
PT0gImhlbGxvd2hhdGV2ZXIiCiAgICAgICAgICAgICBjYXAuc3VzcGVuZCgpCi0gICAgICAgICAg
ICBvcy53cml0ZSgxLCB0b2J5dGVzKCJ3b3JsZCIpKQorICAgICAgICAgICAgb3Mud3JpdGUoMSwg
YiJ3b3JsZCIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJxbHdrZWoiKQogICAgICAg
ICAgICAgYXNzZXJ0IG5vdCBjYXAuc25hcCgpCiAgICAgICAgICAgICBjYXAucmVzdW1lKCkKLSAg
ICAgICAgICAgIG9zLndyaXRlKDEsIHRvYnl0ZXMoImJ1dCBub3ciKSkKKyAgICAgICAgICAgIG9z
LndyaXRlKDEsIGIiYnV0IG5vdyIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgeWVz
XG4iKQogICAgICAgICAgICAgcyA9IGNhcC5zbmFwKCkKICAgICAgICAgICAgIGFzc2VydCBzID09
ICJidXQgbm93IHllc1xuIgogICAgICAgICAgICAgY2FwLnN1c3BlbmQoKQogICAgICAgICAgICAg
Y2FwLmRvbmUoKQotICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgY2Fw
LnN1c3BlbmQpCisgICAgICAgICAgICBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBjYXAu
c3VzcGVuZCkKKworICAgICAgICAgICAgYXNzZXJ0IHJlcHIoY2FwKSA9PSAoCisgICAgICAgICAg
ICAgICAgIjxGRENhcHR1cmUgMSBvbGRmZD17fSBfc3RhdGU9J2RvbmUnIHRtcGZpbGU9eyFyfT4i
LmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgY2FwLnRhcmdldGZkX3NhdmUsIGNhcC50bXBm
aWxlCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBTaG91
bGQgbm90IGNyYXNoIHdpdGggbWlzc2luZyAiX29sZCIuCisgICAgICAgICAgICBhc3NlcnQgcmVw
cihjYXAuc3lzY2FwdHVyZSkgPT0gKAorICAgICAgICAgICAgICAgICI8U3lzQ2FwdHVyZSBzdGRv
dXQgX29sZD08VU5TRVQ+IF9zdGF0ZT0nZG9uZScgdG1wZmlsZT17IXJ9PiIuZm9ybWF0KAorICAg
ICAgICAgICAgICAgICAgICBjYXAuc3lzY2FwdHVyZS50bXBmaWxlCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2FwZmRfc3lzX3N0ZG91dF9tb2RlKHNl
bGYsIGNhcGZkKToKKyAgICAgICAgYXNzZXJ0ICJiIiBub3QgaW4gc3lzLnN0ZG91dC5tb2RlCiAK
IAogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKQEAgLTEwMDgsNyArMTA1Miw3IEBAIGRlZiBz
YXZlZF9mZChmZCk6CiAgICAgICAgIG9zLmNsb3NlKG5ld19mZCkKIAogCi1jbGFzcyBUZXN0U3Rk
Q2FwdHVyZShvYmplY3QpOgorY2xhc3MgVGVzdFN0ZENhcHR1cmU6CiAgICAgY2FwdHVyZWNsYXNz
ID0gc3RhdGljbWV0aG9kKFN0ZENhcHR1cmUpCiAKICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFu
YWdlcgpAQCAtMTA1NywxOSArMTEwMSw5IEBAIGNsYXNzIFRlc3RTdGRDYXB0dXJlKG9iamVjdCk6
CiAKICAgICBkZWYgdGVzdF9jYXB0dXJpbmdfcmVhZG91dGVycl91bmljb2RlKHNlbGYpOgogICAg
ICAgICB3aXRoIHNlbGYuZ2V0Y2FwdHVyZSgpIGFzIGNhcDoKLSAgICAgICAgICAgIHByaW50KCJo
eFx4YzRceDg1XHhjNFx4ODciKQotICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXAucmVhZG91dGVy
cigpCi0gICAgICAgIGFzc2VydCBvdXQgPT0gcHkuYnVpbHRpbi5fdG90ZXh0KCJoeFx4YzRceDg1
XHhjNFx4ODdcbiIsICJ1dGY4IikKLQotICAgIEBweXRlc3QubWFyay5za2lwaWYoCi0gICAgICAg
ICJzeXMudmVyc2lvbl9pbmZvID49ICgzLCkiLCByZWFzb249InRleHQgb3V0cHV0IGRpZmZlcmVu
dCBmb3IgYnl0ZXMgb24gcHl0aG9uMyIKLSAgICApCi0gICAgZGVmIHRlc3RfY2FwdHVyaW5nX3Jl
YWRvdXRlcnJfZGVjb2RlX2Vycm9yX2hhbmRsaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYu
Z2V0Y2FwdHVyZSgpIGFzIGNhcDoKLSAgICAgICAgICAgICMgdHJpZ2dlcmVkIGFuIGludGVybmFs
IGVycm9yIGluIHB5dGVzdAotICAgICAgICAgICAgcHJpbnQoIlx4YTYiKQorICAgICAgICAgICAg
cHJpbnQoImh4xIXEhyIpCiAgICAgICAgICAgICBvdXQsIGVyciA9IGNhcC5yZWFkb3V0ZXJyKCkK
LSAgICAgICAgYXNzZXJ0IG91dCA9PSBweS5idWlsdGluLl90b3RleHQoIlx1ZmZmZFxuIiwgInVu
aWNvZGUtZXNjYXBlIikKKyAgICAgICAgYXNzZXJ0IG91dCA9PSAiaHjEhcSHXG4iCiAKICAgICBk
ZWYgdGVzdF9yZXNldF90d2ljZV9lcnJvcihzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmdldGNh
cHR1cmUoKSBhcyBjYXA6CkBAIC0xMTMzLDIxICsxMTY3LDM3IEBAIGNsYXNzIFRlc3RTdGRDYXB0
dXJlKG9iamVjdCk6CiAgICAgICAgIHByaW50KCJYWFggd2hpY2ggaW5kaWNhdGVzIGFuIGVycm9y
IGluIHRoZSB1bmRlcmx5aW5nIGNhcHR1cmluZyIpCiAgICAgICAgIHByaW50KCJYWFggbWVjaGFu
aXNtcyIpCiAgICAgICAgIHdpdGggc2VsZi5nZXRjYXB0dXJlKCk6Ci0gICAgICAgICAgICBweXRl
c3QucmFpc2VzKElPRXJyb3IsICJzeXMuc3RkaW4ucmVhZCgpIikKKyAgICAgICAgICAgIHB5dGVz
dC5yYWlzZXMoT1NFcnJvciwgc3lzLnN0ZGluLnJlYWQpCisKKworY2xhc3MgVGVzdFRlZVN0ZENh
cHR1cmUoVGVzdFN0ZENhcHR1cmUpOgorICAgIGNhcHR1cmVjbGFzcyA9IHN0YXRpY21ldGhvZChU
ZWVTdGRDYXB0dXJlKQorCisgICAgZGVmIHRlc3RfY2FwdHVyaW5nX2Vycm9yX3JlY3Vyc2l2ZShz
ZWxmKToKKyAgICAgICAgciIiIkZvciBUZWVTdGRDYXB0dXJlIHNpbmNlIHdlIHBhc3N0aHJvdWdo
IHN0ZGVyci9zdGRvdXQsIGNhcDEKKyAgICAgICAgc2hvdWxkIGdldCBhbGwgb3V0cHV0LCB3aGls
ZSBjYXAyIHNob3VsZCBvbmx5IGdldCAiY2FwMlxuIi4iIiIKKworICAgICAgICB3aXRoIHNlbGYu
Z2V0Y2FwdHVyZSgpIGFzIGNhcDE6CisgICAgICAgICAgICBwcmludCgiY2FwMSIpCisgICAgICAg
ICAgICB3aXRoIHNlbGYuZ2V0Y2FwdHVyZSgpIGFzIGNhcDI6CisgICAgICAgICAgICAgICAgcHJp
bnQoImNhcDIiKQorICAgICAgICAgICAgICAgIG91dDIsIGVycjIgPSBjYXAyLnJlYWRvdXRlcnIo
KQorICAgICAgICAgICAgICAgIG91dDEsIGVycjEgPSBjYXAxLnJlYWRvdXRlcnIoKQorICAgICAg
ICBhc3NlcnQgb3V0MSA9PSAiY2FwMVxuY2FwMlxuIgorICAgICAgICBhc3NlcnQgb3V0MiA9PSAi
Y2FwMlxuIgogCiAKIGNsYXNzIFRlc3RTdGRDYXB0dXJlRkQoVGVzdFN0ZENhcHR1cmUpOgotICAg
IHB5dGVzdG1hcmsgPSBuZWVkc29zZHVwCiAgICAgY2FwdHVyZWNsYXNzID0gc3RhdGljbWV0aG9k
KFN0ZENhcHR1cmVGRCkKIAogICAgIGRlZiB0ZXN0X3NpbXBsZV9vbmx5X2ZkKHNlbGYsIHRlc3Rk
aXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgICIiIlwKICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgZGVmIHRlc3Rf
eCgpOgotICAgICAgICAgICAgICAgIG9zLndyaXRlKDEsICJoZWxsb1xcbiIuZW5jb2RlKCJhc2Np
aSIpKQorICAgICAgICAgICAgICAgIG9zLndyaXRlKDEsIGIiaGVsbG9cXG4iKQogICAgICAgICAg
ICAgICAgIGFzc2VydCAwCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkK
ICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKQEAgLTExNjAsMTQgKzEyMTAsMTQgQEAgY2xh
c3MgVGVzdFN0ZENhcHR1cmVGRChUZXN0U3RkQ2FwdHVyZSk6CiAKICAgICBkZWYgdGVzdF9pbnRl
cm1pbmdsaW5nKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuZ2V0Y2FwdHVyZSgpIGFzIGNhcDoK
LSAgICAgICAgICAgIG9zd3JpdGVieXRlcygxLCAiMSIpCisgICAgICAgICAgICBvcy53cml0ZSgx
LCBiIjEiKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzdHIoMikpCiAgICAgICAgICAg
ICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIG9zd3JpdGVieXRlcygxLCAiMyIpCi0g
ICAgICAgICAgICBvc3dyaXRlYnl0ZXMoMiwgImEiKQorICAgICAgICAgICAgb3Mud3JpdGUoMSwg
YiIzIikKKyAgICAgICAgICAgIG9zLndyaXRlKDIsIGIiYSIpCiAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCJiIikKICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAg
ICAgb3N3cml0ZWJ5dGVzKDIsICJjIikKKyAgICAgICAgICAgIG9zLndyaXRlKDIsIGIiYyIpCiAg
ICAgICAgICAgICBvdXQsIGVyciA9IGNhcC5yZWFkb3V0ZXJyKCkKICAgICAgICAgYXNzZXJ0IG91
dCA9PSAiMTIzIgogICAgICAgICBhc3NlcnQgZXJyID09ICJhYmMiCkBAIC0xMTc2LDMxICsxMjI2
LDQ3IEBAIGNsYXNzIFRlc3RTdGRDYXB0dXJlRkQoVGVzdFN0ZENhcHR1cmUpOgogICAgICAgICB3
aXRoIGxzb2ZfY2hlY2soKToKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKICAgICAg
ICAgICAgICAgICBjYXAgPSBTdGRDYXB0dXJlRkQoKQorICAgICAgICAgICAgICAgIGNhcC5zdGFy
dF9jYXB0dXJpbmcoKQogICAgICAgICAgICAgICAgIGNhcC5zdG9wX2NhcHR1cmluZygpCiAKIAot
Y2xhc3MgVGVzdFN0ZENhcHR1cmVGRGludmFsaWRGRChvYmplY3QpOgotICAgIHB5dGVzdG1hcmsg
PSBuZWVkc29zZHVwCi0KK2NsYXNzIFRlc3RTdGRDYXB0dXJlRkRpbnZhbGlkRkQ6CiAgICAgZGVm
IHRlc3Rfc3RkY2FwdHVyZV9mZF9pbnZhbGlkX2ZkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBv
cworICAgICAgICAgICAgZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAgICAgICAgICAgICBm
cm9tIF9weXRlc3QgaW1wb3J0IGNhcHR1cmUKKwogICAgICAgICAgICAgZGVmIFN0ZENhcHR1cmVG
RChvdXQ9VHJ1ZSwgZXJyPVRydWUsIGluXz1UcnVlKToKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y2FwdHVyZS5NdWx0aUNhcHR1cmUob3V0LCBlcnIsIGluXywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJlPWNhcHR1cmUuRkRDYXB0dXJlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjYXB0dXJlLk11bHRpQ2FwdHVyZSgKKyAgICAgICAgICAgICAg
ICAgICAgaW5fPWNhcHR1cmUuRkRDYXB0dXJlKDApIGlmIGluXyBlbHNlIE5vbmUsCisgICAgICAg
ICAgICAgICAgICAgIG91dD1jYXB0dXJlLkZEQ2FwdHVyZSgxKSBpZiBvdXQgZWxzZSBOb25lLAor
ICAgICAgICAgICAgICAgICAgICBlcnI9Y2FwdHVyZS5GRENhcHR1cmUoMikgaWYgZXJyIGVsc2Ug
Tm9uZSwKKyAgICAgICAgICAgICAgICApCisKICAgICAgICAgICAgIGRlZiB0ZXN0X3N0ZG91dCgp
OgogICAgICAgICAgICAgICAgIG9zLmNsb3NlKDEpCiAgICAgICAgICAgICAgICAgY2FwID0gU3Rk
Q2FwdHVyZUZEKG91dD1UcnVlLCBlcnI9RmFsc2UsIGluXz1GYWxzZSkKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgZm5tYXRjaChyZXByKGNhcC5vdXQpLCAiPEZEQ2FwdHVyZSAxIG9sZGZkPSogX3N0
YXRlPSdpbml0aWFsaXplZCcgdG1wZmlsZT0qPiIpCisgICAgICAgICAgICAgICAgY2FwLnN0YXJ0
X2NhcHR1cmluZygpCisgICAgICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiJzdGRvdXQiKQorICAg
ICAgICAgICAgICAgIGFzc2VydCBjYXAucmVhZG91dGVycigpID09ICgic3Rkb3V0IiwgIiIpCiAg
ICAgICAgICAgICAgICAgY2FwLnN0b3BfY2FwdHVyaW5nKCkKKwogICAgICAgICAgICAgZGVmIHRl
c3Rfc3RkZXJyKCk6CiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoMikKICAgICAgICAgICAgICAg
ICBjYXAgPSBTdGRDYXB0dXJlRkQob3V0PUZhbHNlLCBlcnI9VHJ1ZSwgaW5fPUZhbHNlKQorICAg
ICAgICAgICAgICAgIGFzc2VydCBmbm1hdGNoKHJlcHIoY2FwLmVyciksICI8RkRDYXB0dXJlIDIg
b2xkZmQ9KiBfc3RhdGU9J2luaXRpYWxpemVkJyB0bXBmaWxlPSo+IikKKyAgICAgICAgICAgICAg
ICBjYXAuc3RhcnRfY2FwdHVyaW5nKCkKKyAgICAgICAgICAgICAgICBvcy53cml0ZSgyLCBiInN0
ZGVyciIpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGNhcC5yZWFkb3V0ZXJyKCkgPT0gKCIiLCAi
c3RkZXJyIikKICAgICAgICAgICAgICAgICBjYXAuc3RvcF9jYXB0dXJpbmcoKQorCiAgICAgICAg
ICAgICBkZWYgdGVzdF9zdGRpbigpOgogICAgICAgICAgICAgICAgIG9zLmNsb3NlKDApCiAgICAg
ICAgICAgICAgICAgY2FwID0gU3RkQ2FwdHVyZUZEKG91dD1GYWxzZSwgZXJyPUZhbHNlLCBpbl89
VHJ1ZSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgZm5tYXRjaChyZXByKGNhcC5pbl8pLCAiPEZE
Q2FwdHVyZSAwIG9sZGZkPSogX3N0YXRlPSdpbml0aWFsaXplZCcgdG1wZmlsZT0qPiIpCiAgICAg
ICAgICAgICAgICAgY2FwLnN0b3BfY2FwdHVyaW5nKCkKICAgICAgICAgIiIiCiAgICAgICAgICkK
QEAgLTEyMDgsNiArMTI3NCwzNyBAQCBjbGFzcyBUZXN0U3RkQ2FwdHVyZUZEaW52YWxpZEZEKG9i
amVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAgICAgYXNzZXJ0IHJl
c3VsdC5wYXJzZW91dGNvbWVzKClbInBhc3NlZCJdID09IDMKIAorICAgIGRlZiB0ZXN0X2ZkY2Fw
dHVyZV9pbnZhbGlkX2ZkX3dpdGhfZmRfcmV1c2Uoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHdp
dGggc2F2ZWRfZmQoMSk6CisgICAgICAgICAgICBvcy5jbG9zZSgxKQorICAgICAgICAgICAgY2Fw
ID0gY2FwdHVyZS5GRENhcHR1cmVCaW5hcnkoMSkKKyAgICAgICAgICAgIGNhcC5zdGFydCgpCisg
ICAgICAgICAgICBvcy53cml0ZSgxLCBiInN0YXJ0ZWQiKQorICAgICAgICAgICAgY2FwLnN1c3Bl
bmQoKQorICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiIgc3VzcGVuZGVkIikKKyAgICAgICAgICAg
IGNhcC5yZXN1bWUoKQorICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiIgcmVzdW1lZCIpCisgICAg
ICAgICAgICBhc3NlcnQgY2FwLnNuYXAoKSA9PSBiInN0YXJ0ZWQgcmVzdW1lZCIKKyAgICAgICAg
ICAgIGNhcC5kb25lKCkKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhPU0Vycm9yKToK
KyAgICAgICAgICAgICAgICBvcy53cml0ZSgxLCBiImRvbmUiKQorCisgICAgZGVmIHRlc3RfZmRj
YXB0dXJlX2ludmFsaWRfZmRfd2l0aG91dF9mZF9yZXVzZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAg
ICAgd2l0aCBzYXZlZF9mZCgxKSwgc2F2ZWRfZmQoMik6CisgICAgICAgICAgICBvcy5jbG9zZSgx
KQorICAgICAgICAgICAgb3MuY2xvc2UoMikKKyAgICAgICAgICAgIGNhcCA9IGNhcHR1cmUuRkRD
YXB0dXJlQmluYXJ5KDIpCisgICAgICAgICAgICBjYXAuc3RhcnQoKQorICAgICAgICAgICAgb3Mu
d3JpdGUoMiwgYiJzdGFydGVkIikKKyAgICAgICAgICAgIGNhcC5zdXNwZW5kKCkKKyAgICAgICAg
ICAgIG9zLndyaXRlKDIsIGIiIHN1c3BlbmRlZCIpCisgICAgICAgICAgICBjYXAucmVzdW1lKCkK
KyAgICAgICAgICAgIG9zLndyaXRlKDIsIGIiIHJlc3VtZWQiKQorICAgICAgICAgICAgYXNzZXJ0
IGNhcC5zbmFwKCkgPT0gYiJzdGFydGVkIHJlc3VtZWQiCisgICAgICAgICAgICBjYXAuZG9uZSgp
CisgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoT1NFcnJvcik6CisgICAgICAgICAgICAg
ICAgb3Mud3JpdGUoMiwgYiJkb25lIikKKwogCiBkZWYgdGVzdF9jYXB0dXJlX25vdF9zdGFydGVk
X2J1dF9yZXNldCgpOgogICAgIGNhcHN5cyA9IFN0ZENhcHR1cmUoKQpAQCAtMTIzMSwxMiArMTMy
OCw4IEBAIGRlZiB0ZXN0X2NhcHN5c19yZXN1bHRzX2FjY2Vzc2libGVfYnlfYXR0cmlidXRlKGNh
cHN5cyk6CiAgICAgYXNzZXJ0IGNhcHR1cmVfcmVzdWx0LmVyciA9PSAiZWdncyIKIAogCi1AbmVl
ZHNvc2R1cAotQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ1c2UiLCBbVHJ1ZSwgRmFsc2VdKQot
ZGVmIHRlc3RfZmRjYXB0dXJlX3RtcGZpbGVfcmVtYWluc190aGVfc2FtZSh0bXBmaWxlLCB1c2Up
OgotICAgIGlmIG5vdCB1c2U6Ci0gICAgICAgIHRtcGZpbGUgPSBUcnVlCi0gICAgY2FwID0gU3Rk
Q2FwdHVyZUZEKG91dD1GYWxzZSwgZXJyPXRtcGZpbGUpCitkZWYgdGVzdF9mZGNhcHR1cmVfdG1w
ZmlsZV9yZW1haW5zX3RoZV9zYW1lKCkgLT4gTm9uZToKKyAgICBjYXAgPSBTdGRDYXB0dXJlRkQo
b3V0PUZhbHNlLCBlcnI9VHJ1ZSkKICAgICB0cnk6CiAgICAgICAgIGNhcC5zdGFydF9jYXB0dXJp
bmcoKQogICAgICAgICBjYXBmaWxlID0gY2FwLmVyci50bXBmaWxlCkBAIC0xMjQ3LDcgKzEzNDAs
NiBAQCBkZWYgdGVzdF9mZGNhcHR1cmVfdG1wZmlsZV9yZW1haW5zX3RoZV9zYW1lKHRtcGZpbGUs
IHVzZSk6CiAgICAgYXNzZXJ0IGNhcGZpbGUyID09IGNhcGZpbGUKIAogCi1AbmVlZHNvc2R1cAog
ZGVmIHRlc3RfY2xvc2VfYW5kX2NhcHR1cmVfYWdhaW4odGVzdGRpcik6CiAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAiIiIKQEAgLTEyNzAsMzAgKzEzNjIsMzMgQEAgZGVmIHRlc3Rf
Y2xvc2VfYW5kX2NhcHR1cmVfYWdhaW4odGVzdGRpcik6CiAgICAgKQogCiAKLUBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgibWV0aG9kIiwgWyJTeXNDYXB0dXJlIiwgIkZEQ2FwdHVyZSJdKQotZGVm
IHRlc3RfY2FwdHVyaW5nX2FuZF9sb2dnaW5nX2Z1bmRhbWVudGFscyh0ZXN0ZGlyLCBtZXRob2Qp
OgotICAgIGlmIG1ldGhvZCA9PSAiU3RkQ2FwdHVyZUZEIiBhbmQgbm90IGhhc2F0dHIob3MsICJk
dXAiKToKLSAgICAgICAgcHl0ZXN0LnNraXAoIm5lZWQgb3MuZHVwIikKK0BweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgKKyAgICAibWV0aG9kIiwgWyJTeXNDYXB0dXJlKDIpIiwgIlN5c0NhcHR1cmUo
MiwgdGVlPVRydWUpIiwgIkZEQ2FwdHVyZSgyKSJdCispCitkZWYgdGVzdF9jYXB0dXJpbmdfYW5k
X2xvZ2dpbmdfZnVuZGFtZW50YWxzKHRlc3RkaXIsIG1ldGhvZDogc3RyKSAtPiBOb25lOgogICAg
ICMgaGVyZSB3ZSBjaGVjayBhIGZ1bmRhbWVudGFsIGZlYXR1cmUKICAgICBwID0gdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHN5cywgb3MKICAgICAgICAg
aW1wb3J0IHB5LCBsb2dnaW5nCiAgICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgY2FwdHVyZQot
ICAgICAgICBjYXAgPSBjYXB0dXJlLk11bHRpQ2FwdHVyZShvdXQ9RmFsc2UsIGluXz1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJlPWNhcHR1cmUuJXMp
CisgICAgICAgIGNhcCA9IGNhcHR1cmUuTXVsdGlDYXB0dXJlKAorICAgICAgICAgICAgaW5fPU5v
bmUsCisgICAgICAgICAgICBvdXQ9Tm9uZSwKKyAgICAgICAgICAgIGVycj1jYXB0dXJlLiVzLAor
ICAgICAgICApCiAgICAgICAgIGNhcC5zdGFydF9jYXB0dXJpbmcoKQogCi0gICAgICAgIGxvZ2dp
bmcud2FybigiaGVsbG8xIikKKyAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzEiKQogICAg
ICAgICBvdXRlcnIgPSBjYXAucmVhZG91dGVycigpCi0gICAgICAgIHByaW50ICgic3VzcGVuZCwg
Y2FwdHVyZWQgJSVzIiAlJShvdXRlcnIsKSkKLSAgICAgICAgbG9nZ2luZy53YXJuKCJoZWxsbzIi
KQorICAgICAgICBwcmludCgic3VzcGVuZCwgY2FwdHVyZWQgJSVzIiAlJShvdXRlcnIsKSkKKyAg
ICAgICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzIiKQogCiAgICAgICAgIGNhcC5wb3Bfb3V0ZXJy
X3RvX29yaWcoKQotICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvMyIpCisgICAgICAgIGxvZ2dp
bmcud2FybmluZygiaGVsbG8zIikKIAogICAgICAgICBvdXRlcnIgPSBjYXAucmVhZG91dGVycigp
Ci0gICAgICAgIHByaW50ICgic3VzcGVuZDIsIGNhcHR1cmVkICUlcyIgJSUgKG91dGVyciwpKQor
ICAgICAgICBwcmludCgic3VzcGVuZDIsIGNhcHR1cmVkICUlcyIgJSUgKG91dGVyciwpKQogICAg
ICIiIgogICAgICAgICAlIChtZXRob2QsKQogICAgICkKQEAgLTEzMTcsOCArMTQxMiw4IEBAIGRl
ZiB0ZXN0X2Vycm9yX2F0dHJpYnV0ZV9pc3N1ZTU1NSh0ZXN0ZGlyKToKICAgICAgICAgIiIiCiAg
ICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgZGVmIHRlc3RfY2FwYXR0cigpOgotICAgICAgICAg
ICAgYXNzZXJ0IHN5cy5zdGRvdXQuZXJyb3JzID09ICJzdHJpY3QiCi0gICAgICAgICAgICBhc3Nl
cnQgc3lzLnN0ZGVyci5lcnJvcnMgPT0gInN0cmljdCIKKyAgICAgICAgICAgIGFzc2VydCBzeXMu
c3Rkb3V0LmVycm9ycyA9PSAicmVwbGFjZSIKKyAgICAgICAgICAgIGFzc2VydCBzeXMuc3RkZXJy
LmVycm9ycyA9PSAicmVwbGFjZSIKICAgICAiIiIKICAgICApCiAgICAgcmVwcmVjID0gdGVzdGRp
ci5pbmxpbmVfcnVuKCkKQEAgLTEzMjksMTkgKzE0MjQsMTggQEAgZGVmIHRlc3RfZXJyb3JfYXR0
cmlidXRlX2lzc3VlNTU1KHRlc3RkaXIpOgogICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgid2luIikgYW5kIHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA2KSwKICAgICByZWFzb249
Im9ubHkgcHkzLjYrIG9uIHdpbmRvd3MiLAogKQotZGVmIHRlc3RfcHkzNl93aW5kb3dzY29uc29s
ZWlvX3dvcmthcm91bmRfbm9uX3N0YW5kYXJkX3N0cmVhbXMoKToKK2RlZiB0ZXN0X3B5MzZfd2lu
ZG93c2NvbnNvbGVpb193b3JrYXJvdW5kX25vbl9zdGFuZGFyZF9zdHJlYW1zKCkgLT4gTm9uZToK
ICAgICAiIiIKICAgICBFbnN1cmUgX3B5MzZfd2luZG93c2NvbnNvbGVpb193b3JrYXJvdW5kIGZ1
bmN0aW9uIHdvcmtzIHdpdGggb2JqZWN0cyB0aGF0CiAgICAgZG8gbm90IGltcGxlbWVudCB0aGUg
ZnVsbCBgYGlvYGAtYmFzZWQgc3RyZWFtIHByb3RvY29sLCBmb3IgZXhhbXBsZSBleGVjbmV0IGNo
YW5uZWxzICgjMjY2NikuCiAgICAgIiIiCiAgICAgZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0
IF9weTM2X3dpbmRvd3Njb25zb2xlaW9fd29ya2Fyb3VuZAogCi0gICAgY2xhc3MgRHVtbXlTdHJl
YW0ob2JqZWN0KToKLQorICAgIGNsYXNzIER1bW15U3RyZWFtOgogICAgICAgICBkZWYgd3JpdGUo
c2VsZiwgcyk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBzdHJlYW0gPSBEdW1teVN0cmVhbSgp
CisgICAgc3RyZWFtID0gY2FzdChUZXh0SU8sIER1bW15U3RyZWFtKCkpCiAgICAgX3B5MzZfd2lu
ZG93c2NvbnNvbGVpb193b3JrYXJvdW5kKHN0cmVhbSkKIAogCkBAIC0xMzYwLDM1ICsxNDU0LDIw
MCBAQCBkZWYgdGVzdF9kb250cmVhZGZyb21pbnB1dF9oYXNfZW5jb2RpbmcodGVzdGRpcik6CiAK
IAogZGVmIHRlc3RfY3Jhc2hfb25fY2xvc2luZ190bXBmaWxlX3B5MjcodGVzdGRpcik6Ci0gICAg
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAg
ICIiIgotICAgICAgICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gICAg
ICAgIGltcG9ydCB0aW1lCiAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICAgICAgaW1wb3J0
IHN5cwogCisgICAgICAgIHByaW50aW5nID0gdGhyZWFkaW5nLkV2ZW50KCkKKwogICAgICAgICBk
ZWYgc3BhbSgpOgogICAgICAgICAgICAgZiA9IHN5cy5zdGRlcnIKKyAgICAgICAgICAgIHByaW50
KCdTUEFNQkVGT1JFJywgZW5kPScnLCBmaWxlPWYpCisgICAgICAgICAgICBwcmludGluZy5zZXQo
KQorCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHByaW50KCcuJywg
ZW5kPScnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAg
ICBmLmZsdXNoKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3Ip
OgorICAgICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIGRlZiB0ZXN0X3NpbGx5KCk6
CisgICAgICAgIGRlZiB0ZXN0X3NwYW1faW5fdGhyZWFkKCk6CiAgICAgICAgICAgICB0ID0gdGhy
ZWFkaW5nLlRocmVhZCh0YXJnZXQ9c3BhbSkKICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQog
ICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKIAorICAg
ICAgICAgICAgcHJpbnRpbmcud2FpdCgpCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgICMgRG8gbm90IGNvbnNpZGVyIHBsdWdp
bnMgbGlrZSBoeXBvdGhlc2lzLCB3aGljaCBtaWdodCBvdXRwdXQgdG8gc3RkZXJyLgorICAgIHRl
c3RkaXIubW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQi
LCAiMSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcyhzdHIocCkp
CisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgIGFzc2VydCByZXN1bHQuc3RkZXJyLnN0
cigpID09ICIiCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipPU0Vycm9yKiIp
CisKKworZGVmIHRlc3RfZ2xvYmFsX2NhcHR1cmVfd2l0aF9saXZlX2xvZ2dpbmcodGVzdGRpcik6
CisgICAgIyBJc3N1ZSAzODE5CisgICAgIyBjYXB0dXJlIHNob3VsZCB3b3JrIHdpdGggbGl2ZSBj
bGkgbG9nZ2luZworCisgICAgIyBUZWFyZG93biByZXBvcnQgc2VlbXMgdG8gaGF2ZSB0aGUgY2Fw
dHVyZSBmb3IgdGhlIHdob2xlIHByb2Nlc3MgKHNldHVwLCBjYXB0dXJlLCB0ZWFyZG93bikKKyAg
ICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBweXRlc3Rf
cnVudGVzdF9sb2dyZXBvcnQocmVwb3J0KToKKyAgICAgICAgICAgIGlmICJ0ZXN0X2dsb2JhbCIg
aW4gcmVwb3J0Lm5vZGVpZDoKKyAgICAgICAgICAgICAgICBpZiByZXBvcnQud2hlbiA9PSAidGVh
cmRvd24iOgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oImNhcGxvZyIsICJ3IikgYXMg
ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUocmVwb3J0LmNhcGxvZykKKyAgICAg
ICAgICAgICAgICAgICAgd2l0aCBvcGVuKCJjYXBzdGRvdXQiLCAidyIpIGFzIGY6CisgICAgICAg
ICAgICAgICAgICAgICAgICBmLndyaXRlKHJlcG9ydC5jYXBzdGRvdXQpCisgICAgICAgICIiIgor
ICAgICkKKworICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGlt
cG9ydCBsb2dnaW5nCisgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgaW1wb3J0IHB5dGVzdAor
CisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisgICAgICAg
IEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgZml4MSgpOgorICAgICAgICAgICAgcHJpbnQo
ImZpeCBzZXR1cCIpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oImZpeCBzZXR1cCIpCisgICAg
ICAgICAgICB5aWVsZAorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCJmaXggdGVhcmRvd24iKQor
ICAgICAgICAgICAgcHJpbnQoImZpeCB0ZWFyZG93biIpCisKKyAgICAgICAgZGVmIHRlc3RfZ2xv
YmFsKGZpeDEpOgorICAgICAgICAgICAgcHJpbnQoImJlZ2luIHRlc3QiKQorICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCJzb21ldGhpbmcgaW4gdGVzdCIpCisgICAgICAgICAgICBwcmludCgiZW5k
IHRlc3QiKQorICAgICAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3Rfc3VicHJvY2VzcygiLS1sb2ctY2xpLWxldmVsPUlORk8iKQorICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDAKKworICAgIHdpdGggb3BlbigiY2FwbG9nIikgYXMgZjoKKyAgICAgICAgY2FwbG9n
ID0gZi5yZWFkKCkKKworICAgIGFzc2VydCAiZml4IHNldHVwIiBpbiBjYXBsb2cKKyAgICBhc3Nl
cnQgInNvbWV0aGluZyBpbiB0ZXN0IiBpbiBjYXBsb2cKKyAgICBhc3NlcnQgImZpeCB0ZWFyZG93
biIgaW4gY2FwbG9nCisKKyAgICB3aXRoIG9wZW4oImNhcHN0ZG91dCIpIGFzIGY6CisgICAgICAg
IGNhcHN0ZG91dCA9IGYucmVhZCgpCisKKyAgICBhc3NlcnQgImZpeCBzZXR1cCIgaW4gY2Fwc3Rk
b3V0CisgICAgYXNzZXJ0ICJiZWdpbiB0ZXN0IiBpbiBjYXBzdGRvdXQKKyAgICBhc3NlcnQgImVu
ZCB0ZXN0IiBpbiBjYXBzdGRvdXQKKyAgICBhc3NlcnQgImZpeCB0ZWFyZG93biIgaW4gY2Fwc3Rk
b3V0CisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJjYXB0dXJlX2ZpeHR1cmUiLCBbImNh
cHN5cyIsICJjYXBmZCJdKQorZGVmIHRlc3RfY2FwdHVyZV93aXRoX2xpdmVfbG9nZ2luZyh0ZXN0
ZGlyLCBjYXB0dXJlX2ZpeHR1cmUpOgorICAgICMgSXNzdWUgMzgxOQorICAgICMgY2FwdHVyZSBz
aG91bGQgd29yayB3aXRoIGxpdmUgY2xpIGxvZ2dpbmcKKworICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBsb2dnaW5nCisgICAgICAgIGltcG9ydCBz
eXMKKworICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworICAg
ICAgICBkZWYgdGVzdF9jYXB0dXJlKHswfSk6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iKQor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgid29ybGRcXG4iKQorICAgICAgICAgICAgY2Fw
dHVyZWQgPSB7MH0ucmVhZG91dGVycigpCisgICAgICAgICAgICBhc3NlcnQgY2FwdHVyZWQub3V0
ID09ICJoZWxsb1xcbiIKKyAgICAgICAgICAgIGFzc2VydCBjYXB0dXJlZC5lcnIgPT0gIndvcmxk
XFxuIgorCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oInNvbWV0aGluZyIpCisgICAgICAgICAg
ICBwcmludCgibmV4dCIpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oInNvbWV0aGluZyIpCisK
KyAgICAgICAgICAgIGNhcHR1cmVkID0gezB9LnJlYWRvdXRlcnIoKQorICAgICAgICAgICAgYXNz
ZXJ0IGNhcHR1cmVkLm91dCA9PSAibmV4dFxcbiIKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAg
ICAgICAgIGNhcHR1cmVfZml4dHVyZQorICAgICAgICApCisgICAgKQorCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygiLS1sb2ctY2xpLWxldmVsPUlORk8iKQogICAg
IGFzc2VydCByZXN1bHQucmV0ID09IDAKLSAgICBhc3NlcnQgIklPRXJyb3IiIG5vdCBpbiByZXN1
bHQuc3Rkb3V0LnN0cigpCiAKIAotZGVmIHRlc3RfcGlja2xpbmdfYW5kX3VucGlja2xpbmdfZW5j
b2RlZF9maWxlKCk6Ci0gICAgIyBTZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5dGVzdC1kZXYv
cHl0ZXN0L3B1bGwtcmVxdWVzdC8xOTQKLSAgICAjIHBpY2tsZS5sb2FkcygpIHJhaXNlcyBpbmZp
bml0ZSByZWN1cnNpb24gaWYKLSAgICAjIEVuY29kZWRGaWxlLl9fZ2V0YXR0cl9fIGlzIG5vdCBp
bXBsZW1lbnRlZCBwcm9wZXJseQotICAgIGVmID0gY2FwdHVyZS5FbmNvZGVkRmlsZShOb25lLCBO
b25lKQotICAgIGVmX2FzX3N0ciA9IHBpY2tsZS5kdW1wcyhlZikKLSAgICBwaWNrbGUubG9hZHMo
ZWZfYXNfc3RyKQorZGVmIHRlc3RfdHlwZWVycm9yX2VuY29kZWRmaWxlX3dyaXRlKHRlc3RkaXIp
OgorICAgICIiIkl0IHNob3VsZCBiZWhhdmUgdGhlIHNhbWUgd2l0aCBhbmQgd2l0aG91dCBvdXRw
dXQgY2FwdHVyaW5nICgjNDg2MSkuIiIiCisgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2ZhaWxzKCk6CisgICAgICAgICAgICBpbXBvcnQg
c3lzCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGIiZm9vIikKKyAgICAiIiIKKyAgICAp
CisgICAgcmVzdWx0X3dpdGhvdXRfY2FwdHVyZSA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIsIHN0
cihwKSkKKyAgICByZXN1bHRfd2l0aF9jYXB0dXJlID0gdGVzdGRpci5ydW5weXRlc3Qoc3RyKHAp
KQorCisgICAgYXNzZXJ0IHJlc3VsdF93aXRoX2NhcHR1cmUucmV0ID09IHJlc3VsdF93aXRob3V0
X2NhcHR1cmUucmV0CisgICAgb3V0ID0gcmVzdWx0X3dpdGhfY2FwdHVyZS5zdGRvdXQuc3RyKCkK
KyAgICBhc3NlcnQgKCJUeXBlRXJyb3I6IHdyaXRlKCkgYXJndW1lbnQgbXVzdCBiZSBzdHIsIG5v
dCBieXRlcyIgaW4gb3V0KSBvciAoCisgICAgICAgICJUeXBlRXJyb3I6IHVuaWNvZGUgYXJndW1l
bnQgZXhwZWN0ZWQsIGdvdCAnYnl0ZXMnIiBpbiBvdXQKKyAgICApCisKKworZGVmIHRlc3Rfc3Rk
ZXJyX3dyaXRlX3JldHVybnNfbGVuKGNhcHN5cyk6CisgICAgIiIiV3JpdGUgb24gRW5jb2RlZCBm
aWxlcywgbmFtZWx5IGNhcHR1cmVkIHN0ZGVyciwgc2hvdWxkIHJldHVybiBudW1iZXIgb2YgY2hh
cmFjdGVycyB3cml0dGVuLiIiIgorICAgIGFzc2VydCBzeXMuc3RkZXJyLndyaXRlKCJGb28iKSA9
PSAzCisKKworZGVmIHRlc3RfZW5jb2RlZGZpbGVfd3JpdGVsaW5lcyh0bXBmaWxlOiBCaW5hcnlJ
TykgLT4gTm9uZToKKyAgICBlZiA9IGNhcHR1cmUuRW5jb2RlZEZpbGUodG1wZmlsZSwgZW5jb2Rp
bmc9InV0Zi04IikKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAg
ZWYud3JpdGVsaW5lcyhbYiJsaW5lMSIsIGIibGluZTIiXSkKKyAgICBhc3NlcnQgZWYud3JpdGVs
aW5lcyhbImxpbmUzIiwgImxpbmU0Il0pIGlzIE5vbmUgICMgdHlwZTogaWdub3JlW2Z1bmMtcmV0
dXJucy12YWx1ZV0KKyAgICBlZi5mbHVzaCgpCisgICAgdG1wZmlsZS5zZWVrKDApCisgICAgYXNz
ZXJ0IHRtcGZpbGUucmVhZCgpID09IGIibGluZTNsaW5lNCIKKyAgICB0bXBmaWxlLmNsb3NlKCkK
KyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIGVmLnJlYWQoKQor
CisKK2RlZiB0ZXN0X19nZXRfbXVsdGljYXB0dXJlKCkgLT4gTm9uZToKKyAgICBhc3NlcnQgaXNp
bnN0YW5jZShfZ2V0X211bHRpY2FwdHVyZSgibm8iKSwgTXVsdGlDYXB0dXJlKQorICAgIHB5dGVz
dC5yYWlzZXMoVmFsdWVFcnJvciwgX2dldF9tdWx0aWNhcHR1cmUsICJ1bmtub3duIikubWF0Y2go
CisgICAgICAgIHIiXnVua25vd24gY2FwdHVyaW5nIG1ldGhvZDogJ3Vua25vd24nIgorICAgICkK
KworCitkZWYgdGVzdF9sb2dnaW5nX3doaWxlX2NvbGxlY3RpbmcodGVzdGRpcik6CisgICAgIiIi
SXNzdWUgIzYyNDA6IENhbGxzIHRvIGxvZ2dpbmcueHh4KCkgZHVyaW5nIGNvbGxlY3Rpb24gY2F1
c2VzIGFsbCBsb2dnaW5nIGNhbGxzIHRvIGJlIGR1cGxpY2F0ZWQgdG8gc3RkZXJyIiIiCisgICAg
cCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiXAorICAgICAgICBpbXBvcnQgbG9n
Z2luZworCisgICAgICAgIGxvZ2dpbmcud2FybmluZygiZHVyaW5nIGNvbGxlY3Rpb24iKQorCisg
ICAgICAgIGRlZiB0ZXN0X2xvZ2dpbmcoKToKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygi
ZHVyaW5nIGNhbGwiKQorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICIiIgorICAg
ICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKHApCisgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuVEVTVFNfRkFJTEVECisgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKnRlc3RfKi5weSBGKiIs
CisgICAgICAgICAgICAiPT09PSogRkFJTFVSRVMgKj09PT0iLAorICAgICAgICAgICAgIl9fX18q
X19fXyIsCisgICAgICAgICAgICAiKi0tLSBDYXB0dXJlZCBsb2cgY2FsbCoiLAorICAgICAgICAg
ICAgIldBUk5JTkcgKiBkdXJpbmcgY2FsbCIsCisgICAgICAgICAgICAiKjEgZmFpbGVkKiIsCisg
ICAgICAgIF0KKyAgICApCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipDYXB0
dXJlZCBzdGRlcnIgY2FsbCoiKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
ZHVyaW5nIGNvbGxlY3Rpb24qIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9jb2xsZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbGxlY3Rpb24ucHkK
aW5kZXggNjU3ZDY0Yzc0ZTI0Li4zZTFiODE2Yjc5ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9jb2xsZWN0aW9uLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9jb2xsZWN0aW9uLnB5CkBAIC0xLDM1ICsxLDI1IEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitpbXBvcnQgb3MKIGlt
cG9ydCBwcHJpbnQKIGltcG9ydCBzeXMKLWltcG9ydCBweXRlc3QKLQotaW1wb3J0IF9weXRlc3Qu
X2NvZGUKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uLCBFWElUX05PVEVTVFNDT0xM
RUNURUQsIF9pbl92ZW52CitpbXBvcnQgdGV4dHdyYXAKIAoraW1wb3J0IHB5dGVzdAorZnJvbSBf
cHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5tYWluIGltcG9ydCBf
aW5fdmVudgorZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zyb20gX3B5dGVzdC5w
YXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgc3ltbGlua19v
cl9za2lwCitmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKIAotY2xhc3MgVGVz
dENvbGxlY3RvcihvYmplY3QpOgogCitjbGFzcyBUZXN0Q29sbGVjdG9yOgogICAgIGRlZiB0ZXN0
X2NvbGxlY3RfdmVyc3VzX2l0ZW0oc2VsZik6CiAgICAgICAgIGZyb20gcHl0ZXN0IGltcG9ydCBD
b2xsZWN0b3IsIEl0ZW0KIAogICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoQ29sbGVjdG9y
LCBJdGVtKQogICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoSXRlbSwgQ29sbGVjdG9yKQog
Ci0gICAgZGVmIHRlc3RfY29tcGF0X2F0dHJpYnV0ZXMoc2VsZiwgdGVzdGRpciwgcmVjd2Fybik6
Ci0gICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKAotICAgICAgICAgICAgIiIi
Ci0gICAgICAgICAgICBkZWYgdGVzdF9wYXNzKCk6IHBhc3MKLSAgICAgICAgICAgIGRlZiB0ZXN0
X2ZhaWwoKTogYXNzZXJ0IDAKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVjd2Fy
bi5jbGVhcigpCi0gICAgICAgIGFzc2VydCBtb2Rjb2wuTW9kdWxlID09IHB5dGVzdC5Nb2R1bGUK
LSAgICAgICAgYXNzZXJ0IG1vZGNvbC5DbGFzcyA9PSBweXRlc3QuQ2xhc3MKLSAgICAgICAgYXNz
ZXJ0IG1vZGNvbC5JdGVtID09IHB5dGVzdC5JdGVtCi0gICAgICAgIGFzc2VydCBtb2Rjb2wuRmls
ZSA9PSBweXRlc3QuRmlsZQotICAgICAgICBhc3NlcnQgbW9kY29sLkZ1bmN0aW9uID09IHB5dGVz
dC5GdW5jdGlvbgotCi0gICAgZGVmIHRlc3RfY2hlY2tfZXF1YWxpdHkoc2VsZiwgdGVzdGRpcik6
CisgICAgZGVmIHRlc3RfY2hlY2tfZXF1YWxpdHkoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgbW9kY29sID0gdGVzdGRpci5nZXRtb2R1bGVjb2woCiAgICAgICAgICAg
ICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKTogcGFzcwpAQCAtNDMsOCArMzMsNiBA
QCBjbGFzcyBUZXN0Q29sbGVjdG9yKG9iamVjdCk6CiAKICAgICAgICAgYXNzZXJ0IGZuMSA9PSBm
bjIKICAgICAgICAgYXNzZXJ0IGZuMSAhPSBtb2Rjb2wKLSAgICAgICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA8ICgzLCAwKToKLSAgICAgICAgICAgIGFzc2VydCBjbXAoZm4xLCBmbjIpID09IDAgICMg
Tk9RQQogICAgICAgICBhc3NlcnQgaGFzaChmbjEpID09IGhhc2goZm4yKQogCiAgICAgICAgIGZu
MyA9IHRlc3RkaXIuY29sbGVjdF9ieV9uYW1lKG1vZGNvbCwgInRlc3RfZmFpbCIpCkBAIC01Mywx
NyArNDEsMjAgQEAgY2xhc3MgVGVzdENvbGxlY3RvcihvYmplY3QpOgogICAgICAgICBhc3NlcnQg
Zm4xICE9IGZuMwogCiAgICAgICAgIGZvciBmbiBpbiBmbjEsIGZuMiwgZm4zOgotICAgICAgICAg
ICAgYXNzZXJ0IGZuICE9IDMKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZuLCBweXRl
c3QuRnVuY3Rpb24pCisgICAgICAgICAgICBhc3NlcnQgZm4gIT0gMyAgIyB0eXBlOiBpZ25vcmVb
Y29tcGFyaXNvbi1vdmVybGFwXQogICAgICAgICAgICAgYXNzZXJ0IGZuICE9IG1vZGNvbAotICAg
ICAgICAgICAgYXNzZXJ0IGZuICE9IFsxLCAyLCAzXQotICAgICAgICAgICAgYXNzZXJ0IFsxLCAy
LCAzXSAhPSBmbgorICAgICAgICAgICAgYXNzZXJ0IGZuICE9IFsxLCAyLCAzXSAgIyB0eXBlOiBp
Z25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQorICAgICAgICAgICAgYXNzZXJ0IFsxLCAyLCAzXSAh
PSBmbiAgIyB0eXBlOiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQogICAgICAgICAgICAgYXNz
ZXJ0IG1vZGNvbCAhPSBmbgogCisgICAgICAgIGFzc2VydCB0ZXN0ZGlyLmNvbGxlY3RfYnlfbmFt
ZShtb2Rjb2wsICJkb2Vzbm90ZXhpc3QiKSBpcyBOb25lCisKICAgICBkZWYgdGVzdF9nZXRwYXJl
bnQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29s
KAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToK
LSAgICAgICAgICAgICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAgICAgICAgICBjbGFzcyBUZXN0
Q2xhc3M6CisgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKICAgICAgICAgICAg
ICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKQEAgLTg4LDcgKzc5LDcgQEAg
Y2xhc3MgVGVzdENvbGxlY3RvcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAg
ICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAg
ICAgICAgaWYgcGF0aC5leHQgPT0gIi54eHgiOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q3VzdG9tRmlsZShwYXRoLCBwYXJlbnQ9cGFyZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ3VzdG9tRmlsZS5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgbm9kZSA9IHRlc3RkaXIuZ2V0cGF0aG5vZGUo
aGVsbG8pCkBAIC0xMTQsOCArMTA1LDcgQEAgY2xhc3MgVGVzdENvbGxlY3RvcihvYmplY3QpOgog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjb2xsZWN0ZWQgMCBpdGVtcyIs
ICIqbm8gdGVzdHMgcmFuIGluKiJdKQogCiAKLWNsYXNzIFRlc3RDb2xsZWN0RlMob2JqZWN0KToK
LQorY2xhc3MgVGVzdENvbGxlY3RGUzoKICAgICBkZWYgdGVzdF9pZ25vcmVkX2NlcnRhaW5fZGly
ZWN0b3JpZXMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRtcGRpciA9IHRlc3RkaXIudG1wZGly
CiAgICAgICAgIHRtcGRpci5lbnN1cmUoImJ1aWxkIiwgInRlc3Rfbm90Zm91bmQucHkiKQpAQCAt
MTI2LDggKzExNiw4IEBAIGNsYXNzIFRlc3RDb2xsZWN0RlMob2JqZWN0KToKICAgICAgICAgdG1w
ZGlyLmVuc3VyZSgiLndoYXRldmVyIiwgInRlc3Rfbm90Zm91bmQucHkiKQogICAgICAgICB0bXBk
aXIuZW5zdXJlKCIuYnpyIiwgInRlc3Rfbm90Zm91bmQucHkiKQogICAgICAgICB0bXBkaXIuZW5z
dXJlKCJub3JtYWwiLCAidGVzdF9mb3VuZC5weSIpCi0gICAgICAgIGZvciB4IGluIHRtcGRpci52
aXNpdCgidGVzdF8qLnB5Iik6Ci0gICAgICAgICAgICB4LndyaXRlKCJkZWYgdGVzdF9oZWxsbygp
OiBwYXNzIikKKyAgICAgICAgZm9yIHggaW4gUGF0aChzdHIodG1wZGlyKSkucmdsb2IoInRlc3Rf
Ki5weSIpOgorICAgICAgICAgICAgeC53cml0ZV90ZXh0KCJkZWYgdGVzdF9oZWxsbygpOiBwYXNz
IiwgInV0Zi04IikKIAogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xs
ZWN0LW9ubHkiKQogICAgICAgICBzID0gcmVzdWx0LnN0ZG91dC5zdHIoKQpAQCAtMTUzLDcgKzE0
Myw3IEBAIGNsYXNzIFRlc3RDb2xsZWN0RlMob2JqZWN0KToKIAogICAgICAgICAjIGJ5IGRlZmF1
bHQsIGlnbm9yZSB0ZXN0cyBpbnNpZGUgYSB2aXJ0dWFsZW52CiAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0ICJ0ZXN0X2ludmVudiIgbm90IGluIHJl
c3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUo
Iip0ZXN0X2ludmVudioiKQogICAgICAgICAjIGFsbG93IHRlc3QgY29sbGVjdGlvbiBpZiB1c2Vy
IGluc2lzdHMKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1p
bi12aXJ0dWFsZW52IikKICAgICAgICAgYXNzZXJ0ICJ0ZXN0X2ludmVudiIgaW4gcmVzdWx0LnN0
ZG91dC5zdHIoKQpAQCAtMTc5LDcgKzE2OSw3IEBAIGNsYXNzIFRlc3RDb2xsZWN0RlMob2JqZWN0
KToKICAgICAgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLnRtcGRpci5lbnN1cmUoIi52aXJ0dWFsIiwg
InRlc3RfaW52ZW52LnB5IikKICAgICAgICAgdGVzdGZpbGUud3JpdGUoImRlZiB0ZXN0X2hlbGxv
KCk6IHBhc3MiKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xsZWN0
LWluLXZpcnR1YWxlbnYiKQotICAgICAgICBhc3NlcnQgInRlc3RfaW52ZW52IiBub3QgaW4gcmVz
dWx0LnN0ZG91dC5zdHIoKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgi
KnRlc3RfaW52ZW52KiIpCiAgICAgICAgICMgLi4udW5sZXNzIHRoZSB2aXJ0dWFsZW52IGlzIGV4
cGxpY2l0bHkgZ2l2ZW4gb24gdGhlIENMSQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1jb2xsZWN0LWluLXZpcnR1YWxlbnYiLCAiLnZpcnR1YWwiKQogICAgICAgICBhc3Nl
cnQgInRlc3RfaW52ZW52IiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCkBAIC0yNTIsMTQgKzI0Miwx
MiBAQCBjbGFzcyBUZXN0Q29sbGVjdEZTKG9iamVjdCk6CiAgICAgICAgICAgICBhc3NlcnQgW3gu
bmFtZSBmb3IgeCBpbiBpdGVtc10gPT0gWyJ0ZXN0XyVzIiAlIGRpcm5hbWVdCiAKIAotY2xhc3Mg
VGVzdENvbGxlY3RQbHVnaW5Ib29rUmVsYXkob2JqZWN0KToKLQorY2xhc3MgVGVzdENvbGxlY3RQ
bHVnaW5Ib29rUmVsYXk6CiAgICAgZGVmIHRlc3RfcHl0ZXN0X2NvbGxlY3RfZmlsZShzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgd2FzY2FsbGVkID0gW10KIAotICAgICAgICBjbGFzcyBQbHVnaW4o
b2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUoc2VsZiwgcGF0
aCwgcGFyZW50KToKKyAgICAgICAgY2xhc3MgUGx1Z2luOgorICAgICAgICAgICAgZGVmIHB5dGVz
dF9jb2xsZWN0X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICAgICAgICAgaWYgbm90IHBhdGgu
YmFzZW5hbWUuc3RhcnRzd2l0aCgiLiIpOgogICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBo
aWRkZW4gZmlsZXMsIGUuZy4gLnRlc3Rtb25kYXRhLgogICAgICAgICAgICAgICAgICAgICB3YXNj
YWxsZWQuYXBwZW5kKHBhdGgpCkBAIC0yNjksMjMgKzI1Nyw4IEBAIGNsYXNzIFRlc3RDb2xsZWN0
UGx1Z2luSG9va1JlbGF5KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBsZW4od2FzY2FsbGVkKSA9
PSAxCiAgICAgICAgIGFzc2VydCB3YXNjYWxsZWRbMF0uZXh0ID09ICIuYWJjIgogCi0gICAgZGVm
IHRlc3RfcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB3
YXNjYWxsZWQgPSBbXQotCi0gICAgICAgIGNsYXNzIFBsdWdpbihvYmplY3QpOgotCi0gICAgICAg
ICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5KHNlbGYsIHBhdGgsIHBhcmVudCk6Ci0g
ICAgICAgICAgICAgICAgd2FzY2FsbGVkLmFwcGVuZChwYXRoLmJhc2VuYW1lKQotCi0gICAgICAg
IHRlc3RkaXIubWtkaXIoImhlbGxvIikKLSAgICAgICAgdGVzdGRpci5ta2Rpcigid29ybGQiKQot
ICAgICAgICBweXRlc3QubWFpbih0ZXN0ZGlyLnRtcGRpciwgcGx1Z2lucz1bUGx1Z2luKCldKQot
ICAgICAgICBhc3NlcnQgImhlbGxvIiBpbiB3YXNjYWxsZWQKLSAgICAgICAgYXNzZXJ0ICJ3b3Js
ZCIgaW4gd2FzY2FsbGVkCi0KLQotY2xhc3MgVGVzdFBydW5ldHJhY2ViYWNrKG9iamVjdCk6CiAK
K2NsYXNzIFRlc3RQcnVuZXRyYWNlYmFjazoKICAgICBkZWYgdGVzdF9jdXN0b21fcmVwcl9mYWls
dXJlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAg
ICAgICAgICAgIiIiCkBAIC0yOTYsNyArMjY5LDcgQEAgY2xhc3MgVGVzdFBydW5ldHJhY2ViYWNr
KG9iamVjdCk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKICAg
ICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIE15RmlsZShwYXRoLCBwYXJlbnQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIE15RmlsZS5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKICAgICAg
ICAgICAgIGNsYXNzIE15RXJyb3IoRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICBwYXNzCiAg
ICAgICAgICAgICBjbGFzcyBNeUZpbGUocHl0ZXN0LkZpbGUpOgpAQCAtMzM0LDggKzMwNyw3IEBA
IGNsYXNzIFRlc3RQcnVuZXRyYWNlYmFjayhvYmplY3QpOgogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqRVJST1IgY29sbGVjdGluZyoiLCAiKmhlYWRlcjEqIl0pCiAKIAot
Y2xhc3MgVGVzdEN1c3RvbUNvbmZ0ZXN0cyhvYmplY3QpOgotCitjbGFzcyBUZXN0Q3VzdG9tQ29u
ZnRlc3RzOgogICAgIGRlZiB0ZXN0X2lnbm9yZV9jb2xsZWN0X3BhdGgoc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCkBAIC0zNjMs
MTAgKzMzNSwxMCBAQCBjbGFzcyBUZXN0Q3VzdG9tQ29uZnRlc3RzKG9iamVjdCk6CiAgICAgICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2hlbGxvKCk6IHBhc3MiKQogICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgcGFzc2VkKiIp
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKICAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKCIqY29sbGVjdGVkIDAgaXRlbXMqIikKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIipjb2xsZWN0ZWQgMCBpdGVtcyoiXSkKIAogICAgIGRlZiB0ZXN0X2Nv
bGxlY3RpZ25vcmVfZXhjbHVkZV9vbl9vcHRpb24oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRl
c3RkaXIubWFrZWNvbmZ0ZXN0KApAQCAtMzgyLDEyICszNTQsMzIgQEAgY2xhc3MgVGVzdEN1c3Rv
bUNvbmZ0ZXN0cyhvYmplY3QpOgogICAgICAgICB0ZXN0ZGlyLm1rZGlyKCJoZWxsbyIpCiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X3dvcmxkPSJkZWYgdGVzdF9oZWxsbygpOiBwYXNz
IikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKLSAgICAgICAgYXNzZXJ0ICJwYXNz
ZWQiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0
ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5v
X2ZubWF0Y2hfbGluZSgiKnBhc3NlZCoiKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1YWCIpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAgICAgYXNz
ZXJ0ICJwYXNzZWQiIGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKIAorICAgIGRlZiB0ZXN0X2NvbGxl
Y3RpZ25vcmVnbG9iX2V4Y2x1ZGVfb25fb3B0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0
ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY29sbGVj
dF9pZ25vcmVfZ2xvYiA9IFsnKncqbFtkdF0qJ10KKyAgICAgICAgICAgIGRlZiBweXRlc3RfYWRk
b3B0aW9uKHBhcnNlcik6CisgICAgICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1YWCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UpCisgICAgICAgICAgICBkZWYgcHl0
ZXN0X2NvbmZpZ3VyZShjb25maWcpOgorICAgICAgICAgICAgICAgIGlmIGNvbmZpZy5nZXR2YWx1
ZSgiWFgiKToKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdF9pZ25vcmVfZ2xvYls6XSA9IFtd
CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0
X3dvcmxkPSJkZWYgdGVzdF9oZWxsbygpOiBwYXNzIikKKyAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKHRlc3Rfd2VsdD0iZGVmIHRlc3RfaGFsbG8oKTogcGFzcyIpCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENv
ZGUuTk9fVEVTVFNfQ09MTEVDVEVECisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIipjb2xsZWN0ZWQgMCBpdGVtcyoiXSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0tWFgiKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCoiXSkKKwogICAgIGRlZiB0ZXN0
X3B5dGVzdF9mc19jb2xsZWN0X2hvb2tzX2FyZV9zZWVuKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgpAQCAtMzk2LDEyICszODgs
MTIgQEAgY2xhc3MgVGVzdEN1c3RvbUNvbmZ0ZXN0cyhvYmplY3QpOgogICAgICAgICAgICAgICAg
IHBhc3MKICAgICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6
CiAgICAgICAgICAgICAgICAgaWYgcGF0aC5leHQgPT0gIi5weSI6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBNeU1vZHVsZShwYXRoLCBwYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBNeU1vZHVsZS5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgdGVzdGRpci5ta2Rpcigic3ViIikKICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF94KCk6IHBhc3MiKQotICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xsZWN0LW9ubHkiKQorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jbyIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbIipNeU1vZHVsZSoiLCAiKnRlc3RfeCoiXSkKIAogICAgIGRlZiB0ZXN0X3B5dGVz
dF9jb2xsZWN0X2ZpbGVfZnJvbV9zaXN0ZXJfZGlyKHNlbGYsIHRlc3RkaXIpOgpAQCAtNDE0LDcg
KzQwNiw3IEBAIGNsYXNzIFRlc3RDdXN0b21Db25mdGVzdHMob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBwYXNzCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJl
bnQpOgogICAgICAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIucHkiOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTXlNb2R1bGUxKHBhdGgsIHBhcmVudCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE15TW9kdWxlMS5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVu
dCkKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgY29uZjEubW92ZShzdWIxLmpvaW4o
Y29uZjEuYmFzZW5hbWUpKQpAQCAtNDI1LDQ1ICs0MTcsMjUgQEAgY2xhc3MgVGVzdEN1c3RvbUNv
bmZ0ZXN0cyhvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGRlZiBw
eXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAgICAgICAgaWYgcGF0
aC5leHQgPT0gIi5weSI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBNeU1vZHVsZTIocGF0
aCwgcGFyZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlNb2R1bGUyLmZyb21fcGFy
ZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICBjb25mMi5tb3ZlKHN1YjIuam9pbihjb25mMi5iYXNlbmFtZSkpCiAgICAgICAgIHAg
PSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X3goKTogcGFzcyIpCiAgICAgICAgIHAuY29w
eShzdWIxLmpvaW4ocC5iYXNlbmFtZSkpCiAgICAgICAgIHAuY29weShzdWIyLmpvaW4ocC5iYXNl
bmFtZSkpCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbGxlY3Qtb25s
eSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvIikKICAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKk15TW9kdWxlMSoiLCAiKk15TW9kdWxlMioi
LCAiKnRlc3RfeCoiXSkKIAogCi1jbGFzcyBUZXN0U2Vzc2lvbihvYmplY3QpOgotCi0gICAgZGVm
IHRlc3RfcGFyc2Vhcmcoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCi0gICAgICAgIHN1YmRpciA9IHRlc3RkaXIu
bWtkaXIoInN1YiIpCi0gICAgICAgIHN1YmRpci5lbnN1cmUoIl9faW5pdF9fLnB5IikKLSAgICAg
ICAgdGFyZ2V0ID0gc3ViZGlyLmpvaW4ocC5iYXNlbmFtZSkKLSAgICAgICAgcC5tb3ZlKHRhcmdl
dCkKLSAgICAgICAgc3ViZGlyLmNoZGlyKCkKLSAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJz
ZWNvbmZpZyhwLmJhc2VuYW1lKQotICAgICAgICByY29sID0gU2Vzc2lvbihjb25maWc9Y29uZmln
KQotICAgICAgICBhc3NlcnQgcmNvbC5mc3BhdGggPT0gc3ViZGlyCi0gICAgICAgIHBhcnRzID0g
cmNvbC5fcGFyc2VhcmcocC5iYXNlbmFtZSkKLQotICAgICAgICBhc3NlcnQgcGFydHNbMF0gPT0g
dGFyZ2V0Ci0gICAgICAgIGFzc2VydCBsZW4ocGFydHMpID09IDEKLSAgICAgICAgcGFydHMgPSBy
Y29sLl9wYXJzZWFyZyhwLmJhc2VuYW1lICsgIjo6dGVzdF9mdW5jIikKLSAgICAgICAgYXNzZXJ0
IHBhcnRzWzBdID09IHRhcmdldAotICAgICAgICBhc3NlcnQgcGFydHNbMV0gPT0gInRlc3RfZnVu
YyIKLSAgICAgICAgYXNzZXJ0IGxlbihwYXJ0cykgPT0gMgotCitjbGFzcyBUZXN0U2Vzc2lvbjoK
ICAgICBkZWYgdGVzdF9jb2xsZWN0X3RvcGRpcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfZnVuYygpOiBwYXNzIikKICAgICAgICAgaWQg
PSAiOjoiLmpvaW4oW3AuYmFzZW5hbWUsICJ0ZXN0X2Z1bmMiXSkKICAgICAgICAgIyBYWFggbWln
cmF0ZSB0byBjb2xsZWN0b25seT8gKHNlZSBiZWxvdykKICAgICAgICAgY29uZmlnID0gdGVzdGRp
ci5wYXJzZWNvbmZpZyhpZCkKICAgICAgICAgdG9wZGlyID0gdGVzdGRpci50bXBkaXIKLSAgICAg
ICAgcmNvbCA9IFNlc3Npb24oY29uZmlnKQorICAgICAgICByY29sID0gU2Vzc2lvbi5mcm9tX2Nv
bmZpZyhjb25maWcpCiAgICAgICAgIGFzc2VydCB0b3BkaXIgPT0gcmNvbC5mc3BhdGgKICAgICAg
ICAgIyByb290aWQgPSByY29sLm5vZGVpZAogICAgICAgICAjIHJvb3QyID0gcmNvbC5wZXJmb3Jt
X2NvbGxlY3QoW3Jjb2wubm9kZWlkXSwgZ2VuaXRlbXM9RmFsc2UpWzBdCkBAIC00ODYsNyArNDU4
LDcgQEAgY2xhc3MgVGVzdFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgcCA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgiZGVmIHRlc3RfZnVuYygpOiBwYXNzIikKICAgICAgICAgaWQgPSAiOjoiLmpvaW4o
W3AuYmFzZW5hbWUsICJ0ZXN0X2Z1bmMiXSkKICAgICAgICAgaXRlbXMsIGhvb2tyZWMgPSB0ZXN0
ZGlyLmlubGluZV9nZW5pdGVtcyhpZCkKLSAgICAgICAgaXRlbSwgPSBpdGVtcworICAgICAgICAo
aXRlbSwpID0gaXRlbXMKICAgICAgICAgYXNzZXJ0IGl0ZW0ubmFtZSA9PSAidGVzdF9mdW5jIgog
ICAgICAgICBuZXdpZCA9IGl0ZW0ubm9kZWlkCiAgICAgICAgIGFzc2VydCBuZXdpZCA9PSBpZApA
QCAtNTEzLDEzICs0ODUsOCBAQCBjbGFzcyBUZXN0U2Vzc2lvbihvYmplY3QpOgogICAgICAgICAg
ICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIG5vcm1pZCA9
IHAuYmFzZW5hbWUgKyAiOjpUZXN0Q2xhc3M6OigpOjp0ZXN0X21ldGhvZCIKLSAgICAgICAgZm9y
IGlkIGluIFsKLSAgICAgICAgICAgIHAuYmFzZW5hbWUsCi0gICAgICAgICAgICBwLmJhc2VuYW1l
ICsgIjo6VGVzdENsYXNzIiwKLSAgICAgICAgICAgIHAuYmFzZW5hbWUgKyAiOjpUZXN0Q2xhc3M6
OigpIiwKLSAgICAgICAgICAgIG5vcm1pZCwKLSAgICAgICAgXToKKyAgICAgICAgbm9ybWlkID0g
cC5iYXNlbmFtZSArICI6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QiCisgICAgICAgIGZvciBpZCBp
biBbcC5iYXNlbmFtZSwgcC5iYXNlbmFtZSArICI6OlRlc3RDbGFzcyIsIG5vcm1pZF06CiAgICAg
ICAgICAgICBpdGVtcywgaG9va3JlYyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1zKGlkKQogICAg
ICAgICAgICAgYXNzZXJ0IGxlbihpdGVtcykgPT0gMQogICAgICAgICAgICAgYXNzZXJ0IGl0ZW1z
WzBdLm5hbWUgPT0gInRlc3RfbWV0aG9kIgpAQCAtNTM4LDEwICs1MDUsMTAgQEAgY2xhc3MgVGVz
dFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICMgb2sKICAgICAg
ICAgICAgIGNsYXNzIFNwZWNpYWxGaWxlKHB5dGVzdC5GaWxlKToKICAgICAgICAgICAgICAgICBk
ZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtTcGVjaWFsSXRl
bShuYW1lPSJjaGVjayIsIHBhcmVudD1zZWxmKV0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFtTcGVjaWFsSXRlbS5mcm9tX3BhcmVudChuYW1lPSJjaGVjayIsIHBhcmVudD1zZWxmKV0KICAg
ICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CiAgICAgICAg
ICAgICAgICAgaWYgcGF0aC5iYXNlbmFtZSA9PSAlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFNwZWNpYWxGaWxlKGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gU3BlY2lhbEZpbGUuZnJvbV9wYXJlbnQoZnNwYXRoPXBhdGgsIHBhcmVu
dD1wYXJlbnQpCiAgICAgICAgICIiIgogICAgICAgICAgICAgJSBwLmJhc2VuYW1lCiAgICAgICAg
ICkKQEAgLTYxMCw5ICs1NzcsOSBAQCBjbGFzcyBUZXN0U2Vzc2lvbihvYmplY3QpOgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCiAgICAgICAgIGl0
ZW1zLCBob29rcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMoKQogICAgICAgICBhc3NlcnQg
bGVuKGl0ZW1zKSA9PSAxCi0gICAgICAgIGl0ZW0sID0gaXRlbXMKKyAgICAgICAgKGl0ZW0sKSA9
IGl0ZW1zCiAgICAgICAgIGl0ZW1zMiwgaG9va3JlYyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1z
KGl0ZW0ubm9kZWlkKQotICAgICAgICBpdGVtMiwgPSBpdGVtczIKKyAgICAgICAgKGl0ZW0yLCkg
PSBpdGVtczIKICAgICAgICAgYXNzZXJ0IGl0ZW0yLm5hbWUgPT0gaXRlbS5uYW1lCiAgICAgICAg
IGFzc2VydCBpdGVtMi5mc3BhdGggPT0gaXRlbS5mc3BhdGgKIApAQCAtNjI3LDI2ICs1OTQsMzAg
QEAgY2xhc3MgVGVzdFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgYXJnID0gcC5iYXNlbmFtZSAr
ICI6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QiCiAgICAgICAgIGl0ZW1zLCBob29rcmVjID0gdGVz
dGRpci5pbmxpbmVfZ2VuaXRlbXMoYXJnKQogICAgICAgICBhc3NlcnQgbGVuKGl0ZW1zKSA9PSAx
Ci0gICAgICAgIGl0ZW0sID0gaXRlbXMKLSAgICAgICAgYXNzZXJ0IGl0ZW0ubm9kZWlkLmVuZHN3
aXRoKCJUZXN0Q2xhc3M6OigpOjp0ZXN0X21ldGhvZCIpCisgICAgICAgIChpdGVtLCkgPSBpdGVt
cworICAgICAgICBhc3NlcnQgaXRlbS5ub2RlaWQuZW5kc3dpdGgoIlRlc3RDbGFzczo6dGVzdF9t
ZXRob2QiKQogICAgICAgICAjIGVuc3VyZSB3ZSBhcmUgcmVwb3J0aW5nIHRoZSBjb2xsZWN0aW9u
IG9mIHRoZSBzaW5nbGUgdGVzdCBpdGVtICgjMjQ2NCkKICAgICAgICAgYXNzZXJ0IFt4Lm5hbWUg
Zm9yIHggaW4gc2VsZi5nZXRfcmVwb3J0ZWRfaXRlbXMoaG9va3JlYyldID09IFsidGVzdF9tZXRo
b2QiXQogCiAKLWNsYXNzIFRlc3RfZ2V0aW5pdGlhbG5vZGVzKG9iamVjdCk6Ci0KLSAgICBkZWYg
dGVzdF9nbG9iYWxfZmlsZShzZWxmLCB0ZXN0ZGlyLCB0bXBkaXIpOgorY2xhc3MgVGVzdF9nZXRp
bml0aWFsbm9kZXM6CisgICAgZGVmIHRlc3RfZ2xvYmFsX2ZpbGUoc2VsZiwgdGVzdGRpciwgdG1w
ZGlyKSAtPiBOb25lOgogICAgICAgICB4ID0gdG1wZGlyLmVuc3VyZSgieC5weSIpCiAgICAgICAg
IHdpdGggdG1wZGlyLmFzX2N3ZCgpOgogICAgICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJz
ZWNvbmZpZ3VyZSh4KQogICAgICAgICBjb2wgPSB0ZXN0ZGlyLmdldG5vZGUoY29uZmlnLCB4KQog
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2wsIHB5dGVzdC5Nb2R1bGUpCiAgICAgICAgIGFz
c2VydCBjb2wubmFtZSA9PSAieC5weSIKKyAgICAgICAgYXNzZXJ0IGNvbC5wYXJlbnQgaXMgbm90
IE5vbmUKICAgICAgICAgYXNzZXJ0IGNvbC5wYXJlbnQucGFyZW50IGlzIE5vbmUKICAgICAgICAg
Zm9yIGNvbCBpbiBjb2wubGlzdGNoYWluKCk6CiAgICAgICAgICAgICBhc3NlcnQgY29sLmNvbmZp
ZyBpcyBjb25maWcKIAogICAgIGRlZiB0ZXN0X3BrZ2ZpbGUoc2VsZiwgdGVzdGRpcik6CisgICAg
ICAgICIiIlZlcmlmeSBuZXN0aW5nIHdoZW4gYSBtb2R1bGUgaXMgd2l0aGluIGEgcGFja2FnZS4K
KyAgICAgICAgVGhlIHBhcmVudCBjaGFpbiBzaG91bGQgbWF0Y2g6IE1vZHVsZTx4LnB5PiAtPiBQ
YWNrYWdlPHN1YmRpcj4gLT4gU2Vzc2lvbi4KKyAgICAgICAgICAgIFNlc3Npb24ncyBwYXJlbnQg
c2hvdWxkIGFsd2F5cyBiZSBOb25lLgorICAgICAgICAiIiIKICAgICAgICAgdG1wZGlyID0gdGVz
dGRpci50bXBkaXIKICAgICAgICAgc3ViZGlyID0gdG1wZGlyLmpvaW4oInN1YmRpciIpCiAgICAg
ICAgIHggPSBzdWJkaXIuZW5zdXJlKCJ4LnB5IikKQEAgLTY1NCwxNSArNjI1LDE3IEBAIGNsYXNz
IFRlc3RfZ2V0aW5pdGlhbG5vZGVzKG9iamVjdCk6CiAgICAgICAgIHdpdGggc3ViZGlyLmFzX2N3
ZCgpOgogICAgICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZ3VyZSh4KQogICAg
ICAgICBjb2wgPSB0ZXN0ZGlyLmdldG5vZGUoY29uZmlnLCB4KQotICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShjb2wsIHB5dGVzdC5Nb2R1bGUpCiAgICAgICAgIGFzc2VydCBjb2wubmFtZSA9PSAi
eC5weSIKLSAgICAgICAgYXNzZXJ0IGNvbC5wYXJlbnQucGFyZW50IGlzIE5vbmUKKyAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoY29sLCBweXRlc3QuTW9kdWxlKQorICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShjb2wucGFyZW50LCBweXRlc3QuUGFja2FnZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UoY29sLnBhcmVudC5wYXJlbnQsIHB5dGVzdC5TZXNzaW9uKQorICAgICAgICAjIHNlc3Np
b24gaXMgYmF0bWFuIChoYXMgbm8gcGFyZW50cykKKyAgICAgICAgYXNzZXJ0IGNvbC5wYXJlbnQu
cGFyZW50LnBhcmVudCBpcyBOb25lCiAgICAgICAgIGZvciBjb2wgaW4gY29sLmxpc3RjaGFpbigp
OgogICAgICAgICAgICAgYXNzZXJ0IGNvbC5jb25maWcgaXMgY29uZmlnCiAKIAotY2xhc3MgVGVz
dF9nZW5pdGVtcyhvYmplY3QpOgotCitjbGFzcyBUZXN0X2dlbml0ZW1zOgogICAgIGRlZiB0ZXN0
X2NoZWNrX2NvbGxlY3RfaGFzaGVzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC02ODUsNiArNjU4LDggQEAgY2xhc3Mg
VGVzdF9nZW5pdGVtcyhvYmplY3QpOgogICAgIGRlZiB0ZXN0X2V4YW1wbGVfaXRlbXMxKHNlbGYs
IHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKICAgICAgICAgICAgIGRlZiB0ZXN0b25l
KCk6CiAgICAgICAgICAgICAgICAgcGFzcwogCkBAIC02OTMsMjkgKzY2OCwzMiBAQCBjbGFzcyBU
ZXN0X2dlbml0ZW1zKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAg
ICAgICAgY2xhc3MgVGVzdFkoVGVzdFgpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAg
ICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFyZzAiLCBbIi5bIl0pCisgICAgICAg
ICAgICAgICAgZGVmIHRlc3RtZXRob2RfdHdvKHNlbGYsIGFyZzApOgorICAgICAgICAgICAgICAg
ICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIGl0ZW1zLCByZXByZWMg
PSB0ZXN0ZGlyLmlubGluZV9nZW5pdGVtcyhwKQotICAgICAgICBhc3NlcnQgbGVuKGl0ZW1zKSA9
PSAzCisgICAgICAgIGFzc2VydCBsZW4oaXRlbXMpID09IDQKICAgICAgICAgYXNzZXJ0IGl0ZW1z
WzBdLm5hbWUgPT0gInRlc3RvbmUiCiAgICAgICAgIGFzc2VydCBpdGVtc1sxXS5uYW1lID09ICJ0
ZXN0bWV0aG9kX29uZSIKICAgICAgICAgYXNzZXJ0IGl0ZW1zWzJdLm5hbWUgPT0gInRlc3RtZXRo
b2Rfb25lIgorICAgICAgICBhc3NlcnQgaXRlbXNbM10ubmFtZSA9PSAidGVzdG1ldGhvZF90d29b
LltdIgogCiAgICAgICAgICMgbGV0J3MgYWxzbyB0ZXN0IGdldG1vZHBhdGggaGVyZQogICAgICAg
ICBhc3NlcnQgaXRlbXNbMF0uZ2V0bW9kcGF0aCgpID09ICJ0ZXN0b25lIgogICAgICAgICBhc3Nl
cnQgaXRlbXNbMV0uZ2V0bW9kcGF0aCgpID09ICJUZXN0WC50ZXN0bWV0aG9kX29uZSIKICAgICAg
ICAgYXNzZXJ0IGl0ZW1zWzJdLmdldG1vZHBhdGgoKSA9PSAiVGVzdFkudGVzdG1ldGhvZF9vbmUi
CisgICAgICAgICMgUFIgIzYyMDI6IEZpeCBpbmNvcnJlY3QgcmVzdWx0IG9mIGdldG1vZHBhdGgg
bWV0aG9kLiAoUmVzb2x2ZXMgaXNzdWUgIzYxODkpCisgICAgICAgIGFzc2VydCBpdGVtc1szXS5n
ZXRtb2RwYXRoKCkgPT0gIlRlc3RZLnRlc3RtZXRob2RfdHdvWy5bXSIKIAogICAgICAgICBzID0g
aXRlbXNbMF0uZ2V0bW9kcGF0aChzdG9wYXRtb2R1bGU9RmFsc2UpCiAgICAgICAgIGFzc2VydCBz
LmVuZHN3aXRoKCJ0ZXN0X2V4YW1wbGVfaXRlbXMxLnRlc3RvbmUiKQogICAgICAgICBwcmludChz
KQogCiAgICAgZGVmIHRlc3RfY2xhc3NfYW5kX2Z1bmN0aW9uc19kaXNjb3ZlcnlfdXNpbmdfZ2xv
YihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RzIHRoYXQgcHl0aG9u
X2NsYXNzZXMgYW5kIHB5dGhvbl9mdW5jdGlvbnMgY29uZmlnIG9wdGlvbnMgd29yawotICAgICAg
ICBhcyBwcmVmaXhlcyBhbmQgZ2xvYi1saWtlIHBhdHRlcm5zIChpc3N1ZSAjNjAwKS4KLSAgICAg
ICAgIiIiCisgICAgICAgICIiIlRlc3QgdGhhdCBQeXRob25fY2xhc3NlcyBhbmQgUHl0aG9uX2Z1
bmN0aW9ucyBjb25maWcgb3B0aW9ucyB3b3JrCisgICAgICAgIGFzIHByZWZpeGVzIGFuZCBnbG9i
LWxpa2UgcGF0dGVybnMgKCM2MDApLiIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIFtweXRlc3RdCkBAIC03NDksMTggKzcyNywyMyBAQCBk
ZWYgdGVzdF9tYXRjaG5vZGVzX3R3b19jb2xsZWN0aW9uc19zYW1lX2ZpbGUodGVzdGRpcik6CiAg
ICAgICAgIGNsYXNzIFBsdWdpbjIob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBweXRlc3RfY29s
bGVjdF9maWxlKHNlbGYsIHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAgICAgICAgaWYgcGF0aC5l
eHQgPT0gIi5hYmMiOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlGaWxlMihwYXRoLCBw
YXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNeUZpbGUyLmZyb21fcGFyZW50KGZz
cGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQogCiAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9m
aWxlKHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAgICBpZiBwYXRoLmV4dCA9PSAiLmFiYyI6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIE15RmlsZTEocGF0aCwgcGFyZW50KQorICAgICAgICAgICAg
ICAgIHJldHVybiBNeUZpbGUxLmZyb21fcGFyZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50
KQorCisgICAgICAgIGNsYXNzIE15RmlsZTEocHl0ZXN0LkZpbGUpOgorICAgICAgICAgICAgZGVm
IGNvbGxlY3Qoc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgSXRlbTEuZnJvbV9wYXJlbnQo
bmFtZT0iaXRlbTEiLCBwYXJlbnQ9c2VsZikKIAotICAgICAgICBjbGFzcyBNeUZpbGUxKHB5dGVz
dC5JdGVtLCBweXRlc3QuRmlsZSk6Ci0gICAgICAgICAgICBkZWYgcnVudGVzdChzZWxmKToKLSAg
ICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGNsYXNzIE15RmlsZTIocHl0ZXN0LkZpbGUpOgog
ICAgICAgICAgICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtJ
dGVtMigiaGVsbG8iLCBwYXJlbnQ9c2VsZildCisgICAgICAgICAgICAgICAgeWllbGQgSXRlbTIu
ZnJvbV9wYXJlbnQobmFtZT0iaXRlbTIiLCBwYXJlbnQ9c2VsZikKKworICAgICAgICBjbGFzcyBJ
dGVtMShweXRlc3QuSXRlbSk6CisgICAgICAgICAgICBkZWYgcnVudGVzdChzZWxmKToKKyAgICAg
ICAgICAgICAgICBwYXNzCiAKICAgICAgICAgY2xhc3MgSXRlbTIocHl0ZXN0Lkl0ZW0pOgogICAg
ICAgICAgICAgZGVmIHJ1bnRlc3Qoc2VsZik6CkBAIC03NzEsMTIgKzc1NCwxMSBAQCBkZWYgdGVz
dF9tYXRjaG5vZGVzX3R3b19jb2xsZWN0aW9uc19zYW1lX2ZpbGUodGVzdGRpcik6CiAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNzZWQqIl0pCi0gICAgcmVzID0g
dGVzdGRpci5ydW5weXRlc3QoIiVzOjpoZWxsbyIgJSBwLmJhc2VuYW1lKQorICAgIHJlcyA9IHRl
c3RkaXIucnVucHl0ZXN0KCIlczo6aXRlbTIiICUgcC5iYXNlbmFtZSkKICAgICByZXMuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKIAotY2xhc3MgVGVzdE5vZGVrZXl3b3Jk
cyhvYmplY3QpOgotCitjbGFzcyBUZXN0Tm9kZWtleXdvcmRzOgogICAgIGRlZiB0ZXN0X25vX3Vu
ZGVyKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdldG1vZHVsZWNv
bCgKICAgICAgICAgICAgICIiIgpAQCAtODAzLDYgKzc4NSw0MyBAQCBjbGFzcyBUZXN0Tm9kZWtl
eXdvcmRzKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLWsg
cmVwciIpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xLCBmYWlsZWQ9MCkK
IAorICAgIGRlZiB0ZXN0X2tleXdvcmRfbWF0Y2hpbmdfaXNfY2FzZV9pbnNlbnNpdGl2ZV9ieV9k
ZWZhdWx0KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJDaGVjayB0aGF0IHNlbGVjdGlvbiB2
aWEgLWsgRVhQUkVTU0lPTiBpcyBjYXNlLWluc2Vuc2l0aXZlLgorCisgICAgICAgIFNpbmNlIG1h
cmtlcnMgYXJlIGFsc28gYWRkZWQgdG8gdGhlIG5vZGUga2V5d29yZHMsIHRoZXkgdG9vIGNhbgor
ICAgICAgICBiZSBtYXRjaGVkIHdpdGhvdXQgaGF2aW5nIHRvIHRoaW5rIGFib3V0IGNhc2Ugc2Vu
c2l0aXZpdHkuCisKKyAgICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBk
ZWYgdGVzdF9zUGVDaUZpQ1RvUGlDXzEoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQor
CisgICAgICAgICAgICBjbGFzcyBUZXN0U3BlY2lmaWNUb3BpY18yOgorICAgICAgICAgICAgICAg
IGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorCisgICAg
ICAgICAgICBAcHl0ZXN0Lm1hcmsuc1BlQ2lGaUNUb1BpY18zCisgICAgICAgICAgICBkZWYgdGVz
dCgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCisKKyAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5zUGVDaUZpQ1RvUGljXzQKKyAgICAgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAg
ICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCisK
KyAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWxpbmdfNSgpOgorICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZSwgIlRoaXMgc2hvdWxkIG5vdCBtYXRjaCIKKworICAgICAgICAiIiIKKyAgICAgICAg
KQorICAgICAgICBudW1fbWF0Y2hpbmdfdGVzdHMgPSA0CisgICAgICAgIGZvciBleHByZXNzaW9u
IGluICgic3BlY2lmaWN0b3BpYyIsICJTUEVDSUZJQ1RPUElDIiwgIlNwZWNpZmljVG9waWMiKToK
KyAgICAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLWsgIiArIGV4cHJlc3Np
b24pCisgICAgICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9bnVtX21hdGNoaW5n
X3Rlc3RzLCBmYWlsZWQ9MCkKKwogCiBDT0xMRUNUSU9OX0VSUk9SX1BZX0ZJTEVTID0gZGljdCgK
ICAgICB0ZXN0XzAxX2ZhaWx1cmU9IiIiCkBAIC04NTMsMTIgKzg3MiwxNiBAQCBkZWYgdGVzdF9l
eGl0X29uX2NvbGxlY3Rpb25fd2l0aF9tYXhmYWlsX3NtYWxsZXJfdGhhbl9uX2Vycm9ycyh0ZXN0
ZGlyKToKIAogICAgIHJlcyA9IHRlc3RkaXIucnVucHl0ZXN0KCItLW1heGZhaWw9MSIpCiAgICAg
YXNzZXJ0IHJlcy5yZXQgPT0gMQotCiAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAg
ICAgICBbIipFUlJPUiBjb2xsZWN0aW5nIHRlc3RfMDJfaW1wb3J0X2Vycm9yLnB5KiIsICIqTm8g
bW9kdWxlIG5hbWVkICphc2RmYSoiXQorICAgICAgICBbCisgICAgICAgICAgICAiY29sbGVjdGVk
IDEgaXRlbSAvIDEgZXJyb3IiLAorICAgICAgICAgICAgIipFUlJPUiBjb2xsZWN0aW5nIHRlc3Rf
MDJfaW1wb3J0X2Vycm9yLnB5KiIsCisgICAgICAgICAgICAiKk5vIG1vZHVsZSBuYW1lZCAqYXNk
ZmEqIiwKKyAgICAgICAgICAgICIqISBzdG9wcGluZyBhZnRlciAxIGZhaWx1cmVzICEqIiwKKyAg
ICAgICAgICAgICIqPSAxIGVycm9yIGluICoiLAorICAgICAgICBdCiAgICAgKQotCi0gICAgYXNz
ZXJ0ICJ0ZXN0XzAzIiBub3QgaW4gcmVzLnN0ZG91dC5zdHIoKQorICAgIHJlcy5zdGRvdXQubm9f
Zm5tYXRjaF9saW5lKCIqdGVzdF8wMyoiKQogCiAKIGRlZiB0ZXN0X2V4aXRfb25fY29sbGVjdGlv
bl93aXRoX21heGZhaWxfYmlnZ2VyX3RoYW5fbl9lcnJvcnModGVzdGRpcik6CkBAIC04NzAsNyAr
ODkzLDYgQEAgZGVmIHRlc3RfZXhpdF9vbl9jb2xsZWN0aW9uX3dpdGhfbWF4ZmFpbF9iaWdnZXJf
dGhhbl9uX2Vycm9ycyh0ZXN0ZGlyKToKIAogICAgIHJlcyA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
LW1heGZhaWw9NCIpCiAgICAgYXNzZXJ0IHJlcy5yZXQgPT0gMgotCiAgICAgcmVzLnN0ZG91dC5m
bm1hdGNoX2xpbmVzKAogICAgICAgICBbCiAgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMg
LyAyIGVycm9ycyIsCkBAIC04NzgsNiArOTAwLDggQEAgZGVmIHRlc3RfZXhpdF9vbl9jb2xsZWN0
aW9uX3dpdGhfbWF4ZmFpbF9iaWdnZXJfdGhhbl9uX2Vycm9ycyh0ZXN0ZGlyKToKICAgICAgICAg
ICAgICIqTm8gbW9kdWxlIG5hbWVkICphc2RmYSoiLAogICAgICAgICAgICAgIipFUlJPUiBjb2xs
ZWN0aW5nIHRlc3RfMDNfaW1wb3J0X2Vycm9yLnB5KiIsCiAgICAgICAgICAgICAiKk5vIG1vZHVs
ZSBuYW1lZCAqYXNkZmEqIiwKKyAgICAgICAgICAgICIqISBJbnRlcnJ1cHRlZDogMiBlcnJvcnMg
ZHVyaW5nIGNvbGxlY3Rpb24gISoiLAorICAgICAgICAgICAgIio9IDIgZXJyb3JzIGluICoiLAog
ICAgICAgICBdCiAgICAgKQogCkBAIC04OTMsNyArOTE3LDcgQEAgZGVmIHRlc3RfY29udGludWVf
b25fY29sbGVjdGlvbl9lcnJvcnModGVzdGRpcik6CiAgICAgYXNzZXJ0IHJlcy5yZXQgPT0gMQog
CiAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbImNvbGxlY3RlZCAyIGl0
ZW1zIC8gMiBlcnJvcnMiLCAiKjEgZmFpbGVkLCAxIHBhc3NlZCwgMiBlcnJvcioiXQorICAgICAg
ICBbImNvbGxlY3RlZCAyIGl0ZW1zIC8gMiBlcnJvcnMiLCAiKjEgZmFpbGVkLCAxIHBhc3NlZCwg
MiBlcnJvcnMqIl0KICAgICApCiAKIApAQCAtOTEwLDIwICs5MzQsMjAgQEAgZGVmIHRlc3RfY29u
dGludWVfb25fY29sbGVjdGlvbl9lcnJvcnNfbWF4ZmFpbCh0ZXN0ZGlyKToKICAgICByZXMgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb250aW51ZS1vbi1jb2xsZWN0aW9uLWVycm9ycyIsICItLW1h
eGZhaWw9MyIpCiAgICAgYXNzZXJ0IHJlcy5yZXQgPT0gMQogCi0gICAgcmVzLnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiY29sbGVjdGVkIDIgaXRlbXMgLyAyIGVycm9ycyIsICIqMSBmYWlsZWQsIDIg
ZXJyb3IqIl0pCisgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiY29sbGVjdGVkIDIgaXRl
bXMgLyAyIGVycm9ycyIsICIqMSBmYWlsZWQsIDIgZXJyb3JzKiJdKQogCiAKIGRlZiB0ZXN0X2Zp
eHR1cmVfc2NvcGVfc2libGluZ19jb25mdGVzdHModGVzdGRpcik6CiAgICAgIiIiUmVncmVzc2lv
biB0ZXN0IGNhc2UgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjgzNiIiIgotICAgIGZvb19wYXRoID0gdGVzdGRpci5ta3B5ZGlyKCJmb28iKQorICAgIGZv
b19wYXRoID0gdGVzdGRpci5ta2RpcigiZm9vIikKICAgICBmb29fcGF0aC5qb2luKCJjb25mdGVz
dC5weSIpLndyaXRlKAotICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4
dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgZml4KCk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICAgICIiIgotICAgICAgICBpbXBvcnQg
cHl0ZXN0Ci0gICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICBkZWYgZml4KCk6Ci0gICAg
ICAgICAgICByZXR1cm4gMQotICAgICIiIgogICAgICAgICApCiAgICAgKQogICAgIGZvb19wYXRo
LmpvaW4oInRlc3RfZm9vLnB5Iikud3JpdGUoImRlZiB0ZXN0X2ZvbyhmaXgpOiBhc3NlcnQgZml4
ID09IDEiKQpAQCAtOTQyLDMgKzk2Niw0NDQgQEAgZGVmIHRlc3RfZml4dHVyZV9zY29wZV9zaWJs
aW5nX2NvbmZ0ZXN0cyh0ZXN0ZGlyKToKICAgICAgICAgICAgICIqMSBwYXNzZWQsIDEgZXJyb3Iq
IiwKICAgICAgICAgXQogICAgICkKKworCitkZWYgdGVzdF9jb2xsZWN0X2luaXRfdGVzdHModGVz
dGRpcik6CisgICAgIiIiQ2hlY2sgdGhhdCB3ZSBjb2xsZWN0IGZpbGVzIGZyb20gX19pbml0X18u
cHkgZmlsZXMgd2hlbiB0aGV5IHBhdGNoIHRoZSAncHl0aG9uX2ZpbGVzJyAoIzM3NzMpIiIiCisg
ICAgcCA9IHRlc3RkaXIuY29weV9leGFtcGxlKCJjb2xsZWN0L2NvbGxlY3RfaW5pdF90ZXN0cyIp
CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi0tY29sbGVjdC1vbmx5IikKKyAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICJj
b2xsZWN0ZWQgMiBpdGVtcyIsCisgICAgICAgICAgICAiPFBhY2thZ2UgdGVzdHM+IiwKKyAgICAg
ICAgICAgICIgIDxNb2R1bGUgX19pbml0X18ucHk+IiwKKyAgICAgICAgICAgICIgICAgPEZ1bmN0
aW9uIHRlc3RfaW5pdD4iLAorICAgICAgICAgICAgIiAgPE1vZHVsZSB0ZXN0X2Zvby5weT4iLAor
ICAgICAgICAgICAgIiAgICA8RnVuY3Rpb24gdGVzdF9mb28+IiwKKyAgICAgICAgXQorICAgICkK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLi90ZXN0cyIsICItLWNvbGxlY3Qtb25s
eSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAg
ICAgICAiY29sbGVjdGVkIDIgaXRlbXMiLAorICAgICAgICAgICAgIjxQYWNrYWdlIHRlc3RzPiIs
CisgICAgICAgICAgICAiICA8TW9kdWxlIF9faW5pdF9fLnB5PiIsCisgICAgICAgICAgICAiICAg
IDxGdW5jdGlvbiB0ZXN0X2luaXQ+IiwKKyAgICAgICAgICAgICIgIDxNb2R1bGUgdGVzdF9mb28u
cHk+IiwKKyAgICAgICAgICAgICIgICAgPEZ1bmN0aW9uIHRlc3RfZm9vPiIsCisgICAgICAgIF0K
KyAgICApCisgICAgIyBJZ25vcmVzIGR1cGxpY2F0ZXMgd2l0aCAiLiIgYW5kIHBrZ2luaXQgKCM0
MzEwKS4KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLi90ZXN0cyIsICIuIiwgIi0t
Y29sbGVjdC1vbmx5IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAg
IFsKKyAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyIsCisgICAgICAgICAgICAiPFBhY2th
Z2UgdGVzdHM+IiwKKyAgICAgICAgICAgICIgIDxNb2R1bGUgX19pbml0X18ucHk+IiwKKyAgICAg
ICAgICAgICIgICAgPEZ1bmN0aW9uIHRlc3RfaW5pdD4iLAorICAgICAgICAgICAgIiAgPE1vZHVs
ZSB0ZXN0X2Zvby5weT4iLAorICAgICAgICAgICAgIiAgICA8RnVuY3Rpb24gdGVzdF9mb28+IiwK
KyAgICAgICAgXQorICAgICkKKyAgICAjIFNhbWUgYXMgYmVmb3JlLCBidXQgZGlmZmVyZW50IG9y
ZGVyLgorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIuIiwgInRlc3RzIiwgIi0tY29s
bGVjdC1vbmx5IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsK
KyAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyIsCisgICAgICAgICAgICAiPFBhY2thZ2Ug
dGVzdHM+IiwKKyAgICAgICAgICAgICIgIDxNb2R1bGUgX19pbml0X18ucHk+IiwKKyAgICAgICAg
ICAgICIgICAgPEZ1bmN0aW9uIHRlc3RfaW5pdD4iLAorICAgICAgICAgICAgIiAgPE1vZHVsZSB0
ZXN0X2Zvby5weT4iLAorICAgICAgICAgICAgIiAgICA8RnVuY3Rpb24gdGVzdF9mb28+IiwKKyAg
ICAgICAgXQorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLi90ZXN0cy90
ZXN0X2Zvby5weSIsICItLWNvbGxlY3Qtb25seSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAorICAgICAgICBbIjxQYWNrYWdlIHRlc3RzPiIsICIgIDxNb2R1bGUgdGVzdF9mb28u
cHk+IiwgIiAgICA8RnVuY3Rpb24gdGVzdF9mb28+Il0KKyAgICApCisgICAgcmVzdWx0LnN0ZG91
dC5ub19mbm1hdGNoX2xpbmUoIip0ZXN0X2luaXQqIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLi90ZXN0cy9fX2luaXRfXy5weSIsICItLWNvbGxlY3Qtb25seSIpCisgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIjxQYWNrYWdlIHRlc3RzPiIsICIg
IDxNb2R1bGUgX19pbml0X18ucHk+IiwgIiAgICA8RnVuY3Rpb24gdGVzdF9pbml0PiJdCisgICAg
KQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqdGVzdF9mb28qIikKKworCitk
ZWYgdGVzdF9jb2xsZWN0X2ludmFsaWRfc2lnbmF0dXJlX21lc3NhZ2UodGVzdGRpcik6CisgICAg
IiIiQ2hlY2sgdGhhdCB3ZSBpc3N1ZSBhIHByb3BlciBtZXNzYWdlIHdoZW4gd2UgY2FuJ3QgZGV0
ZXJtaW5lIHRoZSBzaWduYXR1cmUgb2YgYSB0ZXN0CisgICAgZnVuY3Rpb24gKCM0MDI2KS4KKyAg
ICAiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBv
cnQgcHl0ZXN0CisKKyAgICAgICAgY2xhc3MgVGVzdENhc2U6CisgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBmaXgoKToKKyAgICAgICAgICAgICAgICBwYXNzCisg
ICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiQ291bGQgbm90IGRldGVybWluZSBh
cmd1bWVudHMgb2YgKi5maXggKjogaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlIl0KKyAgICApCisK
KworZGVmIHRlc3RfY29sbGVjdF9oYW5kbGVzX3JhaXNpbmdfb25fZHVuZGVyX2NsYXNzKHRlc3Rk
aXIpOgorICAgICIiIkhhbmRsZSBwcm94eSBjbGFzc2VzIGxpa2UgRGphbmdvJ3MgTGF6eVNldHRp
bmdzIHRoYXQgbWlnaHQgcmFpc2Ugb24KKyAgICBgYGlzaW5zdGFuY2VgYCAoIzQyNjYpLgorICAg
ICIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGNsYXNz
IEltcHJvcGVybHlDb25maWd1cmVkKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgY2xhc3MgUmFpc2VzT25HZXRBdHRyKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgcmFp
c2VzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIEltcHJvcGVybHlDb25maWd1cmVkCisK
KyAgICAgICAgICAgIF9fY2xhc3NfXyA9IHByb3BlcnR5KHJhaXNlcykKKworICAgICAgICByYWlz
ZXMgPSBSYWlzZXNPbkdldEF0dHIoKQorCisKKyAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAg
ICAgICAgcGFzcworICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkIGluKiJdKQor
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitkZWYgdGVzdF9jb2xsZWN0X3dpdGhfY2hk
aXJfZHVyaW5nX2ltcG9ydCh0ZXN0ZGlyKToKKyAgICBzdWJkaXIgPSB0ZXN0ZGlyLnRtcGRpci5t
a2Rpcigic3ViIikKKyAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJjb25mdGVzdC5weSIpLndyaXRl
KAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGltcG9ydCBvcworICAgICAgICAgICAgb3MuY2hkaXIoJXIpCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgICUgKHN0cihzdWJkaXIpLCkKKyAgICAgICAgKQorICAgICkKKyAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAg
ICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGFzc2VydCBvcy5nZXRjd2QoKSA9PSAlcgorICAg
ICAgICAiIiIKKyAgICAgICAgJSAoc3RyKHN1YmRpciksKQorICAgICkKKyAgICB3aXRoIHRlc3Rk
aXIudG1wZGlyLmFzX2N3ZCgpOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkIGluKiJdKQorICAg
IGFzc2VydCByZXN1bHQucmV0ID09IDAKKworICAgICMgSGFuZGxlcyByZWxhdGl2ZSB0ZXN0cGF0
aHMuCisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0K
KyAgICAgICAgdGVzdHBhdGhzID0gLgorICAgICIiIgorICAgICkKKyAgICB3aXRoIHRlc3RkaXIu
dG1wZGlyLmFzX2N3ZCgpOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1j
b2xsZWN0LW9ubHkiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImNvbGxlY3Rl
ZCAxIGl0ZW0iXSkKKworCitkZWYgdGVzdF9jb2xsZWN0X3B5YXJnc193aXRoX3Rlc3RwYXRocyh0
ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgdGVzdG1vZCA9IHRlc3RkaXIubWtkaXIoInRlc3Rt
b2QiKQorICAgICMgTk9URTogX19pbml0X18ucHkgaXMgbm90IGNvbGxlY3RlZCBzaW5jZSBpdCBk
b2VzIG5vdCBtYXRjaCBweXRob25fZmlsZXMuCisgICAgdGVzdG1vZC5lbnN1cmUoIl9faW5pdF9f
LnB5Iikud3JpdGUoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCisgICAgdGVzdG1vZC5lbnN1cmUo
InRlc3RfZmlsZS5weSIpLndyaXRlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQorCisgICAgcm9v
dCA9IHRlc3RkaXIubWtkaXIoInJvb3QiKQorICAgIHJvb3QuZW5zdXJlKCJweXRlc3QuaW5pIiku
d3JpdGUoCisgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICBbcHl0ZXN0XQorICAgICAgICBhZGRvcHRzID0gLS1weWFyZ3MKKyAgICAgICAgdGVzdHBhdGhz
ID0gdGVzdG1vZAorICAgICIiIgorICAgICAgICApCisgICAgKQorICAgIG1vbmtleXBhdGNoLnNl
dGVudigiUFlUSE9OUEFUSCIsIHN0cih0ZXN0ZGlyLnRtcGRpciksIHByZXBlbmQ9b3MucGF0aHNl
cCkKKyAgICB3aXRoIHJvb3QuYXNfY3dkKCk6CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiox
IHBhc3NlZCBpbioiXSkKKworCitkZWYgdGVzdF9jb2xsZWN0X3N5bWxpbmtfZmlsZV9hcmcodGVz
dGRpcik6CisgICAgIiIiQ29sbGVjdCBhIGRpcmVjdCBzeW1saW5rIHdvcmtzIGV2ZW4gaWYgaXQg
ZG9lcyBub3QgbWF0Y2ggcHl0aG9uX2ZpbGVzICgjNDMyNSkuIiIiCisgICAgcmVhbCA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgcmVhbD0iIiIKKyAgICAgICAgZGVmIHRlc3Rfbm9kZWlk
KHJlcXVlc3QpOgorICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3Qubm9kZS5ub2RlaWQgPT0gInN5
bWxpbmsucHk6OnRlc3Rfbm9kZWlkIgorICAgICAgICAiIiIKKyAgICApCisgICAgc3ltbGluayA9
IHRlc3RkaXIudG1wZGlyLmpvaW4oInN5bWxpbmsucHkiKQorICAgIHN5bWxpbmtfb3Jfc2tpcChy
ZWFsLCBzeW1saW5rKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsIHN5bWxp
bmspCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsic3ltbGluay5weTo6dGVzdF9u
b2RlaWQgUEFTU0VEKiIsICIqMSBwYXNzZWQgaW4qIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gMAorCisKK2RlZiB0ZXN0X2NvbGxlY3Rfc3ltbGlua19vdXRfb2ZfdHJlZSh0ZXN0ZGlyKToK
KyAgICAiIiJUZXN0IGNvbGxlY3Rpb24gb2Ygc3ltbGluayB2aWEgb3V0LW9mLXRyZWUgcm9vdGRp
ci4iIiIKKyAgICBzdWIgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJzdWIiKQorICAgIHJlYWwgPSBz
dWIuam9pbigidGVzdF9yZWFsLnB5IikKKyAgICByZWFsLndyaXRlKAorICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3Rfbm9kZWlkKHJlcXVl
c3QpOgorICAgICAgICAgICAgIyBTaG91bGQgbm90IGNvbnRhaW4gc3ViLyBwcmVmaXguCisgICAg
ICAgICAgICBhc3NlcnQgcmVxdWVzdC5ub2RlLm5vZGVpZCA9PSAidGVzdF9yZWFsLnB5Ojp0ZXN0
X25vZGVpZCIKKyAgICAgICAgIiIiCisgICAgICAgICksCisgICAgICAgIGVuc3VyZT1UcnVlLAor
ICAgICkKKworICAgIG91dF9vZl90cmVlID0gdGVzdGRpci50bXBkaXIuam9pbigib3V0X29mX3Ry
ZWUiKS5lbnN1cmUoZGlyPVRydWUpCisgICAgc3ltbGlua190b19zdWIgPSBvdXRfb2ZfdHJlZS5q
b2luKCJzeW1saW5rX3RvX3N1YiIpCisgICAgc3ltbGlua19vcl9za2lwKHN1Yiwgc3ltbGlua190
b19zdWIpCisgICAgc3ViLmNoZGlyKCkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXZzIiwgIi0tcm9vdGRpcj0lcyIgJSBzdWIsIHN5bWxpbmtfdG9fc3ViKQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIyBTaG91bGQgbm90
IGNvbnRhaW4gInN1Yi8iIQorICAgICAgICAgICAgInRlc3RfcmVhbC5weTo6dGVzdF9ub2RlaWQg
UEFTU0VEIgorICAgICAgICBdCisgICAgKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKwor
CitkZWYgdGVzdF9jb2xsZWN0aWdub3JlX3ZpYV9jb25mdGVzdCh0ZXN0ZGlyKToKKyAgICAiIiJj
b2xsZWN0X2lnbm9yZSBpbiBwYXJlbnQgY29uZnRlc3Qgc2tpcHMgaW1wb3J0aW5nIGNoaWxkIChp
c3N1ZSAjNDU5MikuIiIiCisgICAgdGVzdHMgPSB0ZXN0ZGlyLm1rcHlkaXIoInRlc3RzIikKKyAg
ICB0ZXN0cy5lbnN1cmUoImNvbmZ0ZXN0LnB5Iikud3JpdGUoImNvbGxlY3RfaWdub3JlID0gWydp
Z25vcmVfbWUnXSIpCisKKyAgICBpZ25vcmVfbWUgPSB0ZXN0cy5ta2RpcigiaWdub3JlX21lIikK
KyAgICBpZ25vcmVfbWUuZW5zdXJlKCJfX2luaXRfXy5weSIpCisgICAgaWdub3JlX21lLmVuc3Vy
ZSgiY29uZnRlc3QucHkiKS53cml0ZSgiYXNzZXJ0IDAsICdzaG91bGRfbm90X2JlX2NhbGxlZCci
KQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAorCisKK2RlZiB0ZXN0X2NvbGxlY3Rf
cGtnX2luaXRfYW5kX2ZpbGVfaW5fYXJncyh0ZXN0ZGlyKToKKyAgICBzdWJkaXIgPSB0ZXN0ZGly
Lm1rZGlyKCJzdWIiKQorICAgIGluaXQgPSBzdWJkaXIuZW5zdXJlKCJfX2luaXRfXy5weSIpCisg
ICAgaW5pdC53cml0ZSgiZGVmIHRlc3RfaW5pdCgpOiBwYXNzIikKKyAgICBwID0gc3ViZGlyLmVu
c3VyZSgidGVzdF9maWxlLnB5IikKKyAgICBwLndyaXRlKCJkZWYgdGVzdF9maWxlKCk6IHBhc3Mi
KQorCisgICAgIyBOT1RFOiB3aXRob3V0ICItbyBweXRob25fZmlsZXM9Ki5weSIgdGhpcyBjb2xs
ZWN0cyB0ZXN0X2ZpbGUucHkgdHdpY2UuCisgICAgIyBUaGlzIGNoYW5nZWQvYnJva2Ugd2l0aCAi
QWRkIHBhY2thZ2Ugc2NvcGVkIGZpeHR1cmVzICMyMjgzIiAoMmIxNDEwODk1KQorICAgICMgaW5p
dGlhbGx5IChjYXVzaW5nIGEgUmVjdXJzaW9uRXJyb3IpLgorICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItdiIsIHN0cihpbml0KSwgc3RyKHApKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgInN1Yi90ZXN0X2ZpbGUucHk6OnRl
c3RfZmlsZSBQQVNTRUQqIiwKKyAgICAgICAgICAgICJzdWIvdGVzdF9maWxlLnB5Ojp0ZXN0X2Zp
bGUgUEFTU0VEKiIsCisgICAgICAgICAgICAiKjIgcGFzc2VkIGluKiIsCisgICAgICAgIF0KKyAg
ICApCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLW8iLCAicHl0aG9u
X2ZpbGVzPSoucHkiLCBzdHIoaW5pdCksIHN0cihwKSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICJzdWIvX19pbml0X18ucHk6OnRlc3Rf
aW5pdCBQQVNTRUQqIiwKKyAgICAgICAgICAgICJzdWIvdGVzdF9maWxlLnB5Ojp0ZXN0X2ZpbGUg
UEFTU0VEKiIsCisgICAgICAgICAgICAiKjIgcGFzc2VkIGluKiIsCisgICAgICAgIF0KKyAgICAp
CisKKworZGVmIHRlc3RfY29sbGVjdF9wa2dfaW5pdF9vbmx5KHRlc3RkaXIpOgorICAgIHN1YmRp
ciA9IHRlc3RkaXIubWtkaXIoInN1YiIpCisgICAgaW5pdCA9IHN1YmRpci5lbnN1cmUoIl9faW5p
dF9fLnB5IikKKyAgICBpbml0LndyaXRlKCJkZWYgdGVzdF9pbml0KCk6IHBhc3MiKQorCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3RyKGluaXQpKQorICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIipubyB0ZXN0cyByYW4gaW4qIl0pCisKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLW8iLCAicHl0aG9uX2ZpbGVzPSoucHkiLCBzdHIoaW5pdCkp
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsic3ViL19faW5pdF9fLnB5Ojp0ZXN0
X2luaXQgUEFTU0VEKiIsICIqMSBwYXNzZWQgaW4qIl0pCisKKworQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJ1c2VfcGtnIiwgKFRydWUsIEZhbHNlKSkKK2RlZiB0ZXN0X2NvbGxlY3Rfc3ViX3dp
dGhfc3ltbGlua3ModXNlX3BrZywgdGVzdGRpcik6CisgICAgIiIiQ29sbGVjdGlvbiB3b3JrcyB3
aXRoIHN5bWxpbmtlZCBmaWxlcyBhbmQgYnJva2VuIHN5bWxpbmtzIiIiCisgICAgc3ViID0gdGVz
dGRpci5ta2Rpcigic3ViIikKKyAgICBpZiB1c2VfcGtnOgorICAgICAgICBzdWIuZW5zdXJlKCJf
X2luaXRfXy5weSIpCisgICAgc3ViLmpvaW4oInRlc3RfZmlsZS5weSIpLndyaXRlKCJkZWYgdGVz
dF9maWxlKCk6IHBhc3MiKQorCisgICAgIyBDcmVhdGUgYSBicm9rZW4gc3ltbGluay4KKyAgICBz
eW1saW5rX29yX3NraXAoInRlc3RfZG9lc25vdGV4aXN0LnB5Iiwgc3ViLmpvaW4oInRlc3RfYnJv
a2VuLnB5IikpCisKKyAgICAjIFN5bWxpbmsgdGhhdCBnZXRzIGNvbGxlY3RlZC4KKyAgICBzeW1s
aW5rX29yX3NraXAoInRlc3RfZmlsZS5weSIsIHN1Yi5qb2luKCJ0ZXN0X3N5bWxpbmsucHkiKSkK
KworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsIHN0cihzdWIpKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgInN1Yi90
ZXN0X2ZpbGUucHk6OnRlc3RfZmlsZSBQQVNTRUQqIiwKKyAgICAgICAgICAgICJzdWIvdGVzdF9z
eW1saW5rLnB5Ojp0ZXN0X2ZpbGUgUEFTU0VEKiIsCisgICAgICAgICAgICAiKjIgcGFzc2VkIGlu
KiIsCisgICAgICAgIF0KKyAgICApCisKKworZGVmIHRlc3RfY29sbGVjdG9yX3Jlc3BlY3RzX3Ri
c3R5bGUodGVzdGRpcik6CisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImFzc2VydCAwIikK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwMSwgIi0tdGI9bmF0aXZlIikKKyAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5JTlRFUlJVUFRFRAorICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIipfIEVSUk9SIGNvbGxl
Y3RpbmcgdGVzdF9jb2xsZWN0b3JfcmVzcGVjdHNfdGJzdHlsZS5weSBfKiIsCisgICAgICAgICAg
ICAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOiIsCisgICAgICAgICAgICAnICBG
aWxlICIqL3Rlc3RfY29sbGVjdG9yX3Jlc3BlY3RzX3Ric3R5bGUucHkiLCBsaW5lIDEsIGluIDxt
b2R1bGU+JywKKyAgICAgICAgICAgICIgICAgYXNzZXJ0IDAiLAorICAgICAgICAgICAgIkFzc2Vy
dGlvbkVycm9yOiBhc3NlcnQgMCIsCisgICAgICAgICAgICAiKiEgSW50ZXJydXB0ZWQ6IDEgZXJy
b3IgZHVyaW5nIGNvbGxlY3Rpb24gISoiLAorICAgICAgICAgICAgIio9IDEgZXJyb3IgaW4gKiIs
CisgICAgICAgIF0KKyAgICApCisKKworZGVmIHRlc3RfZG9lc19ub3RfZWFnZXJseV9jb2xsZWN0
X3BhY2thZ2VzKHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3QoKTog
cGFzcyIpCisgICAgcHlkaXIgPSB0ZXN0ZGlyLm1rcHlkaXIoImZvb3BrZyIpCisgICAgcHlkaXIu
am9pbigiX19pbml0X18ucHkiKS53cml0ZSgiYXNzZXJ0IEZhbHNlIikKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuT0sK
KworCitkZWYgdGVzdF9kb2VzX25vdF9wdXRfc3JjX29uX3BhdGgodGVzdGRpcik6CisgICAgIyBg
c3JjYCBpcyBub3Qgb24gc3lzLnBhdGggc28gaXQgc2hvdWxkIG5vdCBiZSBpbXBvcnRhYmxlCisg
ICAgdGVzdGRpci50bXBkaXIuam9pbigic3JjL25vcGUvX19pbml0X18ucHkiKS5lbnN1cmUoKQor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgImltcG9ydCBweXRlc3RcbiIKKyAgICAg
ICAgImRlZiB0ZXN0KCk6XG4iCisgICAgICAgICIgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9y
dEVycm9yKTpcbiIKKyAgICAgICAgIiAgICAgICAgaW1wb3J0IG5vcGVcbiIKKyAgICApCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4
aXRDb2RlLk9LCisKKworZGVmIHRlc3RfZnNjb2xsZWN0b3JfZnJvbV9wYXJlbnQodG1wZGlyLCBy
ZXF1ZXN0KToKKyAgICAiIiJFbnN1cmUgRmlsZS5mcm9tX3BhcmVudCBjYW4gZm9yd2FyZCBjdXN0
b20gYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKworICAgIENvbnRleHQ6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1jcHAvcHVsbC80NworICAgICIiIgorCisgICAg
Y2xhc3MgTXlDb2xsZWN0b3IocHl0ZXN0LkZpbGUpOgorICAgICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZnNwYXRoLCBwYXJlbnQsIHgpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmc3Bh
dGgsIHBhcmVudCkKKyAgICAgICAgICAgIHNlbGYueCA9IHgKKworICAgICAgICBAY2xhc3NtZXRo
b2QKKyAgICAgICAgZGVmIGZyb21fcGFyZW50KGNscywgcGFyZW50LCAqLCBmc3BhdGgsIHgpOgor
ICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZnJvbV9wYXJlbnQocGFyZW50PXBhcmVudCwgZnNw
YXRoPWZzcGF0aCwgeD14KQorCisgICAgY29sbGVjdG9yID0gTXlDb2xsZWN0b3IuZnJvbV9wYXJl
bnQoCisgICAgICAgIHBhcmVudD1yZXF1ZXN0LnNlc3Npb24sIGZzcGF0aD10bXBkaXIgLyAiZm9v
IiwgeD0xMAorICAgICkKKyAgICBhc3NlcnQgY29sbGVjdG9yLnggPT0gMTAKKworCitjbGFzcyBU
ZXN0SW1wb3J0TW9kZUltcG9ydGxpYjoKKyAgICBkZWYgdGVzdF9jb2xsZWN0X2R1cGxpY2F0ZV9u
YW1lcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiLS1pbXBvcnQtbW9kZT1pbXBvcnRsaWIg
Y2FuIGltcG9ydCBtb2R1bGVzIHdpdGggc2FtZSBuYW1lcyB0aGF0IGFyZSBub3QgaW4gcGFja2Fn
ZXMuIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICoqeworICAg
ICAgICAgICAgICAgICJ0ZXN0c19hL3Rlc3RfZm9vLnB5IjogImRlZiB0ZXN0X2ZvbzEoKTogcGFz
cyIsCisgICAgICAgICAgICAgICAgInRlc3RzX2IvdGVzdF9mb28ucHkiOiAiZGVmIHRlc3RfZm9v
MigpOiBwYXNzIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLS1pbXBvcnQtbW9kZT1pbXBvcnRsaWIiKQorICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgInRlc3RzX2EvdGVzdF9mb28ucHk6OnRlc3RfZm9vMSAqIiwKKyAgICAgICAgICAgICAg
ICAidGVzdHNfYi90ZXN0X2Zvby5weTo6dGVzdF9mb28yICoiLAorICAgICAgICAgICAgICAgICIq
IDIgcGFzc2VkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYgdGVz
dF9jb25mdGVzdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiRGlyZWN0b3J5IGNvbnRhaW5p
bmcgY29uZnRlc3QgbW9kdWxlcyBhcmUgbm90IHB1dCBpbiBzeXMucGF0aCBhcyBhIHNpZGUtZWZm
ZWN0IG9mCisgICAgICAgIGltcG9ydGluZyB0aGVtLiIiIgorICAgICAgICB0ZXN0c19kaXIgPSB0
ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0cyIpCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJ0ZXN0cy9jb25mdGVzdC5weSI6ICIi
LAorICAgICAgICAgICAgICAgICJ0ZXN0cy90ZXN0X2Zvby5weSI6ICIiIgorICAgICAgICAgICAg
ICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9jaGVjaygpOgorICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgciJ7dGVzdHNfZGlyfSIgbm90IGluIHN5cy5wYXRoCisgICAg
ICAgICAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfZGlyPXRl
c3RzX2RpcgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi0taW1wb3J0LW1vZGU9aW1w
b3J0bGliIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAxIHBhc3Nl
ZCBpbiAqIl0pCisKKyAgICBkZWYgc2V0dXBfY29uZnRlc3RfYW5kX2ZvbyhzZWxmLCB0ZXN0ZGly
KToKKyAgICAgICAgIiIiU2V0dXAgYSB0ZXN0cyBmb2xkZXIgdG8gYmUgdXNlZCB0byB0ZXN0IGlm
IG1vZHVsZXMgaW4gdGhhdCBmb2xkZXIgY2FuIGJlIGltcG9ydGVkCisgICAgICAgIGR1ZSB0byBz
aWRlLWVmZmVjdHMgb2YgLS1pbXBvcnQtbW9kZSBvciBub3QuIiIiCisgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJ0ZXN0cy9jb25m
dGVzdC5weSI6ICIiLAorICAgICAgICAgICAgICAgICJ0ZXN0cy9mb28ucHkiOiAiIiIKKyAgICAg
ICAgICAgICAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gNDIKKyAgICAgICAgICAgICAgICAiIiIs
CisgICAgICAgICAgICAgICAgInRlc3RzL3Rlc3RfZm9vLnB5IjogIiIiCisgICAgICAgICAgICAg
ICAgICAgIGRlZiB0ZXN0X2NoZWNrKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGZv
byBpbXBvcnQgZm9vCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZm9vKCkgPT0gNDIK
KyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICB9CisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X21vZHVsZXNfaW1wb3J0YWJsZV9hc19zaWRlX2VmZmVjdChzZWxmLCB0ZXN0ZGlyKToK
KyAgICAgICAgIiIiSW4gaW1wb3J0LW1vZGVzIGBwcmVwZW5kYCBhbmQgYGFwcGVuZGAsIHdlIGFy
ZSBhYmxlIHRvIGltcG9ydCBtb2R1bGVzIGZyb20gZm9sZGVycworICAgICAgICBjb250YWluaW5n
IGNvbmZ0ZXN0LnB5IGZpbGVzIGR1ZSB0byB0aGUgc2lkZSBlZmZlY3Qgb2YgY2hhbmdpbmcgc3lz
LnBhdGguIiIiCisgICAgICAgIHNlbGYuc2V0dXBfY29uZnRlc3RfYW5kX2Zvbyh0ZXN0ZGlyKQor
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLS1pbXBvcnQtbW9kZT1w
cmVwZW5kIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAxIHBhc3Nl
ZCBpbiAqIl0pCisKKyAgICBkZWYgdGVzdF9tb2R1bGVzX25vdF9pbXBvcnRhYmxlX2FzX3NpZGVf
ZWZmZWN0KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJJbiBpbXBvcnQtbW9kZSBgaW1wb3J0
bGliYCwgbW9kdWxlcyBpbiBmb2xkZXJzIGNvbnRhaW5pbmcgY29uZnRlc3QucHkgYXJlIG5vdAor
ICAgICAgICBpbXBvcnRhYmxlLCBhcyBkb24ndCBjaGFuZ2Ugc3lzLnBhdGggb3Igc3lzLm1vZHVs
ZXMgYXMgc2lkZSBlZmZlY3Qgb2YgaW1wb3J0aW5nCisgICAgICAgIHRoZSBjb25mdGVzdC5weSBm
aWxlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5zZXR1cF9jb25mdGVzdF9hbmRfZm9vKHRl
c3RkaXIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsICItLWltcG9y
dC1tb2RlPWltcG9ydGxpYiIpCisgICAgICAgIGV4Y19uYW1lID0gKAorICAgICAgICAgICAgIk1v
ZHVsZU5vdEZvdW5kRXJyb3IiIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdID4gKDMsIDUpIGVsc2Ug
IkltcG9ydEVycm9yIgorICAgICAgICApCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKnt9OiBObyBtb2R1bGUgbmFt
ZWQgJ2ZvbyciLmZvcm1hdChleGNfbmFtZSksCisgICAgICAgICAgICAgICAgInRlc3RzP3Rlc3Rf
Zm9vLnB5OjI6IHt9Ii5mb3JtYXQoZXhjX25hbWUpLAorICAgICAgICAgICAgICAgICIqIDEgZmFp
bGVkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKworZGVmIHRlc3RfZG9lc19u
b3RfY3Jhc2hfb25fZXJyb3JfZnJvbV9kZWNvcmF0ZWRfZnVuY3Rpb24odGVzdGRpcjogVGVzdGRp
cikgLT4gTm9uZToKKyAgICAiIiJSZWdyZXNzaW9uIHRlc3QgZm9yIGFuIGlzc3VlIGFyb3VuZCBi
YWQgZXhjZXB0aW9uIGZvcm1hdHRpbmcgZHVlIHRvCisgICAgYXNzZXJ0aW9uIHJld3JpdGluZyBt
YW5nbGluZyBsaW5lbm8ncyAoIzQ5ODQpLiIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgIiIiCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgYSgpOiByZXR1
cm4gNAorICAgICAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQorICAgICMgTm90IElOVEVSTkFMX0VSUk9SCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhp
dENvZGUuSU5URVJSVVBURUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9j
b21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29tcGF0LnB5CmluZGV4IDU1MGE4
ZjFiMzU0NC4uNWRlYmU4N2EzZWRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rl
c3RfY29tcGF0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb21wYXQucHkKQEAg
LTEsMjcgKzEsMzcgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBlbnVtCiBpbXBvcnQgc3lzCitmcm9tIGZ1
bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitmcm9t
IHR5cGluZyBpbXBvcnQgVW5pb24KIAogaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgaXNfZ2VuZXJhdG9yLCBnZXRfcmVhbF9mdW5jLCBzYWZlX2dldGF0dHIKK2Zyb20g
X3B5dGVzdC5jb21wYXQgaW1wb3J0IF9QeXRlc3RXcmFwcGVyCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBhc3NlcnRfbmV2ZXIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGNhY2hlZF9w
cm9wZXJ0eQorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0X3JlYWxfZnVuYworZnJvbSBf
cHl0ZXN0LmNvbXBhdCBpbXBvcnQgaXNfZ2VuZXJhdG9yCitmcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBzYWZlX2dldGF0dHIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IHNhZmVfaXNjbGFz
cworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORwogZnJvbSBfcHl0ZXN0
Lm91dGNvbWVzIGltcG9ydCBPdXRjb21lRXhjZXB0aW9uCiAKK2lmIFRZUEVfQ0hFQ0tJTkc6Cisg
ICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAogCi1kZWYgdGVzdF9pc19n
ZW5lcmF0b3IoKToKIAorZGVmIHRlc3RfaXNfZ2VuZXJhdG9yKCk6CiAgICAgZGVmIHphcCgpOgot
ICAgICAgICB5aWVsZAorICAgICAgICB5aWVsZCAgIyBwcmFnbWE6IG5vIGNvdmVyCiAKICAgICBk
ZWYgZm9vKCk6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgcGFzcyAgIyBwcmFnbWE6IG5vIGNvdmVy
CiAKICAgICBhc3NlcnQgaXNfZ2VuZXJhdG9yKHphcCkKICAgICBhc3NlcnQgbm90IGlzX2dlbmVy
YXRvcihmb28pCiAKIAogZGVmIHRlc3RfcmVhbF9mdW5jX2xvb3BfbGltaXQoKToKLQotICAgIGNs
YXNzIEV2aWwob2JqZWN0KToKLQorICAgIGNsYXNzIEV2aWw6CiAgICAgICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKICAgICAgICAgICAgIHNlbGYubGVmdCA9IDEwMDAKIApAQCAtMzAsMjAgKzQwLDU3
IEBAIGRlZiB0ZXN0X3JlYWxfZnVuY19sb29wX2xpbWl0KCk6CiAKICAgICAgICAgZGVmIF9fZ2V0
YXR0cl9fKHNlbGYsIGF0dHIpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYubGVmdDoKLSAgICAg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIml0cyBvdmVyIikKKyAgICAgICAgICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoIml0J3Mgb3ZlciIpICAjIHByYWdtYTogbm8gY292ZXIKICAg
ICAgICAgICAgIHNlbGYubGVmdCAtPSAxCiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAg
ZXZpbCA9IEV2aWwoKQogCi0gICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgotICAg
ICAgICByZXMgPSBnZXRfcmVhbF9mdW5jKGV2aWwpCi0gICAgICAgIHByaW50KHJlcykKKyAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgIG1hdGNoPSgK
KyAgICAgICAgICAgICJjb3VsZCBub3QgZmluZCByZWFsIGZ1bmN0aW9uIG9mIDxFdmlsIGxlZnQ9
ODAwPlxuIgorICAgICAgICAgICAgInN0b3BwZWQgYXQgPEV2aWwgbGVmdD04MDA+IgorICAgICAg
ICApLAorICAgICk6CisgICAgICAgIGdldF9yZWFsX2Z1bmMoZXZpbCkKKworCitkZWYgdGVzdF9n
ZXRfcmVhbF9mdW5jKCk6CisgICAgIiIiQ2hlY2sgdGhhdCBnZXRfcmVhbF9mdW5jIGNvcnJlY3Rs
eSB1bndyYXBzIGRlY29yYXRvcnMgdW50aWwgcmVhY2hpbmcgdGhlIHJlYWwgZnVuY3Rpb24iIiIK
KworICAgIGRlZiBkZWNvcmF0b3IoZik6CisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYg
aW5uZXIoKToKKyAgICAgICAgICAgIHBhc3MgICMgcHJhZ21hOiBubyBjb3ZlcgorCisgICAgICAg
IHJldHVybiBpbm5lcgorCisgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgcGFzcyAgIyBwcmFnbWE6
IG5vIGNvdmVyCisKKyAgICB3cmFwcGVkX2Z1bmMgPSBkZWNvcmF0b3IoZGVjb3JhdG9yKGZ1bmMp
KQorICAgIGFzc2VydCBnZXRfcmVhbF9mdW5jKHdyYXBwZWRfZnVuYykgaXMgZnVuYworCisgICAg
d3JhcHBlZF9mdW5jMiA9IGRlY29yYXRvcihkZWNvcmF0b3Iod3JhcHBlZF9mdW5jKSkKKyAgICBh
c3NlcnQgZ2V0X3JlYWxfZnVuYyh3cmFwcGVkX2Z1bmMyKSBpcyBmdW5jCisKKyAgICAjIHNwZWNp
YWwgY2FzZSBmb3IgX19weXRlc3Rfd3JhcHBlZF9fIGF0dHJpYnV0ZTogdXNlZCB0byBvYnRhaW4g
dGhlIGZ1bmN0aW9uIHVwIHVudGlsIHRoZSBwb2ludAorICAgICMgYSBmdW5jdGlvbiB3YXMgd3Jh
cHBlZCBieSBweXRlc3QgaXRzZWxmCisgICAgd3JhcHBlZF9mdW5jMi5fX3B5dGVzdF93cmFwcGVk
X18gPSBfUHl0ZXN0V3JhcHBlcih3cmFwcGVkX2Z1bmMpCisgICAgYXNzZXJ0IGdldF9yZWFsX2Z1
bmMod3JhcHBlZF9mdW5jMikgaXMgd3JhcHBlZF9mdW5jCisKKworZGVmIHRlc3RfZ2V0X3JlYWxf
ZnVuY19wYXJ0aWFsKCk6CisgICAgIiIiVGVzdCBnZXRfcmVhbF9mdW5jIGhhbmRsZXMgcGFydGlh
bCBpbnN0YW5jZXMgY29ycmVjdGx5IiIiCisKKyAgICBkZWYgZm9vKHgpOgorICAgICAgICByZXR1
cm4geAorCisgICAgYXNzZXJ0IGdldF9yZWFsX2Z1bmMoZm9vKSBpcyBmb28KKyAgICBhc3NlcnQg
Z2V0X3JlYWxfZnVuYyhwYXJ0aWFsKGZvbykpIGlzIGZvbwogCiAKLUBweXRlc3QubWFyay5za2lw
aWYoCi0gICAgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA0KSwgcmVhc29uPSJhc3luY2lvIGF2YWls
YWJsZSBpbiBQeXRob24gMy40KyIKLSkKIGRlZiB0ZXN0X2lzX2dlbmVyYXRvcl9hc3luY2lvKHRl
c3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCkBAIC02Myw5ICsx
MTAsNiBAQCBkZWYgdGVzdF9pc19nZW5lcmF0b3JfYXN5bmNpbyh0ZXN0ZGlyKToKICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKIAotQHB5dGVzdC5tYXJr
LnNraXBpZigKLSAgICBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDUpLCByZWFzb249ImFzeW5jIHN5
bnRheCBhdmFpbGFibGUgaW4gUHl0aG9uIDMuNSsiCi0pCiBkZWYgdGVzdF9pc19nZW5lcmF0b3Jf
YXN5bmNfc3ludGF4KHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAg
IiIiCkBAIC04NSwxNCArMTI5LDQwIEBAIGRlZiB0ZXN0X2lzX2dlbmVyYXRvcl9hc3luY19zeW50
YXgodGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2Vk
KiJdKQogCiAKLWNsYXNzIEVycm9yc0hlbHBlcihvYmplY3QpOgorQHB5dGVzdC5tYXJrLnNraXBp
ZigKKyAgICBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDYpLCByZWFzb249ImFzeW5jIGdlbiBzeW50
YXggYXZhaWxhYmxlIGluIFB5dGhvbiAzLjYrIgorKQorZGVmIHRlc3RfaXNfZ2VuZXJhdG9yX2Fz
eW5jX2dlbl9zeW50YXgodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAg
ICAiIiIKKyAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgaXNfZ2VuZXJhdG9yCisg
ICAgICAgIGRlZiB0ZXN0X2lzX2dlbmVyYXRvcl9weTM2KCk6CisgICAgICAgICAgICBhc3luYyBk
ZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICBhd2FpdCBm
b28oKQorCisgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgeWll
bGQKKworICAgICAgICAgICAgYXNzZXJ0IG5vdCBpc19nZW5lcmF0b3IoZm9vKQorICAgICAgICAg
ICAgYXNzZXJ0IG5vdCBpc19nZW5lcmF0b3IoYmFyKQorICAgICIiIgorICAgICkKKyAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKjEgcGFzc2VkKiJdKQorCisKK2NsYXNzIEVycm9yc0hlbHBlcjoKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgcmFpc2VfYmFzZWV4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgcmFpc2UgQmFzZUV4
Y2VwdGlvbigiYmFzZSBleGNlcHRpb24gc2hvdWxkIGJlIHJhaXNlZCIpCiAKICAgICBAcHJvcGVy
dHkKICAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICByYWlzZSBFeGNlcHRp
b24oImV4Y2VwdGlvbiBzaG91bGQgYmUgY2F0Y2hlZCIpCiAKICAgICBAcHJvcGVydHkKLSAgICBk
ZWYgcmFpc2VfZmFpbChzZWxmKToKKyAgICBkZWYgcmFpc2VfZmFpbF9vdXRjb21lKHNlbGYpOgog
ICAgICAgICBweXRlc3QuZmFpbCgiZmFpbCBzaG91bGQgYmUgY2F0Y2hlZCIpCiAKIApAQCAtMTAx
LDEwICsxNzEsOTYgQEAgZGVmIHRlc3RfaGVscGVyX2ZhaWx1cmVzKCk6CiAgICAgd2l0aCBweXRl
c3QucmFpc2VzKEV4Y2VwdGlvbik6CiAgICAgICAgIGhlbHBlci5yYWlzZV9leGNlcHRpb24KICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoT3V0Y29tZUV4Y2VwdGlvbik6Ci0gICAgICAgIGhlbHBlci5y
YWlzZV9mYWlsCisgICAgICAgIGhlbHBlci5yYWlzZV9mYWlsX291dGNvbWUKIAogCiBkZWYgdGVz
dF9zYWZlX2dldGF0dHIoKToKICAgICBoZWxwZXIgPSBFcnJvcnNIZWxwZXIoKQogICAgIGFzc2Vy
dCBzYWZlX2dldGF0dHIoaGVscGVyLCAicmFpc2VfZXhjZXB0aW9uIiwgImRlZmF1bHQiKSA9PSAi
ZGVmYXVsdCIKLSAgICBhc3NlcnQgc2FmZV9nZXRhdHRyKGhlbHBlciwgInJhaXNlX2ZhaWwiLCAi
ZGVmYXVsdCIpID09ICJkZWZhdWx0IgorICAgIGFzc2VydCBzYWZlX2dldGF0dHIoaGVscGVyLCAi
cmFpc2VfZmFpbF9vdXRjb21lIiwgImRlZmF1bHQiKSA9PSAiZGVmYXVsdCIKKyAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoQmFzZUV4Y2VwdGlvbik6CisgICAgICAgIGFzc2VydCBzYWZlX2dldGF0dHIo
aGVscGVyLCAicmFpc2VfYmFzZWV4Y2VwdGlvbiIsICJkZWZhdWx0IikKKworCitkZWYgdGVzdF9z
YWZlX2lzY2xhc3MoKToKKyAgICBhc3NlcnQgc2FmZV9pc2NsYXNzKHR5cGUpIGlzIFRydWUKKwor
ICAgIGNsYXNzIENyYXBweUNsYXNzKEV4Y2VwdGlvbik6CisgICAgICAgICMgVHlwZSBpZ25vcmVk
IGJlY2F1c2UgaXQncyBieXBhc3NlZCBpbnRlbnRpb25hbGx5LgorICAgICAgICBAcHJvcGVydHkg
ICMgdHlwZTogaWdub3JlCisgICAgICAgIGRlZiBfX2NsYXNzX18oc2VsZik6CisgICAgICAgICAg
ICBhc3NlcnQgRmFsc2UsICJTaG91bGQgYmUgaWdub3JlZCIKKworICAgIGFzc2VydCBzYWZlX2lz
Y2xhc3MoQ3JhcHB5Q2xhc3MoKSkgaXMgRmFsc2UKKworCitkZWYgdGVzdF9jYWNoZWRfcHJvcGVy
dHkoKSAtPiBOb25lOgorICAgIG5jYWxscyA9IDAKKworICAgIGNsYXNzIENsYXNzOgorICAgICAg
ICBAY2FjaGVkX3Byb3BlcnR5CisgICAgICAgIGRlZiBwcm9wKHNlbGYpIC0+IGludDoKKyAgICAg
ICAgICAgIG5vbmxvY2FsIG5jYWxscworICAgICAgICAgICAgbmNhbGxzICs9IDEKKyAgICAgICAg
ICAgIHJldHVybiBuY2FsbHMKKworICAgIGMxID0gQ2xhc3MoKQorICAgIGFzc2VydCBuY2FsbHMg
PT0gMAorICAgIGFzc2VydCBjMS5wcm9wID09IDEKKyAgICBhc3NlcnQgYzEucHJvcCA9PSAxCisg
ICAgYzIgPSBDbGFzcygpCisgICAgYXNzZXJ0IG5jYWxscyA9PSAxCisgICAgYXNzZXJ0IGMyLnBy
b3AgPT0gMgorICAgIGFzc2VydCBjMS5wcm9wID09IDEKKworCitkZWYgdGVzdF9hc3NlcnRfbmV2
ZXJfdW5pb24oKSAtPiBOb25lOgorICAgIHggPSAxMCAgIyB0eXBlOiBVbmlvbltpbnQsIHN0cl0K
KworICAgIGlmIGlzaW5zdGFuY2UoeCwgaW50KToKKyAgICAgICAgcGFzcworICAgIGVsc2U6Cisg
ICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBh
c3NlcnRfbmV2ZXIoeCkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorCisgICAgaWYgaXNpbnN0
YW5jZSh4LCBpbnQpOgorICAgICAgICBwYXNzCisgICAgZWxpZiBpc2luc3RhbmNlKHgsIHN0cik6
CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnRfbmV2ZXIoeCkKKworCitk
ZWYgdGVzdF9hc3NlcnRfbmV2ZXJfZW51bSgpIC0+IE5vbmU6CisgICAgRSA9IGVudW0uRW51bSgi
RSIsICJhIGIiKQorICAgIHggPSBFLmEgICMgdHlwZTogRQorCisgICAgaWYgeCBpcyBFLmE6Cisg
ICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0
aW9uRXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0X25ldmVyKHgpICAjIHR5cGU6IGlnbm9yZVth
cmctdHlwZV0KKworICAgIGlmIHggaXMgRS5hOgorICAgICAgICBwYXNzCisgICAgZWxpZiB4IGlz
IEUuYjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGFzc2VydF9uZXZlcih4KQor
CisKK2RlZiB0ZXN0X2Fzc2VydF9uZXZlcl9saXRlcmFsKCkgLT4gTm9uZToKKyAgICB4ID0gImEi
ICAjIHR5cGU6IExpdGVyYWxbImEiLCAiYiJdCisKKyAgICBpZiB4ID09ICJhIjoKKyAgICAgICAg
cGFzcworICAgIGVsc2U6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJv
cik6CisgICAgICAgICAgICBhc3NlcnRfbmV2ZXIoeCkgICMgdHlwZTogaWdub3JlW2FyZy10eXBl
XQorCisgICAgaWYgeCA9PSAiYSI6CisgICAgICAgIHBhc3MKKyAgICBlbGlmIHggPT0gImIiOgor
ICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0X25ldmVyKHgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29uZmlnLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X2NvbmZpZy5weQppbmRleCA1ZmIwNDgzNjRmN2MuLjg5ZmJiZjhjOTU3ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbmZpZy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfY29uZmlnLnB5CkBAIC0xLDQ5ICsxLDkzIEBACi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitp
bXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRleHR3cmFwCi1pbXBvcnQg
cHl0ZXN0Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QK
K2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisK
K2ltcG9ydCBhdHRyCitpbXBvcnQgcHkucGF0aAogCiBpbXBvcnQgX3B5dGVzdC5fY29kZQotZnJv
bSBfcHl0ZXN0LmNvbmZpZy5maW5kcGF0aHMgaW1wb3J0IGdldGNmZywgZ2V0X2NvbW1vbl9hbmNl
c3RvciwgZGV0ZXJtaW5lX3NldHVwCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBpbXBvcnRsaWJfbWV0YWRhdGEKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZ
UEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IF9nZXRfcGx1Z2luX3NwZWNz
X2FzX2xpc3QKIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IF9pdGVyX3Jld3JpdGFibGVfbW9k
dWxlcwotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IEVYSVRfTk9URVNUU0NPTExFQ1RFRAotCi0K
LWNsYXNzIFRlc3RQYXJzZUluaShvYmplY3QpOgotCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBfc3RydG9ib29sCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IENvbmZ0ZXN0SW1wb3J0RmFpbHVyZQorZnJvbSBfcHl0ZXN0LmNv
bmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IHBhcnNlX3dh
cm5pbmdfZmlsdGVyCitmcm9tIF9weXRlc3QuY29uZmlnLmV4Y2VwdGlvbnMgaW1wb3J0IFVzYWdl
RXJyb3IKK2Zyb20gX3B5dGVzdC5jb25maWcuZmluZHBhdGhzIGltcG9ydCBkZXRlcm1pbmVfc2V0
dXAKK2Zyb20gX3B5dGVzdC5jb25maWcuZmluZHBhdGhzIGltcG9ydCBnZXRfY29tbW9uX2FuY2Vz
dG9yCitmcm9tIF9weXRlc3QuY29uZmlnLmZpbmRwYXRocyBpbXBvcnQgbG9jYXRlX2NvbmZpZwor
ZnJvbSBfcHl0ZXN0Lm1vbmtleXBhdGNoIGltcG9ydCBNb25rZXlQYXRjaAorZnJvbSBfcHl0ZXN0
LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgVGVzdGRp
cgorCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCisKKwor
Y2xhc3MgVGVzdFBhcnNlSW5pOgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKICAgICAg
ICAgInNlY3Rpb24sIGZpbGVuYW1lIiwgWygicHl0ZXN0IiwgInB5dGVzdC5pbmkiKSwgKCJ0b29s
OnB5dGVzdCIsICJzZXR1cC5jZmciKV0KICAgICApCi0gICAgZGVmIHRlc3RfZ2V0Y2ZnX2FuZF9j
b25maWcoc2VsZiwgdGVzdGRpciwgdG1wZGlyLCBzZWN0aW9uLCBmaWxlbmFtZSk6Ci0gICAgICAg
IHN1YiA9IHRtcGRpci5ta2Rpcigic3ViIikKLSAgICAgICAgc3ViLmNoZGlyKCkKLSAgICAgICAg
dG1wZGlyLmpvaW4oZmlsZW5hbWUpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5T
b3VyY2UoCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBbe3NlY3Rpb259XQotICAg
ICAgICAgICAgbmFtZSA9IHZhbHVlCi0gICAgICAgICIiIi5mb3JtYXQoCisgICAgZGVmIHRlc3Rf
Z2V0Y2ZnX2FuZF9jb25maWcoCisgICAgICAgIHNlbGYsCisgICAgICAgIHRlc3RkaXI6IFRlc3Rk
aXIsCisgICAgICAgIHRtcF9wYXRoOiBQYXRoLAorICAgICAgICBzZWN0aW9uOiBzdHIsCisgICAg
ICAgIGZpbGVuYW1lOiBzdHIsCisgICAgICAgIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCwKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgIHN1YiA9IHRtcF9wYXRoIC8gInN1YiIKKyAgICAgICAgc3Vi
Lm1rZGlyKCkKKyAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIoc3ViKQorICAgICAgICAodG1wX3Bh
dGggLyBmaWxlbmFtZSkud3JpdGVfdGV4dCgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgK
KyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgW3tzZWN0aW9ufV0KKyAgICAg
ICAgICAgICAgICBuYW1lID0gdmFsdWUKKyAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KAogICAg
ICAgICAgICAgICAgICAgICBzZWN0aW9uPXNlY3Rpb24KICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgZW5jb2Rpbmc9InV0Zi04IiwK
ICAgICAgICAgKQotICAgICAgICByb290ZGlyLCBpbmlmaWxlLCBjZmcgPSBnZXRjZmcoW3N1Yl0p
CisgICAgICAgIF8sIF8sIGNmZyA9IGxvY2F0ZV9jb25maWcoW3N1Yl0pCiAgICAgICAgIGFzc2Vy
dCBjZmdbIm5hbWUiXSA9PSAidmFsdWUiCi0gICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vj
b25maWd1cmUoc3ViKQorICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlndXJlKHN0
cihzdWIpKQogICAgICAgICBhc3NlcnQgY29uZmlnLmluaWNmZ1sibmFtZSJdID09ICJ2YWx1ZSIK
IAotICAgIGRlZiB0ZXN0X2dldGNmZ19lbXB0eV9wYXRoKHNlbGYpOgotICAgICAgICAiIiJjb3Jy
ZWN0bHkgaGFuZGxlIHplcm8gbGVuZ3RoIGFyZ3VtZW50cyAoYSBsYSBweXRlc3QgJycpIiIiCi0g
ICAgICAgIGdldGNmZyhbIiJdKQorICAgIGRlZiB0ZXN0X3NldHVwY2ZnX3VzZXNfdG9vbHB5dGVz
dF93aXRoX3B5dGVzdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoImRlZiB0ZXN0KCk6IHBhc3MiKQorICAgICAgICB0ZXN0ZGlyLm1ha2VmaWxlKAorICAg
ICAgICAgICAgIi5jZmciLAorICAgICAgICAgICAgc2V0dXA9IiIiCisgICAgICAgICAgICAgICAg
W3Rvb2w6cHl0ZXN0XQorICAgICAgICAgICAgICAgIHRlc3RwYXRocz0lcworICAgICAgICAgICAg
ICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgdGVzdHBhdGhzPWlnbm9yZWQKKyAgICAgICAg
IiIiCisgICAgICAgICAgICAlIHAxLmJhc2VuYW1lLAorICAgICAgICApCisgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKiwgY29uZmlnZmlsZTogc2V0dXAuY2ZnLCAqIiwgIiogMSBwYXNzZWQgaW4gKiJdKQor
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKICAgICBkZWYgdGVzdF9hcHBlbmRfcGFy
c2VfYXJncyhzZWxmLCB0ZXN0ZGlyLCB0bXBkaXIsIG1vbmtleXBhdGNoKToKICAgICAgICAgbW9u
a2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfQURET1BUUyIsICctLWNvbG9yIG5vIC1ycyAtLXRiPSJz
aG9ydCInKQogICAgICAgICB0bXBkaXIuam9pbigicHl0ZXN0LmluaSIpLndyaXRlKAotICAgICAg
ICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQo
CisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAg
ICAgICAgICAgYWRkb3B0cyA9IC0tdmVyYm9zZQogICAgICAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgW3B5dGVzdF0KLSAgICAgICAgICAgIGFkZG9wdHMgPSAtLXZlcmJvc2UKLSAgICAgICAg
IiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5w
YXJzZWNvbmZpZyh0bXBkaXIpCkBAIC01NywxMiArMTAxLDE0IEBAIGNsYXNzIFRlc3RQYXJzZUlu
aShvYmplY3QpOgogICAgICAgICAgICAgIi5pbmkiLAogICAgICAgICAgICAgdG94PSIiIgogICAg
ICAgICAgICAgW3B5dGVzdF0KLSAgICAgICAgICAgIG1pbnZlcnNpb249OS4wCisgICAgICAgICAg
ICBtaW52ZXJzaW9uPTk5OS4wCiAgICAgICAgICIiIiwKICAgICAgICAgKQogICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ICE9IDAK
LSAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKnRveC5pbmk6MipyZXF1aXJl
cyo5LjAqYWN0dWFsKiJdKQorICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisg
ICAgICAgICAgICBbIip0b3guaW5pOiAnbWludmVyc2lvbicgcmVxdWlyZXMgcHl0ZXN0LTk5OS4w
LCBhY3R1YWwgcHl0ZXN0LSoiXQorICAgICAgICApCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoCiAgICAgICAgICJzZWN0aW9uLCBuYW1lIiwKQEAgLTgyLDYgKzEyOCwxNiBAQCBjbGFz
cyBUZXN0UGFyc2VJbmkob2JqZWN0KToKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNv
bmZpZygpCiAgICAgICAgIGFzc2VydCBjb25maWcuZ2V0aW5pKCJtaW52ZXJzaW9uIikgPT0gIjEu
MCIKIAorICAgIGRlZiB0ZXN0X3B5cHJvamVjdF90b21sKHNlbGYsIHRlc3RkaXIpOgorICAgICAg
ICB0ZXN0ZGlyLm1ha2VweXByb2plY3R0b21sKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgICAgICAgICBtaW52ZXJzaW9uID0gIjEu
MCIKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJz
ZWNvbmZpZygpCisgICAgICAgIGFzc2VydCBjb25maWcuZ2V0aW5pKCJtaW52ZXJzaW9uIikgPT0g
IjEuMCIKKwogICAgIGRlZiB0ZXN0X3RveGluaV9iZWZvcmVfbG93ZXJfcHl0ZXN0aW5pKHNlbGYs
IHRlc3RkaXIpOgogICAgICAgICBzdWIgPSB0ZXN0ZGlyLnRtcGRpci5ta2Rpcigic3ViIikKICAg
ICAgICAgc3ViLmpvaW4oInRveC5pbmkiKS53cml0ZSgKQEAgLTEwMyw2ICsxNTksMTIgQEAgY2xh
c3MgVGVzdFBhcnNlSW5pKG9iamVjdCk6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vj
b25maWd1cmUoc3ViKQogICAgICAgICBhc3NlcnQgY29uZmlnLmdldGluaSgibWludmVyc2lvbiIp
ID09ICIyLjAiCiAKKyAgICBkZWYgdGVzdF9pbmlfcGFyc2VfZXJyb3Ioc2VsZiwgdGVzdGRpcik6
CisgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oInB5dGVzdC5pbmkiKS53cml0ZSgiYWRkb3B0
cyA9IC14IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBh
c3NlcnQgcmVzdWx0LnJldCAhPSAwCisgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5l
cyhbIkVSUk9SOiAqcHl0ZXN0LmluaToxOiBubyBzZWN0aW9uIGhlYWRlciBkZWZpbmVkIl0pCisK
ICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJwcm9iYWJseSBub3QgbmVlZGVkIikKICAg
ICBkZWYgdGVzdF9jb25mY3V0ZGlyKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBzdWIgPSB0ZXN0
ZGlyLm1rZGlyKCJzdWIiKQpAQCAtMTE2LDkgKzE3OCwyNzEgQEAgY2xhc3MgVGVzdFBhcnNlSW5p
KG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIuaW5saW5lX3J1bigiLS1jb25mY3V0
ZGlyPS4iKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKKyAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoCisgICAgICAgICJpbmlfZmlsZV90ZXh0LCBpbnZhbGlkX2tleXMsIHdh
cm5pbmdfb3V0cHV0LCBleGNlcHRpb25fdGV4dCIsCisgICAgICAgIFsKKyAgICAgICAgICAgIHB5
dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0
XQorICAgICAgICAgICAgICAgIHVua25vd25faW5pID0gdmFsdWUxCisgICAgICAgICAgICAgICAg
YW5vdGhlcl91bmtub3duX2luaSA9IHZhbHVlMgorICAgICAgICAgICAgICAgICIiIiwKKyAgICAg
ICAgICAgICAgICBbInVua25vd25faW5pIiwgImFub3RoZXJfdW5rbm93bl9pbmkiXSwKKyAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICI9Kj0gd2FybmluZ3Mgc3VtbWFyeSA9
Kj0iLAorICAgICAgICAgICAgICAgICAgICAiKlB5dGVzdENvbmZpZ1dhcm5pbmc6KlVua25vd24g
Y29uZmlnIG9wdGlvbjogYW5vdGhlcl91bmtub3duX2luaSIsCisgICAgICAgICAgICAgICAgICAg
ICIqUHl0ZXN0Q29uZmlnV2FybmluZzoqVW5rbm93biBjb25maWcgb3B0aW9uOiB1bmtub3duX2lu
aSIsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiVW5rbm93biBjb25maWcg
b3B0aW9uOiBhbm90aGVyX3Vua25vd25faW5pIiwKKyAgICAgICAgICAgICAgICBpZD0iMi11bmtu
b3ducyIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAg
dW5rbm93bl9pbmkgPSB2YWx1ZTEKKyAgICAgICAgICAgICAgICBtaW52ZXJzaW9uID0gNS4wLjAK
KyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgWyJ1bmtub3duX2luaSJdLAor
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgIj0qPSB3YXJuaW5ncyBzdW1t
YXJ5ID0qPSIsCisgICAgICAgICAgICAgICAgICAgICIqUHl0ZXN0Q29uZmlnV2FybmluZzoqVW5r
bm93biBjb25maWcgb3B0aW9uOiB1bmtub3duX2luaSIsCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAiVW5rbm93biBjb25maWcgb3B0aW9uOiB1bmtub3duX2luaSIsCisgICAg
ICAgICAgICAgICAgaWQ9IjEtdW5rbm93biIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
cHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtzb21l
X290aGVyX2hlYWRlcl0KKyAgICAgICAgICAgICAgICB1bmtub3duX2luaSA9IHZhbHVlMQorICAg
ICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgbWludmVyc2lvbiA9IDUuMC4w
CisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAg
ICAgIFtdLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgIGlkPSJ1bmtub3du
LWluLW90aGVyLWhlYWRlciIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgcHl0ZXN0LnBh
cmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAg
ICAgICAgICAgICAgbWludmVyc2lvbiA9IDUuMC4wCisgICAgICAgICAgICAgICAgIiIiLAorICAg
ICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICIi
LAorICAgICAgICAgICAgICAgIGlkPSJuby11bmtub3ducyIsCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
ICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgY29uZnRlc3RfaW5pX2tleSA9IDEKKyAgICAg
ICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgW10s
CisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgaWQ9IjEta25vd24iLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndh
cm5pbmdzKCJkZWZhdWx0IikKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbmZpZ19vcHRpb25zKAor
ICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBpbmlfZmlsZV90ZXh0LCBpbnZhbGlkX2tleXMsIHdhcm5p
bmdfb3V0cHV0LCBleGNlcHRpb25fdGV4dAorICAgICk6CisgICAgICAgIHRlc3RkaXIubWFrZWNv
bmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlv
bihwYXJzZXIpOgorICAgICAgICAgICAgICAgIHBhcnNlci5hZGRpbmkoImNvbmZ0ZXN0X2luaV9r
ZXkiLCAiIikKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgiZGVmIHRlc3QoKTogcGFzcyIpCisgICAgICAgIHRlc3RkaXIubWFrZWluaShpbmlf
ZmlsZV90ZXh0KQorCisgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQorICAg
ICAgICBhc3NlcnQgc29ydGVkKGNvbmZpZy5fZ2V0X3Vua25vd25faW5pX2tleXMoKSkgPT0gc29y
dGVkKGludmFsaWRfa2V5cykKIAotY2xhc3MgVGVzdENvbmZpZ0NtZGxpbmVQYXJzaW5nKG9iamVj
dCk6CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKHdhcm5pbmdfb3V0cHV0KQorCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLXN0cmljdC1jb25maWciKQorICAgICAgICBpZiBleGNlcHRp
b25fdGV4dDoKKyAgICAgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcygiRVJST1I6
ICIgKyBleGNlcHRpb25fdGV4dCkKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IHB5
dGVzdC5FeGl0Q29kZS5VU0FHRV9FUlJPUgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVz
dWx0LnN0ZGVyci5ub19mbm1hdGNoX2xpbmUoZXhjZXB0aW9uX3RleHQpCisgICAgICAgICAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBweXRlc3QuRXhpdENvZGUuT0sKKworICAgIEBweXRlc3QubWFy
ay5maWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCisgICAgZGVmIHRlc3Rfc2lsZW5jZV91bmtub3du
X2tleV93YXJuaW5nKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIi
IlVua25vd24gY29uZmlnIGtleSB3YXJuaW5ncyBjYW4gYmUgc2lsZW5jZWQgdXNpbmcgZmlsdGVy
d2FybmluZ3MgKCM3NjIwKSIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9
CisgICAgICAgICAgICAgICAgaWdub3JlOlVua25vd24gY29uZmlnIG9wdGlvbjpweXRlc3QuUHl0
ZXN0Q29uZmlnV2FybmluZworICAgICAgICAgICAgZm9vYmFyPTEKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1
bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKlB5dGVzdENvbmZpZ1dhcm5pbmcqIikKKworICAg
IEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCisgICAgZGVmIHRlc3RfZGlz
YWJsZV93YXJuaW5nc19wbHVnaW5fZGlzYWJsZXNfY29uZmlnX3dhcm5pbmdzKAorICAgICAgICBz
ZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJEaXNhYmxp
bmcgJ3dhcm5pbmdzJyBwbHVnaW4gYWxzbyBkaXNhYmxlcyBjb25maWcgdGltZSB3YXJuaW5ncyIi
IgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZGVmIHB5dGVzdF9jb25maWd1cmUoY29u
ZmlnKToKKyAgICAgICAgICAgICAgICBjb25maWcuaXNzdWVfY29uZmlnX3RpbWVfd2FybmluZygK
KyAgICAgICAgICAgICAgICAgICAgcHl0ZXN0LlB5dGVzdENvbmZpZ1dhcm5pbmcoImN1c3RvbSBj
b25maWcgd2FybmluZyIpLAorICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLXBubzp3YXJuaW5ncyIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
bm9fZm5tYXRjaF9saW5lKCIqUHl0ZXN0Q29uZmlnV2FybmluZyoiKQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiaW5pX2ZpbGVfdGV4dCwgZXhjZXB0aW9uX3RleHQi
LAorICAgICAgICBbCisgICAgICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgICAgICByZXF1aXJlZF9w
bHVnaW5zID0gYSB6CisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgICJNaXNz
aW5nIHJlcXVpcmVkIHBsdWdpbnM6IGEsIHoiLAorICAgICAgICAgICAgICAgIGlkPSIyLW1pc3Np
bmciLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIHJl
cXVpcmVkX3BsdWdpbnMgPSBhIHogbXlwbHVnaW4KKyAgICAgICAgICAgICAgICAiIiIsCisgICAg
ICAgICAgICAgICAgIk1pc3NpbmcgcmVxdWlyZWQgcGx1Z2luczogYSwgeiIsCisgICAgICAgICAg
ICAgICAgaWQ9IjItbWlzc2luZy0xLW9rIiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBw
eXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgW3B5dGVz
dF0KKyAgICAgICAgICAgICAgICByZXF1aXJlZF9wbHVnaW5zID0gbXlwbHVnaW4KKyAgICAgICAg
ICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBpZD0i
MS1vayIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAg
cmVxdWlyZWRfcGx1Z2lucyA9IG15cGx1Z2luPT0xLjUKKyAgICAgICAgICAgICAgICAiIiIsCisg
ICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBpZD0iMS1vay1waW4tZXhhY3Qi
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIHJlcXVp
cmVkX3BsdWdpbnMgPSBteXBsdWdpbj4xLjAsPDIuMAorICAgICAgICAgICAgICAgICIiIiwKKyAg
ICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgIGlkPSIxLW9rLXBpbi1sb29zZSIs
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgcmVxdWly
ZWRfcGx1Z2lucyA9IHB5cGx1Z2luPT0xLjYKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAg
ICAgICAgICAgIk1pc3NpbmcgcmVxdWlyZWQgcGx1Z2luczogcHlwbHVnaW49PTEuNiIsCisgICAg
ICAgICAgICAgICAgaWQ9Im1pc3NpbmctdmVyc2lvbiIsCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAg
IFtweXRlc3RdCisgICAgICAgICAgICAgICAgcmVxdWlyZWRfcGx1Z2lucyA9IHB5cGx1Z2luPT0x
LjYgb3RoZXI9PTEuMAorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAiTWlz
c2luZyByZXF1aXJlZCBwbHVnaW5zOiBvdGhlcj09MS4wLCBweXBsdWdpbj09MS42IiwKKyAgICAg
ICAgICAgICAgICBpZD0ibWlzc2luZy12ZXJzaW9ucyIsCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAg
IFtzb21lX290aGVyX2hlYWRlcl0KKyAgICAgICAgICAgICAgICByZXF1aXJlZF9wbHVnaW5zID0g
d29udCBiZSB0cmlnZ2VyZWQKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAg
ICAgICIiIiwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgIGlkPSJpbnZh
bGlkLWhlYWRlciIsCisgICAgICAgICAgICApLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYg
dGVzdF9taXNzaW5nX3JlcXVpcmVkX3BsdWdpbnMoCisgICAgICAgIHNlbGYsIHRlc3RkaXIsIG1v
bmtleXBhdGNoLCBpbmlfZmlsZV90ZXh0LCBleGNlcHRpb25fdGV4dAorICAgICk6CisgICAgICAg
ICIiIkNoZWNrICdyZXF1aXJlZF9wbHVnaW5zJyBvcHRpb24gd2l0aCB2YXJpb3VzIHNldHRpbmdz
LgorCisgICAgICAgIFRoaXMgdGVzdCBpbnN0YWxscyBhIG1vY2sgIm15cGx1Z2luLTEuNSIgd2hp
Y2ggaXMgdXNlZCBpbiB0aGUgcGFyYW1ldHJpemVkIHRlc3QgY2FzZXMuCisgICAgICAgICIiIgor
CisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3MgRHVtbXlFbnRyeVBvaW50OgorICAgICAg
ICAgICAgbmFtZSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgbW9kdWxlID0gYXR0ci5pYigpCisg
ICAgICAgICAgICBncm91cCA9ICJweXRlc3QxMSIKKworICAgICAgICAgICAgZGVmIGxvYWQoc2Vs
Zik6CisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhzZWxmLm1vZHVsZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVdCiAKKyAgICAgICAgZW50cnlfcG9p
bnRzID0gWworICAgICAgICAgICAgRHVtbXlFbnRyeVBvaW50KCJteXBsdWdpbjEiLCAibXlwbHVn
aW4xX21vZHVsZSIpLAorICAgICAgICBdCisKKyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFz
cyBEdW1teURpc3Q6CisgICAgICAgICAgICBlbnRyeV9wb2ludHMgPSBhdHRyLmliKCkKKyAgICAg
ICAgICAgIGZpbGVzID0gKCkKKyAgICAgICAgICAgIHZlcnNpb24gPSAiMS41IgorCisgICAgICAg
ICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBtZXRhZGF0YShzZWxmKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4geyJuYW1lIjogIm15cGx1Z2luIn0KKworICAgICAgICBkZWYgbXlfZGlz
dHMoKToKKyAgICAgICAgICAgIHJldHVybiBbRHVtbXlEaXN0KGVudHJ5X3BvaW50cyldCisKKyAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKG15cGx1Z2luMV9tb2R1bGU9IiMgbXkgcGx1Z2luIG1v
ZHVsZSIpCisgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisKKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cihpbXBvcnRsaWJfbWV0YWRhdGEsICJkaXN0cmlidXRpb25zIiwgbXlfZGlz
dHMpCisgICAgICAgIHRlc3RkaXIubW9ua2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9Q
TFVHSU5fQVVUT0xPQUQiLCByYWlzaW5nPUZhbHNlKQorCisgICAgICAgIHRlc3RkaXIubWFrZWlu
aShpbmlfZmlsZV90ZXh0KQorCisgICAgICAgIGlmIGV4Y2VwdGlvbl90ZXh0OgorICAgICAgICAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5Vc2FnZUVycm9yLCBtYXRjaD1leGNlcHRpb25f
dGV4dCk6CisgICAgICAgICAgICAgICAgdGVzdGRpci5wYXJzZWNvbmZpZygpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKKworICAgIGRlZiB0ZXN0X2Vh
cmx5X2NvbmZpZ19jbWRsaW5lKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICAgICAg
IiIiZWFybHlfY29uZmlnIGNvbnRhaW5zIG9wdGlvbnMgcmVnaXN0ZXJlZCBieSB0aGlyZC1wYXJ0
eSBwbHVnaW5zLgorCisgICAgICAgIFRoaXMgaXMgYSByZWdyZXNzaW9uIGludm9sdmluZyBweXRl
c3QtY292IChhbmQgcG9zc2libHkgb3RoZXJzKSBpbnRyb2R1Y2VkIGluICM3NzAwLgorICAgICAg
ICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgbXlwbHVnaW49
IiIiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAg
ICAgICAgIHBhcnNlci5hZGRvcHRpb24oJy0tZm9vJywgZGVmYXVsdD1Ob25lLCBkZXN0PSdmb28n
KQorCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoZWFybHlf
Y29uZmlnLCBwYXJzZXIsIGFyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBlYXJseV9jb25m
aWcua25vd25fYXJnc19uYW1lc3BhY2UuZm9vID09ICIxIgorICAgICAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfUExVR0lOUyIsICJteXBs
dWdpbiIpCisgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLWZvbz0xIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKCIqIG5vIHRlc3RzIHJhbiBpbiAqIikKKworCitjbGFzcyBUZXN0Q29uZmlnQ21k
bGluZVBhcnNpbmc6CiAgICAgZGVmIHRlc3RfcGFyc2luZ19hZ2Fpbl9mYWlscyhzZWxmLCB0ZXN0
ZGlyKToKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygpCiAgICAgICAgIHB5
dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGxhbWJkYTogY29uZmlnLnBhcnNlKFtdKSkKQEAg
LTEzNywxMyArNDYxLDEzIEBAIGNsYXNzIFRlc3RDb25maWdDbWRsaW5lUGFyc2luZyhvYmplY3Qp
OgogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICB0ZXN0ZGlyLm1ha2VmaWxlKAotICAg
ICAgICAgICAgIi5jZmciLAorICAgICAgICAgICAgIi5pbmkiLAogICAgICAgICAgICAgY3VzdG9t
PSIiIgogICAgICAgICAgICAgW3B5dGVzdF0KICAgICAgICAgICAgIGN1c3RvbSA9IDEKICAgICAg
ICAgIiIiLAogICAgICAgICApCi0gICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWco
Ii1jIiwgImN1c3RvbS5jZmciKQorICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmln
KCItYyIsICJjdXN0b20uaW5pIikKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5nZXRpbmkoImN1c3Rv
bSIpID09ICIxIgogCiAgICAgICAgIHRlc3RkaXIubWFrZWZpbGUoCkBAIC0xNTYsOSArNDgwLDIx
IEBAIGNsYXNzIFRlc3RDb25maWdDbWRsaW5lUGFyc2luZyhvYmplY3QpOgogICAgICAgICBjb25m
aWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItYyIsICJjdXN0b21fdG9vbF9weXRlc3Rfc2VjdGlv
bi5jZmciKQogICAgICAgICBhc3NlcnQgY29uZmlnLmdldGluaSgiY3VzdG9tIikgPT0gIjEiCiAK
KyAgICAgICAgdGVzdGRpci5tYWtlZmlsZSgKKyAgICAgICAgICAgICIudG9tbCIsCisgICAgICAg
ICAgICBjdXN0b209IiIiCisgICAgICAgICAgICAgICAgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25z
XQorICAgICAgICAgICAgICAgIGN1c3RvbSA9IDEKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFsK
KyAgICAgICAgICAgICAgICBdICAjIHRoaXMgaXMgaGVyZSBvbiBwdXJwb3NlLCBhcyBpdCBtYWtl
cyB0aGlzIGFuIGludmFsaWQgJy5pbmknIGZpbGUKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAg
KQorICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItYyIsICJjdXN0b20udG9t
bCIpCisgICAgICAgIGFzc2VydCBjb25maWcuZ2V0aW5pKCJjdXN0b20iKSA9PSAiMSIKKwogICAg
IGRlZiB0ZXN0X2Fic29sdXRlX3dpbjMyX3BhdGgoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRl
bXBfY2ZnX2ZpbGUgPSB0ZXN0ZGlyLm1ha2VmaWxlKAotICAgICAgICAgICAgIi5jZmciLAorICAg
ICAgICB0ZW1wX2luaV9maWxlID0gdGVzdGRpci5tYWtlZmlsZSgKKyAgICAgICAgICAgICIuaW5p
IiwKICAgICAgICAgICAgIGN1c3RvbT0iIiIKICAgICAgICAgICAgIFtweXRlc3RdCiAgICAgICAg
ICAgICBhZGRvcHRzID0gLS12ZXJzaW9uCkBAIC0xNjYsMTYgKzUwMiwxNSBAQCBjbGFzcyBUZXN0
Q29uZmlnQ21kbGluZVBhcnNpbmcob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICBmcm9tIG9z
LnBhdGggaW1wb3J0IG5vcm1wYXRoCiAKLSAgICAgICAgdGVtcF9jZmdfZmlsZSA9IG5vcm1wYXRo
KHN0cih0ZW1wX2NmZ19maWxlKSkKLSAgICAgICAgcmV0ID0gcHl0ZXN0Lm1haW4oIi1jICIgKyB0
ZW1wX2NmZ19maWxlKQotICAgICAgICBhc3NlcnQgcmV0ID09IF9weXRlc3QubWFpbi5FWElUX09L
CisgICAgICAgIHRlbXBfaW5pX2ZpbGUgPSBub3JtcGF0aChzdHIodGVtcF9pbmlfZmlsZSkpCisg
ICAgICAgIHJldCA9IHB5dGVzdC5tYWluKFsiLWMiLCB0ZW1wX2luaV9maWxlXSkKKyAgICAgICAg
YXNzZXJ0IHJldCA9PSBFeGl0Q29kZS5PSwogCiAKLWNsYXNzIFRlc3RDb25maWdBUEkob2JqZWN0
KToKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ190cmFjZShzZWxmLCB0ZXN0ZGlyKToKK2NsYXNzIFRl
c3RDb25maWdBUEk6CisgICAgZGVmIHRlc3RfY29uZmlnX3RyYWNlKHNlbGYsIHRlc3RkaXIpIC0+
IE5vbmU6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQotICAgICAgICB2
YWx1ZXMgPSBbXQorICAgICAgICB2YWx1ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KICAgICAg
ICAgY29uZmlnLnRyYWNlLnJvb3Quc2V0d3JpdGVyKHZhbHVlcy5hcHBlbmQpCiAgICAgICAgIGNv
bmZpZy50cmFjZSgiaGVsbG8iKQogICAgICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMQpAQCAt
MTkxLDE0ICs1MjYsMTEgQEAgY2xhc3MgVGVzdENvbmZpZ0FQSShvYmplY3QpOgogICAgICAgICBj
b25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItLWhlbGxvPXRoaXMiKQogICAgICAgICBmb3Ig
eCBpbiAoImhlbGxvIiwgIi0taGVsbG8iLCAiLVgiKToKICAgICAgICAgICAgIGFzc2VydCBjb25m
aWcuZ2V0b3B0aW9uKHgpID09ICJ0aGlzIgotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJy
b3IsICJjb25maWcuZ2V0b3B0aW9uKCdxd2Vxd2UnKSIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMo
VmFsdWVFcnJvciwgY29uZmlnLmdldG9wdGlvbiwgInF3ZXF3ZSIpCiAKLSAgICBAcHl0ZXN0Lm1h
cmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdIDwgMyIpCiAgICAgZGVmIHRlc3RfY29uZmln
X2dldG9wdGlvbl91bmljb2RlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vj
b25mdGVzdCgKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KICAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcik6CiAgICAgICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbignLS1oZWxsbycsIHR5
cGU9c3RyKQogICAgICAgICAiIiIKQEAgLTIwOCw3ICs1NDAsNyBAQCBjbGFzcyBUZXN0Q29uZmln
QVBJKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9jb25maWdfZ2V0dmFsdWVvcnNraXAoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQotICAgICAg
ICBweXRlc3QucmFpc2VzKHB5dGVzdC5za2lwLkV4Y2VwdGlvbiwgImNvbmZpZy5nZXR2YWx1ZW9y
c2tpcCgnaGVsbG8nKSIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMocHl0ZXN0LnNraXAuRXhjZXB0
aW9uLCBjb25maWcuZ2V0dmFsdWVvcnNraXAsICJoZWxsbyIpCiAgICAgICAgIHZlcmJvc2UgPSBj
b25maWcuZ2V0dmFsdWVvcnNraXAoInZlcmJvc2UiKQogICAgICAgICBhc3NlcnQgdmVyYm9zZSA9
PSBjb25maWcub3B0aW9uLnZlcmJvc2UKIApAQCAtMjU5LDcgKzU5MSw3IEBAIGNsYXNzIFRlc3RD
b25maWdBUEkob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHZhbCA9PSAiaGVsbG8iCiAgICAgICAg
IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgY29uZmlnLmdldGluaSwgIm90aGVyIikKIAotICAg
IGRlZiB0ZXN0X2FkZGluaV9wYXRobGlzdChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgbWFrZV9j
b25mdGVzdF9mb3JfcGF0aGxpc3Qoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFr
ZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgpAQCAtMjY3LDIwICs1OTksMzYgQEAgY2xhc3MgVGVzdENvbmZpZ0FQSShv
YmplY3QpOgogICAgICAgICAgICAgICAgIHBhcnNlci5hZGRpbmkoImFiYyIsICJhYmMgdmFsdWUi
KQogICAgICAgICAiIiIKICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYWRkaW5pX3BhdGhsaXN0
X2luaV9maWxlcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgc2VsZi5tYWtlX2NvbmZ0ZXN0X2Zv
cl9wYXRobGlzdCh0ZXN0ZGlyKQogICAgICAgICBwID0gdGVzdGRpci5tYWtlaW5pKAogICAgICAg
ICAgICAgIiIiCiAgICAgICAgICAgICBbcHl0ZXN0XQogICAgICAgICAgICAgcGF0aHM9aGVsbG8g
d29ybGQvc3ViLnB5CiAgICAgICAgICIiIgogICAgICAgICApCisgICAgICAgIHNlbGYuY2hlY2tf
Y29uZmlnX3BhdGhsaXN0KHRlc3RkaXIsIHApCisKKyAgICBkZWYgdGVzdF9hZGRpbmlfcGF0aGxp
c3RfcHlwcm9qZWN0X3RvbWwoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHNlbGYubWFrZV9jb25m
dGVzdF9mb3JfcGF0aGxpc3QodGVzdGRpcikKKyAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5cHJv
amVjdHRvbWwoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFt0b29sLnB5dGVzdC5pbmlf
b3B0aW9uc10KKyAgICAgICAgICAgIHBhdGhzPVsiaGVsbG8iLCAid29ybGQvc3ViLnB5Il0KKyAg
ICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5jaGVja19jb25maWdfcGF0aGxpc3Qo
dGVzdGRpciwgcCkKKworICAgIGRlZiBjaGVja19jb25maWdfcGF0aGxpc3Qoc2VsZiwgdGVzdGRp
ciwgY29uZmlnX3BhdGgpOgogICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkK
ICAgICAgICAgdmFsdWVzID0gY29uZmlnLmdldGluaSgicGF0aHMiKQogICAgICAgICBhc3NlcnQg
bGVuKHZhbHVlcykgPT0gMgotICAgICAgICBhc3NlcnQgdmFsdWVzWzBdID09IHAuZGlycGF0aCgi
aGVsbG8iKQotICAgICAgICBhc3NlcnQgdmFsdWVzWzFdID09IHAuZGlycGF0aCgid29ybGQvc3Vi
LnB5IikKKyAgICAgICAgYXNzZXJ0IHZhbHVlc1swXSA9PSBjb25maWdfcGF0aC5kaXJwYXRoKCJo
ZWxsbyIpCisgICAgICAgIGFzc2VydCB2YWx1ZXNbMV0gPT0gY29uZmlnX3BhdGguZGlycGF0aCgi
d29ybGQvc3ViLnB5IikKICAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBjb25maWcu
Z2V0aW5pLCAib3RoZXIiKQogCi0gICAgZGVmIHRlc3RfYWRkaW5pX2FyZ3Moc2VsZiwgdGVzdGRp
cik6CisgICAgZGVmIG1ha2VfY29uZnRlc3RfZm9yX2FyZ3Moc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBk
ZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgpAQCAtMjg4LDIwICs2MzYsMzUgQEAgY2xhc3Mg
VGVzdENvbmZpZ0FQSShvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhcnNlci5hZGRpbmkoImEy
IiwgIiIsICJhcmdzIiwgZGVmYXVsdD0iMSAyIDMiLnNwbGl0KCkpCiAgICAgICAgICIiIgogICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9hZGRpbmlfYXJnc19pbmlfZmlsZXMoc2VsZiwgdGVzdGRp
cik6CisgICAgICAgIHNlbGYubWFrZV9jb25mdGVzdF9mb3JfYXJncyh0ZXN0ZGlyKQogICAgICAg
ICB0ZXN0ZGlyLm1ha2VpbmkoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFtweXRlc3Rd
CiAgICAgICAgICAgICBhcmdzPTEyMyAiMTIzIGhlbGxvIiAidGhpcyIKLSAgICAgICAgIiIiCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZ19hcmdz
KHRlc3RkaXIpCisKKyAgICBkZWYgdGVzdF9hZGRpbmlfYXJnc19weXByb2plY3RfdG9tbChzZWxm
LCB0ZXN0ZGlyKToKKyAgICAgICAgc2VsZi5tYWtlX2NvbmZ0ZXN0X2Zvcl9hcmdzKHRlc3RkaXIp
CisgICAgICAgIHRlc3RkaXIubWFrZXB5cHJvamVjdHRvbWwoCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgIFt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KKyAgICAgICAgICAgIGFyZ3MgPSBb
IjEyMyIsICIxMjMgaGVsbG8iLCAidGhpcyJdCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQor
ICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZ19hcmdzKHRlc3RkaXIpCisKKyAgICBkZWYgY2hlY2tf
Y29uZmlnX2FyZ3Moc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFy
c2Vjb25maWcoKQogICAgICAgICB2YWx1ZXMgPSBjb25maWcuZ2V0aW5pKCJhcmdzIikKLSAgICAg
ICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDMKICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbIjEy
MyIsICIxMjMgaGVsbG8iLCAidGhpcyJdCiAgICAgICAgIHZhbHVlcyA9IGNvbmZpZy5nZXRpbmko
ImEyIikKICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBsaXN0KCIxMjMiKQogCi0gICAgZGVmIHRl
c3RfYWRkaW5pX2xpbmVsaXN0KHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiBtYWtlX2NvbmZ0ZXN0
X2Zvcl9saW5lbGlzdChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRl
c3QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBh
cnNlcik6CkBAIC0zMDksNiArNjcyLDkgQEAgY2xhc3MgVGVzdENvbmZpZ0FQSShvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHBhcnNlci5hZGRpbmkoImEyIiwgIiIsICJsaW5lbGlzdCIpCiAgICAg
ICAgICIiIgogICAgICAgICApCisKKyAgICBkZWYgdGVzdF9hZGRpbmlfbGluZWxpc3RfaW5pX2Zp
bGVzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBzZWxmLm1ha2VfY29uZnRlc3RfZm9yX2xpbmVs
aXN0KHRlc3RkaXIpCiAgICAgICAgIHRlc3RkaXIubWFrZWluaSgKICAgICAgICAgICAgICIiIgog
ICAgICAgICAgICAgW3B5dGVzdF0KQEAgLTMxNiw2ICs2ODIsMTkgQEAgY2xhc3MgVGVzdENvbmZp
Z0FQSShvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlY29uZCBsaW5lCiAgICAgICAgICIiIgog
ICAgICAgICApCisgICAgICAgIHNlbGYuY2hlY2tfY29uZmlnX2xpbmVsaXN0KHRlc3RkaXIpCisK
KyAgICBkZWYgdGVzdF9hZGRpbmlfbGluZWxpc3RfcHByb2plY3R0b21sKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICBzZWxmLm1ha2VfY29uZnRlc3RfZm9yX2xpbmVsaXN0KHRlc3RkaXIpCisgICAg
ICAgIHRlc3RkaXIubWFrZXB5cHJvamVjdHRvbWwoCisgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgIFt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KKyAgICAgICAgICAgIHh5ID0gWyIxMjMgMzQ1
IiwgInNlY29uZCBsaW5lIl0KKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5j
aGVja19jb25maWdfbGluZWxpc3QodGVzdGRpcikKKworICAgIGRlZiBjaGVja19jb25maWdfbGlu
ZWxpc3Qoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25m
aWcoKQogICAgICAgICB2YWx1ZXMgPSBjb25maWcuZ2V0aW5pKCJ4eSIpCiAgICAgICAgIGFzc2Vy
dCBsZW4odmFsdWVzKSA9PSAyCkBAIC0zODYsMTEgKzc2NSwxMiBAQCBjbGFzcyBUZXN0Q29uZmln
QVBJKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9jb25mY3V0ZGlyX2NoZWNrX2lzZGlyKHNlbGYs
IHRlc3RkaXIpOgogICAgICAgICAiIiJHaXZlIGFuIGVycm9yIGlmIC0tY29uZmN1dGRpciBpcyBu
b3QgYSB2YWxpZCBkaXJlY3RvcnkgKCMyMDc4KSIiIgotICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMocHl0ZXN0LlVzYWdlRXJyb3IpOgorICAgICAgICBleHBfbWF0Y2ggPSByIl4tLWNvbmZjdXRk
aXIgbXVzdCBiZSBhIGRpcmVjdG9yeSwgZ2l2ZW46ICIKKyAgICAgICAgd2l0aCBweXRlc3QucmFp
c2VzKHB5dGVzdC5Vc2FnZUVycm9yLCBtYXRjaD1leHBfbWF0Y2gpOgogICAgICAgICAgICAgdGVz
dGRpci5wYXJzZWNvbmZpZygKICAgICAgICAgICAgICAgICAiLS1jb25mY3V0ZGlyIiwgdGVzdGRp
ci50bXBkaXIuam9pbigiZmlsZSIpLmVuc3VyZShmaWxlPTEpCiAgICAgICAgICAgICApCi0gICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VFcnJvcik6CisgICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VFcnJvciwgbWF0Y2g9ZXhwX21hdGNoKToKICAgICAg
ICAgICAgIHRlc3RkaXIucGFyc2Vjb25maWcoIi0tY29uZmN1dGRpciIsIHRlc3RkaXIudG1wZGly
LmpvaW4oImluZXhpc3RhbnQiKSkKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZp
ZygKICAgICAgICAgICAgICItLWNvbmZjdXRkaXIiLCB0ZXN0ZGlyLnRtcGRpci5qb2luKCJkaXIi
KS5lbnN1cmUoZGlyPTEpCkBAIC00MDAsMjIgKzc4MCwyNSBAQCBjbGFzcyBUZXN0Q29uZmlnQVBJ
KG9iamVjdCk6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAgICAgICAibmFtZXMs
IGV4cGVjdGVkIiwKICAgICAgICAgWworICAgICAgICAgICAgIyBkaXN0LWluZm8gYmFzZWQgZGlz
dHJpYnV0aW9ucyByb290IGFyZSBmaWxlcyBhcyB3aWxsIGJlIHB1dCBpbiBQWVRIT05QQVRICiAg
ICAgICAgICAgICAoWyJiYXIucHkiXSwgWyJiYXIiXSksCi0gICAgICAgICAgICAoWyJmb28iLCAi
YmFyLnB5Il0sIFtdKSwKLSAgICAgICAgICAgIChbImZvbyIsICJiYXIucHljIl0sIFtdKSwKLSAg
ICAgICAgICAgIChbImZvbyIsICJfX2luaXRfXy5weSJdLCBbImZvbyJdKSwKLSAgICAgICAgICAg
IChbImZvbyIsICJiYXIiLCAiX19pbml0X18ucHkiXSwgW10pLAorICAgICAgICAgICAgKFsiZm9v
L2Jhci5weSJdLCBbImJhciJdKSwKKyAgICAgICAgICAgIChbImZvby9iYXIucHljIl0sIFtdKSwK
KyAgICAgICAgICAgIChbImZvby9fX2luaXRfXy5weSJdLCBbImZvbyJdKSwKKyAgICAgICAgICAg
IChbImJhci9fX2luaXRfXy5weSIsICJ4ei5weSJdLCBbImJhciIsICJ4eiJdKSwKKyAgICAgICAg
ICAgIChbInNldHVwLnB5Il0sIFtdKSwKKyAgICAgICAgICAgICMgZWdnIGJhc2VkIGRpc3RyaWJ1
dGlvbnMgcm9vdCBjb250YWluIHRoZSBmaWxlcyBmcm9tIHRoZSBkaXN0IHJvb3QKKyAgICAgICAg
ICAgIChbInNyYy9iYXIvX19pbml0X18ucHkiXSwgWyJiYXIiXSksCisgICAgICAgICAgICAoWyJz
cmMvYmFyL19faW5pdF9fLnB5IiwgInNldHVwLnB5Il0sIFsiYmFyIl0pLAorICAgICAgICAgICAg
KFsic291cmNlL3B5dGhvbi9iYXIvX19pbml0X18ucHkiLCAic2V0dXAucHkiXSwgWyJiYXIiXSks
CiAgICAgICAgIF0sCiAgICAgKQogICAgIGRlZiB0ZXN0X2l0ZXJfcmV3cml0YWJsZV9tb2R1bGVz
KHNlbGYsIG5hbWVzLCBleHBlY3RlZCk6Ci0gICAgICAgIGFzc2VydCBsaXN0KF9pdGVyX3Jld3Jp
dGFibGVfbW9kdWxlcyhbIi8iLmpvaW4obmFtZXMpXSkpID09IGV4cGVjdGVkCi0KKyAgICAgICAg
YXNzZXJ0IGxpc3QoX2l0ZXJfcmV3cml0YWJsZV9tb2R1bGVzKG5hbWVzKSkgPT0gZXhwZWN0ZWQK
IAotY2xhc3MgVGVzdENvbmZpZ0Zyb21kaWN0YXJncyhvYmplY3QpOgotCi0gICAgZGVmIHRlc3Rf
YmFzaWNfYmVoYXZpb3Ioc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0
IENvbmZpZwogCitjbGFzcyBUZXN0Q29uZmlnRnJvbWRpY3RhcmdzOgorICAgIGRlZiB0ZXN0X2Jh
c2ljX2JlaGF2aW9yKHNlbGYsIF9zeXNfc25hcHNob3QpOgogICAgICAgICBvcHRpb25fZGljdCA9
IHsidmVyYm9zZSI6IDQ0NCwgImZvbyI6ICJiYXIiLCAiY2FwdHVyZSI6ICJubyJ9CiAgICAgICAg
IGFyZ3MgPSBbImEiLCAiYiJdCiAKQEAgLTQyNyw2MCArODEwLDU2IEBAIGNsYXNzIFRlc3RDb25m
aWdGcm9tZGljdGFyZ3Mob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5vcHRpb24uY2Fw
dHVyZSA9PSAibm8iCiAgICAgICAgIGFzc2VydCBjb25maWcuYXJncyA9PSBhcmdzCiAKLSAgICBk
ZWYgdGVzdF9vcmlnYXJncyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbnZvY2F0aW9uX3BhcmFtc19h
cmdzKHNlbGYsIF9zeXNfc25hcHNob3QpIC0+IE5vbmU6CiAgICAgICAgICIiIlNob3cgdGhhdCBm
cm9tZGljdGFyZ3MgY2FuIGhhbmRsZSBhcmdzIGluIHRoZWlyICJvcmlnIiBmb3JtYXQiIiIKLSAg
ICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCi0KLSAgICAgICAgb3B0aW9u
X2RpY3QgPSB7fQorICAgICAgICBvcHRpb25fZGljdCA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBv
YmplY3RdCiAgICAgICAgIGFyZ3MgPSBbIi12dnZ2IiwgIi1zIiwgImEiLCAiYiJdCiAKICAgICAg
ICAgY29uZmlnID0gQ29uZmlnLmZyb21kaWN0YXJncyhvcHRpb25fZGljdCwgYXJncykKICAgICAg
ICAgYXNzZXJ0IGNvbmZpZy5hcmdzID09IFsiYSIsICJiIl0KLSAgICAgICAgYXNzZXJ0IGNvbmZp
Zy5fb3JpZ2FyZ3MgPT0gYXJncworICAgICAgICBhc3NlcnQgY29uZmlnLmludm9jYXRpb25fcGFy
YW1zLmFyZ3MgPT0gdHVwbGUoYXJncykKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5vcHRpb24udmVy
Ym9zZSA9PSA0CiAgICAgICAgIGFzc2VydCBjb25maWcub3B0aW9uLmNhcHR1cmUgPT0gIm5vIgog
CiAgICAgZGVmIHRlc3RfaW5pZmlsZW5hbWUoc2VsZiwgdG1wZGlyKToKICAgICAgICAgdG1wZGly
LmpvaW4oImZvby9iYXIuaW5pIikuZW5zdXJlKCkud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0
Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAg
ICAgICAiIiJcCisgICAgICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgICAgICBuYW1l
ID0gdmFsdWUKICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIFtweXRlc3RdCi0gICAg
ICAgICAgICBuYW1lID0gdmFsdWUKLSAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAg
ICkKIAotICAgICAgICBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKLQogICAgICAg
ICBpbmlmaWxlID0gIi4uLy4uL2Zvby9iYXIuaW5pIgogICAgICAgICBvcHRpb25fZGljdCA9IHsi
aW5pZmlsZW5hbWUiOiBpbmlmaWxlLCAiY2FwdHVyZSI6ICJubyJ9CiAKICAgICAgICAgY3dkID0g
dG1wZGlyLmpvaW4oImEvYiIpCiAgICAgICAgIGN3ZC5qb2luKCJweXRlc3QuaW5pIikuZW5zdXJl
KCkud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAg
IHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAg
W3B5dGVzdF0KKyAgICAgICAgICAgICAgICBuYW1lID0gd3JvbmctdmFsdWUKKyAgICAgICAgICAg
ICAgICBzaG91bGRfbm90X2JlX3NldCA9IHRydWUKICAgICAgICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIFtweXRlc3RdCi0gICAgICAgICAgICBuYW1lID0gd3JvbmctdmFsdWUKLSAgICAgICAg
ICAgIHNob3VsZF9ub3RfYmVfc2V0ID0gdHJ1ZQotICAgICAgICAiIiIKICAgICAgICAgICAgICkK
ICAgICAgICAgKQogICAgICAgICB3aXRoIGN3ZC5lbnN1cmUoZGlyPVRydWUpLmFzX2N3ZCgpOgog
ICAgICAgICAgICAgY29uZmlnID0gQ29uZmlnLmZyb21kaWN0YXJncyhvcHRpb25fZGljdCwgKCkp
CisgICAgICAgICAgICBpbmlwYXRoID0gcHkucGF0aC5sb2NhbChpbmlmaWxlKQogCiAgICAgICAg
IGFzc2VydCBjb25maWcuYXJncyA9PSBbc3RyKGN3ZCldCiAgICAgICAgIGFzc2VydCBjb25maWcu
b3B0aW9uLmluaWZpbGVuYW1lID09IGluaWZpbGUKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5vcHRp
b24uY2FwdHVyZSA9PSAibm8iCiAKICAgICAgICAgIyB0aGlzIGluZGljYXRlcyB0aGlzIGlzIHRo
ZSBmaWxlIHVzZWQgZm9yIGdldHRpbmcgY29uZmlndXJhdGlvbiB2YWx1ZXMKLSAgICAgICAgYXNz
ZXJ0IGNvbmZpZy5pbmlmaWxlID09IGluaWZpbGUKKyAgICAgICAgYXNzZXJ0IGNvbmZpZy5pbmlm
aWxlID09IGluaXBhdGgKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5pbmljZmcuZ2V0KCJuYW1lIikg
PT0gInZhbHVlIgogICAgICAgICBhc3NlcnQgY29uZmlnLmluaWNmZy5nZXQoInNob3VsZF9ub3Rf
YmVfc2V0IikgaXMgTm9uZQogCiAKLWRlZiB0ZXN0X29wdGlvbnNfb25fc21hbGxfZmlsZV9kb19u
b3RfYmxvd191cCh0ZXN0ZGlyKToKLQotICAgIGRlZiBydW5maWxldGVzdChvcHRzKToKK2RlZiB0
ZXN0X29wdGlvbnNfb25fc21hbGxfZmlsZV9kb19ub3RfYmxvd191cCh0ZXN0ZGlyKSAtPiBOb25l
OgorICAgIGRlZiBydW5maWxldGVzdChvcHRzOiBTZXF1ZW5jZVtzdHJdKSAtPiBOb25lOgogICAg
ICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKm9wdHMpCiAgICAgICAgIHBhc3NlZCwg
c2tpcHBlZCwgZmFpbGVkID0gcmVwcmVjLmNvdW50b3V0Y29tZXMoKQogICAgICAgICBhc3NlcnQg
ZmFpbGVkID09IDIKQEAgLTQ5Myw0OCArODcyLDQwIEBAIGRlZiB0ZXN0X29wdGlvbnNfb25fc21h
bGxfZmlsZV9kb19ub3RfYmxvd191cCh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAKLSAgICBm
b3Igb3B0cyBpbiAoCi0gICAgICAgIFtdLAotICAgICAgICBbIi1sIl0sCi0gICAgICAgIFsiLXMi
XSwKLSAgICAgICAgWyItLXRiPW5vIl0sCi0gICAgICAgIFsiLS10Yj1zaG9ydCJdLAotICAgICAg
ICBbIi0tdGI9bG9uZyJdLAotICAgICAgICBbIi0tZnVsbHRyYWNlIl0sCi0gICAgICAgIFsiLS10
cmFjZWNvbmZpZyJdLAotICAgICAgICBbIi12Il0sCi0gICAgICAgIFsiLXYiLCAiLXYiXSwKLSAg
ICApOgotICAgICAgICBydW5maWxldGVzdChvcHRzICsgW3BhdGhdKQorICAgIHJ1bmZpbGV0ZXN0
KFtwYXRoXSkKKyAgICBydW5maWxldGVzdChbIi1sIiwgcGF0aF0pCisgICAgcnVuZmlsZXRlc3Qo
WyItcyIsIHBhdGhdKQorICAgIHJ1bmZpbGV0ZXN0KFsiLS10Yj1ubyIsIHBhdGhdKQorICAgIHJ1
bmZpbGV0ZXN0KFsiLS10Yj1zaG9ydCIsIHBhdGhdKQorICAgIHJ1bmZpbGV0ZXN0KFsiLS10Yj1s
b25nIiwgcGF0aF0pCisgICAgcnVuZmlsZXRlc3QoWyItLWZ1bGx0cmFjZSIsIHBhdGhdKQorICAg
IHJ1bmZpbGV0ZXN0KFsiLS10cmFjZWNvbmZpZyIsIHBhdGhdKQorICAgIHJ1bmZpbGV0ZXN0KFsi
LXYiLCBwYXRoXSkKKyAgICBydW5maWxldGVzdChbIi12IiwgIi12IiwgcGF0aF0pCiAKIAogZGVm
IHRlc3RfcHJlcGFyc2Vfb3JkZXJpbmdfd2l0aF9zZXR1cHRvb2xzKHRlc3RkaXIsIG1vbmtleXBh
dGNoKToKLSAgICBwa2dfcmVzb3VyY2VzID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgicGtnX3Jlc291
cmNlcyIpCi0KLSAgICBkZWYgbXlfaXRlcihuYW1lKToKLSAgICAgICAgYXNzZXJ0IG5hbWUgPT0g
InB5dGVzdDExIgorICAgIG1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lO
X0FVVE9MT0FEIiwgcmFpc2luZz1GYWxzZSkKIAotICAgICAgICBjbGFzcyBEaXN0KG9iamVjdCk6
Ci0gICAgICAgICAgICBwcm9qZWN0X25hbWUgPSAic3BhbSIKLSAgICAgICAgICAgIHZlcnNpb24g
PSAiMS4wIgorICAgIGNsYXNzIEVudHJ5UG9pbnQ6CisgICAgICAgIG5hbWUgPSAibXl0ZXN0cGx1
Z2luIgorICAgICAgICBncm91cCA9ICJweXRlc3QxMSIKIAotICAgICAgICAgICAgZGVmIF9nZXRf
bWV0YWRhdGEoc2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsiZm9vLnR4dCxz
aGEyNTY9YWJjLDEyMyJdCi0KLSAgICAgICAgY2xhc3MgRW50cnlQb2ludChvYmplY3QpOgotICAg
ICAgICAgICAgbmFtZSA9ICJteXRlc3RwbHVnaW4iCi0gICAgICAgICAgICBkaXN0ID0gRGlzdCgp
Ci0KLSAgICAgICAgICAgIGRlZiBsb2FkKHNlbGYpOgorICAgICAgICBkZWYgbG9hZChzZWxmKToK
KyAgICAgICAgICAgIGNsYXNzIFBzZXVkb1BsdWdpbjoKKyAgICAgICAgICAgICAgICB4ID0gNDIK
IAotICAgICAgICAgICAgICAgIGNsYXNzIFBzZXVkb1BsdWdpbihvYmplY3QpOgotICAgICAgICAg
ICAgICAgICAgICB4ID0gNDIKKyAgICAgICAgICAgIHJldHVybiBQc2V1ZG9QbHVnaW4oKQogCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFBzZXVkb1BsdWdpbigpCisgICAgY2xhc3MgRGlzdDoKKyAg
ICAgICAgZmlsZXMgPSAoKQorICAgICAgICBtZXRhZGF0YSA9IHsibmFtZSI6ICJmb28ifQorICAg
ICAgICBlbnRyeV9wb2ludHMgPSAoRW50cnlQb2ludCgpLCkKIAotICAgICAgICByZXR1cm4gaXRl
cihbRW50cnlQb2ludCgpXSkKKyAgICBkZWYgbXlfZGlzdHMoKToKKyAgICAgICAgcmV0dXJuIChE
aXN0LCkKIAotICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGtnX3Jlc291cmNlcywgIml0ZXJfZW50
cnlfcG9pbnRzIiwgbXlfaXRlcikKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGltcG9ydGxpYl9t
ZXRhZGF0YSwgImRpc3RyaWJ1dGlvbnMiLCBteV9kaXN0cykKICAgICB0ZXN0ZGlyLm1ha2Vjb25m
dGVzdCgKICAgICAgICAgIiIiCiAgICAgICAgIHB5dGVzdF9wbHVnaW5zID0gIm15dGVzdHBsdWdp
biIsCkBAIC01NDcsNTggKzkxOCw3NiBAQCBkZWYgdGVzdF9wcmVwYXJzZV9vcmRlcmluZ193aXRo
X3NldHVwdG9vbHModGVzdGRpciwgbW9ua2V5cGF0Y2gpOgogCiAKIGRlZiB0ZXN0X3NldHVwdG9v
bHNfaW1wb3J0ZXJyb3JfaXNzdWUxNDc5KHRlc3RkaXIsIG1vbmtleXBhdGNoKToKLSAgICBwa2df
cmVzb3VyY2VzID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgicGtnX3Jlc291cmNlcyIpCisgICAgbW9u
a2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiLCByYWlzaW5n
PUZhbHNlKQogCi0gICAgZGVmIG15X2l0ZXIobmFtZSk6Ci0gICAgICAgIGFzc2VydCBuYW1lID09
ICJweXRlc3QxMSIKKyAgICBjbGFzcyBEdW1teUVudHJ5UG9pbnQ6CisgICAgICAgIG5hbWUgPSAi
bXl0ZXN0cGx1Z2luIgorICAgICAgICBncm91cCA9ICJweXRlc3QxMSIKIAotICAgICAgICBjbGFz
cyBEaXN0KG9iamVjdCk6Ci0gICAgICAgICAgICBwcm9qZWN0X25hbWUgPSAic3BhbSIKLSAgICAg
ICAgICAgIHZlcnNpb24gPSAiMS4wIgorICAgICAgICBkZWYgbG9hZChzZWxmKToKKyAgICAgICAg
ICAgIHJhaXNlIEltcG9ydEVycm9yKCJEb24ndCBoaWRlIG1lISIpCiAKLSAgICAgICAgICAgIGRl
ZiBfZ2V0X21ldGFkYXRhKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgICAgIHJldHVybiBbImZv
by50eHQsc2hhMjU2PWFiYywxMjMiXQorICAgIGNsYXNzIERpc3RyaWJ1dGlvbjoKKyAgICAgICAg
dmVyc2lvbiA9ICIxLjAiCisgICAgICAgIGZpbGVzID0gKCJmb28udHh0IiwpCisgICAgICAgIG1l
dGFkYXRhID0geyJuYW1lIjogImZvbyJ9CisgICAgICAgIGVudHJ5X3BvaW50cyA9IChEdW1teUVu
dHJ5UG9pbnQoKSwpCiAKLSAgICAgICAgY2xhc3MgRW50cnlQb2ludChvYmplY3QpOgotICAgICAg
ICAgICAgbmFtZSA9ICJteXRlc3RwbHVnaW4iCi0gICAgICAgICAgICBkaXN0ID0gRGlzdCgpCisg
ICAgZGVmIGRpc3RyaWJ1dGlvbnMoKToKKyAgICAgICAgcmV0dXJuIChEaXN0cmlidXRpb24oKSwp
CiAKLSAgICAgICAgICAgIGRlZiBsb2FkKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIElt
cG9ydEVycm9yKCJEb24ndCBoaWRlIG1lISIpCi0KLSAgICAgICAgcmV0dXJuIGl0ZXIoW0VudHJ5
UG9pbnQoKV0pCi0KLSAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBrZ19yZXNvdXJjZXMsICJpdGVy
X2VudHJ5X3BvaW50cyIsIG15X2l0ZXIpCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihpbXBvcnRs
aWJfbWV0YWRhdGEsICJkaXN0cmlidXRpb25zIiwgZGlzdHJpYnV0aW9ucykKICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkK
IAogCitkZWYgdGVzdF9pbXBvcnRsaWJfbWV0YWRhdGFfYnJva2VuX2Rpc3RyaWJ1dGlvbih0ZXN0
ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgIiIiSW50ZWdyYXRpb24gdGVzdCBmb3IgYnJva2VuIGRp
c3RyaWJ1dGlvbnMgd2l0aCAnZmlsZXMnIG1ldGFkYXRhIGJlaW5nIE5vbmUgKCM1Mzg5KSIiIgor
ICAgIG1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIiwg
cmFpc2luZz1GYWxzZSkKKworICAgIGNsYXNzIER1bW15RW50cnlQb2ludDoKKyAgICAgICAgbmFt
ZSA9ICJteXRlc3RwbHVnaW4iCisgICAgICAgIGdyb3VwID0gInB5dGVzdDExIgorCisgICAgICAg
IGRlZiBsb2FkKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdCgpCisKKyAgICBjbGFz
cyBEaXN0cmlidXRpb246CisgICAgICAgIHZlcnNpb24gPSAiMS4wIgorICAgICAgICBmaWxlcyA9
IE5vbmUKKyAgICAgICAgbWV0YWRhdGEgPSB7Im5hbWUiOiAiZm9vIn0KKyAgICAgICAgZW50cnlf
cG9pbnRzID0gKER1bW15RW50cnlQb2ludCgpLCkKKworICAgIGRlZiBkaXN0cmlidXRpb25zKCk6
CisgICAgICAgIHJldHVybiAoRGlzdHJpYnV0aW9uKCksKQorCisgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cihpbXBvcnRsaWJfbWV0YWRhdGEsICJkaXN0cmlidXRpb25zIiwgZGlzdHJpYnV0aW9ucykK
KyAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKKworCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImJsb2NrX2l0IiwgW1RydWUsIEZhbHNlXSkKIGRlZiB0ZXN0X3BsdWdpbl9wcmVwYXJzZV9wcmV2
ZW50c19zZXR1cHRvb2xzX2xvYWRpbmcodGVzdGRpciwgbW9ua2V5cGF0Y2gsIGJsb2NrX2l0KToK
LSAgICBwa2dfcmVzb3VyY2VzID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgicGtnX3Jlc291cmNlcyIp
CisgICAgbW9ua2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQi
LCByYWlzaW5nPUZhbHNlKQogCiAgICAgcGx1Z2luX21vZHVsZV9wbGFjZWhvbGRlciA9IG9iamVj
dCgpCiAKLSAgICBkZWYgbXlfaXRlcihuYW1lKToKLSAgICAgICAgYXNzZXJ0IG5hbWUgPT0gInB5
dGVzdDExIgotCi0gICAgICAgIGNsYXNzIERpc3Qob2JqZWN0KToKLSAgICAgICAgICAgIHByb2pl
Y3RfbmFtZSA9ICJzcGFtIgotICAgICAgICAgICAgdmVyc2lvbiA9ICIxLjAiCi0KLSAgICAgICAg
ICAgIGRlZiBfZ2V0X21ldGFkYXRhKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgICAgIHJldHVy
biBbImZvby50eHQsc2hhMjU2PWFiYywxMjMiXQorICAgIGNsYXNzIER1bW15RW50cnlQb2ludDoK
KyAgICAgICAgbmFtZSA9ICJteXRlc3RwbHVnaW4iCisgICAgICAgIGdyb3VwID0gInB5dGVzdDEx
IgogCi0gICAgICAgIGNsYXNzIEVudHJ5UG9pbnQob2JqZWN0KToKLSAgICAgICAgICAgIG5hbWUg
PSAibXl0ZXN0cGx1Z2luIgotICAgICAgICAgICAgZGlzdCA9IERpc3QoKQorICAgICAgICBkZWYg
bG9hZChzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBwbHVnaW5fbW9kdWxlX3BsYWNlaG9sZGVy
CiAKLSAgICAgICAgICAgIGRlZiBsb2FkKHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiBw
bHVnaW5fbW9kdWxlX3BsYWNlaG9sZGVyCisgICAgY2xhc3MgRGlzdHJpYnV0aW9uOgorICAgICAg
ICB2ZXJzaW9uID0gIjEuMCIKKyAgICAgICAgZmlsZXMgPSAoImZvby50eHQiLCkKKyAgICAgICAg
bWV0YWRhdGEgPSB7Im5hbWUiOiAiZm9vIn0KKyAgICAgICAgZW50cnlfcG9pbnRzID0gKER1bW15
RW50cnlQb2ludCgpLCkKIAotICAgICAgICByZXR1cm4gaXRlcihbRW50cnlQb2ludCgpXSkKKyAg
ICBkZWYgZGlzdHJpYnV0aW9ucygpOgorICAgICAgICByZXR1cm4gKERpc3RyaWJ1dGlvbigpLCkK
IAotICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGtnX3Jlc291cmNlcywgIml0ZXJfZW50cnlfcG9p
bnRzIiwgbXlfaXRlcikKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGltcG9ydGxpYl9tZXRhZGF0
YSwgImRpc3RyaWJ1dGlvbnMiLCBkaXN0cmlidXRpb25zKQogICAgIGFyZ3MgPSAoIi1wIiwgIm5v
Om15dGVzdHBsdWdpbiIpIGlmIGJsb2NrX2l0IGVsc2UgKCkKICAgICBjb25maWcgPSB0ZXN0ZGly
LnBhcnNlY29uZmlnKCphcmdzKQogICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmltcG9ydF9wbHVn
aW4oIm15dGVzdHBsdWdpbiIpCkBAIC02MDYsOSArOTk1LDc3IEBAIGRlZiB0ZXN0X3BsdWdpbl9w
cmVwYXJzZV9wcmV2ZW50c19zZXR1cHRvb2xzX2xvYWRpbmcodGVzdGRpciwgbW9ua2V5cGF0Y2gs
IGJsb2NrCiAgICAgICAgIGFzc2VydCAibXl0ZXN0cGx1Z2luIiBub3QgaW4gc3lzLm1vZHVsZXMK
ICAgICAgICAgYXNzZXJ0IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oIm15dGVzdHBs
dWdpbiIpIGlzIE5vbmUKICAgICBlbHNlOgotICAgICAgICBhc3NlcnQgY29uZmlnLnBsdWdpbm1h
bmFnZXIuZ2V0X3BsdWdpbigKLSAgICAgICAgICAgICJteXRlc3RwbHVnaW4iCi0gICAgICAgICkg
aXMgcGx1Z2luX21vZHVsZV9wbGFjZWhvbGRlcgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAg
ICAgY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigibXl0ZXN0cGx1Z2luIikgaXMgcGx1
Z2luX21vZHVsZV9wbGFjZWhvbGRlcgorICAgICAgICApCisKKworQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKAorICAgICJwYXJzZV9hcmdzLHNob3VsZF9sb2FkIiwgWygoIi1wIiwgIm15dGVzdHBs
dWdpbiIpLCBUcnVlKSwgKCgpLCBGYWxzZSldCispCitkZWYgdGVzdF9kaXNhYmxlX3BsdWdpbl9h
dXRvbG9hZCh0ZXN0ZGlyLCBtb25rZXlwYXRjaCwgcGFyc2VfYXJncywgc2hvdWxkX2xvYWQpOgor
ICAgIGNsYXNzIER1bW15RW50cnlQb2ludDoKKyAgICAgICAgcHJvamVjdF9uYW1lID0gbmFtZSA9
ICJteXRlc3RwbHVnaW4iCisgICAgICAgIGdyb3VwID0gInB5dGVzdDExIgorICAgICAgICB2ZXJz
aW9uID0gIjEuMCIKKworICAgICAgICBkZWYgbG9hZChzZWxmKToKKyAgICAgICAgICAgIHJldHVy
biBzeXMubW9kdWxlc1tzZWxmLm5hbWVdCisKKyAgICBjbGFzcyBEaXN0cmlidXRpb246CisgICAg
ICAgIG1ldGFkYXRhID0geyJuYW1lIjogImZvbyJ9CisgICAgICAgIGVudHJ5X3BvaW50cyA9IChE
dW1teUVudHJ5UG9pbnQoKSwpCisgICAgICAgIGZpbGVzID0gKCkKKworICAgIGNsYXNzIFBzZXVk
b1BsdWdpbjoKKyAgICAgICAgeCA9IDQyCisKKyAgICAgICAgYXR0cnNfdXNlZCA9IFtdCisKKyAg
ICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgYXNzZXJ0IG5h
bWUgPT0gIl9fbG9hZGVyX18iCisgICAgICAgICAgICBzZWxmLmF0dHJzX3VzZWQuYXBwZW5kKG5h
bWUpCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0KCkKKworICAgIGRlZiBkaXN0cmlidXRpb25z
KCk6CisgICAgICAgIHJldHVybiAoRGlzdHJpYnV0aW9uKCksKQorCisgICAgbW9ua2V5cGF0Y2gu
c2V0ZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiLCAiMSIpCisgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cihpbXBvcnRsaWJfbWV0YWRhdGEsICJkaXN0cmlidXRpb25zIiwgZGlzdHJp
YnV0aW9ucykKKyAgICBtb25rZXlwYXRjaC5zZXRpdGVtKHN5cy5tb2R1bGVzLCAibXl0ZXN0cGx1
Z2luIiwgUHNldWRvUGx1Z2luKCkpCisgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygq
cGFyc2VfYXJncykKKyAgICBoYXNfbG9hZGVkID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3Bs
dWdpbigibXl0ZXN0cGx1Z2luIikgaXMgbm90IE5vbmUKKyAgICBhc3NlcnQgaGFzX2xvYWRlZCA9
PSBzaG91bGRfbG9hZAorICAgIGlmIHNob3VsZF9sb2FkOgorICAgICAgICBhc3NlcnQgUHNldWRv
UGx1Z2luLmF0dHJzX3VzZWQgPT0gWyJfX2xvYWRlcl9fIl0KKyAgICBlbHNlOgorICAgICAgICBh
c3NlcnQgUHNldWRvUGx1Z2luLmF0dHJzX3VzZWQgPT0gW10KKworCitkZWYgdGVzdF9wbHVnaW5f
bG9hZGluZ19vcmRlcih0ZXN0ZGlyKToKKyAgICAiIiJUZXN0IG9yZGVyIG9mIHBsdWdpbiBsb2Fk
aW5nIHdpdGggYC1wYC4iIiIKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
IiIiCisgICAgICAgIGRlZiB0ZXN0X3Rlcm1pbmFsX3BsdWdpbihyZXF1ZXN0KToKKyAgICAgICAg
ICAgIGltcG9ydCBteXBsdWdpbgorICAgICAgICAgICAgYXNzZXJ0IG15cGx1Z2luLnRlcm1pbmFs
X3BsdWdpbiA9PSBbRmFsc2UsIFRydWVdCisgICAgICAgICIiIiwKKyAgICAgICAgKip7CisgICAg
ICAgICAgICAibXlwbHVnaW4iOiAiIiIKKyAgICAgICAgICAgIHRlcm1pbmFsX3BsdWdpbiA9IFtd
CisKKyAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisgICAgICAgICAg
ICAgICAgdGVybWluYWxfcGx1Z2luLmFwcGVuZChib29sKGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdl
dF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKSkpCisKKyAgICAgICAgICAgIGRlZiBweXRlc3Rf
c2Vzc2lvbnN0YXJ0KHNlc3Npb24pOgorICAgICAgICAgICAgICAgIGNvbmZpZyA9IHNlc3Npb24u
Y29uZmlnCisgICAgICAgICAgICAgICAgdGVybWluYWxfcGx1Z2luLmFwcGVuZChib29sKGNvbmZp
Zy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKSkpCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgfSwKKyAgICApCisgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXAiLCAibXlwbHVnaW4iLCBzdHIocDEp
KQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAogCiBkZWYgdGVzdF9jbWRsaW5lX3Byb2Nl
c3NhcmdzX3NpbXBsZSh0ZXN0ZGlyKToKQEAgLTYyMyw4ICsxMDgwLDggQEAgZGVmIHRlc3RfY21k
bGluZV9wcm9jZXNzYXJnc19zaW1wbGUodGVzdGRpcik6CiAKIAogZGVmIHRlc3RfaW52YWxpZF9v
cHRpb25zX3Nob3dfZXh0cmFfaW5mb3JtYXRpb24odGVzdGRpcik6Ci0gICAgIiIiZGlzcGxheSBl
eHRyYSBpbmZvcm1hdGlvbiB3aGVuIHB5dGVzdCBleGl0cyBkdWUgdG8gdW5yZWNvZ25pemVkCi0g
ICAgb3B0aW9ucyBpbiB0aGUgY29tbWFuZC1saW5lIiIiCisgICAgIiIiRGlzcGxheSBleHRyYSBp
bmZvcm1hdGlvbiB3aGVuIHB5dGVzdCBleGl0cyBkdWUgdG8gdW5yZWNvZ25pemVkCisgICAgb3B0
aW9ucyBpbiB0aGUgY29tbWFuZC1saW5lLiIiIgogICAgIHRlc3RkaXIubWFrZWluaSgKICAgICAg
ICAgIiIiCiAgICAgICAgIFtweXRlc3RdCkBAIC02NTAsOSArMTEwNyw5IEBAIGRlZiB0ZXN0X2lu
dmFsaWRfb3B0aW9uc19zaG93X2V4dHJhX2luZm9ybWF0aW9uKHRlc3RkaXIpOgogICAgICAgICBb
Ii12IiwgImRpcjIiLCAiZGlyMSJdLAogICAgIF0sCiApCi1kZWYgdGVzdF9jb25zaWRlcl9hcmdz
X2FmdGVyX29wdGlvbnNfZm9yX3Jvb3RkaXJfYW5kX2luaWZpbGUodGVzdGRpciwgYXJncyk6Citk
ZWYgdGVzdF9jb25zaWRlcl9hcmdzX2FmdGVyX29wdGlvbnNfZm9yX3Jvb3RkaXIodGVzdGRpciwg
YXJncyk6CiAgICAgIiIiCi0gICAgQ29uc2lkZXIgYWxsIGFyZ3VtZW50cyBpbiB0aGUgY29tbWFu
ZC1saW5lIGZvciByb290ZGlyIGFuZCBpbmlmaWxlCisgICAgQ29uc2lkZXIgYWxsIGFyZ3VtZW50
cyBpbiB0aGUgY29tbWFuZC1saW5lIGZvciByb290ZGlyCiAgICAgZGlzY292ZXJ5LCBldmVuIGlm
IHRoZXkgaGFwcGVuIHRvIG9jY3VyIGFmdGVyIGFuIG9wdGlvbi4gIzk0OQogICAgICIiIgogICAg
ICMgcmVwbGFjZSAiZGlyMSIgYW5kICJkaXIyIiBmcm9tICJhcmdzIiBpbnRvIHRoZWlyIHJlYWwg
ZGlyZWN0b3J5CkBAIC02NjYsMTMgKzExMjMsMTIgQEAgZGVmIHRlc3RfY29uc2lkZXJfYXJnc19h
ZnRlcl9vcHRpb25zX2Zvcl9yb290ZGlyX2FuZF9pbmlmaWxlKHRlc3RkaXIsIGFyZ3MpOgogICAg
ICAgICAgICAgYXJnc1tpXSA9IGQyCiAgICAgd2l0aCByb290LmFzX2N3ZCgpOgogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgqYXJncykKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqcm9vdGRpcjogKm15cm9vdCwgaW5pZmlsZToiXSkKKyAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqcm9vdGRpcjogKm15cm9vdCJdKQogCiAKLUBweXRlc3QubWFy
ay5za2lwaWYoInN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIikKIGRlZiB0ZXN0X3Rvb2xvbmdhcmdz
X2lzc3VlMjI0KHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItbSIs
ICJoZWxsbyIgKiA1MDApCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJVF9OT1RFU1RTQ09M
TEVDVEVECisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVD
VEVECiAKIAogZGVmIHRlc3RfY29uZmlnX2luX3N1YmRpcmVjdG9yeV9jb2xvbl9jb21tYW5kX2xp
bmVfaXNzdWUyMTQ4KHRlc3RkaXIpOgpAQCAtNjgzLDE3ICsxMTM5LDE3IEBAIGRlZiB0ZXN0X2Nv
bmZpZ19pbl9zdWJkaXJlY3RvcnlfY29sb25fY29tbWFuZF9saW5lX2lzc3VlMjE0OCh0ZXN0ZGly
KToKIAogICAgIHRlc3RkaXIubWFrZWZpbGUoCiAgICAgICAgICIuaW5pIiwKLSAgICAgICAgKip7
InB5dGVzdCI6ICJbcHl0ZXN0XVxuZm9vID0gcm9vdCIsICJzdWJkaXIvcHl0ZXN0IjogIltweXRl
c3RdXG5mb28gPSBzdWJkaXIifQorICAgICAgICAqKnsicHl0ZXN0IjogIltweXRlc3RdXG5mb28g
PSByb290IiwgInN1YmRpci9weXRlc3QiOiAiW3B5dGVzdF1cbmZvbyA9IHN1YmRpciJ9LAogICAg
ICkKIAogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgKip7CiAgICAgICAgICAgICAi
Y29uZnRlc3QiOiBjb25mdGVzdF9zb3VyY2UsCiAgICAgICAgICAgICAic3ViZGlyL2NvbmZ0ZXN0
IjogY29uZnRlc3Rfc291cmNlLAotICAgICAgICAgICAgInN1YmRpci90ZXN0X2ZvbyI6ICIiIgor
ICAgICAgICAgICAgInN1YmRpci90ZXN0X2ZvbyI6ICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0
X2ZvbyhweXRlc3Rjb25maWcpOgogICAgICAgICAgICAgICAgIGFzc2VydCBweXRlc3Rjb25maWcu
Z2V0aW5pKCdmb28nKSA9PSAnc3ViZGlyJwotICAgICAgICAiIiIsCisgICAgICAgICAgICAiIiIs
CiAgICAgICAgIH0KICAgICApCiAKQEAgLTcwMywyOSArMTE1OSwzOSBAQCBkZWYgdGVzdF9jb25m
aWdfaW5fc3ViZGlyZWN0b3J5X2NvbG9uX2NvbW1hbmRfbGluZV9pc3N1ZTIxNDgodGVzdGRpcik6
CiAKIGRlZiB0ZXN0X25vdGlmeV9leGNlcHRpb24odGVzdGRpciwgY2FwZmQpOgogICAgIGNvbmZp
ZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQotICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFZh
bHVlRXJyb3IsICJyYWlzZSBWYWx1ZUVycm9yKDEpIikKLSAgICBjb25maWcubm90aWZ5X2V4Y2Vw
dGlvbihleGNpbmZvKQotICAgIG91dCwgZXJyID0gY2FwZmQucmVhZG91dGVycigpCisgICAgd2l0
aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoMSkKKyAgICBjb25maWcubm90aWZ5X2V4Y2VwdGlvbihleGNpbmZvLCBjb25maWcu
b3B0aW9uKQorICAgIF8sIGVyciA9IGNhcGZkLnJlYWRvdXRlcnIoKQogICAgIGFzc2VydCAiVmFs
dWVFcnJvciIgaW4gZXJyCiAKLSAgICBjbGFzcyBBKG9iamVjdCk6Ci0KLSAgICAgICAgZGVmIHB5
dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIpOgorICAgIGNsYXNzIEE6CisgICAgICAg
IGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmKToKICAgICAgICAgICAgIHJldHVybiBUcnVl
CiAKICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihBKCkpCi0gICAgY29uZmlnLm5v
dGlmeV9leGNlcHRpb24oZXhjaW5mbykKLSAgICBvdXQsIGVyciA9IGNhcGZkLnJlYWRvdXRlcnIo
KQorICAgIGNvbmZpZy5ub3RpZnlfZXhjZXB0aW9uKGV4Y2luZm8sIGNvbmZpZy5vcHRpb24pCisg
ICAgXywgZXJyID0gY2FwZmQucmVhZG91dGVycigpCiAgICAgYXNzZXJ0IG5vdCBlcnIKIAorICAg
IGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoIi1wIiwgIm5vOnRlcm1pbmFsIikKKyAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigxKQorICAgIGNvbmZpZy5ub3RpZnlfZXhjZXB0aW9uKGV4Y2luZm8sIGNvbmZp
Zy5vcHRpb24pCisgICAgXywgZXJyID0gY2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0ICJW
YWx1ZUVycm9yIiBpbiBlcnIKIAotZGVmIHRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0X2xhc3Rf
b3JkZXJpbmcodGVzdGRpcik6Ci0gICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgZ2V0X2Nv
bmZpZwogCi0gICAgcG0gPSBnZXRfY29uZmlnKCkucGx1Z2lubWFuYWdlcgorZGVmIHRlc3Rfbm9f
dGVybWluYWxfZGlzY292ZXJ5X2Vycm9yKHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgicmFpc2UgVHlwZUVycm9yKCdvb3BzIScpIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLXAiLCAibm86dGVybWluYWwiLCAiLS1jb2xsZWN0LW9ubHkiKQorICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IEV4aXRDb2RlLklOVEVSUlVQVEVECiAKLSAgICBjbGFzcyBNeShvYmplY3Qp
OgogCitkZWYgdGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RfbGFzdF9vcmRlcmluZyhfY29uZmln
X2Zvcl90ZXN0KToKKyAgICBwbSA9IF9jb25maWdfZm9yX3Rlc3QucGx1Z2lubWFuYWdlcgorCisg
ICAgY2xhc3MgTXk6CiAgICAgICAgIGRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhz
ZWxmKToKICAgICAgICAgICAgIHBhc3MKIApAQCAtNzMzLDE3ICsxMTk5LDIxIEBAIGRlZiB0ZXN0
X2xvYWRfaW5pdGlhbF9jb25mdGVzdF9sYXN0X29yZGVyaW5nKHRlc3RkaXIpOgogICAgIHBtLnJl
Z2lzdGVyKG0pCiAgICAgaGMgPSBwbS5ob29rLnB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3Rz
CiAgICAgdmFsdWVzID0gaGMuX25vbndyYXBwZXJzICsgaGMuX3dyYXBwZXJzCi0gICAgZXhwZWN0
ZWQgPSBbIl9weXRlc3QuY29uZmlnIiwgInRlc3RfY29uZmlnIiwgIl9weXRlc3QuY2FwdHVyZSJd
CisgICAgZXhwZWN0ZWQgPSBbIl9weXRlc3QuY29uZmlnIiwgbS5fX21vZHVsZV9fLCAiX3B5dGVz
dC5jYXB0dXJlIiwgIl9weXRlc3Qud2FybmluZ3MiXQogICAgIGFzc2VydCBbeC5mdW5jdGlvbi5f
X21vZHVsZV9fIGZvciB4IGluIHZhbHVlc10gPT0gZXhwZWN0ZWQKIAogCi1kZWYgdGVzdF9nZXRf
cGx1Z2luX3NwZWNzX2FzX2xpc3QoKToKLSAgICBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBf
Z2V0X3BsdWdpbl9zcGVjc19hc19saXN0CitkZWYgdGVzdF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xp
c3QoKSAtPiBOb25lOgorICAgIGRlZiBleHBfbWF0Y2godmFsOiBvYmplY3QpIC0+IHN0cjoKKyAg
ICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgICJQbHVnaW5zIG1heSBiZSBzcGVjaWZpZWQgYXMg
YSBzZXF1ZW5jZSBvciBhICcsJy1zZXBhcmF0ZWQgc3RyaW5nIG9mIHBsdWdpbiBuYW1lcy4gR290
OiAlcyIKKyAgICAgICAgICAgICUgcmUuZXNjYXBlKHJlcHIodmFsKSkKKyAgICAgICAgKQogCi0g
ICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5Vc2FnZUVycm9yKToKLSAgICAgICAgX2dldF9w
bHVnaW5fc3BlY3NfYXNfbGlzdCh7ImZvbyJ9KQotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRl
c3QuVXNhZ2VFcnJvcik6Ci0gICAgICAgIF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3QoZGljdCgp
KQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VFcnJvciwgbWF0Y2g9ZXhwX21h
dGNoKHsiZm9vIn0pKToKKyAgICAgICAgX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdCh7ImZvbyJ9
KSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVz
dC5Vc2FnZUVycm9yLCBtYXRjaD1leHBfbWF0Y2goe30pKToKKyAgICAgICAgX2dldF9wbHVnaW5f
c3BlY3NfYXNfbGlzdChkaWN0KCkpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KIAogICAgIGFz
c2VydCBfZ2V0X3BsdWdpbl9zcGVjc19hc19saXN0KE5vbmUpID09IFtdCiAgICAgYXNzZXJ0IF9n
ZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3QoIiIpID09IFtdCkBAIC03NTMsMTI0ICsxMjIzLDE4NSBA
QCBkZWYgdGVzdF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3QoKToKICAgICBhc3NlcnQgX2dldF9w
bHVnaW5fc3BlY3NfYXNfbGlzdCgoImZvbyIsICJiYXIiKSkgPT0gWyJmb28iLCAiYmFyIl0KIAog
Ci1jbGFzcyBUZXN0V2FybmluZyhvYmplY3QpOgorZGVmIHRlc3RfY29sbGVjdF9weXRlc3RfcHJl
Zml4X2J1Z19pbnRlZ3JhdGlvbih0ZXN0ZGlyKToKKyAgICAiIiJJbnRlZ3JhdGlvbiB0ZXN0IGZv
ciBpc3N1ZSAjMzc3NSIiIgorICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiY29uZmlnL2Nv
bGxlY3RfcHl0ZXN0X3ByZWZpeCIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEgcGFzc2VkICoiXSkKIAotICAg
IGRlZiB0ZXN0X3dhcm5fY29uZmlnKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1h
a2Vjb25mdGVzdCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgdmFsdWVzID0gW10KLSAg
ICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgICAgICAgICAgICAg
Y29uZmlnLndhcm4oIkMxIiwgImhlbGxvIikKLSAgICAgICAgICAgIGRlZiBweXRlc3RfbG9nd2Fy
bmluZyhjb2RlLCBtZXNzYWdlKToKLSAgICAgICAgICAgICAgICBpZiBtZXNzYWdlID09ICJoZWxs
byIgYW5kIGNvZGUgPT0gIkMxIjoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgx
KQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0g
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X3Byb3BlcihweXRlc3Rjb25maWcp
OgotICAgICAgICAgICAgICAgIGltcG9ydCBjb25mdGVzdAotICAgICAgICAgICAgICAgIGFzc2Vy
dCBjb25mdGVzdC52YWx1ZXMgPT0gWzFdCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAg
IHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCi0gICAgICAgIHJlcHJlYy5hc3NlcnRvdXRj
b21lKHBhc3NlZD0xKQotCi0gICAgZGVmIHRlc3Rfd2Fybl9vbl90ZXN0X2l0ZW1fZnJvbV9yZXF1
ZXN0KHNlbGYsIHRlc3RkaXIsIHJlcXVlc3QpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAotICAgICAgICAg
ICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgZml4KHJlcXVlc3QpOgotICAgICAg
ICAgICAgICAgIHJlcXVlc3Qubm9kZS53YXJuKCJUMSIsICJoZWxsbyIpCitkZWYgdGVzdF9jb2xs
ZWN0X3B5dGVzdF9wcmVmaXhfYnVnKHB5dGVzdGNvbmZpZyk6CisgICAgIiIiRW5zdXJlIHdlIGNv
bGxlY3Qgb25seSBhY3R1YWwgZnVuY3Rpb25zIGZyb20gY29uZnRlc3QgZmlsZXMgKCMzNzc1KSIi
IgogCi0gICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhmaXgpOgotICAgICAgICAgICAgICAgIHBh
c3MKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0tZGlzYWJsZS1weXRlc3Qtd2FybmluZ3MiKQotICAgICAgICBhc3NlcnQgcmVzdWx0
LnBhcnNlb3V0Y29tZXMoKVsid2FybmluZ3MiXSA+IDAKLSAgICAgICAgYXNzZXJ0ICJoZWxsbyIg
bm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKLQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAg
ICAgICIiIgotICAgICAgICAgICAgPT09Kndhcm5pbmdzIHN1bW1hcnkqPT09Ci0gICAgICAgICAg
ICAqdGVzdF93YXJuX29uX3Rlc3RfaXRlbV9mcm9tX3JlcXVlc3QucHk6OnRlc3RfaGVsbG8qCi0g
ICAgICAgICAgICAqaGVsbG8qCi0gICAgICAgICIiIgotICAgICAgICApCisgICAgY2xhc3MgRHVt
bXk6CisgICAgICAgIGNsYXNzIHB5dGVzdF9zb21ldGhpbmc6CisgICAgICAgICAgICBwYXNzCiAK
KyAgICBwbSA9IHB5dGVzdGNvbmZpZy5wbHVnaW5tYW5hZ2VyCisgICAgYXNzZXJ0IHBtLnBhcnNl
X2hvb2tpbXBsX29wdHMoRHVtbXkoKSwgInB5dGVzdF9zb21ldGhpbmciKSBpcyBOb25lCiAKLWNs
YXNzIFRlc3RSb290ZGlyKG9iamVjdCk6CiAKLSAgICBkZWYgdGVzdF9zaW1wbGVfbm9pbmkoc2Vs
ZiwgdG1wZGlyKToKLSAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW3RtcGRpcl0p
ID09IHRtcGRpcgotICAgICAgICBhID0gdG1wZGlyLm1rZGlyKCJhIikKLSAgICAgICAgYXNzZXJ0
IGdldF9jb21tb25fYW5jZXN0b3IoW2EsIHRtcGRpcl0pID09IHRtcGRpcgotICAgICAgICBhc3Nl
cnQgZ2V0X2NvbW1vbl9hbmNlc3RvcihbdG1wZGlyLCBhXSkgPT0gdG1wZGlyCi0gICAgICAgIHdp
dGggdG1wZGlyLmFzX2N3ZCgpOgotICAgICAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0
b3IoW10pID09IHRtcGRpcgotICAgICAgICAgICAgbm9fcGF0aCA9IHRtcGRpci5qb2luKCJkb2Vz
LW5vdC1leGlzdCIpCi0gICAgICAgICAgICBhc3NlcnQgZ2V0X2NvbW1vbl9hbmNlc3Rvcihbbm9f
cGF0aF0pID09IHRtcGRpcgotICAgICAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3Io
W25vX3BhdGguam9pbigiYSIpXSkgPT0gdG1wZGlyCitjbGFzcyBUZXN0Um9vdGRpcjoKKyAgICBk
ZWYgdGVzdF9zaW1wbGVfbm9pbmkoc2VsZiwgdG1wX3BhdGg6IFBhdGgsIG1vbmtleXBhdGNoOiBN
b25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3Io
W3RtcF9wYXRoXSkgPT0gdG1wX3BhdGgKKyAgICAgICAgYSA9IHRtcF9wYXRoIC8gImEiCisgICAg
ICAgIGEubWtkaXIoKQorICAgICAgICBhc3NlcnQgZ2V0X2NvbW1vbl9hbmNlc3RvcihbYSwgdG1w
X3BhdGhdKSA9PSB0bXBfcGF0aAorICAgICAgICBhc3NlcnQgZ2V0X2NvbW1vbl9hbmNlc3Rvcihb
dG1wX3BhdGgsIGFdKSA9PSB0bXBfcGF0aAorICAgICAgICBtb25rZXlwYXRjaC5jaGRpcih0bXBf
cGF0aCkKKyAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW10pID09IHRtcF9wYXRo
CisgICAgICAgIG5vX3BhdGggPSB0bXBfcGF0aCAvICJkb2VzLW5vdC1leGlzdCIKKyAgICAgICAg
YXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW25vX3BhdGhdKSA9PSB0bXBfcGF0aAorICAgICAg
ICBhc3NlcnQgZ2V0X2NvbW1vbl9hbmNlc3Rvcihbbm9fcGF0aCAvICJhIl0pID09IHRtcF9wYXRo
CiAKLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm5hbWUiLCAic2V0dXAuY2ZnIHRveC5p
bmkgcHl0ZXN0LmluaSIuc3BsaXQoKSkKLSAgICBkZWYgdGVzdF93aXRoX2luaShzZWxmLCB0bXBk
aXIsIG5hbWUpOgotICAgICAgICBpbmlmaWxlID0gdG1wZGlyLmpvaW4obmFtZSkKLSAgICAgICAg
aW5pZmlsZS53cml0ZSgiW3B5dGVzdF1cbiIpCi0KLSAgICAgICAgYSA9IHRtcGRpci5ta2Rpcigi
YSIpCi0gICAgICAgIGIgPSBhLm1rZGlyKCJiIikKLSAgICAgICAgZm9yIGFyZ3MgaW4gKFt0bXBk
aXJdLCBbYV0sIFtiXSk6Ci0gICAgICAgICAgICByb290ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBk
ZXRlcm1pbmVfc2V0dXAoTm9uZSwgYXJncykKLSAgICAgICAgICAgIGFzc2VydCByb290ZGlyID09
IHRtcGRpcgotICAgICAgICAgICAgYXNzZXJ0IGluaWZpbGUgPT0gaW5pZmlsZQotICAgICAgICBy
b290ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgW2IsIGFdKQot
ICAgICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBkaXIKLSAgICAgICAgYXNzZXJ0IGluaWZpbGUg
PT0gaW5pZmlsZQotCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJuYW1lIiwgInNldHVw
LmNmZyB0b3guaW5pIi5zcGxpdCgpKQotICAgIGRlZiB0ZXN0X3B5dGVzdGluaV9vdmVyaWRlc19l
bXB0eV9vdGhlcihzZWxmLCB0bXBkaXIsIG5hbWUpOgotICAgICAgICBpbmlmaWxlID0gdG1wZGly
LmVuc3VyZSgicHl0ZXN0LmluaSIpCi0gICAgICAgIGEgPSB0bXBkaXIubWtkaXIoImEiKQotICAg
ICAgICBhLmVuc3VyZShuYW1lKQotICAgICAgICByb290ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBk
ZXRlcm1pbmVfc2V0dXAoTm9uZSwgW2FdKQotICAgICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBk
aXIKLSAgICAgICAgYXNzZXJ0IGluaWZpbGUgPT0gaW5pZmlsZQotCi0gICAgZGVmIHRlc3Rfc2V0
dXBweV9mYWxsYmFjayhzZWxmLCB0bXBkaXIpOgotICAgICAgICBhID0gdG1wZGlyLm1rZGlyKCJh
IikKLSAgICAgICAgYS5lbnN1cmUoInNldHVwLmNmZyIpCi0gICAgICAgIHRtcGRpci5lbnN1cmUo
InNldHVwLnB5IikKLSAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5l
X3NldHVwKE5vbmUsIFthXSkKLSAgICAgICAgYXNzZXJ0IHJvb3RkaXIgPT0gdG1wZGlyCi0gICAg
ICAgIGFzc2VydCBpbmlmaWxlIGlzIE5vbmUKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgICAgICJuYW1lLCBjb250ZW50cyIsCisgICAgICAgIFsKKyAgICAgICAgICAgIHB5dGVz
dC5wYXJhbSgicHl0ZXN0LmluaSIsICJbcHl0ZXN0XVxueD0xMCIsIGlkPSJweXRlc3QuaW5pIiks
CisgICAgICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAgInB5cHJvamVjdC50
b21sIiwgIlt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc11cbng9MTAiLCBpZD0icHlwcm9qZWN0LnRv
bWwiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCJ0b3guaW5pIiwg
IltweXRlc3RdXG54PTEwIiwgaWQ9InRveC5pbmkiKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJh
bSgic2V0dXAuY2ZnIiwgIlt0b29sOnB5dGVzdF1cbng9MTAiLCBpZD0ic2V0dXAuY2ZnIiksCisg
ICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3dpdGhfaW5pKHNlbGYsIHRtcF9wYXRoOiBQ
YXRoLCBuYW1lOiBzdHIsIGNvbnRlbnRzOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGluaXBhdGgg
PSB0bXBfcGF0aCAvIG5hbWUKKyAgICAgICAgaW5pcGF0aC53cml0ZV90ZXh0KGNvbnRlbnRzLCAi
dXRmLTgiKQorCisgICAgICAgIGEgPSB0bXBfcGF0aCAvICJhIgorICAgICAgICBhLm1rZGlyKCkK
KyAgICAgICAgYiA9IGEgLyAiYiIKKyAgICAgICAgYi5ta2RpcigpCisgICAgICAgIGZvciBhcmdz
IGluIChbc3RyKHRtcF9wYXRoKV0sIFtzdHIoYSldLCBbc3RyKGIpXSk6CisgICAgICAgICAgICBy
b290cGF0aCwgcGFyc2VkX2luaXBhdGgsIF8gPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgYXJncykK
KyAgICAgICAgICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBfcGF0aAorICAgICAgICAgICAgYXNz
ZXJ0IHBhcnNlZF9pbmlwYXRoID09IGluaXBhdGgKKyAgICAgICAgcm9vdHBhdGgsIHBhcnNlZF9p
bmlwYXRoLCBpbmlfY29uZmlnID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIFtzdHIoYiksIHN0cihh
KV0pCisgICAgICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBfcGF0aAorICAgICAgICBhc3NlcnQg
cGFyc2VkX2luaXBhdGggPT0gaW5pcGF0aAorICAgICAgICBhc3NlcnQgaW5pX2NvbmZpZyA9PSB7
IngiOiAiMTAifQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJuYW1lIiwgWyJzZXR1
cC5jZmciLCAidG94LmluaSJdKQorICAgIGRlZiB0ZXN0X3B5dGVzdGluaV9vdmVycmlkZXNfZW1w
dHlfb3RoZXIoc2VsZiwgdG1wX3BhdGg6IFBhdGgsIG5hbWU6IHN0cikgLT4gTm9uZToKKyAgICAg
ICAgaW5pcGF0aCA9IHRtcF9wYXRoIC8gInB5dGVzdC5pbmkiCisgICAgICAgIGluaXBhdGgudG91
Y2goKQorICAgICAgICBhID0gdG1wX3BhdGggLyAiYSIKKyAgICAgICAgYS5ta2RpcigpCisgICAg
ICAgIChhIC8gbmFtZSkudG91Y2goKQorICAgICAgICByb290cGF0aCwgcGFyc2VkX2luaXBhdGgs
IF8gPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgW3N0cihhKV0pCisgICAgICAgIGFzc2VydCByb290
cGF0aCA9PSB0bXBfcGF0aAorICAgICAgICBhc3NlcnQgcGFyc2VkX2luaXBhdGggPT0gaW5pcGF0
aAorCisgICAgZGVmIHRlc3Rfc2V0dXBweV9mYWxsYmFjayhzZWxmLCB0bXBfcGF0aDogUGF0aCkg
LT4gTm9uZToKKyAgICAgICAgYSA9IHRtcF9wYXRoIC8gImEiCisgICAgICAgIGEubWtkaXIoKQor
ICAgICAgICAoYSAvICJzZXR1cC5jZmciKS50b3VjaCgpCisgICAgICAgICh0bXBfcGF0aCAvICJz
ZXR1cC5weSIpLnRvdWNoKCkKKyAgICAgICAgcm9vdHBhdGgsIGluaXBhdGgsIGluaWNmZyA9IGRl
dGVybWluZV9zZXR1cChOb25lLCBbc3RyKGEpXSkKKyAgICAgICAgYXNzZXJ0IHJvb3RwYXRoID09
IHRtcF9wYXRoCisgICAgICAgIGFzc2VydCBpbmlwYXRoIGlzIE5vbmUKICAgICAgICAgYXNzZXJ0
IGluaWNmZyA9PSB7fQogCi0gICAgZGVmIHRlc3Rfbm90aGluZyhzZWxmLCB0bXBkaXIsIG1vbmtl
eXBhdGNoKToKLSAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIoc3RyKHRtcGRpcikpCi0gICAgICAg
IHJvb3RkaXIsIGluaWZpbGUsIGluaWNmZyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbdG1wZGly
XSkKLSAgICAgICAgYXNzZXJ0IHJvb3RkaXIgPT0gdG1wZGlyCi0gICAgICAgIGFzc2VydCBpbmlm
aWxlIGlzIE5vbmUKKyAgICBkZWYgdGVzdF9ub3RoaW5nKHNlbGYsIHRtcF9wYXRoOiBQYXRoLCBt
b25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgICAgIG1vbmtleXBhdGNoLmNo
ZGlyKHRtcF9wYXRoKQorICAgICAgICByb290cGF0aCwgaW5pcGF0aCwgaW5pY2ZnID0gZGV0ZXJt
aW5lX3NldHVwKE5vbmUsIFtzdHIodG1wX3BhdGgpXSkKKyAgICAgICAgYXNzZXJ0IHJvb3RwYXRo
ID09IHRtcF9wYXRoCisgICAgICAgIGFzc2VydCBpbmlwYXRoIGlzIE5vbmUKICAgICAgICAgYXNz
ZXJ0IGluaWNmZyA9PSB7fQogCi0gICAgZGVmIHRlc3Rfd2l0aF9zcGVjaWZpY19pbmlmaWxlKHNl
bGYsIHRtcGRpcik6Ci0gICAgICAgIGluaWZpbGUgPSB0bXBkaXIuZW5zdXJlKCJweXRlc3QuaW5p
IikKLSAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5lX3NldHVwKGlu
aWZpbGUsIFt0bXBkaXJdKQotICAgICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBkaXIKLQorICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgIm5hbWUsIGNvbnRlbnRzIiwKKyAg
ICAgICAgWworICAgICAgICAgICAgIyBweXRlc3QucGFyYW0oInB5dGVzdC5pbmkiLCAiW3B5dGVz
dF1cbng9MTAiLCBpZD0icHl0ZXN0LmluaSIpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAor
ICAgICAgICAgICAgICAgICJweXByb2plY3QudG9tbCIsICJbdG9vbC5weXRlc3QuaW5pX29wdGlv
bnNdXG54PTEwIiwgaWQ9InB5cHJvamVjdC50b21sIgorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICMgcHl0ZXN0LnBhcmFtKCJ0b3guaW5pIiwgIltweXRlc3RdXG54PTEwIiwgaWQ9InRveC5p
bmkiKSwKKyAgICAgICAgICAgICMgcHl0ZXN0LnBhcmFtKCJzZXR1cC5jZmciLCAiW3Rvb2w6cHl0
ZXN0XVxueD0xMCIsIGlkPSJzZXR1cC5jZmciKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVm
IHRlc3Rfd2l0aF9zcGVjaWZpY19pbmlmaWxlKAorICAgICAgICBzZWxmLCB0bXBfcGF0aDogUGF0
aCwgbmFtZTogc3RyLCBjb250ZW50czogc3RyCisgICAgKSAtPiBOb25lOgorICAgICAgICBwID0g
dG1wX3BhdGggLyBuYW1lCisgICAgICAgIHAudG91Y2goKQorICAgICAgICBwLndyaXRlX3RleHQo
Y29udGVudHMsICJ1dGYtOCIpCisgICAgICAgIHJvb3RwYXRoLCBpbmlwYXRoLCBpbmlfY29uZmln
ID0gZGV0ZXJtaW5lX3NldHVwKHN0cihwKSwgW3N0cih0bXBfcGF0aCldKQorICAgICAgICBhc3Nl
cnQgcm9vdHBhdGggPT0gdG1wX3BhdGgKKyAgICAgICAgYXNzZXJ0IGluaXBhdGggPT0gcAorICAg
ICAgICBhc3NlcnQgaW5pX2NvbmZpZyA9PSB7IngiOiAiMTAifQorCisgICAgZGVmIHRlc3Rfd2l0
aF9hcmdfb3V0c2lkZV9jd2Rfd2l0aG91dF9pbmlmaWxlKAorICAgICAgICBzZWxmLCB0bXBfcGF0
aDogUGF0aCwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoCisgICAgKSAtPiBOb25lOgorICAgICAg
ICBtb25rZXlwYXRjaC5jaGRpcih0bXBfcGF0aCkKKyAgICAgICAgYSA9IHRtcF9wYXRoIC8gImEi
CisgICAgICAgIGEubWtkaXIoKQorICAgICAgICBiID0gdG1wX3BhdGggLyAiYiIKKyAgICAgICAg
Yi5ta2RpcigpCisgICAgICAgIHJvb3RwYXRoLCBpbmlmaWxlLCBfID0gZGV0ZXJtaW5lX3NldHVw
KE5vbmUsIFtzdHIoYSksIHN0cihiKV0pCisgICAgICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBf
cGF0aAorICAgICAgICBhc3NlcnQgaW5pZmlsZSBpcyBOb25lCiAKLWNsYXNzIFRlc3RPdmVycmlk
ZUluaUFyZ3Mob2JqZWN0KToKKyAgICBkZWYgdGVzdF93aXRoX2FyZ19vdXRzaWRlX2N3ZF93aXRo
X2luaWZpbGUoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgIGEgPSB0bXBf
cGF0aCAvICJhIgorICAgICAgICBhLm1rZGlyKCkKKyAgICAgICAgYiA9IHRtcF9wYXRoIC8gImIi
CisgICAgICAgIGIubWtkaXIoKQorICAgICAgICBpbmlwYXRoID0gYSAvICJweXRlc3QuaW5pIgor
ICAgICAgICBpbmlwYXRoLnRvdWNoKCkKKyAgICAgICAgcm9vdHBhdGgsIHBhcnNlZF9pbmlwYXRo
LCBfID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIFtzdHIoYSksIHN0cihiKV0pCisgICAgICAgIGFz
c2VydCByb290cGF0aCA9PSBhCisgICAgICAgIGFzc2VydCBpbmlwYXRoID09IHBhcnNlZF9pbmlw
YXRoCiAKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImRpcnMiLCAoW10sIFsiZG9lcy1u
b3QtZXhpc3QiXSwgWyJhL2RvZXMtbm90LWV4aXN0Il0pKQorICAgIGRlZiB0ZXN0X3dpdGhfbm9u
X2Rpcl9hcmcoCisgICAgICAgIHNlbGYsIGRpcnM6IFNlcXVlbmNlW3N0cl0sIHRtcF9wYXRoOiBQ
YXRoLCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gKKyAgICApIC0+IE5vbmU6CisgICAgICAgIG1v
bmtleXBhdGNoLmNoZGlyKHRtcF9wYXRoKQorICAgICAgICByb290cGF0aCwgaW5pcGF0aCwgXyA9
IGRldGVybWluZV9zZXR1cChOb25lLCBkaXJzKQorICAgICAgICBhc3NlcnQgcm9vdHBhdGggPT0g
dG1wX3BhdGgKKyAgICAgICAgYXNzZXJ0IGluaXBhdGggaXMgTm9uZQorCisgICAgZGVmIHRlc3Rf
d2l0aF9leGlzdGluZ19maWxlX2luX3N1YmRpcigKKyAgICAgICAgc2VsZiwgdG1wX3BhdGg6IFBh
dGgsIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYSA9
IHRtcF9wYXRoIC8gImEiCisgICAgICAgIGEubWtkaXIoKQorICAgICAgICAoYSAvICJleGlzdHMi
KS50b3VjaCgpCisgICAgICAgIG1vbmtleXBhdGNoLmNoZGlyKHRtcF9wYXRoKQorICAgICAgICBy
b290cGF0aCwgaW5pcGF0aCwgXyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbImEvZXhpc3QiXSkK
KyAgICAgICAgYXNzZXJ0IHJvb3RwYXRoID09IHRtcF9wYXRoCisgICAgICAgIGFzc2VydCBpbmlw
YXRoIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X3dpdGhfY29uZmlnX2Fsc29faW5fcGFyZW50X2Rp
cmVjdG9yeSgKKyAgICAgICAgc2VsZiwgdG1wX3BhdGg6IFBhdGgsIG1vbmtleXBhdGNoOiBNb25r
ZXlQYXRjaAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiUmVncmVzc2lvbiB0ZXN0IGZvciAj
NzgwNy4iIiIKKyAgICAgICAgKHRtcF9wYXRoIC8gInNldHVwLmNmZyIpLndyaXRlX3RleHQoIlt0
b29sOnB5dGVzdF1cbiIsICJ1dGYtOCIpCisgICAgICAgICh0bXBfcGF0aCAvICJteXByb2plY3Qi
KS5ta2RpcigpCisgICAgICAgICh0bXBfcGF0aCAvICJteXByb2plY3QiIC8gInNldHVwLmNmZyIp
LndyaXRlX3RleHQoIlt0b29sOnB5dGVzdF1cbiIsICJ1dGYtOCIpCisgICAgICAgICh0bXBfcGF0
aCAvICJteXByb2plY3QiIC8gInRlc3RzIikubWtkaXIoKQorICAgICAgICBtb25rZXlwYXRjaC5j
aGRpcih0bXBfcGF0aCAvICJteXByb2plY3QiKQorCisgICAgICAgIHJvb3RwYXRoLCBpbmlwYXRo
LCBfID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIFsidGVzdHMvIl0pCisKKyAgICAgICAgYXNzZXJ0
IHJvb3RwYXRoID09IHRtcF9wYXRoIC8gIm15cHJvamVjdCIKKyAgICAgICAgYXNzZXJ0IGluaXBh
dGggPT0gdG1wX3BhdGggLyAibXlwcm9qZWN0IiAvICJzZXR1cC5jZmciCisKKworY2xhc3MgVGVz
dE92ZXJyaWRlSW5pQXJnczoKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm5hbWUiLCAi
c2V0dXAuY2ZnIHRveC5pbmkgcHl0ZXN0LmluaSIuc3BsaXQoKSkKICAgICBkZWYgdGVzdF9vdmVy
cmlkZV9pbmlfbmFtZXMoc2VsZiwgdGVzdGRpciwgbmFtZSk6CisgICAgICAgIHNlY3Rpb24gPSAi
W3B5dGVzdF0iIGlmIG5hbWUgIT0gInNldHVwLmNmZyIgZWxzZSAiW3Rvb2w6cHl0ZXN0XSIKICAg
ICAgICAgdGVzdGRpci50bXBkaXIuam9pbihuYW1lKS53cml0ZSgKICAgICAgICAgICAgIHRleHR3
cmFwLmRlZGVudCgKICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIFtweXRlc3RdCi0g
ICAgICAgICAgICBjdXN0b20gPSAxLjAiIiIKKyAgICAgICAgICAgIHtzZWN0aW9ufQorICAgICAg
ICAgICAgY3VzdG9tID0gMS4wIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlv
bj1zZWN0aW9uCisgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICApCiAg
ICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KApAQCAtOTczLDggKzE1MDQsMTIgQEAgY2xhc3Mg
VGVzdE92ZXJyaWRlSW5pQXJncyhvYmplY3QpOgogICAgICAgICAgICAgeGRpc3Rfc3RyaWN0PUZh
bHNlCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLW92ZXJyaWRlLWluaSIsICJ4ZGlzdF9zdHJpY3QgVHJ1ZSIsICItcyIpCi0gICAg
ICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipFUlJPUiogKmV4cGVjdHMgb3B0aW9u
PXZhbHVlKiJdKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1vdmVycmlk
ZS1pbmkiLCAieGRpc3Rfc3RyaWN0IiwgIlRydWUiKQorICAgICAgICByZXN1bHQuc3RkZXJyLmZu
bWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIkVSUk9SOiAtby8t
LW92ZXJyaWRlLWluaSBleHBlY3RzIG9wdGlvbj12YWx1ZSBzdHlsZSAoZ290OiAneGRpc3Rfc3Ry
aWN0JykuIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogCiAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJ3aXRoX2luaSIsIFtUcnVlLCBGYWxzZV0pCiAgICAgZGVmIHRlc3Rfb3ZlcnJp
ZGVfaW5pX2hhbmRsZWRfYXNhcChzZWxmLCB0ZXN0ZGlyLCB3aXRoX2luaSk6CkBAIC05OTUsNTUg
KzE1MzAsNDggQEAgY2xhc3MgVGVzdE92ZXJyaWRlSW5pQXJncyhvYmplY3QpOgogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1vdmVycmlkZS1pbmkiLCAicHl0aG9uX2ZpbGVz
PXVuaXR0ZXN0XyoucHkiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
MSBwYXNzZWQgaW4qIl0pCiAKLSAgICBkZWYgdGVzdF93aXRoX2FyZ19vdXRzaWRlX2N3ZF93aXRo
b3V0X2luaWZpbGUoc2VsZiwgdG1wZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgICAgIG1vbmtleXBh
dGNoLmNoZGlyKHN0cih0bXBkaXIpKQotICAgICAgICBhID0gdG1wZGlyLm1rZGlyKCJhIikKLSAg
ICAgICAgYiA9IHRtcGRpci5ta2RpcigiYiIpCi0gICAgICAgIHJvb3RkaXIsIGluaWZpbGUsIGlu
aWNmZyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbYSwgYl0pCi0gICAgICAgIGFzc2VydCByb290
ZGlyID09IHRtcGRpcgotICAgICAgICBhc3NlcnQgaW5pZmlsZSBpcyBOb25lCi0KLSAgICBkZWYg
dGVzdF93aXRoX2FyZ19vdXRzaWRlX2N3ZF93aXRoX2luaWZpbGUoc2VsZiwgdG1wZGlyKToKLSAg
ICAgICAgYSA9IHRtcGRpci5ta2RpcigiYSIpCi0gICAgICAgIGIgPSB0bXBkaXIubWtkaXIoImIi
KQotICAgICAgICBpbmlmaWxlID0gYS5lbnN1cmUoInB5dGVzdC5pbmkiKQotICAgICAgICByb290
ZGlyLCBwYXJzZWRfaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIFthLCBi
XSkKLSAgICAgICAgYXNzZXJ0IHJvb3RkaXIgPT0gYQotICAgICAgICBhc3NlcnQgaW5pZmlsZSA9
PSBwYXJzZWRfaW5pZmlsZQotCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJkaXJzIiwg
KFtdLCBbImRvZXMtbm90LWV4aXN0Il0sIFsiYS9kb2VzLW5vdC1leGlzdCJdKSkKLSAgICBkZWYg
dGVzdF93aXRoX25vbl9kaXJfYXJnKHNlbGYsIGRpcnMsIHRtcGRpcik6Ci0gICAgICAgIHdpdGgg
dG1wZGlyLmVuc3VyZShkaXI9VHJ1ZSkuYXNfY3dkKCk6Ci0gICAgICAgICAgICByb290ZGlyLCBp
bmlmaWxlLCBpbmljZmcgPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgZGlycykKLSAgICAgICAgICAg
IGFzc2VydCByb290ZGlyID09IHRtcGRpcgotICAgICAgICAgICAgYXNzZXJ0IGluaWZpbGUgaXMg
Tm9uZQotCi0gICAgZGVmIHRlc3Rfd2l0aF9leGlzdGluZ19maWxlX2luX3N1YmRpcihzZWxmLCB0
bXBkaXIpOgotICAgICAgICBhID0gdG1wZGlyLm1rZGlyKCJhIikKLSAgICAgICAgYS5lbnN1cmUo
ImV4aXN0IikKLSAgICAgICAgd2l0aCB0bXBkaXIuYXNfY3dkKCk6Ci0gICAgICAgICAgICByb290
ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgWyJhL2V4aXN0Il0p
Ci0gICAgICAgICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBkaXIKLSAgICAgICAgICAgIGFzc2Vy
dCBpbmlmaWxlIGlzIE5vbmUKLQotICAgIGRlZiB0ZXN0X2FkZG9wdHNfYmVmb3JlX2luaXRpbmko
c2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgIGRlZiB0ZXN0X2FkZG9wdHNfYmVmb3JlX2luaXRpbmko
c2VsZiwgbW9ua2V5cGF0Y2gsIF9jb25maWdfZm9yX3Rlc3QsIF9zeXNfc25hcHNob3QpOgogICAg
ICAgICBjYWNoZV9kaXIgPSAiLmN1c3RvbV9jYWNoZSIKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0
ZW52KCJQWVRFU1RfQURET1BUUyIsICItbyBjYWNoZV9kaXI9JXMiICUgY2FjaGVfZGlyKQotICAg
ICAgICBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBnZXRfY29uZmlnCi0KLSAgICAgICAgY29u
ZmlnID0gZ2V0X2NvbmZpZygpCisgICAgICAgIGNvbmZpZyA9IF9jb25maWdfZm9yX3Rlc3QKICAg
ICAgICAgY29uZmlnLl9wcmVwYXJzZShbXSwgYWRkb3B0cz1UcnVlKQogICAgICAgICBhc3NlcnQg
Y29uZmlnLl9vdmVycmlkZV9pbmkgPT0gWyJjYWNoZV9kaXI9JXMiICUgY2FjaGVfZGlyXQogCi0g
ICAgZGVmIHRlc3Rfb3ZlcnJpZGVfaW5pX2RvZXNfbm90X2NvbnRhaW5fcGF0aHMoc2VsZik6Ci0g
ICAgICAgICIiIkNoZWNrIHRoYXQgLW8gbm8gbG9uZ2VyIHN3YWxsb3dzIGFsbCBvcHRpb25zIGFm
dGVyIGl0ICgjMzEwMykiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgZ2V0
X2NvbmZpZworICAgIGRlZiB0ZXN0X2FkZG9wdHNfZnJvbV9lbnZfbm90X2NvbmNhdGVuYXRlZChz
ZWxmLCBtb25rZXlwYXRjaCwgX2NvbmZpZ19mb3JfdGVzdCk6CisgICAgICAgICIiIlBZVEVTVF9B
RERPUFRTIHNob3VsZCBub3QgdGFrZSB2YWx1ZXMgZnJvbSBub3JtYWwgYXJncyAoIzQyNjUpLiIi
IgorICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEVTVF9BRERPUFRTIiwgIi1vIikKKyAg
ICAgICAgY29uZmlnID0gX2NvbmZpZ19mb3JfdGVzdAorICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoVXNhZ2VFcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIGNvbmZpZy5fcHJlcGFyc2Uo
WyJjYWNoZV9kaXI9aWdub3JlZCJdLCBhZGRvcHRzPVRydWUpCisgICAgICAgIGFzc2VydCAoCisg
ICAgICAgICAgICAiZXJyb3I6IGFyZ3VtZW50IC1vLy0tb3ZlcnJpZGUtaW5pOiBleHBlY3RlZCBv
bmUgYXJndW1lbnQgKHZpYSBQWVRFU1RfQURET1BUUykiCisgICAgICAgICAgICBpbiBleGNpbmZv
LnZhbHVlLmFyZ3NbMF0KKyAgICAgICAgKQogCi0gICAgICAgIGNvbmZpZyA9IGdldF9jb25maWco
KQorICAgIGRlZiB0ZXN0X2FkZG9wdHNfZnJvbV9pbmlfbm90X2NvbmNhdGVuYXRlZChzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgIiIiYGFkZG9wdHNgIGZyb20gaW5pIHNob3VsZCBub3QgdGFrZSB2
YWx1ZXMgZnJvbSBub3JtYWwgYXJncyAoIzQyNjUpLiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vp
bmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICBh
ZGRvcHRzPS1vCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCJjYWNoZV9kaXI9aWdub3JlZCIpCisgICAgICAgIHJlc3VsdC5zdGRlcnIu
Zm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiJXM6IGVycm9y
OiBhcmd1bWVudCAtby8tLW92ZXJyaWRlLWluaTogZXhwZWN0ZWQgb25lIGFyZ3VtZW50ICh2aWEg
YWRkb3B0cyBjb25maWcpIgorICAgICAgICAgICAgICAgICUgKHRlc3RkaXIucmVxdWVzdC5jb25m
aWcuX3BhcnNlci5vcHRwYXJzZXIucHJvZywpCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAg
ICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gX3B5dGVzdC5jb25maWcuRXhpdENvZGUuVVNBR0Vf
RVJST1IKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2luaV9kb2VzX25vdF9jb250YWluX3BhdGhz
KHNlbGYsIF9jb25maWdfZm9yX3Rlc3QsIF9zeXNfc25hcHNob3QpOgorICAgICAgICAiIiJDaGVj
ayB0aGF0IC1vIG5vIGxvbmdlciBzd2FsbG93cyBhbGwgb3B0aW9ucyBhZnRlciBpdCAoIzMxMDMp
IiIiCisgICAgICAgIGNvbmZpZyA9IF9jb25maWdfZm9yX3Rlc3QKICAgICAgICAgY29uZmlnLl9w
cmVwYXJzZShbIi1vIiwgImNhY2hlX2Rpcj0vY2FjaGUiLCAiL3NvbWUvdGVzdC9wYXRoIl0pCiAg
ICAgICAgIGFzc2VydCBjb25maWcuX292ZXJyaWRlX2luaSA9PSBbImNhY2hlX2Rpcj0vY2FjaGUi
XQogCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfb3ZlcnJpZGVfaW5pX29wdGlvbnMoc2VsZiwgdGVz
dGRpciwgcmVxdWVzdCk6CisgICAgZGVmIHRlc3RfbXVsdGlwbGVfb3ZlcnJpZGVfaW5pX29wdGlv
bnMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgICIiIkVuc3VyZSBhIGZpbGUgcGF0aCBmb2xsb3dp
bmcgYSAnLW8nIG9wdGlvbiBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBlcnJvciAoIzMxMDMpIiIiCiAg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICoqewpAQCAtMTA2NiwzICsx
NTk0LDM1NiBAQCBjbGFzcyBUZXN0T3ZlcnJpZGVJbmlBcmdzKG9iamVjdCk6CiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItbyIsICJmb289MSIsICItbyIsICJiYXI9MCIsICJ0
ZXN0X2Zvby5weSIpCiAgICAgICAgIGFzc2VydCAiRVJST1I6IiBub3QgaW4gcmVzdWx0LnN0ZGVy
ci5zdHIoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjb2xsZWN0ZWQg
MSBpdGVtIiwgIio9IDEgcGFzc2VkIGluICo9Il0pCisKKworZGVmIHRlc3RfaGVscF92aWFfYWRk
b3B0cyh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAg
ICBbcHl0ZXN0XQorICAgICAgICBhZGRvcHRzID0gLS11bmtub3duLW9wdGlvbi1zaG91bGQtYWxs
b3ctZm9yLWhlbHAgLS1oZWxwCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAidXNhZ2U6ICoiLAorICAg
ICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnRzOiIsCisgICAgICAgICAgICAjIERpc3BsYXlz
IGZ1bGwvZGVmYXVsdCBoZWxwLgorICAgICAgICAgICAgInRvIHNlZSBhdmFpbGFibGUgbWFya2Vy
cyB0eXBlOiBweXRlc3QgLS1tYXJrZXJzIiwKKyAgICAgICAgXQorICAgICkKKworCitkZWYgdGVz
dF9oZWxwX2FuZF92ZXJzaW9uX2FmdGVyX2FyZ3VtZW50X2Vycm9yKHRlc3RkaXIpOgorICAgIHRl
c3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHZhbGlkYXRlKGFy
Zyk6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigiYXJnZXJy
b3IiKQorCisgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CisgICAgICAgICAg
ICBncm91cCA9IHBhcnNlci5nZXRncm91cCgnY292JykKKyAgICAgICAgICAgIGdyb3VwLmFkZG9w
dGlvbigKKyAgICAgICAgICAgICAgICAiLS1pbnZhbGlkLW9wdGlvbi1zaG91bGQtYWxsb3ctZm9y
LWhlbHAiLAorICAgICAgICAgICAgICAgIHR5cGU9dmFsaWRhdGUsCisgICAgICAgICAgICApCisg
ICAgICAgICIiIgorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAg
ICAgICBbcHl0ZXN0XQorICAgICAgICBhZGRvcHRzID0gLS1pbnZhbGlkLW9wdGlvbi1zaG91bGQt
YWxsb3ctZm9yLWhlbHAKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0taGVscCIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAg
ICBbCisgICAgICAgICAgICAidXNhZ2U6ICoiLAorICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJn
dW1lbnRzOiIsCisgICAgICAgICAgICAiTk9URTogZGlzcGxheWluZyBvbmx5IG1pbmltYWwgaGVs
cCBkdWUgdG8gVXNhZ2VFcnJvci4iLAorICAgICAgICBdCisgICAgKQorICAgIHJlc3VsdC5zdGRl
cnIuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIkVSUk9SOiB1c2FnZTog
KiIsCisgICAgICAgICAgICAiJXM6IGVycm9yOiBhcmd1bWVudCAtLWludmFsaWQtb3B0aW9uLXNo
b3VsZC1hbGxvdy1mb3ItaGVscDogZXhwZWN0ZWQgb25lIGFyZ3VtZW50IgorICAgICAgICAgICAg
JSAodGVzdGRpci5yZXF1ZXN0LmNvbmZpZy5fcGFyc2VyLm9wdHBhcnNlci5wcm9nLCksCisgICAg
ICAgIF0KKyAgICApCisgICAgIyBEb2VzIG5vdCBkaXNwbGF5IGZ1bGwvZGVmYXVsdCBoZWxwLgor
ICAgIGFzc2VydCAidG8gc2VlIGF2YWlsYWJsZSBtYXJrZXJzIHR5cGU6IHB5dGVzdCAtLW1hcmtl
cnMiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LmxpbmVzCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
RXhpdENvZGUuVVNBR0VfRVJST1IKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
LXZlcnNpb24iKQorICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbInB5dGVzdCB7fSIu
Zm9ybWF0KHB5dGVzdC5fX3ZlcnNpb25fXyldKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4
aXRDb2RlLlVTQUdFX0VSUk9SCisKKworZGVmIHRlc3RfaGVscF9mb3JtYXR0ZXJfdXNlc19weV9n
ZXRfdGVybWluYWxfd2lkdGgobW9ua2V5cGF0Y2gpOgorICAgIGZyb20gX3B5dGVzdC5jb25maWcu
YXJncGFyc2luZyBpbXBvcnQgRHJvcFNob3J0ZXJMb25nSGVscEZvcm1hdHRlcgorCisgICAgbW9u
a2V5cGF0Y2guc2V0ZW52KCJDT0xVTU5TIiwgIjkwIikKKyAgICBmb3JtYXR0ZXIgPSBEcm9wU2hv
cnRlckxvbmdIZWxwRm9ybWF0dGVyKCJwcm9nIikKKyAgICBhc3NlcnQgZm9ybWF0dGVyLl93aWR0
aCA9PSA5MAorCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigiX3B5dGVzdC5faW8uZ2V0X3Rlcm1p
bmFsX3dpZHRoIiwgbGFtYmRhOiAxNjApCisgICAgZm9ybWF0dGVyID0gRHJvcFNob3J0ZXJMb25n
SGVscEZvcm1hdHRlcigicHJvZyIpCisgICAgYXNzZXJ0IGZvcm1hdHRlci5fd2lkdGggPT0gMTYw
CisKKyAgICBmb3JtYXR0ZXIgPSBEcm9wU2hvcnRlckxvbmdIZWxwRm9ybWF0dGVyKCJwcm9nIiwg
d2lkdGg9NDIpCisgICAgYXNzZXJ0IGZvcm1hdHRlci5fd2lkdGggPT0gNDIKKworCitkZWYgdGVz
dF9jb25maWdfZG9lc19ub3RfbG9hZF9ibG9ja2VkX3BsdWdpbl9mcm9tX2FyZ3ModGVzdGRpcik6
CisgICAgIiIiVGhpcyB0ZXN0cyB0aGF0IHB5dGVzdCdzIGNvbmZpZyBzZXR1cCBoYW5kbGVzICIt
cCBubzpYIi4iIiIKKyAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdChjYXBmZCk6
IHBhc3MiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0cihwKSwgIi1wbm86Y2Fw
dHVyZSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiRSAgICAgICBmaXh0dXJl
ICdjYXBmZCcgbm90IGZvdW5kIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUu
VEVTVFNfRkFJTEVECisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocCksICIt
cG5vOmNhcHR1cmUiLCAiLXMiKQorICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIio6
IGVycm9yOiB1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAtcyJdKQorICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEV4aXRDb2RlLlVTQUdFX0VSUk9SCisKKworZGVmIHRlc3RfaW52b2NhdGlvbl9hcmdz
KHRlc3RkaXIpOgorICAgICIiIkVuc3VyZSB0aGF0IENvbmZpZy5pbnZvY2F0aW9uXyogYXJndW1l
bnRzIGFyZSBjb3JyZWN0bHkgZGVmaW5lZCIiIgorCisgICAgY2xhc3MgRHVtbXlQbHVnaW46Cisg
ICAgICAgIHBhc3MKKworICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0KCk6IHBh
c3MiKQorICAgIHBsdWdpbiA9IER1bW15UGx1Z2luKCkKKyAgICByZWMgPSB0ZXN0ZGlyLmlubGlu
ZV9ydW4ocCwgIi12IiwgcGx1Z2lucz1bcGx1Z2luXSkKKyAgICBjYWxscyA9IHJlYy5nZXRjYWxs
cygicHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2wiKQorICAgIGFzc2VydCBsZW4oY2FsbHMpID09IDEK
KyAgICBjYWxsID0gY2FsbHNbMF0KKyAgICBjb25maWcgPSBjYWxsLml0ZW0uY29uZmlnCisKKyAg
ICBhc3NlcnQgY29uZmlnLmludm9jYXRpb25fcGFyYW1zLmFyZ3MgPT0gKHAsICItdiIpCisgICAg
YXNzZXJ0IGNvbmZpZy5pbnZvY2F0aW9uX3BhcmFtcy5kaXIgPT0gUGF0aChzdHIodGVzdGRpci50
bXBkaXIpKQorCisgICAgcGx1Z2lucyA9IGNvbmZpZy5pbnZvY2F0aW9uX3BhcmFtcy5wbHVnaW5z
CisgICAgYXNzZXJ0IGxlbihwbHVnaW5zKSA9PSAyCisgICAgYXNzZXJ0IHBsdWdpbnNbMF0gaXMg
cGx1Z2luCisgICAgYXNzZXJ0IHR5cGUocGx1Z2luc1sxXSkuX19uYW1lX18gPT0gIkNvbGxlY3Qi
ICAjIGluc3RhbGxlZCBieSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorCisgICAgIyBhcmdzIGNhbm5v
dCBiZSBOb25lCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIENv
bmZpZy5JbnZvY2F0aW9uUGFyYW1zKGFyZ3M9Tm9uZSwgcGx1Z2lucz1Ob25lLCBkaXI9UGF0aCgp
KSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KAorICAgICJwbHVnaW4iLAorICAgIFsKKyAgICAgICAgeAorICAgICAgICBmb3IgeCBpbiBfcHl0
ZXN0LmNvbmZpZy5kZWZhdWx0X3BsdWdpbnMKKyAgICAgICAgaWYgeCBub3QgaW4gX3B5dGVzdC5j
b25maWcuZXNzZW50aWFsX3BsdWdpbnMKKyAgICBdLAorKQorZGVmIHRlc3RfY29uZmlnX2Jsb2Nr
ZWRfZGVmYXVsdF9wbHVnaW5zKHRlc3RkaXIsIHBsdWdpbik6CisgICAgaWYgcGx1Z2luID09ICJk
ZWJ1Z2dpbmciOgorICAgICAgICAjIEZpeGVkIGluIHhkaXN0IG1hc3RlciAoYWZ0ZXIgMS4yNy4w
KS4KKyAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QteGRpc3Qv
cHVsbC80MjIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHhkaXN0ICAjIG5vcWE6
IEY0MDEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcHl0ZXN0LnNraXAoImRvZXMgbm90IHdvcmsgd2l0aCB4
ZGlzdCBjdXJyZW50bHkiKQorCisgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3Qo
KTogcGFzcyIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3RyKHApLCAiLXBubzol
cyIgJSBwbHVnaW4pCisKKyAgICBpZiBwbHVnaW4gPT0gInB5dGhvbiI6CisgICAgICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IEV4aXRDb2RlLlVTQUdFX0VSUk9SCisgICAgICAgIHJlc3VsdC5zdGRl
cnIuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiRVJST1I6
IG5vdCBmb3VuZDogKi90ZXN0X2NvbmZpZ19ibG9ja2VkX2RlZmF1bHRfcGx1Z2lucy5weSIsCisg
ICAgICAgICAgICAgICAgIihubyBuYW1lICcqL3Rlc3RfY29uZmlnX2Jsb2NrZWRfZGVmYXVsdF9w
bHVnaW5zLnB5JyBpbiBhbnkgb2YgW10pIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorICAg
ICAgICByZXR1cm4KKworICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk9LCisgICAg
aWYgcGx1Z2luICE9ICJ0ZXJtaW5hbCI6CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiogMSBwYXNzZWQgaW4gKiJdKQorCisgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgi
ZGVmIHRlc3QoKTogYXNzZXJ0IDAiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0
cihwKSwgIi1wbm86JXMiICUgcGx1Z2luKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRD
b2RlLlRFU1RTX0ZBSUxFRAorICAgIGlmIHBsdWdpbiAhPSAidGVybWluYWwiOgorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEgZmFpbGVkIGluICoiXSkKKyAgICBlbHNl
OgorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lcyA9PSBbXQorCisKK2NsYXNzIFRl
c3RTZXR1cENmZzoKKyAgICBkZWYgdGVzdF9weXRlc3Rfc2V0dXBfY2ZnX3Vuc3VwcG9ydGVkKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VmaWxlKAorICAgICAgICAgICAgIi5j
ZmciLAorICAgICAgICAgICAgc2V0dXA9IiIiCisgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAg
ICAgICAgYWRkb3B0cyA9IC0tdmVyYm9zZQorICAgICAgICAiIiIsCisgICAgICAgICkKKyAgICAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6CisgICAgICAgICAg
ICB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisKKyAgICBkZWYgdGVzdF9weXRlc3RfY3VzdG9tX2NmZ191
bnN1cHBvcnRlZChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlZmlsZSgKKyAg
ICAgICAgICAgICIuY2ZnIiwKKyAgICAgICAgICAgIGN1c3RvbT0iIiIKKyAgICAgICAgICAgIFtw
eXRlc3RdCisgICAgICAgICAgICBhZGRvcHRzID0gLS12ZXJib3NlCisgICAgICAgICIiIiwKKyAg
ICAgICAgKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9u
KToKKyAgICAgICAgICAgIHRlc3RkaXIucnVucHl0ZXN0KCItYyIsICJjdXN0b20uY2ZnIikKKwor
CitjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luc1ZhcmlhYmxlOgorICAgIGRlZiB0ZXN0X3B5dGVzdF9w
bHVnaW5zX2luX25vbl90b3BfbGV2ZWxfY29uZnRlc3RfdW5zdXBwb3J0ZWQoc2VsZiwgdGVzdGRp
cik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICoqeworICAgICAg
ICAgICAgICAgICJzdWJkaXJlY3RvcnkvY29uZnRlc3QucHkiOiAiIiIKKyAgICAgICAgICAgIHB5
dGVzdF9wbHVnaW5zPVsnY2FwdHVyZSddCisgICAgICAgICIiIgorICAgICAgICAgICAgfQorICAg
ICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAg
IiIiCisgICAgICAgICkKKyAgICAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAg
ICBhc3NlcnQgcmVzLnJldCA9PSAyCisgICAgICAgIG1zZyA9ICJEZWZpbmluZyAncHl0ZXN0X3Bs
dWdpbnMnIGluIGEgbm9uLXRvcC1sZXZlbCBjb25mdGVzdCBpcyBubyBsb25nZXIgc3VwcG9ydGVk
IgorICAgICAgICByZXMuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgIip7bXNnfSoiLmZvcm1hdChtc2c9bXNnKSwKKyAgICAgICAgICAgICAgICAi
KnN1YmRpcmVjdG9yeXtzZXB9Y29uZnRlc3QucHkqIi5mb3JtYXQoc2VwPW9zLnNlcCksCisgICAg
ICAgICAgICBdCisgICAgICAgICkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidXNl
X3B5YXJncyIsIFtUcnVlLCBGYWxzZV0pCisgICAgZGVmIHRlc3RfcHl0ZXN0X3BsdWdpbnNfaW5f
bm9uX3RvcF9sZXZlbF9jb25mdGVzdF91bnN1cHBvcnRlZF9weWFyZ3MoCisgICAgICAgIHNlbGYs
IHRlc3RkaXIsIHVzZV9weWFyZ3MKKyAgICApOgorICAgICAgICAiIiJXaGVuIHVzaW5nIC0tcHlh
cmdzLCBkbyBub3QgZW1pdCB0aGUgd2FybmluZyBhYm91dCBub24tdG9wLWxldmVsIGNvbmZ0ZXN0
IHdhcm5pbmdzICgjNDAzOSwgIzQwNDQpIiIiCisKKyAgICAgICAgZmlsZXMgPSB7CisgICAgICAg
ICAgICAic3JjL3BrZy9fX2luaXRfXy5weSI6ICIiLAorICAgICAgICAgICAgInNyYy9wa2cvY29u
ZnRlc3QucHkiOiAiIiwKKyAgICAgICAgICAgICJzcmMvcGtnL3Rlc3Rfcm9vdC5weSI6ICJkZWYg
dGVzdCgpOiBwYXNzIiwKKyAgICAgICAgICAgICJzcmMvcGtnL3N1Yi9fX2luaXRfXy5weSI6ICIi
LAorICAgICAgICAgICAgInNyYy9wa2cvc3ViL2NvbmZ0ZXN0LnB5IjogInB5dGVzdF9wbHVnaW5z
PVsnY2FwdHVyZSddIiwKKyAgICAgICAgICAgICJzcmMvcGtnL3N1Yi90ZXN0X2Jhci5weSI6ICJk
ZWYgdGVzdCgpOiBwYXNzIiwKKyAgICAgICAgfQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
KipmaWxlcykKKyAgICAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KHRlc3RkaXIudG1wZGlyLmpv
aW4oInNyYyIpKQorCisgICAgICAgIGFyZ3MgPSAoIi0tcHlhcmdzIiwgInBrZyIpIGlmIHVzZV9w
eWFyZ3MgZWxzZSAoKQorICAgICAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgqYXJncykKKyAg
ICAgICAgYXNzZXJ0IHJlcy5yZXQgPT0gKDAgaWYgdXNlX3B5YXJncyBlbHNlIDIpCisgICAgICAg
IG1zZyA9ICgKKyAgICAgICAgICAgIG1zZworICAgICAgICApID0gIkRlZmluaW5nICdweXRlc3Rf
cGx1Z2lucycgaW4gYSBub24tdG9wLWxldmVsIGNvbmZ0ZXN0IGlzIG5vIGxvbmdlciBzdXBwb3J0
ZWQiCisgICAgICAgIGlmIHVzZV9weWFyZ3M6CisgICAgICAgICAgICBhc3NlcnQgbXNnIG5vdCBp
biByZXMuc3Rkb3V0LnN0cigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXMuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqe21zZ30qIi5mb3JtYXQobXNnPW1zZyldKQorCisgICAgZGVmIHRl
c3RfcHl0ZXN0X3BsdWdpbnNfaW5fbm9uX3RvcF9sZXZlbF9jb25mdGVzdF91bnN1cHBvcnRlZF9u
b190b3BfbGV2ZWxfY29uZnRlc3QoCisgICAgICAgIHNlbGYsIHRlc3RkaXIKKyAgICApOgorICAg
ICAgICBzdWJkaXJlY3RvcnkgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJzdWJkaXJlY3RvcnkiKQor
ICAgICAgICBzdWJkaXJlY3RvcnkubWtkaXIoKQorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVz
dCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgcHl0ZXN0X3BsdWdpbnM9WydjYXB0dXJl
J10KKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigi
Y29uZnRlc3QucHkiKS5tb3ZlKHN1YmRpcmVjdG9yeS5qb2luKCJjb25mdGVzdC5weSIpKQorCisg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
ZGVmIHRlc3RfZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKworICAgICAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKKyAg
ICAgICAgYXNzZXJ0IHJlcy5yZXQgPT0gMgorICAgICAgICBtc2cgPSAiRGVmaW5pbmcgJ3B5dGVz
dF9wbHVnaW5zJyBpbiBhIG5vbi10b3AtbGV2ZWwgY29uZnRlc3QgaXMgbm8gbG9uZ2VyIHN1cHBv
cnRlZCIKKyAgICAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICIqe21zZ30qIi5mb3JtYXQobXNnPW1zZyksCisgICAgICAgICAgICAg
ICAgIipzdWJkaXJlY3Rvcnl7c2VwfWNvbmZ0ZXN0LnB5KiIuZm9ybWF0KHNlcD1vcy5zZXApLAor
ICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9weXRlc3RfcGx1Z2luc19p
bl9ub25fdG9wX2xldmVsX2NvbmZ0ZXN0X3Vuc3VwcG9ydGVkX25vX2ZhbHNlX3Bvc2l0aXZlcygK
KyAgICAgICAgc2VsZiwgdGVzdGRpcgorICAgICk6CisgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiLAorICAgICAgICAgICAgKip7
CisgICAgICAgICAgICAgICAgInN1YmRpcmVjdG9yeS9jb25mdGVzdCI6ICJwYXNzIiwKKyAgICAg
ICAgICAgICAgICAiY29uZnRlc3QiOiAiIiIKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdh
cm5pbmdzCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdhbHdh
eXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgIHB5
dGVzdF9wbHVnaW5zPVsnY2FwdHVyZSddCisgICAgICAgICAgICAgICAgICAgICIiIiwKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICkKKyAgICAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3Rfc3Vi
cHJvY2VzcygpCisgICAgICAgIGFzc2VydCByZXMucmV0ID09IDAKKyAgICAgICAgbXNnID0gIkRl
ZmluaW5nICdweXRlc3RfcGx1Z2lucycgaW4gYSBub24tdG9wLWxldmVsIGNvbmZ0ZXN0IGlzIG5v
IGxvbmdlciBzdXBwb3J0ZWQiCisgICAgICAgIGFzc2VydCBtc2cgbm90IGluIHJlcy5zdGRvdXQu
c3RyKCkKKworCitkZWYgdGVzdF9jb25mdGVzdF9pbXBvcnRfZXJyb3JfcmVwcih0bXBkaXIpOgor
ICAgICIiImBDb25mdGVzdEltcG9ydEZhaWx1cmVgIHNob3VsZCB1c2UgYSBzaG9ydCBlcnJvciBt
ZXNzYWdlIGFuZCByZWFkYWJsZQorICAgIHBhdGggdG8gdGhlIGZhaWxlZCBjb25mdGVzdC5weSBm
aWxlLiIiIgorICAgIHBhdGggPSB0bXBkaXIuam9pbigiZm9vL2NvbmZ0ZXN0LnB5IikKKyAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgIENvbmZ0ZXN0SW1wb3J0RmFpbHVyZSwKKyAgICAg
ICAgbWF0Y2g9cmUuZXNjYXBlKCJSdW50aW1lRXJyb3I6IHNvbWUgZXJyb3IgKGZyb20ge30pIi5m
b3JtYXQocGF0aCkpLAorICAgICk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcigic29tZSBlcnJvciIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhj
OgorICAgICAgICAgICAgYXNzZXJ0IGV4Yy5fX3RyYWNlYmFja19fIGlzIG5vdCBOb25lCisgICAg
ICAgICAgICBleGNfaW5mbyA9ICh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pCisg
ICAgICAgICAgICByYWlzZSBDb25mdGVzdEltcG9ydEZhaWx1cmUocGF0aCwgZXhjX2luZm8pIGZy
b20gZXhjCisKKworZGVmIHRlc3Rfc3RydG9ib29sKCk6CisgICAgYXNzZXJ0IF9zdHJ0b2Jvb2wo
IllFUyIpCisgICAgYXNzZXJ0IG5vdCBfc3RydG9ib29sKCJOTyIpCisgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICBfc3RydG9ib29sKCJ1bmtub3duIikKKworCitA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgImFyZywgZXNjYXBlLCBleHBlY3RlZCIsCisg
ICAgWworICAgICAgICAoImlnbm9yZSIsIEZhbHNlLCAoImlnbm9yZSIsICIiLCBXYXJuaW5nLCAi
IiwgMCkpLAorICAgICAgICAoCisgICAgICAgICAgICAiaWdub3JlOjpEZXByZWNhdGlvbldhcm5p
bmciLAorICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICAoImlnbm9yZSIsICIiLCBEZXBy
ZWNhdGlvbldhcm5pbmcsICIiLCAwKSwKKyAgICAgICAgKSwKKyAgICAgICAgKAorICAgICAgICAg
ICAgImlnbm9yZTpzb21lIG1zZzpEZXByZWNhdGlvbldhcm5pbmciLAorICAgICAgICAgICAgRmFs
c2UsCisgICAgICAgICAgICAoImlnbm9yZSIsICJzb21lIG1zZyIsIERlcHJlY2F0aW9uV2Fybmlu
ZywgIiIsIDApLAorICAgICAgICApLAorICAgICAgICAoCisgICAgICAgICAgICAiaWdub3JlOjpE
ZXByZWNhdGlvbldhcm5pbmc6bW9kIiwKKyAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAgICAg
KCJpZ25vcmUiLCAiIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAibW9kIiwgMCksCisgICAgICAgICks
CisgICAgICAgICgKKyAgICAgICAgICAgICJpZ25vcmU6OkRlcHJlY2F0aW9uV2FybmluZzptb2Q6
NDIiLAorICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICAoImlnbm9yZSIsICIiLCBEZXBy
ZWNhdGlvbldhcm5pbmcsICJtb2QiLCA0MiksCisgICAgICAgICksCisgICAgICAgICgiZXJyb3I6
c29tZVxcbXNnOjo6IiwgVHJ1ZSwgKCJlcnJvciIsICJzb21lXFxcXG1zZyIsIFdhcm5pbmcsICIi
LCAwKSksCisgICAgICAgICgiZXJyb3I6Ojptb2RcXGZvbzoiLCBUcnVlLCAoImVycm9yIiwgIiIs
IFdhcm5pbmcsICJtb2RcXFxcZm9vXFxaIiwgMCkpLAorICAgIF0sCispCitkZWYgdGVzdF9wYXJz
ZV93YXJuaW5nX2ZpbHRlcigKKyAgICBhcmc6IHN0ciwgZXNjYXBlOiBib29sLCBleHBlY3RlZDog
IlR1cGxlW3N0ciwgc3RyLCBUeXBlW1dhcm5pbmddLCBzdHIsIGludF0iCispIC0+IE5vbmU6Cisg
ICAgYXNzZXJ0IHBhcnNlX3dhcm5pbmdfZmlsdGVyKGFyZywgZXNjYXBlPWVzY2FwZSkgPT0gZXhw
ZWN0ZWQKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFyZyIsIFsiOiIgKiA1LCAiOjo6
Oi0xIiwgIjo6Ojpub3QtYS1udW1iZXIiXSkKK2RlZiB0ZXN0X3BhcnNlX3dhcm5pbmdfZmlsdGVy
X2ZhaWx1cmUoYXJnOiBzdHIpIC0+IE5vbmU6CisgICAgaW1wb3J0IHdhcm5pbmdzCisKKyAgICB3
aXRoIHB5dGVzdC5yYWlzZXMod2FybmluZ3MuX09wdGlvbkVycm9yKToKKyAgICAgICAgcGFyc2Vf
d2FybmluZ19maWx0ZXIoYXJnLCBlc2NhcGU9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9jb25mdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb25m
dGVzdC5weQppbmRleCA2MWI2NDA5NzZmMTEuLjVhNDc2NDA4MDEzMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbmZ0ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9jb25mdGVzdC5weQpAQCAtMSwyNCArMSwxMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotZnJvbSB0ZXh0
d3JhcCBpbXBvcnQgZGVkZW50CitpbXBvcnQgb3MKK2ltcG9ydCB0ZXh0d3JhcAogCi1pbXBvcnQg
X3B5dGVzdC5fY29kZQogaW1wb3J0IHB5CisKIGltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5j
b25maWcgaW1wb3J0IEV4aXRDb2RlCiBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBQeXRlc3RQ
bHVnaW5NYW5hZ2VyCi1mcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgRVhJVF9OT1RFU1RTQ09MTEVD
VEVELCBFWElUX1VTQUdFRVJST1IKLQotCi1AcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIs
IHBhcmFtcz1bImdsb2JhbCIsICJpbnBhY2thZ2UiXSkKLWRlZiBiYXNlZGlyKHJlcXVlc3QsIHRt
cGRpcl9mYWN0b3J5KToKLSAgICBmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCB0bXBkaXIKLQot
ICAgIHRtcGRpciA9IHRtcGRpcihyZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSkKLSAgICB0bXBkaXIu
ZW5zdXJlKCJhZGlyL2NvbmZ0ZXN0LnB5Iikud3JpdGUoImE9MSA7IERpcmVjdG9yeSA9IDMiKQot
ICAgIHRtcGRpci5lbnN1cmUoImFkaXIvYi9jb25mdGVzdC5weSIpLndyaXRlKCJiPTIgOyBhID0g
MS41IikKLSAgICBpZiByZXF1ZXN0LnBhcmFtID09ICJpbnBhY2thZ2UiOgotICAgICAgICB0bXBk
aXIuZW5zdXJlKCJhZGlyL19faW5pdF9fLnB5IikKLSAgICAgICAgdG1wZGlyLmVuc3VyZSgiYWRp
ci9iL19faW5pdF9fLnB5IikKLSAgICByZXR1cm4gdG1wZGlyCitmcm9tIF9weXRlc3QucGF0aGxp
YiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IHN5bWxpbmtfb3Jfc2tp
cAogCiAKIGRlZiBDb25mdGVzdFdpdGhTZXRpbml0aWFsKHBhdGgpOgpAQCAtMjgsNTggKzE3LDcy
IEBAIGRlZiBDb25mdGVzdFdpdGhTZXRpbml0aWFsKHBhdGgpOgogCiAKIGRlZiBjb25mdGVzdF9z
ZXRpbml0aWFsKGNvbmZ0ZXN0LCBhcmdzLCBjb25mY3V0ZGlyPU5vbmUpOgotCi0gICAgY2xhc3Mg
TmFtZXNwYWNlKG9iamVjdCk6Ci0KKyAgICBjbGFzcyBOYW1lc3BhY2U6CiAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKICAgICAgICAgICAgIHNlbGYuZmlsZV9vcl9kaXIgPSBhcmdzCiAgICAg
ICAgICAgICBzZWxmLmNvbmZjdXRkaXIgPSBzdHIoY29uZmN1dGRpcikKICAgICAgICAgICAgIHNl
bGYubm9jb25mdGVzdCA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLnB5YXJncyA9IEZhbHNlCisg
ICAgICAgICAgICBzZWxmLmltcG9ydG1vZGUgPSAicHJlcGVuZCIKIAogICAgIGNvbmZ0ZXN0Ll9z
ZXRfaW5pdGlhbF9jb25mdGVzdHMoTmFtZXNwYWNlKCkpCiAKIAotY2xhc3MgVGVzdENvbmZ0ZXN0
VmFsdWVBY2Nlc3NHbG9iYWwob2JqZWN0KToKK0BweXRlc3QubWFyay51c2VmaXh0dXJlcygiX3N5
c19zbmFwc2hvdCIpCitjbGFzcyBUZXN0Q29uZnRlc3RWYWx1ZUFjY2Vzc0dsb2JhbDoKKyAgICBA
cHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIsIHBhcmFtcz1bImdsb2JhbCIsICJpbnBhY2th
Z2UiXSkKKyAgICBkZWYgYmFzZWRpcihzZWxmLCByZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSk6Cisg
ICAgICAgIHRtcGRpciA9IHRtcGRpcl9mYWN0b3J5Lm1rdGVtcCgiYmFzZWRpciIsIG51bWJlcmVk
PVRydWUpCisgICAgICAgIHRtcGRpci5lbnN1cmUoImFkaXIvY29uZnRlc3QucHkiKS53cml0ZSgi
YT0xIDsgRGlyZWN0b3J5ID0gMyIpCisgICAgICAgIHRtcGRpci5lbnN1cmUoImFkaXIvYi9jb25m
dGVzdC5weSIpLndyaXRlKCJiPTIgOyBhID0gMS41IikKKyAgICAgICAgaWYgcmVxdWVzdC5wYXJh
bSA9PSAiaW5wYWNrYWdlIjoKKyAgICAgICAgICAgIHRtcGRpci5lbnN1cmUoImFkaXIvX19pbml0
X18ucHkiKQorICAgICAgICAgICAgdG1wZGlyLmVuc3VyZSgiYWRpci9iL19faW5pdF9fLnB5IikK
KworICAgICAgICB5aWVsZCB0bXBkaXIKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX2luaXQoc2VsZiwg
YmFzZWRpcik6CiAgICAgICAgIGNvbmZ0ZXN0ID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAg
ICAgIHAgPSBiYXNlZGlyLmpvaW4oImFkaXIiKQotICAgICAgICBhc3NlcnQgY29uZnRlc3QuX3Jn
ZXRfd2l0aF9jb25mbW9kKCJhIiwgcClbMV0gPT0gMQorICAgICAgICBhc3NlcnQgY29uZnRlc3Qu
X3JnZXRfd2l0aF9jb25mbW9kKCJhIiwgcCwgaW1wb3J0bW9kZT0icHJlcGVuZCIpWzFdID09IDEK
IAogICAgIGRlZiB0ZXN0X2ltbWVkaWF0ZV9pbml0aWFsaWF0aW9uX2FuZF9pbmNyZW1lbnRhbF9h
cmVfdGhlX3NhbWUoc2VsZiwgYmFzZWRpcik6CiAgICAgICAgIGNvbmZ0ZXN0ID0gUHl0ZXN0UGx1
Z2luTWFuYWdlcigpCi0gICAgICAgIGxlbihjb25mdGVzdC5fcGF0aDJjb25mbW9kcykKLSAgICAg
ICAgY29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhiYXNlZGlyKQotICAgICAgICBzbmFwMSA9
IGxlbihjb25mdGVzdC5fcGF0aDJjb25mbW9kcykKLSAgICAgICAgIyBhc3NlcnQgbGVuKGNvbmZ0
ZXN0Ll9wYXRoMmNvbmZtb2RzKSA9PSBzbmFwMSArIDEKLSAgICAgICAgY29uZnRlc3QuX2dldGNv
bmZ0ZXN0bW9kdWxlcyhiYXNlZGlyLmpvaW4oImFkaXIiKSkKLSAgICAgICAgYXNzZXJ0IGxlbihj
b25mdGVzdC5fcGF0aDJjb25mbW9kcykgPT0gc25hcDEgKyAxCi0gICAgICAgIGNvbmZ0ZXN0Ll9n
ZXRjb25mdGVzdG1vZHVsZXMoYmFzZWRpci5qb2luKCJiIikpCi0gICAgICAgIGFzc2VydCBsZW4o
Y29uZnRlc3QuX3BhdGgyY29uZm1vZHMpID09IHNuYXAxICsgMgorICAgICAgICBhc3NlcnQgbm90
IGxlbihjb25mdGVzdC5fZGlycGF0aDJjb25mbW9kcykKKyAgICAgICAgY29uZnRlc3QuX2dldGNv
bmZ0ZXN0bW9kdWxlcyhiYXNlZGlyLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKKyAgICAgICAgc25h
cDEgPSBsZW4oY29uZnRlc3QuX2RpcnBhdGgyY29uZm1vZHMpCisgICAgICAgIGFzc2VydCBzbmFw
MSA9PSAxCisgICAgICAgIGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoYmFzZWRpci5qb2lu
KCJhZGlyIiksIGltcG9ydG1vZGU9InByZXBlbmQiKQorICAgICAgICBhc3NlcnQgbGVuKGNvbmZ0
ZXN0Ll9kaXJwYXRoMmNvbmZtb2RzKSA9PSBzbmFwMSArIDEKKyAgICAgICAgY29uZnRlc3QuX2dl
dGNvbmZ0ZXN0bW9kdWxlcyhiYXNlZGlyLmpvaW4oImIiKSwgaW1wb3J0bW9kZT0icHJlcGVuZCIp
CisgICAgICAgIGFzc2VydCBsZW4oY29uZnRlc3QuX2RpcnBhdGgyY29uZm1vZHMpID09IHNuYXAx
ICsgMgogCiAgICAgZGVmIHRlc3RfdmFsdWVfYWNjZXNzX25vdF9leGlzdGluZyhzZWxmLCBiYXNl
ZGlyKToKICAgICAgICAgY29uZnRlc3QgPSBDb25mdGVzdFdpdGhTZXRpbml0aWFsKGJhc2VkaXIp
CiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhLZXlFcnJvcik6Ci0gICAgICAgICAgICBjb25m
dGVzdC5fcmdldF93aXRoX2NvbmZtb2QoImEiLCBiYXNlZGlyKQorICAgICAgICAgICAgY29uZnRl
c3QuX3JnZXRfd2l0aF9jb25mbW9kKCJhIiwgYmFzZWRpciwgaW1wb3J0bW9kZT0icHJlcGVuZCIp
CiAKICAgICBkZWYgdGVzdF92YWx1ZV9hY2Nlc3NfYnlfcGF0aChzZWxmLCBiYXNlZGlyKToKICAg
ICAgICAgY29uZnRlc3QgPSBDb25mdGVzdFdpdGhTZXRpbml0aWFsKGJhc2VkaXIpCiAgICAgICAg
IGFkaXIgPSBiYXNlZGlyLmpvaW4oImFkaXIiKQotICAgICAgICBhc3NlcnQgY29uZnRlc3QuX3Jn
ZXRfd2l0aF9jb25mbW9kKCJhIiwgYWRpcilbMV0gPT0gMQotICAgICAgICBhc3NlcnQgY29uZnRl
c3QuX3JnZXRfd2l0aF9jb25mbW9kKCJhIiwgYWRpci5qb2luKCJiIikpWzFdID09IDEuNQorICAg
ICAgICBhc3NlcnQgY29uZnRlc3QuX3JnZXRfd2l0aF9jb25mbW9kKCJhIiwgYWRpciwgaW1wb3J0
bW9kZT0icHJlcGVuZCIpWzFdID09IDEKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIGNv
bmZ0ZXN0Ll9yZ2V0X3dpdGhfY29uZm1vZCgiYSIsIGFkaXIuam9pbigiYiIpLCBpbXBvcnRtb2Rl
PSJwcmVwZW5kIilbMV0KKyAgICAgICAgICAgID09IDEuNQorICAgICAgICApCiAKICAgICBkZWYg
dGVzdF92YWx1ZV9hY2Nlc3Nfd2l0aF9jb25mbW9kKHNlbGYsIGJhc2VkaXIpOgogICAgICAgICBz
dGFydGRpciA9IGJhc2VkaXIuam9pbigiYWRpciIsICJiIikKICAgICAgICAgc3RhcnRkaXIuZW5z
dXJlKCJ4eCIsIGRpcj1UcnVlKQogICAgICAgICBjb25mdGVzdCA9IENvbmZ0ZXN0V2l0aFNldGlu
aXRpYWwoc3RhcnRkaXIpCi0gICAgICAgIG1vZCwgdmFsdWUgPSBjb25mdGVzdC5fcmdldF93aXRo
X2NvbmZtb2QoImEiLCBzdGFydGRpcikKKyAgICAgICAgbW9kLCB2YWx1ZSA9IGNvbmZ0ZXN0Ll9y
Z2V0X3dpdGhfY29uZm1vZCgiYSIsIHN0YXJ0ZGlyLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKICAg
ICAgICAgYXNzZXJ0IHZhbHVlID09IDEuNQogICAgICAgICBwYXRoID0gcHkucGF0aC5sb2NhbCht
b2QuX19maWxlX18pCiAgICAgICAgIGFzc2VydCBwYXRoLmRpcnBhdGgoKSA9PSBiYXNlZGlyLmpv
aW4oImFkaXIiLCAiYiIpCiAgICAgICAgIGFzc2VydCBwYXRoLnB1cmViYXNlbmFtZS5zdGFydHN3
aXRoKCJjb25mdGVzdCIpCiAKIAotZGVmIHRlc3RfY29uZnRlc3RfaW5fbm9ucGtnX3dpdGhfaW5p
dCh0bXBkaXIpOgorZGVmIHRlc3RfY29uZnRlc3RfaW5fbm9ucGtnX3dpdGhfaW5pdCh0bXBkaXIs
IF9zeXNfc25hcHNob3QpOgogICAgIHRtcGRpci5lbnN1cmUoImFkaXItMS4wL2NvbmZ0ZXN0LnB5
Iikud3JpdGUoImE9MSA7IERpcmVjdG9yeSA9IDMiKQogICAgIHRtcGRpci5lbnN1cmUoImFkaXIt
MS4wL2IvY29uZnRlc3QucHkiKS53cml0ZSgiYj0yIDsgYSA9IDEuNSIpCiAgICAgdG1wZGlyLmVu
c3VyZSgiYWRpci0xLjAvYi9fX2luaXRfXy5weSIpCkBAIC05Miw3ICs5NSw3IEBAIGRlZiB0ZXN0
X2RvdWJsZWRhc2hfY29uc2lkZXJlZCh0ZXN0ZGlyKToKICAgICBjb25mLmVuc3VyZSgiY29uZnRl
c3QucHkiKQogICAgIGNvbmZ0ZXN0ID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAgY29uZnRl
c3Rfc2V0aW5pdGlhbChjb25mdGVzdCwgW2NvbmYuYmFzZW5hbWUsIGNvbmYuYmFzZW5hbWVdKQot
ICAgIHZhbHVlcyA9IGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoY29uZikKKyAgICB2YWx1
ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGNvbmYsIGltcG9ydG1vZGU9InByZXBl
bmQiKQogICAgIGFzc2VydCBsZW4odmFsdWVzKSA9PSAxCiAKIApAQCAtMTE1LDEzICsxMTgsMTMg
QEAgZGVmIHRlc3RfY29uZnRlc3RfZ2xvYmFsX2ltcG9ydCh0ZXN0ZGlyKToKICAgICAgICAgaW1w
b3J0IHB5LCBweXRlc3QKICAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgUHl0ZXN0
UGx1Z2luTWFuYWdlcgogICAgICAgICBjb25mID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCi0gICAg
ICAgIG1vZCA9IGNvbmYuX2ltcG9ydGNvbmZ0ZXN0KHB5LnBhdGgubG9jYWwoImNvbmZ0ZXN0LnB5
IikpCisgICAgICAgIG1vZCA9IGNvbmYuX2ltcG9ydGNvbmZ0ZXN0KHB5LnBhdGgubG9jYWwoImNv
bmZ0ZXN0LnB5IiksIGltcG9ydG1vZGU9InByZXBlbmQiKQogICAgICAgICBhc3NlcnQgbW9kLngg
PT0gMwogICAgICAgICBpbXBvcnQgY29uZnRlc3QKICAgICAgICAgYXNzZXJ0IGNvbmZ0ZXN0IGlz
IG1vZCwgKGNvbmZ0ZXN0LCBtb2QpCiAgICAgICAgIHN1YmNvbmYgPSBweS5wYXRoLmxvY2FsKCku
ZW5zdXJlKCJzdWIiLCAiY29uZnRlc3QucHkiKQogICAgICAgICBzdWJjb25mLndyaXRlKCJ5PTQi
KQotICAgICAgICBtb2QyID0gY29uZi5faW1wb3J0Y29uZnRlc3Qoc3ViY29uZikKKyAgICAgICAg
bW9kMiA9IGNvbmYuX2ltcG9ydGNvbmZ0ZXN0KHN1YmNvbmYsIGltcG9ydG1vZGU9InByZXBlbmQi
KQogICAgICAgICBhc3NlcnQgbW9kICE9IG1vZDIKICAgICAgICAgYXNzZXJ0IG1vZDIueSA9PSA0
CiAgICAgICAgIGltcG9ydCBjb25mdGVzdApAQCAtMTM3LDE3ICsxNDAsMTcgQEAgZGVmIHRlc3Rf
Y29uZnRlc3RjdXRkaXIodGVzdGRpcik6CiAgICAgcCA9IHRlc3RkaXIubWtkaXIoIngiKQogICAg
IGNvbmZ0ZXN0ID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAgY29uZnRlc3Rfc2V0aW5pdGlh
bChjb25mdGVzdCwgW3Rlc3RkaXIudG1wZGlyXSwgY29uZmN1dGRpcj1wKQotICAgIHZhbHVlcyA9
IGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMocCkKKyAgICB2YWx1ZXMgPSBjb25mdGVzdC5f
Z2V0Y29uZnRlc3Rtb2R1bGVzKHAsIGltcG9ydG1vZGU9InByZXBlbmQiKQogICAgIGFzc2VydCBs
ZW4odmFsdWVzKSA9PSAwCi0gICAgdmFsdWVzID0gY29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxl
cyhjb25mLmRpcnBhdGgoKSkKKyAgICB2YWx1ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1
bGVzKGNvbmYuZGlycGF0aCgpLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKICAgICBhc3NlcnQgbGVu
KHZhbHVlcykgPT0gMAogICAgIGFzc2VydCBjb25mIG5vdCBpbiBjb25mdGVzdC5fY29uZnRlc3Rw
YXRoMm1vZAogICAgICMgYnV0IHdlIGNhbiBzdGlsbCBpbXBvcnQgYSBjb25mdGVzdCBkaXJlY3Rs
eQotICAgIGNvbmZ0ZXN0Ll9pbXBvcnRjb25mdGVzdChjb25mKQotICAgIHZhbHVlcyA9IGNvbmZ0
ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoY29uZi5kaXJwYXRoKCkpCisgICAgY29uZnRlc3QuX2lt
cG9ydGNvbmZ0ZXN0KGNvbmYsIGltcG9ydG1vZGU9InByZXBlbmQiKQorICAgIHZhbHVlcyA9IGNv
bmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoY29uZi5kaXJwYXRoKCksIGltcG9ydG1vZGU9InBy
ZXBlbmQiKQogICAgIGFzc2VydCB2YWx1ZXNbMF0uX19maWxlX18uc3RhcnRzd2l0aChzdHIoY29u
ZikpCiAgICAgIyBhbmQgYWxsIHN1YiBwYXRocyBnZXQgdXBkYXRlZCBwcm9wZXJseQotICAgIHZh
bHVlcyA9IGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMocCkKKyAgICB2YWx1ZXMgPSBjb25m
dGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHAsIGltcG9ydG1vZGU9InByZXBlbmQiKQogICAgIGFz
c2VydCBsZW4odmFsdWVzKSA9PSAxCiAgICAgYXNzZXJ0IHZhbHVlc1swXS5fX2ZpbGVfXy5zdGFy
dHN3aXRoKHN0cihjb25mKSkKIApAQCAtMTU2LDcgKzE1OSw3IEBAIGRlZiB0ZXN0X2NvbmZ0ZXN0
Y3V0ZGlyX2lucGxhY2VfY29uc2lkZXJlZCh0ZXN0ZGlyKToKICAgICBjb25mID0gdGVzdGRpci5t
YWtlY29uZnRlc3QoIiIpCiAgICAgY29uZnRlc3QgPSBQeXRlc3RQbHVnaW5NYW5hZ2VyKCkKICAg
ICBjb25mdGVzdF9zZXRpbml0aWFsKGNvbmZ0ZXN0LCBbY29uZi5kaXJwYXRoKCldLCBjb25mY3V0
ZGlyPWNvbmYuZGlycGF0aCgpKQotICAgIHZhbHVlcyA9IGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1v
ZHVsZXMoY29uZi5kaXJwYXRoKCkpCisgICAgdmFsdWVzID0gY29uZnRlc3QuX2dldGNvbmZ0ZXN0
bW9kdWxlcyhjb25mLmRpcnBhdGgoKSwgaW1wb3J0bW9kZT0icHJlcGVuZCIpCiAgICAgYXNzZXJ0
IGxlbih2YWx1ZXMpID09IDEKICAgICBhc3NlcnQgdmFsdWVzWzBdLl9fZmlsZV9fLnN0YXJ0c3dp
dGgoc3RyKGNvbmYpKQogCkBAIC0xNjcsMTEgKzE3MCwxMiBAQCBkZWYgdGVzdF9zZXRpbml0aWFs
X2NvbmZ0ZXN0X3N1YmRpcnModGVzdGRpciwgbmFtZSk6CiAgICAgc3ViY29uZnRlc3QgPSBzdWIu
ZW5zdXJlKCJjb25mdGVzdC5weSIpCiAgICAgY29uZnRlc3QgPSBQeXRlc3RQbHVnaW5NYW5hZ2Vy
KCkKICAgICBjb25mdGVzdF9zZXRpbml0aWFsKGNvbmZ0ZXN0LCBbc3ViLmRpcnBhdGgoKV0sIGNv
bmZjdXRkaXI9dGVzdGRpci50bXBkaXIpCisgICAga2V5ID0gUGF0aChzdHIoc3ViY29uZnRlc3Qp
KS5yZXNvbHZlKCkKICAgICBpZiBuYW1lIG5vdCBpbiAoIndoYXRldmVyIiwgIi5kb3RkaXIiKToK
LSAgICAgICAgYXNzZXJ0IHN1YmNvbmZ0ZXN0IGluIGNvbmZ0ZXN0Ll9jb25mdGVzdHBhdGgybW9k
CisgICAgICAgIGFzc2VydCBrZXkgaW4gY29uZnRlc3QuX2NvbmZ0ZXN0cGF0aDJtb2QKICAgICAg
ICAgYXNzZXJ0IGxlbihjb25mdGVzdC5fY29uZnRlc3RwYXRoMm1vZCkgPT0gMQogICAgIGVsc2U6
Ci0gICAgICAgIGFzc2VydCBzdWJjb25mdGVzdCBub3QgaW4gY29uZnRlc3QuX2NvbmZ0ZXN0cGF0
aDJtb2QKKyAgICAgICAgYXNzZXJ0IGtleSBub3QgaW4gY29uZnRlc3QuX2NvbmZ0ZXN0cGF0aDJt
b2QKICAgICAgICAgYXNzZXJ0IGxlbihjb25mdGVzdC5fY29uZnRlc3RwYXRoMm1vZCkgPT0gMAog
CiAKQEAgLTE3OSw1MCArMTgzLDEzNyBAQCBkZWYgdGVzdF9jb25mdGVzdF9jb25mY3V0ZGlyKHRl
c3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KCJhc3NlcnQgMCIpCiAgICAgeCA9IHRl
c3RkaXIubWtkaXIoIngiKQogICAgIHguam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAg
ICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAg
ICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Cisg
ICAgICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS14eXoiLCBhY3Rpb249InN0b3JlX3Ry
dWUiKQogICAgICAgICAgICAgIiIiCi0gICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNl
cik6Ci0gICAgICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLXh5eiIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIpCi0gICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi1oIiwgIi0tY29uZmN1dGRpcj0lcyIgJSB4LCB4KQogICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIiotLXh5eioiXSkKLSAgICBhc3NlcnQgIndhcm5pbmc6IGNvdWxk
IG5vdCBsb2FkIGluaXRpYWwiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0
LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIip3YXJuaW5nOiBjb3VsZCBub3QgbG9hZCBpbml0aWFs
KiIpCisKKworZGVmIHRlc3RfY29uZnRlc3Rfc3ltbGluayh0ZXN0ZGlyKToKKyAgICAiIiJgY29u
ZnRlc3QucHlgIGRpc2NvdmVyeSBmb2xsb3dzIG5vcm1hbCBwYXRoIHJlc29sdXRpb24gYW5kIGRv
ZXMgbm90IHJlc29sdmUgc3ltbGlua3MuIiIiCisgICAgIyBTdHJ1Y3R1cmU6CisgICAgIyAvcmVh
bAorICAgICMgL3JlYWwvY29uZnRlc3QucHkKKyAgICAjIC9yZWFsL2FwcAorICAgICMgL3JlYWwv
YXBwL3Rlc3RzCisgICAgIyAvcmVhbC9hcHAvdGVzdHMvdGVzdF9mb28ucHkKKworICAgICMgTGlu
a3M6CisgICAgIyAvc3ltbGlua3Rlc3RzIC0+IC9yZWFsL2FwcC90ZXN0cyAocnVubmluZyBhdCBz
eW1saW5rdGVzdHMgc2hvdWxkIGZhaWwpCisgICAgIyAvc3ltbGluayAtPiAvcmVhbCAocnVubmlu
ZyBhdCAvc3ltbGluayBzaG91bGQgd29yaykKKworICAgIHJlYWwgPSB0ZXN0ZGlyLnRtcGRpci5t
a2RpcigicmVhbCIpCisgICAgcmVhbHRlc3RzID0gcmVhbC5ta2RpcigiYXBwIikubWtkaXIoInRl
c3RzIikKKyAgICBzeW1saW5rX29yX3NraXAocmVhbHRlc3RzLCB0ZXN0ZGlyLnRtcGRpci5qb2lu
KCJzeW1saW5rdGVzdHMiKSkKKyAgICBzeW1saW5rX29yX3NraXAocmVhbCwgdGVzdGRpci50bXBk
aXIuam9pbigic3ltbGluayIpKQorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgKip7
CisgICAgICAgICAgICAicmVhbC9hcHAvdGVzdHMvdGVzdF9mb28ucHkiOiAiZGVmIHRlc3QxKGZp
eHR1cmUpOiBwYXNzIiwKKyAgICAgICAgICAgICJyZWFsL2NvbmZ0ZXN0LnB5IjogdGV4dHdyYXAu
ZGVkZW50KAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKKworICAgICAgICAgICAgICAgIHByaW50KCJjb25mdGVzdF9sb2FkZWQiKQorCisgICAgICAg
ICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICAgICAgZGVmIGZpeHR1cmUoKToK
KyAgICAgICAgICAgICAgICAgICAgcHJpbnQoImZpeHR1cmVfdXNlZCIpCisgICAgICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICApLAorICAgICAgICB9CisgICAgKQorCisgICAgIyBTaG91bGQg
ZmFpbCBiZWNhdXNlIGNvbmZ0ZXN0IGNhbm5vdCBiZSBmb3VuZCBmcm9tIHRoZSBsaW5rIHN0cnVj
dHVyZS4KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXZzIiwgInN5bWxpbmt0ZXN0
cyIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmZpeHR1cmUgJ2ZpeHR1cmUn
IG5vdCBmb3VuZCoiXSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5URVNUU19G
QUlMRUQKKworICAgICMgU2hvdWxkIG5vdCBjYXVzZSAiVmFsdWVFcnJvcjogUGx1Z2luIGFscmVh
ZHkgcmVnaXN0ZXJlZCIgKCM0MTc0KS4KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXZzIiwgInN5bWxpbmsiKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk9LCisK
KworZGVmIHRlc3RfY29uZnRlc3Rfc3ltbGlua19maWxlcyh0ZXN0ZGlyKToKKyAgICAiIiJTeW1s
aW5rZWQgY29uZnRlc3QucHkgYXJlIGZvdW5kIHdoZW4gcHl0ZXN0IGlzIGV4ZWN1dGVkIGluIGEg
ZGlyZWN0b3J5IHdpdGggc3ltbGlua2VkCisgICAgZmlsZXMuIiIiCisgICAgcmVhbCA9IHRlc3Rk
aXIudG1wZGlyLm1rZGlyKCJyZWFsIikKKyAgICBzb3VyY2UgPSB7CisgICAgICAgICJhcHAvdGVz
dF9mb28ucHkiOiAiZGVmIHRlc3QxKGZpeHR1cmUpOiBwYXNzIiwKKyAgICAgICAgImFwcC9fX2lu
aXRfXy5weSI6ICIiLAorICAgICAgICAiYXBwL2NvbmZ0ZXN0LnB5IjogdGV4dHdyYXAuZGVkZW50
KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAg
ICAgIHByaW50KCJjb25mdGVzdF9sb2FkZWQiKQorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUKKyAgICAgICAgICAgIGRlZiBmaXh0dXJlKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoImZp
eHR1cmVfdXNlZCIpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKSwKKyAgICB9CisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKCoqeyJyZWFsLyVzIiAlIGs6IHYgZm9yIGssIHYgaW4gc291cmNlLml0
ZW1zKCl9KQorCisgICAgIyBDcmVhdGUgYSBidWlsZCBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBz
eW1saW5rcyB0byBhY3R1YWwgZmlsZXMKKyAgICAjIGJ1dCBkb2Vzbid0IHN5bWxpbmsgYWN0dWFs
IGRpcmVjdG9yaWVzLgorICAgIGJ1aWxkID0gdGVzdGRpci50bXBkaXIubWtkaXIoImJ1aWxkIikK
KyAgICBidWlsZC5ta2RpcigiYXBwIikKKyAgICBmb3IgZiBpbiBzb3VyY2U6CisgICAgICAgIHN5
bWxpbmtfb3Jfc2tpcChyZWFsLmpvaW4oZiksIGJ1aWxkLmpvaW4oZikpCisgICAgYnVpbGQuY2hk
aXIoKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdnMiLCAiYXBwL3Rlc3RfZm9v
LnB5IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqY29uZnRlc3RfbG9hZGVk
KiIsICJQQVNTRUQiXSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5PSworCisK
K0BweXRlc3QubWFyay5za2lwaWYoCisgICAgb3MucGF0aC5ub3JtY2FzZSgieCIpICE9IG9zLnBh
dGgubm9ybWNhc2UoIlgiKSwKKyAgICByZWFzb249Im9ubHkgcmVsZXZhbnQgZm9yIGNhc2UgaW5z
ZW5zaXRpdmUgZmlsZSBzeXN0ZW1zIiwKKykKK2RlZiB0ZXN0X2NvbmZ0ZXN0X2JhZGNhc2UodGVz
dGRpcik6CisgICAgIiIiQ2hlY2sgY29uZnRlc3QucHkgbG9hZGluZyB3aGVuIGRpcmVjdG9yeSBj
YXNpbmcgaXMgd3JvbmcgKCM1NzkyKS4iIiIKKyAgICB0ZXN0ZGlyLnRtcGRpci5ta2RpcigiSmVu
a2luc1Jvb3QiKS5ta2RpcigidGVzdCIpCisgICAgc291cmNlID0geyJzZXR1cC5weSI6ICIiLCAi
dGVzdC9fX2luaXRfXy5weSI6ICIiLCAidGVzdC9jb25mdGVzdC5weSI6ICIifQorICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgqKnsiSmVua2luc1Jvb3QvJXMiICUgazogdiBmb3IgaywgdiBpbiBzb3Vy
Y2UuaXRlbXMoKX0pCisKKyAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJqZW5raW5zcm9vdC90ZXN0
IikuY2hkaXIoKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKKworCitkZWYgdGVzdF9j
b25mdGVzdF91cHBlcmNhc2UodGVzdGRpcik6CisgICAgIiIiQ2hlY2sgY29uZnRlc3QucHkgd2hv
c2UgcXVhbGlmaWVkIG5hbWUgY29udGFpbnMgdXBwZXJjYXNlIGNoYXJhY3RlcnMgKCM1ODE5KSIi
IgorICAgIHNvdXJjZSA9IHsiX19pbml0X18ucHkiOiAiIiwgIkZvby9jb25mdGVzdC5weSI6ICIi
LCAiRm9vL19faW5pdF9fLnB5IjogIiJ9CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKCoqc291cmNl
KQorCisgICAgdGVzdGRpci50bXBkaXIuY2hkaXIoKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xM
RUNURUQKIAogCiBkZWYgdGVzdF9ub19jb25mdGVzdCh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1h
a2Vjb25mdGVzdCgiYXNzZXJ0IDAiKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
LW5vY29uZnRlc3QiKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExF
Q1RFRAorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RF
RAogCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEVYSVRfVVNBR0VFUlJPUgotCi0KLWRlZiB0ZXN0X2NvbmZ0ZXN0X2V4aXN0aW5nX3Jl
c3VsdGxvZyh0ZXN0ZGlyKToKLSAgICB4ID0gdGVzdGRpci5ta2RpcigidGVzdHMiKQotICAgIHgu
am9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToK
LSAgICAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0teHl6IiwgYWN0aW9uPSJzdG9yZV90cnVl
IikKLSAgICAiIiIKLSAgICAgICAgKQotICAgICkKLSAgICB0ZXN0ZGlyLm1ha2VmaWxlKGV4dD0i
LmxvZyIsIHJlc3VsdD0iIikgICMgV3JpdGVzIHJlc3VsdC5sb2cKLSAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLWgiLCAiLS1yZXN1bHRsb2ciLCAicmVzdWx0LmxvZyIpCi0gICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKi0teHl6KiJdKQorICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEV4aXRDb2RlLlVTQUdFX0VSUk9SCiAKIAogZGVmIHRlc3RfY29uZnRlc3RfZXhpc3Rp
bmdfanVuaXR4bWwodGVzdGRpcik6CiAgICAgeCA9IHRlc3RkaXIubWtkaXIoInRlc3RzIikKICAg
ICB4LmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIF9weXRlc3QuX2NvZGUuU291
cmNlKAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAg
ICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAgICAgICAgIHBhcnNl
ci5hZGRvcHRpb24oIi0teHl6IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICAgICAgICAgICIi
IgotICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgICAgICAgICAgcGFy
c2VyLmFkZG9wdGlvbigiLS14eXoiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICIiIgogICAg
ICAgICApCiAgICAgKQogICAgIHRlc3RkaXIubWFrZWZpbGUoZXh0PSIueG1sIiwganVuaXQ9IiIp
ICAjIFdyaXRlcyBqdW5pdC54bWwKQEAgLTIzNiw1NCArMzI3LDU0IEBAIGRlZiB0ZXN0X2NvbmZ0
ZXN0X2ltcG9ydF9vcmRlcih0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgY3QyID0gc3ViLmpv
aW4oImNvbmZ0ZXN0LnB5IikKICAgICBjdDIud3JpdGUoIiIpCiAKLSAgICBkZWYgaW1wY3QocCk6
CisgICAgZGVmIGltcGN0KHAsIGltcG9ydG1vZGUpOgogICAgICAgICByZXR1cm4gcAogCiAgICAg
Y29uZnRlc3QgPSBQeXRlc3RQbHVnaW5NYW5hZ2VyKCkKICAgICBjb25mdGVzdC5fY29uZmN1dGRp
ciA9IHRlc3RkaXIudG1wZGlyCiAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihjb25mdGVzdCwgIl9p
bXBvcnRjb25mdGVzdCIsIGltcGN0KQotICAgIGFzc2VydCBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rt
b2R1bGVzKHN1YikgPT0gW2N0MSwgY3QyXQorICAgIGFzc2VydCBjb25mdGVzdC5fZ2V0Y29uZnRl
c3Rtb2R1bGVzKHN1YiwgaW1wb3J0bW9kZT0icHJlcGVuZCIpID09IFtjdDEsIGN0Ml0KIAogCi1k
ZWYgdGVzdF9maXh0dXJlX2RlcGVuZGVuY3kodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorZGVmIHRl
c3RfZml4dHVyZV9kZXBlbmRlbmN5KHRlc3RkaXIpOgogICAgIGN0MSA9IHRlc3RkaXIubWFrZWNv
bmZ0ZXN0KCIiKQogICAgIGN0MSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiX19pbml0X18ucHkiKQog
ICAgIGN0MS53cml0ZSgiIikKICAgICBzdWIgPSB0ZXN0ZGlyLm1rZGlyKCJzdWIiKQogICAgIHN1
Yi5qb2luKCJfX2luaXRfXy5weSIpLndyaXRlKCIiKQogICAgIHN1Yi5qb2luKCJjb25mdGVzdC5w
eSIpLndyaXRlKAotICAgICAgICBkZWRlbnQoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgaW1w
b3J0IHB5dGVzdAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAg
ICAgIGRlZiBub3RfbmVlZGVkKCk6Ci0gICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJTaG91bGQg
bm90IGJlIGNhbGxlZCEiCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAg
IGRlZiBub3RfbmVlZGVkKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiU2hvdWxk
IG5vdCBiZSBjYWxsZWQhIgogCi0gICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICBkZWYg
Zm9vKCk6Ci0gICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJTaG91bGQgbm90IGJlIGNhbGxlZCEi
CisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBmb28oKToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJTaG91bGQgbm90IGJlIGNhbGxlZCEiCiAKLSAg
ICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgIGRlZiBiYXIoZm9vKToKLSAgICAgICAgICAg
IHJldHVybiAnYmFyJwotICAgICIiIgorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgICAgICBkZWYgYmFyKGZvbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICdiYXInCisgICAg
ICAgICAgICAiIiIKICAgICAgICAgKQogICAgICkKICAgICBzdWJzdWIgPSBzdWIubWtkaXIoInN1
YnN1YiIpCiAgICAgc3Vic3ViLmpvaW4oIl9faW5pdF9fLnB5Iikud3JpdGUoIiIpCiAgICAgc3Vi
c3ViLmpvaW4oInRlc3RfYmFyLnB5Iikud3JpdGUoCi0gICAgICAgIGRlZGVudCgKLSAgICAgICAg
ICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIHRleHR3cmFwLmRlZGVudCgK
KyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAotICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgZGVmIGJhcigpOgotICAgICAgICAgICAgcmV0dXJuICdz
dWIgYmFyJworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgYmFy
KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuICdzdWIgYmFyJwogCi0gICAgICAgIGRlZiB0ZXN0
X2V2ZW50X2ZpeHR1cmUoYmFyKToKLSAgICAgICAgICAgIGFzc2VydCBiYXIgPT0gJ3N1YiBiYXIn
Ci0gICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9ldmVudF9maXh0dXJlKGJhcik6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0IGJhciA9PSAnc3ViIGJhcicKKyAgICAgICAgICAgICIiIgogICAg
ICAgICApCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCJzdWIiKQpAQCAt
MjkzLDExICszODQsMTEgQEAgZGVmIHRlc3RfZml4dHVyZV9kZXBlbmRlbmN5KHRlc3RkaXIsIG1v
bmtleXBhdGNoKToKIGRlZiB0ZXN0X2NvbmZ0ZXN0X2ZvdW5kX3dpdGhfZG91YmxlX2Rhc2godGVz
dGRpcik6CiAgICAgc3ViID0gdGVzdGRpci5ta2Rpcigic3ViIikKICAgICBzdWIuam9pbigiY29u
ZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgZGVkZW50KAorICAgICAgICB0ZXh0d3JhcC5kZWRl
bnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihw
YXJzZXIpOgorICAgICAgICAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0taGVsbG8td29ybGQi
LCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgICAgICAgICAgIiIiCi0gICAgICAgIGRlZiBweXRl
c3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWhl
bGxvLXdvcmxkIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAiIiIKICAgICAgICAgKQogICAg
ICkKICAgICBwID0gc3ViLmpvaW4oInRlc3RfaGVsbG8ucHkiKQpAQCAtMzEwLDggKzQwMSw3IEBA
IGRlZiB0ZXN0X2NvbmZ0ZXN0X2ZvdW5kX3dpdGhfZG91YmxlX2Rhc2godGVzdGRpcik6CiAgICAg
KQogCiAKLWNsYXNzIFRlc3RDb25mdGVzdFZpc2liaWxpdHkob2JqZWN0KToKLQorY2xhc3MgVGVz
dENvbmZ0ZXN0VmlzaWJpbGl0eToKICAgICBkZWYgX3NldHVwX3RyZWUoc2VsZiwgdGVzdGRpcik6
ICAjIGZvciBpc3N1ZTYxNgogICAgICAgICAjIGV4YW1wbGUgbW9zdGx5IHRha2VuIGZyb206CiAg
ICAgICAgICMgaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGVzdC1kZXYvMjAx
NC1TZXB0ZW1iZXIvMDAyNjE3Lmh0bWwKQEAgLTMxOSw2MSArNDA5LDYwIEBAIGNsYXNzIFRlc3RD
b25mdGVzdFZpc2liaWxpdHkob2JqZWN0KToKICAgICAgICAgcGFja2FnZSA9IHRlc3RkaXIubWtk
aXIoInBhY2thZ2UiKQogCiAgICAgICAgIHBhY2thZ2Uuam9pbigiY29uZnRlc3QucHkiKS53cml0
ZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKICAg
ICAgICAgICAgICAgICAiIiJcCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAg
ICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBmeHRyKCk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICJmcm9tLXBhY2thZ2UiCi0gICAgICAgICIiIgorICAgICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAg
ICAgICBkZWYgZnh0cigpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyb20tcGFja2Fn
ZSIKKyAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAg
ICBwYWNrYWdlLmpvaW4oInRlc3RfcGtncm9vdC5weSIpLndyaXRlKAotICAgICAgICAgICAgZGVk
ZW50KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAogICAgICAgICAgICAgICAgICIiIlwK
LSAgICAgICAgICAgIGRlZiB0ZXN0X3BrZ3Jvb3QoZnh0cik6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IGZ4dHIgPT0gImZyb20tcGFja2FnZSIKLSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAg
ZGVmIHRlc3RfcGtncm9vdChmeHRyKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZ4dHIg
PT0gImZyb20tcGFja2FnZSIKKyAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAg
ICAgICAgKQogCiAgICAgICAgIHN3YyA9IHBhY2thZ2UubWtkaXIoInN3YyIpCiAgICAgICAgIHN3
Yy5qb2luKCJfX2luaXRfXy5weSIpLmVuc3VyZSgpCiAgICAgICAgIHN3Yy5qb2luKCJjb25mdGVz
dC5weSIpLndyaXRlKAotICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgdGV4dHdyYXAu
ZGVkZW50KAogICAgICAgICAgICAgICAgICIiIlwKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
LSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGZ4dHIoKToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gImZyb20tc3djIgotICAgICAgICAiIiIKKyAgICAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgICAgICAgICAgZGVmIGZ4dHIoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcm9t
LXN3YyIKKyAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAg
ICAgICBzd2Muam9pbigidGVzdF93aXRoX2NvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgICAg
ICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCiAgICAgICAgICAgICAgICAg
IiIiXAotICAgICAgICAgICAgZGVmIHRlc3Rfd2l0aF9jb25mdGVzdChmeHRyKToKLSAgICAgICAg
ICAgICAgICBhc3NlcnQgZnh0ciA9PSAiZnJvbS1zd2MiCi0KLSAgICAgICAgIiIiCisgICAgICAg
ICAgICAgICAgZGVmIHRlc3Rfd2l0aF9jb25mdGVzdChmeHRyKToKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGZ4dHIgPT0gImZyb20tc3djIgorICAgICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgKQogICAgICAgICApCiAKICAgICAgICAgc25jID0gcGFja2FnZS5ta2Rpcigic25jIikK
ICAgICAgICAgc25jLmpvaW4oIl9faW5pdF9fLnB5IikuZW5zdXJlKCkKICAgICAgICAgc25jLmpv
aW4oInRlc3Rfbm9fY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAg
ICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKICAgICAgICAgICAgICAgICAiIiJcCi0gICAgICAg
ICAgICBkZWYgdGVzdF9ub19jb25mdGVzdChmeHRyKToKLSAgICAgICAgICAgICAgICBhc3NlcnQg
Znh0ciA9PSAiZnJvbS1wYWNrYWdlIiAgICMgTm8gbG9jYWwgY29uZnRlc3QucHksIHNvIHNob3Vs
ZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2Ug
dmFsdWUgZnJvbSBwYXJlbnQgZGlyJ3MKLQotICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBk
ZWYgdGVzdF9ub19jb25mdGVzdChmeHRyKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZ4
dHIgPT0gImZyb20tcGFja2FnZSIgICAjIE5vIGxvY2FsIGNvbmZ0ZXN0LnB5LCBzbyBzaG91bGQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVz
ZSB2YWx1ZSBmcm9tIHBhcmVudCBkaXIncworICAgICAgICAgICAgICAgICIiIgogICAgICAgICAg
ICAgKQogICAgICAgICApCiAgICAgICAgIHByaW50KCJjcmVhdGVkIGRpcmVjdG9yeSBzdHJ1Y3R1
cmU6IikKLSAgICAgICAgZm9yIHggaW4gdGVzdGRpci50bXBkaXIudmlzaXQoKToKLSAgICAgICAg
ICAgIHByaW50KCIgICAiICsgeC5yZWx0byh0ZXN0ZGlyLnRtcGRpcikpCisgICAgICAgIHRtcHBh
dGggPSBQYXRoKHN0cih0ZXN0ZGlyLnRtcGRpcikpCisgICAgICAgIGZvciB4IGluIHRtcHBhdGgu
cmdsb2IoIiIpOgorICAgICAgICAgICAgcHJpbnQoIiAgICIgKyBzdHIoeC5yZWxhdGl2ZV90byh0
bXBwYXRoKSkpCiAKICAgICAgICAgcmV0dXJuIHsicnVubmVyIjogcnVubmVyLCAicGFja2FnZSI6
IHBhY2thZ2UsICJzd2MiOiBzd2MsICJzbmMiOiBzbmN9CiAKQEAgLTQwNCwxMCArNDkzLDEwIEBA
IGNsYXNzIFRlc3RDb25mdGVzdFZpc2liaWxpdHkob2JqZWN0KToKICAgICAgICAgICAgICgic25j
IiwgIi4iLCAxKSwKICAgICAgICAgXSwKICAgICApCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlNjE2
CiAgICAgZGVmIHRlc3RfcGFyc2VmYWN0b3JpZXNfcmVsYXRpdmVfbm9kZV9pZHMoCiAgICAgICAg
IHNlbGYsIHRlc3RkaXIsIGNoZGlyLCB0ZXN0YXJnLCBleHBlY3RfbnRlc3RzX3Bhc3NlZAogICAg
ICk6CisgICAgICAgICIiIiM2MTYiIiIKICAgICAgICAgZGlycyA9IHNlbGYuX3NldHVwX3RyZWUo
dGVzdGRpcikKICAgICAgICAgcHJpbnQoInB5dGVzdCBydW4gaW4gY3dkOiAlcyIgJSAoZGlyc1tj
aGRpcl0ucmVsdG8odGVzdGRpci50bXBkaXIpKSkKICAgICAgICAgcHJpbnQoInB5dGVzdGFyZyAg
ICAgICAgOiAlcyIgJSAodGVzdGFyZykpCkBAIC00MjgsMzEgKzUxNywzMSBAQCBkZWYgdGVzdF9z
ZWFyY2hfY29uZnRlc3RfdXBfdG9faW5pZmlsZSh0ZXN0ZGlyLCBjb25mY3V0ZGlyLCBwYXNzZWQs
IGVycm9yKToKICAgICBzcmMgPSByb290LmpvaW4oInNyYyIpLmVuc3VyZShkaXI9MSkKICAgICBz
cmMuam9pbigicHl0ZXN0LmluaSIpLndyaXRlKCJbcHl0ZXN0XSIpCiAgICAgc3JjLmpvaW4oImNv
bmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAg
ICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBmaXgx
KCk6IHBhc3MKICAgICAgICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAg
IEBweXRlc3QuZml4dHVyZQotICAgICAgICBkZWYgZml4MSgpOiBwYXNzCi0gICAgIiIiCiAgICAg
ICAgICkKICAgICApCiAgICAgc3JjLmpvaW4oInRlc3RfZm9vLnB5Iikud3JpdGUoCi0gICAgICAg
IF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAg
ICAgICAiIiJcCisgICAgICAgICAgICBkZWYgdGVzdF8xKGZpeDEpOgorICAgICAgICAgICAgICAg
IHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0XzIob3V0X29mX3JlYWNoKToKKyAgICAgICAgICAg
ICAgICBwYXNzCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgZGVmIHRlc3RfMShmaXgxKToKLSAg
ICAgICAgICAgIHBhc3MKLSAgICAgICAgZGVmIHRlc3RfMihvdXRfb2ZfcmVhY2gpOgotICAgICAg
ICAgICAgcGFzcwotICAgICIiIgogICAgICAgICApCiAgICAgKQogICAgIHJvb3Quam9pbigiY29u
ZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAg
IHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgZGVmIG91dF9v
Zl9yZWFjaCgpOiBwYXNzCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAot
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgZGVmIG91dF9vZl9yZWFjaCgpOiBwYXNz
Ci0gICAgIiIiCiAgICAgICAgICkKICAgICApCiAKQEAgLTQ3MCwxOSArNTU5LDE5IEBAIGRlZiB0
ZXN0X3NlYXJjaF9jb25mdGVzdF91cF90b19pbmlmaWxlKHRlc3RkaXIsIGNvbmZjdXRkaXIsIHBh
c3NlZCwgZXJyb3IpOgogCiBkZWYgdGVzdF9pc3N1ZTEwNzNfY29uZnRlc3Rfc3BlY2lhbF9vYmpl
Y3RzKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAiIiIKKyAg
ICAgICAgIiIiXAogICAgICAgICBjbGFzcyBEb250VG91Y2hNZShvYmplY3QpOgogICAgICAgICAg
ICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIHgpOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignY2FudCB0b3VjaCBtZScpCiAKICAgICAgICAgeCA9IERvbnRUb3VjaE1lKCkKLSAgICAi
IiIKKyAgICAgICAgIiIiCiAgICAgKQogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAg
IiIiCisgICAgICAgICIiIlwKICAgICAgICAgZGVmIHRlc3Rfc29tZSgpOgogICAgICAgICAgICAg
cGFzcwotICAgICIiIgorICAgICAgICAiIiIKICAgICApCiAgICAgcmVzID0gdGVzdGRpci5ydW5w
eXRlc3QoKQogICAgIGFzc2VydCByZXMucmV0ID09IDAKQEAgLTQ5MCwxNSArNTc5LDE1IEBAIGRl
ZiB0ZXN0X2lzc3VlMTA3M19jb25mdGVzdF9zcGVjaWFsX29iamVjdHModGVzdGRpcik6CiAKIGRl
ZiB0ZXN0X2NvbmZ0ZXN0X2V4Y2VwdGlvbl9oYW5kbGluZyh0ZXN0ZGlyKToKICAgICB0ZXN0ZGly
Lm1ha2Vjb25mdGVzdCgKLSAgICAgICAgIiIiCisgICAgICAgICIiIlwKICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigpCi0gICAgIiIiCisgICAgICAgICIiIgogICAgICkKICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICIiIgorICAgICAgICAiIiJcCiAgICAgICAgIGRlZiB0ZXN0X3Nv
bWUoKToKICAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgKQogICAg
IHJlcyA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICBhc3NlcnQgcmVzLnJldCA9PSA0CkBAIC01
MTMsNyArNjAyLDcgQEAgZGVmIHRlc3RfaG9va19wcm94eSh0ZXN0ZGlyKToKICAgICAgICAgKip7
CiAgICAgICAgICAgICAicm9vdC9kZW1vLTAvdGVzdF9mb28xLnB5IjogImRlZiB0ZXN0MSgpOiBw
YXNzIiwKICAgICAgICAgICAgICJyb290L2RlbW8tYS90ZXN0X2ZvbzIucHkiOiAiZGVmIHRlc3Qx
KCk6IHBhc3MiLAotICAgICAgICAgICAgInJvb3QvZGVtby1hL2NvbmZ0ZXN0LnB5IjogIiIiCisg
ICAgICAgICAgICAicm9vdC9kZW1vLWEvY29uZnRlc3QucHkiOiAiIiJcCiAgICAgICAgICAgICBk
ZWYgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGgsIGNvbmZpZyk6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKICAgICAgICAgICAgICIiIiwKQEAgLTUzMSwxMyArNjIwLDEzIEBAIGRlZiB0
ZXN0X3JlcXVpcmVkX29wdGlvbl9oZWxwKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0
ZXN0KCJhc3NlcnQgMCIpCiAgICAgeCA9IHRlc3RkaXIubWtkaXIoIngiKQogICAgIHguam9pbigi
Y29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAg
ICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiBw
eXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CisgICAgICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlv
bigiLS14eXoiLCBhY3Rpb249InN0b3JlX3RydWUiLCByZXF1aXJlZD1UcnVlKQogICAgICAgICAg
ICAgIiIiCi0gICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgICAgICAg
ICBwYXJzZXIuYWRkb3B0aW9uKCItLXh5eiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIHJlcXVpcmVk
PVRydWUpCi0gICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi1oIiwgeCkKLSAgICBhc3NlcnQgImFyZ3VtZW50IC0teHl6IGlzIHJlcXVpcmVk
IiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRj
aF9saW5lKCIqYXJndW1lbnQgLS14eXogaXMgcmVxdWlyZWQqIikKICAgICBhc3NlcnQgImdlbmVy
YWw6IiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3RfZGVidWdnaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2RlYnVnZ2lu
Zy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk0OGI2MjFmN2M3
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9kZWJ1Z2dpbmcu
cHkKQEAgLTAsMCArMSwxMzAyIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IF9w
eXRlc3QuX2NvZGUKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5kZWJ1Z2dpbmcgaW1wb3J0
IF92YWxpZGF0ZV91c2VwZGJfY2xzCisKK3RyeToKKyAgICAjIFR5cGUgaWdub3JlZCBmb3IgUHl0
aG9uIDw9IDMuNi4KKyAgICBicmVha3BvaW50ICAjIHR5cGU6IGlnbm9yZQorZXhjZXB0IE5hbWVF
cnJvcjoKKyAgICBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4gPSBGYWxzZQorZWxzZToKKyAg
ICBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4gPSBUcnVlCisKKworX0VOVklST05fUFlUSE9O
QlJFQUtQT0lOVCA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05CUkVBS1BPSU5UIiwgIiIpCisKKwor
QHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSkKK2RlZiBwZGJfZW52KHJlcXVlc3QpOgorICAg
IGlmICJ0ZXN0ZGlyIiBpbiByZXF1ZXN0LmZpeHR1cmVuYW1lczoKKyAgICAgICAgIyBEaXNhYmxl
IHBkYisrIHdpdGggaW5uZXIgdGVzdHMuCisgICAgICAgIHRlc3RkaXIgPSByZXF1ZXN0LmdldGZp
eHR1cmV2YWx1ZSgidGVzdGRpciIpCisgICAgICAgIHRlc3RkaXIubW9ua2V5cGF0Y2guc2V0ZW52
KCJQREJQUF9ISUpBQ0tfUERCIiwgIjAiKQorCisKK2RlZiBydW5wZGJfYW5kX2dldF9yZXBvcnQo
dGVzdGRpciwgc291cmNlKToKKyAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKHNvdXJjZSkKKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tcGRiIiwgcCkKKyAgICBy
ZXBvcnRzID0gcmVzdWx0LnJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9sb2dyZXBv
cnQiKQorICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMywgcmVwb3J0cyAgIyBzZXR1cC9jYWxs
L3RlYXJkb3duCisgICAgcmV0dXJuIHJlcG9ydHNbMV0KKworCitAcHl0ZXN0LmZpeHR1cmUKK2Rl
ZiBjdXN0b21fcGRiX2NhbGxzKCk6CisgICAgY2FsbGVkID0gW10KKworICAgICMgaW5zdGFsbCBk
dW1teSBkZWJ1Z2dlciBjbGFzcyBhbmQgdHJhY2sgd2hpY2ggbWV0aG9kcyB3ZXJlIGNhbGxlZCBv
biBpdAorICAgIGNsYXNzIF9DdXN0b21QZGI6CisgICAgICAgIHF1aXR0aW5nID0gRmFsc2UKKwor
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAg
IGNhbGxlZC5hcHBlbmQoImluaXQiKQorCisgICAgICAgIGRlZiByZXNldChzZWxmKToKKyAgICAg
ICAgICAgIGNhbGxlZC5hcHBlbmQoInJlc2V0IikKKworICAgICAgICBkZWYgaW50ZXJhY3Rpb24o
c2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgiaW50ZXJhY3Rpb24iKQor
CisgICAgX3B5dGVzdC5fQ3VzdG9tUGRiID0gX0N1c3RvbVBkYiAgIyB0eXBlOiBpZ25vcmUKKyAg
ICByZXR1cm4gY2FsbGVkCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY3VzdG9tX2RlYnVnZ2Vy
X2hvb2soKToKKyAgICBjYWxsZWQgPSBbXQorCisgICAgIyBpbnN0YWxsIGR1bW15IGRlYnVnZ2Vy
IGNsYXNzIGFuZCB0cmFjayB3aGljaCBtZXRob2RzIHdlcmUgY2FsbGVkIG9uIGl0CisgICAgY2xh
c3MgX0N1c3RvbURlYnVnZ2VyOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKToKKyAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoImluaXQiKQorCisgICAgICAgIGRl
ZiByZXNldChzZWxmKToKKyAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoInJlc2V0IikKKworICAg
ICAgICBkZWYgaW50ZXJhY3Rpb24oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgY2FsbGVkLmFw
cGVuZCgiaW50ZXJhY3Rpb24iKQorCisgICAgICAgIGRlZiBzZXRfdHJhY2Uoc2VsZiwgZnJhbWUp
OgorICAgICAgICAgICAgcHJpbnQoIioqQ3VzdG9tRGVidWdnZXIqKiIpCisgICAgICAgICAgICBj
YWxsZWQuYXBwZW5kKCJzZXRfdHJhY2UiKQorCisgICAgX3B5dGVzdC5fQ3VzdG9tRGVidWdnZXIg
PSBfQ3VzdG9tRGVidWdnZXIgICMgdHlwZTogaWdub3JlCisgICAgeWllbGQgY2FsbGVkCisgICAg
ZGVsIF9weXRlc3QuX0N1c3RvbURlYnVnZ2VyICAjIHR5cGU6IGlnbm9yZQorCisKK2NsYXNzIFRl
c3RQREI6CisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIHBkYmxpc3Qoc2VsZiwgcmVxdWVz
dCk6CisgICAgICAgIG1vbmtleXBhdGNoID0gcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoIm1vbmtl
eXBhdGNoIikKKyAgICAgICAgcGRibGlzdCA9IFtdCisKKyAgICAgICAgZGVmIG15cGRiKCphcmdz
KToKKyAgICAgICAgICAgIHBkYmxpc3QuYXBwZW5kKGFyZ3MpCisKKyAgICAgICAgcGx1Z2luID0g
cmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oImRlYnVnZ2luZyIpCisgICAg
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGx1Z2luLCAicG9zdF9tb3J0ZW0iLCBteXBkYikKKyAg
ICAgICAgcmV0dXJuIHBkYmxpc3QKKworICAgIGRlZiB0ZXN0X3BkYl9vbl9mYWlsKHNlbGYsIHRl
c3RkaXIsIHBkYmxpc3QpOgorICAgICAgICByZXAgPSBydW5wZGJfYW5kX2dldF9yZXBvcnQoCisg
ICAgICAgICAgICB0ZXN0ZGlyLAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVz
dF9mdW5jKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiLAorICAgICAg
ICApCisgICAgICAgIGFzc2VydCByZXAuZmFpbGVkCisgICAgICAgIGFzc2VydCBsZW4ocGRibGlz
dCkgPT0gMQorICAgICAgICB0YiA9IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKHBkYmxpc3RbMF1b
MF0pCisgICAgICAgIGFzc2VydCB0YlstMV0ubmFtZSA9PSAidGVzdF9mdW5jIgorCisgICAgZGVm
IHRlc3RfcGRiX29uX3hmYWlsKHNlbGYsIHRlc3RkaXIsIHBkYmxpc3QpOgorICAgICAgICByZXAg
PSBydW5wZGJfYW5kX2dldF9yZXBvcnQoCisgICAgICAgICAgICB0ZXN0ZGlyLAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBAcHl0ZXN0Lm1h
cmsueGZhaWwKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBh
c3NlcnQgMAorICAgICAgICAiIiIsCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0ICJ4ZmFpbCIg
aW4gcmVwLmtleXdvcmRzCisgICAgICAgIGFzc2VydCBub3QgcGRibGlzdAorCisgICAgZGVmIHRl
c3RfcGRiX29uX3NraXAoc2VsZiwgdGVzdGRpciwgcGRibGlzdCk6CisgICAgICAgIHJlcCA9IHJ1
bnBkYl9hbmRfZ2V0X3JlcG9ydCgKKyAgICAgICAgICAgIHRlc3RkaXIsCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMo
KToKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgiaGVsbG8iKQorICAgICAgICAiIiIsCisg
ICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlcC5za2lwcGVkCisgICAgICAgIGFzc2VydCBsZW4o
cGRibGlzdCkgPT0gMAorCisgICAgZGVmIHRlc3RfcGRiX29uX0JkYlF1aXQoc2VsZiwgdGVzdGRp
ciwgcGRibGlzdCk6CisgICAgICAgIHJlcCA9IHJ1bnBkYl9hbmRfZ2V0X3JlcG9ydCgKKyAgICAg
ICAgICAgIHRlc3RkaXIsCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBiZGIK
KyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICByYWlzZSBiZGIu
QmRiUXVpdAorICAgICAgICAiIiIsCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlcC5mYWls
ZWQKKyAgICAgICAgYXNzZXJ0IGxlbihwZGJsaXN0KSA9PSAwCisKKyAgICBkZWYgdGVzdF9wZGJf
b25fS2V5Ym9hcmRJbnRlcnJ1cHQoc2VsZiwgdGVzdGRpciwgcGRibGlzdCk6CisgICAgICAgIHJl
cCA9IHJ1bnBkYl9hbmRfZ2V0X3JlcG9ydCgKKyAgICAgICAgICAgIHRlc3RkaXIsCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBy
YWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAiIiIsCisgICAgICAgICkKKyAgICAgICAg
YXNzZXJ0IHJlcC5mYWlsZWQKKyAgICAgICAgYXNzZXJ0IGxlbihwZGJsaXN0KSA9PSAxCisKKyAg
ICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZsdXNoKGNoaWxkKToKKyAgICAgICAgaWYgY2hpbGQu
aXNhbGl2ZSgpOgorICAgICAgICAgICAgIyBSZWFkIGlmIHRoZSB0ZXN0IGhhcyBub3QgKGUuZy4g
dGVzdF9wZGJfdW5pdHRlc3Rfc2tpcCkuCisgICAgICAgICAgICBjaGlsZC5yZWFkKCkKKyAgICAg
ICAgICAgIGNoaWxkLndhaXQoKQorICAgICAgICBhc3NlcnQgbm90IGNoaWxkLmlzYWxpdmUoKQor
CisgICAgZGVmIHRlc3RfcGRiX3VuaXR0ZXN0X3Bvc3Rtb3J0ZW0oc2VsZiwgdGVzdGRpcik6Cisg
ICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAgICAgIGNsYXNzIEJsdWIodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5maWxlbmFtZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9m
YWxzZShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9ICdkZWJ1Zycg
KyAnLm1lJworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBw
MSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBjaGlsZC5zZW5kbGluZSgi
cCBzZWxmLmZpbGVuYW1lIikKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAgIHJlc3Qg
PSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICJkZWJ1Zy5tZSIg
aW4gcmVzdAorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX3Vu
aXR0ZXN0X3NraXAoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlRlc3QgZm9yIGlzc3VlICMy
MTM3IiIiCisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIi
CisgICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAgICAgIEB1bml0dGVzdC5za2lw
SWYoVHJ1ZSwgJ1NraXBwaW5nIGFsc28gd2l0aCBwZGIgYWN0aXZlJykKKyAgICAgICAgICAgIGNs
YXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0
ZXN0X29uZShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLXJzIC0t
cGRiICVzIiAlIHAxKQorICAgICAgICBjaGlsZC5leHBlY3QoIlNraXBwaW5nIGFsc28gd2l0aCBw
ZGIgYWN0aXZlIikKKyAgICAgICAgY2hpbGQuZXhwZWN0X2V4YWN0KCI9IDEgc2tpcHBlZCBpbiIp
CisgICAgICAgIGNoaWxkLnNlbmRlb2YoKQorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisg
ICAgZGVmIHRlc3RfcGRiX3ByaW50X2NhcHR1cmVkX3N0ZG91dF9hbmRfc3RkZXJyKHNlbGYsIHRl
c3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgICAgIGltcG9ydCBzeXMK
KyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJnZXRcXHgyMHJla3QiKQorICAgICAg
ICAgICAgICAgIHByaW50KCJnZXRcXHgyMHJla3QiKQorICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZQorCisgICAgICAgICAgICBkZWYgdGVzdF9ub3RfY2FsbGVkX2R1ZV90b19xdWl0KCk6Cisg
ICAgICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGls
ZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKKyAgICAgICAgY2hpbGQu
ZXhwZWN0KCJjYXB0dXJlZCBzdGRvdXQiKQorICAgICAgICBjaGlsZC5leHBlY3QoImdldCByZWt0
IikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJjYXB0dXJlZCBzdGRlcnIiKQorICAgICAgICBjaGls
ZC5leHBlY3QoImdldCByZWt0IikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0cmFjZWJhY2siKQor
ICAgICAgICBjaGlsZC5leHBlY3QoImRlZiB0ZXN0XzEiKQorICAgICAgICBjaGlsZC5leHBlY3Qo
IlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRlb2YoKQorICAgICAgICByZXN0ID0gY2hpbGQucmVh
ZCgpLmRlY29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiRXhpdDogUXVpdHRpbmcgZGVidWdn
ZXIiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICI9IDEgZmFpbGVkIGluIiBpbiByZXN0CisgICAg
ICAgIGFzc2VydCAiZGVmIHRlc3RfMSIgbm90IGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICJnZXQg
cmVrdCIgbm90IGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0
ZXN0X3BkYl9kb250X3ByaW50X2VtcHR5X2NhcHR1cmVkX3N0ZG91dF9hbmRfc3RkZXJyKHNlbGYs
IHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAg
ICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bh
d25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQor
ICAgICAgICBvdXRwdXQgPSBjaGlsZC5iZWZvcmUuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgY2hp
bGQuc2VuZGVvZigpCisgICAgICAgIGFzc2VydCAiY2FwdHVyZWQgc3Rkb3V0IiBub3QgaW4gb3V0
cHV0CisgICAgICAgIGFzc2VydCAiY2FwdHVyZWQgc3RkZXJyIiBub3QgaW4gb3V0cHV0CisgICAg
ICAgIHNlbGYuZmx1c2goY2hpbGQpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInNo
b3djYXB0dXJlIiwgWyJhbGwiLCAibm8iLCAibG9nIl0pCisgICAgZGVmIHRlc3RfcGRiX3ByaW50
X2NhcHR1cmVkX2xvZ3Moc2VsZiwgdGVzdGRpciwgc2hvd2NhcHR1cmUpOgorICAgICAgICBwMSA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRl
c3RfMSgpOgorICAgICAgICAgICAgICAgIGltcG9ydCBsb2dnaW5nCisgICAgICAgICAgICAgICAg
bG9nZ2luZy53YXJuKCJnZXQgIiArICJyZWt0IikKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFs
c2UKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXdu
X3B5dGVzdCgKKyAgICAgICAgICAgICItLXNob3ctY2FwdHVyZT17fSAtLXBkYiB7fSIuZm9ybWF0
KHNob3djYXB0dXJlLCBwMSkKKyAgICAgICAgKQorICAgICAgICBpZiBzaG93Y2FwdHVyZSBpbiAo
ImFsbCIsICJsb2ciKToKKyAgICAgICAgICAgIGNoaWxkLmV4cGVjdCgiY2FwdHVyZWQgbG9nIikK
KyAgICAgICAgICAgIGNoaWxkLmV4cGVjdCgiZ2V0IHJla3QiKQorICAgICAgICBjaGlsZC5leHBl
Y3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRlb2YoKQorICAgICAgICByZXN0ID0gY2hpbGQu
cmVhZCgpLmRlY29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiMSBmYWlsZWQiIGluIHJlc3QK
KyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9wcmludF9jYXB0
dXJlZF9sb2dzX25vbG9nZ2luZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToK
KyAgICAgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICAgICAgICAgIGxvZ2dpbmcu
d2FybigiZ2V0ICIgKyAicmVrdCIpCisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qo
Ii0tc2hvdy1jYXB0dXJlPWFsbCAtLXBkYiAtcCBubzpsb2dnaW5nICVzIiAlIHAxKQorICAgICAg
ICBjaGlsZC5leHBlY3QoImdldCByZWt0IikKKyAgICAgICAgb3V0cHV0ID0gY2hpbGQuYmVmb3Jl
LmRlY29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiY2FwdHVyZWQgbG9nIiBub3QgaW4gb3V0
cHV0CisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGVvZigp
CisgICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNz
ZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAg
ZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX2V4Y2VwdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiBnbG9iYWxmdW5jKCk6CisgICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgICAgIHB5
dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgZ2xvYmFsZnVuYykKKyAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMiICUgcDEp
CisgICAgICAgIGNoaWxkLmV4cGVjdCgiLipkZWYgdGVzdF8xIikKKyAgICAgICAgY2hpbGQuZXhw
ZWN0KCIuKnB5dGVzdC5yYWlzZXMuKmdsb2JhbGZ1bmMiKQorICAgICAgICBjaGlsZC5leHBlY3Qo
IlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJnbG9iYWxmdW5jIikKKyAgICAgICAgY2hp
bGQuZXhwZWN0KCIuKmZ1bmN0aW9uIikKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAg
IGNoaWxkLmV4cGVjdCgiMSBmYWlsZWQiKQorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisg
ICAgZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX29uX2NvbGxlY3Rpb25faXNzdWUxODEoc2VsZiwg
dGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICB4eHgKKyAgICAgICAg
IiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1w
ZGIgJXMiICUgcDEpCisgICAgICAgICMgY2hpbGQuZXhwZWN0KCIuKmltcG9ydCBweXRlc3QuKiIp
CisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMi
KQorICAgICAgICBjaGlsZC5leHBlY3QoIjEgZXJyb3IiKQorICAgICAgICBzZWxmLmZsdXNoKGNo
aWxkKQorCisgICAgZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX29uX2ludGVybmFsX2Vycm9yKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAg
ICIiIgorICAgICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKCk6CisgICAgICAg
ICAgICAgICAgMC8wCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHAxID0gdGVzdGRp
ci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQorICAgICAgICBjaGlsZCA9IHRl
c3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKKyAgICAgICAgY2hpbGQuZXhwZWN0
KCJQZGIiKQorCisgICAgICAgICMgSU5URVJOQUxFUlJPUiBpcyBvbmx5IGRpc3BsYXllZCBvbmNl
IHZpYSB0ZXJtaW5hbCByZXBvcnRlci4KKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIGxl
bigKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIHgKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIHggaW4gY2hpbGQuYmVmb3JlLmRlY29kZSgpLnNwbGl0bGluZXMoKQorICAg
ICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoIklOVEVSTkFMRVJST1I+IFRyYWNlYmFj
ayIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgPT0gMQor
ICAgICAgICApCisKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAgIHNlbGYuZmx1c2go
Y2hpbGQpCisKKyAgICBkZWYgdGVzdF9wZGJfcHJldmVudF9Db25mdGVzdEltcG9ydEZhaWx1cmVf
aGlkaW5nX2V4Y2VwdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQorICAgICAgICBzdWJfZGlyID0gdGVzdGRpci50
bXBkaXIuam9pbigibnMiKS5lbnN1cmVfZGlyKCkKKyAgICAgICAgc3ViX2Rpci5qb2luKCJjb25m
dGVzdCIpLm5ldyhleHQ9Ii5weSIpLndyaXRlKCJpbXBvcnQgdW5rbm93biIpCisgICAgICAgIHN1
Yl9kaXIuam9pbigidGVzdF9maWxlIikubmV3KGV4dD0iLnB5Iikud3JpdGUoImRlZiB0ZXN0X2Z1
bmMoKTogcGFzcyIpCisKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJv
Y2VzcygiLS1wZGIiLCAiLiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
Ii0+IGltcG9ydCB1bmtub3duIl0pCisKKyAgICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25fY2Fw
dHVyaW5nX3NpbXBsZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAg
ICAgICAgIGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBpID0gMAorICAgICAgICAgICAg
ICAgIHByaW50KCJoZWxsbzE3IikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkK
KyAgICAgICAgICAgICAgICBpID09IDEKKyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAg
ICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0
cihwMSkpCisgICAgICAgIGNoaWxkLmV4cGVjdChyInRlc3RfMVwoXCkiKQorICAgICAgICBjaGls
ZC5leHBlY3QoImkgPT0gMSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAg
Y2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgi
dXRmLTgiKQorICAgICAgICBhc3NlcnQgIkFzc2VydGlvbkVycm9yIiBpbiByZXN0CisgICAgICAg
IGFzc2VydCAiMSBmYWlsZWQiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICJkZWYgdGVzdF8xIiBp
biByZXN0CisgICAgICAgIGFzc2VydCAiaGVsbG8xNyIgaW4gcmVzdCAgIyBvdXQgaXMgY2FwdHVy
ZWQKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9zZXRfdHJh
Y2Vfa3dhcmdzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAg
ICAgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgICAgIGkgPSAwCisgICAgICAgICAgICAgICAg
cHJpbnQoImhlbGxvMTciKQorICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoaGVhZGVy
PSI9PSBteV9oZWFkZXIgPT0iKQorICAgICAgICAgICAgICAgIHggPSAzCisgICAgICAgICAgICAg
ICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0
ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpKQorICAgICAgICBjaGlsZC5leHBlY3QoIj09IG15X2hl
YWRlciA9PSIpCisgICAgICAgIGFzc2VydCAiUERCIHNldF90cmFjZSIgbm90IGluIGNoaWxkLmJl
Zm9yZS5kZWNvZGUoKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxk
LnNlbmRsaW5lKCJjIikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0Zi04
IikKKyAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgImRl
ZiB0ZXN0XzEiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICJoZWxsbzE3IiBpbiByZXN0ICAjIG91
dCBpcyBjYXB0dXJlZAorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3Rf
cGRiX3NldF90cmFjZV9pbnRlcmNlcHRpb24oc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0g
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQg
cGRiCisgICAgICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAgcGRiLnNldF90
cmFjZSgpCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5z
cGF3bl9weXRlc3Qoc3RyKHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzEiKQorICAg
ICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJxIikKKyAg
ICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQg
Im5vIHRlc3RzIHJhbiIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgInJlYWRpbmcgZnJvbSBzdGRp
biB3aGlsZSBvdXRwdXQiIG5vdCBpbiByZXN0CisgICAgICAgIGFzc2VydCAiQmRiUXVpdCIgbm90
IGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9h
bmRfY2Fwc3lzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAg
ICAgZGVmIHRlc3RfMShjYXBzeXMpOgorICAgICAgICAgICAgICAgIHByaW50KCJoZWxsbzEiKQor
ICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQorICAgICAgICAiIiIKKyAgICAgICAg
KQorICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCisgICAgICAg
IGNoaWxkLmV4cGVjdCgidGVzdF8xIikKKyAgICAgICAgY2hpbGQuc2VuZCgiY2Fwc3lzLnJlYWRv
dXRlcnIoKVxuIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJoZWxsbzEiKQorICAgICAgICBjaGls
ZC5zZW5kZW9mKCkKKyAgICAgICAgY2hpbGQucmVhZCgpCisgICAgICAgIHNlbGYuZmx1c2goY2hp
bGQpCisKKyAgICBkZWYgdGVzdF9wZGJfd2l0aF9jYXBsb2dfb25fcGRiX2ludm9jYXRpb24oc2Vs
ZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF8xKGNhcHN5cywgY2FwbG9nKToKKyAgICAgICAg
ICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKS53YXJuaW5nKCJzb21lX3dhcm5pbmciKQorICAgICAgICAgICAgICAgIGFzc2Vy
dCAwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3
bl9weXRlc3QoIi0tcGRiICVzIiAlIHN0cihwMSkpCisgICAgICAgIGNoaWxkLnNlbmQoImNhcGxv
Zy5yZWNvcmRfdHVwbGVzXG4iKQorICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoCisgICAgICAg
ICAgICAiWygndGVzdF9wZGJfd2l0aF9jYXBsb2dfb25fcGRiX2ludm9jYXRpb24nLCAzMCwgJ3Nv
bWVfd2FybmluZycpXSIKKyAgICAgICAgKQorICAgICAgICBjaGlsZC5zZW5kZW9mKCkKKyAgICAg
ICAgY2hpbGQucmVhZCgpCisgICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCisKKyAgICBkZWYgdGVz
dF9zZXRfdHJhY2VfY2FwdHVyaW5nX2FmdGVyd2FyZHMoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBp
bXBvcnQgcGRiCisgICAgICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAgcGRi
LnNldF90cmFjZSgpCisgICAgICAgICAgICBkZWYgdGVzdF8yKCk6CisgICAgICAgICAgICAgICAg
cHJpbnQoImhlbGxvIikKKyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIKKyAg
ICAgICAgKQorICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCisg
ICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikKKyAgICAgICAgY2hpbGQuc2VuZCgiY1xuIikK
KyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzIiKQorICAgICAgICBjaGlsZC5leHBlY3QoIkNh
cHR1cmVkIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJoZWxsbyIpCisgICAgICAgIGNoaWxkLnNl
bmRlb2YoKQorICAgICAgICBjaGlsZC5yZWFkKCkKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkK
KworICAgIGRlZiB0ZXN0X3BkYl9pbnRlcmFjdGlvbl9kb2N0ZXN0KHNlbGYsIHRlc3RkaXIpOgor
ICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgZGVmIGZ1bmN0aW9uXzEoKToKKyAgICAgICAgICAgICAgICAnJycKKyAgICAgICAgICAg
ICAgICA+Pj4gaSA9IDAKKyAgICAgICAgICAgICAgICA+Pj4gYXNzZXJ0IGkgPT0gMQorICAgICAg
ICAgICAgICAgICcnJworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGlsZCA9IHRl
c3RkaXIuc3Bhd25fcHl0ZXN0KCItLWRvY3Rlc3QtbW9kdWxlcyAtLXBkYiAlcyIgJSBwMSkKKyAg
ICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorCisgICAgICAgIGFzc2VydCAiVU5FWFBFQ1RFRCBF
WENFUFRJT046IEFzc2VydGlvbkVycm9yKCkiIGluIGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0Zjgi
KQorCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCInaT0laS4nICUgaSIpCisgICAgICAgIGNoaWxk
LmV4cGVjdCgiUGRiIikKKyAgICAgICAgYXNzZXJ0ICJcclxuJ2k9MC4nXHJcbiIgaW4gY2hpbGQu
YmVmb3JlLmRlY29kZSgidXRmOCIpCisKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAg
IHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICIhIF9w
eXRlc3Qub3V0Y29tZXMuRXhpdDogUXVpdHRpbmcgZGVidWdnZXIgISIgaW4gcmVzdAorICAgICAg
ICBhc3NlcnQgIkJkYlF1aXQiIG5vdCBpbiByZXN0CisgICAgICAgIGFzc2VydCAiMSBmYWlsZWQi
IGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X2RvY3Rl
c3Rfc2V0X3RyYWNlX3F1aXQoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgZnVuY3Rpb25fMSgp
OgorICAgICAgICAgICAgICAgICcnJworICAgICAgICAgICAgICAgID4+PiBfX2ltcG9ydF9fKCdw
ZGInKS5zZXRfdHJhY2UoKQorICAgICAgICAgICAgICAgICcnJworICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICAjIE5PVEU6IGRvZXMgbm90IHVzZSBweXRlc3Quc2V0X3RyYWNlLCBidXQg
UHl0aG9uJ3MgcGF0Y2hlZCBwZGIsCisgICAgICAgICMgICAgICAgdGhlcmVmb3JlICItcyIgaXMg
cmVxdWlyZWQuCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3QoIi0tZG9jdGVz
dC1tb2R1bGVzIC0tcGRiIC1zICVzIiAlIHAxKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIp
CisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJxIikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQo
KS5kZWNvZGUoInV0ZjgiKQorCisgICAgICAgIGFzc2VydCAiISBfcHl0ZXN0Lm91dGNvbWVzLkV4
aXQ6IFF1aXR0aW5nIGRlYnVnZ2VyICEiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICI9IG5vIHRl
c3RzIHJhbiBpbiIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgIkJkYlF1aXQiIG5vdCBpbiByZXN0
CisgICAgICAgIGFzc2VydCAiVU5FWFBFQ1RFRCBFWENFUFRJT04iIG5vdCBpbiByZXN0CisKKyAg
ICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25fY2FwdHVyaW5nX3R3aWNlKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAg
ICAgICAgICAgIGkgPSAwCisgICAgICAgICAgICAgICAgcHJpbnQoImhlbGxvMTciKQorICAgICAg
ICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQorICAgICAgICAgICAgICAgIHggPSAzCisgICAg
ICAgICAgICAgICAgcHJpbnQoImhlbGxvMTgiKQorICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRf
dHJhY2UoKQorICAgICAgICAgICAgICAgIHggPSA0CisgICAgICAgICAgICAgICAgYXNzZXJ0IDAK
KyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5
dGVzdChzdHIocDEpKQorICAgICAgICBjaGlsZC5leHBlY3QociJQREIgc2V0X3RyYWNlIFwoSU8t
Y2FwdHVyaW5nIHR1cm5lZCBvZmZcKSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikK
KyAgICAgICAgY2hpbGQuZXhwZWN0KCJ4ID0gMyIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRi
IikKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICBjaGlsZC5leHBlY3QociJQ
REIgY29udGludWUgXChJTy1jYXB0dXJpbmcgcmVzdW1lZFwpIikKKyAgICAgICAgY2hpbGQuZXhw
ZWN0KHIiUERCIHNldF90cmFjZSBcKElPLWNhcHR1cmluZyB0dXJuZWQgb2ZmXCkiKQorICAgICAg
ICBjaGlsZC5leHBlY3QoInggPSA0IikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAg
ICAgICBjaGlsZC5zZW5kbGluZSgiYyIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiXyB0ZXN0XzEg
XyIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiZGVmIHRlc3RfMSIpCisgICAgICAgIHJlc3QgPSBj
aGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICJDYXB0dXJlZCBzdGRv
dXQgY2FsbCIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgImhlbGxvMTciIGluIHJlc3QgICMgb3V0
IGlzIGNhcHR1cmVkCisgICAgICAgIGFzc2VydCAiaGVsbG8xOCIgaW4gcmVzdCAgIyBvdXQgaXMg
Y2FwdHVyZWQKKyAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAorICAgICAgICBzZWxm
LmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX3dpdGhfaW5qZWN0ZWRfZG9fZGVidWco
c2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlNpbXVsYXRlcyBwZGJwcCwgd2hpY2ggaW5qZWN0
cyBQZGIgaW50byBkb19kZWJ1ZywgYW5kIHVzZXMKKyAgICAgICAgc2VsZi5fX2NsYXNzX18gaW4g
ZG9fY29udGludWUuCisgICAgICAgICIiIgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgIG15dGVzdD0iIiIKKyAgICAgICAgICAgIGltcG9ydCBwZGIKKyAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgY291bnRfY29udGludWUgPSAwCisK
KyAgICAgICAgICAgIGNsYXNzIEN1c3RvbVBkYihwZGIuUGRiLCBvYmplY3QpOgorICAgICAgICAg
ICAgICAgIGRlZiBkb19kZWJ1ZyhzZWxmLCBhcmcpOgorICAgICAgICAgICAgICAgICAgICBpbXBv
cnQgc3lzCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0eXBlcworCisgICAgICAgICAgICAg
ICAgICAgIGRvX2RlYnVnX2Z1bmMgPSBwZGIuUGRiLmRvX2RlYnVnCisKKyAgICAgICAgICAgICAg
ICAgICAgbmV3Z2xvYmFscyA9IGRvX2RlYnVnX2Z1bmMuX19nbG9iYWxzX18uY29weSgpCisgICAg
ICAgICAgICAgICAgICAgIG5ld2dsb2JhbHNbJ1BkYiddID0gc2VsZi5fX2NsYXNzX18KKyAgICAg
ICAgICAgICAgICAgICAgb3JpZ19kb19kZWJ1ZyA9IHR5cGVzLkZ1bmN0aW9uVHlwZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2Z1bmMuX19jb2RlX18sIG5ld2dsb2JhbHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19mdW5jLl9fbmFtZV9fLCBkb19kZWJ1Z19m
dW5jLl9fZGVmYXVsdHNfXywKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb3JpZ19kb19kZWJ1ZyhzZWxmLCBhcmcpCisgICAgICAgICAgICAgICAgZG9f
ZGVidWcuX19kb2NfXyA9IHBkYi5QZGIuZG9fZGVidWcuX19kb2NfXworCisgICAgICAgICAgICAg
ICAgZGVmIGRvX2NvbnRpbnVlKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbCBjb3VudF9jb250aW51ZQorICAgICAgICAgICAgICAgICAgICBjb3VudF9j
b250aW51ZSArPSAxCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcihDdXN0b21QZGIs
IHNlbGYpLmRvX2NvbnRpbnVlKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgZGVmIGZv
bygpOgorICAgICAgICAgICAgICAgIHByaW50KCJwcmludF9mcm9tX2ZvbyIpCisKKyAgICAgICAg
ICAgIGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAg
IHByaW50KCJoZWxsbzE3IikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKKyAg
ICAgICAgICAgICAgICB4ID0gMworICAgICAgICAgICAgICAgIHByaW50KCJoZWxsbzE4IikKKwor
ICAgICAgICAgICAgICAgIGFzc2VydCBjb3VudF9jb250aW51ZSA9PSAyLCAidW5leHBlY3RlZF9m
YWlsdXJlOiAlZCAhPSAyIiAlIGNvdW50X2NvbnRpbnVlCisgICAgICAgICAgICAgICAgcHl0ZXN0
LmZhaWwoImV4cGVjdGVkX2ZhaWx1cmUiKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAg
ICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYmNscz1teXRlc3Q6Q3VzdG9tUGRi
ICVzIiAlIHN0cihwMSkpCisgICAgICAgIGNoaWxkLmV4cGVjdChyIlBEQiBzZXRfdHJhY2UgXChJ
Ty1jYXB0dXJpbmcgdHVybmVkIG9mZlwpIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KHIiXG5cKFBk
YiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJkZWJ1ZyBmb28oKSIpCisgICAgICAgIGNoaWxk
LmV4cGVjdCgiRU5URVJJTkcgUkVDVVJTSVZFIERFQlVHR0VSIikKKyAgICAgICAgY2hpbGQuZXhw
ZWN0KHIiXG5cKFwoUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICBj
aGlsZC5leHBlY3QoIkxFQVZJTkcgUkVDVVJTSVZFIERFQlVHR0VSIikKKyAgICAgICAgYXNzZXJ0
IGIiUERCIGNvbnRpbnVlIiBub3QgaW4gY2hpbGQuYmVmb3JlCisgICAgICAgICMgTm8gZXh0cmEg
bmV3bGluZS4KKyAgICAgICAgYXNzZXJ0IGNoaWxkLmJlZm9yZS5lbmRzd2l0aChiImNcclxucHJp
bnRfZnJvbV9mb29cclxuIikKKworICAgICAgICAjIHNldF9kZWJ1ZyBzaG91bGQgbm90IHJhaXNl
IG91dGNvbWVzLiBFeGl0LCBpZiB1c2VkIHJlY3Vyc2l2ZWx5LgorICAgICAgICBjaGlsZC5zZW5k
bGluZSgiZGVidWcgNDIiKQorICAgICAgICBjaGlsZC5zZW5kbGluZSgicSIpCisgICAgICAgIGNo
aWxkLmV4cGVjdCgiTEVBVklORyBSRUNVUlNJVkUgREVCVUdHRVIiKQorICAgICAgICBhc3NlcnQg
YiJFTlRFUklORyBSRUNVUlNJVkUgREVCVUdHRVIiIGluIGNoaWxkLmJlZm9yZQorICAgICAgICBh
c3NlcnQgYiJRdWl0dGluZyBkZWJ1Z2dlciIgbm90IGluIGNoaWxkLmJlZm9yZQorCisgICAgICAg
IGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KHIiUERCIGNvbnRpbnVl
IFwoSU8tY2FwdHVyaW5nIHJlc3VtZWRcKSIpCisgICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCku
ZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICJoZWxsbzE3IiBpbiByZXN0ICAjIG91dCBp
cyBjYXB0dXJlZAorICAgICAgICBhc3NlcnQgImhlbGxvMTgiIGluIHJlc3QgICMgb3V0IGlzIGNh
cHR1cmVkCisgICAgICAgIGFzc2VydCAiMSBmYWlsZWQiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0
ICJGYWlsZWQ6IGV4cGVjdGVkX2ZhaWx1cmUiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICJBc3Nl
cnRpb25FcnJvcjogdW5leHBlY3RlZF9mYWlsdXJlIiBub3QgaW4gcmVzdAorICAgICAgICBzZWxm
LmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX3dpdGhvdXRfY2FwdHVyZShzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToK
KyAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKKyAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLXMgJXMiICUgcDEpCisg
ICAgICAgIGNoaWxkLmV4cGVjdChyIj4+PiBQREIgc2V0X3RyYWNlID4+PiIpCisgICAgICAgIGNo
aWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICBj
aGlsZC5leHBlY3QociI+Pj4gUERCIGNvbnRpbnVlID4+PiIpCisgICAgICAgIGNoaWxkLmV4cGVj
dCgiMSBwYXNzZWQiKQorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJjYXB0dXJlX2FyZyIsICgiIiwgIi1zIiwgIi1wIG5vOmNhcHR1cmUi
KSkKKyAgICBkZWYgdGVzdF9wZGJfY29udGludWVfd2l0aF9yZWN1cnNpdmVfZGVidWcoc2VsZiwg
Y2FwdHVyZV9hcmcsIHRlc3RkaXIpOgorICAgICAgICAiIiJGdWxsIGNvdmVyYWdlIGZvciBkb19k
ZWJ1ZyB3aXRob3V0IGNhcHR1cmluZy4KKworICAgICAgICBUaGlzIGlzIHZlcnkgc2ltaWxhciB0
byB0ZXN0X3BkYl9pbnRlcmFjdGlvbl9jb250aW51ZV9yZWN1cnNpdmUgaW4gZ2VuZXJhbCwKKyAg
ICAgICAgYnV0IG1vY2tzIG91dCBgYHBkYi5zZXRfdHJhY2VgYCBmb3IgcHJvdmlkaW5nIG1vcmUg
Y292ZXJhZ2UuCisgICAgICAgICIiIgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlucHV0
ID0gcmF3X2lucHV0CisgICAgICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAg
ICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIHNldF90cmFjZSgpOgorICAgICAgICAgICAgICAg
IF9faW1wb3J0X18oJ3BkYicpLnNldF90cmFjZSgpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEo
bW9ua2V5cGF0Y2gpOgorICAgICAgICAgICAgICAgIGltcG9ydCBfcHl0ZXN0LmRlYnVnZ2luZwor
CisgICAgICAgICAgICAgICAgY2xhc3MgcHl0ZXN0UERCVGVzdChfcHl0ZXN0LmRlYnVnZ2luZy5w
eXRlc3RQREIpOgorICAgICAgICAgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAg
ICAgICAgICAgZGVmIHNldF90cmFjZShjbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAg
ICAgICAgICAgICAgICAjIEluaXQgUHl0ZXN0UGRiV3JhcHBlciB0byBoYW5kbGUgY2FwdHVyaW5n
LgorICAgICAgICAgICAgICAgICAgICAgICAgX3BkYiA9IGNscy5faW5pdF9wZGIoInNldF90cmFj
ZSIsICphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBNb2NrIG91
dCBwZGIuUGRiLmRvX2NvbnRpbnVlLgorICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHBk
YgorICAgICAgICAgICAgICAgICAgICAgICAgcGRiLlBkYi5kb19jb250aW51ZSA9IGxhbWJkYSBz
ZWxmLCBhcmc6IE5vbmUKKworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIj09PSIgKyAi
IFNFVF9UUkFDRSA9PT0iKQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlucHV0KCkg
PT0gImRlYnVnIHNldF90cmFjZSgpIgorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbXVs
YXRlIFB5dGVzdFBkYldyYXBwZXIuZG9fZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
cy5fcmVjdXJzaXZlX2RlYnVnICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJF
TlRFUklORyBSRUNVUlNJVkUgREVCVUdHRVIiKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnQoIj09PSIgKyAiIFNFVF9UUkFDRV8yID09PSIpCisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFzc2VydCBpbnB1dCgpID09ICJjIgorICAgICAgICAgICAgICAgICAgICAgICAgX3BkYi5kb19j
b250aW51ZSgiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCI9PT0iICsgIiBTRVRf
VFJBQ0VfMyA9PT0iKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbXVsYXRlIFB5dGVz
dFBkYldyYXBwZXIuZG9fZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJMRUFW
SU5HIFJFQ1VSU0lWRSBERUJVR0dFUiIpCisgICAgICAgICAgICAgICAgICAgICAgICBjbHMuX3Jl
Y3Vyc2l2ZV9kZWJ1ZyAtPSAxCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCI9PT0i
ICsgIiBTRVRfVFJBQ0VfNCA9PT0iKQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlu
cHV0KCkgPT0gImMiCisgICAgICAgICAgICAgICAgICAgICAgICBfcGRiLmRvX2NvbnRpbnVlKCIi
KQorCisgICAgICAgICAgICAgICAgICAgIGRlZiBkb19jb250aW51ZShzZWxmLCBhcmcpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIj09PSBkb19jb250aW51ZSIpCisKKyAgICAgICAg
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKF9weXRlc3QuZGVidWdnaW5nLCAicHl0ZXN0UERC
IiwgcHl0ZXN0UERCVGVzdCkKKworICAgICAgICAgICAgICAgIGltcG9ydCBwZGIKKyAgICAgICAg
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBkYiwgInNldF90cmFjZSIsIHB5dGVzdFBEQlRl
c3Quc2V0X3RyYWNlKQorCisgICAgICAgICAgICAgICAgc2V0X3RyYWNlKCkKKyAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS10Yj1z
aG9ydCB7fSB7fSIuZm9ybWF0KHAxLCBjYXB0dXJlX2FyZykpCisgICAgICAgIGNoaWxkLmV4cGVj
dCgiPT09IFNFVF9UUkFDRSA9PT0iKQorICAgICAgICBiZWZvcmUgPSBjaGlsZC5iZWZvcmUuZGVj
b2RlKCJ1dGY4IikKKyAgICAgICAgaWYgbm90IGNhcHR1cmVfYXJnOgorICAgICAgICAgICAgYXNz
ZXJ0ICI+Pj4gUERCIHNldF90cmFjZSAoSU8tY2FwdHVyaW5nIHR1cm5lZCBvZmYpID4+PiIgaW4g
YmVmb3JlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgIj4+PiBQREIgc2V0X3Ry
YWNlID4+PiIgaW4gYmVmb3JlCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJkZWJ1ZyBzZXRfdHJh
Y2UoKSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiPT09IFNFVF9UUkFDRV8yID09PSIpCisgICAg
ICAgIGJlZm9yZSA9IGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQg
IlxyXG5FTlRFUklORyBSRUNVUlNJVkUgREVCVUdHRVJcclxuIiBpbiBiZWZvcmUKKyAgICAgICAg
Y2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICBjaGlsZC5leHBlY3QoIj09PSBTRVRfVFJBQ0Vf
MyA9PT0iKQorCisgICAgICAgICMgTm8gY29udGludWUgbWVzc2FnZSB3aXRoIHJlY3Vyc2l2ZSBk
ZWJ1Z2dpbmcuCisgICAgICAgIGJlZm9yZSA9IGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQor
ICAgICAgICBhc3NlcnQgIj4+PiBQREIgY29udGludWUgIiBub3QgaW4gYmVmb3JlCisKKyAgICAg
ICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICBjaGlsZC5leHBlY3QoIj09PSBTRVRfVFJB
Q0VfNCA9PT0iKQorICAgICAgICBiZWZvcmUgPSBjaGlsZC5iZWZvcmUuZGVjb2RlKCJ1dGY4IikK
KyAgICAgICAgYXNzZXJ0ICJcclxuTEVBVklORyBSRUNVUlNJVkUgREVCVUdHRVJcclxuIiBpbiBi
ZWZvcmUKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICByZXN0ID0gY2hpbGQu
cmVhZCgpLmRlY29kZSgidXRmOCIpCisgICAgICAgIGlmIG5vdCBjYXB0dXJlX2FyZzoKKyAgICAg
ICAgICAgIGFzc2VydCAiPiBQREIgY29udGludWUgKElPLWNhcHR1cmluZyByZXN1bWVkKSA+IiBp
biByZXN0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgIj4gUERCIGNvbnRpbnVl
ID4iIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICI9IDEgcGFzc2VkIGluIiBpbiByZXN0CisKKyAg
ICBkZWYgdGVzdF9wZGJfdXNlZF9vdXRzaWRlX3Rlc3Qoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKKyAgICAgICAgICAg
IHggPSA1CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5z
cGF3bigie30ge30iLmZvcm1hdChzeXMuZXhlY3V0YWJsZSwgcDEpKQorICAgICAgICBjaGlsZC5l
eHBlY3QoInggPSA1IikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBjaGls
ZC5zZW5kZW9mKCkKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3Bk
Yl91c2VkX2luX2dlbmVyYXRlX3Rlc3RzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5
dGVzdAorICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Cisg
ICAgICAgICAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgpCisgICAgICAgICAgICAgICAgeCA9IDUK
KyAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbyhhKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qo
c3RyKHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ4ID0gNSIpCisgICAgICAgIGNoaWxkLmV4
cGVjdCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAgIHNlbGYuZmx1c2go
Y2hpbGQpCisKKyAgICBkZWYgdGVzdF9wZGJfY29sbGVjdGlvbl9mYWlsdXJlX2lzX3Nob3duKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgieHh4IikKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygiLS1wZGIiLCBwMSkK
KyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWyJFICAg
TmFtZUVycm9yOiAqeHh4KiIsICIqISAqRXhpdDogUXVpdHRpbmcgZGVidWdnZXIgISoiXSAgIyBk
dWUgdG8gRU9GCisgICAgICAgICkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicG9z
dF9tb3J0ZW0iLCAoRmFsc2UsIFRydWUpKQorICAgIGRlZiB0ZXN0X2VudGVyX2xlYXZlX3BkYl9o
b29rc19hcmVfY2FsbGVkKHNlbGYsIHBvc3RfbW9ydGVtLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVz
dGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIG15cGRiID0g
Tm9uZQorCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgorICAgICAg
ICAgICAgICAgIGNvbmZpZy50ZXN0aW5nX3ZlcmlmaWNhdGlvbiA9ICdjb25maWd1cmVkJworCisg
ICAgICAgICAgICBkZWYgcHl0ZXN0X2VudGVyX3BkYihjb25maWcsIHBkYik6CisgICAgICAgICAg
ICAgICAgYXNzZXJ0IGNvbmZpZy50ZXN0aW5nX3ZlcmlmaWNhdGlvbiA9PSAnY29uZmlndXJlZCcK
KyAgICAgICAgICAgICAgICBwcmludCgnZW50ZXJfcGRiX2hvb2snKQorCisgICAgICAgICAgICAg
ICAgZ2xvYmFsIG15cGRiCisgICAgICAgICAgICAgICAgbXlwZGIgPSBwZGIKKyAgICAgICAgICAg
ICAgICBteXBkYi5zZXRfYXR0cmlidXRlID0gImJhciIKKworICAgICAgICAgICAgZGVmIHB5dGVz
dF9sZWF2ZV9wZGIoY29uZmlnLCBwZGIpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjb25maWcu
dGVzdGluZ192ZXJpZmljYXRpb24gPT0gJ2NvbmZpZ3VyZWQnCisgICAgICAgICAgICAgICAgcHJp
bnQoJ2xlYXZlX3BkYl9ob29rJykKKworICAgICAgICAgICAgICAgIGdsb2JhbCBteXBkYgorICAg
ICAgICAgICAgICAgIGFzc2VydCBteXBkYiBpcyBwZGIKKyAgICAgICAgICAgICAgICBhc3NlcnQg
bXlwZGIuc2V0X2F0dHJpYnV0ZSA9PSAiYmFyIgorICAgICAgICAiIiIKKyAgICAgICAgKQorICAg
ICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBkZWYgdGVzdF9zZXRfdHJhY2UoKToKKyAg
ICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICBhc3NlcnQg
MAorCisgICAgICAgICAgICBkZWYgdGVzdF9wb3N0X21vcnRlbSgpOgorICAgICAgICAgICAgICAg
IGFzc2VydCAwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGlmIHBvc3RfbW9ydGVt
OgorICAgICAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpICsgIiAt
LXBkYiAtcyAtayB0ZXN0X3Bvc3RfbW9ydGVtIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSArICIgLWsgdGVzdF9zZXRfdHJh
Y2UiKQorICAgICAgICBjaGlsZC5leHBlY3QoImVudGVyX3BkYl9ob29rIikKKyAgICAgICAgY2hp
bGQuc2VuZGxpbmUoImMiKQorICAgICAgICBpZiBwb3N0X21vcnRlbToKKyAgICAgICAgICAgIGNo
aWxkLmV4cGVjdChyIlBEQiBjb250aW51ZSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBj
aGlsZC5leHBlY3QociJQREIgY29udGludWUgXChJTy1jYXB0dXJpbmcgcmVzdW1lZFwpIikKKyAg
ICAgICAgICAgIGNoaWxkLmV4cGVjdCgiQ2FwdHVyZWQgc3Rkb3V0IGNhbGwiKQorICAgICAgICBy
ZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAibGVhdmVf
cGRiX2hvb2siIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAorICAg
ICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX2N1c3RvbV9jbHMoc2Vs
ZiwgdGVzdGRpciwgY3VzdG9tX3BkYl9jYWxscyk6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtl
cHlmaWxlKCIiInh4eCAiIiIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lu
cHJvY2VzcygiLS1wZGIiLCAiLS1wZGJjbHM9X3B5dGVzdDpfQ3VzdG9tUGRiIiwgcDEpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipOYW1lRXJyb3IqeHh4KiIsICIqMSBl
cnJvcioiXSkKKyAgICAgICAgYXNzZXJ0IGN1c3RvbV9wZGJfY2FsbHMgPT0gWyJpbml0IiwgInJl
c2V0IiwgImludGVyYWN0aW9uIl0KKworICAgIGRlZiB0ZXN0X3BkYl9jdXN0b21fY2xzX2ludmFs
aWQoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lu
cHJvY2VzcygiLS1wZGJjbHM9aW52YWxpZCIpCisgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRj
aF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKjogZXJyb3I6IGFyZ3Vt
ZW50IC0tcGRiY2xzOiAnaW52YWxpZCcgaXMgbm90IGluIHRoZSBmb3JtYXQgJ21vZG5hbWU6Y2xh
c3NuYW1lJyIKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcGRiX3Zh
bGlkYXRlX3VzZXBkYl9jbHMoc2VsZik6CisgICAgICAgIGFzc2VydCBfdmFsaWRhdGVfdXNlcGRi
X2Nscygib3MucGF0aDpkaXJuYW1lLl9fbmFtZV9fIikgPT0gKAorICAgICAgICAgICAgIm9zLnBh
dGgiLAorICAgICAgICAgICAgImRpcm5hbWUuX19uYW1lX18iLAorICAgICAgICApCisKKyAgICAg
ICAgYXNzZXJ0IF92YWxpZGF0ZV91c2VwZGJfY2xzKCJwZGI6RG9lc05vdEV4aXN0IikgPT0gKCJw
ZGIiLCAiRG9lc05vdEV4aXN0IikKKworICAgIGRlZiB0ZXN0X3BkYl9jdXN0b21fY2xzX3dpdGhv
dXRfcGRiKHNlbGYsIHRlc3RkaXIsIGN1c3RvbV9wZGJfY2FsbHMpOgorICAgICAgICBwMSA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgiIiJ4eHggIiIiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdF9pbnByb2Nlc3MoIi0tcGRiY2xzPV9weXRlc3Q6X0N1c3RvbVBkYiIsIHAxKQorICAg
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqTmFtZUVycm9yKnh4eCoiLCAiKjEg
ZXJyb3IqIl0pCisgICAgICAgIGFzc2VydCBjdXN0b21fcGRiX2NhbGxzID09IFtdCisKKyAgICBk
ZWYgdGVzdF9wZGJfY3VzdG9tX2Nsc193aXRoX3NldF90cmFjZShzZWxmLCB0ZXN0ZGlyLCBtb25r
ZXlwYXRjaCk6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgIGN1c3Rv
bV9wZGI9IiIiCisgICAgICAgICAgICBjbGFzcyBDdXN0b21QZGIob2JqZWN0KToKKyAgICAgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAg
ICAgICAgICAgc2tpcCA9IGt3YXJncy5wb3AoInNraXAiKQorICAgICAgICAgICAgICAgICAgICBh
c3NlcnQgc2tpcCA9PSBbImZvby4qIl0KKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIl9faW5p
dF9fIikKKyAgICAgICAgICAgICAgICAgICAgc3VwZXIoQ3VzdG9tUGRiLCBzZWxmKS5fX2luaXRf
XygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgICAgICAgICBkZWYgc2V0X3RyYWNlKCphcmdz
LCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXN0b20gc2V0X3RyYWNl
PicpCisgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAg
ICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNl
KHNraXA9Wydmb28uKiddKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBtb25rZXlw
YXRjaC5zZXRlbnYoIlBZVEhPTlBBVEgiLCBzdHIodGVzdGRpci50bXBkaXIpKQorICAgICAgICBj
aGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYmNscz1jdXN0b21fcGRiOkN1c3RvbVBk
YiAlcyIgJSBzdHIocDEpKQorCisgICAgICAgIGNoaWxkLmV4cGVjdCgiX19pbml0X18iKQorICAg
ICAgICBjaGlsZC5leHBlY3QoImN1c3RvbSBzZXRfdHJhY2U+IikKKyAgICAgICAgc2VsZi5mbHVz
aChjaGlsZCkKKworCitjbGFzcyBUZXN0RGVidWdnaW5nQnJlYWtwb2ludHM6CisgICAgZGVmIHRl
c3Rfc3VwcG9ydHNfYnJlYWtwb2ludF9tb2R1bGVfZ2xvYmFsKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgVGVzdCB0aGF0IHN1cHBvcnRzIGJyZWFrcG9pbnQgZ2xvYmFsIG1hcmtzIG9uIFB5
dGhvbiAzLjcrIGFuZCBub3Qgb24KKyAgICAgICAgQ1B5dGhvbiAzLjUsIDIuNworICAgICAgICAi
IiIKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgICAgICAgICBh
c3NlcnQgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOIGlzIFRydWUKKyAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mby5tYWpvciA9PSAzIGFuZCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yID09IDU6
CisgICAgICAgICAgICBhc3NlcnQgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOIGlzIEZhbHNl
ICAjIHR5cGU6IGlnbm9yZVtjb21wYXJpc29uLW92ZXJsYXBdCisKKyAgICBAcHl0ZXN0Lm1hcmsu
c2tpcGlmKAorICAgICAgICBub3QgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOLCByZWFzb249
IlJlcXVpcmVzIGJyZWFrcG9pbnQoKSBidWlsdGluIgorICAgICkKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoImFyZyIsIFsiLS1wZGIiLCAiIl0pCisgICAgZGVmIHRlc3Rfc3lzX2JyZWFr
cG9pbnRob29rX2NvbmZpZ3VyZV9hbmRfdW5jb25maWd1cmUoc2VsZiwgdGVzdGRpciwgYXJnKToK
KyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBzeXMuYnJlYWtwb2ludGhvb2sgaXMgc2V0
IHRvIHRoZSBjdXN0b20gUGRiIGNsYXNzIG9uY2UgY29uZmlndXJlZCwgdGVzdCB0aGF0CisgICAg
ICAgIGhvb2sgaXMgcmVzZXQgdG8gc3lzdGVtIHZhbHVlIG9uY2UgcHl0ZXN0IGhhcyBiZWVuIHVu
Y29uZmlndXJlZAorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGZyb20g
cHl0ZXN0IGltcG9ydCBob29raW1wbAorICAgICAgICAgICAgZnJvbSBfcHl0ZXN0LmRlYnVnZ2lu
ZyBpbXBvcnQgcHl0ZXN0UERCCisKKyAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNv
bmZpZyk6CisgICAgICAgICAgICAgICAgY29uZmlnLl9jbGVhbnVwLmFwcGVuZChjaGVja19yZXN0
b3JlZCkKKworICAgICAgICAgICAgZGVmIGNoZWNrX3Jlc3RvcmVkKCk6CisgICAgICAgICAgICAg
ICAgYXNzZXJ0IHN5cy5icmVha3BvaW50aG9vayA9PSBzeXMuX19icmVha3BvaW50aG9va19fCisK
KyAgICAgICAgICAgIGRlZiB0ZXN0X2NoZWNrKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHN5
cy5icmVha3BvaW50aG9vayA9PSBweXRlc3RQREIuc2V0X3RyYWNlCisgICAgICAgICIiIgorICAg
ICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgZGVmIHRlc3Rfbm90aGluZygpOiBwYXNzCisgICAgICAgICIiIgorICAgICAgICAp
CisgICAgICAgIGFyZ3MgPSAoYXJnLCkgaWYgYXJnIGVsc2UgKCkKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygqYXJncykKKyAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkIGluICoiXSkKKworICAgIEBweXRlc3QubWFyay5z
a2lwaWYoCisgICAgICAgIG5vdCBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4sIHJlYXNvbj0i
UmVxdWlyZXMgYnJlYWtwb2ludCgpIGJ1aWx0aW4iCisgICAgKQorICAgIGRlZiB0ZXN0X3BkYl9j
dXN0b21fY2xzKHNlbGYsIHRlc3RkaXIsIGN1c3RvbV9kZWJ1Z2dlcl9ob29rKToKKyAgICAgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X25vdGhpbmcoKToKKyAgICAgICAgICAgICAgICBicmVha3BvaW50KCkKKyAgICAgICAg
IiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9j
ZXNzKAorICAgICAgICAgICAgIi0tcGRiIiwgIi0tcGRiY2xzPV9weXRlc3Q6X0N1c3RvbURlYnVn
Z2VyIiwgcDEKKyAgICAgICAgKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqQ3VzdG9tRGVidWdnZXIqIiwgIioxIHBhc3NlZCoiXSkKKyAgICAgICAgYXNzZXJ0IGN1c3Rv
bV9kZWJ1Z2dlcl9ob29rID09IFsiaW5pdCIsICJzZXRfdHJhY2UiXQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJhcmciLCBbIi0tcGRiIiwgIiJdKQorICAgIEBweXRlc3QubWFyay5z
a2lwaWYoCisgICAgICAgIG5vdCBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4sIHJlYXNvbj0i
UmVxdWlyZXMgYnJlYWtwb2ludCgpIGJ1aWx0aW4iCisgICAgKQorICAgIGRlZiB0ZXN0X2Vudmly
b25fY3VzdG9tX2NsYXNzKHNlbGYsIHRlc3RkaXIsIGN1c3RvbV9kZWJ1Z2dlcl9ob29rLCBhcmcp
OgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIG9z
LmVudmlyb25bJ1BZVEhPTkJSRUFLUE9JTlQnXSA9ICdfcHl0ZXN0Ll9DdXN0b21EZWJ1Z2dlci5z
ZXRfdHJhY2UnCisKKyAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Cisg
ICAgICAgICAgICAgICAgY29uZmlnLl9jbGVhbnVwLmFwcGVuZChjaGVja19yZXN0b3JlZCkKKwor
ICAgICAgICAgICAgZGVmIGNoZWNrX3Jlc3RvcmVkKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0
IHN5cy5icmVha3BvaW50aG9vayA9PSBzeXMuX19icmVha3BvaW50aG9va19fCisKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X2NoZWNrKCk6CisgICAgICAgICAgICAgICAgaW1wb3J0IF9weXRlc3QKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgc3lzLmJyZWFrcG9pbnRob29rIGlzIF9weXRlc3QuX0N1c3Rv
bURlYnVnZ2VyLnNldF90cmFjZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X25v
dGhpbmcoKTogcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBhcmdzID0gKGFy
ZywpIGlmIGFyZyBlbHNlICgpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1
YnByb2Nlc3MoKmFyZ3MpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiox
IHBhc3NlZCBpbiAqIl0pCisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3Qg
U1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOLCByZWFzb249IlJlcXVpcmVzIGJyZWFrcG9pbnQo
KSBidWlsdGluIgorICAgICkKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3Qg
X0VOVklST05fUFlUSE9OQlJFQUtQT0lOVCA9PSAiIiwKKyAgICAgICAgcmVhc29uPSJSZXF1aXJl
cyBicmVha3BvaW50KCkgZGVmYXVsdCB2YWx1ZSIsCisgICAgKQorICAgIGRlZiB0ZXN0X3N5c19i
cmVha3BvaW50X2ludGVyY2VwdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEo
KToKKyAgICAgICAgICAgICAgICBicmVha3BvaW50KCkKKyAgICAgICAgIiIiCisgICAgICAgICkK
KyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpKQorICAgICAgICBj
aGlsZC5leHBlY3QoInRlc3RfMSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAg
ICAgY2hpbGQuc2VuZGxpbmUoInF1aXQiKQorICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRl
Y29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiUXVpdHRpbmcgZGVidWdnZXIiIGluIHJlc3QK
KyAgICAgICAgYXNzZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0IiBub3QgaW4g
cmVzdAorICAgICAgICBUZXN0UERCLmZsdXNoKGNoaWxkKQorCisgICAgQHB5dGVzdC5tYXJrLnNr
aXBpZigKKyAgICAgICAgbm90IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiwgcmVhc29uPSJS
ZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRpbiIKKyAgICApCisgICAgZGVmIHRlc3RfcGRiX25v
dF9hbHRlcmVkKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHBkYgorICAgICAgICAgICAg
ZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgICAgIHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAg
ICAgICAgIGFzc2VydCAwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0g
dGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0
XzEiKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5l
KCJjIikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgICAg
ICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0CisgICAgICAgIGFzc2VydCAicmVhZGluZyBmcm9t
IHN0ZGluIHdoaWxlIG91dHB1dCIgbm90IGluIHJlc3QKKyAgICAgICAgVGVzdFBEQi5mbHVzaChj
aGlsZCkKKworCitjbGFzcyBUZXN0VHJhY2VPcHRpb246CisgICAgZGVmIHRlc3RfdHJhY2Vfc2V0
c19icmVha3BvaW50KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAg
ICAgICAgICAgIGFzc2VydCBUcnVlCisKKyAgICAgICAgICAgIGRlZiB0ZXN0XzIoKToKKyAgICAg
ICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiB0ZXN0XzMoKToKKyAgICAgICAgICAg
ICAgICBwYXNzCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGlsZCA9IHRl
c3RkaXIuc3Bhd25fcHl0ZXN0KCItLXRyYWNlICIgKyBzdHIocDEpKQorICAgICAgICBjaGlsZC5l
eHBlY3QoInRlc3RfMSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgY2hp
bGQuc2VuZGxpbmUoImMiKQorICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMiIpCisgICAgICAg
IGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAg
ICBjaGlsZC5leHBlY3QoInRlc3RfMyIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAg
ICAgICAgY2hpbGQuc2VuZGxpbmUoInEiKQorICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoIkV4
aXQ6IFF1aXR0aW5nIGRlYnVnZ2VyIikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNv
ZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQgIj0gMiBwYXNzZWQgaW4iIGluIHJlc3QKKyAgICAg
ICAgYXNzZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0IiBub3QgaW4gcmVzdAor
ICAgICAgICAjIE9ubHkgcHJpbnRlZCBvbmNlIC0gbm90IG9uIHN0ZGVyci4KKyAgICAgICAgYXNz
ZXJ0ICJFeGl0OiBRdWl0dGluZyBkZWJ1Z2dlciIgbm90IGluIGNoaWxkLmJlZm9yZS5kZWNvZGUo
InV0ZjgiKQorICAgICAgICBUZXN0UERCLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfdHJh
Y2Vfd2l0aF9wYXJhbWV0cml6ZV9oYW5kbGVzX3NoYXJlZF9maXh0dXJlaW5mbyhzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgnbXlwYXJhbScsIFsxLDJdKQorICAgICAgICAgICAgZGVmIHRlc3RfMShteXBhcmFt
LCByZXF1ZXN0KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgbXlwYXJhbSBpbiAoMSwgMikKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgcmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXyA9PSAidGVzdF8x
IgorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdmdW5jJywgWzEsMl0pCisg
ICAgICAgICAgICBkZWYgdGVzdF9mdW5jKGZ1bmMsIHJlcXVlc3QpOgorICAgICAgICAgICAgICAg
IGFzc2VydCBmdW5jIGluICgxLCAyKQorICAgICAgICAgICAgICAgIGFzc2VydCByZXF1ZXN0LmZ1
bmN0aW9uLl9fbmFtZV9fID09ICJ0ZXN0X2Z1bmMiCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoJ215cGFyYW0nLCBbMSwyXSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmNf
a3cobXlwYXJhbSwgcmVxdWVzdCwgZnVuYz0iZnVuY19rdyIpOgorICAgICAgICAgICAgICAgIGFz
c2VydCBteXBhcmFtIGluICgxLCAyKQorICAgICAgICAgICAgICAgIGFzc2VydCBmdW5jID09ICJm
dW5jX2t3IgorICAgICAgICAgICAgICAgIGFzc2VydCByZXF1ZXN0LmZ1bmN0aW9uLl9fbmFtZV9f
ID09ICJ0ZXN0X2Z1bmNfa3ciCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBj
aGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXRyYWNlICIgKyBzdHIocDEpKQorICAgICAg
ICBmb3IgZnVuYywgYXJnbmFtZSBpbiBbCisgICAgICAgICAgICAoInRlc3RfMSIsICJteXBhcmFt
IiksCisgICAgICAgICAgICAoInRlc3RfZnVuYyIsICJmdW5jIiksCisgICAgICAgICAgICAoInRl
c3RfZnVuY19rdyIsICJteXBhcmFtIiksCisgICAgICAgIF06CisgICAgICAgICAgICBjaGlsZC5l
eHBlY3RfZXhhY3QoIj4gUERCIHJ1bmNhbGwgKElPLWNhcHR1cmluZyB0dXJuZWQgb2ZmKSA+IikK
KyAgICAgICAgICAgIGNoaWxkLmV4cGVjdF9leGFjdChmdW5jKQorICAgICAgICAgICAgY2hpbGQu
ZXhwZWN0X2V4YWN0KCJQZGIiKQorICAgICAgICAgICAgY2hpbGQuc2VuZGxpbmUoImFyZ3MiKQor
ICAgICAgICAgICAgY2hpbGQuZXhwZWN0X2V4YWN0KCJ7fSA9IDFcclxuIi5mb3JtYXQoYXJnbmFt
ZSkpCisgICAgICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoIlBkYiIpCisgICAgICAgICAgICBj
aGlsZC5zZW5kbGluZSgiYyIpCisgICAgICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoIlBkYiIp
CisgICAgICAgICAgICBjaGlsZC5zZW5kbGluZSgiYXJncyIpCisgICAgICAgICAgICBjaGlsZC5l
eHBlY3RfZXhhY3QoInt9ID0gMlxyXG4iLmZvcm1hdChhcmduYW1lKSkKKyAgICAgICAgICAgIGNo
aWxkLmV4cGVjdF9leGFjdCgiUGRiIikKKyAgICAgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikK
KyAgICAgICAgICAgIGNoaWxkLmV4cGVjdF9leGFjdCgiPiBQREIgY29udGludWUgKElPLWNhcHR1
cmluZyByZXN1bWVkKSA+IikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0
ZjgiKQorICAgICAgICBhc3NlcnQgIj0gNiBwYXNzZWQgaW4iIGluIHJlc3QKKyAgICAgICAgYXNz
ZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0IiBub3QgaW4gcmVzdAorICAgICAg
ICAjIE9ubHkgcHJpbnRlZCBvbmNlIC0gbm90IG9uIHN0ZGVyci4KKyAgICAgICAgYXNzZXJ0ICJF
eGl0OiBRdWl0dGluZyBkZWJ1Z2dlciIgbm90IGluIGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0Zjgi
KQorICAgICAgICBUZXN0UERCLmZsdXNoKGNoaWxkKQorCisKK2RlZiB0ZXN0X3RyYWNlX2FmdGVy
X3J1bnB5dGVzdCh0ZXN0ZGlyKToKKyAgICAiIiJUZXN0IHRoYXQgZGVidWdnaW5nJ3MgcHl0ZXN0
X2NvbmZpZ3VyZSBpcyByZS1lbnRyYW50LiIiIgorICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAiIiIKKyAgICAgICAgZnJvbSBfcHl0ZXN0LmRlYnVnZ2luZyBpbXBvcnQgcHl0
ZXN0UERCCisKKyAgICAgICAgZGVmIHRlc3Rfb3V0ZXIodGVzdGRpcik6CisgICAgICAgICAgICBh
c3NlcnQgbGVuKHB5dGVzdFBEQi5fc2F2ZWQpID09IDEKKworICAgICAgICAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAgICAgICAgIFwiIiIKKyAgICAgICAgICAgICAgICBmcm9tIF9w
eXRlc3QuZGVidWdnaW5nIGltcG9ydCBweXRlc3RQREIKKworICAgICAgICAgICAgICAgIGRlZiB0
ZXN0X2lubmVyKCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBsZW4ocHl0ZXN0UERCLl9z
YXZlZCkgPT0gMgorICAgICAgICAgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICAgICAg
ICAgIHByaW50KCJ0ZXN0X2lubmVyXyIgKyAiZW5kIikKKyAgICAgICAgICAgICAgICBcIiIiCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
cyIsICItayIsICJ0ZXN0X2lubmVyIikKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKKworICAgICAgICAgICAgYXNzZXJ0IGxlbihweXRlc3RQREIuX3NhdmVkKSA9PSAxCisgICAg
IiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi1z
IiwgIi1wIiwgInB5dGVzdGVyIiwgc3RyKHAxKSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoWyJ0ZXN0X2lubmVyX2VuZCJdKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKwor
CitkZWYgdGVzdF9xdWl0X3dpdGhfc3dhbGxvd2VkX1N5c3RlbUV4aXQodGVzdGRpcik6CisgICAg
IiIiVGVzdCB0aGF0IGRlYnVnZ2luZydzIHB5dGVzdF9jb25maWd1cmUgaXMgcmUtZW50cmFudC4i
IiIKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGRl
ZiBjYWxsX3BkYl9zZXRfdHJhY2UoKToKKyAgICAgICAgICAgIF9faW1wb3J0X18oJ3BkYicpLnNl
dF90cmFjZSgpCisKKworICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgY2FsbF9wZGJfc2V0X3RyYWNlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBT
eXN0ZW1FeGl0OgorICAgICAgICAgICAgICAgIHBhc3MKKworCisgICAgICAgIGRlZiB0ZXN0XzIo
KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgY2hpbGQgPSB0ZXN0ZGly
LnNwYXduX3B5dGVzdChzdHIocDEpKQorICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICBjaGls
ZC5zZW5kbGluZSgicSIpCisgICAgY2hpbGQuZXhwZWN0X2V4YWN0KCJFeGl0OiBRdWl0dGluZyBk
ZWJ1Z2dlciIpCisgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgIGFz
c2VydCAibm8gdGVzdHMgcmFuIiBpbiByZXN0CisgICAgVGVzdFBEQi5mbHVzaChjaGlsZCkKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZpeHR1cmUiLCAoImNhcGZkIiwgImNhcHN5cyIp
KQorZGVmIHRlc3RfcGRiX3N1c3BlbmRzX2ZpeHR1cmVfY2FwdHVyaW5nKHRlc3RkaXIsIGZpeHR1
cmUpOgorICAgICIiIlVzaW5nICItcyIgd2l0aCBweXRlc3Qgc2hvdWxkIHN1c3BlbmQvcmVzdW1l
IGZpeHR1cmUgY2FwdHVyaW5nLiIiIgorICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfaW5uZXIoe2ZpeHR1cmV9KToKKyAgICAgICAgICAg
IGltcG9ydCBzeXMKKworICAgICAgICAgICAgcHJpbnQoIm91dF9pbm5lcl9iZWZvcmUiKQorICAg
ICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZXJyX2lubmVyX2JlZm9yZVxcbiIpCisKKyAgICAg
ICAgICAgIF9faW1wb3J0X18oInBkYiIpLnNldF90cmFjZSgpCisKKyAgICAgICAgICAgIHByaW50
KCJvdXRfaW5uZXJfYWZ0ZXIiKQorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZXJyX2lu
bmVyX2FmdGVyXFxuIikKKworICAgICAgICAgICAgb3V0LCBlcnIgPSB7Zml4dHVyZX0ucmVhZG91
dGVycigpCisgICAgICAgICAgICBhc3NlcnQgb3V0ID09Im91dF9pbm5lcl9iZWZvcmVcXG5vdXRf
aW5uZXJfYWZ0ZXJcXG4iCisgICAgICAgICAgICBhc3NlcnQgZXJyID09ImVycl9pbm5lcl9iZWZv
cmVcXG5lcnJfaW5uZXJfYWZ0ZXJcXG4iCisgICAgICAgICIiIi5mb3JtYXQoCisgICAgICAgICAg
ICBmaXh0dXJlPWZpeHR1cmUKKyAgICAgICAgKQorICAgICkKKworICAgIGNoaWxkID0gdGVzdGRp
ci5zcGF3bl9weXRlc3Qoc3RyKHAxKSArICIgLXMiKQorCisgICAgY2hpbGQuZXhwZWN0KCJQZGIi
KQorICAgIGJlZm9yZSA9IGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQorICAgIGFzc2VydCAo
CisgICAgICAgICI+IFBEQiBzZXRfdHJhY2UgKElPLWNhcHR1cmluZyB0dXJuZWQgb2ZmIGZvciBm
aXh0dXJlICVzKSA+IiAlIChmaXh0dXJlKQorICAgICAgICBpbiBiZWZvcmUKKyAgICApCisKKyAg
ICAjIFRlc3QgdGhhdCBjYXB0dXJpbmcgaXMgcmVhbGx5IHN1c3BlbmRlZC4KKyAgICBjaGlsZC5z
ZW5kbGluZSgicCA0MCArIDIiKQorICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICBhc3NlcnQg
IlxyXG40MlxyXG4iIGluIGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQorCisgICAgY2hpbGQu
c2VuZGxpbmUoImMiKQorICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAg
ICBhc3NlcnQgIm91dF9pbm5lciIgbm90IGluIHJlc3QKKyAgICBhc3NlcnQgImVycl9pbm5lciIg
bm90IGluIHJlc3QKKworICAgIFRlc3RQREIuZmx1c2goY2hpbGQpCisgICAgYXNzZXJ0IGNoaWxk
LmV4aXRzdGF0dXMgPT0gMAorICAgIGFzc2VydCAiPSAxIHBhc3NlZCBpbiIgaW4gcmVzdAorICAg
IGFzc2VydCAiPiBQREIgY29udGludWUgKElPLWNhcHR1cmluZyByZXN1bWVkIGZvciBmaXh0dXJl
ICVzKSA+IiAlIChmaXh0dXJlKSBpbiByZXN0CisKKworZGVmIHRlc3RfcGRiY2xzX3ZpYV9sb2Nh
bF9tb2R1bGUodGVzdGRpcik6CisgICAgIiIiSXQgc2hvdWxkIGJlIGltcG9ydGVkIGluIHB5dGVz
dF9jb25maWd1cmUgb3IgbGF0ZXIgb25seS4iIiIKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwcmludCgi
YmVmb3JlX3NldF90cmFjZSIpCisgICAgICAgICAgICBfX2ltcG9ydF9fKCJwZGIiKS5zZXRfdHJh
Y2UoKQorICAgICAgICAiIiIsCisgICAgICAgIG15cGRiPSIiIgorICAgICAgICBjbGFzcyBXcmFw
cGVkOgorICAgICAgICAgICAgY2xhc3MgTXlQZGI6CisgICAgICAgICAgICAgICAgZGVmIHNldF90
cmFjZShzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJzZXRfdHJhY2Vf
Y2FsbGVkIiwgYXJncykKKworICAgICAgICAgICAgICAgIGRlZiBydW5jYWxsKHNlbGYsICphcmdz
LCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgICAgICBwcmludCgicnVuY2FsbF9jYWxsZWQiLCBh
cmdzLCBrd2RzKQorICAgICAgICAiIiIsCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KAorICAgICAgICBzdHIocDEpLCAiLS1wZGJjbHM9cmVhbGx5LmludmFsaWQ6VmFsdWUi
LCBzeXNwYXRoaW5zZXJ0PVRydWUKKyAgICApCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKj0gRkFJTFVSRVMgPSoiLAorICAgICAgICAg
ICAgIkUgKiAtLXBkYmNsczogY291bGQgbm90IGltcG9ydCAncmVhbGx5LmludmFsaWQ6VmFsdWUn
OiBObyBtb2R1bGUgbmFtZWQgKnJlYWxseSoiLAorICAgICAgICBdCisgICAgKQorICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IDEKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KAorICAg
ICAgICBzdHIocDEpLCAiLS1wZGJjbHM9bXlwZGI6V3JhcHBlZC5NeVBkYiIsIHN5c3BhdGhpbnNl
cnQ9VHJ1ZQorICAgICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnNldF90cmFjZV9jYWxsZWQqIiwgIiogMSBwYXNzZWQgaW4g
KiJdKQorCisgICAgIyBFbnN1cmUgdGhhdCBpdCBhbHNvIHdvcmtzIHdpdGggLS10cmFjZS4KKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAgICAgICAgc3RyKHAxKSwgIi0tcGRiY2xz
PW15cGRiOldyYXBwZWQuTXlQZGIiLCAiLS10cmFjZSIsIHN5c3BhdGhpbnNlcnQ9VHJ1ZQorICAg
ICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKnJ1bmNhbGxfY2FsbGVkKiIsICIqIDEgcGFzc2VkIGluICoiXSkKKworCitkZWYg
dGVzdF9yYWlzZXNfYmRicXVpdF93aXRoX2VvZmVycm9yKHRlc3RkaXIpOgorICAgICIiIkl0IGlz
IG5vdCBndWFyYW50ZWVkIHRoYXQgRG9udFJlYWRGcm9tSW5wdXQncyByZWFkIGlzIGNhbGxlZC4i
IiIKKworICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAg
ZGVmIGlucHV0X3dpdGhvdXRfcmVhZCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmFp
c2UgRU9GRXJyb3IoKQorCisgICAgICAgIGRlZiB0ZXN0KG1vbmtleXBhdGNoKToKKyAgICAgICAg
ICAgIGltcG9ydCBidWlsdGlucworICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihidWls
dGlucywgImlucHV0IiwgaW5wdXRfd2l0aG91dF9yZWFkKQorICAgICAgICAgICAgX19pbXBvcnRf
XygncGRiJykuc2V0X3RyYWNlKCkKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHN0cihwMSkpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiRSAqQmRiUXVpdCIsICIqPSAxIGZhaWxlZCBpbioiXSkKKyAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAxCisKKworZGVmIHRlc3RfcGRiX3dyYXBwZXJfY2xhc3NfaXNfcmV1c2VkKHRlc3RkaXIp
OgorICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVm
IHRlc3QoKToKKyAgICAgICAgICAgIF9faW1wb3J0X18oInBkYiIpLnNldF90cmFjZSgpCisgICAg
ICAgICAgICBfX2ltcG9ydF9fKCJwZGIiKS5zZXRfdHJhY2UoKQorCisgICAgICAgICAgICBpbXBv
cnQgbXlwZGIKKyAgICAgICAgICAgIGluc3RhbmNlcyA9IG15cGRiLmluc3RhbmNlcworICAgICAg
ICAgICAgYXNzZXJ0IGxlbihpbnN0YW5jZXMpID09IDIKKyAgICAgICAgICAgIGFzc2VydCBpbnN0
YW5jZXNbMF0uX19jbGFzc19fIGlzIGluc3RhbmNlc1sxXS5fX2NsYXNzX18KKyAgICAgICAgIiIi
LAorICAgICAgICBteXBkYj0iIiIKKyAgICAgICAgaW5zdGFuY2VzID0gW10KKworICAgICAgICBj
bGFzcyBNeVBkYjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICAgICAgICAgIGluc3RhbmNlcy5hcHBlbmQoc2VsZikKKworICAgICAgICAg
ICAgZGVmIHNldF90cmFjZShzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgcHJpbnQoInNl
dF90cmFjZV9jYWxsZWQiLCBhcmdzKQorICAgICAgICAiIiIsCisgICAgKQorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KHN0cihwMSksICItLXBkYmNscz1teXBkYjpNeVBkYiIsIHN5c3Bh
dGhpbnNlcnQ9VHJ1ZSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIipzZXRfdHJhY2VfY2FsbGVkKiIsICIqc2V0
X3RyYWNlX2NhbGxlZCoiLCAiKiAxIHBhc3NlZCBpbiAqIl0KKyAgICApCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZG9jdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
dGVzdF9kb2N0ZXN0LnB5CmluZGV4IDdmM2FmZjNiMGUxMC4uMGIzMmFkMzIyMDNjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZG9jdGVzdC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3Rlc3RfZG9jdGVzdC5weQpAQCAtMSwxNCArMSwyMCBAQAotIyBlbmNvZGluZzog
dXRmLTgKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1mcm9tIF9w
eXRlc3QuY29tcGF0IGltcG9ydCBNT0RVTEVfTk9UX0ZPVU5EX0VSUk9SCi1mcm9tIF9weXRlc3Qu
ZG9jdGVzdCBpbXBvcnQgRG9jdGVzdEl0ZW0sIERvY3Rlc3RNb2R1bGUsIERvY3Rlc3RUZXh0Zmls
ZQotaW1wb3J0IHB5dGVzdAoraW1wb3J0IGluc3BlY3QKK2ltcG9ydCB0ZXh0d3JhcAorZnJvbSB0
eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKIAoraW1w
b3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgTU9EVUxFX05PVF9GT1VORF9F
UlJPUgorZnJvbSBfcHl0ZXN0LmRvY3Rlc3QgaW1wb3J0IF9nZXRfY2hlY2tlcgorZnJvbSBfcHl0
ZXN0LmRvY3Rlc3QgaW1wb3J0IF9pc19tb2NrZWQKK2Zyb20gX3B5dGVzdC5kb2N0ZXN0IGltcG9y
dCBfaXNfc2V0dXBfcHkKK2Zyb20gX3B5dGVzdC5kb2N0ZXN0IGltcG9ydCBfcGF0Y2hfdW53cmFw
X21vY2tfYXdhcmUKK2Zyb20gX3B5dGVzdC5kb2N0ZXN0IGltcG9ydCBEb2N0ZXN0SXRlbQorZnJv
bSBfcHl0ZXN0LmRvY3Rlc3QgaW1wb3J0IERvY3Rlc3RNb2R1bGUKK2Zyb20gX3B5dGVzdC5kb2N0
ZXN0IGltcG9ydCBEb2N0ZXN0VGV4dGZpbGUKIAotY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6
CiAKK2NsYXNzIFRlc3REb2N0ZXN0czoKICAgICBkZWYgdGVzdF9jb2xsZWN0X3Rlc3R0ZXh0Zmls
ZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdyA9IHRlc3RkaXIubWFrZXR4dGZpbGUod2hhdGV2
ZXI9IiIpCiAgICAgICAgIGNoZWNrZmlsZSA9IHRlc3RkaXIubWFrZXR4dGZpbGUoCkBAIC0xMDks
OCArMTE1LDcgQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYy5h
c3NlcnRvdXRjb21lKGZhaWxlZD0xKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfcGF0dGVybnMo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIlRlc3Qgc3VwcG9ydCBmb3IgbXVsdGlwbGUgLS1k
b2N0ZXN0LWdsb2IgYXJndW1lbnRzICgjMTI1NSkuCi0gICAgICAgICIiIgorICAgICAgICAiIiJU
ZXN0IHN1cHBvcnQgZm9yIG11bHRpcGxlIC0tZG9jdGVzdC1nbG9iIGFyZ3VtZW50cyAoIzEyNTUp
LiIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2V0eHRmaWxlKAogICAgICAgICAgICAgeGRvYz0iIiIK
ICAgICAgICAgICAgID4+PiAxCkBAIC0xNDAsMTEgKzE0NSwxMCBAQCBjbGFzcyBUZXN0RG9jdGVz
dHMob2JqZWN0KToKIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKICAgICAgICAgIiAg
IHRlc3Rfc3RyaW5nLCAgICBlbmNvZGluZyIsCi0gICAgICAgIFsodSJmb28iLCAiYXNjaWkiKSwg
KHUiw7bDpMO8IiwgImxhdGluMSIpLCAodSLDtsOkw7wiLCAidXRmLTgiKV0sCisgICAgICAgIFso
ImZvbyIsICJhc2NpaSIpLCAoIsO2w6TDvCIsICJsYXRpbjEiKSwgKCLDtsOkw7wiLCAidXRmLTgi
KV0sCiAgICAgKQogICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYsIHRlc3RkaXIsIHRlc3Rfc3Ry
aW5nLCBlbmNvZGluZyk6Ci0gICAgICAgICIiIlRlc3Qgc3VwcG9ydCBmb3IgZG9jdGVzdF9lbmNv
ZGluZyBpbmkgb3B0aW9uLgotICAgICAgICAiIiIKKyAgICAgICAgIiIiVGVzdCBzdXBwb3J0IGZv
ciBkb2N0ZXN0X2VuY29kaW5nIGluaSBvcHRpb24uIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZWlu
aSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgW3B5dGVzdF0KQEAgLTE1Myw4ICsxNTcs
OCBAQCBjbGFzcyBUZXN0RG9jdGVzdHMob2JqZWN0KToKICAgICAgICAgICAgICAgICBlbmNvZGlu
ZwogICAgICAgICAgICAgKQogICAgICAgICApCi0gICAgICAgIGRvY3Rlc3QgPSB1IiIiCi0gICAg
ICAgICAgICA+Pj4gdSJ7fSIKKyAgICAgICAgZG9jdGVzdCA9ICIiIgorICAgICAgICAgICAgPj4+
ICJ7fSIKICAgICAgICAgICAgIHt9CiAgICAgICAgICIiIi5mb3JtYXQoCiAgICAgICAgICAgICB0
ZXN0X3N0cmluZywgcmVwcih0ZXN0X3N0cmluZykKQEAgLTE3NiwxMCArMTgwLDU2IEBAIGNsYXNz
IFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1kb2N0ZXN0LW1vZHVsZXMiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCiAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIip1bmV4cGVjdGVkX2V4Y2VwdGlv
bioiLAotICAgICAgICAgICAgICAgICIqPj4+IGkgPSAwKiIsCi0gICAgICAgICAgICAgICAgIio+
Pj4gMCAvIGkqIiwKLSAgICAgICAgICAgICAgICAiKlVORVhQRUNURUQqWmVyb0RpdmlzaW9uKiIs
CisgICAgICAgICAgICAgICAgInRlc3RfZG9jdGVzdF91bmV4cGVjdGVkX2V4Y2VwdGlvbi50eHQg
RiAqIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiKj0gRkFJTFVSRVMg
PSoiLAorICAgICAgICAgICAgICAgICIqXyBbW11kb2N0ZXN0W11dIHRlc3RfZG9jdGVzdF91bmV4
cGVjdGVkX2V4Y2VwdGlvbi50eHQgXyoiLAorICAgICAgICAgICAgICAgICIwMDEgPj4+IGkgPSAw
IiwKKyAgICAgICAgICAgICAgICAiMDAyID4+PiAwIC8gaSIsCisgICAgICAgICAgICAgICAgIlVO
RVhQRUNURUQgRVhDRVBUSU9OOiBaZXJvRGl2aXNpb25FcnJvcioiLAorICAgICAgICAgICAgICAg
ICJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6IiwKKyAgICAgICAgICAgICAgICAn
ICBGaWxlICIqL2RvY3Rlc3QucHkiLCBsaW5lICosIGluIF9fcnVuJywKKyAgICAgICAgICAgICAg
ICAiICAgICoiLAorICAgICAgICAgICAgICAgICcgIEZpbGUgIjxkb2N0ZXN0IHRlc3RfZG9jdGVz
dF91bmV4cGVjdGVkX2V4Y2VwdGlvbi50eHRbMV0+IiwgbGluZSAxLCBpbiA8bW9kdWxlPicsCisg
ICAgICAgICAgICAgICAgIlplcm9EaXZpc2lvbkVycm9yOiBkaXZpc2lvbiBieSB6ZXJvIiwKKyAg
ICAgICAgICAgICAgICAiKi90ZXN0X2RvY3Rlc3RfdW5leHBlY3RlZF9leGNlcHRpb24udHh0OjI6
IFVuZXhwZWN0ZWRFeGNlcHRpb24iLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGNvbnNl
Y3V0aXZlPVRydWUsCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2RvY3Rlc3Rfb3V0Y29tZXMo
c2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXR4dGZpbGUoCisgICAgICAgICAg
ICB0ZXN0X3NraXA9IiIiCisgICAgICAgICAgICA+Pj4gMQorICAgICAgICAgICAgMQorICAgICAg
ICAgICAgPj4+IGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgID4+PiBweXRlc3Quc2tpcCgiIikK
KyAgICAgICAgICAgID4+PiAyCisgICAgICAgICAgICAzCisgICAgICAgICAgICAiIiIsCisgICAg
ICAgICAgICB0ZXN0X3hmYWlsPSIiIgorICAgICAgICAgICAgPj4+IGltcG9ydCBweXRlc3QKKyAg
ICAgICAgICAgID4+PiBweXRlc3QueGZhaWwoInhmYWlsX3JlYXNvbiIpCisgICAgICAgICAgICA+
Pj4gZm9vCisgICAgICAgICAgICBiYXIKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIHRl
c3RfaW1wb3J0b3Jza2lwPSIiIgorICAgICAgICAgICAgPj4+IGltcG9ydCBweXRlc3QKKyAgICAg
ICAgICAgID4+PiBweXRlc3QuaW1wb3J0b3Jza2lwKCJkb2Vzbm90ZXhpc3QiKQorICAgICAgICAg
ICAgPj4+IGZvbworICAgICAgICAgICAgYmFyCisgICAgICAgICAgICAiIiIsCisgICAgICAgICkK
KyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZG9jdGVzdC1tb2R1bGVzIikK
KyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICJjb2xsZWN0ZWQgMyBpdGVtcyIsCisgICAgICAgICAgICAgICAgIiIsCisg
ICAgICAgICAgICAgICAgInRlc3RfaW1wb3J0b3Jza2lwLnR4dCBzICoiLAorICAgICAgICAgICAg
ICAgICJ0ZXN0X3NraXAudHh0IHMgKiIsCisgICAgICAgICAgICAgICAgInRlc3RfeGZhaWwudHh0
IHggKiIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIio9IDIgc2tpcHBl
ZCwgMSB4ZmFpbGVkIGluICoiLAogICAgICAgICAgICAgXQogICAgICAgICApCiAKQEAgLTIyNCw4
ICsyNzQsOCBAQCBjbGFzcyBUZXN0RG9jdGVzdHMob2JqZWN0KToKICAgICAgICAgICAgIF0KICAg
ICAgICAgKQogICAgICAgICAjIGxpbmVzIGJlbG93IHNob3VsZCBiZSB0cmltbWVkIG91dAotICAg
ICAgICBhc3NlcnQgInRleHQtbGluZS0yIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQotICAg
ICAgICBhc3NlcnQgInRleHQtbGluZS1hZnRlciIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
KyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIip0ZXh0LWxpbmUtMioiKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKnRleHQtbGluZS1hZnRlcioi
KQogCiAgICAgZGVmIHRlc3RfZG9jc3RyaW5nX2Z1bGxfY29udGV4dF9hcm91bmRfZXJyb3Ioc2Vs
ZiwgdGVzdGRpcik6CiAgICAgICAgICIiIlRlc3QgdGhhdCB3ZSBzaG93IHRoZSB3aG9sZSBjb250
ZXh0IGJlZm9yZSB0aGUgYWN0dWFsIGxpbmUgb2YgYSBmYWlsaW5nCkBAIC0yNTksMjYgKzMwOSw4
MSBAQCBjbGFzcyBUZXN0RG9jdGVzdHMob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X2RvY3Rlc3Rf
bGluZWRhdGFfbWlzc2luZyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci50bXBkaXIu
am9pbigiaGVsbG8ucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNl
KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgICAgICBjbGFzcyBGdW4ob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgICAgQHBy
b3BlcnR5CisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgJycnCisgICAgICAgICAgICAgICAgICAgICAgICA+Pj4gYSA9IDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgID4+PiAxLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICcnJwog
ICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgY2xhc3MgRnVuKG9iamVjdCk6CisgICAg
ICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0tZG9jdGVzdC1tb2R1bGVzIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAorICAgICAgICAgICAgWyIqaGVsbG8qIiwgIjAwNio+Pj4gMS8wKiIsICIqVU5FWFBFQ1RFRCpa
ZXJvRGl2aXNpb24qIiwgIioxIGZhaWxlZCoiXQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9k
b2N0ZXN0X2xpbmVkYXRhX29uX3Byb3BlcnR5KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGNsYXNzIFNhbXBs
ZShvYmplY3QpOgogICAgICAgICAgICAgICAgIEBwcm9wZXJ0eQotICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIGRlZiBzb21lX3Byb3BlcnR5KHNlbGYpOgog
ICAgICAgICAgICAgICAgICAgICAnJycKLSAgICAgICAgICAgICAgICAgICAgPj4+IGEgPSAxCi0g
ICAgICAgICAgICAgICAgICAgID4+PiAxLzAKKyAgICAgICAgICAgICAgICAgICAgPj4+IFNhbXBs
ZSgpLnNvbWVfcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgICAgJ2Fub3RoZXIgdGhpbmcnCiAg
ICAgICAgICAgICAgICAgICAgICcnJworICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWV0
aGluZycKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWRvY3Rlc3QtbW9kdWxlcyIpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAiKmhlbGxvKiIsCi0gICAgICAgICAgICAgICAgIipFWEFNUExFIExPQ0FUSU9OIFVOS05P
V04sIG5vdCBzaG93aW5nIGFsbCB0ZXN0cyBvZiB0aGF0IGV4YW1wbGUqIiwKLSAgICAgICAgICAg
ICAgICAiKjEvMCoiLAotICAgICAgICAgICAgICAgICIqVU5FWFBFQ1RFRCpaZXJvRGl2aXNpb24q
IiwKLSAgICAgICAgICAgICAgICAiKjEgZmFpbGVkKiIsCisgICAgICAgICAgICAgICAgIio9IEZB
SUxVUkVTID0qIiwKKyAgICAgICAgICAgICAgICAiKl8gW1tdZG9jdGVzdFtdXSB0ZXN0X2RvY3Rl
c3RfbGluZWRhdGFfb25fcHJvcGVydHkuU2FtcGxlLnNvbWVfcHJvcGVydHkgXyoiLAorICAgICAg
ICAgICAgICAgICIwMDQgIiwKKyAgICAgICAgICAgICAgICAiMDA1ICAgICAgICAgPj4+IFNhbXBs
ZSgpLnNvbWVfcHJvcGVydHkiLAorICAgICAgICAgICAgICAgICJFeHBlY3RlZDoiLAorICAgICAg
ICAgICAgICAgICIgICAgJ2Fub3RoZXIgdGhpbmcnIiwKKyAgICAgICAgICAgICAgICAiR290OiIs
CisgICAgICAgICAgICAgICAgIiAgICAnc29tZXRoaW5nJyIsCisgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgIiovdGVzdF9kb2N0ZXN0X2xpbmVkYXRhX29uX3Byb3BlcnR5LnB5
OjU6IERvY1Rlc3RGYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAiKj0gMSBmYWlsZWQgaW4gKiIs
CisgICAgICAgICAgICBdCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2RvY3Rlc3Rfbm9fbGlu
ZWRhdGFfb25fb3ZlcnJpZGVuX3Byb3BlcnR5KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGNsYXNzIFNhbXBs
ZShvYmplY3QpOgorICAgICAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgICAgIGRl
ZiBzb21lX3Byb3BlcnR5KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAnJycKKyAgICAgICAg
ICAgICAgICAgICAgPj4+IFNhbXBsZSgpLnNvbWVfcHJvcGVydHkKKyAgICAgICAgICAgICAgICAg
ICAgJ2Fub3RoZXIgdGhpbmcnCisgICAgICAgICAgICAgICAgICAgICcnJworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJ3NvbWV0aGluZycKKyAgICAgICAgICAgICAgICBzb21lX3Byb3BlcnR5
ID0gcHJvcGVydHkoc29tZV9wcm9wZXJ0eS5fX2dldF9fLCBOb25lLCBOb25lLCBzb21lX3Byb3Bl
cnR5Ll9fZG9jX18pCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1kb2N0ZXN0LW1vZHVsZXMiKQorICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIio9
IEZBSUxVUkVTID0qIiwKKyAgICAgICAgICAgICAgICAiKl8gW1tdZG9jdGVzdFtdXSB0ZXN0X2Rv
Y3Rlc3Rfbm9fbGluZWRhdGFfb25fb3ZlcnJpZGVuX3Byb3BlcnR5LlNhbXBsZS5zb21lX3Byb3Bl
cnR5IF8qIiwKKyAgICAgICAgICAgICAgICAiRVhBTVBMRSBMT0NBVElPTiBVTktOT1dOLCBub3Qg
c2hvd2luZyBhbGwgdGVzdHMgb2YgdGhhdCBleGFtcGxlIiwKKyAgICAgICAgICAgICAgICAiWz9d
Wz9dWz9dID4+PiBTYW1wbGUoKS5zb21lX3Byb3BlcnR5IiwKKyAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQ6IiwKKyAgICAgICAgICAgICAgICAiICAgICdhbm90aGVyIHRoaW5nJyIsCisgICAgICAg
ICAgICAgICAgIkdvdDoiLAorICAgICAgICAgICAgICAgICIgICAgJ3NvbWV0aGluZyciLAorICAg
ICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIqL3Rlc3RfZG9jdGVzdF9ub19saW5l
ZGF0YV9vbl9vdmVycmlkZW5fcHJvcGVydHkucHk6Tm9uZTogRG9jVGVzdEZhaWx1cmUiLAorICAg
ICAgICAgICAgICAgICIqPSAxIGZhaWxlZCBpbiAqIiwKICAgICAgICAgICAgIF0KICAgICAgICAg
KQogCkBAIC0zMDEsMTAgKzQwNiwxMCBAQCBjbGFzcyBUZXN0RG9jdGVzdHMob2JqZWN0KToKIAog
ICAgIGRlZiB0ZXN0X2RvY3Rlc3RfdW5leF9pbXBvcnRlcnJvcl93aXRoX21vZHVsZShzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigiaGVsbG8ucHkiKS53cml0ZSgK
LSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdyYXAu
ZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBpbXBvcnQgYXNk
YWxzZGtqYXNsa2RqYXNkCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQg
YXNkYWxzZGtqYXNsa2RqYXNkCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICAp
CiAgICAgICAgIHRlc3RkaXIubWFrZXR4dGZpbGUoCkBAIC0zMTksNyArNDI0LDcgQEAgY2xhc3Mg
VGVzdERvY3Rlc3RzKG9iamVjdCk6CiAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgIipF
UlJPUiBjb2xsZWN0aW5nIGhlbGxvLnB5KiIsCiAgICAgICAgICAgICAgICAgIip7ZX06IE5vIG1v
ZHVsZSBuYW1lZCAqYXNkYWxzKiIuZm9ybWF0KGU9TU9EVUxFX05PVF9GT1VORF9FUlJPUiksCi0g
ICAgICAgICAgICAgICAgIipJbnRlcnJ1cHRlZDogMSBlcnJvcnMgZHVyaW5nIGNvbGxlY3Rpb24q
IiwKKyAgICAgICAgICAgICAgICAiKkludGVycnVwdGVkOiAxIGVycm9yIGR1cmluZyBjb2xsZWN0
aW9uKiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIApAQCAtMzQwLDI3ICs0NDUsMjcgQEAg
Y2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfZG9jdGVzdG1vZHVsZV9l
eHRlcm5hbF9hbmRfaXNzdWUxMTYoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGly
Lm1rcHlkaXIoImhlbGxvIikKICAgICAgICAgcC5qb2luKCJfX2luaXRfXy5weSIpLndyaXRlKAot
ICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5k
ZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGRlZiBzb21lZnVu
YygpOgorICAgICAgICAgICAgICAgICAgICAnJycKKyAgICAgICAgICAgICAgICAgICAgICAgID4+
PiBpID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgPj4+IGkgKyAxCisgICAgICAgICAgICAg
ICAgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICcnJwogICAgICAgICAgICAgICAgICIi
IgotICAgICAgICAgICAgZGVmIHNvbWVmdW5jKCk6Ci0gICAgICAgICAgICAgICAgJycnCi0gICAg
ICAgICAgICAgICAgICAgID4+PiBpID0gMAotICAgICAgICAgICAgICAgICAgICA+Pj4gaSArIDEK
LSAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICcnJwotICAgICAgICAiIiIK
ICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdChwLCAiLS1kb2N0ZXN0LW1vZHVsZXMiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIjAwNCAqPj4+IGkgPSAw
IiwKLSAgICAgICAgICAgICAgICAiMDA1ICo+Pj4gaSArIDEiLAorICAgICAgICAgICAgICAgICIw
MDMgKj4+PiBpID0gMCIsCisgICAgICAgICAgICAgICAgIjAwNCAqPj4+IGkgKyAxIiwKICAgICAg
ICAgICAgICAgICAiKkV4cGVjdGVkOiIsCiAgICAgICAgICAgICAgICAgIiogICAgMiIsCiAgICAg
ICAgICAgICAgICAgIipHb3Q6IiwKICAgICAgICAgICAgICAgICAiKiAgICAxIiwKLSAgICAgICAg
ICAgICAgICAiKjo1OiBEb2NUZXN0RmFpbHVyZSIsCisgICAgICAgICAgICAgICAgIio6NDogRG9j
VGVzdEZhaWx1cmUiLAogICAgICAgICAgICAgXQogICAgICAgICApCiAKQEAgLTU2MCwxNyArNjY1
LDE1IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0
b3V0Y29tZShmYWlsZWQ9MSwgcGFzc2VkPTApCiAKICAgICBkZWYgdGVzdF9jb250YWluc191bmlj
b2RlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiJGaXggaW50ZXJuYWwgZXJyb3Igd2l0aCBk
b2NzdHJpbmdzIGNvbnRhaW5pbmcgbm9uLWFzY2lpIGNoYXJhY3RlcnMuCi0gICAgICAgICIiIgor
ICAgICAgICAiIiJGaXggaW50ZXJuYWwgZXJyb3Igd2l0aCBkb2NzdHJpbmdzIGNvbnRhaW5pbmcg
bm9uLWFzY2lpIGNoYXJhY3RlcnMuIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAg
ICAgICAgICAgIHUnJycKLSAgICAgICAgICAgICMgZW5jb2Rpbmc6IHV0Zi04CisgICAgICAgICAg
ICAnJydcCiAgICAgICAgICAgICBkZWYgZm9vKCk6CiAgICAgICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICAgICAgPj4+IG5hbWUgPSAn0YEnICMgbm90IGxldHRlciAnYycgYnV0IGluc3RlYWQg
Q3lyaWxsaWMgJ3MnLgogICAgICAgICAgICAgICAgICdhbnl0aGluZycKICAgICAgICAgICAgICAg
ICAiIiIKLSAgICAgICAgJycnCisgICAgICAgICAgICAnJycKICAgICAgICAgKQogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1kb2N0ZXN0LW1vZHVsZXMiKQogICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJHb3Qgbm90aGluZyIsICIqIDEgZmFpbGVkIGlu
KiJdKQpAQCAtNTk1LDkgKzY5OCw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShza2lwcGVkPTEsIGZhaWxlZD0xLCBwYXNzZWQ9MCkK
IAogICAgIGRlZiB0ZXN0X2p1bml0X3JlcG9ydF9mb3JfZG9jdGVzdChzZWxmLCB0ZXN0ZGlyKToK
LSAgICAgICAgIiIiCi0gICAgICAgICM3MTM6IEZpeCAtLWp1bml0LXhtbCBvcHRpb24gd2hlbiB1
c2VkIHdpdGggLS1kb2N0ZXN0LW1vZHVsZXMuCi0gICAgICAgICIiIgorICAgICAgICAiIiIjNzEz
OiBGaXggLS1qdW5pdC14bWwgb3B0aW9uIHdoZW4gdXNlZCB3aXRoIC0tZG9jdGVzdC1tb2R1bGVz
LiIiIgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAg
ICAgICAgICAgICBkZWYgZm9vKCk6CkBAIC02NDEsOSArNzQyLDYgQEAgY2xhc3MgVGVzdERvY3Rl
c3RzKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgdGVzdF91bmljb2RlX2RvY3Rlc3RfbW9kdWxlPSIiIgotICAgICAgICAg
ICAgIyAtKi0gZW5jb2Rpbmc6IHV0Zi04IC0qLQotICAgICAgICAgICAgZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KICAgICAgICAgICAgIGRlZiBmaXhfYmFkX3VuaWNv
ZGUodGV4dCk6CiAgICAgICAgICAgICAgICAgJycnCiAgICAgICAgICAgICAgICAgICAgID4+PiBw
cmludChmaXhfYmFkX3VuaWNvZGUoJ8ODwrpuaWNvJykpCkBAIC02NjQsNyArNzYyLDcgQEAgY2xh
c3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X3ByaW50X3VuaWNvZGVf
dmFsdWU9ciIiIgogICAgICAgICAgICAgSGVyZSBpcyBhIGRvY3Rlc3Q6OgogCi0gICAgICAgICAg
ICAgICAgPj4+IHByaW50KHUnXHhFNVx4RTlceEVFXHhGOFx4RkMnKQorICAgICAgICAgICAgICAg
ID4+PiBwcmludCgnXHhFNVx4RTlceEVFXHhGOFx4RkMnKQogICAgICAgICAgICAgICAgIMOlw6nD
rsO4w7wKICAgICAgICAgIiIiCiAgICAgICAgICkKQEAgLTY3Miw5ICs3NzAsNyBAQCBjbGFzcyBU
ZXN0RG9jdGVzdHMob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKiAxIHBhc3NlZCAqIl0pCiAKICAgICBkZWYgdGVzdF9yZXBvcnRpbmZvKHNlbGYsIHRlc3Rk
aXIpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBjYXNlIHRvIG1ha2Ugc3VyZSB0aGF0IERv
Y3Rlc3RJdGVtLnJlcG9ydGluZm8oKSByZXR1cm5zIGxpbmVuby4KLSAgICAgICAgIiIiCisgICAg
ICAgICIiIk1ha2Ugc3VyZSB0aGF0IERvY3Rlc3RJdGVtLnJlcG9ydGluZm8oKSByZXR1cm5zIGxp
bmVuby4iIiIKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgIHRl
c3RfcmVwb3J0aW5mbz0iIiIKICAgICAgICAgICAgIGRlZiBmb28oeCk6CkBAIC03MjIsOCArODE4
LDcgQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIipjb2xsZWN0ZWQgMSBpdGVtKiJdKQogCiAKLWNsYXNzIFRlc3RMaXRl
cmFscyhvYmplY3QpOgotCitjbGFzcyBUZXN0TGl0ZXJhbHM6CiAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJjb25maWdfbW9kZSIsIFsiaW5pIiwgImNvbW1lbnQiXSkKICAgICBkZWYgdGVz
dF9hbGxvd191bmljb2RlKHNlbGYsIHRlc3RkaXIsIGNvbmZpZ19tb2RlKToKICAgICAgICAgIiIi
VGVzdCB0aGF0IGRvY3Rlc3RzIHdoaWNoIG91dHB1dCB1bmljb2RlIHdvcmsgaW4gYWxsIHB5dGhv
biB2ZXJzaW9ucwpAQCAtODE0LDEzICs5MDksMTEgQEAgY2xhc3MgVGVzdExpdGVyYWxzKG9iamVj
dCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bigpCi0gICAgICAgIHBhc3NlZCA9IGludChzeXMudmVyc2lvbl9pbmZvWzBdID49IDMp
Ci0gICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD1wYXNzZWQsIGZhaWxlZD1pbnQo
bm90IHBhc3NlZCkpCisgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAg
ICAgZGVmIHRlc3RfYnl0ZXNfbGl0ZXJhbChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIiVGVz
dCB0aGF0IGRvY3Rlc3RzIHdoaWNoIG91dHB1dCBieXRlcyBmYWlsIGluIFB5dGhvbiAzIHdoZW4K
LSAgICAgICAgdGhlIEFMTE9XX0JZVEVTIG9wdGlvbiBpcyBub3QgdXNlZC4gVGhlIHNhbWUgdGVz
dCBzaG91bGQgcGFzcwotICAgICAgICBpbiBQeXRob24gMiAoIzEyODcpLgorICAgICAgICB0aGUg
QUxMT1dfQllURVMgb3B0aW9uIGlzIG5vdCB1c2VkLiAoIzEyODcpLgogICAgICAgICAiIiIKICAg
ICAgICAgdGVzdGRpci5tYWtldHh0ZmlsZSgKICAgICAgICAgICAgIHRlc3RfZG9jPSIiIgpAQCAt
ODI5LDExICs5MjIsMTU5IEBAIGNsYXNzIFRlc3RMaXRlcmFscyhvYmplY3QpOgogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQotICAg
ICAgICBwYXNzZWQgPSBpbnQoc3lzLnZlcnNpb25faW5mb1swXSA9PSAyKQotICAgICAgICByZXBy
ZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9cGFzc2VkLCBmYWlsZWQ9aW50KG5vdCBwYXNzZWQpKQor
ICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShmYWlsZWQ9MSkKKworICAgIGRlZiB0ZXN0X251
bWJlcl9yZShzZWxmKSAtPiBOb25lOgorICAgICAgICBfbnVtYmVyX3JlID0gX2dldF9jaGVja2Vy
KCkuX251bWJlcl9yZSAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgZm9yIHMgaW4gWworICAgICAg
ICAgICAgIjEuIiwKKyAgICAgICAgICAgICIrMS4iLAorICAgICAgICAgICAgIi0xLiIsCisgICAg
ICAgICAgICAiLjEiLAorICAgICAgICAgICAgIisuMSIsCisgICAgICAgICAgICAiLS4xIiwKKyAg
ICAgICAgICAgICIwLjEiLAorICAgICAgICAgICAgIiswLjEiLAorICAgICAgICAgICAgIi0wLjEi
LAorICAgICAgICAgICAgIjFlNSIsCisgICAgICAgICAgICAiKzFlNSIsCisgICAgICAgICAgICAi
MWUrNSIsCisgICAgICAgICAgICAiKzFlKzUiLAorICAgICAgICAgICAgIjFlLTUiLAorICAgICAg
ICAgICAgIisxZS01IiwKKyAgICAgICAgICAgICItMWUtNSIsCisgICAgICAgICAgICAiMS4yZTMi
LAorICAgICAgICAgICAgIi0xLjJlLTMiLAorICAgICAgICBdOgorICAgICAgICAgICAgcHJpbnQo
cykKKyAgICAgICAgICAgIG0gPSBfbnVtYmVyX3JlLm1hdGNoKHMpCisgICAgICAgICAgICBhc3Nl
cnQgbSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYXNzZXJ0IGZsb2F0KG0uZ3JvdXAoKSkgPT0g
cHl0ZXN0LmFwcHJveChmbG9hdChzKSkKKyAgICAgICAgZm9yIHMgaW4gWyIxIiwgImFiYyJdOgor
ICAgICAgICAgICAgcHJpbnQocykKKyAgICAgICAgICAgIGFzc2VydCBfbnVtYmVyX3JlLm1hdGNo
KHMpIGlzIE5vbmUKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiY29uZmlnX21vZGUi
LCBbImluaSIsICJjb21tZW50Il0pCisgICAgZGVmIHRlc3RfbnVtYmVyX3ByZWNpc2lvbihzZWxm
LCB0ZXN0ZGlyLCBjb25maWdfbW9kZSk6CisgICAgICAgICIiIlRlc3QgdGhlIE5VTUJFUiBvcHRp
b24uIiIiCisgICAgICAgIGlmIGNvbmZpZ19tb2RlID09ICJpbmkiOgorICAgICAgICAgICAgdGVz
dGRpci5tYWtlaW5pKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRl
c3RdCisgICAgICAgICAgICAgICAgZG9jdGVzdF9vcHRpb25mbGFncyA9IE5VTUJFUgorICAgICAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAgICAgICAgY29tbWVudCA9ICIiCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tZW50ID0gIiNkb2N0ZXN0OiArTlVNQkVSIgor
CisgICAgICAgIHRlc3RkaXIubWFrZXR4dGZpbGUoCisgICAgICAgICAgICB0ZXN0X2RvYz0iIiIK
KworICAgICAgICAgICAgU2NhbGFyczoKKworICAgICAgICAgICAgPj4+IGltcG9ydCBtYXRoCisg
ICAgICAgICAgICA+Pj4gbWF0aC5waSB7Y29tbWVudH0KKyAgICAgICAgICAgIDMuMTQxNTkyNjUz
NTg5NzkzCisgICAgICAgICAgICA+Pj4gbWF0aC5waSB7Y29tbWVudH0KKyAgICAgICAgICAgIDMu
MTQxNgorICAgICAgICAgICAgPj4+IG1hdGgucGkge2NvbW1lbnR9CisgICAgICAgICAgICAzLjE0
CisgICAgICAgICAgICA+Pj4gLW1hdGgucGkge2NvbW1lbnR9CisgICAgICAgICAgICAtMy4xNAor
ICAgICAgICAgICAgPj4+IG1hdGgucGkge2NvbW1lbnR9CisgICAgICAgICAgICAzLgorICAgICAg
ICAgICAgPj4+IDMuIHtjb21tZW50fQorICAgICAgICAgICAgMy4wCisgICAgICAgICAgICA+Pj4g
My4ge2NvbW1lbnR9CisgICAgICAgICAgICAzLgorICAgICAgICAgICAgPj4+IDMuIHtjb21tZW50
fQorICAgICAgICAgICAgMy4wMQorICAgICAgICAgICAgPj4+IDMuIHtjb21tZW50fQorICAgICAg
ICAgICAgMi45OQorICAgICAgICAgICAgPj4+IC4yOTkge2NvbW1lbnR9CisgICAgICAgICAgICAu
MworICAgICAgICAgICAgPj4+IC4zMDEge2NvbW1lbnR9CisgICAgICAgICAgICAuMworICAgICAg
ICAgICAgPj4+IDk1MS4ge2NvbW1lbnR9CisgICAgICAgICAgICAxZTMKKyAgICAgICAgICAgID4+
PiAxMDQ5LiB7Y29tbWVudH0KKyAgICAgICAgICAgIDFlMworICAgICAgICAgICAgPj4+IC0xMDQ5
LiB7Y29tbWVudH0KKyAgICAgICAgICAgIC0xZTMKKyAgICAgICAgICAgID4+PiAxZTMge2NvbW1l
bnR9CisgICAgICAgICAgICAxZTMKKyAgICAgICAgICAgID4+PiAxZTMge2NvbW1lbnR9CisgICAg
ICAgICAgICAxMDAwLgorCisgICAgICAgICAgICBMaXN0czoKKworICAgICAgICAgICAgPj4+IFsz
LjE0MTUsIDAuMDk3LCAxMy4xLCA3LCA4LjIyMjIyZTUsIDAuNTk4ZS0yXSB7Y29tbWVudH0KKyAg
ICAgICAgICAgIFszLjE0LCAwLjEsIDEzLiwgNywgOC4yMmU1LCA2LjBlLTNdCisgICAgICAgICAg
ICA+Pj4gW1swLjMzMywgMC42NjddLCBbMC45OTksIDEuMzMzXV0ge2NvbW1lbnR9CisgICAgICAg
ICAgICBbWzAuMzMsIDAuNjY3XSwgWzAuOTk5LCAxLjMzM11dCisgICAgICAgICAgICA+Pj4gW1tb
MC4xMDFdXV0ge2NvbW1lbnR9CisgICAgICAgICAgICBbW1swLjFdXV0KKworICAgICAgICAgICAg
RG9lc24ndCBiYXJmIG9uIG5vbi1udW1iZXJzOgorCisgICAgICAgICAgICA+Pj4gJ2FiYycge2Nv
bW1lbnR9CisgICAgICAgICAgICAnYWJjJworICAgICAgICAgICAgPj4+IE5vbmUge2NvbW1lbnR9
CisgICAgICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIGNvbW1lbnQ9Y29tbWVu
dAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bigpCisgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQorCisgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiZXhwcmVzc2lvbixvdXRwdXQiLAor
ICAgICAgICBbCisgICAgICAgICAgICAjIGludHMgc2hvdWxkbid0IG1hdGNoIGZsb2F0czoKKyAg
ICAgICAgICAgICgiMy4wIiwgIjMiKSwKKyAgICAgICAgICAgICgiM2UwIiwgIjMiKSwKKyAgICAg
ICAgICAgICgiMWUzIiwgIjEwMDAiKSwKKyAgICAgICAgICAgICgiMyIsICIzLjAiKSwKKyAgICAg
ICAgICAgICMgUm91bmRpbmc6CisgICAgICAgICAgICAoIjMuMSIsICIzLjAiKSwKKyAgICAgICAg
ICAgICgiMy4xIiwgIjMuMiIpLAorICAgICAgICAgICAgKCIzLjEiLCAiNC4wIiksCisgICAgICAg
ICAgICAoIjguMjJlNSIsICI4MTAwMDAuMCIpLAorICAgICAgICAgICAgIyBPbmx5IHRoZSBhY3R1
YWwgb3V0cHV0IGlzIHJvdW5kZWQgdXAsIG5vdCB0aGUgZXhwZWN0ZWQgb3V0cHV0OgorICAgICAg
ICAgICAgKCIzLjAiLCAiMi45OCIpLAorICAgICAgICAgICAgKCIxZTMiLCAiOTk5IiksCisgICAg
ICAgICAgICAjIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgdW5kZXJzdGFuZCB0
aGF0IG51bWJlcnMgaW5zaWRlCisgICAgICAgICAgICAjIHN0cmluZ3Mgc2hvdWxkbid0IGJlIHRy
ZWF0ZWQgYXMgbnVtYmVyczoKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgiJzMuMTQxNiciLCAi
JzMuMTQnIiwgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwpLCAgIyB0eXBlOiBpZ25vcmUKKyAgICAg
ICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfbnVtYmVyX25vbl9tYXRjaGVzKHNlbGYsIHRlc3Rk
aXIsIGV4cHJlc3Npb24sIG91dHB1dCk6CisgICAgICAgIHRlc3RkaXIubWFrZXR4dGZpbGUoCisg
ICAgICAgICAgICB0ZXN0X2RvYz0iIiIKKyAgICAgICAgICAgID4+PiB7ZXhwcmVzc2lvbn0gI2Rv
Y3Rlc3Q6ICtOVU1CRVIKKyAgICAgICAgICAgIHtvdXRwdXR9CisgICAgICAgICAgICAiIiIuZm9y
bWF0KAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb249ZXhwcmVzc2lvbiwgb3V0cHV0PW91dHB1
dAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bigpCisgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0wLCBmYWlsZWQ9
MSkKKworICAgIGRlZiB0ZXN0X251bWJlcl9hbmRfYWxsb3dfdW5pY29kZShzZWxmLCB0ZXN0ZGly
KToKKyAgICAgICAgdGVzdGRpci5tYWtldHh0ZmlsZSgKKyAgICAgICAgICAgIHRlc3RfZG9jPSIi
IgorICAgICAgICAgICAgPj4+IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKKyAg
ICAgICAgICAgID4+PiBUID0gbmFtZWR0dXBsZSgnVCcsICdhIGIgYycpCisgICAgICAgICAgICA+
Pj4gVChhPTAuMjMzMDAwMDAwMSwgYj11J3N0cicsIGM9YidieXRlcycpICMgZG9jdGVzdDogK0FM
TE9XX1VOSUNPREUsICtBTExPV19CWVRFUywgK05VTUJFUgorICAgICAgICAgICAgVChhPTAuMjMz
LCBiPXUnc3RyJywgYz0nYnl0ZXMnKQorICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVwcmVjLmFzc2VydG91
dGNvbWUocGFzc2VkPTEpCiAKIAotY2xhc3MgVGVzdERvY3Rlc3RTa2lwcyhvYmplY3QpOgorY2xh
c3MgVGVzdERvY3Rlc3RTa2lwczoKICAgICAiIiIKICAgICBJZiBhbGwgZXhhbXBsZXMgaW4gYSBk
b2N0ZXN0IGFyZSBza2lwcGVkIGR1ZSB0byB0aGUgU0tJUCBvcHRpb24sIHRoZW4KICAgICB0aGUg
dGVzdHMgc2hvdWxkIGJlIFNLSVBQRUQgcmF0aGVyIHRoYW4gUEFTU0VELiAoIzk1NykKQEAgLTg0
MSw3ICsxMDgyLDYgQEAgY2xhc3MgVGVzdERvY3Rlc3RTa2lwcyhvYmplY3QpOgogCiAgICAgQHB5
dGVzdC5maXh0dXJlKHBhcmFtcz1bInRleHQiLCAibW9kdWxlIl0pCiAgICAgZGVmIG1ha2Vkb2N0
ZXN0KHNlbGYsIHRlc3RkaXIsIHJlcXVlc3QpOgotCiAgICAgICAgIGRlZiBtYWtlaXQoZG9jdGVz
dCk6CiAgICAgICAgICAgICBtb2RlID0gcmVxdWVzdC5wYXJhbQogICAgICAgICAgICAgaWYgbW9k
ZSA9PSAidGV4dCI6CkBAIC05MTUsMTMgKzExNTUsMTIgQEAgY2xhc3MgVGVzdERvY3Rlc3RTa2lw
cyhvYmplY3QpOgogICAgICAgICApCiAKIAotY2xhc3MgVGVzdERvY3Rlc3RBdXRvVXNlRml4dHVy
ZXMob2JqZWN0KToKK2NsYXNzIFRlc3REb2N0ZXN0QXV0b1VzZUZpeHR1cmVzOgogCiAgICAgU0NP
UEVTID0gWyJtb2R1bGUiLCAic2Vzc2lvbiIsICJjbGFzcyIsICJmdW5jdGlvbiJdCiAKICAgICBk
ZWYgdGVzdF9kb2N0ZXN0X21vZHVsZV9zZXNzaW9uX2ZpeHR1cmUoc2VsZiwgdGVzdGRpcik6Ci0g
ICAgICAgICIiIlRlc3QgdGhhdCBzZXNzaW9uIGZpeHR1cmVzIGFyZSBpbml0aWFsaXplZCBmb3Ig
ZG9jdGVzdCBtb2R1bGVzICgjNzY4KQotICAgICAgICAiIiIKKyAgICAgICAgIiIiVGVzdCB0aGF0
IHNlc3Npb24gZml4dHVyZXMgYXJlIGluaXRpYWxpemVkIGZvciBkb2N0ZXN0IG1vZHVsZXMgKCM3
NjgpLiIiIgogICAgICAgICAjIHNlc3Npb24gZml4dHVyZSB3aGljaCBjaGFuZ2VzIHNvbWUgZ2xv
YmFsIGRhdGEsIHdoaWNoIHdpbGwKICAgICAgICAgIyBiZSBhY2Nlc3NlZCBieSBkb2N0ZXN0cyBp
biBhIG1vZHVsZQogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKQEAgLTkyOSw3ICsxMTY4
LDcgQEAgY2xhc3MgVGVzdERvY3Rlc3RBdXRvVXNlRml4dHVyZXMob2JqZWN0KToKICAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgICAgIGltcG9ydCBzeXMKIAotICAgICAgICAgICAg
QHB5dGVzdC55aWVsZF9maXh0dXJlKGF1dG91c2U9VHJ1ZSwgc2NvcGU9J3Nlc3Npb24nKQorICAg
ICAgICAgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSwgc2NvcGU9J3Nlc3Npb24nKQog
ICAgICAgICAgICAgZGVmIG15Zml4dHVyZSgpOgogICAgICAgICAgICAgICAgIGFzc2VydCBub3Qg
aGFzYXR0cihzeXMsICdweXRlc3Rfc2Vzc2lvbl9kYXRhJykKICAgICAgICAgICAgICAgICBzeXMu
cHl0ZXN0X3Nlc3Npb25fZGF0YSA9IDEKQEAgLTk1Myw3ICsxMTkyLDcgQEAgY2xhc3MgVGVzdERv
Y3Rlc3RBdXRvVXNlRml4dHVyZXMob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZG9jdGVzdC1tb2R1bGVzIikKLSAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMiBwYXNzZWQqIikKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkKiJdKQogCiAgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJzY29wZSIsIFNDT1BFUykKICAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImVuYWJsZV9kb2N0ZXN0IiwgW1RydWUsIEZhbHNlXSkKQEAgLTEwMjMsNyArMTI2
Miw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0QXV0b1VzZUZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAg
ICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tZG9jdGVzdC1tb2R1bGVzIikKLSAgICAgICAgYXNzZXJ0ICJGQUlMVVJFUyIgbm90IGlu
IHN0cihyZXN1bHQuc3Rkb3V0LnN0cigpKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0
Y2hfbGluZSgiKkZBSUxVUkVTKiIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIio9PT0gMSBwYXNzZWQgaW4gKiJdKQogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJzY29wZSIsIFNDT1BFUykKQEAgLTEwNTUsMTEgKzEyOTQsMTEgQEAgY2xhc3MgVGVzdERvY3Rl
c3RBdXRvVXNlRml4dHVyZXMob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZG9jdGVzdC1tb2R1bGVzIikKLSAgICAg
ICAgYXNzZXJ0ICJGQUlMVVJFUyIgbm90IGluIHN0cihyZXN1bHQuc3Rkb3V0LnN0cigpKQorICAg
ICAgICBzdHIocmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipGQUlMVVJFUyoiKSkKICAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKj09PSAxIHBhc3NlZCBpbiAqIl0p
CiAKIAotY2xhc3MgVGVzdERvY3Rlc3ROYW1lc3BhY2VGaXh0dXJlKG9iamVjdCk6CitjbGFzcyBU
ZXN0RG9jdGVzdE5hbWVzcGFjZUZpeHR1cmU6CiAKICAgICBTQ09QRVMgPSBbIm1vZHVsZSIsICJz
ZXNzaW9uIiwgImNsYXNzIiwgImZ1bmN0aW9uIl0KIApAQCAtMTEyMSw4ICsxMzYwLDcgQEAgY2xh
c3MgVGVzdERvY3Rlc3ROYW1lc3BhY2VGaXh0dXJlKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYy5h
c3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAKLWNsYXNzIFRlc3REb2N0ZXN0UmVwb3J0aW5nT3B0
aW9uKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3REb2N0ZXN0UmVwb3J0aW5nT3B0aW9uOgogICAgIGRl
ZiBfcnVuX2RvY3Rlc3RfcmVwb3J0KHNlbGYsIHRlc3RkaXIsIGZvcm1hdCk6CiAgICAgICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtMTIwNCwzICsxNDQyLDY5IEBA
IGNsYXNzIFRlc3REb2N0ZXN0UmVwb3J0aW5nT3B0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgIiplcnJvcjogYXJndW1lbnQgLS1kb2N0ZXN0LXJlcG9ydDogaW52YWxpZCBjaG9pY2U6ICdv
YnZpb3VzbHlfaW52YWxpZF9mb3JtYXQnIChjaG9vc2UgZnJvbSoiCiAgICAgICAgICAgICBdCiAg
ICAgICAgICkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1vY2tfbW9kdWxlIiwgWyJt
b2NrIiwgInVuaXR0ZXN0Lm1vY2siXSkKK2RlZiB0ZXN0X2RvY3Rlc3RfbW9ja19vYmplY3RzX2Rv
bnRfcmVjdXJzZV9taXNzYmVoYXZlZChtb2NrX21vZHVsZSwgdGVzdGRpcik6CisgICAgcHl0ZXN0
LmltcG9ydG9yc2tpcChtb2NrX21vZHVsZSkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICIiIgorICAgICAgICBmcm9tIHttb2NrX21vZHVsZX0gaW1wb3J0IGNhbGwKKyAgICAgICAg
Y2xhc3MgRXhhbXBsZShvYmplY3QpOgorICAgICAgICAgICAgJycnCisgICAgICAgICAgICA+Pj4g
MSArIDEKKyAgICAgICAgICAgIDIKKyAgICAgICAgICAgICcnJworICAgICAgICAiIiIuZm9ybWF0
KAorICAgICAgICAgICAgbW9ja19tb2R1bGU9bW9ja19tb2R1bGUKKyAgICAgICAgKQorICAgICkK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1kb2N0ZXN0LW1vZHVsZXMiKQorICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQgKiJdKQorCisKK2NsYXNz
IEJyb2tlbjoKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgXyk6CisgICAgICAgIHJhaXNlIEtl
eUVycm9yKCJUaGlzIHNob3VsZCBiZSBhbiBBdHRyaWJ1dGVFcnJvciIpCisKKworQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCAgIyBwcmFnbWE6IG5vIGJyYW5jaCAobGFtYmRhcyBhcmUgbm90IGNh
bGxlZCkKKyAgICAic3RvcCIsIFtOb25lLCBfaXNfbW9ja2VkLCBsYW1iZGEgZjogTm9uZSwgbGFt
YmRhIGY6IEZhbHNlLCBsYW1iZGEgZjogVHJ1ZV0KKykKK2RlZiB0ZXN0X3dhcm5pbmdfb25fdW53
cmFwX29mX2Jyb2tlbl9vYmplY3QoCisgICAgc3RvcDogT3B0aW9uYWxbQ2FsbGFibGVbW29iamVj
dF0sIG9iamVjdF1dCispIC0+IE5vbmU6CisgICAgYmFkX2luc3RhbmNlID0gQnJva2VuKCkKKyAg
ICBhc3NlcnQgaW5zcGVjdC51bndyYXAuX19tb2R1bGVfXyA9PSAiaW5zcGVjdCIKKyAgICB3aXRo
IF9wYXRjaF91bndyYXBfbW9ja19hd2FyZSgpOgorICAgICAgICBhc3NlcnQgaW5zcGVjdC51bndy
YXAuX19tb2R1bGVfXyAhPSAiaW5zcGVjdCIKKyAgICAgICAgd2l0aCBweXRlc3Qud2FybnMoCisg
ICAgICAgICAgICBweXRlc3QuUHl0ZXN0V2FybmluZywgbWF0Y2g9Il5Hb3QgS2V5RXJyb3IuKiB3
aGVuIHVud3JhcHBpbmciCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIGluc3BlY3QudW53cmFwKGJhZF9pbnN0YW5j
ZSwgc3RvcD1zdG9wKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgYXNzZXJ0IGluc3Bl
Y3QudW53cmFwLl9fbW9kdWxlX18gPT0gImluc3BlY3QiCisKKworZGVmIHRlc3RfaXNfc2V0dXBf
cHlfbm90X25hbWVkX3NldHVwX3B5KHRtcGRpcik6CisgICAgbm90X3NldHVwX3B5ID0gdG1wZGly
LmpvaW4oIm5vdF9zZXR1cC5weSIpCisgICAgbm90X3NldHVwX3B5LndyaXRlKCdmcm9tIHNldHVw
dG9vbHMgaW1wb3J0IHNldHVwOyBzZXR1cChuYW1lPSJmb28iKScpCisgICAgYXNzZXJ0IG5vdCBf
aXNfc2V0dXBfcHkobm90X3NldHVwX3B5KQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
bW9kIiwgKCJzZXR1cHRvb2xzIiwgImRpc3R1dGlscy5jb3JlIikpCitkZWYgdGVzdF9pc19zZXR1
cF9weV9pc19hX3NldHVwX3B5KHRtcGRpciwgbW9kKToKKyAgICBzZXR1cF9weSA9IHRtcGRpci5q
b2luKCJzZXR1cC5weSIpCisgICAgc2V0dXBfcHkud3JpdGUoJ2Zyb20ge30gaW1wb3J0IHNldHVw
OyBzZXR1cChuYW1lPSJmb28iKScuZm9ybWF0KG1vZCkpCisgICAgYXNzZXJ0IF9pc19zZXR1cF9w
eShzZXR1cF9weSkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1vZCIsICgic2V0dXB0
b29scyIsICJkaXN0dXRpbHMuY29yZSIpKQorZGVmIHRlc3RfaXNfc2V0dXBfcHlfZGlmZmVyZW50
X2VuY29kaW5nKHRtcGRpciwgbW9kKToKKyAgICBzZXR1cF9weSA9IHRtcGRpci5qb2luKCJzZXR1
cC5weSIpCisgICAgY29udGVudHMgPSAoCisgICAgICAgICIjIC0qLSBjb2Rpbmc6IGNwMTI1MiAt
Ki1cbiIKKyAgICAgICAgJ2Zyb20ge30gaW1wb3J0IHNldHVwOyBzZXR1cChuYW1lPSJmb28iLCBk
ZXNjcmlwdGlvbj0i4oKsIilcbicuZm9ybWF0KG1vZCkKKyAgICApCisgICAgc2V0dXBfcHkud3Jp
dGVfYmluYXJ5KGNvbnRlbnRzLmVuY29kZSgiY3AxMjUyIikpCisgICAgYXNzZXJ0IF9pc19zZXR1
cF9weShzZXR1cF9weSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9lbnRy
eV9wb2ludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZW50cnlfcG9pbnRzLnB5Cmlu
ZGV4IDhmNzM0Nzc4ZmFhOC4uNWQwMDMxMjczNjNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfZW50cnlfcG9pbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9lbnRyeV9wb2ludHMucHkKQEAgLTEsMTQgKzEsNyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHBrZ19y
ZXNvdXJjZXMKLQotaW1wb3J0IHB5dGVzdAotCi0KLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
ZW50cnlwb2ludCIsIFsicHkudGVzdCIsICJweXRlc3QiXSkKLWRlZiB0ZXN0X2VudHJ5X3BvaW50
X2V4aXN0KGVudHJ5cG9pbnQpOgotICAgIGFzc2VydCBlbnRyeXBvaW50IGluIHBrZ19yZXNvdXJj
ZXMuZ2V0X2VudHJ5X21hcCgicHl0ZXN0IilbImNvbnNvbGVfc2NyaXB0cyJdCitmcm9tIF9weXRl
c3QuY29tcGF0IGltcG9ydCBpbXBvcnRsaWJfbWV0YWRhdGEKIAogCiBkZWYgdGVzdF9weXRlc3Rf
ZW50cnlfcG9pbnRzX2FyZV9pZGVudGljYWwoKToKLSAgICBlbnRyeU1hcCA9IHBrZ19yZXNvdXJj
ZXMuZ2V0X2VudHJ5X21hcCgicHl0ZXN0IilbImNvbnNvbGVfc2NyaXB0cyJdCi0gICAgYXNzZXJ0
IGVudHJ5TWFwWyJweXRlc3QiXS5tb2R1bGVfbmFtZSA9PSBlbnRyeU1hcFsicHkudGVzdCJdLm1v
ZHVsZV9uYW1lCisgICAgZGlzdCA9IGltcG9ydGxpYl9tZXRhZGF0YS5kaXN0cmlidXRpb24oInB5
dGVzdCIpCisgICAgZW50cnlfbWFwID0ge2VwLm5hbWU6IGVwIGZvciBlcCBpbiBkaXN0LmVudHJ5
X3BvaW50c30KKyAgICBhc3NlcnQgZW50cnlfbWFwWyJweXRlc3QiXS52YWx1ZSA9PSBlbnRyeV9t
YXBbInB5LnRlc3QiXS52YWx1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X2Vycm9yX2RpZmZzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2Vycm9yX2RpZmZzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjg1N2RmODMyMzYzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2Vycm9yX2RpZmZzLnB5
CkBAIC0wLDAgKzEsMjgyIEBACisiIiIKK1Rlc3RzIGFuZCBleGFtcGxlcyBmb3IgY29ycmVjdCAi
Ky8tIiB1c2FnZSBpbiBlcnJvciBkaWZmcy4KKworU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMzMyBmb3IgZGV0YWlscy4KKworIiIiCitpbXBvcnQgc3lz
CisKK2ltcG9ydCBweXRlc3QKKworCitURVNUQ0FTRVMgPSBbCisgICAgcHl0ZXN0LnBhcmFtKAor
ICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfdGhpcygpOgorICAgICAgICAgICAgcmVzdWx0
ID0gICBbMSwgNCwgM10KKyAgICAgICAgICAgIGV4cGVjdGVkID0gWzEsIDIsIDNdCisgICAgICAg
ICAgICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgICIiIiwKKyAgICAgICAgIiIi
CisgICAgICAgID4gICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICBFICAg
ICAgIGFzc2VydCBbMSwgNCwgM10gPT0gWzEsIDIsIDNdCisgICAgICAgIEUgICAgICAgICBBdCBp
bmRleCAxIGRpZmY6IDQgIT0gMgorICAgICAgICBFICAgICAgICAgRnVsbCBkaWZmOgorICAgICAg
ICBFICAgICAgICAgLSBbMSwgMiwgM10KKyAgICAgICAgRSAgICAgICAgID8gICAgIF4KKyAgICAg
ICAgRSAgICAgICAgICsgWzEsIDQsIDNdCisgICAgICAgIEUgICAgICAgICA/ICAgICBeCisgICAg
ICAgICIiIiwKKyAgICAgICAgaWQ9IkNvbXBhcmUgbGlzdHMsIG9uZSBpdGVtIGRpZmZlcnMiLAor
ICAgICksCisgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3Rf
dGhpcygpOgorICAgICAgICAgICAgcmVzdWx0ID0gICBbMSwgMiwgM10KKyAgICAgICAgICAgIGV4
cGVjdGVkID0gWzEsIDJdCisgICAgICAgICAgICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisg
ICAgICAgICIiIiwKKyAgICAgICAgIiIiCisgICAgICAgID4gICAgICAgYXNzZXJ0IHJlc3VsdCA9
PSBleHBlY3RlZAorICAgICAgICBFICAgICAgIGFzc2VydCBbMSwgMiwgM10gPT0gWzEsIDJdCisg
ICAgICAgIEUgICAgICAgICBMZWZ0IGNvbnRhaW5zIG9uZSBtb3JlIGl0ZW06IDMKKyAgICAgICAg
RSAgICAgICAgIEZ1bGwgZGlmZjoKKyAgICAgICAgRSAgICAgICAgIC0gWzEsIDJdCisgICAgICAg
IEUgICAgICAgICArIFsxLCAyLCAzXQorICAgICAgICBFICAgICAgICAgPyAgICAgICsrKworICAg
ICAgICAiIiIsCisgICAgICAgIGlkPSJDb21wYXJlIGxpc3RzLCBvbmUgZXh0cmEgaXRlbSIsCisg
ICAgKSwKKyAgICBweXRlc3QucGFyYW0oCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90
aGlzKCk6CisgICAgICAgICAgICByZXN1bHQgPSAgIFsxLCAzXQorICAgICAgICAgICAgZXhwZWN0
ZWQgPSBbMSwgMiwgM10KKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhwZWN0ZWQKKyAg
ICAgICAgIiIiLAorICAgICAgICAiIiIKKyAgICAgICAgPiAgICAgICBhc3NlcnQgcmVzdWx0ID09
IGV4cGVjdGVkCisgICAgICAgIEUgICAgICAgYXNzZXJ0IFsxLCAzXSA9PSBbMSwgMiwgM10KKyAg
ICAgICAgRSAgICAgICAgIEF0IGluZGV4IDEgZGlmZjogMyAhPSAyCisgICAgICAgIEUgICAgICAg
ICBSaWdodCBjb250YWlucyBvbmUgbW9yZSBpdGVtOiAzCisgICAgICAgIEUgICAgICAgICBGdWxs
IGRpZmY6CisgICAgICAgIEUgICAgICAgICAtIFsxLCAyLCAzXQorICAgICAgICBFICAgICAgICAg
PyAgICAgLS0tCisgICAgICAgIEUgICAgICAgICArIFsxLCAzXQorICAgICAgICAiIiIsCisgICAg
ICAgIGlkPSJDb21wYXJlIGxpc3RzLCBvbmUgaXRlbSBtaXNzaW5nIiwKKyAgICApLAorICAgIHB5
dGVzdC5wYXJhbSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMoKToKKyAgICAg
ICAgICAgIHJlc3VsdCA9ICAgKDEsIDQsIDMpCisgICAgICAgICAgICBleHBlY3RlZCA9ICgxLCAy
LCAzKQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICAiIiIs
CisgICAgICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhwZWN0ZWQK
KyAgICAgICAgRSAgICAgICBhc3NlcnQgKDEsIDQsIDMpID09ICgxLCAyLCAzKQorICAgICAgICBF
ICAgICAgICAgQXQgaW5kZXggMSBkaWZmOiA0ICE9IDIKKyAgICAgICAgRSAgICAgICAgIEZ1bGwg
ZGlmZjoKKyAgICAgICAgRSAgICAgICAgIC0gKDEsIDIsIDMpCisgICAgICAgIEUgICAgICAgICA/
ICAgICBeCisgICAgICAgIEUgICAgICAgICArICgxLCA0LCAzKQorICAgICAgICBFICAgICAgICAg
PyAgICAgXgorICAgICAgICAiIiIsCisgICAgICAgIGlkPSJDb21wYXJlIHR1cGxlcyIsCisgICAg
KSwKKyAgICBweXRlc3QucGFyYW0oCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90aGlz
KCk6CisgICAgICAgICAgICByZXN1bHQgPSAgIHsxLCAzLCA0fQorICAgICAgICAgICAgZXhwZWN0
ZWQgPSB7MSwgMiwgM30KKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhwZWN0ZWQKKyAg
ICAgICAgIiIiLAorICAgICAgICAiIiIKKyAgICAgICAgPiAgICAgICBhc3NlcnQgcmVzdWx0ID09
IGV4cGVjdGVkCisgICAgICAgIEUgICAgICAgYXNzZXJ0IHsxLCAzLCA0fSA9PSB7MSwgMiwgM30K
KyAgICAgICAgRSAgICAgICAgIEV4dHJhIGl0ZW1zIGluIHRoZSBsZWZ0IHNldDoKKyAgICAgICAg
RSAgICAgICAgIDQKKyAgICAgICAgRSAgICAgICAgIEV4dHJhIGl0ZW1zIGluIHRoZSByaWdodCBz
ZXQ6CisgICAgICAgIEUgICAgICAgICAyCisgICAgICAgIEUgICAgICAgICBGdWxsIGRpZmY6Cisg
ICAgICAgIEUgICAgICAgICAtIHsxLCAyLCAzfQorICAgICAgICBFICAgICAgICAgPyAgICAgXiAg
XgorICAgICAgICBFICAgICAgICAgKyB7MSwgMywgNH0KKyAgICAgICAgRSAgICAgICAgID8gICAg
IF4gIF4KKyAgICAgICAgIiIiLAorICAgICAgICBpZD0iQ29tcGFyZSBzZXRzIiwKKyAgICApLAor
ICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMoKToK
KyAgICAgICAgICAgIHJlc3VsdCA9ICAgezE6ICdzcGFtJywgMzogJ2VnZ3MnfQorICAgICAgICAg
ICAgZXhwZWN0ZWQgPSB7MTogJ3NwYW0nLCAyOiAnZWdncyd9CisgICAgICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgICIiIiwKKyAgICAgICAgIiIiCisgICAgICAgID4g
ICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICBFICAgICAgIEFzc2VydGlv
bkVycm9yOiBhc3NlcnQgezE6ICdzcGFtJywgMzogJ2VnZ3MnfSA9PSB7MTogJ3NwYW0nLCAyOiAn
ZWdncyd9CisgICAgICAgIEUgICAgICAgICBDb21tb24gaXRlbXM6CisgICAgICAgIEUgICAgICAg
ICB7MTogJ3NwYW0nfQorICAgICAgICBFICAgICAgICAgTGVmdCBjb250YWlucyAxIG1vcmUgaXRl
bToKKyAgICAgICAgRSAgICAgICAgIHszOiAnZWdncyd9CisgICAgICAgIEUgICAgICAgICBSaWdo
dCBjb250YWlucyAxIG1vcmUgaXRlbToKKyAgICAgICAgRSAgICAgICAgIHsyOiAnZWdncyd9Cisg
ICAgICAgIEUgICAgICAgICBGdWxsIGRpZmY6CisgICAgICAgIEUgICAgICAgICAtIHsxOiAnc3Bh
bScsIDI6ICdlZ2dzJ30KKyAgICAgICAgRSAgICAgICAgID8gICAgICAgICAgICAgXgorICAgICAg
ICBFICAgICAgICAgKyB7MTogJ3NwYW0nLCAzOiAnZWdncyd9CisgICAgICAgIEUgICAgICAgICA/
ICAgICAgICAgICAgIF4KKyAgICAgICAgIiIiLAorICAgICAgICBpZD0iQ29tcGFyZSBkaWN0cyB3
aXRoIGRpZmZlcmluZyBrZXlzIiwKKyAgICApLAorICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
IiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMoKToKKyAgICAgICAgICAgIHJlc3VsdCA9ICAgezE6
ICdzcGFtJywgMjogJ2VnZ3MnfQorICAgICAgICAgICAgZXhwZWN0ZWQgPSB7MTogJ3NwYW0nLCAy
OiAnYmFjb24nfQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAg
ICAiIiIsCisgICAgICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhw
ZWN0ZWQKKyAgICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IHsxOiAnc3BhbScs
IDI6ICdlZ2dzJ30gPT0gezE6ICdzcGFtJywgMjogJ2JhY29uJ30KKyAgICAgICAgRSAgICAgICAg
IENvbW1vbiBpdGVtczoKKyAgICAgICAgRSAgICAgICAgIHsxOiAnc3BhbSd9CisgICAgICAgIEUg
ICAgICAgICBEaWZmZXJpbmcgaXRlbXM6CisgICAgICAgIEUgICAgICAgICB7MjogJ2VnZ3MnfSAh
PSB7MjogJ2JhY29uJ30KKyAgICAgICAgRSAgICAgICAgIEZ1bGwgZGlmZjoKKyAgICAgICAgRSAg
ICAgICAgIC0gezE6ICdzcGFtJywgMjogJ2JhY29uJ30KKyAgICAgICAgRSAgICAgICAgID8gICAg
ICAgICAgICAgICAgIF5eXl5eCisgICAgICAgIEUgICAgICAgICArIHsxOiAnc3BhbScsIDI6ICdl
Z2dzJ30KKyAgICAgICAgRSAgICAgICAgID8gICAgICAgICAgICAgICAgIF5eXl4KKyAgICAgICAg
IiIiLAorICAgICAgICBpZD0iQ29tcGFyZSBkaWN0cyB3aXRoIGRpZmZlcmluZyB2YWx1ZXMiLAor
ICAgICksCisgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3Rf
dGhpcygpOgorICAgICAgICAgICAgcmVzdWx0ID0gICB7MTogJ3NwYW0nLCAyOiAnZWdncyd9Cisg
ICAgICAgICAgICBleHBlY3RlZCA9IHsxOiAnc3BhbScsIDM6ICdiYWNvbid9CisgICAgICAgICAg
ICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgICIiIiwKKyAgICAgICAgIiIiCisg
ICAgICAgID4gICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICBFICAgICAg
IEFzc2VydGlvbkVycm9yOiBhc3NlcnQgezE6ICdzcGFtJywgMjogJ2VnZ3MnfSA9PSB7MTogJ3Nw
YW0nLCAzOiAnYmFjb24nfQorICAgICAgICBFICAgICAgICAgQ29tbW9uIGl0ZW1zOgorICAgICAg
ICBFICAgICAgICAgezE6ICdzcGFtJ30KKyAgICAgICAgRSAgICAgICAgIExlZnQgY29udGFpbnMg
MSBtb3JlIGl0ZW06CisgICAgICAgIEUgICAgICAgICB7MjogJ2VnZ3MnfQorICAgICAgICBFICAg
ICAgICAgUmlnaHQgY29udGFpbnMgMSBtb3JlIGl0ZW06CisgICAgICAgIEUgICAgICAgICB7Mzog
J2JhY29uJ30KKyAgICAgICAgRSAgICAgICAgIEZ1bGwgZGlmZjoKKyAgICAgICAgRSAgICAgICAg
IC0gezE6ICdzcGFtJywgMzogJ2JhY29uJ30KKyAgICAgICAgRSAgICAgICAgID8gICAgICAgICAg
ICAgXiAgIF5eXl5eCisgICAgICAgIEUgICAgICAgICArIHsxOiAnc3BhbScsIDI6ICdlZ2dzJ30K
KyAgICAgICAgRSAgICAgICAgID8gICAgICAgICAgICAgXiAgIF5eXl4KKyAgICAgICAgIiIiLAor
ICAgICAgICBpZD0iQ29tcGFyZSBkaWN0cyB3aXRoIGRpZmZlcmluZyBpdGVtcyIsCisgICAgKSwK
KyAgICBweXRlc3QucGFyYW0oCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90aGlzKCk6
CisgICAgICAgICAgICByZXN1bHQgPSAgICJzcG1hZWdncyIKKyAgICAgICAgICAgIGV4cGVjdGVk
ID0gInNwYW1lZ2dzIgorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAg
ICAgICAiIiIsCisgICAgICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCByZXN1bHQgPT0g
ZXhwZWN0ZWQKKyAgICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICdzcG1hZWdn
cycgPT0gJ3NwYW1lZ2dzJworICAgICAgICBFICAgICAgICAgLSBzcGFtZWdncworICAgICAgICBF
ICAgICAgICAgPyAgICAtCisgICAgICAgIEUgICAgICAgICArIHNwbWFlZ2dzCisgICAgICAgIEUg
ICAgICAgICA/ICAgKworICAgICAgICAiIiIsCisgICAgICAgIGlkPSJDb21wYXJlIHN0cmluZ3Mi
LAorICAgICksCisgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRl
c3RfdGhpcygpOgorICAgICAgICAgICAgcmVzdWx0ID0gICAic3BhbSBiYWNvbiBlZ2dzIgorICAg
ICAgICAgICAgYXNzZXJ0ICJiYWNvbiIgbm90IGluIHJlc3VsdAorICAgICAgICAiIiIsCisgICAg
ICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCAiYmFjb24iIG5vdCBpbiByZXN1bHQKKyAg
ICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICdiYWNvbicgbm90IGluICdzcGFt
IGJhY29uIGVnZ3MnCisgICAgICAgIEUgICAgICAgICAnYmFjb24nIGlzIGNvbnRhaW5lZCBoZXJl
OgorICAgICAgICBFICAgICAgICAgICBzcGFtIGJhY29uIGVnZ3MKKyAgICAgICAgRSAgICAgICAg
ID8gICAgICArKysrKworICAgICAgICAiIiIsCisgICAgICAgIGlkPSdUZXN0ICJub3QgaW4iIHN0
cmluZycsCisgICAgKSwKK10KK2lmIHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA3KToKKyAg
ICBURVNUQ0FTRVMuZXh0ZW5kKAorICAgICAgICBbCisgICAgICAgICAgICBweXRlc3QucGFyYW0o
CisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZnJvbSBkYXRhY2xhc3NlcyBp
bXBvcnQgZGF0YWNsYXNzCisKKyAgICAgICAgICAgICAgICBAZGF0YWNsYXNzCisgICAgICAgICAg
ICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgICAgICAgICAgYTogaW50CisgICAgICAgICAgICAg
ICAgICAgIGI6IHN0cgorCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfdGhpcygpOgorICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSAgIEEoMSwgJ3NwYW0nKQorICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZCA9IEEoMiwgJ3NwYW0nKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcmVz
dWx0ID09IGV4cGVjdGVkCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgICAgID4gICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAg
ICAgICAgICAgICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCBBKGE9MSwgYj0nc3Bh
bScpID09IEEoYT0yLCBiPSdzcGFtJykKKyAgICAgICAgICAgICAgICBFICAgICAgICAgTWF0Y2hp
bmcgYXR0cmlidXRlczoKKyAgICAgICAgICAgICAgICBFICAgICAgICAgWydiJ10KKyAgICAgICAg
ICAgICAgICBFICAgICAgICAgRGlmZmVyaW5nIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAg
RSAgICAgICAgIFsnYSddCisgICAgICAgICAgICAgICAgRSAgICAgICAgIERyaWxsIGRvd24gaW50
byBkaWZmZXJpbmcgYXR0cmlidXRlIGE6CisgICAgICAgICAgICAgICAgRSAgICAgICAgICAgYTog
MSAhPSAyCisgICAgICAgICAgICAgICAgRSAgICAgICAgICAgKzEKKyAgICAgICAgICAgICAgICBF
ICAgICAgICAgICAtMgorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICBpZD0i
Q29tcGFyZSBkYXRhIGNsYXNzZXMiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVz
dC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgYXR0
cgorCisgICAgICAgICAgICAgICAgQGF0dHIucyhhdXRvX2F0dHJpYnM9VHJ1ZSkKKyAgICAgICAg
ICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgICAgICAgICBhOiBpbnQKKyAgICAgICAgICAg
ICAgICAgICAgYjogc3RyCisKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF90aGlzKCk6CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9ICAgQSgxLCAnc3BhbScpCisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkID0gQSgxLCAnZWdncycpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBy
ZXN1bHQgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICAgICAgPiAgICAgICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisg
ICAgICAgICAgICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IEEoYT0xLCBiPSdz
cGFtJykgPT0gQShhPTEsIGI9J2VnZ3MnKQorICAgICAgICAgICAgICAgIEUgICAgICAgICBNYXRj
aGluZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgICAgIEUgICAgICAgICBbJ2EnXQorICAgICAg
ICAgICAgICAgIEUgICAgICAgICBEaWZmZXJpbmcgYXR0cmlidXRlczoKKyAgICAgICAgICAgICAg
ICBFICAgICAgICAgWydiJ10KKyAgICAgICAgICAgICAgICBFICAgICAgICAgRHJpbGwgZG93biBp
bnRvIGRpZmZlcmluZyBhdHRyaWJ1dGUgYjoKKyAgICAgICAgICAgICAgICBFICAgICAgICAgICBi
OiAnc3BhbScgIT0gJ2VnZ3MnCisgICAgICAgICAgICAgICAgRSAgICAgICAgICAgLSBlZ2dzCisg
ICAgICAgICAgICAgICAgRSAgICAgICAgICAgKyBzcGFtCisgICAgICAgICAgICAgICAgIiIiLAor
ICAgICAgICAgICAgICAgIGlkPSJDb21wYXJlIGF0dHJzIGNsYXNzZXMiLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgXQorICAgICkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImNvZGUs
IGV4cGVjdGVkIiwgVEVTVENBU0VTKQorZGVmIHRlc3RfZXJyb3JfZGlmZihjb2RlLCBleHBlY3Rl
ZCwgdGVzdGRpcik6CisgICAgZXhwZWN0ZWQgPSBbbGluZS5sc3RyaXAoKSBmb3IgbGluZSBpbiBl
eHBlY3RlZC5zcGxpdGxpbmVzKCldCisgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZShjb2RlKQor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICItdnYiKQorICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhleHBlY3RlZCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy90ZXN0X2ZhdWx0aGFuZGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3YTE5NWJmODA3YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9mYXVsdGhhbmRsZXIucHkKQEAgLTAsMCArMSwxMzYgQEAK
K2ltcG9ydCBzeXMKKworaW1wb3J0IHB5dGVzdAorCisKK2RlZiB0ZXN0X2VuYWJsZWQodGVzdGRp
cik6CisgICAgIiIiVGVzdCBzaW5nbGUgY3Jhc2hpbmcgdGVzdCBkaXNwbGF5cyBhIHRyYWNlYmFj
ay4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgIGltcG9ydCBm
YXVsdGhhbmRsZXIKKyAgICBkZWYgdGVzdF9jcmFzaCgpOgorICAgICAgICBmYXVsdGhhbmRsZXIu
X3NpZ2FicnQoKQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dF9zdWJwcm9jZXNzKCkKKyAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyIqRmF0YWwg
UHl0aG9uIGVycm9yKiJdKQorICAgIGFzc2VydCByZXN1bHQucmV0ICE9IDAKKworCitkZWYgdGVz
dF9jcmFzaF9uZWFyX2V4aXQodGVzdGRpcik6CisgICAgIiIiVGVzdCB0aGF0IGZhdWx0IGhhbmRs
ZXIgZGlzcGxheXMgY3Jhc2hlcyB0aGF0IGhhcHBlbiBldmVuIGFmdGVyCisgICAgcHl0ZXN0IGlz
IGV4aXRpbmcgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBk
b3duKS4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgIGltcG9y
dCBmYXVsdGhhbmRsZXIKKyAgICBpbXBvcnQgYXRleGl0CisgICAgZGVmIHRlc3Rfb2soKToKKyAg
ICAgICAgYXRleGl0LnJlZ2lzdGVyKGZhdWx0aGFuZGxlci5fc2lnYWJydCkKKyAgICAiIiIKKyAg
ICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgcmVz
dWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKkZhdGFsIFB5dGhvbiBlcnJvcioiXSkKKyAgICBh
c3NlcnQgcmVzdWx0LnJldCAhPSAwCisKKworZGVmIHRlc3RfZGlzYWJsZWQodGVzdGRpcik6Cisg
ICAgIiIiVGVzdCBvcHRpb24gdG8gZGlzYWJsZSBmYXVsdCBoYW5kbGVyIGluIHRoZSBjb21tYW5k
IGxpbmUuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICBpbXBv
cnQgZmF1bHRoYW5kbGVyCisgICAgZGVmIHRlc3RfZGlzYWJsZWQoKToKKyAgICAgICAgYXNzZXJ0
IG5vdCBmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpCisgICAgIiIiCisgICAgKQorICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi1wIiwgIm5vOmZhdWx0aGFuZGxlciIp
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQorICAgIGFz
c2VydCByZXN1bHQucmV0ID09IDAKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAg
ImVuYWJsZWQiLAorICAgIFsKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgVHJ1
ZSwgbWFya3M9cHl0ZXN0Lm1hcmsuc2tpcChyZWFzb249InNvbWV0aW1lcyBjcmFzaGVzIG9uIENJ
ICgjNzAyMikiKQorICAgICAgICApLAorICAgICAgICBGYWxzZSwKKyAgICBdLAorKQorZGVmIHRl
c3RfdGltZW91dCh0ZXN0ZGlyLCBlbmFibGVkOiBib29sKSAtPiBOb25lOgorICAgICIiIlRlc3Qg
b3B0aW9uIHRvIGR1bXAgdHJhY2ViYWNrcyBhZnRlciBhIGNlcnRhaW4gdGltZW91dC4KKworICAg
IElmIGZhdWx0aGFuZGxlciBpcyBkaXNhYmxlZCwgbm8gdHJhY2ViYWNrIHdpbGwgYmUgZHVtcGVk
LgorICAgICIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgaW1w
b3J0IG9zLCB0aW1lCisgICAgZGVmIHRlc3RfdGltZW91dCgpOgorICAgICAgICB0aW1lLnNsZWVw
KDEgaWYgIkNJIiBpbiBvcy5lbnZpcm9uIGVsc2UgMC4xKQorICAgICIiIgorICAgICkKKyAgICB0
ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAgICBm
YXVsdGhhbmRsZXJfdGltZW91dCA9IDAuMDEKKyAgICAgICAgIiIiCisgICAgKQorICAgIGFyZ3Mg
PSBbIi1wIiwgIm5vOmZhdWx0aGFuZGxlciJdIGlmIG5vdCBlbmFibGVkIGVsc2UgW10KKworICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKmFyZ3MpCisgICAgdGJfb3V0
cHV0ID0gIm1vc3QgcmVjZW50IGNhbGwgZmlyc3QiCisgICAgaWYgZW5hYmxlZDoKKyAgICAgICAg
cmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKiVzKiIgJSB0Yl9vdXRwdXRdKQorICAgIGVs
c2U6CisgICAgICAgIGFzc2VydCB0Yl9vdXRwdXQgbm90IGluIHJlc3VsdC5zdGRlcnIuc3RyKCkK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaG9va19u
YW1lIiwgWyJweXRlc3RfZW50ZXJfcGRiIiwgInB5dGVzdF9leGNlcHRpb25faW50ZXJhY3QiXSkK
K2RlZiB0ZXN0X2NhbmNlbF90aW1lb3V0X29uX2hvb2sobW9ua2V5cGF0Y2gsIGhvb2tfbmFtZSk6
CisgICAgIiIiTWFrZSBzdXJlIHRoYXQgd2UgYXJlIGNhbmNlbGxpbmcgYW55IHNjaGVkdWxlZCB0
cmFjZWJhY2sgZHVtcGluZyBkdWUKKyAgICB0byB0aW1lb3V0IGJlZm9yZSBlbnRlcmluZyBwZGIg
KHB5dGVzdC1kZXYvcHl0ZXN0LWZhdWx0aGFuZGxlciMxMikgb3IgYW55CisgICAgb3RoZXIgaW50
ZXJhY3RpdmUgZXhjZXB0aW9uIChweXRlc3QtZGV2L3B5dGVzdC1mYXVsdGhhbmRsZXIjMTQpLiIi
IgorICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICBmcm9tIF9weXRlc3QuZmF1bHRoYW5kbGVy
IGltcG9ydCBGYXVsdEhhbmRsZXJIb29rcworCisgICAgY2FsbGVkID0gW10KKworICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIoCisgICAgICAgIGZhdWx0aGFuZGxlciwgImNhbmNlbF9kdW1wX3RyYWNl
YmFja19sYXRlciIsIGxhbWJkYTogY2FsbGVkLmFwcGVuZCgxKQorICAgICkKKworICAgICMgY2Fs
bCBvdXIgaG9vayBleHBsaWNpdGx5LCB3ZSBjYW4gdHJ1c3QgdGhhdCBweXRlc3Qgd2lsbCBjYWxs
IHRoZSBob29rCisgICAgIyBmb3IgdXMgYXQgdGhlIGFwcHJvcHJpYXRlIG1vbWVudAorICAgIGhv
b2tfZnVuYyA9IGdldGF0dHIoRmF1bHRIYW5kbGVySG9va3MsIGhvb2tfbmFtZSkKKyAgICBob29r
X2Z1bmMoc2VsZj1Ob25lKQorICAgIGFzc2VydCBjYWxsZWQgPT0gWzFdCisKKworQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJmYXVsdGhhbmRsZXJfdGltZW91dCIsIFswLCAyXSkKK2RlZiB0ZXN0
X2FscmVhZHlfaW5pdGlhbGl6ZWQoZmF1bHRoYW5kbGVyX3RpbWVvdXQsIHRlc3RkaXIpOgorICAg
ICIiIlRlc3QgZm9yIGZhdWx0aGFuZGxlciBiZWluZyBpbml0aWFsaXplZCBlYXJsaWVyIHRoYW4g
cHl0ZXN0ICgjNjU3NSkuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIK
KyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAg
ICAgICAgICAgIGFzc2VydCBmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpCisgICAgIiIiCisgICAg
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVuKAorICAgICAgICBzeXMuZXhlY3V0YWJsZSwKKyAg
ICAgICAgIi1YIiwKKyAgICAgICAgImZhdWx0aGFuZGxlciIsCisgICAgICAgICItbXB5dGVzdCIs
CisgICAgICAgIHRlc3RkaXIudG1wZGlyLAorICAgICAgICAiLW8iLAorICAgICAgICAiZmF1bHRo
YW5kbGVyX3RpbWVvdXQ9e30iLmZvcm1hdChmYXVsdGhhbmRsZXJfdGltZW91dCksCisgICAgKQor
ICAgICMgZW5zdXJlIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBmYXVsdGhhbmRsZXJfdGltZW91dCBp
cyBjb25maWd1cmVkCisgICAgd2FybmluZ19saW5lID0gIipmYXVsdGhhbmRsZXIucHkqZmF1bHRo
YW5kbGVyIG1vZHVsZSBlbmFibGVkIGJlZm9yZSoiCisgICAgaWYgZmF1bHRoYW5kbGVyX3RpbWVv
dXQgPiAwOgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMod2FybmluZ19saW5l
KQorICAgIGVsc2U6CisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKHdhcm5p
bmdfbGluZSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIioxIHBhc3NlZCoiKQor
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9maW5kcGF0aHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZmluZHBhdGhz
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTc0ZGNmOGYzY2Rh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2ZpbmRwYXRocy5w
eQpAQCAtMCwwICsxLDEyNSBAQAorZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CisKK2ltcG9y
dCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcuZmluZHBhdGhzIGltcG9ydCBnZXRfY29tbW9u
X2FuY2VzdG9yCitmcm9tIF9weXRlc3QuY29uZmlnLmZpbmRwYXRocyBpbXBvcnQgZ2V0X2RpcnNf
ZnJvbV9hcmdzCitmcm9tIF9weXRlc3QuY29uZmlnLmZpbmRwYXRocyBpbXBvcnQgbG9hZF9jb25m
aWdfZGljdF9mcm9tX2ZpbGUKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCisKKwor
Y2xhc3MgVGVzdExvYWRDb25maWdEaWN0RnJvbUZpbGU6CisgICAgZGVmIHRlc3RfZW1wdHlfcHl0
ZXN0X2luaShzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAgIiIicHl0ZXN0
LmluaSBmaWxlcyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgZm9yIGNvbmZpZ3VyYXRpb24sIGV2ZW4g
aWYgZW1wdHkiIiIKKyAgICAgICAgZm4gPSB0bXBfcGF0aCAvICJweXRlc3QuaW5pIgorICAgICAg
ICBmbi53cml0ZV90ZXh0KCIiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICBhc3NlcnQgbG9h
ZF9jb25maWdfZGljdF9mcm9tX2ZpbGUoZm4pID09IHt9CisKKyAgICBkZWYgdGVzdF9weXRlc3Rf
aW5pKHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAgICAgICAiIiJbcHl0ZXN0XSBz
ZWN0aW9uIGluIHB5dGVzdC5pbmkgZmlsZXMgaXMgcmVhZCBjb3JyZWN0bHkiIiIKKyAgICAgICAg
Zm4gPSB0bXBfcGF0aCAvICJweXRlc3QuaW5pIgorICAgICAgICBmbi53cml0ZV90ZXh0KCJbcHl0
ZXN0XVxueD0xIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgYXNzZXJ0IGxvYWRfY29uZmln
X2RpY3RfZnJvbV9maWxlKGZuKSA9PSB7IngiOiAiMSJ9CisKKyAgICBkZWYgdGVzdF9jdXN0b21f
aW5pKHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAgICAgICAiIiJbcHl0ZXN0XSBz
ZWN0aW9uIGluIGFueSAuaW5pIGZpbGUgaXMgcmVhZCBjb3JyZWN0bHkiIiIKKyAgICAgICAgZm4g
PSB0bXBfcGF0aCAvICJjdXN0b20uaW5pIgorICAgICAgICBmbi53cml0ZV90ZXh0KCJbcHl0ZXN0
XVxueD0xIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgYXNzZXJ0IGxvYWRfY29uZmlnX2Rp
Y3RfZnJvbV9maWxlKGZuKSA9PSB7IngiOiAiMSJ9CisKKyAgICBkZWYgdGVzdF9jdXN0b21faW5p
X3dpdGhvdXRfc2VjdGlvbihzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAg
IiIiQ3VzdG9tIC5pbmkgZmlsZXMgd2l0aG91dCBbcHl0ZXN0XSBzZWN0aW9uIGFyZSBub3QgY29u
c2lkZXJlZCBmb3IgY29uZmlndXJhdGlvbiIiIgorICAgICAgICBmbiA9IHRtcF9wYXRoIC8gImN1
c3RvbS5pbmkiCisgICAgICAgIGZuLndyaXRlX3RleHQoIltjdXN0b21dIiwgZW5jb2Rpbmc9InV0
Zi04IikKKyAgICAgICAgYXNzZXJ0IGxvYWRfY29uZmlnX2RpY3RfZnJvbV9maWxlKGZuKSBpcyBO
b25lCisKKyAgICBkZWYgdGVzdF9jdXN0b21fY2ZnX2ZpbGUoc2VsZiwgdG1wX3BhdGg6IFBhdGgp
IC0+IE5vbmU6CisgICAgICAgICIiIkN1c3RvbSAuY2ZnIGZpbGVzIHdpdGhvdXQgW3Rvb2w6cHl0
ZXN0XSBzZWN0aW9uIGFyZSBub3QgY29uc2lkZXJlZCBmb3IgY29uZmlndXJhdGlvbiIiIgorICAg
ICAgICBmbiA9IHRtcF9wYXRoIC8gImN1c3RvbS5jZmciCisgICAgICAgIGZuLndyaXRlX3RleHQo
IltjdXN0b21dIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgYXNzZXJ0IGxvYWRfY29uZmln
X2RpY3RfZnJvbV9maWxlKGZuKSBpcyBOb25lCisKKyAgICBkZWYgdGVzdF92YWxpZF9jZmdfZmls
ZShzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAgIiIiQ3VzdG9tIC5jZmcg
ZmlsZXMgd2l0aCBbdG9vbDpweXRlc3RdIHNlY3Rpb24gYXJlIHJlYWQgY29ycmVjdGx5IiIiCisg
ICAgICAgIGZuID0gdG1wX3BhdGggLyAiY3VzdG9tLmNmZyIKKyAgICAgICAgZm4ud3JpdGVfdGV4
dCgiW3Rvb2w6cHl0ZXN0XVxueD0xIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgYXNzZXJ0
IGxvYWRfY29uZmlnX2RpY3RfZnJvbV9maWxlKGZuKSA9PSB7IngiOiAiMSJ9CisKKyAgICBkZWYg
dGVzdF91bnN1cHBvcnRlZF9weXRlc3Rfc2VjdGlvbl9pbl9jZmdfZmlsZShzZWxmLCB0bXBfcGF0
aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAgIiIiLmNmZyBmaWxlcyB3aXRoIFtweXRlc3RdIHNl
Y3Rpb24gYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgYW5kIHNob3VsZCBmYWlsIHRvIGFsZXJ0IHVz
ZXJzIiIiCisgICAgICAgIGZuID0gdG1wX3BhdGggLyAiY3VzdG9tLmNmZyIKKyAgICAgICAgZm4u
d3JpdGVfdGV4dCgiW3B5dGVzdF0iLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKToKKyAgICAgICAgICAgIGxvYWRfY29u
ZmlnX2RpY3RfZnJvbV9maWxlKGZuKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF90b21sX2ZpbGUo
c2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIi50b21sIGZpbGVzIHdp
dGhvdXQgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXSBhcmUgbm90IGNvbnNpZGVyZWQgZm9yIGNv
bmZpZ3VyYXRpb24uIiIiCisgICAgICAgIGZuID0gdG1wX3BhdGggLyAibXljb25maWcudG9tbCIK
KyAgICAgICAgZm4ud3JpdGVfdGV4dCgKKyAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIFtidWlsZF9zeXN0ZW1dCisgICAgICAgICAgICB4ID0gMQor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgZW5jb2Rpbmc9InV0
Zi04IiwKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgbG9hZF9jb25maWdfZGljdF9mcm9tX2Zp
bGUoZm4pIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X3ZhbGlkX3RvbWxfZmlsZShzZWxmLCB0bXBf
cGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAgIiIiLnRvbWwgZmlsZXMgd2l0aCBbdG9vbC5w
eXRlc3QuaW5pX29wdGlvbnNdIGFyZSByZWFkIGNvcnJlY3RseSwgaW5jbHVkaW5nIGNoYW5naW5n
CisgICAgICAgIGRhdGEgdHlwZXMgdG8gc3RyL2xpc3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBv
dGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIiIiCisgICAgICAgIGZuID0gdG1wX3BhdGggLyAi
bXljb25maWcudG9tbCIKKyAgICAgICAgZm4ud3JpdGVfdGV4dCgKKyAgICAgICAgICAgIGRlZGVu
dCgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFt0b29sLnB5dGVzdC5pbmlfb3B0
aW9uc10KKyAgICAgICAgICAgIHggPSAxCisgICAgICAgICAgICB5ID0gMjAuMAorICAgICAgICAg
ICAgdmFsdWVzID0gWyJ0ZXN0cyIsICJpbnRlZ3JhdGlvbiJdCisgICAgICAgICAgICBuYW1lID0g
ImZvbyIKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGVuY29k
aW5nPSJ1dGYtOCIsCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGxvYWRfY29uZmlnX2RpY3Rf
ZnJvbV9maWxlKGZuKSA9PSB7CisgICAgICAgICAgICAieCI6ICIxIiwKKyAgICAgICAgICAgICJ5
IjogIjIwLjAiLAorICAgICAgICAgICAgInZhbHVlcyI6IFsidGVzdHMiLCAiaW50ZWdyYXRpb24i
XSwKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgIH0KKworCitjbGFzcyBUZXN0
Q29tbW9uQW5jZXN0b3I6CisgICAgZGVmIHRlc3RfaGFzX2FuY2VzdG9yKHNlbGYsIHRtcF9wYXRo
OiBQYXRoKSAtPiBOb25lOgorICAgICAgICBmbjEgPSB0bXBfcGF0aCAvICJmb28iIC8gImJhciIg
LyAidGVzdF8xLnB5IgorICAgICAgICBmbjEucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAg
ICAgICAgZm4xLnRvdWNoKCkKKyAgICAgICAgZm4yID0gdG1wX3BhdGggLyAiZm9vIiAvICJ6YXoi
IC8gInRlc3RfMi5weSIKKyAgICAgICAgZm4yLnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUpCisg
ICAgICAgIGZuMi50b3VjaCgpCisgICAgICAgIGFzc2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFtm
bjEsIGZuMl0pID09IHRtcF9wYXRoIC8gImZvbyIKKyAgICAgICAgYXNzZXJ0IGdldF9jb21tb25f
YW5jZXN0b3IoW2ZuMS5wYXJlbnQsIGZuMl0pID09IHRtcF9wYXRoIC8gImZvbyIKKyAgICAgICAg
YXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW2ZuMS5wYXJlbnQsIGZuMi5wYXJlbnRdKSA9PSB0
bXBfcGF0aCAvICJmb28iCisgICAgICAgIGFzc2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFtmbjEs
IGZuMi5wYXJlbnRdKSA9PSB0bXBfcGF0aCAvICJmb28iCisKKyAgICBkZWYgdGVzdF9zaW5nbGVf
ZGlyKHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAgICAgICBhc3NlcnQgZ2V0X2Nv
bW1vbl9hbmNlc3RvcihbdG1wX3BhdGhdKSA9PSB0bXBfcGF0aAorCisgICAgZGVmIHRlc3Rfc2lu
Z2xlX2ZpbGUoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgIGZuID0gdG1w
X3BhdGggLyAiZm9vLnB5IgorICAgICAgICBmbi50b3VjaCgpCisgICAgICAgIGFzc2VydCBnZXRf
Y29tbW9uX2FuY2VzdG9yKFtmbl0pID09IHRtcF9wYXRoCisKKworZGVmIHRlc3RfZ2V0X2RpcnNf
ZnJvbV9hcmdzKHRtcF9wYXRoKToKKyAgICAiIiJnZXRfZGlyc19mcm9tX2FyZ3MoKSBza2lwcyBv
dmVyIG5vbi1leGlzdGluZyBkaXJlY3RvcmllcyBhbmQgZmlsZXMiIiIKKyAgICBmbiA9IHRtcF9w
YXRoIC8gImZvby5weSIKKyAgICBmbi50b3VjaCgpCisgICAgZCA9IHRtcF9wYXRoIC8gInRlc3Rz
IgorICAgIGQubWtkaXIoKQorICAgIG9wdGlvbiA9ICItLWZvb2Jhcj0vZm9vLnR4dCIKKyAgICAj
IHhkaXN0IHVzZXMgb3B0aW9ucyBpbiB0aGlzIGZvcm1hdCBmb3IgaXRzIHJzeW5jIGZlYXR1cmUg
KCM3NjM4KQorICAgIHhkaXN0X3JzeW5jX29wdGlvbiA9ICJwb3Blbj1jOi9kZXN0IgorICAgIGFz
c2VydCBnZXRfZGlyc19mcm9tX2FyZ3MoCisgICAgICAgIFtzdHIoZm4pLCBzdHIodG1wX3BhdGgg
LyAiZG9lc19ub3RfZXhpc3QiKSwgc3RyKGQpLCBvcHRpb24sIHhkaXN0X3JzeW5jX29wdGlvbl0K
KyAgICApID09IFtmbi5wYXJlbnQsIGRdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfaGVscGNvbmZpZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9oZWxwY29uZmln
LnB5CmluZGV4IGI1NDI0MjM1YjE2OC4uNjExNjI0MmVjMGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfaGVscGNvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfaGVscGNvbmZpZy5weQpAQCAtMSwyMyArMSwzNSBAQAotZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotZnJvbSBfcHl0
ZXN0Lm1haW4gaW1wb3J0IEVYSVRfTk9URVNUU0NPTExFQ1RFRAogaW1wb3J0IHB5dGVzdAorZnJv
bSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKIAogCi1kZWYgdGVzdF92ZXJzaW9uKHRl
c3RkaXIsIHB5dGVzdGNvbmZpZyk6Ci0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
dmVyc2lvbiIpCitkZWYgdGVzdF92ZXJzaW9uX3ZlcmJvc2UodGVzdGRpciwgcHl0ZXN0Y29uZmln
KToKKyAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lO
X0FVVE9MT0FEIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS12ZXJzaW9uIiwg
Ii0tdmVyc2lvbiIpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAotICAgICMgcCA9IHB5LnBh
dGgubG9jYWwocHkuX19maWxlX18pLmRpcnBhdGgoKQotICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRj
aF9saW5lcyhbIipweXRlc3QqJXMqaW1wb3J0ZWQgZnJvbSoiICUgKHB5dGVzdC5fX3ZlcnNpb25f
XywpXSkKKyAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiKnB5dGVz
dCp7fSppbXBvcnRlZCBmcm9tKiIuZm9ybWF0KHB5dGVzdC5fX3ZlcnNpb25fXyldCisgICAgKQog
ICAgIGlmIHB5dGVzdGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmxpc3RfcGx1Z2luX2Rpc3RpbmZvKCk6
CiAgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipzZXR1cHRvb2xzIHJlZ2lz
dGVyZWQgcGx1Z2luczoiLCAiKmF0KiJdKQogCiAKK2RlZiB0ZXN0X3ZlcnNpb25fbGVzc192ZXJi
b3NlKHRlc3RkaXIsIHB5dGVzdGNvbmZpZyk6CisgICAgdGVzdGRpci5tb25rZXlwYXRjaC5kZWxl
bnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIpCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tdmVyc2lvbiIpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAg
ICMgcCA9IHB5LnBhdGgubG9jYWwocHkuX19maWxlX18pLmRpcnBhdGgoKQorICAgIHJlc3VsdC5z
dGRlcnIuZm5tYXRjaF9saW5lcyhbInB5dGVzdCB7fSIuZm9ybWF0KHB5dGVzdC5fX3ZlcnNpb25f
XyldKQorCisKIGRlZiB0ZXN0X2hlbHAodGVzdGRpcik6CiAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi0taGVscCIpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgIiIiCi0gICAgICAgICotdip2ZXJib3Nl
KgorICAgICAgICAgIC1tIE1BUktFWFBSICAgICAgICAgICBvbmx5IHJ1biB0ZXN0cyBtYXRjaGlu
ZyBnaXZlbiBtYXJrIGV4cHJlc3Npb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvciBleGFtcGxlOiAtbSAnbWFyazEgYW5kIG5vdCBtYXJrMicuCisgICAgICAgIHJlcG9ydGlu
ZzoKKyAgICAgICAgICAtLWR1cmF0aW9ucz1OICoKICAgICAgICAgKnNldHVwLmNmZyoKICAgICAg
ICAgKm1pbnZlcnNpb24qCiAgICAgICAgICp0byBzZWUqbWFya2VycypweXRlc3QgLS1tYXJrZXJz
KgpAQCAtMjYsNiArMzgsMzkgQEAgZGVmIHRlc3RfaGVscCh0ZXN0ZGlyKToKICAgICApCiAKIAor
ZGVmIHRlc3Rfbm9uZV9oZWxwX3BhcmFtX3JhaXNlc19leGNlcHRpb24odGVzdGRpcik6CisgICAg
IiIiVGVzdCB0aGF0IGEgTm9uZSBoZWxwIHBhcmFtIHJhaXNlcyBhIFR5cGVFcnJvci4iIiIKKyAg
ICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBweXRlc3Rf
YWRkb3B0aW9uKHBhcnNlcik6CisgICAgICAgICAgICBwYXJzZXIuYWRkaW5pKCJ0ZXN0X2luaSIs
IE5vbmUsIGRlZmF1bHQ9VHJ1ZSwgdHlwZT0iYm9vbCIpCisgICAgIiIiCisgICAgKQorICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWhlbHAiKQorICAgIHJlc3VsdC5zdGRlcnIuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgWyIqVHlwZUVycm9yOiBoZWxwIGFyZ3VtZW50IGNhbm5vdCBi
ZSBOb25lIGZvciB0ZXN0X2luaSoiXQorICAgICkKKworCitkZWYgdGVzdF9lbXB0eV9oZWxwX3Bh
cmFtKHRlc3RkaXIpOgorICAgICIiIlRlc3QgdGhhdCBhbiBlbXB0eSBoZWxwIHBhcmFtIGlzIGRp
c3BsYXllZCBjb3JyZWN0bHkuIiIiCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAg
ICIiIgorICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAgICAg
cGFyc2VyLmFkZGluaSgidGVzdF9pbmkiLCAiIiwgZGVmYXVsdD1UcnVlLCB0eXBlPSJib29sIikK
KyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0taGVscCIp
CisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgIGxpbmVzID0gWworICAgICAgICAiICBy
ZXF1aXJlZF9wbHVnaW5zIChhcmdzKToiLAorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAg
ICAgcGx1Z2lucyB0aGF0IG11c3QgYmUgcHJlc2VudCBmb3IgcHl0ZXN0IHRvIHJ1bioiLAorICAg
ICAgICAiICB0ZXN0X2luaSAoYm9vbCk6KiIsCisgICAgICAgICJlbnZpcm9ubWVudCB2YXJpYWJs
ZXM6IiwKKyAgICBdCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKGxpbmVzLCBjb25z
ZWN1dGl2ZT1UcnVlKQorCisKIGRlZiB0ZXN0X2hvb2t2YWxpZGF0aW9uX3Vua25vd24odGVzdGRp
cik6CiAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICIiIgpAQCAtNDgsNyArOTMs
NyBAQCBkZWYgdGVzdF9ob29rdmFsaWRhdGlvbl9vcHRpb25hbCh0ZXN0ZGlyKToKICAgICAiIiIK
ICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGFzc2VydCByZXN1
bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgIGFzc2VydCByZXN1bHQucmV0ID09
IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAogCiAKIGRlZiB0ZXN0X3RyYWNlY29uZmlnKHRl
c3RkaXIpOgpAQCAtNTYsOSArMTAxLDkgQEAgZGVmIHRlc3RfdHJhY2Vjb25maWcodGVzdGRpcik6
CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnVzaW5nKnB5dGVzdCpweSoiLCAi
KmFjdGl2ZSBwbHVnaW5zKiJdKQogCiAKLWRlZiB0ZXN0X2RlYnVnKHRlc3RkaXIsIG1vbmtleXBh
dGNoKToKK2RlZiB0ZXN0X2RlYnVnKHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoIi0tZGVidWciKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IEVY
SVRfTk9URVNUU0NPTExFQ1RFRAorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5P
X1RFU1RTX0NPTExFQ1RFRAogICAgIHAgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJweXRlc3RkZWJ1
Zy5sb2ciKQogICAgIGFzc2VydCAicHl0ZXN0X3Nlc3Npb25zdGFydCIgaW4gcC5yZWFkKCkKIApA
QCAtNjYsNyArMTExLDcgQEAgZGVmIHRlc3RfZGVidWcodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgog
ZGVmIHRlc3RfUFlURVNUX0RFQlVHKHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICBtb25rZXlw
YXRjaC5zZXRlbnYoIlBZVEVTVF9ERUJVRyIsICIxIikKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdF9zdWJwcm9jZXNzKCkKLSAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVT
VFNDT0xMRUNURUQKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19D
T0xMRUNURUQKICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsiKnB5
dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZCoiLCAiKm1hbmFnZXIqUGx1Z2luTWFuYWdlcioiXQogICAg
ICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9qdW5pdHhtbC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9qdW5pdHhtbC5weQppbmRleCBkMGJlNWYyNjc1OTYuLjNj
YzkzYTM5ODA1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2p1bml0eG1s
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9qdW5pdHhtbC5weQpAQCAtMSwxOCAr
MSw1NCBAQAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBvcworaW1w
b3J0IHBsYXRmb3JtCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSB0eXBpbmcg
aW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQg
VHVwbGUKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbQorCiBpbXBvcnQgcHkKLWltcG9ydCBz
eXMKLWltcG9ydCBvcwotZnJvbSBfcHl0ZXN0Lmp1bml0eG1sIGltcG9ydCBMb2dYTUwKK2ltcG9y
dCB4bWxzY2hlbWEKKwogaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQg
VFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9w
eXRlc3QuanVuaXR4bWwgaW1wb3J0IGJpbl94bWxfZXNjYXBlCitmcm9tIF9weXRlc3QuanVuaXR4
bWwgaW1wb3J0IExvZ1hNTAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20g
X3B5dGVzdC5yZXBvcnRzIGltcG9ydCBCYXNlUmVwb3J0Citmcm9tIF9weXRlc3QucmVwb3J0cyBp
bXBvcnQgVGVzdFJlcG9ydAorZnJvbSBfcHl0ZXN0LnN0b3JlIGltcG9ydCBTdG9yZQorCiAKK0Bw
eXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgc2NoZW1hKCk6CisgICAgIiIiUmV0
dXJuIGFuIHhtbHNjaGVtYS5YTUxTY2hlbWEgb2JqZWN0IGZvciB0aGUganVuaXQtMTAueHNkIGZp
bGUuIiIiCisgICAgZm4gPSBQYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiZXhhbXBsZV9zY3JpcHRz
L2p1bml0LTEwLnhzZCIKKyAgICB3aXRoIGZuLm9wZW4oKSBhcyBmOgorICAgICAgICByZXR1cm4g
eG1sc2NoZW1hLlhNTFNjaGVtYShmKQogCi1kZWYgcnVuYW5kcGFyc2UodGVzdGRpciwgKmFyZ3Mp
OgotICAgIHJlc3VsdHBhdGggPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJqdW5pdC54bWwiKQotICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWp1bml0eG1sPSVzIiAlIHJlc3VsdHBhdGgs
ICphcmdzKQotICAgIHhtbGRvYyA9IG1pbmlkb20ucGFyc2Uoc3RyKHJlc3VsdHBhdGgpKQotICAg
IHJldHVybiByZXN1bHQsIERvbU5vZGUoeG1sZG9jKQorCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBy
dW5fYW5kX3BhcnNlKHRlc3RkaXIsIHNjaGVtYSk6CisgICAgIiIiRml4dHVyZSB0aGF0IHJldHVy
bnMgYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgcHl0ZXN0IGFuZAorICAg
IHJldHVybiB0aGUgcGFyc2VkIGBgRG9tTm9kZWBgIG9mIHRoZSByb290IHhtbCBub2RlLgorCisg
ICAgVGhlIGBgZmFtaWx5YGAgcGFyYW1ldGVyIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBgYGp1
bml0X2ZhbWlseWBgIG9mIHRoZSB3cml0dGVuIHJlcG9ydC4KKyAgICAieHVuaXQyIiBpcyBhbHNv
IGF1dG9tYXRpY2FsbHkgdmFsaWRhdGVkIGFnYWluc3QgdGhlIHNjaGVtYS4KKyAgICAiIiIKKwor
ICAgIGRlZiBydW4oKmFyZ3MsIGZhbWlseT0ieHVuaXQxIik6CisgICAgICAgIGlmIGZhbWlseToK
KyAgICAgICAgICAgIGFyZ3MgPSAoIi1vIiwgImp1bml0X2ZhbWlseT0iICsgZmFtaWx5KSArIGFy
Z3MKKyAgICAgICAgeG1sX3BhdGggPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJqdW5pdC54bWwiKQor
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1qdW5pdHhtbD0lcyIgJSB4bWxf
cGF0aCwgKmFyZ3MpCisgICAgICAgIGlmIGZhbWlseSA9PSAieHVuaXQyIjoKKyAgICAgICAgICAg
IHdpdGggeG1sX3BhdGgub3BlbigpIGFzIGY6CisgICAgICAgICAgICAgICAgc2NoZW1hLnZhbGlk
YXRlKGYpCisgICAgICAgIHhtbGRvYyA9IG1pbmlkb20ucGFyc2Uoc3RyKHhtbF9wYXRoKSkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdCwgRG9tTm9kZSh4bWxkb2MpCisKKyAgICByZXR1cm4gcnVuCiAK
IAogZGVmIGFzc2VydF9hdHRyKG5vZGUsICoqa3dhcmdzKToKQEAgLTI4LDggKzY0LDcgQEAgZGVm
IGFzc2VydF9hdHRyKG5vZGUsICoqa3dhcmdzKToKICAgICBhc3NlcnQgb25fbm9kZSA9PSBleHBl
Y3RlZAogCiAKLWNsYXNzIERvbU5vZGUob2JqZWN0KToKLQorY2xhc3MgRG9tTm9kZToKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgZG9tKToKICAgICAgICAgc2VsZi5fX25vZGUgPSBkb20KIApAQCAt
NDIsNiArNzcsMTYgQEAgY2xhc3MgRG9tTm9kZShvYmplY3QpOgogICAgIGRlZiBfYnlfdGFnKHNl
bGYsIHRhZyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9fbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSh0YWcpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2hpbGRyZW4oc2VsZik6CisgICAgICAg
IHJldHVybiBbdHlwZShzZWxmKSh4KSBmb3IgeCBpbiBzZWxmLl9fbm9kZS5jaGlsZE5vZGVzXQor
CisgICAgQHByb3BlcnR5CisgICAgZGVmIGdldF91bmlxdWVfY2hpbGQoc2VsZik6CisgICAgICAg
IGNoaWxkcmVuID0gc2VsZi5jaGlsZHJlbgorICAgICAgICBhc3NlcnQgbGVuKGNoaWxkcmVuKSA9
PSAxCisgICAgICAgIHJldHVybiBjaGlsZHJlblswXQorCiAgICAgZGVmIGZpbmRfbnRoX2J5X3Rh
ZyhzZWxmLCB0YWcsIG4pOgogICAgICAgICBpdGVtcyA9IHNlbGYuX2J5X3RhZyh0YWcpCiAgICAg
ICAgIHRyeToKQEAgLTc2LDEzICsxMjEsMTYgQEAgY2xhc3MgRG9tTm9kZShvYmplY3QpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fX25vZGUudGFnTmFtZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVm
IG5leHRfc2llYmxpbmcoc2VsZik6CisgICAgZGVmIG5leHRfc2libGluZyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHR5cGUoc2VsZikoc2VsZi5fX25vZGUubmV4dFNpYmxpbmcpCiAKIAotY2xhc3Mg
VGVzdFB5dGhvbihvYmplY3QpOgorcGFyYW1ldHJpemVfZmFtaWxpZXMgPSBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgieHVuaXRfZmFtaWx5IiwgWyJ4dW5pdDEiLCAieHVuaXQyIl0pCisKIAotICAg
IGRlZiB0ZXN0X3N1bW1pbmdfc2ltcGxlKHNlbGYsIHRlc3RkaXIpOgorY2xhc3MgVGVzdFB5dGhv
bjoKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF9zdW1taW5nX3NpbXBs
ZShzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKQEAgLTEwMCwxMiArMTQ4LDEzIEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAg
ICAgICAgICAgICAgICBhc3NlcnQgMQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICBy
ZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0g
cnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0
LnJldAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQot
ICAgICAgICBub2RlLmFzc2VydF9hdHRyKG5hbWU9InB5dGVzdCIsIGVycm9ycz0wLCBmYWlsdXJl
cz0xLCBza2lwcz0yLCB0ZXN0cz01KQorICAgICAgICBub2RlLmFzc2VydF9hdHRyKG5hbWU9InB5
dGVzdCIsIGVycm9ycz0wLCBmYWlsdXJlcz0xLCBza2lwcGVkPTIsIHRlc3RzPTUpCiAKLSAgICBk
ZWYgdGVzdF9zdW1taW5nX3NpbXBsZV93aXRoX2Vycm9ycyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBA
cGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF9zdW1taW5nX3NpbXBsZV93aXRoX2Vy
cm9ycyhzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9y
dCBweXRlc3QKQEAgLTEyNiw1NyArMTc1LDExMyBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAg
ICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQs
IGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKICAgICAgICAgYXNzZXJ0
IHJlc3VsdC5yZXQKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1
aXRlIikKLSAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihuYW1lPSJweXRlc3QiLCBlcnJvcnM9MSwg
ZmFpbHVyZXM9Miwgc2tpcHM9MSwgdGVzdHM9NSkKKyAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihu
YW1lPSJweXRlc3QiLCBlcnJvcnM9MSwgZmFpbHVyZXM9Miwgc2tpcHBlZD0xLCB0ZXN0cz01KQog
Ci0gICAgZGVmIHRlc3RfdGltaW5nX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgIEBwYXJh
bWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X2hvc3RuYW1lX2luX3htbChzZWxmLCB0ZXN0
ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCB0aW1lLCBweXRlc3QK
KyAgICAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShm
YW1pbHk9eHVuaXRfZmFtaWx5KQorICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFn
KCJ0ZXN0c3VpdGUiKQorICAgICAgICBub2RlLmFzc2VydF9hdHRyKGhvc3RuYW1lPXBsYXRmb3Jt
Lm5vZGUoKSkKKworICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X3RpbWVz
dGFtcF9pbl94bWwoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToK
KyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICBkZWYgdGVzdF9wYXNzKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAg
ICAgICAgKQorICAgICAgICBzdGFydF90aW1lID0gZGF0ZXRpbWUubm93KCkKKyAgICAgICAgcmVz
dWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCisgICAgICAgIG5v
ZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCisgICAgICAgIHRpbWVzdGFt
cCA9IGRhdGV0aW1lLnN0cnB0aW1lKG5vZGVbInRpbWVzdGFtcCJdLCAiJVktJW0tJWRUJUg6JU06
JVMuJWYiKQorICAgICAgICBhc3NlcnQgc3RhcnRfdGltZSA8PSB0aW1lc3RhbXAgPCBkYXRldGlt
ZS5ub3coKQorCisgICAgZGVmIHRlc3RfdGltaW5nX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIsIHJ1
bl9hbmRfcGFyc2UsIG1vY2tfdGltaW5nKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBmcm9tIF9weXRlc3QgaW1wb3J0IHRpbWluZwog
ICAgICAgICAgICAgZGVmIHNldHVwX21vZHVsZSgpOgotICAgICAgICAgICAgICAgIHRpbWUuc2xl
ZXAoMC4wMSkKKyAgICAgICAgICAgICAgICB0aW1pbmcuc2xlZXAoMSkKICAgICAgICAgICAgIGRl
ZiB0ZWFyZG93bl9tb2R1bGUoKToKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisg
ICAgICAgICAgICAgICAgdGltaW5nLnNsZWVwKDIpCiAgICAgICAgICAgICBkZWYgdGVzdF9zbGVl
cCgpOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKKyAgICAgICAgICAgICAgICB0
aW1pbmcuc2xlZXAoNCkKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBk
b20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRf
cGFyc2UoKQogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUi
KQogICAgICAgICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAg
ICAgICAgdmFsID0gdG5vZGVbInRpbWUiXQotICAgICAgICBhc3NlcnQgcm91bmQoZmxvYXQodmFs
KSwgMikgPj0gMC4wMworICAgICAgICBhc3NlcnQgZmxvYXQodmFsKSA9PSA3LjAKKworICAgIEBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZHVyYXRpb25fcmVwb3J0IiwgWyJjYWxsIiwgInRvdGFs
Il0pCisgICAgZGVmIHRlc3RfanVuaXRfZHVyYXRpb25fcmVwb3J0KAorICAgICAgICBzZWxmLCB0
ZXN0ZGlyLCBtb25rZXlwYXRjaCwgZHVyYXRpb25fcmVwb3J0LCBydW5fYW5kX3BhcnNlCisgICAg
KToKKworICAgICAgICAjIG1vY2sgTG9nWE1MLm5vZGVfcmVwb3J0ZXIgc28gaXQgYWx3YXlzIHNl
dHMgYSBrbm93biBkdXJhdGlvbiB0byBlYWNoIHRlc3QgcmVwb3J0IG9iamVjdAorICAgICAgICBv
cmlnaW5hbF9ub2RlX3JlcG9ydGVyID0gTG9nWE1MLm5vZGVfcmVwb3J0ZXIKKworICAgICAgICBk
ZWYgbm9kZV9yZXBvcnRlcl93cmFwcGVyKHMsIHJlcG9ydCk6CisgICAgICAgICAgICByZXBvcnQu
ZHVyYXRpb24gPSAxLjAKKyAgICAgICAgICAgIHJlcG9ydGVyID0gb3JpZ2luYWxfbm9kZV9yZXBv
cnRlcihzLCByZXBvcnQpCisgICAgICAgICAgICByZXR1cm4gcmVwb3J0ZXIKKworICAgICAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKExvZ1hNTCwgIm5vZGVfcmVwb3J0ZXIiLCBub2RlX3JlcG9ydGVy
X3dyYXBwZXIpCisKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIi
CisgICAgICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgK
KyAgICAgICAgICAgICItbyIsICJqdW5pdF9kdXJhdGlvbl9yZXBvcnQ9e30iLmZvcm1hdChkdXJh
dGlvbl9yZXBvcnQpCisgICAgICAgICkKKyAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5
X3RhZygidGVzdHN1aXRlIikKKyAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFn
KCJ0ZXN0Y2FzZSIpCisgICAgICAgIHZhbCA9IGZsb2F0KHRub2RlWyJ0aW1lIl0pCisgICAgICAg
IGlmIGR1cmF0aW9uX3JlcG9ydCA9PSAidG90YWwiOgorICAgICAgICAgICAgYXNzZXJ0IHZhbCA9
PSAzLjAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBkdXJhdGlvbl9yZXBvcnQg
PT0gImNhbGwiCisgICAgICAgICAgICBhc3NlcnQgdmFsID09IDEuMAogCi0gICAgZGVmIHRlc3Rf
c2V0dXBfZXJyb3Ioc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisg
ICAgZGVmIHRlc3Rfc2V0dXBfZXJyb3Ioc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVu
aXRfZmFtaWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZQogICAgICAgICAgICAgZGVmIGFyZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCkKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFcnJvciByZWFz
b24iKQogICAgICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oYXJnKToKICAgICAgICAgICAgICAg
ICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVu
YW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZh
bWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5v
ZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIG5vZGUuYXNz
ZXJ0X2F0dHIoZXJyb3JzPTEsIHRlc3RzPTEpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2Zp
cnN0X2J5X3RhZygidGVzdGNhc2UiKQotICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cigKLSAgICAg
ICAgICAgIGZpbGU9InRlc3Rfc2V0dXBfZXJyb3IucHkiLAotICAgICAgICAgICAgbGluZT0iNSIs
Ci0gICAgICAgICAgICBjbGFzc25hbWU9InRlc3Rfc2V0dXBfZXJyb3IiLAotICAgICAgICAgICAg
bmFtZT0idGVzdF9mdW5jdGlvbiIsCi0gICAgICAgICkKKyAgICAgICAgdG5vZGUuYXNzZXJ0X2F0
dHIoY2xhc3NuYW1lPSJ0ZXN0X3NldHVwX2Vycm9yIiwgbmFtZT0idGVzdF9mdW5jdGlvbiIpCiAg
ICAgICAgIGZub2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoImVycm9yIikKLSAgICAgICAg
Zm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0idGVzdCBzZXR1cCBmYWlsdXJlIikKKyAgICAgICAg
Zm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0nZmFpbGVkIG9uIHNldHVwIHdpdGggIlZhbHVlRXJy
b3I6IEVycm9yIHJlYXNvbiInKQogICAgICAgICBhc3NlcnQgIlZhbHVlRXJyb3IiIGluIGZub2Rl
LnRveG1sKCkKIAotICAgIGRlZiB0ZXN0X3RlYXJkb3duX2Vycm9yKHNlbGYsIHRlc3RkaXIpOgor
ICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X3RlYXJkb3duX2Vycm9yKHNl
bGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtMTg0LDI2ICsyODksMjIgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAgICAgICAgICBkZWYgYXJnKCk6CiAgICAgICAgICAg
ICAgICAgeWllbGQKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkKKyAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFcnJvciByZWFzb24nKQogICAgICAgICAgICAgZGVm
IHRlc3RfZnVuY3Rpb24oYXJnKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgog
ICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAg
ICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAg
ICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9i
eV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3Rh
ZygidGVzdGNhc2UiKQotICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cigKLSAgICAgICAgICAgIGZp
bGU9InRlc3RfdGVhcmRvd25fZXJyb3IucHkiLAotICAgICAgICAgICAgbGluZT0iNiIsCi0gICAg
ICAgICAgICBjbGFzc25hbWU9InRlc3RfdGVhcmRvd25fZXJyb3IiLAotICAgICAgICAgICAgbmFt
ZT0idGVzdF9mdW5jdGlvbiIsCi0gICAgICAgICkKKyAgICAgICAgdG5vZGUuYXNzZXJ0X2F0dHIo
Y2xhc3NuYW1lPSJ0ZXN0X3RlYXJkb3duX2Vycm9yIiwgbmFtZT0idGVzdF9mdW5jdGlvbiIpCiAg
ICAgICAgIGZub2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoImVycm9yIikKLSAgICAgICAg
Zm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0idGVzdCB0ZWFyZG93biBmYWlsdXJlIikKKyAgICAg
ICAgZm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0nZmFpbGVkIG9uIHRlYXJkb3duIHdpdGggIlZh
bHVlRXJyb3I6IEVycm9yIHJlYXNvbiInKQogICAgICAgICBhc3NlcnQgIlZhbHVlRXJyb3IiIGlu
IGZub2RlLnRveG1sKCkKIAotICAgIGRlZiB0ZXN0X2NhbGxfZmFpbHVyZV90ZWFyZG93bl9lcnJv
cihzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVz
dF9jYWxsX2ZhaWx1cmVfdGVhcmRvd25fZXJyb3Ioc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJz
ZSwgeHVuaXRfZmFtaWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAg
ICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0yMTYsMTkgKzMxNywyMyBAQCBj
bGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCJDYWxsIEV4Y2VwdGlvbiIpCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3Vs
dCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5f
YW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0
CiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAg
ICAgIG5vZGUuYXNzZXJ0X2F0dHIoZXJyb3JzPTEsIGZhaWx1cmVzPTEsIHRlc3RzPTEpCiAgICAg
ICAgIGZpcnN0LCBzZWNvbmQgPSBkb20uZmluZF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAg
aWYgbm90IGZpcnN0IG9yIG5vdCBzZWNvbmQgb3IgZmlyc3QgPT0gc2Vjb25kOgotICAgICAgICAg
ICAgYXNzZXJ0IDAKKyAgICAgICAgYXNzZXJ0IGZpcnN0CisgICAgICAgIGFzc2VydCBzZWNvbmQK
KyAgICAgICAgYXNzZXJ0IGZpcnN0ICE9IHNlY29uZAogICAgICAgICBmbm9kZSA9IGZpcnN0LmZp
bmRfZmlyc3RfYnlfdGFnKCJmYWlsdXJlIikKICAgICAgICAgZm5vZGUuYXNzZXJ0X2F0dHIobWVz
c2FnZT0iRXhjZXB0aW9uOiBDYWxsIEV4Y2VwdGlvbiIpCiAgICAgICAgIHNub2RlID0gc2Vjb25k
LmZpbmRfZmlyc3RfYnlfdGFnKCJlcnJvciIpCi0gICAgICAgIHNub2RlLmFzc2VydF9hdHRyKG1l
c3NhZ2U9InRlc3QgdGVhcmRvd24gZmFpbHVyZSIpCisgICAgICAgIHNub2RlLmFzc2VydF9hdHRy
KAorICAgICAgICAgICAgbWVzc2FnZT0nZmFpbGVkIG9uIHRlYXJkb3duIHdpdGggIkV4Y2VwdGlv
bjogVGVhcmRvd24gRXhjZXB0aW9uIicKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3Rfc2tpcF9j
b250YWluc19uYW1lX3JlYXNvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFt
aWxpZXMKKyAgICBkZWYgdGVzdF9za2lwX2NvbnRhaW5zX25hbWVfcmVhc29uKHNlbGYsIHRlc3Rk
aXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjM2
LDIxICszNDEsMTcgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAg
IHB5dGVzdC5za2lwKCJoZWxsbzIzIikKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAg
cmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9
IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKICAgICAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gMAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3Vp
dGUiKQotICAgICAgICBub2RlLmFzc2VydF9hdHRyKHNraXBzPTEpCisgICAgICAgIG5vZGUuYXNz
ZXJ0X2F0dHIoc2tpcHBlZD0xKQogICAgICAgICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90
YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5vZGUuYXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBm
aWxlPSJ0ZXN0X3NraXBfY29udGFpbnNfbmFtZV9yZWFzb24ucHkiLAotICAgICAgICAgICAgbGlu
ZT0iMSIsCi0gICAgICAgICAgICBjbGFzc25hbWU9InRlc3Rfc2tpcF9jb250YWluc19uYW1lX3Jl
YXNvbiIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X3NraXAiLAotICAgICAgICApCisgICAgICAg
IHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0idGVzdF9za2lwX2NvbnRhaW5zX25hbWVfcmVh
c29uIiwgbmFtZT0idGVzdF9za2lwIikKICAgICAgICAgc25vZGUgPSB0bm9kZS5maW5kX2ZpcnN0
X2J5X3RhZygic2tpcHBlZCIpCiAgICAgICAgIHNub2RlLmFzc2VydF9hdHRyKHR5cGU9InB5dGVz
dC5za2lwIiwgbWVzc2FnZT0iaGVsbG8yMyIpCiAKLSAgICBkZWYgdGVzdF9tYXJrX3NraXBfY29u
dGFpbnNfbmFtZV9yZWFzb24oc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWls
aWVzCisgICAgZGVmIHRlc3RfbWFya19za2lwX2NvbnRhaW5zX25hbWVfcmVhc29uKHNlbGYsIHRl
c3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAt
MjU5LDIxICszNjAsMjEgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAg
ICAgIGFzc2VydCBUcnVlCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwg
ZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5k
X3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKLSAg
ICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lwcz0xKQorICAgICAgICBub2RlLmFzc2VydF9hdHRy
KHNraXBwZWQ9MSkKICAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0
Y2FzZSIpCiAgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKAotICAgICAgICAgICAgZmlsZT0idGVz
dF9tYXJrX3NraXBfY29udGFpbnNfbmFtZV9yZWFzb24ucHkiLAotICAgICAgICAgICAgbGluZT0i
MSIsCi0gICAgICAgICAgICBjbGFzc25hbWU9InRlc3RfbWFya19za2lwX2NvbnRhaW5zX25hbWVf
cmVhc29uIiwKLSAgICAgICAgICAgIG5hbWU9InRlc3Rfc2tpcCIsCisgICAgICAgICAgICBjbGFz
c25hbWU9InRlc3RfbWFya19za2lwX2NvbnRhaW5zX25hbWVfcmVhc29uIiwgbmFtZT0idGVzdF9z
a2lwIgogICAgICAgICApCiAgICAgICAgIHNub2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWco
InNraXBwZWQiKQogICAgICAgICBzbm9kZS5hc3NlcnRfYXR0cih0eXBlPSJweXRlc3Quc2tpcCIs
IG1lc3NhZ2U9ImhlbGxvMjQiKQogCi0gICAgZGVmIHRlc3RfbWFya19za2lwaWZfY29udGFpbnNf
bmFtZV9yZWFzb24oc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisg
ICAgZGVmIHRlc3RfbWFya19za2lwaWZfY29udGFpbnNfbmFtZV9yZWFzb24oCisgICAgICAgIHNl
bGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseQorICAgICk6CiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdApAQCAtMjgzLDIxICszODQsMjEgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgog
ICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAg
ICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBk
b20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IDAKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVz
dHN1aXRlIikKLSAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lwcz0xKQorICAgICAgICBub2Rl
LmFzc2VydF9hdHRyKHNraXBwZWQ9MSkKICAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3Rf
YnlfdGFnKCJ0ZXN0Y2FzZSIpCiAgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKAotICAgICAgICAg
ICAgZmlsZT0idGVzdF9tYXJrX3NraXBpZl9jb250YWluc19uYW1lX3JlYXNvbi5weSIsCi0gICAg
ICAgICAgICBsaW5lPSIyIiwKLSAgICAgICAgICAgIGNsYXNzbmFtZT0idGVzdF9tYXJrX3NraXBp
Zl9jb250YWluc19uYW1lX3JlYXNvbiIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X3NraXAiLAor
ICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X21hcmtfc2tpcGlmX2NvbnRhaW5zX25hbWVfcmVh
c29uIiwgbmFtZT0idGVzdF9za2lwIgogICAgICAgICApCiAgICAgICAgIHNub2RlID0gdG5vZGUu
ZmluZF9maXJzdF9ieV90YWcoInNraXBwZWQiKQogICAgICAgICBzbm9kZS5hc3NlcnRfYXR0cih0
eXBlPSJweXRlc3Quc2tpcCIsIG1lc3NhZ2U9ImhlbGxvMjUiKQogCi0gICAgZGVmIHRlc3RfbWFy
a19za2lwX2RvZXNudF9jYXB0dXJlX291dHB1dChzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1l
dHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF9tYXJrX3NraXBfZG9lc250X2NhcHR1cmVfb3V0
cHV0KAorICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkK
KyAgICApOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTMwNiwxMiArNDA3LDEzIEBAIGNsYXNzIFRlc3RQ
eXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBwcmludCgiYmFyISIpCiAgICAgICAgICIi
IgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikK
KyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkp
CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAgICAgbm9kZV94bWwgPSBkb20u
ZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpLnRveG1sKCkKICAgICAgICAgYXNzZXJ0ICJi
YXIhIiBub3QgaW4gbm9kZV94bWwKIAotICAgIGRlZiB0ZXN0X2NsYXNzbmFtZV9pbnN0YW5jZShz
ZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF9j
bGFzc25hbWVfaW5zdGFuY2Uoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFt
aWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKQEAgLTMxOSwzNyArNDIxLDMxIEBAIGNs
YXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKICAg
ICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0
ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0
X2ZhbWlseSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQKICAgICAgICAgbm9kZSA9IGRvbS5m
aW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihm
YWlsdXJlcz0xKQogICAgICAgICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3Rj
YXNlIikKICAgICAgICAgdG5vZGUuYXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBmaWxlPSJ0ZXN0
X2NsYXNzbmFtZV9pbnN0YW5jZS5weSIsCi0gICAgICAgICAgICBsaW5lPSIxIiwKLSAgICAgICAg
ICAgIGNsYXNzbmFtZT0idGVzdF9jbGFzc25hbWVfaW5zdGFuY2UuVGVzdENsYXNzIiwKLSAgICAg
ICAgICAgIG5hbWU9InRlc3RfbWV0aG9kIiwKKyAgICAgICAgICAgIGNsYXNzbmFtZT0idGVzdF9j
bGFzc25hbWVfaW5zdGFuY2UuVGVzdENsYXNzIiwgbmFtZT0idGVzdF9tZXRob2QiCiAgICAgICAg
ICkKIAotICAgIGRlZiB0ZXN0X2NsYXNzbmFtZV9uZXN0ZWRfZGlyKHNlbGYsIHRlc3RkaXIpOgor
ICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X2NsYXNzbmFtZV9uZXN0ZWRf
ZGlyKHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAg
IHAgPSB0ZXN0ZGlyLnRtcGRpci5lbnN1cmUoInN1YiIsICJ0ZXN0X2hlbGxvLnB5IikKICAgICAg
ICAgcC53cml0ZSgiZGVmIHRlc3RfZnVuYygpOiAwLzAiKQotICAgICAgICByZXN1bHQsIGRvbSA9
IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJz
ZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldAogICAgICAg
ICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICBub2Rl
LmFzc2VydF9hdHRyKGZhaWx1cmVzPTEpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0
X2J5X3RhZygidGVzdGNhc2UiKQotICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cigKLSAgICAgICAg
ICAgIGZpbGU9b3MucGF0aC5qb2luKCJzdWIiLCAidGVzdF9oZWxsby5weSIpLAotICAgICAgICAg
ICAgbGluZT0iMCIsCi0gICAgICAgICAgICBjbGFzc25hbWU9InN1Yi50ZXN0X2hlbGxvIiwKLSAg
ICAgICAgICAgIG5hbWU9InRlc3RfZnVuYyIsCi0gICAgICAgICkKKyAgICAgICAgdG5vZGUuYXNz
ZXJ0X2F0dHIoY2xhc3NuYW1lPSJzdWIudGVzdF9oZWxsbyIsIG5hbWU9InRlc3RfZnVuYyIpCiAK
LSAgICBkZWYgdGVzdF9pbnRlcm5hbF9lcnJvcihzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1l
dHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF9pbnRlcm5hbF9lcnJvcihzZWxmLCB0ZXN0ZGly
LCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25m
dGVzdCgiZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKCk6IDAgLyAwIikKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mdW5jdGlvbigpOiBwYXNzIikKLSAgICAgICAgcmVz
dWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1
bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAg
ICAgICAgbm9kZS5hc3NlcnRfYXR0cihlcnJvcnM9MSwgdGVzdHM9MSkKQEAgLTM1OSwxNSArNDU1
LDIwIEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgZm5vZGUuYXNzZXJ0X2F0
dHIobWVzc2FnZT0iaW50ZXJuYWwgZXJyb3IiKQogICAgICAgICBhc3NlcnQgIkRpdmlzaW9uIiBp
biBmbm9kZS50b3htbCgpCiAKLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImp1bml0X2xv
Z2dpbmciLCBbIm5vIiwgInN5c3RlbS1vdXQiLCAic3lzdGVtLWVyciJdKQotICAgIGRlZiB0ZXN0
X2ZhaWx1cmVfZnVuY3Rpb24oc2VsZiwgdGVzdGRpciwganVuaXRfbG9nZ2luZyk6CisgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAianVuaXRfbG9nZ2luZyIsIFsibm8iLCAi
bG9nIiwgInN5c3RlbS1vdXQiLCAic3lzdGVtLWVyciIsICJvdXQtZXJyIiwgImFsbCJdCisgICAg
KQorICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X2ZhaWx1cmVfZnVuY3Rp
b24oCisgICAgICAgIHNlbGYsIHRlc3RkaXIsIGp1bml0X2xvZ2dpbmcsIHJ1bl9hbmRfcGFyc2Us
IHh1bml0X2ZhbWlseQorICAgICk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgICAgIGltcG9y
dCBzeXMKIAogICAgICAgICAgICAgZGVmIHRlc3RfZmFpbCgpOgotICAgICAgICAgICAgICAgIHBy
aW50ICgiaGVsbG8tc3Rkb3V0IikKKyAgICAgICAgICAgICAgICBwcmludCgiaGVsbG8tc3Rkb3V0
IikKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJoZWxsby1zdGRlcnJcXG4iKQog
ICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnaW5mbyBtc2cnKQogICAgICAgICAgICAgICAg
IGxvZ2dpbmcud2FybmluZygnd2FybmluZyBtc2cnKQpAQCAtMzc1LDQwICs0NzYsNTQgQEAgY2xh
c3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQogCi0gICAgICAg
IHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpciwgIi1vIiwgImp1bml0X2xvZ2dpbmc9
JXMiICUganVuaXRfbG9nZ2luZykKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQKKyAgICAgICAg
cmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKAorICAgICAgICAgICAgIi1vIiwgImp1bml0X2xv
Z2dpbmc9JXMiICUganVuaXRfbG9nZ2luZywgZmFtaWx5PXh1bml0X2ZhbWlseQorICAgICAgICAp
CisgICAgICAgIGFzc2VydCByZXN1bHQucmV0LCAiRXhwZWN0ZWQgcmV0ID4gMCIKICAgICAgICAg
bm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICAgICAgbm9kZS5h
c3NlcnRfYXR0cihmYWlsdXJlcz0xLCB0ZXN0cz0xKQogICAgICAgICB0bm9kZSA9IG5vZGUuZmlu
ZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5vZGUuYXNzZXJ0X2F0dHIoCi0g
ICAgICAgICAgICBmaWxlPSJ0ZXN0X2ZhaWx1cmVfZnVuY3Rpb24ucHkiLAotICAgICAgICAgICAg
bGluZT0iMyIsCi0gICAgICAgICAgICBjbGFzc25hbWU9InRlc3RfZmFpbHVyZV9mdW5jdGlvbiIs
Ci0gICAgICAgICAgICBuYW1lPSJ0ZXN0X2ZhaWwiLAotICAgICAgICApCisgICAgICAgIHRub2Rl
LmFzc2VydF9hdHRyKGNsYXNzbmFtZT0idGVzdF9mYWlsdXJlX2Z1bmN0aW9uIiwgbmFtZT0idGVz
dF9mYWlsIikKICAgICAgICAgZm5vZGUgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygiZmFpbHVy
ZSIpCiAgICAgICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9IlZhbHVlRXJyb3I6IDQyIikK
LSAgICAgICAgYXNzZXJ0ICJWYWx1ZUVycm9yIiBpbiBmbm9kZS50b3htbCgpCi0gICAgICAgIHN5
c3RlbW91dCA9IGZub2RlLm5leHRfc2llYmxpbmcKLSAgICAgICAgYXNzZXJ0IHN5c3RlbW91dC50
YWcgPT0gInN5c3RlbS1vdXQiCi0gICAgICAgIGFzc2VydCAiaGVsbG8tc3Rkb3V0IiBpbiBzeXN0
ZW1vdXQudG94bWwoKQotICAgICAgICBhc3NlcnQgImluZm8gbXNnIiBub3QgaW4gc3lzdGVtb3V0
LnRveG1sKCkKLSAgICAgICAgc3lzdGVtZXJyID0gc3lzdGVtb3V0Lm5leHRfc2llYmxpbmcKLSAg
ICAgICAgYXNzZXJ0IHN5c3RlbWVyci50YWcgPT0gInN5c3RlbS1lcnIiCi0gICAgICAgIGFzc2Vy
dCAiaGVsbG8tc3RkZXJyIiBpbiBzeXN0ZW1lcnIudG94bWwoKQotICAgICAgICBhc3NlcnQgImlu
Zm8gbXNnIiBub3QgaW4gc3lzdGVtZXJyLnRveG1sKCkKLQotICAgICAgICBpZiBqdW5pdF9sb2dn
aW5nID09ICJzeXN0ZW0tb3V0IjoKLSAgICAgICAgICAgIGFzc2VydCAid2FybmluZyBtc2ciIGlu
IHN5c3RlbW91dC50b3htbCgpCi0gICAgICAgICAgICBhc3NlcnQgIndhcm5pbmcgbXNnIiBub3Qg
aW4gc3lzdGVtZXJyLnRveG1sKCkKLSAgICAgICAgZWxpZiBqdW5pdF9sb2dnaW5nID09ICJzeXN0
ZW0tZXJyIjoKLSAgICAgICAgICAgIGFzc2VydCAid2FybmluZyBtc2ciIG5vdCBpbiBzeXN0ZW1v
dXQudG94bWwoKQotICAgICAgICAgICAgYXNzZXJ0ICJ3YXJuaW5nIG1zZyIgaW4gc3lzdGVtZXJy
LnRveG1sKCkKLSAgICAgICAgZWxpZiBqdW5pdF9sb2dnaW5nID09ICJubyI6Ci0gICAgICAgICAg
ICBhc3NlcnQgIndhcm5pbmcgbXNnIiBub3QgaW4gc3lzdGVtb3V0LnRveG1sKCkKLSAgICAgICAg
ICAgIGFzc2VydCAid2FybmluZyBtc2ciIG5vdCBpbiBzeXN0ZW1lcnIudG94bWwoKQotCi0gICAg
ZGVmIHRlc3RfZmFpbHVyZV92ZXJib3NlX21lc3NhZ2Uoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IGFzc2VydCAiVmFsdWVFcnJvciIgaW4gZm5vZGUudG94bWwoKSwgIlZhbHVlRXJyb3Igbm90IGlu
Y2x1ZGVkIgorCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgaW4gWyJsb2ciLCAiYWxsIl06Cisg
ICAgICAgICAgICBsb2dkYXRhID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoInN5c3RlbS1vdXQi
KQorICAgICAgICAgICAgbG9nX3htbCA9IGxvZ2RhdGEudG94bWwoKQorICAgICAgICAgICAgYXNz
ZXJ0IGxvZ2RhdGEudGFnID09ICJzeXN0ZW0tb3V0IiwgIkV4cGVjdGVkIHRhZzogc3lzdGVtLW91
dCIKKyAgICAgICAgICAgIGFzc2VydCAiaW5mbyBtc2ciIG5vdCBpbiBsb2dfeG1sLCAiVW5leHBl
Y3RlZCBJTkZPIG1lc3NhZ2UiCisgICAgICAgICAgICBhc3NlcnQgIndhcm5pbmcgbXNnIiBpbiBs
b2dfeG1sLCAiTWlzc2luZyBXQVJOIG1lc3NhZ2UiCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcg
aW4gWyJzeXN0ZW0tb3V0IiwgIm91dC1lcnIiLCAiYWxsIl06CisgICAgICAgICAgICBzeXN0ZW1v
dXQgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLW91dCIpCisgICAgICAgICAgICBz
eXN0ZW1vdXRfeG1sID0gc3lzdGVtb3V0LnRveG1sKCkKKyAgICAgICAgICAgIGFzc2VydCBzeXN0
ZW1vdXQudGFnID09ICJzeXN0ZW0tb3V0IiwgIkV4cGVjdGVkIHRhZzogc3lzdGVtLW91dCIKKyAg
ICAgICAgICAgIGFzc2VydCAiaW5mbyBtc2ciIG5vdCBpbiBzeXN0ZW1vdXRfeG1sLCAiSU5GTyBt
ZXNzYWdlIGZvdW5kIGluIHN5c3RlbS1vdXQiCisgICAgICAgICAgICBhc3NlcnQgKAorICAgICAg
ICAgICAgICAgICJoZWxsby1zdGRvdXQiIGluIHN5c3RlbW91dF94bWwKKyAgICAgICAgICAgICks
ICJNaXNzaW5nICdoZWxsby1zdGRvdXQnIGluIHN5c3RlbS1vdXQiCisgICAgICAgIGlmIGp1bml0
X2xvZ2dpbmcgaW4gWyJzeXN0ZW0tZXJyIiwgIm91dC1lcnIiLCAiYWxsIl06CisgICAgICAgICAg
ICBzeXN0ZW1lcnIgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLWVyciIpCisgICAg
ICAgICAgICBzeXN0ZW1lcnJfeG1sID0gc3lzdGVtZXJyLnRveG1sKCkKKyAgICAgICAgICAgIGFz
c2VydCBzeXN0ZW1lcnIudGFnID09ICJzeXN0ZW0tZXJyIiwgIkV4cGVjdGVkIHRhZzogc3lzdGVt
LWVyciIKKyAgICAgICAgICAgIGFzc2VydCAiaW5mbyBtc2ciIG5vdCBpbiBzeXN0ZW1lcnJfeG1s
LCAiSU5GTyBtZXNzYWdlIGZvdW5kIGluIHN5c3RlbS1lcnIiCisgICAgICAgICAgICBhc3NlcnQg
KAorICAgICAgICAgICAgICAgICJoZWxsby1zdGRlcnIiIGluIHN5c3RlbWVycl94bWwKKyAgICAg
ICAgICAgICksICJNaXNzaW5nICdoZWxsby1zdGRlcnInIGluIHN5c3RlbS1lcnIiCisgICAgICAg
ICAgICBhc3NlcnQgKAorICAgICAgICAgICAgICAgICJ3YXJuaW5nIG1zZyIgbm90IGluIHN5c3Rl
bWVycl94bWwKKyAgICAgICAgICAgICksICJXQVJOIG1lc3NhZ2UgZm91bmQgaW4gc3lzdGVtLWVy
ciIKKyAgICAgICAgaWYganVuaXRfbG9nZ2luZyA9PSAibm8iOgorICAgICAgICAgICAgYXNzZXJ0
IG5vdCB0bm9kZS5maW5kX2J5X3RhZygibG9nIiksICJGb3VuZCB1bmV4cGVjdGVkIGNvbnRlbnQ6
IGxvZyIKKyAgICAgICAgICAgIGFzc2VydCBub3QgdG5vZGUuZmluZF9ieV90YWcoCisgICAgICAg
ICAgICAgICAgInN5c3RlbS1vdXQiCisgICAgICAgICAgICApLCAiRm91bmQgdW5leHBlY3RlZCBj
b250ZW50OiBzeXN0ZW0tb3V0IgorICAgICAgICAgICAgYXNzZXJ0IG5vdCB0bm9kZS5maW5kX2J5
X3RhZygKKyAgICAgICAgICAgICAgICAic3lzdGVtLWVyciIKKyAgICAgICAgICAgICksICJGb3Vu
ZCB1bmV4cGVjdGVkIGNvbnRlbnQ6IHN5c3RlbS1lcnIiCisKKyAgICBAcGFyYW1ldHJpemVfZmFt
aWxpZXMKKyAgICBkZWYgdGVzdF9mYWlsdXJlX3ZlcmJvc2VfbWVzc2FnZShzZWxmLCB0ZXN0ZGly
LCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBzeXMKQEAgLTQxNiwxNCAr
NTMxLDE0IEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBhc3Nl
cnQgMCwgIkFuIGVycm9yIgogICAgICAgICAiIiIKICAgICAgICAgKQotCi0gICAgICAgIHJlc3Vs
dCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5f
YW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9m
aXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0
X2J5X3RhZygidGVzdGNhc2UiKQogICAgICAgICBmbm9kZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlf
dGFnKCJmYWlsdXJlIikKLSAgICAgICAgZm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0iQXNzZXJ0
aW9uRXJyb3I6IEFuIGVycm9yIGFzc2VydCAwIikKKyAgICAgICAgZm5vZGUuYXNzZXJ0X2F0dHIo
bWVzc2FnZT0iQXNzZXJ0aW9uRXJyb3I6IEFuIGVycm9yXG5hc3NlcnQgMCIpCiAKLSAgICBkZWYg
dGVzdF9mYWlsdXJlX2VzY2FwZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFt
aWxpZXMKKyAgICBkZWYgdGVzdF9mYWlsdXJlX2VzY2FwZShzZWxmLCB0ZXN0ZGlyLCBydW5fYW5k
X3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTQzMyw3ICs1NDgsOSBA
QCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKICAg
ICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0
ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoCisgICAgICAgICAg
ICAiLW8iLCAianVuaXRfbG9nZ2luZz1zeXN0ZW0tb3V0IiwgZmFtaWx5PXh1bml0X2ZhbWlseQor
ICAgICAgICApCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBkb20u
ZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIo
ZmFpbHVyZXM9MywgdGVzdHM9MykKQEAgLTQ0MiwxNiArNTU5LDE0IEBAIGNsYXNzIFRlc3RQeXRo
b24ob2JqZWN0KToKIAogICAgICAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfbnRoX2J5X3RhZygi
dGVzdGNhc2UiLCBpbmRleCkKICAgICAgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKAotICAgICAg
ICAgICAgICAgIGZpbGU9InRlc3RfZmFpbHVyZV9lc2NhcGUucHkiLAotICAgICAgICAgICAgICAg
IGxpbmU9IjEiLAotICAgICAgICAgICAgICAgIGNsYXNzbmFtZT0idGVzdF9mYWlsdXJlX2VzY2Fw
ZSIsCi0gICAgICAgICAgICAgICAgbmFtZT0idGVzdF9mdW5jWyVzXSIgJSBjaGFyLAorICAgICAg
ICAgICAgICAgIGNsYXNzbmFtZT0idGVzdF9mYWlsdXJlX2VzY2FwZSIsIG5hbWU9InRlc3RfZnVu
Y1slc10iICUgY2hhcgogICAgICAgICAgICAgKQogICAgICAgICAgICAgc3lzb3V0ID0gdG5vZGUu
ZmluZF9maXJzdF9ieV90YWcoInN5c3RlbS1vdXQiKQogICAgICAgICAgICAgdGV4dCA9IHN5c291
dC50ZXh0Ci0gICAgICAgICAgICBhc3NlcnQgdGV4dCA9PSAiJXNcbiIgJSBjaGFyCisgICAgICAg
ICAgICBhc3NlcnQgIiVzXG4iICUgY2hhciBpbiB0ZXh0CiAKLSAgICBkZWYgdGVzdF9qdW5pdF9w
cmVmaXhpbmcoc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAg
ZGVmIHRlc3RfanVuaXRfcHJlZml4aW5nKHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1
bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIi
IgogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgpAQCAtNDYxLDI2ICs1NzYsMTkgQEAgY2xh
c3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRp
ciwgIi0tanVuaXRwcmVmaXg9eHl6IikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3Bh
cnNlKCItLWp1bml0cHJlZml4PXh5eiIsIGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIGFz
c2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRl
c3RzdWl0ZSIpCiAgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoZmFpbHVyZXM9MSwgdGVzdHM9MikK
ICAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAg
ICAgIHRub2RlLmFzc2VydF9hdHRyKAotICAgICAgICAgICAgZmlsZT0idGVzdF9qdW5pdF9wcmVm
aXhpbmcucHkiLAotICAgICAgICAgICAgbGluZT0iMCIsCi0gICAgICAgICAgICBjbGFzc25hbWU9
Inh5ei50ZXN0X2p1bml0X3ByZWZpeGluZyIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X2Z1bmMi
LAotICAgICAgICApCisgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0ieHl6LnRl
c3RfanVuaXRfcHJlZml4aW5nIiwgbmFtZT0idGVzdF9mdW5jIikKICAgICAgICAgdG5vZGUgPSBu
b2RlLmZpbmRfbnRoX2J5X3RhZygidGVzdGNhc2UiLCAxKQogICAgICAgICB0bm9kZS5hc3NlcnRf
YXR0cigKLSAgICAgICAgICAgIGZpbGU9InRlc3RfanVuaXRfcHJlZml4aW5nLnB5IiwKLSAgICAg
ICAgICAgIGxpbmU9IjMiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ4eXoudGVzdF9qdW5pdF9w
cmVmaXhpbmcuIiAiVGVzdEhlbGxvIiwKLSAgICAgICAgICAgIG5hbWU9InRlc3RfaGVsbG8iLAor
ICAgICAgICAgICAgY2xhc3NuYW1lPSJ4eXoudGVzdF9qdW5pdF9wcmVmaXhpbmcuVGVzdEhlbGxv
IiwgbmFtZT0idGVzdF9oZWxsbyIKICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfeGZhaWx1cmVf
ZnVuY3Rpb24oc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAg
ZGVmIHRlc3RfeGZhaWx1cmVfZnVuY3Rpb24oc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwg
eHVuaXRfZmFtaWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC00ODgsMjIgKzU5NiwzOCBAQCBjbGFz
cyBUZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcHl0ZXN0LnhmYWlsKCI0MiIp
CiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFy
c2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14
dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCBub3QgcmVzdWx0LnJldAogICAgICAgICBub2Rl
ID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQotICAgICAgICBub2RlLmFzc2Vy
dF9hdHRyKHNraXBzPTEsIHRlc3RzPTEpCisgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoc2tpcHBl
ZD0xLCB0ZXN0cz0xKQogICAgICAgICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRl
c3RjYXNlIikKLSAgICAgICAgdG5vZGUuYXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBmaWxlPSJ0
ZXN0X3hmYWlsdXJlX2Z1bmN0aW9uLnB5IiwKLSAgICAgICAgICAgIGxpbmU9IjEiLAotICAgICAg
ICAgICAgY2xhc3NuYW1lPSJ0ZXN0X3hmYWlsdXJlX2Z1bmN0aW9uIiwKLSAgICAgICAgICAgIG5h
bWU9InRlc3RfeGZhaWwiLAorICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihjbGFzc25hbWU9InRl
c3RfeGZhaWx1cmVfZnVuY3Rpb24iLCBuYW1lPSJ0ZXN0X3hmYWlsIikKKyAgICAgICAgZm5vZGUg
PSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic2tpcHBlZCIpCisgICAgICAgIGZub2RlLmFzc2Vy
dF9hdHRyKHR5cGU9InB5dGVzdC54ZmFpbCIsIG1lc3NhZ2U9IjQyIikKKworICAgIEBwYXJhbWV0
cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X3hmYWlsdXJlX21hcmtlcihzZWxmLCB0ZXN0ZGly
LCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAg
ICAgIEBweXRlc3QubWFyay54ZmFpbChyZWFzb249IjQyIikKKyAgICAgICAgICAgIGRlZiB0ZXN0
X3hmYWlsKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICIiIgogICAg
ICAgICApCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRf
ZmFtaWx5KQorICAgICAgICBhc3NlcnQgbm90IHJlc3VsdC5yZXQKKyAgICAgICAgbm9kZSA9IGRv
bS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKKyAgICAgICAgbm9kZS5hc3NlcnRfYXR0
cihza2lwcGVkPTEsIHRlc3RzPTEpCisgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5
X3RhZygidGVzdGNhc2UiKQorICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihjbGFzc25hbWU9InRl
c3RfeGZhaWx1cmVfbWFya2VyIiwgbmFtZT0idGVzdF94ZmFpbCIpCiAgICAgICAgIGZub2RlID0g
dG5vZGUuZmluZF9maXJzdF9ieV90YWcoInNraXBwZWQiKQotICAgICAgICBmbm9kZS5hc3NlcnRf
YXR0cihtZXNzYWdlPSJleHBlY3RlZCB0ZXN0IGZhaWx1cmUiKQotICAgICAgICAjIGFzc2VydCAi
VmFsdWVFcnJvciIgaW4gZm5vZGUudG94bWwoKQorICAgICAgICBmbm9kZS5hc3NlcnRfYXR0cih0
eXBlPSJweXRlc3QueGZhaWwiLCBtZXNzYWdlPSI0MiIpCiAKLSAgICBkZWYgdGVzdF94ZmFpbF9j
YXB0dXJlc19vdXRwdXRfb25jZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoCisgICAgICAgICJqdW5pdF9sb2dnaW5nIiwgWyJubyIsICJsb2ciLCAic3lzdGVt
LW91dCIsICJzeXN0ZW0tZXJyIiwgIm91dC1lcnIiLCAiYWxsIl0KKyAgICApCisgICAgZGVmIHRl
c3RfeGZhaWxfY2FwdHVyZXNfb3V0cHV0X29uY2Uoc2VsZiwgdGVzdGRpciwganVuaXRfbG9nZ2lu
ZywgcnVuX2FuZF9wYXJzZSk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHN5cwpAQCAtNTE2LDEzICs2NDAsMjEgQEAgY2xh
c3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIGFzc2VydCAwCiAgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRp
cikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCItbyIsICJqdW5pdF9sb2dn
aW5nPSVzIiAlIGp1bml0X2xvZ2dpbmcpCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9i
eV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3Rh
ZygidGVzdGNhc2UiKQotICAgICAgICBhc3NlcnQgbGVuKHRub2RlLmZpbmRfYnlfdGFnKCJzeXN0
ZW0tZXJyIikpID09IDEKLSAgICAgICAgYXNzZXJ0IGxlbih0bm9kZS5maW5kX2J5X3RhZygic3lz
dGVtLW91dCIpKSA9PSAxCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgaW4gWyJzeXN0ZW0tZXJy
IiwgIm91dC1lcnIiLCAiYWxsIl06CisgICAgICAgICAgICBhc3NlcnQgbGVuKHRub2RlLmZpbmRf
YnlfdGFnKCJzeXN0ZW0tZXJyIikpID09IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFz
c2VydCBsZW4odG5vZGUuZmluZF9ieV90YWcoInN5c3RlbS1lcnIiKSkgPT0gMAogCi0gICAgZGVm
IHRlc3RfeGZhaWx1cmVfeHBhc3Moc2VsZiwgdGVzdGRpcik6CisgICAgICAgIGlmIGp1bml0X2xv
Z2dpbmcgaW4gWyJsb2ciLCAic3lzdGVtLW91dCIsICJvdXQtZXJyIiwgImFsbCJdOgorICAgICAg
ICAgICAgYXNzZXJ0IGxlbih0bm9kZS5maW5kX2J5X3RhZygic3lzdGVtLW91dCIpKSA9PSAxCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgbGVuKHRub2RlLmZpbmRfYnlfdGFnKCJz
eXN0ZW0tb3V0IikpID09IDAKKworICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0
ZXN0X3hmYWlsdXJlX3hwYXNzKHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2Zh
bWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNTMxLDE5ICs2NjMsMTUgQEAgY2xhc3MgVGVzdFB5
dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAg
ICkKLSAgICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICBy
ZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKICAgICAgICAg
IyBhc3NlcnQgcmVzdWx0LnJldAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFn
KCJ0ZXN0c3VpdGUiKQotICAgICAgICBub2RlLmFzc2VydF9hdHRyKHNraXBzPTAsIHRlc3RzPTEp
CisgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoc2tpcHBlZD0wLCB0ZXN0cz0xKQogICAgICAgICB0
bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5vZGUu
YXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBmaWxlPSJ0ZXN0X3hmYWlsdXJlX3hwYXNzLnB5IiwK
LSAgICAgICAgICAgIGxpbmU9IjEiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X3hmYWls
dXJlX3hwYXNzIiwKLSAgICAgICAgICAgIG5hbWU9InRlc3RfeHBhc3MiLAotICAgICAgICApCisg
ICAgICAgIHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0idGVzdF94ZmFpbHVyZV94cGFzcyIs
IG5hbWU9InRlc3RfeHBhc3MiKQogCi0gICAgZGVmIHRlc3RfeGZhaWx1cmVfeHBhc3Nfc3RyaWN0
KHNlbGYsIHRlc3RkaXIpOgorICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0
X3hmYWlsdXJlX3hwYXNzX3N0cmljdChzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5p
dF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIK
ICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTU1Miw1MyArNjgwLDQ2IEBAIGNsYXNzIFRl
c3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAg
ICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAg
ICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAg
ICAgICMgYXNzZXJ0IHJlc3VsdC5yZXQKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5
X3RhZygidGVzdHN1aXRlIikKLSAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lwcz0wLCB0ZXN0
cz0xKQorICAgICAgICBub2RlLmFzc2VydF9hdHRyKHNraXBwZWQ9MCwgdGVzdHM9MSkKICAgICAg
ICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAgICAgIHRu
b2RlLmFzc2VydF9hdHRyKAotICAgICAgICAgICAgZmlsZT0idGVzdF94ZmFpbHVyZV94cGFzc19z
dHJpY3QucHkiLAotICAgICAgICAgICAgbGluZT0iMSIsCi0gICAgICAgICAgICBjbGFzc25hbWU9
InRlc3RfeGZhaWx1cmVfeHBhc3Nfc3RyaWN0IiwKLSAgICAgICAgICAgIG5hbWU9InRlc3RfeHBh
c3MiLAotICAgICAgICApCisgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0idGVz
dF94ZmFpbHVyZV94cGFzc19zdHJpY3QiLCBuYW1lPSJ0ZXN0X3hwYXNzIikKICAgICAgICAgZm5v
ZGUgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygiZmFpbHVyZSIpCiAgICAgICAgIGZub2RlLmFz
c2VydF9hdHRyKG1lc3NhZ2U9IltYUEFTUyhzdHJpY3QpXSBUaGlzIG5lZWRzIHRvIGZhaWwhIikK
IAotICAgIGRlZiB0ZXN0X2NvbGxlY3RfZXJyb3Ioc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFt
ZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3RfY29sbGVjdF9lcnJvcihzZWxmLCB0ZXN0ZGly
LCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoInN5bnRheCBlcnJvciIpCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVz
dGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9m
YW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBkb20uZmlu
ZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoZXJy
b3JzPTEsIHRlc3RzPTEpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygi
dGVzdGNhc2UiKQotICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihmaWxlPSJ0ZXN0X2NvbGxlY3Rf
ZXJyb3IucHkiLCBuYW1lPSJ0ZXN0X2NvbGxlY3RfZXJyb3IiKQotICAgICAgICBhc3NlcnQgdG5v
ZGVbImxpbmUiXSBpcyBOb25lCiAgICAgICAgIGZub2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90
YWcoImVycm9yIikKICAgICAgICAgZm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0iY29sbGVjdGlv
biBmYWlsdXJlIikKICAgICAgICAgYXNzZXJ0ICJTeW50YXhFcnJvciIgaW4gZm5vZGUudG94bWwo
KQogCi0gICAgZGVmIHRlc3RfdW5pY29kZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF91
bmljb2RlKHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UpOgogICAgICAgICB2YWx1ZSA9ICJo
eFx4YzRceDg1XHhjNFx4ODdcbiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICAjIGNvZGluZzogbGF0aW4x
CiAgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbygpOgotICAgICAgICAgICAgICAgIHByaW50ICgl
cikKKyAgICAgICAgICAgICAgICBwcmludCglcikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAot
ICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIgogICAgICAgICAgICAgJSB2YWx1ZQogICAgICAg
ICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAg
cmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gMQogICAgICAgICB0bm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQog
ICAgICAgICBmbm9kZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJmYWlsdXJlIikKLSAgICAg
ICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJqYXZhIik6Ci0gICAgICAgICAgICBh
c3NlcnQgImh4IiBpbiBmbm9kZS50b3htbCgpCisgICAgICAgIGFzc2VydCAiaHgiIGluIGZub2Rl
LnRveG1sKCkKIAotICAgIGRlZiB0ZXN0X2Fzc2VydGlvbl9iaW5jaGFycyhzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgIiIidGhpcyB0ZXN0IGRpZCBmYWlsIHdoZW4gdGhlIGVzY2FwaW5nIHdhc250
IHN0cmljdCIiIgorICAgIGRlZiB0ZXN0X2Fzc2VydGlvbl9iaW5jaGFycyhzZWxmLCB0ZXN0ZGly
LCBydW5fYW5kX3BhcnNlKToKKyAgICAgICAgIiIiVGhpcyB0ZXN0IGRpZCBmYWlsIHdoZW4gdGhl
IGVzY2FwaW5nIHdhc24ndCBzdHJpY3QuIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgICAgICIiIgogCkBAIC02MDksMjMgKzczMCwzMiBAQCBjbGFzcyBUZXN0UHl0aG9u
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IE0xID09IE0yCiAgICAgICAgICAgICAi
IiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIp
CisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgpCiAgICAgICAgIHByaW50KGRv
bS50b3htbCgpKQogCi0gICAgZGVmIHRlc3RfcGFzc19jYXB0dXJlc19zdGRvdXQoc2VsZiwgdGVz
dGRpcik6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJqdW5pdF9sb2dnaW5nIiwgWyJu
byIsICJzeXN0ZW0tb3V0Il0pCisgICAgZGVmIHRlc3RfcGFzc19jYXB0dXJlc19zdGRvdXQoc2Vs
ZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwganVuaXRfbG9nZ2luZyk6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHRlc3RfcGFz
cygpOgogICAgICAgICAgICAgICAgIHByaW50KCdoZWxsby1zdGRvdXQnKQogICAgICAgICAiIiIK
ICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisg
ICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgiLW8iLCAianVuaXRfbG9nZ2luZz0l
cyIgJSBqdW5pdF9sb2dnaW5nKQogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFn
KCJ0ZXN0c3VpdGUiKQogICAgICAgICBwbm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRl
c3RjYXNlIikKLSAgICAgICAgc3lzdGVtb3V0ID0gcG5vZGUuZmluZF9maXJzdF9ieV90YWcoInN5
c3RlbS1vdXQiKQotICAgICAgICBhc3NlcnQgImhlbGxvLXN0ZG91dCIgaW4gc3lzdGVtb3V0LnRv
eG1sKCkKKyAgICAgICAgaWYganVuaXRfbG9nZ2luZyA9PSAibm8iOgorICAgICAgICAgICAgYXNz
ZXJ0IG5vdCBub2RlLmZpbmRfYnlfdGFnKAorICAgICAgICAgICAgICAgICJzeXN0ZW0tb3V0Igor
ICAgICAgICAgICAgKSwgInN5c3RlbS1vdXQgc2hvdWxkIG5vdCBiZSBnZW5lcmF0ZWQiCisgICAg
ICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gInN5c3RlbS1vdXQiOgorICAgICAgICAgICAgc3lzdGVt
b3V0ID0gcG5vZGUuZmluZF9maXJzdF9ieV90YWcoInN5c3RlbS1vdXQiKQorICAgICAgICAgICAg
YXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAiaGVsbG8tc3Rkb3V0IiBpbiBzeXN0ZW1vdXQudG94
bWwoKQorICAgICAgICAgICAgKSwgIidoZWxsby1zdGRvdXQnIHNob3VsZCBiZSBpbiBzeXN0ZW0t
b3V0IgogCi0gICAgZGVmIHRlc3RfcGFzc19jYXB0dXJlc19zdGRlcnIoc2VsZiwgdGVzdGRpcik6
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJqdW5pdF9sb2dnaW5nIiwgWyJubyIsICJz
eXN0ZW0tZXJyIl0pCisgICAgZGVmIHRlc3RfcGFzc19jYXB0dXJlc19zdGRlcnIoc2VsZiwgdGVz
dGRpciwgcnVuX2FuZF9wYXJzZSwganVuaXRfbG9nZ2luZyk6CiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHN5cwpAQCAtNjMz
LDEzICs3NjMsMjEgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoJ2hlbGxvLXN0ZGVycicpCiAgICAgICAgICIiIgogICAgICAgICAp
Ci0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVz
dWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCItbyIsICJqdW5pdF9sb2dnaW5nPSVzIiAlIGp1bml0
X2xvZ2dpbmcpCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0
ZSIpCiAgICAgICAgIHBub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQot
ICAgICAgICBzeXN0ZW1vdXQgPSBwbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLWVyciIp
Ci0gICAgICAgIGFzc2VydCAiaGVsbG8tc3RkZXJyIiBpbiBzeXN0ZW1vdXQudG94bWwoKQotCi0g
ICAgZGVmIHRlc3Rfc2V0dXBfZXJyb3JfY2FwdHVyZXNfc3Rkb3V0KHNlbGYsIHRlc3RkaXIpOgor
ICAgICAgICBpZiBqdW5pdF9sb2dnaW5nID09ICJubyI6CisgICAgICAgICAgICBhc3NlcnQgbm90
IG5vZGUuZmluZF9ieV90YWcoCisgICAgICAgICAgICAgICAgInN5c3RlbS1lcnIiCisgICAgICAg
ICAgICApLCAic3lzdGVtLWVyciBzaG91bGQgbm90IGJlIGdlbmVyYXRlZCIKKyAgICAgICAgaWYg
anVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLWVyciI6CisgICAgICAgICAgICBzeXN0ZW1lcnIgPSBw
bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLWVyciIpCisgICAgICAgICAgICBhc3NlcnQg
KAorICAgICAgICAgICAgICAgICJoZWxsby1zdGRlcnIiIGluIHN5c3RlbWVyci50b3htbCgpCisg
ICAgICAgICAgICApLCAiJ2hlbGxvLXN0ZGVycicgc2hvdWxkIGJlIGluIHN5c3RlbS1lcnIiCisK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImp1bml0X2xvZ2dpbmciLCBbIm5vIiwgInN5
c3RlbS1vdXQiXSkKKyAgICBkZWYgdGVzdF9zZXR1cF9lcnJvcl9jYXB0dXJlc19zdGRvdXQoc2Vs
ZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwganVuaXRfbG9nZ2luZyk6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtNjUyLDEzICs3OTAsMjEgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAg
ICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBk
b20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRf
cGFyc2UoIi1vIiwgImp1bml0X2xvZ2dpbmc9JXMiICUganVuaXRfbG9nZ2luZykKICAgICAgICAg
bm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICAgICAgcG5vZGUg
PSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAgICAgIHN5c3RlbW91dCA9
IHBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJzeXN0ZW0tb3V0IikKLSAgICAgICAgYXNzZXJ0ICJo
ZWxsby1zdGRvdXQiIGluIHN5c3RlbW91dC50b3htbCgpCisgICAgICAgIGlmIGp1bml0X2xvZ2dp
bmcgPT0gIm5vIjoKKyAgICAgICAgICAgIGFzc2VydCBub3Qgbm9kZS5maW5kX2J5X3RhZygKKyAg
ICAgICAgICAgICAgICAic3lzdGVtLW91dCIKKyAgICAgICAgICAgICksICJzeXN0ZW0tb3V0IHNo
b3VsZCBub3QgYmUgZ2VuZXJhdGVkIgorICAgICAgICBpZiBqdW5pdF9sb2dnaW5nID09ICJzeXN0
ZW0tb3V0IjoKKyAgICAgICAgICAgIHN5c3RlbW91dCA9IHBub2RlLmZpbmRfZmlyc3RfYnlfdGFn
KCJzeXN0ZW0tb3V0IikKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgImhl
bGxvLXN0ZG91dCIgaW4gc3lzdGVtb3V0LnRveG1sKCkKKyAgICAgICAgICAgICksICInaGVsbG8t
c3Rkb3V0JyBzaG91bGQgYmUgaW4gc3lzdGVtLW91dCIKIAotICAgIGRlZiB0ZXN0X3NldHVwX2Vy
cm9yX2NhcHR1cmVzX3N0ZGVycihzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImp1bml0X2xvZ2dpbmciLCBbIm5vIiwgInN5c3RlbS1lcnIiXSkKKyAgICBkZWYg
dGVzdF9zZXR1cF9lcnJvcl9jYXB0dXJlc19zdGRlcnIoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9w
YXJzZSwganVuaXRfbG9nZ2luZyk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHN5cwpAQCAtNjcyLDEzICs4MTgsMjEgQEAg
Y2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAg
IiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGly
KQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoIi1vIiwgImp1bml0X2xvZ2dp
bmc9JXMiICUganVuaXRfbG9nZ2luZykKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5
X3RhZygidGVzdHN1aXRlIikKICAgICAgICAgcG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFn
KCJ0ZXN0Y2FzZSIpCi0gICAgICAgIHN5c3RlbW91dCA9IHBub2RlLmZpbmRfZmlyc3RfYnlfdGFn
KCJzeXN0ZW0tZXJyIikKLSAgICAgICAgYXNzZXJ0ICJoZWxsby1zdGRlcnIiIGluIHN5c3RlbW91
dC50b3htbCgpCi0KLSAgICBkZWYgdGVzdF9hdm9pZF9kb3VibGVfc3Rkb3V0KHNlbGYsIHRlc3Rk
aXIpOgorICAgICAgICBpZiBqdW5pdF9sb2dnaW5nID09ICJubyI6CisgICAgICAgICAgICBhc3Nl
cnQgbm90IG5vZGUuZmluZF9ieV90YWcoCisgICAgICAgICAgICAgICAgInN5c3RlbS1lcnIiCisg
ICAgICAgICAgICApLCAic3lzdGVtLWVyciBzaG91bGQgbm90IGJlIGdlbmVyYXRlZCIKKyAgICAg
ICAgaWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLWVyciI6CisgICAgICAgICAgICBzeXN0ZW1l
cnIgPSBwbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLWVyciIpCisgICAgICAgICAgICBh
c3NlcnQgKAorICAgICAgICAgICAgICAgICJoZWxsby1zdGRlcnIiIGluIHN5c3RlbWVyci50b3ht
bCgpCisgICAgICAgICAgICApLCAiJ2hlbGxvLXN0ZGVycicgc2hvdWxkIGJlIGluIHN5c3RlbS1l
cnIiCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImp1bml0X2xvZ2dpbmciLCBbIm5v
IiwgInN5c3RlbS1vdXQiXSkKKyAgICBkZWYgdGVzdF9hdm9pZF9kb3VibGVfc3Rkb3V0KHNlbGYs
IHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIGp1bml0X2xvZ2dpbmcpOgogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBzeXMKQEAg
LTY5MywxMiArODQ3LDE3IEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCdoZWxsby1zdGRvdXQgY2FsbCcpCiAgICAgICAgICIiIgog
ICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAg
ICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCItbyIsICJqdW5pdF9sb2dnaW5nPSVz
IiAlIGp1bml0X2xvZ2dpbmcpCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWco
InRlc3RzdWl0ZSIpCiAgICAgICAgIHBub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVz
dGNhc2UiKQotICAgICAgICBzeXN0ZW1vdXQgPSBwbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lz
dGVtLW91dCIpCi0gICAgICAgIGFzc2VydCAiaGVsbG8tc3Rkb3V0IGNhbGwiIGluIHN5c3RlbW91
dC50b3htbCgpCi0gICAgICAgIGFzc2VydCAiaGVsbG8tc3Rkb3V0IHRlYXJkb3duIiBpbiBzeXN0
ZW1vdXQudG94bWwoKQorICAgICAgICBpZiBqdW5pdF9sb2dnaW5nID09ICJubyI6CisgICAgICAg
ICAgICBhc3NlcnQgbm90IG5vZGUuZmluZF9ieV90YWcoCisgICAgICAgICAgICAgICAgInN5c3Rl
bS1vdXQiCisgICAgICAgICAgICApLCAic3lzdGVtLW91dCBzaG91bGQgbm90IGJlIGdlbmVyYXRl
ZCIKKyAgICAgICAgaWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLW91dCI6CisgICAgICAgICAg
ICBzeXN0ZW1vdXQgPSBwbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLW91dCIpCisgICAg
ICAgICAgICBhc3NlcnQgImhlbGxvLXN0ZG91dCBjYWxsIiBpbiBzeXN0ZW1vdXQudG94bWwoKQor
ICAgICAgICAgICAgYXNzZXJ0ICJoZWxsby1zdGRvdXQgdGVhcmRvd24iIGluIHN5c3RlbW91dC50
b3htbCgpCiAKIAogZGVmIHRlc3RfbWFuZ2xlX3Rlc3RfYWRkcmVzcygpOgpAQCAtNzA5LDQ2ICs4
NjgsNDYgQEAgZGVmIHRlc3RfbWFuZ2xlX3Rlc3RfYWRkcmVzcygpOgogICAgIGFzc2VydCBuZXdu
YW1lcyA9PSBbImEubXkucHkudGhpbmciLCAiQ2xhc3MiLCAibWV0aG9kIiwgIlthLTEtOjpdIl0K
IAogCi1kZWYgdGVzdF9kb250X2NvbmZpZ3VyZV9vbl9zbGF2ZXModG1wZGlyKToKLSAgICBnb3R0
ZW4gPSBbXQorZGVmIHRlc3RfZG9udF9jb25maWd1cmVfb25fd29ya2Vycyh0bXBkaXIpIC0+IE5v
bmU6CisgICAgZ290dGVuID0gW10gICMgdHlwZTogTGlzdFtvYmplY3RdCiAKLSAgICBjbGFzcyBG
YWtlQ29uZmlnKG9iamVjdCk6CisgICAgY2xhc3MgRmFrZUNvbmZpZzoKKyAgICAgICAgaWYgVFlQ
RV9DSEVDS0lORzoKKyAgICAgICAgICAgIHdvcmtlcmlucHV0ID0gTm9uZQogCiAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgICAgIHNlbGYucGx1Z2lubWFuYWdlciA9IHNlbGYK
ICAgICAgICAgICAgIHNlbGYub3B0aW9uID0gc2VsZgorICAgICAgICAgICAgc2VsZi5fc3RvcmUg
PSBTdG9yZSgpCiAKICAgICAgICAgZGVmIGdldGluaShzZWxmLCBuYW1lKToKICAgICAgICAgICAg
IHJldHVybiAicHl0ZXN0IgogCiAgICAgICAgIGp1bml0cHJlZml4ID0gTm9uZQotICAgICAgICAj
IFhYWDogc2hvdWxkbnQgbmVlZCB0bXBkaXIgPworICAgICAgICAjIFhYWDogc2hvdWxkbid0IG5l
ZWQgdG1wZGlyID8KICAgICAgICAgeG1scGF0aCA9IHN0cih0bXBkaXIuam9pbigianVuaXgueG1s
IikpCiAgICAgICAgIHJlZ2lzdGVyID0gZ290dGVuLmFwcGVuZAogCi0gICAgZmFrZV9jb25maWcg
PSBGYWtlQ29uZmlnKCkKKyAgICBmYWtlX2NvbmZpZyA9IGNhc3QoQ29uZmlnLCBGYWtlQ29uZmln
KCkpCiAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBqdW5pdHhtbAogCiAgICAganVuaXR4bWwucHl0
ZXN0X2NvbmZpZ3VyZShmYWtlX2NvbmZpZykKICAgICBhc3NlcnQgbGVuKGdvdHRlbikgPT0gMQot
ICAgIEZha2VDb25maWcuc2xhdmVpbnB1dCA9IE5vbmUKKyAgICBGYWtlQ29uZmlnLndvcmtlcmlu
cHV0ID0gTm9uZQogICAgIGp1bml0eG1sLnB5dGVzdF9jb25maWd1cmUoZmFrZV9jb25maWcpCiAg
ICAgYXNzZXJ0IGxlbihnb3R0ZW4pID09IDEKIAogCi1jbGFzcyBUZXN0Tm9uUHl0aG9uKG9iamVj
dCk6Ci0KLSAgICBkZWYgdGVzdF9zdW1taW5nX3NpbXBsZShzZWxmLCB0ZXN0ZGlyKToKK2NsYXNz
IFRlc3ROb25QeXRob246CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3Rf
c3VtbWluZ19zaW1wbGUoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5
KToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxl
KHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAgICAgICAgaWYgcGF0aC5leHQgPT0gIi54eXoiOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlJdGVtKHBhdGgsIHBhcmVudCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIE15SXRlbS5mcm9tX3BhcmVudChuYW1lPXBhdGguYmFzZW5hbWUs
IHBhcmVudD1wYXJlbnQpCiAgICAgICAgICAgICBjbGFzcyBNeUl0ZW0ocHl0ZXN0Lkl0ZW0pOgot
ICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBwYXJlbnQpOgotICAgICAg
ICAgICAgICAgICAgICBzdXBlcihNeUl0ZW0sIHNlbGYpLl9faW5pdF9fKHBhdGguYmFzZW5hbWUs
IHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mc3BhdGggPSBwYXRoCiAgICAgICAg
ICAgICAgICAgZGVmIHJ1bnRlc3Qoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoNDIpCiAgICAgICAgICAgICAgICAgZGVmIHJlcHJfZmFpbHVyZShzZWxmLCBleGNp
bmZvKToKQEAgLTc1NiwxMCArOTE1LDEwIEBAIGNsYXNzIFRlc3ROb25QeXRob24ob2JqZWN0KToK
ICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigibXlm
aWxlLnh5eiIpLndyaXRlKCJoZWxsbyIpCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFy
c2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14
dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBk
b20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCi0gICAgICAgIG5vZGUuYXNzZXJ0X2F0
dHIoZXJyb3JzPTAsIGZhaWx1cmVzPTEsIHNraXBzPTAsIHRlc3RzPTEpCisgICAgICAgIG5vZGUu
YXNzZXJ0X2F0dHIoZXJyb3JzPTAsIGZhaWx1cmVzPTEsIHNraXBwZWQ9MCwgdGVzdHM9MSkKICAg
ICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCiAgICAgICAg
IHRub2RlLmFzc2VydF9hdHRyKG5hbWU9Im15ZmlsZS54eXoiKQogICAgICAgICBmbm9kZSA9IHRu
b2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJmYWlsdXJlIikKQEAgLTc2Nyw3ICs5MjYsOCBAQCBjbGFz
cyBUZXN0Tm9uUHl0aG9uKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCAiY3VzdG9tIGl0ZW0gcnVu
dGVzdCBmYWlsZWQiIGluIGZub2RlLnRveG1sKCkKIAogCi1kZWYgdGVzdF9udWxsYnl0ZSh0ZXN0
ZGlyKToKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgianVuaXRfbG9nZ2luZyIsIFsibm8iLCAi
c3lzdGVtLW91dCJdKQorZGVmIHRlc3RfbnVsbGJ5dGUodGVzdGRpciwganVuaXRfbG9nZ2luZyk6
CiAgICAgIyBBIG51bGwgYnl0ZSBjYW4gbm90IG9jY3VyIGluIFhNTCAoc2VlIHNlY3Rpb24gMi4y
IG9mIHRoZSBzcGVjKQogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCkBAIC03
NzksMTMgKzkzOSwxNyBAQCBkZWYgdGVzdF9udWxsYnl0ZSh0ZXN0ZGlyKToKICAgICAiIiIKICAg
ICApCiAgICAgeG1sZiA9IHRlc3RkaXIudG1wZGlyLmpvaW4oImp1bml0LnhtbCIpCi0gICAgdGVz
dGRpci5ydW5weXRlc3QoIi0tanVuaXR4bWw9JXMiICUgeG1sZikKKyAgICB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1qdW5pdHhtbD0lcyIgJSB4bWxmLCAiLW8iLCAianVuaXRfbG9nZ2luZz0lcyIgJSBq
dW5pdF9sb2dnaW5nKQogICAgIHRleHQgPSB4bWxmLnJlYWQoKQogICAgIGFzc2VydCAiXHgwMCIg
bm90IGluIHRleHQKLSAgICBhc3NlcnQgIiN4MDAiIGluIHRleHQKKyAgICBpZiBqdW5pdF9sb2dn
aW5nID09ICJzeXN0ZW0tb3V0IjoKKyAgICAgICAgYXNzZXJ0ICIjeDAwIiBpbiB0ZXh0CisgICAg
aWYganVuaXRfbG9nZ2luZyA9PSAibm8iOgorICAgICAgICBhc3NlcnQgIiN4MDAiIG5vdCBpbiB0
ZXh0CiAKIAotZGVmIHRlc3RfbnVsbGJ5dGVfcmVwbGFjZSh0ZXN0ZGlyKToKK0BweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgianVuaXRfbG9nZ2luZyIsIFsibm8iLCAic3lzdGVtLW91dCJdKQorZGVm
IHRlc3RfbnVsbGJ5dGVfcmVwbGFjZSh0ZXN0ZGlyLCBqdW5pdF9sb2dnaW5nKToKICAgICAjIENo
ZWNrIGlmIHRoZSBudWxsIGJ5dGUgZ2V0cyByZXBsYWNlZAogICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgIiIiCkBAIC03OTcsMjUgKzk2MSwyMyBAQCBkZWYgdGVzdF9udWxsYnl0ZV9y
ZXBsYWNlKHRlc3RkaXIpOgogICAgICIiIgogICAgICkKICAgICB4bWxmID0gdGVzdGRpci50bXBk
aXIuam9pbigianVuaXQueG1sIikKLSAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1qdW5pdHhtbD0l
cyIgJSB4bWxmKQorICAgIHRlc3RkaXIucnVucHl0ZXN0KCItLWp1bml0eG1sPSVzIiAlIHhtbGYs
ICItbyIsICJqdW5pdF9sb2dnaW5nPSVzIiAlIGp1bml0X2xvZ2dpbmcpCiAgICAgdGV4dCA9IHht
bGYucmVhZCgpCi0gICAgYXNzZXJ0ICIjeDAiIGluIHRleHQKKyAgICBpZiBqdW5pdF9sb2dnaW5n
ID09ICJzeXN0ZW0tb3V0IjoKKyAgICAgICAgYXNzZXJ0ICIjeDAiIGluIHRleHQKKyAgICBpZiBq
dW5pdF9sb2dnaW5nID09ICJubyI6CisgICAgICAgIGFzc2VydCAiI3gwIiBub3QgaW4gdGV4dAog
CiAKIGRlZiB0ZXN0X2ludmFsaWRfeG1sX2VzY2FwZSgpOgogICAgICMgVGVzdCBzb21lIG1vcmUg
aW52YWxpZCB4bWwgY2hhcnMsIHRoZSBmdWxsIHJhbmdlIHNob3VsZCBiZQotICAgICMgdGVzdGVk
IHJlYWxseSBidXQgbGV0J3MganVzdCB0aGVzdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlcwotICAg
ICMgaW50ZWFkLgorICAgICMgdGVzdGVkIHJlYWxseSBidXQgbGV0J3MganVzdCB0ZXN0IHRoZSBl
ZGdlcyBvZiB0aGUgcmFuZ2VzCisgICAgIyBpbnN0ZWFkLgogICAgICMgWFhYIFRoaXMgb25seSB0
ZXN0cyBsb3cgdW5pY29kZSBjaGFyYWN0ZXIgcG9pbnRzIGZvciBub3cgYXMKICAgICAjICAgICB0
aGVyZSBhcmUgc29tZSBpc3N1ZXMgd2l0aCB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSBmb3IK
ICAgICAjICAgICB0aGUgaGlnaGVyIG9uZXMuCiAgICAgIyBYWFggVGVzdGluZyAweEQgKFxyKSBp
cyB0cmlja3kgYXMgaXQgb3ZlcndyaXRlcyB0aGUganVzdCB3cml0dGVuCiAgICAgIyAgICAgbGlu
ZSBpbiB0aGUgb3V0cHV0LCBzbyB3ZSBza2lwIGl0IHRvby4KLSAgICBnbG9iYWwgdW5pY2hyCi0g
ICAgdHJ5OgotICAgICAgICB1bmljaHIoNjUpCi0gICAgZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAg
ICAgdW5pY2hyID0gY2hyCiAgICAgaW52YWxpZCA9ICgKICAgICAgICAgMHgwMCwKICAgICAgICAg
MHgxLApAQCAtODMyLDI5ICs5OTQsMjQgQEAgZGVmIHRlc3RfaW52YWxpZF94bWxfZXNjYXBlKCk6
CiAgICAgdmFsaWQgPSAoMHg5LCAweEEsIDB4MjApCiAgICAgIyAweEQsIDB4RDdGRiwgMHhFMDAw
LCAweEZGRkQsIDB4MTAwMDAsIDB4MTBGRkZGKQogCi0gICAgZnJvbSBfcHl0ZXN0Lmp1bml0eG1s
IGltcG9ydCBiaW5feG1sX2VzY2FwZQotCiAgICAgZm9yIGkgaW4gaW52YWxpZDoKLSAgICAgICAg
Z290ID0gYmluX3htbF9lc2NhcGUodW5pY2hyKGkpKS51bmlvYmoKKyAgICAgICAgZ290ID0gYmlu
X3htbF9lc2NhcGUoY2hyKGkpKQogICAgICAgICBpZiBpIDw9IDB4RkY6CiAgICAgICAgICAgICBl
eHBlY3RlZCA9ICIjeCUwMlgiICUgaQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhwZWN0
ZWQgPSAiI3glMDRYIiAlIGkKICAgICAgICAgYXNzZXJ0IGdvdCA9PSBleHBlY3RlZAogICAgIGZv
ciBpIGluIHZhbGlkOgotICAgICAgICBhc3NlcnQgY2hyKGkpID09IGJpbl94bWxfZXNjYXBlKHVu
aWNocihpKSkudW5pb2JqCisgICAgICAgIGFzc2VydCBjaHIoaSkgPT0gYmluX3htbF9lc2NhcGUo
Y2hyKGkpKQogCiAKIGRlZiB0ZXN0X2xvZ3htbF9wYXRoX2V4cGFuc2lvbih0bXBkaXIsIG1vbmtl
eXBhdGNoKToKICAgICBob21lX3RpbGRlID0gcHkucGF0aC5sb2NhbChvcy5wYXRoLmV4cGFuZHVz
ZXIoIn4iKSkuam9pbigidGVzdC54bWwiKQotCiAgICAgeG1sX3RpbGRlID0gTG9nWE1MKCJ+JXN0
ZXN0LnhtbCIgJSB0bXBkaXIuc2VwLCBOb25lKQogICAgIGFzc2VydCB4bWxfdGlsZGUubG9nZmls
ZSA9PSBob21lX3RpbGRlCiAKLSAgICAjIHRoaXMgaXMgaGVyZSBmb3Igd2hlbiAkSE9NRSBpcyBu
b3Qgc2V0IGNvcnJlY3QKLSAgICBtb25rZXlwYXRjaC5zZXRlbnYoIkhPTUUiLCB0bXBkaXIpCisg
ICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJIT01FIiwgc3RyKHRtcGRpcikpCiAgICAgaG9tZV92YXIg
PSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguZXhwYW5kdmFycygiJEhPTUUvdGVzdC54bWwiKSkK
LQogICAgIHhtbF92YXIgPSBMb2dYTUwoIiRIT01FJXN0ZXN0LnhtbCIgJSB0bXBkaXIuc2VwLCBO
b25lKQogICAgIGFzc2VydCB4bWxfdmFyLmxvZ2ZpbGUgPT0gaG9tZV92YXIKIApAQCAtODkyLDIy
ICsxMDQ5LDIyIEBAIGRlZiB0ZXN0X2xvZ3htbF9jaGVja19pc2Rpcih0ZXN0ZGlyKToKICAgICBy
ZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyIqLS1qdW5pdHhtbCBtdXN0IGJlIGEgZmlsZW5h
bWUqIl0pCiAKIAotZGVmIHRlc3RfZXNjYXBlZF9wYXJhbWV0cml6ZWRfbmFtZXNfeG1sKHRlc3Rk
aXIpOgorZGVmIHRlc3RfZXNjYXBlZF9wYXJhbWV0cml6ZWRfbmFtZXNfeG1sKHRlc3RkaXIsIHJ1
bl9hbmRfcGFyc2UpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCisgICAg
ICAgICIiIlwKICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoJ2NoYXInLCBbdSJcXHgwMCJdKQorICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoJ2NoYXInLCBbIlxceDAwIl0pCiAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoY2hhcik6CiAg
ICAgICAgICAgICBhc3NlcnQgY2hhcgotICAgICIiIgorICAgICAgICAiIiIKICAgICApCi0gICAg
cmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgIHJlc3VsdCwgZG9tID0gcnVu
X2FuZF9wYXJzZSgpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgIG5vZGUgPSBkb20u
ZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAgICBub2RlLmFzc2VydF9hdHRyKG5hbWU9
InRlc3RfZnVuY1tcXHgwMF0iKQogCiAKLWRlZiB0ZXN0X2RvdWJsZV9jb2xvbl9zcGxpdF9mdW5j
dGlvbl9pc3N1ZTQ2OSh0ZXN0ZGlyKToKK2RlZiB0ZXN0X2RvdWJsZV9jb2xvbl9zcGxpdF9mdW5j
dGlvbl9pc3N1ZTQ2OSh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC05MTYsMTQgKzEw
NzMsMTQgQEAgZGVmIHRlc3RfZG91YmxlX2NvbG9uX3NwbGl0X2Z1bmN0aW9uX2lzc3VlNDY5KHRl
c3RkaXIpOgogICAgICAgICAgICAgcGFzcwogICAgICIiIgogICAgICkKLSAgICByZXN1bHQsIGRv
bSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNl
KCkKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0
X2J5X3RhZygidGVzdGNhc2UiKQogICAgIG5vZGUuYXNzZXJ0X2F0dHIoY2xhc3NuYW1lPSJ0ZXN0
X2RvdWJsZV9jb2xvbl9zcGxpdF9mdW5jdGlvbl9pc3N1ZTQ2OSIpCiAgICAgbm9kZS5hc3NlcnRf
YXR0cihuYW1lPSJ0ZXN0X2Z1bmNbZG91YmxlOjpjb2xvbl0iKQogCiAKLWRlZiB0ZXN0X2RvdWJs
ZV9jb2xvbl9zcGxpdF9tZXRob2RfaXNzdWU0NjkodGVzdGRpcik6CitkZWYgdGVzdF9kb3VibGVf
Y29sb25fc3BsaXRfbWV0aG9kX2lzc3VlNDY5KHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UpOgogICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QK
QEAgLTkzMywyNiArMTA5MCwyNSBAQCBkZWYgdGVzdF9kb3VibGVfY29sb25fc3BsaXRfbWV0aG9k
X2lzc3VlNDY5KHRlc3RkaXIpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAiIiIKICAgICAp
Ci0gICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgIHJlc3VsdCwgZG9t
ID0gcnVuX2FuZF9wYXJzZSgpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgIG5vZGUg
PSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAgICBub2RlLmFzc2VydF9hdHRy
KGNsYXNzbmFtZT0idGVzdF9kb3VibGVfY29sb25fc3BsaXRfbWV0aG9kX2lzc3VlNDY5LlRlc3RD
bGFzcyIpCiAgICAgbm9kZS5hc3NlcnRfYXR0cihuYW1lPSJ0ZXN0X2Z1bmNbZG91YmxlOjpjb2xv
bl0iKQogCiAKLWRlZiB0ZXN0X3VuaWNvZGVfaXNzdWUzNjgodGVzdGRpcik6CitkZWYgdGVzdF91
bmljb2RlX2lzc3VlMzY4KHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgcGF0aCA9IHRlc3RkaXIudG1w
ZGlyLmpvaW4oInRlc3QueG1sIikKICAgICBsb2cgPSBMb2dYTUwoc3RyKHBhdGgpLCBOb25lKQot
ICAgIHVzdHIgPSBweS5idWlsdGluLl90b3RleHQoItCS0J3QmCEiLCAidXRmLTgiKQotICAgIGZy
b20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0IEJhc2VSZXBvcnQKKyAgICB1c3RyID0gItCS0J3QmCEi
CiAKICAgICBjbGFzcyBSZXBvcnQoQmFzZVJlcG9ydCk6CiAgICAgICAgIGxvbmdyZXByID0gdXN0
cgotICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zID0gW10gICMgdHlwZTog
TGlzdFtUdXBsZVtzdHIsIHN0cl1dCiAgICAgICAgIG5vZGVpZCA9ICJzb21ldGhpbmciCiAgICAg
ICAgIGxvY2F0aW9uID0gInRlc3RzL2ZpbGVuYW1lLnB5IiwgNDIsICJUZXN0Q2xhc3MubWV0aG9k
IgogCi0gICAgdGVzdF9yZXBvcnQgPSBSZXBvcnQoKQorICAgIHRlc3RfcmVwb3J0ID0gY2FzdChU
ZXN0UmVwb3J0LCBSZXBvcnQoKSkKIAogICAgICMgaG9wZWZ1bGx5IHRoaXMgaXMgbm90IHRvbyBi
cml0dGxlIC4uLgogICAgIGxvZy5weXRlc3Rfc2Vzc2lvbnN0YXJ0KCkKQEAgLTk2NSwxMiArMTEy
MSwxMiBAQCBkZWYgdGVzdF91bmljb2RlX2lzc3VlMzY4KHRlc3RkaXIpOgogICAgIG5vZGVfcmVw
b3J0ZXIuYXBwZW5kX3NraXBwZWQodGVzdF9yZXBvcnQpCiAgICAgdGVzdF9yZXBvcnQubG9uZ3Jl
cHIgPSAiZmlsZW5hbWUiLCAxLCAiU2tpcHBlZDog5Y2h5Zij5ZijIgogICAgIG5vZGVfcmVwb3J0
ZXIuYXBwZW5kX3NraXBwZWQodGVzdF9yZXBvcnQpCi0gICAgdGVzdF9yZXBvcnQud2FzeGZhaWwg
PSB1c3RyCisgICAgdGVzdF9yZXBvcnQud2FzeGZhaWwgPSB1c3RyICAjIHR5cGU6IGlnbm9yZVth
dHRyLWRlZmluZWRdCiAgICAgbm9kZV9yZXBvcnRlci5hcHBlbmRfc2tpcHBlZCh0ZXN0X3JlcG9y
dCkKICAgICBsb2cucHl0ZXN0X3Nlc3Npb25maW5pc2goKQogCiAKLWRlZiB0ZXN0X3JlY29yZF9w
cm9wZXJ0eSh0ZXN0ZGlyKToKK2RlZiB0ZXN0X3JlY29yZF9wcm9wZXJ0eSh0ZXN0ZGlyLCBydW5f
YW5kX3BhcnNlKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC05ODIsMTYgKzExMzgsMTcgQEAgZGVmIHRlc3RfcmVjb3JkX3By
b3BlcnR5KHRlc3RkaXIpOgogICAgICAgICAgICAgcmVjb3JkX3Byb3BlcnR5KCJmb28iLCAiPDEi
KTsKICAgICAiIiIKICAgICApCi0gICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGly
LCAiLXJ3diIpCisgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCkKICAgICBub2RlID0g
ZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgIHRub2RlID0gbm9kZS5maW5k
X2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQogICAgIHBzbm9kZSA9IHRub2RlLmZpbmRfZmlyc3Rf
YnlfdGFnKCJwcm9wZXJ0aWVzIikKICAgICBwbm9kZXMgPSBwc25vZGUuZmluZF9ieV90YWcoInBy
b3BlcnR5IikKICAgICBwbm9kZXNbMF0uYXNzZXJ0X2F0dHIobmFtZT0iYmFyIiwgdmFsdWU9IjEi
KQogICAgIHBub2Rlc1sxXS5hc3NlcnRfYXR0cihuYW1lPSJmb28iLCB2YWx1ZT0iPDEiKQorICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio9IDEgcGFzc2VkIGluICoiXSkKIAogCi1k
ZWYgdGVzdF9yZWNvcmRfcHJvcGVydHlfc2FtZV9uYW1lKHRlc3RkaXIpOgorZGVmIHRlc3RfcmVj
b3JkX3Byb3BlcnR5X3NhbWVfbmFtZSh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBkZWYgdGVzdF9yZWNvcmRfd2l0
aF9zYW1lX25hbWUocmVjb3JkX3Byb3BlcnR5KToKQEAgLTk5OSw3ICsxMTU2LDcgQEAgZGVmIHRl
c3RfcmVjb3JkX3Byb3BlcnR5X3NhbWVfbmFtZSh0ZXN0ZGlyKToKICAgICAgICAgICAgIHJlY29y
ZF9wcm9wZXJ0eSgiZm9vIiwgImJheiIpCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCwgZG9t
ID0gcnVuYW5kcGFyc2UodGVzdGRpciwgIi1ydyIpCisgICAgcmVzdWx0LCBkb20gPSBydW5fYW5k
X3BhcnNlKCkKICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQog
ICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQogICAgIHBzbm9k
ZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJwcm9wZXJ0aWVzIikKQEAgLTEwMDgsNyArMTE2
NSwyOCBAQCBkZWYgdGVzdF9yZWNvcmRfcHJvcGVydHlfc2FtZV9uYW1lKHRlc3RkaXIpOgogICAg
IHBub2Rlc1sxXS5hc3NlcnRfYXR0cihuYW1lPSJmb28iLCB2YWx1ZT0iYmF6IikKIAogCi1kZWYg
dGVzdF9yZWNvcmRfYXR0cmlidXRlKHRlc3RkaXIpOgorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJmaXh0dXJlX25hbWUiLCBbInJlY29yZF9wcm9wZXJ0eSIsICJyZWNvcmRfeG1sX2F0dHJpYnV0
ZSJdKQorZGVmIHRlc3RfcmVjb3JkX2ZpeHR1cmVzX3dpdGhvdXRfanVuaXR4bWwodGVzdGRpciwg
Zml4dHVyZV9uYW1lKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAg
ICAgICBkZWYgdGVzdF9yZWNvcmQoe2ZpeHR1cmVfbmFtZX0pOgorICAgICAgICAgICAge2ZpeHR1
cmVfbmFtZX0oImZvbyIsICJiYXIiKQorICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICBmaXh0
dXJlX25hbWU9Zml4dHVyZV9uYW1lCisgICAgICAgICkKKyAgICApCisgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitAcHl0ZXN0
Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorZGVmIHRlc3RfcmVjb3JkX2F0dHJpYnV0
ZSh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAg
ICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAgICBqdW5pdF9mYW1pbHkgPSB4dW5pdDEKKyAg
ICAiIiIKKyAgICApCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAg
ICAgaW1wb3J0IHB5dGVzdApAQCAtMTAyMCwyMiArMTE5OCw2MSBAQCBkZWYgdGVzdF9yZWNvcmRf
YXR0cmlidXRlKHRlc3RkaXIpOgogICAgICAgICAgICAgcmVjb3JkX3htbF9hdHRyaWJ1dGUoImZv
byIsICI8MSIpOwogICAgICIiIgogICAgICkKLSAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNl
KHRlc3RkaXIsICItcnciKQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgpCiAgICAg
bm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICB0bm9kZSA9IG5v
ZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAgICB0bm9kZS5hc3NlcnRfYXR0cihi
YXI9IjEiKQogICAgIHRub2RlLmFzc2VydF9hdHRyKGZvbz0iPDEiKQogICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyJ0ZXN0X3JlY29yZF9hdHRyaWJ1dGUucHk6OnRl
c3RfcmVjb3JkIiwgIipyZWNvcmRfeG1sX2F0dHJpYnV0ZSpleHBlcmltZW50YWwqIl0KKyAgICAg
ICAgWyIqdGVzdF9yZWNvcmRfYXR0cmlidXRlLnB5OjY6KnJlY29yZF94bWxfYXR0cmlidXRlIGlz
IGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIl0KICAgICApCiAKIAotZGVmIHRlc3RfcmFuZG9tX3Jl
cG9ydF9sb2dfeGRpc3QodGVzdGRpcik6Ci0gICAgIiIieGRpc3QgY2FsbHMgcHl0ZXN0X3J1bnRl
c3RfbG9ncmVwb3J0IGFzIHRoZXkgYXJlIGV4ZWN1dGVkIGJ5IHRoZSBzbGF2ZXMsCi0gICAgd2l0
aCBub2RlcyBmcm9tIHNldmVyYWwgbm9kZXMgb3ZlcmxhcHBpbmcsIHNvIGp1bml0eG1sIG11c3Qg
Y29wZSB3aXRoIHRoYXQKLSAgICB0byBwcm9kdWNlIGNvcnJlY3QgcmVwb3J0cy4gIzEwNjQKK0Bw
eXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCitAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoImZpeHR1cmVfbmFtZSIsIFsicmVjb3JkX3htbF9hdHRyaWJ1dGUiLCAicmVjb3JkX3By
b3BlcnR5Il0pCitkZWYgdGVzdF9yZWNvcmRfZml4dHVyZXNfeHVuaXQyKHRlc3RkaXIsIGZpeHR1
cmVfbmFtZSwgcnVuX2FuZF9wYXJzZSk6CisgICAgIiIiRW5zdXJlIHJlY29yZF94bWxfYXR0cmli
dXRlIGFuZCByZWNvcmRfcHJvcGVydHkgZHJvcCB2YWx1ZXMgd2hlbiBvdXRzaWRlIG9mIGxlZ2Fj
eSBmYW1pbHkuIiIiCisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAg
W3B5dGVzdF0KKyAgICAgICAganVuaXRfZmFtaWx5ID0geHVuaXQyCiAgICAgIiIiCisgICAgKQor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRl
c3QKKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIG90aGVyKHtmaXh0dXJl
X25hbWV9KToKKyAgICAgICAgICAgIHtmaXh0dXJlX25hbWV9KCJiYXIiLCAxKQorICAgICAgICBk
ZWYgdGVzdF9yZWNvcmQoe2ZpeHR1cmVfbmFtZX0sIG90aGVyKToKKyAgICAgICAgICAgIHtmaXh0
dXJlX25hbWV9KCJmb28iLCAiPDEiKTsKKyAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgZml4
dHVyZV9uYW1lPWZpeHR1cmVfbmFtZQorICAgICAgICApCisgICAgKQorCisgICAgcmVzdWx0LCBk
b20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT1Ob25lKQorICAgIGV4cGVjdGVkX2xpbmVzID0gW10K
KyAgICBpZiBmaXh0dXJlX25hbWUgPT0gInJlY29yZF94bWxfYXR0cmlidXRlIjoKKyAgICAgICAg
ZXhwZWN0ZWRfbGluZXMuYXBwZW5kKAorICAgICAgICAgICAgIip0ZXN0X3JlY29yZF9maXh0dXJl
c194dW5pdDIucHk6NjoqcmVjb3JkX3htbF9hdHRyaWJ1dGUgaXMgYW4gZXhwZXJpbWVudGFsIGZl
YXR1cmUiCisgICAgICAgICkKKyAgICBleHBlY3RlZF9saW5lcyA9IFsKKyAgICAgICAgIip0ZXN0
X3JlY29yZF9maXh0dXJlc194dW5pdDIucHk6Njoqe2ZpeHR1cmVfbmFtZX0gaXMgaW5jb21wYXRp
YmxlICIKKyAgICAgICAgIndpdGgganVuaXRfZmFtaWx5ICd4dW5pdDInICh1c2UgJ2xlZ2FjeScg
b3IgJ3h1bml0MScpIi5mb3JtYXQoCisgICAgICAgICAgICBmaXh0dXJlX25hbWU9Zml4dHVyZV9u
YW1lCisgICAgICAgICkKKyAgICBdCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKGV4
cGVjdGVkX2xpbmVzKQorCisKK2RlZiB0ZXN0X3JhbmRvbV9yZXBvcnRfbG9nX3hkaXN0KHRlc3Rk
aXIsIG1vbmtleXBhdGNoLCBydW5fYW5kX3BhcnNlKToKKyAgICAiIiJgeGRpc3RgIGNhbGxzIHB5
dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCBhcyB0aGV5IGFyZSBleGVjdXRlZCBieSB0aGUgd29ya2Vy
cywKKyAgICB3aXRoIG5vZGVzIGZyb20gc2V2ZXJhbCBub2RlcyBvdmVybGFwcGluZywgc28ganVu
aXR4bWwgbXVzdCBjb3BlIHdpdGggdGhhdAorICAgIHRvIHByb2R1Y2UgY29ycmVjdCByZXBvcnRz
ICgjMTA2NCkuIiIiCiAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgieGRpc3QiKQorICAgIG1vbmtl
eXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIiwgcmFpc2luZz1G
YWxzZSkKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBv
cnQgcHl0ZXN0LCB0aW1lCkBAIC0xMDQ0LDcgKzEyNjEsNyBAQCBkZWYgdGVzdF9yYW5kb21fcmVw
b3J0X2xvZ194ZGlzdCh0ZXN0ZGlyKToKICAgICAgICAgICAgIGFzc2VydCBpICE9IDIyCiAgICAg
IiIiCiAgICAgKQotICAgIF8sIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIsICItbjIiKQorICAg
IF8sIGRvbSA9IHJ1bl9hbmRfcGFyc2UoIi1uMiIpCiAgICAgc3VpdGVfbm9kZSA9IGRvbS5maW5k
X2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICBmYWlsZWQgPSBbXQogICAgIGZvciBjYXNl
X25vZGUgaW4gc3VpdGVfbm9kZS5maW5kX2J5X3RhZygidGVzdGNhc2UiKToKQEAgLTEwNTQsNyAr
MTI3MSwyMiBAQCBkZWYgdGVzdF9yYW5kb21fcmVwb3J0X2xvZ194ZGlzdCh0ZXN0ZGlyKToKICAg
ICBhc3NlcnQgZmFpbGVkID09IFsidGVzdF94WzIyXSJdCiAKIAotZGVmIHRlc3RfcnVuc190d2lj
ZSh0ZXN0ZGlyKToKK0BwYXJhbWV0cml6ZV9mYW1pbGllcworZGVmIHRlc3Rfcm9vdF90ZXN0c3Vp
dGVzX3RhZyh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgorICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X3goKToKKyAgICAg
ICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgXywgZG9tID0gcnVuX2FuZF9wYXJzZShm
YW1pbHk9eHVuaXRfZmFtaWx5KQorICAgIHJvb3QgPSBkb20uZ2V0X3VuaXF1ZV9jaGlsZAorICAg
IGFzc2VydCByb290LnRhZyA9PSAidGVzdHN1aXRlcyIKKyAgICBzdWl0ZV9ub2RlID0gcm9vdC5n
ZXRfdW5pcXVlX2NoaWxkCisgICAgYXNzZXJ0IHN1aXRlX25vZGUudGFnID09ICJ0ZXN0c3VpdGUi
CisKKworZGVmIHRlc3RfcnVuc190d2ljZSh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKICAgICBm
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgZGVmIHRlc3RfcGFz
cygpOgpAQCAtMTA2MiwxNSArMTI5NCwxNSBAQCBkZWYgdGVzdF9ydW5zX3R3aWNlKHRlc3RkaXIp
OgogICAgICIiIgogICAgICkKIAotICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRp
ciwgZiwgZikKLSAgICBhc3NlcnQgIklOVEVSTkFMRVJST1IiIG5vdCBpbiByZXN1bHQuc3Rkb3V0
LnN0cigpCisgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGYsIGYpCisgICAgcmVzdWx0
LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipJTlRFUk5BTEVSUk9SKiIpCiAgICAgZmlyc3QsIHNl
Y29uZCA9IFt4WyJjbGFzc25hbWUiXSBmb3IgeCBpbiBkb20uZmluZF9ieV90YWcoInRlc3RjYXNl
IildCiAgICAgYXNzZXJ0IGZpcnN0ID09IHNlY29uZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChy
ZWFzb249ImhhbmdzIiwgcnVuPUZhbHNlKQotZGVmIHRlc3RfcnVuc190d2ljZV94ZGlzdCh0ZXN0
ZGlyKToKK2RlZiB0ZXN0X3J1bnNfdHdpY2VfeGRpc3QodGVzdGRpciwgcnVuX2FuZF9wYXJzZSk6
CiAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgieGRpc3QiKQorICAgIHRlc3RkaXIubW9ua2V5cGF0
Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiKQogICAgIGYgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBkZWYgdGVzdF9wYXNzKCk6CkBA
IC0xMDc4LDEzICsxMzEwLDEzIEBAIGRlZiB0ZXN0X3J1bnNfdHdpY2VfeGRpc3QodGVzdGRpcik6
CiAgICAgIiIiCiAgICAgKQogCi0gICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGly
LCBmLCAiLS1kaXN0IiwgImVhY2giLCAiLS10eCIsICIyKnBvcGVuIikKLSAgICBhc3NlcnQgIklO
VEVSTkFMRVJST1IiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LCBkb20g
PSBydW5fYW5kX3BhcnNlKGYsICItLWRpc3QiLCAiZWFjaCIsICItLXR4IiwgIjIqcG9wZW4iKQor
ICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqSU5URVJOQUxFUlJPUioiKQogICAg
IGZpcnN0LCBzZWNvbmQgPSBbeFsiY2xhc3NuYW1lIl0gZm9yIHggaW4gZG9tLmZpbmRfYnlfdGFn
KCJ0ZXN0Y2FzZSIpXQogICAgIGFzc2VydCBmaXJzdCA9PSBzZWNvbmQKIAogCi1kZWYgdGVzdF9m
YW5jeV9pdGVtc19yZWdyZXNzaW9uKHRlc3RkaXIpOgorZGVmIHRlc3RfZmFuY3lfaXRlbXNfcmVn
cmVzc2lvbih0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKICAgICAjIGlzc3VlIDEyNTkKICAgICB0
ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgIiIiCkBAIC0xMDk5LDE0ICsxMzMxLDE0IEBA
IGRlZiB0ZXN0X2ZhbmN5X2l0ZW1zX3JlZ3Jlc3Npb24odGVzdGRpcik6CiAgICAgICAgIGNsYXNz
IEZ1bkNvbGxlY3RvcihweXRlc3QuRmlsZSk6CiAgICAgICAgICAgICBkZWYgY29sbGVjdChzZWxm
KToKICAgICAgICAgICAgICAgICByZXR1cm4gWwotICAgICAgICAgICAgICAgICAgICBGdW5JdGVt
KCdhJywgc2VsZiksCi0gICAgICAgICAgICAgICAgICAgIE5vRnVuSXRlbSgnYScsIHNlbGYpLAot
ICAgICAgICAgICAgICAgICAgICBOb0Z1bkl0ZW0oJ2InLCBzZWxmKSwKKyAgICAgICAgICAgICAg
ICAgICAgRnVuSXRlbS5mcm9tX3BhcmVudChuYW1lPSdhJywgcGFyZW50PXNlbGYpLAorICAgICAg
ICAgICAgICAgICAgICBOb0Z1bkl0ZW0uZnJvbV9wYXJlbnQobmFtZT0nYScsIHBhcmVudD1zZWxm
KSwKKyAgICAgICAgICAgICAgICAgICAgTm9GdW5JdGVtLmZyb21fcGFyZW50KG5hbWU9J2InLCBw
YXJlbnQ9c2VsZiksCiAgICAgICAgICAgICAgICAgXQogCiAgICAgICAgIGRlZiBweXRlc3RfY29s
bGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CiAgICAgICAgICAgICBpZiBwYXRoLmNoZWNrKGV4dD0n
LnB5Jyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZ1bkNvbGxlY3RvcihwYXRoLCBwYXJlbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZ1bkNvbGxlY3Rvci5mcm9tX3BhcmVudChmc3BhdGg9
cGF0aCwgcGFyZW50PXBhcmVudCkKICAgICAiIiIKICAgICApCiAKQEAgLTExMTcsNDIgKzEzNDks
MzcgQEAgZGVmIHRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbih0ZXN0ZGlyKToKICAgICAiIiIK
ICAgICApCiAKLSAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgcmVz
dWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCkKIAotICAgIGFzc2VydCAiSU5URVJOQUxFUlJPUiIg
bm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hf
bGluZSgiKklOVEVSTkFMRVJST1IqIikKIAotICAgIGl0ZW1zID0gc29ydGVkKAotICAgICAgICAi
JShjbGFzc25hbWUpcyAlKG5hbWUpcyAlKGZpbGUpcyIgJSB4IGZvciB4IGluIGRvbS5maW5kX2J5
X3RhZygidGVzdGNhc2UiKQotICAgICkKKyAgICBpdGVtcyA9IHNvcnRlZCgiJShjbGFzc25hbWUp
cyAlKG5hbWUpcyIgJSB4IGZvciB4IGluIGRvbS5maW5kX2J5X3RhZygidGVzdGNhc2UiKSkKICAg
ICBpbXBvcnQgcHByaW50CiAKICAgICBwcHJpbnQucHByaW50KGl0ZW1zKQotICAgIGFzc2VydCAo
Ci0gICAgICAgIGl0ZW1zCi0gICAgICAgID09IFsKLSAgICAgICAgICAgIHUiY29uZnRlc3QgYSBj
b25mdGVzdC5weSIsCi0gICAgICAgICAgICB1ImNvbmZ0ZXN0IGEgY29uZnRlc3QucHkiLAotICAg
ICAgICAgICAgdSJjb25mdGVzdCBiIGNvbmZ0ZXN0LnB5IiwKLSAgICAgICAgICAgIHUidGVzdF9m
YW5jeV9pdGVtc19yZWdyZXNzaW9uIGEgdGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uLnB5IiwK
LSAgICAgICAgICAgIHUidGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uIGEgdGVzdF9mYW5jeV9p
dGVtc19yZWdyZXNzaW9uLnB5IiwKLSAgICAgICAgICAgIHUidGVzdF9mYW5jeV9pdGVtc19yZWdy
ZXNzaW9uIGIgdGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uLnB5IiwKLSAgICAgICAgICAgIHUi
dGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uIHRlc3RfcGFzcyIgdSIgdGVzdF9mYW5jeV9pdGVt
c19yZWdyZXNzaW9uLnB5IiwKLSAgICAgICAgXQotICAgICkKLQotCi1kZWYgdGVzdF9nbG9iYWxf
cHJvcGVydGllcyh0ZXN0ZGlyKToKKyAgICBhc3NlcnQgaXRlbXMgPT0gWworICAgICAgICAiY29u
ZnRlc3QgYSIsCisgICAgICAgICJjb25mdGVzdCBhIiwKKyAgICAgICAgImNvbmZ0ZXN0IGIiLAor
ICAgICAgICAidGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uIGEiLAorICAgICAgICAidGVzdF9m
YW5jeV9pdGVtc19yZWdyZXNzaW9uIGEiLAorICAgICAgICAidGVzdF9mYW5jeV9pdGVtc19yZWdy
ZXNzaW9uIGIiLAorICAgICAgICAidGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uIHRlc3RfcGFz
cyIsCisgICAgXQorCisKK0BwYXJhbWV0cml6ZV9mYW1pbGllcworZGVmIHRlc3RfZ2xvYmFsX3By
b3BlcnRpZXModGVzdGRpciwgeHVuaXRfZmFtaWx5KSAtPiBOb25lOgogICAgIHBhdGggPSB0ZXN0
ZGlyLnRtcGRpci5qb2luKCJ0ZXN0X2dsb2JhbF9wcm9wZXJ0aWVzLnhtbCIpCi0gICAgbG9nID0g
TG9nWE1MKHN0cihwYXRoKSwgTm9uZSkKLSAgICBmcm9tIF9weXRlc3QucnVubmVyIGltcG9ydCBC
YXNlUmVwb3J0CisgICAgbG9nID0gTG9nWE1MKHN0cihwYXRoKSwgTm9uZSwgZmFtaWx5PXh1bml0
X2ZhbWlseSkKIAogICAgIGNsYXNzIFJlcG9ydChCYXNlUmVwb3J0KToKLSAgICAgICAgc2VjdGlv
bnMgPSBbXQorICAgICAgICBzZWN0aW9ucyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbc3RyLCBz
dHJdXQogICAgICAgICBub2RlaWQgPSAidGVzdF9ub2RlX2lkIgogCiAgICAgbG9nLnB5dGVzdF9z
ZXNzaW9uc3RhcnQoKQotICAgIGxvZy5hZGRfZ2xvYmFsX3Byb3BlcnR5KCJmb28iLCAxKQotICAg
IGxvZy5hZGRfZ2xvYmFsX3Byb3BlcnR5KCJiYXIiLCAyKQorICAgIGxvZy5hZGRfZ2xvYmFsX3By
b3BlcnR5KCJmb28iLCAiMSIpCisgICAgbG9nLmFkZF9nbG9iYWxfcHJvcGVydHkoImJhciIsICIy
IikKICAgICBsb2cucHl0ZXN0X3Nlc3Npb25maW5pc2goKQogCiAgICAgZG9tID0gbWluaWRvbS5w
YXJzZShzdHIocGF0aCkpCkBAIC0xMTc2LDIwICsxNDAzLDE5IEBAIGRlZiB0ZXN0X2dsb2JhbF9w
cm9wZXJ0aWVzKHRlc3RkaXIpOgogICAgIGFzc2VydCBhY3R1YWwgPT0gZXhwZWN0ZWQKIAogCi1k
ZWYgdGVzdF91cmxfcHJvcGVydHkodGVzdGRpcik6CitkZWYgdGVzdF91cmxfcHJvcGVydHkodGVz
dGRpcikgLT4gTm9uZToKICAgICB0ZXN0X3VybCA9ICJodHRwOi8vd3d3LmdpdGh1Yi5jb20vcHl0
ZXN0LWRldiIKICAgICBwYXRoID0gdGVzdGRpci50bXBkaXIuam9pbigidGVzdF91cmxfcHJvcGVy
dHkueG1sIikKICAgICBsb2cgPSBMb2dYTUwoc3RyKHBhdGgpLCBOb25lKQotICAgIGZyb20gX3B5
dGVzdC5ydW5uZXIgaW1wb3J0IEJhc2VSZXBvcnQKIAogICAgIGNsYXNzIFJlcG9ydChCYXNlUmVw
b3J0KToKICAgICAgICAgbG9uZ3JlcHIgPSAiRm9vQmFyQmF6IgotICAgICAgICBzZWN0aW9ucyA9
IFtdCisgICAgICAgIHNlY3Rpb25zID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIHN0cl1d
CiAgICAgICAgIG5vZGVpZCA9ICJzb21ldGhpbmciCiAgICAgICAgIGxvY2F0aW9uID0gInRlc3Rz
L2ZpbGVuYW1lLnB5IiwgNDIsICJUZXN0Q2xhc3MubWV0aG9kIgogICAgICAgICB1cmwgPSB0ZXN0
X3VybAogCi0gICAgdGVzdF9yZXBvcnQgPSBSZXBvcnQoKQorICAgIHRlc3RfcmVwb3J0ID0gY2Fz
dChUZXN0UmVwb3J0LCBSZXBvcnQoKSkKIAogICAgIGxvZy5weXRlc3Rfc2Vzc2lvbnN0YXJ0KCkK
ICAgICBub2RlX3JlcG9ydGVyID0gbG9nLl9vcGVudGVzdGNhc2UodGVzdF9yZXBvcnQpCkBAIC0x
MjAzLDE1ICsxNDI5LDY1IEBAIGRlZiB0ZXN0X3VybF9wcm9wZXJ0eSh0ZXN0ZGlyKToKICAgICAp
LCAiVGhlIFVSTCBkaWQgbm90IGdldCB3cml0dGVuIHRvIHRoZSB4bWwiCiAKIAorQHBhcmFtZXRy
aXplX2ZhbWlsaWVzCitkZWYgdGVzdF9yZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5KHRlc3RkaXIs
IHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfZnVuYzEocmVjb3JkX3Rlc3RzdWl0ZV9wcm9w
ZXJ0eSk6CisgICAgICAgICAgICByZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5KCJzdGF0cyIsICJh
bGwgZ29vZCIpCisKKyAgICAgICAgZGVmIHRlc3RfZnVuYzIocmVjb3JkX3Rlc3RzdWl0ZV9wcm9w
ZXJ0eSk6CisgICAgICAgICAgICByZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5KCJzdGF0cyIsIDEw
KQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5
PXh1bml0X2ZhbWlseSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgbm9kZSA9IGRv
bS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKKyAgICBwcm9wZXJ0aWVzX25vZGUgPSBu
b2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJwcm9wZXJ0aWVzIikKKyAgICBwMV9ub2RlID0gcHJvcGVy
dGllc19ub2RlLmZpbmRfbnRoX2J5X3RhZygicHJvcGVydHkiLCAwKQorICAgIHAyX25vZGUgPSBw
cm9wZXJ0aWVzX25vZGUuZmluZF9udGhfYnlfdGFnKCJwcm9wZXJ0eSIsIDEpCisgICAgcDFfbm9k
ZS5hc3NlcnRfYXR0cihuYW1lPSJzdGF0cyIsIHZhbHVlPSJhbGwgZ29vZCIpCisgICAgcDJfbm9k
ZS5hc3NlcnRfYXR0cihuYW1lPSJzdGF0cyIsIHZhbHVlPSIxMCIpCisKKworZGVmIHRlc3RfcmVj
b3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eV9qdW5pdF9kaXNhYmxlZCh0ZXN0ZGlyKToKKyAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jMShyZWNv
cmRfdGVzdHN1aXRlX3Byb3BlcnR5KToKKyAgICAgICAgICAgIHJlY29yZF90ZXN0c3VpdGVfcHJv
cGVydHkoInN0YXRzIiwgImFsbCBnb29kIikKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoImp1bml0IiwgW1RydWUsIEZhbHNlXSkKK2RlZiB0ZXN0X3Jl
Y29yZF90ZXN0c3VpdGVfcHJvcGVydHlfdHlwZV9jaGVja2luZyh0ZXN0ZGlyLCBqdW5pdCk6Cisg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfZnVu
YzEocmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSk6CisgICAgICAgICAgICByZWNvcmRfdGVzdHN1
aXRlX3Byb3BlcnR5KDEsIDIpCisgICAgIiIiCisgICAgKQorICAgIGFyZ3MgPSAoIi0tanVuaXR4
bWw9dGVzdHMueG1sIiwpIGlmIGp1bml0IGVsc2UgKCkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgqYXJncykKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIipUeXBlRXJyb3I6IG5hbWUgcGFyYW1ldGVy
IG5lZWRzIHRvIGJlIGEgc3RyaW5nLCBidXQgaW50IGdpdmVuIl0KKyAgICApCisKKwogQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJzdWl0ZV9uYW1lIiwgWyJteV9zdWl0ZSIsICIiXSkKLWRlZiB0
ZXN0X3NldF9zdWl0ZV9uYW1lKHRlc3RkaXIsIHN1aXRlX25hbWUpOgorQHBhcmFtZXRyaXplX2Zh
bWlsaWVzCitkZWYgdGVzdF9zZXRfc3VpdGVfbmFtZSh0ZXN0ZGlyLCBzdWl0ZV9uYW1lLCBydW5f
YW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgIGlmIHN1aXRlX25hbWU6CiAgICAgICAgIHRl
c3RkaXIubWFrZWluaSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgW3B5dGVzdF0KLSAg
ICAgICAgICAgIGp1bml0X3N1aXRlX25hbWU9e30KKyAgICAgICAgICAgIGp1bml0X3N1aXRlX25h
bWU9e3N1aXRlX25hbWV9CisgICAgICAgICAgICBqdW5pdF9mYW1pbHk9e2ZhbWlseX0KICAgICAg
ICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBzdWl0ZV9uYW1lCisgICAgICAgICAgICAg
ICAgc3VpdGVfbmFtZT1zdWl0ZV9uYW1lLCBmYW1pbHk9eHVuaXRfZmFtaWx5CiAgICAgICAgICAg
ICApCiAgICAgICAgICkKICAgICAgICAgZXhwZWN0ZWQgPSBzdWl0ZV9uYW1lCkBAIC0xMjI1LDcg
KzE1MDEsOTggQEAgZGVmIHRlc3Rfc2V0X3N1aXRlX25hbWUodGVzdGRpciwgc3VpdGVfbmFtZSk6
CiAgICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCwgZG9tID0gcnVu
YW5kcGFyc2UodGVzdGRpcikKKyAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5
PXh1bml0X2ZhbWlseSkKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgbm9kZSA9IGRv
bS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICBub2RlLmFzc2VydF9hdHRyKG5h
bWU9ZXhwZWN0ZWQpCisKKworZGVmIHRlc3RfZXNjYXBlZF9za2lwcmVhc29uX2lzc3VlMzUzMyh0
ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAg
ICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIEBweXRlc3QubWFyay5za2lwKHJl
YXNvbj0nMSA8PiAyJykKKyAgICAgICAgZGVmIHRlc3Rfc2tpcCgpOgorICAgICAgICAgICAgcGFz
cworICAgICIiIgorICAgICkKKyAgICBfLCBkb20gPSBydW5fYW5kX3BhcnNlKCkKKyAgICBub2Rl
ID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCisgICAgc25vZGUgPSBub2RlLmZp
bmRfZmlyc3RfYnlfdGFnKCJza2lwcGVkIikKKyAgICBhc3NlcnQgIjEgPD4gMiIgaW4gc25vZGUu
dGV4dAorICAgIHNub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9IjEgPD4gMiIpCisKKworQHBhcmFt
ZXRyaXplX2ZhbWlsaWVzCitkZWYgdGVzdF9sb2dnaW5nX3Bhc3NpbmdfdGVzdHNfZGlzYWJsZWRf
ZG9lc19ub3RfbG9nX3Rlc3Rfb3V0cHV0KAorICAgIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1
bml0X2ZhbWlseQorKToKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAg
ICBbcHl0ZXN0XQorICAgICAgICBqdW5pdF9sb2dfcGFzc2luZ190ZXN0cz1GYWxzZQorICAgICAg
ICBqdW5pdF9sb2dnaW5nPXN5c3RlbS1vdXQKKyAgICAgICAganVuaXRfZmFtaWx5PXtmYW1pbHl9
CisgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGZhbWlseT14dW5pdF9mYW1pbHkKKyAgICAg
ICAgKQorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAg
ICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGltcG9ydCBsb2dnaW5nCisgICAgICAgIGltcG9ydCBz
eXMKKworICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAgICAgICAgICBzeXMuc3Rkb3V0Lndy
aXRlKCdUaGlzIGlzIHN0ZG91dCcpCisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdUaGlz
IGlzIHN0ZGVycicpCisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ2hlbGxvJykKKyAgICAi
IiIKKyAgICApCisgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9m
YW1pbHkpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgIG5vZGUgPSBkb20uZmluZF9m
aXJzdF9ieV90YWcoInRlc3RjYXNlIikKKyAgICBhc3NlcnQgbGVuKG5vZGUuZmluZF9ieV90YWco
InN5c3RlbS1lcnIiKSkgPT0gMAorICAgIGFzc2VydCBsZW4obm9kZS5maW5kX2J5X3RhZygic3lz
dGVtLW91dCIpKSA9PSAwCisKKworQHBhcmFtZXRyaXplX2ZhbWlsaWVzCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoImp1bml0X2xvZ2dpbmciLCBbIm5vIiwgInN5c3RlbS1vdXQiLCAic3lzdGVt
LWVyciJdKQorZGVmIHRlc3RfbG9nZ2luZ19wYXNzaW5nX3Rlc3RzX2Rpc2FibGVkX2xvZ3Nfb3V0
cHV0X2Zvcl9mYWlsaW5nX3Rlc3RfaXNzdWU1NDMwKAorICAgIHRlc3RkaXIsIGp1bml0X2xvZ2dp
bmcsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseQorKToKKyAgICB0ZXN0ZGlyLm1ha2Vpbmko
CisgICAgICAgICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAgICBqdW5pdF9sb2dfcGFzc2lu
Z190ZXN0cz1GYWxzZQorICAgICAgICBqdW5pdF9mYW1pbHk9e2ZhbWlseX0KKyAgICAiIiIuZm9y
bWF0KAorICAgICAgICAgICAgZmFtaWx5PXh1bml0X2ZhbWlseQorICAgICAgICApCisgICAgKQor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRl
c3QKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAg
IGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnaGVsbG8nKQor
ICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0LCBkb20gPSBy
dW5fYW5kX3BhcnNlKAorICAgICAgICAiLW8iLCAianVuaXRfbG9nZ2luZz0lcyIgJSBqdW5pdF9s
b2dnaW5nLCBmYW1pbHk9eHVuaXRfZmFtaWx5CisgICAgKQorICAgIGFzc2VydCByZXN1bHQucmV0
ID09IDEKKyAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCisgICAg
aWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLW91dCI6CisgICAgICAgIGFzc2VydCBsZW4obm9k
ZS5maW5kX2J5X3RhZygic3lzdGVtLWVyciIpKSA9PSAwCisgICAgICAgIGFzc2VydCBsZW4obm9k
ZS5maW5kX2J5X3RhZygic3lzdGVtLW91dCIpKSA9PSAxCisgICAgZWxpZiBqdW5pdF9sb2dnaW5n
ID09ICJzeXN0ZW0tZXJyIjoKKyAgICAgICAgYXNzZXJ0IGxlbihub2RlLmZpbmRfYnlfdGFnKCJz
eXN0ZW0tZXJyIikpID09IDEKKyAgICAgICAgYXNzZXJ0IGxlbihub2RlLmZpbmRfYnlfdGFnKCJz
eXN0ZW0tb3V0IikpID09IDAKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQganVuaXRfbG9nZ2lu
ZyA9PSAibm8iCisgICAgICAgIGFzc2VydCBsZW4obm9kZS5maW5kX2J5X3RhZygic3lzdGVtLWVy
ciIpKSA9PSAwCisgICAgICAgIGFzc2VydCBsZW4obm9kZS5maW5kX2J5X3RhZygic3lzdGVtLW91
dCIpKSA9PSAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbGlua19yZXNv
bHZlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2xpbmtfcmVzb2x2ZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY0M2Y3ZGVkNTY3MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9saW5rX3Jlc29sdmUucHkKQEAgLTAs
MCArMSw4MyBAQAoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lz
CitpbXBvcnQgdGV4dHdyYXAKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIK
K2Zyb20gc3RyaW5nIGltcG9ydCBhc2NpaV9sb3dlcmNhc2UKKworaW1wb3J0IHB5LnBhdGgKKwor
ZnJvbSBfcHl0ZXN0IGltcG9ydCBweXRlc3RlcgorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHN1
YnN0X3BhdGhfd2luZG93cyhmaWxlbmFtZSk6CisgICAgZm9yIGMgaW4gYXNjaWlfbG93ZXJjYXNl
Wzc6XTogICMgQ3JlYXRlIGEgc3Vic3QgZHJpdmUgZnJvbSBILVouCisgICAgICAgIGMgKz0gIjoi
CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjKToKKyAgICAgICAgICAgIGRyaXZlID0g
YworICAgICAgICAgICAgYnJlYWsKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBBc3NlcnRpb25F
cnJvcigiVW5hYmxlIHRvIGZpbmQgc3VpdGFibGUgZHJpdmUgbGV0dGVyIGZvciBzdWJzdC4iKQor
CisgICAgZGlyZWN0b3J5ID0gZmlsZW5hbWUuZGlycGF0aCgpCisgICAgYmFzZW5hbWUgPSBmaWxl
bmFtZS5iYXNlbmFtZQorCisgICAgYXJncyA9IFsic3Vic3QiLCBkcml2ZSwgc3RyKGRpcmVjdG9y
eSldCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGFyZ3MpCisgICAgYXNzZXJ0IG9zLnBhdGgu
ZXhpc3RzKGRyaXZlKQorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSBweS5wYXRoLmxvY2Fs
KGRyaXZlKSAvIGJhc2VuYW1lCisgICAgICAgIHlpZWxkIGZpbGVuYW1lCisgICAgZmluYWxseToK
KyAgICAgICAgYXJncyA9IFsic3Vic3QiLCAiL0QiLCBkcml2ZV0KKyAgICAgICAgc3VicHJvY2Vz
cy5jaGVja19jYWxsKGFyZ3MpCisKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgc3Vic3RfcGF0aF9s
aW51eChmaWxlbmFtZSk6CisgICAgZGlyZWN0b3J5ID0gZmlsZW5hbWUuZGlycGF0aCgpCisgICAg
YmFzZW5hbWUgPSBmaWxlbmFtZS5iYXNlbmFtZQorCisgICAgdGFyZ2V0ID0gZGlyZWN0b3J5IC8g
Ii4uIiAvICJzdWIyIgorICAgIG9zLnN5bWxpbmsoc3RyKGRpcmVjdG9yeSksIHN0cih0YXJnZXQp
LCB0YXJnZXRfaXNfZGlyZWN0b3J5PVRydWUpCisgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZSA9
IHRhcmdldCAvIGJhc2VuYW1lCisgICAgICAgIHlpZWxkIGZpbGVuYW1lCisgICAgZmluYWxseToK
KyAgICAgICAgIyBXZSBkb24ndCBuZWVkIHRvIHVubGluayAoaXQncyBhbGwgaW4gdGhlIHRlbXBk
aXIpLgorICAgICAgICBwYXNzCisKKworZGVmIHRlc3RfbGlua19yZXNvbHZlKHRlc3RkaXI6IHB5
dGVzdGVyLlRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiU2VlOiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5NjUuIiIiCisgICAgc3ViMSA9IHRlc3RkaXIubWtw
eWRpcigic3ViMSIpCisgICAgcCA9IHN1YjEuam9pbigidGVzdF9mb28ucHkiKQorICAgIHAud3Jp
dGUoCisgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIgorICAgICAgICBp
bXBvcnQgcHl0ZXN0CisgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgcmFpc2Ug
QXNzZXJ0aW9uRXJyb3IoKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICkKKworICAgIHN1
YnN0ID0gc3Vic3RfcGF0aF9saW51eAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgor
ICAgICAgICBzdWJzdCA9IHN1YnN0X3BhdGhfd2luZG93cworCisgICAgd2l0aCBzdWJzdChwKSBh
cyBzdWJzdF9wOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIoc3Vic3Rf
cCksICItdiIpCisgICAgICAgICMgaS5lLjogTWFrZSBzdXJlIHRoYXQgdGhlIGVycm9yIGlzIHJl
cG9ydGVkIGFzIGEgcmVsYXRpdmUgcGF0aCwgbm90IGFzIGEKKyAgICAgICAgIyByZXNvbHZlZCBw
YXRoLgorICAgICAgICAjIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81OTY1CisgICAgICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAg
ICAgYXNzZXJ0ICJzdWIxL3Rlc3RfZm9vLnB5IiBub3QgaW4gc3Rkb3V0CisKKyAgICAgICAgIyBp
LmUuOiBFeHBlY3QgZHJpdmUgb24gd2luZG93cyBiZWNhdXNlIHdlIGp1c3QgaGF2ZSBkcml2ZTpm
aWxlbmFtZSwgd2hlcmVhcworICAgICAgICAjIHdlIGV4cGVjdCBhIHJlbGF0aXZlIHBhdGggb24g
TGludXguCisgICAgICAgIGV4cGVjdCA9ICgKKyAgICAgICAgICAgICIqe30qIi5mb3JtYXQoc3Vi
c3RfcCkgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgZWxzZSAiKnN1YjIvdGVzdF9mb28ucHkq
IgorICAgICAgICApCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbZXhwZWN0
XSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tYWluLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi41YjQ1ZWM2YjViZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfbWFpbi5weQpAQCAtMCwwICsxLDI0OCBAQAoraW1wb3J0IGFyZ3BhcnNlCitp
bXBvcnQgb3MKK2ltcG9ydCByZQorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisKK2ltcG9y
dCBweS5wYXRoCisKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4
aXRDb2RlCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBVc2FnZUVycm9yCitmcm9tIF9weXRl
c3QubWFpbiBpbXBvcnQgcmVzb2x2ZV9jb2xsZWN0aW9uX2FyZ3VtZW50Citmcm9tIF9weXRlc3Qu
bWFpbiBpbXBvcnQgdmFsaWRhdGVfYmFzZXRlbXAKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9y
dCBQYXRoCitmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKKworCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoCisgICAgInJldF9leGMiLAorICAgICgKKyAgICAgICAgcHl0ZXN0
LnBhcmFtKChOb25lLCBWYWx1ZUVycm9yKSksCisgICAgICAgIHB5dGVzdC5wYXJhbSgoNDIsIFN5
c3RlbUV4aXQpKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKChGYWxzZSwgU3lzdGVtRXhpdCkpLAor
ICAgICksCispCitkZWYgdGVzdF93cmFwX3Nlc3Npb25fbm90aWZ5X2V4Y2VwdGlvbihyZXRfZXhj
LCB0ZXN0ZGlyKToKKyAgICByZXR1cm5jb2RlLCBleGMgPSByZXRfZXhjCisgICAgYzEgPSB0ZXN0
ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKwor
ICAgICAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydCgpOgorICAgICAgICAgICAgcmFpc2Uge2V4
Y30oImJvb20iKQorCisgICAgICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihleGNyZXByLCBl
eGNpbmZvKToKKyAgICAgICAgICAgIHJldHVybmNvZGUgPSB7cmV0dXJuY29kZSFyfQorICAgICAg
ICAgICAgaWYgcmV0dXJuY29kZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgcHl0ZXN0
LmV4aXQoImV4aXRpbmcgYWZ0ZXIgJXMuLi4iICUgZXhjaW5mby50eXBlbmFtZSwgcmV0dXJuY29k
ZT17cmV0dXJuY29kZSFyfSkKKyAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgcmV0dXJuY29k
ZT1yZXR1cm5jb2RlLCBleGM9ZXhjLl9fbmFtZV9fCisgICAgICAgICkKKyAgICApCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGlmIHJldHVybmNvZGU6CisgICAgICAgIGFz
c2VydCByZXN1bHQucmV0ID09IHJldHVybmNvZGUKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSBFeGl0Q29kZS5JTlRFUk5BTF9FUlJPUgorICAgIGFzc2VydCByZXN1bHQu
c3Rkb3V0LmxpbmVzWzBdID09ICJJTlRFUk5BTEVSUk9SPiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50
IGNhbGwgbGFzdCk6IgorCisgICAgaWYgZXhjID09IFN5c3RlbUV4aXQ6CisgICAgICAgIGFzc2Vy
dCByZXN1bHQuc3Rkb3V0LmxpbmVzWy0zOl0gPT0gWworICAgICAgICAgICAgJ0lOVEVSTkFMRVJS
T1I+ICAgRmlsZSAie30iLCBsaW5lIDQsIGluIHB5dGVzdF9zZXNzaW9uc3RhcnQnLmZvcm1hdChj
MSksCisgICAgICAgICAgICAnSU5URVJOQUxFUlJPUj4gICAgIHJhaXNlIFN5c3RlbUV4aXQoImJv
b20iKScsCisgICAgICAgICAgICAiSU5URVJOQUxFUlJPUj4gU3lzdGVtRXhpdDogYm9vbSIsCisg
ICAgICAgIF0KKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lc1st
MzpdID09IFsKKyAgICAgICAgICAgICdJTlRFUk5BTEVSUk9SPiAgIEZpbGUgInt9IiwgbGluZSA0
LCBpbiBweXRlc3Rfc2Vzc2lvbnN0YXJ0Jy5mb3JtYXQoYzEpLAorICAgICAgICAgICAgJ0lOVEVS
TkFMRVJST1I+ICAgICByYWlzZSBWYWx1ZUVycm9yKCJib29tIiknLAorICAgICAgICAgICAgIklO
VEVSTkFMRVJST1I+IFZhbHVlRXJyb3I6IGJvb20iLAorICAgICAgICBdCisgICAgaWYgcmV0dXJu
Y29kZSBpcyBGYWxzZToKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5zdGRlcnIubGluZXMgPT0gWyJt
YWlubG9vcDogY2F1Z2h0IHVuZXhwZWN0ZWQgU3lzdGVtRXhpdCEiXQorICAgIGVsc2U6CisgICAg
ICAgIGFzc2VydCByZXN1bHQuc3RkZXJyLmxpbmVzID09IFsiRXhpdDogZXhpdGluZyBhZnRlciB7
fS4uLiIuZm9ybWF0KGV4Yy5fX25hbWVfXyldCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJyZXR1cm5jb2RlIiwgKE5vbmUsIDQyKSkKK2RlZiB0ZXN0X3dyYXBfc2Vzc2lvbl9leGl0X3Nl
c3Npb25maW5pc2goCisgICAgcmV0dXJuY29kZTogT3B0aW9uYWxbaW50XSwgdGVzdGRpcjogVGVz
dGRpcgorKSAtPiBOb25lOgorICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAiIiIK
KyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2go
KToKKyAgICAgICAgICAgIHB5dGVzdC5leGl0KG1zZz0iZXhpdF9weXRlc3Rfc2Vzc2lvbmZpbmlz
aCIsIHJldHVybmNvZGU9e3JldHVybmNvZGV9KQorICAgICIiIi5mb3JtYXQoCisgICAgICAgICAg
ICByZXR1cm5jb2RlPXJldHVybmNvZGUKKyAgICAgICAgKQorICAgICkKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgYXNzZXJ0IHJl
c3VsdC5yZXQgPT0gcmV0dXJuY29kZQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAorICAgIGFzc2VydCByZXN1bHQuc3Rk
b3V0LmxpbmVzWy0xXSA9PSAiY29sbGVjdGVkIDAgaXRlbXMiCisgICAgYXNzZXJ0IHJlc3VsdC5z
dGRlcnIubGluZXMgPT0gWyJFeGl0OiBleGl0X3B5dGVzdF9zZXNzaW9uZmluaXNoIl0KKworCitA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImJhc2V0ZW1wIiwgWyJmb28iLCAiZm9vL2JhciJdKQor
ZGVmIHRlc3RfdmFsaWRhdGVfYmFzZXRlbXBfb2sodG1wX3BhdGgsIGJhc2V0ZW1wLCBtb25rZXlw
YXRjaCk6CisgICAgbW9ua2V5cGF0Y2guY2hkaXIoc3RyKHRtcF9wYXRoKSkKKyAgICB2YWxpZGF0
ZV9iYXNldGVtcCh0bXBfcGF0aCAvIGJhc2V0ZW1wKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgiYmFzZXRlbXAiLCBbIiIsICIuIiwgIi4uIl0pCitkZWYgdGVzdF92YWxpZGF0ZV9iYXNl
dGVtcF9mYWlscyh0bXBfcGF0aCwgYmFzZXRlbXAsIG1vbmtleXBhdGNoKToKKyAgICBtb25rZXlw
YXRjaC5jaGRpcihzdHIodG1wX3BhdGgpKQorICAgIG1zZyA9ICJiYXNldGVtcCBtdXN0IG5vdCBi
ZSBlbXB0eSwgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IgYW55IHBhcmVudCBkaXJl
Y3Rvcnkgb2YgaXQiCisgICAgd2l0aCBweXRlc3QucmFpc2VzKGFyZ3BhcnNlLkFyZ3VtZW50VHlw
ZUVycm9yLCBtYXRjaD1tc2cpOgorICAgICAgICBpZiBiYXNldGVtcDoKKyAgICAgICAgICAgIGJh
c2V0ZW1wID0gdG1wX3BhdGggLyBiYXNldGVtcAorICAgICAgICB2YWxpZGF0ZV9iYXNldGVtcChi
YXNldGVtcCkKKworCitkZWYgdGVzdF92YWxpZGF0ZV9iYXNldGVtcF9pbnRlZ3JhdGlvbih0ZXN0
ZGlyKToKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1iYXNldGVtcD0uIikKKyAg
ICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoIipiYXNldGVtcCBtdXN0IG5vdCBiZSoiKQor
CisKK2NsYXNzIFRlc3RSZXNvbHZlQ29sbGVjdGlvbkFyZ3VtZW50OgorICAgIEBweXRlc3QuZml4
dHVyZQorICAgIGRlZiBpbnZvY2F0aW9uX2RpcihzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBw
eS5wYXRoLmxvY2FsOgorICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoc3RyKHRlc3RkaXIu
dG1wZGlyIC8gInNyYyIpKQorICAgICAgICB0ZXN0ZGlyLmNoZGlyKCkKKworICAgICAgICBwa2cg
PSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJzcmMvcGtnIikuZW5zdXJlX2RpcigpCisgICAgICAgIHBr
Zy5qb2luKCJfX2luaXRfXy5weSIpLmVuc3VyZSgpCisgICAgICAgIHBrZy5qb2luKCJ0ZXN0LnB5
IikuZW5zdXJlKCkKKyAgICAgICAgcmV0dXJuIHRlc3RkaXIudG1wZGlyCisKKyAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICBkZWYgaW52b2NhdGlvbl9wYXRoKHNlbGYsIGludm9jYXRpb25fZGlyOiBw
eS5wYXRoLmxvY2FsKSAtPiBQYXRoOgorICAgICAgICByZXR1cm4gUGF0aChzdHIoaW52b2NhdGlv
bl9kaXIpKQorCisgICAgZGVmIHRlc3RfZmlsZShzZWxmLCBpbnZvY2F0aW9uX2RpcjogcHkucGF0
aC5sb2NhbCwgaW52b2NhdGlvbl9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAgICAgICAiIiJGaWxl
IGFuZCBwYXJ0cy4iIiIKKyAgICAgICAgYXNzZXJ0IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVu
dChpbnZvY2F0aW9uX3BhdGgsICJzcmMvcGtnL3Rlc3QucHkiKSA9PSAoCisgICAgICAgICAgICBp
bnZvY2F0aW9uX2RpciAvICJzcmMvcGtnL3Rlc3QucHkiLAorICAgICAgICAgICAgW10sCisgICAg
ICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVudChpbnZvY2F0
aW9uX3BhdGgsICJzcmMvcGtnL3Rlc3QucHk6OiIpID09ICgKKyAgICAgICAgICAgIGludm9jYXRp
b25fZGlyIC8gInNyYy9wa2cvdGVzdC5weSIsCisgICAgICAgICAgICBbIiJdLAorICAgICAgICAp
CisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoCisgICAgICAgICAg
ICBpbnZvY2F0aW9uX3BhdGgsICJzcmMvcGtnL3Rlc3QucHk6OmZvbzo6YmFyIgorICAgICAgICAp
ID09IChpbnZvY2F0aW9uX2RpciAvICJzcmMvcGtnL3Rlc3QucHkiLCBbImZvbyIsICJiYXIiXSkK
KyAgICAgICAgYXNzZXJ0IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVudCgKKyAgICAgICAgICAg
IGludm9jYXRpb25fcGF0aCwgInNyYy9wa2cvdGVzdC5weTo6Zm9vOjpiYXI6OiIKKyAgICAgICAg
KSA9PSAoaW52b2NhdGlvbl9kaXIgLyAic3JjL3BrZy90ZXN0LnB5IiwgWyJmb28iLCAiYmFyIiwg
IiJdKQorCisgICAgZGVmIHRlc3RfZGlyKHNlbGYsIGludm9jYXRpb25fZGlyOiBweS5wYXRoLmxv
Y2FsLCBpbnZvY2F0aW9uX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIkRpcmVjdG9y
eSBhbmQgcGFydHMuIiIiCisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1l
bnQoaW52b2NhdGlvbl9wYXRoLCAic3JjL3BrZyIpID09ICgKKyAgICAgICAgICAgIGludm9jYXRp
b25fZGlyIC8gInNyYy9wa2ciLAorICAgICAgICAgICAgW10sCisgICAgICAgICkKKworICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgICAgICBVc2FnZUVycm9yLCBtYXRjaD1yImRp
cmVjdG9yeSBhcmd1bWVudCBjYW5ub3QgY29udGFpbiA6OiBzZWxlY3Rpb24gcGFydHMiCisgICAg
ICAgICk6CisgICAgICAgICAgICByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoaW52b2NhdGlv
bl9wYXRoLCAic3JjL3BrZzo6IikKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAg
ICAgICAgICBVc2FnZUVycm9yLCBtYXRjaD1yImRpcmVjdG9yeSBhcmd1bWVudCBjYW5ub3QgY29u
dGFpbiA6OiBzZWxlY3Rpb24gcGFydHMiCisgICAgICAgICk6CisgICAgICAgICAgICByZXNvbHZl
X2NvbGxlY3Rpb25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRoLCAic3JjL3BrZzo6Zm9vOjpiYXIi
KQorCisgICAgZGVmIHRlc3RfcHlwYXRoKHNlbGYsIGludm9jYXRpb25fZGlyOiBweS5wYXRoLmxv
Y2FsLCBpbnZvY2F0aW9uX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIkRvdHRlZCBu
YW1lIGFuZCBwYXJ0cy4iIiIKKyAgICAgICAgYXNzZXJ0IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1
bWVudCgKKyAgICAgICAgICAgIGludm9jYXRpb25fcGF0aCwgInBrZy50ZXN0IiwgYXNfcHlwYXRo
PVRydWUKKyAgICAgICAgKSA9PSAoaW52b2NhdGlvbl9kaXIgLyAic3JjL3BrZy90ZXN0LnB5Iiwg
W10pCisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoCisgICAgICAg
ICAgICBpbnZvY2F0aW9uX3BhdGgsICJwa2cudGVzdDo6Zm9vOjpiYXIiLCBhc19weXBhdGg9VHJ1
ZQorICAgICAgICApID09IChpbnZvY2F0aW9uX2RpciAvICJzcmMvcGtnL3Rlc3QucHkiLCBbImZv
byIsICJiYXIiXSkKKyAgICAgICAgYXNzZXJ0IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVudChp
bnZvY2F0aW9uX3BhdGgsICJwa2ciLCBhc19weXBhdGg9VHJ1ZSkgPT0gKAorICAgICAgICAgICAg
aW52b2NhdGlvbl9kaXIgLyAic3JjL3BrZyIsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgKQor
CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAgICAgICAgIFVzYWdlRXJyb3IsIG1h
dGNoPXIicGFja2FnZSBhcmd1bWVudCBjYW5ub3QgY29udGFpbiA6OiBzZWxlY3Rpb24gcGFydHMi
CisgICAgICAgICk6CisgICAgICAgICAgICByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoCisg
ICAgICAgICAgICAgICAgaW52b2NhdGlvbl9wYXRoLCAicGtnOjpmb286OmJhciIsIGFzX3B5cGF0
aD1UcnVlCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9kb2VzX25vdF9leGlzdChzZWxm
LCBpbnZvY2F0aW9uX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIkdpdmVuIGEgZmls
ZS9tb2R1bGUgdGhhdCBkb2VzIG5vdCBleGlzdCByYWlzZXMgVXNhZ2VFcnJvci4iIiIKKyAgICAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKAorICAgICAgICAgICAgVXNhZ2VFcnJvciwgbWF0Y2g9cmUu
ZXNjYXBlKCJmaWxlIG9yIGRpcmVjdG9yeSBub3QgZm91bmQ6IGZvb2JhciIpCisgICAgICAgICk6
CisgICAgICAgICAgICByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRo
LCAiZm9vYmFyIikKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgICAgICBV
c2FnZUVycm9yLAorICAgICAgICAgICAgbWF0Y2g9cmUuZXNjYXBlKAorICAgICAgICAgICAgICAg
ICJtb2R1bGUgb3IgcGFja2FnZSBub3QgZm91bmQ6IGZvb2JhciAobWlzc2luZyBfX2luaXRfXy5w
eT8pIgorICAgICAgICAgICAgKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJlc29sdmVfY29s
bGVjdGlvbl9hcmd1bWVudChpbnZvY2F0aW9uX3BhdGgsICJmb29iYXIiLCBhc19weXBhdGg9VHJ1
ZSkKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX3BhdGhzX2FyZV9yZXNvbHZlZF9jb3JyZWN0bHko
CisgICAgICAgIHNlbGYsIGludm9jYXRpb25fZGlyOiBweS5wYXRoLmxvY2FsLCBpbnZvY2F0aW9u
X3BhdGg6IFBhdGgKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIkFic29sdXRlIHBhdGhzIHJl
c29sdmUgYmFjayB0byBhYnNvbHV0ZSBwYXRocy4iIiIKKyAgICAgICAgZnVsbF9wYXRoID0gc3Ry
KGludm9jYXRpb25fZGlyIC8gInNyYyIpCisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxlY3Rp
b25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRoLCBmdWxsX3BhdGgpID09ICgKKyAgICAgICAgICAg
IHB5LnBhdGgubG9jYWwob3MucGF0aC5hYnNwYXRoKCJzcmMiKSksCisgICAgICAgICAgICBbXSwK
KyAgICAgICAgKQorCisgICAgICAgICMgZW5zdXJlIGZ1bGwgcGF0aHMgZ2l2ZW4gaW4gdGhlIGNv
bW1hbmQtbGluZSB3aXRob3V0IHRoZSBkcml2ZSBsZXR0ZXIgcmVzb2x2ZQorICAgICAgICAjIHRv
IHRoZSBmdWxsIHBhdGggY29ycmVjdGx5ICgjNzYyOCkKKyAgICAgICAgZHJpdmUsIGZ1bGxfcGF0
aF93aXRob3V0X2RyaXZlID0gb3MucGF0aC5zcGxpdGRyaXZlKGZ1bGxfcGF0aCkKKyAgICAgICAg
YXNzZXJ0IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVudCgKKyAgICAgICAgICAgIGludm9jYXRp
b25fcGF0aCwgZnVsbF9wYXRoX3dpdGhvdXRfZHJpdmUKKyAgICAgICAgKSA9PSAocHkucGF0aC5s
b2NhbChvcy5wYXRoLmFic3BhdGgoInNyYyIpKSwgW10pCisKKworZGVmIHRlc3RfbW9kdWxlX2Z1
bGxfcGF0aF93aXRob3V0X2RyaXZlKHRlc3RkaXIpOgorICAgICIiIkNvbGxlY3QgYW5kIHJ1biB0
ZXN0IHVzaW5nIGZ1bGwgcGF0aCBleGNlcHQgZm9yIHRoZSBkcml2ZSBsZXR0ZXIgKCM3NjI4KS4K
KworICAgIFBhc3NpbmcgYSBmdWxsIHBhdGggd2l0aG91dCBhIGRyaXZlIGxldHRlciB3b3VsZCB0
cmlnZ2VyIGEgYnVnIGluIHB5LnBhdGgubG9jYWwKKyAgICB3aGVyZSBpdCB3b3VsZCBrZWVwIHRo
ZSBmdWxsIHBhdGggd2l0aG91dCB0aGUgZHJpdmUgbGV0dGVyIGFyb3VuZCwgaW5zdGVhZCBvZiBy
ZXNvbHZpbmcKKyAgICB0byB0aGUgZnVsbCBwYXRoLCByZXN1bHRpbmcgaW4gZml4dHVyZXMgbm9k
ZSBpZHMgbm90IG1hdGNoaW5nIGFnYWluc3QgdGVzdCBub2RlIGlkcyBjb3JyZWN0bHkuCisgICAg
IiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAqKnsKKyAgICAgICAgICAgICJw
cm9qZWN0L2NvbmZ0ZXN0LnB5IjogIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAor
ICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgICAgIGRlZiBmaXgo
KTogcmV0dXJuIDEKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgfQorICAgICkKKworICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgKip7CisgICAgICAgICAgICAicHJvamVjdC90ZXN0
cy9kdW1teV90ZXN0LnB5IjogIiIiCisgICAgICAgICAgICAgICAgZGVmIHRlc3QoZml4KToKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZpeCA9PSAxCisgICAgICAgICAgICAiIiIKKyAgICAg
ICAgfQorICAgICkKKyAgICBmbiA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInByb2plY3QvdGVzdHMv
ZHVtbXlfdGVzdC5weSIpCisgICAgYXNzZXJ0IGZuLmlzZmlsZSgpCisKKyAgICBkcml2ZSwgcGF0
aCA9IG9zLnBhdGguc3BsaXRkcml2ZShzdHIoZm4pKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QocGF0aCwgIi12IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisg
ICAgICAgIFsKKyAgICAgICAgICAgIG9zLnBhdGguam9pbigicHJvamVjdCIsICJ0ZXN0cyIsICJk
dW1teV90ZXN0LnB5IikgKyAiOjp0ZXN0IFBBU1NFRCAqIiwKKyAgICAgICAgICAgICIqIDEgcGFz
c2VkIGluICoiLAorICAgICAgICBdCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X21hcmsucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbWFyay5weQppbmRl
eCBlMmU3MzY5ZGM3OTguLjVkNWUwY2Y0MmY3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X21hcmsucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21hcmsucHkK
QEAgLTEsMTQ0ICsxLDQ4IEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9y
dCBtb2NrCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKIGltcG9ydCBweXRlc3QKLWZyb20g
X3B5dGVzdC5tYXJrIGltcG9ydCAoCi0gICAgTWFya0dlbmVyYXRvciBhcyBNYXJrLAotICAgIFBh
cmFtZXRlclNldCwKLSAgICB0cmFuc2Zlcl9tYXJrZXJzLAotICAgIEVNUFRZX1BBUkFNRVRFUlNF
VF9PUFRJT04sCi0pCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBf
cHl0ZXN0Lm1hcmsgaW1wb3J0IE1hcmtHZW5lcmF0b3IgYXMgTWFyaworZnJvbSBfcHl0ZXN0Lm1h
cmsuc3RydWN0dXJlcyBpbXBvcnQgRU1QVFlfUEFSQU1FVEVSU0VUX09QVElPTgorZnJvbSBfcHl0
ZXN0Lm5vZGVzIGltcG9ydCBDb2xsZWN0b3IKIGZyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgTm9k
ZQogCi1pZ25vcmVfbWFya2luZm8gPSBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygKLSAgICAi
aWdub3JlOk1hcmtJbmZvIG9iamVjdHM6X3B5dGVzdC5kZXByZWNhdGVkLlJlbW92ZWRJblB5dGVz
dDRXYXJuaW5nIgotKQotCi0KLWNsYXNzIFRlc3RNYXJrKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVz
dF9tYXJraW5mb19yZXByKHNlbGYpOgotICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQg
TWFya0luZm8sIE1hcmsKLQotICAgICAgICBtID0gTWFya0luZm8uZm9yX21hcmsoTWFyaygiaGVs
bG8iLCAoMSwgMiksIHt9KSkKLSAgICAgICAgcmVwcihtKQogCitjbGFzcyBUZXN0TWFyazoKICAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImF0dHIiLCBbIm1hcmsiLCAicGFyYW0iXSkKICAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1vZHVsZW5hbWUiLCBbInB5LnRlc3QiLCAicHl0
ZXN0Il0pCi0gICAgZGVmIHRlc3RfcHl0ZXN0X2V4aXN0c19pbl9uYW1lc3BhY2VfYWxsKHNlbGYs
IGF0dHIsIG1vZHVsZW5hbWUpOgorICAgIGRlZiB0ZXN0X3B5dGVzdF9leGlzdHNfaW5fbmFtZXNw
YWNlX2FsbChzZWxmLCBhdHRyOiBzdHIsIG1vZHVsZW5hbWU6IHN0cikgLT4gTm9uZToKICAgICAg
ICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kdWxlbmFtZV0KLSAgICAgICAgYXNzZXJ0IGF0dHIg
aW4gbW9kdWxlLl9fYWxsX18KKyAgICAgICAgYXNzZXJ0IGF0dHIgaW4gbW9kdWxlLl9fYWxsX18g
ICMgdHlwZTogaWdub3JlCiAKLSAgICBkZWYgdGVzdF9weXRlc3RfbWFya19ub3RjYWxsYWJsZShz
ZWxmKToKKyAgICBkZWYgdGVzdF9weXRlc3RfbWFya19ub3RjYWxsYWJsZShzZWxmKSAtPiBOb25l
OgogICAgICAgICBtYXJrID0gTWFyaygpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoKEF0dHJpYnV0
ZUVycm9yLCBUeXBlRXJyb3IpLCBtYXJrKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlw
ZUVycm9yKToKKyAgICAgICAgICAgIG1hcmsoKSAgIyB0eXBlOiBpZ25vcmVbb3BlcmF0b3JdCiAK
ICAgICBkZWYgdGVzdF9tYXJrX3dpdGhfcGFyYW0oc2VsZik6Ci0KICAgICAgICAgZGVmIHNvbWVf
ZnVuY3Rpb24oYWJjKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBjbGFzcyBTb21lQ2xh
c3Mob2JqZWN0KToKKyAgICAgICAgY2xhc3MgU29tZUNsYXNzOgogICAgICAgICAgICAgcGFzcwog
Ci0gICAgICAgIGFzc2VydCBweXRlc3QubWFyay5mdW4oc29tZV9mdW5jdGlvbikgaXMgc29tZV9m
dW5jdGlvbgotICAgICAgICBhc3NlcnQgcHl0ZXN0Lm1hcmsuZnVuLndpdGhfYXJncyhzb21lX2Z1
bmN0aW9uKSBpcyBub3Qgc29tZV9mdW5jdGlvbgorICAgICAgICBhc3NlcnQgcHl0ZXN0Lm1hcmsu
Zm9vKHNvbWVfZnVuY3Rpb24pIGlzIHNvbWVfZnVuY3Rpb24KKyAgICAgICAgbWFya2VkX3dpdGhf
YXJncyA9IHB5dGVzdC5tYXJrLmZvby53aXRoX2FyZ3Moc29tZV9mdW5jdGlvbikKKyAgICAgICAg
YXNzZXJ0IG1hcmtlZF93aXRoX2FyZ3MgaXMgbm90IHNvbWVfZnVuY3Rpb24gICMgdHlwZTogaWdu
b3JlW2NvbXBhcmlzb24tb3ZlcmxhcF0KIAotICAgICAgICBhc3NlcnQgcHl0ZXN0Lm1hcmsuZnVu
KFNvbWVDbGFzcykgaXMgU29tZUNsYXNzCi0gICAgICAgIGFzc2VydCBweXRlc3QubWFyay5mdW4u
d2l0aF9hcmdzKFNvbWVDbGFzcykgaXMgbm90IFNvbWVDbGFzcworICAgICAgICBhc3NlcnQgcHl0
ZXN0Lm1hcmsuZm9vKFNvbWVDbGFzcykgaXMgU29tZUNsYXNzCisgICAgICAgIGFzc2VydCBweXRl
c3QubWFyay5mb28ud2l0aF9hcmdzKFNvbWVDbGFzcykgaXMgbm90IFNvbWVDbGFzcyAgIyB0eXBl
OiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQogCiAgICAgZGVmIHRlc3RfcHl0ZXN0X21hcmtf
bmFtZV9zdGFydHNfd2l0aF91bmRlcnNjb3JlKHNlbGYpOgogICAgICAgICBtYXJrID0gTWFyaygp
Ci0gICAgICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1hcmssICJf
c29tZV9uYW1lIikKLQotICAgIGRlZiB0ZXN0X3B5dGVzdF9tYXJrX2JhcmUoc2VsZik6Ci0gICAg
ICAgIG1hcmsgPSBNYXJrKCkKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yKToKKyAgICAgICAgICAgIG1hcmsuX3NvbWVfbmFtZQogCi0gICAgICAgIGRlZiBmKCk6Ci0g
ICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgbWFyay5oZWxsbyhmKQotICAgICAgICBhc3NlcnQg
Zi5oZWxsbwotCi0gICAgQGlnbm9yZV9tYXJraW5mbwotICAgIGRlZiB0ZXN0X3B5dGVzdF9tYXJr
X2tleXdvcmRzKHNlbGYpOgotICAgICAgICBtYXJrID0gTWFyaygpCiAKLSAgICAgICAgZGVmIGYo
KToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBtYXJrLndvcmxkKHg9MywgeT00KShmKQot
ICAgICAgICBhc3NlcnQgZi53b3JsZAotICAgICAgICBhc3NlcnQgZi53b3JsZC5rd2FyZ3NbIngi
XSA9PSAzCi0gICAgICAgIGFzc2VydCBmLndvcmxkLmt3YXJnc1sieSJdID09IDQKLQotICAgIEBp
Z25vcmVfbWFya2luZm8KLSAgICBkZWYgdGVzdF9hcHBseV9tdWx0aXBsZV9hbmRfbWVyZ2Uoc2Vs
Zik6Ci0gICAgICAgIG1hcmsgPSBNYXJrKCkKLQotICAgICAgICBkZWYgZigpOgotICAgICAgICAg
ICAgcGFzcwotCi0gICAgICAgIG1hcmsud29ybGQKLSAgICAgICAgbWFyay53b3JsZCh4PTMpKGYp
Ci0gICAgICAgIGFzc2VydCBmLndvcmxkLmt3YXJnc1sieCJdID09IDMKLSAgICAgICAgbWFyay53
b3JsZCh5PTQpKGYpCi0gICAgICAgIGFzc2VydCBmLndvcmxkLmt3YXJnc1sieCJdID09IDMKLSAg
ICAgICAgYXNzZXJ0IGYud29ybGQua3dhcmdzWyJ5Il0gPT0gNAotICAgICAgICBtYXJrLndvcmxk
KHk9MSkoZikKLSAgICAgICAgYXNzZXJ0IGYud29ybGQua3dhcmdzWyJ5Il0gPT0gMQotICAgICAg
ICBhc3NlcnQgbGVuKGYud29ybGQuYXJncykgPT0gMAotCi0gICAgQGlnbm9yZV9tYXJraW5mbwot
ICAgIGRlZiB0ZXN0X3B5dGVzdF9tYXJrX3Bvc2l0aW9uYWwoc2VsZik6Ci0gICAgICAgIG1hcmsg
PSBNYXJrKCkKLQotICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAg
IG1hcmsud29ybGQoImhlbGxvIikoZikKLSAgICAgICAgYXNzZXJ0IGYud29ybGQuYXJnc1swXSA9
PSAiaGVsbG8iCi0gICAgICAgIG1hcmsud29ybGQoIndvcmxkIikoZikKLQotICAgIEBpZ25vcmVf
bWFya2luZm8KLSAgICBkZWYgdGVzdF9weXRlc3RfbWFya19wb3NpdGlvbmFsX2Z1bmNfYW5kX2tl
eXdvcmQoc2VsZik6Ci0gICAgICAgIG1hcmsgPSBNYXJrKCkKLQotICAgICAgICBkZWYgZigpOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCi0KLSAgICAgICAgbSA9IG1hcmsud29ybGQoZiwg
b21lZ2E9ImhlbGxvIikKLQotICAgICAgICBkZWYgZygpOgotICAgICAgICAgICAgcGFzcwotCi0g
ICAgICAgIGFzc2VydCBtKGcpID09IGcKLSAgICAgICAgYXNzZXJ0IGcud29ybGQuYXJnc1swXSBp
cyBmCi0gICAgICAgIGFzc2VydCBnLndvcmxkLmt3YXJnc1sib21lZ2EiXSA9PSAiaGVsbG8iCi0K
LSAgICBAaWdub3JlX21hcmtpbmZvCi0gICAgZGVmIHRlc3RfcHl0ZXN0X21hcmtfcmV1c2Uoc2Vs
Zik6Ci0gICAgICAgIG1hcmsgPSBNYXJrKCkKLQotICAgICAgICBkZWYgZigpOgotICAgICAgICAg
ICAgcGFzcwotCi0gICAgICAgIHcgPSBtYXJrLnNvbWUKLSAgICAgICAgdygiaGVsbG8iLCByZWFz
b249IjEyMyIpKGYpCi0gICAgICAgIGFzc2VydCBmLnNvbWUuYXJnc1swXSA9PSAiaGVsbG8iCi0g
ICAgICAgIGFzc2VydCBmLnNvbWUua3dhcmdzWyJyZWFzb24iXSA9PSAiMTIzIgotCi0gICAgICAg
IGRlZiBnKCk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgdygid29ybGQiLCByZWFzb24y
PSI0NTYiKShnKQotICAgICAgICBhc3NlcnQgZy5zb21lLmFyZ3NbMF0gPT0gIndvcmxkIgotICAg
ICAgICBhc3NlcnQgInJlYXNvbiIgbm90IGluIGcuc29tZS5rd2FyZ3MKLSAgICAgICAgYXNzZXJ0
IGcuc29tZS5rd2FyZ3NbInJlYXNvbjIiXSA9PSAiNDU2IgotCi0KLWRlZiB0ZXN0X21hcmtlZF9j
bGFzc19ydW5fdHdpY2UodGVzdGRpciwgcmVxdWVzdCk6CitkZWYgdGVzdF9tYXJrZWRfY2xhc3Nf
cnVuX3R3aWNlKHRlc3RkaXIpOgogICAgICIiIlRlc3QgZmFpbHMgZmlsZSBpcyBydW4gdHdpY2Ug
dGhhdCBjb250YWlucyBtYXJrZWQgY2xhc3MuCiAgICAgU2VlIGlzc3VlIzY4My4KICAgICAiIiIK
QEAgLTE2OSw3ICs3Myw3IEBAIGRlZiB0ZXN0X2luaV9tYXJrZXJzKHRlc3RkaXIpOgogICAgICAg
ICAiIiIKICAgICAgICAgZGVmIHRlc3RfbWFya2VycyhweXRlc3Rjb25maWcpOgogICAgICAgICAg
ICAgbWFya2VycyA9IHB5dGVzdGNvbmZpZy5nZXRpbmkoIm1hcmtlcnMiKQotICAgICAgICAgICAg
cHJpbnQgKG1hcmtlcnMpCisgICAgICAgICAgICBwcmludChtYXJrZXJzKQogICAgICAgICAgICAg
YXNzZXJ0IGxlbihtYXJrZXJzKSA+PSAyCiAgICAgICAgICAgICBhc3NlcnQgbWFya2Vyc1swXS5z
dGFydHN3aXRoKCJhMToiKQogICAgICAgICAgICAgYXNzZXJ0IG1hcmtlcnNbMV0uc3RhcnRzd2l0
aCgiYTI6IikKQEAgLTIxMiw3ICsxMTYsNyBAQCBkZWYgdGVzdF9pbmlfbWFya2Vyc193aGl0ZXNw
YWNlKHRlc3RkaXIpOgogICAgICAgICAgICAgYXNzZXJ0IFRydWUKICAgICAiIiIKICAgICApCi0g
ICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItLXN0cmljdCIsICItbSIsICJhMSIpCisgICAg
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItLXN0cmljdC1tYXJrZXJzIiwgIi1tIiwgImExIikK
ICAgICByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAogCkBAIC0yMzIsNyArMTM2LDcgQEAg
ZGVmIHRlc3RfbWFya2VyX3dpdGhvdXRfZGVzY3JpcHRpb24odGVzdGRpcik6CiAgICAgKQogICAg
IGZ0ZGlyID0gdGVzdGRpci5ta2RpcigiZnQxX2R1bW15IikKICAgICB0ZXN0ZGlyLnRtcGRpci5q
b2luKCJjb25mdGVzdC5weSIpLm1vdmUoZnRkaXIuam9pbigiY29uZnRlc3QucHkiKSkKLSAgICBy
ZWMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCItLXN0cmljdCIpCisgICAgcmVjID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tc3RyaWN0LW1hcmtlcnMiKQogICAgIHJlYy5hc3NlcnRfb3V0
Y29tZXMoKQogCiAKQEAgLTI3Niw3ICsxODAsOCBAQCBkZWYgdGVzdF9tYXJrX29uX3BzZXVkb19m
dW5jdGlvbih0ZXN0ZGlyKToKICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAog
Ci1kZWYgdGVzdF9zdHJpY3RfcHJvaGliaXRzX3VucmVnaXN0ZXJlZF9tYXJrZXJzKHRlc3RkaXIp
OgorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJvcHRpb25fbmFtZSIsIFsiLS1zdHJpY3QtbWFy
a2VycyIsICItLXN0cmljdCJdKQorZGVmIHRlc3Rfc3RyaWN0X3Byb2hpYml0c191bnJlZ2lzdGVy
ZWRfbWFya2Vycyh0ZXN0ZGlyLCBvcHRpb25fbmFtZSk6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjg1LDIxICsxOTAsMjUg
QEAgZGVmIHRlc3Rfc3RyaWN0X3Byb2hpYml0c191bnJlZ2lzdGVyZWRfbWFya2Vycyh0ZXN0ZGly
KToKICAgICAgICAgICAgIHBhc3MKICAgICAiIiIKICAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tc3RyaWN0IikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChv
cHRpb25fbmFtZSkKICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCi0gICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKnVucmVnaXN0ZXJlZG1hcmsqbm90KnJlZ2lzdGVyZWQqIl0pCisg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIid1bnJlZ2lzdGVyZWRt
YXJrJyBub3QgZm91bmQgaW4gYG1hcmtlcnNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIl0KKyAgICAp
CiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAotICAgICJzcGVjIiwKKyAgICAoImV4cHIi
LCAiZXhwZWN0ZWRfcGFzc2VkIiksCiAgICAgWwotICAgICAgICAoInh5eiIsICgidGVzdF9vbmUi
LCkpLAotICAgICAgICAoInh5eiBhbmQgeHl6MiIsICgpKSwKLSAgICAgICAgKCJ4eXoyIiwgKCJ0
ZXN0X3R3byIsKSksCi0gICAgICAgICgieHl6IG9yIHh5ejIiLCAoInRlc3Rfb25lIiwgInRlc3Rf
dHdvIikpLAorICAgICAgICAoInh5eiIsIFsidGVzdF9vbmUiXSksCisgICAgICAgICgiKCgoICB4
eXopKSAgKSIsIFsidGVzdF9vbmUiXSksCisgICAgICAgICgibm90IG5vdCB4eXoiLCBbInRlc3Rf
b25lIl0pLAorICAgICAgICAoInh5eiBhbmQgeHl6MiIsIFtdKSwKKyAgICAgICAgKCJ4eXoyIiwg
WyJ0ZXN0X3R3byJdKSwKKyAgICAgICAgKCJ4eXogb3IgeHl6MiIsIFsidGVzdF9vbmUiLCAidGVz
dF90d28iXSksCiAgICAgXSwKICkKLWRlZiB0ZXN0X21hcmtfb3B0aW9uKHNwZWMsIHRlc3RkaXIp
OgorZGVmIHRlc3RfbWFya19vcHRpb24oZXhwcjogc3RyLCBleHBlY3RlZF9wYXNzZWQ6IHN0ciwg
dGVzdGRpcikgLT4gTm9uZToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgog
ICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0zMTEsMTggKzIyMCwxNyBAQCBkZWYgdGVzdF9tYXJr
X29wdGlvbihzcGVjLCB0ZXN0ZGlyKToKICAgICAgICAgICAgIHBhc3MKICAgICAiIiIKICAgICAp
Ci0gICAgb3B0LCBwYXNzZWRfcmVzdWx0ID0gc3BlYwotICAgIHJlYyA9IHRlc3RkaXIuaW5saW5l
X3J1bigiLW0iLCBvcHQpCisgICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItbSIsIGV4cHIp
CiAgICAgcGFzc2VkLCBza2lwcGVkLCBmYWlsID0gcmVjLmxpc3RvdXRjb21lcygpCiAgICAgcGFz
c2VkID0gW3gubm9kZWlkLnNwbGl0KCI6OiIpWy0xXSBmb3IgeCBpbiBwYXNzZWRdCi0gICAgYXNz
ZXJ0IGxlbihwYXNzZWQpID09IGxlbihwYXNzZWRfcmVzdWx0KQotICAgIGFzc2VydCBsaXN0KHBh
c3NlZCkgPT0gbGlzdChwYXNzZWRfcmVzdWx0KQorICAgIGFzc2VydCBwYXNzZWQgPT0gZXhwZWN0
ZWRfcGFzc2VkCiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAotICAgICJzcGVjIiwgWygi
aW50ZXJmYWNlIiwgKCJ0ZXN0X2ludGVyZmFjZSIsKSksICgibm90IGludGVyZmFjZSIsICgidGVz
dF9ub2ludGVyIiwpKV0KKyAgICAoImV4cHIiLCAiZXhwZWN0ZWRfcGFzc2VkIiksCisgICAgWygi
aW50ZXJmYWNlIiwgWyJ0ZXN0X2ludGVyZmFjZSJdKSwgKCJub3QgaW50ZXJmYWNlIiwgWyJ0ZXN0
X25vaW50ZXIiXSldLAogKQotZGVmIHRlc3RfbWFya19vcHRpb25fY3VzdG9tKHNwZWMsIHRlc3Rk
aXIpOgorZGVmIHRlc3RfbWFya19vcHRpb25fY3VzdG9tKGV4cHI6IHN0ciwgZXhwZWN0ZWRfcGFz
c2VkOiBzdHIsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAg
ICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0zNDAsMjQgKzI0OCwyNSBAQCBk
ZWYgdGVzdF9tYXJrX29wdGlvbl9jdXN0b20oc3BlYywgdGVzdGRpcik6CiAgICAgICAgICAgICBw
YXNzCiAgICAgIiIiCiAgICAgKQotICAgIG9wdCwgcGFzc2VkX3Jlc3VsdCA9IHNwZWMKLSAgICBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1tIiwgb3B0KQorICAgIHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bigiLW0iLCBleHByKQogICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbCA9IHJlYy5saXN0
b3V0Y29tZXMoKQogICAgIHBhc3NlZCA9IFt4Lm5vZGVpZC5zcGxpdCgiOjoiKVstMV0gZm9yIHgg
aW4gcGFzc2VkXQotICAgIGFzc2VydCBsZW4ocGFzc2VkKSA9PSBsZW4ocGFzc2VkX3Jlc3VsdCkK
LSAgICBhc3NlcnQgbGlzdChwYXNzZWQpID09IGxpc3QocGFzc2VkX3Jlc3VsdCkKKyAgICBhc3Nl
cnQgcGFzc2VkID09IGV4cGVjdGVkX3Bhc3NlZAogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgKLSAgICAic3BlYyIsCisgICAgKCJleHByIiwgImV4cGVjdGVkX3Bhc3NlZCIpLAogICAgIFsK
LSAgICAgICAgKCJpbnRlcmZhY2UiLCAoInRlc3RfaW50ZXJmYWNlIiwpKSwKLSAgICAgICAgKCJu
b3QgaW50ZXJmYWNlIiwgKCJ0ZXN0X25vaW50ZXIiLCAidGVzdF9wYXNzIikpLAotICAgICAgICAo
InBhc3MiLCAoInRlc3RfcGFzcyIsKSksCi0gICAgICAgICgibm90IHBhc3MiLCAoInRlc3RfaW50
ZXJmYWNlIiwgInRlc3Rfbm9pbnRlciIpKSwKKyAgICAgICAgKCJpbnRlcmZhY2UiLCBbInRlc3Rf
aW50ZXJmYWNlIl0pLAorICAgICAgICAoIm5vdCBpbnRlcmZhY2UiLCBbInRlc3Rfbm9pbnRlciIs
ICJ0ZXN0X3Bhc3MiLCAidGVzdF8xIiwgInRlc3RfMiJdKSwKKyAgICAgICAgKCJwYXNzIiwgWyJ0
ZXN0X3Bhc3MiXSksCisgICAgICAgICgibm90IHBhc3MiLCBbInRlc3RfaW50ZXJmYWNlIiwgInRl
c3Rfbm9pbnRlciIsICJ0ZXN0XzEiLCAidGVzdF8yIl0pLAorICAgICAgICAoIm5vdCBub3Qgbm90
IChwYXNzKSIsIFsidGVzdF9pbnRlcmZhY2UiLCAidGVzdF9ub2ludGVyIiwgInRlc3RfMSIsICJ0
ZXN0XzIiXSksCisgICAgICAgICgiMSBvciAyIiwgWyJ0ZXN0XzEiLCAidGVzdF8yIl0pLAorICAg
ICAgICAoIm5vdCAoMSBvciAyKSIsIFsidGVzdF9pbnRlcmZhY2UiLCAidGVzdF9ub2ludGVyIiwg
InRlc3RfcGFzcyJdKSwKICAgICBdLAogKQotZGVmIHRlc3Rfa2V5d29yZF9vcHRpb25fY3VzdG9t
KHNwZWMsIHRlc3RkaXIpOgorZGVmIHRlc3Rfa2V5d29yZF9vcHRpb25fY3VzdG9tKGV4cHI6IHN0
ciwgZXhwZWN0ZWRfcGFzc2VkOiBzdHIsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgZGVmIHRlc3RfaW50ZXJmYWNlKCk6CkBA
IC0zNjYsMjUgKzI3NSwzNCBAQCBkZWYgdGVzdF9rZXl3b3JkX29wdGlvbl9jdXN0b20oc3BlYywg
dGVzdGRpcik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKToKICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgcGFzcwor
ICAgICAgICBkZWYgdGVzdF8yKCk6CisgICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAgICAgKQot
ICAgIG9wdCwgcGFzc2VkX3Jlc3VsdCA9IHNwZWMKLSAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9y
dW4oIi1rIiwgb3B0KQorICAgIHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLWsiLCBleHByKQog
ICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbCA9IHJlYy5saXN0b3V0Y29tZXMoKQogICAgIHBhc3Nl
ZCA9IFt4Lm5vZGVpZC5zcGxpdCgiOjoiKVstMV0gZm9yIHggaW4gcGFzc2VkXQotICAgIGFzc2Vy
dCBsZW4ocGFzc2VkKSA9PSBsZW4ocGFzc2VkX3Jlc3VsdCkKLSAgICBhc3NlcnQgbGlzdChwYXNz
ZWQpID09IGxpc3QocGFzc2VkX3Jlc3VsdCkKKyAgICBhc3NlcnQgcGFzc2VkID09IGV4cGVjdGVk
X3Bhc3NlZAorCisKK2RlZiB0ZXN0X2tleXdvcmRfb3B0aW9uX2NvbnNpZGVyc19tYXJrKHRlc3Rk
aXIpOgorICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJtYXJrcy9tYXJrc19jb25zaWRlcmVkX2tl
eXdvcmRzIikKKyAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1rIiwgImZvbyIpCisgICAg
cGFzc2VkID0gcmVjLmxpc3RvdXRjb21lcygpWzBdCisgICAgYXNzZXJ0IGxlbihwYXNzZWQpID09
IDEKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCi0gICAgInNwZWMiLAorICAgICgiZXhw
ciIsICJleHBlY3RlZF9wYXNzZWQiKSwKICAgICBbCi0gICAgICAgICgiTm9uZSIsICgidGVzdF9m
dW5jW05vbmVdIiwpKSwKLSAgICAgICAgKCIxLjMiLCAoInRlc3RfZnVuY1sxLjNdIiwpKSwKLSAg
ICAgICAgKCIyLTMiLCAoInRlc3RfZnVuY1syLTNdIiwpKSwKKyAgICAgICAgKCJOb25lIiwgWyJ0
ZXN0X2Z1bmNbTm9uZV0iXSksCisgICAgICAgICgiWzEuM10iLCBbInRlc3RfZnVuY1sxLjNdIl0p
LAorICAgICAgICAoIjItMyIsIFsidGVzdF9mdW5jWzItM10iXSksCiAgICAgXSwKICkKLWRlZiB0
ZXN0X2tleXdvcmRfb3B0aW9uX3BhcmFtZXRyaXplKHNwZWMsIHRlc3RkaXIpOgorZGVmIHRlc3Rf
a2V5d29yZF9vcHRpb25fcGFyYW1ldHJpemUoZXhwcjogc3RyLCBleHBlY3RlZF9wYXNzZWQ6IHN0
ciwgdGVzdGRpcikgLT4gTm9uZToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIi
IgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0zOTMsNDEgKzMxMSw2NyBAQCBkZWYgdGVzdF9r
ZXl3b3JkX29wdGlvbl9wYXJhbWV0cml6ZShzcGVjLCB0ZXN0ZGlyKToKICAgICAgICAgICAgIHBh
c3MKICAgICAiIiIKICAgICApCi0gICAgb3B0LCBwYXNzZWRfcmVzdWx0ID0gc3BlYwotICAgIHJl
YyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLWsiLCBvcHQpCisgICAgcmVjID0gdGVzdGRpci5pbmxp
bmVfcnVuKCItayIsIGV4cHIpCiAgICAgcGFzc2VkLCBza2lwcGVkLCBmYWlsID0gcmVjLmxpc3Rv
dXRjb21lcygpCiAgICAgcGFzc2VkID0gW3gubm9kZWlkLnNwbGl0KCI6OiIpWy0xXSBmb3IgeCBp
biBwYXNzZWRdCi0gICAgYXNzZXJ0IGxlbihwYXNzZWQpID09IGxlbihwYXNzZWRfcmVzdWx0KQot
ICAgIGFzc2VydCBsaXN0KHBhc3NlZCkgPT0gbGlzdChwYXNzZWRfcmVzdWx0KQorICAgIGFzc2Vy
dCBwYXNzZWQgPT0gZXhwZWN0ZWRfcGFzc2VkCisKKworZGVmIHRlc3RfcGFyYW1ldHJpemVfd2l0
aF9tb2R1bGUodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIK
KyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImFyZyIsIFtweXRlc3QsXSkKKyAgICAgICAgZGVmIHRlc3RfZnVuYyhhcmcpOgorICAgICAgICAg
ICAgcGFzcworICAgICIiIgorICAgICkKKyAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQor
ICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbCA9IHJlYy5saXN0b3V0Y29tZXMoKQorICAgIGV4cGVj
dGVkX2lkID0gInRlc3RfZnVuY1siICsgcHl0ZXN0Ll9fbmFtZV9fICsgIl0iCisgICAgYXNzZXJ0
IHBhc3NlZFswXS5ub2RlaWQuc3BsaXQoIjo6IilbLTFdID09IGV4cGVjdGVkX2lkCiAKIAogQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKAotICAgICJzcGVjIiwKKyAgICAoImV4cHIiLCAiZXhwZWN0
ZWRfZXJyb3IiKSwKICAgICBbCiAgICAgICAgICgKLSAgICAgICAgICAgICJmb28gb3IgaW1wb3J0
IiwKLSAgICAgICAgICAgICJFUlJPUjogUHl0aG9uIGtleXdvcmQgJ2ltcG9ydCcgbm90IGFjY2Vw
dGVkIGluIGV4cHJlc3Npb25zIHBhc3NlZCB0byAnLWsnIiwKKyAgICAgICAgICAgICJmb28gb3Ii
LAorICAgICAgICAgICAgImF0IGNvbHVtbiA3OiBleHBlY3RlZCBub3QgT1IgbGVmdCBwYXJlbnRo
ZXNpcyBPUiBpZGVudGlmaWVyOyBnb3QgZW5kIG9mIGlucHV0IiwKKyAgICAgICAgKSwKKyAgICAg
ICAgKAorICAgICAgICAgICAgImZvbyBvciBvciIsCisgICAgICAgICAgICAiYXQgY29sdW1uIDg6
IGV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBvciIs
CisgICAgICAgICksCisgICAgICAgICgiKGZvbyIsICJhdCBjb2x1bW4gNTogZXhwZWN0ZWQgcmln
aHQgcGFyZW50aGVzaXM7IGdvdCBlbmQgb2YgaW5wdXQiLCksCisgICAgICAgICgiZm9vIGJhciIs
ICJhdCBjb2x1bW4gNTogZXhwZWN0ZWQgZW5kIG9mIGlucHV0OyBnb3QgaWRlbnRpZmllciIsKSwK
KyAgICAgICAgKAorICAgICAgICAgICAgIm9yIG9yIiwKKyAgICAgICAgICAgICJhdCBjb2x1bW4g
MTogZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVzaXMgT1IgaWRlbnRpZmllcjsgZ290IG9y
IiwKKyAgICAgICAgKSwKKyAgICAgICAgKAorICAgICAgICAgICAgIm5vdCBvciIsCisgICAgICAg
ICAgICAiYXQgY29sdW1uIDU6IGV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlk
ZW50aWZpZXI7IGdvdCBvciIsCiAgICAgICAgICksCi0gICAgICAgICgiZm9vIG9yIiwgIkVSUk9S
OiBXcm9uZyBleHByZXNzaW9uIHBhc3NlZCB0byAnLWsnOiBmb28gb3IiKSwKICAgICBdLAogKQot
ZGVmIHRlc3Rfa2V5d29yZF9vcHRpb25fd3JvbmdfYXJndW1lbnRzKHNwZWMsIHRlc3RkaXIsIGNh
cHN5cyk6CitkZWYgdGVzdF9rZXl3b3JkX29wdGlvbl93cm9uZ19hcmd1bWVudHMoCisgICAgZXhw
cjogc3RyLCBleHBlY3RlZF9lcnJvcjogc3RyLCB0ZXN0ZGlyLCBjYXBzeXMKKykgLT4gTm9uZToK
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHRl
c3RfZnVuYyhhcmcpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgKQot
ICAgIG9wdCwgZXhwZWN0ZWRfcmVzdWx0ID0gc3BlYwotICAgIHRlc3RkaXIuaW5saW5lX3J1bigi
LWsiLCBvcHQpCi0gICAgb3V0ID0gY2Fwc3lzLnJlYWRvdXRlcnIoKS5lcnIKLSAgICBhc3NlcnQg
ZXhwZWN0ZWRfcmVzdWx0IGluIG91dAorICAgIHRlc3RkaXIuaW5saW5lX3J1bigiLWsiLCBleHBy
KQorICAgIGVyciA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkuZXJyCisgICAgYXNzZXJ0IGV4cGVjdGVk
X2Vycm9yIGluIGVycgogCiAKIGRlZiB0ZXN0X3BhcmFtZXRyaXplZF9jb2xsZWN0ZWRfZnJvbV9j
b21tYW5kX2xpbmUodGVzdGRpcik6Ci0gICAgIiIiUGFyYW1ldHJpemVkIHRlc3Qgbm90IGNvbGxl
Y3RlZCBpZiB0ZXN0IG5hbWVkIHNwZWNpZmllZAotICAgICAgIGluIGNvbW1hbmQgbGluZSBpc3N1
ZSM2NDkuCi0gICAgIiIiCisgICAgIiIiUGFyYW1ldHJpemVkIHRlc3Qgbm90IGNvbGxlY3RlZCBp
ZiB0ZXN0IG5hbWVkIHNwZWNpZmllZCBpbiBjb21tYW5kCisgICAgbGluZSBpc3N1ZSM2NDkuIiIi
CiAgICAgcHlfZmlsZSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAg
IGltcG9ydCBweXRlc3QKQEAgLTQ1Niw4ICs0MDAsMTAgQEAgZGVmIHRlc3RfcGFyYW1ldHJpemVk
X2NvbGxlY3Rfd2l0aF93cm9uZ19hcmdzKHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KHB5X2ZpbGUpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAg
ICAgICBbCi0gICAgICAgICAgICAnRSAgIFZhbHVlRXJyb3I6IEluICJwYXJhbWV0cml6ZSIgdGhl
IG51bWJlciBvZiB2YWx1ZXMgKCgxLCAyLCAzKSkgJwotICAgICAgICAgICAgIm11c3QgYmUgZXF1
YWwgdG8gdGhlIG51bWJlciBvZiBuYW1lcyAoWydmb28nLCAnYmFyJ10pIgorICAgICAgICAgICAg
J3Rlc3RfcGFyYW1ldHJpemVkX2NvbGxlY3Rfd2l0aF93cm9uZ19hcmdzLnB5Ojp0ZXN0X2Z1bmM6
IGluICJwYXJhbWV0cml6ZSIgdGhlIG51bWJlciBvZiBuYW1lcyAoMik6JywKKyAgICAgICAgICAg
ICIgIFsnZm9vJywgJ2JhciddIiwKKyAgICAgICAgICAgICJtdXN0IGJlIGVxdWFsIHRvIHRoZSBu
dW1iZXIgb2YgdmFsdWVzICgzKToiLAorICAgICAgICAgICAgIiAgKDEsIDIsIDMpIiwKICAgICAg
ICAgXQogICAgICkKIApAQCAtNDgyLDExOCArNDI4LDI5IEBAIGRlZiB0ZXN0X3BhcmFtZXRyaXpl
ZF93aXRoX2t3YXJncyh0ZXN0ZGlyKToKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKIAot
Y2xhc3MgVGVzdEZ1bmN0aW9uYWwob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X21hcmtfcGVyX2Z1
bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAot
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBA
cHl0ZXN0Lm1hcmsuaGVsbG8KLSAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKCk6Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0IGhhc2F0dHIodGVzdF9oZWxsbywgJ2hlbGxvJykKLSAgICAgICAgIiIi
Ci0gICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKLSAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQotCi0gICAgZGVm
IHRlc3RfbWFya19wZXJfbW9kdWxlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBpdGVtID0gdGVz
dGRpci5nZXRpdGVtKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
Ci0gICAgICAgICAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsuaGVsbG8KLSAgICAgICAgICAg
IGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIiIgotICAg
ICAgICApCi0gICAgICAgIGtleXdvcmRzID0gaXRlbS5rZXl3b3JkcwotICAgICAgICBhc3NlcnQg
ImhlbGxvIiBpbiBrZXl3b3JkcwotCi0gICAgZGVmIHRlc3RfbWFya2xpc3RfcGVyX2NsYXNzKHNl
bGYsIHRlc3RkaXIpOgotICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBjbGFzcyBUZXN0
Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgICAgICBweXRlc3RtYXJrID0gW3B5dGVzdC5tYXJr
LmhlbGxvLCBweXRlc3QubWFyay53b3JsZF0KLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9mdW5j
KHNlbGYpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgVGVzdENsYXNzLnRlc3RfZnVuYy5o
ZWxsbwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgVGVzdENsYXNzLnRlc3RfZnVuYy53b3Js
ZAotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBrZXl3b3JkcyA9IGl0ZW0ua2V5d29y
ZHMKLSAgICAgICAgYXNzZXJ0ICJoZWxsbyIgaW4ga2V5d29yZHMKLQotICAgIGRlZiB0ZXN0X21h
cmtsaXN0X3Blcl9tb2R1bGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGl0ZW0gPSB0ZXN0ZGly
LmdldGl0ZW0oCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAg
ICAgICAgICAgIHB5dGVzdG1hcmsgPSBbcHl0ZXN0Lm1hcmsuaGVsbG8sIHB5dGVzdC5tYXJrLndv
cmxkXQotICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAg
ICAgZGVmIHRlc3RfZnVuYyhzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IFRlc3RD
bGFzcy50ZXN0X2Z1bmMuaGVsbG8KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IFRlc3RDbGFz
cy50ZXN0X2Z1bmMud29ybGQKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAga2V5d29y
ZHMgPSBpdGVtLmtleXdvcmRzCi0gICAgICAgIGFzc2VydCAiaGVsbG8iIGluIGtleXdvcmRzCi0g
ICAgICAgIGFzc2VydCAid29ybGQiIGluIGtleXdvcmRzCitkZWYgdGVzdF9wYXJhbWV0cml6ZV9p
dGVyYXRvcih0ZXN0ZGlyKToKKyAgICAiIiJgcGFyYW1ldHJpemVgIHNob3VsZCB3b3JrIHdpdGgg
Z2VuZXJhdG9ycyAoIzUzNTQpLiIiIgorICAgIHB5X2ZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICIiIlwKKyAgICAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgZGVmIHRlc3RfbWFy
a19wZXJfY2xhc3NfZGVjb3JhdG9yKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBpdGVtID0gdGVz
dGRpci5nZXRpdGVtKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
Ci0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuaGVsbG8KLSAgICAgICAgICAgIGNsYXNzIFRlc3RD
bGFzcyhvYmplY3QpOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc2VsZik6Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydCBUZXN0Q2xhc3MudGVzdF9mdW5jLmhlbGxvCi0gICAgICAg
ICIiIgotICAgICAgICApCi0gICAgICAgIGtleXdvcmRzID0gaXRlbS5rZXl3b3JkcwotICAgICAg
ICBhc3NlcnQgImhlbGxvIiBpbiBrZXl3b3JkcworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAg
ICAgICB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICB5aWVsZCAzCiAK
LSAgICBkZWYgdGVzdF9tYXJrX3Blcl9jbGFzc19kZWNvcmF0b3JfcGx1c19leGlzdGluZ19kZWMo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0oCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5oZWxsbwotICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAg
ICAgICAgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJrLndvcmxkCi0gICAgICAgICAgICAgICAg
ZGVmIHRlc3RfZnVuYyhzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IFRlc3RDbGFz
cy50ZXN0X2Z1bmMuaGVsbG8KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IFRlc3RDbGFzcy50
ZXN0X2Z1bmMud29ybGQKKyAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdhJywgZ2Vu
KCkpCisgICAgICAgIGRlZiB0ZXN0KGEpOgorICAgICAgICAgICAgYXNzZXJ0IGEgPj0gMQogICAg
ICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBrZXl3b3JkcyA9IGl0ZW0ua2V5d29yZHMKLSAg
ICAgICAgYXNzZXJ0ICJoZWxsbyIgaW4ga2V5d29yZHMKLSAgICAgICAgYXNzZXJ0ICJ3b3JsZCIg
aW4ga2V5d29yZHMKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocHlfZmls
ZSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgIyBzaG91bGQgbm90IHNraXAgYW55
IHRlc3RzCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjMgcGFzc2VkKiJdKQog
Ci0gICAgQGlnbm9yZV9tYXJraW5mbwotICAgIGRlZiB0ZXN0X21lcmdpbmdfbWFya2VycyhzZWxm
LCB0ZXN0ZGlyKToKLSAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAg
ICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgcHl0ZXN0bWFyayA9
IHB5dGVzdC5tYXJrLmhlbGxvKCJwb3MxIiwgeD0xLCB5PTIpCi0gICAgICAgICAgICBjbGFzcyBU
ZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgICAgICAjIGNsYXNzbGV2ZWwgb3ZlcnJpZGVz
IG1vZHVsZSBsZXZlbAotICAgICAgICAgICAgICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay5o
ZWxsbyh4PTMpCi0gICAgICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmhlbGxvKCJwb3MwIiwgej00
KQotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc2VsZik6Ci0gICAgICAgICAgICAgICAg
ICAgIHBhc3MKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgaXRlbXMsIHJlYyA9IHRl
c3RkaXIuaW5saW5lX2dlbml0ZW1zKHApCi0gICAgICAgIGl0ZW0sID0gaXRlbXMKLSAgICAgICAg
a2V5d29yZHMgPSBpdGVtLmtleXdvcmRzCi0gICAgICAgIG1hcmtlciA9IGtleXdvcmRzWyJoZWxs
byJdCi0gICAgICAgIGFzc2VydCBtYXJrZXIuYXJncyA9PSAoInBvczAiLCAicG9zMSIpCi0gICAg
ICAgIGFzc2VydCBtYXJrZXIua3dhcmdzID09IHsieCI6IDEsICJ5IjogMiwgInoiOiA0fQotCi0g
ICAgICAgICMgdGVzdCB0aGUgbmV3IF9faXRlcl9fIGludGVyZmFjZQotICAgICAgICB2YWx1ZXMg
PSBsaXN0KG1hcmtlcikKLSAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDMKLSAgICAgICAg
YXNzZXJ0IHZhbHVlc1swXS5hcmdzID09ICgicG9zMCIsKQotICAgICAgICBhc3NlcnQgdmFsdWVz
WzFdLmFyZ3MgPT0gKCkKLSAgICAgICAgYXNzZXJ0IHZhbHVlc1syXS5hcmdzID09ICgicG9zMSIs
KQogCitjbGFzcyBUZXN0RnVuY3Rpb25hbDoKICAgICBkZWYgdGVzdF9tZXJnaW5nX21hcmtlcnNf
ZGVlcChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIyBpc3N1ZSAxOTkgLSBwcm9wYWdhdGUgbWFy
a2VycyBpbnRvIG5lc3RlZCBjbGFzc2VzCiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CkBAIC02MDQsNyArNDYxLDcgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBkZWYgdGVzdF9iKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICBhc3NlcnQg
VHJ1ZQogICAgICAgICAgICAgICAgIGNsYXNzIFRlc3RDKG9iamVjdCk6Ci0gICAgICAgICAgICAg
ICAgICAgICMgdGhpcyBvbmUgZGlkbnQgZ2V0IG1hcmtlZAorICAgICAgICAgICAgICAgICAgICAj
IHRoaXMgb25lIGRpZG4ndCBnZXQgbWFya2VkCiAgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0
X2Qoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQogICAgICAgICAi
IiIKQEAgLTYzMyw4ICs0OTAsOCBAQCBjbGFzcyBUZXN0RnVuY3Rpb25hbChvYmplY3QpOgogICAg
ICAgICBpdGVtcywgcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMocCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbWFya2VycyhpdGVtcywgdGVzdF9mb289KCJhIiwgImIiKSwgdGVzdF9iYXI9KCJh
IiwpKQogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlNTY4CiAgICAgZGVmIHRlc3RfbWFya19zaG91
bGRfbm90X3Bhc3NfdG9fc2llYmxpbmdfY2xhc3Moc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIi
IiM1NjgiIiIKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIi
IgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNjU2LDEyICs1MTMsNyBAQCBjbGFzcyBU
ZXN0RnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICBpdGVtcywgcmVjID0gdGVzdGRpci5pbmxp
bmVfZ2VuaXRlbXMocCkKICAgICAgICAgYmFzZV9pdGVtLCBzdWJfaXRlbSwgc3ViX2l0ZW1fb3Ro
ZXIgPSBpdGVtcwogICAgICAgICBwcmludChpdGVtcywgW3gubm9kZWlkIGZvciB4IGluIGl0ZW1z
XSkKLSAgICAgICAgIyBsZWdhY3kgYXBpIHNtZWFycwotICAgICAgICBhc3NlcnQgaGFzYXR0cihi
YXNlX2l0ZW0ub2JqLCAiYiIpCi0gICAgICAgIGFzc2VydCBoYXNhdHRyKHN1Yl9pdGVtX290aGVy
Lm9iaiwgImIiKQotICAgICAgICBhc3NlcnQgaGFzYXR0cihzdWJfaXRlbS5vYmosICJiIikKLQot
ICAgICAgICAjIG5ldyBhcGkgc2VyZWdhdGVzCisgICAgICAgICMgbmV3IGFwaSBzZWdyZWdhdGVz
CiAgICAgICAgIGFzc2VydCBub3QgbGlzdChiYXNlX2l0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9ImIi
KSkKICAgICAgICAgYXNzZXJ0IG5vdCBsaXN0KHN1Yl9pdGVtX290aGVyLml0ZXJfbWFya2Vycyhu
YW1lPSJiIikpCiAgICAgICAgIGFzc2VydCBsaXN0KHN1Yl9pdGVtLml0ZXJfbWFya2VycyhuYW1l
PSJiIikpCkBAIC02OTcsMTAgKzU0OSwxMCBAQCBjbGFzcyBUZXN0RnVuY3Rpb25hbChvYmplY3Qp
OgogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmMobG9jYXRpb249ImNsYXNzIikKICAgICAgICAg
ICAgIGNsYXNzIFRlc3Q6CiAgICAgICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmMobG9jYXRpb249
ImZ1bmN0aW9uIikKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9oYXNfb3duKCk6CisgICAgICAg
ICAgICAgICAgZGVmIHRlc3RfaGFzX293bihzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcGFz
cwogCi0gICAgICAgICAgICAgICAgZGVmIHRlc3RfaGFzX2luaGVyaXRlZCgpOgorICAgICAgICAg
ICAgICAgIGRlZiB0ZXN0X2hhc19pbmhlcml0ZWQoc2VsZik6CiAgICAgICAgICAgICAgICAgICAg
IHBhc3MKIAogICAgICAgICAiIiIKQEAgLTc0NiwyNiArNTk4LDYgQEAgY2xhc3MgVGVzdEZ1bmN0
aW9uYWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAg
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJrZXl3b3JkOiAqaGVsbG8qIl0pCiAK
LSAgICBAaWdub3JlX21hcmtpbmZvCi0gICAgZGVmIHRlc3RfbWVyZ2luZ19tYXJrZXJzX3R3b19m
dW5jdGlvbnMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAg
IEBweXRlc3QubWFyay5oZWxsbygicG9zMSIsIHo9NCkKLSAgICAgICAgICAgIEBweXRlc3QubWFy
ay5oZWxsbygicG9zMCIsIHo9MykKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGl0ZW1zLCBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9nZW5pdGVtcyhwKQotICAgICAgICBpdGVtLCA9IGl0ZW1zCi0g
ICAgICAgIGtleXdvcmRzID0gaXRlbS5rZXl3b3JkcwotICAgICAgICBtYXJrZXIgPSBrZXl3b3Jk
c1siaGVsbG8iXQotICAgICAgICB2YWx1ZXMgPSBsaXN0KG1hcmtlcikKLSAgICAgICAgYXNzZXJ0
IGxlbih2YWx1ZXMpID09IDIKLSAgICAgICAgYXNzZXJ0IHZhbHVlc1swXS5hcmdzID09ICgicG9z
MCIsKQotICAgICAgICBhc3NlcnQgdmFsdWVzWzFdLmFyZ3MgPT0gKCJwb3MxIiwpCi0KICAgICBk
ZWYgdGVzdF9ub19tYXJrZXJfbWF0Y2hfb25fdW5tYXJrZWRfbmFtZXMoc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTgw
Nyw3ICs2MzksNiBAQCBjbGFzcyBUZXN0RnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShw
YXNzZWQ9MSkKIAotICAgIEBpZ25vcmVfbWFya2luZm8KICAgICBkZWYgdGVzdF9rZXl3b3JkX2Fk
ZGVkX2Zvcl9zZXNzaW9uKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25m
dGVzdCgKICAgICAgICAgICAgICIiIgpAQCAtODI3LDcgKzY1OCw3IEBAIGNsYXNzIFRlc3RGdW5j
dGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0ICJtYXJrMiIgaW4gcmVxdWVz
dC5rZXl3b3JkcwogICAgICAgICAgICAgICAgIGFzc2VydCAibWFyazMiIGluIHJlcXVlc3Qua2V5
d29yZHMKICAgICAgICAgICAgICAgICBhc3NlcnQgMTAgbm90IGluIHJlcXVlc3Qua2V5d29yZHMK
LSAgICAgICAgICAgICAgICBtYXJrZXIgPSByZXF1ZXN0Lm5vZGUuZ2V0X21hcmtlcigibWFyazEi
KQorICAgICAgICAgICAgICAgIG1hcmtlciA9IHJlcXVlc3Qubm9kZS5nZXRfY2xvc2VzdF9tYXJr
ZXIoIm1hcmsxIikKICAgICAgICAgICAgICAgICBhc3NlcnQgbWFya2VyLm5hbWUgPT0gIm1hcmsx
IgogICAgICAgICAgICAgICAgIGFzc2VydCBtYXJrZXIuYXJncyA9PSAoKQogICAgICAgICAgICAg
ICAgIGFzc2VydCBtYXJrZXIua3dhcmdzID09IHt9CkBAIC04MzcsMjUgKzY2OCwyMCBAQCBjbGFz
cyBUZXN0RnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShw
YXNzZWQ9MSkKIAogICAgIGRlZiBhc3NlcnRfbWFya2VycyhzZWxmLCBpdGVtcywgKipleHBlY3Rl
ZCk6Ci0gICAgICAgICIiImFzc2VydCB0aGF0IGdpdmVuIGl0ZW1zIGhhdmUgZXhwZWN0ZWQgbWFy
a2VyIG5hbWVzIGFwcGxpZWQgdG8gdGhlbS4KLSAgICAgICAgZXhwZWN0ZWQgc2hvdWxkIGJlIGEg
ZGljdCBvZiAoaXRlbSBuYW1lIC0+IHNlcSBvZiBleHBlY3RlZCBtYXJrZXIgbmFtZXMpCisgICAg
ICAgICIiIkFzc2VydCB0aGF0IGdpdmVuIGl0ZW1zIGhhdmUgZXhwZWN0ZWQgbWFya2VyIG5hbWVz
IGFwcGxpZWQgdG8gdGhlbS4KKyAgICAgICAgZXhwZWN0ZWQgc2hvdWxkIGJlIGEgZGljdCBvZiAo
aXRlbSBuYW1lIC0+IHNlcSBvZiBleHBlY3RlZCBtYXJrZXIgbmFtZXMpLgogCi0gICAgICAgIC4u
IG5vdGU6OiB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIGBgdGVzdGRpcmBgIGlmIHByb3ZlbiB0byBi
ZSB1c2VmdWwKKyAgICAgICAgTm90ZTogdGhpcyBjb3VsZCBiZSBtb3ZlZCB0byBgYHRlc3RkaXJg
YCBpZiBwcm92ZW4gdG8gYmUgdXNlZnVsCiAgICAgICAgIHRvIG90aGVyIG1vZHVsZXMuCiAgICAg
ICAgICIiIgotICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgTWFya0luZm8KLQogICAg
ICAgICBpdGVtcyA9IHt4Lm5hbWU6IHggZm9yIHggaW4gaXRlbXN9CiAgICAgICAgIGZvciBuYW1l
LCBleHBlY3RlZF9tYXJrZXJzIGluIGV4cGVjdGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICBtYXJr
ZXJzID0gaXRlbXNbbmFtZV0ua2V5d29yZHMuX21hcmtlcnMKLSAgICAgICAgICAgIG1hcmtlcl9u
YW1lcyA9IHsKLSAgICAgICAgICAgICAgICBuYW1lIGZvciAobmFtZSwgdikgaW4gbWFya2Vycy5p
dGVtcygpIGlmIGlzaW5zdGFuY2UodiwgTWFya0luZm8pCi0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhc3NlcnQgbWFya2VyX25hbWVzID09IHNldChleHBlY3RlZF9tYXJrZXJzKQorICAgICAg
ICAgICAgbWFya2VycyA9IHttLm5hbWUgZm9yIG0gaW4gaXRlbXNbbmFtZV0uaXRlcl9tYXJrZXJz
KCl9CisgICAgICAgICAgICBhc3NlcnQgbWFya2VycyA9PSBzZXQoZXhwZWN0ZWRfbWFya2VycykK
IAotICAgIEBweXRlc3QubWFyay5pc3N1ZTE1NDAKICAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2Fy
bmluZ3MoImlnbm9yZSIpCiAgICAgZGVmIHRlc3RfbWFya19mcm9tX3BhcmFtZXRlcnMoc2VsZiwg
dGVzdGRpcik6CisgICAgICAgICIiIiMxNTQwIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtODc4LDkg
KzcwNCwzOCBAQCBjbGFzcyBUZXN0RnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXByZWMg
PSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShza2lw
cGVkPTEpCiAKKyAgICBkZWYgdGVzdF9yZWV2YWx1YXRlX2R5bmFtaWNfZXhwcihzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgIiIiIzczNjAiIiIKKyAgICAgICAgcHlfZmlsZTEgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X3JlZXZhbHVhdGVfZHluYW1pY19leHByMT0iIiIK
KyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAotY2xhc3MgVGVzdEtleXdvcmRTZWxlY3Rpb24o
b2JqZWN0KToKKyAgICAgICAgICAgIHNraXAgPSBUcnVlCiAKKyAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5za2lwaWYoInNraXAiKQorICAgICAgICAgICAgZGVmIHRlc3Rfc2hvdWxkX3NraXAoKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAg
ICAgICBweV9maWxlMiA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgIHRlc3RfcmVl
dmFsdWF0ZV9keW5hbWljX2V4cHIyPSIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisg
ICAgICAgICAgICBza2lwID0gRmFsc2UKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnNraXBp
Zigic2tpcCIpCisgICAgICAgICAgICBkZWYgdGVzdF9zaG91bGRfbm90X3NraXAoKToKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgKQorCisgICAgICAg
IGZpbGVfbmFtZTEgPSBvcy5wYXRoLmJhc2VuYW1lKHB5X2ZpbGUxLnN0cnBhdGgpCisgICAgICAg
IGZpbGVfbmFtZTIgPSBvcy5wYXRoLmJhc2VuYW1lKHB5X2ZpbGUyLnN0cnBhdGgpCisgICAgICAg
IHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bihmaWxlX25hbWUxLCBmaWxlX25hbWUyKQorICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSwgc2tpcHBlZD0xKQorCisKK2NsYXNz
IFRlc3RLZXl3b3JkU2VsZWN0aW9uOgogICAgIGRlZiB0ZXN0X3NlbGVjdF9zaW1wbGUoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIGZpbGVfdGVzdCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgpAQCAtOTg4LDEwICs4NDMsMTIgQEAgY2xhc3MgVGVzdEtleXdvcmRTZWxlY3Rp
b24ob2JqZWN0KToKICAgICAgICAgcGFzc2VkLCBza2lwcGVkLCBmYWlsZWQgPSByZXByZWMuY291
bnRvdXRjb21lcygpCiAgICAgICAgIGFzc2VydCBwYXNzZWQgKyBza2lwcGVkICsgZmFpbGVkID09
IDAKIAotICAgIGRlZiB0ZXN0X25vX21hZ2ljX3ZhbHVlcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJrZXl3b3JkIiwgWyJfXyIsICIrIiwg
Ii4uIl0sCisgICAgKQorICAgIGRlZiB0ZXN0X25vX21hZ2ljX3ZhbHVlcyhzZWxmLCB0ZXN0ZGly
LCBrZXl3b3JkOiBzdHIpIC0+IE5vbmU6CiAgICAgICAgICIiIk1ha2Ugc3VyZSB0aGUgdGVzdHMg
ZG8gbm90IG1hdGNoIG9uIG1hZ2ljIHZhbHVlcywKLSAgICAgICAgbm8gZG91YmxlIHVuZGVyc2Nv
cmVkIHZhbHVlcywgbGlrZSAnX19kaWN0X18nLAotICAgICAgICBhbmQgbm8gaW5zdGFuY2UgdmFs
dWVzLCBsaWtlICcoKScuCisgICAgICAgIG5vIGRvdWJsZSB1bmRlcnNjb3JlZCB2YWx1ZXMsIGxp
a2UgJ19fZGljdF9fJyBhbmQgJysnLgogICAgICAgICAiIiIKICAgICAgICAgcCA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtOTk5LDYyICs4NTYsNDMgQEAgY2xhc3Mg
VGVzdEtleXdvcmRTZWxlY3Rpb24ob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKIAot
ICAgICAgICBkZWYgYXNzZXJ0X3Rlc3RfaXNfbm90X3NlbGVjdGVkKGtleXdvcmQpOgotICAgICAg
ICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItayIsIGtleXdvcmQsIHApCi0gICAg
ICAgICAgICBwYXNzZWQsIHNraXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5jb3VudG91dGNvbWVzKCkK
LSAgICAgICAgICAgIGRsaXN0ID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3RfZGVzZWxlY3RlZCIp
Ci0gICAgICAgICAgICBhc3NlcnQgcGFzc2VkICsgc2tpcHBlZCArIGZhaWxlZCA9PSAwCi0gICAg
ICAgICAgICBkZXNlbGVjdGVkX3Rlc3RzID0gZGxpc3RbMF0uaXRlbXMKLSAgICAgICAgICAgIGFz
c2VydCBsZW4oZGVzZWxlY3RlZF90ZXN0cykgPT0gMQotCi0gICAgICAgIGFzc2VydF90ZXN0X2lz
X25vdF9zZWxlY3RlZCgiX18iKQotICAgICAgICBhc3NlcnRfdGVzdF9pc19ub3Rfc2VsZWN0ZWQo
IigpIikKLQotCi1AcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCi0gICAgImFyZ3ZhbCwgZXhwZWN0
ZWQiLAotICAgIFsKLSAgICAgICAgKAotICAgICAgICAgICAgcHl0ZXN0Lm1hcmsuc2tpcCgpKCgx
LCAyKSksCi0gICAgICAgICAgICBQYXJhbWV0ZXJTZXQodmFsdWVzPSgxLCAyKSwgbWFya3M9W3B5
dGVzdC5tYXJrLnNraXBdLCBpZD1Ob25lKSwKLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAg
ICAgICAgcHl0ZXN0Lm1hcmsueGZhaWwocHl0ZXN0Lm1hcmsuc2tpcCgpKCgxLCAyKSkpLAotICAg
ICAgICAgICAgUGFyYW1ldGVyU2V0KAotICAgICAgICAgICAgICAgIHZhbHVlcz0oMSwgMiksIG1h
cmtzPVtweXRlc3QubWFyay54ZmFpbCwgcHl0ZXN0Lm1hcmsuc2tpcF0sIGlkPU5vbmUKLSAgICAg
ICAgICAgICksCi0gICAgICAgICksCi0gICAgXSwKLSkKLUBweXRlc3QubWFyay5maWx0ZXJ3YXJu
aW5ncygiaWdub3JlIikKLWRlZiB0ZXN0X3BhcmFtZXRlcnNldF9leHRyYWN0ZnJvbShhcmd2YWws
IGV4cGVjdGVkKToKLSAgICBleHRyYWN0ZWQgPSBQYXJhbWV0ZXJTZXQuZXh0cmFjdF9mcm9tKGFy
Z3ZhbCkKLSAgICBhc3NlcnQgZXh0cmFjdGVkID09IGV4cGVjdGVkCi0KLQotZGVmIHRlc3RfbGVn
YWN5X3RyYW5zZmVyKCk6Ci0KLSAgICBjbGFzcyBGYWtlTW9kdWxlKG9iamVjdCk6Ci0gICAgICAg
IHB5dGVzdG1hcmsgPSBbXQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1r
Iiwga2V5d29yZCwgcCkKKyAgICAgICAgcGFzc2VkLCBza2lwcGVkLCBmYWlsZWQgPSByZXByZWMu
Y291bnRvdXRjb21lcygpCisgICAgICAgIGRsaXN0ID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3Rf
ZGVzZWxlY3RlZCIpCisgICAgICAgIGFzc2VydCBwYXNzZWQgKyBza2lwcGVkICsgZmFpbGVkID09
IDAKKyAgICAgICAgZGVzZWxlY3RlZF90ZXN0cyA9IGRsaXN0WzBdLml0ZW1zCisgICAgICAgIGFz
c2VydCBsZW4oZGVzZWxlY3RlZF90ZXN0cykgPT0gMQogCi0gICAgY2xhc3MgRmFrZUNsYXNzKG9i
amVjdCk6Ci0gICAgICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay5ub2Z1bgorICAgIGRlZiB0
ZXN0X25vX21hdGNoX2RpcmVjdG9yaWVzX291dHNpZGVfdGhlX3N1aXRlKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICAiIiJgLWtgIHNob3VsZCBub3QgbWF0Y2ggYWdhaW5zdCBkaXJlY3RvcmllcyBj
b250YWluaW5nIHRoZSB0ZXN0IHN1aXRlICgjNzA0MCkuIiIiCisgICAgICAgIHRlc3RfY29udGVu
dHMgPSAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2FhYSgpOiBwYXNzCisgICAgICAgICAgICBk
ZWYgdGVzdF9kZGQoKTogcGFzcworICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAgICAgKip7ImRkZC90ZXN0cy9fX2luaXRfXy5weSI6ICIiLCAiZGRkL3Rl
c3RzL3Rlc3RfZm9vLnB5IjogdGVzdF9jb250ZW50c30KKyAgICAgICAgKQogCi0gICAgQHB5dGVz
dC5tYXJrLmZ1bgotICAgIGRlZiBmYWtlX21ldGhvZChzZWxmKToKLSAgICAgICAgcGFzcworICAg
ICAgICBkZWYgZ2V0X2NvbGxlY3RlZF9uYW1lcygqYXJncyk6CisgICAgICAgICAgICBfLCByZWMg
PSB0ZXN0ZGlyLmlubGluZV9nZW5pdGVtcygqYXJncykKKyAgICAgICAgICAgIGNhbGxzID0gcmVj
LmdldGNhbGxzKCJweXRlc3RfY29sbGVjdGlvbl9maW5pc2giKQorICAgICAgICAgICAgYXNzZXJ0
IGxlbihjYWxscykgPT0gMQorICAgICAgICAgICAgcmV0dXJuIFt4Lm5hbWUgZm9yIHggaW4gY2Fs
bHNbMF0uc2Vzc2lvbi5pdGVtc10KIAotICAgIHRyYW5zZmVyX21hcmtlcnMoZmFrZV9tZXRob2Qs
IEZha2VDbGFzcywgRmFrZU1vZHVsZSkKKyAgICAgICAgIyBzYW5pdHkgY2hlY2s6IGNvbGxlY3Qg
Ym90aCB0ZXN0cyBpbiBub3JtYWwgcnVucworICAgICAgICBhc3NlcnQgZ2V0X2NvbGxlY3RlZF9u
YW1lcygpID09IFsidGVzdF9hYWEiLCAidGVzdF9kZGQiXQogCi0gICAgIyBsZWdhY3kgbWFya3Mg
dHJhbnNmZXIgc21lYXJlZAotICAgIGFzc2VydCBmYWtlX21ldGhvZC5ub2Z1bgotICAgIGFzc2Vy
dCBmYWtlX21ldGhvZC5mdW4KLSAgICAjIHByaXN0aW5lIG1hcmtzIGRvbnQgdHJhbnNmZXIKLSAg
ICBhc3NlcnQgZmFrZV9tZXRob2QucHl0ZXN0bWFyayA9PSBbcHl0ZXN0Lm1hcmsuZnVuLm1hcmtd
CisgICAgICAgICMgZG8gbm90IGNvbGxlY3QgYW55dGhpbmcgYmFzZWQgb24gbmFtZXMgb3V0c2lk
ZSB0aGUgY29sbGVjdGlvbiB0cmVlCisgICAgICAgIGFzc2VydCBnZXRfY29sbGVjdGVkX25hbWVz
KCItayIsIHRlc3RkaXIudG1wZGlyLmJhc2VuYW1lKSA9PSBbXQogCisgICAgICAgICMgIi1rIGRk
ZCIgc2hvdWxkIG9ubHkgY29sbGVjdCAidGVzdF9kZGQiLCBidXQgbm90CisgICAgICAgICMgJ3Rl
c3RfYWFhJyBqdXN0IGJlY2F1c2Ugb25lIG9mIGl0cyBwYXJlbnQgZGlyZWN0b3JpZXMgaXMgbmFt
ZWQgImRkZCI7CisgICAgICAgICMgdGhpcyB3YXMgbWF0Y2hlZCBwcmV2aW91c2x5IGJlY2F1c2Ug
UGFja2FnZS5uYW1lIHdvdWxkIGNvbnRhaW4gdGhlIGZ1bGwgcGF0aAorICAgICAgICAjIHRvIHRo
ZSBwYWNrYWdlCisgICAgICAgIGFzc2VydCBnZXRfY29sbGVjdGVkX25hbWVzKCItayIsICJkZGQi
KSA9PSBbInRlc3RfZGRkIl0KIAotY2xhc3MgVGVzdE1hcmtEZWNvcmF0b3Iob2JqZWN0KToKIAor
Y2xhc3MgVGVzdE1hcmtEZWNvcmF0b3I6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAog
ICAgICAgICAibGhzLCByaHMsIGV4cGVjdGVkIiwKICAgICAgICAgWwpAQCAtMTA2NywxMSArOTA1
LDI0IEBAIGNsYXNzIFRlc3RNYXJrRGVjb3JhdG9yKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfX2Vx
X18oc2VsZiwgbGhzLCByaHMsIGV4cGVjdGVkKToKICAgICAgICAgYXNzZXJ0IChsaHMgPT0gcmhz
KSA9PSBleHBlY3RlZAogCisgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKSAtPiBOb25lOgorICAg
ICAgICBtZCA9IHB5dGVzdC5tYXJrLmZvbygxLCAiMiIsIHRocmVlPTMpCisgICAgICAgIGFzc2Vy
dCBtZC5uYW1lID09ICJmb28iCisgICAgICAgIGFzc2VydCBtZC5hcmdzID09ICgxLCAiMiIpCisg
ICAgICAgIGFzc2VydCBtZC5rd2FyZ3MgPT0geyJ0aHJlZSI6IDN9CisKIAogQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJtYXJrIiwgW05vbmUsICIiLCAic2tpcCIsICJ4ZmFpbCJdKQogZGVmIHRl
c3RfcGFyYW1ldGVyc2V0X2Zvcl9wYXJhbWV0cml6ZV9tYXJrcyh0ZXN0ZGlyLCBtYXJrKToKICAg
ICBpZiBtYXJrIGlzIG5vdCBOb25lOgotICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoIltweXRlc3Rd
XG57fT17fSIuZm9ybWF0KEVNUFRZX1BBUkFNRVRFUlNFVF9PUFRJT04sIG1hcmspKQorICAgICAg
ICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAg
ICAgICAge309e30KKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBFTVBUWV9Q
QVJBTUVURVJTRVRfT1BUSU9OLCBtYXJrCisgICAgICAgICAgICApCisgICAgICAgICkKIAogICAg
IGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQogICAgIGZyb20gX3B5dGVzdC5tYXJrIGlt
cG9ydCBweXRlc3RfY29uZmlndXJlLCBnZXRfZW1wdHlfcGFyYW1ldGVyc2V0X21hcmsKQEAgLTEw
ODcsNiArOTM4LDQ4IEBAIGRlZiB0ZXN0X3BhcmFtZXRlcnNldF9mb3JfcGFyYW1ldHJpemVfbWFy
a3ModGVzdGRpciwgbWFyayk6CiAgICAgICAgIGFzc2VydCByZXN1bHRfbWFyay5rd2FyZ3MuZ2V0
KCJydW4iKSBpcyBGYWxzZQogCiAKK2RlZiB0ZXN0X3BhcmFtZXRlcnNldF9mb3JfZmFpbF9hdF9j
b2xsZWN0KHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgIiIiCisgICAg
W3B5dGVzdF0KKyAgICB7fT1mYWlsX2F0X2NvbGxlY3QKKyAgICAiIiIuZm9ybWF0KAorICAgICAg
ICAgICAgRU1QVFlfUEFSQU1FVEVSU0VUX09QVElPTgorICAgICAgICApCisgICAgKQorCisgICAg
Y29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygpCisgICAgZnJvbSBfcHl0ZXN0Lm1hcmsgaW1w
b3J0IHB5dGVzdF9jb25maWd1cmUsIGdldF9lbXB0eV9wYXJhbWV0ZXJzZXRfbWFyaworCisgICAg
cHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAg
ICAgIENvbGxlY3Rvci5Db2xsZWN0RXJyb3IsCisgICAgICAgIG1hdGNoPXIiRW1wdHkgcGFyYW1l
dGVyIHNldCBpbiAncHl0ZXN0X2NvbmZpZ3VyZScgYXQgbGluZSBcZFxkKyIsCisgICAgKToKKyAg
ICAgICAgZ2V0X2VtcHR5X3BhcmFtZXRlcnNldF9tYXJrKGNvbmZpZywgWyJhIl0sIHB5dGVzdF9j
b25maWd1cmUpCisKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisg
ICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImVtcHR5IiwgW10pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisgICAg
ICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocDEpKQor
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAg
ImNvbGxlY3RlZCAwIGl0ZW1zIC8gMSBlcnJvciIsCisgICAgICAgICAgICAiKiBFUlJPUiBjb2xs
ZWN0aW5nIHRlc3RfcGFyYW1ldGVyc2V0X2Zvcl9mYWlsX2F0X2NvbGxlY3QucHkgKiIsCisgICAg
ICAgICAgICAiRW1wdHkgcGFyYW1ldGVyIHNldCBpbiAndGVzdCcgYXQgbGluZSAzIiwKKyAgICAg
ICAgICAgICIqPSAxIGVycm9yIGluICoiLAorICAgICAgICBdCisgICAgKQorICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IEV4aXRDb2RlLklOVEVSUlVQVEVECisKKwogZGVmIHRlc3RfcGFyYW1ldGVy
c2V0X2Zvcl9wYXJhbWV0cml6ZV9iYWRfbWFya25hbWUodGVzdGRpcik6CiAgICAgd2l0aCBweXRl
c3QucmFpc2VzKHB5dGVzdC5Vc2FnZUVycm9yKToKICAgICAgICAgdGVzdF9wYXJhbWV0ZXJzZXRf
Zm9yX3BhcmFtZXRyaXplX21hcmtzKHRlc3RkaXIsICJiYWQiKQpAQCAtMTExOSwxNiArMTAxMiw4
OSBAQCBkZWYgdGVzdF9tYXJrX2V4cHJlc3Npb25zX25vX3NtZWFyKHRlc3RkaXIpOgogICAgIGRl
c2VsZWN0ZWRfdGVzdHMgPSBkbGlzdFswXS5pdGVtcwogICAgIGFzc2VydCBsZW4oZGVzZWxlY3Rl
ZF90ZXN0cykgPT0gMQogCisgICAgIyB0b2RvOiBmaXhlZAogICAgICMga2V5d29yZHMgc21lYXIg
LSBleHBlY3RlZCBiZWhhdmlvdXIKLSAgICByZXByZWNfa2V5d29yZHMgPSB0ZXN0ZGlyLmlubGlu
ZV9ydW4oIi1rIiwgIkZPTyIpCi0gICAgcGFzc2VkX2ssIHNraXBwZWRfaywgZmFpbGVkX2sgPSBy
ZXByZWNfa2V5d29yZHMuY291bnRvdXRjb21lcygpCi0gICAgYXNzZXJ0IHBhc3NlZF9rID09IDIK
LSAgICBhc3NlcnQgc2tpcHBlZF9rID09IGZhaWxlZF9rID09IDAKLQotCi1kZWYgdGVzdF9hZGRt
YXJrZXJfZ2V0bWFya2VyKCk6Ci0gICAgbm9kZSA9IE5vZGUoIlRlc3QiLCBjb25maWc9bW9jay5N
b2NrKCksIHNlc3Npb249bW9jay5Nb2NrKCksIG5vZGVpZD0iVGVzdCIpCi0gICAgbm9kZS5hZGRf
bWFya2VyKHB5dGVzdC5tYXJrLmEoMSkpCi0gICAgbm9kZS5hZGRfbWFya2VyKCJiIikKLSAgICBu
b2RlLmdldF9tYXJrZXIoImEiKS5jb21iaW5lZAotICAgIG5vZGUuZ2V0X21hcmtlcigiYiIpLmNv
bWJpbmVkCisgICAgIyByZXByZWNfa2V5d29yZHMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1rIiwg
IkZPTyIpCisgICAgIyBwYXNzZWRfaywgc2tpcHBlZF9rLCBmYWlsZWRfayA9IHJlcHJlY19rZXl3
b3Jkcy5jb3VudG91dGNvbWVzKCkKKyAgICAjIGFzc2VydCBwYXNzZWRfayA9PSAyCisgICAgIyBh
c3NlcnQgc2tpcHBlZF9rID09IGZhaWxlZF9rID09IDAKKworCitkZWYgdGVzdF9hZGRtYXJrZXJf
b3JkZXIoKToKKyAgICBzZXNzaW9uID0gbW9jay5Nb2NrKCkKKyAgICBzZXNzaW9uLm93bl9tYXJr
ZXJzID0gW10KKyAgICBzZXNzaW9uLnBhcmVudCA9IE5vbmUKKyAgICBzZXNzaW9uLm5vZGVpZCA9
ICIiCisgICAgbm9kZSA9IE5vZGUuZnJvbV9wYXJlbnQoc2Vzc2lvbiwgbmFtZT0iVGVzdCIpCisg
ICAgbm9kZS5hZGRfbWFya2VyKCJmb28iKQorICAgIG5vZGUuYWRkX21hcmtlcigiYmFyIikKKyAg
ICBub2RlLmFkZF9tYXJrZXIoImJheiIsIGFwcGVuZD1GYWxzZSkKKyAgICBleHRyYWN0ZWQgPSBb
eC5uYW1lIGZvciB4IGluIG5vZGUuaXRlcl9tYXJrZXJzKCldCisgICAgYXNzZXJ0IGV4dHJhY3Rl
ZCA9PSBbImJheiIsICJmb28iLCAiYmFyIl0KKworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2Fybmlu
Z3MoImlnbm9yZSIpCitkZWYgdGVzdF9tYXJrZXJzX2Zyb21fcGFyYW1ldHJpemUodGVzdGRpcik6
CisgICAgIiIiIzM2MDUiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgor
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgZmlyc3RfY3VzdG9tX21hcmsgPSBweXRl
c3QubWFyay5jdXN0b21fbWFya2VyCisgICAgICAgIGN1c3RvbV9tYXJrID0gcHl0ZXN0Lm1hcmsu
Y3VzdG9tX21hcmsKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSkKKyAgICAg
ICAgZGVmIHRyaWdnZXIocmVxdWVzdCk6CisgICAgICAgICAgICBjdXN0b21fbWFyayA9IGxpc3Qo
cmVxdWVzdC5ub2RlLml0ZXJfbWFya2VycygnY3VzdG9tX21hcmsnKSkKKyAgICAgICAgICAgIHBy
aW50KCJDdXN0b20gbWFyayAlcyIgJSBjdXN0b21fbWFyaykKKworICAgICAgICBAY3VzdG9tX21h
cmsoImN1c3RvbSBtYXJrIG5vbiBwYXJhbWV0cml6ZWQiKQorICAgICAgICBkZWYgdGVzdF9jdXN0
b21fbWFya19ub25fcGFyYW1ldHJpemVkKCk6CisgICAgICAgICAgICBwcmludCgiSGV5IGZyb20g
dGVzdCIpCisKKyAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAgICAg
Im9ial90eXBlIiwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBmaXJzdF9jdXN0b21f
bWFyaygiZmlyc3QgY3VzdG9tIG1hcmsiKSgidGVtcGxhdGUiKSwKKyAgICAgICAgICAgICAgICBw
eXRlc3QucGFyYW0oICMgVGhpbmsgdGhpcyBzaG91bGQgYmUgcmVjb21tZW5kZWQgd2F5PworICAg
ICAgICAgICAgICAgICAgICAiZGlzayIsCisgICAgICAgICAgICAgICAgICAgIG1hcmtzPWN1c3Rv
bV9tYXJrKCdjdXN0b20gbWFyazEnKQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg
ICAgY3VzdG9tX21hcmsoImN1c3RvbSBtYXJrMiIpKCJ2bSIpLCAgIyBUcmllZCBhbHNvIHRoaXMK
KyAgICAgICAgICAgIF0KKyAgICAgICAgKQorICAgICAgICBkZWYgdGVzdF9jdXN0b21fbWFya19w
YXJhbWV0cml6ZWQob2JqX3R5cGUpOgorICAgICAgICAgICAgcHJpbnQoIm9ial90eXBlIGlzOiIs
IG9ial90eXBlKQorICAgICIiIgorICAgICkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD00KQorCisKK2RlZiB0ZXN0
X3B5dGVzdF9wYXJhbV9pZF9yZXF1aXJlc19zdHJpbmcoKSAtPiBOb25lOgorICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIHB5dGVzdC5wYXJhbShp
ZD1UcnVlKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgKG1zZywpID0gZXhjaW5mby52
YWx1ZS5hcmdzCisgICAgYXNzZXJ0IG1zZyA9PSAiRXhwZWN0ZWQgaWQgdG8gYmUgYSBzdHJpbmcs
IGdvdCA8Y2xhc3MgJ2Jvb2wnPjogVHJ1ZSIKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
InMiLCAoTm9uZSwgImhlbGxvIHdvcmxkIikpCitkZWYgdGVzdF9weXRlc3RfcGFyYW1faWRfYWxs
b3dzX25vbmVfb3Jfc3RyaW5nKHMpOgorICAgIGFzc2VydCBweXRlc3QucGFyYW0oaWQ9cykKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImV4cHIiLCAoIk5PVCBpbnRlcm5hbF9lcnIiLCAi
Tk9UIChpbnRlcm5hbF9lcnIpIiwgImJvZ3VzLyIpKQorZGVmIHRlc3RfbWFya2VyX2V4cHJfZXZh
bF9mYWlsdXJlX2hhbmRsaW5nKHRlc3RkaXIsIGV4cHIpOgorICAgIGZvbyA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBA
cHl0ZXN0Lm1hcmsuaW50ZXJuYWxfZXJyCisgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAg
ICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICApCisgICAgZXhwZWN0ZWQgPSAiRVJST1I6IFdy
b25nIGV4cHJlc3Npb24gcGFzc2VkIHRvICctbSc6IHt9OiAqIi5mb3JtYXQoZXhwcikKKyAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChmb28sICItbSIsIGV4cHIpCisgICAgcmVzdWx0LnN0
ZGVyci5mbm1hdGNoX2xpbmVzKFtleHBlY3RlZF0pCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
RXhpdENvZGUuVVNBR0VfRVJST1IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9tYXJrX2V4cHJlc3Npb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbWFya19leHBy
ZXNzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFjYTAy
ZDkzMzBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21hcmtf
ZXhwcmVzc2lvbi5weQpAQCAtMCwwICsxLDE2OSBAQAorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxh
YmxlCisKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5tYXJrLmV4cHJlc3Npb24gaW1wb3J0
IEV4cHJlc3Npb24KK2Zyb20gX3B5dGVzdC5tYXJrLmV4cHJlc3Npb24gaW1wb3J0IFBhcnNlRXJy
b3IKKworCitkZWYgZXZhbHVhdGUoaW5wdXQ6IHN0ciwgbWF0Y2hlcjogQ2FsbGFibGVbW3N0cl0s
IGJvb2xdKSAtPiBib29sOgorICAgIHJldHVybiBFeHByZXNzaW9uLmNvbXBpbGUoaW5wdXQpLmV2
YWx1YXRlKG1hdGNoZXIpCisKKworZGVmIHRlc3RfZW1wdHlfaXNfZmFsc2UoKSAtPiBOb25lOgor
ICAgIGFzc2VydCBub3QgZXZhbHVhdGUoIiIsIGxhbWJkYSBpZGVudDogRmFsc2UpCisgICAgYXNz
ZXJ0IG5vdCBldmFsdWF0ZSgiIiwgbGFtYmRhIGlkZW50OiBUcnVlKQorICAgIGFzc2VydCBub3Qg
ZXZhbHVhdGUoIiAgICIsIGxhbWJkYSBpZGVudDogRmFsc2UpCisgICAgYXNzZXJ0IG5vdCBldmFs
dWF0ZSgiXHQiLCBsYW1iZGEgaWRlbnQ6IEZhbHNlKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgKKyAgICAoImV4cHIiLCAiZXhwZWN0ZWQiKSwKKyAgICAoCisgICAgICAgICgidHJ1ZSIs
IFRydWUpLAorICAgICAgICAoInRydWUiLCBUcnVlKSwKKyAgICAgICAgKCJmYWxzZSIsIEZhbHNl
KSwKKyAgICAgICAgKCJub3QgdHJ1ZSIsIEZhbHNlKSwKKyAgICAgICAgKCJub3QgZmFsc2UiLCBU
cnVlKSwKKyAgICAgICAgKCJub3Qgbm90IHRydWUiLCBUcnVlKSwKKyAgICAgICAgKCJub3Qgbm90
IGZhbHNlIiwgRmFsc2UpLAorICAgICAgICAoInRydWUgYW5kIHRydWUiLCBUcnVlKSwKKyAgICAg
ICAgKCJ0cnVlIGFuZCBmYWxzZSIsIEZhbHNlKSwKKyAgICAgICAgKCJmYWxzZSBhbmQgdHJ1ZSIs
IEZhbHNlKSwKKyAgICAgICAgKCJ0cnVlIGFuZCB0cnVlIGFuZCB0cnVlIiwgVHJ1ZSksCisgICAg
ICAgICgidHJ1ZSBhbmQgdHJ1ZSBhbmQgZmFsc2UiLCBGYWxzZSksCisgICAgICAgICgidHJ1ZSBh
bmQgdHJ1ZSBhbmQgbm90IHRydWUiLCBGYWxzZSksCisgICAgICAgICgiZmFsc2Ugb3IgZmFsc2Ui
LCBGYWxzZSksCisgICAgICAgICgiZmFsc2Ugb3IgdHJ1ZSIsIFRydWUpLAorICAgICAgICAoInRy
dWUgb3IgdHJ1ZSIsIFRydWUpLAorICAgICAgICAoInRydWUgb3IgdHJ1ZSBvciBmYWxzZSIsIFRy
dWUpLAorICAgICAgICAoInRydWUgYW5kIHRydWUgb3IgZmFsc2UiLCBUcnVlKSwKKyAgICAgICAg
KCJub3QgdHJ1ZSBvciB0cnVlIiwgVHJ1ZSksCisgICAgICAgICgiKG5vdCB0cnVlKSBvciB0cnVl
IiwgVHJ1ZSksCisgICAgICAgICgibm90ICh0cnVlIG9yIHRydWUpIiwgRmFsc2UpLAorICAgICAg
ICAoInRydWUgYW5kIHRydWUgb3IgZmFsc2UgYW5kIGZhbHNlIiwgVHJ1ZSksCisgICAgICAgICgi
dHJ1ZSBhbmQgKHRydWUgb3IgZmFsc2UpIGFuZCBmYWxzZSIsIEZhbHNlKSwKKyAgICAgICAgKCJ0
cnVlIGFuZCAodHJ1ZSBvciAobm90IChub3QgZmFsc2UpKSkgYW5kIGZhbHNlIiwgRmFsc2UpLAor
ICAgICksCispCitkZWYgdGVzdF9iYXNpYyhleHByOiBzdHIsIGV4cGVjdGVkOiBib29sKSAtPiBO
b25lOgorICAgIG1hdGNoZXIgPSB7InRydWUiOiBUcnVlLCAiZmFsc2UiOiBGYWxzZX0uX19nZXRp
dGVtX18KKyAgICBhc3NlcnQgZXZhbHVhdGUoZXhwciwgbWF0Y2hlcikgaXMgZXhwZWN0ZWQKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgKCJleHByIiwgImV4cGVjdGVkIiksCisg
ICAgKAorICAgICAgICAoIiAgICAgICAgICAgICAgIHRydWUgICAgICAgICAgICIsIFRydWUpLAor
ICAgICAgICAoIiAgICAgICAgICAgICAgICgoKCgoKHRydWUpKSkpKSkgICAgICAgICAgICIsIFRy
dWUpLAorICAgICAgICAoIiAgICAgKCAgICAgICAgICgoXHQgICgoKHRydWUpKSkpKSAgXHQgICBc
dCkiLCBUcnVlKSwKKyAgICAgICAgKCIoICAgICB0cnVlICAgICBhbmQgICAoKChmYWxzZSkpKSki
LCBGYWxzZSksCisgICAgICAgICgibm90IG5vdCBub3Qgbm90IHRydWUiLCBUcnVlKSwKKyAgICAg
ICAgKCJub3Qgbm90IG5vdCBub3Qgbm90IHRydWUiLCBGYWxzZSksCisgICAgKSwKKykKK2RlZiB0
ZXN0X3N5bnRheF9vZGRldGllcyhleHByOiBzdHIsIGV4cGVjdGVkOiBib29sKSAtPiBOb25lOgor
ICAgIG1hdGNoZXIgPSB7InRydWUiOiBUcnVlLCAiZmFsc2UiOiBGYWxzZX0uX19nZXRpdGVtX18K
KyAgICBhc3NlcnQgZXZhbHVhdGUoZXhwciwgbWF0Y2hlcikgaXMgZXhwZWN0ZWQKKworCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgKCJleHByIiwgImNvbHVtbiIsICJtZXNzYWdlIiks
CisgICAgKAorICAgICAgICAoIigiLCAyLCAiZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVz
aXMgT1IgaWRlbnRpZmllcjsgZ290IGVuZCBvZiBpbnB1dCIpLAorICAgICAgICAoIiAoIiwgMywg
ImV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBlbmQg
b2YgaW5wdXQiLCksCisgICAgICAgICgKKyAgICAgICAgICAgICIpIiwKKyAgICAgICAgICAgIDEs
CisgICAgICAgICAgICAiZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVzaXMgT1IgaWRlbnRp
ZmllcjsgZ290IHJpZ2h0IHBhcmVudGhlc2lzIiwKKyAgICAgICAgKSwKKyAgICAgICAgKAorICAg
ICAgICAgICAgIikgIiwKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAiZXhwZWN0ZWQgbm90
IE9SIGxlZnQgcGFyZW50aGVzaXMgT1IgaWRlbnRpZmllcjsgZ290IHJpZ2h0IHBhcmVudGhlc2lz
IiwKKyAgICAgICAgKSwKKyAgICAgICAgKCJub3QiLCA0LCAiZXhwZWN0ZWQgbm90IE9SIGxlZnQg
cGFyZW50aGVzaXMgT1IgaWRlbnRpZmllcjsgZ290IGVuZCBvZiBpbnB1dCIsKSwKKyAgICAgICAg
KAorICAgICAgICAgICAgIm5vdCBub3QiLAorICAgICAgICAgICAgOCwKKyAgICAgICAgICAgICJl
eHBlY3RlZCBub3QgT1IgbGVmdCBwYXJlbnRoZXNpcyBPUiBpZGVudGlmaWVyOyBnb3QgZW5kIG9m
IGlucHV0IiwKKyAgICAgICAgKSwKKyAgICAgICAgKAorICAgICAgICAgICAgIihub3QpIiwKKyAg
ICAgICAgICAgIDUsCisgICAgICAgICAgICAiZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVz
aXMgT1IgaWRlbnRpZmllcjsgZ290IHJpZ2h0IHBhcmVudGhlc2lzIiwKKyAgICAgICAgKSwKKyAg
ICAgICAgKCJhbmQiLCAxLCAiZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVzaXMgT1IgaWRl
bnRpZmllcjsgZ290IGFuZCIpLAorICAgICAgICAoCisgICAgICAgICAgICAiaWRlbnQgYW5kIiwK
KyAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgImV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVu
dGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBlbmQgb2YgaW5wdXQiLAorICAgICAgICApLAorICAg
ICAgICAoImlkZW50IGFuZCBvciIsIDExLCAiZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVz
aXMgT1IgaWRlbnRpZmllcjsgZ290IG9yIiwpLAorICAgICAgICAoImlkZW50IGlkZW50IiwgNywg
ImV4cGVjdGVkIGVuZCBvZiBpbnB1dDsgZ290IGlkZW50aWZpZXIiKSwKKyAgICApLAorKQorZGVm
IHRlc3Rfc3ludGF4X2Vycm9ycyhleHByOiBzdHIsIGNvbHVtbjogaW50LCBtZXNzYWdlOiBzdHIp
IC0+IE5vbmU6CisgICAgd2l0aCBweXRlc3QucmFpc2VzKFBhcnNlRXJyb3IpIGFzIGV4Y2luZm86
CisgICAgICAgIGV2YWx1YXRlKGV4cHIsIGxhbWJkYSBpZGVudDogVHJ1ZSkKKyAgICBhc3NlcnQg
ZXhjaW5mby52YWx1ZS5jb2x1bW4gPT0gY29sdW1uCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUu
bWVzc2FnZSA9PSBtZXNzYWdlCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJp
ZGVudCIsCisgICAgKAorICAgICAgICAiLiIsCisgICAgICAgICIuLi4iLAorICAgICAgICAiOjo6
IiwKKyAgICAgICAgImE6OjpjIiwKKyAgICAgICAgImErLWIiLAorICAgICAgICAi15DXkdeS15Mi
LAorICAgICAgICAiYWHXkNeR15LXk2NjIiwKKyAgICAgICAgImFbYmNkXSIsCisgICAgICAgICIx
MjM0IiwKKyAgICAgICAgIjEyMzRhYmNkIiwKKyAgICAgICAgIjEyMzRhbmQiLAorICAgICAgICAi
bm90YW5kb3IiLAorICAgICAgICAibm90X2FuZF9vciIsCisgICAgICAgICJub3RbYW5kXW9yIiwK
KyAgICAgICAgIjEyMzQrNTY3OCIsCisgICAgICAgICIxMjMuMjMyIiwKKyAgICAgICAgIlRydWUi
LAorICAgICAgICAiRmFsc2UiLAorICAgICAgICAiTm9uZSIsCisgICAgICAgICJpZiIsCisgICAg
ICAgICJlbHNlIiwKKyAgICAgICAgIndoaWxlIiwKKyAgICApLAorKQorZGVmIHRlc3RfdmFsaWRf
aWRlbnRzKGlkZW50OiBzdHIpIC0+IE5vbmU6CisgICAgYXNzZXJ0IGV2YWx1YXRlKGlkZW50LCB7
aWRlbnQ6IFRydWV9Ll9fZ2V0aXRlbV9fKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAiaWRlbnQiLAorICAgICgKKyAgICAgICAgIi8iLAorICAgICAgICAiXFwiLAorICAgICAg
ICAiXiIsCisgICAgICAgICIqIiwKKyAgICAgICAgIj0iLAorICAgICAgICAiJiIsCisgICAgICAg
ICIlIiwKKyAgICAgICAgIiQiLAorICAgICAgICAiIyIsCisgICAgICAgICJAIiwKKyAgICAgICAg
IiEiLAorICAgICAgICAifiIsCisgICAgICAgICJ7IiwKKyAgICAgICAgIn0iLAorICAgICAgICAn
IicsCisgICAgICAgICInIiwKKyAgICAgICAgInwiLAorICAgICAgICAiOyIsCisgICAgICAgICLi
hpAiLAorICAgICksCispCitkZWYgdGVzdF9pbnZhbGlkX2lkZW50cyhpZGVudDogc3RyKSAtPiBO
b25lOgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhQYXJzZUVycm9yKToKKyAgICAgICAgZXZhbHVh
dGUoaWRlbnQsIGxhbWJkYSBpZGVudDogVHJ1ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvdGVzdF9tZXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21ldGEucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYWNmNmQwOWY1OTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbWV0YS5weQpAQCAtMCwwICsx
LDM0IEBACisiIiJUZXN0IGltcG9ydGluZyBvZiBhbGwgaW50ZXJuYWwgcGFja2FnZXMgYW5kIG1v
ZHVsZXMuCisKK1RoaXMgZW5zdXJlcyBhbGwgaW50ZXJuYWwgcGFja2FnZXMgY2FuIGJlIGltcG9y
dGVkIHdpdGhvdXQgbmVlZGluZyB0aGUgcHl0ZXN0CituYW1lc3BhY2UgYmVpbmcgc2V0LCB3aGlj
aCBpcyBjcml0aWNhbCBmb3IgdGhlIGluaXRpYWxpemF0aW9uIG9mIHhkaXN0LgorIiIiCitpbXBv
cnQgcGtndXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2Zyb20gdHlwaW5nIGlt
cG9ydCBMaXN0CisKK2ltcG9ydCBfcHl0ZXN0CitpbXBvcnQgcHl0ZXN0CisKKworZGVmIF9tb2R1
bGVzKCkgLT4gTGlzdFtzdHJdOgorICAgIHB5dGVzdF9wa2cgPSBfcHl0ZXN0Ll9fcGF0aF9fICAj
IHR5cGU6IHN0ciAgIyB0eXBlOiBpZ25vcmUKKyAgICByZXR1cm4gc29ydGVkKAorICAgICAgICBu
CisgICAgICAgIGZvciBfLCBuLCBfIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhweXRlc3RfcGtn
LCBwcmVmaXg9X3B5dGVzdC5fX25hbWVfXyArICIuIikKKyAgICApCisKKworQHB5dGVzdC5tYXJr
LnNsb3cKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibW9kdWxlIiwgX21vZHVsZXMoKSkKK2Rl
ZiB0ZXN0X25vX3dhcm5pbmdzKG1vZHVsZTogc3RyKSAtPiBOb25lOgorICAgICMgZm10OiBvZmYK
KyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoKAorICAgICAgICBzeXMuZXhlY3V0YWJsZSwKKyAg
ICAgICAgIi1XIiwgImVycm9yIiwKKyAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzU5MDEKKyAgICAgICAgIi1XIiwgImlnbm9yZTpUaGUgdXNhZ2Ug
b2YgYGNtcGAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIG9uIG9yIGFmdGVyIDIw
MjEtMDYtMDEuICBQbGVhc2UgdXNlIGBlcWAgYW5kIGBvcmRlcmAgaW5zdGVhZC46RGVwcmVjYXRp
b25XYXJuaW5nIiwgICMgbm9xYTogRTUwMQorICAgICAgICAiLWMiLCAiX19pbXBvcnRfXyh7IXJ9
KSIuZm9ybWF0KG1vZHVsZSksCisgICAgKSkKKyAgICAjIGZtdDogb24KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tb2RpbXBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfbW9kaW1wb3J0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2I5MmEw
YjZmNjcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbW9kaW1w
b3J0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotaW1wb3J0IHB5Ci1pbXBvcnQg
c3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHB5dGVzdAotaW1wb3J0IF9weXRlc3QKLQot
TU9EU0VUID0gWwotICAgIHgKLSAgICBmb3IgeCBpbiBweS5wYXRoLmxvY2FsKF9weXRlc3QuX19m
aWxlX18pLmRpcnBhdGgoKS52aXNpdCgiKi5weSIpCi0gICAgaWYgeC5wdXJlYmFzZW5hbWUgIT0g
Il9faW5pdF9fIgotXQotCi0KLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibW9kZmlsZSIsIE1P
RFNFVCwgaWRzPWxhbWJkYSB4OiB4LnB1cmViYXNlbmFtZSkKLWRlZiB0ZXN0X2ZpbGVpbXBvcnQo
bW9kZmlsZSk6Ci0gICAgIyB0aGlzIHRlc3QgZW5zdXJlcyBhbGwgaW50ZXJuYWwgcGFja2FnZXMg
Y2FuIGltcG9ydAotICAgICMgd2l0aG91dCBuZWVkaW5nIHRoZSBweXRlc3QgbmFtZXNwYWNlIGJl
aW5nIHNldAotICAgICMgdGhpcyBpcyBjcml0aWNhbCBmb3IgdGhlIGluaXRpYWxpemF0aW9uIG9m
IHhkaXN0Ci0KLSAgICByZXMgPSBzdWJwcm9jZXNzLmNhbGwoCi0gICAgICAgIFsKLSAgICAgICAg
ICAgIHN5cy5leGVjdXRhYmxlLAotICAgICAgICAgICAgIi1jIiwKLSAgICAgICAgICAgICJpbXBv
cnQgc3lzLCBweTsgcHkucGF0aC5sb2NhbChzeXMuYXJndlsxXSkucHlpbXBvcnQoKSIsCi0gICAg
ICAgICAgICBtb2RmaWxlLnN0cnBhdGgsCi0gICAgICAgIF0KLSAgICApCi0gICAgaWYgcmVzOgot
ICAgICAgICBweXRlc3QuZmFpbCgiY29tbWFuZCByZXN1bHQgJXMiICUgcmVzKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21vbmtleXBhdGNoLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X21vbmtleXBhdGNoLnB5CmluZGV4IGMyOThjZTBkOTI5MC4uZmVhOGEyOGZi
YTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbW9ua2V5cGF0Y2gucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21vbmtleXBhdGNoLnB5CkBAIC0xLDE0ICsx
LDIzIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24s
IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0
IHRleHR3cmFwCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IEdl
bmVyYXRvcgorCitpbXBvcnQgcHkKIAogaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgVFlQRV9DSEVDS0lORwogZnJvbSBfcHl0ZXN0Lm1vbmtleXBhdGNoIGltcG9ydCBN
b25rZXlQYXRjaAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCisKK2lmIFRZ
UEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKIAogCiBAcHl0ZXN0LmZp
eHR1cmUKLWRlZiBtcCgpOgorZGVmIG1wKCkgLT4gR2VuZXJhdG9yW01vbmtleVBhdGNoLCBOb25l
LCBOb25lXToKICAgICBjd2QgPSBvcy5nZXRjd2QoKQogICAgIHN5c19wYXRoID0gbGlzdChzeXMu
cGF0aCkKICAgICB5aWVsZCBNb25rZXlQYXRjaCgpCkBAIC0xNiwxNSArMjUsMTQgQEAgZGVmIG1w
KCk6CiAgICAgb3MuY2hkaXIoY3dkKQogCiAKLWRlZiB0ZXN0X3NldGF0dHIoKToKLQotICAgIGNs
YXNzIEEob2JqZWN0KToKK2RlZiB0ZXN0X3NldGF0dHIoKSAtPiBOb25lOgorICAgIGNsYXNzIEE6
CiAgICAgICAgIHggPSAxCiAKICAgICBtb25rZXlwYXRjaCA9IE1vbmtleVBhdGNoKCkKLSAgICBw
eXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCAibW9ua2V5cGF0Y2guc2V0YXR0cihBLCAnbm90
ZXhpc3RzJywgMikiKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vbmtleXBh
dGNoLnNldGF0dHIsIEEsICJub3RleGlzdHMiLCAyKQogICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
QSwgInkiLCAyLCByYWlzaW5nPUZhbHNlKQotICAgIGFzc2VydCBBLnkgPT0gMgorICAgIGFzc2Vy
dCBBLnkgPT0gMiAgIyB0eXBlOiBpZ25vcmUKICAgICBtb25rZXlwYXRjaC51bmRvKCkKICAgICBh
c3NlcnQgbm90IGhhc2F0dHIoQSwgInkiKQogCkBAIC00MCw1MiArNDgsNTQgQEAgZGVmIHRlc3Rf
c2V0YXR0cigpOgogICAgIG1vbmtleXBhdGNoLnVuZG8oKSAgIyBkb3VibGUtdW5kbyBtYWtlcyBu
byBtb2RpZmljYXRpb24KICAgICBhc3NlcnQgQS54ID09IDUKIAorICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhUeXBlRXJyb3IpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKEEsICJ5IikgICMg
dHlwZTogaWdub3JlW2NhbGwtb3ZlcmxvYWRdCiAKLWNsYXNzIFRlc3RTZXRhdHRyV2l0aEltcG9y
dFBhdGgob2JqZWN0KToKIAotICAgIGRlZiB0ZXN0X3N0cmluZ19leHByZXNzaW9uKHNlbGYsIG1v
bmtleXBhdGNoKToKK2NsYXNzIFRlc3RTZXRhdHRyV2l0aEltcG9ydFBhdGg6CisgICAgZGVmIHRl
c3Rfc3RyaW5nX2V4cHJlc3Npb24oc2VsZiwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBO
b25lOgogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJvcy5wYXRoLmFic3BhdGgiLCBsYW1i
ZGEgeDogImhlbGxvMiIpCiAgICAgICAgIGFzc2VydCBvcy5wYXRoLmFic3BhdGgoIjEyMyIpID09
ICJoZWxsbzIiCiAKLSAgICBkZWYgdGVzdF9zdHJpbmdfZXhwcmVzc2lvbl9jbGFzcyhzZWxmLCBt
b25rZXlwYXRjaCk6CisgICAgZGVmIHRlc3Rfc3RyaW5nX2V4cHJlc3Npb25fY2xhc3Moc2VsZiwg
bW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgogICAgICAgICBtb25rZXlwYXRjaC5z
ZXRhdHRyKCJfcHl0ZXN0LmNvbmZpZy5Db25maWciLCA0MikKICAgICAgICAgaW1wb3J0IF9weXRl
c3QKIAotICAgICAgICBhc3NlcnQgX3B5dGVzdC5jb25maWcuQ29uZmlnID09IDQyCisgICAgICAg
IGFzc2VydCBfcHl0ZXN0LmNvbmZpZy5Db25maWcgPT0gNDIgICMgdHlwZTogaWdub3JlCiAKLSAg
ICBkZWYgdGVzdF91bmljb2RlX3N0cmluZyhzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRl
c3RfdW5pY29kZV9zdHJpbmcoc2VsZiwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25l
OgogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJfcHl0ZXN0LmNvbmZpZy5Db25maWciLCA0
MikKICAgICAgICAgaW1wb3J0IF9weXRlc3QKIAotICAgICAgICBhc3NlcnQgX3B5dGVzdC5jb25m
aWcuQ29uZmlnID09IDQyCisgICAgICAgIGFzc2VydCBfcHl0ZXN0LmNvbmZpZy5Db25maWcgPT0g
NDIgICMgdHlwZTogaWdub3JlCiAgICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIoIl9weXRlc3Qu
Y29uZmlnLkNvbmZpZyIpCiAKLSAgICBkZWYgdGVzdF93cm9uZ190YXJnZXQoc2VsZiwgbW9ua2V5
cGF0Y2gpOgotICAgICAgICBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb25rZXlw
YXRjaC5zZXRhdHRyKE5vbmUsIE5vbmUpKQorICAgIGRlZiB0ZXN0X3dyb25nX3RhcmdldChzZWxm
LCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihOb25l
LCBOb25lKSAgIyB0eXBlOiBpZ25vcmVbY2FsbC1vdmVybG9hZF0KIAotICAgIGRlZiB0ZXN0X3Vu
a25vd25faW1wb3J0KHNlbGYsIG1vbmtleXBhdGNoKToKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhJ
bXBvcnRFcnJvciwgbGFtYmRhOiBtb25rZXlwYXRjaC5zZXRhdHRyKCJ1bmtuMTIzLmNsYXNzeCIs
IE5vbmUpKQorICAgIGRlZiB0ZXN0X3Vua25vd25faW1wb3J0KHNlbGYsIG1vbmtleXBhdGNoOiBN
b25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVy
cm9yKToKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoInVua24xMjMuY2xhc3N4Iiwg
Tm9uZSkKIAotICAgIGRlZiB0ZXN0X3Vua25vd25fYXR0cihzZWxmLCBtb25rZXlwYXRjaCk6Ci0g
ICAgICAgIHB5dGVzdC5yYWlzZXMoCi0gICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgbGFtYmRh
OiBtb25rZXlwYXRjaC5zZXRhdHRyKCJvcy5wYXRoLnF3ZXF3ZSIsIE5vbmUpCi0gICAgICAgICkK
KyAgICBkZWYgdGVzdF91bmtub3duX2F0dHIoc2VsZiwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNo
KSAtPiBOb25lOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IpOgor
ICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigib3MucGF0aC5xd2Vxd2UiLCBOb25lKQog
Ci0gICAgZGVmIHRlc3RfdW5rbm93bl9hdHRyX25vbl9yYWlzaW5nKHNlbGYsIG1vbmtleXBhdGNo
KToKKyAgICBkZWYgdGVzdF91bmtub3duX2F0dHJfbm9uX3JhaXNpbmcoc2VsZiwgbW9ua2V5cGF0
Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgogICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzQ2CiAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
Im9zLnBhdGgucXdlcXdlIiwgNDIsIHJhaXNpbmc9RmFsc2UpCi0gICAgICAgIGFzc2VydCBvcy5w
YXRoLnF3ZXF3ZSA9PSA0MgorICAgICAgICBhc3NlcnQgb3MucGF0aC5xd2Vxd2UgPT0gNDIgICMg
dHlwZTogaWdub3JlCiAKLSAgICBkZWYgdGVzdF9kZWxhdHRyKHNlbGYsIG1vbmtleXBhdGNoKToK
KyAgICBkZWYgdGVzdF9kZWxhdHRyKHNlbGYsIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4g
Tm9uZToKICAgICAgICAgbW9ua2V5cGF0Y2guZGVsYXR0cigib3MucGF0aC5hYnNwYXRoIikKICAg
ICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKG9zLnBhdGgsICJhYnNwYXRoIikKICAgICAgICAgbW9u
a2V5cGF0Y2gudW5kbygpCiAgICAgICAgIGFzc2VydCBvcy5wYXRoLmFic3BhdGgKIAogCi1kZWYg
dGVzdF9kZWxhdHRyKCk6Ci0KLSAgICBjbGFzcyBBKG9iamVjdCk6CitkZWYgdGVzdF9kZWxhdHRy
KCkgLT4gTm9uZToKKyAgICBjbGFzcyBBOgogICAgICAgICB4ID0gMQogCiAgICAgbW9ua2V5cGF0
Y2ggPSBNb25rZXlQYXRjaCgpCkBAIC05Niw3ICsxMDYsNyBAQCBkZWYgdGVzdF9kZWxhdHRyKCk6
CiAKICAgICBtb25rZXlwYXRjaCA9IE1vbmtleVBhdGNoKCkKICAgICBtb25rZXlwYXRjaC5kZWxh
dHRyKEEsICJ4IikKLSAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCAibW9ua2V5cGF0
Y2guZGVsYXR0cihBLCAneScpIikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBt
b25rZXlwYXRjaC5kZWxhdHRyLCBBLCAieSIpCiAgICAgbW9ua2V5cGF0Y2guZGVsYXR0cihBLCAi
eSIsIHJhaXNpbmc9RmFsc2UpCiAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihBLCAieCIsIDUsIHJh
aXNpbmc9RmFsc2UpCiAgICAgYXNzZXJ0IEEueCA9PSA1CkBAIC0xMDQsNyArMTE0LDcgQEAgZGVm
IHRlc3RfZGVsYXR0cigpOgogICAgIGFzc2VydCBBLnggPT0gMQogCiAKLWRlZiB0ZXN0X3NldGl0
ZW0oKToKK2RlZiB0ZXN0X3NldGl0ZW0oKSAtPiBOb25lOgogICAgIGQgPSB7IngiOiAxfQogICAg
IG1vbmtleXBhdGNoID0gTW9ua2V5UGF0Y2goKQogICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oZCwg
IngiLCAyKQpAQCAtMTIyLDggKzEzMiw4IEBAIGRlZiB0ZXN0X3NldGl0ZW0oKToKICAgICBhc3Nl
cnQgZFsieCJdID09IDUKIAogCi1kZWYgdGVzdF9zZXRpdGVtX2RlbGV0ZWRfbWVhbndoaWxlKCk6
Ci0gICAgZCA9IHt9CitkZWYgdGVzdF9zZXRpdGVtX2RlbGV0ZWRfbWVhbndoaWxlKCkgLT4gTm9u
ZToKKyAgICBkID0ge30gICMgdHlwZTogRGljdFtzdHIsIG9iamVjdF0KICAgICBtb25rZXlwYXRj
aCA9IE1vbmtleVBhdGNoKCkKICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKGQsICJ4IiwgMikKICAg
ICBkZWwgZFsieCJdCkBAIC0xMzIsNyArMTQyLDcgQEAgZGVmIHRlc3Rfc2V0aXRlbV9kZWxldGVk
X21lYW53aGlsZSgpOgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYmVmb3JlIiwgW1Ry
dWUsIEZhbHNlXSkKLWRlZiB0ZXN0X3NldGVudl9kZWxldGVkX21lYW53aGlsZShiZWZvcmUpOgor
ZGVmIHRlc3Rfc2V0ZW52X2RlbGV0ZWRfbWVhbndoaWxlKGJlZm9yZTogYm9vbCkgLT4gTm9uZToK
ICAgICBrZXkgPSAicXdwZW9pcDEyMyIKICAgICBpZiBiZWZvcmU6CiAgICAgICAgIG9zLmVudmly
b25ba2V5XSA9ICJ3b3JsZCIKQEAgLTE0NywxMyArMTU3LDEzIEBAIGRlZiB0ZXN0X3NldGVudl9k
ZWxldGVkX21lYW53aGlsZShiZWZvcmUpOgogICAgICAgICBhc3NlcnQga2V5IG5vdCBpbiBvcy5l
bnZpcm9uCiAKIAotZGVmIHRlc3RfZGVsaXRlbSgpOgotICAgIGQgPSB7IngiOiAxfQorZGVmIHRl
c3RfZGVsaXRlbSgpIC0+IE5vbmU6CisgICAgZCA9IHsieCI6IDF9ICAjIHR5cGU6IERpY3Rbc3Ry
LCBvYmplY3RdCiAgICAgbW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRjaCgpCiAgICAgbW9ua2V5cGF0
Y2guZGVsaXRlbShkLCAieCIpCiAgICAgYXNzZXJ0ICJ4IiBub3QgaW4gZAogICAgIG1vbmtleXBh
dGNoLmRlbGl0ZW0oZCwgInkiLCByYWlzaW5nPUZhbHNlKQotICAgIHB5dGVzdC5yYWlzZXMoS2V5
RXJyb3IsICJtb25rZXlwYXRjaC5kZWxpdGVtKGQsICd5JykiKQorICAgIHB5dGVzdC5yYWlzZXMo
S2V5RXJyb3IsIG1vbmtleXBhdGNoLmRlbGl0ZW0sIGQsICJ5IikKICAgICBhc3NlcnQgbm90IGQK
ICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKGQsICJ5IiwgMTcwMCkKICAgICBhc3NlcnQgZFsieSJd
ID09IDE3MDAKQEAgLTE2NCw5ICsxNzQsMTAgQEAgZGVmIHRlc3RfZGVsaXRlbSgpOgogICAgIGFz
c2VydCBkID09IHsiaGVsbG8iOiAid29ybGQiLCAieCI6IDF9CiAKIAotZGVmIHRlc3Rfc2V0ZW52
KCk6CitkZWYgdGVzdF9zZXRlbnYoKSAtPiBOb25lOgogICAgIG1vbmtleXBhdGNoID0gTW9ua2V5
UGF0Y2goKQotICAgIG1vbmtleXBhdGNoLnNldGVudigiWFlaMTIzIiwgMikKKyAgICB3aXRoIHB5
dGVzdC53YXJucyhweXRlc3QuUHl0ZXN0V2FybmluZyk6CisgICAgICAgIG1vbmtleXBhdGNoLnNl
dGVudigiWFlaMTIzIiwgMikgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQogICAgIGltcG9ydCBv
cwogCiAgICAgYXNzZXJ0IG9zLmVudmlyb25bIlhZWjEyMyJdID09ICIyIgpAQCAtMTc0LDExICsx
ODUsMTEgQEAgZGVmIHRlc3Rfc2V0ZW52KCk6CiAgICAgYXNzZXJ0ICJYWVoxMjMiIG5vdCBpbiBv
cy5lbnZpcm9uCiAKIAotZGVmIHRlc3RfZGVsZW52KCk6CitkZWYgdGVzdF9kZWxlbnYoKSAtPiBO
b25lOgogICAgIG5hbWUgPSAieHl6MTIzNCIKICAgICBhc3NlcnQgbmFtZSBub3QgaW4gb3MuZW52
aXJvbgogICAgIG1vbmtleXBhdGNoID0gTW9ua2V5UGF0Y2goKQotICAgIHB5dGVzdC5yYWlzZXMo
S2V5RXJyb3IsICJtb25rZXlwYXRjaC5kZWxlbnYoJXIsIHJhaXNpbmc9VHJ1ZSkiICUgbmFtZSkK
KyAgICBweXRlc3QucmFpc2VzKEtleUVycm9yLCBtb25rZXlwYXRjaC5kZWxlbnYsIG5hbWUsIHJh
aXNpbmc9VHJ1ZSkKICAgICBtb25rZXlwYXRjaC5kZWxlbnYobmFtZSwgcmFpc2luZz1GYWxzZSkK
ICAgICBtb25rZXlwYXRjaC51bmRvKCkKICAgICBvcy5lbnZpcm9uW25hbWVdID0gIjEiCkBAIC0x
OTUsMTkgKzIwNiwzNyBAQCBkZWYgdGVzdF9kZWxlbnYoKToKICAgICAgICAgICAgIGRlbCBvcy5l
bnZpcm9uW25hbWVdCiAKIAotZGVmIHRlc3Rfc2V0ZW52X3ByZXBlbmQoKToKK2NsYXNzIFRlc3RF
bnZpcm9uV2FybmluZ3M6CisgICAgIiIiCisgICAgb3MuZW52aXJvbiBrZXlzIGFuZCB2YWx1ZXMg
c2hvdWxkIGJlIG5hdGl2ZSBzdHJpbmdzLCBvdGhlcndpc2UgaXQgd2lsbCBjYXVzZSBwcm9ibGVt
cyB3aXRoIG90aGVyIG1vZHVsZXMgKG5vdGFibHkKKyAgICBzdWJwcm9jZXNzKS4gT24gUHl0aG9u
IDIgb3MuZW52aXJvbiBhY2NlcHRzIGFueXRoaW5nIHdpdGhvdXQgY29tcGxhaW5pbmcsIHdoaWxl
IFB5dGhvbiAzIGRvZXMgdGhlIHJpZ2h0IHRoaW5nCisgICAgYW5kIHJhaXNlcyBhbiBlcnJvci4K
KyAgICAiIiIKKworICAgIFZBUl9OQU1FID0gIlBZVEVTVF9JTlRFUk5BTF9NWV9WQVIiCisKKyAg
ICBkZWYgdGVzdF9zZXRlbnZfbm9uX3N0cl93YXJuaW5nKHNlbGYsIG1vbmtleXBhdGNoOiBNb25r
ZXlQYXRjaCkgLT4gTm9uZToKKyAgICAgICAgdmFsdWUgPSAyCisgICAgICAgIG1zZyA9ICgKKyAg
ICAgICAgICAgICJWYWx1ZSBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBQWVRFU1RfSU5URVJOQUxf
TVlfVkFSIHR5cGUgc2hvdWxkIGJlIHN0ciwgIgorICAgICAgICAgICAgImJ1dCBnb3QgMiAodHlw
ZTogaW50KTsgY29udmVydGVkIHRvIHN0ciBpbXBsaWNpdGx5IgorICAgICAgICApCisgICAgICAg
IHdpdGggcHl0ZXN0Lndhcm5zKHB5dGVzdC5QeXRlc3RXYXJuaW5nLCBtYXRjaD1yZS5lc2NhcGUo
bXNnKSk6CisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoc3RyKHNlbGYuVkFSX05BTUUp
LCB2YWx1ZSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorCisKK2RlZiB0ZXN0X3NldGVudl9w
cmVwZW5kKCkgLT4gTm9uZToKICAgICBpbXBvcnQgb3MKIAogICAgIG1vbmtleXBhdGNoID0gTW9u
a2V5UGF0Y2goKQotICAgIG1vbmtleXBhdGNoLnNldGVudigiWFlaMTIzIiwgMiwgcHJlcGVuZD0i
LSIpCi0gICAgYXNzZXJ0IG9zLmVudmlyb25bIlhZWjEyMyJdID09ICIyIgotICAgIG1vbmtleXBh
dGNoLnNldGVudigiWFlaMTIzIiwgMywgcHJlcGVuZD0iLSIpCisgICAgbW9ua2V5cGF0Y2guc2V0
ZW52KCJYWVoxMjMiLCAiMiIsIHByZXBlbmQ9Ii0iKQorICAgIG1vbmtleXBhdGNoLnNldGVudigi
WFlaMTIzIiwgIjMiLCBwcmVwZW5kPSItIikKICAgICBhc3NlcnQgb3MuZW52aXJvblsiWFlaMTIz
Il0gPT0gIjMtMiIKICAgICBtb25rZXlwYXRjaC51bmRvKCkKICAgICBhc3NlcnQgIlhZWjEyMyIg
bm90IGluIG9zLmVudmlyb24KIAogCi1kZWYgdGVzdF9tb25rZXlwYXRjaF9wbHVnaW4odGVzdGRp
cik6CitkZWYgdGVzdF9tb25rZXlwYXRjaF9wbHVnaW4odGVzdGRpcjogVGVzdGRpcikgLT4gTm9u
ZToKICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCiAgICAgICAgICIiIgog
ICAgICAgICBkZWYgdGVzdF9tZXRob2QobW9ua2V5cGF0Y2gpOgpAQCAtMjE4LDcgKzI0Nyw3IEBA
IGRlZiB0ZXN0X21vbmtleXBhdGNoX3BsdWdpbih0ZXN0ZGlyKToKICAgICBhc3NlcnQgdHVwbGUo
cmVzKSA9PSAoMSwgMCwgMCksIHJlcwogCiAKLWRlZiB0ZXN0X3N5c3BhdGhfcHJlcGVuZChtcCk6
CitkZWYgdGVzdF9zeXNwYXRoX3ByZXBlbmQobXA6IE1vbmtleVBhdGNoKSAtPiBOb25lOgogICAg
IG9sZCA9IGxpc3Qoc3lzLnBhdGgpCiAgICAgbXAuc3lzcGF0aF9wcmVwZW5kKCJ3b3JsZCIpCiAg
ICAgbXAuc3lzcGF0aF9wcmVwZW5kKCJoZWxsbyIpCkBAIC0yMzAsMzIgKzI1OSwzNiBAQCBkZWYg
dGVzdF9zeXNwYXRoX3ByZXBlbmQobXApOgogICAgIGFzc2VydCBzeXMucGF0aCA9PSBvbGQKIAog
Ci1kZWYgdGVzdF9zeXNwYXRoX3ByZXBlbmRfZG91YmxlX3VuZG8obXApOgotICAgIG1wLnN5c3Bh
dGhfcHJlcGVuZCgiaGVsbG8gd29ybGQiKQotICAgIG1wLnVuZG8oKQotICAgIHN5cy5wYXRoLmFw
cGVuZCgibW9yZSBoZWxsbyB3b3JsZCIpCi0gICAgbXAudW5kbygpCi0gICAgYXNzZXJ0IHN5cy5w
YXRoWy0xXSA9PSAibW9yZSBoZWxsbyB3b3JsZCIKK2RlZiB0ZXN0X3N5c3BhdGhfcHJlcGVuZF9k
b3VibGVfdW5kbyhtcDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgb2xkX3N5c3BhdGggPSBz
eXMucGF0aFs6XQorICAgIHRyeToKKyAgICAgICAgbXAuc3lzcGF0aF9wcmVwZW5kKCJoZWxsbyB3
b3JsZCIpCisgICAgICAgIG1wLnVuZG8oKQorICAgICAgICBzeXMucGF0aC5hcHBlbmQoIm1vcmUg
aGVsbG8gd29ybGQiKQorICAgICAgICBtcC51bmRvKCkKKyAgICAgICAgYXNzZXJ0IHN5cy5wYXRo
Wy0xXSA9PSAibW9yZSBoZWxsbyB3b3JsZCIKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMucGF0
aFs6XSA9IG9sZF9zeXNwYXRoCiAKIAotZGVmIHRlc3RfY2hkaXJfd2l0aF9wYXRoX2xvY2FsKG1w
LCB0bXBkaXIpOgorZGVmIHRlc3RfY2hkaXJfd2l0aF9wYXRoX2xvY2FsKG1wOiBNb25rZXlQYXRj
aCwgdG1wZGlyOiBweS5wYXRoLmxvY2FsKSAtPiBOb25lOgogICAgIG1wLmNoZGlyKHRtcGRpcikK
ICAgICBhc3NlcnQgb3MuZ2V0Y3dkKCkgPT0gdG1wZGlyLnN0cnBhdGgKIAogCi1kZWYgdGVzdF9j
aGRpcl93aXRoX3N0cihtcCwgdG1wZGlyKToKK2RlZiB0ZXN0X2NoZGlyX3dpdGhfc3RyKG1wOiBN
b25rZXlQYXRjaCwgdG1wZGlyOiBweS5wYXRoLmxvY2FsKSAtPiBOb25lOgogICAgIG1wLmNoZGly
KHRtcGRpci5zdHJwYXRoKQogICAgIGFzc2VydCBvcy5nZXRjd2QoKSA9PSB0bXBkaXIuc3RycGF0
aAogCiAKLWRlZiB0ZXN0X2NoZGlyX3VuZG8obXAsIHRtcGRpcik6CitkZWYgdGVzdF9jaGRpcl91
bmRvKG1wOiBNb25rZXlQYXRjaCwgdG1wZGlyOiBweS5wYXRoLmxvY2FsKSAtPiBOb25lOgogICAg
IGN3ZCA9IG9zLmdldGN3ZCgpCiAgICAgbXAuY2hkaXIodG1wZGlyKQogICAgIG1wLnVuZG8oKQog
ICAgIGFzc2VydCBvcy5nZXRjd2QoKSA9PSBjd2QKIAogCi1kZWYgdGVzdF9jaGRpcl9kb3VibGVf
dW5kbyhtcCwgdG1wZGlyKToKK2RlZiB0ZXN0X2NoZGlyX2RvdWJsZV91bmRvKG1wOiBNb25rZXlQ
YXRjaCwgdG1wZGlyOiBweS5wYXRoLmxvY2FsKSAtPiBOb25lOgogICAgIG1wLmNoZGlyKHRtcGRp
ci5zdHJwYXRoKQogICAgIG1wLnVuZG8oKQogICAgIHRtcGRpci5jaGRpcigpCkBAIC0yNjMsNyAr
Mjk2LDcgQEAgZGVmIHRlc3RfY2hkaXJfZG91YmxlX3VuZG8obXAsIHRtcGRpcik6CiAgICAgYXNz
ZXJ0IG9zLmdldGN3ZCgpID09IHRtcGRpci5zdHJwYXRoCiAKIAotZGVmIHRlc3RfaXNzdWUxODVf
dGltZV9icmVha3ModGVzdGRpcik6CitkZWYgdGVzdF9pc3N1ZTE4NV90aW1lX2JyZWFrcyh0ZXN0
ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAg
IiIiCiAgICAgICAgIGltcG9ydCB0aW1lCkBAIC0yODEsNyArMzE0LDcgQEAgZGVmIHRlc3RfaXNz
dWUxODVfdGltZV9icmVha3ModGVzdGRpcik6CiAgICAgKQogCiAKLWRlZiB0ZXN0X2ltcG9ydGVy
cm9yKHRlc3RkaXIpOgorZGVmIHRlc3RfaW1wb3J0ZXJyb3IodGVzdGRpcjogVGVzdGRpcikgLT4g
Tm9uZToKICAgICBwID0gdGVzdGRpci5ta3B5ZGlyKCJwYWNrYWdlIikKICAgICBwLmpvaW4oImEu
cHkiKS53cml0ZSgKICAgICAgICAgdGV4dHdyYXAuZGVkZW50KApAQCAtMzAzLDUxICszMzYsNjIg
QEAgZGVmIHRlc3RfaW1wb3J0ZXJyb3IodGVzdGRpcik6CiAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgIiIi
Ci0gICAgICAgICppbXBvcnQgZXJyb3IgaW4gcGFja2FnZS5hOiBObyBtb2R1bGUgbmFtZWQgezB9
ZG9lc25vdGV4aXN0ezB9KgotICAgICIiIi5mb3JtYXQoCi0gICAgICAgICAgICAiJyIgaWYgc3lz
LnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlICIiCi0gICAgICAgICkKKyAgICAgICAgKmltcG9y
dCBlcnJvciBpbiBwYWNrYWdlLmE6IE5vIG1vZHVsZSBuYW1lZCAnZG9lc25vdGV4aXN0JyoKKyAg
ICAiIiIKICAgICApCiAKIAotY2xhc3MgU2FtcGxlTmV3KG9iamVjdCk6Ci0KK2NsYXNzIFNhbXBs
ZToKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGhlbGxvKCk6CisgICAgZGVmIGhlbGxvKCkg
LT4gYm9vbDoKICAgICAgICAgcmV0dXJuIFRydWUKIAogCi1jbGFzcyBTYW1wbGVOZXdJbmhlcml0
KFNhbXBsZU5ldyk6Ci0gICAgcGFzcwotCi0KLWNsYXNzIFNhbXBsZU9sZChvYmplY3QpOgotICAg
ICMgb2xkc3R5bGUgb24gcHl0aG9uMgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgaGVsbG8o
KToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1jbGFzcyBTYW1wbGVPbGRJbmhlcml0KFNhbXBs
ZU9sZCk6CitjbGFzcyBTYW1wbGVJbmhlcml0KFNhbXBsZSk6CiAgICAgcGFzcwogCiAKIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKLSAgICAiU2FtcGxlIiwKLSAgICBbU2FtcGxlTmV3LCBTYW1w
bGVOZXdJbmhlcml0LCBTYW1wbGVPbGQsIFNhbXBsZU9sZEluaGVyaXRdLAotICAgIGlkcz1bIm5l
dyIsICJuZXctaW5oZXJpdCIsICJvbGQiLCAib2xkLWluaGVyaXQiXSwKKyAgICAiU2FtcGxlIiwg
W1NhbXBsZSwgU2FtcGxlSW5oZXJpdF0sIGlkcz1bIm5ldyIsICJuZXctaW5oZXJpdCJdLAogKQot
ZGVmIHRlc3RfaXNzdWUxNTZfdW5kb19zdGF0aWNtZXRob2QoU2FtcGxlKToKK2RlZiB0ZXN0X2lz
c3VlMTU2X3VuZG9fc3RhdGljbWV0aG9kKFNhbXBsZTogIlR5cGVbU2FtcGxlXSIpIC0+IE5vbmU6
CiAgICAgbW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRjaCgpCiAKICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKFNhbXBsZSwgImhlbGxvIiwgTm9uZSkKICAgICBhc3NlcnQgU2FtcGxlLmhlbGxvIGlzIE5v
bmUKIAotICAgIG1vbmtleXBhdGNoLnVuZG8oKQorICAgIG1vbmtleXBhdGNoLnVuZG8oKSAgIyB0
eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCiAgICAgYXNzZXJ0IFNhbXBsZS5oZWxsbygpCiAKIAot
ZGVmIHRlc3RfaXNzdWUxMzM4X25hbWVfcmVzb2x2aW5nKCk6CitkZWYgdGVzdF91bmRvX2NsYXNz
X2Rlc2NyaXB0b3JzX2RlbGF0dHIoKSAtPiBOb25lOgorICAgIGNsYXNzIFNhbXBsZVBhcmVudDoK
KyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBoZWxsbyhfY2xzKToKKyAgICAgICAg
ICAgIHBhc3MKKworICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiB3b3JsZCgpOgor
ICAgICAgICAgICAgcGFzcworCisgICAgY2xhc3MgU2FtcGxlQ2hpbGQoU2FtcGxlUGFyZW50KToK
KyAgICAgICAgcGFzcworCisgICAgbW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRjaCgpCisKKyAgICBv
cmlnaW5hbF9oZWxsbyA9IFNhbXBsZUNoaWxkLmhlbGxvCisgICAgb3JpZ2luYWxfd29ybGQgPSBT
YW1wbGVDaGlsZC53b3JsZAorICAgIG1vbmtleXBhdGNoLmRlbGF0dHIoU2FtcGxlUGFyZW50LCAi
aGVsbG8iKQorICAgIG1vbmtleXBhdGNoLmRlbGF0dHIoU2FtcGxlUGFyZW50LCAid29ybGQiKQor
ICAgIGFzc2VydCBnZXRhdHRyKFNhbXBsZVBhcmVudCwgImhlbGxvIiwgTm9uZSkgaXMgTm9uZQor
ICAgIGFzc2VydCBnZXRhdHRyKFNhbXBsZVBhcmVudCwgIndvcmxkIiwgTm9uZSkgaXMgTm9uZQor
CisgICAgbW9ua2V5cGF0Y2gudW5kbygpCisgICAgYXNzZXJ0IG9yaWdpbmFsX2hlbGxvID09IFNh
bXBsZUNoaWxkLmhlbGxvCisgICAgYXNzZXJ0IG9yaWdpbmFsX3dvcmxkID09IFNhbXBsZUNoaWxk
LndvcmxkCisKKworZGVmIHRlc3RfaXNzdWUxMzM4X25hbWVfcmVzb2x2aW5nKCkgLT4gTm9uZToK
ICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJyZXF1ZXN0cyIpCiAgICAgbW9ua2V5cGF0Y2ggPSBN
b25rZXlQYXRjaCgpCiAgICAgdHJ5OgpAQCAtMzU2LDcgKzQwMCw3IEBAIGRlZiB0ZXN0X2lzc3Vl
MTMzOF9uYW1lX3Jlc29sdmluZygpOgogICAgICAgICBtb25rZXlwYXRjaC51bmRvKCkKIAogCi1k
ZWYgdGVzdF9jb250ZXh0KCk6CitkZWYgdGVzdF9jb250ZXh0KCkgLT4gTm9uZToKICAgICBtb25r
ZXlwYXRjaCA9IE1vbmtleVBhdGNoKCkKIAogICAgIGltcG9ydCBmdW5jdG9vbHMKQEAgLTM2Niwz
ICs0MTAsMzcgQEAgZGVmIHRlc3RfY29udGV4dCgpOgogICAgICAgICBtLnNldGF0dHIoZnVuY3Rv
b2xzLCAicGFydGlhbCIsIDMpCiAgICAgICAgIGFzc2VydCBub3QgaW5zcGVjdC5pc2NsYXNzKGZ1
bmN0b29scy5wYXJ0aWFsKQogICAgIGFzc2VydCBpbnNwZWN0LmlzY2xhc3MoZnVuY3Rvb2xzLnBh
cnRpYWwpCisKKworZGVmIHRlc3Rfc3lzcGF0aF9wcmVwZW5kX3dpdGhfbmFtZXNwYWNlX3BhY2th
Z2VzKAorICAgIHRlc3RkaXI6IFRlc3RkaXIsIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaAorKSAt
PiBOb25lOgorICAgIGZvciBkaXJuYW1lIGluICJoZWxsbyIsICJ3b3JsZCI6CisgICAgICAgIGQg
PSB0ZXN0ZGlyLm1rZGlyKGRpcm5hbWUpCisgICAgICAgIG5zID0gZC5ta2RpcigibnNfcGtnIikK
KyAgICAgICAgbnMuam9pbigiX19pbml0X18ucHkiKS53cml0ZSgKKyAgICAgICAgICAgICJfX2lt
cG9ydF9fKCdwa2dfcmVzb3VyY2VzJykuZGVjbGFyZV9uYW1lc3BhY2UoX19uYW1lX18pIgorICAg
ICAgICApCisgICAgICAgIGxpYiA9IG5zLm1rZGlyKGRpcm5hbWUpCisgICAgICAgIGxpYi5qb2lu
KCJfX2luaXRfXy5weSIpLndyaXRlKCJkZWYgY2hlY2soKTogcmV0dXJuICVyIiAlIGRpcm5hbWUp
CisKKyAgICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQoImhlbGxvIikKKyAgICBpbXBvcnQg
bnNfcGtnLmhlbGxvCisKKyAgICBhc3NlcnQgbnNfcGtnLmhlbGxvLmNoZWNrKCkgPT0gImhlbGxv
IgorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgaW1wb3J0
IG5zX3BrZy53b3JsZAorCisgICAgIyBQcmVwZW5kaW5nIHNob3VsZCBjYWxsIGZpeHVwX25hbWVz
cGFjZV9wYWNrYWdlcy4KKyAgICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQoIndvcmxkIikK
KyAgICBpbXBvcnQgbnNfcGtnLndvcmxkCisKKyAgICBhc3NlcnQgbnNfcGtnLndvcmxkLmNoZWNr
KCkgPT0gIndvcmxkIgorCisgICAgIyBTaG91bGQgaW52YWxpZGF0ZSBjYWNoZXMgdmlhIGltcG9y
dGxpYi5pbnZhbGlkYXRlX2NhY2hlcy4KKyAgICB0bXBkaXIgPSB0ZXN0ZGlyLnRtcGRpcgorICAg
IG1vZHVsZXNfdG1wZGlyID0gdG1wZGlyLm1rZGlyKCJtb2R1bGVzX3RtcGRpciIpCisgICAgbW9u
a2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5kKHN0cihtb2R1bGVzX3RtcGRpcikpCisgICAgbW9kdWxl
c190bXBkaXIuam9pbigibWFpbl9hcHAucHkiKS53cml0ZSgiYXBwID0gVHJ1ZSIpCisgICAgZnJv
bSBtYWluX2FwcCBpbXBvcnQgYXBwICAjIG5vcWE6IEY0MDEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9ub2Rlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ub2Rl
cy5weQppbmRleCBlZWUzYWM4ZTllNGMuLmY5MDI2ZWM2MTlmYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X25vZGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9ub2Rlcy5weQpAQCAtMSw2ICsxLDggQEAKLWltcG9ydCBweXRlc3QKK2ltcG9ydCBweQogCitp
bXBvcnQgcHl0ZXN0CiBmcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCitmcm9tIF9weXRlc3QucHl0
ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCkBAIC05
LDEzICsxMSw3OCBAQCBmcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCiAgICAgICAgICgiIiwgIiIs
IFRydWUpLAogICAgICAgICAoIiIsICJmb28iLCBUcnVlKSwKICAgICAgICAgKCIiLCAiZm9vL2Jh
ciIsIFRydWUpLAotICAgICAgICAoIiIsICJmb28vYmFyOjpUZXN0QmF6OjooKSIsIFRydWUpLAor
ICAgICAgICAoIiIsICJmb28vYmFyOjpUZXN0QmF6IiwgVHJ1ZSksCiAgICAgICAgICgiZm9vIiwg
ImZvb2QiLCBGYWxzZSksCi0gICAgICAgICgiZm9vL2Jhcjo6VGVzdEJhejo6KCkiLCAiZm9vL2Jh
ciIsIEZhbHNlKSwKLSAgICAgICAgKCJmb28vYmFyOjpUZXN0QmF6OjooKSIsICJmb28vYmFyOjpU
ZXN0Qm9wOjooKSIsIEZhbHNlKSwKLSAgICAgICAgKCJmb28vYmFyIiwgImZvby9iYXI6OlRlc3RC
b3A6OigpIiwgVHJ1ZSksCisgICAgICAgICgiZm9vL2Jhcjo6VGVzdEJheiIsICJmb28vYmFyIiwg
RmFsc2UpLAorICAgICAgICAoImZvby9iYXI6OlRlc3RCYXoiLCAiZm9vL2Jhcjo6VGVzdEJvcCIs
IEZhbHNlKSwKKyAgICAgICAgKCJmb28vYmFyIiwgImZvby9iYXI6OlRlc3RCb3AiLCBUcnVlKSwK
ICAgICApLAogKQotZGVmIHRlc3RfaXNjaGlsZG5vZGUoYmFzZWlkLCBub2RlaWQsIGV4cGVjdGVk
KToKK2RlZiB0ZXN0X2lzY2hpbGRub2RlKGJhc2VpZDogc3RyLCBub2RlaWQ6IHN0ciwgZXhwZWN0
ZWQ6IGJvb2wpIC0+IE5vbmU6CiAgICAgcmVzdWx0ID0gbm9kZXMuaXNjaGlsZG5vZGUoYmFzZWlk
LCBub2RlaWQpCiAgICAgYXNzZXJ0IHJlc3VsdCBpcyBleHBlY3RlZAorCisKK2RlZiB0ZXN0X25v
ZGVfZnJvbV9wYXJlbnRfZGlzYWxsb3dlZF9hcmd1bWVudHMoKSAtPiBOb25lOgorICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIG1hdGNoPSJzZXNzaW9uIGlzIik6CisgICAgICAgIG5v
ZGVzLk5vZGUuZnJvbV9wYXJlbnQoTm9uZSwgc2Vzc2lvbj1Ob25lKSAgIyB0eXBlOiBpZ25vcmVb
YXJnLXR5cGVdCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgbWF0Y2g9ImNvbmZp
ZyBpcyIpOgorICAgICAgICBub2Rlcy5Ob2RlLmZyb21fcGFyZW50KE5vbmUsIGNvbmZpZz1Ob25l
KSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisKKworZGVmIHRlc3Rfc3RkX3dhcm5fbm90X3B5
dGVzdHdhcm5pbmcodGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICBpdGVtcyA9IHRlc3Rk
aXIuZ2V0aXRlbXMoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAg
ICAgcGFzcworICAgICIiIgorICAgICkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJv
ciwgbWF0Y2g9Ii4qaW5zdGFuY2Ugb2YgUHl0ZXN0V2FybmluZy4qIik6CisgICAgICAgIGl0ZW1z
WzBdLndhcm4oVXNlcldhcm5pbmcoInNvbWUgd2FybmluZyIpKSAgIyB0eXBlOiBpZ25vcmVbYXJn
LXR5cGVdCisKKworZGVmIHRlc3RfX2NoZWNrX2luaXRpYWxwYXRoc19mb3JfcmVscGF0aCgpIC0+
IE5vbmU6CisgICAgIiIiRW5zdXJlIHRoYXQgaXQgaGFuZGxlcyBkaXJzLCBhbmQgZG9lcyBub3Qg
YWx3YXlzIHVzZSBkaXJuYW1lLiIiIgorICAgIGN3ZCA9IHB5LnBhdGgubG9jYWwoKQorCisgICAg
Y2xhc3MgRmFrZVNlc3Npb24xOgorICAgICAgICBfaW5pdGlhbHBhdGhzID0gW2N3ZF0KKworICAg
IGFzc2VydCBub2Rlcy5fY2hlY2tfaW5pdGlhbHBhdGhzX2Zvcl9yZWxwYXRoKEZha2VTZXNzaW9u
MSwgY3dkKSA9PSAiIgorCisgICAgc3ViID0gY3dkLmpvaW4oImZpbGUiKQorCisgICAgY2xhc3Mg
RmFrZVNlc3Npb24yOgorICAgICAgICBfaW5pdGlhbHBhdGhzID0gW2N3ZF0KKworICAgIGFzc2Vy
dCBub2Rlcy5fY2hlY2tfaW5pdGlhbHBhdGhzX2Zvcl9yZWxwYXRoKEZha2VTZXNzaW9uMiwgc3Vi
KSA9PSAiZmlsZSIKKworICAgIG91dHNpZGUgPSBweS5wYXRoLmxvY2FsKCIvb3V0c2lkZSIpCisg
ICAgYXNzZXJ0IG5vZGVzLl9jaGVja19pbml0aWFscGF0aHNfZm9yX3JlbHBhdGgoRmFrZVNlc3Np
b24yLCBvdXRzaWRlKSBpcyBOb25lCisKKworZGVmIHRlc3RfZmFpbHVyZV93aXRoX2NoYW5nZWRf
Y3dkKHRlc3RkaXIpOgorICAgICIiIgorICAgIFRlc3QgZmFpbHVyZSBsaW5lcyBzaG91bGQgdXNl
IGFic29sdXRlIHBhdGhzIGlmIGN3ZCBoYXMgY2hhbmdlZCBzaW5jZQorICAgIGludm9jYXRpb24s
IHNvIHRoZSBwYXRoIGlzIGNvcnJlY3QgKCM2NDI4KS4KKyAgICAiIiIKKyAgICBwID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIGlt
cG9ydCBweXRlc3QKKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIHByaXZh
dGVfZGlyKCk6CisgICAgICAgICAgICBvdXRfZGlyID0gJ2RkZCcKKyAgICAgICAgICAgIG9zLm1r
ZGlyKG91dF9kaXIpCisgICAgICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAg
ICAgIG9zLmNoZGlyKG91dF9kaXIpCisgICAgICAgICAgICB5aWVsZCBvdXRfZGlyCisgICAgICAg
ICAgICBvcy5jaGRpcihvbGRfZGlyKQorCisgICAgICAgIGRlZiB0ZXN0X3Nob3dfd3JvbmdfcGF0
aChwcml2YXRlX2Rpcik6CisgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAiIiIKKyAgICAp
CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbc3RyKHApICsgIjoqOiBBc3NlcnRpb25FcnJvciIsICIqMSBmYWlsZWQgaW4g
KiJdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X25vc2UucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfbm9zZS5weQppbmRleCBhYmU3MzIzNzU0ZWQuLmI2MjAwYzZj
OWFkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X25vc2UucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X25vc2UucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9u
CiBpbXBvcnQgcHl0ZXN0CiAKIApAQCAtMzIsOCArMzEsNyBAQCBkZWYgdGVzdF9zZXR1cF9mdW5j
X3dpdGhfc2V0dXBfZGVjb3JhdG9yKCk6CiAKICAgICB2YWx1ZXMgPSBbXQogCi0gICAgY2xhc3Mg
QShvYmplY3QpOgotCisgICAgY2xhc3MgQToKICAgICAgICAgQHB5dGVzdC5maXh0dXJlKGF1dG91
c2U9VHJ1ZSkKICAgICAgICAgZGVmIGYoc2VsZik6CiAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5k
KDEpCkBAIC00NSw3ICs0Myw3IEBAIGRlZiB0ZXN0X3NldHVwX2Z1bmNfd2l0aF9zZXR1cF9kZWNv
cmF0b3IoKToKIGRlZiB0ZXN0X3NldHVwX2Z1bmNfbm90X2NhbGxhYmxlKCk6CiAgICAgZnJvbSBf
cHl0ZXN0Lm5vc2UgaW1wb3J0IGNhbGxfb3B0aW9uYWwKIAotICAgIGNsYXNzIEEob2JqZWN0KToK
KyAgICBjbGFzcyBBOgogICAgICAgICBmID0gMQogCiAgICAgY2FsbF9vcHRpb25hbChBKCksICJm
IikKQEAgLTY4LDExICs2NiwxMSBAQCBkZWYgdGVzdF9ub3NlX3NldHVwX2Z1bmModGVzdGRpcik6
CiAKICAgICAgICAgQHdpdGhfc2V0dXAobXlfc2V0dXAsIG15X3RlYXJkb3duKQogICAgICAgICBk
ZWYgdGVzdF9oZWxsbygpOgotICAgICAgICAgICAgcHJpbnQgKHZhbHVlcykKKyAgICAgICAgICAg
IHByaW50KHZhbHVlcykKICAgICAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWzFdCiAKICAgICAg
ICAgZGVmIHRlc3Rfd29ybGQoKToKLSAgICAgICAgICAgIHByaW50ICh2YWx1ZXMpCisgICAgICAg
ICAgICBwcmludCh2YWx1ZXMpCiAgICAgICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsxLDJdCiAK
ICAgICAiIiIKQEAgLTkyLDExICs5MCwxMSBAQCBkZWYgdGVzdF9ub3NlX3NldHVwX2Z1bmNfZmFp
bHVyZSh0ZXN0ZGlyKToKIAogICAgICAgICBAd2l0aF9zZXR1cChteV9zZXR1cCwgbXlfdGVhcmRv
d24pCiAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKCk6Ci0gICAgICAgICAgICBwcmludCAodmFsdWVz
KQorICAgICAgICAgICAgcHJpbnQodmFsdWVzKQogICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9
PSBbMV0KIAogICAgICAgICBkZWYgdGVzdF93b3JsZCgpOgotICAgICAgICAgICAgcHJpbnQgKHZh
bHVlcykKKyAgICAgICAgICAgIHByaW50KHZhbHVlcykKICAgICAgICAgICAgIGFzc2VydCB2YWx1
ZXMgPT0gWzEsMl0KIAogICAgICIiIgpAQCAtMTQ0LDExICsxNDIsMTEgQEAgZGVmIHRlc3Rfbm9z
ZV9zZXR1cF9wYXJ0aWFsKHRlc3RkaXIpOgogICAgICAgICBteV90ZWFyZG93bl9wYXJ0aWFsID0g
cGFydGlhbChteV90ZWFyZG93biwgMikKIAogICAgICAgICBkZWYgdGVzdF9oZWxsbygpOgotICAg
ICAgICAgICAgcHJpbnQgKHZhbHVlcykKKyAgICAgICAgICAgIHByaW50KHZhbHVlcykKICAgICAg
ICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWzFdCiAKICAgICAgICAgZGVmIHRlc3Rfd29ybGQoKToK
LSAgICAgICAgICAgIHByaW50ICh2YWx1ZXMpCisgICAgICAgICAgICBwcmludCh2YWx1ZXMpCiAg
ICAgICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsxLDJdCiAKICAgICAgICAgdGVzdF9oZWxsby5z
ZXR1cCA9IG15X3NldHVwX3BhcnRpYWwKQEAgLTE1OSw3MyArMTU3LDYgQEAgZGVmIHRlc3Rfbm9z
ZV9zZXR1cF9wYXJ0aWFsKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIioyIHBhc3NlZCoiXSkKIAogCi1kZWYgdGVzdF9ub3NlX3Rlc3RfZ2VuZXJhdG9yX2ZpeHR1
cmVzKHRlc3RkaXIpOgotICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgot
ICAgICAgICAjIHRha2VuIGZyb20gbm9zZS0wLjExLjEgdW5pdF90ZXN0cy90ZXN0X2dlbmVyYXRv
cl9maXh0dXJlcy5weQotICAgICAgICBmcm9tIG5vc2UudG9vbHMgaW1wb3J0IGVxXwotICAgICAg
ICBjYWxsZWQgPSBbXQotCi0gICAgICAgIGRlZiBvdXRlcl9zZXR1cCgpOgotICAgICAgICAgICAg
Y2FsbGVkLmFwcGVuZCgnb3V0ZXJfc2V0dXAnKQotCi0gICAgICAgIGRlZiBvdXRlcl90ZWFyZG93
bigpOgotICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgnb3V0ZXJfdGVhcmRvd24nKQotCi0gICAg
ICAgIGRlZiBpbm5lcl9zZXR1cCgpOgotICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgnaW5uZXJf
c2V0dXAnKQotCi0gICAgICAgIGRlZiBpbm5lcl90ZWFyZG93bigpOgotICAgICAgICAgICAgY2Fs
bGVkLmFwcGVuZCgnaW5uZXJfdGVhcmRvd24nKQotCi0gICAgICAgIGRlZiB0ZXN0X2dlbigpOgot
ICAgICAgICAgICAgY2FsbGVkWzpdID0gW10KLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAs
IDUpOgotICAgICAgICAgICAgICAgIHlpZWxkIGNoZWNrLCBpCi0KLSAgICAgICAgZGVmIGNoZWNr
KGkpOgotICAgICAgICAgICAgZXhwZWN0ID0gWydvdXRlcl9zZXR1cCddCi0gICAgICAgICAgICBm
b3IgeCBpbiByYW5nZSgwLCBpKToKLSAgICAgICAgICAgICAgICBleHBlY3QuYXBwZW5kKCdpbm5l
cl9zZXR1cCcpCi0gICAgICAgICAgICAgICAgZXhwZWN0LmFwcGVuZCgnaW5uZXJfdGVhcmRvd24n
KQotICAgICAgICAgICAgZXhwZWN0LmFwcGVuZCgnaW5uZXJfc2V0dXAnKQotICAgICAgICAgICAg
ZXFfKGNhbGxlZCwgZXhwZWN0KQotCi0KLSAgICAgICAgdGVzdF9nZW4uc2V0dXAgPSBvdXRlcl9z
ZXR1cAotICAgICAgICB0ZXN0X2dlbi50ZWFyZG93biA9IG91dGVyX3RlYXJkb3duCi0gICAgICAg
IGNoZWNrLnNldHVwID0gaW5uZXJfc2V0dXAKLSAgICAgICAgY2hlY2sudGVhcmRvd24gPSBpbm5l
cl90ZWFyZG93bgotCi0gICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAg
ICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICAgICAgICAgIHByaW50ICgic2V0dXAgY2FsbGVk
IGluICVzIiAlIHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBbJ3NldHVwJ10K
LQotICAgICAgICAgICAgZGVmIHRlYXJkb3duKHNlbGYpOgotICAgICAgICAgICAgICAgIHByaW50
ICgidGVhcmRvd24gY2FsbGVkIGluICVzIiAlIHNlbGYpCi0gICAgICAgICAgICAgICAgZXFfKHNl
bGYuY2FsbGVkLCBbJ3NldHVwJ10pCi0gICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQuYXBwZW5k
KCd0ZWFyZG93bicpCi0KLSAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgotICAgICAgICAgICAg
ICAgIHByaW50ICgidGVzdCBjYWxsZWQgaW4gJXMiICUgc2VsZikKLSAgICAgICAgICAgICAgICBm
b3IgaSBpbiByYW5nZSgwLCA1KToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5jaGVj
aywgaQotCi0gICAgICAgICAgICBkZWYgY2hlY2soc2VsZiwgaSk6Ci0gICAgICAgICAgICAgICAg
cHJpbnQgKCJjaGVjayBjYWxsZWQgaW4gJXMiICUgc2VsZikKLSAgICAgICAgICAgICAgICBleHBl
Y3QgPSBbJ3NldHVwJ10KLSAgICAgICAgICAgICAgICAjZm9yIHggaW4gcmFuZ2UoMCwgaSk6Ci0g
ICAgICAgICAgICAgICAgIyAgICBleHBlY3QuYXBwZW5kKCdzZXR1cCcpCi0gICAgICAgICAgICAg
ICAgIyAgICBleHBlY3QuYXBwZW5kKCd0ZWFyZG93bicpCi0gICAgICAgICAgICAgICAgI2V4cGVj
dC5hcHBlbmQoJ3NldHVwJykKLSAgICAgICAgICAgICAgICBlcV8oc2VsZi5jYWxsZWQsIGV4cGVj
dCkKLSAgICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi1w
IiwgIm5vc2UiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxMCBwYXNzZWQq
Il0pCi0KLQogZGVmIHRlc3RfbW9kdWxlX2xldmVsX3NldHVwKHRlc3RkaXIpOgogICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCkBAIC0yOTgsNyArMjI5LDcgQEAgZGVmIHRlc3Rf
bm9zZV9zZXR1cF9vcmRlcmluZyh0ZXN0ZGlyKToKIAogZGVmIHRlc3RfYXBpd3JhcHBlcl9wcm9i
bGVtX2lzc3VlMjYwKHRlc3RkaXIpOgogICAgICMgdGhpcyB3b3VsZCBlbmQgdXAgdHJ5aW5nIGEg
Y2FsbCBhbiBvcHRpb25hbCB0ZWFyZG93biBvbiB0aGUgY2xhc3MKLSAgICAjIGZvciBwbGFpbiB1
bml0dGVzdHMgd2UgZG9udCB3YW50IG5vc2UgYmVoYXZpb3VyCisgICAgIyBmb3IgcGxhaW4gdW5p
dHRlc3RzIHdlIGRvbid0IHdhbnQgbm9zZSBiZWhhdmlvdXIKICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgdW5pdHRlc3QKQEAgLTMyMiw3ICsyNTMs
NyBAQCBkZWYgdGVzdF9hcGl3cmFwcGVyX3Byb2JsZW1faXNzdWUyNjAodGVzdGRpcik6CiAKIAog
ZGVmIHRlc3Rfc2V0dXBfdGVhcmRvd25fbGlua2luZ19pc3N1ZTI2NSh0ZXN0ZGlyKToKLSAgICAj
IHdlIGFjY2lkZW50YWxseSBkaWRudCBpbnRlZ3JhdGUgbm9zZSBzZXR1cHN0YXRlIHdpdGggbm9y
bWFsIHNldHVwc3RhdGUKKyAgICAjIHdlIGFjY2lkZW50YWxseSBkaWRuJ3QgaW50ZWdyYXRlIG5v
c2Ugc2V0dXBzdGF0ZSB3aXRoIG5vcm1hbCBzZXR1cHN0YXRlCiAgICAgIyB0aGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHdvbid0IGhhcHBlbiBhZ2FpbgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgJycnCkBAIC00MzEsMyArMzYyLDYzIEBAIGRlZiB0ZXN0X25vdHRlc3RfY2xhc3NfZGVj
b3JhdG9yKHRlc3RkaXIpOgogICAgIGFzc2VydCBub3QgcmVwcmVjLmdldGZhaWxlZGNvbGxlY3Rp
b25zKCkKICAgICBjYWxscyA9IHJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9sb2dy
ZXBvcnQiKQogICAgIGFzc2VydCBub3QgY2FsbHMKKworCitkZWYgdGVzdF9za2lwX3Rlc3Rfd2l0
aF91bmljb2RlKHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIi
XAorICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAgY2xhc3MgVGVzdENsYXNzKCk6Cisg
ICAgICAgICAgICBkZWYgdGVzdF9pbyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0
dGVzdC5Ta2lwVGVzdCgn8J+YiicpCisgICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAx
IHNraXBwZWQgKiJdKQorCisKK2RlZiB0ZXN0X3JhaXNlcyh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBmcm9tIG5vc2UudG9vbHMgaW1wb3J0
IHJhaXNlcworCisgICAgICAgIEByYWlzZXMoUnVudGltZUVycm9yKQorICAgICAgICBkZWYgdGVz
dF9yYWlzZXNfcnVudGltZWVycm9yKCk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IK
KworICAgICAgICBAcmFpc2VzKEV4Y2VwdGlvbikKKyAgICAgICAgZGVmIHRlc3RfcmFpc2VzX2Jh
c2VleGNlcHRpb25fbm90X2NhdWdodCgpOgorICAgICAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlv
bgorCisgICAgICAgIEByYWlzZXMoQmFzZUV4Y2VwdGlvbikKKyAgICAgICAgZGVmIHRlc3RfcmFp
c2VzX2Jhc2VleGNlcHRpb25fY2F1Z2h0KCk6CisgICAgICAgICAgICByYWlzZSBCYXNlRXhjZXB0
aW9uCisgICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXZ2IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAg
ICAgICAgICJ0ZXN0X3JhaXNlcy5weTo6dGVzdF9yYWlzZXNfcnVudGltZWVycm9yIFBBU1NFRCoi
LAorICAgICAgICAgICAgInRlc3RfcmFpc2VzLnB5Ojp0ZXN0X3JhaXNlc19iYXNlZXhjZXB0aW9u
X25vdF9jYXVnaHQgRkFJTEVEKiIsCisgICAgICAgICAgICAidGVzdF9yYWlzZXMucHk6OnRlc3Rf
cmFpc2VzX2Jhc2VleGNlcHRpb25fY2F1Z2h0IFBBU1NFRCoiLAorICAgICAgICAgICAgIio9IEZB
SUxVUkVTID0qIiwKKyAgICAgICAgICAgICIqXyB0ZXN0X3JhaXNlc19iYXNlZXhjZXB0aW9uX25v
dF9jYXVnaHQgXyoiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAiYXJnID0gKCksIGt3
ID0ge30iLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAiICAgIGRlZiBuZXdmdW5jKCph
cmcsICoqa3cpOiIsCisgICAgICAgICAgICAiICAgICAgICB0cnk6IiwKKyAgICAgICAgICAgICI+
ICAgICAgICAgICBmdW5jKCphcmcsICoqa3cpIiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAg
ICAgIiovbm9zZS8qOiAiLAorICAgICAgICAgICAgIl8gXyAqIiwKKyAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgIiAgICBAcmFpc2VzKEV4Y2VwdGlvbikiLAorICAgICAgICAgICAgIiAgICBk
ZWYgdGVzdF9yYWlzZXNfYmFzZWV4Y2VwdGlvbl9ub3RfY2F1Z2h0KCk6IiwKKyAgICAgICAgICAg
ICI+ICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24iLAorICAgICAgICAgICAgIkUgICAgICAgQmFz
ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICJ0ZXN0X3JhaXNlcy5w
eTo5OiBCYXNlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICIqIDEgZmFpbGVkLCAyIHBhc3NlZCAq
IiwKKyAgICAgICAgXQorICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9wYXJzZW9wdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wYXJzZW9wdC5weQppbmRl
eCA3OTA3NmNhZmQ4MTAuLjRkNjNkOTllZWFiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X3BhcnNlb3B0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wYXJz
ZW9wdC5weQpAQCAtMSwyNiArMSwzMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCi1pbXBv
cnQgc3lzCiBpbXBvcnQgb3MKK2ltcG9ydCBzaGxleAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9y
dCBzeXMKKwogaW1wb3J0IHB5CisKIGltcG9ydCBweXRlc3QKIGZyb20gX3B5dGVzdC5jb25maWcg
aW1wb3J0IGFyZ3BhcnNpbmcgYXMgcGFyc2VvcHQKK2Zyb20gX3B5dGVzdC5jb25maWcuZXhjZXB0
aW9ucyBpbXBvcnQgVXNhZ2VFcnJvcgogCiAKIEBweXRlc3QuZml4dHVyZQotZGVmIHBhcnNlcigp
OgorZGVmIHBhcnNlcigpIC0+IHBhcnNlb3B0LlBhcnNlcjoKICAgICByZXR1cm4gcGFyc2VvcHQu
UGFyc2VyKCkKIAogCi1jbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9u
b19oZWxwX2J5X2RlZmF1bHQoc2VsZiwgY2Fwc3lzKToKK2NsYXNzIFRlc3RQYXJzZXI6CisgICAg
ZGVmIHRlc3Rfbm9faGVscF9ieV9kZWZhdWx0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNl
ciA9IHBhcnNlb3B0LlBhcnNlcih1c2FnZT0ieHl6IikKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhT
eXN0ZW1FeGl0LCBsYW1iZGE6IHBhcnNlci5wYXJzZShbIi1oIl0pKQotICAgICAgICBvdXQsIGVy
ciA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkKLSAgICAgICAgYXNzZXJ0IGVyci5maW5kKCJlcnJvcjog
dW5yZWNvZ25pemVkIGFyZ3VtZW50cyIpICE9IC0xCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVXNh
Z2VFcnJvciwgbGFtYmRhOiBwYXJzZXIucGFyc2UoWyItaCJdKSkKKworICAgIGRlZiB0ZXN0X2N1
c3RvbV9wcm9nKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAtPiBOb25lOgorICAgICAg
ICAiIiJDdXN0b20gcHJvZyBjYW4gYmUgc2V0IGZvciBgYXJncGFyc2UuQXJndW1lbnRQYXJzZXJg
LiIiIgorICAgICAgICBhc3NlcnQgcGFyc2VyLl9nZXRwYXJzZXIoKS5wcm9nID09IG9zLnBhdGgu
YmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCisgICAgICAgIHBhcnNlci5wcm9nID0gImN1c3RvbS1wcm9n
IgorICAgICAgICBhc3NlcnQgcGFyc2VyLl9nZXRwYXJzZXIoKS5wcm9nID09ICJjdXN0b20tcHJv
ZyIKIAotICAgIGRlZiB0ZXN0X2FyZ3VtZW50KHNlbGYpOgorICAgIGRlZiB0ZXN0X2FyZ3VtZW50
KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhwYXJzZW9wdC5Bcmd1
bWVudEVycm9yKToKICAgICAgICAgICAgICMgbmVlZCBhIHNob3J0IG9yIGxvbmcgb3B0aW9uCiAg
ICAgICAgICAgICBhcmd1bWVudCA9IHBhcnNlb3B0LkFyZ3VtZW50KCkKQEAgLTM0LDEyICs0MSwx
MSBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBhcmd1bWVudC5k
ZXN0ID09ICJ0ZXN0IgogICAgICAgICBhcmd1bWVudCA9IHBhcnNlb3B0LkFyZ3VtZW50KCItdCIs
ICItLXRlc3QiLCBkZXN0PSJhYmMiKQogICAgICAgICBhc3NlcnQgYXJndW1lbnQuZGVzdCA9PSAi
YWJjIgotICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgc3RyKGFyZ3VtZW50KQotICAgICAg
ICAgICAgPT0gKCJBcmd1bWVudChfc2hvcnRfb3B0czogWyctdCddLCBfbG9uZ19vcHRzOiBbJy0t
dGVzdCddLCBkZXN0OiAnYWJjJykiKQorICAgICAgICBhc3NlcnQgc3RyKGFyZ3VtZW50KSA9PSAo
CisgICAgICAgICAgICAiQXJndW1lbnQoX3Nob3J0X29wdHM6IFsnLXQnXSwgX2xvbmdfb3B0czog
WyctLXRlc3QnXSwgZGVzdDogJ2FiYycpIgogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9hcmd1
bWVudF90eXBlKHNlbGYpOgorICAgIGRlZiB0ZXN0X2FyZ3VtZW50X3R5cGUoc2VsZikgLT4gTm9u
ZToKICAgICAgICAgYXJndW1lbnQgPSBwYXJzZW9wdC5Bcmd1bWVudCgiLXQiLCBkZXN0PSJhYmMi
LCB0eXBlPWludCkKICAgICAgICAgYXNzZXJ0IGFyZ3VtZW50LnR5cGUgaXMgaW50CiAgICAgICAg
IGFyZ3VtZW50ID0gcGFyc2VvcHQuQXJndW1lbnQoIi10IiwgZGVzdD0iYWJjIiwgdHlwZT1zdHIp
CkBAIC01NCw3ICs2MCw3IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgKQog
ICAgICAgICBhc3NlcnQgYXJndW1lbnQudHlwZSBpcyBzdHIKIAotICAgIGRlZiB0ZXN0X2FyZ3Vt
ZW50X3Byb2Nlc3NvcHQoc2VsZik6CisgICAgZGVmIHRlc3RfYXJndW1lbnRfcHJvY2Vzc29wdChz
ZWxmKSAtPiBOb25lOgogICAgICAgICBhcmd1bWVudCA9IHBhcnNlb3B0LkFyZ3VtZW50KCItdCIs
IHR5cGU9aW50KQogICAgICAgICBhcmd1bWVudC5kZWZhdWx0ID0gNDIKICAgICAgICAgYXJndW1l
bnQuZGVzdCA9ICJhYmMiCkBAIC02MiwxOSArNjgsMTkgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICBhc3NlcnQgcmVzWyJkZWZhdWx0Il0gPT0gNDIKICAgICAgICAgYXNzZXJ0
IHJlc1siZGVzdCJdID09ICJhYmMiCiAKLSAgICBkZWYgdGVzdF9ncm91cF9hZGRfYW5kX2dldChz
ZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X2dyb3VwX2FkZF9hbmRfZ2V0KHNlbGYsIHBhcnNl
cjogcGFyc2VvcHQuUGFyc2VyKSAtPiBOb25lOgogICAgICAgICBncm91cCA9IHBhcnNlci5nZXRn
cm91cCgiaGVsbG8iLCBkZXNjcmlwdGlvbj0iZGVzYyIpCiAgICAgICAgIGFzc2VydCBncm91cC5u
YW1lID09ICJoZWxsbyIKICAgICAgICAgYXNzZXJ0IGdyb3VwLmRlc2NyaXB0aW9uID09ICJkZXNj
IgogCi0gICAgZGVmIHRlc3RfZ2V0Z3JvdXBfc2ltcGxlKHNlbGYsIHBhcnNlcik6CisgICAgZGVm
IHRlc3RfZ2V0Z3JvdXBfc2ltcGxlKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAtPiBO
b25lOgogICAgICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiaGVsbG8iLCBkZXNjcmlwdGlv
bj0iZGVzYyIpCiAgICAgICAgIGFzc2VydCBncm91cC5uYW1lID09ICJoZWxsbyIKICAgICAgICAg
YXNzZXJ0IGdyb3VwLmRlc2NyaXB0aW9uID09ICJkZXNjIgogICAgICAgICBncm91cDIgPSBwYXJz
ZXIuZ2V0Z3JvdXAoImhlbGxvIikKICAgICAgICAgYXNzZXJ0IGdyb3VwMiBpcyBncm91cAogCi0g
ICAgZGVmIHRlc3RfZ3JvdXBfb3JkZXJpbmcoc2VsZiwgcGFyc2VyKToKKyAgICBkZWYgdGVzdF9n
cm91cF9vcmRlcmluZyhzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAg
ICAgICAgcGFyc2VyLmdldGdyb3VwKCIxIikKICAgICAgICAgcGFyc2VyLmdldGdyb3VwKCIyIikK
ICAgICAgICAgcGFyc2VyLmdldGdyb3VwKCIzIiwgYWZ0ZXI9IjEiKQpAQCAtODIsNTUgKzg4LDUx
IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgZ3JvdXBzX25hbWVzID0gW3gu
bmFtZSBmb3IgeCBpbiBncm91cHNdCiAgICAgICAgIGFzc2VydCBncm91cHNfbmFtZXMgPT0gbGlz
dCgiMTMyIikKIAotICAgIGRlZiB0ZXN0X2dyb3VwX2FkZG9wdGlvbihzZWxmKToKKyAgICBkZWYg
dGVzdF9ncm91cF9hZGRvcHRpb24oc2VsZikgLT4gTm9uZToKICAgICAgICAgZ3JvdXAgPSBwYXJz
ZW9wdC5PcHRpb25Hcm91cCgiaGVsbG8iKQogICAgICAgICBncm91cC5hZGRvcHRpb24oIi0tb3B0
aW9uMSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIGFzc2VydCBsZW4oZ3JvdXAub3B0
aW9ucykgPT0gMQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShncm91cC5vcHRpb25zWzBdLCBw
YXJzZW9wdC5Bcmd1bWVudCkKIAotICAgIGRlZiB0ZXN0X2dyb3VwX2FkZG9wdGlvbl9jb25mbGlj
dChzZWxmKToKKyAgICBkZWYgdGVzdF9ncm91cF9hZGRvcHRpb25fY29uZmxpY3Qoc2VsZikgLT4g
Tm9uZToKICAgICAgICAgZ3JvdXAgPSBwYXJzZW9wdC5PcHRpb25Hcm91cCgiaGVsbG8gYWdhaW4i
KQogICAgICAgICBncm91cC5hZGRvcHRpb24oIi0tb3B0aW9uMSIsICItLW9wdGlvbi0xIiwgYWN0
aW9uPSJzdG9yZV90cnVlIikKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3Ip
IGFzIGVycjoKICAgICAgICAgICAgIGdyb3VwLmFkZG9wdGlvbigiLS1vcHRpb24xIiwgIi0tb3B0
aW9uLW9uZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIGFzc2VydCBzdHIoeyItLW9w
dGlvbjEifSkgaW4gc3RyKGVyci52YWx1ZSkKIAotICAgIGRlZiB0ZXN0X2dyb3VwX3Nob3J0b3B0
X2xvd2VyY2FzZShzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X2dyb3VwX3Nob3J0b3B0X2xv
d2VyY2FzZShzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAg
Z3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImhlbGxvIikKLSAgICAgICAgcHl0ZXN0LnJhaXNlcygK
LSAgICAgICAgICAgIFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgZ3JvdXAuYWRkb3B0aW9uKCIt
eCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgICIiIiwKLSAgICAgICAgKQogICAgICAg
ICBhc3NlcnQgbGVuKGdyb3VwLm9wdGlvbnMpID09IDAKICAgICAgICAgZ3JvdXAuX2FkZG9wdGlv
bigiLXgiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgICAgICBhc3NlcnQgbGVuKGdyb3VwLm9w
dGlvbnMpID09IDEKIAotICAgIGRlZiB0ZXN0X3BhcnNlcl9hZGRvcHRpb24oc2VsZiwgcGFyc2Vy
KToKKyAgICBkZWYgdGVzdF9wYXJzZXJfYWRkb3B0aW9uKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQu
UGFyc2VyKSAtPiBOb25lOgogICAgICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiY3VzdG9t
IG9wdGlvbnMiKQogICAgICAgICBhc3NlcnQgbGVuKGdyb3VwLm9wdGlvbnMpID09IDAKICAgICAg
ICAgZ3JvdXAuYWRkb3B0aW9uKCItLW9wdGlvbjEiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAg
ICAgICBhc3NlcnQgbGVuKGdyb3VwLm9wdGlvbnMpID09IDEKIAotICAgIGRlZiB0ZXN0X3BhcnNl
KHNlbGYsIHBhcnNlcik6CisgICAgZGVmIHRlc3RfcGFyc2Uoc2VsZiwgcGFyc2VyOiBwYXJzZW9w
dC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0taGVsbG8iLCBk
ZXN0PSJoZWxsbyIsIGFjdGlvbj0ic3RvcmUiKQogICAgICAgICBhcmdzID0gcGFyc2VyLnBhcnNl
KFsiLS1oZWxsbyIsICJ3b3JsZCJdKQogICAgICAgICBhc3NlcnQgYXJncy5oZWxsbyA9PSAid29y
bGQiCiAgICAgICAgIGFzc2VydCBub3QgZ2V0YXR0cihhcmdzLCBwYXJzZW9wdC5GSUxFX09SX0RJ
UikKIAotICAgIGRlZiB0ZXN0X3BhcnNlMihzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X3Bh
cnNlMihzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAgYXJn
cyA9IHBhcnNlci5wYXJzZShbcHkucGF0aC5sb2NhbCgpXSkKICAgICAgICAgYXNzZXJ0IGdldGF0
dHIoYXJncywgcGFyc2VvcHQuRklMRV9PUl9ESVIpWzBdID09IHB5LnBhdGgubG9jYWwoKQogCi0g
ICAgZGVmIHRlc3RfcGFyc2Vfa25vd25fYXJncyhzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0
X3BhcnNlX2tub3duX2FyZ3Moc2VsZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJzZXIpIC0+IE5vbmU6
CiAgICAgICAgIHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKFtweS5wYXRoLmxvY2FsKCldKQogICAg
ICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWhlbGxvIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAg
ICAgICAgbnMgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhbIngiLCAiLS15IiwgIi0taGVsbG8i
LCAidGhpcyJdKQogICAgICAgICBhc3NlcnQgbnMuaGVsbG8KICAgICAgICAgYXNzZXJ0IG5zLmZp
bGVfb3JfZGlyID09IFsieCJdCiAKLSAgICBkZWYgdGVzdF9wYXJzZV9rbm93bl9hbmRfdW5rbm93
bl9hcmdzKHNlbGYsIHBhcnNlcik6CisgICAgZGVmIHRlc3RfcGFyc2Vfa25vd25fYW5kX3Vua25v
d25fYXJncyhzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAg
cGFyc2VyLmFkZG9wdGlvbigiLS1oZWxsbyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAg
IG5zLCB1bmtub3duID0gcGFyc2VyLnBhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoCiAgICAg
ICAgICAgICBbIngiLCAiLS15IiwgIi0taGVsbG8iLCAidGhpcyJdCkBAIC0xMzksNyArMTQxLDcg
QEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgogICAgICAgICBhc3NlcnQgbnMuZmlsZV9vcl9k
aXIgPT0gWyJ4Il0KICAgICAgICAgYXNzZXJ0IHVua25vd24gPT0gWyItLXkiLCAidGhpcyJdCiAK
LSAgICBkZWYgdGVzdF9wYXJzZV93aWxsX3NldF9kZWZhdWx0KHNlbGYsIHBhcnNlcik6CisgICAg
ZGVmIHRlc3RfcGFyc2Vfd2lsbF9zZXRfZGVmYXVsdChzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBh
cnNlcikgLT4gTm9uZToKICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1oZWxsbyIsIGRlc3Q9
ImhlbGxvIiwgZGVmYXVsdD0ieCIsIGFjdGlvbj0ic3RvcmUiKQogICAgICAgICBvcHRpb24gPSBw
YXJzZXIucGFyc2UoW10pCiAgICAgICAgIGFzc2VydCBvcHRpb24uaGVsbG8gPT0gIngiCkBAIC0x
NDcsMjUgKzE0OSwyMiBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIHBhcnNl
ci5wYXJzZV9zZXRvcHRpb24oW10sIG9wdGlvbikKICAgICAgICAgYXNzZXJ0IG9wdGlvbi5oZWxs
byA9PSAieCIKIAotICAgIGRlZiB0ZXN0X3BhcnNlX3NldG9wdGlvbihzZWxmLCBwYXJzZXIpOgor
ICAgIGRlZiB0ZXN0X3BhcnNlX3NldG9wdGlvbihzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNl
cikgLT4gTm9uZToKICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1oZWxsbyIsIGRlc3Q9Imhl
bGxvIiwgYWN0aW9uPSJzdG9yZSIpCiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0td29ybGQi
LCBkZXN0PSJ3b3JsZCIsIGRlZmF1bHQ9NDIpCiAKLSAgICAgICAgY2xhc3MgQShvYmplY3QpOgot
ICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIG9wdGlvbiA9IEEoKQorICAgICAgICBvcHRpb24g
PSBhcmdwYXJzZS5OYW1lc3BhY2UoKQogICAgICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX3NldG9w
dGlvbihbIi0taGVsbG8iLCAid29ybGQiXSwgb3B0aW9uKQogICAgICAgICBhc3NlcnQgb3B0aW9u
LmhlbGxvID09ICJ3b3JsZCIKICAgICAgICAgYXNzZXJ0IG9wdGlvbi53b3JsZCA9PSA0MgogICAg
ICAgICBhc3NlcnQgbm90IGFyZ3MKIAotICAgIGRlZiB0ZXN0X3BhcnNlX3NwZWNpYWxfZGVzdGlu
YXRpb24oc2VsZiwgcGFyc2VyKToKKyAgICBkZWYgdGVzdF9wYXJzZV9zcGVjaWFsX2Rlc3RpbmF0
aW9uKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAtPiBOb25lOgogICAgICAgICBwYXJz
ZXIuYWRkb3B0aW9uKCItLXVsdGltYXRlLWFuc3dlciIsIHR5cGU9aW50KQogICAgICAgICBhcmdz
ID0gcGFyc2VyLnBhcnNlKFsiLS11bHRpbWF0ZS1hbnN3ZXIiLCAiNDIiXSkKICAgICAgICAgYXNz
ZXJ0IGFyZ3MudWx0aW1hdGVfYW5zd2VyID09IDQyCiAKLSAgICBkZWYgdGVzdF9wYXJzZV9zcGxp
dF9wb3NpdGlvbmFsX2FyZ3VtZW50cyhzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X3BhcnNl
X3NwbGl0X3Bvc2l0aW9uYWxfYXJndW1lbnRzKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2Vy
KSAtPiBOb25lOgogICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItUiIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIpCiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi1TIiwgYWN0aW9uPSJzdG9yZV9mYWxz
ZSIpCiAgICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2UoWyItUiIsICI0IiwgIjIiLCAiLVMiXSkK
QEAgLTE3OSw4ICsxNzgsNyBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIGFz
c2VydCBhcmdzLlIgaXMgVHJ1ZQogICAgICAgICBhc3NlcnQgYXJncy5TIGlzIEZhbHNlCiAKLSAg
ICBkZWYgdGVzdF9wYXJzZV9kZWZhdWx0Z2V0dGVyKHNlbGYpOgotCisgICAgZGVmIHRlc3RfcGFy
c2VfZGVmYXVsdGdldHRlcihzZWxmKSAtPiBOb25lOgogICAgICAgICBkZWYgZGVmYXVsdGdldChv
cHRpb24pOgogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIob3B0aW9uLCAidHlwZSIpOgogICAg
ICAgICAgICAgICAgIHJldHVybgpAQCAtMTk4LDIxICsxOTYsMTcgQEAgY2xhc3MgVGVzdFBhcnNl
cihvYmplY3QpOgogICAgICAgICBhc3NlcnQgb3B0aW9uLnRoaXMgPT0gNDIKICAgICAgICAgYXNz
ZXJ0IG9wdGlvbi5ubyBpcyBGYWxzZQogCi0gICAgZGVmIHRlc3RfZHJvcF9zaG9ydF9oZWxwZXIo
c2VsZik6CisgICAgZGVmIHRlc3RfZHJvcF9zaG9ydF9oZWxwZXIoc2VsZikgLT4gTm9uZToKICAg
ICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCi0gICAgICAgICAgICBmb3Jt
YXR0ZXJfY2xhc3M9cGFyc2VvcHQuRHJvcFNob3J0ZXJMb25nSGVscEZvcm1hdHRlcgorICAgICAg
ICAgICAgZm9ybWF0dGVyX2NsYXNzPXBhcnNlb3B0LkRyb3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0
ZXIsIGFsbG93X2FiYnJldj1GYWxzZQogICAgICAgICApCiAgICAgICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCiAgICAgICAgICAgICAiLXQiLCAiLS10d293b3JkIiwgIi0tZHVvIiwgIi0tdHdvLXdv
cmQiLCAiLS10d28iLCBoZWxwPSJmb28iCi0gICAgICAgICkubWFwX2xvbmdfb3B0aW9uID0gewot
ICAgICAgICAgICAgInR3byI6ICJ0d28td29yZCIKLSAgICAgICAgfQorICAgICAgICApCiAgICAg
ICAgICMgdGhyb3dzIGVycm9yIG9uIC0tZGV1eCBvbmx5IQogICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAogICAgICAgICAgICAgIi1kIiwgIi0tZGV1eG1vdHMiLCAiLS1kZXV4LW1vdHMiLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJmb28iCi0gICAgICAgICkubWFwX2xvbmdfb3B0aW9u
ID0gewotICAgICAgICAgICAgImRldXgiOiAiZGV1eC1tb3RzIgotICAgICAgICB9CisgICAgICAg
ICkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXMiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBoZWxwPSJzaW5nbGUgc2hvcnQiKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWFi
YyIsICItYSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImJhciIpCiAgICAgICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoIi0ta2xtIiwgIi1rIiwgIi0ta2wtbSIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9ImJhciIpCkBAIC0yMjQsOSArMjE4LDcgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICApCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICAg
ICAiLXgiLCAiLS1leGl0LW9uLWZpcnN0IiwgIi0tZXhpdGZpcnN0IiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgaGVscD0ic3BhbSIKLSAgICAgICAgKS5tYXBfbG9uZ19vcHRpb24gPSB7Ci0gICAgICAg
ICAgICAiZXhpdGZpcnN0IjogImV4aXQtb24tZmlyc3QiCi0gICAgICAgIH0KKyAgICAgICAgKQog
ICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJmaWxlc19hbmRfZGlycyIsIG5hcmdzPSIqIikK
ICAgICAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKFsiLWsiLCAiLS1kdW8iLCAiaGFsbG8i
LCAiLS1leGl0Zmlyc3QiXSkKICAgICAgICAgYXNzZXJ0IGFyZ3MudHdvd29yZCA9PSAiaGFsbG8i
CkBAIC0yNDEsMzQgKzIzMywzMiBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CiAgICAgICAg
IGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhbImZpbGUiLCAiZGlyIl0pCiAgICAgICAgIGFzc2Vy
dCAifCIuam9pbihhcmdzLmZpbGVzX2FuZF9kaXJzKSA9PSAiZmlsZXxkaXIiCiAKLSAgICBkZWYg
dGVzdF9kcm9wX3Nob3J0XzAoc2VsZiwgcGFyc2VyKToKKyAgICBkZWYgdGVzdF9kcm9wX3Nob3J0
XzAoc2VsZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNl
ci5hZGRvcHRpb24oIi0tZnVuY2FyZyIsICItLWZ1bmMtYXJnIiwgYWN0aW9uPSJzdG9yZV90cnVl
IikKICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1hYmMtZGVmIiwgIi0tYWJjLWRlZiIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0ta2xtLWhpaiIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2UoWyItLWZ1
bmNhcmciLCAiLS1rIl0pCi0gICAgICAgIGFzc2VydCBhcmdzLmZ1bmNhcmcgaXMgVHJ1ZQotICAg
ICAgICBhc3NlcnQgYXJncy5hYmNfZGVmIGlzIEZhbHNlCi0gICAgICAgIGFzc2VydCBhcmdzLmts
bV9oaWogaXMgVHJ1ZQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVXNhZ2VFcnJvcik6Cisg
ICAgICAgICAgICBwYXJzZXIucGFyc2UoWyItLWZ1bmNhcmciLCAiLS1rIl0pCiAKLSAgICBkZWYg
dGVzdF9kcm9wX3Nob3J0XzIoc2VsZiwgcGFyc2VyKToKKyAgICBkZWYgdGVzdF9kcm9wX3Nob3J0
XzIoc2VsZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNl
ci5hZGRvcHRpb24oIi0tZnVuYy1hcmciLCAiLS1kb2l0IiwgYWN0aW9uPSJzdG9yZV90cnVlIikK
ICAgICAgICAgYXJncyA9IHBhcnNlci5wYXJzZShbIi0tZG9pdCJdKQogICAgICAgICBhc3NlcnQg
YXJncy5mdW5jX2FyZyBpcyBUcnVlCiAKLSAgICBkZWYgdGVzdF9kcm9wX3Nob3J0XzMoc2VsZiwg
cGFyc2VyKToKKyAgICBkZWYgdGVzdF9kcm9wX3Nob3J0XzMoc2VsZiwgcGFyc2VyOiBwYXJzZW9w
dC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0tZnVuYy1hcmci
LCAiLS1mdW5jYXJnIiwgIi0tZG9pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIGFy
Z3MgPSBwYXJzZXIucGFyc2UoWyJhYmNkIl0pCiAgICAgICAgIGFzc2VydCBhcmdzLmZ1bmNfYXJn
IGlzIEZhbHNlCiAgICAgICAgIGFzc2VydCBhcmdzLmZpbGVfb3JfZGlyID09IFsiYWJjZCJdCiAK
LSAgICBkZWYgdGVzdF9kcm9wX3Nob3J0X2hlbHAwKHNlbGYsIHBhcnNlciwgY2Fwc3lzKToKKyAg
ICBkZWYgdGVzdF9kcm9wX3Nob3J0X2hlbHAwKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2Vy
KSAtPiBOb25lOgogICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWZ1bmMtYXJncyIsICItLWRv
aXQiLCBoZWxwPSJmb28iLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgICAgICBwYXJzZXIucGFy
c2UoW10pCiAgICAgICAgIGhlbHAgPSBwYXJzZXIub3B0cGFyc2VyLmZvcm1hdF9oZWxwKCkKICAg
ICAgICAgYXNzZXJ0ICItLWZ1bmMtYXJncywgLS1kb2l0ICBmb28iIGluIGhlbHAKIAogICAgICMg
dGVzdGluZyB3b3VsZCBiZSBtb3JlIGhlbHBmdWwgd2l0aCBhbGwgaGVscCBnZW5lcmF0ZWQKLSAg
ICBkZWYgdGVzdF9kcm9wX3Nob3J0X2hlbHAxKHNlbGYsIHBhcnNlciwgY2Fwc3lzKToKKyAgICBk
ZWYgdGVzdF9kcm9wX3Nob3J0X2hlbHAxKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAt
PiBOb25lOgogICAgICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCiAgICAg
ICAgIGdyb3VwLmFkZG9wdGlvbigiLS1kb2l0IiwgIi0tZnVuYy1hcmdzIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgaGVscD0iZm9vIikKICAgICAgICAgZ3JvdXAuX2FkZG9wdGlvbigKQEAgLTI4Miw3
ICsyNzIsNyBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIGhlbHAgPSBwYXJz
ZXIub3B0cGFyc2VyLmZvcm1hdF9oZWxwKCkKICAgICAgICAgYXNzZXJ0ICItZG9pdCwgLS1mdW5j
LWFyZ3MgIGZvbyIgaW4gaGVscAogCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfbWV0YXZhcl9oZWxw
KHNlbGYsIHBhcnNlcik6CisgICAgZGVmIHRlc3RfbXVsdGlwbGVfbWV0YXZhcl9oZWxwKHNlbGYs
IHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAtPiBOb25lOgogICAgICAgICAiIiIKICAgICAgICAg
SGVscCB0ZXh0IGZvciBvcHRpb25zIHdpdGggYSBtZXRhdmFyIHR1cGxlIHNob3VsZCBkaXNwbGF5
IGhlbHAKICAgICAgICAgaW4gdGhlIGZvcm0gIi0tcHJlZmVyZW5jZXM9dmFsdWUxIHZhbHVlMiB2
YWx1ZTMiICgjMjAwNCkuCkBAIC0yOTcsMjAgKzI4NywzMyBAQCBjbGFzcyBUZXN0UGFyc2VyKG9i
amVjdCk6CiAgICAgICAgIGFzc2VydCAiLS1wcmVmZXJlbmNlcz12YWx1ZTEgdmFsdWUyIHZhbHVl
MyIgaW4gaGVscAogCiAKLWRlZiB0ZXN0X2FyZ2NvbXBsZXRlKHRlc3RkaXIsIG1vbmtleXBhdGNo
KToKLSAgICBpZiBub3QgcHkucGF0aC5sb2NhbC5zeXNmaW5kKCJiYXNoIik6Ci0gICAgICAgIHB5
dGVzdC5za2lwKCJiYXNoIG5vdCBhdmFpbGFibGUiKQorZGVmIHRlc3RfYXJnY29tcGxldGUodGVz
dGRpciwgbW9ua2V5cGF0Y2gpIC0+IE5vbmU6CisgICAgdHJ5OgorICAgICAgICBiYXNoX3ZlcnNp
b24gPSBzdWJwcm9jZXNzLnJ1bigKKyAgICAgICAgICAgIFsiYmFzaCIsICItLXZlcnNpb24iXSwK
KyAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICBzdGRlcnI9
c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgY2hlY2s9VHJ1ZSwKKyAgICAgICAgICAg
IHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICApLnN0ZG91dAorICAgIGV4Y2VwdCAo
T1NFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICBweXRlc3Qu
c2tpcCgiYmFzaCBpcyBub3QgYXZhaWxhYmxlIikKKyAgICBpZiAiR05VIGJhc2giIG5vdCBpbiBi
YXNoX3ZlcnNpb246CisgICAgICAgICMgU2VlICM3NTE4LgorICAgICAgICBweXRlc3Quc2tpcCgi
bm90IGEgcmVhbCBiYXNoIikKKwogICAgIHNjcmlwdCA9IHN0cih0ZXN0ZGlyLnRtcGRpci5qb2lu
KCJ0ZXN0X2FyZ2NvbXBsZXRlIikpCi0gICAgcHl0ZXN0X2JpbiA9IHN5cy5hcmd2WzBdCi0gICAg
aWYgInB5dGVzdCIgbm90IGluIG9zLnBhdGguYmFzZW5hbWUocHl0ZXN0X2Jpbik6Ci0gICAgICAg
IHB5dGVzdC5za2lwKCJuZWVkIHRvIGJlIHJ1biB3aXRoIHB5dGVzdCBleGVjdXRhYmxlLCBub3Qg
JXMiICUgKHB5dGVzdF9iaW4sKSkKIAogICAgIHdpdGggb3BlbihzdHIoc2NyaXB0KSwgInciKSBh
cyBmcDoKICAgICAgICAgIyByZWRpcmVjdCBvdXRwdXQgZnJvbSBhcmdjb21wbGV0ZSB0byBzdGRp
biBhbmQgc3RkZXJyIGlzIG5vdCB0cml2aWFsCiAgICAgICAgICMgaHR0cDovL3N0YWNrb3ZlcmZs
b3cuY29tL3EvMTI1ODk0MTkvMTMwNzkwNQogICAgICAgICAjIHNvIHdlIHVzZSBiYXNoCi0gICAg
ICAgIGZwLndyaXRlKCdDT01QX1dPUkRCUkVBS1M9IiRDT01QX1dPUkRCUkVBS1MiICVzIDg+JjEg
OT4mMicgJSBweXRlc3RfYmluKQotICAgICMgYWx0ZXJuYXRpdmUgd291bGQgYmUgZXh0ZW5lZGVk
IFRlc3RkaXIue3J1bigpLF9ydW4oKSxwb3BlbigpfSB0byBiZSBhYmxlCisgICAgICAgIGZwLndy
aXRlKAorICAgICAgICAgICAgJ0NPTVBfV09SREJSRUFLUz0iJENPTVBfV09SREJSRUFLUyIge30g
LW0gcHl0ZXN0IDg+JjEgOT4mMicuZm9ybWF0KAorICAgICAgICAgICAgICAgIHNobGV4LnF1b3Rl
KHN5cy5leGVjdXRhYmxlKQorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgIyBhbHRlcm5h
dGl2ZSB3b3VsZCBiZSBleHRlbmRlZCBUZXN0ZGlyLntydW4oKSxfcnVuKCkscG9wZW4oKX0gdG8g
YmUgYWJsZQogICAgICMgdG8gaGFuZGxlIGEga2V5d29yZCBhcmd1bWVudCBlbnYgdGhhdCByZXBs
YWNlcyBvcy5lbnZpcm9uIGluIHBvcGVuIG9yCiAgICAgIyBleHRlbmRzIHRoZSBjb3B5LCBhZHZh
bnRhZ2U6IGNvdWxkIG5vdCBmb3JnZXQgdG8gcmVzdG9yZQogICAgIG1vbmtleXBhdGNoLnNldGVu
digiX0FSR0NPTVBMRVRFIiwgIjEiKQpAQCAtMzI1LDcgKzMyOCwxMSBAQCBkZWYgdGVzdF9hcmdj
b21wbGV0ZSh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgICAgICMgYXJnY29tcGxldGUgbm90
IGZvdW5kCiAgICAgICAgIHB5dGVzdC5za2lwKCJhcmdjb21wbGV0ZSBub3QgYXZhaWxhYmxlIikK
ICAgICBlbGlmIG5vdCByZXN1bHQuc3Rkb3V0LnN0cigpOgotICAgICAgICBweXRlc3Quc2tpcCgi
YmFzaCBwcm92aWRlZCBubyBvdXRwdXQsIGFyZ2NvbXBsZXRlIG5vdCBhdmFpbGFibGU/IikKKyAg
ICAgICAgcHl0ZXN0LnNraXAoCisgICAgICAgICAgICAiYmFzaCBwcm92aWRlZCBubyBvdXRwdXQg
b24gc3Rkb3V0LCBhcmdjb21wbGV0ZSBub3QgYXZhaWxhYmxlPyAoc3RkZXJyPXshcn0pIi5mb3Jt
YXQoCisgICAgICAgICAgICAgICAgcmVzdWx0LnN0ZGVyci5zdHIoKQorICAgICAgICAgICAgKQor
ICAgICAgICApCiAgICAgZWxzZToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiLS1mdW5jYXJncyIsICItLWZ1bGx0cmFjZSJdKQogICAgIG9zLm1rZGlyKCJ0ZXN0X2FyZ2Nv
bXBsZXRlLmQiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Bhc3RlYmlu
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Bhc3RlYmluLnB5CmluZGV4IGFkN2M0ZDBj
MWMwNi4uN2Y4OGExM2ViNDNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
cGFzdGViaW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Bhc3RlYmluLnB5CkBA
IC0xLDE0ICsxLDEzIEBACi0jIGVuY29kaW5nOiB1dGYtOAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHN5cwot
aW1wb3J0IHB5dGVzdAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9y
dCBVbmlvbgogCitpbXBvcnQgcHl0ZXN0CiAKLWNsYXNzIFRlc3RQYXN0ZUNhcHR1cmUob2JqZWN0
KToKIAorY2xhc3MgVGVzdFBhc3RlQ2FwdHVyZToKICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICBk
ZWYgcGFzdGViaW5saXN0KHNlbGYsIG1vbmtleXBhdGNoLCByZXF1ZXN0KToKLSAgICAgICAgcGFz
dGViaW5saXN0ID0gW10KKyAgICBkZWYgcGFzdGViaW5saXN0KHNlbGYsIG1vbmtleXBhdGNoLCBy
ZXF1ZXN0KSAtPiBMaXN0W1VuaW9uW3N0ciwgYnl0ZXNdXToKKyAgICAgICAgcGFzdGViaW5saXN0
ID0gW10gICMgdHlwZTogTGlzdFtVbmlvbltzdHIsIGJ5dGVzXV0KICAgICAgICAgcGx1Z2luID0g
cmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oInBhc3RlYmluIikKICAgICAg
ICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwbHVnaW4sICJjcmVhdGVfbmV3X3Bhc3RlIiwgcGFzdGVi
aW5saXN0LmFwcGVuZCkKICAgICAgICAgcmV0dXJuIHBhc3RlYmlubGlzdApAQCAtMjUsNyArMjQs
NyBAQCBjbGFzcyBUZXN0UGFzdGVDYXB0dXJlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcHl0
ZXN0LnNraXAoIiIpCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlcHJlYyA9IHRl
c3RkaXIuaW5saW5lX3J1bih0ZXN0cGF0aCwgIi0tcGFzdGU9ZmFpbGVkIikKKyAgICAgICAgcmVw
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKHRlc3RwYXRoLCAiLS1wYXN0ZWJpbj1mYWlsZWQiKQog
ICAgICAgICBhc3NlcnQgbGVuKHBhc3RlYmlubGlzdCkgPT0gMQogICAgICAgICBzID0gcGFzdGVi
aW5saXN0WzBdCiAgICAgICAgIGFzc2VydCBzLmZpbmQoImRlZiB0ZXN0X2ZhaWwiKSAhPSAtMQpA
QCAtNTksMjIgKzU4LDE4IEBAIGNsYXNzIFRlc3RQYXN0ZUNhcHR1cmUob2JqZWN0KToKICAgICAg
ICAgICAgIF0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3Rfbm9uX2FzY2lpX3Bhc3RlX3RleHQo
c2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpX3Bhc3RlX3RleHQoc2VsZiwg
dGVzdGRpciwgcGFzdGViaW5saXN0KToKICAgICAgICAgIiIiTWFrZSBzdXJlIHRoYXQgdGV4dCB3
aGljaCBjb250YWlucyBub24tYXNjaWkgY2hhcmFjdGVycyBpcyBwYXN0ZWQKICAgICAgICAgY29y
cmVjdGx5LiBTZWUgIzEyMTkuCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCi0gICAgICAgICAgICB0ZXN0X3VuaWNvZGU9IiIiCi0gICAgICAgICAgICAjIGVuY29kaW5n
OiB1dGYtOAorICAgICAgICAgICAgdGVzdF91bmljb2RlPSIiIlwKICAgICAgICAgICAgIGRlZiB0
ZXN0KCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0ICfimLonID09IDEKLSAgICAgICAgIiIiCisg
ICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1wYXN0ZWJpbj1hbGwiKQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID09
IDM6Ci0gICAgICAgICAgICBleHBlY3RlZF9tc2cgPSAiKmFzc2VydCAn4pi6JyA9PSAxKiIKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4cGVjdGVkX21zZyA9ICIqYXNzZXJ0ICdcXHhlMlxc
eDk4XFx4YmEnID09IDEqIgorICAgICAgICBleHBlY3RlZF9tc2cgPSAiKmFzc2VydCAn4pi6JyA9
PSAxKiIKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAg
WwogICAgICAgICAgICAgICAgIGV4cGVjdGVkX21zZywKQEAgLTgyLDUxICs3NywxMDUgQEAgY2xh
c3MgVGVzdFBhc3RlQ2FwdHVyZShvYmplY3QpOgogICAgICAgICAgICAgICAgICIqU2VuZGluZyBp
bmZvcm1hdGlvbiB0byBQYXN0ZSBTZXJ2aWNlKiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkK
KyAgICAgICAgYXNzZXJ0IGxlbihwYXN0ZWJpbmxpc3QpID09IDEKIAogCi1jbGFzcyBUZXN0UGFz
dGUob2JqZWN0KToKLQorY2xhc3MgVGVzdFBhc3RlOgogICAgIEBweXRlc3QuZml4dHVyZQogICAg
IGRlZiBwYXN0ZWJpbihzZWxmLCByZXF1ZXN0KToKICAgICAgICAgcmV0dXJuIHJlcXVlc3QuY29u
ZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJwYXN0ZWJpbiIpCiAKICAgICBAcHl0ZXN0LmZp
eHR1cmUKLSAgICBkZWYgbW9ja2VkX3VybG9wZW4oc2VsZiwgbW9ua2V5cGF0Y2gpOgotICAgICAg
ICAiIiIKLSAgICAgICAgbW9ua2V5cGF0Y2ggdGhlIGFjdHVhbCB1cmxvcGVuIGNhbGxzIGRvbmUg
YnkgdGhlIGludGVybmFsIHBsdWdpbgotICAgICAgICBmdW5jdGlvbiB0aGF0IGNvbm5lY3RzIHRv
IGJwYXN0ZSBzZXJ2aWNlLgotICAgICAgICAiIiIKKyAgICBkZWYgbW9ja2VkX3VybG9wZW5fZmFp
bChzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgICIiIk1vbmtleXBhdGNoIHRoZSBhY3R1YWwg
dXJsb3BlbiBjYWxsIHRvIGVtdWxhdGUgYSBIVFRQIEVycm9yIDQwMC4iIiIKICAgICAgICAgY2Fs
bHMgPSBbXQogCisgICAgICAgIGltcG9ydCB1cmxsaWIuZXJyb3IKKyAgICAgICAgaW1wb3J0IHVy
bGxpYi5yZXF1ZXN0CisKICAgICAgICAgZGVmIG1vY2tlZCh1cmwsIGRhdGEpOgogICAgICAgICAg
ICAgY2FsbHMuYXBwZW5kKCh1cmwsIGRhdGEpKQorICAgICAgICAgICAgcmFpc2UgdXJsbGliLmVy
cm9yLkhUVFBFcnJvcih1cmwsIDQwMCwgIkJhZCByZXF1ZXN0IiwgTm9uZSwgTm9uZSkKIAotICAg
ICAgICAgICAgY2xhc3MgRHVtbXlGaWxlKG9iamVjdCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIodXJsbGliLnJlcXVlc3QsICJ1cmxvcGVuIiwgbW9ja2VkKQorICAgICAgICByZXR1cm4g
Y2FsbHMKIAorICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBtb2NrZWRfdXJsb3Blbl9pbnZh
bGlkKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgIiIiTW9ua2V5cGF0Y2ggdGhlIGFjdHVh
bCB1cmxvcGVuIGNhbGxzIGRvbmUgYnkgdGhlIGludGVybmFsIHBsdWdpbgorICAgICAgICBmdW5j
dGlvbiB0aGF0IGNvbm5lY3RzIHRvIGJwYXN0ZSBzZXJ2aWNlLCBidXQgcmV0dXJuIGEgdXJsIGlu
IGFuCisgICAgICAgIHVuZXhwZWN0ZWQgZm9ybWF0LiIiIgorICAgICAgICBjYWxscyA9IFtdCisK
KyAgICAgICAgZGVmIG1vY2tlZCh1cmwsIGRhdGEpOgorICAgICAgICAgICAgY2FsbHMuYXBwZW5k
KCh1cmwsIGRhdGEpKQorCisgICAgICAgICAgICBjbGFzcyBEdW1teUZpbGU6CiAgICAgICAgICAg
ICAgICAgZGVmIHJlYWQoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiBodG1s
IG9mIGEgbm9ybWFsIHJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBiJ1ZpZXcg
PGEgaHJlZj0iL3Jhdy8zYzBjNjc1MGJkIj5yYXc8L2E+LicKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGInVmlldyA8YSBocmVmPSIvaW52YWxpZC8zYzBjNjc1MGJkIj5yYXc8L2E+LicKIAog
ICAgICAgICAgICAgcmV0dXJuIER1bW15RmlsZSgpCiAKLSAgICAgICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA8ICgzLCAwKToKLSAgICAgICAgICAgIGltcG9ydCB1cmxsaWIKKyAgICAgICAgaW1wb3J0
IHVybGxpYi5yZXF1ZXN0CisKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih1cmxsaWIucmVx
dWVzdCwgInVybG9wZW4iLCBtb2NrZWQpCisgICAgICAgIHJldHVybiBjYWxscworCisgICAgQHB5
dGVzdC5maXh0dXJlCisgICAgZGVmIG1vY2tlZF91cmxvcGVuKHNlbGYsIG1vbmtleXBhdGNoKToK
KyAgICAgICAgIiIiTW9ua2V5cGF0Y2ggdGhlIGFjdHVhbCB1cmxvcGVuIGNhbGxzIGRvbmUgYnkg
dGhlIGludGVybmFsIHBsdWdpbgorICAgICAgICBmdW5jdGlvbiB0aGF0IGNvbm5lY3RzIHRvIGJw
YXN0ZSBzZXJ2aWNlLiIiIgorICAgICAgICBjYWxscyA9IFtdCisKKyAgICAgICAgZGVmIG1vY2tl
ZCh1cmwsIGRhdGEpOgorICAgICAgICAgICAgY2FsbHMuYXBwZW5kKCh1cmwsIGRhdGEpKQogCi0g
ICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHVybGxpYiwgInVybG9wZW4iLCBtb2NrZWQp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICAg
ICAgICAgIGNsYXNzIER1bW15RmlsZToKKyAgICAgICAgICAgICAgICBkZWYgcmVhZChzZWxmKToK
KyAgICAgICAgICAgICAgICAgICAgIyBwYXJ0IG9mIGh0bWwgb2YgYSBub3JtYWwgcmVzcG9uc2UK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGInVmlldyA8YSBocmVmPSIvcmF3LzNjMGM2NzUw
YmQiPnJhdzwvYT4uJworCisgICAgICAgICAgICByZXR1cm4gRHVtbXlGaWxlKCkKIAotICAgICAg
ICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih1cmxsaWIucmVxdWVzdCwgInVybG9wZW4iLCBtb2Nr
ZWQpCisgICAgICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdAorCisgICAgICAgIG1vbmtleXBhdGNo
LnNldGF0dHIodXJsbGliLnJlcXVlc3QsICJ1cmxvcGVuIiwgbW9ja2VkKQogICAgICAgICByZXR1
cm4gY2FsbHMKIAorICAgIGRlZiB0ZXN0X3Bhc3RlYmluX2ludmFsaWRfdXJsKHNlbGYsIHBhc3Rl
YmluLCBtb2NrZWRfdXJsb3Blbl9pbnZhbGlkKToKKyAgICAgICAgcmVzdWx0ID0gcGFzdGViaW4u
Y3JlYXRlX25ld19wYXN0ZShiImZ1bGwtcGFzdGUtY29udGVudHMiKQorICAgICAgICBhc3NlcnQg
KAorICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICA9PSAiYmFkIHJlc3BvbnNlOiBpbnZh
bGlkIGZvcm1hdCAoJ1ZpZXcgPGEgaHJlZj1cIi9pbnZhbGlkLzNjMGM2NzUwYmRcIj5yYXc8L2E+
LicpIgorICAgICAgICApCisgICAgICAgIGFzc2VydCBsZW4obW9ja2VkX3VybG9wZW5faW52YWxp
ZCkgPT0gMQorCisgICAgZGVmIHRlc3RfcGFzdGViaW5faHR0cF9lcnJvcihzZWxmLCBwYXN0ZWJp
biwgbW9ja2VkX3VybG9wZW5fZmFpbCk6CisgICAgICAgIHJlc3VsdCA9IHBhc3RlYmluLmNyZWF0
ZV9uZXdfcGFzdGUoYiJmdWxsLXBhc3RlLWNvbnRlbnRzIikKKyAgICAgICAgYXNzZXJ0IHJlc3Vs
dCA9PSAiYmFkIHJlc3BvbnNlOiBIVFRQIEVycm9yIDQwMDogQmFkIHJlcXVlc3QiCisgICAgICAg
IGFzc2VydCBsZW4obW9ja2VkX3VybG9wZW5fZmFpbCkgPT0gMQorCiAgICAgZGVmIHRlc3RfY3Jl
YXRlX25ld19wYXN0ZShzZWxmLCBwYXN0ZWJpbiwgbW9ja2VkX3VybG9wZW4pOgogICAgICAgICBy
ZXN1bHQgPSBwYXN0ZWJpbi5jcmVhdGVfbmV3X3Bhc3RlKGIiZnVsbC1wYXN0ZS1jb250ZW50cyIp
CiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gImh0dHBzOi8vYnBhc3RlLm5ldC9zaG93LzNjMGM2
NzUwYmQiCiAgICAgICAgIGFzc2VydCBsZW4obW9ja2VkX3VybG9wZW4pID09IDEKICAgICAgICAg
dXJsLCBkYXRhID0gbW9ja2VkX3VybG9wZW5bMF0KICAgICAgICAgYXNzZXJ0IHR5cGUoZGF0YSkg
aXMgYnl0ZXMKLSAgICAgICAgbGV4ZXIgPSAicHl0aG9uMyIgaWYgc3lzLnZlcnNpb25faW5mb1sw
XSA9PSAzIGVsc2UgInB5dGhvbiIKKyAgICAgICAgbGV4ZXIgPSAidGV4dCIKICAgICAgICAgYXNz
ZXJ0IHVybCA9PSAiaHR0cHM6Ly9icGFzdGUubmV0IgogICAgICAgICBhc3NlcnQgImxleGVyPSVz
IiAlIGxleGVyIGluIGRhdGEuZGVjb2RlKCkKICAgICAgICAgYXNzZXJ0ICJjb2RlPWZ1bGwtcGFz
dGUtY29udGVudHMiIGluIGRhdGEuZGVjb2RlKCkKICAgICAgICAgYXNzZXJ0ICJleHBpcnk9MXdl
ZWsiIGluIGRhdGEuZGVjb2RlKCkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9uZXdfcGFzdGVfZmFp
bHVyZShzZWxmLCBwYXN0ZWJpbiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBpbXBvcnQgaW8KKyAg
ICAgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisKKyAgICAgICAgZGVmIHJlc3BvbnNlKHVybCwg
ZGF0YSk6CisgICAgICAgICAgICBzdHJlYW0gPSBpby5CeXRlc0lPKGIic29tZXRoaW5nIGJhZCBv
Y2N1cnJlZCIpCisgICAgICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cih1cmxsaWIucmVxdWVzdCwgInVybG9wZW4iLCByZXNwb25zZSkKKyAgICAgICAg
cmVzdWx0ID0gcGFzdGViaW4uY3JlYXRlX25ld19wYXN0ZShiImZ1bGwtcGFzdGUtY29udGVudHMi
KQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09ICJiYWQgcmVzcG9uc2U6IGludmFsaWQgZm9ybWF0
ICgnc29tZXRoaW5nIGJhZCBvY2N1cnJlZCcpIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X3BhdGhsaWIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcGF0aGxpYi5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxMjI4ZDZiMDk1NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wYXRobGliLnB5CkBA
IC0wLDAgKzEsNDAzIEBACitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0
ZXN0Lm1vY2sKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAorCitpbXBvcnQgcHkKKworaW1w
b3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGJlc3RyZWxwYXRoCitmcm9t
IF9weXRlc3QucGF0aGxpYiBpbXBvcnQgY29tbW9ucGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIg
aW1wb3J0IGVuc3VyZV9kZWxldGFibGUKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBmbm1h
dGNoX2V4Citmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgZ2V0X2V4dGVuZGVkX2xlbmd0aF9w
YXRoX3N0cgorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGdldF9sb2NrX3BhdGgKK2Zyb20g
X3B5dGVzdC5wYXRobGliIGltcG9ydCBpbXBvcnRfcGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIg
aW1wb3J0IEltcG9ydFBhdGhNaXNtYXRjaEVycm9yCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBv
cnQgbWF5YmVfZGVsZXRlX2FfbnVtYmVyZWRfZGlyCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBv
cnQgUGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IHJlc29sdmVfcGFja2FnZV9wYXRo
CisKKworY2xhc3MgVGVzdEZOTWF0Y2hlclBvcnQ6CisgICAgIiIiVGVzdCB0aGF0IG91ciBwb3J0
IG9mIHB5LmNvbW1vbi5GTk1hdGNoZXIgKGZubWF0Y2hfZXgpIHByb2R1Y2VzIHRoZQorICAgIHNh
bWUgcmVzdWx0cyBhcyB0aGUgb3JpZ2luYWwgcHkucGF0aC5sb2NhbC5mbm1hdGNoIG1ldGhvZC4i
IiIKKworICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WyJwYXRobGliIiwgInB5LnBhdGgiXSkK
KyAgICBkZWYgbWF0Y2goc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIGlmIHJlcXVlc3QucGFyYW0g
PT0gInB5LnBhdGgiOgorCisgICAgICAgICAgICBkZWYgbWF0Y2hfKHBhdHRlcm4sIHBhdGgpOgor
ICAgICAgICAgICAgICAgIHJldHVybiBweS5wYXRoLmxvY2FsKHBhdGgpLmZubWF0Y2gocGF0dGVy
bikKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3QucGFyYW0gPT0g
InBhdGhsaWIiCisKKyAgICAgICAgICAgIGRlZiBtYXRjaF8ocGF0dGVybiwgcGF0aCk6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZubWF0Y2hfZXgocGF0dGVybiwgcGF0aCkKKworICAgICAgICBy
ZXR1cm4gbWF0Y2hfCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAg
ZHJ2MSA9ICJjOiIKKyAgICAgICAgZHJ2MiA9ICJkOiIKKyAgICBlbHNlOgorICAgICAgICBkcnYx
ID0gIi9jIgorICAgICAgICBkcnYyID0gIi9kIgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKAorICAgICAgICAicGF0dGVybiwgcGF0aCIsCisgICAgICAgIFsKKyAgICAgICAgICAgICgi
Ki5weSIsICJmb28ucHkiKSwKKyAgICAgICAgICAgICgiKi5weSIsICJiYXIvZm9vLnB5IiksCisg
ICAgICAgICAgICAoInRlc3RfKi5weSIsICJmb28vdGVzdF9mb28ucHkiKSwKKyAgICAgICAgICAg
ICgidGVzdHMvKi5weSIsICJ0ZXN0cy9mb28ucHkiKSwKKyAgICAgICAgICAgIChkcnYxICsgIi8q
LnB5IiwgZHJ2MSArICIvZm9vLnB5IiksCisgICAgICAgICAgICAoZHJ2MSArICIvZm9vLyoucHki
LCBkcnYxICsgIi9mb28vZm9vLnB5IiksCisgICAgICAgICAgICAoInRlc3RzLyoqL3Rlc3QqLnB5
IiwgInRlc3RzL2Zvby90ZXN0X2Zvby5weSIpLAorICAgICAgICAgICAgKCJ0ZXN0cy8qKi9kb2Mv
dGVzdCoucHkiLCAidGVzdHMvZm9vL2Jhci9kb2MvdGVzdF9mb28ucHkiKSwKKyAgICAgICAgICAg
ICgidGVzdHMvKiovZG9jLyoqL3Rlc3QqLnB5IiwgInRlc3RzL2Zvby9kb2MvYmFyL3Rlc3RfZm9v
LnB5IiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X21hdGNoaW5nKHNlbGYsIG1h
dGNoLCBwYXR0ZXJuLCBwYXRoKToKKyAgICAgICAgYXNzZXJ0IG1hdGNoKHBhdHRlcm4sIHBhdGgp
CisKKyAgICBkZWYgdGVzdF9tYXRjaGluZ19hYnNwYXRoKHNlbGYsIG1hdGNoKToKKyAgICAgICAg
YWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oInRlc3RzL2Zvby5weSIpKQor
ICAgICAgICBhc3NlcnQgbWF0Y2goInRlc3RzL2Zvby5weSIsIGFic3BhdGgpCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJwYXR0ZXJuLCBwYXRoIiwKKyAgICAgICAg
WworICAgICAgICAgICAgKCIqLnB5IiwgImZvby5weWMiKSwKKyAgICAgICAgICAgICgiKi5weSIs
ICJmb28vZm9vLnB5YyIpLAorICAgICAgICAgICAgKCJ0ZXN0cy8qLnB5IiwgImZvby9mb28ucHki
KSwKKyAgICAgICAgICAgIChkcnYxICsgIi8qLnB5IiwgZHJ2MiArICIvZm9vLnB5IiksCisgICAg
ICAgICAgICAoZHJ2MSArICIvZm9vLyoucHkiLCBkcnYyICsgIi9mb28vZm9vLnB5IiksCisgICAg
ICAgICAgICAoInRlc3RzLyoqL3Rlc3QqLnB5IiwgInRlc3RzL2Zvby5weSIpLAorICAgICAgICAg
ICAgKCJ0ZXN0cy8qKi90ZXN0Ki5weSIsICJmb28vdGVzdF9mb28ucHkiKSwKKyAgICAgICAgICAg
ICgidGVzdHMvKiovZG9jL3Rlc3QqLnB5IiwgInRlc3RzL2Zvby9iYXIvZG9jL2Zvby5weSIpLAor
ICAgICAgICAgICAgKCJ0ZXN0cy8qKi9kb2MvdGVzdCoucHkiLCAidGVzdHMvZm9vL2Jhci90ZXN0
X2Zvby5weSIpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9ub3RfbWF0Y2hpbmco
c2VsZiwgbWF0Y2gsIHBhdHRlcm4sIHBhdGgpOgorICAgICAgICBhc3NlcnQgbm90IG1hdGNoKHBh
dHRlcm4sIHBhdGgpCisKKworY2xhc3MgVGVzdEltcG9ydFBhdGg6CisgICAgIiIiCisKKyAgICBN
b3N0IG9mIHRoZSB0ZXN0cyBoZXJlIHdlcmUgY29waWVkIGZyb20gcHkgbGliJ3MgdGVzdHMgZm9y
ICJweS5sb2NhbC5wYXRoLnB5aW1wb3J0Ii4KKworICAgIEhhdmluZyBvdXIgb3duIHB5aW1wb3J0
LWxpa2UgZnVuY3Rpb24gaXMgaW5saW5lIHdpdGggcmVtb3ZpbmcgcHkucGF0aCBkZXBlbmRlbmN5
IGluIHRoZSBmdXR1cmUuCisgICAgIiIiCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNl
c3Npb24iKQorICAgIGRlZiBwYXRoMShzZWxmLCB0bXBkaXJfZmFjdG9yeSk6CisgICAgICAgIHBh
dGggPSB0bXBkaXJfZmFjdG9yeS5ta3RlbXAoInBhdGgiKQorICAgICAgICBzZWxmLnNldHVwdGVz
dGZzKHBhdGgpCisgICAgICAgIHlpZWxkIHBhdGgKKyAgICAgICAgYXNzZXJ0IHBhdGguam9pbigi
c2FtcGxlZmlsZSIpLmNoZWNrKCkKKworICAgIGRlZiBzZXR1cHRlc3RmcyhzZWxmLCBwYXRoKToK
KyAgICAgICAgIyBwcmludCAic2V0dGluZyB1cCB0ZXN0IGZzIGZvciIsIHJlcHIocGF0aCkKKyAg
ICAgICAgc2FtcGxlZmlsZSA9IHBhdGguZW5zdXJlKCJzYW1wbGVmaWxlIikKKyAgICAgICAgc2Ft
cGxlZmlsZS53cml0ZSgic2FtcGxlZmlsZVxuIikKKworICAgICAgICBleGVjZmlsZSA9IHBhdGgu
ZW5zdXJlKCJleGVjZmlsZSIpCisgICAgICAgIGV4ZWNmaWxlLndyaXRlKCJ4PTQyIikKKworICAg
ICAgICBleGVjZmlsZXB5ID0gcGF0aC5lbnN1cmUoImV4ZWNmaWxlLnB5IikKKyAgICAgICAgZXhl
Y2ZpbGVweS53cml0ZSgieD00MiIpCisKKyAgICAgICAgZCA9IHsxOiAyLCAiaGVsbG8iOiAid29y
bGQiLCAiYW5zd2VyIjogNDJ9CisgICAgICAgIHBhdGguZW5zdXJlKCJzYW1wbGVwaWNrbGUiKS5k
dW1wKGQpCisKKyAgICAgICAgc2FtcGxlZGlyID0gcGF0aC5lbnN1cmUoInNhbXBsZWRpciIsIGRp
cj0xKQorICAgICAgICBzYW1wbGVkaXIuZW5zdXJlKCJvdGhlcmZpbGUiKQorCisgICAgICAgIG90
aGVyZGlyID0gcGF0aC5lbnN1cmUoIm90aGVyZGlyIiwgZGlyPTEpCisgICAgICAgIG90aGVyZGly
LmVuc3VyZSgiX19pbml0X18ucHkiKQorCisgICAgICAgIG1vZHVsZV9hID0gb3RoZXJkaXIuZW5z
dXJlKCJhLnB5IikKKyAgICAgICAgbW9kdWxlX2Eud3JpdGUoImZyb20gLmIgaW1wb3J0IHN0dWZm
IGFzIHJlc3VsdFxuIikKKyAgICAgICAgbW9kdWxlX2IgPSBvdGhlcmRpci5lbnN1cmUoImIucHki
KQorICAgICAgICBtb2R1bGVfYi53cml0ZSgnc3R1ZmY9ImdvdCBpdCJcbicpCisgICAgICAgIG1v
ZHVsZV9jID0gb3RoZXJkaXIuZW5zdXJlKCJjLnB5IikKKyAgICAgICAgbW9kdWxlX2Mud3JpdGUo
CisgICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBp
bXBvcnQgcHk7CisgICAgICAgICAgICBpbXBvcnQgb3RoZXJkaXIuYQorICAgICAgICAgICAgdmFs
dWUgPSBvdGhlcmRpci5hLnJlc3VsdAorICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBtb2R1bGVfZCA9IG90aGVyZGlyLmVuc3VyZSgiZC5weSIpCisgICAgICAg
IG1vZHVsZV9kLndyaXRlKAorICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgaW1wb3J0IHB5OworICAgICAgICAgICAgZnJvbSBvdGhlcmRpciBpbXBv
cnQgYQorICAgICAgICAgICAgdmFsdWUyID0gYS5yZXN1bHQKKyAgICAgICAgIiIiCisgICAgICAg
ICAgICApCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3Ntb2tlX3Rlc3Qoc2VsZiwgcGF0aDEp
OgorICAgICAgICBvYmogPSBpbXBvcnRfcGF0aChwYXRoMS5qb2luKCJleGVjZmlsZS5weSIpKQor
ICAgICAgICBhc3NlcnQgb2JqLnggPT0gNDIgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0K
KyAgICAgICAgYXNzZXJ0IG9iai5fX25hbWVfXyA9PSAiZXhlY2ZpbGUiCisKKyAgICBkZWYgdGVz
dF9yZW5hbWVkX2Rpcl9jcmVhdGVzX21pc21hdGNoKHNlbGYsIHRtcGRpciwgbW9ua2V5cGF0Y2gp
OgorICAgICAgICBwID0gdG1wZGlyLmVuc3VyZSgiYSIsICJ0ZXN0X3gxMjMucHkiKQorICAgICAg
ICBpbXBvcnRfcGF0aChwKQorICAgICAgICB0bXBkaXIuam9pbigiYSIpLm1vdmUodG1wZGlyLmpv
aW4oImIiKSkKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydFBhdGhNaXNtYXRjaEVy
cm9yKToKKyAgICAgICAgICAgIGltcG9ydF9wYXRoKHRtcGRpci5qb2luKCJiIiwgInRlc3RfeDEy
My5weSIpKQorCisgICAgICAgICMgRXJyb3JzIGNhbiBiZSBpZ25vcmVkLgorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRlbnYoIlBZX0lHTk9SRV9JTVBPUlRNSVNNQVRDSCIsICIxIikKKyAgICAgICAg
aW1wb3J0X3BhdGgodG1wZGlyLmpvaW4oImIiLCAidGVzdF94MTIzLnB5IikpCisKKyAgICAgICAg
IyBQWV9JR05PUkVfSU1QT1JUTUlTTUFUQ0g9MCBkb2VzIG5vdCBpZ25vcmUgZXJyb3IuCisgICAg
ICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlfSUdOT1JFX0lNUE9SVE1JU01BVENIIiwgIjAiKQor
ICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW1wb3J0UGF0aE1pc21hdGNoRXJyb3IpOgorICAg
ICAgICAgICAgaW1wb3J0X3BhdGgodG1wZGlyLmpvaW4oImIiLCAidGVzdF94MTIzLnB5IikpCisK
KyAgICBkZWYgdGVzdF9tZXNzeV9uYW1lKHNlbGYsIHRtcGRpcik6CisgICAgICAgICMgaHR0cDov
L2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvaXNzdWUvMTI5CisgICAgICAgIHBhdGggPSB0
bXBkaXIuZW5zdXJlKCJmb29fX2luaXRfXy5weSIpCisgICAgICAgIG1vZHVsZSA9IGltcG9ydF9w
YXRoKHBhdGgpCisgICAgICAgIGFzc2VydCBtb2R1bGUuX19uYW1lX18gPT0gImZvb19faW5pdF9f
IgorCisgICAgZGVmIHRlc3RfZGlyKHNlbGYsIHRtcGRpcik6CisgICAgICAgIHAgPSB0bXBkaXIu
am9pbigiaGVsbG9fMTIzIikKKyAgICAgICAgcF9pbml0ID0gcC5lbnN1cmUoIl9faW5pdF9fLnB5
IikKKyAgICAgICAgbSA9IGltcG9ydF9wYXRoKHApCisgICAgICAgIGFzc2VydCBtLl9fbmFtZV9f
ID09ICJoZWxsb18xMjMiCisgICAgICAgIG0gPSBpbXBvcnRfcGF0aChwX2luaXQpCisgICAgICAg
IGFzc2VydCBtLl9fbmFtZV9fID09ICJoZWxsb18xMjMiCisKKyAgICBkZWYgdGVzdF9hKHNlbGYs
IHBhdGgxKToKKyAgICAgICAgb3RoZXJkaXIgPSBwYXRoMS5qb2luKCJvdGhlcmRpciIpCisgICAg
ICAgIG1vZCA9IGltcG9ydF9wYXRoKG90aGVyZGlyLmpvaW4oImEucHkiKSkKKyAgICAgICAgYXNz
ZXJ0IG1vZC5yZXN1bHQgPT0gImdvdCBpdCIgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0K
KyAgICAgICAgYXNzZXJ0IG1vZC5fX25hbWVfXyA9PSAib3RoZXJkaXIuYSIKKworICAgIGRlZiB0
ZXN0X2Ioc2VsZiwgcGF0aDEpOgorICAgICAgICBvdGhlcmRpciA9IHBhdGgxLmpvaW4oIm90aGVy
ZGlyIikKKyAgICAgICAgbW9kID0gaW1wb3J0X3BhdGgob3RoZXJkaXIuam9pbigiYi5weSIpKQor
ICAgICAgICBhc3NlcnQgbW9kLnN0dWZmID09ICJnb3QgaXQiICAjIHR5cGU6IGlnbm9yZVthdHRy
LWRlZmluZWRdCisgICAgICAgIGFzc2VydCBtb2QuX19uYW1lX18gPT0gIm90aGVyZGlyLmIiCisK
KyAgICBkZWYgdGVzdF9jKHNlbGYsIHBhdGgxKToKKyAgICAgICAgb3RoZXJkaXIgPSBwYXRoMS5q
b2luKCJvdGhlcmRpciIpCisgICAgICAgIG1vZCA9IGltcG9ydF9wYXRoKG90aGVyZGlyLmpvaW4o
ImMucHkiKSkKKyAgICAgICAgYXNzZXJ0IG1vZC52YWx1ZSA9PSAiZ290IGl0IiAgIyB0eXBlOiBp
Z25vcmVbYXR0ci1kZWZpbmVkXQorCisgICAgZGVmIHRlc3RfZChzZWxmLCBwYXRoMSk6CisgICAg
ICAgIG90aGVyZGlyID0gcGF0aDEuam9pbigib3RoZXJkaXIiKQorICAgICAgICBtb2QgPSBpbXBv
cnRfcGF0aChvdGhlcmRpci5qb2luKCJkLnB5IikpCisgICAgICAgIGFzc2VydCBtb2QudmFsdWUy
ID09ICJnb3QgaXQiICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisKKyAgICBkZWYgdGVz
dF9pbXBvcnRfYWZ0ZXIoc2VsZiwgdG1wZGlyKToKKyAgICAgICAgdG1wZGlyLmVuc3VyZSgieHh4
cGFja2FnZSIsICJfX2luaXRfXy5weSIpCisgICAgICAgIG1vZDFwYXRoID0gdG1wZGlyLmVuc3Vy
ZSgieHh4cGFja2FnZSIsICJtb2R1bGUxLnB5IikKKyAgICAgICAgbW9kMSA9IGltcG9ydF9wYXRo
KG1vZDFwYXRoKQorICAgICAgICBhc3NlcnQgbW9kMS5fX25hbWVfXyA9PSAieHh4cGFja2FnZS5t
b2R1bGUxIgorICAgICAgICBmcm9tIHh4eHBhY2thZ2UgaW1wb3J0IG1vZHVsZTEKKworICAgICAg
ICBhc3NlcnQgbW9kdWxlMSBpcyBtb2QxCisKKyAgICBkZWYgdGVzdF9jaGVja19maWxlcGF0aF9j
b25zaXN0ZW5jeShzZWxmLCBtb25rZXlwYXRjaCwgdG1wZGlyKToKKyAgICAgICAgbmFtZSA9ICJw
b2ludHNiYWNrMTIzIgorICAgICAgICBNb2R1bGVUeXBlID0gdHlwZShvcykKKyAgICAgICAgcCA9
IHRtcGRpci5lbnN1cmUobmFtZSArICIucHkiKQorICAgICAgICBmb3IgZW5kaW5nIGluICgiLnB5
YyIsICIucHlvIik6CisgICAgICAgICAgICBtb2QgPSBNb2R1bGVUeXBlKG5hbWUpCisgICAgICAg
ICAgICBwc2V1ZG9wYXRoID0gdG1wZGlyLmVuc3VyZShuYW1lICsgZW5kaW5nKQorICAgICAgICAg
ICAgbW9kLl9fZmlsZV9fID0gc3RyKHBzZXVkb3BhdGgpCisgICAgICAgICAgICBtb25rZXlwYXRj
aC5zZXRpdGVtKHN5cy5tb2R1bGVzLCBuYW1lLCBtb2QpCisgICAgICAgICAgICBuZXdtb2QgPSBp
bXBvcnRfcGF0aChwKQorICAgICAgICAgICAgYXNzZXJ0IG1vZCA9PSBuZXdtb2QKKyAgICAgICAg
bW9ua2V5cGF0Y2gudW5kbygpCisgICAgICAgIG1vZCA9IE1vZHVsZVR5cGUobmFtZSkKKyAgICAg
ICAgcHNldWRvcGF0aCA9IHRtcGRpci5lbnN1cmUobmFtZSArICIxMjMucHkiKQorICAgICAgICBt
b2QuX19maWxlX18gPSBzdHIocHNldWRvcGF0aCkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRl
bShzeXMubW9kdWxlcywgbmFtZSwgbW9kKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW1w
b3J0UGF0aE1pc21hdGNoRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAgICBpbXBvcnRfcGF0
aChwKQorICAgICAgICBtb2RuYW1lLCBtb2RmaWxlLCBvcmlnID0gZXhjaW5mby52YWx1ZS5hcmdz
CisgICAgICAgIGFzc2VydCBtb2RuYW1lID09IG5hbWUKKyAgICAgICAgYXNzZXJ0IG1vZGZpbGUg
PT0gcHNldWRvcGF0aAorICAgICAgICBhc3NlcnQgb3JpZyA9PSBwCisgICAgICAgIGFzc2VydCBp
c3N1YmNsYXNzKEltcG9ydFBhdGhNaXNtYXRjaEVycm9yLCBJbXBvcnRFcnJvcikKKworICAgIGRl
ZiB0ZXN0X2lzc3VlMTMxX29uX19pbml0X18oc2VsZiwgdG1wZGlyKToKKyAgICAgICAgIyBfX2lu
aXRfXy5weSBmaWxlcyBtYXkgYmUgbmFtZXNwYWNlIHBhY2thZ2VzLCBhbmQgdGh1cyB0aGUKKyAg
ICAgICAgIyBfX2ZpbGVfXyBvZiBhbiBpbXBvcnRlZCBtb2R1bGUgbWF5IG5vdCBiZSBvdXJzZWx2
ZXMKKyAgICAgICAgIyBzZWUgaXNzdWUKKyAgICAgICAgcDEgPSB0bXBkaXIuZW5zdXJlKCJwcm9q
YSIsICJfX2luaXRfXy5weSIpCisgICAgICAgIHAyID0gdG1wZGlyLmVuc3VyZSgic3ViIiwgInBy
b2phIiwgIl9faW5pdF9fLnB5IikKKyAgICAgICAgbTEgPSBpbXBvcnRfcGF0aChwMSkKKyAgICAg
ICAgbTIgPSBpbXBvcnRfcGF0aChwMikKKyAgICAgICAgYXNzZXJ0IG0xID09IG0yCisKKyAgICBk
ZWYgdGVzdF9lbnN1cmVzeXNwYXRoX2FwcGVuZChzZWxmLCB0bXBkaXIpOgorICAgICAgICByb290
MSA9IHRtcGRpci5ta2Rpcigicm9vdDEiKQorICAgICAgICBmaWxlMSA9IHJvb3QxLmVuc3VyZSgi
eDEyMy5weSIpCisgICAgICAgIGFzc2VydCBzdHIocm9vdDEpIG5vdCBpbiBzeXMucGF0aAorICAg
ICAgICBpbXBvcnRfcGF0aChmaWxlMSwgbW9kZT0iYXBwZW5kIikKKyAgICAgICAgYXNzZXJ0IHN0
cihyb290MSkgPT0gc3lzLnBhdGhbLTFdCisgICAgICAgIGFzc2VydCBzdHIocm9vdDEpIG5vdCBp
biBzeXMucGF0aFs6LTFdCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3BhdGgoc2VsZiwgdG1wZGly
KToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAg
IGltcG9ydF9wYXRoKHRtcGRpci5qb2luKCJpbnZhbGlkLnB5IikpCisKKyAgICBAcHl0ZXN0LmZp
eHR1cmUKKyAgICBkZWYgc2ltcGxlX21vZHVsZShzZWxmLCB0bXBkaXIpOgorICAgICAgICBmbiA9
IHRtcGRpci5qb2luKCJteW1vZC5weSIpCisgICAgICAgIGZuLndyaXRlKAorICAgICAgICAgICAg
ZGVkZW50KAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIGZvbyh4KTogcmV0
dXJuIDQwICsgeAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgICkKKyAg
ICAgICAgcmV0dXJuIGZuCisKKyAgICBkZWYgdGVzdF9pbXBvcnRtb2RlX2ltcG9ydGxpYihzZWxm
LCBzaW1wbGVfbW9kdWxlKToKKyAgICAgICAgIiIiYGltcG9ydGxpYmAgbW9kZSBkb2VzIG5vdCBj
aGFuZ2Ugc3lzLnBhdGguIiIiCisgICAgICAgIG1vZHVsZSA9IGltcG9ydF9wYXRoKHNpbXBsZV9t
b2R1bGUsIG1vZGU9ImltcG9ydGxpYiIpCisgICAgICAgIGFzc2VydCBtb2R1bGUuZm9vKDIpID09
IDQyICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgIGFzc2VydCBzaW1wbGVf
bW9kdWxlLmRpcm5hbWUgbm90IGluIHN5cy5wYXRoCisKKyAgICBkZWYgdGVzdF9pbXBvcnRtb2Rl
X3R3aWNlX2lzX2RpZmZlcmVudF9tb2R1bGUoc2VsZiwgc2ltcGxlX21vZHVsZSk6CisgICAgICAg
ICIiImBpbXBvcnRsaWJgIG1vZGUgYWx3YXlzIHJldHVybnMgYSBuZXcgbW9kdWxlLiIiIgorICAg
ICAgICBtb2R1bGUxID0gaW1wb3J0X3BhdGgoc2ltcGxlX21vZHVsZSwgbW9kZT0iaW1wb3J0bGli
IikKKyAgICAgICAgbW9kdWxlMiA9IGltcG9ydF9wYXRoKHNpbXBsZV9tb2R1bGUsIG1vZGU9Imlt
cG9ydGxpYiIpCisgICAgICAgIGFzc2VydCBtb2R1bGUxIGlzIG5vdCBtb2R1bGUyCisKKyAgICBk
ZWYgdGVzdF9ub19tZXRhX3BhdGhfZm91bmQoc2VsZiwgc2ltcGxlX21vZHVsZSwgbW9ua2V5cGF0
Y2gpOgorICAgICAgICAiIiJFdmVuIHdpdGhvdXQgYW55IG1ldGFfcGF0aCBzaG91bGQgc3RpbGwg
aW1wb3J0IG1vZHVsZS4iIiIKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJtZXRh
X3BhdGgiLCBbXSkKKyAgICAgICAgbW9kdWxlID0gaW1wb3J0X3BhdGgoc2ltcGxlX21vZHVsZSwg
bW9kZT0iaW1wb3J0bGliIikKKyAgICAgICAgYXNzZXJ0IG1vZHVsZS5mb28oMikgPT0gNDIgICMg
dHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworICAgICAgICAjIG1vZGU9J2ltcG9ydGxpYicg
ZmFpbHMgaWYgbm8gc3BlYyBpcyBmb3VuZCB0byBsb2FkIHRoZSBtb2R1bGUKKyAgICAgICAgaW1w
b3J0IGltcG9ydGxpYi51dGlsCisKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAg
ICAgICAgIGltcG9ydGxpYi51dGlsLCAic3BlY19mcm9tX2ZpbGVfbG9jYXRpb24iLCBsYW1iZGEg
KmFyZ3M6IE5vbmUKKyAgICAgICAgKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW1wb3J0
RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0X3BhdGgoc2ltcGxlX21vZHVsZSwgbW9kZT0iaW1w
b3J0bGliIikKKworCitkZWYgdGVzdF9yZXNvbHZlX3BhY2thZ2VfcGF0aCh0bXBfcGF0aCk6Cisg
ICAgcGtnID0gdG1wX3BhdGggLyAicGtnMSIKKyAgICBwa2cubWtkaXIoKQorICAgIChwa2cgLyAi
X19pbml0X18ucHkiKS50b3VjaCgpCisgICAgKHBrZyAvICJzdWJkaXIiKS5ta2RpcigpCisgICAg
KHBrZyAvICJzdWJkaXIvX19pbml0X18ucHkiKS50b3VjaCgpCisgICAgYXNzZXJ0IHJlc29sdmVf
cGFja2FnZV9wYXRoKHBrZykgPT0gcGtnCisgICAgYXNzZXJ0IHJlc29sdmVfcGFja2FnZV9wYXRo
KHBrZy5qb2lucGF0aCgic3ViZGlyIiwgIl9faW5pdF9fLnB5IikpID09IHBrZworCisKK2RlZiB0
ZXN0X3BhY2thZ2VfdW5pbXBvcnRhYmxlKHRtcF9wYXRoKToKKyAgICBwa2cgPSB0bXBfcGF0aCAv
ICJwa2cxLTEiCisgICAgcGtnLm1rZGlyKCkKKyAgICBwa2cuam9pbnBhdGgoIl9faW5pdF9fLnB5
IikudG91Y2goKQorICAgIHN1YmRpciA9IHBrZy5qb2lucGF0aCgic3ViZGlyIikKKyAgICBzdWJk
aXIubWtkaXIoKQorICAgIHBrZy5qb2lucGF0aCgic3ViZGlyL19faW5pdF9fLnB5IikudG91Y2go
KQorICAgIGFzc2VydCByZXNvbHZlX3BhY2thZ2VfcGF0aChzdWJkaXIpID09IHN1YmRpcgorICAg
IHh5eiA9IHN1YmRpci5qb2lucGF0aCgieHl6LnB5IikKKyAgICB4eXoudG91Y2goKQorICAgIGFz
c2VydCByZXNvbHZlX3BhY2thZ2VfcGF0aCh4eXopID09IHN1YmRpcgorICAgIGFzc2VydCBub3Qg
cmVzb2x2ZV9wYWNrYWdlX3BhdGgocGtnKQorCisKK2RlZiB0ZXN0X2FjY2Vzc19kZW5pZWRfZHVy
aW5nX2NsZWFudXAodG1wX3BhdGgsIG1vbmtleXBhdGNoKToKKyAgICAiIiJFbnN1cmUgdGhhdCBk
ZWxldGluZyBhIG51bWJlcmVkIGRpciBkb2VzIG5vdCBmYWlsIGJlY2F1c2Ugb2YgT1NFcnJvcnMg
KCM0MjYyKS4iIiIKKyAgICBwYXRoID0gdG1wX3BhdGggLyAidGVtcC0xIgorICAgIHBhdGgubWtk
aXIoKQorCisgICAgZGVmIHJlbmFtZWRfZmFpbGVkKCphcmdzKToKKyAgICAgICAgcmFpc2UgT1NF
cnJvcigiYWNjZXNzIGRlbmllZCIpCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKFBhdGgsICJy
ZW5hbWUiLCByZW5hbWVkX2ZhaWxlZCkKKworICAgIGxvY2tfcGF0aCA9IGdldF9sb2NrX3BhdGgo
cGF0aCkKKyAgICBtYXliZV9kZWxldGVfYV9udW1iZXJlZF9kaXIocGF0aCkKKyAgICBhc3NlcnQg
bm90IGxvY2tfcGF0aC5pc19maWxlKCkKKworCitkZWYgdGVzdF9sb25nX3BhdGhfZHVyaW5nX2Ns
ZWFudXAodG1wX3BhdGgpOgorICAgICIiIkVuc3VyZSB0aGF0IGRlbGV0aW5nIGxvbmcgcGF0aCB3
b3JrcyAocGFydGljdWxhcmx5IG9uIFdpbmRvd3MgKCM2Nzc1KSkuIiIiCisgICAgcGF0aCA9ICh0
bXBfcGF0aCAvICgiYSIgKiAyNTApKS5yZXNvbHZlKCkKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0g
IndpbjMyIjoKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgZnVsbCBwYXRoIGlzID4gMjYw
IGNoYXJhY3RlcnMgd2l0aG91dCBhbnkKKyAgICAgICAgIyBjb21wb25lbnQgYmVpbmcgb3ZlciAy
NjAgY2hhcmFjdGVycworICAgICAgICBhc3NlcnQgbGVuKHN0cihwYXRoKSkgPiAyNjAKKyAgICAg
ICAgZXh0ZW5kZWRfcGF0aCA9ICJcXFxcP1xcIiArIHN0cihwYXRoKQorICAgIGVsc2U6CisgICAg
ICAgIGV4dGVuZGVkX3BhdGggPSBzdHIocGF0aCkKKyAgICBvcy5ta2RpcihleHRlbmRlZF9wYXRo
KQorICAgIGFzc2VydCBvcy5wYXRoLmlzZGlyKGV4dGVuZGVkX3BhdGgpCisgICAgbWF5YmVfZGVs
ZXRlX2FfbnVtYmVyZWRfZGlyKHBhdGgpCisgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmlzZGlyKGV4
dGVuZGVkX3BhdGgpCisKKworZGVmIHRlc3RfZ2V0X2V4dGVuZGVkX2xlbmd0aF9wYXRoX3N0cigp
OgorICAgIGFzc2VydCBnZXRfZXh0ZW5kZWRfbGVuZ3RoX3BhdGhfc3RyKHIiYzpcZm9vIikgPT0g
ciJcXD9cYzpcZm9vIgorICAgIGFzc2VydCBnZXRfZXh0ZW5kZWRfbGVuZ3RoX3BhdGhfc3RyKHIi
XFxzaGFyZVxmb28iKSA9PSByIlxcP1xVTkNcc2hhcmVcZm9vIgorICAgIGFzc2VydCBnZXRfZXh0
ZW5kZWRfbGVuZ3RoX3BhdGhfc3RyKHIiXFw/XFVOQ1xzaGFyZVxmb28iKSA9PSByIlxcP1xVTkNc
c2hhcmVcZm9vIgorICAgIGFzc2VydCBnZXRfZXh0ZW5kZWRfbGVuZ3RoX3BhdGhfc3RyKHIiXFw/
XGM6XGZvbyIpID09IHIiXFw/XGM6XGZvbyIKKworCitkZWYgdGVzdF9zdXBwcmVzc19lcnJvcl9y
ZW1vdmluZ19sb2NrKHRtcF9wYXRoKToKKyAgICAiIiJlbnN1cmVfZGVsZXRhYmxlIHNob3VsZCBi
ZSByZXNpbGllbnQgaWYgbG9jayBmaWxlIGNhbm5vdCBiZSByZW1vdmVkICgjNTQ1NiwgIzc0OTEp
IiIiCisgICAgcGF0aCA9IHRtcF9wYXRoIC8gImRpciIKKyAgICBwYXRoLm1rZGlyKCkKKyAgICBs
b2NrID0gZ2V0X2xvY2tfcGF0aChwYXRoKQorICAgIGxvY2sudG91Y2goKQorICAgIG10aW1lID0g
bG9jay5zdGF0KCkuc3RfbXRpbWUKKworICAgIHdpdGggdW5pdHRlc3QubW9jay5wYXRjaC5vYmpl
Y3QoUGF0aCwgInVubGluayIsIHNpZGVfZWZmZWN0PU9TRXJyb3IpIGFzIG06CisgICAgICAgIGFz
c2VydCBub3QgZW5zdXJlX2RlbGV0YWJsZSgKKyAgICAgICAgICAgIHBhdGgsIGNvbnNpZGVyX2xv
Y2tfZGVhZF9pZl9jcmVhdGVkX2JlZm9yZT1tdGltZSArIDMwCisgICAgICAgICkKKyAgICAgICAg
YXNzZXJ0IG0uY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0IGxvY2suaXNfZmlsZSgpCisKKyAg
ICB3aXRoIHVuaXR0ZXN0Lm1vY2sucGF0Y2gub2JqZWN0KFBhdGgsICJpc19maWxlIiwgc2lkZV9l
ZmZlY3Q9T1NFcnJvcikgYXMgbToKKyAgICAgICAgYXNzZXJ0IG5vdCBlbnN1cmVfZGVsZXRhYmxl
KAorICAgICAgICAgICAgcGF0aCwgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVmb3Jl
PW10aW1lICsgMzAKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgbS5jYWxsX2NvdW50ID09IDEK
KyAgICBhc3NlcnQgbG9jay5pc19maWxlKCkKKworICAgICMgY2hlY2sgbm93IHRoYXQgd2UgY2Fu
IHJlbW92ZSB0aGUgbG9jayBmaWxlIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzCisgICAgYXNzZXJ0
IGVuc3VyZV9kZWxldGFibGUocGF0aCwgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVm
b3JlPW10aW1lICsgMzApCisgICAgYXNzZXJ0IG5vdCBsb2NrLmlzX2ZpbGUoKQorCisKK2RlZiB0
ZXN0X2Jlc3RyZWxwYXRoKCkgLT4gTm9uZToKKyAgICBjdXJkaXIgPSBQYXRoKCIvZm9vL2Jhci9i
YXovcGF0aCIpCisgICAgYXNzZXJ0IGJlc3RyZWxwYXRoKGN1cmRpciwgY3VyZGlyKSA9PSAiLiIK
KyAgICBhc3NlcnQgYmVzdHJlbHBhdGgoY3VyZGlyLCBjdXJkaXIgLyAiaGVsbG8iIC8gIndvcmxk
IikgPT0gImhlbGxvIiArIG9zLnNlcCArICJ3b3JsZCIKKyAgICBhc3NlcnQgYmVzdHJlbHBhdGgo
Y3VyZGlyLCBjdXJkaXIucGFyZW50IC8gInNpc3RlciIpID09ICIuLiIgKyBvcy5zZXAgKyAic2lz
dGVyIgorICAgIGFzc2VydCBiZXN0cmVscGF0aChjdXJkaXIsIGN1cmRpci5wYXJlbnQpID09ICIu
LiIKKyAgICBhc3NlcnQgYmVzdHJlbHBhdGgoY3VyZGlyLCBQYXRoKCJoZWxsbyIpKSA9PSAiaGVs
bG8iCisKKworZGVmIHRlc3RfY29tbW9ucGF0aCgpIC0+IE5vbmU6CisgICAgcGF0aCA9IFBhdGgo
Ii9mb28vYmFyL2Jhei9wYXRoIikKKyAgICBzdWJwYXRoID0gcGF0aCAvICJzYW1wbGVkaXIiCisg
ICAgYXNzZXJ0IGNvbW1vbnBhdGgocGF0aCwgc3VicGF0aCkgPT0gcGF0aAorICAgIGFzc2VydCBj
b21tb25wYXRoKHN1YnBhdGgsIHBhdGgpID09IHBhdGgKKyAgICBhc3NlcnQgY29tbW9ucGF0aChQ
YXRoKHN0cihwYXRoKSArICJzdWZmaXgiKSwgcGF0aCkgPT0gcGF0aC5wYXJlbnQKKyAgICBhc3Nl
cnQgY29tbW9ucGF0aChwYXRoLCBwYXRoLnBhcmVudC5wYXJlbnQpID09IHBhdGgucGFyZW50LnBh
cmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3BkYi5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvdGVzdF9wZGIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYxNWQ1MmU4MzQ1NC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9wZGIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3MDIgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0
IHN5cwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgb3MKLQotaW1wb3J0IF9weXRlc3QuX2NvZGUK
LWZyb20gX3B5dGVzdC5kZWJ1Z2dpbmcgaW1wb3J0IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJ
TgotaW1wb3J0IHB5dGVzdAotCi0KLV9FTlZJUk9OX1BZVEhPTkJSRUFLUE9JTlQgPSBvcy5lbnZp
cm9uLmdldCgiUFlUSE9OQlJFQUtQT0lOVCIsICIiKQotCi0KLWRlZiBydW5wZGJfYW5kX2dldF9y
ZXBvcnQodGVzdGRpciwgc291cmNlKToKLSAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKHNvdXJj
ZSkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tcGRiIiwgcCkK
LSAgICByZXBvcnRzID0gcmVzdWx0LnJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9s
b2dyZXBvcnQiKQotICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMywgcmVwb3J0cyAgIyBzZXR1
cC9jYWxsL3RlYXJkb3duCi0gICAgcmV0dXJuIHJlcG9ydHNbMV0KLQotCi1AcHl0ZXN0LmZpeHR1
cmUKLWRlZiBjdXN0b21fcGRiX2NhbGxzKCk6Ci0gICAgY2FsbGVkID0gW10KLQotICAgICMgaW5z
dGFsbCBkdW1teSBkZWJ1Z2dlciBjbGFzcyBhbmQgdHJhY2sgd2hpY2ggbWV0aG9kcyB3ZXJlIGNh
bGxlZCBvbiBpdAotICAgIGNsYXNzIF9DdXN0b21QZGIob2JqZWN0KToKLQotICAgICAgICBkZWYg
X19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIGNhbGxlZC5hcHBl
bmQoImluaXQiKQotCi0gICAgICAgIGRlZiByZXNldChzZWxmKToKLSAgICAgICAgICAgIGNhbGxl
ZC5hcHBlbmQoInJlc2V0IikKLQotICAgICAgICBkZWYgaW50ZXJhY3Rpb24oc2VsZiwgKmFyZ3Mp
OgotICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgiaW50ZXJhY3Rpb24iKQotCi0gICAgX3B5dGVz
dC5fQ3VzdG9tUGRiID0gX0N1c3RvbVBkYgotICAgIHJldHVybiBjYWxsZWQKLQotCi1AcHl0ZXN0
LmZpeHR1cmUKLWRlZiBjdXN0b21fZGVidWdnZXJfaG9vaygpOgotICAgIGNhbGxlZCA9IFtdCi0K
LSAgICAjIGluc3RhbGwgZHVtbXkgZGVidWdnZXIgY2xhc3MgYW5kIHRyYWNrIHdoaWNoIG1ldGhv
ZHMgd2VyZSBjYWxsZWQgb24gaXQKLSAgICBjbGFzcyBfQ3VzdG9tRGVidWdnZXIob2JqZWN0KToK
LQotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAg
ICAgIGNhbGxlZC5hcHBlbmQoImluaXQiKQotCi0gICAgICAgIGRlZiByZXNldChzZWxmKToKLSAg
ICAgICAgICAgIGNhbGxlZC5hcHBlbmQoInJlc2V0IikKLQotICAgICAgICBkZWYgaW50ZXJhY3Rp
b24oc2VsZiwgKmFyZ3MpOgotICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgiaW50ZXJhY3Rpb24i
KQotCi0gICAgICAgIGRlZiBzZXRfdHJhY2Uoc2VsZiwgZnJhbWUpOgotICAgICAgICAgICAgcHJp
bnQoIioqQ3VzdG9tRGVidWdnZXIqKiIpCi0gICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJzZXRf
dHJhY2UiKQotCi0gICAgX3B5dGVzdC5fQ3VzdG9tRGVidWdnZXIgPSBfQ3VzdG9tRGVidWdnZXIK
LSAgICB5aWVsZCBjYWxsZWQKLSAgICBkZWwgX3B5dGVzdC5fQ3VzdG9tRGVidWdnZXIKLQotCi1j
bGFzcyBUZXN0UERCKG9iamVjdCk6Ci0KLSAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICBkZWYgcGRi
bGlzdChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgbW9ua2V5cGF0Y2ggPSByZXF1ZXN0LmdldGZp
eHR1cmV2YWx1ZSgibW9ua2V5cGF0Y2giKQotICAgICAgICBwZGJsaXN0ID0gW10KLQotICAgICAg
ICBkZWYgbXlwZGIoKmFyZ3MpOgotICAgICAgICAgICAgcGRibGlzdC5hcHBlbmQoYXJncykKLQot
ICAgICAgICBwbHVnaW4gPSByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigi
ZGVidWdnaW5nIikKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwbHVnaW4sICJwb3N0X21v
cnRlbSIsIG15cGRiKQotICAgICAgICByZXR1cm4gcGRibGlzdAotCi0gICAgZGVmIHRlc3RfcGRi
X29uX2ZhaWwoc2VsZiwgdGVzdGRpciwgcGRibGlzdCk6Ci0gICAgICAgIHJlcCA9IHJ1bnBkYl9h
bmRfZ2V0X3JlcG9ydCgKLSAgICAgICAgICAgIHRlc3RkaXIsCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAg
ICAgICAiIiIsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHJlcC5mYWlsZWQKLSAgICAgICAg
YXNzZXJ0IGxlbihwZGJsaXN0KSA9PSAxCi0gICAgICAgIHRiID0gX3B5dGVzdC5fY29kZS5UcmFj
ZWJhY2socGRibGlzdFswXVswXSkKLSAgICAgICAgYXNzZXJ0IHRiWy0xXS5uYW1lID09ICJ0ZXN0
X2Z1bmMiCi0KLSAgICBkZWYgdGVzdF9wZGJfb25feGZhaWwoc2VsZiwgdGVzdGRpciwgcGRibGlz
dCk6Ci0gICAgICAgIHJlcCA9IHJ1bnBkYl9hbmRfZ2V0X3JlcG9ydCgKLSAgICAgICAgICAgIHRl
c3RkaXIsCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAg
ICAgICAgIEBweXRlc3QubWFyay54ZmFpbAotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgot
ICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICIiIiwKLSAgICAgICAgKQotICAgICAg
ICBhc3NlcnQgInhmYWlsIiBpbiByZXAua2V5d29yZHMKLSAgICAgICAgYXNzZXJ0IG5vdCBwZGJs
aXN0Ci0KLSAgICBkZWYgdGVzdF9wZGJfb25fc2tpcChzZWxmLCB0ZXN0ZGlyLCBwZGJsaXN0KToK
LSAgICAgICAgcmVwID0gcnVucGRiX2FuZF9nZXRfcmVwb3J0KAotICAgICAgICAgICAgdGVzdGRp
ciwKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAg
ICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJoZWxsbyIp
Ci0gICAgICAgICIiIiwKLSAgICAgICAgKQotICAgICAgICBhc3NlcnQgcmVwLnNraXBwZWQKLSAg
ICAgICAgYXNzZXJ0IGxlbihwZGJsaXN0KSA9PSAwCi0KLSAgICBkZWYgdGVzdF9wZGJfb25fQmRi
UXVpdChzZWxmLCB0ZXN0ZGlyLCBwZGJsaXN0KToKLSAgICAgICAgcmVwID0gcnVucGRiX2FuZF9n
ZXRfcmVwb3J0KAotICAgICAgICAgICAgdGVzdGRpciwKLSAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgaW1wb3J0IGJkYgotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAg
ICAgICAgIHJhaXNlIGJkYi5CZGJRdWl0Ci0gICAgICAgICIiIiwKLSAgICAgICAgKQotICAgICAg
ICBhc3NlcnQgcmVwLmZhaWxlZAotICAgICAgICBhc3NlcnQgbGVuKHBkYmxpc3QpID09IDAKLQot
ICAgIGRlZiB0ZXN0X3BkYl9vbl9LZXlib2FyZEludGVycnVwdChzZWxmLCB0ZXN0ZGlyLCBwZGJs
aXN0KToKLSAgICAgICAgcmVwID0gcnVucGRiX2FuZF9nZXRfcmVwb3J0KAotICAgICAgICAgICAg
dGVzdGRpciwKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0Ci0gICAgICAgICIiIiwKLSAg
ICAgICAgKQotICAgICAgICBhc3NlcnQgcmVwLmZhaWxlZAotICAgICAgICBhc3NlcnQgbGVuKHBk
Ymxpc3QpID09IDEKLQotICAgIGRlZiB0ZXN0X3BkYl9pbnRlcmFjdGlvbihzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgICAgICBpID0gMAotICAgICAgICAg
ICAgICAgIGFzc2VydCBpID09IDEKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hp
bGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMiICUgcDEpCi0gICAgICAgIGNoaWxk
LmV4cGVjdCgiLipkZWYgdGVzdF8xIikKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIuKmkgPSAwIikK
LSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQot
ICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFzc2Vy
dCAiMSBmYWlsZWQiIGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJkZWYgdGVzdF8xIiBub3QgaW4g
cmVzdAotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAg
IGRlZiBmbHVzaChjaGlsZCk6Ci0gICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJEYXJ3
aW4iOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIGNoaWxkLmlzYWxpdmUoKToKLSAg
ICAgICAgICAgIGNoaWxkLndhaXQoKQotCi0gICAgZGVmIHRlc3RfcGRiX3VuaXR0ZXN0X3Bvc3Rt
b3J0ZW0oc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAot
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICAgICAgICAg
IGNsYXNzIEJsdWIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgICAgICAgIGRlZiB0ZWFy
RG93bihzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IE5vbmUKLSAg
ICAgICAgICAgICAgICBkZWYgdGVzdF9mYWxzZShzZWxmKToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5maWxlbmFtZSA9ICdkZWJ1ZycgKyAnLm1lJwotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQgMAotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bh
d25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIp
Ci0gICAgICAgIGNoaWxkLnNlbmRsaW5lKCJwIHNlbGYuZmlsZW5hbWUiKQotICAgICAgICBjaGls
ZC5zZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQot
ICAgICAgICBhc3NlcnQgImRlYnVnLm1lIiBpbiByZXN0Ci0gICAgICAgIHNlbGYuZmx1c2goY2hp
bGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfdW5pdHRlc3Rfc2tpcChzZWxmLCB0ZXN0ZGlyKToKLSAg
ICAgICAgIiIiVGVzdCBmb3IgaXNzdWUgIzIxMzciIiIKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAot
ICAgICAgICAgICAgQHVuaXR0ZXN0LnNraXBJZihUcnVlLCAnU2tpcHBpbmcgYWxzbyB3aXRoIHBk
YiBhY3RpdmUnKQotICAgICAgICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgotICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRl
c3RkaXIuc3Bhd25fcHl0ZXN0KCItcnMgLS1wZGIgJXMiICUgcDEpCi0gICAgICAgIGNoaWxkLmV4
cGVjdCgiU2tpcHBpbmcgYWxzbyB3aXRoIHBkYiBhY3RpdmUiKQotICAgICAgICBjaGlsZC5leHBl
Y3QoIjEgc2tpcHBlZCBpbiIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAgICBzZWxm
LmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX3ByaW50X2NhcHR1cmVkX3N0ZG91dChz
ZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgICAgICBwcmlu
dCgiZ2V0XFx4MjByZWt0IikKLSAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKLSAgICAgICAg
IiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1w
ZGIgJXMiICUgcDEpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiY2FwdHVyZWQgc3Rkb3V0IikKLSAg
ICAgICAgY2hpbGQuZXhwZWN0KCJnZXQgcmVrdCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBk
YikiKQotICAgICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQo
KS5kZWNvZGUoInV0ZjgiKQotICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAg
ICAgIGFzc2VydCAiZ2V0IHJla3QiIG5vdCBpbiByZXN0Ci0gICAgICAgIHNlbGYuZmx1c2goY2hp
bGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfcHJpbnRfY2FwdHVyZWRfc3RkZXJyKHNlbGYsIHRlc3Rk
aXIpOgotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKLSAg
ICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJnZXRcXHgyMHJla3QiKQotICAgICAgICAg
ICAgICAgIGFzc2VydCBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGls
ZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKLSAgICAgICAgY2hpbGQu
ZXhwZWN0KCJjYXB0dXJlZCBzdGRlcnIiKQotICAgICAgICBjaGlsZC5leHBlY3QoImdldCByZWt0
IikKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2Yo
KQotICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFz
c2VydCAiMSBmYWlsZWQiIGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJnZXQgcmVrdCIgbm90IGlu
IHJlc3QKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRlZiB0ZXN0X3BkYl9kb250
X3ByaW50X2VtcHR5X2NhcHR1cmVkX3N0ZG91dF9hbmRfc3RkZXJyKHNlbGYsIHRlc3RkaXIpOgot
ICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQotICAgICAg
ICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCIt
LXBkYiAlcyIgJSBwMSkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIG91
dHB1dCA9IGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQotICAgICAgICBjaGlsZC5zZW5kZW9m
KCkKLSAgICAgICAgYXNzZXJ0ICJjYXB0dXJlZCBzdGRvdXQiIG5vdCBpbiBvdXRwdXQKLSAgICAg
ICAgYXNzZXJ0ICJjYXB0dXJlZCBzdGRlcnIiIG5vdCBpbiBvdXRwdXQKLSAgICAgICAgc2VsZi5m
bHVzaChjaGlsZCkKLQotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgic2hvd2NhcHR1cmUi
LCBbImFsbCIsICJubyIsICJsb2ciXSkKLSAgICBkZWYgdGVzdF9wZGJfcHJpbnRfY2FwdHVyZWRf
bG9ncyhzZWxmLCB0ZXN0ZGlyLCBzaG93Y2FwdHVyZSk6Ci0gICAgICAgIHAxID0gdGVzdGRpci5t
YWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6Ci0g
ICAgICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndh
cm4oImdldCAiICsgInJla3QiKQotICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQotICAgICAg
ICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCIt
LXNob3ctY2FwdHVyZT0lcyAtLXBkYiAlcyIgJSAoc2hvd2NhcHR1cmUsIHAxKSkKLSAgICAgICAg
aWYgc2hvd2NhcHR1cmUgaW4gKCJhbGwiLCAibG9nIik6Ci0gICAgICAgICAgICBjaGlsZC5leHBl
Y3QoImNhcHR1cmVkIGxvZyIpCi0gICAgICAgICAgICBjaGlsZC5leHBlY3QoImdldCByZWt0IikK
LSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQot
ICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFzc2Vy
dCAiMSBmYWlsZWQiIGluIHJlc3QKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRl
ZiB0ZXN0X3BkYl9wcmludF9jYXB0dXJlZF9sb2dzX25vbG9nZ2luZyhzZWxmLCB0ZXN0ZGlyKToK
LSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZwotICAg
ICAgICAgICAgICAgIGxvZ2dpbmcud2FybigiZ2V0ICIgKyAicmVrdCIpCi0gICAgICAgICAgICAg
ICAgYXNzZXJ0IEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGNoaWxkID0g
dGVzdGRpci5zcGF3bl9weXRlc3QoCi0gICAgICAgICAgICAiLS1zaG93LWNhcHR1cmU9YWxsIC0t
cGRiICIgIi1wIG5vOmxvZ2dpbmcgJXMiICUgcDEKLSAgICAgICAgKQotICAgICAgICBjaGlsZC5l
eHBlY3QoImdldCByZWt0IikKLSAgICAgICAgb3V0cHV0ID0gY2hpbGQuYmVmb3JlLmRlY29kZSgi
dXRmOCIpCi0gICAgICAgIGFzc2VydCAiY2FwdHVyZWQgbG9nIiBub3QgaW4gb3V0cHV0Ci0gICAg
ICAgIGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAgICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAg
ICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQotICAgICAgICBhc3NlcnQgIjEg
ZmFpbGVkIiBpbiByZXN0Ci0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVz
dF9wZGJfaW50ZXJhY3Rpb25fZXhjZXB0aW9uKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwMSA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdAotICAgICAgICAgICAgZGVmIGdsb2JhbGZ1bmMoKToKLSAgICAgICAgICAgICAgICBw
YXNzCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAgICAgICAgICAgcHl0ZXN0LnJh
aXNlcyhWYWx1ZUVycm9yLCBnbG9iYWxmdW5jKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAg
ICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKLSAgICAg
ICAgY2hpbGQuZXhwZWN0KCIuKmRlZiB0ZXN0XzEiKQotICAgICAgICBjaGlsZC5leHBlY3QoIi4q
cHl0ZXN0LnJhaXNlcy4qZ2xvYmFsZnVuYyIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBkYiki
KQotICAgICAgICBjaGlsZC5zZW5kbGluZSgiZ2xvYmFsZnVuYyIpCi0gICAgICAgIGNoaWxkLmV4
cGVjdCgiLipmdW5jdGlvbiIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAgICBjaGls
ZC5leHBlY3QoIjEgZmFpbGVkIikKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRl
ZiB0ZXN0X3BkYl9pbnRlcmFjdGlvbl9vbl9jb2xsZWN0aW9uX2lzc3VlMTgxKHNlbGYsIHRlc3Rk
aXIpOgotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgeHh4Ci0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3QoIi0tcGRiICVz
IiAlIHAxKQotICAgICAgICAjIGNoaWxkLmV4cGVjdCgiLippbXBvcnQgcHl0ZXN0LioiKQotICAg
ICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAg
ICAgIGNoaWxkLmV4cGVjdCgiMSBlcnJvciIpCi0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0K
LSAgICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25fb25faW50ZXJuYWxfZXJyb3Ioc2VsZiwgdGVz
dGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAgICAgIiIiCi0g
ICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woKToKLSAgICAgICAgICAgICAg
ICAwLzAKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5z
cGF3bl9weXRlc3QoIi0tcGRiICVzIiAlIHAxKQotICAgICAgICAjIGNoaWxkLmV4cGVjdCgiLipp
bXBvcnQgcHl0ZXN0LioiKQotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAg
Y2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVz
dF9wZGJfaW50ZXJhY3Rpb25fY2FwdHVyaW5nX3NpbXBsZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgICAg
ICBpID0gMAotICAgICAgICAgICAgICAgIHByaW50ICgiaGVsbG8xNyIpCi0gICAgICAgICAgICAg
ICAgcHl0ZXN0LnNldF90cmFjZSgpCi0gICAgICAgICAgICAgICAgeCA9IDMKLSAgICAgICAgIiIi
Ci0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEp
KQotICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMSIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgi
eCA9IDMiKQotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hpbGQuc2Vu
ZGVvZigpCi0gICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIpCi0gICAg
ICAgIGFzc2VydCAiMSBmYWlsZWQiIGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJkZWYgdGVzdF8x
IiBpbiByZXN0Ci0gICAgICAgIGFzc2VydCAiaGVsbG8xNyIgaW4gcmVzdCAgIyBvdXQgaXMgY2Fw
dHVyZWQKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRlZiB0ZXN0X3BkYl9zZXRf
dHJhY2VfaW50ZXJjZXB0aW9uKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwMSA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHBkYgotICAg
ICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIHBkYi5zZXRfdHJhY2UoKQot
ICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0
ZXN0KHN0cihwMSkpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikKLSAgICAgICAgY2hp
bGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAgICByZXN0
ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFzc2VydCAiMSBmYWlsZWQi
IGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0
IiBub3QgaW4gcmVzdAotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3Rf
cGRiX2FuZF9jYXBzeXMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAg
ICAgICAgICBkZWYgdGVzdF8xKGNhcHN5cyk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJoZWxs
bzEiKQotICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQotICAgICAgICAiIiIKLSAg
ICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCi0g
ICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikKLSAgICAgICAgY2hpbGQuc2VuZCgiY2Fwc3lz
LnJlYWRvdXRlcnIoKVxuIikKLSAgICAgICAgY2hpbGQuZXhwZWN0KCJoZWxsbzEiKQotICAgICAg
ICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgY2hpbGQucmVhZCgpCi0gICAgICAgIHNlbGYuZmx1
c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9zZXRfdHJhY2VfY2FwdHVyaW5nX2FmdGVyd2FyZHMo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcGRiCi0gICAgICAgICAgICBkZWYgdGVzdF8x
KCk6Ci0gICAgICAgICAgICAgICAgcGRiLnNldF90cmFjZSgpCi0gICAgICAgICAgICBkZWYgdGVz
dF8yKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJoZWxsbyIpCi0gICAgICAgICAgICAgICAg
YXNzZXJ0IDAKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGly
LnNwYXduX3B5dGVzdChzdHIocDEpKQotICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMSIpCi0g
ICAgICAgIGNoaWxkLnNlbmQoImNcbiIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8yIikK
LSAgICAgICAgY2hpbGQuZXhwZWN0KCJDYXB0dXJlZCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgi
aGVsbG8iKQotICAgICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgY2hpbGQucmVhZCgpCi0g
ICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25f
ZG9jdGVzdChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAg
IGRlZiBmdW5jdGlvbl8xKCk6Ci0gICAgICAgICAgICAgICAgJycnCi0gICAgICAgICAgICAgICAg
Pj4+IGkgPSAwCi0gICAgICAgICAgICAgICAgPj4+IGFzc2VydCBpID09IDEKLSAgICAgICAgICAg
ICAgICAnJycKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGly
LnNwYXduX3B5dGVzdCgiLS1kb2N0ZXN0LW1vZHVsZXMgLS1wZGIgJXMiICUgcDEpCi0gICAgICAg
IGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAgICAgICBjaGlsZC5zZW5kbGluZSgiaSIpCi0gICAg
ICAgIGNoaWxkLmV4cGVjdCgiMCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAg
ICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUo
InV0ZjgiKQotICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAgICAgIHNlbGYu
Zmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25fY2FwdHVyaW5nX3R3
aWNlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAg
ICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgZGVm
IHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICAgICAgcHJpbnQg
KCJoZWxsbzE3IikKLSAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKLSAgICAgICAg
ICAgICAgICB4ID0gMwotICAgICAgICAgICAgICAgIHByaW50ICgiaGVsbG8xOCIpCi0gICAgICAg
ICAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgpCi0gICAgICAgICAgICAgICAgeCA9IDQKLSAgICAg
ICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdChz
dHIocDEpKQotICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMSIpCi0gICAgICAgIGNoaWxkLmV4
cGVjdCgieCA9IDMiKQotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hp
bGQuc2VuZGxpbmUoImMiKQotICAgICAgICBjaGlsZC5leHBlY3QoInggPSA0IikKLSAgICAgICAg
Y2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4
IikKLSAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAotICAgICAgICBhc3NlcnQgImRl
ZiB0ZXN0XzEiIGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJoZWxsbzE3IiBpbiByZXN0ICAjIG91
dCBpcyBjYXB0dXJlZAotICAgICAgICBhc3NlcnQgImhlbGxvMTgiIGluIHJlc3QgICMgb3V0IGlz
IGNhcHR1cmVkCi0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9wZGJf
dXNlZF9vdXRzaWRlX3Rlc3Qoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5t
YWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0g
ICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKLSAgICAgICAgICAgIHggPSA1Ci0gICAgICAg
ICIiIgotICAgICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bigiJXMgJXMiICUg
KHN5cy5leGVjdXRhYmxlLCBwMSkpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgieCA9IDUiKQotICAg
ICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRl
ZiB0ZXN0X3BkYl91c2VkX2luX2dlbmVyYXRlX3Rlc3RzKHNlbGYsIHRlc3RkaXIpOgotICAgICAg
ICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRh
ZnVuYyk6Ci0gICAgICAgICAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgpCi0gICAgICAgICAgICAg
ICAgeCA9IDUKLSAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbyhhKToKLSAgICAgICAgICAgICAgICBw
YXNzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3
bl9weXRlc3Qoc3RyKHAxKSkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCJ4ID0gNSIpCi0gICAgICAg
IGNoaWxkLnNlbmRlb2YoKQotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRl
c3RfcGRiX2NvbGxlY3Rpb25fZmFpbHVyZV9pc19zaG93bihzZWxmLCB0ZXN0ZGlyKToKLSAgICAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoInh4eCIpCi0gICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi0tcGRiIiwgcDEpCi0gICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIipOYW1lRXJyb3IqeHh4KiIsICIqMSBlcnJvcioiXSkKLQotICAg
IGRlZiB0ZXN0X2VudGVyX3BkYl9ob29rX2lzX2NhbGxlZChzZWxmLCB0ZXN0ZGlyKToKLSAgICAg
ICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRl
ZiBweXRlc3RfZW50ZXJfcGRiKGNvbmZpZyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGNvbmZp
Zy50ZXN0aW5nX3ZlcmlmaWNhdGlvbiA9PSAnY29uZmlndXJlZCcKLSAgICAgICAgICAgICAgICBw
cmludCAnZW50ZXJfcGRiX2hvb2snCi0KLSAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJl
KGNvbmZpZyk6Ci0gICAgICAgICAgICAgICAgY29uZmlnLnRlc3RpbmdfdmVyaWZpY2F0aW9uID0g
J2NvbmZpZ3VyZWQnCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHAxID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
Ci0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgotICAgICAgICAgICAgICAgIHB5dGVzdC5z
ZXRfdHJhY2UoKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3Rk
aXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiZW50ZXJfcGRi
X2hvb2siKQotICAgICAgICBjaGlsZC5zZW5kKCJjXG4iKQotICAgICAgICBjaGlsZC5zZW5kZW9m
KCkKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRlZiB0ZXN0X3BkYl9jdXN0b21f
Y2xzKHNlbGYsIHRlc3RkaXIsIGN1c3RvbV9wZGJfY2FsbHMpOgotICAgICAgICBwMSA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSgiIiJ4eHggIiIiKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdF9pbnByb2Nlc3MoIi0tcGRiIiwgIi0tcGRiY2xzPV9weXRlc3Q6X0N1c3RvbVBkYiIsIHAx
KQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqTmFtZUVycm9yKnh4eCoi
LCAiKjEgZXJyb3IqIl0pCi0gICAgICAgIGFzc2VydCBjdXN0b21fcGRiX2NhbGxzID09IFsiaW5p
dCIsICJyZXNldCIsICJpbnRlcmFjdGlvbiJdCi0KLSAgICBkZWYgdGVzdF9wZGJfY3VzdG9tX2Ns
c193aXRob3V0X3BkYihzZWxmLCB0ZXN0ZGlyLCBjdXN0b21fcGRiX2NhbGxzKToKLSAgICAgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoIiIieHh4ICIiIikKLSAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLXBkYmNscz1fcHl0ZXN0Ol9DdXN0b21QZGIiLCBw
MSkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKk5hbWVFcnJvcip4eHgq
IiwgIioxIGVycm9yKiJdKQotICAgICAgICBhc3NlcnQgY3VzdG9tX3BkYl9jYWxscyA9PSBbXQot
Ci0gICAgZGVmIHRlc3RfcGRiX2N1c3RvbV9jbHNfd2l0aF9zZXR0cmFjZShzZWxmLCB0ZXN0ZGly
LCBtb25rZXlwYXRjaCk6Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAg
IGN1c3RvbV9wZGI9IiIiCi0gICAgICAgICAgICBjbGFzcyBDdXN0b21QZGIob2JqZWN0KToKLSAg
ICAgICAgICAgICAgICBkZWYgc2V0X3RyYWNlKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAg
ICAgICAgICAgIHByaW50ICdjdXN0b20gc2V0X3RyYWNlPicKLSAgICAgICAgICIiIgotICAgICAg
ICApCi0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0g
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgot
ICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQotICAgICAgICAiIiIKLSAgICAgICAg
KQotICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEhPTlBBVEgiLCBzdHIodGVzdGRpci50
bXBkaXIpKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYmNscz1j
dXN0b21fcGRiOkN1c3RvbVBkYiAlcyIgJSBzdHIocDEpKQotCi0gICAgICAgIGNoaWxkLmV4cGVj
dCgiY3VzdG9tIHNldF90cmFjZT4iKQotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0KLWNs
YXNzIFRlc3REZWJ1Z2dpbmdCcmVha3BvaW50cyhvYmplY3QpOgotCi0gICAgZGVmIHRlc3Rfc3Vw
cG9ydHNfYnJlYWtwb2ludF9tb2R1bGVfZ2xvYmFsKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAg
ICAgVGVzdCB0aGF0IHN1cHBvcnRzIGJyZWFrcG9pbnQgZ2xvYmFsIG1hcmtzIG9uIFB5dGhvbiAz
LjcrIGFuZCBub3Qgb24KLSAgICAgICAgQ1B5dGhvbiAzLjUsIDIuNwotICAgICAgICAiIiIKLSAg
ICAgICAgaWYgc3lzLnZlcnNpb25faW5mby5tYWpvciA9PSAzIGFuZCBzeXMudmVyc2lvbl9pbmZv
Lm1pbm9yID49IDc6Ci0gICAgICAgICAgICBhc3NlcnQgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlM
VElOIGlzIFRydWUKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mby5tYWpvciA9PSAzIGFuZCBz
eXMudmVyc2lvbl9pbmZvLm1pbm9yID09IDU6Ci0gICAgICAgICAgICBhc3NlcnQgU1VQUE9SVFNf
QlJFQUtQT0lOVF9CVUlMVElOIGlzIEZhbHNlCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8u
bWFqb3IgPT0gMiBhbmQgc3lzLnZlcnNpb25faW5mby5taW5vciA9PSA3OgotICAgICAgICAgICAg
YXNzZXJ0IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiBpcyBGYWxzZQotCi0gICAgQHB5dGVz
dC5tYXJrLnNraXBpZigKLSAgICAgICAgbm90IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiwg
cmVhc29uPSJSZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRpbiIKLSAgICApCi0gICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJhcmciLCBbIi0tcGRiIiwgIiJdKQotICAgIGRlZiB0ZXN0X3N5
c19icmVha3BvaW50aG9va19jb25maWd1cmVfYW5kX3VuY29uZmlndXJlKHNlbGYsIHRlc3RkaXIs
IGFyZyk6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IHRoYXQgc3lzLmJyZWFrcG9pbnRob29r
IGlzIHNldCB0byB0aGUgY3VzdG9tIFBkYiBjbGFzcyBvbmNlIGNvbmZpZ3VyZWQsIHRlc3QgdGhh
dAotICAgICAgICBob29rIGlzIHJlc2V0IHRvIHN5c3RlbSB2YWx1ZSBvbmNlIHB5dGVzdCBoYXMg
YmVlbiB1bmNvbmZpZ3VyZWQKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0
ZXN0KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAg
ICBmcm9tIHB5dGVzdCBpbXBvcnQgaG9va2ltcGwKLSAgICAgICAgICAgIGZyb20gX3B5dGVzdC5k
ZWJ1Z2dpbmcgaW1wb3J0IHB5dGVzdFBEQgotCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZp
Z3VyZShjb25maWcpOgotICAgICAgICAgICAgICAgIGNvbmZpZy5fY2xlYW51cC5hcHBlbmQoY2hl
Y2tfcmVzdG9yZWQpCi0KLSAgICAgICAgICAgIGRlZiBjaGVja19yZXN0b3JlZCgpOgotICAgICAg
ICAgICAgICAgIGFzc2VydCBzeXMuYnJlYWtwb2ludGhvb2sgPT0gc3lzLl9fYnJlYWtwb2ludGhv
b2tfXwotCi0gICAgICAgICAgICBkZWYgdGVzdF9jaGVjaygpOgotICAgICAgICAgICAgICAgIGFz
c2VydCBzeXMuYnJlYWtwb2ludGhvb2sgPT0gcHl0ZXN0UERCLnNldF90cmFjZQotICAgICAgICAi
IiIKLSAgICAgICAgKQotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAi
IiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X25vdGhpbmcoKTogcGFzcwotICAgICAgICAiIiIKLSAg
ICAgICAgKQotICAgICAgICBhcmdzID0gKGFyZywpIGlmIGFyZyBlbHNlICgpCi0gICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKmFyZ3MpCi0gICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCBpbiAqIl0pCi0KLSAgICBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKAotICAgICAgICBub3QgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOLCBy
ZWFzb249IlJlcXVpcmVzIGJyZWFrcG9pbnQoKSBidWlsdGluIgotICAgICkKLSAgICBkZWYgdGVz
dF9wZGJfY3VzdG9tX2NscyhzZWxmLCB0ZXN0ZGlyLCBjdXN0b21fZGVidWdnZXJfaG9vayk6Ci0g
ICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAg
ICAgICBkZWYgdGVzdF9ub3RoaW5nKCk6Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2ludCgpCi0g
ICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
X2lucHJvY2VzcygKLSAgICAgICAgICAgICItLXBkYiIsICItLXBkYmNscz1fcHl0ZXN0Ol9DdXN0
b21EZWJ1Z2dlciIsIHAxCi0gICAgICAgICkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKkN1c3RvbURlYnVnZ2VyKiIsICIqMSBwYXNzZWQqIl0pCi0gICAgICAgIGFzc2Vy
dCBjdXN0b21fZGVidWdnZXJfaG9vayA9PSBbImluaXQiLCAic2V0X3RyYWNlIl0KLQotICAgIEBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYXJnIiwgWyItLXBkYiIsICIiXSkKLSAgICBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKAotICAgICAgICBub3QgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOLCBy
ZWFzb249IlJlcXVpcmVzIGJyZWFrcG9pbnQoKSBidWlsdGluIgotICAgICkKLSAgICBkZWYgdGVz
dF9lbnZpcm9uX2N1c3RvbV9jbGFzcyhzZWxmLCB0ZXN0ZGlyLCBjdXN0b21fZGVidWdnZXJfaG9v
aywgYXJnKToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIK
LSAgICAgICAgICAgIGltcG9ydCBvcwotICAgICAgICAgICAgaW1wb3J0IHN5cwotCi0gICAgICAg
ICAgICBvcy5lbnZpcm9uWydQWVRIT05CUkVBS1BPSU5UJ10gPSAnX3B5dGVzdC5fQ3VzdG9tRGVi
dWdnZXIuc2V0X3RyYWNlJwotCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWcpOgotICAgICAgICAgICAgICAgIGNvbmZpZy5fY2xlYW51cC5hcHBlbmQoY2hlY2tfcmVzdG9y
ZWQpCi0KLSAgICAgICAgICAgIGRlZiBjaGVja19yZXN0b3JlZCgpOgotICAgICAgICAgICAgICAg
IGFzc2VydCBzeXMuYnJlYWtwb2ludGhvb2sgPT0gc3lzLl9fYnJlYWtwb2ludGhvb2tfXwotCi0g
ICAgICAgICAgICBkZWYgdGVzdF9jaGVjaygpOgotICAgICAgICAgICAgICAgIGltcG9ydCBfcHl0
ZXN0Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHN5cy5icmVha3BvaW50aG9vayBpcyBfcHl0ZXN0
Ll9DdXN0b21EZWJ1Z2dlci5zZXRfdHJhY2UKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYg
dGVzdF9ub3RoaW5nKCk6IHBhc3MKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgYXJn
cyA9IChhcmcsKSBpZiBhcmcgZWxzZSAoKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdF9zdWJwcm9jZXNzKCphcmdzKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqMSBwYXNzZWQgaW4gKiJdKQotCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAg
ICAgbm90IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiwgcmVhc29uPSJSZXF1aXJlcyBicmVh
a3BvaW50KCkgYnVpbHRpbiIKLSAgICApCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAg
ICAgbm90IF9FTlZJUk9OX1BZVEhPTkJSRUFLUE9JTlQgPT0gIiIsCi0gICAgICAgIHJlYXNvbj0i
UmVxdWlyZXMgYnJlYWtwb2ludCgpIGRlZmF1bHQgdmFsdWUiLAotICAgICkKLSAgICBkZWYgdGVz
dF9zeXNfYnJlYWtwb2ludF9pbnRlcmNlcHRpb24oc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAx
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYg
dGVzdF8xKCk6Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2ludCgpCi0gICAgICAgICIiIgotICAg
ICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKLSAg
ICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzEiKQotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIp
IikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCku
ZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAotICAgICAg
ICBhc3NlcnQgInJlYWRpbmcgZnJvbSBzdGRpbiB3aGlsZSBvdXRwdXQiIG5vdCBpbiByZXN0Ci0g
ICAgICAgIFRlc3RQREIuZmx1c2goY2hpbGQpCi0KLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAot
ICAgICAgICBub3QgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOLCByZWFzb249IlJlcXVpcmVz
IGJyZWFrcG9pbnQoKSBidWlsdGluIgotICAgICkKLSAgICBkZWYgdGVzdF9wZGJfbm90X2FsdGVy
ZWQoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcGRiCi0gICAgICAgICAgICBkZWYgdGVz
dF8xKCk6Ci0gICAgICAgICAgICAgICAgcGRiLnNldF90cmFjZSgpCi0gICAgICAgICIiIgotICAg
ICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKLSAg
ICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzEiKQotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIp
IikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCku
ZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAotICAgICAg
ICBhc3NlcnQgInJlYWRpbmcgZnJvbSBzdGRpbiB3aGlsZSBvdXRwdXQiIG5vdCBpbiByZXN0Ci0g
ICAgICAgIFRlc3RQREIuZmx1c2goY2hpbGQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wbHVn
aW5tYW5hZ2VyLnB5CmluZGV4IDIyY2VhNDIwN2M2NC4uYTA4M2Y0YjRmMzc0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weQpAQCAtMSwyMyArMSwyMiBAQAotIyBl
bmNvZGluZzogVVRGLTgKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBweXRlc3QKIGltcG9ydCBvcwotaW1wb3J0
IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0CiAK
LWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGdldF9jb25maWcsIFB5dGVzdFBsdWdpbk1hbmFn
ZXIKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX05PVEVTVFNDT0xMRUNURUQsIFNlc3Np
b24KK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBQeXRlc3RQbHVnaW5NYW5hZ2VyCitmcm9tIF9weXRl
c3QuY29uZmlnLmV4Y2VwdGlvbnMgaW1wb3J0IFVzYWdlRXJyb3IKK2Zyb20gX3B5dGVzdC5tYWlu
IGltcG9ydCBTZXNzaW9uCiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYgcHl0ZXN0cG0oKToKK2Rl
ZiBweXRlc3RwbSgpIC0+IFB5dGVzdFBsdWdpbk1hbmFnZXI6CiAgICAgcmV0dXJuIFB5dGVzdFBs
dWdpbk1hbmFnZXIoKQogCiAKLWNsYXNzIFRlc3RQeXRlc3RQbHVnaW5JbnRlcmFjdGlvbnMob2Jq
ZWN0KToKLQotICAgIGRlZiB0ZXN0X2FkZGhvb2tzX2NvbmZ0ZXN0cGx1Z2luKHNlbGYsIHRlc3Rk
aXIpOgorY2xhc3MgVGVzdFB5dGVzdFBsdWdpbkludGVyYWN0aW9uczoKKyAgICBkZWYgdGVzdF9h
ZGRob29rc19jb25mdGVzdHBsdWdpbihzZWxmLCB0ZXN0ZGlyLCBfY29uZmlnX2Zvcl90ZXN0KToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgbmV3aG9va3M9IiIiCiAg
ICAgICAgICAgICBkZWYgcHl0ZXN0X215aG9vayh4eXopOgpAQCAtMjYsMjAgKzI1LDE5IEBAIGNs
YXNzIFRlc3RQeXRlc3RQbHVnaW5JbnRlcmFjdGlvbnMob2JqZWN0KToKICAgICAgICAgKQogICAg
ICAgICBjb25mID0gdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIGltcG9ydCBzeXMgOyBzeXMucGF0aC5pbnNlcnQoMCwgJy4nKQogICAgICAgICAgICAg
aW1wb3J0IG5ld2hvb2tzCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2FkZGhvb2tzKHBsdWdpbm1h
bmFnZXIpOgotICAgICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXIuYWRkaG9va3MobmV3aG9va3Mp
CisgICAgICAgICAgICAgICAgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzKG5ld2hvb2tzKQog
ICAgICAgICAgICAgZGVmIHB5dGVzdF9teWhvb2soeHl6KToKICAgICAgICAgICAgICAgICByZXR1
cm4geHl6ICsgMQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICBjb25maWcgPSBnZXRf
Y29uZmlnKCkKKyAgICAgICAgY29uZmlnID0gX2NvbmZpZ19mb3JfdGVzdAogICAgICAgICBwbSA9
IGNvbmZpZy5wbHVnaW5tYW5hZ2VyCiAgICAgICAgIHBtLmhvb2sucHl0ZXN0X2FkZGhvb2tzLmNh
bGxfaGlzdG9yaWMoCiAgICAgICAgICAgICBrd2FyZ3M9ZGljdChwbHVnaW5tYW5hZ2VyPWNvbmZp
Zy5wbHVnaW5tYW5hZ2VyKQogICAgICAgICApCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2Vy
Ll9pbXBvcnRjb25mdGVzdChjb25mKQorICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5faW1w
b3J0Y29uZnRlc3QoY29uZiwgaW1wb3J0bW9kZT0icHJlcGVuZCIpCiAgICAgICAgICMgcHJpbnQo
Y29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbnMoKSkKICAgICAgICAgcmVzID0gY29uZmln
Lmhvb2sucHl0ZXN0X215aG9vayh4eXo9MTApCiAgICAgICAgIGFzc2VydCByZXMgPT0gWzExXQpA
QCAtNDksNDMgKzQ3LDEzIEBAIGNsYXNzIFRlc3RQeXRlc3RQbHVnaW5JbnRlcmFjdGlvbnMob2Jq
ZWN0KToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICAg
ICAgZGVmIHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKToKLSAgICAgICAgICAgICAgICBw
bHVnaW5tYW5hZ2VyLmFkZGhvb2tzKHN5cykKKyAgICAgICAgICAgICAgICBwbHVnaW5tYW5hZ2Vy
LmFkZF9ob29rc3BlY3Moc3lzKQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXMg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIGFzc2VydCByZXMucmV0ICE9IDAKICAgICAg
ICAgcmVzLnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKmRpZCBub3QgZmluZCpzeXMqIl0pCiAKLSAg
ICBkZWYgdGVzdF9uYW1lc3BhY2VfZWFybHlfZnJvbV9pbXBvcnQoc2VsZiwgdGVzdGRpcik6Ci0g
ICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGZyb20gcHl0ZXN0IGltcG9ydCBJdGVtCi0gICAgICAgICAgICBmcm9tIHB5dGVzdCBpbXBv
cnQgSXRlbSBhcyBJdGVtMgotICAgICAgICAgICAgYXNzZXJ0IEl0ZW0gaXMgSXRlbTIKLSAgICAg
ICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRob24ocCkK
LSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAotCi0gICAgZGVmIHRlc3RfZG9fZXh0X25h
bWVzcGFjZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0g
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBweXRlc3RfbmFtZXNwYWNlKCk6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHsnaGVsbG8nOiAnd29ybGQnfQotICAgICAgICAiIiIKLSAgICAg
ICAgKQotICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0g
ICAgICAgICAgICBmcm9tIHB5dGVzdCBpbXBvcnQgaGVsbG8KLSAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKLSAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKCk6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IGhlbGxvID09ICJ3b3JsZCIKLSAgICAgICAgICAgICAgICBhc3NlcnQgJ2hlbGxvJyBpbiBw
eXRlc3QuX19hbGxfXwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICByZXByZWMgPSB0
ZXN0ZGlyLmlubGluZV9ydW4ocCkKLSAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2Vk
PTEpCi0KICAgICBkZWYgdGVzdF9kb19vcHRpb25fcG9zdGluaXRpYWxpemUoc2VsZiwgdGVzdGRp
cik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWd1cmUoKQogICAgICAgICBh
c3NlcnQgbm90IGhhc2F0dHIoY29uZmlnLm9wdGlvbiwgInRlc3QxMjMiKQpAQCAtOTYsMTYgKzY0
LDE1IEBAIGNsYXNzIFRlc3RQeXRlc3RQbHVnaW5JbnRlcmFjdGlvbnMob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlKQogICAgICAgICAiIiIKICAgICAgICAgKQotICAg
ICAgICBjb25maWcucGx1Z2lubWFuYWdlci5faW1wb3J0Y29uZnRlc3QocCkKKyAgICAgICAgY29u
ZmlnLnBsdWdpbm1hbmFnZXIuX2ltcG9ydGNvbmZ0ZXN0KHAsIGltcG9ydG1vZGU9InByZXBlbmQi
KQogICAgICAgICBhc3NlcnQgY29uZmlnLm9wdGlvbi50ZXN0MTIzCiAKICAgICBkZWYgdGVzdF9j
b25maWd1cmUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vj
b25maWcoKQogICAgICAgICB2YWx1ZXMgPSBbXQogCi0gICAgICAgIGNsYXNzIEEob2JqZWN0KToK
LQotICAgICAgICAgICAgZGVmIHB5dGVzdF9jb25maWd1cmUoc2VsZiwgY29uZmlnKToKKyAgICAg
ICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKHNlbGYpOgogICAg
ICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoc2VsZikKIAogICAgICAgICBjb25maWcucGx1Z2lu
bWFuYWdlci5yZWdpc3RlcihBKCkpCkBAIC0xMjAsMjIgKzg3LDIwIEBAIGNsYXNzIFRlc3RQeXRl
c3RQbHVnaW5JbnRlcmFjdGlvbnMob2JqZWN0KToKICAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFn
ZXIucmVnaXN0ZXIoQSgpKQogICAgICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMgogCi0gICAg
ZGVmIHRlc3RfaG9va190cmFjaW5nKHNlbGYpOgotICAgICAgICBweXRlc3RwbSA9IGdldF9jb25m
aWcoKS5wbHVnaW5tYW5hZ2VyICAjIGZ1bGx5IGluaXRpYWxpemVkIHdpdGggcGx1Z2lucworICAg
IGRlZiB0ZXN0X2hvb2tfdHJhY2luZyhzZWxmLCBfY29uZmlnX2Zvcl90ZXN0KSAtPiBOb25lOgor
ICAgICAgICBweXRlc3RwbSA9IF9jb25maWdfZm9yX3Rlc3QucGx1Z2lubWFuYWdlciAgIyBmdWxs
eSBpbml0aWFsaXplZCB3aXRoIHBsdWdpbnMKICAgICAgICAgc2F2ZWluZGVudCA9IFtdCiAKLSAg
ICAgICAgY2xhc3MgYXBpMShvYmplY3QpOgotCisgICAgICAgIGNsYXNzIGFwaTE6CiAgICAgICAg
ICAgICBkZWYgcHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkKHNlbGYpOgogICAgICAgICAgICAgICAg
IHNhdmVpbmRlbnQuYXBwZW5kKHB5dGVzdHBtLnRyYWNlLnJvb3QuaW5kZW50KQogCi0gICAgICAg
IGNsYXNzIGFwaTIob2JqZWN0KToKLQorICAgICAgICBjbGFzcyBhcGkyOgogICAgICAgICAgICAg
ZGVmIHB5dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZChzZWxmKToKICAgICAgICAgICAgICAgICBzYXZl
aW5kZW50LmFwcGVuZChweXRlc3RwbS50cmFjZS5yb290LmluZGVudCkKICAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCkKIAotICAgICAgICB2YWx1ZXMgPSBbXQorICAgICAgICB2YWx1
ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KICAgICAgICAgcHl0ZXN0cG0udHJhY2Uucm9vdC5z
ZXR3cml0ZXIodmFsdWVzLmFwcGVuZCkKICAgICAgICAgdW5kbyA9IHB5dGVzdHBtLmVuYWJsZV90
cmFjaW5nKCkKICAgICAgICAgdHJ5OgpAQCAtMTU4LDQ4ICsxMjMsNDggQEAgY2xhc3MgVGVzdFB5
dGVzdFBsdWdpbkludGVyYWN0aW9ucyhvYmplY3QpOgogICAgIGRlZiB0ZXN0X2hvb2tfcHJveHko
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgICIiIlRlc3QgdGhlIGdldGhvb2twcm94eSBmdW5jdGlv
bigjMjAxNikiIiIKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygpCi0gICAg
ICAgIHNlc3Npb24gPSBTZXNzaW9uKGNvbmZpZykKKyAgICAgICAgc2Vzc2lvbiA9IFNlc3Npb24u
ZnJvbV9jb25maWcoY29uZmlnKQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoKip7InRlc3Rz
L2NvbmZ0ZXN0LnB5IjogIiIsICJ0ZXN0cy9zdWJkaXIvY29uZnRlc3QucHkiOiAiIn0pCiAKICAg
ICAgICAgY29uZnRlc3QxID0gdGVzdGRpci50bXBkaXIuam9pbigidGVzdHMvY29uZnRlc3QucHki
KQogICAgICAgICBjb25mdGVzdDIgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0cy9zdWJkaXIv
Y29uZnRlc3QucHkiKQogCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25m
dGVzdChjb25mdGVzdDEpCisgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25m
dGVzdChjb25mdGVzdDEsIGltcG9ydG1vZGU9InByZXBlbmQiKQogICAgICAgICBpaG9va19hID0g
c2Vzc2lvbi5nZXRob29rcHJveHkodGVzdGRpci50bXBkaXIuam9pbigidGVzdHMiKSkKICAgICAg
ICAgYXNzZXJ0IGlob29rX2EgaXMgbm90IE5vbmUKLSAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFn
ZXIuX2ltcG9ydGNvbmZ0ZXN0KGNvbmZ0ZXN0MikKKyAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFn
ZXIuX2ltcG9ydGNvbmZ0ZXN0KGNvbmZ0ZXN0MiwgaW1wb3J0bW9kZT0icHJlcGVuZCIpCiAgICAg
ICAgIGlob29rX2IgPSBzZXNzaW9uLmdldGhvb2twcm94eSh0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0
ZXN0cyIpKQogICAgICAgICBhc3NlcnQgaWhvb2tfYSBpcyBub3QgaWhvb2tfYgogCi0gICAgZGVm
IHRlc3Rfd2Fybl9vbl9kZXByZWNhdGVkX2FkZGhvb2tzKHNlbGYsIHB5dGVzdHBtKToKLSAgICAg
ICAgd2FybmluZ3MgPSBbXQotCi0gICAgICAgIGNsYXNzIGdldF93YXJuaW5ncyhvYmplY3QpOgot
Ci0gICAgICAgICAgICBkZWYgcHl0ZXN0X2xvZ3dhcm5pbmcoc2VsZiwgY29kZSwgZnNsb2NhdGlv
biwgbWVzc2FnZSwgbm9kZWlkKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQobWVz
c2FnZSkKLQotICAgICAgICBjbGFzcyBQbHVnaW4ob2JqZWN0KToKLQotICAgICAgICAgICAgZGVm
IHB5dGVzdF90ZXN0aG9vaygpOgorICAgIGRlZiB0ZXN0X2hvb2tfd2l0aF9hZGRvcHRpb24oc2Vs
ZiwgdGVzdGRpcik6CisgICAgICAgICIiIlRlc3QgdGhhdCBob29rcyBjYW4gYmUgdXNlZCBpbiBh
IGNhbGwgdG8gcHl0ZXN0X2FkZG9wdGlvbiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICBuZXdob29rcz0iIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAg
ICAgICAgICAgIEBweXRlc3QuaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKKyAgICAgICAgICAg
IGRlZiBweXRlc3RfZGVmYXVsdF92YWx1ZSgpOgogICAgICAgICAgICAgICAgIHBhc3MKLQotICAg
ICAgICBweXRlc3RwbS5yZWdpc3RlcihnZXRfd2FybmluZ3MoKSkKLSAgICAgICAgYmVmb3JlID0g
bGlzdCh3YXJuaW5ncykKLSAgICAgICAgcHl0ZXN0cG0uYWRkaG9va3MoUGx1Z2luKCkpCi0gICAg
ICAgIGFzc2VydCBsZW4od2FybmluZ3MpID09IGxlbihiZWZvcmUpICsgMQotICAgICAgICBhc3Nl
cnQgImRlcHJlY2F0ZWQiIGluIHdhcm5pbmdzWy0xXQotCi0KLWRlZiB0ZXN0X25hbWVzcGFjZV9o
YXNfZGVmYXVsdF9hbmRfZW52X3BsdWdpbnModGVzdGRpcik6Ci0gICAgcCA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgcHl0
ZXN0Lm1hcmsKLSAgICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRob24o
cCkKLSAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgICAgICkKKyAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgbXlwbHVnaW49IiIiCisgICAgICAgICAgICBpbXBv
cnQgbmV3aG9va3MKKyAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkaG9va3MocGx1Z2lubWFuYWdl
cik6CisgICAgICAgICAgICAgICAgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzKG5ld2hvb2tz
KQorICAgICAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyLCBwbHVnaW5tYW5hZ2Vy
KToKKyAgICAgICAgICAgICAgICBkZWZhdWx0X3ZhbHVlID0gcGx1Z2lubWFuYWdlci5ob29rLnB5
dGVzdF9kZWZhdWx0X3ZhbHVlKCkKKyAgICAgICAgICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCIt
LWNvbmZpZyIsIGhlbHA9IkNvbmZpZywgZGVmYXVsdHMgdG8gJShkZWZhdWx0KXMiLCBkZWZhdWx0
PWRlZmF1bHRfdmFsdWUpCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIu
bWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBweXRlc3RfcGx1Z2lu
cz0oIm15cGx1Z2luIiwpCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2RlZmF1bHRfdmFsdWUoKToK
KyAgICAgICAgICAgICAgICByZXR1cm4gImRlZmF1bHRfdmFsdWUiCisgICAgICAgICIiIgorICAg
ICAgICApCisgICAgICAgIHJlcyA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWhlbHAiKQorICAgICAg
ICByZXMuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqLS1jb25maWc9Q09ORklHKmRlZmF1bHRfdmFs
dWUqIl0pCiAKIAogZGVmIHRlc3RfZGVmYXVsdF9tYXJrZXJzKHRlc3RkaXIpOgpAQCAtMjE1LDI0
ICsxODAsMjIgQEAgZGVmIHRlc3RfaW1wb3J0cGx1Z2luX2Vycm9yX21lc3NhZ2UodGVzdGRpciwg
cHl0ZXN0cG0pOgogICAgICIiIgogICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCh0ZXN0ZGlyLnRt
cGRpcikKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgIHF3ZT0iIiIKLSAgICAgICAg
IyBlbmNvZGluZzogVVRGLTgKKyAgICAgICAgcXdlPSIiIlwKICAgICAgICAgZGVmIHRlc3RfdHJh
Y2ViYWNrKCk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcih1J05vdCBwb3NzaWJsZSB0
byBpbXBvcnQ6IOKYuicpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignTm90IHBvc3Np
YmxlIHRvIGltcG9ydDog4pi6JykKICAgICAgICAgdGVzdF90cmFjZWJhY2soKQotICAgICIiIgor
ICAgICAgICAiIiIKICAgICApCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKSBh
cyBleGNpbmZvOgogICAgICAgICBweXRlc3RwbS5pbXBvcnRfcGx1Z2luKCJxd2UiKQogCi0gICAg
ZXhwZWN0ZWRfbWVzc2FnZSA9ICcuKkVycm9yIGltcG9ydGluZyBwbHVnaW4gInF3ZSI6IE5vdCBw
b3NzaWJsZSB0byBpbXBvcnQ6IC4nCi0gICAgZXhwZWN0ZWRfdHJhY2ViYWNrID0gIi4qaW4gdGVz
dF90cmFjZWJhY2siCi0gICAgYXNzZXJ0IHJlLm1hdGNoKGV4cGVjdGVkX21lc3NhZ2UsIHN0cihl
eGNpbmZvLnZhbHVlKSkKLSAgICBhc3NlcnQgcmUubWF0Y2goZXhwZWN0ZWRfdHJhY2ViYWNrLCBz
dHIoZXhjaW5mby50cmFjZWJhY2tbLTFdKSkKLQorICAgIGFzc2VydCBzdHIoZXhjaW5mby52YWx1
ZSkuZW5kc3dpdGgoCisgICAgICAgICdFcnJvciBpbXBvcnRpbmcgcGx1Z2luICJxd2UiOiBOb3Qg
cG9zc2libGUgdG8gaW1wb3J0OiDimLonCisgICAgKQorICAgIGFzc2VydCAiaW4gdGVzdF90cmFj
ZWJhY2siIGluIHN0cihleGNpbmZvLnRyYWNlYmFja1stMV0pCiAKLWNsYXNzIFRlc3RQeXRlc3RQ
bHVnaW5NYW5hZ2VyKG9iamVjdCk6CiAKK2NsYXNzIFRlc3RQeXRlc3RQbHVnaW5NYW5hZ2VyOgog
ICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2ltcG9ydGVkX21vZHVsZXMoc2VsZik6CiAgICAgICAgIHBt
ID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAgICAgIG1vZCA9IHR5cGVzLk1vZHVsZVR5cGUo
IngueS5weXRlc3RfaGVsbG8iKQpAQCAtMjQwLDcgKzIwMyw3IEBAIGNsYXNzIFRlc3RQeXRlc3RQ
bHVnaW5NYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBwbS5pc19yZWdpc3RlcmVkKG1v
ZCkKICAgICAgICAgdmFsdWVzID0gcG0uZ2V0X3BsdWdpbnMoKQogICAgICAgICBhc3NlcnQgbW9k
IGluIHZhbHVlcwotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsICJwbS5yZWdpc3Rl
cihtb2QpIikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBwbS5yZWdpc3Rlciwg
bW9kKQogICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcG0ucmVnaXN0
ZXIobW9kKSkKICAgICAgICAgIyBhc3NlcnQgbm90IHBtLmlzX3JlZ2lzdGVyZWQobW9kMikKICAg
ICAgICAgYXNzZXJ0IHBtLmdldF9wbHVnaW5zKCkgPT0gdmFsdWVzCkBAIC0yNTMsMjQgKzIxNiwy
MyBAQCBjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luTWFuYWdlcihvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgcG0uZ2V0X3BsdWdpbigicHl0ZXN0X3h5eiIpID09IG1vZAogICAgICAgICBhc3NlcnQgcG0u
aXNfcmVnaXN0ZXJlZChtb2QpCiAKLSAgICBkZWYgdGVzdF9jb25zaWRlcl9tb2R1bGUoc2VsZiwg
dGVzdGRpciwgcHl0ZXN0cG0pOgorICAgIGRlZiB0ZXN0X2NvbnNpZGVyX21vZHVsZShzZWxmLCB0
ZXN0ZGlyLCBweXRlc3RwbTogUHl0ZXN0UGx1Z2luTWFuYWdlcikgLT4gTm9uZToKICAgICAgICAg
dGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKHB5dGVz
dF9wMT0iIyIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZShweXRlc3RfcDI9IiMiKQogICAg
ICAgICBtb2QgPSB0eXBlcy5Nb2R1bGVUeXBlKCJ0ZW1wIikKLSAgICAgICAgbW9kLnB5dGVzdF9w
bHVnaW5zID0gWyJweXRlc3RfcDEiLCAicHl0ZXN0X3AyIl0KKyAgICAgICAgbW9kLl9fZGljdF9f
WyJweXRlc3RfcGx1Z2lucyJdID0gWyJweXRlc3RfcDEiLCAicHl0ZXN0X3AyIl0KICAgICAgICAg
cHl0ZXN0cG0uY29uc2lkZXJfbW9kdWxlKG1vZCkKICAgICAgICAgYXNzZXJ0IHB5dGVzdHBtLmdl
dF9wbHVnaW4oInB5dGVzdF9wMSIpLl9fbmFtZV9fID09ICJweXRlc3RfcDEiCiAgICAgICAgIGFz
c2VydCBweXRlc3RwbS5nZXRfcGx1Z2luKCJweXRlc3RfcDIiKS5fX25hbWVfXyA9PSAicHl0ZXN0
X3AyIgogCi0gICAgZGVmIHRlc3RfY29uc2lkZXJfbW9kdWxlX2ltcG9ydF9tb2R1bGUoc2VsZiwg
dGVzdGRpcik6Ci0gICAgICAgIHB5dGVzdHBtID0gZ2V0X2NvbmZpZygpLnBsdWdpbm1hbmFnZXIK
KyAgICBkZWYgdGVzdF9jb25zaWRlcl9tb2R1bGVfaW1wb3J0X21vZHVsZShzZWxmLCB0ZXN0ZGly
LCBfY29uZmlnX2Zvcl90ZXN0KSAtPiBOb25lOgorICAgICAgICBweXRlc3RwbSA9IF9jb25maWdf
Zm9yX3Rlc3QucGx1Z2lubWFuYWdlcgogICAgICAgICBtb2QgPSB0eXBlcy5Nb2R1bGVUeXBlKCJ4
IikKLSAgICAgICAgbW9kLnB5dGVzdF9wbHVnaW5zID0gInB5dGVzdF9hIgorICAgICAgICBtb2Qu
X19kaWN0X19bInB5dGVzdF9wbHVnaW5zIl0gPSAicHl0ZXN0X2EiCiAgICAgICAgIGFwbHVnaW4g
PSB0ZXN0ZGlyLm1ha2VweWZpbGUocHl0ZXN0X2E9IiMiKQogICAgICAgICByZXByZWMgPSB0ZXN0
ZGlyLm1ha2VfaG9va19yZWNvcmRlcihweXRlc3RwbSkKLSAgICAgICAgIyBzeXNwYXRoLnByZXBl
bmQoYXBsdWdpbi5kaXJwYXRoKCkpCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBzdHIoYXBs
dWdpbi5kaXJwYXRoKCkpKQorICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoYXBsdWdpbi5k
aXJwYXRoKCkpCiAgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX21vZHVsZShtb2QpCiAgICAgICAg
IGNhbGwgPSByZXByZWMuZ2V0Y2FsbChweXRlc3RwbS5ob29rLnB5dGVzdF9wbHVnaW5fcmVnaXN0
ZXJlZC5uYW1lKQogICAgICAgICBhc3NlcnQgY2FsbC5wbHVnaW4uX19uYW1lX18gPT0gInB5dGVz
dF9hIgpAQCAtMjg1LDE3ICsyNDcsMTggQEAgY2xhc3MgVGVzdFB5dGVzdFBsdWdpbk1hbmFnZXIo
b2JqZWN0KToKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKToKICAgICAg
ICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX2VudigpCiAKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVy
d2FybmluZ3MoImFsd2F5cyIpCiAgICAgZGVmIHRlc3RfcGx1Z2luX3NraXAoc2VsZiwgdGVzdGRp
ciwgbW9ua2V5cGF0Y2gpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAg
ICAgICAgc2tpcHBpbmcxPSIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAg
ICAgcHl0ZXN0LnNraXAoImhlbGxvIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJoZWxsbyIs
IGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAg
ICBwLmNvcHkocC5kaXJwYXRoKCJza2lwcGluZzIucHkiKSkKICAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0ZW52KCJQWVRFU1RfUExVR0lOUyIsICJza2lwcGluZzIiKQotICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJ3IiwgIi1wIiwgInNraXBwaW5nMSIsIHN5c3BhdGhpbnNlcnQ9
VHJ1ZSkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVE
CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcCIsICJza2lwcGluZzEiLCBz
eXNwYXRoaW5zZXJ0PVRydWUpCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2Rl
Lk5PX1RFU1RTX0NPTExFQ1RFRAogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
CiAgICAgICAgICAgICBbIipza2lwcGVkIHBsdWdpbipza2lwcGluZzEqaGVsbG8qIiwgIipza2lw
cGVkIHBsdWdpbipza2lwcGluZzIqaGVsbG8qIl0KICAgICAgICAgKQpAQCAtMzI5LDggKzI5Miw4
IEBAIGNsYXNzIFRlc3RQeXRlc3RQbHVnaW5NYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKIAogICAgIGRlZiB0ZXN0X2lt
cG9ydF9wbHVnaW5faW1wb3J0bmFtZShzZWxmLCB0ZXN0ZGlyLCBweXRlc3RwbSk6Ci0gICAgICAg
IHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IsICdweXRlc3RwbS5pbXBvcnRfcGx1Z2luKCJxd2Vx
d2V4LnkiKScpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IsICdweXRlc3RwbS5p
bXBvcnRfcGx1Z2luKCJweXRlc3RfcXdlcXd4LnkiKScpCisgICAgICAgIHB5dGVzdC5yYWlzZXMo
SW1wb3J0RXJyb3IsIHB5dGVzdHBtLmltcG9ydF9wbHVnaW4sICJxd2Vxd2V4LnkiKQorICAgICAg
ICBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yLCBweXRlc3RwbS5pbXBvcnRfcGx1Z2luLCAicHl0
ZXN0X3F3ZXF3eC55IikKIAogICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoKQogICAgICAg
ICBwbHVnaW5uYW1lID0gInB5dGVzdF9oZWxsbyIKQEAgLTM0Niw4ICszMDksOCBAQCBjbGFzcyBU
ZXN0UHl0ZXN0UGx1Z2luTWFuYWdlcihvYmplY3QpOgogICAgICAgICBhc3NlcnQgcGx1Z2luMiBp
cyBwbHVnaW4xCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfcGx1Z2luX2RvdHRlZF9uYW1lKHNlbGYs
IHRlc3RkaXIsIHB5dGVzdHBtKToKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhJbXBvcnRFcnJvciwg
J3B5dGVzdHBtLmltcG9ydF9wbHVnaW4oInF3ZXF3ZXgueSIpJykKLSAgICAgICAgcHl0ZXN0LnJh
aXNlcyhJbXBvcnRFcnJvciwgJ3B5dGVzdHBtLmltcG9ydF9wbHVnaW4oInB5dGVzdF9xd2Vxd2V4
LnkiKScpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IsIHB5dGVzdHBtLmltcG9y
dF9wbHVnaW4sICJxd2Vxd2V4LnkiKQorICAgICAgICBweXRlc3QucmFpc2VzKEltcG9ydEVycm9y
LCBweXRlc3RwbS5pbXBvcnRfcGx1Z2luLCAicHl0ZXN0X3F3ZXF3ZXgueSIpCiAKICAgICAgICAg
dGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKICAgICAgICAgdGVzdGRpci5ta3B5ZGlyKCJwa2ciKS5q
b2luKCJwbHVnLnB5Iikud3JpdGUoIng9MyIpCkBAIC0zNjIsMTMgKzMyNSwyNCBAQCBjbGFzcyBU
ZXN0UHl0ZXN0UGx1Z2luTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgcHl0ZXN0cG0uY29u
c2lkZXJfY29uZnRlc3QobW9kKQogCiAKLWNsYXNzIFRlc3RQeXRlc3RQbHVnaW5NYW5hZ2VyQm9v
dHN0cmFwbWluZyhvYmplY3QpOgotCitjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luTWFuYWdlckJvb3Rz
dHJhcG1pbmc6CiAgICAgZGVmIHRlc3RfcHJlcGFyc2VfYXJncyhzZWxmLCBweXRlc3RwbSk6CiAg
ICAgICAgIHB5dGVzdC5yYWlzZXMoCiAgICAgICAgICAgICBJbXBvcnRFcnJvciwgbGFtYmRhOiBw
eXRlc3RwbS5jb25zaWRlcl9wcmVwYXJzZShbInh5eiIsICItcCIsICJoZWxsbzEyMyJdKQogICAg
ICAgICApCiAKKyAgICAgICAgIyBIYW5kbGVzIC1wIHdpdGhvdXQgc3BhY2UgKCMzNTMyKS4KKyAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGNpbmZvOgorICAgICAg
ICAgICAgcHl0ZXN0cG0uY29uc2lkZXJfcHJlcGFyc2UoWyItcGhlbGxvMTIzIl0pCisgICAgICAg
IGFzc2VydCAnImhlbGxvMTIzIicgaW4gZXhjaW5mby52YWx1ZS5hcmdzWzBdCisgICAgICAgIHB5
dGVzdHBtLmNvbnNpZGVyX3ByZXBhcnNlKFsiLXBubzpoZWxsbzEyMyJdKQorCisgICAgICAgICMg
SGFuZGxlcyAtcCB3aXRob3V0IGZvbGxvd2luZyBhcmcgKHdoZW4gdXNlZCB3aXRob3V0IGFyZ3Bh
cnNlKS4KKyAgICAgICAgcHl0ZXN0cG0uY29uc2lkZXJfcHJlcGFyc2UoWyItcCJdKQorCisgICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhVc2FnZUVycm9yLCBtYXRjaD0iXnBsdWdpbiBtYWluIGNh
bm5vdCBiZSBkaXNhYmxlZCQiKToKKyAgICAgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX3ByZXBh
cnNlKFsiLXAiLCAibm86bWFpbiJdKQorCiAgICAgZGVmIHRlc3RfcGx1Z2luX3ByZXZlbnRfcmVn
aXN0ZXIoc2VsZiwgcHl0ZXN0cG0pOgogICAgICAgICBweXRlc3RwbS5jb25zaWRlcl9wcmVwYXJz
ZShbInh5eiIsICItcCIsICJubzphYmMiXSkKICAgICAgICAgbDEgPSBweXRlc3RwbS5nZXRfcGx1
Z2lucygpCkBAIC0zODQsMyArMzU4LDI4IEBAIGNsYXNzIFRlc3RQeXRlc3RQbHVnaW5NYW5hZ2Vy
Qm9vdHN0cmFwbWluZyhvYmplY3QpOgogICAgICAgICBweXRlc3RwbS5jb25zaWRlcl9wcmVwYXJz
ZShbInh5eiIsICItcCIsICJubzphYmMiXSkKICAgICAgICAgbDIgPSBweXRlc3RwbS5nZXRfcGx1
Z2lucygpCiAgICAgICAgIGFzc2VydCA0MiBub3QgaW4gbDIKKworICAgIGRlZiB0ZXN0X3BsdWdp
bl9wcmV2ZW50X3JlZ2lzdGVyX3N0ZXB3aXNlX29uX2NhY2hlcHJvdmlkZXJfdW5yZWdpc3RlcigK
KyAgICAgICAgc2VsZiwgcHl0ZXN0cG0KKyAgICApOgorICAgICAgICAiIiJGcm9tIFBSICM0MzA0
OiBUaGUgb25seSB3YXkgdG8gdW5yZWdpc3RlciBhIG1vZHVsZSBpcyBkb2N1bWVudGVkIGF0Cisg
ICAgICAgIHRoZSBlbmQgb2YgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3BsdWdp
bnMuaHRtbC4KKworICAgICAgICBXaGVuIHVucmVnaXN0ZXIgY2FjaGVwcm92aWRlciwgdGhlbiB1
bnJlZ2lzdGVyIHN0ZXB3aXNlIHRvby4KKyAgICAgICAgIiIiCisgICAgICAgIHB5dGVzdHBtLnJl
Z2lzdGVyKDQyLCBuYW1lPSJjYWNoZXByb3ZpZGVyIikKKyAgICAgICAgcHl0ZXN0cG0ucmVnaXN0
ZXIoNDMsIG5hbWU9InN0ZXB3aXNlIikKKyAgICAgICAgbDEgPSBweXRlc3RwbS5nZXRfcGx1Z2lu
cygpCisgICAgICAgIGFzc2VydCA0MiBpbiBsMQorICAgICAgICBhc3NlcnQgNDMgaW4gbDEKKyAg
ICAgICAgcHl0ZXN0cG0uY29uc2lkZXJfcHJlcGFyc2UoWyJ4eXoiLCAiLXAiLCAibm86Y2FjaGVw
cm92aWRlciJdKQorICAgICAgICBsMiA9IHB5dGVzdHBtLmdldF9wbHVnaW5zKCkKKyAgICAgICAg
YXNzZXJ0IDQyIG5vdCBpbiBsMgorICAgICAgICBhc3NlcnQgNDMgbm90IGluIGwyCisKKyAgICBk
ZWYgdGVzdF9ibG9ja2VkX3BsdWdpbl9jYW5fYmVfdXNlZChzZWxmLCBweXRlc3RwbSk6CisgICAg
ICAgIHB5dGVzdHBtLmNvbnNpZGVyX3ByZXBhcnNlKFsieHl6IiwgIi1wIiwgIm5vOmFiYyIsICIt
cCIsICJhYmMiXSkKKworICAgICAgICBhc3NlcnQgcHl0ZXN0cG0uaGFzX3BsdWdpbigiYWJjIikK
KyAgICAgICAgYXNzZXJ0IG5vdCBweXRlc3RwbS5pc19ibG9ja2VkKCJhYmMiKQorICAgICAgICBh
c3NlcnQgbm90IHB5dGVzdHBtLmlzX2Jsb2NrZWQoInB5dGVzdF9hYmMiKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3B5dGVzdGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X3B5dGVzdGVyLnB5CmluZGV4IGI3NGMwYjdmNzBjMi4uNDZmYWIwY2U4OTM3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcHl0ZXN0ZXIucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X3B5dGVzdGVyLnB5CkBAIC0xLDI0ICsxLDMzIEBACi0jIC0qLSBj
b2Rpbmc6IHV0Zi04IC0qLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IG9zCi1pbXBvcnQgcHkucGF0aAotaW1w
b3J0IHB5dGVzdAoraW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitm
cm9tIHR5cGluZyBpbXBvcnQgTGlzdAorCitpbXBvcnQgcHkucGF0aAorCiBpbXBvcnQgX3B5dGVz
dC5weXRlc3RlciBhcyBweXRlc3RlcgotZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBIb29r
UmVjb3JkZXIKLWZyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgQ3dkU25hcHNob3QsIFN5c01v
ZHVsZXNTbmFwc2hvdCwgU3lzUGF0aHNTbmFwc2hvdAoraW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0
ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFB5
dGVzdFBsdWdpbk1hbmFnZXIKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX09LLCBFWElU
X1RFU1RTRkFJTEVECitmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IEN3ZFNuYXBzaG90Citm
cm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IEhvb2tSZWNvcmRlcgorZnJvbSBfcHl0ZXN0LnB5
dGVzdGVyIGltcG9ydCBMaW5lTWF0Y2hlcgorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBT
eXNNb2R1bGVzU25hcHNob3QKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgU3lzUGF0aHNT
bmFwc2hvdAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCiAKIAotZGVmIHRl
c3RfbWFrZV9ob29rX3JlY29yZGVyKHRlc3RkaXIpOgorZGVmIHRlc3RfbWFrZV9ob29rX3JlY29y
ZGVyKHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgiZGVmIHRl
c3RfZnVuYygpOiBwYXNzIikKICAgICByZWNvcmRlciA9IHRlc3RkaXIubWFrZV9ob29rX3JlY29y
ZGVyKGl0ZW0uY29uZmlnLnBsdWdpbm1hbmFnZXIpCiAgICAgYXNzZXJ0IG5vdCByZWNvcmRlci5n
ZXRmYWlsdXJlcygpCiAKLSAgICBweXRlc3QueGZhaWwoImludGVybmFsIHJlcG9ydHJlY29yZGVy
IHRlc3RzIG5lZWQgcmVmYWN0b3JpbmciKQorICAgICMgKFRoZSBzaWxseSBjb25kaXRpb24gaXMg
dG8gZm9vbCBteXB5IHRoYXQgdGhlIGNvZGUgYmVsb3cgdGhpcyBpcyByZWFjaGFibGUpCisgICAg
aWYgMSArIDEgPT0gMjoKKyAgICAgICAgcHl0ZXN0LnhmYWlsKCJpbnRlcm5hbCByZXBvcnRyZWNv
cmRlciB0ZXN0cyBuZWVkIHJlZmFjdG9yaW5nIikKIAotICAgIGNsYXNzIHJlcChvYmplY3QpOgor
ICAgIGNsYXNzIHJlcDoKICAgICAgICAgZXhjaW5mbyA9IE5vbmUKICAgICAgICAgcGFzc2VkID0g
RmFsc2UKICAgICAgICAgZmFpbGVkID0gVHJ1ZQpAQCAtMzEsMjMgKzQwLDIzIEBAIGRlZiB0ZXN0
X21ha2VfaG9va19yZWNvcmRlcih0ZXN0ZGlyKToKICAgICBmYWlsdXJlcyA9IHJlY29yZGVyLmdl
dGZhaWx1cmVzKCkKICAgICBhc3NlcnQgZmFpbHVyZXMgPT0gW3JlcF0KIAotICAgIGNsYXNzIHJl
cChvYmplY3QpOgorICAgIGNsYXNzIHJlcDI6CiAgICAgICAgIGV4Y2luZm8gPSBOb25lCiAgICAg
ICAgIHBhc3NlZCA9IEZhbHNlCiAgICAgICAgIGZhaWxlZCA9IEZhbHNlCiAgICAgICAgIHNraXBw
ZWQgPSBUcnVlCiAgICAgICAgIHdoZW4gPSAiY2FsbCIKIAotICAgIHJlcC5wYXNzZWQgPSBGYWxz
ZQotICAgIHJlcC5za2lwcGVkID0gVHJ1ZQotICAgIHJlY29yZGVyLmhvb2sucHl0ZXN0X3J1bnRl
c3RfbG9ncmVwb3J0KHJlcG9ydD1yZXApCisgICAgcmVwMi5wYXNzZWQgPSBGYWxzZQorICAgIHJl
cDIuc2tpcHBlZCA9IFRydWUKKyAgICByZWNvcmRlci5ob29rLnB5dGVzdF9ydW50ZXN0X2xvZ3Jl
cG9ydChyZXBvcnQ9cmVwMikKIAogICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKCIi
KQotICAgIHJlcCA9IG1vZGNvbC5jb25maWcuaG9vay5weXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9y
dChjb2xsZWN0b3I9bW9kY29sKQotICAgIHJlcC5wYXNzZWQgPSBGYWxzZQotICAgIHJlcC5mYWls
ZWQgPSBUcnVlCi0gICAgcmVwLnNraXBwZWQgPSBGYWxzZQotICAgIHJlY29yZGVyLmhvb2sucHl0
ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcCkKKyAgICByZXAzID0gbW9kY29sLmNvbmZpZy5o
b29rLnB5dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcj1tb2Rjb2wpCisgICAgcmVw
My5wYXNzZWQgPSBGYWxzZQorICAgIHJlcDMuZmFpbGVkID0gVHJ1ZQorICAgIHJlcDMuc2tpcHBl
ZCA9IEZhbHNlCisgICAgcmVjb3JkZXIuaG9vay5weXRlc3RfY29sbGVjdHJlcG9ydChyZXBvcnQ9
cmVwMykKIAogICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbGVkID0gcmVjb3JkZXIubGlzdG91dGNv
bWVzKCkKICAgICBhc3NlcnQgbm90IHBhc3NlZCBhbmQgc2tpcHBlZCBhbmQgZmFpbGVkCkBAIC02
MCwxOCArNjksMTcgQEAgZGVmIHRlc3RfbWFrZV9ob29rX3JlY29yZGVyKHRlc3RkaXIpOgogCiAg
ICAgcmVjb3JkZXIudW5yZWdpc3RlcigpCiAgICAgcmVjb3JkZXIuY2xlYXIoKQotICAgIHJlY29y
ZGVyLmhvb2sucHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHJlcG9ydD1yZXApCi0gICAgcHl0ZXN0
LnJhaXNlcyhWYWx1ZUVycm9yLCAicmVjb3JkZXIuZ2V0ZmFpbHVyZXMoKSIpCisgICAgcmVjb3Jk
ZXIuaG9vay5weXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0PXJlcDMpCisgICAgcHl0ZXN0
LnJhaXNlcyhWYWx1ZUVycm9yLCByZWNvcmRlci5nZXRmYWlsdXJlcykKIAogCi1kZWYgdGVzdF9w
YXJzZWNvbmZpZyh0ZXN0ZGlyKToKK2RlZiB0ZXN0X3BhcnNlY29uZmlnKHRlc3RkaXIpIC0+IE5v
bmU6CiAgICAgY29uZmlnMSA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQogICAgIGNvbmZpZzIgPSB0
ZXN0ZGlyLnBhcnNlY29uZmlnKCkKLSAgICBhc3NlcnQgY29uZmlnMiAhPSBjb25maWcxCi0gICAg
YXNzZXJ0IGNvbmZpZzEgIT0gcHl0ZXN0LmNvbmZpZworICAgIGFzc2VydCBjb25maWcyIGlzIG5v
dCBjb25maWcxCiAKIAotZGVmIHRlc3RfdGVzdGRpcl9ydW5zX3dpdGhfcGx1Z2luKHRlc3RkaXIp
OgorZGVmIHRlc3RfdGVzdGRpcl9ydW5zX3dpdGhfcGx1Z2luKHRlc3RkaXIpIC0+IE5vbmU6CiAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgcHl0ZXN0X3BsdWdp
bnMgPSAicHl0ZXN0ZXIiCkBAIC04Myw4MiArOTEsMTQ1IEBAIGRlZiB0ZXN0X3Rlc3RkaXJfcnVu
c193aXRoX3BsdWdpbih0ZXN0ZGlyKToKICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3Nl
ZD0xKQogCiAKLWRlZiBtYWtlX2hvbGRlcigpOgorZGVmIHRlc3RfdGVzdGRpcl93aXRoX2RvY3Rl
c3QodGVzdGRpcik6CisgICAgIiIiQ2hlY2sgdGhhdCB0ZXN0ZGlyIGNhbiBiZSB1c2VkIHdpdGhp
biBkb2N0ZXN0cy4KKworICAgIEl0IHVzZWQgdG8gdXNlIGByZXF1ZXN0LmZ1bmN0aW9uYCwgd2hp
Y2ggaXMgYE5vbmVgIHdpdGggZG9jdGVzdHMuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAqKnsKKyAgICAgICAgICAgICJzdWIvdC1kb2N0ZXN0LnB5IjogIiIiCisgICAgICAg
ICcnJworICAgICAgICA+Pj4gaW1wb3J0IG9zCisgICAgICAgID4+PiB0ZXN0ZGlyID0gZ2V0Zml4
dHVyZSgidGVzdGRpciIpCisgICAgICAgID4+PiBzdHIodGVzdGRpci5tYWtlcHlmaWxlKCJjb250
ZW50IikpLnJlcGxhY2Uob3Muc2VwLCAnLycpCisgICAgICAgICcuLi4vYmFzZXRlbXAvc3ViLnQt
ZG9jdGVzdDAvc3ViLnB5JworICAgICAgICAnJycKKyAgICAiIiIsCisgICAgICAgICAgICAic3Vi
L19faW5pdF9fLnB5IjogIiIsCisgICAgICAgIH0KKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoCisgICAgICAgICItcCIsICJweXRlc3RlciIsICItLWRvY3Rlc3QtbW9kdWxl
cyIsICJzdWIvdC1kb2N0ZXN0LnB5IgorICAgICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAw
CisKKworZGVmIHRlc3RfcnVucmVzdWx0X2Fzc2VydGlvbl9vbl94ZmFpbCh0ZXN0ZGlyKSAtPiBO
b25lOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9y
dCBweXRlc3QKKworICAgICAgICBweXRlc3RfcGx1Z2lucyA9ICJweXRlc3RlciIKKworICAgICAg
ICBAcHl0ZXN0Lm1hcmsueGZhaWwKKyAgICAgICAgZGVmIHRlc3RfcG90YXRvKCk6CisgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQorICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMoeGZhaWxlZD0xKQorICAgIGFz
c2VydCByZXN1bHQucmV0ID09IDAKKworCitkZWYgdGVzdF9ydW5yZXN1bHRfYXNzZXJ0aW9uX29u
X3hwYXNzZWQodGVzdGRpcikgLT4gTm9uZToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgcHl0ZXN0X3BsdWdpbnMg
PSAicHl0ZXN0ZXIiCisKKyAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCisgICAgICAgIGRlZiB0
ZXN0X3BvdGF0bygpOgorICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAiIiIKKyAgICApCisg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29t
ZXMoeHBhc3NlZD0xKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAotICAgIGNsYXNzIGFw
aWNsYXNzKG9iamVjdCk6CiAKK2RlZiB0ZXN0X3hwYXNzZWRfd2l0aF9zdHJpY3RfaXNfY29uc2lk
ZXJlZF9hX2ZhaWx1cmUodGVzdGRpcikgLT4gTm9uZToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgcHl0ZXN0X3Bs
dWdpbnMgPSAicHl0ZXN0ZXIiCisKKyAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN0cmljdD1U
cnVlKQorICAgICAgICBkZWYgdGVzdF9wb3RhdG8oKToKKyAgICAgICAgICAgIGFzc2VydCBUcnVl
CisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBy
ZXN1bHQuYXNzZXJ0X291dGNvbWVzKGZhaWxlZD0xKQorICAgIGFzc2VydCByZXN1bHQucmV0ICE9
IDAKKworCitkZWYgbWFrZV9ob2xkZXIoKToKKyAgICBjbGFzcyBhcGljbGFzczoKICAgICAgICAg
ZGVmIHB5dGVzdF94eXooc2VsZiwgYXJnKToKLSAgICAgICAgICAgICJ4IgorICAgICAgICAgICAg
IiIiWCIiIgogCiAgICAgICAgIGRlZiBweXRlc3RfeHl6X25vYXJnKHNlbGYpOgotICAgICAgICAg
ICAgIngiCisgICAgICAgICAgICAiIiJYIiIiCiAKICAgICBhcGltb2QgPSB0eXBlKG9zKSgiYXBp
IikKIAogICAgIGRlZiBweXRlc3RfeHl6KGFyZyk6Ci0gICAgICAgICJ4IgorICAgICAgICAiIiJY
IiIiCiAKICAgICBkZWYgcHl0ZXN0X3h5el9ub2FyZygpOgotICAgICAgICAieCIKKyAgICAgICAg
IiIiWCIiIgogCi0gICAgYXBpbW9kLnB5dGVzdF94eXogPSBweXRlc3RfeHl6Ci0gICAgYXBpbW9k
LnB5dGVzdF94eXpfbm9hcmcgPSBweXRlc3RfeHl6X25vYXJnCisgICAgYXBpbW9kLnB5dGVzdF94
eXogPSBweXRlc3RfeHl6ICAjIHR5cGU6IGlnbm9yZQorICAgIGFwaW1vZC5weXRlc3RfeHl6X25v
YXJnID0gcHl0ZXN0X3h5el9ub2FyZyAgIyB0eXBlOiBpZ25vcmUKICAgICByZXR1cm4gYXBpY2xh
c3MsIGFwaW1vZAogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaG9sZGVyIiwgbWFrZV9o
b2xkZXIoKSkKLWRlZiB0ZXN0X2hvb2tyZWNvcmRlcl9iYXNpYyhob2xkZXIpOgorZGVmIHRlc3Rf
aG9va3JlY29yZGVyX2Jhc2ljKGhvbGRlcikgLT4gTm9uZToKICAgICBwbSA9IFB5dGVzdFBsdWdp
bk1hbmFnZXIoKQotICAgIHBtLmFkZGhvb2tzKGhvbGRlcikKKyAgICBwbS5hZGRfaG9va3NwZWNz
KGhvbGRlcikKICAgICByZWMgPSBIb29rUmVjb3JkZXIocG0pCiAgICAgcG0uaG9vay5weXRlc3Rf
eHl6KGFyZz0xMjMpCiAgICAgY2FsbCA9IHJlYy5wb3BjYWxsKCJweXRlc3RfeHl6IikKICAgICBh
c3NlcnQgY2FsbC5hcmcgPT0gMTIzCiAgICAgYXNzZXJ0IGNhbGwuX25hbWUgPT0gInB5dGVzdF94
eXoiCi0gICAgcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24sICJyZWMucG9wY2Fs
bCgnYWJjJykiKQorICAgIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uLCByZWMu
cG9wY2FsbCwgImFiYyIpCiAgICAgcG0uaG9vay5weXRlc3RfeHl6X25vYXJnKCkKICAgICBjYWxs
ID0gcmVjLnBvcGNhbGwoInB5dGVzdF94eXpfbm9hcmciKQogICAgIGFzc2VydCBjYWxsLl9uYW1l
ID09ICJweXRlc3RfeHl6X25vYXJnIgogCiAKLWRlZiB0ZXN0X21ha2VweWZpbGVfdW5pY29kZSh0
ZXN0ZGlyKToKLSAgICBnbG9iYWwgdW5pY2hyCi0gICAgdHJ5OgotICAgICAgICB1bmljaHIoNjUp
Ci0gICAgZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAgICAgdW5pY2hyID0gY2hyCi0gICAgdGVzdGRp
ci5tYWtlcHlmaWxlKHVuaWNocigweGZmZmQpKQorZGVmIHRlc3RfbWFrZXB5ZmlsZV91bmljb2Rl
KHRlc3RkaXIpIC0+IE5vbmU6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKGNocigweEZGRkQpKQog
CiAKLWRlZiB0ZXN0X21ha2VweWZpbGVfdXRmOCh0ZXN0ZGlyKToKK2RlZiB0ZXN0X21ha2VweWZp
bGVfdXRmOCh0ZXN0ZGlyKSAtPiBOb25lOgogICAgICIiIkVuc3VyZSBtYWtlcHlmaWxlIGFjY2Vw
dHMgdXRmLTggYnl0ZXMgYXMgaW5wdXQgKCMyNzM4KSIiIgotICAgIHV0ZjhfY29udGVudHMgPSB1
IiIiCisgICAgdXRmOF9jb250ZW50cyA9ICIiIgogICAgICAgICBkZWYgc2V0dXBfZnVuY3Rpb24o
ZnVuY3Rpb24pOgotICAgICAgICAgICAgbWl4ZWRfZW5jb2RpbmcgPSB1J1PDo28gUGF1bG8nCi0g
ICAgIiIiLmVuY29kZSgKLSAgICAgICAgInV0Zi04IgotICAgICkKKyAgICAgICAgICAgIG1peGVk
X2VuY29kaW5nID0gJ1PDo28gUGF1bG8nCisgICAgIiIiLmVuY29kZSgpCiAgICAgcCA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSh1dGY4X2NvbnRlbnRzKQotICAgIGFzc2VydCB1Im1peGVkX2VuY29kaW5n
ID0gdSdTw6NvIFBhdWxvJyIuZW5jb2RlKCJ1dGYtOCIpIGluIHAucmVhZCgicmIiKQorICAgIGFz
c2VydCAibWl4ZWRfZW5jb2RpbmcgPSAnU8OjbyBQYXVsbyciLmVuY29kZSgpIGluIHAucmVhZCgi
cmIiKQogCiAKLWNsYXNzIFRlc3RJbmxpbmVSdW5Nb2R1bGVzQ2xlYW51cChvYmplY3QpOgotCi0g
ICAgZGVmIHRlc3RfaW5saW5lX3J1bl90ZXN0X21vZHVsZV9ub3RfY2xlYW5lZF91cChzZWxmLCB0
ZXN0ZGlyKToKK2NsYXNzIFRlc3RJbmxpbmVSdW5Nb2R1bGVzQ2xlYW51cDoKKyAgICBkZWYgdGVz
dF9pbmxpbmVfcnVuX3Rlc3RfbW9kdWxlX25vdF9jbGVhbmVkX3VwKHNlbGYsIHRlc3RkaXIpIC0+
IE5vbmU6CiAgICAgICAgIHRlc3RfbW9kID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9m
b28oKTogYXNzZXJ0IFRydWUiKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLmlubGluZV9ydW4o
c3RyKHRlc3RfbW9kKSkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJVF9PSworICAg
ICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5PSwogICAgICAgICAjIHJld3JpdGUg
bW9kdWxlLCBub3cgdGVzdCBzaG91bGQgZmFpbCBpZiBtb2R1bGUgd2FzIHJlLWltcG9ydGVkCiAg
ICAgICAgIHRlc3RfbW9kLndyaXRlKCJkZWYgdGVzdF9mb28oKTogYXNzZXJ0IEZhbHNlIikKICAg
ICAgICAgcmVzdWx0MiA9IHRlc3RkaXIuaW5saW5lX3J1bihzdHIodGVzdF9tb2QpKQotICAgICAg
ICBhc3NlcnQgcmVzdWx0Mi5yZXQgPT0gRVhJVF9URVNUU0ZBSUxFRAorICAgICAgICBhc3NlcnQg
cmVzdWx0Mi5yZXQgPT0gRXhpdENvZGUuVEVTVFNfRkFJTEVECiAKICAgICBkZWYgc3B5X2ZhY3Rv
cnkoc2VsZik6CisgICAgICAgIGNsYXNzIFN5c01vZHVsZXNTbmFwc2hvdFNweToKKyAgICAgICAg
ICAgIGluc3RhbmNlcyA9IFtdICAjIHR5cGU6IExpc3RbU3lzTW9kdWxlc1NuYXBzaG90U3B5XQog
Ci0gICAgICAgIGNsYXNzIFN5c01vZHVsZXNTbmFwc2hvdFNweShvYmplY3QpOgotICAgICAgICAg
ICAgaW5zdGFuY2VzID0gW10KLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZXNl
cnZlPU5vbmUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZXNlcnZlPU5vbmUp
IC0+IE5vbmU6CiAgICAgICAgICAgICAgICAgU3lzTW9kdWxlc1NuYXBzaG90U3B5Lmluc3RhbmNl
cy5hcHBlbmQoc2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9zcHlfcmVzdG9yZV9jb3VudCA9
IDAKICAgICAgICAgICAgICAgICBzZWxmLl9zcHlfcHJlc2VydmUgPSBwcmVzZXJ2ZQpAQCAtMTcy
LDExICsyNDMsMTEgQEAgY2xhc3MgVGVzdElubGluZVJ1bk1vZHVsZXNDbGVhbnVwKG9iamVjdCk6
CiAKICAgICBkZWYgdGVzdF9pbmxpbmVfcnVuX3Rha2luZ19hbmRfcmVzdG9yaW5nX2Ffc3lzX21v
ZHVsZXNfc25hcHNob3QoCiAgICAgICAgIHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoCi0gICAg
KToKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIHNweV9mYWN0b3J5ID0gc2VsZi5zcHlfZmFjdG9y
eSgpCiAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocHl0ZXN0ZXIsICJTeXNNb2R1bGVzU25h
cHNob3QiLCBzcHlfZmFjdG9yeSkKLSAgICAgICAgb3JpZ2luYWwgPSBkaWN0KHN5cy5tb2R1bGVz
KQogICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoKQorICAgICAgICBvcmlnaW5hbCA9IGRp
Y3Qoc3lzLm1vZHVsZXMpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZShpbXBvcnQxPSIjIHlv
dSBzb24gb2YgYSBzaWxseSBwZXJzb24iKQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoaW1w
b3J0Mj0iIyBteSBob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCiAgICAgICAgIHRlc3RfbW9k
ID0gdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMTkzLDcgKzI2NCw3IEBAIGNsYXNzIFRlc3RJbmxp
bmVSdW5Nb2R1bGVzQ2xlYW51cChvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfaW5saW5lX3J1bl9z
eXNfbW9kdWxlc19zbmFwc2hvdF9yZXN0b3JlX3ByZXNlcnZpbmdfbW9kdWxlcygKICAgICAgICAg
c2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gKLSAgICApOgorICAgICkgLT4gTm9uZToKICAgICAg
ICAgc3B5X2ZhY3RvcnkgPSBzZWxmLnNweV9mYWN0b3J5KCkKICAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cihweXRlc3RlciwgIlN5c01vZHVsZXNTbmFwc2hvdCIsIHNweV9mYWN0b3J5KQogICAg
ICAgICB0ZXN0X21vZCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfZm9vKCk6IHBhc3Mi
KQpAQCAtMjA0LDcgKzI3NSw3IEBAIGNsYXNzIFRlc3RJbmxpbmVSdW5Nb2R1bGVzQ2xlYW51cChv
YmplY3QpOgogICAgICAgICBhc3NlcnQgc3B5Ll9zcHlfcHJlc2VydmUoInpvcGUuaW50ZXJmYWNl
IikKICAgICAgICAgYXNzZXJ0IHNweS5fc3B5X3ByZXNlcnZlKCJ6b3BlbGljaW91cyIpCiAKLSAg
ICBkZWYgdGVzdF9leHRlcm5hbF90ZXN0X21vZHVsZV9pbXBvcnRzX25vdF9jbGVhbmVkX3VwKHNl
bGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2V4dGVybmFsX3Rlc3RfbW9kdWxlX2ltcG9ydHNf
bm90X2NsZWFuZWRfdXAoc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5z
eXNwYXRoaW5zZXJ0KCkKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKGltcG9ydGVkPSJkYXRh
ID0gJ3lvdSBzb24gb2YgYSBzaWxseSBwZXJzb24nIikKICAgICAgICAgaW1wb3J0IGltcG9ydGVk
CkBAIC0yMTksNjggKzI5MCwxNiBAQCBjbGFzcyBUZXN0SW5saW5lUnVuTW9kdWxlc0NsZWFudXAo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGltcG9ydGVkLmRhdGEgPT0gNDIKIAogCi1kZWYgdGVz
dF9pbmxpbmVfcnVuX2NsZWFuX3N5c19wYXRocyh0ZXN0ZGlyKToKLQotICAgIGRlZiB0ZXN0X3N5
c19wYXRoX2NoYW5nZV9jbGVhbnVwKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0X3BhdGgx
ID0gdGVzdGRpci50bXBkaXIuam9pbigiYm9pbmsxIikuc3RycGF0aAotICAgICAgICB0ZXN0X3Bh
dGgyID0gdGVzdGRpci50bXBkaXIuam9pbigiYm9pbmsyIikuc3RycGF0aAotICAgICAgICB0ZXN0
X3BhdGgzID0gdGVzdGRpci50bXBkaXIuam9pbigiYm9pbmszIikuc3RycGF0aAotICAgICAgICBz
eXMucGF0aC5hcHBlbmQodGVzdF9wYXRoMSkKLSAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQo
dGVzdF9wYXRoMSkKLSAgICAgICAgb3JpZ2luYWxfcGF0aCA9IGxpc3Qoc3lzLnBhdGgpCi0gICAg
ICAgIG9yaWdpbmFsX21ldGFfcGF0aCA9IGxpc3Qoc3lzLm1ldGFfcGF0aCkKLSAgICAgICAgdGVz
dF9tb2QgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
IGltcG9ydCBzeXMKLSAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCh7OnRlc3RfcGF0aDJ9KQot
ICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoezp0ZXN0X3BhdGgyfSkKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X2ZvbygpOgotICAgICAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCh7OnRl
c3RfcGF0aDN9KQotICAgICAgICAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKHs6dGVzdF9w
YXRoM30pIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBsb2NhbHMoKQotICAgICAgICAgICAg
KQotICAgICAgICApCi0gICAgICAgIHRlc3RkaXIuaW5saW5lX3J1bihzdHIodGVzdF9tb2QpKQot
ICAgICAgICBhc3NlcnQgc3lzLnBhdGggPT0gb3JpZ2luYWxfcGF0aAotICAgICAgICBhc3NlcnQg
c3lzLm1ldGFfcGF0aCA9PSBvcmlnaW5hbF9tZXRhX3BhdGgKLQotICAgIGRlZiBzcHlfZmFjdG9y
eShzZWxmKToKLQotICAgICAgICBjbGFzcyBTeXNQYXRoc1NuYXBzaG90U3B5KG9iamVjdCk6Ci0g
ICAgICAgICAgICBpbnN0YW5jZXMgPSBbXQotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgICAgICAgICAgU3lzUGF0aHNTbmFwc2hvdFNweS5pbnN0YW5jZXMuYXBwZW5k
KHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3B5X3Jlc3RvcmVfY291bnQgPSAwCi0gICAg
ICAgICAgICAgICAgc2VsZi5fX3NuYXBzaG90ID0gU3lzUGF0aHNTbmFwc2hvdCgpCi0KLSAgICAg
ICAgICAgIGRlZiByZXN0b3JlKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuX3NweV9yZXN0
b3JlX2NvdW50ICs9IDEKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3NuYXBzaG90LnJl
c3RvcmUoKQotCi0gICAgICAgIHJldHVybiBTeXNQYXRoc1NuYXBzaG90U3B5Ci0KLSAgICBkZWYg
dGVzdF9pbmxpbmVfcnVuX3Rha2luZ19hbmRfcmVzdG9yaW5nX2Ffc3lzX3BhdGhzX3NuYXBzaG90
KAotICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaAotICAgICk6Ci0gICAgICAgIHNw
eV9mYWN0b3J5ID0gc2VsZi5zcHlfZmFjdG9yeSgpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGF0
dHIocHl0ZXN0ZXIsICJTeXNQYXRoc1NuYXBzaG90Iiwgc3B5X2ZhY3RvcnkpCi0gICAgICAgIHRl
c3RfbW9kID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mb28oKTogcGFzcyIpCi0gICAg
ICAgIHRlc3RkaXIuaW5saW5lX3J1bihzdHIodGVzdF9tb2QpKQotICAgICAgICBhc3NlcnQgbGVu
KHNweV9mYWN0b3J5Lmluc3RhbmNlcykgPT0gMQotICAgICAgICBzcHkgPSBzcHlfZmFjdG9yeS5p
bnN0YW5jZXNbMF0KLSAgICAgICAgYXNzZXJ0IHNweS5fc3B5X3Jlc3RvcmVfY291bnQgPT0gMQot
Ci0KLWRlZiB0ZXN0X2Fzc2VydF9vdXRjb21lc19hZnRlcl9weXRlc3RfZXJyb3IodGVzdGRpcik6
CitkZWYgdGVzdF9hc3NlcnRfb3V0Y29tZXNfYWZ0ZXJfcHl0ZXN0X2Vycm9yKHRlc3RkaXIpIC0+
IE5vbmU6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mb28oKTogYXNzZXJ0IFRy
dWUiKQogCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tdW5leHBlY3RlZC1hcmd1
bWVudCIpCi0gICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1lc3NhZ2U9IlB5dGVz
dCB0ZXJtaW5hbCByZXBvcnQgbm90IGZvdW5kIik6CisgICAgd2l0aCBweXRlc3QucmFpc2VzKFZh
bHVlRXJyb3IsIG1hdGNoPSJQeXRlc3QgdGVybWluYWwgc3VtbWFyeSByZXBvcnQgbm90IGZvdW5k
Iik6CiAgICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTApCiAKIAotZGVmIHRl
c3RfY3dkX3NuYXBzaG90KHRtcGRpcik6CitkZWYgdGVzdF9jd2Rfc25hcHNob3QodGVzdGRpcjog
VGVzdGRpcikgLT4gTm9uZToKKyAgICB0bXBkaXIgPSB0ZXN0ZGlyLnRtcGRpcgogICAgIGZvbyA9
IHRtcGRpci5lbnN1cmUoImZvbyIsIGRpcj0xKQogICAgIGJhciA9IHRtcGRpci5lbnN1cmUoImJh
ciIsIGRpcj0xKQogICAgIGZvby5jaGRpcigpCkBAIC0yOTEsMTkgKzMxMCwxOSBAQCBkZWYgdGVz
dF9jd2Rfc25hcHNob3QodG1wZGlyKToKICAgICBhc3NlcnQgcHkucGF0aC5sb2NhbCgpID09IGZv
bwogCiAKLWNsYXNzIFRlc3RTeXNNb2R1bGVzU25hcHNob3Qob2JqZWN0KToKK2NsYXNzIFRlc3RT
eXNNb2R1bGVzU25hcHNob3Q6CiAgICAga2V5ID0gIm15LXRlc3QtbW9kdWxlIgogCi0gICAgZGVm
IHRlc3RfcmVtb3ZlX2FkZGVkKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JlbW92ZV9hZGRlZChzZWxm
KSAtPiBOb25lOgogICAgICAgICBvcmlnaW5hbCA9IGRpY3Qoc3lzLm1vZHVsZXMpCiAgICAgICAg
IGFzc2VydCBzZWxmLmtleSBub3QgaW4gc3lzLm1vZHVsZXMKICAgICAgICAgc25hcHNob3QgPSBT
eXNNb2R1bGVzU25hcHNob3QoKQotICAgICAgICBzeXMubW9kdWxlc1tzZWxmLmtleV0gPSAic29t
ZXRoaW5nIgorICAgICAgICBzeXMubW9kdWxlc1tzZWxmLmtleV0gPSAic29tZXRoaW5nIiAgIyB0
eXBlOiBpZ25vcmUKICAgICAgICAgYXNzZXJ0IHNlbGYua2V5IGluIHN5cy5tb2R1bGVzCiAgICAg
ICAgIHNuYXBzaG90LnJlc3RvcmUoKQogICAgICAgICBhc3NlcnQgc3lzLm1vZHVsZXMgPT0gb3Jp
Z2luYWwKIAotICAgIGRlZiB0ZXN0X2FkZF9yZW1vdmVkKHNlbGYsIG1vbmtleXBhdGNoKToKKyAg
ICBkZWYgdGVzdF9hZGRfcmVtb3ZlZChzZWxmLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICAg
ICAgYXNzZXJ0IHNlbGYua2V5IG5vdCBpbiBzeXMubW9kdWxlcwogICAgICAgICBtb25rZXlwYXRj
aC5zZXRpdGVtKHN5cy5tb2R1bGVzLCBzZWxmLmtleSwgInNvbWV0aGluZyIpCiAgICAgICAgIGFz
c2VydCBzZWxmLmtleSBpbiBzeXMubW9kdWxlcwpAQCAtMzE0LDE3ICszMzMsMTcgQEAgY2xhc3Mg
VGVzdFN5c01vZHVsZXNTbmFwc2hvdChvYmplY3QpOgogICAgICAgICBzbmFwc2hvdC5yZXN0b3Jl
KCkKICAgICAgICAgYXNzZXJ0IHN5cy5tb2R1bGVzID09IG9yaWdpbmFsCiAKLSAgICBkZWYgdGVz
dF9yZXN0b3JlX3JlbG9hZGVkKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICBkZWYgdGVzdF9yZXN0
b3JlX3JlbG9hZGVkKHNlbGYsIG1vbmtleXBhdGNoKSAtPiBOb25lOgogICAgICAgICBhc3NlcnQg
c2VsZi5rZXkgbm90IGluIHN5cy5tb2R1bGVzCiAgICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0o
c3lzLm1vZHVsZXMsIHNlbGYua2V5LCAic29tZXRoaW5nIikKICAgICAgICAgYXNzZXJ0IHNlbGYu
a2V5IGluIHN5cy5tb2R1bGVzCiAgICAgICAgIG9yaWdpbmFsID0gZGljdChzeXMubW9kdWxlcykK
ICAgICAgICAgc25hcHNob3QgPSBTeXNNb2R1bGVzU25hcHNob3QoKQotICAgICAgICBzeXMubW9k
dWxlc1tzZWxmLmtleV0gPSAic29tZXRoaW5nIGVsc2UiCisgICAgICAgIHN5cy5tb2R1bGVzW3Nl
bGYua2V5XSA9ICJzb21ldGhpbmcgZWxzZSIgICMgdHlwZTogaWdub3JlCiAgICAgICAgIHNuYXBz
aG90LnJlc3RvcmUoKQogICAgICAgICBhc3NlcnQgc3lzLm1vZHVsZXMgPT0gb3JpZ2luYWwKIAot
ICAgIGRlZiB0ZXN0X3ByZXNlcnZlX21vZHVsZXMoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgIGRl
ZiB0ZXN0X3ByZXNlcnZlX21vZHVsZXMoc2VsZiwgbW9ua2V5cGF0Y2gpIC0+IE5vbmU6CiAgICAg
ICAgIGtleSA9IFtzZWxmLmtleSArIHN0cihpKSBmb3IgaSBpbiByYW5nZSgzKV0KICAgICAgICAg
YXNzZXJ0IG5vdCBhbnkoayBpbiBzeXMubW9kdWxlcyBmb3IgayBpbiBrZXkpCiAgICAgICAgIGZv
ciBpLCBrIGluIGVudW1lcmF0ZShrZXkpOgpAQCAtMzM1LDE3ICszNTQsMTcgQEAgY2xhc3MgVGVz
dFN5c01vZHVsZXNTbmFwc2hvdChvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIG5hbWUgaW4g
KGtleVswXSwga2V5WzFdLCAic29tZS1vdGhlci1rZXkiKQogCiAgICAgICAgIHNuYXBzaG90ID0g
U3lzTW9kdWxlc1NuYXBzaG90KHByZXNlcnZlPXByZXNlcnZlKQotICAgICAgICBzeXMubW9kdWxl
c1trZXlbMF1dID0gb3JpZ2luYWxba2V5WzBdXSA9ICJzb21ldGhpbmcgZWxzZTAiCi0gICAgICAg
IHN5cy5tb2R1bGVzW2tleVsxXV0gPSBvcmlnaW5hbFtrZXlbMV1dID0gInNvbWV0aGluZyBlbHNl
MSIKLSAgICAgICAgc3lzLm1vZHVsZXNba2V5WzJdXSA9ICJzb21ldGhpbmcgZWxzZTIiCisgICAg
ICAgIHN5cy5tb2R1bGVzW2tleVswXV0gPSBvcmlnaW5hbFtrZXlbMF1dID0gInNvbWV0aGluZyBl
bHNlMCIgICMgdHlwZTogaWdub3JlCisgICAgICAgIHN5cy5tb2R1bGVzW2tleVsxXV0gPSBvcmln
aW5hbFtrZXlbMV1dID0gInNvbWV0aGluZyBlbHNlMSIgICMgdHlwZTogaWdub3JlCisgICAgICAg
IHN5cy5tb2R1bGVzW2tleVsyXV0gPSAic29tZXRoaW5nIGVsc2UyIiAgIyB0eXBlOiBpZ25vcmUK
ICAgICAgICAgc25hcHNob3QucmVzdG9yZSgpCiAgICAgICAgIGFzc2VydCBzeXMubW9kdWxlcyA9
PSBvcmlnaW5hbAogCi0gICAgZGVmIHRlc3RfcHJlc2VydmVfY29udGFpbmVyKHNlbGYsIG1vbmtl
eXBhdGNoKToKKyAgICBkZWYgdGVzdF9wcmVzZXJ2ZV9jb250YWluZXIoc2VsZiwgbW9ua2V5cGF0
Y2gpIC0+IE5vbmU6CiAgICAgICAgIG9yaWdpbmFsID0gZGljdChzeXMubW9kdWxlcykKICAgICAg
ICAgYXNzZXJ0IHNlbGYua2V5IG5vdCBpbiBvcmlnaW5hbAogICAgICAgICByZXBsYWNlbWVudCA9
IGRpY3Qoc3lzLm1vZHVsZXMpCi0gICAgICAgIHJlcGxhY2VtZW50W3NlbGYua2V5XSA9ICJsaWZl
IG9mIGJyaWFuIgorICAgICAgICByZXBsYWNlbWVudFtzZWxmLmtleV0gPSAibGlmZSBvZiBicmlh
biIgICMgdHlwZTogaWdub3JlCiAgICAgICAgIHNuYXBzaG90ID0gU3lzTW9kdWxlc1NuYXBzaG90
KCkKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJtb2R1bGVzIiwgcmVwbGFjZW1l
bnQpCiAgICAgICAgIHNuYXBzaG90LnJlc3RvcmUoKQpAQCAtMzU0LDE0ICszNzMsMTQgQEAgY2xh
c3MgVGVzdFN5c01vZHVsZXNTbmFwc2hvdChvYmplY3QpOgogCiAKIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgicGF0aF90eXBlIiwgKCJwYXRoIiwgIm1ldGFfcGF0aCIpKQotY2xhc3MgVGVzdFN5
c1BhdGhzU25hcHNob3Qob2JqZWN0KToKK2NsYXNzIFRlc3RTeXNQYXRoc1NuYXBzaG90OgogICAg
IG90aGVyX3BhdGggPSB7InBhdGgiOiAibWV0YV9wYXRoIiwgIm1ldGFfcGF0aCI6ICJwYXRoIn0K
IAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcGF0aChuKToKKyAgICBkZWYgcGF0aChuOiBp
bnQpIC0+IHN0cjoKICAgICAgICAgcmV0dXJuICJteS1kaXJ0eS1saXR0bGUtc2VjcmV0LSIgKyBz
dHIobikKIAotICAgIGRlZiB0ZXN0X3Jlc3RvcmUoc2VsZiwgbW9ua2V5cGF0Y2gsIHBhdGhfdHlw
ZSk6CisgICAgZGVmIHRlc3RfcmVzdG9yZShzZWxmLCBtb25rZXlwYXRjaCwgcGF0aF90eXBlKSAt
PiBOb25lOgogICAgICAgICBvdGhlcl9wYXRoX3R5cGUgPSBzZWxmLm90aGVyX3BhdGhbcGF0aF90
eXBlXQogICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CiAgICAgICAgICAgICBhc3NlcnQgc2Vs
Zi5wYXRoKGkpIG5vdCBpbiBnZXRhdHRyKHN5cywgcGF0aF90eXBlKQpAQCAtMzcwLDkgKzM4OSw3
IEBAIGNsYXNzIFRlc3RTeXNQYXRoc1NuYXBzaG90KG9iamVjdCk6CiAgICAgICAgIG9yaWdpbmFs
ID0gbGlzdChzeXNfcGF0aCkKICAgICAgICAgb3JpZ2luYWxfb3RoZXIgPSBsaXN0KGdldGF0dHIo
c3lzLCBvdGhlcl9wYXRoX3R5cGUpKQogICAgICAgICBzbmFwc2hvdCA9IFN5c1BhdGhzU25hcHNo
b3QoKQotICAgICAgICB0cmFuc2Zvcm1hdGlvbiA9IHsKLSAgICAgICAgICAgICJzb3VyY2UiOiAo
MCwgMSwgMiwgMywgNCwgNSksICJ0YXJnZXQiOiAoNiwgMiwgOSwgNywgNSwgOCkKLSAgICAgICAg
fSAgIyBub3FhOiBFMjAxCisgICAgICAgIHRyYW5zZm9ybWF0aW9uID0geyJzb3VyY2UiOiAoMCwg
MSwgMiwgMywgNCwgNSksICJ0YXJnZXQiOiAoNiwgMiwgOSwgNywgNSwgOCl9CiAgICAgICAgIGFz
c2VydCBzeXNfcGF0aCA9PSBbc2VsZi5wYXRoKHgpIGZvciB4IGluIHRyYW5zZm9ybWF0aW9uWyJz
b3VyY2UiXV0KICAgICAgICAgc3lzX3BhdGhbMV0gPSBzZWxmLnBhdGgoNikKICAgICAgICAgc3lz
X3BhdGhbM10gPSBzZWxmLnBhdGgoNykKQEAgLTM4NiwxMiArNDAzLDEyIEBAIGNsYXNzIFRlc3RT
eXNQYXRoc1NuYXBzaG90KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBnZXRhdHRyKHN5cywgcGF0
aF90eXBlKSA9PSBvcmlnaW5hbAogICAgICAgICBhc3NlcnQgZ2V0YXR0cihzeXMsIG90aGVyX3Bh
dGhfdHlwZSkgPT0gb3JpZ2luYWxfb3RoZXIKIAotICAgIGRlZiB0ZXN0X3ByZXNlcnZlX2NvbnRh
aW5lcihzZWxmLCBtb25rZXlwYXRjaCwgcGF0aF90eXBlKToKKyAgICBkZWYgdGVzdF9wcmVzZXJ2
ZV9jb250YWluZXIoc2VsZiwgbW9ua2V5cGF0Y2gsIHBhdGhfdHlwZSkgLT4gTm9uZToKICAgICAg
ICAgb3RoZXJfcGF0aF90eXBlID0gc2VsZi5vdGhlcl9wYXRoW3BhdGhfdHlwZV0KICAgICAgICAg
b3JpZ2luYWxfZGF0YSA9IGxpc3QoZ2V0YXR0cihzeXMsIHBhdGhfdHlwZSkpCiAgICAgICAgIG9y
aWdpbmFsX290aGVyID0gZ2V0YXR0cihzeXMsIG90aGVyX3BhdGhfdHlwZSkKICAgICAgICAgb3Jp
Z2luYWxfb3RoZXJfZGF0YSA9IGxpc3Qob3JpZ2luYWxfb3RoZXIpCi0gICAgICAgIG5ldyA9IFtd
CisgICAgICAgIG5ldyA9IFtdICAjIHR5cGU6IExpc3Rbb2JqZWN0XQogICAgICAgICBzbmFwc2hv
dCA9IFN5c1BhdGhzU25hcHNob3QoKQogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5cywg
cGF0aF90eXBlLCBuZXcpCiAgICAgICAgIHNuYXBzaG90LnJlc3RvcmUoKQpAQCAtMzk5LDMgKzQx
NiwzOTQgQEAgY2xhc3MgVGVzdFN5c1BhdGhzU25hcHNob3Qob2JqZWN0KToKICAgICAgICAgYXNz
ZXJ0IGdldGF0dHIoc3lzLCBwYXRoX3R5cGUpID09IG9yaWdpbmFsX2RhdGEKICAgICAgICAgYXNz
ZXJ0IGdldGF0dHIoc3lzLCBvdGhlcl9wYXRoX3R5cGUpIGlzIG9yaWdpbmFsX290aGVyCiAgICAg
ICAgIGFzc2VydCBnZXRhdHRyKHN5cywgb3RoZXJfcGF0aF90eXBlKSA9PSBvcmlnaW5hbF9vdGhl
cl9kYXRhCisKKworZGVmIHRlc3RfdGVzdGRpcl9zdWJwcm9jZXNzKHRlc3RkaXIpIC0+IE5vbmU6
CisgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X29uZSgpOiBwYXNz
IikKKyAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2Vzcyh0ZXN0ZmlsZSkucmV0
ID09IDAKKworCitkZWYgdGVzdF90ZXN0ZGlyX3N1YnByb2Nlc3NfdmlhX3J1bnB5dGVzdF9hcmco
dGVzdGRpcikgLT4gTm9uZToKKyAgICB0ZXN0ZmlsZSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X3Rlc3RkaXJfc3VicHJvY2Vzcyh0ZXN0ZGlyKToK
KyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICAgICAgICAgXCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBv
cworICAgICAgICAgICAgICAgIGRlZiB0ZXN0X29uZSgpOgorICAgICAgICAgICAgICAgICAgICBh
c3NlcnQge30gIT0gb3MuZ2V0cGlkKCkKKyAgICAgICAgICAgICAgICBcIiIiLmZvcm1hdChvcy5n
ZXRwaWQoKSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5
dGVzdCh0ZXN0ZmlsZSkucmV0ID09IDAKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoCisgICAgICAgICItcCIsICJweXRlc3RlciIs
ICItLXJ1bnB5dGVzdCIsICJzdWJwcm9jZXNzIiwgdGVzdGZpbGUKKyAgICApCisgICAgYXNzZXJ0
IHJlc3VsdC5yZXQgPT0gMAorCisKK2RlZiB0ZXN0X3VuaWNvZGVfYXJncyh0ZXN0ZGlyKSAtPiBO
b25lOgorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItayIsICLXkNeR15IiKQorICAg
IGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAorCisKK2Rl
ZiB0ZXN0X3Rlc3RkaXJfcnVuX25vX3RpbWVvdXQodGVzdGRpcikgLT4gTm9uZToKKyAgICB0ZXN0
ZmlsZSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3Rfbm9fdGltZW91dCgpOiBwYXNzIikK
KyAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2Vzcyh0ZXN0ZmlsZSkucmV0ID09
IEV4aXRDb2RlLk9LCisKKworZGVmIHRlc3RfdGVzdGRpcl9ydW5fd2l0aF90aW1lb3V0KHRlc3Rk
aXIpIC0+IE5vbmU6CisgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0
X25vX3RpbWVvdXQoKTogcGFzcyIpCisKKyAgICB0aW1lb3V0ID0gMTIwCisKKyAgICBzdGFydCA9
IHRpbWUudGltZSgpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2Vzcyh0
ZXN0ZmlsZSwgdGltZW91dD10aW1lb3V0KQorICAgIGVuZCA9IHRpbWUudGltZSgpCisgICAgZHVy
YXRpb24gPSBlbmQgLSBzdGFydAorCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUu
T0sKKyAgICBhc3NlcnQgZHVyYXRpb24gPCB0aW1lb3V0CisKKworZGVmIHRlc3RfdGVzdGRpcl9y
dW5fdGltZW91dF9leHBpcmVzKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgdGVzdGZpbGUgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgdGltZQorCisgICAg
ICAgIGRlZiB0ZXN0X3RpbWVvdXQoKToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMTApIiIiCisg
ICAgKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyh0ZXN0ZGlyLlRpbWVvdXRFeHBpcmVkKToKKyAg
ICAgICAgdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2Vzcyh0ZXN0ZmlsZSwgdGltZW91dD0xKQor
CisKK2RlZiB0ZXN0X2xpbmVtYXRjaGVyX3dpdGhfbm9ubGlzdCgpIC0+IE5vbmU6CisgICAgIiIi
VGVzdCBMaW5lTWF0Y2hlciB3aXRoIHJlZ2FyZCB0byBwYXNzaW5nIGluIGEgc2V0IChhY2NpZGVu
dGFsbHkpLiIiIgorICAgIGZyb20gX3B5dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IFNvdXJjZQor
CisgICAgbG0gPSBMaW5lTWF0Y2hlcihbXSkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVy
cm9yLCBtYXRjaD0iaW52YWxpZCB0eXBlIGZvciBsaW5lczI6IHNldCIpOgorICAgICAgICBsbS5m
bm1hdGNoX2xpbmVzKHNldCgpKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFR5cGVFcnJvciwgbWF0Y2g9ImludmFsaWQgdHlwZSBmb3IgbGluZXMyOiBk
aWN0Iik6CisgICAgICAgIGxtLmZubWF0Y2hfbGluZXMoe30pICAjIHR5cGU6IGlnbm9yZVthcmct
dHlwZV0KKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD0iaW52YWxpZCB0
eXBlIGZvciBsaW5lczI6IHNldCIpOgorICAgICAgICBsbS5yZV9tYXRjaF9saW5lcyhzZXQoKSkg
ICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJy
b3IsIG1hdGNoPSJpbnZhbGlkIHR5cGUgZm9yIGxpbmVzMjogZGljdCIpOgorICAgICAgICBsbS5y
ZV9tYXRjaF9saW5lcyh7fSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIG1hdGNoPSJpbnZhbGlkIHR5cGUgZm9yIGxpbmVzMjogU291
cmNlIik6CisgICAgICAgIGxtLmZubWF0Y2hfbGluZXMoU291cmNlKCkpICAjIHR5cGU6IGlnbm9y
ZVthcmctdHlwZV0KKyAgICBsbS5mbm1hdGNoX2xpbmVzKFtdKQorICAgIGxtLmZubWF0Y2hfbGlu
ZXMoKCkpCisgICAgbG0uZm5tYXRjaF9saW5lcygiIikKKyAgICBhc3NlcnQgbG0uX2dldGxpbmVz
KHt9KSA9PSB7fSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGUsY29tcGFyaXNvbi1vdmVybGFwXQor
ICAgIGFzc2VydCBsbS5fZ2V0bGluZXMoc2V0KCkpID09IHNldCgpICAjIHR5cGU6IGlnbm9yZVth
cmctdHlwZSxjb21wYXJpc29uLW92ZXJsYXBdCisgICAgYXNzZXJ0IGxtLl9nZXRsaW5lcyhTb3Vy
Y2UoKSkgPT0gW10KKyAgICBhc3NlcnQgbG0uX2dldGxpbmVzKFNvdXJjZSgicGFzc1xucGFzcyIp
KSA9PSBbInBhc3MiLCAicGFzcyJdCisKKworZGVmIHRlc3RfbGluZW1hdGNoZXJfbWF0Y2hfZmFp
bHVyZSgpIC0+IE5vbmU6CisgICAgbG0gPSBMaW5lTWF0Y2hlcihbImZvbyIsICJmb28iLCAiYmFy
Il0pCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbikgYXMgZToK
KyAgICAgICAgbG0uZm5tYXRjaF9saW5lcyhbImZvbyIsICJmKiIsICJiYXoiXSkKKyAgICBhc3Nl
cnQgZS52YWx1ZS5tc2cgaXMgbm90IE5vbmUKKyAgICBhc3NlcnQgZS52YWx1ZS5tc2cuc3BsaXRs
aW5lcygpID09IFsKKyAgICAgICAgImV4YWN0IG1hdGNoOiAnZm9vJyIsCisgICAgICAgICJmbm1h
dGNoOiAnZionIiwKKyAgICAgICAgIiAgIHdpdGg6ICdmb28nIiwKKyAgICAgICAgIm5vbWF0Y2g6
ICdiYXonIiwKKyAgICAgICAgIiAgICBhbmQ6ICdiYXInIiwKKyAgICAgICAgInJlbWFpbnMgdW5t
YXRjaGVkOiAnYmF6JyIsCisgICAgXQorCisgICAgbG0gPSBMaW5lTWF0Y2hlcihbImZvbyIsICJm
b28iLCAiYmFyIl0pCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlv
bikgYXMgZToKKyAgICAgICAgbG0ucmVfbWF0Y2hfbGluZXMoWyJmb28iLCAiXmYuKiIsICJiYXoi
XSkKKyAgICBhc3NlcnQgZS52YWx1ZS5tc2cgaXMgbm90IE5vbmUKKyAgICBhc3NlcnQgZS52YWx1
ZS5tc2cuc3BsaXRsaW5lcygpID09IFsKKyAgICAgICAgImV4YWN0IG1hdGNoOiAnZm9vJyIsCisg
ICAgICAgICJyZS5tYXRjaDogJ15mLionIiwKKyAgICAgICAgIiAgICB3aXRoOiAnZm9vJyIsCisg
ICAgICAgICIgbm9tYXRjaDogJ2JheiciLAorICAgICAgICAiICAgICBhbmQ6ICdiYXInIiwKKyAg
ICAgICAgInJlbWFpbnMgdW5tYXRjaGVkOiAnYmF6JyIsCisgICAgXQorCisKK2RlZiB0ZXN0X2xp
bmVtYXRjaGVyX2NvbnNlY3V0aXZlKCk6CisgICAgbG0gPSBMaW5lTWF0Y2hlcihbIjEiLCAiIiwg
IjIiXSkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKSBhcyBl
eGNpbmZvOgorICAgICAgICBsbS5mbm1hdGNoX2xpbmVzKFsiMSIsICIyIl0sIGNvbnNlY3V0aXZl
PVRydWUpCisgICAgYXNzZXJ0IHN0cihleGNpbmZvLnZhbHVlKS5zcGxpdGxpbmVzKCkgPT0gWwor
ICAgICAgICAiZXhhY3QgbWF0Y2g6ICcxJyIsCisgICAgICAgICJubyBjb25zZWN1dGl2ZSBtYXRj
aDogJzInIiwKKyAgICAgICAgIiAgIHdpdGg6ICcnIiwKKyAgICBdCisKKyAgICBsbS5yZV9tYXRj
aF9saW5lcyhbIjEiLCByIlxkPyIsICIyIl0sIGNvbnNlY3V0aXZlPVRydWUpCisgICAgd2l0aCBw
eXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbikgYXMgZXhjaW5mbzoKKyAgICAgICAg
bG0ucmVfbWF0Y2hfbGluZXMoWyIxIiwgciJcZCIsICIyIl0sIGNvbnNlY3V0aXZlPVRydWUpCisg
ICAgYXNzZXJ0IHN0cihleGNpbmZvLnZhbHVlKS5zcGxpdGxpbmVzKCkgPT0gWworICAgICAgICAi
ZXhhY3QgbWF0Y2g6ICcxJyIsCisgICAgICAgIHIibm8gY29uc2VjdXRpdmUgbWF0Y2g6ICdcXGQn
IiwKKyAgICAgICAgIiAgICB3aXRoOiAnJyIsCisgICAgXQorCisKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgiZnVuY3Rpb24iLCBbIm5vX2ZubWF0Y2hfbGluZSIsICJub19yZV9tYXRjaF9saW5l
Il0pCitkZWYgdGVzdF9saW5lbWF0Y2hlcl9ub19tYXRjaGluZyhmdW5jdGlvbikgLT4gTm9uZToK
KyAgICBpZiBmdW5jdGlvbiA9PSAibm9fZm5tYXRjaF9saW5lIjoKKyAgICAgICAgZ29vZF9wYXR0
ZXJuID0gIioucHkgT0sqIgorICAgICAgICBiYWRfcGF0dGVybiA9ICIqWC5weSBPSyoiCisgICAg
ZWxzZToKKyAgICAgICAgYXNzZXJ0IGZ1bmN0aW9uID09ICJub19yZV9tYXRjaF9saW5lIgorICAg
ICAgICBnb29kX3BhdHRlcm4gPSByIi4qcHkgT0siCisgICAgICAgIGJhZF9wYXR0ZXJuID0gciIu
KlhweSBPSyIKKworICAgIGxtID0gTGluZU1hdGNoZXIoCisgICAgICAgIFsKKyAgICAgICAgICAg
ICJjYWNoZWRpcjogLnB5dGVzdF9jYWNoZSIsCisgICAgICAgICAgICAiY29sbGVjdGluZyAuLi4g
Y29sbGVjdGVkIDEgaXRlbSIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICJzaG93X2Zp
eHR1cmVzX3Blcl90ZXN0LnB5IE9LIiwKKyAgICAgICAgICAgICI9PT0gZWxhcHNlZCAxcyA9PT0i
LAorICAgICAgICBdCisgICAgKQorCisgICAgIyBjaGVjayB0aGUgZnVuY3Rpb24gdHdpY2UgdG8g
ZW5zdXJlIHdlIGRvbid0IGFjY3VtdWxhdGUgdGhlIGludGVybmFsIGJ1ZmZlcgorICAgIGZvciBp
IGluIHJhbmdlKDIpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhj
ZXB0aW9uKSBhcyBlOgorICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIobG0sIGZ1bmN0aW9uKQor
ICAgICAgICAgICAgZnVuYyhnb29kX3BhdHRlcm4pCisgICAgICAgIG9idGFpbmVkID0gc3RyKGUu
dmFsdWUpLnNwbGl0bGluZXMoKQorICAgICAgICBpZiBmdW5jdGlvbiA9PSAibm9fZm5tYXRjaF9s
aW5lIjoKKyAgICAgICAgICAgIGFzc2VydCBvYnRhaW5lZCA9PSBbCisgICAgICAgICAgICAgICAg
Im5vbWF0Y2g6ICd7fSciLmZvcm1hdChnb29kX3BhdHRlcm4pLAorICAgICAgICAgICAgICAgICIg
ICAgYW5kOiAnY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUnIiwKKyAgICAgICAgICAgICAgICAiICAg
IGFuZDogJ2NvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAxIGl0ZW0nIiwKKyAgICAgICAgICAgICAg
ICAiICAgIGFuZDogJyciLAorICAgICAgICAgICAgICAgICJmbm1hdGNoOiAne30nIi5mb3JtYXQo
Z29vZF9wYXR0ZXJuKSwKKyAgICAgICAgICAgICAgICAiICAgd2l0aDogJ3Nob3dfZml4dHVyZXNf
cGVyX3Rlc3QucHkgT0snIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGFzc2VydCBvYnRhaW5lZCA9PSBbCisgICAgICAgICAgICAgICAgIiBub21hdGNoOiAne30n
Ii5mb3JtYXQoZ29vZF9wYXR0ZXJuKSwKKyAgICAgICAgICAgICAgICAiICAgICBhbmQ6ICdjYWNo
ZWRpcjogLnB5dGVzdF9jYWNoZSciLAorICAgICAgICAgICAgICAgICIgICAgIGFuZDogJ2NvbGxl
Y3RpbmcgLi4uIGNvbGxlY3RlZCAxIGl0ZW0nIiwKKyAgICAgICAgICAgICAgICAiICAgICBhbmQ6
ICcnIiwKKyAgICAgICAgICAgICAgICAicmUubWF0Y2g6ICd7fSciLmZvcm1hdChnb29kX3BhdHRl
cm4pLAorICAgICAgICAgICAgICAgICIgICAgd2l0aDogJ3Nob3dfZml4dHVyZXNfcGVyX3Rlc3Qu
cHkgT0snIiwKKyAgICAgICAgICAgIF0KKworICAgIGZ1bmMgPSBnZXRhdHRyKGxtLCBmdW5jdGlv
bikKKyAgICBmdW5jKGJhZF9wYXR0ZXJuKSAgIyBiYWQgcGF0dGVybiBkb2VzIG5vdCBtYXRjaCBh
bnkgbGluZTogcGFzc2VzCisKKworZGVmIHRlc3RfbGluZW1hdGNoZXJfbm9fbWF0Y2hpbmdfYWZ0
ZXJfbWF0Y2goKSAtPiBOb25lOgorICAgIGxtID0gTGluZU1hdGNoZXIoWyIxIiwgIjIiLCAiMyJd
KQorICAgIGxtLmZubWF0Y2hfbGluZXMoWyIxIiwgIjMiXSkKKyAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKSBhcyBlOgorICAgICAgICBsbS5ub19mbm1hdGNoX2xp
bmUoIioiKQorICAgIGFzc2VydCBzdHIoZS52YWx1ZSkuc3BsaXRsaW5lcygpID09IFsiZm5tYXRj
aDogJyonIiwgIiAgIHdpdGg6ICcxJyJdCisKKworZGVmIHRlc3RfcHl0ZXN0ZXJfYWRkb3B0c19i
ZWZvcmVfdGVzdGRpcihyZXF1ZXN0LCBtb25rZXlwYXRjaCkgLT4gTm9uZToKKyAgICBvcmlnID0g
b3MuZW52aXJvbi5nZXQoIlBZVEVTVF9BRERPUFRTIiwgTm9uZSkKKyAgICBtb25rZXlwYXRjaC5z
ZXRlbnYoIlBZVEVTVF9BRERPUFRTIiwgIi0tb3JpZy11bnVzZWQiKQorICAgIHRlc3RkaXIgPSBy
ZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgidGVzdGRpciIpCisgICAgYXNzZXJ0ICJQWVRFU1RfQURE
T1BUUyIgbm90IGluIG9zLmVudmlyb24KKyAgICB0ZXN0ZGlyLmZpbmFsaXplKCkKKyAgICBhc3Nl
cnQgb3MuZW52aXJvbi5nZXQoIlBZVEVTVF9BRERPUFRTIikgPT0gIi0tb3JpZy11bnVzZWQiCisg
ICAgbW9ua2V5cGF0Y2gudW5kbygpCisgICAgYXNzZXJ0IG9zLmVudmlyb24uZ2V0KCJQWVRFU1Rf
QURET1BUUyIpID09IG9yaWcKKworCitkZWYgdGVzdF9ydW5fc3RkaW4odGVzdGRpcikgLT4gTm9u
ZToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXModGVzdGRpci5UaW1lb3V0RXhwaXJlZCk6CisgICAg
ICAgIHRlc3RkaXIucnVuKAorICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICAg
ICAiLWMiLAorICAgICAgICAgICAgImltcG9ydCBzeXMsIHRpbWU7IHRpbWUuc2xlZXAoMSk7IHBy
aW50KHN5cy5zdGRpbi5yZWFkKCkpIiwKKyAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQ
RSwKKyAgICAgICAgICAgIHRpbWVvdXQ9MC4xLAorICAgICAgICApCisKKyAgICB3aXRoIHB5dGVz
dC5yYWlzZXModGVzdGRpci5UaW1lb3V0RXhwaXJlZCk6CisgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVuKAorICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICAgICAiLWMiLAor
ICAgICAgICAgICAgImltcG9ydCBzeXMsIHRpbWU7IHRpbWUuc2xlZXAoMSk7IHByaW50KHN5cy5z
dGRpbi5yZWFkKCkpIiwKKyAgICAgICAgICAgIHN0ZGluPWIiaW5wdXRcbjJuZGxpbmUiLAorICAg
ICAgICAgICAgdGltZW91dD0wLjEsCisgICAgICAgICkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVuKAorICAgICAgICBzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1jIiwKKyAgICAgICAgImlt
cG9ydCBzeXM7IHByaW50KHN5cy5zdGRpbi5yZWFkKCkpIiwKKyAgICAgICAgc3RkaW49YiJpbnB1
dFxuMm5kbGluZSIsCisgICAgKQorICAgIGFzc2VydCByZXN1bHQuc3Rkb3V0LmxpbmVzID09IFsi
aW5wdXQiLCAiMm5kbGluZSJdCisgICAgYXNzZXJ0IHJlc3VsdC5zdGRlcnIuc3RyKCkgPT0gIiIK
KyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3RfcG9wZW5fc3RkaW5fcGlw
ZSh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHByb2MgPSB0ZXN0ZGlyLnBvcGVuKAorICAgICAgICBb
c3lzLmV4ZWN1dGFibGUsICItYyIsICJpbXBvcnQgc3lzOyBwcmludChzeXMuc3RkaW4ucmVhZCgp
KSJdLAorICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICBzdGRlcnI9c3Vi
cHJvY2Vzcy5QSVBFLAorICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgKQorICAg
IHN0ZGluID0gYiJpbnB1dFxuMm5kbGluZSIKKyAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29t
bXVuaWNhdGUoaW5wdXQ9c3RkaW4pCisgICAgYXNzZXJ0IHN0ZG91dC5kZWNvZGUoInV0ZjgiKS5z
cGxpdGxpbmVzKCkgPT0gWyJpbnB1dCIsICIybmRsaW5lIl0KKyAgICBhc3NlcnQgc3RkZXJyID09
IGIiIgorICAgIGFzc2VydCBwcm9jLnJldHVybmNvZGUgPT0gMAorCisKK2RlZiB0ZXN0X3BvcGVu
X3N0ZGluX2J5dGVzKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgcHJvYyA9IHRlc3RkaXIucG9wZW4o
CisgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgImltcG9ydCBzeXM7IHByaW50KHN5cy5z
dGRpbi5yZWFkKCkpIl0sCisgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAg
IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgIHN0ZGluPWIiaW5wdXRcbjJuZGxpbmUi
LAorICAgICkKKyAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQorICAgIGFz
c2VydCBzdGRvdXQuZGVjb2RlKCJ1dGY4Iikuc3BsaXRsaW5lcygpID09IFsiaW5wdXQiLCAiMm5k
bGluZSJdCisgICAgYXNzZXJ0IHN0ZGVyciA9PSBiIiIKKyAgICBhc3NlcnQgcHJvYy5yZXR1cm5j
b2RlID09IDAKKworCitkZWYgdGVzdF9wb3Blbl9kZWZhdWx0X3N0ZGluX3N0ZGVycl9hbmRfc3Rk
aW5fTm9uZSh0ZXN0ZGlyKSAtPiBOb25lOgorICAgICMgc3Rkb3V0LCBzdGRlcnIgZGVmYXVsdCB0
byBwaXBlcywKKyAgICAjIHN0ZGluIGNhbiBiZSBOb25lIHRvIG5vdCBjbG9zZSB0aGUgcGlwZSwg
YXZvaWRpbmcKKyAgICAjICJWYWx1ZUVycm9yOiBmbHVzaCBvZiBjbG9zZWQgZmlsZSIgd2l0aCBg
Y29tbXVuaWNhdGUoKWAuCisgICAgIworICAgICMgV3JhcHMgdGhlIHRlc3QgdG8gbWFrZSBpdCBu
b3QgaGFuZyB3aGVuIHJ1biB3aXRoICItcyIuCisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICcnJworICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgZGVmIHRlc3RfaW5u
ZXIodGVzdGRpcik6CisgICAgICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAg
ICAgcHJpbnQoc3lzLnN0ZGluLnJlYWQoKSkgICMgZW1wdHkKKyAgICAgICAgICAgICAgICBwcmlu
dCgnc3Rkb3V0JykKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdzdGRlcnInKQor
ICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvYyA9IHRl
c3RkaXIucG9wZW4oW3N5cy5leGVjdXRhYmxlLCBzdHIocDEpXSwgc3RkaW49Tm9uZSkKKyAgICAg
ICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiImlnbm9yZWQiKQorICAg
ICAgICAgICAgYXNzZXJ0IHN0ZG91dC5zcGxpdGxpbmVzKCkgPT0gW2IiIiwgYiJzdGRvdXQiXQor
ICAgICAgICAgICAgYXNzZXJ0IHN0ZGVyci5zcGxpdGxpbmVzKCkgPT0gW2Iic3RkZXJyIl0KKyAg
ICAgICAgICAgIGFzc2VydCBwcm9jLnJldHVybmNvZGUgPT0gMAorICAgICAgICAnJycKKyAgICAp
CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1wIiwgInB5dGVzdGVyIiwgc3RyKHAx
KSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3Rfc3Bhd25fdXNlc190
bXBob21lKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgdG1waG9tZSA9IHN0cih0ZXN0ZGlyLnRtcGRp
cikKKyAgICBhc3NlcnQgb3MuZW52aXJvbi5nZXQoIkhPTUUiKSA9PSB0bXBob21lCisKKyAgICB0
ZXN0ZGlyLm1vbmtleXBhdGNoLnNldGVudigiQ1VTVE9NRU5WIiwgIjQyIikKKworICAgIHAxID0g
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IG9zCisKKyAg
ICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGFzc2VydCBvcy5lbnZpcm9uWyJIT01FIl0g
PT0ge3RtcGhvbWUhcn0KKyAgICAgICAgICAgIGFzc2VydCBvcy5lbnZpcm9uWyJDVVNUT01FTlYi
XSA9PSAiNDIiCisgICAgICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICB0bXBob21lPXRtcGhv
bWUKKyAgICAgICAgKQorICAgICkKKyAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0
cihwMSkpCisgICAgb3V0ID0gY2hpbGQucmVhZCgpCisgICAgYXNzZXJ0IGNoaWxkLndhaXQoKSA9
PSAwLCBvdXQuZGVjb2RlKCJ1dGY4IikKKworCitkZWYgdGVzdF9ydW5fcmVzdWx0X3JlcHIoKSAt
PiBOb25lOgorICAgIG91dGxpbmVzID0gWyJzb21lIiwgIm5vcm1hbCIsICJvdXRwdXQiXQorICAg
IGVycmxpbmVzID0gWyJzb21lIiwgIm5hc3R5IiwgImVycm9ycyIsICJoYXBwZW5lZCJdCisKKyAg
ICAjIGtub3duIGV4aXQgY29kZQorICAgIHIgPSBweXRlc3Rlci5SdW5SZXN1bHQoMSwgb3V0bGlu
ZXMsIGVycmxpbmVzLCBkdXJhdGlvbj0wLjUpCisgICAgYXNzZXJ0ICgKKyAgICAgICAgcmVwcihy
KSA9PSAiPFJ1blJlc3VsdCByZXQ9RXhpdENvZGUuVEVTVFNfRkFJTEVEIGxlbihzdGRvdXQubGlu
ZXMpPTMiCisgICAgICAgICIgbGVuKHN0ZGVyci5saW5lcyk9NCBkdXJhdGlvbj0wLjUwcz4iCisg
ICAgKQorCisgICAgIyB1bmtub3duIGV4aXQgY29kZToganVzdCB0aGUgbnVtYmVyCisgICAgciA9
IHB5dGVzdGVyLlJ1blJlc3VsdCg5OSwgb3V0bGluZXMsIGVycmxpbmVzLCBkdXJhdGlvbj0wLjUp
CisgICAgYXNzZXJ0ICgKKyAgICAgICAgcmVwcihyKSA9PSAiPFJ1blJlc3VsdCByZXQ9OTkgbGVu
KHN0ZG91dC5saW5lcyk9MyIKKyAgICAgICAgIiBsZW4oc3RkZXJyLmxpbmVzKT00IGR1cmF0aW9u
PTAuNTBzPiIKKyAgICApCisKKworZGVmIHRlc3RfdGVzdGRpcl9vdXRjb21lc193aXRoX211bHRp
cGxlX2Vycm9ycyh0ZXN0ZGlyKToKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAg
ICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK
KyAgICAgICAgZGVmIGJhZF9maXh0dXJlKCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
ImJhZCIpCisKKyAgICAgICAgZGVmIHRlc3RfZXJyb3IxKGJhZF9maXh0dXJlKToKKyAgICAgICAg
ICAgIHBhc3MKKworICAgICAgICBkZWYgdGVzdF9lcnJvcjIoYmFkX2ZpeHR1cmUpOgorICAgICAg
ICAgICAgcGFzcworICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dChzdHIocDEpKQorICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMoZXJyb3JzPTIpCisKKyAgICBh
c3NlcnQgcmVzdWx0LnBhcnNlb3V0Y29tZXMoKSA9PSB7ImVycm9ycyI6IDJ9CisKKworZGVmIHRl
c3RfcGFyc2Vfc3VtbWFyeV9saW5lX2Fsd2F5c19wbHVyYWwoKToKKyAgICAiIiJQYXJzaW5nIHN1
bW1hcmllcyBhbHdheXMgcmV0dXJucyBwbHVyYWwgbm91bnMgKCM2NTA1KSIiIgorICAgIGxpbmVz
ID0gWworICAgICAgICAic29tZSBvdXRwdXQgMSIsCisgICAgICAgICJzb21lIG91dHB1dCAyIiwK
KyAgICAgICAgIj09PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkLCAxIHdhcm5pbmcsIDEgZXJyb3Ig
aW4gMC4xM3MgPT09PSIsCisgICAgICAgICJkb25lLiIsCisgICAgXQorICAgIGFzc2VydCBweXRl
c3Rlci5SdW5SZXN1bHQucGFyc2Vfc3VtbWFyeV9ub3VucyhsaW5lcykgPT0geworICAgICAgICAi
ZXJyb3JzIjogMSwKKyAgICAgICAgImZhaWxlZCI6IDEsCisgICAgICAgICJwYXNzZWQiOiAxLAor
ICAgICAgICAid2FybmluZ3MiOiAxLAorICAgIH0KKworICAgIGxpbmVzID0gWworICAgICAgICAi
c29tZSBvdXRwdXQgMSIsCisgICAgICAgICJzb21lIG91dHB1dCAyIiwKKyAgICAgICAgIj09PT09
PT0gMSBmYWlsZWQsIDEgcGFzc2VkLCAyIHdhcm5pbmdzLCAyIGVycm9ycyBpbiAwLjEzcyA9PT09
IiwKKyAgICAgICAgImRvbmUuIiwKKyAgICBdCisgICAgYXNzZXJ0IHB5dGVzdGVyLlJ1blJlc3Vs
dC5wYXJzZV9zdW1tYXJ5X25vdW5zKGxpbmVzKSA9PSB7CisgICAgICAgICJlcnJvcnMiOiAyLAor
ICAgICAgICAiZmFpbGVkIjogMSwKKyAgICAgICAgInBhc3NlZCI6IDEsCisgICAgICAgICJ3YXJu
aW5ncyI6IDIsCisgICAgfQorCisKK2RlZiB0ZXN0X21ha2VmaWxlX2pvaW5zX2Fic29sdXRlX3Bh
dGgodGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICBhYnNmaWxlID0gdGVzdGRpci50bXBk
aXIgLyAiYWJzZmlsZSIKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKE9TRXJyb3IpOgorICAgICAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKCoqe3N0cihhYnNmaWxlKTogIiJ9KQorICAgIGVsc2U6CisgICAgICAgIHAxID0gdGVzdGRp
ci5tYWtlcHlmaWxlKCoqe3N0cihhYnNmaWxlKTogIiJ9KQorICAgICAgICBhc3NlcnQgc3RyKHAx
KSA9PSAodGVzdGRpci50bXBkaXIgLyBhYnNmaWxlKSArICIucHkiCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVjd2Fybi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9yZWN3YXJuLnB5CmluZGV4IGE4ZTJmYjgwMzc4MC4uZjYxZjg1ODZmOWM3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVjd2Fybi5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfcmVjd2Fybi5weQpAQCAtMSwxMyArMSwxOSBAQAotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0
IHdhcm5pbmdzCiBpbXBvcnQgcmUKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0eXBpbmcgaW1wb3J0
IE9wdGlvbmFsCiAKIGltcG9ydCBweXRlc3QKIGZyb20gX3B5dGVzdC5yZWN3YXJuIGltcG9ydCBX
YXJuaW5nc1JlY29yZGVyCiAKIAotZGVmIHRlc3RfcmVjd2Fybl9mdW5jdGlvbmFsKHRlc3RkaXIp
OgotICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJjZSgKK2RlZiB0ZXN0X3JlY3dh
cm5fc3RhY2tsZXZlbChyZWN3YXJuOiBXYXJuaW5nc1JlY29yZGVyKSAtPiBOb25lOgorICAgIHdh
cm5pbmdzLndhcm4oImhlbGxvIikKKyAgICB3YXJuID0gcmVjd2Fybi5wb3AoKQorICAgIGFzc2Vy
dCB3YXJuLmZpbGVuYW1lID09IF9fZmlsZV9fCisKKworZGVmIHRlc3RfcmVjd2Fybl9mdW5jdGlv
bmFsKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAi
IiIKICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChyZWN3
YXJuKToKQEAgLTE2LDEzICsyMiwxMiBAQCBkZWYgdGVzdF9yZWN3YXJuX2Z1bmN0aW9uYWwodGVz
dGRpcik6CiAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh3YXJuLm1lc3NhZ2UsIFVzZXJX
YXJuaW5nKQogICAgICIiIgogICAgICkKLSAgICByZXMgPSByZXByZWMuY291bnRvdXRjb21lcygp
Ci0gICAgYXNzZXJ0IHR1cGxlKHJlcykgPT0gKDEsIDAsIDApLCByZXMKLQorICAgIHJlcHJlYyA9
IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEp
CiAKLWNsYXNzIFRlc3RXYXJuaW5nc1JlY29yZGVyQ2hlY2tlcihvYmplY3QpOgogCi0gICAgZGVm
IHRlc3RfcmVjb3JkaW5nKHNlbGYpOgorY2xhc3MgVGVzdFdhcm5pbmdzUmVjb3JkZXJDaGVja2Vy
OgorICAgIGRlZiB0ZXN0X3JlY29yZGluZyhzZWxmKSAtPiBOb25lOgogICAgICAgICByZWMgPSBX
YXJuaW5nc1JlY29yZGVyKCkKICAgICAgICAgd2l0aCByZWM6CiAgICAgICAgICAgICBhc3NlcnQg
bm90IHJlYy5saXN0CkBAIC0zNiwxOSArNDEsMjUgQEAgY2xhc3MgVGVzdFdhcm5pbmdzUmVjb3Jk
ZXJDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICByZWMuY2xlYXIoKQogICAgICAgICAgICAg
YXNzZXJ0IGxlbihyZWMubGlzdCkgPT0gMAogICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcyBpcyBy
ZWMubGlzdAotICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvciwgInJlYy5w
b3AoKSIpCisgICAgICAgICAgICBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCByZWMucG9w
KQogCi0gICAgZGVmIHRlc3RfdHlwZWNoZWNraW5nKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dhcm5f
c3RhY2tsZXZlbChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIjNDI0MyIiIgorICAgICAgICBy
ZWMgPSBXYXJuaW5nc1JlY29yZGVyKCkKKyAgICAgICAgd2l0aCByZWM6CisgICAgICAgICAgICB3
YXJuaW5ncy53YXJuKCJ0ZXN0IiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorCisgICAgZGVmIHRl
c3RfdHlwZWNoZWNraW5nKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGZyb20gX3B5dGVzdC5yZWN3
YXJuIGltcG9ydCBXYXJuaW5nc0NoZWNrZXIKIAogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMo
VHlwZUVycm9yKToKLSAgICAgICAgICAgIFdhcm5pbmdzQ2hlY2tlcig1KQorICAgICAgICAgICAg
V2FybmluZ3NDaGVja2VyKDUpICAjIHR5cGU6IGlnbm9yZQogICAgICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIFdhcm5pbmdzQ2hlY2tlcigoImhpIiwgUnVu
dGltZVdhcm5pbmcpKQorICAgICAgICAgICAgV2FybmluZ3NDaGVja2VyKCgiaGkiLCBSdW50aW1l
V2FybmluZykpICAjIHR5cGU6IGlnbm9yZQogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlw
ZUVycm9yKToKLSAgICAgICAgICAgIFdhcm5pbmdzQ2hlY2tlcihbRGVwcmVjYXRpb25XYXJuaW5n
LCBSdW50aW1lV2FybmluZ10pCisgICAgICAgICAgICBXYXJuaW5nc0NoZWNrZXIoW0RlcHJlY2F0
aW9uV2FybmluZywgUnVudGltZVdhcm5pbmddKSAgIyB0eXBlOiBpZ25vcmUKIAotICAgIGRlZiB0
ZXN0X2ludmFsaWRfZW50ZXJfZXhpdChzZWxmKToKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2VudGVy
X2V4aXQoc2VsZikgLT4gTm9uZToKICAgICAgICAgIyB3cmFwIHRoaXMgdGVzdCBpbiBXYXJuaW5n
c1JlY29yZGVyIHRvIGVuc3VyZSB3YXJuaW5nIHN0YXRlIGdldHMgcmVzZXQKICAgICAgICAgd2l0
aCBXYXJuaW5nc1JlY29yZGVyKCk6CiAgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUnVu
dGltZUVycm9yKToKQEAgLTYyLDU0ICs3Myw1NSBAQCBjbGFzcyBUZXN0V2FybmluZ3NSZWNvcmRl
ckNoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgY2FuJ3Qg
ZW50ZXIgdHdpY2UKIAogCi1jbGFzcyBUZXN0RGVwcmVjYXRlZENhbGwob2JqZWN0KToKK2NsYXNz
IFRlc3REZXByZWNhdGVkQ2FsbDoKICAgICAiIiJ0ZXN0IHB5dGVzdC5kZXByZWNhdGVkX2NhbGwo
KSIiIgogCi0gICAgZGVmIGRlcChzZWxmLCBpLCBqPU5vbmUpOgorICAgIGRlZiBkZXAoc2VsZiwg
aTogaW50LCBqOiBPcHRpb25hbFtpbnRdID0gTm9uZSkgLT4gaW50OgogICAgICAgICBpZiBpID09
IDA6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJpcyBkZXByZWNhdGVkIiwgRGVwcmVjYXRp
b25XYXJuaW5nLCBzdGFja2xldmVsPTEpCiAgICAgICAgIHJldHVybiA0MgogCi0gICAgZGVmIGRl
cF9leHBsaWNpdChzZWxmLCBpKToKKyAgICBkZWYgZGVwX2V4cGxpY2l0KHNlbGYsIGk6IGludCkg
LT4gTm9uZToKICAgICAgICAgaWYgaSA9PSAwOgogICAgICAgICAgICAgd2FybmluZ3Mud2Fybl9l
eHBsaWNpdCgKICAgICAgICAgICAgICAgICAiZGVwX2V4cGxpY2l0IiwgY2F0ZWdvcnk9RGVwcmVj
YXRpb25XYXJuaW5nLCBmaWxlbmFtZT0iaGVsbG8iLCBsaW5lbm89MwogICAgICAgICAgICAgKQog
Ci0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9jYWxsX3JhaXNlcyhzZWxmKToKLSAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBleGNpbmZvOgorICAgIGRlZiB0ZXN0
X2RlcHJlY2F0ZWRfY2FsbF9yYWlzZXMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbiwgbWF0Y2g9Ik5vIHdhcm5pbmdzIG9mIHR5
cGUiKToKICAgICAgICAgICAgIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwoc2VsZi5kZXAsIDMsIDUp
Ci0gICAgICAgIGFzc2VydCAiRGlkIG5vdCBwcm9kdWNlIiBpbiBzdHIoZXhjaW5mbykKIAotICAg
IGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbChzZWxmKToKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVk
X2NhbGwoc2VsZikgLT4gTm9uZToKICAgICAgICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChzZWxm
LmRlcCwgMCwgNSkKIAotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9yZXQoc2VsZik6Cisg
ICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9jYWxsX3JldChzZWxmKSAtPiBOb25lOgogICAgICAgICBy
ZXQgPSBweXRlc3QuZGVwcmVjYXRlZF9jYWxsKHNlbGYuZGVwLCAwKQogICAgICAgICBhc3NlcnQg
cmV0ID09IDQyCiAKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfcHJlc2VydmVzKHNlbGYp
OgotICAgICAgICBvbmNlcmVnaXN0cnkgPSB3YXJuaW5ncy5vbmNlcmVnaXN0cnkuY29weSgpCi0g
ICAgICAgIGZpbHRlcnMgPSB3YXJuaW5ncy5maWx0ZXJzWzpdCisgICAgZGVmIHRlc3RfZGVwcmVj
YXRlZF9jYWxsX3ByZXNlcnZlcyhzZWxmKSAtPiBOb25lOgorICAgICAgICAjIFR5cGUgaWdub3Jl
ZCBiZWNhdXNlIGBvbmNlcmVnaXN0cnlgIGFuZCBgZmlsdGVyc2AgYXJlIG5vdAorICAgICAgICAj
IGRvY3VtZW50ZWQgQVBJLgorICAgICAgICBvbmNlcmVnaXN0cnkgPSB3YXJuaW5ncy5vbmNlcmVn
aXN0cnkuY29weSgpICAjIHR5cGU6IGlnbm9yZQorICAgICAgICBmaWx0ZXJzID0gd2FybmluZ3Mu
ZmlsdGVyc1s6XSAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgd2FybiA9IHdhcm5pbmdzLndhcm4K
ICAgICAgICAgd2Fybl9leHBsaWNpdCA9IHdhcm5pbmdzLndhcm5fZXhwbGljaXQKICAgICAgICAg
c2VsZi50ZXN0X2RlcHJlY2F0ZWRfY2FsbF9yYWlzZXMoKQogICAgICAgICBzZWxmLnRlc3RfZGVw
cmVjYXRlZF9jYWxsKCkKLSAgICAgICAgYXNzZXJ0IG9uY2VyZWdpc3RyeSA9PSB3YXJuaW5ncy5v
bmNlcmVnaXN0cnkKLSAgICAgICAgYXNzZXJ0IGZpbHRlcnMgPT0gd2FybmluZ3MuZmlsdGVycwor
ICAgICAgICBhc3NlcnQgb25jZXJlZ2lzdHJ5ID09IHdhcm5pbmdzLm9uY2VyZWdpc3RyeSAgIyB0
eXBlOiBpZ25vcmUKKyAgICAgICAgYXNzZXJ0IGZpbHRlcnMgPT0gd2FybmluZ3MuZmlsdGVycyAg
IyB0eXBlOiBpZ25vcmUKICAgICAgICAgYXNzZXJ0IHdhcm4gaXMgd2FybmluZ3Mud2FybgogICAg
ICAgICBhc3NlcnQgd2Fybl9leHBsaWNpdCBpcyB3YXJuaW5ncy53YXJuX2V4cGxpY2l0CiAKLSAg
ICBkZWYgdGVzdF9kZXByZWNhdGVkX2V4cGxpY2l0X2NhbGxfcmFpc2VzKHNlbGYpOgotICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgIGRlZiB0ZXN0X2RlcHJl
Y2F0ZWRfZXhwbGljaXRfY2FsbF9yYWlzZXMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6CiAgICAgICAgICAgICBweXRlc3Qu
ZGVwcmVjYXRlZF9jYWxsKHNlbGYuZGVwX2V4cGxpY2l0LCAzKQogCi0gICAgZGVmIHRlc3RfZGVw
cmVjYXRlZF9leHBsaWNpdF9jYWxsKHNlbGYpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZXhw
bGljaXRfY2FsbChzZWxmKSAtPiBOb25lOgogICAgICAgICBweXRlc3QuZGVwcmVjYXRlZF9jYWxs
KHNlbGYuZGVwX2V4cGxpY2l0LCAwKQogICAgICAgICBweXRlc3QuZGVwcmVjYXRlZF9jYWxsKHNl
bGYuZGVwX2V4cGxpY2l0LCAwKQogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJtb2Rl
IiwgWyJjb250ZXh0X21hbmFnZXIiLCAiY2FsbCJdKQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRf
Y2FsbF9ub193YXJuaW5nKHNlbGYsIG1vZGUpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2Fs
bF9ub193YXJuaW5nKHNlbGYsIG1vZGUpIC0+IE5vbmU6CiAgICAgICAgICIiIkVuc3VyZSBkZXBy
ZWNhdGVkX2NhbGwoKSByYWlzZXMgdGhlIGV4cGVjdGVkIGZhaWx1cmUgd2hlbiBpdHMgYmxvY2sv
ZnVuY3Rpb24gZG9lcwogICAgICAgICBub3QgcmFpc2UgYSBkZXByZWNhdGlvbiB3YXJuaW5nLgog
ICAgICAgICAiIiIKQEAgLTExNyw4ICsxMjksOCBAQCBjbGFzcyBUZXN0RGVwcmVjYXRlZENhbGwo
b2JqZWN0KToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBt
c2cgPSAiRGlkIG5vdCBwcm9kdWNlIERlcHJlY2F0aW9uV2FybmluZyBvciBQZW5kaW5nRGVwcmVj
YXRpb25XYXJuaW5nIgotICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3Is
IG1hdGNoPW1zZyk6CisgICAgICAgIG1zZyA9ICJObyB3YXJuaW5ncyBvZiB0eXBlICguKkRlcHJl
Y2F0aW9uV2FybmluZy4qLCAuKlBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuKikiCisgICAgICAg
IHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24sIG1hdGNoPW1zZyk6CiAg
ICAgICAgICAgICBpZiBtb2RlID09ICJjYWxsIjoKICAgICAgICAgICAgICAgICBweXRlc3QuZGVw
cmVjYXRlZF9jYWxsKGYpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTMxLDcgKzE0Myw3IEBAIGNs
YXNzIFRlc3REZXByZWNhdGVkQ2FsbChvYmplY3QpOgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgibW9kZSIsIFsiY29udGV4dF9tYW5hZ2VyIiwgImNhbGwiXSkKICAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoImNhbGxfZl9maXJzdCIsIFtUcnVlLCBGYWxzZV0pCiAgICAgQHB5dGVz
dC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiKQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRf
Y2FsbF9tb2RlcyhzZWxmLCB3YXJuaW5nX3R5cGUsIG1vZGUsIGNhbGxfZl9maXJzdCk6CisgICAg
ZGVmIHRlc3RfZGVwcmVjYXRlZF9jYWxsX21vZGVzKHNlbGYsIHdhcm5pbmdfdHlwZSwgbW9kZSwg
Y2FsbF9mX2ZpcnN0KSAtPiBOb25lOgogICAgICAgICAiIiJFbnN1cmUgZGVwcmVjYXRlZF9jYWxs
KCkgY2FwdHVyZXMgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFzIGV4cGVjdGVkIGluc2lkZSBpdHMK
ICAgICAgICAgYmxvY2svZnVuY3Rpb24uCiAgICAgICAgICIiIgpAQCAtMTUwLDcgKzE2Miw3IEBA
IGNsYXNzIFRlc3REZXByZWNhdGVkQ2FsbChvYmplY3QpOgogICAgICAgICAgICAgICAgIGFzc2Vy
dCBmKCkgPT0gMTAKIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibW9kZSIsIFsiY29u
dGV4dF9tYW5hZ2VyIiwgImNhbGwiXSkKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfZXhj
ZXB0aW9uX2lzX3JhaXNlZChzZWxmLCBtb2RlKToKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Nh
bGxfZXhjZXB0aW9uX2lzX3JhaXNlZChzZWxmLCBtb2RlKSAtPiBOb25lOgogICAgICAgICAiIiJJ
ZiB0aGUgYmxvY2sgb2YgdGhlIGNvZGUgYmVpbmcgdGVzdGVkIGJ5IGRlcHJlY2F0ZWRfY2FsbCgp
IHJhaXNlcyBhbiBleGNlcHRpb24sCiAgICAgICAgIGl0IG11c3QgcmFpc2UgdGhlIGV4Y2VwdGlv
biB1bmRpc3R1cmJlZC4KICAgICAgICAgIiIiCkBAIC0xNjUsNyArMTc3LDcgQEAgY2xhc3MgVGVz
dERlcHJlY2F0ZWRDYWxsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgd2l0aCBweXRlc3QuZGVw
cmVjYXRlZF9jYWxsKCk6CiAgICAgICAgICAgICAgICAgICAgIGYoKQogCi0gICAgZGVmIHRlc3Rf
ZGVwcmVjYXRlZF9jYWxsX3NwZWNpZmljaXR5KHNlbGYpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0
ZWRfY2FsbF9zcGVjaWZpY2l0eShzZWxmKSAtPiBOb25lOgogICAgICAgICBvdGhlcl93YXJuaW5n
cyA9IFsKICAgICAgICAgICAgIFdhcm5pbmcsCiAgICAgICAgICAgICBVc2VyV2FybmluZywKQEAg
LTE4MCwzMCArMTkyLDQwIEBAIGNsYXNzIFRlc3REZXByZWNhdGVkQ2FsbChvYmplY3QpOgogICAg
ICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKHdhcm5pbmco
ImhpIikpCiAKLSAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvcik6
CisgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKToK
ICAgICAgICAgICAgICAgICBweXRlc3QuZGVwcmVjYXRlZF9jYWxsKGYpCi0gICAgICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgd2l0aCBw
eXRlc3QuZGVwcmVjYXRlZF9jYWxsKCk6CiAgICAgICAgICAgICAgICAgICAgIGYoKQogCisgICAg
ZGVmIHRlc3RfZGVwcmVjYXRlZF9jYWxsX3N1cHBvcnRzX21hdGNoKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChtYXRjaD1yIm11c3QgYmUgXGQrJCIp
OgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigidmFsdWUgbXVzdCBiZSA0MiIsIERlcHJlY2F0
aW9uV2FybmluZykKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhj
ZXB0aW9uKToKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChtYXRjaD1y
Im11c3QgYmUgXGQrJCIpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInRoaXMgaXMg
bm90IGhlcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisKIAotY2xhc3MgVGVzdFdhcm5zKG9iamVj
dCk6CitjbGFzcyBUZXN0V2FybnM6CisgICAgZGVmIHRlc3RfY2hlY2tfY2FsbGFibGUoc2VsZikg
LT4gTm9uZToKKyAgICAgICAgc291cmNlID0gIndhcm5pbmdzLndhcm4oJ3cxJywgUnVudGltZVdh
cm5pbmcpIgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD1yIi4q
IG11c3QgYmUgY2FsbGFibGUiKToKKyAgICAgICAgICAgIHB5dGVzdC53YXJucyhSdW50aW1lV2Fy
bmluZywgc291cmNlKSAgIyB0eXBlOiBpZ25vcmUKIAotICAgIGRlZiB0ZXN0X3N0cmluZ3Moc2Vs
Zik6CisgICAgZGVmIHRlc3Rfc2V2ZXJhbF9tZXNzYWdlcyhzZWxmKSAtPiBOb25lOgogICAgICAg
ICAjIGRpZmZlcmVudCBtZXNzYWdlcywgYi9jIFB5dGhvbiBzdXBwcmVzc2VzIG11bHRpcGxlIGlk
ZW50aWNhbCB3YXJuaW5ncwotICAgICAgICBzb3VyY2UxID0gIndhcm5pbmdzLndhcm4oJ3cxJywg
UnVudGltZVdhcm5pbmcpIgotICAgICAgICBzb3VyY2UyID0gIndhcm5pbmdzLndhcm4oJ3cyJywg
UnVudGltZVdhcm5pbmcpIgotICAgICAgICBzb3VyY2UzID0gIndhcm5pbmdzLndhcm4oJ3czJywg
UnVudGltZVdhcm5pbmcpIgotICAgICAgICBweXRlc3Qud2FybnMoUnVudGltZVdhcm5pbmcsIHNv
dXJjZTEpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uLCBsYW1i
ZGE6IHB5dGVzdC53YXJucyhVc2VyV2FybmluZywgc291cmNlMikpCi0gICAgICAgIHB5dGVzdC53
YXJucyhSdW50aW1lV2FybmluZywgc291cmNlMykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNl
bGYpOgorICAgICAgICBweXRlc3Qud2FybnMoUnVudGltZVdhcm5pbmcsIGxhbWJkYTogd2Fybmlu
Z3Mud2FybigidzEiLCBSdW50aW1lV2FybmluZykpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhweXRlc3QuZmFpbC5FeGNlcHRpb24pOgorICAgICAgICAgICAgcHl0ZXN0Lndhcm5zKFVzZXJX
YXJuaW5nLCBsYW1iZGE6IHdhcm5pbmdzLndhcm4oIncyIiwgUnVudGltZVdhcm5pbmcpKQorICAg
ICAgICBweXRlc3Qud2FybnMoUnVudGltZVdhcm5pbmcsIGxhbWJkYTogd2FybmluZ3Mud2Fybigi
dzMiLCBSdW50aW1lV2FybmluZykpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbihzZWxmKSAtPiBO
b25lOgogICAgICAgICBweXRlc3Qud2FybnMoCiAgICAgICAgICAgICBTeW50YXhXYXJuaW5nLCBs
YW1iZGEgbXNnOiB3YXJuaW5ncy53YXJuKG1zZywgU3ludGF4V2FybmluZyksICJzeW50YXgiCiAg
ICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3dhcm5pbmdfdHVwbGUoc2VsZik6CisgICAgZGVmIHRl
c3Rfd2FybmluZ190dXBsZShzZWxmKSAtPiBOb25lOgogICAgICAgICBweXRlc3Qud2FybnMoCiAg
ICAgICAgICAgICAoUnVudGltZVdhcm5pbmcsIFN5bnRheFdhcm5pbmcpLCBsYW1iZGE6IHdhcm5p
bmdzLndhcm4oIncxIiwgUnVudGltZVdhcm5pbmcpCiAgICAgICAgICkKQEAgLTIxOCw3ICsyNDAs
NyBAQCBjbGFzcyBUZXN0V2FybnMob2JqZWN0KToKICAgICAgICAgICAgICksCiAgICAgICAgICkK
IAotICAgIGRlZiB0ZXN0X2FzX2NvbnRleHRtYW5hZ2VyKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Fz
X2NvbnRleHRtYW5hZ2VyKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5z
KFJ1bnRpbWVXYXJuaW5nKToKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInJ1bnRpbWUiLCBS
dW50aW1lV2FybmluZykKIApAQCAtMjY3LDE0ICsyODksMTQgQEAgY2xhc3MgVGVzdFdhcm5zKG9i
amVjdCk6CiAgICAgICAgICAgICApCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3JlY29yZChz
ZWxmKToKKyAgICBkZWYgdGVzdF9yZWNvcmQoc2VsZikgLT4gTm9uZToKICAgICAgICAgd2l0aCBw
eXRlc3Qud2FybnMoVXNlcldhcm5pbmcpIGFzIHJlY29yZDoKICAgICAgICAgICAgIHdhcm5pbmdz
Lndhcm4oInVzZXIiLCBVc2VyV2FybmluZykKIAogICAgICAgICBhc3NlcnQgbGVuKHJlY29yZCkg
PT0gMQogICAgICAgICBhc3NlcnQgc3RyKHJlY29yZFswXS5tZXNzYWdlKSA9PSAidXNlciIKIAot
ICAgIGRlZiB0ZXN0X3JlY29yZF9vbmx5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3JlY29yZF9vbmx5
KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKE5vbmUpIGFzIHJlY29y
ZDoKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVzZXIiLCBVc2VyV2FybmluZykKICAgICAg
ICAgICAgIHdhcm5pbmdzLndhcm4oInJ1bnRpbWUiLCBSdW50aW1lV2FybmluZykKQEAgLTI4Myw3
ICszMDUsNyBAQCBjbGFzcyBUZXN0V2FybnMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHN0cihy
ZWNvcmRbMF0ubWVzc2FnZSkgPT0gInVzZXIiCiAgICAgICAgIGFzc2VydCBzdHIocmVjb3JkWzFd
Lm1lc3NhZ2UpID09ICJydW50aW1lIgogCi0gICAgZGVmIHRlc3RfcmVjb3JkX2J5X3N1YmNsYXNz
KHNlbGYpOgorICAgIGRlZiB0ZXN0X3JlY29yZF9ieV9zdWJjbGFzcyhzZWxmKSAtPiBOb25lOgog
ICAgICAgICB3aXRoIHB5dGVzdC53YXJucyhXYXJuaW5nKSBhcyByZWNvcmQ6CiAgICAgICAgICAg
ICB3YXJuaW5ncy53YXJuKCJ1c2VyIiwgVXNlcldhcm5pbmcpCiAgICAgICAgICAgICB3YXJuaW5n
cy53YXJuKCJydW50aW1lIiwgUnVudGltZVdhcm5pbmcpCkBAIC0zMDYsNyArMzI4LDcgQEAgY2xh
c3MgVGVzdFdhcm5zKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBzdHIocmVjb3JkWzBdLm1lc3Nh
Z2UpID09ICJ1c2VyIgogICAgICAgICBhc3NlcnQgc3RyKHJlY29yZFsxXS5tZXNzYWdlKSA9PSAi
cnVudGltZSIKIAotICAgIGRlZiB0ZXN0X2RvdWJsZV90ZXN0KHNlbGYsIHRlc3RkaXIpOgorICAg
IGRlZiB0ZXN0X2RvdWJsZV90ZXN0KHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgICIi
IklmIGEgdGVzdCBpcyBydW4gYWdhaW4sIHRoZSB3YXJuaW5nIHNob3VsZCBzdGlsbCBiZSByYWlz
ZWQiIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0z
MjIsNyArMzQ0LDcgQEAgY2xhc3MgVGVzdFdhcm5zKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKjIgcGFzc2VkIGluKiJdKQogCi0gICAgZGVmIHRlc3RfbWF0Y2hfcmVnZXgoc2VsZik6Cisg
ICAgZGVmIHRlc3RfbWF0Y2hfcmVnZXgoc2VsZikgLT4gTm9uZToKICAgICAgICAgd2l0aCBweXRl
c3Qud2FybnMoVXNlcldhcm5pbmcsIG1hdGNoPXIibXVzdCBiZSBcZCskIik6CiAgICAgICAgICAg
ICB3YXJuaW5ncy53YXJuKCJ2YWx1ZSBtdXN0IGJlIDQyIiwgVXNlcldhcm5pbmcpCiAKQEAgLTMz
NCwxNCArMzU2LDMxIEBAIGNsYXNzIFRlc3RXYXJucyhvYmplY3QpOgogICAgICAgICAgICAgd2l0
aCBweXRlc3Qud2FybnMoRnV0dXJlV2FybmluZywgbWF0Y2g9ciJtdXN0IGJlIFxkKyQiKToKICAg
ICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ2YWx1ZSBtdXN0IGJlIDQyIiwgVXNlcldhcm5p
bmcpCiAKLSAgICBkZWYgdGVzdF9vbmVfZnJvbV9tdWx0aXBsZV93YXJucyhzZWxmKToKKyAgICBk
ZWYgdGVzdF9vbmVfZnJvbV9tdWx0aXBsZV93YXJucyhzZWxmKSAtPiBOb25lOgogICAgICAgICB3
aXRoIHB5dGVzdC53YXJucyhVc2VyV2FybmluZywgbWF0Y2g9ciJhYWEiKToKICAgICAgICAgICAg
IHdhcm5pbmdzLndhcm4oImNjY2NjY2NjY2MiLCBVc2VyV2FybmluZykKICAgICAgICAgICAgIHdh
cm5pbmdzLndhcm4oImJiYmJiYmJiYmIiLCBVc2VyV2FybmluZykKICAgICAgICAgICAgIHdhcm5p
bmdzLndhcm4oImFhYWFhYWFhYWEiLCBVc2VyV2FybmluZykKIAotICAgIGRlZiB0ZXN0X25vbmVf
b2ZfbXVsdGlwbGVfd2FybnMoc2VsZik6CisgICAgZGVmIHRlc3Rfbm9uZV9vZl9tdWx0aXBsZV93
YXJucyhzZWxmKSAtPiBOb25lOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZh
aWwuRXhjZXB0aW9uKToKICAgICAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKFVzZXJXYXJuaW5n
LCBtYXRjaD1yImFhYSIpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImJiYmJiYmJi
YmIiLCBVc2VyV2FybmluZykKICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJjY2NjY2Nj
Y2NjIiwgVXNlcldhcm5pbmcpCisKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImln
bm9yZSIpCisgICAgZGVmIHRlc3RfY2FuX2NhcHR1cmVfcHJldmlvdXNseV93YXJuZWQoc2VsZikg
LT4gTm9uZToKKyAgICAgICAgZGVmIGYoKSAtPiBpbnQ6CisgICAgICAgICAgICB3YXJuaW5ncy53
YXJuKFVzZXJXYXJuaW5nKCJvaGFpIikpCisgICAgICAgICAgICByZXR1cm4gMTAKKworICAgICAg
ICBhc3NlcnQgZigpID09IDEwCisgICAgICAgIGFzc2VydCBweXRlc3Qud2FybnMoVXNlcldhcm5p
bmcsIGYpID09IDEwCisgICAgICAgIGFzc2VydCBweXRlc3Qud2FybnMoVXNlcldhcm5pbmcsIGYp
ID09IDEwCisgICAgICAgIGFzc2VydCBweXRlc3Qud2FybnMoVXNlcldhcm5pbmcsIGYpICE9ICIx
MCIgICMgdHlwZTogaWdub3JlW2NvbXBhcmlzb24tb3ZlcmxhcF0KKworICAgIGRlZiB0ZXN0X3dh
cm5zX2NvbnRleHRfbWFuYWdlcl93aXRoX2t3YXJncyhzZWxmKSAtPiBOb25lOgorICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKSBhcyBleGNpbmZvOgorICAgICAgICAgICAgd2l0
aCBweXRlc3Qud2FybnMoVXNlcldhcm5pbmcsIGZvbz0iYmFyIik6ICAjIHR5cGU6IGlnbm9yZQor
ICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXNzZXJ0ICJVbmV4cGVjdGVkIGtleXdvcmQg
YXJndW1lbnRzIiBpbiBzdHIoZXhjaW5mby52YWx1ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9yZXBvcnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3JlcG9y
dHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYmU5NDg5NjIw
NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVwb3J0cy5w
eQpAQCAtMCwwICsxLDUwNSBAQAoraW1wb3J0IHN5cworZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVl
bmNlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0
ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkNoYWluUmVwcgorZnJvbSBfcHl0ZXN0Ll9j
b2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvblJlcHIKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0
IENvbmZpZworZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5w
eXRlc3RlciBpbXBvcnQgVGVzdGRpcgorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0IENvbGxl
Y3RSZXBvcnQKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBUZXN0UmVwb3J0CisKKworY2xh
c3MgVGVzdFJlcG9ydFNlcmlhbGl6YXRpb246CisgICAgZGVmIHRlc3RfeGRpc3RfbG9uZ3JlcHJf
dG9fc3RyX2lzc3VlXzI0MShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAg
ICAiIiJSZWdhcmRpbmcgaXNzdWUgcHl0ZXN0LXhkaXN0IzI0MS4KKworICAgICAgICBUaGlzIHRl
c3QgY2FtZSBvcmlnaW5hbGx5IGZyb20gdGVzdF9yZW1vdGUucHkgaW4geGRpc3QgKGNhMDMyNjkp
LgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBkZWYgdGVzdF9hKCk6IGFzc2VydCBGYWxzZQorICAgICAgICAgICAg
ZGVmIHRlc3RfYigpOiBwYXNzCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlcHJl
YyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcG9ydHMgPSByZXByZWMuZ2V0cmVw
b3J0cygicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICAgICAgYXNzZXJ0IGxlbihyZXBv
cnRzKSA9PSA2CisgICAgICAgIHRlc3RfYV9jYWxsID0gcmVwb3J0c1sxXQorICAgICAgICBhc3Nl
cnQgdGVzdF9hX2NhbGwud2hlbiA9PSAiY2FsbCIKKyAgICAgICAgYXNzZXJ0IHRlc3RfYV9jYWxs
Lm91dGNvbWUgPT0gImZhaWxlZCIKKyAgICAgICAgYXNzZXJ0IHRlc3RfYV9jYWxsLl90b19qc29u
KClbImxvbmdyZXByIl1bInJlcHJ0cmFjZWJhY2siXVsic3R5bGUiXSA9PSAibG9uZyIKKyAgICAg
ICAgdGVzdF9iX2NhbGwgPSByZXBvcnRzWzRdCisgICAgICAgIGFzc2VydCB0ZXN0X2JfY2FsbC53
aGVuID09ICJjYWxsIgorICAgICAgICBhc3NlcnQgdGVzdF9iX2NhbGwub3V0Y29tZSA9PSAicGFz
c2VkIgorICAgICAgICBhc3NlcnQgdGVzdF9iX2NhbGwuX3RvX2pzb24oKVsibG9uZ3JlcHIiXSBp
cyBOb25lCisKKyAgICBkZWYgdGVzdF94ZGlzdF9yZXBvcnRfbG9uZ3JlcHJfcmVwcmNyYXNoXzEz
MChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiJSZWdhcmRpbmcg
aXNzdWUgcHl0ZXN0LXhkaXN0IzEzMAorCisgICAgICAgIFRoaXMgdGVzdCBjYW1lIG9yaWdpbmFs
bHkgZnJvbSB0ZXN0X3JlbW90ZS5weSBpbiB4ZGlzdCAoY2EwMzI2OSkuCisgICAgICAgICIiIgor
ICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgICAgICAgICAgZGVmIHRlc3RfZmFpbCgpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0IEZhbHNlLCAnRXhwZWN0ZWQgTWVzc2FnZScKKyAgICAgICAgICAgICAg
ICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5
dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpCisgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0g
MworICAgICAgICByZXAgPSByZXBvcnRzWzFdCisgICAgICAgIGFkZGVkX3NlY3Rpb24gPSAoIkZh
aWx1cmUgTWV0YWRhdGEiLCAibWV0YWRhdGEgbWV0YWRhdGEiLCAiKiIpCisgICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKHJlcC5sb25ncmVwciwgRXhjZXB0aW9uUmVwcikKKyAgICAgICAgcmVwLmxv
bmdyZXByLnNlY3Rpb25zLmFwcGVuZChhZGRlZF9zZWN0aW9uKQorICAgICAgICBkID0gcmVwLl90
b19qc29uKCkKKyAgICAgICAgYSA9IFRlc3RSZXBvcnQuX2Zyb21fanNvbihkKQorICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShhLmxvbmdyZXByLCBFeGNlcHRpb25SZXByKQorICAgICAgICAjIENo
ZWNrIGFzc2VtYmxlZCA9PSByZXAKKyAgICAgICAgYXNzZXJ0IGEuX19kaWN0X18ua2V5cygpID09
IHJlcC5fX2RpY3RfXy5rZXlzKCkKKyAgICAgICAgZm9yIGtleSBpbiByZXAuX19kaWN0X18ua2V5
cygpOgorICAgICAgICAgICAgaWYga2V5ICE9ICJsb25ncmVwciI6CisgICAgICAgICAgICAgICAg
YXNzZXJ0IGdldGF0dHIoYSwga2V5KSA9PSBnZXRhdHRyKHJlcCwga2V5KQorICAgICAgICBhc3Nl
cnQgcmVwLmxvbmdyZXByLnJlcHJjcmFzaCBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgYS5s
b25ncmVwci5yZXByY3Jhc2ggaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVw
ci5yZXByY3Jhc2gubGluZW5vID09IGEubG9uZ3JlcHIucmVwcmNyYXNoLmxpbmVubworICAgICAg
ICBhc3NlcnQgcmVwLmxvbmdyZXByLnJlcHJjcmFzaC5tZXNzYWdlID09IGEubG9uZ3JlcHIucmVw
cmNyYXNoLm1lc3NhZ2UKKyAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVwci5yZXByY3Jhc2gucGF0
aCA9PSBhLmxvbmdyZXByLnJlcHJjcmFzaC5wYXRoCisgICAgICAgIGFzc2VydCByZXAubG9uZ3Jl
cHIucmVwcnRyYWNlYmFjay5lbnRyeXNlcCA9PSBhLmxvbmdyZXByLnJlcHJ0cmFjZWJhY2suZW50
cnlzZXAKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIHJlcC5sb25ncmVwci5yZXBydHJh
Y2ViYWNrLmV4dHJhbGluZSA9PSBhLmxvbmdyZXByLnJlcHJ0cmFjZWJhY2suZXh0cmFsaW5lCisg
ICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVwci5yZXBydHJhY2ViYWNrLnN0eWxl
ID09IGEubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5zdHlsZQorICAgICAgICBhc3NlcnQgcmVwLmxv
bmdyZXByLnNlY3Rpb25zID09IGEubG9uZ3JlcHIuc2VjdGlvbnMKKyAgICAgICAgIyBNaXNzaW5n
IHNlY3Rpb24gYXR0cmlidXRlIFBSMTcxCisgICAgICAgIGFzc2VydCBhZGRlZF9zZWN0aW9uIGlu
IGEubG9uZ3JlcHIuc2VjdGlvbnMKKworICAgIGRlZiB0ZXN0X3JlcHJlbnRyaWVzX3NlcmlhbGl6
YXRpb25fMTcwKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIlJl
Z2FyZGluZyBpc3N1ZSBweXRlc3QteGRpc3QjMTcwCisKKyAgICAgICAgVGhpcyB0ZXN0IGNhbWUg
b3JpZ2luYWxseSBmcm9tIHRlc3RfcmVtb3RlLnB5IGluIHhkaXN0IChjYTAzMjY5KS4KKyAgICAg
ICAgIiIiCisgICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRW50cnkK
KworICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCisgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgdGVzdF9yZXByX2VudHJ5KCk6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydCB4CisgICAgICAgICAgICAgICAgICAgICAgICAiIiIsCisg
ICAgICAgICAgICAiLS1zaG93bG9jYWxzIiwKKyAgICAgICAgKQorICAgICAgICByZXBvcnRzID0g
cmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpCisgICAgICAgIGFz
c2VydCBsZW4ocmVwb3J0cykgPT0gMworICAgICAgICByZXAgPSByZXBvcnRzWzFdCisgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKHJlcC5sb25ncmVwciwgRXhjZXB0aW9uUmVwcikKKyAgICAgICAg
ZCA9IHJlcC5fdG9fanNvbigpCisgICAgICAgIGEgPSBUZXN0UmVwb3J0Ll9mcm9tX2pzb24oZCkK
KyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYS5sb25ncmVwciwgRXhjZXB0aW9uUmVwcikKKwor
ICAgICAgICByZXBfZW50cmllcyA9IHJlcC5sb25ncmVwci5yZXBydHJhY2ViYWNrLnJlcHJlbnRy
aWVzCisgICAgICAgIGFfZW50cmllcyA9IGEubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5yZXByZW50
cmllcworICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oYV9lbnRyaWVzKSk6CisgICAgICAgICAg
ICByZXBfZW50cnkgPSByZXBfZW50cmllc1tpXQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UocmVwX2VudHJ5LCBSZXByRW50cnkpCisgICAgICAgICAgICBhc3NlcnQgcmVwX2VudHJ5LnJl
cHJmaWxlbG9jIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhc3NlcnQgcmVwX2VudHJ5LnJlcHJm
dW5jYXJncyBpcyBub3QgTm9uZQorICAgICAgICAgICAgYXNzZXJ0IHJlcF9lbnRyeS5yZXBybG9j
YWxzIGlzIG5vdCBOb25lCisKKyAgICAgICAgICAgIGFfZW50cnkgPSBhX2VudHJpZXNbaV0KKyAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFfZW50cnksIFJlcHJFbnRyeSkKKyAgICAgICAg
ICAgIGFzc2VydCBhX2VudHJ5LnJlcHJmaWxlbG9jIGlzIG5vdCBOb25lCisgICAgICAgICAgICBh
c3NlcnQgYV9lbnRyeS5yZXByZnVuY2FyZ3MgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFzc2Vy
dCBhX2VudHJ5LnJlcHJsb2NhbHMgaXMgbm90IE5vbmUKKworICAgICAgICAgICAgYXNzZXJ0IHJl
cF9lbnRyeS5saW5lcyA9PSBhX2VudHJ5LmxpbmVzCisgICAgICAgICAgICBhc3NlcnQgcmVwX2Vu
dHJ5LnJlcHJmaWxlbG9jLmxpbmVubyA9PSBhX2VudHJ5LnJlcHJmaWxlbG9jLmxpbmVubworICAg
ICAgICAgICAgYXNzZXJ0IHJlcF9lbnRyeS5yZXByZmlsZWxvYy5tZXNzYWdlID09IGFfZW50cnku
cmVwcmZpbGVsb2MubWVzc2FnZQorICAgICAgICAgICAgYXNzZXJ0IHJlcF9lbnRyeS5yZXByZmls
ZWxvYy5wYXRoID09IGFfZW50cnkucmVwcmZpbGVsb2MucGF0aAorICAgICAgICAgICAgYXNzZXJ0
IHJlcF9lbnRyeS5yZXByZnVuY2FyZ3MuYXJncyA9PSBhX2VudHJ5LnJlcHJmdW5jYXJncy5hcmdz
CisgICAgICAgICAgICBhc3NlcnQgcmVwX2VudHJ5LnJlcHJsb2NhbHMubGluZXMgPT0gYV9lbnRy
eS5yZXBybG9jYWxzLmxpbmVzCisgICAgICAgICAgICBhc3NlcnQgcmVwX2VudHJ5LnN0eWxlID09
IGFfZW50cnkuc3R5bGUKKworICAgIGRlZiB0ZXN0X3JlcHJlbnRyaWVzX3NlcmlhbGl6YXRpb25f
MTk2KHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIlJlZ2FyZGlu
ZyBpc3N1ZSBweXRlc3QteGRpc3QjMTk2CisKKyAgICAgICAgVGhpcyB0ZXN0IGNhbWUgb3JpZ2lu
YWxseSBmcm9tIHRlc3RfcmVtb3RlLnB5IGluIHhkaXN0IChjYTAzMjY5KS4KKyAgICAgICAgIiIi
CisgICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRW50cnlOYXRpdmUK
KworICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCisgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgdGVzdF9yZXByX2VudHJ5X25h
dGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgeAorICAgICAgICAgICAgICAgICAgICAgICAg
IiIiLAorICAgICAgICAgICAgIi0tdGI9bmF0aXZlIiwKKyAgICAgICAgKQorICAgICAgICByZXBv
cnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpCisgICAg
ICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMworICAgICAgICByZXAgPSByZXBvcnRzWzFdCisg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcC5sb25ncmVwciwgRXhjZXB0aW9uUmVwcikKKyAg
ICAgICAgZCA9IHJlcC5fdG9fanNvbigpCisgICAgICAgIGEgPSBUZXN0UmVwb3J0Ll9mcm9tX2pz
b24oZCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYS5sb25ncmVwciwgRXhjZXB0aW9uUmVw
cikKKworICAgICAgICByZXBfZW50cmllcyA9IHJlcC5sb25ncmVwci5yZXBydHJhY2ViYWNrLnJl
cHJlbnRyaWVzCisgICAgICAgIGFfZW50cmllcyA9IGEubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5y
ZXByZW50cmllcworICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oYV9lbnRyaWVzKSk6CisgICAg
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXBfZW50cmllc1tpXSwgUmVwckVudHJ5TmF0aXZl
KQorICAgICAgICAgICAgYXNzZXJ0IHJlcF9lbnRyaWVzW2ldLmxpbmVzID09IGFfZW50cmllc1tp
XS5saW5lcworCisgICAgZGVmIHRlc3RfaXRlbXJlcG9ydF9vdXRjb21lcyhzZWxmLCB0ZXN0ZGly
OiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAjIFRoaXMgdGVzdCBjYW1lIG9yaWdpbmFsbHkg
ZnJvbSB0ZXN0X3JlbW90ZS5weSBpbiB4ZGlzdCAoY2EwMzI2OSkuCisgICAgICAgIHJlcHJlYyA9
IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJjZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZGVmIHRlc3RfcGFzcygpOiBwYXNzCisgICAgICAg
ICAgICBkZWYgdGVzdF9mYWlsKCk6IDAvMAorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnNraXBp
ZigiVHJ1ZSIpCisgICAgICAgICAgICBkZWYgdGVzdF9za2lwKCk6IHBhc3MKKyAgICAgICAgICAg
IGRlZiB0ZXN0X3NraXBfaW1wZXJhdGl2ZSgpOgorICAgICAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJoZWxsbyIpCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoIlRydWUiKQorICAgICAg
ICAgICAgZGVmIHRlc3RfeGZhaWwoKTogMC8wCisgICAgICAgICAgICBkZWYgdGVzdF94ZmFpbF9p
bXBlcmF0aXZlKCk6CisgICAgICAgICAgICAgICAgcHl0ZXN0LnhmYWlsKCJoZWxsbyIpCisgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlcG9ydHMgPSByZXByZWMuZ2V0cmVwb3J0cygi
cHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICAgICAgYXNzZXJ0IGxlbihyZXBvcnRzKSA9
PSAxNyAgIyB3aXRoIHNldHVwL3RlYXJkb3duICJwYXNzZWQiIHJlcG9ydHMKKyAgICAgICAgZm9y
IHJlcCBpbiByZXBvcnRzOgorICAgICAgICAgICAgZCA9IHJlcC5fdG9fanNvbigpCisgICAgICAg
ICAgICBuZXdyZXAgPSBUZXN0UmVwb3J0Ll9mcm9tX2pzb24oZCkKKyAgICAgICAgICAgIGFzc2Vy
dCBuZXdyZXAucGFzc2VkID09IHJlcC5wYXNzZWQKKyAgICAgICAgICAgIGFzc2VydCBuZXdyZXAu
ZmFpbGVkID09IHJlcC5mYWlsZWQKKyAgICAgICAgICAgIGFzc2VydCBuZXdyZXAuc2tpcHBlZCA9
PSByZXAuc2tpcHBlZAorICAgICAgICAgICAgaWYgbmV3cmVwLnNraXBwZWQgYW5kIG5vdCBoYXNh
dHRyKG5ld3JlcCwgIndhc3hmYWlsIik6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UobmV3cmVwLmxvbmdyZXByLCB0dXBsZSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKG5l
d3JlcC5sb25ncmVwcikgPT0gMworICAgICAgICAgICAgYXNzZXJ0IG5ld3JlcC5vdXRjb21lID09
IHJlcC5vdXRjb21lCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLndoZW4gPT0gcmVwLndoZW4K
KyAgICAgICAgICAgIGFzc2VydCBuZXdyZXAua2V5d29yZHMgPT0gcmVwLmtleXdvcmRzCisgICAg
ICAgICAgICBpZiByZXAuZmFpbGVkOgorICAgICAgICAgICAgICAgIGFzc2VydCBuZXdyZXAubG9u
Z3JlcHJ0ZXh0ID09IHJlcC5sb25ncmVwcnRleHQKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RyZXBv
cnRfcGFzc2VkKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIlRo
aXMgdGVzdCBjYW1lIG9yaWdpbmFsbHkgZnJvbSB0ZXN0X3JlbW90ZS5weSBpbiB4ZGlzdCAoY2Ew
MzI2OSkuIiIiCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJjZSgiZGVm
IHRlc3RfZnVuYygpOiBwYXNzIikKKyAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBvcnRz
KCJweXRlc3RfY29sbGVjdHJlcG9ydCIpCisgICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKKyAg
ICAgICAgICAgIGQgPSByZXAuX3RvX2pzb24oKQorICAgICAgICAgICAgbmV3cmVwID0gQ29sbGVj
dFJlcG9ydC5fZnJvbV9qc29uKGQpCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLnBhc3NlZCA9
PSByZXAucGFzc2VkCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLmZhaWxlZCA9PSByZXAuZmFp
bGVkCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLnNraXBwZWQgPT0gcmVwLnNraXBwZWQKKwor
ICAgIGRlZiB0ZXN0X2NvbGxlY3RyZXBvcnRfZmFpbChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAt
PiBOb25lOgorICAgICAgICAiIiJUaGlzIHRlc3QgY2FtZSBvcmlnaW5hbGx5IGZyb20gdGVzdF9y
ZW1vdGUucHkgaW4geGRpc3QgKGNhMDMyNjkpLiIiIgorICAgICAgICByZXByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW5zb3VyY2UoInF3ZSBhYmMiKQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdl
dHJlcG9ydHMoInB5dGVzdF9jb2xsZWN0cmVwb3J0IikKKyAgICAgICAgYXNzZXJ0IHJlcG9ydHMK
KyAgICAgICAgZm9yIHJlcCBpbiByZXBvcnRzOgorICAgICAgICAgICAgZCA9IHJlcC5fdG9fanNv
bigpCisgICAgICAgICAgICBuZXdyZXAgPSBDb2xsZWN0UmVwb3J0Ll9mcm9tX2pzb24oZCkKKyAg
ICAgICAgICAgIGFzc2VydCBuZXdyZXAucGFzc2VkID09IHJlcC5wYXNzZWQKKyAgICAgICAgICAg
IGFzc2VydCBuZXdyZXAuZmFpbGVkID09IHJlcC5mYWlsZWQKKyAgICAgICAgICAgIGFzc2VydCBu
ZXdyZXAuc2tpcHBlZCA9PSByZXAuc2tpcHBlZAorICAgICAgICAgICAgaWYgcmVwLmZhaWxlZDoK
KyAgICAgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLmxvbmdyZXByID09IHN0cihyZXAubG9uZ3Jl
cHIpCisKKyAgICBkZWYgdGVzdF9leHRlbmRlZF9yZXBvcnRfZGVzZXJpYWxpemF0aW9uKHNlbGYs
IHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIlRoaXMgdGVzdCBjYW1lIG9y
aWdpbmFsbHkgZnJvbSB0ZXN0X3JlbW90ZS5weSBpbiB4ZGlzdCAoY2EwMzI2OSkuIiIiCisgICAg
ICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJjZSgicXdlIGFiYyIpCisgICAgICAg
IHJlcG9ydHMgPSByZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X2NvbGxlY3RyZXBvcnQiKQorICAg
ICAgICBhc3NlcnQgcmVwb3J0cworICAgICAgICBmb3IgcmVwIGluIHJlcG9ydHM6CisgICAgICAg
ICAgICByZXAuZXh0cmEgPSBUcnVlICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAg
ICAgICAgICBkID0gcmVwLl90b19qc29uKCkKKyAgICAgICAgICAgIG5ld3JlcCA9IENvbGxlY3RS
ZXBvcnQuX2Zyb21fanNvbihkKQorICAgICAgICAgICAgYXNzZXJ0IG5ld3JlcC5leHRyYQorICAg
ICAgICAgICAgYXNzZXJ0IG5ld3JlcC5wYXNzZWQgPT0gcmVwLnBhc3NlZAorICAgICAgICAgICAg
YXNzZXJ0IG5ld3JlcC5mYWlsZWQgPT0gcmVwLmZhaWxlZAorICAgICAgICAgICAgYXNzZXJ0IG5l
d3JlcC5za2lwcGVkID09IHJlcC5za2lwcGVkCisgICAgICAgICAgICBpZiByZXAuZmFpbGVkOgor
ICAgICAgICAgICAgICAgIGFzc2VydCBuZXdyZXAubG9uZ3JlcHIgPT0gc3RyKHJlcC5sb25ncmVw
cikKKworICAgIGRlZiB0ZXN0X3BhdGhzX3N1cHBvcnQoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikg
LT4gTm9uZToKKyAgICAgICAgIiIiUmVwb3J0IGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHB5LnBhdGgg
b3IgcGF0aGxpYiBvYmplY3RzIHNob3VsZCBiZWNvbWUgc3RyaW5ncy4iIiIKKyAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9h
KCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICIiIgorICAgICAgICAp
CisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcG9ydHMg
PSByZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICAgICAg
YXNzZXJ0IGxlbihyZXBvcnRzKSA9PSAzCisgICAgICAgIHRlc3RfYV9jYWxsID0gcmVwb3J0c1sx
XQorICAgICAgICB0ZXN0X2FfY2FsbC5wYXRoMSA9IHRlc3RkaXIudG1wZGlyICAjIHR5cGU6IGln
bm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgIHRlc3RfYV9jYWxsLnBhdGgyID0gUGF0aCh0ZXN0
ZGlyLnRtcGRpcikgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICAgICAgZGF0YSA9
IHRlc3RfYV9jYWxsLl90b19qc29uKCkKKyAgICAgICAgYXNzZXJ0IGRhdGFbInBhdGgxIl0gPT0g
c3RyKHRlc3RkaXIudG1wZGlyKQorICAgICAgICBhc3NlcnQgZGF0YVsicGF0aDIiXSA9PSBzdHIo
dGVzdGRpci50bXBkaXIpCisKKyAgICBkZWYgdGVzdF9kZXNlcmlhbGl6YXRpb25fZmFpbHVyZShz
ZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiJDaGVjayBoYW5kbGlu
ZyBvZiBmYWlsdXJlIGR1cmluZyBkZXNlcmlhbGl6YXRpb24gb2YgcmVwb3J0IHR5cGVzLiIiIgor
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGRlZiB0ZXN0X2EoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAg
ICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQi
KQorICAgICAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDMKKyAgICAgICAgdGVzdF9hX2NhbGwg
PSByZXBvcnRzWzFdCisgICAgICAgIGRhdGEgPSB0ZXN0X2FfY2FsbC5fdG9fanNvbigpCisgICAg
ICAgIGVudHJ5ID0gZGF0YVsibG9uZ3JlcHIiXVsicmVwcnRyYWNlYmFjayJdWyJyZXByZW50cmll
cyJdWzBdCisgICAgICAgIGFzc2VydCBlbnRyeVsidHlwZSJdID09ICJSZXByRW50cnkiCisKKyAg
ICAgICAgZW50cnlbInR5cGUiXSA9ICJVbmtub3duIgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoCisgICAgICAgICAgICBSdW50aW1lRXJyb3IsIG1hdGNoPSJJTlRFUk5BTEVSUk9SOiBVbmtu
b3duIGVudHJ5IHR5cGUgcmV0dXJuZWQ6IFVua25vd24iCisgICAgICAgICk6CisgICAgICAgICAg
ICBUZXN0UmVwb3J0Ll9mcm9tX2pzb24oZGF0YSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgicmVwb3J0X2NsYXNzIiwgW1Rlc3RSZXBvcnQsIENvbGxlY3RSZXBvcnRdKQorICAgIGRl
ZiB0ZXN0X2NoYWluZWRfZXhjZXB0aW9ucyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCB0d19tb2Nr
LCByZXBvcnRfY2xhc3MpIC0+IE5vbmU6CisgICAgICAgICIiIkNoZWNrIHNlcmlhbGl6YXRpb24v
ZGVzZXJpYWxpemF0aW9uIG9mIHJlcG9ydCBvYmplY3RzIGNvbnRhaW5pbmcgY2hhaW5lZCBleGNl
cHRpb25zICgjNTc4NikiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigndmFsdWUgZXJyb3InKQorICAgICAgICAgICAgZGVmIHRlc3RfYSgpOgorICAgICAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoJ3J1bnRpbWUgZXJyb3InKSBmcm9tIGUKKyAgICAgICAgICAgIGlmIHtlcnJvcl9k
dXJpbmdfaW1wb3J0fToKKyAgICAgICAgICAgICAgICB0ZXN0X2EoKQorICAgICAgICAiIiIuZm9y
bWF0KAorICAgICAgICAgICAgICAgIGVycm9yX2R1cmluZ19pbXBvcnQ9cmVwb3J0X2NsYXNzIGlz
IENvbGxlY3RSZXBvcnQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIHJlcHJl
YyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIGlmIHJlcG9ydF9jbGFzcyBpcyBUZXN0
UmVwb3J0OgorICAgICAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBvcnRzKAorICAgICAg
ICAgICAgICAgICJweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQiCisgICAgICAgICAgICApICAjIHR5
cGU6IFVuaW9uW1NlcXVlbmNlW1Rlc3RSZXBvcnRdLCBTZXF1ZW5jZVtDb2xsZWN0UmVwb3J0XV0K
KyAgICAgICAgICAgICMgd2UgaGF2ZSAzIHJlcG9ydHM6IHNldHVwL2NhbGwvdGVhcmRvd24KKyAg
ICAgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMworICAgICAgICAgICAgIyBnZXQgdGhl
IGNhbGwgcmVwb3J0CisgICAgICAgICAgICByZXBvcnQgPSByZXBvcnRzWzFdCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBhc3NlcnQgcmVwb3J0X2NsYXNzIGlzIENvbGxlY3RSZXBvcnQKKyAg
ICAgICAgICAgICMgdHdvIGNvbGxlY3Rpb24gcmVwb3J0czogc2Vzc2lvbiBhbmQgdGVzdCBmaWxl
CisgICAgICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9jb2xsZWN0
cmVwb3J0IikKKyAgICAgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMgorICAgICAgICAg
ICAgcmVwb3J0ID0gcmVwb3J0c1sxXQorCisgICAgICAgIGRlZiBjaGVja19sb25ncmVwcihsb25n
cmVwcjogRXhjZXB0aW9uQ2hhaW5SZXByKSAtPiBOb25lOgorICAgICAgICAgICAgIiIiQ2hlY2sg
dGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGdpdmVuIGxvbmdyZXByIG9iamVjdCBhY2NvcmRpbmcgdG8g
dGhlIHRlc3QgZmlsZS4KKworICAgICAgICAgICAgV2UgY2FuIGdldCBhd2F5IHdpdGggdGVzdGlu
ZyBib3RoIENvbGxlY3RSZXBvcnQgYW5kIFRlc3RSZXBvcnQgd2l0aCB0aGlzIGZ1bmN0aW9uIGJl
Y2F1c2UKKyAgICAgICAgICAgIHRoZSBsb25ncmVwciBvYmplY3RzIGFyZSB2ZXJ5IHNpbWlsYXIu
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxvbmdyZXBy
LCBFeGNlcHRpb25DaGFpblJlcHIpCisgICAgICAgICAgICBhc3NlcnQgbG9uZ3JlcHIuc2VjdGlv
bnMgPT0gWygidGl0bGUiLCAiY29udGVudHMiLCAiPSIpXQorICAgICAgICAgICAgYXNzZXJ0IGxl
bihsb25ncmVwci5jaGFpbikgPT0gMgorICAgICAgICAgICAgZW50cnkxLCBlbnRyeTIgPSBsb25n
cmVwci5jaGFpbgorICAgICAgICAgICAgdGIxLCBmaWxlbG9jMSwgZGVzYzEgPSBlbnRyeTEKKyAg
ICAgICAgICAgIHRiMiwgZmlsZWxvYzIsIGRlc2MyID0gZW50cnkyCisKKyAgICAgICAgICAgIGFz
c2VydCAiVmFsdWVFcnJvcigndmFsdWUgZXJyb3InKSIgaW4gc3RyKHRiMSkKKyAgICAgICAgICAg
IGFzc2VydCAiUnVudGltZUVycm9yKCdydW50aW1lIGVycm9yJykiIGluIHN0cih0YjIpCisKKyAg
ICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgZGVzYzEKKyAgICAgICAgICAgICAg
ICA9PSAiVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9s
bG93aW5nIGV4Y2VwdGlvbjoiCisgICAgICAgICAgICApCisgICAgICAgICAgICBhc3NlcnQgZGVz
YzIgaXMgTm9uZQorCisgICAgICAgIGFzc2VydCByZXBvcnQuZmFpbGVkCisgICAgICAgIGFzc2Vy
dCBsZW4ocmVwb3J0LnNlY3Rpb25zKSA9PSAwCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJl
cG9ydC5sb25ncmVwciwgRXhjZXB0aW9uQ2hhaW5SZXByKQorICAgICAgICByZXBvcnQubG9uZ3Jl
cHIuYWRkc2VjdGlvbigidGl0bGUiLCAiY29udGVudHMiLCAiPSIpCisgICAgICAgIGNoZWNrX2xv
bmdyZXByKHJlcG9ydC5sb25ncmVwcikKKworICAgICAgICBkYXRhID0gcmVwb3J0Ll90b19qc29u
KCkKKyAgICAgICAgbG9hZGVkX3JlcG9ydCA9IHJlcG9ydF9jbGFzcy5fZnJvbV9qc29uKGRhdGEp
CisKKyAgICAgICAgYXNzZXJ0IGxvYWRlZF9yZXBvcnQuZmFpbGVkCisgICAgICAgIGNoZWNrX2xv
bmdyZXByKGxvYWRlZF9yZXBvcnQubG9uZ3JlcHIpCisKKyAgICAgICAgIyBtYWtlIHN1cmUgd2Ug
ZG9uJ3QgYmxvdyB1cCBvbiBgYHRvdGVybWluYWxgYCBjYWxsOyB3ZSBkb24ndCB0ZXN0IHRoZSBh
Y3R1YWwgb3V0cHV0IGJlY2F1c2UgaXQgaXMgdmVyeQorICAgICAgICAjIGJyaXR0bGUgYW5kIGhh
cmQgdG8gbWFpbnRhaW4sIGJ1dCB3ZSBjYW4gYXNzdW1lIGl0IGlzIGNvcnJlY3QgYmVjYXVzZSBg
YHRvdGVybWluYWxgYCBpcyBhbHJlYWR5IHRlc3RlZAorICAgICAgICAjIGVsc2V3aGVyZSBhbmQg
d2UgZG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHRoZSBsb25ncmVwciBvYmplY3QgYWZ0ZXIgbG9h
ZGluZyBpdC4KKyAgICAgICAgbG9hZGVkX3JlcG9ydC5sb25ncmVwci50b3Rlcm1pbmFsKHR3X21v
Y2spCisKKyAgICBkZWYgdGVzdF9jaGFpbmVkX2V4Y2VwdGlvbnNfbm9fcmVwcmNyYXNoKHNlbGYs
IHRlc3RkaXI6IFRlc3RkaXIsIHR3X21vY2spIC0+IE5vbmU6CisgICAgICAgICIiIlJlZ3Jlc3Np
b24gdGVzdCBmb3IgdHJhY2ViYWNrcyB3aXRob3V0IGEgcmVwcmNyYXNoICgjNTk3MSkKKworICAg
ICAgICBUaGlzIGhhcHBlbnMgbm90YWJseSBvbiBleGNlcHRpb25zIHJhaXNlZCBieSBtdWx0aXBy
b2Nlc3MucG9vbDogdGhlIGV4Y2VwdGlvbiB0cmFuc2ZlcgorICAgICAgICBmcm9tIHN1YnByb2Nl
c3MgdG8gbWFpbiBwcm9jZXNzIGNyZWF0ZXMgYW4gYXJ0aWZpY2lhbCBleGNlcHRpb24sIHdoaWNo
IEV4Y2VwdGlvbkluZm8KKyAgICAgICAgY2FuJ3Qgb2J0YWluIHRoZSBSZXByRmlsZUxvY2F0aW9u
IGZyb20uCisgICAgICAgICIiIgorICAgICAgICAjIHNvbWVob3cgaW4gUHl0aG9uIDMuNSBvbiBX
aW5kb3dzIHRoaXMgdGVzdCBmYWlscyB3aXRoOgorICAgICAgICAjICAgRmlsZSAiYzpcLi4uXDMu
NS40XHg2NFxMaWJcbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24ucHkiLCBsaW5lIDMwMiwgaW4g
X3JlY3ZfYnl0ZXMKKyAgICAgICAgIyAgICAgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAjIE9T
RXJyb3I6IFtXaW5FcnJvciA2XSBUaGUgaGFuZGxlIGlzIGludmFsaWQKKyAgICAgICAgIworICAg
ICAgICAjIHNvIGluIHRoaXMgcGxhdGZvcm0gd2Ugb3B0ZWQgdG8gdXNlIGEgbW9jayB0cmFjZWJh
Y2sgd2hpY2ggaXMgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICAjIG9uZSBwcm9kdWNlZCBieSB0
aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoy
XSA8PSAoMywgNSkgYW5kIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4iKToKKyAgICAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
ICAgICAjIGVxdWl2YWxlbnQgb2YgbXVsdGlwcm9jZXNzaW5nLnBvb2wuUmVtb3RlVHJhY2ViYWNr
CisgICAgICAgICAgICAgICAgY2xhc3MgUmVtb3RlVHJhY2ViYWNrKEV4Y2VwdGlvbik6CisgICAg
ICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Yik6CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLnRiID0gdGIKKyAgICAgICAgICAgICAgICAgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50YgorICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0X2EoKToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndmFsdWUgZXJyb3InKQorICAgICAgICAgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAg
IyBlcXVpdmFsZW50IHRvIGhvdyBtdWx0aXByb2Nlc3NpbmcucG9vbC5yZWJ1aWxkX2V4YyBkb2Vz
IGl0CisgICAgICAgICAgICAgICAgICAgICAgICBlLl9fY2F1c2VfXyA9IFJlbW90ZVRyYWNlYmFj
aygncnVudGltZSBlcnJvcicpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBm
cm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorCisgICAg
ICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigndmFsdWUgZXJyb3InKQorCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfYSgpOgorICAg
ICAgICAgICAgICAgICAgICB3aXRoIFByb2Nlc3NQb29sRXhlY3V0b3IoKSBhcyBwOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcC5zdWJtaXQoZnVuYykucmVzdWx0KCkKKyAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgKQorCisgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisgICAg
ICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisKKyAgICAgICAgcmVwb3J0cyA9IHJl
cHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQiKQorCisgICAgICAgIGRl
ZiBjaGVja19sb25ncmVwcihsb25ncmVwcjogb2JqZWN0KSAtPiBOb25lOgorICAgICAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UobG9uZ3JlcHIsIEV4Y2VwdGlvbkNoYWluUmVwcikKKyAgICAgICAg
ICAgIGFzc2VydCBsZW4obG9uZ3JlcHIuY2hhaW4pID09IDIKKyAgICAgICAgICAgIGVudHJ5MSwg
ZW50cnkyID0gbG9uZ3JlcHIuY2hhaW4KKyAgICAgICAgICAgIHRiMSwgZmlsZWxvYzEsIGRlc2Mx
ID0gZW50cnkxCisgICAgICAgICAgICB0YjIsIGZpbGVsb2MyLCBkZXNjMiA9IGVudHJ5MgorCisg
ICAgICAgICAgICBhc3NlcnQgIlJlbW90ZVRyYWNlYmFjayIgaW4gc3RyKHRiMSkKKyAgICAgICAg
ICAgIGFzc2VydCAiVmFsdWVFcnJvcjogdmFsdWUgZXJyb3IiIGluIHN0cih0YjIpCisKKyAgICAg
ICAgICAgIGFzc2VydCBmaWxlbG9jMSBpcyBOb25lCisgICAgICAgICAgICBhc3NlcnQgZmlsZWxv
YzIgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFzc2VydCBmaWxlbG9jMi5tZXNzYWdlID09ICJW
YWx1ZUVycm9yOiB2YWx1ZSBlcnJvciIKKworICAgICAgICAjIDMgcmVwb3J0czogc2V0dXAvY2Fs
bC90ZWFyZG93bjogZ2V0IHRoZSBjYWxsIHJlcG9ydAorICAgICAgICBhc3NlcnQgbGVuKHJlcG9y
dHMpID09IDMKKyAgICAgICAgcmVwb3J0ID0gcmVwb3J0c1sxXQorCisgICAgICAgIGFzc2VydCBy
ZXBvcnQuZmFpbGVkCisgICAgICAgIGNoZWNrX2xvbmdyZXByKHJlcG9ydC5sb25ncmVwcikKKwor
ICAgICAgICBkYXRhID0gcmVwb3J0Ll90b19qc29uKCkKKyAgICAgICAgbG9hZGVkX3JlcG9ydCA9
IFRlc3RSZXBvcnQuX2Zyb21fanNvbihkYXRhKQorCisgICAgICAgIGFzc2VydCBsb2FkZWRfcmVw
b3J0LmZhaWxlZAorICAgICAgICBjaGVja19sb25ncmVwcihsb2FkZWRfcmVwb3J0LmxvbmdyZXBy
KQorCisgICAgICAgICMgZm9yIHNhbWUgcmVhc29ucyBhcyBwcmV2aW91cyB0ZXN0LCBlbnN1cmUg
d2UgZG9uJ3QgYmxvdyB1cCBoZXJlCisgICAgICAgIGFzc2VydCBsb2FkZWRfcmVwb3J0Lmxvbmdy
ZXByIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxvYWRlZF9yZXBvcnQu
bG9uZ3JlcHIsIEV4Y2VwdGlvbkNoYWluUmVwcikKKyAgICAgICAgbG9hZGVkX3JlcG9ydC5sb25n
cmVwci50b3Rlcm1pbmFsKHR3X21vY2spCisKKyAgICBkZWYgdGVzdF9yZXBvcnRfcHJldmVudF9D
b25mdGVzdEltcG9ydEZhaWx1cmVfaGlkaW5nX2V4Y2VwdGlvbigKKyAgICAgICAgc2VsZiwgdGVz
dGRpcjogVGVzdGRpcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgc3ViX2RpciA9IHRlc3RkaXIu
dG1wZGlyLmpvaW4oIm5zIikuZW5zdXJlX2RpcigpCisgICAgICAgIHN1Yl9kaXIuam9pbigiY29u
ZnRlc3QiKS5uZXcoZXh0PSIucHkiKS53cml0ZSgiaW1wb3J0IHVua25vd24iKQorCisgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi4iKQorICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJFICAgKkVycm9yOiBObyBtb2R1bGUgbmFtZWQgJ3Vu
a25vd24nIl0pCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCJFUlJPUiAg
LSAqQ29uZnRlc3RJbXBvcnRGYWlsdXJlKiIpCisKKworY2xhc3MgVGVzdEhvb2tzOgorICAgICIi
IlRlc3QgdGhhdCB0aGUgaG9va3MgYXJlIHdvcmtpbmcgY29ycmVjdGx5IGZvciBwbHVnaW5zIiIi
CisKKyAgICBkZWYgdGVzdF90ZXN0X3JlcG9ydChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCBweXRl
c3Rjb25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9hKCk6IGFzc2VydCBGYWxzZQor
ICAgICAgICAgICAgZGVmIHRlc3RfYigpOiBwYXNzCisgICAgICAgICIiIgorICAgICAgICApCisg
ICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcG9ydHMgPSBy
ZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICAgICAgYXNz
ZXJ0IGxlbihyZXBvcnRzKSA9PSA2CisgICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKKyAgICAg
ICAgICAgIGRhdGEgPSBweXRlc3Rjb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3RvX3NlcmlhbGl6
YWJsZSgKKyAgICAgICAgICAgICAgICBjb25maWc9cHl0ZXN0Y29uZmlnLCByZXBvcnQ9cmVwCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBhc3NlcnQgZGF0YVsiJHJlcG9ydF90eXBlIl0gPT0g
IlRlc3RSZXBvcnQiCisgICAgICAgICAgICBuZXdfcmVwID0gcHl0ZXN0Y29uZmlnLmhvb2sucHl0
ZXN0X3JlcG9ydF9mcm9tX3NlcmlhbGl6YWJsZSgKKyAgICAgICAgICAgICAgICBjb25maWc9cHl0
ZXN0Y29uZmlnLCBkYXRhPWRhdGEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCBu
ZXdfcmVwLm5vZGVpZCA9PSByZXAubm9kZWlkCisgICAgICAgICAgICBhc3NlcnQgbmV3X3JlcC53
aGVuID09IHJlcC53aGVuCisgICAgICAgICAgICBhc3NlcnQgbmV3X3JlcC5vdXRjb21lID09IHJl
cC5vdXRjb21lCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X3JlcG9ydChzZWxmLCB0ZXN0ZGlyOiBU
ZXN0ZGlyLCBweXRlc3Rjb25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9hKCk6IGFz
c2VydCBGYWxzZQorICAgICAgICAgICAgZGVmIHRlc3RfYigpOiBwYXNzCisgICAgICAgICIiIgor
ICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisgICAgICAg
IHJlcG9ydHMgPSByZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X2NvbGxlY3RyZXBvcnQiKQorICAg
ICAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDIKKyAgICAgICAgZm9yIHJlcCBpbiByZXBvcnRz
OgorICAgICAgICAgICAgZGF0YSA9IHB5dGVzdGNvbmZpZy5ob29rLnB5dGVzdF9yZXBvcnRfdG9f
c2VyaWFsaXphYmxlKAorICAgICAgICAgICAgICAgIGNvbmZpZz1weXRlc3Rjb25maWcsIHJlcG9y
dD1yZXAKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCBkYXRhWyIkcmVwb3J0X3R5
cGUiXSA9PSAiQ29sbGVjdFJlcG9ydCIKKyAgICAgICAgICAgIG5ld19yZXAgPSBweXRlc3Rjb25m
aWcuaG9vay5weXRlc3RfcmVwb3J0X2Zyb21fc2VyaWFsaXphYmxlKAorICAgICAgICAgICAgICAg
IGNvbmZpZz1weXRlc3Rjb25maWcsIGRhdGE9ZGF0YQorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgYXNzZXJ0IG5ld19yZXAubm9kZWlkID09IHJlcC5ub2RlaWQKKyAgICAgICAgICAgIGFzc2Vy
dCBuZXdfcmVwLndoZW4gPT0gImNvbGxlY3QiCisgICAgICAgICAgICBhc3NlcnQgbmV3X3JlcC5v
dXRjb21lID09IHJlcC5vdXRjb21lCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisg
ICAgICAgICJob29rX25hbWUiLCBbInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIsICJweXRlc3Rf
Y29sbGVjdHJlcG9ydCJdCisgICAgKQorICAgIGRlZiB0ZXN0X2ludmFsaWRfcmVwb3J0X3R5cGVz
KAorICAgICAgICBzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCBweXRlc3Rjb25maWc6IENvbmZpZywg
aG9va19uYW1lOiBzdHIKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfYSgpOiBwYXNzCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9y
dW4oKQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoaG9va19uYW1lKQorICAg
ICAgICBhc3NlcnQgcmVwb3J0cworICAgICAgICByZXAgPSByZXBvcnRzWzBdCisgICAgICAgIGRh
dGEgPSBweXRlc3Rjb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3RvX3NlcmlhbGl6YWJsZSgKKyAg
ICAgICAgICAgIGNvbmZpZz1weXRlc3Rjb25maWcsIHJlcG9ydD1yZXAKKyAgICAgICAgKQorICAg
ICAgICBkYXRhWyIkcmVwb3J0X3R5cGUiXSA9ICJVbmtub3duIgorICAgICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgXyA9IHB5dGVzdGNvbmZpZy5o
b29rLnB5dGVzdF9yZXBvcnRfZnJvbV9zZXJpYWxpemFibGUoCisgICAgICAgICAgICAgICAgY29u
ZmlnPXB5dGVzdGNvbmZpZywgZGF0YT1kYXRhCisgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVzdWx0bG9nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X3Jlc3VsdGxvZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTczMzg0
ZmZiMzBiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Jlc3Vs
dGxvZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQg
b3MKLQotaW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQotaW1wb3J0IHB5dGVzdAotZnJv
bSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBOb2RlLCBJdGVtLCBGU0NvbGxlY3RvcgotZnJvbSBfcHl0
ZXN0LnJlc3VsdGxvZyBpbXBvcnQgKAotICAgIGdlbmVyaWNfcGF0aCwKLSAgICBSZXN1bHRMb2cs
Ci0gICAgcHl0ZXN0X2NvbmZpZ3VyZSwKLSAgICBweXRlc3RfdW5jb25maWd1cmUsCi0pCi0KLQot
ZGVmIHRlc3RfZ2VuZXJpY19wYXRoKHRlc3RkaXIpOgotICAgIGZyb20gX3B5dGVzdC5tYWluIGlt
cG9ydCBTZXNzaW9uCi0KLSAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKLSAgICBz
ZXNzaW9uID0gU2Vzc2lvbihjb25maWcpCi0gICAgcDEgPSBOb2RlKCJhIiwgY29uZmlnPWNvbmZp
Zywgc2Vzc2lvbj1zZXNzaW9uLCBub2RlaWQ9ImEiKQotICAgICMgYXNzZXJ0IHAxLmZzcGF0aCBp
cyBOb25lCi0gICAgcDIgPSBOb2RlKCJCIiwgcGFyZW50PXAxKQotICAgIHAzID0gTm9kZSgiKCki
LCBwYXJlbnQ9cDIpCi0gICAgaXRlbSA9IEl0ZW0oImMiLCBwYXJlbnQ9cDMpCi0KLSAgICByZXMg
PSBnZW5lcmljX3BhdGgoaXRlbSkKLSAgICBhc3NlcnQgcmVzID09ICJhLkIoKS5jIgotCi0gICAg
cDAgPSBGU0NvbGxlY3RvcigicHJvai90ZXN0IiwgY29uZmlnPWNvbmZpZywgc2Vzc2lvbj1zZXNz
aW9uKQotICAgIHAxID0gRlNDb2xsZWN0b3IoInByb2ovdGVzdC9hIiwgcGFyZW50PXAwKQotICAg
IHAyID0gTm9kZSgiQiIsIHBhcmVudD1wMSkKLSAgICBwMyA9IE5vZGUoIigpIiwgcGFyZW50PXAy
KQotICAgIHA0ID0gTm9kZSgiYyIsIHBhcmVudD1wMykKLSAgICBpdGVtID0gSXRlbSgiWzFdIiwg
cGFyZW50PXA0KQotCi0gICAgcmVzID0gZ2VuZXJpY19wYXRoKGl0ZW0pCi0gICAgYXNzZXJ0IHJl
cyA9PSAidGVzdC9hOkIoKS5jWzFdIgotCi0KLWRlZiB0ZXN0X3dyaXRlX2xvZ19lbnRyeSgpOgot
ICAgIHJlc2xvZyA9IFJlc3VsdExvZyhOb25lLCBOb25lKQotICAgIHJlc2xvZy5sb2dmaWxlID0g
cHkuaW8uVGV4dElPKCkKLSAgICByZXNsb2cud3JpdGVfbG9nX2VudHJ5KCJuYW1lIiwgIi4iLCAi
IikKLSAgICBlbnRyeSA9IHJlc2xvZy5sb2dmaWxlLmdldHZhbHVlKCkKLSAgICBhc3NlcnQgZW50
cnlbLTFdID09ICJcbiIKLSAgICBlbnRyeV9saW5lcyA9IGVudHJ5LnNwbGl0bGluZXMoKQotICAg
IGFzc2VydCBsZW4oZW50cnlfbGluZXMpID09IDEKLSAgICBhc3NlcnQgZW50cnlfbGluZXNbMF0g
PT0gIi4gbmFtZSIKLQotICAgIHJlc2xvZy5sb2dmaWxlID0gcHkuaW8uVGV4dElPKCkKLSAgICBy
ZXNsb2cud3JpdGVfbG9nX2VudHJ5KCJuYW1lIiwgInMiLCAiU2tpcHBlZCIpCi0gICAgZW50cnkg
PSByZXNsb2cubG9nZmlsZS5nZXR2YWx1ZSgpCi0gICAgYXNzZXJ0IGVudHJ5Wy0xXSA9PSAiXG4i
Ci0gICAgZW50cnlfbGluZXMgPSBlbnRyeS5zcGxpdGxpbmVzKCkKLSAgICBhc3NlcnQgbGVuKGVu
dHJ5X2xpbmVzKSA9PSAyCi0gICAgYXNzZXJ0IGVudHJ5X2xpbmVzWzBdID09ICJzIG5hbWUiCi0g
ICAgYXNzZXJ0IGVudHJ5X2xpbmVzWzFdID09ICIgU2tpcHBlZCIKLQotICAgIHJlc2xvZy5sb2dm
aWxlID0gcHkuaW8uVGV4dElPKCkKLSAgICByZXNsb2cud3JpdGVfbG9nX2VudHJ5KCJuYW1lIiwg
InMiLCAiU2tpcHBlZFxuIikKLSAgICBlbnRyeSA9IHJlc2xvZy5sb2dmaWxlLmdldHZhbHVlKCkK
LSAgICBhc3NlcnQgZW50cnlbLTFdID09ICJcbiIKLSAgICBlbnRyeV9saW5lcyA9IGVudHJ5LnNw
bGl0bGluZXMoKQotICAgIGFzc2VydCBsZW4oZW50cnlfbGluZXMpID09IDIKLSAgICBhc3NlcnQg
ZW50cnlfbGluZXNbMF0gPT0gInMgbmFtZSIKLSAgICBhc3NlcnQgZW50cnlfbGluZXNbMV0gPT0g
IiBTa2lwcGVkIgotCi0gICAgcmVzbG9nLmxvZ2ZpbGUgPSBweS5pby5UZXh0SU8oKQotICAgIGxv
bmdyZXByID0gIiB0YjFcbiB0YiAyXG5FIHRiM1xuU29tZSBFcnJvciIKLSAgICByZXNsb2cud3Jp
dGVfbG9nX2VudHJ5KCJuYW1lIiwgIkYiLCBsb25ncmVwcikKLSAgICBlbnRyeSA9IHJlc2xvZy5s
b2dmaWxlLmdldHZhbHVlKCkKLSAgICBhc3NlcnQgZW50cnlbLTFdID09ICJcbiIKLSAgICBlbnRy
eV9saW5lcyA9IGVudHJ5LnNwbGl0bGluZXMoKQotICAgIGFzc2VydCBsZW4oZW50cnlfbGluZXMp
ID09IDUKLSAgICBhc3NlcnQgZW50cnlfbGluZXNbMF0gPT0gIkYgbmFtZSIKLSAgICBhc3NlcnQg
ZW50cnlfbGluZXNbMTpdID09IFsiICIgKyBsaW5lIGZvciBsaW5lIGluIGxvbmdyZXByLnNwbGl0
bGluZXMoKV0KLQotCi1jbGFzcyBUZXN0V2l0aEZ1bmN0aW9uSW50ZWdyYXRpb24ob2JqZWN0KToK
LSAgICAjIFhYWCAoaHBrKSBpIHRoaW5rIHRoYXQgdGhlIHJlc3VsdGxvZyBwbHVnaW4gc2hvdWxk
Ci0gICAgIyBwcm92aWRlIGEgUGFyc2VyIG9iamVjdCBzbyB0aGF0IG9uZSBjYW4gcmVtYWluCi0g
ICAgIyBpZ25vcmFudCByZWdhcmRpbmcgZm9ybWF0dGluZyBkZXRhaWxzLgotICAgIGRlZiBnZXRy
ZXN1bHRsb2coc2VsZiwgdGVzdGRpciwgYXJnKToKLSAgICAgICAgcmVzdWx0bG9nID0gdGVzdGRp
ci50bXBkaXIuam9pbigicmVzdWx0bG9nIikKLSAgICAgICAgdGVzdGRpci5wbHVnaW5zLmFwcGVu
ZCgicmVzdWx0bG9nIikKLSAgICAgICAgYXJncyA9IFsiLS1yZXN1bHRsb2c9JXMiICUgcmVzdWx0
bG9nXSArIFthcmddCi0gICAgICAgIHRlc3RkaXIucnVucHl0ZXN0KCphcmdzKQotICAgICAgICBy
ZXR1cm4gW3ggZm9yIHggaW4gcmVzdWx0bG9nLnJlYWRsaW5lcyhjcj0wKSBpZiB4XQotCi0gICAg
ZGVmIHRlc3RfY29sbGVjdGlvbl9yZXBvcnQoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIG9rID0g
dGVzdGRpci5tYWtlcHlmaWxlKHRlc3RfY29sbGVjdGlvbl9vaz0iIikKLSAgICAgICAgZmFpbCA9
IHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2NvbGxlY3Rpb25fZmFpbD0iWFhYIikKLSAgICAgICAg
bGluZXMgPSBzZWxmLmdldHJlc3VsdGxvZyh0ZXN0ZGlyLCBvaykKLSAgICAgICAgYXNzZXJ0IG5v
dCBsaW5lcwotCi0gICAgICAgIGxpbmVzID0gc2VsZi5nZXRyZXN1bHRsb2codGVzdGRpciwgZmFp
bCkKLSAgICAgICAgYXNzZXJ0IGxpbmVzCi0gICAgICAgIGFzc2VydCBsaW5lc1swXS5zdGFydHN3
aXRoKCJGICIpCi0gICAgICAgIGFzc2VydCBsaW5lc1swXS5lbmRzd2l0aCgidGVzdF9jb2xsZWN0
aW9uX2ZhaWwucHkiKSwgbGluZXNbMF0KLSAgICAgICAgZm9yIHggaW4gbGluZXNbMTpdOgotICAg
ICAgICAgICAgYXNzZXJ0IHguc3RhcnRzd2l0aCgiICIpCi0gICAgICAgIGFzc2VydCAiWFhYIiBp
biAiIi5qb2luKGxpbmVzWzE6XSkKLQotICAgIGRlZiB0ZXN0X2xvZ190ZXN0X291dGNvbWVzKHNl
bGYsIHRlc3RkaXIpOgotICAgICAgICBtb2QgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAg
ICAgICB0ZXN0X21vZD0iIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAg
IGRlZiB0ZXN0X3Bhc3MoKTogcGFzcwotICAgICAgICAgICAgZGVmIHRlc3Rfc2tpcCgpOiBweXRl
c3Quc2tpcCgiaGVsbG8iKQotICAgICAgICAgICAgZGVmIHRlc3RfZmFpbCgpOiByYWlzZSBWYWx1
ZUVycm9yKCJGQUlMIikKLQotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCi0gICAgICAg
ICAgICBkZWYgdGVzdF94ZmFpbCgpOiByYWlzZSBWYWx1ZUVycm9yKCJYRkFJTCIpCi0gICAgICAg
ICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwKLSAgICAgICAgICAgIGRlZiB0ZXN0X3hwYXNzKCk6IHBh
c3MKLQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBsaW5lcyA9IHNlbGYuZ2V0cmVz
dWx0bG9nKHRlc3RkaXIsIG1vZCkKLSAgICAgICAgYXNzZXJ0IGxlbihsaW5lcykgPj0gMwotICAg
ICAgICBhc3NlcnQgbGluZXNbMF0uc3RhcnRzd2l0aCgiLiAiKQotICAgICAgICBhc3NlcnQgbGlu
ZXNbMF0uZW5kc3dpdGgoInRlc3RfcGFzcyIpCi0gICAgICAgIGFzc2VydCBsaW5lc1sxXS5zdGFy
dHN3aXRoKCJzICIpLCBsaW5lc1sxXQotICAgICAgICBhc3NlcnQgbGluZXNbMV0uZW5kc3dpdGgo
InRlc3Rfc2tpcCIpCi0gICAgICAgIGFzc2VydCBsaW5lc1syXS5maW5kKCJoZWxsbyIpICE9IC0x
Ci0KLSAgICAgICAgYXNzZXJ0IGxpbmVzWzNdLnN0YXJ0c3dpdGgoIkYgIikKLSAgICAgICAgYXNz
ZXJ0IGxpbmVzWzNdLmVuZHN3aXRoKCJ0ZXN0X2ZhaWwiKQotICAgICAgICB0YiA9ICIiLmpvaW4o
bGluZXNbNDo4XSkKLSAgICAgICAgYXNzZXJ0IHRiLmZpbmQoJ3JhaXNlIFZhbHVlRXJyb3IoIkZB
SUwiKScpICE9IC0xCi0KLSAgICAgICAgYXNzZXJ0IGxpbmVzWzhdLnN0YXJ0c3dpdGgoInggIikK
LSAgICAgICAgdGIgPSAiIi5qb2luKGxpbmVzWzg6MTRdKQotICAgICAgICBhc3NlcnQgdGIuZmlu
ZCgncmFpc2UgVmFsdWVFcnJvcigiWEZBSUwiKScpICE9IC0xCi0KLSAgICAgICAgYXNzZXJ0IGxp
bmVzWzE0XS5zdGFydHN3aXRoKCJYICIpCi0gICAgICAgIGFzc2VydCBsZW4obGluZXMpID09IDE1
Ci0KLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInN0eWxlIiwgKCJuYXRpdmUiLCAibG9u
ZyIsICJzaG9ydCIpKQotICAgIGRlZiB0ZXN0X2ludGVybmFsX2V4Y2VwdGlvbihzZWxmLCBzdHls
ZSk6Ci0gICAgICAgICMgdGhleSBhcmUgcHJvZHVjZWQgZm9yIGV4YW1wbGUgYnkgYSB0ZWFyZG93
biBmYWlsaW5nCi0gICAgICAgICMgYXQgdGhlIGVuZCBvZiB0aGUgcnVuIG9yIGEgZmFpbGluZyBo
b29rIGludm9jYXRpb24KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cgotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0
ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAgICAgICByZXNsb2cgPSBSZXN1bHRMb2coTm9u
ZSwgcHkuaW8uVGV4dElPKCkpCi0gICAgICAgIHJlc2xvZy5weXRlc3RfaW50ZXJuYWxlcnJvcihl
eGNpbmZvLmdldHJlcHIoc3R5bGU9c3R5bGUpKQotICAgICAgICBlbnRyeSA9IHJlc2xvZy5sb2dm
aWxlLmdldHZhbHVlKCkKLSAgICAgICAgZW50cnlfbGluZXMgPSBlbnRyeS5zcGxpdGxpbmVzKCkK
LQotICAgICAgICBhc3NlcnQgZW50cnlfbGluZXNbMF0uc3RhcnRzd2l0aCgiISAiKQotICAgICAg
ICBpZiBzdHlsZSAhPSAibmF0aXZlIjoKLSAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmJhc2Vu
YW1lKF9fZmlsZV9fKVs6LTldIGluIGVudHJ5X2xpbmVzWzBdICAjIC5weWMvY2xhc3MKLSAgICAg
ICAgYXNzZXJ0IGVudHJ5X2xpbmVzWy0xXVswXSA9PSAiICIKLSAgICAgICAgYXNzZXJ0ICJWYWx1
ZUVycm9yIiBpbiBlbnRyeQotCi0KLWRlZiB0ZXN0X2dlbmVyaWModGVzdGRpciwgTGluZU1hdGNo
ZXIpOgotICAgIHRlc3RkaXIucGx1Z2lucy5hcHBlbmQoInJlc3VsdGxvZyIpCi0gICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAg
ICBkZWYgdGVzdF9wYXNzKCk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGRlZiB0ZXN0X2Zh
aWwoKToKLSAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgIGRlZiB0ZXN0X3NraXAoKToKLSAg
ICAgICAgICAgIHB5dGVzdC5za2lwKCIiKQotICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwKLSAg
ICAgICAgZGVmIHRlc3RfeGZhaWwoKToKLSAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgIEBw
eXRlc3QubWFyay54ZmFpbChydW49RmFsc2UpCi0gICAgICAgIGRlZiB0ZXN0X3hmYWlsX25vcnVu
KCk6Ci0gICAgICAgICAgICBhc3NlcnQgMAotICAgICIiIgotICAgICkKLSAgICB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLS1yZXN1bHRsb2c9cmVzdWx0LmxvZyIpCi0gICAgbGluZXMgPSB0ZXN0ZGlyLnRt
cGRpci5qb2luKCJyZXN1bHQubG9nIikucmVhZGxpbmVzKGNyPTApCi0gICAgTGluZU1hdGNoZXIo
bGluZXMpLmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsKLSAgICAgICAgICAgICIuICo6dGVzdF9w
YXNzIiwKLSAgICAgICAgICAgICJGICo6dGVzdF9mYWlsIiwKLSAgICAgICAgICAgICJzICo6dGVz
dF9za2lwIiwKLSAgICAgICAgICAgICJ4ICo6dGVzdF94ZmFpbCIsCi0gICAgICAgICAgICAieCAq
OnRlc3RfeGZhaWxfbm9ydW4iLAotICAgICAgICBdCi0gICAgKQotCi0KLWRlZiB0ZXN0X21ha2Vk
aXJfZm9yX3Jlc3VsdGxvZyh0ZXN0ZGlyLCBMaW5lTWF0Y2hlcik6Ci0gICAgIiIiLS1yZXN1bHRs
b2cgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGRpcmVjdG9yaWVzIGZvciB0aGUgbG9nIGZp
bGUiIiIKLSAgICB0ZXN0ZGlyLnBsdWdpbnMuYXBwZW5kKCJyZXN1bHRsb2ciKQotICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAg
ICAgZGVmIHRlc3RfcGFzcygpOgotICAgICAgICAgICAgcGFzcwotICAgICIiIgotICAgICkKLSAg
ICB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1yZXN1bHRsb2c9cGF0aC90by9yZXN1bHQubG9nIikKLSAg
ICBsaW5lcyA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInBhdGgvdG8vcmVzdWx0LmxvZyIpLnJlYWRs
aW5lcyhjcj0wKQotICAgIExpbmVNYXRjaGVyKGxpbmVzKS5mbm1hdGNoX2xpbmVzKFsiLiAqOnRl
c3RfcGFzcyJdKQotCi0KLWRlZiB0ZXN0X25vX3Jlc3VsdGxvZ19vbl9zbGF2ZXModGVzdGRpcik6
Ci0gICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygiLXAiLCAicmVzdWx0bG9nIiwgIi0t
cmVzdWx0bG9nPXJlc3VsdGxvZyIpCi0KLSAgICBhc3NlcnQgbm90IGhhc2F0dHIoY29uZmlnLCAi
X3Jlc3VsdGxvZyIpCi0gICAgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpCi0gICAgYXNzZXJ0IGhh
c2F0dHIoY29uZmlnLCAiX3Jlc3VsdGxvZyIpCi0gICAgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZp
ZykKLSAgICBhc3NlcnQgbm90IGhhc2F0dHIoY29uZmlnLCAiX3Jlc3VsdGxvZyIpCi0KLSAgICBj
b25maWcuc2xhdmVpbnB1dCA9IHt9Ci0gICAgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpCi0gICAg
YXNzZXJ0IG5vdCBoYXNhdHRyKGNvbmZpZywgIl9yZXN1bHRsb2ciKQotICAgIHB5dGVzdF91bmNv
bmZpZ3VyZShjb25maWcpCi0gICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGNvbmZpZywgIl9yZXN1bHRs
b2ciKQotCi0KLWRlZiB0ZXN0X2ZhaWx1cmVfaXNzdWUzODAodGVzdGRpcik6Ci0gICAgdGVzdGRp
ci5tYWtlY29uZnRlc3QoCi0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAg
ICAgIGNsYXNzIE15Q29sbGVjdG9yKHB5dGVzdC5GaWxlKToKLSAgICAgICAgICAgIGRlZiBjb2xs
ZWN0KHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQotICAgICAgICAg
ICAgZGVmIHJlcHJfZmFpbHVyZShzZWxmLCBleGNpbmZvKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gInNvbWVzdHJpbmciCi0gICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBh
cmVudCk6Ci0gICAgICAgICAgICByZXR1cm4gTXlDb2xsZWN0b3IocGFyZW50PXBhcmVudCwgZnNw
YXRoPXBhdGgpCi0gICAgIiIiCi0gICAgKQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAg
ICAgIiIiCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAi
IiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tcmVzdWx0bG9nPWxv
ZyIpCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X3J1bm5lci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXIu
cHkKaW5kZXggZjU0MzBhOTBkYTUzLi5iOWQyMjM3MGE3YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X3J1bm5lci5weQpAQCAtMSwxOSArMSwyOCBAQAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVu
Y3Rpb24KLQotaW1wb3J0IF9weXRlc3QuX2NvZGUKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgb3MK
LWltcG9ydCBweQotaW1wb3J0IHB5dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCi1mcm9t
IF9weXRlc3QgaW1wb3J0IHJ1bm5lciwgbWFpbiwgb3V0Y29tZXMKK2Zyb20gdHlwaW5nIGltcG9y
dCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxl
CiAKK2ltcG9ydCBweQorCitpbXBvcnQgX3B5dGVzdC5fY29kZQoraW1wb3J0IHB5dGVzdAorZnJv
bSBfcHl0ZXN0IGltcG9ydCBvdXRjb21lcworZnJvbSBfcHl0ZXN0IGltcG9ydCByZXBvcnRzCitm
cm9tIF9weXRlc3QgaW1wb3J0IHJ1bm5lcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQ
RV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5
dGVzdC5vdXRjb21lcyBpbXBvcnQgT3V0Y29tZUV4Y2VwdGlvbgogCi1jbGFzcyBUZXN0U2V0dXBT
dGF0ZShvYmplY3QpOgoraWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VHlwZQogCi0gICAgZGVmIHRlc3Rfc2V0dXAoc2VsZiwgdGVzdGRpcik6CisKK2NsYXNzIFRlc3RT
ZXR1cFN0YXRlOgorICAgIGRlZiB0ZXN0X3NldHVwKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAg
ICAgICAgIHNzID0gcnVubmVyLlNldHVwU3RhdGUoKQogICAgICAgICBpdGVtID0gdGVzdGRpci5n
ZXRpdGVtKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQogICAgICAgICB2YWx1ZXMgPSBbMV0KQEAg
LTIzLDE0ICszMiwxNCBAQCBjbGFzcyBUZXN0U2V0dXBTdGF0ZShvYmplY3QpOgogICAgICAgICBz
cy5fcG9wX2FuZF90ZWFyZG93bigpCiAgICAgICAgIGFzc2VydCBub3QgdmFsdWVzCiAKLSAgICBk
ZWYgdGVzdF90ZWFyZG93bl9leGFjdF9zdGFja19lbXB0eShzZWxmLCB0ZXN0ZGlyKToKKyAgICBk
ZWYgdGVzdF90ZWFyZG93bl9leGFjdF9zdGFja19lbXB0eShzZWxmLCB0ZXN0ZGlyKSAtPiBOb25l
OgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3Mi
KQogICAgICAgICBzcyA9IHJ1bm5lci5TZXR1cFN0YXRlKCkKICAgICAgICAgc3MudGVhcmRvd25f
ZXhhY3QoaXRlbSwgTm9uZSkKICAgICAgICAgc3MudGVhcmRvd25fZXhhY3QoaXRlbSwgTm9uZSkK
ICAgICAgICAgc3MudGVhcmRvd25fZXhhY3QoaXRlbSwgTm9uZSkKIAotICAgIGRlZiB0ZXN0X3Nl
dHVwX2ZhaWxzX2FuZF9mYWlsdXJlX2lzX2NhY2hlZChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYg
dGVzdF9zZXR1cF9mYWlsc19hbmRfZmFpbHVyZV9pc19jYWNoZWQoc2VsZiwgdGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIiIgog
ICAgICAgICAgICAgZGVmIHNldHVwX21vZHVsZShtb2QpOgpAQCAtNDIsNyArNTEsNyBAQCBjbGFz
cyBUZXN0U2V0dXBTdGF0ZShvYmplY3QpOgogICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJy
b3IsIGxhbWJkYTogc3MucHJlcGFyZShpdGVtKSkKICAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1
ZUVycm9yLCBsYW1iZGE6IHNzLnByZXBhcmUoaXRlbSkpCiAKLSAgICBkZWYgdGVzdF90ZWFyZG93
bl9tdWx0aXBsZV9vbmVfZmFpbHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfdGVhcmRv
d25fbXVsdGlwbGVfb25lX2ZhaWxzKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHIg
PSBbXQogCiAgICAgICAgIGRlZiBmaW4xKCk6CkBAIC02NCw3ICs3Myw3IEBAIGNsYXNzIFRlc3RT
ZXR1cFN0YXRlKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBlcnIudmFsdWUuYXJncyA9PSAoIm9v
cHMiLCkKICAgICAgICAgYXNzZXJ0IHIgPT0gWyJmaW4zIiwgImZpbjEiXQogCi0gICAgZGVmIHRl
c3RfdGVhcmRvd25fbXVsdGlwbGVfZmFpbChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF90
ZWFyZG93bl9tdWx0aXBsZV9mYWlsKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgICMg
RW5zdXJlIHRoZSBmaXJzdCBleGNlcHRpb24gaXMgdGhlIG9uZSB3aGljaCBpcyByZS1yYWlzZWQu
CiAgICAgICAgICMgSWRlYWxseSBib3RoIHdvdWxkIGJlIHJlcG9ydGVkIGhvd2V2ZXIuCiAgICAg
ICAgIGRlZiBmaW4xKCk6CkBAIC04MSw3ICs5MCw3IEBAIGNsYXNzIFRlc3RTZXR1cFN0YXRlKG9i
amVjdCk6CiAgICAgICAgICAgICBzcy5fY2FsbGZpbmFsaXplcnMoaXRlbSkKICAgICAgICAgYXNz
ZXJ0IGVyci52YWx1ZS5hcmdzID09ICgib29wczIiLCkKIAotICAgIGRlZiB0ZXN0X3RlYXJkb3du
X211bHRpcGxlX3Njb3Blc19vbmVfZmFpbHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rf
dGVhcmRvd25fbXVsdGlwbGVfc2NvcGVzX29uZV9mYWlscyhzZWxmLCB0ZXN0ZGlyKSAtPiBOb25l
OgogICAgICAgICBtb2R1bGVfdGVhcmRvd24gPSBbXQogCiAgICAgICAgIGRlZiBmaW5fZnVuYygp
OgpAQCAtMTAwLDkgKzEwOSw4IEBAIGNsYXNzIFRlc3RTZXR1cFN0YXRlKG9iamVjdCk6CiAgICAg
ICAgIGFzc2VydCBtb2R1bGVfdGVhcmRvd24KIAogCi1jbGFzcyBCYXNlRnVuY3Rpb25hbFRlc3Rz
KG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9wYXNzZnVuY3Rpb24oc2VsZiwgdGVzdGRpcik6Citj
bGFzcyBCYXNlRnVuY3Rpb25hbFRlc3RzOgorICAgIGRlZiB0ZXN0X3Bhc3NmdW5jdGlvbihzZWxm
LCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICByZXBvcnRzID0gdGVzdGRpci5ydW5pdGVtKAog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CkBAIC0xMTUsNyAr
MTIzLDcgQEAgY2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgcmVwLm91dGNvbWUgPT0gInBhc3NlZCIKICAgICAgICAgYXNzZXJ0IG5vdCByZXAubG9uZ3Jl
cHIKIAotICAgIGRlZiB0ZXN0X2ZhaWxmdW5jdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYg
dGVzdF9mYWlsZnVuY3Rpb24oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcmVwb3J0
cyA9IHRlc3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHRl
c3RfZnVuYygpOgpAQCAtMTMwLDcgKzEzOCw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHJlcC5vdXRjb21lID09ICJmYWlsZWQiCiAgICAgICAg
ICMgYXNzZXJ0IGlzaW5zdGFuY2UocmVwLmxvbmdyZXByLCBSZXByRXhjZXB0aW9uSW5mbykKIAot
ICAgIGRlZiB0ZXN0X3NraXBmdW5jdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9z
a2lwZnVuY3Rpb24oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcmVwb3J0cyA9IHRl
c3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtMTUwLDcgKzE1OCw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToK
ICAgICAgICAgIyBhc3NlcnQgcmVwLnNraXBwZWQubG9jYXRpb24ucGF0aAogICAgICAgICAjIGFz
c2VydCBub3QgcmVwLnNraXBwZWQuZmFpbHVyZXJlcHIKIAotICAgIGRlZiB0ZXN0X3NraXBfaW5f
c2V0dXBfZnVuY3Rpb24oc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfc2tpcF9pbl9zZXR1
cF9mdW5jdGlvbihzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICByZXBvcnRzID0gdGVz
dGRpci5ydW5pdGVtKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
CkBAIC0xNzEsNyArMTc5LDcgQEAgY2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDIKICAgICAgICAgYXNzZXJ0IHJlcG9ydHNb
MV0ucGFzc2VkICAjIHRlYXJkb3duCiAKLSAgICBkZWYgdGVzdF9mYWlsdXJlX2luX3NldHVwX2Z1
bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2ZhaWx1cmVfaW5fc2V0dXBfZnVu
Y3Rpb24oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcmVwb3J0cyA9IHRlc3RkaXIu
cnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAt
MTg4LDcgKzE5Niw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAg
ICAgYXNzZXJ0IHJlcC53aGVuID09ICJzZXR1cCIKICAgICAgICAgYXNzZXJ0IGxlbihyZXBvcnRz
KSA9PSAyCiAKLSAgICBkZWYgdGVzdF9mYWlsdXJlX2luX3RlYXJkb3duX2Z1bmN0aW9uKHNlbGYs
IHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2ZhaWx1cmVfaW5fdGVhcmRvd25fZnVuY3Rpb24oc2Vs
ZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcmVwb3J0cyA9IHRlc3RkaXIucnVuaXRlbSgK
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjA4LDcgKzIx
Niw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAgICAgIyBhc3Nl
cnQgcmVwLmxvbmdyZXByLnJlcHJjcmFzaC5saW5lbm8gPT0gMwogICAgICAgICAjIGFzc2VydCBy
ZXAubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5yZXByZW50cmllcwogCi0gICAgZGVmIHRlc3RfY3Vz
dG9tX2ZhaWx1cmVfcmVwcihzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9jdXN0b21fZmFp
bHVyZV9yZXByKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgIGNvbmZ0ZXN0PSIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtMjMzLDcgKzI0MSw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToK
ICAgICAgICAgIyBhc3NlcnQgcmVwLmZhaWxlZC53aGVyZS5wYXRoLmJhc2VuYW1lID09ICJ0ZXN0
X2Z1bmMucHkiCiAgICAgICAgICMgYXNzZXJ0IHJlcC5mYWlsZWQuZmFpbHVyZXJlcHIgPT0gImhl
bGxvIgogCi0gICAgZGVmIHRlc3RfdGVhcmRvd25fZmluYWxfcmV0dXJuY29kZShzZWxmLCB0ZXN0
ZGlyKToKKyAgICBkZWYgdGVzdF90ZWFyZG93bl9maW5hbF9yZXR1cm5jb2RlKHNlbGYsIHRlc3Rk
aXIpIC0+IE5vbmU6CiAgICAgICAgIHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJjZSgKICAg
ICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgpAQCAtMjQ0LDcgKzI1
Miw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAgICAgKQogICAg
ICAgICBhc3NlcnQgcmVjLnJldCA9PSAxCiAKLSAgICBkZWYgdGVzdF9sb2dzdGFydF9sb2dmaW5p
c2hfaG9va3Moc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfbG9nc3RhcnRfbG9nZmluaXNo
X2hvb2tzKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bnNvdXJjZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtMjUzLDE1ICsyNjEsMTUgQEAgY2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3Qp
OgogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXBzID0gcmVjLmdldGNhbGxzKCJw
eXRlc3RfcnVudGVzdF9sb2dzdGFydCBweXRlc3RfcnVudGVzdF9sb2dmaW5pc2giKQotICAgICAg
ICBhc3NlcnQgKAotICAgICAgICAgICAgW3guX25hbWUgZm9yIHggaW4gcmVwc10KLSAgICAgICAg
ICAgID09IFsicHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQiLCAicHl0ZXN0X3J1bnRlc3RfbG9nZmlu
aXNoIl0KLSAgICAgICAgKQorICAgICAgICBhc3NlcnQgW3guX25hbWUgZm9yIHggaW4gcmVwc10g
PT0gWworICAgICAgICAgICAgInB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0IiwKKyAgICAgICAgICAg
ICJweXRlc3RfcnVudGVzdF9sb2dmaW5pc2giLAorICAgICAgICBdCiAgICAgICAgIGZvciByZXAg
aW4gcmVwczoKICAgICAgICAgICAgIGFzc2VydCByZXAubm9kZWlkID09ICJ0ZXN0X2xvZ3N0YXJ0
X2xvZ2ZpbmlzaF9ob29rcy5weTo6dGVzdF9mdW5jIgogICAgICAgICAgICAgYXNzZXJ0IHJlcC5s
b2NhdGlvbiA9PSAoInRlc3RfbG9nc3RhcnRfbG9nZmluaXNoX2hvb2tzLnB5IiwgMSwgInRlc3Rf
ZnVuYyIpCiAKLSAgICBkZWYgdGVzdF9leGFjdF90ZWFyZG93bl9pc3N1ZTkwKHNlbGYsIHRlc3Rk
aXIpOgorICAgIGRlZiB0ZXN0X2V4YWN0X3RlYXJkb3duX2lzc3VlOTAoc2VsZiwgdGVzdGRpcikg
LT4gTm9uZToKICAgICAgICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKAogICAgICAg
ICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0zMDEsOCArMzA5LDggQEAg
Y2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3QpOgogICAgICAgICBhc3NlcnQgcmVwc1s1
XS5ub2RlaWQuZW5kc3dpdGgoInRlc3RfZnVuYyIpCiAgICAgICAgIGFzc2VydCByZXBzWzVdLmZh
aWxlZAogCi0gICAgZGVmIHRlc3RfZXhhY3RfdGVhcmRvd25faXNzdWUxMjA2KHNlbGYsIHRlc3Rk
aXIpOgotICAgICAgICAiIiJpc3N1ZSBzaGFkb3dpbmcgZXJyb3Igd2l0aCB3cm9uZyBudW1iZXIg
b2YgYXJndW1lbnRzIG9uIHRlYXJkb3duX21ldGhvZC4iIiIKKyAgICBkZWYgdGVzdF9leGFjdF90
ZWFyZG93bl9pc3N1ZTEyMDYoc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiSXNz
dWUgc2hhZG93aW5nIGVycm9yIHdpdGggd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBvbiB0ZWFy
ZG93bl9tZXRob2QuIiIiCiAgICAgICAgIHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJjZSgK
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMzM3LDcgKzM0
NSw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAgICAgICAgICJU
eXBlRXJyb3I6IHRlYXJkb3duX21ldGhvZCgpIHRha2VzIGV4YWN0bHkgNCBhcmd1bWVudHMgKDIg
Z2l2ZW4pIiwKICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9pbl9zZXR1cF9mdW5j
dGlvbl9pZ25vcmVzX2N1c3RvbV9yZXByKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2Zh
aWx1cmVfaW5fc2V0dXBfZnVuY3Rpb25faWdub3Jlc19jdXN0b21fcmVwcihzZWxmLCB0ZXN0ZGly
KSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICBjb25m
dGVzdD0iIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTM2NSw3ICszNzMsNyBAQCBj
bGFzcyBCYXNlRnVuY3Rpb25hbFRlc3RzKG9iamVjdCk6CiAgICAgICAgICMgYXNzZXJ0IHJlcC5v
dXRjb21lLndoZXJlLnBhdGguYmFzZW5hbWUgPT0gInRlc3RfZnVuYy5weSIKICAgICAgICAgIyBh
c3NlcnQgaW5zdGFuYWNlKHJlcC5mYWlsZWQuZmFpbHVyZXJlcHIsIFB5dGhvbkZhaWx1cmVSZXBy
KQogCi0gICAgZGVmIHRlc3Rfc3lzdGVtZXhpdF9kb2VzX25vdF9iYWlsX291dChzZWxmLCB0ZXN0
ZGlyKToKKyAgICBkZWYgdGVzdF9zeXN0ZW1leGl0X2RvZXNfbm90X2JhaWxfb3V0KHNlbGYsIHRl
c3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlcG9ydHMgPSB0ZXN0
ZGlyLnJ1bml0ZW0oCiAgICAgICAgICAgICAgICAgIiIiCkBAIC0zNzQsMTIgKzM4MiwxMiBAQCBj
bGFzcyBCYXNlRnVuY3Rpb25hbFRlc3RzKG9iamVjdCk6CiAgICAgICAgICAgICAiIiIKICAgICAg
ICAgICAgICkKICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICBweXRlc3Qu
ZmFpbCgicnVubmVyIGRpZCBub3QgY2F0Y2ggU3lzdGVtRXhpdCIpCisgICAgICAgICAgICBhc3Nl
cnQgRmFsc2UsICJydW5uZXIgZGlkIG5vdCBjYXRjaCBTeXN0ZW1FeGl0IgogICAgICAgICByZXAg
PSByZXBvcnRzWzFdCiAgICAgICAgIGFzc2VydCByZXAuZmFpbGVkCiAgICAgICAgIGFzc2VydCBy
ZXAud2hlbiA9PSAiY2FsbCIKIAotICAgIGRlZiB0ZXN0X2V4aXRfcHJvcGFnYXRlcyhzZWxmLCB0
ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9leGl0X3Byb3BhZ2F0ZXMoc2VsZiwgdGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdGRpci5ydW5pdGVtKAogICAgICAg
ICAgICAgICAgICIiIgpAQCAtMzkxLDE5ICszOTksMTcgQEAgY2xhc3MgQmFzZUZ1bmN0aW9uYWxU
ZXN0cyhvYmplY3QpOgogICAgICAgICBleGNlcHQgcHl0ZXN0LmV4aXQuRXhjZXB0aW9uOgogICAg
ICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHl0ZXN0LmZhaWwoImRp
ZCBub3QgcmFpc2UiKQorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiZGlkIG5vdCByYWlzZSIK
IAogCiBjbGFzcyBUZXN0RXhlY3V0aW9uTm9uRm9ya2VkKEJhc2VGdW5jdGlvbmFsVGVzdHMpOgot
CiAgICAgZGVmIGdldHJ1bm5lcihzZWxmKToKLQogICAgICAgICBkZWYgZihpdGVtKToKICAgICAg
ICAgICAgIHJldHVybiBydW5uZXIucnVudGVzdHByb3RvY29sKGl0ZW0sIGxvZz1GYWxzZSkKIAog
ICAgICAgICByZXR1cm4gZgogCi0gICAgZGVmIHRlc3Rfa2V5Ym9hcmRpbnRlcnJ1cHRfcHJvcGFn
YXRlcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9rZXlib2FyZGludGVycnVwdF9wcm9w
YWdhdGVzKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IHRlc3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICAgICAiIiIKQEAgLTQxNCwzMyArNDIwLDEx
IEBAIGNsYXNzIFRlc3RFeGVjdXRpb25Ob25Gb3JrZWQoQmFzZUZ1bmN0aW9uYWxUZXN0cyk6CiAg
ICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgIHBhc3MKICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHB5dGVzdC5mYWlsKCJkaWQgbm90IHJhaXNlIikKLQorICAg
ICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiZGlkIG5vdCByYWlzZSIKIAotY2xhc3MgVGVzdEV4ZWN1
dGlvbkZvcmtlZChCYXNlRnVuY3Rpb25hbFRlc3RzKToKLSAgICBweXRlc3RtYXJrID0gcHl0ZXN0
Lm1hcmsuc2tpcGlmKCJub3QgaGFzYXR0cihvcywgJ2ZvcmsnKSIpCiAKLSAgICBkZWYgZ2V0cnVu
bmVyKHNlbGYpOgotICAgICAgICAjIFhYWCByZS1hcnJhbmdlIHRoaXMgdGVzdCB0byBsaXZlIGlu
IHB5dGVzdC14ZGlzdAotICAgICAgICBib3hlZCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoInhkaXN0
LmJveGVkIikKLSAgICAgICAgcmV0dXJuIGJveGVkLmZvcmtlZF9ydW5fcmVwb3J0Ci0KLSAgICBk
ZWYgdGVzdF9zdWljaWRlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICByZXBvcnRzID0gdGVzdGRp
ci5ydW5pdGVtKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6
Ci0gICAgICAgICAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgICAgICAgICAgb3Mua2lsbChvcy5n
ZXRwaWQoKSwgMTUpCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlcCA9IHJlcG9y
dHNbMF0KLSAgICAgICAgYXNzZXJ0IHJlcC5mYWlsZWQKLSAgICAgICAgYXNzZXJ0IHJlcC53aGVu
ID09ICI/Pz8iCi0KLQotY2xhc3MgVGVzdFNlc3Npb25SZXBvcnRzKG9iamVjdCk6Ci0KLSAgICBk
ZWYgdGVzdF9jb2xsZWN0X3Jlc3VsdChzZWxmLCB0ZXN0ZGlyKToKK2NsYXNzIFRlc3RTZXNzaW9u
UmVwb3J0czoKKyAgICBkZWYgdGVzdF9jb2xsZWN0X3Jlc3VsdChzZWxmLCB0ZXN0ZGlyKSAtPiBO
b25lOgogICAgICAgICBjb2wgPSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgKICAgICAgICAgICAgICIi
IgogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzEoKToKQEAgLTQ2NCwzNiArNDQ4LDQ0IEBAIGNs
YXNzIFRlc3RTZXNzaW9uUmVwb3J0cyhvYmplY3QpOgogCiAKIHJlcG9ydHR5cGVzID0gWwotICAg
IHJ1bm5lci5CYXNlUmVwb3J0LAotICAgIHJ1bm5lci5UZXN0UmVwb3J0LAotICAgIHJ1bm5lci5U
ZWFyZG93bkVycm9yUmVwb3J0LAotICAgIHJ1bm5lci5Db2xsZWN0UmVwb3J0LAotXQorICAgIHJl
cG9ydHMuQmFzZVJlcG9ydCwKKyAgICByZXBvcnRzLlRlc3RSZXBvcnQsCisgICAgcmVwb3J0cy5D
b2xsZWN0UmVwb3J0LAorXSAgIyB0eXBlOiBMaXN0W1R5cGVbcmVwb3J0cy5CYXNlUmVwb3J0XV0K
IAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCiAgICAgInJlcG9ydHR5cGUiLCByZXBvcnR0
eXBlcywgaWRzPVt4Ll9fbmFtZV9fIGZvciB4IGluIHJlcG9ydHR5cGVzXQogKQotZGVmIHRlc3Rf
cmVwb3J0X2V4dHJhX3BhcmFtZXRlcnMocmVwb3J0dHlwZSk6Ci0gICAgaWYgaGFzYXR0cihpbnNw
ZWN0LCAic2lnbmF0dXJlIik6Ci0gICAgICAgIGFyZ3MgPSBsaXN0KGluc3BlY3Quc2lnbmF0dXJl
KHJlcG9ydHR5cGUuX19pbml0X18pLnBhcmFtZXRlcnMua2V5cygpKVsxOl0KLSAgICBlbHNlOgot
ICAgICAgICBhcmdzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJlcG9ydHR5cGUuX19pbml0X18pWzBd
WzE6XQotICAgIGJhc2VrdyA9IGRpY3QuZnJvbWtleXMoYXJncywgW10pCitkZWYgdGVzdF9yZXBv
cnRfZXh0cmFfcGFyYW1ldGVycyhyZXBvcnR0eXBlOiAiVHlwZVtyZXBvcnRzLkJhc2VSZXBvcnRd
IikgLT4gTm9uZToKKyAgICBhcmdzID0gbGlzdChpbnNwZWN0LnNpZ25hdHVyZShyZXBvcnR0eXBl
Ll9faW5pdF9fKS5wYXJhbWV0ZXJzLmtleXMoKSlbMTpdCisgICAgYmFzZWt3ID0gZGljdC5mcm9t
a2V5cyhhcmdzLCBbXSkgICMgdHlwZTogRGljdFtzdHIsIExpc3Rbb2JqZWN0XV0KICAgICByZXBv
cnQgPSByZXBvcnR0eXBlKG5ld3RoaW5nPTEsICoqYmFzZWt3KQogICAgIGFzc2VydCByZXBvcnQu
bmV3dGhpbmcgPT0gMQogCiAKLWRlZiB0ZXN0X2NhbGxpbmZvKCk6Ci0gICAgY2kgPSBydW5uZXIu
Q2FsbEluZm8obGFtYmRhOiAwLCAiMTIzIikKLSAgICBhc3NlcnQgY2kud2hlbiA9PSAiMTIzIgor
ZGVmIHRlc3RfY2FsbGluZm8oKSAtPiBOb25lOgorICAgIGNpID0gcnVubmVyLkNhbGxJbmZvLmZy
b21fY2FsbChsYW1iZGE6IDAsICJjb2xsZWN0IikKKyAgICBhc3NlcnQgY2kud2hlbiA9PSAiY29s
bGVjdCIKICAgICBhc3NlcnQgY2kucmVzdWx0ID09IDAKICAgICBhc3NlcnQgInJlc3VsdCIgaW4g
cmVwcihjaSkKLSAgICBjaSA9IHJ1bm5lci5DYWxsSW5mbyhsYW1iZGE6IDAgLyAwLCAiMTIzIikK
LSAgICBhc3NlcnQgY2kud2hlbiA9PSAiMTIzIgotICAgIGFzc2VydCBub3QgaGFzYXR0cihjaSwg
InJlc3VsdCIpCi0gICAgYXNzZXJ0IGNpLmV4Y2luZm8KLSAgICBhc3NlcnQgImV4YyIgaW4gcmVw
cihjaSkKKyAgICBhc3NlcnQgcmVwcihjaSkgPT0gIjxDYWxsSW5mbyB3aGVuPSdjb2xsZWN0JyBy
ZXN1bHQ6IDA+IgorICAgIGFzc2VydCBzdHIoY2kpID09ICI8Q2FsbEluZm8gd2hlbj0nY29sbGVj
dCcgcmVzdWx0OiAwPiIKKworICAgIGNpMiA9IHJ1bm5lci5DYWxsSW5mby5mcm9tX2NhbGwobGFt
YmRhOiAwIC8gMCwgImNvbGxlY3QiKQorICAgIGFzc2VydCBjaTIud2hlbiA9PSAiY29sbGVjdCIK
KyAgICBhc3NlcnQgbm90IGhhc2F0dHIoY2kyLCAicmVzdWx0IikKKyAgICBhc3NlcnQgcmVwcihj
aTIpID09ICI8Q2FsbEluZm8gd2hlbj0nY29sbGVjdCcgZXhjaW5mbz17IXJ9PiIuZm9ybWF0KGNp
Mi5leGNpbmZvKQorICAgIGFzc2VydCBzdHIoY2kyKSA9PSByZXByKGNpMikKKyAgICBhc3NlcnQg
Y2kyLmV4Y2luZm8KKworICAgICMgTmV3bGluZXMgYXJlIGVzY2FwZWQuCisgICAgZGVmIHJhaXNl
X2Fzc2VydGlvbigpOgorICAgICAgICBhc3NlcnQgMCwgImFzc2VydF9tc2ciCisKKyAgICBjaTMg
PSBydW5uZXIuQ2FsbEluZm8uZnJvbV9jYWxsKHJhaXNlX2Fzc2VydGlvbiwgImNhbGwiKQorICAg
IGFzc2VydCByZXByKGNpMykgPT0gIjxDYWxsSW5mbyB3aGVuPSdjYWxsJyBleGNpbmZvPXshcn0+
Ii5mb3JtYXQoY2kzLmV4Y2luZm8pCisgICAgYXNzZXJ0ICJcbiIgbm90IGluIHJlcHIoY2kzKQog
CiAKICMgZGVzaWduIHF1ZXN0aW9uOiBkbyB3ZSB3YW50IGdlbmVyYWwgaG9va3MgaW4gcHl0aG9u
IGZpbGVzPwpAQCAtNTAxLDcgKzQ5Myw3IEBAIGRlZiB0ZXN0X2NhbGxpbmZvKCk6CiAKIAogQHB5
dGVzdC5tYXJrLnhmYWlsCi1kZWYgdGVzdF9ydW50ZXN0X2luX21vZHVsZV9vcmRlcmluZyh0ZXN0
ZGlyKToKK2RlZiB0ZXN0X3J1bnRlc3RfaW5fbW9kdWxlX29yZGVyaW5nKHRlc3RkaXIpIC0+IE5v
bmU6CiAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBp
bXBvcnQgcHl0ZXN0CkBAIC01MTQsOSArNTA2LDEwIEBAIGRlZiB0ZXN0X3J1bnRlc3RfaW5fbW9k
dWxlX29yZGVyaW5nKHRlc3RkaXIpOgogICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAg
ICAgICAgICBkZWYgbXlsaXN0KHNlbGYsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgIHJldHVy
biByZXF1ZXN0LmZ1bmN0aW9uLm15bGlzdAotICAgICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0
X2NhbGwoc2VsZiwgaXRlbSwgX19tdWx0aWNhbGxfXyk6CisgICAgICAgICAgICBAcHl0ZXN0Lmhv
b2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rf
Y2FsbChzZWxmLCBpdGVtKToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ICAgIF9fbXVsdGljYWxsX18uZXhlY3V0ZSgpCisgICAgICAgICAgICAgICAgICAgICh5aWVsZCku
Z2V0X3Jlc3VsdCgpCiAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAg
ICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvMShzZWxmLCBteWxp
c3QpOgpAQCAtNTMyLDM3ICs1MjUsMzMgQEAgZGVmIHRlc3RfcnVudGVzdF9pbl9tb2R1bGVfb3Jk
ZXJpbmcodGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFz
c2VkKiJdKQogCiAKLWRlZiB0ZXN0X291dGNvbWVleGNlcHRpb25fZXhjZXB0aW9uYXR0cmlidXRl
cygpOgorZGVmIHRlc3Rfb3V0Y29tZWV4Y2VwdGlvbl9leGNlcHRpb25hdHRyaWJ1dGVzKCkgLT4g
Tm9uZToKICAgICBvdXRjb21lID0gb3V0Y29tZXMuT3V0Y29tZUV4Y2VwdGlvbigidGVzdCIpCiAg
ICAgYXNzZXJ0IG91dGNvbWUuYXJnc1swXSA9PSBvdXRjb21lLm1zZwogCiAKLWRlZiB0ZXN0X291
dGNvbWVleGNlcHRpb25fcGFzc2VzX2V4Y2VwdF9FeGNlcHRpb24oKToKK2RlZiB0ZXN0X291dGNv
bWVleGNlcHRpb25fcGFzc2VzX2V4Y2VwdF9FeGNlcHRpb24oKSAtPiBOb25lOgogICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhvdXRjb21lcy5PdXRjb21lRXhjZXB0aW9uKToKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgcmFpc2Ugb3V0Y29tZXMuT3V0Y29tZUV4Y2VwdGlvbigidGVzdCIpCi0gICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IgZnJv
bSBlCiAKIAotZGVmIHRlc3RfcHl0ZXN0X2V4aXQoKToKLSAgICB0cnk6CitkZWYgdGVzdF9weXRl
c3RfZXhpdCgpIC0+IE5vbmU6CisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5leGl0LkV4
Y2VwdGlvbikgYXMgZXhjaW5mbzoKICAgICAgICAgcHl0ZXN0LmV4aXQoImhlbGxvIikKLSAgICBl
eGNlcHQgcHl0ZXN0LmV4aXQuRXhjZXB0aW9uOgotICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5f
Y29kZS5FeGNlcHRpb25JbmZvKCkKLSAgICAgICAgYXNzZXJ0IGV4Y2luZm8uZXJyaXNpbnN0YW5j
ZShLZXlib2FyZEludGVycnVwdCkKKyAgICBhc3NlcnQgZXhjaW5mby5lcnJpc2luc3RhbmNlKHB5
dGVzdC5leGl0LkV4Y2VwdGlvbikKIAogCi1kZWYgdGVzdF9weXRlc3RfZmFpbCgpOgotICAgIHRy
eToKK2RlZiB0ZXN0X3B5dGVzdF9mYWlsKCkgLT4gTm9uZToKKyAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKSBhcyBleGNpbmZvOgogICAgICAgICBweXRlc3QuZmFp
bCgiaGVsbG8iKQotICAgIGV4Y2VwdCBweXRlc3QuZmFpbC5FeGNlcHRpb246Ci0gICAgICAgIGV4
Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAgICAgICBzID0gZXhjaW5m
by5leGNvbmx5KHRyeXNob3J0PVRydWUpCi0gICAgICAgIGFzc2VydCBzLnN0YXJ0c3dpdGgoIkZh
aWxlZCIpCisgICAgcyA9IGV4Y2luZm8uZXhjb25seSh0cnlzaG9ydD1UcnVlKQorICAgIGFzc2Vy
dCBzLnN0YXJ0c3dpdGgoIkZhaWxlZCIpCiAKIAotZGVmIHRlc3RfcHl0ZXN0X2V4aXRfbXNnKHRl
c3RkaXIpOgorZGVmIHRlc3RfcHl0ZXN0X2V4aXRfbXNnKHRlc3RkaXIpIC0+IE5vbmU6CiAgICAg
dGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICIiIgogICAgIGltcG9ydCBweXRlc3QKQEAg
LTU3NSw3ICs1NjQsNDkgQEAgZGVmIHRlc3RfcHl0ZXN0X2V4aXRfbXNnKHRlc3RkaXIpOgogICAg
IHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIkV4aXQ6IG9oIG5vZXMiXSkKIAogCi1kZWYg
dGVzdF9weXRlc3RfZmFpbF9ub3RyYWNlKHRlc3RkaXIpOgorZGVmIF9zdHJpcF9yZXNvdXJjZV93
YXJuaW5ncyhsaW5lcyk6CisgICAgIyBBc3NlcnQgbm8gb3V0cHV0IG9uIHN0ZGVyciwgZXhjZXB0
IGZvciB1bnJlbGlhYmxlIFJlc291cmNlV2FybmluZ3MuCisgICAgIyAoaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDg4KQorICAgIHJldHVybiBbCisgICAgICAg
IHgKKyAgICAgICAgZm9yIHggaW4gbGluZXMKKyAgICAgICAgaWYgbm90IHguc3RhcnRzd2l0aCgo
IkV4Y2VwdGlvbiBpZ25vcmVkIGluOiIsICJSZXNvdXJjZVdhcm5pbmciKSkKKyAgICBdCisKKwor
ZGVmIHRlc3RfcHl0ZXN0X2V4aXRfcmV0dXJuY29kZSh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiXAorICAgICAgICBpbXBvcnQgcHl0ZXN0Cisg
ICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgcHl0ZXN0LmV4aXQoInNvbWUgZXhp
dCBtc2ciLCA5OSkKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiohICpFeGl0OiBzb21lIGV4
aXQgbXNnICEqIl0pCisKKyAgICBhc3NlcnQgX3N0cmlwX3Jlc291cmNlX3dhcm5pbmdzKHJlc3Vs
dC5zdGRlcnIubGluZXMpID09IFtdCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gOTkKKworICAg
ICMgSXQgcHJpbnRzIHRvIHN0ZGVyciBhbHNvIGluIGNhc2Ugb2YgZXhpdCBkdXJpbmcgcHl0ZXN0
X3Nlc3Npb25zdGFydC4KKyAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiXAor
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQo
KToKKyAgICAgICAgICAgIHB5dGVzdC5leGl0KCJkdXJpbmdfc2Vzc2lvbnN0YXJ0IiwgOTgpCisg
ICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiEgKkV4aXQ6IGR1cmluZ19zZXNzaW9uc3Rh
cnQgISoiXSkKKyAgICBhc3NlcnQgX3N0cmlwX3Jlc291cmNlX3dhcm5pbmdzKHJlc3VsdC5zdGRl
cnIubGluZXMpID09IFsKKyAgICAgICAgIkV4aXQ6IGR1cmluZ19zZXNzaW9uc3RhcnQiCisgICAg
XQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDk4CisKKworZGVmIHRlc3RfcHl0ZXN0X2ZhaWxf
bm90cmFjZV9ydW50ZXN0KHRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiVGVzdCBweXRlc3QuZmFp
bCguLi4sIHB5dHJhY2U9RmFsc2UpIGRvZXMgbm90IHNob3cgdHJhY2ViYWNrcyBkdXJpbmcgdGVz
dCBydW4uIiIiCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAg
aW1wb3J0IHB5dGVzdApAQCAtNTg3LDM3ICs2MTgsNDYgQEAgZGVmIHRlc3RfcHl0ZXN0X2ZhaWxf
bm90cmFjZSh0ZXN0ZGlyKToKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIndvcmxkIiwgImhlbGxvIl0pCi0g
ICAgYXNzZXJ0ICJkZWYgdGVhcmRvd25fZnVuY3Rpb24iIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipkZWYgdGVhcmRvd25fZnVu
Y3Rpb24qIikKKworCitkZWYgdGVzdF9weXRlc3RfZmFpbF9ub3RyYWNlX2NvbGxlY3Rpb24odGVz
dGRpcikgLT4gTm9uZToKKyAgICAiIiJUZXN0IHB5dGVzdC5mYWlsKC4uLiwgcHl0cmFjZT1GYWxz
ZSkgZG9lcyBub3Qgc2hvdyB0cmFjZWJhY2tzIGR1cmluZyBjb2xsZWN0aW9uLiIiIgorICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKyAg
ICAgICAgZGVmIHNvbWVfaW50ZXJuYWxfZnVuY3Rpb24oKToKKyAgICAgICAgICAgIHB5dGVzdC5m
YWlsKCJoZWxsbyIsIHB5dHJhY2U9RmFsc2UpCisgICAgICAgIHNvbWVfaW50ZXJuYWxfZnVuY3Rp
b24oKQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiaGVsbG8iXSkKKyAgICByZXN1bHQuc3Rk
b3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmRlZiBzb21lX2ludGVybmFsX2Z1bmN0aW9uKCkqIikKIAog
Ci1AcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInN0cl9wcmVmaXgiLCBbInUiLCAiIl0pCi1kZWYg
dGVzdF9weXRlc3RfZmFpbF9ub3RyYWNlX25vbl9hc2NpaSh0ZXN0ZGlyLCBzdHJfcHJlZml4KToK
K2RlZiB0ZXN0X3B5dGVzdF9mYWlsX25vdHJhY2Vfbm9uX2FzY2lpKHRlc3RkaXIpIC0+IE5vbmU6
CiAgICAgIiIiRml4IHB5dGVzdC5mYWlsIHdpdGggcHl0cmFjZT1GYWxzZSB3aXRoIG5vbi1hc2Np
aSBjaGFyYWN0ZXJzICgjMTE3OCkuCiAKICAgICBUaGlzIHRlc3RzIHdpdGggbmF0aXZlIGFuZCB1
bmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBub24tYXNjaWkgY2hhcnMuCiAgICAgIiIiCiAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICB1IiIiCi0gICAgICAgICMgY29kaW5nOiB1dGYt
OAorICAgICAgICAiIiJcCiAgICAgICAgIGltcG9ydCBweXRlc3QKIAogICAgICAgICBkZWYgdGVz
dF9oZWxsbygpOgotICAgICAgICAgICAgcHl0ZXN0LmZhaWwoJXMnb2ggb2g6IOKYuicsIHB5dHJh
Y2U9RmFsc2UpCi0gICAgIiIiCi0gICAgICAgICUgc3RyX3ByZWZpeAorICAgICAgICAgICAgcHl0
ZXN0LmZhaWwoJ29oIG9oOiDimLonLCBweXRyYWNlPUZhbHNlKQorICAgICAgICAiIiIKICAgICAp
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGlmIHN5cy52ZXJzaW9uX2lu
Zm9bMF0gPj0gMzoKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Rf
aGVsbG8qIiwgIm9oIG9oOiDimLoiXSkKLSAgICBlbHNlOgotICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9oZWxsbyoiLCAib2ggb2g6ICoiXSkKLSAgICBhc3NlcnQg
ImRlZiB0ZXN0X2hlbGxvIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhbIip0ZXN0X2hlbGxvKiIsICJvaCBvaDog4pi6Il0pCisgICAg
cmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipkZWYgdGVzdF9oZWxsbyoiKQogCiAKLWRl
ZiB0ZXN0X3B5dGVzdF9ub190ZXN0c19jb2xsZWN0ZWRfZXhpdF9zdGF0dXModGVzdGRpcik6Citk
ZWYgdGVzdF9weXRlc3Rfbm9fdGVzdHNfY29sbGVjdGVkX2V4aXRfc3RhdHVzKHRlc3RkaXIpIC0+
IE5vbmU6CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygiKmNvbGxlY3RlZCAwIGl0ZW1zKiIpCi0gICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gbWFpbi5FWElUX05PVEVTVFNDT0xMRUNURUQKKyAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqY29sbGVjdGVkIDAgaXRlbXMqIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgIHRlc3RfZm9vPSIiIgpAQCAtNjI2LDI2ICs2NjYsMjcgQEAgZGVmIHRlc3Rf
cHl0ZXN0X25vX3Rlc3RzX2NvbGxlY3RlZF9leGl0X3N0YXR1cyh0ZXN0ZGlyKToKICAgICAiIiIK
ICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygiKmNvbGxlY3RlZCAxIGl0ZW0qIikKLSAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoIioxIHBhc3NlZCoiKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IG1h
aW4uRVhJVF9PSworICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipjb2xsZWN0ZWQg
MSBpdGVtKiJdKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoi
XSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5PSwogCiAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi1rIG5vbm1hdGNoIikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoIipjb2xsZWN0ZWQgMSBpdGVtKiIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKCIqMSBkZXNlbGVjdGVkKiIpCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gbWFpbi5F
WElUX05PVEVTVFNDT0xMRUNURUQKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
Y29sbGVjdGVkIDEgaXRlbSoiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
MSBkZXNlbGVjdGVkKiJdKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RF
U1RTX0NPTExFQ1RFRAogCiAKLWRlZiB0ZXN0X2V4Y2VwdGlvbl9wcmludGluZ19za2lwKCk6Citk
ZWYgdGVzdF9leGNlcHRpb25fcHJpbnRpbmdfc2tpcCgpIC0+IE5vbmU6CisgICAgYXNzZXJ0IHB5
dGVzdC5za2lwLkV4Y2VwdGlvbiA9PSBweXRlc3Quc2tpcC5FeGNlcHRpb24KICAgICB0cnk6CiAg
ICAgICAgIHB5dGVzdC5za2lwKCJoZWxsbyIpCiAgICAgZXhjZXB0IHB5dGVzdC5za2lwLkV4Y2Vw
dGlvbjoKLSAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCisg
ICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50
KCkKICAgICAgICAgcyA9IGV4Y2luZm8uZXhjb25seSh0cnlzaG9ydD1UcnVlKQogICAgICAgICBh
c3NlcnQgcy5zdGFydHN3aXRoKCJTa2lwcGVkIikKIAogCi1kZWYgdGVzdF9pbXBvcnRvcnNraXAo
bW9ua2V5cGF0Y2gpOgorZGVmIHRlc3RfaW1wb3J0b3Jza2lwKG1vbmtleXBhdGNoKSAtPiBOb25l
OgogICAgIGltcG9ydG9yc2tpcCA9IHB5dGVzdC5pbXBvcnRvcnNraXAKIAogICAgIGRlZiBmKCk6
CkBAIC02NTcsNTIgKzY5OCw1MSBAQCBkZWYgdGVzdF9pbXBvcnRvcnNraXAobW9ua2V5cGF0Y2gp
OgogICAgICAgICAjIHBhdGggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJvcy5wYXRoIikKICAgICAg
ICAgIyBhc3NlcnQgcGF0aCA9PSBvcy5wYXRoCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFp
c2VzKHB5dGVzdC5za2lwLkV4Y2VwdGlvbiwgZikKLSAgICAgICAgcGF0aCA9IHB5LnBhdGgubG9j
YWwoZXhjaW5mby5nZXRyZXByKCkucmVwcmNyYXNoLnBhdGgpCisgICAgICAgIGFzc2VydCBleGNp
bmZvIGlzIG5vdCBOb25lCisgICAgICAgIGV4Y3JlcHIgPSBleGNpbmZvLmdldHJlcHIoKQorICAg
ICAgICBhc3NlcnQgZXhjcmVwciBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgZXhjcmVwci5y
ZXByY3Jhc2ggaXMgbm90IE5vbmUKKyAgICAgICAgcGF0aCA9IHB5LnBhdGgubG9jYWwoZXhjcmVw
ci5yZXByY3Jhc2gucGF0aCkKICAgICAgICAgIyBjaGVjayB0aGF0IGltcG9ydG9yc2tpcCByZXBv
cnRzIHRoZSBhY3R1YWwgY2FsbAogICAgICAgICAjIGluIHRoaXMgdGVzdCB0aGUgdGVzdF9ydW5u
ZXIucHkgZmlsZQogICAgICAgICBhc3NlcnQgcGF0aC5wdXJlYmFzZW5hbWUgPT0gInRlc3RfcnVu
bmVyIgotICAgICAgICBweXRlc3QucmFpc2VzKFN5bnRheEVycm9yLCAicHl0ZXN0LmltcG9ydG9y
c2tpcCgneCB5IHonKSIpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoU3ludGF4RXJyb3IsICJweXRl
c3QuaW1wb3J0b3Jza2lwKCd4PXknKSIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoU3ludGF4RXJy
b3IsIHB5dGVzdC5pbXBvcnRvcnNraXAsICJ4IHkgeiIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMo
U3ludGF4RXJyb3IsIHB5dGVzdC5pbXBvcnRvcnNraXAsICJ4PXkiKQogICAgICAgICBtb2QgPSB0
eXBlcy5Nb2R1bGVUeXBlKCJoZWxsbzEyMyIpCi0gICAgICAgIG1vZC5fX3ZlcnNpb25fXyA9ICIx
LjMiCisgICAgICAgIG1vZC5fX3ZlcnNpb25fXyA9ICIxLjMiICAjIHR5cGU6IGlnbm9yZQogICAg
ICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKHN5cy5tb2R1bGVzLCAiaGVsbG8xMjMiLCBtb2QpCi0g
ICAgICAgIHB5dGVzdC5yYWlzZXMoCi0gICAgICAgICAgICBweXRlc3Quc2tpcC5FeGNlcHRpb24s
Ci0gICAgICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5za2lw
LkV4Y2VwdGlvbik6CiAgICAgICAgICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJoZWxsbzEyMyIs
IG1pbnZlcnNpb249IjEuMy4xIikKLSAgICAgICAgIiIiLAotICAgICAgICApCiAgICAgICAgIG1v
ZDIgPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJoZWxsbzEyMyIsIG1pbnZlcnNpb249IjEuMyIpCiAg
ICAgICAgIGFzc2VydCBtb2QyID09IG1vZAotICAgIGV4Y2VwdCBweXRlc3Quc2tpcC5FeGNlcHRp
b246Ci0gICAgICAgIHByaW50KF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpKQotICAgICAg
ICBweXRlc3QuZmFpbCgic3B1cmlvdXMgc2tpcCIpCisgICAgZXhjZXB0IHB5dGVzdC5za2lwLkV4
Y2VwdGlvbjogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICBhc3NlcnQgRmFsc2UsICJzcHVy
aW91cyBza2lwOiB7fSIuZm9ybWF0KAorICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5FeGNlcHRp
b25JbmZvLmZyb21fY3VycmVudCgpCisgICAgICAgICkKIAogCi1kZWYgdGVzdF9pbXBvcnRvcnNr
aXBfaW1wb3J0c19sYXN0X21vZHVsZV9wYXJ0KCk6CitkZWYgdGVzdF9pbXBvcnRvcnNraXBfaW1w
b3J0c19sYXN0X21vZHVsZV9wYXJ0KCkgLT4gTm9uZToKICAgICBvc3BhdGggPSBweXRlc3QuaW1w
b3J0b3Jza2lwKCJvcy5wYXRoIikKICAgICBhc3NlcnQgb3MucGF0aCA9PSBvc3BhdGgKIAogCi1k
ZWYgdGVzdF9pbXBvcnRvcnNraXBfZGV2X21vZHVsZShtb25rZXlwYXRjaCk6CitkZWYgdGVzdF9p
bXBvcnRvcnNraXBfZGV2X21vZHVsZShtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICB0cnk6CiAg
ICAgICAgIG1vZCA9IHR5cGVzLk1vZHVsZVR5cGUoIm1vY2ttb2R1bGUiKQotICAgICAgICBtb2Qu
X192ZXJzaW9uX18gPSAiMC4xMy4wLmRldi00MzI5MCIKKyAgICAgICAgbW9kLl9fdmVyc2lvbl9f
ID0gIjAuMTMuMC5kZXYtNDMyOTAiICAjIHR5cGU6IGlnbm9yZQogICAgICAgICBtb25rZXlwYXRj
aC5zZXRpdGVtKHN5cy5tb2R1bGVzLCAibW9ja21vZHVsZSIsIG1vZCkKICAgICAgICAgbW9kMiA9
IHB5dGVzdC5pbXBvcnRvcnNraXAoIm1vY2ttb2R1bGUiLCBtaW52ZXJzaW9uPSIwLjEyLjAiKQog
ICAgICAgICBhc3NlcnQgbW9kMiA9PSBtb2QKLSAgICAgICAgcHl0ZXN0LnJhaXNlcygKLSAgICAg
ICAgICAgIHB5dGVzdC5za2lwLkV4Y2VwdGlvbiwKLSAgICAgICAgICAgICIiIgotICAgICAgICAg
ICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgnbW9ja21vZHVsZTEnLCBtaW52ZXJzaW9uPScwLjE0LjAn
KSIiIiwKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5za2lwLkV4Y2VwdGlvbik6
CisgICAgICAgICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJtb2NrbW9kdWxlMSIsIG1pbnZlcnNp
b249IjAuMTQuMCIpCisgICAgZXhjZXB0IHB5dGVzdC5za2lwLkV4Y2VwdGlvbjogICMgcHJhZ21h
OiBubyBjb3ZlcgorICAgICAgICBhc3NlcnQgRmFsc2UsICJzcHVyaW91cyBza2lwOiB7fSIuZm9y
bWF0KAorICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVu
dCgpCiAgICAgICAgICkKLSAgICBleGNlcHQgcHl0ZXN0LnNraXAuRXhjZXB0aW9uOgotICAgICAg
ICBwcmludChfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKSkKLSAgICAgICAgcHl0ZXN0LmZh
aWwoInNwdXJpb3VzIHNraXAiKQogCiAKLWRlZiB0ZXN0X2ltcG9ydG9yc2tpcF9tb2R1bGVfbGV2
ZWwodGVzdGRpcik6Ci0gICAgIiIiaW1wb3J0b3Jza2lwIG11c3QgYmUgYWJsZSB0byBza2lwIGVu
dGlyZSBtb2R1bGVzIHdoZW4gdXNlZCBhdCBtb2R1bGUgbGV2ZWwiIiIKK2RlZiB0ZXN0X2ltcG9y
dG9yc2tpcF9tb2R1bGVfbGV2ZWwodGVzdGRpcikgLT4gTm9uZToKKyAgICAiIiJgaW1wb3J0b3Jz
a2lwYCBtdXN0IGJlIGFibGUgdG8gc2tpcCBlbnRpcmUgbW9kdWxlcyB3aGVuIHVzZWQgYXQgbW9k
dWxlIGxldmVsLiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAg
ICAgIGltcG9ydCBweXRlc3QKQEAgLTcxNiw3ICs3NTYsMjMgQEAgZGVmIHRlc3RfaW1wb3J0b3Jz
a2lwX21vZHVsZV9sZXZlbCh0ZXN0ZGlyKToKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqY29sbGVjdGVkIDAgaXRlbXMgLyAxIHNraXBwZWQqIl0pCiAKIAotZGVmIHRlc3RfcHl0
ZXN0X2NtZGxpbmVfbWFpbih0ZXN0ZGlyKToKK2RlZiB0ZXN0X2ltcG9ydG9yc2tpcF9jdXN0b21f
cmVhc29uKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiTWFrZSBzdXJlIGN1c3RvbSByZWFzb25z
IGFyZSB1c2VkLiIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAg
ICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgZm9vYmFyYmF6ID0gcHl0ZXN0LmltcG9ydG9yc2tp
cCgiZm9vYmFyYmF6MiIsIHJlYXNvbj0ianVzdCBiZWNhdXNlIikKKworICAgICAgICBkZWYgdGVz
dF9mb28oKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi1yYSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKmp1c3QgYmVjYXVzZSoiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
Y29sbGVjdGVkIDAgaXRlbXMgLyAxIHNraXBwZWQqIl0pCisKKworZGVmIHRlc3RfcHl0ZXN0X2Nt
ZGxpbmVfbWFpbih0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC03MzQsMTggKzc5MCwxNyBA
QCBkZWYgdGVzdF9weXRlc3RfY21kbGluZV9tYWluKHRlc3RkaXIpOgogICAgIGFzc2VydCByZXQg
PT0gMAogCiAKLWRlZiB0ZXN0X3VuaWNvZGVfaW5fbG9uZ3JlcHIodGVzdGRpcik6CitkZWYgdGVz
dF91bmljb2RlX2luX2xvbmdyZXByKHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdGRpci5tYWtl
Y29uZnRlc3QoCi0gICAgICAgICIiIgotICAgICAgICAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQor
ICAgICAgICAiIiJcCiAgICAgICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgQHB5dGVzdC5ob29r
aW1wbChob29rd3JhcHBlcj1UcnVlKQogICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJl
cG9ydCgpOgogICAgICAgICAgICAgb3V0Y29tZSA9IHlpZWxkCiAgICAgICAgICAgICByZXAgPSBv
dXRjb21lLmdldF9yZXN1bHQoKQogICAgICAgICAgICAgaWYgcmVwLndoZW4gPT0gImNhbGwiOgot
ICAgICAgICAgICAgICAgIHJlcC5sb25ncmVwciA9IHUnw6QnCi0gICAgIiIiCisgICAgICAgICAg
ICAgICAgcmVwLmxvbmdyZXByID0gJ8OkJworICAgICAgICAiIiIKICAgICApCiAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKQEAgLTc1OCw3ICs4MTMsNyBAQCBkZWYgdGVzdF91
bmljb2RlX2luX2xvbmdyZXByKHRlc3RkaXIpOgogICAgIGFzc2VydCAiVW5pY29kZUVuY29kZUVy
cm9yIiBub3QgaW4gcmVzdWx0LnN0ZGVyci5zdHIoKQogCiAKLWRlZiB0ZXN0X2ZhaWx1cmVfaW5f
c2V0dXAodGVzdGRpcik6CitkZWYgdGVzdF9mYWlsdXJlX2luX3NldHVwKHRlc3RkaXIpIC0+IE5v
bmU6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgZGVmIHNl
dHVwX21vZHVsZSgpOgpAQCAtNzY4LDEwICs4MjMsMTAgQEAgZGVmIHRlc3RfZmFpbHVyZV9pbl9z
ZXR1cCh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0tdGI9bGluZSIpCi0gICAgYXNzZXJ0ICJkZWYgc2V0dXBfbW9kdWxlIiBub3QgaW4g
cmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
ZGVmIHNldHVwX21vZHVsZSoiKQogCiAKLWRlZiB0ZXN0X21ha2VyZXBvcnRfZ2V0c291cmNlKHRl
c3RkaXIpOgorZGVmIHRlc3RfbWFrZXJlcG9ydF9nZXRzb3VyY2UodGVzdGRpcikgLT4gTm9uZToK
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBkZWYgdGVzdF9m
b28oKToKQEAgLTc4MCwyMSArODM1LDIxIEBAIGRlZiB0ZXN0X21ha2VyZXBvcnRfZ2V0c291cmNl
KHRlc3RkaXIpOgogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgpCi0gICAgYXNzZXJ0ICJJTlRFUk5BTEVSUk9SIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIo
KQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqSU5URVJOQUxFUlJPUioiKQog
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiplbHNlOiBhc3NlcnQgRmFsc2UqIl0p
CiAKIAotZGVmIHRlc3RfbWFrZXJlcG9ydF9nZXRzb3VyY2VfZHluYW1pY19jb2RlKHRlc3RkaXIs
IG1vbmtleXBhdGNoKToKK2RlZiB0ZXN0X21ha2VyZXBvcnRfZ2V0c291cmNlX2R5bmFtaWNfY29k
ZSh0ZXN0ZGlyLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICAiIiJUZXN0IHRoYXQgZXhjZXB0
aW9uIGluIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjb2RlIGRvZXNuJ3QgYnJlYWsgZ2V0dGluZyB0
aGUgc291cmNlIGxpbmUuIiIiCiAgICAgaW1wb3J0IGluc3BlY3QKIAogICAgIG9yaWdpbmFsX2Zp
bmRzb3VyY2UgPSBpbnNwZWN0LmZpbmRzb3VyY2UKIAotICAgIGRlZiBmaW5kc291cmNlKG9iaiwg
KmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZmluZHNvdXJjZShvYmopOgogICAgICAgICAjIENh
biBiZSB0cmlnZ2VyZWQgYnkgZHluYW1pY2FsbHkgY3JlYXRlZCBmdW5jdGlvbnMKICAgICAgICAg
aWYgb2JqLl9fbmFtZV9fID09ICJmb28iOgogICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigp
Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbF9maW5kc291cmNlKG9iaiwgKmFyZ3MsICoqa3dhcmdz
KQorICAgICAgICByZXR1cm4gb3JpZ2luYWxfZmluZHNvdXJjZShvYmopCiAKICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKGluc3BlY3QsICJmaW5kc291cmNlIiwgZmluZHNvdXJjZSkKIApAQCAtODEx
LDE2ICs4NjYsMTUgQEAgZGVmIHRlc3RfbWFrZXJlcG9ydF9nZXRzb3VyY2VfZHluYW1pY19jb2Rl
KHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoIi12diIpCi0gICAgYXNzZXJ0ICJJTlRFUk5BTEVSUk9SIiBub3QgaW4g
cmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
SU5URVJOQUxFUlJPUioiKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0ZXN0
X2ZpeCoiLCAiKmZpeHR1cmUqJ21pc3NpbmcnKm5vdCBmb3VuZCoiXSkKIAogCi1kZWYgdGVzdF9z
dG9yZV9leGNlcHRfaW5mb19vbl9lcnJvcigpOgotICAgICIiIiBUZXN0IHRoYXQgdXBvbiB0ZXN0
IGZhaWx1cmUsIHRoZSBleGNlcHRpb24gaW5mbyBpcyBzdG9yZWQgb24KLSAgICBzeXMubGFzdF90
cmFjZWJhY2sgYW5kIGZyaWVuZHMuCi0gICAgIiIiCitkZWYgdGVzdF9zdG9yZV9leGNlcHRfaW5m
b19vbl9lcnJvcigpIC0+IE5vbmU6CisgICAgIiIiVGVzdCB0aGF0IHVwb24gdGVzdCBmYWlsdXJl
LCB0aGUgZXhjZXB0aW9uIGluZm8gaXMgc3RvcmVkIG9uCisgICAgc3lzLmxhc3RfdHJhY2ViYWNr
IGFuZCBmcmllbmRzLiIiIgogICAgICMgU2ltdWxhdGUgaXRlbSB0aGF0IG1pZ2h0IHJhaXNlIGEg
c3BlY2lmaWMgZXhjZXB0aW9uLCBkZXBlbmRpbmcgb24gYHJhaXNlX2Vycm9yYCBjbGFzcyB2YXIK
LSAgICBjbGFzcyBJdGVtTWlnaHRSYWlzZShvYmplY3QpOgorICAgIGNsYXNzIEl0ZW1NaWdodFJh
aXNlOgogICAgICAgICBub2RlaWQgPSAiaXRlbV90aGF0X3JhaXNlcyIKICAgICAgICAgcmFpc2Vf
ZXJyb3IgPSBUcnVlCiAKQEAgLTgyOSwyNCArODgzLDI1IEBAIGRlZiB0ZXN0X3N0b3JlX2V4Y2Vw
dF9pbmZvX29uX2Vycm9yKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiVEVT
VCIpCiAKICAgICB0cnk6Ci0gICAgICAgIHJ1bm5lci5weXRlc3RfcnVudGVzdF9jYWxsKEl0ZW1N
aWdodFJhaXNlKCkpCisgICAgICAgIHJ1bm5lci5weXRlc3RfcnVudGVzdF9jYWxsKEl0ZW1NaWdo
dFJhaXNlKCkpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KICAgICBleGNlcHQgSW5kZXhFcnJv
cjoKICAgICAgICAgcGFzcwogICAgICMgQ2hlY2sgdGhhdCBleGNlcHRpb24gaW5mbyBpcyBzdG9y
ZWQgb24gc3lzCiAgICAgYXNzZXJ0IHN5cy5sYXN0X3R5cGUgaXMgSW5kZXhFcnJvcgorICAgIGFz
c2VydCBpc2luc3RhbmNlKHN5cy5sYXN0X3ZhbHVlLCBJbmRleEVycm9yKQogICAgIGFzc2VydCBz
eXMubGFzdF92YWx1ZS5hcmdzWzBdID09ICJURVNUIgogICAgIGFzc2VydCBzeXMubGFzdF90cmFj
ZWJhY2sKIAogICAgICMgVGhlIG5leHQgcnVuIHNob3VsZCBjbGVhciB0aGUgZXhjZXB0aW9uIGlu
Zm8gc3RvcmVkIGJ5IHRoZSBwcmV2aW91cyBydW4KICAgICBJdGVtTWlnaHRSYWlzZS5yYWlzZV9l
cnJvciA9IEZhbHNlCi0gICAgcnVubmVyLnB5dGVzdF9ydW50ZXN0X2NhbGwoSXRlbU1pZ2h0UmFp
c2UoKSkKLSAgICBhc3NlcnQgc3lzLmxhc3RfdHlwZSBpcyBOb25lCi0gICAgYXNzZXJ0IHN5cy5s
YXN0X3ZhbHVlIGlzIE5vbmUKLSAgICBhc3NlcnQgc3lzLmxhc3RfdHJhY2ViYWNrIGlzIE5vbmUK
KyAgICBydW5uZXIucHl0ZXN0X3J1bnRlc3RfY2FsbChJdGVtTWlnaHRSYWlzZSgpKSAgIyB0eXBl
OiBpZ25vcmVbYXJnLXR5cGVdCisgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgImxhc3RfdHlw
ZSIpCisgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgImxhc3RfdmFsdWUiKQorICAgIGFzc2Vy
dCBub3QgaGFzYXR0cihzeXMsICJsYXN0X3RyYWNlYmFjayIpCiAKIAotZGVmIHRlc3RfY3VycmVu
dF90ZXN0X2Vudl92YXIodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotICAgIHB5dGVzdF9jdXJyZW50
X3Rlc3RfdmFycyA9IFtdCitkZWYgdGVzdF9jdXJyZW50X3Rlc3RfZW52X3Zhcih0ZXN0ZGlyLCBt
b25rZXlwYXRjaCkgLT4gTm9uZToKKyAgICBweXRlc3RfY3VycmVudF90ZXN0X3ZhcnMgPSBbXSAg
IyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgc3RyXV0KICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAog
ICAgICAgICBzeXMsICJweXRlc3RfY3VycmVudF90ZXN0X3ZhcnMiLCBweXRlc3RfY3VycmVudF90
ZXN0X3ZhcnMsIHJhaXNpbmc9RmFsc2UKICAgICApCkBAIC04NjksMjYgKzkyNCwyMSBAQCBkZWYg
dGVzdF9jdXJyZW50X3Rlc3RfZW52X3Zhcih0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCkKICAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCiAgICAgdGVzdF9pZCA9ICJ0ZXN0X2N1cnJlbnRfdGVzdF9lbnZfdmFyLnB5Ojp0ZXN0
IgotICAgIGFzc2VydCAoCi0gICAgICAgIHB5dGVzdF9jdXJyZW50X3Rlc3RfdmFycwotICAgICAg
ICA9PSBbCi0gICAgICAgICAgICAoInNldHVwIiwgdGVzdF9pZCArICIgKHNldHVwKSIpLAotICAg
ICAgICAgICAgKCJjYWxsIiwgdGVzdF9pZCArICIgKGNhbGwpIiksCi0gICAgICAgICAgICAoInRl
YXJkb3duIiwgdGVzdF9pZCArICIgKHRlYXJkb3duKSIpLAotICAgICAgICBdCi0gICAgKQorICAg
IGFzc2VydCBweXRlc3RfY3VycmVudF90ZXN0X3ZhcnMgPT0gWworICAgICAgICAoInNldHVwIiwg
dGVzdF9pZCArICIgKHNldHVwKSIpLAorICAgICAgICAoImNhbGwiLCB0ZXN0X2lkICsgIiAoY2Fs
bCkiKSwKKyAgICAgICAgKCJ0ZWFyZG93biIsIHRlc3RfaWQgKyAiICh0ZWFyZG93bikiKSwKKyAg
ICBdCiAgICAgYXNzZXJ0ICJQWVRFU1RfQ1VSUkVOVF9URVNUIiBub3QgaW4gb3MuZW52aXJvbgog
CiAKLWNsYXNzIFRlc3RSZXBvcnRDb250ZW50cyhvYmplY3QpOgotICAgICIiIgotICAgIFRlc3Qg
dXNlci1sZXZlbCBBUEkgb2YgYGBUZXN0UmVwb3J0YGAgb2JqZWN0cy4KLSAgICAiIiIKK2NsYXNz
IFRlc3RSZXBvcnRDb250ZW50czoKKyAgICAiIiJUZXN0IHVzZXItbGV2ZWwgQVBJIG9mIGBgVGVz
dFJlcG9ydGBgIG9iamVjdHMuIiIiCiAKICAgICBkZWYgZ2V0cnVubmVyKHNlbGYpOgogICAgICAg
ICByZXR1cm4gbGFtYmRhIGl0ZW06IHJ1bm5lci5ydW50ZXN0cHJvdG9jb2woaXRlbSwgbG9nPUZh
bHNlKQogCi0gICAgZGVmIHRlc3RfbG9uZ3JlcHJ0ZXh0X3Bhc3Moc2VsZiwgdGVzdGRpcik6Cisg
ICAgZGVmIHRlc3RfbG9uZ3JlcHJ0ZXh0X3Bhc3Moc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAg
ICAgICAgcmVwb3J0cyA9IHRlc3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgZGVmIHRlc3RfZnVuYygpOgpAQCAtODk4LDcgKzk0OCwzNCBAQCBjbGFzcyBUZXN0UmVw
b3J0Q29udGVudHMob2JqZWN0KToKICAgICAgICAgcmVwID0gcmVwb3J0c1sxXQogICAgICAgICBh
c3NlcnQgcmVwLmxvbmdyZXBydGV4dCA9PSAiIgogCi0gICAgZGVmIHRlc3RfbG9uZ3JlcHJ0ZXh0
X2ZhaWx1cmUoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfbG9uZ3JlcHJ0ZXh0X3NraXAo
c2VsZiwgdGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiVGVzdFJlcG9ydC5sb25ncmVwcnRl
eHQgY2FuIGhhbmRsZSBub24tc3RyIGBgbG9uZ3JlcHJgYCBhdHRyaWJ1dGVzICgjNzU1OSkiIiIK
KyAgICAgICAgcmVwb3J0cyA9IHRlc3RkaXIucnVuaXRlbSgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgorICAg
ICAgICAgICAgICAgIHB5dGVzdC5za2lwKCkKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisg
ICAgICAgIF8sIGNhbGxfcmVwLCBfID0gcmVwb3J0cworICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShjYWxsX3JlcC5sb25ncmVwciwgdHVwbGUpCisgICAgICAgIGFzc2VydCAiU2tpcHBlZCIgaW4g
Y2FsbF9yZXAubG9uZ3JlcHJ0ZXh0CisKKyAgICBkZWYgdGVzdF9sb25ncmVwcnRleHRfY29sbGVj
dF9za2lwKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIkNvbGxlY3RSZXBvcnQu
bG9uZ3JlcHJ0ZXh0IGNhbiBoYW5kbGUgbm9uLXN0ciBgYGxvbmdyZXByYGAgYXR0cmlidXRlcyAo
Izc1NTkpIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgcHl0ZXN0LnNraXAoYWxsb3df
bW9kdWxlX2xldmVsPVRydWUpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICBjYWxscyA9IHJlYy5nZXRjYWxscygi
cHl0ZXN0X2NvbGxlY3RyZXBvcnQiKQorICAgICAgICBfLCBjYWxsID0gY2FsbHMKKyAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoY2FsbC5yZXBvcnQubG9uZ3JlcHIsIHR1cGxlKQorICAgICAgICBh
c3NlcnQgIlNraXBwZWQiIGluIGNhbGwucmVwb3J0LmxvbmdyZXBydGV4dAorCisgICAgZGVmIHRl
c3RfbG9uZ3JlcHJ0ZXh0X2ZhaWx1cmUoc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAg
cmVwb3J0cyA9IHRlc3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAg
ZGVmIHRlc3RfZnVuYygpOgpAQCAtOTA5LDcgKzk4Niw3IEBAIGNsYXNzIFRlc3RSZXBvcnRDb250
ZW50cyhvYmplY3QpOgogICAgICAgICByZXAgPSByZXBvcnRzWzFdCiAgICAgICAgIGFzc2VydCAi
YXNzZXJ0IDEgPT0gNCIgaW4gcmVwLmxvbmdyZXBydGV4dAogCi0gICAgZGVmIHRlc3RfY2FwdHVy
ZWRfdGV4dChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF90ZXh0KHNlbGYs
IHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTkzOSw3ICsxMDE2
LDcgQEAgY2xhc3MgVGVzdFJlcG9ydENvbnRlbnRzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBj
YWxsLmNhcHN0ZGVyciA9PSAic2V0dXA6IHN0ZGVyclxuY2FsbDogc3RkZXJyXG4iCiAgICAgICAg
IGFzc2VydCB0ZWFyZG93bi5jYXBzdGRlcnIgPT0gInNldHVwOiBzdGRlcnJcbmNhbGw6IHN0ZGVy
clxudGVhcmRvd246IHN0ZGVyclxuIgogCi0gICAgZGVmIHRlc3Rfbm9fY2FwdHVyZWRfdGV4dChz
ZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9ub19jYXB0dXJlZF90ZXh0KHNlbGYsIHRlc3Rk
aXIpIC0+IE5vbmU6CiAgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAg
ICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKQEAgLTk0OSwzICsxMDI2LDI5
IEBAIGNsYXNzIFRlc3RSZXBvcnRDb250ZW50cyhvYmplY3QpOgogICAgICAgICByZXAgPSByZXBv
cnRzWzFdCiAgICAgICAgIGFzc2VydCByZXAuY2Fwc3Rkb3V0ID09ICIiCiAgICAgICAgIGFzc2Vy
dCByZXAuY2Fwc3RkZXJyID09ICIiCisKKyAgICBkZWYgdGVzdF9sb25ncmVwcl90eXBlKHNlbGYs
IHRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBweXRlc3QuZmFpbChweXRyYWNlPUZhbHNl
KQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXAgPSByZXBvcnRzWzFdCisgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcC5sb25ncmVwciwgX3B5dGVzdC5fY29kZS5jb2RlLkV4
Y2VwdGlvblJlcHIpCisKKworZGVmIHRlc3Rfb3V0Y29tZV9leGNlcHRpb25fYmFkX21zZygpIC0+
IE5vbmU6CisgICAgIiIiQ2hlY2sgdGhhdCBPdXRjb21lRXhjZXB0aW9ucyB2YWxpZGF0ZSB0aGVp
ciBpbnB1dCB0byBwcmV2ZW50IGNvbmZ1c2luZyBlcnJvcnMgKCM1NTc4KSIiIgorCisgICAgZGVm
IGZ1bmMoKSAtPiBOb25lOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKwor
ICAgIGV4cGVjdGVkID0gKAorICAgICAgICAiT3V0Y29tZUV4Y2VwdGlvbiBleHBlY3RlZCBzdHJp
bmcgYXMgJ21zZycgcGFyYW1ldGVyLCBnb3QgJ2Z1bmN0aW9uJyBpbnN0ZWFkLlxuIgorICAgICAg
ICAiUGVyaGFwcyB5b3UgbWVhbnQgdG8gdXNlIGEgbWFyaz8iCisgICAgKQorICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIE91dGNvbWVFeGNlcHRp
b24oZnVuYykgICMgdHlwZTogaWdub3JlCisgICAgYXNzZXJ0IHN0cihleGNpbmZvLnZhbHVlKSA9
PSBleHBlY3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3J1bm5lcl94
dW5pdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXJfeHVuaXQucHkKaW5kZXgg
ODMxNmFhZmJmNTYxLi4xYWJiMzUwNDNiN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9ydW5uZXJfeHVuaXQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3J1
bm5lcl94dW5pdC5weQpAQCAtMSw4ICsxLDYgQEAKLSIiIgotIHRlc3QgY29ycmVjdCBzZXR1cC90
ZWFyZG93bnMgYXQKLSBtb2R1bGUsIGNsYXNzLCBhbmQgaW5zdGFuY2UgbGV2ZWwKLSIiIgotZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5j
dGlvbgorIiIiVGVzdCBjb3JyZWN0IHNldHVwL3RlYXJkb3ducyBhdCBtb2R1bGUsIGNsYXNzLCBh
bmQgaW5zdGFuY2UgbGV2ZWwuIiIiCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorCiBpbXBvcnQg
cHl0ZXN0CiAKIApAQCAtMTY2LDYyICsxNjQsNiBAQCBkZWYgdGVzdF9tZXRob2Rfc2V0dXBfZmFp
bHVyZV9ub190ZWFyZG93bih0ZXN0ZGlyKToKICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShmYWls
ZWQ9MSwgcGFzc2VkPTEpCiAKIAotZGVmIHRlc3RfbWV0aG9kX2dlbmVyYXRvcl9zZXR1cCh0ZXN0
ZGlyKToKLSAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCi0gICAgICAgICIi
IgotICAgICAgICBjbGFzcyBUZXN0U2V0dXBUZWFyZG93bk9uSW5zdGFuY2Uob2JqZWN0KToKLSAg
ICAgICAgICAgIGRlZiBzZXR1cF9jbGFzcyhjbHMpOgotICAgICAgICAgICAgICAgIGNscy5jbGFz
c3NldHVwID0gVHJ1ZQotCi0gICAgICAgICAgICBkZWYgc2V0dXBfbWV0aG9kKHNlbGYsIG1ldGhv
ZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXRoc2V0dXAgPSBtZXRob2QKLQotICAgICAgICAg
ICAgZGVmIHRlc3RfZ2VuZXJhdGUoc2VsZik6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYu
Y2xhc3NzZXR1cAotICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLm1ldGhzZXR1cCA9PSBzZWxm
LnRlc3RfZ2VuZXJhdGUKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlZCwgNQot
ICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVkLCAyCi0KLSAgICAgICAgICAgIGRl
ZiBnZW5lcmF0ZWQoc2VsZiwgdmFsdWUpOgotICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLmNs
YXNzc2V0dXAKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5tZXRoc2V0dXAgPT0gc2VsZi50
ZXN0X2dlbmVyYXRlCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlID09IDUKLSAgICAiIiIK
LSAgICApCi0gICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEsIGZhaWxlZD0xKQotCi0K
LWRlZiB0ZXN0X2Z1bmNfZ2VuZXJhdG9yX3NldHVwKHRlc3RkaXIpOgotICAgIHJlcHJlYyA9IHRl
c3RkaXIuaW5saW5lX3J1bnNvdXJjZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBzeXMK
LQotICAgICAgICBkZWYgc2V0dXBfbW9kdWxlKG1vZCk6Ci0gICAgICAgICAgICBwcmludCAoInNl
dHVwX21vZHVsZSIpCi0gICAgICAgICAgICBtb2QueCA9IFtdCi0KLSAgICAgICAgZGVmIHNldHVw
X2Z1bmN0aW9uKGZ1bik6Ci0gICAgICAgICAgICBwcmludCAoInNldHVwX2Z1bmN0aW9uIikKLSAg
ICAgICAgICAgIHguYXBwZW5kKDEpCi0KLSAgICAgICAgZGVmIHRlYXJkb3duX2Z1bmN0aW9uKGZ1
bik6Ci0gICAgICAgICAgICBwcmludCAoInRlYXJkb3duX2Z1bmN0aW9uIikKLSAgICAgICAgICAg
IHgucG9wKCkKLQotICAgICAgICBkZWYgdGVzdF9vbmUoKToKLSAgICAgICAgICAgIGFzc2VydCB4
ID09IFsxXQotICAgICAgICAgICAgZGVmIGNoZWNrKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQg
KCJjaGVjayIpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZVxcbiIpCi0gICAg
ICAgICAgICAgICAgYXNzZXJ0IHggPT0gWzFdCi0gICAgICAgICAgICB5aWVsZCBjaGVjawotICAg
ICAgICAgICAgYXNzZXJ0IHggPT0gWzFdCi0gICAgIiIiCi0gICAgKQotICAgIHJlcCA9IHJlcHJl
Yy5tYXRjaHJlcG9ydCgidGVzdF9vbmUiLCBuYW1lcz0icHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0
IikKLSAgICBhc3NlcnQgcmVwLnBhc3NlZAotCi0KIGRlZiB0ZXN0X21ldGhvZF9zZXR1cF91c2Vz
X2ZyZXNoX2luc3RhbmNlcyh0ZXN0ZGlyKToKICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9y
dW5zb3VyY2UoCiAgICAgICAgICIiIgpAQCAtMjkxLDIwICsyMzMsMjAgQEAgZGVmIHRlc3Rfc2V0
dXBfZnVuY2FyZ19zZXR1cF93aGVuX291dGVyX3Njb3BlX2ZhaWxzKHRlc3RkaXIpOgogICAgICAg
ICAgICAgIipWYWx1ZUVycm9yKjQyKiIsCiAgICAgICAgICAgICAiKmZ1bmN0aW9uMioiLAogICAg
ICAgICAgICAgIipWYWx1ZUVycm9yKjQyKiIsCi0gICAgICAgICAgICAiKjIgZXJyb3IqIiwKKyAg
ICAgICAgICAgICIqMiBlcnJvcnMqIiwKICAgICAgICAgXQogICAgICkKLSAgICBhc3NlcnQgInh5
ejQzIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqeHl6NDMqIikKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFyZyIs
IFsiIiwgImFyZyJdKQogZGVmIHRlc3Rfc2V0dXBfdGVhcmRvd25fZnVuY3Rpb25fbGV2ZWxfd2l0
aF9vcHRpb25hbF9hcmd1bWVudCgKLSAgICB0ZXN0ZGlyLCBtb25rZXlwYXRjaCwgYXJnCi0pOgot
ICAgICIiInBhcmFtZXRlciB0byBzZXR1cC90ZWFyZG93biB4dW5pdC1zdHlsZSBmdW5jdGlvbnMg
cGFyYW1ldGVyIGlzIG5vdyBvcHRpb25hbCAoIzE3MjgpLiIiIgorICAgIHRlc3RkaXIsIG1vbmtl
eXBhdGNoLCBhcmc6IHN0ciwKKykgLT4gTm9uZToKKyAgICAiIiJQYXJhbWV0ZXIgdG8gc2V0dXAv
dGVhcmRvd24geHVuaXQtc3R5bGUgZnVuY3Rpb25zIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwg
KCMxNzI4KS4iIiIKICAgICBpbXBvcnQgc3lzCiAKLSAgICB0cmFjZV9zZXR1cHNfdGVhcmRvd25z
ID0gW10KKyAgICB0cmFjZV9zZXR1cHNfdGVhcmRvd25zID0gW10gICMgdHlwZTogTGlzdFtzdHJd
CiAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKICAgICAgICAgc3lzLCAidHJhY2Vfc2V0dXBzX3Rl
YXJkb3ducyIsIHRyYWNlX3NldHVwc190ZWFyZG93bnMsIHJhaXNpbmc9RmFsc2UKICAgICApCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2Vzc2lvbi5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9zZXNzaW9uLnB5CmluZGV4IDRhNTk0MDA5YmFiNS4uMTgwMDc3MWRh
ZDU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2Vzc2lvbi5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2Vzc2lvbi5weQpAQCAtMSwxMiArMSw4IEBACi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1
bmN0aW9uCi0KIGltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRD
b2RlCiAKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX05PVEVTVFNDT0xMRUNURUQKLQot
Ci1jbGFzcyBTZXNzaW9uVGVzdHMob2JqZWN0KToKIAorY2xhc3MgU2Vzc2lvblRlc3RzOgogICAg
IGRlZiB0ZXN0X2Jhc2ljX3Rlc3RpdGVtX2V2ZW50cyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
dGZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTY4LDI4ICs2
NCwxNCBAQCBjbGFzcyBTZXNzaW9uVGVzdHMob2JqZWN0KToKICAgICAgICAgcGFzc2VkLCBza2lw
cGVkLCBmYWlsZWQgPSByZXByZWMubGlzdG91dGNvbWVzKCkKICAgICAgICAgYXNzZXJ0IGxlbihm
YWlsZWQpID09IDEKICAgICAgICAgb3V0ID0gZmFpbGVkWzBdLmxvbmdyZXByLnJlcHJjcmFzaC5t
ZXNzYWdlCi0gICAgICAgIGlmIG5vdCBvdXQuZmluZCgiRElEIE5PVCBSQUlTRSIpICE9IC0xOgot
ICAgICAgICAgICAgcHJpbnQob3V0KQotICAgICAgICAgICAgcHl0ZXN0LmZhaWwoImluY29ycmVj
dCByYWlzZXMoKSBvdXRwdXQiKQotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdG9yX3lpZWxkc19Ob25l
KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3Vy
Y2UoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAg
ICAgICAgICB5aWVsZCBOb25lCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGZhaWx1
cmVzID0gcmVwcmVjLmdldGZhaWxlZGNvbGxlY3Rpb25zKCkKLSAgICAgICAgb3V0ID0gZmFpbHVy
ZXNbMF0ubG9uZ3JlcHIucmVwcmNyYXNoLm1lc3NhZ2UKLSAgICAgICAgaSA9IG91dC5maW5kKCJU
eXBlRXJyb3IiKQotICAgICAgICBhc3NlcnQgaSAhPSAtMQorICAgICAgICBhc3NlcnQgIkRJRCBO
T1QgUkFJU0UiIGluIG91dAogCiAgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yX21vZHVsZShzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKCJ0
aGlzIGlzIHJlYWxseSBub3QgcHl0aG9uIikKICAgICAgICAgdmFsdWVzID0gcmVwcmVjLmdldGZh
aWxlZGNvbGxlY3Rpb25zKCkKICAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDEKICAgICAg
ICAgb3V0ID0gc3RyKHZhbHVlc1swXS5sb25ncmVwcikKLSAgICAgICAgYXNzZXJ0IG91dC5maW5k
KHN0cigibm90IHB5dGhvbiIpKSAhPSAtMQorICAgICAgICBhc3NlcnQgb3V0LmZpbmQoIm5vdCBw
eXRob24iKSAhPSAtMQogCiAgICAgZGVmIHRlc3RfZXhpdF9maXJzdF9wcm9ibGVtKHNlbGYsIHRl
c3RkaXIpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCkBAIC0x
MjAsMTUgKzEwMiwyMSBAQCBjbGFzcyBTZXNzaW9uVGVzdHMob2JqZWN0KToKICAgICAgICAgcCA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdAorCisgICAgICAgICAgICBjbGFzcyByZXByZXhjKEJhc2VFeGNlcHRpb24pOgorICAg
ICAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIkhhIEhhIGZvb2xlZCB5b3UsIEknbSBhIGJyb2tlbiByZXByKCkuIgorCiAgICAgICAgICAg
ICBjbGFzcyBCcm9rZW5SZXByMShvYmplY3QpOgogICAgICAgICAgICAgICAgIGZvbz0wCiAgICAg
ICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oIkhhIEhhIGZvb2xlZCB5b3UsIEknbSBhIGJyb2tlbiByZXByKCkuIikKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgcmVwcmV4YwogCiAgICAgICAgICAgICBjbGFzcyBUZXN0
QnJva2VuQ2xhc3Mob2JqZWN0KToKICAgICAgICAgICAgICAgICBkZWYgdGVzdF9leHBsaWNpdF9i
YWRfcmVwcihzZWxmKToKICAgICAgICAgICAgICAgICAgICAgdCA9IEJyb2tlblJlcHIxKCkKLSAg
ICAgICAgICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sICdyZXByKHQpJykKKyAg
ICAgICAgICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEJhc2VFeGNlcHRpb24sIG1hdGNo
PSJicm9rZW4gcmVwciIpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwcih0KQogCiAgICAg
ICAgICAgICAgICAgZGVmIHRlc3RfaW1wbGljaXRfYmFkX3JlcHIxKHNlbGYpOgogICAgICAgICAg
ICAgICAgICAgICB0ID0gQnJva2VuUmVwcjEoKQpAQCAtMTM4LDE0ICsxMjYsMzMgQEAgY2xhc3Mg
U2Vzc2lvblRlc3RzKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgcmVwcmVjID0gdGVzdGRp
ci5pbmxpbmVfcnVuKHApCiAgICAgICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbGVkID0gcmVwcmVj
Lmxpc3RvdXRjb21lcygpCi0gICAgICAgIGFzc2VydCBsZW4oZmFpbGVkKSA9PSAxCisgICAgICAg
IGFzc2VydCAobGVuKHBhc3NlZCksIGxlbihza2lwcGVkKSwgbGVuKGZhaWxlZCkpID09ICgxLCAw
LCAxKQogICAgICAgICBvdXQgPSBmYWlsZWRbMF0ubG9uZ3JlcHIucmVwcmNyYXNoLm1lc3NhZ2UK
LSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIG91dC5maW5kKAotICAgICAgICAgICAgICAg
ICIiIltFeGNlcHRpb24oIkhhIEhhIGZvb2xlZCB5b3UsIEknbSBhIGJyb2tlbiByZXByKCkuIikg
cmFpc2VkIGluIHJlcHIoKV0iIiIKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgICE9IC0xCi0g
ICAgICAgICkgICMgJworICAgICAgICBhc3NlcnQgb3V0LmZpbmQoIjxbcmVwcmV4YygpIHJhaXNl
ZCBpbiByZXByKCldIEJyb2tlblJlcHIxIikgIT0gLTEKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9y
ZXByX3dpdGhfc2hvd2xvY2Fsc192ZXJib3NlKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwID0g
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjbGFzcyBP
YmpXaXRoRXJyb3JJblJlcHI6CisgICAgICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgor
ICAgICAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X3JlcHJfZXJyb3IoKToKKyAgICAgICAgICAgICAgICB4ID0gT2JqV2l0aEVy
cm9ySW5SZXByKCkKKyAgICAgICAgICAgICAgICBhc3NlcnQgeCA9PSAidmFsdWUiCisgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLS1z
aG93bG9jYWxzIiwgIi12diIsIHApCisgICAgICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbGVkID0g
cmVwcmVjLmxpc3RvdXRjb21lcygpCisgICAgICAgIGFzc2VydCAobGVuKHBhc3NlZCksIGxlbihz
a2lwcGVkKSwgbGVuKGZhaWxlZCkpID09ICgwLCAwLCAxKQorICAgICAgICBlbnRyaWVzID0gZmFp
bGVkWzBdLmxvbmdyZXByLnJlcHJ0cmFjZWJhY2sucmVwcmVudHJpZXMKKyAgICAgICAgYXNzZXJ0
IGxlbihlbnRyaWVzKSA9PSAxCisgICAgICAgIHJlcHJfbG9jYWxzID0gZW50cmllc1swXS5yZXBy
bG9jYWxzCisgICAgICAgIGFzc2VydCByZXByX2xvY2Fscy5saW5lcworICAgICAgICBhc3NlcnQg
bGVuKHJlcHJfbG9jYWxzLmxpbmVzKSA9PSAxCisgICAgICAgIGFzc2VydCByZXByX2xvY2Fscy5s
aW5lc1swXS5zdGFydHN3aXRoKAorICAgICAgICAgICAgInggICAgICAgICAgPSA8W05vdEltcGxl
bWVudGVkRXJyb3IoKSByYWlzZWQgaW4gcmVwcigpXSBPYmpXaXRoRXJyb3JJblJlcHIiCisgICAg
ICAgICkKIAogICAgIGRlZiB0ZXN0X3NraXBfZmlsZV9ieV9jb25mdGVzdChzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMTYwLDcgKzE2Nyw3IEBAIGNsYXNz
IFNlc3Npb25UZXN0cyhvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bih0ZXN0ZGlyLnRtcGRpcikKLSAgICAgICAg
ZXhjZXB0IHB5dGVzdC5za2lwLkV4Y2VwdGlvbjoKKyAgICAgICAgZXhjZXB0IHB5dGVzdC5za2lw
LkV4Y2VwdGlvbjogICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcHl0ZXN0LmZhaWwo
Indyb25nIHNraXBwZWQgY2F1Z2h0IikKICAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBv
cnRzKCJweXRlc3RfY29sbGVjdHJlcG9ydCIpCiAgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykg
PT0gMQpAQCAtMTY4LDcgKzE3NSw2IEBAIGNsYXNzIFNlc3Npb25UZXN0cyhvYmplY3QpOgogCiAK
IGNsYXNzIFRlc3ROZXdTZXNzaW9uKFNlc3Npb25UZXN0cyk6Ci0KICAgICBkZWYgdGVzdF9vcmRl
cl9vZl9leGVjdXRpb24oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIu
aW5saW5lX3J1bnNvdXJjZSgKICAgICAgICAgICAgICIiIgpAQCAtMTk0LDcgKzIwMCw2IEBAIGNs
YXNzIFRlc3ROZXdTZXNzaW9uKFNlc3Npb25UZXN0cyk6CiAgICAgICAgIHBhc3NlZCwgc2tpcHBl
ZCwgZmFpbGVkID0gcmVwcmVjLmNvdW50b3V0Y29tZXMoKQogICAgICAgICBhc3NlcnQgZmFpbGVk
ID09IHNraXBwZWQgPT0gMAogICAgICAgICBhc3NlcnQgcGFzc2VkID09IDcKLSAgICAgICAgIyBh
bHNvIHRlc3QgbGlzdG5hbWVzKCkgaGVyZSAuLi4KIAogICAgIGRlZiB0ZXN0X2NvbGxlY3Rfb25s
eV93aXRoX3ZhcmlvdXNfc2l0dWF0aW9ucyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKQEAgLTIyMCw3ICsyMjUsNyBAQCBjbGFzcyBUZXN0TmV3U2Vzc2lv
bihTZXNzaW9uVGVzdHMpOgogICAgICAgICBzdGFydGVkID0gcmVwcmVjLmdldGNhbGxzKCJweXRl
c3RfY29sbGVjdHN0YXJ0IikKICAgICAgICAgZmluaXNoZWQgPSByZXByZWMuZ2V0cmVwb3J0cygi
cHl0ZXN0X2NvbGxlY3RyZXBvcnQiKQogICAgICAgICBhc3NlcnQgbGVuKHN0YXJ0ZWQpID09IGxl
bihmaW5pc2hlZCkKLSAgICAgICAgYXNzZXJ0IGxlbihzdGFydGVkKSA9PSA3ICAjIFhYWCBleHRy
YSBUb3BDb2xsZWN0b3IKKyAgICAgICAgYXNzZXJ0IGxlbihzdGFydGVkKSA9PSA4CiAgICAgICAg
IGNvbGZhaWwgPSBbeCBmb3IgeCBpbiBmaW5pc2hlZCBpZiB4LmZhaWxlZF0KICAgICAgICAgYXNz
ZXJ0IGxlbihjb2xmYWlsKSA9PSAxCiAKQEAgLTI0MiwxMiArMjQ3LDggQEAgY2xhc3MgVGVzdE5l
d1Nlc3Npb24oU2Vzc2lvblRlc3RzKToKIAogCiBkZWYgdGVzdF9wbHVnaW5fc3BlY2lmeSh0ZXN0
ZGlyKToKLSAgICBweXRlc3QucmFpc2VzKAotICAgICAgICBJbXBvcnRFcnJvciwKLSAgICAgICAg
IiIiCi0gICAgICAgICAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItcCIsICJucXdlb3RleGlzdGVu
dCIpCi0gICAgIiIiLAotICAgICkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3Ip
OgorICAgICAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItcCIsICJucXdlb3RleGlzdGVudCIpCiAg
ICAgIyBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yLAogICAgICMgICAgImNvbmZpZy5kb19jb25m
aWd1cmUoY29uZmlnKSIKICAgICAjICkKQEAgLTI3MSwyMCArMjcyLDQ1IEBAIGRlZiB0ZXN0X2V4
Y2x1ZGUodGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFz
c2VkKiJdKQogCiAKK2RlZiB0ZXN0X2V4Y2x1ZGVfZ2xvYih0ZXN0ZGlyKToKKyAgICBoZWxsb2Rp
ciA9IHRlc3RkaXIubWtkaXIoImhlbGxvIikKKyAgICBoZWxsb2Rpci5qb2luKCJ0ZXN0X2hlbGxv
LnB5Iikud3JpdGUoInggeSBzeW50YXhlcnJvciIpCisgICAgaGVsbG8yZGlyID0gdGVzdGRpci5t
a2RpcigiaGVsbG8yIikKKyAgICBoZWxsbzJkaXIuam9pbigidGVzdF9oZWxsbzIucHkiKS53cml0
ZSgieCB5IHN5bnRheGVycm9yIikKKyAgICBoZWxsbzNkaXIgPSB0ZXN0ZGlyLm1rZGlyKCJoYWxs
bzMiKQorICAgIGhlbGxvM2Rpci5qb2luKCJ0ZXN0X2hlbGxvMy5weSIpLndyaXRlKCJ4IHkgc3lu
dGF4ZXJyb3IiKQorICAgIHN1YmRpciA9IHRlc3RkaXIubWtkaXIoInN1YiIpCisgICAgc3ViZGly
LmpvaW4oInRlc3RfaGVsbG80LnB5Iikud3JpdGUoInggeSBzeW50YXhlcnJvciIpCisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKHRlc3Rfb2s9ImRlZiB0ZXN0X3Bhc3MoKTogcGFzcyIpCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0taWdub3JlLWdsb2I9KmhbZWFdbGxvKiIpCisgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IioxIHBhc3NlZCoiXSkKKworCiBkZWYgdGVzdF9kZXNlbGVjdCh0ZXN0ZGlyKToKICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgIHRlc3RfYT0iIiIKICAgICAgICAgaW1wb3J0IHB5dGVz
dAorCiAgICAgICAgIGRlZiB0ZXN0X2ExKCk6IHBhc3MKKwogICAgICAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoJ2InLCByYW5nZSgzKSkKICAgICAgICAgZGVmIHRlc3RfYTIoYik6IHBhc3MK
KworICAgICAgICBjbGFzcyBUZXN0Q2xhc3M6CisgICAgICAgICAgICBkZWYgdGVzdF9jMShzZWxm
KTogcGFzcworCisgICAgICAgICAgICBkZWYgdGVzdF9jMihzZWxmKTogcGFzcwogICAgICIiIgog
ICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgKLSAgICAgICAgIi12IiwgIi0t
ZGVzZWxlY3Q9dGVzdF9hLnB5Ojp0ZXN0X2EyWzFdIiwgIi0tZGVzZWxlY3Q9dGVzdF9hLnB5Ojp0
ZXN0X2EyWzJdIgorICAgICAgICAiLXYiLAorICAgICAgICAiLS1kZXNlbGVjdD10ZXN0X2EucHk6
OnRlc3RfYTJbMV0iLAorICAgICAgICAiLS1kZXNlbGVjdD10ZXN0X2EucHk6OnRlc3RfYTJbMl0i
LAorICAgICAgICAiLS1kZXNlbGVjdD10ZXN0X2EucHk6OlRlc3RDbGFzczo6dGVzdF9jMSIsCiAg
ICAgKQogICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqMiBwYXNzZWQsIDIgZGVzZWxlY3RlZCoiXSkKKyAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqMyBwYXNzZWQsIDMgZGVzZWxlY3RlZCoiXSkKICAgICBmb3IgbGlu
ZSBpbiByZXN1bHQuc3Rkb3V0LmxpbmVzOgogICAgICAgICBhc3NlcnQgbm90IGxpbmUuc3RhcnRz
d2l0aCgoInRlc3RfYS5weTo6dGVzdF9hMlsxXSIsICJ0ZXN0X2EucHk6OnRlc3RfYTJbMl0iKSkK
IApAQCAtMzA0LDcgKzMzMCw3IEBAIGRlZiB0ZXN0X3Nlc3Npb25maW5pc2hfd2l0aF9zdGFydCh0
ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
Y29sbGVjdC1vbmx5IikKLSAgICBhc3NlcnQgcmVzLnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNU
RUQKKyAgICBhc3NlcnQgcmVzLnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKIAog
CiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInBhdGgiLCBbInJvb3QiLCAie3JlbGF0aXZlfS9y
b290IiwgIntlbnZpcm9ubWVudH0vcm9vdCJdKQpAQCAtMzI0LDE5ICszNTAsMTUgQEAgZGVmIHRl
c3Rfcm9vdGRpcl9vcHRpb25fYXJnKHRlc3RkaXIsIG1vbmtleXBhdGNoLCBwYXRoKToKIAogICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXJvb3RkaXI9e30iLmZvcm1hdChwYXRoKSkK
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiKnJvb3RkaXI6IHt9
L3Jvb3QsIGluaWZpbGU6KiIuZm9ybWF0KHRlc3RkaXIudG1wZGlyKSwgIioxIHBhc3NlZCoiXQor
ICAgICAgICBbCisgICAgICAgICAgICAiKnJvb3RkaXI6IHt9L3Jvb3QiLmZvcm1hdCh0ZXN0ZGly
LnRtcGRpciksCisgICAgICAgICAgICAicm9vdC90ZXN0X3Jvb3RkaXJfb3B0aW9uX2FyZy5weSAq
IiwKKyAgICAgICAgICAgICIqMSBwYXNzZWQqIiwKKyAgICAgICAgXQogICAgICkKIAogCiBkZWYg
dGVzdF9yb290ZGlyX3dyb25nX29wdGlvbl9hcmcodGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgIGRlZiB0ZXN0
X29uZSgpOgotICAgICAgICAgICAgYXNzZXJ0IDEKLSAgICAiIiIKLSAgICApCi0KICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1yb290ZGlyPXdyb25nX2RpciIpCiAgICAgcmVzdWx0
LnN0ZGVyci5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbIipEaXJlY3RvcnkgKndyb25nX2Rpciog
bm90IGZvdW5kLiBDaGVjayB5b3VyICctLXJvb3RkaXInIG9wdGlvbi4qIl0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3NldHVwX29ubHkucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3Rfc2V0dXBvbmx5LnB5CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3NldHVwX29ubHkucHkKcmVuYW1lIHRvIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvdGVzdF9zZXR1cG9ubHkucHkKaW5kZXggNGFlMjRiMTVhNmRhLi5hNDNj
ODUwNjk2ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3NldHVwX29u
bHkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3NldHVwb25seS5weQpAQCAtMSw0
ICsxLDcgQEAKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmNvbmZp
ZyBpbXBvcnQgRXhpdENvZGUKIAogCiBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsiLS1zZXR1cC1v
bmx5IiwgIi0tc2V0dXAtcGxhbiIsICItLXNldHVwLXNob3ciXSwgc2NvcGU9Im1vZHVsZSIpCkBA
IC02LDggKzksOCBAQCBkZWYgbW9kZShyZXF1ZXN0KToKICAgICByZXR1cm4gcmVxdWVzdC5wYXJh
bQogCiAKLWRlZiB0ZXN0X3Nob3dfb25seV9hY3RpdmVfZml4dHVyZXModGVzdGRpciwgbW9kZSk6
Ci0gICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKK2RlZiB0ZXN0X3Nob3dfb25seV9hY3RpdmVf
Zml4dHVyZXModGVzdGRpciwgbW9kZSwgZHVtbXlfeWFtbF9jdXN0b21fdGVzdCk6CisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAnJycKICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAg
ICAgICBAcHl0ZXN0LmZpeHR1cmUKQEAgLTIxLDEzICsyNCwxMyBAQCBkZWYgdGVzdF9zaG93X29u
bHlfYWN0aXZlX2ZpeHR1cmVzKHRlc3RkaXIsIG1vZGUpOgogICAgICcnJwogICAgICkKIAotICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KG1vZGUsIHApCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QobW9kZSkKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsiKlNFVFVQICAgIEYgYXJnMSoiLCAi
KnRlc3RfYXJnMSAoZml4dHVyZXMgdXNlZDogYXJnMSkqIiwgIipURUFSRE9XTiBGIGFyZzEqIl0K
ICAgICApCi0gICAgYXNzZXJ0ICJfYXJnMCIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAg
ICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKl9hcmcwKiIpCiAKIAogZGVmIHRlc3Rf
c2hvd19kaWZmZXJlbnRfc2NvcGVzKHRlc3RkaXIsIG1vZGUpOgpAQCAtMTQ1LDEwICsxNDgsMTAg
QEAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc193aXRoX3BhcmFtZXRlcnModGVzdGRpciwgbW9kZSk6
CiAKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKLSAgICAgICAg
ICAgICJTRVRVUCAgICBTIGFyZ19zYW1lP2Zvbz8iLAotICAgICAgICAgICAgIlRFQVJET1dOIFMg
YXJnX3NhbWU/Zm9vPyIsCi0gICAgICAgICAgICAiU0VUVVAgICAgUyBhcmdfc2FtZT9iYXI/IiwK
LSAgICAgICAgICAgICJURUFSRE9XTiBTIGFyZ19zYW1lP2Jhcj8iLAorICAgICAgICAgICAgIlNF
VFVQICAgIFMgYXJnX3NhbWU/J2Zvbyc/IiwKKyAgICAgICAgICAgICJURUFSRE9XTiBTIGFyZ19z
YW1lPydmb28nPyIsCisgICAgICAgICAgICAiU0VUVVAgICAgUyBhcmdfc2FtZT8nYmFyJz8iLAor
ICAgICAgICAgICAgIlRFQVJET1dOIFMgYXJnX3NhbWU/J2Jhcic/IiwKICAgICAgICAgXQogICAg
ICkKIApAQCAtMTc4LDcgKzE4MSw3IEBAIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfd2l0aF9wYXJh
bWV0ZXJfaWRzKHRlc3RkaXIsIG1vZGUpOgogICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAog
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyJTRVRVUCAgICBTIGFy
Z19zYW1lP3NwYW0/IiwgIlNFVFVQICAgIFMgYXJnX3NhbWU/aGFtPyJdCisgICAgICAgIFsiU0VU
VVAgICAgUyBhcmdfc2FtZT8nc3BhbSc/IiwgIlNFVFVQICAgIFMgYXJnX3NhbWU/J2hhbSc/Il0K
ICAgICApCiAKIApAQCAtMTk3LDcgKzIwMCw5IEBAIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfd2l0
aF9wYXJhbWV0ZXJfaWRzX2Z1bmN0aW9uKHRlc3RkaXIsIG1vZGUpOgogICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KG1vZGUsIHApCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCi0g
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKlNFVFVQICAgIEYgZm9vYmFyP0ZPTz8i
LCAiKlNFVFVQICAgIEYgZm9vYmFyP0JBUj8iXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoCisgICAgICAgIFsiKlNFVFVQICAgIEYgZm9vYmFyPydGT08nPyIsICIqU0VUVVAgICAg
RiBmb29iYXI/J0JBUic/Il0KKyAgICApCiAKIAogZGVmIHRlc3RfZHluYW1pY19maXh0dXJlX3Jl
cXVlc3QodGVzdGRpcik6CkBAIC0yNDksNyArMjU0LDcgQEAgZGVmIHRlc3RfY2FwdHVyaW5nKHRl
c3RkaXIpOgogCiAKIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfYW5kX2V4ZWN1dGVfdGVzdCh0ZXN0
ZGlyKToKLSAgICAiIiIgVmVyaWZpZXMgdGhhdCBzZXR1cHMgYXJlIHNob3duIGFuZCB0ZXN0cyBh
cmUgZXhlY3V0ZWQuICIiIgorICAgICIiIlZlcmlmeSB0aGF0IHNldHVwcyBhcmUgc2hvd24gYW5k
IHRlc3RzIGFyZSBleGVjdXRlZC4iIiIKICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAg
ICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjY3LDMgKzI3Miw0NCBAQCBkZWYg
dGVzdF9zaG93X2ZpeHR1cmVzX2FuZF9leGVjdXRlX3Rlc3QodGVzdGRpcik6CiAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbIipTRVRVUCAgICBGIGFyZyoiLCAiKnRl
c3RfYXJnIChmaXh0dXJlcyB1c2VkOiBhcmcpRioiLCAiKlRFQVJET1dOIEYgYXJnKiJdCiAgICAg
KQorCisKK2RlZiB0ZXN0X3NldHVwX3Nob3dfd2l0aF9LZXlib2FyZEludGVycnVwdF9pbl90ZXN0
KHRlc3RkaXIpOgorICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAg
ICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYg
YXJnKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiB0ZXN0X2FyZyhhcmcpOgorICAg
ICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQoKQorICAgICIiIgorICAgICkKKyAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zZXR1cC1zaG93IiwgcCwgbm9fcmVyYWlzZV9j
dHJsYz1UcnVlKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWwor
ICAgICAgICAgICAgIipTRVRVUCAgICBGIGFyZyoiLAorICAgICAgICAgICAgIip0ZXN0X2FyZyAo
Zml4dHVyZXMgdXNlZDogYXJnKSoiLAorICAgICAgICAgICAgIipURUFSRE9XTiBGIGFyZyoiLAor
ICAgICAgICAgICAgIiohIEtleWJvYXJkSW50ZXJydXB0ICEqIiwKKyAgICAgICAgICAgICIqPSBu
byB0ZXN0cyByYW4gaW4gKiIsCisgICAgICAgIF0KKyAgICApCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuSU5URVJSVVBURUQKKworCitkZWYgdGVzdF9zaG93X2ZpeHR1cmVfYWN0
aW9uX3dpdGhfYnl0ZXModGVzdGRpcik6CisgICAgIyBJc3N1ZSA3MTI2LCBCeXRlc1dhcm5pbmcg
d2hlbiB1c2luZyAtLXNldHVwLXNob3cgd2l0aCBieXRlcyBwYXJhbWV0ZXIKKyAgICB0ZXN0X2Zp
bGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0
ZXN0CisKKyAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdkYXRhJywgW2InSGVsbG8g
V29ybGQnXSkKKyAgICAgICAgZGVmIHRlc3RfZGF0YShkYXRhKToKKyAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVuKAorICAgICAgICBz
eXMuZXhlY3V0YWJsZSwgIi1iYiIsICItbSIsICJweXRlc3QiLCAiLS1zZXR1cC1zaG93Iiwgc3Ry
KHRlc3RfZmlsZSkKKyAgICApCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3NldHVwcGxhbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvdGVzdF9zZXR1cHBsYW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45MjllODgzY2NlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3Rfc2V0dXBwbGFuLnB5CkBAIC0wLDAgKzEsMTExIEBACitkZWYgdGVzdF9zaG93X2Zp
eHR1cmVzX2FuZF90ZXN0KHRlc3RkaXIsIGR1bW15X3lhbWxfY3VzdG9tX3Rlc3QpOgorICAgICIi
IlZlcmlmeSB0aGF0IGZpeHR1cmVzIGFyZSBub3QgZXhlY3V0ZWQuIiIiCisgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGFyZygpOgorICAgICAgICAgICAgYXNzZXJ0IEZh
bHNlCisgICAgICAgIGRlZiB0ZXN0X2FyZyhhcmcpOgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNl
CisgICAgIiIiCisgICAgKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tc2V0
dXAtcGxhbiIpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIipTRVRVUCAgICBGIGFyZyoiLCAiKnRlc3RfYXJn
IChmaXh0dXJlcyB1c2VkOiBhcmcpIiwgIipURUFSRE9XTiBGIGFyZyoiXQorICAgICkKKworCitk
ZWYgdGVzdF9zaG93X211bHRpX3Rlc3RfZml4dHVyZV9zZXR1cF9hbmRfdGVhcmRvd25fY29ycmVj
dGx5X3NpbXBsZSh0ZXN0ZGlyKToKKyAgICAiIiJWZXJpZnkgdGhhdCB3aGVuIGEgZml4dHVyZSBs
aXZlcyBmb3IgbG9uZ2VyIHRoYW4gYSBzaW5nbGUgdGVzdCwgLS1zZXR1cC1wbGFuCisgICAgY29y
cmVjdGx5IGRpc3BsYXlzIHRoZSBTRVRVUC9URUFSRE9XTiBpbmRpY2F0b3JzIHRoZSByaWdodCBu
dW1iZXIgb2YgdGltZXMuCisKKyAgICBBcyByZXBvcnRlZCBpbiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwNDkKKyAgICAtLXNldHVwLXBsYW4gd2FzIHNob3dp
bmcgU0VUVVAvVEVBUkRPV04gb24gZXZlcnkgdGVzdCwgZXZlbiB3aGVuIHRoZSBmaXh0dXJlCisg
ICAgc2hvdWxkIHBlcnNpc3QgdGhyb3VnaCBtdWx0aXBsZSB0ZXN0cy4KKworICAgIChOb3RlIHRo
YXQgdGhpcyBidWcgbmV2ZXIgYWZmZWN0ZWQgYWN0dWFsIHRlc3QgZXhlY3V0aW9uLCB3aGljaCB1
c2VkIHRoZQorICAgIGNvcnJlY3QgZml4dHVyZSBsaWZldGltZXMuIEl0IHdhcyBwdXJlbHkgYSBk
aXNwbGF5IGJ1ZyBmb3IgLS1zZXR1cC1wbGFuLCBhbmQKKyAgICBkaWQgbm90IGFmZmVjdCB0aGUg
cmVsYXRlZCAtLXNldHVwLXNob3cgb3IgLS1zZXR1cC1vbmx5LikKKyAgICAiIiIKKyAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAg
ICAgIEBweXRlc3QuZml4dHVyZShzY29wZSA9ICdjbGFzcycpCisgICAgICAgIGRlZiBmaXgoKToK
KyAgICAgICAgICAgIHJldHVybiBvYmplY3QoKQorICAgICAgICBjbGFzcyBUZXN0Q2xhc3M6Cisg
ICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgZml4KToKKyAgICAgICAgICAgICAgICBhc3Nl
cnQgRmFsc2UKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmLCBmaXgpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBGYWxzZQorICAgICIiIgorICAgICkKKworICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItLXNldHVwLXBsYW4iKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAK
KworICAgIHNldHVwX2ZyYWdtZW50ID0gIlNFVFVQICAgIEMgZml4IgorICAgIHNldHVwX2NvdW50
ID0gMAorCisgICAgdGVhcmRvd25fZnJhZ21lbnQgPSAiVEVBUkRPV04gQyBmaXgiCisgICAgdGVh
cmRvd25fY291bnQgPSAwCisKKyAgICBmb3IgbGluZSBpbiByZXN1bHQuc3Rkb3V0LmxpbmVzOgor
ICAgICAgICBpZiBzZXR1cF9mcmFnbWVudCBpbiBsaW5lOgorICAgICAgICAgICAgc2V0dXBfY291
bnQgKz0gMQorICAgICAgICBpZiB0ZWFyZG93bl9mcmFnbWVudCBpbiBsaW5lOgorICAgICAgICAg
ICAgdGVhcmRvd25fY291bnQgKz0gMQorCisgICAgIyBiZWZvcmUgdGhlIGZpeCB0aGlzIHRlc3Rz
LCB0aGVyZSB3b3VsZCBoYXZlIGJlZW4gYSBzZXR1cC90ZWFyZG93bgorICAgICMgbWVzc2FnZSBm
b3IgZWFjaCB0ZXN0LCBzbyB0aGUgY291bnRzIHdvdWxkIGVhY2ggaGF2ZSBiZWVuIDIKKyAgICBh
c3NlcnQgc2V0dXBfY291bnQgPT0gMQorICAgIGFzc2VydCB0ZWFyZG93bl9jb3VudCA9PSAxCisK
KworZGVmIHRlc3Rfc2hvd19tdWx0aV90ZXN0X2ZpeHR1cmVfc2V0dXBfYW5kX3RlYXJkb3duX3Nh
bWVfYXNfc2V0dXBfc2hvdyh0ZXN0ZGlyKToKKyAgICAiIiJWZXJpZnkgdGhhdCBTRVRVUC9URUFS
RE9XTiBtZXNzYWdlcyBtYXRjaCB3aGF0IGNvbWVzIG91dCBvZiAtLXNldHVwLXNob3cuIiIiCisg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVz
dAorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGUgPSAnc2Vzc2lvbicpCisgICAgICAgIGRl
ZiBzZXNzKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUoc2NvcGUgPSAnbW9kdWxlJykKKyAgICAgICAgZGVmIG1vZCgpOgorICAgICAgICAgICAgcmV0
dXJuIFRydWUKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlID0gJ2NsYXNzJykKKyAgICAg
ICAgZGVmIGNscygpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgQHB5dGVzdC5m
aXh0dXJlKHNjb3BlID0gJ2Z1bmN0aW9uJykKKyAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgIGRlZiB0ZXN0X291dHNpZGUoc2VzcywgbW9kLCBjbHMs
IGZ1bmMpOgorICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAgICAgY2xhc3MgVGVzdENsczoK
KyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmLCBzZXNzLCBtb2QsIGNscywgZnVuYyk6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxm
LCBzZXNzLCBtb2QsIGNscywgZnVuYyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAg
ICAiIiIKKyAgICApCisKKyAgICBwbGFuX3Jlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXNl
dHVwLXBsYW4iKQorICAgIHNob3dfcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tc2V0dXAt
c2hvdyIpCisKKyAgICAjIHRoZSBudW1iZXIgYW5kIHRleHQgb2YgdGhlc2UgbGluZXMgc2hvdWxk
IGJlIGlkZW50aWNhbAorICAgIHBsYW5fbGluZXMgPSBbCisgICAgICAgIGxpbmUKKyAgICAgICAg
Zm9yIGxpbmUgaW4gcGxhbl9yZXN1bHQuc3Rkb3V0LmxpbmVzCisgICAgICAgIGlmICJTRVRVUCIg
aW4gbGluZSBvciAiVEVBUkRPV04iIGluIGxpbmUKKyAgICBdCisgICAgc2hvd19saW5lcyA9IFsK
KyAgICAgICAgbGluZQorICAgICAgICBmb3IgbGluZSBpbiBzaG93X3Jlc3VsdC5zdGRvdXQubGlu
ZXMKKyAgICAgICAgaWYgIlNFVFVQIiBpbiBsaW5lIG9yICJURUFSRE9XTiIgaW4gbGluZQorICAg
IF0KKworICAgIGFzc2VydCBwbGFuX2xpbmVzID09IHNob3dfbGluZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9za2lwcGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
dGVzdF9za2lwcGluZy5weQppbmRleCA1ZDk3MGUyZmVhMGEuLmIzMmQyMjY3ZDIxOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3NraXBwaW5nLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9za2lwcGluZy5weQpAQCAtMSw4NiArMSw3NiBAQAotZnJvbSBfX2Z1
dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgot
aW1wb3J0IHB5dGVzdAogaW1wb3J0IHN5cwogCi1mcm9tIF9weXRlc3Quc2tpcHBpbmcgaW1wb3J0
IE1hcmtFdmFsdWF0b3IsIGZvbGRlZF9za2lwcywgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAKK2ltcG9y
dCBweXRlc3QKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgVGVzdGRpcgogZnJvbSBfcHl0
ZXN0LnJ1bm5lciBpbXBvcnQgcnVudGVzdHByb3RvY29sCitmcm9tIF9weXRlc3Quc2tpcHBpbmcg
aW1wb3J0IGV2YWx1YXRlX3NraXBfbWFya3MKK2Zyb20gX3B5dGVzdC5za2lwcGluZyBpbXBvcnQg
ZXZhbHVhdGVfeGZhaWxfbWFya3MKK2Zyb20gX3B5dGVzdC5za2lwcGluZyBpbXBvcnQgcHl0ZXN0
X3J1bnRlc3Rfc2V0dXAKIAogCi1jbGFzcyBUZXN0RXZhbHVhdG9yKG9iamVjdCk6Ci0KK2NsYXNz
IFRlc3RFdmFsdWF0aW9uOgogICAgIGRlZiB0ZXN0X25vX21hcmtlcihzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgiZGVmIHRlc3RfZnVuYygpOiBwYXNzIikK
LSAgICAgICAgZXZhbHNraXBpZiA9IE1hcmtFdmFsdWF0b3IoaXRlbSwgInNraXBpZiIpCi0gICAg
ICAgIGFzc2VydCBub3QgZXZhbHNraXBpZgotICAgICAgICBhc3NlcnQgbm90IGV2YWxza2lwaWYu
aXN0cnVlKCkKKyAgICAgICAgc2tpcHBlZCA9IGV2YWx1YXRlX3NraXBfbWFya3MoaXRlbSkKKyAg
ICAgICAgYXNzZXJ0IG5vdCBza2lwcGVkCiAKLSAgICBkZWYgdGVzdF9tYXJrZWRfbm9fYXJncyhz
ZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9tYXJrZWRfeGZhaWxfbm9fYXJncyhzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIi
IgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnh5
egorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCiAgICAgICAgICAgICBkZWYgdGVzdF9m
dW5jKCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAg
ICAgICBldiA9IE1hcmtFdmFsdWF0b3IoaXRlbSwgInh5eiIpCi0gICAgICAgIGFzc2VydCBldgot
ICAgICAgICBhc3NlcnQgZXYuaXN0cnVlKCkKLSAgICAgICAgZXhwbCA9IGV2LmdldGV4cGxhbmF0
aW9uKCkKLSAgICAgICAgYXNzZXJ0IGV4cGwgPT0gIiIKLSAgICAgICAgYXNzZXJ0IG5vdCBldi5n
ZXQoInJ1biIsIEZhbHNlKQorICAgICAgICB4ZmFpbGVkID0gZXZhbHVhdGVfeGZhaWxfbWFya3Mo
aXRlbSkKKyAgICAgICAgYXNzZXJ0IHhmYWlsZWQKKyAgICAgICAgYXNzZXJ0IHhmYWlsZWQucmVh
c29uID09ICIiCisgICAgICAgIGFzc2VydCB4ZmFpbGVkLnJ1bgogCi0gICAgZGVmIHRlc3RfbWFy
a2VkX29uZV9hcmcoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfbWFya2VkX3NraXBpZl9u
b19hcmdzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBA
cHl0ZXN0Lm1hcmsueHl6KCJoYXNhdHRyKG9zLCAnc2VwJykiKQorICAgICAgICAgICAgQHB5dGVz
dC5tYXJrLnNraXBpZgogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgogICAgICAgICAgICAg
ICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgZXYgPSBNYXJrRXZhbHVh
dG9yKGl0ZW0sICJ4eXoiKQotICAgICAgICBhc3NlcnQgZXYKLSAgICAgICAgYXNzZXJ0IGV2Lmlz
dHJ1ZSgpCi0gICAgICAgIGV4cGwgPSBldi5nZXRleHBsYW5hdGlvbigpCi0gICAgICAgIGFzc2Vy
dCBleHBsID09ICJjb25kaXRpb246IGhhc2F0dHIob3MsICdzZXAnKSIKLQotICAgIEBweXRlc3Qu
bWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMyIpCi0gICAgZGVmIHRlc3RfbWFy
a2VkX29uZV9hcmdfdW5pY29kZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgc2tpcHBlZCA9IGV2
YWx1YXRlX3NraXBfbWFya3MoaXRlbSkKKyAgICAgICAgYXNzZXJ0IHNraXBwZWQKKyAgICAgICAg
YXNzZXJ0IHNraXBwZWQucmVhc29uID09ICIiCisKKyAgICBkZWYgdGVzdF9tYXJrZWRfb25lX2Fy
ZyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVz
dC5tYXJrLnh5eih1Imhhc2F0dHIob3MsICdzZXAnKSIpCisgICAgICAgICAgICBAcHl0ZXN0Lm1h
cmsuc2tpcGlmKCJoYXNhdHRyKG9zLCAnc2VwJykiKQogICAgICAgICAgICAgZGVmIHRlc3RfZnVu
YygpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAg
ICAgZXYgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICJ4eXoiKQotICAgICAgICBhc3NlcnQgZXYKLSAg
ICAgICAgYXNzZXJ0IGV2LmlzdHJ1ZSgpCi0gICAgICAgIGV4cGwgPSBldi5nZXRleHBsYW5hdGlv
bigpCi0gICAgICAgIGFzc2VydCBleHBsID09ICJjb25kaXRpb246IGhhc2F0dHIob3MsICdzZXAn
KSIKKyAgICAgICAgc2tpcHBlZCA9IGV2YWx1YXRlX3NraXBfbWFya3MoaXRlbSkKKyAgICAgICAg
YXNzZXJ0IHNraXBwZWQKKyAgICAgICAgYXNzZXJ0IHNraXBwZWQucmVhc29uID09ICJjb25kaXRp
b246IGhhc2F0dHIob3MsICdzZXAnKSIKIAogICAgIGRlZiB0ZXN0X21hcmtlZF9vbmVfYXJnX3dp
dGhfcmVhc29uKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVt
KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAg
ICBAcHl0ZXN0Lm1hcmsueHl6KCJoYXNhdHRyKG9zLCAnc2VwJykiLCBhdHRyPTIsIHJlYXNvbj0i
aGVsbG8gd29ybGQiKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnNraXBpZigiaGFzYXR0cihv
cywgJ3NlcCcpIiwgYXR0cj0yLCByZWFzb249ImhlbGxvIHdvcmxkIikKICAgICAgICAgICAgIGRl
ZiB0ZXN0X2Z1bmMoKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAg
ICApCi0gICAgICAgIGV2ID0gTWFya0V2YWx1YXRvcihpdGVtLCAieHl6IikKLSAgICAgICAgYXNz
ZXJ0IGV2Ci0gICAgICAgIGFzc2VydCBldi5pc3RydWUoKQotICAgICAgICBleHBsID0gZXYuZ2V0
ZXhwbGFuYXRpb24oKQotICAgICAgICBhc3NlcnQgZXhwbCA9PSAiaGVsbG8gd29ybGQiCi0gICAg
ICAgIGFzc2VydCBldi5nZXQoImF0dHIiKSA9PSAyCisgICAgICAgIHNraXBwZWQgPSBldmFsdWF0
ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgICAgIGFzc2VydCBza2lwcGVkCisgICAgICAgIGFzc2Vy
dCBza2lwcGVkLnJlYXNvbiA9PSAiaGVsbG8gd29ybGQiCiAKICAgICBkZWYgdGVzdF9tYXJrZWRf
b25lX2FyZ190d2ljZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgbGluZXMgPSBbCiAgICAgICAg
ICAgICAiIiJAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJub3QgaGFzYXR0cihvcywgJ211cmtzJykiKSIi
IiwKLSAgICAgICAgICAgICIiIkBweXRlc3QubWFyay5za2lwaWYoImhhc2F0dHIob3MsICdtdXJr
cycpIikiIiIsCisgICAgICAgICAgICAiIiJAcHl0ZXN0Lm1hcmsuc2tpcGlmKGNvbmRpdGlvbj0i
aGFzYXR0cihvcywgJ211cmtzJykiKSIiIiwKICAgICAgICAgXQogICAgICAgICBmb3IgaSBpbiBy
YW5nZSgwLCAyKToKICAgICAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0oCkBAIC05Mywx
MSArODMsOSBAQCBjbGFzcyBUZXN0RXZhbHVhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICAiIiIK
ICAgICAgICAgICAgICAgICAlIChsaW5lc1tpXSwgbGluZXNbKGkgKyAxKSAlIDJdKQogICAgICAg
ICAgICAgKQotICAgICAgICAgICAgZXYgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICJza2lwaWYiKQot
ICAgICAgICAgICAgYXNzZXJ0IGV2Ci0gICAgICAgICAgICBhc3NlcnQgZXYuaXN0cnVlKCkKLSAg
ICAgICAgICAgIGV4cGwgPSBldi5nZXRleHBsYW5hdGlvbigpCi0gICAgICAgICAgICBhc3NlcnQg
ZXhwbCA9PSAiY29uZGl0aW9uOiBub3QgaGFzYXR0cihvcywgJ211cmtzJykiCisgICAgICAgICAg
ICBza2lwcGVkID0gZXZhbHVhdGVfc2tpcF9tYXJrcyhpdGVtKQorICAgICAgICAgICAgYXNzZXJ0
IHNraXBwZWQKKyAgICAgICAgICAgIGFzc2VydCBza2lwcGVkLnJlYXNvbiA9PSAiY29uZGl0aW9u
OiBub3QgaGFzYXR0cihvcywgJ211cmtzJykiCiAKICAgICBkZWYgdGVzdF9tYXJrZWRfb25lX2Fy
Z190d2ljZTIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0o
CkBAIC0xMDksMTMgKzk3LDExIEBAIGNsYXNzIFRlc3RFdmFsdWF0b3Iob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIGV2ID0gTWFy
a0V2YWx1YXRvcihpdGVtLCAic2tpcGlmIikKLSAgICAgICAgYXNzZXJ0IGV2Ci0gICAgICAgIGFz
c2VydCBldi5pc3RydWUoKQotICAgICAgICBleHBsID0gZXYuZ2V0ZXhwbGFuYXRpb24oKQotICAg
ICAgICBhc3NlcnQgZXhwbCA9PSAiY29uZGl0aW9uOiBub3QgaGFzYXR0cihvcywgJ211cmtzJyki
CisgICAgICAgIHNraXBwZWQgPSBldmFsdWF0ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgICAgIGFz
c2VydCBza2lwcGVkCisgICAgICAgIGFzc2VydCBza2lwcGVkLnJlYXNvbiA9PSAiY29uZGl0aW9u
OiBub3QgaGFzYXR0cihvcywgJ211cmtzJykiCiAKLSAgICBkZWYgdGVzdF9tYXJrZWRfc2tpcF93
aXRoX25vdF9zdHJpbmcoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfbWFya2VkX3NraXBp
Zl93aXRoX2Jvb2xlYW5fd2l0aG91dF9yZWFzb24oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAg
ICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdApAQCAtMTI0LDEyICsxMTAsMzYgQEAgY2xhc3MgVGVzdEV2YWx1YXRv
cihvYmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkK
LSAgICAgICAgZXYgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICJza2lwaWYiKQotICAgICAgICBleGMg
PSBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbiwgZXYuaXN0cnVlKQotICAgICAg
ICBhc3NlcnQgIiIiRmFpbGVkOiB5b3UgbmVlZCB0byBzcGVjaWZ5IHJlYXNvbj1TVFJJTkcgd2hl
biB1c2luZyBib29sZWFucyBhcyBjb25kaXRpb25zLiIiIiBpbiBleGMudmFsdWUubXNnCisgICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24pIGFzIGV4Y2luZm86
CisgICAgICAgICAgICBldmFsdWF0ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgICAgIGFzc2VydCBl
eGNpbmZvLnZhbHVlLm1zZyBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgKAorICAgICAgICAg
ICAgIiIiRXJyb3IgZXZhbHVhdGluZyAnc2tpcGlmJzogeW91IG5lZWQgdG8gc3BlY2lmeSByZWFz
b249U1RSSU5HIHdoZW4gdXNpbmcgYm9vbGVhbnMgYXMgY29uZGl0aW9ucy4iIiIKKyAgICAgICAg
ICAgIGluIGV4Y2luZm8udmFsdWUubXNnCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X21hcmtl
ZF9za2lwaWZfd2l0aF9pbnZhbGlkX2Jvb2xlYW4oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKKyAg
ICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBjbGFzcyBJbnZhbGlkQm9vbDoKKyAgICAg
ICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcigiSU5WQUxJRCIpCisKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5za2lwaWYo
SW52YWxpZEJvb2woKSwgcmVhc29uPSJ4eHgiKQorICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygp
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbikgYXMgZXhjaW5mbzoKKyAg
ICAgICAgICAgIGV2YWx1YXRlX3NraXBfbWFya3MoaXRlbSkKKyAgICAgICAgYXNzZXJ0IGV4Y2lu
Zm8udmFsdWUubXNnIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCAiRXJyb3IgZXZhbHVhdGlu
ZyAnc2tpcGlmJyBjb25kaXRpb24gYXMgYSBib29sZWFuIiBpbiBleGNpbmZvLnZhbHVlLm1zZwor
ICAgICAgICBhc3NlcnQgIklOVkFMSUQiIGluIGV4Y2luZm8udmFsdWUubXNnCiAKICAgICBkZWYg
dGVzdF9za2lwaWZfY2xhc3Moc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGl0ZW0sID0gdGVzdGRp
ci5nZXRpdGVtcygKKyAgICAgICAgKGl0ZW0sKSA9IHRlc3RkaXIuZ2V0aXRlbXMoCiAgICAgICAg
ICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgICAgIGNsYXNzIFRl
c3RDbGFzcyhvYmplY3QpOgpAQCAtMTM5LDE0ICsxNDksMTIgQEAgY2xhc3MgVGVzdEV2YWx1YXRv
cihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICBpdGVtLmNvbmZpZy5f
aGFja3h5eiA9IDMKLSAgICAgICAgZXYgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICJza2lwaWYiKQot
ICAgICAgICBhc3NlcnQgZXYuaXN0cnVlKCkKLSAgICAgICAgZXhwbCA9IGV2LmdldGV4cGxhbmF0
aW9uKCkKLSAgICAgICAgYXNzZXJ0IGV4cGwgPT0gImNvbmRpdGlvbjogY29uZmlnLl9oYWNreHl6
IgotCisgICAgICAgIHNraXBwZWQgPSBldmFsdWF0ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgICAg
IGFzc2VydCBza2lwcGVkCisgICAgICAgIGFzc2VydCBza2lwcGVkLnJlYXNvbiA9PSAiY29uZGl0
aW9uOiBjb25maWcuX2hhY2t4eXoiCiAKLWNsYXNzIFRlc3RYRmFpbChvYmplY3QpOgogCitjbGFz
cyBUZXN0WEZhaWw6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzdHJpY3QiLCBbVHJ1
ZSwgRmFsc2VdKQogICAgIGRlZiB0ZXN0X3hmYWlsX3NpbXBsZShzZWxmLCB0ZXN0ZGlyLCBzdHJp
Y3QpOgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKApAQCAtMTgwLDkgKzE4OCw3IEBA
IGNsYXNzIFRlc3RYRmFpbChvYmplY3QpOgogICAgICAgICBhc3NlcnQgY2FsbHJlcG9ydC53YXN4
ZmFpbCA9PSAidGhpcyBpcyBhbiB4ZmFpbCIKIAogICAgIGRlZiB0ZXN0X3hmYWlsX3VzaW5nX3Bs
YXRmb3JtKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiIKLSAgICAgICAgVmVyaWZ5IHRoYXQg
cGxhdGZvcm0gY2FuIGJlIHVzZWQgd2l0aCB4ZmFpbCBzdGF0ZW1lbnRzLgotICAgICAgICAiIiIK
KyAgICAgICAgIiIiVmVyaWZ5IHRoYXQgcGxhdGZvcm0gY2FuIGJlIHVzZWQgd2l0aCB4ZmFpbCBz
dGF0ZW1lbnRzLiIiIgogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAogICAgICAgICAg
ICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0yMDksNyArMjE1LDcgQEAgY2xh
c3MgVGVzdFhGYWlsKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMwog
ICAgICAgICBjYWxscmVwb3J0ID0gcmVwb3J0c1sxXQogICAgICAgICBhc3NlcnQgY2FsbHJlcG9y
dC5mYWlsZWQKLSAgICAgICAgYXNzZXJ0IGNhbGxyZXBvcnQubG9uZ3JlcHIgPT0gIltYUEFTUyhz
dHJpY3QpXSBub3BlIgorICAgICAgICBhc3NlcnQgc3RyKGNhbGxyZXBvcnQubG9uZ3JlcHIpID09
ICJbWFBBU1Moc3RyaWN0KV0gbm9wZSIKICAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGNhbGxy
ZXBvcnQsICJ3YXN4ZmFpbCIpCiAKICAgICBkZWYgdGVzdF94ZmFpbF9ydW5fYW55d2F5KHNlbGYs
IHRlc3RkaXIpOgpAQCAtMjI4LDYgKzIzNCwzMSBAQCBjbGFzcyBUZXN0WEZhaWwob2JqZWN0KToK
ICAgICAgICAgICAgIFsiKmRlZiB0ZXN0X2Z1bmMoKToqIiwgIiphc3NlcnQgMCoiLCAiKjEgZmFp
bGVkKjEgcGFzcyoiXQogICAgICAgICApCiAKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgICAgICJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwKKyAgICAgICAgWworICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgIFsiLXJzIl0sCisgICAgICAgICAgICAgICAgWyJTS0lQUEVEIFsx
XSB0ZXN0X3NhbXBsZS5weToyOiB1bmNvbmRpdGlvbmFsIHNraXAiLCAiKjEgc2tpcHBlZCoiXSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgWyItcnMiLCAi
LS1ydW54ZmFpbCJdLAorICAgICAgICAgICAgICAgIFsiU0tJUFBFRCBbMV0gdGVzdF9zYW1wbGUu
cHk6MjogdW5jb25kaXRpb25hbCBza2lwIiwgIioxIHNraXBwZWQqIl0sCisgICAgICAgICAgICAp
LAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF94ZmFpbF9ydW5fd2l0aF9za2lwX21h
cmsoc2VsZiwgdGVzdGRpciwgdGVzdF9pbnB1dCwgZXhwZWN0ZWQpOgorICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X3NhbXBsZT0iIiIKKyAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5za2lwCisgICAgICAgICAgICBk
ZWYgdGVzdF9za2lwX2xvY2F0aW9uKCkgLT4gTm9uZToKKyAgICAgICAgICAgICAgICBhc3NlcnQg
MAorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgqdGVzdF9pbnB1dCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKGV4
cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfeGZhaWxfZXZhbGZhbHNlX2J1dF9mYWlscyhzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIi
IgpAQCAtMzI1LDcgKzM1Niw3IEBAIGNsYXNzIFRlc3RYRmFpbChvYmplY3QpOgogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwLCAiLXJ4IikKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKlhGQUlMKnRlc3RfdGhpcyoiLCAiKnJlYXNvbjoqaGVsbG8qIl0p
CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICItLXJ1bnhmYWlsIikKLSAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBwYXNzKiIpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3MqIl0pCiAKICAgICBkZWYgdGVzdF94
ZmFpbF9pbXBlcmF0aXZlX2luX3NldHVwX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtMzkzLDYgKzQyNCwzMyBAQCBjbGFzcyBUZXN0
WEZhaWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKICAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgeGZhaWxlZCoiXSkKIAorICAg
IGRlZiB0ZXN0X2R5bmFtaWNfeGZhaWxfc2V0X2R1cmluZ19ydW50ZXN0X2ZhaWxlZChzZWxmLCB0
ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAjIElzc3VlICM3NDg2LgorICAgICAg
ICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBkZWYgdGVzdF90aGlzKHJlcXVlc3QpOgorICAgICAg
ICAgICAgICAgIHJlcXVlc3Qubm9kZS5hZGRfbWFya2VyKHB5dGVzdC5tYXJrLnhmYWlsKHJlYXNv
bj0ieGZhaWwiKSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQorICAgICAgICByZXN1
bHQuYXNzZXJ0X291dGNvbWVzKHhmYWlsZWQ9MSkKKworICAgIGRlZiB0ZXN0X2R5bmFtaWNfeGZh
aWxfc2V0X2R1cmluZ19ydW50ZXN0X3Bhc3NlZF9zdHJpY3QoCisgICAgICAgIHNlbGYsIHRlc3Rk
aXI6IFRlc3RkaXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICMgSXNzdWUgIzc0ODYuCisgICAg
ICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0X3RoaXMocmVxdWVzdCk6CisgICAg
ICAgICAgICAgICAgcmVxdWVzdC5ub2RlLmFkZF9tYXJrZXIocHl0ZXN0Lm1hcmsueGZhaWwocmVh
c29uPSJ4ZmFpbCIsIHN0cmljdD1UcnVlKSkKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKKyAgICAgICAgcmVzdWx0LmFzc2VydF9v
dXRjb21lcyhmYWlsZWQ9MSkKKwogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKICAgICAg
ICAgImV4cGVjdGVkLCBhY3R1YWwsIG1hdGNobGluZSIsCiAgICAgICAgIFsKQEAgLTQxNiw5ICs0
NzQsOCBAQCBjbGFzcyBUZXN0WEZhaWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKFttYXRjaGxpbmVdKQogCiAgICAgZGVmIHRlc3Rfc3RyaWN0X3Nhbml0eShz
ZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIic2FuaXR5IGNoZWNrIGZvciB4ZmFpbChzdHJpY3Q9
VHJ1ZSk6IGEgZmFpbGluZyB0ZXN0IHNob3VsZCBiZWhhdmUKLSAgICAgICAgZXhhY3RseSBsaWtl
IGEgbm9ybWFsIHhmYWlsLgotICAgICAgICAiIiIKKyAgICAgICAgIiIiU2FuaXR5IGNoZWNrIGZv
ciB4ZmFpbChzdHJpY3Q9VHJ1ZSk6IGEgZmFpbGluZyB0ZXN0IHNob3VsZCBiZWhhdmUKKyAgICAg
ICAgZXhhY3RseSBsaWtlIGEgbm9ybWFsIHhmYWlsLiIiIgogICAgICAgICBwID0gdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBA
IC00NzEsNyArNTI4LDcgQEAgY2xhc3MgVGVzdFhGYWlsKG9iamVjdCk6CiAgICAgICAgICAgICAl
IHN0cmljdAogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAs
ICItcnhYIikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBwYXNzZWQq
IikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQog
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoInN0cmljdCIsIFtUcnVlLCBGYWxzZV0pCkBAIC00ODcsNyArNTQ0LDcgQEAgY2xhc3Mg
VGVzdFhGYWlsKG9iamVjdCk6CiAgICAgICAgICAgICAlIHN0cmljdAogICAgICAgICApCiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICItcnhYIikKLSAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBwYXNzZWQqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInN0cmljdF92YWwiLCBbInRy
dWUiLCAiZmFsc2UiXSkKQEAgLTUwOSwxMiArNTY2LDExIEBAIGNsYXNzIFRlc3RYRmFpbChvYmpl
Y3QpOgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICIt
cnhYIikKICAgICAgICAgc3RyaWN0ID0gc3RyaWN0X3ZhbCA9PSAidHJ1ZSIKLSAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBmYWlsZWQqIiBpZiBzdHJpY3QgZWxzZSAiKjEg
eHBhc3NlZCoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBmYWls
ZWQqIiBpZiBzdHJpY3QgZWxzZSAiKjEgeHBhc3NlZCoiXSkKICAgICAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gKDEgaWYgc3RyaWN0IGVsc2UgMCkKIAogCi1jbGFzcyBUZXN0WEZhaWx3aXRoU2V0
dXBUZWFyZG93bihvYmplY3QpOgotCitjbGFzcyBUZXN0WEZhaWx3aXRoU2V0dXBUZWFyZG93bjoK
ICAgICBkZWYgdGVzdF9mYWlsaW5nX3NldHVwX2lzc3VlOShzZWxmLCB0ZXN0ZGlyKToKICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC01NDYsOCArNjAyLDcg
QEAgY2xhc3MgVGVzdFhGYWlsd2l0aFNldHVwVGVhcmRvd24ob2JqZWN0KToKICAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgeGZhaWwqIl0pCiAKIAotY2xhc3MgVGVzdFNr
aXAob2JqZWN0KToKLQorY2xhc3MgVGVzdFNraXA6CiAgICAgZGVmIHRlc3Rfc2tpcF9jbGFzcyhz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCkBAIC02NDQsOCArNjk5LDcgQEAgY2xhc3MgVGVzdFNraXAob2JqZWN0KToKICAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnVuY29uZGl0aW9uYWwgc2tpcCoiLCAiKjEg
c2tpcHBlZCoiXSkKIAogCi1jbGFzcyBUZXN0U2tpcGlmKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RT
a2lwaWY6CiAgICAgZGVmIHRlc3Rfc2tpcGlmX2NvbmRpdGlvbmFsKHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAogICAgICAgICAgICAgIiIiCkBAIC03NDYs
NTkgKzgwMCw0MCBAQCBkZWYgdGVzdF9za2lwaWZfY2xhc3ModGVzdGRpcik6CiAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgc2tpcHBlZCoiXSkKIAogCi1kZWYgdGVzdF9za2lw
X3JlYXNvbnNfZm9sZGluZygpOgotICAgIHBhdGggPSAieHl6IgotICAgIGxpbmVubyA9IDMKLSAg
ICBtZXNzYWdlID0gImp1c3RzbyIKLSAgICBsb25ncmVwciA9IChwYXRoLCBsaW5lbm8sIG1lc3Nh
Z2UpCi0KLSAgICBjbGFzcyBYKG9iamVjdCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGV2MSA9IFgo
KQotICAgIGV2MS53aGVuID0gImV4ZWN1dGUiCi0gICAgZXYxLnNraXBwZWQgPSBUcnVlCi0gICAg
ZXYxLmxvbmdyZXByID0gbG9uZ3JlcHIKLQotICAgIGV2MiA9IFgoKQotICAgIGV2Mi53aGVuID0g
ImV4ZWN1dGUiCi0gICAgZXYyLmxvbmdyZXByID0gbG9uZ3JlcHIKLSAgICBldjIuc2tpcHBlZCA9
IFRydWUKLQotICAgICMgZXYzIG1pZ2h0IGJlIGEgY29sbGVjdGlvbiByZXBvcnQKLSAgICBldjMg
PSBYKCkKLSAgICBldjMubG9uZ3JlcHIgPSBsb25ncmVwcgotICAgIGV2My5za2lwcGVkID0gVHJ1
ZQotCi0gICAgdmFsdWVzID0gZm9sZGVkX3NraXBzKFtldjEsIGV2MiwgZXYzXSkKLSAgICBhc3Nl
cnQgbGVuKHZhbHVlcykgPT0gMQotICAgIG51bSwgZnNwYXRoLCBsaW5lbm8sIHJlYXNvbiA9IHZh
bHVlc1swXQotICAgIGFzc2VydCBudW0gPT0gMwotICAgIGFzc2VydCBmc3BhdGggPT0gcGF0aAot
ICAgIGFzc2VydCBsaW5lbm8gPT0gbGluZW5vCi0gICAgYXNzZXJ0IHJlYXNvbiA9PSBtZXNzYWdl
Ci0KLQogZGVmIHRlc3Rfc2tpcHBlZF9yZWFzb25zX2Z1bmN0aW9uYWwodGVzdGRpcik6CiAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICB0ZXN0X29uZT0iIiIKKyAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKICAgICAgICAgICAgIGZyb20gY29uZnRlc3QgaW1wb3J0IGRvc2tpcAorCiAg
ICAgICAgICAgICBkZWYgc2V0dXBfZnVuY3Rpb24oZnVuYyk6CiAgICAgICAgICAgICAgICAgZG9z
a2lwKCkKKwogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgogICAgICAgICAgICAgICAgIHBh
c3MKKwogICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICBkb3NraXAoKQot
ICAgICAgICIiIiwKKworICAgICAgICAgICAgICAgIEBweXRlc3QubWFyay5za2lwKCJ2aWFfZGVj
b3JhdG9yIikKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9kZWNvKHNlbGYpOgorICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIsCiAgICAgICAgIGNvbmZ0ZXN0PSIiIgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdCwgc3lz
CiAgICAgICAgICAgICBkZWYgZG9za2lwKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHN5cy5f
Z2V0ZnJhbWUoKS5mX2xpbmVubyA9PSAzCiAgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoJ3Rl
c3QnKQogICAgICAgICAiIiIsCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItcnMiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipTS0lQKjIqY29uZnRl
c3QucHk6NDogdGVzdCJdKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lc19yYW5kb20o
CisgICAgICAgIFsKKyAgICAgICAgICAgICJTS0lQUEVEIFtbXTJbXV0gY29uZnRlc3QucHk6NDog
dGVzdCIsCisgICAgICAgICAgICAiU0tJUFBFRCBbW10xW11dIHRlc3Rfb25lLnB5OjE0OiB2aWFf
ZGVjb3JhdG9yIiwKKyAgICAgICAgXQorICAgICkKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAw
CiAKIApAQCAtODcyLDExICs5MDcsMjIgQEAgZGVmIHRlc3RfcmVwb3J0Y2hhcnNfYWxsKHRlc3Rk
aXIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBkZWYgdGVzdF80KCk6CiAgICAgICAgICAg
ICBweXRlc3Quc2tpcCgiZm91ciIpCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBk
ZWYgZmFpbCgpOgorICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgZGVmIHRlc3RfNShmYWls
KToKKyAgICAgICAgICAgIHBhc3MKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi1yYSIpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAg
ICAgICBbIkZBSUwqdGVzdF8xKiIsICJTS0lQKmZvdXIqIiwgIlhGQUlMKnRlc3RfMioiLCAiWFBB
U1MqdGVzdF8zKiJdCisgICAgICAgIFsKKyAgICAgICAgICAgICJTS0lQKmZvdXIqIiwKKyAgICAg
ICAgICAgICJYRkFJTCp0ZXN0XzIqIiwKKyAgICAgICAgICAgICJYUEFTUyp0ZXN0XzMqIiwKKyAg
ICAgICAgICAgICJFUlJPUip0ZXN0XzUqIiwKKyAgICAgICAgICAgICJGQUlMKnRlc3RfMSoiLAor
ICAgICAgICBdCiAgICAgKQogCiAKQEAgLTg5NSw4ICs5NDEsNyBAQCBkZWYgdGVzdF9yZXBvcnRj
aGFyc19hbGxfZXJyb3IodGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiRVJST1IqdGVzdF9mb28qIl0pCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKCJoYXNhdHRyKHN5
cywgJ3B5cHlfdmVyc2lvbl9pbmZvJykiKQotZGVmIHRlc3RfZXJyb3JzX2luX3hmYWlsX3NraXBf
ZXhwcmVzc2lvbnModGVzdGRpcik6CitkZWYgdGVzdF9lcnJvcnNfaW5feGZhaWxfc2tpcF9leHBy
ZXNzaW9ucyh0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTkxMywyMCArOTU4LDIyIEBAIGRlZiB0
ZXN0X2Vycm9yc19pbl94ZmFpbF9za2lwX2V4cHJlc3Npb25zKHRlc3RkaXIpOgogICAgICkKICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgbWFya2xpbmUgPSAiICAgICAgICAg
ICAgICAgIF4iCi0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImphdmEiKToKLSAgICAg
ICAgIyBYWFggcmVwb3J0IHRoaXMgdG8gamF2YQotICAgICAgICBtYXJrbGluZSA9ICIqIiArIG1h
cmtsaW5lWzg6XQorICAgIHB5cHlfdmVyc2lvbl9pbmZvID0gZ2V0YXR0cihzeXMsICJweXB5X3Zl
cnNpb25faW5mbyIsIE5vbmUpCisgICAgaWYgcHlweV92ZXJzaW9uX2luZm8gaXMgbm90IE5vbmUg
YW5kIHB5cHlfdmVyc2lvbl9pbmZvIDwgKDYsKToKKyAgICAgICAgbWFya2xpbmUgPSBtYXJrbGlu
ZVs1Ol0KKyAgICBlbGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpIG9yIGhhc2F0dHIoc3lz
LCAicHlweV92ZXJzaW9uX2luZm8iKToKKyAgICAgICAgbWFya2xpbmUgPSBtYXJrbGluZVs0Ol0K
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKICAgICAgICAgICAg
ICIqRVJST1IqdGVzdF9uYW1lZXJyb3IqIiwKLSAgICAgICAgICAgICIqZXZhbHVhdGluZypza2lw
aWYqZXhwcmVzc2lvbioiLAorICAgICAgICAgICAgIipldmFsdWF0aW5nKnNraXBpZipjb25kaXRp
b24qIiwKICAgICAgICAgICAgICIqYXNkKiIsCiAgICAgICAgICAgICAiKkVSUk9SKnRlc3Rfc3lu
dGF4KiIsCi0gICAgICAgICAgICAiKmV2YWx1YXRpbmcqeGZhaWwqZXhwcmVzc2lvbioiLAorICAg
ICAgICAgICAgIipldmFsdWF0aW5nKnhmYWlsKmNvbmRpdGlvbioiLAogICAgICAgICAgICAgIiAg
ICBzeW50YXggZXJyb3IiLAogICAgICAgICAgICAgbWFya2xpbmUsCiAgICAgICAgICAgICAiU3lu
dGF4RXJyb3I6IGludmFsaWQgc3ludGF4IiwKLSAgICAgICAgICAgICIqMSBwYXNzKjIgZXJyb3Iq
IiwKKyAgICAgICAgICAgICIqMSBwYXNzKjIgZXJyb3JzKiIsCiAgICAgICAgIF0KICAgICApCiAK
QEAgLTk0OCwyNSArOTk1LDEyIEBAIGRlZiB0ZXN0X3hmYWlsX3NraXBpZl93aXRoX2dsb2JhbHMo
dGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKlNLSVAqeCA9PSAz
KiIsICIqWEZBSUwqdGVzdF9ib29sZWFuKiIsICIqeCA9PSAzKiJdKQogCiAKLWRlZiB0ZXN0X2Rp
cmVjdF9naXZlc19lcnJvcih0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAg
ICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgIEBweXRlc3QubWFyay5za2lw
aWYoVHJ1ZSkKLSAgICAgICAgZGVmIHRlc3Rfc2tpcDEoKToKLSAgICAgICAgICAgIHBhc3MKLSAg
ICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIGVycm9yKiJdKQotCi0KIGRlZiB0ZXN0X2RlZmF1
bHRfbWFya2Vycyh0ZXN0ZGlyKToKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1t
YXJrZXJzIikKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKLSAg
ICAgICAgICAgICIqc2tpcGlmKCpjb25kaXRpb24pKnNraXAqIiwKLSAgICAgICAgICAgICIqeGZh
aWwoKmNvbmRpdGlvbiwgcmVhc29uPU5vbmUsIHJ1bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3RyaWN0
PUZhbHNlKSpleHBlY3RlZCBmYWlsdXJlKiIsCisgICAgICAgICAgICAiKnNraXBpZihjb25kaXRp
b24sIC4uLiwgWypdLCByZWFzb249Li4uKSpza2lwKiIsCisgICAgICAgICAgICAiKnhmYWlsKGNv
bmRpdGlvbiwgLi4uLCBbKl0sIHJlYXNvbj0uLi4sIHJ1bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3Ry
aWN0PXhmYWlsX3N0cmljdCkqZXhwZWN0ZWQgZmFpbHVyZSoiLAogICAgICAgICBdCiAgICAgKQog
CkBAIC05ODksNyArMTAyMyw3IEBAIGRlZiB0ZXN0X3hmYWlsX3Rlc3Rfc2V0dXBfZXhjZXB0aW9u
KHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCiAgICAgYXNzZXJ0
IHJlc3VsdC5yZXQgPT0gMAogICAgIGFzc2VydCAieGZhaWxlZCIgaW4gcmVzdWx0LnN0ZG91dC5z
dHIoKQotICAgIGFzc2VydCAieHBhc3NlZCIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAg
ICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKnhwYXNzZWQqIikKIAogCiBkZWYgdGVz
dF9pbXBlcmF0aXZlc2tpcF9vbl94ZmFpbF90ZXN0KHRlc3RkaXIpOgpAQCAtMTAyMiw4ICsxMDU2
LDcgQEAgZGVmIHRlc3RfaW1wZXJhdGl2ZXNraXBfb25feGZhaWxfdGVzdCh0ZXN0ZGlyKToKICAg
ICApCiAKIAotY2xhc3MgVGVzdEJvb2xlYW5Db25kaXRpb24ob2JqZWN0KToKLQorY2xhc3MgVGVz
dEJvb2xlYW5Db25kaXRpb246CiAgICAgZGVmIHRlc3Rfc2tpcGlmKHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTEwOTAsNyAr
MTEyMyw3IEBAIGRlZiB0ZXN0X3hmYWlsX2l0ZW0odGVzdGRpcik6CiAgICAgICAgICAgICAgICAg
cHl0ZXN0LnhmYWlsKCJFeHBlY3RlZCBGYWlsdXJlIikKIAogICAgICAgICBkZWYgcHl0ZXN0X2Nv
bGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgcmV0dXJuIE15SXRlbSgiZm9v
IiwgcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIE15SXRlbS5mcm9tX3BhcmVudChuYW1lPSJm
b28iLCBwYXJlbnQ9cGFyZW50KQogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGly
LmlubGluZV9ydW4oKQpAQCAtMTEwMSwyNSArMTEzNCwyNCBAQCBkZWYgdGVzdF94ZmFpbF9pdGVt
KHRlc3RkaXIpOgogCiAKIGRlZiB0ZXN0X21vZHVsZV9sZXZlbF9za2lwX2Vycm9yKHRlc3RkaXIp
OgotICAgICIiIgotICAgIFZlcmlmeSB0aGF0IHVzaW5nIHB5dGVzdC5za2lwIGF0IG1vZHVsZSBs
ZXZlbCBjYXVzZXMgYSBjb2xsZWN0aW9uIGVycm9yCi0gICAgIiIiCisgICAgIiIiVmVyaWZ5IHRo
YXQgdXNpbmcgcHl0ZXN0LnNraXAgYXQgbW9kdWxlIGxldmVsIGNhdXNlcyBhIGNvbGxlY3Rpb24g
ZXJyb3IuIiIiCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAg
aW1wb3J0IHB5dGVzdAotICAgICAgICBAcHl0ZXN0LnNraXAKKyAgICAgICAgcHl0ZXN0LnNraXAo
InNraXBfbW9kdWxlX2xldmVsIikKKwogICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CiAgICAgICAg
ICAgICBhc3NlcnQgVHJ1ZQogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqVXNpbmcgcHl0ZXN0
LnNraXAgb3V0c2lkZSBvZiBhIHRlc3QgaXMgbm90IGFsbG93ZWQqIikKKyAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiKlVzaW5nIHB5dGVzdC5za2lwIG91dHNpZGUg
b2YgYSB0ZXN0IGlzIG5vdCBhbGxvd2VkKiJdCisgICAgKQogCiAKIGRlZiB0ZXN0X21vZHVsZV9s
ZXZlbF9za2lwX3dpdGhfYWxsb3dfbW9kdWxlX2xldmVsKHRlc3RkaXIpOgotICAgICIiIgotICAg
IFZlcmlmeSB0aGF0IHVzaW5nIHB5dGVzdC5za2lwKGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKSBp
cyBhbGxvd2VkCi0gICAgIiIiCisgICAgIiIiVmVyaWZ5IHRoYXQgdXNpbmcgcHl0ZXN0LnNraXAo
YWxsb3dfbW9kdWxlX2xldmVsPVRydWUpIGlzIGFsbG93ZWQuIiIiCiAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTEzMCwxMyAr
MTE2MiwxMSBAQCBkZWYgdGVzdF9tb2R1bGVfbGV2ZWxfc2tpcF93aXRoX2FsbG93X21vZHVsZV9s
ZXZlbCh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi1yeHMiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKlNLSVAqc2tp
cF9tb2R1bGVfbGV2ZWwiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipTS0lQ
KnNraXBfbW9kdWxlX2xldmVsIl0pCiAKIAogZGVmIHRlc3RfaW52YWxpZF9za2lwX2tleXdvcmRf
cGFyYW1ldGVyKHRlc3RkaXIpOgotICAgICIiIgotICAgIFZlcmlmeSB0aGF0IHVzaW5nIHB5dGVz
dC5za2lwKCkgd2l0aCB1bmtub3duIHBhcmFtZXRlciByYWlzZXMgYW4gZXJyb3IKLSAgICAiIiIK
KyAgICAiIiJWZXJpZnkgdGhhdCB1c2luZyBweXRlc3Quc2tpcCgpIHdpdGggdW5rbm93biBwYXJh
bWV0ZXIgcmFpc2VzIGFuIGVycm9yLiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTExNDcsNyArMTE3Nyw3IEBAIGRlZiB0
ZXN0X2ludmFsaWRfc2tpcF9rZXl3b3JkX3BhcmFtZXRlcih0ZXN0ZGlyKToKICAgICAiIiIKICAg
ICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcygiKlR5cGVFcnJvcjoqWyd1bmtub3duJ10qIikKKyAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqVHlwZUVycm9yOipbJ3Vua25vd24nXSoiXSkKIAogCiBkZWYg
dGVzdF9tYXJrX3hmYWlsX2l0ZW0odGVzdGRpcik6CkBAIC0xMTU5LDEzICsxMTg5LDE1IEBAIGRl
ZiB0ZXN0X21hcmtfeGZhaWxfaXRlbSh0ZXN0ZGlyKToKICAgICAgICAgY2xhc3MgTXlJdGVtKHB5
dGVzdC5JdGVtKToKICAgICAgICAgICAgIG5vZGVpZCA9ICdmb28nCiAgICAgICAgICAgICBkZWYg
c2V0dXAoc2VsZik6Ci0gICAgICAgICAgICAgICAgbWFya2VyID0gcHl0ZXN0Lm1hcmsueGZhaWwo
VHJ1ZSwgcmVhc29uPSJFeHBlY3RlZCBmYWlsdXJlIikKKyAgICAgICAgICAgICAgICBtYXJrZXIg
PSBweXRlc3QubWFyay54ZmFpbCgiMSA9PSAyIiwgcmVhc29uPSJFeHBlY3RlZCBmYWlsdXJlIC0g
ZmFsc2UiKQorICAgICAgICAgICAgICAgIHNlbGYuYWRkX21hcmtlcihtYXJrZXIpCisgICAgICAg
ICAgICAgICAgbWFya2VyID0gcHl0ZXN0Lm1hcmsueGZhaWwoVHJ1ZSwgcmVhc29uPSJFeHBlY3Rl
ZCBmYWlsdXJlIC0gdHJ1ZSIpCiAgICAgICAgICAgICAgICAgc2VsZi5hZGRfbWFya2VyKG1hcmtl
cikKICAgICAgICAgICAgIGRlZiBydW50ZXN0KHNlbGYpOgogICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZQogCiAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6
Ci0gICAgICAgICAgICByZXR1cm4gTXlJdGVtKCJmb28iLCBwYXJlbnQpCisgICAgICAgICAgICBy
ZXR1cm4gTXlJdGVtLmZyb21fcGFyZW50KG5hbWU9ImZvbyIsIHBhcmVudD1wYXJlbnQpCiAgICAg
IiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIuaW5saW5lX3J1bigpCkBAIC0xMTg5LDYg
KzEyMjEsMzEgQEAgZGVmIHRlc3Rfc3VtbWFyeV9saXN0X2FmdGVyX2Vycm9ycyh0ZXN0ZGlyKToK
ICAgICAgICAgWwogICAgICAgICAgICAgIj0qIEZBSUxVUkVTICo9IiwKICAgICAgICAgICAgICIq
PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9KiIsCi0gICAgICAgICAgICAiRkFJTCB0ZXN0X3N1
bW1hcnlfbGlzdF9hZnRlcl9lcnJvcnMucHk6OnRlc3RfZmFpbCIsCisgICAgICAgICAgICAiRkFJ
TEVEIHRlc3Rfc3VtbWFyeV9saXN0X2FmdGVyX2Vycm9ycy5weTo6dGVzdF9mYWlsIC0gYXNzZXJ0
IDAiLAogICAgICAgICBdCiAgICAgKQorCisKK2RlZiB0ZXN0X2ltcG9ydG9yc2tpcCgpOgorICAg
IHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAgICAgcHl0ZXN0LnNraXAuRXhjZXB0aW9uLAorICAg
ICAgICBtYXRjaD0iXmNvdWxkIG5vdCBpbXBvcnQgJ2RvZXNub3RleGlzdCc6IE5vIG1vZHVsZSBu
YW1lZCAuKiIsCisgICAgKToKKyAgICAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgiZG9lc25vdGV4
aXN0IikKKworCitkZWYgdGVzdF9yZWxwYXRoX3Jvb3RkaXIodGVzdGRpcik6CisgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAqKnsKKyAgICAgICAgICAgICJ0ZXN0cy90ZXN0XzEucHki
OiAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBAcHl0ZXN0Lm1hcmsuc2tpcCgp
CisgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAg
ICIiIiwKKyAgICAgICAgfQorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXJzIiwgInRlc3RzL3Rlc3RfMS5weSIsICItLXJvb3RkaXI9dGVzdHMiKQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWyJTS0lQUEVEIFtbXTFbXV0gdGVzdHMvdGVz
dF8xLnB5OjI6IHVuY29uZGl0aW9uYWwgc2tpcCJdCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X3N0ZXB3aXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X3N0ZXB3aXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGY2
NmQ3OThiYmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3N0
ZXB3aXNlLnB5CkBAIC0wLDAgKzEsMjI5IEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5m
aXh0dXJlCitkZWYgc3RlcHdpc2VfdGVzdGRpcih0ZXN0ZGlyKToKKyAgICAjIFJhdGhlciB0aGFu
IGhhdmluZyB0byBtb2RpZnkgb3VyIHRlc3RmaWxlIGJldHdlZW4gdGVzdHMsIHdlIGludHJvZHVj
ZQorICAgICMgYSBmbGFnIGZvciB3aGV0aGVyIG9yIG5vdCB0aGUgc2Vjb25kIHRlc3Qgc2hvdWxk
IGZhaWwuCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIiIgorZGVmIHB5dGVz
dF9hZGRvcHRpb24ocGFyc2VyKToKKyAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgnZ2VuZXJh
bCcpCisgICAgZ3JvdXAuYWRkb3B0aW9uKCctLWZhaWwnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBk
ZXN0PSdmYWlsJykKKyAgICBncm91cC5hZGRvcHRpb24oJy0tZmFpbC1sYXN0JywgYWN0aW9uPSdz
dG9yZV90cnVlJywgZGVzdD0nZmFpbF9sYXN0JykKKyIiIgorICAgICkKKworICAgICMgQ3JlYXRl
IGEgc2ltcGxlIHRlc3Qgc3VpdGUuCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICB0
ZXN0X2E9IiIiCitkZWYgdGVzdF9zdWNjZXNzX2JlZm9yZV9mYWlsKCk6CisgICAgYXNzZXJ0IDEK
KworZGVmIHRlc3RfZmFpbF9vbl9mbGFnKHJlcXVlc3QpOgorICAgIGFzc2VydCBub3QgcmVxdWVz
dC5jb25maWcuZ2V0dmFsdWUoJ2ZhaWwnKQorCitkZWYgdGVzdF9zdWNjZXNzX2FmdGVyX2ZhaWwo
KToKKyAgICBhc3NlcnQgMQorCitkZWYgdGVzdF9mYWlsX2xhc3Rfb25fZmxhZyhyZXF1ZXN0KToK
KyAgICBhc3NlcnQgbm90IHJlcXVlc3QuY29uZmlnLmdldHZhbHVlKCdmYWlsX2xhc3QnKQorCitk
ZWYgdGVzdF9zdWNjZXNzX2FmdGVyX2xhc3RfZmFpbCgpOgorICAgIGFzc2VydCAxCisiIiIKKyAg
ICApCisKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHRlc3RfYj0iIiIKK2RlZiB0
ZXN0X3N1Y2Nlc3MoKToKKyAgICBhc3NlcnQgMQorIiIiCisgICAgKQorCisgICAgIyBjdXN0b21p
emUgY2FjaGUgZGlyZWN0b3J5IHNvIHdlIGRvbid0IHVzZSB0aGUgdG94J3MgY2FjaGUgZGlyZWN0
b3J5LCB3aGljaCBtYWtlcyB0ZXN0cyBpbiB0aGlzIG1vZHVsZSBmbGFreQorICAgIHRlc3RkaXIu
bWFrZWluaSgKKyAgICAgICAgIiIiCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGNhY2hlX2Rp
ciA9IC5jYWNoZQorICAgICIiIgorICAgICkKKworICAgIHJldHVybiB0ZXN0ZGlyCisKKworQHB5
dGVzdC5maXh0dXJlCitkZWYgZXJyb3JfdGVzdGRpcih0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgIHRlc3RfYT0iIiIKK2RlZiB0ZXN0X2Vycm9yKG5vbmV4aXN0aW5n
X2ZpeHR1cmUpOgorICAgIGFzc2VydCAxCisKK2RlZiB0ZXN0X3N1Y2Nlc3NfYWZ0ZXJfZmFpbCgp
OgorICAgIGFzc2VydCAxCisiIiIKKyAgICApCisKKyAgICByZXR1cm4gdGVzdGRpcgorCisKK0Bw
eXRlc3QuZml4dHVyZQorZGVmIGJyb2tlbl90ZXN0ZGlyKHRlc3RkaXIpOgorICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgd29ya2luZ190ZXN0ZmlsZT0iZGVmIHRlc3RfcHJvcGVyKCk6
IGFzc2VydCAxIiwgYnJva2VuX3Rlc3RmaWxlPSJmb29iYXIiCisgICAgKQorICAgIHJldHVybiB0
ZXN0ZGlyCisKKworZGVmIF9zdHJpcF9yZXNvdXJjZV93YXJuaW5ncyhsaW5lcyk6CisgICAgIyBT
dHJpcCB1bnJlbGlhYmxlIFJlc291cmNlV2FybmluZ3MsIHNvIG5vLW91dHB1dCBhc3NlcnRpb25z
IG9uIHN0ZGVyciBjYW4gd29yay4KKyAgICAjIChodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzUwODgpCisgICAgcmV0dXJuIFsKKyAgICAgICAgeAorICAgICAgICBm
b3IgeCBpbiBsaW5lcworICAgICAgICBpZiBub3QgeC5zdGFydHN3aXRoKCgiRXhjZXB0aW9uIGln
bm9yZWQgaW46IiwgIlJlc291cmNlV2FybmluZyIpKQorICAgIF0KKworCitkZWYgdGVzdF9ydW5f
d2l0aG91dF9zdGVwd2lzZShzdGVwd2lzZV90ZXN0ZGlyKToKKyAgICByZXN1bHQgPSBzdGVwd2lz
ZV90ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLS1zdHJpY3QtbWFya2VycyIsICItLWZhaWwiKQor
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Rfc3VjY2Vzc19iZWZvcmVf
ZmFpbCBQQVNTRUQqIl0pCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Rf
ZmFpbF9vbl9mbGFnIEZBSUxFRCoiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqdGVzdF9zdWNjZXNzX2FmdGVyX2ZhaWwgUEFTU0VEKiJdKQorCisKK2RlZiB0ZXN0X2ZhaWxf
YW5kX2NvbnRpbnVlX3dpdGhfc3RlcHdpc2Uoc3RlcHdpc2VfdGVzdGRpcik6CisgICAgIyBSdW4g
dGhlIHRlc3RzIHdpdGggYSBmYWlsaW5nIHNlY29uZCB0ZXN0LgorICAgIHJlc3VsdCA9IHN0ZXB3
aXNlX3Rlc3RkaXIucnVucHl0ZXN0KAorICAgICAgICAiLXYiLCAiLS1zdHJpY3QtbWFya2VycyIs
ICItLXN0ZXB3aXNlIiwgIi0tZmFpbCIKKyAgICApCisgICAgYXNzZXJ0IF9zdHJpcF9yZXNvdXJj
ZV93YXJuaW5ncyhyZXN1bHQuc3RkZXJyLmxpbmVzKSA9PSBbXQorCisgICAgc3Rkb3V0ID0gcmVz
dWx0LnN0ZG91dC5zdHIoKQorICAgICMgTWFrZSBzdXJlIHdlIHN0b3AgYWZ0ZXIgZmlyc3QgZmFp
bGluZyB0ZXN0LgorICAgIGFzc2VydCAidGVzdF9zdWNjZXNzX2JlZm9yZV9mYWlsIFBBU1NFRCIg
aW4gc3Rkb3V0CisgICAgYXNzZXJ0ICJ0ZXN0X2ZhaWxfb25fZmxhZyBGQUlMRUQiIGluIHN0ZG91
dAorICAgIGFzc2VydCAidGVzdF9zdWNjZXNzX2FmdGVyX2ZhaWwiIG5vdCBpbiBzdGRvdXQKKwor
ICAgICMgIkZpeCIgdGhlIHRlc3QgdGhhdCBmYWlsZWQgaW4gdGhlIGxhc3QgcnVuIGFuZCBydW4g
aXQgYWdhaW4uCisgICAgcmVzdWx0ID0gc3RlcHdpc2VfdGVzdGRpci5ydW5weXRlc3QoIi12Iiwg
Ii0tc3RyaWN0LW1hcmtlcnMiLCAiLS1zdGVwd2lzZSIpCisgICAgYXNzZXJ0IF9zdHJpcF9yZXNv
dXJjZV93YXJuaW5ncyhyZXN1bHQuc3RkZXJyLmxpbmVzKSA9PSBbXQorCisgICAgc3Rkb3V0ID0g
cmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICMgTWFrZSBzdXJlIHRoZSBsYXRlc3QgZmFpbGluZyB0
ZXN0IHJ1bnMgYW5kIHRoZW4gY29udGludWVzLgorICAgIGFzc2VydCAidGVzdF9zdWNjZXNzX2Jl
Zm9yZV9mYWlsIiBub3QgaW4gc3Rkb3V0CisgICAgYXNzZXJ0ICJ0ZXN0X2ZhaWxfb25fZmxhZyBQ
QVNTRUQiIGluIHN0ZG91dAorICAgIGFzc2VydCAidGVzdF9zdWNjZXNzX2FmdGVyX2ZhaWwgUEFT
U0VEIiBpbiBzdGRvdXQKKworCitkZWYgdGVzdF9ydW5fd2l0aF9za2lwX29wdGlvbihzdGVwd2lz
ZV90ZXN0ZGlyKToKKyAgICByZXN1bHQgPSBzdGVwd2lzZV90ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAg
ICAgICAgIi12IiwKKyAgICAgICAgIi0tc3RyaWN0LW1hcmtlcnMiLAorICAgICAgICAiLS1zdGVw
d2lzZSIsCisgICAgICAgICItLXN0ZXB3aXNlLXNraXAiLAorICAgICAgICAiLS1mYWlsIiwKKyAg
ICAgICAgIi0tZmFpbC1sYXN0IiwKKyAgICApCisgICAgYXNzZXJ0IF9zdHJpcF9yZXNvdXJjZV93
YXJuaW5ncyhyZXN1bHQuc3RkZXJyLmxpbmVzKSA9PSBbXQorCisgICAgc3Rkb3V0ID0gcmVzdWx0
LnN0ZG91dC5zdHIoKQorICAgICMgTWFrZSBzdXJlIGZpcnN0IGZhaWwgaXMgaWdub3JlIGFuZCBz
ZWNvbmQgZmFpbCBzdG9wcyB0aGUgdGVzdCBydW4uCisgICAgYXNzZXJ0ICJ0ZXN0X2ZhaWxfb25f
ZmxhZyBGQUlMRUQiIGluIHN0ZG91dAorICAgIGFzc2VydCAidGVzdF9zdWNjZXNzX2FmdGVyX2Zh
aWwgUEFTU0VEIiBpbiBzdGRvdXQKKyAgICBhc3NlcnQgInRlc3RfZmFpbF9sYXN0X29uX2ZsYWcg
RkFJTEVEIiBpbiBzdGRvdXQKKyAgICBhc3NlcnQgInRlc3Rfc3VjY2Vzc19hZnRlcl9sYXN0X2Zh
aWwiIG5vdCBpbiBzdGRvdXQKKworCitkZWYgdGVzdF9mYWlsX29uX2Vycm9ycyhlcnJvcl90ZXN0
ZGlyKToKKyAgICByZXN1bHQgPSBlcnJvcl90ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLS1zdHJp
Y3QtbWFya2VycyIsICItLXN0ZXB3aXNlIikKKworICAgIGFzc2VydCBfc3RyaXBfcmVzb3VyY2Vf
d2FybmluZ3MocmVzdWx0LnN0ZGVyci5saW5lcykgPT0gW10KKyAgICBzdGRvdXQgPSByZXN1bHQu
c3Rkb3V0LnN0cigpCisKKyAgICBhc3NlcnQgInRlc3RfZXJyb3IgRVJST1IiIGluIHN0ZG91dAor
ICAgIGFzc2VydCAidGVzdF9zdWNjZXNzX2FmdGVyX2ZhaWwiIG5vdCBpbiBzdGRvdXQKKworCitk
ZWYgdGVzdF9jaGFuZ2VfdGVzdGZpbGUoc3RlcHdpc2VfdGVzdGRpcik6CisgICAgcmVzdWx0ID0g
c3RlcHdpc2VfdGVzdGRpci5ydW5weXRlc3QoCisgICAgICAgICItdiIsICItLXN0cmljdC1tYXJr
ZXJzIiwgIi0tc3RlcHdpc2UiLCAiLS1mYWlsIiwgInRlc3RfYS5weSIKKyAgICApCisgICAgYXNz
ZXJ0IF9zdHJpcF9yZXNvdXJjZV93YXJuaW5ncyhyZXN1bHQuc3RkZXJyLmxpbmVzKSA9PSBbXQor
CisgICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIGFzc2VydCAidGVzdF9mYWls
X29uX2ZsYWcgRkFJTEVEIiBpbiBzdGRvdXQKKworICAgICMgTWFrZSBzdXJlIHRoZSBzZWNvbmQg
dGVzdCBydW4gc3RhcnRzIGZyb20gdGhlIGJlZ2lubmluZywgc2luY2UgdGhlCisgICAgIyB0ZXN0
IHRvIGNvbnRpbnVlIGZyb20gZG9lcyBub3QgZXhpc3QgaW4gdGVzdGZpbGVfYi4KKyAgICByZXN1
bHQgPSBzdGVwd2lzZV90ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAgICAgICAgIi12IiwgIi0tc3RyaWN0
LW1hcmtlcnMiLCAiLS1zdGVwd2lzZSIsICJ0ZXN0X2IucHkiCisgICAgKQorICAgIGFzc2VydCBf
c3RyaXBfcmVzb3VyY2Vfd2FybmluZ3MocmVzdWx0LnN0ZGVyci5saW5lcykgPT0gW10KKworICAg
IHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBhc3NlcnQgInRlc3Rfc3VjY2VzcyBQ
QVNTRUQiIGluIHN0ZG91dAorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYnJva2VuX2Zp
cnN0IiwgW1RydWUsIEZhbHNlXSkKK2RlZiB0ZXN0X3N0b3Bfb25fY29sbGVjdGlvbl9lcnJvcnMo
YnJva2VuX3Rlc3RkaXIsIGJyb2tlbl9maXJzdCk6CisgICAgIiIiU3RvcCBkdXJpbmcgY29sbGVj
dGlvbiBlcnJvcnMuIEJyb2tlbiB0ZXN0IGZpcnN0IG9yIGJyb2tlbiB0ZXN0IGxhc3QKKyAgICBh
Y3R1YWxseSBzdXJmYWNlZCBhIGJ1ZyAoIzU0NDQpLCBzbyB3ZSB0ZXN0IGJvdGggc2l0dWF0aW9u
cy4iIiIKKyAgICBmaWxlcyA9IFsid29ya2luZ190ZXN0ZmlsZS5weSIsICJicm9rZW5fdGVzdGZp
bGUucHkiXQorICAgIGlmIGJyb2tlbl9maXJzdDoKKyAgICAgICAgZmlsZXMucmV2ZXJzZSgpCisg
ICAgcmVzdWx0ID0gYnJva2VuX3Rlc3RkaXIucnVucHl0ZXN0KCItdiIsICItLXN0cmljdC1tYXJr
ZXJzIiwgIi0tc3RlcHdpc2UiLCAqZmlsZXMpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKCIqZXJyb3IgZHVyaW5nIGNvbGxlY3Rpb24qIikKKworCitkZWYgdGVzdF94ZmFpbF9oYW5k
bGluZyh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgIiIiRW5zdXJlIG5vcm1hbCB4ZmFpbCBp
cyBpZ25vcmVkLCBhbmQgc3RyaWN0IHhmYWlsIGludGVycnVwdHMgdGhlIHNlc3Npb24gaW4gc3cg
bW9kZQorCisgICAgKCM1NTQ3KQorICAgICIiIgorICAgIG1vbmtleXBhdGNoLnNldGF0dHIoInN5
cy5kb250X3dyaXRlX2J5dGVjb2RlIiwgVHJ1ZSkKKworICAgIGNvbnRlbnRzID0gIiIiCisgICAg
ICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgZGVmIHRlc3RfYSgpOiBwYXNzCisKKyAgICAgICAg
QHB5dGVzdC5tYXJrLnhmYWlsKHN0cmljdD17c3RyaWN0fSkKKyAgICAgICAgZGVmIHRlc3RfYigp
OiBhc3NlcnQge2Fzc2VydF92YWx1ZX0KKworICAgICAgICBkZWYgdGVzdF9jKCk6IHBhc3MKKyAg
ICAgICAgZGVmIHRlc3RfZCgpOiBwYXNzCisgICAgIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxl
KGNvbnRlbnRzLmZvcm1hdChhc3NlcnRfdmFsdWU9IjAiLCBzdHJpY3Q9IkZhbHNlIikpCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tc3ciLCAiLXYiKQorICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIio6OnRlc3RfYSBQQVNT
RUQgKiIsCisgICAgICAgICAgICAiKjo6dGVzdF9iIFhGQUlMICoiLAorICAgICAgICAgICAgIio6
OnRlc3RfYyBQQVNTRUQgKiIsCisgICAgICAgICAgICAiKjo6dGVzdF9kIFBBU1NFRCAqIiwKKyAg
ICAgICAgICAgICIqIDMgcGFzc2VkLCAxIHhmYWlsZWQgaW4gKiIsCisgICAgICAgIF0KKyAgICAp
CisKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoY29udGVudHMuZm9ybWF0KGFzc2VydF92YWx1ZT0i
MSIsIHN0cmljdD0iVHJ1ZSIpKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXN3
IiwgIi12IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAg
ICAgICAgICAgICIqOjp0ZXN0X2EgUEFTU0VEICoiLAorICAgICAgICAgICAgIio6OnRlc3RfYiBG
QUlMRUQgKiIsCisgICAgICAgICAgICAiKiBJbnRlcnJ1cHRlZCoiLAorICAgICAgICAgICAgIiog
MSBmYWlsZWQsIDEgcGFzc2VkIGluICoiLAorICAgICAgICBdCisgICAgKQorCisgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKGNvbnRlbnRzLmZvcm1hdChhc3NlcnRfdmFsdWU9IjAiLCBzdHJpY3Q9IlRy
dWUiKSkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zdyIsICItdiIpCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKjo6
dGVzdF9iIFhGQUlMICoiLAorICAgICAgICAgICAgIio6OnRlc3RfYyBQQVNTRUQgKiIsCisgICAg
ICAgICAgICAiKjo6dGVzdF9kIFBBU1NFRCAqIiwKKyAgICAgICAgICAgICIqIDIgcGFzc2VkLCAx
IGRlc2VsZWN0ZWQsIDEgeGZhaWxlZCBpbiAqIiwKKyAgICAgICAgXQorICAgICkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9zdG9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9zdG9yZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmI2ZDQyMDhhMDkyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9zdG9yZS5weQpAQCAtMCwwICsxLDYwIEBACitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3Qu
c3RvcmUgaW1wb3J0IFN0b3JlCitmcm9tIF9weXRlc3Quc3RvcmUgaW1wb3J0IFN0b3JlS2V5CisK
KworZGVmIHRlc3Rfc3RvcmUoKSAtPiBOb25lOgorICAgIHN0b3JlID0gU3RvcmUoKQorCisgICAg
a2V5MSA9IFN0b3JlS2V5W3N0cl0oKQorICAgIGtleTIgPSBTdG9yZUtleVtpbnRdKCkKKworICAg
ICMgQmFzaWMgZnVuY3Rpb25hbGl0eSAtIHNpbmdsZSBrZXkuCisgICAgYXNzZXJ0IGtleTEgbm90
IGluIHN0b3JlCisgICAgc3RvcmVba2V5MV0gPSAiaGVsbG8iCisgICAgYXNzZXJ0IGtleTEgaW4g
c3RvcmUKKyAgICBhc3NlcnQgc3RvcmVba2V5MV0gPT0gImhlbGxvIgorICAgIGFzc2VydCBzdG9y
ZS5nZXQoa2V5MSwgTm9uZSkgPT0gImhlbGxvIgorICAgIHN0b3JlW2tleTFdID0gIndvcmxkIgor
ICAgIGFzc2VydCBzdG9yZVtrZXkxXSA9PSAid29ybGQiCisgICAgIyBIYXMgY29ycmVjdCB0eXBl
IChubyBteXB5IGVycm9yKS4KKyAgICBzdG9yZVtrZXkxXSArICJzdHJpbmciCisKKyAgICAjIE5v
IGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBrZXkuCisgICAgYXNzZXJ0IGtleTIgbm90IGluIHN0
b3JlCisgICAgYXNzZXJ0IHN0b3JlLmdldChrZXkyLCBOb25lKSBpcyBOb25lCisgICAgd2l0aCBw
eXRlc3QucmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgc3RvcmVba2V5Ml0KKyAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICBkZWwgc3RvcmVba2V5Ml0KKyAgICBzdG9y
ZVtrZXkyXSA9IDEKKyAgICBhc3NlcnQgc3RvcmVba2V5Ml0gPT0gMQorICAgICMgSGFzIGNvcnJl
Y3QgdHlwZSAobm8gbXlweSBlcnJvcikuCisgICAgc3RvcmVba2V5Ml0gKyAyMAorICAgIGRlbCBz
dG9yZVtrZXkxXQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgIGRl
bCBzdG9yZVtrZXkxXQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhLZXlFcnJvcik6CisgICAgICAg
IHN0b3JlW2tleTFdCisKKyAgICAjIHNldGRlZmF1bHQKKyAgICBzdG9yZVtrZXkxXSA9ICJleGlz
dGluZyIKKyAgICBhc3NlcnQgc3RvcmUuc2V0ZGVmYXVsdChrZXkxLCAiZGVmYXVsdCIpID09ICJl
eGlzdGluZyIKKyAgICBhc3NlcnQgc3RvcmVba2V5MV0gPT0gImV4aXN0aW5nIgorICAgIGtleV9z
ZXRkZWZhdWx0ID0gU3RvcmVLZXlbYnl0ZXNdKCkKKyAgICBhc3NlcnQgc3RvcmUuc2V0ZGVmYXVs
dChrZXlfc2V0ZGVmYXVsdCwgYiJkZWZhdWx0IikgPT0gYiJkZWZhdWx0IgorICAgIGFzc2VydCBz
dG9yZVtrZXlfc2V0ZGVmYXVsdF0gPT0gYiJkZWZhdWx0IgorCisgICAgIyBDYW4ndCBhY2NpZGVu
dGFsbHkgYWRkIGF0dHJpYnV0ZXMgdG8gc3RvcmUgb2JqZWN0IGl0c2VsZi4KKyAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICBzdG9yZS5mb28gPSAibm9wZSIg
ICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworICAgICMgTm8gaW50ZXJhY3Rpb24gd2l0
aCBhbm90ZXIgc3RvcmUuCisgICAgc3RvcmUyID0gU3RvcmUoKQorICAgIGtleTMgPSBTdG9yZUtl
eVtpbnRdKCkKKyAgICBhc3NlcnQga2V5MiBub3QgaW4gc3RvcmUyCisgICAgc3RvcmUyW2tleTJd
ID0gMTAwCisgICAgc3RvcmUyW2tleTNdID0gMjAwCisgICAgYXNzZXJ0IHN0b3JlMltrZXkyXSAr
IHN0b3JlMltrZXkzXSA9PSAzMDAKKyAgICBhc3NlcnQgc3RvcmVba2V5Ml0gPT0gMQorICAgIGFz
c2VydCBrZXkzIG5vdCBpbiBzdG9yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X3Rlcm1pbmFsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Rlcm1pbmFsLnB5Cmlu
ZGV4IDhmMDhhZDM0ZmExZi4uNTFmZGY3MjhlYzljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfdGVybWluYWwucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Rl
cm1pbmFsLnB5CkBAIC0xLDQ2ICsxLDU0IEBACi0iIiIKLXRlcm1pbmFsIHJlcG9ydGluZyBvZiB0
aGUgZnVsbCB0ZXN0aW5nIHByb2Nlc3MuCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyIiIlRlcm1pbmFsIHJlcG9y
dGluZyBvZiB0aGUgZnVsbCB0ZXN0aW5nIHByb2Nlc3MuIiIiCiBpbXBvcnQgY29sbGVjdGlvbnMK
K2ltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHRleHR3cmFwCitmcm9tIGlvIGltcG9ydCBT
dHJpbmdJTworZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCiAKIGlt
cG9ydCBwbHVnZ3kKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCiBpbXBvcnQgcHkKLWltcG9ydCBweXRl
c3QKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX05PVEVTVFNDT0xMRUNURUQKLWZyb20g
X3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQgVGVybWluYWxSZXBvcnRlciwgcmVwcl9weXRob252ZXJz
aW9uLCBnZXRyZXBvcnRvcHQKLWZyb20gX3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQgYnVpbGRfc3Vt
bWFyeV9zdGF0c19saW5lLCBfcGx1Z2luX25hbWV2ZXJzaW9ucwogCitpbXBvcnQgX3B5dGVzdC5j
b25maWcKK2ltcG9ydCBfcHl0ZXN0LnRlcm1pbmFsCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRl
c3QuX2lvLndjd2lkdGggaW1wb3J0IHdjc3dpZHRoCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRl
c3QubW9ua2V5cGF0Y2ggaW1wb3J0IE1vbmtleVBhdGNoCitmcm9tIF9weXRlc3QucGF0aGxpYiBp
bXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCitmcm9tIF9w
eXRlc3QucmVwb3J0cyBpbXBvcnQgQmFzZVJlcG9ydAorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1w
b3J0IENvbGxlY3RSZXBvcnQKK2Zyb20gX3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQgX2ZvbGRlZF9z
a2lwcworZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGltcG9ydCBfZ2V0X2xpbmVfd2l0aF9yZXByY3Jh
c2hfbWVzc2FnZQorZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGltcG9ydCBfcGx1Z2luX25hbWV2ZXJz
aW9ucworZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGltcG9ydCBnZXRyZXBvcnRvcHQKK2Zyb20gX3B5
dGVzdC50ZXJtaW5hbCBpbXBvcnQgVGVybWluYWxSZXBvcnRlcgogCiBEaXN0SW5mbyA9IGNvbGxl
Y3Rpb25zLm5hbWVkdHVwbGUoIkRpc3RJbmZvIiwgWyJwcm9qZWN0X25hbWUiLCAidmVyc2lvbiJd
KQogCiAKLWNsYXNzIE9wdGlvbihvYmplY3QpOgorVFJBTlNfRk5NQVRDSCA9IHN0ci5tYWtldHJh
bnMoeyJbIjogIltbXSIsICJdIjogIltdXSJ9KQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZl
cmJvc2U9RmFsc2UsIGZ1bGx0cmFjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYudmVyYm9zZSA9IHZl
cmJvc2UKLSAgICAgICAgc2VsZi5mdWxsdHJhY2UgPSBmdWxsdHJhY2UKKworY2xhc3MgT3B0aW9u
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NpdHk9MCk6CisgICAgICAgIHNlbGYudmVy
Ym9zaXR5ID0gdmVyYm9zaXR5CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYXJncyhzZWxmKToK
ICAgICAgICAgdmFsdWVzID0gW10KLSAgICAgICAgaWYgc2VsZi52ZXJib3NlOgotICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZCgiLXYiKQotICAgICAgICBpZiBzZWxmLmZ1bGx0cmFjZToKLSAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmQoIi0tZnVsbHRyYWNlIikKKyAgICAgICAgdmFsdWVzLmFwcGVu
ZCgiLS12ZXJib3NpdHk9JWQiICUgc2VsZi52ZXJib3NpdHkpCiAgICAgICAgIHJldHVybiB2YWx1
ZXMKIAogCiBAcHl0ZXN0LmZpeHR1cmUoCi0gICAgcGFyYW1zPVsKLSAgICAgICAgT3B0aW9uKHZl
cmJvc2U9RmFsc2UpLAotICAgICAgICBPcHRpb24odmVyYm9zZT1UcnVlKSwKLSAgICAgICAgT3B0
aW9uKHZlcmJvc2U9LTEpLAotICAgICAgICBPcHRpb24oZnVsbHRyYWNlPVRydWUpLAotICAgIF0s
Ci0gICAgaWRzPVsiZGVmYXVsdCIsICJ2ZXJib3NlIiwgInF1aWV0IiwgImZ1bGx0cmFjZSJdLAor
ICAgIHBhcmFtcz1bT3B0aW9uKHZlcmJvc2l0eT0wKSwgT3B0aW9uKHZlcmJvc2l0eT0xKSwgT3B0
aW9uKHZlcmJvc2l0eT0tMSldLAorICAgIGlkcz1bImRlZmF1bHQiLCAidmVyYm9zZSIsICJxdWll
dCJdLAogKQogZGVmIG9wdGlvbihyZXF1ZXN0KToKICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQpA
QCAtNjcsOCArNzUsNyBAQCBkZWYgdGVzdF9wbHVnaW5fbmFtZXZlcnNpb24oaW5wdXQsIGV4cGVj
dGVkKToKICAgICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCiAKIAotY2xhc3MgVGVzdFRlcm1p
bmFsKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RUZXJtaW5hbDoKICAgICBkZWYgdGVzdF9wYXNzX3Nr
aXBfZmFpbChzZWxmLCB0ZXN0ZGlyLCBvcHRpb24pOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICAgICAiIiIKQEAgLTgyLDcgKzg5LDcgQEAgY2xhc3MgVGVzdFRlcm1pbmFs
KG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCpvcHRpb24uYXJncykKLSAgICAgICAgaWYgb3B0aW9uLnZlcmJvc2U6Cisg
ICAgICAgIGlmIG9wdGlvbi52ZXJib3NpdHkgPiAwOgogICAgICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAg
Iip0ZXN0X3Bhc3Nfc2tpcF9mYWlsLnB5Ojp0ZXN0X29rIFBBU1MqIiwKQEAgLTkwLDggKzk3LDEw
IEBAIGNsYXNzIFRlc3RUZXJtaW5hbChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAiKnRl
c3RfcGFzc19za2lwX2ZhaWwucHk6OnRlc3RfZnVuYyBGQUlMKiIsCiAgICAgICAgICAgICAgICAg
XQogICAgICAgICAgICAgKQotICAgICAgICBlbHNlOgorICAgICAgICBlbGlmIG9wdGlvbi52ZXJi
b3NpdHkgPT0gMDoKICAgICAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0
ZXN0X3Bhc3Nfc2tpcF9mYWlsLnB5IC5zRioiXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIi5zRioiXSkKICAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWyIgICAgZGVmIHRlc3RfZnVuYygpOiIs
ICI+ICAgICAgIGFzc2VydCAwIiwgIkUgICAgICAgYXNzZXJ0IDAiXQogICAgICAgICApCkBAIC05
OSw3ICsxMDgsOCBAQCBjbGFzcyBUZXN0VGVybWluYWwob2JqZWN0KToKICAgICBkZWYgdGVzdF9p
bnRlcm5hbGVycm9yKHNlbGYsIHRlc3RkaXIsIGxpbmVjb21wKToKICAgICAgICAgbW9kY29sID0g
dGVzdGRpci5nZXRtb2R1bGVjb2woImRlZiB0ZXN0X29uZSgpOiBwYXNzIikKICAgICAgICAgcmVw
ID0gVGVybWluYWxSZXBvcnRlcihtb2Rjb2wuY29uZmlnLCBmaWxlPWxpbmVjb21wLnN0cmluZ2lv
KQotICAgICAgICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAicmFpc2UgVmFs
dWVFcnJvcignaGVsbG8nKSIpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9y
KSBhcyBleGNpbmZvOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaGVsbG8iKQogICAg
ICAgICByZXAucHl0ZXN0X2ludGVybmFsZXJyb3IoZXhjaW5mby5nZXRyZXByKCkpCiAgICAgICAg
IGxpbmVjb21wLmFzc2VydF9jb250YWluc19saW5lcyhbIklOVEVSTkFMRVJST1I+ICpWYWx1ZUVy
cm9yKmhlbGxvKiJdKQogCkBAIC0xMzYsNDcgKzE0NiwxMDIgQEAgY2xhc3MgVGVzdFRlcm1pbmFs
KG9iamVjdCk6CiAgICAgICAgIGNoaWxkLnNlbmRlb2YoKQogICAgICAgICBjaGlsZC5raWxsKDE1
KQogCisgICAgZGVmIHRlc3RfcmVwb3J0X2NvbGxlY3RfYWZ0ZXJfaGFsZl9hX3NlY29uZChzZWxm
LCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiVGVzdCBmb3IgImNvbGxlY3RpbmciIGJlaW5nIHVwZGF0
ZWQgYWZ0ZXIgMC41cyIiIgorCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
ICAgICoqeworICAgICAgICAgICAgICAgICJ0ZXN0MS5weSI6ICIiIgorICAgICAgICAgICAgICAg
IGltcG9ydCBfcHl0ZXN0LnRlcm1pbmFsCisKKyAgICAgICAgICAgICAgICBfcHl0ZXN0LnRlcm1p
bmFsLlJFUE9SVF9DT0xMRUNUSU5HX1JFU09MVVRJT04gPSAwCisKKyAgICAgICAgICAgICAgICBk
ZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAg
ICAgIiIiLAorICAgICAgICAgICAgICAgICJ0ZXN0Mi5weSI6ICJkZWYgdGVzdF8yKCk6IHBhc3Mi
LAorICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgICMgRXhwbGljaXRseSB0ZXN0IGNv
bG9yZWQgb3V0cHV0LgorICAgICAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLnNldGVudigiUFlfQ09M
T1JTIiwgIjEiKQorCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3QoIi12IHRl
c3QxLnB5IHRlc3QyLnB5IikKKyAgICAgICAgY2hpbGQuZXhwZWN0KHIiY29sbGVjdGluZyBcLlwu
XC4iKQorICAgICAgICBjaGlsZC5leHBlY3QociJjb2xsZWN0aW5nIDEgaXRlbSIpCisgICAgICAg
IGNoaWxkLmV4cGVjdChyImNvbGxlY3RpbmcgMiBpdGVtcyIpCisgICAgICAgIGNoaWxkLmV4cGVj
dChyImNvbGxlY3RlZCAyIGl0ZW1zIikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNv
ZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQgIj0gXHgxYlszMm1ceDFiWzFtMiBwYXNzZWRceDFi
WzBtXHgxYlszMm0gaW4iIGluIHJlc3QKKwogICAgIGRlZiB0ZXN0X2l0ZW1yZXBvcnRfc3ViY2xh
c3Nlc19zaG93X3N1YmNsYXNzZWRfZmlsZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgdGVzdF9wMT0iIiIKKyAgICAgICAgICAgICoqewor
ICAgICAgICAgICAgICAgICJ0ZXN0cy90ZXN0X3AxIjogIiIiCiAgICAgICAgICAgICBjbGFzcyBC
YXNlVGVzdHMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBmYWlsID0gRmFsc2UKKwogICAgICAg
ICAgICAgICAgIGRlZiB0ZXN0X3AxKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0g
ICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3MoQmFzZVRlc3RzKToKLSAgICAgICAgICAgICAgICBw
YXNzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHAyID0gdGVzdGRpci5tYWtlcHlm
aWxlKAotICAgICAgICAgICAgdGVzdF9wMj0iIiIKKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5mYWlsOiBhc3NlcnQgMAorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAi
dGVzdHMvdGVzdF9wMiI6ICIiIgogICAgICAgICAgICAgZnJvbSB0ZXN0X3AxIGltcG9ydCBCYXNl
VGVzdHMKLSAgICAgICAgICAgIGNsYXNzIFRlc3RNb3JlKEJhc2VUZXN0cyk6Ci0gICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAiIiIKKworICAgICAgICAgICAgY2xhc3MgVGVzdE1vcmUoQmFz
ZVRlc3RzKTogcGFzcworICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAidGVz
dHMvdGVzdF9wMy5weSI6ICIiIgorICAgICAgICAgICAgZnJvbSB0ZXN0X3AxIGltcG9ydCBCYXNl
VGVzdHMKKworICAgICAgICAgICAgQmFzZVRlc3RzLmZhaWwgPSBUcnVlCisKKyAgICAgICAgICAg
IGNsYXNzIFRlc3RNb3JlKEJhc2VUZXN0cyk6IHBhc3MKKyAgICAgICAgIiIiLAorICAgICAgICAg
ICAgfQogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAyKQot
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9wMi5weSAuKiIsICIq
MSBwYXNzZWQqIl0pCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsIHAy
KQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgidGVzdHMvdGVzdF9wMi5weSIs
ICItLXJvb3RkaXI9dGVzdHMiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyJ0ZXN0cy90ZXN0X3AyLnB5IC4qIiwgIj0qIDEgcGFzc2VkIGluICoiXSkKKworICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXZ2IiwgIi1yQSIsICJ0ZXN0cy90ZXN0X3AyLnB5
IiwgIi0tcm9vdGRpcj10ZXN0cyIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKLSAgICAgICAgICAgIFsiKnRlc3RfcDIucHk6OlRlc3RNb3JlOjp0ZXN0X3AxKiA8LSAqdGVz
dF9wMS5weSpQQVNTRUQqIl0KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAidGVzdHMv
dGVzdF9wMi5weTo6VGVzdE1vcmU6OnRlc3RfcDEgPC0gdGVzdF9wMS5weSBQQVNTRUQgKiIsCisg
ICAgICAgICAgICAgICAgIio9IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID0qIiwKKyAgICAgICAg
ICAgICAgICAiUEFTU0VEIHRlc3RzL3Rlc3RfcDIucHk6OlRlc3RNb3JlOjp0ZXN0X3AxIiwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXZ2IiwgIi1yQSIsICJ0ZXN0cy90ZXN0X3AzLnB5IiwgIi0tcm9vdGRpcj10ZXN0cyIpCisg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAidGVzdHMvdGVzdF9wMy5weTo6VGVzdE1vcmU6OnRlc3RfcDEgPC0gdGVzdF9w
MS5weSBGQUlMRUQgKiIsCisgICAgICAgICAgICAgICAgIipfIFRlc3RNb3JlLnRlc3RfcDEgXyoi
LAorICAgICAgICAgICAgICAgICIgICAgZGVmIHRlc3RfcDEoc2VsZik6IiwKKyAgICAgICAgICAg
ICAgICAiPiAgICAgICBpZiBzZWxmLmZhaWw6IGFzc2VydCAwIiwKKyAgICAgICAgICAgICAgICAi
RSAgICAgICBhc3NlcnQgMCIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAg
InRlc3RzL3Rlc3RfcDEucHk6NTogQXNzZXJ0aW9uRXJyb3IiLAorICAgICAgICAgICAgICAgICIq
PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9KiIsCisgICAgICAgICAgICAgICAgIkZBSUxFRCB0
ZXN0cy90ZXN0X3AzLnB5OjpUZXN0TW9yZTo6dGVzdF9wMSAtIGFzc2VydCAwIiwKKyAgICAgICAg
ICAgICAgICAiKj0gMSBmYWlsZWQgaW4gKiIsCisgICAgICAgICAgICBdCiAgICAgICAgICkKIAog
ICAgIGRlZiB0ZXN0X2l0ZW1yZXBvcnRfZGlyZWN0Y2xhc3Nlc19ub3Rfc2hvd25fYXNfc3ViY2xh
c3NlcyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgYSA9IHRlc3RkaXIubWtweWRpcigiYTEyMyIp
CiAgICAgICAgIGEuam9pbigidGVzdF9oZWxsbzEyMy5weSIpLndyaXRlKAotICAgICAgICAgICAg
X3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAg
ICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3Qp
OgorICAgICAgICAgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZik6CisgICAgICAgICAg
ICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBjbGFz
cyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qoc2Vs
Zik6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiCiAgICAgICAgICAgICAp
CiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12diIpCiAgICAgICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IDAKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmEx
MjMvdGVzdF9oZWxsbzEyMy5weSpQQVNTKiJdKQotICAgICAgICBhc3NlcnQgIiA8LSAiIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqIDwtICoiKQogCi0gICAgZGVmIHRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KHNlbGYsIHRl
c3RkaXIsIG9wdGlvbik6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmdWxsdHJhY2Ui
LCAoIiIsICItLWZ1bGx0cmFjZSIpKQorICAgIGRlZiB0ZXN0X2tleWJvYXJkX2ludGVycnVwdChz
ZWxmLCB0ZXN0ZGlyLCBmdWxsdHJhY2UpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb2JhcigpOgpAQCAtMTg4LDcg
KzI1Myw3IEBAIGNsYXNzIFRlc3RUZXJtaW5hbChvYmplY3QpOgogICAgICAgICAiIiIKICAgICAg
ICAgKQogCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCpvcHRpb24uYXJncywg
bm9fcmVyYWlzZV9jdHJsYz1UcnVlKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dChmdWxsdHJhY2UsIG5vX3JlcmFpc2VfY3RybGM9VHJ1ZSkKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICIgICAgZGVm
IHRlc3RfZm9vYmFyKCk6IiwKQEAgLTE5NywxMyArMjYyLDEzIEBAIGNsYXNzIFRlc3RUZXJtaW5h
bChvYmplY3QpOgogICAgICAgICAgICAgICAgICIqX2tleWJvYXJkX2ludGVycnVwdC5weTo2OiBL
ZXlib2FyZEludGVycnVwdCoiLAogICAgICAgICAgICAgXQogICAgICAgICApCi0gICAgICAgIGlm
IG9wdGlvbi5mdWxsdHJhY2U6CisgICAgICAgIGlmIGZ1bGx0cmFjZToKICAgICAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgICAgICBbIipyYWlzZSBLZXli
b2FyZEludGVycnVwdCAgICMgc2ltdWxhdGluZyB0aGUgdXNlcioiXQogICAgICAgICAgICAgKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAot
ICAgICAgICAgICAgICAgIFsiKHRvIHNob3cgYSBmdWxsIHRyYWNlYmFjayBvbiBLZXlib2FyZElu
dGVycnVwdCB1c2UgLS1mdWxsdHJhY2UpIl0KKyAgICAgICAgICAgICAgICBbIih0byBzaG93IGEg
ZnVsbCB0cmFjZWJhY2sgb24gS2V5Ym9hcmRJbnRlcnJ1cHQgdXNlIC0tZnVsbC10cmFjZSkiXQog
ICAgICAgICAgICAgKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqS2V5
Ym9hcmRJbnRlcnJ1cHQqIl0pCiAKQEAgLTIzOCw3ICszMDMsNyBAQCBjbGFzcyBUZXN0VGVybWlu
YWwob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3Jld3JpdGUoc2VsZiwgdGVzdGRpciwgbW9ua2V5
cGF0Y2gpOgogICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKLSAgICAgICAg
ZiA9IHB5LmlvLlRleHRJTygpCisgICAgICAgIGYgPSBTdHJpbmdJTygpCiAgICAgICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIoZiwgImlzYXR0eSIsIGxhbWJkYSAqYXJnczogVHJ1ZSkKICAgICAgICAg
dHIgPSBUZXJtaW5hbFJlcG9ydGVyKGNvbmZpZywgZikKICAgICAgICAgdHIuX3R3LmZ1bGx3aWR0
aCA9IDEwCkBAIC0yNDYsOSArMzExLDMxIEBAIGNsYXNzIFRlc3RUZXJtaW5hbChvYmplY3QpOgog
ICAgICAgICB0ci5yZXdyaXRlKCJoZXkiLCBlcmFzZT1UcnVlKQogICAgICAgICBhc3NlcnQgZi5n
ZXR2YWx1ZSgpID09ICJoZWxsbyIgKyAiXHIiICsgImhleSIgKyAoNiAqICIgIikKIAorICAgIGRl
ZiB0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzX2V4cGxpY2l0X21hcmt1cCgKKyAgICAgICAgc2VsZiwg
dGVzdGRpcjogVGVzdGRpciwgY29sb3JfbWFwcGluZworICAgICkgLT4gTm9uZToKKyAgICAgICAg
IiIiVGVzdCB0aGF0IFRlcm1pbmFsUmVwb3J0ZXIgaGFuZGxlcyBtYXJrdXAgZXhwbGljaXRseSBw
cm92aWRlZCBieQorICAgICAgICBhIHB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyBob29rLiIiIgor
ICAgICAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLnNldGVudigiUFlfQ09MT1JTIiwgIjEiKQorICAg
ICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
ZGVmIHB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQpOgorICAgICAgICAgICAgICAgIHJl
dHVybiAnZm9vJywgJ0YnLCAoJ0ZPTycsIHsncmVkJzogVHJ1ZX0pCisgICAgICAgICIiIgorICAg
ICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgZGVmIHRlc3RfZm9vYmFyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAg
ICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYi
KQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBjb2xv
cl9tYXBwaW5nLmZvcm1hdF9mb3JfZm5tYXRjaChbIip7cmVkfUZPT3tyZXNldH0qIl0pCisgICAg
ICAgICkKIAotY2xhc3MgVGVzdENvbGxlY3Rvbmx5KG9iamVjdCk6CiAKK2NsYXNzIFRlc3RDb2xs
ZWN0b25seToKICAgICBkZWYgdGVzdF9jb2xsZWN0b25seV9iYXNpYyhzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0yNTgsNyAr
MzQ1LDcgQEAgY2xhc3MgVGVzdENvbGxlY3Rvbmx5KG9iamVjdCk6CiAgICAgICAgICkKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKICAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgWyI8TW9kdWxlICd0ZXN0
X2NvbGxlY3Rvbmx5X2Jhc2ljLnB5Jz4iLCAiICA8RnVuY3Rpb24gJ3Rlc3RfZnVuYyc+Il0KKyAg
ICAgICAgICAgIFsiPE1vZHVsZSB0ZXN0X2NvbGxlY3Rvbmx5X2Jhc2ljLnB5PiIsICIgIDxGdW5j
dGlvbiB0ZXN0X2Z1bmM+Il0KICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfY29sbGVjdG9ubHlf
c2tpcHBlZF9tb2R1bGUoc2VsZiwgdGVzdGRpcik6CkBAIC0yNzEsNiArMzU4LDM0IEBAIGNsYXNz
IFRlc3RDb2xsZWN0b25seShvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1jb2xsZWN0LW9ubHkiLCAiLXJzIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiKkVSUk9SIGNvbGxlY3RpbmcqIl0pCiAKKyAgICBkZWYgdGVzdF9jb2xsZWN0
b25seV9kaXNwbGF5c190ZXN0X2Rlc2NyaXB0aW9uKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyOiBU
ZXN0ZGlyLCBkdW1teV95YW1sX2N1c3RvbV90ZXN0CisgICAgKSAtPiBOb25lOgorICAgICAgICAi
IiJVc2VkIGR1bW15X3lhbWxfY3VzdG9tX3Rlc3QgZm9yIGFuIEl0ZW0gd2l0aG91dCBgYG9iamBg
LiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgIGRlZiB0ZXN0X3dpdGhfZGVzY3JpcHRpb24oKToKKyAgICAgICAgICAgICAgICAnJycg
IFRoaXMgdGVzdCBoYXMgYSBkZXNjcmlwdGlvbi4KKworICAgICAgICAgICAgICAgICAgbW9yZTEu
CisgICAgICAgICAgICAgICAgICAgIG1vcmUyLicnJworICAgICAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5Iiwg
Ii0tdmVyYm9zZSIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAiPFlhbWxGaWxlIHRlc3QxLnlhbWw+IiwKKyAgICAg
ICAgICAgICAgICAiICA8WWFtbEl0ZW0gdGVzdDEueWFtbD4iLAorICAgICAgICAgICAgICAgICI8
TW9kdWxlIHRlc3RfY29sbGVjdG9ubHlfZGlzcGxheXNfdGVzdF9kZXNjcmlwdGlvbi5weT4iLAor
ICAgICAgICAgICAgICAgICIgIDxGdW5jdGlvbiB0ZXN0X3dpdGhfZGVzY3JpcHRpb24+IiwKKyAg
ICAgICAgICAgICAgICAiICAgIFRoaXMgdGVzdCBoYXMgYSBkZXNjcmlwdGlvbi4iLAorICAgICAg
ICAgICAgICAgICIgICAgIiwKKyAgICAgICAgICAgICAgICAiICAgIG1vcmUxLiIsCisgICAgICAg
ICAgICAgICAgIiAgICAgIG1vcmUyLiIsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgY29u
c2VjdXRpdmU9VHJ1ZSwKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3RfY29sbGVjdG9ubHlfZmFp
bGVkX21vZHVsZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCIi
InJhaXNlIFZhbHVlRXJyb3IoMCkiIiIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItLWNvbGxlY3Qtb25seSIpCkBAIC0zMDIsMTEgKzQxNywxMCBAQCBjbGFzcyBUZXN0Q29s
bGVjdG9ubHkob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgIio8TW9kdWxlICcqLnB5Jz4iLAotICAgICAgICAgICAgICAgICIqIDxGdW5jdGlvbiAn
dGVzdF9mdW5jMScqPiIsCi0gICAgICAgICAgICAgICAgIiogPENsYXNzICdUZXN0Q2xhc3MnPiIs
Ci0gICAgICAgICAgICAgICAgIyAiKiAgPEluc3RhbmNlICcoKSc+IiwKLSAgICAgICAgICAgICAg
ICAiKiAgIDxGdW5jdGlvbiAndGVzdF9tZXRob2QnKj4iLAorICAgICAgICAgICAgICAgICIqPE1v
ZHVsZSAqLnB5PiIsCisgICAgICAgICAgICAgICAgIiogPEZ1bmN0aW9uIHRlc3RfZnVuYzE+IiwK
KyAgICAgICAgICAgICAgICAiKiA8Q2xhc3MgVGVzdENsYXNzPiIsCisgICAgICAgICAgICAgICAg
IiogICA8RnVuY3Rpb24gdGVzdF9tZXRob2Q+IiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQog
CkBAIC0zMTUsMjQgKzQyOSwyNCBAQCBjbGFzcyBUZXN0Q29sbGVjdG9ubHkob2JqZWN0KToKICAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IiwgcCkKICAg
ICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMgogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAg
IHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAg
KkVSUk9SKgorICAgICAgICAgICAgICAgICpJbXBvcnRFcnJvcioKKyAgICAgICAgICAgICAgICAq
Tm8gbW9kdWxlIG5hbWVkICpFcnJsayoKKyAgICAgICAgICAgICAgICAqMSBlcnJvcioKICAgICAg
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICpFUlJPUioKLSAgICAgICAgICAgICpJbXBvcnRF
cnJvcioKLSAgICAgICAgICAgICpObyBtb2R1bGUgbmFtZWQgKkVycmxrKgotICAgICAgICAgICAg
KjEgZXJyb3IqCi0gICAgICAgICIiIgogICAgICAgICAgICAgKS5zdHJpcCgpCiAgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X2NvbGxlY3Rvbmx5X21pc3NpbmdfcGF0aChzZWxmLCB0ZXN0ZGlyKToK
LSAgICAgICAgIiIidGhpcyBjaGVja3MgaXNzdWUgMTE1LAotICAgICAgICAgICAgZmFpbHVyZSBp
biBwYXJzZWFyZ3Mgd2lsbCBjYXVzZSBzZXNzaW9uCi0gICAgICAgICAgICBub3QgdG8gaGF2ZSB0
aGUgaXRlbXMgYXR0cmlidXRlCi0gICAgICAgICIiIgorICAgICAgICAiIiJJc3N1ZSAxMTU6IGZh
aWx1cmUgaW4gcGFyc2VhcmdzIHdpbGwgY2F1c2Ugc2Vzc2lvbiBub3QgdG8KKyAgICAgICAgaGF2
ZSB0aGUgaXRlbXMgYXR0cmlidXRlLiIiIgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1jb2xsZWN0LW9ubHkiLCAidWhtX21pc3NpbmdfcGF0aCIpCiAgICAgICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IDQKLSAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsi
KkVSUk9SOiBmaWxlIG5vdCBmb3VuZCoiXSkKKyAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNo
X2xpbmVzKAorICAgICAgICAgICAgWyIqRVJST1I6IGZpbGUgb3IgZGlyZWN0b3J5IG5vdCBmb3Vu
ZDogdWhtX21pc3NpbmdfcGF0aCJdCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2NvbGxlY3Rv
bmx5X3F1aWV0KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRl
ZiB0ZXN0X2ZvbygpOiBwYXNzIikKQEAgLTM0NSwyMyArNDU5LDEyIEBAIGNsYXNzIFRlc3RDb2xs
ZWN0b25seShvYmplY3QpOgogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
dGVzdF9mdW4ucHk6IDEqIl0pCiAKIAotZGVmIHRlc3RfcmVwcl9weXRob25fdmVyc2lvbihtb25r
ZXlwYXRjaCk6Ci0gICAgdHJ5OgotICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5cywgInZl
cnNpb25faW5mbyIsICgyLCA1LCAxLCAiZmluYWwiLCAwKSkKLSAgICAgICAgYXNzZXJ0IHJlcHJf
cHl0aG9udmVyc2lvbigpID09ICIyLjUuMS1maW5hbC0wIgotICAgICAgICBzeXMudmVyc2lvbl9p
bmZvID0geCA9ICgyLCAzKQotICAgICAgICBhc3NlcnQgcmVwcl9weXRob252ZXJzaW9uKCkgPT0g
c3RyKHgpCi0gICAgZmluYWxseToKLSAgICAgICAgbW9ua2V5cGF0Y2gudW5kbygpICAjIGRvIHRo
aXMgZWFybHkgYXMgcHl0ZXN0IGNhbiBnZXQgY29uZnVzZWQKLQotCi1jbGFzcyBUZXN0Rml4dHVy
ZVJlcG9ydGluZyhvYmplY3QpOgotCitjbGFzcyBUZXN0Rml4dHVyZVJlcG9ydGluZzoKICAgICBk
ZWYgdGVzdF9zZXR1cF9maXh0dXJlX2Vycm9yKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBzZXR1cF9m
dW5jdGlvbihmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJzZXR1cCBmdW5jIikK
KyAgICAgICAgICAgICAgICBwcmludCgic2V0dXAgZnVuYyIpCiAgICAgICAgICAgICAgICAgYXNz
ZXJ0IDAKICAgICAgICAgICAgIGRlZiB0ZXN0X25hZGEoKToKICAgICAgICAgICAgICAgICBwYXNz
CkBAIC0zODUsNyArNDg4LDcgQEAgY2xhc3MgVGVzdEZpeHR1cmVSZXBvcnRpbmcob2JqZWN0KToK
ICAgICAgICAgICAgIGRlZiB0ZXN0X25hZGEoKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAg
ICAgICAgICBkZWYgdGVhcmRvd25fZnVuY3Rpb24oZnVuY3Rpb24pOgotICAgICAgICAgICAgICAg
IHByaW50ICgidGVhcmRvd24gZnVuYyIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJkb3du
IGZ1bmMiKQogICAgICAgICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICAp
CkBAIC00MDgsNyArNTExLDcgQEAgY2xhc3MgVGVzdEZpeHR1cmVSZXBvcnRpbmcob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBhc3NlcnQgMCwgImZhaWxpbmdmdW5jIgogCiAgICAgICAgICAgICBk
ZWYgdGVhcmRvd25fZnVuY3Rpb24oZnVuY3Rpb24pOgotICAgICAgICAgICAgICAgIHByaW50ICgi
dGVhcmRvd24gZnVuYyIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJkb3duIGZ1bmMiKQog
ICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQogICAgICAgICAiIiIKICAgICAgICAgKQpAQCAt
NDI4LDE3ICs1MzEsMTcgQEAgY2xhc3MgVGVzdEZpeHR1cmVSZXBvcnRpbmcob2JqZWN0KToKICAg
ICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2V0dXBfdGVhcmRvd25fb3V0cHV0X2FuZF90ZXN0X2Zh
aWx1cmUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIiBUZXN0IGZvciBpc3N1ZSAjNDQyICIi
IgorICAgICAgICAiIiJUZXN0IGZvciBpc3N1ZSAjNDQyLiIiIgogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBzZXR1cF9mdW5jdGlv
bihmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJzZXR1cCBmdW5jIikKKyAgICAg
ICAgICAgICAgICBwcmludCgic2V0dXAgZnVuYyIpCiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Zh
aWwoKToKICAgICAgICAgICAgICAgICBhc3NlcnQgMCwgImZhaWxpbmdmdW5jIgogCiAgICAgICAg
ICAgICBkZWYgdGVhcmRvd25fZnVuY3Rpb24oZnVuY3Rpb24pOgotICAgICAgICAgICAgICAgIHBy
aW50ICgidGVhcmRvd24gZnVuYyIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJkb3duIGZ1
bmMiKQogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCkBAIC00NTYsOCArNTU5LDcgQEAgY2xhc3MgVGVzdEZpeHR1cmVSZXBvcnRpbmco
b2JqZWN0KToKICAgICAgICAgKQogCiAKLWNsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0aW9uYWwob2Jq
ZWN0KToKLQorY2xhc3MgVGVzdFRlcm1pbmFsRnVuY3Rpb25hbDoKICAgICBkZWYgdGVzdF9kZXNl
bGVjdGVkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0cGF0aCA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtNDcxLDEzICs1NzMsNDQgQEAgY2xhc3MgVGVzdFRl
cm1pbmFsRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCItayIsICJ0ZXN0X3R3bzoiLCB0ZXN0cGF0aCkKICAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgWyJjb2xsZWN0ZWQgMyBpdGVt
cyAvIDEgZGVzZWxlY3RlZCIsICIqdGVzdF9kZXNlbGVjdGVkLnB5IC4uKiJdCisgICAgICAgICAg
ICBbImNvbGxlY3RlZCAzIGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMiBzZWxlY3RlZCIsICIqdGVz
dF9kZXNlbGVjdGVkLnB5IC4uKiJdCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMAorCisgICAgZGVmIHRlc3RfZGVzZWxlY3RlZF93aXRoX2hvb2t3cmFwcGVyKHNlbGYs
IHRlc3RkaXIpOgorICAgICAgICB0ZXN0cGF0aCA9IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBw
eXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKKyAgICAgICAgICAgIGRlZiBweXRlc3Rf
Y29sbGVjdGlvbl9tb2RpZnlpdGVtcyhjb25maWcsIGl0ZW1zKToKKyAgICAgICAgICAgICAgICB5
aWVsZAorICAgICAgICAgICAgICAgIGRlc2VsZWN0ZWQgPSBpdGVtcy5wb3AoKQorICAgICAgICAg
ICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1zPVtkZXNlbGVjdGVkXSkK
KyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RwYXRoID0gdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZGVmIHRlc3Rfb25l
KCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF90
d28oKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGRlZiB0ZXN0
X3RocmVlKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdHBhdGgpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAiY29sbGVjdGVkIDMgaXRlbXMgLyAxIGRlc2VsZWN0ZWQgLyAyIHNlbGVjdGVkIiwK
KyAgICAgICAgICAgICAgICAiKj0gMiBwYXNzZWQsIDEgZGVzZWxlY3RlZCBpbioiLAorICAgICAg
ICAgICAgXQogICAgICAgICApCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAogICAg
IGRlZiB0ZXN0X3Nob3dfZGVzZWxlY3RlZF9pdGVtc191c2luZ19tYXJrZXhwcl9iZWZvcmVfdGVz
dF9leGVjdXRpb24oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
LSAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdGVzdF9zaG93X2Rlc2VsZWN0ZWQ9IiIiCiAg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKICAgICAgICAgICAgIEBweXRlc3QubWFyay5mb28K
QEAgLTQ5NSwxMiArNjI4LDEyIEBAIGNsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0aW9uYWwob2JqZWN0
KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1tIiwgIm5vdCBmb28iKQog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgImNvbGxlY3RlZCAzIGl0ZW1zIC8gMSBkZXNlbGVjdGVkIiwKLSAgICAgICAg
ICAgICAgICAiKnRlc3Rfc2hvd19kZXMqLnB5IC4uKiIsCisgICAgICAgICAgICAgICAgImNvbGxl
Y3RlZCAzIGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMiBzZWxlY3RlZCIsCisgICAgICAgICAgICAg
ICAgIip0ZXN0X3Nob3dfZGVzZWxlY3RlZC5weSAuLioiLAogICAgICAgICAgICAgICAgICIqPSAy
IHBhc3NlZCwgMSBkZXNlbGVjdGVkIGluICogPSoiLAogICAgICAgICAgICAgXQogICAgICAgICAp
Ci0gICAgICAgIGFzc2VydCAiPSAxIGRlc2VsZWN0ZWQgPSIgbm90IGluIHJlc3VsdC5zdGRvdXQu
c3RyKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIio9IDEgZGVzZWxl
Y3RlZCA9KiIpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKIAogICAgIGRlZiB0ZXN0
X25vX3NraXBfc3VtbWFyeV9pZl9mYWlsdXJlKHNlbGYsIHRlc3RkaXIpOgpAQCAtNTM3LDcgKzY3
MCw4IEBAIGNsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsidGVzdF9wYXNzZXMucHkgLi4qIiwgIiogMiBwYXNz
KiJdKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKLSAgICBkZWYgdGVzdF9oZWFk
ZXJfdHJhaWxlcl9pbmZvKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2hlYWRlcl90cmFp
bGVyX2luZm8oc2VsZiwgdGVzdGRpciwgcmVxdWVzdCk6CisgICAgICAgIHRlc3RkaXIubW9ua2V5
cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiKQogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0
X3Bhc3NlcygpOgpAQCAtNTU4LDEyICs2OTIsMTE3IEBAIGNsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0
aW9uYWwob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcGx1Z2d5Ll9fdmVyc2lvbl9fLAog
ICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgIip0ZXN0X2hlYWRlcl90cmFpbGVy
X2luZm8ucHkgLioiLAotICAgICAgICAgICAgICAgICI9KiAxIHBhc3NlZCppbiAqLlswLTldWzAt
OV0gc2Vjb25kcyAqPSIsCisgICAgICAgICAgICAgICAgIj0qIDEgcGFzc2VkKmluICouWzAtOV1b
MC05XXMgKj0iLAogICAgICAgICAgICAgXQogICAgICAgICApCi0gICAgICAgIGlmIHB5dGVzdC5j
b25maWcucGx1Z2lubWFuYWdlci5saXN0X3BsdWdpbl9kaXN0aW5mbygpOgorICAgICAgICBpZiBy
ZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmxpc3RfcGx1Z2luX2Rpc3RpbmZvKCk6CiAgICAg
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJwbHVnaW5zOiAqIl0pCiAKKyAg
ICBkZWYgdGVzdF9ub19oZWFkZXJfdHJhaWxlcl9pbmZvKHNlbGYsIHRlc3RkaXIsIHJlcXVlc3Qp
OgorICAgICAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExV
R0lOX0FVVE9MT0FEIikKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICBkZWYgdGVzdF9wYXNzZXMoKToKKyAgICAgICAgICAgICAgICBwYXNz
CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItLW5vLWhlYWRlciIpCisgICAgICAgIHZlcmluZm8gPSAiLiIuam9pbihtYXAoc3RyLCBz
eXMudmVyc2lvbl9pbmZvWzozXSkpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKAorICAgICAgICAgICAgInBsYXRmb3JtICVzIC0tIFB5dGhvbiAlcypweXRlc3QtJXMqcHkt
JXMqcGx1Z2d5LSVzIgorICAgICAgICAgICAgJSAoCisgICAgICAgICAgICAgICAgc3lzLnBsYXRm
b3JtLAorICAgICAgICAgICAgICAgIHZlcmluZm8sCisgICAgICAgICAgICAgICAgcHl0ZXN0Ll9f
dmVyc2lvbl9fLAorICAgICAgICAgICAgICAgIHB5Ll9fdmVyc2lvbl9fLAorICAgICAgICAgICAg
ICAgIHBsdWdneS5fX3ZlcnNpb25fXywKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAg
ICBpZiByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmxpc3RfcGx1Z2luX2Rpc3RpbmZvKCk6
CisgICAgICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgicGx1Z2luczogKiIp
CisKKyAgICBkZWYgdGVzdF9oZWFkZXIoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIu
dG1wZGlyLmpvaW4oInRlc3RzIikuZW5zdXJlX2RpcigpCisgICAgICAgIHRlc3RkaXIudG1wZGly
LmpvaW4oImd1aSIpLmVuc3VyZV9kaXIoKQorCisgICAgICAgICMgbm8gaW5pIGZpbGUKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyJyb290ZGlyOiAqdGVzdF9oZWFkZXIwIl0pCisKKyAgICAgICAgIyB3aXRo
IGNvbmZpZ2ZpbGUKKyAgICAgICAgdGVzdGRpci5tYWtlaW5pKCIiIltweXRlc3RdIiIiKQorICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbInJvb3RkaXI6ICp0ZXN0X2hlYWRlcjAsIGNvbmZpZ2ZpbGU6IHRveC5p
bmkiXSkKKworICAgICAgICAjIHdpdGggdGVzdHBhdGhzIG9wdGlvbiwgYW5kIG5vdCBwYXNzaW5n
IGFueXRoaW5nIGluIHRoZSBjb21tYW5kLWxpbmUKKyAgICAgICAgdGVzdGRpci5tYWtlaW5pKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgdGVzdHBh
dGhzID0gdGVzdHMgZ3VpCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAorICAgICAgICAgICAgWyJyb290ZGlyOiAqdGVzdF9oZWFkZXIwLCBjb25maWdmaWxlOiB0b3gu
aW5pLCB0ZXN0cGF0aHM6IHRlc3RzLCBndWkiXQorICAgICAgICApCisKKyAgICAgICAgIyB3aXRo
IHRlc3RwYXRocyBvcHRpb24sIHBhc3NpbmcgZGlyZWN0b3J5IGluIGNvbW1hbmQtbGluZTogZG8g
bm90IHNob3cgdGVzdHBhdGhzIHRoZW4KKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoInRlc3RzIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsicm9vdGRp
cjogKnRlc3RfaGVhZGVyMCwgY29uZmlnZmlsZTogdG94LmluaSJdKQorCisgICAgZGVmIHRlc3Rf
aGVhZGVyX2Fic29sdXRlX3Rlc3RwYXRoKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGly
LCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIlJl
Z3Jlc3N0aW9uIHRlc3QgZm9yICM3ODE0LiIiIgorICAgICAgICB0ZXN0cyA9IHRlc3RkaXIudG1w
ZGlyLmpvaW4oInRlc3RzIikKKyAgICAgICAgdGVzdHMuZW5zdXJlX2RpcigpCisgICAgICAgIHRl
c3RkaXIubWFrZXB5cHJvamVjdHRvbWwoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFt0
b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KKyAgICAgICAgICAgIHRlc3RwYXRocyA9IFsne30nXQor
ICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHRlc3RzCisgICAgICAgICAgICAp
CisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgInJvb3RkaXI6ICphYnNvbHV0ZV90ZXN0cGF0aDAsIGNvbmZpZ2ZpbGU6IHB5cHJvamVj
dC50b21sLCB0ZXN0cGF0aHM6IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHRlc3Rz
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9ub19oZWFkZXIoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIudG1wZGlyLmpv
aW4oInRlc3RzIikuZW5zdXJlX2RpcigpCisgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oImd1
aSIpLmVuc3VyZV9kaXIoKQorCisgICAgICAgICMgd2l0aCB0ZXN0cGF0aHMgb3B0aW9uLCBhbmQg
bm90IHBhc3NpbmcgYW55dGhpbmcgaW4gdGhlIGNvbW1hbmQtbGluZQorICAgICAgICB0ZXN0ZGly
Lm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAg
ICAgICB0ZXN0cGF0aHMgPSB0ZXN0cyBndWkKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbm8taGVhZGVyIikKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoCisgICAgICAgICAgICAicm9vdGRpcjogKnRlc3Rf
aGVhZGVyMCwgaW5pZmlsZTogdG94LmluaSwgdGVzdHBhdGhzOiB0ZXN0cywgZ3VpIgorICAgICAg
ICApCisKKyAgICAgICAgIyB3aXRoIHRlc3RwYXRocyBvcHRpb24sIHBhc3NpbmcgZGlyZWN0b3J5
IGluIGNvbW1hbmQtbGluZTogZG8gbm90IHNob3cgdGVzdHBhdGhzIHRoZW4KKyAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoInRlc3RzIiwgIi0tbm8taGVhZGVyIikKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoInJvb3RkaXI6ICp0ZXN0X2hlYWRlcjAsIGlu
aWZpbGU6IHRveC5pbmkiKQorCisgICAgZGVmIHRlc3Rfbm9fc3VtbWFyeShzZWxmLCB0ZXN0ZGly
KToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgIGRlZiB0ZXN0X25vX3N1bW1hcnkoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQg
ZmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QocDEsICItLW5vLXN1bW1hcnkiKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2Zu
bWF0Y2hfbGluZSgiKj0gRkFJTFVSRVMgPSoiKQorCiAgICAgZGVmIHRlc3Rfc2hvd2xvY2Fscyhz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAg
ICAgICAiIiIKQEAgLTU4Miw4ICs4MjEsMjkgQEAgY2xhc3MgVGVzdFRlcm1pbmFsRnVuY3Rpb25h
bChvYmplY3QpOgogICAgICAgICAgICAgXQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF92ZXJi
b3NlX3JlcG9ydGluZyhzZWxmLCB0ZXN0ZGlyLCBweXRlc3Rjb25maWcpOgorICAgIGRlZiB0ZXN0
X3Nob3dsb2NhbHNfc2hvcnQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAxID0gdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9zaG93bG9j
YWxzX3Nob3J0KCk6CisgICAgICAgICAgICAgICAgeCA9IDMKKyAgICAgICAgICAgICAgICB5ID0g
Inh4eHgiCisgICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiCisgICAgICAgICkK
KyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocDEsICItbCIsICItLXRiPXNob3J0
IikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICJ0ZXN0X3Nob3dsb2NhbHNfc2hvcnQucHk6KiIsCisgICAgICAgICAg
ICAgICAgIiAgICBhc3NlcnQgMCIsCisgICAgICAgICAgICAgICAgIkUgICBhc3NlcnQgMCIsCisg
ICAgICAgICAgICAgICAgIiAgICAgICAgeCAgICAgICAgICA9IDMiLAorICAgICAgICAgICAgICAg
ICIgICAgICAgIHkgICAgICAgICAgPSAneHh4eCciLAorICAgICAgICAgICAgXQorICAgICAgICAp
CisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgdmVyYm9zZV90ZXN0ZmlsZShzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgcmV0dXJuIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgZGVmIHRlc3RfZmFp
bCgpOgpAQCAtNTk5LDIyICs4NTksMzIgQEAgY2xhc3MgVGVzdFRlcm1pbmFsRnVuY3Rpb25hbChv
YmplY3QpOgogICAgICAgICAgICAgICAgIHlpZWxkIGNoZWNrLCAwCiAgICAgICAgICIiIgogICAg
ICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAxLCAiLXYiKQorCisg
ICAgZGVmIHRlc3RfdmVyYm9zZV9yZXBvcnRpbmcoc2VsZiwgdmVyYm9zZV90ZXN0ZmlsZSwgdGVz
dGRpcik6CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KAorICAgICAgICAgICAg
dmVyYm9zZV90ZXN0ZmlsZSwgIi12IiwgIi1XYWx3YXlzOjpweXRlc3QuUHl0ZXN0V2FybmluZyIK
KyAgICAgICAgKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAg
ICAgICBbCiAgICAgICAgICAgICAgICAgIip0ZXN0X3ZlcmJvc2VfcmVwb3J0aW5nLnB5Ojp0ZXN0
X2ZhaWwgKkZBSUwqIiwKICAgICAgICAgICAgICAgICAiKnRlc3RfdmVyYm9zZV9yZXBvcnRpbmcu
cHk6OnRlc3RfcGFzcyAqUEFTUyoiLAogICAgICAgICAgICAgICAgICIqdGVzdF92ZXJib3NlX3Jl
cG9ydGluZy5weTo6VGVzdENsYXNzOjp0ZXN0X3NraXAgKlNLSVAqIiwKLSAgICAgICAgICAgICAg
ICAiKnRlc3RfdmVyYm9zZV9yZXBvcnRpbmcucHk6OnRlc3RfZ2VuKjAqICpGQUlMKiIsCisgICAg
ICAgICAgICAgICAgIip0ZXN0X3ZlcmJvc2VfcmVwb3J0aW5nLnB5Ojp0ZXN0X2dlbiAqWEZBSUwq
IiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9
PSAxCiAKKyAgICBkZWYgdGVzdF92ZXJib3NlX3JlcG9ydGluZ194ZGlzdChzZWxmLCB2ZXJib3Nl
X3Rlc3RmaWxlLCB0ZXN0ZGlyLCBweXRlc3Rjb25maWcpOgogICAgICAgICBpZiBub3QgcHl0ZXN0
Y29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigieGRpc3QiKToKICAgICAgICAgICAgIHB5
dGVzdC5za2lwKCJ4ZGlzdCBwbHVnaW4gbm90IGluc3RhbGxlZCIpCiAKLSAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QocDEsICItdiIsICItbiAxIikKLSAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkZBSUwqdGVzdF92ZXJib3NlX3JlcG9ydGluZy5weTo6dGVz
dF9mYWlsKiJdKQorICAgICAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJ
U0FCTEVfUExVR0lOX0FVVE9MT0FEIikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoCisgICAgICAgICAgICB2ZXJib3NlX3Rlc3RmaWxlLCAiLXYiLCAiLW4gMSIsICItV2Fsd2F5
czo6cHl0ZXN0LlB5dGVzdFdhcm5pbmciCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWyIqRkFJTCp0ZXN0X3ZlcmJvc2VfcmVwb3J0
aW5nX3hkaXN0LnB5Ojp0ZXN0X2ZhaWwqIl0KKyAgICAgICAgKQogICAgICAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAxCiAKICAgICBkZWYgdGVzdF9xdWlldF9yZXBvcnRpbmcoc2VsZiwgdGVzdGRp
cik6CkBAIC02MzUsNyArOTA1LDEwIEBAIGNsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0aW9uYWwob2Jq
ZWN0KToKICAgICAgICAgYXNzZXJ0ICI9PT0iIG5vdCBpbiBzCiAgICAgICAgIGFzc2VydCAicGFz
c2VkIiBub3QgaW4gcwogCi0gICAgZGVmIHRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2hfaG9v
ayhzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAg
ICJwYXJhbXMiLCBbKCksICgiLS1jb2xsZWN0LW9ubHkiLCldLCBpZHM9WyJuby1wYXJhbXMiLCAi
Y29sbGVjdC1vbmx5Il0KKyAgICApCisgICAgZGVmIHRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5p
c2hfaG9vayhzZWxmLCB0ZXN0ZGlyLCBwYXJhbXMpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25m
dGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHB5dGVzdF9yZXBvcnRfY29s
bGVjdGlvbmZpbmlzaChjb25maWcsIHN0YXJ0ZGlyLCBpdGVtcyk6CkBAIC02NTAsMjggKzkyMyw2
MyBAQCBjbGFzcyBUZXN0VGVybWluYWxGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCpwYXJhbXMp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImNvbGxlY3RlZCAzIGl0ZW1z
IiwgImhlbGxvIGZyb20gaG9vazogMyBpdGVtcyJdKQogCisgICAgZGVmIHRlc3Rfc3VtbWFyeV9m
X2FsaWFzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJUZXN0IHRoYXQgJ2YnIGFuZCAnRicg
cmVwb3J0IGNoYXJzIGFyZSBhbGlhc2VzIGFuZCBkb24ndCBzaG93IHVwIHR3aWNlIGluIHRoZSBz
dW1tYXJ5ICgjNjMzNCkiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZQorICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi1yZkYiKQorICAgICAgICBleHBlY3RlZCA9ICJGQUlMRUQgdGVzdF9zdW1t
YXJ5X2ZfYWxpYXMucHk6OnRlc3QgLSBhc3NlcnQgRmFsc2UiCisgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbZXhwZWN0ZWRdKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91
dC5saW5lcy5jb3VudChleHBlY3RlZCkgPT0gMQogCi1kZWYgdGVzdF9mYWlsX2V4dHJhX3JlcG9y
dGluZyh0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X3RoaXMoKTog
YXNzZXJ0IDAiKQorICAgIGRlZiB0ZXN0X3N1bW1hcnlfc19hbGlhcyhzZWxmLCB0ZXN0ZGlyKToK
KyAgICAgICAgIiIiVGVzdCB0aGF0ICdzJyBhbmQgJ1MnIHJlcG9ydCBjaGFycyBhcmUgYWxpYXNl
cyBhbmQgZG9uJ3Qgc2hvdyB1cCB0d2ljZSBpbiB0aGUgc3VtbWFyeSIiIgorICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnNraXAKKyAgICAgICAgICAgIGRlZiB0ZXN0
KCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1yc1MiKQorICAgICAgICBleHBlY3Rl
ZCA9ICJTS0lQUEVEIFsxXSB0ZXN0X3N1bW1hcnlfc19hbGlhcy5weTozOiB1bmNvbmRpdGlvbmFs
IHNraXAiCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbZXhwZWN0ZWRdKQor
ICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lcy5jb3VudChleHBlY3RlZCkgPT0gMQor
CisKK2RlZiB0ZXN0X2ZhaWxfZXh0cmFfcmVwb3J0aW5nKHRlc3RkaXIsIG1vbmtleXBhdGNoKToK
KyAgICBtb25rZXlwYXRjaC5zZXRlbnYoIkNPTFVNTlMiLCAiODAiKQorICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgiZGVmIHRlc3RfdGhpcygpOiBhc3NlcnQgMCwgJ3RoaXNfZmFpbGVkJyAqIDEwMCIp
CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1yTiIpCisgICAgcmVzdWx0LnN0ZG91
dC5ub19mbm1hdGNoX2xpbmUoIipzaG9ydCB0ZXN0IHN1bW1hcnkqIikKICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgYXNzZXJ0ICJzaG9ydCB0ZXN0IHN1bW1hcnkiIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1y
ZiIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Qgc3VtbWFyeSoiLCAi
RkFJTCp0ZXN0X2ZhaWxfZXh0cmFfcmVwb3J0aW5nKiJdKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIip0ZXN0IHN1bW1hcnkqIiwKKyAg
ICAgICAgICAgICJGQUlMRUQgdGVzdF9mYWlsX2V4dHJhX3JlcG9ydGluZy5weTo6dGVzdF90aGlz
IC0gQXNzZXJ0aW9uRXJyb3I6IHRoaXNfZmFpbGVkdC4uLiIsCisgICAgICAgIF0KKyAgICApCiAK
IAogZGVmIHRlc3RfZmFpbF9yZXBvcnRpbmdfb25fcGFzcyh0ZXN0ZGlyKToKICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoImRlZiB0ZXN0X3RoaXMoKTogYXNzZXJ0IDEiKQogICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCItcmYiKQotICAgIGFzc2VydCAic2hvcnQgdGVzdCBzdW1tYXJ5IiBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqc2hvcnQgdGVzdCBzdW1tYXJ5KiIpCiAKIAogZGVmIHRlc3RfcGFzc19leHRyYV9yZXBv
cnRpbmcodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF90aGlzKCk6
IGFzc2VydCAxIikKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgYXNzZXJ0
ICJzaG9ydCB0ZXN0IHN1bW1hcnkiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVz
dWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipzaG9ydCB0ZXN0IHN1bW1hcnkqIikKICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJwIikKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqdGVzdCBzdW1tYXJ5KiIsICJQQVNTKnRlc3RfcGFzc19leHRyYV9yZXBvcnRp
bmcqIl0pCiAKQEAgLTY3OSw0MSArOTg3LDExOSBAQCBkZWYgdGVzdF9wYXNzX2V4dHJhX3JlcG9y
dGluZyh0ZXN0ZGlyKToKIGRlZiB0ZXN0X3Bhc3NfcmVwb3J0aW5nX29uX2ZhaWwodGVzdGRpcik6
CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF90aGlzKCk6IGFzc2VydCAwIikKICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJwIikKLSAgICBhc3NlcnQgInNob3J0IHRl
c3Qgc3VtbWFyeSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0
Lm5vX2ZubWF0Y2hfbGluZSgiKnNob3J0IHRlc3Qgc3VtbWFyeSoiKQogCiAKIGRlZiB0ZXN0X3Bh
c3Nfb3V0cHV0X3JlcG9ydGluZyh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICIiIgotICAgICAgICBkZWYgdGVzdF9wYXNzX291dHB1dCgpOgorICAgICAgICBkZWYg
c2V0dXBfbW9kdWxlKCk6CisgICAgICAgICAgICBwcmludCgic2V0dXBfbW9kdWxlIikKKworICAg
ICAgICBkZWYgdGVhcmRvd25fbW9kdWxlKCk6CisgICAgICAgICAgICBwcmludCgidGVhcmRvd25f
bW9kdWxlIikKKworICAgICAgICBkZWYgdGVzdF9wYXNzX2hhc19vdXRwdXQoKToKICAgICAgICAg
ICAgIHByaW50KCJGb3VyIHNjb3JlIGFuZCBzZXZlbiB5ZWFycyBhZ28uLi4iKQorCisgICAgICAg
IGRlZiB0ZXN0X3Bhc3Nfbm9fb3V0cHV0KCk6CisgICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAg
ICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICBhc3NlcnQgIkZvdXIg
c2NvcmUgYW5kIHNldmVuIHllYXJzIGFnby4uLiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
LSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJQIikKLSAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyJGb3VyIHNjb3JlIGFuZCBzZXZlbiB5ZWFycyBhZ28uLi4iXSkKKyAg
ICBzID0gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIGFzc2VydCAidGVzdF9wYXNzX2hhc19vdXRw
dXQiIG5vdCBpbiBzCisgICAgYXNzZXJ0ICJGb3VyIHNjb3JlIGFuZCBzZXZlbiB5ZWFycyBhZ28u
Li4iIG5vdCBpbiBzCisgICAgYXNzZXJ0ICJ0ZXN0X3Bhc3Nfbm9fb3V0cHV0IiBub3QgaW4gcwor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItclBwIikKKyAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICIqPSBQQVNTRVMgPSoiLAor
ICAgICAgICAgICAgIipfIHRlc3RfcGFzc19oYXNfb3V0cHV0IF8qIiwKKyAgICAgICAgICAgICIq
LSBDYXB0dXJlZCBzdGRvdXQgc2V0dXAgLSoiLAorICAgICAgICAgICAgInNldHVwX21vZHVsZSIs
CisgICAgICAgICAgICAiKi0gQ2FwdHVyZWQgc3Rkb3V0IGNhbGwgLSoiLAorICAgICAgICAgICAg
IkZvdXIgc2NvcmUgYW5kIHNldmVuIHllYXJzIGFnby4uLiIsCisgICAgICAgICAgICAiKi0gQ2Fw
dHVyZWQgc3Rkb3V0IHRlYXJkb3duIC0qIiwKKyAgICAgICAgICAgICJ0ZWFyZG93bl9tb2R1bGUi
LAorICAgICAgICAgICAgIio9IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID0qIiwKKyAgICAgICAg
ICAgICJQQVNTRUQgdGVzdF9wYXNzX291dHB1dF9yZXBvcnRpbmcucHk6OnRlc3RfcGFzc19oYXNf
b3V0cHV0IiwKKyAgICAgICAgICAgICJQQVNTRUQgdGVzdF9wYXNzX291dHB1dF9yZXBvcnRpbmcu
cHk6OnRlc3RfcGFzc19ub19vdXRwdXQiLAorICAgICAgICAgICAgIio9IDIgcGFzc2VkIGluICoi
LAorICAgICAgICBdCisgICAgKQogCiAKLWRlZiB0ZXN0X2NvbG9yX3llcyh0ZXN0ZGlyKToKLSAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X3RoaXMoKTogYXNzZXJ0IDEiKQotICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbG9yPXllcyIpCi0gICAgYXNzZXJ0ICJ0ZXN0
IHNlc3Npb24gc3RhcnRzIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgYXNzZXJ0ICJceDFi
WzFtIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCitkZWYgdGVzdF9jb2xvcl95ZXModGVzdGRpciwg
Y29sb3JfbWFwcGluZyk6CisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIi
IgorICAgICAgICBkZWYgZmFpbCgpOgorICAgICAgICAgICAgYXNzZXJ0IDAKKworICAgICAgICBk
ZWYgdGVzdF90aGlzKCk6CisgICAgICAgICAgICBmYWlsKCkKKyAgICAgICAgIiIiCisgICAgKQor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbG9yPXllcyIsIHN0cihwMSkpCisg
ICAgY29sb3JfbWFwcGluZy5yZXF1aXJlc19vcmRlcmVkX21hcmt1cChyZXN1bHQpCisgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBjb2xvcl9tYXBwaW5nLmZvcm1hdF9m
b3JfZm5tYXRjaCgKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAie2JvbGR9PSo9IHRl
c3Qgc2Vzc2lvbiBzdGFydHMgPSo9e3Jlc2V0fSIsCisgICAgICAgICAgICAgICAgImNvbGxlY3Rl
ZCAxIGl0ZW0iLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJ0ZXN0X2Nv
bG9yX3llcy5weSB7cmVkfUZ7cmVzZXR9e3JlZH0gKiBbMTAwJV17cmVzZXR9IiwKKyAgICAgICAg
ICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiPSo9IEZBSUxVUkVTID0qPSIsCisgICAgICAg
ICAgICAgICAgIntyZWR9e2JvbGR9XypfIHRlc3RfdGhpcyBfKl97cmVzZXR9IiwKKyAgICAgICAg
ICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiICAgIHtrd31kZWZ7aGwtcmVzZXR9IHtmdW5j
dGlvbn10ZXN0X3RoaXN7aGwtcmVzZXR9KCk6IiwKKyAgICAgICAgICAgICAgICAiPiAgICAgICBm
YWlsKCkiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJ7Ym9sZH17cmVk
fXRlc3RfY29sb3JfeWVzLnB5e3Jlc2V0fTo1OiAiLAorICAgICAgICAgICAgICAgICJfIF8gKiBf
IF8qIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiICAgIHtrd31kZWZ7
aGwtcmVzZXR9IHtmdW5jdGlvbn1mYWlse2hsLXJlc2V0fSgpOiIsCisgICAgICAgICAgICAgICAg
Ij4gICAgICAge2t3fWFzc2VydHtobC1yZXNldH0ge251bWJlcn0we2hsLXJlc2V0fSIsCisgICAg
ICAgICAgICAgICAgIntib2xkfXtyZWR9RSAgICAgICBhc3NlcnQgMHtyZXNldH0iLAorICAgICAg
ICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJ7Ym9sZH17cmVkfXRlc3RfY29sb3JfeWVz
LnB5e3Jlc2V0fToyOiBBc3NlcnRpb25FcnJvciIsCisgICAgICAgICAgICAgICAgIntyZWR9PSo9
IHtyZWR9e2JvbGR9MSBmYWlsZWR7cmVzZXR9e3JlZH0gaW4gKnN7cmVzZXR9e3JlZH0gPSo9e3Jl
c2V0fSIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICApCisgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoIi0tY29sb3I9eWVzIiwgIi0tdGI9c2hvcnQiLCBzdHIocDEpKQorICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgY29sb3JfbWFwcGluZy5mb3Jt
YXRfZm9yX2ZubWF0Y2goCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIntib2xkfT0q
PSB0ZXN0IHNlc3Npb24gc3RhcnRzID0qPXtyZXNldH0iLAorICAgICAgICAgICAgICAgICJjb2xs
ZWN0ZWQgMSBpdGVtIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAidGVz
dF9jb2xvcl95ZXMucHkge3JlZH1Ge3Jlc2V0fXtyZWR9ICogWzEwMCVde3Jlc2V0fSIsCisgICAg
ICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIj0qPSBGQUlMVVJFUyA9Kj0iLAorICAg
ICAgICAgICAgICAgICJ7cmVkfXtib2xkfV8qXyB0ZXN0X3RoaXMgXypfe3Jlc2V0fSIsCisgICAg
ICAgICAgICAgICAgIntib2xkfXtyZWR9dGVzdF9jb2xvcl95ZXMucHl7cmVzZXR9OjU6IGluIHRl
c3RfdGhpcyIsCisgICAgICAgICAgICAgICAgIiAgICBmYWlsKCkiLAorICAgICAgICAgICAgICAg
ICJ7Ym9sZH17cmVkfXRlc3RfY29sb3JfeWVzLnB5e3Jlc2V0fToyOiBpbiBmYWlsIiwKKyAgICAg
ICAgICAgICAgICAiICAgIHtrd31hc3NlcnR7aGwtcmVzZXR9IHtudW1iZXJ9MHtobC1yZXNldH0i
LAorICAgICAgICAgICAgICAgICJ7Ym9sZH17cmVkfUUgICBhc3NlcnQgMHtyZXNldH0iLAorICAg
ICAgICAgICAgICAgICJ7cmVkfT0qPSB7cmVkfXtib2xkfTEgZmFpbGVke3Jlc2V0fXtyZWR9IGlu
ICpze3Jlc2V0fXtyZWR9ID0qPXtyZXNldH0iLAorICAgICAgICAgICAgXQorICAgICAgICApCisg
ICAgKQogCiAKIGRlZiB0ZXN0X2NvbG9yX25vKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgiZGVmIHRlc3RfdGhpcygpOiBhc3NlcnQgMSIpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi0tY29sb3I9bm8iKQogICAgIGFzc2VydCAidGVzdCBzZXNzaW9uIHN0YXJ0cyIg
aW4gcmVzdWx0LnN0ZG91dC5zdHIoKQotICAgIGFzc2VydCAiXHgxYlsxbSIgbm90IGluIHJlc3Vs
dC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKlx4MWJb
MW0qIikKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcmJvc2UiLCBbVHJ1ZSwgRmFs
c2VdKQogZGVmIHRlc3RfY29sb3JfeWVzX2NvbGxlY3Rpb25fb25fbm9uX2F0dHkodGVzdGRpciwg
dmVyYm9zZSk6Ci0gICAgIiIic2tpcCBjb2xsZWN0IHByb2dyZXNzIHJlcG9ydCB3aGVuIHdvcmtp
bmcgb24gbm9uLXRlcm1pbmFscy4KLSAgICAjMTM5NwotICAgICIiIgorICAgICIiIiMxMzk3OiBT
a2lwIGNvbGxlY3QgcHJvZ3Jlc3MgcmVwb3J0IHdoZW4gd29ya2luZyBvbiBub24tdGVybWluYWxz
LiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9y
dCBweXRlc3QKQEAgLTcyOCwzNyArMTExNCw2OSBAQCBkZWYgdGVzdF9jb2xvcl95ZXNfY29sbGVj
dGlvbl9vbl9ub25fYXR0eSh0ZXN0ZGlyLCB2ZXJib3NlKToKICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgqYXJncykKICAgICBhc3NlcnQgInRlc3Qgc2Vzc2lvbiBzdGFydHMiIGluIHJl
c3VsdC5zdGRvdXQuc3RyKCkKICAgICBhc3NlcnQgIlx4MWJbMW0iIGluIHJlc3VsdC5zdGRvdXQu
c3RyKCkKLSAgICBhc3NlcnQgImNvbGxlY3RpbmcgMTAgaXRlbXMiIG5vdCBpbiByZXN1bHQuc3Rk
b3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipjb2xsZWN0aW5n
IDEwIGl0ZW1zKiIpCiAgICAgaWYgdmVyYm9zZToKICAgICAgICAgYXNzZXJ0ICJjb2xsZWN0aW5n
IC4uLiIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogICAgIGFzc2VydCAiY29sbGVjdGVkIDEwIGl0
ZW1zIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCiAKIAotZGVmIHRlc3RfZ2V0cmVwb3J0b3B0KCk6
CitkZWYgdGVzdF9nZXRyZXBvcnRvcHQoKSAtPiBOb25lOgorICAgIGZyb20gX3B5dGVzdC50ZXJt
aW5hbCBpbXBvcnQgX1JFUE9SVENIQVJTX0RFRkFVTFQKIAotICAgIGNsYXNzIENvbmZpZyhvYmpl
Y3QpOgotCi0gICAgICAgIGNsYXNzIE9wdGlvbihvYmplY3QpOgotICAgICAgICAgICAgcmVwb3J0
Y2hhcnMgPSAiIgotICAgICAgICAgICAgZGlzYWJsZV93YXJuaW5ncyA9IFRydWUKKyAgICBjbGFz
cyBGYWtlQ29uZmlnOgorICAgICAgICBjbGFzcyBPcHRpb246CisgICAgICAgICAgICByZXBvcnRj
aGFycyA9IF9SRVBPUlRDSEFSU19ERUZBVUxUCisgICAgICAgICAgICBkaXNhYmxlX3dhcm5pbmdz
ID0gRmFsc2UKIAogICAgICAgICBvcHRpb24gPSBPcHRpb24oKQogCi0gICAgY29uZmlnID0gQ29u
ZmlnKCkKKyAgICBjb25maWcgPSBjYXN0KENvbmZpZywgRmFrZUNvbmZpZygpKQorCisgICAgYXNz
ZXJ0IF9SRVBPUlRDSEFSU19ERUZBVUxUID09ICJmRSIKKworICAgICMgRGVmYXVsdC4KKyAgICBh
c3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gIndmRSIKIAogICAgIGNvbmZpZy5vcHRpb24u
cmVwb3J0Y2hhcnMgPSAic2YiCi0gICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJz
ZiIKKyAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gIndzZiIKIAogICAgIGNvbmZp
Zy5vcHRpb24ucmVwb3J0Y2hhcnMgPSAic2Z4dyIKLSAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNv
bmZpZykgPT0gInNmeCIKKyAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gInNmeHci
CisKKyAgICBjb25maWcub3B0aW9uLnJlcG9ydGNoYXJzID0gImEiCisgICAgYXNzZXJ0IGdldHJl
cG9ydG9wdChjb25maWcpID09ICJ3c3hYRWYiCisKKyAgICBjb25maWcub3B0aW9uLnJlcG9ydGNo
YXJzID0gIk4iCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJ3IgorCisgICAg
Y29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJOd2ZFIgorICAgIGFzc2VydCBnZXRyZXBvcnRv
cHQoY29uZmlnKSA9PSAid2ZFIgorCisgICAgY29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJO
ZkVOeCIKKyAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gInd4IgorCisgICAgIyBO
b3cgd2l0aCAtLWRpc2FibGUtd2FybmluZ3MuCisgICAgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dh
cm5pbmdzID0gVHJ1ZQorICAgIGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMgPSAiYSIKKyAgICBh
c3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gInN4WEVmIgogCiAgICAgY29uZmlnLm9wdGlv
bi5yZXBvcnRjaGFycyA9ICJzZngiCi0gICAgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdz
ID0gRmFsc2UKLSAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gInNmeHciCisgICAg
YXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJzZngiCiAKICAgICBjb25maWcub3B0aW9u
LnJlcG9ydGNoYXJzID0gInNmeHciCi0gICAgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdz
ID0gRmFsc2UKLSAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gInNmeHciCisgICAg
YXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJzZngiCisKKyAgICBjb25maWcub3B0aW9u
LnJlcG9ydGNoYXJzID0gImEiCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJz
eFhFZiIKKworICAgIGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMgPSAiQSIKKyAgICBhc3NlcnQg
Z2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gIlBwc3hYRWYiCisKKyAgICBjb25maWcub3B0aW9uLnJl
cG9ydGNoYXJzID0gIkFOIgorICAgIGFzc2VydCBnZXRyZXBvcnRvcHQoY29uZmlnKSA9PSAiIgor
CisgICAgY29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJOd2ZFIgorICAgIGFzc2VydCBnZXRy
ZXBvcnRvcHQoY29uZmlnKSA9PSAiZkUiCiAKIAogZGVmIHRlc3RfdGVybWluYWxyZXBvcnRlcl9y
ZXBvcnRvcHRfYWRkb3B0cyh0ZXN0ZGlyKToKQEAgLTgwNCwxNiArMTIyMiwxNSBAQCBkZWYgdGVz
dF90YnN0eWxlX3Nob3J0KHRlc3RkaXIpOgogICAgIGFzc2VydCAiYXNzZXJ0IHgiIGluIHMKIAog
Ci1kZWYgdGVzdF90cmFjZWNvbmZpZyh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CitkZWYgdGVzdF90
cmFjZWNvbmZpZyh0ZXN0ZGlyKToKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS10
cmFjZWNvbmZpZyIpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmFjdGl2ZSBw
bHVnaW5zKiJdKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RF
RAorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAog
CiAKLWNsYXNzIFRlc3RHZW5lcmljUmVwb3J0aW5nKG9iamVjdCk6Ci0gICAgIiIiIHRoaXMgdGVz
dCBjbGFzcyBjYW4gYmUgc3ViY2xhc3NlZCB3aXRoIGEgZGlmZmVyZW50IG9wdGlvbgotICAgICAg
ICBwcm92aWRlciB0byBydW4gZS5nLiBkaXN0cmlidXRlZCB0ZXN0cy4KLSAgICAiIiIKK2NsYXNz
IFRlc3RHZW5lcmljUmVwb3J0aW5nOgorICAgICIiIlRlc3QgY2xhc3Mgd2hpY2ggY2FuIGJlIHN1
YmNsYXNzZWQgd2l0aCBhIGRpZmZlcmVudCBvcHRpb24gcHJvdmlkZXIgdG8KKyAgICBydW4gZS5n
LiBkaXN0cmlidXRlZCB0ZXN0cy4iIiIKIAogICAgIGRlZiB0ZXN0X2NvbGxlY3RfZmFpbChzZWxm
LCB0ZXN0ZGlyLCBvcHRpb24pOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImltcG9ydCB4
eXpcbiIpCkBAIC04MzUsNyArMTI1MiwzMSBAQCBjbGFzcyBUZXN0R2VuZXJpY1JlcG9ydGluZyhv
YmplY3QpOgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
LW1heGZhaWw9MiIsICpvcHRpb24uYXJncykKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAotICAgICAgICAgICAgWyIqZGVmIHRlc3RfMSgpOioiLCAiKmRlZiB0ZXN0XzIoKToq
IiwgIioyIGZhaWxlZCoiXQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICIqZGVmIHRl
c3RfMSgpOioiLAorICAgICAgICAgICAgICAgICIqZGVmIHRlc3RfMigpOioiLAorICAgICAgICAg
ICAgICAgICIqISBzdG9wcGluZyBhZnRlciAyIGZhaWx1cmVzICEqIiwKKyAgICAgICAgICAgICAg
ICAiKjIgZmFpbGVkKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X21heGZhaWx1cmVzX3dpdGhfaW50ZXJydXB0ZWQoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3Qo
cmVxdWVzdCk6CisgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXNzaW9uLnNob3VsZHN0b3AgPSAi
c2Vzc2lvbl9pbnRlcnJ1cHRlZCIKKyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAi
IiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1tYXhm
YWlsPTEiLCAiLXJhIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICIqPSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9
KiIsCisgICAgICAgICAgICAgICAgIkZBSUxFRCAqIiwKKyAgICAgICAgICAgICAgICAiKiEgc3Rv
cHBpbmcgYWZ0ZXIgMSBmYWlsdXJlcyAhKiIsCisgICAgICAgICAgICAgICAgIiohIHNlc3Npb25f
aW50ZXJydXB0ZWQgISoiLAorICAgICAgICAgICAgICAgICIqPSAxIGZhaWxlZCBpbioiLAorICAg
ICAgICAgICAgXQogICAgICAgICApCiAKICAgICBkZWYgdGVzdF90Yl9vcHRpb24oc2VsZiwgdGVz
dGRpciwgb3B0aW9uKToKQEAgLTg0NSwxOCArMTI4NiwxOCBAQCBjbGFzcyBUZXN0R2VuZXJpY1Jl
cG9ydGluZyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIGcoKToKICAgICAgICAgICAgICAgICBy
YWlzZSBJbmRleEVycm9yCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6Ci0gICAgICAgICAg
ICAgICAgcHJpbnQgKDYqNykKKyAgICAgICAgICAgICAgICBwcmludCg2KjcpCiAgICAgICAgICAg
ICAgICAgZygpICAjIC0tY2FsbGluZy0tCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAg
IGZvciB0Ym9wdCBpbiBbImxvbmciLCAic2hvcnQiLCAibm8iXToKICAgICAgICAgICAgIHByaW50
KCJ0ZXN0aW5nIC0tdGI9JXMuLi4iICUgdGJvcHQpCi0gICAgICAgICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLS10Yj0lcyIgJSB0Ym9wdCkKKyAgICAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCItck4iLCAiLS10Yj0lcyIgJSB0Ym9wdCkKICAgICAgICAgICAgIHMg
PSByZXN1bHQuc3Rkb3V0LnN0cigpCiAgICAgICAgICAgICBpZiB0Ym9wdCA9PSAibG9uZyI6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0ICJwcmludCAoNio3KSIgaW4gcworICAgICAgICAgICAgICAg
IGFzc2VydCAicHJpbnQoNio3KSIgaW4gcwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgInByaW50ICg2KjcpIiBub3QgaW4gcworICAgICAgICAgICAgICAgIGFzc2Vy
dCAicHJpbnQoNio3KSIgbm90IGluIHMKICAgICAgICAgICAgIGlmIHRib3B0ICE9ICJubyI6CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0ICItLWNhbGxpbmctLSIgaW4gcwogICAgICAgICAgICAgICAg
IGFzc2VydCAiSW5kZXhFcnJvciIgaW4gcwpAQCAtODcyLDcgKzEzMTMsNyBAQCBjbGFzcyBUZXN0
R2VuZXJpY1JlcG9ydGluZyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIGcoKToKICAgICAgICAg
ICAgICAgICByYWlzZSBJbmRleEVycm9yCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMSgpOgot
ICAgICAgICAgICAgICAgIHByaW50ICg2KjcpCisgICAgICAgICAgICAgICAgcHJpbnQoNio3KQog
ICAgICAgICAgICAgICAgIGcoKSAgIyAtLWNhbGxpbmctLQogICAgICAgICAgICAgZGVmIHRlc3Rf
ZnVuYzIoKToKICAgICAgICAgICAgICAgICBhc3NlcnQgMCwgImhlbGxvIgpAQCAtOTU1LDYgKzEz
OTYsNDYgQEAgZGVmIHB5dGVzdF9yZXBvcnRfaGVhZGVyKGNvbmZpZywgc3RhcnRkaXIpOgogICAg
ICAgICBhc3NlcnQgIiFUaGlzIGlzIHN0ZGVyciEiIG5vdCBpbiBzdGRvdXQKICAgICAgICAgYXNz
ZXJ0ICIhVGhpcyBpcyBhIHdhcm5pbmcgbG9nIG1zZyEiIG5vdCBpbiBzdGRvdXQKIAorICAgIGRl
ZiB0ZXN0X3Nob3dfY2FwdHVyZV93aXRoX3RlYXJkb3duX2xvZ3Moc2VsZiwgdGVzdGRpcik6Cisg
ICAgICAgICIiIkVuc3VyZSB0aGF0IHRoZSBjYXB0dXJpbmcgb2YgdGVhcmRvd24gbG9ncyBob25v
ciAtLXNob3ctY2FwdHVyZSBzZXR0aW5nIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICAgICAgICAg
IGltcG9ydCBzeXMKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgQHB5
dGVzdC5maXh0dXJlKHNjb3BlPSJmdW5jdGlvbiIsIGF1dG91c2U9IlRydWUiKQorICAgICAgICAg
ICAgZGVmIGhvb2tfZWFjaF90ZXN0KHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHlpZWxkCisg
ICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIXN0ZG91dCEiKQorICAgICAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoIiFzdGRlcnIhIikKKyAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoIiFsb2chIikKKworICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgorICAgICAg
ICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgKQorCisgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXNob3ctY2FwdHVyZT1zdGRvdXQiLCAiLS10
Yj1zaG9ydCIpLnN0ZG91dC5zdHIoKQorICAgICAgICBhc3NlcnQgIiFzdGRvdXQhIiBpbiByZXN1
bHQKKyAgICAgICAgYXNzZXJ0ICIhc3RkZXJyISIgbm90IGluIHJlc3VsdAorICAgICAgICBhc3Nl
cnQgIiFsb2chIiBub3QgaW4gcmVzdWx0CisKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0tc2hvdy1jYXB0dXJlPXN0ZGVyciIsICItLXRiPXNob3J0Iikuc3Rkb3V0LnN0cigp
CisgICAgICAgIGFzc2VydCAiIXN0ZG91dCEiIG5vdCBpbiByZXN1bHQKKyAgICAgICAgYXNzZXJ0
ICIhc3RkZXJyISIgaW4gcmVzdWx0CisgICAgICAgIGFzc2VydCAiIWxvZyEiIG5vdCBpbiByZXN1
bHQKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zaG93LWNhcHR1cmU9
bG9nIiwgIi0tdGI9c2hvcnQiKS5zdGRvdXQuc3RyKCkKKyAgICAgICAgYXNzZXJ0ICIhc3Rkb3V0
ISIgbm90IGluIHJlc3VsdAorICAgICAgICBhc3NlcnQgIiFzdGRlcnIhIiBub3QgaW4gcmVzdWx0
CisgICAgICAgIGFzc2VydCAiIWxvZyEiIGluIHJlc3VsdAorCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCItLXNob3ctY2FwdHVyZT1ubyIsICItLXRiPXNob3J0Iikuc3Rkb3V0
LnN0cigpCisgICAgICAgIGFzc2VydCAiIXN0ZG91dCEiIG5vdCBpbiByZXN1bHQKKyAgICAgICAg
YXNzZXJ0ICIhc3RkZXJyISIgbm90IGluIHJlc3VsdAorICAgICAgICBhc3NlcnQgIiFsb2chIiBu
b3QgaW4gcmVzdWx0CisKIAogQHB5dGVzdC5tYXJrLnhmYWlsKCJub3QgaGFzYXR0cihvcywgJ2R1
cCcpIikKIGRlZiB0ZXN0X2Zkb3Blbl9rZXB0X2FsaXZlX2lzc3VlMTI0KHRlc3RkaXIpOgpAQCAt
MTAxMywyMiArMTQ5NCw4NyBAQCBkZWYgdGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlc3RkaXIpOgog
ICAgICkKIAogCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQogZGVmIHRl
c3RfdGVybWluYWxfc3VtbWFyeV93YXJuaW5nc19hcmVfZGlzcGxheWVkKHRlc3RkaXIpOgogICAg
ICIiIlRlc3QgdGhhdCB3YXJuaW5ncyBlbWl0dGVkIGR1cmluZyBweXRlc3RfdGVybWluYWxfc3Vt
bWFyeSBhcmUgZGlzcGxheWVkLgogICAgICgjMTMwNSkuCiAgICAgIiIiCiAgICAgdGVzdGRpci5t
YWtlY29uZnRlc3QoCiAgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAg
ICAgZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXIpOgotICAgICAg
ICAgICAgY29uZmlnID0gdGVybWluYWxyZXBvcnRlci5jb25maWcKLSAgICAgICAgICAgIGNvbmZp
Zy53YXJuKCdDMScsICdpbnRlcm5hbCB3YXJuaW5nJykKKyAgICAgICAgICAgIHdhcm5pbmdzLndh
cm4oVXNlcldhcm5pbmcoJ2ludGVybmFsIHdhcm5pbmcnKSkKKyAgICAiIiIKKyAgICApCisgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfZmFpbHVy
ZSgpOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53
YXJuKCJ3YXJuaW5nX2Zyb21fIiArICJ0ZXN0IikKKyAgICAgICAgICAgIGFzc2VydCAwCiAgICAg
IiIiCiAgICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcnciKQorICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcmEiKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKLSAgICAgICAgWyI8dW5kZXRlcm1pbmVkIGxvY2F0aW9uPiIsICIqaW50ZXJuYWwg
d2FybmluZyIsICIqPT0gMSB3YXJuaW5ncyBpbiAqIl0KKyAgICAgICAgWworICAgICAgICAgICAg
Iio9IHdhcm5pbmdzIHN1bW1hcnkgPSoiLAorICAgICAgICAgICAgIip3YXJuaW5nX2Zyb21fdGVz
dCoiLAorICAgICAgICAgICAgIio9IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID0qIiwKKyAgICAg
ICAgICAgICIqPSB3YXJuaW5ncyBzdW1tYXJ5IChmaW5hbCkgPSoiLAorICAgICAgICAgICAgIipj
b25mdGVzdC5weTozOippbnRlcm5hbCB3YXJuaW5nIiwKKyAgICAgICAgICAgICIqPT0gMSBmYWls
ZWQsIDIgd2FybmluZ3MgaW4gKiIsCisgICAgICAgIF0KKyAgICApCisgICAgcmVzdWx0LnN0ZG91
dC5ub19mbm1hdGNoX2xpbmUoIipOb25lKiIpCisgICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dC5z
dHIoKQorICAgIGFzc2VydCBzdGRvdXQuY291bnQoIndhcm5pbmdfZnJvbV90ZXN0IikgPT0gMQor
ICAgIGFzc2VydCBzdGRvdXQuY291bnQoIj09PSB3YXJuaW5ncyBzdW1tYXJ5ICIpID09IDIKKwor
CitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorZGVmIHRlc3RfdGVybWlu
YWxfc3VtbWFyeV93YXJuaW5nc19oZWFkZXJfb25jZSh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mYWlsdXJlKCk6CisgICAg
ICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIndhcm5p
bmdfZnJvbV8iICsgInRlc3QiKQorICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAiIiIKKyAgICAp
CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1yYSIpCisgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKj0gd2FybmluZ3Mgc3Vt
bWFyeSA9KiIsCisgICAgICAgICAgICAiKndhcm5pbmdfZnJvbV90ZXN0KiIsCisgICAgICAgICAg
ICAiKj0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPSoiLAorICAgICAgICAgICAgIio9PSAxIGZh
aWxlZCwgMSB3YXJuaW5nIGluICoiLAorICAgICAgICBdCisgICAgKQorICAgIHJlc3VsdC5zdGRv
dXQubm9fZm5tYXRjaF9saW5lKCIqTm9uZSoiKQorICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQu
c3RyKCkKKyAgICBhc3NlcnQgc3Rkb3V0LmNvdW50KCJ3YXJuaW5nX2Zyb21fdGVzdCIpID09IDEK
KyAgICBhc3NlcnQgc3Rkb3V0LmNvdW50KCI9PT0gd2FybmluZ3Mgc3VtbWFyeSAiKSA9PSAxCisK
KworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikKK2RlZiB0ZXN0X3Rlcm1p
bmFsX25vX3N1bW1hcnlfd2FybmluZ3NfaGVhZGVyX29uY2UodGVzdGRpcik6CisgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfZmFpbHVyZSgpOgor
ICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ3
YXJuaW5nX2Zyb21fIiArICJ0ZXN0IikKKyAgICAgICAgICAgIGFzc2VydCAwCisgICAgIiIiCiAg
ICAgKQotICAgIGFzc2VydCAiTm9uZSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1uby1zdW1tYXJ5IikKKyAgICByZXN1bHQuc3Rk
b3V0Lm5vX2ZubWF0Y2hfbGluZSgiKj0gd2FybmluZ3Mgc3VtbWFyeSA9KiIpCisgICAgcmVzdWx0
LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIio9IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID0qIikK
KworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHRyKCkgLT4gVGVybWlu
YWxSZXBvcnRlcjoKKyAgICBjb25maWcgPSBfcHl0ZXN0LmNvbmZpZy5fcHJlcGFyZWNvbmZpZygp
CisgICAgcmV0dXJuIFRlcm1pbmFsUmVwb3J0ZXIoY29uZmlnKQogCiAKIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgKQEAgLTEwMzgsNzEgKzE1ODQsMjIwIEBAIGRlZiB0ZXN0X3Rlcm1pbmFsX3N1
bW1hcnlfd2FybmluZ3NfYXJlX2Rpc3BsYXllZCh0ZXN0ZGlyKToKICAgICAgICAgIyBkaWN0IHZh
bHVlLCBub3QgdGhlIGFjdHVhbCBjb250ZW50cywgc28gdHVwbGVzIG9mIGFueXRoaW5nCiAgICAg
ICAgICMgc3VmZmljZQogICAgICAgICAjIEltcG9ydGFudCBzdGF0dXNlcyAtLSB0aGUgaGlnaGVz
dCBwcmlvcml0eSBvZiB0aGVzZSBhbHdheXMgd2lucwotICAgICAgICAoInJlZCIsICIxIGZhaWxl
ZCIsIHsiZmFpbGVkIjogKDEsKX0pLAotICAgICAgICAoInJlZCIsICIxIGZhaWxlZCwgMSBwYXNz
ZWQiLCB7ImZhaWxlZCI6ICgxLCksICJwYXNzZWQiOiAoMSwpfSksCi0gICAgICAgICgicmVkIiwg
IjEgZXJyb3IiLCB7ImVycm9yIjogKDEsKX0pLAotICAgICAgICAoInJlZCIsICIxIHBhc3NlZCwg
MSBlcnJvciIsIHsiZXJyb3IiOiAoMSwpLCAicGFzc2VkIjogKDEsKX0pLAorICAgICAgICAoInJl
ZCIsIFsoIjEgZmFpbGVkIiwgeyJib2xkIjogVHJ1ZSwgInJlZCI6IFRydWV9KV0sIHsiZmFpbGVk
IjogWzFdfSksCisgICAgICAgICgKKyAgICAgICAgICAgICJyZWQiLAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICgiMSBmYWlsZWQiLCB7ImJvbGQiOiBUcnVlLCAicmVkIjogVHJ1ZX0p
LAorICAgICAgICAgICAgICAgICgiMSBwYXNzZWQiLCB7ImJvbGQiOiBGYWxzZSwgImdyZWVuIjog
VHJ1ZX0pLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHsiZmFpbGVkIjogWzFdLCAicGFz
c2VkIjogWzFdfSwKKyAgICAgICAgKSwKKyAgICAgICAgKCJyZWQiLCBbKCIxIGVycm9yIiwgeyJi
b2xkIjogVHJ1ZSwgInJlZCI6IFRydWV9KV0sIHsiZXJyb3IiOiBbMV19KSwKKyAgICAgICAgKCJy
ZWQiLCBbKCIyIGVycm9ycyIsIHsiYm9sZCI6IFRydWUsICJyZWQiOiBUcnVlfSldLCB7ImVycm9y
IjogWzEsIDJdfSksCisgICAgICAgICgKKyAgICAgICAgICAgICJyZWQiLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICgiMSBwYXNzZWQiLCB7ImJvbGQiOiBGYWxzZSwgImdyZWVuIjog
VHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMSBlcnJvciIsIHsiYm9sZCI6IFRydWUsICJyZWQi
OiBUcnVlfSksCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgeyJlcnJvciI6IFsxXSwgInBh
c3NlZCI6IFsxXX0sCisgICAgICAgICksCiAgICAgICAgICMgKGEgc3RhdHVzIHRoYXQncyBub3Qg
a25vd24gdG8gdGhlIGNvZGUpCi0gICAgICAgICgieWVsbG93IiwgIjEgd2VpcmQiLCB7IndlaXJk
IjogKDEsKX0pLAotICAgICAgICAoInllbGxvdyIsICIxIHBhc3NlZCwgMSB3ZWlyZCIsIHsid2Vp
cmQiOiAoMSwpLCAicGFzc2VkIjogKDEsKX0pLAotICAgICAgICAoInllbGxvdyIsICIxIHdhcm5p
bmdzIiwgeyJ3YXJuaW5ncyI6ICgxLCl9KSwKLSAgICAgICAgKCJ5ZWxsb3ciLCAiMSBwYXNzZWQs
IDEgd2FybmluZ3MiLCB7Indhcm5pbmdzIjogKDEsKSwgInBhc3NlZCI6ICgxLCl9KSwKLSAgICAg
ICAgKCJncmVlbiIsICI1IHBhc3NlZCIsIHsicGFzc2VkIjogKDEsIDIsIDMsIDQsIDUpfSksCisg
ICAgICAgICgieWVsbG93IiwgWygiMSB3ZWlyZCIsIHsiYm9sZCI6IFRydWUsICJ5ZWxsb3ciOiBU
cnVlfSldLCB7IndlaXJkIjogWzFdfSksCisgICAgICAgICgKKyAgICAgICAgICAgICJ5ZWxsb3ci
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgiMSBwYXNzZWQiLCB7ImJvbGQiOiBG
YWxzZSwgImdyZWVuIjogVHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMSB3ZWlyZCIsIHsiYm9s
ZCI6IFRydWUsICJ5ZWxsb3ciOiBUcnVlfSksCisgICAgICAgICAgICBdLAorICAgICAgICAgICAg
eyJ3ZWlyZCI6IFsxXSwgInBhc3NlZCI6IFsxXX0sCisgICAgICAgICksCisgICAgICAgICgieWVs
bG93IiwgWygiMSB3YXJuaW5nIiwgeyJib2xkIjogVHJ1ZSwgInllbGxvdyI6IFRydWV9KV0sIHsi
d2FybmluZ3MiOiBbMV19KSwKKyAgICAgICAgKAorICAgICAgICAgICAgInllbGxvdyIsCisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgKCIxIHBhc3NlZCIsIHsiYm9sZCI6IEZhbHNlLCAi
Z3JlZW4iOiBUcnVlfSksCisgICAgICAgICAgICAgICAgKCIxIHdhcm5pbmciLCB7ImJvbGQiOiBU
cnVlLCAieWVsbG93IjogVHJ1ZX0pLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHsid2Fy
bmluZ3MiOiBbMV0sICJwYXNzZWQiOiBbMV19LAorICAgICAgICApLAorICAgICAgICAoCisgICAg
ICAgICAgICAiZ3JlZW4iLAorICAgICAgICAgICAgWygiNSBwYXNzZWQiLCB7ImJvbGQiOiBUcnVl
LCAiZ3JlZW4iOiBUcnVlfSldLAorICAgICAgICAgICAgeyJwYXNzZWQiOiBbMSwgMiwgMywgNCwg
NV19LAorICAgICAgICApLAogICAgICAgICAjICJCb3JpbmciIHN0YXR1c2VzLiAgVGhlc2UgaGF2
ZSBubyBlZmZlY3Qgb24gdGhlIGNvbG9yIG9mIHRoZSBzdW1tYXJ5CiAgICAgICAgICMgbGluZS4g
IFRodXMsIGlmICpldmVyeSogdGVzdCBoYXMgYSBib3Jpbmcgc3RhdHVzLCB0aGUgc3VtbWFyeSBs
aW5lIHN0YXlzCiAgICAgICAgICMgYXQgaXRzIGRlZmF1bHQgY29sb3IsIGkuZS4geWVsbG93LCB0
byB3YXJuIHRoZSB1c2VyIHRoYXQgdGhlIHRlc3QgcnVuCiAgICAgICAgICMgcHJvZHVjZWQgbm8g
dXNlZnVsIGluZm9ybWF0aW9uCi0gICAgICAgICgieWVsbG93IiwgIjEgc2tpcHBlZCIsIHsic2tp
cHBlZCI6ICgxLCl9KSwKLSAgICAgICAgKCJncmVlbiIsICIxIHBhc3NlZCwgMSBza2lwcGVkIiwg
eyJza2lwcGVkIjogKDEsKSwgInBhc3NlZCI6ICgxLCl9KSwKLSAgICAgICAgKCJ5ZWxsb3ciLCAi
MSBkZXNlbGVjdGVkIiwgeyJkZXNlbGVjdGVkIjogKDEsKX0pLAotICAgICAgICAoImdyZWVuIiwg
IjEgcGFzc2VkLCAxIGRlc2VsZWN0ZWQiLCB7ImRlc2VsZWN0ZWQiOiAoMSwpLCAicGFzc2VkIjog
KDEsKX0pLAotICAgICAgICAoInllbGxvdyIsICIxIHhmYWlsZWQiLCB7InhmYWlsZWQiOiAoMSwp
fSksCi0gICAgICAgICgiZ3JlZW4iLCAiMSBwYXNzZWQsIDEgeGZhaWxlZCIsIHsieGZhaWxlZCI6
ICgxLCksICJwYXNzZWQiOiAoMSwpfSksCi0gICAgICAgICgieWVsbG93IiwgIjEgeHBhc3NlZCIs
IHsieHBhc3NlZCI6ICgxLCl9KSwKLSAgICAgICAgKCJncmVlbiIsICIxIHBhc3NlZCwgMSB4cGFz
c2VkIiwgeyJ4cGFzc2VkIjogKDEsKSwgInBhc3NlZCI6ICgxLCl9KSwKKyAgICAgICAgKCJ5ZWxs
b3ciLCBbKCIxIHNraXBwZWQiLCB7ImJvbGQiOiBUcnVlLCAieWVsbG93IjogVHJ1ZX0pXSwgeyJz
a2lwcGVkIjogWzFdfSksCisgICAgICAgICgKKyAgICAgICAgICAgICJncmVlbiIsCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgKCIxIHBhc3NlZCIsIHsiYm9sZCI6IFRydWUsICJncmVl
biI6IFRydWV9KSwKKyAgICAgICAgICAgICAgICAoIjEgc2tpcHBlZCIsIHsiYm9sZCI6IEZhbHNl
LCAieWVsbG93IjogVHJ1ZX0pLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHsic2tpcHBl
ZCI6IFsxXSwgInBhc3NlZCI6IFsxXX0sCisgICAgICAgICksCisgICAgICAgICgKKyAgICAgICAg
ICAgICJ5ZWxsb3ciLAorICAgICAgICAgICAgWygiMSBkZXNlbGVjdGVkIiwgeyJib2xkIjogVHJ1
ZSwgInllbGxvdyI6IFRydWV9KV0sCisgICAgICAgICAgICB7ImRlc2VsZWN0ZWQiOiBbMV19LAor
ICAgICAgICApLAorICAgICAgICAoCisgICAgICAgICAgICAiZ3JlZW4iLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICgiMSBwYXNzZWQiLCB7ImJvbGQiOiBUcnVlLCAiZ3JlZW4iOiBU
cnVlfSksCisgICAgICAgICAgICAgICAgKCIxIGRlc2VsZWN0ZWQiLCB7ImJvbGQiOiBGYWxzZSwg
InllbGxvdyI6IFRydWV9KSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICB7ImRlc2VsZWN0
ZWQiOiBbMV0sICJwYXNzZWQiOiBbMV19LAorICAgICAgICApLAorICAgICAgICAoInllbGxvdyIs
IFsoIjEgeGZhaWxlZCIsIHsiYm9sZCI6IFRydWUsICJ5ZWxsb3ciOiBUcnVlfSldLCB7InhmYWls
ZWQiOiBbMV19KSwKKyAgICAgICAgKAorICAgICAgICAgICAgImdyZWVuIiwKKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAoIjEgcGFzc2VkIiwgeyJib2xkIjogVHJ1ZSwgImdyZWVuIjog
VHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMSB4ZmFpbGVkIiwgeyJib2xkIjogRmFsc2UsICJ5
ZWxsb3ciOiBUcnVlfSksCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgeyJ4ZmFpbGVkIjog
WzFdLCAicGFzc2VkIjogWzFdfSwKKyAgICAgICAgKSwKKyAgICAgICAgKCJ5ZWxsb3ciLCBbKCIx
IHhwYXNzZWQiLCB7ImJvbGQiOiBUcnVlLCAieWVsbG93IjogVHJ1ZX0pXSwgeyJ4cGFzc2VkIjog
WzFdfSksCisgICAgICAgICgKKyAgICAgICAgICAgICJ5ZWxsb3ciLAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICgiMSBwYXNzZWQiLCB7ImJvbGQiOiBGYWxzZSwgImdyZWVuIjogVHJ1
ZX0pLAorICAgICAgICAgICAgICAgICgiMSB4cGFzc2VkIiwgeyJib2xkIjogVHJ1ZSwgInllbGxv
dyI6IFRydWV9KSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICB7InhwYXNzZWQiOiBbMV0s
ICJwYXNzZWQiOiBbMV19LAorICAgICAgICApLAogICAgICAgICAjIExpa2V3aXNlIGlmIG5vIHRl
c3RzIHdlcmUgZm91bmQgYXQgYWxsCi0gICAgICAgICgieWVsbG93IiwgIm5vIHRlc3RzIHJhbiIs
IHt9KSwKKyAgICAgICAgKCJ5ZWxsb3ciLCBbKCJubyB0ZXN0cyByYW4iLCB7InllbGxvdyI6IFRy
dWV9KV0sIHt9KSwKICAgICAgICAgIyBUZXN0IHRoZSBlbXB0eS1rZXkgc3BlY2lhbCBjYXNlCi0g
ICAgICAgICgieWVsbG93IiwgIm5vIHRlc3RzIHJhbiIsIHsiIjogKDEsKX0pLAotICAgICAgICAo
ImdyZWVuIiwgIjEgcGFzc2VkIiwgeyIiOiAoMSwpLCAicGFzc2VkIjogKDEsKX0pLAorICAgICAg
ICAoInllbGxvdyIsIFsoIm5vIHRlc3RzIHJhbiIsIHsieWVsbG93IjogVHJ1ZX0pXSwgeyIiOiBb
MV19KSwKKyAgICAgICAgKAorICAgICAgICAgICAgImdyZWVuIiwKKyAgICAgICAgICAgIFsoIjEg
cGFzc2VkIiwgeyJib2xkIjogVHJ1ZSwgImdyZWVuIjogVHJ1ZX0pXSwKKyAgICAgICAgICAgIHsi
IjogWzFdLCAicGFzc2VkIjogWzFdfSwKKyAgICAgICAgKSwKICAgICAgICAgIyBBIGNvdXBsZSBt
b3JlIGNvbXBsZXggY29tYmluYXRpb25zCiAgICAgICAgICgKICAgICAgICAgICAgICJyZWQiLAot
ICAgICAgICAgICAgIjEgZmFpbGVkLCAyIHBhc3NlZCwgMyB4ZmFpbGVkIiwKLSAgICAgICAgICAg
IHsicGFzc2VkIjogKDEsIDIpLCAiZmFpbGVkIjogKDEsKSwgInhmYWlsZWQiOiAoMSwgMiwgMyl9
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgiMSBmYWlsZWQiLCB7ImJvbGQiOiBU
cnVlLCAicmVkIjogVHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMiBwYXNzZWQiLCB7ImJvbGQi
OiBGYWxzZSwgImdyZWVuIjogVHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMyB4ZmFpbGVkIiwg
eyJib2xkIjogRmFsc2UsICJ5ZWxsb3ciOiBUcnVlfSksCisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgeyJwYXNzZWQiOiBbMSwgMl0sICJmYWlsZWQiOiBbMV0sICJ4ZmFpbGVkIjogWzEsIDIs
IDNdfSwKICAgICAgICAgKSwKICAgICAgICAgKAogICAgICAgICAgICAgImdyZWVuIiwKLSAgICAg
ICAgICAgICIxIHBhc3NlZCwgMiBza2lwcGVkLCAzIGRlc2VsZWN0ZWQsIDIgeGZhaWxlZCIsCisg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKCIxIHBhc3NlZCIsIHsiYm9sZCI6IFRydWUs
ICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAgICAgICAgICAoIjIgc2tpcHBlZCIsIHsiYm9sZCI6
IEZhbHNlLCAieWVsbG93IjogVHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMyBkZXNlbGVjdGVk
IiwgeyJib2xkIjogRmFsc2UsICJ5ZWxsb3ciOiBUcnVlfSksCisgICAgICAgICAgICAgICAgKCIy
IHhmYWlsZWQiLCB7ImJvbGQiOiBGYWxzZSwgInllbGxvdyI6IFRydWV9KSwKKyAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgInBhc3NlZCI6ICgxLCksCi0gICAg
ICAgICAgICAgICAgInNraXBwZWQiOiAoMSwgMiksCi0gICAgICAgICAgICAgICAgImRlc2VsZWN0
ZWQiOiAoMSwgMiwgMyksCi0gICAgICAgICAgICAgICAgInhmYWlsZWQiOiAoMSwgMiksCisgICAg
ICAgICAgICAgICAgInBhc3NlZCI6IFsxXSwKKyAgICAgICAgICAgICAgICAic2tpcHBlZCI6IFsx
LCAyXSwKKyAgICAgICAgICAgICAgICAiZGVzZWxlY3RlZCI6IFsxLCAyLCAzXSwKKyAgICAgICAg
ICAgICAgICAieGZhaWxlZCI6IFsxLCAyXSwKICAgICAgICAgICAgIH0sCiAgICAgICAgICksCiAg
ICAgXSwKICkKLWRlZiB0ZXN0X3N1bW1hcnlfc3RhdHMoZXhwX2xpbmUsIGV4cF9jb2xvciwgc3Rh
dHNfYXJnKToKK2RlZiB0ZXN0X3N1bW1hcnlfc3RhdHMoCisgICAgdHI6IFRlcm1pbmFsUmVwb3J0
ZXIsCisgICAgZXhwX2xpbmU6IExpc3RbVHVwbGVbc3RyLCBEaWN0W3N0ciwgYm9vbF1dXSwKKyAg
ICBleHBfY29sb3I6IHN0ciwKKyAgICBzdGF0c19hcmc6IERpY3Rbc3RyLCBMaXN0W29iamVjdF1d
LAorKSAtPiBOb25lOgorICAgIHRyLnN0YXRzID0gc3RhdHNfYXJnCisKKyAgICAjIEZha2UgIl9p
c19sYXN0X2l0ZW0iIHRvIGJlIFRydWUuCisgICAgY2xhc3MgZmFrZV9zZXNzaW9uOgorICAgICAg
ICB0ZXN0c2NvbGxlY3RlZCA9IDAKKworICAgIHRyLl9zZXNzaW9uID0gZmFrZV9zZXNzaW9uICAj
IHR5cGU6IGlnbm9yZVthc3NpZ25tZW50XQorICAgIGFzc2VydCB0ci5faXNfbGFzdF9pdGVtCisK
KyAgICAjIFJlc2V0IGNhY2hlLgorICAgIHRyLl9tYWluX2NvbG9yID0gTm9uZQorCiAgICAgcHJp
bnQoIkJhc2VkIG9uIHN0YXRzOiAlcyIgJSBzdGF0c19hcmcpCi0gICAgcHJpbnQoJ0V4cGVjdCBz
dW1tYXJ5OiAiJXMiOyB3aXRoIGNvbG9yICIlcyInICUgKGV4cF9saW5lLCBleHBfY29sb3IpKQot
ICAgIChsaW5lLCBjb2xvcikgPSBidWlsZF9zdW1tYXJ5X3N0YXRzX2xpbmUoc3RhdHNfYXJnKQot
ICAgIHByaW50KCdBY3R1YWxseSBnb3Q6ICAgIiVzIjsgd2l0aCBjb2xvciAiJXMiJyAlIChsaW5l
LCBjb2xvcikpCisgICAgcHJpbnQoJ0V4cGVjdCBzdW1tYXJ5OiAie30iOyB3aXRoIGNvbG9yICJ7
fSInLmZvcm1hdChleHBfbGluZSwgZXhwX2NvbG9yKSkKKyAgICAobGluZSwgY29sb3IpID0gdHIu
YnVpbGRfc3VtbWFyeV9zdGF0c19saW5lKCkKKyAgICBwcmludCgnQWN0dWFsbHkgZ290OiAgICJ7
fSI7IHdpdGggY29sb3IgInt9IicuZm9ybWF0KGxpbmUsIGNvbG9yKSkKICAgICBhc3NlcnQgbGlu
ZSA9PSBleHBfbGluZQogICAgIGFzc2VydCBjb2xvciA9PSBleHBfY29sb3IKIAogCi1kZWYgdGVz
dF9ub190cmFpbGluZ193aGl0ZXNwYWNlX2FmdGVyX2luaWZpbGVfd29yZCh0ZXN0ZGlyKToKLSAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiIikKLSAgICBhc3NlcnQgImluaWZpbGU6XG4i
IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKK2RlZiB0ZXN0X3NraXBfY291bnRpbmdfdG93YXJkc19z
dW1tYXJ5KHRyKToKKyAgICBjbGFzcyBEdW1teVJlcG9ydChCYXNlUmVwb3J0KToKKyAgICAgICAg
Y291bnRfdG93YXJkc19zdW1tYXJ5ID0gVHJ1ZQorCisgICAgcjEgPSBEdW1teVJlcG9ydCgpCisg
ICAgcjIgPSBEdW1teVJlcG9ydCgpCisgICAgdHIuc3RhdHMgPSB7ImZhaWxlZCI6IChyMSwgcjIp
fQorICAgIHRyLl9tYWluX2NvbG9yID0gTm9uZQorICAgIHJlcyA9IHRyLmJ1aWxkX3N1bW1hcnlf
c3RhdHNfbGluZSgpCisgICAgYXNzZXJ0IHJlcyA9PSAoWygiMiBmYWlsZWQiLCB7ImJvbGQiOiBU
cnVlLCAicmVkIjogVHJ1ZX0pXSwgInJlZCIpCiAKLSAgICB0ZXN0ZGlyLm1ha2VpbmkoIltweXRl
c3RdIikKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiIikKLSAgICBhc3NlcnQgImlu
aWZpbGU6IHRveC5pbmlcbiIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHIxLmNvdW50X3Rv
d2FyZHNfc3VtbWFyeSA9IEZhbHNlCisgICAgdHIuc3RhdHMgPSB7ImZhaWxlZCI6IChyMSwgcjIp
fQorICAgIHRyLl9tYWluX2NvbG9yID0gTm9uZQorICAgIHJlcyA9IHRyLmJ1aWxkX3N1bW1hcnlf
c3RhdHNfbGluZSgpCisgICAgYXNzZXJ0IHJlcyA9PSAoWygiMSBmYWlsZWQiLCB7ImJvbGQiOiBU
cnVlLCAicmVkIjogVHJ1ZX0pXSwgInJlZCIpCiAKIAotY2xhc3MgVGVzdFByb2dyZXNzKG9iamVj
dCk6CitjbGFzcyBUZXN0Q2xhc3NpY091dHB1dFN0eWxlOgorICAgICIiIkVuc3VyZSBjbGFzc2lj
IG91dHB1dCBzdHlsZSB3b3JrcyBhcyBleHBlY3RlZCAoIzM4ODMpIiIiCiAKKyAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICBkZWYgdGVzdF9maWxlcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgKip7CisgICAgICAgICAgICAgICAgInRlc3Rf
b25lLnB5IjogImRlZiB0ZXN0X29uZSgpOiBwYXNzIiwKKyAgICAgICAgICAgICAgICAidGVzdF90
d28ucHkiOiAiZGVmIHRlc3RfdHdvKCk6IGFzc2VydCAwIiwKKyAgICAgICAgICAgICAgICAic3Vi
L3Rlc3RfdGhyZWUucHkiOiAiIiIKKyAgICAgICAgICAgICAgICAgICAgZGVmIHRlc3RfdGhyZWVf
MSgpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3RocmVlXzIoKTogYXNzZXJ0
IDAKKyAgICAgICAgICAgICAgICAgICAgZGVmIHRlc3RfdGhyZWVfMygpOiBwYXNzCisgICAgICAg
ICAgICAgICAgIiIiLAorICAgICAgICAgICAgfQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9u
b3JtYWxfdmVyYm9zaXR5KHNlbGYsIHRlc3RkaXIsIHRlc3RfZmlsZXMpOgorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLW8iLCAiY29uc29sZV9vdXRwdXRfc3R5bGU9Y2xhc3Np
YyIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAidGVzdF9vbmUucHkgLiIsCisgICAgICAgICAgICAgICAgInRlc3Rf
dHdvLnB5IEYiLAorICAgICAgICAgICAgICAgICJzdWJ7fXRlc3RfdGhyZWUucHkgLkYuIi5mb3Jt
YXQob3Muc2VwKSwKKyAgICAgICAgICAgICAgICAiKjIgZmFpbGVkLCAzIHBhc3NlZCBpbioiLAor
ICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF92ZXJib3NlKHNlbGYsIHRl
c3RkaXIsIHRlc3RfZmlsZXMpOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LW8iLCAiY29uc29sZV9vdXRwdXRfc3R5bGU9Y2xhc3NpYyIsICItdiIpCisgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAi
dGVzdF9vbmUucHk6OnRlc3Rfb25lIFBBU1NFRCIsCisgICAgICAgICAgICAgICAgInRlc3RfdHdv
LnB5Ojp0ZXN0X3R3byBGQUlMRUQiLAorICAgICAgICAgICAgICAgICJzdWJ7fXRlc3RfdGhyZWUu
cHk6OnRlc3RfdGhyZWVfMSBQQVNTRUQiLmZvcm1hdChvcy5zZXApLAorICAgICAgICAgICAgICAg
ICJzdWJ7fXRlc3RfdGhyZWUucHk6OnRlc3RfdGhyZWVfMiBGQUlMRUQiLmZvcm1hdChvcy5zZXAp
LAorICAgICAgICAgICAgICAgICJzdWJ7fXRlc3RfdGhyZWUucHk6OnRlc3RfdGhyZWVfMyBQQVNT
RUQiLmZvcm1hdChvcy5zZXApLAorICAgICAgICAgICAgICAgICIqMiBmYWlsZWQsIDMgcGFzc2Vk
IGluKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3F1aWV0KHNl
bGYsIHRlc3RkaXIsIHRlc3RfZmlsZXMpOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLW8iLCAiY29uc29sZV9vdXRwdXRfc3R5bGU9Y2xhc3NpYyIsICItcSIpCisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIi5GLkYuIiwgIioyIGZhaWxlZCwgMyBwYXNz
ZWQgaW4qIl0pCisKKworY2xhc3MgVGVzdFByb2dyZXNzT3V0cHV0U3R5bGU6CiAgICAgQHB5dGVz
dC5maXh0dXJlCiAgICAgZGVmIG1hbnlfdGVzdHNfZmlsZXMoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTExMzgsNyArMTgzMyw3IEBAIGNsYXNzIFRlc3RQ
cm9ncmVzcyhvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICBvdXRwdXQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2VydCAiWmVyb0RpdmlzaW9uRXJyb3Ii
IG5vdCBpbiBvdXRwdXQuc3Rkb3V0LnN0cigpCisgICAgICAgIG91dHB1dC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqWmVyb0RpdmlzaW9uRXJyb3IqIikKICAgICAgICAgb3V0cHV0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKFsiPSogMiBwYXNzZWQgaW4gKj0iXSkKIAogICAgIGRlZiB0ZXN0X25vcm1h
bChzZWxmLCBtYW55X3Rlc3RzX2ZpbGVzLCB0ZXN0ZGlyKToKQEAgLTExNTEsNiArMTg0Niw3MiBA
QCBjbGFzcyBUZXN0UHJvZ3Jlc3Mob2JqZWN0KToKICAgICAgICAgICAgIF0KICAgICAgICAgKQog
CisgICAgZGVmIHRlc3RfY29sb3JlZF9wcm9ncmVzcyhzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRj
aCwgY29sb3JfbWFwcGluZyk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlfQ09MT1JT
IiwgIjEiKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X2F4
ZmFpbD0iIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAg
QHB5dGVzdC5tYXJrLnhmYWlsCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfYXhmYWlsKCk6IGFz
c2VydCAwCisgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICB0ZXN0X2Jhcj0iIiIKKyAgICAg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCdpJywgcmFuZ2UoMTApKQorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Jhcihp
KTogcGFzcworICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgdGVzdF9mb289IiIiCisgICAg
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5n
cworICAgICAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgnaScsIHJhbmdlKDUp
KQorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbyhpKToKKyAgICAgICAgICAgICAgICAgICAg
d2FybmluZ3Mud2FybihEZXByZWNhdGlvbldhcm5pbmcoImNvbGxlY3Rpb24iKSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgdGVzdF9mb29i
YXI9IiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIEBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgnaScsIHJhbmdlKDUpKQorICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0X2Zvb2JhcihpKTogcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICAiIiIsCisg
ICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LnJlX21hdGNoX2xpbmVzKAorICAgICAgICAgICAgY29sb3JfbWFwcGluZy5m
b3JtYXRfZm9yX3JlbWF0Y2goCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICByInRlc3RfYXhmYWlsLnB5IHt5ZWxsb3d9eHtyZXNldH17Z3JlZW59IFxzKyBcWyAgNCVcXXty
ZXNldH0iLAorICAgICAgICAgICAgICAgICAgICByInRlc3RfYmFyLnB5ICh7Z3JlZW59XC57cmVz
ZXR9KXt7MTB9fXtncmVlbn0gXHMrIFxbIDUyJVxde3Jlc2V0fSIsCisgICAgICAgICAgICAgICAg
ICAgIHIidGVzdF9mb28ucHkgKHtncmVlbn1cLntyZXNldH0pe3s1fX17eWVsbG93fSBccysgXFsg
NzYlXF17cmVzZXR9IiwKKyAgICAgICAgICAgICAgICAgICAgciJ0ZXN0X2Zvb2Jhci5weSAoe3Jl
ZH1Ge3Jlc2V0fSl7ezV9fXtyZWR9IFxzKyBcWzEwMCVcXXtyZXNldH0iLAorICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgT25seSB4ZmFpbCBz
aG91bGQgaGF2ZSB5ZWxsb3cgcHJvZ3Jlc3MgaW5kaWNhdG9yLgorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgidGVzdF9heGZhaWwucHkiKQorICAgICAgICByZXN1bHQuc3Rkb3V0
LnJlX21hdGNoX2xpbmVzKAorICAgICAgICAgICAgY29sb3JfbWFwcGluZy5mb3JtYXRfZm9yX3Jl
bWF0Y2goCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICByInRlc3RfYXhm
YWlsLnB5IHt5ZWxsb3d9eHtyZXNldH17eWVsbG93fSBccysgXFsxMDAlXF17cmVzZXR9IiwKKyAg
ICAgICAgICAgICAgICAgICAgciJee3llbGxvd309KyAoe3llbGxvd317Ym9sZH18e2JvbGR9e3ll
bGxvd30pMSB4ZmFpbGVke3Jlc2V0fXt5ZWxsb3d9IGluICIsCisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb3VudChzZWxmLCBtYW55
X3Rlc3RzX2ZpbGVzLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgY29uc29sZV9vdXRw
dXRfc3R5bGUgPSBjb3VudAorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBvdXRwdXQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIG91dHB1dC5zdGRvdXQucmVfbWF0Y2hfbGlu
ZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgciJ0ZXN0X2Jhci5weSBcLnsxMH0g
XHMrIFxbMTAvMjBcXSIsCisgICAgICAgICAgICAgICAgciJ0ZXN0X2Zvby5weSBcLns1fSBccysg
XFsxNS8yMFxdIiwKKyAgICAgICAgICAgICAgICByInRlc3RfZm9vYmFyLnB5IFwuezV9IFxzKyBc
WzIwLzIwXF0iLAorICAgICAgICAgICAgXQorICAgICAgICApCisKICAgICBkZWYgdGVzdF92ZXJi
b3NlKHNlbGYsIG1hbnlfdGVzdHNfZmlsZXMsIHRlc3RkaXIpOgogICAgICAgICBvdXRwdXQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiKQogICAgICAgICBvdXRwdXQuc3Rkb3V0LnJlX21hdGNoX2xp
bmVzKApAQCAtMTE2MSwxMyArMTkyMiw0MyBAQCBjbGFzcyBUZXN0UHJvZ3Jlc3Mob2JqZWN0KToK
ICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfeGRpc3Rfbm9ybWFsKHNl
bGYsIG1hbnlfdGVzdHNfZmlsZXMsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3ZlcmJvc2VfY291
bnQoc2VsZiwgbWFueV90ZXN0c19maWxlcywgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFr
ZWluaSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAg
IGNvbnNvbGVfb3V0cHV0X3N0eWxlID0gY291bnQKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAg
ICAgICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKKyAgICAgICAgb3V0cHV0LnN0
ZG91dC5yZV9tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICByInRl
c3RfYmFyLnB5Ojp0ZXN0X2JhclxbMFxdIFBBU1NFRCBccysgXFsgMS8yMFxdIiwKKyAgICAgICAg
ICAgICAgICByInRlc3RfZm9vLnB5Ojp0ZXN0X2Zvb1xbNFxdIFBBU1NFRCBccysgXFsxNS8yMFxd
IiwKKyAgICAgICAgICAgICAgICByInRlc3RfZm9vYmFyLnB5Ojp0ZXN0X2Zvb2JhclxbNFxdIFBB
U1NFRCBccysgXFsyMC8yMFxdIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfeGRpc3Rfbm9ybWFsKHNlbGYsIG1hbnlfdGVzdHNfZmlsZXMsIHRlc3RkaXIsIG1vbmtl
eXBhdGNoKToKICAgICAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgieGRpc3QiKQorICAgICAgICBt
b25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIsIHJhaXNp
bmc9RmFsc2UpCiAgICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItbjIiKQogICAg
ICAgICBvdXRwdXQuc3Rkb3V0LnJlX21hdGNoX2xpbmVzKFtyIlwuezIwfSBccysgXFsxMDAlXF0i
XSkKIAotICAgIGRlZiB0ZXN0X3hkaXN0X3ZlcmJvc2Uoc2VsZiwgbWFueV90ZXN0c19maWxlcywg
dGVzdGRpcik6CisgICAgZGVmIHRlc3RfeGRpc3Rfbm9ybWFsX2NvdW50KHNlbGYsIG1hbnlfdGVz
dHNfZmlsZXMsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICAgICAgcHl0ZXN0LmltcG9ydG9y
c2tpcCgieGRpc3QiKQorICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxF
X1BMVUdJTl9BVVRPTE9BRCIsIHJhaXNpbmc9RmFsc2UpCisgICAgICAgIHRlc3RkaXIubWFrZWlu
aSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgIGNv
bnNvbGVfb3V0cHV0X3N0eWxlID0gY291bnQKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1uMiIpCisgICAgICAgIG91dHB1dC5zdGRv
dXQucmVfbWF0Y2hfbGluZXMoW3IiXC57MjB9IFxzKyBcWzIwLzIwXF0iXSkKKworICAgIGRlZiB0
ZXN0X3hkaXN0X3ZlcmJvc2Uoc2VsZiwgbWFueV90ZXN0c19maWxlcywgdGVzdGRpciwgbW9ua2V5
cGF0Y2gpOgorICAgICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJ4ZGlzdCIpCisgICAgICAgIG1v
bmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIiwgcmFpc2lu
Zz1GYWxzZSkKICAgICAgICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1uMiIsICItdiIp
CiAgICAgICAgIG91dHB1dC5zdGRvdXQucmVfbWF0Y2hfbGluZXNfcmFuZG9tKAogICAgICAgICAg
ICAgWwpAQCAtMTE3Niw2ICsxOTY3LDIyIEBAIGNsYXNzIFRlc3RQcm9ncmVzcyhvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHIiXFtnd1xkXF0gXFtccypcZCslXF0gUEFTU0VEIHRlc3RfZm9vYmFy
LnB5Ojp0ZXN0X2Zvb2JhclxbMVxdIiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQorICAgICAg
ICBvdXRwdXQuc3Rkb3V0LmZubWF0Y2hfbGluZXNfcmFuZG9tKAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIGxpbmUudHJhbnNsYXRlKFRSQU5TX0ZOTUFUQ0gpCisgICAgICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gWworICAgICAgICAgICAgICAgICAgICAidGVzdF9iYXIucHk6OnRlc3Rf
YmFyWzBdICIsCisgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2Zvby5weTo6dGVzdF9mb29bMF0g
IiwKKyAgICAgICAgICAgICAgICAgICAgInRlc3RfZm9vYmFyLnB5Ojp0ZXN0X2Zvb2JhclswXSAi
LAorICAgICAgICAgICAgICAgICAgICAiW2d3P10gWyAgNSVdIFBBU1NFRCB0ZXN0XypbP10gIiwK
KyAgICAgICAgICAgICAgICAgICAgIltndz9dIFsgMTAlXSBQQVNTRUQgdGVzdF8qWz9dICIsCisg
ICAgICAgICAgICAgICAgICAgICJbZ3c/XSBbIDU1JV0gUEFTU0VEIHRlc3RfKls/XSAiLAorICAg
ICAgICAgICAgICAgICAgICAiW2d3P10gWyA2MCVdIFBBU1NFRCB0ZXN0XypbP10gIiwKKyAgICAg
ICAgICAgICAgICAgICAgIltndz9dIFsgOTUlXSBQQVNTRUQgdGVzdF8qWz9dICIsCisgICAgICAg
ICAgICAgICAgICAgICJbZ3c/XSBbMTAwJV0gUEFTU0VEIHRlc3RfKls/XSAiLAorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfY2FwdHVy
ZV9ubyhzZWxmLCBtYW55X3Rlc3RzX2ZpbGVzLCB0ZXN0ZGlyKToKICAgICAgICAgb3V0cHV0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi1zIikKQEAgLTExODQsMTAgKzE5OTEsMTAgQEAgY2xhc3MgVGVz
dFByb2dyZXNzKG9iamVjdCk6CiAgICAgICAgICkKIAogICAgICAgICBvdXRwdXQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLS1jYXB0dXJlPW5vIikKLSAgICAgICAgYXNzZXJ0ICIlXSIgbm90IGluIG91
dHB1dC5zdGRvdXQuc3RyKCkKKyAgICAgICAgb3V0cHV0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUo
IiolXSoiKQogCiAKLWNsYXNzIFRlc3RQcm9ncmVzc1dpdGhUZWFyZG93bihvYmplY3QpOgorY2xh
c3MgVGVzdFByb2dyZXNzV2l0aFRlYXJkb3duOgogICAgICIiIkVuc3VyZSB3ZSBzaG93IHRoZSBj
b3JyZWN0IHBlcmNlbnRhZ2VzIGZvciB0ZXN0cyB0aGF0IGZhaWwgZHVyaW5nIHRlYXJkb3duICgj
MzA4OCkiIiIKIAogICAgIEBweXRlc3QuZml4dHVyZQpAQCAtMTIzNiwxMiArMjA0MywxNiBAQCBj
bGFzcyBUZXN0UHJvZ3Jlc3NXaXRoVGVhcmRvd24ob2JqZWN0KToKICAgICAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVzdF9mb28oZmFp
bF90ZWFyZG93bik6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICAg
ICAgYXNzZXJ0IDAKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgb3V0cHV0ID0gdGVz
dGRpci5ydW5weXRlc3QoKQorICAgICAgICBvdXRwdXQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJm
RSIpCiAgICAgICAgIG91dHB1dC5zdGRvdXQucmVfbWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBb
ciJ0ZXN0X3RlYXJkb3duX3dpdGhfdGVzdF9hbHNvX2ZhaWxpbmcucHkgRkVccytcWzEwMCVcXSJd
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgciJ0ZXN0X3RlYXJkb3duX3dpdGhfdGVz
dF9hbHNvX2ZhaWxpbmcucHkgRkVccytcWzEwMCVcXSIsCisgICAgICAgICAgICAgICAgIkZBSUxF
RCB0ZXN0X3RlYXJkb3duX3dpdGhfdGVzdF9hbHNvX2ZhaWxpbmcucHk6OnRlc3RfZm9vIC0gYXNz
ZXJ0IDAiLAorICAgICAgICAgICAgICAgICJFUlJPUiB0ZXN0X3RlYXJkb3duX3dpdGhfdGVzdF9h
bHNvX2ZhaWxpbmcucHk6OnRlc3RfZm9vIC0gYXNzZXJ0IEZhbHNlIiwKKyAgICAgICAgICAgIF0K
ICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfdGVhcmRvd25fbWFueShzZWxmLCB0ZXN0ZGlyLCBt
YW55X2ZpbGVzKToKQEAgLTEyNTAsMTggKzIwNjEsMjE1IEBAIGNsYXNzIFRlc3RQcm9ncmVzc1dp
dGhUZWFyZG93bihvYmplY3QpOgogICAgICAgICAgICAgW3IidGVzdF9iYXIucHkgKFwuRSl7NX1c
cytcWyAyNSVcXSIsIHIidGVzdF9mb28ucHkgKFwuRSl7MTV9XHMrXFsxMDAlXF0iXQogICAgICAg
ICApCiAKLSAgICBkZWYgdGVzdF90ZWFyZG93bl9tYW55X3ZlcmJvc2Uoc2VsZiwgdGVzdGRpciwg
bWFueV9maWxlcyk6Ci0gICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCi0g
ICAgICAgIG91dHB1dC5zdGRvdXQucmVfbWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgciJ0ZXN0X2Jhci5weTo6dGVzdF9iYXJcWzBcXSBQQVNTRURccytcWyAgNSVc
XSIsCi0gICAgICAgICAgICAgICAgciJ0ZXN0X2Jhci5weTo6dGVzdF9iYXJcWzBcXSBFUlJPUlxz
K1xbICA1JVxdIiwKLSAgICAgICAgICAgICAgICByInRlc3RfYmFyLnB5Ojp0ZXN0X2JhclxbNFxd
IFBBU1NFRFxzK1xbIDI1JVxdIiwKLSAgICAgICAgICAgICAgICByInRlc3RfYmFyLnB5Ojp0ZXN0
X2JhclxbNFxdIEVSUk9SXHMrXFsgMjUlXF0iLAotICAgICAgICAgICAgXQorICAgIGRlZiB0ZXN0
X3RlYXJkb3duX21hbnlfdmVyYm9zZSgKKyAgICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpciwg
bWFueV9maWxlcywgY29sb3JfbWFwcGluZworICAgICkgLT4gTm9uZToKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAorICAgICAgICAgICAgY29sb3JfbWFwcGluZy5mb3JtYXRfZm9yX2ZubWF0Y2goCisg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAidGVzdF9iYXIucHk6OnRlc3Rf
YmFyWzBdIFBBU1NFRCAgKiBbICA1JV0iLAorICAgICAgICAgICAgICAgICAgICAidGVzdF9iYXIu
cHk6OnRlc3RfYmFyWzBdIEVSUk9SICAgKiBbICA1JV0iLAorICAgICAgICAgICAgICAgICAgICAi
dGVzdF9iYXIucHk6OnRlc3RfYmFyWzRdIFBBU1NFRCAgKiBbIDI1JV0iLAorICAgICAgICAgICAg
ICAgICAgICAidGVzdF9mb28ucHk6OnRlc3RfZm9vWzE0XSBQQVNTRUQgKiBbMTAwJV0iLAorICAg
ICAgICAgICAgICAgICAgICAidGVzdF9mb28ucHk6OnRlc3RfZm9vWzE0XSBFUlJPUiAgKiBbMTAw
JV0iLAorICAgICAgICAgICAgICAgICAgICAiPSogMjAgcGFzc2VkLCAyMCBlcnJvcnMgaW4gKiIs
CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgKQogICAgICAgICApCiAKLSAgICBkZWYg
dGVzdF94ZGlzdF9ub3JtYWwoc2VsZiwgbWFueV9maWxlcywgdGVzdGRpcik6CisgICAgZGVmIHRl
c3RfeGRpc3Rfbm9ybWFsKHNlbGYsIG1hbnlfZmlsZXMsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToK
ICAgICAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgieGRpc3QiKQorICAgICAgICBtb25rZXlwYXRj
aC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIsIHJhaXNpbmc9RmFsc2Up
CiAgICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItbjIiKQogICAgICAgICBvdXRw
dXQuc3Rkb3V0LnJlX21hdGNoX2xpbmVzKFtyIltcLkVdezQwfSBccysgXFsxMDAlXF0iXSkKKwor
CitkZWYgdGVzdF9za2lwX3JlYXNvbnNfZm9sZGluZygpIC0+IE5vbmU6CisgICAgcGF0aCA9ICJ4
eXoiCisgICAgbGluZW5vID0gMworICAgIG1lc3NhZ2UgPSAianVzdHNvIgorICAgIGxvbmdyZXBy
ID0gKHBhdGgsIGxpbmVubywgbWVzc2FnZSkKKworICAgIGNsYXNzIFg6CisgICAgICAgIHBhc3MK
KworICAgIGV2MSA9IGNhc3QoQ29sbGVjdFJlcG9ydCwgWCgpKQorICAgIGV2MS53aGVuID0gImV4
ZWN1dGUiCisgICAgZXYxLnNraXBwZWQgPSBUcnVlCisgICAgZXYxLmxvbmdyZXByID0gbG9uZ3Jl
cHIKKworICAgIGV2MiA9IGNhc3QoQ29sbGVjdFJlcG9ydCwgWCgpKQorICAgIGV2Mi53aGVuID0g
ImV4ZWN1dGUiCisgICAgZXYyLmxvbmdyZXByID0gbG9uZ3JlcHIKKyAgICBldjIuc2tpcHBlZCA9
IFRydWUKKworICAgICMgZXYzIG1pZ2h0IGJlIGEgY29sbGVjdGlvbiByZXBvcnQKKyAgICBldjMg
PSBjYXN0KENvbGxlY3RSZXBvcnQsIFgoKSkKKyAgICBldjMud2hlbiA9ICJjb2xsZWN0IgorICAg
IGV2My5sb25ncmVwciA9IGxvbmdyZXByCisgICAgZXYzLnNraXBwZWQgPSBUcnVlCisKKyAgICB2
YWx1ZXMgPSBfZm9sZGVkX3NraXBzKFBhdGguY3dkKCksIFtldjEsIGV2MiwgZXYzXSkKKyAgICBh
c3NlcnQgbGVuKHZhbHVlcykgPT0gMQorICAgIG51bSwgZnNwYXRoLCBsaW5lbm9fLCByZWFzb24g
PSB2YWx1ZXNbMF0KKyAgICBhc3NlcnQgbnVtID09IDMKKyAgICBhc3NlcnQgZnNwYXRoID09IHBh
dGgKKyAgICBhc3NlcnQgbGluZW5vXyA9PSBsaW5lbm8KKyAgICBhc3NlcnQgcmVhc29uID09IG1l
c3NhZ2UKKworCitkZWYgdGVzdF9saW5lX3dpdGhfcmVwcmNyYXNoKG1vbmtleXBhdGNoKToKKyAg
ICBtb2NrZWRfdmVyYm9zZV93b3JkID0gIkZBSUxFRCIKKworICAgIG1vY2tlZF9wb3MgPSAic29t
ZTo6bm9kZWlkIgorCisgICAgZGVmIG1vY2tfZ2V0X3BvcygqYXJncyk6CisgICAgICAgIHJldHVy
biBtb2NrZWRfcG9zCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKF9weXRlc3QudGVybWluYWws
ICJfZ2V0X3BvcyIsIG1vY2tfZ2V0X3BvcykKKworICAgIGNsYXNzIGNvbmZpZzoKKyAgICAgICAg
cGFzcworCisgICAgY2xhc3MgcmVwOgorICAgICAgICBkZWYgX2dldF92ZXJib3NlX3dvcmQoc2Vs
ZiwgKmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIG1vY2tlZF92ZXJib3NlX3dvcmQKKworICAg
ICAgICBjbGFzcyBsb25ncmVwcjoKKyAgICAgICAgICAgIGNsYXNzIHJlcHJjcmFzaDoKKyAgICAg
ICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY2hlY2sobXNnLCB3aWR0aCwgZXhwZWN0ZWQpOgor
ICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICAgICAgaWYgbXNnOgorICAgICAg
ICAgICAgcmVwLmxvbmdyZXByLnJlcHJjcmFzaC5tZXNzYWdlID0gbXNnICAjIHR5cGU6IGlnbm9y
ZQorICAgICAgICBhY3R1YWwgPSBfZ2V0X2xpbmVfd2l0aF9yZXByY3Jhc2hfbWVzc2FnZShjb25m
aWcsIHJlcCgpLCB3aWR0aCkgICMgdHlwZTogaWdub3JlCisKKyAgICAgICAgYXNzZXJ0IGFjdHVh
bCA9PSBleHBlY3RlZAorICAgICAgICBpZiBhY3R1YWwgIT0gInt9IHt9Ii5mb3JtYXQobW9ja2Vk
X3ZlcmJvc2Vfd29yZCwgbW9ja2VkX3Bvcyk6CisgICAgICAgICAgICBhc3NlcnQgbGVuKGFjdHVh
bCkgPD0gd2lkdGgKKyAgICAgICAgICAgIGFzc2VydCB3Y3N3aWR0aChhY3R1YWwpIDw9IHdpZHRo
CisKKyAgICAjIEF0dHJpYnV0ZUVycm9yIHdpdGggbWVzc2FnZQorICAgIGNoZWNrKE5vbmUsIDgw
LCAiRkFJTEVEIHNvbWU6Om5vZGVpZCIpCisKKyAgICBjaGVjaygibXNnIiwgODAsICJGQUlMRUQg
c29tZTo6bm9kZWlkIC0gbXNnIikKKyAgICBjaGVjaygibXNnIiwgMywgIkZBSUxFRCBzb21lOjpu
b2RlaWQiKQorCisgICAgY2hlY2soIm1zZyIsIDI0LCAiRkFJTEVEIHNvbWU6Om5vZGVpZCIpCisg
ICAgY2hlY2soIm1zZyIsIDI1LCAiRkFJTEVEIHNvbWU6Om5vZGVpZCAtIG1zZyIpCisKKyAgICBj
aGVjaygic29tZSBsb25nZXIgbXNnIiwgMjQsICJGQUlMRUQgc29tZTo6bm9kZWlkIikKKyAgICBj
aGVjaygic29tZSBsb25nZXIgbXNnIiwgMjUsICJGQUlMRUQgc29tZTo6bm9kZWlkIC0gLi4uIikK
KyAgICBjaGVjaygic29tZSBsb25nZXIgbXNnIiwgMjYsICJGQUlMRUQgc29tZTo6bm9kZWlkIC0g
cy4uLiIpCisKKyAgICBjaGVjaygic29tZVxubWVzc2FnZSIsIDI1LCAiRkFJTEVEIHNvbWU6Om5v
ZGVpZCAtIC4uLiIpCisgICAgY2hlY2soInNvbWVcbm1lc3NhZ2UiLCAyNiwgIkZBSUxFRCBzb21l
Ojpub2RlaWQgLSBzb21lIikKKyAgICBjaGVjaygic29tZVxubWVzc2FnZSIsIDgwLCAiRkFJTEVE
IHNvbWU6Om5vZGVpZCAtIHNvbWUiKQorCisgICAgIyBUZXN0IHVuaWNvZGUgc2FmZXR5LgorICAg
IGNoZWNrKCLwn4mQ8J+JkPCfiZDwn4mQ8J+JkFxuMm5kIGxpbmUiLCAyNSwgIkZBSUxFRCBzb21l
Ojpub2RlaWQgLSAuLi4iKQorICAgIGNoZWNrKCLwn4mQ8J+JkPCfiZDwn4mQ8J+JkFxuMm5kIGxp
bmUiLCAyNiwgIkZBSUxFRCBzb21lOjpub2RlaWQgLSAuLi4iKQorICAgIGNoZWNrKCLwn4mQ8J+J
kPCfiZDwn4mQ8J+JkFxuMm5kIGxpbmUiLCAyNywgIkZBSUxFRCBzb21lOjpub2RlaWQgLSDwn4mQ
Li4uIikKKyAgICBjaGVjaygi8J+JkPCfiZDwn4mQ8J+JkPCfiZBcbjJuZCBsaW5lIiwgMjgsICJG
QUlMRUQgc29tZTo6bm9kZWlkIC0g8J+JkC4uLiIpCisgICAgY2hlY2soIvCfiZDwn4mQ8J+JkPCf
iZDwn4mQXG4ybmQgbGluZSIsIDI5LCAiRkFJTEVEIHNvbWU6Om5vZGVpZCAtIPCfiZDwn4mQLi4u
IikKKworICAgICMgTk9URTogY29uc3RydWN0ZWQsIG5vdCBzdXJlIGlmIHRoaXMgaXMgc3VwcG9y
dGVkLgorICAgIG1vY2tlZF9wb3MgPSAibm9kZWlkOjrwn4mQOjp3aXRodW5pY29kZSIKKyAgICBj
aGVjaygi8J+JkPCfiZDwn4mQ8J+JkPCfiZBcbjJuZCBsaW5lIiwgMjksICJGQUlMRUQgbm9kZWlk
Ojrwn4mQOjp3aXRodW5pY29kZSIpCisgICAgY2hlY2soIvCfiZDwn4mQ8J+JkPCfiZDwn4mQXG4y
bmQgbGluZSIsIDQwLCAiRkFJTEVEIG5vZGVpZDo68J+JkDo6d2l0aHVuaWNvZGUgLSDwn4mQ8J+J
kC4uLiIpCisgICAgY2hlY2soIvCfiZDwn4mQ8J+JkPCfiZDwn4mQXG4ybmQgbGluZSIsIDQxLCAi
RkFJTEVEIG5vZGVpZDo68J+JkDo6d2l0aHVuaWNvZGUgLSDwn4mQ8J+JkC4uLiIpCisgICAgY2hl
Y2soIvCfiZDwn4mQ8J+JkPCfiZDwn4mQXG4ybmQgbGluZSIsIDQyLCAiRkFJTEVEIG5vZGVpZDo6
8J+JkDo6d2l0aHVuaWNvZGUgLSDwn4mQ8J+JkPCfiZAuLi4iKQorICAgIGNoZWNrKCLwn4mQ8J+J
kPCfiZDwn4mQ8J+JkFxuMm5kIGxpbmUiLCA4MCwgIkZBSUxFRCBub2RlaWQ6OvCfiZA6OndpdGh1
bmljb2RlIC0g8J+JkPCfiZDwn4mQ8J+JkPCfiZAiKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgKKyAgICAic2Vjb25kcywgZXhwZWN0ZWQiLAorICAgIFsKKyAgICAgICAgKDEwLjAsICIx
MC4wMHMiKSwKKyAgICAgICAgKDEwLjM0LCAiMTAuMzRzIiksCisgICAgICAgICg1OS45OSwgIjU5
Ljk5cyIpLAorICAgICAgICAoNjAuNTUsICI2MC41NXMgKDA6MDE6MDApIiksCisgICAgICAgICgx
MjMuNTUsICIxMjMuNTVzICgwOjAyOjAzKSIpLAorICAgICAgICAoNjAgKiA2MCArIDAuNSwgIjM2
MDAuNTBzICgxOjAwOjAwKSIpLAorICAgIF0sCispCitkZWYgdGVzdF9mb3JtYXRfc2Vzc2lvbl9k
dXJhdGlvbihzZWNvbmRzLCBleHBlY3RlZCk6CisgICAgZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGlt
cG9ydCBmb3JtYXRfc2Vzc2lvbl9kdXJhdGlvbgorCisgICAgYXNzZXJ0IGZvcm1hdF9zZXNzaW9u
X2R1cmF0aW9uKHNlY29uZHMpID09IGV4cGVjdGVkCisKKworZGVmIHRlc3RfY29sbGVjdGVycm9y
KHRlc3RkaXIpOgorICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCJyYWlzZSBTeW50YXhFcnJv
cigpIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJhIiwgc3RyKHAxKSkKKyAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICJj
b2xsZWN0ZWQgMCBpdGVtcyAvIDEgZXJyb3IiLAorICAgICAgICAgICAgIio9IEVSUk9SUyA9KiIs
CisgICAgICAgICAgICAiKl8gRVJST1IgY29sbGVjdGluZyB0ZXN0X2NvbGxlY3RlcnJvci5weSBf
KiIsCisgICAgICAgICAgICAiRSAgIFN5bnRheEVycm9yOiAqIiwKKyAgICAgICAgICAgICIqPSBz
aG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9KiIsCisgICAgICAgICAgICAiRVJST1IgdGVzdF9jb2xs
ZWN0ZXJyb3IucHkiLAorICAgICAgICAgICAgIiohIEludGVycnVwdGVkOiAxIGVycm9yIGR1cmlu
ZyBjb2xsZWN0aW9uICEqIiwKKyAgICAgICAgICAgICIqPSAxIGVycm9yIGluICoiLAorICAgICAg
ICBdCisgICAgKQorCisKK2RlZiB0ZXN0X25vX3N1bW1hcnlfY29sbGVjdGVycm9yKHRlc3RkaXIp
OgorICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCJyYWlzZSBTeW50YXhFcnJvcigpIikKKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJhIiwgIi0tbm8tc3VtbWFyeSIsIHN0cihw
MSkpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIio9IEVSUk9SUyA9KiIpCisK
KworZGVmIHRlc3RfdmlhX2V4ZWModGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICBwMSA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgiZXhlYygnZGVmIHRlc3RfdmlhX2V4ZWMoKTogcGFzcycpIikK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocDEpLCAiLXZ2IikKKyAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsidGVzdF92aWFfZXhlYy5weTo6dGVz
dF92aWFfZXhlYyA8LSA8c3RyaW5nPiBQQVNTRUQqIiwgIio9IDEgcGFzc2VkIGluICoiXQorICAg
ICkKKworCitjbGFzcyBUZXN0Q29kZUhpZ2hsaWdodDoKKyAgICBkZWYgdGVzdF9jb2RlX2hpZ2hs
aWdodF9zaW1wbGUoc2VsZiwgdGVzdGRpcjogVGVzdGRpciwgY29sb3JfbWFwcGluZykgLT4gTm9u
ZToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgMSA9PSAxMAorICAg
ICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LS1jb2xvcj15ZXMiKQorICAgICAgICBjb2xvcl9tYXBwaW5nLnJlcXVpcmVzX29yZGVyZWRfbWFy
a3VwKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAg
ICAgICAgY29sb3JfbWFwcGluZy5mb3JtYXRfZm9yX2ZubWF0Y2goCisgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAiICAgIHtrd31kZWZ7aGwtcmVzZXR9IHtmdW5jdGlvbn10
ZXN0X2Zvb3tobC1yZXNldH0oKToiLAorICAgICAgICAgICAgICAgICAgICAiPiAgICAgICB7a3d9
YXNzZXJ0e2hsLXJlc2V0fSB7bnVtYmVyfTF7aGwtcmVzZXR9ID09IHtudW1iZXJ9MTB7aGwtcmVz
ZXR9IiwKKyAgICAgICAgICAgICAgICAgICAgIntib2xkfXtyZWR9RSAgICAgICBhc3NlcnQgMSA9
PSAxMHtyZXNldH0iLAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICkKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfY29kZV9oaWdobGlnaHRfY29udGludWF0aW9uKHNlbGYsIHRlc3Rk
aXI6IFRlc3RkaXIsIGNvbG9yX21hcHBpbmcpIC0+IE5vbmU6CisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfZm9vKCk6Cisg
ICAgICAgICAgICAgICAgcHJpbnQoJycnCisgICAgICAgICAgICAgICAgJycnKTsgYXNzZXJ0IDAK
KyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tY29sb3I9eWVzIikKKyAgICAgICAgY29sb3JfbWFwcGluZy5yZXF1aXJlc19vcmRlcmVk
X21hcmt1cChyZXN1bHQpCisKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAor
ICAgICAgICAgICAgY29sb3JfbWFwcGluZy5mb3JtYXRfZm9yX2ZubWF0Y2goCisgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAiICAgIHtrd31kZWZ7aGwtcmVzZXR9IHtmdW5j
dGlvbn10ZXN0X2Zvb3tobC1yZXNldH0oKToiLAorICAgICAgICAgICAgICAgICAgICAiICAgICAg
ICB7cHJpbnR9cHJpbnR7aGwtcmVzZXR9KHtzdHJ9Jycne2hsLXJlc2V0fXtzdHJ9e2hsLXJlc2V0
fSIsCisgICAgICAgICAgICAgICAgICAgICI+ICAge3N0cn0gICAge2hsLXJlc2V0fXtzdHJ9Jycn
e2hsLXJlc2V0fSk7IHtrd31hc3NlcnR7aGwtcmVzZXR9IHtudW1iZXJ9MHtobC1yZXNldH0iLAor
ICAgICAgICAgICAgICAgICAgICAie2JvbGR9e3JlZH1FICAgICAgIGFzc2VydCAwe3Jlc2V0fSIs
CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgKQorICAgICAgICApCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfdG1wZGlyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X3RtcGRpci5weQppbmRleCAzMzYyNDkwOTQ5NTcuLmNjMDMzODVmM2E5OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3RtcGRpci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3Rlc3RfdG1wZGlyLnB5CkBAIC0xLDU0ICsxLDU0IEBACi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitpbXBv
cnQgb3MKK2ltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCi1pbXBvcnQgcHkKLWltcG9ydCBweXRlc3QK
LQotZnJvbSBfcHl0ZXN0LnRtcGRpciBpbXBvcnQgdG1wZGlyCi0KK2Zyb20gdHlwaW5nIGltcG9y
dCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBM
aXN0CiAKLWRlZiB0ZXN0X2Z1bmNhcmcodGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlcHlmaWxl
KAotICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0
YWZ1bmMpOgotICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoaWQ9J2EnKQotICAgICAg
ICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoaWQ9J2InKQotICAgICAgICAgICAgZGVmIHRlc3Rf
ZnVuYyh0bXBkaXIpOiBwYXNzCi0gICAgIiIiCi0gICAgKQotICAgIGZyb20gX3B5dGVzdC50bXBk
aXIgaW1wb3J0IFRlbXBkaXJGYWN0b3J5CitpbXBvcnQgYXR0cgogCi0gICAgcmVwcmVjID0gdGVz
dGRpci5pbmxpbmVfcnVuKCkKLSAgICBjYWxscyA9IHJlcHJlYy5nZXRjYWxscygicHl0ZXN0X3J1
bnRlc3Rfc2V0dXAiKQotICAgIGl0ZW0gPSBjYWxsc1swXS5pdGVtCi0gICAgY29uZmlnID0gaXRl
bS5jb25maWcKLSAgICB0bXBkaXJoYW5kbGVyID0gVGVtcGRpckZhY3RvcnkoY29uZmlnKQotICAg
IGl0ZW0uX2luaXRyZXF1ZXN0KCkKLSAgICBwID0gdG1wZGlyKGl0ZW0uX3JlcXVlc3QsIHRtcGRp
cmhhbmRsZXIpCi0gICAgYXNzZXJ0IHAuY2hlY2soKQotICAgIGJuID0gcC5iYXNlbmFtZS5zdHJp
cCgiMDEyMzQ1Njc4OSIpCi0gICAgYXNzZXJ0IGJuLmVuZHN3aXRoKCJ0ZXN0X2Z1bmNfYV8iKQot
ICAgIGl0ZW0ubmFtZSA9ICJxd2UvXFxhYmMiCi0gICAgcCA9IHRtcGRpcihpdGVtLl9yZXF1ZXN0
LCB0bXBkaXJoYW5kbGVyKQotICAgIGFzc2VydCBwLmNoZWNrKCkKLSAgICBibiA9IHAuYmFzZW5h
bWUuc3RyaXAoIjAxMjM0NTY3ODkiKQotICAgIGFzc2VydCBibiA9PSAicXdlX19hYmMiCi0KLQot
ZGVmIHRlc3RfZW5zdXJldGVtcChyZWN3YXJuKToKLSAgICBkMSA9IHB5dGVzdC5lbnN1cmV0ZW1w
KCJoZWxsbyIpCi0gICAgZDIgPSBweXRlc3QuZW5zdXJldGVtcCgiaGVsbG8iKQotICAgIGFzc2Vy
dCBkMSA9PSBkMgotICAgIGFzc2VydCBkMS5jaGVjayhkaXI9MSkKLQotCi1jbGFzcyBUZXN0VGVt
cGRpckhhbmRsZXIob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X21rdGVtcChzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgZnJvbSBfcHl0ZXN0LnRtcGRpciBpbXBvcnQgVGVtcGRpckZhY3RvcnkKLQot
ICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKLSAgICAgICAgY29uZmlnLm9w
dGlvbi5iYXNldGVtcCA9IHRlc3RkaXIubWtkaXIoImhlbGxvIikKLSAgICAgICAgdCA9IFRlbXBk
aXJGYWN0b3J5KGNvbmZpZykKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdCBpbXBvcnQgcGF0
aGxpYgorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QucGF0
aGxpYiBpbXBvcnQgY2xlYW51cF9udW1iZXJlZF9kaXIKK2Zyb20gX3B5dGVzdC5wYXRobGliIGlt
cG9ydCBjcmVhdGVfY2xlYW51cF9sb2NrCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgbWFr
ZV9udW1iZXJlZF9kaXIKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBtYXliZV9kZWxldGVf
YV9udW1iZXJlZF9kaXIKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBvbl9ybV9yZl9lcnJv
cgorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5wYXRobGli
IGltcG9ydCByZWdpc3Rlcl9jbGVhbnVwX2xvY2tfcmVtb3ZhbAorZnJvbSBfcHl0ZXN0LnBhdGhs
aWIgaW1wb3J0IHJtX3JmCitmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCBnZXRfdXNlcgorZnJv
bSBfcHl0ZXN0LnRtcGRpciBpbXBvcnQgVGVtcGRpckZhY3RvcnkKK2Zyb20gX3B5dGVzdC50bXBk
aXIgaW1wb3J0IFRlbXBQYXRoRmFjdG9yeQorCisKK2RlZiB0ZXN0X3RtcGRpcl9maXh0dXJlKHRl
c3RkaXIpOgorICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgidG1wZGlyL3RtcGRpcl9maXh0
dXJlLnB5IikKKyAgICByZXN1bHRzID0gdGVzdGRpci5ydW5weXRlc3QocCkKKyAgICByZXN1bHRz
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQorCisKK0BhdHRyLnMKK2NsYXNz
IEZha2VDb25maWc6CisgICAgYmFzZXRlbXAgPSBhdHRyLmliKCkKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiB0cmFjZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBnZXQo
c2VsZiwga2V5KToKKyAgICAgICAgcmV0dXJuIGxhbWJkYSAqazogTm9uZQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIG9wdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworCitjbGFz
cyBUZXN0VGVtcGRpckhhbmRsZXI6CisgICAgZGVmIHRlc3RfbWt0ZW1wKHNlbGYsIHRtcF9wYXRo
KToKKyAgICAgICAgY29uZmlnID0gY2FzdChDb25maWcsIEZha2VDb25maWcodG1wX3BhdGgpKQor
ICAgICAgICB0ID0gVGVtcGRpckZhY3RvcnkoVGVtcFBhdGhGYWN0b3J5LmZyb21fY29uZmlnKGNv
bmZpZykpCiAgICAgICAgIHRtcCA9IHQubWt0ZW1wKCJ3b3JsZCIpCiAgICAgICAgIGFzc2VydCB0
bXAucmVsdG8odC5nZXRiYXNldGVtcCgpKSA9PSAid29ybGQwIgogICAgICAgICB0bXAgPSB0Lm1r
dGVtcCgidGhpcyIpCkBAIC01Nyw5ICs1NywxNSBAQCBjbGFzcyBUZXN0VGVtcGRpckhhbmRsZXIo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHRtcDIucmVsdG8odC5nZXRiYXNldGVtcCgpKS5zdGFy
dHN3aXRoKCJ0aGlzIikKICAgICAgICAgYXNzZXJ0IHRtcDIgIT0gdG1wCiAKKyAgICBkZWYgdGVz
dF90bXBwYXRoX3JlbGF0aXZlX2Jhc2V0ZW1wX2Fic29sdXRlKHNlbGYsIHRtcF9wYXRoLCBtb25r
ZXlwYXRjaCk6CisgICAgICAgICIiIiM0NDI1IiIiCisgICAgICAgIG1vbmtleXBhdGNoLmNoZGly
KHRtcF9wYXRoKQorICAgICAgICBjb25maWcgPSBjYXN0KENvbmZpZywgRmFrZUNvbmZpZygiaGVs
bG8iKSkKKyAgICAgICAgdCA9IFRlbXBQYXRoRmFjdG9yeS5mcm9tX2NvbmZpZyhjb25maWcpCisg
ICAgICAgIGFzc2VydCB0LmdldGJhc2V0ZW1wKCkucmVzb2x2ZSgpID09ICh0bXBfcGF0aCAvICJo
ZWxsbyIpLnJlc29sdmUoKQogCi1jbGFzcyBUZXN0Q29uZmlnVG1wZGlyKG9iamVjdCk6CiAKK2Ns
YXNzIFRlc3RDb25maWdUbXBkaXI6CiAgICAgZGVmIHRlc3RfZ2V0YmFzZXRlbXBfY3VzdG9tX3Jl
bW92ZXNfb2xkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBteXRlbXAgPSB0ZXN0ZGlyLnRtcGRp
ci5qb2luKCJ4eXoiKQogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtNzcsMjQg
KzgzLDM5IEBAIGNsYXNzIFRlc3RDb25maWdUbXBkaXIob2JqZWN0KToKICAgICAgICAgYXNzZXJ0
IG5vdCBteXRlbXAuam9pbigiaGVsbG8iKS5jaGVjaygpCiAKIAotZGVmIHRlc3RfYmFzZXRlbXAo
dGVzdGRpcik6Cit0ZXN0ZGF0YSA9IFsKKyAgICAoIm15cGF0aCIsIFRydWUpLAorICAgICgiL215
cGF0aDEiLCBGYWxzZSksCisgICAgKCIuL215cGF0aDEiLCBUcnVlKSwKKyAgICAoIi4uL215cGF0
aDMiLCBGYWxzZSksCisgICAgKCIuLi8uLi9teXBhdGg0IiwgRmFsc2UpLAorICAgICgibXlwYXRo
NS8uLiIsIEZhbHNlKSwKKyAgICAoIm15cGF0aDYvLi4vbXlwYXRoNiIsIFRydWUpLAorICAgICgi
bXlwYXRoNy8uLi9teXBhdGg3Ly4uIiwgRmFsc2UpLAorXQorCisKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgiYmFzZW5hbWUsIGlzX29rIiwgdGVzdGRhdGEpCitkZWYgdGVzdF9ta3RlbXAodGVz
dGRpciwgYmFzZW5hbWUsIGlzX29rKToKICAgICBteXRlbXAgPSB0ZXN0ZGlyLnRtcGRpci5ta2Rp
cigibXl0ZW1wIikKICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKLSAg
ICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAgICAgICBw
eXRlc3QuZW5zdXJldGVtcCgiaGVsbG8iKQotICAgICIiIgorICAgICAgICBkZWYgdGVzdF9hYnNf
cGF0aCh0bXBkaXJfZmFjdG9yeSk6CisgICAgICAgICAgICB0bXBkaXJfZmFjdG9yeS5ta3RlbXAo
J3t9JywgbnVtYmVyZWQ9RmFsc2UpCisgICAgICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICBi
YXNlbmFtZQorICAgICAgICApCiAgICAgKQorCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QocCwgIi0tYmFzZXRlbXA9JXMiICUgbXl0ZW1wKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKLSAgICBhc3NlcnQgbXl0ZW1wLmpvaW4oImhlbGxvIikuY2hlY2soKQorICAgIGlmIGlzX29r
OgorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgICAgIGFzc2VydCBteXRlbXAu
am9pbihiYXNlbmFtZSkuY2hlY2soKQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDEKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqVmFsdWVFcnJv
cioiKQogCiAKLUBweXRlc3QubWFyay5za2lwaWYoCi0gICAgbm90IGhhc2F0dHIocHkucGF0aC5s
b2NhbCwgIm1rc3ltbGlua3RvIiksCi0gICAgcmVhc29uPSJzeW1saW5rIG5vdCBhdmFpbGFibGUg
b24gdGhpcyBwbGF0Zm9ybSIsCi0pCiBkZWYgdGVzdF90bXBkaXJfYWx3YXlzX2lzX3JlYWxwYXRo
KHRlc3RkaXIpOgogICAgICMgdGhlIHJlYXNvbiB3aHkgdG1wZGlyIHNob3VsZCBiZSBhIHJlYWxw
YXRoIGlzIHRoYXQKICAgICAjIHdoZW4geW91IGNkIHRvIGl0IGFuZCBkbyAib3MuZ2V0Y3dkKCki
IHlvdSB3aWxsIGFueXdheQpAQCAtMTA0LDcgKzEyNSw3IEBAIGRlZiB0ZXN0X3RtcGRpcl9hbHdh
eXNfaXNfcmVhbHBhdGgodGVzdGRpcik6CiAgICAgIyBvcy5lbnZpcm9uWyJQV0QiXQogICAgIHJl
YWx0ZW1wID0gdGVzdGRpci50bXBkaXIubWtkaXIoIm15cmVhbHRlbXAiKQogICAgIGxpbmt0ZW1w
ID0gdGVzdGRpci50bXBkaXIuam9pbigic3ltbGlua3RlbXAiKQotICAgIGxpbmt0ZW1wLm1rc3lt
bGlua3RvKHJlYWx0ZW1wKQorICAgIGF0dGVtcHRfc3ltbGlua190byhsaW5rdGVtcCwgc3RyKHJl
YWx0ZW1wKSkKICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAg
ICAgZGVmIHRlc3RfMSh0bXBkaXIpOgpAQCAtMTE2LDYgKzEzNywyMiBAQCBkZWYgdGVzdF90bXBk
aXJfYWx3YXlzX2lzX3JlYWxwYXRoKHRlc3RkaXIpOgogICAgIGFzc2VydCBub3QgcmVzdWx0LnJl
dAogCiAKK2RlZiB0ZXN0X3RtcF9wYXRoX2Fsd2F5c19pc19yZWFscGF0aCh0ZXN0ZGlyLCBtb25r
ZXlwYXRjaCk6CisgICAgIyBmb3IgcmVhc29uaW5nIHNlZTogdGVzdF90bXBkaXJfYWx3YXlzX2lz
X3JlYWxwYXRoIHRlc3QtY2FzZQorICAgIHJlYWx0ZW1wID0gdGVzdGRpci50bXBkaXIubWtkaXIo
Im15cmVhbHRlbXAiKQorICAgIGxpbmt0ZW1wID0gdGVzdGRpci50bXBkaXIuam9pbigic3ltbGlu
a3RlbXAiKQorICAgIGF0dGVtcHRfc3ltbGlua190byhsaW5rdGVtcCwgc3RyKHJlYWx0ZW1wKSkK
KyAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEVTVF9ERUJVR19URU1QUk9PVCIsIHN0cihsaW5r
dGVtcCkpCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVm
IHRlc3RfMSh0bXBfcGF0aCk6CisgICAgICAgICAgICBhc3NlcnQgdG1wX3BhdGgucmVzb2x2ZSgp
ID09IHRtcF9wYXRoCisgICAgIiIiCisgICAgKQorICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5l
X3J1bigpCisgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCisKKwogZGVmIHRlc3Rf
dG1wZGlyX3Rvb19sb25nX29uX3BhcmFtZXRyaXphdGlvbih0ZXN0ZGlyKToKICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICIiIgpAQCAtMTM3LDcgKzE3NCw3IEBAIGRlZiB0ZXN0X3Rt
cGRpcl9mYWN0b3J5KHRlc3RkaXIpOgogICAgICAgICBkZWYgc2Vzc2lvbl9kaXIodG1wZGlyX2Zh
Y3RvcnkpOgogICAgICAgICAgICAgcmV0dXJuIHRtcGRpcl9mYWN0b3J5Lm1rdGVtcCgnZGF0YScs
IG51bWJlcmVkPUZhbHNlKQogICAgICAgICBkZWYgdGVzdF9zb21lKHNlc3Npb25fZGlyKToKLSAg
ICAgICAgICAgIHNlc3Npb25fZGlyLmlzZGlyKCkKKyAgICAgICAgICAgIGFzc2VydCBzZXNzaW9u
X2Rpci5pc2RpcigpCiAgICAgIiIiCiAgICAgKQogICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5l
X3J1bigpCkBAIC0xNTIsNyArMTg5LDYgQEAgZGVmIHRlc3RfdG1wZGlyX2ZhbGxiYWNrX3RveF9l
bnYodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgogICAgIG1vbmtleXBhdGNoLmRlbGVudigiVVNFUk5B
TUUiLCByYWlzaW5nPUZhbHNlKQogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIi
Ci0gICAgICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgZGVmIHRlc3Rfc29tZSh0bXBkaXIpOgog
ICAgICAgICAgICAgYXNzZXJ0IHRtcGRpci5pc2RpcigpCiAgICAgIiIiCkBAIC0xNzgsNyArMjE0
LDYgQEAgZGVmIHRlc3RfdG1wZGlyX2ZhbGxiYWNrX3VpZF9ub3RfZm91bmQodGVzdGRpcik6CiAK
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0
ZXN0CiAgICAgICAgIGRlZiB0ZXN0X3NvbWUodG1wZGlyKToKICAgICAgICAgICAgIGFzc2VydCB0
bXBkaXIuaXNkaXIoKQogICAgICIiIgpAQCAtMTk0LDggKzIyOSw2IEBAIGRlZiB0ZXN0X2dldF91
c2VyX3VpZF9ub3RfZm91bmQoKToKICAgICB1c2VyIGlkIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8g
YSB2YWxpZCB1c2VyIChlLmcuIHJ1bm5pbmcgcHl0ZXN0IGluIGEKICAgICBEb2NrZXIgY29udGFp
bmVyIHdpdGggJ2RvY2tlciBydW4gLXUnLgogICAgICIiIgotICAgIGZyb20gX3B5dGVzdC50bXBk
aXIgaW1wb3J0IGdldF91c2VyCi0KICAgICBhc3NlcnQgZ2V0X3VzZXIoKSBpcyBOb25lCiAKIApA
QCAtMjA1LDggKzIzOCwyMDcgQEAgZGVmIHRlc3RfZ2V0X3VzZXIobW9ua2V5cGF0Y2gpOgogICAg
IHJlcXVpcmVkIGJ5IGdldHBhc3MgbW9kdWxlIGFyZSBtaXNzaW5nIGZyb20gdGhlIGVudmlyb25t
ZW50IG9uIFdpbmRvd3MKICAgICAoIzEwMTApLgogICAgICIiIgotICAgIGZyb20gX3B5dGVzdC50
bXBkaXIgaW1wb3J0IGdldF91c2VyCi0KICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlVTRVIiLCBy
YWlzaW5nPUZhbHNlKQogICAgIG1vbmtleXBhdGNoLmRlbGVudigiVVNFUk5BTUUiLCByYWlzaW5n
PUZhbHNlKQogICAgIGFzc2VydCBnZXRfdXNlcigpIGlzIE5vbmUKKworCitjbGFzcyBUZXN0TnVt
YmVyZWREaXI6CisgICAgUFJFRklYID0gImZ1bi0iCisKKyAgICBkZWYgdGVzdF9tYWtlKHNlbGYs
IHRtcF9wYXRoKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgZCA9
IG1ha2VfbnVtYmVyZWRfZGlyKHJvb3Q9dG1wX3BhdGgsIHByZWZpeD1zZWxmLlBSRUZJWCkKKyAg
ICAgICAgICAgIGFzc2VydCBkLm5hbWUuc3RhcnRzd2l0aChzZWxmLlBSRUZJWCkKKyAgICAgICAg
ICAgIGFzc2VydCBkLm5hbWUuZW5kc3dpdGgoc3RyKGkpKQorCisgICAgICAgIHN5bWxpbmsgPSB0
bXBfcGF0aC5qb2lucGF0aChzZWxmLlBSRUZJWCArICJjdXJyZW50IikKKyAgICAgICAgaWYgc3lt
bGluay5leGlzdHMoKToKKyAgICAgICAgICAgICMgdW5peAorICAgICAgICAgICAgYXNzZXJ0IHN5
bWxpbmsuaXNfc3ltbGluaygpCisgICAgICAgICAgICBhc3NlcnQgc3ltbGluay5yZXNvbHZlKCkg
PT0gZC5yZXNvbHZlKCkKKworICAgIGRlZiB0ZXN0X2NsZWFudXBfbG9ja19jcmVhdGUoc2VsZiwg
dG1wX3BhdGgpOgorICAgICAgICBkID0gdG1wX3BhdGguam9pbnBhdGgoInRlc3QiKQorICAgICAg
ICBkLm1rZGlyKCkKKyAgICAgICAgbG9ja2ZpbGUgPSBjcmVhdGVfY2xlYW51cF9sb2NrKGQpCisg
ICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhPU0Vycm9yLCBtYXRjaD0iY2Fubm90IGNyZWF0ZSBs
b2NrZmlsZSBpbiAuKiIpOgorICAgICAgICAgICAgY3JlYXRlX2NsZWFudXBfbG9jayhkKQorCisg
ICAgICAgIGxvY2tmaWxlLnVubGluaygpCisKKyAgICBkZWYgdGVzdF9sb2NrX3JlZ2lzdGVyX2Ns
ZWFudXBfcmVtb3ZhbChzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAgbG9j
ayA9IGNyZWF0ZV9jbGVhbnVwX2xvY2sodG1wX3BhdGgpCisKKyAgICAgICAgcmVnaXN0cnkgPSBb
XSAgIyB0eXBlOiBMaXN0W0NhbGxhYmxlWy4uLiwgTm9uZV1dCisgICAgICAgIHJlZ2lzdGVyX2Ns
ZWFudXBfbG9ja19yZW1vdmFsKGxvY2ssIHJlZ2lzdGVyPXJlZ2lzdHJ5LmFwcGVuZCkKKworICAg
ICAgICAoY2xlYW51cF9mdW5jLCkgPSByZWdpc3RyeQorCisgICAgICAgIGFzc2VydCBsb2NrLmlz
X2ZpbGUoKQorCisgICAgICAgIGNsZWFudXBfZnVuYyhvcmlnaW5hbF9waWQ9ImludGVudGlvbmFs
bHlfZGlmZmVyZW50IikKKworICAgICAgICBhc3NlcnQgbG9jay5pc19maWxlKCkKKworICAgICAg
ICBjbGVhbnVwX2Z1bmMoKQorCisgICAgICAgIGFzc2VydCBub3QgbG9jay5leGlzdHMoKQorCisg
ICAgICAgIGNsZWFudXBfZnVuYygpCisKKyAgICAgICAgYXNzZXJ0IG5vdCBsb2NrLmV4aXN0cygp
CisKKyAgICBkZWYgX2RvX2NsZWFudXAoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYudGVzdF9tYWtlKHRtcF9wYXRoKQorICAgICAgICBjbGVhbnVwX251bWJlcmVk
X2RpcigKKyAgICAgICAgICAgIHJvb3Q9dG1wX3BhdGgsCisgICAgICAgICAgICBwcmVmaXg9c2Vs
Zi5QUkVGSVgsCisgICAgICAgICAgICBrZWVwPTIsCisgICAgICAgICAgICBjb25zaWRlcl9sb2Nr
X2RlYWRfaWZfY3JlYXRlZF9iZWZvcmU9MCwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2xl
YW51cF9rZWVwKHNlbGYsIHRtcF9wYXRoKToKKyAgICAgICAgc2VsZi5fZG9fY2xlYW51cCh0bXBf
cGF0aCkKKyAgICAgICAgYSwgYiA9ICh4IGZvciB4IGluIHRtcF9wYXRoLml0ZXJkaXIoKSBpZiBu
b3QgeC5pc19zeW1saW5rKCkpCisgICAgICAgIHByaW50KGEsIGIpCisKKyAgICBkZWYgdGVzdF9j
bGVhbnVwX2xvY2tlZChzZWxmLCB0bXBfcGF0aCk6CisgICAgICAgIHAgPSBtYWtlX251bWJlcmVk
X2Rpcihyb290PXRtcF9wYXRoLCBwcmVmaXg9c2VsZi5QUkVGSVgpCisKKyAgICAgICAgY3JlYXRl
X2NsZWFudXBfbG9jayhwKQorCisgICAgICAgIGFzc2VydCBub3QgcGF0aGxpYi5lbnN1cmVfZGVs
ZXRhYmxlKAorICAgICAgICAgICAgcCwgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVm
b3JlPXAuc3RhdCgpLnN0X210aW1lIC0gMQorICAgICAgICApCisgICAgICAgIGFzc2VydCBwYXRo
bGliLmVuc3VyZV9kZWxldGFibGUoCisgICAgICAgICAgICBwLCBjb25zaWRlcl9sb2NrX2RlYWRf
aWZfY3JlYXRlZF9iZWZvcmU9cC5zdGF0KCkuc3RfbXRpbWUgKyAxCisgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X2NsZWFudXBfaWdub3Jlc19zeW1saW5rKHNlbGYsIHRtcF9wYXRoKToKKyAgICAg
ICAgdGhlX3N5bWxpbmsgPSB0bXBfcGF0aCAvIChzZWxmLlBSRUZJWCArICJjdXJyZW50IikKKyAg
ICAgICAgYXR0ZW1wdF9zeW1saW5rX3RvKHRoZV9zeW1saW5rLCB0bXBfcGF0aCAvIChzZWxmLlBS
RUZJWCArICI1IikpCisgICAgICAgIHNlbGYuX2RvX2NsZWFudXAodG1wX3BhdGgpCisKKyAgICBk
ZWYgdGVzdF9yZW1vdmFsX2FjY2VwdHNfbG9jayhzZWxmLCB0bXBfcGF0aCk6CisgICAgICAgIGZv
bGRlciA9IG1ha2VfbnVtYmVyZWRfZGlyKHJvb3Q9dG1wX3BhdGgsIHByZWZpeD1zZWxmLlBSRUZJ
WCkKKyAgICAgICAgY3JlYXRlX2NsZWFudXBfbG9jayhmb2xkZXIpCisgICAgICAgIG1heWJlX2Rl
bGV0ZV9hX251bWJlcmVkX2Rpcihmb2xkZXIpCisgICAgICAgIGFzc2VydCBmb2xkZXIuaXNfZGly
KCkKKworCitjbGFzcyBUZXN0Um1SZjoKKyAgICBkZWYgdGVzdF9ybV9yZihzZWxmLCB0bXBfcGF0
aCk6CisgICAgICAgIGFkaXIgPSB0bXBfcGF0aCAvICJhZGlyIgorICAgICAgICBhZGlyLm1rZGly
KCkKKyAgICAgICAgcm1fcmYoYWRpcikKKworICAgICAgICBhc3NlcnQgbm90IGFkaXIuZXhpc3Rz
KCkKKworICAgICAgICBhZGlyLm1rZGlyKCkKKyAgICAgICAgYWZpbGUgPSBhZGlyIC8gImFmaWxl
IgorICAgICAgICBhZmlsZS53cml0ZV9ieXRlcyhiImFhIikKKworICAgICAgICBybV9yZihhZGly
KQorICAgICAgICBhc3NlcnQgbm90IGFkaXIuZXhpc3RzKCkKKworICAgIGRlZiB0ZXN0X3JtX3Jm
X3dpdGhfcmVhZF9vbmx5X2ZpbGUoc2VsZiwgdG1wX3BhdGgpOgorICAgICAgICAiIiJFbnN1cmUg
cm1fcmYgY2FuIHJlbW92ZSBkaXJlY3RvcmllcyB3aXRoIHJlYWQtb25seSBmaWxlcyBpbiB0aGVt
ICgjNTUyNCkiIiIKKyAgICAgICAgZm4gPSB0bXBfcGF0aCAvICJkaXIvZm9vLnR4dCIKKyAgICAg
ICAgZm4ucGFyZW50Lm1rZGlyKCkKKworICAgICAgICBmbi50b3VjaCgpCisKKyAgICAgICAgc2Vs
Zi5jaG1vZF9yKGZuKQorCisgICAgICAgIHJtX3JmKGZuLnBhcmVudCkKKworICAgICAgICBhc3Nl
cnQgbm90IGZuLnBhcmVudC5pc19kaXIoKQorCisgICAgZGVmIGNobW9kX3Ioc2VsZiwgcGF0aCk6
CisgICAgICAgIG1vZGUgPSBvcy5zdGF0KHN0cihwYXRoKSkuc3RfbW9kZQorICAgICAgICBvcy5j
aG1vZChzdHIocGF0aCksIG1vZGUgJiB+c3RhdC5TX0lXUklURSkKKworICAgIGRlZiB0ZXN0X3Jt
X3JmX3dpdGhfcmVhZF9vbmx5X2RpcmVjdG9yeShzZWxmLCB0bXBfcGF0aCk6CisgICAgICAgICIi
IkVuc3VyZSBybV9yZiBjYW4gcmVtb3ZlIHJlYWQtb25seSBkaXJlY3RvcmllcyAoIzU1MjQpIiIi
CisgICAgICAgIGFkaXIgPSB0bXBfcGF0aCAvICJkaXIiCisgICAgICAgIGFkaXIubWtkaXIoKQor
CisgICAgICAgIChhZGlyIC8gImZvby50eHQiKS50b3VjaCgpCisgICAgICAgIHNlbGYuY2htb2Rf
cihhZGlyKQorCisgICAgICAgIHJtX3JmKGFkaXIpCisKKyAgICAgICAgYXNzZXJ0IG5vdCBhZGly
LmlzX2RpcigpCisKKyAgICBkZWYgdGVzdF9vbl9ybV9yZl9lcnJvcihzZWxmLCB0bXBfcGF0aDog
UGF0aCkgLT4gTm9uZToKKyAgICAgICAgYWRpciA9IHRtcF9wYXRoIC8gImRpciIKKyAgICAgICAg
YWRpci5ta2RpcigpCisKKyAgICAgICAgZm4gPSBhZGlyIC8gImZvby50eHQiCisgICAgICAgIGZu
LnRvdWNoKCkKKyAgICAgICAgc2VsZi5jaG1vZF9yKGZuKQorCisgICAgICAgICMgdW5rbm93biBl
eGNlcHRpb24KKyAgICAgICAgd2l0aCBweXRlc3Qud2FybnMocHl0ZXN0LlB5dGVzdFdhcm5pbmcp
OgorICAgICAgICAgICAgZXhjX2luZm8xID0gKE5vbmUsIFJ1bnRpbWVFcnJvcigpLCBOb25lKQor
ICAgICAgICAgICAgb25fcm1fcmZfZXJyb3Iob3MudW5saW5rLCBzdHIoZm4pLCBleGNfaW5mbzEs
IHN0YXJ0X3BhdGg9dG1wX3BhdGgpCisgICAgICAgICAgICBhc3NlcnQgZm4uaXNfZmlsZSgpCisK
KyAgICAgICAgIyB3ZSBpZ25vcmUgRmlsZU5vdEZvdW5kRXJyb3IKKyAgICAgICAgZXhjX2luZm8y
ID0gKE5vbmUsIEZpbGVOb3RGb3VuZEVycm9yKCksIE5vbmUpCisgICAgICAgIGFzc2VydCBub3Qg
b25fcm1fcmZfZXJyb3IoTm9uZSwgc3RyKGZuKSwgZXhjX2luZm8yLCBzdGFydF9wYXRoPXRtcF9w
YXRoKQorCisgICAgICAgICMgdW5rbm93biBmdW5jdGlvbgorICAgICAgICB3aXRoIHB5dGVzdC53
YXJucygKKyAgICAgICAgICAgIHB5dGVzdC5QeXRlc3RXYXJuaW5nLAorICAgICAgICAgICAgbWF0
Y2g9ciJeXChybV9yZlwpIHVua25vd24gZnVuY3Rpb24gTm9uZSB3aGVuIHJlbW92aW5nIC4qZm9v
LnR4dDpcbk5vbmU6ICIsCisgICAgICAgICk6CisgICAgICAgICAgICBleGNfaW5mbzMgPSAoTm9u
ZSwgUGVybWlzc2lvbkVycm9yKCksIE5vbmUpCisgICAgICAgICAgICBvbl9ybV9yZl9lcnJvcihO
b25lLCBzdHIoZm4pLCBleGNfaW5mbzMsIHN0YXJ0X3BhdGg9dG1wX3BhdGgpCisgICAgICAgICAg
ICBhc3NlcnQgZm4uaXNfZmlsZSgpCisKKyAgICAgICAgIyBpZ25vcmVkIGZ1bmN0aW9uCisgICAg
ICAgIHdpdGggcHl0ZXN0Lndhcm5zKE5vbmUpIGFzIHdhcm5pbmZvOgorICAgICAgICAgICAgZXhj
X2luZm80ID0gKE5vbmUsIFBlcm1pc3Npb25FcnJvcigpLCBOb25lKQorICAgICAgICAgICAgb25f
cm1fcmZfZXJyb3Iob3Mub3Blbiwgc3RyKGZuKSwgZXhjX2luZm80LCBzdGFydF9wYXRoPXRtcF9w
YXRoKQorICAgICAgICAgICAgYXNzZXJ0IGZuLmlzX2ZpbGUoKQorICAgICAgICBhc3NlcnQgbm90
IFt4Lm1lc3NhZ2UgZm9yIHggaW4gd2FybmluZm9dCisKKyAgICAgICAgZXhjX2luZm81ID0gKE5v
bmUsIFBlcm1pc3Npb25FcnJvcigpLCBOb25lKQorICAgICAgICBvbl9ybV9yZl9lcnJvcihvcy51
bmxpbmssIHN0cihmbiksIGV4Y19pbmZvNSwgc3RhcnRfcGF0aD10bXBfcGF0aCkKKyAgICAgICAg
YXNzZXJ0IG5vdCBmbi5pc19maWxlKCkKKworCitkZWYgYXR0ZW1wdF9zeW1saW5rX3RvKHBhdGgs
IHRvX3BhdGgpOgorICAgICIiIlRyeSB0byBtYWtlIGEgc3ltbGluayBmcm9tICJwYXRoIiB0byAi
dG9fcGF0aCIsIHNraXBwaW5nIGluIGNhc2UgdGhpcyBwbGF0Zm9ybQorICAgIGRvZXMgbm90IHN1
cHBvcnQgaXQgb3Igd2UgZG9uJ3QgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgKGNvbW1vbiBv
biBXaW5kb3dzKS4iIiIKKyAgICB0cnk6CisgICAgICAgIFBhdGgocGF0aCkuc3ltbGlua190byhQ
YXRoKHRvX3BhdGgpKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBweXRlc3Quc2tpcCgi
Y291bGQgbm90IGNyZWF0ZSBzeW1ib2xpYyBsaW5rIikKKworCitkZWYgdGVzdF90bXBkaXJfZXF1
YWxzX3RtcF9wYXRoKHRtcGRpciwgdG1wX3BhdGgpOgorICAgIGFzc2VydCBQYXRoKHRtcGRpcikg
PT0gdG1wX3BhdGgKKworCitkZWYgdGVzdF9iYXNldGVtcF93aXRoX3JlYWRfb25seV9maWxlcyh0
ZXN0ZGlyKToKKyAgICAiIiJJbnRlZ3JhdGlvbiB0ZXN0IGZvciAjNTUyNCIiIgorICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBvcworICAgICAgICBp
bXBvcnQgc3RhdAorCisgICAgICAgIGRlZiB0ZXN0KHRtcF9wYXRoKToKKyAgICAgICAgICAgIGZu
ID0gdG1wX3BhdGggLyAnZm9vLnR4dCcKKyAgICAgICAgICAgIGZuLndyaXRlX3RleHQoJ2hlbGxv
JykKKyAgICAgICAgICAgIG1vZGUgPSBvcy5zdGF0KHN0cihmbikpLnN0X21vZGUKKyAgICAgICAg
ICAgIG9zLmNobW9kKHN0cihmbiksIG1vZGUgJiB+c3RhdC5TX0lSRUFEKQorICAgICIiIgorICAg
ICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1iYXNldGVtcD10bXAiKQorICAg
IGFzc2VydCByZXN1bHQucmV0ID09IDAKKyAgICAjIHJ1bm5pbmcgYSBzZWNvbmQgdGltZSBhbmQg
ZW5zdXJlIHdlIGRvbid0IGNyYXNoCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
YmFzZXRlbXA9dG1wIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfdW5pdHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfdW5pdHRlc3QucHkKaW5kZXggNjVmZmRiOTc1MzhiLi5jN2I2YmZjZWM5MjkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF91bml0dGVzdC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfdW5pdHRlc3QucHkKQEAgLTEsNyArMSw5IEBACi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1m
cm9tIF9weXRlc3QubWFpbiBpbXBvcnQgRVhJVF9OT1RFU1RTQ09MTEVDVEVECi1pbXBvcnQgcHl0
ZXN0CiBpbXBvcnQgZ2MKK2ltcG9ydCBzeXMKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0CisKK2lt
cG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCiAKIAogZGVm
IHRlc3Rfc2ltcGxlX3VuaXR0ZXN0KHRlc3RkaXIpOgpAQCAtNTUsNyArNTcsNyBAQCBkZWYgdGVz
dF9pc2NsYXNzY2hlY2tfaXNzdWU1Myh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdHBhdGgpCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENv
ZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKIAogZGVmIHRlc3Rfc2V0dXAodGVzdGRpcik6CkBAIC0x
MzksNiArMTQxLDI5IEBAIGRlZiB0ZXN0X25ld19pbnN0YW5jZXModGVzdGRpcik6CiAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCiAKIAorZGVmIHRlc3RfZnVuY3Rpb25faXRlbV9v
YmpfaXNfaW5zdGFuY2UodGVzdGRpcik6CisgICAgIiIiaXRlbS5vYmogc2hvdWxkIGJlIGEgYm91
bmQgbWV0aG9kIG9uIHVuaXR0ZXN0LlRlc3RDYXNlIGZ1bmN0aW9uIGl0ZW1zICgjNTM5MCkuIiIi
CisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIiIgorICAgICAgICBkZWYgcHl0
ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxsKToKKyAgICAgICAgICAgIGlmIGNhbGwu
d2hlbiA9PSAnY2FsbCc6CisgICAgICAgICAgICAgICAgY2xhc3NfID0gaXRlbS5wYXJlbnQub2Jq
CisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXRlbS5vYmouX19zZWxmX18sIGNs
YXNzXykKKyAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAi
IiIKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgICAgICAg
ICAgICAgcGFzcworICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dF9pbnByb2Nlc3MoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNz
ZWQgaW4qIl0pCisKKwogZGVmIHRlc3RfdGVhcmRvd24odGVzdGRpcik6CiAgICAgdGVzdHBhdGgg
PSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgpAQCAtMjEwLDcgKzIzNSw3IEBAIGRl
ZiB0ZXN0X3VuaXR0ZXN0X3NraXBfaXNzdWUxNDgodGVzdGRpcik6CiBkZWYgdGVzdF9tZXRob2Rf
YW5kX3RlYXJkb3duX2ZhaWxpbmdfcmVwb3J0aW5nKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCB1bml0dGVzdCwgcHl0ZXN0Cisg
ICAgICAgIGltcG9ydCB1bml0dGVzdAogICAgICAgICBjbGFzcyBUQyh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0IDAsICJkb3duMSIKQEAgLTI0MCwxNCArMjY1LDE0IEBAIGRlZiB0ZXN0X3NldHVwX2ZhaWx1
cmVfaXNfc2hvd24odGVzdGRpcik6CiAgICAgICAgICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0IDAsICJkb3duMSIKICAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhv
ZChzZWxmKToKLSAgICAgICAgICAgICAgICBwcmludCAoIm5ldmVyNDIiKQorICAgICAgICAgICAg
ICAgIHByaW50KCJuZXZlcjQyIikKICAgICAgICAgICAgICAgICB4eXoKICAgICAiIiIKICAgICAp
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKICAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSAxCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnNldFVwKiIsICIq
YXNzZXJ0IDAqZG93bjEqIiwgIioxIGZhaWxlZCoiXSkKLSAgICBhc3NlcnQgIm5ldmVyNDIiIG5v
dCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xp
bmUoIipuZXZlcjQyKiIpCiAKIAogZGVmIHRlc3Rfc2V0dXBfc2V0VXBDbGFzcyh0ZXN0ZGlyKToK
QEAgLTMxOSw3ICszNDQsNyBAQCBkZWYgdGVzdF90ZXN0Y2FzZV9hZGRlcnJvcmFuZGZhaWx1cmVf
ZGVmZXJzKHRlc3RkaXIsIHR5cGUpOgogICAgICAgICAlICh0eXBlLCB0eXBlKQogICAgICkKICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgYXNzZXJ0ICJzaG91bGQgbm90IHJh
aXNlIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqc2hvdWxkIG5vdCByYWlzZSoiKQogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgidHlwZSIsIFsiRXJyb3IiLCAiRmFpbHVyZSJdKQpAQCAtMzYwLDcgKzM4NSw3IEBAIGRl
ZiB0ZXN0X3Rlc3RjYXNlX2N1c3RvbV9leGNlcHRpb25faW5mbyh0ZXN0ZGlyLCB0eXBlKToKIAog
CiBkZWYgdGVzdF90ZXN0Y2FzZV90b3RhbGx5X2luY29tcGF0aWJsZV9leGNlcHRpb25faW5mbyh0
ZXN0ZGlyKToKLSAgICBpdGVtLCA9IHRlc3RkaXIuZ2V0aXRlbXMoCisgICAgKGl0ZW0sKSA9IHRl
c3RkaXIuZ2V0aXRlbXMoCiAgICAgICAgICIiIgogICAgICAgICBmcm9tIHVuaXR0ZXN0IGltcG9y
dCBUZXN0Q2FzZQogICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKFRlc3RDYXNlKToKQEAgLTM4OCw4
ICs0MTMsNyBAQCBkZWYgdGVzdF9tb2R1bGVfbGV2ZWxfcHl0ZXN0bWFyayh0ZXN0ZGlyKToKICAg
ICByZXByZWMuYXNzZXJ0b3V0Y29tZShza2lwcGVkPTEpCiAKIAotY2xhc3MgVGVzdFRyaWFsVW5p
dHRlc3Qob2JqZWN0KToKLQorY2xhc3MgVGVzdFRyaWFsVW5pdHRlc3Q6CiAgICAgZGVmIHNldHVw
X2NsYXNzKGNscyk6CiAgICAgICAgIGNscy51dCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoInR3aXN0
ZWQudHJpYWwudW5pdHRlc3QiKQogICAgICAgICAjIG9uIHdpbmRvd3MgdHJpYWwgdXNlcyBhIHNv
Y2tldCBmb3IgYSByZWFjdG9yIGFuZCBhcHBhcmVudGx5IGRvZXNuJ3QgY2xvc2UgaXQgcHJvcGVy
bHkKQEAgLTQ1NSw5ICs0NzksNiBAQCBjbGFzcyBUZXN0VHJpYWxVbml0dGVzdChvYmplY3QpOgog
ICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAg
IGZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nl
c3NfYV9mYWlsdXJlCi0KLSAgICAgICAgc2hvdWxkX2ZhaWwgPSBfaXNfdW5pdHRlc3RfdW5leHBl
Y3RlZF9zdWNjZXNzX2FfZmFpbHVyZSgpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItcnhzIiwgKnNlbGYuaWdub3JlX3VuY2xvc2VkX3NvY2tldF93YXJuaW5nKQogICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXNfcmFuZG9tKAogICAgICAgICAgICAgWwpAQCAt
NDY4LDEyICs0ODksMTAgQEAgY2xhc3MgVGVzdFRyaWFsVW5pdHRlc3Qob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAiKmkyd2FudG8qIiwKICAgICAgICAgICAgICAgICAiKnN5cy52ZXJzaW9uX2lu
Zm8qIiwKICAgICAgICAgICAgICAgICAiKnNraXBfaW5fbWV0aG9kKiIsCi0gICAgICAgICAgICAg
ICAgIioxIGZhaWxlZCo0IHNraXBwZWQqMyB4ZmFpbGVkKiIKLSAgICAgICAgICAgICAgICBpZiBz
aG91bGRfZmFpbAotICAgICAgICAgICAgICAgIGVsc2UgIio0IHNraXBwZWQqMyB4ZmFpbCoxIHhw
YXNzKiIsCisgICAgICAgICAgICAgICAgIioxIGZhaWxlZCo0IHNraXBwZWQqMyB4ZmFpbGVkKiIs
CiAgICAgICAgICAgICBdCiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
KDEgaWYgc2hvdWxkX2ZhaWwgZWxzZSAwKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAx
CiAKICAgICBkZWYgdGVzdF90cmlhbF9lcnJvcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKApAQCAtNTEzLDE5ICs1MzIsMzEgQEAgY2xhc3MgVGVzdFRyaWFsVW5p
dHRlc3Qob2JqZWN0KToKICAgICAgICAgICAgICAgICAjIHdpbGwgY3Jhc2ggYm90aCBhdCB0ZXN0
IHRpbWUgYW5kIGF0IHRlYXJkb3duCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgIyBJZ25vcmUgRGVwcmVjYXRpb25X
YXJuaW5nIChmb3IgYGNtcGApIGZyb20gYXR0cnMgdGhyb3VnaCB0d2lzdGVkLAorICAgICAgICAj
IGZvciBzdGFibGUgdGVzdCByZXN1bHRzLgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgKKyAgICAgICAgICAgICItdnYiLCAiLW9jb25zb2xlX291dHB1dF9zdHlsZT1jbGFzc2lj
IiwgIi1XIiwgImlnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nIgorICAgICAgICApCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAidGVzdF90cmlhbF9lcnJvci5weTo6VEM6OnRlc3RfZm91ciBGQUlMRUQiLAorICAgICAg
ICAgICAgICAgICJ0ZXN0X3RyaWFsX2Vycm9yLnB5OjpUQzo6dGVzdF9mb3VyIEVSUk9SIiwKKyAg
ICAgICAgICAgICAgICAidGVzdF90cmlhbF9lcnJvci5weTo6VEM6OnRlc3Rfb25lIEZBSUxFRCIs
CisgICAgICAgICAgICAgICAgInRlc3RfdHJpYWxfZXJyb3IucHk6OlRDOjp0ZXN0X3RocmVlIEZB
SUxFRCIsCisgICAgICAgICAgICAgICAgInRlc3RfdHJpYWxfZXJyb3IucHk6OlRDOjp0ZXN0X3R3
byBGQUlMRUQiLAogICAgICAgICAgICAgICAgICIqRVJST1JTKiIsCisgICAgICAgICAgICAgICAg
IipfIEVSUk9SIGF0IHRlYXJkb3duIG9mIFRDLnRlc3RfZm91ciBfKiIsCiAgICAgICAgICAgICAg
ICAgIipEZWxheWVkQ2FsbHMqIiwKLSAgICAgICAgICAgICAgICAiKnRlc3RfZm91cioiLAorICAg
ICAgICAgICAgICAgICIqPSBGQUlMVVJFUyA9KiIsCisgICAgICAgICAgICAgICAgIipfIFRDLnRl
c3RfZm91ciBfKiIsCiAgICAgICAgICAgICAgICAgIipOYW1lRXJyb3IqY3Jhc2gqIiwKLSAgICAg
ICAgICAgICAgICAiKnRlc3Rfb25lKiIsCisgICAgICAgICAgICAgICAgIipfIFRDLnRlc3Rfb25l
IF8qIiwKICAgICAgICAgICAgICAgICAiKk5hbWVFcnJvcipjcmFzaCoiLAotICAgICAgICAgICAg
ICAgICIqdGVzdF90aHJlZSoiLAorICAgICAgICAgICAgICAgICIqXyBUQy50ZXN0X3RocmVlIF8q
IiwKICAgICAgICAgICAgICAgICAiKkRlbGF5ZWRDYWxscyoiLAotICAgICAgICAgICAgICAgICIq
dGVzdF90d28qIiwKLSAgICAgICAgICAgICAgICAiKmNyYXNoKiIsCisgICAgICAgICAgICAgICAg
IipfIFRDLnRlc3RfdHdvIF8qIiwKKyAgICAgICAgICAgICAgICAiKk5hbWVFcnJvcipjcmFzaCoi
LAorICAgICAgICAgICAgICAgICIqPSA0IGZhaWxlZCwgMSBlcnJvciBpbiAqIiwKICAgICAgICAg
ICAgIF0KICAgICAgICAgKQogCkBAIC02MDcsMTQgKzYzOCwxNCBAQCBkZWYgdGVzdF9kamFuZ29s
aWtlX3Rlc3RjYXNlKHRlc3RkaXIpOgogICAgICAgICBjbGFzcyBEamFuZ29MaWtlVGVzdENhc2Uo
VGVzdENhc2UpOgogCiAgICAgICAgICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICAgICAg
ICAgcHJpbnQgKCJzZXRVcCgpIikKKyAgICAgICAgICAgICAgICBwcmludCgic2V0VXAoKSIpCiAK
ICAgICAgICAgICAgIGRlZiB0ZXN0X3ByZXNldHVwX2hhc19iZWVuX3J1bihzZWxmKToKLSAgICAg
ICAgICAgICAgICBwcmludCAoInRlc3RfdGhpbmcoKSIpCisgICAgICAgICAgICAgICAgcHJpbnQo
InRlc3RfdGhpbmcoKSIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIo
c2VsZiwgJ3dhc19wcmVzZXR1cCcpKQogCiAgICAgICAgICAgICBkZWYgdGVhckRvd24oc2VsZik6
Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJ0ZWFyRG93bigpIikKKyAgICAgICAgICAgICAgICBw
cmludCgidGVhckRvd24oKSIpCiAKICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCByZXN1
bHQ9Tm9uZSk6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtNjM2LDExICs2NjcsMTEgQEAgZGVm
IHRlc3RfZGphbmdvbGlrZV90ZXN0Y2FzZSh0ZXN0ZGlyKToKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuCiAKICAgICAgICAgICAgIGRlZiBfcHJlX3NldHVwKHNlbGYpOgotICAgICAgICAgICAg
ICAgIHByaW50ICgiX3ByZV9zZXR1cCgpIikKKyAgICAgICAgICAgICAgICBwcmludCgiX3ByZV9z
ZXR1cCgpIikKICAgICAgICAgICAgICAgICBzZWxmLndhc19wcmVzZXR1cCA9IFRydWUKIAogICAg
ICAgICAgICAgZGVmIF9wb3N0X3RlYXJkb3duKHNlbGYpOgotICAgICAgICAgICAgICAgIHByaW50
ICgiX3Bvc3RfdGVhcmRvd24oKSIpCisgICAgICAgICAgICAgICAgcHJpbnQoIl9wb3N0X3RlYXJk
b3duKCkiKQogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXMiKQpAQCAtNjY3LDcgKzY5OCw3IEBAIGRlZiB0ZXN0X3VuaXR0ZXN0X25vdF9zaG93bl9pbl90
cmFjZWJhY2sodGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHJlcyA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKLSAgICBhc3NlcnQgImZhaWxVbmxlc3NFcXVhbCIgbm90IGluIHJlcy5zdGRvdXQu
c3RyKCkKKyAgICByZXMuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmZhaWxVbmxlc3NFcXVhbCoi
KQogCiAKIGRlZiB0ZXN0X3Vub3JkZXJhYmxlX3R5cGVzKHRlc3RkaXIpOgpAQCAtNjg2LDggKzcx
Nyw4IEBAIGRlZiB0ZXN0X3Vub3JkZXJhYmxlX3R5cGVzKHRlc3RkaXIpOgogICAgICIiIgogICAg
ICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgYXNzZXJ0ICJUeXBlRXJy
b3IiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
RVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUo
IipUeXBlRXJyb3IqIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNU
U19DT0xMRUNURUQKIAogCiBkZWYgdGVzdF91bml0dGVzdF90eXBlcnJvcl90cmFjZWJhY2sodGVz
dGRpcik6CkBAIC03NDEsMjIgKzc3MiwxNyBAQCBkZWYgdGVzdF91bml0dGVzdF9leHBlY3RlZF9m
YWlsdXJlX2Zvcl9wYXNzaW5nX3Rlc3RfaXNfZmFpbCh0ZXN0ZGlyLCBydW5uZXIpOgogICAgICAg
ICAgICAgdW5pdHRlc3QubWFpbigpCiAgICAgIiIiCiAgICAgKQotICAgIGZyb20gX3B5dGVzdC5j
b21wYXQgaW1wb3J0IF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWlsdXJlCiAK
LSAgICBzaG91bGRfZmFpbCA9IF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWls
dXJlKCkKICAgICBpZiBydW5uZXIgPT0gInB5dGVzdCI6CiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItcnhYIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqTXlUZXN0Q2FzZSp0ZXN0X3Bhc3Np
bmdfdGVzdF9pc19mYWlsKiIsCi0gICAgICAgICAgICAgICAgIioxIGZhaWxlZCoiIGlmIHNob3Vs
ZF9mYWlsIGVsc2UgIioxIHhwYXNzZWQqIiwKLSAgICAgICAgICAgIF0KKyAgICAgICAgICAgIFsi
Kk15VGVzdENhc2UqdGVzdF9wYXNzaW5nX3Rlc3RfaXNfZmFpbCoiLCAiKjEgZmFpbGVkKiJdCiAg
ICAgICAgICkKICAgICBlbHNlOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGhvbihz
Y3JpcHQpCiAgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIioxIHRlc3QgaW4q
IiwgIioodW5leHBlY3RlZCBzdWNjZXNzZXM9MSkqIl0pCiAKLSAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAoMSBpZiBzaG91bGRfZmFpbCBlbHNlIDApCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
MQogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKQEAgLTc5MSw3ICs4MTcsNyBAQCBkZWYg
dGVzdF91bml0dGVzdF9zZXR1cF9pbnRlcmFjdGlvbih0ZXN0ZGlyLCBmaXhfdHlwZSwgc3RtdCk6
CiAgICAgICAgICkKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjMgcGFzc2VkKiIpCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjMgcGFzc2VkKiJdKQogCiAKIGRlZiB0ZXN0X25vbl91bml0
dGVzdF9ub19zZXR1cGNsYXNzX3N1cHBvcnQodGVzdGRpcik6CkBAIC04NDgsNiArODc0LDM3IEBA
IGRlZiB0ZXN0X25vX3RlYXJkb3duX2lmX3NldHVwY2xhc3NfZmFpbGVkKHRlc3RkaXIpOgogICAg
IHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xLCBmYWlsZWQ9MSkKIAogCitkZWYgdGVzdF9j
bGVhbnVwX2Z1bmN0aW9ucyh0ZXN0ZGlyKToKKyAgICAiIiJFbnN1cmUgZnVuY3Rpb25zIGFkZGVk
IHdpdGggYWRkQ2xlYW51cCBhcmUgYWx3YXlzIGNhbGxlZCBhZnRlciBlYWNoIHRlc3QgZW5kcyAo
IzY5NDcpIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAg
aW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgY2xlYW51cHMgPSBbXQorCisgICAgICAgIGNsYXNz
IFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgICAgICAgICBkZWYgdGVzdF9mdW5jXzEo
c2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXBzLmFwcGVuZCwg
InRlc3RfZnVuY18xIikKKworICAgICAgICAgICAgZGVmIHRlc3RfZnVuY18yKHNlbGYpOgorICAg
ICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwcy5hcHBlbmQsICJ0ZXN0X2Z1bmNf
MiIpCisgICAgICAgICAgICAgICAgYXNzZXJ0IDAKKworICAgICAgICAgICAgZGVmIHRlc3RfZnVu
Y18zX2NoZWNrX2NsZWFudXBzKHNlbGYpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbGVhbnVw
cyA9PSBbInRlc3RfZnVuY18xIiwgInRlc3RfZnVuY18yIl0KKyAgICAiIiIKKyAgICApCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICIqOjp0ZXN0X2Z1bmNfMSBQQVNTRUQg
KiIsCisgICAgICAgICAgICAiKjo6dGVzdF9mdW5jXzIgRkFJTEVEICoiLAorICAgICAgICAgICAg
Iio6OnRlc3RfZnVuY18zX2NoZWNrX2NsZWFudXBzIFBBU1NFRCAqIiwKKyAgICAgICAgXQorICAg
ICkKKworCiBkZWYgdGVzdF9pc3N1ZTMzM19yZXN1bHRfY2xlYXJpbmcodGVzdGRpcik6CiAgICAg
dGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICIiIgpAQCAtOTI3LDExICs5ODQsOSBAQCBk
ZWYgdGVzdF9jbGFzc19tZXRob2RfY29udGFpbmluZ190ZXN0X2lzc3VlMTU1OCh0ZXN0ZGlyKToK
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAogCi1AcHl0ZXN0Lm1hcmsuaXNz
dWUoMzQ5OCkKLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKLSAgICAiYmFzZSIsIFsic2l4Lm1v
dmVzLmJ1aWx0aW5zLm9iamVjdCIsICJ1bml0dGVzdC5UZXN0Q2FzZSIsICJ1bml0dGVzdDIuVGVz
dENhc2UiXQotKQorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJiYXNlIiwgWyJidWlsdGlucy5v
YmplY3QiLCAidW5pdHRlc3QuVGVzdENhc2UiXSkKIGRlZiB0ZXN0X3VzZWZpeHR1cmVzX21hcmtl
cl9vbl91bml0dGVzdChiYXNlLCB0ZXN0ZGlyKToKKyAgICAiIiIjMzQ5OCIiIgogICAgIG1vZHVs
ZSA9IGJhc2UucnNwbGl0KCIuIiwgMSlbMF0KICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKG1vZHVs
ZSkKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC05OTAsMyArMTA0NSwyMjMgQEAgZGVmIHRl
c3RfdXNlZml4dHVyZXNfbWFya2VyX29uX3VuaXR0ZXN0KGJhc2UsIHRlc3RkaXIpOgogCiAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKICAgICByZXN1bHQuYXNzZXJ0X291dGNv
bWVzKHBhc3NlZD0yKQorCisKK2RlZiB0ZXN0X3Rlc3RjYXNlX2hhbmRsZXNfaW5pdF9leGNlcHRp
b25zKHRlc3RkaXIpOgorICAgICIiIgorICAgIFJlZ3Jlc3Npb24gdGVzdCB0byBtYWtlIHN1cmUg
ZXhjZXB0aW9ucyBpbiB0aGUgX19pbml0X18gbWV0aG9kIGFyZSBidWJibGVkIHVwIGNvcnJlY3Rs
eS4KKyAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
Nzg4CisgICAgIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAg
ICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKyAgICAgICAgaW1wb3J0IHB5dGVzdAor
ICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKFRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigic2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIikKKyAgICAgICAgICAgIGRlZiB0ZXN0
X2hlbGxvKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCAic2hvdWxkIHJhaXNlIHRo
aXMgZXhjZXB0aW9uIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5u
b19mbm1hdGNoX2xpbmUoIipFUlJPUiBhdCB0ZWFyZG93biBvZiBNeVRlc3RDYXNlLnRlc3RfaGVs
bG8qIikKKworCitkZWYgdGVzdF9lcnJvcl9tZXNzYWdlX3dpdGhfcGFyYW1ldHJpemVkX2ZpeHR1
cmVzKHRlc3RkaXIpOgorICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJ1bml0dGVzdC90ZXN0X3Bh
cmFtZXRyaXplZF9maXh0dXJlX2Vycm9yX21lc3NhZ2UucHkiKQorICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAg
IFsKKyAgICAgICAgICAgICIqdGVzdF90d28gZG9lcyBub3Qgc3VwcG9ydCBmaXh0dXJlcyoiLAor
ICAgICAgICAgICAgIipUZXN0U29tZXRoaW5nRWxzZTo6dGVzdF90d28iLAorICAgICAgICAgICAg
IipGdW5jdGlvbiB0eXBlOiBUZXN0Q2FzZUZ1bmN0aW9uIiwKKyAgICAgICAgXQorICAgICkKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgInRlc3RfbmFtZSwgZXhwZWN0ZWRfb3V0
Y29tZSIsCisgICAgWworICAgICAgICAoInRlc3Rfc2V0dXBfc2tpcC5weSIsICIxIHNraXBwZWQi
KSwKKyAgICAgICAgKCJ0ZXN0X3NldHVwX3NraXBfY2xhc3MucHkiLCAiMSBza2lwcGVkIiksCisg
ICAgICAgICgidGVzdF9zZXR1cF9za2lwX21vZHVsZS5weSIsICIxIGVycm9yIiksCisgICAgXSwK
KykKK2RlZiB0ZXN0X3NldHVwX2luaGVyaXRhbmNlX3NraXBwaW5nKHRlc3RkaXIsIHRlc3RfbmFt
ZSwgZXhwZWN0ZWRfb3V0Y29tZSk6CisgICAgIiIiSXNzdWUgIzQ3MDAiIiIKKyAgICB0ZXN0ZGly
LmNvcHlfZXhhbXBsZSgidW5pdHRlc3Qve30iLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqIHt9IGluICoiLmZvcm1hdChleHBlY3RlZF9vdXRjb21lKV0pCisKKworZGVmIHRlc3RfQmRi
UXVpdCh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHRlc3RfZm9v
PSIiIgorICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICBjbGFzcyBNeVRlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X2JkYnF1aXQoc2VsZik6
CisgICAgICAgICAgICAgICAgaW1wb3J0IGJkYgorICAgICAgICAgICAgICAgIHJhaXNlIGJkYi5C
ZGJRdWl0KCkKKworICAgICAgICAgICAgZGVmIHRlc3Rfc2hvdWxkX25vdF9ydW4oc2VsZik6Cisg
ICAgICAgICAgICAgICAgcGFzcworICAgICIiIgorICAgICkKKyAgICByZXByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW4oKQorICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKGZhaWxlZD0xLCBwYXNzZWQ9
MSkKKworCitkZWYgdGVzdF9leGl0X291dGNvbWUodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICB0ZXN0X2Zvbz0iIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAg
ICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X2V4aXRfb3V0Y29tZShzZWxmKToKKyAg
ICAgICAgICAgICAgICBweXRlc3QuZXhpdCgicHl0ZXN0X2V4aXQgY2FsbGVkIikKKworICAgICAg
ICAgICAgZGVmIHRlc3Rfc2hvdWxkX25vdF9ydW4oc2VsZik6CisgICAgICAgICAgICAgICAgcGFz
cworICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkV4aXQ6IHB5dGVzdF9leGl0IGNhbGxlZCoi
LCAiKj0gbm8gdGVzdHMgcmFuIGluICoiXSkKKworCitkZWYgdGVzdF90cmFjZSh0ZXN0ZGlyLCBt
b25rZXlwYXRjaCk6CisgICAgY2FsbHMgPSBbXQorCisgICAgZGVmIGNoZWNrX2NhbGwoKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgY2FsbHMuYXBwZW5kKChhcmdzLCBrd2FyZ3MpKQorICAgICAg
ICBhc3NlcnQgYXJncyA9PSAoInJ1bmNhbGwiLCkKKworICAgICAgICBjbGFzcyBfcGRiOgorICAg
ICAgICAgICAgZGVmIHJ1bmNhbGwoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBj
YWxscy5hcHBlbmQoKGFyZ3MsIGt3YXJncykpCisKKyAgICAgICAgcmV0dXJuIF9wZGIKKworICAg
IG1vbmtleXBhdGNoLnNldGF0dHIoIl9weXRlc3QuZGVidWdnaW5nLnB5dGVzdFBEQi5faW5pdF9w
ZGIiLCBjaGVja19jYWxsKQorCisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAg
ICIiIgorICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICBjbGFzcyBNeVRlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsICdmb28nKQorICAgICIiIgorICAgICkK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS10cmFjZSIsIHN0cihwMSkpCisgICAg
YXNzZXJ0IGxlbihjYWxscykgPT0gMgorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitk
ZWYgdGVzdF9wZGJfdGVhcmRvd25fY2FsbGVkKHRlc3RkaXIsIG1vbmtleXBhdGNoKSAtPiBOb25l
OgorICAgICIiIkVuc3VyZSB0ZWFyRG93bigpIGlzIGFsd2F5cyBjYWxsZWQgd2hlbiAtLXBkYiBp
cyBnaXZlbiBpbiB0aGUgY29tbWFuZC1saW5lLgorCisgICAgV2UgZGVsYXkgdGhlIG5vcm1hbCB0
ZWFyRG93bigpIGNhbGxzIHdoZW4gLS1wZGIgaXMgZ2l2ZW4sIHNvIHRoaXMgZW5zdXJlcyB3ZSBh
cmUgY2FsbGluZworICAgIHRlYXJEb3duKCkgZXZlbnR1YWxseSB0byBhdm9pZCBtZW1vcnkgbGVh
a3Mgd2hlbiB1c2luZyAtLXBkYi4KKyAgICAiIiIKKyAgICB0ZWFyZG93bnMgPSBbXSAgIyB0eXBl
OiBMaXN0W3N0cl0KKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICBweXRlc3QsICJ0
ZXN0X3BkYl90ZWFyZG93bl9jYWxsZWRfdGVhcmRvd25zIiwgdGVhcmRvd25zLCByYWlzaW5nPUZh
bHNlCisgICAgKQorCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAg
ICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBjbGFz
cyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICAgICAgICAgZGVmIHRlYXJE
b3duKHNlbGYpOgorICAgICAgICAgICAgICAgIHB5dGVzdC50ZXN0X3BkYl90ZWFyZG93bl9jYWxs
ZWRfdGVhcmRvd25zLmFwcGVuZChzZWxmLmlkKCkpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEo
c2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfMihzZWxm
KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygiLS1wZGIiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygiKiAyIHBhc3NlZCBpbiAqIikKKyAgICBhc3NlcnQgdGVhcmRvd25zID09IFsK
KyAgICAgICAgInRlc3RfcGRiX3RlYXJkb3duX2NhbGxlZC5NeVRlc3RDYXNlLnRlc3RfMSIsCisg
ICAgICAgICJ0ZXN0X3BkYl90ZWFyZG93bl9jYWxsZWQuTXlUZXN0Q2FzZS50ZXN0XzIiLAorICAg
IF0KKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1hcmsiLCBbIkB1bml0dGVzdC5za2lw
IiwgIkBweXRlc3QubWFyay5za2lwIl0pCitkZWYgdGVzdF9wZGJfdGVhcmRvd25fc2tpcHBlZCh0
ZXN0ZGlyLCBtb25rZXlwYXRjaCwgbWFyazogc3RyKSAtPiBOb25lOgorICAgICIiIldpdGggLS1w
ZGIsIHNldFVwIGFuZCB0ZWFyRG93biBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3Igc2tpcHBlZCB0
ZXN0cy4iIiIKKyAgICB0cmFja2VkID0gW10gICMgdHlwZTogTGlzdFtzdHJdCisgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cihweXRlc3QsICJ0ZXN0X3BkYl90ZWFyZG93bl9za2lwcGVkIiwgdHJhY2tl
ZCwgcmFpc2luZz1GYWxzZSkKKworICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIi
CisgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAg
ICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAgICAgICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgICAgICAgICBweXRlc3QudGVzdF9wZGJfdGVhcmRvd25f
c2tpcHBlZC5hcHBlbmQoInNldFVwOiIgKyBzZWxmLmlkKCkpCisKKyAgICAgICAgICAgIGRlZiB0
ZWFyRG93bihzZWxmKToKKyAgICAgICAgICAgICAgICBweXRlc3QudGVzdF9wZGJfdGVhcmRvd25f
c2tpcHBlZC5hcHBlbmQoInRlYXJEb3duOiIgKyBzZWxmLmlkKCkpCisKKyAgICAgICAgICAgIHtt
YXJrfSgic2tpcHBlZCBmb3IgcmVhc29ucyIpCisgICAgICAgICAgICBkZWYgdGVzdF8xKHNlbGYp
OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICBt
YXJrPW1hcmsKKyAgICAgICAgKQorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dF9pbnByb2Nlc3MoIi0tcGRiIikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiog
MSBza2lwcGVkIGluICoiKQorICAgIGFzc2VydCB0cmFja2VkID09IFtdCisKKworZGVmIHRlc3Rf
YXN5bmNfc3VwcG9ydCh0ZXN0ZGlyKToKKyAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJ1bml0dGVz
dC5hc3luY19jYXNlIikKKworICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJ1bml0dGVzdC90ZXN0
X3VuaXR0ZXN0X2FzeW5jaW8ucHkiKQorICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigp
CisgICAgcmVwcmVjLmFzc2VydG91dGNvbWUoZmFpbGVkPTEsIHBhc3NlZD0yKQorCisKK2RlZiB0
ZXN0X2FzeW5jdGVzdF9zdXBwb3J0KHRlc3RkaXIpOgorICAgICIiIkNoZWNrIGFzeW5jdGVzdCBz
dXBwb3J0ICgjNzExMCkiIiIKKyAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJhc3luY3Rlc3QiKQor
CisgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoInVuaXR0ZXN0L3Rlc3RfdW5pdHRlc3RfYXN5bmN0
ZXN0LnB5IikKKyAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgIHJlcHJlYy5h
c3NlcnRvdXRjb21lKGZhaWxlZD0xLCBwYXNzZWQ9MikKKworCitkZWYgdGVzdF9wbGFpbl91bml0
dGVzdF9kb2VzX25vdF9zdXBwb3J0X2FzeW5jKHRlc3RkaXIpOgorICAgICIiIkFzeW5jIGZ1bmN0
aW9ucyBpbiBwbGFpbiB1bml0dGVzdC5UZXN0Q2FzZSBzdWJjbGFzc2VzIGFyZSBub3Qgc3VwcG9y
dGVkIHdpdGhvdXQgcGx1Z2lucy4KKworICAgIFRoaXMgdGVzdCBleGlzdHMgaGVyZSB0byBhdm9p
ZCBpbnRyb2R1Y2luZyB0aGlzIHN1cHBvcnQgYnkgYWNjaWRlbnQsIGxlYWRpbmcgdXNlcnMKKyAg
ICB0byBleHBlY3QgdGhhdCBpdCB3b3JrcywgcmF0aGVyIHRoYW4gZG9pbmcgc28gaW50ZW50aW9u
YWxseSBhcyBhIGZlYXR1cmUuCisKKyAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzE4MCBmb3IgbW9yZSBjb250ZXh0LgorICAgICIiIgor
ICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJ1bml0dGVzdC90ZXN0X3VuaXR0ZXN0X3BsYWluX2Fz
eW5jLnB5IikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKKyAg
ICBpZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6CisgICAgICAgICMgaW4gUHlQ
eSB3ZSBjYW4ndCByZWxpYWJsZSBnZXQgdGhlIHdhcm5pbmcgYWJvdXQgdGhlIGNvcm91dGluZSBu
b3QgYmVpbmcgYXdhaXRlZCwKKyAgICAgICAgIyBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGNv
cm91dGluZSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZDsgZ2l2ZW4gdGhhdAorICAgICAgICAjIHdl
IGFyZSBydW5uaW5nIGluIGEgc3VicHJvY2VzcywgdGhhdCdzIGRpZmZpY3VsdCB0byBlbmZvcmNl
CisgICAgICAgIGV4cGVjdGVkX2xpbmVzID0gWyIqMSBwYXNzZWQqIl0KKyAgICBlbHNlOgorICAg
ICAgICBleHBlY3RlZF9saW5lcyA9IFsKKyAgICAgICAgICAgICIqUnVudGltZVdhcm5pbmc6IGNv
cm91dGluZSAqIHdhcyBuZXZlciBhd2FpdGVkIiwKKyAgICAgICAgICAgICIqMSBwYXNzZWQqIiwK
KyAgICAgICAgXQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhleHBlY3RlZF9saW5l
cykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF93YXJuaW5nX3R5cGVzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3dhcm5pbmdfdHlwZXMucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMTZkNzI1MmE2OGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfd2FybmluZ190eXBlcy5weQpAQCAtMCwwICsx
LDM3IEBACitpbXBvcnQgaW5zcGVjdAorCitpbXBvcnQgX3B5dGVzdC53YXJuaW5nX3R5cGVzCitp
bXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJ3YXJuaW5n
X2NsYXNzIiwKKyAgICBbCisgICAgICAgIHcKKyAgICAgICAgZm9yIG4sIHcgaW4gdmFycyhfcHl0
ZXN0Lndhcm5pbmdfdHlwZXMpLml0ZW1zKCkKKyAgICAgICAgaWYgaW5zcGVjdC5pc2NsYXNzKHcp
IGFuZCBpc3N1YmNsYXNzKHcsIFdhcm5pbmcpCisgICAgXSwKKykKK2RlZiB0ZXN0X3dhcm5pbmdf
dHlwZXMod2FybmluZ19jbGFzcyk6CisgICAgIiIiTWFrZSBzdXJlIGFsbCB3YXJuaW5ncyBkZWNs
YXJlZCBpbiBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMgYXJlIGRpc3BsYXllZCBhcyBjb21pbmcKKyAg
ICBmcm9tICdweXRlc3QnIGluc3RlYWQgb2YgdGhlIGludGVybmFsIG1vZHVsZSAoIzU0NTIpLgor
ICAgICIiIgorICAgIGFzc2VydCB3YXJuaW5nX2NsYXNzLl9fbW9kdWxlX18gPT0gInB5dGVzdCIK
KworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImVycm9yOjpweXRlc3QuUHl0ZXN0V2Fy
bmluZyIpCitkZWYgdGVzdF9weXRlc3Rfd2FybmluZ3NfcmVwcl9pbnRlZ3JhdGlvbl90ZXN0KHRl
c3RkaXIpOgorICAgICIiIlNtYWxsIGludGVncmF0aW9uIHRlc3QgdG8gZW5zdXJlIG91ciBzbWFs
bCBoYWNrIG9mIHNldHRpbmcgdGhlIF9fbW9kdWxlX18gYXR0cmlidXRlCisgICAgb2Ygb3VyIHdh
cm5pbmdzIGFjdHVhbGx5IHdvcmtzICgjNTQ1MikuCisgICAgIiIiCisgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBpbXBv
cnQgd2FybmluZ3MKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgd2FybmluZ3Mu
d2FybihweXRlc3QuUHl0ZXN0V2FybmluZygic29tZSB3YXJuaW5nIikpCisgICAgIiIiCisgICAg
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyJFICAgICAgIHB5dGVzdC5QeXRlc3RXYXJuaW5nOiBzb21lIHdhcm5pbmci
XSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF93YXJuaW5ncy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF93YXJuaW5ncy5weQppbmRleCBjNWJlYTA1MmE0N2UuLmI3
YTIzMTA5NGZkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3dhcm5pbmdz
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF93YXJuaW5ncy5weQpAQCAtMSwyMyAr
MSwzMCBAQAotIyAtKi0gY29kaW5nOiB1dGY4IC0qLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1
bmljb2RlX2xpdGVyYWxzCi0KLWltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHdhcm5pbmdz
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitm
cm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKIAogaW1wb3J0IHB5dGVzdAotCitmcm9tIF9weXRlc3Qu
Zml4dHVyZXMgaW1wb3J0IEZpeHR1cmVSZXF1ZXN0Citmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1w
b3J0IFRlc3RkaXIKIAogV0FSTklOR1NfU1VNTUFSWV9IRUFERVIgPSAid2FybmluZ3Mgc3VtbWFy
eSIKIAogCiBAcHl0ZXN0LmZpeHR1cmUKLWRlZiBweWZpbGVfd2l0aF93YXJuaW5ncyh0ZXN0ZGly
LCByZXF1ZXN0KToKLSAgICAiIiIKLSAgICBDcmVhdGUgYSB0ZXN0IGZpbGUgd2hpY2ggY2FsbHMg
YSBmdW5jdGlvbiBpbiBhIG1vZHVsZSB3aGljaCBnZW5lcmF0ZXMgd2FybmluZ3MuCi0gICAgIiIi
CitkZWYgcHlmaWxlX3dpdGhfd2FybmluZ3ModGVzdGRpcjogVGVzdGRpciwgcmVxdWVzdDogRml4
dHVyZVJlcXVlc3QpIC0+IHN0cjoKKyAgICAiIiJDcmVhdGUgYSB0ZXN0IGZpbGUgd2hpY2ggY2Fs
bHMgYSBmdW5jdGlvbiBpbiBhIG1vZHVsZSB3aGljaCBnZW5lcmF0ZXMgd2FybmluZ3MuIiIiCiAg
ICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKICAgICB0ZXN0X25hbWUgPSByZXF1ZXN0LmZ1bmN0
aW9uLl9fbmFtZV9fCiAgICAgbW9kdWxlX25hbWUgPSB0ZXN0X25hbWUubHN0cmlwKCJ0ZXN0XyIp
ICsgIl9tb2R1bGUiCi0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgIHRlc3RfZmlsZSA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCB7bW9kdWxlX25h
bWV9CisgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgIGFzc2VydCB7bW9kdWxl
X25hbWV9LmZvbygpID09IDEKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIG1vZHVs
ZV9uYW1lPW1vZHVsZV9uYW1lCisgICAgICAgICksCiAgICAgICAgICoqewogICAgICAgICAgICAg
bW9kdWxlX25hbWU6ICIiIgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCkBAIC0yNSwyOSAr
MzIsMjAgQEAgZGVmIHB5ZmlsZV93aXRoX3dhcm5pbmdzKHRlc3RkaXIsIHJlcXVlc3QpOgogICAg
ICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoInVzZXIgd2FybmluZyIpKQog
ICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oUnVudGltZVdhcm5pbmcoInJ1bnRpbWUgd2Fy
bmluZyIpKQogICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICIiIiwKLSAgICAgICAg
ICAgIHRlc3RfbmFtZTogIiIiCi0gICAgICAgICAgICBpbXBvcnQge21vZHVsZV9uYW1lfQotICAg
ICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAgICAgICAgIGFzc2VydCB7bW9kdWxl
X25hbWV9LmZvbygpID09IDEKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBt
b2R1bGVfbmFtZT1tb2R1bGVfbmFtZQotICAgICAgICAgICAgKSwKLSAgICAgICAgfQorICAgICAg
ICAgICAgIiIiLAorICAgICAgICB9LAogICAgICkKKyAgICByZXR1cm4gc3RyKHRlc3RfZmlsZSkK
IAogCi1AcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIpCitAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQogZGVmIHRlc3Rfbm9ybWFsX2Zsb3codGVzdGRpciwg
cHlmaWxlX3dpdGhfd2FybmluZ3MpOgotICAgICIiIgotICAgIENoZWNrIHRoYXQgdGhlIHdhcm5p
bmdzIHNlY3Rpb24gaXMgZGlzcGxheWVkLCBjb250YWluaW5nIHRlc3Qgbm9kZSBpZHMgZm9sbG93
ZWQgYnkKLSAgICBhbGwgd2FybmluZ3MgZ2VuZXJhdGVkIGJ5IHRoYXQgdGVzdCBub2RlLgotICAg
ICIiIgotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAiIiJDaGVjayB0aGF0
IHRoZSB3YXJuaW5ncyBzZWN0aW9uIGlzIGRpc3BsYXllZC4iIiIKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdChweWZpbGVfd2l0aF93YXJuaW5ncykKICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCiAgICAgICAgIFsKICAgICAgICAgICAgICIqPT0gJXMgPT0qIiAlIFdBUk5J
TkdTX1NVTU1BUllfSEVBREVSLAotICAgICAgICAgICAgIip0ZXN0X25vcm1hbF9mbG93LnB5Ojp0
ZXN0X2Z1bmMiLAorICAgICAgICAgICAgInRlc3Rfbm9ybWFsX2Zsb3cucHk6OnRlc3RfZnVuYyIs
CiAgICAgICAgICAgICAiKm5vcm1hbF9mbG93X21vZHVsZS5weTozOiBVc2VyV2FybmluZzogdXNl
ciB3YXJuaW5nIiwKICAgICAgICAgICAgICcqICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKCJ1
c2VyIHdhcm5pbmciKSknLAogICAgICAgICAgICAgIipub3JtYWxfZmxvd19tb2R1bGUucHk6NDog
UnVudGltZVdhcm5pbmc6IHJ1bnRpbWUgd2FybmluZyIsCkBAIC01NSwxMSArNTMsMTAgQEAgZGVm
IHRlc3Rfbm9ybWFsX2Zsb3codGVzdGRpciwgcHlmaWxlX3dpdGhfd2FybmluZ3MpOgogICAgICAg
ICAgICAgIiogMSBwYXNzZWQsIDIgd2FybmluZ3MqIiwKICAgICAgICAgXQogICAgICkKLSAgICBh
c3NlcnQgcmVzdWx0LnN0ZG91dC5zdHIoKS5jb3VudCgidGVzdF9ub3JtYWxfZmxvdy5weTo6dGVz
dF9mdW5jIikgPT0gMQogCiAKIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIikK
LWRlZiB0ZXN0X3NldHVwX3RlYXJkb3duX3dhcm5pbmdzKHRlc3RkaXIsIHB5ZmlsZV93aXRoX3dh
cm5pbmdzKToKK2RlZiB0ZXN0X3NldHVwX3RlYXJkb3duX3dhcm5pbmdzKHRlc3RkaXIpOgogICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCB3YXJuaW5n
cwpAQCAtOTUsMTAgKzkyLDEyIEBAIGRlZiB0ZXN0X2FzX2Vycm9ycyh0ZXN0ZGlyLCBweWZpbGVf
d2l0aF93YXJuaW5ncywgbWV0aG9kKToKICAgICAgICAgdGVzdGRpci5tYWtlaW5pKAogICAgICAg
ICAgICAgIiIiCiAgICAgICAgICAgICBbcHl0ZXN0XQotICAgICAgICAgICAgZmlsdGVyd2Fybmlu
Z3M9IGVycm9yCisgICAgICAgICAgICBmaWx0ZXJ3YXJuaW5ncz1lcnJvcgogICAgICAgICAgICAg
IiIiCiAgICAgICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgqYXJncykKKyAg
ICAjIFVzZSBhIHN1YnByb2Nlc3MsIHNpbmNlIGNoYW5naW5nIGxvZ2dpbmcgbGV2ZWwgYWZmZWN0
cyBvdGhlciB0aHJlYWRzCisgICAgIyAoeGRpc3QpLgorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoKmFyZ3MsIHB5ZmlsZV93aXRoX3dhcm5pbmdzKQogICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwogICAgICAgICAgICAgIkUgICAgICAg
VXNlcldhcm5pbmc6IHVzZXIgd2FybmluZyIsCkBAIC0xMTksMTAxICsxMTgsMzQgQEAgZGVmIHRl
c3RfaWdub3JlKHRlc3RkaXIsIHB5ZmlsZV93aXRoX3dhcm5pbmdzLCBtZXRob2QpOgogICAgICAg
ICAiIiIKICAgICAgICAgKQogCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3Mp
CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3MsIHB5ZmlsZV93aXRoX3dhcm5p
bmdzKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4gKiJd
KQogICAgIGFzc2VydCBXQVJOSU5HU19TVU1NQVJZX0hFQURFUiBub3QgaW4gcmVzdWx0LnN0ZG91
dC5zdHIoKQogCiAKLUBweXRlc3QubWFyay5za2lwaWYoCi0gICAgc3lzLnZlcnNpb25faW5mbyA8
ICgzLCAwKSwgcmVhc29uPSJ3YXJuaW5ncyBtZXNzYWdlIGlzIHVuaWNvZGUgaXMgb2sgaW4gcHl0
aG9uMyIKLSkKIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIikKLWRlZiB0ZXN0
X3VuaWNvZGUodGVzdGRpciwgcHlmaWxlX3dpdGhfd2FybmluZ3MpOgorZGVmIHRlc3RfdW5pY29k
ZSh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgotICAgICAg
ICAjIC0qLSBjb2Rpbmc6IHV0ZjggLSotCiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAg
ICBpbXBvcnQgcHl0ZXN0CiAKIAogICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKICAgICAgICAgZGVm
IGZpeCgpOgotICAgICAgICAgICAgd2FybmluZ3Mud2Fybih1Iua1i+ivlSIpCisgICAgICAgICAg
ICB3YXJuaW5ncy53YXJuKCLmtYvor5UiKQogICAgICAgICAgICAgeWllbGQKIAogICAgICAgICBk
ZWYgdGVzdF9mdW5jKGZpeCk6CiAgICAgICAgICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoCi0gICAgICAgIFsKLSAgICAgICAgICAgICIqPT0gJXMgPT0qIiAlIFdBUk5JTkdTX1NV
TU1BUllfSEVBREVSLAotICAgICAgICAgICAgIip0ZXN0X3VuaWNvZGUucHk6ODogVXNlcldhcm5p
bmc6IFx1NmQ0Ylx1OGJkNSoiLAotICAgICAgICAgICAgIiogMSBwYXNzZWQsIDEgd2FybmluZ3Mq
IiwKLSAgICAgICAgXQotICAgICkKLQotCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKAotICAgIHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsIDApLAotICAgIHJlYXNvbj0id2FybmluZ3MgbWVzc2FnZSBpcyBi
cm9rZW4gYXMgaXQgaXMgbm90IHN0ciBpbnN0YW5jZSIsCi0pCi1kZWYgdGVzdF9weTJfdW5pY29k
ZSh0ZXN0ZGlyLCBweWZpbGVfd2l0aF93YXJuaW5ncyk6Ci0gICAgaWYgKAotICAgICAgICBnZXRh
dHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIiwgKCkpWzoyXSA9PSAoNSwgOSkKLSAgICAgICAg
YW5kIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3aW4iKQotICAgICk6Ci0gICAgICAgIHB5dGVz
dC54ZmFpbCgiZmFpbHMgd2l0aCB1bmljb2RlIGVycm9yIG9uIFB5UHkyIDUuOSBhbmQgV2luZG93
cyAoIzI5MDUpIikKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgotICAgICAg
ICAjIC0qLSBjb2Rpbmc6IHV0ZjggLSotCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAg
ICBpbXBvcnQgcHl0ZXN0Ci0KLQotICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgZGVm
IGZpeCgpOgotICAgICAgICAgICAgd2FybmluZ3Mud2Fybih1Iua1i+ivlSIpCi0gICAgICAgICAg
ICB5aWVsZAotCi0gICAgICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygnYWx3YXlzJykK
LSAgICAgICAgZGVmIHRlc3RfZnVuYyhmaXgpOgotICAgICAgICAgICAgcGFzcwotICAgICIiIgog
ICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbCiAgICAgICAgICAgICAiKj09ICVzID09KiIgJSBX
QVJOSU5HU19TVU1NQVJZX0hFQURFUiwKLSAgICAgICAgICAgICIqdGVzdF9weTJfdW5pY29kZS5w
eTo4OiBVc2VyV2FybmluZzogXFx1NmQ0YlxcdThiZDUiLAotICAgICAgICAgICAgJyp3YXJuaW5n
cy53YXJuKHUiXHU2ZDRiXHU4YmQ1IiknLAotICAgICAgICAgICAgIip3YXJuaW5ncy5weToqOiBV
bmljb2RlV2FybmluZzogV2FybmluZyBpcyB1c2luZyB1bmljb2RlIG5vbioiLAotICAgICAgICAg
ICAgIiogMSBwYXNzZWQsIDIgd2FybmluZ3MqIiwKLSAgICAgICAgXQotICAgICkKLQotCi1kZWYg
dGVzdF9weTJfdW5pY29kZV9hc2NpaSh0ZXN0ZGlyKToKLSAgICAiIiJFbnN1cmUgdGhhdCBvdXIg
d2FybmluZyBhYm91dCAndW5pY29kZSB3YXJuaW5ncyBjb250YWluaW5nIG5vbi1hc2NpaSBtZXNz
YWdlcycKLSAgICBkb2VzIG5vdCB0cmlnZ2VyIHdpdGggYXNjaWktY29udmVydGlibGUgbWVzc2Fn
ZXMiIiIKLSAgICB0ZXN0ZGlyLm1ha2VpbmkoIltweXRlc3RdIikKLSAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgIGltcG9y
dCB3YXJuaW5ncwotCi0gICAgICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygnYWx3YXlz
JykKLSAgICAgICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAgICAgd2FybmluZ3Mud2Fybih1
ImhlbGxvIikKLSAgICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWwotICAgICAgICAg
ICAgIio9PSAlcyA9PSoiICUgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIsCi0gICAgICAgICAgICAn
Kndhcm5pbmdzLndhcm4odSJoZWxsbyIpJywKLSAgICAgICAgICAgICIqIDEgcGFzc2VkLCAxIHdh
cm5pbmdzIGluKiIsCisgICAgICAgICAgICAiKnRlc3RfdW5pY29kZS5weTo3OiBVc2VyV2Fybmlu
ZzogXHU2ZDRiXHU4YmQ1KiIsCisgICAgICAgICAgICAiKiAxIHBhc3NlZCwgMSB3YXJuaW5nKiIs
CiAgICAgICAgIF0KICAgICApCiAKQEAgLTI0NCw5ICsxNzYsOCBAQCBkZWYgdGVzdF93b3Jrc193
aXRoX2ZpbHRlcndhcm5pbmdzKHRlc3RkaXIpOgogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImRlZmF1bHRfY29uZmlnIiwgWyJpbmkiLCAiY21kbGluZSJdKQogZGVmIHRlc3RfZmlsdGVyd2Fy
bmluZ3NfbWFyayh0ZXN0ZGlyLCBkZWZhdWx0X2NvbmZpZyk6Ci0gICAgIiIiCi0gICAgVGVzdCBg
YGZpbHRlcndhcm5pbmdzYGAgbWFyayB3b3JrcyBhbmQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGNv
bW1hbmQgbGluZSBhbmQgaW5pIG9wdGlvbnMuCi0gICAgIiIiCisgICAgIiIiVGVzdCBgYGZpbHRl
cndhcm5pbmdzYGAgbWFyayB3b3JrcyBhbmQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGNvbW1hbmQK
KyAgICBsaW5lIGFuZCBpbmkgb3B0aW9ucy4iIiIKICAgICBpZiBkZWZhdWx0X2NvbmZpZyA9PSAi
aW5pIjoKICAgICAgICAgdGVzdGRpci5tYWtlaW5pKAogICAgICAgICAgICAgIiIiCkBAIC0yNzIs
MTkgKzIwMyw1NzIgQEAgZGVmIHRlc3RfZmlsdGVyd2FybmluZ3NfbWFyayh0ZXN0ZGlyLCBkZWZh
dWx0X2NvbmZpZyk6CiAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItVyBhbHdheXMiIGlmIGRlZmF1bHRfY29uZmlnID09ICJjbWRsaW5lIiBlbHNlICIiKQot
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio9IDEgZmFpbGVkLCAyIHBhc3NlZCwg
MSB3YXJuaW5ncyBpbiAqIl0pCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKj0g
MSBmYWlsZWQsIDIgcGFzc2VkLCAxIHdhcm5pbmcgaW4gKiJdKQogCiAKIGRlZiB0ZXN0X25vbl9z
dHJpbmdfd2FybmluZ19hcmd1bWVudCh0ZXN0ZGlyKToKICAgICAiIiJOb24tc3RyIGFyZ3VtZW50
IHBhc3NlZCB0byB3YXJuaW5nIGJyZWFrcyBweXRlc3QgKCMyOTU2KSIiIgorICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiXAorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAg
ICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKFVzZXJXYXJuaW5nKDEsICdmb28nKSkKKyAgICAgICAgIiIiCisgICAgKQorICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItVyIsICJhbHdheXMiKQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhbIio9IDEgcGFzc2VkLCAxIHdhcm5pbmcgaW4gKiJdKQorCisK
K2RlZiB0ZXN0X2ZpbHRlcndhcm5pbmdzX21hcmtfcmVnaXN0cmF0aW9uKHRlc3RkaXIpOgorICAg
ICIiIkVuc3VyZSBmaWx0ZXJ3YXJuaW5ncyBtYXJrIGlzIHJlZ2lzdGVyZWQiIiIKKyAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAg
ICAgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCdlcnJvcicpCisgICAgICAgIGRlZiB0
ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tc3RyaWN0LW1hcmtlcnMiKQorICAgIGFzc2VydCByZXN1
bHQucmV0ID09IDAKKworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIpCitk
ZWYgdGVzdF93YXJuaW5nX2NhcHR1cmVkX2hvb2sodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtl
Y29uZnRlc3QoCisgICAgICAgICIiIgorICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWcpOgorICAgICAgICAgICAgY29uZmlnLmlzc3VlX2NvbmZpZ190aW1lX3dhcm5pbmcoVXNlcldh
cm5pbmcoImNvbmZpZyB3YXJuaW5nIiksIHN0YWNrbGV2ZWw9MikKKyAgICAiIiIKKyAgICApCisg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVz
dCwgd2FybmluZ3MKKworICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKCJjb2xsZWN0
IHdhcm5pbmciKSkKKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZpeCgp
OgorICAgICAgICAgICAgd2FybmluZ3Mud2FybihVc2VyV2FybmluZygic2V0dXAgd2FybmluZyIp
KQorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgd2FybmluZ3Mud2FybihVc2VyV2Fy
bmluZygidGVhcmRvd24gd2FybmluZyIpKQorCisgICAgICAgIGRlZiB0ZXN0X2Z1bmMoZml4KToK
KyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoImNhbGwgd2FybmluZyIpKQor
ICAgICAgICAgICAgYXNzZXJ0IGZpeCA9PSAxCisgICAgICAgICIiIgorICAgICkKKworICAgIGNv
bGxlY3RlZCA9IFtdCisKKyAgICBjbGFzcyBXYXJuaW5nQ29sbGVjdG9yOgorICAgICAgICBkZWYg
cHl0ZXN0X3dhcm5pbmdfcmVjb3JkZWQoc2VsZiwgd2FybmluZ19tZXNzYWdlLCB3aGVuLCBub2Rl
aWQsIGxvY2F0aW9uKToKKyAgICAgICAgICAgIGNvbGxlY3RlZC5hcHBlbmQoKHN0cih3YXJuaW5n
X21lc3NhZ2UubWVzc2FnZSksIHdoZW4sIG5vZGVpZCwgbG9jYXRpb24pKQorCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QocGx1Z2lucz1bV2FybmluZ0NvbGxlY3RvcigpXSkKKyAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisKKyAgICBleHBlY3Rl
ZCA9IFsKKyAgICAgICAgKCJjb25maWcgd2FybmluZyIsICJjb25maWciLCAiIiksCisgICAgICAg
ICgiY29sbGVjdCB3YXJuaW5nIiwgImNvbGxlY3QiLCAiIiksCisgICAgICAgICgic2V0dXAgd2Fy
bmluZyIsICJydW50ZXN0IiwgInRlc3Rfd2FybmluZ19jYXB0dXJlZF9ob29rLnB5Ojp0ZXN0X2Z1
bmMiKSwKKyAgICAgICAgKCJjYWxsIHdhcm5pbmciLCAicnVudGVzdCIsICJ0ZXN0X3dhcm5pbmdf
Y2FwdHVyZWRfaG9vay5weTo6dGVzdF9mdW5jIiksCisgICAgICAgICgidGVhcmRvd24gd2Fybmlu
ZyIsICJydW50ZXN0IiwgInRlc3Rfd2FybmluZ19jYXB0dXJlZF9ob29rLnB5Ojp0ZXN0X2Z1bmMi
KSwKKyAgICBdCisgICAgZm9yIGluZGV4IGluIHJhbmdlKGxlbihleHBlY3RlZCkpOgorICAgICAg
ICBjb2xsZWN0ZWRfcmVzdWx0ID0gY29sbGVjdGVkW2luZGV4XQorICAgICAgICBleHBlY3RlZF9y
ZXN1bHQgPSBleHBlY3RlZFtpbmRleF0KKworICAgICAgICBhc3NlcnQgY29sbGVjdGVkX3Jlc3Vs
dFswXSA9PSBleHBlY3RlZF9yZXN1bHRbMF0sIHN0cihjb2xsZWN0ZWQpCisgICAgICAgIGFzc2Vy
dCBjb2xsZWN0ZWRfcmVzdWx0WzFdID09IGV4cGVjdGVkX3Jlc3VsdFsxXSwgc3RyKGNvbGxlY3Rl
ZCkKKyAgICAgICAgYXNzZXJ0IGNvbGxlY3RlZF9yZXN1bHRbMl0gPT0gZXhwZWN0ZWRfcmVzdWx0
WzJdLCBzdHIoY29sbGVjdGVkKQorCisgICAgICAgICMgTk9URTogY29sbGVjdGVkX3Jlc3VsdFsz
XSBpcyBsb2NhdGlvbiwgd2hpY2ggZGlmZmVycyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0geW91IGFy
ZSBvbgorICAgICAgICAjICAgICAgIHRodXMsIHRoZSBiZXN0IHdlIGNhbiBkbyBoZXJlIGlzIGFz
c2VydCB0aGUgdHlwZXMgb2YgdGhlIHBhcmVtZXRlcnMgbWF0Y2ggd2hhdCB3ZSBleHBlY3QKKyAg
ICAgICAgIyAgICAgICBhbmQgbm90IHRyeSBhbmQgcHJlbG9hZCBpdCBpbiB0aGUgZXhwZWN0ZWQg
YXJyYXkKKyAgICAgICAgaWYgY29sbGVjdGVkX3Jlc3VsdFszXSBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGFzc2VydCB0eXBlKGNvbGxlY3RlZF9yZXN1bHRbM11bMF0pIGlzIHN0ciwgc3RyKGNv
bGxlY3RlZCkKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGNvbGxlY3RlZF9yZXN1bHRbM11bMV0p
IGlzIGludCwgc3RyKGNvbGxlY3RlZCkKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGNvbGxlY3Rl
ZF9yZXN1bHRbM11bMl0pIGlzIHN0ciwgc3RyKGNvbGxlY3RlZCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGFzc2VydCBjb2xsZWN0ZWRfcmVzdWx0WzNdIGlzIE5vbmUsIHN0cihjb2xsZWN0
ZWQpCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiKQorZGVmIHRlc3Rf
Y29sbGVjdGlvbl93YXJuaW5ncyh0ZXN0ZGlyKToKKyAgICAiIiJDaGVjayB0aGF0IHdlIGFsc28g
Y2FwdHVyZSB3YXJuaW5ncyBpc3N1ZWQgZHVyaW5nIHRlc3QgY29sbGVjdGlvbiAoIzMyNTEpLiIi
IgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCB3
YXJuaW5ncworCisgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoImNvbGxlY3Rpb24g
d2FybmluZyIpKQorCisgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgcGFzcwor
ICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKj09ICVz
ID09KiIgJSBXQVJOSU5HU19TVU1NQVJZX0hFQURFUiwKKyAgICAgICAgICAgICIgICpjb2xsZWN0
aW9uX3dhcm5pbmdzLnB5OjM6IFVzZXJXYXJuaW5nOiBjb2xsZWN0aW9uIHdhcm5pbmciLAorICAg
ICAgICAgICAgJyAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKCJjb2xsZWN0aW9uIHdhcm5p
bmciKSknLAorICAgICAgICAgICAgIiogMSBwYXNzZWQsIDEgd2FybmluZyoiLAorICAgICAgICBd
CisgICAgKQorCisKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIikKK2RlZiB0
ZXN0X21hcmtfcmVnZXhfZXNjYXBlKHRlc3RkaXIpOgorICAgICIiIkBweXRlc3QubWFyay5maWx0
ZXJ3YXJuaW5ncyBzaG91bGQgbm90IHRyeSB0byBlc2NhcGUgcmVnZXggY2hhcmFjdGVycyAoIzM5
MzYpIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICByIiIiCisgICAgICAgIGlt
cG9ydCBweXRlc3QsIHdhcm5pbmdzCisKKyAgICAgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5p
bmdzKHIiaWdub3JlOnNvbWUgXCh3YXJuaW5nXCkiKQorICAgICAgICBkZWYgdGVzdF9mb28oKToK
KyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoInNvbWUgKHdhcm5pbmcpIikp
CisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBh
c3NlcnQgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
KworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJpZ25vcmVfcHl0ZXN0X3dhcm5pbmdzIiwgWyJubyIsICJpbmkiLCAiY21k
bGluZSJdKQorZGVmIHRlc3RfaGlkZV9weXRlc3RfaW50ZXJuYWxfd2FybmluZ3ModGVzdGRpciwg
aWdub3JlX3B5dGVzdF93YXJuaW5ncyk6CisgICAgIiIiTWFrZSBzdXJlIHdlIGNhbiBpZ25vcmUg
aW50ZXJuYWwgcHl0ZXN0IHdhcm5pbmdzIHVzaW5nIGEgd2FybmluZ3MgZmlsdGVyLiIiIgorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QK
KyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisKKyAgICAgICAgd2FybmluZ3Mud2FybihweXRlc3Qu
UHl0ZXN0V2FybmluZygic29tZSBpbnRlcm5hbCB3YXJuaW5nIikpCiAKKyAgICAgICAgZGVmIHRl
c3RfYmFyKCk6CisgICAgICAgICAgICBwYXNzCisgICAgIiIiCisgICAgKQorICAgIGlmIGlnbm9y
ZV9weXRlc3Rfd2FybmluZ3MgPT0gImluaSI6CisgICAgICAgIHRlc3RkaXIubWFrZWluaSgKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgIGZpbHRlcndh
cm5pbmdzID0gaWdub3JlOjpweXRlc3QuUHl0ZXN0V2FybmluZworICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgIGFyZ3MgPSAoCisgICAgICAgIFsiLVciLCAiaWdub3JlOjpweXRlc3QuUHl0ZXN0
V2FybmluZyJdCisgICAgICAgIGlmIGlnbm9yZV9weXRlc3Rfd2FybmluZ3MgPT0gImNtZGxpbmUi
CisgICAgICAgIGVsc2UgW10KKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KmFyZ3MpCisgICAgaWYgaWdub3JlX3B5dGVzdF93YXJuaW5ncyAhPSAibm8iOgorICAgICAgICBh
c3NlcnQgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
KyAgICBlbHNlOgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgIio9PSAlcyA9PSoiICUgV0FSTklOR1NfU1VNTUFSWV9I
RUFERVIsCisgICAgICAgICAgICAgICAgIip0ZXN0X2hpZGVfcHl0ZXN0X2ludGVybmFsX3dhcm5p
bmdzLnB5OjQ6IFB5dGVzdFdhcm5pbmc6IHNvbWUgaW50ZXJuYWwgd2FybmluZyIsCisgICAgICAg
ICAgICAgICAgIiogMSBwYXNzZWQsIDEgd2FybmluZyAqIiwKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaWdub3JlX29uX2NtZGxpbmUiLCBb
VHJ1ZSwgRmFsc2VdKQorZGVmIHRlc3Rfb3B0aW9uX3ByZWNlZGVuY2VfY21kbGluZV9vdmVyX2lu
aSh0ZXN0ZGlyLCBpZ25vcmVfb25fY21kbGluZSk6CisgICAgIiIiRmlsdGVycyBkZWZpbmVkIGlu
IHRoZSBjb21tYW5kLWxpbmUgc2hvdWxkIHRha2UgcHJlY2VkZW5jZSBvdmVyIGZpbHRlcnMgaW4g
aW5pIGZpbGVzICgjMzk0NikuIiIiCisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIK
KyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgZmlsdGVyd2FybmluZ3MgPSBlcnJvcgorICAgICIi
IgorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBp
bXBvcnQgd2FybmluZ3MKICAgICAgICAgZGVmIHRlc3QoKToKLSAgICAgICAgICAgIHdhcm5pbmdz
Lndhcm4oVXNlcldhcm5pbmcoMSwgdSdmb28nKSkKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4o
VXNlcldhcm5pbmcoJ2hlbGxvJykpCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItVyIsICJhbHdheXMiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIio9IDEgcGFzc2VkLCAxIHdhcm5pbmdzIGluICoiXSkKKyAgICBhcmdzID0gWyItVyIs
ICJpZ25vcmUiXSBpZiBpZ25vcmVfb25fY21kbGluZSBlbHNlIFtdCisgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoKmFyZ3MpCisgICAgaWYgaWdub3JlX29uX2NtZGxpbmU6CisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4qIl0pCisgICAgZWxz
ZToKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAxIGZhaWxlZCBpbioi
XSkKKworCitkZWYgdGVzdF9vcHRpb25fcHJlY2VkZW5jZV9tYXJrKHRlc3RkaXIpOgorICAgICIi
IkZpbHRlcnMgZGVmaW5lZCBieSBtYXJrcyBzaG91bGQgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSAo
IzM5NDYpLiIiIgorICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgIiIiCisgICAgICAgIFtw
eXRlc3RdCisgICAgICAgIGZpbHRlcndhcm5pbmdzID0gaWdub3JlCisgICAgIiIiCisgICAgKQor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRl
c3QsIHdhcm5pbmdzCisgICAgICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygnZXJyb3In
KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybihVc2VyV2Fy
bmluZygnaGVsbG8nKSkKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi1XIiwgImlnbm9yZSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
KiAxIGZhaWxlZCBpbioiXSkKKworCitjbGFzcyBUZXN0RGVwcmVjYXRpb25XYXJuaW5nc0J5RGVm
YXVsdDoKKyAgICAiIiIKKyAgICBOb3RlOiBhbGwgcHl0ZXN0IHJ1bnMgYXJlIGV4ZWN1dGVkIGlu
IGEgc3VicHJvY2VzcyBzbyB3ZSBkb24ndCBpbmhlcml0IHdhcm5pbmcgZmlsdGVycworICAgIGZy
b20gcHl0ZXN0J3Mgb3duIHRlc3Qgc3VpdGUKKyAgICAiIiIKKworICAgIGRlZiBjcmVhdGVfZmls
ZShzZWxmLCB0ZXN0ZGlyLCBtYXJrPSIiKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0LCB3YXJuaW5ncworCisg
ICAgICAgICAgICB3YXJuaW5ncy53YXJuKERlcHJlY2F0aW9uV2FybmluZygiY29sbGVjdGlvbiIp
KQorCisgICAgICAgICAgICB7bWFya30KKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAg
ICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZygidGVz
dCBydW4iKSkKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBtYXJrPW1hcmsK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJjdXN0b21pemVfZmlsdGVycyIsIFtUcnVlLCBGYWxzZV0pCisgICAgZGVmIHRlc3Rfc2hvd25f
YnlfZGVmYXVsdChzZWxmLCB0ZXN0ZGlyLCBjdXN0b21pemVfZmlsdGVycyk6CisgICAgICAgICIi
IlNob3cgZGVwcmVjYXRpb24gd2FybmluZ3MgYnkgZGVmYXVsdCwgZXZlbiBpZiB1c2VyIGhhcyBj
dXN0b21pemVkIHRoZSB3YXJuaW5ncyBmaWx0ZXJzICgjNDAxMykuIiIiCisgICAgICAgIHNlbGYu
Y3JlYXRlX2ZpbGUodGVzdGRpcikKKyAgICAgICAgaWYgY3VzdG9taXplX2ZpbHRlcnM6CisgICAg
ICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9CisgICAgICAg
ICAgICAgICAgICAgIG9uY2U6OlVzZXJXYXJuaW5nCisgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAiKj09ICVzID09KiIgJSBXQVJOSU5HU19TVU1NQVJZX0hFQURFUiwKKyAgICAg
ICAgICAgICAgICAiKnRlc3Rfc2hvd25fYnlfZGVmYXVsdC5weTozOiBEZXByZWNhdGlvbldhcm5p
bmc6IGNvbGxlY3Rpb24iLAorICAgICAgICAgICAgICAgICIqdGVzdF9zaG93bl9ieV9kZWZhdWx0
LnB5Ojc6IFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc6IHRlc3QgcnVuIiwKKyAgICAgICAgICAg
ICAgICAiKiAxIHBhc3NlZCwgMiB3YXJuaW5ncyoiLAorICAgICAgICAgICAgXQorICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9oaWRkZW5fYnlfaW5pKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBz
ZWxmLmNyZWF0ZV9maWxlKHRlc3RkaXIpCisgICAgICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAg
ICAgICAgICIiIgorICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgIGZpbHRlcndhcm5p
bmdzID0KKyAgICAgICAgICAgICAgICBpZ25vcmU6OkRlcHJlY2F0aW9uV2FybmluZworICAgICAg
ICAgICAgICAgIGlnbm9yZTo6UGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZworICAgICAgICAiIiIK
KyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNz
KCkKKyAgICAgICAgYXNzZXJ0IFdBUk5JTkdTX1NVTU1BUllfSEVBREVSIG5vdCBpbiByZXN1bHQu
c3Rkb3V0LnN0cigpCisKKyAgICBkZWYgdGVzdF9oaWRkZW5fYnlfbWFyayhzZWxmLCB0ZXN0ZGly
KToKKyAgICAgICAgIiIiU2hvdWxkIGhpZGUgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcgZnJvbSB0
aGUgZnVuY3Rpb24sIGJ1dCB0aGUgd2FybmluZyBkdXJpbmcgY29sbGVjdGlvbiBzaG91bGQKKyAg
ICAgICAgYmUgZGlzcGxheWVkIG5vcm1hbGx5LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5j
cmVhdGVfZmlsZSgKKyAgICAgICAgICAgIHRlc3RkaXIsCisgICAgICAgICAgICBtYXJrPSdAcHl0
ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImlnbm9yZTo6UGVuZGluZ0RlcHJlY2F0aW9uV2Fybmlu
ZyIpJywKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJw
cm9jZXNzKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICIqPT0gJXMgPT0qIiAlIFdBUk5JTkdTX1NVTU1BUllfSEVB
REVSLAorICAgICAgICAgICAgICAgICIqdGVzdF9oaWRkZW5fYnlfbWFyay5weTozOiBEZXByZWNh
dGlvbldhcm5pbmc6IGNvbGxlY3Rpb24iLAorICAgICAgICAgICAgICAgICIqIDEgcGFzc2VkLCAx
IHdhcm5pbmcqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGlk
ZGVuX2J5X2NtZGxpbmUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUo
dGVzdGRpcikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygK
KyAgICAgICAgICAgICItVyIsCisgICAgICAgICAgICAiaWdub3JlOjpEZXByZWNhdGlvbldhcm5p
bmciLAorICAgICAgICAgICAgIi1XIiwKKyAgICAgICAgICAgICJpZ25vcmU6OlBlbmRpbmdEZXBy
ZWNhdGlvbldhcm5pbmciLAorICAgICAgICApCisgICAgICAgIGFzc2VydCBXQVJOSU5HU19TVU1N
QVJZX0hFQURFUiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorCisgICAgZGVmIHRlc3RfaGlk
ZGVuX2J5X3N5c3RlbShzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgICAgIHNlbGYu
Y3JlYXRlX2ZpbGUodGVzdGRpcikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05X
QVJOSU5HUyIsICJvbmNlOjpVc2VyV2FybmluZyIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgICAgICBhc3NlcnQgV0FSTklOR1NfU1VNTUFSWV9I
RUFERVIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoImNoYW5nZV9kZWZhdWx0IiwgW05vbmUsICJpbmkiLCAiY21kbGluZSJdKQorQHB5dGVz
dC5tYXJrLnNraXAoCisgICAgcmVhc29uPSJUaGlzIHRlc3Qgc2hvdWxkIGJlIGVuYWJsZWQgYWdh
aW4gYmVmb3JlIHB5dGVzdCA3LjAgaXMgcmVsZWFzZWQiCispCitkZWYgdGVzdF9kZXByZWNhdGlv
bl93YXJuaW5nX2FzX2Vycm9yKHRlc3RkaXIsIGNoYW5nZV9kZWZhdWx0KToKKyAgICAiIiJUaGlz
IGVuc3VyZXMgdGhhdCBQeXRlc3REZXByZWNhdGlvbldhcm5pbmdzIHJhaXNlZCBieSBweXRlc3Qg
YXJlIHR1cm5lZCBpbnRvIGVycm9ycy4KKworICAgIFRoaXMgdGVzdCBzaG91bGQgYmUgZW5hYmxl
ZCBhcyBwYXJ0IG9mIGVhY2ggbWFqb3IgcmVsZWFzZSwgYW5kIHNraXBwZWQgYWdhaW4gYWZ0ZXJ3
YXJkcworICAgIHRvIGVuc3VyZSBvdXIgZGVwcmVjYXRpb25zIGFyZSB0dXJuaW5nIGludG8gd2Fy
bmluZ3MgYXMgZXhwZWN0ZWQuCisgICAgIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzLCBweXRlc3QKKyAgICAgICAgZGVmIHRl
c3QoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4ocHl0ZXN0LlB5dGVzdERlcHJlY2F0aW9u
V2FybmluZygic29tZSB3YXJuaW5nIikpCisgICAgIiIiCisgICAgKQorICAgIGlmIGNoYW5nZV9k
ZWZhdWx0ID09ICJpbmkiOgorICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9Cisg
ICAgICAgICAgICAgICAgaWdub3JlOjpweXRlc3QuUHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nCisg
ICAgICAgICIiIgorICAgICAgICApCisKKyAgICBhcmdzID0gKAorICAgICAgICAoIi1XaWdub3Jl
OjpweXRlc3QuUHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nIiwpCisgICAgICAgIGlmIGNoYW5nZV9k
ZWZhdWx0ID09ICJjbWRsaW5lIgorICAgICAgICBlbHNlICgpCisgICAgKQorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCphcmdzKQorICAgIGlmIGNoYW5nZV9kZWZhdWx0IGlzIE5vbmU6
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBmYWlsZWQgaW4gKiJd
KQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBjaGFuZ2VfZGVmYXVsdCBpbiAoImluaSIsICJj
bWRsaW5lIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAxIHBhc3Nl
ZCBpbiAqIl0pCisKKworY2xhc3MgVGVzdEFzc2VydGlvbldhcm5pbmdzOgorICAgIEBzdGF0aWNt
ZXRob2QKKyAgICBkZWYgYXNzZXJ0X3Jlc3VsdF93YXJucyhyZXN1bHQsIG1zZyk6CisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipQeXRlc3RBc3NlcnRSZXdyaXRlV2Fybmlu
ZzogJXMqIiAlIG1zZ10pCisKKyAgICBkZWYgdGVzdF90dXBsZV93YXJuaW5nKHNlbGYsIHRlc3Rk
aXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiJcCisgICAg
ICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgKDEsMikKKyAg
ICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRfcmVzdWx0X3dhcm5zKAorICAgICAgICAgICAgcmVz
dWx0LCAiYXNzZXJ0aW9uIGlzIGFsd2F5cyB0cnVlLCBwZXJoYXBzIHJlbW92ZSBwYXJlbnRoZXNl
cz8iCisgICAgICAgICkKKworCitkZWYgdGVzdF93YXJuaW5nc19jaGVja2VyX3R3aWNlKCk6Cisg
ICAgIiIiSXNzdWUgIzQ2MTciIiIKKyAgICBleHBlY3RhdGlvbiA9IHB5dGVzdC53YXJucyhVc2Vy
V2FybmluZykKKyAgICB3aXRoIGV4cGVjdGF0aW9uOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJN
ZXNzYWdlIEEiLCBVc2VyV2FybmluZykKKyAgICB3aXRoIGV4cGVjdGF0aW9uOgorICAgICAgICB3
YXJuaW5ncy53YXJuKCJNZXNzYWdlIEIiLCBVc2VyV2FybmluZykKKworCitAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3MoImlnbm9yZTo6cHl0ZXN0LlB5dGVzdEV4cGVyaW1lbnRhbEFwaVdhcm5p
bmciKQorQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiKQorZGVmIHRlc3RfZ3Jv
dXBfd2FybmluZ3NfYnlfbWVzc2FnZSh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBs
ZSgid2FybmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5IikKKyAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAorICAgICAgICBbCisgICAgICAgICAgICAiKj09ICVzID09KiIgJSBXQVJOSU5HU19TVU1NQVJZ
X0hFQURFUiwKKyAgICAgICAgICAgICJ0ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6
OnRlc3RfZm9vW1tdMFtdXSIsCisgICAgICAgICAgICAidGVzdF9ncm91cF93YXJuaW5nc19ieV9t
ZXNzYWdlLnB5Ojp0ZXN0X2Zvb1tbXTFbXV0iLAorICAgICAgICAgICAgInRlc3RfZ3JvdXBfd2Fy
bmluZ3NfYnlfbWVzc2FnZS5weTo6dGVzdF9mb29bW10yW11dIiwKKyAgICAgICAgICAgICJ0ZXN0
X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6OnRlc3RfZm9vW1tdM1tdXSIsCisgICAgICAg
ICAgICAidGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5Ojp0ZXN0X2Zvb1tbXTRbXV0i
LAorICAgICAgICAgICAgInRlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZS5weTo6dGVzdF9m
b29fMSIsCisgICAgICAgICAgICAiICAqL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZS5w
eToqOiBVc2VyV2FybmluZzogZm9vIiwKKyAgICAgICAgICAgICIgICAgd2FybmluZ3Mud2FybihV
c2VyV2FybmluZyhtc2cpKSIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICJ0ZXN0X2dy
b3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6OnRlc3RfYmFyW1tdMFtdXSIsCisgICAgICAgICAg
ICAidGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5Ojp0ZXN0X2JhcltbXTFbXV0iLAor
ICAgICAgICAgICAgInRlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZS5weTo6dGVzdF9iYXJb
W10yW11dIiwKKyAgICAgICAgICAgICJ0ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6
OnRlc3RfYmFyW1tdM1tdXSIsCisgICAgICAgICAgICAidGVzdF9ncm91cF93YXJuaW5nc19ieV9t
ZXNzYWdlLnB5Ojp0ZXN0X2JhcltbXTRbXV0iLAorICAgICAgICAgICAgIiAgKi90ZXN0X2dyb3Vw
X3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6KjogVXNlcldhcm5pbmc6IGJhciIsCisgICAgICAgICAg
ICAiICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcobXNnKSkiLAorICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAiLS0gRG9jczogKiIsCisgICAgICAgICAgICAiKj0gMTEgcGFzc2VkLCAx
MSB3YXJuaW5ncyAqIiwKKyAgICAgICAgXSwKKyAgICAgICAgY29uc2VjdXRpdmU9VHJ1ZSwKKyAg
ICApCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmU6OnB5dGVzdC5QeXRl
c3RFeHBlcmltZW50YWxBcGlXYXJuaW5nIikKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygi
YWx3YXlzIikKK2RlZiB0ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2Vfc3VtbWFyeSh0ZXN0
ZGlyKToKKyAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgid2FybmluZ3MvdGVzdF9ncm91cF93YXJu
aW5nc19ieV9tZXNzYWdlX3N1bW1hcnkiKQorICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIio9PSAlcyA9PSoiICUgV0FSTklOR1Nf
U1VNTUFSWV9IRUFERVIsCisgICAgICAgICAgICAidGVzdF8xLnB5OiAyMSB3YXJuaW5ncyIsCisg
ICAgICAgICAgICAidGVzdF8yLnB5OiAxIHdhcm5pbmciLAorICAgICAgICAgICAgIiAgKi90ZXN0
XzEucHk6NzogVXNlcldhcm5pbmc6IGZvbyIsCisgICAgICAgICAgICAiICAgIHdhcm5pbmdzLndh
cm4oVXNlcldhcm5pbmcobXNnKSkiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAidGVz
dF8xLnB5OiAyMCB3YXJuaW5ncyIsCisgICAgICAgICAgICAiICAqL3Rlc3RfMS5weTo3OiBVc2Vy
V2FybmluZzogYmFyIiwKKyAgICAgICAgICAgICIgICAgd2FybmluZ3Mud2FybihVc2VyV2Fybmlu
Zyhtc2cpKSIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICItLSBEb2NzOiAqIiwKKyAg
ICAgICAgICAgICIqPSA0MiBwYXNzZWQsIDQyIHdhcm5pbmdzICoiLAorICAgICAgICBdLAorICAg
ICAgICBjb25zZWN1dGl2ZT1UcnVlLAorICAgICkKKworCitkZWYgdGVzdF9weXRlc3RfY29uZmln
dXJlX3dhcm5pbmcodGVzdGRpciwgcmVjd2Fybik6CisgICAgIiIiSXNzdWUgNTExNS4iIiIKKyAg
ICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBweXRlc3Rf
Y29uZmlndXJlKCk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKworICAgICAgICAgICAg
d2FybmluZ3Mud2FybigiZnJvbSBweXRlc3RfY29uZmlndXJlIikKKyAgICAgICAgIiIiCisgICAg
KQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDUKKyAgICBhc3NlcnQgIklOVEVSTkFMRVJST1IiIG5vdCBpbiByZXN1bHQuc3RkZXJy
LnN0cigpCisgICAgd2FybmluZyA9IHJlY3dhcm4ucG9wKCkKKyAgICBhc3NlcnQgc3RyKHdhcm5p
bmcubWVzc2FnZSkgPT0gImZyb20gcHl0ZXN0X2NvbmZpZ3VyZSIKKworCitjbGFzcyBUZXN0U3Rh
Y2tMZXZlbDoKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgY2Fwd2FybihzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgY2xhc3MgQ2FwdHVyZWRXYXJuaW5nczoKKyAgICAgICAgICAgIGNhcHR1
cmVkID0gKAorICAgICAgICAgICAgICAgIFtdCisgICAgICAgICAgICApICAjIHR5cGU6IExpc3Rb
VHVwbGVbd2FybmluZ3MuV2FybmluZ01lc3NhZ2UsIE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50LCBz
dHJdXV1dCisKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIHB5dGVz
dF93YXJuaW5nX3JlY29yZGVkKGNscywgd2FybmluZ19tZXNzYWdlLCB3aGVuLCBub2RlaWQsIGxv
Y2F0aW9uKToKKyAgICAgICAgICAgICAgICBjbHMuY2FwdHVyZWQuYXBwZW5kKCh3YXJuaW5nX21l
c3NhZ2UsIGxvY2F0aW9uKSkKKworICAgICAgICB0ZXN0ZGlyLnBsdWdpbnMgPSBbQ2FwdHVyZWRX
YXJuaW5ncygpXQorCisgICAgICAgIHJldHVybiBDYXB0dXJlZFdhcm5pbmdzCisKKyAgICBkZWYg
dGVzdF9pc3N1ZTQ0NDVfcmV3cml0ZShzZWxmLCB0ZXN0ZGlyLCBjYXB3YXJuKToKKyAgICAgICAg
IiIiIzQ0NDU6IE1ha2Ugc3VyZSB0aGUgd2FybmluZyBwb2ludHMgdG8gYSByZWFzb25hYmxlIGxv
Y2F0aW9uCisgICAgICAgIFNlZSBvcmlnaW4gb2YgX2lzc3VlX3dhcm5pbmdfY2FwdHVyZWQgYXQ6
IF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUucHk6MjQxCisgICAgICAgICIiIgorICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoc29tZV9tb2Q9IiIpCisgICAgICAgIGNvbmZ0ZXN0ID0gdGVzdGRp
ci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQg
c29tZV9tb2QKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgICAg
ICBweXRlc3QucmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoInNvbWVfbW9kIikKKyAgICAgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIucGFyc2Vjb25maWcoKQorCisgICAgICAg
ICMgd2l0aCBzdGFja2xldmVsPTUgdGhlIHdhcm5pbmcgb3JpZ2luYXRlcyBmcm9tIHJlZ2lzdGVy
X2Fzc2VydF9yZXdyaXRlCisgICAgICAgICMgZnVuY3Rpb24gaW4gdGhlIGNyZWF0ZWQgY29uZnRl
c3QucHkKKyAgICAgICAgYXNzZXJ0IGxlbihjYXB3YXJuLmNhcHR1cmVkKSA9PSAxCisgICAgICAg
IHdhcm5pbmcsIGxvY2F0aW9uID0gY2Fwd2Fybi5jYXB0dXJlZC5wb3AoKQorICAgICAgICBmaWxl
LCBsaW5lbm8sIGZ1bmMgPSBsb2NhdGlvbgorCisgICAgICAgIGFzc2VydCAiTW9kdWxlIGFscmVh
ZHkgaW1wb3J0ZWQiIGluIHN0cih3YXJuaW5nLm1lc3NhZ2UpCisgICAgICAgIGFzc2VydCBmaWxl
ID09IHN0cihjb25mdGVzdCkKKyAgICAgICAgYXNzZXJ0IGZ1bmMgPT0gIjxtb2R1bGU+IiAgIyB0
aGUgYWJvdmUgY29uZnRlc3QucHkKKyAgICAgICAgYXNzZXJ0IGxpbmVubyA9PSA0CisKKyAgICBk
ZWYgdGVzdF9pc3N1ZTQ0NDVfcHJlcGFyc2Uoc2VsZiwgdGVzdGRpciwgY2Fwd2Fybik6CisgICAg
ICAgICIiIiM0NDQ1OiBNYWtlIHN1cmUgdGhlIHdhcm5pbmcgcG9pbnRzIHRvIGEgcmVhc29uYWJs
ZSBsb2NhdGlvbgorICAgICAgICBTZWUgb3JpZ2luIG9mIF9pc3N1ZV93YXJuaW5nX2NhcHR1cmVk
IGF0OiBfcHl0ZXN0LmNvbmZpZy5fX2luaXRfXy5weTo5MTAKKyAgICAgICAgIiIiCisgICAgICAg
IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBv
cnQgbm90aGluZworICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5w
YXJzZWNvbmZpZygiLS1oZWxwIikKKworICAgICAgICAjIHdpdGggc3RhY2tsZXZlbD0yIHRoZSB3
YXJuaW5nIHNob3VsZCBvcmlnaW5hdGUgZnJvbSBjb25maWcuX3ByZXBhcnNlIGFuZCBpcworICAg
ICAgICAjIHRocm93biBieSBhbiBlcnJvcm5lb3VzIGNvbmZ0ZXN0LnB5CisgICAgICAgIGFzc2Vy
dCBsZW4oY2Fwd2Fybi5jYXB0dXJlZCkgPT0gMQorICAgICAgICB3YXJuaW5nLCBsb2NhdGlvbiA9
IGNhcHdhcm4uY2FwdHVyZWQucG9wKCkKKyAgICAgICAgZmlsZSwgXywgZnVuYyA9IGxvY2F0aW9u
CisKKyAgICAgICAgYXNzZXJ0ICJjb3VsZCBub3QgbG9hZCBpbml0aWFsIGNvbmZ0ZXN0cyIgaW4g
c3RyKHdhcm5pbmcubWVzc2FnZSkKKyAgICAgICAgYXNzZXJ0ICJjb25maWd7c2VwfV9faW5pdF9f
LnB5Ii5mb3JtYXQoc2VwPW9zLnNlcCkgaW4gZmlsZQorICAgICAgICBhc3NlcnQgZnVuYyA9PSAi
X3ByZXBhcnNlIgorCisgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikK
KyAgICBkZWYgdGVzdF9jb25mdGVzdF93YXJuaW5nX2NhcHR1cmVkKHNlbGYsIHRlc3RkaXI6IFRl
c3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIldhcm5pbmdzIHJhaXNlZCBkdXJpbmcgaW1wb3J0
aW5nIG9mIGNvbmZ0ZXN0LnB5IGZpbGVzIGlzIGNhcHR1cmVkICgjMjg5MSkuIiIiCisgICAgICAg
IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBv
cnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoIm15IGN1
c3RvbSB3YXJuaW5nIikpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgIFsiY29uZnRlc3QucHk6MiIsICIqVXNlcldhcm5pbmc6IG15IGN1
c3RvbSB3YXJuaW5nKiJdCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2lzc3VlNDQ0NV9pbXBv
cnRfcGx1Z2luKHNlbGYsIHRlc3RkaXIsIGNhcHdhcm4pOgorICAgICAgICAiIiIjNDQ0NTogTWFr
ZSBzdXJlIHRoZSB3YXJuaW5nIHBvaW50cyB0byBhIHJlYXNvbmFibGUgbG9jYXRpb24iIiIKKyAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgc29tZV9wbHVnaW49IiIiCisg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBweXRlc3Quc2tpcCgidGhpbmci
LCBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSkKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisg
ICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisgICAgICAgIHRlc3RkaXIucGFyc2Vjb25m
aWcoIi1wIiwgInNvbWVfcGx1Z2luIikKKworICAgICAgICAjIHdpdGggc3RhY2tsZXZlbD0yIHRo
ZSB3YXJuaW5nIHNob3VsZCBvcmlnaW5hdGUgZnJvbQorICAgICAgICAjIGNvbmZpZy5QeXRlc3RQ
bHVnaW5NYW5hZ2VyLmltcG9ydF9wbHVnaW4gaXMgdGhyb3duIGJ5IGEgc2tpcHBlZCBwbHVnaW4K
KworICAgICAgICBhc3NlcnQgbGVuKGNhcHdhcm4uY2FwdHVyZWQpID09IDEKKyAgICAgICAgd2Fy
bmluZywgbG9jYXRpb24gPSBjYXB3YXJuLmNhcHR1cmVkLnBvcCgpCisgICAgICAgIGZpbGUsIF8s
IGZ1bmMgPSBsb2NhdGlvbgorCisgICAgICAgIGFzc2VydCAic2tpcHBlZCBwbHVnaW4gJ3NvbWVf
cGx1Z2luJzogdGhpbmciIGluIHN0cih3YXJuaW5nLm1lc3NhZ2UpCisgICAgICAgIGFzc2VydCAi
Y29uZmlne3NlcH1fX2luaXRfXy5weSIuZm9ybWF0KHNlcD1vcy5zZXApIGluIGZpbGUKKyAgICAg
ICAgYXNzZXJ0IGZ1bmMgPT0gIl93YXJuX2Fib3V0X3NraXBwZWRfcGx1Z2lucyIKKworICAgIGRl
ZiB0ZXN0X2lzc3VlNDQ0NV9pc3N1ZTU5MjhfbWFya19nZW5lcmF0b3Ioc2VsZiwgdGVzdGRpcik6
CisgICAgICAgICIiIiM0NDQ1IGFuZCAjNTkyODogTWFrZSBzdXJlIHRoZSB3YXJuaW5nIGZyb20g
YW4gdW5rbm93biBtYXJrIHBvaW50cyB0bworICAgICAgICB0aGUgdGVzdCBmaWxlIHdoZXJlIHRo
aXMgbWFyayBpcyB1c2VkLgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGZpbGUgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
KworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnVua25vd24KKyAgICAgICAgICAgIGRlZiB0ZXN0
X2l0KCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiCisgICAgICAgICkK
KyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgICAg
ICMgd2l0aCBzdGFja2xldmVsPTIgdGhlIHdhcm5pbmcgc2hvdWxkIG9yaWdpbmF0ZSBmcm9tIHRo
ZSBhYm92ZSBjcmVhdGVkIHRlc3QgZmlsZQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXNfcmFuZG9tKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICIqe3Rlc3RmaWxl
fTozKiIuZm9ybWF0KHRlc3RmaWxlPXN0cih0ZXN0ZmlsZSkpLAorICAgICAgICAgICAgICAgICIq
VW5rbm93biBweXRlc3QubWFyay51bmtub3duKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdHlwaW5nX2NoZWNrcy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvdHlwaW5nX2NoZWNrcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjBhNmI1YWQyODQxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdHlwaW5nX2NoZWNrcy5weQpAQCAtMCwwICsxLDI0IEBACisiIiJGaWxlIGZv
ciBjaGVja2luZyB0eXBpbmcgaXNzdWVzLgorCitUaGlzIGZpbGUgaXMgbm90IGV4ZWN1dGVkLCBp
dCBpcyBvbmx5IGNoZWNrZWQgYnkgbXlweSB0byBlbnN1cmUgdGhhdAorbm9uZSBvZiB0aGUgY29k
ZSB0cmlnZ2VycyBhbnkgbXlweSBlcnJvcnMuCisiIiIKK2ltcG9ydCBweXRlc3QKKworCisjIElz
c3VlICM3NDg4LgorQHB5dGVzdC5tYXJrLnhmYWlsKHJhaXNlcz1SdW50aW1lRXJyb3IpCitkZWYg
Y2hlY2tfbWFya194ZmFpbF9yYWlzZXMoKSAtPiBOb25lOgorICAgIHBhc3MKKworCisjIElzc3Vl
ICM3NDk0LgorQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bKDAsIDApLCAoMSwgMSldLCBpZHM9bGFt
YmRhIHg6IHN0cih4WzBdKSkKK2RlZiBjaGVja19maXh0dXJlX2lkc19jYWxsYWJsZSgpIC0+IE5v
bmU6CisgICAgcGFzcworCisKKyMgSXNzdWUgIzc0OTQuCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoImZ1bmMiLCBbc3RyLCBpbnRdLCBpZHM9bGFtYmRhIHg6IHN0cih4Ll9fbmFtZV9fKSkKK2Rl
ZiBjaGVja19wYXJhbWV0cml6ZV9pZHNfY2FsbGFibGUoZnVuYykgLT4gTm9uZToKKyAgICBwYXNz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYmU3NzdhOTJjMzdjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvYWNjZXB0YW5jZV90ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9kZXByZWNhdGVkX3Rlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXJnY29tcGxl
dGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNzZXJ0aW9uLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy90ZXN0X2Fzc2VydHJld3JpdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rl
c3RfY2FjaGVwcm92aWRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jYXB0dXJlLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbGxlY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbmZpZy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvdGVzdF9kb2N0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2VudHJ5X3Bv
aW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9oZWxwY29uZmlnLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X2p1bml0eG1sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X21hcmsucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbW9kaW1wb3J0LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X21vbmtleXBhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X25vZGVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X25vc2UucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfcGFyc2VvcHQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
cGFzdGViaW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcGRiLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy90ZXN0X3BsdWdpbm1hbmFnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rl
c3RfcHl0ZXN0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVjd2Fybi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9yZXN1bHRsb2cucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfcnVubmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3J1bm5lcl94dW5pdC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9zZXNzaW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X3NraXBwaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Rlcm1pbmFs
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3RtcGRpci5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvdGVzdF91bml0dGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF93YXJuaW5n
cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3RveC5p
bmkKaW5kZXggY2IzODQ2ZDU0MjJhLi5iNDJhZWNkZjg1Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdG94LmluaQpAQCAtMSwyMTIgKzEsMjEyIEBA
CiBbdG94XQotbWludmVyc2lvbiA9IDIuMAoraXNvbGF0ZWRfYnVpbGQgPSBUcnVlCittaW52ZXJz
aW9uID0gMy41LjMKIGRpc3RzaGFyZSA9IHtob21lZGlyfS8udG94L2Rpc3RzaGFyZQogIyBtYWtl
IHN1cmUgdG8gdXBkYXRlIGVudmlyb25tZW50IGxpc3QgaW4gdHJhdmlzLnltbCBhbmQgYXBwdmV5
b3IueW1sCiBlbnZsaXN0ID0KICAgICBsaW50aW5nCi0gICAgcHkyNwotICAgIHB5MzQKICAgICBw
eTM1CiAgICAgcHkzNgogICAgIHB5MzcKLSAgICBweXB5Ci0gICAge3B5MjcscHkzNn0te3BleHBl
Y3QseGRpc3QsdHJpYWwsbnVtcHkscGx1Z2d5bWFzdGVyfQotICAgIHB5Mjctbm9ieXRlCisgICAg
cHkzOAorICAgIHB5MzkKKyAgICBweXB5MworICAgIHB5Mzcte3BleHBlY3QseGRpc3QsdW5pdHRl
c3RleHRyYXMsbnVtcHkscGx1Z2d5bWFzdGVyfQogICAgIGRvY3Rlc3RpbmcKLSAgICBweTM2LWZy
ZWV6ZQorICAgIHBsdWdpbnMKKyAgICBweTM3LWZyZWV6ZQogICAgIGRvY3MKKyAgICBkb2NzLWNo
ZWNrbGlua3MKIAogW3Rlc3RlbnZdCi1jb21tYW5kcyA9IHB5dGVzdCAtLWxzb2YgLXJhIHtwb3Nh
cmdzOnRlc3Rpbmd9Ci1wYXNzZW52ID0gVVNFUiBVU0VSTkFNRQotZGVwcyA9Ci0gICAgaHlwb3Ro
ZXNpcz49My41NgotICAgIG5vc2UKLSAgICBtb2NrCi0gICAgcmVxdWVzdHMKLQotW3Rlc3RlbnY6
cHkyNy1zdWJwcm9jZXNzXQotY2hhbmdlZGlyID0gLgotZGVwcyA9Ci0gICAgcHl0ZXN0LXhkaXN0
Pj0xLjEzCi0gICAgbW9jawotICAgIG5vc2UKIGNvbW1hbmRzID0KLSAgICBweXRlc3QgLW4zIC1y
YSAtLXJ1bnB5dGVzdD1zdWJwcm9jZXNzIHtwb3NhcmdzOnRlc3Rpbmd9Ci0KLQotW3Rlc3RlbnY6
bGludGluZ10KLXNraXBzZGlzdCA9IFRydWUKLXVzZWRldmVsb3AgPSBUcnVlCi1iYXNlcHl0aG9u
ID0gcHl0aG9uMy42Ci1kZXBzID0gcHJlLWNvbW1pdAotY29tbWFuZHMgPSBwcmUtY29tbWl0IHJ1
biAtLWFsbC1maWxlcyAtLXNob3ctZGlmZi1vbi1mYWlsdXJlCisgICAge2VudjpfUFlURVNUX1RP
WF9DT1ZFUkFHRV9SVU46fSBweXRlc3Qge3Bvc2FyZ3M6e2VudjpfUFlURVNUX1RPWF9ERUZBVUxU
X1BPU0FSR1M6fX0KKyAgICBkb2N0ZXN0aW5nOiB7ZW52Ol9QWVRFU1RfVE9YX0NPVkVSQUdFX1JV
Tjp9IHB5dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcyAtLXB5YXJncyBfcHl0ZXN0CisgICAgY292ZXJh
Z2U6IGNvdmVyYWdlIGNvbWJpbmUKKyAgICBjb3ZlcmFnZTogY292ZXJhZ2UgcmVwb3J0IC1tCitw
YXNzZW52ID0gVVNFUiBVU0VSTkFNRSBDT1ZFUkFHRV8qIFRSQVZJUyBQWVRFU1RfQURET1BUUyBU
RVJNCitzZXRlbnYgPQorICAgIF9QWVRFU1RfVE9YX0RFRkFVTFRfUE9TQVJHUz17ZW52Ol9QWVRF
U1RfVE9YX1BPU0FSR1NfRE9DVEVTVElORzp9IHtlbnY6X1BZVEVTVF9UT1hfUE9TQVJHU19MU09G
On0ge2VudjpfUFlURVNUX1RPWF9QT1NBUkdTX1hESVNUOn0KIAotW3Rlc3RlbnY6cHkyNy14ZGlz
dF0KLWRlcHMgPQotICAgIHB5dGVzdC14ZGlzdD49MS4xMwotICAgIG1vY2sKLSAgICBub3NlCi0g
ICAgaHlwb3RoZXNpcz49My41NgotY2hhbmdlZGlyPXRlc3RpbmcKLWNvbW1hbmRzID0KLSAgICBw
eXRlc3QgLW44IC1yYSB7cG9zYXJnczoufQorICAgICMgQ29uZmlndXJhdGlvbiB0byBydW4gd2l0
aCBjb3ZlcmFnZSBzaW1pbGFyIHRvIENJLCBlLmcuCisgICAgIyAidG94IC1lIHB5MzctY292ZXJh
Z2UiLgorICAgIGNvdmVyYWdlOiBfUFlURVNUX1RPWF9DT1ZFUkFHRV9SVU49Y292ZXJhZ2UgcnVu
IC1tCisgICAgY292ZXJhZ2U6IF9QWVRFU1RfVE9YX0VYVFJBX0RFUD1jb3ZlcmFnZS1lbmFibGUt
c3VicHJvY2VzcworICAgIGNvdmVyYWdlOiBDT1ZFUkFHRV9GSUxFPXt0b3hpbmlkaXJ9Ly5jb3Zl
cmFnZQorICAgIGNvdmVyYWdlOiBDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUPXt0b3hpbmlkaXJ9Ly5j
b3ZlcmFnZXJjCiAKLVt0ZXN0ZW52OnB5MzYteGRpc3RdCi1kZXBzID0ge1t0ZXN0ZW52OnB5Mjct
eGRpc3RdZGVwc30KLWNvbW1hbmRzID0ge1t0ZXN0ZW52OnB5MjcteGRpc3RdY29tbWFuZHN9Cisg
ICAgZG9jdGVzdGluZzogX1BZVEVTVF9UT1hfUE9TQVJHU19ET0NURVNUSU5HPWRvYy9lbgogCi1b
dGVzdGVudjpweTI3LXBleHBlY3RdCi1jaGFuZ2VkaXIgPSB0ZXN0aW5nCi1wbGF0Zm9ybSA9IGxp
bnV4fGRhcndpbgotZGVwcyA9IHBleHBlY3QKLWNvbW1hbmRzID0KLSAgICBweXRlc3QgLXJhIHRl
c3RfcGRiLnB5IHRlc3RfdGVybWluYWwucHkgdGVzdF91bml0dGVzdC5weQorICAgIG5vYnl0ZTog
UFlUSE9ORE9OVFdSSVRFQllURUNPREU9MQogCi1bdGVzdGVudjpweTM2LXBleHBlY3RdCi1jaGFu
Z2VkaXIgPSB7W3Rlc3RlbnY6cHkyNy1wZXhwZWN0XWNoYW5nZWRpcn0KLXBsYXRmb3JtID0ge1t0
ZXN0ZW52OnB5MjctcGV4cGVjdF1wbGF0Zm9ybX0KLWRlcHMgPSB7W3Rlc3RlbnY6cHkyNy1wZXhw
ZWN0XWRlcHN9Ci1jb21tYW5kcyA9IHtbdGVzdGVudjpweTI3LXBleHBlY3RdY29tbWFuZHN9Cisg
ICAgbHNvZjogX1BZVEVTVF9UT1hfUE9TQVJHU19MU09GPS0tbHNvZgogCi1bdGVzdGVudjpweTI3
LW5vYnl0ZV0KKyAgICB4ZGlzdDogX1BZVEVTVF9UT1hfUE9TQVJHU19YRElTVD0tbiBhdXRvCitl
eHRyYXMgPSB0ZXN0aW5nCiBkZXBzID0KLSAgICBweXRlc3QteGRpc3Q+PTEuMTMKLSAgICBoeXBv
dGhlc2lzPj0zLjU2Ci0gICAgbW9jawotZGlzdHJpYnV0ZSA9IHRydWUKLWNoYW5nZWRpcj10ZXN0
aW5nCi1zZXRlbnYgPQotICAgIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEKLWNvbW1hbmRzID0K
LSAgICBweXRlc3QgLW4zIC1yYSB7cG9zYXJnczoufQotCi1bdGVzdGVudjpweTI3LXRyaWFsXQot
ZGVwcyA9IHR3aXN0ZWQKLWNvbW1hbmRzID0KLSAgICBweXRlc3QgLXJhIHtwb3NhcmdzOnRlc3Rp
bmcvdGVzdF91bml0dGVzdC5weX0KKyAgICBkb2N0ZXN0aW5nOiBQeVlBTUwKKyAgICBvbGRhdHRy
czogYXR0cnM9PTE3LjQuMAorICAgIG9sZGF0dHJzOiBoeXBvdGhlc2lzPD00LjM4LjEKKyAgICBu
dW1weTogbnVtcHkKKyAgICBwZXhwZWN0OiBwZXhwZWN0CisgICAgcGx1Z2d5bWFzdGVyOiBnaXQr
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5LmdpdEBtYXN0ZXIKKyAgICBweWdt
ZW50cworICAgIHVuaXR0ZXN0ZXh0cmFzOiB0d2lzdGVkCisgICAgdW5pdHRlc3RleHRyYXM6IGFz
eW5jdGVzdAorICAgIHhkaXN0OiBweXRlc3QteGRpc3Q+PTEuMTMKKyAgICB7ZW52Ol9QWVRFU1Rf
VE9YX0VYVFJBX0RFUDp9CiAKLVt0ZXN0ZW52OnB5MzYtdHJpYWxdCi1kZXBzID0ge1t0ZXN0ZW52
OnB5MjctdHJpYWxdZGVwc30KLWNvbW1hbmRzID0ge1t0ZXN0ZW52OnB5MjctdHJpYWxdY29tbWFu
ZHN9Ci0KLVt0ZXN0ZW52OnB5MjctbnVtcHldCi1kZXBzID0gbnVtcHkKLWNvbW1hbmRzPQotICBw
eXRlc3QgLXJhIHtwb3NhcmdzOnRlc3RpbmcvcHl0aG9uL2FwcHJveC5weX0KK1t0ZXN0ZW52Omxp
bnRpbmddCitza2lwX2luc3RhbGwgPSBUcnVlCitiYXNlcHl0aG9uID0gcHl0aG9uMworZGVwcyA9
IHByZS1jb21taXQ+PTEuMTEuMAorY29tbWFuZHMgPSBwcmUtY29tbWl0IHJ1biAtLWFsbC1maWxl
cyAtLXNob3ctZGlmZi1vbi1mYWlsdXJlIHtwb3NhcmdzOn0KIAotW3Rlc3RlbnY6cHkzNi1udW1w
eV0KLWRlcHMgPSB7W3Rlc3RlbnY6cHkyNy1udW1weV1kZXBzfQotY29tbWFuZHMgPSB7W3Rlc3Rl
bnY6cHkyNy1udW1weV1jb21tYW5kc30KK1t0ZXN0ZW52Om15cHldCitleHRyYXMgPSBjaGVja3Fh
LW15cHksIHRlc3RpbmcKK2NvbW1hbmRzID0gbXlweSB7cG9zYXJnczpzcmMgdGVzdGluZ30KIAot
W3Rlc3RlbnY6cHkyNy1wbHVnZ3ltYXN0ZXJdCi1zZXRlbnY9Ci0gICAgX1BZVEVTVF9TRVRVUF9T
S0lQX1BMVUdHWV9ERVA9MQorW3Rlc3RlbnY6bXlweS1kaWZmXQorZXh0cmFzID0gY2hlY2txYS1t
eXB5LCB0ZXN0aW5nCiBkZXBzID0KLSAgICB7W3Rlc3RlbnZdZGVwc30KLSAgICBnaXQraHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5LmdpdEBtYXN0ZXIKLQotW3Rlc3RlbnY6cHkz
Ni1wbHVnZ3ltYXN0ZXJdCi1zZXRlbnYgPSB7W3Rlc3RlbnY6cHkyNy1wbHVnZ3ltYXN0ZXJdc2V0
ZW52fQotZGVwcyA9IHtbdGVzdGVudjpweTI3LXBsdWdneW1hc3Rlcl1kZXBzfQorICAgIGx4bWwK
KyAgICBkaWZmLWNvdmVyCitjb21tYW5kcyA9CisgIC1teXB5IC0tY29iZXJ0dXJhLXhtbC1yZXBv
cnQge2VudnRtcGRpcn0ge3Bvc2FyZ3M6c3JjIHRlc3Rpbmd9CisgIGRpZmYtY292ZXIgLS1mYWls
LXVuZGVyPTEwMCAtLWNvbXBhcmUtYnJhbmNoPXtlbnY6RElGRl9CUkFOQ0g6b3JpZ2luL3tlbnY6
R0lUSFVCX0JBU0VfUkVGOm1hc3Rlcn19IHtlbnZ0bXBkaXJ9L2NvYmVydHVyYS54bWwKIAogW3Rl
c3RlbnY6ZG9jc10KLXNraXBzZGlzdCA9IFRydWUKK2Jhc2VweXRob24gPSBweXRob24zCiB1c2Vk
ZXZlbG9wID0gVHJ1ZQotY2hhbmdlZGlyID0gZG9jL2VuCiBkZXBzID0KLSAgICBhdHRycwotICAg
IG1vcmUtaXRlcnRvb2xzCi0gICAgUHlZQU1MCi0gICAgc3BoaW54Ci0gICAgc3BoaW54Y29udHJp
Yi10cmlvCi0KKyAgICAtcnt0b3hpbmlkaXJ9L2RvYy9lbi9yZXF1aXJlbWVudHMudHh0CisgICAg
dG93bmNyaWVyCiBjb21tYW5kcyA9Ci0gICAgc3BoaW54LWJ1aWxkIC1XIC1iIGh0bWwgLiBfYnVp
bGQKLQotW3Rlc3RlbnY6ZG9jdGVzdGluZ10KLWJhc2VweXRob24gPSBweXRob24KKyAgICBweXRo
b24gc2NyaXB0cy90b3duY3JpZXItZHJhZnQtdG8tZmlsZS5weQorICAgICMgdGhlICctdCBjaGFu
Z2Vsb2dfdG93bmNyaWVyX2RyYWZ0JyB0YWdzIG1ha2VzIHNwaGlueCBpbmNsdWRlIHRoZSBkcmFm
dAorICAgICMgY2hhbmdlbG9nIGluIHRoZSBkb2NzOyB0aGlzIGRvZXMgbm90IGhhcHBlbiBvbiBS
ZWFkVGhlRG9jcyBiZWNhdXNlIGl0IHVzZXMKKyAgICAjIHRoZSBzdGFuZGFyZCBzcGhpbnggY29t
bWFuZCBzbyB0aGUgJ2NoYW5nZWxvZ190b3duY3JpZXJfZHJhZnQnIGlzIG5ldmVyIHNldCB0aGVy
ZQorICAgIHNwaGlueC1idWlsZCAtVyAtLWtlZXAtZ29pbmcgLWIgaHRtbCBkb2MvZW4gZG9jL2Vu
L19idWlsZC9odG1sIC10IGNoYW5nZWxvZ190b3duY3JpZXJfZHJhZnQge3Bvc2FyZ3M6fQorCitb
dGVzdGVudjpkb2NzLWNoZWNrbGlua3NdCitiYXNlcHl0aG9uID0gcHl0aG9uMwogdXNlZGV2ZWxv
cCA9IFRydWUKLXNraXBzZGlzdCA9IFRydWUKLSMgZW5zdXJlIHRoZSBnaXZlbiBweWFyZ3MgY2Fu
J3QgbWVhbiBhbnl0aGluZyBlbHNlCi1jaGFuZ2VkaXIgPSBkb2MvCi1kZXBzID0KLSAgICBQeVlB
TUwKK2NoYW5nZWRpciA9IGRvYy9lbgorZGVwcyA9IC1ye3RveGluaWRpcn0vZG9jL2VuL3JlcXVp
cmVtZW50cy50eHQKIGNvbW1hbmRzID0KLSAgICBweXRlc3QgLXJhIGVuCi0gICAgcHl0ZXN0IC0t
ZG9jdGVzdC1tb2R1bGVzIC0tcHlhcmdzIF9weXRlc3QKKyAgICBzcGhpbngtYnVpbGQgLVcgLXEg
LS1rZWVwLWdvaW5nIC1iIGxpbmtjaGVjayAuIF9idWlsZAogCiBbdGVzdGVudjpyZWdlbl0KIGNo
YW5nZWRpciA9IGRvYy9lbgotc2tpcHNkaXN0ID0gVHJ1ZQotYmFzZXB5dGhvbiA9IHB5dGhvbjMu
NQorYmFzZXB5dGhvbiA9IHB5dGhvbjMKK3Bhc3NlbnYgPSBTRVRVUFRPT0xTX1NDTV9QUkVURU5E
X1ZFUlNJT04KIGRlcHMgPQotICAgIHNwaGlueAorICAgIGRhdGFjbGFzc2VzCiAgICAgUHlZQU1M
CiAgICAgcmVnZW5kb2M+PTAuNi4xCisgICAgc3BoaW54CiB3aGl0ZWxpc3RfZXh0ZXJuYWxzID0K
ICAgICBybQogICAgIG1ha2UKIGNvbW1hbmRzID0KKyAgICAjIGRvbid0IHNob3cgaHlwb3RoZXNp
cyBwbHVnaW4gaW5mbyBpbiBkb2NzLCBzZWUgIzQ2MDIKKyAgICBwaXAgdW5pbnN0YWxsIGh5cG90
aGVzaXMgLXkKICAgICBybSAtcmYgL3RtcC9kb2MtZXhlYyoKKyAgICBybSAtcmYge2VudmRpcn0v
LnB5dGVzdF9jYWNoZQogICAgIG1ha2UgcmVnZW4KIAotW3Rlc3RlbnY6Zml4LWxpbnRdCi1za2lw
c2Rpc3QgPSBUcnVlCi11c2VkZXZlbG9wID0gVHJ1ZQorW3Rlc3RlbnY6cGx1Z2luc10KKyMgdXNl
IGxhdGVzdCB2ZXJzaW9ucyBvZiBhbGwgcGx1Z2lucywgaW5jbHVkaW5nIHByZS1yZWxlYXNlcwor
cGlwX3ByZT10cnVlCisjIHVzZSBsYXRlc3QgcGlwIGFuZCBuZXcgZGVwZW5kZW5jeSByZXNvbHZl
ciAoIzc3ODMpCitkb3dubG9hZD10cnVlCitpbnN0YWxsX2NvbW1hbmQ9cHl0aG9uIC1tIHBpcCAt
LXVzZS1mZWF0dXJlPTIwMjAtcmVzb2x2ZXIgaW5zdGFsbCB7b3B0c30ge3BhY2thZ2VzfQorY2hh
bmdlZGlyID0gdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uCiBkZXBzID0KLSAgICBhdXRvcGVw
OAotY29tbWFuZHMgPQotICAgIGF1dG9wZXA4IC0taW4tcGxhY2UgLXIgLS1tYXgtbGluZS1sZW5n
dGg9MTIwIC0tZXhjbHVkZT10ZXN0X3NvdXJjZV9tdWx0aWxpbmVfYmxvY2sucHkgX3B5dGVzdCB0
ZXN0aW5nIHNldHVwLnB5IHB5dGVzdC5weQotCi1bdGVzdGVudjpqeXRob25dCi1jaGFuZ2VkaXIg
PSB0ZXN0aW5nCisgICAgYW55aW9bY3VyaW8sdHJpb10KKyAgICBkamFuZ28KKyAgICBweXRlc3Qt
YXN5bmNpbworICAgIHB5dGVzdC1iZGQKKyAgICBweXRlc3QtY292CisgICAgcHl0ZXN0LWRqYW5n
bworICAgIHB5dGVzdC1mbGFrZXMKKyAgICBweXRlc3QtaHRtbAorICAgIHB5dGVzdC1tb2NrCisg
ICAgcHl0ZXN0LXN1Z2FyCisgICAgcHl0ZXN0LXRyaW8KKyAgICBweXRlc3QtdHdpc3RlZAorICAg
IHR3aXN0ZWQKKyAgICBweXRlc3QteHZmYgorc2V0ZW52ID0KKyAgICBQWVRIT05QQVRIPS4KIGNv
bW1hbmRzID0KLSAgICB7ZW52cHl0aG9ufSB7ZW52YmluZGlyfS9weS50ZXN0LWp5dGhvbiAtcmEg
e3Bvc2FyZ3N9Ci0KLVt0ZXN0ZW52OnB5MzYtZnJlZXplXQorICAgIHBpcCBjaGVjaworICAgIHB5
dGVzdCBiZGRfd2FsbGV0LnB5CisgICAgcHl0ZXN0IC0tY292PS4gc2ltcGxlX2ludGVncmF0aW9u
LnB5CisgICAgcHl0ZXN0IC0tZHM9ZGphbmdvX3NldHRpbmdzIHNpbXBsZV9pbnRlZ3JhdGlvbi5w
eQorICAgIHB5dGVzdCAtLWh0bWw9c2ltcGxlLmh0bWwgc2ltcGxlX2ludGVncmF0aW9uLnB5Cisg
ICAgcHl0ZXN0IHB5dGVzdF9hbnlpb19pbnRlZ3JhdGlvbi5weQorICAgIHB5dGVzdCBweXRlc3Rf
YXN5bmNpb19pbnRlZ3JhdGlvbi5weQorICAgIHB5dGVzdCBweXRlc3RfbW9ja19pbnRlZ3JhdGlv
bi5weQorICAgIHB5dGVzdCBweXRlc3RfdHJpb19pbnRlZ3JhdGlvbi5weQorICAgIHB5dGVzdCBw
eXRlc3RfdHdpc3RlZF9pbnRlZ3JhdGlvbi5weQorICAgIHB5dGVzdCBzaW1wbGVfaW50ZWdyYXRp
b24ucHkgLS1mb3JjZS1zdWdhciAtLWZsYWtlcworCitbdGVzdGVudjpweTM3LWZyZWV6ZV0KIGNo
YW5nZWRpciA9IHRlc3RpbmcvZnJlZXplCi1kZXBzID0gcHlpbnN0YWxsZXIKK2RlcHMgPQorICAg
IHB5aW5zdGFsbGVyCiBjb21tYW5kcyA9CiAgICAge2VudnB5dGhvbn0gY3JlYXRlX2V4ZWN1dGFi
bGUucHkKICAgICB7ZW52cHl0aG9ufSB0b3hfcnVuLnB5CiAKLQotW3Rlc3RlbnY6Y292ZXJhbGxz
XQotcGFzc2VudiA9IFRSQVZJUyBUUkFWSVNfSk9CX0lEIFRSQVZJU19CUkFOQ0ggQ09WRVJBTExT
X1JFUE9fVE9LRU4KK1t0ZXN0ZW52OnJlbGVhc2VdCitkZWNyaXB0aW9uID0gZG8gYSByZWxlYXNl
LCByZXF1aXJlZCBwb3Nhcmcgb2YgdGhlIHZlcnNpb24gbnVtYmVyCitiYXNlcHl0aG9uID0gcHl0
aG9uMwogdXNlZGV2ZWxvcCA9IFRydWUKLWNoYW5nZWRpciA9IC4KK3Bhc3NlbnYgPSAqCiBkZXBz
ID0KLSAgICB7W3Rlc3RlbnZdZGVwc30KLSAgICBjb3ZlcmFsbHMKLWNvbW1hbmRzID0KLSAgICBj
b3ZlcmFnZSBydW4gLS1zb3VyY2U9X3B5dGVzdCAtbSBweXRlc3QgdGVzdGluZwotICAgIGNvdmVy
YWdlIHJlcG9ydCAtbQotICAgIGNvdmVyYWxscwotCi1bcHl0ZXN0XQotbWludmVyc2lvbiA9IDIu
MAotcGx1Z2lucyA9IHB5dGVzdGVyCi1hZGRvcHRzID0gLXJhIC1wIHB5dGVzdGVyIC0taWdub3Jl
PXRlc3RpbmcvY3hfZnJlZXplCi1yc3luY2RpcnMgPSB0b3guaW5pIHB5dGVzdC5weSBfcHl0ZXN0
IHRlc3RpbmcKLXB5dGhvbl9maWxlcyA9IHRlc3RfKi5weSAqX3Rlc3QucHkgdGVzdGluZy8qLyou
cHkKLXB5dGhvbl9jbGFzc2VzID0gVGVzdCBBY2NlcHRhbmNlCi1weXRob25fZnVuY3Rpb25zID0g
dGVzdAotbm9yZWN1cnNlZGlycyA9IC50b3ggamEgLmhnIGN4X2ZyZWV6ZV9zb3VyY2UKLXhmYWls
X3N0cmljdD10cnVlCi1maWx0ZXJ3YXJuaW5ncyA9Ci0gICAgZXJyb3IKLSAgICAjIHByb2R1Y2Vk
IGJ5IHBhdGgubG9jYWwKLSAgICBpZ25vcmU6YmFkIGVzY2FwZS4qOkRlcHJlY2F0aW9uV2Fybmlu
ZzpyZQotICAgICMgcHJvZHVjZWQgYnkgcGF0aC5yZWFkbGluZXMKLSAgICBpZ25vcmU6LipVLipt
b2RlIGlzIGRlcHJlY2F0ZWQ6RGVwcmVjYXRpb25XYXJuaW5nCi0gICAgIyBwcm9kdWNlZCBieSBw
eXRlc3QteGRpc3QKLSAgICBpZ25vcmU6Lip0eXBlIGFyZ3VtZW50IHRvIGFkZG9wdGlvbi4qOkRl
cHJlY2F0aW9uV2FybmluZwotICAgICMgcHJvZHVjZWQgYnkgcHl0aG9uID49My41IG9uIGV4ZWNu
ZXQgKHB5dGVzdC14ZGlzdCkKLSAgICBpZ25vcmU6LippbnNwZWN0LmdldGFyZ3NwZWMuKmRlcHJl
Y2F0ZWQsIHVzZSBpbnNwZWN0LnNpZ25hdHVyZS4qOkRlcHJlY2F0aW9uV2FybmluZwotICAgICMg
aWdub3JlIHdhcm5pbmcgYWJvdXQgcGFja2FnZSByZXNvbHV0aW9uIHVzaW5nIF9fc3BlY19fIG9y
IF9fcGFja2FnZV9fCi0gICAgIyBzaG91bGQgYmUgYSB0ZW1wb3Jhcnkgc29sdXRpb24sIHNlZSAj
MzA2MSBmb3IgZGlzY3Vzc2lvbgotICAgIGlnbm9yZTouKmNhbid0IHJlc29sdmUgcGFja2FnZSBm
cm9tIF9fc3BlY19fIG9yIF9fcGFja2FnZV9fLio6SW1wb3J0V2FybmluZworICAgIGNvbG9yYW1h
CisgICAgZ2l0aHViMy5weQorICAgIHByZS1jb21taXQ+PTEuMTEuMAorICAgIHdoZWVsCisgICAg
dG93bmNyaWVyCitjb21tYW5kcyA9IHB5dGhvbiBzY3JpcHRzL3JlbGVhc2UucHkge3Bvc2FyZ3N9
CisKK1t0ZXN0ZW52OnJlbGVhc2Utb24tY29tbWVudF0KK2RlY3JpcHRpb24gPSBkbyBhIHJlbGVh
c2UgZnJvbSBhIGNvbW1lbnQgb24gR2l0SHViCit1c2VkZXZlbG9wID0ge1t0ZXN0ZW52OnJlbGVh
c2VddXNlZGV2ZWxvcH0KK3Bhc3NlbnYgPSB7W3Rlc3RlbnY6cmVsZWFzZV1wYXNzZW52fQorZGVw
cyA9IHtbdGVzdGVudjpyZWxlYXNlXWRlcHN9Citjb21tYW5kcyA9IHB5dGhvbiBzY3JpcHRzL3Jl
bGVhc2Utb24tY29tbWVudC5weSB7cG9zYXJnc30KKworW3Rlc3RlbnY6cHVibGlzaC1naC1yZWxl
YXNlLW5vdGVzXQorZGVzY3JpcHRpb24gPSBjcmVhdGUgR2l0SHViIHJlbGVhc2UgYWZ0ZXIgZGVw
bG95bWVudAorYmFzZXB5dGhvbiA9IHB5dGhvbjMKK3VzZWRldmVsb3AgPSBUcnVlCitwYXNzZW52
ID0gR0hfUkVMRUFTRV9OT1RFU19UT0tFTiBHSVRIVUJfUkVGIEdJVEhVQl9SRVBPU0lUT1JZCitk
ZXBzID0KKyAgICBnaXRodWIzLnB5CisgICAgcHlwYW5kb2MKK2NvbW1hbmRzID0gcHl0aG9uIHNj
cmlwdHMvcHVibGlzaC1naC1yZWxlYXNlLW5vdGVzLnB5IHtwb3NhcmdzfQogCiBbZmxha2U4XQog
bWF4LWxpbmUtbGVuZ3RoID0gMTIwCitleHRlbmQtaWdub3JlID0KKyAgICA7IHdoaXRlc3BhY2Ug
YmVmb3JlICc6JworICAgIEUyMDMKKyAgICA7IE1pc3NpbmcgRG9jc3RyaW5ncworICAgIEQxMDAs
RDEwMSxEMTAyLEQxMDMsRDEwNCxEMTA1LEQxMDYsRDEwNworICAgIDsgV2hpdGVzcGFjZSBJc3N1
ZXMKKyAgICBEMjAyLEQyMDMsRDIwNCxEMjA1LEQyMDksRDIxMworICAgIDsgUXVvdGVzIElzc3Vl
cworICAgIEQzMDIKKyAgICA7IERvY3N0cmluZyBDb250ZW50IElzc3VlcworICAgIEQ0MDAsRDQw
MSxENDAxLEQ0MDIsRDQwNSxENDA2LEQ0MDcsRDQwOCxENDA5LEQ0MTAsRDQxMSxENDEyLEQ0MTMs
RDQxNCxENDE1LEQ0MTYsRDQxNworCitbaXNvcnRdCis7IFRoaXMgY29uZmlnIG1pbWljcyB3aGF0
IHJlb3JkZXItcHl0aG9uLWltcG9ydHMgZG9lcy4KK2ZvcmNlX3NpbmdsZV9saW5lID0gMQora25v
d25fbG9jYWxmb2xkZXIgPSBweXRlc3QsX3B5dGVzdAora25vd25fdGhpcmRfcGFydHkgPSB0ZXN0
X3NvdXJjZSx0ZXN0X2V4Y2luZm8KK2ZvcmNlX2FscGhhYmV0aWNhbF9zb3J0X3dpdGhpbl9zZWN0
aW9ucyA9IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMGQx
NmI5YjZkNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQVVUSE9S
UwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L0NIQU5HRUxPRy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DT05UUklCVVRJTkcu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvSE9XVE9SRUxFQVNFLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0xJQ0VOU0UK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYXBwdmV5b3IueW1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvcHlwcm9qZWN0LnRvbWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zZXR1cC5jZmcKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My8uZ2l0aWdub3JlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzBmMjg2NzA1NDE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDQgQEAK
KyoucHljCitidWlsZC8KKyouZWdnLWluZm8vCitkaXN0LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvLnRyYXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My8udHJhdmlzLnltbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIwNjVhNjQ0ZGQ2YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTcg
QEAKK2xhbmd1YWdlOiBweXRob24KK3B5dGhvbjoKKyAgLSAyLjcKKyAgLSAzLjUKKyAgLSAzLjYK
KyAgLSAzLjcKKyAgLSAzLjgKKyAgLSBuaWdodGx5CisKK21hdHJpeDoKKyAgYWxsb3dfZmFpbHVy
ZXM6CisgICAgLSBweXRob246IDMuNSwgbmlnaHRseQoraW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFs
bCBzaXggeWFwZgorc2NyaXB0OgorICAtIHB5dGhvbiB0ZXN0L3J1bl9hbGwucHkKKyAgLSB5YXBm
IC0tZGlmZiAtLXJlY3Vyc2l2ZSAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2NnaS1iaW4vaGkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2NnaS1iaW4vaGku
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMTM2ZjJjNDQyMzIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2NnaS1iaW4vaGku
cHkKQEAgLTAsMCArMSw1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworcHJpbnQoJ0NvbnRl
bnQtVHlwZTogdGV4dC9wbGFpbicpCitwcmludCgnJykKK3ByaW50KCdIaSBmcm9tIGhpLnB5JykK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fY2xpZW50LnB5CmluZGV4IGRhZmRhMDU5YjEx
My4uMmVkNjBiM2I1OTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Vj
aG9fY2xpZW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQu
cHkKQEAgLTU5OSw4ICs1OTksMTQgQEAgY2xhc3MgRWNob0NsaWVudChvYmplY3QpOgogCiAKIGRl
ZiBtYWluKCk6CisgICAgIyBGb3JjZSBQeXRob24gMiB0byB1c2UgdGhlIGxvY2FsZSBlbmNvZGlu
ZywgZXZlbiB3aGVuIHRoZSBvdXRwdXQgaXMgbm90IGEKKyAgICAjIHR0eS4gVGhpcyBtYWtlcyB0
aGUgYmVoYXZpb3VyIHRoZSBzYW1lIGFzIFB5dGhvbiAzLiBUaGUgZW5jb2Rpbmcgd29uJ3QKKyAg
ICAjIG5lY2Vzc2FyaWx5IHN1cHBvcnQgYWxsIHVuaWNvZGUgY2hhcmFjdGVycy4gVGhpcyBwcm9i
bGVtIGlzIHBhcnRpY3VsYXJseQorICAgICMgcHJldmFsZW50IG9uIFdpbmRvd3MuCiAgICAgaWYg
c2l4LlBZMjoKLSAgICAgICAgc3lzLnN0ZG91dCA9IGNvZGVjcy5nZXR3cml0ZXIoJ3V0Zi04Jyko
c3lzLnN0ZG91dCkKKyAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICBlbmNvZGluZyA9IGxv
Y2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBjb2RlY3Mu
Z2V0d3JpdGVyKGVuY29kaW5nKShzeXMuc3Rkb3V0KQogCiAgICAgcGFyc2VyID0gYXJncGFyc2Uu
QXJndW1lbnRQYXJzZXIoKQogICAgICMgV2UgYWNjZXB0IC0tY29tbWFuZF9saW5lX2ZsYWcgc3R5
bGUgZmxhZ3Mgd2hpY2ggaXMgdGhlIHNhbWUgYXMgR29vZ2xlCkBAIC02MzYsNyArNjQyLDcgQEAg
ZGVmIG1haW4oKToKICAgICAgICAgJy0tbWVzc2FnZScsCiAgICAgICAgIGRlc3Q9J21lc3NhZ2Un
LAogICAgICAgICB0eXBlPXNpeC50ZXh0X3R5cGUsCi0gICAgICAgIGRlZmF1bHQ9dSdIZWxsbyxc
dTY1ZTVcdTY3MmMnLAorICAgICAgICBkZWZhdWx0PXUnSGVsbG8sPD4nLAogICAgICAgICBoZWxw
PSgnY29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcKICAgICAgICAgICAgICAgJyVz
IHdpbGwgZm9yY2UgY2xvc2UgdGhlIGNvbm5lY3Rpb24gZnJvbSBzZXJ2ZXIuJyAlCiAgICAgICAg
ICAgICAgIF9HT09EQllFX01FU1NBR0UpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNDNkMzhlMmFiNi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2Fib3J0X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJf
YmVuY2htYXJrLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dzaC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVu
Y2htYXJrX2hlbHBlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nsb3NlX3dz
aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9lY2hvX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93
c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fd3NoLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2hzdHNfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS91dGlsLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
X21haW4uanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfd29ya2VyLmpzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU5OGY1NzBmMmRj
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hh
bmRzaGFrZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9u
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5Cmlu
ZGV4IGIwNzVkOTg5ZjA1Mi4uMGEzYmNkYmFjZGY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpAQCAtNDAzLDggKzQwMyw3IEBAIGRlZiBf
cGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3MpOgogZGVmIF9tYWluKGFyZ3M9Tm9uZSk6CiAgICAg
IiIiWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSB5b3VyIG93biBwcm9ncmFtLCBidXQg
cGxlYXNlIG5vdGUgdGhhdAogICAgIHRoaXMgZnVuY3Rpb24gaGFzIHNvbWUgc2lkZS1lZmZlY3Rz
IHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIgcHJvZ3JhbS4gRm9yCi0gICAgZXhhbXBsZSwgdXRpbC53
cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBpbiB0aGlzIG1ldGhvZCByZXBsYWNlcyBpbXBsZW1lbnRh
dGlvbgotICAgIG9mIG9zLnBvcGVuMy4KKyAgICBleGFtcGxlLCBpdCBjaGFuZ2VzIHRoZSBjdXJy
ZW50IGRpcmVjdG9yeS4KICAgICAiIiIKIAogICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJn
c19hbmRfY29uZmlnKGFyZ3M9YXJncykKQEAgLTQyNyw3ICs0MjYsNiBAQCBkZWYgX21haW4oYXJn
cz1Ob25lKToKICAgICAgICAgICAgICMgZnVsbCBwYXRoIG9mIHRoaXJkX3BhcnR5L2N5Z3dpbi9i
aW4uCiAgICAgICAgICAgICBpZiAnQ1lHV0lOX1BBVEgnIGluIG9zLmVudmlyb246CiAgICAgICAg
ICAgICAgICAgY3lnd2luX3BhdGggPSBvcy5lbnZpcm9uWydDWUdXSU5fUEFUSCddCi0gICAgICAg
ICAgICB1dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpCiAKICAgICAgICAgICAg
IGRlZiBfX2NoZWNrX3NjcmlwdChzY3JpcHRwYXRoKToKICAgICAgICAgICAgICAgICByZXR1cm4g
dXRpbC5nZXRfc2NyaXB0X2ludGVycChzY3JpcHRwYXRoLCBjeWd3aW5fcGF0aCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5CmluZGV4IGZjMzk5ZjJhODViOS4u
ODJkMWVhNjE5YzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2Nr
ZXQvc3RyZWFtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJl
YW0ucHkKQEAgLTg3NSw3ICs4NzUsNyBAQCBjbGFzcyBTdHJlYW0ob2JqZWN0KToKICAgICAgICAg
ICAgIHdhaXRfcmVzcG9uc2U6IFRydWUgd2hlbiBjYWxsZXIgd2FudCB0byB3YWl0IHRoZSByZXNw
b25zZS4KICAgICAgICAgUmFpc2VzOgogICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
OiB3aGVuIHJlYXNvbiBpcyBzcGVjaWZpZWQgd2l0aCBjb2RlIE5vbmUKLSAgICAgICAgICAgIG9y
IHJlYXNvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgYm90aCBzdHIgYW5kIHVuaWNvZGUuCisgICAg
ICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBib3RoIHN0ciBhbmQg
dW5pY29kZS4KICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJf
dGVybWluYXRlZDoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKaW5k
ZXggZTE2NGU2YjhlNDY4Li4wNDAwNmVjYWNkNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9w
eXdlYnNvY2tldC91dGlsLnB5CkBAIC05NywyNSArOTcsNiBAQCBkZWYgZ2V0X3NjcmlwdF9pbnRl
cnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgogICAgIHJldHVybiBOb25lCiAKIAot
ZGVmIHdyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpOgotICAgICIiIldyYXAgcG9wZW4z
IHRvIHN1cHBvcnQgIyEtc2NyaXB0IG9uIFdpbmRvd3MuCi0KLSAgICBBcmdzOgotICAgICAgY3ln
d2luX3BhdGg6ICBwYXRoIGZvciBjeWd3aW4gYmluYXJ5IGlmIGNvbW1hbmQgcGF0aCBpcyBuZWVk
ZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZC4gIE5vbmUgaWYgbm8gdHJh
bnNsYXRpb24gcmVxdWlyZWQuCi0gICAgIiIiCi0gICAgX19vcmlnX3BvcGVuMyA9IG9zLnBvcGVu
MwotCi0gICAgZGVmIF9fd3JhcF9wb3BlbjMoY21kLCBtb2RlPSd0JywgYnVmc2l6ZT0tMSk6Ci0g
ICAgICAgIGNtZGxpbmUgPSBjbWQuc3BsaXQoJyAnKQotICAgICAgICBpbnRlcnAgPSBnZXRfc2Ny
aXB0X2ludGVycChjbWRsaW5lWzBdLCBjeWd3aW5fcGF0aCkKLSAgICAgICAgaWYgaW50ZXJwOgot
ICAgICAgICAgICAgY21kID0gaW50ZXJwICsgJyAnICsgY21kCi0gICAgICAgIHJldHVybiBfX29y
aWdfcG9wZW4zKGNtZCwgbW9kZSwgYnVmc2l6ZSkKLQotICAgIG9zLnBvcGVuMyA9IF9fd3JhcF9w
b3BlbjMKLQotCiBkZWYgaGV4aWZ5KHMpOgogICAgIHJldHVybiAnICcuam9pbihbJyUwMngnICUg
eCBmb3IgeCBpbiBzaXguaXRlcmJ5dGVzKHMpXSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0NjE0MjVlMTE0ZDEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9t
b2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9leGNlcHRpb25z
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2Nr
ZXQvbXNndXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9yZXF1ZXN0
X2hhbmRsZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc2VydmVyX3V0
aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9w
eXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3NldHVwLnB5CmluZGV4IDU3ZTk0Mjhk
NjkxZC4uYjY1OTA0Yzk0ZmFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9zZXR1cC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9zZXR1cC5weQpAQCAtNDMsNyArNDMsNyBAQCBfVVNF
X0ZBU1RfTUFTS0lORyA9IEZhbHNlCiAKICMgVGhpcyBpcyB1c2VkIHNpbmNlIHB5dGhvbl9yZXF1
aXJlcyBmaWVsZCBpcyBub3QgcmVjb2duaXplZCB3aXRoCiAjIHBpcCB2ZXJzaW9uIDkuMC4wIGFu
ZCBlYXJsaWVyCi1pZiBzeXMudmVyc2lvbiA8ICcyLjcnOgoraWYgc3lzLmhleHZlcnNpb24gPCAw
eDAyMDcwMGYwOgogICAgIHByaW50KCclcyByZXF1aXJlcyBQeXRob24gMi43IG9yIGxhdGVyLicg
JSBfUEFDS0FHRV9OQU1FLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgc3lzLmV4aXQoMSkKIApAQCAt
NjYsOSArNjYsOCBAQCBzZXR1cCgKICAgICBwYWNrYWdlcz1bX1BBQ0tBR0VfTkFNRSwgX1BBQ0tB
R0VfTkFNRSArICcuaGFuZHNoYWtlJ10sCiAgICAgcHl0aG9uX3JlcXVpcmVzPSc+PTIuNycsCiAg
ICAgaW5zdGFsbF9yZXF1aXJlcz1bJ3NpeCddLAotICAgICNUT0RPKHN1enVraWtlaXRhKTogVXBk
YXRlIHRoaXMgdG8gbmV3IEdpdGh1YiBVUkwKLSAgICB1cmw9J2h0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9weXdlYnNvY2tldC8nLAotICAgIHZlcnNpb249JzMuMC4wJywKKyAgICB1cmw9J2h0dHBz
Oi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3B5d2Vic29ja2V0MycsCisgICAgdmVyc2lv
bj0nMy4wLjEnLAogKQogCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5p
dF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTA0NDE5MGY1OGIuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L2NlcnQvY2FjZXJ0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBl
bQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L2NlcnQva2V5LnBlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2Ns
aWVudF9mb3JfdGVzdGluZy5weQppbmRleCBmOWFhODExOWUzNDIuLmE0NWU4ZjVjZjJkZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkKQEAgLTMwMyw3
ICszMDMsNyBAQCBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2Uob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKIAotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy52ZXJzaW9uID09IDg6CiAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9zZWNfb3JpZ2luX2hl
YWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBm
aWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQppbmRleCA4ZDQ1N2ZmNjg1OTUuLjI3ODll
NGE1N2UyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2VuZHRvZW5k
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQpAQCAtMzIs
NiArMzIsOCBAQAogIiIiCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCkBAIC0xNTMsOCArMTU1LDkgQEAgY2xhc3Mg
RW5kVG9FbmRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUT0RPKHR5b3NoaW5v
KTogVXNlIHRlYXJEb3duIHRvIGtpbGwgdGhlIHNlcnZlci4KIAogICAgIGRlZiBfcnVuX3B5dGhv
bl9jb21tYW5kKHNlbGYsIGNvbW1hbmRsaW5lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgor
ICAgICAgICBjbG9zZV9mZHMgPSBUcnVlIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInIGVsc2Ug
Tm9uZQogICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGVdICsg
Y29tbWFuZGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz1U
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9Y2xvc2VfZmRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3Rkb3V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyKQogCkBAIC02MzIsNyArNjM1
LDE0IEBAIGNsYXNzIEVuZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2Up
OgogCiAgICAgZGVmIF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChzZWxmLCBleHBl
Y3RlZCwgc3Rkb3V0ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZGVycmRhdGEpOgotICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRm
LTgiKQorICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZShsb2NhbGUuZ2V0cHJlZmVy
cmVkZW5jb2RpbmcoKSkKKworICAgICAgICAjIEluIFB5dGhvbiAzIG9uIFdpbmRvd3Mgd2UgZ2V0
ICJcclxuIiB0ZXJtaW5hdG9ycyBiYWNrIGZyb20KKyAgICAgICAgIyB0aGUgc3VicHJvY2VzcyBh
bmQgd2UgbmVlZCB0byByZXBsYWNlIHRoZW0gd2l0aCAiXG4iIHRvIGdldAorICAgICAgICAjIGEg
bWF0Y2guIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrLCBidXQgYXZvaWRzIHBsYXRmb3JtLSBhbmQK
KyAgICAgICAgIyB2ZXJzaW9uLSBzcGVjaWZpYyBjb2RlLgorICAgICAgICBhY3R1YWwgPSBhY3R1
YWwucmVwbGFjZSgnXHJcbicsICdcbicpCisKICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVk
OgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJlc3VsdCBvbiBleGFt
cGxlIGVjaG8gY2xpZW50OiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyIChleHBl
Y3RlZCkgdnMgJXIgKGFjdHVhbCknICUKQEAgLTY1NCw4ICs2NjQsOCBAQCBjbGFzcyBFbmRUb0Vu
ZFRlc3RXaXRoRWNob0NsaWVudChFbmRUb0VuZFRlc3RCYXNlKToKICAgICAgICAgICAgICMgRXhw
ZWN0ZWQgb3V0cHV0IGZvciB0aGUgZGVmYXVsdCBtZXNzYWdlcy4KICAgICAgICAgICAgIGRlZmF1
bHRfZXhwZWN0YXRpb24gPSAodSdTZW5kOiBIZWxsb1xuJwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1J1JlY3Y6IEhlbGxvXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHUnU2VuZDogXHU2NWU1XHU2NzJjXG4nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnUmVjdjogXHU2NWU1XHU2NzJjXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnU2VuZDogPD5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdSdSZWN2OiA8PlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1J1NlbmQgY2xvc2VcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdS
ZWN2IGFja1xuJykKIApAQCAtNjkzLDYgKzcwMywzNSBAQCBjbGFzcyBFbmRUb0VuZFRlc3RXaXRo
RWNob0NsaWVudChFbmRUb0VuZFRlc3RCYXNlKToKICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3Nl
cnZlcihzZXJ2ZXIpCiAKIAorY2xhc3MgRW5kVG9FbmRUZXN0V2l0aENnaShFbmRUb0VuZFRlc3RC
YXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0
VXAoc2VsZikKKworICAgIGRlZiB0ZXN0X2NnaShzZWxmKToKKyAgICAgICAgIiIiVmVyaWZpZXMg
dGhhdCBDR0kgc2NyaXB0cyB3b3JrLiIiIgorCisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoZXh0cmFfYXJncz1bJy0tY2dpLXBhdGhzJywgJy9jZ2ktYmluJ10pCisgICAgICAgIHRp
bWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQorCisgICAgICAgIHVybCA9ICdodHRwOi8v
bG9jYWxob3N0OiVkL2NnaS1iaW4vaGkucHknICUgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydAor
CisgICAgICAgICMgdXJsb3BlbigpIGluIFB5dGhvbiAyLjcgZG9lc24ndCBzdXBwb3J0ICJ3aXRo
Ii4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4o
dXJsKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2Vy
dmVyKQorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGYuZ2V0Y29kZSgpLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGYuaW5mbygpLmdldCgnQ29udGVudC1UeXBlJyksICd0ZXh0L3BsYWluJykKKyAgICAgICAg
ICAgIGJvZHkgPSBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LnJz
dHJpcChiJ1xyXG4nKSwgYidIaSBmcm9tIGhpLnB5JykKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2VydmVyKHNlcnZlcikK
KworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CmluZGV4
IDVjZTAxZWYyODM5MS4uZjhjOGU3YTk4MWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBVbml0
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2Ug
PSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKICAgICAgICAgICAgICd3czovL2xvY2FsaG9z
dDotMS93cycpCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uID49ICczLjYnOgorICAgICAgICBpZiBz
eXMuaGV4dmVyc2lvbiA+PSAweDAzMDYwMGYwOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCByZXNvdXJjZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2xvY2FsaG9zdCcsIGhvc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMzY1ZGJlMzJhYWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRf
dGhlX2VuZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L25vbl9jYWxsYWJsZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDhjMGY2NTcyYjEu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2Vy
X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtf
d3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5f
Y2hlY2tfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGVsbG8ucGwK
c2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9ibGFua193c2gucHkKcmVuYW1lIHRvIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGVsbG8ucGwKaW5kZXggN2Y4N2M2YWYyM2RmLi44ODJlZjVhMTAwNjUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGVsbG8ucGwKQEAgLTEsNCArMSw2IEBACi0j
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyEvdXNyL2Jpbi9wZXJsIC13VAorIworIyBD
b3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0yNyw1ICsyOSw0IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCi0KLSMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCitwcmludCAiSGVsbG9cbiI7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y3NmI4ZTE5MjBkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZThmOWVlYTE5MTRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMyICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvbW9jay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3Qvc2V0X3N5c19wYXRoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X2Rpc3BhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2VuZHRv
ZW5kLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X2h0dHBfaGVhZGVyX3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbWVtb3Jp
emluZ2ZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tc2d1dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X3N0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF91dGlsLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmZk
YmMxZjYxODkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL0NPTlRSSUJVVElORwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JFQURNRS5tZAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0
aW9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEwZDZmMDk4ZTlkLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vTWFr
ZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVu
dGF0aW9uL2luZGV4LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWlu
Zm8vSU5TVEFMTEVSIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWI1ODllMzhhMzIuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi1waXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlz
dC1pbmZvL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjA1YTU0NTI2MWMuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFCisrKyAvZGV2L251bGwK
QEAgLTEsMTggKzAsMCBAQAotQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJz
b24KLQotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgotdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KLXRoZSBT
b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u
IHRoZSByaWdodHMgdG8KLXVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mCi10aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g
ZG8gc28sCi1zdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4gYWxsCi1jb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U
WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MKLUZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SUyBPUgotQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCi1JTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgot
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElOIFRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1p
bmZvL01FVEFEQVRBIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYzhmNTFlMWYzNi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL01FVEFEQVRBCisrKyAvZGV2L251bGwK
QEAgLTEsNTIgKzAsMCBAQAotTWV0YWRhdGEtVmVyc2lvbjogMi4xCi1OYW1lOiBzaXgKLVZlcnNp
b246IDEuMTMuMAotU3VtbWFyeTogUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRp
ZXMKLUhvbWUtcGFnZTogaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgKLUF1dGhvcjog
QmVuamFtaW4gUGV0ZXJzb24KLUF1dGhvci1lbWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZwotTGlj
ZW5zZTogTUlUCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3Rh
dHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJsZQotQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6
IFB5dGhvbiA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJz
Ci1DbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQotQ2xh
c3NpZmllcjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCi1DbGFz
c2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMKLVJlcXVpcmVzLVB5dGhvbjogPj0yLjYsICE9My4w
LiosICE9My4xLioKLQotLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9z
aXguc3ZnCi0gICA6dGFyZ2V0OiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc2l4LwotICAgOmFs
dDogc2l4IG9uIFB5UEkKLQotLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFt
aW5wL3NpeC5zdmc/YnJhbmNoPW1hc3RlcgotICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2ku
b3JnL2JlbmphbWlucC9zaXgKLSAgIDphbHQ6IHNpeCBvbiBUcmF2aXNDSQotCi0uLiBpbWFnZTo6
IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRl
c3QKLSAgIDp0YXJnZXQ6IGh0dHBzOi8vc2l4LnJlYWR0aGVkb2NzLmlvLwotICAgOmFsdDogc2l4
J3MgZG9jdW1lbnRhdGlvbiBvbiBSZWFkIHRoZSBEb2NzCi0KLS4uIGltYWdlOjogaHR0cHM6Ly9p
bWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ncmVlbi5zdmcKLSAgIDp0YXJnZXQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKLSAgIDph
bHQ6IE1JVCBMaWNlbnNlIGJhZGdlCi0KLVNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGli
aWxpdHkgbGlicmFyeS4gIEl0IHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCi1mb3Igc21vb3Ro
aW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRo
IHRoZSBnb2FsIG9mCi13cml0aW5nIFB5dGhvbiBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBi
b3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0aGUKLWRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5m
b3JtYXRpb24gb24gd2hhdCBpcyBwcm92aWRlZC4KLQotU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhv
biB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlzIGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24K
LWZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkgY29waWVkIGludG8geW91ciBwcm9qZWN0LiAoVGhl
IGNvcHlyaWdodCBhbmQgbGljZW5zZQotbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotCi1Pbmxp
bmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRwczovL3NpeC5yZWFkdGhlZG9jcy5pby8uCi0KLUJ1
Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAg
VGhlIGNvZGUgY2FuIGFsc28KLWJlIGZvdW5kIHRoZXJlLgotCi1Gb3IgcXVlc3Rpb25zIGFib3V0
IHNpeCBvciBwb3J0aW5nIGluIGdlbmVyYWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWls
aW5nCi1saXN0OiBodHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhv
bi1wb3J0aW5nCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8v
UkVDT1JEIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JECmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNTc2NjVjOTk2NDIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICsw
LDAgQEAKLXNpeC0xLjEzLjAuZGlzdC1pbmZvL0lOU1RBTExFUixzaGEyNTY9enV1dWU0a25veUot
VXdQUFhnOGZlelM3VkNyWEpRckFQN3plTnV3dkZRZyw0DQotc2l4LTEuMTMuMC5kaXN0LWluZm8v
TElDRU5TRSxzaGEyNTY9dDFLYmpBY1hHbmlvdzJ3eWc1QlZLT1NCS1VYWmQ5RWw2NUp1ak12eVJi
WSwxMDY2DQotc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEsc2hhMjU2PWh4UzRyU1BSZk84
ZXdiY0xTMzBhbm9GaTZMRmdVUTNta194a25aOFJWNHcsMTk0MA0KLXNpeC0xLjEzLjAuZGlzdC1p
bmZvL1JFQ09SRCwsDQotc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwsc2hhMjU2PThUOGZ4ZWZy
X3ItQTc5cWJPSjlkX0FhRWdrcENHbUVQSGMtZ3BDcTVCUmcsMTEwDQotc2l4LTEuMTMuMC5kaXN0
LWluZm8vdG9wX2xldmVsLnR4dCxzaGEyNTY9X2lWSF9pWUV0RVhuRDhuWUdRWXBZRlV2a1VXOXNF
TzFHWWJrZUtTQWFpcyw0DQotc2l4LnB5LHNoYTI1Nj1vOVdITzh1dFdHYXlOaE5xRG1OcVBkUXNR
YWlyNVJhUldqTF84SVlmMXF3LDMzMDUxDQotc2l4LnB5YywsDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3Qt
aW5mby9XSEVFTApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwMTIzNTUzMzNlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKKysr
IC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVdoZWVsLVZlcnNpb246IDEuMAotR2VuZXJhdG9y
OiBiZGlzdF93aGVlbCAoMC4zMi4xKQotUm9vdC1Jcy1QdXJlbGliOiB0cnVlCi1UYWc6IHB5Mi1u
b25lLWFueQotVGFnOiBweTMtbm9uZS1hbnkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEu
MTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1p
bmZvL3RvcF9sZXZlbC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZTJmY2U0
OTg5NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3Rv
cF9sZXZlbC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1zaXgKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM1ZTFkMjJjYjg2My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0x
LjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEz
LjAuZGlzdC1pbmZvL01FVEFEQVRBCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVD
T1JECi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgt
MS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgt
MS4xNS4wLmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjE1LjAuZGlz
dC1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODMw
YjI3ZjdlNWEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xNS4wLmRpc3QtaW5m
by93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC0xLjE1LjAuZGlzdC1pbmZvL0lOU1RBTExFUgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0x
LjE1LjAuZGlzdC1pbmZvL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xNS4wLmRpc3QtaW5mby9N
RVRBREFUQQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjE1LjAuZGlzdC1pbmZvL1JFQ09SRAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L3NpeC0xLjE1LjAuZGlzdC1pbmZvL1dIRUVMCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTUuMC5kaXN0LWlu
Zm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL1BLRy1J
TkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL1BLRy1JTkZPCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZDVmZjRiYjhlNGYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgu
ZWdnLWluZm8vUEtHLUlORk8KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1NZXRhZGF0
YS1WZXJzaW9uOiAxLjEKLU5hbWU6IHNpeAotVmVyc2lvbjogMS4xMS4wCi1TdW1tYXJ5OiBQeXRo
b24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcwotSG9tZS1wYWdlOiBodHRwOi8vcHlw
aS5weXRob24ub3JnL3B5cGkvc2l4LwotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbgotQXV0aG9y
LWVtYWlsOiBiZW5qYW1pbkBweXRob24ub3JnCi1MaWNlbnNlOiBNSVQKLURlc2NyaXB0aW9uOiAu
LiBpbWFnZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgICAgICAg
ICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAotICAgICAgICAKLSAg
ICAgICAgLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/
YnJhbmNoPW1hc3RlcgotICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3Jn
L2JlbmphbWlucC9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cDovL2ltZy5z
aGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwotICAgICAgICAgICA6dGFyZ2V0
OiBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCi0g
ICAgICAgIAotICAgICAgICBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxp
YnJhcnkuICBJdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwotICAgICAgICBmb3Igc21vb3Ro
aW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRo
IHRoZSBnb2FsIG9mCi0gICAgICAgIHdyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBjb21wYXRp
YmxlIG9uIGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQotICAgICAgICBkb2N1bWVudGF0
aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0gICAgICAgIAot
ICAgICAgICBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42LiAgSXQg
aXMgY29udGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgotICAgICAgICBmaWxlLCBzbyBpdCBjYW4g
YmUgZWFzaWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxp
Y2Vuc2UKLSAgICAgICAgbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotICAgICAgICAKLSAgICAg
ICAgT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4KLSAgICAg
ICAgCi0gICAgICAgIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9i
ZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KLSAgICAgICAgYmUgZm91bmQgdGhlcmUu
Ci0gICAgICAgIAotICAgICAgICBGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGlu
IGdlbmVyYWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCi0gICAgICAgIGxpc3Q6
IGh0dHBzOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBvcnRpbmcK
LSAgICAgICAgCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6
IFB5dGhvbiA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJz
Ci1DbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQotQ2xh
c3NpZmllcjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCi1DbGFz
c2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ct
aW5mby9TT1VSQ0VTLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9TT1VSQ0VTLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3ZjNkZWM2ZGYzLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL1NPVVJDRVMudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTUgKzAsMCBAQAotQ0hBTkdFUwotTElDRU5TRQotTUFOSUZFU1QuaW4KLVJFQURNRS5yc3QKLXNl
dHVwLmNmZwotc2V0dXAucHkKLXNpeC5weQotdGVzdF9zaXgucHkKLWRvY3VtZW50YXRpb24vTWFr
ZWZpbGUKLWRvY3VtZW50YXRpb24vY29uZi5weQotZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKLXNp
eC5lZ2ctaW5mby9QS0ctSU5GTwotc2l4LmVnZy1pbmZvL1NPVVJDRVMudHh0Ci1zaXguZWdnLWlu
Zm8vZGVwZW5kZW5jeV9saW5rcy50eHQKLXNpeC5lZ2ctaW5mby90b3BfbGV2ZWwudHh0ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZv
L3RvcF9sZXZlbC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXguZWdnLWluZm8vdG9wX2xldmVsLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZlMmZjZTQ5ODk1Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi1zaXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTEzMTk1MzFmMWUxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL1BLRy1JTkZPCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LmVnZy1pbmZvL1NPVVJDRVMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL2RlcGVu
ZGVuY3lfbGlua3MudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZjIyY2EyZDZjMy4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjQg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1
cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rl
c3Rfc2l4LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Rvb2x0b29sL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS90b29sdG9vbC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmY1MTY4ZGNjMmY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS90b29sdG9vbC93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvdG9vbHRv
b2wvdG9vbHRvb2wucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMyZTgyZDJkNWQ0OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5j
b2RpbmdzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3MvUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy9SRUFE
TUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mv
c2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy5lZ2ct
aW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy5lZ2ct
aW5mby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZhNjdj
YTNjYzA4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2Rpbmdz
LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzLmVnZy1pbmZvL1BLRy1JTkZP
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzLmVnZy1pbmZvL1NPVVJDRVMudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3Mu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzLmVnZy1pbmZvL3RvcF9sZXZlbC50
eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJhYmRlNWI5MGM4Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5j
b2RpbmdzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzL2xhYmVs
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy9ta2xhYmVscy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy90ZXN0cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dl
YmVuY29kaW5ncy94X3VzZXJfZGVmaW5lZC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
Ly5hcHB2ZXlvci55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLmFwcHZleW9yLnltbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc5NTRlZTRiZTc4ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy8uYXBwdmV5b3IueW1sCkBAIC0wLDAgKzEsMjcgQEAKK2Jy
YW5jaGVzOgorICBvbmx5OgorICAgIC0gbWFzdGVyCisKK3NraXBfYnJhbmNoX3dpdGhfcHI6IHRy
dWUKKworZW52aXJvbm1lbnQ6CisjIHdlYnNvY2tldHMgb25seSB3b3JrcyBvbiBQeXRob24gPj0g
My42LgorICBDSUJXX1NLSVA6IGNwMjctKiBjcDMzLSogY3AzNC0qIGNwMzUtKgorICBDSUJXX1RF
U1RfQ09NTUFORDogcHl0aG9uIC1XIGRlZmF1bHQgLW0gdW5pdHRlc3QKKyAgV0VCU09DS0VUU19U
RVNUU19USU1FT1VUX0ZBQ1RPUjogMTAwCisKK2luc3RhbGw6CisjIEVuc3VyZSBweXRob24gaXMg
UHl0aG9uIDMuCisgIC0gc2V0IFBBVEg9QzpcUHl0aG9uMzc7JVBBVEglCisgIC0gY21kOiBweXRo
b24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIGNpYnVpbGR3aGVlbAorIyBDcmVhdGUgZmlsZSAn
LmNpYnVpbGR3aGVlbCcgc28gdGhhdCBleHRlbnNpb24gYnVpbGQgaXMgbm90IG9wdGlvbmFsIChj
LmYuIHNldHVwLnB5KS4KKyAgLSBjbWQ6IHRvdWNoIC5jaWJ1aWxkd2hlZWwKKworYnVpbGRfc2Ny
aXB0OgorICAtIGNtZDogcHl0aG9uIC1tIGNpYnVpbGR3aGVlbCAtLW91dHB1dC1kaXIgd2hlZWxo
b3VzZQorIyBVcGxvYWQgdG8gUHlQSSBvbiB0YWdzCisgIC0gcHM6ID4tCisgICAgICBpZiAoJGVu
djpBUFBWRVlPUl9SRVBPX1RBRyAtZXEgInRydWUiKSB7CisgICAgICAgIEludm9rZS1FeHByZXNz
aW9uICJweXRob24gLW0gcGlwIGluc3RhbGwgdHdpbmUiCisgICAgICAgIEludm9rZS1FeHByZXNz
aW9uICJweXRob24gLW0gdHdpbmUgdXBsb2FkIC0tc2tpcC1leGlzdGluZyB3aGVlbGhvdXNlLyou
d2hsIgorICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5jaXJjbGVjaS9jb25m
aWcueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5jaXJjbGVjaS9jb25maWcueW1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDg3N2MxNjFhZDQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5jaXJjbGVjaS9jb25maWcueW1sCkBAIC0wLDAgKzEsNTUg
QEAKK3ZlcnNpb246IDIKKworam9iczoKKyAgbWFpbjoKKyAgICBkb2NrZXI6CisgICAgICAtIGlt
YWdlOiBjaXJjbGVjaS9weXRob246My43CisgICAgc3RlcHM6CisgICAgICAjIFJlbW92ZSBJUHY2
IGVudHJ5IGZvciBsb2NhbGhvc3QgaW4gQ2lyY2xlIENJIGNvbnRhaW5lcnMgYmVjYXVzZSBpdCBk
b2Vzbid0IHdvcmsgYW55d2F5LgorICAgICAgLSBydW46IHN1ZG8gY3AgL2V0Yy9ob3N0cyAvdG1w
OyBzdWRvIHNlZCAtaSAnLzo6MS9kJyAvdG1wL2hvc3RzOyBzdWRvIGNwIC90bXAvaG9zdHMgL2V0
YworICAgICAgLSBjaGVja291dAorICAgICAgLSBydW46IHN1ZG8gcGlwIGluc3RhbGwgdG94IGNv
ZGVjb3YKKyAgICAgIC0gcnVuOiB0b3ggLWUgY292ZXJhZ2UsYmxhY2ssZmxha2U4LGlzb3J0LG15
cHkKKyAgICAgIC0gcnVuOiBjb2RlY292CisgIHB5MzY6CisgICAgZG9ja2VyOgorICAgICAgLSBp
bWFnZTogY2lyY2xlY2kvcHl0aG9uOjMuNgorICAgIHN0ZXBzOgorICAgICAgIyBSZW1vdmUgSVB2
NiBlbnRyeSBmb3IgbG9jYWxob3N0IGluIENpcmNsZSBDSSBjb250YWluZXJzIGJlY2F1c2UgaXQg
ZG9lc24ndCB3b3JrIGFueXdheS4KKyAgICAgIC0gcnVuOiBzdWRvIGNwIC9ldGMvaG9zdHMgL3Rt
cDsgc3VkbyBzZWQgLWkgJy86OjEvZCcgL3RtcC9ob3N0czsgc3VkbyBjcCAvdG1wL2hvc3RzIC9l
dGMKKyAgICAgIC0gY2hlY2tvdXQKKyAgICAgIC0gcnVuOiBzdWRvIHBpcCBpbnN0YWxsIHRveAor
ICAgICAgLSBydW46IHRveCAtZSBweTM2CisgIHB5Mzc6CisgICAgZG9ja2VyOgorICAgICAgLSBp
bWFnZTogY2lyY2xlY2kvcHl0aG9uOjMuNworICAgIHN0ZXBzOgorICAgICAgIyBSZW1vdmUgSVB2
NiBlbnRyeSBmb3IgbG9jYWxob3N0IGluIENpcmNsZSBDSSBjb250YWluZXJzIGJlY2F1c2UgaXQg
ZG9lc24ndCB3b3JrIGFueXdheS4KKyAgICAgIC0gcnVuOiBzdWRvIGNwIC9ldGMvaG9zdHMgL3Rt
cDsgc3VkbyBzZWQgLWkgJy86OjEvZCcgL3RtcC9ob3N0czsgc3VkbyBjcCAvdG1wL2hvc3RzIC9l
dGMKKyAgICAgIC0gY2hlY2tvdXQKKyAgICAgIC0gcnVuOiBzdWRvIHBpcCBpbnN0YWxsIHRveAor
ICAgICAgLSBydW46IHRveCAtZSBweTM3CisgIHB5Mzg6CisgICAgZG9ja2VyOgorICAgICAgLSBp
bWFnZTogY2lyY2xlY2kvcHl0aG9uOjMuOC4wcmMxCisgICAgc3RlcHM6CisgICAgICAjIFJlbW92
ZSBJUHY2IGVudHJ5IGZvciBsb2NhbGhvc3QgaW4gQ2lyY2xlIENJIGNvbnRhaW5lcnMgYmVjYXVz
ZSBpdCBkb2Vzbid0IHdvcmsgYW55d2F5LgorICAgICAgLSBydW46IHN1ZG8gY3AgL2V0Yy9ob3N0
cyAvdG1wOyBzdWRvIHNlZCAtaSAnLzo6MS9kJyAvdG1wL2hvc3RzOyBzdWRvIGNwIC90bXAvaG9z
dHMgL2V0YworICAgICAgLSBjaGVja291dAorICAgICAgLSBydW46IHN1ZG8gcGlwIGluc3RhbGwg
dG94CisgICAgICAtIHJ1bjogdG94IC1lIHB5MzgKKword29ya2Zsb3dzOgorICB2ZXJzaW9uOiAy
CisgIGJ1aWxkOgorICAgIGpvYnM6CisgICAgICAtIG1haW4KKyAgICAgIC0gcHkzNjoKKyAgICAg
ICAgICByZXF1aXJlczoKKyAgICAgICAgICAgIC0gbWFpbgorICAgICAgLSBweTM3OgorICAgICAg
ICAgIHJlcXVpcmVzOgorICAgICAgICAgICAgLSBtYWluCisgICAgICAtIHB5Mzg6CisgICAgICAg
ICAgcmVxdWlyZXM6CisgICAgICAgICAgICAtIG1haW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy8uZ2l0aHViL0ZVTkRJTkcueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5naXRodWIvRlVORElO
Ry55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YWUyMjNiM2Q4
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLmdpdGh1Yi9GVU5ESU5HLnlt
bApAQCAtMCwwICsxIEBACit0aWRlbGlmdDogInB5cGkvd2Vic29ja2V0cyIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5naXRpZ25vcmUK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZjBkMTY1MjBjMDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDEy
IEBACisqLnB5YworKi5zbworLmNvdmVyYWdlCisubXlweV9jYWNoZQorLnRveAorYnVpbGQvCitj
b21wbGlhbmNlL3JlcG9ydHMvCitkaXN0LworZG9jcy9fYnVpbGQvCitodG1sY292LworTUFOSUZF
U1QKK3dlYnNvY2tldHMuZWdnLWluZm8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLnJl
YWR0aGVkb2NzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy8ucmVhZHRoZWRvY3MueW1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTA5YWZmYWI0NTdhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5yZWFkdGhlZG9jcy55bWwKQEAgLTAsMCArMSw3IEBA
CitidWlsZDoKKyAgaW1hZ2U6IGxhdGVzdAorCitweXRob246CisgIHZlcnNpb246IDMuNworCity
ZXF1aXJlbWVudHNfZmlsZTogZG9jcy9yZXF1aXJlbWVudHMudHh0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvLnRyYXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLnRyYXZpcy55bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMzA2OTM3NTk3YTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwzNiBA
QAorZW52OgorICBnbG9iYWw6CisgICMgd2Vic29ja2V0cyBvbmx5IHdvcmtzIG9uIFB5dGhvbiA+
PSAzLjYuCisgICAgLSBDSUJXX1NLSVA9ImNwMjctKiBjcDMzLSogY3AzNC0qIGNwMzUtKiIKKyAg
ICAtIENJQldfVEVTVF9DT01NQU5EPSJweXRob24zIC1XIGRlZmF1bHQgLW0gdW5pdHRlc3QiCisg
ICAgLSBXRUJTT0NLRVRTX1RFU1RTX1RJTUVPVVRfRkFDVE9SPTEwMAorCittYXRyaXg6CisgIGlu
Y2x1ZGU6CisgICAgLSBsYW5ndWFnZTogcHl0aG9uCisgICAgICBkaXN0OiB4ZW5pYWwgICAgIyBy
ZXF1aXJlZCBmb3IgUHl0aG9uIDMuNyAodHJhdmlzLWNpL3RyYXZpcy1jaSM5MDY5KQorICAgICAg
c3VkbzogcmVxdWlyZWQKKyAgICAgIHB5dGhvbjogIjMuNyIKKyAgICAgIHNlcnZpY2VzOgorICAg
ICAgICAtIGRvY2tlcgorICAgIC0gb3M6IG9zeAorICAgICAgb3N4X2ltYWdlOiB4Y29kZTguMwor
CitpbnN0YWxsOgorIyBQeXRob24gMyBpcyBuZWVkZWQgdG8gcnVuIGNpYnVpbGR3aGVlbCBmb3Ig
d2Vic29ja2V0cy4KKyAgLSBpZiBbICIke1RSQVZJU19PU19OQU1FOi19IiA9PSAib3N4IiBdOyB0
aGVuCisgICAgICBicmV3IHVwZGF0ZTsKKyAgICAgIGJyZXcgdXBncmFkZSBweXRob247CisgICAg
ZmkKKyMgSW5zdGFsbCBjaWJ1aWxkd2hlZWwgdXNpbmcgcGlwMyB0byBtYWtlIHN1cmUgUHl0aG9u
IDMgaXMgdXNlZC4KKyAgLSBwaXAzIGluc3RhbGwgLS11cGdyYWRlIGNpYnVpbGR3aGVlbAorIyBD
cmVhdGUgZmlsZSAnLmNpYnVpbGR3aGVlbCcgc28gdGhhdCBleHRlbnNpb24gYnVpbGQgaXMgbm90
IG9wdGlvbmFsIChjLmYuIHNldHVwLnB5KS4KKyAgLSB0b3VjaCAuY2lidWlsZHdoZWVsCisKK3Nj
cmlwdDoKKyAgLSBjaWJ1aWxkd2hlZWwgLS1vdXRwdXQtZGlyIHdoZWVsaG91c2UKKyMgVXBsb2Fk
IHRvIFB5UEkgb24gdGFncworICAtIGlmIFsgIiR7VFJBVklTX1RBRzotfSIgIT0gIiIgXTsgdGhl
bgorICAgICAgcGlwMyBpbnN0YWxsIHR3aW5lOworICAgICAgcHl0aG9uMyAtbSB0d2luZSB1cGxv
YWQgLS1za2lwLWV4aXN0aW5nIHdoZWVsaG91c2UvKjsKKyAgICBmaQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL0NPREVfT0ZfQ09ORFVDVC5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9DT0RFX09G
X0NPTkRVQ1QubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MGY4
MGQ1MWIxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvQ09ERV9PRl9DT05E
VUNULm1kCkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29udHJpYnV0b3IgQ292ZW5hbnQgQ29kZSBvZiBD
b25kdWN0CisKKyMjIE91ciBQbGVkZ2UKKworSW4gdGhlIGludGVyZXN0IG9mIGZvc3RlcmluZyBh
biBvcGVuIGFuZCB3ZWxjb21pbmcgZW52aXJvbm1lbnQsIHdlIGFzIGNvbnRyaWJ1dG9ycyBhbmQg
bWFpbnRhaW5lcnMgcGxlZGdlIHRvIG1ha2luZyBwYXJ0aWNpcGF0aW9uIGluIG91ciBwcm9qZWN0
IGFuZCBvdXIgY29tbXVuaXR5IGEgaGFyYXNzbWVudC1mcmVlIGV4cGVyaWVuY2UgZm9yIGV2ZXJ5
b25lLCByZWdhcmRsZXNzIG9mIGFnZSwgYm9keSBzaXplLCBkaXNhYmlsaXR5LCBldGhuaWNpdHks
IGdlbmRlciBpZGVudGl0eSBhbmQgZXhwcmVzc2lvbiwgbGV2ZWwgb2YgZXhwZXJpZW5jZSwgbmF0
aW9uYWxpdHksIHBlcnNvbmFsIGFwcGVhcmFuY2UsIHJhY2UsIHJlbGlnaW9uLCBvciBzZXh1YWwg
aWRlbnRpdHkgYW5kIG9yaWVudGF0aW9uLgorCisjIyBPdXIgU3RhbmRhcmRzCisKK0V4YW1wbGVz
IG9mIGJlaGF2aW9yIHRoYXQgY29udHJpYnV0ZXMgdG8gY3JlYXRpbmcgYSBwb3NpdGl2ZSBlbnZp
cm9ubWVudCBpbmNsdWRlOgorCisqIFVzaW5nIHdlbGNvbWluZyBhbmQgaW5jbHVzaXZlIGxhbmd1
YWdlCisqIEJlaW5nIHJlc3BlY3RmdWwgb2YgZGlmZmVyaW5nIHZpZXdwb2ludHMgYW5kIGV4cGVy
aWVuY2VzCisqIEdyYWNlZnVsbHkgYWNjZXB0aW5nIGNvbnN0cnVjdGl2ZSBjcml0aWNpc20KKyog
Rm9jdXNpbmcgb24gd2hhdCBpcyBiZXN0IGZvciB0aGUgY29tbXVuaXR5CisqIFNob3dpbmcgZW1w
YXRoeSB0b3dhcmRzIG90aGVyIGNvbW11bml0eSBtZW1iZXJzCisKK0V4YW1wbGVzIG9mIHVuYWNj
ZXB0YWJsZSBiZWhhdmlvciBieSBwYXJ0aWNpcGFudHMgaW5jbHVkZToKKworKiBUaGUgdXNlIG9m
IHNleHVhbGl6ZWQgbGFuZ3VhZ2Ugb3IgaW1hZ2VyeSBhbmQgdW53ZWxjb21lIHNleHVhbCBhdHRl
bnRpb24gb3IgYWR2YW5jZXMKKyogVHJvbGxpbmcsIGluc3VsdGluZy9kZXJvZ2F0b3J5IGNvbW1l
bnRzLCBhbmQgcGVyc29uYWwgb3IgcG9saXRpY2FsIGF0dGFja3MKKyogUHVibGljIG9yIHByaXZh
dGUgaGFyYXNzbWVudAorKiBQdWJsaXNoaW5nIG90aGVycycgcHJpdmF0ZSBpbmZvcm1hdGlvbiwg
c3VjaCBhcyBhIHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMgYWRkcmVzcywgd2l0aG91dCBleHBsaWNp
dCBwZXJtaXNzaW9uCisqIE90aGVyIGNvbmR1Y3Qgd2hpY2ggY291bGQgcmVhc29uYWJseSBiZSBj
b25zaWRlcmVkIGluYXBwcm9wcmlhdGUgaW4gYSBwcm9mZXNzaW9uYWwgc2V0dGluZworCisjIyBP
dXIgUmVzcG9uc2liaWxpdGllcworCitQcm9qZWN0IG1haW50YWluZXJzIGFyZSByZXNwb25zaWJs
ZSBmb3IgY2xhcmlmeWluZyB0aGUgc3RhbmRhcmRzIG9mIGFjY2VwdGFibGUgYmVoYXZpb3IgYW5k
IGFyZSBleHBlY3RlZCB0byB0YWtlIGFwcHJvcHJpYXRlIGFuZCBmYWlyIGNvcnJlY3RpdmUgYWN0
aW9uIGluIHJlc3BvbnNlIHRvIGFueSBpbnN0YW5jZXMgb2YgdW5hY2NlcHRhYmxlIGJlaGF2aW9y
LgorCitQcm9qZWN0IG1haW50YWluZXJzIGhhdmUgdGhlIHJpZ2h0IGFuZCByZXNwb25zaWJpbGl0
eSB0byByZW1vdmUsIGVkaXQsIG9yIHJlamVjdCBjb21tZW50cywgY29tbWl0cywgY29kZSwgd2lr
aSBlZGl0cywgaXNzdWVzLCBhbmQgb3RoZXIgY29udHJpYnV0aW9ucyB0aGF0IGFyZSBub3QgYWxp
Z25lZCB0byB0aGlzIENvZGUgb2YgQ29uZHVjdCwgb3IgdG8gYmFuIHRlbXBvcmFyaWx5IG9yIHBl
cm1hbmVudGx5IGFueSBjb250cmlidXRvciBmb3Igb3RoZXIgYmVoYXZpb3JzIHRoYXQgdGhleSBk
ZWVtIGluYXBwcm9wcmlhdGUsIHRocmVhdGVuaW5nLCBvZmZlbnNpdmUsIG9yIGhhcm1mdWwuCisK
KyMjIFNjb3BlCisKK1RoaXMgQ29kZSBvZiBDb25kdWN0IGFwcGxpZXMgYm90aCB3aXRoaW4gcHJv
amVjdCBzcGFjZXMgYW5kIGluIHB1YmxpYyBzcGFjZXMgd2hlbiBhbiBpbmRpdmlkdWFsIGlzIHJl
cHJlc2VudGluZyB0aGUgcHJvamVjdCBvciBpdHMgY29tbXVuaXR5LiBFeGFtcGxlcyBvZiByZXBy
ZXNlbnRpbmcgYSBwcm9qZWN0IG9yIGNvbW11bml0eSBpbmNsdWRlIHVzaW5nIGFuIG9mZmljaWFs
IHByb2plY3QgZS1tYWlsIGFkZHJlc3MsIHBvc3RpbmcgdmlhIGFuIG9mZmljaWFsIHNvY2lhbCBt
ZWRpYSBhY2NvdW50LCBvciBhY3RpbmcgYXMgYW4gYXBwb2ludGVkIHJlcHJlc2VudGF0aXZlIGF0
IGFuIG9ubGluZSBvciBvZmZsaW5lIGV2ZW50LiBSZXByZXNlbnRhdGlvbiBvZiBhIHByb2plY3Qg
bWF5IGJlIGZ1cnRoZXIgZGVmaW5lZCBhbmQgY2xhcmlmaWVkIGJ5IHByb2plY3QgbWFpbnRhaW5l
cnMuCisKKyMjIEVuZm9yY2VtZW50CisKK0luc3RhbmNlcyBvZiBhYnVzaXZlLCBoYXJhc3Npbmcs
IG9yIG90aGVyd2lzZSB1bmFjY2VwdGFibGUgYmVoYXZpb3IgbWF5IGJlIHJlcG9ydGVkIGJ5IGNv
bnRhY3RpbmcgdGhlIHByb2plY3QgdGVhbSBhdCBheW1lcmljIERPVCBhdWd1c3RpbiBBVCBmcmFj
dGFsaWRlYXMgRE9UIGNvbS4gVGhlIHByb2plY3QgdGVhbSB3aWxsIHJldmlldyBhbmQgaW52ZXN0
aWdhdGUgYWxsIGNvbXBsYWludHMsIGFuZCB3aWxsIHJlc3BvbmQgaW4gYSB3YXkgdGhhdCBpdCBk
ZWVtcyBhcHByb3ByaWF0ZSB0byB0aGUgY2lyY3Vtc3RhbmNlcy4gVGhlIHByb2plY3QgdGVhbSBp
cyBvYmxpZ2F0ZWQgdG8gbWFpbnRhaW4gY29uZmlkZW50aWFsaXR5IHdpdGggcmVnYXJkIHRvIHRo
ZSByZXBvcnRlciBvZiBhbiBpbmNpZGVudC4gRnVydGhlciBkZXRhaWxzIG9mIHNwZWNpZmljIGVu
Zm9yY2VtZW50IHBvbGljaWVzIG1heSBiZSBwb3N0ZWQgc2VwYXJhdGVseS4KKworUHJvamVjdCBt
YWludGFpbmVycyB3aG8gZG8gbm90IGZvbGxvdyBvciBlbmZvcmNlIHRoZSBDb2RlIG9mIENvbmR1
Y3QgaW4gZ29vZCBmYWl0aCBtYXkgZmFjZSB0ZW1wb3Jhcnkgb3IgcGVybWFuZW50IHJlcGVyY3Vz
c2lvbnMgYXMgZGV0ZXJtaW5lZCBieSBvdGhlciBtZW1iZXJzIG9mIHRoZSBwcm9qZWN0J3MgbGVh
ZGVyc2hpcC4KKworIyMgQXR0cmlidXRpb24KKworVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRh
cHRlZCBmcm9tIHRoZSBbQ29udHJpYnV0b3IgQ292ZW5hbnRdW2hvbWVwYWdlXSwgdmVyc2lvbiAx
LjQsIGF2YWlsYWJsZSBhdCBbaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy92ZXJzaW9u
LzEvNF1bdmVyc2lvbl0KKworW2hvbWVwYWdlXTogaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50
Lm9yZworW3ZlcnNpb25dOiBodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24v
MS80LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIyOTYy
YWRiYTJiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9MSUNFTlNFCkBAIC0w
LDAgKzEsMjUgQEAKK0NvcHlyaWdodCAoYykgMjAxMy0yMDE5IEF5bWVyaWMgQXVndXN0aW4gYW5k
IGNvbnRyaWJ1dG9ycy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2Ygd2Vic29ja2V0cyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5Cisg
ICAgICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvTUFOSUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvTUFOSUZFU1QuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYzY2MGI5NWIxNDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvTUFOSUZFU1QuaW4KQEAgLTAsMCArMSwyIEBACitpbmNs
dWRlIExJQ0VOU0UKK2luY2x1ZGUgc3JjL3dlYnNvY2tldHMvcHkudHlwZWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9NYWtlZmlsZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9NYWtlZmlsZQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ5ZTE2ZmVmZTM3YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9NYWtlZmlsZQpAQCAtMCwwICsxLDI5IEBACisu
UEhPTlk6IGRlZmF1bHQgc3R5bGUgdGVzdCBjb3ZlcmFnZSBidWlsZCBjbGVhbgorCitleHBvcnQg
UFlUSE9OQVNZTkNJT0RFQlVHPTEKK2V4cG9ydCBQWVRIT05QQVRIPXNyYworCitkZWZhdWx0OiBj
b3ZlcmFnZSBzdHlsZQorCitzdHlsZToKKwlpc29ydCAtLXJlY3Vyc2l2ZSBzcmMgdGVzdHMKKwli
bGFjayBzcmMgdGVzdHMKKwlmbGFrZTggc3JjIHRlc3RzCisJbXlweSAtLXN0cmljdCBzcmMKKwor
dGVzdDoKKwlweXRob24gLVcgZGVmYXVsdCAtbSB1bml0dGVzdAorCitjb3ZlcmFnZToKKwlweXRo
b24gLW0gY292ZXJhZ2UgZXJhc2UKKwlweXRob24gLVcgZGVmYXVsdCAtbSBjb3ZlcmFnZSBydW4g
LW0gdW5pdHRlc3QKKwlweXRob24gLW0gY292ZXJhZ2UgaHRtbAorCXB5dGhvbiAtbSBjb3ZlcmFn
ZSByZXBvcnQgLS1zaG93LW1pc3NpbmcgLS1mYWlsLXVuZGVyPTEwMAorCitidWlsZDoKKwlweXRo
b24gc2V0dXAucHkgYnVpbGRfZXh0IC0taW5wbGFjZQorCitjbGVhbjoKKwlmaW5kIC4gLW5hbWUg
JyoucHljJyAtbyAtbmFtZSAnKi5zbycgLWRlbGV0ZQorCWZpbmQgLiAtbmFtZSBfX3B5Y2FjaGVf
XyAtZGVsZXRlCisJcm0gLXJmIC5jb3ZlcmFnZSBidWlsZCBjb21wbGlhbmNlL3JlcG9ydHMgZGlz
dCBkb2NzL19idWlsZCBodG1sY292IE1BTklGRVNUIHNyYy93ZWJzb2NrZXRzLmVnZy1pbmZvCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9S
RUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWUxNWJh
MTk4MWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL1JFQURNRS5yc3QKQEAg
LTAsMCArMSwxNTQgQEAKKy4uIGltYWdlOjogbG9nby9ob3Jpem9udGFsLnN2ZworICAgOndpZHRo
OiA0ODBweAorICAgOmFsdDogd2Vic29ja2V0cworCit8cnRkfCB8cHlwaS12fCB8cHlwaS1weXZl
cnNpb25zfCB8cHlwaS1sfCB8cHlwaS13aGVlbHwgfGNpcmNsZWNpfCB8Y29kZWNvdnwKKworLi4g
fHJ0ZHwgaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy93ZWJzb2NrZXRz
L2JhZGdlLz92ZXJzaW9uPWxhdGVzdAorICAgOnRhcmdldDogaHR0cHM6Ly93ZWJzb2NrZXRzLnJl
YWR0aGVkb2NzLmlvLworCisuLiB8cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMu
aW8vcHlwaS92L3dlYnNvY2tldHMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhv
bi5vcmcvcHlwaS93ZWJzb2NrZXRzCisKKy4uIHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0
cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvd2Vic29ja2V0cy5zdmcKKyAgICA6
dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3dlYnNvY2tldHMKKworLi4gfHB5
cGktbHwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvbC93ZWJzb2NrZXRzLnN2
ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvd2Vic29ja2V0cwor
CisuLiB8cHlwaS13aGVlbHwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvd2hl
ZWwvd2Vic29ja2V0cy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9w
eXBpL3dlYnNvY2tldHMKKworLi4gfGNpcmNsZWNpfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVs
ZHMuaW8vY2lyY2xlY2kvcHJvamVjdC9naXRodWIvYWF1Z3VzdGluL3dlYnNvY2tldHMuc3ZnCisg
ICA6dGFyZ2V0OiBodHRwczovL2NpcmNsZWNpLmNvbS9naC9hYXVndXN0aW4vd2Vic29ja2V0cwor
CisuLiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWF1Z3VzdGluL3dl
YnNvY2tldHMvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcKKyAgICA6dGFyZ2V0OiBodHRw
czovL2NvZGVjb3YuaW8vZ2gvYWF1Z3VzdGluL3dlYnNvY2tldHMKKworV2hhdCBpcyBgYHdlYnNv
Y2tldHNgYD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Bgd2Vic29ja2V0c2BgIGlzIGEg
bGlicmFyeSBmb3IgYnVpbGRpbmcgV2ViU29ja2V0IHNlcnZlcnNfIGFuZCBjbGllbnRzXyBpbgor
UHl0aG9uIHdpdGggYSBmb2N1cyBvbiBjb3JyZWN0bmVzcyBhbmQgc2ltcGxpY2l0eS4KKworLi4g
X3NlcnZlcnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9ibG9iL21h
c3Rlci9leGFtcGxlL3NlcnZlci5weQorLi4gX2NsaWVudHM6IGh0dHBzOi8vZ2l0aHViLmNvbS9h
YXVndXN0aW4vd2Vic29ja2V0cy9ibG9iL21hc3Rlci9leGFtcGxlL2NsaWVudC5weQorCitCdWls
dCBvbiB0b3Agb2YgYGBhc3luY2lvYGAsIFB5dGhvbidzIHN0YW5kYXJkIGFzeW5jaHJvbm91cyBJ
L08gZnJhbWV3b3JrLCBpdAorcHJvdmlkZXMgYW4gZWxlZ2FudCBjb3JvdXRpbmUtYmFzZWQgQVBJ
LgorCitgRG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgb24gUmVhZCB0aGUgRG9jcy4gPGh0dHBz
Oi8vd2Vic29ja2V0cy5yZWFkdGhlZG9jcy5pby8+YF8KKworSGVyZSdzIGhvdyBhIGNsaWVudCBz
ZW5kcyBhbmQgcmVjZWl2ZXMgbWVzc2FnZXM6CisKKy4uIGNvcHktcGFzdGVkIGJlY2F1c2UgR2l0
SHViIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgaW5jbHVkZSBkaXJlY3RpdmUKKworLi4gY29kZTo6IHB5
dGhvbgorCisgICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyAgICBpbXBvcnQgYXN5bmNpbwor
ICAgIGltcG9ydCB3ZWJzb2NrZXRzCisKKyAgICBhc3luYyBkZWYgaGVsbG8odXJpKToKKyAgICAg
ICAgYXN5bmMgd2l0aCB3ZWJzb2NrZXRzLmNvbm5lY3QodXJpKSBhcyB3ZWJzb2NrZXQ6CisgICAg
ICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZCgiSGVsbG8gd29ybGQhIikKKyAgICAgICAgICAg
IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKworICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5y
dW5fdW50aWxfY29tcGxldGUoCisgICAgICAgIGhlbGxvKCd3czovL2xvY2FsaG9zdDo4NzY1Jykp
CisKK0FuZCBoZXJlJ3MgYW4gZWNobyBzZXJ2ZXI6CisKKy4uIGNvZGU6OiBweXRob24KKworICAg
ICMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisgICAgaW1wb3J0IGFzeW5jaW8KKyAgICBpbXBvcnQg
d2Vic29ja2V0cworCisgICAgYXN5bmMgZGVmIGVjaG8od2Vic29ja2V0LCBwYXRoKToKKyAgICAg
ICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd2Vic29ja2V0OgorICAgICAgICAgICAgYXdhaXQgd2Vi
c29ja2V0LnNlbmQobWVzc2FnZSkKKworICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5f
dW50aWxfY29tcGxldGUoCisgICAgICAgIHdlYnNvY2tldHMuc2VydmUoZWNobywgJ2xvY2FsaG9z
dCcsIDg3NjUpKQorICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9yZXZlcigpCisK
K0RvZXMgdGhhdCBsb29rIGdvb2Q/CisKK2BHZXQgc3RhcnRlZCB3aXRoIHRoZSB0dXRvcmlhbCEg
PGh0dHBzOi8vd2Vic29ja2V0cy5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvaW50cm8uaHRtbD5g
XworCisuLiByYXc6OiBodG1sCisKKyAgICA8aHI+CisgICAgPGltZyBhbGlnbj0ibGVmdCIgaGVp
Z2h0PSIxNTAiIHdpZHRoPSIxNTAiIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQu
Y29tL2FhdWd1c3Rpbi93ZWJzb2NrZXRzL21hc3Rlci9sb2dvL3RpZGVsaWZ0LnBuZyI+CisgICAg
PGgzIGFsaWduPSJjZW50ZXIiPjxpPndlYnNvY2tldHMgZm9yIGVudGVycHJpc2U8L2k+PC9oMz4K
KyAgICA8cCBhbGlnbj0iY2VudGVyIj48aT5BdmFpbGFibGUgYXMgcGFydCBvZiB0aGUgVGlkZWxp
ZnQgU3Vic2NyaXB0aW9uPC9pPjwvcD4KKyAgICA8cCBhbGlnbj0iY2VudGVyIj48aT5UaGUgbWFp
bnRhaW5lcnMgb2Ygd2Vic29ja2V0cyBhbmQgdGhvdXNhbmRzIG9mIG90aGVyIHBhY2thZ2VzIGFy
ZSB3b3JraW5nIHdpdGggVGlkZWxpZnQgdG8gZGVsaXZlciBjb21tZXJjaWFsIHN1cHBvcnQgYW5k
IG1haW50ZW5hbmNlIGZvciB0aGUgb3BlbiBzb3VyY2UgZGVwZW5kZW5jaWVzIHlvdSB1c2UgdG8g
YnVpbGQgeW91ciBhcHBsaWNhdGlvbnMuIFNhdmUgdGltZSwgcmVkdWNlIHJpc2ssIGFuZCBpbXBy
b3ZlIGNvZGUgaGVhbHRoLCB3aGlsZSBwYXlpbmcgdGhlIG1haW50YWluZXJzIG9mIHRoZSBleGFj
dCBkZXBlbmRlbmNpZXMgeW91IHVzZS4gPGEgaHJlZj0iaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vi
c2NyaXB0aW9uL3BrZy9weXBpLXdlYnNvY2tldHM/dXRtX3NvdXJjZT1weXBpLXdlYnNvY2tldHMm
dXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lIj5MZWFybiBtb3JlLjwvYT48
L2k+PC9wPgorICAgIDxocj4KKyAgICA8cD4oSWYgeW91IGNvbnRyaWJ1dGUgdG8gPGNvZGU+d2Vi
c29ja2V0czwvY29kZT4gYW5kIHdvdWxkIGxpa2UgdG8gYmVjb21lIGFuIG9mZmljaWFsIHN1cHBv
cnQgcHJvdmlkZXIsIDxhIGhyZWY9Imh0dHBzOi8vZnJhY3RhbGlkZWFzLmNvbS8iPmxldCBtZSBr
bm93PC9hPi4pPC9wPgorCitXaHkgc2hvdWxkIEkgdXNlIGBgd2Vic29ja2V0c2BgPworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRldmVsb3BtZW50IG9mIGBgd2Vic29j
a2V0c2BgIGlzIHNoYXBlZCBieSBmb3VyIHByaW5jaXBsZXM6CisKKzEuICoqU2ltcGxpY2l0eSoq
OiBhbGwgeW91IG5lZWQgdG8gdW5kZXJzdGFuZCBpcyBgYG1zZyA9IGF3YWl0IHdzLnJlY3YoKWBg
IGFuZAorICAgYGBhd2FpdCB3cy5zZW5kKG1zZylgYDsgYGB3ZWJzb2NrZXRzYGAgdGFrZXMgY2Fy
ZSBvZiBtYW5hZ2luZyBjb25uZWN0aW9ucworICAgc28geW91IGNhbiBmb2N1cyBvbiB5b3VyIGFw
cGxpY2F0aW9uLgorCisyLiAqKlJvYnVzdG5lc3MqKjogYGB3ZWJzb2NrZXRzYGAgaXMgYnVpbHQg
Zm9yIHByb2R1Y3Rpb247IGZvciBleGFtcGxlIGl0IHdhcworICAgdGhlIG9ubHkgbGlicmFyeSB0
byBgaGFuZGxlIGJhY2twcmVzc3VyZSBjb3JyZWN0bHlgXyBiZWZvcmUgdGhlIGlzc3VlCisgICBi
ZWNhbWUgd2lkZWx5IGtub3duIGluIHRoZSBQeXRob24gY29tbXVuaXR5LgorCiszLiAqKlF1YWxp
dHkqKjogYGB3ZWJzb2NrZXRzYGAgaXMgaGVhdmlseSB0ZXN0ZWQuIENvbnRpbnVvdXMgaW50ZWdy
YXRpb24gZmFpbHMKKyAgIHVuZGVyIDEwMCUgYnJhbmNoIGNvdmVyYWdlLiBBbHNvIGl0IHBhc3Nl
cyB0aGUgaW5kdXN0cnktc3RhbmRhcmQgYEF1dG9iYWhuCisgICBUZXN0c3VpdGVgXy4KKworNC4g
KipQZXJmb3JtYW5jZSoqOiBtZW1vcnkgdXNlIGlzIGNvbmZpZ3VyYWJsZS4gQW4gZXh0ZW5zaW9u
IHdyaXR0ZW4gaW4gQworICAgYWNjZWxlcmF0ZXMgZXhwZW5zaXZlIG9wZXJhdGlvbnMuIEl0J3Mg
cHJlLWNvbXBpbGVkIGZvciBMaW51eCwgbWFjT1MgYW5kCisgICBXaW5kb3dzIGFuZCBwYWNrYWdl
ZCBpbiB0aGUgd2hlZWwgZm9ybWF0IGZvciBlYWNoIHN5c3RlbSBhbmQgUHl0aG9uIHZlcnNpb24u
CisKK0RvY3VtZW50YXRpb24gaXMgYSBmaXJzdCBjbGFzcyBjb25jZXJuIGluIHRoZSBwcm9qZWN0
LiBIZWFkIG92ZXIgdG8gYFJlYWQgdGhlCitEb2NzYF8gYW5kIHNlZSBmb3IgeW91cnNlbGYuCisK
Ky4uIF9SZWFkIHRoZSBEb2NzOiBodHRwczovL3dlYnNvY2tldHMucmVhZHRoZWRvY3MuaW8vCisu
LiBfaGFuZGxlIGJhY2twcmVzc3VyZSBjb3JyZWN0bHk6IGh0dHBzOi8vdm9ycHVzLm9yZy9ibG9n
L3NvbWUtdGhvdWdodHMtb24tYXN5bmNocm9ub3VzLWFwaS1kZXNpZ24taW4tYS1wb3N0LWFzeW5j
YXdhaXQtd29ybGQvI3dlYnNvY2tldC1zZXJ2ZXJzCisuLiBfQXV0b2JhaG4gVGVzdHN1aXRlOiBo
dHRwczovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMvYmxvYi9tYXN0ZXIvY29tcGxp
YW5jZS9SRUFETUUucnN0CisKK1doeSBzaG91bGRuJ3QgSSB1c2UgYGB3ZWJzb2NrZXRzYGA/Cist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIElmIHlvdSBwcmVmZXIgY2Fs
bGJhY2tzIG92ZXIgY29yb3V0aW5lczogYGB3ZWJzb2NrZXRzYGAgd2FzIGNyZWF0ZWQgdG8KKyAg
cHJvdmlkZSB0aGUgYmVzdCBjb3JvdXRpbmUtYmFzZWQgQVBJIHRvIG1hbmFnZSBXZWJTb2NrZXQg
Y29ubmVjdGlvbnMgaW4KKyAgUHl0aG9uLiBQaWNrIGFub3RoZXIgbGlicmFyeSBmb3IgYSBjYWxs
YmFjay1iYXNlZCBBUEkuCisqIElmIHlvdSdyZSBsb29raW5nIGZvciBhIG1peGVkIEhUVFAgLyBX
ZWJTb2NrZXQgbGlicmFyeTogYGB3ZWJzb2NrZXRzYGAgYWltcworICBhdCBiZWluZyBhbiBleGNl
bGxlbnQgaW1wbGVtZW50YXRpb24gb2YgOnJmYzpgNjQ1NWA6IFRoZSBXZWJTb2NrZXQgUHJvdG9j
b2wKKyAgYW5kIDpyZmM6YDc2OTJgOiBDb21wcmVzc2lvbiBFeHRlbnNpb25zIGZvciBXZWJTb2Nr
ZXQuIEl0cyBzdXBwb3J0IGZvciBIVFRQCisgIGlzIG1pbmltYWwg4oCUIGp1c3QgZW5vdWdoIGZv
ciBhIEhUVFAgaGVhbHRoIGNoZWNrLgorKiBJZiB5b3Ugd2FudCB0byB1c2UgUHl0aG9uIDI6IGBg
d2Vic29ja2V0c2BgIGJ1aWxkcyB1cG9uIGBgYXN5bmNpb2BgIHdoaWNoCisgIG9ubHkgd29ya3Mg
b24gUHl0aG9uIDMuIGBgd2Vic29ja2V0c2BgIHJlcXVpcmVzIFB5dGhvbiDiiaUgMy42LjEuCisK
K1doYXQgZWxzZT8KKy0tLS0tLS0tLS0KKworQnVnIHJlcG9ydHMsIHBhdGNoZXMgYW5kIHN1Z2dl
c3Rpb25zIGFyZSB3ZWxjb21lIQorCitUbyByZXBvcnQgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5
LCBwbGVhc2UgdXNlIHRoZSBgVGlkZWxpZnQgc2VjdXJpdHkKK2NvbnRhY3RgXy4gVGlkZWxpZnQg
d2lsbCBjb29yZGluYXRlIHRoZSBmaXggYW5kIGRpc2Nsb3N1cmUuCisKKy4uIF9UaWRlbGlmdCBz
ZWN1cml0eSBjb250YWN0OiBodHRwczovL3RpZGVsaWZ0LmNvbS9zZWN1cml0eQorCitGb3IgYW55
dGhpbmcgZWxzZSwgcGxlYXNlIG9wZW4gYW4gaXNzdWVfIG9yIHNlbmQgYSBgcHVsbCByZXF1ZXN0
YF8uCisKKy4uIF9pc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93ZWJzb2NrZXRz
L2lzc3Vlcy9uZXcKKy4uIF9wdWxsIHJlcXVlc3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0
aW4vd2Vic29ja2V0cy9jb21wYXJlLworCitQYXJ0aWNpcGFudHMgbXVzdCB1cGhvbGQgdGhlIGBD
b250cmlidXRvciBDb3ZlbmFudCBjb2RlIG9mIGNvbmR1Y3RgXy4KKworLi4gX0NvbnRyaWJ1dG9y
IENvdmVuYW50IGNvZGUgb2YgY29uZHVjdDogaHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93
ZWJzb2NrZXRzL2Jsb2IvbWFzdGVyL0NPREVfT0ZfQ09ORFVDVC5tZAorCitgYHdlYnNvY2tldHNg
YCBpcyByZWxlYXNlZCB1bmRlciB0aGUgYEJTRCBsaWNlbnNlYF8uCisKKy4uIF9CU0QgbGljZW5z
ZTogaHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93ZWJzb2NrZXRzL2Jsb2IvbWFzdGVyL0xJ
Q0VOU0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL1JFQURNRS5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODU3MGY5MTc2ZDU2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL2NvbXBsaWFuY2UvUkVBRE1FLnJzdApAQCAtMCwwICsxLDUwIEBACitB
dXRvYmFobiBUZXN0c3VpdGUKKz09PT09PT09PT09PT09PT09PQorCitHZW5lcmFsIGluZm9ybWF0
aW9uIGFuZCBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFibGUgYXQKK2h0dHBz
Oi8vZ2l0aHViLmNvbS9jcm9zc2JhcmlvL2F1dG9iYWhuLXRlc3RzdWl0ZS4KKworVG8gaW1wcm92
ZSBwZXJmb3JtYW5jZSwgeW91IHNob3VsZCBjb21waWxlIHRoZSBDIGV4dGVuc2lvbiBmaXJzdDo6
CisKKyAgICAkIHB5dGhvbiBzZXR1cC5weSBidWlsZF9leHQgLS1pbnBsYWNlCisKK1J1bm5pbmcg
dGhlIHRlc3Qgc3VpdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIGNvbW1hbmRzIGJl
bG93IG11c3QgYmUgcnVuIGZyb20gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgZmlsZS4K
KworVG8gdGVzdCB0aGUgc2VydmVyOjoKKworICAgICQgUFlUSE9OUEFUSD0uLiBweXRob24gdGVz
dF9zZXJ2ZXIucHkKKyAgICAkIHdzdGVzdCAtbSBmdXp6aW5nY2xpZW50CisKK1RvIHRlc3QgdGhl
IGNsaWVudDo6CisKKyAgICAkIHdzdGVzdCAtbSBmdXp6aW5nc2VydmVyCisgICAgJCBQWVRIT05Q
QVRIPS4uIHB5dGhvbiB0ZXN0X2NsaWVudC5weQorCitSdW4gdGhlIGZpcnN0IGNvbW1hbmQgaW4g
YSBzaGVsbC4gUnVuIHRoZSBzZWNvbmQgY29tbWFuZCBpbiBhbm90aGVyIHNoZWxsLgorSXQgc2hv
dWxkIHRha2UgYWJvdXQgdGVuIG1pbnV0ZXMgdG8gY29tcGxldGUg4oCUIHdzdGVzdCBpcyB0aGUg
Ym90dGxlbmVjay4KK1RoZW4ga2lsbCB0aGUgZmlyc3Qgb25lIHdpdGggQ3RybC1DLgorCitUaGUg
dGVzdCBjbGllbnQgb3Igc2VydmVyIHNob3VsZG4ndCBkaXNwbGF5IGFueSBleGNlcHRpb25zLiBU
aGUgcmVzdWx0cyBhcmUKK3N0b3JlZCBpbiByZXBvcnRzL2NsaWVudHMvaW5kZXguaHRtbC4KKwor
Tm90ZSB0aGF0IHRoZSBBdXRvYmFobiBzb2Z0d2FyZSBvbmx5IHN1cHBvcnRzIFB5dGhvbiAyLCB3
aGlsZSBgYHdlYnNvY2tldHNgYAorb25seSBzdXBwb3J0cyBQeXRob24gMzsgeW91IG5lZWQgdHdv
IGRpZmZlcmVudCBlbnZpcm9ubWVudHMuCisKK0NvbmZvcm1hbmNlIG5vdGVzCistLS0tLS0tLS0t
LS0tLS0tLQorCitTb21lIHRlc3QgY2FzZXMgYXJlIG1vcmUgc3RyaWN0IHRoYW4gdGhlIFJGQy4g
R2l2ZW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorbGlicmFyeSBhbmQgdGhlIHRlc3QgZWNo
byBjbGllbnQgb3Igc2VydmVyLCBgYHdlYnNvY2tldHNgYCBnZXRzIGEgIk5vbi1TdHJpY3QiCitp
biB0aGVzZSBjYXNlcy4KKworSW4gMy4yLCAzLjMsIDQuMS4zLCA0LjEuNCwgNC4yLjMsIDQuMi40
LCBhbmQgNS4xNSBgYHdlYnNvY2tldHNgYCBub3RpY2VzIHRoZQorcHJvdG9jb2wgZXJyb3IgYW5k
IGNsb3NlcyB0aGUgY29ubmVjdGlvbiBiZWZvcmUgaXQgaGFzIGhhZCBhIGNoYW5jZSB0byBlY2hv
Cit0aGUgcHJldmlvdXMgZnJhbWUuCisKK0luIDYuNC4zIGFuZCA2LjQuNCwgZXZlbiB0aG91Z2gg
aXQgdXNlcyBhbiBpbmNyZW1lbnRhbCBkZWNvZGVyLCBgYHdlYnNvY2tldHNgYAorZG9lc24ndCBu
b3RpY2UgdGhlIGludmFsaWQgdXRmLTggZmFzdCBlbm91Z2ggdG8gZ2V0IGEgIlN0cmljdCIgcGFz
cy4gVGhlc2UKK3Rlc3RzIGFyZSBtb3JlIHN0cmljdCB0aGFuIHRoZSBSRkMuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL2Z1enppbmdjbGllbnQuanNvbiBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9jb21wbGlhbmNlL2Z1enppbmdjbGllbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIwMmZmNDlhMDNhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL2Z1enppbmdjbGllbnQuanNvbgpAQCAtMCwwICsx
LDExIEBACisKK3sKKyAgICJvcHRpb25zIjogeyJmYWlsQnlEcm9wIjogZmFsc2V9LAorICAgIm91
dGRpciI6ICIuL3JlcG9ydHMvc2VydmVycyIsCisKKyAgICJzZXJ2ZXJzIjogW3siYWdlbnQiOiAi
d2Vic29ja2V0cyIsICJ1cmwiOiAid3M6Ly9sb2NhbGhvc3Q6ODY0MiIsICJvcHRpb25zIjogeyJ2
ZXJzaW9uIjogMTh9fV0sCisKKyAgICJjYXNlcyI6IFsiKiJdLAorICAgImV4Y2x1ZGUtY2FzZXMi
OiBbXSwKKyAgICJleGNsdWRlLWFnZW50LWNhc2VzIjoge30KK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9jb21wbGlhbmNlL2Z1enppbmdzZXJ2ZXIuanNvbiBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9jb21wbGlhbmNlL2Z1enppbmdzZXJ2ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjFiZGI0MjcyM2VmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy9jb21wbGlhbmNlL2Z1enppbmdzZXJ2ZXIuanNvbgpAQCAtMCwwICsxLDEyIEBACisK
K3sKKyAgICJ1cmwiOiAid3M6Ly9sb2NhbGhvc3Q6ODY0MiIsCisKKyAgICJvcHRpb25zIjogeyJm
YWlsQnlEcm9wIjogZmFsc2V9LAorICAgIm91dGRpciI6ICIuL3JlcG9ydHMvY2xpZW50cyIsCisg
ICAid2VicG9ydCI6IDgwODAsCisKKyAgICJjYXNlcyI6IFsiKiJdLAorICAgImV4Y2x1ZGUtY2Fz
ZXMiOiBbXSwKKyAgICJleGNsdWRlLWFnZW50LWNhc2VzIjoge30KK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL3Rlc3RfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2NvbXBsaWFuY2UvdGVzdF9jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi41ZmQwZjRiNGZiM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvY29tcGxpYW5jZS90ZXN0X2NsaWVudC5weQpAQCAtMCwwICsxLDQ5IEBACitpbXBvcnQganNv
bgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCB1cmxsaWIucGFyc2UKKworaW1wb3J0IGFzeW5jaW8K
K2ltcG9ydCB3ZWJzb2NrZXRzCisKKworbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5n
LldBUk5JTkcpCisKKyMgVW5jb21tZW50IHRoaXMgbGluZSB0byBtYWtlIG9ubHkgd2Vic29ja2V0
cyBtb3JlIHZlcmJvc2UuCisjIGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJzb2NrZXRzJykuc2V0TGV2
ZWwobG9nZ2luZy5ERUJVRykKKworCitTRVJWRVIgPSAid3M6Ly8xMjcuMC4wLjE6ODY0MiIKK0FH
RU5UID0gIndlYnNvY2tldHMiCisKKworYXN5bmMgZGVmIGdldF9jYXNlX2NvdW50KHNlcnZlcik6
CisgICAgdXJpID0gZiJ7c2VydmVyfS9nZXRDYXNlQ291bnQiCisgICAgYXN5bmMgd2l0aCB3ZWJz
b2NrZXRzLmNvbm5lY3QodXJpKSBhcyB3czoKKyAgICAgICAgbXNnID0gd3MucmVjdigpCisgICAg
cmV0dXJuIGpzb24ubG9hZHMobXNnKQorCisKK2FzeW5jIGRlZiBydW5fY2FzZShzZXJ2ZXIsIGNh
c2UsIGFnZW50KToKKyAgICB1cmkgPSBmIntzZXJ2ZXJ9L3J1bkNhc2U/Y2FzZT17Y2FzZX0mYWdl
bnQ9e2FnZW50fSIKKyAgICBhc3luYyB3aXRoIHdlYnNvY2tldHMuY29ubmVjdCh1cmksIG1heF9z
aXplPTIgKiogMjUsIG1heF9xdWV1ZT0xKSBhcyB3czoKKyAgICAgICAgYXN5bmMgZm9yIG1zZyBp
biB3czoKKyAgICAgICAgICAgIGF3YWl0IHdzLnNlbmQobXNnKQorCisKK2FzeW5jIGRlZiB1cGRh
dGVfcmVwb3J0cyhzZXJ2ZXIsIGFnZW50KToKKyAgICB1cmkgPSBmIntzZXJ2ZXJ9L3VwZGF0ZVJl
cG9ydHM/YWdlbnQ9e2FnZW50fSIKKyAgICBhc3luYyB3aXRoIHdlYnNvY2tldHMuY29ubmVjdCh1
cmkpOgorICAgICAgICBwYXNzCisKKworYXN5bmMgZGVmIHJ1bl90ZXN0cyhzZXJ2ZXIsIGFnZW50
KToKKyAgICBjYXNlcyA9IGF3YWl0IGdldF9jYXNlX2NvdW50KHNlcnZlcikKKyAgICBmb3IgY2Fz
ZSBpbiByYW5nZSgxLCBjYXNlcyArIDEpOgorICAgICAgICBwcmludChmIlJ1bm5pbmcgdGVzdCBj
YXNlIHtjYXNlfSBvdXQgb2Yge2Nhc2VzfSIsIGVuZD0iXHIiKQorICAgICAgICBhd2FpdCBydW5f
Y2FzZShzZXJ2ZXIsIGNhc2UsIGFnZW50KQorICAgIHByaW50KGYiUmFuIHtjYXNlc30gdGVzdCBj
YXNlcyAgICAgICAgICAgICAgICIpCisgICAgYXdhaXQgdXBkYXRlX3JlcG9ydHMoc2VydmVyLCBh
Z2VudCkKKworCittYWluID0gcnVuX3Rlc3RzKFNFUlZFUiwgdXJsbGliLnBhcnNlLnF1b3RlKEFH
RU5UKSkKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUobWFpbikK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL3Rlc3Rfc2VydmVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL2NvbXBsaWFuY2UvdGVzdF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MDIwZjY4ZDM1ZjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS90ZXN0X3NlcnZlci5weQpAQCAtMCwwICsxLDI3
IEBACitpbXBvcnQgbG9nZ2luZworCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IHdlYnNvY2tldHMK
KworCitsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuV0FSTklORykKKworIyBVbmNv
bW1lbnQgdGhpcyBsaW5lIHRvIG1ha2Ugb25seSB3ZWJzb2NrZXRzIG1vcmUgdmVyYm9zZS4KKyMg
bG9nZ2luZy5nZXRMb2dnZXIoJ3dlYnNvY2tldHMnKS5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQor
CisKK0hPU1QsIFBPUlQgPSAiMTI3LjAuMC4xIiwgODY0MgorCisKK2FzeW5jIGRlZiBlY2hvKHdz
LCBwYXRoKToKKyAgICBhc3luYyBmb3IgbXNnIGluIHdzOgorICAgICAgICBhd2FpdCB3cy5zZW5k
KG1zZykKKworCitzdGFydF9zZXJ2ZXIgPSB3ZWJzb2NrZXRzLnNlcnZlKGVjaG8sIEhPU1QsIFBP
UlQsIG1heF9zaXplPTIgKiogMjUsIG1heF9xdWV1ZT0xKQorCit0cnk6CisgICAgYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCisgICAgYXN5
bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVyKCkKK2V4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9NYWtlZmls
ZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYmIyNWFhNDlkMDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2RvY3MvTWFrZWZpbGUKQEAgLTAsMCArMSwxNjAgQEAKKyMgTWFrZWZpbGUgZm9y
IFNwaGlueCBkb2N1bWVudGF0aW9uCisjCisKKyMgWW91IGNhbiBzZXQgdGhlc2UgdmFyaWFibGVz
IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KK1NQSElOWE9QVFMgICAgPQorU1BISU5YQlVJTEQgICA9
IHNwaGlueC1idWlsZAorUEFQRVIgICAgICAgICA9CitCVUlMRERJUiAgICAgID0gX2J1aWxkCisK
KyMgSW50ZXJuYWwgdmFyaWFibGVzLgorUEFQRVJPUFRfYTQgICAgID0gLUQgbGF0ZXhfcGFwZXJf
c2l6ZT1hNAorUEFQRVJPUFRfbGV0dGVyID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1sZXR0ZXIKK0FM
TFNQSElOWE9QVFMgICA9IC1kICQoQlVJTERESVIpL2RvY3RyZWVzICQoUEFQRVJPUFRfJChQQVBF
UikpICQoU1BISU5YT1BUUykgLgorIyB0aGUgaTE4biBidWlsZGVyIGNhbm5vdCBzaGFyZSB0aGUg
ZW52aXJvbm1lbnQgYW5kIGRvY3RyZWVzIHdpdGggdGhlIG90aGVycworSTE4TlNQSElOWE9QVFMg
ID0gJChQQVBFUk9QVF8kKFBBUEVSKSkgJChTUEhJTlhPUFRTKSAuCisKKy5QSE9OWTogaGVscCBj
bGVhbiBodG1sIGRpcmh0bWwgc2luZ2xlaHRtbCBwaWNrbGUganNvbiBodG1saGVscCBxdGhlbHAg
ZGV2aGVscCBlcHViIGxhdGV4IGxhdGV4cGRmIHRleHQgbWFuIGNoYW5nZXMgbGlua2NoZWNrIGRv
Y3Rlc3QgZ2V0dGV4dAorCitoZWxwOgorCUBlY2hvICJQbGVhc2UgdXNlIFxgbWFrZSA8dGFyZ2V0
Picgd2hlcmUgPHRhcmdldD4gaXMgb25lIG9mIgorCUBlY2hvICIgIGh0bWwgICAgICAgdG8gbWFr
ZSBzdGFuZGFsb25lIEhUTUwgZmlsZXMiCisJQGVjaG8gIiAgZGlyaHRtbCAgICB0byBtYWtlIEhU
TUwgZmlsZXMgbmFtZWQgaW5kZXguaHRtbCBpbiBkaXJlY3RvcmllcyIKKwlAZWNobyAiICBzaW5n
bGVodG1sIHRvIG1ha2UgYSBzaW5nbGUgbGFyZ2UgSFRNTCBmaWxlIgorCUBlY2hvICIgIHBpY2ts
ZSAgICAgdG8gbWFrZSBwaWNrbGUgZmlsZXMiCisJQGVjaG8gIiAganNvbiAgICAgICB0byBtYWtl
IEpTT04gZmlsZXMiCisJQGVjaG8gIiAgaHRtbGhlbHAgICB0byBtYWtlIEhUTUwgZmlsZXMgYW5k
IGEgSFRNTCBoZWxwIHByb2plY3QiCisJQGVjaG8gIiAgcXRoZWxwICAgICB0byBtYWtlIEhUTUwg
ZmlsZXMgYW5kIGEgcXRoZWxwIHByb2plY3QiCisJQGVjaG8gIiAgZGV2aGVscCAgICB0byBtYWtl
IEhUTUwgZmlsZXMgYW5kIGEgRGV2aGVscCBwcm9qZWN0IgorCUBlY2hvICIgIGVwdWIgICAgICAg
dG8gbWFrZSBhbiBlcHViIgorCUBlY2hvICIgIGxhdGV4ICAgICAgdG8gbWFrZSBMYVRlWCBmaWxl
cywgeW91IGNhbiBzZXQgUEFQRVI9YTQgb3IgUEFQRVI9bGV0dGVyIgorCUBlY2hvICIgIGxhdGV4
cGRmICAgdG8gbWFrZSBMYVRlWCBmaWxlcyBhbmQgcnVuIHRoZW0gdGhyb3VnaCBwZGZsYXRleCIK
KwlAZWNobyAiICB0ZXh0ICAgICAgIHRvIG1ha2UgdGV4dCBmaWxlcyIKKwlAZWNobyAiICBtYW4g
ICAgICAgIHRvIG1ha2UgbWFudWFsIHBhZ2VzIgorCUBlY2hvICIgIHRleGluZm8gICAgdG8gbWFr
ZSBUZXhpbmZvIGZpbGVzIgorCUBlY2hvICIgIGluZm8gICAgICAgdG8gbWFrZSBUZXhpbmZvIGZp
bGVzIGFuZCBydW4gdGhlbSB0aHJvdWdoIG1ha2VpbmZvIgorCUBlY2hvICIgIGdldHRleHQgICAg
dG8gbWFrZSBQTyBtZXNzYWdlIGNhdGFsb2dzIgorCUBlY2hvICIgIGNoYW5nZXMgICAgdG8gbWFr
ZSBhbiBvdmVydmlldyBvZiBhbGwgY2hhbmdlZC9hZGRlZC9kZXByZWNhdGVkIGl0ZW1zIgorCUBl
Y2hvICIgIGxpbmtjaGVjayAgdG8gY2hlY2sgYWxsIGV4dGVybmFsIGxpbmtzIGZvciBpbnRlZ3Jp
dHkiCisJQGVjaG8gIiAgZG9jdGVzdCAgICB0byBydW4gYWxsIGRvY3Rlc3RzIGVtYmVkZGVkIGlu
IHRoZSBkb2N1bWVudGF0aW9uIChpZiBlbmFibGVkKSIKKwlAZWNobyAiICBzcGVsbGluZyAgIHRv
IGNoZWNrIGZvciB0eXBvcyBpbiBkb2N1bWVudGF0aW9uIgorCitjbGVhbjoKKwktcm0gLXJmICQo
QlVJTERESVIpLyoKKworaHRtbDoKKwkkKFNQSElOWEJVSUxEKSAtYiBodG1sICQoQUxMU1BISU5Y
T1BUUykgJChCVUlMRERJUikvaHRtbAorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBU
aGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvaHRtbC4iCisKK2Rpcmh0bWw6CisJJChT
UEhJTlhCVUlMRCkgLWIgZGlyaHRtbCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2Rpcmh0
bWwKKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZXMgYXJlIGlu
ICQoQlVJTERESVIpL2Rpcmh0bWwuIgorCitzaW5nbGVodG1sOgorCSQoU1BISU5YQlVJTEQpIC1i
IHNpbmdsZWh0bWwgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9zaW5nbGVodG1sCisJQGVj
aG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2UgaXMgaW4gJChCVUlMRERJ
Uikvc2luZ2xlaHRtbC4iCisKK3BpY2tsZToKKwkkKFNQSElOWEJVSUxEKSAtYiBwaWNrbGUgJChB
TExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9waWNrbGUKKwlAZWNobworCUBlY2hvICJCdWlsZCBm
aW5pc2hlZDsgbm93IHlvdSBjYW4gcHJvY2VzcyB0aGUgcGlja2xlIGZpbGVzLiIKKworanNvbjoK
KwkkKFNQSElOWEJVSUxEKSAtYiBqc29uICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvanNv
bgorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBwcm9jZXNzIHRo
ZSBKU09OIGZpbGVzLiIKKworaHRtbGhlbHA6CisJJChTUEhJTlhCVUlMRCkgLWIgaHRtbGhlbHAg
JChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9odG1saGVscAorCUBlY2hvCisJQGVjaG8gIkJ1
aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBydW4gSFRNTCBIZWxwIFdvcmtzaG9wIHdpdGggdGhl
IiBcCisJICAgICAgIi5oaHAgcHJvamVjdCBmaWxlIGluICQoQlVJTERESVIpL2h0bWxoZWxwLiIK
KworcXRoZWxwOgorCSQoU1BISU5YQlVJTEQpIC1iIHF0aGVscCAkKEFMTFNQSElOWE9QVFMpICQo
QlVJTERESVIpL3F0aGVscAorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91
IGNhbiBydW4gInFjb2xsZWN0aW9uZ2VuZXJhdG9yIiB3aXRoIHRoZSIgXAorCSAgICAgICIucWhj
cCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJUikvcXRoZWxwLCBsaWtlIHRoaXM6IgorCUBlY2hv
ICIjIHFjb2xsZWN0aW9uZ2VuZXJhdG9yICQoQlVJTERESVIpL3F0aGVscC93ZWJzb2NrZXRzLnFo
Y3AiCisJQGVjaG8gIlRvIHZpZXcgdGhlIGhlbHAgZmlsZToiCisJQGVjaG8gIiMgYXNzaXN0YW50
IC1jb2xsZWN0aW9uRmlsZSAkKEJVSUxERElSKS9xdGhlbHAvd2Vic29ja2V0cy5xaGMiCisKK2Rl
dmhlbHA6CisJJChTUEhJTlhCVUlMRCkgLWIgZGV2aGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJ
TERESVIpL2RldmhlbHAKKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4iCisJQGVjaG8g
IlRvIHZpZXcgdGhlIGhlbHAgZmlsZToiCisJQGVjaG8gIiMgbWtkaXIgLXAgJCRIT01FLy5sb2Nh
bC9zaGFyZS9kZXZoZWxwL3dlYnNvY2tldHMiCisJQGVjaG8gIiMgbG4gLXMgJChCVUlMRERJUikv
ZGV2aGVscCAkJEhPTUUvLmxvY2FsL3NoYXJlL2RldmhlbHAvd2Vic29ja2V0cyIKKwlAZWNobyAi
IyBkZXZoZWxwIgorCitlcHViOgorCSQoU1BISU5YQlVJTEQpIC1iIGVwdWIgJChBTExTUEhJTlhP
UFRTKSAkKEJVSUxERElSKS9lcHViCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRo
ZSBlcHViIGZpbGUgaXMgaW4gJChCVUlMRERJUikvZXB1Yi4iCisKK2xhdGV4OgorCSQoU1BISU5Y
QlVJTEQpIC1iIGxhdGV4ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvbGF0ZXgKKwlAZWNo
bworCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsgdGhlIExhVGVYIGZpbGVzIGFyZSBpbiAkKEJVSUxE
RElSKS9sYXRleC4iCisJQGVjaG8gIlJ1biBcYG1ha2UnIGluIHRoYXQgZGlyZWN0b3J5IHRvIHJ1
biB0aGVzZSB0aHJvdWdoIChwZGYpbGF0ZXgiIFwKKwkgICAgICAiKHVzZSBcYG1ha2UgbGF0ZXhw
ZGYnIGhlcmUgdG8gZG8gdGhhdCBhdXRvbWF0aWNhbGx5KS4iCisKK2xhdGV4cGRmOgorCSQoU1BI
SU5YQlVJTEQpIC1iIGxhdGV4ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvbGF0ZXgKKwlA
ZWNobyAiUnVubmluZyBMYVRlWCBmaWxlcyB0aHJvdWdoIHBkZmxhdGV4Li4uIgorCSQoTUFLRSkg
LUMgJChCVUlMRERJUikvbGF0ZXggYWxsLXBkZgorCUBlY2hvICJwZGZsYXRleCBmaW5pc2hlZDsg
dGhlIFBERiBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvbGF0ZXguIgorCit0ZXh0OgorCSQoU1BI
SU5YQlVJTEQpIC1iIHRleHQgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS90ZXh0CisJQGVj
aG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSB0ZXh0IGZpbGVzIGFyZSBpbiAkKEJVSUxE
RElSKS90ZXh0LiIKKworbWFuOgorCSQoU1BISU5YQlVJTEQpIC1iIG1hbiAkKEFMTFNQSElOWE9Q
VFMpICQoQlVJTERESVIpL21hbgorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUg
bWFudWFsIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9tYW4uIgorCit0ZXhpbmZvOgorCSQoU1BI
SU5YQlVJTEQpIC1iIHRleGluZm8gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS90ZXhpbmZv
CisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBUZXhpbmZvIGZpbGVzIGFyZSBp
biAkKEJVSUxERElSKS90ZXhpbmZvLiIKKwlAZWNobyAiUnVuIFxgbWFrZScgaW4gdGhhdCBkaXJl
Y3RvcnkgdG8gcnVuIHRoZXNlIHRocm91Z2ggbWFrZWluZm8iIFwKKwkgICAgICAiKHVzZSBcYG1h
a2UgaW5mbycgaGVyZSB0byBkbyB0aGF0IGF1dG9tYXRpY2FsbHkpLiIKKworaW5mbzoKKwkkKFNQ
SElOWEJVSUxEKSAtYiB0ZXhpbmZvICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvdGV4aW5m
bworCUBlY2hvICJSdW5uaW5nIFRleGluZm8gZmlsZXMgdGhyb3VnaCBtYWtlaW5mby4uLiIKKwlt
YWtlIC1DICQoQlVJTERESVIpL3RleGluZm8gaW5mbworCUBlY2hvICJtYWtlaW5mbyBmaW5pc2hl
ZDsgdGhlIEluZm8gZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3RleGluZm8uIgorCitnZXR0ZXh0
OgorCSQoU1BISU5YQlVJTEQpIC1iIGdldHRleHQgJChJMThOU1BISU5YT1BUUykgJChCVUlMRERJ
UikvbG9jYWxlCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBtZXNzYWdlIGNh
dGFsb2dzIGFyZSBpbiAkKEJVSUxERElSKS9sb2NhbGUuIgorCitjaGFuZ2VzOgorCSQoU1BISU5Y
QlVJTEQpIC1iIGNoYW5nZXMgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9jaGFuZ2VzCisJ
QGVjaG8KKwlAZWNobyAiVGhlIG92ZXJ2aWV3IGZpbGUgaXMgaW4gJChCVUlMRERJUikvY2hhbmdl
cy4iCisKK2xpbmtjaGVjazoKKwkkKFNQSElOWEJVSUxEKSAtYiBsaW5rY2hlY2sgJChBTExTUEhJ
TlhPUFRTKSAkKEJVSUxERElSKS9saW5rY2hlY2sKKwlAZWNobworCUBlY2hvICJMaW5rIGNoZWNr
IGNvbXBsZXRlOyBsb29rIGZvciBhbnkgZXJyb3JzIGluIHRoZSBhYm92ZSBvdXRwdXQgIiBcCisJ
ICAgICAgIm9yIGluICQoQlVJTERESVIpL2xpbmtjaGVjay9vdXRwdXQudHh0LiIKKworZG9jdGVz
dDoKKwkkKFNQSElOWEJVSUxEKSAtYiBkb2N0ZXN0ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJ
UikvZG9jdGVzdAorCUBlY2hvICJUZXN0aW5nIG9mIGRvY3Rlc3RzIGluIHRoZSBzb3VyY2VzIGZp
bmlzaGVkLCBsb29rIGF0IHRoZSAiIFwKKwkgICAgICAicmVzdWx0cyBpbiAkKEJVSUxERElSKS9k
b2N0ZXN0L291dHB1dC50eHQuIgorCitzcGVsbGluZzoKKwkkKFNQSElOWEJVSUxEKSAtYiBzcGVs
bGluZyAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3NwZWxsaW5nCisJQGVjaG8KKwlAZWNo
byAiQ2hlY2sgZmluaXNoZWQuIFdyb25nIHdvcmRzIGNhbiBiZSBmb3VuZCBpbiAiIFwKKwkJIiQo
QlVJTERESVIpL3NwZWxsaW5nL291dHB1dC50eHQuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL2RvY3MvX3N0YXRpYy90aWRlbGlmdC5wbmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9fc3Rh
dGljL3RpZGVsaWZ0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjJkMWVkNGEyYzA5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL19z
dGF0aWMvdGlkZWxpZnQucG5nCkBAIC0wLDAgKzEgQEAKKy4uLy4uL2xvZ28vdGlkZWxpZnQucG5n
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2RvY3MvX3N0YXRpYy93ZWJzb2NrZXRzLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL19zdGF0
aWMvd2Vic29ja2V0cy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li44NGMzMTY3NTgzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9f
c3RhdGljL3dlYnNvY2tldHMuc3ZnCkBAIC0wLDAgKzEgQEAKKy4uLy4uL2xvZ28vdmVydGljYWwu
c3ZnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL2RvY3MvYXBpLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2FwaS5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMjY1YTkxYzJjZGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9hcGkucnN0CkBAIC0wLDAgKzEsMTUyIEBACitB
UEkKKz09PQorCitEZXNpZ24KKy0tLS0tLQorCitgYHdlYnNvY2tldHNgYCBwcm92aWRlcyBjb21w
bGV0ZSBjbGllbnQgYW5kIHNlcnZlciBpbXBsZW1lbnRhdGlvbnMsIGFzIHNob3duCitpbiB0aGUg
OmRvYzpgZ2V0dGluZyBzdGFydGVkIGd1aWRlIDxpbnRybz5gLiBUaGVzZSBmdW5jdGlvbnMgYXJl
IGJ1aWx0IG9uIHRvcAorb2YgbG93LWxldmVsIEFQSXMgcmVmbGVjdGluZyB0aGUgdHdvIHBoYXNl
cyBvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sOgorCisxLiBBbiBvcGVuaW5nIGhhbmRzaGFrZSwg
aW4gdGhlIGZvcm0gb2YgYW4gSFRUUCBVcGdyYWRlIHJlcXVlc3Q7CisKKzIuIERhdGEgdHJhbnNm
ZXIsIGFzIGZyYW1lZCBtZXNzYWdlcywgZW5kaW5nIHdpdGggYSBjbG9zaW5nIGhhbmRzaGFrZS4K
KworVGhlIGZpcnN0IHBoYXNlIGlzIGRlc2lnbmVkIHRvIGludGVncmF0ZSB3aXRoIGV4aXN0aW5n
IEhUVFAgc29mdHdhcmUuCitgYHdlYnNvY2tldHNgYCBwcm92aWRlcyBhIG1pbmltYWwgaW1wbGVt
ZW50YXRpb24gdG8gYnVpbGQsIHBhcnNlIGFuZCB2YWxpZGF0ZQorSFRUUCByZXF1ZXN0cyBhbmQg
cmVzcG9uc2VzLgorCitUaGUgc2Vjb25kIHBoYXNlIGlzIHRoZSBjb3JlIG9mIHRoZSBXZWJTb2Nr
ZXQgcHJvdG9jb2wuIGBgd2Vic29ja2V0c2BgCitwcm92aWRlcyBhIGNvbXBsZXRlIGltcGxlbWVu
dGF0aW9uIG9uIHRvcCBvZiBgYGFzeW5jaW9gYCB3aXRoIGEgc2ltcGxlIEFQSS4KKworRm9yIGNv
bnZlbmllbmNlLCBwdWJsaWMgQVBJcyBjYW4gYmUgaW1wb3J0ZWQgZGlyZWN0bHkgZnJvbSB0aGUK
Kzptb2Q6YHdlYnNvY2tldHNgIHBhY2thZ2UsIHVubGVzcyBub3RlZCBvdGhlcndpc2UuIEFueXRo
aW5nIHRoYXQgaXNuJ3QgbGlzdGVkCitpbiB0aGlzIGRvY3VtZW50IGlzIGEgcHJpdmF0ZSBBUEku
CisKK0hpZ2gtbGV2ZWwKKy0tLS0tLS0tLS0KKworU2VydmVyCisuLi4uLi4KKworLi4gYXV0b21v
ZHVsZTo6IHdlYnNvY2tldHMuc2VydmVyCisKKyAgICAuLiBhdXRvZnVuY3Rpb246OiBzZXJ2ZSh3
c19oYW5kbGVyLCBob3N0PU5vbmUsIHBvcnQ9Tm9uZSwgKiwgY3JlYXRlX3Byb3RvY29sPU5vbmUs
IHBpbmdfaW50ZXJ2YWw9MjAsIHBpbmdfdGltZW91dD0yMCwgY2xvc2VfdGltZW91dD0xMCwgbWF4
X3NpemU9MiAqKiAyMCwgbWF4X3F1ZXVlPTIgKiogNSwgcmVhZF9saW1pdD0yICoqIDE2LCB3cml0
ZV9saW1pdD0yICoqIDE2LCBsb29wPU5vbmUsIGNvbXByZXNzaW9uPSdkZWZsYXRlJywgb3JpZ2lu
cz1Ob25lLCBleHRlbnNpb25zPU5vbmUsIHN1YnByb3RvY29scz1Ob25lLCBleHRyYV9oZWFkZXJz
PU5vbmUsIHByb2Nlc3NfcmVxdWVzdD1Ob25lLCBzZWxlY3Rfc3VicHJvdG9jb2w9Tm9uZSwgKipr
d2RzKQorICAgICAgICA6YXN5bmM6CisKKyAgICAuLiBhdXRvZnVuY3Rpb246OiB1bml4X3NlcnZl
KHdzX2hhbmRsZXIsIHBhdGgsICosIGNyZWF0ZV9wcm90b2NvbD1Ob25lLCBwaW5nX2ludGVydmFs
PTIwLCBwaW5nX3RpbWVvdXQ9MjAsIGNsb3NlX3RpbWVvdXQ9MTAsIG1heF9zaXplPTIgKiogMjAs
IG1heF9xdWV1ZT0yICoqIDUsIHJlYWRfbGltaXQ9MiAqKiAxNiwgd3JpdGVfbGltaXQ9MiAqKiAx
NiwgbG9vcD1Ob25lLCBjb21wcmVzc2lvbj0nZGVmbGF0ZScsIG9yaWdpbnM9Tm9uZSwgZXh0ZW5z
aW9ucz1Ob25lLCBzdWJwcm90b2NvbHM9Tm9uZSwgZXh0cmFfaGVhZGVycz1Ob25lLCBwcm9jZXNz
X3JlcXVlc3Q9Tm9uZSwgc2VsZWN0X3N1YnByb3RvY29sPU5vbmUsICoqa3dkcykKKyAgICAgICAg
OmFzeW5jOgorCisKKyAgICAuLiBhdXRvY2xhc3M6OiBXZWJTb2NrZXRTZXJ2ZXIKKworICAgICAg
ICAuLiBhdXRvbWV0aG9kOjogY2xvc2UKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IHdhaXRfY2xv
c2VkCisgICAgICAgIC4uIGF1dG9hdHRyaWJ1dGU6OiBzb2NrZXRzCisKKyAgICAuLiBhdXRvY2xh
c3M6OiBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbCh3c19oYW5kbGVyLCB3c19zZXJ2ZXIsICosIHBp
bmdfaW50ZXJ2YWw9MjAsIHBpbmdfdGltZW91dD0yMCwgY2xvc2VfdGltZW91dD0xMCwgbWF4X3Np
emU9MiAqKiAyMCwgbWF4X3F1ZXVlPTIgKiogNSwgcmVhZF9saW1pdD0yICoqIDE2LCB3cml0ZV9s
aW1pdD0yICoqIDE2LCBsb29wPU5vbmUsIG9yaWdpbnM9Tm9uZSwgZXh0ZW5zaW9ucz1Ob25lLCBz
dWJwcm90b2NvbHM9Tm9uZSwgZXh0cmFfaGVhZGVycz1Ob25lLCBwcm9jZXNzX3JlcXVlc3Q9Tm9u
ZSwgc2VsZWN0X3N1YnByb3RvY29sPU5vbmUpCisKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IGhh
bmRzaGFrZQorICAgICAgICAuLiBhdXRvbWV0aG9kOjogcHJvY2Vzc19yZXF1ZXN0CisgICAgICAg
IC4uIGF1dG9tZXRob2Q6OiBzZWxlY3Rfc3VicHJvdG9jb2wKKworQ2xpZW50CisuLi4uLi4KKwor
Li4gYXV0b21vZHVsZTo6IHdlYnNvY2tldHMuY2xpZW50CisKKyAgICAuLiBhdXRvZnVuY3Rpb246
OiBjb25uZWN0KHVyaSwgKiwgY3JlYXRlX3Byb3RvY29sPU5vbmUsIHBpbmdfaW50ZXJ2YWw9MjAs
IHBpbmdfdGltZW91dD0yMCwgY2xvc2VfdGltZW91dD0xMCwgbWF4X3NpemU9MiAqKiAyMCwgbWF4
X3F1ZXVlPTIgKiogNSwgcmVhZF9saW1pdD0yICoqIDE2LCB3cml0ZV9saW1pdD0yICoqIDE2LCBs
b29wPU5vbmUsIGNvbXByZXNzaW9uPSdkZWZsYXRlJywgb3JpZ2luPU5vbmUsIGV4dGVuc2lvbnM9
Tm9uZSwgc3VicHJvdG9jb2xzPU5vbmUsIGV4dHJhX2hlYWRlcnM9Tm9uZSwgKiprd2RzKQorICAg
ICAgICA6YXN5bmM6CisKKyAgICAuLiBhdXRvZnVuY3Rpb246OiB1bml4X2Nvbm5lY3QocGF0aCwg
dXJpPSJ3czovL2xvY2FsaG9zdC8iLCAqLCBjcmVhdGVfcHJvdG9jb2w9Tm9uZSwgcGluZ19pbnRl
cnZhbD0yMCwgcGluZ190aW1lb3V0PTIwLCBjbG9zZV90aW1lb3V0PTEwLCBtYXhfc2l6ZT0yICoq
IDIwLCBtYXhfcXVldWU9MiAqKiA1LCByZWFkX2xpbWl0PTIgKiogMTYsIHdyaXRlX2xpbWl0PTIg
KiogMTYsIGxvb3A9Tm9uZSwgY29tcHJlc3Npb249J2RlZmxhdGUnLCBvcmlnaW49Tm9uZSwgZXh0
ZW5zaW9ucz1Ob25lLCBzdWJwcm90b2NvbHM9Tm9uZSwgZXh0cmFfaGVhZGVycz1Ob25lLCAqKmt3
ZHMpCisgICAgICAgIDphc3luYzoKKworICAgIC4uIGF1dG9jbGFzczo6IFdlYlNvY2tldENsaWVu
dFByb3RvY29sKCosIHBpbmdfaW50ZXJ2YWw9MjAsIHBpbmdfdGltZW91dD0yMCwgY2xvc2VfdGlt
ZW91dD0xMCwgbWF4X3NpemU9MiAqKiAyMCwgbWF4X3F1ZXVlPTIgKiogNSwgcmVhZF9saW1pdD0y
ICoqIDE2LCB3cml0ZV9saW1pdD0yICoqIDE2LCBsb29wPU5vbmUsIG9yaWdpbj1Ob25lLCBleHRl
bnNpb25zPU5vbmUsIHN1YnByb3RvY29scz1Ob25lLCBleHRyYV9oZWFkZXJzPU5vbmUpCisKKyAg
ICAgICAgLi4gYXV0b21ldGhvZDo6IGhhbmRzaGFrZQorCitTaGFyZWQKKy4uLi4uLgorCisuLiBh
dXRvbW9kdWxlOjogd2Vic29ja2V0cy5wcm90b2NvbAorCisgICAgLi4gYXV0b2NsYXNzOjogV2Vi
U29ja2V0Q29tbW9uUHJvdG9jb2woKiwgcGluZ19pbnRlcnZhbD0yMCwgcGluZ190aW1lb3V0PTIw
LCBjbG9zZV90aW1lb3V0PTEwLCBtYXhfc2l6ZT0yICoqIDIwLCBtYXhfcXVldWU9MiAqKiA1LCBy
ZWFkX2xpbWl0PTIgKiogMTYsIHdyaXRlX2xpbWl0PTIgKiogMTYsIGxvb3A9Tm9uZSkKKworICAg
ICAgICAuLiBhdXRvbWV0aG9kOjogY2xvc2UKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IHdhaXRf
Y2xvc2VkCisKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IHJlY3YKKyAgICAgICAgLi4gYXV0b21l
dGhvZDo6IHNlbmQKKworICAgICAgICAuLiBhdXRvbWV0aG9kOjogcGluZworICAgICAgICAuLiBh
dXRvbWV0aG9kOjogcG9uZworCisgICAgICAgIC4uIGF1dG9hdHRyaWJ1dGU6OiBsb2NhbF9hZGRy
ZXNzCisgICAgICAgIC4uIGF1dG9hdHRyaWJ1dGU6OiByZW1vdGVfYWRkcmVzcworCisgICAgICAg
IC4uIGF1dG9hdHRyaWJ1dGU6OiBvcGVuCisgICAgICAgIC4uIGF1dG9hdHRyaWJ1dGU6OiBjbG9z
ZWQKKworVHlwZXMKKy4uLi4uCisKKy4uIGF1dG9tb2R1bGU6OiB3ZWJzb2NrZXRzLnR5cGluZwor
CisgICAgLi4gYXV0b2RhdGE6OiBEYXRhCisKKworUGVyLU1lc3NhZ2UgRGVmbGF0ZSBFeHRlbnNp
b24KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKKy4uIGF1dG9tb2R1bGU6OiB3ZWJz
b2NrZXRzLmV4dGVuc2lvbnMucGVybWVzc2FnZV9kZWZsYXRlCisKKyAgICAuLiBhdXRvY2xhc3M6
OiBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkKKworICAgIC4uIGF1dG9jbGFzczo6IENs
aWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeQorCitIVFRQIEJhc2ljIEF1dGgKKy4uLi4uLi4u
Li4uLi4uLgorCisuLiBhdXRvbW9kdWxlOjogd2Vic29ja2V0cy5hdXRoCisKKyAgICAuLiBhdXRv
ZnVuY3Rpb246OiBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnkKKworICAgIC4uIGF1dG9jbGFz
czo6IEJhc2ljQXV0aFdlYlNvY2tldFNlcnZlclByb3RvY29sCisKKyAgICAgICAgLi4gYXV0b21l
dGhvZDo6IHByb2Nlc3NfcmVxdWVzdAorCitFeGNlcHRpb25zCisuLi4uLi4uLi4uCisKKy4uIGF1
dG9tb2R1bGU6OiB3ZWJzb2NrZXRzLmV4Y2VwdGlvbnMKKyAgICA6bWVtYmVyczoKKworTG93LWxl
dmVsCistLS0tLS0tLS0KKworT3BlbmluZyBoYW5kc2hha2UKKy4uLi4uLi4uLi4uLi4uLi4uCisK
Ky4uIGF1dG9tb2R1bGU6OiB3ZWJzb2NrZXRzLmhhbmRzaGFrZQorICAgIDptZW1iZXJzOgorCitE
YXRhIHRyYW5zZmVyCisuLi4uLi4uLi4uLi4uCisKKy4uIGF1dG9tb2R1bGU6OiB3ZWJzb2NrZXRz
LmZyYW1pbmcKKyAgICA6bWVtYmVyczoKKworVVJJIHBhcnNlcgorLi4uLi4uLi4uLgorCisuLiBh
dXRvbW9kdWxlOjogd2Vic29ja2V0cy51cmkKKyAgICA6bWVtYmVyczoKKworVXRpbGl0aWVzCisu
Li4uLi4uLi4KKworLi4gYXV0b21vZHVsZTo6IHdlYnNvY2tldHMuaGVhZGVycworICAgIDptZW1i
ZXJzOgorCisuLiBhdXRvbW9kdWxlOjogd2Vic29ja2V0cy5odHRwCisgICAgOm1lbWJlcnM6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9jaGFuZ2Vsb2cucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL2RvY3MvY2hhbmdlbG9nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjA0ZjE4YTc2NTdkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9kb2NzL2NoYW5nZWxvZy5yc3QKQEAgLTAsMCArMSw1NjMgQEAKK0NoYW5nZWxvZworLS0tLS0t
LS0tCisKKy4uIGN1cnJlbnRtb2R1bGU6OiB3ZWJzb2NrZXRzCisKKzguMgorLi4uCisKKypJbiBk
ZXZlbG9wbWVudCoKKworOC4xCisuLi4KKworKiBBZGRlZCBjb21wYXRpYmlsaXR5IHdpdGggUHl0
aG9uIDMuOC4KKworOC4wLjIKKy4uLi4uCisKKyogUmVzdG9yZWQgdGhlIGFiaWxpdHkgdG8gcGFz
cyBhIHNvY2tldCB3aXRoIHRoZSBgYHNvY2tgYCBwYXJhbWV0ZXIgb2YKKyAgOmZ1bmM6YH5zZXJ2
ZXIuc2VydmVgLgorCisqIFJlbW92ZWQgYW4gaW5jb3JyZWN0IGFzc2VydGlvbiB3aGVuIGEgY29u
bmVjdGlvbiBkcm9wcy4KKworOC4wLjEKKy4uLi4uCisKKyogUmVzdG9yZWQgdGhlIGFiaWxpdHkg
dG8gaW1wb3J0IGBgV2ViU29ja2V0UHJvdG9jb2xFcnJvcmBgIGZyb20KKyAgYGB3ZWJzb2NrZXRz
YGAuCisKKzguMAorLi4uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKipWZXJzaW9uIDguMCBkcm9w
cyBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuNCBhbmQgMy41LioqCisKKy4uIG5vdGU6Ogor
CisgICAgKipWZXJzaW9uIDguMCBleHBlY3RzKiogYGBwcm9jZXNzX3JlcXVlc3RgYCAqKnRvIGJl
IGEgY29yb3V0aW5lLioqCisKKyAgICBQcmV2aW91c2x5LCBpdCBjb3VsZCBiZSBhIGZ1bmN0aW9u
IG9yIGEgY29yb3V0aW5lLgorCisgICAgSWYgeW91J3JlIHBhc3NpbmcgYSBgYHByb2Nlc3NfcmVx
dWVzdGBgIGFyZ3VtZW50IHRvIDpmdW5jOmB+c2VydmVyLnNlcnZlYAorICAgIG9yIDpjbGFzczpg
fnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAsIG9yIGlmIHlvdSdyZSBvdmVycmlkaW5n
CisgICAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9jZXNzX3Jl
cXVlc3RgIGluIGEgc3ViY2xhc3MsCisgICAgZGVmaW5lIGl0IHdpdGggYGBhc3luYyBkZWZgYCBp
bnN0ZWFkIG9mIGBgZGVmYGAuCisKKyAgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGZ1
bmN0aW9ucyBhcmUgc3RpbGwgbW9zdGx5IHN1cHBvcnRlZCwgYnV0CisgICAgbWl4aW5nIGZ1bmN0
aW9ucyBhbmQgY29yb3V0aW5lcyB3b24ndCB3b3JrIGluIHNvbWUgaW5oZXJpdGFuY2Ugc2NlbmFy
aW9zLgorCisuLiBub3RlOjoKKworICAgICoqVmVyc2lvbiA4LjAgY2hhbmdlcyB0aGUgYmVoYXZp
b3Igb2YgdGhlKiogYGBtYXhfcXVldWVgYCAqKnBhcmFtZXRlci4qKgorCisgICAgSWYgeW91IHdl
cmUgc2V0dGluZyBgYG1heF9xdWV1ZT0wYGAgdG8gbWFrZSB0aGUgcXVldWUgb2YgaW5jb21pbmcg
bWVzc2FnZXMKKyAgICB1bmJvdW5kZWQsIGNoYW5nZSBpdCB0byBgYG1heF9xdWV1ZT1Ob25lYGAu
CisKKy4uIG5vdGU6OgorCisgICAgKipWZXJzaW9uIDguMCBkZXByZWNhdGVzIHRoZSoqIGBgaG9z
dGBgICoqLCoqIGBgcG9ydGBgICoqLCBhbmQqKiBgYHNlY3VyZWBgCisgICAgKiphdHRyaWJ1dGVz
IG9mKiogOmNsYXNzOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2xgLgorCisgICAg
VXNlIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wubG9jYWxfYWRkcmVz
c2AgaW4gc2VydmVycyBhbmQKKyAgICA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblBy
b3RvY29sLnJlbW90ZV9hZGRyZXNzYCBpbiBjbGllbnRzCisgICAgaW5zdGVhZCBvZiBgYGhvc3Rg
YCBhbmQgYGBwb3J0YGAuCisKKy4uIG5vdGU6OgorCisgICAgKipWZXJzaW9uIDguMCByZW5hbWVz
IHRoZSoqIGBgV2ViU29ja2V0UHJvdG9jb2xFcnJvcmBgICoqZXhjZXB0aW9uKioKKyAgICB0byA6
ZXhjOmBQcm90b2NvbEVycm9yYCAqKi4qKgorCisgICAgQSBgYFdlYlNvY2tldFByb3RvY29sRXJy
b3JgYCBhbGlhcyBwcm92aWRlcyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKworLi4gbm90ZTo6
CisKKyAgICAqKlZlcnNpb24gOC4wIGFkZHMgdGhlIHJlYXNvbiBwaHJhc2UgdG8gdGhlIHJldHVy
biB0eXBlIG9mIHRoZSBsb3ctbGV2ZWwKKyAgICBBUEkqKiA6ZnVuYzpgfmh0dHAucmVhZF9yZXNw
b25zZWAgKiouKioKKworQWxzbzoKKworKiA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1v
blByb3RvY29sLnNlbmRgLAorICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3Rv
Y29sLnBpbmdgLCBhbmQKKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2Nv
bC5wb25nYCBzdXBwb3J0IGJ5dGVzLWxpa2UgdHlwZXMKKyAgOmNsYXNzOmBieXRlYXJyYXlgIGFu
ZCA6Y2xhc3M6YG1lbW9yeXZpZXdgIGluIGFkZGl0aW9uIHRvIDpjbGFzczpgYnl0ZXNgLgorCisq
IEFkZGVkIDpleGM6YH5leGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRPS2AgYW5kCisgIDpleGM6
YH5leGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRFcnJvcmAgc3ViY2xhc3NlcyBvZgorICA6ZXhj
OmB+ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkYCB0byB0ZWxsIGFwYXJ0IG5vcm1hbCBjb25u
ZWN0aW9uCisgIHRlcm1pbmF0aW9uIGZyb20gZXJyb3JzLgorCisqIEFkZGVkIDpmdW5jOmB+YXV0
aC5iYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnlgIHRvIGVuZm9yY2UgSFRUUCBCYXNpYyBBdXRo
CisgIG9uIHRoZSBzZXJ2ZXIgc2lkZS4KKworKiA6ZnVuYzpgfmNsaWVudC5jb25uZWN0YCBoYW5k
bGVzIHJlZGlyZWN0cyBmcm9tIHRoZSBzZXJ2ZXIgZHVyaW5nIHRoZQorICBoYW5kc2hha2UuCisK
KyogOmZ1bmM6YH5jbGllbnQuY29ubmVjdGAgc3VwcG9ydHMgb3ZlcnJpZGluZyBgYGhvc3RgYCBh
bmQgYGBwb3J0YGAuCisKKyogQWRkZWQgOmZ1bmM6YH5jbGllbnQudW5peF9jb25uZWN0YCBmb3Ig
Y29ubmVjdGluZyB0byBVbml4IHNvY2tldHMuCisKKyogSW1wcm92ZWQgc3VwcG9ydCBmb3Igc2Vu
ZGluZyBmcmFnbWVudGVkIG1lc3NhZ2VzIGJ5IGFjY2VwdGluZyBhc3luY2hyb25vdXMKKyAgaXRl
cmF0b3JzIGluIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuc2VuZGAu
CisKKyogUHJldmVudGVkIHNwdXJpb3VzIGxvZyBtZXNzYWdlcyBhYm91dCA6ZXhjOmB+ZXhjZXB0
aW9ucy5Db25uZWN0aW9uQ2xvc2VkYAorICBleGNlcHRpb25zIGluIGtlZXBhbGl2ZSBwaW5nIHRh
c2suIElmIHlvdSB3ZXJlIHVzaW5nIGBgcGluZ190aW1lb3V0PU5vbmVgYAorICBhcyBhIHdvcmth
cm91bmQsIHlvdSBjYW4gcmVtb3ZlIGl0LgorCisqIENoYW5nZWQgOm1ldGg6YFdlYlNvY2tldFNl
cnZlci5jbG9zZSgpIDxzZXJ2ZXIuV2ViU29ja2V0U2VydmVyLmNsb3NlPmAgdG8KKyAgcGVyZm9y
bSBhIHByb3BlciBjbG9zaW5nIGhhbmRzaGFrZSBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIGNvbm5l
Y3Rpb24uCisKKyogQXZvaWRlZCBhIGNyYXNoIHdoZW4gYSBgYGV4dHJhX2hlYWRlcnNgYCBjYWxs
YWJsZSByZXR1cm5zIGBgTm9uZWBgLgorCisqIEltcHJvdmVkIGVycm9yIG1lc3NhZ2VzIHdoZW4g
SFRUUCBwYXJzaW5nIGZhaWxzLgorCisqIEVuYWJsZWQgcmVhZGxpbmUgaW4gdGhlIGludGVyYWN0
aXZlIGNsaWVudC4KKworKiBBZGRlZCB0eXBlIGhpbnRzICg6cGVwOmA0ODRgKS4KKworKiBBZGRl
ZCBhIEZBUSB0byB0aGUgZG9jdW1lbnRhdGlvbi4KKworKiBBZGRlZCBkb2N1bWVudGF0aW9uIGZv
ciBleHRlbnNpb25zLgorCisqIERvY3VtZW50ZWQgaG93IHRvIG9wdGltaXplIG1lbW9yeSB1c2Fn
ZS4KKworKiBJbXByb3ZlZCBBUEkgZG9jdW1lbnRhdGlvbi4KKworNy4wCisuLi4KKworLi4gd2Fy
bmluZzo6CisKKyAgICAqKlZlcnNpb24gNy4wIHJlbmFtZXMgdGhlKiogYGB0aW1lb3V0YGAgKiph
cmd1bWVudCBvZioqCisgICAgOmZ1bmM6YH5zZXJ2ZXIuc2VydmUoKWAgKiphbmQqKiA6ZnVuYzpg
fmNsaWVudC5jb25uZWN0YCAqKnRvKioKKyAgICBgYGNsb3NlX3RpbWVvdXRgYCAqKi4qKgorCisg
ICAgVGhpcyBwcmV2ZW50cyBjb25mdXNpb24gd2l0aCBgYHBpbmdfdGltZW91dGBgLgorCisgICAg
Rm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBgYHRpbWVvdXRgYCBpcyBzdGlsbCBzdXBwb3J0
ZWQuCisKKy4uIHdhcm5pbmc6OgorCisgICAgKipWZXJzaW9uIDcuMCBjaGFuZ2VzIGhvdyBhIHNl
cnZlciB0ZXJtaW5hdGVzIGNvbm5lY3Rpb25zIHdoZW4gaXQncworICAgIGNsb3NlZCB3aXRoKiog
Om1ldGg6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyLmNsb3NlYCAqKi4qKgorCisgICAgUHJldmlv
dXNseSwgY29ubmVjdGlvbnMgaGFuZGxlcnMgd2VyZSBjYW5jZWxlZC4gTm93LCBjb25uZWN0aW9u
cyBhcmUKKyAgICBjbG9zZWQgd2l0aCBjbG9zZSBjb2RlIDEwMDEgKGdvaW5nIGF3YXkpLiBGcm9t
IHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUKKyAgICBjb25uZWN0aW9uIGhhbmRsZXIsIHRoaXMgaXMg
dGhlIHNhbWUgYXMgaWYgdGhlIHJlbW90ZSBlbmRwb2ludCB3YXMKKyAgICBkaXNjb25uZWN0aW5n
LiBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gcHJlcGFyZSBmb3IKKyAgICA6ZXhjOmB+YXN5bmNp
by5DYW5jZWxsZWRFcnJvcmAgaW4gY29ubmVjdGlvbiBoYW5kbGVycy4KKworICAgIFlvdSBjYW4g
cmVzdG9yZSB0aGUgcHJldmlvdXMgYmVoYXZpb3IgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGlu
ZSBhdCB0aGUKKyAgICBiZWdpbm5pbmcgb2YgY29ubmVjdGlvbiBoYW5kbGVyczo6CisKKyAgICAg
ICAgZGVmIGhhbmRsZXIod2Vic29ja2V0LCBwYXRoKToKKyAgICAgICAgICAgIGNsb3NlZCA9IGFz
eW5jaW8uZW5zdXJlX2Z1dHVyZSh3ZWJzb2NrZXQud2FpdF9jbG9zZWQoKSkKKyAgICAgICAgICAg
IGNsb3NlZC5hZGRfZG9uZV9jYWxsYmFjayhsYW1iZGEgdGFzazogdGFzay5jYW5jZWwoKSkKKwor
Li4gbm90ZTo6CisKKyAgICAqKlZlcnNpb24gNy4wIGNoYW5nZXMgaG93IGEqKiA6bWV0aDpgfnBy
b3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBpbmdgCisgICAgKip0aGF0IGhhc24ndCBy
ZWNlaXZlZCBhIHBvbmcgeWV0IGJlaGF2ZXMgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQu
KioKKworICAgIFRoZSBwaW5nIOKAlCBhcyBpbiBgYHBpbmcgPSBhd2FpdCB3ZWJzb2NrZXQucGlu
ZygpYGAg4oCUIHVzZWQgdG8gYmUgY2FuY2VsZWQKKyAgICB3aGVuIHRoZSBjb25uZWN0aW9uIGlz
IGNsb3NlZCwgc28gdGhhdCBgYGF3YWl0IHBpbmdgYCByYWlzZWQKKyAgICA6ZXhjOmB+YXN5bmNp
by5DYW5jZWxsZWRFcnJvcmAuIE5vdyBgYGF3YWl0IHBpbmdgYCByYWlzZXMKKyAgICA6ZXhjOmB+
ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkYCBsaWtlIG90aGVyIHB1YmxpYyBBUElzLgorCisu
LiBub3RlOjoKKworICAgICoqVmVyc2lvbiA3LjAgcmFpc2VzIGEqKiA6ZXhjOmBSdW50aW1lRXJy
b3JgICoqZXhjZXB0aW9uIGlmIHR3byBjb3JvdXRpbmVzCisgICAgY2FsbCoqIDptZXRoOmB+cHJv
dG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVjdmAgKipjb25jdXJyZW50bHkuKioKKwor
ICAgIENvbmN1cnJlbnQgY2FsbHMgbGVhZCB0byBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciBi
ZWNhdXNlIHRoZXJlIGFyZSBubworICAgIGd1YXJhbnRlZXMgYWJvdXQgd2hpY2ggY29yb3V0aW5l
IHdpbGwgcmVjZWl2ZSB3aGljaCBtZXNzYWdlLgorCitBbHNvOgorCisqIGBgd2Vic29ja2V0c2Bg
IHNlbmRzIFBpbmcgZnJhbWVzIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzIGFuZCBjbG9zZXMgdGhlCisg
IGNvbm5lY3Rpb24gaWYgaXQgZG9lc24ndCByZWNlaXZlIGEgbWF0Y2hpbmcgUG9uZyBmcmFtZS4g
U2VlCisgIDpjbGFzczpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sYCBmb3IgZGV0
YWlscy4KKworKiBBZGRlZCBgYHByb2Nlc3NfcmVxdWVzdGBgIGFuZCBgYHNlbGVjdF9zdWJwcm90
b2NvbGBgIGFyZ3VtZW50cyB0bworICA6ZnVuYzpgfnNlcnZlci5zZXJ2ZWAgYW5kIDpjbGFzczpg
fnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgdG8KKyAgY3VzdG9taXplIDptZXRoOmB+
c2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLnByb2Nlc3NfcmVxdWVzdGAgYW5kCisgIDpt
ZXRoOmB+c2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLnNlbGVjdF9zdWJwcm90b2NvbGAg
d2l0aG91dAorICBzdWJjbGFzc2luZyA6Y2xhc3M6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJv
dG9jb2xgLgorCisqIEFkZGVkIHN1cHBvcnQgZm9yIHNlbmRpbmcgZnJhZ21lbnRlZCBtZXNzYWdl
cy4KKworKiBBZGRlZCB0aGUgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2Nv
bC53YWl0X2Nsb3NlZGAgbWV0aG9kIHRvCisgIHByb3RvY29scy4KKworKiBBZGRlZCBhbiBpbnRl
cmFjdGl2ZSBjbGllbnQ6IGBgcHl0aG9uIC1tIHdlYnNvY2tldHMgPHVyaT5gYC4KKworKiBDaGFu
Z2VkIHRoZSBgYG9yaWdpbnNgYCBhcmd1bWVudCB0byByZXByZXNlbnQgdGhlIGxhY2sgb2YgYW4g
b3JpZ2luIHdpdGgKKyAgYGBOb25lYGAgcmF0aGVyIHRoYW4gYGAnJ2BgLgorCisqIEZpeGVkIGEg
ZGF0YSBsb3NzIGJ1ZyBpbiA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29s
LnJlY3ZgOgorICBjYW5jZWxpbmcgaXQgYXQgdGhlIHdyb25nIHRpbWUgY291bGQgcmVzdWx0IGlu
IG1lc3NhZ2VzIGJlaW5nIGRyb3BwZWQuCisKKyogSW1wcm92ZWQgaGFuZGxpbmcgb2YgbXVsdGlw
bGUgSFRUUCBoZWFkZXJzIHdpdGggdGhlIHNhbWUgbmFtZS4KKworKiBJbXByb3ZlZCBlcnJvciBt
ZXNzYWdlcyB3aGVuIGEgcmVxdWlyZWQgSFRUUCBoZWFkZXIgaXMgbWlzc2luZy4KKworNi4wCisu
Li4KKworLi4gd2FybmluZzo6CisKKyAgICAqKlZlcnNpb24gNi4wIGludHJvZHVjZXMgdGhlKiog
OmNsYXNzOmB+aHR0cC5IZWFkZXJzYCAqKmNsYXNzIGZvciBtYW5hZ2luZworICAgIEhUVFAgaGVh
ZGVycyBhbmQgY2hhbmdlcyBzZXZlcmFsIHB1YmxpYyBBUElzOioqCisKKyAgICAqIDptZXRoOmB+
c2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLnByb2Nlc3NfcmVxdWVzdGAgbm93IHJlY2Vp
dmVzIGEKKyAgICAgIDpjbGFzczpgfmh0dHAuSGVhZGVyc2AgaW5zdGVhZCBvZiBhIDpjbGFzczpg
fmh0dHAuY2xpZW50LkhUVFBNZXNzYWdlYCBpbgorICAgICAgdGhlIGBgcmVxdWVzdF9oZWFkZXJz
YGAgYXJndW1lbnQuCisKKyAgICAqIFRoZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1v
blByb3RvY29sLnJlcXVlc3RfaGVhZGVyc2AgYW5kCisgICAgICA6YXR0cjpgfnByb3RvY29sLldl
YlNvY2tldENvbW1vblByb3RvY29sLnJlc3BvbnNlX2hlYWRlcnNgIGF0dHJpYnV0ZXMgb2YKKyAg
ICAgIDpjbGFzczpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sYCBhcmUgOmNsYXNz
OmB+aHR0cC5IZWFkZXJzYAorICAgICAgaW5zdGVhZCBvZiA6Y2xhc3M6YH5odHRwLmNsaWVudC5I
VFRQTWVzc2FnZWAuCisKKyAgICAqIFRoZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1v
blByb3RvY29sLnJhd19yZXF1ZXN0X2hlYWRlcnNgIGFuZAorICAgICAgOmF0dHI6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yYXdfcmVzcG9uc2VfaGVhZGVyc2AKKyAgICAgIGF0
dHJpYnV0ZXMgb2YgOmNsYXNzOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2xgIGFy
ZSByZW1vdmVkLgorICAgICAgVXNlIDptZXRoOmB+aHR0cC5IZWFkZXJzLnJhd19pdGVtc2AgaW5z
dGVhZC4KKworICAgICogRnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIDptb2Q6YH5oYW5kc2hha2Vg
IG1vZHVsZSBub3cgcmVjZWl2ZQorICAgICAgOmNsYXNzOmB+aHR0cC5IZWFkZXJzYCBpbiBhcmd1
bWVudCBpbnN0ZWFkIG9mIGBgZ2V0X2hlYWRlcmBgIG9yCisgICAgICBgYHNldF9oZWFkZXJgYCBm
dW5jdGlvbnMuIFRoaXMgYWZmZWN0cyBsaWJyYXJpZXMgdGhhdCByZWx5IG9uCisgICAgICBsb3ct
bGV2ZWwgQVBJcy4KKworICAgICogRnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIDptb2Q6YH5odHRw
YCBtb2R1bGUgbm93IHJldHVybiBIVFRQIGhlYWRlcnMgYXMKKyAgICAgIDpjbGFzczpgfmh0dHAu
SGVhZGVyc2AgaW5zdGVhZCBvZiBsaXN0cyBvZiBgYChuYW1lLCB2YWx1ZSlgYCBwYWlycy4KKwor
ICAgIFNpbmNlIDpjbGFzczpgfmh0dHAuSGVhZGVyc2AgYW5kIDpjbGFzczpgfmh0dHAuY2xpZW50
LkhUVFBNZXNzYWdlYCBwcm92aWRlCisgICAgc2ltaWxhciBBUElzLCB0aGlzIGNoYW5nZSB3b24n
dCBhZmZlY3QgbW9zdCBvZiB0aGUgY29kZSBkZWFsaW5nIHdpdGggSFRUUAorICAgIGhlYWRlcnMu
CisKKworQWxzbzoKKworKiBBZGRlZCBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuNy4KKwor
NS4wLjEKKy4uLi4uCisKKyogRml4ZWQgYSByZWdyZXNzaW9uIGluIHRoZSA1LjAgcmVsZWFzZSB0
aGF0IGJyb2tlIHNvbWUgaW52b2NhdGlvbnMgb2YKKyAgOmZ1bmM6YH5zZXJ2ZXIuc2VydmUoKWAg
YW5kIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgLgorCis1LjAKKy4uLgorCisuLiBub3RlOjoKKwor
ICAgICoqVmVyc2lvbiA1LjAgZml4ZXMgYSBzZWN1cml0eSBpc3N1ZSBpbnRyb2R1Y2VkIGluIHZl
cnNpb24gNC4wLioqCisKKyAgICBWZXJzaW9uIDQuMCB3YXMgdnVsbmVyYWJsZSB0byBkZW5pYWwg
b2Ygc2VydmljZSBieSBtZW1vcnkgZXhoYXVzdGlvbgorICAgIGJlY2F1c2UgaXQgZGlkbid0IGVu
Zm9yY2UgYGBtYXhfc2l6ZWBgIHdoZW4gZGVjb21wcmVzc2luZyBjb21wcmVzc2VkCisgICAgbWVz
c2FnZXMgKGBDVkUtMjAxOC0xMDAwNTE4YF8pLgorCisgICAgLi4gX0NWRS0yMDE4LTEwMDA1MTg6
IGh0dHBzOi8vbnZkLm5pc3QuZ292L3Z1bG4vZGV0YWlsL0NWRS0yMDE4LTEwMDA1MTgKKworLi4g
bm90ZTo6CisKKyAgICAqKlZlcnNpb24gNS4wIGFkZHMgYSoqIGBgdXNlcl9pbmZvYGAgKipmaWVs
ZCB0byB0aGUgcmV0dXJuIHZhbHVlIG9mKioKKyAgICA6ZnVuYzpgfnVyaS5wYXJzZV91cmlgICoq
YW5kKiogOmNsYXNzOmB+dXJpLldlYlNvY2tldFVSSWAgKiouKioKKworICAgIElmIHlvdSdyZSB1
bnBhY2tpbmcgOmNsYXNzOmB+ZXhjZXB0aW9ucy5XZWJTb2NrZXRVUklgIGludG8gZm91ciB2YXJp
YWJsZXMsCisgICAgYWRqdXN0IHlvdXIgY29kZSB0byBhY2NvdW50IGZvciB0aGF0IGZpZnRoIGZp
ZWxkLgorCitBbHNvOgorCisqIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgIHBlcmZvcm1zIEhUVFAg
QmFzaWMgQXV0aCB3aGVuIHRoZSBVUkkgY29udGFpbnMKKyAgY3JlZGVudGlhbHMuCisKKyogSXRl
cmF0aW5nIG9uIGluY29taW5nIG1lc3NhZ2VzIG5vIGxvbmdlciByYWlzZXMgYW4gZXhjZXB0aW9u
IHdoZW4gdGhlCisgIGNvbm5lY3Rpb24gdGVybWluYXRlcyB3aXRoIGNsb3NlIGNvZGUgMTAwMSAo
Z29pbmcgYXdheSkuCisKKyogQSBwbGFpbiBIVFRQIHJlcXVlc3Qgbm93IHJlY2VpdmVzIGEgNDI2
IFVwZ3JhZGUgUmVxdWlyZWQgcmVzcG9uc2UgYW5kCisgIGRvZXNuJ3QgbG9nIGEgc3RhY2sgdHJh
Y2UuCisKKyogOmZ1bmM6YH5zZXJ2ZXIudW5peF9zZXJ2ZWAgY2FuIGJlIHVzZWQgYXMgYW4gYXN5
bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciBvbgorICBQeXRob24g4omlIDMuNS4xLgorCisqIEFk
ZGVkIHRoZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlZGAg
cHJvcGVydHkgdG8KKyAgcHJvdG9jb2xzLgorCisqIElmIGEgOm1ldGg6YH5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbC5waW5nYCBkb2Vzbid0IHJlY2VpdmUgYSBwb25nLAorICBpdCdz
IGNhbmNlbGVkIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCisqIFJlcG9ydGVkIHRo
ZSBjYXVzZSBvZiA6ZXhjOmB+ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkYCBleGNlcHRpb25z
LgorCisqIEFkZGVkIG5ldyBleGFtcGxlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworKiBVcGRh
dGVkIGRvY3VtZW50YXRpb24gd2l0aCBuZXcgZmVhdHVyZXMgZnJvbSBQeXRob24gMy42LgorCisq
IEltcHJvdmVkIHNldmVyYWwgb3RoZXIgc2VjdGlvbnMgb2YgdGhlIGRvY3VtZW50YXRpb24uCisK
KyogRml4ZWQgbWlzc2luZyBjbG9zZSBjb2RlLCB3aGljaCBjYXVzZWQgOmV4YzpgVHlwZUVycm9y
YCBvbiBjb25uZWN0aW9uIGNsb3NlLgorCisqIEZpeGVkIGEgcmFjZSBjb25kaXRpb24gaW4gdGhl
IGNsb3NpbmcgaGFuZHNoYWtlIHRoYXQgcmFpc2VkCisgIDpleGM6YH5leGNlcHRpb25zLkludmFs
aWRTdGF0ZWAuCisKKyogU3RvcHBlZCBsb2dnaW5nIHN0YWNrIHRyYWNlcyB3aGVuIHRoZSBUQ1Ag
Y29ubmVjdGlvbiBkaWVzIHByZW1hdHVyZWx5LgorCisqIFByZXZlbnRlZCB3cml0aW5nIHRvIGEg
Y2xvc2luZyBUQ1AgY29ubmVjdGlvbiBkdXJpbmcgdW5jbGVhbiBzaHV0ZG93bnMuCisKKyogTWFk
ZSBjb25uZWN0aW9uIHRlcm1pbmF0aW9uIG1vcmUgcm9idXN0IHRvIG5ldHdvcmsgY29uZ2VzdGlv
bi4KKworKiBQcmV2ZW50ZWQgcHJvY2Vzc2luZyBvZiBpbmNvbWluZyBmcmFtZXMgYWZ0ZXIgZmFp
bGluZyB0aGUgY29ubmVjdGlvbi4KKworNC4wLjEKKy4uLi4uCisKKyogRml4ZWQgaXNzdWVzIHdp
dGggdGhlIHBhY2thZ2luZyBvZiB0aGUgNC4wIHJlbGVhc2UuCisKKzQuMAorLi4uCisKKy4uIHdh
cm5pbmc6OgorCisgICAgKipWZXJzaW9uIDQuMCBlbmFibGVzIGNvbXByZXNzaW9uIHdpdGggdGhl
IHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uKioKKworICAgIEluIEF1Z3VzdCAyMDE3LCBG
aXJlZm94IGFuZCBDaHJvbWUgc3VwcG9ydCBpdCwgYnV0IG5vdCBTYWZhcmkgYW5kIElFLgorCisg
ICAgQ29tcHJlc3Npb24gc2hvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UgYnV0IGl0IGluY3JlYXNl
cyBSQU0gYW5kIENQVSB1c2UuCisKKyAgICBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIGNvbXByZXNz
aW9uLCBhZGQgYGBjb21wcmVzc2lvbj1Ob25lYGAgd2hlbiBjYWxsaW5nCisgICAgOmZ1bmM6YH5z
ZXJ2ZXIuc2VydmUoKWAgb3IgOmZ1bmM6YH5jbGllbnQuY29ubmVjdGAuCisKKy4uIHdhcm5pbmc6
OgorCisgICAgKipWZXJzaW9uIDQuMCBkcm9wcyBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMu
My4qKgorCisuLiBub3RlOjoKKworICAgICoqVmVyc2lvbiA0LjAgcmVtb3ZlcyB0aGUqKiBgYHN0
YXRlX25hbWVgYCAqKmF0dHJpYnV0ZSBvZiBwcm90b2NvbHMuKioKKworICAgIFVzZSBgYHByb3Rv
Y29sLnN0YXRlLm5hbWVgYCBpbnN0ZWFkIG9mIGBgcHJvdG9jb2wuc3RhdGVfbmFtZWBgLgorCitB
bHNvOgorCisqIDpjbGFzczpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sYCBpbnN0
YW5jZXMgY2FuIGJlIHVzZWQgYXMKKyAgYXN5bmNocm9ub3VzIGl0ZXJhdG9ycyBvbiBQeXRob24g
4omlIDMuNi4gVGhleSB5aWVsZCBpbmNvbWluZyBtZXNzYWdlcy4KKworKiBBZGRlZCA6ZnVuYzpg
fnNlcnZlci51bml4X3NlcnZlYCBmb3IgbGlzdGVuaW5nIG9uIFVuaXggc29ja2V0cy4KKworKiBB
ZGRlZCB0aGUgOmF0dHI6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyLnNvY2tldHNgIGF0dHJpYnV0
ZSB0byB0aGUgcmV0dXJuCisgIHZhbHVlIG9mIDpmdW5jOmB+c2VydmVyLnNlcnZlYC4KKworKiBS
ZW9yZ2FuaXplZCBhbmQgZXh0ZW5kZWQgZG9jdW1lbnRhdGlvbi4KKworKiBBYm9ydGVkIGNvbm5l
Y3Rpb25zIGlmIHRoZXkgZG9uJ3QgY2xvc2Ugd2l0aGluIHRoZSBjb25maWd1cmVkIGBgdGltZW91
dGBgLgorCisqIFJld3JvdGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvbiB0byBpbmNyZWFzZSByb2J1
c3RuZXNzIGluIGVkZ2UgY2FzZXMuCisKKyogU3RvcHBlZCBsZWFraW5nIHBlbmRpbmcgdGFza3Mg
d2hlbiA6bWV0aDpgfmFzeW5jaW8uVGFzay5jYW5jZWxgIGlzIGNhbGxlZCBvbgorICBhIGNvbm5l
Y3Rpb24gd2hpbGUgaXQncyBiZWluZyBjbG9zZWQuCisKKyogUmVkdWNlZCB2ZXJib3NpdHkgb2Yg
IkZhaWxpbmcgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIiBsb2dzLgorCisqIEFsbG93ZWQgYGBl
eHRyYV9oZWFkZXJzYGAgdG8gb3ZlcnJpZGUgYGBTZXJ2ZXJgYCBhbmQgYGBVc2VyLUFnZW50YGAg
aGVhZGVycy4KKworMy40CisuLi4KKworKiBSZW5hbWVkIDpmdW5jOmB+c2VydmVyLnNlcnZlKClg
IGFuZCA6ZnVuYzpgfmNsaWVudC5jb25uZWN0YCdzIGBga2xhc3NgYAorICBhcmd1bWVudCB0byBg
YGNyZWF0ZV9wcm90b2NvbGBgIHRvIHJlZmxlY3QgdGhhdCBpdCBjYW4gYWxzbyBiZSBhIGNhbGxh
YmxlLgorICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGBga2xhc3NgYCBpcyBzdGlsbCBz
dXBwb3J0ZWQuCisKKyogOmZ1bmM6YH5zZXJ2ZXIuc2VydmVgIGNhbiBiZSB1c2VkIGFzIGFuIGFz
eW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIgb24KKyAgUHl0aG9uIOKJpSAzLjUuMS4KKworKiBB
ZGRlZCBzdXBwb3J0IGZvciBjdXN0b21pemluZyBoYW5kbGluZyBvZiBpbmNvbWluZyBjb25uZWN0
aW9ucyB3aXRoCisgIDptZXRoOmB+c2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLnByb2Nl
c3NfcmVxdWVzdGAuCisKKyogTWFkZSByZWFkIGFuZCB3cml0ZSBidWZmZXIgc2l6ZXMgY29uZmln
dXJhYmxlLgorCisqIFJld3JvdGUgSFRUUCBoYW5kbGluZyBmb3Igc2ltcGxpY2l0eSBhbmQgcGVy
Zm9ybWFuY2UuCisKKyogQWRkZWQgYW4gb3B0aW9uYWwgQyBleHRlbnNpb24gdG8gc3BlZWQgdXAg
bG93LWxldmVsIG9wZXJhdGlvbnMuCisKKyogQW4gaW52YWxpZCByZXNwb25zZSBzdGF0dXMgY29k
ZSBkdXJpbmcgOmZ1bmM6YH5jbGllbnQuY29ubmVjdGAgbm93IHJhaXNlcworICA6Y2xhc3M6YH5l
eGNlcHRpb25zLkludmFsaWRTdGF0dXNDb2RlYCB3aXRoIGEgYGBjb2RlYGAgYXR0cmlidXRlLgor
CisqIFByb3ZpZGluZyBhIGBgc29ja2BgIGFyZ3VtZW50IHRvIDpmdW5jOmB+Y2xpZW50LmNvbm5l
Y3RgIG5vIGxvbmdlcgorICBjcmFzaGVzLgorCiszLjMKKy4uLgorCisqIEVuc3VyZWQgY29tcGF0
aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjYuCisKKyogUmVkdWNlZCBub2lzZSBpbiBsb2dzIGNhdXNl
ZCBieSBjb25uZWN0aW9uIHJlc2V0cy4KKworKiBBdm9pZGVkIGNyYXNoaW5nIG9uIGNvbmN1cnJl
bnQgd3JpdGVzIG9uIHNsb3cgY29ubmVjdGlvbnMuCisKKzMuMgorLi4uCisKKyogQWRkZWQgYGB0
aW1lb3V0YGAsIGBgbWF4X3NpemVgYCwgYW5kIGBgbWF4X3F1ZXVlYGAgYXJndW1lbnRzIHRvCisg
IDpmdW5jOmB+Y2xpZW50LmNvbm5lY3QoKWAgYW5kIDpmdW5jOmB+c2VydmVyLnNlcnZlYC4KKwor
KiBNYWRlIHNlcnZlciBzaHV0ZG93biBtb3JlIHJvYnVzdC4KKworMy4xCisuLi4KKworKiBBdm9p
ZGVkIGEgd2FybmluZyB3aGVuIGNsb3NpbmcgYSBjb25uZWN0aW9uIGJlZm9yZSB0aGUgb3Blbmlu
ZyBoYW5kc2hha2UuCisKKyogQWRkZWQgZmxvdyBjb250cm9sIGZvciBpbmNvbWluZyBkYXRhLgor
CiszLjAKKy4uLgorCisuLiB3YXJuaW5nOjoKKworICAgICoqVmVyc2lvbiAzLjAgaW50cm9kdWNl
cyBhIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIHRoZSoqCisgICAgOm1ldGg6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZWN2YCAqKkFQSS4qKgorCisgICAgKipJ
ZiB5b3UncmUgdXBncmFkaW5nIGZyb20gMi54IG9yIGVhcmxpZXIsIHBsZWFzZSByZWFkIHRoaXMg
Y2FyZWZ1bGx5LioqCisKKyAgICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3Rv
Y29sLnJlY3ZgIHVzZWQgdG8gcmV0dXJuIGBgTm9uZWBgCisgICAgd2hlbiB0aGUgY29ubmVjdGlv
biB3YXMgY2xvc2VkLiBUaGlzIHJlcXVpcmVkIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YK
KyAgICBldmVyeSBjYWxsOjoKKworICAgICAgICBtZXNzYWdlID0gYXdhaXQgd2Vic29ja2V0LnJl
Y3YoKQorICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKwor
ICAgIE5vdyBpdCByYWlzZXMgYSA6ZXhjOmB+ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkYCBl
eGNlcHRpb24gaW5zdGVhZC4KKyAgICBUaGlzIGlzIG1vcmUgUHl0aG9uaWMuIFRoZSBwcmV2aW91
cyBjb2RlIGNhbiBiZSBzaW1wbGlmaWVkIHRvOjoKKworICAgICAgICBtZXNzYWdlID0gYXdhaXQg
d2Vic29ja2V0LnJlY3YoKQorCisgICAgV2hlbiBpbXBsZW1lbnRpbmcgYSBzZXJ2ZXIsIHdoaWNo
IGlzIHRoZSBtb3JlIHBvcHVsYXIgdXNlIGNhc2UsIHRoZXJlJ3Mgbm8KKyAgICBzdHJvbmcgcmVh
c29uIHRvIGhhbmRsZSBzdWNoIGV4Y2VwdGlvbnMuIExldCB0aGVtIGJ1YmJsZSB1cCwgdGVybWlu
YXRlIHRoZQorICAgIGhhbmRsZXIgY29yb3V0aW5lLCBhbmQgdGhlIHNlcnZlciB3aWxsIHNpbXBs
eSBpZ25vcmUgdGhlbS4KKworICAgIEluIG9yZGVyIHRvIGF2b2lkIHN0cmFuZGluZyBwcm9qZWN0
cyBidWlsdCB1cG9uIGFuIGVhcmxpZXIgdmVyc2lvbiwgdGhlCisgICAgcHJldmlvdXMgYmVoYXZp
b3IgY2FuIGJlIHJlc3RvcmVkIGJ5IHBhc3NpbmcgYGBsZWdhY3lfcmVjdj1UcnVlYGAgdG8KKyAg
ICA6ZnVuYzpgfnNlcnZlci5zZXJ2ZWAsIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgLAorICAgIDpj
bGFzczpgfnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAsIG9yCisgICAgOmNsYXNzOmB+
Y2xpZW50LldlYlNvY2tldENsaWVudFByb3RvY29sYC4gYGBsZWdhY3lfcmVjdmBgIGlzbid0IGRv
Y3VtZW50ZWQKKyAgICBpbiB0aGVpciBzaWduYXR1cmVzIGJ1dCBpc24ndCBzY2hlZHVsZWQgZm9y
IGRlcHJlY2F0aW9uIGVpdGhlci4KKworQWxzbzoKKworKiA6ZnVuYzpgfmNsaWVudC5jb25uZWN0
YCBjYW4gYmUgdXNlZCBhcyBhbiBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyIG9uCisgIFB5
dGhvbiDiiaUgMy41LjEuCisKKyogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHdpdGggYGBhd2FpdGBg
IGFuZCBgYGFzeW5jYGAgc3ludGF4IGZyb20gUHl0aG9uIDMuNS4KKworKiA6bWV0aDpgfnByb3Rv
Y29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBpbmdgIGFuZAorICA6bWV0aDpgfnByb3RvY29s
LldlYlNvY2tldENvbW1vblByb3RvY29sLnBvbmdgIHN1cHBvcnQgZGF0YSBwYXNzZWQgYXMKKyAg
OmNsYXNzOmBzdHJgIGluIGFkZGl0aW9uIHRvIDpjbGFzczpgYnl0ZXNgLgorCisqIFdvcmtlZCBh
cm91bmQgYW4gYXN5bmNpbyBidWcgYWZmZWN0aW5nIGNvbm5lY3Rpb24gdGVybWluYXRpb24gdW5k
ZXIgbG9hZC4KKworKiBNYWRlIGBgc3RhdGVfbmFtZWBgIGF0dHJpYnV0ZSBvbiBwcm90b2NvbHMg
YSBwdWJsaWMgQVBJLgorCisqIEltcHJvdmVkIGRvY3VtZW50YXRpb24uCisKKzIuNworLi4uCisK
KyogQWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjUuCisKKyogUmVmcmVzaGVkIGRv
Y3VtZW50YXRpb24uCisKKzIuNgorLi4uCisKKyogQWRkZWQgYGBsb2NhbF9hZGRyZXNzYGAgYW5k
IGBgcmVtb3RlX2FkZHJlc3NgYCBhdHRyaWJ1dGVzIG9uIHByb3RvY29scy4KKworKiBDbG9zZWQg
b3BlbiBjb25uZWN0aW9ucyB3aXRoIGNvZGUgMTAwMSB3aGVuIGEgc2VydmVyIHNodXRzIGRvd24u
CisKKyogQXZvaWRlZCBUQ1AgZnJhZ21lbnRhdGlvbiBvZiBzbWFsbCBmcmFtZXMuCisKKzIuNQor
Li4uCisKKyogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbi4KKworKiBQcm92aWRlZCBhY2Nlc3MgdG8g
aGFuZHNoYWtlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIEhUVFAgaGVhZGVycy4KKworKiBBbGxvd2Vk
IGN1c3RvbWl6aW5nIGhhbmRzaGFrZSByZXF1ZXN0IGFuZCByZXNwb25zZSBIVFRQIGhlYWRlcnMu
CisKKyogU3VwcG9ydGVkIHJ1bm5pbmcgb24gYSBub24tZGVmYXVsdCBldmVudCBsb29wLgorCisq
IFJldHVybmVkIGEgNDAzIHN0YXR1cyBjb2RlIGluc3RlYWQgb2YgNDAwIHdoZW4gdGhlIHJlcXVl
c3QgT3JpZ2luIGlzbid0CisgIGFsbG93ZWQuCisKKyogQ2FuY2VsaW5nIDptZXRoOmB+cHJvdG9j
b2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVjdmAgbm8gbG9uZ2VyIGRyb3BzCisgIHRoZSBu
ZXh0IG1lc3NhZ2UuCisKKyogQ2xhcmlmaWVkIHRoYXQgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGNh
biBiZSBpbml0aWF0ZWQgYnkgdGhlIGNsaWVudC4KKworKiBTZXQgdGhlIGNsb3NlIGNvZGUgYW5k
IHJlYXNvbiBtb3JlIGNvbnNpc3RlbnRseS4KKworKiBTdHJlbmd0aGVuZWQgY29ubmVjdGlvbiB0
ZXJtaW5hdGlvbiBieSBzaW1wbGlmeWluZyB0aGUgaW1wbGVtZW50YXRpb24uCisKKyogSW1wcm92
ZWQgdGVzdHMsIGFkZGVkIHRveCBjb25maWd1cmF0aW9uLCBhbmQgZW5mb3JjZWQgMTAwJSBicmFu
Y2ggY292ZXJhZ2UuCisKKzIuNAorLi4uCisKKyogQWRkZWQgc3VwcG9ydCBmb3Igc3VicHJvdG9j
b2xzLgorCisqIFN1cHBvcnRlZCBub24tZGVmYXVsdCBldmVudCBsb29wLgorCisqIEFkZGVkIGBg
bG9vcGBgIGFyZ3VtZW50IHRvIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgIGFuZAorICA6ZnVuYzpg
fnNlcnZlci5zZXJ2ZWAuCisKKzIuMworLi4uCisKKyogSW1wcm92ZWQgY29tcGxpYW5jZSBvZiBj
bG9zZSBjb2Rlcy4KKworMi4yCisuLi4KKworKiBBZGRlZCBzdXBwb3J0IGZvciBsaW1pdGluZyBt
ZXNzYWdlIHNpemUuCisKKzIuMQorLi4uCisKKyogQWRkZWQgYGBob3N0YGAsIGBgcG9ydGBgIGFu
ZCBgYHNlY3VyZWBgIGF0dHJpYnV0ZXMgb24gcHJvdG9jb2xzLgorCisqIEFkZGVkIHN1cHBvcnQg
Zm9yIHByb3ZpZGluZyBhbmQgY2hlY2tpbmcgT3JpZ2luXy4KKworLi4gX09yaWdpbjogaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi0xMC4yCisKKzIuMAorLi4uCisK
Ky4uIHdhcm5pbmc6OgorCisgICAgKipWZXJzaW9uIDIuMCBpbnRyb2R1Y2VzIGEgYmFja3dhcmRz
LWluY29tcGF0aWJsZSBjaGFuZ2UgaW4gdGhlKioKKyAgICA6bWV0aDpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLnNlbmRgLAorICAgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0
Q29tbW9uUHJvdG9jb2wucGluZ2AsIGFuZAorICAgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0
Q29tbW9uUHJvdG9jb2wucG9uZ2AgKipBUElzLioqCisKKyAgICAqKklmIHlvdSdyZSB1cGdyYWRp
bmcgZnJvbSAxLnggb3IgZWFybGllciwgcGxlYXNlIHJlYWQgdGhpcyBjYXJlZnVsbHkuKioKKwor
ICAgIFRoZXNlIEFQSXMgdXNlZCB0byBiZSBmdW5jdGlvbnMuIE5vdyB0aGV5J3JlIGNvcm91dGlu
ZXMuCisKKyAgICBJbnN0ZWFkIG9mOjoKKworICAgICAgICB3ZWJzb2NrZXQuc2VuZChtZXNzYWdl
KQorCisgICAgeW91IG11c3Qgbm93IHdyaXRlOjoKKworICAgICAgICBhd2FpdCB3ZWJzb2NrZXQu
c2VuZChtZXNzYWdlKQorCitBbHNvOgorCisqIEFkZGVkIGZsb3cgY29udHJvbCBmb3Igb3V0Z29p
bmcgZGF0YS4KKworMS4wCisuLi4KKworKiBJbml0aWFsIHB1YmxpYyByZWxlYXNlLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvY2hlYXRzaGVldC5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvZG9jcy9jaGVhdHNoZWV0LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmY4OTczMjZhNmJhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9k
b2NzL2NoZWF0c2hlZXQucnN0CkBAIC0wLDAgKzEsMTA5IEBACitDaGVhdCBzaGVldAorPT09PT09
PT09PT0KKworLi4gY3VycmVudG1vZHVsZTo6IHdlYnNvY2tldHMKKworU2VydmVyCistLS0tLS0K
KworKiBXcml0ZSBhIGNvcm91dGluZSB0aGF0IGhhbmRsZXMgYSBzaW5nbGUgY29ubmVjdGlvbi4g
SXQgcmVjZWl2ZXMgYSBXZWJTb2NrZXQKKyAgcHJvdG9jb2wgaW5zdGFuY2UgYW5kIHRoZSBVUkkg
cGF0aCBpbiBhcmd1bWVudC4KKworICAqIENhbGwgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbC5yZWN2YCBhbmQKKyAgICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENv
bW1vblByb3RvY29sLnNlbmRgIHRvIHJlY2VpdmUgYW5kIHNlbmQKKyAgICBtZXNzYWdlcyBhdCBh
bnkgdGltZS4KKworICAqIFdoZW4gOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90
b2NvbC5yZWN2YCBvcgorICAgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9j
b2wuc2VuZGAgcmFpc2VzCisgICAgOmV4YzpgfmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAs
IGNsZWFuIHVwIGFuZCBleGl0LiBJZiB5b3Ugc3RhcnRlZAorICAgIG90aGVyIDpjbGFzczpgYXN5
bmNpby5UYXNrYCwgdGVybWluYXRlIHRoZW0gYmVmb3JlIGV4aXRpbmcuCisKKyAgKiBJZiB5b3Ug
YXJlbid0IGF3YWl0aW5nIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wu
cmVjdmAsCisgICAgY29uc2lkZXIgYXdhaXRpbmcgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbC53YWl0X2Nsb3NlZGAKKyAgICB0byBkZXRlY3QgcXVpY2tseSB3aGVuIHRo
ZSBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKworICAqIFlvdSBtYXkgOm1ldGg6YH5wcm90b2NvbC5X
ZWJTb2NrZXRDb21tb25Qcm90b2NvbC5waW5nYCBvcgorICAgIDptZXRoOmB+cHJvdG9jb2wuV2Vi
U29ja2V0Q29tbW9uUHJvdG9jb2wucG9uZ2AgaWYgeW91IHdpc2ggYnV0IGl0IGlzbid0CisgICAg
bmVlZGVkIGluIGdlbmVyYWwuCisKKyogQ3JlYXRlIGEgc2VydmVyIHdpdGggOmZ1bmM6YH5zZXJ2
ZXIuc2VydmVgIHdoaWNoIGlzIHNpbWlsYXIgdG8gYXN5bmNpbydzCisgIDptZXRoOmB+YXN5bmNp
by5BYnN0cmFjdEV2ZW50TG9vcC5jcmVhdGVfc2VydmVyYC4gWW91IGNhbiBhbHNvIHVzZSBpdCBh
cyBhbgorICBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyLgorCisgICogVGhlIHNlcnZlciB0
YWtlcyBjYXJlIG9mIGVzdGFibGlzaGluZyBjb25uZWN0aW9ucywgdGhlbiBsZXRzIHRoZSBoYW5k
bGVyCisgICAgZXhlY3V0ZSB0aGUgYXBwbGljYXRpb24gbG9naWMsIGFuZCBmaW5hbGx5IGNsb3Nl
cyB0aGUgY29ubmVjdGlvbiBhZnRlciB0aGUKKyAgICBoYW5kbGVyIGV4aXRzIG5vcm1hbGx5IG9y
IHdpdGggYW4gZXhjZXB0aW9uLgorCisgICogRm9yIGFkdmFuY2VkIGN1c3RvbWl6YXRpb24sIHlv
dSBtYXkgc3ViY2xhc3MKKyAgICA6Y2xhc3M6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9j
b2xgIGFuZCBwYXNzIGVpdGhlciB0aGlzIHN1YmNsYXNzIG9yCisgICAgYSBmYWN0b3J5IGZ1bmN0
aW9uIGFzIHRoZSBgYGNyZWF0ZV9wcm90b2NvbGBgIGFyZ3VtZW50LgorCitDbGllbnQKKy0tLS0t
LQorCisqIENyZWF0ZSBhIGNsaWVudCB3aXRoIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgIHdoaWNo
IGlzIHNpbWlsYXIgdG8gYXN5bmNpbydzCisgIDptZXRoOmB+YXN5bmNpby5CYXNlRXZlbnRMb29w
LmNyZWF0ZV9jb25uZWN0aW9uYC4gWW91IGNhbiBhbHNvIHVzZSBpdCBhcyBhbgorICBhc3luY2hy
b25vdXMgY29udGV4dCBtYW5hZ2VyLgorCisgICogRm9yIGFkdmFuY2VkIGN1c3RvbWl6YXRpb24s
IHlvdSBtYXkgc3ViY2xhc3MKKyAgICA6Y2xhc3M6YH5zZXJ2ZXIuV2ViU29ja2V0Q2xpZW50UHJv
dG9jb2xgIGFuZCBwYXNzIGVpdGhlciB0aGlzIHN1YmNsYXNzIG9yCisgICAgYSBmYWN0b3J5IGZ1
bmN0aW9uIGFzIHRoZSBgYGNyZWF0ZV9wcm90b2NvbGBgIGFyZ3VtZW50LgorCisqIENhbGwgOm1l
dGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZWN2YCBhbmQKKyAgOm1ldGg6
YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCB0byByZWNlaXZlIGFuZCBz
ZW5kIG1lc3NhZ2VzCisgIGF0IGFueSB0aW1lLgorCisqIFlvdSBtYXkgOm1ldGg6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5waW5nYCBvcgorICA6bWV0aDpgfnByb3RvY29sLldl
YlNvY2tldENvbW1vblByb3RvY29sLnBvbmdgIGlmIHlvdSB3aXNoIGJ1dCBpdCBpc24ndAorICBu
ZWVkZWQgaW4gZ2VuZXJhbC4KKworKiBJZiB5b3UgYXJlbid0IHVzaW5nIDpmdW5jOmB+Y2xpZW50
LmNvbm5lY3RgIGFzIGEgY29udGV4dCBtYW5hZ2VyLCBjYWxsCisgIDptZXRoOmB+cHJvdG9jb2wu
V2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VgIHRvIHRlcm1pbmF0ZSB0aGUgY29ubmVjdGlv
bi4KKworLi4gX2RlYnVnZ2luZzoKKworRGVidWdnaW5nCistLS0tLS0tLS0KKworSWYgeW91IGRv
bid0IHVuZGVyc3RhbmQgd2hhdCBgYHdlYnNvY2tldHNgYCBpcyBkb2luZywgZW5hYmxlIGxvZ2dp
bmc6OgorCisgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cignd2Vic29ja2V0cycpCisgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKKyAgICBs
b2dnZXIuYWRkSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKSkKKworVGhlIGxvZ3MgY29u
dGFpbjoKKworKiBFeGNlcHRpb25zIGluIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgYXQgdGhlIGBg
RVJST1JgYCBsZXZlbAorKiBFeGNlcHRpb25zIGluIHRoZSBvcGVuaW5nIG9yIGNsb3NpbmcgaGFu
ZHNoYWtlIGF0IHRoZSBgYElORk9gYCBsZXZlbAorKiBBbGwgZnJhbWVzIGF0IHRoZSBgYERFQlVH
YGAgbGV2ZWwg4oCUIHRoaXMgY2FuIGJlIHZlcnkgdmVyYm9zZQorCitJZiB5b3UncmUgbmV3IHRv
IGBgYXN5bmNpb2BgLCB5b3Ugd2lsbCBjZXJ0YWlubHkgZW5jb3VudGVyIGlzc3VlcyB0aGF0IGFy
ZQorcmVsYXRlZCB0byBhc3luY2hyb25vdXMgcHJvZ3JhbW1pbmcgaW4gZ2VuZXJhbCByYXRoZXIg
dGhhbiB0byBgYHdlYnNvY2tldHNgYAoraW4gcGFydGljdWxhci4gRm9ydHVuYXRlbHkgUHl0aG9u
J3Mgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBwcm92aWRlcyBhZHZpY2UgdG8KK2BkZXZlbG9wIHdp
dGggYXN5bmNpb2BfLiBDaGVjayBpdCBvdXQ6IGl0J3MgaW52YWx1YWJsZSEKKworLi4gX2RldmVs
b3Agd2l0aCBhc3luY2lvOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvYXN5bmNp
by1kZXYuaHRtbAorCitQYXNzaW5nIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBjb25uZWN0
aW9uIGhhbmRsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitXaGVuIHdyaXRpbmcgYSBzZXJ2ZXIsIGlmIHlvdSBuZWVkIHRvIHBhc3Mg
YWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlCitjb25uZWN0aW9uIGhhbmRsZXIsIHlvdSBjYW4g
YmluZCB0aGVtIHdpdGggOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYDo6CisKKyAgICBpbXBvcnQg
YXN5bmNpbworICAgIGltcG9ydCBmdW5jdG9vbHMKKyAgICBpbXBvcnQgd2Vic29ja2V0cworCisg
ICAgYXN5bmMgZGVmIGhhbmRsZXIod2Vic29ja2V0LCBwYXRoLCBleHRyYV9hcmd1bWVudCk6Cisg
ICAgICAgIC4uLgorCisgICAgYm91bmRfaGFuZGxlciA9IGZ1bmN0b29scy5wYXJ0aWFsKGhhbmRs
ZXIsIGV4dHJhX2FyZ3VtZW50PSdzcGFtJykKKyAgICBzdGFydF9zZXJ2ZXIgPSB3ZWJzb2NrZXRz
LnNlcnZlKGJvdW5kX2hhbmRsZXIsICcxMjcuMC4wLjEnLCA4NzY1KQorCisgICAgYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCisgICAgYXN5
bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVyKCkKKworQW5vdGhlciB3YXkgdG8gYWNo
aWV2ZSB0aGlzIHJlc3VsdCBpcyB0byBkZWZpbmUgdGhlIGBgaGFuZGxlcmBgIGNvcm91dGluZSBp
bgorYSBzY29wZSB3aGVyZSB0aGUgYGBleHRyYV9hcmd1bWVudGBgIHZhcmlhYmxlIGV4aXN0cyBp
bnN0ZWFkIG9mIGluamVjdGluZyBpdAordGhyb3VnaCBhbiBhcmd1bWVudC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2Rv
Y3VtZW50YXRpb24vY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2NvbmYucHkKc2ltaWxh
cml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CnJlbmFtZSB0byBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZG9jcy9jb25mLnB5CmluZGV4IDdlNTQyODdhNjllMC4uMDY0YzY1N2Jm
MTYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2RvY3MvY29uZi5weQpAQCAtMSw1MiArMSw2NyBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0K
ICMKLSMgc2l4IGRvY3VtZW50YXRpb24gYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlCisjIHdlYnNv
Y2tldHMgZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkK
KyMgc3BoaW54LXF1aWNrc3RhcnQgb24gU3VuIE1hciAzMSAyMDo0ODo0NCAyMDEzLgorIworIyBU
aGlzIGZpbGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc2V0IHRv
IGl0cyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwgcG9zc2libGUgY29u
ZmlndXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRvZ2VuZXJhdGVkIGZp
bGUuCisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVz
IHRoYXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KIAot
aW1wb3J0IG9zCi1pbXBvcnQgc3lzCitpbXBvcnQgc3lzLCBvcywgZGF0ZXRpbWUKIAogIyBJZiBl
eHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdpdGggYXV0b2RvYykgYXJlIGluIGFu
b3RoZXIgZGlyZWN0b3J5LAogIyBhZGQgdGhlc2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVy
ZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUKICMgZG9jdW1lbnRhdGlvbiBy
b290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24g
aGVyZS4KLSNzeXMucGF0aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKCcuJykpCitzeXMucGF0aC5p
bnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aCgnLi4nKSwgJ3NyYycpKQogCiAj
IC0tIEdlbmVyYWwgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjIElmIHlvdXIgZG9jdW1lbnRhdGlvbiBuZWVkcyBh
IG1pbmltYWwgU3BoaW54IHZlcnNpb24sIHN0YXRlIGl0IGhlcmUuCi1uZWVkc19zcGhpbnggPSAi
MS4wIgorI25lZWRzX3NwaGlueCA9ICcxLjAnCiAKICMgQWRkIGFueSBTcGhpbnggZXh0ZW5zaW9u
IG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJpbmdzLiBUaGV5IGNhbiBiZSBleHRlbnNpb25zCiAj
IGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQgJ3NwaGlueC5leHQuKicpIG9yIHlvdXIgY3VzdG9t
IG9uZXMuCi1leHRlbnNpb25zID0gWyJzcGhpbnguZXh0LmludGVyc3BoaW54Il0KK2V4dGVuc2lv
bnMgPSBbCisgICAgJ3NwaGlueC5leHQuYXV0b2RvYycsCisgICAgJ3NwaGlueC5leHQuaW50ZXJz
cGhpbngnLAorICAgICdzcGhpbnguZXh0LnZpZXdjb2RlJywKKyAgICAnc3BoaW54X2F1dG9kb2Nf
dHlwZWhpbnRzJywKKyAgICAnc3BoaW54Y29udHJpYl90cmlvJywKKyAgXQorCisjIFNwZWxsaW5n
IGNoZWNrIG5lZWRzIGFuIGFkZGl0aW9uYWwgbW9kdWxlIHRoYXQgaXMgbm90IGluc3RhbGxlZCBi
eSBkZWZhdWx0LgorIyBBZGQgaXQgb25seSBpZiBzcGVsbGluZyBjaGVjayBpcyByZXF1ZXN0ZWQg
c28gZG9jcyBjYW4gYmUgZ2VuZXJhdGVkIHdpdGhvdXQgaXQuCitpZiAnc3BlbGxpbmcnIGluIHN5
cy5hcmd2OgorICAgIGV4dGVuc2lvbnMuYXBwZW5kKCdzcGhpbnhjb250cmliLnNwZWxsaW5nJykK
IAogIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0ZXMgaGVyZSwgcmVsYXRpdmUg
dG8gdGhpcyBkaXJlY3RvcnkuCi10ZW1wbGF0ZXNfcGF0aCA9IFsiX3RlbXBsYXRlcyJdCit0ZW1w
bGF0ZXNfcGF0aCA9IFsnX3RlbXBsYXRlcyddCiAKICMgVGhlIHN1ZmZpeCBvZiBzb3VyY2UgZmls
ZW5hbWVzLgotc291cmNlX3N1ZmZpeCA9ICIucnN0Igorc291cmNlX3N1ZmZpeCA9ICcucnN0Jwog
CiAjIFRoZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMuCi0jc291cmNlX2VuY29kaW5nID0gInV0
Zi04LXNpZyIKKyNzb3VyY2VfZW5jb2RpbmcgPSAndXRmLTgtc2lnJwogCiAjIFRoZSBtYXN0ZXIg
dG9jdHJlZSBkb2N1bWVudC4KLW1hc3Rlcl9kb2MgPSAiaW5kZXgiCittYXN0ZXJfZG9jID0gJ2lu
ZGV4JwogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCi1wcm9qZWN0
ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAtMjAxNCwgQmVuamFtaW4gUGV0ZXJzb24iCi0K
LXN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikp
KQotZnJvbSBzaXggaW1wb3J0IF9fdmVyc2lvbl9fIGFzIHNpeF92ZXJzaW9uCi1zeXMucGF0aC5w
b3AoKQorcHJvamVjdCA9ICd3ZWJzb2NrZXRzJworY29weXJpZ2h0ID0gZicyMDEzLXtkYXRldGlt
ZS5kYXRlLnRvZGF5KCkueWVhcn0sIEF5bWVyaWMgQXVndXN0aW4gYW5kIGNvbnRyaWJ1dG9ycycK
IAogIyBUaGUgdmVyc2lvbiBpbmZvIGZvciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcs
IGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9yCiAjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNv
IHVzZWQgaW4gdmFyaW91cyBvdGhlciBwbGFjZXMgdGhyb3VnaG91dCB0aGUKICMgYnVpbHQgZG9j
dW1lbnRzLgogIwogIyBUaGUgc2hvcnQgWC5ZIHZlcnNpb24uCi12ZXJzaW9uID0gc2l4X3ZlcnNp
b25bOi0yXQordmVyc2lvbiA9ICc4LjEnCiAjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGluZyBh
bHBoYS9iZXRhL3JjIHRhZ3MuCi1yZWxlYXNlID0gc2l4X3ZlcnNpb24KK3JlbGVhc2UgPSAnOC4x
JwogCiAjIFRoZSBsYW5ndWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4g
UmVmZXIgdG8gZG9jdW1lbnRhdGlvbgogIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFn
ZXMuCkBAIC02MCw3ICs3NSw3IEBAIHJlbGVhc2UgPSBzaXhfdmVyc2lvbgogCiAjIExpc3Qgb2Yg
cGF0dGVybnMsIHJlbGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMg
YW5kCiAjIGRpcmVjdG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxl
cy4KLWV4Y2x1ZGVfcGF0dGVybnMgPSBbIl9idWlsZCJdCitleGNsdWRlX3BhdHRlcm5zID0gWydf
YnVpbGQnXQogCiAjIFRoZSByZVNUIGRlZmF1bHQgcm9sZSAodXNlZCBmb3IgdGhpcyBtYXJrdXA6
IGB0ZXh0YCkgdG8gdXNlIGZvciBhbGwgZG9jdW1lbnRzLgogI2RlZmF1bHRfcm9sZSA9IE5vbmUK
QEAgLTc3LDcgKzkyLDcgQEAgZXhjbHVkZV9wYXR0ZXJucyA9IFsiX2J1aWxkIl0KICNzaG93X2F1
dGhvcnMgPSBGYWxzZQogCiAjIFRoZSBuYW1lIG9mIHRoZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hs
aWdodGluZykgc3R5bGUgdG8gdXNlLgotcHlnbWVudHNfc3R5bGUgPSAic3BoaW54IgorcHlnbWVu
dHNfc3R5bGUgPSAnc3BoaW54JwogCiAjIEEgbGlzdCBvZiBpZ25vcmVkIHByZWZpeGVzIGZvciBt
b2R1bGUgaW5kZXggc29ydGluZy4KICNtb2RpbmRleF9jb21tb25fcHJlZml4ID0gW10KQEAgLTg3
LDEyICsxMDIsMTkgQEAgcHlnbWVudHNfc3R5bGUgPSAic3BoaW54IgogCiAjIFRoZSB0aGVtZSB0
byB1c2UgZm9yIEhUTUwgYW5kIEhUTUwgSGVscCBwYWdlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlv
biBmb3IKICMgYSBsaXN0IG9mIGJ1aWx0aW4gdGhlbWVzLgotaHRtbF90aGVtZSA9ICJkZWZhdWx0
IgoraHRtbF90aGVtZSA9ICdhbGFiYXN0ZXInCiAKICMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUt
c3BlY2lmaWMgYW5kIGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCiAjIGZ1
cnRoZXIuICBGb3IgYSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBz
ZWUgdGhlCiAjIGRvY3VtZW50YXRpb24uCi0jaHRtbF90aGVtZV9vcHRpb25zID0ge30KK2h0bWxf
dGhlbWVfb3B0aW9ucyA9IHsKKyAgICAnbG9nbyc6ICd3ZWJzb2NrZXRzLnN2ZycsCisgICAgJ2Rl
c2NyaXB0aW9uJzogJ0EgbGlicmFyeSBmb3IgYnVpbGRpbmcgV2ViU29ja2V0IHNlcnZlcnMgYW5k
IGNsaWVudHMgaW4gUHl0aG9uIHdpdGggYSBmb2N1cyBvbiBjb3JyZWN0bmVzcyBhbmQgc2ltcGxp
Y2l0eS4nLAorICAgICdnaXRodWJfYnV0dG9uJzogVHJ1ZSwKKyAgICAnZ2l0aHViX3VzZXInOiAn
YWF1Z3VzdGluJywKKyAgICAnZ2l0aHViX3JlcG8nOiAnd2Vic29ja2V0cycsCisgICAgJ3RpZGVs
aWZ0X3VybCc6ICdodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vcGtnL3B5cGktd2Vi
c29ja2V0cz91dG1fc291cmNlPXB5cGktd2Vic29ja2V0cyZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0
bV9jYW1wYWlnbj1kb2NzJywKK30KIAogIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0
b20gdGhlbWVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LgogI2h0bWxfdGhlbWVf
cGF0aCA9IFtdCkBAIC0xMTYsNyArMTM4LDcgQEAgaHRtbF90aGVtZSA9ICJkZWZhdWx0IgogIyBB
ZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3RhdGljIGZpbGVzIChzdWNoIGFzIHN0
eWxlIHNoZWV0cykgaGVyZSwKICMgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuIFRoZXkgYXJl
IGNvcGllZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmlsZXMsCiAjIHNvIGEgZmlsZSBuYW1l
ZCAiZGVmYXVsdC5jc3MiIHdpbGwgb3ZlcndyaXRlIHRoZSBidWlsdGluICJkZWZhdWx0LmNzcyIu
Ci1odG1sX3N0YXRpY19wYXRoID0gWyJfc3RhdGljIl0KK2h0bWxfc3RhdGljX3BhdGggPSBbJ19z
dGF0aWMnXQogCiAjIElmIG5vdCAnJywgYSAnTGFzdCB1cGRhdGVkIG9uOicgdGltZXN0YW1wIGlz
IGluc2VydGVkIGF0IGV2ZXJ5IHBhZ2UgYm90dG9tLAogIyB1c2luZyB0aGUgZ2l2ZW4gc3RyZnRp
bWUgZm9ybWF0LgpAQCAtMTI3LDcgKzE0OSwxNSBAQCBodG1sX3N0YXRpY19wYXRoID0gWyJfc3Rh
dGljIl0KICNodG1sX3VzZV9zbWFydHlwYW50cyA9IFRydWUKIAogIyBDdXN0b20gc2lkZWJhciB0
ZW1wbGF0ZXMsIG1hcHMgZG9jdW1lbnQgbmFtZXMgdG8gdGVtcGxhdGUgbmFtZXMuCi0jaHRtbF9z
aWRlYmFycyA9IHt9CitodG1sX3NpZGViYXJzID0geworICAgICcqKic6IFsKKyAgICAgICAgJ2Fi
b3V0Lmh0bWwnLAorICAgICAgICAnc2VhcmNoYm94Lmh0bWwnLAorICAgICAgICAnbmF2aWdhdGlv
bi5odG1sJywKKyAgICAgICAgJ3JlbGF0aW9ucy5odG1sJywKKyAgICAgICAgJ2RvbmF0ZS5odG1s
JywKKyAgICBdCit9CiAKICMgQWRkaXRpb25hbCB0ZW1wbGF0ZXMgdGhhdCBzaG91bGQgYmUgcmVu
ZGVyZWQgdG8gcGFnZXMsIG1hcHMgcGFnZSBuYW1lcyB0bwogIyB0ZW1wbGF0ZSBuYW1lcy4KQEAg
LTE1NiwyNiArMTg2LDMxIEBAIGh0bWxfc3RhdGljX3BhdGggPSBbIl9zdGF0aWMiXQogIyBiYXNl
IFVSTCBmcm9tIHdoaWNoIHRoZSBmaW5pc2hlZCBIVE1MIGlzIHNlcnZlZC4KICNodG1sX3VzZV9v
cGVuc2VhcmNoID0gJycKIAotIyBJZiBub25lbXB0eSwgdGhpcyBpcyB0aGUgZmlsZSBuYW1lIHN1
ZmZpeCBmb3IgSFRNTCBmaWxlcyAoZS5nLiAiLnhodG1sIikuCi0jaHRtbF9maWxlX3N1ZmZpeCA9
ICcnCisjIFRoaXMgaXMgdGhlIGZpbGUgbmFtZSBzdWZmaXggZm9yIEhUTUwgZmlsZXMgKGUuZy4g
Ii54aHRtbCIpLgorI2h0bWxfZmlsZV9zdWZmaXggPSBOb25lCiAKICMgT3V0cHV0IGZpbGUgYmFz
ZSBuYW1lIGZvciBIVE1MIGhlbHAgYnVpbGRlci4KLWh0bWxoZWxwX2Jhc2VuYW1lID0gJ3NpeGRv
YycKK2h0bWxoZWxwX2Jhc2VuYW1lID0gJ3dlYnNvY2tldHNkb2MnCiAKIAogIyAtLSBPcHRpb25z
IGZvciBMYVRlWCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcicgb3IgJ2E0JykuCi0jbGF0
ZXhfcGFwZXJfc2l6ZSA9ICdsZXR0ZXInCitsYXRleF9lbGVtZW50cyA9IHsKKyMgVGhlIHBhcGVy
IHNpemUgKCdsZXR0ZXJwYXBlcicgb3IgJ2E0cGFwZXInKS4KKyMncGFwZXJzaXplJzogJ2xldHRl
cnBhcGVyJywKIAogIyBUaGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgot
I2xhdGV4X2ZvbnRfc2l6ZSA9ICcxMHB0JworIydwb2ludHNpemUnOiAnMTBwdCcsCisKKyMgQWRk
aXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFtYmxlLgorIydwcmVhbWJsZSc6ICcnLAor
fQogCiAjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0cmVlIGludG8gTGFUZVggZmlsZXMuIExpc3Qg
b2YgdHVwbGVzCiAjIChzb3VyY2Ugc3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRo
b3IsIGRvY3VtZW50Y2xhc3MgW2hvd3RvL21hbnVhbF0pLgogbGF0ZXhfZG9jdW1lbnRzID0gWwot
ICAoImluZGV4IiwgInNpeC50ZXgiLCB1InNpeCBEb2N1bWVudGF0aW9uIiwKLSAgIHUiQmVuamFt
aW4gUGV0ZXJzb24iLCAibWFudWFsIiksCisgICgnaW5kZXgnLCAnd2Vic29ja2V0cy50ZXgnLCAn
d2Vic29ja2V0cyBEb2N1bWVudGF0aW9uJywKKyAgICdBeW1lcmljIEF1Z3VzdGluJywgJ21hbnVh
bCcpLAogXQogCiAjIFRoZSBuYW1lIG9mIGFuIGltYWdlIGZpbGUgKHJlbGF0aXZlIHRvIHRoaXMg
ZGlyZWN0b3J5KSB0byBwbGFjZSBhdCB0aGUgdG9wIG9mCkBAIC0xOTIsOSArMjI3LDYgQEAgbGF0
ZXhfZG9jdW1lbnRzID0gWwogIyBJZiB0cnVlLCBzaG93IFVSTCBhZGRyZXNzZXMgYWZ0ZXIgZXh0
ZXJuYWwgbGlua3MuCiAjbGF0ZXhfc2hvd191cmxzID0gRmFsc2UKIAotIyBBZGRpdGlvbmFsIHN0
dWZmIGZvciB0aGUgTGFUZVggcHJlYW1ibGUuCi0jbGF0ZXhfcHJlYW1ibGUgPSAnJwotCiAjIERv
Y3VtZW50cyB0byBhcHBlbmQgYXMgYW4gYXBwZW5kaXggdG8gYWxsIG1hbnVhbHMuCiAjbGF0ZXhf
YXBwZW5kaWNlcyA9IFtdCiAKQEAgLTIwNywxMSArMjM5LDM0IEBAIGxhdGV4X2RvY3VtZW50cyA9
IFsKICMgT25lIGVudHJ5IHBlciBtYW51YWwgcGFnZS4gTGlzdCBvZiB0dXBsZXMKICMgKHNvdXJj
ZSBzdGFydCBmaWxlLCBuYW1lLCBkZXNjcmlwdGlvbiwgYXV0aG9ycywgbWFudWFsIHNlY3Rpb24p
LgogbWFuX3BhZ2VzID0gWwotICAgICgiaW5kZXgiLCAic2l4IiwgdSJzaXggRG9jdW1lbnRhdGlv
biIsCi0gICAgIFt1IkJlbmphbWluIFBldGVyc29uIl0sIDEpCisgICAgKCdpbmRleCcsICd3ZWJz
b2NrZXRzJywgJ3dlYnNvY2tldHMgRG9jdW1lbnRhdGlvbicsCisgICAgIFsnQXltZXJpYyBBdWd1
c3RpbiddLCAxKQogXQogCi0jIC0tIEludGVyc3BoaW54IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiB0cnVlLCBzaG93
IFVSTCBhZGRyZXNzZXMgYWZ0ZXIgZXh0ZXJuYWwgbGlua3MuCisjbWFuX3Nob3dfdXJscyA9IEZh
bHNlCisKKworIyAtLSBPcHRpb25zIGZvciBUZXhpbmZvIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBHcm91cGluZyB0aGUgZG9jdW1l
bnQgdHJlZSBpbnRvIFRleGluZm8gZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ugc3Rh
cnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsCisjICBkaXIgbWVudSBlbnRyeSwg
ZGVzY3JpcHRpb24sIGNhdGVnb3J5KQordGV4aW5mb19kb2N1bWVudHMgPSBbCisgICgnaW5kZXgn
LCAnd2Vic29ja2V0cycsICd3ZWJzb2NrZXRzIERvY3VtZW50YXRpb24nLAorICAgJ0F5bWVyaWMg
QXVndXN0aW4nLCAnd2Vic29ja2V0cycsICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0
LicsCisgICAnTWlzY2VsbGFuZW91cycpLAorXQorCisjIERvY3VtZW50cyB0byBhcHBlbmQgYXMg
YW4gYXBwZW5kaXggdG8gYWxsIG1hbnVhbHMuCisjdGV4aW5mb19hcHBlbmRpY2VzID0gW10KKwor
IyBJZiBmYWxzZSwgbm8gbW9kdWxlIGluZGV4IGlzIGdlbmVyYXRlZC4KKyN0ZXhpbmZvX2RvbWFp
bl9pbmRpY2VzID0gVHJ1ZQorCisjIEhvdyB0byBkaXNwbGF5IFVSTCBhZGRyZXNzZXM6ICdmb290
bm90ZScsICdubycsIG9yICdpbmxpbmUnLgorI3RleGluZm9fc2hvd191cmxzID0gJ2Zvb3Rub3Rl
JworCiAKLWludGVyc3BoaW54X21hcHBpbmcgPSB7InB5MiIgOiAoImh0dHBzOi8vZG9jcy5weXRo
b24ub3JnLzIvIiwgTm9uZSksCi0gICAgICAgICAgICAgICAgICAgICAgICJweTMiIDogKCJodHRw
czovL2RvY3MucHl0aG9uLm9yZy8zLyIsIE5vbmUpfQorIyBFeGFtcGxlIGNvbmZpZ3VyYXRpb24g
Zm9yIGludGVyc3BoaW54OiByZWZlciB0byB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkuCitp
bnRlcnNwaGlueF9tYXBwaW5nID0geydodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLyc6IE5vbmV9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9jb250cmlidXRpbmcucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2RvY3MvY29udHJpYnV0aW5nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjQwZjFkYmI1NGFlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9kb2NzL2NvbnRyaWJ1dGluZy5yc3QKQEAgLTAsMCArMSw2MSBAQAorQ29udHJp
YnV0aW5nCis9PT09PT09PT09PT0KKworVGhhbmtzIGZvciB0YWtpbmcgdGhlIHRpbWUgdG8gY29u
dHJpYnV0ZSB0byB3ZWJzb2NrZXRzIQorCitDb2RlIG9mIENvbmR1Y3QKKy0tLS0tLS0tLS0tLS0t
LQorCitUaGlzIHByb2plY3QgYW5kIGV2ZXJ5b25lIHBhcnRpY2lwYXRpbmcgaW4gaXQgaXMgZ292
ZXJuZWQgYnkgdGhlIGBDb2RlIG9mCitDb25kdWN0YF8uIEJ5IHBhcnRpY2lwYXRpbmcsIHlvdSBh
cmUgZXhwZWN0ZWQgdG8gdXBob2xkIHRoaXMgY29kZS4gUGxlYXNlCityZXBvcnQgaW5hcHByb3By
aWF0ZSBiZWhhdmlvciB0byBheW1lcmljIERPVCBhdWd1c3RpbiBBVCBmcmFjdGFsaWRlYXMgRE9U
IGNvbS4KKworLi4gX0NvZGUgb2YgQ29uZHVjdDogaHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rp
bi93ZWJzb2NrZXRzL2Jsb2IvbWFzdGVyL0NPREVfT0ZfQ09ORFVDVC5tZAorCisqKElmIEknbSB0
aGUgcGVyc29uIHdpdGggdGhlIGluYXBwcm9wcmlhdGUgYmVoYXZpb3IsIHBsZWFzZSBhY2NlcHQg
bXkKK2Fwb2xvZ2llcy4gSSBrbm93IEkgY2FuIG1lc3MgdXAuIEkgY2FuJ3QgZXhwZWN0IHlvdSB0
byB0ZWxsIG1lLCBidXQgaWYgeW91CitjaG9vc2UgdG8gZG8gc28sIEknbGwgZG8gbXkgYmVzdCB0
byBoYW5kbGUgY3JpdGljaXNtIGNvbnN0cnVjdGl2ZWx5LgorLS0gQXltZXJpYykqCisKK0NvbnRy
aWJ1dGlvbnMKKy0tLS0tLS0tLS0tLS0KKworQnVnIHJlcG9ydHMsIHBhdGNoZXMgYW5kIHN1Z2dl
c3Rpb25zIGFyZSB3ZWxjb21lIQorCitQbGVhc2Ugb3BlbiBhbiBpc3N1ZV8gb3Igc2VuZCBhIGBw
dWxsIHJlcXVlc3RgXy4KKworRmVlZGJhY2sgYWJvdXQgdGhlIGRvY3VtZW50YXRpb24gaXMgZXNw
ZWNpYWxseSB2YWx1YWJsZSDigJQgdGhlIGF1dGhvcnMgb2YKK2Bgd2Vic29ja2V0c2BgIGZlZWwg
bW9yZSBjb25maWRlbnQgYWJvdXQgd3JpdGluZyBjb2RlIHRoYW4gd3JpdGluZyBkb2NzIDotKQor
CitJZiB5b3UncmUgd29uZGVyaW5nIHdoeSB0aGluZ3MgYXJlIGRvbmUgaW4gYSBjZXJ0YWluIHdh
eSwgdGhlIDpkb2M6YGRlc2lnbgorZG9jdW1lbnQgPGRlc2lnbj5gIHByb3ZpZGVzIGxvdHMgb2Yg
ZGV0YWlscyBhYm91dCB0aGUgaW50ZXJuYWxzIG9mIHdlYnNvY2tldHMuCisKKy4uIF9pc3N1ZTog
aHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93ZWJzb2NrZXRzL2lzc3Vlcy9uZXcKKy4uIF9w
dWxsIHJlcXVlc3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9jb21w
YXJlLworCitRdWVzdGlvbnMKKy0tLS0tLS0tLQorCitHaXRIdWIgaXNzdWVzIGFyZW4ndCBhIGdv
b2QgbWVkaXVtIGZvciBoYW5kbGluZyBxdWVzdGlvbnMuIFRoZXJlIGFyZSBiZXR0ZXIKK3BsYWNl
cyB0byBhc2sgcXVlc3Rpb25zLCBmb3IgZXhhbXBsZSBTdGFjayBPdmVyZmxvdy4KKworSWYgeW91
IHdhbnQgdG8gYXNrIGEgcXVlc3Rpb24gYW55d2F5LCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQ6CisK
Ky0gaXQncyBhIHF1ZXN0aW9uIGFib3V0IGBgd2Vic29ja2V0c2BgIGFuZCBub3QgYWJvdXQgOm1v
ZDpgYXN5bmNpb2A7CistIGl0IGlzbid0IGFuc3dlcmVkIGJ5IHRoZSBkb2N1bWVudGF0aW9uOwor
LSBpdCB3YXNuJ3QgYXNrZWQgYWxyZWFkeS4KKworQSBnb29kIHF1ZXN0aW9uIGNhbiBiZSB3cml0
dGVuIGFzIGEgc3VnZ2VzdGlvbiB0byBpbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uLgorCitCaXRj
b2luIHVzZXJzCistLS0tLS0tLS0tLS0tCisKK3dlYnNvY2tldHMgYXBwZWFycyB0byBiZSBxdWl0
ZSBwb3B1bGFyIGZvciBpbnRlcmZhY2luZyB3aXRoIEJpdGNvaW4gb3Igb3RoZXIKK2NyeXB0b2N1
cnJlbmN5IHRyYWNrZXJzLiBJJ20gc3Ryb25nbHkgb3Bwb3NlZCB0byBCaXRjb2luJ3MgY2FyYm9u
IGZvb3RwcmludC4KKworUGxlYXNlIHN0b3AgaGVhdGluZyB0aGUgcGxhbmV0IHdoZXJlIG15IGNo
aWxkcmVuIGFyZSBzdXBwb3NlZCB0byBsaXZlLCB0aGFua3MuCisKK1NpbmNlIGBgd2Vic29ja2V0
c2BgIGlzIHJlbGVhc2VkIHVuZGVyIGFuIG9wZW4tc291cmNlIGxpY2Vuc2UsIHlvdSBjYW4gdXNl
IGl0Citmb3IgYW55IHB1cnBvc2UgeW91IGxpa2UuIEhvd2V2ZXIsIEkgd29uJ3Qgc3BlbmQgYW55
IG9mIG15IHRpbWUgdG8gaGVscC4KKworSSB3aWxsIHN1bW1hcmlseSBjbG9zZSBpc3N1ZXMgcmVs
YXRlZCB0byBCaXRjb2luIG9yIGNyeXB0b2N1cnJlbmN5IGluIGFueSB3YXkuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvZG9jcy9kZXBsb3ltZW50LnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9k
b2NzL2RlcGxveW1lbnQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNWIwNWFmZmYxNDNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3Mv
ZGVwbG95bWVudC5yc3QKQEAgLTAsMCArMSwxNjIgQEAKK0RlcGxveW1lbnQKKz09PT09PT09PT0K
KworLi4gY3VycmVudG1vZHVsZTo6IHdlYnNvY2tldHMKKworQXBwbGljYXRpb24gc2VydmVyCist
LS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGF1dGhvciBvZiBgYHdlYnNvY2tldHNgYCBpc24ndCBh
d2FyZSBvZiBiZXN0IHByYWN0aWNlcyBmb3IgZGVwbG95aW5nCituZXR3b3JrIHNlcnZpY2VzIGJh
c2VkIG9uIDptb2Q6YGFzeW5jaW9gLCBsZXQgYWxvbmUgYXBwbGljYXRpb24gc2VydmVycy4KKwor
WW91IGNhbiBydW4gYSBzY3JpcHQgc2ltaWxhciB0byB0aGUgOnJlZjpgc2VydmVyIGV4YW1wbGUg
PHNlcnZlci1leGFtcGxlPmAsCitpbnNpZGUgYSBzdXBlcnZpc29yIGlmIHlvdSBkZWVtIHRoYXQg
dXNlZnVsLgorCitZb3UgY2FuIGFsc28gYWRkIGEgd3JhcHBlciB0byBkYWVtb25pemUgdGhlIHBy
b2Nlc3MuIFRoaXJkLXBhcnR5IGxpYnJhcmllcworcHJvdmlkZSBzb2x1dGlvbnMgZm9yIHRoYXQu
CisKK0lmIHlvdSBjYW4gc2hhcmUga25vd2xlZGdlIG9uIHRoaXMgdG9waWMsIHBsZWFzZSBmaWxl
IGFuIGlzc3VlXy4gVGhhbmtzIQorCisuLiBfaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVn
dXN0aW4vd2Vic29ja2V0cy9pc3N1ZXMvbmV3CisKK0dyYWNlZnVsIHNodXRkb3duCistLS0tLS0t
LS0tLS0tLS0tLQorCitZb3UgbWF5IHdhbnQgdG8gY2xvc2UgY29ubmVjdGlvbnMgZ3JhY2VmdWxs
eSB3aGVuIHNodXR0aW5nIGRvd24gdGhlIHNlcnZlciwKK3BlcmhhcHMgYWZ0ZXIgZXhlY3V0aW5n
IHNvbWUgY2xlYW51cCBsb2dpYy4gVGhlcmUgYXJlIHR3byB3YXlzIHRvIGFjaGlldmUgdGhpcwor
d2l0aCB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IDpmdW5jOmB+c2VydmVyLnNlcnZlYDoKKworLSB1
c2luZyBpdCBhcyBhIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIsIG9yCistIGNhbGxpbmcg
aXRzIGBgY2xvc2UoKWBgIG1ldGhvZCwgdGhlbiB3YWl0aW5nIGZvciBpdHMgYGB3YWl0X2Nsb3Nl
ZCgpYGAKKyAgbWV0aG9kIHRvIGNvbXBsZXRlLgorCitPbiBVbml4IHN5c3RlbXMsIHNodXRkb3du
IGlzIHVzdWFsbHkgdHJpZ2dlcmVkIGJ5IHNlbmRpbmcgYSBzaWduYWwuCisKK0hlcmUncyBhIGZ1
bGwgZXhhbXBsZSBmb3IgaGFuZGxpbmcgU0lHVEVSTSBvbiBVbml4OgorCisuLiBsaXRlcmFsaW5j
bHVkZTo6IC4uL2V4YW1wbGUvc2h1dGRvd24ucHkKKyAgICA6ZW1waGFzaXplLWxpbmVzOiAxMywx
Ny0xOQorCitUaGlzIGV4YW1wbGUgaXMgZWFzaWx5IGFkYXB0ZWQgdG8gaGFuZGxlIG90aGVyIHNp
Z25hbHMuIElmIHlvdSBvdmVycmlkZSB0aGUKK2RlZmF1bHQgaGFuZGxlciBmb3IgU0lHSU5ULCB3
aGljaCByYWlzZXMgOmV4YzpgS2V5Ym9hcmRJbnRlcnJ1cHRgLCBiZSBhd2FyZQordGhhdCB5b3Ug
d29uJ3QgYmUgYWJsZSB0byBpbnRlcnJ1cHQgYSBwcm9ncmFtIHdpdGggQ3RybC1DIGFueW1vcmUg
d2hlbiBpdCdzCitzdHVjayBpbiBhIGxvb3AuCisKK0l0J3MgbW9yZSBkaWZmaWN1bHQgdG8gYWNo
aWV2ZSB0aGUgc2FtZSBlZmZlY3Qgb24gV2luZG93cy4gU29tZSB0aGlyZC1wYXJ0eQorcHJvamVj
dHMgdHJ5IHRvIGhlbHAgd2l0aCB0aGlzIHByb2JsZW0uCisKK0lmIHlvdXIgc2VydmVyIGRvZXNu
J3QgcnVuIGluIHRoZSBtYWluIHRocmVhZCwgbG9vayBhdAorOmZ1bmM6YH5hc3luY2lvLkFic3Ry
YWN0RXZlbnRMb29wLmNhbGxfc29vbl90aHJlYWRzYWZlYC4KKworTWVtb3J5IHVzYWdlCistLS0t
LS0tLS0tLS0KKworLi4gX21lbW9yeS11c2FnZToKKworSW4gbW9zdCBjYXNlcywgbWVtb3J5IHVz
YWdlIG9mIGEgV2ViU29ja2V0IHNlcnZlciBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlCitudW1iZXIg
b2Ygb3BlbiBjb25uZWN0aW9ucy4gV2hlbiBhIHNlcnZlciBoYW5kbGVzIHRob3VzYW5kcyBvZiBj
b25uZWN0aW9ucywKK21lbW9yeSB1c2FnZSBjYW4gYmVjb21lIGEgYm90dGxlbmVjay4KKworTWVt
b3J5IHVzYWdlIG9mIGEgc2luZ2xlIGNvbm5lY3Rpb24gaXMgdGhlIHN1bSBvZjoKKworMS4gdGhl
IGJhc2VsaW5lIGFtb3VudCBvZiBtZW1vcnkgYGB3ZWJzb2NrZXRzYGAgcmVxdWlyZXMgZm9yIGVh
Y2ggY29ubmVjdGlvbiwKKzIuIHRoZSBhbW91bnQgb2YgZGF0YSBoZWxkIGluIGJ1ZmZlcnMgYmVm
b3JlIHRoZSBhcHBsaWNhdGlvbiBwcm9jZXNzZXMgaXQsCiszLiBhbnkgYWRkaXRpb25hbCBtZW1v
cnkgYWxsb2NhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBpdHNlbGYuCisKK0Jhc2VsaW5lCisuLi4u
Li4uLgorCitDb21wcmVzc2lvbiBzZXR0aW5ncyBhcmUgdGhlIG1haW4gZmFjdG9yIGFmZmVjdGlu
ZyB0aGUgYmFzZWxpbmUgYW1vdW50IG9mCittZW1vcnkgdXNlZCBieSBlYWNoIGNvbm5lY3Rpb24u
CisKK0J5IGRlZmF1bHQgYGB3ZWJzb2NrZXRzYGAgbWF4aW1pemVzIGNvbXByZXNzaW9uIHJhdGUg
YXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5Cit1c2FnZS4gSWYgbWVtb3J5IHVzYWdlIGlzIGFuIGlz
c3VlLCBsb3dlcmluZyBjb21wcmVzc2lvbiBzZXR0aW5ncyBjYW4gaGVscDoKKworLSBDb250ZXh0
IFRha2VvdmVyIGlzIG5lY2Vzc2FyeSB0byBnZXQgZ29vZCBwZXJmb3JtYW5jZSBmb3IgYWxtb3N0
IGFsbAorICBhcHBsaWNhdGlvbnMuIEl0IHNob3VsZCByZW1haW4gZW5hYmxlZC4KKy0gV2luZG93
IEJpdHMgaXMgYSB0cmFkZS1vZmYgYmV0d2VlbiBtZW1vcnkgdXNhZ2UgYW5kIGNvbXByZXNzaW9u
IHJhdGUuCisgIEl0IGRlZmF1bHRzIHRvIDE1IGFuZCBjYW4gYmUgbG93ZXJlZC4gVGhlIGRlZmF1
bHQgdmFsdWUgaXNuJ3Qgb3B0aW1hbAorICBmb3Igc21hbGwsIHJlcGV0aXRpdmUgbWVzc2FnZXMg
d2hpY2ggYXJlIHR5cGljYWwgb2YgV2ViU29ja2V0IHNlcnZlcnMuCistIE1lbW9yeSBMZXZlbCBp
cyBhIHRyYWRlLW9mZiBiZXR3ZWVuIG1lbW9yeSB1c2FnZSBhbmQgY29tcHJlc3Npb24gc3BlZWQu
CisgIEl0IGRlZmF1bHRzIHRvIDggYW5kIGNhbiBiZSBsb3dlcmVkLiBBIGxvd2VyIG1lbW9yeSBs
ZXZlbCBjYW4gYWN0dWFsbHkKKyAgaW5jcmVhc2Ugc3BlZWQgdGhhbmtzIHRvIG1lbW9yeSBsb2Nh
bGl0eSwgZXZlbiBpZiB0aGUgQ1BVIGRvZXMgbW9yZSB3b3JrIQorCitTZWUgdGhpcyA6cmVmOmBl
eGFtcGxlIDxwZXItbWVzc2FnZS1kZWZsYXRlLWNvbmZpZ3VyYXRpb24tZXhhbXBsZT5gIGZvciBo
b3cgdG8KK2NvbmZpZ3VyZSBjb21wcmVzc2lvbiBzZXR0aW5ncy4KKworSGVyZSdzIGhvdyB2YXJp
b3VzIGNvbXByZXNzaW9uIHNldHRpbmdzIGFmZmVjdCBtZW1vcnkgdXNhZ2Ugb2YgYSBzaW5nbGUK
K2Nvbm5lY3Rpb24gb24gYSA2NC1iaXQgc3lzdGVtLCBhcyB3ZWxsIGEgYmVuY2htYXJrXyBvZiBj
b21wcmVzc2VkIHNpemUgYW5kCitjb21wcmVzc2lvbiB0aW1lIGZvciBhIGNvcnB1cyBvZiBzbWFs
bCBKU09OIGRvY3VtZW50cy4KKworKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tKworfCBDb21wcmVzc2lvbiB8IFdpbmRvdyBCaXRzIHwgTWVtb3J5IExldmVsIHwgTWVtb3J5
IHVzYWdlIHwgU2l6ZSB2cy4gZGVmYXVsdCB8IFRpbWUgdnMuIGRlZmF1bHQgfAorKz09PT09PT09
PT09PT0rPT09PT09PT09PT09PSs9PT09PT09PT09PT09PSs9PT09PT09PT09PT09PSs9PT09PT09
PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09KworfCAqZGVmYXVsdCogICB8IDE1ICAgICAg
ICAgIHwgOCAgICAgICAgICAgIHwgMzI1wqBLaUIgICAgICB8ICswJSAgICAgICAgICAgICAgfCAr
MCUgICAgICAgICAgICAgICsKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LSsKK3wgICAgICAgICAgICAgfCAxNCAgICAgICAgICB8IDcgICAgICAgICAgICB8IDE4McKgS2lC
ICAgICAgfCArMS41JSAgICAgICAgICAgIHwgLTUuMyUgICAgICAgICAgICB8CisrLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICAgIHwgMTMgICAgICAg
ICAgfCA2ICAgICAgICAgICAgfCAxMTDCoEtpQiAgICAgIHwgKzIuOCUgICAgICAgICAgICB8IC03
LjUlICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
KworfCAgICAgICAgICAgICB8IDEyICAgICAgICAgIHwgNSAgICAgICAgICAgIHwgNzPCoEtpQiAg
ICAgICB8ICs0LjQlICAgICAgICAgICAgfCAtMTguOSUgICAgICAgICAgIHwKKystLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgICAgfCAxMSAgICAgICAg
ICB8IDQgICAgICAgICAgICB8IDU1wqBLaUIgICAgICAgfCArOC41JSAgICAgICAgICAgIHwgLTE4
LjglICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r
Cit8ICpkaXNhYmxlZCogIHwgTi9BICAgICAgICAgfCBOL0EgICAgICAgICAgfCAyMsKgS2lCICAg
ICAgIHwgTi9BICAgICAgICAgICAgICB8IE4vQSAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKworCisqRG9uJ3QgYXNzdW1lIHRoaXMgZXhhbXBs
ZSBpcyByZXByZXNlbnRhdGl2ZSEgQ29tcHJlc3NlZCBzaXplIGFuZCBjb21wcmVzc2lvbgordGlt
ZSBkZXBlbmQgaGVhdmlseSBvbiB0aGUga2luZCBvZiBtZXNzYWdlcyBleGNoYW5nZWQgYnkgdGhl
IGFwcGxpY2F0aW9uISoKKworWW91IGNhbiBydW4gdGhlIHNhbWUgYmVuY2htYXJrIGZvciB5b3Vy
IGFwcGxpY2F0aW9uIGJ5IGNyZWF0aW5nIGEgbGlzdCBvZgordHlwaWNhbCBtZXNzYWdlcyBhbmQg
cGFzc2luZyBpdCB0byB0aGUgYGBfYmVuY2htYXJrYGAgZnVuY3Rpb25fLgorCisuLiBfYmVuY2ht
YXJrOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hYXVndXN0aW4vZmJlYTA5Y2U4YjViMzBjNGU1
NjQ1OGViMDgxZmU1OTkKKy4uIF9mdW5jdGlvbjogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWF1
Z3VzdGluL2ZiZWEwOWNlOGI1YjMwYzRlNTY0NThlYjA4MWZlNTk5I2ZpbGUtY29tcHJlc3Npb24t
cHktTDQ4LUwxNDQKKworVGhpcyBgYmxvZyBwb3N0IGJ5IElseWEgR3JpZ29yaWtgXyBwcm92aWRl
cyBtb3JlIGRldGFpbHMgYWJvdXQgaG93IGNvbXByZXNzaW9uCitzZXR0aW5ncyBhZmZlY3QgbWVt
b3J5IHVzYWdlIGFuZCBob3cgdG8gb3B0aW1pemUgdGhlbS4KKworLi4gX2Jsb2cgcG9zdCBieSBJ
bHlhIEdyaWdvcmlrOiBodHRwczovL3d3dy5pZ3ZpdGEuY29tLzIwMTMvMTEvMjcvY29uZmlndXJp
bmctYW5kLW9wdGltaXppbmctd2Vic29ja2V0LWNvbXByZXNzaW9uLworCitUaGlzIGBleHBlcmlt
ZW50IGJ5IFBldGVyIFRob3Jzb25gXyBzdWdnZXN0cyBXaW5kb3cgQml0cyA9IDExLCBNZW1vcnkg
TGV2ZWwgPQorNCBhcyBhIHN3ZWV0IHNwb3QgZm9yIG9wdGltaXppbmcgbWVtb3J5IHVzYWdlLgor
CisuLiBfZXhwZXJpbWVudCBieSBQZXRlciBUaG9yc29uOiBodHRwczovL3d3dy5pZXRmLm9yZy9t
YWlsLWFyY2hpdmUvd2ViL2h5YmkvY3VycmVudC9tc2cxMDIyMi5odG1sCisKK0J1ZmZlcnMKKy4u
Li4uLi4KKworVW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMsIGJ1ZmZlcnMgYXJlIGFsbW9zdCBh
bHdheXMgZW1wdHkuCisKK1VuZGVyIGhpZ2ggbG9hZCwgaWYgYSBzZXJ2ZXIgcmVjZWl2ZXMgbW9y
ZSBtZXNzYWdlcyB0aGFuIGl0IGNhbiBwcm9jZXNzLAorYnVmZmVyYmxvYXQgY2FuIHJlc3VsdCBp
biBleGNlc3NpdmUgbWVtb3J5IHVzZS4KKworQnkgZGVmYXVsdCBgYHdlYnNvY2tldHNgYCBoYXMg
Z2VuZXJvdXMgbGltaXRzLiBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0bworYWRhcHQgdGhl
bSB0byB5b3VyIGFwcGxpY2F0aW9uLiBXaGVuIHlvdSBjYWxsIDpmdW5jOmB+c2VydmVyLnNlcnZl
YDoKKworLSBTZXQgYGBtYXhfc2l6ZWBgIChkZWZhdWx0OiAxwqBNaUIsIFVURi04IGVuY29kZWQp
IHRvIHRoZSBtYXhpbXVtIHNpemUgb2YKKyAgbWVzc2FnZXMgeW91ciBhcHBsaWNhdGlvbiBnZW5l
cmF0ZXMuCistIFNldCBgYG1heF9xdWV1ZWBgIChkZWZhdWx0OiAzMikgdG8gdGhlIG1heGltdW0g
bnVtYmVyIG9mIG1lc3NhZ2VzIHlvdXIKKyAgYXBwbGljYXRpb24gZXhwZWN0cyB0byByZWNlaXZl
IGZhc3RlciB0aGFuIGl0IGNhbiBwcm9jZXNzIHRoZW0uIFRoZSBxdWV1ZQorICBwcm92aWRlcyBi
dXJzdCB0b2xlcmFuY2Ugd2l0aG91dCBzbG93aW5nIGRvd24gdGhlIFRDUCBjb25uZWN0aW9uLgor
CitGdXJ0aGVybW9yZSwgeW91IGNhbiBsb3dlciBgYHJlYWRfbGltaXRgYCBhbmQgYGB3cml0ZV9s
aW1pdGBgIChkZWZhdWx0OgorNjTCoEtpQikgdG8gcmVkdWNlIHRoZSBzaXplIG9mIGJ1ZmZlcnMg
Zm9yIGluY29taW5nIGFuZCBvdXRnb2luZyBkYXRhLgorCitUaGUgZGVzaWduIGRvY3VtZW50IHBy
b3ZpZGVzIDpyZWY6YG1vcmUgZGV0YWlscyBhYm91dCBidWZmZXJzPGJ1ZmZlcnM+YC4KKworUG9y
dCBzaGFyaW5nCistLS0tLS0tLS0tLS0KKworVGhlIFdlYlNvY2tldCBwcm90b2NvbCBpcyBhbiBl
eHRlbnNpb24gb2YgSFRUUC8xLjEuIEl0IGNhbiBiZSB0ZW1wdGluZyB0bworc2VydmUgYm90aCBI
VFRQIGFuZCBXZWJTb2NrZXQgb24gdGhlIHNhbWUgcG9ydC4KKworVGhlIGF1dGhvciBvZiBgYHdl
YnNvY2tldHNgYCBkb2Vzbid0IHRoaW5rIHRoYXQncyBhIGdvb2QgaWRlYSwgZHVlIHRvIHRoZQor
d2lkZWx5IGRpZmZlcmVudCBvcGVyYXRpb25hbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgSFRUUCBhbmQg
V2ViU29ja2V0LgorCitgYHdlYnNvY2tldHNgYCBwcm92aWRlIG1pbmltYWwgc3VwcG9ydCBmb3Ig
cmVzcG9uZGluZyB0byBIVFRQIHJlcXVlc3RzIHdpdGgKK3RoZSA6bWV0aDpgfnNlcnZlci5XZWJT
b2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9jZXNzX3JlcXVlc3RgIGhvb2suIFR5cGljYWwKK3VzZSBj
YXNlcyBpbmNsdWRlIGhlYWx0aCBjaGVja3MuIEhlcmUncyBhbiBleGFtcGxlOgorCisuLiBsaXRl
cmFsaW5jbHVkZTo6IC4uL2V4YW1wbGUvaGVhbHRoX2NoZWNrX3NlcnZlci5weQorICAgIDplbXBo
YXNpemUtbGluZXM6IDktMTEsMTctMTkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2Nz
L2Rlc2lnbi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9kZXNpZ24ucnN0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzQyNzliODdmNmVkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvZGVzaWduLnJzdApAQCAtMCwwICsxLDU3MSBAQAor
RGVzaWduCis9PT09PT0KKworLi4gY3VycmVudG1vZHVsZTo6IHdlYnNvY2tldHMKKworVGhpcyBk
b2N1bWVudCBkZXNjcmliZXMgdGhlIGRlc2lnbiBvZiBgYHdlYnNvY2tldHNgYC4gSXQgYXNzdW1l
cyBmYW1pbGlhcml0eQord2l0aCB0aGUgc3BlY2lmaWNhdGlvbiBvZiB0aGUgV2ViU29ja2V0IHBy
b3RvY29sIGluIDpyZmM6YDY0NTVgLgorCitJdCdzIHByaW1hcmlseSBpbnRlbmRlZCBhdCBtYWlu
dGFpbmVycy4gSXQgbWF5IGFsc28gYmUgdXNlZnVsIGZvciB1c2VycyB3aG8KK3dpc2ggdG8gdW5k
ZXJzdGFuZCB3aGF0IGhhcHBlbnMgdW5kZXIgdGhlIGhvb2QuCisKKy4uIHdhcm5pbmc6OgorCisg
ICAgSW50ZXJuYWxzIGRlc2NyaWJlZCBpbiB0aGlzIGRvY3VtZW50IG1heSBjaGFuZ2UgYXQgYW55
IHRpbWUuCisKKyAgICBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBpcyBvbmx5IGd1YXJhbnRlZWQg
Zm9yIGBwdWJsaWMgQVBJcyA8YXBpPmBfLgorCisKK0xpZmVjeWNsZQorLS0tLS0tLS0tCisKK1N0
YXRlCisuLi4uLgorCitXZWJTb2NrZXQgY29ubmVjdGlvbnMgZ28gdGhyb3VnaCBhIHRyaXZpYWwg
c3RhdGUgbWFjaGluZToKKworLSBgYENPTk5FQ1RJTkdgYDogaW5pdGlhbCBzdGF0ZSwKKy0gYGBP
UEVOYGA6IHdoZW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlIGlzIGNvbXBsZXRlLAorLSBgYENMT1NJ
TkdgYDogd2hlbiB0aGUgY2xvc2luZyBoYW5kc2hha2UgaXMgc3RhcnRlZCwKKy0gYGBDTE9TRURg
YDogd2hlbiB0aGUgVENQIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCitUcmFuc2l0aW9ucyBoYXBw
ZW4gaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisKKy0gYGBDT05ORUNUSU5HIC0+IE9QRU5gYDog
aW4KKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jb25uZWN0aW9u
X29wZW5gIHdoaWNoIHJ1bnMgd2hlbgorICB0aGUgOnJlZjpgb3BlbmluZyBoYW5kc2hha2UgPG9w
ZW5pbmctaGFuZHNoYWtlPmAgY29tcGxldGVzIGFuZCB0aGUgV2ViU29ja2V0CisgIGNvbm5lY3Rp
b24gaXMgZXN0YWJsaXNoZWQg4oCUIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoCisgIDptZXRoOmB+
YXN5bmNpby5Qcm90b2NvbC5jb25uZWN0aW9uX21hZGVgIHdoaWNoIHJ1bnMgd2hlbiB0aGUgVENQ
IGNvbm5lY3Rpb24KKyAgaXMgZXN0YWJsaXNoZWQ7CistIGBgT1BFTiAtPiBDTE9TSU5HYGA6IGlu
CisgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wud3JpdGVfZnJhbWVg
IGltbWVkaWF0ZWx5IGJlZm9yZQorICBzZW5kaW5nIGEgY2xvc2UgZnJhbWU7IHNpbmNlIHJlY2Vp
dmluZyBhIGNsb3NlIGZyYW1lIHRyaWdnZXJzIHNlbmRpbmcgYQorICBjbG9zZSBmcmFtZSwgdGhp
cyBkb2VzIHRoZSByaWdodCB0aGluZyByZWdhcmRsZXNzIG9mIHdoaWNoIHNpZGUgc3RhcnRlZCB0
aGUKKyAgOnJlZjpgY2xvc2luZyBoYW5kc2hha2UgPGNsb3NpbmctaGFuZHNoYWtlPmA7IGFsc28g
aW4KKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5mYWlsX2Nvbm5l
Y3Rpb25gIHdoaWNoIGR1cGxpY2F0ZXMKKyAgYSBmZXcgbGluZXMgb2YgY29kZSBmcm9tIGBgd3Jp
dGVfY2xvc2VfZnJhbWUoKWBgIGFuZCBgYHdyaXRlX2ZyYW1lKClgYDsKKy0gYGAqIC0+IENMT1NF
RGBgOiBpbgorICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNvbm5l
Y3Rpb25fbG9zdGAgd2hpY2ggaXMgYWx3YXlzCisgIGNhbGxlZCBleGFjdGx5IG9uY2Ugd2hlbiB0
aGUgVENQIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCitDb3JvdXRpbmVzCisuLi4uLi4uLi4uCisK
K1RoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyB3aGljaCBjb3JvdXRpbmVzIGFyZSBydW5uaW5n
IGF0IGVhY2ggc3RhZ2Ugb2YgdGhlCitjb25uZWN0aW9uIGxpZmVjeWNsZSBvbiB0aGUgY2xpZW50
IHNpZGUuCisKKy4uIGltYWdlOjogbGlmZWN5Y2xlLnN2ZworICAgOnRhcmdldDogX2ltYWdlcy9s
aWZlY3ljbGUuc3ZnCisKK1RoZSBsaWZlY3ljbGUgaXMgaWRlbnRpY2FsIG9uIHRoZSBzZXJ2ZXIg
c2lkZSwgZXhjZXB0IGludmVyc2lvbiBvZiBjb250cm9sCittYWtlcyB0aGUgZXF1aXZhbGVudCBv
ZiA6bWV0aDpgfmNsaWVudC5jb25uZWN0YCBpbXBsaWNpdC4KKworQ29yb3V0aW5lcyBzaG93biBp
biBncmVlbiBhcmUgY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gTXVsdGlwbGUgY29yb3V0aW5l
cworbWF5IGludGVyYWN0IHdpdGggdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGNvbmN1cnJlbnRs
eS4KKworQ29yb3V0aW5lcyBzaG93biBpbiBncmF5IG1hbmFnZSB0aGUgY29ubmVjdGlvbi4gV2hl
biB0aGUgb3BlbmluZyBoYW5kc2hha2UKK3N1Y2NlZWRzLCA6bWV0aDpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLmNvbm5lY3Rpb25fb3BlbmAgc3RhcnRzCit0d28gdGFza3M6CisK
Ky0gOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRh
X3Rhc2tgIHJ1bnMKKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50
cmFuc2Zlcl9kYXRhYCB3aGljaCBoYW5kbGVzCisgIGluY29taW5nIGRhdGEgYW5kIGxldHMgOm1l
dGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZWN2YAorICBjb25zdW1lIGl0
LiBJdCBtYXkgYmUgY2FuY2VsZWQgdG8gdGVybWluYXRlIHRoZSBjb25uZWN0aW9uLiBJdCBuZXZl
ciBleGl0cworICB3aXRoIGFuIGV4Y2VwdGlvbiBvdGhlciB0aGFuIDpleGM6YH5hc3luY2lvLkNh
bmNlbGxlZEVycm9yYC4gU2VlIDpyZWY6YGRhdGEKKyAgdHJhbnNmZXIgPGRhdGEtdHJhbnNmZXI+
YCBiZWxvdy4KKworLSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmtl
ZXBhbGl2ZV9waW5nX3Rhc2tgIHJ1bnMKKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21t
b25Qcm90b2NvbC5rZWVwYWxpdmVfcGluZ2Agd2hpY2ggc2VuZHMgUGluZworICBmcmFtZXMgYXQg
cmVndWxhciBpbnRlcnZhbHMgYW5kIGVuc3VyZXMgdGhhdCBjb3JyZXNwb25kaW5nIFBvbmcgZnJh
bWVzIGFyZQorICByZWNlaXZlZC4gSXQgaXMgY2FuY2VsZWQgd2hlbiB0aGUgY29ubmVjdGlvbiB0
ZXJtaW5hdGVzLiBJdCBuZXZlciBleGl0cworICB3aXRoIGFuIGV4Y2VwdGlvbiBvdGhlciB0aGFu
IDpleGM6YH5hc3luY2lvLkNhbmNlbGxlZEVycm9yYC4KKworLSA6YXR0cjpgfnByb3RvY29sLldl
YlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlX2Nvbm5lY3Rpb25fdGFza2AgcnVucworICA6bWV0
aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlX2Nvbm5lY3Rpb25gIHdo
aWNoIHdhaXRzIGZvcgorICB0aGUgZGF0YSB0cmFuc2ZlciB0byB0ZXJtaW5hdGUsIHRoZW4gdGFr
ZXMgY2FyZSBvZiBjbG9zaW5nIHRoZSBUQ1AKKyAgY29ubmVjdGlvbi4gSXQgbXVzdCBub3QgYmUg
Y2FuY2VsZWQuIEl0IG5ldmVyIGV4aXRzIHdpdGggYW4gZXhjZXB0aW9uLiBTZWUKKyAgOnJlZjpg
Y29ubmVjdGlvbiB0ZXJtaW5hdGlvbiA8Y29ubmVjdGlvbi10ZXJtaW5hdGlvbj5gIGJlbG93Lgor
CitCZXNpZGVzLCA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmZhaWxf
Y29ubmVjdGlvbmAgc3RhcnRzCit0aGUgc2FtZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENv
bW1vblByb3RvY29sLmNsb3NlX2Nvbm5lY3Rpb25fdGFza2Agd2hlbgordGhlIG9wZW5pbmcgaGFu
ZHNoYWtlIGZhaWxzLCBpbiBvcmRlciB0byBjbG9zZSB0aGUgVENQIGNvbm5lY3Rpb24uCisKK1Nw
bGl0dGluZyB0aGUgcmVzcG9uc2liaWxpdGllcyBiZXR3ZWVuIHR3byB0YXNrcyBtYWtlcyBpdCBl
YXNpZXIgdG8gZ3VhcmFudGVlCit0aGF0IGBgd2Vic29ja2V0c2BgIGNhbiB0ZXJtaW5hdGUgY29u
bmVjdGlvbnM6CisKKy0gd2l0aGluIGEgZml4ZWQgdGltZW91dCwKKy0gd2l0aG91dCBsZWFraW5n
IHBlbmRpbmcgdGFza3MsCistIHdpdGhvdXQgbGVha2luZyBvcGVuIFRDUCBjb25uZWN0aW9ucywK
KworcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBjb25uZWN0aW9uIHRlcm1pbmF0ZXMgbm9ybWFs
bHkgb3IgYWJub3JtYWxseS4KKworOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90
b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgIGNvbXBsZXRlcyB3aGVuIG5vCittb3JlIGRhdGEgd2ls
bCBiZSByZWNlaXZlZCBvbiB0aGUgY29ubmVjdGlvbi4gVW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5j
ZXMsIGl0CitleGl0cyBhZnRlciBleGNoYW5naW5nIGNsb3NlIGZyYW1lcy4KKworOmF0dHI6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0aW9uX3Rhc2tgIGNv
bXBsZXRlcyB3aGVuCit0aGUgVENQIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCisKKy4uIF9vcGVu
aW5nLWhhbmRzaGFrZToKKworT3BlbmluZyBoYW5kc2hha2UKKy0tLS0tLS0tLS0tLS0tLS0tCisK
K2Bgd2Vic29ja2V0c2BgIHBlcmZvcm1zIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSB3aGVuIGVzdGFi
bGlzaGluZyBhIFdlYlNvY2tldAorY29ubmVjdGlvbi4gT24gdGhlIGNsaWVudCBzaWRlLCA6bWV0
aDpgfmNsaWVudC5jb25uZWN0YCBleGVjdXRlcyBpdCBiZWZvcmUKK3JldHVybmluZyB0aGUgcHJv
dG9jb2wgdG8gdGhlIGNhbGxlci4gT24gdGhlIHNlcnZlciBzaWRlLCBpdCdzIGV4ZWN1dGVkIGJl
Zm9yZQorcGFzc2luZyB0aGUgcHJvdG9jb2wgdG8gdGhlIGBgd3NfaGFuZGxlcmBgIGNvcm91dGlu
ZSBoYW5kbGluZyB0aGUgY29ubmVjdGlvbi4KKworV2hpbGUgdGhlIG9wZW5pbmcgaGFuZHNoYWtl
IGlzIGFzeW1tZXRyaWNhbCDigJQgdGhlIGNsaWVudCBzZW5kcyBhbiBIVFRQIFVwZ3JhZGUKK3Jl
cXVlc3QgYW5kIHRoZSBzZXJ2ZXIgcmVwbGllcyB3aXRoIGFuIEhUVFAgU3dpdGNoaW5nIFByb3Rv
Y29scyByZXNwb25zZSDigJQKK2Bgd2Vic29ja2V0c2BgIGFpbXMgYXQga2VlcGluZyB0aGUgaW1w
bGVtZW50YXRpb24gb2YgYm90aCBzaWRlcyBjb25zaXN0ZW50Cit3aXRoIG9uZSBhbm90aGVyLgor
CitPbiB0aGUgY2xpZW50IHNpZGUsIDptZXRoOmB+Y2xpZW50LldlYlNvY2tldENsaWVudFByb3Rv
Y29sLmhhbmRzaGFrZWA6CisKKy0gYnVpbGRzIGEgSFRUUCByZXF1ZXN0IGJhc2VkIG9uIHRoZSBg
YHVyaWBgIGFuZCBwYXJhbWV0ZXJzIHBhc3NlZCB0bworICA6bWV0aDpgfmNsaWVudC5jb25uZWN0
YDsKKy0gd3JpdGVzIHRoZSBIVFRQIHJlcXVlc3QgdG8gdGhlIG5ldHdvcms7CistIHJlYWRzIGEg
SFRUUCByZXNwb25zZSBmcm9tIHRoZSBuZXR3b3JrOworLSBjaGVja3MgdGhlIEhUVFAgcmVzcG9u
c2UsIHZhbGlkYXRlcyBgYGV4dGVuc2lvbnNgYCBhbmQgYGBzdWJwcm90b2NvbGBgLCBhbmQKKyAg
Y29uZmlndXJlcyB0aGUgcHJvdG9jb2wgYWNjb3JkaW5nbHk7CistIG1vdmVzIHRvIHRoZSBgYE9Q
RU5gYCBzdGF0ZS4KKworT24gdGhlIHNlcnZlciBzaWRlLCA6bWV0aDpgfnNlcnZlci5XZWJTb2Nr
ZXRTZXJ2ZXJQcm90b2NvbC5oYW5kc2hha2VgOgorCistIHJlYWRzIGEgSFRUUCByZXF1ZXN0IGZy
b20gdGhlIG5ldHdvcms7CistIGNhbGxzIDptZXRoOmB+c2VydmVyLldlYlNvY2tldFNlcnZlclBy
b3RvY29sLnByb2Nlc3NfcmVxdWVzdGAgd2hpY2ggbWF5CisgIGFib3J0IHRoZSBXZWJTb2NrZXQg
aGFuZHNoYWtlIGFuZCByZXR1cm4gYSBIVFRQIHJlc3BvbnNlIGluc3RlYWQ7IHRoaXMKKyAgaG9v
ayBvbmx5IG1ha2VzIHNlbnNlIG9uIHRoZSBzZXJ2ZXIgc2lkZTsKKy0gY2hlY2tzIHRoZSBIVFRQ
IHJlcXVlc3QsIG5lZ290aWF0ZXMgYGBleHRlbnNpb25zYGAgYW5kIGBgc3VicHJvdG9jb2xgYCwg
YW5kCisgIGNvbmZpZ3VyZXMgdGhlIHByb3RvY29sIGFjY29yZGluZ2x5OworLSBidWlsZHMgYSBI
VFRQIHJlc3BvbnNlIGJhc2VkIG9uIHRoZSBhYm92ZSBhbmQgcGFyYW1ldGVycyBwYXNzZWQgdG8K
KyAgOm1ldGg6YH5zZXJ2ZXIuc2VydmVgOworLSB3cml0ZXMgdGhlIEhUVFAgcmVzcG9uc2UgdG8g
dGhlIG5ldHdvcms7CistIG1vdmVzIHRvIHRoZSBgYE9QRU5gYCBzdGF0ZTsKKy0gcmV0dXJucyB0
aGUgYGBwYXRoYGAgcGFydCBvZiB0aGUgYGB1cmlgYC4KKworVGhlIG1vc3Qgc2lnbmlmaWNhbnQg
YXN5bW1ldHJ5IGJldHdlZW4gdGhlIHR3byBzaWRlcyBvZiB0aGUgb3BlbmluZyBoYW5kc2hha2UK
K2xpZXMgaW4gdGhlIG5lZ290aWF0aW9uIG9mIGV4dGVuc2lvbnMgYW5kLCB0byBhIGxlc3NlciBl
eHRlbnQsIG9mIHRoZQorc3VicHJvdG9jb2wuIFRoZSBzZXJ2ZXIga25vd3MgZXZlcnl0aGluZyBh
Ym91dCBib3RoIHNpZGVzIGFuZCBkZWNpZGVzIHdoYXQgdGhlCitwYXJhbWV0ZXJzIHNob3VsZCBi
ZSBmb3IgdGhlIGNvbm5lY3Rpb24uIFRoZSBjbGllbnQgbWVyZWx5IGFwcGxpZXMgdGhlbS4KKwor
SWYgYW55dGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlLCBgYHdl
YnNvY2tldHNgYAorOnJlZjpgZmFpbHMgdGhlIGNvbm5lY3Rpb24gPGNvbm5lY3Rpb24tZmFpbHVy
ZT5gLgorCisKKy4uIF9kYXRhLXRyYW5zZmVyOgorCitEYXRhIHRyYW5zZmVyCistLS0tLS0tLS0t
LS0tCisKK1N5bW1ldHJ5CisuLi4uLi4uLgorCitPbmNlIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBo
YXMgY29tcGxldGVkLCB0aGUgV2ViU29ja2V0IHByb3RvY29sIGVudGVycyB0aGUKK2RhdGEgdHJh
bnNmZXIgcGhhc2UuIFRoaXMgcGFydCBpcyBhbG1vc3Qgc3ltbWV0cmljYWwuIFRoZXJlIGFyZSBv
bmx5IHR3bworZGlmZmVyZW5jZXMgYmV0d2VlbiBhIHNlcnZlciBhbmQgYSBjbGllbnQ6CisKKy0g
YGNsaWVudC10by1zZXJ2ZXIgbWFza2luZ2BfOiB0aGUgY2xpZW50IG1hc2tzIG91dGdvaW5nIGZy
YW1lczsgdGhlIHNlcnZlcgorICB1bm1hc2tzIGluY29taW5nIGZyYW1lczsKKy0gYGNsb3Npbmcg
dGhlIFRDUCBjb25uZWN0aW9uYF86IHRoZSBzZXJ2ZXIgY2xvc2VzIHRoZSBjb25uZWN0aW9uIGlt
bWVkaWF0ZWx5OworICB0aGUgY2xpZW50IHdhaXRzIGZvciB0aGUgc2VydmVyIHRvIGRvIGl0Lgor
CisuLiBfY2xpZW50LXRvLXNlcnZlciBtYXNraW5nOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNjQ1NSNzZWN0aW9uLTUuMworLi4gX2Nsb3NpbmcgdGhlIFRDUCBjb25uZWN0aW9uOiBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuNS4xCisKK1RoZXNl
IGRpZmZlcmVuY2VzIGFyZSBzbyBtaW5vciB0aGF0IGFsbCB0aGUgbG9naWMgZm9yIGBkYXRhIGZy
YW1pbmdgXywgZm9yCitgc2VuZGluZyBhbmQgcmVjZWl2aW5nIGRhdGFgXyBhbmQgZm9yIGBjbG9z
aW5nIHRoZSBjb25uZWN0aW9uYF8gaXMgaW1wbGVtZW50ZWQKK2luIHRoZSBzYW1lIGNsYXNzLCA6
Y2xhc3M6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbGAuCisKKy4uIF9kYXRhIGZy
YW1pbmc6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1I3NlY3Rpb24tNQorLi4g
X3NlbmRpbmcgYW5kIHJlY2VpdmluZyBkYXRhOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNjQ1NSNzZWN0aW9uLTYKKy4uIF9jbG9zaW5nIHRoZSBjb25uZWN0aW9uOiBodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTcKKworVGhlIDphdHRyOmB+cHJvdG9j
b2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuaXNfY2xpZW50YCBhdHRyaWJ1dGUgdGVsbHMgd2hp
Y2gKK3NpZGUgYSBwcm90b2NvbCBpbnN0YW5jZSBpcyBtYW5hZ2luZy4gVGhpcyBhdHRyaWJ1dGUg
aXMgZGVmaW5lZCBvbiB0aGUKKzphdHRyOmB+c2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29s
YCBhbmQKKzphdHRyOmB+Y2xpZW50LldlYlNvY2tldENsaWVudFByb3RvY29sYCBjbGFzc2VzLgor
CitEYXRhIGZsb3cKKy4uLi4uLi4uLgorCitUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgaG93
IGRhdGEgZmxvd3MgYmV0d2VlbiBhbiBhcHBsaWNhdGlvbiBidWlsdCBvbiB0b3AKK29mIGBgd2Vi
c29ja2V0c2BgIGFuZCBhIHJlbW90ZSBlbmRwb2ludC4gSXQgYXBwbGllcyByZWdhcmRsZXNzIG9m
IHdoaWNoIHNpZGUKK2lzIHRoZSBzZXJ2ZXIgb3IgdGhlIGNsaWVudC4KKworLi4gaW1hZ2U6OiBw
cm90b2NvbC5zdmcKKyAgIDp0YXJnZXQ6IF9pbWFnZXMvcHJvdG9jb2wuc3ZnCisKK1B1YmxpYyBt
ZXRob2RzIGFyZSBzaG93biBpbiBncmVlbiwgcHJpdmF0ZSBtZXRob2RzIGluIHllbGxvdywgYW5k
IGJ1ZmZlcnMgaW4KK29yYW5nZS4gTWV0aG9kcyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdGVybWlu
YXRpb24gYXJlIG9taXR0ZWQ7IGNvbm5lY3Rpb24KK3Rlcm1pbmF0aW9uIGlzIGRpc2N1c3NlZCBp
biBhbm90aGVyIHNlY3Rpb24gYmVsb3cuCisKK1JlY2VpdmluZyBkYXRhCisuLi4uLi4uLi4uLi4u
LgorCitUaGUgbGVmdCBzaWRlIG9mIHRoZSBkaWFncmFtIHNob3dzIGhvdyBgYHdlYnNvY2tldHNg
YCByZWNlaXZlcyBkYXRhLgorCitJbmNvbWluZyBkYXRhIGlzIHdyaXR0ZW4gdG8gYSA6Y2xhc3M6
YH5hc3luY2lvLlN0cmVhbVJlYWRlcmAgaW4gb3JkZXIgdG8KK2ltcGxlbWVudCBmbG93IGNvbnRy
b2wgYW5kIHByb3ZpZGUgYmFja3ByZXNzdXJlIG9uIHRoZSBUQ1AgY29ubmVjdGlvbi4KKworOmF0
dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tg
LCB3aGljaCBpcyBzdGFydGVkCit3aGVuIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3Rh
Ymxpc2hlZCwgcHJvY2Vzc2VzIHRoaXMgZGF0YS4KKworV2hlbiBpdCByZWNlaXZlcyBkYXRhIGZy
YW1lcywgaXQgcmVhc3NlbWJsZXMgZnJhZ21lbnRzIGFuZCBwdXRzIHRoZSByZXN1bHRpbmcKK21l
c3NhZ2VzIGluIHRoZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLm1l
c3NhZ2VzYCBxdWV1ZS4KKworV2hlbiBpdCBlbmNvdW50ZXJzIGEgY29udHJvbCBmcmFtZToKKwor
LSBpZiBpdCdzIGEgY2xvc2UgZnJhbWUsIGl0IHN0YXJ0cyB0aGUgY2xvc2luZyBoYW5kc2hha2U7
CistIGlmIGl0J3MgYSBwaW5nIGZyYW1lLCBpdCBhbnN3ZXJzIHdpdGggYSBwb25nIGZyYW1lOwor
LSBpZiBpdCdzIGEgcG9uZyBmcmFtZSwgaXQgYWNrbm93bGVkZ2VzIHRoZSBjb3JyZXNwb25kaW5n
IHBpbmcgKHVubGVzcyBpdCdzIGFuCisgIHVuc29saWNpdGVkIHBvbmcpLgorCitSdW5uaW5nIHRo
aXMgcHJvY2VzcyBpbiBhIHRhc2sgZ3VhcmFudGVlcyB0aGF0IGNvbnRyb2wgZnJhbWVzIGFyZSBw
cm9jZXNzZWQKK3Byb21wdGx5LiBXaXRob3V0IHN1Y2ggYSB0YXNrLCBgYHdlYnNvY2tldHNgYCB3
b3VsZCBkZXBlbmQgb24gdGhlIGFwcGxpY2F0aW9uCit0byBkcml2ZSB0aGUgY29ubmVjdGlvbiBi
eSBoYXZpbmcgZXhhY3RseSBvbmUgY29yb3V0aW5lIGF3YWl0aW5nCis6bWV0aDpgfnByb3RvY29s
LldlYlNvY2tldENvbW1vblByb3RvY29sLnJlY3ZgIGF0IGFueSB0aW1lLiBXaGlsZSB0aGlzCito
YXBwZW5zIG5hdHVyYWxseSBpbiBtYW55IHVzZSBjYXNlcywgaXQgY2Fubm90IGJlIHJlbGllZCB1
cG9uLgorCitUaGVuIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVj
dmAgZmV0Y2hlcyB0aGUgbmV4dCBtZXNzYWdlCitmcm9tIHRoZSA6YXR0cjpgfnByb3RvY29sLldl
YlNvY2tldENvbW1vblByb3RvY29sLm1lc3NhZ2VzYCBxdWV1ZSwgd2l0aCBzb21lCitjb21wbGV4
aXR5IGFkZGVkIGZvciBoYW5kbGluZyBiYWNrcHJlc3N1cmUgYW5kIHRlcm1pbmF0aW9uIGNvcnJl
Y3RseS4KKworU2VuZGluZyBkYXRhCisuLi4uLi4uLi4uLi4KKworVGhlIHJpZ2h0IHNpZGUgb2Yg
dGhlIGRpYWdyYW0gc2hvd3MgaG93IGBgd2Vic29ja2V0c2BgIHNlbmRzIGRhdGEuCisKKzptZXRo
OmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuc2VuZGAgd3JpdGVzIG9uZSBvciBz
ZXZlcmFsIGRhdGEKK2ZyYW1lcyBjb250YWluaW5nIHRoZSBtZXNzYWdlLiBXaGlsZSBzZW5kaW5n
IGEgZnJhZ21lbnRlZCBtZXNzYWdlLCBjb25jdXJyZW50CitjYWxscyB0byA6bWV0aDpgfnByb3Rv
Y29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnNlbmRgIGFyZSBwdXQgb24gaG9sZCB1bnRpbAor
YWxsIGZyYWdtZW50cyBhcmUgc2VudC4gVGhpcyBtYWtlcyBjb25jdXJyZW50IGNhbGxzIHNhZmUu
CisKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucGluZ2Agd3JpdGVz
IGEgcGluZyBmcmFtZSBhbmQKK3lpZWxkcyBhIDpjbGFzczpgfmFzeW5jaW8uRnV0dXJlYCB3aGlj
aCB3aWxsIGJlIGNvbXBsZXRlZCB3aGVuIGEgbWF0Y2hpbmcgcG9uZworZnJhbWUgaXMgcmVjZWl2
ZWQuCisKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucG9uZ2Agd3Jp
dGVzIGEgcG9uZyBmcmFtZS4KKworOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90
b2NvbC5jbG9zZWAgd3JpdGVzIGEgY2xvc2UgZnJhbWUgYW5kCit3YWl0cyBmb3IgdGhlIFRDUCBj
b25uZWN0aW9uIHRvIHRlcm1pbmF0ZS4KKworT3V0Z29pbmcgZGF0YSBpcyB3cml0dGVuIHRvIGEg
OmNsYXNzOmB+YXN5bmNpby5TdHJlYW1Xcml0ZXJgIGluIG9yZGVyIHRvCitpbXBsZW1lbnQgZmxv
dyBjb250cm9sIGFuZCBwcm92aWRlIGJhY2twcmVzc3VyZSBmcm9tIHRoZSBUQ1AgY29ubmVjdGlv
bi4KKworLi4gX2Nsb3NpbmctaGFuZHNoYWtlOgorCitDbG9zaW5nIGhhbmRzaGFrZQorLi4uLi4u
Li4uLi4uLi4uLi4KKworV2hlbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29ubmVjdGlvbiBpbml0
aWF0ZXMgdGhlIGNsb3NpbmcgaGFuZHNoYWtlLAorOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbC5yZWFkX21lc3NhZ2VgIHJlY2VpdmVzIGEgY2xvc2UKK2ZyYW1lIHdoaWxl
IGluIHRoZSBgYE9QRU5gYCBzdGF0ZS4gSXQgbW92ZXMgdG8gdGhlIGBgQ0xPU0lOR2BgIHN0YXRl
LCBzZW5kcyBhCitjbG9zZSBmcmFtZSwgYW5kIHJldHVybnMgYGBOb25lYGAsIGNhdXNpbmcKKzph
dHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNr
YCB0byB0ZXJtaW5hdGUuCisKK1doZW4gdGhpcyBzaWRlIG9mIHRoZSBjb25uZWN0aW9uIGluaXRp
YXRlcyB0aGUgY2xvc2luZyBoYW5kc2hha2Ugd2l0aAorOm1ldGg6YH5wcm90b2NvbC5XZWJTb2Nr
ZXRDb21tb25Qcm90b2NvbC5jbG9zZWAsIGl0IG1vdmVzIHRvIHRoZSBgYENMT1NJTkdgYAorc3Rh
dGUgYW5kIHNlbmRzIGEgY2xvc2UgZnJhbWUuIFdoZW4gdGhlIG90aGVyIHNpZGUgc2VuZHMgYSBj
bG9zZSBmcmFtZSwKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVh
ZF9tZXNzYWdlYCByZWNlaXZlcyBpdCBpbiB0aGUKK2BgQ0xPU0lOR2BgIHN0YXRlIGFuZCByZXR1
cm5zIGBgTm9uZWBgLCBhbHNvIGNhdXNpbmcKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29t
bW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCB0byB0ZXJtaW5hdGUuCisKK0lmIHRoZSBv
dGhlciBzaWRlIGRvZXNuJ3Qgc2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhpbiB0aGUgY29ubmVjdGlv
bidzIGNsb3NlCit0aW1lb3V0LCBgYHdlYnNvY2tldHNgYCA6cmVmOmBmYWlscyB0aGUgY29ubmVj
dGlvbiA8Y29ubmVjdGlvbi1mYWlsdXJlPmAuCisKK1RoZSBjbG9zaW5nIGhhbmRzaGFrZSBjYW4g
dGFrZSB1cCB0byBgYDIgKiBjbG9zZV90aW1lb3V0YGA6IG9uZQorYGBjbG9zZV90aW1lb3V0YGAg
dG8gd3JpdGUgYSBjbG9zZSBmcmFtZSBhbmQgb25lIGBgY2xvc2VfdGltZW91dGBgIHRvIHJlY2Vp
dmUKK2EgY2xvc2UgZnJhbWUuCisKK1RoZW4gYGB3ZWJzb2NrZXRzYGAgdGVybWluYXRlcyB0aGUg
VENQIGNvbm5lY3Rpb24uCisKKworLi4gX2Nvbm5lY3Rpb24tdGVybWluYXRpb246CisKK0Nvbm5l
Y3Rpb24gdGVybWluYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmF0dHI6YH5wcm90
b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0aW9uX3Rhc2tgLCB3aGlj
aCBpcworc3RhcnRlZCB3aGVuIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hl
ZCwgaXMgcmVzcG9uc2libGUgZm9yCitldmVudHVhbGx5IGNsb3NpbmcgdGhlIFRDUCBjb25uZWN0
aW9uLgorCitGaXJzdCA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNs
b3NlX2Nvbm5lY3Rpb25fdGFza2Agd2FpdHMKK2ZvciA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tl
dENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFfdGFza2AgdG8gdGVybWluYXRlLAord2hpY2gg
bWF5IGhhcHBlbiBhcyBhIHJlc3VsdCBvZjoKKworLSBhIHN1Y2Nlc3NmdWwgY2xvc2luZyBoYW5k
c2hha2U6IGFzIGV4cGxhaW5lZCBhYm92ZSwgdGhpcyBleGl0cyB0aGUgaW5maW5pdGUKKyAgbG9v
cCBpbiA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnRyYW5zZmVyX2Rh
dGFfdGFza2A7CistIGEgdGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgY2xvc2luZyBoYW5k
c2hha2UgdG8gY29tcGxldGU6IHRoaXMgY2FuY2VscworICA6YXR0cjpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFfdGFza2A7CistIGEgcHJvdG9jb2wgZXJy
b3IsIGluY2x1ZGluZyBjb25uZWN0aW9uIGVycm9yczogZGVwZW5kaW5nIG9uIHRoZSBleGNlcHRp
b24sCisgIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJf
ZGF0YV90YXNrYCA6cmVmOmBmYWlscyB0aGUKKyAgY29ubmVjdGlvbiA8Y29ubmVjdGlvbi1mYWls
dXJlPmAgd2l0aCBhIHN1aXRhYmxlIGNvZGUgYW5kIGV4aXRzLgorCis6YXR0cjpgfnByb3RvY29s
LldlYlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlX2Nvbm5lY3Rpb25fdGFza2AgaXMgc2VwYXJh
dGUKK2Zyb20gOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zl
cl9kYXRhX3Rhc2tgIHRvIG1ha2UgaXQKK2Vhc2llciB0byBpbXBsZW1lbnQgdGhlIHRpbWVvdXQg
b24gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLiBDYW5jZWxpbmcKKzphdHRyOmB+cHJvdG9jb2wuV2Vi
U29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCBjcmVhdGVzIG5vIHJpc2sK
K29mIGNhbmNlbGluZyA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNs
b3NlX2Nvbm5lY3Rpb25fdGFza2AKK2FuZCBmYWlsaW5nIHRvIGNsb3NlIHRoZSBUQ1AgY29ubmVj
dGlvbiwgdGh1cyBsZWFraW5nIHJlc291cmNlcy4KKworVGhlbiA6YXR0cjpgfnByb3RvY29sLldl
YlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlX2Nvbm5lY3Rpb25fdGFza2AgY2FuY2VscworOmF0
dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5rZWVwYWxpdmVfcGluZ2AuIFRo
aXMgdGFzayBoYXMgbm8KK3Byb3RvY29sIGNvbXBsaWFuY2UgcmVzcG9uc2liaWxpdGllcy4gVGVy
bWluYXRpbmcgaXQgdG8gYXZvaWQgbGVha2luZyBpdCBpcwordGhlIG9ubHkgY29uY2Vybi4KKwor
VGVybWluYXRpbmcgdGhlIFRDUCBjb25uZWN0aW9uIGNhbiB0YWtlIHVwIHRvIGBgMiAqIGNsb3Nl
X3RpbWVvdXRgYCBvbiB0aGUKK3NlcnZlciBzaWRlIGFuZCBgYDMgKiBjbG9zZV90aW1lb3V0YGAg
b24gdGhlIGNsaWVudCBzaWRlLiBDbGllbnRzIHN0YXJ0IGJ5Cit3YWl0aW5nIGZvciB0aGUgc2Vy
dmVyIHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uLCBoZW5jZSB0aGUgZXh0cmEKK2BgY2xvc2VfdGlt
ZW91dGBgLiBUaGVuIGJvdGggc2lkZXMgZ28gdGhyb3VnaCB0aGUgZm9sbG93aW5nIHN0ZXBzIHVu
dGlsIHRoZQorVENQIGNvbm5lY3Rpb24gaXMgbG9zdDogaGFsZi1jbG9zaW5nIHRoZSBjb25uZWN0
aW9uIChvbmx5IGZvciBub24tVExTCitjb25uZWN0aW9ucyksIGNsb3NpbmcgdGhlIGNvbm5lY3Rp
b24sIGFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiBBdCB0aGlzIHBvaW50Cit0aGUgY29ubmVjdGlv
biBkcm9wcyByZWdhcmRsZXNzIG9mIHdoYXQgaGFwcGVucyBvbiB0aGUgbmV0d29yay4KKworCisu
LiBfY29ubmVjdGlvbi1mYWlsdXJlOgorCitDb25uZWN0aW9uIGZhaWx1cmUKKy0tLS0tLS0tLS0t
LS0tLS0tLQorCitJZiB0aGUgb3BlbmluZyBoYW5kc2hha2UgZG9lc24ndCBjb21wbGV0ZSBzdWNj
ZXNzZnVsbHksIGBgd2Vic29ja2V0c2BgIGZhaWxzCit0aGUgY29ubmVjdGlvbiBieSBjbG9zaW5n
IHRoZSBUQ1AgY29ubmVjdGlvbi4KKworT25jZSB0aGUgb3BlbmluZyBoYW5kc2hha2UgaGFzIGNv
bXBsZXRlZCwgYGB3ZWJzb2NrZXRzYGAgZmFpbHMgdGhlIGNvbm5lY3Rpb24KK2J5IGNhbmNlbGlu
ZyA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFf
dGFza2AgYW5kCitzZW5kaW5nIGEgY2xvc2UgZnJhbWUgaWYgYXBwcm9wcmlhdGUuCisKKzphdHRy
OmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCBl
eGl0cywgdW5ibG9ja2luZworOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2Nv
bC5jbG9zZV9jb25uZWN0aW9uX3Rhc2tgLCB3aGljaCBjbG9zZXMKK3RoZSBUQ1AgY29ubmVjdGlv
bi4KKworCisuLiBfc2VydmVyLXNodXRkb3duOgorCitTZXJ2ZXIgc2h1dGRvd24KKy0tLS0tLS0t
LS0tLS0tLQorCis6Y2xhc3M6YH53ZWJzb2NrZXRzLnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJgIGNs
b3NlcyBhc3luY2hyb25vdXNseSBsaWtlCis6Y2xhc3M6YGFzeW5jaW8uU2VydmVyYC4gVGhlIHNo
dXRkb3duIGhhcHBlbiBpbiB0d28gc3RlcHM6CisKKzEuIFN0b3AgbGlzdGVuaW5nIGFuZCBhY2Nl
cHRpbmcgbmV3IGNvbm5lY3Rpb25zOworMi4gQ2xvc2UgZXN0YWJsaXNoZWQgY29ubmVjdGlvbnMg
d2l0aCBjbG9zZSBjb2RlIDEwMDEgKGdvaW5nIGF3YXkpIG9yLCBpZgorICAgdGhlIG9wZW5pbmcg
aGFuZHNoYWtlIGlzIHN0aWxsIGluIHByb2dyZXNzLCB3aXRoIEhUVFAgc3RhdHVzIGNvZGUgNTAz
CisgICAoU2VydmljZSBVbmF2YWlsYWJsZSkuCisKK1RoZSBmaXJzdCBjYWxsIHRvIDpjbGFzczpg
fndlYnNvY2tldHMuc2VydmVyLldlYlNvY2tldFNlcnZlci5jbG9zZWAgc3RhcnRzIGEKK3Rhc2sg
dGhhdCBwZXJmb3JtcyB0aGlzIHNlcXVlbmNlLiBGdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBU
aGlzIGlzIHRoZQorZWFzaWVzdCB3YXkgdG8gbWFrZSA6Y2xhc3M6YH53ZWJzb2NrZXRzLnNlcnZl
ci5XZWJTb2NrZXRTZXJ2ZXIuY2xvc2VgIGFuZAorOmNsYXNzOmB+d2Vic29ja2V0cy5zZXJ2ZXIu
V2ViU29ja2V0U2VydmVyLndhaXRfY2xvc2VkYCBpZGVtcG90ZW50LgorCisKKy4uIF9jYW5jZWxs
YXRpb246CisKK0NhbmNlbGxhdGlvbgorLS0tLS0tLS0tLS0tCisKK1VzZXIgY29kZQorLi4uLi4u
Li4uCisKK2Bgd2Vic29ja2V0c2BgIHByb3ZpZGVzIGEgV2ViU29ja2V0IGFwcGxpY2F0aW9uIHNl
cnZlci4gSXQgbWFuYWdlcyBjb25uZWN0aW9ucworYW5kIHBhc3NlcyB0aGVtIHRvIHVzZXItcHJv
dmlkZWQgY29ubmVjdGlvbiBoYW5kbGVycy4gVGhpcyBpcyBhbiAqaW52ZXJzaW9uIG9mCitjb250
cm9sKiBzY2VuYXJpbzogbGlicmFyeSBjb2RlIGNhbGxzIHVzZXIgY29kZS4KKworSWYgYSBjb25u
ZWN0aW9uIGRyb3BzLCB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGVyIHNob3VsZCB0ZXJtaW5hdGUu
IElmIHRoZQorc2VydmVyIHNodXRzIGRvd24sIGFsbCBjb25uZWN0aW9uIGhhbmRsZXJzIG11c3Qg
dGVybWluYXRlLiBDYW5jZWxpbmcKK2Nvbm5lY3Rpb24gaGFuZGxlcnMgd291bGQgdGVybWluYXRl
IHRoZW0uCisKK0hvd2V2ZXIsIHVzaW5nIGNhbmNlbGxhdGlvbiBmb3IgdGhpcyBwdXJwb3NlIHdv
dWxkIHJlcXVpcmUgYWxsIGNvbm5lY3Rpb24KK2hhbmRsZXJzIHRvIGhhbmRsZSBpdCBwcm9wZXJs
eS4gRm9yIGV4YW1wbGUsIGlmIGEgY29ubmVjdGlvbiBoYW5kbGVyIHN0YXJ0cworc29tZSB0YXNr
cywgaXQgc2hvdWxkIGNhdGNoIDpleGM6YH5hc3luY2lvLkNhbmNlbGxlZEVycm9yYCwgdGVybWlu
YXRlIG9yCitjYW5jZWwgdGhlc2UgdGFza3MsIGFuZCB0aGVuIHJlLXJhaXNlIHRoZSBleGNlcHRp
b24uCisKK0NhbmNlbGxhdGlvbiBpcyB0cmlja3kgaW4gOm1vZDpgYXN5bmNpb2AgYXBwbGljYXRp
b25zLCBlc3BlY2lhbGx5IHdoZW4gaXQKK2ludGVyYWN0cyB3aXRoIGZpbmFsaXphdGlvbiBsb2dp
Yy4gSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHdoYXQgaWYgYSBoYW5kbGVyCitnZXRzIGludGVycnVw
dGVkIHdpdGggOmV4YzpgfmFzeW5jaW8uQ2FuY2VsbGVkRXJyb3JgIHdoaWxlIGl0J3MgZmluYWxp
emluZwordGhlIHRhc2tzIGl0IHN0YXJ0ZWQsIGFmdGVyIGRldGVjdGluZyB0aGF0IHRoZSBjb25u
ZWN0aW9uIGRyb3BwZWQ/CisKK2Bgd2Vic29ja2V0c2BgIGNvbnNpZGVycyB0aGF0IGNhbmNlbGxh
dGlvbiBtYXkgb25seSBiZSB0cmlnZ2VyZWQgYnkgdGhlIGNhbGxlcgorb2YgYSBjb3JvdXRpbmUg
d2hlbiBpdCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlIHJlc3VsdHMgb2YgdGhhdCBjb3JvdXRpbmUK
K2FueW1vcmUuIChTb3VyY2U6IGBHdWlkbyB2YW4gUm9zc3VtIDxodHRwczovL2dyb3Vwcy5nb29n
bGUuY29tL2ZvcnVtLyMhbXNnCisvcHl0aG9uLXR1bGlwL0xaUWUzOENSM2JnLzdxWjFwX3E1eXlj
Sj5gXykuIFNpbmNlIGNvbm5lY3Rpb24gaGFuZGxlcnMgcnVuCithcmJpdHJhcnkgdXNlciBjb2Rl
LCBgYHdlYnNvY2tldHNgYCBoYXMgbm8gd2F5IG9mIGRlY2lkaW5nIHdoZXRoZXIgdGhhdCBjb2Rl
CitpcyBzdGlsbCBkb2luZyBzb21ldGhpbmcgd29ydGggY2FyaW5nIGFib3V0LgorCitGb3IgdGhl
c2UgcmVhc29ucywgYGB3ZWJzb2NrZXRzYGAgbmV2ZXIgY2FuY2VscyBjb25uZWN0aW9uIGhhbmRs
ZXJzLiBJbnN0ZWFkCitpdCBleHBlY3RzIHRoZW0gdG8gZGV0ZWN0IHdoZW4gdGhlIGNvbm5lY3Rp
b24gaXMgY2xvc2VkLCBleGVjdXRlIGZpbmFsaXphdGlvbgorbG9naWMgaWYgbmVlZGVkLCBhbmQg
ZXhpdC4KKworQ29udmVyc2VseSwgY2FuY2VsbGF0aW9uIGlzbid0IGEgY29uY2VybiBmb3IgV2Vi
U29ja2V0IGNsaWVudHMgYmVjYXVzZSB0aGV5Citkb24ndCBpbnZvbHZlIGludmVyc2lvbiBvZiBj
b250cm9sLgorCitMaWJyYXJ5CisuLi4uLi4uCisKK01vc3QgOmRvYzpgcHVibGljIEFQSXMgPGFw
aT5gIG9mIGBgd2Vic29ja2V0c2BgIGFyZSBjb3JvdXRpbmVzLiBUaGV5IG1heSBiZQorY2FuY2Vs
ZWQsIGZvciBleGFtcGxlIGlmIHRoZSB1c2VyIHN0YXJ0cyBhIHRhc2sgdGhhdCBjYWxscyB0aGVz
ZSBjb3JvdXRpbmVzCithbmQgY2FuY2VscyB0aGUgdGFzayBsYXRlci4gYGB3ZWJzb2NrZXRzYGAg
bXVzdCBoYW5kbGUgdGhpcyBzaXR1YXRpb24uCisKK0NhbmNlbGxhdGlvbiBkdXJpbmcgdGhlIG9w
ZW5pbmcgaGFuZHNoYWtlIGlzIGhhbmRsZWQgbGlrZSBhbnkgb3RoZXIgZXhjZXB0aW9uOgordGhl
IFRDUCBjb25uZWN0aW9uIGlzIGNsb3NlZCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyByZS1yYWlzZWQu
IFRoaXMgY2FuIG9ubHkKK2hhcHBlbiBvbiB0aGUgY2xpZW50IHNpZGUuIE9uIHRoZSBzZXJ2ZXIg
c2lkZSwgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIGlzCittYW5hZ2VkIGJ5IGBgd2Vic29ja2V0c2Bg
IGFuZCBub3RoaW5nIHJlc3VsdHMgaW4gYSBjYW5jZWxsYXRpb24uCisKK09uY2UgdGhlIFdlYlNv
Y2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLCBpbnRlcm5hbCB0YXNrcworOmF0dHI6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgIGFuZAor
OmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0aW9u
X3Rhc2tgIG11c3RuJ3QgZ2V0CithY2NpZGVudGFsbHkgY2FuY2VsZWQgaWYgYSBjb3JvdXRpbmUg
dGhhdCBhd2FpdHMgdGhlbSBpcyBjYW5jZWxlZC4gSW4gb3RoZXIKK3dvcmRzLCB0aGV5IG11c3Qg
YmUgc2hpZWxkZWQgZnJvbSBjYW5jZWxsYXRpb24uCisKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29j
a2V0Q29tbW9uUHJvdG9jb2wucmVjdmAgd2FpdHMgZm9yIHRoZSBuZXh0IG1lc3NhZ2UgaW4KK3Ro
ZSBxdWV1ZSBvciBmb3IgOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50
cmFuc2Zlcl9kYXRhX3Rhc2tgCit0byB0ZXJtaW5hdGUsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4g
SXQgcmVsaWVzIG9uIDpmdW5jOmB+YXN5bmNpby53YWl0YCBmb3IKK3dhaXRpbmcgb24gdHdvIGZ1
dHVyZXMgaW4gcGFyYWxsZWwuIEFzIGEgY29uc2VxdWVuY2UsIGV2ZW4gdGhvdWdoIGl0J3Mgd2Fp
dGluZworb24gYSA6Y2xhc3M6YH5hc3luY2lvLkZ1dHVyZWAgc2lnbmFsaW5nIHRoZSBuZXh0IG1l
c3NhZ2UgYW5kIG9uCis6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnRy
YW5zZmVyX2RhdGFfdGFza2AsIGl0IGRvZXNuJ3QKK3Byb3BhZ2F0ZSBjYW5jZWxsYXRpb24gdG8g
dGhlbS4KKworOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5lbnN1cmVf
b3BlbmAgaXMgY2FsbGVkIGJ5Cis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3Rv
Y29sLnNlbmRgLAorOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5waW5n
YCwgYW5kCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBvbmdgLiBX
aGVuIHRoZSBjb25uZWN0aW9uIHN0YXRlIGlzCitgYENMT1NJTkdgYCwgaXQgd2FpdHMgZm9yCis6
YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFfdGFz
a2AgYnV0IHNoaWVsZHMgaXQgdG8KK3ByZXZlbnQgY2FuY2VsbGF0aW9uLgorCis6bWV0aDpgfnBy
b3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlYCB3YWl0cyBmb3IgdGhlIGRhdGEg
dHJhbnNmZXIKK3Rhc2sgdG8gdGVybWluYXRlIHdpdGggOmZ1bmM6YH5hc3luY2lvLndhaXRfZm9y
YC4gSWYgaXQncyBjYW5jZWxlZCBvciBpZiB0aGUKK3RpbWVvdXQgZWxhcHNlcywgOmF0dHI6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgCitpcyBj
YW5jZWxlZCwgd2hpY2ggaXMgY29ycmVjdCBhdCB0aGlzIHBvaW50LgorOm1ldGg6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZWAgdGhlbiB3YWl0cyBmb3IKKzphdHRyOmB+
cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VfY29ubmVjdGlvbl90YXNrYCBi
dXQgc2hpZWxkcyBpdAordG8gcHJldmVudCBjYW5jZWxsYXRpb24uCisKKzptZXRoOmB+cHJvdG9j
b2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VgIGFuZAorOmZ1bmM6YH5wcm90b2NvbC5X
ZWJTb2NrZXRDb21tb25Qcm90b2NvbC5mYWlsX2Nvbm5lY3Rpb25gIGFyZSB0aGUgb25seQorcGxh
Y2VzIHdoZXJlIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNm
ZXJfZGF0YV90YXNrYCBtYXkKK2JlIGNhbmNlbGVkLgorCis6YXR0cjpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLmNsb3NlX2Nvbm5uZWN0aW9uX3Rhc2tgIHN0YXJ0cyBieQord2Fp
dGluZyBmb3IgOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zl
cl9kYXRhX3Rhc2tgLiBJdAorY2F0Y2hlcyA6ZXhjOmB+YXN5bmNpby5DYW5jZWxsZWRFcnJvcmAg
dG8gcHJldmVudCBhIGNhbmNlbGxhdGlvbiBvZgorOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgIGZyb20gcHJvcGFnYXRpbmcKK3RvIDph
dHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VfY29ubm5lY3Rpb25f
dGFza2AuCisKKy4uIF9iYWNrcHJlc3N1cmU6CisKK0JhY2twcmVzc3VyZQorLS0tLS0tLS0tLS0t
CisKKy4uIG5vdGU6OgorCisgICAgVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBiYWNrcHJlc3N1cmUg
ZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYSBzZXJ2ZXIgYnV0CisgICAgdGhlIGNvbmNlcHQgYXBw
bGllcyB0byBjbGllbnRzIHN5bW1ldHJpY2FsbHkuCisKK1dpdGggYSBuYWl2ZSBpbXBsZW1lbnRh
dGlvbiwgaWYgYSBzZXJ2ZXIgcmVjZWl2ZXMgaW5wdXRzIGZhc3RlciB0aGFuIGl0IGNhbgorcHJv
Y2VzcyB0aGVtLCBvciBpZiBpdCBnZW5lcmF0ZXMgb3V0cHV0cyBmYXN0ZXIgdGhhbiBpdCBjYW4g
c2VuZCB0aGVtLCBkYXRhCithY2N1bXVsYXRlcyBpbiBidWZmZXJzLCBldmVudHVhbGx5IGNhdXNp
bmcgdGhlIHNlcnZlciB0byBydW4gb3V0IG9mIG1lbW9yeSBhbmQKK2NyYXNoLgorCitUaGUgc29s
dXRpb24gdG8gdGhpcyBwcm9ibGVtIGlzIGJhY2twcmVzc3VyZS4gQW55IHBhcnQgb2YgdGhlIHNl
cnZlciB0aGF0CityZWNlaXZlcyBpbnB1dHMgZmFzdGVyIHRoYW4gaXQgY2FuIHByb2Nlc3MgdGhl
bSBhbmQgc2VuZCB0aGUgb3V0cHV0cworbXVzdCBwcm9wYWdhdGUgdGhhdCBpbmZvcm1hdGlvbiBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwYXJ0IGluIHRoZSBjaGFpbi4KKworYGB3ZWJzb2NrZXRzYGAg
aXMgZGVzaWduZWQgdG8gbWFrZSBpdCBlYXN5IHRvIGdldCBiYWNrcHJlc3N1cmUgcmlnaHQuCisK
K0ZvciBpbmNvbWluZyBkYXRhLCBgYHdlYnNvY2tldHNgYCBidWlsZHMgdXBvbiA6Y2xhc3M6YH5h
c3luY2lvLlN0cmVhbVJlYWRlcmAKK3doaWNoIHByb3BhZ2F0ZXMgYmFja3ByZXNzdXJlIHRvIGl0
cyBvd24gYnVmZmVyIGFuZCB0byB0aGUgVENQIHN0cmVhbS4gRnJhbWVzCithcmUgcGFyc2VkIGZy
b20gdGhlIGlucHV0IHN0cmVhbSBhbmQgYWRkZWQgdG8gYSBib3VuZGVkIHF1ZXVlLiBJZiB0aGUg
cXVldWUKK2ZpbGxzIHVwLCBwYXJzaW5nIGhhbHRzIHVudGlsIHRoZSBhcHBsaWNhdGlvbiByZWFk
cyBhIGZyYW1lLgorCitGb3Igb3V0Z29pbmcgZGF0YSwgYGB3ZWJzb2NrZXRzYGAgYnVpbGRzIHVw
b24gOmNsYXNzOmB+YXN5bmNpby5TdHJlYW1Xcml0ZXJgCit3aGljaCBpbXBsZW1lbnRzIGZsb3cg
Y29udHJvbC4gSWYgdGhlIG91dHB1dCBidWZmZXJzIGdyb3cgdG9vIGxhcmdlLCBpdCB3YWl0cwor
dW50aWwgdGhleSdyZSBkcmFpbmVkLiBUaGF0J3Mgd2h5IGFsbCBBUElzIHRoYXQgd3JpdGUgZnJh
bWVzIGFyZSBhc3luY2hyb25vdXMuCisKK09mIGNvdXJzZSwgaXQncyBzdGlsbCBwb3NzaWJsZSBm
b3IgYW4gYXBwbGljYXRpb24gdG8gY3JlYXRlIGl0cyBvd24gdW5ib3VuZGVkCitidWZmZXJzIGFu
ZCBicmVhayB0aGUgYmFja3ByZXNzdXJlLiBCZSBjYXJlZnVsIHdpdGggcXVldWVzLgorCisKKy4u
IF9idWZmZXJzOgorCitCdWZmZXJzCistLS0tLS0tCisKKy4uIG5vdGU6OgorCisgICAgVGhpcyBz
ZWN0aW9uIGRpc2N1c3NlcyBidWZmZXJzIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGEgc2VydmVy
IGJ1dCBpdAorICAgIGFwcGxpZXMgdG8gY2xpZW50cyBhcyB3ZWxsLgorCitBbiBhc3luY2hyb25v
dXMgc3lzdGVtcyB3b3JrcyBiZXN0IHdoZW4gaXRzIGJ1ZmZlcnMgYXJlIGFsbW9zdCBhbHdheXMg
ZW1wdHkuCisKK0ZvciBleGFtcGxlLCBpZiBhIGNsaWVudCBzZW5kcyBkYXRhIHRvbyBmYXN0IGZv
ciBhIHNlcnZlciwgdGhlIHF1ZXVlIG9mCitpbmNvbWluZyBtZXNzYWdlcyB3aWxsIGJlIGNvbnN0
YW50bHkgZnVsbC4gVGhlIHNlcnZlciB3aWxsIGFsd2F5cyBiZSAzMgorbWVzc2FnZXMgKGJ5IGRl
ZmF1bHQpIGJlaGluZCB0aGUgY2xpZW50LiBUaGlzIGNvbnN1bWVzIG1lbW9yeSBhbmQgaW5jcmVh
c2VzCitsYXRlbmN5IGZvciBubyBnb29kIHJlYXNvbi4gVGhlIHByb2JsZW0gaXMgY2FsbGVkIGJ1
ZmZlcmJsb2F0LgorCitJZiBidWZmZXJzIGFyZSBhbG1vc3QgYWx3YXlzIGZ1bGwgYW5kIHRoYXQg
cHJvYmxlbSBjYW5ub3QgYmUgc29sdmVkIGJ5IGFkZGluZworY2FwYWNpdHkg4oCUIHR5cGljYWxs
eSBiZWNhdXNlIHRoZSBzeXN0ZW0gaXMgYm90dGxlbmVja2VkIGJ5IHRoZSBvdXRwdXQgYW5kCitj
b25zdGFudGx5IHJlZ3VsYXRlZCBieSBiYWNrcHJlc3N1cmUg4oCUIHJlZHVjaW5nIHRoZSBzaXpl
IG9mIGJ1ZmZlcnMgbWluaW1pemVzCituZWdhdGl2ZSBjb25zZXF1ZW5jZXMuCisKK0J5IGRlZmF1
bHQgYGB3ZWJzb2NrZXRzYGAgaGFzIHJhdGhlciBoaWdoIGxpbWl0cy4gWW91IGNhbiBkZWNyZWFz
ZSB0aGVtCithY2NvcmRpbmcgdG8geW91ciBhcHBsaWNhdGlvbidzIGNoYXJhY3RlcmlzdGljcy4K
KworQnVmZmVyYmxvYXQgY2FuIGhhcHBlbiBhdCBldmVyeSBsZXZlbCBpbiB0aGUgc3RhY2sgd2hl
cmUgdGhlcmUgaXMgYSBidWZmZXIuCitGb3IgZWFjaCBjb25uZWN0aW9uLCB0aGUgcmVjZWl2aW5n
IHNpZGUgY29udGFpbnMgdGhlc2UgYnVmZmVyczoKKworLSBPUyBidWZmZXJzOiB0dW5pbmcgdGhl
bSBpcyBhbiBhZHZhbmNlZCBvcHRpbWl6YXRpb24uCistIDpjbGFzczpgfmFzeW5jaW8uU3RyZWFt
UmVhZGVyYCBieXRlcyBidWZmZXI6IHRoZSBkZWZhdWx0IGxpbWl0IGlzIDY0wqBLaUIuCisgIFlv
dSBjYW4gc2V0IGFub3RoZXIgbGltaXQgYnkgcGFzc2luZyBhIGBgcmVhZF9saW1pdGBgIGtleXdv
cmQgYXJndW1lbnQgdG8KKyAgOmZ1bmM6YH5jbGllbnQuY29ubmVjdCgpYCBvciA6ZnVuYzpgfnNl
cnZlci5zZXJ2ZWAuCistIEluY29taW5nIG1lc3NhZ2VzIDpjbGFzczpgfmNvbGxlY3Rpb25zLmRl
cXVlYDogaXRzIHNpemUgZGVwZW5kcyBib3RoIG9uCisgIHRoZSBzaXplIGFuZCB0aGUgbnVtYmVy
IG9mIG1lc3NhZ2VzIGl0IGNvbnRhaW5zLiBCeSBkZWZhdWx0IHRoZSBtYXhpbXVtCisgIFVURi04
IGVuY29kZWQgc2l6ZSBpcyAxwqBNaUIgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBpcyAzMi4gSW4g
dGhlIHdvcnN0IGNhc2UsCisgIGFmdGVyIFVURi04IGRlY29kaW5nLCBhIHNpbmdsZSBtZXNzYWdl
IGNvdWxkIHRha2UgdXAgdG8gNMKgTWlCIG9mIG1lbW9yeSBhbmQKKyAgdGhlIG92ZXJhbGwgbWVt
b3J5IGNvbnN1bXB0aW9uIGNvdWxkIHJlYWNoIDEyOMKgTWlCLiBZb3Ugc2hvdWxkIGFkanVzdCB0
aGVzZQorICBsaW1pdHMgYnkgc2V0dGluZyB0aGUgYGBtYXhfc2l6ZWBgIGFuZCBgYG1heF9xdWV1
ZWBgIGtleXdvcmQgYXJndW1lbnRzIG9mCisgIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3QoKWAgb3Ig
OmZ1bmM6YH5zZXJ2ZXIuc2VydmVgIGFjY29yZGluZyB0byB5b3VyCisgIGFwcGxpY2F0aW9uJ3Mg
cmVxdWlyZW1lbnRzLgorCitGb3IgZWFjaCBjb25uZWN0aW9uLCB0aGUgc2VuZGluZyBzaWRlIGNv
bnRhaW5zIHRoZXNlIGJ1ZmZlcnM6CisKKy0gOmNsYXNzOmB+YXN5bmNpby5TdHJlYW1Xcml0ZXJg
IGJ5dGVzIGJ1ZmZlcjogdGhlIGRlZmF1bHQgc2l6ZSBpcyA2NMKgS2lCLgorICBZb3UgY2FuIHNl
dCBhbm90aGVyIGxpbWl0IGJ5IHBhc3NpbmcgYSBgYHdyaXRlX2xpbWl0YGAga2V5d29yZCBhcmd1
bWVudCB0bworICA6ZnVuYzpgfmNsaWVudC5jb25uZWN0KClgIG9yIDpmdW5jOmB+c2VydmVyLnNl
cnZlYC4KKy0gT1MgYnVmZmVyczogdHVuaW5nIHRoZW0gaXMgYW4gYWR2YW5jZWQgb3B0aW1pemF0
aW9uLgorCitDb25jdXJyZW5jeQorLS0tLS0tLS0tLS0KKworQXdhaXRpbmcgYW55IGNvbWJpbmF0
aW9uIG9mIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVjdmAsCis6
bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnNlbmRgLAorOm1ldGg6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZWAKKzptZXRoOmB+cHJvdG9jb2wu
V2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucGluZ2AsIG9yCis6bWV0aDpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLnBvbmdgIGNvbmN1cnJlbnRseSBpcyBzYWZlLCBpbmNsdWRpbmcK
K211bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIG1ldGhvZCwgd2l0aCBvbmUgZXhjZXB0aW9uIGFu
ZCBvbmUgbGltaXRhdGlvbi4KKworKiAqKk9ubHkgb25lIGNvcm91dGluZSBjYW4gcmVjZWl2ZSBt
ZXNzYWdlcyBhdCBhIHRpbWUuKiogVGhpcyBjb25zdHJhaW50CisgIGF2b2lkcyBub24tZGV0ZXJt
aW5pc3RpYyBiZWhhdmlvciAoYW5kIHNpbXBsaWZpZXMgdGhlIGltcGxlbWVudGF0aW9uKS4gSWYg
YQorICBjb3JvdXRpbmUgaXMgYXdhaXRpbmcgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21t
b25Qcm90b2NvbC5yZWN2YCwKKyAgYXdhaXRpbmcgaXQgYWdhaW4gaW4gYW5vdGhlciBjb3JvdXRp
bmUgcmFpc2VzIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisKKyogKipTZW5kaW5nIGEgZnJhZ21lbnRl
ZCBtZXNzYWdlIGZvcmNlcyBzZXJpYWxpemF0aW9uLioqIEluZGVlZCwgdGhlIFdlYlNvY2tldAor
ICBwcm90b2NvbCBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGV4aW5nIG1lc3NhZ2VzLiBJZiBhIGNv
cm91dGluZSBpcyBhd2FpdGluZworICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblBy
b3RvY29sLnNlbmRgIHRvIHNlbmQgYSBmcmFnbWVudGVkIG1lc3NhZ2UsCisgIGF3YWl0aW5nIGl0
IGFnYWluIGluIGFub3RoZXIgY29yb3V0aW5lIHdhaXRzIHVudGlsIHRoZSBmaXJzdCBjYWxsIGNv
bXBsZXRlcy4KKyAgVGhpcyB3aWxsIGJlIHRyYW5zcGFyZW50IGluIG1hbnkgY2FzZXMuIEl0IG1h
eSBiZSBhIGNvbmNlcm4gaWYgdGhlCisgIGZyYWdtZW50ZWQgbWVzc2FnZSBpcyBnZW5lcmF0ZWQg
c2xvd2x5IGJ5IGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvci4KKworUmVjZWl2aW5nIGZyYW1lcyBp
cyBpbmRlcGVuZGVudCBmcm9tIHNlbmRpbmcgZnJhbWVzLiBUaGlzIGlzb2xhdGVzCis6bWV0aDpg
fnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnJlY3ZgLCB3aGljaCByZWNlaXZlcyBm
cmFtZXMsIGZyb20KK3RoZSBvdGhlciBtZXRob2RzLCB3aGljaCBzZW5kIGZyYW1lcy4KKworV2hp
bGUgdGhlIGNvbm5lY3Rpb24gaXMgb3BlbiwgZWFjaCBmcmFtZSBpcyBzZW50IHdpdGggYSBzaW5n
bGUgd3JpdGUuIENvbWJpbmVkCit3aXRoIHRoZSBjb25jdXJyZW5jeSBtb2RlbCBvZiA6bW9kOmBh
c3luY2lvYCwgdGhpcyBlbmZvcmNlcyBzZXJpYWxpemF0aW9uLiBUaGUKK29ubHkgb3RoZXIgcmVx
dWlyZW1lbnQgaXMgdG8gcHJldmVudCBpbnRlcmxlYXZpbmcgb3RoZXIgZGF0YSBmcmFtZXMgaW4g
dGhlCittaWRkbGUgb2YgYSBmcmFnbWVudGVkIG1lc3NhZ2UuCisKK0FmdGVyIHRoZSBjb25uZWN0
aW9uIGlzIGNsb3NlZCwgc2VuZGluZyBhIGZyYW1lIHJhaXNlcworOmV4YzpgfndlYnNvY2tldHMu
ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkYCwgd2hpY2ggaXMgc2FmZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9kb2NzL2V4dGVuc2lvbnMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2Rv
Y3MvZXh0ZW5zaW9ucy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li40MDAwMzQwOTA2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9l
eHRlbnNpb25zLnJzdApAQCAtMCwwICsxLDg3IEBACitFeHRlbnNpb25zCis9PT09PT09PT09CisK
Ky4uIGN1cnJlbnRtb2R1bGU6OiB3ZWJzb2NrZXRzCisKK1RoZSBXZWJTb2NrZXQgcHJvdG9jb2wg
c3VwcG9ydHMgZXh0ZW5zaW9uc18uCisKK0F0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZXJlJ3Mg
b25seSBvbmUgYHJlZ2lzdGVyZWQgZXh0ZW5zaW9uYF8sIFdlYlNvY2tldAorUGVyLU1lc3NhZ2Ug
RGVmbGF0ZSwgc3BlY2lmaWVkIGluIDpyZmM6YDc2OTJgLgorCisuLiBfZXh0ZW5zaW9uczogaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi05CisuLiBfcmVnaXN0ZXJl
ZCBleHRlbnNpb246IGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL3dlYnNvY2tldC93
ZWJzb2NrZXQueGh0bWwjZXh0ZW5zaW9uLW5hbWUKKworUGVyLU1lc3NhZ2UgRGVmbGF0ZQorLS0t
LS0tLS0tLS0tLS0tLS0tLQorCis6ZnVuYzpgfnNlcnZlci5zZXJ2ZSgpYCBhbmQgOmZ1bmM6YH5j
bGllbnQuY29ubmVjdGAgZW5hYmxlIHRoZSBQZXItTWVzc2FnZQorRGVmbGF0ZSBleHRlbnNpb24g
YnkgZGVmYXVsdC4gWW91IGNhbiBkaXNhYmxlIHRoaXMgd2l0aCBgYGNvbXByZXNzaW9uPU5vbmVg
YC4KKworWW91IGNhbiBhbHNvIGNvbmZpZ3VyZSB0aGUgUGVyLU1lc3NhZ2UgRGVmbGF0ZSBleHRl
bnNpb24gZXhwbGljaXRseSBpZiB5b3UKK3dhbnQgdG8gY3VzdG9taXplIGl0cyBwYXJhbWV0ZXJz
LgorCisuLiBfcGVyLW1lc3NhZ2UtZGVmbGF0ZS1jb25maWd1cmF0aW9uLWV4YW1wbGU6CisKK0hl
cmUncyBhbiBleGFtcGxlIG9uIHRoZSBzZXJ2ZXIgc2lkZTo6CisKKyAgICBpbXBvcnQgd2Vic29j
a2V0cworICAgIGZyb20gd2Vic29ja2V0cy5leHRlbnNpb25zIGltcG9ydCBwZXJtZXNzYWdlX2Rl
ZmxhdGUKKworICAgIHdlYnNvY2tldHMuc2VydmUoCisgICAgICAgIC4uLiwKKyAgICAgICAgZXh0
ZW5zaW9ucz1bCisgICAgICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGUuU2VydmVyUGVyTWVzc2Fn
ZURlZmxhdGVGYWN0b3J5KAorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHM9
MTEsCisgICAgICAgICAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cz0xMSwKKyAgICAgICAg
ICAgICAgICBjb21wcmVzc19zZXR0aW5ncz17J21lbUxldmVsJzogNH0sCisgICAgICAgICAgICAp
LAorICAgICAgICBdLAorICAgICkKKworSGVyZSdzIGFuIGV4YW1wbGUgb24gdGhlIGNsaWVudCBz
aWRlOjoKKworICAgIGltcG9ydCB3ZWJzb2NrZXRzCisgICAgZnJvbSB3ZWJzb2NrZXRzLmV4dGVu
c2lvbnMgaW1wb3J0IHBlcm1lc3NhZ2VfZGVmbGF0ZQorCisgICAgd2Vic29ja2V0cy5jb25uZWN0
KAorICAgICAgICAuLi4sCisgICAgICAgIGV4dGVuc2lvbnM9WworICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlLkNsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgKKyAgICAgICAgICAg
ICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTExLAorICAgICAgICAgICAgICAgIGNsaWVudF9t
YXhfd2luZG93X2JpdHM9MTEsCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2V0dGluZ3M9eydt
ZW1MZXZlbCc6IDR9LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApCisKK1JlZmVy
IHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBvZgorOmNsYXNzOmB+ZXh0ZW5zaW9ucy5wZXJtZXNz
YWdlX2RlZmxhdGUuU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5YCBhbmQKKzpjbGFzczpg
fmV4dGVuc2lvbnMucGVybWVzc2FnZV9kZWZsYXRlLkNsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFj
dG9yeWAgZm9yCitkZXRhaWxzLgorCitXcml0aW5nIGFuIGV4dGVuc2lvbgorLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworRHVyaW5nIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSwgV2ViU29ja2V0IGNsaWVu
dHMgYW5kIHNlcnZlcnMgbmVnb3RpYXRlIHdoaWNoCitleHRlbnNpb25zIHdpbGwgYmUgdXNlZCB3
aXRoIHdoaWNoIHBhcmFtZXRlcnMuIFRoZW4gZWFjaCBmcmFtZSBpcyBwcm9jZXNzZWQgYnkKK2V4
dGVuc2lvbnMgYmVmb3JlIGl0J3Mgc2VudCBhbmQgYWZ0ZXIgaXQncyByZWNlaXZlZC4KKworQXMg
YSBjb25zZXF1ZW5jZSB3cml0aW5nIGFuIGV4dGVuc2lvbiByZXF1aXJlcyBpbXBsZW1lbnRpbmcg
c2V2ZXJhbCBjbGFzc2VzOgorCisxLiBFeHRlbnNpb24gRmFjdG9yeTogaXQgbmVnb3RpYXRlcyBw
YXJhbWV0ZXJzIGFuZCBpbnN0YW50aWF0ZXMgdGhlIGV4dGVuc2lvbi4KKyAgIENsaWVudHMgYW5k
IHNlcnZlcnMgcmVxdWlyZSBzZXBhcmF0ZSBleHRlbnNpb24gZmFjdG9yaWVzIHdpdGggZGlzdGlu
Y3QgQVBJcy4KKworMi4gRXh0ZW5zaW9uOiBpdCBkZWNvZGVzIGluY29taW5nIGZyYW1lcyBhbmQg
ZW5jb2RlcyBvdXRnb2luZyBmcmFtZXMuIElmIHRoZQorICAgZXh0ZW5zaW9uIGlzIHN5bW1ldHJp
Y2FsLCBjbGllbnRzIGFuZCBzZXJ2ZXJzIGNhbiB1c2UgdGhlIHNhbWUgY2xhc3MuCisKK2Bgd2Vi
c29ja2V0c2BgIHByb3ZpZGVzIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBmb3IgZXh0ZW5zaW9uIGZh
Y3RvcmllcyBhbmQKK2V4dGVuc2lvbnMuCisKKy4uIGF1dG9jbGFzczo6IHdlYnNvY2tldHMuZXh0
ZW5zaW9ucy5iYXNlLlNlcnZlckV4dGVuc2lvbkZhY3RvcnkKKyAgICA6bWVtYmVyczoKKworLi4g
YXV0b2NsYXNzOjogd2Vic29ja2V0cy5leHRlbnNpb25zLmJhc2UuQ2xpZW50RXh0ZW5zaW9uRmFj
dG9yeQorICAgIDptZW1iZXJzOgorCisuLiBhdXRvY2xhc3M6OiB3ZWJzb2NrZXRzLmV4dGVuc2lv
bnMuYmFzZS5FeHRlbnNpb24KKyAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy9kb2NzL2ZhcS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9mYXEucnN0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2VhM2Y1MzU4Mzk5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvZmFxLnJzdApAQCAtMCwwICsxLDI2MSBAQAor
RkFRCis9PT0KKworLi4gY3VycmVudG1vZHVsZTo6IHdlYnNvY2tldHMKKworLi4gbm90ZTo6CisK
KyAgICBNYW55IHF1ZXN0aW9ucyBhc2tlZCBpbiA6bW9kOmB3ZWJzb2NrZXRzYCcgaXNzdWUgdHJh
Y2tlciBhcmUgYWN0dWFsbHkKKyAgICBhYm91dCA6bW9kOmBhc3luY2lvYC4gUHl0aG9uJ3MgZG9j
dW1lbnRhdGlvbiBhYm91dCBgZGV2ZWxvcGluZyB3aXRoCisgICAgYXN5bmNpb2BfIGlzIGEgZ29v
ZCBjb21wbGVtZW50LgorCisgICAgLi4gX2RldmVsb3Bpbmcgd2l0aCBhc3luY2lvOiBodHRwczov
L2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvYXN5bmNpby1kZXYuaHRtbAorCitTZXJ2ZXIgc2lk
ZQorLS0tLS0tLS0tLS0KKworV2h5IGRvZXMgdGhlIHNlcnZlciBjbG9zZSB0aGUgY29ubmVjdGlv
biBhZnRlciBwcm9jZXNzaW5nIG9uZSBtZXNzYWdlPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitZb3VyIGNv
bm5lY3Rpb24gaGFuZGxlciBleGl0cyBhZnRlciBwcm9jZXNzaW5nIG9uZSBtZXNzYWdlLiBXcml0
ZSBhIGxvb3AgdG8KK3Byb2Nlc3MgbXVsdGlwbGUgbWVzc2FnZXMuCisKK0ZvciBleGFtcGxlLCBp
ZiB5b3VyIGhhbmRsZXIgbG9va3MgbGlrZSB0aGlzOjoKKworICAgIGFzeW5jIGRlZiBoYW5kbGVy
KHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIHByaW50KHdlYnNvY2tldC5yZWN2KCkpCisKK2No
YW5nZSBpdCBsaWtlIHRoaXM6OgorCisgICAgYXN5bmMgZGVmIGhhbmRsZXIod2Vic29ja2V0LCBw
YXRoKToKKyAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd2Vic29ja2V0OgorICAgICAgICAg
ICAgcHJpbnQobWVzc2FnZSkKKworKkRvbid0IGZlZWwgYmFkIGlmIHRoaXMgaGFwcGVucyB0byB5
b3Ug4oCUIGl0J3MgdGhlIG1vc3QgY29tbW9uIHF1ZXN0aW9uIGluCit3ZWJzb2NrZXRzJyBpc3N1
ZSB0cmFja2VyIDotKSoKKworV2h5IGNhbiBvbmx5IG9uZSBjbGllbnQgY29ubmVjdCBhdCBhIHRp
bWU/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworWW91ciBj
b25uZWN0aW9uIGhhbmRsZXIgYmxvY2tzIHRoZSBldmVudCBsb29wLiBMb29rIGZvciBibG9ja2lu
ZyBjYWxscy4KK0FueSBjYWxsIHRoYXQgbWF5IHRha2Ugc29tZSB0aW1lIG11c3QgYmUgYXN5bmNo
cm9ub3VzLgorCitGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmU6OgorCisgICAgYXN5bmMgZGVmIGhh
bmRsZXIod2Vic29ja2V0LCBwYXRoKToKKyAgICAgICAgdGltZS5zbGVlcCgxKQorCitjaGFuZ2Ug
aXQgdG86OgorCisgICAgYXN5bmMgZGVmIGhhbmRsZXIod2Vic29ja2V0LCBwYXRoKToKKyAgICAg
ICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorCitUaGlzIGlzIHBhcnQgb2YgbGVhcm5pbmcgYXN5
bmNpby4gSXQgaXNuJ3Qgc3BlY2lmaWMgdG8gd2Vic29ja2V0cy4KKworU2VlIGFsc28gUHl0aG9u
J3MgZG9jdW1lbnRhdGlvbiBhYm91dCBgcnVubmluZyBibG9ja2luZyBjb2RlYF8uCisKKy4uIF9y
dW5uaW5nIGJsb2NraW5nIGNvZGU6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9h
c3luY2lvLWRldi5odG1sI3J1bm5pbmctYmxvY2tpbmctY29kZQorCitIb3cgZG8gSSBnZXQgYWNj
ZXNzIEhUVFAgaGVhZGVycywgZm9yIGV4YW1wbGUgY29va2llcz8KKy4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitUbyBhY2Nlc3MgSFRUUCBo
ZWFkZXJzIGR1cmluZyB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZSwgeW91IGNhbiBvdmVycmlkZQor
OmF0dHI6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wucHJvY2Vzc19yZXF1ZXN0YDo6
CisKKyAgICBhc3luYyBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHBhdGgsIHJlcXVlc3RfaGVh
ZGVycyk6CisgICAgICAgIGNvb2tpZXMgPSByZXF1ZXN0X2hlYWRlclsiQ29va2llIl0KKworU2Vl
CisKK09uY2UgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIHRoZXkncmUgYXZhaWxhYmxl
IGluCis6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldFNlcnZlclByb3RvY29sLnJlcXVlc3RfaGVh
ZGVyc2A6OgorCisgICAgYXN5bmMgZGVmIGhhbmRsZXIod2Vic29ja2V0LCBwYXRoKToKKyAgICAg
ICAgY29va2llcyA9IHdlYnNvY2tldC5yZXF1ZXN0X2hlYWRlcnNbIkNvb2tpZSJdCisKK0hvdyBk
byBJIGdldCB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgY2xpZW50IGNvbm5lY3RpbmcgdG8gbXkgc2Vy
dmVyPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uCisKK0l0J3MgYXZhaWxhYmxlIGluIDphdHRyOmB+cHJvdG9jb2wuV2Vi
U29ja2V0Q29tbW9uUHJvdG9jb2wucmVtb3RlX2FkZHJlc3NgOjoKKworICAgIGFzeW5jIGRlZiBo
YW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIHJlbW90ZV9pcCA9IHdlYnNvY2tldC5y
ZW1vdGVfYWRkcmVzc1swXQorCitIb3cgZG8gSSBzZXQgd2hpY2ggSVAgYWRkcmVzc2VzIG15IHNl
cnZlciBsaXN0ZW5zIHRvPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4KKworTG9vayBhdCB0aGUgYGBob3N0YGAgYXJndW1lbnQgb2YgOm1ldGg6
YH5hc3luY2lvLmxvb3AuY3JlYXRlX3NlcnZlcmAuCisKKzpmdW5jOmBzZXJ2ZWAgYWNjZXB0cyB0
aGUgc2FtZSBhcmd1bWVudHMgYXMKKzptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV9zZXJ2ZXJg
LgorCitIb3cgZG8gSSBjbG9zZSBhIGNvbm5lY3Rpb24gcHJvcGVybHk/CisuLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK3dlYnNvY2tldHMgdGFrZXMgY2FyZSBvZiBjbG9z
aW5nIHRoZSBjb25uZWN0aW9uIHdoZW4gdGhlIGhhbmRsZXIgZXhpdHMuCisKK0hvdyBkbyBJIHJ1
biBhIEhUVFAgc2VydmVyIGFuZCBXZWJTb2NrZXQgc2VydmVyIG9uIHRoZSBzYW1lIHBvcnQ/Cisu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLgorCitUaGlzIGlzbid0IHN1cHBvcnRlZC4KKworUHJvdmlkaW5nIGEgSFRUUCBzZXJ2
ZXIgaXMgb3V0IG9mIHNjb3BlIGZvciB3ZWJzb2NrZXRzLiBJdCBvbmx5IGFpbXMgYXQKK3Byb3Zp
ZGluZyBhIFdlYlNvY2tldCBzZXJ2ZXIuCisKK1RoZXJlJ3MgbGltaXRlZCBzdXBwb3J0IGZvciBy
ZXR1cm5pbmcgSFRUUCByZXNwb25zZXMgd2l0aCB0aGUKKzphdHRyOmB+c2VydmVyLldlYlNvY2tl
dFNlcnZlclByb3RvY29sLnByb2Nlc3NfcmVxdWVzdGAgaG9vay4KK0lmIHlvdSBuZWVkIG1vcmUs
IHBpY2sgYSBIVFRQIHNlcnZlciBhbmQgcnVuIGl0IHNlcGFyYXRlbHkuCisKK0NsaWVudCBzaWRl
CistLS0tLS0tLS0tLQorCitIb3cgZG8gSSBjbG9zZSBhIGNvbm5lY3Rpb24gcHJvcGVybHk/Cisu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1RoZSBlYXNpZXN0IGlzIHRv
IHVzZSA6ZnVuYzpgY29ubmVjdGAgYXMgYSBjb250ZXh0IG1hbmFnZXI6OgorCisgICAgYXN5bmMg
d2l0aCBjb25uZWN0KC4uLikgYXMgd2Vic29ja2V0OgorICAgICAgICAuLi4KKworSG93IGRvIEkg
cmVjb25uZWN0IGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgY29ubmVjdGlvbiBkcm9wcz8KKy4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisK
K1NlZSBgaXNzdWUgNDE0YF8uCisKKy4uIF9pc3N1ZSA0MTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9h
YXVndXN0aW4vd2Vic29ja2V0cy9pc3N1ZXMvNDE0CisKK0hvdyBkbyBJIGRpc2FibGUgVExTL1NT
TCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitMb29rIGF0IHRoZSBgYHNzbGBgIGFyZ3VtZW50IG9m
IDptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV9jb25uZWN0aW9uYC4KKworOmZ1bmM6YGNvbm5l
Y3RgIGFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzIGFzCis6bWV0aDpgfmFzeW5jaW8ubG9vcC5j
cmVhdGVfY29ubmVjdGlvbmAuCisKK0JvdGggc2lkZXMKKy0tLS0tLS0tLS0KKworSG93IGRvIEkg
ZG8gdHdvIHRoaW5ncyBpbiBwYXJhbGxlbD8gSG93IGRvIEkgaW50ZWdyYXRlIHdpdGggYW5vdGhl
ciBjb3JvdXRpbmU/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworWW91IG11c3Qgc3RhcnQgdHdv
IHRhc2tzLCB3aGljaCB0aGUgZXZlbnQgbG9vcCB3aWxsIHJ1biBjb25jdXJyZW50bHkuIFlvdSBj
YW4KK2FjaGlldmUgdGhpcyB3aXRoIDpmdW5jOmBhc3luY2lvLmdhdGhlcmAgb3IgOmZ1bmM6YGFz
eW5jaW8ud2FpdGAuCisKK1RoaXMgaXMgYWxzbyBwYXJ0IG9mIGxlYXJuaW5nIGFzeW5jaW8gYW5k
IG5vdCBzcGVjaWZpYyB0byB3ZWJzb2NrZXRzLgorCitLZWVwIHRyYWNrIG9mIHRoZSB0YXNrcyBh
bmQgbWFrZSBzdXJlIHRoZXkgdGVybWluYXRlIG9yIHlvdSBjYW5jZWwgdGhlbSB3aGVuCit0aGUg
Y29ubmVjdGlvbiB0ZXJtaW5hdGVzLgorCitIb3cgZG8gSSBjcmVhdGUgY2hhbm5lbHMgb3IgdG9w
aWNzPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKword2Vic29ja2V0cyBk
b2Vzbid0IGhhdmUgYnVpbHQtaW4gcHVibGlzaCAvIHN1YnNjcmliZSBmb3IgdGhlc2UgdXNlIGNh
c2VzLgorCitEZXBlbmRpbmcgb24gdGhlIHNjYWxlIG9mIHlvdXIgc2VydmljZSwgYSBzaW1wbGUg
aW4tbWVtb3J5IGltcGxlbWVudGF0aW9uIG1heQorZG8gdGhlIGpvYiBvciB5b3UgbWF5IG5lZWQg
YW4gZXh0ZXJuYWwgcHVibGlzaCAvIHN1YnNjcmliZSBjb21wb25lbnQuCisKK1doYXQgZG9lcyBg
YENvbm5lY3Rpb25DbG9zZWRFcnJvcjogY29kZSA9IDEwMDZgYCBtZWFuPworLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK0lmIHlvdSdyZSBz
ZWVpbmcgdGhpcyB0cmFjZWJhY2sgaW4gdGhlIGxvZ3Mgb2YgYSBzZXJ2ZXI6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRiCisKKyAgICBFcnJvciBpbiBjb25uZWN0aW9uIGhhbmRsZXIKKyAgICBUcmFj
ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBhc3luY2lvLnN0
cmVhbXMuSW5jb21wbGV0ZVJlYWRFcnJvcjogMCBieXRlcyByZWFkIG9uIGEgdG90YWwgb2YgMiBl
eHBlY3RlZCBieXRlcworCisgICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBj
YXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKworICAgIFRyYWNlYmFjayAobW9zdCBy
ZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIHdlYnNvY2tldHMuZXhjZXB0aW9ucy5D
b25uZWN0aW9uQ2xvc2VkRXJyb3I6IGNvZGUgPSAxMDA2IChjb25uZWN0aW9uIGNsb3NlZCBhYm5v
cm1hbGx5IFtpbnRlcm5hbF0pLCBubyByZWFzb24KKworb3IgaWYgYSBjbGllbnQgY3Jhc2hlcyB3
aXRoIHRoaXMgdHJhY2ViYWNrOgorCisuLiBjb2RlLWJsb2NrOjogcHl0YgorCisgICAgVHJhY2Vi
YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgQ29ubmVjdGlvblJl
c2V0RXJyb3I6IFtFcnJubyA1NF0gQ29ubmVjdGlvbiByZXNldCBieSBwZWVyCisKKyAgICBUaGUg
YWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhj
ZXB0aW9uOgorCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAg
Li4uCisgICAgd2Vic29ja2V0cy5leGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRFcnJvcjogY29k
ZSA9IDEwMDYgKGNvbm5lY3Rpb24gY2xvc2VkIGFibm9ybWFsbHkgW2ludGVybmFsXSksIG5vIHJl
YXNvbgorCitpdCBtZWFucyB0aGF0IHRoZSBUQ1AgY29ubmVjdGlvbiB3YXMgbG9zdC4gQXMgYSBj
b25zZXF1ZW5jZSwgdGhlIFdlYlNvY2tldAorY29ubmVjdGlvbiB3YXMgY2xvc2VkIHdpdGhvdXQg
cmVjZWl2aW5nIGEgY2xvc2UgZnJhbWUsIHdoaWNoIGlzIGFibm9ybWFsLgorCitZb3UgY2FuIGNh
dGNoIGFuZCBoYW5kbGUgOmV4YzpgfmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAgdG8gcHJl
dmVudCBpdAorZnJvbSBiZWluZyBsb2dnZWQuCisKK1RoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMg
d2h5IGxvbmctbGl2ZWQgY29ubmVjdGlvbnMgbWF5IGJlIGxvc3Q6CisKKyogRW5kLXVzZXIgZGV2
aWNlcyB0ZW5kIHRvIGxvc2UgbmV0d29yayBjb25uZWN0aXZpdHkgb2Z0ZW4gYW5kIHVucHJlZGlj
dGFibHkKKyAgYmVjYXVzZSB0aGV5IGNhbiBtb3ZlIG91dCBvZiB3aXJlbGVzcyBuZXR3b3JrIGNv
dmVyYWdlLCBnZXQgdW5wbHVnZ2VkIGZyb20KKyAgYSB3aXJlZCBuZXR3b3JrLCBlbnRlciBhaXJw
bGFuZSBtb2RlLCBiZSBwdXQgdG8gc2xlZXAsIGV0Yy4KKyogSFRUUCBsb2FkIGJhbGFuY2VycyBv
ciBwcm94aWVzIHRoYXQgYXJlbid0IGNvbmZpZ3VyZWQgZm9yIGxvbmctbGl2ZWQKKyAgY29ubmVj
dGlvbnMgbWF5IHRlcm1pbmF0ZSBjb25uZWN0aW9ucyBhZnRlciBhIHNob3J0IGFtb3VudCBvZiB0
aW1lLCB1c3VhbGx5CisgIDMwIHNlY29uZHMuCisKK0lmIHlvdSdyZSBmYWNpbmcgYSByZXByb2R1
Y2libGUgaXNzdWUsIDpyZWY6YGVuYWJsZSBkZWJ1ZyBsb2dzIDxkZWJ1Z2dpbmc+YCB0bworc2Vl
IHdoZW4gYW5kIGhvdyBjb25uZWN0aW9ucyBhcmUgY2xvc2VkLgorCitBcmUgdGhlcmUgYGBvbm9w
ZW5gYCwgYGBvbm1lc3NhZ2VgYCwgYGBvbmVycm9yYGAsIGFuZCBgYG9uY2xvc2VgYCBjYWxsYmFj
a3M/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK05vLCB0aGVyZSBhcmVuJ3QuCisKK3dlYnNvY2tl
dHMgcHJvdmlkZXMgaGlnaC1sZXZlbCwgY29yb3V0aW5lLWJhc2VkIEFQSXMuIENvbXBhcmVkIHRv
IGNhbGxiYWNrcywKK2Nvcm91dGluZXMgbWFrZSBpdCBlYXNpZXIgdG8gbWFuYWdlIGNvbnRyb2wg
ZmxvdyBpbiBjb25jdXJyZW50IGNvZGUuCisKK0lmIHlvdSBwcmVmZXIgY2FsbGJhY2stYmFzZWQg
QVBJcywgeW91IHNob3VsZCB1c2UgYW5vdGhlciBsaWJyYXJ5LgorCitDYW4gSSB1c2UgYGB3ZWJz
b2NrZXRzYGAgc3luY2hyb25vdXNseSwgd2l0aG91dCBgYGFzeW5jYGAgLyBgYGF3YWl0YGA/Cisu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uCisKK1lvdSBjYW4gY29udmVydCBldmVyeSBhc3luY2hyb25vdXMgY2FsbCB0
byBhIHN5bmNocm9ub3VzIGNhbGwgYnkgd3JhcHBpbmcgaXQKK2luIGBgYXN5bmNpby5nZXRfZXZl
bnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZSguLi4pYGAuCisKK0lmIHRoaXMgdHVybnMgb3V0
IHRvIGJlIGltcHJhY3RpY2FsLCB5b3Ugc2hvdWxkIHVzZSBhbm90aGVyIGxpYnJhcnkuCisKK01p
c2NlbGxhbmVvdXMKKy0tLS0tLS0tLS0tLS0KKworSG93IGRvIEkgc2V0IGEgdGltZW91dCBvbiBg
YHJlY3YoKWBgPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitVc2Ug
OmZ1bmM6YH5hc3luY2lvLndhaXRfZm9yYDo6CisKKyAgICBhd2FpdCBhc3luY2lvLndhaXRfZm9y
KHdlYnNvY2tldC5yZWN2KCksIHRpbWVvdXQ9MTApCisKK1RoaXMgdGVjaG5pcXVlIHdvcmtzIGZv
ciBtb3N0IEFQSXMsIGV4Y2VwdCBmb3IgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcnMuCitT
ZWUgYGlzc3VlIDU3NGBfLgorCisuLiBfaXNzdWUgNTc0OiBodHRwczovL2dpdGh1Yi5jb20vYWF1
Z3VzdGluL3dlYnNvY2tldHMvaXNzdWVzLzU3NAorCitIb3cgZG8gSSBrZWVwIGlkbGUgY29ubmVj
dGlvbnMgb3Blbj8KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCit3ZWJz
b2NrZXRzIHNlbmRzIHBpbmdzIGF0IDIwIHNlY29uZHMgaW50ZXJ2YWxzIHRvIGtlZXAgdGhlIGNv
bm5lY3Rpb24gb3Blbi4KKworSW4gY2xvc2VzIHRoZSBjb25uZWN0aW9uIGlmIGl0IGRvZXNuJ3Qg
Z2V0IGEgcG9uZyB3aXRoaW4gMjAgc2Vjb25kcy4KKworWW91IGNhbiBhZGp1c3QgdGhpcyBiZWhh
dmlvciB3aXRoIGBgcGluZ19pbnRlcnZhbGBgIGFuZCBgYHBpbmdfdGltZW91dGBgLgorCitIb3cg
ZG8gSSByZXNwb25kIHRvIHBpbmdzPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKword2Vi
c29ja2V0cyB0YWtlcyBjYXJlIG9mIHJlc3BvbmRpbmcgdG8gcGluZ3Mgd2l0aCBwb25ncy4KKwor
SXMgdGhlcmUgYSBQeXRob24gMiB2ZXJzaW9uPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LgorCitObywgdGhlcmUgaXNuJ3QuCisKK3dlYnNvY2tldHMgYnVpbGRzIHVwb24gYXN5bmNpbyB3
aGljaCByZXF1aXJlcyBQeXRob24gMy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
ZG9jcy9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYjJmODVmMGE0ZjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9pbmRleC5yc3QKQEAgLTAsMCArMSw5OSBAQAor
d2Vic29ja2V0cworPT09PT09PT09PQorCit8cHlwaS12fCB8cHlwaS1weXZlcnNpb25zfCB8cHlw
aS1sfCB8cHlwaS13aGVlbHwgfGNpcmNsZWNpfCB8Y29kZWNvdnwKKworLi4gfHB5cGktdnwgaW1h
Z2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi93ZWJzb2NrZXRzLnN2ZworICAgIDp0
YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvd2Vic29ja2V0cworCisuLiB8cHlw
aS1weXZlcnNpb25zfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNp
b25zL3dlYnNvY2tldHMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcv
cHlwaS93ZWJzb2NrZXRzCisKKy4uIHxweXBpLWx8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9weXBpL2wvd2Vic29ja2V0cy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0
aG9uLm9yZy9weXBpL3dlYnNvY2tldHMKKworLi4gfHB5cGktd2hlZWx8IGltYWdlOjogaHR0cHM6
Ly9pbWcuc2hpZWxkcy5pby9weXBpL3doZWVsL3dlYnNvY2tldHMuc3ZnCisgICAgOnRhcmdldDog
aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS93ZWJzb2NrZXRzCisKKy4uIHxjaXJjbGVjaXwg
aW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NpcmNsZWNpL3Byb2plY3QvZ2l0aHViL2Fh
dWd1c3Rpbi93ZWJzb2NrZXRzLnN2ZworICAgOnRhcmdldDogaHR0cHM6Ly9jaXJjbGVjaS5jb20v
Z2gvYWF1Z3VzdGluL3dlYnNvY2tldHMKKworLi4gfGNvZGVjb3Z8IGltYWdlOjogaHR0cHM6Ly9j
b2RlY292LmlvL2doL2FhdWd1c3Rpbi93ZWJzb2NrZXRzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFk
Z2Uuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2doL2FhdWd1c3Rpbi93ZWJz
b2NrZXRzCisKK2Bgd2Vic29ja2V0c2BgIGlzIGEgbGlicmFyeSBmb3IgYnVpbGRpbmcgV2ViU29j
a2V0IHNlcnZlcnNfIGFuZCBjbGllbnRzXyBpbgorUHl0aG9uIHdpdGggYSBmb2N1cyBvbiBjb3Jy
ZWN0bmVzcyBhbmQgc2ltcGxpY2l0eS4KKworLi4gX3NlcnZlcnM6IGh0dHBzOi8vZ2l0aHViLmNv
bS9hYXVndXN0aW4vd2Vic29ja2V0cy9ibG9iL21hc3Rlci9leGFtcGxlL3NlcnZlci5weQorLi4g
X2NsaWVudHM6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9ibG9iL21h
c3Rlci9leGFtcGxlL2NsaWVudC5weQorCitCdWlsdCBvbiB0b3Agb2YgOm1vZDpgYXN5bmNpb2As
IFB5dGhvbidzIHN0YW5kYXJkIGFzeW5jaHJvbm91cyBJL08gZnJhbWV3b3JrLAoraXQgcHJvdmlk
ZXMgYW4gZWxlZ2FudCBjb3JvdXRpbmUtYmFzZWQgQVBJLgorCitIZXJlJ3MgaG93IGEgY2xpZW50
IHNlbmRzIGFuZCByZWNlaXZlcyBtZXNzYWdlczoKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9l
eGFtcGxlL2hlbGxvLnB5CisKK0FuZCBoZXJlJ3MgYW4gZWNobyBzZXJ2ZXI6CisKKy4uIGxpdGVy
YWxpbmNsdWRlOjogLi4vZXhhbXBsZS9lY2hvLnB5CisKK0RvIHlvdSBsaWtlIGl0PyBMZXQncyBk
aXZlIGluIQorCitUdXRvcmlhbHMKKy0tLS0tLS0tLQorCitJZiB5b3UncmUgbmV3IHRvIGBgd2Vi
c29ja2V0c2BgLCB0aGlzIGlzIHRoZSBwbGFjZSB0byBzdGFydC4KKworLi4gdG9jdHJlZTo6Cisg
ICA6bWF4ZGVwdGg6IDIKKworICAgaW50cm8KKyAgIGZhcQorCitIb3ctdG8gZ3VpZGVzCistLS0t
LS0tLS0tLS0tCisKK1RoZXNlIGd1aWRlcyB3aWxsIGhlbHAgeW91IGJ1aWxkIGFuZCBkZXBsb3kg
YSBgYHdlYnNvY2tldHNgYCBhcHBsaWNhdGlvbi4KKworLi4gdG9jdHJlZTo6CisgICA6bWF4ZGVw
dGg6IDIKKworICAgY2hlYXRzaGVldAorICAgZGVwbG95bWVudAorICAgZXh0ZW5zaW9ucworCitS
ZWZlcmVuY2UKKy0tLS0tLS0tLQorCitGaW5kIGFsbCB0aGUgZGV0YWlscyB5b3UgY291bGQgYXNr
IGZvciwgYW5kIHRoZW4gc29tZS4KKworLi4gdG9jdHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKwor
ICAgYXBpCisKK0Rpc2N1c3Npb25zCistLS0tLS0tLS0tLQorCitHZXQgYSBkZWVwZXIgdW5kZXJz
dGFuZGluZyBvZiBob3cgYGB3ZWJzb2NrZXRzYGAgaXMgYnVpbHQgYW5kIHdoeS4KKworLi4gdG9j
dHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKworICAgZGVzaWduCisgICBsaW1pdGF0aW9ucworICAg
c2VjdXJpdHkKKworUHJvamVjdAorLS0tLS0tLQorCitUaGlzIGlzIGFib3V0IHdlYnNvY2tldHMt
dGhlLXByb2plY3QgcmF0aGVyIHRoYW4gd2Vic29ja2V0cy10aGUtc29mdHdhcmUuCisKKy4uIHRv
Y3RyZWU6OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGNoYW5nZWxvZworICAgY29udHJpYnV0aW5n
CisgICBsaWNlbnNlCisgICBGb3IgZW50ZXJwcmlzZSA8dGlkZWxpZnQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZG9jcy9pbnRyby5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9pbnRy
by5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YmU3MDAyMzlm
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9pbnRyby5yc3QKQEAg
LTAsMCArMSwyMDkgQEAKK0dldHRpbmcgc3RhcnRlZAorPT09PT09PT09PT09PT09CisKKy4uIGN1
cnJlbnRtb2R1bGU6OiB3ZWJzb2NrZXRzCisKK1JlcXVpcmVtZW50cworLS0tLS0tLS0tLS0tCisK
K2Bgd2Vic29ja2V0c2BgIHJlcXVpcmVzIFB5dGhvbiDiiaUgMy42LjEuCisKK1lvdSBzaG91bGQg
dXNlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gaWYgcG9zc2libGUuIElmIHlvdSdyZSB1
c2luZyBhbgorb2xkZXIgdmVyc2lvbiwgYmUgYXdhcmUgdGhhdCBmb3IgZWFjaCBtaW5vciB2ZXJz
aW9uICgzLngpLCBvbmx5IHRoZSBsYXRlc3QKK2J1Z2ZpeCByZWxlYXNlICgzLngueSkgaXMgb2Zm
aWNpYWxseSBzdXBwb3J0ZWQuCisKK0luc3RhbGxhdGlvbgorLS0tLS0tLS0tLS0tCisKK0luc3Rh
bGwgYGB3ZWJzb2NrZXRzYGAgd2l0aDo6CisKKyAgICBwaXAgaW5zdGFsbCB3ZWJzb2NrZXRzCisK
K0Jhc2ljIGV4YW1wbGUKKy0tLS0tLS0tLS0tLS0KKworLi4gX3NlcnZlci1leGFtcGxlOgorCitI
ZXJlJ3MgYSBXZWJTb2NrZXQgc2VydmVyIGV4YW1wbGUuCisKK0l0IHJlYWRzIGEgbmFtZSBmcm9t
IHRoZSBjbGllbnQsIHNlbmRzIGEgZ3JlZXRpbmcsIGFuZCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24u
CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vZXhhbXBsZS9zZXJ2ZXIucHkKKyAgICA6ZW1waGFz
aXplLWxpbmVzOiA4LDE3CisKKy4uIF9jbGllbnQtZXhhbXBsZToKKworT24gdGhlIHNlcnZlciBz
aWRlLCBgYHdlYnNvY2tldHNgYCBleGVjdXRlcyB0aGUgaGFuZGxlciBjb3JvdXRpbmUgYGBoZWxs
b2BgCitvbmNlIGZvciBlYWNoIFdlYlNvY2tldCBjb25uZWN0aW9uLiBJdCBjbG9zZXMgdGhlIGNv
bm5lY3Rpb24gd2hlbiB0aGUgaGFuZGxlcgorY29yb3V0aW5lIHJldHVybnMuCisKK0hlcmUncyBh
IGNvcnJlc3BvbmRpbmcgV2ViU29ja2V0IGNsaWVudCBleGFtcGxlLgorCisuLiBsaXRlcmFsaW5j
bHVkZTo6IC4uL2V4YW1wbGUvY2xpZW50LnB5CisgICAgOmVtcGhhc2l6ZS1saW5lczogOCwxMAor
CitVc2luZyA6ZnVuYzpgY29ubmVjdGAgYXMgYW4gYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdl
ciBlbnN1cmVzIHRoZQorY29ubmVjdGlvbiBpcyBjbG9zZWQgYmVmb3JlIGV4aXRpbmcgdGhlIGBg
aGVsbG9gYCBjb3JvdXRpbmUuCisKKy4uIF9zZWN1cmUtc2VydmVyLWV4YW1wbGU6CisKK1NlY3Vy
ZSBleGFtcGxlCistLS0tLS0tLS0tLS0tLQorCitTZWN1cmUgV2ViU29ja2V0IGNvbm5lY3Rpb25z
IGltcHJvdmUgY29uZmlkZW50aWFsaXR5IGFuZCBhbHNvIHJlbGlhYmlsaXR5CitiZWNhdXNlIHRo
ZXkgcmVkdWNlIHRoZSByaXNrIG9mIGludGVyZmVyZW5jZSBieSBiYWQgcHJveGllcy4KKworVGhl
IFdTUyBwcm90b2NvbCBpcyB0byBXUyB3aGF0IEhUVFBTIGlzIHRvIEhUVFA6IHRoZSBjb25uZWN0
aW9uIGlzIGVuY3J5cHRlZAord2l0aCBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUykg4oCU
IHdoaWNoIGlzIG9mdGVuIHJlZmVycmVkIHRvIGFzIFNlY3VyZQorU29ja2V0cyBMYXllciAoU1NM
KS4gV1NTIHJlcXVpcmVzIFRMUyBjZXJ0aWZpY2F0ZXMgbGlrZSBIVFRQUy4KKworSGVyZSdzIGhv
dyB0byBhZGFwdCB0aGUgc2VydmVyIGV4YW1wbGUgdG8gcHJvdmlkZSBzZWN1cmUgY29ubmVjdGlv
bnMuIFNlZSB0aGUKK2RvY3VtZW50YXRpb24gb2YgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGZvciBj
b25maWd1cmluZyB0aGUgY29udGV4dCBzZWN1cmVseS4KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAu
Li9leGFtcGxlL3NlY3VyZV9zZXJ2ZXIucHkKKyAgICA6ZW1waGFzaXplLWxpbmVzOiAxOSwyMy0y
NQorCitIZXJlJ3MgaG93IHRvIGFkYXB0IHRoZSBjbGllbnQuCisKKy4uIGxpdGVyYWxpbmNsdWRl
OjogLi4vZXhhbXBsZS9zZWN1cmVfY2xpZW50LnB5CisgICAgOmVtcGhhc2l6ZS1saW5lczogMTAs
MTUtMTgKKworVGhpcyBjbGllbnQgbmVlZHMgYSBjb250ZXh0IGJlY2F1c2UgdGhlIHNlcnZlciB1
c2VzIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUuCisKK0EgY2xpZW50IGNvbm5lY3RpbmcgdG8g
YSBzZWN1cmUgV2ViU29ja2V0IHNlcnZlciB3aXRoIGEgdmFsaWQgY2VydGlmaWNhdGUKKyhpLmUu
IHNpZ25lZCBieSBhIENBIHRoYXQgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIHRydXN0cykgY2Fu
IHNpbXBseSBwYXNzCitgYHNzbD1UcnVlYGAgdG8gOmZ1bmM6YGNvbm5lY3RgIGluc3RlYWQgb2Yg
YnVpbGRpbmcgYSBjb250ZXh0LgorCitCcm93c2VyLWJhc2VkIGV4YW1wbGUKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gcnVuIGEgV2ViU29ja2V0
IHNlcnZlciBhbmQgY29ubmVjdCBmcm9tIGEgYnJvd3Nlci4KKworUnVuIHRoaXMgc2NyaXB0IGlu
IGEgY29uc29sZToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9leGFtcGxlL3Nob3dfdGltZS5w
eQorCitUaGVuIG9wZW4gdGhpcyBIVE1MIGZpbGUgaW4gYSBicm93c2VyLgorCisuLiBsaXRlcmFs
aW5jbHVkZTo6IC4uL2V4YW1wbGUvc2hvd190aW1lLmh0bWwKKyAgIDpsYW5ndWFnZTogaHRtbAor
CitTeW5jaHJvbml6YXRpb24gZXhhbXBsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBX
ZWJTb2NrZXQgc2VydmVyIGNhbiByZWNlaXZlIGV2ZW50cyBmcm9tIGNsaWVudHMsIHByb2Nlc3Mg
dGhlbSB0byB1cGRhdGUgdGhlCithcHBsaWNhdGlvbiBzdGF0ZSwgYW5kIHN5bmNocm9uaXplIHRo
ZSByZXN1bHRpbmcgc3RhdGUgYWNyb3NzIGNsaWVudHMuCisKK0hlcmUncyBhbiBleGFtcGxlIHdo
ZXJlIGFueSBjbGllbnQgY2FuIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYSBjb3VudGVyLgorVXBk
YXRlcyBhcmUgcHJvcGFnYXRlZCB0byBhbGwgY29ubmVjdGVkIGNsaWVudHMuCisKK1RoZSBjb25j
dXJyZW5jeSBtb2RlbCBvZiA6bW9kOmBhc3luY2lvYCBndWFyYW50ZWVzIHRoYXQgdXBkYXRlcyBh
cmUKK3NlcmlhbGl6ZWQuCisKK1J1biB0aGlzIHNjcmlwdCBpbiBhIGNvbnNvbGU6CisKKy4uIGxp
dGVyYWxpbmNsdWRlOjogLi4vZXhhbXBsZS9jb3VudGVyLnB5CisKK1RoZW4gb3BlbiB0aGlzIEhU
TUwgZmlsZSBpbiBzZXZlcmFsIGJyb3dzZXJzLgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2V4
YW1wbGUvY291bnRlci5odG1sCisgICA6bGFuZ3VhZ2U6IGh0bWwKKworQ29tbW9uIHBhdHRlcm5z
CistLS0tLS0tLS0tLS0tLS0KKworWW91IHdpbGwgdXN1YWxseSB3YW50IHRvIHByb2Nlc3Mgc2V2
ZXJhbCBtZXNzYWdlcyBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIGEKK2Nvbm5lY3Rpb24uIFRoZXJl
Zm9yZSB5b3UgbXVzdCB3cml0ZSBhIGxvb3AuIEhlcmUgYXJlIHRoZSBiYXNpYyBwYXR0ZXJucyBm
b3IKK2J1aWxkaW5nIGEgV2ViU29ja2V0IHNlcnZlci4KKworQ29uc3VtZXIKKy4uLi4uLi4uCisK
K0ZvciByZWNlaXZpbmcgbWVzc2FnZXMgYW5kIHBhc3NpbmcgdGhlbSB0byBhIGBgY29uc3VtZXJg
YCBjb3JvdXRpbmU6OgorCisgICAgYXN5bmMgZGVmIGNvbnN1bWVyX2hhbmRsZXIod2Vic29ja2V0
LCBwYXRoKToKKyAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd2Vic29ja2V0OgorICAgICAg
ICAgICAgYXdhaXQgY29uc3VtZXIobWVzc2FnZSkKKworSW4gdGhpcyBleGFtcGxlLCBgYGNvbnN1
bWVyYGAgcmVwcmVzZW50cyB5b3VyIGJ1c2luZXNzIGxvZ2ljIGZvciBwcm9jZXNzaW5nCittZXNz
YWdlcyByZWNlaXZlZCBvbiB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uCisKK0l0ZXJhdGlvbiB0
ZXJtaW5hdGVzIHdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0cy4KKworUHJvZHVjZXIKKy4uLi4u
Li4uCisKK0ZvciBnZXR0aW5nIG1lc3NhZ2VzIGZyb20gYSBgYHByb2R1Y2VyYGAgY29yb3V0aW5l
IGFuZCBzZW5kaW5nIHRoZW06OgorCisgICAgYXN5bmMgZGVmIHByb2R1Y2VyX2hhbmRsZXIod2Vi
c29ja2V0LCBwYXRoKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2Ug
PSBhd2FpdCBwcm9kdWNlcigpCisgICAgICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChtZXNz
YWdlKQorCitJbiB0aGlzIGV4YW1wbGUsIGBgcHJvZHVjZXJgYCByZXByZXNlbnRzIHlvdXIgYnVz
aW5lc3MgbG9naWMgZm9yIGdlbmVyYXRpbmcKK21lc3NhZ2VzIHRvIHNlbmQgb24gdGhlIFdlYlNv
Y2tldCBjb25uZWN0aW9uLgorCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3Rv
Y29sLnNlbmRgIHJhaXNlcyBhCis6ZXhjOmB+ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkYCBl
eGNlcHRpb24gd2hlbiB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzLAord2hpY2ggYnJlYWtzIG91dCBv
ZiB0aGUgYGB3aGlsZSBUcnVlYGAgbG9vcC4KKworQm90aAorLi4uLgorCitZb3UgY2FuIHJlYWQg
YW5kIHdyaXRlIG1lc3NhZ2VzIG9uIHRoZSBzYW1lIGNvbm5lY3Rpb24gYnkgY29tYmluaW5nIHRo
ZSB0d28KK3BhdHRlcm5zIHNob3duIGFib3ZlIGFuZCBydW5uaW5nIHRoZSB0d28gdGFza3MgaW4g
cGFyYWxsZWw6OgorCisgICAgYXN5bmMgZGVmIGhhbmRsZXIod2Vic29ja2V0LCBwYXRoKToKKyAg
ICAgICAgY29uc3VtZXJfdGFzayA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSgKKyAgICAgICAgICAg
IGNvbnN1bWVyX2hhbmRsZXIod2Vic29ja2V0LCBwYXRoKSkKKyAgICAgICAgcHJvZHVjZXJfdGFz
ayA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSgKKyAgICAgICAgICAgIHByb2R1Y2VyX2hhbmRsZXIo
d2Vic29ja2V0LCBwYXRoKSkKKyAgICAgICAgZG9uZSwgcGVuZGluZyA9IGF3YWl0IGFzeW5jaW8u
d2FpdCgKKyAgICAgICAgICAgIFtjb25zdW1lcl90YXNrLCBwcm9kdWNlcl90YXNrXSwKKyAgICAg
ICAgICAgIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVELAorICAgICAgICApCisg
ICAgICAgIGZvciB0YXNrIGluIHBlbmRpbmc6CisgICAgICAgICAgICB0YXNrLmNhbmNlbCgpCisK
K1JlZ2lzdHJhdGlvbgorLi4uLi4uLi4uLi4uCisKK0FzIHNob3duIGluIHRoZSBzeW5jaHJvbml6
YXRpb24gZXhhbXBsZSBhYm92ZSwgaWYgeW91IG5lZWQgdG8gbWFpbnRhaW4gYSBsaXN0CitvZiBj
dXJyZW50bHkgY29ubmVjdGVkIGNsaWVudHMsIHlvdSBtdXN0IHJlZ2lzdGVyIHRoZW0gd2hlbiB0
aGV5IGNvbm5lY3QgYW5kCit1bnJlZ2lzdGVyIHRoZW0gd2hlbiB0aGV5IGRpc2Nvbm5lY3QuCisK
Kzo6CisKKyAgICBjb25uZWN0ZWQgPSBzZXQoKQorCisgICAgYXN5bmMgZGVmIGhhbmRsZXIod2Vi
c29ja2V0LCBwYXRoKToKKyAgICAgICAgIyBSZWdpc3Rlci4KKyAgICAgICAgY29ubmVjdGVkLmFk
ZCh3ZWJzb2NrZXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgSW1wbGVtZW50IGxvZ2lj
IGhlcmUuCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLndhaXQoW3dzLnNlbmQoIkhlbGxvISIp
IGZvciB3cyBpbiBjb25uZWN0ZWRdKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgx
MCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgVW5yZWdpc3Rlci4KKyAgICAgICAg
ICAgIGNvbm5lY3RlZC5yZW1vdmUod2Vic29ja2V0KQorCitUaGlzIHNpbXBsaXN0aWMgZXhhbXBs
ZSBrZWVwcyB0cmFjayBvZiBjb25uZWN0ZWQgY2xpZW50cyBpbiBtZW1vcnkuIFRoaXMgb25seQor
d29ya3MgYXMgbG9uZyBhcyB5b3UgcnVuIGEgc2luZ2xlIHByb2Nlc3MuIEluIGEgcHJhY3RpY2Fs
IGFwcGxpY2F0aW9uLCB0aGUKK2hhbmRsZXIgbWF5IHN1YnNjcmliZSB0byBzb21lIGNoYW5uZWxz
IG9uIGEgbWVzc2FnZSBicm9rZXIsIGZvciBleGFtcGxlLgorCitUaGF0J3MgYWxsIQorLS0tLS0t
LS0tLS0KKworVGhlIGRlc2lnbiBvZiB0aGUgYGB3ZWJzb2NrZXRzYGAgQVBJIHdhcyBkcml2ZW4g
Ynkgc2ltcGxpY2l0eS4KKworWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgcGVyZm9ybWlu
ZyB0aGUgb3BlbmluZyBvciB0aGUgY2xvc2luZyBoYW5kc2hha2UsCithbnN3ZXJpbmcgcGluZ3Ms
IG9yIGFueSBvdGhlciBiZWhhdmlvciByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKwor
YGB3ZWJzb2NrZXRzYGAgaGFuZGxlcyBhbGwgdGhpcyB1bmRlciB0aGUgaG9vZCBzbyB5b3UgZG9u
J3QgaGF2ZSB0by4KKworT25lIG1vcmUgdGhpbmcuLi4KKy0tLS0tLS0tLS0tLS0tLS0tCisKK2Bg
d2Vic29ja2V0c2BgIHByb3ZpZGVzIGFuIGludGVyYWN0aXZlIGNsaWVudDo6CisKKyAgICAkIHB5
dGhvbiAtbSB3ZWJzb2NrZXRzIHdzczovL2VjaG8ud2Vic29ja2V0Lm9yZy8KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9kb2NzL2xpY2Vuc2UucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3Mv
bGljZW5zZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDJk
M2IwN2ZjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9saWNlbnNl
LnJzdApAQCAtMCwwICsxLDQgQEAKK0xpY2Vuc2UKKy0tLS0tLS0KKworLi4gbGl0ZXJhbGluY2x1
ZGU6OiAuLi9MSUNFTlNFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9saWZlY3lj
bGUuZ3JhZmZsZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2xpZmVjeWNsZS5ncmFmZmxlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYThhYjdmZjA5ZjUyCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvbGlmZWN5Y2xlLmdyYWZm
bGUgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9saWZlY3ljbGUuc3Zn
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvbGlmZWN5Y2xlLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjBhOTgxOGQyOTMwYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2Vic29ja2V0cy9kb2NzL2xpZmVjeWNsZS5zdmcKQEAgLTAsMCArMSwzIEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KKzwhRE9DVFlQ
RSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsi
IHZlcnNpb249IjEuMSIgdmlld0JveD0iLTE0LjM0NjQ1NjUgMTEyLjY1MzU0MyA2MjQuNjkyOSAz
NzIuNjkyOTEiIHdpZHRoPSI2MjQuNjkyOXB0IiBoZWlnaHQ9IjM3Mi42OTI5MXB0IiB4bWxuczpk
Yz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxtZXRhZGF0YT4gUHJvZHVjZWQg
YnkgT21uaUdyYWZmbGUgNi42LjIgPGRjOmRhdGU+MjAxOC0wNy0yOSAxNToyNTozNCArMDAwMDwv
ZGM6ZGF0ZT48L21ldGFkYXRhPjxkZWZzPjxmb250LWZhY2UgZm9udC1mYW1pbHk9IkNvdXJpZXIg
TmV3IiBmb250LXNpemU9IjEyIiBwYW5vc2UtMT0iMiA3IDYgOSAyIDIgNSAyIDQgNCIgdW5pdHMt
cGVyLWVtPSIxMDAwIiB1bmRlcmxpbmUtcG9zaXRpb249Ii0yMzIuOTEwMTYiIHVuZGVybGluZS10
aGlja25lc3M9IjEwMC4wOTc2NTYiIHNsb3BlPSIwIiB4LWhlaWdodD0iNDQzLjM1OTM4IiBjYXAt
aGVpZ2h0PSI1OTEuNzk2ODgiIGFzY2VudD0iODMyLjUxOTUzIiBkZXNjZW50PSItMzAwLjI5Mjk3
IiBmb250LXdlaWdodD0iYm9sZCI+PGZvbnQtZmFjZS1zcmM+PGZvbnQtZmFjZS1uYW1lIG5hbWU9
IkNvdXJpZXJOZXdQUy1Cb2xkTVQiLz48L2ZvbnQtZmFjZS1zcmM+PC9mb250LWZhY2U+PGZvbnQt
ZmFjZSBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIHBhbm9zZS0xPSIy
IDcgMyA5IDIgMiA1IDIgNCA0IiB1bml0cy1wZXItZW09IjEwMDAiIHVuZGVybGluZS1wb3NpdGlv
bj0iLTIzMi45MTAxNiIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iNDEuMDE1NjI1IiBzbG9wZT0iMCIg
eC1oZWlnaHQ9IjQyMi44NTE1NiIgY2FwLWhlaWdodD0iNTcxLjI4OTA2IiBhc2NlbnQ9IjgzMi41
MTk1MyIgZGVzY2VudD0iLTMwMC4yOTI5NyIgZm9udC13ZWlnaHQ9IjUwMCI+PGZvbnQtZmFjZS1z
cmM+PGZvbnQtZmFjZS1uYW1lIG5hbWU9IkNvdXJpZXJOZXdQU01UIi8+PC9mb250LWZhY2Utc3Jj
PjwvZm9udC1mYWNlPjxtYXJrZXIgb3JpZW50PSJhdXRvIiBvdmVyZmxvdz0idmlzaWJsZSIgbWFy
a2VyVW5pdHM9InN0cm9rZVdpZHRoIiBpZD0iU3RpY2tBcnJvd19NYXJrZXIiIHZpZXdCb3g9Ii0x
IC00IDggOCIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgY29sb3I9ImJsYWNrIj48
Zz48cGF0aCBkPSJNIDUuODY2NjY2NyAwIEwgMCAwIE0gMCAtMi4yIEwgNS44NjY2NjY3IDAgTCAw
IDIuMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMSIv
PjwvZz48L21hcmtlcj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9
IjEyIiBwYW5vc2UtMT0iMiAxMSA2IDQgMyA1IDQgNCAyIDQiIHVuaXRzLXBlci1lbT0iMTAwMCIg
dW5kZXJsaW5lLXBvc2l0aW9uPSItODcuODkwNjI1IiB1bmRlcmxpbmUtdGhpY2tuZXNzPSI1OC41
OTM3NSIgc2xvcGU9IjAiIHgtaGVpZ2h0PSI1NDUuNDEwMTYiIGNhcC1oZWlnaHQ9IjcyNy4wNTA4
IiBhc2NlbnQ9IjEwMDUuMzcxMSIgZGVzY2VudD0iLTIwOS45NjA5NCIgZm9udC13ZWlnaHQ9IjUw
MCI+PGZvbnQtZmFjZS1zcmM+PGZvbnQtZmFjZS1uYW1lIG5hbWU9IlZlcmRhbmEiLz48L2ZvbnQt
ZmFjZS1zcmM+PC9mb250LWZhY2U+PC9kZWZzPjxnIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLW9wYWNp
dHk9IjEiIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIGZpbGw9Im5vbmUiIGZpbGwtb3BhY2l0eT0i
MSI+PHRpdGxlPkNhbnZhcyAxPC90aXRsZT48Zz48dGl0bGU+TGF5ZXIgMTwvdGl0bGU+PHRleHQg
dHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTkuMTczMjI4IDE0OC45MDU1MSkiIGZpbGw9ImJsYWNrIj48
dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdo
dD0iYm9sZCIgeD0iMS41MTM4MjU0IiB5PSIxMCIgdGV4dExlbmd0aD0iNzIuMDExNzIiPkNPTk5F
Q1RJTkc8L3RzcGFuPjwvdGV4dD48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjAuOTA1NTEg
MTQ4LjkwNTUxKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXci
IGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSIyMy4xMTczNDEiIHk9IjEwIiB0
ZXh0TGVuZ3RoPSIyOC44MDQ2ODgiPk9QRU48L3RzcGFuPjwvdGV4dD48dGV4dCB0cmFuc2Zvcm09
InRyYW5zbGF0ZSgzNTkuMzMwNyAxNDguOTA1NTEpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQt
ZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9ImJvbGQiIHg9
IjEyLjMxNTU4MyIgeT0iMTAiIHRleHRMZW5ndGg9IjUwLjQwODIwMyI+Q0xPU0lORzwvdHNwYW4+
PC90ZXh0Pjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwMS4wNjMgMTQ4LjkwNTUxKSIgZmls
bD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIi
IGZvbnQtd2VpZ2h0PSJib2xkIiB4PSIxNS45MTYxNjkiIHk9IjEwIiB0ZXh0TGVuZ3RoPSI0My4y
MDcwMyI+Q0xPU0VEPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjE5OC40MjUyIiB5MT0iMTcwLjA3
ODc0IiB4Mj0iMTk4LjQyNTIiIHkyPSI0NTMuNTQzMyIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxp
bmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIg
c3Ryb2tlLWRhc2hhcnJheT0iMSwzIi8+PGxpbmUgeDE9IjM5Ni44NTA0IiB5MT0iMTcwLjA3ODc0
IiB4Mj0iMzk2Ljg1MDQiIHkyPSI0NTMuNTQzMyIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVj
YXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ry
b2tlLWRhc2hhcnJheT0iMSwzIi8+PGxpbmUgeDE9IjUzOC41ODI2NyIgeTE9IjE3MC4wNzg3NCIg
eDI9IjUzOC41ODI2NyIgeTI9IjQ1My41NDMzIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNh
cD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJv
a2UtZGFzaGFycmF5PSIxLDMiLz48bGluZSB4MT0iNTYuNjkyOTEzIiB5MT0iMTcwLjA3ODc0IiB4
Mj0iNTYuNjkyOTEzIiB5Mj0iNDUzLjU0MzMiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2Fw
PSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9r
ZS1kYXNoYXJyYXk9IjEsMyIvPjxwYXRoIGQ9Ik0gMjQwLjk0NDg4IDI0MC45NDQ4OCBMIDQxMS4w
MjM2MiAyNDAuOTQ0ODggQyA0MTguODUxMjggMjQwLjk0NDg4IDQyNS4xOTY4NSAyNDcuMjkwNDUg
NDI1LjE5Njg1IDI1NS4xMTgxMSBMIDQyNS4xOTY4NSAyNTUuMTE4MTEgQyA0MjUuMTk2ODUgMjYy
Ljk0NTc3IDQxOC44NTEyOCAyNjkuMjkxMzQgNDExLjAyMzYyIDI2OS4yOTEzNCBMIDI0MC45NDQ4
OCAyNjkuMjkxMzQgQyAyMzMuMTE3MjIgMjY5LjI5MTM0IDIyNi43NzE2NSAyNjIuOTQ1NzcgMjI2
Ljc3MTY1IDI1NS4xMTgxMSBMIDIyNi43NzE2NSAyNTUuMTE4MTEgQyAyMjYuNzcxNjUgMjQ3LjI5
MDQ1IDIzMy4xMTcyMiAyNDAuOTQ0ODggMjQwLjk0NDg4IDI0MC45NDQ4OCBaIiBmaWxsPSIjZGFk
YWRhIi8+PHBhdGggZD0iTSAyNDAuOTQ0ODggMjQwLjk0NDg4IEwgNDExLjAyMzYyIDI0MC45NDQ4
OCBDIDQxOC44NTEyOCAyNDAuOTQ0ODggNDI1LjE5Njg1IDI0Ny4yOTA0NSA0MjUuMTk2ODUgMjU1
LjExODExIEwgNDI1LjE5Njg1IDI1NS4xMTgxMSBDIDQyNS4xOTY4NSAyNjIuOTQ1NzcgNDE4Ljg1
MTI4IDI2OS4yOTEzNCA0MTEuMDIzNjIgMjY5LjI5MTM0IEwgMjQwLjk0NDg4IDI2OS4yOTEzNCBD
IDIzMy4xMTcyMiAyNjkuMjkxMzQgMjI2Ljc3MTY1IDI2Mi45NDU3NyAyMjYuNzcxNjUgMjU1LjEx
ODExIEwgMjI2Ljc3MTY1IDI1NS4xMTgxMSBDIDIyNi43NzE2NSAyNDcuMjkwNDUgMjMzLjExNzIy
IDI0MC45NDQ4OCAyNDAuOTQ0ODggMjQwLjk0NDg4IFoiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUi
Lz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMjYuNzcxNjUgMjQ4LjExODExKSIgZmlsbD0i
YmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZv
bnQtd2VpZ2h0PSJib2xkIiB4PSI1Mi40MDQ5OCIgeT0iMTAiIHRleHRMZW5ndGg9IjkzLjYxNTIz
NCI+dHJhbnNmZXJfZGF0YTwvdHNwYW4+PC90ZXh0PjxwYXRoIGQ9Ik0gMjQwLjk0NDg4IDM1NC4z
MzA3IEwgNTUyLjc1NTkgMzU0LjMzMDcgQyA1NjAuNTgzNTYgMzU0LjMzMDcgNTY2LjkyOTEzIDM2
MC42NzYyOCA1NjYuOTI5MTMgMzY4LjUwMzkzIEwgNTY2LjkyOTEzIDM2OC41MDM5MyBDIDU2Ni45
MjkxMyAzNzYuMzMxNiA1NjAuNTgzNTYgMzgyLjY3NzE2IDU1Mi43NTU5IDM4Mi42NzcxNiBMIDI0
MC45NDQ4OCAzODIuNjc3MTYgQyAyMzMuMTE3MjIgMzgyLjY3NzE2IDIyNi43NzE2NSAzNzYuMzMx
NiAyMjYuNzcxNjUgMzY4LjUwMzkzIEwgMjI2Ljc3MTY1IDM2OC41MDM5MyBDIDIyNi43NzE2NSAz
NjAuNjc2MjggMjMzLjExNzIyIDM1NC4zMzA3IDI0MC45NDQ4OCAzNTQuMzMwNyBaIiBmaWxsPSIj
ZGFkYWRhIi8+PHBhdGggZD0iTSAyNDAuOTQ0ODggMzU0LjMzMDcgTCA1NTIuNzU1OSAzNTQuMzMw
NyBDIDU2MC41ODM1NiAzNTQuMzMwNyA1NjYuOTI5MTMgMzYwLjY3NjI4IDU2Ni45MjkxMyAzNjgu
NTAzOTMgTCA1NjYuOTI5MTMgMzY4LjUwMzkzIEMgNTY2LjkyOTEzIDM3Ni4zMzE2IDU2MC41ODM1
NiAzODIuNjc3MTYgNTUyLjc1NTkgMzgyLjY3NzE2IEwgMjQwLjk0NDg4IDM4Mi42NzcxNiBDIDIz
My4xMTcyMiAzODIuNjc3MTYgMjI2Ljc3MTY1IDM3Ni4zMzE2IDIyNi43NzE2NSAzNjguNTAzOTMg
TCAyMjYuNzcxNjUgMzY4LjUwMzkzIEMgMjI2Ljc3MTY1IDM2MC42NzYyOCAyMzMuMTE3MjIgMzU0
LjMzMDcgMjQwLjk0NDg4IDM1NC4zMzA3IFoiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2Fw
PSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4
dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzEuNzcxNjUgMzYxLjUwMzkzKSIgZmlsbD0iYmxhY2si
Pjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2Vp
Z2h0PSJib2xkIiB4PSIxMDcuNDY5MzY0IiB5PSIxMCIgdGV4dExlbmd0aD0iMTE1LjIxODc1Ij5j
bG9zZV9jb25uZWN0aW9uPC90c3Bhbj48L3RleHQ+PHBhdGggZD0iTSA5OS4yMTI2IDE4NC4yNTE5
NyBMIDE1NS45MDU1MSAxODQuMjUxOTcgQyAxNjMuNzMzMTcgMTg0LjI1MTk3IDE3MC4wNzg3NCAx
OTAuNTk3NTQgMTcwLjA3ODc0IDE5OC40MjUyIEwgMTcwLjA3ODc0IDE5OC40MjUyIEMgMTcwLjA3
ODc0IDIwNi4yNTI4NSAxNjMuNzMzMTcgMjEyLjU5ODQyIDE1NS45MDU1MSAyMTIuNTk4NDIgTCA5
OS4yMTI2IDIxMi41OTg0MiBDIDkxLjM4NDk0IDIxMi41OTg0MiA4NS4wMzkzNyAyMDYuMjUyODUg
ODUuMDM5MzcgMTk4LjQyNTIgTCA4NS4wMzkzNyAxOTguNDI1MiBDIDg1LjAzOTM3IDE5MC41OTc1
NCA5MS4zODQ5NCAxODQuMjUxOTcgOTkuMjEyNiAxODQuMjUxOTcgWiIgZmlsbD0iIzZmNiIvPjxw
YXRoIGQ9Ik0gOTkuMjEyNiAxODQuMjUxOTcgTCAxNTUuOTA1NTEgMTg0LjI1MTk3IEMgMTYzLjcz
MzE3IDE4NC4yNTE5NyAxNzAuMDc4NzQgMTkwLjU5NzU0IDE3MC4wNzg3NCAxOTguNDI1MiBMIDE3
MC4wNzg3NCAxOTguNDI1MiBDIDE3MC4wNzg3NCAyMDYuMjUyODUgMTYzLjczMzE3IDIxMi41OTg0
MiAxNTUuOTA1NTEgMjEyLjU5ODQyIEwgOTkuMjEyNiAyMTIuNTk4NDIgQyA5MS4zODQ5NCAyMTIu
NTk4NDIgODUuMDM5MzcgMjA2LjI1Mjg1IDg1LjAzOTM3IDE5OC40MjUyIEwgODUuMDM5MzcgMTk4
LjQyNTIgQyA4NS4wMzkzNyAxOTAuNTk3NTQgOTEuMzg0OTQgMTg0LjI1MTk3IDk5LjIxMjYgMTg0
LjI1MTk3IFoiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxp
bmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5z
bGF0ZSg5MC4wMzkzNyAxOTEuNDI1MikiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9
IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMTIuMzE1
NTgzIiB5PSIxMCIgdGV4dExlbmd0aD0iNTAuNDA4MjAzIj5jb25uZWN0PC90c3Bhbj48L3RleHQ+
PHBhdGggZD0iTSAyNDAuOTQ0ODggMTg0LjI1MTk3IEwgNDk2LjA2MyAxODQuMjUxOTcgQyA1MDMu
ODkwNjUgMTg0LjI1MTk3IDUxMC4yMzYyMiAxOTAuNTk3NTQgNTEwLjIzNjIyIDE5OC40MjUyIEwg
NTEwLjIzNjIyIDE5OC40MjUyIEMgNTEwLjIzNjIyIDIwNi4yNTI4NSA1MDMuODkwNjUgMjEyLjU5
ODQyIDQ5Ni4wNjMgMjEyLjU5ODQyIEwgMjQwLjk0NDg4IDIxMi41OTg0MiBDIDIzMy4xMTcyMiAy
MTIuNTk4NDIgMjI2Ljc3MTY1IDIwNi4yNTI4NSAyMjYuNzcxNjUgMTk4LjQyNTIgTCAyMjYuNzcx
NjUgMTk4LjQyNTIgQyAyMjYuNzcxNjUgMTkwLjU5NzU0IDIzMy4xMTcyMiAxODQuMjUxOTcgMjQw
Ljk0NDg4IDE4NC4yNTE5NyBaIiBmaWxsPSIjNmY2Ii8+PHBhdGggZD0iTSAyNDAuOTQ0ODggMTg0
LjI1MTk3IEwgNDk2LjA2MyAxODQuMjUxOTcgQyA1MDMuODkwNjUgMTg0LjI1MTk3IDUxMC4yMzYy
MiAxOTAuNTk3NTQgNTEwLjIzNjIyIDE5OC40MjUyIEwgNTEwLjIzNjIyIDE5OC40MjUyIEMgNTEw
LjIzNjIyIDIwNi4yNTI4NSA1MDMuODkwNjUgMjEyLjU5ODQyIDQ5Ni4wNjMgMjEyLjU5ODQyIEwg
MjQwLjk0NDg4IDIxMi41OTg0MiBDIDIzMy4xMTcyMiAyMTIuNTk4NDIgMjI2Ljc3MTY1IDIwNi4y
NTI4NSAyMjYuNzcxNjUgMTk4LjQyNTIgTCAyMjYuNzcxNjUgMTk4LjQyNTIgQyAyMjYuNzcxNjUg
MTkwLjU5NzU0IDIzMy4xMTcyMiAxODQuMjUxOTcgMjQwLjk0NDg4IDE4NC4yNTE5NyBaIiBzdHJv
a2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQi
IHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjMxLjc3MTY1
IDE5MS40MjUyKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXci
IGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSIxNy45MTI5NDciIHk9IjEwIiB0
ZXh0TGVuZ3RoPSIxMDAuODE2NDA2Ij5yZWN2IC8gc2VuZCAvIDwvdHNwYW4+PHRzcGFuIGZvbnQt
ZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0i
MTE4LjcyOTM1IiB5PSIxMCIgdGV4dExlbmd0aD0iOTMuNjE1MjM0Ij5waW5nIC8gcG9uZyAvPC90
c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250
LXdlaWdodD0iYm9sZCIgeD0iMjEyLjM0NDU5IiB5PSIxMCIgdGV4dExlbmd0aD0iNTAuNDA4MjAz
Ij4gY2xvc2UgPC90c3Bhbj48L3RleHQ+PHBhdGggZD0iTSAxNzAuMDc4NzQgMTk4LjQyNTIgTCAx
ODMuOTc4NzQgMTk4LjQyNTIgTCAxOTguNDI1MiAxOTguNDI1MiBMIDE5OC40MjUyIDI4My40NjQ1
NyBMIDE5OC40MjUyIDM2OC41MDM5MyBMIDIxMi44NzE2NSAzNjguNTAzOTMgTCAyMTUuMzcxNjUg
MzY4LjUwMzkzIiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJi
bGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJv
a2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDc1Ljg2NjE0IDQxMC4x
OTY4NSkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IlZlcmRhbmEiIGZvbnQtc2l6
ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjI3Ljc2MDI5NiIgeT0iMTIiIHRleHRMZW5ndGg9
IjUyLjA4Mzk4NCI+b3BlbmluZyA8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iVmVyZGFuYSIg
Zm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMTkuMTY0NTkzIiB5PSIyNyIgdGV4
dExlbmd0aD0iNTguMDI1MzkiPmhhbmRzaGFrPC90c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9IlZl
cmRhbmEiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9Ijc3LjA3Mjc5NiIgeT0i
MjciIHRleHRMZW5ndGg9IjcuMTQ4NDM3NSI+ZTwvdHNwYW4+PC90ZXh0Pjx0ZXh0IHRyYW5zZm9y
bT0idHJhbnNsYXRlKDQxNi4wMjM2MiA0MTAuMTk2ODUpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZv
bnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSIx
OS4xODIxNzEiIHk9IjEyIiB0ZXh0TGVuZ3RoPSI2NS4wMjE0ODQiPmNvbm5lY3Rpb248L3RzcGFu
Pjx0c3BhbiBmb250LWZhbWlseT0iVmVyZGFuYSIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9
IjUwMCIgeD0iMTYuODYxODU4IiB5PSIyNyIgdGV4dExlbmd0aD0iNjkuNjYyMTEiPnRlcm1pbmF0
aW9uPC90c3Bhbj48L3RleHQ+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE3LjU5ODQyIDQx
MC4xOTY4NSkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IlZlcmRhbmEiIGZvbnQt
c2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjQxLjAzMDU4IiB5PSIxMiIgdGV4dExlbmd0
aD0iNDAuNjg3NSI+ZGF0YSB0cjwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBm
b250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSI4MS41MDcxNDMiIHk9IjEyIiB0ZXh0
TGVuZ3RoPSIzNy41NDEwMTYiPmFuc2ZlcjwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJk
YW5hIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSIxOC4yMTEyNDUiIHk9IjI3
IiB0ZXh0TGVuZ3RoPSIxMTYuNjI1Ij4mYW1wOyBjbG9zaW5nIGhhbmRzaGFrPC90c3Bhbj48dHNw
YW4gZm9udC1mYW1pbHk9IlZlcmRhbmEiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAi
IHg9IjEzNC43MTkwNiIgeT0iMjciIHRleHRMZW5ndGg9IjcuMTQ4NDM3NSI+ZTwvdHNwYW4+PC90
ZXh0PjxwYXRoIGQ9Ik0gNDI1LjE5Njg1IDI1NS4xMTgxMSBMIDQzOS4wOTY4NSAyNTUuMTE4MTEg
TCA0NTMuNTQzMyAyNTUuMTE4MTEgTCA0NTMuNTQzMyAzNDIuOTMwNyIgbWFya2VyLWVuZD0idXJs
KCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJN
IDI0MC45NDQ4OCAyOTcuNjM3OCBMIDQxMS4wMjM2MiAyOTcuNjM3OCBDIDQxOC44NTEyOCAyOTcu
NjM3OCA0MjUuMTk2ODUgMzAzLjk4MzM2IDQyNS4xOTY4NSAzMTEuODExMDIgTCA0MjUuMTk2ODUg
MzExLjgxMTAyIEMgNDI1LjE5Njg1IDMxOS42Mzg2OCA0MTguODUxMjggMzI1Ljk4NDI1IDQxMS4w
MjM2MiAzMjUuOTg0MjUgTCAyNDAuOTQ0ODggMzI1Ljk4NDI1IEMgMjMzLjExNzIyIDMyNS45ODQy
NSAyMjYuNzcxNjUgMzE5LjYzODY4IDIyNi43NzE2NSAzMTEuODExMDIgTCAyMjYuNzcxNjUgMzEx
LjgxMTAyIEMgMjI2Ljc3MTY1IDMwMy45ODMzNiAyMzMuMTE3MjIgMjk3LjYzNzggMjQwLjk0NDg4
IDI5Ny42Mzc4IFoiIGZpbGw9IiNkYWRhZGEiLz48cGF0aCBkPSJNIDI0MC45NDQ4OCAyOTcuNjM3
OCBMIDQxMS4wMjM2MiAyOTcuNjM3OCBDIDQxOC44NTEyOCAyOTcuNjM3OCA0MjUuMTk2ODUgMzAz
Ljk4MzM2IDQyNS4xOTY4NSAzMTEuODExMDIgTCA0MjUuMTk2ODUgMzExLjgxMTAyIEMgNDI1LjE5
Njg1IDMxOS42Mzg2OCA0MTguODUxMjggMzI1Ljk4NDI1IDQxMS4wMjM2MiAzMjUuOTg0MjUgTCAy
NDAuOTQ0ODggMzI1Ljk4NDI1IEMgMjMzLjExNzIyIDMyNS45ODQyNSAyMjYuNzcxNjUgMzE5LjYz
ODY4IDIyNi43NzE2NSAzMTEuODExMDIgTCAyMjYuNzcxNjUgMzExLjgxMTAyIEMgMjI2Ljc3MTY1
IDMwMy45ODMzNiAyMzMuMTE3MjIgMjk3LjYzNzggMjQwLjk0NDg4IDI5Ny42Mzc4IFoiIHN0cm9r
ZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIg
c3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMjYuNzcxNjUg
MzA0LjgxMTAyKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXci
IGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI0OC44MDQzOTUiIHk9IjEwIiB0
ZXh0TGVuZ3RoPSIxMDAuODE2NDA2Ij5rZWVwYWxpdmVfcGluZzwvdHNwYW4+PC90ZXh0PjxsaW5l
IHgxPSIxOTguNDI1MiIgeTE9IjI1NS4xMTgxMSIgeDI9IjIxNC42MjE2NSIgeTI9IjI1NS4xMTgx
MSIgbWFya2VyLWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0
cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRo
PSIxLjUiLz48bGluZSB4MT0iMTk4LjQyNTIiIHkxPSIzMTEuODExMDIiIHgyPSIyMTUuMzcxNjUi
IHkyPSIzMTEuODExMDIiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXIpIiBzdHJv
a2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQi
IHN0cm9rZS13aWR0aD0iMS41Ii8+PC9nPjwvZz48L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy9kb2NzL2xpbWl0YXRpb25zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2xpbWl0
YXRpb25zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJkNmQz
MmIyZjYzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2xpbWl0YXRp
b25zLnJzdApAQCAtMCwwICsxLDEwIEBACitMaW1pdGF0aW9ucworLS0tLS0tLS0tLS0KKworVGhl
IGNsaWVudCBkb2Vzbid0IGF0dGVtcHQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlcmUgaXMgbm8gbW9y
ZSB0aGFuIG9uZQorY29ubmVjdGlvbiB0byBhIGdpdmVuIElQIGFkZHJlc3MgaW4gYSBDT05ORUNU
SU5HIHN0YXRlLgorCitUaGUgY2xpZW50IGRvZXNuJ3Qgc3VwcG9ydCBjb25uZWN0aW5nIHRocm91
Z2ggYSBwcm94eS4KKworVGhlcmUgaXMgbm8gd2F5IHRvIGZyYWdtZW50IG91dGdvaW5nIG1lc3Nh
Z2VzLiBBIG1lc3NhZ2UgaXMgYWx3YXlzIHNlbnQgaW4gYQorc2luZ2xlIGZyYW1lLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvcHJvdG9jb2wuZ3JhZmZsZSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy9kb2NzL3Byb3RvY29sLmdyYWZmbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kZjc2ZjQ5NjA3ZTUKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvZG9jcy9wcm90b2NvbC5ncmFmZmxlIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2RvY3MvcHJvdG9jb2wuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvcHJv
dG9jb2wuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTFiZmQ5
ODJiZTdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvcHJvdG9jb2wu
c3ZnCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
IHN0YW5kYWxvbmU9Im5vIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZH
IDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5k
dGQiPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2
MjQuMzQ2NDYgODIyLjM0NjQ2IiB3aWR0aD0iNjI0LjM0NjQ2cHQiIGhlaWdodD0iODIyLjM0NjQ2
cHQiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PG1ldGFkYXRh
PiBQcm9kdWNlZCBieSBPbW5pR3JhZmZsZSA2LjYuMiA8ZGM6ZGF0ZT4yMDE5LTA3LTA3IDA4OjM4
OjI0ICswMDAwPC9kYzpkYXRlPjwvbWV0YWRhdGE+PGRlZnM+PGZvbnQtZmFjZSBmb250LWZhbWls
eT0iVmVyZGFuYSIgZm9udC1zaXplPSIxMiIgcGFub3NlLTE9IjIgMTEgNiA0IDMgNSA0IDQgMiA0
IiB1bml0cy1wZXItZW09IjEwMDAiIHVuZGVybGluZS1wb3NpdGlvbj0iLTg3Ljg5MDYyNSIgdW5k
ZXJsaW5lLXRoaWNrbmVzcz0iNTguNTkzNzUiIHNsb3BlPSIwIiB4LWhlaWdodD0iNTQ1LjQxMDE2
IiBjYXAtaGVpZ2h0PSI3MjcuMDUwOCIgYXNjZW50PSIxMDA1LjM3MTEiIGRlc2NlbnQ9Ii0yMDku
OTYwOTQiIGZvbnQtd2VpZ2h0PSI1MDAiPjxmb250LWZhY2Utc3JjPjxmb250LWZhY2UtbmFtZSBu
YW1lPSJWZXJkYW5hIi8+PC9mb250LWZhY2Utc3JjPjwvZm9udC1mYWNlPjxmb250LWZhY2UgZm9u
dC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBwYW5vc2UtMT0iMiA3IDMgOSAy
IDIgNSAyIDQgNCIgdW5pdHMtcGVyLWVtPSIxMDAwIiB1bmRlcmxpbmUtcG9zaXRpb249Ii0yMzIu
OTEwMTYiIHVuZGVybGluZS10aGlja25lc3M9IjQxLjAxNTYyNSIgc2xvcGU9IjAiIHgtaGVpZ2h0
PSI0MjIuODUxNTYiIGNhcC1oZWlnaHQ9IjU3MS4yODkwNiIgYXNjZW50PSI4MzIuNTE5NTMiIGRl
c2NlbnQ9Ii0zMDAuMjkyOTciIGZvbnQtd2VpZ2h0PSI1MDAiPjxmb250LWZhY2Utc3JjPjxmb250
LWZhY2UtbmFtZSBuYW1lPSJDb3VyaWVyTmV3UFNNVCIvPjwvZm9udC1mYWNlLXNyYz48L2ZvbnQt
ZmFjZT48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIg
cGFub3NlLTE9IjIgNyA2IDkgMiAyIDUgMiA0IDQiIHVuaXRzLXBlci1lbT0iMTAwMCIgdW5kZXJs
aW5lLXBvc2l0aW9uPSItMjMyLjkxMDE2IiB1bmRlcmxpbmUtdGhpY2tuZXNzPSIxMDAuMDk3NjU2
IiBzbG9wZT0iMCIgeC1oZWlnaHQ9IjQ0My4zNTkzOCIgY2FwLWhlaWdodD0iNTkxLjc5Njg4IiBh
c2NlbnQ9IjgzMi41MTk1MyIgZGVzY2VudD0iLTMwMC4yOTI5NyIgZm9udC13ZWlnaHQ9ImJvbGQi
Pjxmb250LWZhY2Utc3JjPjxmb250LWZhY2UtbmFtZSBuYW1lPSJDb3VyaWVyTmV3UFMtQm9sZE1U
Ii8+PC9mb250LWZhY2Utc3JjPjwvZm9udC1mYWNlPjxmb250LWZhY2UgZm9udC1mYW1pbHk9IkNv
dXJpZXIgTmV3IiBmb250LXNpemU9IjEwIiBwYW5vc2UtMT0iMiA3IDMgOSAyIDIgNSAyIDQgNCIg
dW5pdHMtcGVyLWVtPSIxMDAwIiB1bmRlcmxpbmUtcG9zaXRpb249Ii0yMzIuOTEwMTYiIHVuZGVy
bGluZS10aGlja25lc3M9IjQxLjAxNTYyNSIgc2xvcGU9IjAiIHgtaGVpZ2h0PSI0MjIuODUxNTYi
IGNhcC1oZWlnaHQ9IjU3MS4yODkwNiIgYXNjZW50PSI4MzIuNTE5NTMiIGRlc2NlbnQ9Ii0zMDAu
MjkyOTciIGZvbnQtd2VpZ2h0PSI1MDAiPjxmb250LWZhY2Utc3JjPjxmb250LWZhY2UtbmFtZSBu
YW1lPSJDb3VyaWVyTmV3UFNNVCIvPjwvZm9udC1mYWNlLXNyYz48L2ZvbnQtZmFjZT48bWFya2Vy
IG9yaWVudD0iYXV0byIgb3ZlcmZsb3c9InZpc2libGUiIG1hcmtlclVuaXRzPSJzdHJva2VXaWR0
aCIgaWQ9IlN0aWNrQXJyb3dfTWFya2VyIiB2aWV3Qm94PSItMSAtNCA4IDgiIG1hcmtlcldpZHRo
PSI4IiBtYXJrZXJIZWlnaHQ9IjgiIGNvbG9yPSJibGFjayI+PGc+PHBhdGggZD0iTSA1Ljg2NjY2
NjcgMCBMIDAgMCBNIDAgLTIuMiBMIDUuODY2NjY2NyAwIEwgMCAyLjIiIGZpbGw9Im5vbmUiIHN0
cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiLz48L2c+PC9tYXJrZXI+PHJhZGlh
bEdyYWRpZW50IGN4PSIwIiBjeT0iMCIgcj0iMSIgaWQ9IkdyYWRpZW50IiBncmFkaWVudFVuaXRz
PSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJ3aGl0ZSIvPjxz
dG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2E1YTVhNSIvPjwvcmFkaWFsR3JhZGllbnQ+PHJh
ZGlhbEdyYWRpZW50IGlkPSJPYmpfR3JhZGllbnQiIHhsOmhyZWY9IiNHcmFkaWVudCIgZ3JhZGll
bnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgzMTEuODExMDIgNzA4LjY2MTQpIHNjYWxlKDE0NS43NTcw
MykiLz48bWFya2VyIG9yaWVudD0iYXV0byIgb3ZlcmZsb3c9InZpc2libGUiIG1hcmtlclVuaXRz
PSJzdHJva2VXaWR0aCIgaWQ9IlN0aWNrQXJyb3dfTWFya2VyXzIiIHZpZXdCb3g9Ii0xIC02IDE0
IDEyIiBtYXJrZXJXaWR0aD0iMTQiIG1hcmtlckhlaWdodD0iMTIiIGNvbG9yPSJibGFjayI+PGc+
PHBhdGggZD0iTSAxMiAwIEwgMCAwIE0gMCAtNC41IEwgMTIgMCBMIDAgNC41IiBmaWxsPSJub25l
IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIi8+PC9nPjwvbWFya2VyPjxt
YXJrZXIgb3JpZW50PSJhdXRvIiBvdmVyZmxvdz0idmlzaWJsZSIgbWFya2VyVW5pdHM9InN0cm9r
ZVdpZHRoIiBpZD0iU3RpY2tBcnJvd19NYXJrZXJfMyIgdmlld0JveD0iLTEgLTQgOCA4IiBtYXJr
ZXJXaWR0aD0iOCIgbWFya2VySGVpZ2h0PSI4IiBjb2xvcj0iYmxhY2siPjxnPjxwYXRoIGQ9Ik0g
NS45MjUzMzMzIDAgTCAwIDAgTSAwIC0yLjIyMiBMIDUuOTI1MzMzMyAwIEwgMCAyLjIyMiIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L21h
cmtlcj48L2RlZnM+PGcgc3Ryb2tlPSJub25lIiBzdHJva2Utb3BhY2l0eT0iMSIgc3Ryb2tlLWRh
c2hhcnJheT0ibm9uZSIgZmlsbD0ibm9uZSIgZmlsbC1vcGFjaXR5PSIxIj48dGl0bGU+Q2FudmFz
IDE8L3RpdGxlPjxyZWN0IGZpbGw9IndoaXRlIiB3aWR0aD0iMTMxNCIgaGVpZ2h0PSIxNjk4Ii8+
PGc+PHRpdGxlPkxheWVyIDE8L3RpdGxlPjxyZWN0IHg9IjI4LjM0NjQ1NyIgeT0iNzY1LjM1NDMz
IiB3aWR0aD0iNTY2LjkyOTEzIiBoZWlnaHQ9IjI4LjM0NjQ1NyIgZmlsbD0iIzZjZiIvPjxyZWN0
IHg9IjI4LjM0NjQ1NyIgeT0iNzY1LjM1NDMzIiB3aWR0aD0iNTY2LjkyOTEzIiBoZWlnaHQ9IjI4
LjM0NjQ1NyIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGlu
ZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNs
YXRlKDMzLjM0NjQ1NyA3NzIuMDI3NTUpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5
PSJWZXJkYW5hIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSIyMjguNTA3NTMi
IHk9IjEyIiB0ZXh0TGVuZ3RoPSI5OS45MTQwNiI+cmVtb3RlIGVuZHBvaW50PC90c3Bhbj48L3Rl
eHQ+PHJlY3QgeD0iMjguMzQ2NDU3IiB5PSI4NS4wMzkzNyIgd2lkdGg9IjU2Ni45MjkxMyIgaGVp
Z2h0PSI1NjYuOTI5MTMiIGZpbGw9IndoaXRlIi8+PHJlY3QgeD0iMjguMzQ2NDU3IiB5PSI4NS4w
MzkzNyIgd2lkdGg9IjU2Ni45MjkxMyIgaGVpZ2h0PSI1NjYuOTI5MTMiIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdp
ZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMy4zNDY0NTcgOTAuMDM5Mzcp
IiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9IjEy
IiBmb250LXdlaWdodD0iNTAwIiB4PSIyNDMuNzkxNzEiIHk9IjEyIiB0ZXh0TGVuZ3RoPSI1MS4z
MzM5ODQiPndlYnNvY2s8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iVmVyZGFuYSIgZm9udC1z
aXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMjk1LjAwODUxIiB5PSIxMiIgdGV4dExlbmd0
aD0iMTguMTI4OTA2Ij5ldHM8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXci
IGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjE5NS42NTEwOSIgeT0iMjUiIHRl
eHRMZW5ndGg9IjE2NS42MjY5NSI+V2ViU29ja2V0Q29tbW9uUHJvdG9jb2w8L3RzcGFuPjwvdGV4
dD48cmVjdCB4PSIyOC4zNDY0NTciIHk9IjI4LjM0NjQ1NyIgd2lkdGg9IjU2Ni45MjkxMyIgaGVp
Z2h0PSIyOC4zNDY0NTciIGZpbGw9IiM2ZjYiLz48cmVjdCB4PSIyOC4zNDY0NTciIHk9IjI4LjM0
NjQ1NyIgd2lkdGg9IjU2Ni45MjkxMyIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdp
ZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMy4zNDY0NTcgMzUuMDE5Njg1
KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iVmVyZGFuYSIgZm9udC1zaXplPSIx
MiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMjMwLjAwNDYiIHk9IjEyIiB0ZXh0TGVuZ3RoPSI5Ni45
MTk5MiI+YXBwbGljYXRpb24gbG9naWM8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDEwMi4wNDcy
NDMgNTg2Ljc3MTY1IEwgMjM4LjExMDIzIDU4Ni43NzE2NSBDIDI0Ny40OTg1OCA1ODYuNzcxNjUg
MjU1LjExODExIDU5Ni45MzEwMiAyNTUuMTE4MTEgNjA5LjQ0ODggQyAyNTUuMTE4MTEgNjIxLjk2
NjYgMjQ3LjQ5ODU4IDYzMi4xMjU5OCAyMzguMTEwMjMgNjMyLjEyNTk4IEwgMTAyLjA0NzI0MyA2
MzIuMTI1OTggQyA5Mi42NTg4OTcgNjMyLjEyNTk4IDg1LjAzOTM3IDYyMS45NjY2IDg1LjAzOTM3
IDYwOS40NDg4IEMgODUuMDM5MzcgNTk2LjkzMTAyIDkyLjY1ODg5NyA1ODYuNzcxNjUgMTAyLjA0
NzI0MyA1ODYuNzcxNjUiIGZpbGw9IiNmYzYiLz48cGF0aCBkPSJNIDEwMi4wNDcyNDMgNTg2Ljc3
MTY1IEwgMjM4LjExMDIzIDU4Ni43NzE2NSBDIDI0Ny40OTg1OCA1ODYuNzcxNjUgMjU1LjExODEx
IDU5Ni45MzEwMiAyNTUuMTE4MTEgNjA5LjQ0ODggQyAyNTUuMTE4MTEgNjIxLjk2NjYgMjQ3LjQ5
ODU4IDYzMi4xMjU5OCAyMzguMTEwMjMgNjMyLjEyNTk4IEwgMTAyLjA0NzI0MyA2MzIuMTI1OTgg
QyA5Mi42NTg4OTcgNjMyLjEyNTk4IDg1LjAzOTM3IDYyMS45NjY2IDg1LjAzOTM3IDYwOS40NDg4
IEMgODUuMDM5MzcgNTk2LjkzMTAyIDkyLjY1ODg5NyA1ODYuNzcxNjUgMTAyLjA0NzI0MyA1ODYu
NzcxNjUgTSAyMzguMTEwMjMgNTg2Ljc3MTY1IEMgMjI4LjcyMTg5IDU4Ni43NzE2NSAyMjEuMTAy
MzYgNTk2LjkzMTAyIDIyMS4xMDIzNiA2MDkuNDQ4OCBDIDIyMS4xMDIzNiA2MjEuOTY2NiAyMjgu
NzIxODkgNjMyLjEyNTk4IDIzOC4xMTAyMyA2MzIuMTI1OTgiIHN0cm9rZT0iYmxhY2siIHN0cm9r
ZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIx
LjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjUuMzMwNzEgNTk2Ljk0ODgpIiBmaWxs
PSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIg
Zm9udC13ZWlnaHQ9ImJvbGQiIHg9IjE0Ljg5NjQ4NCIgeT0iMTAiIHRleHRMZW5ndGg9IjQzLjIw
NzAzIj5yZWFkZXI8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQt
c2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9Ii40OTQxNDA2MiIgeT0iMjIiIHRleHRMZW5n
dGg9IjcyLjAxMTcyIj5TdHJlYW1SZWFkZXI8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDM4NS41
MTE4IDU4Ni43NzE2NSBMIDUyMS41NzQ4IDU4Ni43NzE2NSBDIDUzMC45NjMxNSA1ODYuNzcxNjUg
NTM4LjU4MjY3IDU5Ni45MzEwMiA1MzguNTgyNjcgNjA5LjQ0ODggQyA1MzguNTgyNjcgNjIxLjk2
NjYgNTMwLjk2MzE1IDYzMi4xMjU5OCA1MjEuNTc0OCA2MzIuMTI1OTggTCAzODUuNTExOCA2MzIu
MTI1OTggQyAzNzYuMTIzNDYgNjMyLjEyNTk4IDM2OC41MDM5MyA2MjEuOTY2NiAzNjguNTAzOTMg
NjA5LjQ0ODggQyAzNjguNTAzOTMgNTk2LjkzMTAyIDM3Ni4xMjM0NiA1ODYuNzcxNjUgMzg1LjUx
MTggNTg2Ljc3MTY1IiBmaWxsPSIjZmM2Ii8+PHBhdGggZD0iTSAzODUuNTExOCA1ODYuNzcxNjUg
TCA1MjEuNTc0OCA1ODYuNzcxNjUgQyA1MzAuOTYzMTUgNTg2Ljc3MTY1IDUzOC41ODI2NyA1OTYu
OTMxMDIgNTM4LjU4MjY3IDYwOS40NDg4IEMgNTM4LjU4MjY3IDYyMS45NjY2IDUzMC45NjMxNSA2
MzIuMTI1OTggNTIxLjU3NDggNjMyLjEyNTk4IEwgMzg1LjUxMTggNjMyLjEyNTk4IEMgMzc2LjEy
MzQ2IDYzMi4xMjU5OCAzNjguNTAzOTMgNjIxLjk2NjYgMzY4LjUwMzkzIDYwOS40NDg4IEMgMzY4
LjUwMzkzIDU5Ni45MzEwMiAzNzYuMTIzNDYgNTg2Ljc3MTY1IDM4NS41MTE4IDU4Ni43NzE2NSBN
IDUyMS41NzQ4IDU4Ni43NzE2NSBDIDUxMi4xODY0NSA1ODYuNzcxNjUgNTA0LjU2NjkzIDU5Ni45
MzEwMiA1MDQuNTY2OTMgNjA5LjQ0ODggQyA1MDQuNTY2OTMgNjIxLjk2NjYgNTEyLjE4NjQ1IDYz
Mi4xMjU5OCA1MjEuNTc0OCA2MzIuMTI1OTgiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2Fw
PSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4
dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDguNzk1MjcgNTk2Ljk0ODgpIiBmaWxsPSJibGFjayI+
PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWln
aHQ9ImJvbGQiIHg9IjE0Ljg5NjQ4NCIgeT0iMTAiIHRleHRMZW5ndGg9IjQzLjIwNzAzIj53cml0
ZXI8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAi
IGZvbnQtd2VpZ2h0PSI1MDAiIHg9Ii40OTQxNDA2MiIgeT0iMjIiIHRleHRMZW5ndGg9IjcyLjAx
MTcyIj5TdHJlYW1Xcml0ZXI8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDQ4MS44ODk3NiA0MTku
NTI3NTYgTCA0ODEuODg5NzYgMzc0LjE3MzIzIEMgNDgxLjg4OTc2IDM3MS4wNDM3OCA0NjkuMTkw
NTUgMzY4LjUwMzkzIDQ1My41NDMzIDM2OC41MDM5MyBDIDQzNy44OTYwNiAzNjguNTAzOTMgNDI1
LjE5Njg1IDM3MS4wNDM3OCA0MjUuMTk2ODUgMzc0LjE3MzIzIEwgNDI1LjE5Njg1IDQxOS41Mjc1
NiBDIDQyNS4xOTY4NSA0MjIuNjU3IDQzNy44OTYwNiA0MjUuMTk2ODUgNDUzLjU0MzMgNDI1LjE5
Njg1IEMgNDY5LjE5MDU1IDQyNS4xOTY4NSA0ODEuODg5NzYgNDIyLjY1NyA0ODEuODg5NzYgNDE5
LjUyNzU2IiBmaWxsPSIjZmVjYzY2Ii8+PHBhdGggZD0iTSA0ODEuODg5NzYgNDE5LjUyNzU2IEwg
NDgxLjg4OTc2IDM3NC4xNzMyMyBDIDQ4MS44ODk3NiAzNzEuMDQzNzggNDY5LjE5MDU1IDM2OC41
MDM5MyA0NTMuNTQzMyAzNjguNTAzOTMgQyA0MzcuODk2MDYgMzY4LjUwMzkzIDQyNS4xOTY4NSAz
NzEuMDQzNzggNDI1LjE5Njg1IDM3NC4xNzMyMyBMIDQyNS4xOTY4NSA0MTkuNTI3NTYgQyA0MjUu
MTk2ODUgNDIyLjY1NyA0MzcuODk2MDYgNDI1LjE5Njg1IDQ1My41NDMzIDQyNS4xOTY4NSBDIDQ2
OS4xOTA1NSA0MjUuMTk2ODUgNDgxLjg4OTc2IDQyMi42NTcgNDgxLjg4OTc2IDQxOS41Mjc1NiBN
IDQ4MS44ODk3NiAzNzQuMTczMjMgQyA0ODEuODg5NzYgMzc3LjMwMjY3IDQ2OS4xOTA1NSAzNzku
ODQyNTIgNDUzLjU0MzMgMzc5Ljg0MjUyIEMgNDM3Ljg5NjA2IDM3OS44NDI1MiA0MjUuMTk2ODUg
Mzc3LjMwMjY3IDQyNS4xOTY4NSAzNzQuMTczMjMiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5l
Y2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNzUiLz48
dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjkuMTk2ODUgMzg3LjE4NTA0KSIgZmlsbD0iYmxh
Y2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQt
d2VpZ2h0PSI1MDAiIHg9IjYuMzQzNTI3IiB5PSIxMCIgdGV4dExlbmd0aD0iMzYuMDA1ODYiPnBp
bmdzPC90c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEw
IiBmb250LXdlaWdodD0iNTAwIiB4PSIxMi4zNDQ1MDM0IiB5PSIyMiIgdGV4dExlbmd0aD0iMjQu
MDAzOTA2Ij5kaWN0PC90c3Bhbj48L3RleHQ+PHBhdGggZD0iTSA4NS4wMzk0MTMgMjgzLjQ2NDU3
IEwgMjU1LjExODA2IDI4My40NjQ1NyBDIDI3MC43NzM0IDI4My40NjQ1NyAyODMuNDY0NTcgMjk2
LjE1NTczIDI4My40NjQ1NyAzMTEuODExMDcgTCAyODMuNDY0NTcgNDgxLjg4OTcyIEMgMjgzLjQ2
NDU3IDQ5Ny41NDUwNiAyNzAuNzczNCA1MTAuMjM2MjIgMjU1LjExODA2IDUxMC4yMzYyMiBMIDg1
LjAzOTQxMyA1MTAuMjM2MjIgQyA2OS4zODQwNzQgNTEwLjIzNjIyIDU2LjY5MjkxMyA0OTcuNTQ1
MDYgNTYuNjkyOTEzIDQ4MS44ODk3MiBMIDU2LjY5MjkxMyAzMTEuODExMDcgQyA1Ni42OTI5MTMg
Mjk2LjE1NTczIDY5LjM4NDA3NCAyODMuNDY0NTcgODUuMDM5NDEzIDI4My40NjQ1NyBaIiBmaWxs
PSIjZGFkYWRhIi8+PHBhdGggZD0iTSA4NS4wMzk0MTMgMjgzLjQ2NDU3IEwgMjU1LjExODA2IDI4
My40NjQ1NyBDIDI3MC43NzM0IDI4My40NjQ1NyAyODMuNDY0NTcgMjk2LjE1NTczIDI4My40NjQ1
NyAzMTEuODExMDcgTCAyODMuNDY0NTcgNDgxLjg4OTcyIEMgMjgzLjQ2NDU3IDQ5Ny41NDUwNiAy
NzAuNzczNCA1MTAuMjM2MjIgMjU1LjExODA2IDUxMC4yMzYyMiBMIDg1LjAzOTQxMyA1MTAuMjM2
MjIgQyA2OS4zODQwNzQgNTEwLjIzNjIyIDU2LjY5MjkxMyA0OTcuNTQ1MDYgNTYuNjkyOTEzIDQ4
MS44ODk3MiBMIDU2LjY5MjkxMyAzMTEuODExMDcgQyA1Ni42OTI5MTMgMjk2LjE1NTczIDY5LjM4
NDA3NCAyODMuNDY0NTcgODUuMDM5NDEzIDI4My40NjQ1NyBaIiBzdHJva2U9ImJsYWNrIiBzdHJv
a2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0i
MS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEuNjkyOTEzIDI4OC40NjQ1NykiIGZp
bGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEy
IiBmb250LXdlaWdodD0iYm9sZCIgeD0iNDMuNTc1MjgiIHk9IjEwIiB0ZXh0TGVuZ3RoPSIxMjku
NjIxMDkiPnRyYW5zZmVyX2RhdGFfdGFzazwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3Vy
aWVyIE5ldyIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iOTYuMzgzODczIiB5
PSIyMiIgdGV4dExlbmd0aD0iMjQuMDAzOTA2Ij5UYXNrPC90c3Bhbj48L3RleHQ+PHBhdGggZD0i
TSAyOTcuNjM3OCA3NjUuMzU0MzMgTCAyOTcuNjM3OCA2MDkuNDQ4OCBMIDI1NS4xMTgxMSA2MDku
NDQ4OCBMIDI2OS4wMTgxMSA2MDkuNDQ4OCBMIDI2Ni41MTgxMSA2MDkuNDQ4OCIgbWFya2VyLWVu
ZD0idXJsKCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2Fw
PSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0
aCBkPSJNIDM2OC41MDM5MyA2MDkuNDQ4OCBMIDM1NC42MDM5MyA2MDkuNDQ4OCBMIDMyNS45ODQy
NSA2MDkuNDQ4OCBMIDMyNS45ODQyNSA3NTMuOTU0MzMiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tB
cnJvd19NYXJrZXIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9r
ZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTSAyMDcuMDM0
MDEgNzEyLjMxNTQgQyAxNjEuMjIwNDcgNzA4LjY2MTQgMTc5LjQ4OTc2IDY3Ny45MDA5NyAyNTIu
NTcyNiA2ODMuMTQ5NiBDIDI1OS4zNTMwNyA2NzIuOTE4MzUgMzQ0LjMzODU4IDY3NC41NzkgMzQz
Ljc4MyA2ODMuMTQ5NiBDIDM5Ny4wNzE1IDY3Mi4xODc3IDQ2NS4xNzEwMiA2OTQuMDQ1NTMgNDE5
LjQ5MzU0IDcwNS4wMDc0NCBDIDQ3NC4zMDQyNSA3MTAuMzIyMDYgNDE4LjgwMTg5IDczOC45NTY1
IDM3My44MTg5IDczNC4xNzMyMiBDIDM3MC4yMTg5IDc0Mi4xNDU4NCAyODkuODAyODMgNzQ0Ljkz
NTggMjgyLjc0NDU3IDczNC4xNzMyMiBDIDIzNy4yMDg4MiA3NDUuNjY3MTUgMTQyLjI1OTUzIDcy
Ny45OTQ2IDIwNy4wMzQwMSA3MTIuMzE1NCBaIiBmaWxsPSJ1cmwoI09ial9HcmFkaWVudCkiLz48
cGF0aCBkPSJNIDIwNy4wMzQwMSA3MTIuMzE1NCBDIDE2MS4yMjA0NyA3MDguNjYxNCAxNzkuNDg5
NzYgNjc3LjkwMDk3IDI1Mi41NzI2IDY4My4xNDk2IEMgMjU5LjM1MzA3IDY3Mi45MTgzNSAzNDQu
MzM4NTggNjc0LjU3OSAzNDMuNzgzIDY4My4xNDk2IEMgMzk3LjA3MTUgNjcyLjE4NzcgNDY1LjE3
MTAyIDY5NC4wNDU1MyA0MTkuNDkzNTQgNzA1LjAwNzQ0IEMgNDc0LjMwNDI1IDcxMC4zMjIwNiA0
MTguODAxODkgNzM4Ljk1NjUgMzczLjgxODkgNzM0LjE3MzIyIEMgMzcwLjIxODkgNzQyLjE0NTg0
IDI4OS44MDI4MyA3NDQuOTM1OCAyODIuNzQ0NTcgNzM0LjE3MzIyIEMgMjM3LjIwODgyIDc0NS42
NjcxNSAxNDIuMjU5NTMgNzI3Ljk5NDYgMjA3LjAzNDAxIDcxMi4zMTU0IFoiIHN0cm9rZT0iYmxh
Y2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tl
LXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTcuNTk4NDIgNzAxLjE2
MTQpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9
IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSI2OS44MTQxNiIgeT0iMTIiIHRleHRMZW5ndGg9IjQ4
Ljc5Njg3NSI+bmV0d29yazwvdHNwYW4+PC90ZXh0PjxyZWN0IHg9Ijg1LjAzOTM3IiB5PSI0NTMu
NTQzMyIgd2lkdGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIGZpbGw9IiNmZjYiLz48
cmVjdCB4PSI4NS4wMzkzNyIgeT0iNDUzLjU0MzMiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdodD0i
MjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1s
aW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoOTAuMDM5MzcgNDYwLjcxNjUzKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWls
eT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI0NC4w
MzM1MSIgeT0iMTAiIHRleHRMZW5ndGg9IjcyLjAxMTcyIj5yZWFkX2ZyYW1lPC90c3Bhbj48L3Rl
eHQ+PHJlY3QgeD0iODUuMDM5MzciIHk9IjM5Ni44NTA0IiB3aWR0aD0iMTcwLjA3ODc0IiBoZWln
aHQ9IjI4LjM0NjQ1NyIgZmlsbD0iI2ZmNiIvPjxyZWN0IHg9Ijg1LjAzOTM3IiB5PSIzOTYuODUw
NCIgd2lkdGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxhY2siIHN0
cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRo
PSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5MC4wMzkzNyA0MDQuMDIzNjIpIiBm
aWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIx
MiIgZm9udC13ZWlnaHQ9ImJvbGQiIHg9IjI2LjAzMDU4IiB5PSIxMCIgdGV4dExlbmd0aD0iMTA4
LjAxNzU4Ij5yZWFkX2RhdGFfZnJhbWU8L3RzcGFuPjwvdGV4dD48cmVjdCB4PSI4NS4wMzkzNyIg
eT0iMzQwLjE1NzQ4IiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIgZmlsbD0i
I2ZmNiIvPjxyZWN0IHg9Ijg1LjAzOTM3IiB5PSIzNDAuMTU3NDgiIHdpZHRoPSIxNzAuMDc4NzQi
IGhlaWdodD0iMjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQi
IHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoOTAuMDM5MzcgMzQ3LjMzMDcpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZv
bnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9ImJvbGQi
IHg9IjM2LjgzMjMzOCIgeT0iMTAiIHRleHRMZW5ndGg9Ijg2LjQxNDA2Ij5yZWFkX21lc3NhZ2U8
L3RzcGFuPjwvdGV4dD48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzguMDc4NzQgNDkwLjU2
MykiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNp
emU9IjEwIiBmb250LXdlaWdodD0iNTAwIiB4PSIwIiB5PSI4IiB0ZXh0TGVuZ3RoPSIzMC4wMDQ4
ODMiPmJ5dGVzPC90c3Bhbj48L3RleHQ+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTc4LjA3
ODc0IDQzMy44NzAwOCkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIg
TmV3IiBmb250LXNpemU9IjEwIiBmb250LXdlaWdodD0iNTAwIiB4PSIwIiB5PSI4IiB0ZXh0TGVu
Z3RoPSIzNi4wMDU4NiI+ZnJhbWVzPC90c3Bhbj48L3RleHQ+PHRleHQgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoMTc4LjA3ODc0IDM3MS42NzcxNikiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1p
bHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEwIiBmb250LXdlaWdodD0iNTAwIiB4PSIwIiB5
PSI4IiB0ZXh0TGVuZ3RoPSIyNC4wMDM5MDYiPmRhdGE8L3RzcGFuPjx0c3BhbiBmb250LWZhbWls
eT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjAiIHk9
IjE5IiB0ZXh0TGVuZ3RoPSIzNi4wMDU4NiI+ZnJhbWVzPC90c3Bhbj48L3RleHQ+PHJlY3QgeD0i
MzY4LjUwMzkzIiB5PSI1MTAuMjM2MjIiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2
NDU3IiBmaWxsPSIjZmY2Ii8+PHJlY3QgeD0iMzY4LjUwMzkzIiB5PSI1MTAuMjM2MjIiIHdpZHRo
PSIxNzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGlu
ZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+
PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzczLjUwMzkzIDUxNy40MDk0NSkiIGZpbGw9ImJs
YWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250
LXdlaWdodD0iYm9sZCIgeD0iNDAuNDMyOTI0IiB5PSIxMCIgdGV4dExlbmd0aD0iNzkuMjEyODki
PndyaXRlX2ZyYW1lPC90c3Bhbj48L3RleHQ+PHBhdGggZD0iTSA4NS4wMzkzNyA2MDkuNDQ4OCBM
IDcxLjEzOTM3IDYwOS40NDg4IEwgNTYuNjkyOTEzIDYwOS40NDg4IEwgNTYuNjkyOTEzIDU5NS4y
NzU2IEwgNTYuNjkyOTEzIDU2Ni45MjkxMyBMIDExMy4zODU4MjYgNTY2LjkyOTEzIEwgMTcwLjA3
ODc0IDU2Ni45MjkxMyBMIDE3MC4wNzg3NCA0OTUuNzg5NzYgTCAxNzAuMDc4NzQgNDk0LjAzOTc2
IiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJibGFjayIgc3Ry
b2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9
IjEuNSIvPjxwYXRoIGQ9Ik0gNDUzLjU0MzMgNTM5LjMzMjY3IEwgNDUzLjU0MzMgNTUyLjQ4MjY3
IEwgNDUzLjU0MzMgNTY2LjkyOTEzIEwgNTEwLjIzNjIyIDU2Ni45MjkxMyBMIDU2OS43NjM3OCA1
NjYuOTI5MTMgTCA1NjkuNzYzNzggNTk1LjI3NTYgTCA1NjkuNzYzNzggNjA5LjQ0ODggTCA1NTIu
NDgyNjcgNjA5LjQ0ODggTCA1NDkuOTgyNjcgNjA5LjQ0ODgiIG1hcmtlci1lbmQ9InVybCgjU3Rp
Y2tBcnJvd19NYXJrZXIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0
cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PGxpbmUgeDE9IjE3MC4w
Nzg3NCIgeTE9IjQ1My41NDMzIiB4Mj0iMTcwLjA3ODc0IiB5Mj0iNDM3LjM0Njg1IiBtYXJrZXIt
ZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVj
YXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxs
aW5lIHgxPSIxNzAuMDc4NzQiIHkxPSIzOTYuODUwNCIgeDI9IjE3MC4wNzg3NCIgeTI9IjM4MC42
NTM5MyIgbWFya2VyLWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdp
ZHRoPSIxLjUiLz48cGF0aCBkPSJNIDEwMi4wNDcyNDMgMjA0LjA5NDQ5IEwgMjM4LjExMDIzIDIw
NC4wOTQ0OSBDIDI0Ny40OTg1OCAyMDQuMDk0NDkgMjU1LjExODExIDIxNC4yNTM4NiAyNTUuMTE4
MTEgMjI2Ljc3MTY1IEMgMjU1LjExODExIDIzOS4yODk0NSAyNDcuNDk4NTggMjQ5LjQ0ODgyIDIz
OC4xMTAyMyAyNDkuNDQ4ODIgTCAxMDIuMDQ3MjQzIDI0OS40NDg4MiBDIDkyLjY1ODg5NyAyNDku
NDQ4ODIgODUuMDM5MzcgMjM5LjI4OTQ1IDg1LjAzOTM3IDIyNi43NzE2NSBDIDg1LjAzOTM3IDIx
NC4yNTM4NiA5Mi42NTg4OTcgMjA0LjA5NDQ5IDEwMi4wNDcyNDMgMjA0LjA5NDQ5IiBmaWxsPSIj
ZmM2Ii8+PHBhdGggZD0iTSAxMDIuMDQ3MjQzIDIwNC4wOTQ0OSBMIDIzOC4xMTAyMyAyMDQuMDk0
NDkgQyAyNDcuNDk4NTggMjA0LjA5NDQ5IDI1NS4xMTgxMSAyMTQuMjUzODYgMjU1LjExODExIDIy
Ni43NzE2NSBDIDI1NS4xMTgxMSAyMzkuMjg5NDUgMjQ3LjQ5ODU4IDI0OS40NDg4MiAyMzguMTEw
MjMgMjQ5LjQ0ODgyIEwgMTAyLjA0NzI0MyAyNDkuNDQ4ODIgQyA5Mi42NTg4OTcgMjQ5LjQ0ODgy
IDg1LjAzOTM3IDIzOS4yODk0NSA4NS4wMzkzNyAyMjYuNzcxNjUgQyA4NS4wMzkzNyAyMTQuMjUz
ODYgOTIuNjU4ODk3IDIwNC4wOTQ0OSAxMDIuMDQ3MjQzIDIwNC4wOTQ0OSBNIDIzOC4xMTAyMyAy
MDQuMDk0NDkgQyAyMjguNzIxODkgMjA0LjA5NDQ5IDIyMS4xMDIzNiAyMTQuMjUzODYgMjIxLjEw
MjM2IDIyNi43NzE2NSBDIDIyMS4xMDIzNiAyMzkuMjg5NDUgMjI4LjcyMTg5IDI0OS40NDg4MiAy
MzguMTEwMjMgMjQ5LjQ0ODgyIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQi
IHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoMTMyLjMzMDcxIDIxNC4yNzE2NSkiIGZpbGw9ImJsYWNrIj48dHNwYW4g
Zm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9s
ZCIgeD0iLjE5NTMxMjUiIHk9IjEwIiB0ZXh0TGVuZ3RoPSI1Ny42MDkzNzUiPm1lc3NhZ2VzPC90
c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEwIiBmb250
LXdlaWdodD0iNTAwIiB4PSIxMy45OTc1NTkiIHk9IjIyIiB0ZXh0TGVuZ3RoPSIzMC4wMDQ4ODMi
PmRlcXVlPC90c3Bhbj48L3RleHQ+PHBhdGggZD0iTSAyNTUuMTE4MTEgMzU0LjMzMDcgTCAyNjku
MDE4MTEgMzU0LjMzMDcgTCAyOTcuNjM3OCAzNTQuMzMwNyBMIDI5Ny42Mzc4IDMyOC44MTg5IEwg
Mjk3LjYzNzggMjI2Ljc3MTY1IEwgMjY5LjAxODExIDIyNi43NzE2NSBMIDI2Ni41MTgxMSAyMjYu
NzcxNjUiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXIpIiBzdHJva2U9ImJsYWNr
IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13
aWR0aD0iMS41Ii8+PHJlY3QgeD0iODUuMDM5MzciIHk9IjE0MS43MzIyOCIgd2lkdGg9IjE3MC4w
Nzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIGZpbGw9IiNjZjYiLz48cmVjdCB4PSI4NS4wMzkzNyIg
eT0iMTQxLjczMjI4IiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIgc3Ryb2tl
PSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBz
dHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDkwLjAzOTM3IDE0
OC45MDU1MSkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBm
b250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iNjUuNjM3MDI2IiB5PSIxMCIgdGV4
dExlbmd0aD0iMjguODA0Njg4Ij5yZWN2PC90c3Bhbj48L3RleHQ+PHBhdGggZD0iTSA4NS4wMzkz
NyAyMjYuNzcxNjUgTCA3MS4xMzkzNyAyMjYuNzcxNjUgTCA0Mi41MTk2ODUgMjI2Ljc3MTY1IEwg
NDIuNTE5Njg1IDIwOS43NjM3OCBMIDQyLjUxOTY4NSAxNTUuOTA1NTEgTCA3MS4xMzkzNyAxNTUu
OTA1NTEgTCA3My42MzkzNyAxNTUuOTA1NTEiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19N
YXJrZXIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5l
am9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PGxpbmUgeDE9IjE3MC4wNzg3NCIgeTE9
IjE0MS43MzIyOCIgeDI9IjE3MC4wNzg3NCIgeTI9IjY4LjA5MjkxMyIgbWFya2VyLWVuZD0idXJs
KCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48bGluZSB4MT0i
NDUzLjU0MzMiIHkxPSI1Ni42OTI5MTMiIHgyPSI0NTMuNTQzMyIgeTI9IjEzMC4zMzIyOCIgbWFy
a2VyLWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUi
Lz48bGluZSB4MT0iNDY3LjcxNjUzIiB5MT0iNTYuNjkyOTEzIiB4Mj0iNDY3LjcxNjUzIiB5Mj0i
MTg3Ljg3NTIiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXJfMikiIHN0cm9rZT0i
YmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ry
b2tlLXdpZHRoPSIuNzUiLz48bGluZSB4MT0iNDgxLjg4OTc2IiB5MT0iNTYuNjkyOTEzIiB4Mj0i
NDgxLjg4OTc2IiB5Mj0iMjQ0LjU2ODExIiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFy
a2VyXzIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5l
am9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjc1Ii8+PGxpbmUgeDE9IjQ5Ni4wNjMiIHkxPSI1
Ni42OTI5MTMiIHgyPSI0OTYuMDYzIiB5Mj0iMzAwLjMyMzAyIiBtYXJrZXItZW5kPSJ1cmwoI1N0
aWNrQXJyb3dfTWFya2VyXzMpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQi
IHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHJlY3QgeD0iMzY4
LjUwMzkzIiB5PSIxNDEuNzMyMjgiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2NDU3
IiBmaWxsPSIjY2Y2Ii8+PHJlY3QgeD0iMzY4LjUwMzkzIiB5PSIxNDEuNzMyMjgiIHdpZHRoPSIx
NzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNh
cD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRl
eHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzczLjUwMzkzIDE0OC45MDU1MSkiIGZpbGw9ImJsYWNr
Ij48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdl
aWdodD0iYm9sZCIgeD0iNjUuNjM3MDI2IiB5PSIxMCIgdGV4dExlbmd0aD0iMjguODA0Njg4Ij5z
ZW5kPC90c3Bhbj48L3RleHQ+PHJlY3QgeD0iMzY4LjUwMzkzIiB5PSIxOTguNDI1MiIgd2lkdGg9
IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIGZpbGw9IiNjZjYiLz48cmVjdCB4PSIzNjgu
NTAzOTMiIHk9IjE5OC40MjUyIiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiBzdHJva2Utd2lkdGg9Ii43NSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3My41
MDM5MyAyMDUuNTk4NDIpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVy
IE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iNjUuNjM3MDI2IiB5PSIx
MCIgdGV4dExlbmd0aD0iMjguODA0Njg4Ij5waW5nPC90c3Bhbj48L3RleHQ+PHJlY3QgeD0iMzY4
LjUwMzkzIiB5PSIyNTUuMTE4MTEiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2NDU3
IiBmaWxsPSIjY2Y2Ii8+PHJlY3QgeD0iMzY4LjUwMzkzIiB5PSIyNTUuMTE4MTEiIHdpZHRoPSIx
NzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNh
cD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjc1Ii8+PHRl
eHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzczLjUwMzkzIDI2Mi4yOTEzNCkiIGZpbGw9ImJsYWNr
Ij48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdl
aWdodD0iNTAwIiB4PSI2NS42MzcwMjYiIHk9IjEwIiB0ZXh0TGVuZ3RoPSIyOC44MDQ2ODgiPnBv
bmc8L3RzcGFuPjwvdGV4dD48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjMxMS44MTEwMiIgd2lkdGg9
IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIGZpbGw9IiNjZjYiLz48cmVjdCB4PSIzNjgu
NTAzOTMiIHk9IjMxMS44MTEwMiIgd2lkdGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTci
IHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJy
b3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzMu
NTAzOTMgMzE4Ljk4NDI1KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmll
ciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI2Mi4wMzY0NCIgeT0i
MTAiIHRleHRMZW5ndGg9IjM2LjAwNTg2Ij5jbG9zZTwvdHNwYW4+PC90ZXh0PjxwYXRoIGQ9Ik0g
NTM4LjU4MjY3IDE1NS45MDU1MSBMIDU1Mi40ODI2NyAxNTUuOTA1NTEgTCA1NjYuOTI5MTMgMTU1
LjkwNTUxIEwgNTY2LjkyOTEzIDQ4MS44ODk3NiBMIDQ1My41NDMzIDQ4MS44ODk3NiBMIDQ1My41
NDMzIDQ5Ni4zMzYyMiBMIDQ1My41NDMzIDQ5OC4wODYyMiIgbWFya2VyLWVuZD0idXJsKCNTdGlj
a0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ry
b2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48bGluZSB4MT0iNTM4LjU4
MjY3IiB5MT0iMjEyLjU5ODQyIiB4Mj0iNTY2LjkyOTEzIiB5Mj0iMjEyLjU5ODQyIiBzdHJva2U9
ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0
cm9rZS13aWR0aD0iLjc1Ii8+PGxpbmUgeDE9IjUzOC41ODI2NyIgeTE9IjI2OS4yOTEzNCIgeDI9
IjU2Ni45MjkxMyIgeTI9IjI2OS4yOTEzNCIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9
InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9Ii43NSIvPjxsaW5l
IHgxPSI1MzguNTgyNjciIHkxPSIzMjUuOTg0MjUiIHgyPSI1NjYuOTI5MTMiIHkyPSIzMjUuOTg0
MjUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2lu
PSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNIDI1NS44NjgxMSA0MTEuMDIz
NjIgTCAyNjIuNjE4MTEgNDExLjAyMzYyIEwgMzQwLjE1NzQ4IDQxMS4wMjM2MiBMIDM0MC4xNTc0
OCA0ODEuODg5NzYgTCA0NTMuNTQzMyA0ODEuODg5NzYiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUi
Lz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOTEuOTQ1MjcgMzk5LjAyMzYyKSIgZmlsbD0i
YmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAiIGZv
bnQtd2VpZ2h0PSI1MDAiIHg9IjAiIHk9IjgiIHRleHRMZW5ndGg9IjQyLjAwNjgzNiI+Y29udHJv
bDwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMCIg
Zm9udC13ZWlnaHQ9IjUwMCIgeD0iMCIgeT0iMjEiIHRleHRMZW5ndGg9IjM2LjAwNTg2Ij5mcmFt
ZXM8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzQwLjE1NzQ4IiB5MT0iNDExLjAyMzYyIiB4Mj0i
NDE0LjY0Njg1IiB5Mj0iNDExLjAyMzYyIiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFy
a2VyXzIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5l
am9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjc1Ii8+PHBhdGggZD0iTSAzNjguNTAzOTMgMjEy
LjU5ODQyIEwgMzYxLjc1MzkzIDIxMi41OTg0MiBMIDM0MC4xNTc0OCAyMTIuNTk4NDIgTCAzNDAu
MTU3NDggMzQwLjE1NzQ4IEwgMzQwLjE1NzQ4IDM4Mi42NzcxNiIgc3Ryb2tlPSJibGFjayIgc3Ry
b2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9
Ii43NSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ2MS41NDMzIDU0Ny4yNTU5KSIgZmls
bD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAi
IGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjAiIHk9IjgiIHRleHRMZW5ndGg9IjMwLjAwNDg4MyI+Ynl0
ZXM8L3RzcGFuPjwvdGV4dD48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NjEuNTQzMyA0OTAu
NTYzKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQt
c2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjAiIHk9IjgiIHRleHRMZW5ndGg9IjM2LjAw
NTg2Ij5mcmFtZXM8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzQwLjE1NzQ4IiB5MT0iMzgyLjY3
NzE2IiB4Mj0iNDE0LjY0Njg1IiB5Mj0iMzgyLjY3NzE2IiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNr
QXJyb3dfTWFya2VyXzIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0
cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjc1Ii8+PC9nPjwvZz48L3N2Zz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3JlcXVpcmVtZW50cy50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvZG9jcy9yZXF1aXJlbWVudHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMGVhZjk0ZmJlOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2RvY3MvcmVxdWlyZW1lbnRzLnR4dApAQCAtMCwwICsxLDQgQEAKK3NwaGlueAor
c3BoaW54LWF1dG9kb2MtdHlwZWhpbnRzCitzcGhpbnhjb250cmliLXNwZWxsaW5nCitzcGhpbnhj
b250cmliLXRyaW8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3NlY3VyaXR5LnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3NlY3VyaXR5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmU5YWNmMDYyOWM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2Vic29ja2V0cy9kb2NzL3NlY3VyaXR5LnJzdApAQCAtMCwwICsxLDM5IEBACitTZWN1cml0
eQorPT09PT09PT0KKworRW5jcnlwdGlvbgorLS0tLS0tLS0tLQorCitGb3IgcHJvZHVjdGlvbiB1
c2UsIGEgc2VydmVyIHNob3VsZCByZXF1aXJlIGVuY3J5cHRlZCBjb25uZWN0aW9ucy4KKworU2Vl
IHRoaXMgZXhhbXBsZSBvZiA6cmVmOmBlbmNyeXB0aW5nIGNvbm5lY3Rpb25zIHdpdGggVExTCis8
c2VjdXJlLXNlcnZlci1leGFtcGxlPmAuCisKK01lbW9yeSB1c2UKKy0tLS0tLS0tLS0KKworLi4g
d2FybmluZzo6CisKKyAgICBBbiBhdHRhY2tlciB3aG8gY2FuIG9wZW4gYW4gYXJiaXRyYXJ5IG51
bWJlciBvZiBjb25uZWN0aW9ucyB3aWxsIGJlIGFibGUKKyAgICB0byBwZXJmb3JtIGEgZGVuaWFs
IG9mIHNlcnZpY2UgYnkgbWVtb3J5IGV4aGF1c3Rpb24uIElmIHlvdSdyZSBjb25jZXJuZWQKKyAg
ICBieSBkZW5pYWwgb2Ygc2VydmljZSBhdHRhY2tzLCB5b3UgbXVzdCByZWplY3Qgc3VzcGljaW91
cyBjb25uZWN0aW9ucworICAgIGJlZm9yZSB0aGV5IHJlYWNoIGBgd2Vic29ja2V0c2BgLCB0eXBp
Y2FsbHkgaW4gYSByZXZlcnNlIHByb3h5LgorCitXaXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBv
cGVuaW5nIGEgY29ubmVjdGlvbiB1c2VzIDMyNcKgS2lCIG9mIG1lbW9yeS4KKworU2VuZGluZyBz
b21lIGhpZ2hseSBjb21wcmVzc2VkIG1lc3NhZ2VzIGNvdWxkIHVzZSB1cCB0byAxMjjCoE1pQiBv
ZiBtZW1vcnkKK3dpdGggYW4gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwMCBiZXR3ZWVuIG5l
dHdvcmsgdHJhZmZpYyBhbmQgbWVtb3J5IHVzZS4KKworQ29uZmlndXJpbmcgYSBzZXJ2ZXIgdG8g
OnJlZjpgb3B0aW1pemUgbWVtb3J5IHVzYWdlIDxtZW1vcnktdXNhZ2U+YCB3aWxsCitpbXByb3Zl
IHNlY3VyaXR5IGluIGFkZGl0aW9uIHRvIGltcHJvdmluZyBwZXJmb3JtYW5jZS4KKworT3RoZXIg
bGltaXRzCistLS0tLS0tLS0tLS0KKworYGB3ZWJzb2NrZXRzYGAgaW1wbGVtZW50cyBhZGRpdGlv
bmFsIGxpbWl0cyBvbiB0aGUgYW1vdW50IG9mIGRhdGEgaXQgYWNjZXB0cworaW4gb3JkZXIgdG8g
bWluaW1pemUgZXhwb3N1cmUgdG8gc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLgorCitJbiB0aGUg
b3BlbmluZyBoYW5kc2hha2UsIGBgd2Vic29ja2V0c2BgIGxpbWl0cyB0aGUgbnVtYmVyIG9mIEhU
VFAgaGVhZGVycyB0bworMjU2IGFuZCB0aGUgc2l6ZSBvZiBhbiBpbmRpdmlkdWFsIGhlYWRlciB0
byA0MDk2IGJ5dGVzLiBUaGVzZSBsaW1pdHMgYXJlIDEwIHRvCisyMCB0aW1lcyBsYXJnZXIgdGhh
biB3aGF0J3MgZXhwZWN0ZWQgaW4gc3RhbmRhcmQgdXNlIGNhc2VzLiBUaGV5J3JlIGhhcmQtY29k
ZWQuCitJZiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlbSwgbW9ua2V5LXBhdGNoIHRoZSBjb25zdGFu
dHMgaW4gYGB3ZWJzb2NrZXRzLmh0dHBgYC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9k
b2NzL3NwZWxsaW5nX3dvcmRsaXN0LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3NwZWxsaW5n
X3dvcmRsaXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFl
YWNjNDkxZGY3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3NwZWxs
aW5nX3dvcmRsaXN0LnR4dApAQCAtMCwwICsxLDM5IEBACithdHRyCithdWd1c3RpbgorQXV0aAor
YXdhaXRhYmxlCitheW1lcmljCitiYWNrcHJlc3N1cmUKK0JhY2twcmVzc3VyZQorQml0Y29pbgor
YnVmZmVyYmxvYXQKK0J1ZmZlcmJsb2F0CitidWdmaXgKK2J5dGVzdHJpbmcKK2J5dGVzdHJpbmdz
CitjaGFuZ2Vsb2cKK2NyeXB0b2N1cnJlbmN5CitkYWVtb25pemUKK2ZyYWN0YWxpZGVhcworaXRl
cmFibGUKK2tlZXBhbGl2ZQorS2lCCitsaWZlY3ljbGUKK0xpZmVjeWNsZQorTWlCCituZ2lueAor
cGVybWVzc2FnZQorcG9uZworcG9uZ3MKK1B5dGhvbmljCitzZXJpYWxpemVycworc3ViY2xhc3Np
bmcKK3N1YnByb3RvY29sCitzdWJwcm90b2NvbHMKK1RMUworVW5wYXJzZQordXBsZQordXNlcm5h
bWUKK3dlYnNvY2tldAorV2ViU29ja2V0Cit3ZWJzb2NrZXRzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvZG9jcy90aWRlbGlmdC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy90aWRlbGlm
dC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40M2I0NTdhYWZh
OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy90aWRlbGlmdC5yc3QK
QEAgLTAsMCArMSwxMTIgQEAKK3dlYnNvY2tldHMgZm9yIGVudGVycHJpc2UKKz09PT09PT09PT09
PT09PT09PT09PT09PT0KKworQXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIFRpZGVsaWZ0IFN1YnNj
cmlwdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisuLiBpbWFnZTo6IF9zdGF0aWMvdGlkZWxpZnQucG5nCisgICA6aGVpZ2h0OiAxNTBweAorICAg
OndpZHRoOiAxNTBweAorICAgOmFsaWduOiBsZWZ0CisKK1RpZGVsaWZ0IGlzIHdvcmtpbmcgd2l0
aCB0aGUgbWFpbnRhaW5lcnMgb2Ygd2Vic29ja2V0cyBhbmQgdGhvdXNhbmRzIG9mIG90aGVyCitv
cGVuIHNvdXJjZSBwcm9qZWN0cyB0byBkZWxpdmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBhbmQgbWFp
bnRlbmFuY2UgZm9yIHRoZQorb3BlbiBzb3VyY2UgZGVwZW5kZW5jaWVzIHlvdSB1c2UgdG8gYnVp
bGQgeW91ciBhcHBsaWNhdGlvbnMuIFNhdmUgdGltZSwgcmVkdWNlCityaXNrLCBhbmQgaW1wcm92
ZSBjb2RlIGhlYWx0aCwgd2hpbGUgcGF5aW5nIHRoZSBtYWludGFpbmVycyBvZiB0aGUgZXhhY3QK
K2RlcGVuZGVuY2llcyB5b3UgdXNlLgorCisuLiByYXc6OiBodG1sCisKKyAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAudGlkZWxpZnQtbGlua3MgeworICAgICAgIGRpc3BsYXk6IGZsZXg7
CisgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICB9CisgICBAbWVkaWEgb25seSBz
Y3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSAgeworICAgICAgIC50aWRlbGlmdC1saW5rcyB7
CisgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CisgICAgICAgfQorICAgfQorICAg
LnRpZGVsaWZ0LWxpbmtzIGEgeworICAgICAgIGJvcmRlcjogdGhpbiBzb2xpZCAjZjY5MTRkOwor
ICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVlbTsKKyAgICAgICBmb250LWZhbWlseTogVmVyZGFu
YSwgc2Fucy1zZXJpZjsKKyAgICAgICBmb250LXNpemU6IDE1cHg7CisgICAgICAgbWFyZ2luOiAw
LjVlbSAyZW07CisgICAgICAgcGFkZGluZzogMC41ZW0gMmVtOworICAgICAgIHRleHQtYWxpZ246
IGNlbnRlcjsKKyAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgICAgdGV4dC10cmFu
c2Zvcm06IHVwcGVyY2FzZTsKKyAgIH0KKyAgIC50aWRlbGlmdC1saW5rcyBhLnRpZGVsaWZ0LWxp
bmtzX19sZWFybi1tb3JlIHsKKyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICAg
ICBjb2xvcjogI2Y2OTE0ZDsKKyAgIH0KKyAgIC50aWRlbGlmdC1saW5rcyBhLnRpZGVsaWZ0LWxp
bmtzX19yZXF1ZXN0LWEtZGVtbyB7CisgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y2OTE0ZDsK
KyAgICAgICBjb2xvcjogd2hpdGU7CisgICB9CisgICA8L3N0eWxlPgorCisgICA8ZGl2IGNsYXNz
PSJ0aWRlbGlmdC1saW5rcyI+CisgICA8YSBjbGFzcz0idGlkZWxpZnQtbGlua3NfX2xlYXJuLW1v
cmUiIGhyZWY9Imh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcHlwaS13ZWJz
b2NrZXRzP3V0bV9zb3VyY2U9cHlwaS13ZWJzb2NrZXRzJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRt
X2NhbXBhaWduPWVudGVycHJpc2UiPkxlYXJuIG1vcmU8L2E+CisgICA8YSBjbGFzcz0idGlkZWxp
ZnQtbGlua3NfX3JlcXVlc3QtYS1kZW1vIiBocmVmPSJodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJz
Y3JpcHRpb24vcmVxdWVzdC1hLWRlbW8/dXRtX3NvdXJjZT1weXBpLXdlYnNvY2tldHMmdXRtX21l
ZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZSI+UmVxdWVzdCBhIGRlbW88L2E+
CisgICA8L2Rpdj4KKworRW50ZXJwcmlzZS1yZWFkeSBvcGVuIHNvdXJjZSBzb2Z0d2FyZeKAlG1h
bmFnZWQgZm9yIHlvdQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworVGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbiBpcyBhIG1hbmFnZWQgb3Bl
biBzb3VyY2Ugc3Vic2NyaXB0aW9uIGZvcgorYXBwbGljYXRpb24gZGVwZW5kZW5jaWVzIGNvdmVy
aW5nIG1pbGxpb25zIG9mIG9wZW4gc291cmNlIHByb2plY3RzIGFjcm9zcworSmF2YVNjcmlwdCwg
UHl0aG9uLCBKYXZhLCBQSFAsIFJ1YnksIC5ORVQsIGFuZCBtb3JlLgorCitZb3VyIHN1YnNjcmlw
dGlvbiBpbmNsdWRlczoKKworKiAqKlNlY3VyaXR5IHVwZGF0ZXMqKgorCisgICogVGlkZWxpZnTi
gJlzIHNlY3VyaXR5IHJlc3BvbnNlIHRlYW0gY29vcmRpbmF0ZXMgcGF0Y2hlcyBmb3IgbmV3IGJy
ZWFraW5nCisgICAgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGFuZCBhbGVydHMgaW1tZWRpYXRl
bHkgdGhyb3VnaCBhIHByaXZhdGUgY2hhbm5lbCwKKyAgICBzbyB5b3VyIHNvZnR3YXJlIHN1cHBs
eSBjaGFpbiBpcyBhbHdheXMgc2VjdXJlLgorCisqICoqTGljZW5zaW5nIHZlcmlmaWNhdGlvbiBh
bmQgaW5kZW1uaWZpY2F0aW9uKioKKworICAqIFRpZGVsaWZ0IHZlcmlmaWVzIGxpY2Vuc2UgaW5m
b3JtYXRpb24gdG8gZW5hYmxlIGVhc3kgcG9saWN5IGVuZm9yY2VtZW50CisgICAgYW5kIGFkZHMg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZGVtbmlmaWNhdGlvbiB0byBjb3ZlciBjcmVhdG9ycyBh
bmQgdXNlcnMKKyAgICBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIHdyb25nLiBZb3UgYWx3YXlzIGhh
dmUgYSAxMDAlIHVwLXRvLWRhdGUgYmlsbCBvZgorICAgIG1hdGVyaWFscyBmb3IgeW91ciBkZXBl
bmRlbmNpZXMgdG8gc2hhcmUgd2l0aCB5b3VyIGxlZ2FsIHRlYW0sIGN1c3RvbWVycywKKyAgICBv
ciBwYXJ0bmVycy4KKworKiAqKk1haW50ZW5hbmNlIGFuZCBjb2RlIGltcHJvdmVtZW50KioKKwor
ICAqIFRpZGVsaWZ0IGVuc3VyZXMgdGhlIHNvZnR3YXJlIHlvdSByZWx5IG9uIGtlZXBzIHdvcmtp
bmcgYXMgbG9uZyBhcyB5b3UKKyAgICBuZWVkIGl0IHRvIHdvcmsuIFlvdXIgbWFuYWdlZCBkZXBl
bmRlbmNpZXMgYXJlIGFjdGl2ZWx5IG1haW50YWluZWQgYW5kIHdlCisgICAgcmVjcnVpdCBhZGRp
dGlvbmFsIG1haW50YWluZXJzIHdoZXJlIHJlcXVpcmVkLgorCisqICoqUGFja2FnZSBzZWxlY3Rp
b24gYW5kIHZlcnNpb24gZ3VpZGFuY2UqKgorCisgICogV2UgaGVscCB5b3UgY2hvb3NlIHRoZSBi
ZXN0IG9wZW4gc291cmNlIHBhY2thZ2VzIGZyb20gdGhlIHN0YXJ04oCUYW5kIHRoZW4KKyAgICBn
dWlkZSB5b3UgdGhyb3VnaCB1cGRhdGVzIHRvIHN0YXkgb24gdGhlIGJlc3QgcmVsZWFzZXMgYXMg
bmV3IGlzc3VlcworICAgIGFyaXNlLgorCisqICoqUm9hZG1hcCBpbnB1dCoqCisKKyAgKiBUYWtl
IGEgc2VhdCBhdCB0aGUgdGFibGUgd2l0aCB0aGUgY3JlYXRvcnMgYmVoaW5kIHRoZSBzb2Z0d2Fy
ZSB5b3UgdXNlLgorICAgIFRpZGVsaWZ04oCZcyBwYXJ0aWNpcGF0aW5nIG1haW50YWluZXJzIGVh
cm4gbW9yZSBpbmNvbWUgYXMgdGhlaXIgc29mdHdhcmUgaXMKKyAgICB1c2VkIGJ5IG1vcmUgc3Vi
c2NyaWJlcnMsIHNvIHRoZXnigJlyZSBpbnRlcmVzdGVkIGluIGtub3dpbmcgd2hhdCB5b3UgbmVl
ZC4KKworKiAqKlRvb2xpbmcgYW5kIGNsb3VkIGludGVncmF0aW9uKioKKworICAqIFRpZGVsaWZ0
IHdvcmtzIHdpdGggR2l0SHViLCBHaXRMYWIsIEJpdEJ1Y2tldCwgYW5kIG1vcmUuIFdlIHN1cHBv
cnQgZXZlcnkKKyAgICBjbG91ZCBwbGF0Zm9ybSAoYW5kIG90aGVyIGRlcGxveW1lbnQgdGFyZ2V0
cywgdG9vKS4KKworVGhlIGVuZCByZXN1bHQ/IEFsbCBvZiB0aGUgY2FwYWJpbGl0aWVzIHlvdSBl
eHBlY3QgZnJvbSBjb21tZXJjaWFsLWdyYWRlCitzb2Z0d2FyZSwgZm9yIHRoZSBmdWxsIGJyZWFk
dGggb2Ygb3BlbiBzb3VyY2UgeW91IHVzZS4gVGhhdCBtZWFucyBsZXNzIHRpbWUKK2dyYXBwbGlu
ZyB3aXRoIGVzb3RlcmljIG9wZW4gc291cmNlIHRyaXZpYSwgYW5kIG1vcmUgdGltZSBidWlsZGlu
ZyB5b3VyIG93bgorYXBwbGljYXRpb25z4oCUYW5kIHlvdXIgYnVzaW5lc3MuCisKKy4uIHJhdzo6
IGh0bWwKKworICAgPGRpdiBjbGFzcz0idGlkZWxpZnQtbGlua3MiPgorICAgPGEgY2xhc3M9InRp
ZGVsaWZ0LWxpbmtzX19sZWFybi1tb3JlIiBocmVmPSJodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJz
Y3JpcHRpb24vcGtnL3B5cGktd2Vic29ja2V0cz91dG1fc291cmNlPXB5cGktd2Vic29ja2V0cyZ1
dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlIj5MZWFybiBtb3JlPC9h
PgorICAgPGEgY2xhc3M9InRpZGVsaWZ0LWxpbmtzX19yZXF1ZXN0LWEtZGVtbyIgaHJlZj0iaHR0
cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3JlcXVlc3QtYS1kZW1vP3V0bV9zb3VyY2U9
cHlwaS13ZWJzb2NrZXRzJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWVudGVycHJp
c2UiPlJlcXVlc3QgYSBkZW1vPC9hPgorICAgPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvZXhhbXBsZS9iYXNpY19hdXRoX2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFt
cGxlL2Jhc2ljX2F1dGhfY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uY2M5NGRiZTRiNDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2V4YW1wbGUvYmFzaWNfYXV0aF9jbGllbnQucHkKQEAgLTAsMCArMSwxNCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgV1MgY2xpZW50IGV4YW1wbGUgd2l0aCBIVFRQIEJhc2ljIEF1dGhl
bnRpY2F0aW9uCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgd2Vic29ja2V0cworCithc3luYyBk
ZWYgaGVsbG8oKToKKyAgICB1cmkgPSAid3M6Ly9tYXJ5OnBAc3N3MHJkQGxvY2FsaG9zdDo4NzY1
IgorICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5jb25uZWN0KHVyaSkgYXMgd2Vic29ja2V0Ogor
ICAgICAgICBncmVldGluZyA9IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKyAgICAgICAgcHJpbnQo
Z3JlZXRpbmcpCisKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUo
aGVsbG8oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2Jhc2ljX2F1dGhf
c2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvYmFzaWNfYXV0aF9zZXJ2ZXIucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NzQwZDU3OTg5YzkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9iYXNpY19hdXRoX3NlcnZl
ci5weQpAQCAtMCwwICsxLDIwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBTZXJ2ZXIg
ZXhhbXBsZSB3aXRoIEhUVFAgQmFzaWMgQXV0aGVudGljYXRpb24gb3ZlciBUTFMKKworaW1wb3J0
IGFzeW5jaW8KK2ltcG9ydCB3ZWJzb2NrZXRzCisKK2FzeW5jIGRlZiBoZWxsbyh3ZWJzb2NrZXQs
IHBhdGgpOgorICAgIGdyZWV0aW5nID0gZiJIZWxsbyB7d2Vic29ja2V0LnVzZXJuYW1lfSEiCisg
ICAgYXdhaXQgd2Vic29ja2V0LnNlbmQoZ3JlZXRpbmcpCisKK3N0YXJ0X3NlcnZlciA9IHdlYnNv
Y2tldHMuc2VydmUoCisgICAgaGVsbG8sICJsb2NhbGhvc3QiLCA4NzY1LAorICAgIGNyZWF0ZV9w
cm90b2NvbD13ZWJzb2NrZXRzLmJhc2ljX2F1dGhfcHJvdG9jb2xfZmFjdG9yeSgKKyAgICAgICAg
cmVhbG09ImV4YW1wbGUiLCBjcmVkZW50aWFscz0oIm1hcnkiLCAicEBzc3cwcmQiKQorICAgICks
CispCisKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUoc3RhcnRf
c2VydmVyKQorYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVyKCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9l
eGFtcGxlL2NsaWVudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjRmOTY5YzQ3OGFkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxl
L2NsaWVudC5weQpAQCAtMCwwICsxLDE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBX
UyBjbGllbnQgZXhhbXBsZQorCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IHdlYnNvY2tldHMKKwor
YXN5bmMgZGVmIGhlbGxvKCk6CisgICAgdXJpID0gIndzOi8vbG9jYWxob3N0Ojg3NjUiCisgICAg
YXN5bmMgd2l0aCB3ZWJzb2NrZXRzLmNvbm5lY3QodXJpKSBhcyB3ZWJzb2NrZXQ6CisgICAgICAg
IG5hbWUgPSBpbnB1dCgiV2hhdCdzIHlvdXIgbmFtZT8gIikKKworICAgICAgICBhd2FpdCB3ZWJz
b2NrZXQuc2VuZChuYW1lKQorICAgICAgICBwcmludChmIj4ge25hbWV9IikKKworICAgICAgICBn
cmVldGluZyA9IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKyAgICAgICAgcHJpbnQoZiI8IHtncmVl
dGluZ30iKQorCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKGhl
bGxvKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9jb3VudGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9jb3VudGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MzEwYzRhMTZkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZXhhbXBsZS9jb3VudGVyLmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPldlYlNvY2tl
dCBkZW1vPC90aXRsZT4KKyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAg
ICAgIGJvZHkgeworICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAiQ291cmllciBOZXciLCBz
YW5zLXNlcmlmOworICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC5idXR0b25zIHsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6
IDRlbTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OworICAgICAgICAgICAgICAgIGp1
c3RpZnktY29udGVudDogY2VudGVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmJ1dHRv
biwgLnZhbHVlIHsKKyAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTsKKyAgICAgICAgICAg
ICAgICBwYWRkaW5nOiAycmVtOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnJlbTsKKyAgICAg
ICAgICAgICAgICBib3JkZXI6IG1lZGl1bSBzb2xpZDsKKyAgICAgICAgICAgICAgICBtaW4taGVp
Z2h0OiAxZW07CisgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAxZW07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAuYnV0dG9uIHsKKyAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7
CisgICAgICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAubWludXMgeworICAgICAgICAgICAgICAgIGNvbG9yOiByZWQ7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAucGx1cyB7CisgICAgICAgICAgICAgICAgY29sb3I6IGdyZWVuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZhbHVlIHsKKyAgICAgICAgICAgICAgICBtaW4t
d2lkdGg6IDJlbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5zdGF0ZSB7CisgICAgICAg
ICAgICAgICAgZm9udC1zaXplOiAyZW07CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbnVzIGJ1dHRvbiI+LTwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idmFsdWUiPj88L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBs
dXMgYnV0dG9uIj4rPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJz
dGF0ZSI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0idXNlcnMiPj88L3NwYW4+IG9ubGluZQor
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBtaW51cyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5taW51cycpLAorICAgICAgICAgICAgICAgIHBsdXMg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGx1cycpLAorICAgICAgICAgICAgICAgIHZhbHVl
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnZhbHVlJyksCisgICAgICAgICAgICAgICAgdXNl
cnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudXNlcnMnKSwKKyAgICAgICAgICAgICAgICB3
ZWJzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo2Nzg5LyIpOworICAgICAg
ICAgICAgbWludXMub25jbGljayA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgICAg
IHdlYnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHthY3Rpb246ICdtaW51cyd9KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBwbHVzLm9uY2xpY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHsK
KyAgICAgICAgICAgICAgICB3ZWJzb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7YWN0aW9uOiAn
cGx1cyd9KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3ZWJzb2NrZXQub25tZXNzYWdl
ID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2Uo
ZXZlbnQuZGF0YSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnc3RhdGUnOgorICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWUudGV4dENvbnRlbnQgPSBkYXRhLnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VzZXJzJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZXJzLnRleHRDb250ZW50ID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGEuY291bnQudG9TdHJpbmcoKSArICIgdXNlciIgKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChkYXRhLmNvdW50ID09IDEgPyAiIiA6ICJzIikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1
bnN1cHBvcnRlZCBldmVudCIsIGRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2NvdW50ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhh
bXBsZS9jb3VudGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZGJiYmU1OTM1ODBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUv
Y291bnRlci5weQpAQCAtMCwwICsxLDY5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBX
UyBzZXJ2ZXIgZXhhbXBsZSB0aGF0IHN5bmNocm9uaXplcyBzdGF0ZSBhY3Jvc3MgY2xpZW50cwor
CitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgd2Vi
c29ja2V0cworCitsb2dnaW5nLmJhc2ljQ29uZmlnKCkKKworU1RBVEUgPSB7InZhbHVlIjogMH0K
KworVVNFUlMgPSBzZXQoKQorCisKK2RlZiBzdGF0ZV9ldmVudCgpOgorICAgIHJldHVybiBqc29u
LmR1bXBzKHsidHlwZSI6ICJzdGF0ZSIsICoqU1RBVEV9KQorCisKK2RlZiB1c2Vyc19ldmVudCgp
OgorICAgIHJldHVybiBqc29uLmR1bXBzKHsidHlwZSI6ICJ1c2VycyIsICJjb3VudCI6IGxlbihV
U0VSUyl9KQorCisKK2FzeW5jIGRlZiBub3RpZnlfc3RhdGUoKToKKyAgICBpZiBVU0VSUzogICMg
YXN5bmNpby53YWl0IGRvZXNuJ3QgYWNjZXB0IGFuIGVtcHR5IGxpc3QKKyAgICAgICAgbWVzc2Fn
ZSA9IHN0YXRlX2V2ZW50KCkKKyAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0KFt1c2VyLnNlbmQo
bWVzc2FnZSkgZm9yIHVzZXIgaW4gVVNFUlNdKQorCisKK2FzeW5jIGRlZiBub3RpZnlfdXNlcnMo
KToKKyAgICBpZiBVU0VSUzogICMgYXN5bmNpby53YWl0IGRvZXNuJ3QgYWNjZXB0IGFuIGVtcHR5
IGxpc3QKKyAgICAgICAgbWVzc2FnZSA9IHVzZXJzX2V2ZW50KCkKKyAgICAgICAgYXdhaXQgYXN5
bmNpby53YWl0KFt1c2VyLnNlbmQobWVzc2FnZSkgZm9yIHVzZXIgaW4gVVNFUlNdKQorCisKK2Fz
eW5jIGRlZiByZWdpc3Rlcih3ZWJzb2NrZXQpOgorICAgIFVTRVJTLmFkZCh3ZWJzb2NrZXQpCisg
ICAgYXdhaXQgbm90aWZ5X3VzZXJzKCkKKworCithc3luYyBkZWYgdW5yZWdpc3Rlcih3ZWJzb2Nr
ZXQpOgorICAgIFVTRVJTLnJlbW92ZSh3ZWJzb2NrZXQpCisgICAgYXdhaXQgbm90aWZ5X3VzZXJz
KCkKKworCithc3luYyBkZWYgY291bnRlcih3ZWJzb2NrZXQsIHBhdGgpOgorICAgICMgcmVnaXN0
ZXIod2Vic29ja2V0KSBzZW5kcyB1c2VyX2V2ZW50KCkgdG8gd2Vic29ja2V0CisgICAgYXdhaXQg
cmVnaXN0ZXIod2Vic29ja2V0KQorICAgIHRyeToKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNl
bmQoc3RhdGVfZXZlbnQoKSkKKyAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd2Vic29ja2V0
OgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMobWVzc2FnZSkKKyAgICAgICAgICAgIGlm
IGRhdGFbImFjdGlvbiJdID09ICJtaW51cyI6CisgICAgICAgICAgICAgICAgU1RBVEVbInZhbHVl
Il0gLT0gMQorICAgICAgICAgICAgICAgIGF3YWl0IG5vdGlmeV9zdGF0ZSgpCisgICAgICAgICAg
ICBlbGlmIGRhdGFbImFjdGlvbiJdID09ICJwbHVzIjoKKyAgICAgICAgICAgICAgICBTVEFURVsi
dmFsdWUiXSArPSAxCisgICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5X3N0YXRlKCkKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigidW5zdXBwb3J0ZWQg
ZXZlbnQ6IHt9IiwgZGF0YSkKKyAgICBmaW5hbGx5OgorICAgICAgICBhd2FpdCB1bnJlZ2lzdGVy
KHdlYnNvY2tldCkKKworCitzdGFydF9zZXJ2ZXIgPSB3ZWJzb2NrZXRzLnNlcnZlKGNvdW50ZXIs
ICJsb2NhbGhvc3QiLCA2Nzg5KQorCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGls
X2NvbXBsZXRlKHN0YXJ0X3NlcnZlcikKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9y
ZXZlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9lY2hvLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2V4YW1wbGUvZWNoby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmI3Y2EzOGQzMjFmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy9leGFtcGxlL2VjaG8ucHkKQEAgLTAsMCArMSwxMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgd2Vic29ja2V0cworCithc3luYyBkZWYgZWNo
byh3ZWJzb2NrZXQsIHBhdGgpOgorICAgIGFzeW5jIGZvciBtZXNzYWdlIGluIHdlYnNvY2tldDoK
KyAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmQobWVzc2FnZSkKKworc3RhcnRfc2VydmVyID0g
d2Vic29ja2V0cy5zZXJ2ZShlY2hvLCAibG9jYWxob3N0IiwgODc2NSkKKworYXN5bmNpby5nZXRf
ZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCithc3luY2lvLmdl
dF9ldmVudF9sb29wKCkucnVuX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2V4YW1wbGUvaGVhbHRoX2NoZWNrX3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxl
L2hlYWx0aF9jaGVja19zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi40MTcwNjNmY2U3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
ZXhhbXBsZS9oZWFsdGhfY2hlY2tfc2VydmVyLnB5CkBAIC0wLDAgKzEsMjIgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIFdTIGVjaG8gc2VydmVyIHdpdGggSFRUUCBlbmRwb2ludCBhdCAv
aGVhbHRoLworCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGh0dHAKK2ltcG9ydCB3ZWJzb2NrZXRz
CisKK2FzeW5jIGRlZiBoZWFsdGhfY2hlY2socGF0aCwgcmVxdWVzdF9oZWFkZXJzKToKKyAgICBp
ZiBwYXRoID09ICIvaGVhbHRoLyI6CisgICAgICAgIHJldHVybiBodHRwLkhUVFBTdGF0dXMuT0ss
IFtdLCBiIk9LXG4iCisKK2FzeW5jIGRlZiBlY2hvKHdlYnNvY2tldCwgcGF0aCk6CisgICAgYXN5
bmMgZm9yIG1lc3NhZ2UgaW4gd2Vic29ja2V0OgorICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2Vu
ZChtZXNzYWdlKQorCitzdGFydF9zZXJ2ZXIgPSB3ZWJzb2NrZXRzLnNlcnZlKAorICAgIGVjaG8s
ICJsb2NhbGhvc3QiLCA4NzY1LCBwcm9jZXNzX3JlcXVlc3Q9aGVhbHRoX2NoZWNrCispCisKK2Fz
eW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQor
YXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVyKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9leGFtcGxlL2hlbGxvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvaGVs
bG8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42YzljODM5ZDgy
N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9oZWxsby5weQpA
QCAtMCwwICsxLDEyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGFzeW5jaW8K
K2ltcG9ydCB3ZWJzb2NrZXRzCisKK2FzeW5jIGRlZiBoZWxsbygpOgorICAgIHVyaSA9ICJ3czov
L2xvY2FsaG9zdDo4NzY1IgorICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5jb25uZWN0KHVyaSkg
YXMgd2Vic29ja2V0OgorICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZCgiSGVsbG8gd29ybGQh
IikKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0LnJlY3YoKQorCithc3luY2lvLmdldF9ldmVudF9s
b29wKCkucnVuX3VudGlsX2NvbXBsZXRlKGhlbGxvKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvZXhhbXBsZS9sb2NhbGhvc3QucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvbG9j
YWxob3N0LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY5YTMw
YmE4ZjYzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2xvY2Fs
aG9zdC5wZW0KQEAgLTAsMCArMSw0OCBAQAorLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCitN
SUlFdkFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLWXdnZ1NpQWdFQUFvSUJBUURHOGlEYWs0
VUJwdXJJCitUV2pTZnFKMFlWRy9TNTZuaHN3ZWh1cENhSXp1MHhROHdxUFNzMzZoNXQxak1leEpQ
WmZ2d3l2RmpjVitoWXBqCitMTU0wd01KUHg5b0JRRWUwYnNtbEM2NmU4YUYwVXBTUXcxYVZmWW94
QTlCZWpnRXlyRk5FN2NSYlFOWUZFYi81CiszSGZxWktkRVFBMmZnUVNsWjBSVFJtTHJEK2w3MmlP
NW8yeGw1YnR0WHBxWVpCMlhPa3lPNzlqL3hXZHU5ekZFCitzZ1pKNXlzV2Jxb1JBR2dueGpkWVly
OURBUmQ4YklFL2hOM1NXN21EdDV2NExxQ0loR24xVm1yd3RUM2Q1QXVHCitRUHo0WUVibTB0NkdP
bG1GaklNWUg1WTdwQUxSVmZvSktSajZER05JUjFKaWNMK3dxTFY2NmtjVm5qOFdLYmxhCisyMGk3
ZlI3TkFnTUJBQUVDZ2dFQUc1eXZncWJHNXh2THFsRlVJeU1BV1RiSXFjeE5FT05jb1VBSWMzOGZV
R1pyCitnS05qS1hOUU9CaGEwZEcwQWRaU3FDeG1mdHpXZEdFRWZBOVNhSmY0WUNwVXo2ZWtUQjYw
VGZ2NUdJWmc2a3dyCis0b3U2RUxXRDRKbXU2ZkM3cWRUUkdkZ0dVTVFHOEYwdVQvZVJqUzY3S0hY
YmJpL3gvU01BRUs3TU8rUFJmQ2JqCisrSkd6UzlZbTltVXdlSU5Qb3RnakhkREd3d2QwMzlWV1lT
KzlBK1F1TksyN3AzenE0aHJXUmI0d3NoU0M4Zkt5CitvTG9lNE9RdDgxYW93cFg5azZtQVU2Tjh2
T21QOC9FY1FIWUMreUZJSURaQjJFbURQMDdSMUxVRUgzS0puem83CitwbENLMS9rWVBoWDBhMDVj
RWRUcFhkS2E3NEFsdlNSa1MxMXNHcWZVQVFLQmdRRGoxU1J2MEFVR3NIU0EwTFd4CithME5UMVpM
RVhDRzB1cWdkZ2gwc1RxSWVpclFzUFJPdzNreTRsSDVNYmprZlJlQXJGa2hIdTNNNktveXdFUHhF
Cit3YW5TUmgvdDFxY05qTk5aVXZGb1V6QUtWcGIzM1JMa0pwcE9UVkVXUHQrd3R5RGxmejFaQVh6
TVY2NnRBQ3J4CitIMmEzdjBaV1V6NkoreC9kRVNINVRUTkw0UUtCZ1FEZmlybWtucDQwOHB3QkUr
YnVsbmdLeTBRdlUwOUVuOEgwCit1dnFyOHE0akNYcUoxdFhvbjR3c0hnMnlGNEZhMzdTQ3BTbXZP
TklEd0p2Vldra1lMeUJIS09ucy9mV0NrVzNuCitoSWNZeDBxMmpnY29PTFUwdW9hTTlBclJYaEl4
b1dxVi9LR2tRek4rM3hYQzEvTXhaNU9oeXhCeGZQQ1BJWUlOCitZTjNNMXQvUWJRS0JnREltaHND
K0QzMHJkbG1zbDNJWVpGZWQyWkt6blEvRlRxQkFOZCs4NTE3RnRXZFBnbmdhCitWdFVDaXRLVUtL
ckRuTmFmTHdYck16QUlrYk5uNmIvUXlXcnAyTGxuMkpuWTkrVGZweGdKeDdkZTNCaHZaMnNsCitQ
QzRrUXNjY3kreUFReE9CY0tXWStEbWF5MjUxYlA1cXBSZXBXUGhEbHE2VXdxek15cWV2NEt6QkFv
R0FXRE1pCitJRU85WkdLOUR1Zk5YQ0hlWjFQZ0tWUVRtSjM0SnhtSFFrVFVWRnF2RUtmRmFxMVkz
eWRVZkFvdUxhN0tTQ25tCitrbzQydnVoR0ZCNDFiT2RiTXZoL285Um9CQVpoZU5HZmhEVk4wMDJp
b1VvT3BTbGJZVTRBM3E3aE90ZlhlQ3BmCitsTEkzSlQzY0ZpNmljOEhNVERBVTR0SkxFQTVHaEFU
T1ByNGhQTmtDZ1lCOGpUWUdjTHZvZUZhTEV2ZWcwa1MyCitjejZaWEdMSng1bTFBT1F5NWc5RndH
YVcrMTBscjhURjJrM0FsZHdvaXdYMFI2c0hBZi85NDVhR1U4M21zNXY5CitQQjkveDY2QVl0U1JV
b3M5TXdCNHkxdXI0ZzZGaVhaVUJnVEpVcXp6Mm5laFBDeUdqWWhoNDlXdWNqc3pxY2pYCitjaFMx
YktaT1krMWtuV3E4eGo1UXlnPT0KKy0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVH
SU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRFRUQ0NBaldnQXdJQkFnSUpBT2p0ZTZsKzAzanZNQTBH
Q1NxR1NJYjNEUUVCQ3dVQU1Fd3hDekFKQmdOVgorQkFZVEFrWlNNUTR3REFZRFZRUUhEQVZRWVhK
cGN6RVpNQmNHQTFVRUNnd1FRWGx0WlhKcFl5QkJkV2QxYzNScAorYmpFU01CQUdBMVVFQXd3SmJH
OWpZV3hvYjNOME1DQVhEVEU0TURVd05URTJOVGt5T1ZvWUR6SXdOakF3TlRBMAorTVRZMU9USTVX
akJNTVFzd0NRWURWUVFHRXdKR1VqRU9NQXdHQTFVRUJ3d0ZVR0Z5YVhNeEdUQVhCZ05WQkFvTQor
RUVGNWJXVnlhV01nUVhWbmRYTjBhVzR4RWpBUUJnTlZCQU1NQ1d4dlkyRnNhRzl6ZERDQ0FTSXdE
UVlKS29aSQoraHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNYnlJTnFUaFFHbTZzaE5hTkor
b25SaFViOUxucWVHekI2RworNmtKb2pPN1RGRHpDbzlLemZxSG0zV014N0VrOWwrL0RLOFdOeFg2
RmltTXN3elRBd2svSDJnRkFSN1J1eWFVTAorcnA3eG9YUlNsSkREVnBWOWlqRUQwRjZPQVRLc1Uw
VHR4RnRBMWdVUnYvbmNkK3BrcDBSQURaK0JCS1ZuUkZORworWXVzUDZYdmFJN21qYkdYbHUyMWVt
cGhrSFpjNlRJN3YyUC9GWjI3M01VU3lCa25uS3hadXFoRUFhQ2ZHTjFoaQordjBNQkYzeHNnVCtF
M2RKYnVZTzNtL2d1b0lpRWFmVldhdkMxUGQza0M0WkEvUGhnUnViUzNvWTZXWVdNZ3hnZgorbGp1
a0F0RlYrZ2twR1BvTVkwaEhVbUp3djdDb3RYcnFSeFdlUHhZcHVWcmJTTHQ5SHMwQ0F3RUFBYU13
TUM0dworTEFZRFZSMFJCQ1V3STRJSmJHOWpZV3hvYjNOMGh3Ui9BQUFCaHhBQUFBQUFBQUFBQUFB
QUFBQUFBQUFCTUEwRworQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUM5VHNUeFRFdnFIUFVTNnNmdkY3
N2VHMEQ2SExPT05WTjkxSitMN0xpWAordjNiRmVTMXhiVVM2L3dJeFppNUVuQXQvdGU1dmFIay81
UTFVdnpuUVA0ajJnTm9NNmxIL0RSa1NBUnZSaXRWYworSDBxTjRYcDJZazFSOVZFeDRaZ0FyY3lN
cEkrR2hFNHZKUngxTEUvaHN1QXp3N0JBZHNUdDl6aWNzY05nMmZ4TworM2FvL2VCY2RhQzZuOWFG
WWRFNkNBRE1wQjFsQ1gyb1dOVmRqNklhdlFMdTdWTWMrV0ozUktuY3dDOXRoKzVPUAorSVNQdmtW
WldmMjVyUjJTVG12dmIwcUVtM0Naams0WGQ3TitneGJLS1V2ekVnUGpyTFNXektLSkFXSGpDTHVn
SQorL2tRcWhwaldWbFRidEt6V3o1YlZpcUNqU2JySVBwVTJNZ0c5QVVWOXkzaVYKKy0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3Nl
Y3VyZV9jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zZWN1cmVfY2xpZW50LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTQ5NzFiOTg0N2U4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2VjdXJlX2NsaWVudC5w
eQpAQCAtMCwwICsxLDI3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBXU1MgKFdTIG92
ZXIgVExTKSBjbGllbnQgZXhhbXBsZSwgd2l0aCBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlCisK
K2ltcG9ydCBhc3luY2lvCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHNzbAoraW1wb3J0IHdlYnNv
Y2tldHMKKworc3NsX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NM
SUVOVCkKK2xvY2FsaG9zdF9wZW0gPSBwYXRobGliLlBhdGgoX19maWxlX18pLndpdGhfbmFtZSgi
bG9jYWxob3N0LnBlbSIpCitzc2xfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMobG9jYWxo
b3N0X3BlbSkKKworYXN5bmMgZGVmIGhlbGxvKCk6CisgICAgdXJpID0gIndzczovL2xvY2FsaG9z
dDo4NzY1IgorICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5jb25uZWN0KAorICAgICAgICB1cmks
IHNzbD1zc2xfY29udGV4dAorICAgICkgYXMgd2Vic29ja2V0OgorICAgICAgICBuYW1lID0gaW5w
dXQoIldoYXQncyB5b3VyIG5hbWU/ICIpCisKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmQo
bmFtZSkKKyAgICAgICAgcHJpbnQoZiI+IHtuYW1lfSIpCisKKyAgICAgICAgZ3JlZXRpbmcgPSBh
d2FpdCB3ZWJzb2NrZXQucmVjdigpCisgICAgICAgIHByaW50KGYiPCB7Z3JlZXRpbmd9IikKKwor
YXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShoZWxsbygpKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2VjdXJlX3NlcnZlci5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9leGFtcGxlL3NlY3VyZV9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4yYTAwYmRiNTA0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvZXhhbXBsZS9zZWN1cmVfc2VydmVyLnB5CkBAIC0wLDAgKzEsMjggQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorCisjIFdTUyAoV1Mgb3ZlciBUTFMpIHNlcnZlciBleGFtcGxl
LCB3aXRoIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9y
dCBwYXRobGliCitpbXBvcnQgc3NsCitpbXBvcnQgd2Vic29ja2V0cworCithc3luYyBkZWYgaGVs
bG8od2Vic29ja2V0LCBwYXRoKToKKyAgICBuYW1lID0gYXdhaXQgd2Vic29ja2V0LnJlY3YoKQor
ICAgIHByaW50KGYiPCB7bmFtZX0iKQorCisgICAgZ3JlZXRpbmcgPSBmIkhlbGxvIHtuYW1lfSEi
CisKKyAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChncmVldGluZykKKyAgICBwcmludChmIj4ge2dy
ZWV0aW5nfSIpCisKK3NzbF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RM
U19TRVJWRVIpCitsb2NhbGhvc3RfcGVtID0gcGF0aGxpYi5QYXRoKF9fZmlsZV9fKS53aXRoX25h
bWUoImxvY2FsaG9zdC5wZW0iKQorc3NsX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKGxvY2FsaG9z
dF9wZW0pCisKK3N0YXJ0X3NlcnZlciA9IHdlYnNvY2tldHMuc2VydmUoCisgICAgaGVsbG8sICJs
b2NhbGhvc3QiLCA4NzY1LCBzc2w9c3NsX2NvbnRleHQKKykKKworYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCithc3luY2lvLmdldF9ldmVu
dF9sb29wKCkucnVuX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1w
bGUvc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2VydmVyLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzhhYjY5OTcxYjI0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2VydmVyLnB5CkBAIC0wLDAgKzEsMjAg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIFdTIHNlcnZlciBleGFtcGxlCisKK2ltcG9y
dCBhc3luY2lvCitpbXBvcnQgd2Vic29ja2V0cworCithc3luYyBkZWYgaGVsbG8od2Vic29ja2V0
LCBwYXRoKToKKyAgICBuYW1lID0gYXdhaXQgd2Vic29ja2V0LnJlY3YoKQorICAgIHByaW50KGYi
PCB7bmFtZX0iKQorCisgICAgZ3JlZXRpbmcgPSBmIkhlbGxvIHtuYW1lfSEiCisKKyAgICBhd2Fp
dCB3ZWJzb2NrZXQuc2VuZChncmVldGluZykKKyAgICBwcmludChmIj4ge2dyZWV0aW5nfSIpCisK
K3N0YXJ0X3NlcnZlciA9IHdlYnNvY2tldHMuc2VydmUoaGVsbG8sICJsb2NhbGhvc3QiLCA4NzY1
KQorCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0X3Nl
cnZlcikKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9yZXZlcigpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zaG93X3RpbWUuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9leGFtcGxlL3Nob3dfdGltZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNzIxZjQ0MjY0ZWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2V4YW1wbGUvc2hvd190aW1lLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPldlYlNvY2tldCBkZW1vPC90aXRs
ZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAg
ICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo1Njc4LyIpLAorICAgICAg
ICAgICAgICAgIG1lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsKKyAgICAg
ICAgICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgICAg
IHZhciBtZXNzYWdlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd1bCcpWzBdLAor
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGkn
KSwKKyAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGV2ZW50LmRhdGEpOworICAgICAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kQ2hpbGQoY29udGVu
dCk7CisgICAgICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kQ2hpbGQobWVzc2FnZSk7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtZXNzYWdl
cyk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3Nob3dfdGltZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9l
eGFtcGxlL3Nob3dfdGltZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmU1ZDZhYzlhYTNiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFt
cGxlL3Nob3dfdGltZS5weQpAQCAtMCwwICsxLDE5IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KworIyBXUyBzZXJ2ZXIgdGhhdCBzZW5kcyBtZXNzYWdlcyBhdCByYW5kb20gaW50ZXJ2YWxzCisK
K2ltcG9ydCBhc3luY2lvCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCB3
ZWJzb2NrZXRzCisKK2FzeW5jIGRlZiB0aW1lKHdlYnNvY2tldCwgcGF0aCk6CisgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkuaXNvZm9ybWF0
KCkgKyAiWiIKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmQobm93KQorICAgICAgICBhd2Fp
dCBhc3luY2lvLnNsZWVwKHJhbmRvbS5yYW5kb20oKSAqIDMpCisKK3N0YXJ0X3NlcnZlciA9IHdl
YnNvY2tldHMuc2VydmUodGltZSwgIjEyNy4wLjAuMSIsIDU2NzgpCisKK2FzeW5jaW8uZ2V0X2V2
ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQorYXN5bmNpby5nZXRf
ZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9l
eGFtcGxlL3NodXRkb3duLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2h1dGRvd24ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44Njg0NmFiZTczZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zaHV0ZG93bi5weQpAQCAt
MCwwICsxLDIyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGFzeW5jaW8KK2lt
cG9ydCBzaWduYWwKK2ltcG9ydCB3ZWJzb2NrZXRzCisKK2FzeW5jIGRlZiBlY2hvKHdlYnNvY2tl
dCwgcGF0aCk6CisgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd2Vic29ja2V0OgorICAgICAgICBh
d2FpdCB3ZWJzb2NrZXQuc2VuZChtZXNzYWdlKQorCithc3luYyBkZWYgZWNob19zZXJ2ZXIoc3Rv
cCk6CisgICAgYXN5bmMgd2l0aCB3ZWJzb2NrZXRzLnNlcnZlKGVjaG8sICJsb2NhbGhvc3QiLCA4
NzY1KToKKyAgICAgICAgYXdhaXQgc3RvcAorCitsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9v
cCgpCisKKyMgVGhlIHN0b3AgY29uZGl0aW9uIGlzIHNldCB3aGVuIHJlY2VpdmluZyBTSUdURVJN
Lgorc3RvcCA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCitsb29wLmFkZF9zaWduYWxfaGFuZGxlcihz
aWduYWwuU0lHVEVSTSwgc3RvcC5zZXRfcmVzdWx0LCBOb25lKQorCisjIFJ1biB0aGUgc2VydmVy
IHVudGlsIHRoZSBzdG9wIGNvbmRpdGlvbiBpcyBtZXQuCitsb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShlY2hvX3NlcnZlcihzdG9wKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxl
L3VuaXhfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvdW5peF9jbGllbnQucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NzcxMzViM2RiZjYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS91bml4X2NsaWVudC5weQpA
QCAtMCwwICsxLDE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBXUyBjbGllbnQgZXhh
bXBsZSBjb25uZWN0aW5nIHRvIGEgVW5peCBzb2NrZXQKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9y
dCBvcy5wYXRoCitpbXBvcnQgd2Vic29ja2V0cworCithc3luYyBkZWYgaGVsbG8oKToKKyAgICBz
b2NrZXRfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAic29j
a2V0IikKKyAgICBhc3luYyB3aXRoIHdlYnNvY2tldHMudW5peF9jb25uZWN0KHNvY2tldF9wYXRo
KSBhcyB3ZWJzb2NrZXQ6CisgICAgICAgIG5hbWUgPSBpbnB1dCgiV2hhdCdzIHlvdXIgbmFtZT8g
IikKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmQobmFtZSkKKyAgICAgICAgcHJpbnQoZiI+
IHtuYW1lfSIpCisKKyAgICAgICAgZ3JlZXRpbmcgPSBhd2FpdCB3ZWJzb2NrZXQucmVjdigpCisg
ICAgICAgIHByaW50KGYiPCB7Z3JlZXRpbmd9IikKKworYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgp
LnJ1bl91bnRpbF9jb21wbGV0ZShoZWxsbygpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2V4YW1wbGUvdW5peF9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS91bml4X3Nl
cnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE2ZWMwMTY4
YTJiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3VuaXhfc2Vy
dmVyLnB5CkBAIC0wLDAgKzEsMjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIFdTIHNl
cnZlciBleGFtcGxlIGxpc3RlbmluZyBvbiBhIFVuaXggc29ja2V0CisKK2ltcG9ydCBhc3luY2lv
CitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHdlYnNvY2tldHMKKworYXN5bmMgZGVmIGhlbGxvKHdl
YnNvY2tldCwgcGF0aCk6CisgICAgbmFtZSA9IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKyAgICBw
cmludChmIjwge25hbWV9IikKKworICAgIGdyZWV0aW5nID0gZiJIZWxsbyB7bmFtZX0hIgorCisg
ICAgYXdhaXQgd2Vic29ja2V0LnNlbmQoZ3JlZXRpbmcpCisgICAgcHJpbnQoZiI+IHtncmVldGlu
Z30iKQorCitzb2NrZXRfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAic29ja2V0IikKK3N0YXJ0X3NlcnZlciA9IHdlYnNvY2tldHMudW5peF9zZXJ2ZShoZWxs
bywgc29ja2V0X3BhdGgpCisKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29t
cGxldGUoc3RhcnRfc2VydmVyKQorYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVy
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9sb2dvL2hvcml6b250YWwuc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2xvZ28vaG9yaXpvbnRhbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lZTg3MmRjNDc4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvbG9nby9ob3Jpem9udGFsLnN2ZwpAQCAtMCwwICsxLDMxIEBACis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMjQiIGhlaWdodD0iMjU2IiB2
aWV3Qm94PSIwIDAgMTAyNCAyNTYiPgorICA8bGluZWFyR3JhZGllbnQgaWQ9InciIHgxPSIwIiB5
MT0iMCIgeDI9IjAuMTY2NyIgeTI9IjAuNjY2NyI+CisgICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3Rv
cC1jb2xvcj0iI2ZmZTg3MyIgLz4KKyAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9
IiNmZmQ0M2IiIC8+CisgIDwvbGluZWFyR3JhZGllbnQ+CisgIDxsaW5lYXJHcmFkaWVudCBpZD0i
cyIgeDE9IjAiIHkxPSIwIiB4Mj0iMC4xNjY3IiB5Mj0iMC42NjY3Ij4KKyAgICA8c3RvcCBvZmZz
ZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0IiAvPgorICAgIDxzdG9wIG9mZnNldD0iMTAwJSIg
c3RvcC1jb2xvcj0iIzMwNjk5OCIgLz4KKyAgPC9saW5lYXJHcmFkaWVudD4KKzxnPgorICAgIDxw
YXRoIGZpbGw9InVybCgjdykiIGQ9Im0gMTUxLjYwNzA4LDE1NC44MTYxOCBjIC0wLjQzNzA0LDAu
MDc0NyAtMC44ODY1NiwwLjEyOTc4IC0xLjM1NTcyLDAuMTQ5MzMgLTIuNDU4MTMsMC4wNzY0IC00
LjI1MzU3LC0wLjU4NjY1IC01LjgyMzM1LC0yLjE1MTA3IGwgLTguODkyNDYsLTguODU5NDIgLTEx
LjIzNDY0LC0xMS4xOTgwNSAtMzYuMDQwNzU3LC0zNS45MTk0NTIgYyAtMy40MzU2OCwtMy40MjIx
NyAtNy4zMzI0ODUsLTUuMzQ3NDc0IC0xMS41ODk2MjYsLTUuNzIzNDY4IC0yLjIyOTgwMywtMC4x
OTgyMTkgLTQuNDczODc3LDAuMDMxMTEgLTYuNjQwMzU0LDAuNjc1NTQ1IC0zLjI0MjEzMywwLjk0
NDg3NSAtNi4xMzU1MjYsMi42NjQ4NDggLTguNTkzNjYyLDUuMTE2MzY2IC0zLjgzNDM2OSwzLjgx
OTQ5OSAtNS44NjM0OSw4LjQxNDk3OSAtNS44NzU5NzcsMTMuMjg3Nzk5IC0wLjA2MDY1LDQuOTUy
ODEgMS45NTE1MjMsOS42MDA3NCA1LjgwODE5MiwxMy40NDQyNCBsIDU1LjYyMjg5NCw1NS40MzY0
OCBjIDEuODIyMTksMS44NDE3NSAyLjY1OTcxLDMuNzk1NDkgMi42MzM4NCw2LjE0NTY4IGwgMC4w
MDQsMC4yMDggYyAwLjA1MjcsMi40MzE5NiAtMC43NTk5MSw0LjM0NTcxIC0yLjYyNjcsNi4yMDYx
MiAtMS43ODAyOCwxLjc3NTk4IC0zLjgwOTQsMi42NTI0MSAtNi4zMDk0NSwyLjc1NTUyIC0yLjQ1
ODE0LDAuMDc2NCAtNC4yNTQ0NiwtMC41ODg0NCAtNS44MjUxNCwtMi4xNTI4NiBMIDQ4LjcwMjU1
MSwxMzYuMjYxOCBjIC01LjIxNDE3MiwtNS4xOTQ1OSAtMTEuNzAyODk5LC02Ljk4NzQ1IC0xOC4y
Mjk5OCwtNS4wNDg4MSAtMy4yNDU3MDEsMC45NDMxIC02LjEzNTUyNywyLjY2MzA3IC04LjU5NTQ0
Niw1LjExNDU5IC0zLjgzNDM3LDMuODIxMjcgLTUuODY1Mjc1LDguNDE2NzYgLTUuODc1OTc4LDEz
LjI4OTU3IC0wLjA1NjE5LDQuOTUyODEgMS45NTE1MjQsOS42MDI1MiA1LjgwNjQwOSwxMy40NDc4
IGwgNTguMTA2ODksNTcuOTA1NzcgYyA4LjMxOTg0Miw4LjI5MTQzIDE5LjM0MDQyMSwxMS45Mzc2
IDMyLjc0MzMxNCwxMC44MzgwNiAxMi41Nzk2NywtMS4wMjA0MyAyMy4wMjMxNywtNS41ODQ4IDMx
LjAzNDQxLC0xMy41NzMxMyA3LjUxMjY1LC03LjQ4NjEgMTEuOTY0MjMsLTE2LjM1MTc1IDEzLjI4
Njk1LC0yNi40MjUzNyAxMC40NzIwNiwtMS42ODI2NCAxOS4yOTQ5NCwtNi4wNDUyNCAyNi4yNzUx
MiwtMTMuMDAxNTggNC4wMTM2NCwtMy45OTk5NCA3LjE0OTYzLC04LjM5NzIgOS40MDUzMSwtMTMu
MTYxNTcgLTE0LjE1NTY5LC0wLjM5OTExIC0yOC4yMzY0NSwtNC4wMDk3MiAtNDEuMDUyNDcsLTEw
LjgzMDk1IHoiIC8+CisgICAgPHBhdGggZmlsbD0idXJsKCNzKSIgZD0ibSAxOTYuOTYwMzgsMTQ2
LjExODU0IGMgMC4xMDI1OSwtMTIuODQ1MTQgLTQuNDMwMTcsLTIzLjk4NTQxIC0xMy41MDYzNSwt
MzMuMTM0NiBMIDE0Ny41NzI5Miw3Ny4yMjUzNzQgYyAtMC4yNDM0OSwtMC4yNDA4ODUgLTAuNDY0
NjksLTAuNDg3OTkyIC0wLjY4Njc4LC0wLjc0NDg3NyAtMS40ODQxNiwtMS43Mzk1MjkgLTIuMTg3
ODgsLTMuNTgzMDU2IC0yLjIxMDE4LC01LjgwNzAyMiAtMC4wMjU5LC0yLjQ3MDE4NCAwLjg0OTEx
LC00LjUwODM3NSAyLjc2MDUsLTYuNDA3OTAyIDEuOTE0MDYsLTEuOTA5MzA0IDMuODUzMSwtMi43
Mzc3MzUgNi4zNjU2NCwtMi42ODQ0MDMgMi41MzY2MiwwLjAyNCA0LjYyNzI4LDAuOTQzMDk3IDYu
NTcyNTcsMi44ODE3MzQgbCA2MC41OTE3OCw2MC4zODQ4NDYgMTIuMTE0MDgsLTEyLjA2OTE0IGMg
MS4xMjIwMywtMC45MDc1NSAxLjk1Nzc3LC0xLjc2ODg3IDIuODc4MjMsLTIuOTM0MTggNS45MTg3
OSwtNy41MTU0NCA1LjI2OTQ3LC0xOC4yNzI2MDkgLTEuNTEwMDMsLTI1LjAyODk1IEwgMTg3LjIw
NDU2LDM3LjcyNzMxNCBjIC05LjE5MzkzLC05LjE1NzE5MiAtMjAuMzY3MDMsLTEzLjc3NjY3NyAt
MzMuMTY3ODksLTEzLjcyNjkgLTEyLjk0MjY2LC0wLjA1MDY3IC0yNC4xNDE2Myw0LjU0ODM3NSAt
MzMuMjg3MzksMTMuNjYyOTAxIC05LjAyODkyLDguOTk2MzA3IC0xMy42NDAxNSwxOS45MzkyNSAt
MTMuNzAwOCwzMi40ODc1MDEgbCAtMC4wMDQsMC4xNDIyMiBjIC0wLjAwMiwwLjE2Nzk5OCAtMC4w
MDUsMC4zMzY4ODQgLTAuMDA1LDAuNTA2NjU5IC0wLjA5MSwxMi4yMzI3MDEgNC4xMDcyOSwyMi45
NTc4NyAxMi40ODE1NCwzMS44ODEyODUgMC40MDIyNiwwLjQzMDIyIDAuODAyNzQsMC44NTc3NyAx
LjIyMjgzLDEuMjc4MjEgbCAzNS43NTA4OCwzNS42MjYxMiBjIDEuODg5MDksMS44ODE3NCAyLjcx
NzY5LDMuNzk2MzggMi42OTM2MSw2LjIwOTY4IGwgMC4wMDMsMC4yMDk3NyBjIDAuMDUyNywyLjQz
MTk3IC0wLjc2MDgxLDQuMzQ1NzEgLTIuNjI3Niw2LjIwNzkxIC0xLjQ0NzU5LDEuNDM5MDkgLTMu
MDYyODYsMi4yNzgxOCAtNC45NTY0LDIuNjAyNjIgMTIuODE2MDEsNi44MjEyMyAyNi44OTY3Nywx
MC40MzE4NCA0MS4wNTI0NiwxMC44MzM2MiAyLjgwNTk4LC01LjkyNTI1IDQuMjUwOSwtMTIuNDE4
NDggNC4yOTkwNiwtMTkuNDM1MjYgeiIgLz4KKyAgICA8cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJt
IDIxNS42ODA5Myw5My4xODE1NzQgYyAyLjg0NzAxLC0yLjgzODE3OSA3LjQ2MzU5LC0yLjgzNjQw
MSAxMC4zMDg4MywwIDIuODQ0MzMsMi44MzQ2MjMgMi44NDYxMiw3LjQzNTQ0NiAtMC4wMDIsMTAu
MjcwOTU2IC0yLjg0MzQ1LDIuODM4MTggLTcuNDYyNzEsMi44MzgxOCAtMTAuMzA3MDQsMCAtMi44
NDUyNCwtMi44MzU1MSAtMi44NDc5MSwtNy40MzU0NDQgMCwtMTAuMjcwOTU2IHoiIC8+CisgIDwv
Zz4KKyAgPGc+CisgICAgPGcgZmlsbD0iI2ZmZDQzYiI+CisgICAgICA8cGF0aCBkPSJtIDI3MS42
MjA0NiwxNzcuMzMzMTMgYyAwLDQuMTYzNyAxLjQ2NjE5LDcuNzEyMjcgNC4zOTg1OCwxMC42NDM2
MSAyLjkzMjQsMi45MzU1NiA2LjQ4MjAyLDQuNDAwNjkgMTAuNjQ3ODMsNC40MDA2OSA0LjE2NDc1
LDAgNy43MTQzOCwtMS40NjUxMyAxMC42NDU3MiwtNC40MDA2OSAyLjkzMzQ0LC0yLjkzMTM0IDQu
NDAwNjksLTYuNDc5OTEgNC40MDA2OSwtMTAuNjQzNjEgdiAtMzUuMDAzMzIgYyAwLC0yLjEyMzQ1
IDAuNzY0NywtMy45NTE5OCAyLjI5NTE0LC01LjQ4MDMyIDEuNTMwNDUsLTEuNTMyNTYgMy4zNTc5
MywtMi4yOTgzMSA1LjQ4MzQ5LC0yLjI5ODMxIGggMC4xMjc0NSBjIDIuMTY2NjQsMCAzLjk3Miww
Ljc2NTc1IDUuNDE5MjMsMi4yOTgzMSAxLjUzMDQ1LDEuNTI4MzQgMi4yOTYyLDMuMzU3OTMgMi4y
OTYyLDUuNDgwMzIgdiAzNS4wMDMzMiBjIDAsNC4xNjM3IDEuNDY2Miw3LjcxMjI3IDQuNDAwNjks
MTAuNjQzNjEgMi45MzEzNCwyLjkzNTU2IDYuNDc4ODYsNC40MDA2OSAxMC42NDU3Miw0LjQwMDY5
IDQuMjA3OTQsMCA3Ljc3NzU4LC0xLjQ2NTEzIDEwLjcwOTk3LC00LjQwMDY5IDIuOTMzNDUsLTIu
OTMxMzQgNC40MDA2OSwtNi40Nzk5MSA0LjQwMDY5LC0xMC42NDM2MSB2IC0zNS4wMDMzMiBjIDAs
LTIuMTIzNDUgMC43NjM2NSwtMy45NTE5OCAyLjI5NTE1LC01LjQ4MDMyIDEuNDQzMDIsLTEuNTMy
NTYgMy4yNTA0OSwtMi4yOTgzMSA1LjQxOTI0LC0yLjI5ODMxIGggMC4xMjY0IGMgMi4xMjY2MSww
IDMuOTU0MDksMC43NjU3NSA1LjQ4MzQ5LDIuMjk4MzEgMS40ODgzMSwxLjUyODM0IDIuMjMxOTQs
My4zNTc5MyAyLjIzMTk0LDUuNDgwMzIgdiAzNS4wMDMzMiBjIDAsOC40NTY5NiAtMi45OTc3LDE1
LjY4MjYxIC04Ljk4ODg3LDIxLjY3NDg0IC01Ljk5MzI5LDUuOTkyMjQgLTEzLjIxOTk5LDguOTg5
OTMgLTIxLjY3Njk1LDguOTg5OTMgLTEwLjExNjk2LDAgLTE3LjcyMzksLTMuMzU1ODMgLTIyLjgy
NjA5LC0xMC4wNzI3MiAtNS4xNDIyMiw2LjcxNjg5IC0xMi43NzIzNCwxMC4wNzI3MiAtMjIuODg3
MTksMTAuMDcyNzIgLTguNDU4MDEsMCAtMTUuNjg0NzEsLTIuOTk3NjkgLTIxLjY3Njk1LC04Ljk4
OTkzIEMgMjU4Ljk5OTgsMTkzLjAxNTc0IDI1NiwxODUuNzkxMTMgMjU2LDE3Ny4zMzMxMyB2IC0z
NS4wMDMzMiBjIDAsLTIuMTIzNDUgMC43NjU3NSwtMy45NTE5OCAyLjI5NjE5LC01LjQ4MDMyIDEu
NTI5NCwtMS41MzI1NiAzLjMzNTgxLC0yLjI5ODMxIDUuNDE5MjQsLTIuMjk4MzEgaCAwLjE5MTcg
YyAyLjA4MjM4LDAgMy44ODc3NCwwLjc2NTc1IDUuNDIwMjksMi4yOTgzMSAxLjUyODM0LDEuNTI4
MzQgMi4yOTQwOSwzLjM1NzkzIDIuMjk0MDksNS40ODAzMiB2IDM1LjAwMzMyIHoiIC8+CisgICAg
ICA8cGF0aCBkPSJtIDQ0My45NTIxNiwxNTUuOTc1MzQgYyAwLjUxMDg1LDEuMDYxNzMgMC43NjY4
LDIuMTQzNDYgMC43NjY4LDMuMjUwNDggMCwwLjg5MzIgLTAuMTY5NTcsMS43ODUzNiAtMC41MDk3
OSwyLjY3ODU0IC0wLjcyMzYzLDEuOTk3MDcgLTIuMDgzNDMsMy40NDIyIC00LjA4MDUsNC4zMzQz
NCAtNS45NTExNCwyLjY3ODU0IC0xMy43NzA4NSw2LjIwNzExIC0yMy40NjIyOCwxMC41ODQ2MyAt
MTIuMDI4NzEsNS40MzkyNCAtMTkuMDg0NzcsOC42NDg2NiAtMjEuMTY3MTUsOS42MjgyMyAzLjIy
OTQzLDQuMDc5NDQgOC4yNjczNyw2LjExODYzIDE1LjExMDY3LDYuMTE4NjMgNC41NDcxLDAgOC42
NzA3NywtMS4zMzc2OSAxMi4zNjc4NiwtNC4wMTYyNSAzLjYxMjgzLC0yLjYzNTM0IDYuMTQyODYs
LTYuMDM1NDEgNy41ODc5OCwtMTAuMjAyMjcgMS4yMzM0MiwtMy40ODUzOCAzLjY5ODE1LC01LjIy
NzU0IDcuMzk1MjQsLTUuMjI3NTQgMi42MzQzLDAgNC43Mzg4LDEuMTA3MDIgNi4zMTEzOCwzLjMx
MzY5IDAuOTc3NDYsMS4zNjE5MyAxLjQ2NjE5LDIuNzg1OTggMS40NjYxOSw0LjI3MzI1IDAsMC44
OTMyIC0wLjE2OTU4LDEuODA2NDEgLTAuNTA4NzQsMi43NDA2OSAtMi41MDc5MSw3LjI2OTg4IC02
LjkwODYxLDEzLjEzNTczIC0xMy4xOTY4MSwxNy41OTk2MSAtNi4zNzU2Myw0LjYzMDMxIC0xMy41
MTcwMiw2Ljk0NzU3IC0yMS40MjMxLDYuOTQ3NTcgLTEwLjExNTkxLDAgLTE4Ljc2NTYzLC0zLjU4
OTY1IC0yNS45NDgwOSwtMTAuNzc0MiAtNy4xODM1MSwtNy4xODM1MyAtMTAuNzc1MjcsLTE1Ljgz
MjE5IC0xMC43NzUyNywtMjUuOTUwMiAwLC0xMC4xMTU5MSAzLjU5MTc2LC0xOC43NjM1MSAxMC43
NzUyNywtMjUuOTUwMTkgNy4xODE0MiwtNy4xODE0IDE1LjgzMjE4LC0xMC43NzQyMiAyNS45NDgw
OSwtMTAuNzc0MjIgNy4zMDg4NSwwIDEzLjk4MjU3LDEuOTk5MTYgMjAuMDE5MDQsNS45OTIyMyA1
Ljk5MTE4LDMuOTE1MTIgMTAuNDMyOTYsOS4wNTUyNCAxMy4zMjMyMSwxNS40MzI5OCB6IG0gLTMz
LjM0MzMxLC01LjY3ODM2IGMgLTUuODY1ODMsMCAtMTAuODYwNTksMi4wNjM0MyAtMTQuOTgzMjIs
Ni4xODYwNCAtNC4wODA0OSw0LjEyNDczIC02LjEyMDczLDkuMTE5NDkgLTYuMTIwNzMsMTQuOTgz
MjIgdiAwLjQ0NjYxIGwgMzUuNjM5NTEsLTE2LjAwMjgyIGMgLTMuMTQ0MSwtMy43MzgxNyAtNy45
OTAzNSwtNS42MTMwNSAtMTQuNTM1NTYsLTUuNjEzMDUgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0g
NDY1LjEyMTQxLDEwOC40MTI0NiBjIDIuMDgyMzgsMCAzLjg4Nzc1LDAuNzQ0NjkgNS40MTkyNCwy
LjIzMTk0IDEuNTMwNDUsMS41MjgzNCAyLjI5NjE5LDMuMzU3OTMgMi4yOTYxOSw1LjQ4MjQ0IHYg
MjQuNzk5OTggYyA0LjgwMjAyLC00LjI0Nzk2IDExLjgzNzAxLC02LjM3NTY0IDIxLjEwMTg1LC02
LjM3NTY0IDEwLjExNTkxLDAgMTguNzY1NjEsMy41OTE3NyAyNS45NDkxNCwxMC43NzQyMiA3LjE4
MjQ1LDcuMTg1NjMgMTAuNzc1MjcsMTUuODM0MjkgMTAuNzc1MjcsMjUuOTUwMiAwLDEwLjExNjk1
IC0zLjU5MjgyLDE4Ljc2NTYxIC0xMC43NzUyNywyNS45NTAxOCBDIDUxMi43MDUzNiwyMDQuNDEw
MzUgNTA0LjA1NTY2LDIwOCA0OTMuOTM4NjksMjA4IGMgLTEwLjExNjk2LDAgLTE4Ljc0MzQ5LC0z
LjU2OTY0IC0yNS44ODM4MiwtMTAuNzEyMDcgLTcuMTg0NTcsLTcuMDk1MDQgLTEwLjc5NzQsLTE1
LjcwMjYyIC0xMC44Mzk1NCwtMjUuODIwNjMgdiAtNTUuMzM5NDEgYyAwLC0yLjEyNTU2IDAuNzY1
NzYsLTMuOTU0MDkgMi4yOTYyMSwtNS40ODI0MyAxLjUyOTM5LC0xLjQ4NzI3IDMuMzM1OCwtMi4y
MzE5NiA1LjQxOTI0LC0yLjIzMTk2IGggMC4xOTA2MyB6IG0gMjguODE2MjIsNDEuODg0NTIgYyAt
NS44NjQ3NywwIC0xMC44NTk1MywyLjA2MzQzIC0xNC45ODMyLDYuMTg2MDQgLTQuMDc4NCw0LjEy
NDczIC02LjExOTY5LDkuMTE5NDkgLTYuMTE5NjksMTQuOTgzMjIgMCw1LjgyMzcgMi4wNDEyOSwx
MC43OTYzMyA2LjExOTY5LDE0LjkxODk2IDQuMTIzNjcsNC4xMjI2MyA5LjExNzM3LDYuMTgzOTMg
MTQuOTgzMiw2LjE4MzkzIDUuODIzNzEsMCAxMC43OTYzNSwtMi4wNjEzIDE0LjkyMDAyLC02LjE4
MzkzIDQuMTIwNTEsLTQuMTIyNjMgNi4xODI4OCwtOS4wOTUyNiA2LjE4Mjg4LC0xNC45MTg5NiAw
LC01Ljg2MjY3IC0yLjA2MjM3LC0xMC44NTg0OSAtNi4xODI4OCwtMTQuOTgzMjIgLTQuMTIzNjcs
LTQuMTIyNjEgLTkuMDk1MjUsLTYuMTg2MDQgLTE0LjkyMDAyLC02LjE4NjA0IHoiIC8+CisgICAg
PC9nPgorICAgIDxnIGZpbGw9IiMzMDY5OTgiPgorICAgICAgPHBhdGggZD0ibSA1NjEuMjY0Njcs
MTUwLjE3Mzc1IGMgLTEuODcwNjYsMCAtMy40NDMyNSwwLjYzNjIgLTQuNzE3NzMsMS45MTA3IC0x
LjI3NTU2LDEuMzE4NzIgLTEuOTEyODEsMi44OTAyNSAtMS45MTI4MSw0LjcxNzczIDAsMi41NTEx
IDEuMjMyMzcsNC40NjM4OSAzLjY5OTE5LDUuNzM3MzMgMC44NDg5OCwwLjQ2ODcyIDQuMzk4NTks
MS41MzA0NSAxMC42NDY3OCwzLjE4ODM0IDUuMDU3OTUsMS40NDYxOSA4LjgxODI1LDMuMzM2ODYg
MTEuMjgyOTYsNS42NzQxMyAzLjUyOTYzLDMuMzU4OTggNS4yOTE3OSw4LjE0MDk3IDUuMjkxNzks
MTQuMzQ3MDMgMCw2LjExODYyIC0yLjE2NzY5LDExLjM2ODI5IC02LjUwMjAzLDE1Ljc0NTgxIC00
LjM3ODU3LDQuMzM2NDQgLTkuNjI4MjMsNi41MDMwOCAtMTUuNzQ3OTEsNi41MDMwOCBoIC0xNi42
NDAwNSBjIC0yLjA4NDQ4LDAgLTMuODg4NzksLTAuNzYzNjUgLTUuNDIwMjksLTIuMjk2MjEgLTEu
NTMwNDUsLTEuNDQ0MDcgLTIuMjk2MiwtMy4yNTA0OCAtMi4yOTYyLC01LjQxNzEyIHYgLTAuMTI5
NTMgYyAwLC0yLjEyMzQ1IDAuNzY1NzUsLTMuOTUxOTggMi4yOTYyLC01LjQ4MjQzIDEuNTMwNDQs
LTEuNTMwNDUgMy4zMzU4MSwtMi4yOTYxOSA1LjQyMDI5LC0yLjI5NjE5IGggMTcuMjc3MyBjIDEu
ODY5NiwwIDMuNDQzMjQsLTAuNjM2MiA0LjcxNzczLC0xLjkxMDcgMS4yNzU1NiwtMS4yNzU1NCAx
LjkxMjgxLC0yLjg0NzA3IDEuOTEyODEsLTQuNzE3NzQgMCwtMi4zMzkzNyAtMS4yMTEzMSwtNC4x
MDM2NiAtMy42MzI4NSwtNS4yOTA3MyAtMC42MzcyMywtMC4zMDAxOCAtNC4yMDg5OCwtMS4zNjE5
MiAtMTAuNzEyMDgsLTMuMTg4MzQgLTUuMDU4OTksLTEuNDg3MjUgLTguODIxMzksLTMuNDQ1MzUg
LTExLjI4NjExLC01Ljg2NjkgLTMuNTI4NTYsLTMuNDQyMTcgLTUuMjkwNzUsLTguMzA5NDkgLTUu
MjkwNzUsLTE0LjU5OTggMCwtNi4xMjA3MyAyLjE2ODc2LC0xMS4zNDcyMSA2LjUwNDE0LC0xNS42
ODI2MSA0LjM3NjQ4LC00LjM3NzUyIDkuNjI3MTgsLTYuNTY4MzkgMTUuNzQ2ODcsLTYuNTY4Mzkg
aCAxMS43MzE2NiBjIDIuMTI0NTIsMCAzLjk1MzA0LDAuNzY1NzUgNS40ODM0OSwyLjI5ODMxIDEu
NTI5MzksMS41MjgzNCAyLjI5NTE1LDMuMzU3OTMgMi4yOTUxNSw1LjQ4MDMyIHYgMC4xMjc0NSBj
IDAsMi4xNjg3NiAtMC43NjU3NiwzLjk3NjIyIC0yLjI5NTE1LDUuNDIwMyAtMS41MzA0NSwxLjUy
ODM0IC0zLjM1ODk3LDIuMjk2MTkgLTUuNDgzNDksMi4yOTYxOSB6IiAvPgorICAgICAgPHBhdGgg
ZD0ibSA2MzAuNTY3NywxMzQuNTUxMTggYyAxMC4xMTU5LDAgMTguNzY0NTYsMy41OTE3NyAyNS45
NDkxMiwxMC43NzQyMiA3LjE4MjQ2LDcuMTg1NjMgMTAuNzc0MjIsMTUuODM0MjkgMTAuNzc0MjIs
MjUuOTUwMiAwLDEwLjExNjk1IC0zLjU5MTc2LDE4Ljc2NTYxIC0xMC43NzQyMiwyNS45NTAxOCBD
IDY0OS4zMzMzMSwyMDQuNDA5MjkgNjQwLjY4MzYsMjA4IDYzMC41Njc3LDIwOCBjIC0xMC4xMTU5
MiwwIC0xOC43NjU2MywtMy41ODk2NSAtMjUuOTQ4MSwtMTAuNzc0MjIgLTcuMTgzNTEsLTcuMTgz
NTEgLTEwLjc3NTI2LC0xNS44MzIxNyAtMTAuNzc1MjYsLTI1Ljk1MDE4IDAsLTEwLjExNTkxIDMu
NTkxNzUsLTE4Ljc2MzUyIDEwLjc3NTI2LC0yNS45NTAyIDcuMTgyNDcsLTcuMTgyNDUgMTUuODMy
MTgsLTEwLjc3NDIyIDI1Ljk0ODEsLTEwLjc3NDIyIHogbSAwLDE1Ljc0NTggYyAtNS44NjU4NSww
IC0xMC44NjA1OSwyLjA2MzQzIC0xNC45ODMyMiw2LjE4NjA0IC00LjA4MTU1LDQuMTI0NzMgLTYu
MTIxNzgsOS4xMTk0OSAtNi4xMjE3OCwxNC45ODMyMiAwLDUuODIzNyAyLjA0MDIzLDEwLjc5NjMz
IDYuMTIxNzgsMTQuOTE4OTYgNC4xMjI2Myw0LjEyMjYzIDkuMTE2MzIsNi4xODM5MyAxNC45ODMy
Miw2LjE4MzkzIDUuODIyNjQsMCAxMC43OTUyNywtMi4wNjEzIDE0LjkxODk2LC02LjE4MzkzIDQu
MTIyNjEsLTQuMTIyNjMgNi4xODM5MywtOS4wOTUyNiA2LjE4MzkzLC0xNC45MTg5NiAwLC01Ljg2
MjY3IC0yLjA2MTMyLC0xMC44NTg0OSAtNi4xODM5MywtMTQuOTgzMjIgLTQuMTIzNjksLTQuMTIy
NjEgLTkuMDk1MjcsLTYuMTg2MDQgLTE0LjkxODk2LC02LjE4NjA0IHoiIC8+CisgICAgICA8cGF0
aCBkPSJtIDcyNC4wMzQ1LDEzNi4yNzMzMyBjIDMuNjEzODgsMS4xNDgxMSA1LjQyMDMsMy42MTI4
MiA1LjQyMDMsNy4zOTUyMyB2IDAuMzIxMjUgYyAwLDIuNTkwMDggLTEuMDQyNzgsNC42NTEzOCAt
My4xMjUxNiw2LjE4Mzk0IC0xLjQ0NTEyLDEuMDE4NTQgLTIuOTMzNDMsMS41MjgzNCAtNC40NjE3
OCwxLjUyODM0IC0wLjgwODk0LDAgLTEuNjM3ODksLTAuMTI3NDUgLTIuNDg2ODQsLTAuMzgyMzUg
LTIuMDgzNDQsLTAuNjc5MzggLTQuMjMwMDcsLTEuMDIyNzYgLTYuNDM4ODMsLTEuMDIyNzYgLTUu
ODY1ODUsMCAtMTAuODYxNjUsMi4wNjM0MyAtMTQuOTgzMjIsNi4xODYwNCAtNC4wODE1NCw0LjEy
NDczIC02LjEyMDc0LDkuMTE5NDkgLTYuMTIwNzQsMTQuOTgzMjIgMCw1LjgyMzcgMi4wMzkyLDEw
Ljc5NjMzIDYuMTIwNzQsMTQuOTE4OTYgNC4xMjE1Nyw0LjEyMjYzIDkuMTE2MzMsNi4xODM5MyAx
NC45ODMyMiw2LjE4MzkzIDIuMjA5ODIsMCA0LjM1NjQ1LC0wLjMzOTE1IDYuNDM4ODMsLTEuMDIw
NjUgMC44MDY4MywtMC4yNTQ4OSAxLjYxNDcxLC0wLjM4MjM0IDIuNDIyNTksLTAuMzgyMzQgMS41
NzA0NiwwIDMuMDgxOTcsMC41MTE5IDQuNTI3MDksMS41MzI1NCAyLjA4MjM4LDEuNTI4MzUgMy4x
MjUxNCwzLjYxMjgzIDMuMTI1MTQsNi4yNDgxOSAwLDMuNzQwMjcgLTEuODA3NDYsNi4yMDUgLTUu
NDIwMjgsNy4zOTUyNCAtMy41Njk2NCwxLjEwNDkxIC03LjI2NjczLDEuNjU1NzkgLTExLjA5MjMy
LDEuNjU1NzkgLTEwLjExNTkxLDAgLTE4Ljc2NTYyLC0zLjU4OTY1IC0yNS45NTAxOSwtMTAuNzc0
MjMgLTcuMTgxNCwtNy4xODM1MSAtMTAuNzc0MjIsLTE1LjgzMjE3IC0xMC43NzQyMiwtMjUuOTUw
MTggMCwtMTAuMTE1OTIgMy41OTE3NiwtMTguNzYzNTIgMTAuNzc0MjIsLTI1Ljk1MDIgNy4xODM1
MSwtNy4xODE0IDE1LjgzMzIyLC0xMC43NzQyMiAyNS45NTAxOSwtMTAuNzc0MjIgMy44MjM0OCww
LjAwMiA3LjUyMTYyLDAuNTc4MjcgMTEuMDkxMjYsMS43MjQyNiB6IiAvPgorICAgICAgPHBhdGgg
ZD0ibSA3NDguMTk4MjksMTA4LjQxMjQ2IGMgMi4wODEzMiwwIDMuODg3NzMsMC43NDQ2OSA1LjQy
MDI5LDIuMjMxOTQgMS41Mjk0LDEuNTI4MzQgMi4yOTUxNCwzLjM1NzkzIDIuMjk1MTQsNS40ODI0
NCB2IDQ0LjE4Mjg0IGggMi40MjI1OSBjIDUuNDQwMzEsMCAxMC4xNzgwNSwtMS44MDY0MiAxNC4y
MTg1MiwtNS40MjAzIDMuOTUxOTgsLTMuNjEyODMgNi4yMDM5NCwtOC4wNzQ2MSA2Ljc1NjkzLC0x
My4zODg1MiAwLjI1NDkxLC0xLjk5NzA1IDEuMTA1OTcsLTMuNjM0OTQgMi41NTExLC00LjkwODM3
IDEuNDQ0MDgsLTEuMzU5ODIgMy4xNjUxNywtMi4wNDEzMSA1LjE2MzI4LC0yLjA0MTMxIGggMC4x
OTA2NiBjIDIuMjU0MDUsMCA0LjE0NTc4LDAuODUyMTIgNS42NzUxNywyLjU1MTA5IDEuMzYwODcs
MS40ODcyNyAyLjA0MDI2LDMuMjA5NDIgMi4wNDAyNiw1LjE2MzI5IDAsMC4yNTQ5MSAtMC4wMjIy
LDAuNTMyOTggLTAuMDYzMiwwLjgyODk1IC0xLjAyMDY0LDEwLjY2ODg5IC01LjEwMTE1LDE4LjY1
OTIzIC0xMi4yNDE0NywyMy45NzEwMyAzLjczOTIyLDIuMjk4MzEgNy4xODI0Niw2LjE4NjA0IDEw
LjMyOTczLDExLjY2ODQ5IDMuMjcxNTUsNS42NTMwNiA0LjkwOTQ0LDExLjc1NDgzIDQuOTA5NDQs
MTguMjk2ODggdiAzLjI1NDcxIGMgMCwyLjE2NjY0IC0wLjc2NjgsMy45NzIgLTIuMjk1MTUsNS40
MTcxMyAtMS41MzI1NSwxLjUzMjU2IC0zLjMzNzkxLDIuMjk2MTkgLTUuNDIwMywyLjI5NjE5IGgg
LTAuMTkxNyBjIC0yLjA4MzQyLDAgLTMuODg4NzksLTAuNzYzNjMgLTUuNDE5MjIsLTIuMjk2MTkg
LTEuNTMwNDUsLTEuNDQ0MDggLTIuMjk1MTQsLTMuMjUwNDkgLTIuMjk1MTQsLTUuNDE3MTMgdiAt
My4yNTQ3MSBjIC0wLjA0NDIsLTUuNzc2MjkgLTIuMTA1NTUsLTEwLjczMTAyIC02LjE4NSwtMTQu
ODU1NzUgLTQuMTIzNjcsLTQuMDc5NDQgLTkuMDk3MzYsLTYuMTE4NjMgLTE0LjkxODk2LC02LjEx
ODYzIGggLTUuMjI3NTQgdiAyNC4yMjgwNCBjIDAsMi4xNjY2NCAtMC43NjU3NCwzLjk3MTk5IC0y
LjI5NTE0LDUuNDE3MTIgLTEuNTMxNSwxLjUzMjU2IC0zLjMzODk3LDIuMjk2MjEgLTUuNDIwMjgs
Mi4yOTYyMSBoIC0wLjE5MzgxIGMgLTIuMDgyMzcsMCAtMy44ODY2OCwtMC43NjM2NSAtNS40MTgx
OSwtMi4yOTYyMSAtMS41MjkzOSwtMS40NDQwNyAtMi4yOTUxNSwtMy4yNTA0OCAtMi4yOTUxNSwt
NS40MTcxMiB2IC04NC4xNTg3OSBjIDAsLTIuMTI1NTYgMC43NjU3NiwtMy45NTQwOCAyLjI5NTE1
LC01LjQ4MjQzIDEuNTMwNDUsLTEuNDg3MjcgMy4zMzU4MiwtMi4yMzE5NSA1LjQxODE5LC0yLjIz
MTk1IGggMC4xOTM4MSB6IiAvPgorICAgICAgPHBhdGggZD0ibSA4NzYuODU4MDEsMTU1Ljk3NTM0
IGMgMC41MDk4LDEuMDYxNzMgMC43NjQ2OSwyLjE0MzQ2IDAuNzY0NjksMy4yNTA0OCAwLDAuODkz
MiAtMC4xNzA2MywxLjc4NTM2IC0wLjUwODc0LDIuNjc4NTQgLTAuNzIzNjIsMS45OTcwNyAtMi4w
ODM0MiwzLjQ0MjIgLTQuMDgwNDksNC4zMzQzNCAtNS45NTExNSwyLjY3ODU0IC0xMy43NzE5MSw2
LjIwNzExIC0yMy40NjIyOSwxMC41ODQ2MyAtMTIuMDI4NjksNS40MzkyNCAtMTkuMDg0NzYsOC42
NDg2NiAtMjEuMTY3MTUsOS42MjgyMyAzLjIyODM4LDQuMDc5NDQgOC4yNjYzMiw2LjExODYzIDE1
LjExMDY2LDYuMTE4NjMgNC41NDYwNiwwIDguNjY5NzMsLTEuMzM3NjkgMTIuMzY4OTMsLTQuMDE2
MjUgMy42MTE3NiwtMi42MzUzNCA2LjE0MDc1LC02LjAzNTQxIDcuNTg1ODcsLTEwLjIwMjI3IDEu
MjMyMzgsLTMuNDg1MzggMy42OTkyLC01LjIyNzU0IDcuMzk1MjQsLTUuMjI3NTQgMi42MzUzNiww
IDQuNzM5ODUsMS4xMDcwMiA2LjMxMzQ4LDMuMzEzNjkgMC45NzUzNiwxLjM2MTkzIDEuNDY1MTUs
Mi43ODU5OCAxLjQ2NTE1LDQuMjczMjUgMCwwLjg5MzIgLTAuMTY5NTgsMS44MDY0MSAtMC41MDk4
LDIuNzQwNjkgLTIuNTA3OTEsNy4yNjk4OCAtNi45MDY1LDEzLjEzNTczIC0xMy4xOTY4MSwxNy41
OTk2MSAtNi4zNzU2Myw0LjYzMDMxIC0xMy41MTU5OCw2Ljk0NzU3IC0yMS40MjIwNiw2Ljk0NzU3
IC0xMC4xMTU5LDAgLTE4Ljc2NTYxLC0zLjU4OTY1IC0yNS45NDgwOCwtMTAuNzc0MiAtNy4xODM1
MSwtNy4xODM1MyAtMTAuNzc1MjYsLTE1LjgzMjE5IC0xMC43NzUyNiwtMjUuOTUwMiAwLC0xMC4x
MTU5MSAzLjU5MTc1LC0xOC43NjM1MSAxMC43NzUyNiwtMjUuOTUwMTkgNy4xODE0MSwtNy4xODE0
IDE1LjgzMjE4LC0xMC43NzQyMiAyNS45NDgwOCwtMTAuNzc0MjIgNy4zMDg4NywwIDEzLjk4MzY0
LDEuOTk5MTYgMjAuMDE5MDYsNS45OTIyMyA1Ljk5MjIzLDMuOTE1MTIgMTAuNDMyOTQsOS4wNTUy
NCAxMy4zMjQyNiwxNS40MzI5OCB6IG0gLTMzLjM0NDM2LC01LjY3ODM2IGMgLTUuODY0NzksMCAt
MTAuODYwNTksMi4wNjM0MyAtMTQuOTgzMjIsNi4xODYwNCAtNC4wODA0OSw0LjEyNDczIC02LjEy
MDc0LDkuMTE5NDkgLTYuMTIwNzQsMTQuOTgzMjIgdiAwLjQ0NjYxIGwgMzUuNjM5NTIsLTE2LjAw
MjgyIGMgLTMuMTQ1MTYsLTMuNzM4MTcgLTcuOTkwMzQsLTUuNjEzMDUgLTE0LjUzNTU2LC01LjYx
MzA1IHoiIC8+CisgICAgICA8cGF0aCBkPSJtIDg5OC4wMjQxMSwxMDguNDEyNDYgYyAyLjA4MjM4
LDAgMy44ODg3OSwwLjc0NDY5IDUuNDIwMjgsMi4yMzE5NCAxLjUyOTM5LDEuNTI4MzQgMi4yOTUx
NSwzLjM1NzkzIDIuMjk1MTUsNS40ODI0NCB2IDE4LjQyNDM0IGggOS41NjM5OCBjIDIuMDgyMzcs
MCAzLjg4NzcyLDAuNzY1NzUgNS40MjAyOCwyLjI5ODMxIDEuNTI5NCwxLjUyODM0IDIuMjkzMDQs
My4zNTc5MyAyLjI5MzA0LDUuNDgwMzIgdiAwLjEyNzQ1IGMgMCwyLjE2ODc2IC0wLjc2MzY0LDMu
OTc2MjEgLTIuMjkzMDQsNS40MjAzIC0xLjUzMTUsMS41MjgzNCAtMy4zMzc5MSwyLjI5NjE5IC01
LjQyMDI4LDIuMjk2MTkgaCAtOS41NjM5OCB2IDM3LjgwNDA1IGMgMCwxLjIzNDQ2IDAuNDIzNDMs
Mi4yNzcyNCAxLjI3NTU0LDMuMTI1MTQgMC44NTAwMiwwLjg1MjEyIDEuOTEyOCwxLjI3NTU1IDMu
MTg3MywxLjI3NTU1IGggNS4xMDExNCBjIDIuMDgyMzcsMCAzLjg4NzcyLDAuNzY1NzQgNS40MjAy
OCwyLjI5NjE5IDEuNTI5NCwxLjUzMDQ1IDIuMjkzMDQsMy4zNTg5OCAyLjI5MzA0LDUuNDgyNDMg
diAwLjEyOTU0IGMgMCwyLjE2NjY0IC0wLjc2MzY0LDMuOTcxOTkgLTIuMjkzMDQsNS40MTcxMSBD
IDkxOS4xOTIzLDIwNy4yMzYzNSA5MTcuMzg1ODksMjA4IDkxNS4zMDM1MiwyMDggaCAtNS4xMDEx
NCBjIC01LjUyNTYzLDAgLTEwLjI2NDQyLC0xLjk1Mzg3IC0xNC4yMTc0NiwtNS44NjQ3OCAtMy45
MTE5NiwtMy45NTE5OCAtNS44NjQ3OSwtOC42NzA3OCAtNS44NjQ3OSwtMTQuMTU1MzIgdiAtNzEu
ODUwOTUgYyAwLC0yLjEyNTU4IDAuNzY0NywtMy45NTQxIDIuMjk1MTUsLTUuNDgyNDUgMS41MzA0
NSwtMS40ODcyNSAzLjMzNjg2LC0yLjIzMTkzIDUuNDE5MjQsLTIuMjMxOTMgaCAwLjE4OTU5IHoi
IC8+CisgICAgICA8cGF0aCBkPSJtIDk1MS43MDg3NywxNTAuMTczNzUgYyAtMS44NzA2NiwwIC0z
LjQ0MzI0LDAuNjM2MiAtNC43MTc3MywxLjkxMDcgLTEuMjc1NTYsMS4zMTg3MiAtMS45MTI4MSwy
Ljg5MDI1IC0xLjkxMjgxLDQuNzE3NzMgMCwyLjU1MTEgMS4yMzIzOCw0LjQ2Mzg5IDMuNjk3MTEs
NS43MzczMyAwLjg1MjEsMC40Njg3MiA0LjQwMDY3LDEuNTMwNDUgMTAuNjQ4ODYsMy4xODgzNCA1
LjA1NjkxLDEuNDQ2MTkgOC44MTgyNSwzLjMzNjg2IDExLjI4NDAyLDUuNjc0MTMgMy41Mjc1MSwz
LjM1ODk4IDUuMjkxOCw4LjE0MDk3IDUuMjkxOCwxNC4zNDcwMyAwLDYuMTE4NjIgLTIuMTY4NzYs
MTEuMzY4MjkgLTYuNTAzMSwxNS43NDU4MSAtNC4zNzc1Miw0LjMzNjQ0IC05LjYyODIyLDYuNTAz
MDggLTE1Ljc0Nzg5LDYuNTAzMDggaCAtMTYuNjQwMDcgYyAtMi4wODM0MiwwIC0zLjg4ODc5LC0w
Ljc2MzY1IC01LjQyMDI4LC0yLjI5NjIxIC0xLjUzMDQ1LC0xLjQ0NDA3IC0yLjI5NDEsLTMuMjUw
NDggLTIuMjk0MSwtNS40MTcxMiB2IC0wLjEyOTUzIGMgMCwtMi4xMjM0NSAwLjc2MzY1LC0zLjk1
MTk4IDIuMjk0MSwtNS40ODI0MyAxLjUzMDQ1LC0xLjUzMDQ1IDMuMzM2ODYsLTIuMjk2MTkgNS40
MjAyOCwtMi4yOTYxOSBoIDE3LjI3NzMgYyAxLjg2OTYyLDAgMy40NDQzLC0wLjYzNjIgNC43MTc3
NSwtMS45MTA3IDEuMjc1NTQsLTEuMjc1NTQgMS45MTI3OSwtMi44NDcwNyAxLjkxMjc5LC00Ljcx
Nzc0IDAsLTIuMzM5MzcgLTEuMjExMywtNC4xMDM2NiAtMy42MzI4MywtNS4yOTA3MyAtMC42Mzkz
NiwtMC4zMDAxOCAtNC4yMDksLTEuMzYxOTIgLTEwLjcxMjA4LC0zLjE4ODM0IC01LjA1OTAxLC0x
LjQ4NzI1IC04LjgyMTQsLTMuNDQ1MzUgLTExLjI4NjEzLC01Ljg2NjkgLTMuNTI4NTYsLTMuNDQy
MTcgLTUuMjkwNzMsLTguMzA5NDkgLTUuMjkwNzMsLTE0LjU5OTggMCwtNi4xMjA3MyAyLjE2ODc1
LC0xMS4zNDcyMSA2LjUwNDEzLC0xNS42ODI2MSA0LjM3NjQ3LC00LjM3NzUyIDkuNjI3MTgsLTYu
NTY4MzkgMTUuNzQ3OTEsLTYuNTY4MzkgaCAxMS43MzA2MyBjIDIuMTI2NiwwIDMuOTUzMDQsMC43
NjU3NSA1LjQ4MjQzLDIuMjk4MzEgMS41MzA0NSwxLjUyODM0IDIuMjk1MTQsMy4zNTc5MyAyLjI5
NTE0LDUuNDgwMzIgdiAwLjEyNzQ1IGMgMCwyLjE2ODc2IC0wLjc2NDY5LDMuOTc2MjIgLTIuMjk1
MTQsNS40MjAzIC0xLjUyOTM5LDEuNTI4MzQgLTMuMzU2ODcsMi4yOTYxOSAtNS40ODI0MywyLjI5
NjE5IHoiIC8+CisgICAgPC9nPgorICA8L2c+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy9sb2dvL2ljb24uc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vaWNvbi5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYjc2MDk0MGFhMTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvbG9nby9pY29uLnN2ZwpAQCAtMCwwICsxLDE1
IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI1NiIg
aGVpZ2h0PSIyNTYiIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KKyAgPGxpbmVhckdyYWRpZW50IGlk
PSJ3IiB4MT0iMCIgeTE9IjAiIHgyPSIwLjY2NjciIHkyPSIwLjY2NjciPgorICAgIDxzdG9wIG9m
ZnNldD0iMCUiIHN0b3AtY29sb3I9IiNmZmU4NzMiIC8+CisgICAgPHN0b3Agb2Zmc2V0PSIxMDAl
IiBzdG9wLWNvbG9yPSIjZmZkNDNiIiAvPgorICA8L2xpbmVhckdyYWRpZW50PgorICA8bGluZWFy
R3JhZGllbnQgaWQ9InMiIHgxPSIwIiB5MT0iMCIgeDI9IjAuNjY2NyIgeTI9IjAuNjY2NyI+Cisg
ICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVhOWZkNCIgLz4KKyAgICA8c3RvcCBv
ZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMzMDY5OTgiIC8+CisgIDwvbGluZWFyR3JhZGllbnQ+
CisgIDxnPgorICAgIDxwYXRoIGZpbGw9InVybCgjdykiIGQ9Im0gMTUxLjYwNzA4LDE1NC44MTYx
OCBjIC0wLjQzNzA0LDAuMDc0NyAtMC44ODY1NiwwLjEyOTc4IC0xLjM1NTcyLDAuMTQ5MzMgLTIu
NDU4MTMsMC4wNzY0IC00LjI1MzU3LC0wLjU4NjY1IC01LjgyMzM1LC0yLjE1MTA3IGwgLTguODky
NDYsLTguODU5NDIgLTExLjIzNDY0LC0xMS4xOTgwNSAtMzYuMDQwNzU3LC0zNS45MTk0NTIgYyAt
My40MzU2OCwtMy40MjIxNyAtNy4zMzI0ODUsLTUuMzQ3NDc0IC0xMS41ODk2MjYsLTUuNzIzNDY4
IC0yLjIyOTgwMywtMC4xOTgyMTkgLTQuNDczODc3LDAuMDMxMTEgLTYuNjQwMzU0LDAuNjc1NTQ1
IC0zLjI0MjEzMywwLjk0NDg3NSAtNi4xMzU1MjYsMi42NjQ4NDggLTguNTkzNjYyLDUuMTE2MzY2
IC0zLjgzNDM2OSwzLjgxOTQ5OSAtNS44NjM0OSw4LjQxNDk3OSAtNS44NzU5NzcsMTMuMjg3Nzk5
IC0wLjA2MDY1LDQuOTUyODEgMS45NTE1MjMsOS42MDA3NCA1LjgwODE5MiwxMy40NDQyNCBsIDU1
LjYyMjg5NCw1NS40MzY0OCBjIDEuODIyMTksMS44NDE3NSAyLjY1OTcxLDMuNzk1NDkgMi42MzM4
NCw2LjE0NTY4IGwgMC4wMDQsMC4yMDggYyAwLjA1MjcsMi40MzE5NiAtMC43NTk5MSw0LjM0NTcx
IC0yLjYyNjcsNi4yMDYxMiAtMS43ODAyOCwxLjc3NTk4IC0zLjgwOTQsMi42NTI0MSAtNi4zMDk0
NSwyLjc1NTUyIC0yLjQ1ODE0LDAuMDc2NCAtNC4yNTQ0NiwtMC41ODg0NCAtNS44MjUxNCwtMi4x
NTI4NiBMIDQ4LjcwMjU1MSwxMzYuMjYxOCBjIC01LjIxNDE3MiwtNS4xOTQ1OSAtMTEuNzAyODk5
LC02Ljk4NzQ1IC0xOC4yMjk5OCwtNS4wNDg4MSAtMy4yNDU3MDEsMC45NDMxIC02LjEzNTUyNywy
LjY2MzA3IC04LjU5NTQ0Niw1LjExNDU5IC0zLjgzNDM3LDMuODIxMjcgLTUuODY1Mjc1LDguNDE2
NzYgLTUuODc1OTc4LDEzLjI4OTU3IC0wLjA1NjE5LDQuOTUyODEgMS45NTE1MjQsOS42MDI1MiA1
LjgwNjQwOSwxMy40NDc4IGwgNTguMTA2ODksNTcuOTA1NzcgYyA4LjMxOTg0Miw4LjI5MTQzIDE5
LjM0MDQyMSwxMS45Mzc2IDMyLjc0MzMxNCwxMC44MzgwNiAxMi41Nzk2NywtMS4wMjA0MyAyMy4w
MjMxNywtNS41ODQ4IDMxLjAzNDQxLC0xMy41NzMxMyA3LjUxMjY1LC03LjQ4NjEgMTEuOTY0MjMs
LTE2LjM1MTc1IDEzLjI4Njk1LC0yNi40MjUzNyAxMC40NzIwNiwtMS42ODI2NCAxOS4yOTQ5NCwt
Ni4wNDUyNCAyNi4yNzUxMiwtMTMuMDAxNTggNC4wMTM2NCwtMy45OTk5NCA3LjE0OTYzLC04LjM5
NzIgOS40MDUzMSwtMTMuMTYxNTcgLTE0LjE1NTY5LC0wLjM5OTExIC0yOC4yMzY0NSwtNC4wMDk3
MiAtNDEuMDUyNDcsLTEwLjgzMDk1IHoiIC8+CisgICAgPHBhdGggZmlsbD0idXJsKCNzKSIgZD0i
bSAxOTYuOTYwMzgsMTQ2LjExODU0IGMgMC4xMDI1OSwtMTIuODQ1MTQgLTQuNDMwMTcsLTIzLjk4
NTQxIC0xMy41MDYzNSwtMzMuMTM0NiBMIDE0Ny41NzI5Miw3Ny4yMjUzNzQgYyAtMC4yNDM0OSwt
MC4yNDA4ODUgLTAuNDY0NjksLTAuNDg3OTkyIC0wLjY4Njc4LC0wLjc0NDg3NyAtMS40ODQxNiwt
MS43Mzk1MjkgLTIuMTg3ODgsLTMuNTgzMDU2IC0yLjIxMDE4LC01LjgwNzAyMiAtMC4wMjU5LC0y
LjQ3MDE4NCAwLjg0OTExLC00LjUwODM3NSAyLjc2MDUsLTYuNDA3OTAyIDEuOTE0MDYsLTEuOTA5
MzA0IDMuODUzMSwtMi43Mzc3MzUgNi4zNjU2NCwtMi42ODQ0MDMgMi41MzY2MiwwLjAyNCA0LjYy
NzI4LDAuOTQzMDk3IDYuNTcyNTcsMi44ODE3MzQgbCA2MC41OTE3OCw2MC4zODQ4NDYgMTIuMTE0
MDgsLTEyLjA2OTE0IGMgMS4xMjIwMywtMC45MDc1NSAxLjk1Nzc3LC0xLjc2ODg3IDIuODc4MjMs
LTIuOTM0MTggNS45MTg3OSwtNy41MTU0NCA1LjI2OTQ3LC0xOC4yNzI2MDkgLTEuNTEwMDMsLTI1
LjAyODk1IEwgMTg3LjIwNDU2LDM3LjcyNzMxNCBjIC05LjE5MzkzLC05LjE1NzE5MiAtMjAuMzY3
MDMsLTEzLjc3NjY3NyAtMzMuMTY3ODksLTEzLjcyNjkgLTEyLjk0MjY2LC0wLjA1MDY3IC0yNC4x
NDE2Myw0LjU0ODM3NSAtMzMuMjg3MzksMTMuNjYyOTAxIC05LjAyODkyLDguOTk2MzA3IC0xMy42
NDAxNSwxOS45MzkyNSAtMTMuNzAwOCwzMi40ODc1MDEgbCAtMC4wMDQsMC4xNDIyMiBjIC0wLjAw
MiwwLjE2Nzk5OCAtMC4wMDUsMC4zMzY4ODQgLTAuMDA1LDAuNTA2NjU5IC0wLjA5MSwxMi4yMzI3
MDEgNC4xMDcyOSwyMi45NTc4NyAxMi40ODE1NCwzMS44ODEyODUgMC40MDIyNiwwLjQzMDIyIDAu
ODAyNzQsMC44NTc3NyAxLjIyMjgzLDEuMjc4MjEgbCAzNS43NTA4OCwzNS42MjYxMiBjIDEuODg5
MDksMS44ODE3NCAyLjcxNzY5LDMuNzk2MzggMi42OTM2MSw2LjIwOTY4IGwgMC4wMDMsMC4yMDk3
NyBjIDAuMDUyNywyLjQzMTk3IC0wLjc2MDgxLDQuMzQ1NzEgLTIuNjI3Niw2LjIwNzkxIC0xLjQ0
NzU5LDEuNDM5MDkgLTMuMDYyODYsMi4yNzgxOCAtNC45NTY0LDIuNjAyNjIgMTIuODE2MDEsNi44
MjEyMyAyNi44OTY3NywxMC40MzE4NCA0MS4wNTI0NiwxMC44MzM2MiAyLjgwNTk4LC01LjkyNTI1
IDQuMjUwOSwtMTIuNDE4NDggNC4yOTkwNiwtMTkuNDM1MjYgeiIgLz4KKyAgICA8cGF0aCBmaWxs
PSIjZmZmZmZmIiBkPSJtIDIxNS42ODA5Myw5My4xODE1NzQgYyAyLjg0NzAxLC0yLjgzODE3OSA3
LjQ2MzU5LC0yLjgzNjQwMSAxMC4zMDg4MywwIDIuODQ0MzMsMi44MzQ2MjMgMi44NDYxMiw3LjQz
NTQ0NiAtMC4wMDIsMTAuMjcwOTU2IC0yLjg0MzQ1LDIuODM4MTggLTcuNDYyNzEsMi44MzgxOCAt
MTAuMzA3MDQsMCAtMi44NDUyNCwtMi44MzU1MSAtMi44NDc5MSwtNy40MzU0NDQgMCwtMTAuMjcw
OTU2IHoiIC8+CisgIDwvZz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xv
Z28vb2xkLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9sb2dvL29sZC5zdmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMDczMTM5ZTMzMTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvbG9nby9vbGQuc3ZnCkBAIC0wLDAgKzEsMTQgQEAKKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjEyMCIg
dmlld0JveD0iMCAwIDIxIDciPgorICA8bGluZWFyR3JhZGllbnQgaWQ9InciIHgxPSIwIiB5MT0i
MCIgeDI9IjEiIHkyPSIxIj4KKyAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNWE5
ZmQ0IiAvPgorICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIgLz4K
KyAgPC9saW5lYXJHcmFkaWVudD4KKyAgPGxpbmVhckdyYWRpZW50IGlkPSJzIiB4MT0iMCIgeTE9
IjAiIHgyPSIxIiB5Mj0iMSI+CisgICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Zm
ZTg3MyIgLz4KKyAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmQ0M2IiIC8+
CisgIDwvbGluZWFyR3JhZGllbnQ+CisgIDxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9InVy
bCgjdykiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIKKyAg
ICAgICAgICAgIHBvaW50cz0iMSwxIDEsNSA1LDUgNSwxIDUsNSA5LDUgOSwxIi8+CisgIDxwb2x5
bGluZSBmaWxsPSJub25lIiBzdHJva2U9InVybCgjcykiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIg
c3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIKKyAgICAgICAgICAgIHBvaW50cz0iMTksMSAxMSwxIDEx
LDMgMTksMyAxOSw1IDExLDUiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2xvZ28vdGlkZWxpZnQucG5nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vdGlkZWxpZnQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzE3ZGM0ZDk4NTJkCkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vdGlkZWxpZnQucG5n
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vdmVydGljYWwuc3ZnIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL2xvZ28vdmVydGljYWwuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYjA3ZmIyMjM4NzM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2xvZ28vdmVydGljYWwuc3ZnCkBAIC0wLDAgKzEsMzEgQEAKKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjMyMCIgdmll
d0JveD0iMCAwIDQ4MCAzMjAiPgorICA8bGluZWFyR3JhZGllbnQgaWQ9InciIHgxPSIwLjIzMzMi
IHkxPSIwIiB4Mj0iMC41ODg5IiB5Mj0iMC41MzMzIj4KKyAgICA8c3RvcCBvZmZzZXQ9IjAlIiBz
dG9wLWNvbG9yPSIjZmZlODczIiAvPgorICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xv
cj0iI2ZmZDQzYiIgLz4KKyAgPC9saW5lYXJHcmFkaWVudD4KKyAgPGxpbmVhckdyYWRpZW50IGlk
PSJzIiB4MT0iMC4yMzMzIiB5MT0iMCIgeDI9IjAuNTg4OSIgeTI9IjAuNTMzMyI+CisgICAgPHN0
b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVhOWZkNCIgLz4KKyAgICA8c3RvcCBvZmZzZXQ9
IjEwMCUiIHN0b3AtY29sb3I9IiMzMDY5OTgiIC8+CisgIDwvbGluZWFyR3JhZGllbnQ+CisgIDxn
PgorICAgIDxwYXRoIGZpbGw9InVybCgjdykiIGQ9Im0gMjYzLjQwNzA4LDE0Ni44MTYxOCBjIC0w
LjQzNzA0LDAuMDc0NyAtMC44ODY1NiwwLjEyOTc4IC0xLjM1NTcyLDAuMTQ5MzMgLTIuNDU4MTMs
MC4wNzY0IC00LjI1MzU3LC0wLjU4NjY1IC01LjgyMzM1LC0yLjE1MTA3IGwgLTguODkyNDYsLTgu
ODU5NDIgLTExLjIzNDY0LC0xMS4xOTgwNSAtMzYuMDQwNzYsLTM1LjkxOTQ1NCBjIC0zLjQzNTY4
LC0zLjQyMjE3IC03LjMzMjQ4LC01LjM0NzQ3NCAtMTEuNTg5NjIsLTUuNzIzNDY4IC0yLjIyOTgx
LC0wLjE5ODIxOSAtNC40NzM4OCwwLjAzMTExIC02LjY0MDM2LDAuNjc1NTQ1IC0zLjI0MjEzLDAu
OTQ0ODc1IC02LjEzNTUyLDIuNjY0ODQ4IC04LjU5MzY2LDUuMTE2MzY2IC0zLjgzNDM3LDMuODE5
NDk5IC01Ljg2MzQ5LDguNDE0OTc5IC01Ljg3NTk4LDEzLjI4NzgwMSAtMC4wNjA3LDQuOTUyODEg
MS45NTE1Myw5LjYwMDc0IDUuODA4MiwxMy40NDQyNCBsIDU1LjYyMjg5LDU1LjQzNjQ4IGMgMS44
MjIxOSwxLjg0MTc1IDIuNjU5NzEsMy43OTU0OSAyLjYzMzg0LDYuMTQ1NjggbCAwLjAwNCwwLjIw
OCBjIDAuMDUyNywyLjQzMTk2IC0wLjc1OTkxLDQuMzQ1NzEgLTIuNjI2Nyw2LjIwNjEyIC0xLjc4
MDI4LDEuNzc1OTggLTMuODA5NCwyLjY1MjQxIC02LjMwOTQ1LDIuNzU1NTIgLTIuNDU4MTQsMC4w
NzY0IC00LjI1NDQ2LC0wLjU4ODQ0IC01LjgyNTE0LC0yLjE1Mjg2IEwgMTYwLjUwMjU1LDEyOC4y
NjE4IGMgLTUuMjE0MTcsLTUuMTk0NTkgLTExLjcwMjksLTYuOTg3NDUgLTE4LjIyOTk4LC01LjA0
ODgxIC0zLjI0NTcsMC45NDMxIC02LjEzNTUzLDIuNjYzMDcgLTguNTk1NDUsNS4xMTQ1OSAtMy44
MzQzNywzLjgyMTI3IC01Ljg2NTI3LDguNDE2NzYgLTUuODc1OTcsMTMuMjg5NTcgLTAuMDU2Miw0
Ljk1MjgxIDEuOTUxNTIsOS42MDI1MiA1LjgwNjQxLDEzLjQ0NzggbCA1OC4xMDY4OSw1Ny45MDU3
NyBjIDguMzE5ODQsOC4yOTE0MyAxOS4zNDA0MiwxMS45Mzc2IDMyLjc0MzMxLDEwLjgzODA2IDEy
LjU3OTY3LC0xLjAyMDQzIDIzLjAyMzE3LC01LjU4NDggMzEuMDM0NDEsLTEzLjU3MzEzIDcuNTEy
NjUsLTcuNDg2MSAxMS45NjQyMywtMTYuMzUxNzUgMTMuMjg2OTUsLTI2LjQyNTM3IDEwLjQ3MjA2
LC0xLjY4MjY0IDE5LjI5NDk0LC02LjA0NTI0IDI2LjI3NTEyLC0xMy4wMDE1OCA0LjAxMzY0LC0z
Ljk5OTk0IDcuMTQ5NjMsLTguMzk3MiA5LjQwNTMxLC0xMy4xNjE1NyAtMTQuMTU1NjksLTAuMzk5
MTEgLTI4LjIzNjQ1LC00LjAwOTcyIC00MS4wNTI0NywtMTAuODMwOTUgeiIgLz4KKyAgICA8cGF0
aCBmaWxsPSJ1cmwoI3MpIiBkPSJtIDMwOC43NjAzOCwxMzguMTE4NTQgYyAwLjEwMjU5LC0xMi44
NDUxNCAtNC40MzAxNywtMjMuOTg1NDEgLTEzLjUwNjM1LC0zMy4xMzQ2IEwgMjU5LjM3MjkyLDY5
LjIyNTM3MiBjIC0wLjI0MzQ5LC0wLjI0MDg4NSAtMC40NjQ2OSwtMC40ODc5OTIgLTAuNjg2Nzgs
LTAuNzQ0ODc3IC0xLjQ4NDE2LC0xLjczOTUyOSAtMi4xODc4OCwtMy41ODMwNTYgLTIuMjEwMTgs
LTUuODA3MDIyIC0wLjAyNTksLTIuNDcwMTg0IDAuODQ5MTEsLTQuNTA4Mzc1IDIuNzYwNSwtNi40
MDc5MDIgMS45MTQwNiwtMS45MDkzMDQgMy44NTMxLC0yLjczNzczNSA2LjM2NTY0LC0yLjY4NDQw
MyAyLjUzNjYyLDAuMDI0IDQuNjI3MjgsMC45NDMwOTcgNi41NzI1NywyLjg4MTczNCBsIDYwLjU5
MTc4LDYwLjM4NDg0OCAxMi4xMTQwOCwtMTIuMDY5MTQgYyAxLjEyMjAzLC0wLjkwNzU1IDEuOTU3
NzcsLTEuNzY4ODcgMi44NzgyMywtMi45MzQxOCA1LjkxODc5LC03LjUxNTQ0MiA1LjI2OTQ3LC0x
OC4yNzI2MTEgLTEuNTEwMDMsLTI1LjAyODk1MiBMIDI5OS4wMDQ1NiwyOS43MjczMTIgYyAtOS4x
OTM5MywtOS4xNTcxOTIgLTIwLjM2NzAzLC0xMy43NzY2NzcgLTMzLjE2Nzg5LC0xMy43MjY5IC0x
Mi45NDI2NiwtMC4wNTA2NyAtMjQuMTQxNjMsNC41NDgzNzUgLTMzLjI4NzM5LDEzLjY2MjkwMSAt
OS4wMjg5Miw4Ljk5NjMwNyAtMTMuNjQwMTUsMTkuOTM5MjUgLTEzLjcwMDgsMzIuNDg3NTAxIGwg
LTAuMDA0LDAuMTQyMjIgYyAtMC4wMDIsMC4xNjc5OTggLTAuMDA1LDAuMzM2ODg0IC0wLjAwNSww
LjUwNjY1OSAtMC4wOTEsMTIuMjMyNzAxIDQuMTA3MjksMjIuOTU3ODcgMTIuNDgxNTQsMzEuODgx
Mjg1IDAuNDAyMjYsMC40MzAyMiAwLjgwMjc0LDAuODU3NzcgMS4yMjI4MywxLjI3ODIxIGwgMzUu
NzUwODgsMzUuNjI2MTIyIGMgMS44ODkwOSwxLjg4MTc0IDIuNzE3NjksMy43OTYzOCAyLjY5MzYx
LDYuMjA5NjggbCAwLjAwMywwLjIwOTc3IGMgMC4wNTI3LDIuNDMxOTcgLTAuNzYwODEsNC4zNDU3
MSAtMi42Mjc2LDYuMjA3OTEgLTEuNDQ3NTksMS40MzkwOSAtMy4wNjI4NiwyLjI3ODE4IC00Ljk1
NjQsMi42MDI2MiAxMi44MTYwMSw2LjgyMTIzIDI2Ljg5Njc3LDEwLjQzMTg0IDQxLjA1MjQ2LDEw
LjgzMzYyIDIuODA1OTgsLTUuOTI1MjUgNC4yNTA5LC0xMi40MTg0OCA0LjI5OTA2LC0xOS40MzUy
NiB6IiAvPgorICAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Im0gMzI3LjQ4MDkzLDg1LjE4MTU3
MiBjIDIuODQ3MDEsLTIuODM4MTc5IDcuNDYzNTksLTIuODM2NDAxIDEwLjMwODgzLDAgMi44NDQz
MywyLjgzNDYyMyAyLjg0NjEyLDcuNDM1NDQ2IC0wLjAwMiwxMC4yNzA5NTYgLTIuODQzNDUsMi44
MzgxOCAtNy40NjI3MSwyLjgzODE4IC0xMC4zMDcwNCwwIC0yLjg0NTI0LC0yLjgzNTUxIC0yLjg0
NzkxLC03LjQzNTQ0NCAwLC0xMC4yNzA5NTYgeiIgLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8ZyBm
aWxsPSIjZmZkNDNiIj4KKyAgICAgIDxwYXRoIGQ9Im0gMjUuNzE5Mzk4LDI4NC45MTgzOSBjIDAs
Mi41OTA3NSAwLjkxMjI5OSw0Ljc5ODc1IDIuNzM2ODk4LDYuNjIyNjkgMS44MjQ1OTksMS44MjY1
NyA0LjAzMzI1NSwyLjczODIxIDYuNjI1MzEzLDIuNzM4MjEgMi41OTE0MDIsMCA0LjgwMDA1OCwt
MC45MTE2NCA2LjYyNDAwMiwtMi43MzgyMSAxLjgyNTI1NCwtMS44MjM5NCAyLjczODIwOSwtNC4w
MzE5NCAyLjczODIwOSwtNi42MjI2OSB2IC0yMS43Nzk4NCBjIDAsLTEuMzIxMjYgMC40NzU4MTEs
LTIuNDU5MDEgMS40MjgwOSwtMy40MDk5OCAwLjk1MjI3OCwtMC45NTM1OSAyLjA4OTM3NSwtMS40
MzAwNiAzLjQxMTk0NywtMS40MzAwNiBoIDAuMDc5MyBjIDEuMzQ4MTMyLDAgMi40NzE0NjcsMC40
NzY0NyAzLjM3MTk2OSwxLjQzMDA2IDAuOTUyMjc4LDAuOTUwOTcgMS40Mjg3NDUsMi4wODkzOCAx
LjQyODc0NSwzLjQwOTk4IHYgMjEuNzc5ODQgYyAwLDIuNTkwNzUgMC45MTIyOTksNC43OTg3NSAy
LjczODIwOSw2LjYyMjY5IDEuODIzOTQ0LDEuODI2NTcgNC4wMzEyODksMi43MzgyMSA2LjYyNDAw
MiwyLjczODIxIDIuNjE4Mjc0LDAgNC44MzkzODIsLTAuOTExNjQgNi42NjM5ODEsLTIuNzM4MjEg
MS44MjUyNTQsLTEuODIzOTQgMi43MzgyMDksLTQuMDMxOTQgMi43MzgyMDksLTYuNjIyNjkgdiAt
MjEuNzc5ODQgYyAwLC0xLjMyMTI2IDAuNDc1MTU2LC0yLjQ1OTAxIDEuNDI4MDksLTMuNDA5OTgg
MC44OTc4ODEsLTAuOTUzNTkgMi4wMjI1MjYsLTEuNDMwMDYgMy4zNzE5NjksLTEuNDMwMDYgaCAw
LjA3ODY1IGMgMS4zMjMyMjgsMCAyLjQ2MDMyNSwwLjQ3NjQ3IDMuNDExOTQ4LDEuNDMwMDYgMC45
MjYwNjIsMC45NTA5NyAxLjM4ODc2NiwyLjA4OTM4IDEuMzg4NzY2LDMuNDA5OTggdiAyMS43Nzk4
NCBjIDAsNS4yNjIxMSAtMS44NjUyMzMsOS43NTgwNyAtNS41OTMwNzcsMTMuNDg2NTcgLTMuNzI5
MTU2LDMuNzI4NSAtOC4yMjU3Nyw1LjU5MzczIC0xMy40ODc4NzYsNS41OTM3MyAtNi4yOTQ5OTgs
MCAtMTEuMDI4MjA3LC0yLjA4ODA3IC0xNC4yMDI5MDQsLTYuMjY3NDcgLTMuMTk5NjAyLDQuMTc5
NCAtNy45NDcyMyw2LjI2NzQ3IC0xNC4yNDA5MTYsNi4yNjc0NyAtNS4yNjI3NjMsMCAtOS43NTkz
NzcsLTEuODY1MjMgLTEzLjQ4Nzg3NiwtNS41OTM3MyBDIDE3Ljg2NjU0NCwyOTQuNjc2NDYgMTYs
MjkwLjE4MTE1IDE2LDI4NC45MTgzOSB2IC0yMS43Nzk4NCBjIDAsLTEuMzIxMjYgMC40NzY0Njcs
LTIuNDU5MDEgMS40Mjg3NDUsLTMuNDA5OTggMC45NTE2MjMsLTAuOTUzNTkgMi4wNzU2MTIsLTEu
NDMwMDYgMy4zNzE5NjksLTEuNDMwMDYgaCAwLjExOTI4IGMgMS4yOTU3MDIsMCAyLjQxOTAzNiww
LjQ3NjQ3IDMuMzcyNjI1LDEuNDMwMDYgMC45NTA5NjcsMC45NTA5NyAxLjQyNzQzNCwyLjA4OTM4
IDEuNDI3NDM0LDMuNDA5OTggdiAyMS43Nzk4NCB6IiAvPgorICAgICAgPHBhdGggZD0ibSAxMzIu
OTQ4MDEsMjcxLjYyOTEgYyAwLjMxNzg2LDAuNjYwNjMgMC40NzcxMiwxLjMzMzcxIDAuNDc3MTIs
Mi4wMjI1MiAwLDAuNTU1NzcgLTAuMTA1NTEsMS4xMTA4OSAtMC4zMTcyLDEuNjY2NjUgLTAuNDUw
MjYsMS4yNDI2MiAtMS4yOTYzNiwyLjE0MTgxIC0yLjUzODk4LDIuNjk2OTIgLTMuNzAyOTMsMS42
NjY2NSAtOC41Njg1MywzLjg2MjIgLTE0LjU5ODc1LDYuNTg1OTkgLTcuNDg0NTMsMy4zODQ0MiAt
MTEuODc0OTcsNS4zODEzOSAtMTMuMTcwNjcsNS45OTA5IDIuMDA5NDIsMi41MzgzMiA1LjE0NDE0
LDMuODA3MTUgOS40MDIxOSwzLjgwNzE1IDIuODI5MzEsMCA1LjM5NTE1LC0wLjgzMjM0IDcuNjk1
NTYsLTIuNDk5IDIuMjQ3OTgsLTEuNjM5NzcgMy44MjIyMiwtMy43NTUzNyA0LjcyMTQxLC02LjM0
ODA4IDAuNzY3NDYsLTIuMTY4NjggMi4zMDEwNywtMy4yNTI2OSA0LjYwMTQ4LC0zLjI1MjY5IDEu
NjM5MTIsMCAyLjk0ODU5LDAuNjg4ODEgMy45MjcwOCwyLjA2MTg1IDAuNjA4MiwwLjg0NzQyIDAu
OTEyMywxLjczMzUgMC45MTIzLDIuNjU4OTEgMCwwLjU1NTc3IC0wLjEwNTUyLDEuMTIzOTkgLTAu
MzE2NTUsMS43MDUzMiAtMS41NjA0OCw0LjUyMzQ4IC00LjI5ODY5LDguMTczMzQgLTguMjExMzUs
MTAuOTUwODcgLTMuOTY3MDYsMi44ODEwOCAtOC40MTA1OSw0LjMyMjkzIC0xMy4zMjk5Myw0LjMy
MjkzIC02LjI5NDM0LDAgLTExLjY3NjM5LC0yLjIzMzU2IC0xNi4xNDU0NzQsLTYuNzAzOTUgLTQu
NDY5NzQzLC00LjQ2OTc1IC02LjcwNDYxNSwtOS44NTExNCAtNi43MDQ2MTUsLTE2LjE0Njc5IDAs
LTYuMjk0MzQgMi4yMzQ4NzIsLTExLjY3NTA3IDYuNzA0NjE1LC0xNi4xNDY3OCA0LjQ2ODQzNCwt
NC40Njg0MyA5Ljg1MTEzNCwtNi43MDM5NiAxNi4xNDU0NzQsLTYuNzAzOTYgNC41NDc3MywwIDgu
NzAwMjcsMS4yNDM5MiAxMi40NTYyOSwzLjcyODUgMy43Mjc4NSwyLjQzNjA3IDYuNDkxNjIsNS42
MzQzNyA4LjI5LDkuNjAyNzQgeiBtIC0yMC43NDY5NSwtMy41MzMyIGMgLTMuNjQ5ODUsMCAtNi43
NTc3LDEuMjgzOTEgLTkuMzIyODksMy44NDkwOSAtMi41Mzg5NywyLjU2NjUgLTMuODA4NDUyLDUu
Njc0MzUgLTMuODA4NDUyLDkuMzIyODkgdiAwLjI3Nzg5IGwgMjIuMTc1NjkyLC05Ljk1NzMxIGMg
LTEuOTU2MzMsLTIuMzI1OTcgLTQuOTcxNzcsLTMuNDkyNTYgLTkuMDQ0MzUsLTMuNDkyNTYgeiIg
Lz4KKyAgICAgIDxwYXRoIGQ9Im0gMTQ2LjExOTk5LDI0Mi4wMzQ0MiBjIDEuMjk1NywwIDIuNDE5
MDQsMC40NjMzNiAzLjM3MTk3LDEuMzg4NzYgMC45NTIyOCwwLjk1MDk3IDEuNDI4NzQsMi4wODkz
OCAxLjQyODc0LDMuNDExMyB2IDE1LjQzMTEgYyAyLjk4NzkyLC0yLjY0MzE4IDcuMzY1MjUsLTMu
OTY3MDcgMTMuMTMwMDQsLTMuOTY3MDcgNi4yOTQzNCwwIDExLjY3NjM4LDIuMjM0ODggMTYuMTQ2
MTMsNi43MDM5NiA0LjQ2OTA4LDQuNDcxMDYgNi43MDQ2MSw5Ljg1MjQ1IDYuNzA0NjEsMTYuMTQ2
NzkgMCw2LjI5NDk5IC0yLjIzNTUzLDExLjY3NjM4IC02LjcwNDYxLDE2LjE0Njc4IC00LjQ2OTA5
LDQuNDcwNCAtOS44NTExMyw2LjcwMzk2IC0xNi4xNDYxMyw2LjcwMzk2IC02LjI5NSwwIC0xMS42
NjI2MiwtMi4yMjExMSAtMTYuMTA1NDksLTYuNjY1MjkgLTQuNDcwNCwtNC40MTQ2OSAtNi43MTgz
OCwtOS43NzA1MiAtNi43NDQ2LC0xNi4wNjYxNyB2IC0zNC40MzM0MSBjIDAsLTEuMzIyNTcgMC40
NzY0NywtMi40NjAzMiAxLjQyODc1LC0zLjQxMTI5IDAuOTUxNjIsLTAuOTI1NDEgMi4wNzU2MSwt
MS4zODg3NyAzLjM3MTk3LC0xLjM4ODc3IGggMC4xMTg2MiB6IG0gMTcuOTMwMDksMjYuMDYxNDgg
YyAtMy42NDkxOSwwIC02Ljc1NzA0LDEuMjgzOTEgLTkuMzIyODgsMy44NDkwOSAtMi41Mzc2Nywy
LjU2NjUgLTMuODA3ODEsNS42NzQzNSAtMy44MDc4MSw5LjMyMjg5IDAsMy42MjM2NCAxLjI3MDE0
LDYuNzE3NzIgMy44MDc4MSw5LjI4MjkxIDIuNTY1ODQsMi41NjUxOSA1LjY3MzAzLDMuODQ3Nzgg
OS4zMjI4OCwzLjg0Nzc4IDMuNjIzNjQsMCA2LjcxNzczLC0xLjI4MjU5IDkuMjgzNTcsLTMuODQ3
NzggMi41NjM4NywtMi41NjUxOSAzLjg0NzEyLC01LjY1OTI3IDMuODQ3MTIsLTkuMjgyOTEgMCwt
My42NDc4OCAtMS4yODMyNSwtNi43NTYzOSAtMy44NDcxMiwtOS4zMjI4OSAtMi41NjU4NCwtMi41
NjUxOCAtNS42NTkyNywtMy44NDkwOSAtOS4yODM1NywtMy44NDkwOSB6IiAvPgorICAgIDwvZz4K
KyAgICA8ZyBmaWxsPSIjMzA2OTk4Ij4KKyAgICAgIDxwYXRoIGQ9Im0gMjA1Ljk0MjQ2LDI2OC4w
MTkyMiBjIC0xLjE2Mzk3LDAgLTIuMTQyNDcsMC4zOTU4NiAtMi45MzU0OCwxLjE4ODg4IC0wLjc5
MzY4LDAuODIwNTQgLTEuMTkwMTksMS43OTgzOCAtMS4xOTAxOSwyLjkzNTQ4IDAsMS41ODczNSAw
Ljc2NjgxLDIuNzc3NTMgMi4zMDE3MiwzLjU2OTg5IDAuNTI4MjUsMC4yOTE2NSAyLjczNjksMC45
NTIyOCA2LjYyNDY2LDEuOTgzODYgMy4xNDcxNywwLjg5OTg1IDUuNDg2OTEsMi4wNzYyNyA3LjAy
MDUxLDMuNTMwNTcgMi4xOTYyMSwyLjA5MDAzIDMuMjkyNjcsNS4wNjU0OSAzLjI5MjY3LDguOTI3
MDQgMCwzLjgwNzE0IC0xLjM0ODc5LDcuMDczNiAtNC4wNDU3MSw5Ljc5NzM5IC0yLjcyNDQ0LDIu
Njk4MjMgLTUuOTkwOSw0LjA0NjM2IC05Ljc5ODcsNC4wNDYzNiBoIC0xMC4zNTM4MSBjIC0xLjI5
NzAxLDAgLTIuNDE5NjksLTAuNDc1MTYgLTMuMzcyNjIsLTEuNDI4NzUgLTAuOTUyMjgsLTAuODk4
NTMgLTEuNDI4NzUsLTIuMDIyNTIgLTEuNDI4NzUsLTMuMzcwNjUgdiAtMC4wODA2IGMgMCwtMS4z
MjEyNiAwLjQ3NjQ3LC0yLjQ1OTAxIDEuNDI4NzUsLTMuNDExMjkgMC45NTIyNywtMC45NTIyOCAy
LjA3NTYxLC0xLjQyODc0IDMuMzcyNjIsLTEuNDI4NzQgaCAxMC43NTAzMiBjIDEuMTYzMzEsMCAy
LjE0MjQ2LC0wLjM5NTg2IDIuOTM1NDgsLTEuMTg4ODggMC43OTM2OCwtMC43OTM2NyAxLjE5MDE5
LC0xLjc3MTUxIDEuMTkwMTksLTIuOTM1NDggMCwtMS40NTU2MSAtMC43NTM3LC0yLjU1MzM5IC0y
LjI2MDQ0LC0zLjI5MjAxIC0wLjM5NjUsLTAuMTg2NzggLTIuNjE4OTIsLTAuODQ3NDIgLTYuNjY1
MjksLTEuOTgzODYgLTMuMTQ3ODIsLTAuOTI1NCAtNS40ODg4NywtMi4xNDM3NyAtNy4wMjI0Nywt
My42NTA1MSAtMi4xOTU1NSwtMi4xNDE4IC0zLjI5MjAyLC01LjE3MDM1IC0zLjI5MjAyLC05LjA4
NDMyIDAsLTMuODA4NDYgMS4zNDk0NSwtNy4wNjA0OSA0LjA0NzAyLC05Ljc1ODA3IDIuNzIzMTQs
LTIuNzIzNzkgNS45OTAyNCwtNC4wODcgOS43OTgwNSwtNC4wODcgaCA3LjI5OTcgYyAxLjMyMTky
LDAgMi40NTk2NywwLjQ3NjQ3IDMuNDExOTUsMS40MzAwNiAwLjk1MTYyLDAuOTUwOTcgMS40Mjgw
OSwyLjA4OTM4IDEuNDI4MDksMy40MDk5OCB2IDAuMDc5MyBjIDAsMS4zNDk0NSAtMC40NzY0Nywy
LjQ3NDA5IC0xLjQyODA5LDMuMzcyNjMgLTAuOTUyMjgsMC45NTA5NyAtMi4wOTAwMywxLjQyODc0
IC0zLjQxMTk1LDEuNDI4NzQgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0gMjQ5LjA2NDM0LDI1OC4y
OTg1MSBjIDYuMjk0MzQsMCAxMS42NzU3MywyLjIzNDg4IDE2LjE0NjEyLDYuNzAzOTYgNC40Njkw
OSw0LjQ3MTA2IDYuNzAzOTYsOS44NTI0NSA2LjcwMzk2LDE2LjE0Njc5IDAsNi4yOTQ5OSAtMi4y
MzQ4NywxMS42NzYzOCAtNi43MDM5NiwxNi4xNDY3OCAtNC40Njk3NCw0LjQ2OTc0IC05Ljg1MTc4
LDYuNzAzOTYgLTE2LjE0NjEyLDYuNzAzOTYgLTYuMjk0MzUsMCAtMTEuNjc2MzksLTIuMjMzNTYg
LTE2LjE0NTQ4LC02LjcwMzk2IC00LjQ2OTc0LC00LjQ2OTc0IC02LjcwNDYxLC05Ljg1MTEzIC02
LjcwNDYxLC0xNi4xNDY3OCAwLC02LjI5NDM0IDIuMjM0ODcsLTExLjY3NTA4IDYuNzA0NjEsLTE2
LjE0Njc5IDQuNDY5MDksLTQuNDY5MDggOS44NTExMywtNi43MDM5NiAxNi4xNDU0OCwtNi43MDM5
NiB6IG0gMCw5Ljc5NzM5IGMgLTMuNjQ5ODYsMCAtNi43NTc3LDEuMjgzOTEgLTkuMzIyODksMy44
NDkwOSAtMi41Mzk2MywyLjU2NjUgLTMuODA5MTEsNS42NzQzNSAtMy44MDkxMSw5LjMyMjg5IDAs
My42MjM2NCAxLjI2OTQ4LDYuNzE3NzIgMy44MDkxMSw5LjI4MjkxIDIuNTY1MTksMi41NjUxOSA1
LjY3MjM4LDMuODQ3NzggOS4zMjI4OSwzLjg0Nzc4IDMuNjIyOTgsMCA2LjcxNzA2LC0xLjI4MjU5
IDkuMjgyOTEsLTMuODQ3NzggMi41NjUxOCwtMi41NjUxOSAzLjg0Nzc4LC01LjY1OTI3IDMuODQ3
NzgsLTkuMjgyOTEgMCwtMy42NDc4OCAtMS4yODI2LC02Ljc1NjM5IC0zLjg0Nzc4LC05LjMyMjg5
IC0yLjU2NTg1LC0yLjU2NTE4IC01LjY1OTI4LC0zLjg0OTA5IC05LjI4MjkxLC0zLjg0OTA5IHoi
IC8+CisgICAgICA8cGF0aCBkPSJtIDMwNy4yMjE0NiwyNTkuMzcwMDcgYyAyLjI0ODY0LDAuNzE0
MzggMy4zNzI2MywyLjI0Nzk4IDMuMzcyNjMsNC42MDE0OCB2IDAuMTk5ODkgYyAwLDEuNjExNiAt
MC42NDg4NCwyLjg5NDE5IC0xLjk0NDU0LDMuODQ3NzggLTAuODk5MTksMC42MzM3NiAtMS44MjUy
NSwwLjk1MDk3IC0yLjc3NjIyLDAuOTUwOTcgLTAuNTAzMzQsMCAtMS4wMTkxMywtMC4wNzkzIC0x
LjU0NzM3LC0wLjIzNzkxIC0xLjI5NjM2LC0wLjQyMjcyIC0yLjYzMjA0LC0wLjYzNjM4IC00LjAw
NjM4LC0wLjYzNjM4IC0zLjY0OTg2LDAgLTYuNzU4MzYsMS4yODM5MSAtOS4zMjI4OSwzLjg0OTA5
IC0yLjUzOTYzLDIuNTY2NSAtMy44MDg0Niw1LjY3NDM1IC0zLjgwODQ2LDkuMzIyODkgMCwzLjYy
MzY0IDEuMjY4ODMsNi43MTc3MiAzLjgwODQ2LDkuMjgyOTEgMi41NjQ1MywyLjU2NTE5IDUuNjcy
MzgsMy44NDc3OCA5LjMyMjg5LDMuODQ3NzggMS4zNzUsMCAyLjcxMDY4LC0wLjIxMTAzIDQuMDA2
MzgsLTAuNjM1MDcgMC41MDIwMywtMC4xNTg2IDEuMDA0NzEsLTAuMjM3OSAxLjUwNzM5LC0wLjIz
NzkgMC45NzcxOCwwIDEuOTE3NjcsMC4zMTg1MSAyLjgxNjg2LDAuOTUzNTggMS4yOTU3LDAuOTUw
OTcgMS45NDQ1MywyLjI0Nzk4IDEuOTQ0NTMsMy44ODc3NiAwLDIuMzI3MjggLTEuMTI0NjQsMy44
NjA4OSAtMy4zNzI2Miw0LjYwMTQ4IC0yLjIyMTExLDAuNjg3NSAtNC41MjE1MiwxLjAzMDI3IC02
LjkwMTg5LDEuMDMwMjcgLTYuMjk0MzQsMCAtMTEuNjc2MzgsLTIuMjMzNTYgLTE2LjE0Njc4LC02
LjcwMzk2IC00LjQ2ODQzLC00LjQ2OTc0IC02LjcwMzk2LC05Ljg1MTEzIC02LjcwMzk2LC0xNi4x
NDY3OCAwLC02LjI5NDM1IDIuMjM0ODcsLTExLjY3NTA4IDYuNzAzOTYsLTE2LjE0Njc5IDQuNDY5
NzQsLTQuNDY4NDMgOS44NTE3OCwtNi43MDM5NiAxNi4xNDY3OCwtNi43MDM5NiAyLjM3OTA2LDAu
MDAxIDQuNjgwMTIsMC4zNTk4MSA2LjkwMTIzLDEuMDcyODcgeiIgLz4KKyAgICAgIDxwYXRoIGQ9
Im0gMzIyLjI1NjcxLDI0Mi4wMzQ0MiBjIDEuMjk1MDQsMCAyLjQxOTAzLDAuNDYzMzYgMy4zNzI2
MiwxLjM4ODc2IDAuOTUxNjMsMC45NTA5NyAxLjQyODA5LDIuMDg5MzggMS40MjgwOSwzLjQxMTMg
diAyNy40OTE1NCBoIDEuNTA3MzkgYyAzLjM4NTA4LDAgNi4zMzMwMSwtMS4xMjM5OSA4Ljg0NzA4
LC0zLjM3MjYzIDIuNDU5MDEsLTIuMjQ3OTggMy44NjAyMywtNS4wMjQyIDQuMjA0MzEsLTguMzMw
NjMgMC4xNTg2MSwtMS4yNDI2MSAwLjY4ODE2LC0yLjI2MTc0IDEuNTg3MzUsLTMuMDU0MSAwLjg5
ODU0LC0wLjg0NjExIDEuOTY5NDQsLTEuMjcwMTUgMy4yMTI3MSwtMS4yNzAxNSBoIDAuMTE4NjMg
YyAxLjQwMjUyLDAgMi41Nzk2LDAuNTMwMjEgMy41MzEyMiwxLjU4NzM1IDAuODQ2NzYsMC45MjU0
MSAxLjI2OTQ5LDEuOTk2OTcgMS4yNjk0OSwzLjIxMjcxIDAsMC4xNTg2MSAtMC4wMTM4LDAuMzMx
NjMgLTAuMDM5MywwLjUxNTc5IC0wLjYzNTA3LDYuNjM4NDIgLTMuMTc0MDUsMTEuNjEwMTkgLTcu
NjE2OTIsMTQuOTE1MzEgMi4zMjY2MywxLjQzMDA2IDQuNDY5MDksMy44NDkwOSA2LjQyNzM5LDcu
MjYwMzkgMi4wMzU2MywzLjUxNzQ2IDMuMDU0NzYsNy4zMTQxMiAzLjA1NDc2LDExLjM4NDczIHYg
Mi4wMjUxNSBjIDAsMS4zNDgxMyAtMC40NzcxMiwyLjQ3MTQ3IC0xLjQyODA5LDMuMzcwNjYgLTAu
OTUzNTksMC45NTM1OSAtMi4wNzY5MiwxLjQyODc0IC0zLjM3MjYzLDEuNDI4NzQgaCAtMC4xMTky
OCBjIC0xLjI5NjM1LDAgLTIuNDE5NjksLTAuNDc1MTUgLTMuMzcxOTYsLTEuNDI4NzQgLTAuOTUy
MjgsLTAuODk4NTQgLTEuNDI4MDksLTIuMDIyNTMgLTEuNDI4MDksLTMuMzcwNjYgdiAtMi4wMjUx
NSBjIC0wLjAyNzUsLTMuNTk0MTQgLTEuMzEwMTIsLTYuNjc3MDggLTMuODQ4NDQsLTkuMjQzNTgg
LTIuNTY1ODQsLTIuNTM4MzIgLTUuNjYwNTgsLTMuODA3MTUgLTkuMjgyOTEsLTMuODA3MTUgaCAt
My4yNTI2OSB2IDE1LjA3NTIzIGMgMCwxLjM0ODEzIC0wLjQ3NjQ2LDIuNDcxNDYgLTEuNDI4MDks
My4zNzA2NSAtMC45NTI5MywwLjk1MzU5IC0yLjA3NzU4LDEuNDI4NzUgLTMuMzcyNjIsMS40Mjg3
NSBoIC0wLjEyMDU5IGMgLTEuMjk1NywwIC0yLjQxODM4LC0wLjQ3NTE2IC0zLjM3MTMyLC0xLjQy
ODc1IC0wLjk1MTYyLC0wLjg5ODUzIC0xLjQyODA5LC0yLjAyMjUyIC0xLjQyODA5LC0zLjM3MDY1
IHYgLTUyLjM2NTQ3IGMgMCwtMS4zMjI1NyAwLjQ3NjQ3LC0yLjQ2MDMyIDEuNDI4MDksLTMuNDEx
MjkgMC45NTIyOCwtMC45MjU0MSAyLjA3NTYyLC0xLjM4ODc3IDMuMzcxMzIsLTEuMzg4NzcgaCAw
LjEyMDU5IHoiIC8+CisgICAgICA8cGF0aCBkPSJtIDQwMi4zMTE2NCwyNzEuNjI5MSBjIDAuMzE3
MjEsMC42NjA2MyAwLjQ3NTgxLDEuMzMzNzEgMC40NzU4MSwyLjAyMjUyIDAsMC41NTU3NyAtMC4x
MDYxNywxLjExMDg5IC0wLjMxNjU1LDEuNjY2NjUgLTAuNDUwMjUsMS4yNDI2MiAtMS4yOTYzNSwy
LjE0MTgxIC0yLjUzODk3LDIuNjk2OTIgLTMuNzAyOTQsMS42NjY2NSAtOC41NjkxOSwzLjg2MjIg
LTE0LjU5ODc2LDYuNTg1OTkgLTcuNDg0NTIsMy4zODQ0MiAtMTEuODc0OTYsNS4zODEzOSAtMTMu
MTcwNjcsNS45OTA5IDIuMDA4NzcsMi41MzgzMiA1LjE0MzQ5LDMuODA3MTUgOS40MDIxOSwzLjgw
NzE1IDIuODI4NjYsMCA1LjM5NDUsLTAuODMyMzQgNy42OTYyMiwtMi40OTkgMi4yNDczMiwtMS42
Mzk3NyAzLjgyMDkxLC0zLjc1NTM3IDQuNzIwMSwtNi4zNDgwOCAwLjc2NjgxLC0yLjE2ODY4IDIu
MzAxNzIsLTMuMjUyNjkgNC42MDE0OCwtMy4yNTI2OSAxLjYzOTc4LDAgMi45NDkyNCwwLjY4ODgx
IDMuOTI4MzksMi4wNjE4NSAwLjYwNjg5LDAuODQ3NDIgMC45MTE2NSwxLjczMzUgMC45MTE2NSwy
LjY1ODkxIDAsMC41NTU3NyAtMC4xMDU1MiwxLjEyMzk5IC0wLjMxNzIxLDEuNzA1MzIgLTEuNTYw
NDgsNC41MjM0OCAtNC4yOTczOCw4LjE3MzM0IC04LjIxMTM1LDEwLjk1MDg3IC0zLjk2NzA2LDIu
ODgxMDggLTguNDA5OTQsNC4zMjI5MyAtMTMuMzI5MjgsNC4zMjI5MyAtNi4yOTQzNCwwIC0xMS42
NzYzOCwtMi4yMzM1NiAtMTYuMTQ1NDcsLTYuNzAzOTUgLTQuNDY5NzQsLTQuNDY5NzUgLTYuNzA0
NjEsLTkuODUxMTQgLTYuNzA0NjEsLTE2LjE0Njc5IDAsLTYuMjk0MzQgMi4yMzQ4NywtMTEuNjc1
MDcgNi43MDQ2MSwtMTYuMTQ2NzggNC40Njg0MywtNC40Njg0MyA5Ljg1MTEzLC02LjcwMzk2IDE2
LjE0NTQ3LC02LjcwMzk2IDQuNTQ3NzQsMCA4LjcwMDkzLDEuMjQzOTIgMTIuNDU2MywzLjcyODUg
My43Mjg1LDIuNDM2MDcgNi40OTE2MSw1LjYzNDM3IDguMjkwNjUsOS42MDI3NCB6IG0gLTIwLjc0
NzYsLTMuNTMzMiBjIC0zLjY0OTIsMCAtNi43NTc3LDEuMjgzOTEgLTkuMzIyODksMy44NDkwOSAt
Mi41Mzg5NywyLjU2NjUgLTMuODA4NDYsNS42NzQzNSAtMy44MDg0Niw5LjMyMjg5IHYgMC4yNzc4
OSBsIDIyLjE3NTcsLTkuOTU3MzEgYyAtMS45NTY5OSwtMi4zMjU5NyAtNC45NzE3NywtMy40OTI1
NiAtOS4wNDQzNSwtMy40OTI1NiB6IiAvPgorICAgICAgPHBhdGggZD0ibSA0MTUuNDgxNjYsMjQy
LjAzNDQyIGMgMS4yOTU3LDAgMi40MTk2OSwwLjQ2MzM2IDMuMzcyNjIsMS4zODg3NiAwLjk1MTYy
LDAuOTUwOTcgMS40MjgwOSwyLjA4OTM4IDEuNDI4MDksMy40MTEzIHYgMTEuNDY0MDMgaCA1Ljk1
MDkyIGMgMS4yOTU3LDAgMi40MTkwMywwLjQ3NjQ3IDMuMzcyNjIsMS40MzAwNiAwLjk1MTYzLDAu
OTUwOTcgMS40MjY3OCwyLjA4OTM4IDEuNDI2NzgsMy40MDk5OCB2IDAuMDc5MyBjIDAsMS4zNDk0
NSAtMC40NzUxNSwyLjQ3NDA5IC0xLjQyNjc4LDMuMzcyNjMgLTAuOTUyOTMsMC45NTA5NyAtMi4w
NzY5MiwxLjQyODc0IC0zLjM3MjYyLDEuNDI4NzQgaCAtNS45NTA5MiB2IDIzLjUyMjUyIGMgMCww
Ljc2ODExIDAuMjYzNDcsMS40MTY5NSAwLjc5MzY3LDEuOTQ0NTMgMC41Mjg5LDAuNTMwMjEgMS4x
OTAxOSwwLjc5MzY4IDEuOTgzMjEsMC43OTM2OCBoIDMuMTc0MDQgYyAxLjI5NTcsMCAyLjQxOTAz
LDAuNDc2NDYgMy4zNzI2MiwxLjQyODc0IDAuOTUxNjMsMC45NTIyOCAxLjQyNjc4LDIuMDkwMDMg
MS40MjY3OCwzLjQxMTI5IHYgMC4wODA2IGMgMCwxLjM0ODEzIC0wLjQ3NTE1LDIuNDcxNDYgLTEu
NDI2NzgsMy4zNzA2NSBDIDQyOC42NTI5OCwzMDMuNTI0ODQgNDI3LjUyODk5LDMwNCA0MjYuMjMz
MjksMzA0IGggLTMuMTc0MDQgYyAtMy40MzgxNywwIC02LjM4Njc1LC0xLjIxNTc0IC04Ljg0NjQy
LC0zLjY0OTIgLTIuNDM0MTEsLTIuNDU5MDEgLTMuNjQ5MiwtNS4zOTUxNSAtMy42NDkyLC04Ljgw
Nzc1IHYgLTQ0LjcwNzI2IGMgMCwtMS4zMjI1OCAwLjQ3NTgxLC0yLjQ2MDMzIDEuNDI4MDksLTMu
NDExMyAwLjk1MjI4LC0wLjkyNTQgMi4wNzYyNywtMS4zODg3NiAzLjM3MTk3LC0xLjM4ODc2IGgg
MC4xMTc5NyB6IiAvPgorICAgICAgPHBhdGggZD0ibSA0NDguODg1NDUsMjY4LjAxOTIyIGMgLTEu
MTYzOTcsMCAtMi4xNDI0NiwwLjM5NTg2IC0yLjkzNTQ4LDEuMTg4ODggLTAuNzkzNjgsMC44MjA1
NCAtMS4xOTAxOSwxLjc5ODM4IC0xLjE5MDE5LDIuOTM1NDggMCwxLjU4NzM1IDAuNzY2ODEsMi43
Nzc1MyAyLjMwMDQyLDMuNTY5ODkgMC41MzAyLDAuMjkxNjUgMi43MzgyLDAuOTUyMjggNi42MjU5
NiwxLjk4Mzg2IDMuMTQ2NTIsMC44OTk4NSA1LjQ4NjkxLDIuMDc2MjcgNy4wMjExNywzLjUzMDU3
IDIuMTk0ODksMi4wOTAwMyAzLjI5MjY3LDUuMDY1NDkgMy4yOTI2Nyw4LjkyNzA0IDAsMy44MDcx
NCAtMS4zNDk0NSw3LjA3MzYgLTQuMDQ2MzcsOS43OTczOSAtMi43MjM3OSwyLjY5ODIzIC01Ljk5
MDg5LDQuMDQ2MzYgLTkuNzk4NjksNC4wNDYzNiBoIC0xMC4zNTM4MiBjIC0xLjI5NjM1LDAgLTIu
NDE5NjksLTAuNDc1MTYgLTMuMzcyNjIsLTEuNDI4NzUgLTAuOTUyMjgsLTAuODk4NTMgLTEuNDI3
NDQsLTIuMDIyNTIgLTEuNDI3NDQsLTMuMzcwNjUgdiAtMC4wODA2IGMgMCwtMS4zMjEyNiAwLjQ3
NTE2LC0yLjQ1OTAxIDEuNDI3NDQsLTMuNDExMjkgMC45NTIyOCwtMC45NTIyOCAyLjA3NjI3LC0x
LjQyODc0IDMuMzcyNjIsLTEuNDI4NzQgaCAxMC43NTAzMiBjIDEuMTYzMzIsMCAyLjE0MzEyLC0w
LjM5NTg2IDIuOTM1NDksLTEuMTg4ODggMC43OTM2NywtMC43OTM2NyAxLjE5MDE4LC0xLjc3MTUx
IDEuMTkwMTgsLTIuOTM1NDggMCwtMS40NTU2MSAtMC43NTM3LC0yLjU1MzM5IC0yLjI2MDQzLC0z
LjI5MjAxIC0wLjM5NzgyLC0wLjE4Njc4IC0yLjYxODkzLC0wLjg0NzQyIC02LjY2NTI5LC0xLjk4
Mzg2IC0zLjE0NzgzLC0wLjkyNTQgLTUuNDg4ODcsLTIuMTQzNzcgLTcuMDIyNDgsLTMuNjUwNTEg
LTIuMTk1NTUsLTIuMTQxOCAtMy4yOTIwMSwtNS4xNzAzNSAtMy4yOTIwMSwtOS4wODQzMiAwLC0z
LjgwODQ2IDEuMzQ5NDQsLTcuMDYwNDkgNC4wNDcwMSwtOS43NTgwNyAyLjcyMzE0LC0yLjcyMzc5
IDUuOTkwMjUsLTQuMDg3IDkuNzk4NywtNC4wODcgaCA3LjI5OTA2IGMgMS4zMjMyMiwwIDIuNDU5
NjcsMC40NzY0NyAzLjQxMTI5LDEuNDMwMDYgMC45NTIyOCwwLjk1MDk3IDEuNDI4MDksMi4wODkz
OCAxLjQyODA5LDMuNDA5OTggdiAwLjA3OTMgYyAwLDEuMzQ5NDUgLTAuNDc1ODEsMi40NzQwOSAt
MS40MjgwOSwzLjM3MjYzIC0wLjk1MTYyLDAuOTUwOTcgLTIuMDg4NzIsMS40Mjg3NCAtMy40MTEy
OSwxLjQyODc0IHoiIC8+CisgICAgPC9nPgorICA8L2c+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2Vic29ja2V0cy9wZXJmb3JtYW5jZS9tZW1fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L3BlcmZvcm1hbmNlL21lbV9jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi44OTAyMTZlZGY4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvcGVyZm9ybWFuY2UvbWVtX2NsaWVudC5weQpAQCAtMCwwICsxLDU0IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBzdGF0aXN0aWNzCitpbXBvcnQg
dHJhY2VtYWxsb2MKKworaW1wb3J0IHdlYnNvY2tldHMKK2Zyb20gd2Vic29ja2V0cy5leHRlbnNp
b25zIGltcG9ydCBwZXJtZXNzYWdlX2RlZmxhdGUKKworCitDTElFTlRTID0gMTAKK0lOVEVSVkFM
ID0gMSAvIDEwICAjIHNlY29uZHMKKworTUVNX1NJWkUgPSBbXQorCisKK2FzeW5jIGRlZiBtZW1f
Y2xpZW50KGNsaWVudCk6CisgICAgIyBTcGFjZSBvdXQgY29ubmVjdGlvbnMgdG8gbWFrZSB0aGVt
IHNlcXVlbnRpYWwuCisgICAgYXdhaXQgYXN5bmNpby5zbGVlcChjbGllbnQgKiBJTlRFUlZBTCkK
KworICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKworICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5j
b25uZWN0KAorICAgICAgICAid3M6Ly9sb2NhbGhvc3Q6ODc2NSIsCisgICAgICAgIGV4dGVuc2lv
bnM9WworICAgICAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlLkNsaWVudFBlck1lc3NhZ2VEZWZs
YXRlRmFjdG9yeSgKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTEwLAor
ICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHM9MTAsCisgICAgICAgICAgICAg
ICAgY29tcHJlc3Nfc2V0dGluZ3M9eyJtZW1MZXZlbCI6IDN9LAorICAgICAgICAgICAgKQorICAg
ICAgICBdLAorICAgICkgYXMgd3M6CisgICAgICAgIGF3YWl0IHdzLnNlbmQoImhlbGxvIikKKyAg
ICAgICAgYXdhaXQgd3MucmVjdigpCisKKyAgICAgICAgYXdhaXQgd3Muc2VuZChiImhlbGxvIikK
KyAgICAgICAgYXdhaXQgd3MucmVjdigpCisKKyAgICAgICAgTUVNX1NJWkUuYXBwZW5kKHRyYWNl
bWFsbG9jLmdldF90cmFjZWRfbWVtb3J5KClbMF0pCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3Ao
KQorCisgICAgICAgICMgSG9sZCBjb25uZWN0aW9uIG9wZW4gdW50aWwgdGhlIGVuZCBvZiB0aGUg
dGVzdC4KKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcChDTElFTlRTICogSU5URVJWQUwpCisK
KworYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICBhc3lu
Y2lvLmdhdGhlcigqW21lbV9jbGllbnQoY2xpZW50KSBmb3IgY2xpZW50IGluIHJhbmdlKENMSUVO
VFMgKyAxKV0pCispCisKKyMgRmlyc3QgY29ubmVjdGlvbiBpbmN1cnMgbm9uLXJlcHJlc2VudGF0
aXZlIHNldHVwIGNvc3RzLgorZGVsIE1FTV9TSVpFWzBdCisKK3ByaW50KGYiwrUgPSB7c3RhdGlz
dGljcy5tZWFuKE1FTV9TSVpFKSAvIDEwMjQ6LjFmfcKgS2lCIikKK3ByaW50KGYiz4MgPSB7c3Rh
dGlzdGljcy5zdGRldihNRU1fU0laRSkgLyAxMDI0Oi4xZn3CoEtpQiIpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvcGVyZm9ybWFuY2UvbWVtX3NlcnZlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9wZXJmb3JtYW5jZS9tZW1fc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMGE0YTI5Zjc2YzZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL3BlcmZvcm1hbmNlL21lbV9zZXJ2ZXIucHkKQEAgLTAsMCArMSw2MyBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3Rh
dGlzdGljcworaW1wb3J0IHRyYWNlbWFsbG9jCisKK2ltcG9ydCB3ZWJzb2NrZXRzCitmcm9tIHdl
YnNvY2tldHMuZXh0ZW5zaW9ucyBpbXBvcnQgcGVybWVzc2FnZV9kZWZsYXRlCisKKworQ0xJRU5U
UyA9IDEwCitJTlRFUlZBTCA9IDEgLyAxMCAgIyBzZWNvbmRzCisKK01FTV9TSVpFID0gW10KKwor
Cithc3luYyBkZWYgaGFuZGxlcih3cywgcGF0aCk6CisgICAgbXNnID0gYXdhaXQgd3MucmVjdigp
CisgICAgYXdhaXQgd3Muc2VuZChtc2cpCisKKyAgICBtc2cgPSBhd2FpdCB3cy5yZWN2KCkKKyAg
ICBhd2FpdCB3cy5zZW5kKG1zZykKKworICAgIE1FTV9TSVpFLmFwcGVuZCh0cmFjZW1hbGxvYy5n
ZXRfdHJhY2VkX21lbW9yeSgpWzBdKQorICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorCisgICAgdHJh
Y2VtYWxsb2Muc3RhcnQoKQorCisgICAgIyBIb2xkIGNvbm5lY3Rpb24gb3BlbiB1bnRpbCB0aGUg
ZW5kIG9mIHRoZSB0ZXN0LgorICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoQ0xJRU5UUyAqIElOVEVS
VkFMKQorCisKK2FzeW5jIGRlZiBtZW1fc2VydmVyKHN0b3ApOgorICAgIGFzeW5jIHdpdGggd2Vi
c29ja2V0cy5zZXJ2ZSgKKyAgICAgICAgaGFuZGxlciwKKyAgICAgICAgImxvY2FsaG9zdCIsCisg
ICAgICAgIDg3NjUsCisgICAgICAgIGV4dGVuc2lvbnM9WworICAgICAgICAgICAgcGVybWVzc2Fn
ZV9kZWZsYXRlLlNlcnZlclBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgKKyAgICAgICAgICAgICAg
ICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTEwLAorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhf
d2luZG93X2JpdHM9MTAsCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2V0dGluZ3M9eyJtZW1M
ZXZlbCI6IDN9LAorICAgICAgICAgICAgKQorICAgICAgICBdLAorICAgICk6CisgICAgICAgIGF3
YWl0IHN0b3AKKworCitsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisKK3N0b3AgPSBs
b29wLmNyZWF0ZV9mdXR1cmUoKQorbG9vcC5hZGRfc2lnbmFsX2hhbmRsZXIoc2lnbmFsLlNJR0lO
VCwgc3RvcC5zZXRfcmVzdWx0LCBOb25lKQorCit0cmFjZW1hbGxvYy5zdGFydCgpCisKK2xvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKG1lbV9zZXJ2ZXIoc3RvcCkpCisKKyMgRmlyc3QgY29ubmVjdGlv
biBpbmN1cnMgbm9uLXJlcHJlc2VudGF0aXZlIHNldHVwIGNvc3RzLgorZGVsIE1FTV9TSVpFWzBd
CisKK3ByaW50KGYiwrUgPSB7c3RhdGlzdGljcy5tZWFuKE1FTV9TSVpFKSAvIDEwMjQ6LjFmfcKg
S2lCIikKK3ByaW50KGYiz4MgPSB7c3RhdGlzdGljcy5zdGRldihNRU1fU0laRSkgLyAxMDI0Oi4x
Zn3CoEtpQiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc2V0dXAuY2ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3NldHVwLmNmZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmMzMDZiMmQ0ZmI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zZXR1
cC5jZmcKQEAgLTAsMCArMSwzMCBAQAorW2JkaXN0X3doZWVsXQorcHl0aG9uLXRhZyA9IHB5MzYu
cHkzNworCitbbWV0YWRhdGFdCitsaWNlbnNlX2ZpbGUgPSBMSUNFTlNFCisKK1tmbGFrZThdCitp
Z25vcmUgPSBFNzMxLEY0MDMsRjQwNSxXNTAzCittYXgtbGluZS1sZW5ndGggPSA4OAorCitbaXNv
cnRdCitjb21iaW5lX2FzX2ltcG9ydHMgPSBUcnVlCitmb3JjZV9ncmlkX3dyYXAgPSAwCitpbmNs
dWRlX3RyYWlsaW5nX2NvbW1hID0gVHJ1ZQora25vd25fc3RhbmRhcmRfbGlicmFyeSA9IGFzeW5j
aW8KK2xpbmVfbGVuZ3RoID0gODgKK2xpbmVzX2FmdGVyX2ltcG9ydHMgPSAyCittdWx0aV9saW5l
X291dHB1dCA9IDMKKworW2NvdmVyYWdlOnJ1bl0KK2JyYW5jaCA9IFRydWUKK29taXQgPSAqL19f
bWFpbl9fLnB5Citzb3VyY2UgPQorICAgIHdlYnNvY2tldHMKKyAgICB0ZXN0cworCitbY292ZXJh
Z2U6cGF0aHNdCitzb3VyY2UgPQorICAgIHNyYy93ZWJzb2NrZXRzCisgICAudG94LyovbGliL3B5
dGhvbiovc2l0ZS1wYWNrYWdlcy93ZWJzb2NrZXRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMzU4MTkyNDc3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvc2V0dXAucHkKQEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IHBhdGhsaWIK
K2ltcG9ydCByZQoraW1wb3J0IHN5cworCitpbXBvcnQgc2V0dXB0b29scworCisKK3Jvb3RfZGly
ID0gcGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQKKworZGVzY3JpcHRpb24gPSAiQW4gaW1w
bGVtZW50YXRpb24gb2YgdGhlIFdlYlNvY2tldCBQcm90b2NvbCAoUkZDIDY0NTUgJiA3NjkyKSIK
KworbG9uZ19kZXNjcmlwdGlvbiA9IChyb290X2RpciAvICdSRUFETUUucnN0JykucmVhZF90ZXh0
KGVuY29kaW5nPSd1dGYtOCcpCisKKyMgUHlQSSBkaXNhYmxlcyB0aGUgInJhdyIgZGlyZWN0aXZl
LgorbG9uZ19kZXNjcmlwdGlvbiA9IHJlLnN1YigKKyAgICByIl5cLlwuIHJhdzo6IGh0bWwuKj9e
KD89XHcpIiwKKyAgICAiIiwKKyAgICBsb25nX2Rlc2NyaXB0aW9uLAorICAgIGZsYWdzPXJlLkRP
VEFMTCB8IHJlLk1VTFRJTElORSwKKykKKworZXhlYygocm9vdF9kaXIgLyAnc3JjJyAvICd3ZWJz
b2NrZXRzJyAvICd2ZXJzaW9uLnB5JykucmVhZF90ZXh0KGVuY29kaW5nPSd1dGYtOCcpKQorCitp
ZiBzeXMudmVyc2lvbl9pbmZvWzozXSA8ICgzLCA2LCAxKToKKyAgICByYWlzZSBFeGNlcHRpb24o
IndlYnNvY2tldHMgcmVxdWlyZXMgUHl0aG9uID49IDMuNi4xLiIpCisKK3BhY2thZ2VzID0gWyd3
ZWJzb2NrZXRzJywgJ3dlYnNvY2tldHMvZXh0ZW5zaW9ucyddCisKK2V4dF9tb2R1bGVzID0gWwor
ICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9uKAorICAgICAgICAnd2Vic29ja2V0cy5zcGVlZHVwcycs
CisgICAgICAgIHNvdXJjZXM9WydzcmMvd2Vic29ja2V0cy9zcGVlZHVwcy5jJ10sCisgICAgICAg
IG9wdGlvbmFsPW5vdCAocm9vdF9kaXIgLyAnLmNpYnVpbGR3aGVlbCcpLmV4aXN0cygpLAorICAg
ICkKK10KKworc2V0dXB0b29scy5zZXR1cCgKKyAgICBuYW1lPSd3ZWJzb2NrZXRzJywKKyAgICB2
ZXJzaW9uPXZlcnNpb24sCisgICAgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCisgICAgbG9uZ19k
ZXNjcmlwdGlvbj1sb25nX2Rlc2NyaXB0aW9uLAorICAgIHVybD0naHR0cHM6Ly9naXRodWIuY29t
L2FhdWd1c3Rpbi93ZWJzb2NrZXRzJywKKyAgICBhdXRob3I9J0F5bWVyaWMgQXVndXN0aW4nLAor
ICAgIGF1dGhvcl9lbWFpbD0nYXltZXJpYy5hdWd1c3RpbkBtNHgub3JnJywKKyAgICBsaWNlbnNl
PSdCU0QnLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgJ0RldmVsb3BtZW50IFN0YXR1cyA6
OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUnLAorICAgICAgICAnRW52aXJvbm1lbnQgOjogV2ViIEVu
dmlyb25tZW50JywKKyAgICAgICAgJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLAor
ICAgICAgICAnTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogQlNEIExpY2Vuc2UnLAorICAgICAg
ICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBPUyBJbmRlcGVuZGVudCcsCisgICAgICAgICdQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24nLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDMnLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9u
IDo6IDMuNicsCisgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43
JywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjgnLAorICAg
IF0sCisgICAgcGFja2FnZV9kaXIgPSB7Jyc6ICdzcmMnfSwKKyAgICBwYWNrYWdlX2RhdGEgPSB7
J3dlYnNvY2tldHMnOiBbJ3B5LnR5cGVkJ119LAorICAgIHBhY2thZ2VzPXBhY2thZ2VzLAorICAg
IGV4dF9tb2R1bGVzPWV4dF9tb2R1bGVzLAorICAgIGluY2x1ZGVfcGFja2FnZV9kYXRhPVRydWUs
CisgICAgemlwX3NhZmU9RmFsc2UsCisgICAgcHl0aG9uX3JlcXVpcmVzPSc+PTMuNi4xJywKKyAg
ICB0ZXN0X2xvYWRlcj0ndW5pdHRlc3Q6VGVzdExvYWRlcicsCispCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
c3JjL3dlYnNvY2tldHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lYTFkODI5YTMzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvc3JjL3dlYnNvY2tldHMvX19pbml0X18ucHkKQEAgLTAsMCArMSw1NSBAQAorIyBUaGlzIHJl
bGllcyBvbiBlYWNoIG9mIHRoZSBzdWJtb2R1bGVzIGhhdmluZyBhbiBfX2FsbF9fIHZhcmlhYmxl
LgorCitmcm9tIC5hdXRoIGltcG9ydCAqICAjIG5vcWEKK2Zyb20gLmNsaWVudCBpbXBvcnQgKiAg
IyBub3FhCitmcm9tIC5leGNlcHRpb25zIGltcG9ydCAqICAjIG5vcWEKK2Zyb20gLnByb3RvY29s
IGltcG9ydCAqICAjIG5vcWEKK2Zyb20gLnNlcnZlciBpbXBvcnQgKiAgIyBub3FhCitmcm9tIC50
eXBpbmcgaW1wb3J0ICogICMgbm9xYQorZnJvbSAudXJpIGltcG9ydCAqICAjIG5vcWEKK2Zyb20g
LnZlcnNpb24gaW1wb3J0IHZlcnNpb24gYXMgX192ZXJzaW9uX18gICMgbm9xYQorCisKK19fYWxs
X18gPSBbCisgICAgIkFib3J0SGFuZHNoYWtlIiwKKyAgICAiYmFzaWNfYXV0aF9wcm90b2NvbF9m
YWN0b3J5IiwKKyAgICAiQmFzaWNBdXRoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wiLAorICAgICJj
b25uZWN0IiwKKyAgICAiQ29ubmVjdGlvbkNsb3NlZCIsCisgICAgIkNvbm5lY3Rpb25DbG9zZWRF
cnJvciIsCisgICAgIkNvbm5lY3Rpb25DbG9zZWRPSyIsCisgICAgIkRhdGEiLAorICAgICJEdXBs
aWNhdGVQYXJhbWV0ZXIiLAorICAgICJFeHRlbnNpb25IZWFkZXIiLAorICAgICJFeHRlbnNpb25Q
YXJhbWV0ZXIiLAorICAgICJJbnZhbGlkSGFuZHNoYWtlIiwKKyAgICAiSW52YWxpZEhlYWRlciIs
CisgICAgIkludmFsaWRIZWFkZXJGb3JtYXQiLAorICAgICJJbnZhbGlkSGVhZGVyVmFsdWUiLAor
ICAgICJJbnZhbGlkTWVzc2FnZSIsCisgICAgIkludmFsaWRPcmlnaW4iLAorICAgICJJbnZhbGlk
UGFyYW1ldGVyTmFtZSIsCisgICAgIkludmFsaWRQYXJhbWV0ZXJWYWx1ZSIsCisgICAgIkludmFs
aWRTdGF0ZSIsCisgICAgIkludmFsaWRTdGF0dXNDb2RlIiwKKyAgICAiSW52YWxpZFVwZ3JhZGUi
LAorICAgICJJbnZhbGlkVVJJIiwKKyAgICAiTmVnb3RpYXRpb25FcnJvciIsCisgICAgIk9yaWdp
biIsCisgICAgInBhcnNlX3VyaSIsCisgICAgIlBheWxvYWRUb29CaWciLAorICAgICJQcm90b2Nv
bEVycm9yIiwKKyAgICAiUmVkaXJlY3RIYW5kc2hha2UiLAorICAgICJTZWN1cml0eUVycm9yIiwK
KyAgICAic2VydmUiLAorICAgICJTdWJwcm90b2NvbCIsCisgICAgInVuaXhfY29ubmVjdCIsCisg
ICAgInVuaXhfc2VydmUiLAorICAgICJXZWJTb2NrZXRDbGllbnRQcm90b2NvbCIsCisgICAgIldl
YlNvY2tldENvbW1vblByb3RvY29sIiwKKyAgICAiV2ViU29ja2V0RXhjZXB0aW9uIiwKKyAgICAi
V2ViU29ja2V0UHJvdG9jb2xFcnJvciIsCisgICAgIldlYlNvY2tldFNlcnZlciIsCisgICAgIldl
YlNvY2tldFNlcnZlclByb3RvY29sIiwKKyAgICAiV2ViU29ja2V0VVJJIiwKK10KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9fX21haW5fXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy9zcmMvd2Vic29ja2V0cy9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjM5NGY3YWM3OTljMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9fX21haW5fXy5weQpAQCAtMCwwICsxLDIwNiBAQAor
aW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFs
CitpbXBvcnQgc3lzCitpbXBvcnQgdGhyZWFkaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBT
ZXQKKworZnJvbSAuY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIC5leGNlcHRpb25zIGltcG9y
dCBDb25uZWN0aW9uQ2xvc2VkLCBmb3JtYXRfY2xvc2UKKworCitpZiBzeXMucGxhdGZvcm0gPT0g
IndpbjMyIjoKKworICAgIGRlZiB3aW5fZW5hYmxlX3Z0MTAwKCkgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIEVuYWJsZSBWVC0xMDAgZm9yIGNvbnNvbGUgb3V0cHV0IG9uIFdpbmRvd3Mu
CisKKyAgICAgICAgU2VlIGFsc28gaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyOTA1OS4K
KworICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IGN0eXBlcworCisgICAgICAgIFNURF9PVVRQ
VVRfSEFORExFID0gY3R5cGVzLmNfdWludCgtMTEpCisgICAgICAgIElOVkFMSURfSEFORExFX1ZB
TFVFID0gY3R5cGVzLmNfdWludCgtMSkKKyAgICAgICAgRU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxf
UFJPQ0VTU0lORyA9IDB4MDA0CisKKyAgICAgICAgaGFuZGxlID0gY3R5cGVzLndpbmRsbC5rZXJu
ZWwzMi5HZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpCisgICAgICAgIGlmIGhhbmRsZSA9
PSBJTlZBTElEX0hBTkRMRV9WQUxVRToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigi
dW5hYmxlIHRvIG9idGFpbiBzdGRvdXQgaGFuZGxlIikKKworICAgICAgICBjdXJfbW9kZSA9IGN0
eXBlcy5jX3VpbnQoKQorICAgICAgICBpZiBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkdldENvbnNv
bGVNb2RlKGhhbmRsZSwgY3R5cGVzLmJ5cmVmKGN1cl9tb2RlKSkgPT0gMDoKKyAgICAgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcigidW5hYmxlIHRvIHF1ZXJ5IGN1cnJlbnQgY29uc29sZSBtb2Rl
IikKKworICAgICAgICAjIGN0eXBlcyBpbnRzIGxhY2sgc3VwcG9ydCBmb3IgdGhlIHJlcXVpcmVk
IGJpdC1PUiBvcGVyYXRpb24uCisgICAgICAgICMgVGVtcG9yYXJpbHkgY29udmVydCB0byBQeSBp
bnQsIGRvIHRoZSBPUiBhbmQgY29udmVydCBiYWNrLgorICAgICAgICBweV9pbnRfbW9kZSA9IGlu
dC5mcm9tX2J5dGVzKGN1cl9tb2RlLCBzeXMuYnl0ZW9yZGVyKQorICAgICAgICBuZXdfbW9kZSA9
IGN0eXBlcy5jX3VpbnQocHlfaW50X21vZGUgfCBFTkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9D
RVNTSU5HKQorCisgICAgICAgIGlmIGN0eXBlcy53aW5kbGwua2VybmVsMzIuU2V0Q29uc29sZU1v
ZGUoaGFuZGxlLCBuZXdfbW9kZSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cigidW5hYmxlIHRvIHNldCBjb25zb2xlIG1vZGUiKQorCisKK2RlZiBleGl0X2Zyb21fZXZlbnRf
bG9vcF90aHJlYWQoCisgICAgbG9vcDogYXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcCwgc3RvcDog
ImFzeW5jaW8uRnV0dXJlW05vbmVdIgorKSAtPiBOb25lOgorICAgIGxvb3Auc3RvcCgpCisgICAg
aWYgbm90IHN0b3AuZG9uZSgpOgorICAgICAgICAjIFdoZW4gZXhpdGluZyB0aGUgdGhyZWFkIHRo
YXQgcnVucyB0aGUgZXZlbnQgbG9vcCwgcmFpc2UKKyAgICAgICAgIyBLZXlib2FyZEludGVycnVw
dCBpbiB0aGUgbWFpbiB0aHJlYWQgdG8gZXhpdCB0aGUgcHJvZ3JhbS4KKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgY3RybF9jID0gc2lnbmFsLkNUUkxfQ19FVkVOVCAgIyBXaW5kb3dzCisgICAg
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGN0cmxfYyA9IHNpZ25hbC5T
SUdJTlQgICMgUE9TSVgKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgY3RybF9jKQorCisK
K2RlZiBwcmludF9kdXJpbmdfaW5wdXQoc3RyaW5nOiBzdHIpIC0+IE5vbmU6CisgICAgc3lzLnN0
ZG91dC53cml0ZSgKKyAgICAgICAgIyBTYXZlIGN1cnNvciBwb3NpdGlvbgorICAgICAgICAiXE57
RVNDfTciCisgICAgICAgICMgQWRkIGEgbmV3IGxpbmUKKyAgICAgICAgIlxOe0xJTkUgRkVFRH0i
CisgICAgICAgICMgTW92ZSBjdXJzb3IgdXAKKyAgICAgICAgIlxOe0VTQ31bQSIKKyAgICAgICAg
IyBJbnNlcnQgYmxhbmsgbGluZSwgc2Nyb2xsIGxhc3QgbGluZSBkb3duCisgICAgICAgICJcTntF
U0N9W0wiCisgICAgICAgICMgUHJpbnQgc3RyaW5nIGluIHRoZSBpbnNlcnRlZCBibGFuayBsaW5l
CisgICAgICAgIGYie3N0cmluZ31cTntMSU5FIEZFRUR9IgorICAgICAgICAjIFJlc3RvcmUgY3Vy
c29yIHBvc2l0aW9uCisgICAgICAgICJcTntFU0N9OCIKKyAgICAgICAgIyBNb3ZlIGN1cnNvciBk
b3duCisgICAgICAgICJcTntFU0N9W0IiCisgICAgKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQor
CisKK2RlZiBwcmludF9vdmVyX2lucHV0KHN0cmluZzogc3RyKSAtPiBOb25lOgorICAgIHN5cy5z
dGRvdXQud3JpdGUoCisgICAgICAgICMgTW92ZSBjdXJzb3IgdG8gYmVnaW5uaW5nIG9mIGxpbmUK
KyAgICAgICAgIlxOe0NBUlJJQUdFIFJFVFVSTn0iCisgICAgICAgICMgRGVsZXRlIGN1cnJlbnQg
bGluZQorICAgICAgICAiXE57RVNDfVtLIgorICAgICAgICAjIFByaW50IHN0cmluZworICAgICAg
ICBmIntzdHJpbmd9XE57TElORSBGRUVEfSIKKyAgICApCisgICAgc3lzLnN0ZG91dC5mbHVzaCgp
CisKKworYXN5bmMgZGVmIHJ1bl9jbGllbnQoCisgICAgdXJpOiBzdHIsCisgICAgbG9vcDogYXN5
bmNpby5BYnN0cmFjdEV2ZW50TG9vcCwKKyAgICBpbnB1dHM6ICJhc3luY2lvLlF1ZXVlW3N0cl0i
LAorICAgIHN0b3A6ICJhc3luY2lvLkZ1dHVyZVtOb25lXSIsCispIC0+IE5vbmU6CisgICAgdHJ5
OgorICAgICAgICB3ZWJzb2NrZXQgPSBhd2FpdCBjb25uZWN0KHVyaSkKKyAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgcHJpbnRfb3Zlcl9pbnB1dChmIkZhaWxlZCB0byBjb25u
ZWN0IHRvIHt1cml9OiB7ZXhjfS4iKQorICAgICAgICBleGl0X2Zyb21fZXZlbnRfbG9vcF90aHJl
YWQobG9vcCwgc3RvcCkKKyAgICAgICAgcmV0dXJuCisgICAgZWxzZToKKyAgICAgICAgcHJpbnRf
ZHVyaW5nX2lucHV0KGYiQ29ubmVjdGVkIHRvIHt1cml9LiIpCisKKyAgICB0cnk6CisgICAgICAg
IHdoaWxlIFRydWU6CisgICAgICAgICAgICBpbmNvbWluZzogYXN5bmNpby5GdXR1cmVbQW55XSA9
IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSh3ZWJzb2NrZXQucmVjdigpKQorICAgICAgICAgICAgb3V0
Z29pbmc6IGFzeW5jaW8uRnV0dXJlW0FueV0gPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaW5wdXRz
LmdldCgpKQorICAgICAgICAgICAgZG9uZTogU2V0W2FzeW5jaW8uRnV0dXJlW0FueV1dCisgICAg
ICAgICAgICBwZW5kaW5nOiBTZXRbYXN5bmNpby5GdXR1cmVbQW55XV0KKyAgICAgICAgICAgIGRv
bmUsIHBlbmRpbmcgPSBhd2FpdCBhc3luY2lvLndhaXQoCisgICAgICAgICAgICAgICAgW2luY29t
aW5nLCBvdXRnb2luZywgc3RvcF0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVE
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgQ2FuY2VsIHBlbmRpbmcgdGFza3MgdG8g
YXZvaWQgbGVha2luZyB0aGVtLgorICAgICAgICAgICAgaWYgaW5jb21pbmcgaW4gcGVuZGluZzoK
KyAgICAgICAgICAgICAgICBpbmNvbWluZy5jYW5jZWwoKQorICAgICAgICAgICAgaWYgb3V0Z29p
bmcgaW4gcGVuZGluZzoKKyAgICAgICAgICAgICAgICBvdXRnb2luZy5jYW5jZWwoKQorCisgICAg
ICAgICAgICBpZiBpbmNvbWluZyBpbiBkb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IGluY29taW5nLnJlc3VsdCgpCisgICAgICAgICAgICAg
ICAgZXhjZXB0IENvbm5lY3Rpb25DbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSht
ZXNzYWdlLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZHVyaW5nX2lucHV0
KCI8ICIgKyBtZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnRfZHVyaW5nX2lucHV0KCI8IChiaW5hcnkpICIgKyBtZXNzYWdlLmhl
eCgpKQorCisgICAgICAgICAgICBpZiBvdXRnb2luZyBpbiBkb25lOgorICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPSBvdXRnb2luZy5yZXN1bHQoKQorICAgICAgICAgICAgICAgIGF3YWl0IHdlYnNv
Y2tldC5zZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgICAgIGlmIHN0b3AgaW4gZG9uZToKKyAgICAg
ICAgICAgICAgICBicmVhaworCisgICAgZmluYWxseToKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0
LmNsb3NlKCkKKyAgICAgICAgY2xvc2Vfc3RhdHVzID0gZm9ybWF0X2Nsb3NlKHdlYnNvY2tldC5j
bG9zZV9jb2RlLCB3ZWJzb2NrZXQuY2xvc2VfcmVhc29uKQorCisgICAgICAgIHByaW50X292ZXJf
aW5wdXQoZiJDb25uZWN0aW9uIGNsb3NlZDoge2Nsb3NlX3N0YXR1c30uIikKKworICAgICAgICBl
eGl0X2Zyb21fZXZlbnRfbG9vcF90aHJlYWQobG9vcCwgc3RvcCkKKworCitkZWYgbWFpbigpIC0+
IE5vbmU6CisgICAgIyBJZiB3ZSdyZSBvbiBXaW5kb3dzLCBlbmFibGUgVlQxMDAgdGVybWluYWwg
c3VwcG9ydC4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgd2luX2VuYWJsZV92dDEwMCgpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJy
b3IgYXMgZXhjOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAg
ICBmIlVuYWJsZSB0byBzZXQgdGVybWluYWwgdG8gVlQxMDAgbW9kZS4gVGhpcyBpcyBvbmx5ICIK
KyAgICAgICAgICAgICAgICBmInN1cHBvcnRlZCBzaW5jZSBXaW4xMCBhbm5pdmVyc2FyeSB1cGRh
dGUuIEV4cGVjdCAiCisgICAgICAgICAgICAgICAgZiJ3ZWlyZCBzeW1ib2xzIG9uIHRoZSB0ZXJt
aW5hbC5cbkVycm9yOiB7ZXhjfVxuIgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3lzLnN0
ZGVyci5mbHVzaCgpCisKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCByZWFkbGluZSAgIyBub3Fh
CisgICAgZXhjZXB0IEltcG9ydEVycm9yOiAgIyBXaW5kb3dzIGhhcyBubyBgcmVhZGxpbmVgIG5v
cm1hbGx5CisgICAgICAgIHBhc3MKKworICAgICMgUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50
cy4KKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgcHJvZz0i
cHl0aG9uIC1tIHdlYnNvY2tldHMiLAorICAgICAgICBkZXNjcmlwdGlvbj0iSW50ZXJhY3RpdmUg
V2ViU29ja2V0IGNsaWVudC4iLAorICAgICAgICBhZGRfaGVscD1GYWxzZSwKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgidXJpIiwgbWV0YXZhcj0iPHVyaT4iKQorICAgIGFyZ3MgPSBw
YXJzZXIucGFyc2VfYXJncygpCisKKyAgICAjIENyZWF0ZSBhbiBldmVudCBsb29wIHRoYXQgd2ls
bCBydW4gaW4gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBsb29wID0gYXN5bmNpby5uZXdfZXZl
bnRfbG9vcCgpCisKKyAgICAjIENyZWF0ZSBhIHF1ZXVlIG9mIHVzZXIgaW5wdXRzLiBUaGVyZSdz
IG5vIG5lZWQgdG8gbGltaXQgaXRzIHNpemUuCisgICAgaW5wdXRzOiBhc3luY2lvLlF1ZXVlW3N0
cl0gPSBhc3luY2lvLlF1ZXVlKGxvb3A9bG9vcCkKKworICAgICMgQ3JlYXRlIGEgc3RvcCBjb25k
aXRpb24gd2hlbiByZWNlaXZpbmcgU0lHSU5UIG9yIFNJR1RFUk0uCisgICAgc3RvcDogYXN5bmNp
by5GdXR1cmVbTm9uZV0gPSBsb29wLmNyZWF0ZV9mdXR1cmUoKQorCisgICAgIyBTY2hlZHVsZSB0
aGUgdGFzayB0aGF0IHdpbGwgbWFuYWdlIHRoZSBjb25uZWN0aW9uLgorICAgIGFzeW5jaW8uZW5z
dXJlX2Z1dHVyZShydW5fY2xpZW50KGFyZ3MudXJpLCBsb29wLCBpbnB1dHMsIHN0b3ApLCBsb29w
PWxvb3ApCisKKyAgICAjIFN0YXJ0IHRoZSBldmVudCBsb29wIGluIGEgYmFja2dyb3VuZCB0aHJl
YWQuCisgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bG9vcC5ydW5fZm9yZXZl
cikKKyAgICB0aHJlYWQuc3RhcnQoKQorCisgICAgIyBSZWFkIGZyb20gc3RkaW4gaW4gdGhlIG1h
aW4gdGhyZWFkIGluIG9yZGVyIHRvIHJlY2VpdmUgc2lnbmFscy4KKyAgICB0cnk6CisgICAgICAg
IHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIFNpbmNlIHRoZXJlJ3Mgbm8gc2l6ZSBsaW1pdCwg
cHV0X25vd2FpdCBpcyBpZGVudGljYWwgdG8gcHV0LgorICAgICAgICAgICAgbWVzc2FnZSA9IGlu
cHV0KCI+ICIpCisgICAgICAgICAgICBsb29wLmNhbGxfc29vbl90aHJlYWRzYWZlKGlucHV0cy5w
dXRfbm93YWl0LCBtZXNzYWdlKQorICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIEVPRkVy
cm9yKTogICMgXkMsIF5ECisgICAgICAgIGxvb3AuY2FsbF9zb29uX3RocmVhZHNhZmUoc3RvcC5z
ZXRfcmVzdWx0LCBOb25lKQorCisgICAgIyBXYWl0IGZvciB0aGUgZXZlbnQgbG9vcCB0byB0ZXJt
aW5hdGUuCisgICAgdGhyZWFkLmpvaW4oKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMv
YXV0aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9hdXRoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWUyMDRiOGQ5Yzc3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2F1dGgucHkKQEAgLTAsMCAr
MSwxNjAgQEAKKyIiIgorOm1vZDpgd2Vic29ja2V0cy5hdXRoYCBwcm92aWRlcyBIVFRQIEJhc2lj
IEF1dGhlbnRpY2F0aW9uIGFjY29yZGluZyB0bworOnJmYzpgNzIzNWAgYW5kIDpyZmM6YDc2MTdg
LgorCisiIiIKKworCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgaHR0cAorZnJvbSB0eXBpbmcg
aW1wb3J0IEFueSwgQXdhaXRhYmxlLCBDYWxsYWJsZSwgSXRlcmFibGUsIE9wdGlvbmFsLCBUdXBs
ZSwgVHlwZSwgVW5pb24KKworZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEhlYWRlcgor
ZnJvbSAuaGVhZGVycyBpbXBvcnQgYnVpbGRfd3d3X2F1dGhlbnRpY2F0ZV9iYXNpYywgcGFyc2Vf
YXV0aG9yaXphdGlvbl9iYXNpYworZnJvbSAuaHR0cCBpbXBvcnQgSGVhZGVycworZnJvbSAuc2Vy
dmVyIGltcG9ydCBIVFRQUmVzcG9uc2UsIFdlYlNvY2tldFNlcnZlclByb3RvY29sCisKKworX19h
bGxfXyA9IFsiQmFzaWNBdXRoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wiLCAiYmFzaWNfYXV0aF9w
cm90b2NvbF9mYWN0b3J5Il0KKworQ3JlZGVudGlhbHMgPSBUdXBsZVtzdHIsIHN0cl0KKworCitk
ZWYgaXNfY3JlZGVudGlhbHModmFsdWU6IEFueSkgLT4gYm9vbDoKKyAgICB0cnk6CisgICAgICAg
IHVzZXJuYW1lLCBwYXNzd29yZCA9IHZhbHVlCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVl
RXJyb3IpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4g
aXNpbnN0YW5jZSh1c2VybmFtZSwgc3RyKSBhbmQgaXNpbnN0YW5jZShwYXNzd29yZCwgc3RyKQor
CisKK2NsYXNzIEJhc2ljQXV0aFdlYlNvY2tldFNlcnZlclByb3RvY29sKFdlYlNvY2tldFNlcnZl
clByb3RvY29sKToKKyAgICAiIiIKKyAgICBXZWJTb2NrZXQgc2VydmVyIHByb3RvY29sIHRoYXQg
ZW5mb3JjZXMgSFRUUCBCYXNpYyBBdXRoLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18o
CisgICAgICAgIHNlbGYsCisgICAgICAgICphcmdzOiBBbnksCisgICAgICAgIHJlYWxtOiBzdHIs
CisgICAgICAgIGNoZWNrX2NyZWRlbnRpYWxzOiBDYWxsYWJsZVtbc3RyLCBzdHJdLCBBd2FpdGFi
bGVbYm9vbF1dLAorICAgICAgICAqKmt3YXJnczogQW55LAorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5yZWFsbSA9IHJlYWxtCisgICAgICAgIHNlbGYuY2hlY2tfY3JlZGVudGlhbHMgPSBj
aGVja19jcmVkZW50aWFscworICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJn
cykKKworICAgIGFzeW5jIGRlZiBwcm9jZXNzX3JlcXVlc3QoCisgICAgICAgIHNlbGYsIHBhdGg6
IHN0ciwgcmVxdWVzdF9oZWFkZXJzOiBIZWFkZXJzCisgICAgKSAtPiBPcHRpb25hbFtIVFRQUmVz
cG9uc2VdOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgSFRUUCBCYXNpYyBBdXRoIGFuZCBy
ZXR1cm4gYSBIVFRQIDQwMSBvciA0MDMgcmVzcG9uc2UgaWYgbmVlZGVkLgorCisgICAgICAgIElm
IGF1dGhlbnRpY2F0aW9uIHN1Y2NlZWRzLCB0aGUgdXNlcm5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0
ZWQgdXNlciBpcworICAgICAgICBzdG9yZWQgaW4gdGhlIGBgdXNlcm5hbWVgYCBhdHRyaWJ1dGUu
CisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF1dGhvcml6YXRpb24g
PSByZXF1ZXN0X2hlYWRlcnNbIkF1dGhvcml6YXRpb24iXQorICAgICAgICBleGNlcHQgS2V5RXJy
b3I6CisgICAgICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgICAgIGh0dHAuSFRUUFN0YXR1
cy5VTkFVVEhPUklaRUQsCisgICAgICAgICAgICAgICAgWygiV1dXLUF1dGhlbnRpY2F0ZSIsIGJ1
aWxkX3d3d19hdXRoZW50aWNhdGVfYmFzaWMoc2VsZi5yZWFsbSkpXSwKKyAgICAgICAgICAgICAg
ICBiIk1pc3NpbmcgY3JlZGVudGlhbHNcbiIsCisgICAgICAgICAgICApCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkID0gcGFyc2VfYXV0aG9yaXphdGlvbl9i
YXNpYyhhdXRob3JpemF0aW9uKQorICAgICAgICBleGNlcHQgSW52YWxpZEhlYWRlcjoKKyAgICAg
ICAgICAgIHJldHVybiAoCisgICAgICAgICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLlVOQVVUSE9S
SVpFRCwKKyAgICAgICAgICAgICAgICBbKCJXV1ctQXV0aGVudGljYXRlIiwgYnVpbGRfd3d3X2F1
dGhlbnRpY2F0ZV9iYXNpYyhzZWxmLnJlYWxtKSldLAorICAgICAgICAgICAgICAgIGIiVW5zdXBw
b3J0ZWQgY3JlZGVudGlhbHNcbiIsCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IGF3
YWl0IHNlbGYuY2hlY2tfY3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKToKKyAgICAgICAg
ICAgIHJldHVybiAoCisgICAgICAgICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLlVOQVVUSE9SSVpF
RCwKKyAgICAgICAgICAgICAgICBbKCJXV1ctQXV0aGVudGljYXRlIiwgYnVpbGRfd3d3X2F1dGhl
bnRpY2F0ZV9iYXNpYyhzZWxmLnJlYWxtKSldLAorICAgICAgICAgICAgICAgIGIiSW52YWxpZCBj
cmVkZW50aWFsc1xuIiwKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLnVzZXJuYW1lID0g
dXNlcm5hbWUKKworICAgICAgICByZXR1cm4gYXdhaXQgc3VwZXIoKS5wcm9jZXNzX3JlcXVlc3Qo
cGF0aCwgcmVxdWVzdF9oZWFkZXJzKQorCisKK2RlZiBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3Rv
cnkoCisgICAgcmVhbG06IHN0ciwKKyAgICBjcmVkZW50aWFsczogT3B0aW9uYWxbVW5pb25bQ3Jl
ZGVudGlhbHMsIEl0ZXJhYmxlW0NyZWRlbnRpYWxzXV1dID0gTm9uZSwKKyAgICBjaGVja19jcmVk
ZW50aWFsczogT3B0aW9uYWxbQ2FsbGFibGVbW3N0ciwgc3RyXSwgQXdhaXRhYmxlW2Jvb2xdXV0g
PSBOb25lLAorICAgIGNyZWF0ZV9wcm90b2NvbDogVHlwZVsKKyAgICAgICAgQmFzaWNBdXRoV2Vi
U29ja2V0U2VydmVyUHJvdG9jb2wKKyAgICBdID0gQmFzaWNBdXRoV2ViU29ja2V0U2VydmVyUHJv
dG9jb2wsCispIC0+IENhbGxhYmxlW1tBbnldLCBCYXNpY0F1dGhXZWJTb2NrZXRTZXJ2ZXJQcm90
b2NvbF06CisgICAgIiIiCisgICAgUHJvdG9jb2wgZmFjdG9yeSB0aGF0IGVuZm9yY2VzIEhUVFAg
QmFzaWMgQXV0aC4KKworICAgIGBgYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0b3J5YGAgaXMgZGVz
aWduZWQgdG8gaW50ZWdyYXRlIHdpdGgKKyAgICA6ZnVuYzpgfndlYnNvY2tldHMuc2VydmVyLnNl
cnZlYCBsaWtlIHRoaXM6OgorCisgICAgICAgIHdlYnNvY2tldHMuc2VydmUoCisgICAgICAgICAg
ICAuLi4sCisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9d2Vic29ja2V0cy5iYXNpY19hdXRo
X3Byb3RvY29sX2ZhY3RvcnkoCisgICAgICAgICAgICAgICAgcmVhbG09Im15IGRldiBzZXJ2ZXIi
LAorICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzPSgiaGVsbG8iLCAiaWxvdmV5b3UiKSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgYGByZWFsbWBgIGluZGljYXRlcyB0aGUgc2Nv
cGUgb2YgcHJvdGVjdGlvbi4gSXQgc2hvdWxkIGNvbnRhaW4gb25seSBBU0NJSQorICAgIGNoYXJh
Y3RlcnMgYmVjYXVzZSB0aGUgZW5jb2Rpbmcgb2Ygbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaXMgdW5k
ZWZpbmVkLgorICAgIFJlZmVyIHRvIHNlY3Rpb24gMi4yIG9mIDpyZmM6YDcyMzVgIGZvciBkZXRh
aWxzLgorCisgICAgYGBjcmVkZW50aWFsc2BgIGRlZmluZXMgaGFyZCBjb2RlZCBhdXRob3JpemVk
IGNyZWRlbnRpYWxzLiBJdCBjYW4gYmUgYQorICAgIGBgKHVzZXJuYW1lLCBwYXNzd29yZClgYCBw
YWlyIG9yIGEgbGlzdCBvZiBzdWNoIHBhaXJzLgorCisgICAgYGBjaGVja19jcmVkZW50aWFsc2Bg
IGRlZmluZXMgYSBjb3JvdXRpbmUgdGhhdCBjaGVja3Mgd2hldGhlciBjcmVkZW50aWFscworICAg
IGFyZSBhdXRob3JpemVkLiBUaGlzIGNvcm91dGluZSByZWNlaXZlcyBgYHVzZXJuYW1lYGAgYW5k
IGBgcGFzc3dvcmRgYAorICAgIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBhIDpjbGFzczpgYm9vbGAu
CisKKyAgICBPbmUgb2YgYGBjcmVkZW50aWFsc2BgIG9yIGBgY2hlY2tfY3JlZGVudGlhbHNgYCBt
dXN0IGJlIHByb3ZpZGVkIGJ1dCBub3QKKyAgICBib3RoLgorCisgICAgQnkgZGVmYXVsdCwgYGBi
YXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnlgYCBjcmVhdGVzIGEgZmFjdG9yeSBmb3IgYnVpbGRp
bmcKKyAgICA6Y2xhc3M6YEJhc2ljQXV0aFdlYlNvY2tldFNlcnZlclByb3RvY29sYCBpbnN0YW5j
ZXMuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcworICAgIHdpdGggdGhlIGBgY3JlYXRlX3Byb3RvY29s
YGAgcGFyYW1ldGVyLgorCisgICAgOnBhcmFtIHJlYWxtOiBzY29wZSBvZiBwcm90ZWN0aW9uCisg
ICAgOnBhcmFtIGNyZWRlbnRpYWxzOiBoYXJkIGNvZGVkIGNyZWRlbnRpYWxzCisgICAgOnBhcmFt
IGNoZWNrX2NyZWRlbnRpYWxzOiBjb3JvdXRpbmUgdGhhdCB2ZXJpZmllcyBjcmVkZW50aWFscwor
ICAgIDpyYWlzZXMgVHlwZUVycm9yOiBpZiB0aGUgY3JlZGVudGlhbHMgYXJndW1lbnQgaGFzIHRo
ZSB3cm9uZyB0eXBlCisKKyAgICAiIiIKKyAgICBpZiAoY3JlZGVudGlhbHMgaXMgTm9uZSkgPT0g
KGNoZWNrX2NyZWRlbnRpYWxzIGlzIE5vbmUpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoInBy
b3ZpZGUgZWl0aGVyIGNyZWRlbnRpYWxzIG9yIGNoZWNrX2NyZWRlbnRpYWxzIikKKworICAgIGlm
IGNyZWRlbnRpYWxzIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBpc19jcmVkZW50aWFscyhjcmVk
ZW50aWFscyk6CisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBjaGVja19jcmVkZW50aWFscyh1c2Vy
bmFtZTogc3RyLCBwYXNzd29yZDogc3RyKSAtPiBib29sOgorICAgICAgICAgICAgICAgIHJldHVy
biAodXNlcm5hbWUsIHBhc3N3b3JkKSA9PSBjcmVkZW50aWFscworCisgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShjcmVkZW50aWFscywgSXRlcmFibGUpOgorICAgICAgICAgICAgY3JlZGVudGlhbHNf
bGlzdCA9IGxpc3QoY3JlZGVudGlhbHMpCisgICAgICAgICAgICBpZiBhbGwoaXNfY3JlZGVudGlh
bHMoaXRlbSkgZm9yIGl0ZW0gaW4gY3JlZGVudGlhbHNfbGlzdCk6CisgICAgICAgICAgICAgICAg
Y3JlZGVudGlhbHNfZGljdCA9IGRpY3QoY3JlZGVudGlhbHNfbGlzdCkKKworICAgICAgICAgICAg
ICAgIGFzeW5jIGRlZiBjaGVja19jcmVkZW50aWFscyh1c2VybmFtZTogc3RyLCBwYXNzd29yZDog
c3RyKSAtPiBib29sOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlZGVudGlhbHNfZGlj
dC5nZXQodXNlcm5hbWUpID09IHBhc3N3b3JkCisKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiaW52YWxpZCBjcmVkZW50aWFscyBhcmd1bWVudDog
e2NyZWRlbnRpYWxzfSIpCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcihmImludmFsaWQgY3JlZGVudGlhbHMgYXJndW1lbnQ6IHtjcmVkZW50aWFsc30iKQorCisg
ICAgcmV0dXJuIGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICBjcmVhdGVfcHJvdG9jb2wsIHJl
YWxtPXJlYWxtLCBjaGVja19jcmVkZW50aWFscz1jaGVja19jcmVkZW50aWFscworICAgICkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9jbGllbnQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZWI1OGY5ZjQ4NDIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2NsaWVudC5weQpAQCAtMCwwICsxLDU4NCBAQAor
IiIiCis6bW9kOmB3ZWJzb2NrZXRzLmNsaWVudGAgZGVmaW5lcyB0aGUgV2ViU29ja2V0IGNsaWVu
dCBBUElzLgorCisiIiIKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMK
K2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgd2FybmluZ3MKK2Zyb20g
dHlwZXMgaW1wb3J0IFRyYWNlYmFja1R5cGUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIEdlbmVy
YXRvciwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBUdXBsZSwgVHlwZSwgY2FzdAorCitmcm9t
IC5leGNlcHRpb25zIGltcG9ydCAoCisgICAgSW52YWxpZEhhbmRzaGFrZSwKKyAgICBJbnZhbGlk
SGVhZGVyLAorICAgIEludmFsaWRNZXNzYWdlLAorICAgIEludmFsaWRTdGF0dXNDb2RlLAorICAg
IE5lZ290aWF0aW9uRXJyb3IsCisgICAgUmVkaXJlY3RIYW5kc2hha2UsCisgICAgU2VjdXJpdHlF
cnJvciwKKykKK2Zyb20gLmV4dGVuc2lvbnMuYmFzZSBpbXBvcnQgQ2xpZW50RXh0ZW5zaW9uRmFj
dG9yeSwgRXh0ZW5zaW9uCitmcm9tIC5leHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0ZSBpbXBv
cnQgQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5Citmcm9tIC5oYW5kc2hha2UgaW1wb3J0
IGJ1aWxkX3JlcXVlc3QsIGNoZWNrX3Jlc3BvbnNlCitmcm9tIC5oZWFkZXJzIGltcG9ydCAoCisg
ICAgYnVpbGRfYXV0aG9yaXphdGlvbl9iYXNpYywKKyAgICBidWlsZF9leHRlbnNpb24sCisgICAg
YnVpbGRfc3VicHJvdG9jb2wsCisgICAgcGFyc2VfZXh0ZW5zaW9uLAorICAgIHBhcnNlX3N1YnBy
b3RvY29sLAorKQorZnJvbSAuaHR0cCBpbXBvcnQgVVNFUl9BR0VOVCwgSGVhZGVycywgSGVhZGVy
c0xpa2UsIHJlYWRfcmVzcG9uc2UKK2Zyb20gLnByb3RvY29sIGltcG9ydCBXZWJTb2NrZXRDb21t
b25Qcm90b2NvbAorZnJvbSAudHlwaW5nIGltcG9ydCBFeHRlbnNpb25IZWFkZXIsIE9yaWdpbiwg
U3VicHJvdG9jb2wKK2Zyb20gLnVyaSBpbXBvcnQgV2ViU29ja2V0VVJJLCBwYXJzZV91cmkKKwor
CitfX2FsbF9fID0gWyJjb25uZWN0IiwgInVuaXhfY29ubmVjdCIsICJXZWJTb2NrZXRDbGllbnRQ
cm90b2NvbCJdCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2Ns
YXNzIFdlYlNvY2tldENsaWVudFByb3RvY29sKFdlYlNvY2tldENvbW1vblByb3RvY29sKToKKyAg
ICAiIiIKKyAgICA6Y2xhc3M6YH5hc3luY2lvLlByb3RvY29sYCBzdWJjbGFzcyBpbXBsZW1lbnRp
bmcgYSBXZWJTb2NrZXQgY2xpZW50LgorCisgICAgVGhpcyBjbGFzcyBpbmhlcml0cyBtb3N0IG9m
IGl0cyBtZXRob2RzIGZyb20KKyAgICA6Y2xhc3M6YH53ZWJzb2NrZXRzLnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sYC4KKworICAgICIiIgorCisgICAgaXNfY2xpZW50ID0gVHJ1ZQor
ICAgIHNpZGUgPSAiY2xpZW50IgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAor
ICAgICAgICAqLAorICAgICAgICBvcmlnaW46IE9wdGlvbmFsW09yaWdpbl0gPSBOb25lLAorICAg
ICAgICBleHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVtDbGllbnRFeHRlbnNpb25GYWN0b3J5
XV0gPSBOb25lLAorICAgICAgICBzdWJwcm90b2NvbHM6IE9wdGlvbmFsW1NlcXVlbmNlW1N1YnBy
b3RvY29sXV0gPSBOb25lLAorICAgICAgICBleHRyYV9oZWFkZXJzOiBPcHRpb25hbFtIZWFkZXJz
TGlrZV0gPSBOb25lLAorICAgICAgICAqKmt3YXJnczogQW55LAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5vcmlnaW4gPSBvcmlnaW4KKyAgICAgICAgc2VsZi5hdmFpbGFibGVfZXh0ZW5z
aW9ucyA9IGV4dGVuc2lvbnMKKyAgICAgICAgc2VsZi5hdmFpbGFibGVfc3VicHJvdG9jb2xzID0g
c3VicHJvdG9jb2xzCisgICAgICAgIHNlbGYuZXh0cmFfaGVhZGVycyA9IGV4dHJhX2hlYWRlcnMK
KyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiB3cml0ZV9odHRw
X3JlcXVlc3Qoc2VsZiwgcGF0aDogc3RyLCBoZWFkZXJzOiBIZWFkZXJzKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgV3JpdGUgcmVxdWVzdCBsaW5lIGFuZCBoZWFkZXJzIHRvIHRoZSBI
VFRQIHJlcXVlc3QuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAg
ICAgICAgc2VsZi5yZXF1ZXN0X2hlYWRlcnMgPSBoZWFkZXJzCisKKyAgICAgICAgbG9nZ2VyLmRl
YnVnKCIlcyA+IEdFVCAlcyBIVFRQLzEuMSIsIHNlbGYuc2lkZSwgcGF0aCkKKyAgICAgICAgbG9n
Z2VyLmRlYnVnKCIlcyA+ICVyIiwgc2VsZi5zaWRlLCBoZWFkZXJzKQorCisgICAgICAgICMgU2lu
Y2UgdGhlIHBhdGggYW5kIGhlYWRlcnMgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMsCisg
ICAgICAgICMgd2UgY2FuIGtlZXAgdGhpcyBzaW1wbGUuCisgICAgICAgIHJlcXVlc3QgPSBmIkdF
VCB7cGF0aH0gSFRUUC8xLjFcclxuIgorICAgICAgICByZXF1ZXN0ICs9IHN0cihoZWFkZXJzKQor
CisgICAgICAgIHNlbGYudHJhbnNwb3J0LndyaXRlKHJlcXVlc3QuZW5jb2RlKCkpCisKKyAgICBh
c3luYyBkZWYgcmVhZF9odHRwX3Jlc3BvbnNlKHNlbGYpIC0+IFR1cGxlW2ludCwgSGVhZGVyc106
CisgICAgICAgICIiIgorICAgICAgICBSZWFkIHN0YXR1cyBsaW5lIGFuZCBoZWFkZXJzIGZyb20g
dGhlIEhUVFAgcmVzcG9uc2UuCisKKyAgICAgICAgSWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEg
Ym9keSwgaXQgbWF5IGJlIHJlYWQgZnJvbSBgYHNlbGYucmVhZGVyYGAKKyAgICAgICAgYWZ0ZXIg
dGhpcyBjb3JvdXRpbmUgcmV0dXJucy4KKworICAgICAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4
Y2VwdGlvbnMuSW52YWxpZE1lc3NhZ2U6IGlmIHRoZSBIVFRQIG1lc3NhZ2UgaXMKKyAgICAgICAg
ICAgIG1hbGZvcm1lZCBvciBpc24ndCBhbiBIVFRQLzEuMSBHRVQgcmVzcG9uc2UKKworICAgICAg
ICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhdHVzX2NvZGUsIHJlYXNvbiwgaGVh
ZGVycyA9IGF3YWl0IHJlYWRfcmVzcG9uc2Uoc2VsZi5yZWFkZXIpCisgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZE1lc3NhZ2UoImRpZCBu
b3QgcmVjZWl2ZSBhIHZhbGlkIEhUVFAgcmVzcG9uc2UiKSBmcm9tIGV4YworCisgICAgICAgIGxv
Z2dlci5kZWJ1ZygiJXMgPCBIVFRQLzEuMSAlZCAlcyIsIHNlbGYuc2lkZSwgc3RhdHVzX2NvZGUs
IHJlYXNvbikKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyA8ICVyIiwgc2VsZi5zaWRlLCBoZWFk
ZXJzKQorCisgICAgICAgIHNlbGYucmVzcG9uc2VfaGVhZGVycyA9IGhlYWRlcnMKKworICAgICAg
ICByZXR1cm4gc3RhdHVzX2NvZGUsIHNlbGYucmVzcG9uc2VfaGVhZGVycworCisgICAgQHN0YXRp
Y21ldGhvZAorICAgIGRlZiBwcm9jZXNzX2V4dGVuc2lvbnMoCisgICAgICAgIGhlYWRlcnM6IEhl
YWRlcnMsCisgICAgICAgIGF2YWlsYWJsZV9leHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVtD
bGllbnRFeHRlbnNpb25GYWN0b3J5XV0sCisgICAgKSAtPiBMaXN0W0V4dGVuc2lvbl06CisgICAg
ICAgICIiIgorICAgICAgICBIYW5kbGUgdGhlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBIVFRQ
IHJlc3BvbnNlIGhlYWRlci4KKworICAgICAgICBDaGVjayB0aGF0IGVhY2ggZXh0ZW5zaW9uIGlz
IHN1cHBvcnRlZCwgYXMgd2VsbCBhcyBpdHMgcGFyYW1ldGVycy4KKworICAgICAgICBSZXR1cm4g
dGhlIGxpc3Qgb2YgYWNjZXB0ZWQgZXh0ZW5zaW9ucy4KKworICAgICAgICBSYWlzZSA6ZXhjOmB+
d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIYW5kc2hha2VgIHRvIGFib3J0IHRoZQorICAg
ICAgICBjb25uZWN0aW9uLgorCisgICAgICAgIDpyZmM6YDY0NTVgIGxlYXZlcyB0aGUgcnVsZXMg
dXAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgZWFjaAorICAgICAgICA6ZXh0ZW5zaW9uLgorCisg
ICAgICAgIFRvIHByb3ZpZGUgdGhpcyBsZXZlbCBvZiBmbGV4aWJpbGl0eSwgZm9yIGVhY2ggZXh0
ZW5zaW9uIGFjY2VwdGVkIGJ5CisgICAgICAgIHRoZSBzZXJ2ZXIsIHdlIGNoZWNrIGZvciBhIG1h
dGNoIHdpdGggZWFjaCBleHRlbnNpb24gYXZhaWxhYmxlIGluIHRoZQorICAgICAgICBjbGllbnQg
Y29uZmlndXJhdGlvbi4gSWYgbm8gbWF0Y2ggaXMgZm91bmQsIGFuIGV4Y2VwdGlvbiBpcyByYWlz
ZWQuCisKKyAgICAgICAgSWYgc2V2ZXJhbCB2YXJpYW50cyBvZiB0aGUgc2FtZSBleHRlbnNpb24g
YXJlIGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIsCisgICAgICAgIGl0IG1heSBiZSBjb25maWd1cmVk
IHNldmVyZWwgdGltZXMsIHdoaWNoIHdvbid0IG1ha2Ugc2Vuc2UgaW4gZ2VuZXJhbC4KKyAgICAg
ICAgRXh0ZW5zaW9ucyBtdXN0IGltcGxlbWVudCB0aGVpciBvd24gcmVxdWlyZW1lbnRzLiBGb3Ig
dGhpcyBwdXJwb3NlLAorICAgICAgICB0aGUgbGlzdCBvZiBwcmV2aW91c2x5IGFjY2VwdGVkIGV4
dGVuc2lvbnMgaXMgcHJvdmlkZWQuCisKKyAgICAgICAgT3RoZXIgcmVxdWlyZW1lbnRzLCBmb3Ig
ZXhhbXBsZSByZWxhdGVkIHRvIG1hbmRhdG9yeSBleHRlbnNpb25zIG9yIHRoZQorICAgICAgICBv
cmRlciBvZiBleHRlbnNpb25zLCBtYXkgYmUgaW1wbGVtZW50ZWQgYnkgb3ZlcnJpZGluZyB0aGlz
IG1ldGhvZC4KKworICAgICAgICAiIiIKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9uczogTGlz
dFtFeHRlbnNpb25dID0gW10KKworICAgICAgICBoZWFkZXJfdmFsdWVzID0gaGVhZGVycy5nZXRf
YWxsKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMiKQorCisgICAgICAgIGlmIGhlYWRlcl92YWx1
ZXM6CisKKyAgICAgICAgICAgIGlmIGF2YWlsYWJsZV9leHRlbnNpb25zIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEhhbmRzaGFrZSgibm8gZXh0ZW5zaW9ucyBzdXBwb3J0
ZWQiKQorCisgICAgICAgICAgICBwYXJzZWRfaGVhZGVyX3ZhbHVlczogTGlzdFtFeHRlbnNpb25I
ZWFkZXJdID0gc3VtKAorICAgICAgICAgICAgICAgIFtwYXJzZV9leHRlbnNpb24oaGVhZGVyX3Zh
bHVlKSBmb3IgaGVhZGVyX3ZhbHVlIGluIGhlYWRlcl92YWx1ZXNdLCBbXQorICAgICAgICAgICAg
KQorCisgICAgICAgICAgICBmb3IgbmFtZSwgcmVzcG9uc2VfcGFyYW1zIGluIHBhcnNlZF9oZWFk
ZXJfdmFsdWVzOgorCisgICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9mYWN0b3J5IGluIGF2
YWlsYWJsZV9leHRlbnNpb25zOgorCisgICAgICAgICAgICAgICAgICAgICMgU2tpcCBub24tbWF0
Y2hpbmcgZXh0ZW5zaW9ucyBiYXNlZCBvbiB0aGVpciBuYW1lLgorICAgICAgICAgICAgICAgICAg
ICBpZiBleHRlbnNpb25fZmFjdG9yeS5uYW1lICE9IG5hbWU6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICMgU2tpcCBub24tbWF0Y2hpbmcg
ZXh0ZW5zaW9ucyBiYXNlZCBvbiB0aGVpciBwYXJhbXMuCisgICAgICAgICAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbl9mYWN0b3J5
LnByb2Nlc3NfcmVzcG9uc2VfcGFyYW1zKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlX3BhcmFtcywgYWNjZXB0ZWRfZXh0ZW5zaW9ucworICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgTmVnb3RpYXRpb25FcnJvcjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQg
bWF0Y2hpbmcgZXh0ZW5zaW9uIHRvIHRoZSBmaW5hbCBsaXN0LgorICAgICAgICAgICAgICAgICAg
ICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAgICAgICAg
ICAgICAgIyBCcmVhayBvdXQgb2YgdGhlIGxvb3Agb25jZSB3ZSBoYXZlIGEgbWF0Y2guCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGRpZG4ndCBi
cmVhayBmcm9tIHRoZSBsb29wLCBubyBleHRlbnNpb24gaW4gb3VyIGxpc3QKKyAgICAgICAgICAg
ICAgICAjIG1hdGNoZWQgd2hhdCB0aGUgc2VydmVyIHNlbnQuIEZhaWwgdGhlIGNvbm5lY3Rpb24u
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmVnb3Rp
YXRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIGYiVW5zdXBwb3J0ZWQgZXh0ZW5z
aW9uOiAiCisgICAgICAgICAgICAgICAgICAgICAgICBmIm5hbWUgPSB7bmFtZX0sIHBhcmFtcyA9
IHtyZXNwb25zZV9wYXJhbXN9IgorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcmV0
dXJuIGFjY2VwdGVkX2V4dGVuc2lvbnMKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcHJv
Y2Vzc19zdWJwcm90b2NvbCgKKyAgICAgICAgaGVhZGVyczogSGVhZGVycywgYXZhaWxhYmxlX3N1
YnByb3RvY29sczogT3B0aW9uYWxbU2VxdWVuY2VbU3VicHJvdG9jb2xdXQorICAgICkgLT4gT3B0
aW9uYWxbU3VicHJvdG9jb2xdOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIHRoZSBTZWMt
V2ViU29ja2V0LVByb3RvY29sIEhUVFAgcmVzcG9uc2UgaGVhZGVyLgorCisgICAgICAgIENoZWNr
IHRoYXQgaXQgY29udGFpbnMgZXhhY3RseSBvbmUgc3VwcG9ydGVkIHN1YnByb3RvY29sLgorCisg
ICAgICAgIFJldHVybiB0aGUgc2VsZWN0ZWQgc3VicHJvdG9jb2wuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIHN1YnByb3RvY29sOiBPcHRpb25hbFtTdWJwcm90b2NvbF0gPSBOb25lCisKKyAgICAg
ICAgaGVhZGVyX3ZhbHVlcyA9IGhlYWRlcnMuZ2V0X2FsbCgiU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bCIpCisKKyAgICAgICAgaWYgaGVhZGVyX3ZhbHVlczoKKworICAgICAgICAgICAgaWYgYXZhaWxh
YmxlX3N1YnByb3RvY29scyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRI
YW5kc2hha2UoIm5vIHN1YnByb3RvY29scyBzdXBwb3J0ZWQiKQorCisgICAgICAgICAgICBwYXJz
ZWRfaGVhZGVyX3ZhbHVlczogU2VxdWVuY2VbU3VicHJvdG9jb2xdID0gc3VtKAorICAgICAgICAg
ICAgICAgIFtwYXJzZV9zdWJwcm90b2NvbChoZWFkZXJfdmFsdWUpIGZvciBoZWFkZXJfdmFsdWUg
aW4gaGVhZGVyX3ZhbHVlc10sIFtdCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmIGxl
bihwYXJzZWRfaGVhZGVyX3ZhbHVlcykgPiAxOgorICAgICAgICAgICAgICAgIHN1YnByb3RvY29s
cyA9ICIsICIuam9pbihwYXJzZWRfaGVhZGVyX3ZhbHVlcykKKyAgICAgICAgICAgICAgICByYWlz
ZSBJbnZhbGlkSGFuZHNoYWtlKGYibXVsdGlwbGUgc3VicHJvdG9jb2xzOiB7c3VicHJvdG9jb2xz
fSIpCisKKyAgICAgICAgICAgIHN1YnByb3RvY29sID0gcGFyc2VkX2hlYWRlcl92YWx1ZXNbMF0K
KworICAgICAgICAgICAgaWYgc3VicHJvdG9jb2wgbm90IGluIGF2YWlsYWJsZV9zdWJwcm90b2Nv
bHM6CisgICAgICAgICAgICAgICAgcmFpc2UgTmVnb3RpYXRpb25FcnJvcihmInVuc3VwcG9ydGVk
IHN1YnByb3RvY29sOiB7c3VicHJvdG9jb2x9IikKKworICAgICAgICByZXR1cm4gc3VicHJvdG9j
b2wKKworICAgIGFzeW5jIGRlZiBoYW5kc2hha2UoCisgICAgICAgIHNlbGYsCisgICAgICAgIHdz
dXJpOiBXZWJTb2NrZXRVUkksCisgICAgICAgIG9yaWdpbjogT3B0aW9uYWxbT3JpZ2luXSA9IE5v
bmUsCisgICAgICAgIGF2YWlsYWJsZV9leHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVtDbGll
bnRFeHRlbnNpb25GYWN0b3J5XV0gPSBOb25lLAorICAgICAgICBhdmFpbGFibGVfc3VicHJvdG9j
b2xzOiBPcHRpb25hbFtTZXF1ZW5jZVtTdWJwcm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgZXh0
cmFfaGVhZGVyczogT3B0aW9uYWxbSGVhZGVyc0xpa2VdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIHRoZSBjbGllbnQgc2lkZSBvZiB0aGUgb3Bl
bmluZyBoYW5kc2hha2UuCisKKyAgICAgICAgOnBhcmFtIG9yaWdpbjogc2V0cyB0aGUgT3JpZ2lu
IEhUVFAgaGVhZGVyCisgICAgICAgIDpwYXJhbSBhdmFpbGFibGVfZXh0ZW5zaW9uczogbGlzdCBv
ZiBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpbiB0aGUgb3JkZXIKKyAgICAgICAgICAgIGluIHdoaWNo
IHRoZXkgc2hvdWxkIGJlIHVzZWQKKyAgICAgICAgOnBhcmFtIGF2YWlsYWJsZV9zdWJwcm90b2Nv
bHM6IGxpc3Qgb2Ygc3VwcG9ydGVkIHN1YnByb3RvY29scyBpbiBvcmRlcgorICAgICAgICAgICAg
b2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlCisgICAgICAgIDpwYXJhbSBleHRyYV9oZWFkZXJzOiBz
ZXRzIGFkZGl0aW9uYWwgSFRUUCByZXF1ZXN0IGhlYWRlcnM7IGl0IG11c3QgYmUKKyAgICAgICAg
ICAgIGEgOmNsYXNzOmB+d2Vic29ja2V0cy5odHRwLkhlYWRlcnNgIGluc3RhbmNlLCBhCisgICAg
ICAgICAgICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2AsIG9yIGFuIGl0ZXJhYmxl
IG9mIGBgKG5hbWUsCisgICAgICAgICAgICB2YWx1ZSlgYCBwYWlycworICAgICAgICA6cmFpc2Vz
IH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZEhhbmRzaGFrZTogaWYgdGhlIGhhbmRzaGFr
ZQorICAgICAgICAgICAgZmFpbHMKKworICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdF9oZWFk
ZXJzID0gSGVhZGVycygpCisKKyAgICAgICAgaWYgd3N1cmkucG9ydCA9PSAoNDQzIGlmIHdzdXJp
LnNlY3VyZSBlbHNlIDgwKTogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICAgICAgcmVxdWVz
dF9oZWFkZXJzWyJIb3N0Il0gPSB3c3VyaS5ob3N0CisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXF1ZXN0X2hlYWRlcnNbIkhvc3QiXSA9IGYie3dzdXJpLmhvc3R9Ont3c3VyaS5wb3J0fSIK
KworICAgICAgICBpZiB3c3VyaS51c2VyX2luZm86CisgICAgICAgICAgICByZXF1ZXN0X2hlYWRl
cnNbIkF1dGhvcml6YXRpb24iXSA9IGJ1aWxkX2F1dGhvcml6YXRpb25fYmFzaWMoCisgICAgICAg
ICAgICAgICAgKndzdXJpLnVzZXJfaW5mbworICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG9y
aWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVyc1siT3JpZ2luIl0g
PSBvcmlnaW4KKworICAgICAgICBrZXkgPSBidWlsZF9yZXF1ZXN0KHJlcXVlc3RfaGVhZGVycykK
KworICAgICAgICBpZiBhdmFpbGFibGVfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gYnVpbGRfZXh0ZW5zaW9uKAorICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl9mYWN0b3J5Lm5hbWUsIGV4dGVuc2lv
bl9mYWN0b3J5LmdldF9yZXF1ZXN0X3BhcmFtcygpKQorICAgICAgICAgICAgICAgICAgICBmb3Ig
ZXh0ZW5zaW9uX2ZhY3RvcnkgaW4gYXZhaWxhYmxlX2V4dGVuc2lvbnMKKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXF1ZXN0X2hlYWRlcnNbIlNlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyJdID0gZXh0ZW5zaW9uc19oZWFkZXIKKworICAgICAgICBpZiBhdmFp
bGFibGVfc3VicHJvdG9jb2xzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJvdG9jb2xfaGVh
ZGVyID0gYnVpbGRfc3VicHJvdG9jb2woYXZhaWxhYmxlX3N1YnByb3RvY29scykKKyAgICAgICAg
ICAgIHJlcXVlc3RfaGVhZGVyc1siU2VjLVdlYlNvY2tldC1Qcm90b2NvbCJdID0gcHJvdG9jb2xf
aGVhZGVyCisKKyAgICAgICAgaWYgZXh0cmFfaGVhZGVycyBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoZXh0cmFfaGVhZGVycywgSGVhZGVycyk6CisgICAgICAgICAgICAg
ICAgZXh0cmFfaGVhZGVycyA9IGV4dHJhX2hlYWRlcnMucmF3X2l0ZW1zKCkKKyAgICAgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShleHRyYV9oZWFkZXJzLCBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZyk6
CisgICAgICAgICAgICAgICAgZXh0cmFfaGVhZGVycyA9IGV4dHJhX2hlYWRlcnMuaXRlbXMoKQor
ICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGV4dHJhX2hlYWRlcnM6CisgICAgICAgICAg
ICAgICAgcmVxdWVzdF9oZWFkZXJzW25hbWVdID0gdmFsdWUKKworICAgICAgICByZXF1ZXN0X2hl
YWRlcnMuc2V0ZGVmYXVsdCgiVXNlci1BZ2VudCIsIFVTRVJfQUdFTlQpCisKKyAgICAgICAgc2Vs
Zi53cml0ZV9odHRwX3JlcXVlc3Qod3N1cmkucmVzb3VyY2VfbmFtZSwgcmVxdWVzdF9oZWFkZXJz
KQorCisgICAgICAgIHN0YXR1c19jb2RlLCByZXNwb25zZV9oZWFkZXJzID0gYXdhaXQgc2VsZi5y
ZWFkX2h0dHBfcmVzcG9uc2UoKQorICAgICAgICBpZiBzdGF0dXNfY29kZSBpbiAoMzAxLCAzMDIs
IDMwMywgMzA3LCAzMDgpOgorICAgICAgICAgICAgaWYgIkxvY2F0aW9uIiBub3QgaW4gcmVzcG9u
c2VfaGVhZGVyczoKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyKCJMb2NhdGlv
biIpCisgICAgICAgICAgICByYWlzZSBSZWRpcmVjdEhhbmRzaGFrZShyZXNwb25zZV9oZWFkZXJz
WyJMb2NhdGlvbiJdKQorICAgICAgICBlbGlmIHN0YXR1c19jb2RlICE9IDEwMToKKyAgICAgICAg
ICAgIHJhaXNlIEludmFsaWRTdGF0dXNDb2RlKHN0YXR1c19jb2RlKQorCisgICAgICAgIGNoZWNr
X3Jlc3BvbnNlKHJlc3BvbnNlX2hlYWRlcnMsIGtleSkKKworICAgICAgICBzZWxmLmV4dGVuc2lv
bnMgPSBzZWxmLnByb2Nlc3NfZXh0ZW5zaW9ucygKKyAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRl
cnMsIGF2YWlsYWJsZV9leHRlbnNpb25zCisgICAgICAgICkKKworICAgICAgICBzZWxmLnN1YnBy
b3RvY29sID0gc2VsZi5wcm9jZXNzX3N1YnByb3RvY29sKAorICAgICAgICAgICAgcmVzcG9uc2Vf
aGVhZGVycywgYXZhaWxhYmxlX3N1YnByb3RvY29scworICAgICAgICApCisKKyAgICAgICAgc2Vs
Zi5jb25uZWN0aW9uX29wZW4oKQorCisKK2NsYXNzIENvbm5lY3Q6CisgICAgIiIiCisgICAgQ29u
bmVjdCB0byB0aGUgV2ViU29ja2V0IHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGB1cmlgYC4KKworICAg
IEF3YWl0aW5nIDpmdW5jOmBjb25uZWN0YCB5aWVsZHMgYSA6Y2xhc3M6YFdlYlNvY2tldENsaWVu
dFByb3RvY29sYCB3aGljaAorICAgIGNhbiB0aGVuIGJlIHVzZWQgdG8gc2VuZCBhbmQgcmVjZWl2
ZSBtZXNzYWdlcy4KKworICAgIDpmdW5jOmBjb25uZWN0YCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEg
YXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlci4gSW4KKyAgICB0aGF0IGNhc2UsIHRoZSBjb25u
ZWN0aW9uIGlzIGNsb3NlZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQuCisKKyAgICA6ZnVuYzpg
Y29ubmVjdGAgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXZlbnQgbG9vcCdzCisgICAgOm1ldGg6
YH5hc3luY2lvLmxvb3AuY3JlYXRlX2Nvbm5lY3Rpb25gIG1ldGhvZC4gVW5rbm93biBrZXl3b3Jk
IGFyZ3VtZW50cworICAgIGFyZSBwYXNzZWQgdG8gOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRl
X2Nvbm5lY3Rpb25gLgorCisgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2V0IHRoZSBgYHNzbGBg
IGtleXdvcmQgYXJndW1lbnQgdG8gYQorICAgIDpjbGFzczpgfnNzbC5TU0xDb250ZXh0YCB0byBl
bmZvcmNlIHNvbWUgVExTIHNldHRpbmdzLiBXaGVuIGNvbm5lY3RpbmcgdG8KKyAgICBhIGBgd3Nz
Oi8vYGAgVVJJLCBpZiB0aGlzIGFyZ3VtZW50IGlzbid0IHByb3ZpZGVkIGV4cGxpY2l0bHksCisg
ICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBpcyBjYWxsZWQgdG8gY3JlYXRl
IGEgY29udGV4dC4KKworICAgIFlvdSBjYW4gY29ubmVjdCB0byBhIGRpZmZlcmVudCBob3N0IGFu
ZCBwb3J0IGZyb20gdGhvc2UgZm91bmQgaW4gYGB1cmlgYAorICAgIGJ5IHNldHRpbmcgYGBob3N0
YGAgYW5kIGBgcG9ydGBgIGtleXdvcmQgYXJndW1lbnRzLiBUaGlzIG9ubHkgY2hhbmdlcyB0aGUK
KyAgICBkZXN0aW5hdGlvbiBvZiB0aGUgVENQIGNvbm5lY3Rpb24uIFRoZSBob3N0IG5hbWUgZnJv
bSBgYHVyaWBgIGlzIHN0aWxsCisgICAgdXNlZCBpbiB0aGUgVExTIGhhbmRzaGFrZSBmb3Igc2Vj
dXJlIGNvbm5lY3Rpb25zIGFuZCBpbiB0aGUgYGBIb3N0YGAgSFRUUAorICAgIGhlYWRlci4KKwor
ICAgIFRoZSBgYGNyZWF0ZV9wcm90b2NvbGBgIHBhcmFtZXRlciBhbGxvd3MgY3VzdG9taXppbmcg
dGhlCisgICAgOmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgdGhhdCBtYW5hZ2VzIHRoZSBjb25u
ZWN0aW9uLiBJdCBzaG91bGQgYmUgYQorICAgIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0
aGUgc2FtZSBhcmd1bWVudHMgYXMKKyAgICA6Y2xhc3M6YFdlYlNvY2tldENsaWVudFByb3RvY29s
YCBhbmQgcmV0dXJuaW5nIGFuIGluc3RhbmNlIG9mCisgICAgOmNsYXNzOmBXZWJTb2NrZXRDbGll
bnRQcm90b2NvbGAgb3IgYSBzdWJjbGFzcy4gSXQgZGVmYXVsdHMgdG8KKyAgICA6Y2xhc3M6YFdl
YlNvY2tldENsaWVudFByb3RvY29sYC4KKworICAgIFRoZSBiZWhhdmlvciBvZiBgYHBpbmdfaW50
ZXJ2YWxgYCwgYGBwaW5nX3RpbWVvdXRgYCwgYGBjbG9zZV90aW1lb3V0YGAsCisgICAgYGBtYXhf
c2l6ZWBgLCBgYG1heF9xdWV1ZWBgLCBgYHJlYWRfbGltaXRgYCwgYW5kIGBgd3JpdGVfbGltaXRg
YCBpcworICAgIGRlc2NyaWJlZCBpbiA6Y2xhc3M6YH53ZWJzb2NrZXRzLnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sYC4KKworICAgIDpmdW5jOmBjb25uZWN0YCBhbHNvIGFjY2VwdHMg
dGhlIGZvbGxvd2luZyBvcHRpb25hbCBhcmd1bWVudHM6CisKKyAgICAqIGBgY29tcHJlc3Npb25g
YCBpcyBhIHNob3J0Y3V0IHRvIGNvbmZpZ3VyZSBjb21wcmVzc2lvbiBleHRlbnNpb25zOworICAg
ICAgYnkgZGVmYXVsdCBpdCBlbmFibGVzIHRoZSAicGVybWVzc2FnZS1kZWZsYXRlIiBleHRlbnNp
b247IHNldCBpdCB0bworICAgICAgYGBOb25lYGAgdG8gZGlzYWJsZSBjb21wcmVzc2lvbgorICAg
ICogYGBvcmlnaW5gYCBzZXRzIHRoZSBPcmlnaW4gSFRUUCBoZWFkZXIKKyAgICAqIGBgZXh0ZW5z
aW9uc2BgIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpbiBvcmRlciBvZgorICAg
ICAgZGVjcmVhc2luZyBwcmVmZXJlbmNlCisgICAgKiBgYHN1YnByb3RvY29sc2BgIGlzIGEgbGlz
dCBvZiBzdXBwb3J0ZWQgc3VicHJvdG9jb2xzIGluIG9yZGVyIG9mCisgICAgICBkZWNyZWFzaW5n
IHByZWZlcmVuY2UKKyAgICAqIGBgZXh0cmFfaGVhZGVyc2BgIHNldHMgYWRkaXRpb25hbCBIVFRQ
IHJlcXVlc3QgaGVhZGVyczsgaXQgY2FuIGJlIGEKKyAgICAgIDpjbGFzczpgfndlYnNvY2tldHMu
aHR0cC5IZWFkZXJzYCBpbnN0YW5jZSwgYQorICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJj
Lk1hcHBpbmdgLCBvciBhbiBpdGVyYWJsZSBvZiBgYChuYW1lLCB2YWx1ZSlgYAorICAgICAgcGFp
cnMKKworICAgIDpyYWlzZXMgfndlYnNvY2tldHMudXJpLkludmFsaWRVUkk6IGlmIGBgdXJpYGAg
aXMgaW52YWxpZAorICAgIDpyYWlzZXMgfndlYnNvY2tldHMuaGFuZHNoYWtlLkludmFsaWRIYW5k
c2hha2U6IGlmIHRoZSBvcGVuaW5nIGhhbmRzaGFrZQorICAgICAgICBmYWlscworCisgICAgIiIi
CisKKyAgICBNQVhfUkVESVJFQ1RTX0FMTE9XRUQgPSAxMAorCisgICAgZGVmIF9faW5pdF9fKAor
ICAgICAgICBzZWxmLAorICAgICAgICB1cmk6IHN0ciwKKyAgICAgICAgKiwKKyAgICAgICAgcGF0
aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbDogT3B0aW9u
YWxbVHlwZVtXZWJTb2NrZXRDbGllbnRQcm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgcGluZ19p
bnRlcnZhbDogZmxvYXQgPSAyMCwKKyAgICAgICAgcGluZ190aW1lb3V0OiBmbG9hdCA9IDIwLAor
ICAgICAgICBjbG9zZV90aW1lb3V0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lLAorICAgICAgICBt
YXhfc2l6ZTogaW50ID0gMiAqKiAyMCwKKyAgICAgICAgbWF4X3F1ZXVlOiBpbnQgPSAyICoqIDUs
CisgICAgICAgIHJlYWRfbGltaXQ6IGludCA9IDIgKiogMTYsCisgICAgICAgIHdyaXRlX2xpbWl0
OiBpbnQgPSAyICoqIDE2LAorICAgICAgICBsb29wOiBPcHRpb25hbFthc3luY2lvLkFic3RyYWN0
RXZlbnRMb29wXSA9IE5vbmUsCisgICAgICAgIGxlZ2FjeV9yZWN2OiBib29sID0gRmFsc2UsCisg
ICAgICAgIGtsYXNzOiBPcHRpb25hbFtUeXBlW1dlYlNvY2tldENsaWVudFByb3RvY29sXV0gPSBO
b25lLAorICAgICAgICB0aW1lb3V0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lLAorICAgICAgICBj
b21wcmVzc2lvbjogT3B0aW9uYWxbc3RyXSA9ICJkZWZsYXRlIiwKKyAgICAgICAgb3JpZ2luOiBP
cHRpb25hbFtPcmlnaW5dID0gTm9uZSwKKyAgICAgICAgZXh0ZW5zaW9uczogT3B0aW9uYWxbU2Vx
dWVuY2VbQ2xpZW50RXh0ZW5zaW9uRmFjdG9yeV1dID0gTm9uZSwKKyAgICAgICAgc3VicHJvdG9j
b2xzOiBPcHRpb25hbFtTZXF1ZW5jZVtTdWJwcm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgZXh0
cmFfaGVhZGVyczogT3B0aW9uYWxbSGVhZGVyc0xpa2VdID0gTm9uZSwKKyAgICAgICAgKiprd2Fy
Z3M6IEFueSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgICMgQmFja3dhcmRzIGNvbXBhdGliaWxp
dHk6IGNsb3NlX3RpbWVvdXQgdXNlZCB0byBiZSBjYWxsZWQgdGltZW91dC4KKyAgICAgICAgaWYg
dGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgdGltZW91dCA9IDEwCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJyZW5hbWUgdGltZW91dCB0byBjbG9zZV90aW1l
b3V0IiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAjIElmIGJvdGggYXJlIHNwZWNpZmll
ZCwgdGltZW91dCBpcyBpZ25vcmVkLgorICAgICAgICBpZiBjbG9zZV90aW1lb3V0IGlzIE5vbmU6
CisgICAgICAgICAgICBjbG9zZV90aW1lb3V0ID0gdGltZW91dAorCisgICAgICAgICMgQmFja3dh
cmRzIGNvbXBhdGliaWxpdHk6IGNyZWF0ZV9wcm90b2NvbCB1c2VkIHRvIGJlIGNhbGxlZCBrbGFz
cy4KKyAgICAgICAgaWYga2xhc3MgaXMgTm9uZToKKyAgICAgICAgICAgIGtsYXNzID0gV2ViU29j
a2V0Q2xpZW50UHJvdG9jb2wKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndh
cm4oInJlbmFtZSBrbGFzcyB0byBjcmVhdGVfcHJvdG9jb2wiLCBEZXByZWNhdGlvbldhcm5pbmcp
CisgICAgICAgICMgSWYgYm90aCBhcmUgc3BlY2lmaWVkLCBrbGFzcyBpcyBpZ25vcmVkLgorICAg
ICAgICBpZiBjcmVhdGVfcHJvdG9jb2wgaXMgTm9uZToKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90
b2NvbCA9IGtsYXNzCisKKyAgICAgICAgaWYgbG9vcCBpcyBOb25lOgorICAgICAgICAgICAgbG9v
cCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorCisgICAgICAgIHdzdXJpID0gcGFyc2VfdXJp
KHVyaSkKKyAgICAgICAgaWYgd3N1cmkuc2VjdXJlOgorICAgICAgICAgICAga3dhcmdzLnNldGRl
ZmF1bHQoInNzbCIsIFRydWUpCisgICAgICAgIGVsaWYga3dhcmdzLmdldCgic3NsIikgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJj
b25uZWN0KCkgcmVjZWl2ZWQgYSBzc2wgYXJndW1lbnQgZm9yIGEgd3M6Ly8gVVJJLCAiCisgICAg
ICAgICAgICAgICAgInVzZSBhIHdzczovLyBVUkkgdG8gZW5hYmxlIFRMUyIKKyAgICAgICAgICAg
ICkKKworICAgICAgICBpZiBjb21wcmVzc2lvbiA9PSAiZGVmbGF0ZSI6CisgICAgICAgICAgICBp
ZiBleHRlbnNpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucyA9IFtdCisg
ICAgICAgICAgICBpZiBub3QgYW55KAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9mYWN0b3J5
Lm5hbWUgPT0gQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5Lm5hbWUKKyAgICAgICAgICAg
ICAgICBmb3IgZXh0ZW5zaW9uX2ZhY3RvcnkgaW4gZXh0ZW5zaW9ucworICAgICAgICAgICAgKToK
KyAgICAgICAgICAgICAgICBleHRlbnNpb25zID0gbGlzdChleHRlbnNpb25zKSArIFsKKyAgICAg
ICAgICAgICAgICAgICAgQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KGNsaWVudF9tYXhf
d2luZG93X2JpdHM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBdCisgICAgICAgIGVsaWYgY29tcHJl
c3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYidW5zdXBw
b3J0ZWQgY29tcHJlc3Npb246IHtjb21wcmVzc2lvbn0iKQorCisgICAgICAgIGZhY3RvcnkgPSBm
dW5jdG9vbHMucGFydGlhbCgKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbCwKKyAgICAgICAg
ICAgIHBpbmdfaW50ZXJ2YWw9cGluZ19pbnRlcnZhbCwKKyAgICAgICAgICAgIHBpbmdfdGltZW91
dD1waW5nX3RpbWVvdXQsCisgICAgICAgICAgICBjbG9zZV90aW1lb3V0PWNsb3NlX3RpbWVvdXQs
CisgICAgICAgICAgICBtYXhfc2l6ZT1tYXhfc2l6ZSwKKyAgICAgICAgICAgIG1heF9xdWV1ZT1t
YXhfcXVldWUsCisgICAgICAgICAgICByZWFkX2xpbWl0PXJlYWRfbGltaXQsCisgICAgICAgICAg
ICB3cml0ZV9saW1pdD13cml0ZV9saW1pdCwKKyAgICAgICAgICAgIGxvb3A9bG9vcCwKKyAgICAg
ICAgICAgIGhvc3Q9d3N1cmkuaG9zdCwKKyAgICAgICAgICAgIHBvcnQ9d3N1cmkucG9ydCwKKyAg
ICAgICAgICAgIHNlY3VyZT13c3VyaS5zZWN1cmUsCisgICAgICAgICAgICBsZWdhY3lfcmVjdj1s
ZWdhY3lfcmVjdiwKKyAgICAgICAgICAgIG9yaWdpbj1vcmlnaW4sCisgICAgICAgICAgICBleHRl
bnNpb25zPWV4dGVuc2lvbnMsCisgICAgICAgICAgICBzdWJwcm90b2NvbHM9c3VicHJvdG9jb2xz
LAorICAgICAgICAgICAgZXh0cmFfaGVhZGVycz1leHRyYV9oZWFkZXJzLAorICAgICAgICApCisK
KyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgaG9zdDogT3B0aW9uYWxbc3Ry
XQorICAgICAgICAgICAgcG9ydDogT3B0aW9uYWxbaW50XQorICAgICAgICAgICAgaWYga3dhcmdz
LmdldCgic29jayIpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaG9zdCwgcG9ydCA9IHdzdXJp
Lmhvc3QsIHdzdXJpLnBvcnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJ
ZiBzb2NrIGlzIGdpdmVuLCBob3N0IGFuZCBwb3J0IHNob3VsZG4ndCBiZSBzcGVjaWZpZWQuCisg
ICAgICAgICAgICAgICAgaG9zdCwgcG9ydCA9IE5vbmUsIE5vbmUKKyAgICAgICAgICAgICMgSWYg
aG9zdCBhbmQgcG9ydCBhcmUgZ2l2ZW4sIG92ZXJyaWRlIHZhbHVlcyBmcm9tIHRoZSBVUkkuCisg
ICAgICAgICAgICBob3N0ID0ga3dhcmdzLnBvcCgiaG9zdCIsIGhvc3QpCisgICAgICAgICAgICBw
b3J0ID0ga3dhcmdzLnBvcCgicG9ydCIsIHBvcnQpCisgICAgICAgICAgICBjcmVhdGVfY29ubmVj
dGlvbiA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIGxvb3AuY3JlYXRlX2Nv
bm5lY3Rpb24sIGZhY3RvcnksIGhvc3QsIHBvcnQsICoqa3dhcmdzCisgICAgICAgICAgICApCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBjcmVhdGVfY29ubmVjdGlvbiA9IGZ1bmN0b29scy5w
YXJ0aWFsKAorICAgICAgICAgICAgICAgIGxvb3AuY3JlYXRlX3VuaXhfY29ubmVjdGlvbiwgZmFj
dG9yeSwgcGF0aCwgKiprd2FyZ3MKKyAgICAgICAgICAgICkKKworICAgICAgICAjIFRoaXMgaXMg
YSBjb3JvdXRpbmUgZnVuY3Rpb24uCisgICAgICAgIHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uID0g
Y3JlYXRlX2Nvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5fd3N1cmkgPSB3c3VyaQorCisgICAgZGVm
IGhhbmRsZV9yZWRpcmVjdChzZWxmLCB1cmk6IHN0cikgLT4gTm9uZToKKyAgICAgICAgIyBVcGRh
dGUgdGhlIHN0YXRlIG9mIHRoaXMgaW5zdGFuY2UgdG8gY29ubmVjdCB0byBhIG5ldyBVUkkuCisg
ICAgICAgIG9sZF93c3VyaSA9IHNlbGYuX3dzdXJpCisgICAgICAgIG5ld193c3VyaSA9IHBhcnNl
X3VyaSh1cmkpCisKKyAgICAgICAgIyBGb3JiaWQgVExTIGRvd25ncmFkZS4KKyAgICAgICAgaWYg
b2xkX3dzdXJpLnNlY3VyZSBhbmQgbm90IG5ld193c3VyaS5zZWN1cmU6CisgICAgICAgICAgICBy
YWlzZSBTZWN1cml0eUVycm9yKCJyZWRpcmVjdCBmcm9tIFdTUyB0byBXUyIpCisKKyAgICAgICAg
c2FtZV9vcmlnaW4gPSAoCisgICAgICAgICAgICBvbGRfd3N1cmkuaG9zdCA9PSBuZXdfd3N1cmku
aG9zdCBhbmQgb2xkX3dzdXJpLnBvcnQgPT0gbmV3X3dzdXJpLnBvcnQKKyAgICAgICAgKQorCisg
ICAgICAgICMgUmV3cml0ZSB0aGUgaG9zdCBhbmQgcG9ydCBhcmd1bWVudHMgZm9yIGNyb3NzLW9y
aWdpbiByZWRpcmVjdHMuCisgICAgICAgICMgVGhpcyBwcmVzZXJ2ZXMgY29ubmVjdGlvbiBvdmVy
cmlkZXMgd2l0aCB0aGUgaG9zdCBhbmQgcG9ydAorICAgICAgICAjIGFyZ3VtZW50cyBpZiB0aGUg
cmVkaXJlY3QgcG9pbnRzIHRvIHRoZSBzYW1lIGhvc3QgYW5kIHBvcnQuCisgICAgICAgIGlmIG5v
dCBzYW1lX29yaWdpbjoKKyAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgaG9zdCBhbmQgcG9ydCBh
cmd1bWVudCBwYXNzZWQgdG8gdGhlIHByb3RvY29sIGZhY3RvcnkuCisgICAgICAgICAgICBmYWN0
b3J5ID0gc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24uYXJnc1swXQorICAgICAgICAgICAgZmFjdG9y
eSA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIGZhY3RvcnkuZnVuYywKKyAg
ICAgICAgICAgICAgICAqZmFjdG9yeS5hcmdzLAorICAgICAgICAgICAgICAgICoqZGljdChmYWN0
b3J5LmtleXdvcmRzLCBob3N0PW5ld193c3VyaS5ob3N0LCBwb3J0PW5ld193c3VyaS5wb3J0KSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgaG9zdCBhbmQgcG9ydCBh
cmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlX2Nvbm5lY3Rpb24uCisgICAgICAgICAgICBzZWxmLl9j
cmVhdGVfY29ubmVjdGlvbiA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNl
bGYuX2NyZWF0ZV9jb25uZWN0aW9uLmZ1bmMsCisgICAgICAgICAgICAgICAgKihmYWN0b3J5LCBu
ZXdfd3N1cmkuaG9zdCwgbmV3X3dzdXJpLnBvcnQpLAorICAgICAgICAgICAgICAgICoqc2VsZi5f
Y3JlYXRlX2Nvbm5lY3Rpb24ua2V5d29yZHMsCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBT
ZXQgdGhlIG5ldyBXZWJTb2NrZXQgVVJJLiBUaGlzIHN1ZmZpY2VzIGZvciBzYW1lLW9yaWdpbiBy
ZWRpcmVjdHMuCisgICAgICAgIHNlbGYuX3dzdXJpID0gbmV3X3dzdXJpCisKKyAgICAjIGFzeW5j
IHdpdGggY29ubmVjdCguLi4pCisKKyAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKSAtPiBX
ZWJTb2NrZXRDbGllbnRQcm90b2NvbDoKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYKKworICAg
IGFzeW5jIGRlZiBfX2FleGl0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIGV4Y190eXBlOiBP
cHRpb25hbFtUeXBlW0Jhc2VFeGNlcHRpb25dXSwKKyAgICAgICAgZXhjX3ZhbHVlOiBPcHRpb25h
bFtCYXNlRXhjZXB0aW9uXSwKKyAgICAgICAgdHJhY2ViYWNrOiBPcHRpb25hbFtUcmFjZWJhY2tU
eXBlXSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGF3YWl0IHNlbGYud3NfY2xpZW50LmNsb3Nl
KCkKKworICAgICMgYXdhaXQgY29ubmVjdCguLi4pCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYp
IC0+IEdlbmVyYXRvcltBbnksIE5vbmUsIFdlYlNvY2tldENsaWVudFByb3RvY29sXToKKyAgICAg
ICAgIyBDcmVhdGUgYSBzdWl0YWJsZSBpdGVyYXRvciBieSBjYWxsaW5nIF9fYXdhaXRfXyBvbiBh
IGNvcm91dGluZS4KKyAgICAgICAgcmV0dXJuIHNlbGYuX19hd2FpdF9pbXBsX18oKS5fX2F3YWl0
X18oKQorCisgICAgYXN5bmMgZGVmIF9fYXdhaXRfaW1wbF9fKHNlbGYpIC0+IFdlYlNvY2tldENs
aWVudFByb3RvY29sOgorICAgICAgICBmb3IgcmVkaXJlY3RzIGluIHJhbmdlKHNlbGYuTUFYX1JF
RElSRUNUU19BTExPV0VEKToKKyAgICAgICAgICAgIHRyYW5zcG9ydCwgcHJvdG9jb2wgPSBhd2Fp
dCBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbigpCisgICAgICAgICAgICAjIGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRob24vdHlwZXNoZWQvcHVsbC8yNzU2CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBj
YXN0KGFzeW5jaW8uVHJhbnNwb3J0LCB0cmFuc3BvcnQpCisgICAgICAgICAgICBwcm90b2NvbCA9
IGNhc3QoV2ViU29ja2V0Q2xpZW50UHJvdG9jb2wsIHByb3RvY29sKQorCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBwcm90
b2NvbC5oYW5kc2hha2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93c3VyaSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1wcm90b2NvbC5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBhdmFpbGFibGVfZXh0ZW5zaW9ucz1wcm90b2NvbC5hdmFpbGFibGVfZXh0
ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM9
cHJvdG9jb2wuYXZhaWxhYmxlX3N1YnByb3RvY29scywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4dHJhX2hlYWRlcnM9cHJvdG9jb2wuZXh0cmFfaGVhZGVycywKKyAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAg
ICAgIHByb3RvY29sLmZhaWxfY29ubmVjdGlvbigpCisgICAgICAgICAgICAgICAgICAgIGF3YWl0
IHByb3RvY29sLndhaXRfY2xvc2VkKCkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLndzX2NsaWVudCA9IHBy
b3RvY29sCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm90b2NvbAorICAgICAgICAgICAg
ZXhjZXB0IFJlZGlyZWN0SGFuZHNoYWtlIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBzZWxmLmhh
bmRsZV9yZWRpcmVjdChleGMudXJpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2Ug
U2VjdXJpdHlFcnJvcigidG9vIG1hbnkgcmVkaXJlY3RzIikKKworICAgICMgeWllbGQgZnJvbSBj
b25uZWN0KC4uLikKKworICAgIF9faXRlcl9fID0gX19hd2FpdF9fCisKKworY29ubmVjdCA9IENv
bm5lY3QKKworCitkZWYgdW5peF9jb25uZWN0KHBhdGg6IHN0ciwgdXJpOiBzdHIgPSAid3M6Ly9s
b2NhbGhvc3QvIiwgKiprd2FyZ3M6IEFueSkgLT4gQ29ubmVjdDoKKyAgICAiIiIKKyAgICBTaW1p
bGFyIHRvIDpmdW5jOmBjb25uZWN0YCwgYnV0IGZvciBjb25uZWN0aW5nIHRvIGEgVW5peCBzb2Nr
ZXQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBldmVudCBsb29wJ3MKKyAgICA6bWV0
aDpgfmFzeW5jaW8ubG9vcC5jcmVhdGVfdW5peF9jb25uZWN0aW9uYCBtZXRob2QuCisKKyAgICBJ
dCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBVbml4LgorCisgICAgSXQncyBtYWlubHkgdXNlZnVsIGZv
ciBkZWJ1Z2dpbmcgc2VydmVycyBsaXN0ZW5pbmcgb24gVW5peCBzb2NrZXRzLgorCisgICAgOnBh
cmFtIHBhdGg6IGZpbGUgc3lzdGVtIHBhdGggdG8gdGhlIFVuaXggc29ja2V0CisgICAgOnBhcmFt
IHVyaTogV2ViU29ja2V0IFVSSQorCisgICAgIiIiCisgICAgcmV0dXJuIGNvbm5lY3QodXJpPXVy
aSwgcGF0aD1wYXRoLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMv
d2Vic29ja2V0cy9leGNlcHRpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRz
L2V4Y2VwdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45
ODczYTE3MTcwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNv
Y2tldHMvZXhjZXB0aW9ucy5weQpAQCAtMCwwICsxLDM2NiBAQAorIiIiCis6bW9kOmB3ZWJzb2Nr
ZXRzLmV4Y2VwdGlvbnNgIGRlZmluZXMgdGhlIGZvbGxvd2luZyBleGNlcHRpb24gaGllcmFyY2h5
OgorCisqIDpleGM6YFdlYlNvY2tldEV4Y2VwdGlvbmAKKyAgICAqIDpleGM6YENvbm5lY3Rpb25D
bG9zZWRgCisgICAgICAgICogOmV4YzpgQ29ubmVjdGlvbkNsb3NlZEVycm9yYAorICAgICAgICAq
IDpleGM6YENvbm5lY3Rpb25DbG9zZWRPS2AKKyAgICAqIDpleGM6YEludmFsaWRIYW5kc2hha2Vg
CisgICAgICAgICogOmV4YzpgU2VjdXJpdHlFcnJvcmAKKyAgICAgICAgKiA6ZXhjOmBJbnZhbGlk
TWVzc2FnZWAKKyAgICAgICAgKiA6ZXhjOmBJbnZhbGlkSGVhZGVyYAorICAgICAgICAgICAgKiA6
ZXhjOmBJbnZhbGlkSGVhZGVyRm9ybWF0YAorICAgICAgICAgICAgKiA6ZXhjOmBJbnZhbGlkSGVh
ZGVyVmFsdWVgCisgICAgICAgICAgICAqIDpleGM6YEludmFsaWRPcmlnaW5gCisgICAgICAgICAg
ICAqIDpleGM6YEludmFsaWRVcGdyYWRlYAorICAgICAgICAqIDpleGM6YEludmFsaWRTdGF0dXND
b2RlYAorICAgICAgICAqIDpleGM6YE5lZ290aWF0aW9uRXJyb3JgCisgICAgICAgICAgICAqIDpl
eGM6YER1cGxpY2F0ZVBhcmFtZXRlcmAKKyAgICAgICAgICAgICogOmV4YzpgSW52YWxpZFBhcmFt
ZXRlck5hbWVgCisgICAgICAgICAgICAqIDpleGM6YEludmFsaWRQYXJhbWV0ZXJWYWx1ZWAKKyAg
ICAgICAgKiA6ZXhjOmBBYm9ydEhhbmRzaGFrZWAKKyAgICAgICAgKiA6ZXhjOmBSZWRpcmVjdEhh
bmRzaGFrZWAKKyAgICAqIDpleGM6YEludmFsaWRTdGF0ZWAKKyAgICAqIDpleGM6YEludmFsaWRV
UklgCisgICAgKiA6ZXhjOmBQYXlsb2FkVG9vQmlnYAorICAgICogOmV4YzpgUHJvdG9jb2xFcnJv
cmAKKworIiIiCisKK2ltcG9ydCBodHRwCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKwor
ZnJvbSAuaHR0cCBpbXBvcnQgSGVhZGVycywgSGVhZGVyc0xpa2UKKworCitfX2FsbF9fID0gWwor
ICAgICJXZWJTb2NrZXRFeGNlcHRpb24iLAorICAgICJDb25uZWN0aW9uQ2xvc2VkIiwKKyAgICAi
Q29ubmVjdGlvbkNsb3NlZEVycm9yIiwKKyAgICAiQ29ubmVjdGlvbkNsb3NlZE9LIiwKKyAgICAi
SW52YWxpZEhhbmRzaGFrZSIsCisgICAgIlNlY3VyaXR5RXJyb3IiLAorICAgICJJbnZhbGlkTWVz
c2FnZSIsCisgICAgIkludmFsaWRIZWFkZXIiLAorICAgICJJbnZhbGlkSGVhZGVyRm9ybWF0IiwK
KyAgICAiSW52YWxpZEhlYWRlclZhbHVlIiwKKyAgICAiSW52YWxpZE9yaWdpbiIsCisgICAgIklu
dmFsaWRVcGdyYWRlIiwKKyAgICAiSW52YWxpZFN0YXR1c0NvZGUiLAorICAgICJOZWdvdGlhdGlv
bkVycm9yIiwKKyAgICAiRHVwbGljYXRlUGFyYW1ldGVyIiwKKyAgICAiSW52YWxpZFBhcmFtZXRl
ck5hbWUiLAorICAgICJJbnZhbGlkUGFyYW1ldGVyVmFsdWUiLAorICAgICJBYm9ydEhhbmRzaGFr
ZSIsCisgICAgIlJlZGlyZWN0SGFuZHNoYWtlIiwKKyAgICAiSW52YWxpZFN0YXRlIiwKKyAgICAi
SW52YWxpZFVSSSIsCisgICAgIlBheWxvYWRUb29CaWciLAorICAgICJQcm90b2NvbEVycm9yIiwK
KyAgICAiV2ViU29ja2V0UHJvdG9jb2xFcnJvciIsCitdCisKKworY2xhc3MgV2ViU29ja2V0RXhj
ZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgYWxsIGV4Y2Vw
dGlvbnMgZGVmaW5lZCBieSA6bW9kOmB3ZWJzb2NrZXRzYC4KKworICAgICIiIgorCisKK0NMT1NF
X0NPREVTID0geworICAgIDEwMDA6ICJPSyIsCisgICAgMTAwMTogImdvaW5nIGF3YXkiLAorICAg
IDEwMDI6ICJwcm90b2NvbCBlcnJvciIsCisgICAgMTAwMzogInVuc3VwcG9ydGVkIHR5cGUiLAor
ICAgICMgMTAwNCBpcyByZXNlcnZlZAorICAgIDEwMDU6ICJubyBzdGF0dXMgY29kZSBbaW50ZXJu
YWxdIiwKKyAgICAxMDA2OiAiY29ubmVjdGlvbiBjbG9zZWQgYWJub3JtYWxseSBbaW50ZXJuYWxd
IiwKKyAgICAxMDA3OiAiaW52YWxpZCBkYXRhIiwKKyAgICAxMDA4OiAicG9saWN5IHZpb2xhdGlv
biIsCisgICAgMTAwOTogIm1lc3NhZ2UgdG9vIGJpZyIsCisgICAgMTAxMDogImV4dGVuc2lvbiBy
ZXF1aXJlZCIsCisgICAgMTAxMTogInVuZXhwZWN0ZWQgZXJyb3IiLAorICAgIDEwMTU6ICJUTFMg
ZmFpbHVyZSBbaW50ZXJuYWxdIiwKK30KKworCitkZWYgZm9ybWF0X2Nsb3NlKGNvZGU6IGludCwg
cmVhc29uOiBzdHIpIC0+IHN0cjoKKyAgICAiIiIKKyAgICBEaXNwbGF5IGEgaHVtYW4tcmVhZGFi
bGUgdmVyc2lvbiBvZiB0aGUgY2xvc2UgY29kZSBhbmQgcmVhc29uLgorCisgICAgIiIiCisgICAg
aWYgMzAwMCA8PSBjb2RlIDwgNDAwMDoKKyAgICAgICAgZXhwbGFuYXRpb24gPSAicmVnaXN0ZXJl
ZCIKKyAgICBlbGlmIDQwMDAgPD0gY29kZSA8IDUwMDA6CisgICAgICAgIGV4cGxhbmF0aW9uID0g
InByaXZhdGUgdXNlIgorICAgIGVsc2U6CisgICAgICAgIGV4cGxhbmF0aW9uID0gQ0xPU0VfQ09E
RVMuZ2V0KGNvZGUsICJ1bmtub3duIikKKyAgICByZXN1bHQgPSBmImNvZGUgPSB7Y29kZX0gKHtl
eHBsYW5hdGlvbn0pLCAiCisKKyAgICBpZiByZWFzb246CisgICAgICAgIHJlc3VsdCArPSBmInJl
YXNvbiA9IHtyZWFzb259IgorICAgIGVsc2U6CisgICAgICAgIHJlc3VsdCArPSAibm8gcmVhc29u
IgorCisgICAgcmV0dXJuIHJlc3VsdAorCisKK2NsYXNzIENvbm5lY3Rpb25DbG9zZWQoV2ViU29j
a2V0RXhjZXB0aW9uKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiB0cnlpbmcgdG8gaW50ZXJh
Y3Qgd2l0aCBhIGNsb3NlZCBjb25uZWN0aW9uLgorCisgICAgUHJvdmlkZXMgdGhlIGNvbm5lY3Rp
b24gY2xvc2UgY29kZSBhbmQgcmVhc29uIGluIGl0cyBgYGNvZGVgYCBhbmQKKyAgICBgYHJlYXNv
bmBgIGF0dHJpYnV0ZXMgcmVzcGVjdGl2ZWx5LgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgY29kZTogaW50LCByZWFzb246IHN0cikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5j
b2RlID0gY29kZQorICAgICAgICBzZWxmLnJlYXNvbiA9IHJlYXNvbgorICAgICAgICBzdXBlcigp
Ll9faW5pdF9fKGZvcm1hdF9jbG9zZShjb2RlLCByZWFzb24pKQorCisKK2NsYXNzIENvbm5lY3Rp
b25DbG9zZWRFcnJvcihDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAiIiIKKyAgICBMaWtlIDpleGM6
YENvbm5lY3Rpb25DbG9zZWRgLCB3aGVuIHRoZSBjb25uZWN0aW9uIHRlcm1pbmF0ZWQgd2l0aCBh
biBlcnJvci4KKworICAgIFRoaXMgbWVhbnMgdGhlIGNsb3NlIGNvZGUgaXMgZGlmZmVyZW50IGZy
b20gMTAwMCAoT0spIGFuZCAxMDAxIChnb2luZyBhd2F5KS4KKworICAgICIiIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNvZGU6IGludCwgcmVhc29uOiBzdHIpIC0+IE5vbmU6CisgICAgICAg
IGFzc2VydCBjb2RlICE9IDEwMDAgYW5kIGNvZGUgIT0gMTAwMQorICAgICAgICBzdXBlcigpLl9f
aW5pdF9fKGNvZGUsIHJlYXNvbikKKworCitjbGFzcyBDb25uZWN0aW9uQ2xvc2VkT0soQ29ubmVj
dGlvbkNsb3NlZCk6CisgICAgIiIiCisgICAgTGlrZSA6ZXhjOmBDb25uZWN0aW9uQ2xvc2VkYCwg
d2hlbiB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGVkIHByb3Blcmx5LgorCisgICAgVGhpcyBtZWFu
cyB0aGUgY2xvc2UgY29kZSBpcyAxMDAwIChPSykgb3IgMTAwMSAoZ29pbmcgYXdheSkuCisKKyAg
ICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlOiBpbnQsIHJlYXNvbjogc3RyKSAt
PiBOb25lOgorICAgICAgICBhc3NlcnQgY29kZSA9PSAxMDAwIG9yIGNvZGUgPT0gMTAwMQorICAg
ICAgICBzdXBlcigpLl9faW5pdF9fKGNvZGUsIHJlYXNvbikKKworCitjbGFzcyBJbnZhbGlkSGFu
ZHNoYWtlKFdlYlNvY2tldEV4Y2VwdGlvbik6CisgICAgIiIiCisgICAgUmFpc2VkIGR1cmluZyB0
aGUgaGFuZHNoYWtlIHdoZW4gdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGZhaWxzLgorCisgICAg
IiIiCisKKworY2xhc3MgU2VjdXJpdHlFcnJvcihJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAiIiIK
KyAgICBSYWlzZWQgd2hlbiBhIGhhbmRzaGFrZSByZXF1ZXN0IG9yIHJlc3BvbnNlIGJyZWFrcyBh
IHNlY3VyaXR5IHJ1bGUuCisKKyAgICBTZWN1cml0eSBsaW1pdHMgYXJlIGhhcmQgY29kZWQuCisK
KyAgICAiIiIKKworCitjbGFzcyBJbnZhbGlkTWVzc2FnZShJbnZhbGlkSGFuZHNoYWtlKToKKyAg
ICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIGhhbmRzaGFrZSByZXF1ZXN0IG9yIHJlc3BvbnNlIGlz
IG1hbGZvcm1lZC4KKworICAgICIiIgorCisKK2NsYXNzIEludmFsaWRIZWFkZXIoSW52YWxpZEhh
bmRzaGFrZSk6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gYSBIVFRQIGhlYWRlciBkb2Vzbid0
IGhhdmUgYSB2YWxpZCBmb3JtYXQgb3IgdmFsdWUuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lOiBzdHIsIHZhbHVlOiBPcHRpb25hbFtzdHJdID0gTm9uZSkgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUK
KyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBmIm1pc3Np
bmcge25hbWV9IGhlYWRlciIKKyAgICAgICAgZWxpZiB2YWx1ZSA9PSAiIjoKKyAgICAgICAgICAg
IG1lc3NhZ2UgPSBmImVtcHR5IHtuYW1lfSBoZWFkZXIiCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBtZXNzYWdlID0gZiJpbnZhbGlkIHtuYW1lfSBoZWFkZXI6IHt2YWx1ZX0iCisgICAgICAg
IHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworCitjbGFzcyBJbnZhbGlkSGVhZGVyRm9ybWF0
KEludmFsaWRIZWFkZXIpOgorICAgICIiIgorICAgIFJhaXNlZCB3aGVuIGEgSFRUUCBoZWFkZXIg
Y2Fubm90IGJlIHBhcnNlZC4KKworICAgIFRoZSBmb3JtYXQgb2YgdGhlIGhlYWRlciBkb2Vzbid0
IG1hdGNoIHRoZSBncmFtbWFyIGZvciB0aGF0IGhlYWRlci4KKworICAgICIiIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgZXJyb3I6IHN0ciwgaGVhZGVyOiBzdHIsIHBvczog
aW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIGVycm9yID0g
ZiJ7ZXJyb3J9IGF0IHtwb3N9IGluIHtoZWFkZXJ9IgorICAgICAgICBzdXBlcigpLl9faW5pdF9f
KG5hbWUsIGVycm9yKQorCisKK2NsYXNzIEludmFsaWRIZWFkZXJWYWx1ZShJbnZhbGlkSGVhZGVy
KToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIEhUVFAgaGVhZGVyIGhhcyBhIHdyb25nIHZh
bHVlLgorCisgICAgVGhlIGZvcm1hdCBvZiB0aGUgaGVhZGVyIGlzIGNvcnJlY3QgYnV0IGEgdmFs
dWUgaXNuJ3QgYWNjZXB0YWJsZS4KKworICAgICIiIgorCisKK2NsYXNzIEludmFsaWRPcmlnaW4o
SW52YWxpZEhlYWRlcik6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gdGhlIE9yaWdpbiBoZWFk
ZXIgaW4gYSByZXF1ZXN0IGlzbid0IGFsbG93ZWQuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBvcmlnaW46IE9wdGlvbmFsW3N0cl0pIC0+IE5vbmU6CisgICAgICAgIHN1cGVy
KCkuX19pbml0X18oIk9yaWdpbiIsIG9yaWdpbikKKworCitjbGFzcyBJbnZhbGlkVXBncmFkZShJ
bnZhbGlkSGVhZGVyKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiB0aGUgVXBncmFkZSBvciBD
b25uZWN0aW9uIGhlYWRlciBpc24ndCBjb3JyZWN0LgorCisgICAgIiIiCisKKworY2xhc3MgSW52
YWxpZFN0YXR1c0NvZGUoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgIiIiCisgICAgUmFpc2VkIHdo
ZW4gYSBoYW5kc2hha2UgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgaXMgaW52YWxpZC4KKworICAgIFRo
ZSBpbnRlZ2VyIHN0YXR1cyBjb2RlIGlzIGF2YWlsYWJsZSBpbiB0aGUgYGBzdGF0dXNfY29kZWBg
IGF0dHJpYnV0ZS4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXR1c19j
b2RlOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuc3RhdHVzX2NvZGUgPSBzdGF0dXNfY29k
ZQorICAgICAgICBtZXNzYWdlID0gZiJzZXJ2ZXIgcmVqZWN0ZWQgV2ViU29ja2V0IGNvbm5lY3Rp
b246IEhUVFAge3N0YXR1c19jb2RlfSIKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdl
KQorCisKK2NsYXNzIE5lZ290aWF0aW9uRXJyb3IoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgIiIi
CisgICAgUmFpc2VkIHdoZW4gbmVnb3RpYXRpbmcgYW4gZXh0ZW5zaW9uIGZhaWxzLgorCisgICAg
IiIiCisKKworY2xhc3MgRHVwbGljYXRlUGFyYW1ldGVyKE5lZ290aWF0aW9uRXJyb3IpOgorICAg
ICIiIgorICAgIFJhaXNlZCB3aGVuIGEgcGFyYW1ldGVyIG5hbWUgaXMgcmVwZWF0ZWQgaW4gYW4g
ZXh0ZW5zaW9uIGhlYWRlci4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWU6IHN0cikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBtZXNz
YWdlID0gZiJkdXBsaWNhdGUgcGFyYW1ldGVyOiB7bmFtZX0iCisgICAgICAgIHN1cGVyKCkuX19p
bml0X18obWVzc2FnZSkKKworCitjbGFzcyBJbnZhbGlkUGFyYW1ldGVyTmFtZShOZWdvdGlhdGlv
bkVycm9yKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGV4dGVuc2lvbiBoZWFkZXIgaXMgaW52YWxpZC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWU6IHN0cikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQor
ICAgICAgICBtZXNzYWdlID0gZiJpbnZhbGlkIHBhcmFtZXRlciBuYW1lOiB7bmFtZX0iCisgICAg
ICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworCitjbGFzcyBJbnZhbGlkUGFyYW1ldGVy
VmFsdWUoTmVnb3RpYXRpb25FcnJvcik6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gYSBwYXJh
bWV0ZXIgdmFsdWUgaW4gYW4gZXh0ZW5zaW9uIGhlYWRlciBpcyBpbnZhbGlkLgorCisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTogc3RyLCB2YWx1ZTogT3B0aW9uYWxbc3Ry
XSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnZhbHVl
ID0gdmFsdWUKKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIG1lc3NhZ2Ug
PSBmIm1pc3NpbmcgdmFsdWUgZm9yIHBhcmFtZXRlciB7bmFtZX0iCisgICAgICAgIGVsaWYgdmFs
dWUgPT0gIiI6CisgICAgICAgICAgICBtZXNzYWdlID0gZiJlbXB0eSB2YWx1ZSBmb3IgcGFyYW1l
dGVyIHtuYW1lfSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBmImludmFs
aWQgdmFsdWUgZm9yIHBhcmFtZXRlciB7bmFtZX06IHt2YWx1ZX0iCisgICAgICAgIHN1cGVyKCku
X19pbml0X18obWVzc2FnZSkKKworCitjbGFzcyBBYm9ydEhhbmRzaGFrZShJbnZhbGlkSGFuZHNo
YWtlKToKKyAgICAiIiIKKyAgICBSYWlzZWQgdG8gYWJvcnQgdGhlIGhhbmRzaGFrZSBvbiBwdXJw
b3NlIGFuZCByZXR1cm4gYSBIVFRQIHJlc3BvbnNlLgorCisgICAgVGhpcyBleGNlcHRpb24gaXMg
YW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgorCisgICAgVGhlIHB1YmxpYyBBUEkgaXMgOm1ldGg6
YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wucHJvY2Vzc19yZXF1ZXN0YC4KKworICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBzdGF0dXM6IGh0dHAuSFRU
UFN0YXR1cywgaGVhZGVyczogSGVhZGVyc0xpa2UsIGJvZHk6IGJ5dGVzID0gYiIiCisgICAgKSAt
PiBOb25lOgorICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cworICAgICAgICBzZWxmLmhlYWRl
cnMgPSBIZWFkZXJzKGhlYWRlcnMpCisgICAgICAgIHNlbGYuYm9keSA9IGJvZHkKKyAgICAgICAg
bWVzc2FnZSA9IGYiSFRUUCB7c3RhdHVzfSwge2xlbihzZWxmLmhlYWRlcnMpfSBoZWFkZXJzLCB7
bGVuKGJvZHkpfSBieXRlcyIKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlKQorCisK
K2NsYXNzIFJlZGlyZWN0SGFuZHNoYWtlKEludmFsaWRIYW5kc2hha2UpOgorICAgICIiIgorICAg
IFJhaXNlZCB3aGVuIGEgaGFuZHNoYWtlIGdldHMgcmVkaXJlY3RlZC4KKworICAgIFRoaXMgZXhj
ZXB0aW9uIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KKworICAgICIiIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHVyaTogc3RyKSAtPiBOb25lOgorICAgICAgICBzZWxmLnVyaSA9IHVy
aQorCisgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gZiJyZWRp
cmVjdCB0byB7c2VsZi51cml9IgorCisKK2NsYXNzIEludmFsaWRTdGF0ZShXZWJTb2NrZXRFeGNl
cHRpb24sIEFzc2VydGlvbkVycm9yKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhbiBvcGVy
YXRpb24gaXMgZm9yYmlkZGVuIGluIHRoZSBjdXJyZW50IHN0YXRlLgorCisgICAgVGhpcyBleGNl
cHRpb24gaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgorCisgICAgSXQgc2hvdWxkIG5ldmVy
IGJlIHJhaXNlZCBpbiBub3JtYWwgY2lyY3Vtc3RhbmNlcy4KKworICAgICIiIgorCisKK2NsYXNz
IEludmFsaWRVUkkoV2ViU29ja2V0RXhjZXB0aW9uKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hl
biBjb25uZWN0aW5nIHRvIGFuIFVSSSB0aGF0IGlzbid0IGEgdmFsaWQgV2ViU29ja2V0IFVSSS4K
KworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaTogc3RyKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBtZXNzYWdlID0gInt9IGlzbid0IGEgdmFs
aWQgVVJJIi5mb3JtYXQodXJpKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1lc3NhZ2UpCisK
KworY2xhc3MgUGF5bG9hZFRvb0JpZyhXZWJTb2NrZXRFeGNlcHRpb24pOgorICAgICIiIgorICAg
IFJhaXNlZCB3aGVuIHJlY2VpdmluZyBhIGZyYW1lIHdpdGggYSBwYXlsb2FkIGV4Y2VlZGluZyB0
aGUgbWF4aW11bSBzaXplLgorCisgICAgIiIiCisKKworY2xhc3MgUHJvdG9jb2xFcnJvcihXZWJT
b2NrZXRFeGNlcHRpb24pOgorICAgICIiIgorICAgIFJhaXNlZCB3aGVuIHRoZSBvdGhlciBzaWRl
IGJyZWFrcyB0aGUgcHJvdG9jb2wuCisKKyAgICAiIiIKKworCitXZWJTb2NrZXRQcm90b2NvbEVy
cm9yID0gUHJvdG9jb2xFcnJvciAgIyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9leHRlbnNpb25zL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2V4dGVuc2lvbnMvX19pbml0X18u
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9leHRlbnNpb25zL2Jh
c2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9iYXNlLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWE1MmE3YWRiZjQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2V4dGVuc2lv
bnMvYmFzZS5weQpAQCAtMCwwICsxLDExOSBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLmV4dGVu
c2lvbnMuYmFzZWAgZGVmaW5lcyBhYnN0cmFjdCBjbGFzc2VzIGZvciBpbXBsZW1lbnRpbmcKK2V4
dGVuc2lvbnMuCisKK1NlZSBgc2VjdGlvbiA5IG9mIFJGQyA2NDU1YF8uCisKKy4uIF9zZWN0aW9u
IDkgb2YgUkZDIDY0NTU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlv
bi05CisKKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNl
LCBUdXBsZQorCitmcm9tIC4uZnJhbWluZyBpbXBvcnQgRnJhbWUKK2Zyb20gLi50eXBpbmcgaW1w
b3J0IEV4dGVuc2lvbk5hbWUsIEV4dGVuc2lvblBhcmFtZXRlcgorCisKK19fYWxsX18gPSBbIkV4
dGVuc2lvbiIsICJDbGllbnRFeHRlbnNpb25GYWN0b3J5IiwgIlNlcnZlckV4dGVuc2lvbkZhY3Rv
cnkiXQorCisKK2NsYXNzIEV4dGVuc2lvbjoKKyAgICAiIiIKKyAgICBBYnN0cmFjdCBjbGFzcyBm
b3IgZXh0ZW5zaW9ucy4KKworICAgICIiIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUo
c2VsZikgLT4gRXh0ZW5zaW9uTmFtZToKKyAgICAgICAgIiIiCisgICAgICAgIEV4dGVuc2lvbiBp
ZGVudGlmaWVyLgorCisgICAgICAgICIiIgorCisgICAgZGVmIGRlY29kZShzZWxmLCBmcmFtZTog
RnJhbWUsICosIG1heF9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZSkgLT4gRnJhbWU6CisgICAg
ICAgICIiIgorICAgICAgICBEZWNvZGUgYW4gaW5jb21pbmcgZnJhbWUuCisKKyAgICAgICAgOnBh
cmFtIGZyYW1lOiBpbmNvbWluZyBmcmFtZQorICAgICAgICA6cGFyYW0gbWF4X3NpemU6IG1heGlt
dW0gcGF5bG9hZCBzaXplIGluIGJ5dGVzCisKKyAgICAgICAgIiIiCisKKyAgICBkZWYgZW5jb2Rl
KHNlbGYsIGZyYW1lOiBGcmFtZSkgLT4gRnJhbWU6CisgICAgICAgICIiIgorICAgICAgICBFbmNv
ZGUgYW4gb3V0Z29pbmcgZnJhbWUuCisKKyAgICAgICAgOnBhcmFtIGZyYW1lOiBvdXRnb2luZyBm
cmFtZQorCisgICAgICAgICIiIgorCisKK2NsYXNzIENsaWVudEV4dGVuc2lvbkZhY3Rvcnk6Cisg
ICAgIiIiCisgICAgQWJzdHJhY3QgY2xhc3MgZm9yIGNsaWVudC1zaWRlIGV4dGVuc2lvbiBmYWN0
b3JpZXMuCisKKyAgICAiIiIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpIC0+
IEV4dGVuc2lvbk5hbWU6CisgICAgICAgICIiIgorICAgICAgICBFeHRlbnNpb24gaWRlbnRpZmll
ci4KKworICAgICAgICAiIiIKKworICAgIGRlZiBnZXRfcmVxdWVzdF9wYXJhbXMoc2VsZikgLT4g
TGlzdFtFeHRlbnNpb25QYXJhbWV0ZXJdOgorICAgICAgICAiIiIKKyAgICAgICAgQnVpbGQgcmVx
dWVzdCBwYXJhbWV0ZXJzLgorCisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgYGAobmFtZSwgdmFs
dWUpYGAgcGFpcnMuCisKKyAgICAgICAgIiIiCisKKyAgICBkZWYgcHJvY2Vzc19yZXNwb25zZV9w
YXJhbXMoCisgICAgICAgIHNlbGYsCisgICAgICAgIHBhcmFtczogU2VxdWVuY2VbRXh0ZW5zaW9u
UGFyYW1ldGVyXSwKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9uczogU2VxdWVuY2VbRXh0ZW5z
aW9uXSwKKyAgICApIC0+IEV4dGVuc2lvbjoKKyAgICAgICAgIiIiCisgICAgICAgIFByb2Nlc3Mg
cmVzcG9uc2UgcGFyYW1ldGVycyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAg
OnBhcmFtIHBhcmFtczogbGlzdCBvZiBgYChuYW1lLCB2YWx1ZSlgYCBwYWlycy4KKyAgICAgICAg
OnBhcmFtIGFjY2VwdGVkX2V4dGVuc2lvbnM6IGxpc3Qgb2YgcHJldmlvdXNseSBhY2NlcHRlZCBl
eHRlbnNpb25zLgorICAgICAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuTmVnb3Rp
YXRpb25FcnJvcjogaWYgcGFyYW1ldGVycyBhcmVuJ3QKKyAgICAgICAgICAgIGFjY2VwdGFibGUK
KworICAgICAgICAiIiIKKworCitjbGFzcyBTZXJ2ZXJFeHRlbnNpb25GYWN0b3J5OgorICAgICIi
IgorICAgIEFic3RyYWN0IGNsYXNzIGZvciBzZXJ2ZXItc2lkZSBleHRlbnNpb24gZmFjdG9yaWVz
LgorCisgICAgIiIiCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKSAtPiBFeHRl
bnNpb25OYW1lOgorICAgICAgICAiIiIKKyAgICAgICAgRXh0ZW5zaW9uIGlkZW50aWZpZXIuCisK
KyAgICAgICAgIiIiCisKKyAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0X3BhcmFtcygKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgcGFyYW1zOiBTZXF1ZW5jZVtFeHRlbnNpb25QYXJhbWV0ZXJdLAorICAg
ICAgICBhY2NlcHRlZF9leHRlbnNpb25zOiBTZXF1ZW5jZVtFeHRlbnNpb25dLAorICAgICkgLT4g
VHVwbGVbTGlzdFtFeHRlbnNpb25QYXJhbWV0ZXJdLCBFeHRlbnNpb25dOgorICAgICAgICAiIiIK
KyAgICAgICAgUHJvY2VzcyByZXF1ZXN0IHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSB0aGUgY2xp
ZW50LgorCisgICAgICAgIFRvIGFjY2VwdCB0aGUgb2ZmZXIsIHJldHVybiBhIDItdXBsZSBjb250
YWluaW5nOgorCisgICAgICAgIC0gcmVzcG9uc2UgcGFyYW1ldGVyczogYSBsaXN0IG9mIGBgKG5h
bWUsIHZhbHVlKWBgIHBhaXJzCisgICAgICAgIC0gYW4gZXh0ZW5zaW9uOiBhbiBpbnN0YW5jZSBv
ZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgRXh0ZW5zaW9uYAorCisgICAgICAgIDpwYXJhbSBwYXJh
bXM6IGxpc3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAgcGFpcnMuCisgICAgICAgIDpwYXJhbSBhY2Nl
cHRlZF9leHRlbnNpb25zOiBsaXN0IG9mIHByZXZpb3VzbHkgYWNjZXB0ZWQgZXh0ZW5zaW9ucy4K
KyAgICAgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLk5lZ290aWF0aW9uRXJyb3I6
IHRvIHJlamVjdCB0aGUgb2ZmZXIsCisgICAgICAgICAgICBpZiBwYXJhbWV0ZXJzIGFyZW4ndCBh
Y2NlcHRhYmxlCisKKyAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3Jj
L3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvc3JjL3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzhkOWVkYWJhNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9w
ZXJtZXNzYWdlX2RlZmxhdGUucHkKQEAgLTAsMCArMSw1ODggQEAKKyIiIgorOm1vZDpgd2Vic29j
a2V0cy5leHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0ZWAgaW1wbGVtZW50cyB0aGUgQ29tcHJl
c3Npb24KK0V4dGVuc2lvbnMgZm9yIFdlYlNvY2tldCBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgNzY5
MmAuCisKKyIiIgorCitpbXBvcnQgemxpYgorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGljdCwg
TGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBUdXBsZSwgVW5pb24KKworZnJvbSAuLmV4Y2VwdGlv
bnMgaW1wb3J0ICgKKyAgICBEdXBsaWNhdGVQYXJhbWV0ZXIsCisgICAgSW52YWxpZFBhcmFtZXRl
ck5hbWUsCisgICAgSW52YWxpZFBhcmFtZXRlclZhbHVlLAorICAgIE5lZ290aWF0aW9uRXJyb3Is
CisgICAgUGF5bG9hZFRvb0JpZywKKykKK2Zyb20gLi5mcmFtaW5nIGltcG9ydCBDVFJMX09QQ09E
RVMsIE9QX0NPTlQsIEZyYW1lCitmcm9tIC4udHlwaW5nIGltcG9ydCBFeHRlbnNpb25OYW1lLCBF
eHRlbnNpb25QYXJhbWV0ZXIKK2Zyb20gLmJhc2UgaW1wb3J0IENsaWVudEV4dGVuc2lvbkZhY3Rv
cnksIEV4dGVuc2lvbiwgU2VydmVyRXh0ZW5zaW9uRmFjdG9yeQorCisKK19fYWxsX18gPSBbCisg
ICAgIlBlck1lc3NhZ2VEZWZsYXRlIiwKKyAgICAiQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0
b3J5IiwKKyAgICAiU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5IiwKK10KKworX0VNUFRZ
X1VOQ09NUFJFU1NFRF9CTE9DSyA9IGIiXHgwMFx4MDBceGZmXHhmZiIKKworX01BWF9XSU5ET1df
QklUU19WQUxVRVMgPSBbc3RyKGJpdHMpIGZvciBiaXRzIGluIHJhbmdlKDgsIDE2KV0KKworCitj
bGFzcyBQZXJNZXNzYWdlRGVmbGF0ZShFeHRlbnNpb24pOgorICAgICIiIgorICAgIFBlci1NZXNz
YWdlIERlZmxhdGUgZXh0ZW5zaW9uLgorCisgICAgIiIiCisKKyAgICBuYW1lID0gRXh0ZW5zaW9u
TmFtZSgicGVybWVzc2FnZS1kZWZsYXRlIikKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgcmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXI6IGJvb2wsCisgICAgICAg
IGxvY2FsX25vX2NvbnRleHRfdGFrZW92ZXI6IGJvb2wsCisgICAgICAgIHJlbW90ZV9tYXhfd2lu
ZG93X2JpdHM6IGludCwKKyAgICAgICAgbG9jYWxfbWF4X3dpbmRvd19iaXRzOiBpbnQsCisgICAg
ICAgIGNvbXByZXNzX3NldHRpbmdzOiBPcHRpb25hbFtEaWN0W0FueSwgQW55XV0gPSBOb25lLAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENvbmZpZ3VyZSB0aGUgUGVyLU1l
c3NhZ2UgRGVmbGF0ZSBleHRlbnNpb24uCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNvbXBy
ZXNzX3NldHRpbmdzIGlzIE5vbmU6CisgICAgICAgICAgICBjb21wcmVzc19zZXR0aW5ncyA9IHt9
CisKKyAgICAgICAgYXNzZXJ0IHJlbW90ZV9ub19jb250ZXh0X3Rha2VvdmVyIGluIFtGYWxzZSwg
VHJ1ZV0KKyAgICAgICAgYXNzZXJ0IGxvY2FsX25vX2NvbnRleHRfdGFrZW92ZXIgaW4gW0ZhbHNl
LCBUcnVlXQorICAgICAgICBhc3NlcnQgOCA8PSByZW1vdGVfbWF4X3dpbmRvd19iaXRzIDw9IDE1
CisgICAgICAgIGFzc2VydCA4IDw9IGxvY2FsX21heF93aW5kb3dfYml0cyA8PSAxNQorICAgICAg
ICBhc3NlcnQgIndiaXRzIiBub3QgaW4gY29tcHJlc3Nfc2V0dGluZ3MKKworICAgICAgICBzZWxm
LnJlbW90ZV9ub19jb250ZXh0X3Rha2VvdmVyID0gcmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXIK
KyAgICAgICAgc2VsZi5sb2NhbF9ub19jb250ZXh0X3Rha2VvdmVyID0gbG9jYWxfbm9fY29udGV4
dF90YWtlb3ZlcgorICAgICAgICBzZWxmLnJlbW90ZV9tYXhfd2luZG93X2JpdHMgPSByZW1vdGVf
bWF4X3dpbmRvd19iaXRzCisgICAgICAgIHNlbGYubG9jYWxfbWF4X3dpbmRvd19iaXRzID0gbG9j
YWxfbWF4X3dpbmRvd19iaXRzCisgICAgICAgIHNlbGYuY29tcHJlc3Nfc2V0dGluZ3MgPSBjb21w
cmVzc19zZXR0aW5ncworCisgICAgICAgIGlmIG5vdCBzZWxmLnJlbW90ZV9ub19jb250ZXh0X3Rh
a2VvdmVyOgorICAgICAgICAgICAgc2VsZi5kZWNvZGVyID0gemxpYi5kZWNvbXByZXNzb2JqKHdi
aXRzPS1zZWxmLnJlbW90ZV9tYXhfd2luZG93X2JpdHMpCisKKyAgICAgICAgaWYgbm90IHNlbGYu
bG9jYWxfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IHps
aWIuY29tcHJlc3NvYmooCisgICAgICAgICAgICAgICAgd2JpdHM9LXNlbGYubG9jYWxfbWF4X3dp
bmRvd19iaXRzLCAqKnNlbGYuY29tcHJlc3Nfc2V0dGluZ3MKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIFRvIGhhbmRsZSBjb250aW51YXRpb24gZnJhbWVzIHByb3Blcmx5LCB3ZSBtdXN0IGtl
ZXAgdHJhY2sgb2YKKyAgICAgICAgIyB3aGV0aGVyIHRoYXQgaW5pdGlhbCBmcmFtZSB3YXMgZW5j
b2RlZC4KKyAgICAgICAgc2VsZi5kZWNvZGVfY29udF9kYXRhID0gRmFsc2UKKyAgICAgICAgIyBU
aGVyZSdzIG5vIG5lZWQgZm9yIHNlbGYuZW5jb2RlX2NvbnRfZGF0YSBiZWNhdXNlIHdlIGFsd2F5
cyBlbmNvZGUKKyAgICAgICAgIyBvdXRnb2luZyBmcmFtZXMsIHNvIGl0IHdvdWxkIGFsd2F5cyBi
ZSBUcnVlLgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJu
ICgKKyAgICAgICAgICAgIGYiUGVyTWVzc2FnZURlZmxhdGUoIgorICAgICAgICAgICAgZiJyZW1v
dGVfbm9fY29udGV4dF90YWtlb3Zlcj17c2VsZi5yZW1vdGVfbm9fY29udGV4dF90YWtlb3Zlcn0s
ICIKKyAgICAgICAgICAgIGYibG9jYWxfbm9fY29udGV4dF90YWtlb3Zlcj17c2VsZi5sb2NhbF9u
b19jb250ZXh0X3Rha2VvdmVyfSwgIgorICAgICAgICAgICAgZiJyZW1vdGVfbWF4X3dpbmRvd19i
aXRzPXtzZWxmLnJlbW90ZV9tYXhfd2luZG93X2JpdHN9LCAiCisgICAgICAgICAgICBmImxvY2Fs
X21heF93aW5kb3dfYml0cz17c2VsZi5sb2NhbF9tYXhfd2luZG93X2JpdHN9KSIKKyAgICAgICAg
KQorCisgICAgZGVmIGRlY29kZShzZWxmLCBmcmFtZTogRnJhbWUsICosIG1heF9zaXplOiBPcHRp
b25hbFtpbnRdID0gTm9uZSkgLT4gRnJhbWU6CisgICAgICAgICIiIgorICAgICAgICBEZWNvZGUg
YW4gaW5jb21pbmcgZnJhbWUuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgU2tpcCBjb250cm9s
IGZyYW1lcy4KKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlIGluIENUUkxfT1BDT0RFUzoKKyAgICAg
ICAgICAgIHJldHVybiBmcmFtZQorCisgICAgICAgICMgSGFuZGxlIGNvbnRpbnVhdGlvbiBkYXRh
IGZyYW1lczoKKyAgICAgICAgIyAtIHNraXAgaWYgdGhlIGluaXRpYWwgZGF0YSBmcmFtZSB3YXNu
J3QgZW5jb2RlZAorICAgICAgICAjIC0gcmVzZXQgImRlY29kZSBjb250aW51YXRpb24gZGF0YSIg
ZmxhZyBpZiBpdCdzIGEgZmluYWwgZnJhbWUKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IE9Q
X0NPTlQ6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5kZWNvZGVfY29udF9kYXRhOgorICAgICAg
ICAgICAgICAgIHJldHVybiBmcmFtZQorICAgICAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAg
ICAgICAgICAgIHNlbGYuZGVjb2RlX2NvbnRfZGF0YSA9IEZhbHNlCisKKyAgICAgICAgIyBIYW5k
bGUgdGV4dCBhbmQgYmluYXJ5IGRhdGEgZnJhbWVzOgorICAgICAgICAjIC0gc2tpcCBpZiB0aGUg
ZnJhbWUgaXNuJ3QgZW5jb2RlZAorICAgICAgICAjIC0gc2V0ICJkZWNvZGUgY29udGludWF0aW9u
IGRhdGEiIGZsYWcgaWYgaXQncyBhIG5vbi1maW5hbCBmcmFtZQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgaWYgbm90IGZyYW1lLnJzdjE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1l
CisgICAgICAgICAgICBpZiBub3QgZnJhbWUuZmluOiAgIyBmcmFtZS5yc3YxIGlzIFRydWUgYXQg
dGhpcyBwb2ludAorICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlX2NvbnRfZGF0YSA9IFRydWUK
KworICAgICAgICAgICAgIyBSZS1pbml0aWFsaXplIHBlci1tZXNzYWdlIGRlY29kZXIuCisgICAg
ICAgICAgICBpZiBzZWxmLnJlbW90ZV9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAg
ICAgIHNlbGYuZGVjb2RlciA9IHpsaWIuZGVjb21wcmVzc29iaih3Yml0cz0tc2VsZi5yZW1vdGVf
bWF4X3dpbmRvd19iaXRzKQorCisgICAgICAgICMgVW5jb21wcmVzcyBjb21wcmVzc2VkIGZyYW1l
cy4gUHJvdGVjdCBhZ2FpbnN0IHppcCBib21icyBieQorICAgICAgICAjIHByZXZlbnRpbmcgemxp
YiBmcm9tIGRlY29tcHJlc3NpbmcgbW9yZSB0aGFuIG1heF9sZW5ndGggYnl0ZXMKKyAgICAgICAg
IyAoZXhjZXB0IHdoZW4gdGhlIGxpbWl0IGlzIGRpc2FibGVkIHdpdGggbWF4X3NpemUgPSBOb25l
KS4KKyAgICAgICAgZGF0YSA9IGZyYW1lLmRhdGEKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAg
ICAgICAgICAgZGF0YSArPSBfRU1QVFlfVU5DT01QUkVTU0VEX0JMT0NLCisgICAgICAgIG1heF9s
ZW5ndGggPSAwIGlmIG1heF9zaXplIGlzIE5vbmUgZWxzZSBtYXhfc2l6ZQorICAgICAgICBkYXRh
ID0gc2VsZi5kZWNvZGVyLmRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aCkKKyAgICAgICAgaWYg
c2VsZi5kZWNvZGVyLnVuY29uc3VtZWRfdGFpbDoKKyAgICAgICAgICAgIHJhaXNlIFBheWxvYWRU
b29CaWcoCisgICAgICAgICAgICAgICAgZiJVbmNvbXByZXNzZWQgcGF5bG9hZCBsZW5ndGggZXhj
ZWVkcyBzaXplIGxpbWl0ICg/ID4ge21heF9zaXplfSBieXRlcykiCisgICAgICAgICAgICApCisK
KyAgICAgICAgIyBBbGxvdyBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgdGhlIGRlY29kZXIgaWYgaXQg
d29uJ3QgYmUgcmV1c2VkLgorICAgICAgICBpZiBmcmFtZS5maW4gYW5kIHNlbGYucmVtb3RlX25v
X2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICBkZWwgc2VsZi5kZWNvZGVyCisKKyAgICAg
ICAgcmV0dXJuIGZyYW1lLl9yZXBsYWNlKGRhdGE9ZGF0YSwgcnN2MT1GYWxzZSkKKworICAgIGRl
ZiBlbmNvZGUoc2VsZiwgZnJhbWU6IEZyYW1lKSAtPiBGcmFtZToKKyAgICAgICAgIiIiCisgICAg
ICAgIEVuY29kZSBhbiBvdXRnb2luZyBmcmFtZS4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBT
a2lwIGNvbnRyb2wgZnJhbWVzLgorICAgICAgICBpZiBmcmFtZS5vcGNvZGUgaW4gQ1RSTF9PUENP
REVTOgorICAgICAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICAgICAgIyBTaW5jZSB3ZSBhbHdh
eXMgZW5jb2RlIGFuZCBuZXZlciBmcmFnbWVudCBtZXNzYWdlcywgdGhlcmUncyBubyBsb2dpYwor
ICAgICAgICAjIHNpbWlsYXIgdG8gZGVjb2RlKCkgaGVyZSBhdCB0aGlzIHRpbWUuCisKKyAgICAg
ICAgaWYgZnJhbWUub3Bjb2RlICE9IE9QX0NPTlQ6CisgICAgICAgICAgICAjIFJlLWluaXRpYWxp
emUgcGVyLW1lc3NhZ2UgZGVjb2Rlci4KKyAgICAgICAgICAgIGlmIHNlbGYubG9jYWxfbm9fY29u
dGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgICAgICBzZWxmLmVuY29kZXIgPSB6bGliLmNvbXBy
ZXNzb2JqKAorICAgICAgICAgICAgICAgICAgICB3Yml0cz0tc2VsZi5sb2NhbF9tYXhfd2luZG93
X2JpdHMsICoqc2VsZi5jb21wcmVzc19zZXR0aW5ncworICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAjIENvbXByZXNzIGRhdGEgZnJhbWVzLgorICAgICAgICBkYXRhID0gc2VsZi5lbmNvZGVy
LmNvbXByZXNzKGZyYW1lLmRhdGEpICsgc2VsZi5lbmNvZGVyLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQorICAgICAgICBpZiBmcmFtZS5maW4gYW5kIGRhdGEuZW5kc3dpdGgoX0VNUFRZX1VOQ09N
UFJFU1NFRF9CTE9DSyk6CisgICAgICAgICAgICBkYXRhID0gZGF0YVs6LTRdCisKKyAgICAgICAg
IyBBbGxvdyBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgdGhlIGVuY29kZXIgaWYgaXQgd29uJ3QgYmUg
cmV1c2VkLgorICAgICAgICBpZiBmcmFtZS5maW4gYW5kIHNlbGYubG9jYWxfbm9fY29udGV4dF90
YWtlb3ZlcjoKKyAgICAgICAgICAgIGRlbCBzZWxmLmVuY29kZXIKKworICAgICAgICByZXR1cm4g
ZnJhbWUuX3JlcGxhY2UoZGF0YT1kYXRhLCByc3YxPVRydWUpCisKKworZGVmIF9idWlsZF9wYXJh
bWV0ZXJzKAorICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOiBib29sLAorICAgIGNsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyOiBib29sLAorICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHM6
IE9wdGlvbmFsW2ludF0sCisgICAgY2xpZW50X21heF93aW5kb3dfYml0czogT3B0aW9uYWxbVW5p
b25baW50LCBib29sXV0sCispIC0+IExpc3RbRXh0ZW5zaW9uUGFyYW1ldGVyXToKKyAgICAiIiIK
KyAgICBCdWlsZCBhIGxpc3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAgcGFpcnMgZm9yIHNvbWUgY29t
cHJlc3Npb24gcGFyYW1ldGVycy4KKworICAgICIiIgorICAgIHBhcmFtczogTGlzdFtFeHRlbnNp
b25QYXJhbWV0ZXJdID0gW10KKyAgICBpZiBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAg
ICAgICAgcGFyYW1zLmFwcGVuZCgoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSkp
CisgICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgIHBhcmFtcy5hcHBl
bmQoKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpKQorICAgIGlmIHNlcnZlcl9t
YXhfd2luZG93X2JpdHM6CisgICAgICAgIHBhcmFtcy5hcHBlbmQoKCJzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzIiwgc3RyKHNlcnZlcl9tYXhfd2luZG93X2JpdHMpKSkKKyAgICBpZiBjbGllbnRfbWF4
X3dpbmRvd19iaXRzIGlzIFRydWU6ICAjIG9ubHkgaW4gaGFuZHNoYWtlIHJlcXVlc3RzCisgICAg
ICAgIHBhcmFtcy5hcHBlbmQoKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgTm9uZSkpCisgICAg
ZWxpZiBjbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAgICBwYXJhbXMuYXBwZW5kKCgiY2xp
ZW50X21heF93aW5kb3dfYml0cyIsIHN0cihjbGllbnRfbWF4X3dpbmRvd19iaXRzKSkpCisgICAg
cmV0dXJuIHBhcmFtcworCisKK2RlZiBfZXh0cmFjdF9wYXJhbWV0ZXJzKAorICAgIHBhcmFtczog
U2VxdWVuY2VbRXh0ZW5zaW9uUGFyYW1ldGVyXSwgKiwgaXNfc2VydmVyOiBib29sCispIC0+IFR1
cGxlW2Jvb2wsIGJvb2wsIE9wdGlvbmFsW2ludF0sIE9wdGlvbmFsW1VuaW9uW2ludCwgYm9vbF1d
XToKKyAgICAiIiIKKyAgICBFeHRyYWN0IGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgZnJvbSBhIGxp
c3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAgcGFpcnMuCisKKyAgICBJZiBgYGlzX3NlcnZlcmBgIGlz
IGBgVHJ1ZWBgLCBgYGNsaWVudF9tYXhfd2luZG93X2JpdHNgYCBtYXkgYmUgcHJvdmlkZWQKKyAg
ICB3aXRob3V0IGEgdmFsdWUuIFRoaXMgaXMgb25seSBhbGxvdyBpbiBoYW5kc2hha2UgcmVxdWVz
dHMuCisKKyAgICAiIiIKKyAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjogYm9vbCA9IEZh
bHNlCisgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI6IGJvb2wgPSBGYWxzZQorICAgIHNl
cnZlcl9tYXhfd2luZG93X2JpdHM6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgY2xpZW50X21h
eF93aW5kb3dfYml0czogT3B0aW9uYWxbVW5pb25baW50LCBib29sXV0gPSBOb25lCisKKyAgICBm
b3IgbmFtZSwgdmFsdWUgaW4gcGFyYW1zOgorCisgICAgICAgIGlmIG5hbWUgPT0gInNlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyIjoKKyAgICAgICAgICAgIGlmIHNlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyOgorICAgICAgICAgICAgICAgIHJhaXNlIER1cGxpY2F0ZVBhcmFtZXRlcihuYW1lKQor
ICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9f
Y29udGV4dF90YWtlb3ZlciA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgcmFpc2UgSW52YWxpZFBhcmFtZXRlclZhbHVlKG5hbWUsIHZhbHVlKQorCisgICAgICAgIGVs
aWYgbmFtZSA9PSAiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiOgorICAgICAgICAgICAgaWYg
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICAgICAgcmFpc2UgRHVwbGlj
YXRlUGFyYW1ldGVyKG5hbWUpCisgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gVHJ1ZQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkUGFyYW1ldGVyVmFsdWUobmFtZSwg
dmFsdWUpCisKKyAgICAgICAgZWxpZiBuYW1lID09ICJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIjoK
KyAgICAgICAgICAgIGlmIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgcmFpc2UgRHVwbGljYXRlUGFyYW1ldGVyKG5hbWUpCisgICAgICAgICAgICBp
ZiB2YWx1ZSBpbiBfTUFYX1dJTkRPV19CSVRTX1ZBTFVFUzoKKyAgICAgICAgICAgICAgICBzZXJ2
ZXJfbWF4X3dpbmRvd19iaXRzID0gaW50KHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICByYWlzZSBJbnZhbGlkUGFyYW1ldGVyVmFsdWUobmFtZSwgdmFsdWUpCisKKyAg
ICAgICAgZWxpZiBuYW1lID09ICJjbGllbnRfbWF4X3dpbmRvd19iaXRzIjoKKyAgICAgICAgICAg
IGlmIGNsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmFpc2UgRHVwbGljYXRlUGFyYW1ldGVyKG5hbWUpCisgICAgICAgICAgICBpZiBpc19zZXJ2ZXIg
YW5kIHZhbHVlIGlzIE5vbmU6ICAjIG9ubHkgaW4gaGFuZHNoYWtlIHJlcXVlc3RzCisgICAgICAg
ICAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyA9IFRydWUKKyAgICAgICAgICAgIGVsaWYg
dmFsdWUgaW4gX01BWF9XSU5ET1dfQklUU19WQUxVRVM6CisgICAgICAgICAgICAgICAgY2xpZW50
X21heF93aW5kb3dfYml0cyA9IGludCh2YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgcmFpc2UgSW52YWxpZFBhcmFtZXRlclZhbHVlKG5hbWUsIHZhbHVlKQorCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkUGFyYW1ldGVyTmFtZShuYW1lKQor
CisgICAgcmV0dXJuICgKKyAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAg
ICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzLAorICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICkKKworCitjbGFz
cyBDbGllbnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoQ2xpZW50RXh0ZW5zaW9uRmFjdG9yeSk6
CisgICAgIiIiCisgICAgQ2xpZW50LXNpZGUgZXh0ZW5zaW9uIGZhY3RvcnkgZm9yIHRoZSBQZXIt
TWVzc2FnZSBEZWZsYXRlIGV4dGVuc2lvbi4KKworICAgIFBhcmFtZXRlcnMgYmVoYXZlIGFzIGRl
c2NyaWJlZCBpbiBgc2VjdGlvbiA3LjEgb2YgUkZDIDc2OTJgXy4gU2V0IHRoZW0gdG8KKyAgICBg
YFRydWVgYCB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIG5lZ290aWF0aW9uIG9mZmVyIHdpdGhvdXQg
YSB2YWx1ZSBvciB0byBhbgorICAgIGludGVnZXIgdmFsdWUgdG8gaW5jbHVkZSB0aGVtIHdpdGgg
dGhpcyB2YWx1ZS4KKworICAgIC4uIF9zZWN0aW9uIDcuMSBvZiBSRkMgNzY5MjogaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzc2OTIjc2VjdGlvbi03LjEKKworICAgIDpwYXJhbSBzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlcjogZGVmYXVsdHMgdG8gYGBGYWxzZWBgCisgICAgOnBhcmFt
IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOiBkZWZhdWx0cyB0byBgYEZhbHNlYGAKKyAgICA6
cGFyYW0gc2VydmVyX21heF93aW5kb3dfYml0czogb3B0aW9uYWwsIGRlZmF1bHRzIHRvIGBgTm9u
ZWBgCisgICAgOnBhcmFtIGNsaWVudF9tYXhfd2luZG93X2JpdHM6IG9wdGlvbmFsLCBkZWZhdWx0
cyB0byBgYE5vbmVgYAorICAgIDpwYXJhbSBjb21wcmVzc19zZXR0aW5nczogb3B0aW9uYWwsIGtl
eXdvcmQgYXJndW1lbnRzIGZvcgorICAgICAgICA6ZnVuYzpgemxpYi5jb21wcmVzc29iamAsIGV4
Y2x1ZGluZyBgYHdiaXRzYGAKKworICAgICIiIgorCisgICAgbmFtZSA9IEV4dGVuc2lvbk5hbWUo
InBlcm1lc3NhZ2UtZGVmbGF0ZSIpCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYs
CisgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOiBib29sID0gRmFsc2UsCisgICAg
ICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOiBib29sID0gRmFsc2UsCisgICAgICAgIHNl
cnZlcl9tYXhfd2luZG93X2JpdHM6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBjbGll
bnRfbWF4X3dpbmRvd19iaXRzOiBPcHRpb25hbFtVbmlvbltpbnQsIGJvb2xdXSA9IE5vbmUsCisg
ICAgICAgIGNvbXByZXNzX3NldHRpbmdzOiBPcHRpb25hbFtEaWN0W3N0ciwgQW55XV0gPSBOb25l
LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENvbmZpZ3VyZSB0aGUgUGVy
LU1lc3NhZ2UgRGVmbGF0ZSBleHRlbnNpb24gZmFjdG9yeS4KKworICAgICAgICAiIiIKKyAgICAg
ICAgaWYgbm90IChzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIE5vbmUgb3IgOCA8PSBzZXJ2ZXJf
bWF4X3dpbmRvd19iaXRzIDw9IDE1KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNl
cnZlcl9tYXhfd2luZG93X2JpdHMgbXVzdCBiZSBiZXR3ZWVuIDggYW5kIDE1IikKKyAgICAgICAg
aWYgbm90ICgKKyAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgTm9uZQorICAg
ICAgICAgICAgb3IgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBUcnVlCisgICAgICAgICAgICBv
ciA4IDw9IGNsaWVudF9tYXhfd2luZG93X2JpdHMgPD0gMTUKKyAgICAgICAgKToKKyAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoImNsaWVudF9tYXhfd2luZG93X2JpdHMgbXVzdCBiZSBiZXR3
ZWVuIDggYW5kIDE1IikKKyAgICAgICAgaWYgY29tcHJlc3Nfc2V0dGluZ3MgaXMgbm90IE5vbmUg
YW5kICJ3Yml0cyIgaW4gY29tcHJlc3Nfc2V0dGluZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKAorICAgICAgICAgICAgICAgICJjb21wcmVzc19zZXR0aW5ncyBtdXN0IG5vdCBpbmNs
dWRlIHdiaXRzLCAiCisgICAgICAgICAgICAgICAgInNldCBjbGllbnRfbWF4X3dpbmRvd19iaXRz
IGluc3RlYWQiCisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5zZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlciA9IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgIHNlbGYuY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcgorICAg
ICAgICBzZWxmLnNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
CisgICAgICAgIHNlbGYuY2xpZW50X21heF93aW5kb3dfYml0cyA9IGNsaWVudF9tYXhfd2luZG93
X2JpdHMKKyAgICAgICAgc2VsZi5jb21wcmVzc19zZXR0aW5ncyA9IGNvbXByZXNzX3NldHRpbmdz
CisKKyAgICBkZWYgZ2V0X3JlcXVlc3RfcGFyYW1zKHNlbGYpIC0+IExpc3RbRXh0ZW5zaW9uUGFy
YW1ldGVyXToKKyAgICAgICAgIiIiCisgICAgICAgIEJ1aWxkIHJlcXVlc3QgcGFyYW1ldGVycy4K
KworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIF9idWlsZF9wYXJhbWV0ZXJzKAorICAgICAg
ICAgICAgc2VsZi5zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKKyAgICAgICAgICAgIHNlbGYu
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAgICAgICAgICBzZWxmLnNlcnZlcl9tYXhf
d2luZG93X2JpdHMsCisgICAgICAgICAgICBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMsCisg
ICAgICAgICkKKworICAgIGRlZiBwcm9jZXNzX3Jlc3BvbnNlX3BhcmFtcygKKyAgICAgICAgc2Vs
ZiwKKyAgICAgICAgcGFyYW1zOiBTZXF1ZW5jZVtFeHRlbnNpb25QYXJhbWV0ZXJdLAorICAgICAg
ICBhY2NlcHRlZF9leHRlbnNpb25zOiBTZXF1ZW5jZVsiRXh0ZW5zaW9uIl0sCisgICAgKSAtPiBQ
ZXJNZXNzYWdlRGVmbGF0ZToKKyAgICAgICAgIiIiCisgICAgICAgIFByb2Nlc3MgcmVzcG9uc2Ug
cGFyYW1ldGVycy4KKworICAgICAgICBSZXR1cm4gYW4gZXh0ZW5zaW9uIGluc3RhbmNlLgorCisg
ICAgICAgICIiIgorICAgICAgICBpZiBhbnkob3RoZXIubmFtZSA9PSBzZWxmLm5hbWUgZm9yIG90
aGVyIGluIGFjY2VwdGVkX2V4dGVuc2lvbnMpOgorICAgICAgICAgICAgcmFpc2UgTmVnb3RpYXRp
b25FcnJvcihmInJlY2VpdmVkIGR1cGxpY2F0ZSB7c2VsZi5uYW1lfSIpCisKKyAgICAgICAgIyBS
ZXF1ZXN0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZSBpbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisK
KyAgICAgICAgIyBMb2FkIHJlc3BvbnNlIHBhcmFtZXRlcnMgaW4gbG9jYWwgdmFyaWFibGVzLgor
ICAgICAgICAoCisgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKKyAgICAg
ICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgc2VydmVyX21h
eF93aW5kb3dfYml0cywKKyAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMsCisgICAg
ICAgICkgPSBfZXh0cmFjdF9wYXJhbWV0ZXJzKHBhcmFtcywgaXNfc2VydmVyPUZhbHNlKQorCisg
ICAgICAgICMgQWZ0ZXIgY29tcGFyaW5nIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UsIHRo
ZSBmaW5hbAorICAgICAgICAjIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBhdmFpbGFibGUgaW4gdGhl
IGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICAjIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVy
CisgICAgICAgICMKKyAgICAgICAgIyAgIFJlcS4gICAgUmVzcC4gICBSZXN1bHQKKyAgICAgICAg
IyAgIC0tLS0tLSAgLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICAgICAgICAjICAgRmFsc2UgICBGYWxzZSAgIEZhbHNlCisgICAgICAg
ICMgICBGYWxzZSAgIFRydWUgICAgVHJ1ZQorICAgICAgICAjICAgVHJ1ZSAgICBGYWxzZSAgIEVy
cm9yIQorICAgICAgICAjICAgVHJ1ZSAgICBUcnVlICAgIFRydWUKKworICAgICAgICBpZiBzZWxm
LnNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgICAgIHJhaXNlIE5lZ290aWF0aW9uRXJy
b3IoImV4cGVjdGVkIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIikKKworICAgICAgICAjIGNs
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgICMKKyAgICAgICAgIyAgIFJlcS4gICAg
UmVzcC4gICBSZXN1bHQKKyAgICAgICAgIyAgIC0tLS0tLSAgLS0tLS0tICAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjICAgRmFsc2Ug
ICBGYWxzZSAgIEZhbHNlCisgICAgICAgICMgICBGYWxzZSAgIFRydWUgICAgVHJ1ZQorICAgICAg
ICAjICAgVHJ1ZSAgICBGYWxzZSAgIFRydWUgLSBtdXN0IGNoYW5nZSB2YWx1ZQorICAgICAgICAj
ICAgVHJ1ZSAgICBUcnVlICAgIFRydWUKKworICAgICAgICBpZiBzZWxmLmNsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgaWYgbm90IGNsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyOgorICAgICAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gVHJ1ZQor
CisgICAgICAgICMgc2VydmVyX21heF93aW5kb3dfYml0cworCisgICAgICAgICMgICBSZXEuICAg
IFJlc3AuICAgUmVzdWx0CisgICAgICAgICMgICAtLS0tLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyAgIE5vbmUg
ICAgTm9uZSAgICBOb25lCisgICAgICAgICMgICBOb25lICAgIDjiiaRN4omkMTUgIE0KKyAgICAg
ICAgIyAgIDjiiaRO4omkMTUgIE5vbmUgICAgRXJyb3IhCisgICAgICAgICMgICA44omkTuKJpDE1
ICA44omkTeKJpE4gICBNCisgICAgICAgICMgICA44omkTuKJpDE1ICBOPE3iiaQxNSAgRXJyb3Ih
CisKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIE5vbmU6CisgICAg
ICAgICAgICBwYXNzCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHNlcnZlcl9tYXhf
d2luZG93X2JpdHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBOZWdvdGlhdGlvbkVy
cm9yKCJleHBlY3RlZCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIikKKyAgICAgICAgICAgIGVsaWYg
c2VydmVyX21heF93aW5kb3dfYml0cyA+IHNlbGYuc2VydmVyX21heF93aW5kb3dfYml0czoKKyAg
ICAgICAgICAgICAgICByYWlzZSBOZWdvdGlhdGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBzZXJ2ZXJf
bWF4X3dpbmRvd19iaXRzIikKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMKKwor
ICAgICAgICAjICAgUmVxLiAgICBSZXNwLiAgIFJlc3VsdAorICAgICAgICAjICAgLS0tLS0tICAt
LS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgICAgICAgICMgICBOb25lICAgIE5vbmUgICAgTm9uZQorICAgICAgICAjICAgTm9uZSAgICA4
4omkTeKJpDE1ICBFcnJvciEKKyAgICAgICAgIyAgIFRydWUgICAgTm9uZSAgICBOb25lCisgICAg
ICAgICMgICBUcnVlICAgIDjiiaRN4omkMTUgIE0KKyAgICAgICAgIyAgIDjiiaRO4omkMTUgIE5v
bmUgICAgTiAtIG11c3QgY2hhbmdlIHZhbHVlCisgICAgICAgICMgICA44omkTuKJpDE1ICA44omk
TeKJpE4gICBNCisgICAgICAgICMgICA44omkTuKJpDE1ICBOPE3iiaQxNSAgRXJyb3IhCisKKyAg
ICAgICAgaWYgc2VsZi5jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAg
ICBpZiBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
IHJhaXNlIE5lZ290aWF0aW9uRXJyb3IoInVuZXhwZWN0ZWQgY2xpZW50X21heF93aW5kb3dfYml0
cyIpCisKKyAgICAgICAgZWxpZiBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgVHJ1ZToK
KyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgY2xpZW50
X21heF93aW5kb3dfYml0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2lu
ZG93X2JpdHMgPSBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgIGVsaWYg
Y2xpZW50X21heF93aW5kb3dfYml0cyA+IHNlbGYuY2xpZW50X21heF93aW5kb3dfYml0czoKKyAg
ICAgICAgICAgICAgICByYWlzZSBOZWdvdGlhdGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBjbGllbnRf
bWF4X3dpbmRvd19iaXRzIikKKworICAgICAgICByZXR1cm4gUGVyTWVzc2FnZURlZmxhdGUoCisg
ICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwgICMgcmVtb3RlX25vX2NvbnRl
eHRfdGFrZW92ZXIKKyAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyLCAgIyBs
b2NhbF9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19i
aXRzIG9yIDE1LCAgIyByZW1vdGVfbWF4X3dpbmRvd19iaXRzCisgICAgICAgICAgICBjbGllbnRf
bWF4X3dpbmRvd19iaXRzIG9yIDE1LCAgIyBsb2NhbF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAg
ICAgIHNlbGYuY29tcHJlc3Nfc2V0dGluZ3MsCisgICAgICAgICkKKworCitjbGFzcyBTZXJ2ZXJQ
ZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoU2VydmVyRXh0ZW5zaW9uRmFjdG9yeSk6CisgICAgIiIi
CisgICAgU2VydmVyLXNpZGUgZXh0ZW5zaW9uIGZhY3RvcnkgZm9yIHRoZSBQZXItTWVzc2FnZSBE
ZWZsYXRlIGV4dGVuc2lvbi4KKworICAgIFBhcmFtZXRlcnMgYmVoYXZlIGFzIGRlc2NyaWJlZCBp
biBgc2VjdGlvbiA3LjEgb2YgUkZDIDc2OTJgXy4gU2V0IHRoZW0gdG8KKyAgICBgYFRydWVgYCB0
byBpbmNsdWRlIHRoZW0gaW4gdGhlIG5lZ290aWF0aW9uIG9mZmVyIHdpdGhvdXQgYSB2YWx1ZSBv
ciB0byBhbgorICAgIGludGVnZXIgdmFsdWUgdG8gaW5jbHVkZSB0aGVtIHdpdGggdGhpcyB2YWx1
ZS4KKworICAgIC4uIF9zZWN0aW9uIDcuMSBvZiBSRkMgNzY5MjogaHR0cHM6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzc2OTIjc2VjdGlvbi03LjEKKworICAgIDpwYXJhbSBzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlcjogZGVmYXVsdHMgdG8gYGBGYWxzZWBgCisgICAgOnBhcmFtIGNsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyOiBkZWZhdWx0cyB0byBgYEZhbHNlYGAKKyAgICA6cGFyYW0gc2Vy
dmVyX21heF93aW5kb3dfYml0czogb3B0aW9uYWwsIGRlZmF1bHRzIHRvIGBgTm9uZWBgCisgICAg
OnBhcmFtIGNsaWVudF9tYXhfd2luZG93X2JpdHM6IG9wdGlvbmFsLCBkZWZhdWx0cyB0byBgYE5v
bmVgYAorICAgIDpwYXJhbSBjb21wcmVzc19zZXR0aW5nczogb3B0aW9uYWwsIGtleXdvcmQgYXJn
dW1lbnRzIGZvcgorICAgICAgICA6ZnVuYzpgemxpYi5jb21wcmVzc29iamAsIGV4Y2x1ZGluZyBg
YHdiaXRzYGAKKworICAgICIiIgorCisgICAgbmFtZSA9IEV4dGVuc2lvbk5hbWUoInBlcm1lc3Nh
Z2UtZGVmbGF0ZSIpCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAg
IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOiBib29sID0gRmFsc2UsCisgICAgICAgIGNsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyOiBib29sID0gRmFsc2UsCisgICAgICAgIHNlcnZlcl9tYXhf
d2luZG93X2JpdHM6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBjbGllbnRfbWF4X3dp
bmRvd19iaXRzOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgY29tcHJlc3Nfc2V0dGlu
Z3M6IE9wdGlvbmFsW0RpY3Rbc3RyLCBBbnldXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ29uZmlndXJlIHRoZSBQZXItTWVzc2FnZSBEZWZsYXRlIGV4dGVu
c2lvbiBmYWN0b3J5LgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgKHNlcnZlcl9tYXhf
d2luZG93X2JpdHMgaXMgTm9uZSBvciA4IDw9IHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPD0gMTUp
OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX21heF93aW5kb3dfYml0cyBt
dXN0IGJlIGJldHdlZW4gOCBhbmQgMTUiKQorICAgICAgICBpZiBub3QgKGNsaWVudF9tYXhfd2lu
ZG93X2JpdHMgaXMgTm9uZSBvciA4IDw9IGNsaWVudF9tYXhfd2luZG93X2JpdHMgPD0gMTUpOgor
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2xpZW50X21heF93aW5kb3dfYml0cyBtdXN0
IGJlIGJldHdlZW4gOCBhbmQgMTUiKQorICAgICAgICBpZiBjb21wcmVzc19zZXR0aW5ncyBpcyBu
b3QgTm9uZSBhbmQgIndiaXRzIiBpbiBjb21wcmVzc19zZXR0aW5nczoKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImNvbXByZXNzX3NldHRpbmdzIG11c3Qg
bm90IGluY2x1ZGUgd2JpdHMsICIKKyAgICAgICAgICAgICAgICAic2V0IHNlcnZlcl9tYXhfd2lu
ZG93X2JpdHMgaW5zdGVhZCIKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLnNlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyID0gc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAg
c2VsZi5jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IGNsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyCisgICAgICAgIHNlbGYuc2VydmVyX21heF93aW5kb3dfYml0cyA9IHNlcnZlcl9tYXhfd2lu
ZG93X2JpdHMKKyAgICAgICAgc2VsZi5jbGllbnRfbWF4X3dpbmRvd19iaXRzID0gY2xpZW50X21h
eF93aW5kb3dfYml0cworICAgICAgICBzZWxmLmNvbXByZXNzX3NldHRpbmdzID0gY29tcHJlc3Nf
c2V0dGluZ3MKKworICAgIGRlZiBwcm9jZXNzX3JlcXVlc3RfcGFyYW1zKAorICAgICAgICBzZWxm
LAorICAgICAgICBwYXJhbXM6IFNlcXVlbmNlW0V4dGVuc2lvblBhcmFtZXRlcl0sCisgICAgICAg
IGFjY2VwdGVkX2V4dGVuc2lvbnM6IFNlcXVlbmNlWyJFeHRlbnNpb24iXSwKKyAgICApIC0+IFR1
cGxlW0xpc3RbRXh0ZW5zaW9uUGFyYW1ldGVyXSwgUGVyTWVzc2FnZURlZmxhdGVdOgorICAgICAg
ICAiIiIKKyAgICAgICAgUHJvY2VzcyByZXF1ZXN0IHBhcmFtZXRlcnMuCisKKyAgICAgICAgUmV0
dXJuIHJlc3BvbnNlIHBhcmFtcyBhbmQgYW4gZXh0ZW5zaW9uIGluc3RhbmNlLgorCisgICAgICAg
ICIiIgorICAgICAgICBpZiBhbnkob3RoZXIubmFtZSA9PSBzZWxmLm5hbWUgZm9yIG90aGVyIGlu
IGFjY2VwdGVkX2V4dGVuc2lvbnMpOgorICAgICAgICAgICAgcmFpc2UgTmVnb3RpYXRpb25FcnJv
cihmInNraXBwZWQgZHVwbGljYXRlIHtzZWxmLm5hbWV9IikKKworICAgICAgICAjIExvYWQgcmVx
dWVzdCBwYXJhbWV0ZXJzIGluIGxvY2FsIHZhcmlhYmxlcy4KKyAgICAgICAgKAorICAgICAgICAg
ICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAgICAgICAgICBjbGllbnRfbm9fY29u
dGV4dF90YWtlb3ZlciwKKyAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAg
ICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICApID0gX2V4dHJhY3RfcGFy
YW1ldGVycyhwYXJhbXMsIGlzX3NlcnZlcj1UcnVlKQorCisgICAgICAgICMgQ29uZmlndXJhdGlv
biBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGUgaW4gaW5zdGFuY2UgdmFyaWFibGVzLgorCisgICAg
ICAgICMgQWZ0ZXIgY29tcGFyaW5nIHRoZSByZXF1ZXN0IGFuZCB0aGUgY29uZmlndXJhdGlvbiwg
dGhlIHJlc3BvbnNlIG11c3QKKyAgICAgICAgIyBiZSBhdmFpbGFibGUgaW4gdGhlIGxvY2FsIHZh
cmlhYmxlcy4KKworICAgICAgICAjIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAg
ICMKKyAgICAgICAgIyAgIENvbmZpZyAgUmVxLiAgICBSZXNwLgorICAgICAgICAjICAgLS0tLS0t
ICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgICAgICAgICMgICBGYWxzZSAgIEZhbHNlICAgRmFsc2UKKyAgICAgICAgIyAgIEZhbHNl
ICAgVHJ1ZSAgICBUcnVlCisgICAgICAgICMgICBUcnVlICAgIEZhbHNlICAgVHJ1ZSAtIG11c3Qg
Y2hhbmdlIHZhbHVlIHRvIFRydWUKKyAgICAgICAgIyAgIFRydWUgICAgVHJ1ZSAgICBUcnVlCisK
KyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAg
IGlmIG5vdCBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgICAgICBzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9IFRydWUKKworICAgICAgICAjIGNsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyCisgICAgICAgICMKKyAgICAgICAgIyAgIENvbmZpZyAgUmVxLiAgICBSZXNw
LgorICAgICAgICAjICAgLS0tLS0tICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMgICBGYWxzZSAgIEZhbHNlICAgRmFs
c2UKKyAgICAgICAgIyAgIEZhbHNlICAgVHJ1ZSAgICBUcnVlIChvciBGYWxzZSkKKyAgICAgICAg
IyAgIFRydWUgICAgRmFsc2UgICBUcnVlIC0gbXVzdCBjaGFuZ2UgdmFsdWUgdG8gVHJ1ZQorICAg
ICAgICAjICAgVHJ1ZSAgICBUcnVlICAgIFRydWUgKG9yIEZhbHNlKQorCisgICAgICAgIGlmIHNl
bGYuY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICBpZiBub3QgY2xpZW50
X25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXIgPSBUcnVlCisKKyAgICAgICAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzCisKKyAg
ICAgICAgIyAgIENvbmZpZyAgUmVxLiAgICBSZXNwLgorICAgICAgICAjICAgLS0tLS0tICAtLS0t
LS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
ICAgICAgICMgICBOb25lICAgIE5vbmUgICAgTm9uZQorICAgICAgICAjICAgTm9uZSAgICA44omk
TeKJpDE1ICBNCisgICAgICAgICMgICA44omkTuKJpDE1ICBOb25lICAgIE4gLSBtdXN0IGNoYW5n
ZSB2YWx1ZQorICAgICAgICAjICAgOOKJpE7iiaQxNSAgOOKJpE3iiaROICAgTQorICAgICAgICAj
ICAgOOKJpE7iiaQxNSAgTjxN4omkMTUgIE4gLSBtdXN0IGNoYW5nZSB2YWx1ZQorCisgICAgICAg
IGlmIHNlbGYuc2VydmVyX21heF93aW5kb3dfYml0cyBpcyBOb25lOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cyA9IHNlbGYu
c2VydmVyX21heF93aW5kb3dfYml0cworICAgICAgICAgICAgZWxpZiBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzID4gc2VsZi5zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzOgorICAgICAgICAgICAgICAgIHNl
cnZlcl9tYXhfd2luZG93X2JpdHMgPSBzZWxmLnNlcnZlcl9tYXhfd2luZG93X2JpdHMKKworICAg
ICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMKKworICAgICAgICAjICAgQ29uZmlnICBSZXEu
ICAgIFJlc3AuCisgICAgICAgICMgICAtLS0tLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyAgIE5vbmUgICAgTm9u
ZSAgICBOb25lCisgICAgICAgICMgICBOb25lICAgIFRydWUgICAgTm9uZSAtIG11c3QgY2hhbmdl
IHZhbHVlCisgICAgICAgICMgICBOb25lICAgIDjiiaRN4omkMTUgIE0gKG9yIE5vbmUpCisgICAg
ICAgICMgICA44omkTuKJpDE1ICBOb25lICAgIEVycm9yIQorICAgICAgICAjICAgOOKJpE7iiaQx
NSAgVHJ1ZSAgICBOIC0gbXVzdCBjaGFuZ2UgdmFsdWUKKyAgICAgICAgIyAgIDjiiaRO4omkMTUg
IDjiiaRN4omkTiAgIE0gKG9yIE5vbmUpCisgICAgICAgICMgICA44omkTuKJpDE1ICBOPE3iiaQx
NSAgTgorCisgICAgICAgIGlmIHNlbGYuY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBOb25lOgor
ICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBUcnVlOgorICAgICAgICAg
ICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLmNsaWVudF9tYXhfd2luZG93X2Jp
dHMKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0
cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIE5lZ290aWF0aW9uRXJyb3IoInJlcXVp
cmVkIGNsaWVudF9tYXhfd2luZG93X2JpdHMiKQorICAgICAgICAgICAgZWxpZiBjbGllbnRfbWF4
X3dpbmRvd19iaXRzIGlzIFRydWU6CisgICAgICAgICAgICAgICAgY2xpZW50X21heF93aW5kb3df
Yml0cyA9IHNlbGYuY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgZWxpZiBzZWxm
LmNsaWVudF9tYXhfd2luZG93X2JpdHMgPCBjbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAg
ICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLmNsaWVudF9tYXhfd2luZG93
X2JpdHMKKworICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgX2J1aWxkX3BhcmFtZXRlcnMo
CisgICAgICAgICAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAgICAgICAg
ICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAgICAgICAgICAgICAgc2VydmVy
X21heF93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRz
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlKAorICAgICAg
ICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyLCAgIyByZW1vdGVfbm9fY29udGV4
dF90YWtlb3ZlcgorICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLCAg
IyBsb2NhbF9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgICAgICAgICAgY2xpZW50X21heF93
aW5kb3dfYml0cyBvciAxNSwgICMgcmVtb3RlX21heF93aW5kb3dfYml0cworICAgICAgICAgICAg
ICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgb3IgMTUsICAjIGxvY2FsX21heF93aW5kb3dfYml0
cworICAgICAgICAgICAgICAgIHNlbGYuY29tcHJlc3Nfc2V0dGluZ3MsCisgICAgICAgICAgICAp
LAorICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMv
ZnJhbWluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9mcmFtaW5nLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjZlNThjZGJmYmI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2ZyYW1pbmcucHkK
QEAgLTAsMCArMSwzNDIgQEAKKyIiIgorOm1vZDpgd2Vic29ja2V0cy5mcmFtaW5nYCByZWFkcyBh
bmQgd3JpdGVzIFdlYlNvY2tldCBmcmFtZXMuCisKK0l0IGRlYWxzIHdpdGggYSBzaW5nbGUgZnJh
bWUgYXQgYSB0aW1lLiBBbnl0aGluZyB0aGF0IGRlcGVuZHMgb24gdGhlIHNlcXVlbmNlCitvZiBm
cmFtZXMgaXMgaW1wbGVtZW50ZWQgaW4gOm1vZDpgd2Vic29ja2V0cy5wcm90b2NvbGAuCisKK1Nl
ZSBgc2VjdGlvbiA1IG9mIFJGQyA2NDU1YF8uCisKKy4uIF9zZWN0aW9uIDUgb2YgUkZDIDY0NTU6
IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01CisKKyIiIgorCitp
bXBvcnQgaW8KK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gdHlwaW5nIGltcG9y
dCBBbnksIEF3YWl0YWJsZSwgQ2FsbGFibGUsIE5hbWVkVHVwbGUsIE9wdGlvbmFsLCBTZXF1ZW5j
ZSwgVHVwbGUKKworZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQgUGF5bG9hZFRvb0JpZywgUHJvdG9j
b2xFcnJvcgorZnJvbSAudHlwaW5nIGltcG9ydCBEYXRhCisKKwordHJ5OgorICAgIGZyb20gLnNw
ZWVkdXBzIGltcG9ydCBhcHBseV9tYXNrCitleGNlcHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTog
bm8gY292ZXIKKyAgICBmcm9tIC51dGlscyBpbXBvcnQgYXBwbHlfbWFzaworCisKK19fYWxsX18g
PSBbCisgICAgIkRBVEFfT1BDT0RFUyIsCisgICAgIkNUUkxfT1BDT0RFUyIsCisgICAgIk9QX0NP
TlQiLAorICAgICJPUF9URVhUIiwKKyAgICAiT1BfQklOQVJZIiwKKyAgICAiT1BfQ0xPU0UiLAor
ICAgICJPUF9QSU5HIiwKKyAgICAiT1BfUE9ORyIsCisgICAgIkZyYW1lIiwKKyAgICAicHJlcGFy
ZV9kYXRhIiwKKyAgICAiZW5jb2RlX2RhdGEiLAorICAgICJwYXJzZV9jbG9zZSIsCisgICAgInNl
cmlhbGl6ZV9jbG9zZSIsCitdCisKK0RBVEFfT1BDT0RFUyA9IE9QX0NPTlQsIE9QX1RFWFQsIE9Q
X0JJTkFSWSA9IDB4MDAsIDB4MDEsIDB4MDIKK0NUUkxfT1BDT0RFUyA9IE9QX0NMT1NFLCBPUF9Q
SU5HLCBPUF9QT05HID0gMHgwOCwgMHgwOSwgMHgwQQorCisjIENsb3NlIGNvZGUgdGhhdCBhcmUg
YWxsb3dlZCBpbiBhIGNsb3NlIGZyYW1lLgorIyBVc2luZyBhIGxpc3Qgb3B0aW1pemVzIGBjb2Rl
IGluIEVYVEVSTkFMX0NMT1NFX0NPREVTYC4KK0VYVEVSTkFMX0NMT1NFX0NPREVTID0gWzEwMDAs
IDEwMDEsIDEwMDIsIDEwMDMsIDEwMDcsIDEwMDgsIDEwMDksIDEwMTAsIDEwMTFdCisKKworIyBD
b25zaWRlciBjb252ZXJ0aW5nIHRvIGEgZGF0YWNsYXNzIHdoZW4gZHJvcHBpbmcgc3VwcG9ydCBm
b3IgUHl0aG9uIDwgMy43LgorCisKK2NsYXNzIEZyYW1lKE5hbWVkVHVwbGUpOgorICAgICIiIgor
ICAgIFdlYlNvY2tldCBmcmFtZS4KKworICAgIDpwYXJhbSBib29sIGZpbjogRklOIGJpdAorICAg
IDpwYXJhbSBib29sIHJzdjE6IFJTVjEgYml0CisgICAgOnBhcmFtIGJvb2wgcnN2MjogUlNWMiBi
aXQKKyAgICA6cGFyYW0gYm9vbCByc3YzOiBSU1YzIGJpdAorICAgIDpwYXJhbSBpbnQgb3Bjb2Rl
OiBvcGNvZGUKKyAgICA6cGFyYW0gYnl0ZXMgZGF0YTogcGF5bG9hZCBkYXRhCisKKyAgICBPbmx5
IHRoZXNlIGZpZWxkcyBhcmUgbmVlZGVkLiBUaGUgTUFTSyBiaXQsIHBheWxvYWQgbGVuZ3RoIGFu
ZCBtYXNraW5nLWtleQorICAgIGFyZSBoYW5kbGVkIG9uIHRoZSBmbHkgYnkgOm1ldGg6YHJlYWRg
IGFuZCA6bWV0aDpgd3JpdGVgLgorCisgICAgIiIiCisKKyAgICBmaW46IGJvb2wKKyAgICBvcGNv
ZGU6IGludAorICAgIGRhdGE6IGJ5dGVzCisgICAgcnN2MTogYm9vbCA9IEZhbHNlCisgICAgcnN2
MjogYm9vbCA9IEZhbHNlCisgICAgcnN2MzogYm9vbCA9IEZhbHNlCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBhc3luYyBkZWYgcmVhZCgKKyAgICAgICAgY2xzLAorICAgICAgICByZWFkZXI6IENh
bGxhYmxlW1tpbnRdLCBBd2FpdGFibGVbYnl0ZXNdXSwKKyAgICAgICAgKiwKKyAgICAgICAgbWFz
azogYm9vbCwKKyAgICAgICAgbWF4X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAg
ICBleHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVsid2Vic29ja2V0cy5leHRlbnNpb25zLmJh
c2UuRXh0ZW5zaW9uIl1dID0gTm9uZSwKKyAgICApIC0+ICJGcmFtZSI6CisgICAgICAgICIiIgor
ICAgICAgICBSZWFkIGEgV2ViU29ja2V0IGZyYW1lLgorCisgICAgICAgIDpwYXJhbSByZWFkZXI6
IGNvcm91dGluZSB0aGF0IHJlYWRzIGV4YWN0bHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YKKyAg
ICAgICAgICAgIGJ5dGVzLCB1bmxlc3MgdGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQKKyAgICAg
ICAgOnBhcmFtIG1hc2s6IHdoZXRoZXIgdGhlIGZyYW1lIHNob3VsZCBiZSBtYXNrZWQgaS5lLiB3
aGV0aGVyIHRoZSByZWFkCisgICAgICAgICAgICBoYXBwZW5zIG9uIHRoZSBzZXJ2ZXIgc2lkZQor
ICAgICAgICA6cGFyYW0gbWF4X3NpemU6IG1heGltdW0gcGF5bG9hZCBzaXplIGluIGJ5dGVzCisg
ICAgICAgIDpwYXJhbSBleHRlbnNpb25zOiBsaXN0IG9mIGNsYXNzZXMgd2l0aCBhIGBgZGVjb2Rl
KClgYCBtZXRob2QgdGhhdAorICAgICAgICAgICAgdHJhbnNmb3JtcyB0aGUgZnJhbWUgYW5kIHJl
dHVybiBhIG5ldyBmcmFtZTsgZXh0ZW5zaW9ucyBhcmUgYXBwbGllZAorICAgICAgICAgICAgaW4g
cmV2ZXJzZSBvcmRlcgorICAgICAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuUGF5
bG9hZFRvb0JpZzogaWYgdGhlIGZyYW1lIGV4Y2VlZHMKKyAgICAgICAgICAgIGBgbWF4X3NpemVg
YAorICAgICAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuUHJvdG9jb2xFcnJvcjog
aWYgdGhlIGZyYW1lCisgICAgICAgICAgICBjb250YWlucyBpbmNvcnJlY3QgdmFsdWVzCisKKyAg
ICAgICAgIiIiCisgICAgICAgICMgUmVhZCB0aGUgaGVhZGVyLgorICAgICAgICBkYXRhID0gYXdh
aXQgcmVhZGVyKDIpCisgICAgICAgIGhlYWQxLCBoZWFkMiA9IHN0cnVjdC51bnBhY2soIiFCQiIs
IGRhdGEpCisKKyAgICAgICAgIyBXaGlsZSBub3QgUHl0aG9uaWMsIHRoaXMgaXMgbWFyZ2luYWxs
eSBmYXN0ZXIgdGhhbiBjYWxsaW5nIGJvb2woKS4KKyAgICAgICAgZmluID0gVHJ1ZSBpZiBoZWFk
MSAmIDBiMTAwMDAwMDAgZWxzZSBGYWxzZQorICAgICAgICByc3YxID0gVHJ1ZSBpZiBoZWFkMSAm
IDBiMDEwMDAwMDAgZWxzZSBGYWxzZQorICAgICAgICByc3YyID0gVHJ1ZSBpZiBoZWFkMSAmIDBi
MDAxMDAwMDAgZWxzZSBGYWxzZQorICAgICAgICByc3YzID0gVHJ1ZSBpZiBoZWFkMSAmIDBiMDAw
MTAwMDAgZWxzZSBGYWxzZQorICAgICAgICBvcGNvZGUgPSBoZWFkMSAmIDBiMDAwMDExMTEKKwor
ICAgICAgICBpZiAoVHJ1ZSBpZiBoZWFkMiAmIDBiMTAwMDAwMDAgZWxzZSBGYWxzZSkgIT0gbWFz
azoKKyAgICAgICAgICAgIHJhaXNlIFByb3RvY29sRXJyb3IoImluY29ycmVjdCBtYXNraW5nIikK
KworICAgICAgICBsZW5ndGggPSBoZWFkMiAmIDBiMDExMTExMTEKKyAgICAgICAgaWYgbGVuZ3Ro
ID09IDEyNjoKKyAgICAgICAgICAgIGRhdGEgPSBhd2FpdCByZWFkZXIoMikKKyAgICAgICAgICAg
IChsZW5ndGgsKSA9IHN0cnVjdC51bnBhY2soIiFIIiwgZGF0YSkKKyAgICAgICAgZWxpZiBsZW5n
dGggPT0gMTI3OgorICAgICAgICAgICAgZGF0YSA9IGF3YWl0IHJlYWRlcig4KQorICAgICAgICAg
ICAgKGxlbmd0aCwpID0gc3RydWN0LnVucGFjaygiIVEiLCBkYXRhKQorICAgICAgICBpZiBtYXhf
c2l6ZSBpcyBub3QgTm9uZSBhbmQgbGVuZ3RoID4gbWF4X3NpemU6CisgICAgICAgICAgICByYWlz
ZSBQYXlsb2FkVG9vQmlnKAorICAgICAgICAgICAgICAgIGYicGF5bG9hZCBsZW5ndGggZXhjZWVk
cyBzaXplIGxpbWl0ICh7bGVuZ3RofSA+IHttYXhfc2l6ZX0gYnl0ZXMpIgorICAgICAgICAgICAg
KQorICAgICAgICBpZiBtYXNrOgorICAgICAgICAgICAgbWFza19iaXRzID0gYXdhaXQgcmVhZGVy
KDQpCisKKyAgICAgICAgIyBSZWFkIHRoZSBkYXRhLgorICAgICAgICBkYXRhID0gYXdhaXQgcmVh
ZGVyKGxlbmd0aCkKKyAgICAgICAgaWYgbWFzazoKKyAgICAgICAgICAgIGRhdGEgPSBhcHBseV9t
YXNrKGRhdGEsIG1hc2tfYml0cykKKworICAgICAgICBmcmFtZSA9IGNscyhmaW4sIG9wY29kZSwg
ZGF0YSwgcnN2MSwgcnN2MiwgcnN2MykKKworICAgICAgICBpZiBleHRlbnNpb25zIGlzIE5vbmU6
CisgICAgICAgICAgICBleHRlbnNpb25zID0gW10KKyAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBy
ZXZlcnNlZChleHRlbnNpb25zKToKKyAgICAgICAgICAgIGZyYW1lID0gZXh0ZW5zaW9uLmRlY29k
ZShmcmFtZSwgbWF4X3NpemU9bWF4X3NpemUpCisKKyAgICAgICAgZnJhbWUuY2hlY2soKQorCisg
ICAgICAgIHJldHVybiBmcmFtZQorCisgICAgZGVmIHdyaXRlKAorICAgICAgICBmcmFtZSwKKyAg
ICAgICAgd3JpdGU6IENhbGxhYmxlW1tieXRlc10sIEFueV0sCisgICAgICAgICosCisgICAgICAg
IG1hc2s6IGJvb2wsCisgICAgICAgIGV4dGVuc2lvbnM6IE9wdGlvbmFsW1NlcXVlbmNlWyJ3ZWJz
b2NrZXRzLmV4dGVuc2lvbnMuYmFzZS5FeHRlbnNpb24iXV0gPSBOb25lLAorICAgICkgLT4gTm9u
ZToKKyAgICAgICAgIiIiCisgICAgICAgIFdyaXRlIGEgV2ViU29ja2V0IGZyYW1lLgorCisgICAg
ICAgIDpwYXJhbSBmcmFtZTogZnJhbWUgdG8gd3JpdGUKKyAgICAgICAgOnBhcmFtIHdyaXRlOiBm
dW5jdGlvbiB0aGF0IHdyaXRlcyBieXRlcworICAgICAgICA6cGFyYW0gbWFzazogd2hldGhlciB0
aGUgZnJhbWUgc2hvdWxkIGJlIG1hc2tlZCBpLmUuIHdoZXRoZXIgdGhlIHdyaXRlCisgICAgICAg
ICAgICBoYXBwZW5zIG9uIHRoZSBjbGllbnQgc2lkZQorICAgICAgICA6cGFyYW0gZXh0ZW5zaW9u
czogbGlzdCBvZiBjbGFzc2VzIHdpdGggYW4gYGBlbmNvZGUoKWBgIG1ldGhvZCB0aGF0CisgICAg
ICAgICAgICB0cmFuc2Zvcm0gdGhlIGZyYW1lIGFuZCByZXR1cm4gYSBuZXcgZnJhbWU7IGV4dGVu
c2lvbnMgYXJlIGFwcGxpZWQKKyAgICAgICAgICAgIGluIG9yZGVyCisgICAgICAgIDpyYWlzZXMg
fndlYnNvY2tldHMuZXhjZXB0aW9ucy5Qcm90b2NvbEVycm9yOiBpZiB0aGUgZnJhbWUKKyAgICAg
ICAgICAgIGNvbnRhaW5zIGluY29ycmVjdCB2YWx1ZXMKKworICAgICAgICAiIiIKKyAgICAgICAg
IyBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIGNhbGxlZCBgZnJhbWVgIHJhdGhlciB0aGFuIGBzZWxm
YCwKKyAgICAgICAgIyBidXQgaXQncyB0aGUgaW5zdGFuY2Ugb2YgY2xhc3MgdG8gd2hpY2ggdGhp
cyBtZXRob2QgaXMgYm91bmQuCisKKyAgICAgICAgZnJhbWUuY2hlY2soKQorCisgICAgICAgIGlm
IGV4dGVuc2lvbnMgaXMgTm9uZToKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAg
ICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnM6CisgICAgICAgICAgICBmcmFtZSA9IGV4dGVu
c2lvbi5lbmNvZGUoZnJhbWUpCisKKyAgICAgICAgb3V0cHV0ID0gaW8uQnl0ZXNJTygpCisKKyAg
ICAgICAgIyBQcmVwYXJlIHRoZSBoZWFkZXIuCisgICAgICAgIGhlYWQxID0gKAorICAgICAgICAg
ICAgKDBiMTAwMDAwMDAgaWYgZnJhbWUuZmluIGVsc2UgMCkKKyAgICAgICAgICAgIHwgKDBiMDEw
MDAwMDAgaWYgZnJhbWUucnN2MSBlbHNlIDApCisgICAgICAgICAgICB8ICgwYjAwMTAwMDAwIGlm
IGZyYW1lLnJzdjIgZWxzZSAwKQorICAgICAgICAgICAgfCAoMGIwMDAxMDAwMCBpZiBmcmFtZS5y
c3YzIGVsc2UgMCkKKyAgICAgICAgICAgIHwgZnJhbWUub3Bjb2RlCisgICAgICAgICkKKworICAg
ICAgICBoZWFkMiA9IDBiMTAwMDAwMDAgaWYgbWFzayBlbHNlIDAKKworICAgICAgICBsZW5ndGgg
PSBsZW4oZnJhbWUuZGF0YSkKKyAgICAgICAgaWYgbGVuZ3RoIDwgMTI2OgorICAgICAgICAgICAg
b3V0cHV0LndyaXRlKHN0cnVjdC5wYWNrKCIhQkIiLCBoZWFkMSwgaGVhZDIgfCBsZW5ndGgpKQor
ICAgICAgICBlbGlmIGxlbmd0aCA8IDY1NTM2OgorICAgICAgICAgICAgb3V0cHV0LndyaXRlKHN0
cnVjdC5wYWNrKCIhQkJIIiwgaGVhZDEsIGhlYWQyIHwgMTI2LCBsZW5ndGgpKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgb3V0cHV0LndyaXRlKHN0cnVjdC5wYWNrKCIhQkJRIiwgaGVhZDEs
IGhlYWQyIHwgMTI3LCBsZW5ndGgpKQorCisgICAgICAgIGlmIG1hc2s6CisgICAgICAgICAgICBt
YXNrX2JpdHMgPSBzdHJ1Y3QucGFjaygiIUkiLCByYW5kb20uZ2V0cmFuZGJpdHMoMzIpKQorICAg
ICAgICAgICAgb3V0cHV0LndyaXRlKG1hc2tfYml0cykKKworICAgICAgICAjIFByZXBhcmUgdGhl
IGRhdGEuCisgICAgICAgIGlmIG1hc2s6CisgICAgICAgICAgICBkYXRhID0gYXBwbHlfbWFzayhm
cmFtZS5kYXRhLCBtYXNrX2JpdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0g
ZnJhbWUuZGF0YQorICAgICAgICBvdXRwdXQud3JpdGUoZGF0YSkKKworICAgICAgICAjIFNlbmQg
dGhlIGZyYW1lLgorCisgICAgICAgICMgVGhlIGZyYW1lIGlzIHdyaXR0ZW4gaW4gYSBzaW5nbGUg
Y2FsbCB0byB3cml0ZSBpbiBvcmRlciB0byBwcmV2ZW50CisgICAgICAgICMgVENQIGZyYWdtZW50
YXRpb24uIFNlZSAjNjggZm9yIGRldGFpbHMuIFRoaXMgYWxzbyBtYWtlcyBpdCBzYWZlIHRvCisg
ICAgICAgICMgc2VuZCBmcmFtZXMgY29uY3VycmVudGx5IGZyb20gbXVsdGlwbGUgY29yb3V0aW5l
cy4KKyAgICAgICAgd3JpdGUob3V0cHV0LmdldHZhbHVlKCkpCisKKyAgICBkZWYgY2hlY2soZnJh
bWUpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IHJlc2VydmVkIGJp
dHMgYW5kIG9wY29kZSBoYXZlIGFjY2VwdGFibGUgdmFsdWVzLgorCisgICAgICAgIDpyYWlzZXMg
fndlYnNvY2tldHMuZXhjZXB0aW9ucy5Qcm90b2NvbEVycm9yOiBpZiBhIHJlc2VydmVkCisgICAg
ICAgICAgICBiaXQgb3IgdGhlIG9wY29kZSBpcyBpbnZhbGlkCisKKyAgICAgICAgIiIiCisgICAg
ICAgICMgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBjYWxsZWQgYGZyYW1lYCByYXRoZXIgdGhhbiBg
c2VsZmAsCisgICAgICAgICMgYnV0IGl0J3MgdGhlIGluc3RhbmNlIG9mIGNsYXNzIHRvIHdoaWNo
IHRoaXMgbWV0aG9kIGlzIGJvdW5kLgorCisgICAgICAgIGlmIGZyYW1lLnJzdjEgb3IgZnJhbWUu
cnN2MiBvciBmcmFtZS5yc3YzOgorICAgICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigicmVz
ZXJ2ZWQgYml0cyBtdXN0IGJlIDAiKQorCisgICAgICAgIGlmIGZyYW1lLm9wY29kZSBpbiBEQVRB
X09QQ09ERVM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxpZiBmcmFtZS5vcGNvZGUg
aW4gQ1RSTF9PUENPREVTOgorICAgICAgICAgICAgaWYgbGVuKGZyYW1lLmRhdGEpID4gMTI1Ogor
ICAgICAgICAgICAgICAgIHJhaXNlIFByb3RvY29sRXJyb3IoImNvbnRyb2wgZnJhbWUgdG9vIGxv
bmciKQorICAgICAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICByYWlz
ZSBQcm90b2NvbEVycm9yKCJmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWUiKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcihmImludmFsaWQgb3Bjb2RlOiB7ZnJh
bWUub3Bjb2RlfSIpCisKKworZGVmIHByZXBhcmVfZGF0YShkYXRhOiBEYXRhKSAtPiBUdXBsZVtp
bnQsIGJ5dGVzXToKKyAgICAiIiIKKyAgICBDb252ZXJ0IGEgc3RyaW5nIG9yIGJ5dGUtbGlrZSBv
YmplY3QgdG8gYW4gb3Bjb2RlIGFuZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LgorCisgICAgVGhpcyBm
dW5jdGlvbiBpcyBkZXNpZ25lZCBmb3IgZGF0YSBmcmFtZXMuCisKKyAgICBJZiBgYGRhdGFgYCBp
cyBhIDpjbGFzczpgc3RyYCwgcmV0dXJuIGBgT1BfVEVYVGBgIGFuZCBhIDpjbGFzczpgYnl0ZXNg
CisgICAgb2JqZWN0IGVuY29kaW5nIGBgZGF0YWBgIGluIFVURi04LgorCisgICAgSWYgYGBkYXRh
YGAgaXMgYSBieXRlcy1saWtlIG9iamVjdCwgcmV0dXJuIGBgT1BfQklOQVJZYGAgYW5kIGEgYnl0
ZXMtbGlrZQorICAgIG9iamVjdC4KKworICAgIDpyYWlzZXMgVHlwZUVycm9yOiBpZiBgYGRhdGFg
YCBkb2Vzbid0IGhhdmUgYSBzdXBwb3J0ZWQgdHlwZQorCisgICAgIiIiCisgICAgaWYgaXNpbnN0
YW5jZShkYXRhLCBzdHIpOgorICAgICAgICByZXR1cm4gT1BfVEVYVCwgZGF0YS5lbmNvZGUoInV0
Zi04IikKKyAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKKyAg
ICAgICAgcmV0dXJuIE9QX0JJTkFSWSwgZGF0YQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhLCBt
ZW1vcnl2aWV3KToKKyAgICAgICAgaWYgZGF0YS5jX2NvbnRpZ3VvdXM6CisgICAgICAgICAgICBy
ZXR1cm4gT1BfQklOQVJZLCBkYXRhCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
T1BfQklOQVJZLCBkYXRhLnRvYnl0ZXMoKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVF
cnJvcigiZGF0YSBtdXN0IGJlIGJ5dGVzLWxpa2Ugb3Igc3RyIikKKworCitkZWYgZW5jb2RlX2Rh
dGEoZGF0YTogRGF0YSkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgQ29udmVydCBhIHN0cmluZyBv
ciBieXRlLWxpa2Ugb2JqZWN0IHRvIGJ5dGVzLgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXNp
Z25lZCBmb3IgcGluZyBhbmQgcG9uZyBmcmFtZXMuCisKKyAgICBJZiBgYGRhdGFgYCBpcyBhIDpj
bGFzczpgc3RyYCwgcmV0dXJuIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGVuY29kaW5nCisgICAg
YGBkYXRhYGAgaW4gVVRGLTguCisKKyAgICBJZiBgYGRhdGFgYCBpcyBhIGJ5dGVzLWxpa2Ugb2Jq
ZWN0LCByZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisKKyAgICA6cmFpc2VzIFR5cGVF
cnJvcjogaWYgYGBkYXRhYGAgZG9lc24ndCBoYXZlIGEgc3VwcG9ydGVkIHR5cGUKKworICAgICIi
IgorICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgcmV0dXJuIGRhdGEuZW5j
b2RlKCJ1dGYtOCIpCisgICAgZWxpZiBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5
KSk6CisgICAgICAgIHJldHVybiBieXRlcyhkYXRhKQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRh
LCBtZW1vcnl2aWV3KToKKyAgICAgICAgcmV0dXJuIGRhdGEudG9ieXRlcygpCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYnl0ZXMtbGlrZSBvciBzdHIi
KQorCisKK2RlZiBwYXJzZV9jbG9zZShkYXRhOiBieXRlcykgLT4gVHVwbGVbaW50LCBzdHJdOgor
ICAgICIiIgorICAgIFBhcnNlIHRoZSBwYXlsb2FkIGZyb20gYSBjbG9zZSBmcmFtZS4KKworICAg
IFJldHVybiBgYChjb2RlLCByZWFzb24pYGAuCisKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4
Y2VwdGlvbnMuUHJvdG9jb2xFcnJvcjogaWYgZGF0YSBpcyBpbGwtZm9ybWVkCisgICAgOnJhaXNl
cyBVbmljb2RlRGVjb2RlRXJyb3I6IGlmIHRoZSByZWFzb24gaXNuJ3QgdmFsaWQgVVRGLTgKKwor
ICAgICIiIgorICAgIGxlbmd0aCA9IGxlbihkYXRhKQorICAgIGlmIGxlbmd0aCA+PSAyOgorICAg
ICAgICAoY29kZSwpID0gc3RydWN0LnVucGFjaygiIUgiLCBkYXRhWzoyXSkKKyAgICAgICAgY2hl
Y2tfY2xvc2UoY29kZSkKKyAgICAgICAgcmVhc29uID0gZGF0YVsyOl0uZGVjb2RlKCJ1dGYtOCIp
CisgICAgICAgIHJldHVybiBjb2RlLCByZWFzb24KKyAgICBlbGlmIGxlbmd0aCA9PSAwOgorICAg
ICAgICByZXR1cm4gMTAwNSwgIiIKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgbGVuZ3RoID09
IDEKKyAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigiY2xvc2UgZnJhbWUgdG9vIHNob3J0IikK
KworCitkZWYgc2VyaWFsaXplX2Nsb3NlKGNvZGU6IGludCwgcmVhc29uOiBzdHIpIC0+IGJ5dGVz
OgorICAgICIiIgorICAgIFNlcmlhbGl6ZSB0aGUgcGF5bG9hZCBmb3IgYSBjbG9zZSBmcmFtZS4K
KworICAgIFRoaXMgaXMgdGhlIHJldmVyc2Ugb2YgOmZ1bmM6YHBhcnNlX2Nsb3NlYC4KKworICAg
ICIiIgorICAgIGNoZWNrX2Nsb3NlKGNvZGUpCisgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCIhSCIs
IGNvZGUpICsgcmVhc29uLmVuY29kZSgidXRmLTgiKQorCisKK2RlZiBjaGVja19jbG9zZShjb2Rl
OiBpbnQpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2hlY2sgdGhhdCB0aGUgY2xvc2UgY29kZSBo
YXMgYW4gYWNjZXB0YWJsZSB2YWx1ZSBmb3IgYSBjbG9zZSBmcmFtZS4KKworICAgIDpyYWlzZXMg
fndlYnNvY2tldHMuZXhjZXB0aW9ucy5Qcm90b2NvbEVycm9yOiBpZiB0aGUgY2xvc2UgY29kZQor
ICAgICAgICBpcyBpbnZhbGlkCisKKyAgICAiIiIKKyAgICBpZiBub3QgKGNvZGUgaW4gRVhURVJO
QUxfQ0xPU0VfQ09ERVMgb3IgMzAwMCA8PSBjb2RlIDwgNTAwMCk6CisgICAgICAgIHJhaXNlIFBy
b3RvY29sRXJyb3IoImludmFsaWQgc3RhdHVzIGNvZGUiKQorCisKKyMgYXQgdGhlIGJvdHRvbSB0
byBhbGxvdyBjaXJjdWxhciBpbXBvcnQsIGJlY2F1c2UgRXh0ZW5zaW9uIGRlcGVuZHMgb24gRnJh
bWUKK2ltcG9ydCB3ZWJzb2NrZXRzLmV4dGVuc2lvbnMuYmFzZSAgIyBpc29ydDpza2lwICMgbm9x
YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2hhbmRzaGFrZS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9oYW5kc2hha2UucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YmZlMjc3NTRmYTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvaGFuZHNoYWtlLnB5CkBAIC0w
LDAgKzEsMTg1IEBACisiIiIKKzptb2Q6YHdlYnNvY2tldHMuaGFuZHNoYWtlYCBwcm92aWRlcyBo
ZWxwZXJzIGZvciB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4KKworU2VlIGBzZWN0aW9uIDQgb2Yg
UkZDIDY0NTVgXy4KKworLi4gX3NlY3Rpb24gNCBvZiBSRkMgNjQ1NTogaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTQKKworU29tZSBjaGVja3MgY2Fubm90IGJlIHBl
cmZvcm1lZCBiZWNhdXNlIHRoZXkgZGVwZW5kIHRvbyBtdWNoIG9uIHRoZQorY29udGV4dDsgaW5z
dGVhZCwgdGhleSdyZSBkb2N1bWVudGVkIGJlbG93LgorCitUbyBhY2NlcHQgYSBjb25uZWN0aW9u
LCBhIHNlcnZlciBtdXN0OgorCistIFJlYWQgdGhlIHJlcXVlc3QsIGNoZWNrIHRoYXQgdGhlIG1l
dGhvZCBpcyBHRVQsIGFuZCBjaGVjayB0aGUgaGVhZGVycyB3aXRoCisgIDpmdW5jOmBjaGVja19y
ZXF1ZXN0YCwKKy0gU2VuZCBhIDEwMSByZXNwb25zZSB0byB0aGUgY2xpZW50IHdpdGggdGhlIGhl
YWRlcnMgY3JlYXRlZCBieQorICA6ZnVuYzpgYnVpbGRfcmVzcG9uc2VgIGlmIHRoZSByZXF1ZXN0
IGlzIHZhbGlkOyBvdGhlcndpc2UsIHNlbmQgYW4KKyAgYXBwcm9wcmlhdGUgSFRUUCBlcnJvciBj
b2RlLgorCitUbyBvcGVuIGEgY29ubmVjdGlvbiwgYSBjbGllbnQgbXVzdDoKKworLSBTZW5kIGEg
R0VUIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoZWFkZXJzIGNyZWF0ZWQgYnkKKyAg
OmZ1bmM6YGJ1aWxkX3JlcXVlc3RgLAorLSBSZWFkIHRoZSByZXNwb25zZSwgY2hlY2sgdGhhdCB0
aGUgc3RhdHVzIGNvZGUgaXMgMTAxLCBhbmQgY2hlY2sgdGhlIGhlYWRlcnMKKyAgd2l0aCA6ZnVu
YzpgY2hlY2tfcmVzcG9uc2VgLgorCisiIiIKKworaW1wb3J0IGJhc2U2NAoraW1wb3J0IGJpbmFz
Y2lpCitpbXBvcnQgaGFzaGxpYgoraW1wb3J0IHJhbmRvbQorZnJvbSB0eXBpbmcgaW1wb3J0IExp
c3QKKworZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEhlYWRlciwgSW52YWxpZEhlYWRl
clZhbHVlLCBJbnZhbGlkVXBncmFkZQorZnJvbSAuaGVhZGVycyBpbXBvcnQgQ29ubmVjdGlvbk9w
dGlvbiwgVXBncmFkZVByb3RvY29sLCBwYXJzZV9jb25uZWN0aW9uLCBwYXJzZV91cGdyYWRlCitm
cm9tIC5odHRwIGltcG9ydCBIZWFkZXJzLCBNdWx0aXBsZVZhbHVlc0Vycm9yCisKKworX19hbGxf
XyA9IFsiYnVpbGRfcmVxdWVzdCIsICJjaGVja19yZXF1ZXN0IiwgImJ1aWxkX3Jlc3BvbnNlIiwg
ImNoZWNrX3Jlc3BvbnNlIl0KKworR1VJRCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFC
MERDODVCMTEiCisKKworZGVmIGJ1aWxkX3JlcXVlc3QoaGVhZGVyczogSGVhZGVycykgLT4gc3Ry
OgorICAgICIiIgorICAgIEJ1aWxkIGEgaGFuZHNoYWtlIHJlcXVlc3QgdG8gc2VuZCB0byB0aGUg
c2VydmVyLgorCisgICAgVXBkYXRlIHJlcXVlc3QgaGVhZGVycyBwYXNzZWQgaW4gYXJndW1lbnQu
CisKKyAgICA6cGFyYW0gaGVhZGVyczogcmVxdWVzdCBoZWFkZXJzCisgICAgOnJldHVybnM6IGBg
a2V5YGAgd2hpY2ggbXVzdCBiZSBwYXNzZWQgdG8gOmZ1bmM6YGNoZWNrX3Jlc3BvbnNlYAorCisg
ICAgIiIiCisgICAgcmF3X2tleSA9IGJ5dGVzKHJhbmRvbS5nZXRyYW5kYml0cyg4KSBmb3IgXyBp
biByYW5nZSgxNikpCisgICAga2V5ID0gYmFzZTY0LmI2NGVuY29kZShyYXdfa2V5KS5kZWNvZGUo
KQorICAgIGhlYWRlcnNbIlVwZ3JhZGUiXSA9ICJ3ZWJzb2NrZXQiCisgICAgaGVhZGVyc1siQ29u
bmVjdGlvbiJdID0gIlVwZ3JhZGUiCisgICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXSA9
IGtleQorICAgIGhlYWRlcnNbIlNlYy1XZWJTb2NrZXQtVmVyc2lvbiJdID0gIjEzIgorICAgIHJl
dHVybiBrZXkKKworCitkZWYgY2hlY2tfcmVxdWVzdChoZWFkZXJzOiBIZWFkZXJzKSAtPiBzdHI6
CisgICAgIiIiCisgICAgQ2hlY2sgYSBoYW5kc2hha2UgcmVxdWVzdCByZWNlaXZlZCBmcm9tIHRo
ZSBjbGllbnQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgdmVyaWZ5IHRoYXQgdGhlIHJl
cXVlc3QgaXMgYW4gSFRUUC8xLjEgb3IgaGlnaGVyIEdFVAorICAgIHJlcXVlc3QgYW5kIGRvZXNu
J3QgcGVyZm9ybSBgYEhvc3RgYCBhbmQgYGBPcmlnaW5gYCBjaGVja3MuIFRoZXNlIGNvbnRyb2xz
CisgICAgYXJlIHVzdWFsbHkgcGVyZm9ybWVkIGVhcmxpZXIgaW4gdGhlIEhUVFAgcmVxdWVzdCBo
YW5kbGluZyBjb2RlLiBUaGV5J3JlCisgICAgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxs
ZXIuCisKKyAgICA6cGFyYW0gaGVhZGVyczogcmVxdWVzdCBoZWFkZXJzCisgICAgOnJldHVybnM6
IGBga2V5YGAgd2hpY2ggbXVzdCBiZSBwYXNzZWQgdG8gOmZ1bmM6YGJ1aWxkX3Jlc3BvbnNlYAor
ICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkSGFuZHNoYWtlOiBpZiB0
aGUgaGFuZHNoYWtlIHJlcXVlc3QKKyAgICAgICAgaXMgaW52YWxpZDsgdGhlbiB0aGUgc2VydmVy
IG11c3QgcmV0dXJuIDQwMCBCYWQgUmVxdWVzdCBlcnJvcgorCisgICAgIiIiCisgICAgY29ubmVj
dGlvbjogTGlzdFtDb25uZWN0aW9uT3B0aW9uXSA9IHN1bSgKKyAgICAgICAgW3BhcnNlX2Nvbm5l
Y3Rpb24odmFsdWUpIGZvciB2YWx1ZSBpbiBoZWFkZXJzLmdldF9hbGwoIkNvbm5lY3Rpb24iKV0s
IFtdCisgICAgKQorCisgICAgaWYgbm90IGFueSh2YWx1ZS5sb3dlcigpID09ICJ1cGdyYWRlIiBm
b3IgdmFsdWUgaW4gY29ubmVjdGlvbik6CisgICAgICAgIHJhaXNlIEludmFsaWRVcGdyYWRlKCJD
b25uZWN0aW9uIiwgIiwgIi5qb2luKGNvbm5lY3Rpb24pKQorCisgICAgdXBncmFkZTogTGlzdFtV
cGdyYWRlUHJvdG9jb2xdID0gc3VtKAorICAgICAgICBbcGFyc2VfdXBncmFkZSh2YWx1ZSkgZm9y
IHZhbHVlIGluIGhlYWRlcnMuZ2V0X2FsbCgiVXBncmFkZSIpXSwgW10KKyAgICApCisKKyAgICAj
IEZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLXN0cmljdCBpbXBsZW1lbnRhdGlvbnMsIGlnbm9y
ZSBjYXNlIHdoZW4KKyAgICAjIGNoZWNraW5nIHRoZSBVcGdyYWRlIGhlYWRlci4gSXQncyBzdXBw
b3NlZCB0byBiZSAnV2ViU29ja2V0Jy4KKyAgICBpZiBub3QgKGxlbih1cGdyYWRlKSA9PSAxIGFu
ZCB1cGdyYWRlWzBdLmxvd2VyKCkgPT0gIndlYnNvY2tldCIpOgorICAgICAgICByYWlzZSBJbnZh
bGlkVXBncmFkZSgiVXBncmFkZSIsICIsICIuam9pbih1cGdyYWRlKSkKKworICAgIHRyeToKKyAg
ICAgICAgc193X2tleSA9IGhlYWRlcnNbIlNlYy1XZWJTb2NrZXQtS2V5Il0KKyAgICBleGNlcHQg
S2V5RXJyb3I6CisgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXIoIlNlYy1XZWJTb2NrZXQtS2V5
IikKKyAgICBleGNlcHQgTXVsdGlwbGVWYWx1ZXNFcnJvcjoKKyAgICAgICAgcmFpc2UgSW52YWxp
ZEhlYWRlcigKKyAgICAgICAgICAgICJTZWMtV2ViU29ja2V0LUtleSIsICJtb3JlIHRoYW4gb25l
IFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBmb3VuZCIKKyAgICAgICAgKQorCisgICAgdHJ5Ogor
ICAgICAgICByYXdfa2V5ID0gYmFzZTY0LmI2NGRlY29kZShzX3dfa2V5LmVuY29kZSgpLCB2YWxp
ZGF0ZT1UcnVlKQorICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKKyAgICAgICAgcmFpc2UgSW52
YWxpZEhlYWRlclZhbHVlKCJTZWMtV2ViU29ja2V0LUtleSIsIHNfd19rZXkpCisgICAgaWYgbGVu
KHJhd19rZXkpICE9IDE2OgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoIlNlYy1X
ZWJTb2NrZXQtS2V5Iiwgc193X2tleSkKKworICAgIHRyeToKKyAgICAgICAgc193X3ZlcnNpb24g
PSBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LVZlcnNpb24iXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoK
KyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlcigiU2VjLVdlYlNvY2tldC1WZXJzaW9uIikKKyAg
ICBleGNlcHQgTXVsdGlwbGVWYWx1ZXNFcnJvcjoKKyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRl
cigKKyAgICAgICAgICAgICJTZWMtV2ViU29ja2V0LVZlcnNpb24iLCAibW9yZSB0aGFuIG9uZSBT
ZWMtV2ViU29ja2V0LVZlcnNpb24gaGVhZGVyIGZvdW5kIgorICAgICAgICApCisKKyAgICBpZiBz
X3dfdmVyc2lvbiAhPSAiMTMiOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoIlNl
Yy1XZWJTb2NrZXQtVmVyc2lvbiIsIHNfd192ZXJzaW9uKQorCisgICAgcmV0dXJuIHNfd19rZXkK
KworCitkZWYgYnVpbGRfcmVzcG9uc2UoaGVhZGVyczogSGVhZGVycywga2V5OiBzdHIpIC0+IE5v
bmU6CisgICAgIiIiCisgICAgQnVpbGQgYSBoYW5kc2hha2UgcmVzcG9uc2UgdG8gc2VuZCB0byB0
aGUgY2xpZW50LgorCisgICAgVXBkYXRlIHJlc3BvbnNlIGhlYWRlcnMgcGFzc2VkIGluIGFyZ3Vt
ZW50LgorCisgICAgOnBhcmFtIGhlYWRlcnM6IHJlc3BvbnNlIGhlYWRlcnMKKyAgICA6cGFyYW0g
a2V5OiBjb21lcyBmcm9tIDpmdW5jOmBjaGVja19yZXF1ZXN0YAorCisgICAgIiIiCisgICAgaGVh
ZGVyc1siVXBncmFkZSJdID0gIndlYnNvY2tldCIKKyAgICBoZWFkZXJzWyJDb25uZWN0aW9uIl0g
PSAiVXBncmFkZSIKKyAgICBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdID0gYWNjZXB0
KGtleSkKKworCitkZWYgY2hlY2tfcmVzcG9uc2UoaGVhZGVyczogSGVhZGVycywga2V5OiBzdHIp
IC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2hlY2sgYSBoYW5kc2hha2UgcmVzcG9uc2UgcmVjZWl2
ZWQgZnJvbSB0aGUgc2VydmVyLgorCisgICAgVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHZlcmlmeSB0
aGF0IHRoZSByZXNwb25zZSBpcyBhbiBIVFRQLzEuMSBvciBoaWdoZXIKKyAgICByZXNwb25zZSB3
aXRoIGEgMTAxIHN0YXR1cyBjb2RlLiBUaGVzZSBjb250cm9scyBhcmUgdGhlIHJlc3BvbnNpYmls
aXR5IG9mCisgICAgdGhlIGNhbGxlci4KKworICAgIDpwYXJhbSBoZWFkZXJzOiByZXNwb25zZSBo
ZWFkZXJzCisgICAgOnBhcmFtIGtleTogY29tZXMgZnJvbSA6ZnVuYzpgYnVpbGRfcmVxdWVzdGAK
KyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZEhhbmRzaGFrZTogaWYg
dGhlIGhhbmRzaGFrZSByZXNwb25zZQorICAgICAgICBpcyBpbnZhbGlkCisKKyAgICAiIiIKKyAg
ICBjb25uZWN0aW9uOiBMaXN0W0Nvbm5lY3Rpb25PcHRpb25dID0gc3VtKAorICAgICAgICBbcGFy
c2VfY29ubmVjdGlvbih2YWx1ZSkgZm9yIHZhbHVlIGluIGhlYWRlcnMuZ2V0X2FsbCgiQ29ubmVj
dGlvbiIpXSwgW10KKyAgICApCisKKyAgICBpZiBub3QgYW55KHZhbHVlLmxvd2VyKCkgPT0gInVw
Z3JhZGUiIGZvciB2YWx1ZSBpbiBjb25uZWN0aW9uKToKKyAgICAgICAgcmFpc2UgSW52YWxpZFVw
Z3JhZGUoIkNvbm5lY3Rpb24iLCAiICIuam9pbihjb25uZWN0aW9uKSkKKworICAgIHVwZ3JhZGU6
IExpc3RbVXBncmFkZVByb3RvY29sXSA9IHN1bSgKKyAgICAgICAgW3BhcnNlX3VwZ3JhZGUodmFs
dWUpIGZvciB2YWx1ZSBpbiBoZWFkZXJzLmdldF9hbGwoIlVwZ3JhZGUiKV0sIFtdCisgICAgKQor
CisgICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1zdHJpY3QgaW1wbGVtZW50YXRpb25z
LCBpZ25vcmUgY2FzZSB3aGVuCisgICAgIyBjaGVja2luZyB0aGUgVXBncmFkZSBoZWFkZXIuIEl0
J3Mgc3VwcG9zZWQgdG8gYmUgJ1dlYlNvY2tldCcuCisgICAgaWYgbm90IChsZW4odXBncmFkZSkg
PT0gMSBhbmQgdXBncmFkZVswXS5sb3dlcigpID09ICJ3ZWJzb2NrZXQiKToKKyAgICAgICAgcmFp
c2UgSW52YWxpZFVwZ3JhZGUoIlVwZ3JhZGUiLCAiLCAiLmpvaW4odXBncmFkZSkpCisKKyAgICB0
cnk6CisgICAgICAgIHNfd19hY2NlcHQgPSBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJd
CisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyKCJTZWMt
V2ViU29ja2V0LUFjY2VwdCIpCisgICAgZXhjZXB0IE11bHRpcGxlVmFsdWVzRXJyb3I6CisgICAg
ICAgIHJhaXNlIEludmFsaWRIZWFkZXIoCisgICAgICAgICAgICAiU2VjLVdlYlNvY2tldC1BY2Nl
cHQiLCAibW9yZSB0aGFuIG9uZSBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIgZm91bmQiCisg
ICAgICAgICkKKworICAgIGlmIHNfd19hY2NlcHQgIT0gYWNjZXB0KGtleSk6CisgICAgICAgIHJh
aXNlIEludmFsaWRIZWFkZXJWYWx1ZSgiU2VjLVdlYlNvY2tldC1BY2NlcHQiLCBzX3dfYWNjZXB0
KQorCisKK2RlZiBhY2NlcHQoa2V5OiBzdHIpIC0+IHN0cjoKKyAgICBzaGExID0gaGFzaGxpYi5z
aGExKChrZXkgKyBHVUlEKS5lbmNvZGUoKSkuZGlnZXN0KCkKKyAgICByZXR1cm4gYmFzZTY0LmI2
NGVuY29kZShzaGExKS5kZWNvZGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93
ZWJzb2NrZXRzL2hlYWRlcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvaGVh
ZGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzM2M5NGMw
NDY0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9o
ZWFkZXJzLnB5CkBAIC0wLDAgKzEsNTE1IEBACisiIiIKKzptb2Q6YHdlYnNvY2tldHMuaGVhZGVy
c2AgcHJvdmlkZXMgcGFyc2VycyBhbmQgc2VyaWFsaXplcnMgZm9yIEhUVFAgaGVhZGVycwordXNl
ZCBpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIG1lc3NhZ2VzLgorCitUaGVzZSBBUElzIGNhbm5vdCBi
ZSBpbXBvcnRlZCBmcm9tIDptb2Q6YHdlYnNvY2tldHNgLiBUaGV5IG11c3QgYmUgaW1wb3J0ZWQK
K2Zyb20gOm1vZDpgd2Vic29ja2V0cy5oZWFkZXJzYC4KKworIiIiCisKK2ltcG9ydCBiYXNlNjQK
K2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IHJlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUs
IExpc3QsIE5ld1R5cGUsIE9wdGlvbmFsLCBTZXF1ZW5jZSwgVHVwbGUsIFR5cGVWYXIsIGNhc3QK
KworZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEhlYWRlckZvcm1hdCwgSW52YWxpZEhl
YWRlclZhbHVlCitmcm9tIC50eXBpbmcgaW1wb3J0IEV4dGVuc2lvbkhlYWRlciwgRXh0ZW5zaW9u
TmFtZSwgRXh0ZW5zaW9uUGFyYW1ldGVyLCBTdWJwcm90b2NvbAorCisKK19fYWxsX18gPSBbCisg
ICAgInBhcnNlX2Nvbm5lY3Rpb24iLAorICAgICJwYXJzZV91cGdyYWRlIiwKKyAgICAicGFyc2Vf
ZXh0ZW5zaW9uIiwKKyAgICAiYnVpbGRfZXh0ZW5zaW9uIiwKKyAgICAicGFyc2Vfc3VicHJvdG9j
b2wiLAorICAgICJidWlsZF9zdWJwcm90b2NvbCIsCisgICAgImJ1aWxkX3d3d19hdXRoZW50aWNh
dGVfYmFzaWMiLAorICAgICJwYXJzZV9hdXRob3JpemF0aW9uX2Jhc2ljIiwKKyAgICAiYnVpbGRf
YXV0aG9yaXphdGlvbl9iYXNpYyIsCitdCisKKworVCA9IFR5cGVWYXIoIlQiKQorCitDb25uZWN0
aW9uT3B0aW9uID0gTmV3VHlwZSgiQ29ubmVjdGlvbk9wdGlvbiIsIHN0cikKK1VwZ3JhZGVQcm90
b2NvbCA9IE5ld1R5cGUoIlVwZ3JhZGVQcm90b2NvbCIsIHN0cikKKworCisjIFRvIGF2b2lkIGEg
ZGVwZW5kZW5jeSBvbiBhIHBhcnNpbmcgbGlicmFyeSwgd2UgaW1wbGVtZW50IG1hbnVhbGx5IHRo
ZSBBQk5GCisjIGRlc2NyaWJlZCBpbiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1
NSNzZWN0aW9uLTkuMSB3aXRoIHRoZQorIyBkZWZpbml0aW9ucyBmcm9tIGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM3MjMwI2FwcGVuZGl4LUIuCisKKworZGVmIHBlZWtfYWhlYWQoaGVh
ZGVyOiBzdHIsIHBvczogaW50KSAtPiBPcHRpb25hbFtzdHJdOgorICAgICIiIgorICAgIFJldHVy
biB0aGUgbmV4dCBjaGFyYWN0ZXIgZnJvbSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlv
bi4KKworICAgIFJldHVybiBgYE5vbmVgYCBhdCB0aGUgZW5kIG9mIGBgaGVhZGVyYGAuCisKKyAg
ICBXZSBuZXZlciBuZWVkIHRvIHBlZWsgbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgYWhlYWQuCisK
KyAgICAiIiIKKyAgICByZXR1cm4gTm9uZSBpZiBwb3MgPT0gbGVuKGhlYWRlcikgZWxzZSBoZWFk
ZXJbcG9zXQorCisKK19PV1NfcmUgPSByZS5jb21waWxlKHIiW1x0IF0qIikKKworCitkZWYgcGFy
c2VfT1dTKGhlYWRlcjogc3RyLCBwb3M6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFBhcnNl
IG9wdGlvbmFsIHdoaXRlc3BhY2UgZnJvbSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlv
bi4KKworICAgIFJldHVybiB0aGUgbmV3IHBvc2l0aW9uLgorCisgICAgVGhlIHdoaXRlc3BhY2Ug
aXRzZWxmIGlzbid0IHJldHVybmVkIGJlY2F1c2UgaXQgaXNuJ3Qgc2lnbmlmaWNhbnQuCisKKyAg
ICAiIiIKKyAgICAjIFRoZXJlJ3MgYWx3YXlzIGEgbWF0Y2gsIHBvc3NpYmx5IGVtcHR5LCB3aG9z
ZSBjb250ZW50IGRvZXNuJ3QgbWF0dGVyLgorICAgIG1hdGNoID0gX09XU19yZS5tYXRjaChoZWFk
ZXIsIHBvcykKKyAgICBhc3NlcnQgbWF0Y2ggaXMgbm90IE5vbmUKKyAgICByZXR1cm4gbWF0Y2gu
ZW5kKCkKKworCitfdG9rZW5fcmUgPSByZS5jb21waWxlKHIiWy0hIyQlJlwnKisuXl9gfH4wLTlh
LXpBLVpdKyIpCisKKworZGVmIHBhcnNlX3Rva2VuKGhlYWRlcjogc3RyLCBwb3M6IGludCwgaGVh
ZGVyX25hbWU6IHN0cikgLT4gVHVwbGVbc3RyLCBpbnRdOgorICAgICIiIgorICAgIFBhcnNlIGEg
dG9rZW4gZnJvbSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVy
biB0aGUgdG9rZW4gdmFsdWUgYW5kIHRoZSBuZXcgcG9zaXRpb24uCisKKyAgICA6cmFpc2VzIH53
ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZEhlYWRlckZvcm1hdDogb24gaW52YWxpZCBpbnB1
dHMuCisKKyAgICAiIiIKKyAgICBtYXRjaCA9IF90b2tlbl9yZS5tYXRjaChoZWFkZXIsIHBvcykK
KyAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0
KGhlYWRlcl9uYW1lLCAiZXhwZWN0ZWQgdG9rZW4iLCBoZWFkZXIsIHBvcykKKyAgICByZXR1cm4g
bWF0Y2guZ3JvdXAoKSwgbWF0Y2guZW5kKCkKKworCitfcXVvdGVkX3N0cmluZ19yZSA9IHJlLmNv
bXBpbGUoCisgICAgciciKD86W1x4MDlceDIwLVx4MjFceDIzLVx4NWJceDVkLVx4N2VdfFxcW1x4
MDlceDIwLVx4N2VceDgwLVx4ZmZdKSoiJworKQorCisKK191bnF1b3RlX3JlID0gcmUuY29tcGls
ZShyIlxcKFtceDA5XHgyMC1ceDdlXHg4MC1ceGZmXSkiKQorCisKK2RlZiBwYXJzZV9xdW90ZWRf
c3RyaW5nKGhlYWRlcjogc3RyLCBwb3M6IGludCwgaGVhZGVyX25hbWU6IHN0cikgLT4gVHVwbGVb
c3RyLCBpbnRdOgorICAgICIiIgorICAgIFBhcnNlIGEgcXVvdGVkIHN0cmluZyBmcm9tIGBgaGVh
ZGVyYGAgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLgorCisgICAgUmV0dXJuIHRoZSB1bnF1b3RlZCB2
YWx1ZSBhbmQgdGhlIG5ldyBwb3NpdGlvbi4KKworICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhj
ZXB0aW9ucy5JbnZhbGlkSGVhZGVyRm9ybWF0OiBvbiBpbnZhbGlkIGlucHV0cy4KKworICAgICIi
IgorICAgIG1hdGNoID0gX3F1b3RlZF9zdHJpbmdfcmUubWF0Y2goaGVhZGVyLCBwb3MpCisgICAg
aWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlckZvcm1hdChoZWFk
ZXJfbmFtZSwgImV4cGVjdGVkIHF1b3RlZCBzdHJpbmciLCBoZWFkZXIsIHBvcykKKyAgICByZXR1
cm4gX3VucXVvdGVfcmUuc3ViKHIiXDEiLCBtYXRjaC5ncm91cCgpWzE6LTFdKSwgbWF0Y2guZW5k
KCkKKworCitfcXVvdGFibGVfcmUgPSByZS5jb21waWxlKHIiW1x4MDlceDIwLVx4N2VceDgwLVx4
ZmZdKiIpCisKKworX3F1b3RlX3JlID0gcmUuY29tcGlsZShyIihbXHgyMlx4NWNdKSIpCisKKwor
ZGVmIGJ1aWxkX3F1b3RlZF9zdHJpbmcodmFsdWU6IHN0cikgLT4gc3RyOgorICAgICIiIgorICAg
IEZvcm1hdCBgYHZhbHVlYGAgYXMgYSBxdW90ZWQgc3RyaW5nLgorCisgICAgVGhpcyBpcyB0aGUg
cmV2ZXJzZSBvZiA6ZnVuYzpgcGFyc2VfcXVvdGVkX3N0cmluZ2AuCisKKyAgICAiIiIKKyAgICBt
YXRjaCA9IF9xdW90YWJsZV9yZS5mdWxsbWF0Y2godmFsdWUpCisgICAgaWYgbWF0Y2ggaXMgTm9u
ZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBjaGFyYWN0ZXJzIGZvciBxdW90
ZWQtc3RyaW5nIGVuY29kaW5nIikKKyAgICByZXR1cm4gJyInICsgX3F1b3RlX3JlLnN1YihyIlxc
XDEiLCB2YWx1ZSkgKyAnIicKKworCitkZWYgcGFyc2VfbGlzdCgKKyAgICBwYXJzZV9pdGVtOiBD
YWxsYWJsZVtbc3RyLCBpbnQsIHN0cl0sIFR1cGxlW1QsIGludF1dLAorICAgIGhlYWRlcjogc3Ry
LAorICAgIHBvczogaW50LAorICAgIGhlYWRlcl9uYW1lOiBzdHIsCispIC0+IExpc3RbVF06Cisg
ICAgIiIiCisgICAgUGFyc2UgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBmcm9tIGBgaGVhZGVyYGAg
YXQgdGhlIGdpdmVuIHBvc2l0aW9uLgorCisgICAgVGhpcyBpcyBhcHByb3ByaWF0ZSBmb3IgcGFy
c2luZyB2YWx1ZXMgd2l0aCB0aGUgZm9sbG93aW5nIGdyYW1tYXI6CisKKyAgICAgICAgMSNpdGVt
CisKKyAgICBgYHBhcnNlX2l0ZW1gYCBwYXJzZXMgb25lIGl0ZW0uCisKKyAgICBgYGhlYWRlcmBg
IGlzIGFzc3VtZWQgbm90IHRvIHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UuCisKKyAgICAo
VGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCBmb3IgcGFyc2luZyBhbiBlbnRpcmUgaGVhZGVyIHZh
bHVlIGFuZAorICAgIDpmdW5jOmB+d2Vic29ja2V0cy5odHRwLnJlYWRfaGVhZGVyc2Agc3RyaXBz
IHdoaXRlc3BhY2UgZnJvbSB2YWx1ZXMuKQorCisgICAgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcy4K
KworICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkSGVhZGVyRm9ybWF0
OiBvbiBpbnZhbGlkIGlucHV0cy4KKworICAgICIiIgorICAgICMgUGVyIGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tNywgImEgcmVjaXBpZW50IE1VU1QKKyAgICAj
IHBhcnNlIGFuZCBpZ25vcmUgYSByZWFzb25hYmxlIG51bWJlciBvZiBlbXB0eSBsaXN0IGVsZW1l
bnRzIjsgaGVuY2UKKyAgICAjIHdoaWxlIGxvb3BzIHRoYXQgcmVtb3ZlIGV4dHJhIGRlbGltaXRl
cnMuCisKKyAgICAjIFJlbW92ZSBleHRyYSBkZWxpbWl0ZXJzIGJlZm9yZSB0aGUgZmlyc3QgaXRl
bS4KKyAgICB3aGlsZSBwZWVrX2FoZWFkKGhlYWRlciwgcG9zKSA9PSAiLCI6CisgICAgICAgIHBv
cyA9IHBhcnNlX09XUyhoZWFkZXIsIHBvcyArIDEpCisKKyAgICBpdGVtcyA9IFtdCisgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgIyBMb29wIGludmFyaWFudDogYSBpdGVtIHN0YXJ0cyBhdCBwb3Mg
aW4gaGVhZGVyLgorICAgICAgICBpdGVtLCBwb3MgPSBwYXJzZV9pdGVtKGhlYWRlciwgcG9zLCBo
ZWFkZXJfbmFtZSkKKyAgICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0pCisgICAgICAgIHBvcyA9IHBh
cnNlX09XUyhoZWFkZXIsIHBvcykKKworICAgICAgICAjIFdlIG1heSBoYXZlIHJlYWNoZWQgdGhl
IGVuZCBvZiB0aGUgaGVhZGVyLgorICAgICAgICBpZiBwb3MgPT0gbGVuKGhlYWRlcik6CisgICAg
ICAgICAgICBicmVhaworCisgICAgICAgICMgVGhlcmUgbXVzdCBiZSBhIGRlbGltaXRlciBhZnRl
ciBlYWNoIGVsZW1lbnQgZXhjZXB0IHRoZSBsYXN0IG9uZS4KKyAgICAgICAgaWYgcGVla19haGVh
ZChoZWFkZXIsIHBvcykgPT0gIiwiOgorICAgICAgICAgICAgcG9zID0gcGFyc2VfT1dTKGhlYWRl
ciwgcG9zICsgMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRIZWFk
ZXJGb3JtYXQoaGVhZGVyX25hbWUsICJleHBlY3RlZCBjb21tYSIsIGhlYWRlciwgcG9zKQorCisg
ICAgICAgICMgUmVtb3ZlIGV4dHJhIGRlbGltaXRlcnMgYmVmb3JlIHRoZSBuZXh0IGl0ZW0uCisg
ICAgICAgIHdoaWxlIHBlZWtfYWhlYWQoaGVhZGVyLCBwb3MpID09ICIsIjoKKyAgICAgICAgICAg
IHBvcyA9IHBhcnNlX09XUyhoZWFkZXIsIHBvcyArIDEpCisKKyAgICAgICAgIyBXZSBtYXkgaGF2
ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGhlYWRlci4KKyAgICAgICAgaWYgcG9zID09IGxlbiho
ZWFkZXIpOgorICAgICAgICAgICAgYnJlYWsKKworICAgICMgU2luY2Ugd2Ugb25seSBhZHZhbmNl
IGluIHRoZSBoZWFkZXIgYnkgb25lIGNoYXJhY3RlciB3aXRoIHBlZWtfYWhlYWQoKQorICAgICMg
b3Igd2l0aCB0aGUgZW5kIHBvc2l0aW9uIG9mIGEgcmVnZXggbWF0Y2gsIHdlIGNhbid0IG92ZXJz
aG9vdCB0aGUgZW5kLgorICAgIGFzc2VydCBwb3MgPT0gbGVuKGhlYWRlcikKKworICAgIHJldHVy
biBpdGVtcworCisKK2RlZiBwYXJzZV9jb25uZWN0aW9uX29wdGlvbigKKyAgICBoZWFkZXI6IHN0
ciwgcG9zOiBpbnQsIGhlYWRlcl9uYW1lOiBzdHIKKykgLT4gVHVwbGVbQ29ubmVjdGlvbk9wdGlv
biwgaW50XToKKyAgICAiIiIKKyAgICBQYXJzZSBhIENvbm5lY3Rpb24gb3B0aW9uIGZyb20gYGBo
ZWFkZXJgYCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBSZXR1cm4gdGhlIHByb3RvY29s
IHZhbHVlIGFuZCB0aGUgbmV3IHBvc2l0aW9uLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5l
eGNlcHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAg
IiIiCisgICAgaXRlbSwgcG9zID0gcGFyc2VfdG9rZW4oaGVhZGVyLCBwb3MsIGhlYWRlcl9uYW1l
KQorICAgIHJldHVybiBjYXN0KENvbm5lY3Rpb25PcHRpb24sIGl0ZW0pLCBwb3MKKworCitkZWYg
cGFyc2VfY29ubmVjdGlvbihoZWFkZXI6IHN0cikgLT4gTGlzdFtDb25uZWN0aW9uT3B0aW9uXToK
KyAgICAiIiIKKyAgICBQYXJzZSBhIGBgQ29ubmVjdGlvbmBgIGhlYWRlci4KKworICAgIFJldHVy
biBhIGxpc3Qgb2YgSFRUUCBjb25uZWN0aW9uIG9wdGlvbnMuCisKKyAgICA6cGFyYW0gaGVhZGVy
OiB2YWx1ZSBvZiB0aGUgYGBDb25uZWN0aW9uYGAgaGVhZGVyCisgICAgOnJhaXNlcyB+d2Vic29j
a2V0cy5leGNlcHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgor
CisgICAgIiIiCisgICAgcmV0dXJuIHBhcnNlX2xpc3QocGFyc2VfY29ubmVjdGlvbl9vcHRpb24s
IGhlYWRlciwgMCwgIkNvbm5lY3Rpb24iKQorCisKK19wcm90b2NvbF9yZSA9IHJlLmNvbXBpbGUo
CisgICAgciJbLSEjJCUmXCcqKy5eX2B8fjAtOWEtekEtWl0rKD86L1stISMkJSZcJyorLl5fYHx+
MC05YS16QS1aXSspPyIKKykKKworCitkZWYgcGFyc2VfdXBncmFkZV9wcm90b2NvbCgKKyAgICBo
ZWFkZXI6IHN0ciwgcG9zOiBpbnQsIGhlYWRlcl9uYW1lOiBzdHIKKykgLT4gVHVwbGVbVXBncmFk
ZVByb3RvY29sLCBpbnRdOgorICAgICIiIgorICAgIFBhcnNlIGFuIFVwZ3JhZGUgcHJvdG9jb2wg
ZnJvbSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVybiB0aGUg
cHJvdG9jb2wgdmFsdWUgYW5kIHRoZSBuZXcgcG9zaXRpb24uCisKKyAgICA6cmFpc2VzIH53ZWJz
b2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZEhlYWRlckZvcm1hdDogb24gaW52YWxpZCBpbnB1dHMu
CisKKyAgICAiIiIKKyAgICBtYXRjaCA9IF9wcm90b2NvbF9yZS5tYXRjaChoZWFkZXIsIHBvcykK
KyAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0
KGhlYWRlcl9uYW1lLCAiZXhwZWN0ZWQgcHJvdG9jb2wiLCBoZWFkZXIsIHBvcykKKyAgICByZXR1
cm4gY2FzdChVcGdyYWRlUHJvdG9jb2wsIG1hdGNoLmdyb3VwKCkpLCBtYXRjaC5lbmQoKQorCisK
K2RlZiBwYXJzZV91cGdyYWRlKGhlYWRlcjogc3RyKSAtPiBMaXN0W1VwZ3JhZGVQcm90b2NvbF06
CisgICAgIiIiCisgICAgUGFyc2UgYW4gYGBVcGdyYWRlYGAgaGVhZGVyLgorCisgICAgUmV0dXJu
IGEgbGlzdCBvZiBIVFRQIHByb3RvY29scy4KKworICAgIDpwYXJhbSBoZWFkZXI6IHZhbHVlIG9m
IHRoZSBgYFVwZ3JhZGVgYCBoZWFkZXIKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlv
bnMuSW52YWxpZEhlYWRlckZvcm1hdDogb24gaW52YWxpZCBpbnB1dHMuCisKKyAgICAiIiIKKyAg
ICByZXR1cm4gcGFyc2VfbGlzdChwYXJzZV91cGdyYWRlX3Byb3RvY29sLCBoZWFkZXIsIDAsICJV
cGdyYWRlIikKKworCitkZWYgcGFyc2VfZXh0ZW5zaW9uX2l0ZW1fcGFyYW0oCisgICAgaGVhZGVy
OiBzdHIsIHBvczogaW50LCBoZWFkZXJfbmFtZTogc3RyCispIC0+IFR1cGxlW0V4dGVuc2lvblBh
cmFtZXRlciwgaW50XToKKyAgICAiIiIKKyAgICBQYXJzZSBhIHNpbmdsZSBleHRlbnNpb24gcGFy
YW1ldGVyIGZyb20gYGBoZWFkZXJgYCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBSZXR1
cm4gYSBgYChuYW1lLCB2YWx1ZSlgYCBwYWlyIGFuZCB0aGUgbmV3IHBvc2l0aW9uLgorCisgICAg
OnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGlu
dmFsaWQgaW5wdXRzLgorCisgICAgIiIiCisgICAgIyBFeHRyYWN0IHBhcmFtZXRlciBuYW1lLgor
ICAgIG5hbWUsIHBvcyA9IHBhcnNlX3Rva2VuKGhlYWRlciwgcG9zLCBoZWFkZXJfbmFtZSkKKyAg
ICBwb3MgPSBwYXJzZV9PV1MoaGVhZGVyLCBwb3MpCisgICAgIyBFeHRyYWN0IHBhcmFtZXRlciB2
YWx1ZSwgaWYgdGhlcmUgaXMgb25lLgorICAgIHZhbHVlOiBPcHRpb25hbFtzdHJdID0gTm9uZQor
ICAgIGlmIHBlZWtfYWhlYWQoaGVhZGVyLCBwb3MpID09ICI9IjoKKyAgICAgICAgcG9zID0gcGFy
c2VfT1dTKGhlYWRlciwgcG9zICsgMSkKKyAgICAgICAgaWYgcGVla19haGVhZChoZWFkZXIsIHBv
cykgPT0gJyInOgorICAgICAgICAgICAgcG9zX2JlZm9yZSA9IHBvcyAgIyBmb3IgcHJvcGVyIGVy
cm9yIHJlcG9ydGluZyBiZWxvdworICAgICAgICAgICAgdmFsdWUsIHBvcyA9IHBhcnNlX3F1b3Rl
ZF9zdHJpbmcoaGVhZGVyLCBwb3MsIGhlYWRlcl9uYW1lKQorICAgICAgICAgICAgIyBodHRwczov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTkuMSBzYXlzOiB0aGUgdmFsdWUK
KyAgICAgICAgICAgICMgYWZ0ZXIgcXVvdGVkLXN0cmluZyB1bmVzY2FwaW5nIE1VU1QgY29uZm9y
bSB0byB0aGUgJ3Rva2VuJyBBQk5GLgorICAgICAgICAgICAgaWYgX3Rva2VuX3JlLmZ1bGxtYXRj
aCh2YWx1ZSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9y
bWF0KAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZSwgImludmFsaWQgcXVvdGVkIGhl
YWRlciBjb250ZW50IiwgaGVhZGVyLCBwb3NfYmVmb3JlCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgdmFsdWUsIHBvcyA9IHBhcnNlX3Rva2VuKGhlYWRlciwg
cG9zLCBoZWFkZXJfbmFtZSkKKyAgICAgICAgcG9zID0gcGFyc2VfT1dTKGhlYWRlciwgcG9zKQor
CisgICAgcmV0dXJuIChuYW1lLCB2YWx1ZSksIHBvcworCisKK2RlZiBwYXJzZV9leHRlbnNpb25f
aXRlbSgKKyAgICBoZWFkZXI6IHN0ciwgcG9zOiBpbnQsIGhlYWRlcl9uYW1lOiBzdHIKKykgLT4g
VHVwbGVbRXh0ZW5zaW9uSGVhZGVyLCBpbnRdOgorICAgICIiIgorICAgIFBhcnNlIGFuIGV4dGVu
c2lvbiBkZWZpbml0aW9uIGZyb20gYGBoZWFkZXJgYCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisK
KyAgICBSZXR1cm4gYW4gYGAoZXh0ZW5zaW9uIG5hbWUsIHBhcmFtZXRlcnMpYGAgcGFpciwgd2hl
cmUgYGBwYXJhbWV0ZXJzYGAgaXMgYQorICAgIGxpc3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAgcGFp
cnMsIGFuZCB0aGUgbmV3IHBvc2l0aW9uLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNl
cHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIi
CisgICAgIyBFeHRyYWN0IGV4dGVuc2lvbiBuYW1lLgorICAgIG5hbWUsIHBvcyA9IHBhcnNlX3Rv
a2VuKGhlYWRlciwgcG9zLCBoZWFkZXJfbmFtZSkKKyAgICBwb3MgPSBwYXJzZV9PV1MoaGVhZGVy
LCBwb3MpCisgICAgIyBFeHRyYWN0IGFsbCBwYXJhbWV0ZXJzLgorICAgIHBhcmFtZXRlcnMgPSBb
XQorICAgIHdoaWxlIHBlZWtfYWhlYWQoaGVhZGVyLCBwb3MpID09ICI7IjoKKyAgICAgICAgcG9z
ID0gcGFyc2VfT1dTKGhlYWRlciwgcG9zICsgMSkKKyAgICAgICAgcGFyYW1ldGVyLCBwb3MgPSBw
YXJzZV9leHRlbnNpb25faXRlbV9wYXJhbShoZWFkZXIsIHBvcywgaGVhZGVyX25hbWUpCisgICAg
ICAgIHBhcmFtZXRlcnMuYXBwZW5kKHBhcmFtZXRlcikKKyAgICByZXR1cm4gKGNhc3QoRXh0ZW5z
aW9uTmFtZSwgbmFtZSksIHBhcmFtZXRlcnMpLCBwb3MKKworCitkZWYgcGFyc2VfZXh0ZW5zaW9u
KGhlYWRlcjogc3RyKSAtPiBMaXN0W0V4dGVuc2lvbkhlYWRlcl06CisgICAgIiIiCisgICAgUGFy
c2UgYSBgYFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uc2BgIGhlYWRlci4KKworICAgIFJldHVybiBh
IGxpc3Qgb2YgV2ViU29ja2V0IGV4dGVuc2lvbnMgYW5kIHRoZWlyIHBhcmFtZXRlcnMgaW4gdGhp
cyBmb3JtYXQ6OgorCisgICAgICAgIFsKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAn
ZXh0ZW5zaW9uIG5hbWUnLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
KCdwYXJhbWV0ZXIgbmFtZScsICdwYXJhbWV0ZXIgdmFsdWUnKSwKKyAgICAgICAgICAgICAgICAg
ICAgLi4uLgorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICksCisgICAgICAgICAgICAu
Li4KKyAgICAgICAgXQorCisgICAgUGFyYW1ldGVyIHZhbHVlcyBhcmUgYGBOb25lYGAgd2hlbiBu
byB2YWx1ZSBpcyBwcm92aWRlZC4KKworICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9u
cy5JbnZhbGlkSGVhZGVyRm9ybWF0OiBvbiBpbnZhbGlkIGlucHV0cy4KKworICAgICIiIgorICAg
IHJldHVybiBwYXJzZV9saXN0KHBhcnNlX2V4dGVuc2lvbl9pdGVtLCBoZWFkZXIsIDAsICJTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnMiKQorCisKK3BhcnNlX2V4dGVuc2lvbl9saXN0ID0gcGFyc2Vf
ZXh0ZW5zaW9uICAjIGFsaWFzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorCisKK2RlZiBi
dWlsZF9leHRlbnNpb25faXRlbSgKKyAgICBuYW1lOiBFeHRlbnNpb25OYW1lLCBwYXJhbWV0ZXJz
OiBMaXN0W0V4dGVuc2lvblBhcmFtZXRlcl0KKykgLT4gc3RyOgorICAgICIiIgorICAgIEJ1aWxk
IGFuIGV4dGVuc2lvbiBkZWZpbml0aW9uLgorCisgICAgVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA6
ZnVuYzpgcGFyc2VfZXh0ZW5zaW9uX2l0ZW1gLgorCisgICAgIiIiCisgICAgcmV0dXJuICI7ICIu
am9pbigKKyAgICAgICAgW2Nhc3Qoc3RyLCBuYW1lKV0KKyAgICAgICAgKyBbCisgICAgICAgICAg
ICAjIFF1b3RlZCBzdHJpbmdzIGFyZW4ndCBuZWNlc3NhcnkgYmVjYXVzZSB2YWx1ZXMgYXJlIGFs
d2F5cyB0b2tlbnMuCisgICAgICAgICAgICBuYW1lIGlmIHZhbHVlIGlzIE5vbmUgZWxzZSBmIntu
YW1lfT17dmFsdWV9IgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHBhcmFtZXRlcnMK
KyAgICAgICAgXQorICAgICkKKworCitkZWYgYnVpbGRfZXh0ZW5zaW9uKGV4dGVuc2lvbnM6IFNl
cXVlbmNlW0V4dGVuc2lvbkhlYWRlcl0pIC0+IHN0cjoKKyAgICAiIiIKKyAgICBCdWlsZCBhIGBg
U2VjLVdlYlNvY2tldC1FeHRlbnNpb25zYGAgaGVhZGVyLgorCisgICAgVGhpcyBpcyB0aGUgcmV2
ZXJzZSBvZiA6ZnVuYzpgcGFyc2VfZXh0ZW5zaW9uYC4KKworICAgICIiIgorICAgIHJldHVybiAi
LCAiLmpvaW4oCisgICAgICAgIGJ1aWxkX2V4dGVuc2lvbl9pdGVtKG5hbWUsIHBhcmFtZXRlcnMp
IGZvciBuYW1lLCBwYXJhbWV0ZXJzIGluIGV4dGVuc2lvbnMKKyAgICApCisKKworYnVpbGRfZXh0
ZW5zaW9uX2xpc3QgPSBidWlsZF9leHRlbnNpb24gICMgYWxpYXMgZm9yIGJhY2t3YXJkcyBjb21w
YXRpYmlsaXR5CisKKworZGVmIHBhcnNlX3N1YnByb3RvY29sX2l0ZW0oCisgICAgaGVhZGVyOiBz
dHIsIHBvczogaW50LCBoZWFkZXJfbmFtZTogc3RyCispIC0+IFR1cGxlW1N1YnByb3RvY29sLCBp
bnRdOgorICAgICIiIgorICAgIFBhcnNlIGEgc3VicHJvdG9jb2wgZnJvbSBgYGhlYWRlcmBgIGF0
IHRoZSBnaXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVybiB0aGUgc3VicHJvdG9jb2wgdmFsdWUg
YW5kIHRoZSBuZXcgcG9zaXRpb24uCisKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlv
bnMuSW52YWxpZEhlYWRlckZvcm1hdDogb24gaW52YWxpZCBpbnB1dHMuCisKKyAgICAiIiIKKyAg
ICBpdGVtLCBwb3MgPSBwYXJzZV90b2tlbihoZWFkZXIsIHBvcywgaGVhZGVyX25hbWUpCisgICAg
cmV0dXJuIGNhc3QoU3VicHJvdG9jb2wsIGl0ZW0pLCBwb3MKKworCitkZWYgcGFyc2Vfc3VicHJv
dG9jb2woaGVhZGVyOiBzdHIpIC0+IExpc3RbU3VicHJvdG9jb2xdOgorICAgICIiIgorICAgIFBh
cnNlIGEgYGBTZWMtV2ViU29ja2V0LVByb3RvY29sYGAgaGVhZGVyLgorCisgICAgUmV0dXJuIGEg
bGlzdCBvZiBXZWJTb2NrZXQgc3VicHJvdG9jb2xzLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0
cy5leGNlcHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisg
ICAgIiIiCisgICAgcmV0dXJuIHBhcnNlX2xpc3QocGFyc2Vfc3VicHJvdG9jb2xfaXRlbSwgaGVh
ZGVyLCAwLCAiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIpCisKKworcGFyc2Vfc3VicHJvdG9jb2xf
bGlzdCA9IHBhcnNlX3N1YnByb3RvY29sICAjIGFsaWFzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eQorCisKK2RlZiBidWlsZF9zdWJwcm90b2NvbChwcm90b2NvbHM6IFNlcXVlbmNlW1N1YnBy
b3RvY29sXSkgLT4gc3RyOgorICAgICIiIgorICAgIEJ1aWxkIGEgYGBTZWMtV2ViU29ja2V0LVBy
b3RvY29sYGAgaGVhZGVyLgorCisgICAgVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA6ZnVuYzpgcGFy
c2Vfc3VicHJvdG9jb2xgLgorCisgICAgIiIiCisgICAgcmV0dXJuICIsICIuam9pbihwcm90b2Nv
bHMpCisKKworYnVpbGRfc3VicHJvdG9jb2xfbGlzdCA9IGJ1aWxkX3N1YnByb3RvY29sICAjIGFs
aWFzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorCisKK2RlZiBidWlsZF93d3dfYXV0aGVu
dGljYXRlX2Jhc2ljKHJlYWxtOiBzdHIpIC0+IHN0cjoKKyAgICAiIiIKKyAgICBCdWlsZCBhIGBg
V1dXLUF1dGhlbnRpY2F0ZWBgIGhlYWRlciBmb3IgSFRUUCBCYXNpYyBBdXRoLgorCisgICAgOnBh
cmFtIHJlYWxtOiBhdXRoZW50aWNhdGlvbiByZWFsbQorCisgICAgIiIiCisgICAgIyBodHRwczov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzYxNyNzZWN0aW9uLTIKKyAgICByZWFsbSA9IGJ1aWxk
X3F1b3RlZF9zdHJpbmcocmVhbG0pCisgICAgY2hhcnNldCA9IGJ1aWxkX3F1b3RlZF9zdHJpbmco
IlVURi04IikKKyAgICByZXR1cm4gZiJCYXNpYyByZWFsbT17cmVhbG19LCBjaGFyc2V0PXtjaGFy
c2V0fSIKKworCitfdG9rZW42OF9yZSA9IHJlLmNvbXBpbGUociJbQS1aYS16MC05LS5ffisvXSs9
KiIpCisKKworZGVmIHBhcnNlX3Rva2VuNjgoaGVhZGVyOiBzdHIsIHBvczogaW50LCBoZWFkZXJf
bmFtZTogc3RyKSAtPiBUdXBsZVtzdHIsIGludF06CisgICAgIiIiCisgICAgUGFyc2UgYSB0b2tl
bjY4IGZyb20gYGBoZWFkZXJgYCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBSZXR1cm4g
dGhlIHRva2VuIHZhbHVlIGFuZCB0aGUgbmV3IHBvc2l0aW9uLgorCisgICAgOnJhaXNlcyB+d2Vi
c29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRz
LgorCisgICAgIiIiCisgICAgbWF0Y2ggPSBfdG9rZW42OF9yZS5tYXRjaChoZWFkZXIsIHBvcykK
KyAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0
KGhlYWRlcl9uYW1lLCAiZXhwZWN0ZWQgdG9rZW42OCIsIGhlYWRlciwgcG9zKQorICAgIHJldHVy
biBtYXRjaC5ncm91cCgpLCBtYXRjaC5lbmQoKQorCisKK2RlZiBwYXJzZV9lbmQoaGVhZGVyOiBz
dHIsIHBvczogaW50LCBoZWFkZXJfbmFtZTogc3RyKSAtPiBOb25lOgorICAgICIiIgorICAgIENo
ZWNrIHRoYXQgcGFyc2luZyByZWFjaGVkIHRoZSBlbmQgb2YgaGVhZGVyLgorCisgICAgIiIiCisg
ICAgaWYgcG9zIDwgbGVuKGhlYWRlcik6CisgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXJGb3Jt
YXQoaGVhZGVyX25hbWUsICJ0cmFpbGluZyBkYXRhIiwgaGVhZGVyLCBwb3MpCisKKworZGVmIHBh
cnNlX2F1dGhvcml6YXRpb25fYmFzaWMoaGVhZGVyOiBzdHIpIC0+IFR1cGxlW3N0ciwgc3RyXToK
KyAgICAiIiIKKyAgICBQYXJzZSBhbiBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIgZm9yIEhUVFAg
QmFzaWMgQXV0aC4KKworICAgIFJldHVybiBhIGBgKHVzZXJuYW1lLCBwYXNzd29yZClgYCB0dXBs
ZS4KKworICAgIDpwYXJhbSBoZWFkZXI6IHZhbHVlIG9mIHRoZSBgYEF1dGhvcml6YXRpb25gYCBo
ZWFkZXIKKyAgICA6cmFpc2VzIEludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRz
CisgICAgOnJhaXNlcyBJbnZhbGlkSGVhZGVyVmFsdWU6IG9uIHVuc3VwcG9ydGVkIGlucHV0cwor
CisgICAgIiIiCisgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0
aW9uLTIuMQorICAgICMgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2MTcjc2VjdGlv
bi0yCisgICAgc2NoZW1lLCBwb3MgPSBwYXJzZV90b2tlbihoZWFkZXIsIDAsICJBdXRob3JpemF0
aW9uIikKKyAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAiYmFzaWMiOgorICAgICAgICByYWlzZSBJ
bnZhbGlkSGVhZGVyVmFsdWUoIkF1dGhvcml6YXRpb24iLCBmInVuc3VwcG9ydGVkIHNjaGVtZTog
e3NjaGVtZX0iKQorICAgIGlmIHBlZWtfYWhlYWQoaGVhZGVyLCBwb3MpICE9ICIgIjoKKyAgICAg
ICAgcmFpc2UgSW52YWxpZEhlYWRlckZvcm1hdCgKKyAgICAgICAgICAgICJBdXRob3JpemF0aW9u
IiwgImV4cGVjdGVkIHNwYWNlIGFmdGVyIHNjaGVtZSIsIGhlYWRlciwgcG9zCisgICAgICAgICkK
KyAgICBwb3MgKz0gMQorICAgIGJhc2ljX2NyZWRlbnRpYWxzLCBwb3MgPSBwYXJzZV90b2tlbjY4
KGhlYWRlciwgcG9zLCAiQXV0aG9yaXphdGlvbiIpCisgICAgcGFyc2VfZW5kKGhlYWRlciwgcG9z
LCAiQXV0aG9yaXphdGlvbiIpCisKKyAgICB0cnk6CisgICAgICAgIHVzZXJfcGFzcyA9IGJhc2U2
NC5iNjRkZWNvZGUoYmFzaWNfY3JlZGVudGlhbHMuZW5jb2RlKCkpLmRlY29kZSgpCisgICAgZXhj
ZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoCisg
ICAgICAgICAgICAiQXV0aG9yaXphdGlvbiIsICJleHBlY3RlZCBiYXNlNjQtZW5jb2RlZCBjcmVk
ZW50aWFscyIKKyAgICAgICAgKSBmcm9tIE5vbmUKKyAgICB0cnk6CisgICAgICAgIHVzZXJuYW1l
LCBwYXNzd29yZCA9IHVzZXJfcGFzcy5zcGxpdCgiOiIsIDEpCisgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CisgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXJWYWx1ZSgKKyAgICAgICAgICAgICJBdXRo
b3JpemF0aW9uIiwgImV4cGVjdGVkIHVzZXJuYW1lOnBhc3N3b3JkIGNyZWRlbnRpYWxzIgorICAg
ICAgICApIGZyb20gTm9uZQorCisgICAgcmV0dXJuIHVzZXJuYW1lLCBwYXNzd29yZAorCisKK2Rl
ZiBidWlsZF9hdXRob3JpemF0aW9uX2Jhc2ljKHVzZXJuYW1lOiBzdHIsIHBhc3N3b3JkOiBzdHIp
IC0+IHN0cjoKKyAgICAiIiIKKyAgICBCdWlsZCBhbiBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIg
Zm9yIEhUVFAgQmFzaWMgQXV0aC4KKworICAgIFRoaXMgaXMgdGhlIHJldmVyc2Ugb2YgOmZ1bmM6
YHBhcnNlX2F1dGhvcml6YXRpb25fYmFzaWNgLgorCisgICAgIiIiCisgICAgIyBodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNzYxNyNzZWN0aW9uLTIKKyAgICBhc3NlcnQgIjoiIG5vdCBp
biB1c2VybmFtZQorICAgIHVzZXJfcGFzcyA9IGYie3VzZXJuYW1lfTp7cGFzc3dvcmR9IgorICAg
IGJhc2ljX2NyZWRlbnRpYWxzID0gYmFzZTY0LmI2NGVuY29kZSh1c2VyX3Bhc3MuZW5jb2RlKCkp
LmRlY29kZSgpCisgICAgcmV0dXJuICJCYXNpYyAiICsgYmFzaWNfY3JlZGVudGlhbHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9odHRwLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL3NyYy93ZWJzb2NrZXRzL2h0dHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5iYTZkMjc0YmYxNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvc3JjL3dlYnNvY2tldHMvaHR0cC5weQpAQCAtMCwwICsxLDM2MCBAQAorIiIiCis6bW9k
OmB3ZWJzb2NrZXRzLmh0dHBgIG1vZHVsZSBwcm92aWRlcyBiYXNpYyBIVFRQLzEuMSBzdXBwb3J0
LiBJdCBpcyBtZXJlbHkKKzphZGVxdWF0ZSBmb3IgV2ViU29ja2V0IGhhbmRzaGFrZSBtZXNzYWdl
cy4KKworVGhlc2UgQVBJcyBjYW5ub3QgYmUgaW1wb3J0ZWQgZnJvbSA6bW9kOmB3ZWJzb2NrZXRz
YC4gVGhleSBtdXN0IGJlIGltcG9ydGVkCitmcm9tIDptb2Q6YHdlYnNvY2tldHMuaHR0cGAuCisK
KyIiIgorCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitmcm9tIHR5cGlu
ZyBpbXBvcnQgKAorICAgIEFueSwKKyAgICBEaWN0LAorICAgIEl0ZXJhYmxlLAorICAgIEl0ZXJh
dG9yLAorICAgIExpc3QsCisgICAgTWFwcGluZywKKyAgICBNdXRhYmxlTWFwcGluZywKKyAgICBU
dXBsZSwKKyAgICBVbmlvbiwKKykKKworZnJvbSAudmVyc2lvbiBpbXBvcnQgdmVyc2lvbiBhcyB3
ZWJzb2NrZXRzX3ZlcnNpb24KKworCitfX2FsbF9fID0gWworICAgICJyZWFkX3JlcXVlc3QiLAor
ICAgICJyZWFkX3Jlc3BvbnNlIiwKKyAgICAiSGVhZGVycyIsCisgICAgIk11bHRpcGxlVmFsdWVz
RXJyb3IiLAorICAgICJVU0VSX0FHRU5UIiwKK10KKworTUFYX0hFQURFUlMgPSAyNTYKK01BWF9M
SU5FID0gNDA5NgorCitVU0VSX0FHRU5UID0gZiJQeXRob24ve3N5cy52ZXJzaW9uWzozXX0gd2Vi
c29ja2V0cy97d2Vic29ja2V0c192ZXJzaW9ufSIKKworCitkZWYgZCh2YWx1ZTogYnl0ZXMpIC0+
IHN0cjoKKyAgICAiIiIKKyAgICBEZWNvZGUgYSBieXRlc3RyaW5nIGZvciBpbnRlcnBvbGF0aW5n
IGludG8gYW4gZXJyb3IgbWVzc2FnZS4KKworICAgICIiIgorICAgIHJldHVybiB2YWx1ZS5kZWNv
ZGUoZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIikKKworCisjIFNlZSBodHRwczovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjNzIzMCNhcHBlbmRpeC1CLgorCisjIFJlZ2V4IGZvciB2YWxpZGF0aW5n
IGhlYWRlciBuYW1lcy4KKworX3Rva2VuX3JlID0gcmUuY29tcGlsZShyYiJbLSEjJCUmXCcqKy5e
X2B8fjAtOWEtekEtWl0rIikKKworIyBSZWdleCBmb3IgdmFsaWRhdGluZyBoZWFkZXIgdmFsdWVz
LgorCisjIFdlIGRvbid0IGF0dGVtcHQgdG8gc3VwcG9ydCBvYnNvbGV0ZSBsaW5lIGZvbGRpbmcu
CisKKyMgSW5jbHVkZSBIVEFCIChceDA5KSwgU1AgKFx4MjApLCBWQ0hBUiAoXHgyMS1ceDdlKSwg
b2JzLXRleHQgKFx4ODAtXHhmZikuCisKKyMgVGhlIEFCTkYgaXMgY29tcGxpY2F0ZWQgYmVjYXVz
ZSBpdCBhdHRlbXB0cyB0byBleHByZXNzIHRoYXQgb3B0aW9uYWwKKyMgd2hpdGVzcGFjZSBpcyBp
Z25vcmVkLiBXZSBzdHJpcCB3aGl0ZXNwYWNlIGFuZCBkb24ndCByZXZhbGlkYXRlIHRoYXQuCisK
KyMgU2VlIGFsc28gaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvZXJyYXRhX3NlYXJjaC5waHA/
cmZjPTcyMzAmZWlkPTQxODkKKworX3ZhbHVlX3JlID0gcmUuY29tcGlsZShyYiJbXHgwOVx4MjAt
XHg3ZVx4ODAtXHhmZl0qIikKKworCithc3luYyBkZWYgcmVhZF9yZXF1ZXN0KHN0cmVhbTogYXN5
bmNpby5TdHJlYW1SZWFkZXIpIC0+IFR1cGxlW3N0ciwgIkhlYWRlcnMiXToKKyAgICAiIiIKKyAg
ICBSZWFkIGFuIEhUVFAvMS4xIEdFVCByZXF1ZXN0IGFuZCByZXR1cm4gYGAocGF0aCwgaGVhZGVy
cylgYC4KKworICAgIGBgcGF0aGBgIGlzbid0IFVSTC1kZWNvZGVkIG9yIHZhbGlkYXRlZCBpbiBh
bnkgd2F5LgorCisgICAgYGBwYXRoYGAgYW5kIGBgaGVhZGVyc2BgIGFyZSBleHBlY3RlZCB0byBj
b250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4KKyAgICBPdGhlciBjaGFyYWN0ZXJzIGFyZSBy
ZXByZXNlbnRlZCB3aXRoIHN1cnJvZ2F0ZSBlc2NhcGVzLgorCisgICAgOmZ1bmM6YHJlYWRfcmVx
dWVzdGAgZG9lc24ndCBhdHRlbXB0IHRvIHJlYWQgdGhlIHJlcXVlc3QgYm9keSBiZWNhdXNlCisg
ICAgV2ViU29ja2V0IGhhbmRzaGFrZSByZXF1ZXN0cyBkb24ndCBoYXZlIG9uZS4gSWYgdGhlIHJl
cXVlc3QgY29udGFpbnMgYQorICAgIGJvZHksIGl0IG1heSBiZSByZWFkIGZyb20gYGBzdHJlYW1g
YCBhZnRlciB0aGlzIGNvcm91dGluZSByZXR1cm5zLgorCisgICAgOnBhcmFtIHN0cmVhbTogaW5w
dXQgdG8gcmVhZCB0aGUgcmVxdWVzdCBmcm9tCisgICAgOnJhaXNlcyBFT0ZFcnJvcjogaWYgdGhl
IGNvbm5lY3Rpb24gaXMgY2xvc2VkIHdpdGhvdXQgYSBmdWxsIEhUVFAgcmVxdWVzdAorICAgIDpy
YWlzZXMgU2VjdXJpdHlFcnJvcjogaWYgdGhlIHJlcXVlc3QgZXhjZWVkcyBhIHNlY3VyaXR5IGxp
bWl0CisgICAgOnJhaXNlcyBWYWx1ZUVycm9yOiBpZiB0aGUgcmVxdWVzdCBpc24ndCB3ZWxsIGZv
cm1hdHRlZAorCisgICAgIiIiCisgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NzIzMCNzZWN0aW9uLTMuMS4xCisKKyAgICAjIFBhcnNpbmcgaXMgc2ltcGxlIGJlY2F1c2UgZml4
ZWQgdmFsdWVzIGFyZSBleHBlY3RlZCBmb3IgbWV0aG9kIGFuZAorICAgICMgdmVyc2lvbiBhbmQg
YmVjYXVzZSBwYXRoIGlzbid0IGNoZWNrZWQuIFNpbmNlIFdlYlNvY2tldCBzb2Z0d2FyZSB0ZW5k
cworICAgICMgdG8gaW1wbGVtZW50IEhUVFAvMS4xIHN0cmljdGx5LCB0aGVyZSdzIGxpdHRsZSBu
ZWVkIGZvciBsZW5pZW50IHBhcnNpbmcuCisKKyAgICB0cnk6CisgICAgICAgIHJlcXVlc3RfbGlu
ZSA9IGF3YWl0IHJlYWRfbGluZShzdHJlYW0pCisgICAgZXhjZXB0IEVPRkVycm9yIGFzIGV4YzoK
KyAgICAgICAgcmFpc2UgRU9GRXJyb3IoImNvbm5lY3Rpb24gY2xvc2VkIHdoaWxlIHJlYWRpbmcg
SFRUUCByZXF1ZXN0IGxpbmUiKSBmcm9tIGV4YworCisgICAgdHJ5OgorICAgICAgICBtZXRob2Qs
IHJhd19wYXRoLCB2ZXJzaW9uID0gcmVxdWVzdF9saW5lLnNwbGl0KGIiICIsIDIpCisgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6ICAjIG5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQg
MywgZ290IDEtMikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmImludmFsaWQgSFRUUCByZXF1
ZXN0IGxpbmU6IHtkKHJlcXVlc3RfbGluZSl9IikgZnJvbSBOb25lCisKKyAgICBpZiBtZXRob2Qg
IT0gYiJHRVQiOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYidW5zdXBwb3J0ZWQgSFRUUCBt
ZXRob2Q6IHtkKG1ldGhvZCl9IikKKyAgICBpZiB2ZXJzaW9uICE9IGIiSFRUUC8xLjEiOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKGYidW5zdXBwb3J0ZWQgSFRUUCB2ZXJzaW9uOiB7ZCh2ZXJz
aW9uKX0iKQorICAgIHBhdGggPSByYXdfcGF0aC5kZWNvZGUoImFzY2lpIiwgInN1cnJvZ2F0ZWVz
Y2FwZSIpCisKKyAgICBoZWFkZXJzID0gYXdhaXQgcmVhZF9oZWFkZXJzKHN0cmVhbSkKKworICAg
IHJldHVybiBwYXRoLCBoZWFkZXJzCisKKworYXN5bmMgZGVmIHJlYWRfcmVzcG9uc2Uoc3RyZWFt
OiBhc3luY2lvLlN0cmVhbVJlYWRlcikgLT4gVHVwbGVbaW50LCBzdHIsICJIZWFkZXJzIl06Cisg
ICAgIiIiCisgICAgUmVhZCBhbiBIVFRQLzEuMSByZXNwb25zZSBhbmQgcmV0dXJuIGBgKHN0YXR1
c19jb2RlLCByZWFzb24sIGhlYWRlcnMpYGAuCisKKyAgICBgYHJlYXNvbmBgIGFuZCBgYGhlYWRl
cnNgYCBhcmUgZXhwZWN0ZWQgdG8gY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisgICAg
T3RoZXIgY2hhcmFjdGVycyBhcmUgcmVwcmVzZW50ZWQgd2l0aCBzdXJyb2dhdGUgZXNjYXBlcy4K
KworICAgIDpmdW5jOmByZWFkX3JlcXVlc3RgIGRvZXNuJ3QgYXR0ZW1wdCB0byByZWFkIHRoZSBy
ZXNwb25zZSBib2R5IGJlY2F1c2UKKyAgICBXZWJTb2NrZXQgaGFuZHNoYWtlIHJlc3BvbnNlcyBk
b24ndCBoYXZlIG9uZS4gSWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEKKyAgICBib2R5LCBpdCBt
YXkgYmUgcmVhZCBmcm9tIGBgc3RyZWFtYGAgYWZ0ZXIgdGhpcyBjb3JvdXRpbmUgcmV0dXJucy4K
KworICAgIDpwYXJhbSBzdHJlYW06IGlucHV0IHRvIHJlYWQgdGhlIHJlc3BvbnNlIGZyb20KKyAg
ICA6cmFpc2VzIEVPRkVycm9yOiBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQgd2l0aG91dCBh
IGZ1bGwgSFRUUCByZXNwb25zZQorICAgIDpyYWlzZXMgU2VjdXJpdHlFcnJvcjogaWYgdGhlIHJl
c3BvbnNlIGV4Y2VlZHMgYSBzZWN1cml0eSBsaW1pdAorICAgIDpyYWlzZXMgVmFsdWVFcnJvcjog
aWYgdGhlIHJlc3BvbnNlIGlzbid0IHdlbGwgZm9ybWF0dGVkCisKKyAgICAiIiIKKyAgICAjIGh0
dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4xLjIKKworICAgICMg
QXMgaW4gcmVhZF9yZXF1ZXN0LCBwYXJzaW5nIGlzIHNpbXBsZSBiZWNhdXNlIGEgZml4ZWQgdmFs
dWUgaXMgZXhwZWN0ZWQKKyAgICAjIGZvciB2ZXJzaW9uLCBzdGF0dXNfY29kZSBpcyBhIDMtZGln
aXQgbnVtYmVyLCBhbmQgcmVhc29uIGNhbiBiZSBpZ25vcmVkLgorCisgICAgdHJ5OgorICAgICAg
ICBzdGF0dXNfbGluZSA9IGF3YWl0IHJlYWRfbGluZShzdHJlYW0pCisgICAgZXhjZXB0IEVPRkVy
cm9yIGFzIGV4YzoKKyAgICAgICAgcmFpc2UgRU9GRXJyb3IoImNvbm5lY3Rpb24gY2xvc2VkIHdo
aWxlIHJlYWRpbmcgSFRUUCBzdGF0dXMgbGluZSIpIGZyb20gZXhjCisKKyAgICB0cnk6CisgICAg
ICAgIHZlcnNpb24sIHJhd19zdGF0dXNfY29kZSwgcmF3X3JlYXNvbiA9IHN0YXR1c19saW5lLnNw
bGl0KGIiICIsIDIpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6ICAjIG5vdCBlbm91Z2ggdmFsdWVz
IHRvIHVucGFjayAoZXhwZWN0ZWQgMywgZ290IDEtMikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cihmImludmFsaWQgSFRUUCBzdGF0dXMgbGluZToge2Qoc3RhdHVzX2xpbmUpfSIpIGZyb20gTm9u
ZQorCisgICAgaWYgdmVyc2lvbiAhPSBiIkhUVFAvMS4xIjoKKyAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcihmInVuc3VwcG9ydGVkIEhUVFAgdmVyc2lvbjoge2QodmVyc2lvbil9IikKKyAgICB0cnk6
CisgICAgICAgIHN0YXR1c19jb2RlID0gaW50KHJhd19zdGF0dXNfY29kZSkKKyAgICBleGNlcHQg
VmFsdWVFcnJvcjogICMgaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgMTAKKyAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcihmImludmFsaWQgSFRUUCBzdGF0dXMgY29kZToge2QocmF3
X3N0YXR1c19jb2RlKX0iKSBmcm9tIE5vbmUKKyAgICBpZiBub3QgMTAwIDw9IHN0YXR1c19jb2Rl
IDwgMTAwMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmInVuc3VwcG9ydGVkIEhUVFAgc3Rh
dHVzIGNvZGU6IHtkKHJhd19zdGF0dXNfY29kZSl9IikKKyAgICBpZiBub3QgX3ZhbHVlX3JlLmZ1
bGxtYXRjaChyYXdfcmVhc29uKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmImludmFsaWQg
SFRUUCByZWFzb24gcGhyYXNlOiB7ZChyYXdfcmVhc29uKX0iKQorICAgIHJlYXNvbiA9IHJhd19y
ZWFzb24uZGVjb2RlKCkKKworICAgIGhlYWRlcnMgPSBhd2FpdCByZWFkX2hlYWRlcnMoc3RyZWFt
KQorCisgICAgcmV0dXJuIHN0YXR1c19jb2RlLCByZWFzb24sIGhlYWRlcnMKKworCithc3luYyBk
ZWYgcmVhZF9oZWFkZXJzKHN0cmVhbTogYXN5bmNpby5TdHJlYW1SZWFkZXIpIC0+ICJIZWFkZXJz
IjoKKyAgICAiIiIKKyAgICBSZWFkIEhUVFAgaGVhZGVycyBmcm9tIGBgc3RyZWFtYGAuCisKKyAg
ICBOb24tQVNDSUkgY2hhcmFjdGVycyBhcmUgcmVwcmVzZW50ZWQgd2l0aCBzdXJyb2dhdGUgZXNj
YXBlcy4KKworICAgICIiIgorICAgICMgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcy
MzAjc2VjdGlvbi0zLjIKKworICAgICMgV2UgZG9uJ3QgYXR0ZW1wdCB0byBzdXBwb3J0IG9ic29s
ZXRlIGxpbmUgZm9sZGluZy4KKworICAgIGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAgICBmb3IgXyBp
biByYW5nZShNQVhfSEVBREVSUyArIDEpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsaW5l
ID0gYXdhaXQgcmVhZF9saW5lKHN0cmVhbSkKKyAgICAgICAgZXhjZXB0IEVPRkVycm9yIGFzIGV4
YzoKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJjb25uZWN0aW9uIGNsb3NlZCB3aGlsZSBy
ZWFkaW5nIEhUVFAgaGVhZGVycyIpIGZyb20gZXhjCisgICAgICAgIGlmIGxpbmUgPT0gYiIiOgor
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByYXdfbmFtZSwg
cmF3X3ZhbHVlID0gbGluZS5zcGxpdChiIjoiLCAxKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjogICMgbm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAyLCBnb3QgMSkKKyAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJpbnZhbGlkIEhUVFAgaGVhZGVyIGxpbmU6IHtk
KGxpbmUpfSIpIGZyb20gTm9uZQorICAgICAgICBpZiBub3QgX3Rva2VuX3JlLmZ1bGxtYXRjaChy
YXdfbmFtZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiaW52YWxpZCBIVFRQIGhl
YWRlciBuYW1lOiB7ZChyYXdfbmFtZSl9IikKKyAgICAgICAgcmF3X3ZhbHVlID0gcmF3X3ZhbHVl
LnN0cmlwKGIiIFx0IikKKyAgICAgICAgaWYgbm90IF92YWx1ZV9yZS5mdWxsbWF0Y2gocmF3X3Zh
bHVlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJpbnZhbGlkIEhUVFAgaGVhZGVy
IHZhbHVlOiB7ZChyYXdfdmFsdWUpfSIpCisKKyAgICAgICAgbmFtZSA9IHJhd19uYW1lLmRlY29k
ZSgiYXNjaWkiKSAgIyBndWFyYW50ZWVkIHRvIGJlIEFTQ0lJIGF0IHRoaXMgcG9pbnQKKyAgICAg
ICAgdmFsdWUgPSByYXdfdmFsdWUuZGVjb2RlKCJhc2NpaSIsICJzdXJyb2dhdGVlc2NhcGUiKQor
ICAgICAgICBoZWFkZXJzW25hbWVdID0gdmFsdWUKKworICAgIGVsc2U6CisgICAgICAgIHJhaXNl
IHdlYnNvY2tldHMuZXhjZXB0aW9ucy5TZWN1cml0eUVycm9yKCJ0b28gbWFueSBIVFRQIGhlYWRl
cnMiKQorCisgICAgcmV0dXJuIGhlYWRlcnMKKworCithc3luYyBkZWYgcmVhZF9saW5lKHN0cmVh
bTogYXN5bmNpby5TdHJlYW1SZWFkZXIpIC0+IGJ5dGVzOgorICAgICIiIgorICAgIFJlYWQgYSBz
aW5nbGUgbGluZSBmcm9tIGBgc3RyZWFtYGAuCisKKyAgICBDUkxGIGlzIHN0cmlwcGVkIGZyb20g
dGhlIHJldHVybiB2YWx1ZS4KKworICAgICIiIgorICAgICMgU2VjdXJpdHk6IHRoaXMgaXMgYm91
bmRlZCBieSB0aGUgU3RyZWFtUmVhZGVyJ3MgbGltaXQgKGRlZmF1bHQgPSAzMsKgS2lCKS4KKyAg
ICBsaW5lID0gYXdhaXQgc3RyZWFtLnJlYWRsaW5lKCkKKyAgICAjIFNlY3VyaXR5OiB0aGlzIGd1
YXJhbnRlZXMgaGVhZGVyIHZhbHVlcyBhcmUgc21hbGwgKGhhcmQtY29kZWQgPSA0wqBLaUIpCisg
ICAgaWYgbGVuKGxpbmUpID4gTUFYX0xJTkU6CisgICAgICAgIHJhaXNlIHdlYnNvY2tldHMuZXhj
ZXB0aW9ucy5TZWN1cml0eUVycm9yKCJsaW5lIHRvbyBsb25nIikKKyAgICAjIE5vdCBtYW5kYXRv
cnkgYnV0IHNhZmUgLSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9u
LTMuNQorICAgIGlmIG5vdCBsaW5lLmVuZHN3aXRoKGIiXHJcbiIpOgorICAgICAgICByYWlzZSBF
T0ZFcnJvcigibGluZSB3aXRob3V0IENSTEYiKQorICAgIHJldHVybiBsaW5lWzotMl0KKworCitj
bGFzcyBNdWx0aXBsZVZhbHVlc0Vycm9yKExvb2t1cEVycm9yKToKKyAgICAiIiIKKyAgICBFeGNl
cHRpb24gcmFpc2VkIHdoZW4gOmNsYXNzOmBIZWFkZXJzYCBoYXMgbW9yZSB0aGFuIG9uZSB2YWx1
ZSBmb3IgYSBrZXkuCisKKyAgICAiIiIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoK
KyAgICAgICAgIyBJbXBsZW1lbnQgdGhlIHNhbWUgbG9naWMgYXMgS2V5RXJyb3Jfc3RyIGluIE9i
amVjdHMvZXhjZXB0aW9ucy5jLgorICAgICAgICBpZiBsZW4oc2VsZi5hcmdzKSA9PSAxOgorICAg
ICAgICAgICAgcmV0dXJuIHJlcHIoc2VsZi5hcmdzWzBdKQorICAgICAgICByZXR1cm4gc3VwZXIo
KS5fX3N0cl9fKCkKKworCitjbGFzcyBIZWFkZXJzKE11dGFibGVNYXBwaW5nW3N0ciwgc3RyXSk6
CisgICAgIiIiCisgICAgRWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBtYW5pcHVsYXRpbmcg
SFRUUCBoZWFkZXJzLgorCisgICAgQSA6Y2xhc3M6YGxpc3RgIG9mIGBgKG5hbWUsIHZhbHVlcylg
YCBpcyBpbmVmZmljaWVudCBmb3IgbG9va3Vwcy4KKworICAgIEEgOmNsYXNzOmBkaWN0YCBkb2Vz
bid0IHN1ZmZpY2UgYmVjYXVzZSBoZWFkZXIgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAg
ICBhbmQgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgaGVhZGVycyB3aXRoIHRoZSBzYW1lIG5hbWUg
YXJlIHBvc3NpYmxlLgorCisgICAgOmNsYXNzOmBIZWFkZXJzYCBzdG9yZXMgSFRUUCBoZWFkZXJz
IGluIGEgaHlicmlkIGRhdGEgc3RydWN0dXJlIHRvIHByb3ZpZGUKKyAgICBlZmZpY2llbnQgaW5z
ZXJ0aW9ucyBhbmQgbG9va3VwcyB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCBkYXRhLgor
CisgICAgSW4gb3JkZXIgdG8gYWNjb3VudCBmb3IgbXVsdGlwbGUgdmFsdWVzIHdpdGggbWluaW1h
bCBoYXNzbGUsCisgICAgOmNsYXNzOmBIZWFkZXJzYCBmb2xsb3dzIHRoaXMgbG9naWM6CisKKyAg
ICAtIFdoZW4gZ2V0dGluZyBhIGhlYWRlciB3aXRoIGBgaGVhZGVyc1tuYW1lXWBgOgorICAgICAg
ICAtIGlmIHRoZXJlJ3Mgbm8gdmFsdWUsIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQ7CisgICAg
ICAgIC0gaWYgdGhlcmUncyBleGFjdGx5IG9uZSB2YWx1ZSwgaXQncyByZXR1cm5lZDsKKyAgICAg
ICAgLSBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgdmFsdWUsIDpleGM6YE11bHRpcGxlVmFsdWVz
RXJyb3JgIGlzIHJhaXNlZC4KKworICAgIC0gV2hlbiBzZXR0aW5nIGEgaGVhZGVyIHdpdGggYGBo
ZWFkZXJzW25hbWVdID0gdmFsdWVgYCwgdGhlIHZhbHVlIGlzCisgICAgICBhcHBlbmRlZCB0byB0
aGUgbGlzdCBvZiB2YWx1ZXMgZm9yIHRoYXQgaGVhZGVyLgorCisgICAgLSBXaGVuIGRlbGV0aW5n
IGEgaGVhZGVyIHdpdGggYGBkZWwgaGVhZGVyc1tuYW1lXWBgLCBhbGwgdmFsdWVzIGZvciB0aGF0
CisgICAgICBoZWFkZXIgYXJlIHJlbW92ZWQgKHRoaXMgaXMgc2xvdykuCisKKyAgICBPdGhlciBt
ZXRob2RzIGZvciBtYW5pcHVsYXRpbmcgaGVhZGVycyBhcmUgY29uc2lzdGVudCB3aXRoIHRoaXMg
bG9naWMuCisKKyAgICBBcyBsb25nIGFzIG5vIGhlYWRlciBvY2N1cnMgbXVsdGlwbGUgdGltZXMs
IDpjbGFzczpgSGVhZGVyc2AgYmVoYXZlcyBsaWtlCisgICAgOmNsYXNzOmBkaWN0YCwgZXhjZXB0
IGtleXMgYXJlIGxvd2VyLWNhc2VkIHRvIHByb3ZpZGUgY2FzZS1pbnNlbnNpdGl2aXR5LgorCisg
ICAgVHdvIG1ldGhvZHMgc3VwcG9ydCBzdXBwb3J0IG1hbmlwdWxhdGluZyBtdWx0aXBsZSB2YWx1
ZXMgZXhwbGljaXRseToKKworICAgIC0gOm1ldGg6YGdldF9hbGxgIHJldHVybnMgYSBsaXN0IG9m
IGFsbCB2YWx1ZXMgZm9yIGEgaGVhZGVyOworICAgIC0gOm1ldGg6YHJhd19pdGVtc2AgcmV0dXJu
cyBhbiBpdGVyYXRvciBvZiBgYChuYW1lLCB2YWx1ZXMpYGAgcGFpcnMuCisKKyAgICAiIiIKKwor
ICAgIF9fc2xvdHNfXyA9IFsiX2RpY3QiLCAiX2xpc3QiXQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsICphcmdzOiBBbnksICoqa3dhcmdzOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2Rp
Y3Q6IERpY3Rbc3RyLCBMaXN0W3N0cl1dID0ge30KKyAgICAgICAgc2VsZi5fbGlzdDogTGlzdFtU
dXBsZVtzdHIsIHN0cl1dID0gW10KKyAgICAgICAgIyBNdXRhYmxlTWFwcGluZy51cGRhdGUgY2Fs
bHMgX19zZXRpdGVtX18gZm9yIGVhY2ggKG5hbWUsIHZhbHVlKSBwYWlyLgorICAgICAgICBzZWxm
LnVwZGF0ZSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6
CisgICAgICAgIHJldHVybiAiIi5qb2luKGYie2tleX06IHt2YWx1ZX1cclxuIiBmb3Iga2V5LCB2
YWx1ZSBpbiBzZWxmLl9saXN0KSArICJcclxuIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+
IHN0cjoKKyAgICAgICAgcmV0dXJuIGYie3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSh7c2VsZi5f
bGlzdCFyfSkiCisKKyAgICBkZWYgY29weShzZWxmKSAtPiAiSGVhZGVycyI6CisgICAgICAgIGNv
cHkgPSBzZWxmLl9fY2xhc3NfXygpCisgICAgICAgIGNvcHkuX2RpY3QgPSBzZWxmLl9kaWN0LmNv
cHkoKQorICAgICAgICBjb3B5Ll9saXN0ID0gc2VsZi5fbGlzdC5jb3B5KCkKKyAgICAgICAgcmV0
dXJuIGNvcHkKKworICAgICMgQ29sbGVjdGlvbiBtZXRob2RzCisKKyAgICBkZWYgX19jb250YWlu
c19fKHNlbGYsIGtleTogb2JqZWN0KSAtPiBib29sOgorICAgICAgICByZXR1cm4gaXNpbnN0YW5j
ZShrZXksIHN0cikgYW5kIGtleS5sb3dlcigpIGluIHNlbGYuX2RpY3QKKworICAgIGRlZiBfX2l0
ZXJfXyhzZWxmKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9k
aWN0KQorCisgICAgZGVmIF9fbGVuX18oc2VsZikgLT4gaW50OgorICAgICAgICByZXR1cm4gbGVu
KHNlbGYuX2RpY3QpCisKKyAgICAjIE11dGFibGVNYXBwaW5nIG1ldGhvZHMKKworICAgIGRlZiBf
X2dldGl0ZW1fXyhzZWxmLCBrZXk6IHN0cikgLT4gc3RyOgorICAgICAgICB2YWx1ZSA9IHNlbGYu
X2RpY3Rba2V5Lmxvd2VyKCldCisgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMToKKyAgICAgICAg
ICAgIHJldHVybiB2YWx1ZVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgTXVs
dGlwbGVWYWx1ZXNFcnJvcihrZXkpCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBz
dHIsIHZhbHVlOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2RpY3Quc2V0ZGVmYXVsdChr
ZXkubG93ZXIoKSwgW10pLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgc2VsZi5fbGlzdC5hcHBlbmQo
KGtleSwgdmFsdWUpKQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleTogc3RyKSAtPiBO
b25lOgorICAgICAgICBrZXlfbG93ZXIgPSBrZXkubG93ZXIoKQorICAgICAgICBzZWxmLl9kaWN0
Ll9fZGVsaXRlbV9fKGtleV9sb3dlcikKKyAgICAgICAgIyBUaGlzIGlzIGluZWZmaWNlbnQuIEZv
cnR1bmF0ZWx5IGRlbGV0aW5nIEhUVFAgaGVhZGVycyBpcyB1bmNvbW1vbi4KKyAgICAgICAgc2Vs
Zi5fbGlzdCA9IFsoaywgdikgZm9yIGssIHYgaW4gc2VsZi5fbGlzdCBpZiBrLmxvd2VyKCkgIT0g
a2V5X2xvd2VyXQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogQW55KSAtPiBib29sOgor
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgSGVhZGVycyk6CisgICAgICAgICAgICBy
ZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3QgPT0gb3RoZXIu
X2xpc3QKKworICAgIGRlZiBjbGVhcihzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgUmVtb3ZlIGFsbCBoZWFkZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9kaWN0
ID0ge30KKyAgICAgICAgc2VsZi5fbGlzdCA9IFtdCisKKyAgICAjIE1ldGhvZHMgZm9yIGhhbmRs
aW5nIG11bHRpcGxlIHZhbHVlcworCisgICAgZGVmIGdldF9hbGwoc2VsZiwga2V5OiBzdHIpIC0+
IExpc3Rbc3RyXToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgKHBvc3NpYmx5IGVt
cHR5KSBsaXN0IG9mIGFsbCB2YWx1ZXMgZm9yIGEgaGVhZGVyLgorCisgICAgICAgIDpwYXJhbSBr
ZXk6IGhlYWRlciBuYW1lCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9kaWN0
LmdldChrZXkubG93ZXIoKSwgW10pCisKKyAgICBkZWYgcmF3X2l0ZW1zKHNlbGYpIC0+IEl0ZXJh
dG9yW1R1cGxlW3N0ciwgc3RyXV06CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYW4gaXRl
cmF0b3Igb2YgYWxsIHZhbHVlcyBhcyBgYChuYW1lLCB2YWx1ZSlgYCBwYWlycy4KKworICAgICAg
ICAiIiIKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fbGlzdCkKKworCitIZWFkZXJzTGlrZSA9
IFVuaW9uW0hlYWRlcnMsIE1hcHBpbmdbc3RyLCBzdHJdLCBJdGVyYWJsZVtUdXBsZVtzdHIsIHN0
cl1dXQorCisKKyMgYXQgdGhlIGJvdHRvbSB0byBhbGxvdyBjaXJjdWxhciBpbXBvcnQsIGJlY2F1
c2UgQWJvcnRIYW5kc2hha2UgZGVwZW5kcyBvbiBIZWFkZXJzTGlrZQoraW1wb3J0IHdlYnNvY2tl
dHMuZXhjZXB0aW9ucyAgIyBpc29ydDpza2lwICMgbm9xYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL3NyYy93ZWJzb2NrZXRzL3Byb3RvY29sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93
ZWJzb2NrZXRzL3Byb3RvY29sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNmMyOWIyYTUyNDAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Ny
Yy93ZWJzb2NrZXRzL3Byb3RvY29sLnB5CkBAIC0wLDAgKzEsMTQyOSBAQAorIiIiCis6bW9kOmB3
ZWJzb2NrZXRzLnByb3RvY29sYCBoYW5kbGVzIFdlYlNvY2tldCBjb250cm9sIGFuZCBkYXRhIGZy
YW1lcy4KKworU2VlIGBzZWN0aW9ucyA0IHRvIDggb2YgUkZDIDY0NTVgXy4KKworLi4gX3NlY3Rp
b25zIDQgdG8gOCBvZiBSRkMgNjQ1NTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1
NSNzZWN0aW9uLTQKKworIiIiCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgY29kZWNzCitpbXBv
cnQgY29sbGVjdGlvbnMKK2ltcG9ydCBlbnVtCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJhbmRv
bQoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHR5cGlu
ZyBpbXBvcnQgKAorICAgIEFueSwKKyAgICBBc3luY0l0ZXJhYmxlLAorICAgIEFzeW5jSXRlcmF0
b3IsCisgICAgQXdhaXRhYmxlLAorICAgIERlcXVlLAorICAgIERpY3QsCisgICAgSXRlcmFibGUs
CisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBVbmlvbiwKKyAgICBjYXN0LAorKQorCitm
cm9tIC5leGNlcHRpb25zIGltcG9ydCAoCisgICAgQ29ubmVjdGlvbkNsb3NlZCwKKyAgICBDb25u
ZWN0aW9uQ2xvc2VkRXJyb3IsCisgICAgQ29ubmVjdGlvbkNsb3NlZE9LLAorICAgIEludmFsaWRT
dGF0ZSwKKyAgICBQYXlsb2FkVG9vQmlnLAorICAgIFByb3RvY29sRXJyb3IsCispCitmcm9tIC5l
eHRlbnNpb25zLmJhc2UgaW1wb3J0IEV4dGVuc2lvbgorZnJvbSAuZnJhbWluZyBpbXBvcnQgKgor
ZnJvbSAuaGFuZHNoYWtlIGltcG9ydCAqCitmcm9tIC5odHRwIGltcG9ydCBIZWFkZXJzCitmcm9t
IC50eXBpbmcgaW1wb3J0IERhdGEKKworCitfX2FsbF9fID0gWyJXZWJTb2NrZXRDb21tb25Qcm90
b2NvbCJdCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKKyMgQSBX
ZWJTb2NrZXQgY29ubmVjdGlvbiBnb2VzIHRocm91Z2ggdGhlIGZvbGxvd2luZyBmb3VyIHN0YXRl
cywgaW4gb3JkZXI6CisKKworY2xhc3MgU3RhdGUoZW51bS5JbnRFbnVtKToKKyAgICBDT05ORUNU
SU5HLCBPUEVOLCBDTE9TSU5HLCBDTE9TRUQgPSByYW5nZSg0KQorCisKKyMgSW4gb3JkZXIgdG8g
ZW5zdXJlIGNvbnNpc3RlbmN5LCB0aGUgY29kZSBhbHdheXMgY2hlY2tzIHRoZSBjdXJyZW50IHZh
bHVlIG9mCisjIFdlYlNvY2tldENvbW1vblByb3RvY29sLnN0YXRlIGJlZm9yZSBhc3NpZ25pbmcg
YSBuZXcgdmFsdWUgYW5kIG5ldmVyIHlpZWxkcworIyBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhl
IGFzc2lnbm1lbnQuCisKKworY2xhc3MgV2ViU29ja2V0Q29tbW9uUHJvdG9jb2woYXN5bmNpby5Q
cm90b2NvbCk6CisgICAgIiIiCisgICAgOmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgc3ViY2xh
c3MgaW1wbGVtZW50aW5nIHRoZSBkYXRhIHRyYW5zZmVyIHBoYXNlLgorCisgICAgT25jZSB0aGUg
V2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIGR1cmluZyB0aGUgZGF0YSB0cmFu
c2ZlcgorICAgIHBoYXNlLCB0aGUgcHJvdG9jb2wgaXMgYWxtb3N0IHN5bW1ldHJpY2FsIGJldHdl
ZW4gdGhlIHNlcnZlciBzaWRlIGFuZCB0aGUKKyAgICBjbGllbnQgc2lkZS4gOmNsYXNzOmBXZWJT
b2NrZXRDb21tb25Qcm90b2NvbGAgaW1wbGVtZW50cyBsb2dpYyB0aGF0J3MKKyAgICBzaGFyZWQg
YmV0d2VlbiBzZXJ2ZXJzIGFuZCBjbGllbnRzLi4KKworICAgIFN1YmNsYXNzZXMgc3VjaCBhcyA6
Y2xhc3M6YH53ZWJzb2NrZXRzLnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgYW5kCisg
ICAgOmNsYXNzOmB+d2Vic29ja2V0cy5jbGllbnQuV2ViU29ja2V0Q2xpZW50UHJvdG9jb2xgIGlt
cGxlbWVudCB0aGUgb3BlbmluZworICAgIGhhbmRzaGFrZSwgd2hpY2ggaXMgZGlmZmVyZW50IGJl
dHdlZW4gc2VydmVycyBhbmQgY2xpZW50cy4KKworICAgIDpjbGFzczpgV2ViU29ja2V0Q29tbW9u
UHJvdG9jb2xgIHBlcmZvcm1zIGZvdXIgZnVuY3Rpb25zOgorCisgICAgKiBJdCBydW5zIGEgdGFz
ayB0aGF0IHN0b3JlcyBpbmNvbWluZyBkYXRhIGZyYW1lcyBpbiBhIHF1ZXVlIGFuZCBtYWtlcwor
ICAgICAgdGhlbSBhdmFpbGFibGUgd2l0aCB0aGUgOm1ldGg6YHJlY3ZgIGNvcm91dGluZS4KKyAg
ICAqIEl0IHNlbmRzIG91dGdvaW5nIGRhdGEgZnJhbWVzIHdpdGggdGhlIDptZXRoOmBzZW5kYCBj
b3JvdXRpbmUuCisgICAgKiBJdCBkZWFscyB3aXRoIGNvbnRyb2wgZnJhbWVzIGF1dG9tYXRpY2Fs
bHkuCisgICAgKiBJdCBwZXJmb3JtcyB0aGUgY2xvc2luZyBoYW5kc2hha2UuCisKKyAgICA6Y2xh
c3M6YFdlYlNvY2tldENvbW1vblByb3RvY29sYCBzdXBwb3J0cyBhc3luY2hyb25vdXMgaXRlcmF0
aW9uOjoKKworICAgICAgICBhc3luYyBmb3IgbWVzc2FnZSBpbiB3ZWJzb2NrZXQ6CisgICAgICAg
ICAgICBhd2FpdCBwcm9jZXNzKG1lc3NhZ2UpCisKKyAgICBUaGUgaXRlcmF0b3IgeWllbGRzIGlu
Y29taW5nIG1lc3NhZ2VzLiBJdCBleGl0cyBub3JtYWxseSB3aGVuIHRoZQorICAgIGNvbm5lY3Rp
b24gaXMgY2xvc2VkIHdpdGggdGhlIGNsb3NlIGNvZGUgMTAwMCAoT0spIG9yIDEwMDEgKGdvaW5n
IGF3YXkpLgorICAgIEl0IHJhaXNlcyBhIDpleGM6YH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29u
bmVjdGlvbkNsb3NlZEVycm9yYCBleGNlcHRpb24KKyAgICB3aGVuIHRoZSBjb25uZWN0aW9uIGlz
IGNsb3NlZCB3aXRoIGFueSBvdGhlciBjb2RlLgorCisgICAgT25jZSB0aGUgY29ubmVjdGlvbiBp
cyBvcGVuLCBhIGBQaW5nIGZyYW1lYF8gaXMgc2VudCBldmVyeQorICAgIGBgcGluZ19pbnRlcnZh
bGBgIHNlY29uZHMuIFRoaXMgc2VydmVzIGFzIGEga2VlcGFsaXZlLiBJdCBoZWxwcyBrZWVwaW5n
CisgICAgdGhlIGNvbm5lY3Rpb24gb3BlbiwgZXNwZWNpYWxseSBpbiB0aGUgcHJlc2VuY2Ugb2Yg
cHJveGllcyB3aXRoIHNob3J0CisgICAgdGltZW91dHMgb24gaW5hY3RpdmUgY29ubmVjdGlvbnMu
IFNldCBgYHBpbmdfaW50ZXJ2YWxgYCB0byBgYE5vbmVgYCB0bworICAgIGRpc2FibGUgdGhpcyBi
ZWhhdmlvci4KKworICAgIC4uIF9QaW5nIGZyYW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNjQ1NSNzZWN0aW9uLTUuNS4yCisKKyAgICBJZiB0aGUgY29ycmVzcG9uZGluZyBgUG9u
ZyBmcmFtZWBfIGlzbid0IHJlY2VpdmVkIHdpdGhpbiBgYHBpbmdfdGltZW91dGBgCisgICAgc2Vj
b25kcywgdGhlIGNvbm5lY3Rpb24gaXMgY29uc2lkZXJlZCB1bnVzYWJsZSBhbmQgaXMgY2xvc2Vk
IHdpdGgKKyAgICBjb2RlIDEwMTEuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByZW1vdGUgZW5kcG9p
bnQgcmVtYWlucyByZXNwb25zaXZlLiBTZXQKKyAgICBgYHBpbmdfdGltZW91dGBgIHRvIGBgTm9u
ZWBgIHRvIGRpc2FibGUgdGhpcyBiZWhhdmlvci4KKworICAgIC4uIF9Qb25nIGZyYW1lOiBodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuNS4zCisKKyAgICBUaGUg
YGBjbG9zZV90aW1lb3V0YGAgcGFyYW1ldGVyIGRlZmluZXMgYSBtYXhpbXVtIHdhaXQgdGltZSBp
biBzZWNvbmRzIGZvcgorICAgIGNvbXBsZXRpbmcgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCB0
ZXJtaW5hdGluZyB0aGUgVENQIGNvbm5lY3Rpb24uCisgICAgOm1ldGg6YGNsb3NlYCBjb21wbGV0
ZXMgaW4gYXQgbW9zdCBgYDQgKiBjbG9zZV90aW1lb3V0YGAgb24gdGhlIHNlcnZlcgorICAgIHNp
ZGUgYW5kIGBgNSAqIGNsb3NlX3RpbWVvdXRgYCBvbiB0aGUgY2xpZW50IHNpZGUuCisKKyAgICBg
YGNsb3NlX3RpbWVvdXRgYCBuZWVkcyB0byBiZSBhIHBhcmFtZXRlciBvZiB0aGUgcHJvdG9jb2wg
YmVjYXVzZQorICAgIGBgd2Vic29ja2V0c2BgIHVzdWFsbHkgY2FsbHMgOm1ldGg6YGNsb3NlYCBp
bXBsaWNpdGx5OgorCisgICAgLSBvbiB0aGUgc2VydmVyIHNpZGUsIHdoZW4gdGhlIGNvbm5lY3Rp
b24gaGFuZGxlciB0ZXJtaW5hdGVzLAorICAgIC0gb24gdGhlIGNsaWVudCBzaWRlLCB3aGVuIGV4
aXRpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBmb3IgdGhlIGNvbm5lY3Rpb24uCisKKyAgICBUbyBh
cHBseSBhIHRpbWVvdXQgdG8gYW55IG90aGVyIEFQSSwgd3JhcCBpdCBpbiA6ZnVuYzpgfmFzeW5j
aW8ud2FpdF9mb3JgLgorCisgICAgVGhlIGBgbWF4X3NpemVgYCBwYXJhbWV0ZXIgZW5mb3JjZXMg
dGhlIG1heGltdW0gc2l6ZSBmb3IgaW5jb21pbmcgbWVzc2FnZXMKKyAgICBpbiBieXRlcy4gVGhl
IGRlZmF1bHQgdmFsdWUgaXMgMcKgTWlCLiBgYE5vbmVgYCBkaXNhYmxlcyB0aGUgbGltaXQuIElm
IGEKKyAgICBtZXNzYWdlIGxhcmdlciB0aGFuIHRoZSBtYXhpbXVtIHNpemUgaXMgcmVjZWl2ZWQs
IDptZXRoOmByZWN2YCB3aWxsCisgICAgcmFpc2UgOmV4YzpgfndlYnNvY2tldHMuZXhjZXB0aW9u
cy5Db25uZWN0aW9uQ2xvc2VkRXJyb3JgIGFuZCB0aGUKKyAgICBjb25uZWN0aW9uIHdpbGwgYmUg
Y2xvc2VkIHdpdGggY29kZSAxMDA5LgorCisgICAgVGhlIGBgbWF4X3F1ZXVlYGAgcGFyYW1ldGVy
IHNldHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBxdWV1ZSB0aGF0CisgICAgaG9sZHMgaW5j
b21pbmcgbWVzc2FnZXMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgMzJgYC4gYGBOb25lYGAgZGlz
YWJsZXMKKyAgICB0aGUgbGltaXQuIE1lc3NhZ2VzIGFyZSBhZGRlZCB0byBhbiBpbi1tZW1vcnkg
cXVldWUgd2hlbiB0aGV5J3JlIHJlY2VpdmVkOworICAgIHRoZW4gOm1ldGg6YHJlY3ZgIHBvcHMg
ZnJvbSB0aGF0IHF1ZXVlLiBJbiBvcmRlciB0byBwcmV2ZW50IGV4Y2Vzc2l2ZQorICAgIG1lbW9y
eSBjb25zdW1wdGlvbiB3aGVuIG1lc3NhZ2VzIGFyZSByZWNlaXZlZCBmYXN0ZXIgdGhhbiB0aGV5
IGNhbiBiZQorICAgIHByb2Nlc3NlZCwgdGhlIHF1ZXVlIG11c3QgYmUgYm91bmRlZC4gSWYgdGhl
IHF1ZXVlIGZpbGxzIHVwLCB0aGUgcHJvdG9jb2wKKyAgICBzdG9wcyBwcm9jZXNzaW5nIGluY29t
aW5nIGRhdGEgdW50aWwgOm1ldGg6YHJlY3ZgIGlzIGNhbGxlZC4gSW4gdGhpcworICAgIHNpdHVh
dGlvbiwgdmFyaW91cyByZWNlaXZlIGJ1ZmZlcnMgKGF0IGxlYXN0IGluIGBgYXN5bmNpb2BgIGFu
ZCBpbiB0aGUgT1MpCisgICAgd2lsbCBmaWxsIHVwLCB0aGVuIHRoZSBUQ1AgcmVjZWl2ZSB3aW5k
b3cgd2lsbCBzaHJpbmssIHNsb3dpbmcgZG93bgorICAgIHRyYW5zbWlzc2lvbiB0byBhdm9pZCBw
YWNrZXQgbG9zcy4KKworICAgIFNpbmNlIFB5dGhvbiBjYW4gdXNlIHVwIHRvIDQgYnl0ZXMgb2Yg
bWVtb3J5IHRvIHJlcHJlc2VudCBhIHNpbmdsZQorICAgIGNoYXJhY3RlciwgZWFjaCBjb25uZWN0
aW9uIG1heSB1c2UgdXAgdG8gYGA0ICogbWF4X3NpemUgKiBtYXhfcXVldWVgYAorICAgIGJ5dGVz
IG9mIG1lbW9yeSB0byBzdG9yZSBpbmNvbWluZyBtZXNzYWdlcy4gQnkgZGVmYXVsdCwgdGhpcyBp
cyAxMjjCoE1pQi4KKyAgICBZb3UgbWF5IHdhbnQgdG8gbG93ZXIgdGhlIGxpbWl0cywgZGVwZW5k
aW5nIG9uIHlvdXIgYXBwbGljYXRpb24ncworICAgIHJlcXVpcmVtZW50cy4KKworICAgIFRoZSBg
YHJlYWRfbGltaXRgYCBhcmd1bWVudCBzZXRzIHRoZSBoaWdoLXdhdGVyIGxpbWl0IG9mIHRoZSBi
dWZmZXIgZm9yCisgICAgaW5jb21pbmcgYnl0ZXMuIFRoZSBsb3ctd2F0ZXIgbGltaXQgaXMgaGFs
ZiB0aGUgaGlnaC13YXRlciBsaW1pdC4gVGhlCisgICAgZGVmYXVsdCB2YWx1ZSBpcyA2NMKgS2lC
LCBoYWxmIG9mIGFzeW5jaW8ncyBkZWZhdWx0IChiYXNlZCBvbiB0aGUgY3VycmVudAorICAgIGlt
cGxlbWVudGF0aW9uIG9mIDpjbGFzczpgfmFzeW5jaW8uU3RyZWFtUmVhZGVyYCkuCisKKyAgICBU
aGUgYGB3cml0ZV9saW1pdGBgIGFyZ3VtZW50IHNldHMgdGhlIGhpZ2gtd2F0ZXIgbGltaXQgb2Yg
dGhlIGJ1ZmZlciBmb3IKKyAgICBvdXRnb2luZyBieXRlcy4gVGhlIGxvdy13YXRlciBsaW1pdCBp
cyBhIHF1YXJ0ZXIgb2YgdGhlIGhpZ2gtd2F0ZXIgbGltaXQuCisgICAgVGhlIGRlZmF1bHQgdmFs
dWUgaXMgNjTCoEtpQiwgZXF1YWwgdG8gYXN5bmNpbydzIGRlZmF1bHQgKGJhc2VkIG9uIHRoZQor
ICAgIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgYGBGbG93Q29udHJvbE1peGluYGApLgorCisg
ICAgQXMgc29vbiBhcyB0aGUgSFRUUCByZXF1ZXN0IGFuZCByZXNwb25zZSBpbiB0aGUgb3Blbmlu
ZyBoYW5kc2hha2UgYXJlCisgICAgcHJvY2Vzc2VkOgorCisgICAgKiB0aGUgcmVxdWVzdCBwYXRo
IGlzIGF2YWlsYWJsZSBpbiB0aGUgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZTsKKyAgICAqIHRoZSBy
ZXF1ZXN0IGFuZCByZXNwb25zZSBIVFRQIGhlYWRlcnMgYXJlIGF2YWlsYWJsZSBpbiB0aGUKKyAg
ICAgIDphdHRyOmByZXF1ZXN0X2hlYWRlcnNgIGFuZCA6YXR0cjpgcmVzcG9uc2VfaGVhZGVyc2Ag
YXR0cmlidXRlcywKKyAgICAgIHdoaWNoIGFyZSA6Y2xhc3M6YH53ZWJzb2NrZXRzLmh0dHAuSGVh
ZGVyc2AgaW5zdGFuY2VzLgorCisgICAgSWYgYSBzdWJwcm90b2NvbCB3YXMgbmVnb3RpYXRlZCwg
aXQncyBhdmFpbGFibGUgaW4gdGhlIDphdHRyOmBzdWJwcm90b2NvbGAKKyAgICBhdHRyaWJ1dGUu
CisKKyAgICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwgdGhlIGNvZGUgaXMgYXZhaWxh
YmxlIGluIHRoZQorICAgIDphdHRyOmBjbG9zZV9jb2RlYCBhdHRyaWJ1dGUgYW5kIHRoZSByZWFz
b24gaW4gOmF0dHI6YGNsb3NlX3JlYXNvbmAuCisKKyAgICBBbGwgdGhlc2UgYXR0cmlidXRlcyBt
dXN0IGJlIHRyZWF0ZWQgYXMgcmVhZC1vbmx5LgorCisgICAgIiIiCisKKyAgICAjIFRoZXJlIGFy
ZSBvbmx5IHR3byBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjbGllbnQtc2lkZSBhbmQgc2VydmVy
LXNpZGUKKyAgICAjIGJlaGF2aW9yOiBtYXNraW5nIHRoZSBwYXlsb2FkIGFuZCBjbG9zaW5nIHRo
ZSB1bmRlcmx5aW5nIFRDUCBjb25uZWN0aW9uLgorICAgICMgU2V0IGlzX2NsaWVudCA9IFRydWUv
RmFsc2UgYW5kIHNpZGUgPSAiY2xpZW50Ii8ic2VydmVyIiB0byBwaWNrIGEgc2lkZS4KKyAgICBp
c19jbGllbnQ6IGJvb2wKKyAgICBzaWRlOiBzdHIgPSAidW5kZWZpbmVkIgorCisgICAgZGVmIF9f
aW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICAqLAorICAgICAgICBwaW5nX2ludGVydmFs
OiBPcHRpb25hbFtmbG9hdF0gPSAyMCwKKyAgICAgICAgcGluZ190aW1lb3V0OiBPcHRpb25hbFtm
bG9hdF0gPSAyMCwKKyAgICAgICAgY2xvc2VfdGltZW91dDogT3B0aW9uYWxbZmxvYXRdID0gTm9u
ZSwKKyAgICAgICAgbWF4X3NpemU6IE9wdGlvbmFsW2ludF0gPSAyICoqIDIwLAorICAgICAgICBt
YXhfcXVldWU6IE9wdGlvbmFsW2ludF0gPSAyICoqIDUsCisgICAgICAgIHJlYWRfbGltaXQ6IGlu
dCA9IDIgKiogMTYsCisgICAgICAgIHdyaXRlX2xpbWl0OiBpbnQgPSAyICoqIDE2LAorICAgICAg
ICBsb29wOiBPcHRpb25hbFthc3luY2lvLkFic3RyYWN0RXZlbnRMb29wXSA9IE5vbmUsCisgICAg
ICAgICMgVGhlIGZvbGxvd2luZyBhcmd1bWVudHMgYXJlIGtlcHQgb25seSBmb3IgYmFja3dhcmRz
IGNvbXBhdGliaWxpdHkuCisgICAgICAgIGhvc3Q6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAg
ICAgICBwb3J0OiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgc2VjdXJlOiBPcHRpb25h
bFtib29sXSA9IE5vbmUsCisgICAgICAgIGxlZ2FjeV9yZWN2OiBib29sID0gRmFsc2UsCisgICAg
ICAgIHRpbWVvdXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAg
ICAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBjbG9zZV90aW1lb3V0IHVzZWQgdG8gYmUg
Y2FsbGVkIHRpbWVvdXQuCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAg
IHRpbWVvdXQgPSAxMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2FybmluZ3Mud2Fybigi
cmVuYW1lIHRpbWVvdXQgdG8gY2xvc2VfdGltZW91dCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAg
ICAgICAgIyBJZiBib3RoIGFyZSBzcGVjaWZpZWQsIHRpbWVvdXQgaXMgaWdub3JlZC4KKyAgICAg
ICAgaWYgY2xvc2VfdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgY2xvc2VfdGltZW91dCA9
IHRpbWVvdXQKKworICAgICAgICBzZWxmLnBpbmdfaW50ZXJ2YWwgPSBwaW5nX2ludGVydmFsCisg
ICAgICAgIHNlbGYucGluZ190aW1lb3V0ID0gcGluZ190aW1lb3V0CisgICAgICAgIHNlbGYuY2xv
c2VfdGltZW91dCA9IGNsb3NlX3RpbWVvdXQKKyAgICAgICAgc2VsZi5tYXhfc2l6ZSA9IG1heF9z
aXplCisgICAgICAgIHNlbGYubWF4X3F1ZXVlID0gbWF4X3F1ZXVlCisgICAgICAgIHNlbGYucmVh
ZF9saW1pdCA9IHJlYWRfbGltaXQKKyAgICAgICAgc2VsZi53cml0ZV9saW1pdCA9IHdyaXRlX2xp
bWl0CisKKyAgICAgICAgaWYgbG9vcCBpcyBOb25lOgorICAgICAgICAgICAgbG9vcCA9IGFzeW5j
aW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgICAgICBzZWxmLmxvb3AgPSBsb29wCisKKyAgICAgICAg
c2VsZi5faG9zdCA9IGhvc3QKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2Vs
Zi5fc2VjdXJlID0gc2VjdXJlCisgICAgICAgIHNlbGYubGVnYWN5X3JlY3YgPSBsZWdhY3lfcmVj
dgorCisgICAgICAgICMgQ29uZmlndXJlIHJlYWQgYnVmZmVyIGxpbWl0cy4gVGhlIGhpZ2gtd2F0
ZXIgbGltaXQgaXMgZGVmaW5lZCBieQorICAgICAgICAjIGBgc2VsZi5yZWFkX2xpbWl0YGAuIFRo
ZSBgYGxpbWl0YGAgYXJndW1lbnQgY29udHJvbHMgdGhlIGxpbmUgbGVuZ3RoCisgICAgICAgICMg
bGltaXQgYW5kIGhhbGYgdGhlIGJ1ZmZlciBsaW1pdCBvZiA6Y2xhc3M6YH5hc3luY2lvLlN0cmVh
bVJlYWRlcmAuCisgICAgICAgICMgVGhhdCdzIHdoeSBpdCBtdXN0IGJlIHNldCB0byBoYWxmIG9m
IGBgc2VsZi5yZWFkX2xpbWl0YGAuCisgICAgICAgIHNlbGYucmVhZGVyID0gYXN5bmNpby5TdHJl
YW1SZWFkZXIobGltaXQ9cmVhZF9saW1pdCAvLyAyLCBsb29wPWxvb3ApCisKKyAgICAgICAgIyBD
b3BpZWQgZnJvbSBhc3luY2lvLkZsb3dDb250cm9sTWl4aW4KKyAgICAgICAgc2VsZi5fcGF1c2Vk
ID0gRmFsc2UKKyAgICAgICAgc2VsZi5fZHJhaW5fd2FpdGVyOiBPcHRpb25hbFthc3luY2lvLkZ1
dHVyZVtOb25lXV0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fZHJhaW5fbG9jayA9IGFzeW5jaW8u
TG9jaygKKyAgICAgICAgICAgIGxvb3A9bG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgz
LCA4KSBlbHNlIE5vbmUKKyAgICAgICAgKQorCisgICAgICAgICMgVGhpcyBjbGFzcyBpbXBsZW1l
bnRzIHRoZSBkYXRhIHRyYW5zZmVyIGFuZCBjbG9zaW5nIGhhbmRzaGFrZSwgd2hpY2gKKyAgICAg
ICAgIyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIGNsaWVudC1zaWRlIGFuZCB0aGUgc2VydmVyLXNp
ZGUuCisgICAgICAgICMgU3ViY2xhc3NlcyBpbXBsZW1lbnQgdGhlIG9wZW5pbmcgaGFuZHNoYWtl
IGFuZCwgb24gc3VjY2VzcywgZXhlY3V0ZQorICAgICAgICAjIDptZXRoOmBjb25uZWN0aW9uX29w
ZW5gIHRvIGNoYW5nZSB0aGUgc3RhdGUgdG8gT1BFTi4KKyAgICAgICAgc2VsZi5zdGF0ZSA9IFN0
YXRlLkNPTk5FQ1RJTkcKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAtIHN0YXRlID0gQ09OTkVD
VElORyIsIHNlbGYuc2lkZSkKKworICAgICAgICAjIEhUVFAgcHJvdG9jb2wgcGFyYW1ldGVycy4K
KyAgICAgICAgc2VsZi5wYXRoOiBzdHIKKyAgICAgICAgc2VsZi5yZXF1ZXN0X2hlYWRlcnM6IEhl
YWRlcnMKKyAgICAgICAgc2VsZi5yZXNwb25zZV9oZWFkZXJzOiBIZWFkZXJzCisKKyAgICAgICAg
IyBXZWJTb2NrZXQgcHJvdG9jb2wgcGFyYW1ldGVycy4KKyAgICAgICAgc2VsZi5leHRlbnNpb25z
OiBMaXN0W0V4dGVuc2lvbl0gPSBbXQorICAgICAgICBzZWxmLnN1YnByb3RvY29sOiBPcHRpb25h
bFtzdHJdID0gTm9uZQorCisgICAgICAgICMgVGhlIGNsb3NlIGNvZGUgYW5kIHJlYXNvbiBhcmUg
c2V0IHdoZW4gcmVjZWl2aW5nIGEgY2xvc2UgZnJhbWUgb3IKKyAgICAgICAgIyBsb3NpbmcgdGhl
IFRDUCBjb25uZWN0aW9uLgorICAgICAgICBzZWxmLmNsb3NlX2NvZGU6IGludAorICAgICAgICBz
ZWxmLmNsb3NlX3JlYXNvbjogc3RyCisKKyAgICAgICAgIyBDb21wbGV0ZWQgd2hlbiB0aGUgY29u
bmVjdGlvbiBzdGF0ZSBiZWNvbWVzIENMT1NFRC4gVHJhbnNsYXRlcyB0aGUKKyAgICAgICAgIyA6
bWV0aDpgY29ubmVjdGlvbl9sb3N0YCBjYWxsYmFjayB0byBhIDpjbGFzczpgfmFzeW5jaW8uRnV0
dXJlYAorICAgICAgICAjIHRoYXQgY2FuIGJlIGF3YWl0ZWQuIChPdGhlciA6Y2xhc3M6YH5hc3lu
Y2lvLlByb3RvY29sYCBjYWxsYmFja3MgYXJlCisgICAgICAgICMgdHJhbnNsYXRlZCBieSBgYHNl
bGYuc3RyZWFtX3JlYWRlcmBgKS4KKyAgICAgICAgc2VsZi5jb25uZWN0aW9uX2xvc3Rfd2FpdGVy
OiBhc3luY2lvLkZ1dHVyZVtOb25lXSA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCisKKyAgICAgICAg
IyBRdWV1ZSBvZiByZWNlaXZlZCBtZXNzYWdlcy4KKyAgICAgICAgc2VsZi5tZXNzYWdlczogRGVx
dWVbRGF0YV0gPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCisgICAgICAgIHNlbGYuX3BvcF9tZXNzYWdl
X3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVbTm9uZV1dID0gTm9uZQorICAgICAgICBz
ZWxmLl9wdXRfbWVzc2FnZV93YWl0ZXI6IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9
IE5vbmUKKworICAgICAgICAjIFByb3RlY3Qgc2VuZGluZyBmcmFnbWVudGVkIG1lc3NhZ2VzLgor
ICAgICAgICBzZWxmLl9mcmFnbWVudGVkX21lc3NhZ2Vfd2FpdGVyOiBPcHRpb25hbFthc3luY2lv
LkZ1dHVyZVtOb25lXV0gPSBOb25lCisKKyAgICAgICAgIyBNYXBwaW5nIG9mIHBpbmcgSURzIHRv
IHdhaXRlcnMsIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIuCisgICAgICAgIHNlbGYucGluZ3M6IERp
Y3RbYnl0ZXMsIGFzeW5jaW8uRnV0dXJlW05vbmVdXSA9IHt9CisKKyAgICAgICAgIyBUYXNrIHJ1
bm5pbmcgdGhlIGRhdGEgdHJhbnNmZXIuCisgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV90YXNr
OiBhc3luY2lvLlRhc2tbTm9uZV0KKworICAgICAgICAjIEV4Y2VwdGlvbiB0aGF0IG9jY3VycmVk
IGR1cmluZyBkYXRhIHRyYW5zZmVyLCBpZiBhbnkuCisgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0
YV9leGM6IE9wdGlvbmFsW0Jhc2VFeGNlcHRpb25dID0gTm9uZQorCisgICAgICAgICMgVGFzayBz
ZW5kaW5nIGtlZXBhbGl2ZSBwaW5ncy4KKyAgICAgICAgc2VsZi5rZWVwYWxpdmVfcGluZ190YXNr
OiBhc3luY2lvLlRhc2tbTm9uZV0KKworICAgICAgICAjIFRhc2sgY2xvc2luZyB0aGUgVENQIGNv
bm5lY3Rpb24uCisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbl90YXNrOiBhc3luY2lvLlRh
c2tbTm9uZV0KKworICAgICMgQ29waWVkIGZyb20gYXN5bmNpby5GbG93Q29udHJvbE1peGluCisg
ICAgYXN5bmMgZGVmIF9kcmFpbl9oZWxwZXIoc2VsZikgLT4gTm9uZTogICMgcHJhZ21hOiBubyBj
b3ZlcgorICAgICAgICBpZiBzZWxmLmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIuZG9uZSgpOgorICAg
ICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblJlc2V0RXJyb3IoIkNvbm5lY3Rpb24gbG9zdCIpCisg
ICAgICAgIGlmIG5vdCBzZWxmLl9wYXVzZWQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
d2FpdGVyID0gc2VsZi5fZHJhaW5fd2FpdGVyCisgICAgICAgIGFzc2VydCB3YWl0ZXIgaXMgTm9u
ZSBvciB3YWl0ZXIuY2FuY2VsbGVkKCkKKyAgICAgICAgd2FpdGVyID0gc2VsZi5sb29wLmNyZWF0
ZV9mdXR1cmUoKQorICAgICAgICBzZWxmLl9kcmFpbl93YWl0ZXIgPSB3YWl0ZXIKKyAgICAgICAg
YXdhaXQgd2FpdGVyCisKKyAgICAjIENvcGllZCBmcm9tIGFzeW5jaW8uU3RyZWFtV3JpdGVyCisg
ICAgYXN5bmMgZGVmIF9kcmFpbihzZWxmKSAtPiBOb25lOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisg
ICAgICAgIGlmIHNlbGYucmVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZXhjID0gc2Vs
Zi5yZWFkZXIuZXhjZXB0aW9uKCkKKyAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICByYWlzZSBleGMKKyAgICAgICAgaWYgc2VsZi50cmFuc3BvcnQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLnRyYW5zcG9ydC5pc19jbG9zaW5nKCk6CisgICAg
ICAgICAgICAgICAgIyBZaWVsZCB0byB0aGUgZXZlbnQgbG9vcCBzbyBjb25uZWN0aW9uX2xvc3Qo
KSBtYXkgYmUKKyAgICAgICAgICAgICAgICAjIGNhbGxlZC4gIFdpdGhvdXQgdGhpcywgX2RyYWlu
X2hlbHBlcigpIHdvdWxkIHJldHVybgorICAgICAgICAgICAgICAgICMgaW1tZWRpYXRlbHksIGFu
ZCBjb2RlIHRoYXQgY2FsbHMKKyAgICAgICAgICAgICAgICAjICAgICB3cml0ZSguLi4pOyB5aWVs
ZCBmcm9tIGRyYWluKCkKKyAgICAgICAgICAgICAgICAjIGluIGEgbG9vcCB3b3VsZCBuZXZlciBj
YWxsIGNvbm5lY3Rpb25fbG9zdCgpLCBzbyBpdAorICAgICAgICAgICAgICAgICMgd291bGQgbm90
IHNlZSBhbiBlcnJvciB3aGVuIHRoZSBzb2NrZXQgaXMgY2xvc2VkLgorICAgICAgICAgICAgICAg
IGF3YWl0IGFzeW5jaW8uc2xlZXAoCisgICAgICAgICAgICAgICAgICAgIDAsIGxvb3A9c2VsZi5s
b29wIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDgpIGVsc2UgTm9uZQorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgYXdhaXQgc2VsZi5fZHJhaW5faGVscGVyKCkKKworICAgIGRlZiBj
b25uZWN0aW9uX29wZW4oc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxi
YWNrIHdoZW4gdGhlIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBjb21wbGV0ZXMuCisKKyAg
ICAgICAgRW50ZXIgdGhlIE9QRU4gc3RhdGUgYW5kIHN0YXJ0IHRoZSBkYXRhIHRyYW5zZmVyIHBo
YXNlLgorCisgICAgICAgICIiIgorICAgICAgICAjIDQuMS4gVGhlIFdlYlNvY2tldCBDb25uZWN0
aW9uIGlzIEVzdGFibGlzaGVkLgorICAgICAgICBhc3NlcnQgc2VsZi5zdGF0ZSBpcyBTdGF0ZS5D
T05ORUNUSU5HCisgICAgICAgIHNlbGYuc3RhdGUgPSBTdGF0ZS5PUEVOCisgICAgICAgIGxvZ2dl
ci5kZWJ1ZygiJXMgLSBzdGF0ZSA9IE9QRU4iLCBzZWxmLnNpZGUpCisgICAgICAgICMgU3RhcnQg
dGhlIHRhc2sgdGhhdCByZWNlaXZlcyBpbmNvbWluZyBXZWJTb2NrZXQgbWVzc2FnZXMuCisgICAg
ICAgIHNlbGYudHJhbnNmZXJfZGF0YV90YXNrID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYu
dHJhbnNmZXJfZGF0YSgpKQorICAgICAgICAjIFN0YXJ0IHRoZSB0YXNrIHRoYXQgc2VuZHMgcGlu
Z3MgYXQgcmVndWxhciBpbnRlcnZhbHMuCisgICAgICAgIHNlbGYua2VlcGFsaXZlX3BpbmdfdGFz
ayA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhzZWxmLmtlZXBhbGl2ZV9waW5nKCkpCisgICAgICAg
ICMgU3RhcnQgdGhlIHRhc2sgdGhhdCBldmVudHVhbGx5IGNsb3NlcyB0aGUgVENQIGNvbm5lY3Rp
b24uCisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbl90YXNrID0gc2VsZi5sb29wLmNyZWF0
ZV90YXNrKHNlbGYuY2xvc2VfY29ubmVjdGlvbigpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGhvc3Qoc2VsZikgLT4gT3B0aW9uYWxbc3RyXToKKyAgICAgICAgYWx0ZXJuYXRpdmUgPSAicmVt
b3RlX2FkZHJlc3MiIGlmIHNlbGYuaXNfY2xpZW50IGVsc2UgImxvY2FsX2FkZHJlc3MiCisgICAg
ICAgIHdhcm5pbmdzLndhcm4oZiJ1c2Uge2FsdGVybmF0aXZlfVswXSBpbnN0ZWFkIG9mIGhvc3Qi
LCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0CisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgcG9ydChzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICBh
bHRlcm5hdGl2ZSA9ICJyZW1vdGVfYWRkcmVzcyIgaWYgc2VsZi5pc19jbGllbnQgZWxzZSAibG9j
YWxfYWRkcmVzcyIKKyAgICAgICAgd2FybmluZ3Mud2FybihmInVzZSB7YWx0ZXJuYXRpdmV9WzFd
IGluc3RlYWQgb2YgcG9ydCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3BvcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZWN1cmUoc2VsZikgLT4gT3B0aW9u
YWxbYm9vbF06CisgICAgICAgIHdhcm5pbmdzLndhcm4oZiJkb24ndCB1c2Ugc2VjdXJlIiwgRGVw
cmVjYXRpb25XYXJuaW5nKQorICAgICAgICByZXR1cm4gc2VsZi5fc2VjdXJlCisKKyAgICAjIFB1
YmxpYyBBUEkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9hZGRyZXNzKHNlbGYpIC0+
IEFueToKKyAgICAgICAgIiIiCisgICAgICAgIExvY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rp
b24uCisKKyAgICAgICAgVGhpcyBpcyBhIGBgKGhvc3QsIHBvcnQpYGAgdHVwbGUgb3IgYGBOb25l
YGAgaWYgdGhlIGNvbm5lY3Rpb24gaGFzbid0CisgICAgICAgIGJlZW4gZXN0YWJsaXNoZWQgeWV0
LgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBz
ZWxmLnRyYW5zcG9ydAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHRyYW5zcG9y
dC5nZXRfZXh0cmFfaW5mbygic29ja25hbWUiKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJl
bW90ZV9hZGRyZXNzKHNlbGYpIC0+IEFueToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbW90ZSBh
ZGRyZXNzIG9mIHRoZSBjb25uZWN0aW9uLgorCisgICAgICAgIFRoaXMgaXMgYSBgYChob3N0LCBw
b3J0KWBgIHR1cGxlIG9yIGBgTm9uZWBgIGlmIHRoZSBjb25uZWN0aW9uIGhhc24ndAorICAgICAg
ICBiZWVuIGVzdGFibGlzaGVkIHlldC4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgdHJhbnNwb3J0ID0gc2VsZi50cmFuc3BvcnQKKyAgICAgICAgZXhjZXB0IEF0dHJp
YnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiB0cmFuc3BvcnQuZ2V0X2V4dHJhX2luZm8oInBlZXJuYW1lIikKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBvcGVuKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIiIgorICAg
ICAgICBgYFRydWVgYCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHVzYWJsZS4KKworICAgICAgICBJ
dCBtYXkgYmUgdXNlZCB0byBkZXRlY3QgZGlzY29ubmVjdGlvbnMuIEhvd2V2ZXIsIHRoaXMgYXBw
cm9hY2ggaXMKKyAgICAgICAgZGlzY291cmFnZWQgcGVyIHRoZSBFQUZQXyBwcmluY2lwbGUuCisK
KyAgICAgICAgV2hlbiBgYG9wZW5gYCBpcyBgYEZhbHNlYGAsIHVzaW5nIHRoZSBjb25uZWN0aW9u
IHJhaXNlcyBhCisgICAgICAgIDpleGM6YH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29ubmVjdGlv
bkNsb3NlZGAgZXhjZXB0aW9uLgorCisgICAgICAgIC4uIF9FQUZQOiBodHRwczovL2RvY3MucHl0
aG9uLm9yZy8zL2dsb3NzYXJ5Lmh0bWwjdGVybS1lYWZwCisKKyAgICAgICAgIiIiCisgICAgICAg
IHJldHVybiBzZWxmLnN0YXRlIGlzIFN0YXRlLk9QRU4gYW5kIG5vdCBzZWxmLnRyYW5zZmVyX2Rh
dGFfdGFzay5kb25lKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgIiIiCisgICAgICAgIGBgVHJ1ZWBgIG9uY2UgdGhlIGNvbm5lY3Rpb24g
aXMgY2xvc2VkLgorCisgICAgICAgIEJlIGF3YXJlIHRoYXQgYm90aCA6YXR0cjpgb3BlbmAgYW5k
IDphdHRyOmBjbG9zZWRgIGFyZSBgYEZhbHNlYGAgZHVyaW5nCisgICAgICAgIHRoZSBvcGVuaW5n
IGFuZCBjbG9zaW5nIHNlcXVlbmNlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuc3RhdGUgaXMgU3RhdGUuQ0xPU0VECisKKyAgICBhc3luYyBkZWYgd2FpdF9jbG9zZWQoc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQgdW50aWwgdGhlIGNvbm5lY3Rp
b24gaXMgY2xvc2VkLgorCisgICAgICAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIDphdHRyOmBjbG9z
ZWRgLCBleGNlcHQgaXQgY2FuIGJlIGF3YWl0ZWQuCisKKyAgICAgICAgVGhpcyBjYW4gbWFrZSBp
dCBlYXNpZXIgdG8gaGFuZGxlIGNvbm5lY3Rpb24gdGVybWluYXRpb24sIHJlZ2FyZGxlc3MKKyAg
ICAgICAgb2YgaXRzIGNhdXNlLCBpbiB0YXNrcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIFdlYlNv
Y2tldCBjb25uZWN0aW9uLgorCisgICAgICAgICIiIgorICAgICAgICBhd2FpdCBhc3luY2lvLnNo
aWVsZChzZWxmLmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIpCisKKyAgICBhc3luYyBkZWYgX19haXRl
cl9fKHNlbGYpIC0+IEFzeW5jSXRlcmF0b3JbRGF0YV06CisgICAgICAgICIiIgorICAgICAgICBJ
dGVyYXRlIG9uIHJlY2VpdmVkIG1lc3NhZ2VzLgorCisgICAgICAgIEV4aXQgbm9ybWFsbHkgd2hl
biB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQgd2l0aCBjb2RlIDEwMDAgb3IgMTAwMS4KKworICAg
ICAgICBSYWlzZSBhbiBleGNlcHRpb24gaW4gb3RoZXIgY2FzZXMuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgeWll
bGQgYXdhaXQgc2VsZi5yZWN2KCkKKyAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25DbG9zZWRPSzoK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgYXN5bmMgZGVmIHJlY3Yoc2VsZikgLT4gRGF0YToK
KyAgICAgICAgIiIiCisgICAgICAgIFJlY2VpdmUgdGhlIG5leHQgbWVzc2FnZS4KKworICAgICAg
ICBSZXR1cm4gYSA6Y2xhc3M6YHN0cmAgZm9yIGEgdGV4dCBmcmFtZSBhbmQgOmNsYXNzOmBieXRl
c2AgZm9yIGEgYmluYXJ5CisgICAgICAgIGZyYW1lLgorCisgICAgICAgIFdoZW4gdGhlIGVuZCBv
ZiB0aGUgbWVzc2FnZSBzdHJlYW0gaXMgcmVhY2hlZCwgOm1ldGg6YHJlY3ZgIHJhaXNlcworICAg
ICAgICA6ZXhjOmB+d2Vic29ja2V0cy5leGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRgLiBTcGVj
aWZpY2FsbHksIGl0CisgICAgICAgIHJhaXNlcyA6ZXhjOmB+d2Vic29ja2V0cy5leGNlcHRpb25z
LkNvbm5lY3Rpb25DbG9zZWRPS2AgYWZ0ZXIgYSBub3JtYWwKKyAgICAgICAgY29ubmVjdGlvbiBj
bG9zdXJlIGFuZAorICAgICAgICA6ZXhjOmB+d2Vic29ja2V0cy5leGNlcHRpb25zLkNvbm5lY3Rp
b25DbG9zZWRFcnJvcmAgYWZ0ZXIgYSBwcm90b2NvbAorICAgICAgICBlcnJvciBvciBhIG5ldHdv
cmsgZmFpbHVyZS4KKworICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAorCisgICAgICAg
ICAgICA6bWV0aDpgcmVjdmAgdXNlZCB0byByZXR1cm4gYGBOb25lYGAgaW5zdGVhZC4gUmVmZXIg
dG8gdGhlCisgICAgICAgICAgICBjaGFuZ2Vsb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgQ2Fu
Y2VsaW5nIDptZXRoOmByZWN2YCBpcyBzYWZlLiBUaGVyZSdzIG5vIHJpc2sgb2YgbG9zaW5nIHRo
ZSBuZXh0CisgICAgICAgIG1lc3NhZ2UuIFRoZSBuZXh0IGludm9jYXRpb24gb2YgOm1ldGg6YHJl
Y3ZgIHdpbGwgcmV0dXJuIGl0LiBUaGlzCisgICAgICAgIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGVu
Zm9yY2UgYSB0aW1lb3V0IGJ5IHdyYXBwaW5nIDptZXRoOmByZWN2YCBpbgorICAgICAgICA6ZnVu
YzpgfmFzeW5jaW8ud2FpdF9mb3JgLgorCisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhj
ZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkOiB3aGVuIHRoZQorICAgICAgICAgICAgY29ubmVjdGlv
biBpcyBjbG9zZWQKKyAgICAgICAgOnJhaXNlcyBSdW50aW1lRXJyb3I6IGlmIHR3byBjb3JvdXRp
bmVzIGNhbGwgOm1ldGg6YHJlY3ZgIGNvbmN1cnJlbnRseQorCisgICAgICAgICIiIgorICAgICAg
ICBpZiBzZWxmLl9wb3BfbWVzc2FnZV93YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgImNhbm5vdCBjYWxsIHJlY3Ygd2hp
bGUgYW5vdGhlciBjb3JvdXRpbmUgIgorICAgICAgICAgICAgICAgICJpcyBhbHJlYWR5IHdhaXRp
bmcgZm9yIHRoZSBuZXh0IG1lc3NhZ2UiCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBEb24n
dCBhd2FpdCBzZWxmLmVuc3VyZV9vcGVuKCkgaGVyZToKKyAgICAgICAgIyAtIG1lc3NhZ2VzIGNv
dWxkIGJlIGF2YWlsYWJsZSBpbiB0aGUgcXVldWUgZXZlbiBpZiB0aGUgY29ubmVjdGlvbgorICAg
ICAgICAjICAgaXMgY2xvc2VkOworICAgICAgICAjIC0gbWVzc2FnZXMgY291bGQgYmUgcmVjZWl2
ZWQgYmVmb3JlIHRoZSBjbG9zaW5nIGZyYW1lIGV2ZW4gaWYgdGhlCisgICAgICAgICMgICBjb25u
ZWN0aW9uIGlzIGNsb3NpbmcuCisKKyAgICAgICAgIyBXYWl0IHVudGlsIHRoZXJlJ3MgYSBtZXNz
YWdlIGluIHRoZSBxdWV1ZSAoaWYgbmVjZXNzYXJ5KSBvciB0aGUKKyAgICAgICAgIyBjb25uZWN0
aW9uIGlzIGNsb3NlZC4KKyAgICAgICAgd2hpbGUgbGVuKHNlbGYubWVzc2FnZXMpIDw9IDA6Cisg
ICAgICAgICAgICBwb3BfbWVzc2FnZV93YWl0ZXI6IGFzeW5jaW8uRnV0dXJlW05vbmVdID0gc2Vs
Zi5sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICAgICAgc2VsZi5fcG9wX21lc3NhZ2Vfd2Fp
dGVyID0gcG9wX21lc3NhZ2Vfd2FpdGVyCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgIyBJZiBhc3luY2lvLndhaXQoKSBpcyBjYW5jZWxlZCwgaXQgZG9lc24ndCBjYW5jZWwKKyAg
ICAgICAgICAgICAgICAjIHBvcF9tZXNzYWdlX3dhaXRlciBhbmQgc2VsZi50cmFuc2Zlcl9kYXRh
X3Rhc2suCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0KAorICAgICAgICAgICAg
ICAgICAgICBbcG9wX21lc3NhZ2Vfd2FpdGVyLCBzZWxmLnRyYW5zZmVyX2RhdGFfdGFza10sCisg
ICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJd
IDwgKDMsIDgpIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3doZW49YXN5
bmNpby5GSVJTVF9DT01QTEVURUQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3BfbWVzc2FnZV93YWl0ZXIgPSBOb25lCisK
KyAgICAgICAgICAgICMgSWYgYXN5bmNpby53YWl0KC4uLikgZXhpdGVkIGJlY2F1c2Ugc2VsZi50
cmFuc2Zlcl9kYXRhX3Rhc2sKKyAgICAgICAgICAgICMgY29tcGxldGVkIGJlZm9yZSByZWNlaXZp
bmcgYSBuZXcgbWVzc2FnZSwgcmFpc2UgYSBzdWl0YWJsZQorICAgICAgICAgICAgIyBleGNlcHRp
b24gKG9yIHJldHVybiBOb25lIGlmIGxlZ2FjeV9yZWN2IGlzIGVuYWJsZWQpLgorICAgICAgICAg
ICAgaWYgbm90IHBvcF9tZXNzYWdlX3dhaXRlci5kb25lKCk6CisgICAgICAgICAgICAgICAgaWYg
c2VsZi5sZWdhY3lfcmVjdjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUgICMgdHlw
ZTogaWdub3JlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBX
YWl0IHVudGlsIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCB0byByYWlzZQorICAgICAgICAgICAg
ICAgICAgICAjIENvbm5lY3Rpb25DbG9zZWQgd2l0aCB0aGUgY29ycmVjdCBjb2RlIGFuZCByZWFz
b24uCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYuZW5zdXJlX29wZW4oKQorCisgICAg
ICAgICMgUG9wIGEgbWVzc2FnZSBmcm9tIHRoZSBxdWV1ZS4KKyAgICAgICAgbWVzc2FnZSA9IHNl
bGYubWVzc2FnZXMucG9wbGVmdCgpCisKKyAgICAgICAgIyBOb3RpZnkgdHJhbnNmZXJfZGF0YSgp
LgorICAgICAgICBpZiBzZWxmLl9wdXRfbWVzc2FnZV93YWl0ZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBzZWxmLl9wdXRfbWVzc2FnZV93YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorICAgICAg
ICAgICAgc2VsZi5fcHV0X21lc3NhZ2Vfd2FpdGVyID0gTm9uZQorCisgICAgICAgIHJldHVybiBt
ZXNzYWdlCisKKyAgICBhc3luYyBkZWYgc2VuZCgKKyAgICAgICAgc2VsZiwgbWVzc2FnZTogVW5p
b25bRGF0YSwgSXRlcmFibGVbRGF0YV0sIEFzeW5jSXRlcmFibGVbRGF0YV1dCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBhIG1lc3NhZ2UuCisKKyAgICAgICAgQSBz
dHJpbmcgKDpjbGFzczpgc3RyYCkgaXMgc2VudCBhcyBhIGBUZXh0IGZyYW1lYF8uIEEgYnl0ZXN0
cmluZyBvcgorICAgICAgICBieXRlcy1saWtlIG9iamVjdCAoOmNsYXNzOmBieXRlc2AsIDpjbGFz
czpgYnl0ZWFycmF5YCwgb3IKKyAgICAgICAgOmNsYXNzOmBtZW1vcnl2aWV3YCkgaXMgc2VudCBh
cyBhIGBCaW5hcnkgZnJhbWVgXy4KKworICAgICAgICAuLiBfVGV4dCBmcmFtZTogaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjYKKyAgICAgICAgLi4gX0JpbmFy
eSBmcmFtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjYK
KworICAgICAgICA6bWV0aDpgc2VuZGAgYWxzbyBhY2NlcHRzIGFuIGl0ZXJhYmxlIG9yIGFuIGFz
eW5jaHJvbm91cyBpdGVyYWJsZSBvZgorICAgICAgICBzdHJpbmdzLCBieXRlc3RyaW5ncywgb3Ig
Ynl0ZXMtbGlrZSBvYmplY3RzLiBJbiB0aGF0IGNhc2UgdGhlIG1lc3NhZ2UKKyAgICAgICAgaXMg
ZnJhZ21lbnRlZC4gRWFjaCBpdGVtIGlzIHRyZWF0ZWQgYXMgYSBtZXNzYWdlIGZyYWdtZW50IGFu
ZCBzZW50IGluCisgICAgICAgIGl0cyBvd24gZnJhbWUuIEFsbCBpdGVtcyBtdXN0IGJlIG9mIHRo
ZSBzYW1lIHR5cGUsIG9yIGVsc2UKKyAgICAgICAgOm1ldGg6YHNlbmRgIHdpbGwgcmFpc2UgYSA6
ZXhjOmBUeXBlRXJyb3JgIGFuZCB0aGUgY29ubmVjdGlvbiB3aWxsIGJlCisgICAgICAgIGNsb3Nl
ZC4KKworICAgICAgICBDYW5jZWxpbmcgOm1ldGg6YHNlbmRgIGlzIGRpc2NvdXJhZ2VkLiBJbnN0
ZWFkLCB5b3Ugc2hvdWxkIGNsb3NlIHRoZQorICAgICAgICBjb25uZWN0aW9uIHdpdGggOm1ldGg6
YGNsb3NlYC4gSW5kZWVkLCB0aGVyZSBvbmx5IHR3byBzaXR1YXRpb25zIHdoZXJlCisgICAgICAg
IDptZXRoOmBzZW5kYCB5aWVsZHMgY29udHJvbCB0byB0aGUgZXZlbnQgbG9vcDoKKworICAgICAg
ICAxLiBUaGUgd3JpdGUgYnVmZmVyIGlzIGZ1bGwuIElmIHlvdSBkb24ndCB3YW50IHRvIHdhaXQg
dW50aWwgZW5vdWdoCisgICAgICAgICAgIGRhdGEgaXMgc2VudCwgeW91ciBvbmx5IGFsdGVybmF0
aXZlIGlzIHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgICA6bWV0aDpgY2xvc2Vg
IHdpbGwgbGlrZWx5IHRpbWUgb3V0IHRoZW4gYWJvcnQgdGhlIFRDUCBjb25uZWN0aW9uLgorICAg
ICAgICAyLiBgYG1lc3NhZ2VgYCBpcyBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IuIFN0b3BwaW5n
IGluIHRoZSBtaWRkbGUgb2YKKyAgICAgICAgICAgYSBmcmFnbWVudGVkIG1lc3NhZ2Ugd2lsbCBj
YXVzZSBhIHByb3RvY29sIGVycm9yLiBDbG9zaW5nIHRoZQorICAgICAgICAgICBjb25uZWN0aW9u
IGhhcyB0aGUgc2FtZSBlZmZlY3QuCisKKyAgICAgICAgOnJhaXNlcyBUeXBlRXJyb3I6IGZvciB1
bnN1cHBvcnRlZCBpbnB1dHMKKworICAgICAgICAiIiIKKyAgICAgICAgYXdhaXQgc2VsZi5lbnN1
cmVfb3BlbigpCisKKyAgICAgICAgIyBXaGlsZSBzZW5kaW5nIGEgZnJhZ21lbnRlZCBtZXNzYWdl
LCBwcmV2ZW50IHNlbmRpbmcgb3RoZXIgbWVzc2FnZXMKKyAgICAgICAgIyB1bnRpbCBhbGwgZnJh
Z21lbnRzIGFyZSBzZW50LgorICAgICAgICB3aGlsZSBzZWxmLl9mcmFnbWVudGVkX21lc3NhZ2Vf
d2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zaGllbGQoc2Vs
Zi5fZnJhZ21lbnRlZF9tZXNzYWdlX3dhaXRlcikKKworICAgICAgICAjIFVuZnJhZ21lbnRlZCBt
ZXNzYWdlIC0tIHRoaXMgY2FzZSBtdXN0IGJlIGhhbmRsZWQgZmlyc3QgYmVjYXVzZQorICAgICAg
ICAjIHN0cmluZ3MgYW5kIGJ5dGVzLWxpa2Ugb2JqZWN0cyBhcmUgaXRlcmFibGUuCisKKyAgICAg
ICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCAoc3RyLCBieXRlcywgYnl0ZWFycmF5LCBtZW1vcnl2
aWV3KSk6CisgICAgICAgICAgICBvcGNvZGUsIGRhdGEgPSBwcmVwYXJlX2RhdGEobWVzc2FnZSkK
KyAgICAgICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoVHJ1ZSwgb3Bjb2RlLCBkYXRhKQor
CisgICAgICAgICMgRnJhZ21lbnRlZCBtZXNzYWdlIC0tIHJlZ3VsYXIgaXRlcmF0b3IuCisKKyAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIEl0ZXJhYmxlKToKKworICAgICAgICAgICAg
IyBXb3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL215cHkvaXNzdWVzLzYyMjcK
KyAgICAgICAgICAgIG1lc3NhZ2UgPSBjYXN0KEl0ZXJhYmxlW0RhdGFdLCBtZXNzYWdlKQorCisg
ICAgICAgICAgICBpdGVyX21lc3NhZ2UgPSBpdGVyKG1lc3NhZ2UpCisgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgbWVzc2FnZV9jaHVuayA9IG5leHQoaXRlcl9tZXNzYWdlKQorICAg
ICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICBvcGNvZGUsIGRhdGEgPSBwcmVwYXJlX2RhdGEobWVzc2FnZV9jaHVuaykKKwor
ICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZF9tZXNzYWdlX3dhaXRlciA9IGFzeW5jaW8uRnV0
dXJlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIEZpcnN0IGZyYWdtZW50
LgorICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoRmFsc2UsIG9wY29kZSwg
ZGF0YSkKKworICAgICAgICAgICAgICAgICMgT3RoZXIgZnJhZ21lbnRzLgorICAgICAgICAgICAg
ICAgIGZvciBtZXNzYWdlX2NodW5rIGluIGl0ZXJfbWVzc2FnZToKKyAgICAgICAgICAgICAgICAg
ICAgY29uZmlybV9vcGNvZGUsIGRhdGEgPSBwcmVwYXJlX2RhdGEobWVzc2FnZV9jaHVuaykKKyAg
ICAgICAgICAgICAgICAgICAgaWYgY29uZmlybV9vcGNvZGUgIT0gb3Bjb2RlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRhIGNvbnRhaW5zIGluY29uc2lzdGVu
dCB0eXBlcyIpCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoRmFs
c2UsIE9QX0NPTlQsIGRhdGEpCisKKyAgICAgICAgICAgICAgICAjIEZpbmFsIGZyYWdtZW50Lgor
ICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoVHJ1ZSwgT1BfQ09OVCwgYiIi
KQorCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICMgV2Un
cmUgaGFsZi13YXkgdGhyb3VnaCBhIGZyYWdtZW50ZWQgbWVzc2FnZSBhbmQgd2UgY2FuJ3QKKyAg
ICAgICAgICAgICAgICAjIGNvbXBsZXRlIGl0LiBUaGlzIG1ha2VzIHRoZSBjb25uZWN0aW9uIHVu
dXNhYmxlLgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbF9jb25uZWN0aW9uKDEwMTEpCisgICAg
ICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9mcmFnbWVudGVkX21lc3NhZ2Vfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAg
ICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVkX21lc3NhZ2Vfd2FpdGVyID0gTm9uZQorCisgICAg
ICAgICMgRnJhZ21lbnRlZCBtZXNzYWdlIC0tIGFzeW5jaHJvbm91cyBpdGVyYXRvcgorCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBBc3luY0l0ZXJhYmxlKToKKyAgICAgICAgICAg
ICMgYWl0ZXJfbWVzc2FnZSA9IGFpdGVyKG1lc3NhZ2UpIHdpdGhvdXQgYWl0ZXIKKyAgICAgICAg
ICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy81NzM4CisgICAgICAg
ICAgICBhaXRlcl9tZXNzYWdlID0gdHlwZShtZXNzYWdlKS5fX2FpdGVyX18obWVzc2FnZSkgICMg
dHlwZTogaWdub3JlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBtZXNzYWdl
X2NodW5rID0gYW5leHQoYWl0ZXJfbWVzc2FnZSkgd2l0aG91dCBhbmV4dAorICAgICAgICAgICAg
ICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy81NzM4CisgICAgICAg
ICAgICAgICAgbWVzc2FnZV9jaHVuayA9IGF3YWl0IHR5cGUoYWl0ZXJfbWVzc2FnZSkuX19hbmV4
dF9fKCAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgYWl0ZXJfbWVzc2FnZQor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246
CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBvcGNvZGUsIGRhdGEgPSBwcmVw
YXJlX2RhdGEobWVzc2FnZV9jaHVuaykKKworICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZF9t
ZXNzYWdlX3dhaXRlciA9IGFzeW5jaW8uRnV0dXJlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAjIEZpcnN0IGZyYWdtZW50LgorICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYu
d3JpdGVfZnJhbWUoRmFsc2UsIG9wY29kZSwgZGF0YSkKKworICAgICAgICAgICAgICAgICMgT3Ro
ZXIgZnJhZ21lbnRzLgorICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhv
bi9teXB5L2lzc3Vlcy81NzM4CisgICAgICAgICAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2VfY2h1
bmsgaW4gYWl0ZXJfbWVzc2FnZTogICMgdHlwZTogaWdub3JlCisgICAgICAgICAgICAgICAgICAg
IGNvbmZpcm1fb3Bjb2RlLCBkYXRhID0gcHJlcGFyZV9kYXRhKG1lc3NhZ2VfY2h1bmspCisgICAg
ICAgICAgICAgICAgICAgIGlmIGNvbmZpcm1fb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0YSBjb250YWlucyBpbmNvbnNpc3RlbnQg
dHlwZXMiKQorICAgICAgICAgICAgICAgICAgICBhd2FpdCBzZWxmLndyaXRlX2ZyYW1lKEZhbHNl
LCBPUF9DT05ULCBkYXRhKQorCisgICAgICAgICAgICAgICAgIyBGaW5hbCBmcmFnbWVudC4KKyAg
ICAgICAgICAgICAgICBhd2FpdCBzZWxmLndyaXRlX2ZyYW1lKFRydWUsIE9QX0NPTlQsIGIiIikK
KworICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAjIFdlJ3Jl
IGhhbGYtd2F5IHRocm91Z2ggYSBmcmFnbWVudGVkIG1lc3NhZ2UgYW5kIHdlIGNhbid0CisgICAg
ICAgICAgICAgICAgIyBjb21wbGV0ZSBpdC4gVGhpcyBtYWtlcyB0aGUgY29ubmVjdGlvbiB1bnVz
YWJsZS4KKyAgICAgICAgICAgICAgICBzZWxmLmZhaWxfY29ubmVjdGlvbigxMDExKQorICAgICAg
ICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAg
c2VsZi5fZnJhZ21lbnRlZF9tZXNzYWdlX3dhaXRlci5zZXRfcmVzdWx0KE5vbmUpCisgICAgICAg
ICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZF9tZXNzYWdlX3dhaXRlciA9IE5vbmUKKworICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYnl0ZXMs
IHN0ciwgb3IgaXRlcmFibGUiKQorCisgICAgYXN5bmMgZGVmIGNsb3NlKHNlbGYsIGNvZGU6IGlu
dCA9IDEwMDAsIHJlYXNvbjogc3RyID0gIiIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAg
ICBQZXJmb3JtIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4KKworICAgICAgICA6bWV0aDpgY2xvc2Vg
IHdhaXRzIGZvciB0aGUgb3RoZXIgZW5kIHRvIGNvbXBsZXRlIHRoZSBoYW5kc2hha2UgYW5kCisg
ICAgICAgIGZvciB0aGUgVENQIGNvbm5lY3Rpb24gdG8gdGVybWluYXRlLiBBcyBhIGNvbnNlcXVl
bmNlLCB0aGVyZSdzIG5vIG5lZWQKKyAgICAgICAgdG8gYXdhaXQgOm1ldGg6YHdhaXRfY2xvc2Vk
YDsgOm1ldGg6YGNsb3NlYCBhbHJlYWR5IGRvZXMgaXQuCisKKyAgICAgICAgOm1ldGg6YGNsb3Nl
YCBpcyBpZGVtcG90ZW50OiBpdCBkb2Vzbid0IGRvIGFueXRoaW5nIG9uY2UgdGhlCisgICAgICAg
IGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCisgICAgICAgIFdyYXBwaW5nIDpmdW5jOmBjbG9zZWAg
aW4gOmZ1bmM6YH5hc3luY2lvLmNyZWF0ZV90YXNrYCBpcyBzYWZlLCBnaXZlbgorICAgICAgICB0
aGF0IGVycm9ycyBkdXJpbmcgY29ubmVjdGlvbiB0ZXJtaW5hdGlvbiBhcmVuJ3QgcGFydGljdWxh
cmx5IHVzZWZ1bC4KKworICAgICAgICBDYW5jZWxpbmcgOm1ldGg6YGNsb3NlYCBpcyBkaXNjb3Vy
YWdlZC4gSWYgaXQgdGFrZXMgdG9vIGxvbmcsIHlvdSBjYW4KKyAgICAgICAgc2V0IGEgc2hvcnRl
ciBgYGNsb3NlX3RpbWVvdXRgYC4gSWYgeW91IGRvbid0IHdhbnQgdG8gd2FpdCwgbGV0IHRoZQor
ICAgICAgICBQeXRob24gcHJvY2VzcyBleGl0LCB0aGVuIHRoZSBPUyB3aWxsIGNsb3NlIHRoZSBU
Q1AgY29ubmVjdGlvbi4KKworICAgICAgICA6cGFyYW0gY29kZTogV2ViU29ja2V0IGNsb3NlIGNv
ZGUKKyAgICAgICAgOnBhcmFtIHJlYXNvbjogV2ViU29ja2V0IGNsb3NlIHJlYXNvbgorCisgICAg
ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLndhaXRfZm9y
KAorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfY2xvc2VfZnJhbWUoc2VyaWFsaXplX2Nsb3Nl
KGNvZGUsIHJlYXNvbikpLAorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfdGltZW91dCwKKyAg
ICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgz
LCA4KSBlbHNlIE5vbmUsCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBhc3luY2lvLlRp
bWVvdXRFcnJvcjoKKyAgICAgICAgICAgICMgSWYgdGhlIGNsb3NlIGZyYW1lIGNhbm5vdCBiZSBz
ZW50IGJlY2F1c2UgdGhlIHNlbmQgYnVmZmVycworICAgICAgICAgICAgIyBhcmUgZnVsbCwgdGhl
IGNsb3NpbmcgaGFuZHNoYWtlIHdvbid0IGNvbXBsZXRlIGFueXdheS4KKyAgICAgICAgICAgICMg
RmFpbCB0aGUgY29ubmVjdGlvbiB0byBzaHV0IGRvd24gZmFzdGVyLgorICAgICAgICAgICAgc2Vs
Zi5mYWlsX2Nvbm5lY3Rpb24oKQorCisgICAgICAgICMgSWYgbm8gY2xvc2UgZnJhbWUgaXMgcmVj
ZWl2ZWQgd2l0aGluIHRoZSB0aW1lb3V0LCB3YWl0X2ZvcigpIGNhbmNlbHMKKyAgICAgICAgIyB0
aGUgZGF0YSB0cmFuc2ZlciB0YXNrIGFuZCByYWlzZXMgVGltZW91dEVycm9yLgorCisgICAgICAg
ICMgSWYgY2xvc2UoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgY29uY3VycmVudGx5IGFuZCBv
bmUgb2YgdGhlc2UKKyAgICAgICAgIyBjYWxscyBoaXRzIHRoZSB0aW1lb3V0LCB0aGUgZGF0YSB0
cmFuc2ZlciB0YXNrIHdpbGwgYmUgY2FuY2VsbGVkLgorICAgICAgICAjIE90aGVyIGNhbGxzIHdp
bGwgcmVjZWl2ZSBhIENhbmNlbGxlZEVycm9yIGhlcmUuCisKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgIyBJZiBjbG9zZSgpIGlzIGNhbmNlbGVkIGR1cmluZyB0aGUgd2FpdCwgc2VsZi50cmFu
c2Zlcl9kYXRhX3Rhc2sKKyAgICAgICAgICAgICMgaXMgY2FuY2VsZWQgYmVmb3JlIHRoZSB0aW1l
b3V0IGVsYXBzZXMuCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLndhaXRfZm9yKAorICAgICAg
ICAgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV90YXNrLAorICAgICAgICAgICAgICAgIHNlbGYu
Y2xvc2VfdGltZW91dCwKKyAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVy
c2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUsCisgICAgICAgICAgICApCisgICAgICAg
IGV4Y2VwdCAoYXN5bmNpby5UaW1lb3V0RXJyb3IsIGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgor
ICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgV2FpdCBmb3IgdGhlIGNsb3NlIGNvbm5lY3Rp
b24gdGFzayB0byBjbG9zZSB0aGUgVENQIGNvbm5lY3Rpb24uCisgICAgICAgIGF3YWl0IGFzeW5j
aW8uc2hpZWxkKHNlbGYuY2xvc2VfY29ubmVjdGlvbl90YXNrKQorCisgICAgYXN5bmMgZGVmIHBp
bmcoc2VsZiwgZGF0YTogT3B0aW9uYWxbRGF0YV0gPSBOb25lKSAtPiBBd2FpdGFibGVbTm9uZV06
CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEgcGluZy4KKworICAgICAgICBSZXR1cm4gYSA6
Y2xhc3M6YH5hc3luY2lvLkZ1dHVyZWAgd2hpY2ggd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUK
KyAgICAgICAgY29ycmVzcG9uZGluZyBwb25nIGlzIHJlY2VpdmVkIGFuZCB3aGljaCB5b3UgbWF5
IGlnbm9yZSBpZiB5b3UgZG9uJ3QKKyAgICAgICAgd2FudCB0byB3YWl0LgorCisgICAgICAgIEEg
cGluZyBtYXkgc2VydmUgYXMgYSBrZWVwYWxpdmUgb3IgYXMgYSBjaGVjayB0aGF0IHRoZSByZW1v
dGUgZW5kcG9pbnQKKyAgICAgICAgcmVjZWl2ZWQgYWxsIG1lc3NhZ2VzIHVwIHRvIHRoaXMgcG9p
bnQ6OgorCisgICAgICAgICAgICBwb25nX3dhaXRlciA9IGF3YWl0IHdzLnBpbmcoKQorICAgICAg
ICAgICAgYXdhaXQgcG9uZ193YWl0ZXIgICAjIG9ubHkgaWYgeW91IHdhbnQgdG8gd2FpdCBmb3Ig
dGhlIHBvbmcKKworICAgICAgICBCeSBkZWZhdWx0LCB0aGUgcGluZyBjb250YWlucyBmb3VyIHJh
bmRvbSBieXRlcy4gVGhpcyBwYXlsb2FkIG1heSBiZQorICAgICAgICBvdmVycmlkZGVuIHdpdGgg
dGhlIG9wdGlvbmFsIGBgZGF0YWBgIGFyZ3VtZW50IHdoaWNoIG11c3QgYmUgYSBzdHJpbmcKKyAg
ICAgICAgKHdoaWNoIHdpbGwgYmUgZW5jb2RlZCB0byBVVEYtOCkgb3IgYSBieXRlcy1saWtlIG9i
amVjdC4KKworICAgICAgICBDYW5jZWxpbmcgOm1ldGg6YHBpbmdgIGlzIGRpc2NvdXJhZ2VkLiBJ
ZiA6bWV0aDpgcGluZ2AgZG9lc24ndCByZXR1cm4KKyAgICAgICAgaW1tZWRpYXRlbHksIGl0IG1l
YW5zIHRoZSB3cml0ZSBidWZmZXIgaXMgZnVsbC4gSWYgeW91IGRvbid0IHdhbnQgdG8KKyAgICAg
ICAgd2FpdCwgeW91IHNob3VsZCBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBDYW5j
ZWxpbmcgdGhlIDpjbGFzczpgfmFzeW5jaW8uRnV0dXJlYCByZXR1cm5lZCBieSA6bWV0aDpgcGlu
Z2AgaGFzIG5vCisgICAgICAgIGVmZmVjdC4KKworICAgICAgICAiIiIKKyAgICAgICAgYXdhaXQg
c2VsZi5lbnN1cmVfb3BlbigpCisKKyAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGRhdGEgPSBlbmNvZGVfZGF0YShkYXRhKQorCisgICAgICAgICMgUHJvdGVjdCBhZ2Fp
bnN0IGR1cGxpY2F0ZXMgaWYgYSBwYXlsb2FkIGlzIGV4cGxpY2l0bHkgc2V0LgorICAgICAgICBp
ZiBkYXRhIGluIHNlbGYucGluZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhbHJl
YWR5IHdhaXRpbmcgZm9yIGEgcG9uZyB3aXRoIHRoZSBzYW1lIGRhdGEiKQorCisgICAgICAgICMg
R2VuZXJhdGUgYSB1bmlxdWUgcmFuZG9tIHBheWxvYWQgb3RoZXJ3aXNlLgorICAgICAgICB3aGls
ZSBkYXRhIGlzIE5vbmUgb3IgZGF0YSBpbiBzZWxmLnBpbmdzOgorICAgICAgICAgICAgZGF0YSA9
IHN0cnVjdC5wYWNrKCIhSSIsIHJhbmRvbS5nZXRyYW5kYml0cygzMikpCisKKyAgICAgICAgc2Vs
Zi5waW5nc1tkYXRhXSA9IHNlbGYubG9vcC5jcmVhdGVfZnV0dXJlKCkKKworICAgICAgICBhd2Fp
dCBzZWxmLndyaXRlX2ZyYW1lKFRydWUsIE9QX1BJTkcsIGRhdGEpCisKKyAgICAgICAgcmV0dXJu
IGFzeW5jaW8uc2hpZWxkKHNlbGYucGluZ3NbZGF0YV0pCisKKyAgICBhc3luYyBkZWYgcG9uZyhz
ZWxmLCBkYXRhOiBEYXRhID0gYiIiKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2Vu
ZCBhIHBvbmcuCisKKyAgICAgICAgQW4gdW5zb2xpY2l0ZWQgcG9uZyBtYXkgc2VydmUgYXMgYSB1
bmlkaXJlY3Rpb25hbCBoZWFydGJlYXQuCisKKyAgICAgICAgVGhlIHBheWxvYWQgbWF5IGJlIHNl
dCB3aXRoIHRoZSBvcHRpb25hbCBgYGRhdGFgYCBhcmd1bWVudCB3aGljaCBtdXN0CisgICAgICAg
IGJlIGEgc3RyaW5nICh3aGljaCB3aWxsIGJlIGVuY29kZWQgdG8gVVRGLTgpIG9yIGEgYnl0ZXMt
bGlrZSBvYmplY3QuCisKKyAgICAgICAgQ2FuY2VsaW5nIDptZXRoOmBwb25nYCBpcyBkaXNjb3Vy
YWdlZCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzCisgICAgICAgIDptZXRoOmBwaW5nYC4KKworICAg
ICAgICAiIiIKKyAgICAgICAgYXdhaXQgc2VsZi5lbnN1cmVfb3BlbigpCisKKyAgICAgICAgZGF0
YSA9IGVuY29kZV9kYXRhKGRhdGEpCisKKyAgICAgICAgYXdhaXQgc2VsZi53cml0ZV9mcmFtZShU
cnVlLCBPUF9QT05HLCBkYXRhKQorCisgICAgIyBQcml2YXRlIG1ldGhvZHMgLSBubyBndWFyYW50
ZWVzLgorCisgICAgZGVmIGNvbm5lY3Rpb25fY2xvc2VkX2V4YyhzZWxmKSAtPiBDb25uZWN0aW9u
Q2xvc2VkOgorICAgICAgICBleGNlcHRpb246IENvbm5lY3Rpb25DbG9zZWQKKyAgICAgICAgaWYg
c2VsZi5jbG9zZV9jb2RlID09IDEwMDAgb3Igc2VsZi5jbG9zZV9jb2RlID09IDEwMDE6CisgICAg
ICAgICAgICBleGNlcHRpb24gPSBDb25uZWN0aW9uQ2xvc2VkT0soc2VsZi5jbG9zZV9jb2RlLCBz
ZWxmLmNsb3NlX3JlYXNvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9
IENvbm5lY3Rpb25DbG9zZWRFcnJvcihzZWxmLmNsb3NlX2NvZGUsIHNlbGYuY2xvc2VfcmVhc29u
KQorICAgICAgICAjIENoYWluIHRvIHRoZSBleGNlcHRpb24gdGhhdCB0ZXJtaW5hdGVkIGRhdGEg
dHJhbnNmZXIsIGlmIGFueS4KKyAgICAgICAgZXhjZXB0aW9uLl9fY2F1c2VfXyA9IHNlbGYudHJh
bnNmZXJfZGF0YV9leGMKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbgorCisgICAgYXN5bmMgZGVm
IGVuc3VyZV9vcGVuKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0
aGF0IHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBvcGVuLgorCisgICAgICAgIFJhaXNlIDpl
eGM6YH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAgaWYgaXQgaXNuJ3Qu
CisKKyAgICAgICAgIiIiCisgICAgICAgICMgSGFuZGxlIGNhc2VzIGZyb20gbW9zdCBjb21tb24g
dG8gbGVhc3QgY29tbW9uIGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSBp
cyBTdGF0ZS5PUEVOOgorICAgICAgICAgICAgIyBJZiBzZWxmLnRyYW5zZmVyX2RhdGFfdGFzayBl
eGl0ZWQgd2l0aG91dCBhIGNsb3NpbmcgaGFuZHNoYWtlLAorICAgICAgICAgICAgIyBzZWxmLmNs
b3NlX2Nvbm5lY3Rpb25fdGFzayBtYXkgYmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiwgZ29pbmcK
KyAgICAgICAgICAgICMgc3RyYWlnaHQgZnJvbSBPUEVOIHRvIENMT1NFRC4KKyAgICAgICAgICAg
IGlmIHNlbGYudHJhbnNmZXJfZGF0YV90YXNrLmRvbmUoKToKKyAgICAgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLnNoaWVsZChzZWxmLmNsb3NlX2Nvbm5lY3Rpb25fdGFzaykKKyAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLmNvbm5lY3Rpb25fY2xvc2VkX2V4YygpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgU3Rh
dGUuQ0xPU0VEOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5jb25uZWN0aW9uX2Nsb3NlZF9leGMo
KQorCisgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgU3RhdGUuQ0xPU0lORzoKKyAgICAgICAgICAg
ICMgSWYgd2Ugc3RhcnRlZCB0aGUgY2xvc2luZyBoYW5kc2hha2UsIHdhaXQgZm9yIGl0cyBjb21w
bGV0aW9uIHRvCisgICAgICAgICAgICAjIGdldCB0aGUgcHJvcGVyIGNsb3NlIGNvZGUgYW5kIHJl
YXNvbi4gc2VsZi5jbG9zZV9jb25uZWN0aW9uX3Rhc2sKKyAgICAgICAgICAgICMgd2lsbCBjb21w
bGV0ZSB3aXRoaW4gNCBvciA1ICogY2xvc2VfdGltZW91dCBhZnRlciBjbG9zZSgpLiBUaGUKKyAg
ICAgICAgICAgICMgQ0xPU0lORyBzdGF0ZSBhbHNvIG9jY3VycyB3aGVuIGZhaWxpbmcgdGhlIGNv
bm5lY3Rpb24uIEluIHRoYXQKKyAgICAgICAgICAgICMgY2FzZSBzZWxmLmNsb3NlX2Nvbm5lY3Rp
b25fdGFzayB3aWxsIGNvbXBsZXRlIGV2ZW4gZmFzdGVyLgorICAgICAgICAgICAgYXdhaXQgYXN5
bmNpby5zaGllbGQoc2VsZi5jbG9zZV9jb25uZWN0aW9uX3Rhc2spCisgICAgICAgICAgICByYWlz
ZSBzZWxmLmNvbm5lY3Rpb25fY2xvc2VkX2V4YygpCisKKyAgICAgICAgIyBDb250cm9sIG1heSBv
bmx5IHJlYWNoIHRoaXMgcG9pbnQgaW4gYnVnZ3kgdGhpcmQtcGFydHkgc3ViY2xhc3Nlcy4KKyAg
ICAgICAgYXNzZXJ0IHNlbGYuc3RhdGUgaXMgU3RhdGUuQ09OTkVDVElORworICAgICAgICByYWlz
ZSBJbnZhbGlkU3RhdGUoIldlYlNvY2tldCBjb25uZWN0aW9uIGlzbid0IGVzdGFibGlzaGVkIHll
dCIpCisKKyAgICBhc3luYyBkZWYgdHJhbnNmZXJfZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmVhZCBpbmNvbWluZyBtZXNzYWdlcyBhbmQgcHV0IHRoZW0gaW4gYSBx
dWV1ZS4KKworICAgICAgICBUaGlzIGNvcm91dGluZSBydW5zIGluIGEgdGFzayB1bnRpbCB0aGUg
Y2xvc2luZyBoYW5kc2hha2UgaXMgc3RhcnRlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gYXdh
aXQgc2VsZi5yZWFkX21lc3NhZ2UoKQorCisgICAgICAgICAgICAgICAgIyBFeGl0IHRoZSBsb29w
IHdoZW4gcmVjZWl2aW5nIGEgY2xvc2UgZnJhbWUuCisgICAgICAgICAgICAgICAgaWYgbWVzc2Fn
ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAg
IyBXYWl0IHVudGlsIHRoZXJlJ3Mgcm9vbSBpbiB0aGUgcXVldWUgKGlmIG5lY2Vzc2FyeSkuCisg
ICAgICAgICAgICAgICAgaWYgc2VsZi5tYXhfcXVldWUgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgICAgIHdoaWxlIGxlbihzZWxmLm1lc3NhZ2VzKSA+PSBzZWxmLm1heF9xdWV1ZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1dF9tZXNzYWdlX3dhaXRlciA9IHNlbGYubG9v
cC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNoaWVsZChzZWxmLl9wdXRfbWVzc2Fn
ZV93YWl0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3B1dF9tZXNzYWdlX3dhaXRlciA9IE5vbmUKKworICAgICAg
ICAgICAgICAgICMgUHV0IHRoZSBtZXNzYWdlIGluIHRoZSBxdWV1ZS4KKyAgICAgICAgICAgICAg
ICBzZWxmLm1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgICAgICAgICAgIyBOb3Rp
ZnkgcmVjdigpLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BvcF9tZXNzYWdlX3dhaXRlciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9wX21lc3NhZ2Vfd2FpdGVy
LnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9wX21lc3NhZ2Vf
d2FpdGVyID0gTm9uZQorCisgICAgICAgIGV4Y2VwdCBhc3luY2lvLkNhbmNlbGxlZEVycm9yIGFz
IGV4YzoKKyAgICAgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV9leGMgPSBleGMKKyAgICAgICAg
ICAgICMgSWYgZmFpbF9jb25uZWN0aW9uKCkgY2FuY2VscyB0aGlzIHRhc2ssIGF2b2lkIGxvZ2dp
bmcgdGhlIGVycm9yCisgICAgICAgICAgICAjIHR3aWNlIGFuZCBmYWlsaW5nIHRoZSBjb25uZWN0
aW9uIGFnYWluLgorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBleGNlcHQgUHJvdG9jb2xF
cnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLnRyYW5zZmVyX2RhdGFfZXhjID0gZXhjCisg
ICAgICAgICAgICBzZWxmLmZhaWxfY29ubmVjdGlvbigxMDAyKQorCisgICAgICAgIGV4Y2VwdCAo
Q29ubmVjdGlvbkVycm9yLCBFT0ZFcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgIyBSZWFkaW5n
IGRhdGEgd2l0aCBzZWxmLnJlYWRlci5yZWFkZXhhY3RseSBtYXkgcmFpc2U6CisgICAgICAgICAg
ICAjIC0gbW9zdCBzdWJjbGFzc2VzIG9mIENvbm5lY3Rpb25FcnJvciBpZiB0aGUgVENQIGNvbm5l
Y3Rpb24KKyAgICAgICAgICAgICMgICBicmVha3MsIGlzIHJlc2V0LCBvciBpcyBhYm9ydGVkOwor
ICAgICAgICAgICAgIyAtIEluY29tcGxldGVSZWFkRXJyb3IsIGEgc3ViY2xhc3Mgb2YgRU9GRXJy
b3IsIGlmIGZld2VyCisgICAgICAgICAgICAjICAgYnl0ZXMgYXJlIGF2YWlsYWJsZSB0aGFuIHJl
cXVlc3RlZC4KKyAgICAgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV9leGMgPSBleGMKKyAgICAg
ICAgICAgIHNlbGYuZmFpbF9jb25uZWN0aW9uKDEwMDYpCisKKyAgICAgICAgZXhjZXB0IFVuaWNv
ZGVEZWNvZGVFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLnRyYW5zZmVyX2RhdGFfZXhj
ID0gZXhjCisgICAgICAgICAgICBzZWxmLmZhaWxfY29ubmVjdGlvbigxMDA3KQorCisgICAgICAg
IGV4Y2VwdCBQYXlsb2FkVG9vQmlnIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYudHJhbnNmZXJf
ZGF0YV9leGMgPSBleGMKKyAgICAgICAgICAgIHNlbGYuZmFpbF9jb25uZWN0aW9uKDEwMDkpCisK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAjIFRoaXMgc2hv
dWxkbid0IGhhcHBlbiBvZnRlbiBiZWNhdXNlIGV4Y2VwdGlvbnMgZXhwZWN0ZWQgdW5kZXIKKyAg
ICAgICAgICAgICMgcmVndWxhciBjaXJjdW1zdGFuY2VzIGFyZSBoYW5kbGVkIGFib3ZlLiBJZiBp
dCBkb2VzLCBjb25zaWRlcgorICAgICAgICAgICAgIyBjYXRjaGluZyBhbmQgaGFuZGxpbmcgbW9y
ZSBleGNlcHRpb25zLgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJFcnJvciBpbiBkYXRhIHRy
YW5zZmVyIiwgZXhjX2luZm89VHJ1ZSkKKworICAgICAgICAgICAgc2VsZi50cmFuc2Zlcl9kYXRh
X2V4YyA9IGV4YworICAgICAgICAgICAgc2VsZi5mYWlsX2Nvbm5lY3Rpb24oMTAxMSkKKworICAg
IGFzeW5jIGRlZiByZWFkX21lc3NhZ2Uoc2VsZikgLT4gT3B0aW9uYWxbRGF0YV06CisgICAgICAg
ICIiIgorICAgICAgICBSZWFkIGEgc2luZ2xlIG1lc3NhZ2UgZnJvbSB0aGUgY29ubmVjdGlvbi4K
KworICAgICAgICBSZS1hc3NlbWJsZSBkYXRhIGZyYW1lcyBpZiB0aGUgbWVzc2FnZSBpcyBmcmFn
bWVudGVkLgorCisgICAgICAgIFJldHVybiBgYE5vbmVgYCB3aGVuIHRoZSBjbG9zaW5nIGhhbmRz
aGFrZSBpcyBzdGFydGVkLgorCisgICAgICAgICIiIgorICAgICAgICBmcmFtZSA9IGF3YWl0IHNl
bGYucmVhZF9kYXRhX2ZyYW1lKG1heF9zaXplPXNlbGYubWF4X3NpemUpCisKKyAgICAgICAgIyBB
IGNsb3NlIGZyYW1lIHdhcyByZWNlaXZlZC4KKyAgICAgICAgaWYgZnJhbWUgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IE9QX1RF
WFQ6CisgICAgICAgICAgICB0ZXh0ID0gVHJ1ZQorICAgICAgICBlbGlmIGZyYW1lLm9wY29kZSA9
PSBPUF9CSU5BUlk6CisgICAgICAgICAgICB0ZXh0ID0gRmFsc2UKKyAgICAgICAgZWxzZTogICMg
ZnJhbWUub3Bjb2RlID09IE9QX0NPTlQKKyAgICAgICAgICAgIHJhaXNlIFByb3RvY29sRXJyb3Io
InVuZXhwZWN0ZWQgb3Bjb2RlIikKKworICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9u
IGNhc2UgLSBubyBmcmFnbWVudGF0aW9uCisgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAg
ICAgIHJldHVybiBmcmFtZS5kYXRhLmRlY29kZSgidXRmLTgiKSBpZiB0ZXh0IGVsc2UgZnJhbWUu
ZGF0YQorCisgICAgICAgICMgNS40LiBGcmFnbWVudGF0aW9uCisgICAgICAgIGNodW5rczogTGlz
dFtEYXRhXSA9IFtdCisgICAgICAgIG1heF9zaXplID0gc2VsZi5tYXhfc2l6ZQorICAgICAgICBp
ZiB0ZXh0OgorICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5ID0gY29kZWNzLmdldGluY3JlbWVu
dGFsZGVjb2RlcigidXRmLTgiKQorICAgICAgICAgICAgZGVjb2RlciA9IGRlY29kZXJfZmFjdG9y
eShlcnJvcnM9InN0cmljdCIpCisgICAgICAgICAgICBpZiBtYXhfc2l6ZSBpcyBOb25lOgorCisg
ICAgICAgICAgICAgICAgZGVmIGFwcGVuZChmcmFtZTogRnJhbWUpIC0+IE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgIG5vbmxvY2FsIGNodW5rcworICAgICAgICAgICAgICAgICAgICBjaHVua3Mu
YXBwZW5kKGRlY29kZXIuZGVjb2RlKGZyYW1lLmRhdGEsIGZyYW1lLmZpbikpCisKKyAgICAgICAg
ICAgIGVsc2U6CisKKyAgICAgICAgICAgICAgICBkZWYgYXBwZW5kKGZyYW1lOiBGcmFtZSkgLT4g
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgbm9ubG9jYWwgY2h1bmtzLCBtYXhfc2l6ZQorICAg
ICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKGRlY29kZXIuZGVjb2RlKGZyYW1lLmRhdGEs
IGZyYW1lLmZpbikpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1heF9z
aXplLCBpbnQpCisgICAgICAgICAgICAgICAgICAgIG1heF9zaXplIC09IGxlbihmcmFtZS5kYXRh
KQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBtYXhfc2l6ZSBpcyBOb25lOgorCisg
ICAgICAgICAgICAgICAgZGVmIGFwcGVuZChmcmFtZTogRnJhbWUpIC0+IE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgIG5vbmxvY2FsIGNodW5rcworICAgICAgICAgICAgICAgICAgICBjaHVua3Mu
YXBwZW5kKGZyYW1lLmRhdGEpCisKKyAgICAgICAgICAgIGVsc2U6CisKKyAgICAgICAgICAgICAg
ICBkZWYgYXBwZW5kKGZyYW1lOiBGcmFtZSkgLT4gTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
bm9ubG9jYWwgY2h1bmtzLCBtYXhfc2l6ZQorICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBw
ZW5kKGZyYW1lLmRhdGEpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1h
eF9zaXplLCBpbnQpCisgICAgICAgICAgICAgICAgICAgIG1heF9zaXplIC09IGxlbihmcmFtZS5k
YXRhKQorCisgICAgICAgIGFwcGVuZChmcmFtZSkKKworICAgICAgICB3aGlsZSBub3QgZnJhbWUu
ZmluOgorICAgICAgICAgICAgZnJhbWUgPSBhd2FpdCBzZWxmLnJlYWRfZGF0YV9mcmFtZShtYXhf
c2l6ZT1tYXhfc2l6ZSkKKyAgICAgICAgICAgIGlmIGZyYW1lIGlzIE5vbmU6CisgICAgICAgICAg
ICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigiaW5jb21wbGV0ZSBmcmFnbWVudGVkIG1lc3NhZ2Ui
KQorICAgICAgICAgICAgaWYgZnJhbWUub3Bjb2RlICE9IE9QX0NPTlQ6CisgICAgICAgICAgICAg
ICAgcmFpc2UgUHJvdG9jb2xFcnJvcigidW5leHBlY3RlZCBvcGNvZGUiKQorICAgICAgICAgICAg
YXBwZW5kKGZyYW1lKQorCisgICAgICAgICMgbXlweSBjYW5ub3QgZmlndXJlIG91dCB0aGF0IGNo
dW5rcyBoYXZlIHRoZSBwcm9wZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuICgiIiBpZiB0ZXh0IGVs
c2UgYiIiKS5qb2luKGNodW5rcykgICMgdHlwZTogaWdub3JlCisKKyAgICBhc3luYyBkZWYgcmVh
ZF9kYXRhX2ZyYW1lKHNlbGYsIG1heF9zaXplOiBPcHRpb25hbFtpbnRdKSAtPiBPcHRpb25hbFtG
cmFtZV06CisgICAgICAgICIiIgorICAgICAgICBSZWFkIGEgc2luZ2xlIGRhdGEgZnJhbWUgZnJv
bSB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBQcm9jZXNzIGNvbnRyb2wgZnJhbWVzIHJlY2Vp
dmVkIGJlZm9yZSB0aGUgbmV4dCBkYXRhIGZyYW1lLgorCisgICAgICAgIFJldHVybiBgYE5vbmVg
YCBpZiBhIGNsb3NlIGZyYW1lIGlzIGVuY291bnRlcmVkIGJlZm9yZSBhbnkgZGF0YSBmcmFtZS4K
KworICAgICAgICAiIiIKKyAgICAgICAgIyA2LjIuIFJlY2VpdmluZyBEYXRhCisgICAgICAgIHdo
aWxlIFRydWU6CisgICAgICAgICAgICBmcmFtZSA9IGF3YWl0IHNlbGYucmVhZF9mcmFtZShtYXhf
c2l6ZSkKKworICAgICAgICAgICAgIyA1LjUuIENvbnRyb2wgRnJhbWVzCisgICAgICAgICAgICBp
ZiBmcmFtZS5vcGNvZGUgPT0gT1BfQ0xPU0U6CisgICAgICAgICAgICAgICAgIyA3LjEuNS4gIFRo
ZSBXZWJTb2NrZXQgQ29ubmVjdGlvbiBDbG9zZSBDb2RlCisgICAgICAgICAgICAgICAgIyA3LjEu
Ni4gIFRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbiBDbG9zZSBSZWFzb24KKyAgICAgICAgICAgICAg
ICBzZWxmLmNsb3NlX2NvZGUsIHNlbGYuY2xvc2VfcmVhc29uID0gcGFyc2VfY2xvc2UoZnJhbWUu
ZGF0YSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgRWNobyB0
aGUgb3JpZ2luYWwgZGF0YSBpbnN0ZWFkIG9mIHJlLXNlcmlhbGl6aW5nIGl0IHdpdGgKKyAgICAg
ICAgICAgICAgICAgICAgIyBzZXJpYWxpemVfY2xvc2UoKSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hl
biB0aGUgY2xvc2UgZnJhbWUKKyAgICAgICAgICAgICAgICAgICAgIyBpcyBlbXB0eSBhbmQgcGFy
c2VfY2xvc2UoKSBzeW50aGV0aXplcyBhIDEwMDUgY2xvc2UgY29kZS4KKyAgICAgICAgICAgICAg
ICAgICAgYXdhaXQgc2VsZi53cml0ZV9jbG9zZV9mcmFtZShmcmFtZS5kYXRhKQorICAgICAgICAg
ICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uQ2xvc2VkOgorICAgICAgICAgICAgICAgICAgICAjIEl0
IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBpZiB0aGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkCisgICAg
ICAgICAgICAgICAgICAgICMgYmVmb3JlIHdlIGNvdWxkIHNlbmQgYmFjayBhIGNsb3NlIGZyYW1l
LgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KworICAgICAgICAgICAgZWxpZiBmcmFtZS5vcGNvZGUgPT0gT1BfUElORzoKKyAgICAgICAgICAg
ICAgICAjIEFuc3dlciBwaW5ncy4KKyAgICAgICAgICAgICAgICBwaW5nX2hleCA9IGZyYW1lLmRh
dGEuaGV4KCkgb3IgIltlbXB0eV0iCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKAorICAg
ICAgICAgICAgICAgICAgICAiJXMgLSByZWNlaXZlZCBwaW5nLCBzZW5kaW5nIHBvbmc6ICVzIiwg
c2VsZi5zaWRlLCBwaW5nX2hleAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBh
d2FpdCBzZWxmLnBvbmcoZnJhbWUuZGF0YSkKKworICAgICAgICAgICAgZWxpZiBmcmFtZS5vcGNv
ZGUgPT0gT1BfUE9ORzoKKyAgICAgICAgICAgICAgICAjIEFja25vd2xlZGdlIHBpbmdzIG9uIHNv
bGljaXRlZCBwb25ncy4KKyAgICAgICAgICAgICAgICBpZiBmcmFtZS5kYXRhIGluIHNlbGYucGlu
Z3M6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICIlcyAtIHJlY2VpdmVkIHNvbGljaXRlZCBwb25nOiAlcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5kYXRh
LmhleCgpIG9yICJbZW1wdHldIiwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICAjIEFja25vd2xlZGdlIGFsbCBwaW5ncyB1cCB0byB0aGUgb25lIG1hdGNoaW5nIHRo
aXMgcG9uZy4KKyAgICAgICAgICAgICAgICAgICAgcGluZ19pZCA9IE5vbmUKKyAgICAgICAgICAg
ICAgICAgICAgcGluZ19pZHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBmb3IgcGluZ19pZCwg
cGluZyBpbiBzZWxmLnBpbmdzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwaW5n
X2lkcy5hcHBlbmQocGluZ19pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwaW5n
LmRvbmUoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5nLnNldF9yZXN1bHQoTm9u
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBpbmdfaWQgPT0gZnJhbWUuZGF0YToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNl
OiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgRmFs
c2UsICJwaW5nX2lkIGlzIGluIHNlbGYucGluZ3MiCisgICAgICAgICAgICAgICAgICAgICMgUmVt
b3ZlIGFja25vd2xlZGdlZCBwaW5ncyBmcm9tIHNlbGYucGluZ3MuCisgICAgICAgICAgICAgICAg
ICAgIGZvciBwaW5nX2lkIGluIHBpbmdfaWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVs
IHNlbGYucGluZ3NbcGluZ19pZF0KKyAgICAgICAgICAgICAgICAgICAgcGluZ19pZHMgPSBwaW5n
X2lkc1s6LTFdCisgICAgICAgICAgICAgICAgICAgIGlmIHBpbmdfaWRzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcGluZ3NfaGV4ID0gIiwgIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBpbmdfaWQuaGV4KCkgb3IgIltlbXB0eV0iIGZvciBwaW5nX2lkIGluIHBpbmdfaWRz
CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBwbHVy
YWwgPSAicyIgaWYgbGVuKHBpbmdfaWRzKSA+IDEgZWxzZSAiIgorICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyAtIGFj
a25vd2xlZGdlZCBwcmV2aW91cyBwaW5nJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLnNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBpbmdzX2hleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIu
ZGVidWcoCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMgLSByZWNlaXZlZCB1bnNvbGljaXRl
ZCBwb25nOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBmcmFtZS5kYXRhLmhleCgpIG9yICJbZW1wdHldIiwKKyAgICAgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIDUuNi4gRGF0YSBGcmFtZXMKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBhc3luYyBkZWYg
cmVhZF9mcmFtZShzZWxmLCBtYXhfc2l6ZTogT3B0aW9uYWxbaW50XSkgLT4gRnJhbWU6CisgICAg
ICAgICIiIgorICAgICAgICBSZWFkIGEgc2luZ2xlIGZyYW1lIGZyb20gdGhlIGNvbm5lY3Rpb24u
CisKKyAgICAgICAgIiIiCisgICAgICAgIGZyYW1lID0gYXdhaXQgRnJhbWUucmVhZCgKKyAgICAg
ICAgICAgIHNlbGYucmVhZGVyLnJlYWRleGFjdGx5LAorICAgICAgICAgICAgbWFzaz1ub3Qgc2Vs
Zi5pc19jbGllbnQsCisgICAgICAgICAgICBtYXhfc2l6ZT1tYXhfc2l6ZSwKKyAgICAgICAgICAg
IGV4dGVuc2lvbnM9c2VsZi5leHRlbnNpb25zLAorICAgICAgICApCisgICAgICAgIGxvZ2dlci5k
ZWJ1ZygiJXMgPCAlciIsIHNlbGYuc2lkZSwgZnJhbWUpCisgICAgICAgIHJldHVybiBmcmFtZQor
CisgICAgYXN5bmMgZGVmIHdyaXRlX2ZyYW1lKAorICAgICAgICBzZWxmLCBmaW46IGJvb2wsIG9w
Y29kZTogaW50LCBkYXRhOiBieXRlcywgKiwgX2V4cGVjdGVkX3N0YXRlOiBpbnQgPSBTdGF0ZS5P
UEVOCisgICAgKSAtPiBOb25lOgorICAgICAgICAjIERlZmVuc2l2ZSBhc3NlcnRpb24gZm9yIHBy
b3RvY29sIGNvbXBsaWFuY2UuCisgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgbm90IF9leHBlY3Rl
ZF9zdGF0ZTogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZFN0
YXRlKAorICAgICAgICAgICAgICAgIGYiQ2Fubm90IHdyaXRlIHRvIGEgV2ViU29ja2V0IGluIHRo
ZSB7c2VsZi5zdGF0ZS5uYW1lfSBzdGF0ZSIKKyAgICAgICAgICAgICkKKworICAgICAgICBmcmFt
ZSA9IEZyYW1lKGZpbiwgb3Bjb2RlLCBkYXRhKQorICAgICAgICBsb2dnZXIuZGVidWcoIiVzID4g
JXIiLCBzZWxmLnNpZGUsIGZyYW1lKQorICAgICAgICBmcmFtZS53cml0ZSgKKyAgICAgICAgICAg
IHNlbGYudHJhbnNwb3J0LndyaXRlLCBtYXNrPXNlbGYuaXNfY2xpZW50LCBleHRlbnNpb25zPXNl
bGYuZXh0ZW5zaW9ucworICAgICAgICApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBk
cmFpbigpIGNhbm5vdCBiZSBjYWxsZWQgY29uY3VycmVudGx5IGJ5IG11bHRpcGxlIGNvcm91dGlu
ZXM6CisgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyOTkzMC4gUmVt
b3ZlIHRoaXMgbG9jayB3aGVuIG5vCisgICAgICAgICAgICAjIHZlcnNpb24gb2YgUHl0aG9uIHdo
ZXJlIHRoaXMgYnVncyBleGlzdHMgaXMgc3VwcG9ydGVkIGFueW1vcmUuCisgICAgICAgICAgICBh
c3luYyB3aXRoIHNlbGYuX2RyYWluX2xvY2s6CisgICAgICAgICAgICAgICAgIyBIYW5kbGUgZmxv
dyBjb250cm9sIGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5fZHJh
aW4oKQorICAgICAgICBleGNlcHQgQ29ubmVjdGlvbkVycm9yOgorICAgICAgICAgICAgIyBUZXJt
aW5hdGUgdGhlIGNvbm5lY3Rpb24gaWYgdGhlIHNvY2tldCBkaWVkLgorICAgICAgICAgICAgc2Vs
Zi5mYWlsX2Nvbm5lY3Rpb24oKQorICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBjb25uZWN0
aW9uIGlzIGNsb3NlZCB0byByYWlzZSBDb25uZWN0aW9uQ2xvc2VkCisgICAgICAgICAgICAjIHdp
dGggdGhlIGNvcnJlY3QgY29kZSBhbmQgcmVhc29uLgorICAgICAgICAgICAgYXdhaXQgc2VsZi5l
bnN1cmVfb3BlbigpCisKKyAgICBhc3luYyBkZWYgd3JpdGVfY2xvc2VfZnJhbWUoc2VsZiwgZGF0
YTogYnl0ZXMgPSBiIiIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIGNs
b3NlIGZyYW1lIGlmIGFuZCBvbmx5IGlmIHRoZSBjb25uZWN0aW9uIHN0YXRlIGlzIE9QRU4uCisK
KyAgICAgICAgVGhpcyBkZWRpY2F0ZWQgY29yb3V0aW5lIG11c3QgYmUgdXNlZCBmb3Igd3JpdGlu
ZyBjbG9zZSBmcmFtZXMgdG8KKyAgICAgICAgZW5zdXJlIHRoYXQgYXQgbW9zdCBvbmUgY2xvc2Ug
ZnJhbWUgaXMgc2VudCBvbiBhIGdpdmVuIGNvbm5lY3Rpb24uCisKKyAgICAgICAgIiIiCisgICAg
ICAgICMgVGVzdCBhbmQgc2V0IHRoZSBjb25uZWN0aW9uIHN0YXRlIGJlZm9yZSBzZW5kaW5nIHRo
ZSBjbG9zZSBmcmFtZSB0bworICAgICAgICAjIGF2b2lkIHNlbmRpbmcgdHdvIGZyYW1lcyBpbiBj
YXNlIG9mIGNvbmN1cnJlbnQgY2FsbHMuCisgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgU3RhdGUu
T1BFTjoKKyAgICAgICAgICAgICMgNy4xLjMuIFRoZSBXZWJTb2NrZXQgQ2xvc2luZyBIYW5kc2hh
a2UgaXMgU3RhcnRlZAorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IFN0YXRlLkNMT1NJTkcKKyAg
ICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgLSBzdGF0ZSA9IENMT1NJTkciLCBzZWxmLnNpZGUp
CisKKyAgICAgICAgICAgICMgNy4xLjIuIFN0YXJ0IHRoZSBXZWJTb2NrZXQgQ2xvc2luZyBIYW5k
c2hha2UKKyAgICAgICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoVHJ1ZSwgT1BfQ0xPU0Us
IGRhdGEsIF9leHBlY3RlZF9zdGF0ZT1TdGF0ZS5DTE9TSU5HKQorCisgICAgYXN5bmMgZGVmIGtl
ZXBhbGl2ZV9waW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEg
UGluZyBmcmFtZSBhbmQgd2FpdCBmb3IgYSBQb25nIGZyYW1lIGF0IHJlZ3VsYXIgaW50ZXJ2YWxz
LgorCisgICAgICAgIFRoaXMgY29yb3V0aW5lIGV4aXRzIHdoZW4gdGhlIGNvbm5lY3Rpb24gdGVy
bWluYXRlcyBhbmQgb25lIG9mIHRoZQorICAgICAgICBmb2xsb3dpbmcgaGFwcGVuczoKKworICAg
ICAgICAtIDptZXRoOmBwaW5nYCByYWlzZXMgOmV4YzpgQ29ubmVjdGlvbkNsb3NlZGAsIG9yCisg
ICAgICAgIC0gOm1ldGg6YGNsb3NlX2Nvbm5lY3Rpb25gIGNhbmNlbHMgOmF0dHI6YGtlZXBhbGl2
ZV9waW5nX3Rhc2tgLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnBpbmdfaW50ZXJ2
YWwgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5waW5nX2ludGVydmFsLAorICAgICAgICAgICAgICAgICAg
ICBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5v
bmUsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgIyBwaW5nKCkgcmFpc2Vz
IENhbmNlbGxlZEVycm9yIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwKKyAgICAgICAgICAg
ICAgICAjIHdoZW4gY2xvc2VfY29ubmVjdGlvbigpIGNhbmNlbHMgc2VsZi5rZWVwYWxpdmVfcGlu
Z190YXNrLgorCisgICAgICAgICAgICAgICAgIyBwaW5nKCkgcmFpc2VzIENvbm5lY3Rpb25DbG9z
ZWQgaWYgdGhlIGNvbm5lY3Rpb24gaXMgbG9zdCwKKyAgICAgICAgICAgICAgICAjIHdoZW4gY29u
bmVjdGlvbl9sb3N0KCkgY2FsbHMgYWJvcnRfcGluZ3MoKS4KKworICAgICAgICAgICAgICAgIHBp
bmdfd2FpdGVyID0gYXdhaXQgc2VsZi5waW5nKCkKKworICAgICAgICAgICAgICAgIGlmIHNlbGYu
cGluZ190aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLndhaXRfZm9yKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBpbmdfd2FpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucGluZ190aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2Vs
Zi5sb29wIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDgpIGVsc2UgTm9uZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8u
VGltZW91dEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAh
IHRpbWVkIG91dCB3YWl0aW5nIGZvciBwb25nIiwgc2VsZi5zaWRlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5mYWlsX2Nvbm5lY3Rpb24oMTAxMSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCisKKyAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CisgICAg
ICAgICAgICByYWlzZQorCisgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uQ2xvc2VkOgorICAgICAg
ICAgICAgcGFzcworCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBsb2dn
ZXIud2FybmluZygiVW5leHBlY3RlZCBleGNlcHRpb24gaW4ga2VlcGFsaXZlIHBpbmcgdGFzayIs
IGV4Y19pbmZvPVRydWUpCisKKyAgICBhc3luYyBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmKSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgNy4xLjEuIENsb3NlIHRoZSBXZWJTb2NrZXQg
Q29ubmVjdGlvbgorCisgICAgICAgIFdoZW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHN1Y2NlZWRz
LCA6bWV0aDpgY29ubmVjdGlvbl9vcGVuYCBzdGFydHMKKyAgICAgICAgdGhpcyBjb3JvdXRpbmUg
aW4gYSB0YXNrLiBJdCB3YWl0cyBmb3IgdGhlIGRhdGEgdHJhbnNmZXIgcGhhc2UgdG8KKyAgICAg
ICAgY29tcGxldGUgdGhlbiBpdCBjbG9zZXMgdGhlIFRDUCBjb25uZWN0aW9uIGNsZWFubHkuCisK
KyAgICAgICAgV2hlbiB0aGUgb3BlbmluZyBoYW5kc2hha2UgZmFpbHMsIDptZXRoOmBmYWlsX2Nv
bm5lY3Rpb25gIGRvZXMgdGhlCisgICAgICAgIHNhbWUuIFRoZXJlJ3Mgbm8gZGF0YSB0cmFuc2Zl
ciBwaGFzZSBpbiB0aGF0IGNhc2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICMgV2FpdCBmb3IgdGhlIGRhdGEgdHJhbnNmZXIgcGhhc2UgdG8gY29tcGxldGUuCisg
ICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJ0cmFuc2Zlcl9kYXRhX3Rhc2siKToKKyAgICAg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYudHJhbnNmZXJf
ZGF0YV90YXNrCisgICAgICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6
CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgIyBDYW5jZWwgdGhlIGtl
ZXBhbGl2ZSBwaW5nIHRhc2suCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJrZWVwYWxp
dmVfcGluZ190YXNrIik6CisgICAgICAgICAgICAgICAgc2VsZi5rZWVwYWxpdmVfcGluZ190YXNr
LmNhbmNlbCgpCisKKyAgICAgICAgICAgICMgQSBjbGllbnQgc2hvdWxkIHdhaXQgZm9yIGEgVENQ
IGNsb3NlIGZyb20gdGhlIHNlcnZlci4KKyAgICAgICAgICAgIGlmIHNlbGYuaXNfY2xpZW50IGFu
ZCBoYXNhdHRyKHNlbGYsICJ0cmFuc2Zlcl9kYXRhX3Rhc2siKToKKyAgICAgICAgICAgICAgICBp
ZiBhd2FpdCBzZWxmLndhaXRfZm9yX2Nvbm5lY3Rpb25fbG9zdCgpOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVzICEgdGltZWQgb3V0
IHdhaXRpbmcgZm9yIFRDUCBjbG9zZSIsIHNlbGYuc2lkZSkKKworICAgICAgICAgICAgIyBIYWxm
LWNsb3NlIHRoZSBUQ1AgY29ubmVjdGlvbiBpZiBwb3NzaWJsZSAod2hlbiB0aGVyZSdzIG5vIFRM
UykuCisgICAgICAgICAgICBpZiBzZWxmLnRyYW5zcG9ydC5jYW5fd3JpdGVfZW9mKCk6CisgICAg
ICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyB4IGhhbGYtY2xvc2luZyBUQ1AgY29ubmVjdGlv
biIsIHNlbGYuc2lkZSkKKyAgICAgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZV9lb2Yo
KQorCisgICAgICAgICAgICAgICAgaWYgYXdhaXQgc2VsZi53YWl0X2Zvcl9jb25uZWN0aW9uX2xv
c3QoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgbG9nZ2Vy
LmRlYnVnKCIlcyAhIHRpbWVkIG91dCB3YWl0aW5nIGZvciBUQ1AgY2xvc2UiLCBzZWxmLnNpZGUp
CisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgVGhlIHRyeS9maW5hbGx5IGVuc3Vy
ZXMgdGhhdCB0aGUgdHJhbnNwb3J0IG5ldmVyIHJlbWFpbnMgb3BlbiwKKyAgICAgICAgICAgICMg
ZXZlbiBpZiB0aGlzIGNvcm91dGluZSBpcyBjYW5jZWxlZCAoZm9yIGV4YW1wbGUpLgorCisgICAg
ICAgICAgICAjIElmIGNvbm5lY3Rpb25fbG9zdCgpIHdhcyBjYWxsZWQsIHRoZSBUQ1AgY29ubmVj
dGlvbiBpcyBjbG9zZWQuCisgICAgICAgICAgICAjIEhvd2V2ZXIsIGlmIFRMUyBpcyBlbmFibGVk
LCB0aGUgdHJhbnNwb3J0IHN0aWxsIG5lZWRzIGNsb3NpbmcuCisgICAgICAgICAgICAjIEVsc2Ug
YXN5bmNpbyBjb21wbGFpbnM6IFJlc291cmNlV2FybmluZzogdW5jbG9zZWQgdHJhbnNwb3J0Lgor
ICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0aW9uX2xvc3Rfd2FpdGVyLmRvbmUoKSBhbmQgc2Vs
Zi50cmFuc3BvcnQuaXNfY2xvc2luZygpOgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgICAgICAjIENsb3NlIHRoZSBUQ1AgY29ubmVjdGlvbi4gQnVmZmVycyBhcmUgZmx1c2hlZCBh
c3luY2hyb25vdXNseS4KKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgeCBjbG9zaW5nIFRD
UCBjb25uZWN0aW9uIiwgc2VsZi5zaWRlKQorICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuY2xv
c2UoKQorCisgICAgICAgICAgICBpZiBhd2FpdCBzZWxmLndhaXRfZm9yX2Nvbm5lY3Rpb25fbG9z
dCgpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIl
cyAhIHRpbWVkIG91dCB3YWl0aW5nIGZvciBUQ1AgY2xvc2UiLCBzZWxmLnNpZGUpCisKKyAgICAg
ICAgICAgICMgQWJvcnQgdGhlIFRDUCBjb25uZWN0aW9uLiBCdWZmZXJzIGFyZSBkaXNjYXJkZWQu
CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVzIHggYWJvcnRpbmcgVENQIGNvbm5lY3Rpb24i
LCBzZWxmLnNpZGUpCisgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC5hYm9ydCgpCisKKyAgICAg
ICAgICAgICMgY29ubmVjdGlvbl9sb3N0KCkgaXMgY2FsbGVkIHF1aWNrbHkgYWZ0ZXIgYWJvcnRp
bmcuCisgICAgICAgICAgICBhd2FpdCBzZWxmLndhaXRfZm9yX2Nvbm5lY3Rpb25fbG9zdCgpCisK
KyAgICBhc3luYyBkZWYgd2FpdF9mb3JfY29ubmVjdGlvbl9sb3N0KHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgICIiIgorICAgICAgICBXYWl0IHVudGlsIHRoZSBUQ1AgY29ubmVjdGlvbiBpcyBjbG9z
ZWQgb3IgYGBzZWxmLmNsb3NlX3RpbWVvdXRgYCBlbGFwc2VzLgorCisgICAgICAgIFJldHVybiBg
YFRydWVgYCBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQgYW5kIGBgRmFsc2VgYCBvdGhlcndp
c2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmNvbm5lY3Rpb25fbG9zdF93
YWl0ZXIuZG9uZSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFz
eW5jaW8ud2FpdF9mb3IoCisgICAgICAgICAgICAgICAgICAgIGFzeW5jaW8uc2hpZWxkKHNlbGYu
Y29ubmVjdGlvbl9sb3N0X3dhaXRlciksCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2Vf
dGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3AgaWYgc3lzLnZlcnNp
b25faW5mb1s6Ml0gPCAoMywgOCkgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIGV4Y2VwdCBhc3luY2lvLlRpbWVvdXRFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNz
CisgICAgICAgICMgUmUtY2hlY2sgc2VsZi5jb25uZWN0aW9uX2xvc3Rfd2FpdGVyLmRvbmUoKSBz
eW5jaHJvbm91c2x5IGJlY2F1c2UKKyAgICAgICAgIyBjb25uZWN0aW9uX2xvc3QoKSBjb3VsZCBy
dW4gYmV0d2VlbiB0aGUgbW9tZW50IHRoZSB0aW1lb3V0IG9jY3VycworICAgICAgICAjIGFuZCB0
aGUgbW9tZW50IHRoaXMgY29yb3V0aW5lIHJlc3VtZXMgcnVubmluZy4KKyAgICAgICAgcmV0dXJu
IHNlbGYuY29ubmVjdGlvbl9sb3N0X3dhaXRlci5kb25lKCkKKworICAgIGRlZiBmYWlsX2Nvbm5l
Y3Rpb24oc2VsZiwgY29kZTogaW50ID0gMTAwNiwgcmVhc29uOiBzdHIgPSAiIikgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIDcuMS43LiBGYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlv
bgorCisgICAgICAgIFRoaXMgcmVxdWlyZXM6CisKKyAgICAgICAgMS4gU3RvcHBpbmcgYWxsIHBy
b2Nlc3Npbmcgb2YgaW5jb21pbmcgZGF0YSwgd2hpY2ggbWVhbnMgY2FuY2VsbGluZworICAgICAg
ICAgICA6YXR0cjpgdHJhbnNmZXJfZGF0YV90YXNrYC4gVGhlIGNsb3NlIGNvZGUgd2lsbCBiZSAx
MDA2IHVubGVzcyBhCisgICAgICAgICAgIGNsb3NlIGZyYW1lIHdhcyByZWNlaXZlZCBlYXJsaWVy
LgorCisgICAgICAgIDIuIFNlbmRpbmcgYSBjbG9zZSBmcmFtZSB3aXRoIGFuIGFwcHJvcHJpYXRl
IGNvZGUgaWYgdGhlIG9wZW5pbmcKKyAgICAgICAgICAgaGFuZHNoYWtlIHN1Y2NlZWRlZCBhbmQg
dGhlIG90aGVyIHNpZGUgaXMgbGlrZWx5IHRvIHByb2Nlc3MgaXQuCisKKyAgICAgICAgMy4gQ2xv
c2luZyB0aGUgY29ubmVjdGlvbi4gOm1ldGg6YGNsb3NlX2Nvbm5lY3Rpb25gIHRha2VzIGNhcmUg
b2YKKyAgICAgICAgICAgdGhpcyBvbmNlIDphdHRyOmB0cmFuc2Zlcl9kYXRhX3Rhc2tgIGV4aXRz
IGFmdGVyIGJlaW5nIGNhbmNlbGVkLgorCisgICAgICAgIChUaGUgc3BlY2lmaWNhdGlvbiBkZXNj
cmliZXMgdGhlc2Ugc3RlcHMgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLikKKworICAgICAgICAiIiIK
KyAgICAgICAgbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIiVzICEgZmFpbGluZyAlcyBXZWJT
b2NrZXQgY29ubmVjdGlvbiB3aXRoIGNvZGUgJWQiLAorICAgICAgICAgICAgc2VsZi5zaWRlLAor
ICAgICAgICAgICAgc2VsZi5zdGF0ZS5uYW1lLAorICAgICAgICAgICAgY29kZSwKKyAgICAgICAg
KQorCisgICAgICAgICMgQ2FuY2VsIHRyYW5zZmVyX2RhdGFfdGFzayBpZiB0aGUgb3BlbmluZyBo
YW5kc2hha2Ugc3VjY2VlZGVkLgorICAgICAgICAjIGNhbmNlbCgpIGlzIGlkZW1wb3RlbnQgYW5k
IGlnbm9yZWQgaWYgdGhlIHRhc2sgaXMgZG9uZSBhbHJlYWR5LgorICAgICAgICBpZiBoYXNhdHRy
KHNlbGYsICJ0cmFuc2Zlcl9kYXRhX3Rhc2siKToKKyAgICAgICAgICAgIHNlbGYudHJhbnNmZXJf
ZGF0YV90YXNrLmNhbmNlbCgpCisKKyAgICAgICAgIyBTZW5kIGEgY2xvc2UgZnJhbWUgd2hlbiB0
aGUgc3RhdGUgaXMgT1BFTiAoYSBjbG9zZSBmcmFtZSB3YXMgYWxyZWFkeQorICAgICAgICAjIHNl
bnQgaWYgaXQncyBDTE9TSU5HKSwgZXhjZXB0IHdoZW4gZmFpbGluZyB0aGUgY29ubmVjdGlvbiBi
ZWNhdXNlIG9mCisgICAgICAgICMgYW4gZXJyb3IgcmVhZGluZyBmcm9tIG9yIHdyaXRpbmcgdG8g
dGhlIG5ldHdvcmsuCisgICAgICAgICMgRG9uJ3Qgc2VuZCBhIGNsb3NlIGZyYW1lIGlmIHRoZSBj
b25uZWN0aW9uIGlzIGJyb2tlbi4KKyAgICAgICAgaWYgY29kZSAhPSAxMDA2IGFuZCBzZWxmLnN0
YXRlIGlzIFN0YXRlLk9QRU46CisKKyAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBzZXJpYWxpemVf
Y2xvc2UoY29kZSwgcmVhc29uKQorCisgICAgICAgICAgICAjIFdyaXRlIHRoZSBjbG9zZSBmcmFt
ZSB3aXRob3V0IGRyYWluaW5nIHRoZSB3cml0ZSBidWZmZXIuCisKKyAgICAgICAgICAgICMgS2Vl
cGluZyBmYWlsX2Nvbm5lY3Rpb24oKSBzeW5jaHJvbm91cyBndWFyYW50ZWVzIGl0IGNhbid0Cisg
ICAgICAgICAgICAjIGdldCBzdHVjayBhbmQgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24g
b2YgdGhlIGNhbGxlcnMuCisgICAgICAgICAgICAjIE5vdCBkcmFpbmlnIHRoZSB3cml0ZSBidWZm
ZXIgaXMgYWNjZXB0YWJsZSBpbiB0aGlzIGNvbnRleHQuCisKKyAgICAgICAgICAgICMgVGhpcyBk
dXBsaWNhdGVzIGEgZmV3IGxpbmVzIG9mIGNvZGUgZnJvbSB3cml0ZV9jbG9zZV9mcmFtZSgpCisg
ICAgICAgICAgICAjIGFuZCB3cml0ZV9mcmFtZSgpLgorCisgICAgICAgICAgICBzZWxmLnN0YXRl
ID0gU3RhdGUuQ0xPU0lORworICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAtIHN0YXRlID0g
Q0xPU0lORyIsIHNlbGYuc2lkZSkKKworICAgICAgICAgICAgZnJhbWUgPSBGcmFtZShUcnVlLCBP
UF9DTE9TRSwgZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgPiAlciIs
IHNlbGYuc2lkZSwgZnJhbWUpCisgICAgICAgICAgICBmcmFtZS53cml0ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZSwgbWFzaz1zZWxmLmlzX2NsaWVudCwgZXh0ZW5zaW9u
cz1zZWxmLmV4dGVuc2lvbnMKKyAgICAgICAgICAgICkKKworICAgICAgICAjIFN0YXJ0IGNsb3Nl
X2Nvbm5lY3Rpb25fdGFzayBpZiB0aGUgb3BlbmluZyBoYW5kc2hha2UgZGlkbid0IHN1Y2NlZWQu
CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICJjbG9zZV9jb25uZWN0aW9uX3Rhc2siKToK
KyAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbl90YXNrID0gc2VsZi5sb29wLmNyZWF0
ZV90YXNrKHNlbGYuY2xvc2VfY29ubmVjdGlvbigpKQorCisgICAgZGVmIGFib3J0X3BpbmdzKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZSBDb25uZWN0aW9uQ2xvc2Vk
IGluIHBlbmRpbmcga2VlcGFsaXZlIHBpbmdzLgorCisgICAgICAgIFRoZXknbGwgbmV2ZXIgcmVj
ZWl2ZSBhIHBvbmcgb25jZSB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuCisKKyAgICAgICAgIiIi
CisgICAgICAgIGFzc2VydCBzZWxmLnN0YXRlIGlzIFN0YXRlLkNMT1NFRAorICAgICAgICBleGMg
PSBzZWxmLmNvbm5lY3Rpb25fY2xvc2VkX2V4YygpCisKKyAgICAgICAgZm9yIHBpbmcgaW4gc2Vs
Zi5waW5ncy52YWx1ZXMoKToKKyAgICAgICAgICAgIHBpbmcuc2V0X2V4Y2VwdGlvbihleGMpCisg
ICAgICAgICAgICAjIElmIHRoZSBleGNlcHRpb24gaXMgbmV2ZXIgcmV0cmlldmVkLCBpdCB3aWxs
IGJlIGxvZ2dlZCB3aGVuIHBpbmcKKyAgICAgICAgICAgICMgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQu
IFRoaXMgaXMgY29uZnVzaW5nIGZvciB1c2Vycy4KKyAgICAgICAgICAgICMgR2l2ZW4gdGhhdCBw
aW5nIGlzIGRvbmUgKHdpdGggYW4gZXhjZXB0aW9uKSwgY2FuY2VsaW5nIGl0IGRvZXMKKyAgICAg
ICAgICAgICMgbm90aGluZywgYnV0IGl0IHByZXZlbnRzIGxvZ2dpbmcgdGhlIGV4Y2VwdGlvbi4K
KyAgICAgICAgICAgIHBpbmcuY2FuY2VsKCkKKworICAgICAgICBpZiBzZWxmLnBpbmdzOgorICAg
ICAgICAgICAgcGluZ3NfaGV4ID0gIiwgIi5qb2luKHBpbmdfaWQuaGV4KCkgb3IgIltlbXB0eV0i
IGZvciBwaW5nX2lkIGluIHNlbGYucGluZ3MpCisgICAgICAgICAgICBwbHVyYWwgPSAicyIgaWYg
bGVuKHNlbGYucGluZ3MpID4gMSBlbHNlICIiCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoCisg
ICAgICAgICAgICAgICAgIiVzIC0gYWJvcnRlZCBwZW5kaW5nIHBpbmclczogJXMiLCBzZWxmLnNp
ZGUsIHBsdXJhbCwgcGluZ3NfaGV4CisgICAgICAgICAgICApCisKKyAgICAjIGFzeW5jaW8uUHJv
dG9jb2wgbWV0aG9kcworCisgICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQ6
IGFzeW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENv
bmZpZ3VyZSB3cml0ZSBidWZmZXIgbGltaXRzLgorCisgICAgICAgIFRoZSBoaWdoLXdhdGVyIGxp
bWl0IGlzIGRlZmluZWQgYnkgYGBzZWxmLndyaXRlX2xpbWl0YGAuCisKKyAgICAgICAgVGhlIGxv
dy13YXRlciBsaW1pdCBjdXJyZW50bHkgZGVmYXVsdHMgdG8gYGBzZWxmLndyaXRlX2xpbWl0IC8v
IDRgYCBpbgorICAgICAgICA6bWV0aDpgfmFzeW5jaW8uV3JpdGVUcmFuc3BvcnQuc2V0X3dyaXRl
X2J1ZmZlcl9saW1pdHNgLCB3aGljaCBzaG91bGQKKyAgICAgICAgYmUgYWxsIHJpZ2h0IGZvciBy
ZWFzb25hYmxlIHVzZSBjYXNlcyBvZiB0aGlzIGxpYnJhcnkuCisKKyAgICAgICAgVGhpcyBpcyB0
aGUgZWFybGllc3QgcG9pbnQgd2hlcmUgd2UgY2FuIGdldCBob2xkIG9mIHRoZSB0cmFuc3BvcnQs
CisgICAgICAgIHdoaWNoIG1lYW5zIGl0J3MgdGhlIGJlc3QgcG9pbnQgZm9yIGNvbmZpZ3VyaW5n
IGl0LgorCisgICAgICAgICIiIgorICAgICAgICBsb2dnZXIuZGVidWcoIiVzIC0gZXZlbnQgPSBj
b25uZWN0aW9uX21hZGUoJXMpIiwgc2VsZi5zaWRlLCB0cmFuc3BvcnQpCisKKyAgICAgICAgdHJh
bnNwb3J0ID0gY2FzdChhc3luY2lvLlRyYW5zcG9ydCwgdHJhbnNwb3J0KQorICAgICAgICB0cmFu
c3BvcnQuc2V0X3dyaXRlX2J1ZmZlcl9saW1pdHMoc2VsZi53cml0ZV9saW1pdCkKKyAgICAgICAg
c2VsZi50cmFuc3BvcnQgPSB0cmFuc3BvcnQKKworICAgICAgICAjIENvcGllZCBmcm9tIGFzeW5j
aW8uU3RyZWFtUmVhZGVyUHJvdG9jb2wKKyAgICAgICAgc2VsZi5yZWFkZXIuc2V0X3RyYW5zcG9y
dCh0cmFuc3BvcnQpCisKKyAgICBkZWYgY29ubmVjdGlvbl9sb3N0KHNlbGYsIGV4YzogT3B0aW9u
YWxbRXhjZXB0aW9uXSkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIDcuMS40LiBUaGUg
V2ViU29ja2V0IENvbm5lY3Rpb24gaXMgQ2xvc2VkLgorCisgICAgICAgICIiIgorICAgICAgICBs
b2dnZXIuZGVidWcoIiVzIC0gZXZlbnQgPSBjb25uZWN0aW9uX2xvc3QoJXMpIiwgc2VsZi5zaWRl
LCBleGMpCisgICAgICAgIHNlbGYuc3RhdGUgPSBTdGF0ZS5DTE9TRUQKKyAgICAgICAgbG9nZ2Vy
LmRlYnVnKCIlcyAtIHN0YXRlID0gQ0xPU0VEIiwgc2VsZi5zaWRlKQorICAgICAgICBpZiBub3Qg
aGFzYXR0cihzZWxmLCAiY2xvc2VfY29kZSIpOgorICAgICAgICAgICAgc2VsZi5jbG9zZV9jb2Rl
ID0gMTAwNgorICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAiY2xvc2VfcmVhc29uIik6Cisg
ICAgICAgICAgICBzZWxmLmNsb3NlX3JlYXNvbiA9ICIiCisgICAgICAgIGxvZ2dlci5kZWJ1ZygK
KyAgICAgICAgICAgICIlcyB4IGNvZGUgPSAlZCwgcmVhc29uID0gJXMiLAorICAgICAgICAgICAg
c2VsZi5zaWRlLAorICAgICAgICAgICAgc2VsZi5jbG9zZV9jb2RlLAorICAgICAgICAgICAgc2Vs
Zi5jbG9zZV9yZWFzb24gb3IgIltubyByZWFzb25dIiwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFib3J0X3BpbmdzKCkKKyAgICAgICAgIyBJZiBzZWxmLmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIg
aXNuJ3QgcGVuZGluZywgdGhhdCdzIGEgYnVnLCBiZWNhdXNlOgorICAgICAgICAjIC0gaXQncyBz
ZXQgb25seSBoZXJlIGluIGNvbm5lY3Rpb25fbG9zdCgpIHdoaWNoIGlzIGNhbGxlZCBvbmx5IG9u
Y2U7CisgICAgICAgICMgLSBpdCBtdXN0IG5ldmVyIGJlIGNhbmNlbGVkLgorICAgICAgICBzZWxm
LmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorCisgICAgICAgIGlmIFRy
dWU6ICAjIHByYWdtYTogbm8gY292ZXIKKworICAgICAgICAgICAgIyBDb3BpZWQgZnJvbSBhc3lu
Y2lvLlN0cmVhbVJlYWRlclByb3RvY29sCisgICAgICAgICAgICBpZiBzZWxmLnJlYWRlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBleGMgaXMgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5yZWFkZXIuZmVlZF9lb2YoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVhZGVyLnNldF9leGNlcHRpb24oZXhjKQorCisgICAgICAg
ICAgICAjIENvcGllZCBmcm9tIGFzeW5jaW8uRmxvd0NvbnRyb2xNaXhpbgorICAgICAgICAgICAg
IyBXYWtlIHVwIHRoZSB3cml0ZXIgaWYgY3VycmVudGx5IHBhdXNlZC4KKyAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9wYXVzZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB3
YWl0ZXIgPSBzZWxmLl9kcmFpbl93YWl0ZXIKKyAgICAgICAgICAgIGlmIHdhaXRlciBpcyBOb25l
OgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5fZHJhaW5fd2FpdGVy
ID0gTm9uZQorICAgICAgICAgICAgaWYgd2FpdGVyLmRvbmUoKToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgICAgIGlmIGV4YyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHdhaXRl
ci5zZXRfcmVzdWx0KE5vbmUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdh
aXRlci5zZXRfZXhjZXB0aW9uKGV4YykKKworICAgIGRlZiBwYXVzZV93cml0aW5nKHNlbGYpIC0+
IE5vbmU6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9wYXVz
ZWQKKyAgICAgICAgc2VsZi5fcGF1c2VkID0gVHJ1ZQorCisgICAgZGVmIHJlc3VtZV93cml0aW5n
KHNlbGYpIC0+IE5vbmU6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgYXNzZXJ0IHNlbGYu
X3BhdXNlZAorICAgICAgICBzZWxmLl9wYXVzZWQgPSBGYWxzZQorCisgICAgICAgIHdhaXRlciA9
IHNlbGYuX2RyYWluX3dhaXRlcgorICAgICAgICBpZiB3YWl0ZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBzZWxmLl9kcmFpbl93YWl0ZXIgPSBOb25lCisgICAgICAgICAgICBpZiBub3Qgd2Fp
dGVyLmRvbmUoKToKKyAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorCisg
ICAgZGVmIGRhdGFfcmVjZWl2ZWQoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAg
IGxvZ2dlci5kZWJ1ZygiJXMgLSBldmVudCA9IGRhdGFfcmVjZWl2ZWQoPCVkIGJ5dGVzPikiLCBz
ZWxmLnNpZGUsIGxlbihkYXRhKSkKKyAgICAgICAgc2VsZi5yZWFkZXIuZmVlZF9kYXRhKGRhdGEp
CisKKyAgICBkZWYgZW9mX3JlY2VpdmVkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBDbG9zZSB0aGUgdHJhbnNwb3J0IGFmdGVyIHJlY2VpdmluZyBFT0YuCisKKyAgICAgICAg
VGhlIFdlYlNvY2tldCBwcm90b2NvbCBoYXMgaXRzIG93biBjbG9zaW5nIGhhbmRzaGFrZTogZW5k
cG9pbnRzIGNsb3NlCisgICAgICAgIHRoZSBUQ1Agb3IgVExTIGNvbm5lY3Rpb24gYWZ0ZXIgc2Vu
ZGluZyBhbmQgcmVjZWl2aW5nIGEgY2xvc2UgZnJhbWUuCisKKyAgICAgICAgQXMgYSBjb25zZXF1
ZW5jZSwgdGhleSBuZXZlciBuZWVkIHRvIHdyaXRlIGFmdGVyIHJlY2VpdmluZyBFT0YsIHNvCisg
ICAgICAgIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGtlZXAgdGhlIHRyYW5zcG9ydCBvcGVuIGJ5IHJl
dHVybmluZyBgYFRydWVgYC4KKworICAgICAgICBCZXNpZGVzLCB0aGF0IGRvZXNuJ3Qgd29yayBv
biBUTFMgY29ubmVjdGlvbnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxvZ2dlci5kZWJ1Zygi
JXMgLSBldmVudCA9IGVvZl9yZWNlaXZlZCgpIiwgc2VsZi5zaWRlKQorICAgICAgICBzZWxmLnJl
YWRlci5mZWVkX2VvZigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tl
dHMvcHkudHlwZWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcHkudHlwZWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9zZXJ2ZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvc3JjL3dlYnNvY2tldHMvc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZTllMGVmZTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3NlcnZlci5weQpAQCAtMCwwICsxLDk5NSBAQAorIiIi
Cis6bW9kOmB3ZWJzb2NrZXRzLnNlcnZlcmAgZGVmaW5lcyB0aGUgV2ViU29ja2V0IHNlcnZlciBB
UElzLgorCisiIiIKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2lt
cG9ydCBlbWFpbC51dGlscworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGh0dHAKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKK2Zyb20g
dHlwZXMgaW1wb3J0IFRyYWNlYmFja1R5cGUKK2Zyb20gdHlwaW5nIGltcG9ydCAoCisgICAgQW55
LAorICAgIEF3YWl0YWJsZSwKKyAgICBDYWxsYWJsZSwKKyAgICBHZW5lcmF0b3IsCisgICAgTGlz
dCwKKyAgICBPcHRpb25hbCwKKyAgICBTZXF1ZW5jZSwKKyAgICBTZXQsCisgICAgVHVwbGUsCisg
ICAgVHlwZSwKKyAgICBVbmlvbiwKKyAgICBjYXN0LAorKQorCitmcm9tIC5leGNlcHRpb25zIGlt
cG9ydCAoCisgICAgQWJvcnRIYW5kc2hha2UsCisgICAgSW52YWxpZEhhbmRzaGFrZSwKKyAgICBJ
bnZhbGlkSGVhZGVyLAorICAgIEludmFsaWRNZXNzYWdlLAorICAgIEludmFsaWRPcmlnaW4sCisg
ICAgSW52YWxpZFVwZ3JhZGUsCisgICAgTmVnb3RpYXRpb25FcnJvciwKKykKK2Zyb20gLmV4dGVu
c2lvbnMuYmFzZSBpbXBvcnQgRXh0ZW5zaW9uLCBTZXJ2ZXJFeHRlbnNpb25GYWN0b3J5Citmcm9t
IC5leHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0ZSBpbXBvcnQgU2VydmVyUGVyTWVzc2FnZURl
ZmxhdGVGYWN0b3J5Citmcm9tIC5oYW5kc2hha2UgaW1wb3J0IGJ1aWxkX3Jlc3BvbnNlLCBjaGVj
a19yZXF1ZXN0Citmcm9tIC5oZWFkZXJzIGltcG9ydCBidWlsZF9leHRlbnNpb24sIHBhcnNlX2V4
dGVuc2lvbiwgcGFyc2Vfc3VicHJvdG9jb2wKK2Zyb20gLmh0dHAgaW1wb3J0IFVTRVJfQUdFTlQs
IEhlYWRlcnMsIEhlYWRlcnNMaWtlLCBNdWx0aXBsZVZhbHVlc0Vycm9yLCByZWFkX3JlcXVlc3QK
K2Zyb20gLnByb3RvY29sIGltcG9ydCBXZWJTb2NrZXRDb21tb25Qcm90b2NvbAorZnJvbSAudHlw
aW5nIGltcG9ydCBFeHRlbnNpb25IZWFkZXIsIE9yaWdpbiwgU3VicHJvdG9jb2wKKworCitfX2Fs
bF9fID0gWyJzZXJ2ZSIsICJ1bml4X3NlcnZlIiwgIldlYlNvY2tldFNlcnZlclByb3RvY29sIiwg
IldlYlNvY2tldFNlcnZlciJdCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQorCisKK0hlYWRlcnNMaWtlT3JDYWxsYWJsZSA9IFVuaW9uW0hlYWRlcnNMaWtlLCBDYWxsYWJs
ZVtbc3RyLCBIZWFkZXJzXSwgSGVhZGVyc0xpa2VdXQorCitIVFRQUmVzcG9uc2UgPSBUdXBsZVto
dHRwLkhUVFBTdGF0dXMsIEhlYWRlcnNMaWtlLCBieXRlc10KKworCitjbGFzcyBXZWJTb2NrZXRT
ZXJ2ZXJQcm90b2NvbChXZWJTb2NrZXRDb21tb25Qcm90b2NvbCk6CisgICAgIiIiCisgICAgOmNs
YXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgc3ViY2xhc3MgaW1wbGVtZW50aW5nIGEgV2ViU29ja2V0
IHNlcnZlci4KKworICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgbW9zdCBvZiBpdHMgbWV0aG9kcyBm
cm9tCisgICAgOmNsYXNzOmB+d2Vic29ja2V0cy5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90
b2NvbGAuCisKKyAgICBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSwgaXQgZG9lc24ndCByZWx5
IG9uIGEgZnVsbCBIVFRQIGltcGxlbWVudGF0aW9uLgorICAgIEl0cyBzdXBwb3J0IGZvciBIVFRQ
IHJlc3BvbnNlcyBpcyB2ZXJ5IGxpbWl0ZWQuCisKKyAgICAiIiIKKworICAgIGlzX2NsaWVudCA9
IEZhbHNlCisgICAgc2lkZSA9ICJzZXJ2ZXIiCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAg
IHNlbGYsCisgICAgICAgIHdzX2hhbmRsZXI6IENhbGxhYmxlW1siV2ViU29ja2V0U2VydmVyUHJv
dG9jb2wiLCBzdHJdLCBBd2FpdGFibGVbQW55XV0sCisgICAgICAgIHdzX3NlcnZlcjogIldlYlNv
Y2tldFNlcnZlciIsCisgICAgICAgICosCisgICAgICAgIG9yaWdpbnM6IE9wdGlvbmFsW1NlcXVl
bmNlW09wdGlvbmFsW09yaWdpbl1dXSA9IE5vbmUsCisgICAgICAgIGV4dGVuc2lvbnM6IE9wdGlv
bmFsW1NlcXVlbmNlW1NlcnZlckV4dGVuc2lvbkZhY3RvcnldXSA9IE5vbmUsCisgICAgICAgIHN1
YnByb3RvY29sczogT3B0aW9uYWxbU2VxdWVuY2VbU3VicHJvdG9jb2xdXSA9IE5vbmUsCisgICAg
ICAgIGV4dHJhX2hlYWRlcnM6IE9wdGlvbmFsW0hlYWRlcnNMaWtlT3JDYWxsYWJsZV0gPSBOb25l
LAorICAgICAgICBwcm9jZXNzX3JlcXVlc3Q6IE9wdGlvbmFsWworICAgICAgICAgICAgQ2FsbGFi
bGVbW3N0ciwgSGVhZGVyc10sIEF3YWl0YWJsZVtPcHRpb25hbFtIVFRQUmVzcG9uc2VdXV0KKyAg
ICAgICAgXSA9IE5vbmUsCisgICAgICAgIHNlbGVjdF9zdWJwcm90b2NvbDogT3B0aW9uYWxbCisg
ICAgICAgICAgICBDYWxsYWJsZVtbU2VxdWVuY2VbU3VicHJvdG9jb2xdLCBTZXF1ZW5jZVtTdWJw
cm90b2NvbF1dLCBTdWJwcm90b2NvbF0KKyAgICAgICAgXSA9IE5vbmUsCisgICAgICAgICoqa3dh
cmdzOiBBbnksCisgICAgKSAtPiBOb25lOgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSB3aXRoIDYuMCBvciBlYXJsaWVyLgorICAgICAgICBpZiBvcmlnaW5zIGlzIG5vdCBO
b25lIGFuZCAiIiBpbiBvcmlnaW5zOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigidXNlIE5v
bmUgaW5zdGVhZCBvZiAnJyBpbiBvcmlnaW5zIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAg
ICAgICAgb3JpZ2lucyA9IFtOb25lIGlmIG9yaWdpbiA9PSAiIiBlbHNlIG9yaWdpbiBmb3Igb3Jp
Z2luIGluIG9yaWdpbnNdCisgICAgICAgIHNlbGYud3NfaGFuZGxlciA9IHdzX2hhbmRsZXIKKyAg
ICAgICAgc2VsZi53c19zZXJ2ZXIgPSB3c19zZXJ2ZXIKKyAgICAgICAgc2VsZi5vcmlnaW5zID0g
b3JpZ2lucworICAgICAgICBzZWxmLmF2YWlsYWJsZV9leHRlbnNpb25zID0gZXh0ZW5zaW9ucwor
ICAgICAgICBzZWxmLmF2YWlsYWJsZV9zdWJwcm90b2NvbHMgPSBzdWJwcm90b2NvbHMKKyAgICAg
ICAgc2VsZi5leHRyYV9oZWFkZXJzID0gZXh0cmFfaGVhZGVycworICAgICAgICBzZWxmLl9wcm9j
ZXNzX3JlcXVlc3QgPSBwcm9jZXNzX3JlcXVlc3QKKyAgICAgICAgc2VsZi5fc2VsZWN0X3N1YnBy
b3RvY29sID0gc2VsZWN0X3N1YnByb3RvY29sCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKipr
d2FyZ3MpCisKKyAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydDogYXN5bmNp
by5CYXNlVHJhbnNwb3J0KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmVnaXN0ZXIg
Y29ubmVjdGlvbiBhbmQgaW5pdGlhbGl6ZSBhIHRhc2sgdG8gaGFuZGxlIGl0LgorCisgICAgICAg
ICIiIgorICAgICAgICBzdXBlcigpLmNvbm5lY3Rpb25fbWFkZSh0cmFuc3BvcnQpCisgICAgICAg
ICMgUmVnaXN0ZXIgdGhlIGNvbm5lY3Rpb24gd2l0aCB0aGUgc2VydmVyIGJlZm9yZSBjcmVhdGlu
ZyB0aGUgaGFuZGxlcgorICAgICAgICAjIHRhc2suIFJlZ2lzdGVyaW5nIGF0IHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGhhbmRsZXIgY29yb3V0aW5lIHdvdWxkCisgICAgICAgICMgY3JlYXRlIGEgcmFj
ZSBjb25kaXRpb24gYmV0d2VlbiB0aGUgY3JlYXRpb24gb2YgdGhlIHRhc2ssIHdoaWNoCisgICAg
ICAgICMgc2NoZWR1bGVzIGl0cyBleGVjdXRpb24sIGFuZCB0aGUgbW9tZW50IHRoZSBoYW5kbGVy
IHN0YXJ0cyBydW5uaW5nLgorICAgICAgICBzZWxmLndzX3NlcnZlci5yZWdpc3RlcihzZWxmKQor
ICAgICAgICBzZWxmLmhhbmRsZXJfdGFzayA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhzZWxmLmhh
bmRsZXIoKSkKKworICAgIGFzeW5jIGRlZiBoYW5kbGVyKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
ICIiIgorICAgICAgICBIYW5kbGUgdGhlIGxpZmVjeWNsZSBvZiBhIFdlYlNvY2tldCBjb25uZWN0
aW9uLgorCisgICAgICAgIFNpbmNlIHRoaXMgbWV0aG9kIGRvZXNuJ3QgaGF2ZSBhIGNhbGxlciBh
YmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLCBpdAorICAgICAgICBhdHRlbXBzIHRvIGxvZyByZWxl
dmFudCBvbmVzIGFuZCBndWFyYW50ZWVzIHRoYXQgdGhlIFRDUCBjb25uZWN0aW9uIGlzCisgICAg
ICAgIGNsb3NlZCBiZWZvcmUgZXhpdGluZy4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5Ogor
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGF0aCA9IGF3YWl0IHNlbGYuaGFu
ZHNoYWtlKAorICAgICAgICAgICAgICAgICAgICBvcmlnaW5zPXNlbGYub3JpZ2lucywKKyAgICAg
ICAgICAgICAgICAgICAgYXZhaWxhYmxlX2V4dGVuc2lvbnM9c2VsZi5hdmFpbGFibGVfZXh0ZW5z
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3N1YnByb3RvY29scz1zZWxmLmF2
YWlsYWJsZV9zdWJwcm90b2NvbHMsCisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2hlYWRlcnM9
c2VsZi5leHRyYV9oZWFkZXJzLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2Vw
dCBDb25uZWN0aW9uRXJyb3I6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJDb25uZWN0
aW9uIGVycm9yIGluIG9wZW5pbmcgaGFuZHNoYWtlIiwgZXhjX2luZm89VHJ1ZSkKKyAgICAgICAg
ICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAg
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGMsIEFib3J0SGFuZHNoYWtlKToKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzLCBoZWFkZXJzLCBib2R5ID0gZXhjLnN0YXR1cywgZXhjLmhlYWRl
cnMsIGV4Yy5ib2R5CisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV4YywgSW52YWxp
ZE9yaWdpbik6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiSW52YWxpZCBvcmln
aW4iLCBleGNfaW5mbz1UcnVlKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIGhlYWRlcnMs
IGJvZHkgPSAoCisgICAgICAgICAgICAgICAgICAgICAgICBodHRwLkhUVFBTdGF0dXMuRk9SQklE
REVOLAorICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVycygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZiJGYWlsZWQgdG8gb3BlbiBhIFdlYlNvY2tldCBjb25uZWN0aW9uOiB7ZXhjfS5c
biIuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbGlm
IGlzaW5zdGFuY2UoZXhjLCBJbnZhbGlkVXBncmFkZSk6CisgICAgICAgICAgICAgICAgICAgIGxv
Z2dlci5kZWJ1ZygiSW52YWxpZCB1cGdyYWRlIiwgZXhjX2luZm89VHJ1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzLCBoZWFkZXJzLCBib2R5ID0gKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaHR0cC5IVFRQU3RhdHVzLlVQR1JBREVfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBIZWFkZXJzKFsoIlVwZ3JhZGUiLCAid2Vic29ja2V0IildKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIkZhaWxlZCB0byBvcGVu
IGEgV2ViU29ja2V0IGNvbm5lY3Rpb246IHtleGN9LlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGYiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJZb3UgY2Fubm90IGFj
Y2VzcyBhIFdlYlNvY2tldCBzZXJ2ZXIgZGlyZWN0bHkgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGYid2l0aCBhIGJyb3dzZXIuIFlvdSBuZWVkIGEgV2ViU29ja2V0IGNsaWVudC5cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICkuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXhjLCBJbnZhbGlkSGFuZHNoYWtl
KToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJJbnZhbGlkIGhhbmRzaGFrZSIs
IGV4Y19pbmZvPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgaGVhZGVycywgYm9k
eSA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAuSFRUUFN0YXR1cy5CQURfUkVRVUVT
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlcnMoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGYiRmFpbGVkIHRvIG9wZW4gYSBXZWJTb2NrZXQgY29ubmVjdGlvbjoge2V4Y30uXG4i
LmVuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkVycm9yIGluIG9wZW5pbmcgaGFu
ZHNoYWtlIiwgZXhjX2luZm89VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBoZWFk
ZXJzLCBib2R5ID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLklO
VEVSTkFMX1NFUlZFUl9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlcnMoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
IkZhaWxlZCB0byBvcGVuIGEgV2ViU29ja2V0IGNvbm5lY3Rpb24uXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYiJTZWUgc2VydmVyIGxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgICAgIGhlYWRlcnMuc2V0ZGVmYXVsdCgiRGF0ZSIsIGVtYWlsLnV0aWxzLmZvcm1h
dGRhdGUodXNlZ210PVRydWUpKQorICAgICAgICAgICAgICAgIGhlYWRlcnMuc2V0ZGVmYXVsdCgi
U2VydmVyIiwgVVNFUl9BR0VOVCkKKyAgICAgICAgICAgICAgICBoZWFkZXJzLnNldGRlZmF1bHQo
IkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGxlbihib2R5KSkpCisgICAgICAgICAgICAgICAgaGVhZGVy
cy5zZXRkZWZhdWx0KCJDb250ZW50LVR5cGUiLCAidGV4dC9wbGFpbiIpCisgICAgICAgICAgICAg
ICAgaGVhZGVycy5zZXRkZWZhdWx0KCJDb25uZWN0aW9uIiwgImNsb3NlIikKKworICAgICAgICAg
ICAgICAgIHNlbGYud3JpdGVfaHR0cF9yZXNwb25zZShzdGF0dXMsIGhlYWRlcnMsIGJvZHkpCisg
ICAgICAgICAgICAgICAgc2VsZi5mYWlsX2Nvbm5lY3Rpb24oKQorICAgICAgICAgICAgICAgIGF3
YWl0IHNlbGYud2FpdF9jbG9zZWQoKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi53c19oYW5kbGVyKHNlbGYsIHBh
dGgpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGxvZ2dl
ci5lcnJvcigiRXJyb3IgaW4gY29ubmVjdGlvbiBoYW5kbGVyIiwgZXhjX2luZm89VHJ1ZSkKKyAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuZmFpbF9jb25uZWN0aW9uKDEwMTEpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYuY2xvc2UoKQorICAgICAgICAg
ICAgZXhjZXB0IENvbm5lY3Rpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWco
IkNvbm5lY3Rpb24gZXJyb3IgaW4gY2xvc2luZyBoYW5kc2hha2UiLCBleGNfaW5mbz1UcnVlKQor
ICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAg
ICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJFcnJvciBpbiBjbG9zaW5nIGhhbmRzaGFrZSIs
IGV4Y19pbmZvPVRydWUpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBleGNlcHQg
RXhjZXB0aW9uOgorICAgICAgICAgICAgIyBMYXN0LWRpdGNoIGF0dGVtcHQgdG8gYXZvaWQgbGVh
a2luZyBjb25uZWN0aW9ucyBvbiBlcnJvcnMuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgc2VsZi50cmFuc3BvcnQuY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
bjogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgIyBVbnJlZ2lzdGVyIHRoZSBjb25uZWN0aW9uIHdpdGggdGhl
IHNlcnZlciB3aGVuIHRoZSBoYW5kbGVyIHRhc2sKKyAgICAgICAgICAgICMgdGVybWluYXRlcy4g
UmVnaXN0cmF0aW9uIGlzIHRpZWQgdG8gdGhlIGxpZmVjeWNsZSBvZiB0aGUgaGFuZGxlcgorICAg
ICAgICAgICAgIyB0YXNrIGJlY2F1c2UgdGhlIHNlcnZlciB3YWl0cyBmb3IgdGFza3MgYXR0YWNo
ZWQgdG8gcmVnaXN0ZXJlZAorICAgICAgICAgICAgIyBjb25uZWN0aW9ucyBiZWZvcmUgdGVybWlu
YXRpbmcuCisgICAgICAgICAgICBzZWxmLndzX3NlcnZlci51bnJlZ2lzdGVyKHNlbGYpCisKKyAg
ICBhc3luYyBkZWYgcmVhZF9odHRwX3JlcXVlc3Qoc2VsZikgLT4gVHVwbGVbc3RyLCBIZWFkZXJz
XToKKyAgICAgICAgIiIiCisgICAgICAgIFJlYWQgcmVxdWVzdCBsaW5lIGFuZCBoZWFkZXJzIGZy
b20gdGhlIEhUVFAgcmVxdWVzdC4KKworICAgICAgICBJZiB0aGUgcmVxdWVzdCBjb250YWlucyBh
IGJvZHksIGl0IG1heSBiZSByZWFkIGZyb20gYGBzZWxmLnJlYWRlcmBgCisgICAgICAgIGFmdGVy
IHRoaXMgY29yb3V0aW5lIHJldHVybnMuCisKKyAgICAgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5l
eGNlcHRpb25zLkludmFsaWRNZXNzYWdlOiBpZiB0aGUgSFRUUCBtZXNzYWdlIGlzCisgICAgICAg
ICAgICBtYWxmb3JtZWQgb3IgaXNuJ3QgYW4gSFRUUC8xLjEgR0VUIHJlcXVlc3QKKworICAgICAg
ICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCwgaGVhZGVycyA9IGF3YWl0IHJl
YWRfcmVxdWVzdChzZWxmLnJlYWRlcikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6
CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkTWVzc2FnZSgiZGlkIG5vdCByZWNlaXZlIGEgdmFs
aWQgSFRUUCByZXF1ZXN0IikgZnJvbSBleGMKKworICAgICAgICBsb2dnZXIuZGVidWcoIiVzIDwg
R0VUICVzIEhUVFAvMS4xIiwgc2VsZi5zaWRlLCBwYXRoKQorICAgICAgICBsb2dnZXIuZGVidWco
IiVzIDwgJXIiLCBzZWxmLnNpZGUsIGhlYWRlcnMpCisKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0
aAorICAgICAgICBzZWxmLnJlcXVlc3RfaGVhZGVycyA9IGhlYWRlcnMKKworICAgICAgICByZXR1
cm4gcGF0aCwgaGVhZGVycworCisgICAgZGVmIHdyaXRlX2h0dHBfcmVzcG9uc2UoCisgICAgICAg
IHNlbGYsIHN0YXR1czogaHR0cC5IVFRQU3RhdHVzLCBoZWFkZXJzOiBIZWFkZXJzLCBib2R5OiBP
cHRpb25hbFtieXRlc10gPSBOb25lCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgV3JpdGUgc3RhdHVzIGxpbmUgYW5kIGhlYWRlcnMgdG8gdGhlIEhUVFAgcmVzcG9uc2UuCisK
KyAgICAgICAgVGhpcyBjb3JvdXRpbmUgaXMgYWxzbyBhYmxlIHRvIHdyaXRlIGEgcmVzcG9uc2Ug
Ym9keS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZXNwb25zZV9oZWFkZXJzID0gaGVh
ZGVycworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgPiBIVFRQLzEuMSAlZCAlcyIsIHNlbGYu
c2lkZSwgc3RhdHVzLnZhbHVlLCBzdGF0dXMucGhyYXNlKQorICAgICAgICBsb2dnZXIuZGVidWco
IiVzID4gJXIiLCBzZWxmLnNpZGUsIGhlYWRlcnMpCisKKyAgICAgICAgIyBTaW5jZSB0aGUgc3Rh
dHVzIGxpbmUgYW5kIGhlYWRlcnMgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMsCisgICAg
ICAgICMgd2UgY2FuIGtlZXAgdGhpcyBzaW1wbGUuCisgICAgICAgIHJlc3BvbnNlID0gZiJIVFRQ
LzEuMSB7c3RhdHVzLnZhbHVlfSB7c3RhdHVzLnBocmFzZX1cclxuIgorICAgICAgICByZXNwb25z
ZSArPSBzdHIoaGVhZGVycykKKworICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZShyZXNwb25z
ZS5lbmNvZGUoKSkKKworICAgICAgICBpZiBib2R5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
bG9nZ2VyLmRlYnVnKCIlcyA+IGJvZHkgKCVkIGJ5dGVzKSIsIHNlbGYuc2lkZSwgbGVuKGJvZHkp
KQorICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQud3JpdGUoYm9keSkKKworICAgIGFzeW5jIGRl
ZiBwcm9jZXNzX3JlcXVlc3QoCisgICAgICAgIHNlbGYsIHBhdGg6IHN0ciwgcmVxdWVzdF9oZWFk
ZXJzOiBIZWFkZXJzCisgICAgKSAtPiBPcHRpb25hbFtIVFRQUmVzcG9uc2VdOgorICAgICAgICAi
IiIKKyAgICAgICAgSW50ZXJjZXB0IHRoZSBIVFRQIHJlcXVlc3QgYW5kIHJldHVybiBhbiBIVFRQ
IHJlc3BvbnNlIGlmIGFwcHJvcHJpYXRlLgorCisgICAgICAgIElmIGBgcHJvY2Vzc19yZXF1ZXN0
YGAgcmV0dXJucyBgYE5vbmVgYCwgdGhlIFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgY29u
dGludWVzLiBJZiBpdCByZXR1cm5zIDMtdXBsZSBjb250YWluaW5nIGEgc3RhdHVzIGNvZGUsIHJl
c3BvbnNlCisgICAgICAgIGhlYWRlcnMgYW5kIGEgcmVzcG9uc2UgYm9keSwgdGhhdCBIVFRQIHJl
c3BvbnNlIGlzIHNlbnQgYW5kIHRoZQorICAgICAgICBjb25uZWN0aW9uIGlzIGNsb3NlZC4gSW4g
dGhhdCBjYXNlOgorCisgICAgICAgICogVGhlIEhUVFAgc3RhdHVzIG11c3QgYmUgYSA6Y2xhc3M6
YH5odHRwLkhUVFBTdGF0dXNgLgorICAgICAgICAqIEhUVFAgaGVhZGVycyBtdXN0IGJlIGEgOmNs
YXNzOmB+d2Vic29ja2V0cy5odHRwLkhlYWRlcnNgIGluc3RhbmNlLCBhCisgICAgICAgICAgOmNs
YXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLCBvciBhbiBpdGVyYWJsZSBvZiBgYChuYW1l
LAorICAgICAgICAgIHZhbHVlKWBgIHBhaXJzLgorICAgICAgICAqIFRoZSBIVFRQIHJlc3BvbnNl
IGJvZHkgbXVzdCBiZSA6Y2xhc3M6YGJ5dGVzYC4gSXQgbWF5IGJlIGVtcHR5LgorCisgICAgICAg
IFRoaXMgY29yb3V0aW5lIG1heSBiZSBvdmVycmlkZGVuIGluIGEgOmNsYXNzOmBXZWJTb2NrZXRT
ZXJ2ZXJQcm90b2NvbGAKKyAgICAgICAgc3ViY2xhc3MsIGZvciBleGFtcGxlOgorCisgICAgICAg
ICogdG8gcmV0dXJuIGEgSFRUUCAyMDAgT0sgcmVzcG9uc2Ugb24gYSBnaXZlbiBwYXRoOyB0aGVu
IGEgbG9hZAorICAgICAgICAgIGJhbGFuY2VyIGNhbiB1c2UgdGhpcyBwYXRoIGZvciBhIGhlYWx0
aCBjaGVjazsKKyAgICAgICAgKiB0byBhdXRoZW50aWNhdGUgdGhlIHJlcXVlc3QgYW5kIHJldHVy
biBhIEhUVFAgNDAxIFVuYXV0aG9yaXplZCBvciBhCisgICAgICAgICAgSFRUUCA0MDMgRm9yYmlk
ZGVuIHdoZW4gYXV0aGVudGljYXRpb24gZmFpbHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzdWJj
bGFzc2luZywgaXQgaXMgcG9zc2libGUgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QgYnkKKyAgICAg
ICAgcGFzc2luZyBhIGBgcHJvY2Vzc19yZXF1ZXN0YGAgYXJndW1lbnQgdG8gdGhlIDpmdW5jOmBz
ZXJ2ZWAgZnVuY3Rpb24KKyAgICAgICAgb3IgdGhlIDpjbGFzczpgV2ViU29ja2V0U2VydmVyUHJv
dG9jb2xgIGNvbnN0cnVjdG9yLiBUaGlzIGlzCisgICAgICAgIGVxdWl2YWxlbnQsIGV4Y2VwdCBg
YHByb2Nlc3NfcmVxdWVzdGBgIHdvbid0IGhhdmUgYWNjZXNzIHRvIHRoZQorICAgICAgICBwcm90
b2NvbCBpbnN0YW5jZSwgc28gaXQgY2FuJ3Qgc3RvcmUgaW5mb3JtYXRpb24gZm9yIGxhdGVyIHVz
ZS4KKworICAgICAgICBgYHByb2Nlc3NfcmVxdWVzdGBgIGlzIGV4cGVjdGVkIHRvIGNvbXBsZXRl
IHF1aWNrbHkuIElmIGl0IG1heSBydW4gZm9yCisgICAgICAgIGEgbG9uZyB0aW1lLCB0aGVuIGl0
IHNob3VsZCBhd2FpdCA6bWV0aDpgd2FpdF9jbG9zZWRgIGFuZCBleGl0IGlmCisgICAgICAgIDpt
ZXRoOmB3YWl0X2Nsb3NlZGAgY29tcGxldGVzLCBvciBlbHNlIGl0IGNvdWxkIHByZXZlbnQgdGhl
IHNlcnZlcgorICAgICAgICBmcm9tIHNodXR0aW5nIGRvd24uCisKKyAgICAgICAgOnBhcmFtIHBh
dGg6IHJlcXVlc3QgcGF0aCwgaW5jbHVkaW5nIG9wdGlvbmFsIHF1ZXJ5IHN0cmluZworICAgICAg
ICA6cGFyYW0gcmVxdWVzdF9oZWFkZXJzOiByZXF1ZXN0IGhlYWRlcnMKKworICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fcHJvY2Vzc19yZXF1ZXN0IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgcmVzcG9uc2UgPSBzZWxmLl9wcm9jZXNzX3JlcXVlc3QocGF0aCwgcmVxdWVzdF9oZWFkZXJz
KQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNwb25zZSwgQXdhaXRhYmxlKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCA3LjAuCisgICAg
ICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAgICAgImRlY2xhcmUg
cHJvY2Vzc19yZXF1ZXN0IGFzIGEgY29yb3V0aW5lIiwgRGVwcmVjYXRpb25XYXJuaW5nCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZSAgIyB0eXBlOiBp
Z25vcmUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
cHJvY2Vzc19vcmlnaW4oCisgICAgICAgIGhlYWRlcnM6IEhlYWRlcnMsIG9yaWdpbnM6IE9wdGlv
bmFsW1NlcXVlbmNlW09wdGlvbmFsW09yaWdpbl1dXSA9IE5vbmUKKyAgICApIC0+IE9wdGlvbmFs
W09yaWdpbl06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgdGhlIE9yaWdpbiBIVFRQIHJl
cXVlc3QgaGVhZGVyLgorCisgICAgICAgIDpwYXJhbSBoZWFkZXJzOiByZXF1ZXN0IGhlYWRlcnMK
KyAgICAgICAgOnBhcmFtIG9yaWdpbnM6IG9wdGlvbmFsIGxpc3Qgb2YgYWNjZXB0YWJsZSBvcmln
aW5zCisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkT3JpZ2lu
OiBpZiB0aGUgb3JpZ2luIGlzbid0CisgICAgICAgICAgICBhY2NlcHRhYmxlCisKKyAgICAgICAg
IiIiCisgICAgICAgICMgIlRoZSB1c2VyIGFnZW50IE1VU1QgTk9UIGluY2x1ZGUgbW9yZSB0aGFu
IG9uZSBPcmlnaW4gaGVhZGVyIGZpZWxkIgorICAgICAgICAjIHBlciBodHRwczovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjNjQ1NCNzZWN0aW9uLTcuMy4KKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgb3JpZ2luID0gY2FzdChPcmlnaW4sIGhlYWRlcnMuZ2V0KCJPcmlnaW4iKSkKKyAgICAgICAg
ZXhjZXB0IE11bHRpcGxlVmFsdWVzRXJyb3I6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVh
ZGVyKCJPcmlnaW4iLCAibW9yZSB0aGFuIG9uZSBPcmlnaW4gaGVhZGVyIGZvdW5kIikKKyAgICAg
ICAgaWYgb3JpZ2lucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG9yaWdpbiBub3QgaW4g
b3JpZ2luczoKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkT3JpZ2luKG9yaWdpbikKKyAg
ICAgICAgcmV0dXJuIG9yaWdpbgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwcm9jZXNz
X2V4dGVuc2lvbnMoCisgICAgICAgIGhlYWRlcnM6IEhlYWRlcnMsCisgICAgICAgIGF2YWlsYWJs
ZV9leHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVtTZXJ2ZXJFeHRlbnNpb25GYWN0b3J5XV0s
CisgICAgKSAtPiBUdXBsZVtPcHRpb25hbFtzdHJdLCBMaXN0W0V4dGVuc2lvbl1dOgorICAgICAg
ICAiIiIKKyAgICAgICAgSGFuZGxlIHRoZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgSFRUUCBy
ZXF1ZXN0IGhlYWRlci4KKworICAgICAgICBBY2NlcHQgb3IgcmVqZWN0IGVhY2ggZXh0ZW5zaW9u
IHByb3Bvc2VkIGluIHRoZSBjbGllbnQgcmVxdWVzdC4KKyAgICAgICAgTmVnb3RpYXRlIHBhcmFt
ZXRlcnMgZm9yIGFjY2VwdGVkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgUmV0dXJuIHRoZSBTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnMgSFRUUCByZXNwb25zZSBoZWFkZXIgYW5kIHRoZSBsaXN0Cisg
ICAgICAgIG9mIGFjY2VwdGVkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgOnJmYzpgNjQ1NWAgbGVh
dmVzIHRoZSBydWxlcyB1cCB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBlYWNoCisgICAgICAgIDpl
eHRlbnNpb24uCisKKyAgICAgICAgVG8gcHJvdmlkZSB0aGlzIGxldmVsIG9mIGZsZXhpYmlsaXR5
LCBmb3IgZWFjaCBleHRlbnNpb24gcHJvcG9zZWQgYnkKKyAgICAgICAgdGhlIGNsaWVudCwgd2Ug
Y2hlY2sgZm9yIGEgbWF0Y2ggd2l0aCBlYWNoIGV4dGVuc2lvbiBhdmFpbGFibGUgaW4gdGhlCisg
ICAgICAgIHNlcnZlciBjb25maWd1cmF0aW9uLiBJZiBubyBtYXRjaCBpcyBmb3VuZCwgdGhlIGV4
dGVuc2lvbiBpcyBpZ25vcmVkLgorCisgICAgICAgIElmIHNldmVyYWwgdmFyaWFudHMgb2YgdGhl
IHNhbWUgZXh0ZW5zaW9uIGFyZSBwcm9wb3NlZCBieSB0aGUgY2xpZW50LAorICAgICAgICBpdCBt
YXkgYmUgYWNjZXB0ZWQgc2V2ZXJlbCB0aW1lcywgd2hpY2ggd29uJ3QgbWFrZSBzZW5zZSBpbiBn
ZW5lcmFsLgorICAgICAgICBFeHRlbnNpb25zIG11c3QgaW1wbGVtZW50IHRoZWlyIG93biByZXF1
aXJlbWVudHMuIEZvciB0aGlzIHB1cnBvc2UsCisgICAgICAgIHRoZSBsaXN0IG9mIHByZXZpb3Vz
bHkgYWNjZXB0ZWQgZXh0ZW5zaW9ucyBpcyBwcm92aWRlZC4KKworICAgICAgICBUaGlzIHByb2Nl
c3MgZG9lc24ndCBhbGxvdyB0aGUgc2VydmVyIHRvIHJlb3JkZXIgZXh0ZW5zaW9ucy4gSXQgY2Fu
CisgICAgICAgIG9ubHkgc2VsZWN0IGEgc3Vic2V0IG9mIHRoZSBleHRlbnNpb25zIHByb3Bvc2Vk
IGJ5IHRoZSBjbGllbnQuCisKKyAgICAgICAgT3RoZXIgcmVxdWlyZW1lbnRzLCBmb3IgZXhhbXBs
ZSByZWxhdGVkIHRvIG1hbmRhdG9yeSBleHRlbnNpb25zIG9yIHRoZQorICAgICAgICBvcmRlciBv
ZiBleHRlbnNpb25zLCBtYXkgYmUgaW1wbGVtZW50ZWQgYnkgb3ZlcnJpZGluZyB0aGlzIG1ldGhv
ZC4KKworICAgICAgICA6cGFyYW0gaGVhZGVyczogcmVxdWVzdCBoZWFkZXJzCisgICAgICAgIDpw
YXJhbSBleHRlbnNpb25zOiBvcHRpb25hbCBsaXN0IG9mIHN1cHBvcnRlZCBleHRlbnNpb25zCisg
ICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkSGFuZHNoYWtlOiB0
byBhYm9ydCB0aGUKKyAgICAgICAgICAgIGhhbmRzaGFrZSB3aXRoIGFuIEhUVFAgNDAwIGVycm9y
IGNvZGUKKworICAgICAgICAiIiIKKyAgICAgICAgcmVzcG9uc2VfaGVhZGVyX3ZhbHVlOiBPcHRp
b25hbFtzdHJdID0gTm9uZQorCisgICAgICAgIGV4dGVuc2lvbl9oZWFkZXJzOiBMaXN0W0V4dGVu
c2lvbkhlYWRlcl0gPSBbXQorICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zOiBMaXN0W0V4dGVu
c2lvbl0gPSBbXQorCisgICAgICAgIGhlYWRlcl92YWx1ZXMgPSBoZWFkZXJzLmdldF9hbGwoIlNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyIpCisKKyAgICAgICAgaWYgaGVhZGVyX3ZhbHVlcyBhbmQg
YXZhaWxhYmxlX2V4dGVuc2lvbnM6CisKKyAgICAgICAgICAgIHBhcnNlZF9oZWFkZXJfdmFsdWVz
OiBMaXN0W0V4dGVuc2lvbkhlYWRlcl0gPSBzdW0oCisgICAgICAgICAgICAgICAgW3BhcnNlX2V4
dGVuc2lvbihoZWFkZXJfdmFsdWUpIGZvciBoZWFkZXJfdmFsdWUgaW4gaGVhZGVyX3ZhbHVlc10s
IFtdCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGZvciBuYW1lLCByZXF1ZXN0X3BhcmFt
cyBpbiBwYXJzZWRfaGVhZGVyX3ZhbHVlczoKKworICAgICAgICAgICAgICAgIGZvciBleHRfZmFj
dG9yeSBpbiBhdmFpbGFibGVfZXh0ZW5zaW9uczoKKworICAgICAgICAgICAgICAgICAgICAjIFNr
aXAgbm9uLW1hdGNoaW5nIGV4dGVuc2lvbnMgYmFzZWQgb24gdGhlaXIgbmFtZS4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgZXh0X2ZhY3RvcnkubmFtZSAhPSBuYW1lOgorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIFNraXAgbm9uLW1hdGNo
aW5nIGV4dGVuc2lvbnMgYmFzZWQgb24gdGhlaXIgcGFyYW1zLgorICAgICAgICAgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9wYXJhbXMsIGV4dGVuc2lv
biA9IGV4dF9mYWN0b3J5LnByb2Nlc3NfcmVxdWVzdF9wYXJhbXMoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdF9wYXJhbXMsIGFjY2VwdGVkX2V4dGVuc2lvbnMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE5lZ290aWF0aW9u
RXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAg
ICAgICAgICMgQWRkIG1hdGNoaW5nIGV4dGVuc2lvbiB0byB0aGUgZmluYWwgbGlzdC4KKyAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uX2hlYWRlcnMuYXBwZW5kKChuYW1lLCByZXNwb25zZV9w
YXJhbXMpKQorICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChl
eHRlbnNpb24pCisKKyAgICAgICAgICAgICAgICAgICAgIyBCcmVhayBvdXQgb2YgdGhlIGxvb3Ag
b25jZSB3ZSBoYXZlIGEgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg
ICAgICAgICAgICAjIElmIHdlIGRpZG4ndCBicmVhayBmcm9tIHRoZSBsb29wLCBubyBleHRlbnNp
b24gaW4gb3VyIGxpc3QKKyAgICAgICAgICAgICAgICAjIG1hdGNoZWQgd2hhdCB0aGUgY2xpZW50
IHNlbnQuIFRoZSBleHRlbnNpb24gaXMgZGVjbGluZWQuCisKKyAgICAgICAgIyBTZXJpYWxpemUg
ZXh0ZW5zaW9uIGhlYWRlci4KKyAgICAgICAgaWYgZXh0ZW5zaW9uX2hlYWRlcnM6CisgICAgICAg
ICAgICByZXNwb25zZV9oZWFkZXJfdmFsdWUgPSBidWlsZF9leHRlbnNpb24oZXh0ZW5zaW9uX2hl
YWRlcnMpCisKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlX2hlYWRlcl92YWx1ZSwgYWNjZXB0ZWRf
ZXh0ZW5zaW9ucworCisgICAgIyBOb3QgQHN0YXRpY21ldGhvZCBiZWNhdXNlIGl0IGNhbGxzIHNl
bGYuc2VsZWN0X3N1YnByb3RvY29sKCkKKyAgICBkZWYgcHJvY2Vzc19zdWJwcm90b2NvbCgKKyAg
ICAgICAgc2VsZiwgaGVhZGVyczogSGVhZGVycywgYXZhaWxhYmxlX3N1YnByb3RvY29sczogT3B0
aW9uYWxbU2VxdWVuY2VbU3VicHJvdG9jb2xdXQorICAgICkgLT4gT3B0aW9uYWxbU3VicHJvdG9j
b2xdOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIHRoZSBTZWMtV2ViU29ja2V0LVByb3Rv
Y29sIEhUVFAgcmVxdWVzdCBoZWFkZXIuCisKKyAgICAgICAgUmV0dXJuIFNlYy1XZWJTb2NrZXQt
UHJvdG9jb2wgSFRUUCByZXNwb25zZSBoZWFkZXIsIHdoaWNoIGlzIHRoZSBzYW1lCisgICAgICAg
IGFzIHRoZSBzZWxlY3RlZCBzdWJwcm90b2NvbC4KKworICAgICAgICA6cGFyYW0gaGVhZGVyczog
cmVxdWVzdCBoZWFkZXJzCisgICAgICAgIDpwYXJhbSBhdmFpbGFibGVfc3VicHJvdG9jb2xzOiBv
cHRpb25hbCBsaXN0IG9mIHN1cHBvcnRlZCBzdWJwcm90b2NvbHMKKyAgICAgICAgOnJhaXNlcyB+
d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIYW5kc2hha2U6IHRvIGFib3J0IHRoZQorICAg
ICAgICAgICAgaGFuZHNoYWtlIHdpdGggYW4gSFRUUCA0MDAgZXJyb3IgY29kZQorCisgICAgICAg
ICIiIgorICAgICAgICBzdWJwcm90b2NvbDogT3B0aW9uYWxbU3VicHJvdG9jb2xdID0gTm9uZQor
CisgICAgICAgIGhlYWRlcl92YWx1ZXMgPSBoZWFkZXJzLmdldF9hbGwoIlNlYy1XZWJTb2NrZXQt
UHJvdG9jb2wiKQorCisgICAgICAgIGlmIGhlYWRlcl92YWx1ZXMgYW5kIGF2YWlsYWJsZV9zdWJw
cm90b2NvbHM6CisKKyAgICAgICAgICAgIHBhcnNlZF9oZWFkZXJfdmFsdWVzOiBMaXN0W1N1YnBy
b3RvY29sXSA9IHN1bSgKKyAgICAgICAgICAgICAgICBbcGFyc2Vfc3VicHJvdG9jb2woaGVhZGVy
X3ZhbHVlKSBmb3IgaGVhZGVyX3ZhbHVlIGluIGhlYWRlcl92YWx1ZXNdLCBbXQorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICBzdWJwcm90b2NvbCA9IHNlbGYuc2VsZWN0X3N1YnByb3RvY29s
KAorICAgICAgICAgICAgICAgIHBhcnNlZF9oZWFkZXJfdmFsdWVzLCBhdmFpbGFibGVfc3VicHJv
dG9jb2xzCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIHN1YnByb3RvY29sCisKKyAg
ICBkZWYgc2VsZWN0X3N1YnByb3RvY29sKAorICAgICAgICBzZWxmLAorICAgICAgICBjbGllbnRf
c3VicHJvdG9jb2xzOiBTZXF1ZW5jZVtTdWJwcm90b2NvbF0sCisgICAgICAgIHNlcnZlcl9zdWJw
cm90b2NvbHM6IFNlcXVlbmNlW1N1YnByb3RvY29sXSwKKyAgICApIC0+IE9wdGlvbmFsW1N1YnBy
b3RvY29sXToKKyAgICAgICAgIiIiCisgICAgICAgIFBpY2sgYSBzdWJwcm90b2NvbCBhbW9uZyB0
aG9zZSBvZmZlcmVkIGJ5IHRoZSBjbGllbnQuCisKKyAgICAgICAgSWYgc2V2ZXJhbCBzdWJwcm90
b2NvbHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLAorICAgICAg
ICB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBzZWxlY3RzIHRoZSBwcmVmZXJyZWQgc3VicHJv
dG9jb2xzIGJ5CisgICAgICAgIGdpdmluZyBlcXVhbCB2YWx1ZSB0byB0aGUgcHJpb3JpdGllcyBv
ZiB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLgorCisgICAgICAgIElmIG5vIHN1YnByb3RvY29s
IGlzIHN1cHBvcnRlZCBieSB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLCBpdAorICAgICAgICBw
cm9jZWVkcyB3aXRob3V0IGEgc3VicHJvdG9jb2wuCisKKyAgICAgICAgVGhpcyBpcyB1bmxpa2Vs
eSB0byBiZSB0aGUgbW9zdCB1c2VmdWwgaW1wbGVtZW50YXRpb24gaW4gcHJhY3RpY2UsIGFzCisg
ICAgICAgIG1hbnkgc2VydmVycyBwcm92aWRpbmcgYSBzdWJwcm90b2NvbCB3aWxsIHJlcXVpcmUg
dGhhdCB0aGUgY2xpZW50IHVzZXMKKyAgICAgICAgdGhhdCBzdWJwcm90b2NvbC4gU3VjaCBydWxl
cyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gYSBzdWJjbGFzcy4KKworICAgICAgICBJbnN0ZWFkIG9m
IHN1YmNsYXNzaW5nLCBpdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBieQor
ICAgICAgICBwYXNzaW5nIGEgYGBzZWxlY3Rfc3VicHJvdG9jb2xgYCBhcmd1bWVudCB0byB0aGUg
OmZ1bmM6YHNlcnZlYAorICAgICAgICBmdW5jdGlvbiBvciB0aGUgOmNsYXNzOmBXZWJTb2NrZXRT
ZXJ2ZXJQcm90b2NvbGAgY29uc3RydWN0b3IKKworICAgICAgICA6cGFyYW0gY2xpZW50X3N1YnBy
b3RvY29sczogbGlzdCBvZiBzdWJwcm90b2NvbHMgb2ZmZXJlZCBieSB0aGUgY2xpZW50CisgICAg
ICAgIDpwYXJhbSBzZXJ2ZXJfc3VicHJvdG9jb2xzOiBsaXN0IG9mIHN1YnByb3RvY29scyBhdmFp
bGFibGUgb24gdGhlIHNlcnZlcgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9zZWxl
Y3Rfc3VicHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2Vs
ZWN0X3N1YnByb3RvY29sKGNsaWVudF9zdWJwcm90b2NvbHMsIHNlcnZlcl9zdWJwcm90b2NvbHMp
CisKKyAgICAgICAgc3VicHJvdG9jb2xzID0gc2V0KGNsaWVudF9zdWJwcm90b2NvbHMpICYgc2V0
KHNlcnZlcl9zdWJwcm90b2NvbHMpCisgICAgICAgIGlmIG5vdCBzdWJwcm90b2NvbHM6CisgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBwcmlvcml0eSA9IGxhbWJkYSBwOiAoCisgICAg
ICAgICAgICBjbGllbnRfc3VicHJvdG9jb2xzLmluZGV4KHApICsgc2VydmVyX3N1YnByb3RvY29s
cy5pbmRleChwKQorICAgICAgICApCisgICAgICAgIHJldHVybiBzb3J0ZWQoc3VicHJvdG9jb2xz
LCBrZXk9cHJpb3JpdHkpWzBdCisKKyAgICBhc3luYyBkZWYgaGFuZHNoYWtlKAorICAgICAgICBz
ZWxmLAorICAgICAgICBvcmlnaW5zOiBPcHRpb25hbFtTZXF1ZW5jZVtPcHRpb25hbFtPcmlnaW5d
XV0gPSBOb25lLAorICAgICAgICBhdmFpbGFibGVfZXh0ZW5zaW9uczogT3B0aW9uYWxbU2VxdWVu
Y2VbU2VydmVyRXh0ZW5zaW9uRmFjdG9yeV1dID0gTm9uZSwKKyAgICAgICAgYXZhaWxhYmxlX3N1
YnByb3RvY29sczogT3B0aW9uYWxbU2VxdWVuY2VbU3VicHJvdG9jb2xdXSA9IE5vbmUsCisgICAg
ICAgIGV4dHJhX2hlYWRlcnM6IE9wdGlvbmFsW0hlYWRlcnNMaWtlT3JDYWxsYWJsZV0gPSBOb25l
LAorICAgICkgLT4gc3RyOgorICAgICAgICAiIiIKKyAgICAgICAgUGVyZm9ybSB0aGUgc2VydmVy
IHNpZGUgb2YgdGhlIG9wZW5pbmcgaGFuZHNoYWtlLgorCisgICAgICAgIFJldHVybiB0aGUgcGF0
aCBvZiB0aGUgVVJJIG9mIHRoZSByZXF1ZXN0LgorCisgICAgICAgIDpwYXJhbSBvcmlnaW5zOiBs
aXN0IG9mIGFjY2VwdGFibGUgdmFsdWVzIG9mIHRoZSBPcmlnaW4gSFRUUCBoZWFkZXI7CisgICAg
ICAgICAgICBpbmNsdWRlIGBgTm9uZWBgIGlmIHRoZSBsYWNrIG9mIGFuIG9yaWdpbiBpcyBhY2Nl
cHRhYmxlCisgICAgICAgIDpwYXJhbSBhdmFpbGFibGVfZXh0ZW5zaW9uczogbGlzdCBvZiBzdXBw
b3J0ZWQgZXh0ZW5zaW9ucyBpbiB0aGUgb3JkZXIKKyAgICAgICAgICAgIGluIHdoaWNoIHRoZXkg
c2hvdWxkIGJlIHVzZWQKKyAgICAgICAgOnBhcmFtIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM6IGxp
c3Qgb2Ygc3VwcG9ydGVkIHN1YnByb3RvY29scyBpbiBvcmRlcgorICAgICAgICAgICAgb2YgZGVj
cmVhc2luZyBwcmVmZXJlbmNlCisgICAgICAgIDpwYXJhbSBleHRyYV9oZWFkZXJzOiBzZXRzIGFk
ZGl0aW9uYWwgSFRUUCByZXNwb25zZSBoZWFkZXJzIHdoZW4gdGhlCisgICAgICAgICAgICBoYW5k
c2hha2Ugc3VjY2VlZHM7IGl0IGNhbiBiZSBhIDpjbGFzczpgfndlYnNvY2tldHMuaHR0cC5IZWFk
ZXJzYAorICAgICAgICAgICAgaW5zdGFuY2UsIGEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1h
cHBpbmdgLCBhbiBpdGVyYWJsZSBvZgorICAgICAgICAgICAgYGAobmFtZSwgdmFsdWUpYGAgcGFp
cnMsIG9yIGEgY2FsbGFibGUgdGFraW5nIHRoZSByZXF1ZXN0IHBhdGggYW5kCisgICAgICAgICAg
ICBoZWFkZXJzIGluIGFyZ3VtZW50cyBhbmQgcmV0dXJuaW5nIG9uZSBvZiB0aGUgYWJvdmUuCisg
ICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkSGFuZHNoYWtlOiBp
ZiB0aGUgaGFuZHNoYWtlCisgICAgICAgICAgICBmYWlscworCisgICAgICAgICIiIgorICAgICAg
ICBwYXRoLCByZXF1ZXN0X2hlYWRlcnMgPSBhd2FpdCBzZWxmLnJlYWRfaHR0cF9yZXF1ZXN0KCkK
KworICAgICAgICAjIEhvb2sgZm9yIGN1c3RvbWl6aW5nIHJlcXVlc3QgaGFuZGxpbmcsIGZvciBl
eGFtcGxlIGNoZWNraW5nCisgICAgICAgICMgYXV0aGVudGljYXRpb24gb3IgdHJlYXRpbmcgc29t
ZSBwYXRocyBhcyBwbGFpbiBIVFRQIGVuZHBvaW50cy4KKyAgICAgICAgZWFybHlfcmVzcG9uc2Vf
YXdhaXRhYmxlID0gc2VsZi5wcm9jZXNzX3JlcXVlc3QocGF0aCwgcmVxdWVzdF9oZWFkZXJzKQor
ICAgICAgICBpZiBpc2luc3RhbmNlKGVhcmx5X3Jlc3BvbnNlX2F3YWl0YWJsZSwgQXdhaXRhYmxl
KToKKyAgICAgICAgICAgIGVhcmx5X3Jlc3BvbnNlID0gYXdhaXQgZWFybHlfcmVzcG9uc2VfYXdh
aXRhYmxlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSB3aXRoIDcuMC4KKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImRlY2xhcmUgcHJv
Y2Vzc19yZXF1ZXN0IGFzIGEgY29yb3V0aW5lIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAg
ICAgICAgZWFybHlfcmVzcG9uc2UgPSBlYXJseV9yZXNwb25zZV9hd2FpdGFibGUgICMgdHlwZTog
aWdub3JlCisKKyAgICAgICAgIyBDaGFuZ2UgdGhlIHJlc3BvbnNlIHRvIGEgNTAzIGVycm9yIGlm
IHRoZSBzZXJ2ZXIgaXMgc2h1dHRpbmcgZG93bi4KKyAgICAgICAgaWYgbm90IHNlbGYud3Nfc2Vy
dmVyLmlzX3NlcnZpbmcoKToKKyAgICAgICAgICAgIGVhcmx5X3Jlc3BvbnNlID0gKAorICAgICAg
ICAgICAgICAgIGh0dHAuSFRUUFN0YXR1cy5TRVJWSUNFX1VOQVZBSUxBQkxFLAorICAgICAgICAg
ICAgICAgIFtdLAorICAgICAgICAgICAgICAgIGIiU2VydmVyIGlzIHNodXR0aW5nIGRvd24uXG4i
LAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGVhcmx5X3Jlc3BvbnNlIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcmFpc2UgQWJvcnRIYW5kc2hha2UoKmVhcmx5X3Jlc3BvbnNlKQorCisg
ICAgICAgIGtleSA9IGNoZWNrX3JlcXVlc3QocmVxdWVzdF9oZWFkZXJzKQorCisgICAgICAgIHNl
bGYub3JpZ2luID0gc2VsZi5wcm9jZXNzX29yaWdpbihyZXF1ZXN0X2hlYWRlcnMsIG9yaWdpbnMp
CisKKyAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIsIHNlbGYuZXh0ZW5zaW9ucyA9IHNlbGYucHJv
Y2Vzc19leHRlbnNpb25zKAorICAgICAgICAgICAgcmVxdWVzdF9oZWFkZXJzLCBhdmFpbGFibGVf
ZXh0ZW5zaW9ucworICAgICAgICApCisKKyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5z
dWJwcm90b2NvbCA9IHNlbGYucHJvY2Vzc19zdWJwcm90b2NvbCgKKyAgICAgICAgICAgIHJlcXVl
c3RfaGVhZGVycywgYXZhaWxhYmxlX3N1YnByb3RvY29scworICAgICAgICApCisKKyAgICAgICAg
cmVzcG9uc2VfaGVhZGVycyA9IEhlYWRlcnMoKQorCisgICAgICAgIGJ1aWxkX3Jlc3BvbnNlKHJl
c3BvbnNlX2hlYWRlcnMsIGtleSkKKworICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRlcnNbIlNlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9ucyJdID0gZXh0ZW5zaW9uc19oZWFkZXIKKworICAgICAgICBpZiBwcm90b2NvbF9oZWFk
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25zZV9oZWFkZXJzWyJTZWMtV2ViU29j
a2V0LVByb3RvY29sIl0gPSBwcm90b2NvbF9oZWFkZXIKKworICAgICAgICBpZiBjYWxsYWJsZShl
eHRyYV9oZWFkZXJzKToKKyAgICAgICAgICAgIGV4dHJhX2hlYWRlcnMgPSBleHRyYV9oZWFkZXJz
KHBhdGgsIHNlbGYucmVxdWVzdF9oZWFkZXJzKQorICAgICAgICBpZiBleHRyYV9oZWFkZXJzIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleHRyYV9oZWFkZXJzLCBIZWFk
ZXJzKToKKyAgICAgICAgICAgICAgICBleHRyYV9oZWFkZXJzID0gZXh0cmFfaGVhZGVycy5yYXdf
aXRlbXMoKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV4dHJhX2hlYWRlcnMsIGNvbGxl
Y3Rpb25zLmFiYy5NYXBwaW5nKToKKyAgICAgICAgICAgICAgICBleHRyYV9oZWFkZXJzID0gZXh0
cmFfaGVhZGVycy5pdGVtcygpCisgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZXh0cmFf
aGVhZGVyczoKKyAgICAgICAgICAgICAgICByZXNwb25zZV9oZWFkZXJzW25hbWVdID0gdmFsdWUK
KworICAgICAgICByZXNwb25zZV9oZWFkZXJzLnNldGRlZmF1bHQoIkRhdGUiLCBlbWFpbC51dGls
cy5mb3JtYXRkYXRlKHVzZWdtdD1UcnVlKSkKKyAgICAgICAgcmVzcG9uc2VfaGVhZGVycy5zZXRk
ZWZhdWx0KCJTZXJ2ZXIiLCBVU0VSX0FHRU5UKQorCisgICAgICAgIHNlbGYud3JpdGVfaHR0cF9y
ZXNwb25zZShodHRwLkhUVFBTdGF0dXMuU1dJVENISU5HX1BST1RPQ09MUywgcmVzcG9uc2VfaGVh
ZGVycykKKworICAgICAgICBzZWxmLmNvbm5lY3Rpb25fb3BlbigpCisKKyAgICAgICAgcmV0dXJu
IHBhdGgKKworCitjbGFzcyBXZWJTb2NrZXRTZXJ2ZXI6CisgICAgIiIiCisgICAgV2ViU29ja2V0
IHNlcnZlciByZXR1cm5lZCBieSA6ZnVuYzpgfndlYnNvY2tldHMuc2VydmVyLnNlcnZlYC4KKwor
ICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzCisgICAgOmNsYXNz
OmB+YXN5bmNpby5BYnN0cmFjdFNlcnZlcmAsIG5hbWVseSB0aGUKKyAgICA6bWV0aDpgfmFzeW5j
aW8uQWJzdHJhY3RTZXJ2ZXIuY2xvc2VgIGFuZAorICAgIDptZXRoOmB+YXN5bmNpby5BYnN0cmFj
dFNlcnZlci53YWl0X2Nsb3NlZGAgbWV0aG9kcy4KKworICAgIEl0IGtlZXBzIHRyYWNrIG9mIFdl
YlNvY2tldCBjb25uZWN0aW9ucyBpbiBvcmRlciB0byBjbG9zZSB0aGVtIHByb3Blcmx5CisgICAg
d2hlbiBzaHV0dGluZyBkb3duLgorCisgICAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc3RvcmUg
YSByZWZlcmVuY2UgdG8gdGhlIDpjbGFzczpgfmFzeW5jaW8uU2VydmVyYAorICAgIG9iamVjdCBy
ZXR1cm5lZCBieSA6bWV0aDpgfmFzeW5jaW8ubG9vcC5jcmVhdGVfc2VydmVyYCByYXRoZXIgdGhh
biBpbmhlcml0CisgICAgZnJvbSA6Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAgaW4gcGFydCBiZWNh
dXNlCisgICAgOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX3NlcnZlcmAgZG9lc24ndCBzdXBw
b3J0IHBhc3NpbmcgYSBjdXN0b20KKyAgICA6Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAgY2xhc3Mu
CisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb29wOiBhc3luY2lvLkFic3Ry
YWN0RXZlbnRMb29wKSAtPiBOb25lOgorICAgICAgICAjIFN0b3JlIGEgcmVmZXJlbmNlIHRvIGxv
b3AgdG8gYXZvaWQgcmVseWluZyBvbiBzZWxmLnNlcnZlci5fbG9vcC4KKyAgICAgICAgc2VsZi5s
b29wID0gbG9vcAorCisgICAgICAgICMgS2VlcCB0cmFjayBvZiBhY3RpdmUgY29ubmVjdGlvbnMu
CisgICAgICAgIHNlbGYud2Vic29ja2V0czogU2V0W1dlYlNvY2tldFNlcnZlclByb3RvY29sXSA9
IHNldCgpCisKKyAgICAgICAgIyBUYXNrIHJlc3BvbnNpYmxlIGZvciBjbG9zaW5nIHRoZSBzZXJ2
ZXIgYW5kIHRlcm1pbmF0aW5nIGNvbm5lY3Rpb25zLgorICAgICAgICBzZWxmLmNsb3NlX3Rhc2s6
IE9wdGlvbmFsW2FzeW5jaW8uVGFza1tOb25lXV0gPSBOb25lCisKKyAgICAgICAgIyBDb21wbGV0
ZWQgd2hlbiB0aGUgc2VydmVyIGlzIGNsb3NlZCBhbmQgY29ubmVjdGlvbnMgYXJlIHRlcm1pbmF0
ZWQuCisgICAgICAgIHNlbGYuY2xvc2VkX3dhaXRlcjogYXN5bmNpby5GdXR1cmVbTm9uZV0gPSBs
b29wLmNyZWF0ZV9mdXR1cmUoKQorCisgICAgZGVmIHdyYXAoc2VsZiwgc2VydmVyOiBhc3luY2lv
LkFic3RyYWN0U2VydmVyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQXR0YWNoIHRv
IGEgZ2l2ZW4gOmNsYXNzOmB+YXN5bmNpby5TZXJ2ZXJgLgorCisgICAgICAgIFNpbmNlIDptZXRo
OmB+YXN5bmNpby5sb29wLmNyZWF0ZV9zZXJ2ZXJgIGRvZXNuJ3Qgc3VwcG9ydCBpbmplY3Rpbmcg
YQorICAgICAgICBjdXN0b20gYGBTZXJ2ZXJgYCBjbGFzcywgdGhlIGVhc2llc3Qgc29sdXRpb24g
dGhhdCBkb2Vzbid0IHJlbHkgb24KKyAgICAgICAgcHJpdmF0ZSA6bW9kOmBhc3luY2lvYCBBUElz
IGlzIHRvOgorCisgICAgICAgIC0gaW5zdGFudGlhdGUgYSA6Y2xhc3M6YFdlYlNvY2tldFNlcnZl
cmAKKyAgICAgICAgLSBnaXZlIHRoZSBwcm90b2NvbCBmYWN0b3J5IGEgcmVmZXJlbmNlIHRvIHRo
YXQgaW5zdGFuY2UKKyAgICAgICAgLSBjYWxsIDptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV9z
ZXJ2ZXJgIHdpdGggdGhlIGZhY3RvcnkKKyAgICAgICAgLSBhdHRhY2ggdGhlIHJlc3VsdGluZyA6
Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAgd2l0aCB0aGlzIG1ldGhvZAorCisgICAgICAgICIiIgor
ICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgorCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIHBy
b3RvY29sOiBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisg
ICAgICAgIFJlZ2lzdGVyIGEgY29ubmVjdGlvbiB3aXRoIHRoaXMgc2VydmVyLgorCisgICAgICAg
ICIiIgorICAgICAgICBzZWxmLndlYnNvY2tldHMuYWRkKHByb3RvY29sKQorCisgICAgZGVmIHVu
cmVnaXN0ZXIoc2VsZiwgcHJvdG9jb2w6IFdlYlNvY2tldFNlcnZlclByb3RvY29sKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgVW5yZWdpc3RlciBhIGNvbm5lY3Rpb24gd2l0aCB0aGlz
IHNlcnZlci4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi53ZWJzb2NrZXRzLnJlbW92ZShw
cm90b2NvbCkKKworICAgIGRlZiBpc19zZXJ2aW5nKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IgorICAgICAgICBUZWxsIHdoZXRoZXIgdGhlIHNlcnZlciBpcyBhY2NlcHRpbmcgbmV3IGNvbm5l
Y3Rpb25zIG9yIHNodXR0aW5nIGRvd24uCisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgUHl0aG9uIOKJpSAzLjcKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNlcnZl
ci5pc19zZXJ2aW5nKCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBwcmFnbWE6
IG5vIGNvdmVyCisgICAgICAgICAgICAjIFB5dGhvbiA8IDMuNworICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc2VydmVyLnNvY2tldHMgaXMgbm90IE5vbmUKKworICAgIGRlZiBjbG9zZShzZWxmKSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2xvc2UgdGhlIHNlcnZlci4KKworICAgICAg
ICBUaGlzIG1ldGhvZDoKKworICAgICAgICAqIGNsb3NlcyB0aGUgdW5kZXJseWluZyA6Y2xhc3M6
YH5hc3luY2lvLlNlcnZlcmA7CisgICAgICAgICogcmVqZWN0cyBuZXcgV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIHdpdGggYW4gSFRUUCA1MDMgKHNlcnZpY2UKKyAgICAgICAgICB1bmF2YWlsYWJsZSkg
ZXJyb3I7IHRoaXMgaGFwcGVucyB3aGVuIHRoZSBzZXJ2ZXIgYWNjZXB0ZWQgdGhlIFRDUAorICAg
ICAgICAgIGNvbm5lY3Rpb24gYnV0IGRpZG4ndCBjb21wbGV0ZSB0aGUgV2ViU29ja2V0IG9wZW5p
bmcgaGFuZHNoYWtlIHByaW9yCisgICAgICAgICAgdG8gY2xvc2luZzsKKyAgICAgICAgKiBjbG9z
ZXMgb3BlbiBXZWJTb2NrZXQgY29ubmVjdGlvbnMgd2l0aCBjbG9zZSBjb2RlIDEwMDEgKGdvaW5n
IGF3YXkpLgorCisgICAgICAgIDptZXRoOmBjbG9zZWAgaXMgaWRlbXBvdGVudC4KKworICAgICAg
ICAiIiIKKyAgICAgICAgaWYgc2VsZi5jbG9zZV90YXNrIGlzIE5vbmU6CisgICAgICAgICAgICBz
ZWxmLmNsb3NlX3Rhc2sgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2soc2VsZi5fY2xvc2UoKSkKKwor
ICAgIGFzeW5jIGRlZiBfY2xvc2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IEltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBjbG9zZWAuCisKKyAgICAgICAgVGhpcyBjYWxscyA6
bWV0aDpgfmFzeW5jaW8uU2VydmVyLmNsb3NlYCBvbiB0aGUgdW5kZXJseWluZworICAgICAgICA6
Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAgb2JqZWN0IHRvIHN0b3AgYWNjZXB0aW5nIG5ldyBjb25u
ZWN0aW9ucyBhbmQKKyAgICAgICAgdGhlbiBjbG9zZXMgb3BlbiBjb25uZWN0aW9ucyB3aXRoIGNs
b3NlIGNvZGUgMTAwMS4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBTdG9wIGFjY2VwdGluZyBu
ZXcgY29ubmVjdGlvbnMuCisgICAgICAgIHNlbGYuc2VydmVyLmNsb3NlKCkKKworICAgICAgICAj
IFdhaXQgdW50aWwgc2VsZi5zZXJ2ZXIuY2xvc2UoKSBjb21wbGV0ZXMuCisgICAgICAgIGF3YWl0
IHNlbGYuc2VydmVyLndhaXRfY2xvc2VkKCkKKworICAgICAgICAjIFdhaXQgdW50aWwgYWxsIGFj
Y2VwdGVkIGNvbm5lY3Rpb25zIHJlYWNoIGNvbm5lY3Rpb25fbWFkZSgpIGFuZCBjYWxsCisgICAg
ICAgICMgcmVnaXN0ZXIoKS4gU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ4NTIg
Zm9yIGRldGFpbHMuCisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoCisgICAgICAgICAgICAw
LCBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5v
bmUKKyAgICAgICAgKQorCisgICAgICAgICMgQ2xvc2UgT1BFTiBjb25uZWN0aW9ucyB3aXRoIHN0
YXR1cyBjb2RlIDEwMDEuIFNpbmNlIHRoZSBzZXJ2ZXIgd2FzCisgICAgICAgICMgY2xvc2VkLCBo
YW5kc2hha2UoKSBjbG9zZXMgT1BFTklORyBjb25lY3Rpb25zIHdpdGggYSBIVFRQIDUwMyBlcnJv
ci4KKyAgICAgICAgIyBXYWl0IHVudGlsIGFsbCBjb25uZWN0aW9ucyBhcmUgY2xvc2VkLgorCisg
ICAgICAgICMgYXN5bmNpby53YWl0IGRvZXNuJ3QgYWNjZXB0IGFuIGVtcHR5IGZpcnN0IGFyZ3Vt
ZW50CisgICAgICAgIGlmIHNlbGYud2Vic29ja2V0czoKKyAgICAgICAgICAgIGF3YWl0IGFzeW5j
aW8ud2FpdCgKKyAgICAgICAgICAgICAgICBbd2Vic29ja2V0LmNsb3NlKDEwMDEpIGZvciB3ZWJz
b2NrZXQgaW4gc2VsZi53ZWJzb2NrZXRzXSwKKyAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9v
cCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUsCisgICAgICAgICAg
ICApCisKKyAgICAgICAgIyBXYWl0IHVudGlsIGFsbCBjb25uZWN0aW9uIGhhbmRsZXJzIGFyZSBj
b21wbGV0ZS4KKworICAgICAgICAjIGFzeW5jaW8ud2FpdCBkb2Vzbid0IGFjY2VwdCBhbiBlbXB0
eSBmaXJzdCBhcmd1bWVudC4KKyAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXRzOgorICAgICAgICAg
ICAgYXdhaXQgYXN5bmNpby53YWl0KAorICAgICAgICAgICAgICAgIFt3ZWJzb2NrZXQuaGFuZGxl
cl90YXNrIGZvciB3ZWJzb2NrZXQgaW4gc2VsZi53ZWJzb2NrZXRzXSwKKyAgICAgICAgICAgICAg
ICBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5v
bmUsCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBUZWxsIHdhaXRfY2xvc2VkKCkgdG8gcmV0
dXJuLgorICAgICAgICBzZWxmLmNsb3NlZF93YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorCisgICAg
YXN5bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAg
ICBXYWl0IHVudGlsIHRoZSBzZXJ2ZXIgaXMgY2xvc2VkLgorCisgICAgICAgIFdoZW4gOm1ldGg6
YHdhaXRfY2xvc2VkYCByZXR1cm5zLCBhbGwgVENQIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQgYW5k
CisgICAgICAgIGFsbCBjb25uZWN0aW9uIGhhbmRsZXJzIGhhdmUgcmV0dXJuZWQuCisKKyAgICAg
ICAgIiIiCisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHNlbGYuY2xvc2VkX3dhaXRlcikK
KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzb2NrZXRzKHNlbGYpIC0+IE9wdGlvbmFsW0xpc3Rb
c29ja2V0LnNvY2tldF1dOgorICAgICAgICAiIiIKKyAgICAgICAgTGlzdCBvZiA6Y2xhc3M6YH5z
b2NrZXQuc29ja2V0YCBvYmplY3RzIHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIHRvLgorCisgICAg
ICAgIGBgTm9uZWBgIGlmIHRoZSBzZXJ2ZXIgaXMgY2xvc2VkLgorCisgICAgICAgICIiIgorICAg
ICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuc29ja2V0cworCisKK2NsYXNzIFNlcnZlOgorICAgICIi
IgorCisgICAgQ3JlYXRlLCBzdGFydCwgYW5kIHJldHVybiBhIFdlYlNvY2tldCBzZXJ2ZXIgb24g
YGBob3N0YGAgYW5kIGBgcG9ydGBgLgorCisgICAgV2hlbmV2ZXIgYSBjbGllbnQgY29ubmVjdHMs
IHRoZSBzZXJ2ZXIgYWNjZXB0cyB0aGUgY29ubmVjdGlvbiwgY3JlYXRlcyBhCisgICAgOmNsYXNz
OmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAsIHBlcmZvcm1zIHRoZSBvcGVuaW5nIGhhbmRzaGFr
ZSwgYW5kCisgICAgZGVsZWdhdGVzIHRvIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgZGVmaW5lZCBi
eSBgYHdzX2hhbmRsZXJgYC4gT25jZSB0aGUKKyAgICBoYW5kbGVyIGNvbXBsZXRlcywgZWl0aGVy
IG5vcm1hbGx5IG9yIHdpdGggYW4gZXhjZXB0aW9uLCB0aGUgc2VydmVyCisgICAgcGVyZm9ybXMg
dGhlIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICBB
d2FpdGluZyA6ZnVuYzpgc2VydmVgIHlpZWxkcyBhIDpjbGFzczpgV2ViU29ja2V0U2VydmVyYC4g
VGhpcyBpbnN0YW5jZQorICAgIHByb3ZpZGVzIDptZXRoOmB+d2Vic29ja2V0cy5zZXJ2ZXIuV2Vi
U29ja2V0U2VydmVyLmNsb3NlYCBhbmQKKyAgICA6bWV0aDpgfndlYnNvY2tldHMuc2VydmVyLldl
YlNvY2tldFNlcnZlci53YWl0X2Nsb3NlZGAgbWV0aG9kcyBmb3IKKyAgICB0ZXJtaW5hdGluZyB0
aGUgc2VydmVyIGFuZCBjbGVhbmluZyB1cCBpdHMgcmVzb3VyY2VzLgorCisgICAgV2hlbiBhIHNl
cnZlciBpcyBjbG9zZWQgd2l0aCA6bWV0aDpgfldlYlNvY2tldFNlcnZlci5jbG9zZWAsIGl0IGNs
b3NlcyBhbGwKKyAgICBjb25uZWN0aW9ucyB3aXRoIGNsb3NlIGNvZGUgMTAwMSAoZ29pbmcgYXdh
eSkuIENvbm5lY3Rpb25zIGhhbmRsZXJzLCB3aGljaAorICAgIGFyZSBydW5uaW5nIHRoZSBgYHdz
X2hhbmRsZXJgYCBjb3JvdXRpbmUsIHdpbGwgcmVjZWl2ZSBhCisgICAgOmV4YzpgfndlYnNvY2tl
dHMuZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkT0tgIGV4Y2VwdGlvbiBvbiB0aGVpcgorICAg
IGN1cnJlbnQgb3IgbmV4dCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlv
bi4KKworICAgIDpmdW5jOmBzZXJ2ZWAgY2FuIGFsc28gYmUgdXNlZCBhcyBhbiBhc3luY2hyb25v
dXMgY29udGV4dCBtYW5hZ2VyLiBJbgorICAgIHRoaXMgY2FzZSwgdGhlIHNlcnZlciBpcyBzaHV0
IGRvd24gd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0LgorCisgICAgOmZ1bmM6YHNlcnZlYCBpcyBh
IHdyYXBwZXIgYXJvdW5kIHRoZSBldmVudCBsb29wJ3MKKyAgICA6bWV0aDpgfmFzeW5jaW8ubG9v
cC5jcmVhdGVfc2VydmVyYCBtZXRob2QuIEl0IGNyZWF0ZXMgYW5kIHN0YXJ0cyBhCisgICAgOmNs
YXNzOmB+YXN5bmNpby5TZXJ2ZXJgIHdpdGggOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX3Nl
cnZlcmAuIFRoZW4gaXQKKyAgICB3cmFwcyB0aGUgOmNsYXNzOmB+YXN5bmNpby5TZXJ2ZXJgIGlu
IGEgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJgICBhbmQKKyAgICByZXR1cm5zIHRoZSA6Y2xhc3M6
YFdlYlNvY2tldFNlcnZlcmAuCisKKyAgICBUaGUgYGB3c19oYW5kbGVyYGAgYXJndW1lbnQgaXMg
dGhlIFdlYlNvY2tldCBoYW5kbGVyLiBJdCBtdXN0IGJlIGEKKyAgICBjb3JvdXRpbmUgYWNjZXB0
aW5nIHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgYW5k
CisgICAgdGhlIHJlcXVlc3QgVVJJLgorCisgICAgVGhlIGBgaG9zdGBgIGFuZCBgYHBvcnRgYCBh
cmd1bWVudHMsIGFzIHdlbGwgYXMgdW5yZWNvZ25pemVkIGtleXdvcmQKKyAgICBhcmd1bWVudHMs
IGFyZSBwYXNzZWQgYWxvbmcgdG8gOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX3NlcnZlcmAu
CisKKyAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBzZXQgdGhlIGBgc3NsYGAga2V5d29yZCBhcmd1
bWVudCB0byBhCisgICAgOmNsYXNzOmB+c3NsLlNTTENvbnRleHRgIHRvIGVuYWJsZSBUTFMuCisK
KyAgICBUaGUgYGBjcmVhdGVfcHJvdG9jb2xgYCBwYXJhbWV0ZXIgYWxsb3dzIGN1c3RvbWl6aW5n
IHRoZQorICAgIDpjbGFzczpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQgbWFuYWdlcyB0aGUgY29u
bmVjdGlvbi4gSXQgc2hvdWxkIGJlIGEKKyAgICBjYWxsYWJsZSBvciBjbGFzcyBhY2NlcHRpbmcg
dGhlIHNhbWUgYXJndW1lbnRzIGFzCisgICAgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2Nv
bGAgYW5kIHJldHVybmluZyBhbiBpbnN0YW5jZSBvZgorICAgIDpjbGFzczpgV2ViU29ja2V0U2Vy
dmVyUHJvdG9jb2xgIG9yIGEgc3ViY2xhc3MuIEl0IGRlZmF1bHRzIHRvCisgICAgOmNsYXNzOmBX
ZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAuCisKKyAgICBUaGUgYmVoYXZpb3Igb2YgYGBwaW5nX2lu
dGVydmFsYGAsIGBgcGluZ190aW1lb3V0YGAsIGBgY2xvc2VfdGltZW91dGBgLAorICAgIGBgbWF4
X3NpemVgYCwgYGBtYXhfcXVldWVgYCwgYGByZWFkX2xpbWl0YGAsIGFuZCBgYHdyaXRlX2xpbWl0
YGAgaXMKKyAgICBkZXNjcmliZWQgaW4gOmNsYXNzOmB+d2Vic29ja2V0cy5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbGAuCisKKyAgICA6ZnVuYzpgc2VydmVgIGFsc28gYWNjZXB0cyB0
aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50czoKKworICAgICogYGBjb21wcmVzc2lvbmBg
IGlzIGEgc2hvcnRjdXQgdG8gY29uZmlndXJlIGNvbXByZXNzaW9uIGV4dGVuc2lvbnM7CisgICAg
ICBieSBkZWZhdWx0IGl0IGVuYWJsZXMgdGhlICJwZXJtZXNzYWdlLWRlZmxhdGUiIGV4dGVuc2lv
bjsgc2V0IGl0IHRvCisgICAgICBgYE5vbmVgYCB0byBkaXNhYmxlIGNvbXByZXNzaW9uCisgICAg
KiBgYG9yaWdpbnNgYCBkZWZpbmVzIGFjY2VwdGFibGUgT3JpZ2luIEhUVFAgaGVhZGVyczsgaW5j
bHVkZSBgYE5vbmVgYCBpZgorICAgICAgdGhlIGxhY2sgb2YgYW4gb3JpZ2luIGlzIGFjY2VwdGFi
bGUKKyAgICAqIGBgZXh0ZW5zaW9uc2BgIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZXh0ZW5zaW9u
cyBpbiBvcmRlciBvZgorICAgICAgZGVjcmVhc2luZyBwcmVmZXJlbmNlCisgICAgKiBgYHN1YnBy
b3RvY29sc2BgIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgc3VicHJvdG9jb2xzIGluIG9yZGVyIG9m
CisgICAgICBkZWNyZWFzaW5nIHByZWZlcmVuY2UKKyAgICAqIGBgZXh0cmFfaGVhZGVyc2BgIHNl
dHMgYWRkaXRpb25hbCBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgIHdoZW4gdGhlCisgICAgICBoYW5k
c2hha2Ugc3VjY2VlZHM7IGl0IGNhbiBiZSBhIDpjbGFzczpgfndlYnNvY2tldHMuaHR0cC5IZWFk
ZXJzYAorICAgICAgaW5zdGFuY2UsIGEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1hcHBpbmdg
LCBhbiBpdGVyYWJsZSBvZiBgYChuYW1lLAorICAgICAgdmFsdWUpYGAgcGFpcnMsIG9yIGEgY2Fs
bGFibGUgdGFraW5nIHRoZSByZXF1ZXN0IHBhdGggYW5kIGhlYWRlcnMgaW4KKyAgICAgIGFyZ3Vt
ZW50cyBhbmQgcmV0dXJuaW5nIG9uZSBvZiB0aGUgYWJvdmUKKyAgICAqIGBgcHJvY2Vzc19yZXF1
ZXN0YGAgYWxsb3dzIGludGVyY2VwdGluZyB0aGUgSFRUUCByZXF1ZXN0OyBpdCBtdXN0IGJlIGEK
KyAgICAgIGNvcm91dGluZSB0YWtpbmcgdGhlIHJlcXVlc3QgcGF0aCBhbmQgaGVhZGVycyBpbiBh
cmd1bWVudDsgc2VlCisgICAgICA6bWV0aDpgfldlYlNvY2tldFNlcnZlclByb3RvY29sLnByb2Nl
c3NfcmVxdWVzdGAgZm9yIGRldGFpbHMKKyAgICAqIGBgc2VsZWN0X3N1YnByb3RvY29sYGAgYWxs
b3dzIGN1c3RvbWl6aW5nIHRoZSBsb2dpYyBmb3Igc2VsZWN0aW5nIGEKKyAgICAgIHN1YnByb3Rv
Y29sOyBpdCBtdXN0IGJlIGEgY2FsbGFibGUgdGFraW5nIHRoZSBzdWJwcm90b2NvbHMgb2ZmZXJl
ZCBieQorICAgICAgdGhlIGNsaWVudCBhbmQgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIgaW4gYXJn
dW1lbnQ7IHNlZQorICAgICAgOm1ldGg6YH5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5zZWxlY3Rf
c3VicHJvdG9jb2xgIGZvciBkZXRhaWxzCisKKyAgICBTaW5jZSB0aGVyZSdzIG5vIHVzZWZ1bCB3
YXkgdG8gcHJvcGFnYXRlIGV4Y2VwdGlvbnMgdHJpZ2dlcmVkIGluIGhhbmRsZXJzLAorICAgIHRo
ZXkncmUgc2VudCB0byB0aGUgYGAnd2Vic29ja2V0cy5zZXJ2ZXInYGAgbG9nZ2VyIGluc3RlYWQu
IERlYnVnZ2luZyBpcworICAgIG11Y2ggZWFzaWVyIGlmIHlvdSBjb25maWd1cmUgbG9nZ2luZyB0
byBwcmludCB0aGVtOjoKKworICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICBsb2dnZXIg
PSBsb2dnaW5nLmdldExvZ2dlcignd2Vic29ja2V0cy5zZXJ2ZXInKQorICAgICAgICBsb2dnZXIu
c2V0TGV2ZWwobG9nZ2luZy5FUlJPUikKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkpCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgd3NfaGFuZGxlcjogQ2FsbGFibGVbW1dlYlNvY2tldFNlcnZlclBy
b3RvY29sLCBzdHJdLCBBd2FpdGFibGVbQW55XV0sCisgICAgICAgIGhvc3Q6IE9wdGlvbmFsW1Vu
aW9uW3N0ciwgU2VxdWVuY2Vbc3RyXV1dID0gTm9uZSwKKyAgICAgICAgcG9ydDogT3B0aW9uYWxb
aW50XSA9IE5vbmUsCisgICAgICAgICosCisgICAgICAgIHBhdGg6IE9wdGlvbmFsW3N0cl0gPSBO
b25lLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w6IE9wdGlvbmFsW1R5cGVbV2ViU29ja2V0U2Vy
dmVyUHJvdG9jb2xdXSA9IE5vbmUsCisgICAgICAgIHBpbmdfaW50ZXJ2YWw6IGZsb2F0ID0gMjAs
CisgICAgICAgIHBpbmdfdGltZW91dDogZmxvYXQgPSAyMCwKKyAgICAgICAgY2xvc2VfdGltZW91
dDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZSwKKyAgICAgICAgbWF4X3NpemU6IGludCA9IDIgKiog
MjAsCisgICAgICAgIG1heF9xdWV1ZTogaW50ID0gMiAqKiA1LAorICAgICAgICByZWFkX2xpbWl0
OiBpbnQgPSAyICoqIDE2LAorICAgICAgICB3cml0ZV9saW1pdDogaW50ID0gMiAqKiAxNiwKKyAg
ICAgICAgbG9vcDogT3B0aW9uYWxbYXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcF0gPSBOb25lLAor
ICAgICAgICBsZWdhY3lfcmVjdjogYm9vbCA9IEZhbHNlLAorICAgICAgICBrbGFzczogT3B0aW9u
YWxbVHlwZVtXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgdGltZW91
dDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZSwKKyAgICAgICAgY29tcHJlc3Npb246IE9wdGlvbmFs
W3N0cl0gPSAiZGVmbGF0ZSIsCisgICAgICAgIG9yaWdpbnM6IE9wdGlvbmFsW1NlcXVlbmNlW09w
dGlvbmFsW09yaWdpbl1dXSA9IE5vbmUsCisgICAgICAgIGV4dGVuc2lvbnM6IE9wdGlvbmFsW1Nl
cXVlbmNlW1NlcnZlckV4dGVuc2lvbkZhY3RvcnldXSA9IE5vbmUsCisgICAgICAgIHN1YnByb3Rv
Y29sczogT3B0aW9uYWxbU2VxdWVuY2VbU3VicHJvdG9jb2xdXSA9IE5vbmUsCisgICAgICAgIGV4
dHJhX2hlYWRlcnM6IE9wdGlvbmFsW0hlYWRlcnNMaWtlT3JDYWxsYWJsZV0gPSBOb25lLAorICAg
ICAgICBwcm9jZXNzX3JlcXVlc3Q6IE9wdGlvbmFsWworICAgICAgICAgICAgQ2FsbGFibGVbW3N0
ciwgSGVhZGVyc10sIEF3YWl0YWJsZVtPcHRpb25hbFtIVFRQUmVzcG9uc2VdXV0KKyAgICAgICAg
XSA9IE5vbmUsCisgICAgICAgIHNlbGVjdF9zdWJwcm90b2NvbDogT3B0aW9uYWxbCisgICAgICAg
ICAgICBDYWxsYWJsZVtbU2VxdWVuY2VbU3VicHJvdG9jb2xdLCBTZXF1ZW5jZVtTdWJwcm90b2Nv
bF1dLCBTdWJwcm90b2NvbF0KKyAgICAgICAgXSA9IE5vbmUsCisgICAgICAgICoqa3dhcmdzOiBB
bnksCisgICAgKSAtPiBOb25lOgorICAgICAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBj
bG9zZV90aW1lb3V0IHVzZWQgdG8gYmUgY2FsbGVkIHRpbWVvdXQuCisgICAgICAgIGlmIHRpbWVv
dXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSAxMAorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgd2FybmluZ3Mud2FybigicmVuYW1lIHRpbWVvdXQgdG8gY2xvc2VfdGltZW91dCIs
IERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgIyBJZiBib3RoIGFyZSBzcGVjaWZpZWQsIHRp
bWVvdXQgaXMgaWdub3JlZC4KKyAgICAgICAgaWYgY2xvc2VfdGltZW91dCBpcyBOb25lOgorICAg
ICAgICAgICAgY2xvc2VfdGltZW91dCA9IHRpbWVvdXQKKworICAgICAgICAjIEJhY2t3YXJkcyBj
b21wYXRpYmlsaXR5OiBjcmVhdGVfcHJvdG9jb2wgdXNlZCB0byBiZSBjYWxsZWQga2xhc3MuCisg
ICAgICAgIGlmIGtsYXNzIGlzIE5vbmU6CisgICAgICAgICAgICBrbGFzcyA9IFdlYlNvY2tldFNl
cnZlclByb3RvY29sCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJy
ZW5hbWUga2xhc3MgdG8gY3JlYXRlX3Byb3RvY29sIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAg
ICAgICAjIElmIGJvdGggYXJlIHNwZWNpZmllZCwga2xhc3MgaXMgaWdub3JlZC4KKyAgICAgICAg
aWYgY3JlYXRlX3Byb3RvY29sIGlzIE5vbmU6CisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2wg
PSBrbGFzcworCisgICAgICAgIGlmIGxvb3AgaXMgTm9uZToKKyAgICAgICAgICAgIGxvb3AgPSBh
c3luY2lvLmdldF9ldmVudF9sb29wKCkKKworICAgICAgICB3c19zZXJ2ZXIgPSBXZWJTb2NrZXRT
ZXJ2ZXIobG9vcCkKKworICAgICAgICBzZWN1cmUgPSBrd2FyZ3MuZ2V0KCJzc2wiKSBpcyBub3Qg
Tm9uZQorCisgICAgICAgIGlmIGNvbXByZXNzaW9uID09ICJkZWZsYXRlIjoKKyAgICAgICAgICAg
IGlmIGV4dGVuc2lvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zID0gW10K
KyAgICAgICAgICAgIGlmIG5vdCBhbnkoCisgICAgICAgICAgICAgICAgZXh0X2ZhY3RvcnkubmFt
ZSA9PSBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkubmFtZQorICAgICAgICAgICAgICAg
IGZvciBleHRfZmFjdG9yeSBpbiBleHRlbnNpb25zCisgICAgICAgICAgICApOgorICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMgPSBsaXN0KGV4dGVuc2lvbnMpICsgW1NlcnZlclBlck1lc3NhZ2VE
ZWZsYXRlRmFjdG9yeSgpXQorICAgICAgICBlbGlmIGNvbXByZXNzaW9uIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uOiB7
Y29tcHJlc3Npb259IikKKworICAgICAgICBmYWN0b3J5ID0gZnVuY3Rvb2xzLnBhcnRpYWwoCisg
ICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2wsCisgICAgICAgICAgICB3c19oYW5kbGVyLAorICAg
ICAgICAgICAgd3Nfc2VydmVyLAorICAgICAgICAgICAgaG9zdD1ob3N0LAorICAgICAgICAgICAg
cG9ydD1wb3J0LAorICAgICAgICAgICAgc2VjdXJlPXNlY3VyZSwKKyAgICAgICAgICAgIHBpbmdf
aW50ZXJ2YWw9cGluZ19pbnRlcnZhbCwKKyAgICAgICAgICAgIHBpbmdfdGltZW91dD1waW5nX3Rp
bWVvdXQsCisgICAgICAgICAgICBjbG9zZV90aW1lb3V0PWNsb3NlX3RpbWVvdXQsCisgICAgICAg
ICAgICBtYXhfc2l6ZT1tYXhfc2l6ZSwKKyAgICAgICAgICAgIG1heF9xdWV1ZT1tYXhfcXVldWUs
CisgICAgICAgICAgICByZWFkX2xpbWl0PXJlYWRfbGltaXQsCisgICAgICAgICAgICB3cml0ZV9s
aW1pdD13cml0ZV9saW1pdCwKKyAgICAgICAgICAgIGxvb3A9bG9vcCwKKyAgICAgICAgICAgIGxl
Z2FjeV9yZWN2PWxlZ2FjeV9yZWN2LAorICAgICAgICAgICAgb3JpZ2lucz1vcmlnaW5zLAorICAg
ICAgICAgICAgZXh0ZW5zaW9ucz1leHRlbnNpb25zLAorICAgICAgICAgICAgc3VicHJvdG9jb2xz
PXN1YnByb3RvY29scywKKyAgICAgICAgICAgIGV4dHJhX2hlYWRlcnM9ZXh0cmFfaGVhZGVycywK
KyAgICAgICAgICAgIHByb2Nlc3NfcmVxdWVzdD1wcm9jZXNzX3JlcXVlc3QsCisgICAgICAgICAg
ICBzZWxlY3Rfc3VicHJvdG9jb2w9c2VsZWN0X3N1YnByb3RvY29sLAorICAgICAgICApCisKKyAg
ICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgY3JlYXRlX3NlcnZlciA9IGZ1bmN0
b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIGxvb3AuY3JlYXRlX3NlcnZlciwgZmFjdG9y
eSwgaG9zdCwgcG9ydCwgKiprd2FyZ3MKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICMgdW5peF9zZXJ2ZShwYXRoKSBtdXN0IG5vdCBzcGVjaWZ5IGhvc3QgYW5kIHBv
cnQgcGFyYW1ldGVycy4KKyAgICAgICAgICAgIGFzc2VydCBob3N0IGlzIE5vbmUgYW5kIHBvcnQg
aXMgTm9uZQorICAgICAgICAgICAgY3JlYXRlX3NlcnZlciA9IGZ1bmN0b29scy5wYXJ0aWFsKAor
ICAgICAgICAgICAgICAgIGxvb3AuY3JlYXRlX3VuaXhfc2VydmVyLCBmYWN0b3J5LCBwYXRoLCAq
Kmt3YXJncworICAgICAgICAgICAgKQorCisgICAgICAgICMgVGhpcyBpcyBhIGNvcm91dGluZSBm
dW5jdGlvbi4KKyAgICAgICAgc2VsZi5fY3JlYXRlX3NlcnZlciA9IGNyZWF0ZV9zZXJ2ZXIKKyAg
ICAgICAgc2VsZi53c19zZXJ2ZXIgPSB3c19zZXJ2ZXIKKworICAgICMgYXN5bmMgd2l0aCBzZXJ2
ZSguLi4pCisKKyAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKSAtPiBXZWJTb2NrZXRTZXJ2
ZXI6CisgICAgICAgIHJldHVybiBhd2FpdCBzZWxmCisKKyAgICBhc3luYyBkZWYgX19hZXhpdF9f
KAorICAgICAgICBzZWxmLAorICAgICAgICBleGNfdHlwZTogT3B0aW9uYWxbVHlwZVtCYXNlRXhj
ZXB0aW9uXV0sCisgICAgICAgIGV4Y192YWx1ZTogT3B0aW9uYWxbQmFzZUV4Y2VwdGlvbl0sCisg
ICAgICAgIHRyYWNlYmFjazogT3B0aW9uYWxbVHJhY2ViYWNrVHlwZV0sCisgICAgKSAtPiBOb25l
OgorICAgICAgICBzZWxmLndzX3NlcnZlci5jbG9zZSgpCisgICAgICAgIGF3YWl0IHNlbGYud3Nf
c2VydmVyLndhaXRfY2xvc2VkKCkKKworICAgICMgYXdhaXQgc2VydmUoLi4uKQorCisgICAgZGVm
IF9fYXdhaXRfXyhzZWxmKSAtPiBHZW5lcmF0b3JbQW55LCBOb25lLCBXZWJTb2NrZXRTZXJ2ZXJd
OgorICAgICAgICAjIENyZWF0ZSBhIHN1aXRhYmxlIGl0ZXJhdG9yIGJ5IGNhbGxpbmcgX19hd2Fp
dF9fIG9uIGEgY29yb3V0aW5lLgorICAgICAgICByZXR1cm4gc2VsZi5fX2F3YWl0X2ltcGxfXygp
Ll9fYXdhaXRfXygpCisKKyAgICBhc3luYyBkZWYgX19hd2FpdF9pbXBsX18oc2VsZikgLT4gV2Vi
U29ja2V0U2VydmVyOgorICAgICAgICBzZXJ2ZXIgPSBhd2FpdCBzZWxmLl9jcmVhdGVfc2VydmVy
KCkKKyAgICAgICAgc2VsZi53c19zZXJ2ZXIud3JhcChzZXJ2ZXIpCisgICAgICAgIHJldHVybiBz
ZWxmLndzX3NlcnZlcgorCisgICAgIyB5aWVsZCBmcm9tIHNlcnZlKC4uLikKKworICAgIF9faXRl
cl9fID0gX19hd2FpdF9fCisKKworc2VydmUgPSBTZXJ2ZQorCisKK2RlZiB1bml4X3NlcnZlKAor
ICAgIHdzX2hhbmRsZXI6IENhbGxhYmxlW1tXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbCwgc3RyXSwg
QXdhaXRhYmxlW0FueV1dLAorICAgIHBhdGg6IHN0ciwKKyAgICAqKmt3YXJnczogQW55LAorKSAt
PiBTZXJ2ZToKKyAgICAiIiIKKyAgICBTaW1pbGFyIHRvIDpmdW5jOmBzZXJ2ZWAsIGJ1dCBmb3Ig
bGlzdGVuaW5nIG9uIFVuaXggc29ja2V0cy4KKworICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgdGhl
IGV2ZW50IGxvb3AncworICAgIDptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV91bml4X3NlcnZl
cmAgbWV0aG9kLgorCisgICAgSXQgaXMgb25seSBhdmFpbGFibGUgb24gVW5peC4KKworICAgIEl0
J3MgdXNlZnVsIGZvciBkZXBsb3lpbmcgYSBzZXJ2ZXIgYmVoaW5kIGEgcmV2ZXJzZSBwcm94eSBz
dWNoIGFzIG5naW54LgorCisgICAgOnBhcmFtIHBhdGg6IGZpbGUgc3lzdGVtIHBhdGggdG8gdGhl
IFVuaXggc29ja2V0CisKKyAgICAiIiIKKyAgICByZXR1cm4gc2VydmUod3NfaGFuZGxlciwgcGF0
aD1wYXRoLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29j
a2V0cy9zcGVlZHVwcy5jIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3NwZWVkdXBz
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMWMyYjM3ZTYwY2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvc3BlZWR1
cHMuYwpAQCAtMCwwICsxLDIwNiBAQAorLyogQyBpbXBsZW1lbnRhdGlvbiBvZiBwZXJmb3JtYW5j
ZSBzZW5zaXRpdmUgZnVuY3Rpb25zLiAqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyNp
bmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4gLyogdWludDMyX3QsIHVpbnQ2
NF90ICovCisKKyNpZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2VuZGlmCisK
K3N0YXRpYyBjb25zdCBQeV9zc2l6ZV90IE1BU0tfTEVOID0gNDsKKworLyogU2ltaWxhciB0byBQ
eUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZSwgYnV0IGFjY2VwdHMgbW9yZSB0eXBlcyAqLworCitzdGF0
aWMgaW50CitfUHlCeXRlc0xpa2VfQXNTdHJpbmdBbmRTaXplKFB5T2JqZWN0ICpvYmosIGNoYXIg
KipidWZmZXIsIFB5X3NzaXplX3QgKmxlbmd0aCkKK3sKKyAgICAvLyBUaGlzIHN1cHBvcnRzIGJ5
dGVzLCBieXRlYXJyYXlzLCBhbmQgQy1jb250aWd1b3VzIG1lbW9yeXZpZXcgb2JqZWN0cywKKyAg
ICAvLyB3aGljaCBhcmUgdGhlIG1vc3QgdXNlZnVsIGRhdGEgc3RydWN0dXJlcyBmb3IgaGFuZGxp
bmcgYnl0ZSBzdHJlYW1zLgorICAgIC8vIHdlYnNvY2tldHMuZnJhbWluZy5wcmVwYXJlX2RhdGEo
KSByZXR1cm5zIG9ubHkgdmFsdWVzIG9mIHRoZXNlIHR5cGVzLgorICAgIC8vIEFueSBvYmplY3Qg
aW1wbGVtZW50aW5nIHRoZSBidWZmZXIgcHJvdG9jb2wgY291bGQgYmUgc3VwcG9ydGVkLCBob3dl
dmVyCisgICAgLy8gdGhhdCB3b3VsZCByZXF1aXJlIGFsbG9jYXRpb24gb3IgY29weWluZyBtZW1v
cnksIHdoaWNoIGlzIGV4cGVuc2l2ZS4KKyAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKQorICAg
IHsKKyAgICAgICAgKmJ1ZmZlciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iaik7CisgICAgICAgICps
ZW5ndGggPSBQeUJ5dGVzX0dFVF9TSVpFKG9iaik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0
ZUFycmF5X0NoZWNrKG9iaikpCisgICAgeworICAgICAgICAqYnVmZmVyID0gUHlCeXRlQXJyYXlf
QVNfU1RSSU5HKG9iaik7CisgICAgICAgICpsZW5ndGggPSBQeUJ5dGVBcnJheV9HRVRfU0laRShv
YmopOworICAgIH0KKyAgICBlbHNlIGlmIChQeU1lbW9yeVZpZXdfQ2hlY2sob2JqKSkKKyAgICB7
CisgICAgICAgIFB5X2J1ZmZlciAqbXZfYnVmOworICAgICAgICBtdl9idWYgPSBQeU1lbW9yeVZp
ZXdfR0VUX0JVRkZFUihvYmopOworICAgICAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKG12
X2J1ZiwgJ0MnKSkKKyAgICAgICAgeworICAgICAgICAgICAgKmJ1ZmZlciA9IG12X2J1Zi0+YnVm
OworICAgICAgICAgICAgKmxlbmd0aCA9IG12X2J1Zi0+bGVuOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAg
ICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBjb250aWd1
b3VzIG1lbW9yeXZpZXciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICBQ
eUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZXhwZWN0ZWQgYSBieXRlcy1saWtlIG9iamVj
dCwgJS4yMDBzIGZvdW5kIiwKKyAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7Cisg
ICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQyBpbXBs
ZW1lbnRhdGlvbiBvZiB3ZWJzb2NrZXRzLnV0aWxzLmFwcGx5X21hc2sgKi8KKworc3RhdGljIFB5
T2JqZWN0ICoKK2FwcGx5X21hc2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9i
amVjdCAqa3dkcykKK3sKKworICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgdmFyaW91cyBieXRl
cy1saWtlIHR5cGVzLCBhY2NlcHQgYW55IFB5dGhvbiBvYmplY3QuCisKKyAgICBzdGF0aWMgY2hh
ciAqa3dsaXN0W10gPSB7ImRhdGEiLCAibWFzayIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1
dF9vYmo7CisgICAgUHlPYmplY3QgKm1hc2tfb2JqOworCisgICAgLy8gQSBwb2ludGVyIHRvIGEg
Y2hhciAqICsgbGVuZ3RoIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGRhdGEgYW5kIG1hc2sK
KyAgICAvLyBhcmd1bWVudHMsIHBvc3NpYmx5IHZpYSBhIFB5X2J1ZmZlci4KKworICAgIGNoYXIg
KmlucHV0OworICAgIFB5X3NzaXplX3QgaW5wdXRfbGVuOworICAgIGNoYXIgKm1hc2s7CisgICAg
UHlfc3NpemVfdCBtYXNrX2xlbjsKKworICAgIC8vIEluaXRpYWxpemUgYSBQeUJ5dGVzT2JqZWN0
IHRoZW4gZ2V0IGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBjaGFyICoKKyAgICAvLyBpbiBv
cmRlciB0byBhdm9pZCBhbiBleHRyYSBtZW1vcnkgY29weSBpbiBQeUJ5dGVzX0Zyb21TdHJpbmdB
bmRTaXplLgorCisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBjaGFyICpvdXRwdXQ7CisKKyAg
ICAvLyBPdGhlciB2YXJpYWJsZXMuCisKKyAgICBQeV9zc2l6ZV90IGkgPSAwOworCisgICAgLy8g
UGFyc2UgaW5wdXRzLgorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCisg
ICAgICAgICAgICBhcmdzLCBrd2RzLCAiT08iLCBrd2xpc3QsICZpbnB1dF9vYmosICZtYXNrX29i
aikpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoX1B5Qnl0
ZXNMaWtlX0FzU3RyaW5nQW5kU2l6ZShpbnB1dF9vYmosICZpbnB1dCwgJmlucHV0X2xlbikgPT0g
LTEpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoX1B5Qnl0
ZXNMaWtlX0FzU3RyaW5nQW5kU2l6ZShtYXNrX29iaiwgJm1hc2ssICZtYXNrX2xlbikgPT0gLTEp
CisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobWFza19sZW4g
IT0gTUFTS19MRU4pCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVF
cnJvciwgIm1hc2sgbXVzdCBjb250YWluIDQgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorCisgICAgLy8gQ3JlYXRlIG91dHB1dC4KKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNf
RnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgaW5wdXRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5V
TEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBTaW5jZSB3
ZSBqdXN0ZSBjcmVhdGVkIHJlc3VsdCwgd2UgZG9uJ3QgbmVlZCBlcnJvciBjaGVja3MuCisgICAg
b3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKworICAgIC8vIFBlcmZvcm0gdGhl
IG1hc2tpbmcgb3BlcmF0aW9uLgorCisgICAgLy8gQXBwYXJlbnRseSBHQ0MgY2Fubm90IGZpZ3Vy
ZSBvdXQgdGhlIGZvbGxvd2luZyBvcHRpbWl6YXRpb25zIGJ5IGl0c2VsZi4KKworICAgIC8vIFdl
IG5lZWQgYSBuZXcgc2NvcGUgZm9yIE1TVkMgMjAxMCAobm9uIEM5OSBmcmllbmRseSkKKyAgICB7
CisjaWYgX19TU0UyX18KKworICAgICAgICAvLyBXaXRoIFNTRTIgc3VwcG9ydCwgWE9SIGJ5IGJs
b2NrcyBvZiAxNiBieXRlcyA9IDEyOCBiaXRzLgorCisgICAgICAgIC8vIFNpbmNlIHdlIGNhbm5v
dCBjb250cm9sIHRoZSAxNi1ieXRlcyBhbGlnbm1lbnQgb2YgaW5wdXQgYW5kIG91dHB1dAorICAg
ICAgICAvLyBidWZmZXJzLCB3ZSByZWx5IG9uIGxvYWR1L3N0b3JldSByYXRoZXIgdGhhbiBsb2Fk
L3N0b3JlLgorCisgICAgICAgIFB5X3NzaXplX3QgaW5wdXRfbGVuXzEyOCA9IGlucHV0X2xlbiAm
IH4xNTsKKyAgICAgICAgX19tMTI4aSBtYXNrXzEyOCA9IF9tbV9zZXQxX2VwaTMyKCoodWludDMy
X3QgKiltYXNrKTsKKworICAgICAgICBmb3IgKDsgaSA8IGlucHV0X2xlbl8xMjg7IGkgKz0gMTYp
CisgICAgICAgIHsKKyAgICAgICAgICAgIF9fbTEyOGkgaW5fMTI4ID0gX21tX2xvYWR1X3NpMTI4
KChfX20xMjhpICopKGlucHV0ICsgaSkpOworICAgICAgICAgICAgX19tMTI4aSBvdXRfMTI4ID0g
X21tX3hvcl9zaTEyOChpbl8xMjgsIG1hc2tfMTI4KTsKKyAgICAgICAgICAgIF9tbV9zdG9yZXVf
c2kxMjgoKF9fbTEyOGkgKikob3V0cHV0ICsgaSksIG91dF8xMjgpOworICAgICAgICB9CisKKyNl
bHNlCisKKyAgICAgICAgLy8gV2l0aG91dCBTU0UyIHN1cHBvcnQsIFhPUiBieSBibG9ja3Mgb2Yg
OCBieXRlcyA9IDY0IGJpdHMuCisKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRoZSBtZW1vcnkgYWxs
b2NhdG9yIGFsaWducyBldmVyeXRoaW5nIG9uIDggYnl0ZXMgYm91bmRhcmllcy4KKworICAgICAg
ICBQeV9zc2l6ZV90IGlucHV0X2xlbl82NCA9IGlucHV0X2xlbiAmIH43OworICAgICAgICB1aW50
MzJfdCBtYXNrXzMyID0gKih1aW50MzJfdCAqKW1hc2s7CisgICAgICAgIHVpbnQ2NF90IG1hc2tf
NjQgPSAoKHVpbnQ2NF90KW1hc2tfMzIgPDwgMzIpIHwgKHVpbnQ2NF90KW1hc2tfMzI7CisKKyAg
ICAgICAgZm9yICg7IGkgPCBpbnB1dF9sZW5fNjQ7IGkgKz0gOCkKKyAgICAgICAgeworICAgICAg
ICAgICAgKih1aW50NjRfdCAqKShvdXRwdXQgKyBpKSA9ICoodWludDY0X3QgKikoaW5wdXQgKyBp
KSBeIG1hc2tfNjQ7CisgICAgICAgIH0KKworI2VuZGlmCisgICAgfQorCisgICAgLy8gWE9SIHRo
ZSByZW1haW5kZXIgb2YgdGhlIGlucHV0IGJ5dGUgYnkgYnl0ZS4KKworICAgIGZvciAoOyBpIDwg
aW5wdXRfbGVuOyBpKyspCisgICAgeworICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIG1h
c2tbaSAmIChNQVNLX0xFTiAtIDEpXTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworCit9
CisKK3N0YXRpYyBQeU1ldGhvZERlZiBzcGVlZHVwc19tZXRob2RzW10gPSB7CisgICAgeworICAg
ICAgICAiYXBwbHlfbWFzayIsCisgICAgICAgIChQeUNGdW5jdGlvbilhcHBseV9tYXNrLAorICAg
ICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAiQXBwbHkgbWFza2lu
ZyB0byB3ZWJzb2NrZXQgbWVzc2FnZS4iLAorICAgIH0sCisgICAge05VTEwsIE5VTEwsIDAsIE5V
TEx9LCAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVm
IHNwZWVkdXBzX21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIndl
YnNvY2tldC5zcGVlZHVwcyIsICAgICAgIC8qIG1fbmFtZSAqLworICAgICJDIGltcGxlbWVudGF0
aW9uIG9mIHBlcmZvcm1hbmNlIHNlbnNpdGl2ZSBmdW5jdGlvbnMuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9kb2MgKi8KKyAgICAtMSwgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogbV9zaXplICovCisgICAgc3BlZWR1cHNfbWV0aG9kcywgICAgICAgICAgIC8qIG1f
bWV0aG9kcyAqLworICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307
CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfc3BlZWR1cHModm9pZCkKK3sKKyAgICByZXR1cm4g
UHlNb2R1bGVfQ3JlYXRlKCZzcGVlZHVwc19tb2R1bGUpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3NwZWVkdXBzLnB5aSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9z
cmMvd2Vic29ja2V0cy9zcGVlZHVwcy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi44MjE0MzhhMDY0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvc3JjL3dlYnNvY2tldHMvc3BlZWR1cHMucHlpCkBAIC0wLDAgKzEgQEAKK2RlZiBhcHBseV9t
YXNrKGRhdGE6IGJ5dGVzLCBtYXNrOiBieXRlcykgLT4gYnl0ZXM6IC4uLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3R5cGluZy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9zcmMvd2Vic29ja2V0cy90eXBpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi40YTYwZjkzZjY0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvc3JjL3dlYnNvY2tldHMvdHlwaW5nLnB5CkBAIC0wLDAgKzEsNDkgQEAKK2Zyb20gdHlwaW5n
IGltcG9ydCBMaXN0LCBOZXdUeXBlLCBPcHRpb25hbCwgVHVwbGUsIFVuaW9uCisKKworX19hbGxf
XyA9IFsiRGF0YSIsICJPcmlnaW4iLCAiRXh0ZW5zaW9uSGVhZGVyIiwgIkV4dGVuc2lvblBhcmFt
ZXRlciIsICJTdWJwcm90b2NvbCJdCisKK0RhdGEgPSBVbmlvbltzdHIsIGJ5dGVzXQorCitEYXRh
X19kb2NfXyA9ICIiIgorVHlwZXMgc3VwcG9ydGVkIGluIGEgV2ViU29ja2V0IG1lc3NhZ2U6CisK
Ky0gOmNsYXNzOmBzdHJgIGZvciB0ZXh0IG1lc3NhZ2VzCistIDpjbGFzczpgYnl0ZXNgIGZvciBi
aW5hcnkgbWVzc2FnZXMKKworIiIiCisjIFJlbW92ZSB0cnkgLyBleGNlcHQgd2hlbiBkcm9wcGlu
ZyBzdXBwb3J0IGZvciBQeXRob24gPCAzLjcKK3RyeToKKyAgICBEYXRhLl9fZG9jX18gPSBEYXRh
X19kb2NfXyAgIyB0eXBlOiBpZ25vcmUKK2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgcHJhZ21h
OiBubyBjb3ZlcgorICAgIHBhc3MKKworCitPcmlnaW4gPSBOZXdUeXBlKCJPcmlnaW4iLCBzdHIp
CitPcmlnaW4uX19kb2NfXyA9ICIiIlZhbHVlIG9mIGEgT3JpZ2luIGhlYWRlciIiIgorCisKK0V4
dGVuc2lvbk5hbWUgPSBOZXdUeXBlKCJFeHRlbnNpb25OYW1lIiwgc3RyKQorRXh0ZW5zaW9uTmFt
ZS5fX2RvY19fID0gIiIiTmFtZSBvZiBhIFdlYlNvY2tldCBleHRlbnNpb24iIiIKKworCitFeHRl
bnNpb25QYXJhbWV0ZXIgPSBUdXBsZVtzdHIsIE9wdGlvbmFsW3N0cl1dCisKK0V4dGVuc2lvblBh
cmFtZXRlcl9fZG9jX18gPSAiIiJQYXJhbWV0ZXIgb2YgYSBXZWJTb2NrZXQgZXh0ZW5zaW9uIiIi
Cit0cnk6CisgICAgRXh0ZW5zaW9uUGFyYW1ldGVyLl9fZG9jX18gPSBFeHRlbnNpb25QYXJhbWV0
ZXJfX2RvY19fICAjIHR5cGU6IGlnbm9yZQorZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBwcmFn
bWE6IG5vIGNvdmVyCisgICAgcGFzcworCisKK0V4dGVuc2lvbkhlYWRlciA9IFR1cGxlW0V4dGVu
c2lvbk5hbWUsIExpc3RbRXh0ZW5zaW9uUGFyYW1ldGVyXV0KKworRXh0ZW5zaW9uSGVhZGVyX19k
b2NfXyA9ICIiIkl0ZW0gcGFyc2VkIGluIGEgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRl
ciIiIgordHJ5OgorICAgIEV4dGVuc2lvbkhlYWRlci5fX2RvY19fID0gRXh0ZW5zaW9uSGVhZGVy
X19kb2NfXyAgIyB0eXBlOiBpZ25vcmUKK2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgcHJhZ21h
OiBubyBjb3ZlcgorICAgIHBhc3MKKworCitTdWJwcm90b2NvbCA9IE5ld1R5cGUoIlN1YnByb3Rv
Y29sIiwgc3RyKQorU3VicHJvdG9jb2wuX19kb2NfXyA9ICIiIkl0ZW1zIHBhcnNlZCBpbiBhIFNl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVhZGVyIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvc3JjL3dlYnNvY2tldHMvdXJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRz
L3VyaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2NjllNTY2
ODYxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy91
cmkucHkKQEAgLTAsMCArMSw4MSBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLnVyaWAgcGFyc2Vz
IFdlYlNvY2tldCBVUklzLgorCitTZWUgYHNlY3Rpb24gMyBvZiBSRkMgNjQ1NWBfLgorCisuLiBf
c2VjdGlvbiAzIG9mIFJGQyA2NDU1OiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1
I3NlY3Rpb24tMworCisiIiIKKworaW1wb3J0IHVybGxpYi5wYXJzZQorZnJvbSB0eXBpbmcgaW1w
b3J0IE5hbWVkVHVwbGUsIE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC5leGNlcHRpb25zIGltcG9y
dCBJbnZhbGlkVVJJCisKKworX19hbGxfXyA9IFsicGFyc2VfdXJpIiwgIldlYlNvY2tldFVSSSJd
CisKKworIyBDb25zaWRlciBjb252ZXJ0aW5nIHRvIGEgZGF0YWNsYXNzIHdoZW4gZHJvcHBpbmcg
c3VwcG9ydCBmb3IgUHl0aG9uIDwgMy43LgorCisKK2NsYXNzIFdlYlNvY2tldFVSSShOYW1lZFR1
cGxlKToKKyAgICAiIiIKKyAgICBXZWJTb2NrZXQgVVJJLgorCisgICAgOnBhcmFtIGJvb2wgc2Vj
dXJlOiBzZWN1cmUgZmxhZworICAgIDpwYXJhbSBzdHIgaG9zdDogbG93ZXItY2FzZSBob3N0Cisg
ICAgOnBhcmFtIGludCBwb3J0OiBwb3J0LCBhbHdheXMgc2V0IGV2ZW4gaWYgaXQncyB0aGUgZGVm
YXVsdAorICAgIDpwYXJhbSBzdHIgcmVzb3VyY2VfbmFtZTogcGF0aCBhbmQgb3B0aW9uYWwgcXVl
cnkKKyAgICA6cGFyYW0gc3RyIHVzZXJfaW5mbzogYGAodXNlcm5hbWUsIHBhc3N3b3JkKWBgIHR1
cGxlIHdoZW4gdGhlIFVSSSBjb250YWlucworICAgICAgYFVzZXIgSW5mb3JtYXRpb25gXywgZWxz
ZSBgYE5vbmVgYC4KKworICAgIC4uIF9Vc2VyIEluZm9ybWF0aW9uOiBodHRwczovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4xCisgICAgIiIiCisKKyAgICBzZWN1cmU6
IGJvb2wKKyAgICBob3N0OiBzdHIKKyAgICBwb3J0OiBpbnQKKyAgICByZXNvdXJjZV9uYW1lOiBz
dHIKKyAgICB1c2VyX2luZm86IE9wdGlvbmFsW1R1cGxlW3N0ciwgc3RyXV0KKworCisjIFdvcmsg
YXJvdW5kIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk5MzEKKworV2ViU29ja2V0VVJJ
LnNlY3VyZS5fX2RvY19fID0gIiIKK1dlYlNvY2tldFVSSS5ob3N0Ll9fZG9jX18gPSAiIgorV2Vi
U29ja2V0VVJJLnBvcnQuX19kb2NfXyA9ICIiCitXZWJTb2NrZXRVUkkucmVzb3VyY2VfbmFtZS5f
X2RvY19fID0gIiIKK1dlYlNvY2tldFVSSS51c2VyX2luZm8uX19kb2NfXyA9ICIiCisKKworZGVm
IHBhcnNlX3VyaSh1cmk6IHN0cikgLT4gV2ViU29ja2V0VVJJOgorICAgICIiIgorICAgIFBhcnNl
IGFuZCB2YWxpZGF0ZSBhIFdlYlNvY2tldCBVUkkuCisKKyAgICA6cmFpc2VzIFZhbHVlRXJyb3I6
IGlmIGBgdXJpYGAgaXNuJ3QgYSB2YWxpZCBXZWJTb2NrZXQgVVJJLgorCisgICAgIiIiCisgICAg
cGFyc2VkID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHVyaSkKKyAgICB0cnk6CisgICAgICAgIGFz
c2VydCBwYXJzZWQuc2NoZW1lIGluIFsid3MiLCAid3NzIl0KKyAgICAgICAgYXNzZXJ0IHBhcnNl
ZC5wYXJhbXMgPT0gIiIKKyAgICAgICAgYXNzZXJ0IHBhcnNlZC5mcmFnbWVudCA9PSAiIgorICAg
ICAgICBhc3NlcnQgcGFyc2VkLmhvc3RuYW1lIGlzIG5vdCBOb25lCisgICAgZXhjZXB0IEFzc2Vy
dGlvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgcmFpc2UgSW52YWxpZFVSSSh1cmkpIGZyb20gZXhj
CisKKyAgICBzZWN1cmUgPSBwYXJzZWQuc2NoZW1lID09ICJ3c3MiCisgICAgaG9zdCA9IHBhcnNl
ZC5ob3N0bmFtZQorICAgIHBvcnQgPSBwYXJzZWQucG9ydCBvciAoNDQzIGlmIHNlY3VyZSBlbHNl
IDgwKQorICAgIHJlc291cmNlX25hbWUgPSBwYXJzZWQucGF0aCBvciAiLyIKKyAgICBpZiBwYXJz
ZWQucXVlcnk6CisgICAgICAgIHJlc291cmNlX25hbWUgKz0gIj8iICsgcGFyc2VkLnF1ZXJ5Cisg
ICAgdXNlcl9pbmZvID0gTm9uZQorICAgIGlmIHBhcnNlZC51c2VybmFtZSBpcyBub3QgTm9uZToK
KyAgICAgICAgIyB1cmxsaWIucGFyc2UudXJscGFyc2UgYWNjZXB0cyBVUkxzIHdpdGggYSB1c2Vy
bmFtZSBidXQgd2l0aG91dCBhCisgICAgICAgICMgcGFzc3dvcmQuIFRoaXMgZG9lc24ndCBtYWtl
IHNlbnNlIGZvciBIVFRQIEJhc2ljIEF1dGggY3JlZGVudGlhbHMuCisgICAgICAgIGlmIHBhcnNl
ZC5wYXNzd29yZCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVSSSh1cmkpCisg
ICAgICAgIHVzZXJfaW5mbyA9IChwYXJzZWQudXNlcm5hbWUsIHBhcnNlZC5wYXNzd29yZCkKKyAg
ICByZXR1cm4gV2ViU29ja2V0VVJJKHNlY3VyZSwgaG9zdCwgcG9ydCwgcmVzb3VyY2VfbmFtZSwg
dXNlcl9pbmZvKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3V0
aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3V0aWxzLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDBhYzg1NTlmZjZmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3V0aWxzLnB5CkBAIC0wLDAg
KzEsMTggQEAKK2ltcG9ydCBpdGVydG9vbHMKKworCitfX2FsbF9fID0gWyJhcHBseV9tYXNrIl0K
KworCitkZWYgYXBwbHlfbWFzayhkYXRhOiBieXRlcywgbWFzazogYnl0ZXMpIC0+IGJ5dGVzOgor
ICAgICIiIgorICAgIEFwcGx5IG1hc2tpbmcgdG8gdGhlIGRhdGEgb2YgYSBXZWJTb2NrZXQgbWVz
c2FnZS4KKworICAgIDpwYXJhbSBkYXRhOiBEYXRhIHRvIG1hc2sKKyAgICA6cGFyYW0gbWFzazog
NC1ieXRlcyBtYXNrCisKKyAgICAiIiIKKyAgICBpZiBsZW4obWFzaykgIT0gNDoKKyAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigibWFzayBtdXN0IGNvbnRhaW4gNCBieXRlcyIpCisKKyAgICByZXR1
cm4gYnl0ZXMoYiBeIG0gZm9yIGIsIG0gaW4gemlwKGRhdGEsIGl0ZXJ0b29scy5jeWNsZShtYXNr
KSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvdmVyc2lvbi5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzM3NzMzMmUxMmUxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3ZlcnNpb24ucHkKQEAgLTAsMCAr
MSBAQAordmVyc2lvbiA9ICI4LjEiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMv
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZDc4NjA5ZjViYTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSw1IEBA
CitpbXBvcnQgbG9nZ2luZworCisKKyMgQXZvaWQgZGlzcGxheWluZyBzdGFjayB0cmFjZXMgYXQg
dGhlIEVSUk9SIGxvZ2dpbmcgbGV2ZWwuCitsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dp
bmcuQ1JJVElDQUwpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9u
cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy9leHRlbnNpb25zL19faW5pdF9f
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9ucy90ZXN0X2Jhc2Uu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9ucy90ZXN0X2Jhc2UucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYTg2NTdiNjU0MTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9ucy90ZXN0X2Jhc2UucHkK
QEAgLTAsMCArMSw0IEBACitmcm9tIHdlYnNvY2tldHMuZXh0ZW5zaW9ucy5iYXNlIGltcG9ydCAq
ICAjIG5vcWEKKworCisjIEFic3RyYWN0IGNsYXNzZXMgZG9uJ3QgcHJvdmlkZSBhbnkgYmVoYXZp
b3IgdG8gdGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy9leHRlbnNpb25z
L3Rlc3RfcGVybWVzc2FnZV9kZWZsYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL2V4dGVu
c2lvbnMvdGVzdF9wZXJtZXNzYWdlX2RlZmxhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4wZWM0OWM2YzAyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9ucy90ZXN0X3Blcm1lc3NhZ2VfZGVmbGF0ZS5weQpAQCAt
MCwwICsxLDc5MiBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxpYgorCitmcm9tIHdlYnNv
Y2tldHMuZXhjZXB0aW9ucyBpbXBvcnQgKAorICAgIER1cGxpY2F0ZVBhcmFtZXRlciwKKyAgICBJ
bnZhbGlkUGFyYW1ldGVyTmFtZSwKKyAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgTmVn
b3RpYXRpb25FcnJvciwKKyAgICBQYXlsb2FkVG9vQmlnLAorKQorZnJvbSB3ZWJzb2NrZXRzLmV4
dGVuc2lvbnMucGVybWVzc2FnZV9kZWZsYXRlIGltcG9ydCAqCitmcm9tIHdlYnNvY2tldHMuZnJh
bWluZyBpbXBvcnQgKAorICAgIE9QX0JJTkFSWSwKKyAgICBPUF9DTE9TRSwKKyAgICBPUF9DT05U
LAorICAgIE9QX1BJTkcsCisgICAgT1BfUE9ORywKKyAgICBPUF9URVhULAorICAgIEZyYW1lLAor
ICAgIHNlcmlhbGl6ZV9jbG9zZSwKKykKKworCitjbGFzcyBFeHRlbnNpb25UZXN0c01peGluOgor
ICAgIGRlZiBhc3NlcnRFeHRlbnNpb25FcXVhbChzZWxmLCBleHRlbnNpb24xLCBleHRlbnNpb24y
KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbjEucmVt
b3RlX25vX2NvbnRleHRfdGFrZW92ZXIsIGV4dGVuc2lvbjIucmVtb3RlX25vX2NvbnRleHRfdGFr
ZW92ZXIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ZXh0ZW5zaW9uMS5sb2NhbF9ub19jb250ZXh0X3Rha2VvdmVyLCBleHRlbnNpb24yLmxvY2FsX25v
X2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgZXh0ZW5zaW9uMS5yZW1vdGVfbWF4X3dpbmRvd19iaXRzLCBleHRlbnNpb24y
LnJlbW90ZV9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgZXh0ZW5zaW9uMS5sb2NhbF9tYXhfd2luZG93X2JpdHMsIGV4dGVu
c2lvbjIubG9jYWxfbWF4X3dpbmRvd19iaXRzCisgICAgICAgICkKKworCitjbGFzcyBQZXJNZXNz
YWdlRGVmbGF0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlLCBFeHRlbnNpb25UZXN0c01peGluKToK
KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgU2V0IHVwIGFuIGluc3RhbmNlIG9mIHRo
ZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uIHdpdGggdGhlIG1vc3QKKyAgICAgICAgIyBj
b21tb24gc2V0dGluZ3MuIFNpbmNlIHRoZSBleHRlbnNpb24gaXMgc3ltbWV0cmljYWwsIHRoaXMg
aW5zdGFuY2UKKyAgICAgICAgIyBtYXkgYmUgdXNlZCBmb3IgdGVzdGluZyBib3RoIGVuY29kaW5n
IGFuZCBkZWNvZGluZy4KKyAgICAgICAgc2VsZi5leHRlbnNpb24gPSBQZXJNZXNzYWdlRGVmbGF0
ZShGYWxzZSwgRmFsc2UsIDE1LCAxNSkKKworICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAg
ICAgIGFzc2VydCBzZWxmLmV4dGVuc2lvbi5uYW1lID09ICJwZXJtZXNzYWdlLWRlZmxhdGUiCisK
KyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEV4dGVuc2lvbkVx
dWFsKGV2YWwocmVwcihzZWxmLmV4dGVuc2lvbikpLCBzZWxmLmV4dGVuc2lvbikKKworICAgICMg
Q29udHJvbCBmcmFtZXMgYXJlbid0IGVuY29kZWQgb3IgZGVjb2RlZC4KKworICAgIGRlZiB0ZXN0
X25vX2VuY29kZV9kZWNvZGVfcGluZ19mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUgPSBGcmFt
ZShUcnVlLCBPUF9QSU5HLCBiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmV4
dGVuc2lvbi5lbmNvZGUoZnJhbWUpLCBmcmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYuZXh0ZW5zaW9uLmRlY29kZShmcmFtZSksIGZyYW1lKQorCisgICAgZGVmIHRlc3Rfbm9f
ZW5jb2RlX2RlY29kZV9wb25nX2ZyYW1lKHNlbGYpOgorICAgICAgICBmcmFtZSA9IEZyYW1lKFRy
dWUsIE9QX1BPTkcsIGIiIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXh0ZW5z
aW9uLmVuY29kZShmcmFtZSksIGZyYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5leHRlbnNpb24uZGVjb2RlKGZyYW1lKSwgZnJhbWUpCisKKyAgICBkZWYgdGVzdF9ub19lbmNv
ZGVfZGVjb2RlX2Nsb3NlX2ZyYW1lKHNlbGYpOgorICAgICAgICBmcmFtZSA9IEZyYW1lKFRydWUs
IE9QX0NMT1NFLCBzZXJpYWxpemVfY2xvc2UoMTAwMCwgIiIpKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5leHRlbnNpb24uZW5jb2RlKGZyYW1lKSwgZnJhbWUpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLmV4dGVuc2lvbi5kZWNvZGUoZnJhbWUpLCBmcmFtZSkKKwor
ICAgICMgRGF0YSBmcmFtZXMgYXJlIGVuY29kZWQgYW5kIGRlY29kZWQuCisKKyAgICBkZWYgdGVz
dF9lbmNvZGVfZGVjb2RlX3RleHRfZnJhbWUoc2VsZik6CisgICAgICAgIGZyYW1lID0gRnJhbWUo
VHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpCisKKyAgICAgICAgZW5jX2Zy
YW1lID0gc2VsZi5leHRlbnNpb24uZW5jb2RlKGZyYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZW5jX2ZyYW1lLCBmcmFtZS5fcmVwbGFjZShyc3YxPVRydWUsIGRhdGE9YiJKTkw7XHhi
Y1x4MTJceDAwIikpCisKKyAgICAgICAgZGVjX2ZyYW1lID0gc2VsZi5leHRlbnNpb24uZGVjb2Rl
KGVuY19mcmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZSwgZnJhbWUp
CisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGVjb2RlX2JpbmFyeV9mcmFtZShzZWxmKToKKyAgICAg
ICAgZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9CSU5BUlksIGIidGVhIikKKworICAgICAgICBlbmNf
ZnJhbWUgPSBzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChlbmNfZnJhbWUsIGZyYW1lLl9yZXBsYWNlKHJzdjE9VHJ1ZSwgZGF0YT1iIipJTVx4
MDRceDAwIikpCisKKyAgICAgICAgZGVjX2ZyYW1lID0gc2VsZi5leHRlbnNpb24uZGVjb2RlKGVu
Y19mcmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZSwgZnJhbWUpCisK
KyAgICBkZWYgdGVzdF9lbmNvZGVfZGVjb2RlX2ZyYWdtZW50ZWRfdGV4dF9mcmFtZShzZWxmKToK
KyAgICAgICAgZnJhbWUxID0gRnJhbWUoRmFsc2UsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1
dGYtOCIpKQorICAgICAgICBmcmFtZTIgPSBGcmFtZShGYWxzZSwgT1BfQ09OVCwgIiAmICIuZW5j
b2RlKCJ1dGYtOCIpKQorICAgICAgICBmcmFtZTMgPSBGcmFtZShUcnVlLCBPUF9DT05ULCAiY3Jv
aXNzYW50cyIuZW5jb2RlKCJ1dGYtOCIpKQorCisgICAgICAgIGVuY19mcmFtZTEgPSBzZWxmLmV4
dGVuc2lvbi5lbmNvZGUoZnJhbWUxKQorICAgICAgICBlbmNfZnJhbWUyID0gc2VsZi5leHRlbnNp
b24uZW5jb2RlKGZyYW1lMikKKyAgICAgICAgZW5jX2ZyYW1lMyA9IHNlbGYuZXh0ZW5zaW9uLmVu
Y29kZShmcmFtZTMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVu
Y19mcmFtZTEsCisgICAgICAgICAgICBmcmFtZTEuX3JlcGxhY2UocnN2MT1UcnVlLCBkYXRhPWIi
Sk5MO1x4YmNceDEyXHgwMFx4MDBceDAwXHhmZlx4ZmYiKSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZW5jX2ZyYW1lMiwgZnJhbWUyLl9yZXBsYWNl
KHJzdjE9VHJ1ZSwgZGF0YT1iIlJQU1x4MDBceDAwXHgwMFx4MDBceGZmXHhmZiIpCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVuY19mcmFtZTMsIGZy
YW1lMy5fcmVwbGFjZShyc3YxPVRydWUsIGRhdGE9YiJKLlx4Y2FceGNmLC5OXHhjYyspXHgwNlx4
MDAiKQorICAgICAgICApCisKKyAgICAgICAgZGVjX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmRl
Y29kZShlbmNfZnJhbWUxKQorICAgICAgICBkZWNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24uZGVj
b2RlKGVuY19mcmFtZTIpCisgICAgICAgIGRlY19mcmFtZTMgPSBzZWxmLmV4dGVuc2lvbi5kZWNv
ZGUoZW5jX2ZyYW1lMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZTEsIGZy
YW1lMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNfZnJhbWUyLCBmcmFtZTIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMywgZnJhbWUzKQorCisgICAgZGVmIHRlc3Rf
ZW5jb2RlX2RlY29kZV9mcmFnbWVudGVkX2JpbmFyeV9mcmFtZShzZWxmKToKKyAgICAgICAgZnJh
bWUxID0gRnJhbWUoRmFsc2UsIE9QX1RFWFQsIGIidGVhICIpCisgICAgICAgIGZyYW1lMiA9IEZy
YW1lKFRydWUsIE9QX0NPTlQsIGIidGltZSIpCisKKyAgICAgICAgZW5jX2ZyYW1lMSA9IHNlbGYu
ZXh0ZW5zaW9uLmVuY29kZShmcmFtZTEpCisgICAgICAgIGVuY19mcmFtZTIgPSBzZWxmLmV4dGVu
c2lvbi5lbmNvZGUoZnJhbWUyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBlbmNfZnJhbWUxLCBmcmFtZTEuX3JlcGxhY2UocnN2MT1UcnVlLCBkYXRhPWIiKklNVFx4
MDBceDAwXHgwMFx4MDBceGZmXHhmZiIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGVuY19mcmFtZTIsIGZyYW1lMi5fcmVwbGFjZShyc3YxPVRydWUs
IGRhdGE9YiIqXHhjOVx4Y2NNXHgwNVx4MDAiKQorICAgICAgICApCisKKyAgICAgICAgZGVjX2Zy
YW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShlbmNfZnJhbWUxKQorICAgICAgICBkZWNfZnJh
bWUyID0gc2VsZi5leHRlbnNpb24uZGVjb2RlKGVuY19mcmFtZTIpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkZWNfZnJhbWUxLCBmcmFtZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGVjX2ZyYW1lMiwgZnJhbWUyKQorCisgICAgZGVmIHRlc3Rfbm9fZGVjb2RlX3RleHRfZnJhbWUo
c2VsZik6CisgICAgICAgIGZyYW1lID0gRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNv
ZGUoInV0Zi04IikpCisKKyAgICAgICAgIyBUcnkgZGVjb2RpbmcgYSBmcmFtZSB0aGF0IHdhc24n
dCBlbmNvZGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXh0ZW5zaW9uLmRlY29k
ZShmcmFtZSksIGZyYW1lKQorCisgICAgZGVmIHRlc3Rfbm9fZGVjb2RlX2JpbmFyeV9mcmFtZShz
ZWxmKToKKyAgICAgICAgZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9URVhULCBiInRlYSIpCisKKyAg
ICAgICAgIyBUcnkgZGVjb2RpbmcgYSBmcmFtZSB0aGF0IHdhc24ndCBlbmNvZGVkLgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXh0ZW5zaW9uLmRlY29kZShmcmFtZSksIGZyYW1lKQor
CisgICAgZGVmIHRlc3Rfbm9fZGVjb2RlX2ZyYWdtZW50ZWRfdGV4dF9mcmFtZShzZWxmKToKKyAg
ICAgICAgZnJhbWUxID0gRnJhbWUoRmFsc2UsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYt
OCIpKQorICAgICAgICBmcmFtZTIgPSBGcmFtZShGYWxzZSwgT1BfQ09OVCwgIiAmICIuZW5jb2Rl
KCJ1dGYtOCIpKQorICAgICAgICBmcmFtZTMgPSBGcmFtZShUcnVlLCBPUF9DT05ULCAiY3JvaXNz
YW50cyIuZW5jb2RlKCJ1dGYtOCIpKQorCisgICAgICAgIGRlY19mcmFtZTEgPSBzZWxmLmV4dGVu
c2lvbi5kZWNvZGUoZnJhbWUxKQorICAgICAgICBkZWNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24u
ZGVjb2RlKGZyYW1lMikKKyAgICAgICAgZGVjX2ZyYW1lMyA9IHNlbGYuZXh0ZW5zaW9uLmRlY29k
ZShmcmFtZTMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNfZnJhbWUxLCBmcmFtZTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMiwgZnJhbWUyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZTMsIGZyYW1lMykKKworICAgIGRlZiB0ZXN0X25vX2Rl
Y29kZV9mcmFnbWVudGVkX2JpbmFyeV9mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUxID0gRnJh
bWUoRmFsc2UsIE9QX1RFWFQsIGIidGVhICIpCisgICAgICAgIGZyYW1lMiA9IEZyYW1lKFRydWUs
IE9QX0NPTlQsIGIidGltZSIpCisKKyAgICAgICAgZGVjX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9u
LmRlY29kZShmcmFtZTEpCisgICAgICAgIGRlY19mcmFtZTIgPSBzZWxmLmV4dGVuc2lvbi5kZWNv
ZGUoZnJhbWUyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMSwgZnJhbWUx
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZTIsIGZyYW1lMikKKworICAgIGRl
ZiB0ZXN0X2NvbnRleHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgIGZyYW1lID0gRnJhbWUoVHJ1
ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpCisKKyAgICAgICAgZW5jX2ZyYW1l
MSA9IHNlbGYuZXh0ZW5zaW9uLmVuY29kZShmcmFtZSkKKyAgICAgICAgZW5jX2ZyYW1lMiA9IHNl
bGYuZXh0ZW5zaW9uLmVuY29kZShmcmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVu
Y19mcmFtZTEuZGF0YSwgYiJKTkw7XHhiY1x4MTJceDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChlbmNfZnJhbWUyLmRhdGEsIGIiSlx4MDZceDExXHgwMFx4MDAiKQorCisgICAgZGVmIHRl
c3RfcmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgICMgTm8gY29udGV4
dCB0YWtlb3ZlciB3aGVuIGRlY29kaW5nIG1lc3NhZ2VzLgorICAgICAgICBzZWxmLmV4dGVuc2lv
biA9IFBlck1lc3NhZ2VEZWZsYXRlKFRydWUsIEZhbHNlLCAxNSwgMTUpCisKKyAgICAgICAgZnJh
bWUgPSBGcmFtZShUcnVlLCBPUF9URVhULCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSkKKworICAg
ICAgICBlbmNfZnJhbWUxID0gc2VsZi5leHRlbnNpb24uZW5jb2RlKGZyYW1lKQorICAgICAgICBl
bmNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24uZW5jb2RlKGZyYW1lKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZW5jX2ZyYW1lMS5kYXRhLCBiIkpOTDtceGJjXHgxMlx4MDAiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGVuY19mcmFtZTIuZGF0YSwgYiJKXHgwNlx4MTFceDAwXHgwMCIp
CisKKyAgICAgICAgZGVjX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShlbmNfZnJhbWUx
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZTEsIGZyYW1lKQorCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoemxpYi5lcnJvcikgYXMgZXhjOgorICAgICAgICAgICAg
c2VsZi5leHRlbnNpb24uZGVjb2RlKGVuY19mcmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o
ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIiwgc3RyKGV4Yy5leGNlcHRpb24pKQorCisg
ICAgZGVmIHRlc3RfbG9jYWxfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgIyBO
byBjb250ZXh0IHRha2VvdmVyIHdoZW4gZW5jb2RpbmcgYW5kIGRlY29kaW5nIG1lc3NhZ2VzLgor
ICAgICAgICBzZWxmLmV4dGVuc2lvbiA9IFBlck1lc3NhZ2VEZWZsYXRlKFRydWUsIFRydWUsIDE1
LCAxNSkKKworICAgICAgICBmcmFtZSA9IEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5j
b2RlKCJ1dGYtOCIpKQorCisgICAgICAgIGVuY19mcmFtZTEgPSBzZWxmLmV4dGVuc2lvbi5lbmNv
ZGUoZnJhbWUpCisgICAgICAgIGVuY19mcmFtZTIgPSBzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJh
bWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNfZnJhbWUxLmRhdGEsIGIiSk5MO1x4
YmNceDEyXHgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jX2ZyYW1lMi5kYXRhLCBi
IkpOTDtceGJjXHgxMlx4MDAiKQorCisgICAgICAgIGRlY19mcmFtZTEgPSBzZWxmLmV4dGVuc2lv
bi5kZWNvZGUoZW5jX2ZyYW1lMSkKKyAgICAgICAgZGVjX2ZyYW1lMiA9IHNlbGYuZXh0ZW5zaW9u
LmRlY29kZShlbmNfZnJhbWUyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1l
MSwgZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMiwgZnJhbWUpCisK
KyAgICAjIENvbXByZXNzaW9uIHNldHRpbmdzIGNhbiBiZSBjdXN0b21pemVkLgorCisgICAgZGVm
IHRlc3RfY29tcHJlc3Nfc2V0dGluZ3Moc2VsZik6CisgICAgICAgICMgQ29uZmlndXJlIGFuIGV4
dGVuc2lvbiBzbyB0aGF0IG5vIGNvbXByZXNzaW9uIGFjdHVhbGx5IG9jY3Vycy4KKyAgICAgICAg
ZXh0ZW5zaW9uID0gUGVyTWVzc2FnZURlZmxhdGUoRmFsc2UsIEZhbHNlLCAxNSwgMTUsIHsibGV2
ZWwiOiAwfSkKKworICAgICAgICBmcmFtZSA9IEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIu
ZW5jb2RlKCJ1dGYtOCIpKQorCisgICAgICAgIGVuY19mcmFtZSA9IGV4dGVuc2lvbi5lbmNvZGUo
ZnJhbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVuY19mcmFt
ZSwKKyAgICAgICAgICAgIGZyYW1lLl9yZXBsYWNlKAorICAgICAgICAgICAgICAgIHJzdjE9VHJ1
ZSwgZGF0YT1iIlx4MDBceDA1XHgwMFx4ZmFceGZmY2FmXHhjM1x4YTlceDAwIiAgIyBub3QgY29t
cHJlc3NlZAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgIyBGcmFtZXMgYXJlbid0
IGRlY29kZWQgYmV5b25kIG1heF9sZW5ndGguCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX21h
eF9zaXplKHNlbGYpOgorICAgICAgICBmcmFtZSA9IEZyYW1lKFRydWUsIE9QX1RFWFQsICgiYSIg
KiAyMCkuZW5jb2RlKCJ1dGYtOCIpKQorCisgICAgICAgIGVuY19mcmFtZSA9IHNlbGYuZXh0ZW5z
aW9uLmVuY29kZShmcmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY19mcmFtZS5k
YXRhLCBiIkpMXHhjNFx4MDRceDAwXHgwMCIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhQYXlsb2FkVG9vQmlnKToKKyAgICAgICAgICAgIHNlbGYuZXh0ZW5zaW9uLmRlY29kZShl
bmNfZnJhbWUsIG1heF9zaXplPTEwKQorCisKK2NsYXNzIENsaWVudFBlck1lc3NhZ2VEZWZsYXRl
RmFjdG9yeVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlLCBFeHRlbnNpb25UZXN0c01peGluKToKKyAg
ICBkZWYgdGVzdF9uYW1lKHNlbGYpOgorICAgICAgICBhc3NlcnQgQ2xpZW50UGVyTWVzc2FnZURl
ZmxhdGVGYWN0b3J5Lm5hbWUgPT0gInBlcm1lc3NhZ2UtZGVmbGF0ZSIKKworICAgIGRlZiB0ZXN0
X2luaXQoc2VsZik6CisgICAgICAgIGZvciBjb25maWcgaW4gWworICAgICAgICAgICAgKEZhbHNl
LCBGYWxzZSwgOCwgTm9uZSksICAjIHNlcnZlcl9tYXhfd2luZG93X2JpdHMg4omlIDgKKyAgICAg
ICAgICAgIChGYWxzZSwgVHJ1ZSwgMTUsIE5vbmUpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
IOKJpCAxNQorICAgICAgICAgICAgKFRydWUsIEZhbHNlLCBOb25lLCA4KSwgICMgY2xpZW50X21h
eF93aW5kb3dfYml0cyDiiaUgOAorICAgICAgICAgICAgKFRydWUsIFRydWUsIE5vbmUsIDE1KSwg
ICMgY2xpZW50X21heF93aW5kb3dfYml0cyDiiaQgMTUKKyAgICAgICAgICAgIChGYWxzZSwgRmFs
c2UsIE5vbmUsIFRydWUpLCAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzCisgICAgICAgICAgICAo
RmFsc2UsIEZhbHNlLCBOb25lLCBOb25lLCB7Im1lbUxldmVsIjogNH0pLAorICAgICAgICBdOgor
ICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uZmlnPWNvbmZpZyk6CisgICAgICAgICAg
ICAgICAgIyBUaGlzIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgICAg
ICBDbGllbnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoKmNvbmZpZykKKworICAgIGRlZiB0ZXN0
X2luaXRfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBjb25maWcgaW4gWworICAgICAgICAgICAg
KEZhbHNlLCBGYWxzZSwgNywgOCksICAjIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPCA4CisgICAg
ICAgICAgICAoRmFsc2UsIFRydWUsIDgsIDcpLCAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIDwg
OAorICAgICAgICAgICAgKFRydWUsIEZhbHNlLCAxNiwgMTUpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzID4gMTUKKyAgICAgICAgICAgIChUcnVlLCBUcnVlLCAxNSwgMTYpLCAgIyBjbGllbnRf
bWF4X3dpbmRvd19iaXRzID4gMTUKKyAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIFRydWUsIE5v
bmUpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzCisgICAgICAgICAgICAoRmFsc2UsIEZhbHNl
LCBOb25lLCBOb25lLCB7IndiaXRzIjogMTF9KSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdp
dGggc2VsZi5zdWJUZXN0KGNvbmZpZz1jb25maWcpOgorICAgICAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIENsaWVudFBl
ck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgqY29uZmlnKQorCisgICAgZGVmIHRlc3RfZ2V0X3JlcXVl
c3RfcGFyYW1zKHNlbGYpOgorICAgICAgICBmb3IgY29uZmlnLCByZXN1bHQgaW4gWworICAgICAg
ICAgICAgIyBUZXN0IHdpdGhvdXQgYW55IHBhcmFtZXRlcgorICAgICAgICAgICAgKChGYWxzZSwg
RmFsc2UsIE5vbmUsIE5vbmUpLCBbXSksCisgICAgICAgICAgICAjIFRlc3Qgc2VydmVyX25vX2Nv
bnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAgICgoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLCBb
KCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSksCisgICAgICAgICAgICAjIFRl
c3QgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAgICgoRmFsc2UsIFRydWUs
IE5vbmUsIE5vbmUpLCBbKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSksCisg
ICAgICAgICAgICAjIFRlc3Qgc2VydmVyX21heF93aW5kb3dfYml0cworICAgICAgICAgICAgKChG
YWxzZSwgRmFsc2UsIDEwLCBOb25lKSwgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMCIp
XSksCisgICAgICAgICAgICAjIFRlc3QgY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAg
ICAgKChGYWxzZSwgRmFsc2UsIE5vbmUsIDEwKSwgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIs
ICIxMCIpXSksCisgICAgICAgICAgICAoKEZhbHNlLCBGYWxzZSwgTm9uZSwgVHJ1ZSksIFsoImNs
aWVudF9tYXhfd2luZG93X2JpdHMiLCBOb25lKV0pLAorICAgICAgICAgICAgIyBUZXN0IGFsbCBw
YXJhbWV0ZXJzIHRvZ2V0aGVyCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUs
IFRydWUsIDEyLCAxMiksCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAo
InNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAg
ICgiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAg
ICAgKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIiksCisgICAgICAgICAgICAgICAgICAg
ICgiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMiIpLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qo
Y29uZmlnPWNvbmZpZyk6CisgICAgICAgICAgICAgICAgZmFjdG9yeSA9IENsaWVudFBlck1lc3Nh
Z2VEZWZsYXRlRmFjdG9yeSgqY29uZmlnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZmFjdG9yeS5nZXRfcmVxdWVzdF9wYXJhbXMoKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3Rf
cHJvY2Vzc19yZXNwb25zZV9wYXJhbXMoc2VsZik6CisgICAgICAgIGZvciBjb25maWcsIHJlc3Bv
bnNlX3BhcmFtcywgcmVzdWx0IGluIFsKKyAgICAgICAgICAgICMgVGVzdCB3aXRob3V0IGFueSBw
YXJhbWV0ZXIKKyAgICAgICAgICAgICgoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwgW10sIChG
YWxzZSwgRmFsc2UsIDE1LCAxNSkpLAorICAgICAgICAgICAgKChGYWxzZSwgRmFsc2UsIE5vbmUs
IE5vbmUpLCBbKCJ1bmtub3duIiwgTm9uZSldLCBJbnZhbGlkUGFyYW1ldGVyTmFtZSksCisgICAg
ICAgICAgICAjIFRlc3Qgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAg
ICAgICBbKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwKKyAgICAgICAgICAg
ICAgICAoVHJ1ZSwgRmFsc2UsIDE1LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
KChUcnVlLCBGYWxzZSwgTm9uZSwgTm9uZSksIFtdLCBOZWdvdGlhdGlvbkVycm9yKSwKKyAgICAg
ICAgICAgICgKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAg
ICAgICAgICAgICAgIFsoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAg
ICAgICAgICAgICAgIChUcnVlLCBGYWxzZSwgMTUsIDE1KSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAg
ICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSAqIDIs
CisgICAgICAgICAgICAgICAgRHVwbGljYXRlUGFyYW1ldGVyLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAor
ICAgICAgICAgICAgICAgIFsoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgIjQyIildLAor
ICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJWYWx1ZSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAjIFRlc3QgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAg
ICAgICAgICBbKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwKKyAgICAgICAg
ICAgICAgICAoRmFsc2UsIFRydWUsIDE1LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9uZSksIFtdLCAoRmFsc2UsIFRydWUsIDE1LCAxNSkp
LAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25l
KV0sCisgICAgICAgICAgICAgICAgKEZhbHNlLCBUcnVlLCAxNSwgMTUpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsIE5vbmUsIE5v
bmUpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9u
ZSldICogMiwKKyAgICAgICAgICAgICAgICBEdXBsaWNhdGVQYXJhbWV0ZXIsCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgTm9uZSwg
Tm9uZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCAi
NDIiKV0sCisgICAgICAgICAgICAgICAgSW52YWxpZFBhcmFtZXRlclZhbHVlLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICMgVGVzdCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAg
ICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICI3IildLAorICAgICAgICAg
ICAgICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAg
ICAgIFsoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAgICAgICAg
KEZhbHNlLCBGYWxzZSwgMTAsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisg
ICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAg
ICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxNiIpXSwKKyAgICAgICAgICAgICAgICBO
ZWdvdGlhdGlvbkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgoRmFsc2UsIEZh
bHNlLCAxMiwgTm9uZSksIFtdLCBOZWdvdGlhdGlvbkVycm9yKSwKKyAgICAgICAgICAgICgKKyAg
ICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAg
Wygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMCIpXSwKKyAgICAgICAgICAgICAgICAoRmFs
c2UsIEZhbHNlLCAxMCwgMTUpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygi
c2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMiIpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2Us
IEZhbHNlLCAxMiwgMTUpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2Vy
dmVyX21heF93aW5kb3dfYml0cyIsICIxMyIpXSwKKyAgICAgICAgICAgICAgICBOZWdvdGlhdGlv
bkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAo
RmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93
aW5kb3dfYml0cyIsICIxMiIpXSAqIDIsCisgICAgICAgICAgICAgICAgRHVwbGljYXRlUGFyYW1l
dGVyLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFs
c2UsIEZhbHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5k
b3dfYml0cyIsICI0MiIpXSwKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUs
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBUZXN0IGNsaWVudF9tYXhfd2luZG93X2Jp
dHMKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBO
b25lKSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEwIild
LAorICAgICAgICAgICAgICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKChGYWxzZSwgRmFsc2UsIE5vbmUsIFRydWUpLCBbXSwgKEZhbHNlLCBGYWxzZSwg
MTUsIDE1KSksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwg
Tm9uZSwgVHJ1ZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIs
ICI3IildLAorICAgICAgICAgICAgICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAgICAgICAgICAp
LAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIFRy
dWUpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0s
CisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTUsIDEwKSwKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgVHJ1
ZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxNiIpXSwK
KyAgICAgICAgICAgICAgICBOZWdvdGlhdGlvbkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICgoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksIFtdLCAoRmFsc2UsIEZhbHNlLCAxNSwg
MTIpKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25l
LCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMCIp
XSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxNSwgMTApLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAx
MiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMiIpXSwK
KyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxNSwgMTIpLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiks
CisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMyIpXSwKKyAg
ICAgICAgICAgICAgICBOZWdvdGlhdGlvbkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAg
ICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMiIpXSAqIDIsCisgICAgICAg
ICAgICAgICAgRHVwbGljYXRlUGFyYW1ldGVyLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAg
ICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICI0MiIpXSwKKyAgICAgICAgICAgICAg
ICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBU
ZXN0IGFsbCBwYXJhbWV0ZXJzIHRvZ2V0aGVyCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgKFRydWUsIFRydWUsIDEyLCAxMiksCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisgICAgICAgICAg
ICAgICAgICAgICgiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAg
ICAgICAgICAgICAgKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEwIiksCisgICAgICAgICAg
ICAgICAgICAgICgiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMCIpLAorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgKFRydWUsIFRydWUsIDEwLCAxMCksCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUs
IFRydWUpLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICgic2Vy
dmVyX21heF93aW5kb3dfYml0cyIsICIxMCIpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVu
dF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgIChUcnVlLCBUcnVlLCAxMCwgMTApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTIsIDEyKSwKKyAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICgic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBO
b25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEy
IiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTIs
IDEyKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYu
c3ViVGVzdChjb25maWc9Y29uZmlnLCByZXNwb25zZV9wYXJhbXM9cmVzcG9uc2VfcGFyYW1zKToK
KyAgICAgICAgICAgICAgICBmYWN0b3J5ID0gQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5
KCpjb25maWcpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIHR5cGUpIGFu
ZCBpc3N1YmNsYXNzKHJlc3VsdCwgRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhyZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZmFj
dG9yeS5wcm9jZXNzX3Jlc3BvbnNlX3BhcmFtcyhyZXNwb25zZV9wYXJhbXMsIFtdKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGZhY3Rvcnku
cHJvY2Vzc19yZXNwb25zZV9wYXJhbXMocmVzcG9uc2VfcGFyYW1zLCBbXSkKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQgPSBQZXJNZXNzYWdlRGVmbGF0ZSgqcmVzdWx0KQorICAgICAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEV4dGVuc2lvbkVxdWFsKGV4dGVuc2lvbiwgZXhwZWN0ZWQp
CisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX3Jlc3BvbnNlX3BhcmFtc19kZWR1cGxpY2F0aW9uKHNl
bGYpOgorICAgICAgICBmYWN0b3J5ID0gQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KEZh
bHNlLCBGYWxzZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhO
ZWdvdGlhdGlvbkVycm9yKToKKyAgICAgICAgICAgIGZhY3RvcnkucHJvY2Vzc19yZXNwb25zZV9w
YXJhbXMoCisgICAgICAgICAgICAgICAgW10sIFtQZXJNZXNzYWdlRGVmbGF0ZShGYWxzZSwgRmFs
c2UsIDE1LCAxNSldCisgICAgICAgICAgICApCisKKworY2xhc3MgU2VydmVyUGVyTWVzc2FnZURl
ZmxhdGVGYWN0b3J5VGVzdHModW5pdHRlc3QuVGVzdENhc2UsIEV4dGVuc2lvblRlc3RzTWl4aW4p
OgorICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIGFzc2VydCBTZXJ2ZXJQZXJNZXNz
YWdlRGVmbGF0ZUZhY3RvcnkubmFtZSA9PSAicGVybWVzc2FnZS1kZWZsYXRlIgorCisgICAgZGVm
IHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgZm9yIGNvbmZpZyBpbiBbCisgICAgICAgICAgICAo
RmFsc2UsIEZhbHNlLCA4LCBOb25lKSwgICMgc2VydmVyX21heF93aW5kb3dfYml0cyDiiaUgOAor
ICAgICAgICAgICAgKEZhbHNlLCBUcnVlLCAxNSwgTm9uZSksICAjIHNlcnZlcl9tYXhfd2luZG93
X2JpdHMg4omkIDE1CisgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIDgpLCAgIyBjbGll
bnRfbWF4X3dpbmRvd19iaXRzIOKJpSA4CisgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgTm9uZSwg
MTUpLCAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIOKJpCAxNQorICAgICAgICAgICAgKEZhbHNl
LCBGYWxzZSwgTm9uZSwgTm9uZSwgeyJtZW1MZXZlbCI6IDR9KSwKKyAgICAgICAgXToKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvbmZpZz1jb25maWcpOgorICAgICAgICAgICAgICAg
ICMgVGhpcyBkb2VzIG5vdCByYWlzZSBhbiBleGNlcHRpb24uCisgICAgICAgICAgICAgICAgU2Vy
dmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KCpjb25maWcpCisKKyAgICBkZWYgdGVzdF9pbml0
X2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgY29uZmlnIGluIFsKKyAgICAgICAgICAgIChGYWxz
ZSwgRmFsc2UsIDcsIDgpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIDwgOAorICAgICAgICAg
ICAgKEZhbHNlLCBUcnVlLCA4LCA3KSwgICMgY2xpZW50X21heF93aW5kb3dfYml0cyA8IDgKKyAg
ICAgICAgICAgIChUcnVlLCBGYWxzZSwgMTYsIDE1KSwgICMgc2VydmVyX21heF93aW5kb3dfYml0
cyA+IDE1CisgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTUsIDE2KSwgICMgY2xpZW50X21heF93
aW5kb3dfYml0cyA+IDE1CisgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBUcnVlKSwg
ICMgY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgVHJ1
ZSwgTm9uZSksICAjIHNlcnZlcl9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgIChGYWxzZSwg
RmFsc2UsIE5vbmUsIE5vbmUsIHsid2JpdHMiOiAxMX0pLAorICAgICAgICBdOgorICAgICAgICAg
ICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uZmlnPWNvbmZpZyk6CisgICAgICAgICAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgU2Vy
dmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KCpjb25maWcpCisKKyAgICBkZWYgdGVzdF9wcm9j
ZXNzX3JlcXVlc3RfcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFBhcmFtZXRlcnMgaW4gcmVzdWx0
IGFwcGVhciBzd2FwcGVkIHZzLiBjb25maWcgYmVjYXVzZSB0aGUgb3JkZXIgaXMKKyAgICAgICAg
IyAocmVtb3RlLCBsb2NhbCkgdnMuIChzZXJ2ZXIsIGNsaWVudCkuCisgICAgICAgIGZvciBjb25m
aWcsIHJlcXVlc3RfcGFyYW1zLCByZXNwb25zZV9wYXJhbXMsIHJlc3VsdCBpbiBbCisgICAgICAg
ICAgICAjIFRlc3Qgd2l0aG91dCBhbnkgcGFyYW1ldGVyCisgICAgICAgICAgICAoKEZhbHNlLCBG
YWxzZSwgTm9uZSwgTm9uZSksIFtdLCBbXSwgKEZhbHNlLCBGYWxzZSwgMTUsIDE1KSksCisgICAg
ICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisg
ICAgICAgICAgICAgICAgWygidW5rbm93biIsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICBOb25l
LAorICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJOYW1lLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICMgVGVzdCBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcgorICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAg
ICAgICAgICAgIFsoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAgICAg
ICAgICAgICAgIFsoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAgICAg
ICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgMTUsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAg
ICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciIsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsIDE1LCAxNSksCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChUcnVlLCBGYWxz
ZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIiLCBOb25lKV0sCisgICAgICAgICAgICAgICAgWygic2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIiLCBOb25lKV0sCisgICAgICAgICAgICAgICAgKEZhbHNlLCBUcnVlLCAxNSwgMTUpLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFs
c2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyIiwgTm9uZSldICogMiwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAg
ICAgIER1cGxpY2F0ZVBhcmFtZXRlciwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisg
ICAgICAgICAgICAgICAgKFRydWUsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAg
ICBbKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsICI0MiIpXSwKKyAgICAgICAgICAgICAg
ICBOb25lLAorICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJWYWx1ZSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAjIFRlc3QgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwK
KyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwK
KyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwg
ICMgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIDE1LCAxNSks
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwg
VHJ1ZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAg
WygiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKV0sCisgICAgICAgICAgICAgICAg
KFRydWUsIEZhbHNlLCAxNSwgMTUpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAg
ICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAg
IFsoImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAgICAgICAgICAgICAg
IFsoImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLCAgIyBkb2Vzbid0IG1hdHRl
cgorICAgICAgICAgICAgICAgIChUcnVlLCBGYWxzZSwgMTUsIDE1KSwKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBUcnVlLCBOb25lLCBOb25l
KSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUp
XSAqIDIsCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBEdXBsaWNhdGVQ
YXJhbWV0ZXIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg
IChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXIiLCAiNDIiKV0sCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAg
ICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgIyBUZXN0IHNlcnZlcl9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBb
KCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjciKV0sCisgICAgICAgICAgICAgICAgTm9uZSwK
KyAgICAgICAgICAgICAgICBOZWdvdGlhdGlvbkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAg
ICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEwIildLAorICAgICAg
ICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAg
ICAgICAgKEZhbHNlLCBGYWxzZSwgMTUsIDEwKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAg
ICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxNiIpXSwKKyAgICAgICAgICAg
ICAgICBOb25lLAorICAgICAgICAgICAgICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEyLCBO
b25lKSwKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzIiwgIjEyIildLAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDE1
LCAxMiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChG
YWxzZSwgRmFsc2UsIDEyLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dp
bmRvd19iaXRzIiwgIjEwIildLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93
X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTUsIDEwKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBG
YWxzZSwgMTIsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93X2Jp
dHMiLCAiMTIiKV0sCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIs
ICIxMiIpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxNSwgMTIpLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAx
MiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIx
MyIpXSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIild
LAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDE1LCAxMiksCisgICAgICAgICAgICAp
LAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEyLCBOb25l
KSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIildICog
MiwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgIER1cGxpY2F0ZVBhcmFt
ZXRlciwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZh
bHNlLCBGYWxzZSwgMTIsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2lu
ZG93X2JpdHMiLCAiNDIiKV0sCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAg
ICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBU
ZXN0IGNsaWVudF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRf
bWF4X3dpbmRvd19iaXRzIiwgTm9uZSldLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAg
ICAgICAgIChGYWxzZSwgRmFsc2UsIDE1LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAg
ICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiNyIpXSwKKyAgICAgICAgICAg
ICAgICBOb25lLAorICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJWYWx1ZSwKKyAgICAg
ICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwg
Tm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIs
ICIxMCIpXSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEw
IildLCAgIyBkb2Vzbid0IG1hdHRlcgorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEw
LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChG
YWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhf
d2luZG93X2JpdHMiLCAiMTYiKV0sCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAg
ICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
KChGYWxzZSwgRmFsc2UsIE5vbmUsIDEyKSwgW10sIE5vbmUsIE5lZ290aWF0aW9uRXJyb3IpLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIDEyKSwK
KyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgTm9uZSldLAorICAg
ICAgICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTIiKV0sCisgICAgICAg
ICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTIsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgMTIpLAorICAgICAg
ICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAg
ICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMCIpXSwKKyAgICAgICAgICAgICAg
ICAoRmFsc2UsIEZhbHNlLCAxMCwgMTUpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAg
ICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMiIpXSwKKyAgICAgICAgICAgICAgICBb
KCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEyIildLCAgIyBkb2Vzbid0IG1hdHRlcgorICAg
ICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEyLCAxNSksCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIDEyKSwKKyAg
ICAgICAgICAgICAgICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEzIildLAorICAgICAg
ICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTIiKV0sICAjIGRvZXNuJ3Qg
bWF0dGVyCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTIsIDE1KSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9u
ZSwgMTIpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTIi
KV0gKiAyLAorICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgRHVwbGljYXRl
UGFyYW1ldGVyLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21h
eF93aW5kb3dfYml0cyIsICI0MiIpXSwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAg
ICAgICAgIEludmFsaWRQYXJhbWV0ZXJWYWx1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICAjICMgVGVzdCBhbGwgcGFyYW1ldGVycyB0b2dldGhlcgorICAgICAgICAgICAgKAorICAgICAg
ICAgICAgICAgIChUcnVlLCBUcnVlLCAxMiwgMTIpLAorICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAg
ICAgICAgICAgICAgICAgICAoImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisg
ICAgICAgICAgICAgICAgICAgICgic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMCIpLAorICAg
ICAgICAgICAgICAgICAgICAoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwKKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgKCJz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAo
ImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAg
ICgic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMCIpLAorICAgICAgICAgICAgICAgICAgICAo
ImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwKKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgIChUcnVlLCBUcnVlLCAxMCwgMTApLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICgic2VydmVyX25vX2NvbnRleHRf
dGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjbGllbnRfbm9fY29udGV4
dF90YWtlb3ZlciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoInNlcnZlcl9tYXhfd2lu
ZG93X2JpdHMiLCAiMTAiKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjbGllbnRfbWF4X3dpbmRv
d19iaXRzIiwgIjEwIiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICgic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwK
KyAgICAgICAgICAgICAgICAgICAgKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUp
LAorICAgICAgICAgICAgICAgICAgICAoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwK
KyAgICAgICAgICAgICAgICAgICAgKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEwIiksCisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTAsIDEwKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIFRy
dWUsIDEyLCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIs
IE5vbmUpXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICgic2VydmVy
X25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoInNl
cnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTIiKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjbGll
bnRfbWF4X3dpbmRvd19iaXRzIiwgIjEyIiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTIsIDEyKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF06
CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgKKyAgICAgICAgICAgICAgICBjb25maWc9
Y29uZmlnLAorICAgICAgICAgICAgICAgIHJlcXVlc3RfcGFyYW1zPXJlcXVlc3RfcGFyYW1zLAor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlX3BhcmFtcz1yZXNwb25zZV9wYXJhbXMsCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIGZhY3RvcnkgPSBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0
ZUZhY3RvcnkoKmNvbmZpZykKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwg
dHlwZSkgYW5kIGlzc3ViY2xhc3MocmVzdWx0LCBFeGNlcHRpb24pOgorICAgICAgICAgICAgICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlc3VsdCk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBmYWN0b3J5LnByb2Nlc3NfcmVxdWVzdF9wYXJhbXMocmVxdWVzdF9wYXJhbXMsIFtdKQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgZXh0ZW5z
aW9uID0gZmFjdG9yeS5wcm9jZXNzX3JlcXVlc3RfcGFyYW1zKAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdF9wYXJhbXMsIFtdCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMsIHJlc3BvbnNlX3BhcmFtcykKKyAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBQZXJNZXNzYWdlRGVmbGF0ZSgqcmVzdWx0KQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEV4dGVuc2lvbkVxdWFsKGV4dGVuc2lvbiwg
ZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX3Jlc3BvbnNlX3BhcmFtc19kZWR1cGxp
Y2F0aW9uKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gU2VydmVyUGVyTWVzc2FnZURlZmxhdGVG
YWN0b3J5KEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhOZWdvdGlhdGlvbkVycm9yKToKKyAgICAgICAgICAgIGZhY3RvcnkucHJvY2Vzc19y
ZXF1ZXN0X3BhcmFtcygKKyAgICAgICAgICAgICAgICBbXSwgW1Blck1lc3NhZ2VEZWZsYXRlKEZh
bHNlLCBGYWxzZSwgMTUsIDE1KV0KKyAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy90ZXN0cy90ZXN0X2F1dGgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9h
dXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTdhNDQ4NWEw
ZmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfYXV0aC5w
eQpAQCAtMCwwICsxLDEzOSBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdXJsbGliLmVycm9y
CisKK2Zyb20gd2Vic29ja2V0cy5hdXRoIGltcG9ydCAqCitmcm9tIHdlYnNvY2tldHMuYXV0aCBp
bXBvcnQgaXNfY3JlZGVudGlhbHMKK2Zyb20gd2Vic29ja2V0cy5leGNlcHRpb25zIGltcG9ydCBJ
bnZhbGlkU3RhdHVzQ29kZQorZnJvbSB3ZWJzb2NrZXRzLmhlYWRlcnMgaW1wb3J0IGJ1aWxkX2F1
dGhvcml6YXRpb25fYmFzaWMKKworZnJvbSAudGVzdF9jbGllbnRfc2VydmVyIGltcG9ydCBDbGll
bnRTZXJ2ZXJUZXN0c01peGluLCB3aXRoX2NsaWVudCwgd2l0aF9zZXJ2ZXIKK2Zyb20gLnV0aWxz
IGltcG9ydCBBc3luY2lvVGVzdENhc2UKKworCitjbGFzcyBBdXRoVGVzdHModW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiB0ZXN0X2lzX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydFRydWUoaXNfY3JlZGVudGlhbHMoKCJ1c2VybmFtZSIsICJwYXNzd29yZCIpKSkKKwor
ICAgIGRlZiB0ZXN0X2lzX25vdF9jcmVkZW50aWFscyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShpc19jcmVkZW50aWFscyhOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShp
c19jcmVkZW50aWFscygidXNlcm5hbWUiKSkKKworCitjbGFzcyBBdXRoQ2xpZW50U2VydmVyVGVz
dHMoQ2xpZW50U2VydmVyVGVzdHNNaXhpbiwgQXN5bmNpb1Rlc3RDYXNlKToKKworICAgIGNyZWF0
ZV9wcm90b2NvbCA9IGJhc2ljX2F1dGhfcHJvdG9jb2xfZmFjdG9yeSgKKyAgICAgICAgcmVhbG09
ImF1dGgtdGVzdHMiLCBjcmVkZW50aWFscz0oImhlbGxvIiwgImlsb3ZleW91IikKKyAgICApCisK
KyAgICBAd2l0aF9zZXJ2ZXIoY3JlYXRlX3Byb3RvY29sPWNyZWF0ZV9wcm90b2NvbCkKKyAgICBA
d2l0aF9jbGllbnQodXNlcl9pbmZvPSgiaGVsbG8iLCAiaWxvdmV5b3UiKSkKKyAgICBkZWYgdGVz
dF9iYXNpY19hdXRoKHNlbGYpOgorICAgICAgICByZXFfaGVhZGVycyA9IHNlbGYuY2xpZW50LnJl
cXVlc3RfaGVhZGVycworICAgICAgICByZXNwX2hlYWRlcnMgPSBzZWxmLmNsaWVudC5yZXNwb25z
ZV9oZWFkZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxX2hlYWRlcnNbIkF1dGhvcml6
YXRpb24iXSwgIkJhc2ljIGFHVnNiRzg2YVd4dmRtVjViM1U9IikKKyAgICAgICAgc2VsZi5hc3Nl
cnROb3RJbigiV1dXLUF1dGhlbnRpY2F0ZSIsIHJlc3BfaGVhZGVycykKKworICAgICAgICBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnNlbmQoIkhlbGxvISIpKQorICAg
ICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKwor
ICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfc2VydmVyX25vX2NyZWRlbnRpYWxzKHNlbGYpOgorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgcmFpc2VkOgorICAgICAg
ICAgICAgYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0b3J5KHJlYWxtPSJhdXRoLXRlc3RzIiwgY3Jl
ZGVudGlhbHM9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0
cihyYWlzZWQuZXhjZXB0aW9uKSwgInByb3ZpZGUgZWl0aGVyIGNyZWRlbnRpYWxzIG9yIGNoZWNr
X2NyZWRlbnRpYWxzIgorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYXNpY19hdXRoX3NlcnZl
cl9iYWRfY3JlZGVudGlhbHMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VHlwZUVycm9yKSBhcyByYWlzZWQ6CisgICAgICAgICAgICBiYXNpY19hdXRoX3Byb3RvY29sX2Zh
Y3RvcnkocmVhbG09ImF1dGgtdGVzdHMiLCBjcmVkZW50aWFscz00MikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHIocmFpc2VkLmV4Y2VwdGlvbiksICJpbnZhbGlkIGNyZWRlbnRpYWxzIGFy
Z3VtZW50OiA0MiIpCisKKyAgICBjcmVhdGVfcHJvdG9jb2xfbXVsdGlwbGVfY3JlZGVudGlhbHMg
PSBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnkoCisgICAgICAgIHJlYWxtPSJhdXRoLXRlc3Rz
IiwKKyAgICAgICAgY3JlZGVudGlhbHM9WygiaGVsbG8iLCAiaWxvdmV5b3UiKSwgKCJnb29kYnll
IiwgInN0aWxsbG92ZXUiKV0sCisgICAgKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90
b2NvbD1jcmVhdGVfcHJvdG9jb2xfbXVsdGlwbGVfY3JlZGVudGlhbHMpCisgICAgQHdpdGhfY2xp
ZW50KHVzZXJfaW5mbz0oImhlbGxvIiwgImlsb3ZleW91IikpCisgICAgZGVmIHRlc3RfYmFzaWNf
YXV0aF9zZXJ2ZXJfbXVsdGlwbGVfY3JlZGVudGlhbHMoc2VsZik6CisgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorCisgICAg
ZGVmIHRlc3RfYmFzaWNfYXV0aF9iYWRfbXVsdGlwbGVfY3JlZGVudGlhbHMoc2VsZik6CisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyByYWlzZWQ6CisgICAgICAg
ICAgICBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnkoCisgICAgICAgICAgICAgICAgcmVhbG09
ImF1dGgtdGVzdHMiLCBjcmVkZW50aWFscz1bKCJoZWxsbyIsICJpbG92ZXlvdSIpLCA0Ml0KKyAg
ICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihy
YWlzZWQuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICJpbnZhbGlkIGNyZWRlbnRpYWxzIGFyZ3Vt
ZW50OiBbKCdoZWxsbycsICdpbG92ZXlvdScpLCA0Ml0iLAorICAgICAgICApCisKKyAgICBhc3lu
YyBkZWYgY2hlY2tfY3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKToKKyAgICAgICAgcmV0
dXJuIHBhc3N3b3JkID09ICJpbG92ZXlvdSIKKworICAgIGNyZWF0ZV9wcm90b2NvbF9jaGVja19j
cmVkZW50aWFscyA9IGJhc2ljX2F1dGhfcHJvdG9jb2xfZmFjdG9yeSgKKyAgICAgICAgcmVhbG09
ImF1dGgtdGVzdHMiLCBjaGVja19jcmVkZW50aWFscz1jaGVja19jcmVkZW50aWFscworICAgICkK
KworICAgIEB3aXRoX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sX2NoZWNr
X2NyZWRlbnRpYWxzKQorICAgIEB3aXRoX2NsaWVudCh1c2VyX2luZm89KCJoZWxsbyIsICJpbG92
ZXlvdSIpKQorICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfY2hlY2tfY3JlZGVudGlhbHMoc2VsZik6
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgi
SGVsbG8hIikpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGll
bnQucmVjdigpKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJv
dG9jb2wpCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9taXNzaW5nX2NyZWRlbnRpYWxzKHNlbGYp
OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRTdGF0dXNDb2RlKSBhcyBy
YWlzZWQ6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5zdGF0dXNfY29kZSwgNDAxKQorCisgICAgQHdpdGhf
c2VydmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJvdG9jb2wpCisgICAgZGVmIHRlc3RfYmFz
aWNfYXV0aF9taXNzaW5nX2NyZWRlbnRpYWxzX2RldGFpbHMoc2VsZik6CisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLkhUVFBFcnJvcikgYXMgcmFpc2VkOgorICAg
ICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm1ha2VfaHR0cF9yZXF1
ZXN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5jb2RlLCA0
MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByYWlzZWQuZXhjZXB0
aW9uLmhlYWRlcnNbIldXVy1BdXRoZW50aWNhdGUiXSwKKyAgICAgICAgICAgICdCYXNpYyByZWFs
bT0iYXV0aC10ZXN0cyIsIGNoYXJzZXQ9IlVURi04IicsCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyYWlzZWQuZXhjZXB0aW9uLnJlYWQoKS5kZWNvZGUoKSwgIk1pc3Npbmcg
Y3JlZGVudGlhbHNcbiIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoY3JlYXRlX3Byb3RvY29sPWNyZWF0
ZV9wcm90b2NvbCkKKyAgICBkZWYgdGVzdF9iYXNpY19hdXRoX3Vuc3VwcG9ydGVkX2NyZWRlbnRp
YWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRTdGF0dXND
b2RlKSBhcyByYWlzZWQ6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudChleHRyYV9oZWFk
ZXJzPXsiQXV0aG9yaXphdGlvbiI6ICJEaWdlc3QgLi4uIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5zdGF0dXNfY29kZSwgNDAxKQorCisgICAgQHdpdGhfc2Vy
dmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJvdG9jb2wpCisgICAgZGVmIHRlc3RfYmFzaWNf
YXV0aF91bnN1cHBvcnRlZF9jcmVkZW50aWFsc19kZXRhaWxzKHNlbGYpOgorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5IVFRQRXJyb3IpIGFzIHJhaXNlZDoKKyAg
ICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICAgICAg
c2VsZi5tYWtlX2h0dHBfcmVxdWVzdChoZWFkZXJzPXsiQXV0aG9yaXphdGlvbiI6ICJEaWdlc3Qg
Li4uIn0pCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2VkLmV4
Y2VwdGlvbi5jb2RlLCA0MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICByYWlzZWQuZXhjZXB0aW9uLmhlYWRlcnNbIldXVy1BdXRoZW50aWNhdGUiXSwKKyAgICAgICAg
ICAgICdCYXNpYyByZWFsbT0iYXV0aC10ZXN0cyIsIGNoYXJzZXQ9IlVURi04IicsCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYWlzZWQuZXhjZXB0aW9uLnJlYWQoKS5kZWNv
ZGUoKSwgIlVuc3VwcG9ydGVkIGNyZWRlbnRpYWxzXG4iKQorCisgICAgQHdpdGhfc2VydmVyKGNy
ZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJvdG9jb2wpCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9p
bnZhbGlkX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRTdGF0dXNDb2RlKSBhcyByYWlzZWQ6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2Ns
aWVudCh1c2VyX2luZm89KCJoZWxsbyIsICJpaGF0ZXlvdSIpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJhaXNlZC5leGNlcHRpb24uc3RhdHVzX2NvZGUsIDQwMSkKKworICAgIEB3aXRoX3Nl
cnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sKQorICAgIGRlZiB0ZXN0X2Jhc2lj
X2F1dGhfaW52YWxpZF9jcmVkZW50aWFsc19kZXRhaWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5IVFRQRXJyb3IpIGFzIHJhaXNlZDoKKyAgICAg
ICAgICAgIGF1dGhvcml6YXRpb24gPSBidWlsZF9hdXRob3JpemF0aW9uX2Jhc2ljKCJoZWxsbyIs
ICJpaGF0ZXlvdSIpCisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAor
ICAgICAgICAgICAgICAgIHNlbGYubWFrZV9odHRwX3JlcXVlc3QoaGVhZGVycz17IkF1dGhvcml6
YXRpb24iOiBhdXRob3JpemF0aW9ufSkKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyYWlzZWQuZXhjZXB0aW9uLmNvZGUsIDQwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIHJhaXNlZC5leGNlcHRpb24uaGVhZGVyc1siV1dXLUF1dGhlbnRp
Y2F0ZSJdLAorICAgICAgICAgICAgJ0Jhc2ljIHJlYWxtPSJhdXRoLXRlc3RzIiwgY2hhcnNldD0i
VVRGLTgiJywKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNl
cHRpb24ucmVhZCgpLmRlY29kZSgpLCAiSW52YWxpZCBjcmVkZW50aWFsc1xuIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2NsaWVudF9zZXJ2ZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvdGVzdHMvdGVzdF9jbGllbnRfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMzU5MTM2NjZjNTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfY2xpZW50X3NlcnZlci5weQpAQCAtMCwwICsxLDE1NDYg
QEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGZ1bmN0b29scwor
aW1wb3J0IGh0dHAKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc29ja2V0
CitpbXBvcnQgc3NsCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVu
aXR0ZXN0Lm1vY2sKK2ltcG9ydCB1cmxsaWIuZXJyb3IKK2ltcG9ydCB1cmxsaWIucmVxdWVzdAor
aW1wb3J0IHdhcm5pbmdzCisKK2Zyb20gd2Vic29ja2V0cy5jbGllbnQgaW1wb3J0ICoKK2Zyb20g
d2Vic29ja2V0cy5leGNlcHRpb25zIGltcG9ydCAoCisgICAgQ29ubmVjdGlvbkNsb3NlZCwKKyAg
ICBJbnZhbGlkSGFuZHNoYWtlLAorICAgIEludmFsaWRIZWFkZXIsCisgICAgSW52YWxpZFN0YXR1
c0NvZGUsCisgICAgTmVnb3RpYXRpb25FcnJvciwKKykKK2Zyb20gd2Vic29ja2V0cy5leHRlbnNp
b25zLnBlcm1lc3NhZ2VfZGVmbGF0ZSBpbXBvcnQgKAorICAgIENsaWVudFBlck1lc3NhZ2VEZWZs
YXRlRmFjdG9yeSwKKyAgICBQZXJNZXNzYWdlRGVmbGF0ZSwKKyAgICBTZXJ2ZXJQZXJNZXNzYWdl
RGVmbGF0ZUZhY3RvcnksCispCitmcm9tIHdlYnNvY2tldHMuaGFuZHNoYWtlIGltcG9ydCBidWls
ZF9yZXNwb25zZQorZnJvbSB3ZWJzb2NrZXRzLmh0dHAgaW1wb3J0IFVTRVJfQUdFTlQsIEhlYWRl
cnMsIHJlYWRfcmVzcG9uc2UKK2Zyb20gd2Vic29ja2V0cy5wcm90b2NvbCBpbXBvcnQgU3RhdGUK
K2Zyb20gd2Vic29ja2V0cy5zZXJ2ZXIgaW1wb3J0ICoKK2Zyb20gd2Vic29ja2V0cy51cmkgaW1w
b3J0IHBhcnNlX3VyaQorCitmcm9tIC50ZXN0X3Byb3RvY29sIGltcG9ydCBNUworZnJvbSAudXRp
bHMgaW1wb3J0IEFzeW5jaW9UZXN0Q2FzZQorCisKKyMgR2VuZXJhdGUgVExTIGNlcnRpZmljYXRl
IHdpdGg6CisjICQgb3BlbnNzbCByZXEgLXg1MDkgLWNvbmZpZyB0ZXN0X2xvY2FsaG9zdC5jbmYg
LWRheXMgMTUzNDAgLW5ld2tleSByc2E6MjA0OCBcCisjICAgICAgIC1vdXQgdGVzdF9sb2NhbGhv
c3QuY3J0IC1rZXlvdXQgdGVzdF9sb2NhbGhvc3Qua2V5CisjICQgY2F0IHRlc3RfbG9jYWxob3N0
LmtleSB0ZXN0X2xvY2FsaG9zdC5jcnQgPiB0ZXN0X2xvY2FsaG9zdC5wZW0KKyMgJCBybSB0ZXN0
X2xvY2FsaG9zdC5rZXkgdGVzdF9sb2NhbGhvc3QuY3J0CisKK3Rlc3RjZXJ0ID0gYnl0ZXMocGF0
aGxpYi5QYXRoKF9fZmlsZV9fKS53aXRoX25hbWUoInRlc3RfbG9jYWxob3N0LnBlbSIpKQorCisK
K2FzeW5jIGRlZiBoYW5kbGVyKHdzLCBwYXRoKToKKyAgICBpZiBwYXRoID09ICIvZGVwcmVjYXRl
ZF9hdHRyaWJ1dGVzIjoKKyAgICAgICAgYXdhaXQgd3MucmVjdigpICAjIGRlbGF5IHRoYXQgYWxs
b3dzIGNhdGNoaW5nIHdhcm5pbmdzCisgICAgICAgIGF3YWl0IHdzLnNlbmQocmVwcigod3MuaG9z
dCwgd3MucG9ydCwgd3Muc2VjdXJlKSkpCisgICAgZWxpZiBwYXRoID09ICIvY2xvc2VfdGltZW91
dCI6CisgICAgICAgIGF3YWl0IHdzLnNlbmQocmVwcih3cy5jbG9zZV90aW1lb3V0KSkKKyAgICBl
bGlmIHBhdGggPT0gIi9wYXRoIjoKKyAgICAgICAgYXdhaXQgd3Muc2VuZChzdHIod3MucGF0aCkp
CisgICAgZWxpZiBwYXRoID09ICIvaGVhZGVycyI6CisgICAgICAgIGF3YWl0IHdzLnNlbmQocmVw
cih3cy5yZXF1ZXN0X2hlYWRlcnMpKQorICAgICAgICBhd2FpdCB3cy5zZW5kKHJlcHIod3MucmVz
cG9uc2VfaGVhZGVycykpCisgICAgZWxpZiBwYXRoID09ICIvZXh0ZW5zaW9ucyI6CisgICAgICAg
IGF3YWl0IHdzLnNlbmQocmVwcih3cy5leHRlbnNpb25zKSkKKyAgICBlbGlmIHBhdGggPT0gIi9z
dWJwcm90b2NvbCI6CisgICAgICAgIGF3YWl0IHdzLnNlbmQocmVwcih3cy5zdWJwcm90b2NvbCkp
CisgICAgZWxpZiBwYXRoID09ICIvc2xvd19zdG9wIjoKKyAgICAgICAgYXdhaXQgd3Mud2FpdF9j
bG9zZWQoKQorICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDIgKiBNUykKKyAgICBlbHNlOgor
ICAgICAgICBhd2FpdCB3cy5zZW5kKChhd2FpdCB3cy5yZWN2KCkpKQorCisKK0Bjb250ZXh0bGli
LmNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcF90ZXN0X3NlcnZlcih0ZXN0LCAqKmt3YXJncyk6Cisg
ICAgdGVzdC5zdGFydF9zZXJ2ZXIoKiprd2FyZ3MpCisgICAgdHJ5OgorICAgICAgICB5aWVsZAor
ICAgIGZpbmFsbHk6CisgICAgICAgIHRlc3Quc3RvcF9zZXJ2ZXIoKQorCisKK0Bjb250ZXh0bGli
LmNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcF90ZXN0X3JlZGlyZWN0aW5nX3NlcnZlcigKKyAgICB0
ZXN0LCBzdGF0dXMsIGluY2x1ZGVfbG9jYXRpb249VHJ1ZSwgZm9yY2VfaW5zZWN1cmU9RmFsc2UK
Kyk6CisgICAgdGVzdC5zdGFydF9yZWRpcmVjdGluZ19zZXJ2ZXIoc3RhdHVzLCBpbmNsdWRlX2xv
Y2F0aW9uLCBmb3JjZV9pbnNlY3VyZSkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmlu
YWxseToKKyAgICAgICAgdGVzdC5zdG9wX3JlZGlyZWN0aW5nX3NlcnZlcigpCisKKworQGNvbnRl
eHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiB0ZW1wX3Rlc3RfY2xpZW50KHRlc3QsICphcmdzLCAq
Kmt3YXJncyk6CisgICAgdGVzdC5zdGFydF9jbGllbnQoKmFyZ3MsICoqa3dhcmdzKQorICAgIHRy
eToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICB0ZXN0LnN0b3BfY2xpZW50
KCkKKworCitkZWYgd2l0aF9tYW5hZ2VyKG1hbmFnZXIsICphcmdzLCAqKmt3YXJncyk6CisgICAg
IiIiCisgICAgUmV0dXJuIGEgZGVjb3JhdG9yIHRoYXQgd3JhcHMgYSBmdW5jdGlvbiB3aXRoIGEg
Y29udGV4dCBtYW5hZ2VyLgorCisgICAgIiIiCisKKyAgICBkZWYgZGVjb3JhdGUoZnVuYyk6Cisg
ICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgZGVmIF9kZWNvcmF0ZShzZWxm
LCAqX2FyZ3MsICoqX2t3YXJncyk6CisgICAgICAgICAgICB3aXRoIG1hbmFnZXIoc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyhzZWxmLCAqX2FyZ3Ms
ICoqX2t3YXJncykKKworICAgICAgICByZXR1cm4gX2RlY29yYXRlCisKKyAgICByZXR1cm4gZGVj
b3JhdGUKKworCitkZWYgd2l0aF9zZXJ2ZXIoKiprd2FyZ3MpOgorICAgICIiIgorICAgIFJldHVy
biBhIGRlY29yYXRvciBmb3IgVGVzdENhc2UgbWV0aG9kcyB0aGF0IHN0YXJ0cyBhbmQgc3RvcHMg
YSBzZXJ2ZXIuCisKKyAgICAiIiIKKyAgICByZXR1cm4gd2l0aF9tYW5hZ2VyKHRlbXBfdGVzdF9z
ZXJ2ZXIsICoqa3dhcmdzKQorCisKK2RlZiB3aXRoX2NsaWVudCgqYXJncywgKiprd2FyZ3MpOgor
ICAgICIiIgorICAgIFJldHVybiBhIGRlY29yYXRvciBmb3IgVGVzdENhc2UgbWV0aG9kcyB0aGF0
IHN0YXJ0cyBhbmQgc3RvcHMgYSBjbGllbnQuCisKKyAgICAiIiIKKyAgICByZXR1cm4gd2l0aF9t
YW5hZ2VyKHRlbXBfdGVzdF9jbGllbnQsICphcmdzLCAqKmt3YXJncykKKworCitkZWYgZ2V0X3Nl
cnZlcl91cmkoc2VydmVyLCBzZWN1cmU9RmFsc2UsIHJlc291cmNlX25hbWU9Ii8iLCB1c2VyX2lu
Zm89Tm9uZSk6CisgICAgIiIiCisgICAgUmV0dXJuIGEgV2ViU29ja2V0IFVSSSBmb3IgY29ubmVj
dGluZyB0byB0aGUgZ2l2ZW4gc2VydmVyLgorCisgICAgIiIiCisgICAgcHJvdG8gPSAid3NzIiBp
ZiBzZWN1cmUgZWxzZSAid3MiCisKKyAgICB1c2VyX2luZm8gPSAiOiIuam9pbih1c2VyX2luZm8p
ICsgIkAiIGlmIHVzZXJfaW5mbyBlbHNlICIiCisKKyAgICAjIFBpY2sgYSByYW5kb20gc29ja2V0
IGluIG9yZGVyIHRvIHRlc3QgYm90aCBJUHY0IGFuZCBJUHY2IG9uIHN5c3RlbXMKKyAgICAjIHdo
ZXJlIGJvdGggYXJlIGF2YWlsYWJsZS4gUmFuZG9taXppbmcgdGVzdHMgaXMgdXN1YWxseSBhIGJh
ZCBpZGVhLiBJZgorICAgICMgbmVlZGVkLCBlaXRoZXIgdXNlIHRoZSBmaXJzdCBzb2NrZXQsIG9y
IHRlc3Qgc2VwYXJhdGVseSBJUHY0IGFuZCBJUHY2LgorICAgIHNlcnZlcl9zb2NrZXQgPSByYW5k
b20uY2hvaWNlKHNlcnZlci5zb2NrZXRzKQorCisgICAgaWYgc2VydmVyX3NvY2tldC5mYW1pbHkg
PT0gc29ja2V0LkFGX0lORVQ2OiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgIGhvc3QsIHBv
cnQgPSBzZXJ2ZXJfc29ja2V0LmdldHNvY2tuYW1lKClbOjJdICAjIChubyBJUHY2IG9uIENJKQor
ICAgICAgICBob3N0ID0gZiJbe2hvc3R9XSIKKyAgICBlbGlmIHNlcnZlcl9zb2NrZXQuZmFtaWx5
ID09IHNvY2tldC5BRl9JTkVUOgorICAgICAgICBob3N0LCBwb3J0ID0gc2VydmVyX3NvY2tldC5n
ZXRzb2NrbmFtZSgpCisgICAgZWxzZTogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCJleHBlY3RlZCBhbiBJUHY2LCBJUHY0LCBvciBVbml4IHNvY2tldCIpCisK
KyAgICByZXR1cm4gZiJ7cHJvdG99Oi8ve3VzZXJfaW5mb317aG9zdH06e3BvcnR9e3Jlc291cmNl
X25hbWV9IgorCisKK2NsYXNzIFVuYXV0aG9yaXplZFNlcnZlclByb3RvY29sKFdlYlNvY2tldFNl
cnZlclByb3RvY29sKToKKyAgICBhc3luYyBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHBhdGgs
IHJlcXVlc3RfaGVhZGVycyk6CisgICAgICAgICMgVGVzdCByZXR1cm5pbmcgaGVhZGVycyBhcyBh
IEhlYWRlcnMgaW5zdGFuY2UgKDEvMykKKyAgICAgICAgcmV0dXJuIGh0dHAuSFRUUFN0YXR1cy5V
TkFVVEhPUklaRUQsIEhlYWRlcnMoWygiWC1BY2Nlc3MiLCAiZGVuaWVkIildKSwgYiIiCisKKwor
Y2xhc3MgRm9yYmlkZGVuU2VydmVyUHJvdG9jb2woV2ViU29ja2V0U2VydmVyUHJvdG9jb2wpOgor
ICAgIGFzeW5jIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcGF0aCwgcmVxdWVzdF9oZWFkZXJz
KToKKyAgICAgICAgIyBUZXN0IHJldHVybmluZyBoZWFkZXJzIGFzIGEgZGljdCAoMi8zKQorICAg
ICAgICByZXR1cm4gaHR0cC5IVFRQU3RhdHVzLkZPUkJJRERFTiwgeyJYLUFjY2VzcyI6ICJkZW5p
ZWQifSwgYiIiCisKKworY2xhc3MgSGVhbHRoQ2hlY2tTZXJ2ZXJQcm90b2NvbChXZWJTb2NrZXRT
ZXJ2ZXJQcm90b2NvbCk6CisgICAgYXN5bmMgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCBwYXRo
LCByZXF1ZXN0X2hlYWRlcnMpOgorICAgICAgICAjIFRlc3QgcmV0dXJuaW5nIGhlYWRlcnMgYXMg
YSBsaXN0IG9mIHBhaXJzICgzLzMpCisgICAgICAgIGlmIHBhdGggPT0gIi9fX2hlYWx0aF9fLyI6
CisgICAgICAgICAgICByZXR1cm4gaHR0cC5IVFRQU3RhdHVzLk9LLCBbKCJYLUFjY2VzcyIsICJP
SyIpXSwgYiJzdGF0dXMgPSBncmVlblxuIgorCisKK2NsYXNzIFNsb3dPcGVuaW5nSGFuZHNoYWtl
UHJvdG9jb2woV2ViU29ja2V0U2VydmVyUHJvdG9jb2wpOgorICAgIGFzeW5jIGRlZiBwcm9jZXNz
X3JlcXVlc3Qoc2VsZiwgcGF0aCwgcmVxdWVzdF9oZWFkZXJzKToKKyAgICAgICAgYXdhaXQgYXN5
bmNpby5zbGVlcCgxMCAqIE1TKQorCisKK2NsYXNzIEZvb0NsaWVudFByb3RvY29sKFdlYlNvY2tl
dENsaWVudFByb3RvY29sKToKKyAgICBwYXNzCisKKworY2xhc3MgQmFyQ2xpZW50UHJvdG9jb2wo
V2ViU29ja2V0Q2xpZW50UHJvdG9jb2wpOgorICAgIHBhc3MKKworCitjbGFzcyBDbGllbnROb09w
RXh0ZW5zaW9uRmFjdG9yeToKKyAgICBuYW1lID0gIngtbm8tb3AiCisKKyAgICBkZWYgZ2V0X3Jl
cXVlc3RfcGFyYW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBwcm9jZXNz
X3Jlc3BvbnNlX3BhcmFtcyhzZWxmLCBwYXJhbXMsIGFjY2VwdGVkX2V4dGVuc2lvbnMpOgorICAg
ICAgICBpZiBwYXJhbXM6CisgICAgICAgICAgICByYWlzZSBOZWdvdGlhdGlvbkVycm9yKCkKKyAg
ICAgICAgcmV0dXJuIE5vT3BFeHRlbnNpb24oKQorCisKK2NsYXNzIFNlcnZlck5vT3BFeHRlbnNp
b25GYWN0b3J5OgorICAgIG5hbWUgPSAieC1uby1vcCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwYXJhbXM9Tm9uZSk6CisgICAgICAgIHNlbGYucGFyYW1zID0gcGFyYW1zIG9yIFtdCisKKyAg
ICBkZWYgcHJvY2Vzc19yZXF1ZXN0X3BhcmFtcyhzZWxmLCBwYXJhbXMsIGFjY2VwdGVkX2V4dGVu
c2lvbnMpOgorICAgICAgICByZXR1cm4gc2VsZi5wYXJhbXMsIE5vT3BFeHRlbnNpb24oKQorCisK
K2NsYXNzIE5vT3BFeHRlbnNpb246CisgICAgbmFtZSA9ICJ4LW5vLW9wIgorCisgICAgZGVmIF9f
cmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIk5vT3BFeHRlbnNpb24oKSIKKworICAgIGRl
ZiBkZWNvZGUoc2VsZiwgZnJhbWUsICosIG1heF9zaXplPU5vbmUpOgorICAgICAgICByZXR1cm4g
ZnJhbWUKKworICAgIGRlZiBlbmNvZGUoc2VsZiwgZnJhbWUpOgorICAgICAgICByZXR1cm4gZnJh
bWUKKworCitjbGFzcyBDbGllbnRTZXJ2ZXJUZXN0c01peGluOgorCisgICAgc2VjdXJlID0gRmFs
c2UKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAg
ICAgIHNlbGYuc2VydmVyID0gTm9uZQorICAgICAgICBzZWxmLnJlZGlyZWN0aW5nX3NlcnZlciA9
IE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2ZXJfY29udGV4dChzZWxmKToKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzdGFydF9zZXJ2ZXIoc2VsZiwgZGVwcmVjYXRp
b25fd2FybmluZ3M9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAjIERpc2FibGUgY29tcHJlc3Np
b24gYnkgZGVmYXVsdCBpbiB0ZXN0cy4KKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoImNvbXBy
ZXNzaW9uIiwgTm9uZSkKKyAgICAgICAgIyBEaXNhYmxlIHBpbmdzIGJ5IGRlZmF1bHQgaW4gdGVz
dHMuCisgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCJwaW5nX2ludGVydmFsIiwgTm9uZSkKKwor
ICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByZWNv
cmRlZF93YXJuaW5nczoKKyAgICAgICAgICAgIHN0YXJ0X3NlcnZlciA9IHNlcnZlKGhhbmRsZXIs
ICJsb2NhbGhvc3QiLCAwLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2Vs
Zi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCisKKyAgICAgICAgZXhwZWN0
ZWRfd2FybmluZ3MgPSBbXSBpZiBkZXByZWNhdGlvbl93YXJuaW5ncyBpcyBOb25lIGVsc2UgZGVw
cmVjYXRpb25fd2FybmluZ3MKKyAgICAgICAgc2VsZi5hc3NlcnREZXByZWNhdGlvbldhcm5pbmdz
KHJlY29yZGVkX3dhcm5pbmdzLCBleHBlY3RlZF93YXJuaW5ncykKKworICAgIGRlZiBzdGFydF9y
ZWRpcmVjdGluZ19zZXJ2ZXIoCisgICAgICAgIHNlbGYsIHN0YXR1cywgaW5jbHVkZV9sb2NhdGlv
bj1UcnVlLCBmb3JjZV9pbnNlY3VyZT1GYWxzZQorICAgICk6CisgICAgICAgIGFzeW5jIGRlZiBw
cm9jZXNzX3JlcXVlc3QocGF0aCwgaGVhZGVycyk6CisgICAgICAgICAgICBzZXJ2ZXJfdXJpID0g
Z2V0X3NlcnZlcl91cmkoc2VsZi5zZXJ2ZXIsIHNlbGYuc2VjdXJlLCBwYXRoKQorICAgICAgICAg
ICAgaWYgZm9yY2VfaW5zZWN1cmU6CisgICAgICAgICAgICAgICAgc2VydmVyX3VyaSA9IHNlcnZl
cl91cmkucmVwbGFjZSgid3NzOiIsICJ3czoiKQorICAgICAgICAgICAgaGVhZGVycyA9IHsiTG9j
YXRpb24iOiBzZXJ2ZXJfdXJpfSBpZiBpbmNsdWRlX2xvY2F0aW9uIGVsc2UgW10KKyAgICAgICAg
ICAgIHJldHVybiBzdGF0dXMsIGhlYWRlcnMsIGIiIgorCisgICAgICAgIHN0YXJ0X3NlcnZlciA9
IHNlcnZlKAorICAgICAgICAgICAgaGFuZGxlciwKKyAgICAgICAgICAgICJsb2NhbGhvc3QiLAor
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uPU5vbmUsCisgICAgICAgICAg
ICBwaW5nX2ludGVydmFsPU5vbmUsCisgICAgICAgICAgICBwcm9jZXNzX3JlcXVlc3Q9cHJvY2Vz
c19yZXF1ZXN0LAorICAgICAgICAgICAgc3NsPXNlbGYuc2VydmVyX2NvbnRleHQsCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5yZWRpcmVjdGluZ19zZXJ2ZXIgPSBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKHN0YXJ0X3NlcnZlcikKKworICAgIGRlZiBzdGFydF9jbGllbnQoCisgICAgICAg
IHNlbGYsIHJlc291cmNlX25hbWU9Ii8iLCB1c2VyX2luZm89Tm9uZSwgZGVwcmVjYXRpb25fd2Fy
bmluZ3M9Tm9uZSwgKiprd2FyZ3MKKyAgICApOgorICAgICAgICAjIERpc2FibGUgY29tcHJlc3Np
b24gYnkgZGVmYXVsdCBpbiB0ZXN0cy4KKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoImNvbXBy
ZXNzaW9uIiwgTm9uZSkKKyAgICAgICAgIyBEaXNhYmxlIHBpbmdzIGJ5IGRlZmF1bHQgaW4gdGVz
dHMuCisgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCJwaW5nX2ludGVydmFsIiwgTm9uZSkKKyAg
ICAgICAgc2VjdXJlID0ga3dhcmdzLmdldCgic3NsIikgaXMgbm90IE5vbmUKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgc2VydmVyX3VyaSA9IGt3YXJncy5wb3AoInVyaSIpCisgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHNlcnZlciA9IHNlbGYucmVkaXJlY3Rpbmdfc2Vy
dmVyIGlmIHNlbGYucmVkaXJlY3Rpbmdfc2VydmVyIGVsc2Ugc2VsZi5zZXJ2ZXIKKyAgICAgICAg
ICAgIHNlcnZlcl91cmkgPSBnZXRfc2VydmVyX3VyaShzZXJ2ZXIsIHNlY3VyZSwgcmVzb3VyY2Vf
bmFtZSwgdXNlcl9pbmZvKQorCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3Mo
cmVjb3JkPVRydWUpIGFzIHJlY29yZGVkX3dhcm5pbmdzOgorICAgICAgICAgICAgc3RhcnRfY2xp
ZW50ID0gY29ubmVjdChzZXJ2ZXJfdXJpLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuY2xp
ZW50ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9jbGllbnQpCisKKyAgICAg
ICAgZXhwZWN0ZWRfd2FybmluZ3MgPSBbXSBpZiBkZXByZWNhdGlvbl93YXJuaW5ncyBpcyBOb25l
IGVsc2UgZGVwcmVjYXRpb25fd2FybmluZ3MKKyAgICAgICAgc2VsZi5hc3NlcnREZXByZWNhdGlv
bldhcm5pbmdzKHJlY29yZGVkX3dhcm5pbmdzLCBleHBlY3RlZF93YXJuaW5ncykKKworICAgIGRl
ZiBzdG9wX2NsaWVudChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgICAgICBhc3luY2lvLndhaXRfZm9yKHNl
bGYuY2xpZW50LmNsb3NlX2Nvbm5lY3Rpb25fdGFzaywgdGltZW91dD0xKQorICAgICAgICAgICAg
KQorICAgICAgICBleGNlcHQgYXN5bmNpby5UaW1lb3V0RXJyb3I6ICAjIHByYWdtYTogbm8gY292
ZXIKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiQ2xpZW50IGZhaWxlZCB0byBzdG9wIikKKworICAg
IGRlZiBzdG9wX3NlcnZlcihzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAg
ICAgICAgICAgICAgIGFzeW5jaW8ud2FpdF9mb3Ioc2VsZi5zZXJ2ZXIud2FpdF9jbG9zZWQoKSwg
dGltZW91dD0xKQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgYXN5bmNpby5UaW1lb3V0
RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiU2VydmVy
IGZhaWxlZCB0byBzdG9wIikKKworICAgIGRlZiBzdG9wX3JlZGlyZWN0aW5nX3NlcnZlcihzZWxm
KToKKyAgICAgICAgc2VsZi5yZWRpcmVjdGluZ19zZXJ2ZXIuY2xvc2UoKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAg
ICAgIGFzeW5jaW8ud2FpdF9mb3Ioc2VsZi5yZWRpcmVjdGluZ19zZXJ2ZXIud2FpdF9jbG9zZWQo
KSwgdGltZW91dD0xKQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgYXN5bmNpby5UaW1l
b3V0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVk
aXJlY3Rpbmcgc2VydmVyIGZhaWxlZCB0byBzdG9wIikKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIHNlbGYucmVkaXJlY3Rpbmdfc2VydmVyID0gTm9uZQorCisgICAgQGNvbnRleHRsaWIu
Y29udGV4dG1hbmFnZXIKKyAgICBkZWYgdGVtcF9zZXJ2ZXIoc2VsZiwgKiprd2FyZ3MpOgorICAg
ICAgICB3aXRoIHRlbXBfdGVzdF9zZXJ2ZXIoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAg
eWllbGQKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHRlbXBfY2xp
ZW50KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdpdGggdGVtcF90ZXN0X2NsaWVu
dChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgeWllbGQKKworICAgIGRlZiBt
YWtlX2h0dHBfcmVxdWVzdChzZWxmLCBwYXRoPSIvIiwgaGVhZGVycz1Ob25lKToKKyAgICAgICAg
aWYgaGVhZGVycyBpcyBOb25lOgorICAgICAgICAgICAgaGVhZGVycyA9IHt9CisKKyAgICAgICAg
IyBTZXQgdXJsIHRvICdodHRwcz86Ly88aG9zdD46PHBvcnQ+PHBhdGg+Jy4KKyAgICAgICAgdXJs
ID0gZ2V0X3NlcnZlcl91cmkoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgcmVzb3VyY2VfbmFt
ZT1wYXRoLCBzZWN1cmU9c2VsZi5zZWN1cmUKKyAgICAgICAgKS5yZXBsYWNlKCJ3cyIsICJodHRw
IikKKworICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCh1cmw9dXJsLCBo
ZWFkZXJzPWhlYWRlcnMpCisKKyAgICAgICAgaWYgc2VsZi5zZWN1cmU6CisgICAgICAgICAgICBv
cGVuX2hlYWx0aF9jaGVjayA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIHVy
bGxpYi5yZXF1ZXN0LnVybG9wZW4sIHJlcXVlc3QsIGNvbnRleHQ9c2VsZi5jbGllbnRfY29udGV4
dAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Blbl9oZWFsdGhf
Y2hlY2sgPSBmdW5jdG9vbHMucGFydGlhbCh1cmxsaWIucmVxdWVzdC51cmxvcGVuLCByZXF1ZXN0
KQorCisgICAgICAgIHJldHVybiBzZWxmLmxvb3AucnVuX2luX2V4ZWN1dG9yKE5vbmUsIG9wZW5f
aGVhbHRoX2NoZWNrKQorCisKK2NsYXNzIFNlY3VyZUNsaWVudFNlcnZlclRlc3RzTWl4aW4oQ2xp
ZW50U2VydmVyVGVzdHNNaXhpbik6CisKKyAgICBzZWN1cmUgPSBUcnVlCisKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgc2VydmVyX2NvbnRleHQoc2VsZik6CisgICAgICAgIHNzbF9jb250ZXh0ID0g
c3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgIHNzbF9jb250
ZXh0LmxvYWRfY2VydF9jaGFpbih0ZXN0Y2VydCkKKyAgICAgICAgcmV0dXJuIHNzbF9jb250ZXh0
CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xpZW50X2NvbnRleHQoc2VsZik6CisgICAgICAg
IHNzbF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisg
ICAgICAgIHNzbF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyh0ZXN0Y2VydCkKKyAgICAg
ICAgcmV0dXJuIHNzbF9jb250ZXh0CisKKyAgICBkZWYgc3RhcnRfc2VydmVyKHNlbGYsICoqa3dh
cmdzKToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoInNzbCIsIHNlbGYuc2VydmVyX2NvbnRl
eHQpCisgICAgICAgIHN1cGVyKCkuc3RhcnRfc2VydmVyKCoqa3dhcmdzKQorCisgICAgZGVmIHN0
YXJ0X2NsaWVudChzZWxmLCBwYXRoPSIvIiwgKiprd2FyZ3MpOgorICAgICAgICBrd2FyZ3Muc2V0
ZGVmYXVsdCgic3NsIiwgc2VsZi5jbGllbnRfY29udGV4dCkKKyAgICAgICAgc3VwZXIoKS5zdGFy
dF9jbGllbnQocGF0aCwgKiprd2FyZ3MpCisKKworY2xhc3MgQ29tbW9uQ2xpZW50U2VydmVyVGVz
dHM6CisgICAgIiIiCisgICAgTWl4aW4gdGhhdCBkZWZpbmVzIG1vc3QgdGVzdHMgYnV0IGRvZXNu
J3QgaW5oZXJpdCB1bml0dGVzdC5UZXN0Q2FzZS4KKworICAgIFRlc3RzIGFyZSBydW4gYnkgdGhl
IENsaWVudFNlcnZlclRlc3RzIGFuZCBTZWN1cmVDbGllbnRTZXJ2ZXJUZXN0cyBzdWJjbGFzc2Vz
LgorCisgICAgIiIiCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgpCisg
ICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHJlcGx5ID0gc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVwbHksICJIZWxsbyEiKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBk
ZWYgdGVzdF9yZWRpcmVjdChzZWxmKToKKyAgICAgICAgcmVkaXJlY3Rfc3RhdHVzZXMgPSBbCisg
ICAgICAgICAgICBodHRwLkhUVFBTdGF0dXMuTU9WRURfUEVSTUFORU5UTFksCisgICAgICAgICAg
ICBodHRwLkhUVFBTdGF0dXMuRk9VTkQsCisgICAgICAgICAgICBodHRwLkhUVFBTdGF0dXMuU0VF
X09USEVSLAorICAgICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLlRFTVBPUkFSWV9SRURJUkVDVCwK
KyAgICAgICAgICAgIGh0dHAuSFRUUFN0YXR1cy5QRVJNQU5FTlRfUkVESVJFQ1QsCisgICAgICAg
IF0KKyAgICAgICAgZm9yIHN0YXR1cyBpbiByZWRpcmVjdF9zdGF0dXNlczoKKyAgICAgICAgICAg
IHdpdGggdGVtcF90ZXN0X3JlZGlyZWN0aW5nX3NlcnZlcihzZWxmLCBzdGF0dXMpOgorICAgICAg
ICAgICAgICAgIHdpdGggdGVtcF90ZXN0X2NsaWVudChzZWxmKToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5zZW5kKCJIZWxsbyEi
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXBseSwgIkhlbGxvISIpCisKKyAgICBkZWYgdGVzdF9pbmZpbml0ZV9yZWRpcmVjdChz
ZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wX3Rlc3RfcmVkaXJlY3Rpbmdfc2VydmVyKHNlbGYsIGh0
dHAuSFRUUFN0YXR1cy5GT1VORCk6CisgICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlbGYucmVk
aXJlY3Rpbmdfc2VydmVyCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFs
aWRIYW5kc2hha2UpOgorICAgICAgICAgICAgICAgIHdpdGggdGVtcF90ZXN0X2NsaWVudChzZWxm
KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWQgbm90IHJhaXNlIikgICMgcHJh
Z21hOiBubyBjb3ZlcgorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBkZWYgdGVzdF9yZWRpcmVj
dF9taXNzaW5nX2xvY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBfdGVzdF9yZWRpcmVj
dGluZ19zZXJ2ZXIoCisgICAgICAgICAgICBzZWxmLCBodHRwLkhUVFBTdGF0dXMuRk9VTkQsIGlu
Y2x1ZGVfbG9jYXRpb249RmFsc2UKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoSW52YWxpZEhlYWRlcik6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1wX3Rl
c3RfY2xpZW50KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3Qg
cmFpc2UiKSAgIyBwcmFnbWE6IG5vIGNvdmVyCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9ldmVu
dF9sb29wKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGVtcF9zZXJ2ZXIobG9vcD1zZWxmLmxv
b3ApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnRlbXBfY2xpZW50KGxvb3A9c2VsZi5sb29wKToK
KyAgICAgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50
LnNlbmQoIkhlbGxvISIpKQorICAgICAgICAgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXBseSwgIkhlbGxvISIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIGRl
ZiB0ZXN0X2V4cGxpY2l0X2hvc3RfcG9ydChzZWxmKToKKyAgICAgICAgdXJpID0gZ2V0X3NlcnZl
cl91cmkoc2VsZi5zZXJ2ZXIsIHNlbGYuc2VjdXJlKQorICAgICAgICB3c3VyaSA9IHBhcnNlX3Vy
aSh1cmkpCisKKyAgICAgICAgIyBDaGFuZ2UgaG9zdCBhbmQgcG9ydCB0byBpbnZhbGlkIHZhbHVl
cy4KKyAgICAgICAgY2hhbmdlZF91cmkgPSB1cmkucmVwbGFjZSh3c3VyaS5ob3N0LCAiZXhhbXBs
ZS5jb20iKS5yZXBsYWNlKAorICAgICAgICAgICAgc3RyKHdzdXJpLnBvcnQpLCBzdHIoNjU1MzUg
LSB3c3VyaS5wb3J0KQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxmLnRlbXBfY2xpZW50
KHVyaT1jaGFuZ2VkX3VyaSwgaG9zdD13c3VyaS5ob3N0LCBwb3J0PXdzdXJpLnBvcnQpOgorICAg
ICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5zZW5kKCJI
ZWxsbyEiKSkKKyAgICAgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGx5
LCAiSGVsbG8hIikKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgZGVmIHRlc3RfZXhwbGljaXRf
c29ja2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBUcmFja2VkU29ja2V0KHNvY2tldC5zb2NrZXQp
OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAg
ICAgICAgICAgICAgc2VsZi51c2VkX2Zvcl9yZWFkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBz
ZWxmLnVzZWRfZm9yX3dyaXRlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5p
dF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgZGVmIHJlY3Yoc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLnVzZWRfZm9yX3JlYWQgPSBUcnVlCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkucmVjdigqYXJncywgKiprd2FyZ3MpCisKKyAg
ICAgICAgICAgIGRlZiBzZW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAg
ICAgc2VsZi51c2VkX2Zvcl93cml0ZSA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Vw
ZXIoKS5zZW5kKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZXJ2ZXJfc29ja2V0ID0gWwor
ICAgICAgICAgICAgc29jayBmb3Igc29jayBpbiBzZWxmLnNlcnZlci5zb2NrZXRzIGlmIHNvY2su
ZmFtaWx5ID09IHNvY2tldC5BRl9JTkVUCisgICAgICAgIF1bMF0KKyAgICAgICAgY2xpZW50X3Nv
Y2tldCA9IFRyYWNrZWRTb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkK
KyAgICAgICAgY2xpZW50X3NvY2tldC5jb25uZWN0KHNlcnZlcl9zb2NrZXQuZ2V0c29ja25hbWUo
KSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudF9z
b2NrZXQudXNlZF9mb3JfcmVhZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50
X3NvY2tldC51c2VkX2Zvcl93cml0ZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLnRlbXBfY2xp
ZW50KAorICAgICAgICAgICAgICAgIHNvY2s9Y2xpZW50X3NvY2tldCwKKyAgICAgICAgICAgICAg
ICAjICJZb3UgbXVzdCBzZXQgc2VydmVyX2hvc3RuYW1lIHdoZW4gdXNpbmcgc3NsIHdpdGhvdXQg
YSBob3N0IgorICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ibG9jYWxob3N0IiBpZiBz
ZWxmLnNlY3VyZSBlbHNlIE5vbmUsCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNl
bGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisg
ICAgICAgICAgICAgICAgcmVwbHkgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
Y2xpZW50LnJlY3YoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGx5LCAi
SGVsbG8hIikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNsaWVudF9zb2NrZXQudXNl
ZF9mb3JfcmVhZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnRfc29ja2V0LnVz
ZWRfZm9yX3dyaXRlKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBjbGllbnRfc29j
a2V0LmNsb3NlKCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAi
QUZfVU5JWCIpLCAidGhpcyB0ZXN0IHJlcXVpcmVzIFVuaXggc29ja2V0cyIpCisgICAgZGVmIHRl
c3RfdW5peF9zb2NrZXQoc2VsZik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGly
ZWN0b3J5KCkgYXMgdGVtcF9kaXI6CisgICAgICAgICAgICBwYXRoID0gYnl0ZXMocGF0aGxpYi5Q
YXRoKHRlbXBfZGlyKSAvICJ3ZWJzb2NrZXRzIikKKworICAgICAgICAgICAgIyBMaWtlIHNlbGYu
c3RhcnRfc2VydmVyKCkgYnV0IHdpdGggdW5peF9zZXJ2ZSgpLgorICAgICAgICAgICAgdW5peF9z
ZXJ2ZXIgPSB1bml4X3NlcnZlKGhhbmRsZXIsIHBhdGgpCisgICAgICAgICAgICBzZWxmLnNlcnZl
ciA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodW5peF9zZXJ2ZXIpCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgIyBMaWtlIHNlbGYuc3RhcnRfY2xpZW50KCkgYnV0IHdp
dGggdW5peF9jb25uZWN0KCkKKyAgICAgICAgICAgICAgICB1bml4X2NsaWVudCA9IHVuaXhfY29u
bmVjdChwYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuY2xpZW50ID0gc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZSh1bml4X2NsaWVudCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2Vu
ZCgiSGVsbG8hIikpCisgICAgICAgICAgICAgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVwbHksICJIZWxsbyEiKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9jbGllbnQoKQorICAgICAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3Bfc2VydmVyKCkKKworICAgIGFzeW5jIGRl
ZiBwcm9jZXNzX3JlcXVlc3RfT0socGF0aCwgcmVxdWVzdF9oZWFkZXJzKToKKyAgICAgICAgcmV0
dXJuIGh0dHAuSFRUUFN0YXR1cy5PSywgW10sIGIiT0tcbiIKKworICAgIEB3aXRoX3NlcnZlcihw
cm9jZXNzX3JlcXVlc3Q9cHJvY2Vzc19yZXF1ZXN0X09LKQorICAgIGRlZiB0ZXN0X3Byb2Nlc3Nf
cmVxdWVzdF9hcmd1bWVudChzZWxmKToKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYubWFrZV9odHRwX3JlcXVlc3QoIi8iKSkKKworICAgICAgICB3
aXRoIGNvbnRleHRsaWIuY2xvc2luZyhyZXNwb25zZSk6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLmNvZGUsIDIwMCkKKworICAgIGRlZiBsZWdhY3lfcHJvY2Vzc19yZXF1
ZXN0X09LKHBhdGgsIHJlcXVlc3RfaGVhZGVycyk6CisgICAgICAgIHJldHVybiBodHRwLkhUVFBT
dGF0dXMuT0ssIFtdLCBiIk9LXG4iCisKKyAgICBAd2l0aF9zZXJ2ZXIocHJvY2Vzc19yZXF1ZXN0
PWxlZ2FjeV9wcm9jZXNzX3JlcXVlc3RfT0spCisgICAgZGVmIHRlc3RfcHJvY2Vzc19yZXF1ZXN0
X2FyZ3VtZW50X2JhY2t3YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAgICB3aXRoIHdh
cm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByZWNvcmRlZF93YXJuaW5nczoK
KyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
Lm1ha2VfaHR0cF9yZXF1ZXN0KCIvIikpCisKKyAgICAgICAgd2l0aCBjb250ZXh0bGliLmNsb3Np
bmcocmVzcG9uc2UpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5jb2Rl
LCAyMDApCisKKyAgICAgICAgc2VsZi5hc3NlcnREZXByZWNhdGlvbldhcm5pbmdzKAorICAgICAg
ICAgICAgcmVjb3JkZWRfd2FybmluZ3MsIFsiZGVjbGFyZSBwcm9jZXNzX3JlcXVlc3QgYXMgYSBj
b3JvdXRpbmUiXQorICAgICAgICApCisKKyAgICBjbGFzcyBQcm9jZXNzUmVxdWVzdE9LU2VydmVy
UHJvdG9jb2woV2ViU29ja2V0U2VydmVyUHJvdG9jb2wpOgorICAgICAgICBhc3luYyBkZWYgcHJv
Y2Vzc19yZXF1ZXN0KHNlbGYsIHBhdGgsIHJlcXVlc3RfaGVhZGVycyk6CisgICAgICAgICAgICBy
ZXR1cm4gaHR0cC5IVFRQU3RhdHVzLk9LLCBbXSwgYiJPS1xuIgorCisgICAgQHdpdGhfc2VydmVy
KGNyZWF0ZV9wcm90b2NvbD1Qcm9jZXNzUmVxdWVzdE9LU2VydmVyUHJvdG9jb2wpCisgICAgZGVm
IHRlc3RfcHJvY2Vzc19yZXF1ZXN0X292ZXJyaWRlKHNlbGYpOgorICAgICAgICByZXNwb25zZSA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5tYWtlX2h0dHBfcmVxdWVzdCgiLyIp
KQorCisgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHJlc3BvbnNlKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29kZSwgMjAwKQorCisgICAgY2xhc3MgTGVn
YWN5UHJvY2Vzc1JlcXVlc3RPS1NlcnZlclByb3RvY29sKFdlYlNvY2tldFNlcnZlclByb3RvY29s
KToKKyAgICAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCBwYXRoLCByZXF1ZXN0X2hlYWRl
cnMpOgorICAgICAgICAgICAgcmV0dXJuIGh0dHAuSFRUUFN0YXR1cy5PSywgW10sIGIiT0tcbiIK
KworICAgIEB3aXRoX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9TGVnYWN5UHJvY2Vzc1JlcXVlc3RP
S1NlcnZlclByb3RvY29sKQorICAgIGRlZiB0ZXN0X3Byb2Nlc3NfcmVxdWVzdF9vdmVycmlkZV9i
YWNrd2FyZHNfY29tcGF0aWJpbGl0eShzZWxmKToKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRj
aF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgcmVjb3JkZWRfd2FybmluZ3M6CisgICAgICAgICAg
ICByZXNwb25zZSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5tYWtlX2h0dHBf
cmVxdWVzdCgiLyIpKQorCisgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHJlc3BvbnNl
KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29kZSwgMjAwKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RGVwcmVjYXRpb25XYXJuaW5ncygKKyAgICAgICAgICAgIHJlY29y
ZGVkX3dhcm5pbmdzLCBbImRlY2xhcmUgcHJvY2Vzc19yZXF1ZXN0IGFzIGEgY29yb3V0aW5lIl0K
KyAgICAgICAgKQorCisgICAgZGVmIHNlbGVjdF9zdWJwcm90b2NvbF9jaGF0KGNsaWVudF9zdWJw
cm90b2NvbHMsIHNlcnZlcl9zdWJwcm90b2NvbHMpOgorICAgICAgICByZXR1cm4gImNoYXQiCisK
KyAgICBAd2l0aF9zZXJ2ZXIoCisgICAgICAgIHN1YnByb3RvY29scz1bInN1cGVyY2hhdCIsICJj
aGF0Il0sIHNlbGVjdF9zdWJwcm90b2NvbD1zZWxlY3Rfc3VicHJvdG9jb2xfY2hhdAorICAgICkK
KyAgICBAd2l0aF9jbGllbnQoIi9zdWJwcm90b2NvbCIsIHN1YnByb3RvY29scz1bInN1cGVyY2hh
dCIsICJjaGF0Il0pCisgICAgZGVmIHRlc3Rfc2VsZWN0X3N1YnByb3RvY29sX2FyZ3VtZW50KHNl
bGYpOgorICAgICAgICBzZXJ2ZXJfc3VicHJvdG9jb2wgPSBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2
ZXJfc3VicHJvdG9jb2wsIHJlcHIoImNoYXQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLmNsaWVudC5zdWJwcm90b2NvbCwgImNoYXQiKQorCisgICAgY2xhc3MgU2VsZWN0U3VicHJv
dG9jb2xDaGF0U2VydmVyUHJvdG9jb2woV2ViU29ja2V0U2VydmVyUHJvdG9jb2wpOgorICAgICAg
ICBkZWYgc2VsZWN0X3N1YnByb3RvY29sKHNlbGYsIGNsaWVudF9zdWJwcm90b2NvbHMsIHNlcnZl
cl9zdWJwcm90b2NvbHMpOgorICAgICAgICAgICAgcmV0dXJuICJjaGF0IgorCisgICAgQHdpdGhf
c2VydmVyKAorICAgICAgICBzdWJwcm90b2NvbHM9WyJzdXBlcmNoYXQiLCAiY2hhdCJdLAorICAg
ICAgICBjcmVhdGVfcHJvdG9jb2w9U2VsZWN0U3VicHJvdG9jb2xDaGF0U2VydmVyUHJvdG9jb2ws
CisgICAgKQorICAgIEB3aXRoX2NsaWVudCgiL3N1YnByb3RvY29sIiwgc3VicHJvdG9jb2xzPVsi
c3VwZXJjaGF0IiwgImNoYXQiXSkKKyAgICBkZWYgdGVzdF9zZWxlY3Rfc3VicHJvdG9jb2xfb3Zl
cnJpZGUoc2VsZik6CisgICAgICAgIHNlcnZlcl9zdWJwcm90b2NvbCA9IHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlcnZlcl9zdWJwcm90b2NvbCwgcmVwcigiY2hhdCIpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYuY2xpZW50LnN1YnByb3RvY29sLCAiY2hhdCIpCisKKyAgICBAd2l0aF9zZXJ2
ZXIoKQorICAgIEB3aXRoX2NsaWVudCgiL2RlcHJlY2F0ZWRfYXR0cmlidXRlcyIpCisgICAgZGVm
IHRlc3RfcHJvdG9jb2xfZGVwcmVjYXRlZF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIFRo
ZSB0ZXN0IGNvdWxkIGJlIGNvbm5lY3Rpbmcgd2l0aCBJUHY2IG9yIElQdjQuCisgICAgICAgIGV4
cGVjdGVkX2NsaWVudF9hdHRycyA9IFsKKyAgICAgICAgICAgIHNlcnZlcl9zb2NrZXQuZ2V0c29j
a25hbWUoKVs6Ml0gKyAoc2VsZi5zZWN1cmUsKQorICAgICAgICAgICAgZm9yIHNlcnZlcl9zb2Nr
ZXQgaW4gc2VsZi5zZXJ2ZXIuc29ja2V0cworICAgICAgICBdCisgICAgICAgIHdpdGggd2Fybmlu
Z3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHJlY29yZGVkX3dhcm5pbmdzOgorICAg
ICAgICAgICAgY2xpZW50X2F0dHJzID0gKHNlbGYuY2xpZW50Lmhvc3QsIHNlbGYuY2xpZW50LnBv
cnQsIHNlbGYuY2xpZW50LnNlY3VyZSkKKyAgICAgICAgc2VsZi5hc3NlcnREZXByZWNhdGlvbldh
cm5pbmdzKAorICAgICAgICAgICAgcmVjb3JkZWRfd2FybmluZ3MsCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgInVzZSByZW1vdGVfYWRkcmVzc1swXSBpbnN0ZWFkIG9mIGhvc3QiLAor
ICAgICAgICAgICAgICAgICJ1c2UgcmVtb3RlX2FkZHJlc3NbMV0gaW5zdGVhZCBvZiBwb3J0IiwK
KyAgICAgICAgICAgICAgICAiZG9uJ3QgdXNlIHNlY3VyZSIsCisgICAgICAgICAgICBdLAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oY2xpZW50X2F0dHJzLCBleHBlY3RlZF9jbGll
bnRfYXR0cnMpCisKKyAgICAgICAgZXhwZWN0ZWRfc2VydmVyX2F0dHJzID0gKCJsb2NhbGhvc3Qi
LCAwLCBzZWxmLnNlY3VyZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhy
ZWNvcmQ9VHJ1ZSkgYXMgcmVjb3JkZWRfd2FybmluZ3M6CisgICAgICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnNlbmQoIiIpKQorICAgICAgICAgICAgc2Vy
dmVyX2F0dHJzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2
KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVwcmVjYXRpb25XYXJuaW5ncygKKyAgICAgICAgICAg
IHJlY29yZGVkX3dhcm5pbmdzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJ1c2Ug
bG9jYWxfYWRkcmVzc1swXSBpbnN0ZWFkIG9mIGhvc3QiLAorICAgICAgICAgICAgICAgICJ1c2Ug
bG9jYWxfYWRkcmVzc1sxXSBpbnN0ZWFkIG9mIHBvcnQiLAorICAgICAgICAgICAgICAgICJkb24n
dCB1c2Ugc2VjdXJlIiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZXJ2ZXJfYXR0cnMsIHJlcHIoZXhwZWN0ZWRfc2VydmVyX2F0dHJzKSkKKwor
ICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCIvcGF0aCIpCisgICAgZGVmIHRl
c3RfcHJvdG9jb2xfcGF0aChzZWxmKToKKyAgICAgICAgY2xpZW50X3BhdGggPSBzZWxmLmNsaWVu
dC5wYXRoCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3BhdGgsICIvcGF0aCIpCisg
ICAgICAgIHNlcnZlcl9wYXRoID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNs
aWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3BhdGgsICIvcGF0
aCIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMiKQor
ICAgIGRlZiB0ZXN0X3Byb3RvY29sX2hlYWRlcnMoc2VsZik6CisgICAgICAgIGNsaWVudF9yZXEg
PSBzZWxmLmNsaWVudC5yZXF1ZXN0X2hlYWRlcnMKKyAgICAgICAgY2xpZW50X3Jlc3AgPSBzZWxm
LmNsaWVudC5yZXNwb25zZV9oZWFkZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
X3JlcVsiVXNlci1BZ2VudCJdLCBVU0VSX0FHRU5UKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudF9yZXNwWyJTZXJ2ZXIiXSwgVVNFUl9BR0VOVCkKKyAgICAgICAgc2VydmVyX3JlcSA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAg
ICBzZXJ2ZXJfcmVzcCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQu
cmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9yZXEsIHJlcHIoY2xpZW50
X3JlcSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3Jlc3AsIHJlcHIoY2xpZW50
X3Jlc3ApKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJz
IiwgZXh0cmFfaGVhZGVycz1IZWFkZXJzKHsiWC1TcGFtIjogIkVnZ3MifSkpCisgICAgZGVmIHRl
c3RfcHJvdG9jb2xfY3VzdG9tX3JlcXVlc3RfaGVhZGVycyhzZWxmKToKKyAgICAgICAgcmVxX2hl
YWRlcnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkK
KyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIignWC1TcGFtJywgJ0VnZ3MnKSIsIHJlcV9oZWFkZXJz
KQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIiwgZXh0
cmFfaGVhZGVycz17IlgtU3BhbSI6ICJFZ2dzIn0pCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfY3Vz
dG9tX3JlcXVlc3RfaGVhZGVyc19kaWN0KHNlbGYpOgorICAgICAgICByZXFfaGVhZGVycyA9IHNl
bGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRJbigiKCdYLVNwYW0nLCAnRWdncycpIiwgcmVxX2hlYWRlcnMpCisKKyAgICBA
d2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMiLCBleHRyYV9oZWFkZXJz
PVsoIlgtU3BhbSIsICJFZ2dzIildKQorICAgIGRlZiB0ZXN0X3Byb3RvY29sX2N1c3RvbV9yZXF1
ZXN0X2hlYWRlcnNfbGlzdChzZWxmKToKKyAgICAgICAgcmVxX2hlYWRlcnMgPSBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0SW4oIignWC1TcGFtJywgJ0VnZ3MnKSIsIHJlcV9oZWFkZXJzKQorCisgICAgQHdpdGhfc2Vy
dmVyKCkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIiwgZXh0cmFfaGVhZGVycz1bKCJVc2Vy
LUFnZW50IiwgIkVnZ3MiKV0pCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfY3VzdG9tX3JlcXVlc3Rf
dXNlcl9hZ2VudChzZWxmKToKKyAgICAgICAgcmVxX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVxX2hlYWRlcnMuY291bnQoIlVzZXItQWdlbnQiKSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJbigiKCdVc2VyLUFnZW50JywgJ0VnZ3MnKSIsIHJlcV9oZWFkZXJzKQorCisgICAgQHdpdGhf
c2VydmVyKGV4dHJhX2hlYWRlcnM9bGFtYmRhIHAsIHI6IEhlYWRlcnMoeyJYLVNwYW0iOiAiRWdn
cyJ9KSkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIikKKyAgICBkZWYgdGVzdF9wcm90b2Nv
bF9jdXN0b21fcmVzcG9uc2VfaGVhZGVyc19jYWxsYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHJlc3Bf
aGVhZGVycyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigp
KQorICAgICAgICBzZWxmLmFzc2VydEluKCIoJ1gtU3BhbScsICdFZ2dzJykiLCByZXNwX2hlYWRl
cnMpCisKKyAgICBAd2l0aF9zZXJ2ZXIoZXh0cmFfaGVhZGVycz1sYW1iZGEgcCwgcjogeyJYLVNw
YW0iOiAiRWdncyJ9KQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMiKQorICAgIGRlZiB0ZXN0
X3Byb3RvY29sX2N1c3RvbV9yZXNwb25zZV9oZWFkZXJzX2NhbGxhYmxlX2RpY3Qoc2VsZik6Cisg
ICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQor
ICAgICAgICByZXNwX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
Y2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdYLVNwYW0nLCAnRWdncycp
IiwgcmVzcF9oZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKGV4dHJhX2hlYWRlcnM9bGFtYmRh
IHAsIHI6IFsoIlgtU3BhbSIsICJFZ2dzIildKQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMi
KQorICAgIGRlZiB0ZXN0X3Byb3RvY29sX2N1c3RvbV9yZXNwb25zZV9oZWFkZXJzX2NhbGxhYmxl
X2xpc3Qoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5j
bGllbnQucmVjdigpKQorICAgICAgICByZXNwX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdY
LVNwYW0nLCAnRWdncycpIiwgcmVzcF9oZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKGV4dHJh
X2hlYWRlcnM9bGFtYmRhIHAsIHI6IE5vbmUpCisgICAgQHdpdGhfY2xpZW50KCIvaGVhZGVycyIp
CisgICAgZGVmIHRlc3RfcHJvdG9jb2xfY3VzdG9tX3Jlc3BvbnNlX2hlYWRlcnNfY2FsbGFibGVf
bm9uZShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNs
aWVudC5yZWN2KCkpICAjIGRvZXNuJ3QgY3Jhc2gKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpICAjIG5vdGhpbmcgdG8gY2hlY2sKKworICAg
IEB3aXRoX3NlcnZlcihleHRyYV9oZWFkZXJzPUhlYWRlcnMoeyJYLVNwYW0iOiAiRWdncyJ9KSkK
KyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIikKKyAgICBkZWYgdGVzdF9wcm90b2NvbF9jdXN0
b21fcmVzcG9uc2VfaGVhZGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHJlc3BfaGVhZGVycyA9IHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxm
LmFzc2VydEluKCIoJ1gtU3BhbScsICdFZ2dzJykiLCByZXNwX2hlYWRlcnMpCisKKyAgICBAd2l0
aF9zZXJ2ZXIoZXh0cmFfaGVhZGVycz17IlgtU3BhbSI6ICJFZ2dzIn0pCisgICAgQHdpdGhfY2xp
ZW50KCIvaGVhZGVycyIpCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfY3VzdG9tX3Jlc3BvbnNlX2hl
YWRlcnNfZGljdChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
ZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHJlc3BfaGVhZGVycyA9IHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydElu
KCIoJ1gtU3BhbScsICdFZ2dzJykiLCByZXNwX2hlYWRlcnMpCisKKyAgICBAd2l0aF9zZXJ2ZXIo
ZXh0cmFfaGVhZGVycz1bKCJYLVNwYW0iLCAiRWdncyIpXSkKKyAgICBAd2l0aF9jbGllbnQoIi9o
ZWFkZXJzIikKKyAgICBkZWYgdGVzdF9wcm90b2NvbF9jdXN0b21fcmVzcG9uc2VfaGVhZGVyc19s
aXN0KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xp
ZW50LnJlY3YoKSkKKyAgICAgICAgcmVzcF9oZWFkZXJzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIignWC1T
cGFtJywgJ0VnZ3MnKSIsIHJlc3BfaGVhZGVycykKKworICAgIEB3aXRoX3NlcnZlcihleHRyYV9o
ZWFkZXJzPVsoIlNlcnZlciIsICJFZ2dzIildKQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMi
KQorICAgIGRlZiB0ZXN0X3Byb3RvY29sX2N1c3RvbV9yZXNwb25zZV91c2VyX2FnZW50KHNlbGYp
OgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3Yo
KSkKKyAgICAgICAgcmVzcF9oZWFkZXJzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
ZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcF9oZWFkZXJz
LmNvdW50KCJTZXJ2ZXIiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdTZXJ2ZXInLCAn
RWdncycpIiwgcmVzcF9oZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2Nv
bD1IZWFsdGhDaGVja1NlcnZlclByb3RvY29sKQorICAgIGRlZiB0ZXN0X2h0dHBfcmVxdWVzdF9o
dHRwX2VuZHBvaW50KHNlbGYpOgorICAgICAgICAjIE1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBh
IEhUVFAgZW5kcG9pbnQgc3VjY2VlZHMuCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShzZWxmLm1ha2VfaHR0cF9yZXF1ZXN0KCIvX19oZWFsdGhfXy8iKSkK
KworICAgICAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhyZXNwb25zZSk6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmNvZGUsIDIwMCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzcG9uc2UucmVhZCgpLCBiInN0YXR1cyA9IGdyZWVuXG4iKQorCisgICAg
QHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1IZWFsdGhDaGVja1NlcnZlclByb3RvY29sKQor
ICAgIGRlZiB0ZXN0X2h0dHBfcmVxdWVzdF93c19lbmRwb2ludChzZWxmKToKKyAgICAgICAgIyBN
YWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8gYSBXUyBlbmRwb2ludCBmYWlscy4KKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuSFRUUEVycm9yKSBhcyByYWlzZWQ6Cisg
ICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubWFrZV9odHRwX3Jl
cXVlc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24uY29k
ZSwgNDI2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24uaGVhZGVy
c1siVXBncmFkZSJdLCAid2Vic29ja2V0IikKKworICAgIEB3aXRoX3NlcnZlcihjcmVhdGVfcHJv
dG9jb2w9SGVhbHRoQ2hlY2tTZXJ2ZXJQcm90b2NvbCkKKyAgICBkZWYgdGVzdF93c19jb25uZWN0
aW9uX2h0dHBfZW5kcG9pbnQoc2VsZik6CisgICAgICAgICMgTWFraW5nIGEgV1MgY29ubmVjdGlv
biB0byBhIEhUVFAgZW5kcG9pbnQgZmFpbHMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoSW52YWxpZFN0YXR1c0NvZGUpIGFzIHJhaXNlZDoKKyAgICAgICAgICAgIHNlbGYuc3RhcnRf
Y2xpZW50KCIvX19oZWFsdGhfXy8iKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2Vk
LmV4Y2VwdGlvbi5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9w
cm90b2NvbD1IZWFsdGhDaGVja1NlcnZlclByb3RvY29sKQorICAgIGRlZiB0ZXN0X3dzX2Nvbm5l
Y3Rpb25fd3NfZW5kcG9pbnQoc2VsZik6CisgICAgICAgICMgTWFraW5nIGEgV1MgY29ubmVjdGlv
biB0byBhIFdTIGVuZHBvaW50IHN1Y2NlZWRzLgorICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgp
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgi
SGVsbG8hIikpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGll
bnQucmVjdigpKQorICAgICAgICBzZWxmLnN0b3BfY2xpZW50KCkKKworICAgIGRlZiBhc3NlcnRf
Y2xpZW50X3JhaXNlc19jb2RlKHNlbGYsIHN0YXR1c19jb2RlKToKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhJbnZhbGlkU3RhdHVzQ29kZSkgYXMgcmFpc2VkOgorICAgICAgICAgICAg
c2VsZi5zdGFydF9jbGllbnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNl
cHRpb24uc3RhdHVzX2NvZGUsIHN0YXR1c19jb2RlKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0
ZV9wcm90b2NvbD1VbmF1dGhvcml6ZWRTZXJ2ZXJQcm90b2NvbCkKKyAgICBkZWYgdGVzdF9zZXJ2
ZXJfY3JlYXRlX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jbGllbnRfcmFp
c2VzX2NvZGUoNDAxKQorCisgICAgZGVmIGNyZWF0ZV91bmF1dGhvcml6ZWRfc2VydmVyX3Byb3Rv
Y29sKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBVbmF1dGhvcml6ZWRTZXJ2ZXJQ
cm90b2NvbCgqYXJncywgKiprd2FyZ3MpCisKKyAgICBAd2l0aF9zZXJ2ZXIoY3JlYXRlX3Byb3Rv
Y29sPWNyZWF0ZV91bmF1dGhvcml6ZWRfc2VydmVyX3Byb3RvY29sKQorICAgIGRlZiB0ZXN0X3Nl
cnZlcl9jcmVhdGVfcHJvdG9jb2xfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
X2NsaWVudF9yYWlzZXNfY29kZSg0MDEpCisKKyAgICBAd2l0aF9zZXJ2ZXIoCisgICAgICAgIGts
YXNzPVVuYXV0aG9yaXplZFNlcnZlclByb3RvY29sLAorICAgICAgICBkZXByZWNhdGlvbl93YXJu
aW5ncz1bInJlbmFtZSBrbGFzcyB0byBjcmVhdGVfcHJvdG9jb2wiXSwKKyAgICApCisgICAgZGVm
IHRlc3Rfc2VydmVyX2tsYXNzX2JhY2t3YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9jbGllbnRfcmFpc2VzX2NvZGUoNDAxKQorCisgICAgQHdpdGhfc2VydmVy
KAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w9Rm9yYmlkZGVuU2VydmVyUHJvdG9jb2wsCisgICAg
ICAgIGtsYXNzPVVuYXV0aG9yaXplZFNlcnZlclByb3RvY29sLAorICAgICAgICBkZXByZWNhdGlv
bl93YXJuaW5ncz1bInJlbmFtZSBrbGFzcyB0byBjcmVhdGVfcHJvdG9jb2wiXSwKKyAgICApCisg
ICAgZGVmIHRlc3Rfc2VydmVyX2NyZWF0ZV9wcm90b2NvbF9vdmVyX2tsYXNzKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydF9jbGllbnRfcmFpc2VzX2NvZGUoNDAzKQorCisgICAgQHdpdGhfc2Vy
dmVyKCkKKyAgICBAd2l0aF9jbGllbnQoIi9wYXRoIiwgY3JlYXRlX3Byb3RvY29sPUZvb0NsaWVu
dFByb3RvY29sKQorICAgIGRlZiB0ZXN0X2NsaWVudF9jcmVhdGVfcHJvdG9jb2woc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmNsaWVudCwgRm9vQ2xpZW50UHJvdG9j
b2wpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9w
YXRoIiwKKyAgICAgICAgY3JlYXRlX3Byb3RvY29sPShsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBG
b29DbGllbnRQcm90b2NvbCgqYXJncywgKiprd2FyZ3MpKSwKKyAgICApCisgICAgZGVmIHRlc3Rf
Y2xpZW50X2NyZWF0ZV9wcm90b2NvbF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRJc0luc3RhbmNlKHNlbGYuY2xpZW50LCBGb29DbGllbnRQcm90b2NvbCkKKworICAgIEB3aXRo
X3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KAorICAgICAgICAiL3BhdGgiLAorICAgICAgICBr
bGFzcz1Gb29DbGllbnRQcm90b2NvbCwKKyAgICAgICAgZGVwcmVjYXRpb25fd2FybmluZ3M9WyJy
ZW5hbWUga2xhc3MgdG8gY3JlYXRlX3Byb3RvY29sIl0sCisgICAgKQorICAgIGRlZiB0ZXN0X2Ns
aWVudF9rbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYuY2xp
ZW50LCBGb29DbGllbnRQcm90b2NvbCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhf
Y2xpZW50KAorICAgICAgICAiL3BhdGgiLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w9QmFyQ2xp
ZW50UHJvdG9jb2wsCisgICAgICAgIGtsYXNzPUZvb0NsaWVudFByb3RvY29sLAorICAgICAgICBk
ZXByZWNhdGlvbl93YXJuaW5ncz1bInJlbmFtZSBrbGFzcyB0byBjcmVhdGVfcHJvdG9jb2wiXSwK
KyAgICApCisgICAgZGVmIHRlc3RfY2xpZW50X2NyZWF0ZV9wcm90b2NvbF9vdmVyX2tsYXNzKHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5jbGllbnQsIEJhckNsaWVu
dFByb3RvY29sKQorCisgICAgQHdpdGhfc2VydmVyKGNsb3NlX3RpbWVvdXQ9NykKKyAgICBAd2l0
aF9jbGllbnQoIi9jbG9zZV90aW1lb3V0IikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfY2xvc2VfdGlt
ZW91dChzZWxmKToKKyAgICAgICAgY2xvc2VfdGltZW91dCA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
YWwoY2xvc2VfdGltZW91dCksIDcpCisKKyAgICBAd2l0aF9zZXJ2ZXIodGltZW91dD02LCBkZXBy
ZWNhdGlvbl93YXJuaW5ncz1bInJlbmFtZSB0aW1lb3V0IHRvIGNsb3NlX3RpbWVvdXQiXSkKKyAg
ICBAd2l0aF9jbGllbnQoIi9jbG9zZV90aW1lb3V0IikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdGlt
ZW91dF9iYWNrd2FyZHNfY29tcGF0aWJpbGl0eShzZWxmKToKKyAgICAgICAgY2xvc2VfdGltZW91
dCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoY2xvc2VfdGltZW91dCksIDYpCisKKyAgICBAd2l0
aF9zZXJ2ZXIoCisgICAgICAgIGNsb3NlX3RpbWVvdXQ9NywKKyAgICAgICAgdGltZW91dD02LAor
ICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5ncz1bInJlbmFtZSB0aW1lb3V0IHRvIGNsb3NlX3Rp
bWVvdXQiXSwKKyAgICApCisgICAgQHdpdGhfY2xpZW50KCIvY2xvc2VfdGltZW91dCIpCisgICAg
ZGVmIHRlc3Rfc2VydmVyX2Nsb3NlX3RpbWVvdXRfb3Zlcl90aW1lb3V0KHNlbGYpOgorICAgICAg
ICBjbG9zZV90aW1lb3V0ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVu
dC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChjbG9zZV90aW1lb3V0KSwg
NykKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCIvY2xvc2VfdGltZW91
dCIsIGNsb3NlX3RpbWVvdXQ9NykKKyAgICBkZWYgdGVzdF9jbGllbnRfY2xvc2VfdGltZW91dChz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5jbG9zZV90aW1lb3V0
LCA3KQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAd2l0aF9jbGllbnQoCisgICAgICAgICIv
Y2xvc2VfdGltZW91dCIsCisgICAgICAgIHRpbWVvdXQ9NiwKKyAgICAgICAgZGVwcmVjYXRpb25f
d2FybmluZ3M9WyJyZW5hbWUgdGltZW91dCB0byBjbG9zZV90aW1lb3V0Il0sCisgICAgKQorICAg
IGRlZiB0ZXN0X2NsaWVudF90aW1lb3V0X2JhY2t3YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LmNsb3NlX3RpbWVvdXQsIDYpCisK
KyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9jbG9zZV90
aW1lb3V0IiwKKyAgICAgICAgY2xvc2VfdGltZW91dD03LAorICAgICAgICB0aW1lb3V0PTYsCisg
ICAgICAgIGRlcHJlY2F0aW9uX3dhcm5pbmdzPVsicmVuYW1lIHRpbWVvdXQgdG8gY2xvc2VfdGlt
ZW91dCJdLAorICAgICkKKyAgICBkZWYgdGVzdF9jbGllbnRfY2xvc2VfdGltZW91dF9vdmVyX3Rp
bWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuY2xvc2Vf
dGltZW91dCwgNykKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCIvZXh0
ZW5zaW9ucyIpCisgICAgZGVmIHRlc3Rfbm9fZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBzZXJ2
ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQu
cmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9leHRlbnNpb25zLCByZXBy
KFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuY2xpZW50LmV4dGVuc2lv
bnMpLCByZXByKFtdKSkKKworICAgIEB3aXRoX3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09w
RXh0ZW5zaW9uRmFjdG9yeSgpXSkKKyAgICBAd2l0aF9jbGllbnQoIi9leHRlbnNpb25zIiwgZXh0
ZW5zaW9ucz1bQ2xpZW50Tm9PcEV4dGVuc2lvbkZhY3RvcnkoKV0pCisgICAgZGVmIHRlc3RfZXh0
ZW5zaW9uKHNlbGYpOgorICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtOb09wRXh0ZW5zaW9uKCldKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuY2xpZW50LmV4dGVuc2lvbnMpLCByZXByKFtOb09w
RXh0ZW5zaW9uKCldKSkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCIv
ZXh0ZW5zaW9ucyIsIGV4dGVuc2lvbnM9W0NsaWVudE5vT3BFeHRlbnNpb25GYWN0b3J5KCldKQor
ICAgIGRlZiB0ZXN0X2V4dGVuc2lvbl9ub3RfYWNjZXB0ZWQoc2VsZik6CisgICAgICAgIHNlcnZl
cl9leHRlbnNpb25zID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5y
ZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX2V4dGVuc2lvbnMsIHJlcHIo
W10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5jbGllbnQuZXh0ZW5zaW9u
cyksIHJlcHIoW10pKQorCisgICAgQHdpdGhfc2VydmVyKGV4dGVuc2lvbnM9W1NlcnZlck5vT3BF
eHRlbnNpb25GYWN0b3J5KCldKQorICAgIEB3aXRoX2NsaWVudCgiL2V4dGVuc2lvbnMiKQorICAg
IGRlZiB0ZXN0X2V4dGVuc2lvbl9ub3RfcmVxdWVzdGVkKHNlbGYpOgorICAgICAgICBzZXJ2ZXJf
ZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVj
digpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtd
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuY2xpZW50LmV4dGVuc2lvbnMp
LCByZXByKFtdKSkKKworICAgIEB3aXRoX3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09wRXh0
ZW5zaW9uRmFjdG9yeShbKCJmb28iLCBOb25lKV0pXSkKKyAgICBkZWYgdGVzdF9leHRlbnNpb25f
Y2xpZW50X3JlamVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhO
ZWdvdGlhdGlvbkVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCIvZXh0ZW5z
aW9ucyIsIGV4dGVuc2lvbnM9W0NsaWVudE5vT3BFeHRlbnNpb25GYWN0b3J5KCldKQorCisgICAg
QHdpdGhfc2VydmVyKAorICAgICAgICBleHRlbnNpb25zPVsKKyAgICAgICAgICAgICMgTm8gbWF0
Y2ggYmVjYXVzZSB0aGUgY2xpZW50IGRvZXNuJ3Qgc2VuZCBjbGllbnRfbWF4X3dpbmRvd19iaXRz
LgorICAgICAgICAgICAgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KGNsaWVudF9tYXhf
d2luZG93X2JpdHM9MTApLAorICAgICAgICAgICAgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0
b3J5KCksCisgICAgICAgIF0KKyAgICApCisgICAgQHdpdGhfY2xpZW50KCIvZXh0ZW5zaW9ucyIs
IGV4dGVuc2lvbnM9W0NsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgpXSkKKyAgICBkZWYg
dGVzdF9leHRlbnNpb25fbm9fbWF0Y2hfdGhlbl9tYXRjaChzZWxmKToKKyAgICAgICAgIyBUaGUg
b3JkZXIgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQgaGFzIHByaW9yaXR5LgorICAgICAgICBzZXJ2
ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQu
cmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VydmVyX2V4
dGVuc2lvbnMsIHJlcHIoW1Blck1lc3NhZ2VEZWZsYXRlKEZhbHNlLCBGYWxzZSwgMTUsIDE1KV0p
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIo
c2VsZi5jbGllbnQuZXh0ZW5zaW9ucyksCisgICAgICAgICAgICByZXByKFtQZXJNZXNzYWdlRGVm
bGF0ZShGYWxzZSwgRmFsc2UsIDE1LCAxNSldKSwKKyAgICAgICAgKQorCisgICAgQHdpdGhfc2Vy
dmVyKGV4dGVuc2lvbnM9W1NlcnZlclBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgpXSkKKyAgICBA
d2l0aF9jbGllbnQoIi9leHRlbnNpb25zIiwgZXh0ZW5zaW9ucz1bQ2xpZW50Tm9PcEV4dGVuc2lv
bkZhY3RvcnkoKV0pCisgICAgZGVmIHRlc3RfZXh0ZW5zaW9uX21pc21hdGNoKHNlbGYpOgorICAg
ICAgICBzZXJ2ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2Vs
Zi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9leHRlbnNp
b25zLCByZXByKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuY2xpZW50
LmV4dGVuc2lvbnMpLCByZXByKFtdKSkKKworICAgIEB3aXRoX3NlcnZlcigKKyAgICAgICAgZXh0
ZW5zaW9ucz1bU2VydmVyTm9PcEV4dGVuc2lvbkZhY3RvcnkoKSwgU2VydmVyUGVyTWVzc2FnZURl
ZmxhdGVGYWN0b3J5KCldCisgICAgKQorICAgIEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9leHRl
bnNpb25zIiwKKyAgICAgICAgZXh0ZW5zaW9ucz1bQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0
b3J5KCksIENsaWVudE5vT3BFeHRlbnNpb25GYWN0b3J5KCldLAorICAgICkKKyAgICBkZWYgdGVz
dF9leHRlbnNpb25fb3JkZXIoc2VsZik6CisgICAgICAgICMgVGhlIG9yZGVyIHJlcXVlc3RlZCBi
eSB0aGUgY2xpZW50IGhhcyBwcmlvcml0eS4KKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnMgPSBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlcnZlcl9leHRlbnNpb25zLAorICAgICAg
ICAgICAgcmVwcihbUGVyTWVzc2FnZURlZmxhdGUoRmFsc2UsIEZhbHNlLCAxNSwgMTUpLCBOb09w
RXh0ZW5zaW9uKCldKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcmVwcihzZWxmLmNsaWVudC5leHRlbnNpb25zKSwKKyAgICAgICAgICAgIHJlcHIo
W1Blck1lc3NhZ2VEZWZsYXRlKEZhbHNlLCBGYWxzZSwgMTUsIDE1KSwgTm9PcEV4dGVuc2lvbigp
XSksCisgICAgICAgICkKKworICAgIEB3aXRoX3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09w
RXh0ZW5zaW9uRmFjdG9yeSgpXSkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2Vi
U29ja2V0U2VydmVyUHJvdG9jb2wsICJwcm9jZXNzX2V4dGVuc2lvbnMiKQorICAgIGRlZiB0ZXN0
X2V4dGVuc2lvbnNfZXJyb3Ioc2VsZiwgX3Byb2Nlc3NfZXh0ZW5zaW9ucyk6CisgICAgICAgIF9w
cm9jZXNzX2V4dGVuc2lvbnMucmV0dXJuX3ZhbHVlID0gIngtbm8tb3AiLCBbTm9PcEV4dGVuc2lv
bigpXQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmVnb3RpYXRpb25FcnJvcik6
CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgKKyAgICAgICAgICAgICAgICAiL2V4dGVu
c2lvbnMiLCBleHRlbnNpb25zPVtDbGllbnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoKV0KKyAg
ICAgICAgICAgICkKKworICAgIEB3aXRoX3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09wRXh0
ZW5zaW9uRmFjdG9yeSgpXSkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29j
a2V0U2VydmVyUHJvdG9jb2wsICJwcm9jZXNzX2V4dGVuc2lvbnMiKQorICAgIGRlZiB0ZXN0X2V4
dGVuc2lvbnNfZXJyb3Jfbm9fZXh0ZW5zaW9ucyhzZWxmLCBfcHJvY2Vzc19leHRlbnNpb25zKToK
KyAgICAgICAgX3Byb2Nlc3NfZXh0ZW5zaW9ucy5yZXR1cm5fdmFsdWUgPSAieC1uby1vcCIsIFtO
b09wRXh0ZW5zaW9uKCldCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlk
SGFuZHNoYWtlKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCIvZXh0ZW5zaW9ucyIp
CisKKyAgICBAd2l0aF9zZXJ2ZXIoY29tcHJlc3Npb249ImRlZmxhdGUiKQorICAgIEB3aXRoX2Ns
aWVudCgiL2V4dGVuc2lvbnMiLCBjb21wcmVzc2lvbj0iZGVmbGF0ZSIpCisgICAgZGVmIHRlc3Rf
Y29tcHJlc3Npb25fZGVmbGF0ZShzZWxmKToKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnMgPSBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtQ
ZXJNZXNzYWdlRGVmbGF0ZShGYWxzZSwgRmFsc2UsIDE1LCAxNSldKQorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKHNlbGYuY2xpZW50LmV4dGVu
c2lvbnMpLAorICAgICAgICAgICAgcmVwcihbUGVyTWVzc2FnZURlZmxhdGUoRmFsc2UsIEZhbHNl
LCAxNSwgMTUpXSksCisgICAgICAgICkKKworICAgIEB3aXRoX3NlcnZlcigKKyAgICAgICAgZXh0
ZW5zaW9ucz1bCisgICAgICAgICAgICBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoCisg
ICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI9VHJ1ZSwgc2VydmVyX21h
eF93aW5kb3dfYml0cz0xMAorICAgICAgICAgICAgKQorICAgICAgICBdLAorICAgICAgICBjb21w
cmVzc2lvbj0iZGVmbGF0ZSIsICAjIG92ZXJyaWRkZW4gYnkgZXhwbGljaXQgY29uZmlnCisgICAg
KQorICAgIEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9leHRlbnNpb25zIiwKKyAgICAgICAgZXh0
ZW5zaW9ucz1bCisgICAgICAgICAgICBDbGllbnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoCisg
ICAgICAgICAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9VHJ1ZSwgY2xpZW50X21h
eF93aW5kb3dfYml0cz0xMgorICAgICAgICAgICAgKQorICAgICAgICBdLAorICAgICAgICBjb21w
cmVzc2lvbj0iZGVmbGF0ZSIsICAjIG92ZXJyaWRkZW4gYnkgZXhwbGljaXQgY29uZmlnCisgICAg
KQorICAgIGRlZiB0ZXN0X2NvbXByZXNzaW9uX2RlZmxhdGVfYW5kX2V4cGxpY2l0X2NvbmZpZyhz
ZWxmKToKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtQZXJNZXNzYWdlRGVmbGF0ZShUcnVl
LCBUcnVlLCAxMiwgMTApXSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgcmVwcihzZWxmLmNsaWVudC5leHRlbnNpb25zKSwgcmVwcihbUGVyTWVzc2Fn
ZURlZmxhdGUoVHJ1ZSwgVHJ1ZSwgMTAsIDEyKV0pCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X2NvbXByZXNzaW9uX3Vuc3VwcG9ydGVkX3NlcnZlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfc2VydmVy
KGNvbXByZXNzaW9uPSJ4eiIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X2Nv
bXByZXNzaW9uX3Vuc3VwcG9ydGVkX2NsaWVudChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KGNv
bXByZXNzaW9uPSJ4eiIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgi
L3N1YnByb3RvY29sIikKKyAgICBkZWYgdGVzdF9ub19zdWJwcm90b2NvbChzZWxmKToKKyAgICAg
ICAgc2VydmVyX3N1YnByb3RvY29sID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3N1YnByb3Rv
Y29sLCByZXByKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnN1
YnByb3RvY29sLCBOb25lKQorCisgICAgQHdpdGhfc2VydmVyKHN1YnByb3RvY29scz1bInN1cGVy
Y2hhdCIsICJjaGF0Il0pCisgICAgQHdpdGhfY2xpZW50KCIvc3VicHJvdG9jb2wiLCBzdWJwcm90
b2NvbHM9WyJvdGhlcmNoYXQiLCAiY2hhdCJdKQorICAgIGRlZiB0ZXN0X3N1YnByb3RvY29sKHNl
bGYpOgorICAgICAgICBzZXJ2ZXJfc3VicHJvdG9jb2wgPSBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2
ZXJfc3VicHJvdG9jb2wsIHJlcHIoImNoYXQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLmNsaWVudC5zdWJwcm90b2NvbCwgImNoYXQiKQorCisgICAgQHdpdGhfc2VydmVyKHN1YnBy
b3RvY29scz1bInN1cGVyY2hhdCJdKQorICAgIEB3aXRoX2NsaWVudCgiL3N1YnByb3RvY29sIiwg
c3VicHJvdG9jb2xzPVsib3RoZXJjaGF0Il0pCisgICAgZGVmIHRlc3Rfc3VicHJvdG9jb2xfbm90
X2FjY2VwdGVkKHNlbGYpOgorICAgICAgICBzZXJ2ZXJfc3VicHJvdG9jb2wgPSBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZXJ2ZXJfc3VicHJvdG9jb2wsIHJlcHIoTm9uZSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5jbGllbnQuc3VicHJvdG9jb2wsIE5vbmUpCisKKyAgICBAd2l0aF9zZXJ2
ZXIoKQorICAgIEB3aXRoX2NsaWVudCgiL3N1YnByb3RvY29sIiwgc3VicHJvdG9jb2xzPVsib3Ro
ZXJjaGF0IiwgImNoYXQiXSkKKyAgICBkZWYgdGVzdF9zdWJwcm90b2NvbF9ub3Rfb2ZmZXJlZChz
ZWxmKToKKyAgICAgICAgc2VydmVyX3N1YnByb3RvY29sID0gc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
dmVyX3N1YnByb3RvY29sLCByZXByKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuY2xpZW50LnN1YnByb3RvY29sLCBOb25lKQorCisgICAgQHdpdGhfc2VydmVyKHN1YnByb3Rv
Y29scz1bInN1cGVyY2hhdCIsICJjaGF0Il0pCisgICAgQHdpdGhfY2xpZW50KCIvc3VicHJvdG9j
b2wiKQorICAgIGRlZiB0ZXN0X3N1YnByb3RvY29sX25vdF9yZXF1ZXN0ZWQoc2VsZik6CisgICAg
ICAgIHNlcnZlcl9zdWJwcm90b2NvbCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2Vs
Zi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9zdWJwcm90
b2NvbCwgcmVwcihOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5z
dWJwcm90b2NvbCwgTm9uZSkKKworICAgIEB3aXRoX3NlcnZlcihzdWJwcm90b2NvbHM9WyJzdXBl
cmNoYXQiXSkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0U2VydmVy
UHJvdG9jb2wsICJwcm9jZXNzX3N1YnByb3RvY29sIikKKyAgICBkZWYgdGVzdF9zdWJwcm90b2Nv
bF9lcnJvcihzZWxmLCBfcHJvY2Vzc19zdWJwcm90b2NvbCk6CisgICAgICAgIF9wcm9jZXNzX3N1
YnByb3RvY29sLnJldHVybl92YWx1ZSA9ICJzdXBlcmNoYXQiCisKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhOZWdvdGlhdGlvbkVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRf
Y2xpZW50KCIvc3VicHJvdG9jb2wiLCBzdWJwcm90b2NvbHM9WyJvdGhlcmNoYXQiXSkKKyAgICAg
ICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKworICAgIEB3aXRoX3NlcnZlcihzdWJwcm90b2NvbHM9
WyJzdXBlcmNoYXQiXSkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0
U2VydmVyUHJvdG9jb2wsICJwcm9jZXNzX3N1YnByb3RvY29sIikKKyAgICBkZWYgdGVzdF9zdWJw
cm90b2NvbF9lcnJvcl9ub19zdWJwcm90b2NvbHMoc2VsZiwgX3Byb2Nlc3Nfc3VicHJvdG9jb2wp
OgorICAgICAgICBfcHJvY2Vzc19zdWJwcm90b2NvbC5yZXR1cm5fdmFsdWUgPSAic3VwZXJjaGF0
IgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhhbmRzaGFrZSk6Cisg
ICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgiL3N1YnByb3RvY29sIikKKyAgICAgICAgc2Vs
Zi5ydW5fbG9vcF9vbmNlKCkKKworICAgIEB3aXRoX3NlcnZlcihzdWJwcm90b2NvbHM9WyJzdXBl
cmNoYXQiLCAiY2hhdCJdKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChXZWJTb2Nr
ZXRTZXJ2ZXJQcm90b2NvbCwgInByb2Nlc3Nfc3VicHJvdG9jb2wiKQorICAgIGRlZiB0ZXN0X3N1
YnByb3RvY29sX2Vycm9yX3R3b19zdWJwcm90b2NvbHMoc2VsZiwgX3Byb2Nlc3Nfc3VicHJvdG9j
b2wpOgorICAgICAgICBfcHJvY2Vzc19zdWJwcm90b2NvbC5yZXR1cm5fdmFsdWUgPSAic3VwZXJj
aGF0LCBjaGF0IgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhhbmRz
aGFrZSk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgiL3N1YnByb3RvY29sIiwgc3Vi
cHJvdG9jb2xzPVsic3VwZXJjaGF0IiwgImNoYXQiXSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9v
bmNlKCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndl
YnNvY2tldHMuc2VydmVyLnJlYWRfcmVxdWVzdCIpCisgICAgZGVmIHRlc3Rfc2VydmVyX3JlY2Vp
dmVzX21hbGZvcm1lZF9yZXF1ZXN0KHNlbGYsIF9yZWFkX3JlcXVlc3QpOgorICAgICAgICBfcmVh
ZF9yZXF1ZXN0LnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcigicmVhZF9yZXF1ZXN0IGZhaWxlZCIp
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkSGFuZHNoYWtlKToKKyAg
ICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAg
QHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndlYnNvY2tldHMuY2xpZW50LnJlYWRfcmVzcG9uc2UiKQor
ICAgIGRlZiB0ZXN0X2NsaWVudF9yZWNlaXZlc19tYWxmb3JtZWRfcmVzcG9uc2Uoc2VsZiwgX3Jl
YWRfcmVzcG9uc2UpOgorICAgICAgICBfcmVhZF9yZXNwb25zZS5zaWRlX2VmZmVjdCA9IFZhbHVl
RXJyb3IoInJlYWRfcmVzcG9uc2UgZmFpbGVkIikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKEludmFsaWRIYW5kc2hha2UpOgorICAgICAgICAgICAgc2VsZi5zdGFydF9jbGllbnQo
KQorICAgICAgICBzZWxmLnJ1bl9sb29wX29uY2UoKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAg
ICBAdW5pdHRlc3QubW9jay5wYXRjaCgid2Vic29ja2V0cy5jbGllbnQuYnVpbGRfcmVxdWVzdCIp
CisgICAgZGVmIHRlc3RfY2xpZW50X3NlbmRzX2ludmFsaWRfaGFuZHNoYWtlX3JlcXVlc3Qoc2Vs
ZiwgX2J1aWxkX3JlcXVlc3QpOgorICAgICAgICBkZWYgd3JvbmdfYnVpbGRfcmVxdWVzdChoZWFk
ZXJzKToKKyAgICAgICAgICAgIHJldHVybiAiNDIiCisKKyAgICAgICAgX2J1aWxkX3JlcXVlc3Qu
c2lkZV9lZmZlY3QgPSB3cm9uZ19idWlsZF9yZXF1ZXN0CisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xp
ZW50KCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndl
YnNvY2tldHMuc2VydmVyLmJ1aWxkX3Jlc3BvbnNlIikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfc2Vu
ZHNfaW52YWxpZF9oYW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgX2J1aWxkX3Jlc3BvbnNlKToKKyAg
ICAgICAgZGVmIHdyb25nX2J1aWxkX3Jlc3BvbnNlKGhlYWRlcnMsIGtleSk6CisgICAgICAgICAg
ICByZXR1cm4gYnVpbGRfcmVzcG9uc2UoaGVhZGVycywgIjQyIikKKworICAgICAgICBfYnVpbGRf
cmVzcG9uc2Uuc2lkZV9lZmZlY3QgPSB3cm9uZ19idWlsZF9yZXNwb25zZQorCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgICAgICAgICBzZWxm
LnN0YXJ0X2NsaWVudCgpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB1bml0dGVzdC5tb2Nr
LnBhdGNoKCJ3ZWJzb2NrZXRzLmNsaWVudC5yZWFkX3Jlc3BvbnNlIikKKyAgICBkZWYgdGVzdF9z
ZXJ2ZXJfZG9lc19ub3Rfc3dpdGNoX3Byb3RvY29scyhzZWxmLCBfcmVhZF9yZXNwb25zZSk6Cisg
ICAgICAgIGFzeW5jIGRlZiB3cm9uZ19yZWFkX3Jlc3BvbnNlKHN0cmVhbSk6CisgICAgICAgICAg
ICBzdGF0dXNfY29kZSwgcmVhc29uLCBoZWFkZXJzID0gYXdhaXQgcmVhZF9yZXNwb25zZShzdHJl
YW0pCisgICAgICAgICAgICByZXR1cm4gNDAwLCAiQmFkIFJlcXVlc3QiLCBoZWFkZXJzCisKKyAg
ICAgICAgX3JlYWRfcmVzcG9uc2Uuc2lkZV9lZmZlY3QgPSB3cm9uZ19yZWFkX3Jlc3BvbnNlCisK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkU3RhdHVzQ29kZSk6CisgICAg
ICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgp
CisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCJ3ZWJzb2Nr
ZXRzLnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9jZXNzX3JlcXVlc3QiKQorICAg
IGRlZiB0ZXN0X3NlcnZlcl9lcnJvcl9pbl9oYW5kc2hha2Uoc2VsZiwgX3Byb2Nlc3NfcmVxdWVz
dCk6CisgICAgICAgIF9wcm9jZXNzX3JlcXVlc3Quc2lkZV9lZmZlY3QgPSBFeGNlcHRpb24oInBy
b2Nlc3NfcmVxdWVzdCBjcmFzaGVkIikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRIYW5kc2hha2UpOgorICAgICAgICAgICAgc2VsZi5zdGFydF9jbGllbnQoKQorCisg
ICAgQHdpdGhfc2VydmVyKCkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgid2Vic29ja2V0cy5z
ZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wuc2VuZCIpCisgICAgZGVmIHRlc3Rfc2VydmVy
X2hhbmRsZXJfY3Jhc2hlcyhzZWxmLCBzZW5kKToKKyAgICAgICAgc2VuZC5zaWRlX2VmZmVjdCA9
IFZhbHVlRXJyb3IoInNlbmQgZmFpbGVkIikKKworICAgICAgICB3aXRoIHNlbGYudGVtcF9jbGll
bnQoKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGll
bnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENv
bm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorCisgICAgICAgICMgQ29ubmVjdGlvbiBlbmRzIHdp
dGggYW4gdW5leHBlY3RlZCBlcnJvci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNs
aWVudC5jbG9zZV9jb2RlLCAxMDExKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAdW5pdHRl
c3QubW9jay5wYXRjaCgid2Vic29ja2V0cy5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wu
Y2xvc2UiKQorICAgIGRlZiB0ZXN0X3NlcnZlcl9jbG9zZV9jcmFzaGVzKHNlbGYsIGNsb3NlKToK
KyAgICAgICAgY2xvc2Uuc2lkZV9lZmZlY3QgPSBWYWx1ZUVycm9yKCJjbG9zZSBmYWlsZWQiKQor
CisgICAgICAgIHdpdGggc2VsZi50ZW1wX2NsaWVudCgpOgorICAgICAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5zZW5kKCJIZWxsbyEiKSkKKyAgICAgICAg
ICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2
KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGx5LCAiSGVsbG8hIikKKworICAg
ICAgICAjIENvbm5lY3Rpb24gZW5kcyB3aXRoIGFuIGFibm9ybWFsIGNsb3N1cmUuCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuY2xvc2VfY29kZSwgMTAwNikKKworICAgIEB3
aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRj
aC5vYmplY3QoV2ViU29ja2V0Q2xpZW50UHJvdG9jb2wsICJoYW5kc2hha2UiKQorICAgIGRlZiB0
ZXN0X2NsaWVudF9jbG9zZXNfY29ubmVjdGlvbl9iZWZvcmVfaGFuZHNoYWtlKHNlbGYsIGhhbmRz
aGFrZSk6CisgICAgICAgICMgV2UgaGF2ZSBtb2NrZWQgdGhlIGhhbmRzaGFrZSgpIG1ldGhvZCB0
byBwcmV2ZW50IHRoZSBjbGllbnQgZnJvbQorICAgICAgICAjIHBlcmZvcm1pbmcgdGhlIG9wZW5p
bmcgaGFuZHNoYWtlLiBGb3JjZSBpdCB0byBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAg
c2VsZi5jbGllbnQudHJhbnNwb3J0LmNsb3NlKCkKKyAgICAgICAgIyBUaGUgc2VydmVyIHNob3Vs
ZCBzdG9wIHByb3Blcmx5IGFueXdheS4gSXQgdXNlZCB0byBoYW5nIGJlY2F1c2UgdGhlCisgICAg
ICAgICMgdGFzayBoYW5kbGluZyB0aGUgY29ubmVjdGlvbiB3YXMgd2FpdGluZyBmb3IgdGhlIG9w
ZW5pbmcgaGFuZHNoYWtlLgorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1TbG93
T3BlbmluZ0hhbmRzaGFrZVByb3RvY29sKQorICAgIGRlZiB0ZXN0X3NlcnZlcl9zaHV0c19kb3du
X2R1cmluZ19vcGVuaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNhbGxf
bGF0ZXIoNSAqIE1TLCBzZWxmLnNlcnZlci5jbG9zZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhJbnZhbGlkU3RhdHVzQ29kZSkgYXMgcmFpc2VkOgorICAgICAgICAgICAgc2VsZi5z
dGFydF9jbGllbnQoKQorICAgICAgICBleGNlcHRpb24gPSByYWlzZWQuZXhjZXB0aW9uCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoZXhjZXB0aW9uKSwgInNlcnZl
ciByZWplY3RlZCBXZWJTb2NrZXQgY29ubmVjdGlvbjogSFRUUCA1MDMiCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNlcHRpb24uc3RhdHVzX2NvZGUsIDUwMykKKworICAg
IEB3aXRoX3NlcnZlcigpCisgICAgZGVmIHRlc3Rfc2VydmVyX3NodXRzX2Rvd25fZHVyaW5nX2Nv
bm5lY3Rpb25faGFuZGxpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi50ZW1wX2NsaWVudCgp
OgorICAgICAgICAgICAgc2VydmVyX3dzID0gbmV4dChpdGVyKHNlbGYuc2VydmVyLndlYnNvY2tl
dHMpKQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgICAgICBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKworICAgICAgICAj
IFdlYnNvY2tldCBjb25uZWN0aW9uIGNsb3NlcyBwcm9wZXJseSB3aXRoIDEwMDEgR29pbmcgQXdh
eS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5jbG9zZV9jb2RlLCAxMDAx
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl93cy5jbG9zZV9jb2RlLCAxMDAxKQor
CisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfc2h1dHNfZG93bl93YWl0
c191bnRpbF9oYW5kbGVyc190ZXJtaW5hdGUoc2VsZik6CisgICAgICAgICMgVGhpcyBoYW5kbGVy
IHdhaXRzIGEgYml0IGFmdGVyIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCBpbiBvcmRlcgorICAg
ICAgICAjIHRvIHRlc3QgdGhhdCB3YWl0X2Nsb3NlZCgpIHJlYWxseSB3YWl0cyBmb3IgaGFuZGxl
cnMgdG8gY29tcGxldGUuCisgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCIvc2xvd19zdG9wIikK
KyAgICAgICAgc2VydmVyX3dzID0gbmV4dChpdGVyKHNlbGYuc2VydmVyLndlYnNvY2tldHMpKQor
CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBoYW5kbGVyIHRhc2sga2VlcHMgcnVubmluZyBhZnRl
ciBjbG9zZSgpLgorICAgICAgICBzZWxmLnNlcnZlci5jbG9zZSgpCisgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcChNUykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uoc2VydmVyX3dzLmhhbmRsZXJfdGFzay5kb25lKCkpCisKKyAgICAgICAgIyBUZXN0
IHRoYXQgdGhlIGhhbmRsZXIgdGFzayB0ZXJtaW5hdGVzIGJlZm9yZSB3YWl0X2Nsb3NlZCgpIHJl
dHVybnMuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5zZXJ2ZXIu
d2FpdF9jbG9zZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlcl93cy5oYW5kbGVy
X3Rhc2suZG9uZSgpKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1Gb3JiaWRk
ZW5TZXJ2ZXJQcm90b2NvbCkKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0YXR1c19lcnJvcl9kdXJp
bmdfY2xpZW50X2Nvbm5lY3Qoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFN0YXR1c0NvZGUpIGFzIHJhaXNlZDoKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xp
ZW50KCkKKyAgICAgICAgZXhjZXB0aW9uID0gcmFpc2VkLmV4Y2VwdGlvbgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKGV4Y2VwdGlvbiksICJzZXJ2ZXIgcmVqZWN0
ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb246IEhUVFAgNDAzIgorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhjZXB0aW9uLnN0YXR1c19jb2RlLCA0MDMpCisKKyAgICBAd2l0aF9z
ZXJ2ZXIoKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKAorICAgICAgICAid2Vic29ja2V0cy5z
ZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wud3JpdGVfaHR0cF9yZXNwb25zZSIKKyAgICAp
CisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndlYnNvY2tldHMuc2VydmVyLldlYlNvY2tldFNl
cnZlclByb3RvY29sLnJlYWRfaHR0cF9yZXF1ZXN0IikKKyAgICBkZWYgdGVzdF9jb25uZWN0aW9u
X2Vycm9yX2R1cmluZ19vcGVuaW5nX2hhbmRzaGFrZSgKKyAgICAgICAgc2VsZiwgX3JlYWRfaHR0
cF9yZXF1ZXN0LCBfd3JpdGVfaHR0cF9yZXNwb25zZQorICAgICk6CisgICAgICAgIF9yZWFkX2h0
dHBfcmVxdWVzdC5zaWRlX2VmZmVjdCA9IENvbm5lY3Rpb25FcnJvcgorCisgICAgICAgICMgVGhp
cyBleGNlcHRpb24gaXMgY3VycmVudGx5IHBsYXRmb3JtLWRlcGVuZGVudC4gSXQgd2FzIG9ic2Vy
dmVkIHRvCisgICAgICAgICMgYmUgQ29ubmVjdGlvblJlc2V0RXJyb3Igb24gTGludXggaW4gdGhl
IG5vbi1UTFMgY2FzZSwgYW5kCisgICAgICAgICMgSW52YWxpZE1lc3NhZ2Ugb3RoZXJ3aXNlIChp
bmNsdWRpbmcgYm90aCBMaW51eCBhbmQgbWFjT1MpLiBUaGlzCisgICAgICAgICMgZG9lc24ndCBt
YXR0ZXIgdGhvdWdoIHNpbmNlIHRoaXMgdGVzdCBpcyBwcmltYXJpbHkgZm9yIHRlc3RpbmcgYQor
ICAgICAgICAjIGNvZGUgcGF0aCBvbiB0aGUgc2VydmVyIHNpZGUuCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50
KCkKKworICAgICAgICAjIE5vIHJlc3BvbnNlIG11c3Qgbm90IGJlIHdyaXR0ZW4gaWYgdGhlIG5l
dHdvcmsgY29ubmVjdGlvbiBpcyBicm9rZW4uCisgICAgICAgIF93cml0ZV9odHRwX3Jlc3BvbnNl
LmFzc2VydF9ub3RfY2FsbGVkKCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHVuaXR0ZXN0
Lm1vY2sucGF0Y2goIndlYnNvY2tldHMuc2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLmNs
b3NlIikKKyAgICBkZWYgdGVzdF9jb25uZWN0aW9uX2Vycm9yX2R1cmluZ19jbG9zaW5nX2hhbmRz
aGFrZShzZWxmLCBjbG9zZSk6CisgICAgICAgIGNsb3NlLnNpZGVfZWZmZWN0ID0gQ29ubmVjdGlv
bkVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLnRlbXBfY2xpZW50KCk6CisgICAgICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnNlbmQoIkhlbGxvISIpKQor
ICAgICAgICAgICAgcmVwbHkgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xp
ZW50LnJlY3YoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwbHksICJIZWxsbyEi
KQorCisgICAgICAgICMgQ29ubmVjdGlvbiBlbmRzIHdpdGggYW4gYWJub3JtYWwgY2xvc3VyZS4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5jbG9zZV9jb2RlLCAxMDA2KQor
CisKK2NsYXNzIENsaWVudFNlcnZlclRlc3RzKAorICAgIENvbW1vbkNsaWVudFNlcnZlclRlc3Rz
LCBDbGllbnRTZXJ2ZXJUZXN0c01peGluLCBBc3luY2lvVGVzdENhc2UKKyk6CisgICAgcGFzcwor
CisKK2NsYXNzIFNlY3VyZUNsaWVudFNlcnZlclRlc3RzKAorICAgIENvbW1vbkNsaWVudFNlcnZl
clRlc3RzLCBTZWN1cmVDbGllbnRTZXJ2ZXJUZXN0c01peGluLCBBc3luY2lvVGVzdENhc2UKKyk6
CisKKyAgICAjIFRMUyBvdmVyIFVuaXggc29ja2V0cyBkb2Vzbid0IG1ha2Ugc2Vuc2UuCisgICAg
dGVzdF91bml4X3NvY2tldCA9IE5vbmUKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgZGVmIHRl
c3Rfd3NfdXJpX2lzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY29ubmVjdChnZXRfc2VydmVyX3VyaShzZWxm
LnNlcnZlciwgc2VjdXJlPUZhbHNlKSwgc3NsPXNlbGYuY2xpZW50X2NvbnRleHQpCisKKyAgICBA
d2l0aF9zZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X3JlZGlyZWN0X2luc2VjdXJlKHNlbGYpOgorICAg
ICAgICB3aXRoIHRlbXBfdGVzdF9yZWRpcmVjdGluZ19zZXJ2ZXIoCisgICAgICAgICAgICBzZWxm
LCBodHRwLkhUVFBTdGF0dXMuRk9VTkQsIGZvcmNlX2luc2VjdXJlPVRydWUKKyAgICAgICAgKToK
KyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhhbmRzaGFrZSk6Cisg
ICAgICAgICAgICAgICAgd2l0aCB0ZW1wX3Rlc3RfY2xpZW50KHNlbGYpOgorICAgICAgICAgICAg
ICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3QgcmFpc2UiKSAgIyBwcmFnbWE6IG5vIGNvdmVyCisK
KworY2xhc3MgQ2xpZW50U2VydmVyT3JpZ2luVGVzdHMoQXN5bmNpb1Rlc3RDYXNlKToKKyAgICBk
ZWYgdGVzdF9jaGVja2luZ19vcmlnaW5fc3VjY2VlZHMoc2VsZik6CisgICAgICAgIHNlcnZlciA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICBzZXJ2ZShoYW5kbGVy
LCAibG9jYWxob3N0IiwgMCwgb3JpZ2lucz1bImh0dHA6Ly9sb2NhbGhvc3QiXSkKKyAgICAgICAg
KQorICAgICAgICBjbGllbnQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgY29ubmVjdChnZXRfc2VydmVyX3VyaShzZXJ2ZXIpLCBvcmlnaW49Imh0dHA6Ly9sb2Nh
bGhvc3QiKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShjbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQucmVjdigpKSwgIkhlbGxvISIpCisKKyAgICAg
ICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQuY2xvc2UoKSkKKyAgICAgICAg
c2VydmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2
ZXIud2FpdF9jbG9zZWQoKSkKKworICAgIGRlZiB0ZXN0X2NoZWNraW5nX29yaWdpbl9mYWlscyhz
ZWxmKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAg
ICAgICAgICAgIHNlcnZlKGhhbmRsZXIsICJsb2NhbGhvc3QiLCAwLCBvcmlnaW5zPVsiaHR0cDov
L2xvY2FsaG9zdCJdKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNS
ZWdleCgKKyAgICAgICAgICAgIEludmFsaWRIYW5kc2hha2UsICJzZXJ2ZXIgcmVqZWN0ZWQgV2Vi
U29ja2V0IGNvbm5lY3Rpb246IEhUVFAgNDAzIgorICAgICAgICApOgorICAgICAgICAgICAgc2Vs
Zi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgICAgICBjb25uZWN0KGdldF9z
ZXJ2ZXJfdXJpKHNlcnZlciksIG9yaWdpbj0iaHR0cDovL290aGVyaG9zdCIpCisgICAgICAgICAg
ICApCisKKyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKworICAgIGRlZiB0ZXN0X2NoZWNraW5n
X29yaWdpbnNfZmFpbHNfd2l0aF9tdWx0aXBsZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICBzZXJ2
ZXIgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgc2VydmUoaGFu
ZGxlciwgImxvY2FsaG9zdCIsIDAsIG9yaWdpbnM9WyJodHRwOi8vbG9jYWxob3N0Il0pCisgICAg
ICAgICkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAg
SW52YWxpZEhhbmRzaGFrZSwgInNlcnZlciByZWplY3RlZCBXZWJTb2NrZXQgY29ubmVjdGlvbjog
SFRUUCA0MDAiCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKAorICAgICAgICAgICAgICAgIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgICAgIGdl
dF9zZXJ2ZXJfdXJpKHNlcnZlciksCisgICAgICAgICAgICAgICAgICAgIG9yaWdpbj0iaHR0cDov
L2xvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2hlYWRlcnM9WygiT3JpZ2lu
IiwgImh0dHA6Ly9vdGhlcmhvc3QiKV0sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
KQorCisgICAgICAgIHNlcnZlci5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VydmVyLndhaXRfY2xvc2VkKCkpCisKKyAgICBkZWYgdGVzdF9jaGVja2luZ19s
YWNrX29mX29yaWdpbl9zdWNjZWVkcyhzZWxmKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHNlcnZlKGhhbmRsZXIsICJsb2NhbGhv
c3QiLCAwLCBvcmlnaW5zPVtOb25lXSkKKyAgICAgICAgKQorICAgICAgICBjbGllbnQgPSBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkp
CisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQuc2VuZCgiSGVs
bG8hIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShjbGllbnQucmVjdigpKSwgIkhlbGxvISIpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShjbGllbnQuY2xvc2UoKSkKKyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAg
ICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkK
KworICAgIGRlZiB0ZXN0X2NoZWNraW5nX2xhY2tfb2Zfb3JpZ2luX3N1Y2NlZWRzX2JhY2t3YXJk
c19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5p
bmdzKHJlY29yZD1UcnVlKSBhcyByZWNvcmRlZF93YXJuaW5nczoKKyAgICAgICAgICAgIHNlcnZl
ciA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICAgICAgc2VydmUo
aGFuZGxlciwgImxvY2FsaG9zdCIsIDAsIG9yaWdpbnM9WyIiXSkKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIGNsaWVudCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoY29ubmVjdChn
ZXRfc2VydmVyX3VyaShzZXJ2ZXIpKSkKKworICAgICAgICBzZWxmLmFzc2VydERlcHJlY2F0aW9u
V2FybmluZ3MoCisgICAgICAgICAgICByZWNvcmRlZF93YXJuaW5ncywgWyJ1c2UgTm9uZSBpbnN0
ZWFkIG9mICcnIGluIG9yaWdpbnMiXQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShjbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQucmVjdigpKSwgIkhl
bGxvISIpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQuY2xv
c2UoKSkKKyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKworCitjbGFzcyBZaWVsZEZyb21UZXN0
cyhBc3luY2lvVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2NsaWVudChzZWxmKToKKyAgICAgICAg
c3RhcnRfc2VydmVyID0gc2VydmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDApCisgICAgICAgIHNl
cnZlciA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQorCisgICAg
ICAgICMgQGFzeW5jaW8uY29yb3V0aW5lIGlzIGRlcHJlY2F0ZWQgb24gUHl0aG9uIOKJpSAzLjgK
KyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSk6CisKKyAg
ICAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQorICAgICAgICAgICAgZGVmIHJ1bl9jbGllbnQo
KToKKyAgICAgICAgICAgICAgICAjIFlpZWxkIGZyb20gY29ubmVjdC4KKyAgICAgICAgICAgICAg
ICBjbGllbnQgPSB5aWVsZCBmcm9tIGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuT1BFTikK
KyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGNsaWVudC5jbG9zZSgpCisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMT1NFRCkKKworICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bl9jbGllbnQoKSkKKworICAgICAgICBz
ZXJ2ZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlcnZl
ci53YWl0X2Nsb3NlZCgpKQorCisgICAgZGVmIHRlc3Rfc2VydmVyKHNlbGYpOgorICAgICAgICAj
IEBhc3luY2lvLmNvcm91dGluZSBpcyBkZXByZWNhdGVkIG9uIFB5dGhvbiDiiaUgMy44CisgICAg
ICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpOgorCisgICAgICAg
ICAgICBAYXN5bmNpby5jb3JvdXRpbmUKKyAgICAgICAgICAgIGRlZiBydW5fc2VydmVyKCk6Cisg
ICAgICAgICAgICAgICAgIyBZaWVsZCBmcm9tIHNlcnZlLgorICAgICAgICAgICAgICAgIHNlcnZl
ciA9IHlpZWxkIGZyb20gc2VydmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDApCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5zb2NrZXRzKQorICAgICAgICAgICAgICAgIHNl
cnZlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZXJ2ZXIud2FpdF9jbG9z
ZWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLnNvY2tldHMpCisK
KyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW5fc2VydmVyKCkpCisKKwor
Y2xhc3MgQXN5bmNBd2FpdFRlc3RzKEFzeW5jaW9UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY2xp
ZW50KHNlbGYpOgorICAgICAgICBzdGFydF9zZXJ2ZXIgPSBzZXJ2ZShoYW5kbGVyLCAibG9jYWxo
b3N0IiwgMCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
dGFydF9zZXJ2ZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAg
ICAgICMgQXdhaXQgY29ubmVjdC4KKyAgICAgICAgICAgIGNsaWVudCA9IGF3YWl0IGNvbm5lY3Qo
Z2V0X3NlcnZlcl91cmkoc2VydmVyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50LnN0YXRlLCBTdGF0ZS5PUEVOKQorICAgICAgICAgICAgYXdhaXQgY2xpZW50LmNsb3NlKCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTE9TRUQp
CisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW5fY2xpZW50KCkpCisK
KyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKworICAgIGRlZiB0ZXN0X3NlcnZlcihzZWxmKToK
KyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIoKToKKyAgICAgICAgICAgICMgQXdhaXQgc2Vy
dmUuCisgICAgICAgICAgICBzZXJ2ZXIgPSBhd2FpdCBzZXJ2ZShoYW5kbGVyLCAibG9jYWxob3N0
IiwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc29ja2V0cykKKyAgICAg
ICAgICAgIHNlcnZlci5jbG9zZSgpCisgICAgICAgICAgICBhd2FpdCBzZXJ2ZXIud2FpdF9jbG9z
ZWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuc29ja2V0cykKKworICAg
ICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bl9zZXJ2ZXIoKSkKKworCitjbGFz
cyBDb250ZXh0TWFuYWdlclRlc3RzKEFzeW5jaW9UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY2xp
ZW50KHNlbGYpOgorICAgICAgICBzdGFydF9zZXJ2ZXIgPSBzZXJ2ZShoYW5kbGVyLCAibG9jYWxo
b3N0IiwgMCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
dGFydF9zZXJ2ZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAg
ICAgICMgVXNlIGNvbm5lY3QgYXMgYW4gYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlci4KKyAg
ICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChnZXRfc2VydmVyX3VyaShzZXJ2ZXIpKSBhcyBj
bGllbnQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0
YXRlLk9QRU4pCisKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBleGl0aW5nIHRoZSBjb250ZXh0
IG1hbmFnZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMT1NFRCkKKworICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHJ1bl9jbGllbnQoKSkKKworICAgICAgICBzZXJ2ZXIuY2xvc2UoKQor
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlcnZlci53YWl0X2Nsb3NlZCgp
KQorCisgICAgZGVmIHRlc3Rfc2VydmVyKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgcnVuX3Nl
cnZlcigpOgorICAgICAgICAgICAgIyBVc2Ugc2VydmUgYXMgYW4gYXN5bmNocm9ub3VzIGNvbnRl
eHQgbWFuYWdlci4KKyAgICAgICAgICAgIGFzeW5jIHdpdGggc2VydmUoaGFuZGxlciwgImxvY2Fs
aG9zdCIsIDApIGFzIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLnNvY2tldHMpCisKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBleGl0aW5nIHRoZSBjb250
ZXh0IG1hbmFnZXIgY2xvc2VkIHRoZSBzZXJ2ZXIuCisgICAgICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHNlcnZlci5zb2NrZXRzKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxl
dGUocnVuX3NlcnZlcigpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2Nr
ZXQsICJBRl9VTklYIiksICJ0aGlzIHRlc3QgcmVxdWlyZXMgVW5peCBzb2NrZXRzIikKKyAgICBk
ZWYgdGVzdF91bml4X3NlcnZlcihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIo
cGF0aCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIHVuaXhfc2VydmUoaGFuZGxlciwgcGF0aCkg
YXMgc2VydmVyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc29ja2V0
cykKKworICAgICAgICAgICAgIyBDaGVjayB0aGF0IGV4aXRpbmcgdGhlIGNvbnRleHQgbWFuYWdl
ciBjbG9zZWQgdGhlIHNlcnZlci4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVy
LnNvY2tldHMpCisKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBh
cyB0ZW1wX2RpcjoKKyAgICAgICAgICAgIHBhdGggPSBieXRlcyhwYXRobGliLlBhdGgodGVtcF9k
aXIpIC8gIndlYnNvY2tldHMiKQorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShydW5fc2VydmVyKHBhdGgpKQorCisKK2NsYXNzIEFzeW5jSXRlcmF0b3JUZXN0cyhBc3lu
Y2lvVGVzdENhc2UpOgorCisgICAgIyBUaGlzIGlzIGEgcHJvdG9jb2wtbGV2ZWwgZmVhdHVyZSwg
YnV0IHNpbmNlIGl0J3MgYSBoaWdoLWxldmVsIEFQSSwgaXQgaXMKKyAgICAjIG11Y2ggZWFzaWVy
IHRvIGV4ZXJjaXNlIGF0IHRoZSBjbGllbnQgb3Igc2VydmVyIGxldmVsLgorCisgICAgTUVTU0FH
RVMgPSBbIjMiLCAiMiIsICIxIiwgIkZpcmUhIl0KKworICAgIGRlZiB0ZXN0X2l0ZXJhdGVfb25f
bWVzc2FnZXMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBoYW5kbGVyKHdzLCBwYXRoKToKKyAg
ICAgICAgICAgIGZvciBtZXNzYWdlIGluIHNlbGYuTUVTU0FHRVM6CisgICAgICAgICAgICAgICAg
YXdhaXQgd3Muc2VuZChtZXNzYWdlKQorCisgICAgICAgIHN0YXJ0X3NlcnZlciA9IHNlcnZlKGhh
bmRsZXIsICJsb2NhbGhvc3QiLCAwKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHN0YXJ0X3NlcnZlcikKKworICAgICAgICBtZXNzYWdlcyA9IFtdCisKKyAg
ICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIG1lc3Nh
Z2VzCisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVy
KSkgYXMgd3M6CisgICAgICAgICAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd3M6CisgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuX2NsaWVudCgpKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobWVzc2FnZXMsIHNlbGYuTUVTU0FHRVMpCisKKyAgICAgICAgc2VydmVyLmNsb3Nl
KCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9z
ZWQoKSkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdGVfb25fbWVzc2FnZXNfZ29pbmdfYXdheV9leGl0
X29rKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgaGFuZGxlcih3cywgcGF0aCk6CisgICAgICAg
ICAgICBmb3IgbWVzc2FnZSBpbiBzZWxmLk1FU1NBR0VTOgorICAgICAgICAgICAgICAgIGF3YWl0
IHdzLnNlbmQobWVzc2FnZSkKKyAgICAgICAgICAgIGF3YWl0IHdzLmNsb3NlKDEwMDEpCisKKyAg
ICAgICAgc3RhcnRfc2VydmVyID0gc2VydmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDApCisgICAg
ICAgIHNlcnZlciA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQor
CisgICAgICAgIG1lc3NhZ2VzID0gW10KKworICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudCgp
OgorICAgICAgICAgICAgbm9ubG9jYWwgbWVzc2FnZXMKKyAgICAgICAgICAgIGFzeW5jIHdpdGgg
Y29ubmVjdChnZXRfc2VydmVyX3VyaShzZXJ2ZXIpKSBhcyB3czoKKyAgICAgICAgICAgICAgICBh
c3luYyBmb3IgbWVzc2FnZSBpbiB3czoKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuYXBw
ZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW5f
Y2xpZW50KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXNzYWdlcywgc2VsZi5NRVNT
QUdFUykKKworICAgICAgICBzZXJ2ZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlcnZlci53YWl0X2Nsb3NlZCgpKQorCisgICAgZGVmIHRlc3RfaXRlcmF0
ZV9vbl9tZXNzYWdlc19pbnRlcm5hbF9lcnJvcl9leGl0X25vdF9vayhzZWxmKToKKyAgICAgICAg
YXN5bmMgZGVmIGhhbmRsZXIod3MsIHBhdGgpOgorICAgICAgICAgICAgZm9yIG1lc3NhZ2UgaW4g
c2VsZi5NRVNTQUdFUzoKKyAgICAgICAgICAgICAgICBhd2FpdCB3cy5zZW5kKG1lc3NhZ2UpCisg
ICAgICAgICAgICBhd2FpdCB3cy5jbG9zZSgxMDExKQorCisgICAgICAgIHN0YXJ0X3NlcnZlciA9
IHNlcnZlKGhhbmRsZXIsICJsb2NhbGhvc3QiLCAwKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmxv
b3AucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0X3NlcnZlcikKKworICAgICAgICBtZXNzYWdlcyA9
IFtdCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgIG5vbmxv
Y2FsIG1lc3NhZ2VzCisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoZ2V0X3NlcnZlcl91
cmkoc2VydmVyKSkgYXMgd3M6CisgICAgICAgICAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4g
d3M6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bl9jbGllbnQoKSkKKworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBzZWxmLk1FU1NBR0VTKQorCisgICAgICAgIHNlcnZl
ci5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VydmVyLndh
aXRfY2xvc2VkKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9leGNl
cHRpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfZXhjZXB0aW9ucy5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhZDVhZDgzMzU5NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2V4Y2VwdGlvbnMucHkKQEAg
LTAsMCArMSwxNDUgQEAKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYnNvY2tldHMuZXhjZXB0
aW9ucyBpbXBvcnQgKgorZnJvbSB3ZWJzb2NrZXRzLmh0dHAgaW1wb3J0IEhlYWRlcnMKKworCitj
bGFzcyBFeGNlcHRpb25zVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3N0
cihzZWxmKToKKyAgICAgICAgZm9yIGV4Y2VwdGlvbiwgZXhjZXB0aW9uX3N0ciBpbiBbCisgICAg
ICAgICAgICAjIGZtdDogb2ZmCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgV2ViU29j
a2V0RXhjZXB0aW9uKCJzb21ldGhpbmcgd2VudCB3cm9uZyIpLAorICAgICAgICAgICAgICAgICJz
b21ldGhpbmcgd2VudCB3cm9uZyIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgIiIpLAorICAgICAgICAgICAgICAg
ICJjb2RlID0gMTAwMCAoT0spLCBubyByZWFzb24iLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICgKKyAgICAgICAgICAgICAgICBDb25uZWN0aW9uQ2xvc2VkKDEwMDYsIE5vbmUpLAorICAg
ICAgICAgICAgICAgICJjb2RlID0gMTAwNiAoY29ubmVjdGlvbiBjbG9zZWQgYWJub3JtYWxseSBb
aW50ZXJuYWxdKSwgbm8gcmVhc29uIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAg
ICAgICAgICAgICAgICBDb25uZWN0aW9uQ2xvc2VkKDMwMDAsIE5vbmUpLAorICAgICAgICAgICAg
ICAgICJjb2RlID0gMzAwMCAocmVnaXN0ZXJlZCksIG5vIHJlYXNvbiIKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgQ29ubmVjdGlvbkNsb3NlZCg0MDAwLCBO
b25lKSwKKyAgICAgICAgICAgICAgICAiY29kZSA9IDQwMDAgKHByaXZhdGUgdXNlKSwgbm8gcmVh
c29uIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBDb25u
ZWN0aW9uQ2xvc2VkRXJyb3IoMTAxNiwgTm9uZSksCisgICAgICAgICAgICAgICAgImNvZGUgPSAx
MDE2ICh1bmtub3duKSwgbm8gcmVhc29uIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICBDb25uZWN0aW9uQ2xvc2VkT0soMTAwMSwgImJ5ZSIpLAorICAgICAg
ICAgICAgICAgICJjb2RlID0gMTAwMSAoZ29pbmcgYXdheSksIHJlYXNvbiA9IGJ5ZSIsCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRIYW5kc2hh
a2UoImludmFsaWQgcmVxdWVzdCIpLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHJlcXVlc3Qi
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBTZWN1cml0
eUVycm9yKCJyZWRpcmVjdCBmcm9tIFdTUyB0byBXUyIpLAorICAgICAgICAgICAgICAgICJyZWRp
cmVjdCBmcm9tIFdTUyB0byBXUyIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIEludmFsaWRNZXNzYWdlKCJtYWxmb3JtZWQgSFRUUCBtZXNzYWdlIiksCisg
ICAgICAgICAgICAgICAgIm1hbGZvcm1lZCBIVFRQIG1lc3NhZ2UiLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkSGVhZGVyKCJOYW1lIiksCisg
ICAgICAgICAgICAgICAgIm1pc3NpbmcgTmFtZSBoZWFkZXIiLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkSGVhZGVyKCJOYW1lIiwgTm9uZSks
CisgICAgICAgICAgICAgICAgIm1pc3NpbmcgTmFtZSBoZWFkZXIiLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkSGVhZGVyKCJOYW1lIiwgIiIp
LAorICAgICAgICAgICAgICAgICJlbXB0eSBOYW1lIGhlYWRlciIsCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRIZWFkZXIoIk5hbWUiLCAiVmFs
dWUiKSwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBOYW1lIGhlYWRlcjogVmFsdWUiLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkSGVhZGVy
Rm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIsICJl
eHBlY3RlZCB0b2tlbiIsICJhPXwiLCAzCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAiaW52YWxpZCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlcjogIgorICAgICAgICAg
ICAgICAgICJleHBlY3RlZCB0b2tlbiBhdCAzIGluIGE9fCIsCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRIZWFkZXJWYWx1ZSgiU2VjLVdlYlNv
Y2tldC1WZXJzaW9uIiwgIjQyIiksCisgICAgICAgICAgICAgICAgImludmFsaWQgU2VjLVdlYlNv
Y2tldC1WZXJzaW9uIGhlYWRlcjogNDIiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICBJbnZhbGlkT3JpZ2luKCJodHRwOi8vYmFkLm9yaWdpbiIpLAorICAg
ICAgICAgICAgICAgICJpbnZhbGlkIE9yaWdpbiBoZWFkZXI6IGh0dHA6Ly9iYWQub3JpZ2luIiwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgSW52YWxpZFVw
Z3JhZGUoIlVwZ3JhZGUiKSwKKyAgICAgICAgICAgICAgICAibWlzc2luZyBVcGdyYWRlIGhlYWRl
ciIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFs
aWRVcGdyYWRlKCJDb25uZWN0aW9uIiwgIndlYnNvY2tldCIpLAorICAgICAgICAgICAgICAgICJp
bnZhbGlkIENvbm5lY3Rpb24gaGVhZGVyOiB3ZWJzb2NrZXQiLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkU3RhdHVzQ29kZSg0MDMpLAorICAg
ICAgICAgICAgICAgICJzZXJ2ZXIgcmVqZWN0ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb246IEhUVFAg
NDAzIiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgTmVn
b3RpYXRpb25FcnJvcigidW5zdXBwb3J0ZWQgc3VicHJvdG9jb2w6IHNwYW0iKSwKKyAgICAgICAg
ICAgICAgICAidW5zdXBwb3J0ZWQgc3VicHJvdG9jb2w6IHNwYW0iLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBEdXBsaWNhdGVQYXJhbWV0ZXIoImEiKSwK
KyAgICAgICAgICAgICAgICAiZHVwbGljYXRlIHBhcmFtZXRlcjogYSIsCisgICAgICAgICAgICAp
LAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJOYW1lKCJ8
IiksCisgICAgICAgICAgICAgICAgImludmFsaWQgcGFyYW1ldGVyIG5hbWU6IHwiLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVy
VmFsdWUoImEiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAibWlzc2luZyB2YWx1ZSBmb3IgcGFy
YW1ldGVyIGEiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUoImEiLCAiIiksCisgICAgICAgICAgICAgICAgImVtcHR5
IHZhbHVlIGZvciBwYXJhbWV0ZXIgYSIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJWYWx1ZSgiYSIsICJ8IiksCisgICAgICAg
ICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBhOiB8IiwKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgQWJvcnRIYW5kc2hha2UoMjAwLCBI
ZWFkZXJzKCksIGIiT0tcbiIpLAorICAgICAgICAgICAgICAgICJIVFRQIDIwMCwgMCBoZWFkZXJz
LCAzIGJ5dGVzIiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgUmVkaXJlY3RIYW5kc2hha2UoIndzczovL2V4YW1wbGUuY29tIiksCisgICAgICAgICAgICAg
ICAgInJlZGlyZWN0IHRvIHdzczovL2V4YW1wbGUuY29tIiwKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICAoCisgICAgICAgICAgICAgICAgSW52YWxpZFN0YXRlKCJXZWJTb2NrZXQgY29ubmVj
dGlvbiBpc24ndCBlc3RhYmxpc2hlZCB5ZXQiKSwKKyAgICAgICAgICAgICAgICAiV2ViU29ja2V0
IGNvbm5lY3Rpb24gaXNuJ3QgZXN0YWJsaXNoZWQgeWV0IiwKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICAoCisgICAgICAgICAgICAgICAgSW52YWxpZFVSSSgifCIpLAorICAgICAgICAgICAg
ICAgICJ8IGlzbid0IGEgdmFsaWQgVVJJIiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgUGF5bG9hZFRvb0JpZygicGF5bG9hZCBsZW5ndGggZXhjZWVkcyBs
aW1pdDogMiA+IDEgYnl0ZXMiKSwKKyAgICAgICAgICAgICAgICAicGF5bG9hZCBsZW5ndGggZXhj
ZWVkcyBsaW1pdDogMiA+IDEgYnl0ZXMiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICBQcm90b2NvbEVycm9yKCJpbnZhbGlkIG9wY29kZTogNyIpLAorICAg
ICAgICAgICAgICAgICJpbnZhbGlkIG9wY29kZTogNyIsCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgIyBmbXQ6IG9uCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVz
dChleGNlcHRpb249ZXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cihleGNlcHRpb24pLCBleGNlcHRpb25fc3RyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL3Rlc3RzL3Rlc3RfZXhwb3J0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2V4
cG9ydHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZmNiYzgw
ZTM4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9leHBv
cnRzLnB5CkBAIC0wLDAgKzEsMjIgQEAKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgd2Vic29j
a2V0cworCisKK2NvbWJpbmVkX2V4cG9ydHMgPSAoCisgICAgd2Vic29ja2V0cy5hdXRoLl9fYWxs
X18KKyAgICArIHdlYnNvY2tldHMuY2xpZW50Ll9fYWxsX18KKyAgICArIHdlYnNvY2tldHMuZXhj
ZXB0aW9ucy5fX2FsbF9fCisgICAgKyB3ZWJzb2NrZXRzLnByb3RvY29sLl9fYWxsX18KKyAgICAr
IHdlYnNvY2tldHMuc2VydmVyLl9fYWxsX18KKyAgICArIHdlYnNvY2tldHMudHlwaW5nLl9fYWxs
X18KKyAgICArIHdlYnNvY2tldHMudXJpLl9fYWxsX18KKykKKworCitjbGFzcyBUZXN0RXhwb3J0
c0FsbFN1Ym1vZHVsZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RvcF9sZXZl
bF9tb2R1bGVfcmVleHBvcnRzX2FsbF9zdWJtb2R1bGVfZXhwb3J0cyhzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZXQoY29tYmluZWRfZXhwb3J0cyksIHNldCh3ZWJzb2NrZXRzLl9f
YWxsX18pKQorCisgICAgZGVmIHRlc3Rfc3VibW9kdWxlX2V4cG9ydHNfYXJlX2dsb2JhbGx5X3Vu
aXF1ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KGNvbWJpbmVkX2V4
cG9ydHMpKSwgbGVuKGNvbWJpbmVkX2V4cG9ydHMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL3Rlc3RzL3Rlc3RfZnJhbWluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2Zy
YW1pbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZGVmNDE1
ZDI4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9mcmFt
aW5nLnB5CkBAIC0wLDAgKzEsMjQyIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGNvZGVjcwor
aW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QubW9jaworCitmcm9tIHdlYnNvY2tldHMu
ZXhjZXB0aW9ucyBpbXBvcnQgUGF5bG9hZFRvb0JpZywgUHJvdG9jb2xFcnJvcgorZnJvbSB3ZWJz
b2NrZXRzLmZyYW1pbmcgaW1wb3J0ICoKKworZnJvbSAudXRpbHMgaW1wb3J0IEFzeW5jaW9UZXN0
Q2FzZQorCisKK2NsYXNzIEZyYW1pbmdUZXN0cyhBc3luY2lvVGVzdENhc2UpOgorICAgIGRlZiBk
ZWNvZGUoc2VsZiwgbWVzc2FnZSwgbWFzaz1GYWxzZSwgbWF4X3NpemU9Tm9uZSwgZXh0ZW5zaW9u
cz1Ob25lKToKKyAgICAgICAgc2VsZi5zdHJlYW0gPSBhc3luY2lvLlN0cmVhbVJlYWRlcihsb29w
PXNlbGYubG9vcCkKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKG1lc3NhZ2UpCisgICAg
ICAgIHNlbGYuc3RyZWFtLmZlZWRfZW9mKCkKKyAgICAgICAgZnJhbWUgPSBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgRnJhbWUucmVhZCgKKyAgICAgICAgICAgICAg
ICBzZWxmLnN0cmVhbS5yZWFkZXhhY3RseSwKKyAgICAgICAgICAgICAgICBtYXNrPW1hc2ssCisg
ICAgICAgICAgICAgICAgbWF4X3NpemU9bWF4X3NpemUsCisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9ucz1leHRlbnNpb25zLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgICMgTWFr
ZSBzdXJlIGFsbCB0aGUgZGF0YSB3YXMgY29uc3VtZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShzZWxmLnN0cmVhbS5hdF9lb2YoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYg
ZW5jb2RlKHNlbGYsIGZyYW1lLCBtYXNrPUZhbHNlLCBleHRlbnNpb25zPU5vbmUpOgorICAgICAg
ICB3cml0ZSA9IHVuaXR0ZXN0Lm1vY2suTW9jaygpCisgICAgICAgIGZyYW1lLndyaXRlKHdyaXRl
LCBtYXNrPW1hc2ssIGV4dGVuc2lvbnM9ZXh0ZW5zaW9ucykKKyAgICAgICAgIyBFbnN1cmUgdGhl
IGVudGlyZSBmcmFtZSBpcyBzZW50IHdpdGggYSBzaW5nbGUgY2FsbCB0byB3cml0ZSgpLgorICAg
ICAgICAjIE11bHRpcGxlIGNhbGxzIGNhdXNlIFRDUCBmcmFnbWVudGF0aW9uIGFuZCBkZWdyYWRl
IHBlcmZvcm1hbmNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyaXRlLmNhbGxfY291bnQs
IDEpCisgICAgICAgICMgVGhlIGZyYW1lIGRhdGEgaXMgdGhlIHNpbmdsZSBwb3NpdGlvbmFsIGFy
Z3VtZW50IG9mIHRoYXQgY2FsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4od3JpdGUu
Y2FsbF9hcmdzWzBdKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4od3JpdGUuY2Fs
bF9hcmdzWzFdKSwgMCkKKyAgICAgICAgcmV0dXJuIHdyaXRlLmNhbGxfYXJnc1swXVswXQorCisg
ICAgZGVmIHJvdW5kX3RyaXAoc2VsZiwgbWVzc2FnZSwgZXhwZWN0ZWQsIG1hc2s9RmFsc2UsIGV4
dGVuc2lvbnM9Tm9uZSk6CisgICAgICAgIGRlY29kZWQgPSBzZWxmLmRlY29kZShtZXNzYWdlLCBt
YXNrLCBleHRlbnNpb25zPWV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVj
b2RlZCwgZXhwZWN0ZWQpCisgICAgICAgIGVuY29kZWQgPSBzZWxmLmVuY29kZShkZWNvZGVkLCBt
YXNrLCBleHRlbnNpb25zPWV4dGVuc2lvbnMpCisgICAgICAgIGlmIG1hc2s6ICAjIG5vbi1kZXRl
cm1pbmlzdGljIGVuY29kaW5nCisgICAgICAgICAgICBkZWNvZGVkID0gc2VsZi5kZWNvZGUoZW5j
b2RlZCwgbWFzaywgZXh0ZW5zaW9ucz1leHRlbnNpb25zKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkZWNvZGVkLCBleHBlY3RlZCkKKyAgICAgICAgZWxzZTogICMgZGV0ZXJtaW5pc3Rp
YyBlbmNvZGluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkLCBtZXNzYWdl
KQorCisgICAgZGVmIHJvdW5kX3RyaXBfY2xvc2Uoc2VsZiwgZGF0YSwgY29kZSwgcmVhc29uKToK
KyAgICAgICAgcGFyc2VkID0gcGFyc2VfY2xvc2UoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYXJzZWQsIChjb2RlLCByZWFzb24pKQorICAgICAgICBzZXJpYWxpemVkID0gc2VyaWFs
aXplX2Nsb3NlKGNvZGUsIHJlYXNvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxp
emVkLCBkYXRhKQorCisgICAgZGVmIHRlc3RfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5yb3Vu
ZF90cmlwKGIiXHg4MVx4MDRTcGFtIiwgRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgYiJTcGFtIikpCisK
KyAgICBkZWYgdGVzdF90ZXh0X21hc2tlZChzZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlw
KAorICAgICAgICAgICAgYiJceDgxXHg4NFx4NWJceGZiXHhlMVx4YThceDA4XHg4Ylx4ODBceGM1
IiwKKyAgICAgICAgICAgIEZyYW1lKFRydWUsIE9QX1RFWFQsIGIiU3BhbSIpLAorICAgICAgICAg
ICAgbWFzaz1UcnVlLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iaW5hcnkoc2VsZik6Cisg
ICAgICAgIHNlbGYucm91bmRfdHJpcChiIlx4ODJceDA0RWdncyIsIEZyYW1lKFRydWUsIE9QX0JJ
TkFSWSwgYiJFZ2dzIikpCisKKyAgICBkZWYgdGVzdF9iaW5hcnlfbWFza2VkKHNlbGYpOgorICAg
ICAgICBzZWxmLnJvdW5kX3RyaXAoCisgICAgICAgICAgICBiIlx4ODJceDg0XHg1M1x4Y2RceGUy
XHg4OVx4MTZceGFhXHg4NVx4ZmEiLAorICAgICAgICAgICAgRnJhbWUoVHJ1ZSwgT1BfQklOQVJZ
LCBiIkVnZ3MiKSwKKyAgICAgICAgICAgIG1hc2s9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3Rfbm9uX2FzY2lpX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYucm91bmRfdHJpcCgKKyAg
ICAgICAgICAgIGIiXHg4MVx4MDVjYWZceGMzXHhhOSIsIEZyYW1lKFRydWUsIE9QX1RFWFQsICJj
YWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ub25fYXNj
aWlfdGV4dF9tYXNrZWQoc2VsZik6CisgICAgICAgIHNlbGYucm91bmRfdHJpcCgKKyAgICAgICAg
ICAgIGIiXHg4MVx4ODVceDY0XHhiZVx4ZWVceDdlXHgwN1x4ZGZceDg4XHhiZFx4Y2QiLAorICAg
ICAgICAgICAgRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpLAor
ICAgICAgICAgICAgbWFzaz1UcnVlLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jbG9zZShz
ZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwKGIiXHg4OFx4MDAiLCBGcmFtZShUcnVlLCBP
UF9DTE9TRSwgYiIiKSkKKworICAgIGRlZiB0ZXN0X3Bpbmcoc2VsZik6CisgICAgICAgIHNlbGYu
cm91bmRfdHJpcChiIlx4ODlceDA0cGluZyIsIEZyYW1lKFRydWUsIE9QX1BJTkcsIGIicGluZyIp
KQorCisgICAgZGVmIHRlc3RfcG9uZyhzZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwKGIi
XHg4YVx4MDRwb25nIiwgRnJhbWUoVHJ1ZSwgT1BfUE9ORywgYiJwb25nIikpCisKKyAgICBkZWYg
dGVzdF9sb25nKHNlbGYpOgorICAgICAgICBzZWxmLnJvdW5kX3RyaXAoCisgICAgICAgICAgICBi
Ilx4ODJceDdlXHgwMFx4N2UiICsgMTI2ICogYiJhIiwgRnJhbWUoVHJ1ZSwgT1BfQklOQVJZLCAx
MjYgKiBiImEiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF92ZXJ5X2xvbmcoc2VsZik6Cisg
ICAgICAgIHNlbGYucm91bmRfdHJpcCgKKyAgICAgICAgICAgIGIiXHg4Mlx4N2ZceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDFceDAwXHgwMCIgKyA2NTUzNiAqIGIiYSIsCisgICAgICAgICAgICBGcmFt
ZShUcnVlLCBPUF9CSU5BUlksIDY1NTM2ICogYiJhIiksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X3BheWxvYWRfdG9vX2JpZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhQYXlsb2FkVG9vQmlnKToKKyAgICAgICAgICAgIHNlbGYuZGVjb2RlKGIiXHg4Mlx4N2VceDA0
XHgwMSIgKyAxMDI1ICogYiJhIiwgbWF4X3NpemU9MTAyNCkKKworICAgIGRlZiB0ZXN0X2JhZF9y
ZXNlcnZlZF9iaXRzKHNlbGYpOgorICAgICAgICBmb3IgZW5jb2RlZCBpbiBbYiJceGMwXHgwMCIs
IGIiXHhhMFx4MDAiLCBiIlx4OTBceDAwIl06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVz
dChlbmNvZGVkPWVuY29kZWQpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUHJvdG9jb2xFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlKGVuY29k
ZWQpCisKKyAgICBkZWYgdGVzdF9nb29kX29wY29kZShzZWxmKToKKyAgICAgICAgZm9yIG9wY29k
ZSBpbiBsaXN0KHJhbmdlKDB4MDAsIDB4MDMpKSArIGxpc3QocmFuZ2UoMHgwOCwgMHgwQikpOgor
ICAgICAgICAgICAgZW5jb2RlZCA9IGJ5dGVzKFsweDgwIHwgb3Bjb2RlLCAwXSkKKyAgICAgICAg
ICAgIHdpdGggc2VsZi5zdWJUZXN0KGVuY29kZWQ9ZW5jb2RlZCk6CisgICAgICAgICAgICAgICAg
c2VsZi5kZWNvZGUoZW5jb2RlZCkgICMgZG9lcyBub3QgcmFpc2UgYW4gZXhjZXB0aW9uCisKKyAg
ICBkZWYgdGVzdF9iYWRfb3Bjb2RlKHNlbGYpOgorICAgICAgICBmb3Igb3Bjb2RlIGluIGxpc3Qo
cmFuZ2UoMHgwMywgMHgwOCkpICsgbGlzdChyYW5nZSgweDBCLCAweDEwKSk6CisgICAgICAgICAg
ICBlbmNvZGVkID0gYnl0ZXMoWzB4ODAgfCBvcGNvZGUsIDBdKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLnN1YlRlc3QoZW5jb2RlZD1lbmNvZGVkKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKFByb3RvY29sRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmRl
Y29kZShlbmNvZGVkKQorCisgICAgZGVmIHRlc3RfbWFza19mbGFnKHNlbGYpOgorICAgICAgICAj
IE1hc2sgZmxhZyBjb3JyZWN0bHkgc2V0LgorICAgICAgICBzZWxmLmRlY29kZShiIlx4ODBceDgw
XHgwMFx4MDBceDAwXHgwMCIsIG1hc2s9VHJ1ZSkKKyAgICAgICAgIyBNYXNrIGZsYWcgaW5jb3Jy
ZWN0bHkgdW5zZXQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUHJvdG9jb2xFcnJv
cik6CisgICAgICAgICAgICBzZWxmLmRlY29kZShiIlx4ODBceDgwXHgwMFx4MDBceDAwXHgwMCIp
CisgICAgICAgICMgTWFzayBmbGFnIGNvcnJlY3RseSB1bnNldC4KKyAgICAgICAgc2VsZi5kZWNv
ZGUoYiJceDgwXHgwMCIpCisgICAgICAgICMgTWFzayBmbGFnIGluY29ycmVjdGx5IHNldC4KKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAg
IHNlbGYuZGVjb2RlKGIiXHg4MFx4MDAiLCBtYXNrPVRydWUpCisKKyAgICBkZWYgdGVzdF9jb250
cm9sX2ZyYW1lX21heF9sZW5ndGgoc2VsZik6CisgICAgICAgICMgQXQgbWF4aW11bSBhbGxvd2Vk
IGxlbmd0aC4KKyAgICAgICAgc2VsZi5kZWNvZGUoYiJceDg4XHg3ZVx4MDBceDdkIiArIDEyNSAq
IGIiYSIpCisgICAgICAgICMgQWJvdmUgbWF4aW11bSBhbGxvd2VkIGxlbmd0aC4KKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYu
ZGVjb2RlKGIiXHg4OFx4N2VceDAwXHg3ZSIgKyAxMjYgKiBiImEiKQorCisgICAgZGVmIHRlc3Rf
cHJlcGFyZV9kYXRhX3N0cihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJl
X2RhdGEoImNhZsOpIiksIChPUF9URVhULCBiImNhZlx4YzNceGE5IikpCisKKyAgICBkZWYgdGVz
dF9wcmVwYXJlX2RhdGFfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJl
cGFyZV9kYXRhKGIidGVhIiksIChPUF9CSU5BUlksIGIidGVhIikpCisKKyAgICBkZWYgdGVzdF9w
cmVwYXJlX2RhdGFfYnl0ZWFycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgcHJlcGFyZV9kYXRhKGJ5dGVhcnJheShiInRlYSIpKSwgKE9QX0JJTkFSWSwg
Ynl0ZWFycmF5KGIidGVhIikpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3ByZXBhcmVfZGF0
YV9tZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcHJlcGFyZV9kYXRhKG1lbW9yeXZpZXcoYiJ0ZWEiKSksIChPUF9CSU5BUlksIG1lbW9yeXZp
ZXcoYiJ0ZWEiKSkKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHJlcGFyZV9kYXRhX25vbl9j
b250aWd1b3VzX21lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJl
cGFyZV9kYXRhKG1lbW9yeXZpZXcoYiJ0dGVlYWEiKVs6OjJdKSwgKE9QX0JJTkFSWSwgYiJ0ZWEi
KSkKKworICAgIGRlZiB0ZXN0X3ByZXBhcmVfZGF0YV9saXN0KHNlbGYpOgorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBwcmVwYXJlX2RhdGEo
W10pCisKKyAgICBkZWYgdGVzdF9wcmVwYXJlX2RhdGFfbm9uZShzZWxmKToKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcHJlcGFyZV9kYXRh
KE5vbmUpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGF0YV9zdHIoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZW5jb2RlX2RhdGEoImNhZsOpIiksIGIiY2FmXHhjM1x4YTkiKQorCisg
ICAgZGVmIHRlc3RfZW5jb2RlX2RhdGFfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZW5jb2RlX2RhdGEoYiJ0ZWEiKSwgYiJ0ZWEiKQorCisgICAgZGVmIHRlc3RfZW5jb2Rl
X2RhdGFfYnl0ZWFycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZV9k
YXRhKGJ5dGVhcnJheShiInRlYSIpKSwgYiJ0ZWEiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Rh
dGFfbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVfZGF0
YShtZW1vcnl2aWV3KGIidGVhIikpLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGF0
YV9ub25fY29udGlndW91c19tZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGVuY29kZV9kYXRhKG1lbW9yeXZpZXcoYiJ0dGVlYWEiKVs6OjJdKSwgYiJ0ZWEiKQorCisg
ICAgZGVmIHRlc3RfZW5jb2RlX2RhdGFfbGlzdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZW5jb2RlX2RhdGEoW10pCisKKyAg
ICBkZWYgdGVzdF9lbmNvZGVfZGF0YV9ub25lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBlbmNvZGVfZGF0YShOb25lKQorCisg
ICAgZGVmIHRlc3RfZnJhZ21lbnRlZF9jb250cm9sX2ZyYW1lKHNlbGYpOgorICAgICAgICAjIEZp
biBiaXQgY29ycmVjdGx5IHNldC4KKyAgICAgICAgc2VsZi5kZWNvZGUoYiJceDg4XHgwMCIpCisg
ICAgICAgICMgRmluIGJpdCBpbmNvcnJlY3RseSB1bnNldC4KKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZGVjb2RlKGIiXHgw
OFx4MDAiKQorCisgICAgZGVmIHRlc3RfcGFyc2VfY2xvc2VfYW5kX3NlcmlhbGl6ZV9jbG9zZShz
ZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwX2Nsb3NlKGIiXHgwM1x4ZTgiLCAxMDAwLCAi
IikKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwX2Nsb3NlKGIiXHgwM1x4ZThPSyIsIDEwMDAsICJP
SyIpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9jbG9zZV9lbXB0eShzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXJzZV9jbG9zZShiIiIpLCAoMTAwNSwgIiIpKQorCisgICAgZGVmIHRl
c3RfcGFyc2VfY2xvc2VfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFByb3RvY29sRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VfY2xvc2UoYiJceDAzIikKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAg
IHBhcnNlX2Nsb3NlKGIiXHgwM1x4ZTciKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KFVuaWNvZGVEZWNvZGVFcnJvcik6CisgICAgICAgICAgICBwYXJzZV9jbG9zZShiIlx4MDNceGU4
XHhmZlx4ZmYiKQorCisgICAgZGVmIHRlc3Rfc2VyaWFsaXplX2Nsb3NlX2Vycm9ycyhzZWxmKToK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAg
ICAgIHNlcmlhbGl6ZV9jbG9zZSg5OTksICIiKQorCisgICAgZGVmIHRlc3RfZXh0ZW5zaW9ucyhz
ZWxmKToKKyAgICAgICAgY2xhc3MgUm90MTM6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisg
ICAgICAgICAgICBkZWYgZW5jb2RlKGZyYW1lKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZnJh
bWUub3Bjb2RlID09IE9QX1RFWFQKKyAgICAgICAgICAgICAgICB0ZXh0ID0gZnJhbWUuZGF0YS5k
ZWNvZGUoKQorICAgICAgICAgICAgICAgIGRhdGEgPSBjb2RlY3MuZW5jb2RlKHRleHQsICJyb3Qx
MyIpLmVuY29kZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLl9yZXBsYWNlKGRhdGE9
ZGF0YSkKKworICAgICAgICAgICAgIyBUaGlzIGV4dGVuc2lvbnMgaXMgc3ltbWV0cmljYWwuCisg
ICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZGVjb2RlKGZyYW1lLCAq
LCBtYXhfc2l6ZT1Ob25lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gUm90MTMuZW5jb2RlKGZy
YW1lKQorCisgICAgICAgIHNlbGYucm91bmRfdHJpcCgKKyAgICAgICAgICAgIGIiXHg4MVx4MDV1
cnl5YiIsIEZyYW1lKFRydWUsIE9QX1RFWFQsIGIiaGVsbG8iKSwgZXh0ZW5zaW9ucz1bUm90MTMo
KV0KKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaGFu
ZHNoYWtlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaGFuZHNoYWtlLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2QwNDc3NzE1MmJmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaGFuZHNoYWtlLnB5CkBAIC0w
LDAgKzEsMTkwIEBACitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20g
d2Vic29ja2V0cy5leGNlcHRpb25zIGltcG9ydCAoCisgICAgSW52YWxpZEhhbmRzaGFrZSwKKyAg
ICBJbnZhbGlkSGVhZGVyLAorICAgIEludmFsaWRIZWFkZXJWYWx1ZSwKKyAgICBJbnZhbGlkVXBn
cmFkZSwKKykKK2Zyb20gd2Vic29ja2V0cy5oYW5kc2hha2UgaW1wb3J0ICoKK2Zyb20gd2Vic29j
a2V0cy5oYW5kc2hha2UgaW1wb3J0IGFjY2VwdCAgIyBwcml2YXRlIEFQSQorZnJvbSB3ZWJzb2Nr
ZXRzLmh0dHAgaW1wb3J0IEhlYWRlcnMKKworCitjbGFzcyBIYW5kc2hha2VUZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWNjZXB0KHNlbGYpOgorICAgICAgICAjIFRlc3Qg
dmVjdG9yIGZyb20gUkZDIDY0NTUKKyAgICAgICAga2V5ID0gImRHaGxJSE5oYlhCc1pTQnViMjVq
WlE9PSIKKyAgICAgICAgYWNjID0gInMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz0iCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWNjZXB0KGtleSksIGFjYykKKworICAgIGRlZiB0ZXN0X3Jv
dW5kX3RyaXAoc2VsZik6CisgICAgICAgIHJlcXVlc3RfaGVhZGVycyA9IEhlYWRlcnMoKQorICAg
ICAgICByZXF1ZXN0X2tleSA9IGJ1aWxkX3JlcXVlc3QocmVxdWVzdF9oZWFkZXJzKQorICAgICAg
ICByZXNwb25zZV9rZXkgPSBjaGVja19yZXF1ZXN0KHJlcXVlc3RfaGVhZGVycykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0X2tleSwgcmVzcG9uc2Vfa2V5KQorICAgICAgICByZXNw
b25zZV9oZWFkZXJzID0gSGVhZGVycygpCisgICAgICAgIGJ1aWxkX3Jlc3BvbnNlKHJlc3BvbnNl
X2hlYWRlcnMsIHJlc3BvbnNlX2tleSkKKyAgICAgICAgY2hlY2tfcmVzcG9uc2UocmVzcG9uc2Vf
aGVhZGVycywgcmVxdWVzdF9rZXkpCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgor
ICAgIGRlZiBhc3NlcnRWYWxpZFJlcXVlc3RIZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgUHJvdmlkZSByZXF1ZXN0IGhlYWRlcnMgZm9yIG1vZGlmaWNhdGlvbi4KKworICAgICAg
ICBBc3NlcnQgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24ga2VwdCB0aGVtIHZhbGlkLgorCisgICAg
ICAgICIiIgorICAgICAgICBoZWFkZXJzID0gSGVhZGVycygpCisgICAgICAgIGJ1aWxkX3JlcXVl
c3QoaGVhZGVycykKKyAgICAgICAgeWllbGQgaGVhZGVycworICAgICAgICBjaGVja19yZXF1ZXN0
KGhlYWRlcnMpCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhc3Nl
cnRJbnZhbGlkUmVxdWVzdEhlYWRlcnMoc2VsZiwgZXhjX3R5cGUpOgorICAgICAgICAiIiIKKyAg
ICAgICAgUHJvdmlkZSByZXF1ZXN0IGhlYWRlcnMgZm9yIG1vZGlmaWNhdGlvbi4KKworICAgICAg
ICBBc3NlcnQgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gbWFkZSB0aGVtIGludmFsaWQuCisKKyAg
ICAgICAgIiIiCisgICAgICAgIGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAgICAgICAgYnVpbGRfcmVx
dWVzdChoZWFkZXJzKQorICAgICAgICB5aWVsZCBoZWFkZXJzCisgICAgICAgIGFzc2VydCBpc3N1
YmNsYXNzKGV4Y190eXBlLCBJbnZhbGlkSGFuZHNoYWtlKQorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKGV4Y190eXBlKToKKyAgICAgICAgICAgIGNoZWNrX3JlcXVlc3QoaGVhZGVycykK
KworICAgIGRlZiB0ZXN0X3JlcXVlc3RfaW52YWxpZF9jb25uZWN0aW9uKHNlbGYpOgorICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJzKEludmFsaWRVcGdyYWRlKSBh
cyBoZWFkZXJzOgorICAgICAgICAgICAgZGVsIGhlYWRlcnNbIkNvbm5lY3Rpb24iXQorICAgICAg
ICAgICAgaGVhZGVyc1siQ29ubmVjdGlvbiJdID0gIkRvd25ncmFkZSIKKworICAgIGRlZiB0ZXN0
X3JlcXVlc3RfbWlzc2luZ19jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJzKEludmFsaWRVcGdyYWRlKSBhcyBoZWFkZXJzOgorICAg
ICAgICAgICAgZGVsIGhlYWRlcnNbIkNvbm5lY3Rpb24iXQorCisgICAgZGVmIHRlc3RfcmVxdWVz
dF9hZGRpdGlvbmFsX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRW
YWxpZFJlcXVlc3RIZWFkZXJzKCkgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGhlYWRlcnNbIkNv
bm5lY3Rpb24iXSA9ICJjbG9zZSIKKworICAgIGRlZiB0ZXN0X3JlcXVlc3RfaW52YWxpZF91cGdy
YWRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJz
KEludmFsaWRVcGdyYWRlKSBhcyBoZWFkZXJzOgorICAgICAgICAgICAgZGVsIGhlYWRlcnNbIlVw
Z3JhZGUiXQorICAgICAgICAgICAgaGVhZGVyc1siVXBncmFkZSJdID0gInNvY2tldHdlYiIKKwor
ICAgIGRlZiB0ZXN0X3JlcXVlc3RfbWlzc2luZ191cGdyYWRlKHNlbGYpOgorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJzKEludmFsaWRVcGdyYWRlKSBhcyBoZWFk
ZXJzOgorICAgICAgICAgICAgZGVsIGhlYWRlcnNbIlVwZ3JhZGUiXQorCisgICAgZGVmIHRlc3Rf
cmVxdWVzdF9hZGRpdGlvbmFsX3VwZ3JhZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRJbnZhbGlkUmVxdWVzdEhlYWRlcnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhlYWRlcnM6CisgICAg
ICAgICAgICBoZWFkZXJzWyJVcGdyYWRlIl0gPSAic29ja2V0d2ViIgorCisgICAgZGVmIHRlc3Rf
cmVxdWVzdF9pbnZhbGlkX2tleV9ub3RfYmFzZTY0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJzKEludmFsaWRIZWFkZXJWYWx1ZSkgYXMgaGVhZGVy
czoKKyAgICAgICAgICAgIGRlbCBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUtleSJdCisgICAgICAg
ICAgICBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUtleSJdID0gIiFAIyQlXiYqKCkiCisKKyAgICBk
ZWYgdGVzdF9yZXF1ZXN0X2ludmFsaWRfa2V5X25vdF93ZWxsX3BhZGRlZChzZWxmKToKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXF1ZXN0SGVhZGVycyhJbnZhbGlkSGVhZGVyVmFs
dWUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1L
ZXkiXQorICAgICAgICAgICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXSA9ICJDU0lSbUw4
ZFdZeGVBZHIvWHBFSFJ3IgorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9pbnZhbGlkX2tleV9ub3Rf
MTZfYnl0ZXNfbG9uZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXF1
ZXN0SGVhZGVycyhJbnZhbGlkSGVhZGVyVmFsdWUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBk
ZWwgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXQorICAgICAgICAgICAgaGVhZGVyc1siU2Vj
LVdlYlNvY2tldC1LZXkiXSA9ICJaTHBwcnB2SzRQRT0iCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0
X21pc3Npbmdfa2V5KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVl
c3RIZWFkZXJzKEludmFsaWRIZWFkZXIpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwgaGVh
ZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRpdGlv
bmFsX2tleShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXF1ZXN0SGVh
ZGVycyhJbnZhbGlkSGVhZGVyKSBhcyBoZWFkZXJzOgorICAgICAgICAgICAgIyBUaGlzIGR1cGxp
Y2F0ZXMgdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KKyAgICAgICAgICAgIGhlYWRlcnNb
IlNlYy1XZWJTb2NrZXQtS2V5Il0gPSBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUtleSJdCisKKyAg
ICBkZWYgdGVzdF9yZXF1ZXN0X2ludmFsaWRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydEludmFsaWRSZXF1ZXN0SGVhZGVycyhJbnZhbGlkSGVhZGVyVmFsdWUpIGFzIGhl
YWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1WZXJzaW9uIl0K
KyAgICAgICAgICAgIGhlYWRlcnNbIlNlYy1XZWJTb2NrZXQtVmVyc2lvbiJdID0gIjQyIgorCisg
ICAgZGVmIHRlc3RfcmVxdWVzdF9taXNzaW5nX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRJbnZhbGlkUmVxdWVzdEhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVhZGVy
czoKKyAgICAgICAgICAgIGRlbCBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LVZlcnNpb24iXQorCisg
ICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRpdGlvbmFsX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRJbnZhbGlkUmVxdWVzdEhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVh
ZGVyczoKKyAgICAgICAgICAgICMgVGhpcyBkdXBsaWNhdGVzIHRoZSBTZWMtV2ViU29ja2V0LVZl
cnNpb24gaGVhZGVyLgorICAgICAgICAgICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1WZXJzaW9u
Il0gPSBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LVZlcnNpb24iXQorCisgICAgQGNvbnRleHRsaWIu
Y29udGV4dG1hbmFnZXIKKyAgICBkZWYgYXNzZXJ0VmFsaWRSZXNwb25zZUhlYWRlcnMoc2VsZiwg
a2V5PSJDU0lSbUw4ZFdZeGVBZHIvWHBFSFJ3PT0iKToKKyAgICAgICAgIiIiCisgICAgICAgIFBy
b3ZpZGUgcmVzcG9uc2UgaGVhZGVycyBmb3IgbW9kaWZpY2F0aW9uLgorCisgICAgICAgIEFzc2Vy
dCB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBrZXB0IHRoZW0gdmFsaWQuCisKKyAgICAgICAgIiIi
CisgICAgICAgIGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAgICAgICAgYnVpbGRfcmVzcG9uc2UoaGVh
ZGVycywga2V5KQorICAgICAgICB5aWVsZCBoZWFkZXJzCisgICAgICAgIGNoZWNrX3Jlc3BvbnNl
KGhlYWRlcnMsIGtleSkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVm
IGFzc2VydEludmFsaWRSZXNwb25zZUhlYWRlcnMoc2VsZiwgZXhjX3R5cGUsIGtleT0iQ1NJUm1M
OGRXWXhlQWRyL1hwRUhSdz09Iik6CisgICAgICAgICIiIgorICAgICAgICBQcm92aWRlIHJlc3Bv
bnNlIGhlYWRlcnMgZm9yIG1vZGlmaWNhdGlvbi4KKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUg
dHJhbnNmb3JtYXRpb24gbWFkZSB0aGVtIGludmFsaWQuCisKKyAgICAgICAgIiIiCisgICAgICAg
IGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAgICAgICAgYnVpbGRfcmVzcG9uc2UoaGVhZGVycywga2V5
KQorICAgICAgICB5aWVsZCBoZWFkZXJzCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGV4Y190
eXBlLCBJbnZhbGlkSGFuZHNoYWtlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4
Y190eXBlKToKKyAgICAgICAgICAgIGNoZWNrX3Jlc3BvbnNlKGhlYWRlcnMsIGtleSkKKworICAg
IGRlZiB0ZXN0X3Jlc3BvbnNlX2ludmFsaWRfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydEludmFsaWRSZXNwb25zZUhlYWRlcnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhl
YWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1siQ29ubmVjdGlvbiJdCisgICAgICAgICAg
ICBoZWFkZXJzWyJDb25uZWN0aW9uIl0gPSAiRG93bmdyYWRlIgorCisgICAgZGVmIHRlc3RfcmVz
cG9uc2VfbWlzc2luZ19jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
SW52YWxpZFJlc3BvbnNlSGVhZGVycyhJbnZhbGlkVXBncmFkZSkgYXMgaGVhZGVyczoKKyAgICAg
ICAgICAgIGRlbCBoZWFkZXJzWyJDb25uZWN0aW9uIl0KKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNl
X2FkZGl0aW9uYWxfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFZh
bGlkUmVzcG9uc2VIZWFkZXJzKCkgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGhlYWRlcnNbIkNv
bm5lY3Rpb24iXSA9ICJjbG9zZSIKKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX2ludmFsaWRfdXBn
cmFkZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXNwb25zZUhlYWRl
cnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1si
VXBncmFkZSJdCisgICAgICAgICAgICBoZWFkZXJzWyJVcGdyYWRlIl0gPSAic29ja2V0d2ViIgor
CisgICAgZGVmIHRlc3RfcmVzcG9uc2VfbWlzc2luZ191cGdyYWRlKHNlbGYpOgorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlc3BvbnNlSGVhZGVycyhJbnZhbGlkVXBncmFkZSkgYXMg
aGVhZGVyczoKKyAgICAgICAgICAgIGRlbCBoZWFkZXJzWyJVcGdyYWRlIl0KKworICAgIGRlZiB0
ZXN0X3Jlc3BvbnNlX2FkZGl0aW9uYWxfdXBncmFkZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydEludmFsaWRSZXNwb25zZUhlYWRlcnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhlYWRlcnM6
CisgICAgICAgICAgICBoZWFkZXJzWyJVcGdyYWRlIl0gPSAic29ja2V0d2ViIgorCisgICAgZGVm
IHRlc3RfcmVzcG9uc2VfaW52YWxpZF9hY2NlcHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRJbnZhbGlkUmVzcG9uc2VIZWFkZXJzKEludmFsaWRIZWFkZXJWYWx1ZSkgYXMgaGVhZGVy
czoKKyAgICAgICAgICAgIGRlbCBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdCisgICAg
ICAgICAgICBvdGhlcl9rZXkgPSAiMUVxNFVERUZRWWczWXNwTmdxeHY1Zz09IgorICAgICAgICAg
ICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1BY2NlcHQiXSA9IGFjY2VwdChvdGhlcl9rZXkpCisK
KyAgICBkZWYgdGVzdF9yZXNwb25zZV9taXNzaW5nX2FjY2VwdChzZWxmKToKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydEludmFsaWRSZXNwb25zZUhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVh
ZGVyczoKKyAgICAgICAgICAgIGRlbCBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdCisK
KyAgICBkZWYgdGVzdF9yZXNwb25zZV9hZGRpdGlvbmFsX2FjY2VwdChzZWxmKToKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXNwb25zZUhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMg
aGVhZGVyczoKKyAgICAgICAgICAgICMgVGhpcyBkdXBsaWNhdGVzIHRoZSBTZWMtV2ViU29ja2V0
LUFjY2VwdCBoZWFkZXIuCisgICAgICAgICAgICBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2Vw
dCJdID0gaGVhZGVyc1siU2VjLVdlYlNvY2tldC1BY2NlcHQiXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaGVhZGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90
ZXN0X2hlYWRlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4y
NmQ4NWZhNWVhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVz
dF9oZWFkZXJzLnB5CkBAIC0wLDAgKzEsMTg1IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3
ZWJzb2NrZXRzLmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRIZWFkZXJGb3JtYXQsIEludmFsaWRI
ZWFkZXJWYWx1ZQorZnJvbSB3ZWJzb2NrZXRzLmhlYWRlcnMgaW1wb3J0ICoKKworCitjbGFzcyBI
ZWFkZXJzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3BhcnNlX2Nvbm5l
Y3Rpb24oc2VsZik6CisgICAgICAgIGZvciBoZWFkZXIsIHBhcnNlZCBpbiBbCisgICAgICAgICAg
ICAjIFJlYWxpc3RpYyB1c2UgY2FzZXMKKyAgICAgICAgICAgICgiVXBncmFkZSIsIFsiVXBncmFk
ZSJdKSwgICMgU2FmYXJpLCBDaHJvbWUKKyAgICAgICAgICAgICgia2VlcC1hbGl2ZSwgVXBncmFk
ZSIsIFsia2VlcC1hbGl2ZSIsICJVcGdyYWRlIl0pLCAgIyBGaXJlZm94CisgICAgICAgICAgICAj
IFBhdGhvbG9naWNhbCBleGFtcGxlCisgICAgICAgICAgICAoIiwsXHQsICAsICxVcGdyYWRlICAs
LCIsIFsiVXBncmFkZSJdKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJU
ZXN0KGhlYWRlcj1oZWFkZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFy
c2VfY29ubmVjdGlvbihoZWFkZXIpLCBwYXJzZWQpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9jb25u
ZWN0aW9uX2ludmFsaWRfaGVhZGVyX2Zvcm1hdChzZWxmKToKKyAgICAgICAgZm9yIGhlYWRlciBp
biBbIj8/PyIsICJrZWVwLWFsaXZlOyBVcGdyYWRlIl06CisgICAgICAgICAgICB3aXRoIHNlbGYu
c3ViVGVzdChoZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKEludmFsaWRIZWFkZXJGb3JtYXQpOgorICAgICAgICAgICAgICAgICAgICBwYXJzZV9j
b25uZWN0aW9uKGhlYWRlcikKKworICAgIGRlZiB0ZXN0X3BhcnNlX3VwZ3JhZGUoc2VsZik6Cisg
ICAgICAgIGZvciBoZWFkZXIsIHBhcnNlZCBpbiBbCisgICAgICAgICAgICAjIFJlYWxpc3RpYyB1
c2UgY2FzZQorICAgICAgICAgICAgKCJ3ZWJzb2NrZXQiLCBbIndlYnNvY2tldCJdKSwKKyAgICAg
ICAgICAgICMgU3ludGhldGljIGV4YW1wbGUKKyAgICAgICAgICAgICgiaHR0cC8zLjAsIHdlYnNv
Y2tldCIsIFsiaHR0cC8zLjAiLCAid2Vic29ja2V0Il0pLAorICAgICAgICAgICAgIyBQYXRob2xv
Z2ljYWwgZXhhbXBsZQorICAgICAgICAgICAgKCIsLCAgV2ViU29ja2V0LCAgXHQsLCIsIFsiV2Vi
U29ja2V0Il0pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGVh
ZGVyPWhlYWRlcik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZV91cGdy
YWRlKGhlYWRlciksIHBhcnNlZCkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3VwZ3JhZGVfaW52YWxp
ZF9oZWFkZXJfZm9ybWF0KHNlbGYpOgorICAgICAgICBmb3IgaGVhZGVyIGluIFsiPz8/IiwgIndl
YnNvY2tldCAyIiwgImh0dHAvMy4wOyB3ZWJzb2NrZXQiXToKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5zdWJUZXN0KGhlYWRlcj1oZWFkZXIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoSW52YWxpZEhlYWRlckZvcm1hdCk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNl
X3VwZ3JhZGUoaGVhZGVyKQorCisgICAgZGVmIHRlc3RfcGFyc2VfZXh0ZW5zaW9uKHNlbGYpOgor
ICAgICAgICBmb3IgaGVhZGVyLCBwYXJzZWQgaW4gWworICAgICAgICAgICAgIyBTeW50aGV0aWMg
ZXhhbXBsZXMKKyAgICAgICAgICAgICgiZm9vIiwgWygiZm9vIiwgW10pXSksCisgICAgICAgICAg
ICAoImZvbywgYmFyIiwgWygiZm9vIiwgW10pLCAoImJhciIsIFtdKV0pLAorICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgICdmb287IG5hbWU7IHRva2VuPXRva2VuOyBxdW90ZWQtc3RyaW5n
PSJxdW90ZWQtc3RyaW5nIiwgJworICAgICAgICAgICAgICAgICJiYXI7IHF1dXg7IHF1dXV4IiwK
KyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJmb28iLAorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgibmFtZSIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgidG9rZW4iLCAidG9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInF1
b3RlZC1zdHJpbmciLCAicXVvdGVkLXN0cmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKCJiYXIiLCBb
KCJxdXV4IiwgTm9uZSksICgicXV1dXgiLCBOb25lKV0pLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgZXhhbXBsZQorICAgICAg
ICAgICAgKAorICAgICAgICAgICAgICAgICIsXHQsICwgICxmb28gIDtiYXIgPSA0MiwsICAgYmF6
LCwiLAorICAgICAgICAgICAgICAgIFsoImZvbyIsIFsoImJhciIsICI0MiIpXSksICgiYmF6Iiwg
W10pXSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAjIFJlYWxpc3RpYyB1c2UgY2FzZXMg
Zm9yIHBlcm1lc3NhZ2UtZGVmbGF0ZQorICAgICAgICAgICAgKCJwZXJtZXNzYWdlLWRlZmxhdGUi
LCBbKCJwZXJtZXNzYWdlLWRlZmxhdGUiLCBbXSldKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwKKyAg
ICAgICAgICAgICAgICBbKCJwZXJtZXNzYWdlLWRlZmxhdGUiLCBbKCJjbGllbnRfbWF4X3dpbmRv
d19iaXRzIiwgTm9uZSldKV0sCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAg
ICAgICAgICAgICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTAi
LAorICAgICAgICAgICAgICAgIFsoInBlcm1lc3NhZ2UtZGVmbGF0ZSIsIFsoInNlcnZlcl9tYXhf
d2luZG93X2JpdHMiLCAiMTAiKV0pXSwKKyAgICAgICAgICAgICksCisgICAgICAgIF06CisgICAg
ICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlX2V4dGVuc2lvbihoZWFkZXIpLCBwYXJzZWQpCisgICAg
ICAgICAgICAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IGJ1aWxkX2V4dGVuc2lvbiByb3VuZC10cmlw
cyBjbGVhbmx5LgorICAgICAgICAgICAgICAgIHVucGFyc2VkID0gYnVpbGRfZXh0ZW5zaW9uKHBh
cnNlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlX2V4dGVuc2lvbih1
bnBhcnNlZCksIHBhcnNlZCkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2V4dGVuc2lvbl9pbnZhbGlk
X2hlYWRlcl9mb3JtYXQoc2VsZik6CisgICAgICAgIGZvciBoZWFkZXIgaW4gWworICAgICAgICAg
ICAgIyBUcnVuY2F0ZWQgZXhhbXBsZXMKKyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgIixc
dCwiLAorICAgICAgICAgICAgImZvbzsiLAorICAgICAgICAgICAgImZvbzsgYmFyOyIsCisgICAg
ICAgICAgICAiZm9vOyBiYXI9IiwKKyAgICAgICAgICAgICdmb287IGJhcj0iYmF6JywKKyAgICAg
ICAgICAgICMgV3JvbmcgZGVsaW1pdGVyCisgICAgICAgICAgICAiZm9vLCBiYXIsIGJhej1xdXV4
OyBxdXV1eCIsCisgICAgICAgICAgICAjIFZhbHVlIGluIHF1b3RlZCBzdHJpbmcgcGFyYW1ldGVy
IHRoYXQgaXNuJ3QgYSB0b2tlbgorICAgICAgICAgICAgJ2ZvbzsgYmFyPSIgIicsCisgICAgICAg
IF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoZWFkZXI9aGVhZGVyKToKKyAgICAg
ICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIZWFkZXJGb3JtYXQpOgor
ICAgICAgICAgICAgICAgICAgICBwYXJzZV9leHRlbnNpb24oaGVhZGVyKQorCisgICAgZGVmIHRl
c3RfcGFyc2Vfc3VicHJvdG9jb2woc2VsZik6CisgICAgICAgIGZvciBoZWFkZXIsIHBhcnNlZCBp
biBbCisgICAgICAgICAgICAjIFN5bnRoZXRpYyBleGFtcGxlcworICAgICAgICAgICAgKCJmb28i
LCBbImZvbyJdKSwKKyAgICAgICAgICAgICgiZm9vLCBiYXIiLCBbImZvbyIsICJiYXIiXSksCisg
ICAgICAgICAgICAjIFBhdGhvbG9naWNhbCBleGFtcGxlCisgICAgICAgICAgICAoIixcdCwgLCAg
LGZvbyAgLCwgICBiYXIsYmF6LCwiLCBbImZvbyIsICJiYXIiLCAiYmF6Il0pLAorICAgICAgICBd
OgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGVhZGVyPWhlYWRlcik6CisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZV9zdWJwcm90b2NvbChoZWFkZXIpLCBwYXJz
ZWQpCisgICAgICAgICAgICAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IGJ1aWxkX3N1YnByb3RvY29s
IHJvdW5kLXRyaXBzIGNsZWFubHkuCisgICAgICAgICAgICAgICAgdW5wYXJzZWQgPSBidWlsZF9z
dWJwcm90b2NvbChwYXJzZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJz
ZV9zdWJwcm90b2NvbCh1bnBhcnNlZCksIHBhcnNlZCkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3N1
YnByb3RvY29sX2ludmFsaWRfaGVhZGVyKHNlbGYpOgorICAgICAgICBmb3IgaGVhZGVyIGluIFsK
KyAgICAgICAgICAgICMgVHJ1bmNhdGVkIGV4YW1wbGVzCisgICAgICAgICAgICAiIiwKKyAgICAg
ICAgICAgICIsXHQsIgorICAgICAgICAgICAgIyBXcm9uZyBkZWxpbWl0ZXIKKyAgICAgICAgICAg
ICJmb287IGJhciIsCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCho
ZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElu
dmFsaWRIZWFkZXJGb3JtYXQpOgorICAgICAgICAgICAgICAgICAgICBwYXJzZV9zdWJwcm90b2Nv
bChoZWFkZXIpCisKKyAgICBkZWYgdGVzdF9idWlsZF93d3dfYXV0aGVudGljYXRlX2Jhc2ljKHNl
bGYpOgorICAgICAgICAjIFRlc3QgdmVjdG9yIGZyb20gUkZDIDc2MTcKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ1aWxkX3d3d19hdXRoZW50aWNhdGVfYmFzaWMoImZv
byIpLCAnQmFzaWMgcmVhbG09ImZvbyIsIGNoYXJzZXQ9IlVURi04IicKKyAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfYnVpbGRfd3d3X2F1dGhlbnRpY2F0ZV9iYXNpY19pbnZhbGlkX3JlYWxtKHNl
bGYpOgorICAgICAgICAjIFJlYWxtIGNvbnRhaW5zIGEgY29udHJvbCBjaGFyYWN0ZXIgZm9yYmlk
ZGVuIGluIHF1b3RlZC1zdHJpbmcgZW5jb2RpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ1aWxkX3d3d19hdXRoZW50aWNhdGVfYmFz
aWMoIlx1MDAwNyIpCisKKyAgICBkZWYgdGVzdF9idWlsZF9hdXRob3JpemF0aW9uX2Jhc2ljKHNl
bGYpOgorICAgICAgICAjIFRlc3QgdmVjdG9yIGZyb20gUkZDIDc2MTcKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ1aWxkX2F1dGhvcml6YXRpb25fYmFzaWMoIkFsYWRk
aW4iLCAib3BlbiBzZXNhbWUiKSwKKyAgICAgICAgICAgICJCYXNpYyBRV3hoWkdScGJqcHZjR1Z1
SUhObGMyRnRaUT09IiwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYnVpbGRfYXV0aG9yaXph
dGlvbl9iYXNpY191dGY4KHNlbGYpOgorICAgICAgICAjIFRlc3QgdmVjdG9yIGZyb20gUkZDIDc2
MTcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ1aWxkX2F1dGhvcml6
YXRpb25fYmFzaWMoInRlc3QiLCAiMTIzwqMiKSwgIkJhc2ljIGRHVnpkRG94TWpQQ293PT0iCisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2F1dGhvcml6YXRpb25fYmFzaWMoc2VsZik6
CisgICAgICAgIGZvciBoZWFkZXIsIHBhcnNlZCBpbiBbCisgICAgICAgICAgICAoIkJhc2ljIFFX
eGhaR1JwYmpwdmNHVnVJSE5sYzJGdFpRPT0iLCAoIkFsYWRkaW4iLCAib3BlbiBzZXNhbWUiKSks
CisgICAgICAgICAgICAjIFBhc3N3b3JkIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXIKKyAg
ICAgICAgICAgICgiQmFzaWMgZEdWemREb3hNalBDb3c9PSIsICgidGVzdCIsICIxMjPCoyIpKSwK
KyAgICAgICAgICAgICMgUGFzc3dvcmQgY29udGFpbnMgYSBjb2xvbgorICAgICAgICAgICAgKCJC
YXNpYyBZV3hoWkdScGJqcHZjR1Z1T25ObGMyRnRaUT09IiwgKCJhbGFkZGluIiwgIm9wZW46c2Vz
YW1lIikpLAorICAgICAgICAgICAgIyBTY2hlbWUgbmFtZSBtdXN0IGJlIGNhc2UgaW5zZW5zaXRp
dmUKKyAgICAgICAgICAgICgiYmFzaWMgUVd4aFpHUnBianB2Y0dWdUlITmxjMkZ0WlE9PSIsICgi
QWxhZGRpbiIsICJvcGVuIHNlc2FtZSIpKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGgg
c2VsZi5zdWJUZXN0KGhlYWRlcj1oZWFkZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGFyc2VfYXV0aG9yaXphdGlvbl9iYXNpYyhoZWFkZXIpLCBwYXJzZWQpCisKKyAgICBk
ZWYgdGVzdF9wYXJzZV9hdXRob3JpemF0aW9uX2Jhc2ljX2ludmFsaWRfaGVhZGVyX2Zvcm1hdChz
ZWxmKToKKyAgICAgICAgZm9yIGhlYWRlciBpbiBbCisgICAgICAgICAgICAiLy8gQmFzaWMgUVd4
aFpHUnBianB2Y0dWdUlITmxjMkZ0WlE9PSIsCisgICAgICAgICAgICAiQmFzaWNcdFFXeGhaR1Jw
YmpwdmNHVnVJSE5sYzJGdFpRPT0iLAorICAgICAgICAgICAgIkJhc2ljICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioiLAorICAgICAgICAgICAgIkJhc2ljIFFXeGhaR1JwYmpwdmNHVnVJSE5s
YzJGdFpRPT0gLy8iLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qo
aGVhZGVyPWhlYWRlcik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJ
bnZhbGlkSGVhZGVyRm9ybWF0KToKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VfYXV0aG9yaXph
dGlvbl9iYXNpYyhoZWFkZXIpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9hdXRob3JpemF0aW9uX2Jh
c2ljX2ludmFsaWRfaGVhZGVyX3ZhbHVlKHNlbGYpOgorICAgICAgICBmb3IgaGVhZGVyIGluIFsK
KyAgICAgICAgICAgICJEaWdlc3QgLi4uIiwKKyAgICAgICAgICAgICJCYXNpYyBRV3hoWkdScGJq
cHZjR1Z1SUhObGMyRnRaUSIsCisgICAgICAgICAgICAiQmFzaWMgUVd4aFpHTmxjMkZ0WlE9PSIs
CisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoZWFkZXI9aGVhZGVy
KToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIZWFkZXJW
YWx1ZSk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlX2F1dGhvcml6YXRpb25fYmFzaWMoaGVh
ZGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaHR0cC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2h0dHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi40MWI1MjJjM2Q1NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvdGVzdHMvdGVzdF9odHRwLnB5CkBAIC0wLDAgKzEsMjQ5IEBACitpbXBvcnQgYXN5
bmNpbworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Vic29ja2V0cy5leGNlcHRpb25zIGltcG9y
dCBTZWN1cml0eUVycm9yCitmcm9tIHdlYnNvY2tldHMuaHR0cCBpbXBvcnQgKgorZnJvbSB3ZWJz
b2NrZXRzLmh0dHAgaW1wb3J0IHJlYWRfaGVhZGVycworCitmcm9tIC51dGlscyBpbXBvcnQgQXN5
bmNpb1Rlc3RDYXNlCisKKworY2xhc3MgSFRUUEFzeW5jVGVzdHMoQXN5bmNpb1Rlc3RDYXNlKToK
KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBz
ZWxmLnN0cmVhbSA9IGFzeW5jaW8uU3RyZWFtUmVhZGVyKGxvb3A9c2VsZi5sb29wKQorCisgICAg
YXN5bmMgZGVmIHRlc3RfcmVhZF9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAjIEV4YW1wbGUgZnJv
bSB0aGUgcHJvdG9jb2wgb3ZlcnZpZXcgaW4gUkZDIDY0NTUKKyAgICAgICAgc2VsZi5zdHJlYW0u
ZmVlZF9kYXRhKAorICAgICAgICAgICAgYiJHRVQgL2NoYXQgSFRUUC8xLjFcclxuIgorICAgICAg
ICAgICAgYiJIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuIgorICAgICAgICAgICAgYiJVcGdy
YWRlOiB3ZWJzb2NrZXRcclxuIgorICAgICAgICAgICAgYiJDb25uZWN0aW9uOiBVcGdyYWRlXHJc
biIKKyAgICAgICAgICAgIGIiU2VjLVdlYlNvY2tldC1LZXk6IGRHaGxJSE5oYlhCc1pTQnViMjVq
WlE9PVxyXG4iCisgICAgICAgICAgICBiIk9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbiIK
KyAgICAgICAgICAgIGIiU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdCwgc3VwZXJjaGF0XHJc
biIKKyAgICAgICAgICAgIGIiU2VjLVdlYlNvY2tldC1WZXJzaW9uOiAxM1xyXG4iCisgICAgICAg
ICAgICBiIlxyXG4iCisgICAgICAgICkKKyAgICAgICAgcGF0aCwgaGVhZGVycyA9IGF3YWl0IHJl
YWRfcmVxdWVzdChzZWxmLnN0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCAi
L2NoYXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbIlVwZ3JhZGUiXSwgIndl
YnNvY2tldCIpCisKKyAgICBhc3luYyBkZWYgdGVzdF9yZWFkX3JlcXVlc3RfZW1wdHkoc2VsZik6
CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZW9mKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgRU9GRXJyb3IsICJjb25uZWN0aW9uIGNsb3NlZCB3
aGlsZSByZWFkaW5nIEhUVFAgcmVxdWVzdCBsaW5lIgorICAgICAgICApOgorICAgICAgICAgICAg
YXdhaXQgcmVhZF9yZXF1ZXN0KHNlbGYuc3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfcmVh
ZF9yZXF1ZXN0X2ludmFsaWRfcmVxdWVzdF9saW5lKHNlbGYpOgorICAgICAgICBzZWxmLnN0cmVh
bS5mZWVkX2RhdGEoYiJHRVQgL1xyXG5cclxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJpbnZhbGlkIEhUVFAgcmVxdWVzdCBsaW5lOiBHRVQgLyIp
OgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXF1ZXN0KHNlbGYuc3RyZWFtKQorCisgICAgYXN5
bmMgZGVmIHRlc3RfcmVhZF9yZXF1ZXN0X3Vuc3VwcG9ydGVkX21ldGhvZChzZWxmKToKKyAgICAg
ICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKGIiT1BUSU9OUyAqIEhUVFAvMS4xXHJcblxyXG4iKQor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInVuc3VwcG9y
dGVkIEhUVFAgbWV0aG9kOiBPUFRJT05TIik6CisgICAgICAgICAgICBhd2FpdCByZWFkX3JlcXVl
c3Qoc2VsZi5zdHJlYW0pCisKKyAgICBhc3luYyBkZWYgdGVzdF9yZWFkX3JlcXVlc3RfdW5zdXBw
b3J0ZWRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKGIiR0VU
IC9jaGF0IEhUVFAvMS4wXHJcblxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
UmVnZXgoVmFsdWVFcnJvciwgInVuc3VwcG9ydGVkIEhUVFAgdmVyc2lvbjogSFRUUC8xLjAiKToK
KyAgICAgICAgICAgIGF3YWl0IHJlYWRfcmVxdWVzdChzZWxmLnN0cmVhbSkKKworICAgIGFzeW5j
IGRlZiB0ZXN0X3JlYWRfcmVxdWVzdF9pbnZhbGlkX2hlYWRlcihzZWxmKToKKyAgICAgICAgc2Vs
Zi5zdHJlYW0uZmVlZF9kYXRhKGIiR0VUIC9jaGF0IEhUVFAvMS4xXHJcbk9vcHNcclxuIikKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJpbnZhbGlkIEhU
VFAgaGVhZGVyIGxpbmU6IE9vcHMiKToKKyAgICAgICAgICAgIGF3YWl0IHJlYWRfcmVxdWVzdChz
ZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2Uoc2VsZik6Cisg
ICAgICAgICMgRXhhbXBsZSBmcm9tIHRoZSBwcm90b2NvbCBvdmVydmlldyBpbiBSRkMgNjQ1NQor
ICAgICAgICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoCisgICAgICAgICAgICBiIkhUVFAvMS4xIDEw
MSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbiIKKyAgICAgICAgICAgIGIiVXBncmFkZTogd2Vic29j
a2V0XHJcbiIKKyAgICAgICAgICAgIGIiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iCisgICAgICAg
ICAgICBiIlNlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289
XHJcbiIKKyAgICAgICAgICAgIGIiU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG4iCisg
ICAgICAgICAgICBiIlxyXG4iCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzX2NvZGUsIHJlYXNv
biwgaGVhZGVycyA9IGF3YWl0IHJlYWRfcmVzcG9uc2Uoc2VsZi5zdHJlYW0pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RhdHVzX2NvZGUsIDEwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZWFzb24sICJTd2l0Y2hpbmcgUHJvdG9jb2xzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoZWFkZXJzWyJVcGdyYWRlIl0sICJ3ZWJzb2NrZXQiKQorCisgICAgYXN5bmMgZGVmIHRlc3Rf
cmVhZF9yZXNwb25zZV9lbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9lb2Yo
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBFT0ZF
cnJvciwgImNvbm5lY3Rpb24gY2xvc2VkIHdoaWxlIHJlYWRpbmcgSFRUUCBzdGF0dXMgbGluZSIK
KyAgICAgICAgKToKKyAgICAgICAgICAgIGF3YWl0IHJlYWRfcmVzcG9uc2Uoc2VsZi5zdHJlYW0p
CisKKyAgICBhc3luYyBkZWYgdGVzdF9yZWFkX3JlcXVlc3RfaW52YWxpZF9zdGF0dXNfbGluZShz
ZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKGIiSGVsbG8hXHJcbiIpCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiaW52YWxpZCBIVFRQ
IHN0YXR1cyBsaW5lOiBIZWxsbyEiKToKKyAgICAgICAgICAgIGF3YWl0IHJlYWRfcmVzcG9uc2Uo
c2VsZi5zdHJlYW0pCisKKyAgICBhc3luYyBkZWYgdGVzdF9yZWFkX3Jlc3BvbnNlX3Vuc3VwcG9y
dGVkX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiIkhUVFAv
MS4wIDQwMCBCYWQgUmVxdWVzdFxyXG5cclxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJ1bnN1cHBvcnRlZCBIVFRQIHZlcnNpb246IEhUVFAvMS4w
Iik6CisgICAgICAgICAgICBhd2FpdCByZWFkX3Jlc3BvbnNlKHNlbGYuc3RyZWFtKQorCisgICAg
YXN5bmMgZGVmIHRlc3RfcmVhZF9yZXNwb25zZV9pbnZhbGlkX3N0YXR1cyhzZWxmKToKKyAgICAg
ICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKGIiSFRUUC8xLjEgT01HIFdURlxyXG5cclxuIikKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJpbnZhbGlkIEhU
VFAgc3RhdHVzIGNvZGU6IE9NRyIpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXNwb25zZShz
ZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2VfdW5zdXBwb3J0
ZWRfc3RhdHVzKHNlbGYpOgorICAgICAgICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoYiJIVFRQLzEu
MSAwMDcgTXkgbmFtZSBpcyBCb25kXHJcblxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInVuc3VwcG9ydGVkIEhUVFAgc3RhdHVzIGNvZGU6IDAw
NyIpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXNwb25zZShzZWxmLnN0cmVhbSkKKworICAg
IGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2VfaW52YWxpZF9yZWFzb24oc2VsZik6CisgICAg
ICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiIkhUVFAvMS4xIDIwMCBceDdmXHJcblxyXG4iKQor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImludmFsaWQg
SFRUUCByZWFzb24gcGhyYXNlOiBcXHg3ZiIpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXNw
b25zZShzZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2VfaW52
YWxpZF9oZWFkZXIoc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiIkhUVFAv
MS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcclxuT29wc1xyXG4iKQorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImludmFsaWQgSFRUUCBoZWFkZXIg
bGluZTogT29wcyIpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXNwb25zZShzZWxmLnN0cmVh
bSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X2hlYWRlcl9uYW1lKHNlbGYpOgorICAgICAgICBzZWxm
LnN0cmVhbS5mZWVkX2RhdGEoYiJmb28gYmFyOiBiYXogcXV4XHJcblxyXG4iKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgYXdhaXQgcmVh
ZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfaGVhZGVyX3ZhbHVl
KHNlbGYpOgorICAgICAgICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoYiJmb286IFx4MDBceDAwXHgw
ZlxyXG5cclxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToK
KyAgICAgICAgICAgIGF3YWl0IHJlYWRfaGVhZGVycyhzZWxmLnN0cmVhbSkKKworICAgIGFzeW5j
IGRlZiB0ZXN0X2hlYWRlcnNfbGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRf
ZGF0YShiImZvbzogYmFyXHJcbiIgKiAyNTcgKyBiIlxyXG4iKQorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKFNlY3VyaXR5RXJyb3IpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9oZWFk
ZXJzKHNlbGYuc3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfbGluZV9saW1pdChzZWxmKToK
KyAgICAgICAgIyBIZWFkZXIgbGluZSBjb250YWlucyA1ICsgNDA5MCArIDIgPSA0MDk3IGJ5dGVz
LgorICAgICAgICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoYiJmb286ICIgKyBiImEiICogNDA5MCAr
IGIiXHJcblxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNlY3VyaXR5RXJy
b3IpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQorCisgICAg
YXN5bmMgZGVmIHRlc3RfbGluZV9lbmRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZl
ZWRfZGF0YShiImZvbzogYmFyXG5cbiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
RU9GRXJyb3IpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQor
CisKK2NsYXNzIEhlYWRlcnNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRlcnMgPSBIZWFkZXJzKFsoIkNvbm5lY3Rpb24iLCAi
VXBncmFkZSIpLCAoIlNlcnZlciIsIFVTRVJfQUdFTlQpXSkKKworICAgIGRlZiB0ZXN0X3N0cihz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihzZWxmLmhl
YWRlcnMpLCBmIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuU2VydmVyOiB7VVNFUl9BR0VOVH1cclxu
XHJcbiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoc2VsZi5oZWFkZXJzKSwKKyAgICAgICAg
ICAgIGYiSGVhZGVycyhbKCdDb25uZWN0aW9uJywgJ1VwZ3JhZGUnKSwgIiBmIignU2VydmVyJywg
J3tVU0VSX0FHRU5UfScpXSkiLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV92
YWx1ZXNfZXJyb3Jfc3RyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNdWx0
aXBsZVZhbHVlc0Vycm9yKCJDb25uZWN0aW9uIikpLCAiJ0Nvbm5lY3Rpb24nIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoTXVsdGlwbGVWYWx1ZXNFcnJvcigpKSwgIiIpCisKKyAgICBk
ZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiU2VydmVyIiwg
c2VsZi5oZWFkZXJzKQorCisgICAgZGVmIHRlc3RfY29udGFpbnNfY2FzZV9pbnNlbnNpdGl2ZShz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2VydmVyIiwgc2VsZi5oZWFkZXJzKQorCisg
ICAgZGVmIHRlc3RfY29udGFpbnNfbm90X2ZvdW5kKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dE5vdEluKCJEYXRlIiwgc2VsZi5oZWFkZXJzKQorCisgICAgZGVmIHRlc3RfY29udGFpbnNfbm9u
X3N0cmluZ19rZXkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oNDIsIHNlbGYuaGVh
ZGVycykKKworICAgIGRlZiB0ZXN0X2l0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2V0KGl0ZXIoc2VsZi5oZWFkZXJzKSksIHsiY29ubmVjdGlvbiIsICJzZXJ2ZXIifSkKKwor
ICAgIGRlZiB0ZXN0X2xlbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vs
Zi5oZWFkZXJzKSwgMikKKworICAgIGRlZiB0ZXN0X2dldGl0ZW0oc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzWyJTZXJ2ZXIiXSwgVVNFUl9BR0VOVCkKKworICAg
IGRlZiB0ZXN0X2dldGl0ZW1fY2FzZV9pbnNlbnNpdGl2ZShzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLmhlYWRlcnNbInNlcnZlciJdLCBVU0VSX0FHRU5UKQorCisgICAgZGVm
IHRlc3RfZ2V0aXRlbV9rZXlfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgc2VsZi5oZWFkZXJzWyJVcGdyYWRlIl0KKwor
ICAgIGRlZiB0ZXN0X2dldGl0ZW1fbXVsdGlwbGVfdmFsdWVzX2Vycm9yKHNlbGYpOgorICAgICAg
ICBzZWxmLmhlYWRlcnNbIlNlcnZlciJdID0gIjIiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoTXVsdGlwbGVWYWx1ZXNFcnJvcik6CisgICAgICAgICAgICBzZWxmLmhlYWRlcnNbIlNl
cnZlciJdCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRl
cnNbIlVwZ3JhZGUiXSA9ICJ3ZWJzb2NrZXQiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5oZWFkZXJzWyJVcGdyYWRlIl0sICJ3ZWJzb2NrZXQiKQorCisgICAgZGVmIHRlc3Rfc2V0aXRl
bV9jYXNlX2luc2Vuc2l0aXZlKHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRlcnNbInVwZ3JhZGUi
XSA9ICJ3ZWJzb2NrZXQiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzWyJV
cGdyYWRlIl0sICJ3ZWJzb2NrZXQiKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9tdWx0aXBsZV92
YWx1ZXMoc2VsZik6CisgICAgICAgIHNlbGYuaGVhZGVyc1siQ29ubmVjdGlvbiJdID0gImNsb3Nl
IgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE11bHRpcGxlVmFsdWVzRXJyb3IpOgor
ICAgICAgICAgICAgc2VsZi5oZWFkZXJzWyJDb25uZWN0aW9uIl0KKworICAgIGRlZiB0ZXN0X2Rl
bGl0ZW0oc2VsZik6CisgICAgICAgIGRlbCBzZWxmLmhlYWRlcnNbIkNvbm5lY3Rpb24iXQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYu
aGVhZGVyc1siQ29ubmVjdGlvbiJdCisKKyAgICBkZWYgdGVzdF9kZWxpdGVtX2Nhc2VfaW5zZW5z
aXRpdmUoc2VsZik6CisgICAgICAgIGRlbCBzZWxmLmhlYWRlcnNbImNvbm5lY3Rpb24iXQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYu
aGVhZGVyc1siQ29ubmVjdGlvbiJdCisKKyAgICBkZWYgdGVzdF9kZWxpdGVtX211bHRpcGxlX3Zh
bHVlcyhzZWxmKToKKyAgICAgICAgc2VsZi5oZWFkZXJzWyJDb25uZWN0aW9uIl0gPSAiY2xvc2Ui
CisgICAgICAgIGRlbCBzZWxmLmhlYWRlcnNbIkNvbm5lY3Rpb24iXQorICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaGVhZGVyc1siQ29u
bmVjdGlvbiJdCisKKyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgb3RoZXJfaGVhZGVy
cyA9IHNlbGYuaGVhZGVycy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhl
YWRlcnMsIG90aGVyX2hlYWRlcnMpCisKKyAgICBkZWYgdGVzdF9lcV9ub3RfZXF1YWwoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2VsZi5oZWFkZXJzLCBbXSkKKworICAgIGRl
ZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRlcnMuY2xlYXIoKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaGVhZGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLmhlYWRlcnMsIEhlYWRlcnMoKSkKKworICAgIGRlZiB0ZXN0X2dldF9hbGwoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzLmdldF9hbGwoIkNvbm5lY3Rp
b24iKSwgWyJVcGdyYWRlIl0pCisKKyAgICBkZWYgdGVzdF9nZXRfYWxsX2Nhc2VfaW5zZW5zaXRp
dmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzLmdldF9hbGwo
ImNvbm5lY3Rpb24iKSwgWyJVcGdyYWRlIl0pCisKKyAgICBkZWYgdGVzdF9nZXRfYWxsX25vX3Zh
bHVlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhlYWRlcnMuZ2V0X2Fs
bCgiVXBncmFkZSIpLCBbXSkKKworICAgIGRlZiB0ZXN0X2dldF9hbGxfbXVsdGlwbGVfdmFsdWVz
KHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRlcnNbIkNvbm5lY3Rpb24iXSA9ICJjbG9zZSIKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhlYWRlcnMuZ2V0X2FsbCgiQ29ubmVjdGlvbiIp
LCBbIlVwZ3JhZGUiLCAiY2xvc2UiXSkKKworICAgIGRlZiB0ZXN0X3Jhd19pdGVtcyhzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3Qoc2VsZi5oZWFkZXJz
LnJhd19pdGVtcygpKSwKKyAgICAgICAgICAgIFsoIkNvbm5lY3Rpb24iLCAiVXBncmFkZSIpLCAo
IlNlcnZlciIsIFVTRVJfQUdFTlQpXSwKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL3Rlc3RzL3Rlc3RfbG9jYWxob3N0LmNuZiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90
ZXN0X2xvY2FsaG9zdC5jbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li42ZGMzMzFhYzY5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMv
dGVzdF9sb2NhbGhvc3QuY25mCkBAIC0wLDAgKzEsMjYgQEAKK1sgcmVxIF0KKworZGVmYXVsdF9t
ZCA9IHNoYTI1NgorZW5jcnlwdF9rZXkgPSBubworCitwcm9tcHQgPSBubworCitkaXN0aW5ndWlz
aGVkX25hbWUgPSBkbgoreDUwOV9leHRlbnNpb25zID0gZXh0CisKK1sgZG4gXQorCitDID0gIkZS
IgorTCA9ICJQYXJpcyIKK08gPSAiQXltZXJpYyBBdWd1c3RpbiIKK0NOID0gImxvY2FsaG9zdCIK
KworWyBleHQgXQorCitzdWJqZWN0QWx0TmFtZSA9IEBzYW4KKworWyBzYW4gXQorCitETlMuMSA9
IGxvY2FsaG9zdAorSVAuMiA9IDEyNy4wLjAuMQorSVAuMyA9IDo6MQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfbG9jYWxob3N0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90
ZXN0cy90ZXN0X2xvY2FsaG9zdC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5iOGE5ZWE5YWIzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
dGVzdHMvdGVzdF9sb2NhbGhvc3QucGVtCkBAIC0wLDAgKzEsNDggQEAKKy0tLS0tQkVHSU4gUFJJ
VkFURSBLRVktLS0tLQorTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0Fn
RUFBb0lCQVFDVWdyUVZrTmJBV1JsbworelpVajE0VWZ6N1lFcDJNWG12bWhkbGZPR0x3ankreFBP
OThhSlJ2NS9uWUYyZVdNM2xsY21MZThGYkJTSytRRgorVG80c3U3WlZuYzZxSVRPSHFjU0RVdzA2
V2FyUVVNczk0YmhIVXZRcDF1OCtiMmhOaU1lR3c2K1FpQkk2T0pSTworaUdwTFJia042VWozQUt3
aThTWVZvTHlNaXp0dXdiTnlHZjhmRjNERHBIWnRCaXRHdE1TQkNNc1FzZkI0NjVwbAorMlVveUJy
V2EybHNiTHQzVnZCWlp2SHFmRXVQanBqaktONVVTSVhuYWYwTml6YVI2cHMzRXlmZnRXeTRpN3pJ
UQorTjV1VEV4dmFQRHlQbjluSDNxL2RrVDk5bVNNU1UxQXZUVHBYOFBON0RscUU2d1pNYlFzQlBS
R1c3R0VsUStPeAorSUtkS09MazVBZ01CQUFFQ2dnRUFkM2txelFxbmFUaUVzNFpvQzl5UFVVYzFw
RXJROGlXUDI3QXI5VFo2N01WYQorQjJnZ0ZKVjBDMHNGd2JGSTlXblBOQ243N2dqNHZ6Sm1EMHJp
SCtTblMvdFhUaERGdHNjQnU3QnR2TnAwQzRCagorOFJXTXZYeGp4dUVOdVFuQlBGYmtSV3RaNndr
OHVLL1p4OUFBeXl0OU0wN1FqejF3UGZBSWRtL0lIN3pIQkZNQQorZ3Nxam5rTGgxcjBGdmpORWJM
aXVHcVlVL0dWeGFaWWQreHkrSlU1Mkl4akhVVUw5eUQwQlBXYitTemFyNkFNMgorZ1VwbVRYNitC
Y0Nad3daLy9EekNvV1laOUpiUDhha242ZWRCZVp5dU1QcVlnTHpaa1B5UStoUlc0NlZQUHc4OQor
eWc0TFI5bnpnUWlCSGxhYzBsYUI0TnJXYStkOVFSUkxpdGwxTzNnVkFRS0JnUUREa3B0eFh1N3c5
THBjK0hlRQorTi9wSmZwQ3pVdUY3WkM0dmF0ZG9EenZmQjVLeTZXODhQb3ErSTdiQjltN1N0WGRG
QWJEeVVCeHZpc2pUQk1WQQorT3RZcXBBay9yaFg4TWpTQXRqb0ZlMm5IK2VFaVFyaXVabXRBNUNk
S0VYUzRoTmJjL0hoRVBXaGs3Wmg4T1Y1dgoreTdsNHI2bDRVSHFhTjlReUUwdmxGZG1jbVFLQmdR
RENaWlIvdHJKMi9nMk9xdWFTK1pkMmgvM05YdzBOQnE0egorNE9CRVdxTmEvUjM1amRLNldsV0pI
Nyt0S09hY3IreHRzd0xwUGVaSEd3TWRrNjQvZXJiWVdCdUpXQWpwSDcySgorRE05KzFINWZGSEFO
V3BXVE5uOTRlblF4d2Z6WlJ2ZGt4cTRJV3pHaGVzcHRZbkhJem9BbWFxQzNsYm4vZTN1MAorRmxu
ZzMyaEZvUUtCZ1FDRjNENEszaGliMGxZUXRueFBnbVVNa3RXRitBK2ZmbFZpWFRXczR1aHU0bWNW
a0ZOegorbjdjbEo1cTZyZXJ5ekFRanRtR2ZxUmVkZlJleDM0MEhSbjQ2VjJhQk1LMlpuZDl6emNa
dTVDYm1HbkZ2R3MzLworaU5pV1pOTkRqaWtlOXNWK0lreExJT0RvVy92SDR4aHhXcmJMRlNqZzBl
em95NWV3NHFaSzJhYkYyUUtCZ1FDNQorTTVlZmVRcGJqVHlUVUVSdGYvYUtDWk9HWm1rRG9QcTBH
Q2p4Vmp6TlFkcWQxejBOSjJUWVIvUVAzNmlkWElsdQorRlo3UFlaYVM1YXc1TUdwUXRmT2U5NG44
ZG0rKzBldDd0MFd6dW5STzF5VE54Q0ErYVN4V05xdWVnQWNKWmEvcQorUmRLbHlXUG1TUnF6elpk
RHpXQ1B1UVEzQXlGNXdrWWZVeS83cWp3b0lRS0JnQjJ2OTZCVjcrbElDdmlJS3p6YgorMW8zQTNW
ekFYNU1HZDk4dUxHamxLNHFzQkMrczdtazJlUXp0aU5aZ2JBMFc2ZmhRNUR6M0hjWEo1cHB5OE9r
YworamVBa3RyTlJ6ejE1aHZpL1hrV2RPK1ZNcWlIVzRsK3NXWXVramhDeW9kMW9PMUtHSHEwTFlZ
dnYwNzZzeXhHdwordlJLTHE3SUo0V0lwMVZ0ZmFCbHJJb2dxCistLS0tLUVORCBQUklWQVRFIEtF
WS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURUVENDQWpXZ0F3SUJBZ0lK
QUo2VkcyY1Fsc2VwTUEwR0NTcUdTSWIzRFFFQkN3VUFNRXd4Q3pBSkJnTlYKK0JBWVRBa1pTTVE0
d0RBWURWUVFIREFWUVlYSnBjekVaTUJjR0ExVUVDZ3dRUVhsdFpYSnBZeUJCZFdkMWMzUnAKK2Jq
RVNNQkFHQTFVRUF3d0piRzlqWVd4b2IzTjBNQ0FYRFRFNE1EVXdOVEUyTlRjMU5sb1lEekl3TmpB
d05UQTAKK01UWTFOelUyV2pCTU1Rc3dDUVlEVlFRR0V3SkdVakVPTUF3R0ExVUVCd3dGVUdGeWFY
TXhHVEFYQmdOVkJBb00KK0VFRjViV1Z5YVdNZ1FYVm5kWE4wYVc0eEVqQVFCZ05WQkFNTUNXeHZZ
MkZzYUc5emREQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSlND
dEJXUTFzQlpHV2pObFNQWGhSL1B0Z1NuWXhlYSthRjIKK1Y4NFl2Q1BMN0U4NzN4b2xHL24rZGdY
WjVZemVXVnlZdDd3VnNGSXI1QVZPaml5N3RsV2R6cW9oTTRlcHhJTlQKK0RUcFpxdEJReXozaHVF
ZFM5Q25XN3o1dmFFMkl4NGJEcjVDSUVqbzRsRTZJYWt0RnVRM3BTUGNBckNMeEpoV2cKK3ZJeUxP
MjdCczNJWi94OFhjTU9rZG0wR0swYTB4SUVJeXhDeDhIanJtbVhaU2pJR3RacmFXeHN1M2RXOEZs
bTgKK2VwOFM0K09tT01vM2xSSWhlZHAvUTJMTnBIcW16Y1RKOSsxYkxpTHZNaEEzbTVNVEc5bzhQ
SStmMmNmZXI5MlIKK1AzMlpJeEpUVUM5Tk9sZnc4M3NPV29UckJreHRDd0U5RVpic1lTVkQ0N0Vn
cDBvNHVUa0NBd0VBQWFNd01DNHcKK0xBWURWUjBSQkNVd0k0SUpiRzlqWVd4b2IzTjBod1IvQUFB
Qmh4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1BMEcKK0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBMGlt
S3AvcmZsZmJEQ0N4NzhOZHNSNXJ0MGpLZW0ydDNZUEdUNnRiZVUKKytGUXo2MlNFZGVEMk9IV3hw
dmZQZis2aDNpVFhKYmtha3IyUjRsUDN6N0dIVWU2MWx0M1NvOVZIQXZnYnRQVEgKK2FCMWdPZFRo
QTgzbzBmelF0bkl2NjdqQ3ZFOWd3UFFJblZpWkxFY20yaVFFWkxqNkF1U3ZCS21sdVRSN3ZOUmoK
KzgvZjJSNExzRGZDV0dyemsyVytkZUdSdlNvdzdpclM4OE5ROEJXOFM4b3RnTWlCeDREMlVsT21R
d3FyNlgrL3IKK2pZSUR1TWI2R0RLUlh0QlVHRG9rZkU5NGhqajl1Mm1yTlJ3dDh5NHRxdThaTmEv
L3lMRVEwT3cya1AzUUpQTFkKKzk0MVZacHdSaTJ2LytKdkk3T0JZbHZiT1RGd004bkFrNzlrK0Rn
dml5Z2Q5CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvdGVzdHMvdGVzdF9wcm90b2NvbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0
X3Byb3RvY29sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDMy
YzFmNzJlN2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3Rf
cHJvdG9jb2wucHkKQEAgLTAsMCArMSwxNDc1IEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGNv
bnRleHRsaWIKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1v
Y2sKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIHdlYnNvY2tldHMuZXhjZXB0aW9ucyBpbXBvcnQg
Q29ubmVjdGlvbkNsb3NlZCwgSW52YWxpZFN0YXRlCitmcm9tIHdlYnNvY2tldHMuZnJhbWluZyBp
bXBvcnQgKgorZnJvbSB3ZWJzb2NrZXRzLnByb3RvY29sIGltcG9ydCBTdGF0ZSwgV2ViU29ja2V0
Q29tbW9uUHJvdG9jb2wKKworZnJvbSAudXRpbHMgaW1wb3J0IE1TLCBBc3luY2lvVGVzdENhc2UK
KworCithc3luYyBkZWYgYXN5bmNfaXRlcmFibGUoaXRlcmFibGUpOgorICAgIGZvciBpdGVtIGlu
IGl0ZXJhYmxlOgorICAgICAgICB5aWVsZCBpdGVtCisKKworY2xhc3MgVHJhbnNwb3J0TW9jayh1
bml0dGVzdC5tb2NrLk1vY2spOgorICAgICIiIgorICAgIFRyYW5zcG9ydCBtb2NrIHRvIGNvbnRy
b2wgdGhlIHByb3RvY29sJ3MgaW5wdXRzIGFuZCBvdXRwdXRzIGluIHRlc3RzLgorCisgICAgSXQg
Y2FsbHMgdGhlIHByb3RvY29sJ3MgY29ubmVjdGlvbl9tYWRlIGFuZCBjb25uZWN0aW9uX2xvc3Qg
bWV0aG9kcyBsaWtlCisgICAgYWN0dWFsIHRyYW5zcG9ydHMuCisKKyAgICBJdCBhbHNvIGNhbGxz
IHRoZSBwcm90b2NvbCdzIGNvbm5lY3Rpb25fb3BlbiBtZXRob2QgdG8gYnlwYXNzIHRoZQorICAg
IFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICBUbyBzaW11bGF0ZSBpbmNvbWluZyBkYXRhLCB0
ZXN0cyBjYWxsIHRoZSBwcm90b2NvbCdzIGRhdGFfcmVjZWl2ZWQgYW5kCisgICAgZW9mX3JlY2Vp
dmVkIG1ldGhvZHMgZGlyZWN0bHkuCisKKyAgICBUaGV5IGNvdWxkIGFsc28gcGF1c2Vfd3JpdGlu
ZyBhbmQgcmVzdW1lX3dyaXRpbmcgdG8gdGVzdCBmbG93IGNvbnRyb2wuCisKKyAgICAiIiIKKwor
ICAgICMgVGhpcyBzaG91bGQgaGFwcGVuIGluIF9faW5pdF9fIGJ1dCBvdmVycmlkaW5nIE1vY2su
X19pbml0X18gaXMgaGFyZC4KKyAgICBkZWYgc2V0dXBfbW9jayhzZWxmLCBsb29wLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9vcCA9IGxvb3AKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nsb3Npbmcg
PSBGYWxzZQorICAgICAgICAjIFNpbXVsYXRlIGEgc3VjY2Vzc2Z1bCBUQ1AgaGFuZHNoYWtlLgor
ICAgICAgICBzZWxmLnByb3RvY29sLmNvbm5lY3Rpb25fbWFkZShzZWxmKQorICAgICAgICAjIFNp
bXVsYXRlIGEgc3VjY2Vzc2Z1bCBXZWJTb2NrZXQgaGFuZHNoYWtlLgorICAgICAgICBzZWxmLnBy
b3RvY29sLmNvbm5lY3Rpb25fb3BlbigpCisKKyAgICBkZWYgY2FuX3dyaXRlX2VvZihzZWxmKToK
KyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZV9lb2Yoc2VsZik6CisgICAgICAg
ICMgV2hlbiB0aGUgcHJvdG9jb2wgaGFsZi1jbG9zZXMgdGhlIFRDUCBjb25uZWN0aW9uLCBpdCBl
eHBlY3RzIHRoZQorICAgICAgICAjIG90aGVyIGVuZCB0byBjbG9zZSBpdC4gU2ltdWxhdGUgdGhh
dC4KKyAgICAgICAgaWYgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxs
X3Nvb24oc2VsZi5jbG9zZSkKKyAgICAgICAgc2VsZi5fZW9mID0gVHJ1ZQorCisgICAgZGVmIGNs
b3NlKHNlbGYpOgorICAgICAgICAjIFNpbXVsYXRlIGhvdyBhY3R1YWwgdHJhbnNwb3J0cyBkcm9w
IHRoZSBjb25uZWN0aW9uLgorICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2luZzoKKyAgICAgICAg
ICAgIHNlbGYubG9vcC5jYWxsX3Nvb24oc2VsZi5wcm90b2NvbC5jb25uZWN0aW9uX2xvc3QsIE5v
bmUpCisgICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBUcnVlCisKKyAgICBkZWYgYWJvcnQoc2VsZik6
CisgICAgICAgICMgQ2hhbmdlIHRoaXMgdG8gYW4gYGlmYCBpZiB0ZXN0cyBjYWxsIGFib3J0KCkg
bXVsdGlwbGUgdGltZXMuCisgICAgICAgIGFzc2VydCBzZWxmLnByb3RvY29sLnN0YXRlIGlzIG5v
dCBTdGF0ZS5DTE9TRUQKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfc29vbihzZWxmLnByb3RvY29s
LmNvbm5lY3Rpb25fbG9zdCwgTm9uZSkKKworCitjbGFzcyBDb21tb25UZXN0czoKKyAgICAiIiIK
KyAgICBNaXhpbiB0aGF0IGRlZmluZXMgbW9zdCB0ZXN0cyBidXQgZG9lc24ndCBpbmhlcml0IHVu
aXR0ZXN0LlRlc3RDYXNlLgorCisgICAgVGVzdHMgYXJlIHJ1biBieSB0aGUgU2VydmVyVGVzdHMg
YW5kIENsaWVudFRlc3RzIHN1YmNsYXNzZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgICMgRGlzYWJsZSBwaW5ncyB0
byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IHdoYXQgZnJhbWVzIGFyZSBzZW50IGV4YWN0bHkuCisg
ICAgICAgIHNlbGYucHJvdG9jb2wgPSBXZWJTb2NrZXRDb21tb25Qcm90b2NvbChwaW5nX2ludGVy
dmFsPU5vbmUpCisgICAgICAgIHNlbGYudHJhbnNwb3J0ID0gVHJhbnNwb3J0TW9jaygpCisgICAg
ICAgIHNlbGYudHJhbnNwb3J0LnNldHVwX21vY2soc2VsZi5sb29wLCBzZWxmLnByb3RvY29sKQor
CisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnRyYW5zcG9ydC5jbG9zZSgp
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9z
ZSgpKQorICAgICAgICBzdXBlcigpLnRlYXJEb3duKCkKKworICAgICMgVXRpbGl0aWVzIGZvciB3
cml0aW5nIHRlc3RzLgorCisgICAgZGVmIG1ha2VfZHJhaW5fc2xvdyhzZWxmLCBkZWxheT1NUyk6
CisgICAgICAgICMgUHJvY2VzcyBjb25uZWN0aW9uX21hZGUgaW4gb3JkZXIgdG8gaW5pdGlhbGl6
ZSBzZWxmLnByb3RvY29sLnRyYW5zcG9ydC4KKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkK
KworICAgICAgICBvcmlnaW5hbF9kcmFpbiA9IHNlbGYucHJvdG9jb2wuX2RyYWluCisKKyAgICAg
ICAgYXN5bmMgZGVmIGRlbGF5ZWRfZHJhaW4oKToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8u
c2xlZXAoCisgICAgICAgICAgICAgICAgZGVsYXksIGxvb3A9c2VsZi5sb29wIGlmIHN5cy52ZXJz
aW9uX2luZm9bOjJdIDwgKDMsIDgpIGVsc2UgTm9uZQorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgYXdhaXQgb3JpZ2luYWxfZHJhaW4oKQorCisgICAgICAgIHNlbGYucHJvdG9jb2wuX2RyYWlu
ID0gZGVsYXllZF9kcmFpbgorCisgICAgY2xvc2VfZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9DTE9T
RSwgc2VyaWFsaXplX2Nsb3NlKDEwMDAsICJjbG9zZSIpKQorICAgIGxvY2FsX2Nsb3NlID0gRnJh
bWUoVHJ1ZSwgT1BfQ0xPU0UsIHNlcmlhbGl6ZV9jbG9zZSgxMDAwLCAibG9jYWwiKSkKKyAgICBy
ZW1vdGVfY2xvc2UgPSBGcmFtZShUcnVlLCBPUF9DTE9TRSwgc2VyaWFsaXplX2Nsb3NlKDEwMDAs
ICJyZW1vdGUiKSkKKworICAgIGRlZiByZWNlaXZlX2ZyYW1lKHNlbGYsIGZyYW1lKToKKyAgICAg
ICAgIiIiCisgICAgICAgIE1ha2UgdGhlIHByb3RvY29sIHJlY2VpdmUgYSBmcmFtZS4KKworICAg
ICAgICAiIiIKKyAgICAgICAgd3JpdGUgPSBzZWxmLnByb3RvY29sLmRhdGFfcmVjZWl2ZWQKKyAg
ICAgICAgbWFzayA9IG5vdCBzZWxmLnByb3RvY29sLmlzX2NsaWVudAorICAgICAgICBmcmFtZS53
cml0ZSh3cml0ZSwgbWFzaz1tYXNrKQorCisgICAgZGVmIHJlY2VpdmVfZW9mKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgTWFrZSB0aGUgcHJvdG9jb2wgcmVjZWl2ZSB0aGUgZW5kIG9mIHRo
ZSBkYXRhIHN0cmVhbS4KKworICAgICAgICBTaW5jZSBgYFdlYlNvY2tldENvbW1vblByb3RvY29s
LmVvZl9yZWNlaXZlZGBgIHJldHVybnMgYGBOb25lYGAsIGFuCisgICAgICAgIGFjdHVhbCB0cmFu
c3BvcnQgd291bGQgY2xvc2UgaXRzZWxmIGFmdGVyIGNhbGxpbmcgaXQuIFRoaXMgZnVuY3Rpb24K
KyAgICAgICAgZW11bGF0ZXMgdGhhdCBiZWhhdmlvci4KKworICAgICAgICAiIiIKKyAgICAgICAg
c2VsZi5wcm90b2NvbC5lb2ZfcmVjZWl2ZWQoKQorICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29u
KHNlbGYudHJhbnNwb3J0LmNsb3NlKQorCisgICAgZGVmIHJlY2VpdmVfZW9mX2lmX2NsaWVudChz
ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExpa2UgcmVjZWl2ZV9lb2YsIGJ1dCBvbmx5IGlm
IHRoaXMgaXMgdGhlIGNsaWVudCBzaWRlLgorCisgICAgICAgIFNpbmNlIHRoZSBzZXJ2ZXIgaXMg
c3VwcG9zZWQgdG8gaW5pdGlhdGUgdGhlIHRlcm1pbmF0aW9uIG9mIHRoZSBUQ1AKKyAgICAgICAg
Y29ubmVjdGlvbiwgdGhpcyBtZXRob2QgaGVscHMgbWFraW5nIHRlc3RzIHdvcmsgZm9yIGJvdGgg
c2lkZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfY2xpZW50
OgorICAgICAgICAgICAgc2VsZi5yZWNlaXZlX2VvZigpCisKKyAgICBkZWYgY2xvc2VfY29ubmVj
dGlvbihzZWxmLCBjb2RlPTEwMDAsIHJlYXNvbj0iY2xvc2UiKToKKyAgICAgICAgIiIiCisgICAg
ICAgIEV4ZWN1dGUgYSBjbG9zaW5nIGhhbmRzaGFrZS4KKworICAgICAgICBUaGlzIHB1dHMgdGhl
IGNvbm5lY3Rpb24gaW4gdGhlIENMT1NFRCBzdGF0ZS4KKworICAgICAgICAiIiIKKyAgICAgICAg
Y2xvc2VfZnJhbWVfZGF0YSA9IHNlcmlhbGl6ZV9jbG9zZShjb2RlLCByZWFzb24pCisgICAgICAg
ICMgUHJlcGFyZSB0aGUgcmVzcG9uc2UgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGZyb20gdGhl
IHJlbW90ZSBzaWRlLgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1Bf
Q0xPU0UsIGNsb3NlX2ZyYW1lX2RhdGEpKQorICAgICAgICBzZWxmLnJlY2VpdmVfZW9mX2lmX2Ns
aWVudCgpCisgICAgICAgICMgVHJpZ2dlciB0aGUgY2xvc2luZyBoYW5kc2hha2UgZnJvbSB0aGUg
bG9jYWwgc2lkZSBhbmQgY29tcGxldGUgaXQuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShjb2RlLCByZWFzb24pKQorICAgICAgICAjIEVt
cHR5IHRoZSBvdXRnb2luZyBkYXRhIHN0cmVhbSBzbyB3ZSBjYW4gbWFrZSBhc3NlcnRpb25zIGxh
dGVyIG9uLgorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9DTE9TRSwg
Y2xvc2VfZnJhbWVfZGF0YSkKKworICAgICAgICBhc3NlcnQgc2VsZi5wcm90b2NvbC5zdGF0ZSBp
cyBTdGF0ZS5DTE9TRUQKKworICAgIGRlZiBoYWxmX2Nsb3NlX2Nvbm5lY3Rpb25fbG9jYWwoc2Vs
ZiwgY29kZT0xMDAwLCByZWFzb249ImNsb3NlIik6CisgICAgICAgICIiIgorICAgICAgICBTdGFy
dCBhIGNsb3NpbmcgaGFuZHNoYWtlIGJ1dCBkbyBub3QgY29tcGxldGUgaXQuCisKKyAgICAgICAg
VGhlIG1haW4gZGlmZmVyZW5jZSB3aXRoIGBjbG9zZV9jb25uZWN0aW9uYCBpcyB0aGF0IHRoZSBj
b25uZWN0aW9uIGlzCisgICAgICAgIGxlZnQgaW4gdGhlIENMT1NJTkcgc3RhdGUgdW50aWwgdGhl
IGV2ZW50IGxvb3AgcnVucyBhZ2Fpbi4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRh
dGlvbiByZXR1cm5zIGEgdGFzayB0aGF0IG11c3QgYmUgYXdhaXRlZCBvcgorICAgICAgICBjYW5j
ZWxlZCwgZWxzZSBhc3luY2lvIGNvbXBsYWlucyBhYm91dCBkZXN0cm95aW5nIGEgcGVuZGluZyB0
YXNrLgorCisgICAgICAgICIiIgorICAgICAgICBjbG9zZV9mcmFtZV9kYXRhID0gc2VyaWFsaXpl
X2Nsb3NlKGNvZGUsIHJlYXNvbikKKyAgICAgICAgIyBUcmlnZ2VyIHRoZSBjbG9zaW5nIGhhbmRz
aGFrZSBmcm9tIHRoZSBsb2NhbCBlbmRwb2ludC4KKyAgICAgICAgY2xvc2VfdGFzayA9IHNlbGYu
bG9vcC5jcmVhdGVfdGFzayhzZWxmLnByb3RvY29sLmNsb3NlKGNvZGUsIHJlYXNvbikpCisgICAg
ICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpICAjIHdhaXRfZm9yIGV4ZWN1dGVzCisgICAgICAgIHNl
bGYucnVuX2xvb3Bfb25jZSgpICAjIHdyaXRlX2ZyYW1lIGV4ZWN1dGVzCisgICAgICAgICMgRW1w
dHkgdGhlIG91dGdvaW5nIGRhdGEgc3RyZWFtIHNvIHdlIGNhbiBtYWtlIGFzc2VydGlvbnMgbGF0
ZXIgb24uCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX0NMT1NFLCBj
bG9zZV9mcmFtZV9kYXRhKQorCisgICAgICAgIGFzc2VydCBzZWxmLnByb3RvY29sLnN0YXRlIGlz
IFN0YXRlLkNMT1NJTkcKKworICAgICAgICAjIENvbXBsZXRlIHRoZSBjbG9zaW5nIHNlcXVlbmNl
IGF0IDFtcyBpbnRlcnZhbHMgc28gdGhlIHRlc3QgY2FuIHJ1bgorICAgICAgICAjIGF0IGVhY2gg
cG9pbnQgZXZlbiBpdCBnb2VzIGJhY2sgdG8gdGhlIGV2ZW50IGxvb3Agc2V2ZXJhbCB0aW1lcy4K
KyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoCisgICAgICAgICAgICBNUywgc2VsZi5yZWNl
aXZlX2ZyYW1lLCBGcmFtZShUcnVlLCBPUF9DTE9TRSwgY2xvc2VfZnJhbWVfZGF0YSkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmxvb3AuY2FsbF9sYXRlcigyICogTVMsIHNlbGYucmVjZWl2ZV9l
b2ZfaWZfY2xpZW50KQorCisgICAgICAgICMgVGhpcyB0YXNrIG11c3QgYmUgYXdhaXRlZCBvciBj
YW5jZWxlZCBieSB0aGUgY2FsbGVyLgorICAgICAgICByZXR1cm4gY2xvc2VfdGFzaworCisgICAg
ZGVmIGhhbGZfY2xvc2VfY29ubmVjdGlvbl9yZW1vdGUoc2VsZiwgY29kZT0xMDAwLCByZWFzb249
ImNsb3NlIik6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGEgY2xvc2luZyBoYW5kc2hh
a2UgYnV0IGRvIG5vdCBjb21wbGV0ZSBpdC4KKworICAgICAgICBUaGUgbWFpbiBkaWZmZXJlbmNl
IHdpdGggYGNsb3NlX2Nvbm5lY3Rpb25gIGlzIHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAg
ICAgbGVmdCBpbiB0aGUgQ0xPU0lORyBzdGF0ZSB1bnRpbCB0aGUgZXZlbnQgbG9vcCBydW5zIGFn
YWluLgorCisgICAgICAgICIiIgorICAgICAgICAjIE9uIHRoZSBzZXJ2ZXIgc2lkZSwgd2Vic29j
a2V0cyBjb21wbGV0ZXMgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGFuZAorICAgICAgICAjIGNsb3Nl
cyB0aGUgVENQIGNvbm5lY3Rpb24gaW1tZWRpYXRlbHkuIFlpZWxkIHRvIHRoZSBldmVudCBsb29w
IGFmdGVyCisgICAgICAgICMgc2VuZGluZyB0aGUgY2xvc2UgZnJhbWUgdG8gcnVuIHRoZSB0ZXN0
IHdoaWxlIHRoZSBjb25uZWN0aW9uIGlzIGluCisgICAgICAgICMgdGhlIENMT1NJTkcgc3RhdGUu
CisgICAgICAgIGlmIG5vdCBzZWxmLnByb3RvY29sLmlzX2NsaWVudDoKKyAgICAgICAgICAgIHNl
bGYubWFrZV9kcmFpbl9zbG93KCkKKworICAgICAgICBjbG9zZV9mcmFtZV9kYXRhID0gc2VyaWFs
aXplX2Nsb3NlKGNvZGUsIHJlYXNvbikKKyAgICAgICAgIyBUcmlnZ2VyIHRoZSBjbG9zaW5nIGhh
bmRzaGFrZSBmcm9tIHRoZSByZW1vdGUgZW5kcG9pbnQuCisgICAgICAgIHNlbGYucmVjZWl2ZV9m
cmFtZShGcmFtZShUcnVlLCBPUF9DTE9TRSwgY2xvc2VfZnJhbWVfZGF0YSkpCisgICAgICAgIHNl
bGYucnVuX2xvb3Bfb25jZSgpICAjIHJlYWRfZnJhbWUgZXhlY3V0ZXMKKyAgICAgICAgIyBFbXB0
eSB0aGUgb3V0Z29pbmcgZGF0YSBzdHJlYW0gc28gd2UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBsYXRl
ciBvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1BfQ0xPU0UsIGNs
b3NlX2ZyYW1lX2RhdGEpCisKKyAgICAgICAgYXNzZXJ0IHNlbGYucHJvdG9jb2wuc3RhdGUgaXMg
U3RhdGUuQ0xPU0lORworCisgICAgICAgICMgQ29tcGxldGUgdGhlIGNsb3Npbmcgc2VxdWVuY2Ug
YXQgMW1zIGludGVydmFscyBzbyB0aGUgdGVzdCBjYW4gcnVuCisgICAgICAgICMgYXQgZWFjaCBw
b2ludCBldmVuIGl0IGdvZXMgYmFjayB0byB0aGUgZXZlbnQgbG9vcCBzZXZlcmFsIHRpbWVzLgor
ICAgICAgICBzZWxmLmxvb3AuY2FsbF9sYXRlcigyICogTVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZf
Y2xpZW50KQorCisgICAgZGVmIHByb2Nlc3NfaW52YWxpZF9mcmFtZXMoc2VsZik6CisgICAgICAg
ICIiIgorICAgICAgICBNYWtlIHRoZSBwcm90b2NvbCBmYWlsIHF1aWNrbHkgYWZ0ZXIgc2ltdWxh
dGluZyBpbnZhbGlkIGRhdGEuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzLCB0aGlzIGZ1bmN0
aW9uIHRyaWdnZXJzIHRoZSBwcm90b2NvbCdzIGVvZl9yZWNlaXZlZCwKKyAgICAgICAgd2hpY2gg
aW50ZXJydXB0cyBwZW5kaW5nIHJlYWRzIHdhaXRpbmcgZm9yIG1vcmUgZGF0YS4KKworICAgICAg
ICAiIiIKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5yZWNlaXZl
X2VvZigpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2Nv
bC5jbG9zZV9jb25uZWN0aW9uX3Rhc2spCisKKyAgICBkZWYgc2VudF9mcmFtZXMoc2VsZik6Cisg
ICAgICAgICIiIgorICAgICAgICBSZWFkIGFsbCBmcmFtZXMgc2VudCB0byB0aGUgdHJhbnNwb3J0
LgorCisgICAgICAgICIiIgorICAgICAgICBzdHJlYW0gPSBhc3luY2lvLlN0cmVhbVJlYWRlcihs
b29wPXNlbGYubG9vcCkKKworICAgICAgICBmb3IgKGRhdGEsKSwga3cgaW4gc2VsZi50cmFuc3Bv
cnQud3JpdGUuY2FsbF9hcmdzX2xpc3Q6CisgICAgICAgICAgICBzdHJlYW0uZmVlZF9kYXRhKGRh
dGEpCisgICAgICAgIHNlbGYudHJhbnNwb3J0LndyaXRlLmNhbGxfYXJnc19saXN0ID0gW10KKyAg
ICAgICAgc3RyZWFtLmZlZWRfZW9mKCkKKworICAgICAgICBmcmFtZXMgPSBbXQorICAgICAgICB3
aGlsZSBub3Qgc3RyZWFtLmF0X2VvZigpOgorICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAg
ICAgICAgICBGcmFtZS5yZWFkKHN0cmVhbS5yZWFkZXhhY3RseSwgbWFzaz1zZWxmLnByb3RvY29s
LmlzX2NsaWVudCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIHJl
dHVybiBmcmFtZXMKKworICAgIGRlZiBsYXN0X3NlbnRfZnJhbWUoc2VsZik6CisgICAgICAgICIi
IgorICAgICAgICBSZWFkIHRoZSBsYXN0IGZyYW1lIHNlbnQgdG8gdGhlIHRyYW5zcG9ydC4KKwor
ICAgICAgICBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgYXQgbW9zdCBvbmUgZnJhbWUgd2FzIHNl
bnQuIEl0IHJhaXNlcyBhbgorICAgICAgICBBc3NlcnRpb25FcnJvciBvdGhlcndpc2UuCisKKyAg
ICAgICAgIiIiCisgICAgICAgIGZyYW1lcyA9IHNlbGYuc2VudF9mcmFtZXMoKQorICAgICAgICBp
ZiBmcmFtZXM6CisgICAgICAgICAgICBhc3NlcnQgbGVuKGZyYW1lcykgPT0gMQorICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lc1swXQorCisgICAgZGVmIGFzc2VydEZyYW1lc1NlbnQoc2VsZiwgKmZy
YW1lcyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW50X2ZyYW1lcygpLCBbRnJh
bWUoKmFyZ3MpIGZvciBhcmdzIGluIGZyYW1lc10pCisKKyAgICBkZWYgYXNzZXJ0T25lRnJhbWVT
ZW50KHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxhc3Rfc2Vu
dF9mcmFtZSgpLCBGcmFtZSgqYXJncykpCisKKyAgICBkZWYgYXNzZXJ0Tm9GcmFtZVNlbnQoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubGFzdF9zZW50X2ZyYW1lKCkpCisK
KyAgICBkZWYgYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZChzZWxmLCBjb2RlLCBtZXNzYWdlKToKKyAg
ICAgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgZ3VhcmFudGVlcyB0aGF0IGNvbm5lY3Rpb25fbG9z
dCB3YXMgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wuc3Rh
dGUsIFN0YXRlLkNMT1NFRCkKKyAgICAgICAgIyBBIGNsb3NlIGZyYW1lIHdhcyByZWNlaXZlZC4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29sLmNsb3NlX2NvZGUsIGNvZGUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm90b2NvbC5jbG9zZV9yZWFzb24sIG1l
c3NhZ2UpCisKKyAgICBkZWYgYXNzZXJ0Q29ubmVjdGlvbkZhaWxlZChzZWxmLCBjb2RlLCBtZXNz
YWdlKToKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgZ3VhcmFudGVlcyB0aGF0IGNvbm5l
Y3Rpb25fbG9zdCB3YXMgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJv
dG9jb2wuc3RhdGUsIFN0YXRlLkNMT1NFRCkKKyAgICAgICAgIyBObyBjbG9zZSBmcmFtZSB3YXMg
cmVjZWl2ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm90b2NvbC5jbG9zZV9j
b2RlLCAxMDA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wuY2xvc2Vf
cmVhc29uLCAiIikKKyAgICAgICAgIyBBIGNsb3NlIGZyYW1lIHdhcyBzZW50IC0tIHVubGVzcyB0
aGUgY29ubmVjdGlvbiB3YXMgYWxyZWFkeSBsb3N0LgorICAgICAgICBpZiBjb2RlID09IDEwMDY6
CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX0NMT1NFLCBzZXJpYWxp
emVfY2xvc2UoY29kZSwgbWVzc2FnZSkpCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdl
cgorICAgIGRlZiBhc3NlcnRDb21wbGV0ZXNXaXRoaW4oc2VsZiwgbWluX3RpbWUsIG1heF90aW1l
KToKKyAgICAgICAgdDAgPSBzZWxmLmxvb3AudGltZSgpCisgICAgICAgIHlpZWxkCisgICAgICAg
IHQxID0gc2VsZi5sb29wLnRpbWUoKQorICAgICAgICBkdCA9IHQxIC0gdDAKKyAgICAgICAgc2Vs
Zi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIG1pbl90aW1lLCBmIlRvbyBmYXN0OiB7ZHR9IDwge21p
bl90aW1lfSIpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkdCwgbWF4X3RpbWUsIGYiVG9vIHNs
b3c6IHtkdH0gPj0ge21heF90aW1lfSIpCisKKyAgICAjIFRlc3QgY29uc3RydWN0b3IuCisKKyAg
ICBkZWYgdGVzdF90aW1lb3V0X2JhY2t3YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAg
ICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByZWNvcmRlZF93
YXJuaW5nczoKKyAgICAgICAgICAgIHByb3RvY29sID0gV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wo
dGltZW91dD01KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG9jb2wuY2xvc2VfdGlt
ZW91dCwgNSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNvcmRlZF93YXJuaW5n
cyksIDEpCisgICAgICAgIHdhcm5pbmcgPSByZWNvcmRlZF93YXJuaW5nc1swXS5tZXNzYWdlCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdhcm5pbmcpLCAicmVuYW1lIHRpbWVvdXQgdG8g
Y2xvc2VfdGltZW91dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh3YXJuaW5nKSwg
RGVwcmVjYXRpb25XYXJuaW5nKQorCisgICAgIyBUZXN0IHB1YmxpYyBhdHRyaWJ1dGVzLgorCisg
ICAgZGVmIHRlc3RfbG9jYWxfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgZ2V0X2V4dHJhX2luZm8g
PSB1bml0dGVzdC5tb2NrLk1vY2socmV0dXJuX3ZhbHVlPSgiaG9zdCIsIDQzMTIpKQorICAgICAg
ICBzZWxmLnRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbyA9IGdldF9leHRyYV9pbmZvCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29sLmxvY2FsX2FkZHJlc3MsICgiaG9zdCIs
IDQzMTIpKQorICAgICAgICBnZXRfZXh0cmFfaW5mby5hc3NlcnRfY2FsbGVkX3dpdGgoInNvY2tu
YW1lIikKKworICAgIGRlZiB0ZXN0X2xvY2FsX2FkZHJlc3NfYmVmb3JlX2Nvbm5lY3Rpb24oc2Vs
Zik6CisgICAgICAgICMgRW11bGF0ZSB0aGUgc2l0dWF0aW9uIGJlZm9yZSBjb25uZWN0aW9uX29w
ZW4oKSBydW5zLgorICAgICAgICBfdHJhbnNwb3J0ID0gc2VsZi5wcm90b2NvbC50cmFuc3BvcnQK
KyAgICAgICAgZGVsIHNlbGYucHJvdG9jb2wudHJhbnNwb3J0CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm90b2NvbC5sb2NhbF9hZGRyZXNzLCBOb25l
KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC50cmFuc3BvcnQg
PSBfdHJhbnNwb3J0CisKKyAgICBkZWYgdGVzdF9yZW1vdGVfYWRkcmVzcyhzZWxmKToKKyAgICAg
ICAgZ2V0X2V4dHJhX2luZm8gPSB1bml0dGVzdC5tb2NrLk1vY2socmV0dXJuX3ZhbHVlPSgiaG9z
dCIsIDQzMTIpKQorICAgICAgICBzZWxmLnRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbyA9IGdldF9l
eHRyYV9pbmZvCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29sLnJlbW90
ZV9hZGRyZXNzLCAoImhvc3QiLCA0MzEyKSkKKyAgICAgICAgZ2V0X2V4dHJhX2luZm8uYXNzZXJ0
X2NhbGxlZF93aXRoKCJwZWVybmFtZSIpCisKKyAgICBkZWYgdGVzdF9yZW1vdGVfYWRkcmVzc19i
ZWZvcmVfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgIyBFbXVsYXRlIHRoZSBzaXR1YXRpb24g
YmVmb3JlIGNvbm5lY3Rpb25fb3BlbigpIHJ1bnMuCisgICAgICAgIF90cmFuc3BvcnQgPSBzZWxm
LnByb3RvY29sLnRyYW5zcG9ydAorICAgICAgICBkZWwgc2VsZi5wcm90b2NvbC50cmFuc3BvcnQK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29s
LnJlbW90ZV9hZGRyZXNzLCBOb25lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2Vs
Zi5wcm90b2NvbC50cmFuc3BvcnQgPSBfdHJhbnNwb3J0CisKKyAgICBkZWYgdGVzdF9vcGVuKHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wcm90b2NvbC5vcGVuKQorICAgICAg
ICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYu
cHJvdG9jb2wub3BlbikKKworICAgIGRlZiB0ZXN0X2Nsb3NlZChzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShzZWxmLnByb3RvY29sLmNsb3NlZCkKKyAgICAgICAgc2VsZi5jbG9zZV9j
b25uZWN0aW9uKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucHJvdG9jb2wuY2xvc2Vk
KQorCisgICAgZGVmIHRlc3Rfd2FpdF9jbG9zZWQoc2VsZik6CisgICAgICAgIHdhaXRfY2xvc2Vk
ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYucHJvdG9jb2wud2FpdF9jbG9zZWQoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3YWl0X2Nsb3NlZC5kb25lKCkpCisgICAgICAgIHNlbGYu
Y2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YWl0X2Nsb3NlZC5k
b25lKCkpCisKKyAgICAjIFRlc3QgdGhlIHJlY3YgY29yb3V0aW5lLgorCisgICAgZGVmIHRlc3Rf
cmVjdl90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwg
T1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpKQorICAgICAgICBkYXRhID0gc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhLCAiY2Fmw6kiKQorCisgICAgZGVmIHRlc3RfcmVjdl9iaW5hcnko
c2VsZik6CisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9CSU5BUlks
IGIidGVhIikpCisgICAgICAgIGRhdGEgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNl
bGYucHJvdG9jb2wucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIidGVh
IikKKworICAgIGRlZiB0ZXN0X3JlY3Zfb25fY2xvc2luZ19jb25uZWN0aW9uX2xvY2FsKHNlbGYp
OgorICAgICAgICBjbG9zZV90YXNrID0gc2VsZi5oYWxmX2Nsb3NlX2Nvbm5lY3Rpb25fbG9jYWwo
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6Cisg
ICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVj
digpKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoY2xvc2VfdGFzaykg
ICMgY2xlYW51cAorCisgICAgZGVmIHRlc3RfcmVjdl9vbl9jbG9zaW5nX2Nvbm5lY3Rpb25fcmVt
b3RlKHNlbGYpOgorICAgICAgICBzZWxmLmhhbGZfY2xvc2VfY29ubmVjdGlvbl9yZW1vdGUoKQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAg
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigp
KQorCisgICAgZGVmIHRlc3RfcmVjdl9vbl9jbG9zZWRfY29ubmVjdGlvbihzZWxmKToKKyAgICAg
ICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKworICAgIGRlZiB0ZXN0X3JlY3ZfcHJvdG9j
b2xfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBP
UF9DT05ULCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSkpCisgICAgICAgIHNlbGYucHJvY2Vzc19p
bnZhbGlkX2ZyYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkZhaWxlZCgxMDAy
LCAiIikKKworICAgIGRlZiB0ZXN0X3JlY3ZfdW5pY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAg
c2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJs
YXRpbi0xIikpKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW52YWxpZF9mcmFtZXMoKQorICAgICAg
ICBzZWxmLmFzc2VydENvbm5lY3Rpb25GYWlsZWQoMTAwNywgIiIpCisKKyAgICBkZWYgdGVzdF9y
ZWN2X3RleHRfcGF5bG9hZF90b29fYmlnKHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLm1h
eF9zaXplID0gMTAyNAorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1Bf
VEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikgKiAyMDUpKQorICAgICAgICBzZWxmLnByb2Nl
c3NfaW52YWxpZF9mcmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25GYWlsZWQo
MTAwOSwgIiIpCisKKyAgICBkZWYgdGVzdF9yZWN2X2JpbmFyeV9wYXlsb2FkX3Rvb19iaWcoc2Vs
Zik6CisgICAgICAgIHNlbGYucHJvdG9jb2wubWF4X3NpemUgPSAxMDI0CisgICAgICAgIHNlbGYu
cmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9CSU5BUlksIGIidGVhIiAqIDM0MikpCisgICAg
ICAgIHNlbGYucHJvY2Vzc19pbnZhbGlkX2ZyYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29u
bmVjdGlvbkZhaWxlZCgxMDA5LCAiIikKKworICAgIGRlZiB0ZXN0X3JlY3ZfdGV4dF9ub19tYXhf
c2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5wcm90b2NvbC5tYXhfc2l6ZSA9IE5vbmUgICMgZm9y
IHRlc3QgY292ZXJhZ2UKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9Q
X1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpICogMjA1KSkKKyAgICAgICAgZGF0YSA9IHNl
bGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgImNhZsOpIiAqIDIwNSkKKworICAgIGRlZiB0ZXN0X3Jl
Y3ZfYmluYXJ5X25vX21heF9zaXplKHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLm1heF9z
aXplID0gTm9uZSAgIyBmb3IgdGVzdCBjb3ZlcmFnZQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJh
bWUoRnJhbWUoVHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIgKiAzNDIpKQorICAgICAgICBkYXRhID0g
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiInRlYSIgKiAzNDIpCisKKyAgICBkZWYgdGVzdF9y
ZWN2X3F1ZXVlX2VtcHR5KHNlbGYpOgorICAgICAgICByZWN2ID0gc2VsZi5sb29wLmNyZWF0ZV90
YXNrKHNlbGYucHJvdG9jb2wucmVjdigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KGFzeW5jaW8uVGltZW91dEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoCisgICAgICAgICAgICAgICAgYXN5bmNpby53YWl0X2Zvcihhc3luY2lvLnNoaWVs
ZChyZWN2KSwgdGltZW91dD1NUykKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLnJlY2Vp
dmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpKQor
ICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShyZWN2KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJjYWbDqSIpCisKKyAgICBkZWYgdGVzdF9yZWN2X3F1
ZXVlX2Z1bGwoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wubWF4X3F1ZXVlID0gMgorICAg
ICAgICAjIFRlc3QgaW50ZXJuYWxzIGJlY2F1c2UgaXQncyBoYXJkIHRvIHZlcmlmeSBidWZmZXJz
IGZyb20gdGhlIG91dHNpZGUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLnBy
b3RvY29sLm1lc3NhZ2VzKSwgW10pCisKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1l
KFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgc2VsZi5y
dW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYucHJvdG9j
b2wubWVzc2FnZXMpLCBbImNhZsOpIl0pCisKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZy
YW1lKFRydWUsIE9QX0JJTkFSWSwgYiJ0ZWEiKSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNl
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMp
LCBbImNhZsOpIiwgYiJ0ZWEiXSkKKworICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUo
VHJ1ZSwgT1BfQklOQVJZLCBiIm1pbGsiKSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBb
ImNhZsOpIiwgYiJ0ZWEiXSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRl
KHNlbGYucHJvdG9jb2wucmVjdigpKQorICAgICAgICBzZWxmLnJ1bl9sb29wX29uY2UoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5wcm90b2NvbC5tZXNzYWdlcyksIFtiInRl
YSIsIGIibWlsayJdKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2Vs
Zi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLnByb3RvY29sLm1lc3NhZ2VzKSwgW2IibWlsayJd
KQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5y
ZWN2KCkpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChzZWxmLnByb3RvY29sLm1lc3NhZ2VzKSwgW10pCisKKyAgICBkZWYgdGVzdF9y
ZWN2X3F1ZXVlX25vX2xpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLm1heF9xdWV1
ZSA9IE5vbmUKKworICAgICAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAgc2Vs
Zi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYt
OCIpKSkKKyAgICAgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisKKyAgICAgICAgIyBJbmNv
bWluZyBtZXNzYWdlIHF1ZXVlIGNhbiBjb250YWluIGF0IGxlYXN0IDEwMCBtZXNzYWdlcy4KKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbImNh
ZsOpIl0gKiAxMDApCisKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbXSkK
KworICAgIGRlZiB0ZXN0X3JlY3Zfb3RoZXJfZXJyb3Ioc2VsZik6CisgICAgICAgIGFzeW5jIGRl
ZiByZWFkX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQk9PTSIpCisK
KyAgICAgICAgc2VsZi5wcm90b2NvbC5yZWFkX21lc3NhZ2UgPSByZWFkX21lc3NhZ2UKKyAgICAg
ICAgc2VsZi5wcm9jZXNzX2ludmFsaWRfZnJhbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRDb25u
ZWN0aW9uRmFpbGVkKDEwMTEsICIiKQorCisgICAgZGVmIHRlc3RfcmVjdl9jYW5jZWxlZChzZWxm
KToKKyAgICAgICAgcmVjdiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhzZWxmLnByb3RvY29sLnJl
Y3YoKSkKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfc29vbihyZWN2LmNhbmNlbCkKKworICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgorICAgICAg
ICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShyZWN2KQorCisgICAgICAgICMgVGhl
IG5leHQgZnJhbWUgZG9lc24ndCBkaXNhcHBlYXIgaW4gYSB2YWN1dW0gKGl0IHVzZWQgdG8pLgor
ICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5l
bmNvZGUoInV0Zi04IikpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRh
LCAiY2Fmw6kiKQorCisgICAgZGVmIHRlc3RfcmVjdl9jYW5jZWxlZF9yYWNlX2NvbmRpdGlvbihz
ZWxmKToKKyAgICAgICAgcmVjdiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzaygKKyAgICAgICAgICAg
IGFzeW5jaW8ud2FpdF9mb3Ioc2VsZi5wcm90b2NvbC5yZWN2KCksIHRpbWVvdXQ9MC4wMDBfMDAx
KQorICAgICAgICApCisgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24oCisgICAgICAgICAgICBz
ZWxmLnJlY2VpdmVfZnJhbWUsIEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1
dGYtOCIpKQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3lu
Y2lvLlRpbWVvdXRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHJlY3YpCisKKyAgICAgICAgIyBUaGUgcHJldmlvdXMgZnJhbWUgZG9lc24ndCBkaXNhcHBl
YXIgaW4gYSB2YWN1dW0gKGl0IHVzZWQgdG8pLgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUo
RnJhbWUoVHJ1ZSwgT1BfVEVYVCwgInRlYSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgZGF0
YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisg
ICAgICAgICMgSWYgd2UncmUgZ2V0dGluZyAidGVhIiB0aGVyZSwgaXQgbWVhbnMgImNhZsOpIiB3
YXMgc3dhbGxvd2VkIChoYSwgaGEpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJj
YWbDqSIpCisKKyAgICBkZWYgdGVzdF9yZWN2X3doZW5fdHJhbnNmZXJfZGF0YV9jYW5jZWxsZWQo
c2VsZik6CisgICAgICAgICMgQ2xvZyBpbmNvbWluZyBxdWV1ZS4KKyAgICAgICAgc2VsZi5wcm90
b2NvbC5tYXhfcXVldWUgPSAxCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVl
LCBPUF9URVhULCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSkpCisgICAgICAgIHNlbGYucmVjZWl2
ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9CSU5BUlksIGIidGVhIikpCisgICAgICAgIHNlbGYucnVu
X2xvb3Bfb25jZSgpCisKKyAgICAgICAgIyBGbG93IGNvbnRyb2wga2lja3MgaW4gKGNoZWNrIHdp
dGggYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsKS4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShz
ZWxmLnByb3RvY29sLl9wdXRfbWVzc2FnZV93YWl0ZXIuZG9uZSgpKQorCisgICAgICAgICMgU2No
ZWR1bGUgcmVjdigpLgorICAgICAgICByZWN2ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYu
cHJvdG9jb2wucmVjdigpKQorCisgICAgICAgICMgQ2FuY2VsIHRyYW5zZmVyX2RhdGFfdGFzayAo
YWdhaW4sIGltcGxlbWVudGF0aW9uIGRldGFpbCkuCisgICAgICAgIHNlbGYucHJvdG9jb2wuZmFp
bF9jb25uZWN0aW9uKCkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHNlbGYucHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrLmNhbmNlbGxlZCgp
KQorCisgICAgICAgICMgcmVjdigpIGNvbXBsZXRlcyBwcm9wZXJseS4KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJlY3YpLCAiY2Fmw6kiKQor
CisgICAgZGVmIHRlc3RfcmVjdl9wcmV2ZW50c19jb25jdXJyZW50X2NhbGxzKHNlbGYpOgorICAg
ICAgICByZWN2ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYucHJvdG9jb2wucmVjdigpKQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFJ1bnRp
bWVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgY2FsbCByZWN2IHdoaWxlIGFub3RoZXIgY29y
b3V0aW5lICIKKyAgICAgICAgICAgICJpcyBhbHJlYWR5IHdhaXRpbmcgZm9yIHRoZSBuZXh0IG1l
c3NhZ2UiLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKworICAgICAgICByZWN2LmNhbmNlbCgpCisKKyAg
ICAjIFRlc3QgdGhlIHNlbmQgY29yb3V0aW5lLgorCisgICAgZGVmIHRlc3Rfc2VuZF90ZXh0KHNl
bGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wu
c2VuZCgiY2Fmw6kiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1Bf
VEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpCisKKyAgICBkZWYgdGVzdF9zZW5kX2JpbmFy
eShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3Rv
Y29sLnNlbmQoYiJ0ZWEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwg
T1BfQklOQVJZLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX2JpbmFyeV9mcm9tX2J5dGVh
cnJheShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnBy
b3RvY29sLnNlbmQoYnl0ZWFycmF5KGIidGVhIikpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZy
YW1lU2VudChUcnVlLCBPUF9CSU5BUlksIGIidGVhIikKKworICAgIGRlZiB0ZXN0X3NlbmRfYmlu
YXJ5X2Zyb21fbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZWxmLnByb3RvY29sLnNlbmQobWVtb3J5dmlldyhiInRlYSIpKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIpCisKKyAgICBk
ZWYgdGVzdF9zZW5kX2JpbmFyeV9mcm9tX25vbl9jb250aWd1b3VzX21lbW9yeXZpZXcoc2VsZik6
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5k
KG1lbW9yeXZpZXcoYiJ0dGVlYWEiKVs6OjJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFt
ZVNlbnQoVHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX3R5cGVf
ZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToK
KyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5z
ZW5kKDQyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVz
dF9zZW5kX2l0ZXJhYmxlX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5kKFsiY2EiLCAiZsOpIl0pKQorICAgICAgICBzZWxm
LmFzc2VydEZyYW1lc1NlbnQoCisgICAgICAgICAgICAoRmFsc2UsIE9QX1RFWFQsICJjYSIuZW5j
b2RlKCJ1dGYtOCIpKSwKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQ09OVCwgImbDqSIuZW5jb2Rl
KCJ1dGYtOCIpKSwKKyAgICAgICAgICAgIChUcnVlLCBPUF9DT05ULCAiIi5lbmNvZGUoInV0Zi04
IikpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zZW5kX2l0ZXJhYmxlX2JpbmFyeShzZWxm
KToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnNl
bmQoW2IidGUiLCBiImEiXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAg
ICAgICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChGYWxzZSwgT1BfQ09OVCwgYiJhIiks
IChUcnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfaXRl
cmFibGVfYmluYXJ5X2Zyb21fYnl0ZWFycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kKFtieXRlYXJy
YXkoYiJ0ZSIpLCBieXRlYXJyYXkoYiJhIildKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChG
YWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfaXRlcmFibGVfYmluYXJ5X2Zyb21fbWVtb3J5dmlldyhzZWxmKToK
KyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHNlbGYu
cHJvdG9jb2wuc2VuZChbbWVtb3J5dmlldyhiInRlIiksIG1lbW9yeXZpZXcoYiJhIildKQorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxz
ZSwgT1BfQklOQVJZLCBiInRlIiksIChGYWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9D
T05ULCBiIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfaXRlcmFibGVfYmluYXJ5
X2Zyb21fbm9uX2NvbnRpZ3VvdXNfbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZChbbWVt
b3J5dmlldyhiInR0ZWUiKVs6OjJdLCBtZW1vcnl2aWV3KGIiYWEiKVs6OjJdXSkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEZyYW1lc1NlbnQoCisgICAgICAgICAgICAoRmFsc2UsIE9Q
X0JJTkFSWSwgYiJ0ZSIpLCAoRmFsc2UsIE9QX0NPTlQsIGIiYSIpLCAoVHJ1ZSwgT1BfQ09OVCwg
YiIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zZW5kX2VtcHR5X2l0ZXJhYmxlKHNlbGYp
OgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2Vu
ZChbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgZGVmIHRlc3Rf
c2VuZF9pdGVyYWJsZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYucHJvdG9jb2wuc2VuZChbNDJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1l
U2VudCgpCisKKyAgICBkZWYgdGVzdF9zZW5kX2l0ZXJhYmxlX21peGVkX3R5cGVfZXJyb3Ioc2Vs
Zik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5kKFsiY2Fm
w6kiLCBiInRlYSJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGcmFtZXNTZW50KAorICAgICAgICAg
ICAgKEZhbHNlLCBPUF9URVhULCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSksCisgICAgICAgICAg
ICAoVHJ1ZSwgT1BfQ0xPU0UsIHNlcmlhbGl6ZV9jbG9zZSgxMDExLCAiIikpLAorICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9zZW5kX2l0ZXJhYmxlX3ByZXZlbnRzX2NvbmN1cnJlbnRfc2VuZChz
ZWxmKToKKyAgICAgICAgc2VsZi5tYWtlX2RyYWluX3Nsb3coMiAqIE1TKQorCisgICAgICAgIGFz
eW5jIGRlZiBzZW5kX2l0ZXJhYmxlKCk6CisgICAgICAgICAgICBhd2FpdCBzZWxmLnByb3RvY29s
LnNlbmQoWyJjYSIsICJmw6kiXSkKKworICAgICAgICBhc3luYyBkZWYgc2VuZF9jb25jdXJyZW50
KCk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKE1TKQorICAgICAgICAgICAgYXdh
aXQgc2VsZi5wcm90b2NvbC5zZW5kKGIidGVhIikKKworICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKGFzeW5jaW8uZ2F0aGVyKHNlbmRfaXRlcmFibGUoKSwgc2VuZF9jb25jdXJy
ZW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEZyYW1lc1NlbnQoCisgICAgICAgICAgICAoRmFs
c2UsIE9QX1RFWFQsICJjYSIuZW5jb2RlKCJ1dGYtOCIpKSwKKyAgICAgICAgICAgIChGYWxzZSwg
T1BfQ09OVCwgImbDqSIuZW5jb2RlKCJ1dGYtOCIpKSwKKyAgICAgICAgICAgIChUcnVlLCBPUF9D
T05ULCAiIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAgICAgKFRydWUsIE9QX0JJTkFSWSwg
YiJ0ZWEiKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hc3luY19pdGVyYWJsZV90
ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJv
dG9jb2wuc2VuZChhc3luY19pdGVyYWJsZShbImNhIiwgImbDqSJdKSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfVEVYVCwgImNhIi5lbmNv
ZGUoInV0Zi04IikpLAorICAgICAgICAgICAgKEZhbHNlLCBPUF9DT05ULCAiZsOpIi5lbmNvZGUo
InV0Zi04IikpLAorICAgICAgICAgICAgKFRydWUsIE9QX0NPTlQsICIiLmVuY29kZSgidXRmLTgi
KSksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfYXN5bmNfaXRlcmFibGVfYmluYXJ5
KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9j
b2wuc2VuZChhc3luY19pdGVyYWJsZShbYiJ0ZSIsIGIiYSJdKSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChG
YWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfYXN5bmNfaXRlcmFibGVfYmluYXJ5X2Zyb21fYnl0ZWFycmF5KHNl
bGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAg
c2VsZi5wcm90b2NvbC5zZW5kKGFzeW5jX2l0ZXJhYmxlKFtieXRlYXJyYXkoYiJ0ZSIpLCBieXRl
YXJyYXkoYiJhIildKSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEZyYW1lc1NlbnQo
CisgICAgICAgICAgICAoRmFsc2UsIE9QX0JJTkFSWSwgYiJ0ZSIpLCAoRmFsc2UsIE9QX0NPTlQs
IGIiYSIpLCAoVHJ1ZSwgT1BfQ09OVCwgYiIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9z
ZW5kX2FzeW5jX2l0ZXJhYmxlX2JpbmFyeV9mcm9tX21lbW9yeXZpZXcoc2VsZik6CisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICBzZWxmLnByb3RvY29s
LnNlbmQoYXN5bmNfaXRlcmFibGUoW21lbW9yeXZpZXcoYiJ0ZSIpLCBtZW1vcnl2aWV3KGIiYSIp
XSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRGcmFtZXNTZW50KAorICAgICAgICAg
ICAgKEZhbHNlLCBPUF9CSU5BUlksIGIidGUiKSwgKEZhbHNlLCBPUF9DT05ULCBiImEiKSwgKFRy
dWUsIE9QX0NPTlQsIGIiIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hc3luY19p
dGVyYWJsZV9iaW5hcnlfZnJvbV9ub25fY29udGlndW91c19tZW1vcnl2aWV3KHNlbGYpOgorICAg
ICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgc2VsZi5wcm90
b2NvbC5zZW5kKAorICAgICAgICAgICAgICAgIGFzeW5jX2l0ZXJhYmxlKFttZW1vcnl2aWV3KGIi
dHRlZSIpWzo6Ml0sIG1lbW9yeXZpZXcoYiJhYSIpWzo6Ml1dKQorICAgICAgICAgICAgKQorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxz
ZSwgT1BfQklOQVJZLCBiInRlIiksIChGYWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9D
T05ULCBiIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfZW1wdHlfYXN5bmNfaXRl
cmFibGUoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5w
cm90b2NvbC5zZW5kKGFzeW5jX2l0ZXJhYmxlKFtdKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9G
cmFtZVNlbnQoKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hc3luY19pdGVyYWJsZV90eXBlX2Vycm9y
KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAg
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZChh
c3luY19pdGVyYWJsZShbNDJdKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9hc3luY19pdGVyYWJsZV9taXhlZF90eXBlX2Vycm9yKHNlbGYp
OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgICAgIHNlbGYucHJv
dG9jb2wuc2VuZChhc3luY19pdGVyYWJsZShbImNhZsOpIiwgYiJ0ZWEiXSkpCisgICAgICAgICAg
ICApCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwg
T1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAgICAgKFRydWUsIE9Q
X0NMT1NFLCBzZXJpYWxpemVfY2xvc2UoMTAxMSwgIiIpKSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9hc3luY19pdGVyYWJsZV9wcmV2ZW50c19jb25jdXJyZW50X3NlbmQoc2VsZik6
CisgICAgICAgIHNlbGYubWFrZV9kcmFpbl9zbG93KDIgKiBNUykKKworICAgICAgICBhc3luYyBk
ZWYgc2VuZF9hc3luY19pdGVyYWJsZSgpOgorICAgICAgICAgICAgYXdhaXQgc2VsZi5wcm90b2Nv
bC5zZW5kKGFzeW5jX2l0ZXJhYmxlKFsiY2EiLCAiZsOpIl0pKQorCisgICAgICAgIGFzeW5jIGRl
ZiBzZW5kX2NvbmN1cnJlbnQoKToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoTVMp
CisgICAgICAgICAgICBhd2FpdCBzZWxmLnByb3RvY29sLnNlbmQoYiJ0ZWEiKQorCisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICBhc3luY2lvLmdhdGhl
cihzZW5kX2FzeW5jX2l0ZXJhYmxlKCksIHNlbmRfY29uY3VycmVudCgpKQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfVEVY
VCwgImNhIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAgICAgKEZhbHNlLCBPUF9DT05ULCAi
ZsOpIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAgICAgKFRydWUsIE9QX0NPTlQsICIiLmVu
Y29kZSgidXRmLTgiKSksCisgICAgICAgICAgICAoVHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIpLAor
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zZW5kX29uX2Nsb3NpbmdfY29ubmVjdGlvbl9sb2Nh
bChzZWxmKToKKyAgICAgICAgY2xvc2VfdGFzayA9IHNlbGYuaGFsZl9jbG9zZV9jb25uZWN0aW9u
X2xvY2FsKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9z
ZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3Rv
Y29sLnNlbmQoImZvb2JhciIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQor
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoY2xvc2VfdGFzaykgICMgY2xl
YW51cAorCisgICAgZGVmIHRlc3Rfc2VuZF9vbl9jbG9zaW5nX2Nvbm5lY3Rpb25fcmVtb3RlKHNl
bGYpOgorICAgICAgICBzZWxmLmhhbGZfY2xvc2VfY29ubmVjdGlvbl9yZW1vdGUoKQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZCgiZm9vYmFy
IikpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9z
ZW5kX29uX2Nsb3NlZF9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmNsb3NlX2Nvbm5l
Y3Rpb24oKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3Nl
ZCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9j
b2wuc2VuZCgiZm9vYmFyIikpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisK
KyAgICAjIFRlc3QgdGhlIHBpbmcgY29yb3V0aW5lLgorCisgICAgZGVmIHRlc3RfcGluZ19kZWZh
dWx0KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJv
dG9jb2wucGluZygpKQorICAgICAgICAjIFdpdGggb3VyIHRlc3RpbmcgdG9vbHMsIGl0J3MgbW9y
ZSBjb252ZW5pZW50IHRvIGV4dHJhY3QgdGhlIGV4cGVjdGVkCisgICAgICAgICMgcGluZyBkYXRh
IGZyb20gdGhlIGxpYnJhcnkncyBpbnRlcm5hbHMgdGhhbiBmcm9tIHRoZSBmcmFtZSBzZW50Lgor
ICAgICAgICBwaW5nX2RhdGEgPSBuZXh0KGl0ZXIoc2VsZi5wcm90b2NvbC5waW5ncykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwaW5nX2RhdGEsIGJ5dGVzKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihwaW5nX2RhdGEpLCA0KQorICAgICAgICBzZWxmLmFzc2VydE9uZUZy
YW1lU2VudChUcnVlLCBPUF9QSU5HLCBwaW5nX2RhdGEpCisKKyAgICBkZWYgdGVzdF9waW5nX3Rl
eHQoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90
b2NvbC5waW5nKCJjYWbDqSIpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVl
LCBPUF9QSU5HLCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSkKKworICAgIGRlZiB0ZXN0X3Bpbmdf
YmluYXJ5KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
cHJvdG9jb2wucGluZyhiInRlYSIpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChU
cnVlLCBPUF9QSU5HLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9waW5nX2JpbmFyeV9mcm9tX2J5
dGVhcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LnByb3RvY29sLnBpbmcoYnl0ZWFycmF5KGIidGVhIikpKQorICAgICAgICBzZWxmLmFzc2VydE9u
ZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9waW5nX2Jp
bmFyeV9mcm9tX21lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKG1lbW9yeXZpZXcoYiJ0ZWEiKSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX1BJTkcsIGIidGVhIikKKworICAgIGRl
ZiB0ZXN0X3BpbmdfYmluYXJ5X2Zyb21fbm9uX2NvbnRpZ3VvdXNfbWVtb3J5dmlldyhzZWxmKToK
KyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBpbmco
bWVtb3J5dmlldyhiInR0ZWVhYSIpWzo6Ml0pKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1l
U2VudChUcnVlLCBPUF9QSU5HLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9waW5nX3R5cGVfZXJy
b3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAg
ICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5n
KDQyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9w
aW5nX29uX2Nsb3NpbmdfY29ubmVjdGlvbl9sb2NhbChzZWxmKToKKyAgICAgICAgY2xvc2VfdGFz
ayA9IHNlbGYuaGFsZl9jbG9zZV9jb25uZWN0aW9uX2xvY2FsKCkKKworICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBpbmcoKSkKKworICAgICAgICBzZWxm
LmFzc2VydE5vRnJhbWVTZW50KCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKGNsb3NlX3Rhc2spICAjIGNsZWFudXAKKworICAgIGRlZiB0ZXN0X3Bpbmdfb25fY2xvc2lu
Z19jb25uZWN0aW9uX3JlbW90ZShzZWxmKToKKyAgICAgICAgc2VsZi5oYWxmX2Nsb3NlX2Nvbm5l
Y3Rpb25fcmVtb3RlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rp
b25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LnByb3RvY29sLnBpbmcoKSkKKworICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKwor
ICAgIGRlZiB0ZXN0X3Bpbmdfb25fY2xvc2VkX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgIHNl
bGYuY2xvc2VfY29ubmVjdGlvbigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhD
b25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoc2VsZi5wcm90b2NvbC5waW5nKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2Vu
dCgpCisKKyAgICAjIFRlc3QgdGhlIHBvbmcgY29yb3V0aW5lLgorCisgICAgZGVmIHRlc3RfcG9u
Z19kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNl
bGYucHJvdG9jb2wucG9uZygpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVl
LCBPUF9QT05HLCBiIiIpCisKKyAgICBkZWYgdGVzdF9wb25nX3RleHQoc2VsZik6CisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5wb25nKCJjYWbDqSIp
KQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCAiY2Fmw6ki
LmVuY29kZSgidXRmLTgiKSkKKworICAgIGRlZiB0ZXN0X3BvbmdfYmluYXJ5KHNlbGYpOgorICAg
ICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucG9uZyhiInRl
YSIpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCBiInRl
YSIpCisKKyAgICBkZWYgdGVzdF9wb25nX2JpbmFyeV9mcm9tX2J5dGVhcnJheShzZWxmKToKKyAg
ICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBvbmcoYnl0
ZWFycmF5KGIidGVhIikpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBP
UF9QT05HLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9wb25nX2JpbmFyeV9mcm9tX21lbW9yeXZp
ZXcoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90
b2NvbC5wb25nKG1lbW9yeXZpZXcoYiJ0ZWEiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJh
bWVTZW50KFRydWUsIE9QX1BPTkcsIGIidGVhIikKKworICAgIGRlZiB0ZXN0X3BvbmdfYmluYXJ5
X2Zyb21fbm9uX2NvbnRpZ3VvdXNfbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBvbmcobWVtb3J5dmlldyhiInR0ZWVh
YSIpWzo6Ml0pKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05H
LCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9wb25nX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5wb25nKDQyKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9wb25nX29uX2Nsb3NpbmdfY29u
bmVjdGlvbl9sb2NhbChzZWxmKToKKyAgICAgICAgY2xvc2VfdGFzayA9IHNlbGYuaGFsZl9jbG9z
ZV9jb25uZWN0aW9uX2xvY2FsKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENv
bm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShzZWxmLnByb3RvY29sLnBvbmcoKSkKKworICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50
KCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGNsb3NlX3Rhc2spICAj
IGNsZWFudXAKKworICAgIGRlZiB0ZXN0X3Bvbmdfb25fY2xvc2luZ19jb25uZWN0aW9uX3JlbW90
ZShzZWxmKToKKyAgICAgICAgc2VsZi5oYWxmX2Nsb3NlX2Nvbm5lY3Rpb25fcmVtb3RlKCkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAg
ICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBvbmcoKSkK
KworICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKworICAgIGRlZiB0ZXN0X3Bvbmdf
b25fY2xvc2VkX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlv
bigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToK
KyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5w
b25nKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICAjIFRlc3Qg
dGhlIHByb3RvY29sJ3MgbG9naWMgZm9yIGFja25vd2xlZGdpbmcgcGluZ3Mgd2l0aCBwb25ncy4K
KworICAgIGRlZiB0ZXN0X2Fuc3dlcl9waW5nKHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVf
ZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfUElORywgYiJ0ZXN0IikpCisgICAgICAgIHNlbGYucnVuX2xv
b3Bfb25jZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX1BPTkcs
IGIidGVzdCIpCisKKyAgICBkZWYgdGVzdF9pZ25vcmVfcG9uZyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1BPTkcsIGIidGVzdCIpKQorICAgICAgICBz
ZWxmLnJ1bl9sb29wX29uY2UoKQorICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKwor
ICAgIGRlZiB0ZXN0X2Fja25vd2xlZGdlX3Bpbmcoc2VsZik6CisgICAgICAgIHBpbmcgPSBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucGluZygpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHBpbmcuZG9uZSgpKQorICAgICAgICBwaW5nX2ZyYW1lID0gc2VsZi5s
YXN0X3NlbnRfZnJhbWUoKQorICAgICAgICBwb25nX2ZyYW1lID0gRnJhbWUoVHJ1ZSwgT1BfUE9O
RywgcGluZ19mcmFtZS5kYXRhKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUocG9uZ19mcmFt
ZSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9v
bmNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBpbmcuZG9uZSgpKQorCisgICAgZGVmIHRl
c3RfYWJvcnRfcGluZyhzZWxmKToKKyAgICAgICAgcGluZyA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCkpCisgICAgICAgICMgUmVtb3ZlIHRoZSBmcmFt
ZSBmcm9tIHRoZSBidWZmZXIsIGVsc2UgY2xvc2VfY29ubmVjdGlvbigpIGNvbXBsYWlucy4KKyAg
ICAgICAgc2VsZi5sYXN0X3NlbnRfZnJhbWUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBp
bmcuZG9uZSgpKQorICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocGluZy5kb25lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShw
aW5nLmV4Y2VwdGlvbigpLCBDb25uZWN0aW9uQ2xvc2VkKQorCisgICAgZGVmIHRlc3RfYWJvcnRf
cGluZ19kb2VzX25vdF9sb2dfZXhjZXB0aW9uX2lmX25vdF9yZXRyZWl2ZWQoc2VsZik6CisgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCkpCisg
ICAgICAgICMgR2V0IHRoZSBpbnRlcm5hbCBGdXR1cmUsIHdoaWNoIGlzbid0IGRpcmVjdGx5IHJl
dHVybmVkIGJ5IHBpbmcoKS4KKyAgICAgICAgKHBpbmcsKSA9IHNlbGYucHJvdG9jb2wucGluZ3Mu
dmFsdWVzKCkKKyAgICAgICAgIyBSZW1vdmUgdGhlIGZyYW1lIGZyb20gdGhlIGJ1ZmZlciwgZWxz
ZSBjbG9zZV9jb25uZWN0aW9uKCkgY29tcGxhaW5zLgorICAgICAgICBzZWxmLmxhc3Rfc2VudF9m
cmFtZSgpCisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgICMgQ2hlY2sg
YSBwcml2YXRlIGF0dHJpYnV0ZSwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgc29sdXRpb24uCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UocGluZy5fbG9nX3RyYWNlYmFjaykKKworICAgIGRlZiB0ZXN0
X2Fja25vd2xlZGdlX3ByZXZpb3VzX3BpbmdzKHNlbGYpOgorICAgICAgICBwaW5ncyA9IFsKKyAg
ICAgICAgICAgIChzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucGlu
ZygpKSwgc2VsZi5sYXN0X3NlbnRfZnJhbWUoKSkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdl
KDMpCisgICAgICAgIF0KKyAgICAgICAgIyBVbnNvbGljaXRlZCBwb25nIGRvZXNuJ3QgYWNrbm93
bGVkZ2UgcGluZ3MKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1BP
TkcsIGIiIikpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYucnVu
X2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGluZ3NbMF1bMF0uZG9uZSgp
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBpbmdzWzFdWzBdLmRvbmUoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShwaW5nc1syXVswXS5kb25lKCkpCisgICAgICAgICMgUG9uZyBhY2tu
b3dsZWRnZXMgYWxsIHByZXZpb3VzIHBpbmdzCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShG
cmFtZShUcnVlLCBPUF9QT05HLCBwaW5nc1sxXVsxXS5kYXRhKSkKKyAgICAgICAgc2VsZi5ydW5f
bG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBpbmdzWzBdWzBdLmRvbmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBp
bmdzWzFdWzBdLmRvbmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwaW5nc1syXVswXS5k
b25lKCkpCisKKyAgICBkZWYgdGVzdF9hY2tub3dsZWRnZV9hYm9ydGVkX3Bpbmcoc2VsZik6Cisg
ICAgICAgIHBpbmcgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wu
cGluZygpKQorICAgICAgICBwaW5nX2ZyYW1lID0gc2VsZi5sYXN0X3NlbnRfZnJhbWUoKQorICAg
ICAgICAjIENsb2cgaW5jb21pbmcgcXVldWUuIFRoaXMgbGV0cyBjb25uZWN0aW9uX2xvc3QoKSBh
Ym9ydCBwZW5kaW5nIHBpbmdzCisgICAgICAgICMgd2l0aCBhIENvbm5lY3Rpb25DbG9zZWQgZXhj
ZXB0aW9uIGJlZm9yZSB0cmFuc2Zlcl9kYXRhX3Rhc2sKKyAgICAgICAgIyB0ZXJtaW5hdGVzIGFu
ZCBjbG9zZV9jb25uZWN0aW9uIGNhbmNlbHMga2VlcGFsaXZlX3BpbmdfdGFzay4KKyAgICAgICAg
c2VsZi5wcm90b2NvbC5tYXhfcXVldWUgPSAxCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShG
cmFtZShUcnVlLCBPUF9URVhULCBiIjEiKSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZy
YW1lKFRydWUsIE9QX1RFWFQsIGIiMiIpKQorICAgICAgICAjIEFkZCBwb25nIGZyYW1lIHRvIHRo
ZSBxdWV1ZS4KKyAgICAgICAgcG9uZ19mcmFtZSA9IEZyYW1lKFRydWUsIE9QX1BPTkcsIHBpbmdf
ZnJhbWUuZGF0YSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKHBvbmdfZnJhbWUpCisgICAg
ICAgICMgQ29ubmVjdGlvbiBkcm9wcy4KKyAgICAgICAgc2VsZi5yZWNlaXZlX2VvZigpCisgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC53YWl0X2Nsb3Nl
ZCgpKQorICAgICAgICAjIFBpbmcgcmVjZWl2ZXMgYSBDb25uZWN0aW9uQ2xvc2VkIGV4Y2VwdGlv
bi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAg
ICAgICAgICAgIHBpbmcucmVzdWx0KCkKKworICAgICAgICAjIHRyYW5zZmVyX2RhdGEgZG9lc24n
dCBjcmFzaCwgd2hpY2ggd291bGQgYmUgbG9nZ2VkLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
Tm9Mb2dzKCk6CisgICAgICAgICAgICAjIFVuY2xvZyBpbmNvbWluZyBxdWV1ZS4KKyAgICAgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisg
ICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVj
digpKQorCisgICAgZGVmIHRlc3RfY2FuY2VsZWRfcGluZyhzZWxmKToKKyAgICAgICAgcGluZyA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCkpCisgICAg
ICAgIHBpbmdfZnJhbWUgPSBzZWxmLmxhc3Rfc2VudF9mcmFtZSgpCisgICAgICAgIHBpbmcuY2Fu
Y2VsKCkKKyAgICAgICAgcG9uZ19mcmFtZSA9IEZyYW1lKFRydWUsIE9QX1BPTkcsIHBpbmdfZnJh
bWUuZGF0YSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKHBvbmdfZnJhbWUpCisgICAgICAg
IHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwaW5nLmNhbmNlbGxlZCgpKQorCisgICAgZGVmIHRlc3RfZHVw
bGljYXRlX3Bpbmcoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUo
c2VsZi5wcm90b2NvbC5waW5nKGIiZm9vYmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJh
bWVTZW50KFRydWUsIE9QX1BJTkcsIGIiZm9vYmFyIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5wcm90b2NvbC5waW5nKGIiZm9vYmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0
Tm9GcmFtZVNlbnQoKQorCisgICAgIyBUZXN0IHRoZSBwcm90b2NvbCdzIGxvZ2ljIGZvciByZWJ1
aWxkaW5nIGZyYWdtZW50ZWQgbWVzc2FnZXMuCisKKyAgICBkZWYgdGVzdF9mcmFnbWVudGVkX3Rl
eHQoc2VsZik6CisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfVEVY
VCwgImNhIi5lbmNvZGUoInV0Zi04IikpKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJh
bWUoVHJ1ZSwgT1BfQ09OVCwgImbDqSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgZGF0YSA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgImNhZsOpIikKKworICAgIGRlZiB0ZXN0X2ZyYWdt
ZW50ZWRfYmluYXJ5KHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoRmFs
c2UsIE9QX0JJTkFSWSwgYiJ0IikpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShG
YWxzZSwgT1BfQ09OVCwgYiJlIikpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShU
cnVlLCBPUF9DT05ULCBiImEiKSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGF0YSwgYiJ0ZWEiKQorCisgICAgZGVmIHRlc3RfZnJhZ21lbnRlZF90ZXh0X3BheWxvYWRfdG9v
X2JpZyhzZWxmKToKKyAgICAgICAgc2VsZi5wcm90b2NvbC5tYXhfc2l6ZSA9IDEwMjQKKyAgICAg
ICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKEZhbHNlLCBPUF9URVhULCAiY2Fmw6kiLmVuY29k
ZSgidXRmLTgiKSAqIDEwMCkpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVl
LCBPUF9DT05ULCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSAqIDEwNSkpCisgICAgICAgIHNlbGYu
cHJvY2Vzc19pbnZhbGlkX2ZyYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkZh
aWxlZCgxMDA5LCAiIikKKworICAgIGRlZiB0ZXN0X2ZyYWdtZW50ZWRfYmluYXJ5X3BheWxvYWRf
dG9vX2JpZyhzZWxmKToKKyAgICAgICAgc2VsZi5wcm90b2NvbC5tYXhfc2l6ZSA9IDEwMjQKKyAg
ICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKEZhbHNlLCBPUF9CSU5BUlksIGIidGVhIiAq
IDE3MSkpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCBi
InRlYSIgKiAxNzEpKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW52YWxpZF9mcmFtZXMoKQorICAg
ICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25GYWlsZWQoMTAwOSwgIiIpCisKKyAgICBkZWYgdGVz
dF9mcmFnbWVudGVkX3RleHRfbm9fbWF4X3NpemUoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9j
b2wubWF4X3NpemUgPSBOb25lICAjIGZvciB0ZXN0IGNvdmVyYWdlCisgICAgICAgIHNlbGYucmVj
ZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04Iikg
KiAxMDApKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQ09OVCwg
ImNhZsOpIi5lbmNvZGUoInV0Zi04IikgKiAxMDUpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhLCAiY2Fmw6kiICogMjA1KQorCisgICAgZGVmIHRlc3RfZnJhZ21lbnRl
ZF9iaW5hcnlfbm9fbWF4X3NpemUoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wubWF4X3Np
emUgPSBOb25lICAjIGZvciB0ZXN0IGNvdmVyYWdlCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFt
ZShGcmFtZShGYWxzZSwgT1BfQklOQVJZLCBiInRlYSIgKiAxNzEpKQorICAgICAgICBzZWxmLnJl
Y2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQ09OVCwgYiJ0ZWEiICogMTcxKSkKKyAgICAgICAg
ZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJ0ZWEiICogMzQyKQorCisgICAgZGVm
IHRlc3RfY29udHJvbF9mcmFtZV93aXRoaW5fZnJhZ21lbnRlZF90ZXh0KHNlbGYpOgorICAgICAg
ICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoRmFsc2UsIE9QX1RFWFQsICJjYSIuZW5jb2RlKCJ1
dGYtOCIpKSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1BJTkcs
IGIiIikpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCAi
ZsOpIi5lbmNvZGUoInV0Zi04IikpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkYXRhLCAiY2Fmw6kiKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBP
UF9QT05HLCBiIiIpCisKKyAgICBkZWYgdGVzdF91bnRlcm1pbmF0ZWRfZnJhZ21lbnRlZF90ZXh0
KHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoRmFsc2UsIE9QX1RFWFQs
ICJjYSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgIyBNaXNzaW5nIHRoZSBzZWNvbmQgcGFy
dCBvZiB0aGUgZnJhZ21lbnRlZCBmcmFtZS4KKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZy
YW1lKFRydWUsIE9QX0JJTkFSWSwgYiJ0ZWEiKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ludmFs
aWRfZnJhbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uRmFpbGVkKDEwMDIsICIi
KQorCisgICAgZGVmIHRlc3RfY2xvc2VfaGFuZHNoYWtlX2luX2ZyYWdtZW50ZWRfdGV4dChzZWxm
KToKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKEZhbHNlLCBPUF9URVhULCAiY2Ei
LmVuY29kZSgidXRmLTgiKSkpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVl
LCBPUF9DTE9TRSwgYiIiKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ludmFsaWRfZnJhbWVzKCkK
KyAgICAgICAgIyBUaGUgUkZDIG1heSBoYXZlIG92ZXJsb29rZWQgdGhpcyBjYXNlOiBpdCBzYXlz
IHRoYXQgY29udHJvbCBmcmFtZXMKKyAgICAgICAgIyBjYW4gYmUgaW50ZXJqZWN0ZWQgaW4gdGhl
IG1pZGRsZSBvZiBhIGZyYWdtZW50ZWQgbWVzc2FnZSBhbmQgdGhhdCBhCisgICAgICAgICMgY2xv
c2UgZnJhbWUgbXVzdCBiZSBlY2hvZWQuIEV2ZW4gdGhvdWdoIHRoZXJlJ3MgYW4gdW50ZXJtaW5h
dGVkCisgICAgICAgICMgbWVzc2FnZSwgdGVjaG5pY2FsbHksIHRoZSBjbG9zaW5nIGhhbmRzaGFr
ZSB3YXMgc3VjY2Vzc2Z1bC4KKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEw
MDUsICIiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdGlvbl9jbG9zZV9pbl9mcmFnbWVudGVkX3Rl
eHQoc2VsZik6CisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfVEVY
VCwgImNhIi5lbmNvZGUoInV0Zi04IikpKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW52YWxpZF9m
cmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25GYWlsZWQoMTAwNiwgIiIpCisK
KyAgICAjIFRlc3QgbWlzY2VsbGFuZW91cyBjb2RlIHBhdGhzIHRvIGVuc3VyZSBmdWxsIGNvdmVy
YWdlLgorCisgICAgZGVmIHRlc3RfY29ubmVjdGlvbl9sb3N0KHNlbGYpOgorICAgICAgICAjIFRl
c3QgY2FsbGluZyBjb25uZWN0aW9uX2xvc3Qgd2l0aG91dCBnb2luZyB0aHJvdWdoIGNsb3NlX2Nv
bm5lY3Rpb24uCisgICAgICAgIHNlbGYucHJvdG9jb2wuY29ubmVjdGlvbl9sb3N0KE5vbmUpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uRmFpbGVkKDEwMDYsICIiKQorCisgICAgZGVm
IHRlc3RfZW5zdXJlX29wZW5fYmVmb3JlX29wZW5pbmdfaGFuZHNoYWtlKHNlbGYpOgorICAgICAg
ICAjIFNpbXVsYXRlIGEgYnVnIGJ5IGZvcmNpYmx5IHJldmVydGluZyB0aGUgcHJvdG9jb2wgc3Rh
dGUuCisgICAgICAgIHNlbGYucHJvdG9jb2wuc3RhdGUgPSBTdGF0ZS5DT05ORUNUSU5HCisKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkU3RhdGUpOgorICAgICAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLmVuc3VyZV9vcGVuKCkp
CisKKyAgICBkZWYgdGVzdF9lbnN1cmVfb3Blbl9kdXJpbmdfdW5jbGVhbl9jbG9zZShzZWxmKToK
KyAgICAgICAgIyBQcm9jZXNzIGNvbm5lY3Rpb25fbWFkZSBpbiBvcmRlciB0byBzdGFydCB0cmFu
c2Zlcl9kYXRhX3Rhc2suCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisKKyAgICAgICAg
IyBFbnN1cmUgdGhlIHRlc3QgdGVybWluYXRlcyBxdWlja2x5LgorICAgICAgICBzZWxmLmxvb3Au
Y2FsbF9sYXRlcihNUywgc2VsZi5yZWNlaXZlX2VvZl9pZl9jbGllbnQpCisKKyAgICAgICAgIyBT
aW11bGF0ZSB0aGUgY2FzZSB3aGVuIGNsb3NlKCkgdGltZXMgb3V0IHNlbmRpbmcgYSBjbG9zZSBm
cmFtZS4KKyAgICAgICAgc2VsZi5wcm90b2NvbC5mYWlsX2Nvbm5lY3Rpb24oKQorCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuZW5zdXJlX29wZW4oKSkK
KworICAgIGRlZiB0ZXN0X2xlZ2FjeV9yZWN2KHNlbGYpOgorICAgICAgICAjIEJ5IGRlZmF1bHQg
bGVnYWN5X3JlY3YgaW4gZGlzYWJsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5w
cm90b2NvbC5sZWdhY3lfcmVjdiwgRmFsc2UpCisKKyAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0
aW9uKCkKKworICAgICAgICAjIEVuYWJsZSBsZWdhY3lfcmVjdi4KKyAgICAgICAgc2VsZi5wcm90
b2NvbC5sZWdhY3lfcmVjdiA9IFRydWUKKworICAgICAgICAjIE5vdyByZWN2KCkgcmV0dXJucyBO
b25lIGluc3RlYWQgb2YgcmFpc2luZyBDb25uZWN0aW9uQ2xvc2VkLgorICAgICAgICBzZWxmLmFz
c2VydElzTm9uZShzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVj
digpKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rpb25fY2xvc2VkX2F0dHJpYnV0ZXMoc2VsZik6
CisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgc2Vs
Zi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKworICAgICAg
ICBjb25uZWN0aW9uX2Nsb3NlZF9leGMgPSBjb250ZXh0LmV4Y2VwdGlvbgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbm5lY3Rpb25fY2xvc2VkX2V4Yy5jb2RlLCAxMDAwKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbm5lY3Rpb25fY2xvc2VkX2V4Yy5yZWFzb24sICJjbG9zZSIpCisK
KyAgICAjIFRlc3QgdGhlIHByb3RvY29sIGxvZ2ljIGZvciBzZW5kaW5nIGtlZXBhbGl2ZSBwaW5n
cy4KKworICAgIGRlZiByZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2VlcGFsaXZlX3BpbmcoCisgICAg
ICAgIHNlbGYsIHBpbmdfaW50ZXJ2YWw9MyAqIE1TLCBwaW5nX3RpbWVvdXQ9MyAqIE1TCisgICAg
KToKKyAgICAgICAgaW5pdGlhbF9wcm90b2NvbCA9IHNlbGYucHJvdG9jb2wKKyAgICAgICAgIyBj
b3BpZWQgZnJvbSB0ZWFyRG93bgorICAgICAgICBzZWxmLnRyYW5zcG9ydC5jbG9zZSgpCisgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZSgpKQor
ICAgICAgICAjIGNvcGllZCBmcm9tIHNldFVwLCBidXQgZW5hYmxlcyBrZWVwYWxpdmUgcGluZ3MK
KyAgICAgICAgc2VsZi5wcm90b2NvbCA9IFdlYlNvY2tldENvbW1vblByb3RvY29sKAorICAgICAg
ICAgICAgcGluZ19pbnRlcnZhbD1waW5nX2ludGVydmFsLCBwaW5nX3RpbWVvdXQ9cGluZ190aW1l
b3V0CisgICAgICAgICkKKyAgICAgICAgc2VsZi50cmFuc3BvcnQgPSBUcmFuc3BvcnRNb2NrKCkK
KyAgICAgICAgc2VsZi50cmFuc3BvcnQuc2V0dXBfbW9jayhzZWxmLmxvb3AsIHNlbGYucHJvdG9j
b2wpCisgICAgICAgIHNlbGYucHJvdG9jb2wuaXNfY2xpZW50ID0gaW5pdGlhbF9wcm90b2NvbC5p
c19jbGllbnQKKyAgICAgICAgc2VsZi5wcm90b2NvbC5zaWRlID0gaW5pdGlhbF9wcm90b2NvbC5z
aWRlCisKKyAgICBkZWYgdGVzdF9rZWVwYWxpdmVfcGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5y
ZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2VlcGFsaXZlX3BpbmcoKQorCisgICAgICAgICMgUGluZyBp
cyBzZW50IGF0IDNtcyBhbmQgYWNrbm93bGVkZ2VkIGF0IDRtcy4KKyAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDQgKiBNUykpCisgICAgICAgIChwaW5n
XzEsKSA9IHR1cGxlKHNlbGYucHJvdG9jb2wucGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0T25l
RnJhbWVTZW50KFRydWUsIE9QX1BJTkcsIHBpbmdfMSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2Zy
YW1lKEZyYW1lKFRydWUsIE9QX1BPTkcsIHBpbmdfMSkpCisKKyAgICAgICAgIyBOZXh0IHBpbmcg
aXMgc2VudCBhdCA3bXMuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5
bmNpby5zbGVlcCg0ICogTVMpKQorICAgICAgICAocGluZ18yLCkgPSB0dXBsZShzZWxmLnByb3Rv
Y29sLnBpbmdzKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5H
LCBwaW5nXzIpCisKKyAgICAgICAgIyBUaGUga2VlcGFsaXZlIHBpbmcgdGFzayBnb2VzIG9uLgor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucHJvdG9jb2wua2VlcGFsaXZlX3BpbmdfdGFz
ay5kb25lKCkpCisKKyAgICBkZWYgdGVzdF9rZWVwYWxpdmVfcGluZ19ub3RfYWNrbm93bGVkZ2Vk
X2Nsb3Nlc19jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLnJlc3RhcnRfcHJvdG9jb2xf
d2l0aF9rZWVwYWxpdmVfcGluZygpCisKKyAgICAgICAgIyBQaW5nIGlzIHNlbnQgYXQgM21zIGFu
ZCBub3QgYWNrbm93bGVnZWQuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUo
YXN5bmNpby5zbGVlcCg0ICogTVMpKQorICAgICAgICAocGluZ18xLCkgPSB0dXBsZShzZWxmLnBy
b3RvY29sLnBpbmdzKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9Q
SU5HLCBwaW5nXzEpCisKKyAgICAgICAgIyBDb25uZWN0aW9uIGlzIGNsb3NlZCBhdCA2bXMuCisg
ICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICogTVMp
KQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9DTE9TRSwgc2VyaWFs
aXplX2Nsb3NlKDEwMTEsICIiKSkKKworICAgICAgICAjIFRoZSBrZWVwYWxpdmUgcGluZyB0YXNr
IGlzIGNvbXBsZXRlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wua2Vl
cGFsaXZlX3BpbmdfdGFzay5yZXN1bHQoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2tlZXBhbGl2
ZV9waW5nX3N0b3BzX3doZW5fY29ubmVjdGlvbl9jbG9zaW5nKHNlbGYpOgorICAgICAgICBzZWxm
LnJlc3RhcnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZygpCisgICAgICAgIGNsb3NlX3Rh
c2sgPSBzZWxmLmhhbGZfY2xvc2VfY29ubmVjdGlvbl9sb2NhbCgpCisKKyAgICAgICAgIyBObyBw
aW5nIHNlbnQgYXQgM21zIGJlY2F1c2UgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGlzIGluIHByb2dy
ZXNzLgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAo
NCAqIE1TKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICAgICAgIyBU
aGUga2VlcGFsaXZlIHBpbmcgdGFzayB0ZXJtaW5hdGVkLgorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VsZi5wcm90b2NvbC5rZWVwYWxpdmVfcGluZ190YXNrLmNhbmNlbGxlZCgpKQorCisgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoY2xvc2VfdGFzaykgICMgY2xlYW51cAor
CisgICAgZGVmIHRlc3Rfa2VlcGFsaXZlX3Bpbmdfc3RvcHNfd2hlbl9jb25uZWN0aW9uX2Nsb3Nl
ZChzZWxmKToKKyAgICAgICAgc2VsZi5yZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2VlcGFsaXZlX3Bp
bmcoKQorICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24oKQorCisgICAgICAgICMgVGhlIGtl
ZXBhbGl2ZSBwaW5nIHRhc2sgdGVybWluYXRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNl
bGYucHJvdG9jb2wua2VlcGFsaXZlX3BpbmdfdGFzay5jYW5jZWxsZWQoKSkKKworICAgIGRlZiB0
ZXN0X2tlZXBhbGl2ZV9waW5nX2RvZXNfbm90X2NyYXNoX3doZW5fY29ubmVjdGlvbl9sb3N0KHNl
bGYpOgorICAgICAgICBzZWxmLnJlc3RhcnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZygp
CisgICAgICAgICMgQ2xvZyBpbmNvbWluZyBxdWV1ZS4gVGhpcyBsZXRzIGNvbm5lY3Rpb25fbG9z
dCgpIGFib3J0IHBlbmRpbmcgcGluZ3MKKyAgICAgICAgIyB3aXRoIGEgQ29ubmVjdGlvbkNsb3Nl
ZCBleGNlcHRpb24gYmVmb3JlIHRyYW5zZmVyX2RhdGFfdGFzaworICAgICAgICAjIHRlcm1pbmF0
ZXMgYW5kIGNsb3NlX2Nvbm5lY3Rpb24gY2FuY2VscyBrZWVwYWxpdmVfcGluZ190YXNrLgorICAg
ICAgICBzZWxmLnByb3RvY29sLm1heF9xdWV1ZSA9IDEKKyAgICAgICAgc2VsZi5yZWNlaXZlX2Zy
YW1lKEZyYW1lKFRydWUsIE9QX1RFWFQsIGIiMSIpKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJh
bWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgYiIyIikpCisgICAgICAgICMgUGluZyBpcyBzZW50IGF0
IDNtcy4KKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVw
KDQgKiBNUykpCisgICAgICAgIChwaW5nX3dhaXRlciwpID0gdHVwbGUoc2VsZi5wcm90b2NvbC5w
aW5ncy52YWx1ZXMoKSkKKyAgICAgICAgIyBDb25uZWN0aW9uIGRyb3BzLgorICAgICAgICBzZWxm
LnJlY2VpdmVfZW9mKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LnByb3RvY29sLndhaXRfY2xvc2VkKCkpCisKKyAgICAgICAgIyBUaGUgcGluZyB3YWl0ZXIgcmVj
ZWl2ZXMgYSBDb25uZWN0aW9uQ2xvc2VkIGV4Y2VwdGlvbi4KKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgIHBpbmdfd2FpdGVyLnJl
c3VsdCgpCisgICAgICAgICMgVGhlIGtlZXBhbGl2ZSBwaW5nIHRhc2sgdGVybWluYXRlZCBwcm9w
ZXJseS4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wcm90b2NvbC5rZWVwYWxpdmVf
cGluZ190YXNrLnJlc3VsdCgpKQorCisgICAgICAgICMgVW5jbG9nIGluY29taW5nIHF1ZXVlIHRv
IHRlcm1pbmF0ZSB0aGUgdGVzdCBxdWlja2x5LgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQorCisgICAgZGVmIHRlc3Rfa2VlcGFs
aXZlX3Bpbmdfd2l0aF9ub19waW5nX2ludGVydmFsKHNlbGYpOgorICAgICAgICBzZWxmLnJlc3Rh
cnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZyhwaW5nX2ludGVydmFsPU5vbmUpCisKKyAg
ICAgICAgIyBObyBwaW5nIGlzIHNlbnQgYXQgM21zLgorICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoNCAqIE1TKSkKKyAgICAgICAgc2VsZi5hc3NlcnRO
b0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9rZWVwYWxpdmVfcGluZ193aXRoX25vX3Bpbmdf
dGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5yZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2VlcGFs
aXZlX3BpbmcocGluZ190aW1lb3V0PU5vbmUpCisKKyAgICAgICAgIyBQaW5nIGlzIHNlbnQgYXQg
M21zIGFuZCBub3QgYWNrbm93bGVnZWQuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoYXN5bmNpby5zbGVlcCg0ICogTVMpKQorICAgICAgICAocGluZ18xLCkgPSB0dXBsZShz
ZWxmLnByb3RvY29sLnBpbmdzKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVl
LCBPUF9QSU5HLCBwaW5nXzEpCisKKyAgICAgICAgIyBOZXh0IHBpbmcgaXMgc2VudCBhdCA3bXMg
YW55d2F5LgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xl
ZXAoNCAqIE1TKSkKKyAgICAgICAgcGluZ18xX2FnYWluLCBwaW5nXzIgPSB0dXBsZShzZWxmLnBy
b3RvY29sLnBpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpbmdfMSwgcGluZ18xX2Fn
YWluKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBwaW5n
XzIpCisKKyAgICAgICAgIyBUaGUga2VlcGFsaXZlIHBpbmcgdGFzayBnb2VzIG9uLgorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucHJvdG9jb2wua2VlcGFsaXZlX3BpbmdfdGFzay5kb25l
KCkpCisKKyAgICBkZWYgdGVzdF9rZWVwYWxpdmVfcGluZ191bmV4cGVjdGVkX2Vycm9yKHNlbGYp
OgorICAgICAgICBzZWxmLnJlc3RhcnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZygpCisK
KyAgICAgICAgYXN5bmMgZGVmIHBpbmcoKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigi
Qk9PTSIpCisKKyAgICAgICAgc2VsZi5wcm90b2NvbC5waW5nID0gcGluZworCisgICAgICAgICMg
VGhlIGtlZXBhbGl2ZSBwaW5nIHRhc2sgZmFpbHMgd2hlbiBzZW5kaW5nIGEgcGluZyBhdCAzbXMu
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICog
TVMpKQorCisgICAgICAgICMgVGhlIGtlZXBhbGl2ZSBwaW5nIHRhc2sgaXMgY29tcGxldGUuCisg
ICAgICAgICMgSXQgbG9ncyBhbmQgc3dhbGxvd3MgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29sLmtlZXBhbGl2ZV9waW5nX3Rhc2sucmVzdWx0KCks
IE5vbmUpCisKKyAgICAjIFRlc3QgdGhlIHByb3RvY29sIGxvZ2ljIGZvciBjbG9zaW5nIHRoZSBj
b25uZWN0aW9uLgorCisgICAgZGVmIHRlc3RfbG9jYWxfY2xvc2Uoc2VsZik6CisgICAgICAgICMg
RW11bGF0ZSBob3cgdGhlIHJlbW90ZSBlbmRwb2ludCBhbnN3ZXJzIHRoZSBjbG9zaW5nIGhhbmRz
aGFrZS4KKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9mcmFt
ZSwgc2VsZi5jbG9zZV9mcmFtZSkKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNl
bGYucmVjZWl2ZV9lb2ZfaWZfY2xpZW50KQorCisgICAgICAgICMgUnVuIHRoZSBjbG9zaW5nIGhh
bmRzaGFrZS4KKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3Rv
Y29sLmNsb3NlKHJlYXNvbj0iY2xvc2UiKSkKKworICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rp
b25DbG9zZWQoMTAwMCwgImNsb3NlIikKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQo
KnNlbGYuY2xvc2VfZnJhbWUpCisKKyAgICAgICAgIyBDbG9zaW5nIHRoZSBjb25uZWN0aW9uIGFn
YWluIGlzIGEgbm8tb3AuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2Vs
Zi5wcm90b2NvbC5jbG9zZShyZWFzb249Im9oIG5vZXMhIikpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRDb25uZWN0aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9G
cmFtZVNlbnQoKQorCisgICAgZGVmIHRlc3RfcmVtb3RlX2Nsb3NlKHNlbGYpOgorICAgICAgICAj
IEVtdWxhdGUgaG93IHRoZSByZW1vdGUgZW5kcG9pbnQgaW5pdGlhdGVzIHRoZSBjbG9zaW5nIGhh
bmRzaGFrZS4KKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9m
cmFtZSwgc2VsZi5jbG9zZV9mcmFtZSkKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMs
IHNlbGYucmVjZWl2ZV9lb2ZfaWZfY2xpZW50KQorCisgICAgICAgICMgV2FpdCBmb3Igc29tZSBk
YXRhIGluIG9yZGVyIHRvIHByb2Nlc3MgdGhlIGhhbmRzaGFrZS4KKyAgICAgICAgIyBBZnRlciBy
ZWN2KCkgcmFpc2VzIENvbm5lY3Rpb25DbG9zZWQsIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC4K
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAg
ICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KCpzZWxmLmNsb3NlX2ZyYW1lKQorCisgICAg
ICAgICMgQ2xvc2luZyB0aGUgY29ubmVjdGlvbiBhZ2FpbiBpcyBhIG5vLW9wLgorICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJv
aCBub2VzISIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAwLCAi
Y2xvc2UiKQorICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKworICAgIGRlZiB0ZXN0
X3JlbW90ZV9jbG9zZV9hbmRfY29ubmVjdGlvbl9sb3N0KHNlbGYpOgorICAgICAgICBzZWxmLm1h
a2VfZHJhaW5fc2xvdygpCisgICAgICAgICMgRHJvcCB0aGUgY29ubmVjdGlvbiByaWdodCBhZnRl
ciByZWNlaXZpbmcgYSBjbG9zZSBmcmFtZSwKKyAgICAgICAgIyB3aGljaCBwcmV2ZW50cyBlY2hv
aW5nIHRoZSBjbG9zZSBmcmFtZSBwcm9wZXJseS4KKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1l
KHNlbGYuY2xvc2VfZnJhbWUpCisgICAgICAgIHNlbGYucmVjZWl2ZV9lb2YoKQorCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnROb0xvZ3MoKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50
aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249Im9oIG5vZXMhIikpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisgICAgICAg
IHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KCpzZWxmLmNsb3NlX2ZyYW1lKQorCisgICAgZGVmIHRl
c3Rfc2ltdWx0YW5lb3VzX2Nsb3NlKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgdGhlIGluY29t
aW5nIGNsb3NlIGZyYW1lIHJpZ2h0IGFmdGVyIHNlbGYucHJvdG9jb2wuY2xvc2UoKQorICAgICAg
ICAjIHN0YXJ0cyBleGVjdXRpbmcuIFRoaXMgcmVwcm9kdWNlcyB0aGUgZXJyb3IgZGVzY3JpYmVk
IGluOgorICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9p
c3N1ZXMvMzM5CisgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24oc2VsZi5yZWNlaXZlX2ZyYW1l
LCBzZWxmLnJlbW90ZV9jbG9zZSkKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfc29vbihzZWxmLnJl
Y2VpdmVfZW9mX2lmX2NsaWVudCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJsb2NhbCIpKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAwLCAicmVtb3RlIikKKyAgICAgICAgIyBUaGUgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBzZW5kcyBhIGNsb3NlIGZyYW1lIGluIHJlc3BvbnNlIHRvIHRo
ZQorICAgICAgICAjIGNsb3NlIGZyYW1lIHJlY2VpdmVkIGZyb20gdGhlIHJlbW90ZSBlbmQuIEl0
IHNraXBzIHRoZSBjbG9zZSBmcmFtZQorICAgICAgICAjIHRoYXQgc2hvdWxkIGJlIHNlbnQgYXMg
YSByZXN1bHQgb2YgY2FsbGluZyBjbG9zZSgpLgorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1l
U2VudCgqc2VsZi5yZW1vdGVfY2xvc2UpCisKKyAgICBkZWYgdGVzdF9jbG9zZV9wcmVzZXJ2ZXNf
aW5jb21pbmdfZnJhbWVzKHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUo
VHJ1ZSwgT1BfVEVYVCwgYiJoZWxsbyIpKQorCisgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVy
KE1TLCBzZWxmLnJlY2VpdmVfZnJhbWUsIHNlbGYuY2xvc2VfZnJhbWUpCisgICAgICAgIHNlbGYu
bG9vcC5jYWxsX2xhdGVyKE1TLCBzZWxmLnJlY2VpdmVfZW9mX2lmX2NsaWVudCkKKyAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLmNsb3NlKHJlYXNvbj0i
Y2xvc2UiKSkKKworICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNs
b3NlIikKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoKnNlbGYuY2xvc2VfZnJhbWUp
CisKKyAgICAgICAgbmV4dF9tZXNzYWdlID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
ZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0X21lc3Nh
Z2UsICJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9jbG9zZV9wcm90b2NvbF9lcnJvcihzZWxmKToK
KyAgICAgICAgaW52YWxpZF9jbG9zZV9mcmFtZSA9IEZyYW1lKFRydWUsIE9QX0NMT1NFLCBiIlx4
MDAiKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoaW52YWxpZF9jbG9zZV9mcmFtZSkKKyAg
ICAgICAgc2VsZi5yZWNlaXZlX2VvZl9pZl9jbGllbnQoKQorICAgICAgICBzZWxmLnJ1bl9sb29w
X29uY2UoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9j
b2wuY2xvc2UocmVhc29uPSJjbG9zZSIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlv
bkZhaWxlZCgxMDAyLCAiIikKKworICAgIGRlZiB0ZXN0X2Nsb3NlX2Nvbm5lY3Rpb25fbG9zdChz
ZWxmKToKKyAgICAgICAgc2VsZi5yZWNlaXZlX2VvZigpCisgICAgICAgIHNlbGYucnVuX2xvb3Bf
b25jZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2Nv
bC5jbG9zZShyZWFzb249ImNsb3NlIikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9u
RmFpbGVkKDEwMDYsICIiKQorCisgICAgZGVmIHRlc3RfbG9jYWxfY2xvc2VfZHVyaW5nX3JlY3Yo
c2VsZik6CisgICAgICAgIHJlY3YgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2soc2VsZi5wcm90b2Nv
bC5yZWN2KCkpCisKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2
ZV9mcmFtZSwgc2VsZi5jbG9zZV9mcmFtZSkKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIo
TVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZfY2xpZW50KQorCisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikpCisKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocmVjdikKKworICAgICAgICBzZWxmLmFz
c2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNsb3NlIikKKworICAgICMgVGhlcmUgaXMgbm8g
dGVzdF9yZW1vdGVfY2xvc2VfZHVyaW5nX3JlY3YgYmVjYXVzZSBpdCB3b3VsZCBiZSBpZGVudGlj
YWwKKyAgICAjIHRvIHRlc3RfcmVtb3RlX2Nsb3NlLgorCisgICAgZGVmIHRlc3RfcmVtb3RlX2Ns
b3NlX2R1cmluZ19zZW5kKHNlbGYpOgorICAgICAgICBzZWxmLm1ha2VfZHJhaW5fc2xvdygpCisg
ICAgICAgIHNlbmQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2soc2VsZi5wcm90b2NvbC5zZW5kKCJo
ZWxsbyIpKQorCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShzZWxmLmNsb3NlX2ZyYW1lKQor
ICAgICAgICBzZWxmLnJlY2VpdmVfZW9mKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZW5kKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAw
LCAiY2xvc2UiKQorCisgICAgIyBUaGVyZSBpcyBubyB0ZXN0X2xvY2FsX2Nsb3NlX2R1cmluZ19z
ZW5kIGJlY2F1c2UgdGhpcyBjYW5ub3QgcmVhbGx5CisgICAgIyBoYXBwZW4sIGNvbnNpZGVyaW5n
IHRoYXQgd3JpdGVzIGFyZSBzZXJpYWxpemVkLgorCisKK2NsYXNzIFNlcnZlclRlc3RzKENvbW1v
blRlc3RzLCBBc3luY2lvVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
c3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYucHJvdG9jb2wuaXNfY2xpZW50ID0gRmFsc2UK
KyAgICAgICAgc2VsZi5wcm90b2NvbC5zaWRlID0gInNlcnZlciIKKworICAgIGRlZiB0ZXN0X2xv
Y2FsX2Nsb3NlX3NlbmRfY2xvc2VfZnJhbWVfdGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5w
cm90b2NvbC5jbG9zZV90aW1lb3V0ID0gMTAgKiBNUworICAgICAgICBzZWxmLm1ha2VfZHJhaW5f
c2xvdyg1MCAqIE1TKQorICAgICAgICAjIElmIHdlIGNhbid0IHNlbmQgYSBjbG9zZSBmcmFtZSwg
dGltZSBvdXQgaW4gMTBtcy4KKyAgICAgICAgIyBDaGVjayB0aGUgdGltaW5nIHdpdGhpbiAtMS8r
OW1zIGZvciByb2J1c3RuZXNzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Q29tcGxldGVzV2l0
aGluKDkgKiBNUywgMTkgKiBNUyk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJjbG9zZSIpKQorICAgICAgICBzZWxm
LmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwNiwgIiIpCisKKyAgICBkZWYgdGVzdF9sb2NhbF9j
bG9zZV9yZWNlaXZlX2Nsb3NlX2ZyYW1lX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYucHJv
dG9jb2wuY2xvc2VfdGltZW91dCA9IDEwICogTVMKKyAgICAgICAgIyBJZiB0aGUgY2xpZW50IGRv
ZXNuJ3Qgc2VuZCBhIGNsb3NlIGZyYW1lLCB0aW1lIG91dCBpbiAxMG1zLgorICAgICAgICAjIENo
ZWNrIHRoZSB0aW1pbmcgd2l0aGluIC0xLys5bXMgZm9yIHJvYnVzdG5lc3MuCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRDb21wbGV0ZXNXaXRoaW4oOSAqIE1TLCAxOSAqIE1TKToKKyAgICAgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFz
b249ImNsb3NlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDA2LCAi
IikKKworICAgIGRlZiB0ZXN0X2xvY2FsX2Nsb3NlX2Nvbm5lY3Rpb25fbG9zdF90aW1lb3V0X2Fm
dGVyX3dyaXRlX2VvZihzZWxmKToKKyAgICAgICAgc2VsZi5wcm90b2NvbC5jbG9zZV90aW1lb3V0
ID0gMTAgKiBNUworICAgICAgICAjIElmIHRoZSBjbGllbnQgZG9lc24ndCBjbG9zZSBpdHMgc2lk
ZSBvZiB0aGUgVENQIGNvbm5lY3Rpb24gYWZ0ZXIgd2UKKyAgICAgICAgIyBoYWxmLWNsb3NlIG91
ciBzaWRlIHdpdGggd3JpdGVfZW9mKCksIHRpbWUgb3V0IGluIDEwbXMuCisgICAgICAgICMgQ2hl
Y2sgdGhlIHRpbWluZyB3aXRoaW4gLTEvKzltcyBmb3Igcm9idXN0bmVzcy4KKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydENvbXBsZXRlc1dpdGhpbig5ICogTVMsIDE5ICogTVMpOgorICAgICAgICAg
ICAgIyBIQUNLOiBkaXNhYmxlIHdyaXRlX2VvZiA9PiBvdGhlciBlbmQgZHJvcHMgY29ubmVjdGlv
biBlbXVsYXRpb24uCisgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC5fZW9mID0gVHJ1ZQorICAg
ICAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKHNlbGYuY2xvc2VfZnJhbWUpCisgICAgICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29u
PSJjbG9zZSIpKQorICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNs
b3NlIikKKworICAgIGRlZiB0ZXN0X2xvY2FsX2Nsb3NlX2Nvbm5lY3Rpb25fbG9zdF90aW1lb3V0
X2FmdGVyX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLmNsb3NlX3RpbWVvdXQg
PSAxMCAqIE1TCisgICAgICAgICMgSWYgdGhlIGNsaWVudCBkb2Vzbid0IGNsb3NlIGl0cyBzaWRl
IG9mIHRoZSBUQ1AgY29ubmVjdGlvbiBhZnRlciB3ZQorICAgICAgICAjIGhhbGYtY2xvc2Ugb3Vy
IHNpZGUgd2l0aCB3cml0ZV9lb2YoKSBhbmQgY2xvc2UgaXQgd2l0aCBjbG9zZSgpLCB0aW1lCisg
ICAgICAgICMgb3V0IGluIDIwbXMuCisgICAgICAgICMgQ2hlY2sgdGhlIHRpbWluZyB3aXRoaW4g
LTEvKzltcyBmb3Igcm9idXN0bmVzcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENvbXBsZXRl
c1dpdGhpbigxOSAqIE1TLCAyOSAqIE1TKToKKyAgICAgICAgICAgICMgSEFDSzogZGlzYWJsZSB3
cml0ZV9lb2YgPT4gb3RoZXIgZW5kIGRyb3BzIGNvbm5lY3Rpb24gZW11bGF0aW9uLgorICAgICAg
ICAgICAgc2VsZi50cmFuc3BvcnQuX2VvZiA9IFRydWUKKyAgICAgICAgICAgICMgSEFDSzogZGlz
YWJsZSBjbG9zZSA9PiBvdGhlciBlbmQgZHJvcHMgY29ubmVjdGlvbiBlbXVsYXRpb24uCisgICAg
ICAgICAgICBzZWxmLnRyYW5zcG9ydC5fY2xvc2luZyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYu
cmVjZWl2ZV9mcmFtZShzZWxmLmNsb3NlX2ZyYW1lKQorICAgICAgICAgICAgc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLmNsb3NlKHJlYXNvbj0iY2xvc2UiKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisKKworY2xh
c3MgQ2xpZW50VGVzdHMoQ29tbW9uVGVzdHMsIEFzeW5jaW9UZXN0Q2FzZSk6CisgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5wcm90b2Nv
bC5pc19jbGllbnQgPSBUcnVlCisgICAgICAgIHNlbGYucHJvdG9jb2wuc2lkZSA9ICJjbGllbnQi
CisKKyAgICBkZWYgdGVzdF9sb2NhbF9jbG9zZV9zZW5kX2Nsb3NlX2ZyYW1lX3RpbWVvdXQoc2Vs
Zik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xvc2VfdGltZW91dCA9IDEwICogTVMKKyAgICAg
ICAgc2VsZi5tYWtlX2RyYWluX3Nsb3coNTAgKiBNUykKKyAgICAgICAgIyBJZiB3ZSBjYW4ndCBz
ZW5kIGEgY2xvc2UgZnJhbWUsIHRpbWUgb3V0IGluIDIwbXMuCisgICAgICAgICMgLSAxMG1zIHdh
aXRpbmcgZm9yIHNlbmRpbmcgYSBjbG9zZSBmcmFtZQorICAgICAgICAjIC0gMTBtcyB3YWl0aW5n
IGZvciByZWNlaXZpbmcgYSBoYWxmLWNsb3NlCisgICAgICAgICMgQ2hlY2sgdGhlIHRpbWluZyB3
aXRoaW4gLTEvKzltcyBmb3Igcm9idXN0bmVzcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENv
bXBsZXRlc1dpdGhpbigxOSAqIE1TLCAyOSAqIE1TKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDA2LCAiIikKKworICAgIGRlZiB0
ZXN0X2xvY2FsX2Nsb3NlX3JlY2VpdmVfY2xvc2VfZnJhbWVfdGltZW91dChzZWxmKToKKyAgICAg
ICAgc2VsZi5wcm90b2NvbC5jbG9zZV90aW1lb3V0ID0gMTAgKiBNUworICAgICAgICAjIElmIHRo
ZSBzZXJ2ZXIgZG9lc24ndCBzZW5kIGEgY2xvc2UgZnJhbWUsIHRpbWUgb3V0IGluIDIwbXM6Cisg
ICAgICAgICMgLSAxMG1zIHdhaXRpbmcgZm9yIHJlY2VpdmluZyBhIGNsb3NlIGZyYW1lCisgICAg
ICAgICMgLSAxMG1zIHdhaXRpbmcgZm9yIHJlY2VpdmluZyBhIGhhbGYtY2xvc2UKKyAgICAgICAg
IyBDaGVjayB0aGUgdGltaW5nIHdpdGhpbiAtMS8rOW1zIGZvciByb2J1c3RuZXNzLgorICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0Q29tcGxldGVzV2l0aGluKDE5ICogTVMsIDI5ICogTVMpOgorICAg
ICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLmNsb3Nl
KHJlYXNvbj0iY2xvc2UiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEw
MDYsICIiKQorCisgICAgZGVmIHRlc3RfbG9jYWxfY2xvc2VfY29ubmVjdGlvbl9sb3N0X3RpbWVv
dXRfYWZ0ZXJfd3JpdGVfZW9mKHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLmNsb3NlX3Rp
bWVvdXQgPSAxMCAqIE1TCisgICAgICAgICMgSWYgdGhlIHNlcnZlciBkb2Vzbid0IGhhbGYtY2xv
c2UgaXRzIHNpZGUgb2YgdGhlIFRDUCBjb25uZWN0aW9uCisgICAgICAgICMgYWZ0ZXIgd2Ugc2Vu
ZCBhIGNsb3NlIGZyYW1lLCB0aW1lIG91dCBpbiAyMG1zOgorICAgICAgICAjIC0gMTBtcyB3YWl0
aW5nIGZvciByZWNlaXZpbmcgYSBoYWxmLWNsb3NlCisgICAgICAgICMgLSAxMG1zIHdhaXRpbmcg
Zm9yIHJlY2VpdmluZyBhIGNsb3NlIGFmdGVyIHdyaXRlX2VvZgorICAgICAgICAjIENoZWNrIHRo
ZSB0aW1pbmcgd2l0aGluIC0xLys5bXMgZm9yIHJvYnVzdG5lc3MuCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRDb21wbGV0ZXNXaXRoaW4oMTkgKiBNUywgMjkgKiBNUyk6CisgICAgICAgICAgICAj
IEhBQ0s6IGRpc2FibGUgd3JpdGVfZW9mID0+IG90aGVyIGVuZCBkcm9wcyBjb25uZWN0aW9uIGVt
dWxhdGlvbi4KKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0Ll9lb2YgPSBUcnVlCisgICAgICAg
ICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoc2VsZi5jbG9zZV9mcmFtZSkKKyAgICAgICAgICAgIHNl
bGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249ImNs
b3NlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAwLCAiY2xvc2Ui
KQorCisgICAgZGVmIHRlc3RfbG9jYWxfY2xvc2VfY29ubmVjdGlvbl9sb3N0X3RpbWVvdXRfYWZ0
ZXJfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xvc2VfdGltZW91dCA9IDEw
ICogTVMKKyAgICAgICAgIyBJZiB0aGUgY2xpZW50IGRvZXNuJ3QgY2xvc2UgaXRzIHNpZGUgb2Yg
dGhlIFRDUCBjb25uZWN0aW9uIGFmdGVyIHdlCisgICAgICAgICMgaGFsZi1jbG9zZSBvdXIgc2lk
ZSB3aXRoIHdyaXRlX2VvZigpIGFuZCBjbG9zZSBpdCB3aXRoIGNsb3NlKCksIHRpbWUKKyAgICAg
ICAgIyBvdXQgaW4gMjBtcy4KKyAgICAgICAgIyAtIDEwbXMgd2FpdGluZyBmb3IgcmVjZWl2aW5n
IGEgaGFsZi1jbG9zZQorICAgICAgICAjIC0gMTBtcyB3YWl0aW5nIGZvciByZWNlaXZpbmcgYSBj
bG9zZSBhZnRlciB3cml0ZV9lb2YKKyAgICAgICAgIyAtIDEwbXMgd2FpdGluZyBmb3IgcmVjZWl2
aW5nIGEgY2xvc2UgYWZ0ZXIgY2xvc2UKKyAgICAgICAgIyBDaGVjayB0aGUgdGltaW5nIHdpdGhp
biAtMS8rOW1zIGZvciByb2J1c3RuZXNzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Q29tcGxl
dGVzV2l0aGluKDI5ICogTVMsIDM5ICogTVMpOgorICAgICAgICAgICAgIyBIQUNLOiBkaXNhYmxl
IHdyaXRlX2VvZiA9PiBvdGhlciBlbmQgZHJvcHMgY29ubmVjdGlvbiBlbXVsYXRpb24uCisgICAg
ICAgICAgICBzZWxmLnRyYW5zcG9ydC5fZW9mID0gVHJ1ZQorICAgICAgICAgICAgIyBIQUNLOiBk
aXNhYmxlIGNsb3NlID0+IG90aGVyIGVuZCBkcm9wcyBjb25uZWN0aW9uIGVtdWxhdGlvbi4KKyAg
ICAgICAgICAgIHNlbGYudHJhbnNwb3J0Ll9jbG9zaW5nID0gVHJ1ZQorICAgICAgICAgICAgc2Vs
Zi5yZWNlaXZlX2ZyYW1lKHNlbGYuY2xvc2VfZnJhbWUpCisgICAgICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJjbG9zZSIpKQor
ICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNsb3NlIikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X3VyaS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy90ZXN0cy90ZXN0X3VyaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmU0MTg2MGI4ZTRjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0
cy90ZXN0X3VyaS5weQpAQCAtMCwwICsxLDMzIEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3
ZWJzb2NrZXRzLmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRVUkkKK2Zyb20gd2Vic29ja2V0cy51
cmkgaW1wb3J0ICoKKworCitWQUxJRF9VUklTID0gWworICAgICgid3M6Ly9sb2NhbGhvc3QvIiwg
KEZhbHNlLCAibG9jYWxob3N0IiwgODAsICIvIiwgTm9uZSkpLAorICAgICgid3NzOi8vbG9jYWxo
b3N0LyIsIChUcnVlLCAibG9jYWxob3N0IiwgNDQzLCAiLyIsIE5vbmUpKSwKKyAgICAoIndzOi8v
bG9jYWxob3N0L3BhdGg/cXVlcnkiLCAoRmFsc2UsICJsb2NhbGhvc3QiLCA4MCwgIi9wYXRoP3F1
ZXJ5IiwgTm9uZSkpLAorICAgICgiV1M6Ly9MT0NBTEhPU1QvUEFUSD9RVUVSWSIsIChGYWxzZSwg
ImxvY2FsaG9zdCIsIDgwLCAiL1BBVEg/UVVFUlkiLCBOb25lKSksCisgICAgKCJ3czovL3VzZXI6
cGFzc0Bsb2NhbGhvc3QvIiwgKEZhbHNlLCAibG9jYWxob3N0IiwgODAsICIvIiwgKCJ1c2VyIiwg
InBhc3MiKSkpLAorXQorCitJTlZBTElEX1VSSVMgPSBbCisgICAgImh0dHA6Ly9sb2NhbGhvc3Qv
IiwKKyAgICAiaHR0cHM6Ly9sb2NhbGhvc3QvIiwKKyAgICAid3M6Ly9sb2NhbGhvc3QvcGF0aCNm
cmFnbWVudCIsCisgICAgIndzOi8vdXNlckBsb2NhbGhvc3QvIiwKK10KKworCitjbGFzcyBVUklU
ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKKyAg
ICAgICAgZm9yIHVyaSwgcGFyc2VkIGluIFZBTElEX1VSSVM6CisgICAgICAgICAgICB3aXRoIHNl
bGYuc3ViVGVzdCh1cmk9dXJpKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cnNlX3VyaSh1cmkpLCBwYXJzZWQpCisKKyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAg
ICAgZm9yIHVyaSBpbiBJTlZBTElEX1VSSVM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVz
dCh1cmk9dXJpKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFs
aWRVUkkpOgorICAgICAgICAgICAgICAgICAgICBwYXJzZV91cmkodXJpKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVz
dHMvdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmU1NTcwZjA5OGJhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90
ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsOTIgQEAKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCB1
bml0dGVzdAorCitmcm9tIHdlYnNvY2tldHMudXRpbHMgaW1wb3J0IGFwcGx5X21hc2sgYXMgcHlf
YXBwbHlfbWFzaworCisKK2NsYXNzIFV0aWxzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAg
IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgYXBwbHlfbWFzaygqYXJncywgKiprd2FyZ3MpOgorICAg
ICAgICByZXR1cm4gcHlfYXBwbHlfbWFzaygqYXJncywgKiprd2FyZ3MpCisKKyAgICBhcHBseV9t
YXNrX3R5cGVfY29tYm9zID0gbGlzdChpdGVydG9vbHMucHJvZHVjdChbYnl0ZXMsIGJ5dGVhcnJh
eV0sIHJlcGVhdD0yKSkKKworICAgIGFwcGx5X21hc2tfdGVzdF92YWx1ZXMgPSBbCisgICAgICAg
IChiIiIsIGIiMTIzNCIsIGIiIiksCisgICAgICAgIChiImFCY0RlIiwgYiJceDAwXHgwMFx4MDBc
eDAwIiwgYiJhQmNEZSIpLAorICAgICAgICAoYiJhYmNkQUJDRCIsIGIiMTIzNCIsIGIiUFBQUHBw
cHAiKSwKKyAgICAgICAgKGIiYWJjZEFCQ0QiICogMTAsIGIiMTIzNCIsIGIiUFBQUHBwcHAiICog
MTApLAorICAgIF0KKworICAgIGRlZiB0ZXN0X2FwcGx5X21hc2soc2VsZik6CisgICAgICAgIGZv
ciBkYXRhX3R5cGUsIG1hc2tfdHlwZSBpbiBzZWxmLmFwcGx5X21hc2tfdHlwZV9jb21ib3M6Cisg
ICAgICAgICAgICBmb3IgZGF0YV9pbiwgbWFzaywgZGF0YV9vdXQgaW4gc2VsZi5hcHBseV9tYXNr
X3Rlc3RfdmFsdWVzOgorICAgICAgICAgICAgICAgIGRhdGFfaW4sIG1hc2sgPSBkYXRhX3R5cGUo
ZGF0YV9pbiksIG1hc2tfdHlwZShtYXNrKQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1
YlRlc3QoZGF0YV9pbj1kYXRhX2luLCBtYXNrPW1hc2spOgorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBzZWxmLmFwcGx5X21hc2soZGF0YV9pbiwgbWFzaykKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGRhdGFfb3V0KQorCisgICAgZGVmIHRlc3RfYXBw
bHlfbWFza19tZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBmb3IgZGF0YV90eXBlLCBtYXNrX3R5
cGUgaW4gc2VsZi5hcHBseV9tYXNrX3R5cGVfY29tYm9zOgorICAgICAgICAgICAgZm9yIGRhdGFf
aW4sIG1hc2ssIGRhdGFfb3V0IGluIHNlbGYuYXBwbHlfbWFza190ZXN0X3ZhbHVlczoKKyAgICAg
ICAgICAgICAgICBkYXRhX2luLCBtYXNrID0gZGF0YV90eXBlKGRhdGFfaW4pLCBtYXNrX3R5cGUo
bWFzaykKKyAgICAgICAgICAgICAgICBkYXRhX2luLCBtYXNrID0gbWVtb3J5dmlldyhkYXRhX2lu
KSwgbWVtb3J5dmlldyhtYXNrKQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qo
ZGF0YV9pbj1kYXRhX2luLCBtYXNrPW1hc2spOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBzZWxmLmFwcGx5X21hc2soZGF0YV9pbiwgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXN1bHQsIGRhdGFfb3V0KQorCisgICAgZGVmIHRlc3RfYXBwbHlfbWFz
a19ub25fY29udGlndW91c19tZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBmb3IgZGF0YV90eXBl
LCBtYXNrX3R5cGUgaW4gc2VsZi5hcHBseV9tYXNrX3R5cGVfY29tYm9zOgorICAgICAgICAgICAg
Zm9yIGRhdGFfaW4sIG1hc2ssIGRhdGFfb3V0IGluIHNlbGYuYXBwbHlfbWFza190ZXN0X3ZhbHVl
czoKKyAgICAgICAgICAgICAgICBkYXRhX2luLCBtYXNrID0gZGF0YV90eXBlKGRhdGFfaW4pLCBt
YXNrX3R5cGUobWFzaykKKyAgICAgICAgICAgICAgICBkYXRhX2luLCBtYXNrID0gbWVtb3J5dmll
dyhkYXRhX2luKSwgbWVtb3J5dmlldyhtYXNrKQorICAgICAgICAgICAgICAgIGRhdGFfaW4sIG1h
c2sgPSBkYXRhX2luWzo6LTFdLCBtYXNrWzo6LTFdCisgICAgICAgICAgICAgICAgZGF0YV9vdXQg
PSBkYXRhX291dFs6Oi0xXQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0
YV9pbj1kYXRhX2luLCBtYXNrPW1hc2spOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBz
ZWxmLmFwcGx5X21hc2soZGF0YV9pbiwgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXN1bHQsIGRhdGFfb3V0KQorCisgICAgZGVmIHRlc3RfYXBwbHlfbWFza19j
aGVja19pbnB1dF90eXBlcyhzZWxmKToKKyAgICAgICAgZm9yIGRhdGFfaW4sIG1hc2sgaW4gWyhO
b25lLCBOb25lKSwgKGIiYWJjZCIsIE5vbmUpLCAoTm9uZSwgYiJhYmNkIildOgorICAgICAgICAg
ICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YV9pbj1kYXRhX2luLCBtYXNrPW1hc2spOgorICAgICAg
ICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5hcHBseV9tYXNrKGRhdGFfaW4sIG1hc2spCisKKyAgICBkZWYgdGVzdF9h
cHBseV9tYXNrX2NoZWNrX21hc2tfbGVuZ3RoKHNlbGYpOgorICAgICAgICBmb3IgZGF0YV9pbiwg
bWFzayBpbiBbCisgICAgICAgICAgICAoYiIiLCBiIiIpLAorICAgICAgICAgICAgKGIiYWJjZCIs
IGIiMTIzIiksCisgICAgICAgICAgICAoYiIiLCBiImFCY0RlIiksCisgICAgICAgICAgICAoYiIx
MjM0NTY3OCIsIGIiMTIzNDU2NzgiKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5zdWJUZXN0KGRhdGFfaW49ZGF0YV9pbiwgbWFzaz1tYXNrKToKKyAgICAgICAgICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLmFwcGx5X21hc2soZGF0YV9pbiwgbWFzaykKKworCit0cnk6CisgICAgZnJvbSB3ZWJzb2Nr
ZXRzLnNwZWVkdXBzIGltcG9ydCBhcHBseV9tYXNrIGFzIGNfYXBwbHlfbWFzaworZXhjZXB0IElt
cG9ydEVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgcGFzcworZWxzZToKKworICAgIGNs
YXNzIFNwZWVkdXBzVGVzdHMoVXRpbHNUZXN0cyk6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAg
ICAgICAgZGVmIGFwcGx5X21hc2soKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVy
biBjX2FwcGx5X21hc2soKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGRlZiB0ZXN0X2FwcGx5
X21hc2tfbm9uX2NvbnRpZ3VvdXNfbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgICAgIGZvciBk
YXRhX3R5cGUsIG1hc2tfdHlwZSBpbiBzZWxmLmFwcGx5X21hc2tfdHlwZV9jb21ib3M6CisgICAg
ICAgICAgICAgICAgZm9yIGRhdGFfaW4sIG1hc2ssIGRhdGFfb3V0IGluIHNlbGYuYXBwbHlfbWFz
a190ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwgbWFzayA9IGRhdGFf
dHlwZShkYXRhX2luKSwgbWFza190eXBlKG1hc2spCisgICAgICAgICAgICAgICAgICAgIGRhdGFf
aW4sIG1hc2sgPSBtZW1vcnl2aWV3KGRhdGFfaW4pLCBtZW1vcnl2aWV3KG1hc2spCisgICAgICAg
ICAgICAgICAgICAgIGRhdGFfaW4sIG1hc2sgPSBkYXRhX2luWzo6LTFdLCBtYXNrWzo6LTFdCisg
ICAgICAgICAgICAgICAgICAgIGRhdGFfb3V0ID0gZGF0YV9vdXRbOjotMV0KKworICAgICAgICAg
ICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhX2luPWRhdGFfaW4sIG1hc2s9bWFzayk6
CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBDIGV4dGVuc2lvbiBvbmx5IHN1cHBvcnRz
IGNvbnRpZ3VvdXMgbWVtb3J5dmlld3MuCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5hcHBseV9tYXNrKGRhdGFfaW4sIG1hc2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvdGVzdHMvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdXRpbHMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ODNhOTFlZGYwNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdXRpbHMucHkKQEAgLTAsMCArMSw5MyBA
QAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgZnVuY3Rvb2xzCitp
bXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CisK
KworY2xhc3MgQXN5bmNpb1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAg
ICBCYXNlIGNsYXNzIGZvciB0ZXN0cyB0aGF0IHNldHMgdXAgYW4gaXNvbGF0ZWQgZXZlbnQgbG9v
cCBmb3IgZWFjaCB0ZXN0LgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X3N1YmNsYXNzX18o
Y2xzLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBDb252ZXJ0IHRlc3QgY29yb3V0
aW5lcyB0byB0ZXN0IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHN1cHBvcnRzIGFzeWNocm9u
b3VzIHRlc3RzIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgIiIiCisgICAgICAgIHN1cGVyKCku
X19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgIGZvciBuYW1lIGluIHVuaXR0ZXN0
LmRlZmF1bHRUZXN0TG9hZGVyLmdldFRlc3RDYXNlTmFtZXMoY2xzKToKKyAgICAgICAgICAgIHRl
c3QgPSBnZXRhdHRyKGNscywgbmFtZSkKKyAgICAgICAgICAgIGlmIGFzeW5jaW8uaXNjb3JvdXRp
bmVmdW5jdGlvbih0ZXN0KToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKGNscywgbmFtZSwgY2xz
LmNvbnZlcnRfYXN5bmNfdG9fc3luYyh0ZXN0KSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBk
ZWYgY29udmVydF9hc3luY190b19zeW5jKHRlc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29u
dmVydCBhIHRlc3QgY29yb3V0aW5lIHRvIGEgdGVzdCBmdW5jdGlvbi4KKworICAgICAgICAiIiIK
KworICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKHRlc3QpCisgICAgICAgIGRlZiB0ZXN0X2Z1bmMo
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHRlc3Qoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKSkKKworICAgICAgICBy
ZXR1cm4gdGVzdF9mdW5jCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCku
c2V0VXAoKQorICAgICAgICBzZWxmLmxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKKyAg
ICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChzZWxmLmxvb3ApCisKKyAgICBkZWYgdGVhckRv
d24oc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5jbG9zZSgpCisgICAgICAgIHN1cGVyKCkudGVh
ckRvd24oKQorCisgICAgZGVmIHJ1bl9sb29wX29uY2Uoc2VsZik6CisgICAgICAgICMgUHJvY2Vz
cyBjYWxsYmFja3Mgc2NoZWR1bGVkIHdpdGggY2FsbF9zb29uIGJ5IGFwcGVuZGluZyBhIGNhbGxi
YWNrCisgICAgICAgICMgdG8gc3RvcCB0aGUgZXZlbnQgbG9vcCB0aGVuIHJ1bm5pbmcgaXQgdW50
aWwgaXQgaGl0cyB0aGF0IGNhbGxiYWNrLgorICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29uKHNl
bGYubG9vcC5zdG9wKQorICAgICAgICBzZWxmLmxvb3AucnVuX2ZvcmV2ZXIoKQorCisgICAgQGNv
bnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgYXNzZXJ0Tm9Mb2dzKHNlbGYsIGxvZ2dl
cj0id2Vic29ja2V0cyIsIGxldmVsPWxvZ2dpbmcuRVJST1IpOgorICAgICAgICAiIiIKKyAgICAg
ICAgTm8gbWVzc2FnZSBpcyBsb2dnZWQgb24gdGhlIGdpdmVuIGxvZ2dlciB3aXRoIGF0IGxlYXN0
IHRoZSBnaXZlbiBsZXZlbC4KKworICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dExvZ3MobG9nZ2VyLCBsZXZlbCkgYXMgbG9nczoKKyAgICAgICAgICAgICMgV2Ugd2FudCB0byB0
ZXN0IHRoYXQgbm8gbG9nIG1lc3NhZ2UgaXMgZW1pdHRlZAorICAgICAgICAgICAgIyBidXQgYXNz
ZXJ0TG9ncyBleHBlY3RzIGF0IGxlYXN0IG9uZSBsb2cgbWVzc2FnZS4KKyAgICAgICAgICAgIGxv
Z2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcikubG9nKGxldmVsLCAiZHVtbXkiKQorICAgICAgICAgICAg
eWllbGQKKworICAgICAgICBsZXZlbF9uYW1lID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUobGV2ZWwp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9ncy5vdXRwdXQsIFtmIntsZXZlbF9uYW1lfTp7
bG9nZ2VyfTpkdW1teSJdKQorCisgICAgZGVmIGFzc2VydERlcHJlY2F0aW9uV2FybmluZ3Moc2Vs
ZiwgcmVjb3JkZWRfd2FybmluZ3MsIGV4cGVjdGVkX3dhcm5pbmdzKToKKyAgICAgICAgIiIiCisg
ICAgICAgIENoZWNrIHJlY29yZGVkIGRlcHJlY2F0aW9uIHdhcm5pbmdzIG1hdGNoIGEgbGlzdCBv
ZiBleHBlY3RlZCBtZXNzYWdlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocmVjb3JkZWRfd2FybmluZ3MpLCBsZW4oZXhwZWN0ZWRfd2FybmluZ3MpKQorICAg
ICAgICBmb3IgcmVjb3JkZWQsIGV4cGVjdGVkIGluIHppcChyZWNvcmRlZF93YXJuaW5ncywgZXhw
ZWN0ZWRfd2FybmluZ3MpOgorICAgICAgICAgICAgYWN0dWFsID0gcmVjb3JkZWQubWVzc2FnZQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYWN0dWFsKSwgZXhwZWN0ZWQpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYWN0dWFsKSwgRGVwcmVjYXRpb25XYXJuaW5n
KQorCisKKyMgVW5pdCBmb3IgdGltZW91dHMuIE1heSBiZSBpbmNyZWFzZWQgb24gc2xvdyBtYWNo
aW5lcyBieSBzZXR0aW5nIHRoZQorIyBXRUJTT0NLRVRTX1RFU1RTX1RJTUVPVVRfRkFDVE9SIGVu
dmlyb25tZW50IHZhcmlhYmxlLgorTVMgPSAwLjAwMSAqIGludChvcy5lbnZpcm9uLmdldCgiV0VC
U09DS0VUU19URVNUU19USU1FT1VUX0ZBQ1RPUiIsIDEpKQorCisjIGFzeW5jaW8ncyBkZWJ1ZyBt
b2RlIGhhcyBhIDEweCBwZXJmb3JtYW5jZSBwZW5hbHR5IGZvciB0aGlzIHRlc3Qgc3VpdGUuCitp
ZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OQVNZTkNJT0RFQlVHIik6ICAjIHByYWdtYTogbm8gY292
ZXIKKyAgICBNUyAqPSAxMAorCisjIEVuc3VyZSB0aGF0IHRpbWVvdXRzIGFyZSBsYXJnZXIgdGhh
biB0aGUgY2xvY2sncyByZXNvbHV0aW9uIChmb3IgV2luZG93cykuCitNUyA9IG1heChNUywgMi41
ICogdGltZS5nZXRfY2xvY2tfaW5mbygibW9ub3RvbmljIikucmVzb2x1dGlvbikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy90b3guaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3RveC5pbmkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MjVlMzQwNjFmZjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdG94LmluaQpAQCAtMCwwICsxLDI4IEBACitb
dG94XQorZW52bGlzdCA9IHB5MzYscHkzNyxweTM4LGNvdmVyYWdlLGJsYWNrLGZsYWtlOCxpc29y
dCxteXB5CisKK1t0ZXN0ZW52XQorY29tbWFuZHMgPSBweXRob24gLVcgZGVmYXVsdCAtbSB1bml0
dGVzdCB7cG9zYXJnc30KKworW3Rlc3RlbnY6Y292ZXJhZ2VdCitjb21tYW5kcyA9CisgICAgcHl0
aG9uIC1tIGNvdmVyYWdlIGVyYXNlCisgICAgcHl0aG9uIC1XIGRlZmF1bHQgLW0gY292ZXJhZ2Ug
cnVuIC1tIHVuaXR0ZXN0IHtwb3NhcmdzfQorICAgIHB5dGhvbiAtbSBjb3ZlcmFnZSByZXBvcnQg
LS1zaG93LW1pc3NpbmcgLS1mYWlsLXVuZGVyPTEwMAorZGVwcyA9IGNvdmVyYWdlCisKK1t0ZXN0
ZW52OmJsYWNrXQorY29tbWFuZHMgPSBibGFjayAtLWNoZWNrIHNyYyB0ZXN0cworZGVwcyA9IGJs
YWNrCisKK1t0ZXN0ZW52OmZsYWtlOF0KK2NvbW1hbmRzID0gZmxha2U4IHNyYyB0ZXN0cworZGVw
cyA9IGZsYWtlOAorCitbdGVzdGVudjppc29ydF0KK2NvbW1hbmRzID0gaXNvcnQgLS1jaGVjay1v
bmx5IC0tcmVjdXJzaXZlIHNyYyB0ZXN0cworZGVwcyA9IGlzb3J0CisKK1t0ZXN0ZW52Om15cHld
Citjb21tYW5kcyA9IG15cHkgLS1zdHJpY3Qgc3JjCitkZXBzID0gbXlweQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwLy5mbGFrZTggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvLmZsYWtlOApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc5MGMxMDlmZGJlZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvemlwcC8uZmxha2U4CkBAIC0wLDAgKzEsOSBAQAorW2ZsYWtlOF0KK21heC1saW5lLWxlbmd0
aCA9IDg4CitpZ25vcmUgPQorCSMgVzUwMyB2aW9sYXRlcyBzcGVjIGh0dHBzOi8vZ2l0aHViLmNv
bS9QeUNRQS9weWNvZGVzdHlsZS9pc3N1ZXMvNTEzCisJVzUwMworCSMgVzUwNCBoYXMgaXNzdWVz
IGh0dHBzOi8vZ2l0aHViLmNvbS9PQ0EvbWFpbnRhaW5lci1xdWFsaXR5LXRvb2xzL2lzc3Vlcy81
NDUKKwlXNTA0CisJIyBCbGFjayBjcmVhdGVzIHdoaXRlc3BhY2UgYmVmb3JlIGNvbG9uCisJRTIw
MwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS96aXBwLy5wcmUtY29tbWl0LWNvbmZpZy55YW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96
aXBwLy5wcmUtY29tbWl0LWNvbmZpZy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uOTIyZDk0MjQ3YTBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwLy5w
cmUtY29tbWl0LWNvbmZpZy55YW1sCkBAIC0wLDAgKzEsNSBAQAorcmVwb3M6CistIHJlcG86IGh0
dHBzOi8vZ2l0aHViLmNvbS9hbWJ2L2JsYWNrCisgIHJldjogMTguOWIwCisgIGhvb2tzOgorICAt
IGlkOiBibGFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwLy5yZWFkdGhlZG9jcy55bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3ppcHAvLnJlYWR0aGVkb2NzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjhhZTQ0Njg0MjhiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC8ucmVhZHRo
ZWRvY3MueW1sCkBAIC0wLDAgKzEsNSBAQAorcHl0aG9uOgorICB2ZXJzaW9uOiAzCisgIGV4dHJh
X3JlcXVpcmVtZW50czoKKyAgICAtIGRvY3MKKyAgcGlwX2luc3RhbGw6IHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvemlwcC8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC8udHJhdmlzLnltbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI3ZDhmM2FjOWQ2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvemlwcC8udHJhdmlzLnltbApAQCAtMCwwICsxLDI4IEBACitkaXN0OiB4
ZW5pYWwKK2xhbmd1YWdlOiBweXRob24KKworcHl0aG9uOgorLSAyLjcKKy0gMy42CistICZsYXRl
c3RfcHkzIDMuOAorCitqb2JzOgorICBmYXN0X2ZpbmlzaDogdHJ1ZQorICBpbmNsdWRlOgorICAt
IHN0YWdlOiBkZXBsb3kKKyAgICBpZjogdGFnIElTIHByZXNlbnQKKyAgICBweXRob246ICpsYXRl
c3RfcHkzCisgICAgYmVmb3JlX3NjcmlwdDogc2tpcAorICAgIHNjcmlwdDogdG94IC1lIHJlbGVh
c2UKKworY2FjaGU6IHBpcAorCitpbnN0YWxsOgorLSBwaXAgaW5zdGFsbCB0b3ggdG94LXZlbnYK
KworYmVmb3JlX3NjcmlwdDoKKyAgIyBEaXNhYmxlIElQdjYuIFJlZiB0cmF2aXMtY2kvdHJhdmlz
LWNpIzgzNjEKKyAgLSBpZiBbICIke1RSQVZJU19PU19OQU1FfSIgPT0gImxpbnV4IiBdOyB0aGVu
CisgICAgICBzdWRvIHNoIC1jICdlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9hbGwv
ZGlzYWJsZV9pcHY2JzsKKyAgICBmaQorc2NyaXB0OiB0b3gKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlw
cC9DSEFOR0VTLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9DSEFOR0VTLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0NjRhNjMyNGI3YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvemlwcC9DSEFOR0VTLnJzdApAQCAtMCwwICsxLDEwMCBAQAordjEuMi4wCis9PT09PT0KKwor
IzQ0OiBgYHppcHAuUGF0aC5vcGVuKClgYCBub3cgc3VwcG9ydHMgYSBjb21wYXRpYmxlIHNpZ25h
dHVyZQorYXMgYGBwYXRobGliLlBhdGgub3BlbigpYGAsIGFjY2VwdGluZyB0ZXh0IChkZWZhdWx0
KSBvciBiaW5hcnkKK21vZGVzIGFuZCBzb2xpY2l0aW5nIGtleXdvcmQgcGFyYW1ldGVycyBwYXNz
ZWQgdGhyb3VnaCB0bworYGBpby5UZXh0SU9XcmFwcGVyYGAgKGVuY29kaW5nLCBuZXdsaW5lLCBl
dGMpLiBUaGUgc3RyZWFtIGlzCitvcGVuZWQgaW4gdGV4dC1tb2RlIGJ5IGRlZmF1bHQgbm93LiBg
YG9wZW5gYCBubworbG9uZ2VyIGFjY2VwdHMgYGBwd2RgYCBhcyBhIHBvc2l0aW9uYWwgYXJndW1l
bnQgYW5kIGRvZXMgbm90CithY2NlcHQgdGhlIGBgZm9yY2VfemlwNjRgYCBwYXJhbWV0ZXIgYXQg
YWxsLiBUaGlzIGNoYW5nZSBpcworYSBiYWNrd2FyZC1pbmNvbXBhdGlibGUgY2hhbmdlIGZvciB0
aGF0IHNpbmdsZSBmdW5jdGlvbi4KKwordjEuMS4xCis9PT09PT0KKworIzQzOiBSZXN0b3JlZCBw
ZXJmb3JtYW5jZSBvZiBpbXBsaWNpdCBkaXIgY29tcHV0YXRpb24uCisKK3YxLjEuMAorPT09PT09
CisKKyMzMjogRm9yIHJlYWQtb25seSB6aXAgZmlsZXMsIGNvbXBsZXhpdHkgb2YgYGAuZXhpc3Rz
YGAgYW5kCitgYGpvaW5wYXRoYGAgaXMgbm93IGNvbnN0YW50IHRpbWUgaW5zdGVhZCBvZiBgYE8o
bilgYCwgcHJldmVudGluZworcXVhZHJhdGljIHRpbWUgaW4gY29tbW9uIHVzZS1jYXNlcyBhbmQg
cmVuZGVyaW5nIGxhcmdlCit6aXAgZmlsZXMgdW51c2FibGUgZm9yIFBhdGguIEJpZyB0aGFua3Mg
dG8gQmVuankgV2VpbmJlcmdlcgorZm9yIHRoZSBidWcgcmVwb3J0IGFuZCBjb250cmlidXRlZCBm
aXggKCMzMykuCisKK3YxLjAuMAorPT09PT09CisKK1JlLXJlbGVhc2Ugb2YgMC42IHRvIGNvcnJl
c3BvbmQgd2l0aCByZWxlYXNlIGFzIGZvdW5kIGluCitQeXRob24gMy44LgorCit2MC42LjAKKz09
PT09PQorCisjMTI6IFdoZW4gYWRkaW5nIGltcGxpY2l0IGRpcnMsIGVuc3VyZSB0aGF0IGFuY2Vz
dHJhbCBkaXJlY3RvcmllcworYXJlIGFkZGVkIGFuZCB0aGF0IGR1cGxpY2F0ZXMgYXJlIGV4Y2x1
ZGVkLgorCitUaGUgbGlicmFyeSBub3cgcmVsaWVzIG9uCitgbW9yZV9pdGVydG9vbHMgPGh0dHBz
Oi8vcHlwaS5vcmcvcHJvamVjdC9tb3JlX2l0ZXJ0b29scz5gXy4KKwordjAuNS4yCis9PT09PT0K
KworIzc6IFBhcmVudCBvZiBhIGRpcmVjdG9yeSBub3cgYWN0dWFsbHkgcmV0dXJucyB0aGUgcGFy
ZW50LgorCit2MC41LjEKKz09PT09PQorCitEZWNsYXJlZCBwYWNrYWdlIGFzIGJhY2twb3J0Lgor
Cit2MC41LjAKKz09PT09PQorCitBZGQgYGAuam9pbnBhdGgoKWBgIG1ldGhvZCBhbmQgYGAucGFy
ZW50YGAgcHJvcGVydHkuCisKK05vdyBhIGJhY2twb3J0IHJlbGVhc2Ugb2YgdGhlIGBgemlwZmls
ZS5QYXRoYGAgY2xhc3MuCisKK3YwLjQuMAorPT09PT09CisKKyM0OiBBZGQgc3VwcG9ydCBmb3Ig
emlwIGZpbGVzIHdpdGggaW1wbGllZCBkaXJlY3Rvcmllcy4KKwordjAuMy4zCis9PT09PT0KKwor
IzM6IEZpeCBpc3N1ZSB3aGVyZSBgYC5uYW1lYGAgb24gYSBkaXJlY3Rvcnkgd2FzIGVtcHR5Lgor
Cit2MC4zLjIKKz09PT09PQorCisjMjogRml4IFR5cGVFcnJvciBvbiBQeXRob24gMi43IHdoZW4g
Y2xhc3NpYyBkaXZpc2lvbiBpcyB1c2VkLgorCit2MC4zLjEKKz09PT09PQorCisjMTogRml4IFR5
cGVFcnJvciBvbiBQeXRob24gMy41IHdoZW4gam9pbmluZyB0byBhIHBhdGgtbGlrZSBvYmplY3Qu
CisKK3YwLjMuMAorPT09PT09CisKK0FkZCBzdXBwb3J0IGZvciBjb25zdHJ1Y3RpbmcgYSBgYHpp
cHAuUGF0aGBgIGZyb20gYW55IHBhdGgtbGlrZQorb2JqZWN0LgorCitgYHppcHAuUGF0aGBgIGlz
IG5vdyBhIG5ldy1zdHlsZSBjbGFzcyBvbiBQeXRob24gMi43LgorCit2MC4yLjEKKz09PT09PQor
CitGaXggaXNzdWUgd2l0aCBgYF9fc3RyX19gYC4KKwordjAuMi4wCis9PT09PT0KKworRHJvcCBy
ZWxpYW5jZSBvbiBmdXR1cmUtZnN0cmluZ3MuCisKK3YwLjEuMAorPT09PT09CisKK0luaXRpYWwg
cmVsZWFzZSB3aXRoIGJhc2ljIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAv
TElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvemlwcC9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNWU3OTVhNjFmMzAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL0xJ
Q0VOU0UKQEAgLTAsMCArMSw3IEBACitDb3B5cmlnaHQgSmFzb24gUi4gQ29vbWJzCisKK1Blcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY
UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS96aXBwL1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL1BLRy1JTkZPCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzNlZjFjZjAxYzRiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS96aXBwL1BLRy1JTkZPCkBAIC0wLDAgKzEsMzkgQEAKK01ldGFkYXRhLVZl
cnNpb246IDIuMQorTmFtZTogemlwcAorVmVyc2lvbjogMS4yLjAKK1N1bW1hcnk6IEJhY2twb3J0
IG9mIHBhdGhsaWItY29tcGF0aWJsZSBvYmplY3Qgd3JhcHBlciBmb3IgemlwIGZpbGVzCitIb21l
LXBhZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vemlwcAorQXV0aG9yOiBKYXNvbiBSLiBD
b29tYnMKK0F1dGhvci1lbWFpbDogamFyYWNvQGphcmFjby5jb20KK0xpY2Vuc2U6IFVOS05PV04K
K0Rlc2NyaXB0aW9uOiAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3pp
cHAuc3ZnCisgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC96aXBw
CisgICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlw
aS9weXZlcnNpb25zL3ppcHAuc3ZnCisgICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBz
Oi8vaW1nLnNoaWVsZHMuaW8vdHJhdmlzL2phcmFjby96aXBwL21hc3Rlci5zdmcKKyAgICAgICAg
ICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2phcmFjby96aXBwCisgICAgICAgIAor
ICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0
eWxlLWJsYWNrLTAwMDAwMC5zdmcKKyAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIu
Y29tL2FtYnYvYmxhY2sKKyAgICAgICAgICAgOmFsdDogQ29kZSBzdHlsZTogQmxhY2sKKyAgICAg
ICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9hcHB2ZXlvci9j
aS9qYXJhY28vemlwcC9tYXN0ZXIuc3ZnCisgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vY2ku
YXBwdmV5b3IuY29tL3Byb2plY3QvamFyYWNvL3ppcHAvYnJhbmNoL21hc3RlcgorICAgICAgICAK
KyAgICAgICAgLi4gLi4gaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy96
aXBwL2JhZGdlLz92ZXJzaW9uPWxhdGVzdAorICAgICAgICAuLiAgICA6dGFyZ2V0OiBodHRwczov
L3ppcHAucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lz9iYWRnZT1sYXRlc3QKKyAgICAgICAgCisg
ICAgICAgIAorICAgICAgICBBIHBhdGhsaWItY29tcGF0aWJsZSBaaXBmaWxlIG9iamVjdCB3cmFw
cGVyLiBBIGJhY2twb3J0IG9mIHRoZQorICAgICAgICBgUGF0aCBvYmplY3QgPGh0dHBzOi8vZG9j
cy5weXRob24ub3JnLzMuOC9saWJyYXJ5L3ppcGZpbGUuaHRtbCNwYXRoLW9iamVjdHM+YF8uCisg
ICAgICAgIAorUGxhdGZvcm06IFVOS05PV04KK0NsYXNzaWZpZXI6IERldmVsb3BtZW50IFN0YXR1
cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUKK0NsYXNzaWZpZXI6IEludGVuZGVkIEF1ZGllbmNl
IDo6IERldmVsb3BlcnMKK0NsYXNzaWZpZXI6IExpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1J
VCBMaWNlbnNlCitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjog
Mi43CitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworUmVx
dWlyZXMtUHl0aG9uOiA+PTIuNworUHJvdmlkZXMtRXh0cmE6IHRlc3RpbmcKK1Byb3ZpZGVzLUV4
dHJhOiBkb2NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvUkVBRE1FLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9S
RUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2UxMjhh
MzJiYTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL1JFQURNRS5yc3QKQEAgLTAsMCAr
MSwyMSBAQAorLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi96aXBwLnN2
ZworICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3ppcHAKKworLi4gaW1hZ2U6
OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy96aXBwLnN2ZworCisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHJhdmlzL2phcmFjby96aXBwL21hc3Rlci5z
dmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9qYXJhY28vemlwcAorCisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAw
MDAwMC5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWJ2L2JsYWNrCisgICA6
YWx0OiBDb2RlIHN0eWxlOiBCbGFjaworCisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMu
aW8vYXBwdmV5b3IvY2kvamFyYWNvL3ppcHAvbWFzdGVyLnN2ZworICAgOnRhcmdldDogaHR0cHM6
Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9qYXJhY28vemlwcC9icmFuY2gvbWFzdGVyCisKKy4u
IC4uIGltYWdlOjogaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvemlwcC9iYWRnZS8/
dmVyc2lvbj1sYXRlc3QKKy4uICAgIDp0YXJnZXQ6IGh0dHBzOi8vemlwcC5yZWFkdGhlZG9jcy5p
by9lbi9sYXRlc3QvP2JhZGdlPWxhdGVzdAorCisKK0EgcGF0aGxpYi1jb21wYXRpYmxlIFppcGZp
bGUgb2JqZWN0IHdyYXBwZXIuIEEgYmFja3BvcnQgb2YgdGhlCitgUGF0aCBvYmplY3QgPGh0dHBz
Oi8vZG9jcy5weXRob24ub3JnLzMuOC9saWJyYXJ5L3ppcGZpbGUuaHRtbCNwYXRoLW9iamVjdHM+
YF8uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvYXBwdmV5b3IueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2FwcHZl
eW9yLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzNWFhMjdk
Njg0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9hcHB2ZXlvci55bWwKQEAgLTAsMCAr
MSwyNCBAQAorZW52aXJvbm1lbnQ6CisKKyAgQVBQVkVZT1I6IHRydWUKKworICBtYXRyaXg6Cisg
ICAgLSBQWVRIT046ICJDOlxcUHl0aG9uMzYteDY0IgorICAgIC0gUFlUSE9OOiAiQzpcXFB5dGhv
bjI3LXg2NCIKKworaW5zdGFsbDoKKyAgIyBzeW1saW5rIHB5dGhvbiBmcm9tIGEgZGlyZWN0b3J5
IHdpdGggYSBzcGFjZQorICAtICJta2xpbmsgL2QgXCJDOlxcUHJvZ3JhbSBGaWxlc1xcUHl0aG9u
XCIgJVBZVEhPTiUiCisgIC0gIlNFVCBQWVRIT049XCJDOlxcUHJvZ3JhbSBGaWxlc1xcUHl0aG9u
XCIiCisgIC0gIlNFVCBQQVRIPSVQWVRIT04lOyVQWVRIT04lXFxTY3JpcHRzOyVQQVRIJSIKKwor
YnVpbGQ6IG9mZgorCitjYWNoZToKKyAgLSAnJUxPQ0FMQVBQREFUQSVccGlwXENhY2hlJworCit0
ZXN0X3NjcmlwdDoKKyAgLSAicHl0aG9uIC1tIHBpcCBpbnN0YWxsIC1VIHRveCB0b3gtdmVudiB2
aXJ0dWFsZW52IgorICAtICJ0b3giCisKK3ZlcnNpb246ICd7YnVpbGR9JwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwL2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3ppcHAvZG9jcy9jb25mLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2RvY3MvY29uZi5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxYjUzNTU3ZmIyZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvemlwcC9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uMworIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKworZXh0ZW5zaW9ucyA9IFsn
c3BoaW54LmV4dC5hdXRvZG9jJywgJ2phcmFjby5wYWNrYWdpbmcuc3BoaW54JywgJ3JzdC5saW5r
ZXInXQorCittYXN0ZXJfZG9jID0gImluZGV4IgorCitsaW5rX2ZpbGVzID0geworICAgICcuLi9D
SEFOR0VTLnJzdCc6IGRpY3QoCisgICAgICAgIHVzaW5nPWRpY3QoR0g9J2h0dHBzOi8vZ2l0aHVi
LmNvbScpLAorICAgICAgICByZXBsYWNlPVsKKyAgICAgICAgICAgIGRpY3QoCisgICAgICAgICAg
ICAgICAgcGF0dGVybj1yJyhJc3N1ZSAjfFxCIykoP1A8aXNzdWU+XGQrKScsCisgICAgICAgICAg
ICAgICAgdXJsPSd7cGFja2FnZV91cmx9L2lzc3Vlcy97aXNzdWV9JywKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgIHBhdHRlcm49cideKD9tKSgoP1A8
c2NtX3ZlcnNpb24+dj9cZCsoXC5cZCspezEsMn0pKVxuWy09XStcbicsCisgICAgICAgICAgICAg
ICAgd2l0aF9zY209J3t0ZXh0fVxue3Jldlt0aW1lc3RhbXBdOiVkICViICVZfVxuJywKKyAgICAg
ICAgICAgICksCisgICAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgIHBhdHRlcm49cidQ
RVBbLSBdKD9QPHBlcF9udW1iZXI+XGQrKScsCisgICAgICAgICAgICAgICAgdXJsPSdodHRwczov
L3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC17cGVwX251bWJlcjowPjR9LycsCisgICAgICAg
ICAgICApLAorICAgICAgICBdLAorICAgICkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9kb2Nz
L2hpc3RvcnkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2RvY3MvaGlzdG9yeS5yc3QKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZTIxNzUwM2JhMWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3ppcHAvZG9jcy9oaXN0b3J5LnJzdApAQCAtMCwwICsxLDggQEAKKzp0b2NkZXB0aDog
MgorCisuLiBfY2hhbmdlczoKKworSGlzdG9yeQorKioqKioqKgorCisuLiBpbmNsdWRlOjogLi4v
Q0hBTkdFUyAobGlua3MpLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2RvY3MvaW5kZXgucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS96aXBwL2RvY3MvaW5kZXgucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmY0OWJmOWRjNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2Rv
Y3MvaW5kZXgucnN0CkBAIC0wLDAgKzEsMjIgQEAKK1dlbGNvbWUgdG8gemlwcCBkb2N1bWVudGF0
aW9uIQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiB0b2N0
cmVlOjoKKyAgIDptYXhkZXB0aDogMQorCisgICBoaXN0b3J5CisKKworLi4gYXV0b21vZHVsZTo6
IHppcHAKKyAgICA6bWVtYmVyczoKKyAgICA6dW5kb2MtbWVtYmVyczoKKyAgICA6c2hvdy1pbmhl
cml0YW5jZToKKworCitJbmRpY2VzIGFuZCB0YWJsZXMKKz09PT09PT09PT09PT09PT09PQorCisq
IDpyZWY6YGdlbmluZGV4YAorKiA6cmVmOmBtb2RpbmRleGAKKyogOnJlZjpgc2VhcmNoYAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3ppcHAvcHlwcm9qZWN0LnRvbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvcHlwcm9qZWN0
LnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYWZjOGMzM2I3
OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvcHlwcm9qZWN0LnRvbWwKQEAgLTAsMCAr
MSw2IEBACitbYnVpbGQtc3lzdGVtXQorcmVxdWlyZXMgPSBbInNldHVwdG9vbHM+PTM0LjQiLCAi
d2hlZWwiLCAic2V0dXB0b29sc19zY20+PTEuMTUiXQorYnVpbGQtYmFja2VuZCA9ICJzZXR1cHRv
b2xzLmJ1aWxkX21ldGEiCisKK1t0b29sLmJsYWNrXQorc2tpcC1zdHJpbmctbm9ybWFsaXphdGlv
biA9IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9zZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvc2V0
dXAuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWY0YWJkMjQ4
YTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3NldHVwLmNmZwpAQCAtMCwwICsxLDQ1
IEBACitbYmRpc3Rfd2hlZWxdCit1bml2ZXJzYWwgPSAxCisKK1ttZXRhZGF0YV0KK2xpY2Vuc2Vf
ZmlsZSA9IExJQ0VOU0UKK25hbWUgPSB6aXBwCithdXRob3IgPSBKYXNvbiBSLiBDb29tYnMKK2F1
dGhvcl9lbWFpbCA9IGphcmFjb0BqYXJhY28uY29tCitkZXNjcmlwdGlvbiA9IEJhY2twb3J0IG9m
IHBhdGhsaWItY29tcGF0aWJsZSBvYmplY3Qgd3JhcHBlciBmb3IgemlwIGZpbGVzCitsb25nX2Rl
c2NyaXB0aW9uID0gZmlsZTpSRUFETUUucnN0Cit1cmwgPSBodHRwczovL2dpdGh1Yi5jb20vamFy
YWNvL3ppcHAKK2NsYXNzaWZpZXJzID0gCisJRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9k
dWN0aW9uL1N0YWJsZQorCUludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMKKwlMaWNlbnNl
IDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorCVByb2dyYW1taW5nIExhbmd1YWdlIDo6
IFB5dGhvbiA6OiAyLjcKKwlQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworCitb
b3B0aW9uc10KK3B5X21vZHVsZXMgPSB6aXBwCitwYWNrYWdlcyA9IGZpbmQ6CitpbmNsdWRlX3Bh
Y2thZ2VfZGF0YSA9IHRydWUKK3B5dGhvbl9yZXF1aXJlcyA9ID49Mi43CitpbnN0YWxsX3JlcXVp
cmVzID0gCisJY29udGV4dGxpYjI7IHB5dGhvbl92ZXJzaW9uIDwgIjMuNCIKK3NldHVwX3JlcXVp
cmVzID0gc2V0dXB0b29sc19zY20gPj0gMS4xNS4wCisKK1tvcHRpb25zLmV4dHJhc19yZXF1aXJl
XQordGVzdGluZyA9IAorCQorCXBhdGhsaWIyCisJdW5pdHRlc3QyCisJamFyYWNvLml0ZXJ0b29s
cworCWZ1bmMtdGltZW91dAorZG9jcyA9IAorCXNwaGlueAorCWphcmFjby5wYWNrYWdpbmcgPj0g
My4yCisJcnN0LmxpbmtlciA+PSAxLjkKKworW29wdGlvbnMuZW50cnlfcG9pbnRzXQorCitbZWdn
X2luZm9dCit0YWdfYnVpbGQgPSAKK3RhZ19kYXRlID0gMAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3pp
cHAvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi44MjdlOTU1ZmNkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3pp
cHAvc2V0dXAucHkKQEAgLTAsMCArMSw2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1w
b3J0IHNldHVwdG9vbHMKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzZXR1cHRv
b2xzLnNldHVwKHVzZV9zY21fdmVyc2lvbj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3Nr
ZWxldG9uLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS96aXBwL3NrZWxldG9uLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNTJiOTdmMDliNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96
aXBwL3NrZWxldG9uLm1kCkBAIC0wLDAgKzEsMTM3IEBACisjIE92ZXJ2aWV3CisKK1RoaXMgcHJv
amVjdCBpcyBtZXJnZWQgd2l0aCBbc2tlbGV0b25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28v
c2tlbGV0b24pLiBXaGF0IGlzIHNrZWxldG9uPyBJdCdzIHRoZSBzY2FmZm9sZGluZyBvZiBhIFB5
dGhvbiBwcm9qZWN0IGphcmFjbyBbaW50cm9kdWNlZCBpbiBoaXMgYmxvZ10oaHR0cHM6Ly9ibG9n
LmphcmFjby5jb20vYS1wcm9qZWN0LXNrZWxldG9uLWZvci1weXRob24tcHJvamVjdHMvKS4gSXQg
c2Vla3MgdG8gcHJvdmlkZSBhIG1lYW5zIHRvIHJlLXVzZSB0ZWNobmlxdWVzIGFuZCBpbmhlcml0
IGFkdmFuY2VzIHdoZW4gbWFuYWdpbmcgcHJvamVjdHMgZm9yIGRpc3RyaWJ1dGlvbi4KKworIyMg
QW4gU0NNIE1hbmFnZWQgQXBwcm9hY2gKKworV2hpbGUgbWFpbnRhaW5pbmcgZG96ZW5zIG9mIHBy
b2plY3RzIGluIFB5UEksIGphcmFjbyBkZXJpdmVzIGJlc3QgcHJhY3RpY2VzIGZvciBwcm9qZWN0
IGRpc3RyaWJ1dGlvbiBhbmQgcHVibGlzaGVzIHRoZW0gaW4gdGhlIFtza2VsZXRvbiByZXBvXSho
dHRwczovL2dpdGh1Yi5jb20vamFyYWNvL3NrZWxldG9uKSwgYSBnaXQgcmVwbyBjYXB0dXJpbmcg
dGhlIGV2b2x1dGlvbiBhbmQgY3VsbWluYXRpb24gb2YgdGhlc2UgYmVzdCBwcmFjdGljZXMuCisK
K0l0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBhIG5ldyBvciBleGlzdGluZyBwcm9qZWN0IHRv
IGFkb3B0IHRoZXNlIHByYWN0aWNlcyBhbmQgaG9uZWQgYW5kIHByb3ZlbiB0ZWNobmlxdWVzLiBB
ZG9wdGVycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgdGhlIHByb2plY3QgZGlyZWN0bHkgYW5kIG1h
aW50YWluIGEgc21hbGwgZGV2aWF0aW9uIGZyb20gdGhlIHRlY2huaXF1ZSwgbWFrZSB0aGVpciBv
d24gZm9yayBmb3IgbW9yZSBzdWJzdGFudGlhbCBjaGFuZ2VzIHVuaXF1ZSB0byB0aGVpciBlbnZp
cm9ubWVudCBvciBwcmVmZXJlbmNlcywgb3Igc2ltcGx5IGFkb3B0IHRoZSBza2VsZXRvbiBvbmNl
IGFuZCBhYmFuZG9uIGl0IHRoZXJlYWZ0ZXIuCisKK1RoZSBwcmltYXJ5IGFkdmFudGFnZSB0byB1
c2luZyBhbiBTQ00gZm9yIG1haW50YWluaW5nIHRoZXNlIHRlY2huaXF1ZXMgaXMgdGhhdCB0aG9z
ZSB0b29scyBoZWxwIGZhY2lsaXRhdGUgdGhlIG1lcmdlIGJldHdlZW4gdGhlIHRlbXBsYXRlIGFu
ZCBpdHMgYWRvcHRpbmcgcHJvamVjdHMuCisKK0Fub3RoZXIgYWR2YW50YWdlIHRvIHVzaW5nIGFu
IFNDTS1tYW5hZ2VkIGFwcHJvYWNoIGlzIHRoYXQgdG9vbHMgbGlrZSBHaXRIdWIgcmVjb2duaXpl
IHRoYXQgYSBjaGFuZ2UgaW4gdGhlIHNrZWxldG9uIGlzIHRoZSBfc2FtZSBjaGFuZ2VfIGFjcm9z
cyBhbGwgcHJvamVjdHMgdGhhdCBtZXJnZSB3aXRoIHRoYXQgc2tlbGV0b24uIFdpdGhvdXQgdGhl
IGFuY2VzdHJ5LCB3aXRoIGEgdHJhZGl0aW9uYWwgY29weS9wYXN0ZSBhcHByb2FjaCwgYSBbY29t
bWl0IGxpa2UgdGhpc10oaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby9za2VsZXRvbi9jb21taXQv
MTJlZWQxMzI2ZTFiYzI2Y2UyNTZlN2IzZjhjZDhkM2E1YmVhYjJkNSkgd291bGQgcHJvZHVjZSBu
b3RpZmljYXRpb25zIGluIHRoZSB1cHN0cmVhbSBwcm9qZWN0IGlzc3VlIGZvciBlYWNoIGFuZCBl
dmVyeSBhcHBsaWNhdGlvbiwgYnV0IGJlY2F1c2UgaXQncyBjZW50cmFsaXplZCwgR2l0SHViIHBy
b3ZpZGVzIGp1c3QgdGhlIG9uZSBub3RpZmljYXRpb24gd2hlbiB0aGUgY2hhbmdlIGlzIGFkZGVk
IHRvIHRoZSBza2VsZXRvbi4KKworIyBVc2FnZQorCisjIyBuZXcgcHJvamVjdHMKKworVG8gdXNl
IHNrZWxldG9uIGZvciBhIG5ldyBwcm9qZWN0LCBzaW1wbHkgcHVsbCB0aGUgc2tlbGV0b24gaW50
byBhIG5ldyBwcm9qZWN0OgorCitgYGAKKyQgZ2l0IGluaXQgbXktbmV3LXByb2plY3QKKyQgY2Qg
bXktbmV3LXByb2plY3QKKyQgZ2l0IHB1bGwgZ2g6Ly9qYXJhY28vc2tlbGV0b24KK2BgYAorCitO
b3cgY3VzdG9taXplIHRoZSBwcm9qZWN0IHRvIHN1aXQgeW91ciBpbmRpdmlkdWFsIHByb2plY3Qg
bmVlZHMuCisKKyMjIGV4aXN0aW5nIHByb2plY3RzCisKK0lmIHlvdSBoYXZlIGFuIGV4aXN0aW5n
IHByb2plY3QsIHlvdSBjYW4gc3RpbGwgaW5jb3Jwb3JhdGUgdGhlIHNrZWxldG9uIGJ5IG1lcmdp
bmcgaXQgaW50byB0aGUgY29kZWJhc2UuCisKK2BgYAorJCBnaXQgbWVyZ2Ugc2tlbGV0b24gLS1h
bGxvdy11bnJlbGF0ZWQtaGlzdG9yaWVzCitgYGAKKworVGhlIGAtLWFsbG93LXVucmVsYXRlZC1o
aXN0b3JpZXNgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBoaXN0b3J5IGZyb20gdGhlIHNrZWxl
dG9uIHdhcyBwcmV2aW91c2x5IHVucmVsYXRlZCB0byB0aGUgZXhpc3RpbmcgY29kZWJhc2UuIFJl
c29sdmUgYW55IG1lcmdlIGNvbmZsaWN0cyBhbmQgY29tbWl0IHRvIHRoZSBtYXN0ZXIsIGFuZCBu
b3cgdGhlIHByb2plY3QgaXMgYmFzZWQgb24gdGhlIHNoYXJlZCBza2VsZXRvbi4KKworIyMgVXBk
YXRpbmcKKworV2hlbmV2ZXIgYSBjaGFuZ2UgaXMgbmVlZGVkIG9yIGRlc2lyZWQgZm9yIHRoZSBn
ZW5lcmFsIHRlY2huaXF1ZSBmb3IgcGFja2FnaW5nLCBpdCBjYW4gYmUgbWFkZSBpbiB0aGUgc2tl
bGV0b24gcHJvamVjdCBhbmQgdGhlbiBtZXJnZWQgaW50byBlYWNoIG9mIHRoZSBkZXJpdmVkIHBy
b2plY3RzIGFzIG5lZWRlZCwgcmVjb21tZW5kZWQgYmVmb3JlIGVhY2ggcmVsZWFzZS4gQXMgYSBy
ZXN1bHQsIGZlYXR1cmVzIGFuZCBiZXN0IHByYWN0aWNlcyBmb3IgcGFja2FnaW5nIGFyZSBjZW50
cmFsbHkgbWFpbnRhaW5lZCBhbmQgcmVhZGlseSB0cmlja2xlIGludG8gYSB3aG9sZSBzdWl0ZSBv
ZiBwYWNrYWdlcy4gVGhpcyB0ZWNobmlxdWUgbG93ZXJzIHRoZSBhbW91bnQgb2YgdGVkaW91cyB3
b3JrIG5lY2Vzc2FyeSB0byBjcmVhdGUgb3IgbWFpbnRhaW4gYSBwcm9qZWN0LCBhbmQgY291cGxl
ZCB3aXRoIG90aGVyIHRlY2huaXF1ZXMgbGlrZSBjb250aW51b3VzIGludGVncmF0aW9uIGFuZCBk
ZXBsb3ltZW50LCBsb3dlcnMgdGhlIGNvc3Qgb2YgY3JlYXRpbmcgYW5kIG1haW50YWluaW5nIHJl
ZmluZWQgUHl0aG9uIHByb2plY3RzIHRvIGp1c3QgYSBmZXcsIGZhbWlsaWFyIGdpdCBvcGVyYXRp
b25zLgorCitUaGVyZWFmdGVyLCB0aGUgdGFyZ2V0IHByb2plY3QgY2FuIG1ha2Ugd2hhdGV2ZXIg
Y3VzdG9taXphdGlvbnMgaXQgZGVlbXMgcmVsZXZhbnQgdG8gdGhlIHNjYWZmb2xkaW5nLiBUaGUg
cHJvamVjdCBtYXkgZXZlbiBhdCBzb21lIHBvaW50IGRlY2lkZSB0aGF0IHRoZSBkaXZlcmdlbmNl
IGlzIHRvbyBncmVhdCB0byBtZXJpdCByZW5ld2VkIG1lcmdpbmcgd2l0aCB0aGUgb3JpZ2luYWwg
c2tlbGV0b24uIFRoaXMgYXBwcm9hY2ggYXBwbGllcyBtYXhpbWFsIGd1aWRhbmNlIHdoaWxlIGNy
ZWF0aW5nIG1pbmltYWwgY29uc3RyYWludHMuCisKKyMgRmVhdHVyZXMKKworVGhlIGZlYXR1cmVz
L3RlY2huaXF1ZXMgZW1wbG95ZWQgYnkgdGhlIHNrZWxldG9uIGluY2x1ZGU6CisKKy0gUEVQIDUx
Ny81MTggYmFzZWQgYnVpbGQgcmVseWluZyBvbiBzZXR1cHRvb2xzIGFzIHRoZSBidWlsZCB0b29s
CistIHNldHVwdG9vbHMgZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbiB1c2luZyBzZXR1cC5jZmcK
Ky0gdG94IGZvciBydW5uaW5nIHRlc3RzCistIEEgUkVBRE1FLnJzdCBhcyByZVN0cnVjdHVyZWRU
ZXh0IHdpdGggc29tZSBwb3B1bGFyIGJhZGdlcywgYnV0IHdpdGggcmVhZHRoZWRvY3MgYW5kIGFw
cHZleW9yIGJhZGdlcyBjb21tZW50ZWQgb3V0CistIEEgQ0hBTkdFUy5yc3QgZmlsZSBpbnRlbmRl
ZCBmb3IgcHVibGlzaGluZyByZWxlYXNlIG5vdGVzIGFib3V0IHRoZSBwcm9qZWN0CistIFVzZSBv
ZiBbYmxhY2tdKGh0dHBzOi8vYmxhY2sucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlLykgZm9yIGNv
ZGUgZm9ybWF0dGluZyAoZGlzYWJsZWQgb24gdW5zdXBwb3J0ZWQgUHl0aG9uIDMuNSBhbmQgZWFy
bGllcikKKworIyMgUGFja2FnaW5nIENvbnZlbnRpb25zCisKK0EgcHlwcm9qZWN0LnRvbWwgaXMg
aW5jbHVkZWQgdG8gZW5hYmxlIFBFUCA1MTcgYW5kIFBFUCA1MTggY29tcGF0aWJpbGl0eSBhbmQg
ZGVjbGFyZXMgdGhlIHJlcXVpcmVtZW50cyBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlIHByb2plY3Qg
b24gc2V0dXB0b29scyAoYSBtaW5pbXVtIHZlcnNpb24gY29tcGF0aWJsZSB3aXRoIHNldHVwLmNm
ZyBkZWNsYXJhdGl2ZSBjb25maWcpLgorCitUaGUgc2V0dXAuY2ZnIGZpbGUgaW1wbGVtZW50cyB0
aGUgZm9sbG93aW5nIGZlYXR1cmVzOgorCistIEFzc3VtZXMgdW5pdmVyc2FsIHdoZWVsIGZvciBy
ZWxlYXNlCistIEFkdmVydGlzZXMgdGhlIHByb2plY3QncyBMSUNFTlNFIGZpbGUgKE1JVCBieSBk
ZWZhdWx0KQorLSBSZWFkcyB0aGUgUkVBRE1FLnJzdCBmaWxlIGludG8gdGhlIGxvbmcgZGVzY3Jp
cHRpb24KKy0gU29tZSBjb21tb24gVHJvdmUgY2xhc3NpZmllcnMKKy0gSW5jbHVkZXMgYWxsIHBh
Y2thZ2VzIGRpc2NvdmVyZWQgaW4gdGhlIHJlcG8KKy0gRGF0YSBmaWxlcyBpbiB0aGUgcGFja2Fn
ZSBhcmUgYWxzbyBpbmNsdWRlZCAobm90IGp1c3QgUHl0aG9uIGZpbGVzKQorLSBEZWNsYXJlcyB0
aGUgcmVxdWlyZWQgUHl0aG9uIHZlcnNpb25zCistIERlY2xhcmVzIGluc3RhbGwgcmVxdWlyZW1l
bnRzIChlbXB0eSBieSBkZWZhdWx0KQorLSBEZWNsYXJlcyBzZXR1cCByZXF1aXJlbWVudHMgZm9y
IGxlZ2FjeSBlbnZpcm9ubWVudHMKKy0gU3VwcGxpZXMgdHdvICdleHRyYXMnOgorICAtIHRlc3Rp
bmc6IHJlcXVpcmVtZW50cyBmb3IgcnVubmluZyB0ZXN0cworICAtIGRvY3M6IHJlcXVpcmVtZW50
cyBmb3IgYnVpbGRpbmcgZG9jcworICAtIHRoZXNlIGV4dHJhcyBzcGxpdCB0aGUgZGVjbGFyYXRp
b24gaW50byAidXBzdHJlYW0iIChyZXF1aXJlbWVudHMgYXMgZGVjbGFyZWQgYnkgdGhlIHNrZWxl
dG9uKSBhbmQgImxvY2FsIiAodGhvc2Ugc3BlY2lmaWMgdG8gdGhlIGxvY2FsIHByb2plY3QpOyB0
aGVzZSBtYXJrZXJzIGhlbHAgYXZvaWQgbWVyZ2UgY29uZmxpY3RzCistIFBsYWNlaG9sZGVyIGZv
ciBkZWZpbmluZyBlbnRyeSBwb2ludHMKKworQWRkaXRpb25hbGx5LCB0aGUgc2V0dXAucHkgZmls
ZSBkZWNsYXJlcyBgdXNlX3NjbV92ZXJzaW9uYCB3aGljaCByZWxpZXMgb24gW3NldHVwdG9vbHNf
c2NtXShodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc2V0dXB0b29sc19zY20pIHRvIGRvIHR3byB0
aGluZ3M6CisKKy0gZGVyaXZlIHRoZSBwcm9qZWN0IHZlcnNpb24gZnJvbSBTQ00gdGFncworLSBl
bnN1cmUgdGhhdCBhbGwgZmlsZXMgY29tbWl0dGVkIHRvIHRoZSByZXBvIGFyZSBhdXRvbWF0aWNh
bGx5IGluY2x1ZGVkIGluIHJlbGVhc2VzCisKKyMjIFJ1bm5pbmcgVGVzdHMKKworVGhlIHNrZWxl
dG9uIGFzc3VtZXMgdGhlIGRldmVsb3BlciBoYXMgW3RveF0oaHR0cHM6Ly9weXBpLm9yZy9wcm9q
ZWN0L3RveCkgaW5zdGFsbGVkLiBUaGUgZGV2ZWxvcGVyIGlzIGV4cGVjdGVkIHRvIHJ1biBgdG94
YCB0byBydW4gdGVzdHMgb24gdGhlIGN1cnJlbnQgUHl0aG9uIHZlcnNpb24gdXNpbmcgW3B5dGVz
dF0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdCkuCisKK090aGVyIGVudmlyb25tZW50
cyAoaW52b2tlZCB3aXRoIGB0b3ggLWUge25hbWV9YCkgc3VwcGxpZWQgaW5jbHVkZToKKworICAt
IGEgYGJ1aWxkLWRvY3NgIGVudmlyb25tZW50IHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCisg
IC0gYSBgcmVsZWFzZWAgZW52aXJvbm1lbnQgdG8gcHVibGlzaCB0aGUgcGFja2FnZSB0byBQeVBJ
CisKK0EgcHl0ZXN0LmluaSBpcyBpbmNsdWRlZCB0byBkZWZpbmUgY29tbW9uIG9wdGlvbnMgYXJv
dW5kIHJ1bm5pbmcgdGVzdHMuIEluIHBhcnRpY3VsYXI6CisKKy0gcmVseSBvbiBkZWZhdWx0IHRl
c3QgZGlzY292ZXJ5IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorLSBhdm9pZCByZWN1cnNpbmcg
aW50byBjb21tb24gZGlyZWN0b3JpZXMgbm90IGNvbnRhaW5pbmcgdGVzdHMKKy0gcnVuIGRvY3Rl
c3RzIG9uIG1vZHVsZXMgYW5kIGludm9rZSBmbGFrZTggdGVzdHMKKy0gaW4gZG9jdGVzdHMsIGFs
bG93IHVuaWNvZGUgbGl0ZXJhbHMgYW5kIHJlZ3VsYXIgbGl0ZXJhbHMgdG8gbWF0Y2gsIGFsbG93
aW5nIGZvciBkb2N0ZXN0cyB0byBydW4gb24gUHl0aG9uIDIgYW5kIDMuIEFsc28gZW5hYmxlIEVM
TElQU0VTLCBhIGRlZmF1bHQgdGhhdCB3b3VsZCBiZSB1bmRvbmUgYnkgc3VwcGx5aW5nIHRoZSBw
cmlvciBvcHRpb24uCistIGZpbHRlcnMgb3V0IGtub3duIHdhcm5pbmdzIGNhdXNlZCBieSBsaWJy
YXJpZXMvZnVuY3Rpb25hbGl0eSBpbmNsdWRlZCBieSB0aGUgc2tlbGV0b24KKworUmVsaWVzIGEg
LmZsYWtlOCBmaWxlIHRvIGNvcnJlY3Qgc29tZSBkZWZhdWx0IGJlaGF2aW9yczoKKworLSBkaXNh
YmxlIG11dHVhbGx5IGluY29tcGF0aWJsZSBydWxlcyBXNTAzIGFuZCBXNTA0CistIHN1cHBvcnQg
Zm9yIGJsYWNrIGZvcm1hdAorCisjIyBDb250aW51b3VzIEludGVncmF0aW9uCisKK1RoZSBwcm9q
ZWN0IGlzIHByZS1jb25maWd1cmVkIHRvIHJ1biB0ZXN0cyBpbiBbVHJhdmlzLUNJXShodHRwczov
L3RyYXZpcy1jaS5vcmcpICgudHJhdmlzLnltbCkuIEFueSBuZXcgcHJvamVjdCBtdXN0IGJlIGVu
YWJsZWQgZWl0aGVyIHRocm91Z2ggdGhlaXIgd2ViIHNpdGUgb3Igd2l0aCB0aGUgYHRyYXZpcyBl
bmFibGVgIGNvbW1hbmQuCisKK0ZlYXR1cmVzIGluY2x1ZGU6CistIHRlc3QgYWdhaW5zdCBQeXRo
b24gMiBhbmQgMworLSBydW4gb24gVWJ1bnR1IFhlbmlhbAorLSBjb3JyZWN0IGZvciBicm9rZW4g
SVB2NgorCitBbHNvIHByb3ZpZGVkIGlzIGEgbWluaW1hbCB0ZW1wbGF0ZSBmb3IgcnVubmluZyB1
bmRlciBBcHB2ZXlvciAoV2luZG93cykuCisKKyMjIyBDb250aW51b3VzIERlcGxveW1lbnRzCisK
K0luIGFkZGl0aW9uIHRvIHJ1bm5pbmcgdGVzdHMsIGFuIGFkZGl0aW9uYWwgZGVwbG95IHN0YWdl
IGlzIGNvbmZpZ3VyZWQgdG8gYXV0b21hdGljYWxseSByZWxlYXNlIHRhZ2dlZCBjb21taXRzIHRv
IFB5UEkgdXNpbmcgW0FQSSB0b2tlbnNdKGh0dHBzOi8vcHlwaS5vcmcvaGVscC8jYXBpdG9rZW4p
LiBUaGUgcmVsZWFzZSBwcm9jZXNzIGV4cGVjdHMgYW4gYXV0aG9yaXplZCB0b2tlbiB0byBiZSBj
b25maWd1cmVkIHdpdGggVHJhdmlzIGFzIHRoZSBUV0lORV9QQVNTV09SRCBlbnZpcm9ubWVudCB2
YXJpYWJsZS4gQWZ0ZXIgdGhlIFRyYXZpcyBwcm9qZWN0IGlzIGNyZWF0ZWQsIGNvbmZpZ3VyZSB0
aGUgdG9rZW4gdGhyb3VnaCB0aGUgd2ViIFVJIG9yIHdpdGggYSBjb21tYW5kIGxpa2UgdGhlIGZv
bGxvd2luZyAoYmFzaCBzeW50YXgpOgorCitgYGAKK1RXSU5FX1BBU1NXT1JEPXt0b2tlbn0gdHJh
dmlzIGVudiBjb3B5IFRXSU5FX1BBU1NXT1JECitgYGAKKworIyMgQnVpbGRpbmcgRG9jdW1lbnRh
dGlvbgorCitEb2N1bWVudGF0aW9uIGlzIGF1dG9tYXRpY2FsbHkgYnVpbHQgYnkgW1JlYWQgdGhl
IERvY3NdKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnKSB3aGVuIHRoZSBwcm9qZWN0IGlzIHJlZ2lz
dGVyZWQgd2l0aCBpdCwgYnkgd2F5IG9mIHRoZSAucmVhZHRoZWRvY3MueW1sIGZpbGUuIFRvIHRl
c3QgdGhlIGRvY3MgYnVpbGQgbWFudWFsbHksIGEgdG94IGVudiBtYXkgYmUgaW52b2tlZCBhcyBg
dG94IC1lIGJ1aWxkLWRvY3NgLiBCb3RoIHRlY2huaXF1ZXMgcmVseSBvbiB0aGUgZGVwZW5kZW5j
aWVzIGRlY2xhcmVkIGluIGBzZXR1cC5jZmcvb3B0aW9ucy5leHRyYXNfcmVxdWlyZS5kb2NzYC4K
KworSW4gYWRkaXRpb24gdG8gYnVpbGRpbmcgdGhlIHNwaGlueCBkb2NzIHNjYWZmb2xkZWQgaW4g
YGRvY3MvYCwgdGhlIGRvY3MgYnVpbGQgYSBgaGlzdG9yeS5odG1sYCBmaWxlIHRoYXQgZmlyc3Qg
aW5qZWN0cyByZWxlYXNlIGRhdGVzIGFuZCBoeXBlcmxpbmtzIGludG8gdGhlIENIQU5HRVMucnN0
IGJlZm9yZSBpbmNvcnBvcmF0aW5nIGl0IGFzIGhpc3RvcnkgaW4gdGhlIGRvY3MuCisKKyMjIEN1
dHRpbmcgcmVsZWFzZXMKKworQnkgZGVmYXVsdCwgdGFnZ2VkIGNvbW1pdHMgYXJlIHJlbGVhc2Vk
IHRocm91Z2ggdGhlIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gZGVwbG95IHN0YWdlLgorCitSZWxl
YXNlcyBtYXkgYWxzbyBiZSBjdXQgbWFudWFsbHkgYnkgaW52b2tpbmcgdGhlIHRveCBlbnZpcm9u
bWVudCBgcmVsZWFzZWAgd2l0aCB0aGUgUHlQSSB0b2tlbiBzZXQgYXMgdGhlIFRXSU5FX1BBU1NX
T1JEOgorCitgYGAKK1RXSU5FX1BBU1NXT1JEPXt0b2tlbn0gdG94IC1lIHJlbGVhc2UKK2BgYApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS96aXBwL3Rlc3RfemlwcC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC90ZXN0X3ppcHAu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MTBkMTBiZDY4ZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvdGVzdF96aXBwLnB5CkBAIC0wLDAgKzEsMjQ1
IEBACisjIGNvZGluZzogdXRmLTgKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwg
dW5pY29kZV9saXRlcmFscworCitpbXBvcnQgaW8KK2ltcG9ydCB6aXBmaWxlCitpbXBvcnQgY29u
dGV4dGxpYgoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RyaW5nCisK
K3RyeToKKyAgICBpbXBvcnQgcGF0aGxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9y
dCBwYXRobGliMiBhcyBwYXRobGliCisKK2lmIG5vdCBoYXNhdHRyKGNvbnRleHRsaWIsICdFeGl0
U3RhY2snKToKKyAgICBpbXBvcnQgY29udGV4dGxpYjIKKyAgICBjb250ZXh0bGliLkV4aXRTdGFj
ayA9IGNvbnRleHRsaWIyLkV4aXRTdGFjaworCit0cnk6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisK
KyAgICB1bml0dGVzdC5UZXN0Q2FzZS5zdWJUZXN0CitleGNlcHQgQXR0cmlidXRlRXJyb3I6Cisg
ICAgaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAorCitpbXBvcnQgamFyYWNvLml0ZXJ0b29s
cworaW1wb3J0IGZ1bmNfdGltZW91dAorCitpbXBvcnQgemlwcAorCitfX21ldGFjbGFzc19fID0g
dHlwZQorY29uc3VtZSA9IHR1cGxlCisKKworZGVmIGFkZF9kaXJzKHpmKToKKyAgICAiIiIKKyAg
ICBHaXZlbiBhIHdyaXRhYmxlIHppcCBmaWxlIHpmLCBpbmplY3QgZGlyZWN0b3J5IGVudHJpZXMg
Zm9yCisgICAgYW55IGRpcmVjdG9yaWVzIGltcGxpZWQgYnkgdGhlIHByZXNlbmNlIG9mIGNoaWxk
cmVuLgorICAgICIiIgorICAgIGZvciBuYW1lIGluIHppcHAuQ29tcGxldGVEaXJzLl9pbXBsaWVk
X2RpcnMoemYubmFtZWxpc3QoKSk6CisgICAgICAgIHpmLndyaXRlc3RyKG5hbWUsIGIiIikKKyAg
ICByZXR1cm4gemYKKworCitkZWYgYnVpbGRfYWxwaGFyZXBfZml4dHVyZSgpOgorICAgICIiIgor
ICAgIENyZWF0ZSBhIHppcCBmaWxlIHdpdGggdGhpcyBzdHJ1Y3R1cmU6CisKKyAgICAuCisgICAg
4pSc4pSA4pSAIGEudHh0CisgICAg4pSc4pSA4pSAIGIKKyAgICDilIIgICDilJzilIDilIAgYy50
eHQKKyAgICDilIIgICDilJzilIDilIAgZAorICAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBlLnR4
dAorICAgIOKUgiAgIOKUlOKUgOKUgCBmLnR4dAorICAgIOKUlOKUgOKUgCBnCisgICAgICAgIOKU
lOKUgOKUgCBoCisgICAgICAgICAgICDilJTilIDilIAgaS50eHQKKworICAgIFRoaXMgZml4dHVy
ZSBoYXMgdGhlIGZvbGxvd2luZyBrZXkgY2hhcmFjdGVyaXN0aWNzOgorCisgICAgLSBhIGZpbGUg
YXQgdGhlIHJvb3QgKGEpCisgICAgLSBhIGZpbGUgdHdvIGxldmVscyBkZWVwIChiL2QvZSkKKyAg
ICAtIG11bHRpcGxlIGZpbGVzIGluIGEgZGlyZWN0b3J5IChiL2MsIGIvZikKKyAgICAtIGEgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgb25seSBhIGRpcmVjdG9yeSAoZy9oKQorCisgICAgImFscGhhIiBi
ZWNhdXNlIGl0IHVzZXMgYWxwaGFiZXQKKyAgICAicmVwIiBiZWNhdXNlIGl0J3MgYSByZXByZXNl
bnRhdGl2ZSBleGFtcGxlCisgICAgIiIiCisgICAgZGF0YSA9IGlvLkJ5dGVzSU8oKQorICAgIHpm
ID0gemlwZmlsZS5aaXBGaWxlKGRhdGEsICJ3IikKKyAgICB6Zi53cml0ZXN0cigiYS50eHQiLCBi
ImNvbnRlbnQgb2YgYSIpCisgICAgemYud3JpdGVzdHIoImIvYy50eHQiLCBiImNvbnRlbnQgb2Yg
YyIpCisgICAgemYud3JpdGVzdHIoImIvZC9lLnR4dCIsIGIiY29udGVudCBvZiBlIikKKyAgICB6
Zi53cml0ZXN0cigiYi9mLnR4dCIsIGIiY29udGVudCBvZiBmIikKKyAgICB6Zi53cml0ZXN0cigi
Zy9oL2kudHh0IiwgYiJjb250ZW50IG9mIGkiKQorICAgIHpmLmZpbGVuYW1lID0gImFscGhhcmVw
LnppcCIKKyAgICByZXR1cm4gemYKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVm
IHRlbXBfZGlyKCk6CisgICAgdG1wZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgdHJ5Ogor
ICAgICAgICB5aWVsZCBwYXRobGliLlBhdGgodG1wZGlyKQorICAgIGZpbmFsbHk6CisgICAgICAg
IHNodXRpbC5ybXRyZWUodG1wZGlyKQorCisKK2NsYXNzIFRlc3RQYXRoKHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZml4dHVyZXMgPSBjb250
ZXh0bGliLkV4aXRTdGFjaygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmZpeHR1cmVz
LmNsb3NlKQorCisgICAgZGVmIHppcGZpbGVfYWxwaGFyZXAoc2VsZik6CisgICAgICAgIHdpdGgg
c2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICB5aWVsZCBidWlsZF9hbHBoYXJlcF9maXh0dXJl
KCkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgIHlpZWxkIGFkZF9k
aXJzKGJ1aWxkX2FscGhhcmVwX2ZpeHR1cmUoKSkKKworICAgIGRlZiB6aXBmaWxlX29uZGlzayhz
ZWxmKToKKyAgICAgICAgdG1wZGlyID0gcGF0aGxpYi5QYXRoKHNlbGYuZml4dHVyZXMuZW50ZXJf
Y29udGV4dCh0ZW1wX2RpcigpKSkKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmls
ZV9hbHBoYXJlcCgpOgorICAgICAgICAgICAgYnVmZmVyID0gYWxwaGFyZXAuZnAKKyAgICAgICAg
ICAgIGFscGhhcmVwLmNsb3NlKCkKKyAgICAgICAgICAgIHBhdGggPSB0bXBkaXIgLyBhbHBoYXJl
cC5maWxlbmFtZQorICAgICAgICAgICAgd2l0aCBwYXRoLm9wZW4oIndiIikgYXMgc3RybToKKyAg
ICAgICAgICAgICAgICBzdHJtLndyaXRlKGJ1ZmZlci5nZXR2YWx1ZSgpKQorICAgICAgICAgICAg
eWllbGQgcGF0aAorCisgICAgZGVmIHRlc3RfaXRlcmRpcl9hbmRfdHlwZXMoc2VsZik6CisgICAg
ICAgIGZvciBhbHBoYXJlcCBpbiBzZWxmLnppcGZpbGVfYWxwaGFyZXAoKToKKyAgICAgICAgICAg
IHJvb3QgPSB6aXBwLlBhdGgoYWxwaGFyZXApCisgICAgICAgICAgICBhc3NlcnQgcm9vdC5pc19k
aXIoKQorICAgICAgICAgICAgYSwgYiwgZyA9IHJvb3QuaXRlcmRpcigpCisgICAgICAgICAgICBh
c3NlcnQgYS5pc19maWxlKCkKKyAgICAgICAgICAgIGFzc2VydCBiLmlzX2RpcigpCisgICAgICAg
ICAgICBhc3NlcnQgZy5pc19kaXIoKQorICAgICAgICAgICAgYywgZiwgZCA9IGIuaXRlcmRpcigp
CisgICAgICAgICAgICBhc3NlcnQgYy5pc19maWxlKCkgYW5kIGYuaXNfZmlsZSgpCisgICAgICAg
ICAgICBlLCA9IGQuaXRlcmRpcigpCisgICAgICAgICAgICBhc3NlcnQgZS5pc19maWxlKCkKKyAg
ICAgICAgICAgIGgsID0gZy5pdGVyZGlyKCkKKyAgICAgICAgICAgIGksID0gaC5pdGVyZGlyKCkK
KyAgICAgICAgICAgIGFzc2VydCBpLmlzX2ZpbGUoKQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxm
KToKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAg
ICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGEsIGIsIGcg
PSByb290Lml0ZXJkaXIoKQorICAgICAgICAgICAgd2l0aCBhLm9wZW4oKSBhcyBzdHJtOgorICAg
ICAgICAgICAgICAgIGRhdGEgPSBzdHJtLnJlYWQoKQorICAgICAgICAgICAgYXNzZXJ0IGRhdGEg
PT0gImNvbnRlbnQgb2YgYSIKKworICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIGZv
ciBhbHBoYXJlcCBpbiBzZWxmLnppcGZpbGVfYWxwaGFyZXAoKToKKyAgICAgICAgICAgIHJvb3Qg
PSB6aXBwLlBhdGgoYWxwaGFyZXApCisgICAgICAgICAgICBhLCBiLCBnID0gcm9vdC5pdGVyZGly
KCkKKyAgICAgICAgICAgIGFzc2VydCBhLnJlYWRfdGV4dCgpID09ICJjb250ZW50IG9mIGEiCisg
ICAgICAgICAgICBhc3NlcnQgYS5yZWFkX2J5dGVzKCkgPT0gYiJjb250ZW50IG9mIGEiCisKKyAg
ICBkZWYgdGVzdF9qb2lucGF0aChzZWxmKToKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYu
emlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJl
cCkKKyAgICAgICAgICAgIGEgPSByb290LmpvaW5wYXRoKCJhIikKKyAgICAgICAgICAgIGFzc2Vy
dCBhLmlzX2ZpbGUoKQorICAgICAgICAgICAgZSA9IHJvb3Quam9pbnBhdGgoImIiKS5qb2lucGF0
aCgiZCIpLmpvaW5wYXRoKCJlLnR4dCIpCisgICAgICAgICAgICBhc3NlcnQgZS5yZWFkX3RleHQo
KSA9PSAiY29udGVudCBvZiBlIgorCisgICAgZGVmIHRlc3RfdHJhdmVyc2VfdHJ1ZWRpdihzZWxm
KToKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAg
ICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGEgPSByb290
IC8gImEiCisgICAgICAgICAgICBhc3NlcnQgYS5pc19maWxlKCkKKyAgICAgICAgICAgIGUgPSBy
b290IC8gImIiIC8gImQiIC8gImUudHh0IgorICAgICAgICAgICAgYXNzZXJ0IGUucmVhZF90ZXh0
KCkgPT0gImNvbnRlbnQgb2YgZSIKKworICAgIGRlZiB0ZXN0X3RyYXZlcnNlX3NpbXBsZWRpdihz
ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIERpc2FibGUgdGhlIF9fZnV0dXJlX18uZGl2aXNp
b24gd2hlbiB0ZXN0aW5nIHRyYXZlcnNhbC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBhbHBo
YXJlcCBpbiBzZWxmLnppcGZpbGVfYWxwaGFyZXAoKToKKyAgICAgICAgICAgIGNvZGUgPSBjb21w
aWxlKAorICAgICAgICAgICAgICAgIHNvdXJjZT0iemlwcC5QYXRoKGFscGhhcmVwKSAvICdhJyIs
CisgICAgICAgICAgICAgICAgZmlsZW5hbWU9Iih0ZXN0KSIsCisgICAgICAgICAgICAgICAgbW9k
ZT0iZXZhbCIsCisgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUsCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBldmFsKGNvZGUpCisKKyAgICBkZWYgdGVzdF9wYXRobGlrZV9jb25z
dHJ1Y3Rpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICB6aXBwLlBhdGggc2hvdWxkIGJl
IGNvbnN0cnVjdGFibGUgZnJvbSBhIHBhdGgtbGlrZSBvYmplY3QKKyAgICAgICAgIiIiCisgICAg
ICAgIGZvciB6aXBmaWxlX29uZGlzayBpbiBzZWxmLnppcGZpbGVfb25kaXNrKCk6CisgICAgICAg
ICAgICBwYXRobGlrZSA9IHBhdGhsaWIuUGF0aChzdHIoemlwZmlsZV9vbmRpc2spKQorICAgICAg
ICAgICAgemlwcC5QYXRoKHBhdGhsaWtlKQorCisgICAgZGVmIHRlc3RfdHJhdmVyc2VfcGF0aGxp
a2Uoc2VsZik6CisgICAgICAgIGZvciBhbHBoYXJlcCBpbiBzZWxmLnppcGZpbGVfYWxwaGFyZXAo
KToKKyAgICAgICAgICAgIHJvb3QgPSB6aXBwLlBhdGgoYWxwaGFyZXApCisgICAgICAgICAgICBy
b290IC8gcGF0aGxpYi5QYXRoKCJhIikKKworICAgIGRlZiB0ZXN0X3BhcmVudChzZWxmKToKKyAg
ICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAg
ICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGFzc2VydCAocm9vdCAv
ICdhJykucGFyZW50LmF0ID09ICcnCisgICAgICAgICAgICBhc3NlcnQgKHJvb3QgLyAnYScgLyAn
YicpLnBhcmVudC5hdCA9PSAnYS8nCisKKyAgICBkZWYgdGVzdF9kaXJfcGFyZW50KHNlbGYpOgor
ICAgICAgICBmb3IgYWxwaGFyZXAgaW4gc2VsZi56aXBmaWxlX2FscGhhcmVwKCk6CisgICAgICAg
ICAgICByb290ID0gemlwcC5QYXRoKGFscGhhcmVwKQorICAgICAgICAgICAgYXNzZXJ0IChyb290
IC8gJ2InKS5wYXJlbnQuYXQgPT0gJycKKyAgICAgICAgICAgIGFzc2VydCAocm9vdCAvICdiLycp
LnBhcmVudC5hdCA9PSAnJworCisgICAgZGVmIHRlc3RfbWlzc2luZ19kaXJfcGFyZW50KHNlbGYp
OgorICAgICAgICBmb3IgYWxwaGFyZXAgaW4gc2VsZi56aXBmaWxlX2FscGhhcmVwKCk6CisgICAg
ICAgICAgICByb290ID0gemlwcC5QYXRoKGFscGhhcmVwKQorICAgICAgICAgICAgYXNzZXJ0IChy
b290IC8gJ21pc3NpbmcgZGlyLycpLnBhcmVudC5hdCA9PSAnJworCisgICAgZGVmIHRlc3RfbXV0
YWJpbGl0eShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElmIHRoZSB1bmRlcmx5aW5nIHpp
cGZpbGUgaXMgY2hhbmdlZCwgdGhlIFBhdGggb2JqZWN0IHNob3VsZAorICAgICAgICByZWZsZWN0
IHRoYXQgY2hhbmdlLgorICAgICAgICAiIiIKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYu
emlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJl
cCkKKyAgICAgICAgICAgIGEsIGIsIGcgPSByb290Lml0ZXJkaXIoKQorICAgICAgICAgICAgYWxw
aGFyZXAud3JpdGVzdHIoJ2Zvby50eHQnLCBiJ2ZvbycpCisgICAgICAgICAgICBhbHBoYXJlcC53
cml0ZXN0cignYmFyL2Jhei50eHQnLCBiJ2JheicpCisgICAgICAgICAgICBhc3NlcnQgYW55KAor
ICAgICAgICAgICAgICAgIGNoaWxkLm5hbWUgPT0gJ2Zvby50eHQnCisgICAgICAgICAgICAgICAg
Zm9yIGNoaWxkIGluIHJvb3QuaXRlcmRpcigpKQorICAgICAgICAgICAgYXNzZXJ0IChyb290IC8g
J2Zvby50eHQnKS5yZWFkX3RleHQoKSA9PSAnZm9vJworICAgICAgICAgICAgYmF6LCA9IChyb290
IC8gJ2JhcicpLml0ZXJkaXIoKQorICAgICAgICAgICAgYXNzZXJ0IGJhei5yZWFkX3RleHQoKSA9
PSAnYmF6JworCisgICAgSFVHRV9aSVBGSUxFX05VTV9FTlRSSUVTID0gMiAqKiAxMworCisgICAg
ZGVmIGh1Z2VfemlwZmlsZShzZWxmKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgcmVhZC1vbmx5IHpp
cGZpbGUgd2l0aCBhIGh1Z2UgbnVtYmVyIG9mIGVudHJpZXMgZW50cmllcy4iIiIKKyAgICAgICAg
c3RybSA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB6ZiA9IHppcGZpbGUuWmlwRmlsZShzdHJtLCAi
dyIpCisgICAgICAgIGZvciBlbnRyeSBpbiBtYXAoc3RyLCByYW5nZShzZWxmLkhVR0VfWklQRklM
RV9OVU1fRU5UUklFUykpOgorICAgICAgICAgICAgemYud3JpdGVzdHIoZW50cnksIGVudHJ5KQor
ICAgICAgICB6Zi5tb2RlID0gJ3InCisgICAgICAgIHJldHVybiB6ZgorCisgICAgZGVmIHRlc3Rf
am9pbnBhdGhfY29uc3RhbnRfdGltZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3Vy
ZSBqb2lucGF0aCBvbiBpdGVtcyBpbiB6aXBmaWxlIGlzIGxpbmVhciB0aW1lLgorICAgICAgICAi
IiIKKyAgICAgICAgcm9vdCA9IHppcHAuUGF0aChzZWxmLmh1Z2VfemlwZmlsZSgpKQorICAgICAg
ICBlbnRyaWVzID0gamFyYWNvLml0ZXJ0b29scy5Db3VudGVyKHJvb3QuaXRlcmRpcigpKQorICAg
ICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgIGVudHJ5LmpvaW5wYXRoKCdz
dWZmaXgnKQorICAgICAgICAjIENoZWNrIHRoZSBmaWxlIGl0ZXJhdGVkIGFsbCBpdGVtcworICAg
ICAgICBhc3NlcnQgZW50cmllcy5jb3VudCA9PSBzZWxmLkhVR0VfWklQRklMRV9OVU1fRU5UUklF
UworCisgICAgQGZ1bmNfdGltZW91dC5mdW5jX3NldF90aW1lb3V0KDMpCisgICAgZGVmIHRlc3Rf
aW1wbGllZF9kaXJzX3BlcmZvcm1hbmNlKHNlbGYpOgorICAgICAgICBkYXRhID0gWycvJy5qb2lu
KHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHIobikpIGZvciBuIGluIHJhbmdlKDEwMDAwKV0K
KyAgICAgICAgemlwcC5Db21wbGV0ZURpcnMuX2ltcGxpZWRfZGlycyhkYXRhKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS96aXBwL3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvdG94LmluaQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNiNTQyYzEzNmMzOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvemlwcC90b3guaW5pCkBAIC0wLDAgKzEsMzYgQEAKK1t0b3hdCitlbnZsaXN0ID0gcHl0
aG9uCittaW52ZXJzaW9uID0gMy4yCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vc2tlbGV0
b24vaXNzdWVzLzYKK3RveF9waXBfZXh0ZW5zaW9uc19leHRfdmVudl91cGRhdGUgPSB0cnVlCisK
K1t0ZXN0ZW52XQorZGVwcyA9CisJc2V0dXB0b29scz49MzEuMC4xCitjb21tYW5kcyA9CisJcHl0
aG9uIC1tIHVuaXR0ZXN0IGRpc2NvdmVyCit1c2VkZXZlbG9wID0gVHJ1ZQorZXh0cmFzID0gdGVz
dGluZworCitbdGVzdGVudjpidWlsZC1kb2NzXQorZXh0cmFzID0KKyAgICBkb2NzCisgICAgdGVz
dGluZworY2hhbmdlZGlyID0gZG9jcworY29tbWFuZHMgPQorICAgIHB5dGhvbiAtbSBzcGhpbngg
LiB7dG94aW5pZGlyfS9idWlsZC9odG1sCisKK1t0ZXN0ZW52OnJlbGVhc2VdCitza2lwX2luc3Rh
bGwgPSBUcnVlCitkZXBzID0KKwlwZXA1MTc+PTAuNQorCXR3aW5lPj0xLjEzCisJcGF0aC5weQor
cGFzc2VudiA9CisJVFdJTkVfUEFTU1dPUkQKK3NldGVudiA9CisJVFdJTkVfVVNFUk5BTUUgPSB7
ZW52OlRXSU5FX1VTRVJOQU1FOl9fdG9rZW5fX30KK2NvbW1hbmRzID0KKwlweXRob24gLWMgImlt
cG9ydCBwYXRoOyBwYXRoLlBhdGgoJ2Rpc3QnKS5ybXRyZWVfcCgpIgorCXB5dGhvbiAtbSBwZXA1
MTcuYnVpbGQgLgorCXB5dGhvbiAtbSB0d2luZSB1cGxvYWQgZGlzdC8qCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3ppcHAvemlwcC5lZ2ctaW5mby9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZv
L1BLRy1JTkZPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzNlZjFj
ZjAxYzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWluZm8vUEtHLUlO
Rk8KQEAgLTAsMCArMSwzOSBAQAorTWV0YWRhdGEtVmVyc2lvbjogMi4xCitOYW1lOiB6aXBwCitW
ZXJzaW9uOiAxLjIuMAorU3VtbWFyeTogQmFja3BvcnQgb2YgcGF0aGxpYi1jb21wYXRpYmxlIG9i
amVjdCB3cmFwcGVyIGZvciB6aXAgZmlsZXMKK0hvbWUtcGFnZTogaHR0cHM6Ly9naXRodWIuY29t
L2phcmFjby96aXBwCitBdXRob3I6IEphc29uIFIuIENvb21icworQXV0aG9yLWVtYWlsOiBqYXJh
Y29AamFyYWNvLmNvbQorTGljZW5zZTogVU5LTk9XTgorRGVzY3JpcHRpb246IC4uIGltYWdlOjog
aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvemlwcC5zdmcKKyAgICAgICAgICAgOnRhcmdl
dDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3ppcHAKKyAgICAgICAgCisgICAgICAgIC4uIGlt
YWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvemlwcC5zdmcKKyAg
ICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMv
amFyYWNvL3ppcHAvbWFzdGVyLnN2ZworICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZp
cy1jaS5vcmcvamFyYWNvL3ppcHAKKyAgICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6
Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZworICAg
ICAgICAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW1idi9ibGFjaworICAgICAgICAg
ICA6YWx0OiBDb2RlIHN0eWxlOiBCbGFjaworICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBo
dHRwczovL2ltZy5zaGllbGRzLmlvL2FwcHZleW9yL2NpL2phcmFjby96aXBwL21hc3Rlci5zdmcK
KyAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9qYXJh
Y28vemlwcC9icmFuY2gvbWFzdGVyCisgICAgICAgIAorICAgICAgICAuLiAuLiBpbWFnZTo6IGh0
dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL3ppcHAvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0
CisgICAgICAgIC4uICAgIDp0YXJnZXQ6IGh0dHBzOi8vemlwcC5yZWFkdGhlZG9jcy5pby9lbi9s
YXRlc3QvP2JhZGdlPWxhdGVzdAorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIEEgcGF0aGxp
Yi1jb21wYXRpYmxlIFppcGZpbGUgb2JqZWN0IHdyYXBwZXIuIEEgYmFja3BvcnQgb2YgdGhlCisg
ICAgICAgIGBQYXRoIG9iamVjdCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy44L2xpYnJhcnkv
emlwZmlsZS5odG1sI3BhdGgtb2JqZWN0cz5gXy4KKyAgICAgICAgCitQbGF0Zm9ybTogVU5LTk9X
TgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJs
ZQorQ2xhc3NpZmllcjogSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycworQ2xhc3NpZmll
cjogTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogTUlUIExpY2Vuc2UKK0NsYXNzaWZpZXI6IFBy
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcKK0NsYXNzaWZpZXI6IFByb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzCitSZXF1aXJlcy1QeXRob246ID49Mi43CitQcm92
aWRlcy1FeHRyYTogdGVzdGluZworUHJvdmlkZXMtRXh0cmE6IGRvY3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvemlwcC96aXBwLmVnZy1pbmZvL1NPVVJDRVMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWlu
Zm8vU09VUkNFUy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44
NDViMzQyY2VmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvemlwcC5lZ2ctaW5mby9T
T1VSQ0VTLnR4dApAQCAtMCwwICsxLDI0IEBACisuZmxha2U4CisucHJlLWNvbW1pdC1jb25maWcu
eWFtbAorLnJlYWR0aGVkb2NzLnltbAorLnRyYXZpcy55bWwKK0NIQU5HRVMucnN0CitMSUNFTlNF
CitSRUFETUUucnN0CithcHB2ZXlvci55bWwKK2NvbmZ0ZXN0LnB5CitweXByb2plY3QudG9tbAor
c2V0dXAuY2ZnCitzZXR1cC5weQorc2tlbGV0b24ubWQKK3Rlc3RfemlwcC5weQordG94LmluaQor
emlwcC5weQorZG9jcy9jb25mLnB5Citkb2NzL2hpc3RvcnkucnN0Citkb2NzL2luZGV4LnJzdAor
emlwcC5lZ2ctaW5mby9QS0ctSU5GTworemlwcC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAoremlwcC5l
Z2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAoremlwcC5lZ2ctaW5mby9yZXF1aXJlcy50eHQK
K3ppcHAuZWdnLWluZm8vdG9wX2xldmVsLnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWluZm8vZGVwZW5kZW5jeV9saW5rcy50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3ppcHAvemlwcC5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dApAQCAt
MCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL3JlcXVpcmVz
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL3JlcXVpcmVzLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwYmFiNDZhYzQ5MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL3JlcXVpcmVzLnR4dApAQCAtMCwwICsxLDE0IEBA
CisKK1s6cHl0aG9uX3ZlcnNpb24gPCAiMy40Il0KK2NvbnRleHRsaWIyCisKK1tkb2NzXQorc3Bo
aW54CitqYXJhY28ucGFja2FnaW5nPj0zLjIKK3JzdC5saW5rZXI+PTEuOQorCitbdGVzdGluZ10K
K3BhdGhsaWIyCit1bml0dGVzdDIKK2phcmFjby5pdGVydG9vbHMKK2Z1bmMtdGltZW91dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWluZm8vdG9wX2xldmVsLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlw
cC96aXBwLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lODJmNjc2ZjgyYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAv
emlwcC5lZ2ctaW5mby90b3BfbGV2ZWwudHh0CkBAIC0wLDAgKzEgQEAKK3ppcHAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvemlwcC96aXBwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3ppcHAucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OTIyMDU4MzRhYmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3ppcHAvemlwcC5weQpAQCAtMCwwICsxLDI4NiBAQAorIyBjb2Rpbmc6IHV0Zi04CisK
K2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KKworaW1wb3J0IGlvCitpbXBvcnQgc3lz
CitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgemlwZmlsZQoraW1wb3J0IGZ1bmN0b29scworaW1w
b3J0IGl0ZXJ0b29scworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKwordHJ5
OgorICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgc3VwcHJlc3MKK2V4Y2VwdCBJbXBvcnRFcnJv
cjoKKyAgICBmcm9tIGNvbnRleHRsaWIyIGltcG9ydCBzdXBwcmVzcworCitfX21ldGFjbGFzc19f
ID0gdHlwZQorCisKK2RlZiBfcGFyZW50cyhwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiBhIHBh
dGggd2l0aCBlbGVtZW50cyBzZXBhcmF0ZWQgYnkKKyAgICBwb3NpeHBhdGguc2VwLCBnZW5lcmF0
ZSBhbGwgcGFyZW50cyBvZiB0aGF0IHBhdGguCisKKyAgICA+Pj4gbGlzdChfcGFyZW50cygnYi9k
JykpCisgICAgWydiJ10KKyAgICA+Pj4gbGlzdChfcGFyZW50cygnL2IvZC8nKSkKKyAgICBbJy9i
J10KKyAgICA+Pj4gbGlzdChfcGFyZW50cygnYi9kL2YvJykpCisgICAgWydiL2QnLCAnYiddCisg
ICAgPj4+IGxpc3QoX3BhcmVudHMoJ2InKSkKKyAgICBbXQorICAgID4+PiBsaXN0KF9wYXJlbnRz
KCcnKSkKKyAgICBbXQorICAgICIiIgorICAgIHJldHVybiBpdGVydG9vbHMuaXNsaWNlKF9hbmNl
c3RyeShwYXRoKSwgMSwgTm9uZSkKKworCitkZWYgX2FuY2VzdHJ5KHBhdGgpOgorICAgICIiIgor
ICAgIEdpdmVuIGEgcGF0aCB3aXRoIGVsZW1lbnRzIHNlcGFyYXRlZCBieQorICAgIHBvc2l4cGF0
aC5zZXAsIGdlbmVyYXRlIGFsbCBlbGVtZW50cyBvZiB0aGF0IHBhdGgKKworICAgID4+PiBsaXN0
KF9hbmNlc3RyeSgnYi9kJykpCisgICAgWydiL2QnLCAnYiddCisgICAgPj4+IGxpc3QoX2FuY2Vz
dHJ5KCcvYi9kLycpKQorICAgIFsnL2IvZCcsICcvYiddCisgICAgPj4+IGxpc3QoX2FuY2VzdHJ5
KCdiL2QvZi8nKSkKKyAgICBbJ2IvZC9mJywgJ2IvZCcsICdiJ10KKyAgICA+Pj4gbGlzdChfYW5j
ZXN0cnkoJ2InKSkKKyAgICBbJ2InXQorICAgID4+PiBsaXN0KF9hbmNlc3RyeSgnJykpCisgICAg
W10KKyAgICAiIiIKKyAgICBwYXRoID0gcGF0aC5yc3RyaXAocG9zaXhwYXRoLnNlcCkKKyAgICB3
aGlsZSBwYXRoIGFuZCBwYXRoICE9IHBvc2l4cGF0aC5zZXA6CisgICAgICAgIHlpZWxkIHBhdGgK
KyAgICAgICAgcGF0aCwgdGFpbCA9IHBvc2l4cGF0aC5zcGxpdChwYXRoKQorCisKK2NsYXNzIENv
bXBsZXRlRGlycyh6aXBmaWxlLlppcEZpbGUpOgorICAgICIiIgorICAgIEEgWmlwRmlsZSBzdWJj
bGFzcyB0aGF0IGVuc3VyZXMgdGhhdCBpbXBsaWVkIGRpcmVjdG9yaWVzCisgICAgYXJlIGFsd2F5
cyBpbmNsdWRlZCBpbiB0aGUgbmFtZWxpc3QuCisgICAgIiIiCisKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIF9pbXBsaWVkX2RpcnMobmFtZXMpOgorICAgICAgICBwYXJlbnRzID0gaXRlcnRv
b2xzLmNoYWluLmZyb21faXRlcmFibGUobWFwKF9wYXJlbnRzLCBuYW1lcykpCisgICAgICAgICMg
Q2FzdCBuYW1lcyB0byBhIHNldCBmb3IgTygxKSBsb29rdXBzCisgICAgICAgIGV4aXN0aW5nID0g
c2V0KG5hbWVzKQorICAgICAgICAjIERlZHVwbGljYXRlIGVudHJpZXMgaW4gb3JpZ2luYWwgb3Jk
ZXIKKyAgICAgICAgaW1wbGllZF9kaXJzID0gT3JkZXJlZERpY3QuZnJvbWtleXMoCisgICAgICAg
ICAgICBwICsgcG9zaXhwYXRoLnNlcCBmb3IgcCBpbiBwYXJlbnRzCisgICAgICAgICAgICBpZiBw
ICsgcG9zaXhwYXRoLnNlcCBub3QgaW4gZXhpc3RpbmcKKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gaW1wbGllZF9kaXJzCisKKyAgICBkZWYgbmFtZWxpc3Qoc2VsZik6CisgICAgICAgIG5hbWVz
ID0gc3VwZXIoQ29tcGxldGVEaXJzLCBzZWxmKS5uYW1lbGlzdCgpCisgICAgICAgIHJldHVybiBu
YW1lcyArIGxpc3Qoc2VsZi5faW1wbGllZF9kaXJzKG5hbWVzKSkKKworICAgIGRlZiBfbmFtZV9z
ZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZXQoc2VsZi5uYW1lbGlzdCgpKQorCisgICAgZGVm
IHJlc29sdmVfZGlyKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgSWYgdGhlIG5h
bWUgcmVwcmVzZW50cyBhIGRpcmVjdG9yeSwgcmV0dXJuIHRoYXQgbmFtZQorICAgICAgICBhcyBh
IGRpcmVjdG9yeSAod2l0aCB0aGUgdHJhaWxpbmcgc2xhc2gpLgorICAgICAgICAiIiIKKyAgICAg
ICAgbmFtZXMgPSBzZWxmLl9uYW1lX3NldCgpCisgICAgICAgIGRpcm5hbWUgPSBuYW1lICsgJy8n
CisgICAgICAgIGRpcl9tYXRjaCA9IG5hbWUgbm90IGluIG5hbWVzIGFuZCBkaXJuYW1lIGluIG5h
bWVzCisgICAgICAgIHJldHVybiBkaXJuYW1lIGlmIGRpcl9tYXRjaCBlbHNlIG5hbWUKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWtlKGNscywgc291cmNlKToKKyAgICAgICAgIiIiCisg
ICAgICAgIEdpdmVuIGEgc291cmNlIChmaWxlbmFtZSBvciB6aXBmaWxlKSwgcmV0dXJuIGFuCisg
ICAgICAgIGFwcHJvcHJpYXRlIENvbXBsZXRlRGlycyBzdWJjbGFzcy4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIGlzaW5zdGFuY2Uoc291cmNlLCBDb21wbGV0ZURpcnMpOgorICAgICAgICAgICAg
cmV0dXJuIHNvdXJjZQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNvdXJjZSwgemlwZmls
ZS5aaXBGaWxlKToKKyAgICAgICAgICAgIHJldHVybiBjbHMoX3BhdGhsaWJfY29tcGF0KHNvdXJj
ZSkpCisKKyAgICAgICAgIyBPbmx5IGFsbG93IGZvciBGYXN0UGF0aCB3aGVuIHN1cHBsaWVkIHpp
cGZpbGUgaXMgcmVhZC1vbmx5CisgICAgICAgIGlmICdyJyBub3QgaW4gc291cmNlLm1vZGU6Cisg
ICAgICAgICAgICBjbHMgPSBDb21wbGV0ZURpcnMKKworICAgICAgICByZXMgPSBjbHMuX19uZXdf
XyhjbHMpCisgICAgICAgIHZhcnMocmVzKS51cGRhdGUodmFycyhzb3VyY2UpKQorICAgICAgICBy
ZXR1cm4gcmVzCisKKworY2xhc3MgRmFzdExvb2t1cChDb21wbGV0ZURpcnMpOgorICAgICIiIgor
ICAgIFppcEZpbGUgc3ViY2xhc3MgdG8gZW5zdXJlIGltcGxpY2l0CisgICAgZGlycyBleGlzdCBh
bmQgYXJlIHJlc29sdmVkIHJhcGlkbHkuCisgICAgIiIiCisgICAgZGVmIG5hbWVsaXN0KHNlbGYp
OgorICAgICAgICB3aXRoIHN1cHByZXNzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9fbmFtZXMKKyAgICAgICAgc2VsZi5fX25hbWVzID0gc3VwZXIoRmFzdExvb2t1
cCwgc2VsZikubmFtZWxpc3QoKQorICAgICAgICByZXR1cm4gc2VsZi5fX25hbWVzCisKKyAgICBk
ZWYgX25hbWVfc2V0KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHByZXNzKEF0dHJpYnV0ZUVycm9y
KToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fbG9va3VwCisgICAgICAgIHNlbGYuX19sb29r
dXAgPSBzdXBlcihGYXN0TG9va3VwLCBzZWxmKS5fbmFtZV9zZXQoKQorICAgICAgICByZXR1cm4g
c2VsZi5fX2xvb2t1cAorCisKK2RlZiBfcGF0aGxpYl9jb21wYXQocGF0aCk6CisgICAgIiIiCisg
ICAgRm9yIHBhdGgtbGlrZSBvYmplY3RzLCBjb252ZXJ0IHRvIGEgZmlsZW5hbWUgZm9yIGNvbXBh
dGliaWxpdHkKKyAgICBvbiBQeXRob24gMy42LjEgYW5kIGVhcmxpZXIuCisgICAgIiIiCisgICAg
dHJ5OgorICAgICAgICByZXR1cm4gcGF0aC5fX2ZzcGF0aF9fKCkKKyAgICBleGNlcHQgQXR0cmli
dXRlRXJyb3I6CisgICAgICAgIHJldHVybiBzdHIocGF0aCkKKworCitjbGFzcyBQYXRoOgorICAg
ICIiIgorICAgIEEgcGF0aGxpYi1jb21wYXRpYmxlIGludGVyZmFjZSBmb3IgemlwIGZpbGVzLgor
CisgICAgQ29uc2lkZXIgYSB6aXAgZmlsZSB3aXRoIHRoaXMgc3RydWN0dXJlOjoKKworICAgICAg
ICAuCisgICAgICAgIOKUnOKUgOKUgCBhLnR4dAorICAgICAgICDilJTilIDilIAgYgorICAgICAg
ICAgICAg4pSc4pSA4pSAIGMudHh0CisgICAgICAgICAgICDilJTilIDilIAgZAorICAgICAgICAg
ICAgICAgIOKUlOKUgOKUgCBlLnR4dAorCisgICAgPj4+IGRhdGEgPSBpby5CeXRlc0lPKCkKKyAg
ICA+Pj4gemYgPSB6aXBmaWxlLlppcEZpbGUoZGF0YSwgJ3cnKQorICAgID4+PiB6Zi53cml0ZXN0
cignYS50eHQnLCAnY29udGVudCBvZiBhJykKKyAgICA+Pj4gemYud3JpdGVzdHIoJ2IvYy50eHQn
LCAnY29udGVudCBvZiBjJykKKyAgICA+Pj4gemYud3JpdGVzdHIoJ2IvZC9lLnR4dCcsICdjb250
ZW50IG9mIGUnKQorICAgID4+PiB6Zi5maWxlbmFtZSA9ICdhYmNkZS56aXAnCisKKyAgICBQYXRo
IGFjY2VwdHMgdGhlIHppcGZpbGUgb2JqZWN0IGl0c2VsZiBvciBhIGZpbGVuYW1lCisKKyAgICA+
Pj4gcm9vdCA9IFBhdGgoemYpCisKKyAgICBGcm9tIHRoZXJlLCBzZXZlcmFsIHBhdGggb3BlcmF0
aW9ucyBhcmUgYXZhaWxhYmxlLgorCisgICAgRGlyZWN0b3J5IGl0ZXJhdGlvbiAoaW5jbHVkaW5n
IHRoZSB6aXAgZmlsZSBpdHNlbGYpOgorCisgICAgPj4+IGEsIGIgPSByb290Lml0ZXJkaXIoKQor
ICAgID4+PiBhCisgICAgUGF0aCgnYWJjZGUuemlwJywgJ2EudHh0JykKKyAgICA+Pj4gYgorICAg
IFBhdGgoJ2FiY2RlLnppcCcsICdiLycpCisKKyAgICBuYW1lIHByb3BlcnR5OgorCisgICAgPj4+
IGIubmFtZQorICAgICdiJworCisgICAgam9pbiB3aXRoIGRpdmlkZSBvcGVyYXRvcjoKKworICAg
ID4+PiBjID0gYiAvICdjLnR4dCcKKyAgICA+Pj4gYworICAgIFBhdGgoJ2FiY2RlLnppcCcsICdi
L2MudHh0JykKKyAgICA+Pj4gYy5uYW1lCisgICAgJ2MudHh0JworCisgICAgUmVhZCB0ZXh0Ogor
CisgICAgPj4+IGMucmVhZF90ZXh0KCkKKyAgICAnY29udGVudCBvZiBjJworCisgICAgZXhpc3Rl
bmNlOgorCisgICAgPj4+IGMuZXhpc3RzKCkKKyAgICBUcnVlCisgICAgPj4+IChiIC8gJ21pc3Np
bmcudHh0JykuZXhpc3RzKCkKKyAgICBGYWxzZQorCisgICAgQ29lcmNpb24gdG8gc3RyaW5nOgor
CisgICAgPj4+IHN0cihjKQorICAgICdhYmNkZS56aXAvYi9jLnR4dCcKKyAgICAiIiIKKworICAg
IF9fcmVwciA9ICJ7c2VsZi5fX2NsYXNzX18uX19uYW1lX199KHtzZWxmLnJvb3QuZmlsZW5hbWUh
cn0sIHtzZWxmLmF0IXJ9KSIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290LCBhdD0iIik6
CisgICAgICAgIHNlbGYucm9vdCA9IEZhc3RMb29rdXAubWFrZShyb290KQorICAgICAgICBzZWxm
LmF0ID0gYXQKKworICAgIGRlZiBvcGVuKHNlbGYsIG1vZGU9J3InLCAqYXJncywgKiprd2FyZ3Mp
OgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbiB0aGlzIGVudHJ5IGFzIHRleHQgb3IgYmluYXJ5
IGZvbGxvd2luZyB0aGUgc2VtYW50aWNzCisgICAgICAgIG9mIGBgcGF0aGxpYi5QYXRoLm9wZW4o
KWBgIGJ5IHBhc3NpbmcgYXJndW1lbnRzIHRocm91Z2gKKyAgICAgICAgdG8gaW8uVGV4dElPV3Jh
cHBlcigpLgorICAgICAgICAiIiIKKyAgICAgICAgcHdkID0ga3dhcmdzLnBvcCgncHdkJywgTm9u
ZSkKKyAgICAgICAgemlwX21vZGUgPSBtb2RlWzBdCisgICAgICAgIHN0cmVhbSA9IHNlbGYucm9v
dC5vcGVuKHNlbGYuYXQsIHppcF9tb2RlLCBwd2Q9cHdkKQorICAgICAgICBpZiAnYicgaW4gbW9k
ZToKKyAgICAgICAgICAgIGlmIGFyZ3Mgb3Iga3dhcmdzOgorICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoImVuY29kaW5nIGFyZ3MgaW52YWxpZCBmb3IgYmluYXJ5IG9wZXJhdGlvbiIp
CisgICAgICAgICAgICByZXR1cm4gc3RyZWFtCisgICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFw
cGVyKHN0cmVhbSwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5h
bWUoc2VsZik6CisgICAgICAgIHJldHVybiBwb3NpeHBhdGguYmFzZW5hbWUoc2VsZi5hdC5yc3Ry
aXAoIi8iKSkKKworICAgIGRlZiByZWFkX3RleHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAg
ICAgICAgd2l0aCBzZWxmLm9wZW4oJ3InLCAqYXJncywgKiprd2FyZ3MpIGFzIHN0cm06CisgICAg
ICAgICAgICByZXR1cm4gc3RybS5yZWFkKCkKKworICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgor
ICAgICAgICB3aXRoIHNlbGYub3BlbigncmInKSBhcyBzdHJtOgorICAgICAgICAgICAgcmV0dXJu
IHN0cm0ucmVhZCgpCisKKyAgICBkZWYgX2lzX2NoaWxkKHNlbGYsIHBhdGgpOgorICAgICAgICBy
ZXR1cm4gcG9zaXhwYXRoLmRpcm5hbWUocGF0aC5hdC5yc3RyaXAoIi8iKSkgPT0gc2VsZi5hdC5y
c3RyaXAoIi8iKQorCisgICAgZGVmIF9uZXh0KHNlbGYsIGF0KToKKyAgICAgICAgcmV0dXJuIFBh
dGgoc2VsZi5yb290LCBhdCkKKworICAgIGRlZiBpc19kaXIoc2VsZik6CisgICAgICAgIHJldHVy
biBub3Qgc2VsZi5hdCBvciBzZWxmLmF0LmVuZHN3aXRoKCIvIikKKworICAgIGRlZiBpc19maWxl
KHNlbGYpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuaXNfZGlyKCkKKworICAgIGRlZiBleGlz
dHMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmF0IGluIHNlbGYucm9vdC5fbmFtZV9zZXQo
KQorCisgICAgZGVmIGl0ZXJkaXIoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2Rpcigp
OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgbGlzdGRpciBhIGZpbGUiKQor
ICAgICAgICBzdWJzID0gbWFwKHNlbGYuX25leHQsIHNlbGYucm9vdC5uYW1lbGlzdCgpKQorICAg
ICAgICByZXR1cm4gZmlsdGVyKHNlbGYuX2lzX2NoaWxkLCBzdWJzKQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIHJldHVybiBwb3NpeHBhdGguam9pbihzZWxmLnJvb3QuZmlsZW5h
bWUsIHNlbGYuYXQpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9fcmVwci5mb3JtYXQoc2VsZj1zZWxmKQorCisgICAgZGVmIGpvaW5wYXRoKHNlbGYsIGFk
ZCk6CisgICAgICAgIG5leHQgPSBwb3NpeHBhdGguam9pbihzZWxmLmF0LCBfcGF0aGxpYl9jb21w
YXQoYWRkKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX25leHQoc2VsZi5yb290LnJlc29sdmVfZGly
KG5leHQpKQorCisgICAgX190cnVlZGl2X18gPSBqb2lucGF0aAorCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIHBhcmVudChzZWxmKToKKyAgICAgICAgcGFyZW50X2F0ID0gcG9zaXhwYXRoLmRpcm5h
bWUoc2VsZi5hdC5yc3RyaXAoJy8nKSkKKyAgICAgICAgaWYgcGFyZW50X2F0OgorICAgICAgICAg
ICAgcGFyZW50X2F0ICs9ICcvJworICAgICAgICByZXR1cm4gc2VsZi5fbmV4dChwYXJlbnRfYXQp
CisKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKToKKyAgICAgICAgX19kaXZfXyA9IF9f
dHJ1ZWRpdl9fCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RveC5pbmkKaW5kZXggMWE5NGVjMzQwMjE2Li5mM2IwYzRkZDNl
ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdG94LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RveC5pbmkKQEAgLTEsMTEgKzEsMTIgQEAKIFt0b3hdCi1lbnZsaXN0
ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4LHtweTI3LHB5MzUscHkzNixweTM3LHB5Mzh9LWZs
YWtlOCxweTM4LW15cHkyLHtweTM1LHB5Mzh9LW15cHkzCitlbnZsaXN0ID0gcHkzNixweTM3LHB5
Mzgse3B5MzYscHkzNyxweTM4fS1mbGFrZTgse3B5MzYscHkzOH0tbXlweTMKIHNraXBzZGlzdD1U
cnVlCiBza2lwX21pc3NpbmdfaW50ZXJwcmV0ZXJzID0gRmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBz
ID0KLSAgcHl0ZXN0CisgICMgU2FtZSBhcyB0b29scy90aGlyZF9wYXJ0eS9weXRlc3QsIGFsc28g
dGhlIGxhc3QgdmVyc2lvbiB0aGF0IHN1cHBvcnRzIFB5dGhvbiAyCisgIHB5dGVzdD09NC42LjEx
CiAgIHB5dGVzdC1jb3YKICAgIyBtb2NrIG5vIGxvbmdlciBzdXBwb3J0cyBQeXRob24gMiBzaW5j
ZSB2NAogICBtb2NrPT0zLioKQEAgLTIzLDE0ICsyNCw2IEBAIHBhc3NlbnYgPQogICBQWV9DT0xP
UlMKICAgVEFTS0NMVVNURVJfUk9PVF9VUkwKIAotW3Rlc3RlbnY6cHkyNy1mbGFrZThdCi1kZXBz
ID0gLXJyZXF1aXJlbWVudHNfZmxha2U4LnR4dAotY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQt
Y29uZmlnPXt0b3hpbmlkaXJ9L3B5MjctZmxha2U4LmluaSB7cG9zYXJnc30KLQotW3Rlc3RlbnY6
cHkzNS1mbGFrZThdCi1kZXBzID0gLXJyZXF1aXJlbWVudHNfZmxha2U4LnR4dAotY29tbWFuZHMg
PSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5My1mbGFrZTguaW5pIHtwb3Nh
cmdzfQotCiBbdGVzdGVudjpweTM2LWZsYWtlOF0KIGRlcHMgPSAtcnJlcXVpcmVtZW50c19mbGFr
ZTgudHh0CiBjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkz
LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CkBAIC00MywxOCArMzYsNiBAQCBjb21tYW5kcyA9IGZsYWtl
OCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiBk
ZXBzID0gLXJyZXF1aXJlbWVudHNfZmxha2U4LnR4dAogY29tbWFuZHMgPSBmbGFrZTggLS1hcHBl
bmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5My1mbGFrZTguaW5pIHtwb3NhcmdzfQogCi1bdGVzdGVu
djpweTM4LW15cHkyXQotZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0Ci1jaGFuZ2VkaXIg
PSB7dG94aW5pZGlyfS8uLgotY29tbWFuZHMgPQotICBteXB5IC0tY29uZmlnLWZpbGU9e3RveGlu
aWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAtLXB5MiAtcCB0b29scy5tYW5pZmVzdCAt
cCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQotCi1bdGVzdGVudjpweTM1LW15cHkzXQot
ZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0Ci1jaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8u
LgotY29tbWFuZHMgPQotICBteXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkg
LS1uby1pbmNyZW1lbnRhbCAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xz
LmdpdGlnbm9yZQotCiBbdGVzdGVudjpweTM4LW15cHkzXQogZGVwcyA9IC1ycmVxdWlyZW1lbnRz
X215cHkudHh0CiBjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NzIyOTQwNmJhYS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL01FVEEueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5pCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTI3LWZsYWtlOC5pbmkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTgu
aW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXRlc3QuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIy
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAot
IyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3Rv
cnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2Rh
dGEvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvZGF0YS9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRl
MjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL2RhdGEvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvX19pbml0X18ucHkK
QEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL2RhdGEvZXhjZXB0aW9ucy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kYXRhL2V4Y2VwdGlvbnMv
X19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9k
YXRhL2V4Y2VwdGlvbnMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvZXhjZXB0aW9ucy9fX2luaXRfXy5w
eQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNl
YXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNlcHRpb25zL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvZXhjZXB0
aW9ucy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRmOWMw
NjAxODU5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvZXhjZXB0aW9ucy93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kYXRhL2V4Y2VwdGlvbnMvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvZGF0YS9leGNlcHRpb25zL2R1cGxpY2F0ZV9leGNlcHRpb24ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNl
cHRpb25zL2ludmFsaWRfZGF0YV9leGNlcHRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNlcHRpb25zL25vdF9mb3Vu
ZF9leGNlcHRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNlcHRpb25zL3Blcm1pc3Npb25fZGVuaWVkX2V4Y2VwdGlv
bi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzYmI0YmQ5MmNmLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL2RhdGEvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvZGF0YS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kYXRhL2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kYXRhL2h0dHBfcG9sbGluZ19j
bGllbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvZGF0YS9zZXNzaW9uLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvZG9jcy9yZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDc5ZThjMDQ1ZTNlZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9jb25maWd1cmF0
aW9uX3BhZ2VfYm90dG9tLmpwZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9jb25maWd1cmF0aW9uX3BhZ2VfZXhjbHVkZV9h
ZGRfbWFsZnVuY3Rpb25pbmcuanBnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzL2NvbmZpZ3VyYXRpb25fcGFnZV9leGNsdWRl
X2FkZF9wcmV2X2V4Y2x1ZGVkLmpwZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9jb25maWd1cmF0aW9uX3BhZ2VfZXhjbHVk
ZV9hZGRfcmF3LmpwZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9jb25maWd1cmF0aW9uX3BhZ2VfdG9wLmpwZwotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jl
cy9sYW5kaW5nX3BhZ2UuanBnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzL292ZXJ2aWV3X3BhZ2Vfc2Vzc2lvbnMuanBnCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2Rv
Y3MvcmVzL292ZXJ2aWV3X3BhZ2Vfc2Vzc2lvbnNfZmlsdGVyZWQuanBnCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzL292ZXJ2
aWV3X3BhZ2Vfc2Vzc2lvbnNfcGlubmVkX3JlY2VudC5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvb3ZlcnZpZXdfcGFn
ZV90b3AuanBnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL2RvY3MvcmVzL3Jlc3VsdHNfcGFnZV9hcGlfcmVzdWx0cy5qcGcKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMv
cmVzdWx0c19wYWdlX2FwaV9yZXN1bHRzX2V4cG9ydC5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVzdWx0c19wYWdl
X2JvdHRvbS5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVzdWx0c19wYWdlX2xhc3RfdGltZWRfb3V0LmpwZwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2Nz
L3Jlcy9yZXN1bHRzX3BhZ2VfbWFsZnVuY3Rpb25pbmdfbGlzdC5qcGcKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVzdWx0
c19wYWdlX3RvcC5qcGcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Jlc3VsdHMtYXBpL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL2RvY3MvcmVzdC1hcGkvcmVzdWx0cy1hcGkvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYjU4YWM3YThhMC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9k
b2NzL3Jlc3QtYXBpL3Jlc3VsdHMtYXBpL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvcmVzdWx0cy1hcGkvY29uZmlnLm1k
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L2RvY3MvcmVzdC1hcGkvcmVzdWx0cy1hcGkvY3JlYXRlLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvcmVzdWx0
cy1hcGkvZG93bmxvYWQubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9yZXN1bHRzLWFwaS9pbXBvcnQubWQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9j
cy9yZXN0LWFwaS9yZXN1bHRzLWFwaS9yZWFkLWNvbXBhY3QubWQKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9yZXN1
bHRzLWFwaS9yZWFkLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvcmVzdWx0cy1hcGkvdmlldy5tZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL2RvY3MvcmVzdC1hcGkvc2Vzc2lvbnMtYXBpL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1h
cGkvc2Vzc2lvbnMtYXBpL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZjBhMGUwNjFhYjcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9zZXNzaW9u
cy1hcGkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvZG9jcy9yZXN0LWFwaS9zZXNzaW9ucy1hcGkvY29udHJvbC5tZAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nl
c3Npb25zLWFwaS9jcmVhdGUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9zZXNzaW9ucy1hcGkvZGVsZXRlLm1k
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L2RvY3MvcmVzdC1hcGkvc2Vzc2lvbnMtYXBpL2V2ZW50cy5tZAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Np
b25zLWFwaS9maW5kLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvc2Vzc2lvbnMtYXBpL2xhYmVscy5tZAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2Nz
L3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS9yZWFkLXB1YmxpYy5tZAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Np
b25zLWFwaS9yZWFkLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvc2Vzc2lvbnMtYXBpL3N0YXR1cy5tZAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2Nz
L3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS91cGRhdGUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBp
L3Rlc3RzLWFwaS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Rlc3RzLWFwaS93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhkMGExZTkzZTVmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvdGVzdHMtYXBpL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvdGVzdHMtYXBp
L3JlYWQtYWxsLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvdGVzdHMtYXBpL3JlYWQtYXZhaWxhYmxlLWFwaXMu
bWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvZG9jcy9yZXN0LWFwaS90ZXN0cy1hcGkvcmVhZC1sYXN0LWNvbXBsZXRlZC5tZAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jl
c3QtYXBpL3Rlc3RzLWFwaS9yZWFkLW1hbGZ1bmN0aW9uaW5nLm1kCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvdGVz
dHMtYXBpL3JlYWQtbmV4dC5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Rlc3RzLWFwaS9yZWFkLXNlc3Npb24u
bWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvZG9jcy9yZXN0LWFwaS90ZXN0cy1hcGkvdXBkYXRlLW1hbGZ1bmN0aW9uaW5nLm1kCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvZG9jcy9yZXN0LWFwaS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTc5MmMwNTNkNDguLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL1JFQURNRS5tZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L2RvY3MvdXNhZ2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy91c2FnZS93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgzMDRjZDhiMTJhLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L2RvY3MvdXNhZ2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvZG9jcy91c2FnZS91c2FnZS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE5
ODUxYmUwOTFjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9SRUFETUUubWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9l
eHBvcnQvY3NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC9jc3MvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ODhkMGRjMTlmMy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9l
eHBvcnQvY3NzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL2V4cG9ydC9jc3MvYnVsbWEubWluLmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvY3NzL3Jlc3VsdC5jc3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS9leHBvcnQvbGliL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC9saWIvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzgxNWM1ZmRmZS4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS9leHBvcnQvbGliL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTgg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2V4cG9ydC9saWIvdWkuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZXhwb3J0L2xpYi91dGlscy5qcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL2V4cG9ydC9yZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZXhwb3J0L3Jlcy93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3MmUzNWQ5OGU4Li4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL2V4cG9ydC9yZXMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvZXhwb3J0L3Jlcy93YXZlbG9nb18yMDE2LmpwZwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4
cG9ydC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU0N2UyMWY1N2U3Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZXhwb3J0
L2luZGV4Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvX19pbml0
X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3Jr
L19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3Jr
L2FwaS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1
YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvYXBpL19faW5pdF9fLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9u
ZXR3b3JrL2FwaS9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvbmV0d29yay9hcGkvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvbmV0d29yay9hcGkvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZlNDA0OWU0MzI3Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2Fw
aS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9hcGlfaGFuZGxlci5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9yZXN1
bHRzX2FwaV9oYW5kbGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvYXBpL3Nlc3Npb25zX2FwaV9oYW5kbGVyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25l
dHdvcmsvYXBpL3Rlc3RzX2FwaV9oYW5kbGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvbmV0d29yay93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS9uZXR3b3JrL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyMTlmZmU5MjMxOTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvbmV0d29yay93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL19faW5pdF9f
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL25ldHdvcmsvaHR0cF9oYW5kbGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvc3RhdGljX2hhbmRsZXIucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS9yZXNvdXJjZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvcmVzb3VyY2VzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjY1YTU2MGZkY2MuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvcmVzb3VyY2VzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rl
c3RpbmcvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUu
LmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RpbmcvX19pbml0X18ucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3Rpbmcv
X19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5
dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiZTIzMzFlMGRl
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy9fX2luaXRfXy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS90ZXN0aW5nL2V2ZW50
X2Rpc3BhdGNoZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvdGVzdGluZy9yZXN1bHRzX21hbmFnZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy9zZXNzaW9u
c19tYW5hZ2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3Rlc3RpbmcvdGVzdF9sb2FkZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy90ZXN0c19tYW5hZ2Vy
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL3Rlc3Rpbmcvd3B0X3JlcG9ydC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWFk
Zjg5NTc2MTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdHMvV0FWRSBMb2NhbC5wb3N0bWFuX2Vu
dmlyb25tZW50Lmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvdGVzdHMvV0FWRSBTZXJ2ZXIgUkVTVCBBUEkgVGVzdHMucG9zdG1hbl9j
b2xsZWN0aW9uLmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvdGVzdHMvdGVzdF93YXZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdG94LmluaSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS90b3gu
aW5pCmluZGV4IDhlM2UyNmUxMzViNC4uYzcwYTQ2Y2MzYzk1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdG94LmluaQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvdG94LmluaQpAQCAtMSwxMSArMSwxMiBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3LHB5MzUs
cHkzNixweTM3LHB5MzgKK2Vudmxpc3QgPSBweTM2LHB5MzcscHkzOAogc2tpcHNkaXN0PVRydWUK
IHNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQot
ICBweXRlc3QKKyAgIyBTYW1lIGFzIHRvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdCwgYWxzbyB0aGUg
bGFzdCB2ZXJzaW9uIHRoYXQgc3VwcG9ydHMgUHl0aG9uIDIKKyAgcHl0ZXN0PT00LjYuMTEKICAg
cHl0ZXN0LWNvdgogICBoeXBvdGhlc2lzCiAgIG1vY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy9fX2luaXRf
Xy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2F2ZS91dGlscy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL3V0aWxzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy9fX2luaXRfXy5weQpAQCAtMSAr
MCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlz
IGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvdXRpbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdXRpbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OTM1MzMzNGNjMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGls
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91
dGlscy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS91dGlscy9kZXNlcmlhbGl6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdXRpbHMvc2VyaWFsaXplci5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS91dGlscy91c2VyX2FnZW50X3BhcnNlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzFmNDA3ZDZjNGIu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvY29uZmlnLmRlZmF1bHQuanNvbgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9jb25maWd1cmF0
aW9uX2xvYWRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3RveC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd2F2ZV9zZXJ2ZXIucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAuNy41L2J1bG1hLmNzcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAuNy41
L2J1bG1hLmNzcwppbmRleCBmOTk0ODRiYzRhMjkuLjE1MGJiZmQzNGEzYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3
dy9jc3MvYnVsbWEtMC43LjUvYnVsbWEuY3NzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAuNy41L2J1bG1h
LmNzcwpAQCAtMjYsOSArMjYsOSBAQAogLnBhZ2luYXRpb24tZWxsaXBzaXMsIC50YWJzIHsKICAg
LXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwogICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25l
OwotICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICB1c2VyLXNlbGVjdDogbm9uZTsKICAg
LW1zLXVzZXItc2VsZWN0OiBub25lOwotICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICB1
c2VyLXNlbGVjdDogbm9uZTsKIH0KIAogLnNlbGVjdDpub3QoLmlzLW11bHRpcGxlKTpub3QoLmlz
LWxvYWRpbmcpOjphZnRlciwgLm5hdmJhci1saW5rOm5vdCguaXMtYXJyb3dsZXNzKTo6YWZ0ZXIg
ewpAQCAtMzM4LDcgKzMzOCw3IEBAIGh0bWwgewogICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6
IDEwMCU7CiAgICAgIC1tb3otdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgICAgIC1tcy10ZXh0
LXNpemUtYWRqdXN0OiAxMDAlOwotICAgICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDog
MTAwJTsKKyAgICAgICAgICB0ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogfQogCiBhcnRpY2xlLApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL3d3dy9jc3MvYnVsbWEtMC43LjUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2Nzcy9idWxt
YS0wLjcuNS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEw
ODk4ZmNmNjdmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvYnVsbWEtMC43LjUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci11c2VyLXNlbGVjdAotdGV4dC1zaXplLWFkanVzdAotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3d3dy9jc3MvYnVsbWEtMC43LjUvYnVsbWEuY3NzCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvYnVsbWEt
MC43LjUvYnVsbWEuY3NzLm1hcAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAuNy41L2J1bG1hLm1pbi5jc3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS93d3cvY3NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NmNiZjA0M2RiMy4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS93d3cvY3NzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL3d3dy9jc3MvZm9udGF3ZXNvbWUtNS43LjIubWluLmNzcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL2ZvbnRhd2Vz
b21lLm1pbi5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvd3d3L2Nzcy9tYWluLmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL3Jlc3VsdC5jc3MKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2Nzcy9z
dHlsZS5jc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvbGliL2Rhdmlkc2hpbWpzL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3
dy9saWIvZGF2aWRzaGltanMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGNlZjIwMzExYmFiMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvbGliL2Rhdmlkc2hpbWpz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3
dy9saWIvZGF2aWRzaGltanMvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvbGliL2Rhdmlkc2hpbWpzL3FyY29kZS5qcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL3d3dy9saWIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2xpYi93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1ZjRkOTA5ZGQ3Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL3d3dy9saWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvd3d3L2xpYi9rZXljb2Rlcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvbGliL3VpLmpzCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9saWIvdXRpbHMu
anMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvd3d3L2xpYi93YXZlLXNlcnZpY2UuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvcmVzL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL3d3dy9yZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM1ZTgwNTJjNmU5Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvcmVzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9yZXMvc3Bpbm5lci1zb2xp
ZC5zdmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvd3d3L3Jlcy93YXZlbG9nb18yMDE2LmpwZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2F2ZS93d3cvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBm
MmIwMTVhMDFlZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2NvbXBhcmlzb24uaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY29u
ZmlndXJhdGlvbi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL3d3dy9mYXZpY29uLmljbwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvZmluaXNoLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2luZGV4
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvd3d3L25ld3Nlc3Npb24uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvbmV4dC5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9vdmVydmlldy5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L3d3dy9wYXVzZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL3d3dy9yZXN1bHRzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3N1Ym1pdHJlc3VsdC5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvd3d3L3dlYmZvbnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250cy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc2OTRkNGZkODFmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3d3dy93ZWJmb250cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDMxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3
L3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAuc3ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0
ZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS93d3cvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250cy9mYS1icmFuZHMt
NDAwLndvZmYyCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL3d3dy93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5lb3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3dlYmZvbnRzL2Zh
LXJlZ3VsYXItNDAwLnN2ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtcmVndWxhci00MDAudHRmCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJm
b250cy9mYS1yZWd1bGFyLTQwMC53b2ZmCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2Zm
MgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS93d3cvd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtc29saWQtOTAw
LnN2ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2F2ZS93d3cvd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtc29saWQt
OTAwLndvZmYKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvd3d3L3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIv
LmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd2ViZHJpdmVyLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lODQxM2UwZWU0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci8uZ2l0aWdub3Jl
CkBAIC0wLDAgKzEsMiBAQAord2ViZHJpdmVyLmVnZy1pbmZvLworKi5weWMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE5NWRiYzczMmVmZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvUkVBRE1F
Lm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
ZWJkcml2ZXIvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci9fX2luaXRfXy5weQppbmRleCBkODYwYjllYTI1MzMuLmE4MTc1MTQwN2U3
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci9fX2luaXRfXy5weQpAQCAtNiw2ICs2LDcgQEAgZnJvbSAuY2xpZW50IGltcG9ydCAoCiAgICAg
RmluZCwKICAgICBGcmFtZSwKICAgICBTZXNzaW9uLAorICAgIFNoYWRvd1Jvb3QsCiAgICAgVGlt
ZW91dHMsCiAgICAgV2luZG93KQogZnJvbSAuZXJyb3IgaW1wb3J0ICgKQEAgLTM0LDMgKzM1LDUg
QEAgZnJvbSAuZXJyb3IgaW1wb3J0ICgKICAgICBVbmtub3duTWV0aG9kRXhjZXB0aW9uLAogICAg
IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLAogICAgIFdlYkRyaXZlckV4Y2VwdGlvbikK
K2Zyb20gLmJpZGkgaW1wb3J0ICgKKyAgICBCaWRpU2Vzc2lvbikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dl
YmRyaXZlci9iaWRpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2JpZGkucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYmNkNDg5Y2QzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZl
ci93ZWJkcml2ZXIvYmlkaS5weQpAQCAtMCwwICsxLDU2IEBACitpbXBvcnQgY29weQoraW1wb3J0
IHdlYnNvY2tldHMKKworZnJvbSAuIGltcG9ydCBjbGllbnQKKworY2xhc3MgQmlkaVNlc3Npb24o
Y2xpZW50LlNlc3Npb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAg
ICBob3N0LAorICAgICAgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgICAgICB1cmxfcHJl
Zml4PSIvIiwKKyAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzPU5vbmUsCisgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbj1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEFkZCBhIGNhcGFi
aWxpdHkgb2YgIndlYlNvY2tldFVybCI6IFRydWUgdG8gZW5hYmxlCisgICAgICAgIEJpZGlyZWN0
aW9uYWwgY29ubmVjdGlvbiBpbiBzZXNzaW9uIGNyZWF0aW9uLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi53ZWJzb2NrZXRfdHJhbnNwb3J0ID0gTm9uZQorICAgICAgICBjYXBhYmlsaXRpZXMg
PSBzZWxmLl9lbmFibGVfd2Vic29ja2V0KGNhcGFiaWxpdGllcykKKyAgICAgICAgc3VwZXIoKS5f
X2luaXRfXyhob3N0LCBwb3J0LCB1cmxfcHJlZml4LCBjYXBhYmlsaXRpZXMsIGV4dGVuc2lvbikK
KworICAgIGRlZiBfZW5hYmxlX3dlYnNvY2tldChzZWxmLCBjYXBzKToKKyAgICAgICAgaWYgY2Fw
czoKKyAgICAgICAgICAgIGNhcHMuc2V0ZGVmYXVsdCgiYWx3YXlzTWF0Y2giLCB7fSkudXBkYXRl
KHsid2ViU29ja2V0VXJsIjogVHJ1ZX0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXBz
ID0geyJhbHdheXNNYXRjaCI6IHsid2ViU29ja2V0VXJsIjogVHJ1ZX19CisgICAgICAgIHJldHVy
biBjYXBzCisKKyAgICBkZWYgbWF0Y2goc2VsZiwgY2FwYWJpbGl0aWVzKToKKyAgICAgICAgIiIi
RXhwZW5zaXZlIG1hdGNoIHRvIHNlZSBpZiBjYXBhYmlsaXRpZXMgaXMgdGhlIHNhbWUgYXMgcHJl
dmlvdXNseQorICAgICAgICByZXF1ZXN0ZWQgY2FwYWJpbGl0aWVzIGlmIHdlYnNvY2tldCB3b3Vs
ZCBiZSBlbmFibGVkLgorCisgICAgICAgIDpyZXR1cm4gQm9vbGVhbi4KKyAgICAgICAgIiIiCisg
ICAgICAgIGNhcHMgPSBjb3B5LmRlZXBjb3B5KGNhcGFiaWxpdGllcykKKyAgICAgICAgY2FwcyA9
IHNlbGYuX2VuYWJsZV93ZWJzb2NrZXQoY2FwcykKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubWF0
Y2goY2FwcykKKworICAgIGFzeW5jIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiU3RhcnQg
YSBuZXcgV2ViRHJpdmVyIEJpZGlyZWN0aW9uYWwgc2Vzc2lvbgorICAgICAgICB3aXRoIHdlYnNv
Y2tldCBjb25uZWN0ZWQuCisKKyAgICAgICAgOnJldHVybjogRGljdGlvbmFyeSB3aXRoIGBjYXBh
YmlsaXRpZXNgIGFuZCBgc2Vzc2lvbklkYC4KKyAgICAgICAgIiIiCisgICAgICAgIHZhbHVlID0g
c3VwZXIoKS5zdGFydCgpCisKKyAgICAgICAgaWYgbm90IHNlbGYud2Vic29ja2V0X3RyYW5zcG9y
dCBvciBub3Qgc2VsZi53ZWJzb2NrZXRfdHJhbnNwb3J0Lm9wZW46CisgICAgICAgICAgICBzZWxm
LndlYnNvY2tldF90cmFuc3BvcnQgPSBhd2FpdCB3ZWJzb2NrZXRzLmNvbm5lY3Qoc2VsZi5jYXBh
YmlsaXRpZXNbIndlYlNvY2tldFVybCJdKQorICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGFz
eW5jIGRlZiBlbmQoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHdlYnNvY2tldCBjb25uZWN0aW9u
IGZpcnN0IGJlZm9yZSBjbG9zaW5nIHNlc3Npb24uCisgICAgICAgICIiIgorICAgICAgICBpZiBz
ZWxmLndlYnNvY2tldF90cmFuc3BvcnQ6CisgICAgICAgICAgICBhd2FpdCBzZWxmLndlYnNvY2tl
dF90cmFuc3BvcnQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXRfdHJhbnNwb3J0
ID0gTm9uZQorICAgICAgICBzdXBlcigpLmVuZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIv
Y2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQppbmRleCBmNGUzYzc2Mzc5NWUuLjIy
NTMzNDA5ZmZkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93
ZWJkcml2ZXIvY2xpZW50LnB5CkBAIC0yLDggKzIsNyBAQCBmcm9tIC4gaW1wb3J0IGVycm9yCiBm
cm9tIC4gaW1wb3J0IHByb3RvY29sCiBmcm9tIC4gaW1wb3J0IHRyYW5zcG9ydAogCi1mcm9tIHNp
eCBpbXBvcnQgc3RyaW5nX3R5cGVzCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIgaW1wb3J0IHBhcnNl
IGFzIHVybHBhcnNlCitmcm9tIHVybGxpYiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UKIAogCiBk
ZWYgY29tbWFuZChmdW5jKToKQEAgLTExNiwxNCArMTE1LDQ5IEBAIGNsYXNzIEFjdGlvblNlcXVl
bmNlKG9iamVjdCk6CiAgICAgZGVmIF9rZXlfYWN0aW9uKHNlbGYsIHN1YnR5cGUsIHZhbHVlKToK
ICAgICAgICAgc2VsZi5fYWN0aW9ucy5hcHBlbmQoeyJ0eXBlIjogc3VidHlwZSwgInZhbHVlIjog
dmFsdWV9KQogCi0gICAgZGVmIF9wb2ludGVyX2FjdGlvbihzZWxmLCBzdWJ0eXBlLCBidXR0b24p
OgotICAgICAgICBzZWxmLl9hY3Rpb25zLmFwcGVuZCh7InR5cGUiOiBzdWJ0eXBlLCAiYnV0dG9u
IjogYnV0dG9ufSkKKyAgICBkZWYgX3BvaW50ZXJfYWN0aW9uKHNlbGYsIHN1YnR5cGUsIGJ1dHRv
bj1Ob25lLCB4PU5vbmUsIHk9Tm9uZSwgZHVyYXRpb249Tm9uZSwgb3JpZ2luPU5vbmUsIHdpZHRo
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9Tm9uZSwgcHJlc3N1cmU9Tm9u
ZSwgdGFuZ2VudGlhbF9wcmVzc3VyZT1Ob25lLCB0aWx0X3g9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbHRfeT1Ob25lLCB0d2lzdD1Ob25lLCBhbHRpdHVkZV9hbmdsZT1Ob25lLCBh
emltdXRoX2FuZ2xlPU5vbmUpOgorICAgICAgICBhY3Rpb24gPSB7CisgICAgICAgICAgICAidHlw
ZSI6IHN1YnR5cGUKKyAgICAgICAgfQorICAgICAgICBpZiBidXR0b24gaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBhY3Rpb25bImJ1dHRvbiJdID0gYnV0dG9uCisgICAgICAgIGlmIHggaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBhY3Rpb25bIngiXSA9IHgKKyAgICAgICAgaWYgeSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGFjdGlvblsieSJdID0geQorICAgICAgICBpZiBkdXJhdGlvbiBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlvblsiZHVyYXRpb24iXSA9IGR1cmF0aW9uCisg
ICAgICAgIGlmIG9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlvblsib3JpZ2lu
Il0gPSBvcmlnaW4KKyAgICAgICAgaWYgd2lkdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBh
Y3Rpb25bIndpZHRoIl0gPSB3aWR0aAorICAgICAgICBpZiBoZWlnaHQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBhY3Rpb25bImhlaWdodCJdID0gaGVpZ2h0CisgICAgICAgIGlmIHByZXNzdXJl
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYWN0aW9uWyJwcmVzc3VyZSJdID0gcHJlc3N1cmUK
KyAgICAgICAgaWYgdGFuZ2VudGlhbF9wcmVzc3VyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGFjdGlvblsidGFuZ2VudGlhbFByZXNzdXJlIl0gPSB0YW5nZW50aWFsX3ByZXNzdXJlCisgICAg
ICAgIGlmIHRpbHRfeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlvblsidGlsdFgiXSA9
IHRpbHRfeAorICAgICAgICBpZiB0aWx0X3kgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rp
b25bInRpbHRZIl0gPSB0aWx0X3kKKyAgICAgICAgaWYgdHdpc3QgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBhY3Rpb25bInR3aXN0Il0gPSB0d2lzdAorICAgICAgICBpZiBhbHRpdHVkZV9hbmds
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlvblsiYWx0aXR1ZGVBbmdsZSJdID0gYWx0
aXR1ZGVfYW5nbGUKKyAgICAgICAgaWYgYXppbXV0aF9hbmdsZSBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGFjdGlvblsiYXppbXV0aEFuZ2xlIl0gPSBhemltdXRoX2FuZ2xlCisgICAgICAgIHNl
bGYuX2FjdGlvbnMuYXBwZW5kKGFjdGlvbikKIAogICAgIGRlZiBwYXVzZShzZWxmLCBkdXJhdGlv
bik6CiAgICAgICAgIHNlbGYuX2FjdGlvbnMuYXBwZW5kKHsidHlwZSI6ICJwYXVzZSIsICJkdXJh
dGlvbiI6IGR1cmF0aW9ufSkKICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiBwb2ludGVy
X21vdmUoc2VsZiwgeCwgeSwgZHVyYXRpb249Tm9uZSwgb3JpZ2luPU5vbmUpOgorICAgIGRlZiBw
b2ludGVyX21vdmUoc2VsZiwgeCwgeSwgZHVyYXRpb249Tm9uZSwgb3JpZ2luPU5vbmUsIHdpZHRo
PU5vbmUsIGhlaWdodD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgcHJlc3N1cmU9Tm9uZSwg
dGFuZ2VudGlhbF9wcmVzc3VyZT1Ob25lLCB0aWx0X3g9Tm9uZSwgdGlsdF95PU5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICB0d2lzdD1Ob25lLCBhbHRpdHVkZV9hbmdsZT1Ob25lLCBhemltdXRo
X2FuZ2xlPU5vbmUpOgogICAgICAgICAiIiJRdWV1ZSBhIHBvaW50ZXJNb3ZlIGFjdGlvbi4KIAog
ICAgICAgICA6cGFyYW0geDogRGVzdGluYXRpb24geC1heGlzIGNvb3JkaW5hdGUgb2YgcG9pbnRl
ciBpbiBDU1MgcGl4ZWxzLgpAQCAtMTMzLDE2ICsxNjcsMTAgQEAgY2xhc3MgQWN0aW9uU2VxdWVu
Y2Uob2JqZWN0KToKICAgICAgICAgOnBhcmFtIG9yaWdpbjogT3JpZ2luIG9mIGNvb3JkaW5hdGVz
LCBlaXRoZXIgInZpZXdwb3J0IiwgInBvaW50ZXIiIG9yCiAgICAgICAgICAgICAgICAgICAgICAg
IGFuIEVsZW1lbnQuIElmIE5vbmUsIHJlbW90ZSBlbmQgZGVmYXVsdHMgdG8gInZpZXdwb3J0Ii4K
ICAgICAgICAgIiIiCi0gICAgICAgIGFjdGlvbiA9IHsKLSAgICAgICAgICAgICJ0eXBlIjogInBv
aW50ZXJNb3ZlIiwKLSAgICAgICAgICAgICJ4IjogeCwKLSAgICAgICAgICAgICJ5IjogeQotICAg
ICAgICB9Ci0gICAgICAgIGlmIGR1cmF0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYWN0
aW9uWyJkdXJhdGlvbiJdID0gZHVyYXRpb24KLSAgICAgICAgaWYgb3JpZ2luIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgYWN0aW9uWyJvcmlnaW4iXSA9IG9yaWdpbgotICAgICAgICBzZWxmLl9h
Y3Rpb25zLmFwcGVuZChhY3Rpb24pCisgICAgICAgIHNlbGYuX3BvaW50ZXJfYWN0aW9uKCJwb2lu
dGVyTW92ZSIsIHg9eCwgeT15LCBkdXJhdGlvbj1kdXJhdGlvbiwgb3JpZ2luPW9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9d2lkdGgsIGhlaWdodD1oZWlnaHQsIHBy
ZXNzdXJlPXByZXNzdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YW5nZW50aWFs
X3ByZXNzdXJlPXRhbmdlbnRpYWxfcHJlc3N1cmUsIHRpbHRfeD10aWx0X3gsIHRpbHRfeT10aWx0
X3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3aXN0PXR3aXN0LCBhbHRpdHVkZV9h
bmdsZT1hbHRpdHVkZV9hbmdsZSwgYXppbXV0aF9hbmdsZT1hemltdXRoX2FuZ2xlKQogICAgICAg
ICByZXR1cm4gc2VsZgogCiAgICAgZGVmIHBvaW50ZXJfdXAoc2VsZiwgYnV0dG9uPTApOgpAQCAt
MTUxLDE2ICsxNzksMjEgQEAgY2xhc3MgQWN0aW9uU2VxdWVuY2Uob2JqZWN0KToKICAgICAgICAg
OnBhcmFtIGJ1dHRvbjogUG9pbnRlciBidXR0b24gdG8gcGVyZm9ybSBhY3Rpb24gd2l0aC4KICAg
ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogMCwgd2hpY2ggcmVwcmVzZW50cyBtYWluIGRl
dmljZSBidXR0b24uCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9wb2ludGVyX2FjdGlvbigi
cG9pbnRlclVwIiwgYnV0dG9uKQorICAgICAgICBzZWxmLl9wb2ludGVyX2FjdGlvbigicG9pbnRl
clVwIiwgYnV0dG9uPWJ1dHRvbikKICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiBwb2lu
dGVyX2Rvd24oc2VsZiwgYnV0dG9uPTApOgorICAgIGRlZiBwb2ludGVyX2Rvd24oc2VsZiwgYnV0
dG9uPTAsIHdpZHRoPU5vbmUsIGhlaWdodD1Ob25lLCBwcmVzc3VyZT1Ob25lLAorICAgICAgICAg
ICAgICAgICAgICAgdGFuZ2VudGlhbF9wcmVzc3VyZT1Ob25lLCB0aWx0X3g9Tm9uZSwgdGlsdF95
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICB0d2lzdD1Ob25lLCBhbHRpdHVkZV9hbmdsZT1O
b25lLCBhemltdXRoX2FuZ2xlPU5vbmUpOgogICAgICAgICAiIiJRdWV1ZSBhIHBvaW50ZXJEb3du
IGFjdGlvbiBmb3IgYGJ1dHRvbmAuCiAKICAgICAgICAgOnBhcmFtIGJ1dHRvbjogUG9pbnRlciBi
dXR0b24gdG8gcGVyZm9ybSBhY3Rpb24gd2l0aC4KICAgICAgICAgICAgICAgICAgICAgICAgRGVm
YXVsdDogMCwgd2hpY2ggcmVwcmVzZW50cyBtYWluIGRldmljZSBidXR0b24uCiAgICAgICAgICIi
IgotICAgICAgICBzZWxmLl9wb2ludGVyX2FjdGlvbigicG9pbnRlckRvd24iLCBidXR0b24pCisg
ICAgICAgIHNlbGYuX3BvaW50ZXJfYWN0aW9uKCJwb2ludGVyRG93biIsIGJ1dHRvbj1idXR0b24s
IHdpZHRoPXdpZHRoLCBoZWlnaHQ9aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVzc3VyZT1wcmVzc3VyZSwgdGFuZ2VudGlhbF9wcmVzc3VyZT10YW5nZW50aWFsX3ByZXNz
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWx0X3g9dGlsdF94LCB0aWx0X3k9
dGlsdF95LCB0d2lzdD10d2lzdCwgYWx0aXR1ZGVfYW5nbGU9YWx0aXR1ZGVfYW5nbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF6aW11dGhfYW5nbGU9YXppbXV0aF9hbmdsZSkKICAg
ICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBjbGljayhzZWxmLCBlbGVtZW50PU5vbmUsIGJ1
dHRvbj0wKToKQEAgLTMzOCw2ICszNzEsNDIgQEAgY2xhc3MgRnJhbWUob2JqZWN0KToKICAgICAg
ICAgcmV0dXJuIGNscyh1dWlkLCBzZXNzaW9uKQogCiAKK2NsYXNzIFNoYWRvd1Jvb3Qob2JqZWN0
KToKKyAgICBpZGVudGlmaWVyID0gInNoYWRvdy0wNzViLTRkYTEtYjZiYS1lNTc5YzJkMzIzMGEi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2Vzc2lvbiwgaWQpOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ29uc3RydWN0IGEgbmV3IHNoYWRvdyByb290IHJlcHJlc2VudGF0aW9uLgorCisgICAg
ICAgIDpwYXJhbSBpZDogU2hhZG93IHJvb3QgVVVJRCB3aGljaCBtdXN0IGJlIHVuaXF1ZSBhY3Jv
c3MKKyAgICAgICAgICAgIGFsbCBicm93c2luZyBjb250ZXh0cy4KKyAgICAgICAgOnBhcmFtIHNl
c3Npb246IEN1cnJlbnQgYGB3ZWJkcml2ZXIuU2Vzc2lvbmBgLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5pZCA9IGlkCisgICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2pzb24oY2xzLCBqc29uLCBzZXNzaW9uKToKKyAgICAg
ICAgdXVpZCA9IGpzb25bU2hhZG93Um9vdC5pZGVudGlmaWVyXQorICAgICAgICByZXR1cm4gY2xz
KHV1aWQsIHNlc3Npb24pCisKKyAgICBkZWYgc2VuZF9zaGFkb3dfY29tbWFuZChzZWxmLCBtZXRo
b2QsIHVyaSwgYm9keT1Ob25lKToKKyAgICAgICAgdXJsID0gInNoYWRvdy97fS97fSIuZm9ybWF0
KHNlbGYuaWQsIHVyaSkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vzc2lvbi5zZW5kX3Nlc3Npb25f
Y29tbWFuZChtZXRob2QsIHVybCwgYm9keSkKKworICAgIEBjb21tYW5kCisgICAgZGVmIGZpbmRf
ZWxlbWVudChzZWxmLCBzdHJhdGVneSwgc2VsZWN0b3IpOgorICAgICAgICBib2R5ID0geyJ1c2lu
ZyI6IHN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICJ2YWx1ZSI6IHNlbGVjdG9yfQorICAgICAg
ICByZXR1cm4gc2VsZi5zZW5kX3NoYWRvd19jb21tYW5kKCJQT1NUIiwgImVsZW1lbnQiLCBib2R5
KQorCisgICAgQGNvbW1hbmQKKyAgICBkZWYgZmluZF9lbGVtZW50cyhzZWxmLCBzdHJhdGVneSwg
c2VsZWN0b3IpOgorICAgICAgICBib2R5ID0geyJ1c2luZyI6IHN0cmF0ZWd5LAorICAgICAgICAg
ICAgICAgICJ2YWx1ZSI6IHNlbGVjdG9yfQorICAgICAgICByZXR1cm4gc2VsZi5zZW5kX3NoYWRv
d19jb21tYW5kKCJQT1NUIiwgImVsZW1lbnRzIiwgYm9keSkKKworCiBjbGFzcyBGaW5kKG9iamVj
dCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlc3Npb24pOgogICAgICAgICBzZWxmLnNlc3Np
b24gPSBzZXNzaW9uCkBAIC0zNjUsNyArNDM0LDcgQEAgY2xhc3MgQ29va2llcyhvYmplY3QpOgog
ICAgICAgICBjb29raWUgPSB7Im5hbWUiOiBuYW1lLAogICAgICAgICAgICAgICAgICAgInZhbHVl
IjogTm9uZX0KIAotICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIHN0cmluZ190eXBlcyk6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgIGNvb2tpZVsidmFs
dWUiXSA9IHZhbHVlCiAgICAgICAgIGVsaWYgaGFzYXR0cih2YWx1ZSwgInZhbHVlIik6CiAgICAg
ICAgICAgICBjb29raWVbInZhbHVlIl0gPSB2YWx1ZS52YWx1ZQpAQCAtNDM2LDYgKzUwNSw5IEBA
IGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAg
c2VsZi5lbmQoKQogCisgICAgZGVmIG1hdGNoKHNlbGYsIGNhcGFiaWxpdGllcyk6CisgICAgICAg
IHJldHVybiBzZWxmLnJlcXVlc3RlZF9jYXBhYmlsaXRpZXMgPT0gY2FwYWJpbGl0aWVzCisKICAg
ICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgICIiIlN0YXJ0IGEgbmV3IFdlYkRyaXZlciBzZXNz
aW9uLgogCkBAIC00NzAsNyArNTQyLDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc2VuZF9jb21tYW5kKCJERUxFVEUiLCAic2Vzc2lv
bi8lcyIgJSBzZWxmLnNlc3Npb25faWQpCi0gICAgICAgIGV4Y2VwdCBlcnJvci5JbnZhbGlkU2Vz
c2lvbklkRXhjZXB0aW9uOgorICAgICAgICBleGNlcHQgKE9TRXJyb3IsIGVycm9yLkludmFsaWRT
ZXNzaW9uSWRFeGNlcHRpb24pOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQpAQCAtNjgzLDcgKzc1NSw2IEBAIGNs
YXNzIFNlc3Npb24ob2JqZWN0KToKICAgICBkZWYgc2NyZWVuc2hvdChzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYuc2VuZF9zZXNzaW9uX2NvbW1hbmQoIkdFVCIsICJzY3JlZW5zaG90IikKIAot
CiBjbGFzcyBFbGVtZW50KG9iamVjdCk6CiAgICAgIiIiCiAgICAgUmVwcmVzZW50YXRpb24gb2Yg
YSB3ZWIgZWxlbWVudC4KQEAgLTc3MCw2ICs4NDEsMTEgQEAgY2xhc3MgRWxlbWVudChvYmplY3Qp
OgogICAgIGRlZiBzY3JlZW5zaG90KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5zZW5kX2Vs
ZW1lbnRfY29tbWFuZCgiR0VUIiwgInNjcmVlbnNob3QiKQogCisgICAgQHByb3BlcnR5CisgICAg
QGNvbW1hbmQKKyAgICBkZWYgc2hhZG93X3Jvb3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LnNlbmRfZWxlbWVudF9jb21tYW5kKCJHRVQiLCAic2hhZG93IikKKwogICAgIEBjb21tYW5kCiAg
ICAgZGVmIGF0dHJpYnV0ZShzZWxmLCBuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9l
bGVtZW50X2NvbW1hbmQoIkdFVCIsICJhdHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci9lcnJvci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9lcnJvci5weQppbmRleCA4Mzc5
NjU2ZDczZGQuLjgwN2M1OTI1ZTE0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2Vycm9yLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2ViZHJpdmVyL3dlYmRyaXZlci9lcnJvci5weQpAQCAtMSw4ICsxLDYgQEAKIGltcG9ydCBjb2xs
ZWN0aW9ucwogaW1wb3J0IGpzb24KIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJ2YWx1ZXMKLQogCiBj
bGFzcyBXZWJEcml2ZXJFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICBodHRwX3N0YXR1cyA9IE5v
bmUKQEAgLTM0LDYgKzMyLDExIEBAIGNsYXNzIFdlYkRyaXZlckV4Y2VwdGlvbihFeGNlcHRpb24p
OgogICAgICAgICByZXR1cm4gbWVzc2FnZQogCiAKK2NsYXNzIERldGFjaGVkU2hhZG93Um9vdEV4
Y2VwdGlvbihXZWJEcml2ZXJFeGNlcHRpb24pOgorICAgIGh0dHBfc3RhdHVzID0gNDA0CisgICAg
c3RhdHVzX2NvZGUgPSAiZGV0YWNoZWQgc2hhZG93IHJvb3QiCisKKwogY2xhc3MgRWxlbWVudENs
aWNrSW50ZXJjZXB0ZWRFeGNlcHRpb24oV2ViRHJpdmVyRXhjZXB0aW9uKToKICAgICBodHRwX3N0
YXR1cyA9IDQwMAogICAgIHN0YXR1c19jb2RlID0gImVsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQi
CkBAIC0xMTQsNiArMTE3LDExIEBAIGNsYXNzIE5vU3VjaEZyYW1lRXhjZXB0aW9uKFdlYkRyaXZl
ckV4Y2VwdGlvbik6CiAgICAgc3RhdHVzX2NvZGUgPSAibm8gc3VjaCBmcmFtZSIKIAogCitjbGFz
cyBOb1N1Y2hTaGFkb3dSb290RXhjZXB0aW9uKFdlYkRyaXZlckV4Y2VwdGlvbik6CisgICAgaHR0
cF9zdGF0dXMgPSA0MDQKKyAgICBzdGF0dXNfY29kZSA9ICJubyBzdWNoIHNoYWRvdyByb290Igor
CisKIGNsYXNzIE5vU3VjaFdpbmRvd0V4Y2VwdGlvbihXZWJEcml2ZXJFeGNlcHRpb24pOgogICAg
IGh0dHBfc3RhdHVzID0gNDA0CiAgICAgc3RhdHVzX2NvZGUgPSAibm8gc3VjaCB3aW5kb3ciCkBA
IC0yMTAsNiArMjE4LDYgQEAgZGVmIGdldChlcnJvcl9jb2RlKToKIAogCiBfZXJyb3JzID0gY29s
bGVjdGlvbnMuZGVmYXVsdGRpY3QoKQotZm9yIGl0ZW0gaW4gbGlzdChpdGVydmFsdWVzKGxvY2Fs
cygpKSk6Citmb3IgaXRlbSBpbiBsaXN0KGxvY2FscygpLnZhbHVlcygpKToKICAgICBpZiB0eXBl
KGl0ZW0pID09IHR5cGUgYW5kIGlzc3ViY2xhc3MoaXRlbSwgV2ViRHJpdmVyRXhjZXB0aW9uKToK
ICAgICAgICAgX2Vycm9yc1tpdGVtLnN0YXR1c19jb2RlXSA9IGl0ZW0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVy
L3dlYmRyaXZlci9wcm90b2NvbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCBj
ODExZjZmMjZkYjcuLmU3MWUwMWQ2MjA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3Byb3Rv
Y29sLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQpAQCAtMiw4ICsyLDYgQEAgaW1w
b3J0IGpzb24KIAogaW1wb3J0IHdlYmRyaXZlcgogCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1z
Ci0KIAogIiIiV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wgY29kZWNzLiIiIgogCkBAIC0yMiw2ICsy
MCw4IEBAIGNsYXNzIEVuY29kZXIoanNvbi5KU09ORW5jb2Rlcik6CiAgICAgICAgICAgICByZXR1
cm4ge3dlYmRyaXZlci5GcmFtZS5pZGVudGlmaWVyOiBvYmouaWR9CiAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShvYmosIHdlYmRyaXZlci5XaW5kb3cpOgogICAgICAgICAgICAgcmV0dXJuIHt3ZWJk
cml2ZXIuRnJhbWUuaWRlbnRpZmllcjogb2JqLmlkfQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
b2JqLCB3ZWJkcml2ZXIuU2hhZG93Um9vdCk6CisgICAgICAgICAgICByZXR1cm4ge3dlYmRyaXZl
ci5TaGFkb3dSb290LmlkZW50aWZpZXI6IG9iai5pZH0KICAgICAgICAgcmV0dXJuIHN1cGVyKEVu
Y29kZXIsIHNlbGYpLmRlZmF1bHQob2JqKQogCiAKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgRGVj
b2Rlcihqc29uLkpTT05EZWNvZGVyKToKICAgICAgICAgICAgIHJldHVybiB3ZWJkcml2ZXIuRnJh
bWUuZnJvbV9qc29uKHBheWxvYWQsIHNlbGYuc2Vzc2lvbikKICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKHBheWxvYWQsIGRpY3QpIGFuZCB3ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5
bG9hZDoKICAgICAgICAgICAgIHJldHVybiB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXls
b2FkLCBzZWxmLnNlc3Npb24pCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0
KSBhbmQgd2ViZHJpdmVyLlNoYWRvd1Jvb3QuaWRlbnRpZmllciBpbiBwYXlsb2FkOgorICAgICAg
ICAgICAgcmV0dXJuIHdlYmRyaXZlci5TaGFkb3dSb290LmZyb21fanNvbihwYXlsb2FkLCBzZWxm
LnNlc3Npb24pCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAgICAg
ICAgICAgIHJldHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBpdGVyaXRl
bXMocGF5bG9hZCl9CisgICAgICAgICAgICByZXR1cm4ge2s6IHNlbGYub2JqZWN0X2hvb2sodikg
Zm9yIGssIHYgaW4gcGF5bG9hZC5pdGVtcygpfQogICAgICAgICByZXR1cm4gcGF5bG9hZApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3Bv
cnQucHkKaW5kZXggZTgzNmIxOWExNThkLi4xNWJhNmI4ZmVlMjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dl
YmRyaXZlci90cmFuc3BvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAt
MSwxMCArMSw5IEBACiBpbXBvcnQganNvbgogaW1wb3J0IHNlbGVjdAogCi1mcm9tIHNpeCBpbXBv
cnQgdGV4dF90eXBlLCBQWTMKLWZyb20gc2l4Lm1vdmVzLmNvbGxlY3Rpb25zX2FiYyBpbXBvcnQg
TWFwcGluZwotZnJvbSBzaXgubW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEhUVFBDb25uZWN0aW9u
Ci1mcm9tIHNpeC5tb3Zlcy51cmxsaWIgaW1wb3J0IHBhcnNlIGFzIHVybHBhcnNlCitmcm9tIGNv
bGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZworZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRU
UENvbm5lY3Rpb24KK2Zyb20gdXJsbGliIGltcG9ydCBwYXJzZSBhcyB1cmxwYXJzZQogCiBmcm9t
IC4gaW1wb3J0IGVycm9yCiAKQEAgLTE0NSwxNSArMTQ0LDE4IEBAIGNsYXNzIEhUVFBXaXJlUHJv
dG9jb2wob2JqZWN0KToKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICIiIkNsb3NlcyB0
aGUgY3VycmVudCBIVFRQIGNvbm5lY3Rpb24sIGlmIHRoZXJlIGlzIG9uZS4iIiIKICAgICAgICAg
aWYgc2VsZi5fY29ubjoKLSAgICAgICAgICAgIHNlbGYuX2Nvbm4uY2xvc2UoKQorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm4uY2xvc2UoKQorICAgICAgICAgICAg
ZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBUaGUgcmVtb3RlIGNsb3NlZCB0aGUg
Y29ubmVjdGlvbgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5fY29ubiA9IE5v
bmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb25uZWN0aW9uKHNlbGYpOgogICAgICAgICAi
IiJHZXRzIHRoZSBjdXJyZW50IEhUVFAgY29ubmVjdGlvbiwgb3IgbGF6aWx5IGNyZWF0ZXMgb25l
LiIiIgogICAgICAgICBpZiBub3Qgc2VsZi5fY29ubjoKICAgICAgICAgICAgIGNvbm5fa3dhcmdz
ID0ge30KLSAgICAgICAgICAgIGlmIG5vdCBQWTM6Ci0gICAgICAgICAgICAgICAgY29ubl9rd2Fy
Z3NbInN0cmljdCJdID0gVHJ1ZQogICAgICAgICAgICAgIyBXZSBhcmUgbm90IHNldHRpbmcgYW4g
SFRUUCB0aW1lb3V0IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgd2hlbiB0aGUKICAgICAgICAgICAg
ICMgY29ubmVjdGlvbiBpdHMgY3JlYXRlZC4gVGhlIHNlbmQgbWV0aG9kIGhhcyBhIHRpbWVvdXQg
dmFsdWUgaWYgbmVlZGVkLgogICAgICAgICAgICAgc2VsZi5fY29ubiA9IEhUVFBDb25uZWN0aW9u
KHNlbGYuaG9zdCwgc2VsZi5wb3J0LCAqKmNvbm5fa3dhcmdzKQpAQCAtMjM1LDcgKzIzNyw3IEBA
IGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0KToKICAgICAgICAgcmV0dXJuIFJlc3BvbnNl
LmZyb21faHR0cChyZXNwb25zZSwgZGVjb2Rlcj1kZWNvZGVyLCAqKmNvZGVjX2t3YXJncykKIAog
ICAgIGRlZiBfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVyaSwgcGF5bG9hZCwgaGVhZGVycz1Ob25l
LCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIHRleHRfdHlw
ZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgc3RyKToKICAgICAgICAgICAgIHBh
eWxvYWQgPSBwYXlsb2FkLmVuY29kZSgidXRmLTgiKQogCiAgICAgICAgIGlmIGhlYWRlcnMgaXMg
Tm9uZToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRy
aXZlci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlMzg1
MTNmMWZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL19faW5p
dF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9lcnJvci5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5
YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAK
LSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0
b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Fu
ZHJvaWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9hbmRyb2lkLnB5CmluZGV4IDc0NGUxMzRkMzgyNi4uOGRlZDZlMWE2MDZkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L2FuZHJvaWQucHkKQEAgLTg5LDggKzg5LDggQEAgZGVmIGluc3Rh
bGxfYW5kcm9pZF9wYWNrYWdlcyhsb2dnZXIsIHNka19wYXRoLCBub19wcm9tcHQ9RmFsc2UpOgog
CiAgICAgI1RPRE86IE5vdCBzdXJlIHdoYXQncyByZWFsbHkgbmVlZGVkIGhlcmUKICAgICBwYWNr
YWdlcyA9IFsicGxhdGZvcm0tdG9vbHMiLAotICAgICAgICAgICAgICAgICJidWlsZC10b29sczsy
OS4wLjMiLAotICAgICAgICAgICAgICAgICJwbGF0Zm9ybXM7YW5kcm9pZC0yOSIsCisgICAgICAg
ICAgICAgICAgImJ1aWxkLXRvb2xzOzMwLjAuMiIsCisgICAgICAgICAgICAgICAgInBsYXRmb3Jt
czthbmRyb2lkLTMwIiwKICAgICAgICAgICAgICAgICAiZW11bGF0b3IiXQogCiAgICAgIyBUT0RP
OiBtYWtlIHRoaXMgd29yayBub24taW50ZXJuYWN0aXZlbHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9i
cm93c2VyLnB5CmluZGV4IDcyNmQ1NTk4ZjUyNC4uMjk5NWQ1MmRjYWQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93
c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L2Jyb3dzZXIucHkKQEAgLTksNyArOSw3IEBAIGZyb20gYWJjIGltcG9ydCBBQkNN
ZXRhLCBhYnN0cmFjdG1ldGhvZAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVk
ZWx0YQogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQogCi1mcm9t
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHNwbGl0Citmcm9tIHVybGxpYi5wYXJz
ZSBpbXBvcnQgdXJsc3BsaXQKIGltcG9ydCByZXF1ZXN0cwogCiBmcm9tIC51dGlscyBpbXBvcnQg
Y2FsbCwgZ2V0LCBybXRyZWUsIHVudGFyLCB1bnppcCwgZ2V0X2Rvd25sb2FkX3RvX2Rlc2NyaXB0
b3IsIHNoYTI1NnN1bQpAQCAtNTYxLDcgKzU2MSw3IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9uaWdodGx5X2JpbmFyeShkZXN0KQogCiAgICAgZGVm
IGluc3RhbGxfbW9qb2pzKHNlbGYsIGRlc3QsIGNoYW5uZWwsIGJyb3dzZXJfYmluYXJ5KToKLSAg
ICAgICAgaWYgY2hhbm5lbCA9PSAibmlnaHRseSI6CisgICAgICAgIGlmIGNoYW5uZWwgPT0gIm5p
Z2h0bHkiIG9yIGNoYW5uZWwgPT0gImNhbmFyeSI6CiAgICAgICAgICAgICB1cmwgPSBzZWxmLl9s
YXRlc3RfY2hyb21pdW1fc25hcHNob3RfdXJsKCkgKyAibW9qb2pzLnppcCIKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGNocm9tZV92ZXJzaW9uID0gc2VsZi52ZXJzaW9uKGJpbmFyeT1icm93
c2VyX2JpbmFyeSkKQEAgLTY0NiwxMCArNjQ2LDEwIEBAIGNsYXNzIENocm9tZShCcm93c2VyKToK
ICAgICAgICAgICAgICMgTm8gQ2FuYXJ5IG9uIExpbnV4LgogICAgICAgICAgICAgcmV0dXJuIGZp
bmRfZXhlY3V0YWJsZShuYW1lKQogICAgICAgICBpZiB1bmFtZVswXSA9PSAiRGFyd2luIjoKLSAg
ICAgICAgICAgIGlmIGNoYW5uZWwgPT0gImNhbmFyeSI6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICIvQXBwbGljYXRpb25zL0dvb2dsZSBDaHJvbWUgQ2FuYXJ5LmFwcC9Db250ZW50cy9NYWNPUy9H
b29nbGUgQ2hyb21lIENhbmFyeSIKLSAgICAgICAgICAgICMgQWxsIG90aGVyIGNoYW5uZWxzIHNo
YXJlIHRoZSBzYW1lIHBhdGggb24gbWFjT1MuCi0gICAgICAgICAgICByZXR1cm4gIi9BcHBsaWNh
dGlvbnMvR29vZ2xlIENocm9tZS5hcHAvQ29udGVudHMvTWFjT1MvR29vZ2xlIENocm9tZSIKKyAg
ICAgICAgICAgIHN1ZmZpeCA9ICIiCisgICAgICAgICAgICBpZiBjaGFubmVsIGluICgiYmV0YSIs
ICJkZXYiLCAiY2FuYXJ5Iik6CisgICAgICAgICAgICAgICAgc3VmZml4ID0gIiAiICsgY2hhbm5l
bC5jYXBpdGFsaXplKCkKKyAgICAgICAgICAgIHJldHVybiAiL0FwcGxpY2F0aW9ucy9Hb29nbGUg
Q2hyb21lJXMuYXBwL0NvbnRlbnRzL01hY09TL0dvb2dsZSBDaHJvbWUlcyIgJSAoc3VmZml4LCBz
dWZmaXgpCiAgICAgICAgIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIjoKICAgICAgICAgICAgIHBh
dGggPSBvcy5wYXRoLmV4cGFuZHZhcnMociIkU1lTVEVNRFJJVkVcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNocm9tZS5leGUiKQogICAgICAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgpAQCAtNzg1LDggKzc4NSw4IEBAIGNsYXNzIENocm9t
ZShCcm93c2VyKToKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2ZXJzaW9uX3N0cmluZyA9
IGNhbGwoYmluYXJ5LCAiLS12ZXJzaW9uIikuc3RyaXAoKQotICAgICAgICBleGNlcHQgc3VicHJv
Y2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KCJGYWlsZWQgdG8gY2FsbCAlcyIgJSBiaW5hcnkpCisgICAgICAgIGV4Y2VwdCAoc3VicHJvY2Vz
cy5DYWxsZWRQcm9jZXNzRXJyb3IsIE9TRXJyb3IpIGFzIGU6CisgICAgICAgICAgICBzZWxmLmxv
Z2dlci53YXJuaW5nKCJGYWlsZWQgdG8gY2FsbCAlczogJXMiICUgKGJpbmFyeSwgZSkpCiAgICAg
ICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBtID0gcmUubWF0Y2gociIoPzpHb29nbGUgQ2hy
b21lfENocm9taXVtKSAoLiopIiwgdmVyc2lvbl9zdHJpbmcpCiAgICAgICAgIGlmIG5vdCBtOgpA
QCAtODAwLDggKzgwMCw4IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToKIAogICAgICAgICB0cnk6
CiAgICAgICAgICAgICB2ZXJzaW9uX3N0cmluZyA9IGNhbGwod2ViZHJpdmVyX2JpbmFyeSwgIi0t
dmVyc2lvbiIpLnN0cmlwKCkKLSAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vz
c0Vycm9yOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGNhbGwg
JXMiICUgd2ViZHJpdmVyX2JpbmFyeSkKKyAgICAgICAgZXhjZXB0IChzdWJwcm9jZXNzLkNhbGxl
ZFByb2Nlc3NFcnJvciwgT1NFcnJvcikgYXMgZToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndh
cm5pbmcoIkZhaWxlZCB0byBjYWxsICVzOiAlcyIgJSAod2ViZHJpdmVyX2JpbmFyeSwgZSkpCiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBtID0gcmUubWF0Y2gociJDaHJvbWVEcml2
ZXIgKFswLTldWzAtOS5dKikiLCB2ZXJzaW9uX3N0cmluZykKICAgICAgICAgaWYgbm90IG06CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9pbnN0YWxsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQppbmRleCA2MzgwNjVhNTMwMTQuLjhiYTVjN2E4
NTkxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0YWxsLnB5CkBAIC0yLDYgKzIsOCBAQCBp
bXBvcnQgYXJncGFyc2UKIGZyb20gLiBpbXBvcnQgYnJvd3NlcgogCiBsYXRlc3RfY2hhbm5lbHMg
PSB7CisgICAgJ2FuZHJvaWRfd2VibGF5ZXInOiAnZGV2JywKKyAgICAnYW5kcm9pZF93ZWJ2aWV3
JzogJ2RldicsCiAgICAgJ2ZpcmVmb3gnOiAnbmlnaHRseScsCiAgICAgJ2Nocm9tZSc6ICduaWdo
dGx5JywKICAgICAnY2hyb21lX2FuZHJvaWQnOiAnZGV2JywKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50
cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9yZXF1aXJlbWVudHMudHh0CmluZGV4IDkwZDBjYjZjZGM4Ny4uYTM4NzU0NGYzNDc1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9yZXF1aXJlbWVudHMudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKQEAgLTEsMiArMSwy
IEBACi1yZXF1ZXN0cz09Mi4yNC4wCityZXF1ZXN0cz09Mi4yNS4xCiBtb3ppbmZvPT0xLjIuMSAg
IyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjI2CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9ydW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9ydW4ucHkKaW5kZXggNTYxYjhlODVhYTczLi4xZGNiMWQ0NjJlZTMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3J1bi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKQEAgLTMsNyArMyw2IEBAIGltcG9ydCBvcwogaW1wb3J0
IHBsYXRmb3JtCiBpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9l
eGVjdXRhYmxlCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgaW5wdXQKIAogd3B0X3Jvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksIG9zLnBh
cmRpciwgb3MucGFyZGlyKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFic3BhdGgob3Mu
cGF0aC5qb2luKHdwdF9yb290LCAidG9vbHMiKSkpCkBAIC0yNDgsNyArMjQ3LDcgQEAgQ29uc2lk
ZXIgaW5zdGFsbGluZyBjZXJ0dXRpbCB2aWEgeW91ciBPUyBwYWNrYWdlIG1hbmFnZXIgb3IgZGly
ZWN0bHkuIiIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5uZWw9a3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSkKICAgICAgICAgICAgIGt3
YXJnc1sicHJlZnNfcm9vdCJdID0gcHJlZnNfcm9vdAogCi0gICAgICAgIGlmIGt3YXJnc1siaGVh
ZGxlc3MiXSBpcyBOb25lOgorICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl0gaXMgTm9uZSBh
bmQgbm90IGt3YXJnc1siZGVidWdfdGVzdCJdOgogICAgICAgICAgICAga3dhcmdzWyJoZWFkbGVz
cyJdID0gVHJ1ZQogICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJ1bm5pbmcgaW4gaGVhZGxlc3Mg
bW9kZSwgcGFzcyAtLW5vLWhlYWRsZXNzIHRvIGRpc2FibGUiKQogCkBAIC00MjcsMTAgKzQyNiwx
MiBAQCBjbGFzcyBDaHJvbWVpT1MoQnJvd3NlclNldHVwKToKIGNsYXNzIEFuZHJvaWRXZWJsYXll
cihCcm93c2VyU2V0dXApOgogICAgIG5hbWUgPSAiYW5kcm9pZF93ZWJsYXllciIKICAgICBicm93
c2VyX2NscyA9IGJyb3dzZXIuQW5kcm9pZFdlYmxheWVyCisgICAgZXhwZXJpbWVudGFsX2NoYW5u
ZWxzID0gKCJkZXYiLCAiY2FuYXJ5IikKIAogICAgIGRlZiBzZXR1cF9rd2FyZ3Moc2VsZiwga3dh
cmdzKToKICAgICAgICAgaWYga3dhcmdzLmdldCgiZGV2aWNlX3NlcmlhbCIpOgogICAgICAgICAg
ICAgc2VsZi5icm93c2VyLmRldmljZV9zZXJpYWwgPSBrd2FyZ3NbImRldmljZV9zZXJpYWwiXQor
ICAgICAgICBicm93c2VyX2NoYW5uZWwgPSBrd2FyZ3NbImJyb3dzZXJfY2hhbm5lbCJdCiAgICAg
ICAgIGlmIGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdIGlzIE5vbmU6CiAgICAgICAgICAgICB3
ZWJkcml2ZXJfYmluYXJ5ID0gTm9uZQogICAgICAgICAgICAgaWYgbm90IGt3YXJnc1siaW5zdGFs
bF93ZWJkcml2ZXIiXToKQEAgLTQ0Myw3ICs0NDQsNyBAQCBjbGFzcyBBbmRyb2lkV2VibGF5ZXIo
QnJvd3NlclNldHVwKToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkRvd25sb2Fk
aW5nIGNocm9tZWRyaXZlciIpCiAgICAgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnkg
PSBzZWxmLmJyb3dzZXIuaW5zdGFsbF93ZWJkcml2ZXIoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PXNlbGYudmVudi5iaW5fcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5u
ZWw9a3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5uZWw9YnJvd3Nlcl9jaGFubmVsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBsb2dnZXIuaW5mbygiVXNpbmcgd2ViZHJpdmVyIGJpbmFyeSAlcyIgJSB3ZWJkcml2ZXJfYmlu
YXJ5KQogCkBAIC00NTEsNiArNDUyLDkgQEAgY2xhc3MgQW5kcm9pZFdlYmxheWVyKEJyb3dzZXJT
ZXR1cCk6CiAgICAgICAgICAgICAgICAga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0gPSB3ZWJk
cml2ZXJfYmluYXJ5CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFdw
dHJ1bkVycm9yKCJVbmFibGUgdG8gbG9jYXRlIG9yIGluc3RhbGwgY2hyb21lZHJpdmVyIGJpbmFy
eSIpCisgICAgICAgIGlmIGJyb3dzZXJfY2hhbm5lbCBpbiBzZWxmLmV4cGVyaW1lbnRhbF9jaGFu
bmVsczoKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJBdXRvbWF0aWNhbGx5IHR1cm5pbmcgb24g
ZXhwZXJpbWVudGFsIGZlYXR1cmVzIGZvciBXZWJMYXllciBEZXYvQ2FuYXJ5IikKKyAgICAgICAg
ICAgIGt3YXJnc1siYmluYXJ5X2FyZ3MiXS5hcHBlbmQoIi0tZW5hYmxlLWV4cGVyaW1lbnRhbC13
ZWItcGxhdGZvcm0tZmVhdHVyZXMiKQogCiAKIGNsYXNzIEFuZHJvaWRXZWJ2aWV3KEJyb3dzZXJT
ZXR1cCk6CkBAIC03NTIsOSArNzU2LDggQEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZh
dWx0X2NvbmZpZz1Ob25lLCBmb3JtYXR0ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93
cHRydW5uZXIodmVudiwgKiprd2FyZ3MpOgogICAgIGZyb20gd3B0cnVubmVyIGltcG9ydCB3cHRj
b21tYW5kbGluZQotICAgIGZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAotICAgIGt3YXJncyA9
IHV0aWxzLkt3YXJncyhpdGVyaXRlbXMoa3dhcmdzKSkKKyAgICBrd2FyZ3MgPSB1dGlscy5Ld2Fy
Z3Moa3dhcmdzLml0ZW1zKCkpCiAKICAgICBrd2FyZ3NbInByb2R1Y3QiXSA9IGt3YXJnc1sicHJv
ZHVjdCJdLnJlcGxhY2UoIi0iLCAiXyIpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxl
cy5weQppbmRleCA0ZDEwODc4ZDlkNWYuLjVjMzk4NTg4MTc0MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdGZpbGVz
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3Rlc3RmaWxlcy5weQpAQCAtMiwxMCArMiwxMSBAQCBpbXBvcnQgYXJncGFyc2UKIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKIGlt
cG9ydCBzeXMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKLWZyb20gc2l4
IGltcG9ydCBlbnN1cmVfdGV4dCwgZW5zdXJlX3N0ciwgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBv
cnQgZW5zdXJlX3RleHQsIGVuc3VyZV9zdHIKIAogdHJ5OgogICAgIGZyb20gLi5tYW5pZmVzdCBp
bXBvcnQgbWFuaWZlc3QKQEAgLTc2LDggKzc3LDE5IEBAIGRlZiBicmFuY2hfcG9pbnQoKToKICAg
ICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gYW5kIGl0ZW0gIT0gIl4lcyIgJSBoZWFkXQogCiAg
ICAgICAgICMgZ2V0IGFsbCBjb21taXRzIG9uIEhFQUQgYnV0IG5vdCByZWFjaGFibGUgZnJvbSBh
bnl0aGluZyBpbiBub3RfaGVhZHMKLSAgICAgICAgY29tbWl0cyA9IGdpdCgicmV2LWxpc3QiLCAi
LS10b3BvLW9yZGVyIiwgIi0tcGFyZW50cyIsICJIRUFEIiwgKm5vdF9oZWFkcykKKyAgICAgICAg
Y21kID0gWyJnaXQiLCAicmV2LWxpc3QiLCAiLS10b3BvLW9yZGVyIiwgIi0tcGFyZW50cyIsICIt
LXN0ZGluIiwgIkhFQUQiXQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdwdF9yb290KQorICAgICAgICBjb21t
aXRzX2J5dGVzLCBfID0gcHJvYy5jb21tdW5pY2F0ZShiIlxuIi5qb2luKGl0ZW0uZW5jb2RlKCJh
c2NpaSIpIGZvciBpdGVtIGluIG5vdF9oZWFkcykpCisgICAgICAgIGlmIHByb2MucmV0dXJuY29k
ZSAhPSAwOgorICAgICAgICAgICAgcmFpc2Ugc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3Io
cHJvYy5yZXR1cm5jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWl0c19ieXRlcykKKwogICAgICAgICBjb21taXRfcGFyZW50cyA9IE9yZGVyZWRE
aWN0KCkgICMgdHlwZTogRGljdFtUZXh0LCBMaXN0W1RleHRdXQorICAgICAgICBjb21taXRzID0g
Y29tbWl0c19ieXRlcy5kZWNvZGUoImFzY2lpIikKICAgICAgICAgaWYgY29tbWl0czoKICAgICAg
ICAgICAgIGZvciBsaW5lIGluIGNvbW1pdHMuc3BsaXQoIlxuIik6CiAgICAgICAgICAgICAgICAg
bGluZV9jb21taXRzID0gbGluZS5zcGxpdCgiICIpCkBAIC04Niw3ICs5OCw3IEBAIGRlZiBicmFu
Y2hfcG9pbnQoKToKICAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZQogCiAgICAgICAgICMgaWYg
dGhlcmUgYXJlIGFueSBjb21taXRzLCB0YWtlIHRoZSBmaXJzdCBwYXJlbnQgdGhhdCBpcyBub3Qg
aW4gY29tbWl0cwotICAgICAgICBmb3IgY29tbWl0LCBwYXJlbnRzIGluIGl0ZXJpdGVtcyhjb21t
aXRfcGFyZW50cyk6CisgICAgICAgIGZvciBjb21taXQsIHBhcmVudHMgaW4gY29tbWl0X3BhcmVu
dHMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBwYXJlbnQgaW4gcGFyZW50czoKICAgICAgICAg
ICAgICAgICBpZiBwYXJlbnQgbm90IGluIGNvbW1pdF9wYXJlbnRzOgogICAgICAgICAgICAgICAg
ICAgICBicmFuY2hfcG9pbnQgPSBwYXJlbnQKQEAgLTIzOSw3ICsyNTEsNyBAQCBkZWYgYWZmZWN0
ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAg
bm9udGVzdHNfY2hhbmdlZCA9IHNldChmaWxlc19jaGFuZ2VkKQogICAgIHdwdF9tYW5pZmVzdCA9
IGxvYWRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCwgbWFuaWZlc3RfdXBkYXRlKQogCi0gICAgdGVz
dF90eXBlcyA9IFsiY3Jhc2h0ZXN0IiwgInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVj
Il0KKyAgICB0ZXN0X3R5cGVzID0gWyJjcmFzaHRlc3QiLCAicHJpbnQtcmVmdGVzdCIsICJyZWZ0
ZXN0IiwgInRlc3RoYXJuZXNzIiwgIndkc3BlYyJdCiAgICAgc3VwcG9ydF9maWxlcyA9IHtvcy5w
YXRoLmpvaW4od3B0X3Jvb3QsIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgXywgcGF0
aCwgXyBpbiB3cHRfbWFuaWZlc3QuaXRlcnR5cGVzKCJzdXBwb3J0Iil9CiAgICAgd2RzcGVjX3Rl
c3RfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF9icm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CmluZGV4IDNkNWYyZDNhZTZmYS4u
NTkxYjAyODNlODU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X2Jyb3dzZXIucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVz
dF9icm93c2VyLnB5CkBAIC0xLDkgKzEsOSBAQAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBpbnNw
ZWN0CiBpbXBvcnQgbW9jaworaW1wb3J0IHB5dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgc3lzCi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgaW5zcGVjdAogCiBm
cm9tIHRvb2xzLndwdCBpbXBvcnQgYnJvd3NlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3Rlc3RzL3Rlc3Rfd3B0LnB5CmluZGV4IDc0MjQ2ZmFmZGQ3Ny4uMzJlM2UyYTcwYjlmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC90ZXN0cy90ZXN0X3dwdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5weQpAQCAtMTUsMTAgKzE1
LDggQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiBpbXBvcnQgcHl0ZXN0CiAKLWZyb20gdG9vbHMu
d3B0IGltcG9ydCB1dGlscywgd3B0Ci0KLQogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pKQorZnJvbSB0b29scy53cHQgaW1wb3J0IHV0aWxzLCB3cHQKIAog
CiBkZWYgaXNfcG9ydF84MDAwX2luX3VzZSgpOgpAQCAtMTgzLDggKzE4MSw2IEBAIGRlZiB0ZXN0
X3J1bl96ZXJvX3Rlc3RzKCk6CiAKIEBweXRlc3QubWFyay5zbG93CiBAcHl0ZXN0Lm1hcmsucmVt
b3RlX25ldHdvcmsKLUBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA+PSAoMywg
OCkgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywKLSAgICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtdWx0aXByb2Nlc3NpbmcgdGVzdCBoYW5ncyBpbiBQeXRob24gMy44IG9uIG1hY09TICgj
MjQ4ODApIikKIGRlZiB0ZXN0X3J1bl9mYWlsaW5nX3Rlc3QoKToKICAgICAiIiJGYWlsaW5nIHRl
c3RzIHNob3VsZCBiZSByZXBvcnRlZCB3aXRoIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMgdW5sZXNz
IHRoZQogICAgIGAtLW5vLWZhaWwtb24tdW5leHBlY3RlZGAgb3B0aW9uIGhhcyBiZWVuIHNwZWNp
ZmllZC4iIiIKQEAgLTIwNyw4ICsyMDMsNiBAQCBkZWYgdGVzdF9ydW5fZmFpbGluZ190ZXN0KCk6
CiAKIEBweXRlc3QubWFyay5zbG93CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKLUBweXRl
c3QubWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCkgYW5kIHN5cy5wbGF0Zm9y
bSA9PSAnZGFyd2luJywKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtdWx0aXByb2Nlc3Np
bmcgdGVzdCBoYW5ncyBpbiBQeXRob24gMy44IG9uIG1hY09TICgjMjQ4ODApIikKIGRlZiB0ZXN0
X3J1bl92ZXJpZnlfdW5zdGFibGUodGVtcF90ZXN0KToKICAgICAiIiJVbnN0YWJsZSB0ZXN0cyBz
aG91bGQgYmUgcmVwb3J0ZWQgd2l0aCBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLiBTdGFibGUKICAg
ICB0ZXN0cyBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aCBhIHplcm8gZXhpdCBzdGF0dXMuIiIiCkBA
IC0zMjMsNiArMzE3LDcgQEAgZGVmIHRlc3RfdGVzdHNfYWZmZWN0ZWRfaWRsaGFybmVzcyhjYXBz
eXMsIG1hbmlmZXN0X2Rpcik6CiAgICAgYXNzZXJ0ICgid2VicnRjLWlkZW50aXR5L2lkbGhhcm5l
c3MuaHR0cHMud2luZG93LmpzXG4iICsKICAgICAgICAgICAgICJ3ZWJydGMtaW5zZXJ0YWJsZS1z
dHJlYW1zL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LmpzXG4iICsKICAgICAgICAgICAgICJ3ZWJy
dGMtc3RhdHMvaWRsaGFybmVzcy53aW5kb3cuanNcbiIgKworICAgICAgICAgICAgIndlYnJ0Yy1z
dGF0cy9zdXBwb3J0ZWQtc3RhdHMuaHRtbFxuIiArCiAgICAgICAgICAgICAid2VicnRjL2lkbGhh
cm5lc3MuaHR0cHMud2luZG93LmpzXG4iKSA9PSBvdXQKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlYzg2MGFiZWIzYTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL2xhdGVzdF9tb3ppbGxh
X2NlbnRyYWwudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9pbnN0YWxsLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9tYXJrZG93bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcnVuLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94Lmlu
aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3RveC5pbmkKaW5kZXggNTA3MTcxMzU1Mzk0Li5jMmY3NDViNTcwNGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5p
bmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdG94LmluaQpAQCAtMSwxMSArMSwxMiBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3LHB5
MzUscHkzNixweTM3LHB5MzgKK2Vudmxpc3QgPSBweTM2LHB5MzcscHkzOAogc2tpcHNkaXN0PVRy
dWUKIHNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMg
PQotICBweXRlc3QKKyAgIyBTYW1lIGFzIHRvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdCwgYWxzbyB0
aGUgbGFzdCB2ZXJzaW9uIHRoYXQgc3VwcG9ydHMgUHl0aG9uIDIKKyAgcHl0ZXN0PT00LjYuMTEK
ICAgcHl0ZXN0LWNvdgogICBoeXBvdGhlc2lzCiAgICMgbW9jayBubyBsb25nZXIgc3VwcG9ydHMg
UHl0aG9uIDIgc2luY2UgdjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkKaW5kZXggNjFkY2Rh
NTQ3MGNiLi4zMGU5NTc0ZWMwYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3V0aWxzLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3V0aWxzLnB5CkBAIC05
LDcgKzksNyBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHppcGZpbGUKIGZyb20gaW8gaW1wb3J0IEJ5
dGVzSU8KIGZyb20gc29ja2V0IGltcG9ydCBlcnJvciBhcyBTb2NrZXRFcnJvciAgIyBOT1FBOiBO
ODEyCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZnJvbSB1
cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgogCiBNWVBZID0gRmFsc2UKIGlmIE1ZUFk6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC92aXJ0dWFsZW52LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQppbmRleCA1MWI5N2NlYWQ4ZGMuLjFj
ZmIxNTA2Y2ZiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CkBAIC01
NSwxMyArNTUsOSBAQCBjbGFzcyBWaXJ0dWFsZW52KG9iamVjdCk6CiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgcGlwX3BhdGgoc2VsZik6Ci0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFq
b3IgPj0gMzoKLSAgICAgICAgICAgIHBpcF9leGVjdXRhYmxlID0gInBpcDMiCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBwaXBfZXhlY3V0YWJsZSA9ICJwaXAyIgotICAgICAgICBwYXRoID0g
ZmluZF9leGVjdXRhYmxlKHBpcF9leGVjdXRhYmxlLCBzZWxmLmJpbl9wYXRoKQorICAgICAgICBw
YXRoID0gZmluZF9leGVjdXRhYmxlKCJwaXAzIiwgc2VsZi5iaW5fcGF0aCkKICAgICAgICAgaWYg
cGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbm90IGZvdW5k
IiAlIHBpcF9leGVjdXRhYmxlKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicGlwMyBu
b3QgZm91bmQiKQogICAgICAgICByZXR1cm4gcGF0aAogCiAgICAgQHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NTA5MDI5Yzc3OTQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYW5kcm9pZC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Jyb3dz
ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvY3JlYXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L21hY2gtZW11bGF0b3IubWFuaWZl
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC9tYXJrZG93bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3BhdGhzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0Zmls
ZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC90b3guaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdXBkYXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC93cHQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC93cHQucHkKaW5kZXggZWZhOTg1YzdjYzE3Li4xZmFmN2Q3YWY3MzUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3dwdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC93cHQucHkKQEAgLTYsNyArNiw2IEBAIGltcG9ydCBzeXMKIAogZnJvbSB0b29s
cyBpbXBvcnQgbG9jYWxwYXRocyAgIyBub3FhOiBGNDAxCiAKLWZyb20gc2l4IGltcG9ydCBpdGVy
aXRlbXMKIGZyb20gLiBpbXBvcnQgdmlydHVhbGVudgogCiAKQEAgLTIzLDcgKzIyLDcgQEAgZGVm
IGxvYWRfY29tbWFuZHMoKToKICAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoYWJz
X3BhdGgpCiAgICAgICAgIHdpdGggb3BlbihhYnNfcGF0aCwgInIiKSBhcyBmOgogICAgICAgICAg
ICAgZGF0YSA9IGpzb24ubG9hZChmKQotICAgICAgICAgICAgZm9yIGNvbW1hbmQsIHByb3BzIGlu
IGl0ZXJpdGVtcyhkYXRhKToKKyAgICAgICAgICAgIGZvciBjb21tYW5kLCBwcm9wcyBpbiBkYXRh
Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0ICJwYXRoIiBpbiBwcm9wcwogICAgICAg
ICAgICAgICAgIGFzc2VydCAic2NyaXB0IiBpbiBwcm9wcwogICAgICAgICAgICAgICAgIHJ2W2Nv
bW1hbmRdID0gewpAQCAtMzEsNyArMzAsNiBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAg
ICAgICAgICAgICAgICAic2NyaXB0IjogcHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAg
ICAgICAicGFyc2VyIjogcHJvcHMuZ2V0KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAg
InBhcnNlX2tub3duIjogcHJvcHMuZ2V0KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKLSAgICAgICAg
ICAgICAgICAgICAgInB5M29ubHkiOiBwcm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAg
ICAgICAgICAgICAgICAgICJoZWxwIjogcHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAg
ICAgICAgICJ2aXJ0dWFsZW52IjogcHJvcHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAg
ICAgICAgICAgICAgICAgICJpbnN0YWxsIjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAt
NTAsOSArNDgsOCBAQCBkZWYgcGFyc2VfYXJncyhhcmd2LCBjb21tYW5kcz1sb2FkX2NvbW1hbmRz
KCkpOgogICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ic2tpcF92ZW52X3NldHVwIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IldoZXRoZXIgdG8gdXNlIHRoZSB2aXJ0dWFsZW52
IGFzLWlzLiBNdXN0IHNldCAtLXZlbnYgYXMgd2VsbCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgiLS1kZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlJ1biB0aGUgZGVidWdnZXIg
aW4gY2FzZSBvZiBhbiBleGNlcHRpb24iKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcHkz
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUnVuIHdpdGggcHl0aG9uMyIpCiAgICAgc3Vi
cGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhkZXN0PSJjb21tYW5kIikKLSAgICBmb3Ig
Y29tbWFuZCwgcHJvcHMgaW4gaXRlcml0ZW1zKGNvbW1hbmRzKToKKyAgICBmb3IgY29tbWFuZCwg
cHJvcHMgaW4gY29tbWFuZHMuaXRlbXMoKToKICAgICAgICAgc3VicGFyc2Vycy5hZGRfcGFyc2Vy
KGNvbW1hbmQsIGhlbHA9cHJvcHNbImhlbHAiXSwgYWRkX2hlbHA9RmFsc2UpCiAKICAgICBhcmdz
LCBleHRyYSA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3YpCkBAIC05Nyw4ICs5NCw3IEBA
IGRlZiBjcmVhdGVfY29tcGxldGVfcGFyc2VyKCk6CiAgICAgZm9yIGNvbW1hbmQgaW4gY29tbWFu
ZHM6CiAgICAgICAgIHByb3BzID0gY29tbWFuZHNbY29tbWFuZF0KIAotICAgICAgICBpZiAocHJv
cHNbInZpcnR1YWxlbnYiXSBhbmQKLSAgICAgICAgICAgIChub3QgcHJvcHNbInB5M29ubHkiXSBv
ciBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMpKToKKyAgICAgICAgaWYgcHJvcHNbInZpcnR1
YWxlbnYiXToKICAgICAgICAgICAgIHNldHVwX3ZpcnR1YWxlbnYoTm9uZSwgRmFsc2UsIHByb3Bz
KQogCiAgICAgICAgIHN1YnBhcnNlciA9IGltcG9ydF9jb21tYW5kKCd3cHQnLCBjb21tYW5kLCBw
cm9wcylbMV0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci8uZ2l0aWdub3JlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDk1NjE2ZWYxZDE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDggQEAKKyoucHlbY29dCisqfgor
KiMKK1wjKgorX3ZpcnR1YWxlbnYKK3Rlc3QvdGVzdC5jZmcKK3Rlc3QvbWV0YWRhdGEvTUFOSUZF
U1QuanNvbgord3B0cnVubmVyLmVnZy1pbmZvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjhhZmMwMWFlMDgwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvYXJj
aGl0ZWN0dXJlLnN2ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvZGVzaWduLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvZXhwZWN0YXRpb24u
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvZG9jcy9pbnRlcm5hbHMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy91c2FnZS5yc3QKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CmluZGV4IDQ4OTNk
N2JkNjI4OS4uMDU5ZjIxMWVhZTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50cy50eHQKQEAgLTEsMTAgKzEsMTAgQEAKIGh0bWw1bGliPT0xLjEK
IG1vemluZm89PTEuMi4xICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjEyMjYKLW1vemxvZz09Ni4xCittb3psb2c9PTcuMS4wCiBtb3pkZWJ1Zz09MC4y
CiAjIFBpbGxvdyA3IHJlcXVpcmVzIFB5dGhvbiAzCiBwaWxsb3c9PTYuMi4yOyBweXRob25fdmVy
c2lvbiA8PSAnMi43JyAgIyBweXVwOiA8Ny4wCi1waWxsb3c9PTguMC4xOyBweXRob25fdmVyc2lv
biA+PSAnMy4wJwotdXJsbGliM1tzZWN1cmVdPT0xLjI1LjExCi1yZXF1ZXN0cz09Mi4yNC4wCitw
aWxsb3c9PTguMS4xOyBweXRob25fdmVyc2lvbiA+PSAnMy4wJwordXJsbGliM1tzZWN1cmVdPT0x
LjI2LjIKK3JlcXVlc3RzPT0yLjI1LjEKIHNpeD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1
aXJlbWVudHNfYW5kcm9pZF93ZWJ2aWV3LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19hbmRyb2lkX3dl
YnZpZXcudHh0CmluZGV4IGU3ZTcxNjFiMTQyNi4uODc0OTgwYjMzOGE3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHNfYW5kcm9pZF93ZWJ2aWV3LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNf
YW5kcm9pZF93ZWJ2aWV3LnR4dApAQCAtMSArMSBAQAotbW96cHJvY2Vzcz09MS4yLjAKK21venBy
b2Nlc3M9PTEuMi4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50c19jaHJvbWUudHh0CmluZGV4IGU3ZTcxNjFiMTQyNi4uODc0OTgwYjMzOGE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHNfY2hyb21lLnR4dApAQCAtMSArMSBAQAotbW96cHJvY2Vzcz09MS4yLjAKK21venByb2Nl
c3M9PTEuMi4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lX2FuZHJvaWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9tZV9hbmRyb2lkLnR4dAppbmRleCBlN2U3MTYxYjE0MjYu
Ljg3NDk4MGIzMzhhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9tZV9hbmRyb2lk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lX2FuZHJvaWQudHh0CkBAIC0xICsxIEBA
Ci1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Jl
cXVpcmVtZW50c19jaHJvbWVfaW9zLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWVfaW9zLnR4
dAppbmRleCBlN2U3MTYxYjE0MjYuLjg3NDk4MGIzMzhhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWly
ZW1lbnRzX2Nocm9tZV9pb3MudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWVfaW9zLnR4
dApAQCAtMSArMSBAQAotbW96cHJvY2Vzcz09MS4yLjAKK21venByb2Nlc3M9PTEuMi4xCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZS50
eHQKaW5kZXggMGE2MTIwOGQ3N2MxLi4wZWY2NGMyMzJiY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVp
cmVtZW50c19lZGdlLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZS50eHQKQEAgLTEsMiAr
MSwyIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKIHNlbGVuaXVtPT0z
LjE0MS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQKaW5kZXggM2YxZWUxZjZiMjBhLi44NzQ5
ODBiMzM4YTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19lZGdlX2Nocm9taXVtLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQKQEAgLTEgKzEgQEAKLW1venBy
b2Nlc3M9PTEuMi4wDQorbW96cHJvY2Vzcz09MS4yLjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19lcGlwaGFueS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZXBpcGhhbnkudHh0CmluZGV4IGU3
ZTcxNjFiMTQyNi4uODc0OTgwYjMzOGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZXBp
cGhhbnkudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19lcGlwaGFueS50eHQKQEAgLTEgKzEgQEAK
LW1venByb2Nlc3M9PTEuMi4wCittb3pwcm9jZXNzPT0xLjIuMQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVx
dWlyZW1lbnRzX2ZpcmVmb3gudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CmluZGV4
IDhiNDU3MDNhNTU5Ni4uNDMyNDVmOTkyZDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNf
ZmlyZWZveC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CkBAIC0xLDEwICsx
LDEwIEBACiBtYXJpb25ldHRlX2RyaXZlcj09My4xLjAKIG1vemNyYXNoPT0yLjAuMAotbW96aW5z
dGFsbD09Mi4wLjAKK21vemluc3RhbGw9PTIuMC4xCiBtb3psZWFrPT0wLjIKIG1vem5ldHdvcms9
PTEuMS4wCi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKIG1venByb2ZpbGU9
PTIuNS4wCi1tb3pydW5uZXI9PTguMC4wCittb3pydW5uZXI9PTguMS4wCiBtb3p2ZXJzaW9uPT0y
LjMuMAotcHN1dGlsPT01LjcuMgorcHN1dGlsPT01LjguMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWly
ZW1lbnRzX2llLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19pZS50eHQKaW5kZXggMGE2MTIwOGQ3N2Mx
Li4wZWY2NGMyMzJiY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19pZS50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvcmVxdWlyZW1lbnRzX2llLnR4dApAQCAtMSwyICsxLDIgQEAKLW1venByb2Nlc3M9PTEuMi4w
Cittb3pwcm9jZXNzPT0xLjIuMQogc2VsZW5pdW09PTMuMTQxLjAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Jl
cXVpcmVtZW50c19vcGVyYS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfb3BlcmEudHh0CmluZGV4IDBh
NjEyMDhkNzdjMS4uMGVmNjRjMjMyYmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfb3Bl
cmEudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19vcGVyYS50eHQKQEAgLTEsMiArMSwyIEBACi1t
b3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKIHNlbGVuaXVtPT0zLjE0MS4wCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19z
YWZhcmkudHh0CmluZGV4IGU3ZTcxNjFiMTQyNi4uNTViNDc0YmE5MTRhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4
dApAQCAtMSArMSwyIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKK3Bz
dXRpbD09NS44LjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfc2F1Y2UudHh0CmluZGV4IDM0YzY2ZWUyMzhiNi4uZWFlN2VmM2YwMDQ4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2UudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50
c19zYXVjZS50eHQKQEAgLTEsMyArMSwzIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vz
cz09MS4yLjEKIHNlbGVuaXVtPT0zLjE0MS4wCi1yZXF1ZXN0cz09Mi4yNC4wCityZXF1ZXN0cz09
Mi4yNS4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2Vydm8udHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWly
ZW1lbnRzX3NlcnZvLnR4dAppbmRleCBlN2U3MTYxYjE0MjYuLjg3NDk4MGIzMzhhNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NlcnZvLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2Vy
dm8udHh0CkBAIC0xICsxIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRz
X3dlYmtpdC50eHQKaW5kZXggZTdlNzE2MWIxNDI2Li44NzQ5ODBiMzM4YTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQu
dHh0CkBAIC0xICsxIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwu
aW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWwuaHRtbC5pbmkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYWVmMDQ5Y2QxMi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwuaW5p
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1bcmVmdGVzdF9hbmRfZmFpbC5odG1sXQot
ICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVjdGVkOiBGQUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21l
dGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLmh0bWwuaW5pIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRh
ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC5odG1sLmluaQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDcyYjMzZjc3NjRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9t
ZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC5odG1sLmluaQorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotW3JlZnRlc3RfY3ljbGVfZmFpbC5odG1sXQotICB0eXBlOiByZWZ0
ZXN0Ci0gIGV4cGVjdGVkOiBGQUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRl
c3QvcmVmdGVzdF9tYXRjaF9mYWlsLmh0bWwuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0
L3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1sLmluaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjNkYzMzNjJmYWM0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1sLmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotW3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVj
dGVkOiBGQUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9t
aXNtYXRjaF9mYWlsLmh0bWwuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
bWlzbWF0Y2hfZmFpbC5odG1sLmluaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA1
NTMzN2UyZDY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sLmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotW3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVj
dGVkOiBGQUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9y
ZWZfdGltZW91dC5odG1sLmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3Jl
Zl90aW1lb3V0Lmh0bWwuaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTM2MjQx
YWQyOWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVz
dF9yZWZfdGltZW91dC5odG1sLmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3Jl
ZnRlc3RfcmVmX3RpbWVvdXQuaHRtbF0KLSAgdHlwZTogcmVmdGVzdAotICBleHBlY3RlZDogVElN
RU9VVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfdGltZW91
dC5odG1sLmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRt
bC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMWI5YmFkZTk1ZC4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRt
bC5pbmkKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVtyZWZ0ZXN0X3RpbWVvdXQuaHRt
bF0KLSAgdHlwZTogcmVmdGVzdAotICBleHBlY3RlZDogVElNRU9VVApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9y
ZWZ0ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWU0
ZmJiNzYzOTYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC5odG1sLmluaQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
bWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWwuaHRtbC5pbmkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21l
dGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaF9mYWlsLmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRh
ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sLmluaQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0
YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRh
ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfdGltZW91dC5odG1sLmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC9tZXRhZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3N1YmRpci93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC9zdWJkaXIvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MmRjMDlkZTU1Yy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC9zdWJkaXIvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvc3ViZGlyL3Rlc3RfcHJlZl9yZXNldC5odG1s
LmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjFiYjE4MzJhOTEuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvX19kaXJfXy5pbmkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21l
dGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdGVzdF9wcmVmX3NldC5odG1sLmluaQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL3N1YmRpci93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiZDg5ZWZlZmE5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rl
c3RoYXJuZXNzL3N1YmRpci9fX2Rpcl9fLmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5l
c3Mvc3ViZGlyL3Rlc3RoYXJuZXNzXzEuaHRtbC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0
YWRhdGEvdGVzdGhhcm5lc3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3Ro
YXJuZXNzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzRl
YTI1Mzk3MjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy90ZXN0aGFybmVzc18wLmh0bWwuaW5pCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy90ZXN0aGFybmVzc19lcnJvci5odG1sLmluaQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvdGVzdGhhcm5lc3NfdGltZW91dC5odG1sLmluaQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CmluZGV4IDQyZTdh
YmJiYWI0OS4uZmQzM2M5YWUyZWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0LnB5CkBAIC0zLDExICszLDExIEBAIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0
IG9zCiBpbXBvcnQgc3lzCiAKK2Zyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIK
KwogZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRsb2cKIGZyb20gbW96bG9nLmhhbmRsZXJz
IGltcG9ydCBCYXNlSGFuZGxlciwgU3RyZWFtSGFuZGxlcgogZnJvbSBtb3psb2cuZm9ybWF0dGVy
cyBpbXBvcnQgTWFjaEZvcm1hdHRlcgotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwotZnJvbSBz
aXgubW92ZXMuY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKIGZyb20gd3B0cnVubmVy
IGltcG9ydCB3cHRjb21tYW5kbGluZSwgd3B0cnVubmVyCiAKIGhlcmUgPSBvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKQEAgLTg0LDcgKzg0LDcgQEAgZGVmIHJ1bl90
ZXN0cyhwcm9kdWN0LCBrd2FyZ3MpOgogCiBkZWYgc2V0dGluZ3NfdG9fYXJndihzZXR0aW5ncyk6
CiAgICAgcnYgPSBbXQotICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3Mp
OgorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZXR0aW5ncy5pdGVtcygpOgogICAgICAgICBrZXkg
PSAiLS0lcyIgJSBuYW1lCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJ2LmFw
cGVuZChrZXkpCkBAIC0xMTAsNyArMTEwLDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3MpOgogCiAg
ICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KHRlc3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3QsIHByb2R1
Y3Rfc2V0dGluZ3MgaW4gaXRlcml0ZW1zKGNvbmZpZ1sicHJvZHVjdHMiXSk6CisgICAgZm9yIHBy
b2R1Y3QsIHByb2R1Y3Rfc2V0dGluZ3MgaW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZW1zKCk6CiAg
ICAgICAgIGlmIGFyZ3MucHJvZHVjdCBhbmQgcHJvZHVjdCBub3QgaW4gYXJncy5wcm9kdWN0Ogog
ICAgICAgICAgICAgY29udGludWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L2dyZWVuLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4t
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUxNDVkNjBiNTVi
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLWV4cGVj
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBo
cmVmPWdyZWVuLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0K
LTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJlZi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJlZi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzODE2N2JiNThkNTcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvZ3JlZW4tcmVmLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwz
ICswLDAgQEAKLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHls
ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvZ3JlZW4tcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3Jl
ZW4tcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMTQ1ZDYwYjU1Yi4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1yZWYuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotPGxpbmsgcmVsPW1hdGNoIGhyZWY9Z3Jl
ZW4uaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHls
ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvZ3JlZW4uaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE2N2JiNThkNTcuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4uaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3Jl
ZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRiLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xv
cjpyZWR9Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0Lmh0dHBzLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdC5odHRwcy1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE2N2JiNThkNTcuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdC5odHRwcy1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1j
b2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3QuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0Lmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVhNDVmMTBmMzVlYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvcmVmdGVzdC9yZWZ0ZXN0Lmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICsw
LDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBocmVmPWdyZWVuLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7
YmFja2dyb3VuZC1jb2xvcjpyZWR9Ci08L3N0eWxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubG9j
YXRpb24ucHJvdG9jb2wgPT09ICJodHRwczoiKSB7Ci0gICBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVuIjsKLX0KLTwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0X2FuZF9mYWlsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRl
c3QvcmVmdGVzdF9hbmRfZmFpbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwNGZiOWFhMTUxNzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCBjaGFpbiB0aGF0IHNob3VsZCBmYWlsPC90aXRs
ZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZC5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tn
cm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTYwMTk1MzU2MjMuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCBjaGFpbiB0aGF0IHNob3VsZCBm
YWlsPC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZnRlc3RfYW5kX2ZhaWxfMC1yZWYu
aHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbF8wLXJlZi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2Jh
Y2tncm91bmQtY29sb3I6cmVkfQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbF8w
LXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1y
ZWYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRmYjlhYTE1MTc2Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxf
MC1yZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPlJlZnRlc3Qg
Y2hhaW4gdGhhdCBzaG91bGQgZmFpbDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWQu
aHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9jeWNsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3RfY3ljbGUtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTE4YmZkODg0NDdiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGUtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotPHRpdGxlPk9SIG1hdGNoIHRoYXQgc2hvdWxkIHBhc3M8L3RpdGxlPgotPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVzdF9jeWNsZV8xLXJlZi5odG1sPgotPHN0eWxlPgotOnJv
b3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5
Y2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTg0YTNiNjc0MWUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBhbGwgbWF0
Y2g8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVzdF9jeWNsZV8wLXJlZi5odG1s
PgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVmLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8wLXJlZi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1OWJlMGI2NDFkZWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8wLXJlZi1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBhbGwg
bWF0Y2g8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVzdF9jeWNsZS5odG1sPgot
PHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0X2N5Y2xlXzAtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVm
dGVzdF9jeWNsZV8wLXJlZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMThi
ZmQ4ODQ0N2IuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVm
dGVzdF9jeWNsZV8wLXJlZi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0
bGU+T1IgbWF0Y2ggdGhhdCBzaG91bGQgcGFzczwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJl
Zj1yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1j
b2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1yZWYtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhODRhM2I2NzQxZS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xl
XzEtcmVmLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRs
ZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGFsbCBtYXRjaDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2gg
aHJlZj1yZWZ0ZXN0X2N5Y2xlXzAtcmVmLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3Vu
ZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1yZWYuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YmUwYjY0MWRlZi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGFs
bCBtYXRjaDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlLmh0bWw+
Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjOGU1NDhjNDYyMjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGZhaWxzPC90
aXRsZT4KLTxsaW5rIHJlbD1taXNtYXRjaCBocmVmPXJlZnRlc3RfY3ljbGVfZmFpbC5odG1sPgot
PHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0X2N5Y2xlX2ZhaWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X2N5Y2xlX2ZhaWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc1ZTc2
YzRjYzliLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3RfY3ljbGVfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+
UmVmdGVzdCB3aXRoIGN5Y2xlLCBmYWlsczwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1y
ZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1yZWYuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5k
LWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVm
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9m
YWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3
NWU3NmM0Y2M5Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotPHRpdGxlPlJlZnRlc3Qgd2l0aCBjeWNsZSwgZmFpbHM8L3RpdGxlPgotPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLmh0bWw+Ci08c3R5bGU+
Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3RfY3ljbGVfZmFpbF8wLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3RfY3ljbGVfZmFpbF8wLXJlZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
OGU1NDhjNDYyMjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAg
QEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGZhaWxzPC90aXRsZT4KLTxsaW5rIHJlbD1t
aXNtYXRjaCBocmVmPXJlZnRlc3RfY3ljbGVfZmFpbC5odG1sPgotPHN0eWxlPgotOnJvb3Qge2Jh
Y2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE2N2JiNThkNTcuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC1l
eHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08c3R5bGU+Ci06cm9v
dCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0
Y2guaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzM2NjNmMxZWNkZi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBzaG91bGQgcGFzczwv
dGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1ncmVlbi5odG1sPgotPHN0eWxlPgotOnJvb3Qg
e2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNo
X2ZhaWwtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21h
dGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2
NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpyZWR9Ci08L3N0eWxlPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0X21hdGNoX2ZhaWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTky
NzJlZjc0ZGE4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfbWF0Y2hfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0
bGU+cmVsPW1hdGNoIHRoYXQgc2hvdWxkIGZhaWw8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhy
ZWY9cmVkLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwv
c3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2gtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNjc3ZTAwNjM0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLWV4cGVjdGVkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNv
bG9yOnJlZH0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2guaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGFmNWZhMDc1MGQ4My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLTx0aXRsZT5yZWw9bWlzbWF0Y2ggdGhhdCBzaG91bGQgcGFzczwvdGl0bGU+
Ci08bGluayByZWw9bWlzbWF0Y2ggaHJlZj1yZWQuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNr
Z3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9m
YWlsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNt
YXRjaF9mYWlsLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4
MTY3YmI1OGQ1Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0X21pc21hdGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxl
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoX2ZhaWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoX2ZhaWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOGQxNjBjNGZjMjAwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NSArMCwwIEBACi08dGl0bGU+cmVsPW1pc21hdGNoIHRoYXQgc2hvdWxkIGZhaWw8L3RpdGxlPgot
PGxpbmsgcmVsPW1pc21hdGNoIGhyZWY9Z3JlZW4uaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNr
Z3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNjc3ZTAwNjM0Yi4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X29yXzAtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2Jh
Y2tncm91bmQtY29sb3I6cmVkfQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNhNTFkZTIxNjQ0MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X29yXzAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDYgKzAsMCBAQAotPHRpdGxlPk9SIG1hdGNoIHRoYXQgc2hvdWxkIHBhc3M8L3RpdGxlPgotPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVkLmh0bWw+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1ncmVlbi5o
dG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwNGNiYjcxZTBjM2MuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08aHRtbCBjbGFzcz0icmVmdGVzdC13YWl0Ij4K
LTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBzaG91bGQgdGltZSBvdXQgaW4gdGhlIHJlZjwvdGl0bGU+
Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X3JlZl90aW1lb3V0LXJlZi5odG1sPgotPHN0
eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZjY4ZjVjYjVmYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw2ICswLDAgQEAKLTxodG1sPgotPHRpdGxlPnJlbD1tYXRjaCB0aGF0IHNob3Vs
ZCB0aW1lIG91dCBpbiB0aGUgcmVmPC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZnRl
c3RfcmVmX3RpbWVvdXQtcmVmLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xv
cjpncmVlbn0KLTwvc3R5bGU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF90aW1lb3V0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF90aW1lb3V0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4MTY3YmI1OGQ1Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X3RpbWVvdXQtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxl
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEw
ZTY3NmJmMDA1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfdGltZW91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08aHRtbCBj
bGFzcz0icmVmdGVzdC13YWl0Ij4KLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBzaG91bGQgdGltZW91
dDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1ncmVlbi5odG1sPgotPHN0eWxlPgotOnJv
b3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8wLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF93YWl0XzAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8wLWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9y
OnJlZH0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8wLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF93YWl0XzAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGY5MjcxNWM2MWU3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8wLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08aHRtbCBjbGFzcz0icmVmdGVzdC13YWl0Ij4KLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBz
aG91bGQgZmFpbDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWQuaHRtbD4KLTxzdHls
ZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH0KLTwvc3R5bGU+Ci08c2NyaXB0Pgotc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9ICJncmVlbiI7Ci0gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFz
c05hbWUgPSAiIjsKLX0sIDIwMDApOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDll
ZDEwMDgxNDFlYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJlZi1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L2dyZWVuLXJlZi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdC5odHRwcy1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3QuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X2FuZF9mYWlsLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVm
dGVzdF9hbmRfZmFpbC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5k
X2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X2FuZF9mYWlsXzAtcmVmLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVz
dF9jeWNsZS1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
Y3ljbGUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVm
LWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8w
LXJlZi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1yZWYt
ZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEt
cmVmLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLWV4
cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWls
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVm
LWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9m
YWlsXzAtcmVmLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC1l
eHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2guaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwtZXhwZWN0ZWQu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLWV4cGVjdGVkLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaC5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfb3JfMC1leHBlY3RlZC5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfb3JfMC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVmdGVzdF90aW1lb3V0LWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVmdGVzdF90aW1lb3V0Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVm
dGVzdF93YWl0XzAtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X3dhaXRfMC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNz
L2ZpcmVmb3gvc3ViZGlyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFy
bmVzcy9maXJlZm94L3N1YmRpci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjZjZjVjNzFjNjk4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS90ZXN0aGFybmVzcy9maXJlZm94L3N1YmRpci93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3Mv
ZmlyZWZveC9zdWJkaXIvdGVzdF9wcmVmX2luaGVyaXQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
dGVzdGhhcm5lc3MvZmlyZWZveC9zdWJkaXIvdGVzdF9wcmVmX3Jlc2V0Lmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIzNjA2ZWRiM2JlLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90
ZXN0aGFybmVzcy9maXJlZm94L3Rlc3RfcHJlZl9kaXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
dGVzdGhhcm5lc3MvZmlyZWZveC90ZXN0X3ByZWZfc2V0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvdGVzdGhhcm5lc3Mvc3ViZGlyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg4N2Y4NWVhNzliNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvdGVzdGhhcm5lc3Mvc3ViZGlyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9z
dWJkaXIvdGVzdGhhcm5lc3NfMS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rl
c3RoYXJuZXNzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxOGFkYWI0MDNm
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvdGVzdGhhcm5lc3MvdGVzdGhhcm5lc3MuaHR0cHMuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvdGVzdGhhcm5lc3MvdGVzdGhhcm5lc3NfMC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90
ZXN0aGFybmVzcy90ZXN0aGFybmVzc19lcnJvci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0
aGFybmVzcy90ZXN0aGFybmVzc19sb25nX3RpbWVvdXQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
dGVzdGhhcm5lc3MvdGVzdGhhcm5lc3NfdGltZW91dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmIwMTFiNmIwNGZkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdC5jZmcuZXhhbXBsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3RveC5pbmkKaW5kZXggNzk4ZjY0YTNlNDIyLi4yYjliY2ExN2ZhNGMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdG94LmluaQpAQCAtMiwxMiArMiwxMyBAQAog
eGZhaWxfc3RyaWN0PXRydWUKIAogW3RveF0KLWVudmxpc3QgPSBweTI3LXtiYXNlLGNocm9tZSxl
ZGdlLGZpcmVmb3gsaWUsb3BlcmEsc2FmYXJpLHNhdWNlLHNlcnZvLHdlYmtpdCx3ZWJraXRndGtf
bWluaWJyb3dzZXIsZXBpcGhhbnl9LHtweTM1LHB5MzYscHkzNyxweTM4fS1iYXNlCitlbnZsaXN0
ID0gcHkzOC17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxz
ZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSx7cHkzNixweTM3fS1i
YXNlCiBza2lwX21pc3NpbmdfaW50ZXJwcmV0ZXJzID0gRmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBz
ID0KLSAgICAgcHl0ZXN0Pj0yLjkKKyAgICAgIyBTYW1lIGFzIHRvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdCwgYWxzbyB0aGUgbGFzdCB2ZXJzaW9uIHRoYXQgc3VwcG9ydHMgUHl0aG9uIDIKKyAgICAg
cHl0ZXN0PT00LjYuMTEKICAgICAgcHl0ZXN0LWNvdgogICAgICBweXRlc3QteGRpc3QKICAgICAg
IyBtb2NrIG5vIGxvbmdlciBzdXBwb3J0cyBQeXRob24gMiBzaW5jZSB2NApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNThlOTcwYTBlZGY2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVT
VC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1l
bnRzX2FuZHJvaWRfd2Vidmlldy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50c19jaHJvbWVfYW5kcm9pZC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21l
X2lvcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRn
ZV9jaHJvbWl1bS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZXBpcGhhbnkudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWly
ZW1lbnRzX2ZpcmVmb3gudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2llLnR4dAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19vcGVyYS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4dAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19zYXVjZS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2Vydm8udHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1l
bnRzX3dlYmtpdC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIu
ZGVmYXVsdC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9fX2lu
aXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9u
IHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJs
YXllci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CmluZGV4
IDYxMTA0NTBiNzI4Mi4uZWMwNWM3NjhmZmNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvYW5kcm9pZF93ZWJsYXllci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5k
cm9pZF93ZWJsYXllci5weQpAQCAtMSw5ICsxLDcgQEAKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWZy
b20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKK2Zy
b20gLmJhc2UgaW1wb3J0IHJlcXVpcmVfYXJnCiBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91
dF9tdWx0aXBsaWVyICAgIyBub3FhOiBGNDAxCiBmcm9tIC5jaHJvbWUgaW1wb3J0IGV4ZWN1dG9y
X2t3YXJncyBhcyBjaHJvbWVfZXhlY3V0b3Jfa3dhcmdzCi1mcm9tIC4ud2ViZHJpdmVyX3NlcnZl
ciBpbXBvcnQgQ2hyb21lRHJpdmVyU2VydmVyCitmcm9tIC5jaHJvbWVfYW5kcm9pZCBpbXBvcnQg
Q2hyb21lQW5kcm9pZEJyb3dzZXJCYXNlCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJp
dmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRl
c3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcmNocm9t
ZSBpbXBvcnQgQ2hyb21lRHJpdmVyV2RzcGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQpAQCAtMjgs
MTQgKzI2LDE2IEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhr
d2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90
eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJn
cyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAg
ICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgICAgICJkZXZp
Y2Vfc2VyaWFsIjoga3dhcmdzWyJkZXZpY2Vfc2VyaWFsIl0sCiAgICAgICAgICAgICAid2ViZHJp
dmVyX2JpbmFyeSI6IGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdLAotICAgICAgICAgICAgIndl
YmRyaXZlcl9hcmdzIjoga3dhcmdzLmdldCgid2ViZHJpdmVyX2FyZ3MiKX0KKyAgICAgICAgICAg
ICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIiksCisgICAgICAg
ICAgICAic3RhY2twYXJzZXJfc2NyaXB0Ijoga3dhcmdzLmdldCgic3RhY2twYXJzZXJfc2NyaXB0
IiksCisgICAgICAgICAgICAib3V0cHV0X2RpcmVjdG9yeSI6IGt3YXJncy5nZXQoIm91dHB1dF9k
aXJlY3RvcnkiKX0KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2Nv
bmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3Mo
bG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZv
X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICAjIFVzZSB1cGRhdGUo
KSB0byBtb2RpZnkgdGhlIGdsb2JhbCBsaXN0IGluIHBsYWNlLgogICAgIF93cHRzZXJ2ZV9wb3J0
cy51cGRhdGUoc2V0KApAQCAtNDMsNyArNDMsNyBAQCBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3Rf
dHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAg
ICAgc2VydmVyX2NvbmZpZ1sncG9ydHMnXVsnd3MnXSArIHNlcnZlcl9jb25maWdbJ3BvcnRzJ11b
J3dzcyddCiAgICAgKSkKIAotICAgIGV4ZWN1dG9yX2t3YXJncyA9IGNocm9tZV9leGVjdXRvcl9r
d2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLAorICAgIGV4ZWN1dG9yX2t3YXJncyA9IGNo
cm9tZV9leGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2Vy
LCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKiprd2FyZ3MpCiAgICAgZGVsIGV4ZWN1dG9yX2t3YXJnc1siY2FwYWJpbGl0aWVzIl1b
Imdvb2c6Y2hyb21lT3B0aW9ucyJdWyJwcmVmcyJdCkBAIC03NCw2MSArNzQsMjIgQEAgZGVmIGVu
dl9vcHRpb25zKCk6CiAgICAgcmV0dXJuIHsic2VydmVyX2hvc3QiOiAiMTI3LjAuMC4xIn0KIAog
Ci0jVE9ETzogcmVmYWN0b3IgY29tbW9uIGVsZW1lbnRzIG9mIFdlYmxheWVyU2hlbGwgYW5kIENo
cm9tZUFuZHJvaWRCcm93c2VyCi1jbGFzcyBXZWJsYXllclNoZWxsKEJyb3dzZXIpOgorY2xhc3Mg
V2VibGF5ZXJTaGVsbChDaHJvbWVBbmRyb2lkQnJvd3NlckJhc2UpOgogICAgICIiIkNocm9tZSBp
cyBiYWNrZWQgYnkgY2hyb21lZHJpdmVyLCB3aGljaCBpcyBzdXBwbGllZCB0aHJvdWdoCiAgICAg
YGB3cHRydW5uZXIud2ViZHJpdmVyLkNocm9tZURyaXZlclNlcnZlcmBgLgogICAgICIiIgogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCB3ZWJkcml2ZXJfYmluYXJ5PSJj
aHJvbWVkcml2ZXIiLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwKKyAg
ICAgICAgICAgICAgICAgd2ViZHJpdmVyX2JpbmFyeT0iY2hyb21lZHJpdmVyIiwKKyAgICAgICAg
ICAgICAgICAgcmVtb3RlX3F1ZXVlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRldmljZV9zZXJp
YWw9Tm9uZSwKLSAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3M9Tm9uZSk6CisgICAgICAg
ICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUsCisgICAgICAgICAgICAgICAgIHN0YWNrcGFy
c2VyX3NjcmlwdD1Ob25lLAorICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyZWN0b3J5PU5vbmUp
OgogICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IHJlcHJlc2VudGF0aW9uIG9mIENocm9tZS4gIFRo
ZSBgYmluYXJ5YCBhcmd1bWVudCBnaXZlcwogICAgICAgICB0aGUgYnJvd3NlciBiaW5hcnkgdG8g
dXNlIGZvciB0ZXN0aW5nLiIiIgotICAgICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dl
cikKKyAgICAgICAgc3VwZXIoV2VibGF5ZXJTaGVsbCwgc2VsZikuX19pbml0X18obG9nZ2VyLAor
ICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnksIHJlbW90ZV9xdWV1ZSwgZGV2aWNlX3Nl
cmlhbCwKKyAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncywgc3RhY2twYXJzZXJfc2NyaXB0
LCBvdXRwdXRfZGlyZWN0b3J5KQogICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQotICAgICAg
ICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFsCi0gICAgICAgIHNlbGYuc2VydmVy
ID0gQ2hyb21lRHJpdmVyU2VydmVyKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiaW5hcnk9d2ViZHJpdmVyX2JpbmFyeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz13ZWJkcml2ZXJfYXJncykKLSAgICAg
ICAgc2VsZi5zZXR1cF9hZGJfcmV2ZXJzZSgpCi0KLSAgICBkZWYgX2FkYl9ydW4oc2VsZiwgYXJn
cyk6Ci0gICAgICAgIGNtZCA9IFsnYWRiJ10KLSAgICAgICAgaWYgc2VsZi5kZXZpY2Vfc2VyaWFs
OgotICAgICAgICAgICAgY21kLmV4dGVuZChbJy1zJywgc2VsZi5kZXZpY2Vfc2VyaWFsXSkKLSAg
ICAgICAgY21kLmV4dGVuZChhcmdzKQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCcgJy5qb2lu
KGNtZCkpCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQpCi0KLSAgICBkZWYgc2V0
dXBfYWRiX3JldmVyc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX2FkYl9ydW4oWyd3YWl0LWZvci1k
ZXZpY2UnXSkKLSAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1vdmUtYWxs
J10pCi0gICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFsbCddKQot
ICAgICAgICAjICJhZGIgcmV2ZXJzZSIgYmFzaWNhbGx5IGZvcndhcmRzIG5ldHdvcmsgY29ubmVj
dGlvbiBmcm9tIGRldmljZSB0bwotICAgICAgICAjIGhvc3QuCi0gICAgICAgIGZvciBwb3J0IGlu
IF93cHRzZXJ2ZV9wb3J0czoKLSAgICAgICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywg
J3RjcDolZCcgJSBwb3J0LCAndGNwOiVkJyAlIHBvcnRdKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYs
ICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoYmxvY2s9RmFsc2UpCi0KLSAg
ICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc2VydmVyLnN0b3Ao
Zm9yY2U9Zm9yY2UpCi0KLSAgICBkZWYgcGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5z
ZXJ2ZXIucGlkCi0KLSAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgICMgVE9ETyhhdG8p
OiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCi0gICAgICAgICMgYW5k
IGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KLSAg
ICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgp
Ci0KLSAgICBkZWYgY2xlYW51cChzZWxmKToKLSAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAg
c2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAgIHNlbGYu
X2FkYl9ydW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFsbCddKQotCi0gICAgZGVmIGV4ZWN1dG9y
X2Jyb3dzZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsid2ViZHJp
dmVyX3VybCI6IHNlbGYuc2VydmVyLnVybH0KKyAgICAgICAgc2VsZi53cHRzZXJ2ZXJfcG9ydHMg
PSBfd3B0c2VydmVfcG9ydHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRy
b2lkX3dlYnZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5
CmluZGV4IGQwNzczODczNTA4Zi4uNTRkZDEyODFmZDhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9hbmRyb2lkX3dlYnZpZXcucHkKQEAgLTEsOSArMSw3IEBACi1pbXBvcnQgc3VicHJvY2Vzcwot
Ci1mcm9tIC5iYXNlIGltcG9ydCBCcm93c2VyLCBFeGVjdXRvckJyb3dzZXIsIHJlcXVpcmVfYXJn
Citmcm9tIC5iYXNlIGltcG9ydCByZXF1aXJlX2FyZwogZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3Rp
bWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuY2hyb21lIGltcG9ydCBleGVj
dXRvcl9rd2FyZ3MgYXMgY2hyb21lX2V4ZWN1dG9yX2t3YXJncwotZnJvbSAuLndlYmRyaXZlcl9z
ZXJ2ZXIgaW1wb3J0IENocm9tZURyaXZlclNlcnZlcgorZnJvbSAuY2hyb21lX2FuZHJvaWQgaW1w
b3J0IENocm9tZUFuZHJvaWRCcm93c2VyQmFzZQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndl
YmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0
MDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJS
ZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3Jj
aHJvbWUgaW1wb3J0IENocm9tZURyaXZlcldkc3BlY0V4ZWN1dG9yICAjIG5vcWE6IEY0MDEKQEAg
LTI4LDE0ICsyNiwxNiBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9h
cmcoa3dhcmdzLCAid2ViZHJpdmVyX2JpbmFyeSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRl
c3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9r
d2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3Mp
OgogICAgIHJldHVybiB7ImJpbmFyeSI6IGt3YXJnc1siYmluYXJ5Il0sCiAgICAgICAgICAgICAi
ZGV2aWNlX3NlcmlhbCI6IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdLAogICAgICAgICAgICAgIndl
YmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKLSAgICAgICAgICAg
ICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9CisgICAgICAg
ICAgICAid2ViZHJpdmVyX2FyZ3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpLAorICAg
ICAgICAgICAgInN0YWNrcGFyc2VyX3NjcmlwdCI6IGt3YXJncy5nZXQoInN0YWNrcGFyc2VyX3Nj
cmlwdCIpLAorICAgICAgICAgICAgIm91dHB1dF9kaXJlY3RvcnkiOiBrd2FyZ3MuZ2V0KCJvdXRw
dXRfZGlyZWN0b3J5Iil9CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZl
cl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhlY3V0b3Jfa3dh
cmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5f
aW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgIyBVc2UgdXBk
YXRlKCkgdG8gbW9kaWZ5IHRoZSBnbG9iYWwgbGlzdCBpbiBwbGFjZS4KICAgICBfd3B0c2VydmVf
cG9ydHMudXBkYXRlKHNldCgKQEAgLTQzLDcgKzQzLDcgQEAgZGVmIGV4ZWN1dG9yX2t3YXJncyh0
ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAg
ICAgICAgIHNlcnZlcl9jb25maWdbJ3BvcnRzJ11bJ3dzJ10gKyBzZXJ2ZXJfY29uZmlnWydwb3J0
cyddWyd3c3MnXQogICAgICkpCiAKLSAgICBleGVjdXRvcl9rd2FyZ3MgPSBjaHJvbWVfZXhlY3V0
b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKKyAgICBleGVjdXRvcl9rd2FyZ3Mg
PSBjaHJvbWVfZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmln
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFu
YWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICoqa3dhcmdzKQogICAgIGRlbCBleGVjdXRvcl9rd2FyZ3NbImNhcGFiaWxpdGll
cyJdWyJnb29nOmNocm9tZU9wdGlvbnMiXVsicHJlZnMiXQpAQCAtNTEsMTAgKzUxLDExIEBAIGRl
ZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2Vy
LCBydW5faW5mb19kYXRhLAogICAgICMgTm90ZSB0aGF0IGZvciBXZWJWaWV3LCB3ZSBsYXVuY2gg
YSB0ZXN0IHNoZWxsIGFuZCBoYXZlIHRoZSB0ZXN0IHNoZWxsIHVzZSBXZWJWaWV3LgogICAgICMg
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL0hFQUQvYW5k
cm9pZF93ZWJ2aWV3L2RvY3Mvd2Vidmlldy1zaGVsbC5tZAogICAgIGNhcGFiaWxpdGllc1siZ29v
ZzpjaHJvbWVPcHRpb25zIl1bImFuZHJvaWRQYWNrYWdlIl0gPSBcCi0gICAgICAgICJvcmcuY2hy
b21pdW0ud2Vidmlld19zaGVsbCIKLSAgICBjYXBhYmlsaXRpZXNbImdvb2c6Y2hyb21lT3B0aW9u
cyJdWyJhbmRyb2lkQWN0aXZpdHkiXSA9ICIuV2ViUGxhdGZvcm1UZXN0c0FjdGl2aXR5IgotICAg
IGlmIGt3YXJncy5nZXQoJ2RldmljZV9zZXJpYWwnKToKLSAgICAgICAgY2FwYWJpbGl0aWVzWyJn
b29nOmNocm9tZU9wdGlvbnMiXVsiYW5kcm9pZERldmljZVNlcmlhbCJdID0ga3dhcmdzWydkZXZp
Y2Vfc2VyaWFsJ10KKyAgICAgICAga3dhcmdzLmdldCgicGFja2FnZV9uYW1lIiwgIm9yZy5jaHJv
bWl1bS53ZWJ2aWV3X3NoZWxsIikKKyAgICBjYXBhYmlsaXRpZXNbImdvb2c6Y2hyb21lT3B0aW9u
cyJdWyJhbmRyb2lkQWN0aXZpdHkiXSA9IFwKKyAgICAgICAgIm9yZy5jaHJvbWl1bS53ZWJ2aWV3
X3NoZWxsLldlYlBsYXRmb3JtVGVzdHNBY3Rpdml0eSIKKyAgICBpZiBrd2FyZ3MuZ2V0KCJkZXZp
Y2Vfc2VyaWFsIik6CisgICAgICAgIGNhcGFiaWxpdGllc1siZ29vZzpjaHJvbWVPcHRpb25zIl1b
ImFuZHJvaWREZXZpY2VTZXJpYWwiXSA9IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdCiAKICAgICAj
IFdvcmthcm91bmQ6IGRyaXZlci5xdWl0KCkgY2Fubm90IHF1aXQgU3lzdGVtV2ViVmlld1NoZWxs
LgogICAgIGV4ZWN1dG9yX2t3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdID0gRmFsc2UKQEAgLTcz
LDYxICs3NCwyMSBAQCBkZWYgZW52X29wdGlvbnMoKToKICAgICByZXR1cm4geyJzZXJ2ZXJfaG9z
dCI6ICIxMjcuMC4wLjEifQogCiAKLSNUT0RPOiByZWZhY3RvciBjb21tb24gZWxlbWVudHMgb2Yg
U3lzdGVtV2ViVmlld1NoZWxsIGFuZCBDaHJvbWVBbmRyb2lkQnJvd3NlcgotY2xhc3MgU3lzdGVt
V2ViVmlld1NoZWxsKEJyb3dzZXIpOgorY2xhc3MgU3lzdGVtV2ViVmlld1NoZWxsKENocm9tZUFu
ZHJvaWRCcm93c2VyQmFzZSk6CiAgICAgIiIiQ2hyb21lIGlzIGJhY2tlZCBieSBjaHJvbWVkcml2
ZXIsIHdoaWNoIGlzIHN1cHBsaWVkIHRocm91Z2gKICAgICBgYHdwdHJ1bm5lci53ZWJkcml2ZXIu
Q2hyb21lRHJpdmVyU2VydmVyYGAuCiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9ImNocm9tZWRyaXZlciIsCisgICAgICAg
ICAgICAgICAgIHJlbW90ZV9xdWV1ZT1Ob25lLAogICAgICAgICAgICAgICAgICBkZXZpY2Vfc2Vy
aWFsPU5vbmUsCi0gICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgorICAgICAg
ICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25lLAorICAgICAgICAgICAgICAgICBzdGFja3Bh
cnNlcl9zY3JpcHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgb3V0cHV0X2RpcmVjdG9yeT1Ob25l
KToKICAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyByZXByZXNlbnRhdGlvbiBvZiBDaHJvbWUuICBU
aGUgYGJpbmFyeWAgYXJndW1lbnQgZ2l2ZXMKICAgICAgICAgdGhlIGJyb3dzZXIgYmluYXJ5IHRv
IHVzZSBmb3IgdGVzdGluZy4iIiIKLSAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dn
ZXIpCisgICAgICAgIHN1cGVyKFN5c3RlbVdlYlZpZXdTaGVsbCwgc2VsZikuX19pbml0X18obG9n
Z2VyLAorICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnksIHJlbW90ZV9xdWV1ZSwgZGV2
aWNlX3NlcmlhbCwKKyAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncywgc3RhY2twYXJzZXJf
c2NyaXB0LCBvdXRwdXRfZGlyZWN0b3J5KQogICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQot
ICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFsCi0gICAgICAgIHNlbGYu
c2VydmVyID0gQ2hyb21lRHJpdmVyU2VydmVyKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnk9d2ViZHJpdmVyX2JpbmFyeSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz13ZWJkcml2ZXJfYXJncykK
LSAgICAgICAgc2VsZi5zZXR1cF9hZGJfcmV2ZXJzZSgpCi0KLSAgICBkZWYgX2FkYl9ydW4oc2Vs
ZiwgYXJncyk6Ci0gICAgICAgIGNtZCA9IFsnYWRiJ10KLSAgICAgICAgaWYgc2VsZi5kZXZpY2Vf
c2VyaWFsOgotICAgICAgICAgICAgY21kLmV4dGVuZChbJy1zJywgc2VsZi5kZXZpY2Vfc2VyaWFs
XSkKLSAgICAgICAgY21kLmV4dGVuZChhcmdzKQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCcg
Jy5qb2luKGNtZCkpCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQpCi0KLSAgICBk
ZWYgc2V0dXBfYWRiX3JldmVyc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX2FkYl9ydW4oWyd3YWl0
LWZvci1kZXZpY2UnXSkKLSAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1v
dmUtYWxsJ10pCi0gICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFs
bCddKQotICAgICAgICAjICJhZGIgcmV2ZXJzZSIgYmFzaWNhbGx5IGZvcndhcmRzIG5ldHdvcmsg
Y29ubmVjdGlvbiBmcm9tIGRldmljZSB0bwotICAgICAgICAjIGhvc3QuCi0gICAgICAgIGZvciBw
b3J0IGluIF93cHRzZXJ2ZV9wb3J0czoKLSAgICAgICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZl
cnNlJywgJ3RjcDolZCcgJSBwb3J0LCAndGNwOiVkJyAlIHBvcnRdKQotCi0gICAgZGVmIHN0YXJ0
KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoYmxvY2s9RmFsc2Up
Ci0KLSAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc2VydmVy
LnN0b3AoZm9yY2U9Zm9yY2UpCi0KLSAgICBkZWYgcGlkKHNlbGYpOgotICAgICAgICByZXR1cm4g
c2VsZi5zZXJ2ZXIucGlkCi0KLSAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgICMgVE9E
TyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCi0gICAgICAg
ICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Np
b24KLSAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19h
bGl2ZSgpCi0KLSAgICBkZWYgY2xlYW51cChzZWxmKToKLSAgICAgICAgc2VsZi5zdG9wKCkKLSAg
ICAgICAgc2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAg
IHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFsbCddKQotCi0gICAgZGVmIGV4
ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsi
d2ViZHJpdmVyX3VybCI6IHNlbGYuc2VydmVyLnVybH0KKyAgICAgICAgc2VsZi53cHRzZXJ2ZXJf
cG9ydHMgPSBfd3B0c2VydmVfcG9ydHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggZjIyMDViMTYw
ZjYxLi5mNzM4OGFkN2U2ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNl
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CkBAIC0zLDcgKzMsNiBAQCBp
bXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzb2NrZXQKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBh
YnN0cmFjdG1ldGhvZAogZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQotZnJvbSBzaXggaW1wb3J0
IGl0ZXJpdGVtcwogCiBmcm9tIC4ud3B0Y29tbWFuZGxpbmUgaW1wb3J0IHJlcXVpcmVfYXJnICAj
IG5vcWE6IEY0MDEKIApAQCAtMTYzLDYgKzE2MiwxMCBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6
CiAgICAgICAgIHdpdGggd2hpY2ggaXQgc2hvdWxkIGJlIGluc3RhbnRpYXRlZCIiIgogICAgICAg
ICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7fQogCisgICAgZGVmIG1heWJlX3BhcnNlX3RvbWJz
dG9uZShzZWxmKToKKyAgICAgICAgIiIiUG9zc2libHkgcGFyc2UgdG9tYnN0b25lcyBvbiBBbmRy
b2lkIGRldmljZSBmb3IgQW5kcm9pZCB0YXJnZXQiIiIKKyAgICAgICAgcGFzcworCiAgICAgZGVm
IGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgogICAgICAgICAiIiJDaGVjayBpZiBh
IGNyYXNoIG9jY3VyZWQgYW5kIG91dHB1dCBhbnkgdXNlZnVsIGluZm9ybWF0aW9uIHRvIHRoZQog
ICAgICAgICBsb2cuIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhIGNyYXNo
IG9jY3VyZWQuIiIiCkBAIC0yMDIsNSArMjA1LDUgQEAgY2xhc3MgRXhlY3V0b3JCcm93c2VyKG9i
amVjdCk6CiAgICAgdXAgdGhlIGJyb3dzZXIgZnJvbSB0aGUgcnVubmVyIHByb2Nlc3MuCiAgICAg
IiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgZm9yIGssIHYg
aW4gaXRlcml0ZW1zKGt3YXJncyk6CisgICAgICAgIGZvciBrLCB2IGluIGt3YXJncy5pdGVtcygp
OgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2Nocm9tZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkK
aW5kZXggZmQyNTFhNDMxYzMwLi4wNGFjMzcyNmZiYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9jaHJvbWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5w
eQpAQCAtMjgsMTMgKzI4LDEzIEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1
aXJlX2FyZyhrd2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5IikKIAogCi1kZWYgYnJvd3Nlcl9rd2Fy
Z3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93
c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3
YXJncyk6CiAgICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAg
ICAgICJ3ZWJkcml2ZXJfYmluYXJ5Ijoga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0sCiAgICAg
ICAgICAgICAid2ViZHJpdmVyX2FyZ3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpfQog
CiAKLWRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9t
YW5hZ2VyLCBydW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3Rf
dHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgIGV4ZWN1dG9yX2t3YXJncyA9IGJhc2VfZXhl
Y3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLApA
QCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIENocm9tZUJyb3dzZXIoQnJvd3Nlcik6CiAgICAgIiIi
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5h
cnk9ImNocm9tZWRyaXZlciIsCi0gICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUp
OgorICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAg
ICAgICIiIkNyZWF0ZXMgYSBuZXcgcmVwcmVzZW50YXRpb24gb2YgQ2hyb21lLiAgVGhlIGBiaW5h
cnlgIGFyZ3VtZW50IGdpdmVzCiAgICAgICAgIHRoZSBicm93c2VyIGJpbmFyeSB0byB1c2UgZm9y
IHRlc3RpbmcuIiIiCiAgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CmluZGV4IDQ4NWI5NmYzMWU3ZC4uNzU4
MGJlZGRkYjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJv
aWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0x
LDMgKzEsNCBAQAoraW1wb3J0IG1venByb2Nlc3MKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20g
LmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKQEAgLTI5
LDE0ICszMCwxNiBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmco
a3dhcmdzLCAid2ViZHJpdmVyX2JpbmFyeSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3Rf
dHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2Fy
Z3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgog
ICAgIHJldHVybiB7InBhY2thZ2VfbmFtZSI6IGt3YXJnc1sicGFja2FnZV9uYW1lIl0sCiAgICAg
ICAgICAgICAiZGV2aWNlX3NlcmlhbCI6IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdLAogICAgICAg
ICAgICAgIndlYmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKLSAg
ICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9
CisgICAgICAgICAgICAid2ViZHJpdmVyX2FyZ3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJn
cyIpLAorICAgICAgICAgICAgInN0YWNrcGFyc2VyX3NjcmlwdCI6IGt3YXJncy5nZXQoInN0YWNr
cGFyc2VyX3NjcmlwdCIpLAorICAgICAgICAgICAgIm91dHB1dF9kaXJlY3RvcnkiOiBrd2FyZ3Mu
Z2V0KCJvdXRwdXRfZGlyZWN0b3J5Iil9CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5
cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhl
Y3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5h
Z2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAg
IyBVc2UgdXBkYXRlKCkgdG8gbW9kaWZ5IHRoZSBnbG9iYWwgbGlzdCBpbiBwbGFjZS4KICAgICBf
d3B0c2VydmVfcG9ydHMudXBkYXRlKHNldCgKQEAgLTQ0LDcgKzQ3LDcgQEAgZGVmIGV4ZWN1dG9y
X2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZv
X2RhdGEsCiAgICAgICAgIHNlcnZlcl9jb25maWdbJ3BvcnRzJ11bJ3dzJ10gKyBzZXJ2ZXJfY29u
ZmlnWydwb3J0cyddWyd3c3MnXQogICAgICkpCiAKLSAgICBleGVjdXRvcl9rd2FyZ3MgPSBjaHJv
bWVfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKKyAgICBleGVjdXRv
cl9rd2FyZ3MgPSBjaHJvbWVfZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2
ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAgICMgUmVtb3ZlIHVuc3VwcG9ydGVkIG9w
dGlvbnMgb24gbW9iaWxlLgpAQCAtNjgsMjEgKzcxLDgwIEBAIGRlZiBlbnZfb3B0aW9ucygpOgog
ICAgICMgYWxsb3cgdGhlIHVzZSBvZiBob3N0LXJlc29sdmVyLXJ1bGVzIGluIGxpZXUgb2YgbW9k
aWZ5aW5nIC9ldGMvaG9zdHMgZmlsZQogICAgIHJldHVybiB7InNlcnZlcl9ob3N0IjogIjEyNy4w
LjAuMSJ9CiAKK2NsYXNzIExvZ2NhdFJ1bm5lcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHJlbW90ZV9xdWV1ZSk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYuYnJvd3NlciA9IGJyb3dzZXIKKyAgICAgICAgc2VsZi5y
ZW1vdGVfcXVldWUgPSByZW1vdGVfcXVldWUKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fcnVuKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJk
SW50ZXJydXB0OgorICAgICAgICAgICAgc2VsZi5zdG9wKCkKKworICAgIGRlZiBfcnVuKHNlbGYp
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFRPRE86IGFkYiBsb2djYXQgLWMgZmFpbCBy
YW5kb21seSB3aXRoIG1lc3NhZ2UKKyAgICAgICAgICAgICMgImZhaWxlZCB0byBjbGVhciB0aGUg
J21haW4nIGxvZyIKKyAgICAgICAgICAgIHNlbGYuYnJvd3Nlci5jbGVhcl9sb2coKQorICAgICAg
ICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBzZWxm
LmxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGNsZWFyIGxvZ2NhdCBidWZmZXIiKQorCisgICAgICAg
IHNlbGYuX2NtZCA9IHNlbGYuYnJvd3Nlci5sb2djYXRfY21kKCkKKyAgICAgICAgc2VsZi5fcHJv
YyA9IG1venByb2Nlc3MuUHJvY2Vzc0hhbmRsZXIoCisgICAgICAgICAgICBzZWxmLl9jbWQsCisg
ICAgICAgICAgICBwcm9jZXNzT3V0cHV0TGluZT1zZWxmLm9uX291dHB1dCwKKyAgICAgICAgICAg
IHN0b3JlT3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLl9wcm9jLnJ1bigpCisKKyAgICBkZWYg
X3NlbmRfbWVzc2FnZShzZWxmLCBjb21tYW5kLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlLnB1dCgoY29tbWFuZCwgYXJncykpCisgICAgICAgIGV4
Y2VwdCBBc3NlcnRpb25FcnJvcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkVy
cm9yIHdoZW4gc2VuZCB0byByZW1vdGUgcXVldWUiKQogCi1jbGFzcyBDaHJvbWVBbmRyb2lkQnJv
d3NlcihCcm93c2VyKToKLSAgICAiIiJDaHJvbWUgaXMgYmFja2VkIGJ5IGNocm9tZWRyaXZlciwg
d2hpY2ggaXMgc3VwcGxpZWQgdGhyb3VnaAotICAgIGBgd3B0cnVubmVyLndlYmRyaXZlci5DaHJv
bWVEcml2ZXJTZXJ2ZXJgYC4KLSAgICAiIiIKKyAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxz
ZSk6CisgICAgICAgIGlmIHNlbGYuaXNfYWxpdmUoKToKKyAgICAgICAgICAgIGtpbGxfcmVzdWx0
ID0gc2VsZi5fcHJvYy5raWxsKCkKKyAgICAgICAgICAgIGlmIGZvcmNlIGFuZCBraWxsX3Jlc3Vs
dCAhPSAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Mua2lsbCg5KQogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcGFja2FnZV9uYW1lLCB3ZWJkcml2ZXJfYmluYXJ5PSJjaHJv
bWVkcml2ZXIiLAotICAgICAgICAgICAgICAgICBkZXZpY2Vfc2VyaWFsPU5vbmUsIHdlYmRyaXZl
cl9hcmdzPU5vbmUpOgotICAgICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKLSAg
ICAgICAgc2VsZi5wYWNrYWdlX25hbWUgPSBwYWNrYWdlX25hbWUKKyAgICBkZWYgaXNfYWxpdmUo
c2VsZik6CisgICAgICAgIHJldHVybiBoYXNhdHRyKHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNl
bGYuX3Byb2MucG9sbCgpIGlzIE5vbmUKKworICAgIGRlZiBvbl9vdXRwdXQoc2VsZiwgbGluZSk6
CisgICAgICAgIGRhdGEgPSB7CisgICAgICAgICAgICAicHJvY2VzcyI6ICJMT0dDQVQiLAorICAg
ICAgICAgICAgImNvbW1hbmQiOiAibG9nY2F0IiwKKyAgICAgICAgICAgICJkYXRhIjogbGluZQor
ICAgICAgICB9CisgICAgICAgIHNlbGYuX3NlbmRfbWVzc2FnZSgibG9nIiwgInByb2Nlc3Nfb3V0
cHV0IiwgZGF0YSkKKworY2xhc3MgQ2hyb21lQW5kcm9pZEJyb3dzZXJCYXNlKEJyb3dzZXIpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsCisgICAgICAgICAgICAgICAgIHdlYmRyaXZl
cl9iaW5hcnk9ImNocm9tZWRyaXZlciIsCisgICAgICAgICAgICAgICAgIHJlbW90ZV9xdWV1ZSA9
IE5vbmUsCisgICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgd2ViZHJpdmVyX2FyZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3RhY2twYXJzZXJf
c2NyaXB0PU5vbmUsCisgICAgICAgICAgICAgICAgIG91dHB1dF9kaXJlY3Rvcnk9Tm9uZSk6Cisg
ICAgICAgIHN1cGVyKENocm9tZUFuZHJvaWRCcm93c2VyQmFzZSwgc2VsZikuX19pbml0X18obG9n
Z2VyKQogICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFsCisgICAgICAg
IHNlbGYuc3RhY2twYXJzZXJfc2NyaXB0ID0gc3RhY2twYXJzZXJfc2NyaXB0CisgICAgICAgIHNl
bGYub3V0cHV0X2RpcmVjdG9yeSA9IG91dHB1dF9kaXJlY3RvcnkKKyAgICAgICAgc2VsZi5yZW1v
dGVfcXVldWUgPSByZW1vdGVfcXVldWUKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBDaHJvbWVEcml2
ZXJTZXJ2ZXIoc2VsZi5sb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpbmFyeT13ZWJkcml2ZXJfYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzPXdlYmRyaXZlcl9hcmdzKQorICAgICAgICBpZiBzZWxmLnJl
bW90ZV9xdWV1ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYubG9nY2F0X3J1bm5lciA9
IExvZ2NhdFJ1bm5lcihzZWxmLmxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYsIHNlbGYucmVtb3RlX3F1ZXVlKQorCisgICAgZGVmIHNldHVwKHNl
bGYpOgogICAgICAgICBzZWxmLnNldHVwX2FkYl9yZXZlcnNlKCkKKyAgICAgICAgaWYgc2VsZi5y
ZW1vdGVfcXVldWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmxvZ2NhdF9ydW5uZXIu
c3RhcnQoKQogCiAgICAgZGVmIF9hZGJfcnVuKHNlbGYsIGFyZ3MpOgogICAgICAgICBjbWQgPSBb
J2FkYiddCkBAIC05MiwxNCArMTU0LDYgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJv
d3Nlcik6CiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJyAnLmpvaW4oY21kKSkKICAgICAgICAg
c3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCkKIAotICAgIGRlZiBzZXR1cF9hZGJfcmV2ZXJzZShz
ZWxmKToKLSAgICAgICAgc2VsZi5fYWRiX3J1bihbJ3dhaXQtZm9yLWRldmljZSddKQotICAgICAg
ICBzZWxmLl9hZGJfcnVuKFsnZm9yd2FyZCcsICctLXJlbW92ZS1hbGwnXSkKLSAgICAgICAgc2Vs
Zi5fYWRiX3J1bihbJ3JldmVyc2UnLCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAgICMgImFkYiBy
ZXZlcnNlIiBmb3J3YXJkcyBuZXR3b3JrIGNvbm5lY3Rpb24gZnJvbSBkZXZpY2UgdG8gaG9zdC4K
LSAgICAgICAgZm9yIHBvcnQgaW4gX3dwdHNlcnZlX3BvcnRzOgotICAgICAgICAgICAgc2VsZi5f
YWRiX3J1bihbJ3JldmVyc2UnLCAndGNwOiVkJyAlIHBvcnQsICd0Y3A6JWQnICUgcG9ydF0pCi0K
ICAgICBkZWYgc3RhcnQoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnNlcnZlci5zdGFy
dChibG9jaz1GYWxzZSkKIApAQCAtMTE5LDYgKzE3Myw1NCBAQCBjbGFzcyBDaHJvbWVBbmRyb2lk
QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAgc2VsZi5fYWRi
X3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1vdmUtYWxsJ10pCiAgICAgICAgIHNlbGYuX2FkYl9ydW4o
WydyZXZlcnNlJywgJy0tcmVtb3ZlLWFsbCddKQorICAgICAgICBpZiBzZWxmLnJlbW90ZV9xdWV1
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYubG9nY2F0X3J1bm5lci5zdG9wKGZvcmNl
PVRydWUpCiAKICAgICBkZWYgZXhlY3V0b3JfYnJvd3NlcihzZWxmKToKICAgICAgICAgcmV0dXJu
IEV4ZWN1dG9yQnJvd3NlciwgeyJ3ZWJkcml2ZXJfdXJsIjogc2VsZi5zZXJ2ZXIudXJsfQorCisg
ICAgZGVmIGNsZWFyX2xvZyhzZWxmKToKKyAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2xvZ2NhdCcs
ICctYyddKQorCisgICAgZGVmIGxvZ2NhdF9jbWQoc2VsZik6CisgICAgICAgIGNtZCA9IFsnYWRi
J10KKyAgICAgICAgaWYgc2VsZi5kZXZpY2Vfc2VyaWFsOgorICAgICAgICAgICAgY21kLmV4dGVu
ZChbJy1zJywgc2VsZi5kZXZpY2Vfc2VyaWFsXSkKKyAgICAgICAgY21kLmV4dGVuZChbJ2xvZ2Nh
dCcsICcqOkQnXSkKKyAgICAgICAgcmV0dXJuIGNtZAorCisgICAgZGVmIG1heWJlX3BhcnNlX3Rv
bWJzdG9uZShzZWxmLCBsb2dnZXIpOgorICAgICAgICBpZiBzZWxmLnN0YWNrcGFyc2VyX3Njcmlw
dDoKKyAgICAgICAgICAgIGNtZCA9IFtzZWxmLnN0YWNrcGFyc2VyX3NjcmlwdCwgIi1hIiwgIi13
Il0KKyAgICAgICAgICAgIGlmIHNlbGYuZGV2aWNlX3NlcmlhbDoKKyAgICAgICAgICAgICAgICBj
bWQuZXh0ZW5kKFsiLS1kZXZpY2UiLCBzZWxmLmRldmljZV9zZXJpYWxdKQorICAgICAgICAgICAg
Y21kLmV4dGVuZChbIi0tb3V0cHV0LWRpcmVjdG9yeSIsIHNlbGYub3V0cHV0X2RpcmVjdG9yeV0p
CisgICAgICAgICAgICByYXdfb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKQor
ICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmF3X291dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAg
ICAgICAgICAgbG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KCJUUkFDRSIsIGxpbmUsICJsb2djYXQiKQor
CisgICAgZGVmIHNldHVwX2FkYl9yZXZlcnNlKHNlbGYpOgorICAgICAgICBzZWxmLl9hZGJfcnVu
KFsnd2FpdC1mb3ItZGV2aWNlJ10pCisgICAgICAgIHNlbGYuX2FkYl9ydW4oWydmb3J3YXJkJywg
Jy0tcmVtb3ZlLWFsbCddKQorICAgICAgICBzZWxmLl9hZGJfcnVuKFsncmV2ZXJzZScsICctLXJl
bW92ZS1hbGwnXSkKKyAgICAgICAgIyAiYWRiIHJldmVyc2UiIGZvcndhcmRzIG5ldHdvcmsgY29u
bmVjdGlvbiBmcm9tIGRldmljZSB0byBob3N0LgorICAgICAgICBmb3IgcG9ydCBpbiBzZWxmLndw
dHNlcnZlcl9wb3J0czoKKyAgICAgICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJ3Rj
cDolZCcgJSBwb3J0LCAndGNwOiVkJyAlIHBvcnRdKQorCitjbGFzcyBDaHJvbWVBbmRyb2lkQnJv
d3NlcihDaHJvbWVBbmRyb2lkQnJvd3NlckJhc2UpOgorICAgICIiIkNocm9tZSBpcyBiYWNrZWQg
YnkgY2hyb21lZHJpdmVyLCB3aGljaCBpcyBzdXBwbGllZCB0aHJvdWdoCisgICAgYGB3cHRydW5u
ZXIud2ViZHJpdmVyLkNocm9tZURyaXZlclNlcnZlcmBgLgorICAgICIiIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcGFja2FnZV9uYW1lLAorICAgICAgICAgICAgICAgICB3ZWJk
cml2ZXJfYmluYXJ5PSJjaHJvbWVkcml2ZXIiLAorICAgICAgICAgICAgICAgICByZW1vdGVfcXVl
dWUgPSBOb25lLAorICAgICAgICAgICAgICAgICBkZXZpY2Vfc2VyaWFsPU5vbmUsCisgICAgICAg
ICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUsCisgICAgICAgICAgICAgICAgIHN0YWNrcGFy
c2VyX3NjcmlwdD1Ob25lLAorICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyZWN0b3J5PU5vbmUp
OgorICAgICAgICBzdXBlcihDaHJvbWVBbmRyb2lkQnJvd3Nlciwgc2VsZikuX19pbml0X18obG9n
Z2VyLAorICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnksIHJlbW90ZV9xdWV1ZSwgZGV2
aWNlX3NlcmlhbCwKKyAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncywgc3RhY2twYXJzZXJf
c2NyaXB0LCBvdXRwdXRfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9IHBh
Y2thZ2VfbmFtZQorICAgICAgICBzZWxmLndwdHNlcnZlcl9wb3J0cyA9IF93cHRzZXJ2ZV9wb3J0
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2lvcy5weQppbmRleCA2ZGIwMTg4ZTU1ZWIuLmYzNDli
MTk0MTljZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkKQEAgLTIyLDEyICsyMiwx
MiBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAi
d2ViZHJpdmVyX2JpbmFyeSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVu
X2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2Vy
LCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVy
biB7IndlYmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKICAgICAg
ICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9CiAK
IAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21h
bmFnZXIsIHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90
eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAg
ICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgZXhlY3V0b3Jfa3dhcmdzID0gYmFzZV9leGVj
dXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5f
aW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoq
a3dhcmdzKQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBDaHJvbWVpT1NCcm93c2VyKEJyb3dzZXIp
OgogCiAgICAgaW5pdF90aW1lb3V0ID0gMTIwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCB3ZWJkcml2ZXJfYmluYXJ5LCB3ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJkcml2ZXJfYmluYXJ5LCB3ZWJkcml2ZXJfYXJncz1Ob25l
LCAqKmt3YXJncyk6CiAgICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgcmVwcmVzZW50YXRpb24gb2Yg
Q2hyb21lLiIiIgogICAgICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAg
ICAgc2VsZi5zZXJ2ZXIgPSBDV1RDaHJvbWVEcml2ZXJTZXJ2ZXIoc2VsZi5sb2dnZXIsCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX3Nwa2lfY2VydHMucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX3Nwa2lfY2VydHMucHkKaW5kZXggYzZlNTgzNTgxODgy
Li41ZWU1MTc5NDJiZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVf
c3BraV9jZXJ0cy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX3Nwa2lfY2Vy
dHMucHkKQEAgLTIsNyArMiw3IEBACiAjIERPIE5PVCBFRElUIE1BTlVBTExZLgogCiAjIHRvb2xz
L2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQotV1BUX0ZJTkdFUlBSSU5UID0gJ0hhR2pjbWZX
amNVUkRFbmtVRVdaMjhZQWtZbzV0TTEyaHhBTVEyWjM3NTA9JworV1BUX0ZJTkdFUlBSSU5UID0g
J09YYjRPOHBjREk4Tnd4M0t6cU51VGJKMVpuZjUyVmpFVldpWVlDakhjSU09JwogCiAjIHNpZ25l
ZC1leGNoYW5nZS9yZXNvdXJjZXMvMTI3LjAuMC4xLnN4Zy5wZW0KIFNYR19XUFRfRklOR0VSUFJJ
TlQgPSAnMFJ0NG1UNlNKWG9qRU1IVG5LbmxKL2hCS01CY0k0a3RlQmxoUjFlVFRkaz0nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9lZGdlLnB5CmluZGV4IGJkYjM3YjNmODRjMi4uZGI0Nzk1Y2U1ZDRhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZWRnZS5weQpAQCAtMzQsNyArMzQsNyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAg
ICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJpdmVyX2JpbmFyeSIpCiAKIAotZGVmIGJyb3dz
ZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6Citk
ZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZp
ZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7IndlYmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3NbIndl
YmRyaXZlcl9iaW5hcnkiXSwKICAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5n
ZXQoIndlYmRyaXZlcl9hcmdzIiksCiAgICAgICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjog
Z2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsCkBAIC00Miw3ICs0Miw3IEBAIGRlZiBi
cm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3Mp
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiprd2FyZ3MpfQogCiAKLWRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJf
Y29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJn
cyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2lu
Zm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgIGV4ZWN1dG9yX2t3
YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBy
dW5faW5mb19kYXRhLCAqKmt3YXJncykKQEAgLTY4LDcgKzY4LDggQEAgY2xhc3MgRWRnZUJyb3dz
ZXIoQnJvd3Nlcik6CiAgICAgdXNlZF9wb3J0cyA9IHNldCgpCiAgICAgaW5pdF90aW1lb3V0ID0g
NjAKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHdlYmRyaXZlcl9iaW5hcnksIHRp
bWVvdXRfbXVsdGlwbGllcj1Ob25lLCB3ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJkcml2ZXJfYmluYXJ5LAorICAgICAgICAgICAgdGltZW91
dF9tdWx0aXBsaWVyPU5vbmUsIHdlYmRyaXZlcl9hcmdzPU5vbmUsICoqa3dhcmdzKToKICAgICAg
ICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCiAgICAgICAgIHNlbGYuc2VydmVyID0g
RWRnZURyaXZlclNlcnZlcihzZWxmLmxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJpbmFyeT13ZWJkcml2ZXJfYmluYXJ5LApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJvbWl1bS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9l
ZGdlY2hyb21pdW0ucHkKaW5kZXggMGJjYjE4Y2RjMGNjLi5jMjI3NWJkMTY4NzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2VkZ2VjaHJvbWl1bS5weQpAQCAtMSwxMTYgKzEsMTE2IEBACi1mcm9tIC5i
YXNlIGltcG9ydCBCcm93c2VyLCBFeGVjdXRvckJyb3dzZXIsIHJlcXVpcmVfYXJnDQotZnJvbSAu
YmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQ0KLWZyb20g
Li53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXINCi1mcm9t
IC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2Fy
Z3MNCi1mcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVy
VGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQ0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6
IEY0MDENCi1mcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yZWRnZWNocm9taXVtIGltcG9ydCBFZGdl
Q2hyb21pdW1Ecml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxDQotDQotDQotX193cHRy
dW5uZXJfXyA9IHsicHJvZHVjdCI6ICJlZGdlY2hyb21pdW0iLA0KLSAgICAgICAgICAgICAgICAg
ImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIsDQotICAgICAgICAgICAgICAgICAiYnJvd3NlciI6
ICJFZGdlQ2hyb21pdW1Ccm93c2VyIiwNCi0gICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsi
dGVzdGhhcm5lc3MiOiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIsDQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9y
IiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIkVkZ2VDaHJvbWl1
bURyaXZlcldkc3BlY0V4ZWN1dG9yIn0sDQotICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2Fy
Z3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLA0KLSAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJn
cyI6ICJleGVjdXRvcl9rd2FyZ3MiLA0KLSAgICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAi
ZW52X2V4dHJhcyIsDQotICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlv
bnMiLA0KLSAgICAgICAgICAgICAgICAgInRpbWVvdXRfbXVsdGlwbGllciI6ICJnZXRfdGltZW91
dF9tdWx0aXBsaWVyIix9DQotDQotDQotZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOg0KLSAgICBy
ZXF1aXJlX2FyZyhrd2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5IikNCi0NCi0NCi1kZWYgYnJvd3Nl
cl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToNCi0g
ICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwNCi0gICAgICAgICAgICAid2Vi
ZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdLA0KLSAgICAgICAgICAg
ICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9DQotDQotDQot
ZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFn
ZXIsIHJ1bl9pbmZvX2RhdGEsDQotICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6DQotICAg
IGV4ZWN1dG9yX2t3YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVy
X2NvbmZpZywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fj
aGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpDQotICAgIGV4ZWN1dG9yX2t3YXJnc1siY2xvc2VfYWZ0
ZXJfZG9uZSJdID0gVHJ1ZQ0KLSAgICBleGVjdXRvcl9rd2FyZ3NbInN1cHBvcnRzX2VhZ2VyX3Bh
Z2Vsb2FkIl0gPSBGYWxzZQ0KLQ0KLSAgICBjYXBhYmlsaXRpZXMgPSB7DQotICAgICAgICAibXM6
ZWRnZU9wdGlvbnMiOiB7DQotICAgICAgICAgICAgInByZWZzIjogew0KLSAgICAgICAgICAgICAg
ICAicHJvZmlsZSI6IHsNCi0gICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X2NvbnRlbnRfc2V0
dGluZ192YWx1ZXMiOiB7DQotICAgICAgICAgICAgICAgICAgICAgICAgInBvcHVwcyI6IDENCi0g
ICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0s
DQotICAgICAgICAgICAgInVzZUF1dG9tYXRpb25FeHRlbnNpb24iOiBGYWxzZSwNCi0gICAgICAg
ICAgICAiZXhjbHVkZVN3aXRjaGVzIjogWyJlbmFibGUtYXV0b21hdGlvbiJdLA0KLSAgICAgICAg
ICAgICJ3M2MiOiBUcnVlDQotICAgICAgICB9DQotICAgIH0NCi0NCi0gICAgaWYgdGVzdF90eXBl
ID09ICJ0ZXN0aGFybmVzcyI6DQotICAgICAgICBjYXBhYmlsaXRpZXNbInBhZ2VMb2FkU3RyYXRl
Z3kiXSA9ICJub25lIg0KLQ0KLSAgICBmb3IgKGt3YXJnLCBjYXBhYmlsaXR5KSBpbiBbKCJiaW5h
cnkiLCAiYmluYXJ5IiksICgiYmluYXJ5X2FyZ3MiLCAiYXJncyIpXToNCi0gICAgICAgIGlmIGt3
YXJnc1trd2FyZ10gaXMgbm90IE5vbmU6DQotICAgICAgICAgICAgY2FwYWJpbGl0aWVzWyJtczpl
ZGdlT3B0aW9ucyJdW2NhcGFiaWxpdHldID0ga3dhcmdzW2t3YXJnXQ0KLQ0KLSAgICBpZiBrd2Fy
Z3NbImhlYWRsZXNzIl06DQotICAgICAgICBpZiAiYXJncyIgbm90IGluIGNhcGFiaWxpdGllc1si
bXM6ZWRnZU9wdGlvbnMiXToNCi0gICAgICAgICAgICBjYXBhYmlsaXRpZXNbIm1zOmVkZ2VPcHRp
b25zIl1bImFyZ3MiXSA9IFtdDQotICAgICAgICBpZiAiLS1oZWFkbGVzcyIgbm90IGluIGNhcGFi
aWxpdGllc1sibXM6ZWRnZU9wdGlvbnMiXVsiYXJncyJdOg0KLSAgICAgICAgICAgIGNhcGFiaWxp
dGllc1sibXM6ZWRnZU9wdGlvbnMiXVsiYXJncyJdLmFwcGVuZCgiLS1oZWFkbGVzcyIpDQotDQot
ICAgIGV4ZWN1dG9yX2t3YXJnc1siY2FwYWJpbGl0aWVzIl0gPSBjYXBhYmlsaXRpZXMNCi0NCi0g
ICAgcmV0dXJuIGV4ZWN1dG9yX2t3YXJncw0KLQ0KLQ0KLWRlZiBlbnZfZXh0cmFzKCoqa3dhcmdz
KToNCi0gICAgcmV0dXJuIFtdDQotDQotDQotZGVmIGVudl9vcHRpb25zKCk6DQotICAgIHJldHVy
biB7fQ0KLQ0KLQ0KLWNsYXNzIEVkZ2VDaHJvbWl1bUJyb3dzZXIoQnJvd3Nlcik6DQotICAgICIi
Ik1pY3Jvc29mdEVkZ2UgaXMgYmFja2VkIGJ5IE1TRWRnZURyaXZlciwgd2hpY2ggaXMgc3VwcGxp
ZWQgdGhyb3VnaA0KLSAgICBgYHdwdHJ1bm5lci53ZWJkcml2ZXIuRWRnZUNocm9taXVtRHJpdmVy
U2VydmVyYGAuDQotICAgICIiIg0KLQ0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBi
aW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9Im1zZWRnZWRyaXZlciIsDQotICAgICAgICAgICAgICAg
ICB3ZWJkcml2ZXJfYXJncz1Ob25lKToNCi0gICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgcmVwcmVz
ZW50YXRpb24gb2YgTWljcm9zb2Z0RWRnZS4gIFRoZSBgYmluYXJ5YCBhcmd1bWVudCBnaXZlcw0K
LSAgICAgICAgdGhlIGJyb3dzZXIgYmluYXJ5IHRvIHVzZSBmb3IgdGVzdGluZy4iIiINCi0gICAg
ICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQ0KLSAgICAgICAgc2VsZi5iaW5hcnkg
PSBiaW5hcnkNCi0gICAgICAgIHNlbGYuc2VydmVyID0gRWRnZUNocm9taXVtRHJpdmVyU2VydmVy
KHNlbGYubG9nZ2VyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmluYXJ5PXdlYmRyaXZlcl9iaW5hcnksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzPXdlYmRyaXZlcl9hcmdzKQ0KLQ0KLSAgICBkZWYgc3RhcnQoc2VsZiwg
Kiprd2FyZ3MpOg0KLSAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoYmxvY2s9RmFsc2UpDQotDQot
ICAgIGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlKToNCi0gICAgICAgIHNlbGYuc2VydmVyLnN0
b3AoZm9yY2U9Zm9yY2UpDQotDQotICAgIGRlZiBwaWQoc2VsZik6DQotICAgICAgICByZXR1cm4g
c2VsZi5zZXJ2ZXIucGlkDQotDQotICAgIGRlZiBpc19hbGl2ZShzZWxmKToNCi0gICAgICAgICMg
VE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsDQotICAg
ICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBz
ZXNzaW9uDQotICAgICAgICAjIGlzIGFjdGl2ZS4NCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZl
ci5pc19hbGl2ZSgpDQotDQotICAgIGRlZiBjbGVhbnVwKHNlbGYpOg0KLSAgICAgICAgc2VsZi5z
dG9wKCkNCi0NCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6DQotICAgICAgICByZXR1
cm4gRXhlY3V0b3JCcm93c2VyLCB7IndlYmRyaXZlcl91cmwiOiBzZWxmLnNlcnZlci51cmx9DQor
ZnJvbSAuYmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZwor
ZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQor
ZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IEVkZ2VDaHJvbWl1bURyaXZlclNlcnZlcgor
ZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jf
a3dhcmdzCitmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJp
dmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9x
YTogRjQwMQorZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcmVkZ2VjaHJvbWl1bSBpbXBvcnQgRWRn
ZUNocm9taXVtRHJpdmVyV2RzcGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQorCisKK19fd3B0cnVu
bmVyX18gPSB7InByb2R1Y3QiOiAiZWRnZWNocm9taXVtIiwKKyAgICAgICAgICAgICAgICAgImNo
ZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIsCisgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkVk
Z2VDaHJvbWl1bUJyb3dzZXIiLAorICAgICAgICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3Ro
YXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAiRWRnZUNocm9taXVtRHJpdmVy
V2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJy
b3dzZXJfa3dhcmdzIiwKKyAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVj
dXRvcl9rd2FyZ3MiLAorICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFz
IiwKKyAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKKyAgICAg
ICAgICAgICAgICAgInRpbWVvdXRfbXVsdGlwbGllciI6ICJnZXRfdGltZW91dF9tdWx0aXBsaWVy
Iix9CisKKworZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOgorICAgIHJlcXVpcmVfYXJnKGt3YXJn
cywgIndlYmRyaXZlcl9iaW5hcnkiKQorCisKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRl
c3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CisgICAgcmV0dXJuIHsi
YmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKKyAgICAgICAgICAgICJ3ZWJkcml2ZXJfYmluYXJ5
Ijoga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0sCisgICAgICAgICAgICAid2ViZHJpdmVyX2Fy
Z3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpfQorCisKK2RlZiBleGVjdXRvcl9rd2Fy
Z3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9p
bmZvX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKKyAgICBleGVjdXRvcl9r
d2FyZ3MgPSBiYXNlX2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwg
cnVuX2luZm9fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqKmt3YXJncykKKyAgICBleGVjdXRvcl9rd2FyZ3NbImNsb3NlX2FmdGVyX2RvbmUiXSA9IFRy
dWUKKyAgICBleGVjdXRvcl9rd2FyZ3NbInN1cHBvcnRzX2VhZ2VyX3BhZ2Vsb2FkIl0gPSBGYWxz
ZQorCisgICAgY2FwYWJpbGl0aWVzID0geworICAgICAgICAibXM6ZWRnZU9wdGlvbnMiOiB7Cisg
ICAgICAgICAgICAicHJlZnMiOiB7CisgICAgICAgICAgICAgICAgInByb2ZpbGUiOiB7CisgICAg
ICAgICAgICAgICAgICAgICJkZWZhdWx0X2NvbnRlbnRfc2V0dGluZ192YWx1ZXMiOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAicG9wdXBzIjogMQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1c2VBdXRvbWF0
aW9uRXh0ZW5zaW9uIjogRmFsc2UsCisgICAgICAgICAgICAiZXhjbHVkZVN3aXRjaGVzIjogWyJl
bmFibGUtYXV0b21hdGlvbiJdLAorICAgICAgICAgICAgInczYyI6IFRydWUKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIHRlc3RfdHlwZSA9PSAidGVzdGhhcm5lc3MiOgorICAgICAgICBjYXBh
YmlsaXRpZXNbInBhZ2VMb2FkU3RyYXRlZ3kiXSA9ICJub25lIgorCisgICAgZm9yIChrd2FyZywg
Y2FwYWJpbGl0eSkgaW4gWygiYmluYXJ5IiwgImJpbmFyeSIpLCAoImJpbmFyeV9hcmdzIiwgImFy
Z3MiKV06CisgICAgICAgIGlmIGt3YXJnc1trd2FyZ10gaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNbIm1zOmVkZ2VPcHRpb25zIl1bY2FwYWJpbGl0eV0gPSBrd2FyZ3Nba3dh
cmddCisKKyAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CisgICAgICAgIGlmICJhcmdzIiBub3Qg
aW4gY2FwYWJpbGl0aWVzWyJtczplZGdlT3B0aW9ucyJdOgorICAgICAgICAgICAgY2FwYWJpbGl0
aWVzWyJtczplZGdlT3B0aW9ucyJdWyJhcmdzIl0gPSBbXQorICAgICAgICBpZiAiLS1oZWFkbGVz
cyIgbm90IGluIGNhcGFiaWxpdGllc1sibXM6ZWRnZU9wdGlvbnMiXVsiYXJncyJdOgorICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzWyJtczplZGdlT3B0aW9ucyJdWyJhcmdzIl0uYXBwZW5kKCItLWhl
YWRsZXNzIikKKworICAgIGV4ZWN1dG9yX2t3YXJnc1siY2FwYWJpbGl0aWVzIl0gPSBjYXBhYmls
aXRpZXMKKworICAgIHJldHVybiBleGVjdXRvcl9rd2FyZ3MKKworCitkZWYgZW52X2V4dHJhcygq
Kmt3YXJncyk6CisgICAgcmV0dXJuIFtdCisKKworZGVmIGVudl9vcHRpb25zKCk6CisgICAgcmV0
dXJuIHt9CisKKworY2xhc3MgRWRnZUNocm9taXVtQnJvd3NlcihCcm93c2VyKToKKyAgICAiIiJN
aWNyb3NvZnRFZGdlIGlzIGJhY2tlZCBieSBNU0VkZ2VEcml2ZXIsIHdoaWNoIGlzIHN1cHBsaWVk
IHRocm91Z2gKKyAgICBgYHdwdHJ1bm5lci53ZWJkcml2ZXIuRWRnZUNocm9taXVtRHJpdmVyU2Vy
dmVyYGAuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnks
IHdlYmRyaXZlcl9iaW5hcnk9Im1zZWRnZWRyaXZlciIsCisgICAgICAgICAgICAgICAgIHdlYmRy
aXZlcl9hcmdzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyByZXBy
ZXNlbnRhdGlvbiBvZiBNaWNyb3NvZnRFZGdlLiAgVGhlIGBiaW5hcnlgIGFyZ3VtZW50IGdpdmVz
CisgICAgICAgIHRoZSBicm93c2VyIGJpbmFyeSB0byB1c2UgZm9yIHRlc3RpbmcuIiIiCisgICAg
ICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQorICAgICAgICBzZWxmLmJpbmFyeSA9
IGJpbmFyeQorICAgICAgICBzZWxmLnNlcnZlciA9IEVkZ2VDaHJvbWl1bURyaXZlclNlcnZlcihz
ZWxmLmxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
YXJ5PXdlYmRyaXZlcl9iaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3M9d2ViZHJpdmVyX2FyZ3MpCisKKyAgICBkZWYgc3RhcnQoc2VsZiwgKiprd2Fy
Z3MpOgorICAgICAgICBzZWxmLnNlcnZlci5zdGFydChibG9jaz1GYWxzZSkKKworICAgIGRlZiBz
dG9wKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcChmb3JjZT1m
b3JjZSkKKworICAgIGRlZiBwaWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5w
aWQKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMg
b25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKKyAgICAgICAgIyBhbmQgZG9lc24n
dCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgorICAgICAgICAj
IGlzIGFjdGl2ZS4KKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKKworICAg
IGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICBzZWxmLnN0b3AoKQorCisgICAgZGVmIGV4ZWN1
dG9yX2Jyb3dzZXIoc2VsZik6CisgICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsid2Vi
ZHJpdmVyX3VybCI6IHNlbGYuc2VydmVyLnVybH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9lcGlwaGFueS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weQpp
bmRleCBmNmM0YzYwMmEzOGMuLmYzNzgxNzBmMzNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL2VwaXBoYW55LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFu
eS5weQpAQCAtMjUsNyArMjUsNyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcGFz
cwogCiAKLWRlZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZp
ZywgKiprd2FyZ3MpOgorZGVmIGJyb3dzZXJfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBydW5f
aW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAjIFdvcmthcm91bmQgZm9yIGh0dHBz
Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwL2lzc3Vlcy8xNzIKICAgICB3ZWJkcml2
ZXJfcmVxdWlyZWRfYXJncyA9IFsiLS1ob3N0PTEyNy4wLjAuMSJdCiAgICAgd2ViZHJpdmVyX2Fy
Z3MgPSBtYXliZV9hZGRfYXJncyh3ZWJkcml2ZXJfcmVxdWlyZWRfYXJncywga3dhcmdzLmdldCgi
d2ViZHJpdmVyX2FyZ3MiKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgZGVmIGNhcGFiaWxpdGllcyhzZXJ2
ZXJfY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAiY2VydGlmaWNhdGVzIjogY2VydGlm
aWNhdGVfZG9tYWluX2xpc3Qoc2VydmVyX2NvbmZpZy5kb21haW5zX3NldCwga3dhcmdzWyJob3N0
X2NlcnRfcGF0aCJdKX19CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZl
cl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhlY3V0b3Jfa3dh
cmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5f
aW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgZXhlY3V0b3Jf
a3dhcmdzID0gYmFzZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX21hbmFnZXIs
IHJ1bl9pbmZvX2RhdGEsICoqa3dhcmdzKQpAQCAtNzIsNiArNzIsNiBAQCBkZWYgcnVuX2luZm9f
ZXh0cmFzKCoqa3dhcmdzKToKIAogY2xhc3MgRXBpcGhhbnlCcm93c2VyKFdlYktpdEJyb3dzZXIp
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJf
YmluYXJ5PU5vbmUsCi0gICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgorICAg
ICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIFdl
YktpdEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5h
cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3MpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9maXJlZm94LnB5CmluZGV4IDc1Y2ViYjlmN2YxMC4uM2E0MjI5ODQxZjg2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZmlyZWZveC5weQpAQCAtNTMsMTEgKzUzLDExIEBAIGRlZiBnZXRfdGltZW91
dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpOgogICAgIGlm
IGt3YXJnc1sidGltZW91dF9tdWx0aXBsaWVyIl0gaXMgbm90IE5vbmU6CiAgICAgICAgIHJldHVy
biBrd2FyZ3NbInRpbWVvdXRfbXVsdGlwbGllciJdCiAgICAgaWYgdGVzdF90eXBlID09ICJyZWZ0
ZXN0IjoKLSAgICAgICAgaWYgcnVuX2luZm9fZGF0YVsiZGVidWciXSBvciBydW5faW5mb19kYXRh
LmdldCgiYXNhbiIpOgorICAgICAgICBpZiBydW5faW5mb19kYXRhWyJkZWJ1ZyJdIG9yIHJ1bl9p
bmZvX2RhdGEuZ2V0KCJhc2FuIikgb3IgcnVuX2luZm9fZGF0YS5nZXQoInRzYW4iKToKICAgICAg
ICAgICAgIHJldHVybiA0CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gMgotICAg
IGVsaWYgcnVuX2luZm9fZGF0YVsiZGVidWciXSBvciBydW5faW5mb19kYXRhLmdldCgiYXNhbiIp
OgorICAgIGVsaWYgcnVuX2luZm9fZGF0YVsiZGVidWciXSBvciBydW5faW5mb19kYXRhLmdldCgi
YXNhbiIpIG9yIHJ1bl9pbmZvX2RhdGEuZ2V0KCJ0c2FuIik6CiAgICAgICAgIGlmIHJ1bl9pbmZv
X2RhdGEuZ2V0KCJjY292Iik6CiAgICAgICAgICAgICByZXR1cm4gNAogICAgICAgICBlbHNlOgpA
QCAtNzYsNyArNzYsNyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9h
cmcoa3dhcmdzLCAiYmluYXJ5IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBy
dW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dn
ZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0
dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgICAgICJwcmVmc19yb290
Ijoga3dhcmdzWyJwcmVmc19yb290Il0sCiAgICAgICAgICAgICAiZXh0cmFfcHJlZnMiOiBrd2Fy
Z3NbImV4dHJhX3ByZWZzIl0sCkBAIC0xMDEsMTEgKzEwMSwxMSBAQCBkZWYgYnJvd3Nlcl9rd2Fy
Z3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAg
ICAgICJjb25maWciOiBjb25maWcsCiAgICAgICAgICAgICAiYnJvd3Nlcl9jaGFubmVsIjoga3dh
cmdzWyJicm93c2VyX2NoYW5uZWwiXSwKICAgICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJnc1si
aGVhZGxlc3MiXSwKLSAgICAgICAgICAgICJwcmVsb2FkX2Jyb3dzZXIiOiBrd2FyZ3NbInByZWxv
YWRfYnJvd3NlciJdLAorICAgICAgICAgICAgInByZWxvYWRfYnJvd3NlciI6IGt3YXJnc1sicHJl
bG9hZF9icm93c2VyIl0gYW5kIG5vdCBrd2FyZ3NbInBhdXNlX2FmdGVyX3Rlc3QiXSBhbmQgbm90
IGt3YXJnc1sibnVtX3Rlc3RfZ3JvdXBzIl0gPT0gMSwKICAgICAgICAgICAgICJzcGVjaWFscG93
ZXJzX3BhdGgiOiBrd2FyZ3NbInNwZWNpYWxwb3dlcnNfcGF0aCJdfQogCiAKLWRlZiBleGVjdXRv
cl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5m
b19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2Nv
bmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
Kiprd2FyZ3MpOgogICAgIGV4ZWN1dG9yX2t3YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLApAQCAtMTM4LDYgKzEzOCwx
OSBAQCBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVf
bWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgZm9yIHByZWYsIHZhbHVlIGluIGt3YXJn
c1siZXh0cmFfcHJlZnMiXToKICAgICAgICAgICAgIG9wdGlvbnNbInByZWZzIl0udXBkYXRlKHtw
cmVmOiBQcmVmZXJlbmNlcy5jYXN0KHZhbHVlKX0pCiAgICAgICAgIGNhcGFiaWxpdGllc1sibW96
OmZpcmVmb3hPcHRpb25zIl0gPSBvcHRpb25zCisKKyAgICAgICAgIyBUaGlzIGdldHMgcmV1c2Vk
IGZvciBmaXJlZm94X2FuZHJvaWQsIGJ1dCB0aGUgZW52aXJvbm1lbnQgc2V0dXAKKyAgICAgICAg
IyBpc24ndCByZXF1aXJlZCBpbiB0aGF0IGNhc2UKKyAgICAgICAgaWYga3dhcmdzWyJiaW5hcnki
XToKKyAgICAgICAgICAgIGVudmlyb24gPSBnZXRfZW52aXJvbihsb2dnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJiaW5hcnkiXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImRlYnVnX2luZm8iXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInN0eWxvX3RocmVhZHMiXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJlbmFibGVfd2VicmVuZGVyIl0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJjaGFvc19tb2RlX2ZsYWdzIl0pCisK
KyAgICAgICAgICAgIGV4ZWN1dG9yX2t3YXJnc1siZW52aXJvbiJdID0gZW52aXJvbgogICAgIGlm
IGt3YXJnc1siY2VydHV0aWxfYmluYXJ5Il0gaXMgTm9uZToKICAgICAgICAgY2FwYWJpbGl0aWVz
WyJhY2NlcHRJbnNlY3VyZUNlcnRzIl0gPSBUcnVlCiAgICAgaWYgY2FwYWJpbGl0aWVzOgpAQCAt
MTQ1LDYgKzE1OCw3IEBAIGRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29u
ZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgIGV4ZWN1dG9yX2t3YXJnc1si
ZGVidWciXSA9IHJ1bl9pbmZvX2RhdGFbImRlYnVnIl0KICAgICBleGVjdXRvcl9rd2FyZ3NbImNj
b3YiXSA9IHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292IiwgRmFsc2UpCiAgICAgZXhlY3V0b3Jfa3dh
cmdzWyJicm93c2VyX3ZlcnNpb24iXSA9IHJ1bl9pbmZvX2RhdGEuZ2V0KCJicm93c2VyX3ZlcnNp
b24iKQorICAgIGV4ZWN1dG9yX2t3YXJnc1siZGVidWdfdGVzdCJdID0ga3dhcmdzWyJkZWJ1Z190
ZXN0Il0KICAgICByZXR1cm4gZXhlY3V0b3Jfa3dhcmdzCiAKIApAQCAtMTc5LDcgKzE5MywxMSBA
QCBkZWYgcnVuX2luZm9fZXh0cmFzKCoqa3dhcmdzKToKICAgICAgICAgICAidmVyaWZ5Ijoga3dh
cmdzWyJ2ZXJpZnkiXSwKICAgICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3MuZ2V0KCJoZWFkbGVz
cyIsIEZhbHNlKSBvciAiTU9aX0hFQURMRVNTIiBpbiBvcy5lbnZpcm9uLAogICAgICAgICAgICJz
dy1lMTBzIjogVHJ1ZSwKLSAgICAgICAgICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVuYWJsZV9m
aXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KKyAgICAgICAg
ICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVuYWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJl
ZigiZmlzc2lvbi5hdXRvc3RhcnQiKSwKKyAgICAgICAgICAic2Vzc2lvbkhpc3RvcnlJblBhcmVu
dCI6IChrd2FyZ3MuZ2V0KCJlbmFibGVfZmlzc2lvbiIpIG9yCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKSBvcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9ib29sX3ByZWYoImZpc3Np
b24uc2Vzc2lvbkhpc3RvcnlJblBhcmVudCIpKSwKKyAgICAgICAgICAic3dnbCI6IGdldF9ib29s
X3ByZWYoImdmeC53ZWJyZW5kZXIuc29mdHdhcmUiKX0KIAogICAgICMgVGhlIHZhbHVlIG9mIGBz
dy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0aGVyIHRoZSAicGFyZW50X2ludGVyY2VwdCIKICAgICAj
IGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IGJ1aWxkLiBUaGlzIHZh
bHVlLCBob3dldmVyLApAQCAtMjA5LDEwICsyMjcsMzAgQEAgZGVmIHJ1bl9pbmZvX2Jyb3dzZXJf
dmVyc2lvbigqKmt3YXJncyk6CiAKIAogZGVmIHVwZGF0ZV9wcm9wZXJ0aWVzKCk6Ci0gICAgcmV0
dXJuIChbIm9zIiwgImRlYnVnIiwgIndlYnJlbmRlciIsICJmaXNzaW9uIiwgImUxMHMiLCAic3ct
ZTEwcyIsICJwcm9jZXNzb3IiXSwKKyAgICByZXR1cm4gKFsib3MiLCAiZGVidWciLCAid2VicmVu
ZGVyIiwgImZpc3Npb24iLCAiZTEwcyIsICJzdy1lMTBzIiwgInByb2Nlc3NvciIsICJzd2dsIl0s
CiAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJpdHMiXX0p
CiAKIAorZGVmIGdldF9lbnZpcm9uKGxvZ2dlciwgYmluYXJ5LCBkZWJ1Z19pbmZvLCBzdHlsb190
aHJlYWRzLCBoZWFkbGVzcywgZW5hYmxlX3dlYnJlbmRlciwKKyAgICAgICAgICAgICAgICBjaGFv
c19tb2RlX2ZsYWdzPU5vbmUpOgorICAgIGVudiA9IHRlc3RfZW52aXJvbm1lbnQoeHJlUGF0aD1v
cy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKGJpbmFyeSkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVidWdnZXI9ZGVidWdfaW5mbyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZUxTYW49VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZz1sb2dnZXIpCisKKyAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzdHlsb190aHJl
YWRzKQorICAgIGlmIGNoYW9zX21vZGVfZmxhZ3MgaXMgbm90IE5vbmU6CisgICAgICAgIGVudlsi
TU9aX0NIQU9TTU9ERSJdID0gc3RyKGNoYW9zX21vZGVfZmxhZ3MpCisgICAgaWYgaGVhZGxlc3M6
CisgICAgICAgIGVudlsiTU9aX0hFQURMRVNTIl0gPSAiMSIKKyAgICBpZiBlbmFibGVfd2VicmVu
ZGVyOgorICAgICAgICBlbnZbIk1PWl9XRUJSRU5ERVIiXSA9ICIxIgorICAgICAgICBlbnZbIk1P
Wl9BQ0NFTEVSQVRFRCJdID0gIjEiCisgICAgZWxzZToKKyAgICAgICAgZW52WyJNT1pfV0VCUkVO
REVSIl0gPSAiMCIKKyAgICByZXR1cm4gZW52CisKKwogY2xhc3MgRmlyZWZveEluc3RhbmNlTWFu
YWdlcihvYmplY3QpOgogICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCiAKQEAgLTI2OCwyMCAr
MzA2LDggQEAgY2xhc3MgRmlyZWZveEluc3RhbmNlTWFuYWdlcihvYmplY3QpOgogICAgICAgICBt
YXJpb25ldHRlX3BvcnQgPSBnZXRfZnJlZV9wb3J0KCkKICAgICAgICAgcHJvZmlsZS5zZXRfcHJl
ZmVyZW5jZXMoeyJtYXJpb25ldHRlLnBvcnQiOiBtYXJpb25ldHRlX3BvcnR9KQogCi0gICAgICAg
IGVudiA9IHRlc3RfZW52aXJvbm1lbnQoeHJlUGF0aD1vcy5wYXRoLmRpcm5hbWUoc2VsZi5iaW5h
cnkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyPXNlbGYuZGVidWdf
aW5mbyBpcyBub3QgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VMU2Fu
PVRydWUsIGxvZz1zZWxmLmxvZ2dlcikKLQotICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9
IHN0cihzZWxmLnN0eWxvX3RocmVhZHMpCi0gICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFn
cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNl
bGYuY2hhb3NfbW9kZV9mbGFncykKLSAgICAgICAgaWYgc2VsZi5oZWFkbGVzczoKLSAgICAgICAg
ICAgIGVudlsiTU9aX0hFQURMRVNTIl0gPSAiMSIKLSAgICAgICAgaWYgc2VsZi5lbmFibGVfd2Vi
cmVuZGVyOgotICAgICAgICAgICAgZW52WyJNT1pfV0VCUkVOREVSIl0gPSAiMSIKLSAgICAgICAg
ICAgIGVudlsiTU9aX0FDQ0VMRVJBVEVEIl0gPSAiMSIKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCisgICAgICAgIGVudiA9IGdldF9lbnZpcm9u
KHNlbGYubG9nZ2VyLCBzZWxmLmJpbmFyeSwgc2VsZi5kZWJ1Z19pbmZvLCBzZWxmLnN0eWxvX3Ro
cmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGVhZGxlc3MsIHNlbGYuZW5h
YmxlX3dlYnJlbmRlciwgc2VsZi5jaGFvc19tb2RlX2ZsYWdzKQogCiAgICAgICAgIGFyZ3MgPSBz
ZWxmLmJpbmFyeV9hcmdzWzpdIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXQogICAgICAgICBh
cmdzICs9IFtjbWRfYXJnKCJtYXJpb25ldHRlIiksICJhYm91dDpibGFuayJdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL2ZpcmVmb3hfYW5kcm9pZC5weQppbmRleCBiZWEwZDlmNGVlMzMuLjVlOWRlNTY0
OTYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5kcm9pZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CkBAIC0zOCw4
ICszOCw5IEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICBwYXNzCiAKIAotZGVmIGJy
b3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6
Ci0gICAgcmV0dXJuIHsicGFja2FnZV9uYW1lIjoga3dhcmdzWyJwYWNrYWdlX25hbWUiXSwKK2Rl
ZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmln
LCAqKmt3YXJncyk6CisgICAgcmV0dXJuIHsiYWRiX2JpbmFyeSI6IGt3YXJnc1siYWRiX2JpbmFy
eSJdLAorICAgICAgICAgICAgInBhY2thZ2VfbmFtZSI6IGt3YXJnc1sicGFja2FnZV9uYW1lIl0s
CiAgICAgICAgICAgICAiZGV2aWNlX3NlcmlhbCI6IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdLAog
ICAgICAgICAgICAgInByZWZzX3Jvb3QiOiBrd2FyZ3NbInByZWZzX3Jvb3QiXSwKICAgICAgICAg
ICAgICJleHRyYV9wcmVmcyI6IGt3YXJnc1siZXh0cmFfcHJlZnMiXSwKQEAgLTg3LDEwICs4OCwx
MCBAQCBkZWYgZW52X29wdGlvbnMoKToKIAogCiBjbGFzcyBQcm9maWxlQ3JlYXRvcihGaXJlZm94
UHJvZmlsZUNyZWF0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jv
b3QsIGNvbmZpZywgdGVzdF90eXBlLCBleHRyYV9wcmVmcywgZTEwcywKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBwcmVmc19yb290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJl
ZnMsCiAgICAgICAgICAgICAgICAgIGVuYWJsZV9maXNzaW9uLCBicm93c2VyX2NoYW5uZWwsIGNl
cnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CiAgICAgICAgIHN1cGVyKFByb2Zp
bGVDcmVhdG9yLCBzZWxmKS5fX2luaXRfXyhsb2dnZXIsIHByZWZzX3Jvb3QsIGNvbmZpZywgdGVz
dF90eXBlLCBleHRyYV9wcmVmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGUxMHMsIGVuYWJsZV9maXNzaW9uLCBicm93c2VyX2NoYW5uZWwsIE5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBlbmFibGVf
Zmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVsLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRo
KQogCiAgICAgZGVmIF9zZXRfcmVxdWlyZWRfcHJlZnMoc2VsZiwgcHJvZmlsZSk6CkBAIC0xMDAs
MTEgKzEwMSw5IEBAIGNsYXNzIFByb2ZpbGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3JlYXRvcik6
CiAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAogICAgICAgICAg
ICAgImRvbS5zZW5kX2FmdGVyX3BhaW50X3RvX2NvbnRlbnQiOiBUcnVlLAogICAgICAgICAgICAg
Im5ldHdvcmsucHJlbG9hZCI6IFRydWUsCisgICAgICAgICAgICAiYnJvd3Nlci50YWJzLnJlbW90
ZS5hdXRvc3RhcnQiOiBUcnVlLAogICAgICAgICB9KQogCi0gICAgICAgIGlmIHNlbGYuZTEwczoK
LSAgICAgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90
ZS5hdXRvc3RhcnQiOiBUcnVlfSkKLQogICAgICAgICBpZiBzZWxmLnRlc3RfdHlwZSA9PSAicmVm
dGVzdCI6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTZXR0aW5nIGFuZHJvaWQgcmVm
dGVzdCBwcmVmZXJlbmNlcyIpCiAgICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7
CkBAIC0xMzAsNyArMTI5LDggQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEJyb3dzZXIp
OgogICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2Us
IGVuYWJsZV93ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAogICAgICAgICAgICAg
ICAgICBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVj
az1GYWxzZSwgYXNhbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBj
aGFvc19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0
bHkiLAotICAgICAgICAgICAgICAgICBpbnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290PU5v
bmUsIHNwZWNpYWxwb3dlcnNfcGF0aD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAg
IGluc3RhbGxfZm9udHM9RmFsc2UsIHRlc3RzX3Jvb3Q9Tm9uZSwgc3BlY2lhbHBvd2Vyc19wYXRo
PU5vbmUsIGFkYl9iaW5hcnk9Tm9uZSwKKyAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogCiAg
ICAgICAgIHN1cGVyKEZpcmVmb3hBbmRyb2lkQnJvd3Nlciwgc2VsZikuX19pbml0X18obG9nZ2Vy
KQogICAgICAgICBzZWxmLnByZWZzX3Jvb3QgPSBwcmVmc19yb290CkBAIC0xNDIsNyArMTQyLDcg
QEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICBzZWxmLnN0
YWNrd2Fsa19iaW5hcnkgPSBzdGFja3dhbGtfYmluYXJ5CiAgICAgICAgIHNlbGYuY2VydHV0aWxf
YmluYXJ5ID0gY2VydHV0aWxfYmluYXJ5CiAgICAgICAgIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0
aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgKLSAgICAgICAgc2VsZi5lMTBzID0gZTEwcworICAgICAg
ICBzZWxmLmUxMHMgPSBUcnVlCiAgICAgICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJs
ZV93ZWJyZW5kZXIKICAgICAgICAgc2VsZi5zdGFja2ZpeF9kaXIgPSBzdGFja2ZpeF9kaXIKICAg
ICAgICAgc2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCkBAIC0xNTYsMTMgKzE1NiwxMyBA
QCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYuaW5z
dGFsbF9mb250cyA9IGluc3RhbGxfZm9udHMKICAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVz
dHNfcm9vdAogICAgICAgICBzZWxmLnNwZWNpYWxwb3dlcnNfcGF0aCA9IHNwZWNpYWxwb3dlcnNf
cGF0aAorICAgICAgICBzZWxmLmFkYl9iaW5hcnkgPSBhZGJfYmluYXJ5CiAKICAgICAgICAgc2Vs
Zi5wcm9maWxlX2NyZWF0b3IgPSBQcm9maWxlQ3JlYXRvcihsb2dnZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZnNfcm9vdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF90eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3ByZWZzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxMHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jaGFubmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnR1dGlsX2JpbmFyeSwKQEAg
LTIyNSw3ICsyMjUsOSBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNl
bGYuc3ltYm9sc19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlcmlhbD1zZWxmLmRldmljZV9zZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dkaXI9b3MuZ2V0Y3dk
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZGlyPW9z
LmdldGN3ZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
Yl9wYXRoPXNlbGYuYWRiX2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBsaWNpdF9jbGVhbnVwPVRydWUpCiAKICAgICAgICAgc2VsZi5sb2dnZXIu
ZGVidWcoIlN0YXJ0aW5nICVzIiAlIHNlbGYucGFja2FnZV9uYW1lKQogICAgICAgICAjIGNvbm5l
Y3QgdG8gYSBydW5uaW5nIGVtdWxhdG9yCkBAIC0yNTcsNyArMjU5LDcgQEAgY2xhc3MgRmlyZWZv
eEFuZHJvaWRCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci53YXJuaW5nKCJGYWlsZWQgdG8gcmVtb3ZlIGZvcndhcmRlZCBvciByZXZlcnNlZCBwb3J0czog
JXMiICUgZSkKICAgICAgICAgICAgICMgV2UgYXNzdW1lIHRoYXQgc3RvcHBpbmcgdGhlIHJ1bm5l
ciBwcm9tcHRzIHRoZQogICAgICAgICAgICAgIyBicm93c2VyIHRvIHNodXQgZG93bi4KLSAgICAg
ICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQorICAgICAgICAgICAgc2VsZi5ydW5uZXIuY2xlYW51
cCgpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJzdG9wcGVkIikKIAogICAgIGRlZiBwaWQo
c2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvaWUucHkKaW5kZXggNzhjMjJiOTA5YWNmLi41ZmNlMjlhNDc3MDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
YnJvd3NlcnMvaWUucHkKQEAgLTE4LDExICsxOCwxMSBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9k
dWN0IjogImllIiwKIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhr
d2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5IikKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlw
ZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3Mo
bG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAg
IHJldHVybiB7IndlYmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwK
ICAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdz
Iil9CiAKLWRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNo
ZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgIG9wdGlvbnMgPSB7fQogICAgIG9wdGlv
bnNbInJlcXVpcmVXaW5kb3dGb2N1cyJdID0gVHJ1ZQpAQCAtNDMsNyArNDMsNyBAQCBkZWYgZW52
X29wdGlvbnMoKToKIGNsYXNzIEludGVybmV0RXhwbG9yZXJCcm93c2VyKEJyb3dzZXIpOgogICAg
IHVzZWRfcG9ydHMgPSBzZXQoKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgd2Vi
ZHJpdmVyX2JpbmFyeSwgd2ViZHJpdmVyX2FyZ3M9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgd2ViZHJpdmVyX2JpbmFyeSwgd2ViZHJpdmVyX2FyZ3M9Tm9uZSwgKiprd2Fy
Z3MpOgogICAgICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAgICAgc2Vs
Zi5zZXJ2ZXIgPSBJbnRlcm5ldEV4cGxvcmVyRHJpdmVyU2VydmVyKHNlbGYubG9nZ2VyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PXdl
YmRyaXZlcl9iaW5hcnksCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkKaW5kZXggODA1ZmVkZWU2MzZjLi44
MGU1YTMxNGM4M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkKQEAgLTI0LDEzICsyNCwxMyBAQCBk
ZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJp
dmVyX2JpbmFyeSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9f
ZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0
X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7ImJp
bmFyeSI6IGt3YXJnc1siYmluYXJ5Il0sCiAgICAgICAgICAgICAid2ViZHJpdmVyX2JpbmFyeSI6
IGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdLAogICAgICAgICAgICAgIndlYmRyaXZlcl9hcmdz
Ijoga3dhcmdzLmdldCgid2ViZHJpdmVyX2FyZ3MiKX0KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdz
KHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwK
K2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNh
Y2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdz
KToKICAgICBmcm9tIHNlbGVuaXVtLndlYmRyaXZlciBpbXBvcnQgRGVzaXJlZENhcGFiaWxpdGll
cwogCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAi
IiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgd2ViZHJpdmVyX2Jp
bmFyeT0ib3BlcmFkcml2ZXIiLAotICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25l
KToKKyAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAg
ICAgICAiIiJDcmVhdGVzIGEgbmV3IHJlcHJlc2VudGF0aW9uIG9mIE9wZXJhLiAgVGhlIGBiaW5h
cnlgIGFyZ3VtZW50IGdpdmVzCiAgICAgICAgIHRoZSBicm93c2VyIGJpbmFyeSB0byB1c2UgZm9y
IHRlc3RpbmcuIiIiCiAgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFyaS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9zYWZhcmkucHkKaW5kZXggY2IyYjE3NWQ0ZGZiLi45NTY1ZjFjMzAyZjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL3NhZmFyaS5weQpAQCAtMSwzICsxLDkgQEAKK2ltcG9ydCBvcworaW1wb3J0IHBs
aXN0bGliCitmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCisKK2lt
cG9ydCBwc3V0aWwKKwogZnJvbSAuYmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2Vy
LCByZXF1aXJlX2FyZwogZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAg
ICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFyaURyaXZl
clNlcnZlcgpAQCAtMjYsMTIgKzMyLDEzIEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAg
ICByZXF1aXJlX2FyZyhrd2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5IikKIAogCi1kZWYgYnJvd3Nl
cl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2Rl
ZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmln
LCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIHsid2ViZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1sid2Vi
ZHJpdmVyX2JpbmFyeSJdLAotICAgICAgICAgICAgIndlYmRyaXZlcl9hcmdzIjoga3dhcmdzLmdl
dCgid2ViZHJpdmVyX2FyZ3MiKX0KKyAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJn
cy5nZXQoIndlYmRyaXZlcl9hcmdzIiksCisgICAgICAgICAgICAia2lsbF9zYWZhcmkiOiBrd2Fy
Z3MuZ2V0KCJraWxsX3NhZmFyaSIsIEZhbHNlKX0KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdzKHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKK2Rl
ZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hl
X21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToK
ICAgICBleGVjdXRvcl9rd2FyZ3MgPSBiYXNlX2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNl
cnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCkBAIC01OCwxNSArNjUsNjAg
QEAgY2xhc3MgU2FmYXJpQnJvd3NlcihCcm93c2VyKToKICAgICBgYHdwdHJ1bm5lci53ZWJkcml2
ZXIuU2FmYXJpRHJpdmVyU2VydmVyYGAuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCB3ZWJkcml2ZXJfYmluYXJ5LCB3ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJkcml2ZXJfYmluYXJ5LCB3ZWJkcml2ZXJfYXJn
cz1Ob25lLCBraWxsX3NhZmFyaT1GYWxzZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGVz
IGEgbmV3IHJlcHJlc2VudGF0aW9uIG9mIFNhZmFyaS4gIFRoZSBgd2ViZHJpdmVyX2JpbmFyeWAK
ICAgICAgICAgYXJndW1lbnQgZ2l2ZXMgdGhlIFdlYkRyaXZlciBiaW5hcnkgdG8gdXNlIGZvciB0
ZXN0aW5nLiAoVGhlIGJyb3dzZXIKICAgICAgICAgYmluYXJ5IGxvY2F0aW9uIGNhbm5vdCBiZSBz
cGVjaWZpZWQsIGFzIFNhZmFyaSBhbmQgU2FmYXJpRHJpdmVyIGFyZQotICAgICAgICBjb3VwbGVk
LikiIiIKKyAgICAgICAgY291cGxlZC4pIElmIGBraWxsX3NhZmFyaWAgaXMgVHJ1ZSwgdGhlbiBg
QnJvd3Nlci5zdG9wYCB3aWxsIHN0b3AgU2FmYXJpLiIiIgogICAgICAgICBCcm93c2VyLl9faW5p
dF9fKHNlbGYsIGxvZ2dlcikKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBTYWZhcmlEcml2ZXJTZXJ2
ZXIoc2VsZi5sb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJpbmFyeT13ZWJkcml2ZXJfYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzPXdlYmRyaXZlcl9hcmdzKQorICAgICAgICBpZiAiLyIgbm90IGluIHdl
YmRyaXZlcl9iaW5hcnk6CisgICAgICAgICAgICB3ZF9wYXRoID0gZmluZF9leGVjdXRhYmxlKHdl
YmRyaXZlcl9iaW5hcnkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZF9wYXRoID0gd2Vi
ZHJpdmVyX2JpbmFyeQorICAgICAgICBzZWxmLnNhZmFyaV9wYXRoID0gc2VsZi5fZmluZEFzc29j
aWF0ZWRTYWZhcmlFeGVjdXRhYmxlKHdkX3BhdGgpCisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJX
ZWJEcml2ZXIgZXhlY3V0YWJsZSBwYXRoOiAlcyIgJSB3ZF9wYXRoKQorICAgICAgICBsb2dnZXIu
ZGVidWcoIlNhZmFyaSBleGVjdXRhYmxlIHBhdGg6ICVzIiAlIHNlbGYuc2FmYXJpX3BhdGgpCisK
KyAgICAgICAgc2VsZi5raWxsX3NhZmFyaSA9IGtpbGxfc2FmYXJpCisKKyAgICBkZWYgX2ZpbmRB
c3NvY2lhdGVkU2FmYXJpRXhlY3V0YWJsZShzZWxmLCB3ZF9wYXRoKToKKyAgICAgICAgYnVuZGxl
X3BhdGhzID0gWworICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZSh3ZF9w
YXRoKSwgIi4uIiwgIi4uIiksICAjIGJ1bmRsZWQgU2FmYXJpIChlLmcuIFNUUCkKKyAgICAgICAg
ICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUod2RfcGF0aCksICJTYWZhcmkuYXBwIiks
ICAjIGxvY2FsIFNhZmFyaSBidWlsZAorICAgICAgICAgICAgIi9BcHBsaWNhdGlvbnMvU2FmYXJp
LmFwcCIsICAjIHN5c3RlbSBTYWZhcmkKKyAgICAgICAgXQorCisgICAgICAgIGZvciBidW5kbGVf
cGF0aCBpbiBidW5kbGVfcGF0aHM6CisgICAgICAgICAgICBpbmZvX3BhdGggPSBvcy5wYXRoLmpv
aW4oYnVuZGxlX3BhdGgsICJDb250ZW50cyIsICJJbmZvLnBsaXN0IikKKyAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShpbmZvX3BhdGgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgIHdpdGggb3BlbihpbmZvX3BhdGgsICJyYiIpIGFzIGZwOgorICAgICAg
ICAgICAgICAgIGluZm8gPSBwbGlzdGxpYi5sb2FkKGZwKQorCisgICAgICAgICAgICAjIGNoZWNr
IHdlIGhhdmUgYSBTYWZhcmkgZmFtaWx5IGJ1bmRsZQorICAgICAgICAgICAgaWYgIkNGQnVuZGxl
SWRlbnRpZmllciIgbm90IGluIGluZm86CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgIGlkZW50ID0gaW5mb1siQ0ZCdW5kbGVJZGVudGlmaWVyIl0KKyAgICAgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKGlkZW50LCBzdHIpIG9yIG5vdCBpZGVudC5zdGFydHN3aXRoKCJjb20u
YXBwbGUuU2FmYXJpIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
IyBnZXQgdGhlIGV4ZWN1dGFibGUgbmFtZQorICAgICAgICAgICAgaWYgIkNGQnVuZGxlRXhlY3V0
YWJsZSIgbm90IGluIGluZm86CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGV4ZSA9IGluZm9bIkNGQnVuZGxlRXhlY3V0YWJsZSJdCisgICAgICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShleGUsIHN0cik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgZXhlX3BhdGggPSBvcy5wYXRoLmpvaW4oYnVuZGxlX3BhdGgsICJDb250ZW50cyIsICJNYWNP
UyIsIGV4ZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShleGVfcGF0aCk6Cisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcmV0dXJuIGV4ZV9wYXRoCiAK
ICAgICBkZWYgc3RhcnQoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnNlcnZlci5zdGFy
dChibG9jaz1GYWxzZSkKQEAgLTc0LDYgKzEyNiwyMCBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJy
b3dzZXIpOgogICAgIGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgc2VsZi5z
ZXJ2ZXIuc3RvcChmb3JjZT1mb3JjZSkKIAorICAgICAgICBpZiBzZWxmLmtpbGxfc2FmYXJpOgor
ICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkdvaW5nIHRvIHN0b3AgU2FmYXJpIikKKyAg
ICAgICAgICAgIGZvciBwcm9jIGluIHBzdXRpbC5wcm9jZXNzX2l0ZXIoYXR0cnM9WyJleGUiXSk6
CisgICAgICAgICAgICAgICAgaWYgcHJvYy5pbmZvWyJleGUiXSBpcyBub3QgTm9uZSBhbmQgb3Mu
cGF0aC5zYW1lZmlsZShwcm9jLmluZm9bImV4ZSJdLCBzZWxmLnNhZmFyaV9wYXRoKToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0b3BwaW5nIFNhZmFyaSAlcyIgJSBw
cm9jLnBpZCkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvYy50ZXJtaW5hdGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2Mud2FpdCgxMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdCBwc3V0aWwuVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvYy5raWxsKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHBzdXRpbC5Ob1N1
Y2hQcm9jZXNzOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworCiAgICAgZGVmIHBpZChz
ZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLnBpZAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Uu
cHkKaW5kZXggYzU3YWM5NDJlZDRlLi45OWVjZTg5ZDQ1NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Uu
cHkKQEAgLTEyLDcgKzEyLDcgQEAgaW1wb3J0IHRpbWUKIAogaW1wb3J0IHJlcXVlc3RzCiAKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBjU3RyaW5nSU8gYXMgU3RyaW5nSU8KK2Zyb20gaW8gaW1wb3J0
IFN0cmluZ0lPCiAKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3Nlciwg
cmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIgICAj
IG5vcWE6IEY0MDEKQEAgLTk1LDEzICs5NSwxMyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6
CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAic2F1Y2Vfa2V5IikKIAogCi1kZWYgYnJvd3Nlcl9r
d2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBi
cm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgc2F1Y2VfY29uZmlnID0gZ2V0X3NhdWNlX2NvbmZpZygqKmt3YXJncykK
IAogICAgIHJldHVybiB7InNhdWNlX2NvbmZpZyI6IHNhdWNlX2NvbmZpZ30KIAogCi1kZWYgZXhl
Y3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVu
X2luZm9fZGF0YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZl
cl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICoqa3dhcmdzKToKICAgICBleGVjdXRvcl9rd2FyZ3MgPSBiYXNlX2V4ZWN1dG9yX2t3YXJn
cyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCkBA
IC0yMjgsNyArMjI4LDcgQEAgY2xhc3MgU2F1Y2VFeGNlcHRpb24oRXhjZXB0aW9uKToKIGNsYXNz
IFNhdWNlQnJvd3NlcihCcm93c2VyKToKICAgICBpbml0X3RpbWVvdXQgPSAzMDAKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHNhdWNlX2NvbmZpZyk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgc2F1Y2VfY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgIEJyb3dzZXIu
X19pbml0X18oc2VsZiwgbG9nZ2VyKQogICAgICAgICBzZWxmLnNhdWNlX2NvbmZpZyA9IHNhdWNl
X2NvbmZpZwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Vfc2V0dXAv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Vfc2V0dXAvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNTJlMTI2YjRlMi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZV9zZXR1cC93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYXVjZV9zZXR1cC9lZGdlLXByZXJ1bi5iYXQKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
YnJvd3NlcnMvc2F1Y2Vfc2V0dXAvc2FmYXJpLXByZXJ1bi5zaApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5
CmluZGV4IGI5NDc2NTQwYWM3Yy4uNGY5MzRhZWRmY2Q2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5
CkBAIC0zMyw3ICszMyw3IEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJl
X2FyZyhrd2FyZ3MsICJiaW5hcnkiKQogCiAKLWRlZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUs
IHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgorZGVmIGJyb3dzZXJfa3dhcmdzKGxv
Z2dlciwgdGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICBy
ZXR1cm4gewogICAgICAgICAiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgImRl
YnVnX2luZm8iOiBrd2FyZ3NbImRlYnVnX2luZm8iXSwKQEAgLTQzLDcgKzQzLDcgQEAgZGVmIGJy
b3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6
CiAgICAgfQogCiAKLWRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmln
LCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dn
ZXIsIHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgIHJ2ID0gYmFzZV9leGVjdXRv
cl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCkBAIC03MSw3
ICs3MSw3IEBAIGRlZiB1cGRhdGVfcHJvcGVydGllcygpOgogCiBjbGFzcyBTZXJ2b0Jyb3dzZXIo
TnVsbEJyb3dzZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgZGVi
dWdfaW5mbz1Ob25lLCBiaW5hcnlfYXJncz1Ob25lLAotICAgICAgICAgICAgICAgICB1c2VyX3N0
eWxlc2hlZXRzPU5vbmUsIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSk6CisgICAgICAgICAgICAg
ICAgIHVzZXJfc3R5bGVzaGVldHM9Tm9uZSwgY2FfY2VydGlmaWNhdGVfcGF0aD1Ob25lLCAqKmt3
YXJncyk6CiAgICAgICAgIE51bGxCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAg
ICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdf
aW5mbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5CmluZGV4IDQzNzk0ZTQxNzA2ZC4u
ODNiOTQyM2JhNzFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2
ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5CkBAIC0zNiw3
ICszNiw3IEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2Fy
Z3MsICJiaW5hcnkiKQogCiAKLWRlZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZv
X2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgorZGVmIGJyb3dzZXJfa3dhcmdzKGxvZ2dlciwgdGVz
dF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICByZXR1cm4gewog
ICAgICAgICAiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgImJpbmFyeV9hcmdz
Ijoga3dhcmdzWyJiaW5hcnlfYXJncyJdLApAQCAtNDcsNyArNDcsNyBAQCBkZWYgYnJvd3Nlcl9r
d2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICB9
CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hl
X21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsICoqa3dhcmdzKToKK2RlZiBleGVjdXRvcl9rd2FyZ3Mo
bG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZv
X2RhdGEsICoqa3dhcmdzKToKICAgICBydiA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlw
ZSwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX21h
bmFnZXIsIHJ1bl9pbmZvX2RhdGEsICoqa3dhcmdzKQogICAgIHJldHVybiBydgpAQCAtNzcsNyAr
NzcsOCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlckJyb3dzZXIoQnJvd3Nlcik6CiAgICAgaW5pdF90
aW1lb3V0ID0gMzAwICAjIExhcmdlIHRpbWVvdXQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIGJvb3Rp
bmcgYW4gQW5kcm9pZCBlbXVsYXRvcgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
YmluYXJ5LCBkZWJ1Z19pbmZvPU5vbmUsIHdlYmRyaXZlcl9ob3N0PSIxMjcuMC4wLjEiLAotICAg
ICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnPU5vbmUsIGJpbmFyeV9hcmdzPU5vbmUsIHVzZXJf
c3R5bGVzaGVldHM9Tm9uZSwgaGVhZGxlc3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHNlcnZl
cl9jb25maWc9Tm9uZSwgYmluYXJ5X2FyZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdXNlcl9z
dHlsZXNoZWV0cz1Ob25lLCBoZWFkbGVzcz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIEJyb3dz
ZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQogICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQog
ICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3Mgb3IgW10KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY4M2Ri
ZjMxZjFjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRf
d2VibGF5ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hy
b21lLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hy
b21lX3Nwa2lfY2VydHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9lZGdlX3dlYmRyaXZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlY2hyb21pdW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9m
aXJlZm94X2FuZHJvaWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvb3BlcmEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJpLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L3NlcnZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL3dlYmtpdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXRn
dGtfbWluaWJyb3dzZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJr
aXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CmluZGV4IGRhOTNjZjE2NDM5
OS4uZjgzZGUyOTk2YTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXQucHkKQEAgLTI5LDcgKzI5LDcg
QEAgZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOgogICAgIHJlcXVpcmVfYXJnKGt3YXJncywgIndl
YmtpdF9wb3J0IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19k
YXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3Rf
dHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIHsiYmlu
YXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgICAgICJ3ZWJkcml2ZXJfYmluYXJ5Ijog
a3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0sCiAgICAgICAgICAgICAid2ViZHJpdmVyX2FyZ3Mi
OiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpfQpAQCAtNTQsNyArNTQsNyBAQCBkZWYgY2Fw
YWJpbGl0aWVzX2Zvcl9wb3J0KHNlcnZlcl9jb25maWcsICoqa3dhcmdzKToKICAgICByZXR1cm4g
e30KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2Fj
aGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0
ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICBleGVjdXRvcl9rd2FyZ3MgPSBiYXNl
X2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0
YSwgKiprd2FyZ3MpCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIFdlYktpdEJyb3dzZXIoQnJvd3Nl
cik6CiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdl
YmRyaXZlcl9iaW5hcnk9Tm9uZSwKLSAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3M9Tm9u
ZSk6CisgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUsICoqa3dhcmdzKToKICAg
ICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCiAgICAgICAgIHNlbGYuYmluYXJ5
ID0gYmluYXJ5CiAgICAgICAgIHNlbGYuc2VydmVyID0gV2ViS2l0RHJpdmVyU2VydmVyKHNlbGYu
bG9nZ2VyLCBiaW5hcnk9d2ViZHJpdmVyX2JpbmFyeSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CmluZGV4IGQ4Yjk3NDRiZDc0My4uNmMxMDAxZTJk
NzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93
c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIu
cHkKQEAgLTI1LDcgKzI1LDcgQEAgZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOgogICAgIHBhc3MK
IAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcs
ICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2lu
Zm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBXb3JrYXJvdW5kIGZvciBodHRwczov
L2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC9pc3N1ZXMvMTcyCiAgICAgd2ViZHJpdmVy
X3JlcXVpcmVkX2FyZ3MgPSBbIi0taG9zdD0xMjcuMC4wLjEiXQogICAgIHdlYmRyaXZlcl9hcmdz
ID0gbWF5YmVfYWRkX2FyZ3Mod2ViZHJpdmVyX3JlcXVpcmVkX2FyZ3MsIGt3YXJncy5nZXQoIndl
YmRyaXZlcl9hcmdzIikpCkBAIC01Myw3ICs1Myw3IEBAIGRlZiBjYXBhYmlsaXRpZXMoc2VydmVy
X2NvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgImNlcnRpZmljYXRlcyI6IGNlcnRpZmlj
YXRlX2RvbWFpbl9saXN0KHNlcnZlcl9jb25maWcuZG9tYWluc19zZXQsIGt3YXJnc1siaG9zdF9j
ZXJ0X3BhdGgiXSl9fQogCiAKLWRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJf
Y29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJn
cyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2lu
Zm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgIGV4ZWN1dG9yX2t3
YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBy
dW5faW5mb19kYXRhLCAqKmt3YXJncykKQEAgLTc2LDYgKzc2LDYgQEAgZGVmIHJ1bl9pbmZvX2V4
dHJhcygqKmt3YXJncyk6CiAKIGNsYXNzIFdlYktpdEdUS01pbmlCcm93c2VyKFdlYktpdEJyb3dz
ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeT1Ob25lLCB3ZWJkcml2
ZXJfYmluYXJ5PU5vbmUsCi0gICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgor
ICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAg
IFdlYktpdEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9i
aW5hcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3MpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvY29uZmlnLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2NvbmZpZy5w
eQppbmRleCBkNDZiZWI4ZTcxZGIuLjNmNWU5MzQxZGNmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2NvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvY29uZmlnLnB5CkBAIC0xLDQgKzEsNCBA
QAotZnJvbSBzaXgubW92ZXMuY29uZmlncGFyc2VyIGltcG9ydCBTYWZlQ29uZmlnUGFyc2VyCitm
cm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgU2FmZUNvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCiBpbXBv
cnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5
CmluZGV4IDI1MjdkMjZkMzkxZC4uODZkY2I5M2RlZjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZW52aXJvbm1lbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC0x
LDE0ICsxLDE0IEBACiBpbXBvcnQganNvbgogaW1wb3J0IG9zCi1pbXBvcnQgbXVsdGlwcm9jZXNz
aW5nCisKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGltcG9ydCB0
aW1lCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZyb20gbW96bG9nIGltcG9ydCBnZXRf
ZGVmYXVsdF9sb2dnZXIsIGhhbmRsZXJzLCBwcm94eQogCitmcm9tIC4gaW1wb3J0IG1wY29udGV4
dAogZnJvbSAud3B0bG9nZ2luZyBpbXBvcnQgTG9nTGV2ZWxSZXdyaXRlcgogCiBoZXJlID0gb3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKQpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBUZXN0RW52aXJv
bm1lbnQob2JqZWN0KToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCBvd25zIHRoZSB0ZXN0
IGVudmlyb25tZW50IGkuZS4gdGhlIGh0dHAgYW5kCiAgICAgd2Vic29ja2V0cyBzZXJ2ZXJzIiIi
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJuZXNzX3RpbWVvdXRf
bXVsdGlwbGVyLAotICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZv
LCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICBwYXVz
ZV9hZnRlcl90ZXN0LCBkZWJ1Z190ZXN0LCBkZWJ1Z19pbmZvLCBvcHRpb25zLCBzc2xfY29uZmln
LCBlbnZfZXh0cmFzLAogICAgICAgICAgICAgICAgICBlbmFibGVfcXVpYz1GYWxzZSwgbW9qb2pz
X3BhdGg9Tm9uZSk6CiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAgICAg
ICAgc2VsZi5zZXJ2ZXIgPSBOb25lCkBAIC02MiwxMiArNjIsMTQgQEAgY2xhc3MgVGVzdEVudmly
b25tZW50KG9iamVjdCk6CiAgICAgICAgIHNlbGYuY29uZmlnID0gTm9uZQogICAgICAgICBzZWxm
LnRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyID0gdGVzdGhhcm5lc3NfdGltZW91dF9tdWx0
aXBsZXIKICAgICAgICAgc2VsZi5wYXVzZV9hZnRlcl90ZXN0ID0gcGF1c2VfYWZ0ZXJfdGVzdAor
ICAgICAgICBzZWxmLmRlYnVnX3Rlc3QgPSBkZWJ1Z190ZXN0CiAgICAgICAgIHNlbGYudGVzdF9z
ZXJ2ZXJfcG9ydCA9IG9wdGlvbnMucG9wKCJ0ZXN0X3NlcnZlcl9wb3J0IiwgVHJ1ZSkKICAgICAg
ICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdfaW5mbwogICAgICAgICBzZWxmLm9wdGlvbnMgPSBv
cHRpb25zIGlmIG9wdGlvbnMgaXMgbm90IE5vbmUgZWxzZSB7fQogCi0gICAgICAgIHNlbGYuY2Fj
aGVfbWFuYWdlciA9IG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyKCkKLSAgICAgICAgc2VsZi5zdGFz
aCA9IHNlcnZlLnN0YXNoLlN0YXNoU2VydmVyKCkKKyAgICAgICAgbXBfY29udGV4dCA9IG1wY29u
dGV4dC5nZXRfY29udGV4dCgpCisgICAgICAgIHNlbGYuY2FjaGVfbWFuYWdlciA9IG1wX2NvbnRl
eHQuTWFuYWdlcigpCisgICAgICAgIHNlbGYuc3Rhc2ggPSBzZXJ2ZS5zdGFzaC5TdGFzaFNlcnZl
cihtcF9jb250ZXh0PW1wX2NvbnRleHQpCiAgICAgICAgIHNlbGYuZW52X2V4dHJhcyA9IGVudl9l
eHRyYXMKICAgICAgICAgc2VsZi5lbnZfZXh0cmFzX2NtcyA9IE5vbmUKICAgICAgICAgc2VsZi5z
c2xfY29uZmlnID0gc3NsX2NvbmZpZwpAQCAtOTUsNyArOTcsOCBAQCBjbGFzcyBUZXN0RW52aXJv
bm1lbnQob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuZW52X2V4dHJhc19jbXMuYXBwZW5kKGNt
KQogCiAgICAgICAgIHNlbGYuc2VydmVycyA9IHNlcnZlLnN0YXJ0KHNlbGYuY29uZmlnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9yb3V0ZXMoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfcm91dGVzKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wX2NvbnRleHQ9bXBjb250ZXh0LmdldF9jb250
ZXh0KCkpCiAKICAgICAgICAgaWYgc2VsZi5vcHRpb25zLmdldCgic3VwcG9ydHNfZGVidWdnZXIi
KSBhbmQgc2VsZi5kZWJ1Z19pbmZvIGFuZCBzZWxmLmRlYnVnX2luZm8uaW50ZXJhY3RpdmU6CiAg
ICAgICAgICAgICBzZWxmLmlnbm9yZV9pbnRlcnJ1cHRzKCkKQEAgLTEwNCw3ICsxMDcsNyBAQCBj
bGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhj
X3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRz
KCkKIAotICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxmLnNlcnZl
cnMpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVtcygp
OgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBzZXJ2ZXJzOgogICAgICAgICAgICAg
ICAgIHNlcnZlci5raWxsKCkKICAgICAgICAgZm9yIGNtIGluIHNlbGYuZW52X2V4dHJhc19jbXM6
CkBAIC0xNjgsNyArMTcxLDggQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAg
ICAgIGxvZ19maWx0ZXIgPSBMb2dMZXZlbFJld3JpdGVyKGxvZ19maWx0ZXIsIFsiZXJyb3IiXSwg
Indhcm5pbmciKQogICAgICAgICBzZXJ2ZXJfbG9nZ2VyLmNvbXBvbmVudF9maWx0ZXIgPSBsb2df
ZmlsdGVyCiAKLSAgICAgICAgc2VydmVyX2xvZ2dlciA9IHByb3h5LlF1ZXVlZFByb3h5TG9nZ2Vy
KHNlcnZlcl9sb2dnZXIpCisgICAgICAgIHNlcnZlcl9sb2dnZXIgPSBwcm94eS5RdWV1ZWRQcm94
eUxvZ2dlcihzZXJ2ZXJfbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXBjb250ZXh0LmdldF9jb250ZXh0KCkpCiAKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgIyBTZXQgYXMgdGhlIGRlZmF1bHQgbG9nZ2VyIGZvciB3cHRzZXJ2ZQpAQCAt
MTkxLDcgKzE5NSw4IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICAg
ICAgICAgIChzZWxmLm9wdGlvbnMuZ2V0KCJ0ZXN0aGFybmVzc3JlcG9ydCIsICJ0ZXN0aGFybmVz
c3JlcG9ydC5qcyIpLAogICAgICAgICAgICAgICAgICB7Im91dHB1dCI6IHNlbGYucGF1c2VfYWZ0
ZXJfdGVzdCwKICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0X211bHRpcGxpZXIiOiBzZWxmLnRl
c3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyLAotICAgICAgICAgICAgICAgICAgImV4cGxpY2l0
X3RpbWVvdXQiOiAidHJ1ZSIgaWYgc2VsZi5kZWJ1Z19pbmZvIGlzIG5vdCBOb25lIGVsc2UgImZh
bHNlIn0sCisgICAgICAgICAgICAgICAgICAiZXhwbGljaXRfdGltZW91dCI6ICJ0cnVlIiBpZiBz
ZWxmLmRlYnVnX2luZm8gaXMgbm90IE5vbmUgZWxzZSAiZmFsc2UiLAorICAgICAgICAgICAgICAg
ICAgImRlYnVnIjogInRydWUiIGlmIHNlbGYuZGVidWdfdGVzdCBlbHNlICJmYWxzZSJ9LAogICAg
ICAgICAgICAgICAgICAidGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmOCIsCiAgICAgICAgICAg
ICAgICAgICIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIildOgogICAgICAgICAgICAg
cGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGhlcmUsIHBhdGgpKQpAQCAtMjA5
LDcgKzIxNCw3IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICByb3V0
ZV9idWlsZGVyLmFkZF9oYW5kbGVyKCJHRVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0
ZXh0L2phdmFzY3JpcHQiKSkKIAotICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJp
dGVtcyhzZWxmLnRlc3RfcGF0aHMpOgorICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNl
bGYudGVzdF9wYXRocy5pdGVtcygpOgogICAgICAgICAgICAgaWYgdXJsX2Jhc2UgPT0gIi8iOgog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9t
b3VudF9wb2ludCh1cmxfYmFzZSwgcGF0aHNbInRlc3RzX3BhdGgiXSkKQEAgLTI0MSwxMyArMjQ2
LDEzIEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICBmYWlsZWQgPSBb
XQogICAgICAgICBwZW5kaW5nID0gW10KICAgICAgICAgaG9zdCA9IHNlbGYuY29uZmlnWyJzZXJ2
ZXJfaG9zdCJdCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gaXRlcml0ZW1zKHNlbGYu
c2VydmVycyk6CisgICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2VsZi5zZXJ2ZXJzLml0
ZW1zKCk6CiAgICAgICAgICAgICBmb3IgcG9ydCwgc2VydmVyIGluIHNlcnZlcnM6CiAgICAgICAg
ICAgICAgICAgaWYgbm90IHNlcnZlci5pc19hbGl2ZSgpOgogICAgICAgICAgICAgICAgICAgICBm
YWlsZWQuYXBwZW5kKChzY2hlbWUsIHBvcnQpKQogCiAgICAgICAgIGlmIG5vdCBmYWlsZWQgYW5k
IHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoKLSAgICAgICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMg
aW4gaXRlcml0ZW1zKHNlbGYuc2VydmVycyk6CisgICAgICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2
ZXJzIGluIHNlbGYuc2VydmVycy5pdGVtcygpOgogICAgICAgICAgICAgICAgICMgVE9ETyhIZXhj
bGVzKTogRmluZCBhIHdheSB0byB0ZXN0IFFVSUMncyBVRFAgcG9ydC4KICAgICAgICAgICAgICAg
ICBpZiBzY2hlbWUgPT0gInF1aWMtdHJhbnNwb3J0IjoKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0aW9ucy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0aW9ucy5weQppbmRleCBiMTFkMzBiYjk0YWEuLjk2M2Vk
MzM3ZmRlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0aW9ucy5weQpAQCAtMTMsNiArMTMsMTggQEAg
Y2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5l
bGVtZW50KGVsZW1lbnQpCiAKIAorY2xhc3MgRGVsZXRlQWxsQ29va2llc0FjdGlvbihvYmplY3Qp
OgorICAgIG5hbWUgPSAiZGVsZXRlX2FsbF9jb29raWVzIgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAg
ICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBw
YXlsb2FkKToKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkRlbGV0aW5nIGFsbCBjb29raWVz
IikKKyAgICAgICAgc2VsZi5wcm90b2NvbC5jb29raWVzLmRlbGV0ZV9hbGxfY29va2llcygpCisK
KwogY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToKICAgICBuYW1lID0gInNlbmRfa2V5cyIK
IApAQCAtMTcxLDYgKzE4Myw3IEBAIGNsYXNzIFNldFVzZXJWZXJpZmllZEFjdGlvbihvYmplY3Qp
OgogCiAKIGFjdGlvbnMgPSBbQ2xpY2tBY3Rpb24sCisgICAgICAgICAgIERlbGV0ZUFsbENvb2tp
ZXNBY3Rpb24sCiAgICAgICAgICAgIFNlbmRLZXlzQWN0aW9uLAogICAgICAgICAgICBBY3Rpb25T
ZXF1ZW5jZUFjdGlvbiwKICAgICAgICAgICAgR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CmluZGV4IDU1NTE4Njg1NDk0ZS4uYjQ3ZDBhZDI2Zjk5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CkBAIC04LDE3ICs4LDE2IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9y
dCBzb2NrZXQKIGltcG9ydCBzeXMKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1l
dGhvZAotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotZnJvbSBzaXgubW92ZXMuaHR0cF9jbGll
bnQgaW1wb3J0IEhUVFBDb25uZWN0aW9uCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1w
b3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0Citmcm9tIGh0dHAuY2xpZW50IGltcG9y
dCBIVFRQQ29ubmVjdGlvbgorZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNw
bGl0LCB1cmx1bnNwbGl0CiAKLWZyb20gLi50ZXN0cnVubmVyIGltcG9ydCBTdG9wCiBmcm9tIC5h
Y3Rpb25zIGltcG9ydCBhY3Rpb25zCiBmcm9tIC5wcm90b2NvbCBpbXBvcnQgUHJvdG9jb2wsIEJh
c2VQcm90b2NvbFBhcnQKIAogaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIAogCisK
IGRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5h
Z2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAg
dGltZW91dF9tdWx0aXBsaWVyID0ga3dhcmdzWyJ0aW1lb3V0X211bHRpcGxpZXIiXQpAQCAtNDIs
NyArNDEsNyBAQCBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywg
Y2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAjIHdhbnQgdG8gdmlldyB0aGUgcmVz
dWx0cywgaG93ZXZlciwgdGhlIGV4ZWN1dG9yIGhhcyB0byBza2lwIHRoYXQgY2xlYW51cC4KICAg
ICBpZiBrd2FyZ3NbInBhdXNlX2FmdGVyX3Rlc3QiXSBvciBrd2FyZ3NbInBhdXNlX29uX3VuZXhw
ZWN0ZWQiXToKICAgICAgICAgZXhlY3V0b3Jfa3dhcmdzWyJjbGVhbnVwX2FmdGVyX3Rlc3QiXSA9
IEZhbHNlCi0KKyAgICBleGVjdXRvcl9rd2FyZ3NbImRlYnVnX3Rlc3QiXSA9IGt3YXJnc1siZGVi
dWdfdGVzdCJdCiAgICAgcmV0dXJuIGV4ZWN1dG9yX2t3YXJncwogCiAKQEAgLTE4MCwxMSArMTc5
LDExIEBAIGNsYXNzIFRpbWVkUnVubmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYucmVzdWx0X2Zs
YWcgPSB0aHJlYWRpbmcuRXZlbnQoKQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5zZXRfdGltZW91dCgpIGlzIFN0b3A6Ci0gICAgICAgICAgICByZXR1cm4gU3RvcAotCi0g
ICAgICAgIGlmIHNlbGYuYmVmb3JlX3J1bigpIGlzIFN0b3A6Ci0gICAgICAgICAgICByZXR1cm4g
U3RvcAorICAgICAgICBmb3Igc2V0dXBfZm4gaW4gW3NlbGYuc2V0X3RpbWVvdXQsIHNlbGYuYmVm
b3JlX3J1bl06CisgICAgICAgICAgICBlcnIgPSBzZXR1cF9mbigpCisgICAgICAgICAgICBpZiBl
cnI6CisgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSAoRmFsc2UsIGVycikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQKIAogICAgICAgICBleGVjdXRvciA9IHRocmVhZGlu
Zy5UaHJlYWQodGFyZ2V0PXNlbGYucnVuX2Z1bmMpCiAgICAgICAgIGV4ZWN1dG9yLnN0YXJ0KCkK
QEAgLTI4NywxOCArMjg2LDE1IEBAIGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgICAg
ICAiIiJSdW4gYSBwYXJ0aWN1bGFyIHRlc3QuCiAKICAgICAgICAgOnBhcmFtIHRlc3Q6IFRoZSB0
ZXN0IHRvIHJ1biIiIgotICAgICAgICBpZiB0ZXN0LmVudmlyb25tZW50ICE9IHNlbGYubGFzdF9l
bnZpcm9ubWVudDoKLSAgICAgICAgICAgIHNlbGYub25fZW52aXJvbm1lbnRfY2hhbmdlKHRlc3Qu
ZW52aXJvbm1lbnQpCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRlc3QuZW52aXJvbm1l
bnQgIT0gc2VsZi5sYXN0X2Vudmlyb25tZW50OgorICAgICAgICAgICAgICAgIHNlbGYub25fZW52
aXJvbm1lbnRfY2hhbmdlKHRlc3QuZW52aXJvbm1lbnQpCiAgICAgICAgICAgICByZXN1bHQgPSBz
ZWxmLmRvX3Rlc3QodGVzdCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAg
ICAgICAgZXhjZXB0aW9uX3N0cmluZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoZXhjZXB0aW9uX3N0cmluZykKICAgICAgICAgICAgIHJl
c3VsdCA9IHNlbGYucmVzdWx0X2Zyb21fZXhjZXB0aW9uKHRlc3QsIGUsIGV4Y2VwdGlvbl9zdHJp
bmcpCiAKLSAgICAgICAgaWYgcmVzdWx0IGlzIFN0b3A6Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0Ci0KICAgICAgICAgIyBsb2cgcmVzdWx0IG9mIHBhcmVudCB0ZXN0CiAgICAgICAgIGlmIHJl
c3VsdFswXS5zdGF0dXMgPT0gIkVSUk9SIjoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVn
KHJlc3VsdFswXS5tZXNzYWdlKQpAQCAtMzM2LDcgKzMzMiw3IEBAIGNsYXNzIFRlc3RFeGVjdXRv
cihvYmplY3QpOgogICAgICAgICAgICAgc3RhdHVzID0gZS5zdGF0dXMKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHN0YXR1cyA9ICJJTlRFUk5BTC1FUlJPUiIKLSAgICAgICAgbWVzc2FnZSA9
IHRleHRfdHlwZShnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQorICAgICAgICBtZXNzYWdlID0g
c3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAg
ICAgICAgICBtZXNzYWdlICs9ICJcbiIKICAgICAgICAgbWVzc2FnZSArPSBleGNlcHRpb25fc3Ry
aW5nCkBAIC01OTgsNyArNTk0LDcgQEAgY2xhc3MgV2RzcGVjRXhlY3V0b3IoVGVzdEV4ZWN1dG9y
KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzLCB0
aW1lb3V0X211bHRpcGxpZXI9MSwgY2FwYWJpbGl0aWVzPU5vbmUsCi0gICAgICAgICAgICAgICAg
IGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZv
PU5vbmUsIGVudmlyb249Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmRvX2RlbGF5ZWRf
aW1wb3J0cygpCiAgICAgICAgIFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLApAQCAtNjA3LDYgKzYwMyw3IEBAIGNs
YXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgICAgIHNlbGYud2ViZHJpdmVy
X2FyZ3MgPSB3ZWJkcml2ZXJfYXJncwogICAgICAgICBzZWxmLnRpbWVvdXRfbXVsdGlwbGllciA9
IHRpbWVvdXRfbXVsdGlwbGllcgogICAgICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IGNhcGFiaWxp
dGllcworICAgICAgICBzZWxmLmVudmlyb24gPSBlbnZpcm9uIGlmIGVudmlyb24gaXMgbm90IE5v
bmUgZWxzZSB7fQogICAgICAgICBzZWxmLnByb3RvY29sID0gc2VsZi5wcm90b2NvbF9jbHMoc2Vs
ZiwgYnJvd3NlcikKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKQEAgLTYzMiw3ICs2MjksOCBA
QCBjbGFzcyBXZHNwZWNFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogICAgICAgICByZXR1cm4gcHl0
ZXN0cnVubmVyLnJ1bihwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25f
Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbj1zZWxmLmVudmlyb24pCiAKICAgICBk
ZWYgZG9fZGVsYXllZF9pbXBvcnRzKHNlbGYpOgogICAgICAgICBnbG9iYWwgcHl0ZXN0cnVubmVy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmNocm9tZS5weQppbmRleCAzYTcwNDc1NDEz
N2YuLjQzMWQzOThlYmQyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVj
dXRvcmNocm9tZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21l
LnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgdHJhY2ViYWNrCiAKLWZyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorZnJvbSB1cmxsaWIucGFyc2Ug
aW1wb3J0IHVybGpvaW4KIAogZnJvbSAuYmFzZSBpbXBvcnQgV2RzcGVjUHJvdG9jb2wsIFdkc3Bl
Y0V4ZWN1dG9yLCBnZXRfcGFnZXMKIGZyb20gLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCBXZWJE
cml2ZXJQcm90b2NvbCwgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yLCBXZWJEcml2ZXJSdW4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JlZGdlY2hyb21pdW0ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yZWRnZWNocm9taXVtLnB5CmluZGV4IGEw
MjYzYWY2ODAzNC4uZWJiYTA2YTllMWFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2V4ZWN1dG9yZWRnZWNocm9taXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3JlZGdlY2hyb21pdW0ucHkKQEAgLTEsMTAgKzEsMTAgQEAKLWZyb20gLi53ZWJkcml2
ZXJfc2VydmVyIGltcG9ydCBFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXINCi1mcm9tIC5iYXNlIGlt
cG9ydCBXZHNwZWNFeGVjdXRvciwgV2RzcGVjUHJvdG9jb2wNCi0NCi0NCi1jbGFzcyBFZGdlQ2hy
b21pdW1Ecml2ZXJQcm90b2NvbChXZHNwZWNQcm90b2NvbCk6DQotICAgIHNlcnZlcl9jbHMgPSBF
ZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXINCi0NCi0NCi1jbGFzcyBFZGdlQ2hyb21pdW1Ecml2ZXJX
ZHNwZWNFeGVjdXRvcihXZHNwZWNFeGVjdXRvcik6DQotICAgIHByb3RvY29sX2NscyA9IEVkZ2VD
aHJvbWl1bURyaXZlclByb3RvY29sDQorZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IEVk
Z2VDaHJvbWl1bURyaXZlclNlcnZlcgorZnJvbSAuYmFzZSBpbXBvcnQgV2RzcGVjRXhlY3V0b3Is
IFdkc3BlY1Byb3RvY29sCisKKworY2xhc3MgRWRnZUNocm9taXVtRHJpdmVyUHJvdG9jb2woV2Rz
cGVjUHJvdG9jb2wpOgorICAgIHNlcnZlcl9jbHMgPSBFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXIK
KworCitjbGFzcyBFZGdlQ2hyb21pdW1Ecml2ZXJXZHNwZWNFeGVjdXRvcihXZHNwZWNFeGVjdXRv
cik6CisgICAgcHJvdG9jb2xfY2xzID0gRWRnZUNocm9taXVtRHJpdmVyUHJvdG9jb2wKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcm1hcmlvbmV0dGUucHkKaW5kZXggZGE4OTQxYjY5
ZTMzLi5lYTRjYmUxMmIyNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhl
Y3V0b3JtYXJpb25ldHRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3Jt
YXJpb25ldHRlLnB5CkBAIC01LDggKzUsNyBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awogaW1wb3J0IHV1aWQKIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMKLWZy
b20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorZnJvbSB1cmxsaWIucGFy
c2UgaW1wb3J0IHVybGpvaW4KIAogZXJyb3JzID0gTm9uZQogbWFyaW9uZXR0ZSA9IE5vbmUKQEAg
LTMzLDE0ICszMiwxNSBAQCBmcm9tIC5wcm90b2NvbCBpbXBvcnQgKEFjdGlvblNlcXVlbmNlUHJv
dG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlUHJvdG9jb2xQYXJ0LAog
ICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RvclByb3RvY29sUGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgQ2xpY2tQcm90b2NvbFBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIENv
b2tpZXNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRLZXlzUHJvdG9j
b2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBUZXN0RHJpdmVyUHJvdG9jb2xQYXJ0LAog
ICAgICAgICAgICAgICAgICAgICAgICBDb3ZlcmFnZVByb3RvY29sUGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVUZXN0UmVwb3J0UHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAg
ICAgICAgICAgICBWaXJ0dWFsQXV0aGVudGljYXRvclByb3RvY29sUGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgU2V0UGVybWlzc2lvblByb3RvY29sUGFydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgUHJpbnRQcm90b2NvbFBhcnQpCi1mcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAor
ICAgICAgICAgICAgICAgICAgICAgICBQcmludFByb3RvY29sUGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRGVidWdQcm90b2NvbFBhcnQpCiBmcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBpbXBv
cnQgR2Vja29Ecml2ZXJTZXJ2ZXIKIAogCkBAIC00MzYsNiArNDM2LDE1IEBAIGNsYXNzIE1hcmlv
bmV0dGVDbGlja1Byb3RvY29sUGFydChDbGlja1Byb3RvY29sUGFydCk6CiAgICAgICAgIHJldHVy
biBlbGVtZW50LmNsaWNrKCkKIAogCitjbGFzcyBNYXJpb25ldHRlQ29va2llc1Byb3RvY29sUGFy
dChDb29raWVzUHJvdG9jb2xQYXJ0KToKKyAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgIHNl
bGYubWFyaW9uZXR0ZSA9IHNlbGYucGFyZW50Lm1hcmlvbmV0dGUKKworICAgIGRlZiBkZWxldGVf
YWxsX2Nvb2tpZXMoc2VsZik6CisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRlbGV0aW5nIGFs
bCBjb29raWVzIikKKyAgICAgICAgcmV0dXJuIHNlbGYubWFyaW9uZXR0ZS5kZWxldGVfYWxsX2Nv
b2tpZXMoKQorCisKIGNsYXNzIE1hcmlvbmV0dGVTZW5kS2V5c1Byb3RvY29sUGFydChTZW5kS2V5
c1Byb3RvY29sUGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgICBzZWxmLm1hcmlv
bmV0dGUgPSBzZWxmLnBhcmVudC5tYXJpb25ldHRlCkBAIC02MTYsNiArNjI1LDQzIEBAIHJlbmRl
cignJXMnKS50aGVuKHJlc3VsdCA9PiBjYWxsYmFjayhyZXN1bHQpKSIiIiAlIHBkZl9iYXNlNjQs
IG5ld19zYW5kYm94PUZhbHNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBfc3dpdGNo
X3RvX3dpbmRvdyhzZWxmLm1hcmlvbmV0dGUsIGhhbmRsZSkKIAorCitjbGFzcyBNYXJpb25ldHRl
RGVidWdQcm90b2NvbFBhcnQoRGVidWdQcm90b2NvbFBhcnQpOgorICAgIGRlZiBzZXR1cChzZWxm
KToKKyAgICAgICAgc2VsZi5tYXJpb25ldHRlID0gc2VsZi5wYXJlbnQubWFyaW9uZXR0ZQorCisg
ICAgZGVmIGxvYWRfZGV2dG9vbHMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5tYXJpb25ldHRl
LnVzaW5nX2NvbnRleHQoc2VsZi5tYXJpb25ldHRlLkNPTlRFWFRfQ0hST01FKToKKyAgICAgICAg
ICAgIHNlbGYucGFyZW50LmJhc2UuZXhlY3V0ZV9zY3JpcHQoIiIiCitjb25zdCBEZXZUb29sc1No
aW0gPSBDaHJvbWVVdGlscy5pbXBvcnQoCisgICJjaHJvbWU6Ly9kZXZ0b29scy1zdGFydHVwL2Nv
bnRlbnQvRGV2VG9vbHNTaGltLmpzbSIKKyk7CisKK2NvbnN0IGNhbGxiYWNrID0gYXJndW1lbnRz
W2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKKworYXN5bmMgZnVuY3Rpb24gbG9hZERldlRvb2xzKCkg
eworICAgIGNvbnN0IHRhYiA9IHdpbmRvdy5nQnJvd3Nlci5zZWxlY3RlZFRhYjsKKyAgICAvLyBz
aG93VG9vbGJveEZvclRhYiBpcyBhdmFpbGFibGUgZm9yIEZpcmVmb3ggODcgb3IgbmV3ZXIuCisg
ICAgaWYgKHR5cGVvZiBEZXZUb29sc1NoaW0uc2hvd1Rvb2xib3hGb3JUYWIgPT09ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgYXdhaXQgc2hvd1Rvb2xib3hGb3JUYWIodGFiLCB7CisgICAgICAgICAg
dG9vbElkOiAid2ViY29uc29sZSIsCisgICAgICAgICAgaG9zdFR5cGU6ICJ3aW5kb3ciCisgICAg
ICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoaXMgYnJhbmNoIGNhbiBiZSByZW1v
dmVkIHdoZSB3cHRydW5uZXIgY2FuIG9ubHkgYmUgdXNlZCB3aXRoCisgICAgICAgIC8vIEZpcmVm
b3ggODcgb3IgbmV3ZXIuCisgICAgICAgIGNvbnN0IHsgVGFyZ2V0RmFjdG9yeSB9ID0gcmVxdWly
ZSgiZGV2dG9vbHMvY2xpZW50L2ZyYW1ld29yay90YXJnZXQiKTsKKyAgICAgICAgY29uc3QgeyBn
RGV2VG9vbHMgfSA9IHJlcXVpcmUoImRldnRvb2xzL2NsaWVudC9mcmFtZXdvcmsvZGV2dG9vbHMi
KTsKKyAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgVGFyZ2V0RmFjdG9yeS5mb3JUYWIodGFi
KTsKKyAgICAgICAgYXdhaXQgZ0RldlRvb2xzLnNob3dUb29sYm94KHRhcmdldCwgIndlYmNvbnNv
bGUiLCAid2luZG93Iik7CisgICAgfQorfQorCitsb2FkRGV2VG9vbHMoKS5jYXRjaCgoKSA9PiBk
dW1wKCJEZXZ0b29scyBmYWlsZWQgdG8gbG9hZCIpKQorICAgICAgICAgICAgICAudGhlbihjYWxs
YmFjayk7CisiIiIsIGFzeW5jaHJvbm91cz1UcnVlKQorCisKIGNsYXNzIE1hcmlvbmV0dGVQcm90
b2NvbChQcm90b2NvbCk6CiAgICAgaW1wbGVtZW50cyA9IFtNYXJpb25ldHRlQmFzZVByb3RvY29s
UGFydCwKICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVUZXN0aGFybmVzc1Byb3RvY29sUGFy
dCwKQEAgLTYyMyw2ICs2NjksNyBAQCBjbGFzcyBNYXJpb25ldHRlUHJvdG9jb2woUHJvdG9jb2wp
OgogICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVN0b3JhZ2VQcm90b2NvbFBhcnQsCiAgICAg
ICAgICAgICAgICAgICBNYXJpb25ldHRlU2VsZWN0b3JQcm90b2NvbFBhcnQsCiAgICAgICAgICAg
ICAgICAgICBNYXJpb25ldHRlQ2xpY2tQcm90b2NvbFBhcnQsCisgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlQ29va2llc1Byb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0
dGVTZW5kS2V5c1Byb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVBY3Rp
b25TZXF1ZW5jZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVUZXN0
RHJpdmVyUHJvdG9jb2xQYXJ0LApAQCAtNjMxLDcgKzY3OCw4IEBAIGNsYXNzIE1hcmlvbmV0dGVQ
cm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlR2VuZXJhdGVU
ZXN0UmVwb3J0UHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVZpcnR1
YWxBdXRoZW50aWNhdG9yUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0
ZVNldFBlcm1pc3Npb25Qcm90b2NvbFBhcnQsCi0gICAgICAgICAgICAgICAgICBNYXJpb25ldHRl
UHJpbnRQcm90b2NvbFBhcnRdCisgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlUHJpbnRQcm90
b2NvbFBhcnQsCisgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlRGVidWdQcm90b2NvbFBhcnRd
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhlY3V0b3IsIGJyb3dzZXIsIGNhcGFiaWxpdGll
cz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgZTEwcz1UcnVlLCBjY292PUZhbHNlKToKICAg
ICAgICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKQEAgLTY5MSwxNCArNzM5LDE0IEBAIGNsYXNzIE1h
cmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hh
bmdlKHNlbGYsIG9sZF9lbnZpcm9ubWVudCwgbmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vu
c2V0IGFsbCB0aGUgb2xkIHByZWZzCi0gICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9l
bnZpcm9ubWVudC5nZXQoInByZWZzIiwge30pKToKKyAgICAgICAgZm9yIG5hbWUgaW4gb2xkX2Vu
dmlyb25tZW50LmdldCgicHJlZnMiLCB7fSkua2V5cygpOgogICAgICAgICAgICAgdmFsdWUgPSBz
ZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3ByZWZfdmFsdWVzW25hbWVdCiAgICAgICAgICAgICBpZiB2
YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYucHJlZnMuY2xlYXIobmFtZSkKICAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wcmVmcy5zZXQobmFtZSwgdmFs
dWUpCiAKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52aXJvbm1l
bnQuZ2V0KCJwcmVmcyIsIHt9KSk6CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBuZXdfZW52
aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5leGVj
dXRvci5vcmlnaW5hbF9wcmVmX3ZhbHVlc1tuYW1lXSA9IHNlbGYucHJlZnMuZ2V0KG5hbWUpCiAg
ICAgICAgICAgICBzZWxmLnByZWZzLnNldChuYW1lLCB2YWx1ZSkKIApAQCAtNzE2LDggKzc2NCw5
IEBAIGNsYXNzIEV4ZWN1dGVBc3luY1NjcmlwdFJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAg
ICAgICAgIyB0aW1lb3V0IGlzIHNldCB0b28gaGlnaC4gVGhpcyB3b3JrcyBhdCBsZWFzdC4KICAg
ICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLmJhc2Uuc2V0X3RpbWVvdXQoMioqMjggLSAxKQog
ICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJM
b3N0IG1hcmlvbmV0dGUgY29ubmVjdGlvbiBiZWZvcmUgc3RhcnRpbmcgdGVzdCIpCi0gICAgICAg
ICAgICByZXR1cm4gU3RvcAorICAgICAgICAgICAgbXNnID0gIkxvc3QgbWFyaW9uZXR0ZSBjb25u
ZWN0aW9uIGJlZm9yZSBzdGFydGluZyB0ZXN0IgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJy
b3IobXNnKQorICAgICAgICAgICAgcmV0dXJuICgiSU5URVJOQUwtRVJST1IiLCBtc2cpCiAKICAg
ICBkZWYgYmVmb3JlX3J1bihzZWxmKToKICAgICAgICAgaW5kZXggPSBzZWxmLnVybC5yZmluZCgi
L3N0b3JhZ2UvIikKQEAgLTc1OSw3ICs4MDgsNyBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5l
c3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAog
ICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25lPVRydWUsIGRlYnVnX2luZm89Tm9uZSwg
Y2FwYWJpbGl0aWVzPU5vbmUsCi0gICAgICAgICAgICAgICAgIGRlYnVnPUZhbHNlLCBjY292PUZh
bHNlLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIGRlYnVnPUZhbHNlLCBjY292PUZhbHNl
LCBkZWJ1Z190ZXN0PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFz
ZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCiAgICAgICAgIFRlc3RoYXJu
ZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmln
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGll
cj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC03NzUsNiArODI0LDcgQEAgY2xhc3MgTWFyaW9uZXR0
ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgICAgIHNlbGYu
Y2xvc2VfYWZ0ZXJfZG9uZSA9IGNsb3NlX2FmdGVyX2RvbmUKICAgICAgICAgc2VsZi53aW5kb3df
aWQgPSBzdHIodXVpZC51dWlkNCgpKQogICAgICAgICBzZWxmLmRlYnVnID0gZGVidWcKKyAgICAg
ICAgc2VsZi5kZWJ1Z190ZXN0ID0gZGVidWdfdGVzdAogCiAgICAgICAgIHNlbGYuaW5zdGFsbF9l
eHRlbnNpb25zID0gYnJvd3Nlci5leHRlbnNpb25zCiAKQEAgLTg0Myw2ICs4OTMsOSBAQCBjbGFz
cyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAg
ICAgICAgc2VsZi5wcm90b2NvbC5iYXNlLnNldF93aW5kb3codGVzdF93aW5kb3cpCiAgICAgICAg
IHByb3RvY29sLnRlc3RoYXJuZXNzLnRlc3Rfd2luZG93X2xvYWRlZCgpCiAKKyAgICAgICAgaWYg
c2VsZi5kZWJ1Z190ZXN0OgorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5kZWJ1Zy5sb2FkX2Rl
dnRvb2xzKCkKKwogICAgICAgICBoYW5kbGVyID0gQ2FsbGJhY2tIYW5kbGVyKHNlbGYubG9nZ2Vy
LCBwcm90b2NvbCwgdGVzdF93aW5kb3cpCiAgICAgICAgIHByb3RvY29sLm1hcmlvbmV0dGUubmF2
aWdhdGUodXJsKQogICAgICAgICB3aGlsZSBUcnVlOgpAQCAtODY5LDcgKzkyMiw3IEBAIGNsYXNz
IE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAg
ICAgICAgZGVidWdfaW5mbz1Ob25lLCByZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAogICAgICAgICAg
ICAgICAgICByZWZ0ZXN0X3NjcmVlbnNob3Q9InVuZXhwZWN0ZWQiLCBjY292PUZhbHNlLAogICAg
ICAgICAgICAgICAgICBncm91cF9tZXRhZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVi
dWc9RmFsc2UsCi0gICAgICAgICAgICAgICAgIGJyb3dzZXJfdmVyc2lvbj1Ob25lLCAqKmt3YXJn
cyk6CisgICAgICAgICAgICAgICAgIGJyb3dzZXJfdmVyc2lvbj1Ob25lLCBkZWJ1Z190ZXN0PUZh
bHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQgZXhlY3V0b3IgZm9y
IHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLApAQCAtODkyLDYgKzk0NSw3IEBA
IGNsYXNzIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgc2VsZi5vcmlnaW5hbF9wcmVmX3ZhbHVlcyA9IHt9CiAgICAgICAgIHNlbGYuZ3JvdXBfbWV0
YWRhdGEgPSBncm91cF9tZXRhZGF0YQogICAgICAgICBzZWxmLmRlYnVnID0gZGVidWcKKyAgICAg
ICAgc2VsZi5kZWJ1Z190ZXN0ID0gZGVidWdfdGVzdAogCiAgICAgICAgIHdpdGggb3Blbihvcy5w
YXRoLmpvaW4oaGVyZSwgInJlZnRlc3QuanMiKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuc2Ny
aXB0ID0gZi5yZWFkKCkKQEAgLTk1NCw3ICsxMDA4LDEyIEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgIGFzc2VydGlvbl9jb3Vu
dCA9IHNlbGYucHJvdG9jb2wuYXNzZXJ0cy5nZXQoKQogICAgICAgICAgICAgaWYgImV4dHJhIiBu
b3QgaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgIHJlc3VsdFsiZXh0cmEiXSA9IHt9Ci0gICAg
ICAgICAgICByZXN1bHRbImV4dHJhIl1bImFzc2VydGlvbl9jb3VudCJdID0gYXNzZXJ0aW9uX2Nv
dW50CisgICAgICAgICAgICBpZiBhc3NlcnRpb25fY291bnQgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgcmVzdWx0WyJleHRyYSJdWyJhc3NlcnRpb25fY291bnQiXSA9IGFzc2VydGlvbl9j
b3VudAorCisgICAgICAgIGlmIHNlbGYuZGVidWdfdGVzdCBhbmQgcmVzdWx0WyJzdGF0dXMiXSBp
biBbIlBBU1MiLCAiRkFJTCIsICJFUlJPUiJdIGFuZCAiZXh0cmEiIGluIHJlc3VsdDoKKyAgICAg
ICAgICAgIHNlbGYucHJvdG9jb2wuYmFzZS5zZXRfd2luZG93KHNlbGYucHJvdG9jb2wuYmFzZS53
aW5kb3dfaGFuZGxlcygpWzBdKQorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5kZWJ1Zy5sb2Fk
X3JlZnRlc3RfYW5hbHl6ZXIodGVzdCwgcmVzdWx0KQogCiAgICAgICAgIHJldHVybiBzZWxmLmNv
bnZlcnRfcmVzdWx0KHRlc3QsIHJlc3VsdCkKIApAQCAtMTAwMSw4ICsxMDYwLDcgQEAgY2xhc3Mg
SW50ZXJuYWxSZWZUZXN0SW1wbGVtZW50YXRpb24oUmVmVGVzdEltcGxlbWVudGF0aW9uKToKICAg
ICAgICAgZGF0YSA9IHsic2NyZWVuc2hvdCI6IHNjcmVlbnNob3QsICJpc1ByaW50Ijogc2VsZi5l
eGVjdXRvci5pc19wcmludH0KICAgICAgICAgaWYgc2VsZi5leGVjdXRvci5ncm91cF9tZXRhZGF0
YSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGRhdGFbInVybENvdW50Il0gPSB7dXJsam9pbihz
ZWxmLmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBdKSwga2V5WzFdKTp2YWx1ZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFk
YXRhLmdldCgidXJsX2NvdW50Iiwge30pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRhLmdldCgidXJs
X2NvdW50Iiwge30pLml0ZW1zKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
dmFsdWUgPiAxfQogICAgICAgICBzZWxmLmNocm9tZV9zY29wZSA9IGNocm9tZV9zY29wZQogICAg
ICAgICBpZiBjaHJvbWVfc2NvcGU6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yc2VsZW5pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vs
ZW5pdW0ucHkKaW5kZXggZmYyNjM1MWY4NGVkLi43ODM5MDNiOWJiZTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZWxlbml1bS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKQEAgLTYsNyArNiw3IEBAIGltcG9ydCB0
aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdXVpZAotZnJv
bSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCitmcm9tIHVybGxpYi5wYXJz
ZSBpbXBvcnQgdXJsam9pbgogCiBmcm9tIC5iYXNlIGltcG9ydCAoQ2FsbGJhY2tIYW5kbGVyLAog
ICAgICAgICAgICAgICAgICAgIFJlZlRlc3RFeGVjdXRvciwKQEAgLTE5LDEwICsxOSwxMCBAQCBm
cm9tIC5wcm90b2NvbCBpbXBvcnQgKEJhc2VQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RvclByb3RvY29s
UGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2tQcm90b2NvbFBhcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgIENvb2tpZXNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIFNlbmRLZXlzUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb25T
ZXF1ZW5jZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdERyaXZlclBy
b3RvY29sUGFydCkKLWZyb20gLi50ZXN0cnVubmVyIGltcG9ydCBTdG9wCiAKIGhlcmUgPSBvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pCiAKQEAgLTE4Myw2ICsxODMsMTUgQEAgY2xhc3MgU2VsZW5p
dW1DbGlja1Byb3RvY29sUGFydChDbGlja1Byb3RvY29sUGFydCk6CiAgICAgICAgIHJldHVybiBl
bGVtZW50LmNsaWNrKCkKIAogCitjbGFzcyBTZWxlbml1bUNvb2tpZXNQcm90b2NvbFBhcnQoQ29v
a2llc1Byb3RvY29sUGFydCk6CisgICAgZGVmIHNldHVwKHNlbGYpOgorICAgICAgICBzZWxmLndl
YmRyaXZlciA9IHNlbGYucGFyZW50LndlYmRyaXZlcgorCisgICAgZGVmIGRlbGV0ZV9hbGxfY29v
a2llcyhzZWxmKToKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiRGVsZXRpbmcgYWxsIGNvb2tp
ZXMiKQorICAgICAgICByZXR1cm4gc2VsZi53ZWJkcml2ZXIuZGVsZXRlX2FsbF9jb29raWVzKCkK
KworCiBjbGFzcyBTZWxlbml1bVNlbmRLZXlzUHJvdG9jb2xQYXJ0KFNlbmRLZXlzUHJvdG9jb2xQ
YXJ0KToKICAgICBkZWYgc2V0dXAoc2VsZik6CiAgICAgICAgIHNlbGYud2ViZHJpdmVyID0gc2Vs
Zi5wYXJlbnQud2ViZHJpdmVyCkBAIC0yMTksNiArMjI4LDcgQEAgY2xhc3MgU2VsZW5pdW1Qcm90
b2NvbChQcm90b2NvbCk6CiAgICAgICAgICAgICAgICAgICBTZWxlbml1bVRlc3RoYXJuZXNzUHJv
dG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgU2VsZW5pdW1TZWxlY3RvclByb3RvY29sUGFy
dCwKICAgICAgICAgICAgICAgICAgIFNlbGVuaXVtQ2xpY2tQcm90b2NvbFBhcnQsCisgICAgICAg
ICAgICAgICAgICBTZWxlbml1bUNvb2tpZXNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAg
ICBTZWxlbml1bVNlbmRLZXlzUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgU2VsZW5p
dW1UZXN0RHJpdmVyUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgU2VsZW5pdW1BY3Rp
b25TZXF1ZW5jZVByb3RvY29sUGFydF0KQEAgLTI2Nyw4ICsyNzcsOSBAQCBjbGFzcyBTZWxlbml1
bVJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucHJvdG9j
b2wuYmFzZS5zZXRfdGltZW91dCh0aW1lb3V0ICsgc2VsZi5leHRyYV90aW1lb3V0KQogICAgICAg
ICBleGNlcHQgZXhjZXB0aW9ucy5FcnJvckluUmVzcG9uc2VFeGNlcHRpb246Ci0gICAgICAgICAg
ICBzZWxmLmxvZ2dlci5lcnJvcigiTG9zdCBXZWJEcml2ZXIgY29ubmVjdGlvbiIpCi0gICAgICAg
ICAgICByZXR1cm4gU3RvcAorICAgICAgICAgICAgbXNnID0gIkxvc3QgV2ViRHJpdmVyIGNvbm5l
Y3Rpb24iCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICBy
ZXR1cm4gKCJJTlRFUk5BTC1FUlJPUiIsIG1zZykKIAogICAgIGRlZiBydW5fZnVuYyhzZWxmKToK
ICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRv
cnNlcnZvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CmluZGV4
IGVmZTkzYWJjNjljNy4uNTk3Yzg3OWNkMTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhl
Y3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVj
dXRvcnNlcnZvLnB5CkBAIC03LDcgKzcsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJl
YWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCi1mcm9tIHNpeCBpbXBvcnQgZW5z
dXJlX3N0ciwgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3N0cgogCiBmcm9tIG1v
enByb2Nlc3MgaW1wb3J0IFByb2Nlc3NIYW5kbGVyCiAKQEAgLTQ4LDcgKzQ4LDcgQEAgZGVmIGJ1
aWxkX3NlcnZvX2NvbW1hbmQodGVzdCwgdGVzdF91cmxfZnVuYywgYnJvd3NlciwgYmluYXJ5LCBw
YXVzZV9hZnRlcl90ZXN0LAogICAgICAgICBhcmdzICs9IFsiLVoiLCBkZWJ1Z19vcHRzXQogICAg
IGZvciBzdHlsZXNoZWV0IGluIGJyb3dzZXIudXNlcl9zdHlsZXNoZWV0czoKICAgICAgICAgYXJn
cyArPSBbIi0tdXNlci1zdHlsZXNoZWV0Iiwgc3R5bGVzaGVldF0KLSAgICBmb3IgcHJlZiwgdmFs
dWUgaW4gaXRlcml0ZW1zKHRlc3QuZW52aXJvbm1lbnQuZ2V0KCdwcmVmcycsIHt9KSk6CisgICAg
Zm9yIHByZWYsIHZhbHVlIGluIHRlc3QuZW52aXJvbm1lbnQuZ2V0KCdwcmVmcycsIHt9KS5pdGVt
cygpOgogICAgICAgICBhcmdzICs9IFsiLS1wcmVmIiwgIiVzPSVzIiAlIChwcmVmLCB2YWx1ZSld
CiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoOgogICAgICAgICBhcmdzICs9IFsi
LS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5CmluZGV4IDJjZDFkYmYz
YWQwNi4uMDM5YmNkMTRlMmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4
ZWN1dG9yc2Vydm9kcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRv
cnNlcnZvZHJpdmVyLnB5CkBAIC0xMCw3ICsxMCw2IEBAIGZyb20gLmJhc2UgaW1wb3J0IChQcm90
b2NvbCwKICAgICAgICAgICAgICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLAogICAgICAgICAg
ICAgICAgICAgIFRpbWVkUnVubmVyLAogICAgICAgICAgICAgICAgICAgIHN0cmlwX3NlcnZlcikK
LWZyb20gLi50ZXN0cnVubmVyIGltcG9ydCBTdG9wCiBmcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBp
bXBvcnQgd2FpdF9mb3Jfc2VydmljZQogCiB3ZWJkcml2ZXIgPSBOb25lCkBAIC0xODQsOCArMTgz
LDkgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNz
RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuc2Vzc2lvbi50aW1lb3V0
cy5zY3JpcHQgPSB0aW1lb3V0CiAgICAgICAgICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91
dAogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZXJyb3IoIkxvc3Qgd2ViZHJpdmVyIGNvbm5lY3Rpb24iKQotICAgICAgICAgICAgICAgIHJl
dHVybiBTdG9wCisgICAgICAgICAgICAgICAgbXNnID0gIkxvc3QgV2ViRHJpdmVyIGNvbm5lY3Rp
b24iCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IobXNnKQorICAgICAgICAgICAg
ICAgIHJldHVybiAoIklOVEVSTkFMLUVSUk9SIiwgbXNnKQogCiAgICAgICAgIHN1Y2Nlc3MsIGRh
dGEgPSBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLmxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9fdGVzdGhhcm5lc3MsCkBAIC0yNzYsOCArMjc2
LDkgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9y
KToKICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb24udGltZW91dHMuc2NyaXB0
ID0gdGltZW91dAogICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAg
ICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9y
KCJMb3N0IHdlYmRyaXZlciBjb25uZWN0aW9uIikKLSAgICAgICAgICAgICAgICByZXR1cm4gU3Rv
cAorICAgICAgICAgICAgICAgIG1zZyA9ICJMb3N0IHdlYmRyaXZlciBjb25uZWN0aW9uIgorICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKG1zZykKKyAgICAgICAgICAgICAgICByZXR1
cm4gKCJJTlRFUk5BTC1FUlJPUiIsIG1zZykKIAogICAgICAgICByZXR1cm4gU2Vydm9XZWJEcml2
ZXJSdW4oc2VsZi5sb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9zY3JlZW5zaG90LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRv
cndlYmRyaXZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIu
cHkKaW5kZXggYmFkNWZkMDcyMjM3Li5hMDRhNTVhNmYwMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9leGVjdXRvcndlYmRyaXZlci5weQpAQCAtNiw3ICs2LDcgQEAgaW1wb3J0IHRocmVh
ZGluZwogaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCi1mcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KK2Zyb20gdXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1wb3J0IChDYWxsYmFja0hhbmRsZXIsCiAgICAg
ICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IsCkBAIC0yMCwxMyArMjAsMTQgQEAgZnJv
bSAucHJvdG9jb2wgaW1wb3J0IChCYXNlUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAg
ICAgICBQcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0b3JQcm90b2NvbFBh
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrUHJvdG9jb2xQYXJ0LAorICAgICAgICAg
ICAgICAgICAgICAgICBDb29raWVzUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAg
ICBTZW5kS2V5c1Byb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uU2Vx
dWVuY2VQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3REcml2ZXJQcm90
b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlVGVzdFJlcG9ydFByb3Rv
Y29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgU2V0UGVybWlzc2lvblByb3RvY29sUGFy
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbEF1dGhlbnRpY2F0b3JQcm90b2NvbFBh
cnQpCi1mcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorICAgICAgICAgICAgICAgICAgICAg
ICBWaXJ0dWFsQXV0aGVudGljYXRvclByb3RvY29sUGFydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRGVidWdQcm90b2NvbFBhcnQpCiAKIGltcG9ydCB3ZWJkcml2ZXIgYXMgY2xpZW50CiBmcm9t
IHdlYmRyaXZlciBpbXBvcnQgZXJyb3IKQEAgLTE5MCw2ICsxOTEsMTUgQEAgY2xhc3MgV2ViRHJp
dmVyQ2xpY2tQcm90b2NvbFBhcnQoQ2xpY2tQcm90b2NvbFBhcnQpOgogICAgICAgICByZXR1cm4g
ZWxlbWVudC5jbGljaygpCiAKIAorY2xhc3MgV2ViRHJpdmVyQ29va2llc1Byb3RvY29sUGFydChD
b29raWVzUHJvdG9jb2xQYXJ0KToKKyAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgIHNlbGYu
d2ViZHJpdmVyID0gc2VsZi5wYXJlbnQud2ViZHJpdmVyCisKKyAgICBkZWYgZGVsZXRlX2FsbF9j
b29raWVzKHNlbGYpOgorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJEZWxldGluZyBhbGwgY29v
a2llcyIpCisgICAgICAgIHJldHVybiBzZWxmLndlYmRyaXZlci5zZW5kX3Nlc3Npb25fY29tbWFu
ZCgiREVMRVRFIiwgImNvb2tpZSIpCisKKwogY2xhc3MgV2ViRHJpdmVyU2VuZEtleXNQcm90b2Nv
bFBhcnQoU2VuZEtleXNQcm90b2NvbFBhcnQpOgogICAgIGRlZiBzZXR1cChzZWxmKToKICAgICAg
ICAgc2VsZi53ZWJkcml2ZXIgPSBzZWxmLnBhcmVudC53ZWJkcml2ZXIKQEAgLTI4MywxNyArMjkz
LDI0IEBAIGNsYXNzIFdlYkRyaXZlclZpcnR1YWxBdXRoZW50aWNhdG9yUHJvdG9jb2xQYXJ0KFZp
cnR1YWxBdXRoZW50aWNhdG9yUHJvdG9jb2xQYXJ0CiAgICAgICAgIHJldHVybiBzZWxmLndlYmRy
aXZlci5zZW5kX3Nlc3Npb25fY29tbWFuZCgiUE9TVCIsICJ3ZWJhdXRobi9hdXRoZW50aWNhdG9y
LyVzL3V2IiAlIGF1dGhlbnRpY2F0b3JfaWQsIHV2KQogCiAKK2NsYXNzIFdlYkRyaXZlckRlYnVn
UHJvdG9jb2xQYXJ0KERlYnVnUHJvdG9jb2xQYXJ0KToKKyAgICBkZWYgbG9hZF9kZXZ0b29scyhz
ZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKwogY2xhc3MgV2Vi
RHJpdmVyUHJvdG9jb2woUHJvdG9jb2wpOgogICAgIGltcGxlbWVudHMgPSBbV2ViRHJpdmVyQmFz
ZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclRlc3RoYXJuZXNzUHJv
dG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyU2VsZWN0b3JQcm90b2NvbFBh
cnQsCiAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJDbGlja1Byb3RvY29sUGFydCwKKyAgICAg
ICAgICAgICAgICAgIFdlYkRyaXZlckNvb2tpZXNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAg
ICAgICBXZWJEcml2ZXJTZW5kS2V5c1Byb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFdl
YkRyaXZlckFjdGlvblNlcXVlbmNlUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgV2Vi
RHJpdmVyVGVzdERyaXZlclByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFdlYkRyaXZl
ckdlbmVyYXRlVGVzdFJlcG9ydFByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFdlYkRy
aXZlclNldFBlcm1pc3Npb25Qcm90b2NvbFBhcnQsCi0gICAgICAgICAgICAgICAgICBXZWJEcml2
ZXJWaXJ0dWFsQXV0aGVudGljYXRvclByb3RvY29sUGFydF0KKyAgICAgICAgICAgICAgICAgIFdl
YkRyaXZlclZpcnR1YWxBdXRoZW50aWNhdG9yUHJvdG9jb2xQYXJ0LAorICAgICAgICAgICAgICAg
ICAgV2ViRHJpdmVyRGVidWdQcm90b2NvbFBhcnRdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
ZXhlY3V0b3IsIGJyb3dzZXIsIGNhcGFiaWxpdGllcywgKiprd2FyZ3MpOgogICAgICAgICBzdXBl
cihXZWJEcml2ZXJQcm90b2NvbCwgc2VsZikuX19pbml0X18oZXhlY3V0b3IsIGJyb3dzZXIpCkBA
IC0zNDQsOCArMzYxLDkgQEAgY2xhc3MgV2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5iYXNlLnNldF90aW1lb3V0KHNlbGYu
dGltZW91dCArIHNlbGYuZXh0cmFfdGltZW91dCkKICAgICAgICAgZXhjZXB0IGNsaWVudC5Vbmtu
b3duRXJyb3JFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiTG9zdCBX
ZWJEcml2ZXIgY29ubmVjdGlvbiIpCi0gICAgICAgICAgICByZXR1cm4gU3RvcAorICAgICAgICAg
ICAgbXNnID0gIkxvc3QgV2ViRHJpdmVyIGNvbm5lY3Rpb24iCisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICByZXR1cm4gKCJJTlRFUk5BTC1FUlJPUiIsIG1z
ZykKIAogICAgIGRlZiBydW5fZnVuYyhzZWxmKToKICAgICAgICAgdHJ5OgpAQCAtNDk3LDcgKzUx
NSw3IEBAIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgog
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywg
dGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9
Tm9uZSwgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLAotICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZv
PU5vbmUsIGNhcGFiaWxpdGllcz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIGRl
YnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX3Rlc3Q9RmFsc2UsICoqa3dh
cmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIi
IgogICAgICAgICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2dlciwKQEAgLTUxMiw2ICs1MzAsNyBAQCBjbGFzcyBXZWJE
cml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgc2VsZi5pbXBs
ZW1lbnRhdGlvbiA9IFJlZlRlc3RJbXBsZW1lbnRhdGlvbihzZWxmKQogICAgICAgICBzZWxmLmNs
b3NlX2FmdGVyX2RvbmUgPSBjbG9zZV9hZnRlcl9kb25lCiAgICAgICAgIHNlbGYuaGFzX3dpbmRv
dyA9IEZhbHNlCisgICAgICAgIHNlbGYuZGVidWdfdGVzdCA9IGRlYnVnX3Rlc3QKIAogICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhlcmUsICJ0ZXN0LXdhaXQuanMiKSkgYXMgZjoKICAg
ICAgICAgICAgIHNlbGYud2FpdF9zY3JpcHQgPSBmLnJlYWQoKSAlIHsiY2xhc3NuYW1lIjogInJl
ZnRlc3Qtd2FpdCJ9CkBAIC01MzYsNiArNTU1LDkgQEAgY2xhc3MgV2ViRHJpdmVyUmVmVGVzdEV4
ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKICAgICAgICAgcmVzdWx0ID0gc2VsZi5pbXBsZW1l
bnRhdGlvbi5ydW5fdGVzdCh0ZXN0KQogCisgICAgICAgIGlmIHNlbGYuZGVidWdfdGVzdCBhbmQg
cmVzdWx0WyJzdGF0dXMiXSBpbiBbIlBBU1MiLCAiRkFJTCIsICJFUlJPUiJdIGFuZCAiZXh0cmEi
IGluIHJlc3VsdDoKKyAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuZGVidWcubG9hZF9yZWZ0ZXN0
X2FuYWx5emVyKHRlc3QsIHJlc3VsdCkKKwogICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jl
c3VsdCh0ZXN0LCByZXN1bHQpCiAKICAgICBkZWYgc2NyZWVuc2hvdChzZWxmLCB0ZXN0LCB2aWV3
cG9ydF9zaXplLCBkcGksIHBhZ2VfcmFuZ2VzKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5
CmluZGV4IGJkNzY4YjEwNzNjNy4uYWIxNmIwZWZkMGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHJv
dG9jb2wucHkKQEAgLTI4MSw2ICsyODEsMTggQEAgY2xhc3MgQ2xpY2tQcm90b2NvbFBhcnQoUHJv
dG9jb2xQYXJ0KToKICAgICAgICAgcGFzcwogCiAKK2NsYXNzIENvb2tpZXNQcm90b2NvbFBhcnQo
UHJvdG9jb2xQYXJ0KToKKyAgICAiIiJQcm90b2NvbCBwYXJ0IGZvciBtYW5hZ2luZyBjb29raWVz
IiIiCisgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKKworICAgIG5hbWUgPSAiY29va2llcyIK
KworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBkZWxldGVfYWxsX2Nvb2tpZXMoc2VsZik6
CisgICAgICAgICIiIkRlbGV0ZSBhbGwgY29va2llcy4iIiIKKyAgICAgICAgcGFzcworCisKIGNs
YXNzIFNlbmRLZXlzUHJvdG9jb2xQYXJ0KFByb3RvY29sUGFydCk6CiAgICAgIiIiUHJvdG9jb2wg
cGFydCBmb3IgcGVyZm9ybWluZyB0cnVzdGVkIGNsaWNrcyIiIgogICAgIF9fbWV0YWNsYXNzX18g
PSBBQkNNZXRhCkBAIC01MDMsMyArNTE1LDMyIEBAIGNsYXNzIFByaW50UHJvdG9jb2xQYXJ0KFBy
b3RvY29sUGFydCk6CiAgICAgZGVmIHJlbmRlcl9hc19wZGYoc2VsZiwgd2lkdGgsIGhlaWdodCk6
CiAgICAgICAgICIiIk91dHB1dCBkb2N1bWVudCBhcyBQREYiIiIKICAgICAgICAgcGFzcworCisK
K2NsYXNzIERlYnVnUHJvdG9jb2xQYXJ0KFByb3RvY29sUGFydCk6CisgICAgIiIiUHJvdG9jb2wg
cGFydCBmb3IgZGVidWdnaW5nIHRlc3QgZmFpbHVyZXMuIiIiCisgICAgX19tZXRhY2xhc3NfXyA9
IEFCQ01ldGEKKworICAgIG5hbWUgPSAiZGVidWciCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAg
ICBkZWYgbG9hZF9kZXZ0b29scyhzZWxmKToKKyAgICAgICAgIiIiTG9hZCBkZXZ0b29scyBpbiB0
aGUgY3VycmVudCB3aW5kb3ciIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIGxvYWRfcmVmdGVz
dF9hbmFseXplcihzZWxmLCB0ZXN0LCByZXN1bHQpOgorICAgICAgICBpbXBvcnQgaW8KKyAgICAg
ICAgaW1wb3J0IG1vemxvZworICAgICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGUs
IHVybGpvaW4KKworICAgICAgICBkZWJ1Z190ZXN0X2xvZ2dlciA9IG1vemxvZy5zdHJ1Y3R1cmVk
bG9nLlN0cnVjdHVyZWRMb2dnZXIoImRlYnVnX3Rlc3QiKQorICAgICAgICBvdXRwdXQgPSBpby5T
dHJpbmdJTygpCisgICAgICAgIGRlYnVnX3Rlc3RfbG9nZ2VyLnN1aXRlX3N0YXJ0KFtdKQorICAg
ICAgICBkZWJ1Z190ZXN0X2xvZ2dlci5hZGRfaGFuZGxlcihtb3psb2cuaGFuZGxlcnMuU3RyZWFt
SGFuZGxlcihvdXRwdXQsIGZvcm1hdHRlcj1tb3psb2cuZm9ybWF0dGVycy5UYnBsRm9ybWF0dGVy
KCkpKQorICAgICAgICBkZWJ1Z190ZXN0X2xvZ2dlci50ZXN0X3N0YXJ0KHRlc3QuaWQpCisgICAg
ICAgICMgQWx3YXlzIHVzZSBQQVNTIGFzIHRoZSBleHBlY3RlZCB2YWx1ZSBzbyB3ZSBnZXQgb3V0
cHV0IGV2ZW4gZm9yIGV4cGVjdGVkIGZhaWx1cmVzCisgICAgICAgIGRlYnVnX3Rlc3RfbG9nZ2Vy
LnRlc3RfZW5kKHRlc3QuaWQsIHJlc3VsdFsic3RhdHVzIl0sICJQQVNTIiwgZXh0cmE9cmVzdWx0
LmdldCgiZXh0cmEiKSkKKworICAgICAgICBzZWxmLnBhcmVudC5iYXNlLmxvYWQodXJsam9pbihz
ZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKCJodHRwcyIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi9jb21tb24vdGhpcmRfcGFydHkvcmVmdGVzdC1hbmFseXplci54aHRt
bCNsb2c9JXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZShvdXRwdXQu
Z2V0dmFsdWUoKSkpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3Ry
dW5uZXIvcnVubmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVu
bmVyLnB5CmluZGV4IDNkMzI5MTc2NTliMy4uMTEzZWZmOTlmZWU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVubmVyLnB5CkBAIC0yNCw3ICsyNCw3IEBAIGRl
ZiBkb19kZWxheWVkX2ltcG9ydHMoKToKICAgICBpbXBvcnQgcHl0ZXN0CiAKIAotZGVmIHJ1bihw
YXRoLCBzZXJ2ZXJfY29uZmlnLCBzZXNzaW9uX2NvbmZpZywgdGltZW91dD0wKToKK2RlZiBydW4o
cGF0aCwgc2VydmVyX2NvbmZpZywgc2Vzc2lvbl9jb25maWcsIHRpbWVvdXQ9MCwgZW52aXJvbj1O
b25lKToKICAgICAiIiIKICAgICBSdW4gUHl0aG9uIHRlc3QgYXQgYGBwYXRoYGAgaW4gcHl0ZXN0
LiAgVGhlIHByb3ZpZGVkIGBgc2Vzc2lvbmBgCiAgICAgaXMgZXhwb3NlZCBhcyBhIGZpeHR1cmUg
YXZhaWxhYmxlIGluIHRoZSBzY29wZSBvZiB0aGUgdGVzdCBmdW5jdGlvbnMuCkBAIC00MSwyOCAr
NDEsMzUgQEAgZGVmIHJ1bihwYXRoLCBzZXJ2ZXJfY29uZmlnLCBzZXNzaW9uX2NvbmZpZywgdGlt
ZW91dD0wKToKICAgICBpZiBweXRlc3QgaXMgTm9uZToKICAgICAgICAgZG9fZGVsYXllZF9pbXBv
cnRzKCkKIAotICAgIG9zLmVudmlyb25bIldEX0hPU1QiXSA9IHNlc3Npb25fY29uZmlnWyJob3N0
Il0KLSAgICBvcy5lbnZpcm9uWyJXRF9QT1JUIl0gPSBzdHIoc2Vzc2lvbl9jb25maWdbInBvcnQi
XSkKLSAgICBvcy5lbnZpcm9uWyJXRF9DQVBBQklMSVRJRVMiXSA9IGpzb24uZHVtcHMoc2Vzc2lv
bl9jb25maWdbImNhcGFiaWxpdGllcyJdKQotICAgIG9zLmVudmlyb25bIldEX1NFUlZFUl9DT05G
SUciXSA9IGpzb24uZHVtcHMoc2VydmVyX2NvbmZpZy5hc19kaWN0X2Zvcl93ZF9lbnZfdmFyaWFi
bGUoKSkKLQotICAgIGhhcm5lc3MgPSBIYXJuZXNzUmVzdWx0UmVjb3JkZXIoKQotICAgIHN1YnRl
c3RzID0gU3VidGVzdFJlc3VsdFJlY29yZGVyKCkKLQotICAgIHdpdGggVGVtcG9yYXJ5RGlyZWN0
b3J5KCkgYXMgY2FjaGU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHB5dGVzdC5tYWluKFsi
LS1zdHJpY3QiLCAgIyB0dXJuIHdhcm5pbmdzIGludG8gZXJyb3JzCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIi12diIsICAjIHNob3cgZWFjaCBpbmRpdmlkdWFsIHN1YnRlc3QgYW5kIGZ1bGwg
ZmFpbHVyZSBsb2dzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi0tY2FwdHVyZSIsICJubyIs
ICAjIGVuYWJsZSBzdGRvdXQvc3RkZXJyIGZyb20gdGVzdHMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiLS1iYXNldGVtcCIsIGNhY2hlLCAgIyB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgIi0tc2hvd2xvY2FscyIsICAjIGRpc3BsYXkgY29udGVudHMgb2Yg
dmFyaWFibGVzIGluIGxvY2FsIHNjb3BlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi1wIiwg
Im5vOm1vemxvZyIsICAjIHVzZSB0aGUgV1BUIHJlc3VsdCByZWNvcmRlcgotICAgICAgICAgICAg
ICAgICAgICAgICAgICItcCIsICJubzpjYWNoZXByb3ZpZGVyIiwgICMgZGlzYWJsZSBzdGF0ZSBw
cmVzZXJ2YXRpb24gYWNyb3NzIGludm9jYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Ii1vPWNvbnNvbGVfb3V0cHV0X3N0eWxlPWNsYXNzaWMiLCAgIyBkaXNhYmxlIHRlc3QgcHJvZ3Jl
c3MgYmFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwbHVnaW5zPVtoYXJuZXNzLCBzdWJ0ZXN0c10pCi0gICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgIGhhcm5lc3Mub3V0Y29tZSA9ICgiSU5URVJOQUwtRVJS
T1IiLCBzdHIoZSkpCisgICAgb2xkX2Vudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgIHRy
eToKKyAgICAgICAgb3MuZW52aXJvblsiV0RfSE9TVCJdID0gc2Vzc2lvbl9jb25maWdbImhvc3Qi
XQorICAgICAgICBvcy5lbnZpcm9uWyJXRF9QT1JUIl0gPSBzdHIoc2Vzc2lvbl9jb25maWdbInBv
cnQiXSkKKyAgICAgICAgb3MuZW52aXJvblsiV0RfQ0FQQUJJTElUSUVTIl0gPSBqc29uLmR1bXBz
KHNlc3Npb25fY29uZmlnWyJjYXBhYmlsaXRpZXMiXSkKKyAgICAgICAgb3MuZW52aXJvblsiV0Rf
U0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhzZXJ2ZXJfY29uZmlnLmFzX2RpY3RfZm9yX3dk
X2Vudl92YXJpYWJsZSgpKQorICAgICAgICBpZiBlbnZpcm9uOgorICAgICAgICAgICAgb3MuZW52
aXJvbi51cGRhdGUoZW52aXJvbikKKworICAgICAgICBoYXJuZXNzID0gSGFybmVzc1Jlc3VsdFJl
Y29yZGVyKCkKKyAgICAgICAgc3VidGVzdHMgPSBTdWJ0ZXN0UmVzdWx0UmVjb3JkZXIoKQorCisg
ICAgICAgIHdpdGggVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgY2FjaGU6CisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgcHl0ZXN0Lm1haW4oWyItLXN0cmljdCIsICAjIHR1cm4gd2Fy
bmluZ3MgaW50byBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi12diIsICAj
IHNob3cgZWFjaCBpbmRpdmlkdWFsIHN1YnRlc3QgYW5kIGZ1bGwgZmFpbHVyZSBsb2dzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICItLWNhcHR1cmUiLCAibm8iLCAgIyBlbmFibGUgc3Rk
b3V0L3N0ZGVyciBmcm9tIHRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWJh
c2V0ZW1wIiwgY2FjaGUsICAjIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tc2hvd2xvY2FscyIsICAjIGRpc3BsYXkgY29udGVudHMgb2YgdmFyaWFi
bGVzIGluIGxvY2FsIHNjb3BlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcCIsICJu
bzptb3psb2ciLCAgIyB1c2UgdGhlIFdQVCByZXN1bHQgcmVjb3JkZXIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi1wIiwgIm5vOmNhY2hlcHJvdmlkZXIiLCAgIyBkaXNhYmxlIHN0YXRl
IHByZXNlcnZhdGlvbiBhY3Jvc3MgaW52b2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi1vPWNvbnNvbGVfb3V0cHV0X3N0eWxlPWNsYXNzaWMiLCAgIyBkaXNhYmxlIHRlc3Qg
cHJvZ3Jlc3MgYmFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM9W2hhcm5lc3MsIHN1YnRlc3RzXSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBoYXJuZXNzLm91
dGNvbWUgPSAoIklOVEVSTkFMLUVSUk9SIiwgc3RyKGUpKQorCisgICAgZmluYWxseToKKyAgICAg
ICAgb3MuZW52aXJvbiA9IG9sZF9lbnZpcm9uCiAKICAgICByZXR1cm4gKGhhcm5lc3Mub3V0Y29t
ZSwgc3VidGVzdHMucmVzdWx0cykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9weXRlc3RydW5uZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5
dGVzdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODkxZGYwYTIzYzU5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9w
eXRlc3RydW5uZXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZlZjg1MDZjMjgwMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9hY3Rpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9leGVjdXRvcmNocm9tZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3JlZGdlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2VjaHJv
bWl1bS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JpbnRlcm5ldGV4cGxvcmVy
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcm1hcmlvbmV0dGUucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yb3BlcmEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2V4ZWN1dG9yc2FmYXJpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNl
bGVuaXVtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcndlYmRyaXZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3J3ZWJraXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb2Nlc3MucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9yZWZ0ZXN0LmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9ydW5uZXIuanMKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVz
dGhhcm5lc3Nfc2Vydm9kcml2ZXIuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJu
ZXNzX3dlYmRyaXZlcl9yZXN1bWUuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3dpbmRvdy1s
b2FkZWQuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5CmluZGV4IDc1MjFmMjViMTM0NC4uNzZhZGU5NWYwN2Y3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leHBlY3RlZHRyZWUucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIG1hdGggaW1wb3J0IGxv
ZwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLWZyb20gc2l4IGltcG9ydCBp
dGVyaXRlbXMsIGl0ZXJ2YWx1ZXMKIAogY2xhc3MgTm9kZShvYmplY3QpOgogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwcm9wLCB2YWx1ZSk6CkBAIC0zNCw3ICszMyw3IEBAIGRlZiBlbnRyb3B5KHJl
c3VsdHMpOgogCiAgICAgcmVzdWx0X2NvdW50cyA9IGRlZmF1bHRkaWN0KGludCkKICAgICB0b3Rh
bCA9IGZsb2F0KGxlbihyZXN1bHRzKSkKLSAgICBmb3IgdmFsdWVzIGluIGl0ZXJ2YWx1ZXMocmVz
dWx0cyk6CisgICAgZm9yIHZhbHVlcyBpbiByZXN1bHRzLnZhbHVlcygpOgogICAgICAgICAjIE5v
dCBzdXJlIHRoaXMgaXMgcmlnaHQsIHBvc3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFs
dWVzIGFzCiAgICAgICAgICMgZGlzdGluY3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1
ZT8KICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKQEAgLTQyLDcgKzQxLDcgQEAgZGVmIGVu
dHJvcHkocmVzdWx0cyk6CiAKICAgICBlbnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBp
biBpdGVydmFsdWVzKHJlc3VsdF9jb3VudHMpOgorICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291
bnRzLnZhbHVlcygpOgogICAgICAgICBwcm9wID0gZmxvYXQoY291bnQpIC8gdG90YWwKICAgICAg
ICAgZW50cm9weV9zdW0gLT0gcHJvcCAqIGxvZyhwcm9wLCAyKQogCkBAIC01Myw3ICs1Miw3IEBA
IGRlZiBzcGxpdF9yZXN1bHRzKHByb3AsIHJlc3VsdHMpOgogICAgICIiIlNwbGl0IGEgZGljdGlv
bmFyeSBvZiByZXN1bHRzIGludG8gYSBkaWN0aW9uYXJ5IG9mIGRpY3Rpb25hcmllcyB3aGVyZQog
ICAgIGVhY2ggc3ViLWRpY3Rpb25hcnkgaGFzIGEgc3BlY2lmaWMgdmFsdWUgb2YgdGhlIGdpdmVu
IHByb3BlcnR5IiIiCiAgICAgYnlfcHJvcCA9IGRlZmF1bHRkaWN0KGRpY3QpCi0gICAgZm9yIHJ1
bl9pbmZvLCB2YWx1ZSBpbiBpdGVyaXRlbXMocmVzdWx0cyk6CisgICAgZm9yIHJ1bl9pbmZvLCB2
YWx1ZSBpbiByZXN1bHRzLml0ZW1zKCk6CiAgICAgICAgIGJ5X3Byb3BbcnVuX2luZm9bcHJvcF1d
W3J1bl9pbmZvXSA9IHZhbHVlCiAKICAgICByZXR1cm4gYnlfcHJvcApAQCAtNzgsMTMgKzc3LDEz
IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywg
dHJlZT1Ob25lKToKICAgICBwcm9wX2luZGV4ID0ge3Byb3A6IGkgZm9yIGksIHByb3AgaW4gZW51
bWVyYXRlKHByb3BlcnRpZXMpfQogCiAgICAgYWxsX3Jlc3VsdHMgPSBkZWZhdWx0ZGljdChpbnQp
Ci0gICAgZm9yIHJlc3VsdF92YWx1ZXMgaW4gaXRlcnZhbHVlcyhyZXN1bHRzKToKLSAgICAgICAg
Zm9yIHJlc3VsdF92YWx1ZSwgY291bnQgaW4gaXRlcml0ZW1zKHJlc3VsdF92YWx1ZXMpOgorICAg
IGZvciByZXN1bHRfdmFsdWVzIGluIHJlc3VsdHMudmFsdWVzKCk6CisgICAgICAgIGZvciByZXN1
bHRfdmFsdWUsIGNvdW50IGluIHJlc3VsdF92YWx1ZXMuaXRlbXMoKToKICAgICAgICAgICAgIGFs
bF9yZXN1bHRzW3Jlc3VsdF92YWx1ZV0gKz0gY291bnQKIAogICAgICMgSWYgdGhlcmUgaXMgb25s
eSBvbmUgcmVzdWx0IHdlIGFyZSBkb25lCiAgICAgaWYgbm90IHByb3BlcnRpZXMgb3IgbGVuKGFs
bF9yZXN1bHRzKSA9PSAxOgotICAgICAgICBmb3IgdmFsdWUsIGNvdW50IGluIGl0ZXJpdGVtcyhh
bGxfcmVzdWx0cyk6CisgICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gYWxsX3Jlc3VsdHMuaXRl
bXMoKToKICAgICAgICAgICAgIHRyZWUucmVzdWx0X3ZhbHVlc1t2YWx1ZV0gKz0gY291bnQKICAg
ICAgICAgdHJlZS5ydW5faW5mbyB8PSBzZXQocmVzdWx0cy5rZXlzKCkpCiAgICAgICAgIHJldHVy
biB0cmVlCkBAIC0xMDAsNyArOTksNyBAQCBkZWYgYnVpbGRfdHJlZShwcm9wZXJ0aWVzLCBkZXBl
bmRlbnRfcHJvcHMsIHJlc3VsdHMsIHRyZWU9Tm9uZSk6CiAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICBuZXdfZW50cm9weSA9IDAuCiAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5ID0g
W10KLSAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gaXRlcml0ZW1zKHJlc3Vs
dF9zZXRzKToKKyAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gcmVzdWx0X3Nl
dHMuaXRlbXMoKToKICAgICAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5LmFwcGVuZCgoZW50
cm9weShyZXN1bHRfc2V0KSwgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCkpCiAgICAgICAgICAgICBu
ZXdfZW50cm9weSArPSAoZmxvYXQobGVuKHJlc3VsdF9zZXQpKSAvIGxlbihyZXN1bHRzKSkgKiBy
ZXN1bHRzX3NldHNfZW50cm9weVstMV1bMF0KIApAQCAtMTEwLDcgKzEwOSw3IEBAIGRlZiBidWls
ZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToK
IAogICAgICMgSW4gdGhlIGNhc2UgdGhhdCBubyBwcm9wZXJ0aWVzIHBhcnRpdGlvbiB0aGUgc3Bh
Y2UKICAgICBpZiBub3QgcmVzdWx0c19wYXJ0aXRpb25zOgotICAgICAgICBmb3IgdmFsdWUsIGNv
dW50IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CisgICAgICAgIGZvciB2YWx1ZSwgY291bnQg
aW4gYWxsX3Jlc3VsdHMuaXRlbXMoKToKICAgICAgICAgICAgIHRyZWUucmVzdWx0X3ZhbHVlc1t2
YWx1ZV0gKz0gY291bnQKICAgICAgICAgdHJlZS5ydW5faW5mbyB8PSBzZXQocmVzdWx0cy5rZXlz
KCkpCiAgICAgICAgIHJldHVybiB0cmVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CmluZGV4IDkxMDM1OGY1MTU5Ni4uOTdkNzRkYTRlNDAz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9u
dC5weQpAQCAtODAsMTAgKzgwLDEwIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAg
ICAgICAgZm9udHMgPSBjaGVja19vdXRwdXQoWycvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyJywg
Jy14bWwnLCAnU1BGb250c0RhdGFUeXBlJ10pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMg
aWYgcHkzCi0gICAgICAgICAgICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxp
c3RGcm9tQnl0ZXMKKyAgICAgICAgICAgIGxvYWRfcGxpc3QgPSBwbGlzdGxpYi5sb2FkcwogICAg
ICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByZWFkUGxpc3RGcm9tQnl0
ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tU3RyaW5nCi0gICAgICAgIGZvbnRzID0gcmVhZFBs
aXN0RnJvbUJ5dGVzKGZvbnRzKQorICAgICAgICAgICAgbG9hZF9wbGlzdCA9IHBsaXN0bGliLnJl
YWRQbGlzdEZyb21TdHJpbmcKKyAgICAgICAgZm9udHMgPSBsb2FkX3BsaXN0KGZvbnRzKQogICAg
ICAgICBhc3NlcnQgbGVuKGZvbnRzKSA9PSAxCiAgICAgICAgIGZvciBmb250IGluIGZvbnRzWzBd
WydfaXRlbXMnXToKICAgICAgICAgICAgIGlmIGZvbnRbJ3BhdGgnXSA9PSBpbnN0YWxsZWRfZm9u
dF9wYXRoOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUu
LmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvX19pbml0
X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvX19pbml0X18ucHkKQEAgLTEgKzAs
MCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBk
aXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Zm9ybWF0dGVycy9jaHJvbWl1bS5weQppbmRleCBjZWYwMWM0ZmZjNWQuLmFlOGQ5NmExMTcwYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQg
anNvbgogaW1wb3J0IHRpbWUKLWltcG9ydCBzaXgKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
ZGVmYXVsdGRpY3QKIGZyb20gbW96bG9nLmZvcm1hdHRlcnMgaW1wb3J0IGJhc2UKQEAgLTMxLDQ4
ICszMCw1NSBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgog
ICAgICAgICAjIHRoZSB0cmllIGFuZCB0aGUgbGVhZiBjb250YWlucyB0aGUgZGljdCBvZiBwZXIt
dGVzdCBkYXRhLgogICAgICAgICBzZWxmLnRlc3RzID0ge30KIAotICAgICAgICAjIE1lc3NhZ2Ug
ZGljdGlvbmFyeSwga2V5ZWQgYnkgdGVzdCBuYW1lLiBWYWx1ZSBpcyBhIGxpc3Qgb2Ygc3RyaW5n
czoKLSAgICAgICAgIyBzZWUgX2FwcGVuZF90ZXN0X21lc3NhZ2UgZm9yIHRoZSBmb3JtYXQuCisg
ICAgICAgICMgVHdvIGRpY3Rpb25hcmllcyBrZXllZCBieSB0ZXN0IG5hbWUuIFZhbHVlcyBhcmUg
bGlzdHMgb2Ygc3RyaW5nczoKKyAgICAgICAgIyBhY3R1YWwgbWV0YWRhdGEgY29udGVudCBhbmQg
b3RoZXIgbWVzc2FnZXMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgIyBTZWUgX2FwcGVuZF90ZXN0
X21lc3NhZ2UgZm9yIGV4YW1wbGVzLgorICAgICAgICBzZWxmLmFjdHVhbF9tZXRhZGF0YSA9IGRl
ZmF1bHRkaWN0KGxpc3QpCiAgICAgICAgIHNlbGYubWVzc2FnZXMgPSBkZWZhdWx0ZGljdChsaXN0
KQogCiAgICAgICAgICMgTGlzdCBvZiB0ZXN0cyB0aGF0IGhhdmUgZmFpbGluZyBzdWJ0ZXN0cy4K
ICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMgPSBzZXQoKQogCiAgICAgICAg
ICMgQnJvd3NlciBsb2cgZm9yIHRoZSBjdXJyZW50IHRlc3QgdW5kZXIgZXhlY3V0aW9uLgotICAg
ICAgICBzZWxmLnRlc3RfbG9nID0gW10KKyAgICAgICAgIyBUaGVzZSBsb2dzIGFyZSBmcm9tIENo
cm9tZURyaXZlcidzIHN0ZG91dC9lcnIsIHNvIHdlIGNhbm5vdCBzYXkgZm9yCisgICAgICAgICMg
c3VyZSB3aGljaCB0ZXN0IGEgbWVzc2FnZSBpcyBmcm9tLCBidXQgaW5zdGVhZCB3ZSBjb3JyZWxh
dGUgdGhlbSBiYXNlZAorICAgICAgICAjIG9uIHRpbWluZy4KKyAgICAgICAgc2VsZi5icm93c2Vy
X2xvZyA9IFtdCiAKICAgICBkZWYgX2FwcGVuZF90ZXN0X21lc3NhZ2Uoc2VsZiwgdGVzdCwgc3Vi
dGVzdCwgd3B0X2FjdHVhbF9zdGF0dXMsIG1lc3NhZ2UpOgotICAgICAgICAiIiIKKyAgICAgICAg
ciIiIgogICAgICAgICBBcHBlbmRzIHRoZSBtZXNzYWdlIGRhdGEgZm9yIGEgdGVzdCBvciBzdWJ0
ZXN0LgorCiAgICAgICAgIDpwYXJhbSBzdHIgdGVzdDogdGhlIG5hbWUgb2YgdGhlIHRlc3QKICAg
ICAgICAgOnBhcmFtIHN0ciBzdWJ0ZXN0OiB0aGUgbmFtZSBvZiB0aGUgc3VidGVzdCB3aXRoIHRo
ZSBtZXNzYWdlLiBXaWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0
aGlzIGlzIGNhbGxlZCBmb3IgYSB0ZXN0LgogICAgICAgICA6cGFyYW0gc3RyIHdwdF9hY3R1YWxf
c3RhdHVzOiB0aGUgdGVzdCBzdGF0dXMgYXMgcmVwb3J0ZWQgYnkgV1BUCiAgICAgICAgIDpwYXJh
bSBzdHIgbWVzc2FnZTogdGhlIHN0cmluZyB0byBhcHBlbmQgdG8gdGhlIG1lc3NhZ2UgZm9yIHRo
aXMgdGVzdAogCi0gICAgICAgIEV4YW1wbGU6Ci0gICAgICAgICAgW3Rlc3Rfb3Jfc3VidGVzdF9u
YW1lXQotICAgICAgICAgICAgZXhwZWN0ZWQ6IEZBSUwKLSAgICAgICAgICAgIG1lc3NhZ2U6IHNv
bWUgdGVzdCBtZXNzYWdlIGVnIGFzc2VydCBmYWlsdXJlCisgICAgICAgIEV4YW1wbGUgYWN0dWFs
X21ldGFkYXRhIG9mIGEgdGVzdCB3aXRoIGEgc3VidGVzdDoKKyAgICAgICAgICAgICJbdGVzdF9u
YW1lXVxuICBleHBlY3RlZDogT0tcbiIKKyAgICAgICAgICAgICIgIFtzdWJ0ZXN0X25hbWVdXG4g
ICAgZXhwZWN0ZWQ6IEZBSUxcbiIKKworICAgICAgICBOT1RFOiB0aHJvdWdob3V0IHRoaXMgZnVu
Y3Rpb24gd2Ugb3V0cHV0IGEga2V5IGNhbGxlZCAiZXhwZWN0ZWQiIGJ1dAorICAgICAgICBmaWxs
IGl0IGluIHdpdGggdGhlIGFjdHVhbCBzdGF0dXMuIFRoaXMgaXMgYnkgZGVzaWduLiBUaGUgZ29h
bCBvZiB0aGlzCisgICAgICAgIG91dHB1dCBpcyB0byBsb29rIGV4YWN0bHkgbGlrZSBXUFQncyBl
eHBlY3RhdGlvbiBtZXRhZGF0YSBzbyB0aGF0IGl0CisgICAgICAgIGNhbiBiZSBlYXNpbHkgZGlm
Zi1lZC4KKworICAgICAgICBNZXNzYWdlcyBhcmUgYXBwZW5kZWQgdmVyYmF0aW0gdG8gc2VsZi5t
ZXNzYWdlc1t0ZXN0XS4KICAgICAgICAgIiIiCi0gICAgICAgICMgTk9URTogdGhyb3VnaG91dCB0
aGlzIGZ1bmN0aW9uIHdlIG91dHB1dCBhIGtleSBjYWxsZWQgImV4cGVjdGVkIiBidXQKLSAgICAg
ICAgIyBmaWxsIGl0IGluIHdpdGggdGhlIGFjdHVhbCBzdGF0dXMuIFRoaXMgaXMgYnkgZGVzaWdu
LiBUaGUgZ29hbCBvZiB0aGlzCi0gICAgICAgICMgb3V0cHV0IGlzIHRvIGxvb2sgZXhhY3RseSBs
aWtlIFdQVCdzIGV4cGVjdGF0aW9uIG1ldGFkYXRhIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4g
YmUgZWFzaWx5IGRpZmYtZWQuCiAgICAgICAgIGlmIHN1YnRlc3Q6CiAgICAgICAgICAgICByZXN1
bHQgPSAiICBbJXNdXG4gICAgZXhwZWN0ZWQ6ICVzXG4iICUgKHN1YnRlc3QsIHdwdF9hY3R1YWxf
c3RhdHVzKQorICAgICAgICAgICAgc2VsZi5hY3R1YWxfbWV0YWRhdGFbdGVzdF0uYXBwZW5kKHJl
c3VsdCkKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9
ICIgICAgbWVzc2FnZTogJXNcbiIgJSBtZXNzYWdlCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2Vz
W3Rlc3RdLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0
XS5hcHBlbmQoIiVzOiAlc1xuIiAlIChzdWJ0ZXN0LCBtZXNzYWdlKSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICMgTm8gc3VidGVzdCwgc28gdGhpcyBpcyB0aGUgdG9wLWxldmVsIHRlc3Qu
IFRoZSByZXN1bHQgbXVzdCBiZQotICAgICAgICAgICAgIyBwcmVwZW5kZWQgdG8gdGhlIGxpc3Qg
b2YgbWVzc2FnZXMsIHNvIHRoYXQgdGhlIG1lc3NhZ2UgZm9yIHRoZQotICAgICAgICAgICAgIyB0
ZXN0IGNvbWVzIGJlZm9yZSBhbnkgc3VidGVzdCBtZXNzYWdlcy4KKyAgICAgICAgICAgICMgcHJl
cGVuZGVkIHRvIHRoZSBsaXN0LCBzbyB0aGF0IGl0IGNvbWVzIGJlZm9yZSBhbnkgc3VidGVzdC4K
ICAgICAgICAgICAgIHRlc3RfbmFtZV9sYXN0X3BhcnQgPSB0ZXN0LnNwbGl0KCIvIilbLTFdCiAg
ICAgICAgICAgICByZXN1bHQgPSAiWyVzXVxuICBleHBlY3RlZDogJXNcbiIgJSAodGVzdF9uYW1l
X2xhc3RfcGFydCwgd3B0X2FjdHVhbF9zdGF0dXMpCisgICAgICAgICAgICBzZWxmLmFjdHVhbF9t
ZXRhZGF0YVt0ZXN0XS5pbnNlcnQoMCwgcmVzdWx0KQogICAgICAgICAgICAgaWYgbWVzc2FnZToK
LSAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiAgbWVzc2FnZTogJXNcbiIgJSBtZXNzYWdlCi0g
ICAgICAgICAgICBzZWxmLm1lc3NhZ2VzW3Rlc3RdLmluc2VydCgwLCByZXN1bHQpCisgICAgICAg
ICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0XS5pbnNlcnQoMCwgIkhhcm5lc3M6ICVzXG4iICUg
bWVzc2FnZSkKIAogICAgIGRlZiBfYXBwZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0LCBhcnRp
ZmFjdF9uYW1lLCBhcnRpZmFjdF92YWx1ZSk6CiAgICAgICAgICIiIgpAQCAtODEsMTggKzg3LDIx
IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZvcm1hdHRlcik6CiAgICAgICAg
IDpwYXJhbSBzdHIgYXJ0aWZhY3RfbmFtZTogdGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0CiAgICAg
ICAgIDpwYXJhbSBzdHIgYXJ0aWZhY3RfdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgYXJ0aWZhY3QK
ICAgICAgICAgIiIiCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFydGlmYWN0X3ZhbHVlLCBz
aXguc3RyaW5nX3R5cGVzKSwgImFydGlmYWN0X3ZhbHVlIG11c3QgYmUgYSBzdHIiCisgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKGFydGlmYWN0X3ZhbHVlLCBzdHIpLCAiYXJ0aWZhY3RfdmFsdWUg
bXVzdCBiZSBhIHN0ciIKICAgICAgICAgaWYgImFydGlmYWN0cyIgbm90IGluIGN1cl9kaWN0Lmtl
eXMoKToKICAgICAgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXSA9IGRlZmF1bHRkaWN0KGxp
c3QpCiAgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXVthcnRpZmFjdF9uYW1lXS5hcHBlbmQo
YXJ0aWZhY3RfdmFsdWUpCiAKLSAgICBkZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUs
IGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2VzLCB3cHRfYWN0dWFsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VidGVzdF9mYWlsdXJlLCByZWZ0ZXN0X3NjcmVlbnNob3RzKToKKyAgICBk
ZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIGFjdHVh
bF9tZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLCB3cHRfYWN0
dWFsLCBzdWJ0ZXN0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0
X3NjcmVlbnNob3RzPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU3RvcmVzIHRoZSByZXN1
bHQgb2YgYSBzaW5nbGUgdGVzdCBpbiB8c2VsZi50ZXN0c3wKKwogICAgICAgICA6cGFyYW0gc3Ry
IG5hbWU6IG5hbWUgb2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgYWN0dWFsOiBhY3R1
YWwgc3RhdHVzIG9mIHRoZSB0ZXN0LgogICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiBleHBl
Y3RlZCBzdGF0dXNlcyBvZiB0aGUgdGVzdC4KKyAgICAgICAgOnBhcmFtIGxpc3QgYWN0dWFsX21l
dGFkYXRhOiBhIGxpc3Qgb2YgbWV0YWRhdGEgaXRlbXMuCiAgICAgICAgIDpwYXJhbSBsaXN0IG1l
c3NhZ2VzOiBhIGxpc3Qgb2YgdGVzdCBtZXNzYWdlcy4KICAgICAgICAgOnBhcmFtIHN0ciB3cHRf
YWN0dWFsOiBhY3R1YWwgc3RhdHVzIHJlcG9ydGVkIGJ5IHdwdCwgbWF5IGRpZmZlciBmcm9tIHxh
Y3R1YWx8LgogICAgICAgICA6cGFyYW0gYm9vbCBzdWJ0ZXN0X2ZhaWx1cmU6IHdoZXRoZXIgdGhp
cyB0ZXN0IGZhaWxlZCBiZWNhdXNlIG9mIHN1YnRlc3RzLgpAQCAtMTEyLDEwICsxMjEsMTIgQEAg
Y2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgaWYg
d3B0X2FjdHVhbCAhPSBhY3R1YWw6CiAgICAgICAgICAgICBzZWxmLl9hcHBlbmRfYXJ0aWZhY3Qo
Y3VyX2RpY3QsICJ3cHRfYWN0dWFsX3N0YXR1cyIsIHdwdF9hY3R1YWwpCiAgICAgICAgIGlmIHdw
dF9hY3R1YWwgPT0gJ0NSQVNIJzoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYudGVzdF9s
b2c6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmJyb3dzZXJfbG9nOgogICAgICAgICAg
ICAgICAgIHNlbGYuX2FwcGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9jcmFzaF9sb2ciLCBs
aW5lKQorICAgICAgICBmb3IgbWV0YWRhdGEgaW4gYWN0dWFsX21ldGFkYXRhOgorICAgICAgICAg
ICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9tZXRhZGF0YSIs
IG1ldGFkYXRhKQogICAgICAgICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKLSAgICAgICAgICAg
IHNlbGYuX2FwcGVuZF9hcnRpZmFjdChjdXJfZGljdCwgImxvZyIsIG1lc3NhZ2UpCisgICAgICAg
ICAgICBzZWxmLl9hcHBlbmRfYXJ0aWZhY3QoY3VyX2RpY3QsICJ3cHRfbG9nIiwgbWVzc2FnZSkK
IAogICAgICAgICAjIFN0b3JlIHNjcmVlbnNob3RzIChpZiBhbnkpLgogICAgICAgICBmb3IgaXRl
bSBpbiByZWZ0ZXN0X3NjcmVlbnNob3RzIG9yIFtdOgpAQCAtMTcyLDcgKzE4Myw3IEBAIGNsYXNz
IENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZvcm1hdHRlcik6CiAgICAgICAgIHRvIHRoZSBh
Y3R1YWwgc3RhdHVzIGlmIGl0J3Mgbm90LgogCiAgICAgICAgIElmIHRoZSB0ZXN0IGhhcyBtdWx0
aXBsZSBzdGF0dXNlcywgaXQgd2lsbCBoYXZlIG90aGVyIHN0YXR1c2VzIGxpc3RlZCBhcwotICAg
ICAgICAia25vd25faW50ZXJtaXR0ZW50IiBpbiB8ZGF0YXwuIElmIHRoZXNlIGV4aXN0LCB0aGV5
IHdpbGwgYmUgYXBwZW5kZWQgdG8KKyAgICAgICAgImtub3duX2ludGVybWl0dGVudCIgaW4gfGRh
dGF8LiBJZiB0aGVzZSBleGlzdCwgdGhleSB3aWxsIGJlIGFkZGVkIHRvCiAgICAgICAgIHRoZSBy
ZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFjZWQgaW4gYmV0d2Vlbi4KIAogICAgICAgICA6cGFyYW0g
c3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBhY3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0CkBAIC0xODEs
OCArMTkyLDkgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToK
ICAgICAgICAgIiIiCiAgICAgICAgIGV4cGVjdGVkX3N0YXR1c2VzID0gc2VsZi5fbWFwX3N0YXR1
c19uYW1lKGRhdGFbImV4cGVjdGVkIl0pIGlmICJleHBlY3RlZCIgaW4gZGF0YSBlbHNlIGFjdHVh
bF9zdGF0dXMKICAgICAgICAgaWYgZGF0YS5nZXQoImtub3duX2ludGVybWl0dGVudCIpOgotICAg
ICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgKz0gIiAiICsgIiAiLmpvaW4oCi0gICAgICAgICAg
ICAgICAgW3NlbGYuX21hcF9zdGF0dXNfbmFtZShvdGhlcl9zdGF0dXMpIGZvciBvdGhlcl9zdGF0
dXMgaW4gZGF0YVsia25vd25faW50ZXJtaXR0ZW50Il1dKQorICAgICAgICAgICAgYWxsX3N0YXRz
dWVzID0ge3NlbGYuX21hcF9zdGF0dXNfbmFtZShvdGhlcl9zdGF0dXMpIGZvciBvdGhlcl9zdGF0
dXMgaW4gZGF0YVsia25vd25faW50ZXJtaXR0ZW50Il19CisgICAgICAgICAgICBhbGxfc3RhdHN1
ZXMuYWRkKGV4cGVjdGVkX3N0YXR1c2VzKQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMg
PSAiICIuam9pbihzb3J0ZWQoYWxsX3N0YXRzdWVzKSkKICAgICAgICAgcmV0dXJuIGV4cGVjdGVk
X3N0YXR1c2VzCiAKICAgICBkZWYgc3VpdGVfc3RhcnQoc2VsZiwgZGF0YSk6CkBAIC0yMjksMTkg
KzI0MSwyMSBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgog
ICAgICAgICBzZWxmLl9zdG9yZV90ZXN0X3Jlc3VsdCh0ZXN0X25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjdHVhbF9zdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX3N0YXR1c2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmFjdHVhbF9tZXRhZGF0YVt0ZXN0X25hbWVdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2VzW3Rlc3RfbmFtZV0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdwdF9hY3R1YWxfc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJ0ZXN0X2ZhaWx1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEuZ2V0KCJleHRyYSIsIHt9KS5nZXQoInJlZnRlc3Rfc2NyZWVuc2hvdHMiKSkKIAot
ICAgICAgICAjIFJlbW92ZSB0aGUgdGVzdCBmcm9tIG1lc3NhZ2VzIGRpY3QgdG8gYXZvaWQgYWNj
dW11bGF0aW5nIHRvbyBtYW55LgorICAgICAgICAjIFJlbW92ZSB0aGUgdGVzdCBmcm9tIGRpY3Rz
IHRvIGF2b2lkIGFjY3VtdWxhdGluZyB0b28gbWFueS4KKyAgICAgICAgc2VsZi5hY3R1YWxfbWV0
YWRhdGEucG9wKHRlc3RfbmFtZSkKICAgICAgICAgc2VsZi5tZXNzYWdlcy5wb3AodGVzdF9uYW1l
KQogCiAgICAgICAgICMgVXBkYXRlIHRoZSBjb3VudCBvZiBob3cgbWFueSB0ZXN0cyByYW4gd2l0
aCBlYWNoIHN0YXR1cy4KICAgICAgICAgc2VsZi5udW1fZmFpbHVyZXNfYnlfc3RhdHVzW2FjdHVh
bF9zdGF0dXNdICs9IDEKIAogICAgICAgICAjIE5ldyB0ZXN0LCBuZXcgYnJvd3NlciBsb2dzLgot
ICAgICAgICBzZWxmLnRlc3RfbG9nID0gW10KKyAgICAgICAgc2VsZi5icm93c2VyX2xvZyA9IFtd
CiAKICAgICBkZWYgc3VpdGVfZW5kKHNlbGYsIGRhdGEpOgogICAgICAgICAjIENyZWF0ZSB0aGUg
ZmluYWwgcmVzdWx0IGRpY3Rpb25hcnkKQEAgLTI1Nyw1ICsyNzEsNiBAQCBjbGFzcyBDaHJvbWl1
bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICByZXR1cm4ganNvbi5kdW1w
cyhmaW5hbF9yZXN1bHQpCiAKICAgICBkZWYgcHJvY2Vzc19vdXRwdXQoc2VsZiwgZGF0YSk6Ci0g
ICAgICAgIGlmICdjb21tYW5kJyBpbiBkYXRhIGFuZCAnY2hyb21lZHJpdmVyJyBpbiBkYXRhWydj
b21tYW5kJ106Ci0gICAgICAgICAgICBzZWxmLnRlc3RfbG9nLmFwcGVuZChkYXRhWydkYXRhJ10p
CisgICAgICAgIGNtZCA9IGRhdGEuZ2V0KCJjb21tYW5kIiwgIiIpCisgICAgICAgIGlmIGFueShj
IGluIGNtZCBmb3IgYyBpbiBbImNocm9tZWRyaXZlciIsICJsb2djYXQiXSk6CisgICAgICAgICAg
ICBzZWxmLmJyb3dzZXJfbG9nLmFwcGVuZChkYXRhWydkYXRhJ10pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90ZXN0X2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weQppbmRleCA4ZjhlNzMyZDQ3MzYuLjUz
ZDY0ZGY3MGYwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVz
dF9jaHJvbWl1bS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90ZXN0X2No
cm9taXVtLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIGZyb20g
b3MucGF0aCBpbXBvcnQgZGlybmFtZSwgam9pbgotZnJvbSBzaXgubW92ZXMgaW1wb3J0IGNTdHJp
bmdJTyBhcyBTdHJpbmdJTworZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSBtb3psb2cg
aW1wb3J0IGhhbmRsZXJzLCBzdHJ1Y3R1cmVkbG9nCiAKQEAgLTE1NywxNyArMTU3LDI0IEBAIGRl
ZiB0ZXN0X3N1YnRlc3RfbWVzc2FnZXMoY2FwZmQpOgogICAgIG91dHB1dF9qc29uID0ganNvbi5s
b2FkKG91dHB1dCkKIAogICAgIHQxX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0
MSJdWyJhcnRpZmFjdHMiXQotICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsKKyAg
ICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX21ldGFkYXRhIl0gPT0gWwogICAgICAg
ICAiW3QxXVxuICBleHBlY3RlZDogUEFTU1xuIiwKLSAgICAgICAgIiAgW3QxX2FdXG4gICAgZXhw
ZWN0ZWQ6IEZBSUxcbiAgICBtZXNzYWdlOiB0MV9hX21lc3NhZ2VcbiIsCi0gICAgICAgICIgIFt0
MV9iXVxuICAgIGV4cGVjdGVkOiBQQVNTXG4gICAgbWVzc2FnZTogdDFfYl9tZXNzYWdlXG4iLAor
ICAgICAgICAiICBbdDFfYV1cbiAgICBleHBlY3RlZDogRkFJTFxuIiwKKyAgICAgICAgIiAgW3Qx
X2JdXG4gICAgZXhwZWN0ZWQ6IFBBU1NcbiIsCisgICAgXQorICAgIGFzc2VydCB0MV9hcnRpZmFj
dHNbIndwdF9sb2ciXSA9PSBbCisgICAgICAgICJ0MV9hOiB0MV9hX21lc3NhZ2VcbiIsCisgICAg
ICAgICJ0MV9iOiB0MV9iX21lc3NhZ2VcbiIsCiAgICAgXQogICAgIGFzc2VydCB0MV9hcnRpZmFj
dHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUiXQogICAgIHQyX2FydGlmYWN0cyA9
IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MiJdWyJhcnRpZmFjdHMiXQotICAgIGFzc2VydCB0Ml9h
cnRpZmFjdHNbImxvZyJdID09IFsKLSAgICAgICAgIlt0Ml1cbiAgZXhwZWN0ZWQ6IFRJTUVPVVRc
biAgbWVzc2FnZTogdDJfbWVzc2FnZVxuIiwKKyAgICBhc3NlcnQgdDJfYXJ0aWZhY3RzWyJ3cHRf
YWN0dWFsX21ldGFkYXRhIl0gPT0gWworICAgICAgICAiW3QyXVxuICBleHBlY3RlZDogVElNRU9V
VFxuIiwKICAgICAgICAgIiAgW3QyX2FdXG4gICAgZXhwZWN0ZWQ6IFBBU1NcbiIsCiAgICAgXQor
ICAgIGFzc2VydCB0Ml9hcnRpZmFjdHNbIndwdF9sb2ciXSA9PSBbCisgICAgICAgICJIYXJuZXNz
OiB0Ml9tZXNzYWdlXG4iCisgICAgXQogICAgIGFzc2VydCAid3B0X3N1YnRlc3RfZmFpbHVyZSIg
bm90IGluIHQyX2FydGlmYWN0cy5rZXlzKCkKIAogCkBAIC0yMTAsMTEgKzIxNywxNyBAQCBkZWYg
dGVzdF9zdWJ0ZXN0X2ZhaWx1cmUoY2FwZmQpOgogCiAgICAgdGVzdF9vYmogPSBvdXRwdXRfanNv
blsidGVzdHMiXVsidDEiXQogICAgIHQxX2FydGlmYWN0cyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMi
XQotICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsKLSAgICAgICAgIlt0MV1cbiAg
ZXhwZWN0ZWQ6IFBBU1NcbiAgbWVzc2FnZTogdG9wX21lc3NhZ2VcbiIsCi0gICAgICAgICIgIFt0
MV9hXVxuICAgIGV4cGVjdGVkOiBGQUlMXG4gICAgbWVzc2FnZTogdDFfYV9tZXNzYWdlXG4iLAot
ICAgICAgICAiICBbdDFfYl1cbiAgICBleHBlY3RlZDogUEFTU1xuICAgIG1lc3NhZ2U6IHQxX2Jf
bWVzc2FnZVxuIiwKLSAgICAgICAgIiAgW3QxX2NdXG4gICAgZXhwZWN0ZWQ6IFRJTUVPVVRcbiAg
ICBtZXNzYWdlOiB0MV9jX21lc3NhZ2VcbiIsCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0
X2FjdHVhbF9tZXRhZGF0YSJdID09IFsKKyAgICAgICAgIlt0MV1cbiAgZXhwZWN0ZWQ6IFBBU1Nc
biIsCisgICAgICAgICIgIFt0MV9hXVxuICAgIGV4cGVjdGVkOiBGQUlMXG4iLAorICAgICAgICAi
ICBbdDFfYl1cbiAgICBleHBlY3RlZDogUEFTU1xuIiwKKyAgICAgICAgIiAgW3QxX2NdXG4gICAg
ZXhwZWN0ZWQ6IFRJTUVPVVRcbiIsCisgICAgXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndw
dF9sb2ciXSA9PSBbCisgICAgICAgICJIYXJuZXNzOiB0b3BfbWVzc2FnZVxuIiwKKyAgICAgICAg
InQxX2E6IHQxX2FfbWVzc2FnZVxuIiwKKyAgICAgICAgInQxX2I6IHQxX2JfbWVzc2FnZVxuIiwK
KyAgICAgICAgInQxX2M6IHQxX2NfbWVzc2FnZVxuIiwKICAgICBdCiAgICAgYXNzZXJ0IHQxX2Fy
dGlmYWN0c1sid3B0X3N1YnRlc3RfZmFpbHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3Rh
dHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVz
dHMgZmFpbGVkLApAQCAtMjY2LDEzICsyNzksMTYgQEAgZGVmIHRlc3RfZXhwZWN0ZWRfc3VidGVz
dF9mYWlsdXJlKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAK
ICAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAgdDFfbG9nID0g
dGVzdF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIHByaW50KCJMcHogdDFsb2c9JXMiICUg
dDFfbG9nKQotICAgIGFzc2VydCB0MV9sb2cgPT0gWworICAgIGFzc2VydCB0ZXN0X29ialsiYXJ0
aWZhY3RzIl1bIndwdF9hY3R1YWxfbWV0YWRhdGEiXSA9PSBbCiAgICAgICAgICJbdDFdXG4gIGV4
cGVjdGVkOiBPS1xuIiwKLSAgICAgICAgIiAgW3QxX2FdXG4gICAgZXhwZWN0ZWQ6IEZBSUxcbiAg
ICBtZXNzYWdlOiB0MV9hX21lc3NhZ2VcbiIsCi0gICAgICAgICIgIFt0MV9iXVxuICAgIGV4cGVj
dGVkOiBQQVNTXG4gICAgbWVzc2FnZTogdDFfYl9tZXNzYWdlXG4iLAotICAgICAgICAiICBbdDFf
Y11cbiAgICBleHBlY3RlZDogVElNRU9VVFxuICAgIG1lc3NhZ2U6IHQxX2NfbWVzc2FnZVxuIiwK
KyAgICAgICAgIiAgW3QxX2FdXG4gICAgZXhwZWN0ZWQ6IEZBSUxcbiIsCisgICAgICAgICIgIFt0
MV9iXVxuICAgIGV4cGVjdGVkOiBQQVNTXG4iLAorICAgICAgICAiICBbdDFfY11cbiAgICBleHBl
Y3RlZDogVElNRU9VVFxuIiwKKyAgICBdCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMi
XVsid3B0X2xvZyJdID09IFsKKyAgICAgICAgInQxX2E6IHQxX2FfbWVzc2FnZVxuIiwKKyAgICAg
ICAgInQxX2I6IHQxX2JfbWVzc2FnZVxuIiwKKyAgICAgICAgInQxX2M6IHQxX2NfbWVzc2FnZVxu
IiwKICAgICBdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMg
YSBwYXNzIGJlY2F1c2UgdGhlIHN1YnRlc3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVj
dGVkLgpAQCAtMzE2LDkgKzMzMiwxMiBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3N1YnRlc3RfcGFz
cyhjYXBmZCk6CiAKICAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAg
ICAgdDFfYXJ0aWZhY3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCi0gICAgYXNzZXJ0IHQxX2Fy
dGlmYWN0c1sibG9nIl0gPT0gWworICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxf
bWV0YWRhdGEiXSA9PSBbCiAgICAgICAgICJbdDFdXG4gIGV4cGVjdGVkOiBQQVNTXG4iLAotICAg
ICAgICAiICBbdDFfYV1cbiAgICBleHBlY3RlZDogUEFTU1xuICAgIG1lc3NhZ2U6IHQxX2FfbWVz
c2FnZVxuIiwKKyAgICAgICAgIiAgW3QxX2FdXG4gICAgZXhwZWN0ZWQ6IFBBU1NcbiIsCisgICAg
XQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9sb2ciXSA9PSBbCisgICAgICAgICJ0MV9h
OiB0MV9hX21lc3NhZ2VcbiIsCiAgICAgXQogICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9z
dWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUiXQogICAgICMgU2luY2UgdGhlIHN1YnRlc3Qgc3Rh
dHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwgdGhlIHRlc3QuIEJ1dCB3ZSByZXBvcnQKQEAgLTQy
Niw4ICs0NDUsOCBAQCBkZWYgdGVzdF9mbGFreV90ZXN0X2V4cGVjdGVkKGNhcGZkKToKICAgICB0
ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgIyBUaGUgdGVzdCdzIHN0
YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBhbmQgT0stPlBBU1MK
ICAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgotICAgICMgQWxsIHRoZSBw
b3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGludG8gZXhwZWN0ZWQu
Ci0gICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIEZBSUwgVElNRU9VVCIK
KyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJlIG1lcmdlZCBhbmQgc29ydGVkIHRv
Z2V0aGVyIGludG8gZXhwZWN0ZWQuCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09
ICJGQUlMIFBBU1MgVElNRU9VVCIKICAgICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lvbiBv
ciB1bmV4cGVjdGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgb25lCiAgICAgIyBvZiB0
aGUgZXhwZWN0ZWQgb25lcwogICAgIGFzc2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRlc3Rf
b2JqCkBAIC00NjIsNyArNDgxLDcgQEAgZGVmIHRlc3RfZmxha3lfdGVzdF91bmV4cGVjdGVkKGNh
cGZkKToKICAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgIyBU
aGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBh
bmQgT0stPlBBU1MKICAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgotICAg
ICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGlu
dG8gZXhwZWN0ZWQuCisgICAgIyBBbGwgdGhlIHBvc3NpYmxlIHN0YXR1c2VzIGFyZSBtZXJnZWQg
YW5kIHNvcnRlZCB0b2dldGhlciBpbnRvIGV4cGVjdGVkLgogICAgIGFzc2VydCB0ZXN0X29ialsi
ZXhwZWN0ZWQiXSA9PSAiUEFTUyBUSU1FT1VUIgogICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jlc3Np
b24gYW5kIHVuZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKICAgICAj
IG9uZSBvZiB0aGUgZXhwZWN0ZWQgb25lcwpAQCAtNTM2LDYgKzU1NSwzOSBAQCBkZWYgdGVzdF9r
bm93bl9pbnRlcm1pdHRlbnRfZW1wdHkoY2FwZmQpOgogICAgIGFzc2VydCB0ZXN0X29ialsiZXhw
ZWN0ZWQiXSA9PSAiUEFTUyIKIAogCitkZWYgdGVzdF9rbm93bl9pbnRlcm1pdHRlbnRfZHVwbGlj
YXRlKGNhcGZkKToKKyAgICAjIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSBkdXBsaWNhdGUgc3RhdHVz
ZXMgaW4gdGhlIGZpbmFsICJleHBlY3RlZCIgZmllbGQuCisKKyAgICAjIFNldCB1cCB0aGUgaGFu
ZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxv
Zy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5k
bGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAj
IFRoZXJlIGFyZSB0d28gZHVwbGljYXRpb25zIGluIHRoaXMgaW5wdXQ6CisgICAgIyAxLiBrbm93
bl9pbnRlcm1pdHRlbnQgYWxyZWFkeSBjb250YWlucyBleHBlY3RlZDsKKyAgICAjIDIuIGJvdGgg
c3RhdHVzZXMgaW4ga25vd25faW50ZXJtaXR0ZW50IG1hcCB0byBGQUlMIGluIENocm9taXVtLgor
ICAgICMgSW4gdGhlIGVuZCwgd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBGQUlMIGluIENocm9taXVt
ICJleHBlY3RlZCIuCisgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30s
IHRpbWU9MTIzKQorICAgIGxvZ2dlci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3Rf
ZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1IiLCBleHBlY3RlZD0iRVJST1IiLCBrbm93bl9pbnRlcm1p
dHRlbnQ9WyJGQUlMIiwgIkVSUk9SIl0pCisgICAgbG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAj
IENoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyLgorICAgICMgKE5vdGUg
dGhhdCBtb3psb2cgb3V0cHV0cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIh
KQorICAgIGNhcHR1cmVkID0gY2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVk
Lm91dCA9PSAiIgorICAgIGFzc2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgQ2hlY2sg
dGhlIGFjdHVhbCBvdXRwdXQgb2YgdGhlIGZvcm1hdHRlci4KKyAgICBvdXRwdXQuc2VlaygwKQor
ICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKKworICAgIHRlc3Rfb2JqID0gb3V0
cHV0X2pzb25bInRlc3RzIl1bInQxIl0KKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09
ICJGQUlMIgorICAgICMgTm8gZHVwbGljYXRlICJGQUlMIiBpbiAiZXhwZWN0ZWQiLgorICAgIGFz
c2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiRkFJTCIKKworCiBkZWYgdGVzdF9yZWZ0ZXN0
X3NjcmVlbnNob3RzKGNhcGZkKToKICAgICAjIHJlZnRlc3Rfc2NyZWVuc2hvdHMsIGlmIHByZXNl
bnQsIHNob3VsZCBiZSBwbHVtYmVkIGludG8gYXJ0aWZhY3RzLgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9m
b3JtYXR0ZXJzL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3YzJjZjRmZTc0YTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0
dGVycy90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Zvcm1hdHRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk3MWFiMGIwOTZlMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9m
b3JtYXR0ZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZm9ybWF0dGVycy9jaHJvbWl1bS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3dwdHJl
cG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3dwdHNjcmVlbnNob3QucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0cnVtZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0cnVt
ZW50cy5weQppbmRleCBhODg3Y2Y0ZmRhNzIuLjRlM2UwMTNhZWM0MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2luc3RydW1lbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0cnVtZW50cy5w
eQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdGhyZWFkaW5nCi1mcm9tIHNp
eC5tb3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAKICIi
Ikluc3RydW1lbnRhdGlvbiBmb3IgbWVhc3VyaW5nIGhpZ2gtbGV2ZWwgdGltZSBzcGVudCBvbiB2
YXJpb3VzIHRhc2tzIGluc2lkZSB0aGUgcnVubmVyLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5
CmluZGV4IDMxYzU3ZTljYjczNC4uMmY3ZjUzMzliNmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RleHBlY3RlZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3Rl
ZC5weQpAQCAtMSw4ICsxLDYgQEAKIGltcG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
ZGVxdWUKLWZyb20gc2l4IGltcG9ydCBzdHJpbmdfdHlwZXMsIHRleHRfdHlwZQotZnJvbSBzaXgu
bW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCi0KK2Zyb20gdXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxqb2luCiAKIGZyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMK
IGZyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzLmJhc2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAt
NDksNyArNDcsNyBAQCBkZWYgbGlzdF9wcm9wKG5hbWUsIG5vZGUpOgogICAgICIiIkxpc3QgcHJv
cGVydHkiIiIKICAgICB0cnk6CiAgICAgICAgIGxpc3RfcHJvcCA9IG5vZGUuZ2V0KG5hbWUpCi0g
ICAgICAgIGlmIGlzaW5zdGFuY2UobGlzdF9wcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICBp
ZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBbbGlzdF9w
cm9wXQogICAgICAgICByZXR1cm4gbGlzdChsaXN0X3Byb3ApCiAgICAgZXhjZXB0IEtleUVycm9y
OgpAQCAtNTksNyArNTcsNyBAQCBkZWYgbGlzdF9wcm9wKG5hbWUsIG5vZGUpOgogZGVmIHN0cl9w
cm9wKG5hbWUsIG5vZGUpOgogICAgIHRyeToKICAgICAgICAgcHJvcCA9IG5vZGUuZ2V0KG5hbWUp
Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHByb3AsIHN0cmluZ190eXBlcyk6CisgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKHByb3AsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yCiAgICAgICAgIHJldHVybiBwcm9wCiAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNzAsNyAr
NjgsNyBAQCBkZWYgdGFncyhub2RlKToKICAgICAiIiJTZXQgb2YgdGFncyB0aGF0IGhhdmUgYmVl
biBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIiCiAgICAgdHJ5OgogICAgICAgICB2YWx1ZSA9IG5vZGUu
Z2V0KCJ0YWdzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90eXBlKToKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiB7dmFs
dWV9CiAgICAgICAgIHJldHVybiBzZXQodmFsdWUpCiAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAt
NzksNyArNzcsNyBAQCBkZWYgdGFncyhub2RlKToKIAogZGVmIHByZWZzKG5vZGUpOgogICAgIGRl
ZiB2YWx1ZShpbmlfdmFsdWUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKGluaV92YWx1ZSwgdGV4
dF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpbmlfdmFsdWUsIHN0cik6CiAgICAgICAg
ICAgICByZXR1cm4gdHVwbGUocHJlZl9waWVjZS5zdHJpcCgpIGZvciBwcmVmX3BpZWNlIGluIGlu
aV92YWx1ZS5zcGxpdCgnOicsIDEpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyB0aGlz
IHNob3VsZCBiZSB0aGluZ3MgbGlrZSBAUmVzZXQsIHdoaWNoIGFyZSBhcHBhcmVudGx5IHR5cGUg
J29iamVjdCcKQEAgLTg3LDcgKzg1LDcgQEAgZGVmIHByZWZzKG5vZGUpOgogCiAgICAgdHJ5Ogog
ICAgICAgICBub2RlX3ByZWZzID0gbm9kZS5nZXQoInByZWZzIikKLSAgICAgICAgaWYgaXNpbnN0
YW5jZShub2RlX3ByZWZzLCB0ZXh0X3R5cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVf
cHJlZnMsIHN0cik6CiAgICAgICAgICAgICBydiA9IGRpY3QodmFsdWUobm9kZV9wcmVmcykpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiA9IGRpY3QodmFsdWUoaXRlbSkgZm9yIGl0ZW0g
aW4gbm9kZV9wcmVmcykKQEAgLTk5LDcgKzk3LDcgQEAgZGVmIHByZWZzKG5vZGUpOgogZGVmIHNl
dF9wcm9wKG5hbWUsIG5vZGUpOgogICAgIHRyeToKICAgICAgICAgbm9kZV9pdGVtcyA9IG5vZGUu
Z2V0KG5hbWUpCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCBzdHIpOgogICAgICAgICAgICAgcnYg
PSB7bm9kZV9pdGVtc30KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJ2ID0gc2V0KG5vZGVf
aXRlbXMpCkBAIC0xMTIsNyArMTEwLDcgQEAgZGVmIGxlYWtfdGhyZXNob2xkKG5vZGUpOgogICAg
IHJ2ID0ge30KICAgICB0cnk6CiAgICAgICAgIG5vZGVfaXRlbXMgPSBub2RlLmdldCgibGVhay10
aHJlc2hvbGQiKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIHRleHRfdHlwZSk6
CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgc3RyKToKICAgICAgICAgICAgIG5v
ZGVfaXRlbXMgPSBbbm9kZV9pdGVtc10KICAgICAgICAgZm9yIGl0ZW0gaW4gbm9kZV9pdGVtczoK
ICAgICAgICAgICAgIHByb2Nlc3MsIHZhbHVlID0gaXRlbS5yc3BsaXQoIjoiLCAxKQpAQCAtMTY5
LDcgKzE2Nyw3IEBAIGRlZiBmdXp6eV9wcm9wKG5vZGUpOgogICAgIGlmIG5vdCBpc2luc3RhbmNl
KHZhbHVlLCBsaXN0KToKICAgICAgICAgdmFsdWUgPSBbdmFsdWVdCiAgICAgZm9yIGl0ZW0gaW4g
dmFsdWU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0ZW0sIHRleHRfdHlwZSk6CisgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0ZW0sIHN0cik6CiAgICAgICAgICAgICBydi5hcHBlbmQo
aXRlbSkKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHBhcnRzID0gaXRlbS5yc3BsaXQo
IjoiLCAxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggNzliNWIxOWIzYTNmLi45NzM0OGU2
ZDUyZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQpAQCAtNiw4ICs2LDcgQEAgYmUgaW5jbHVk
ZWQgb3IgZXhjbHVkZWQuCiAiIiIKIGltcG9ydCBnbG9iCiBpbXBvcnQgb3MKLWZyb20gc2l4IGlt
cG9ydCBpdGVyaXRlbXMKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFy
c2UsIHVybHNwbGl0Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHVybHNwbGl0
CiAKIGZyb20gLndwdG1hbmlmZXN0Lm5vZGUgaW1wb3J0IERhdGFOb2RlCiBmcm9tIC53cHRtYW5p
ZmVzdC5iYWNrZW5kcyBpbXBvcnQgY29uZGl0aW9uYWwKQEAgLTk1LDcgKzk0LDcgQEAgY2xhc3Mg
SW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIGlmIHBhdGhzOgogICAgICAg
ICAgICAgdXJscyA9IFtdCiAgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgICAg
ICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gaXRlcml0ZW1zKHRlc3RfbWFuaWZlc3RzKToK
KyAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gdGVzdF9tYW5pZmVzdHMuaXRl
bXMoKToKICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBGYWxzZQogICAgICAgICAgICAgICAg
ICAgICByZWxfcGF0aCA9IG9zLnBhdGgucmVscGF0aChwYXRoLCBkYXRhWyJ0ZXN0c19wYXRoIl0p
CiAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbWFuaWZlc3QuaXRlcnBhdGggaWYgb3Mu
cGF0aC5pc2ZpbGUocGF0aCkgZWxzZSBtYW5pZmVzdC5pdGVyZGlyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUu
cHkKaW5kZXggMTI5NDU3YjNmZDEyLi41YmNjYWEyZDJhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9tYW5pZmVzdHVwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUu
cHkKQEAgLTEsOSArMSw4IEBACiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
CiBpbXBvcnQgb3MKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbiwg
dXJsc3BsaXQKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdAogZnJv
bSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9t
IG1hdGggaW1wb3J0IGNlaWwKLWZyb20gc2l4IGltcG9ydCBpbnRlZ2VyX3R5cGVzLCBpdGVya2V5
cywgaXRlcnZhbHVlcywgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMsIHRleHRfdHlwZQogCiBmcm9t
IC53cHRtYW5pZmVzdCBpbXBvcnQgc2VyaWFsaXplCiBmcm9tIC53cHRtYW5pZmVzdC5ub2RlIGlt
cG9ydCAoRGF0YU5vZGUsIENvbmRpdGlvbmFsTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUsCkBA
IC03Niw3ICs3NSw3IEBAIGNsYXNzIFVwZGF0ZVByb3BlcnRpZXMob2JqZWN0KToKICAgICAgICAg
cmV0dXJuIG5hbWUgaW4gc2VsZi5fY2xhc3NlcwogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgot
ICAgICAgICBmb3IgbmFtZSBpbiBpdGVya2V5cyhzZWxmLl9jbGFzc2VzKToKKyAgICAgICAgZm9y
IG5hbWUgaW4gc2VsZi5fY2xhc3Nlcy5rZXlzKCk6CiAgICAgICAgICAgICB5aWVsZCBnZXRhdHRy
KHNlbGYsIG5hbWUpCiAKIApAQCAtMzEzLDggKzMxMiw4IEBAIGRlZiBidWlsZF9jb25kaXRpb25h
bF90cmVlKF8sIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHJlc3VsdHMpOgogCiBkZWYgYnVpbGRfdW5j
b25kaXRpb25hbF90cmVlKF8sIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHJlc3VsdHMpOgogICAgIHJv
b3QgPSBleHBlY3RlZHRyZWUuTm9kZShOb25lLCBOb25lKQotICAgIGZvciBydW5faW5mbywgdmFs
dWVzIGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBp
dGVyaXRlbXModmFsdWVzKToKKyAgICBmb3IgcnVuX2luZm8sIHZhbHVlcyBpbiByZXN1bHRzLml0
ZW1zKCk6CisgICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gdmFsdWVzLml0ZW1zKCk6CiAgICAg
ICAgICAgICByb290LnJlc3VsdF92YWx1ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHJvb3Qu
cnVuX2luZm8uYWRkKHJ1bl9pbmZvKQogICAgIHJldHVybiByb290CkBAIC00MTEsNyArNDEwLDcg
QEAgY2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgZm9yIGUgaW4gZXJyb3Jz
OgogICAgICAgICAgICAgaWYgZGlzYWJsZV9pbnRlcm1pdHRlbnQ6CiAgICAgICAgICAgICAgICAg
Y29uZGl0aW9uID0gZS5jb25kLmNoaWxkcmVuWzBdIGlmIGUuY29uZCBlbHNlIE5vbmUKLSAgICAg
ICAgICAgICAgICBtc2cgPSBkaXNhYmxlX2ludGVybWl0dGVudCBpZiBpc2luc3RhbmNlKGRpc2Fi
bGVfaW50ZXJtaXR0ZW50LCBzdHJpbmdfdHlwZXMrKHRleHRfdHlwZSwpKSBlbHNlICJ1bnN0YWJs
ZSIKKyAgICAgICAgICAgICAgICBtc2cgPSBkaXNhYmxlX2ludGVybWl0dGVudCBpZiBpc2luc3Rh
bmNlKGRpc2FibGVfaW50ZXJtaXR0ZW50LCBzdHIpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAg
ICAgICAgIHNlbGYubm9kZS5zZXQoImRpc2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAg
ICAgICAgICAgc2VsZi5ub2RlLm5ld19kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6
CkBAIC00OTksNyArNDk4LDcgQEAgY2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIHJ1bl9pbmZvIGluIG5vZGUucnVuX2luZm99CiAKICAg
ICAgICAgbm9kZV9ieV9ydW5faW5mbyA9IHtydW5faW5mbzogbm9kZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAocnVuX2luZm8sIG5vZGUpIGluIGl0ZXJpdGVtcyhydW5faW5mb19p
bmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHJ1bl9pbmZvLCBub2RlKSBp
biBydW5faW5mb19pbmRleC5pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
bm9kZS5yZXN1bHRfdmFsdWVzfQogCiAgICAgICAgIHJ1bl9pbmZvX2J5X2NvbmRpdGlvbiA9IHNl
bGYucnVuX2luZm9fYnlfY29uZGl0aW9uKHJ1bl9pbmZvX2luZGV4LApAQCAtNTEyLDcgKzUxMSw3
IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6CiAgICAgICAgICAgICAjIHVzaW5nIHRo
ZSBwcm9wZXJ0aWVzIHdlJ3ZlIHNwZWNpZmllZCBhbmQgbm90IG1hdGNoaW5nIGFueSBydW5faW5m
bwogICAgICAgICAgICAgdG9wX2xldmVsX3Byb3BzLCBkZXBlbmRlbnRfcHJvcHMgPSBzZWxmLm5v
ZGUucm9vdC5ydW5faW5mb19wcm9wZXJ0aWVzCiAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGll
cyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCi0gICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVydmFs
dWVzKGRlcGVuZGVudF9wcm9wcyk6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBkZXBlbmRlbnRf
cHJvcHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0
KGl0ZW0pCiAgICAgICAgICAgICBmb3IgY29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoK
ICAgICAgICAgICAgICAgICBpZiAoKG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVw
ZGF0ZV9wcm9wZXJ0aWVzKSBhbmQKQEAgLTY5NSw3ICs2OTQsNyBAQCBjbGFzcyBFeHBlY3RlZFVw
ZGF0ZShQcm9wZXJ0eVVwZGF0ZSk6CiAgICAgICAgICAgICByYWlzZSBDb25kaXRpb25FcnJvcgog
CiAgICAgICAgIGNvdW50cyA9IHt9Ci0gICAgICAgIGZvciBzdGF0dXMsIGNvdW50IGluIGl0ZXJp
dGVtcyhuZXcpOgorICAgICAgICBmb3Igc3RhdHVzLCBjb3VudCBpbiBuZXcuaXRlbXMoKToKICAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RhdHVzLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAg
Y291bnRzW3N0YXR1c1swXV0gPSBjb3VudAogICAgICAgICAgICAgICAgIGNvdW50cy51cGRhdGUo
e2ludGVybWl0dGVudDogMCBmb3IgaW50ZXJtaXR0ZW50IGluIHN0YXR1c1sxOl0gaWYgaW50ZXJt
aXR0ZW50IG5vdCBpbiBjb3VudHN9KQpAQCAtNzA5LDI0ICs3MDgsMjcgQEAgY2xhc3MgRXhwZWN0
ZWRVcGRhdGUoUHJvcGVydHlVcGRhdGUpOgogICAgICAgICAjIENvdW50cyB3aXRoIDAgYXJlIGNv
bnNpZGVyZWQgaW50ZXJtaXR0ZW50LgogICAgICAgICBzdGF0dXNlcyA9IFsiT0siLCAiUEFTUyIs
ICJGQUlMIiwgIkVSUk9SIiwgIlRJTUVPVVQiLCAiQ1JBU0giXQogICAgICAgICBzdGF0dXNfcHJp
b3JpdHkgPSB7dmFsdWU6IGkgZm9yIGksIHZhbHVlIGluIGVudW1lcmF0ZShzdGF0dXNlcyl9Ci0g
ICAgICAgIHNvcnRlZF9uZXcgPSBzb3J0ZWQoaXRlcml0ZW1zKGNvdW50cyksIGtleT1sYW1iZGEg
eDooLTEgKiB4WzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXNfcHJpb3JpdHkuZ2V0KHhbMF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzdGF0dXNf
cHJpb3JpdHkpKSkpCisgICAgICAgIHNvcnRlZF9uZXcgPSBzb3J0ZWQoY291bnRzLml0ZW1zKCks
IGtleT1sYW1iZGEgeDooLTEgKiB4WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfcHJpb3JpdHkuZ2V0KHhbMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihz
dGF0dXNfcHJpb3JpdHkpKSkpCiAgICAgICAgIGV4cGVjdGVkID0gW10KICAgICAgICAgZm9yIHN0
YXR1cywgY291bnQgaW4gc29ydGVkX25ldzoKICAgICAgICAgICAgICMgSWYgd2UgYXJlIG5vdCBy
ZW1vdmluZyBleGlzdGluZyByZWNvcmRlZCBpbnRlcm1pdHRlbnRzLCB3aXRoIGEgY291bnQgb2Yg
MCwKICAgICAgICAgICAgICMgYWRkIHRoZW0gaW4gdG8gZXhwZWN0ZWQuCiAgICAgICAgICAgICBp
ZiBjb3VudCA+IDAgb3Igbm90IHNlbGYucmVtb3ZlX2ludGVybWl0dGVudDoKICAgICAgICAgICAg
ICAgICBleHBlY3RlZC5hcHBlbmQoc3RhdHVzKQorCisgICAgICAgICMgSWYgdGhlIG5ldyBpbnRl
cm1pdHRlbnQgaXMgYSBzdWJzZXQgb2YgdGhlIGV4aXN0aW5nIG9uZSwganVzdCB1c2UgdGhlIGV4
aXN0aW5nIG9uZQorICAgICAgICAjIFRoaXMgcHJldmVudHMgZnJlcXVlbnQgZmxpcC1mbG9wcGlu
ZyBvZiByZXN1bHRzIGJldHdlZW4gZS5nLiBbT0ssIFRJTUVPVVRdIGFuZAorICAgICAgICAjIFtU
SU1FT1VULCBPS10KKyAgICAgICAgaWYgY3VycmVudCBhbmQgc2V0KGV4cGVjdGVkKS5pc3N1YnNl
dChzZXQoY3VycmVudCkpOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQKKwogICAgICAgICBp
ZiBzZWxmLnVwZGF0ZV9pbnRlcm1pdHRlbnQ6CiAgICAgICAgICAgICBpZiBsZW4oZXhwZWN0ZWQp
ID09IDE6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkWzBdCiAgICAgICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWQKIAotICAgICAgICAjIElmIG5vdGhpbmcgaGFzIGNoYW5nZWQgYW5kIG5v
dCBzZWxmLnVwZGF0ZV9pbnRlcm1pdHRlbnQsIHByZXNlcnZlIGV4aXN0aW5nCi0gICAgICAgICMg
aW50ZXJtaXR0ZW50LgotICAgICAgICBpZiBzZXQoZXhwZWN0ZWQpLmlzc3Vic2V0KHNldChjdXJy
ZW50KSk6Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudAogICAgICAgICAjIElmIHdlIGFyZSBu
b3QgdXBkYXRpbmcgaW50ZXJtaXR0ZW50cywgcmV0dXJuIHRoZSBzdGF0dXMgd2l0aCB0aGUgaGln
aGVzdCBvY2N1cmVuY2UuCiAgICAgICAgIHJldHVybiBleHBlY3RlZFswXQogCkBAIC03NzQsNyAr
Nzc2LDcgQEAgY2xhc3MgQXBwZW5kT25seUxpc3RVcGRhdGUoUHJvcGVydHlVcGRhdGUpOgogICAg
ICAgICBmb3IgaXRlbSBpbiBuZXc6CiAgICAgICAgICAgICBpZiBpdGVtIGlzIE5vbmU6CiAgICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShpdGVtLCB0
ZXh0X3R5cGUpOgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGl0ZW0sIHN0cik6CiAgICAg
ICAgICAgICAgICAgcnYuYWRkKGl0ZW0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgIHJ2IHw9IGl0ZW0KQEAgLTgyMiw3ICs4MjQsNyBAQCBjbGFzcyBMZWFrVGhyZXNob2xkVXBk
YXRlKFByb3BlcnR5VXBkYXRlKToKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHRv
X2luaV92YWx1ZShzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIFsiJXM6JXMiICUgaXRlbSBm
b3IgaXRlbSBpbiBzb3J0ZWQoaXRlcml0ZW1zKGRhdGEpKV0KKyAgICAgICAgcmV0dXJuIFsiJXM6
JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBzb3J0ZWQoZGF0YS5pdGVtcygpKV0KIAogICAgIGRlZiBm
cm9tX2luaV92YWx1ZShzZWxmLCBkYXRhKToKICAgICAgICAgcnYgPSB7fQpAQCAtODk3LDEwICs4
OTksMTAgQEAgZGVmIG1ha2VfZXhwcihwcm9wX3NldCwgcmhzKToKIAogCiBkZWYgbWFrZV9ub2Rl
KHZhbHVlKToKLSAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnRlZ2VyX3R5cGVzKyhmbG9hdCwp
KToKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoaW50LCBmbG9hdCwpKToKICAgICAgICAgbm9k
ZSA9IE51bWJlck5vZGUodmFsdWUpCi0gICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5
cGUpOgotICAgICAgICBub2RlID0gU3RyaW5nTm9kZSh0ZXh0X3R5cGUodmFsdWUpKQorICAgIGVs
aWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgbm9kZSA9IFN0cmluZ05vZGUoc3Ry
KHZhbHVlKSkKICAgICBlbGlmIGhhc2F0dHIodmFsdWUsICJfX2l0ZXJfXyIpOgogICAgICAgICBu
b2RlID0gTGlzdE5vZGUoKQogICAgICAgICBmb3IgaXRlbSBpbiB2YWx1ZToKQEAgLTkwOSwxMCAr
OTExLDEwIEBAIGRlZiBtYWtlX25vZGUodmFsdWUpOgogCiAKIGRlZiBtYWtlX3ZhbHVlX25vZGUo
dmFsdWUpOgotICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkp
OgorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChpbnQsIGZsb2F0LCkpOgogICAgICAgICBub2Rl
ID0gVmFsdWVOb2RlKHZhbHVlKQotICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90eXBl
KToKLSAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh0ZXh0X3R5cGUodmFsdWUpKQorICAgIGVsaWYg
aXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgbm9kZSA9IFZhbHVlTm9kZShzdHIodmFs
dWUpKQogICAgIGVsaWYgaGFzYXR0cih2YWx1ZSwgIl9faXRlcl9fIik6CiAgICAgICAgIG5vZGUg
PSBMaXN0Tm9kZSgpCiAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CmluZGV4IGFi
OGQ0NzQwZjNmYy4uZGRjNDMzZDhhYTkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRh
dGEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CkBAIC01LDggKzUsOCBAQCBpbXBv
cnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdCwgbmFtZWR0dXBsZQog
CiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZwotZnJvbSBzaXggaW1wb3J0IGVuc3Vy
ZV9zdHIsIGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0ZXh0
X3R5cGUKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4sIHJhbmdlCitmcm9tIHNpeCBpbXBv
cnQgZW5zdXJlX3N0ciwgZW5zdXJlX3RleHQKK2Zyb20gc3lzIGltcG9ydCBpbnRlcm4KIAogZnJv
bSAuIGltcG9ydCBtYW5pZmVzdHVwZGF0ZQogZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCkBAIC00
NSwxMSArNDUsMTEgQEAgY2xhc3MgUnVuSW5mbyhvYmplY3QpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5jYW5vbmljYWxfcmVwciA9PSBvdGhlci5jYW5vbmljYWxfcmVwcgogCiAgICAgZGVmIGl0ZXJp
dGVtcyhzZWxmKToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0
YSk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVtcygpOgogICAgICAg
ICAgICAgeWllbGQga2V5LCB2YWx1ZQogCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gbGlzdChpdGVyaXRlbXMoc2VsZikpCisgICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRl
bXMoKSkKIAogCiBkZWYgdXBkYXRlX2V4cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3QsIGxv
Z19maWxlX25hbWVzLApAQCAtMTI5LDcgKzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5nZXMo
bWFuaWZlc3RzLCBjaGFuZ2VfZGF0YSwgZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hhbmdl
ZCA9IHNldChmaWxlc19jaGFuZ2VkKQogCiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAgICBm
b3IgbWFuaWZlc3QsIHBhdGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVzdHMpOgorICAgIGZvciBtYW5p
ZmVzdCwgcGF0aHMgaW4gbWFuaWZlc3RzLml0ZW1zKCk6CiAgICAgICAgIGlmIHBhdGhzWyJ1cmxf
YmFzZSJdID09ICIvIjoKICAgICAgICAgICAgIHJvb3RfbWFuaWZlc3QgPSBtYW5pZmVzdAogICAg
ICAgICAgICAgYnJlYWsKQEAgLTI0MCw3ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQoZGF0YSk6
CiBkZWYgdW5wYWNrX3Jlc3VsdChkYXRhKToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGludCk6
CiAgICAgICAgIHJldHVybiAoc3RhdHVzX2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0gICAgaWYg
aXNpbnN0YW5jZShkYXRhLCB0ZXh0X3R5cGUpOgorICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3Ry
KToKICAgICAgICAgcmV0dXJuIChkYXRhLCBOb25lKQogICAgICMgVW5wYWNrIG11bHRpcGxlIHN0
YXR1c2VzIGludG8gYSB0dXBsZSB0byBiZSB1c2VkIGluIHRoZSBSZXN1bHRzIG5hbWVkIHR1cGxl
IGJlbG93LAogICAgICMgc2VwYXJhdGluZyBgc3RhdHVzYCBhbmQgYGtub3duX2ludGVybWl0dGVu
dGAuCkBAIC0yNTksNyArMjU5LDcgQEAgZGVmIGxvYWRfdGVzdF9kYXRhKHRlc3RfcGF0aHMpOgog
ICAgIG1hbmlmZXN0cyA9IG1hbmlmZXN0X2xvYWRlci5sb2FkKCkKIAogICAgIGlkX3Rlc3RfbWFw
ID0ge30KLSAgICBmb3IgdGVzdF9tYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0
cyk6CisgICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVtcygpOgog
ICAgICAgICBpZF90ZXN0X21hcC51cGRhdGUoY3JlYXRlX3Rlc3RfdHJlZShwYXRoc1sibWV0YWRh
dGFfcGF0aCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X21hbmlmZXN0KSkKICAgICByZXR1cm4gaWRfdGVzdF9tYXAKQEAgLTI4NywxMCArMjg3LDEw
IEBAIGRlZiB1cGRhdGVfcmVzdWx0cyhpZF90ZXN0X21hcCwKICAgICAgICAgICAgICAgICAgICBk
aXNhYmxlX2ludGVybWl0dGVudCwKICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaW50ZXJtaXR0
ZW50LAogICAgICAgICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQpOgotICAgIHRlc3Rf
ZmlsZV9pdGVtcyA9IHNldChpdGVydmFsdWVzKGlkX3Rlc3RfbWFwKSkKKyAgICB0ZXN0X2ZpbGVf
aXRlbXMgPSBzZXQoaWRfdGVzdF9tYXAudmFsdWVzKCkpCiAKICAgICBkZWZhdWx0X2V4cGVjdGVk
X2J5X3R5cGUgPSB7fQotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfY2xzIGluIGl0ZXJpdGVtcyh3
cHR0ZXN0Lm1hbmlmZXN0X3Rlc3RfY2xzKToKKyAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X2NscyBp
biB3cHR0ZXN0Lm1hbmlmZXN0X3Rlc3RfY2xzLml0ZW1zKCk6CiAgICAgICAgIGlmIHRlc3RfY2xz
LnJlc3VsdF9jbHM6CiAgICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGVbKHRlc3Rf
dHlwZSwgRmFsc2UpXSA9IHRlc3RfY2xzLnJlc3VsdF9jbHMuZGVmYXVsdF9leHBlY3RlZAogICAg
ICAgICBpZiB0ZXN0X2Nscy5zdWJ0ZXN0X3Jlc3VsdF9jbHM6CkBAIC00MzEsNyArNDMxLDcgQEAg
Y2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJs
c2FuX2xlYWsiXShpdGVtKQogCiAgICAgICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3ps
ZWFrIiwge30pCi0gICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMobW96
bGVha19kYXRhKToKKyAgICAgICAgZm9yIHNjb3BlLCBzY29wZV9kYXRhIGluIG1vemxlYWtfZGF0
YS5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGtleSwgYWN0aW9uIGluIFsoIm9iamVjdHMiLCAi
bW96bGVha19vYmplY3QiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0b3Rh
bCIsICJtb3psZWFrX3RvdGFsIildOgogICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNjb3Bl
X2RhdGEuZ2V0KGtleSwgW10pOgpAQCAtNjY4LDExICs2NjgsMTEgQEAgY2xhc3MgVGVzdEZpbGVE
YXRhKG9iamVjdCk6CiAgICAgICAgICMgUmV0dXJuIHN1YnRlc3Qgbm9kZXMgcHJlc2VudCBpbiB0
aGUgZXhwZWN0ZWQgZmlsZSwgYnV0IG1pc3NpbmcgZnJvbSB0aGUgZGF0YQogICAgICAgICBydiA9
IFtdCiAKLSAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRh
dGEpOgorICAgICAgICBmb3IgdGVzdF9pZCwgc3VidGVzdHMgaW4gc2VsZi5kYXRhLml0ZW1zKCk6
CiAgICAgICAgICAgICB0ZXN0ID0gZXhwZWN0ZWQuZ2V0X3Rlc3QoZW5zdXJlX3RleHQodGVzdF9p
ZCkpCiAgICAgICAgICAgICBpZiBub3QgdGVzdDoKICAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgc2Vlbl9zdWJ0ZXN0cyA9IHNldChlbnN1cmVfdGV4dChpdGVtKSBmb3IgaXRl
bSBpbiBpdGVya2V5cyhzdWJ0ZXN0cykgaWYgaXRlbSBpcyBub3QgTm9uZSkKKyAgICAgICAgICAg
IHNlZW5fc3VidGVzdHMgPSBzZXQoZW5zdXJlX3RleHQoaXRlbSkgZm9yIGl0ZW0gaW4gc3VidGVz
dHMua2V5cygpIGlmIGl0ZW0gaXMgbm90IE5vbmUpCiAgICAgICAgICAgICBtaXNzaW5nX3N1YnRl
c3RzID0gc2V0KHRlc3Quc3VidGVzdHMua2V5cygpKSAtIHNlZW5fc3VidGVzdHMKICAgICAgICAg
ICAgIGZvciBpdGVtIGluIG1pc3Npbmdfc3VidGVzdHM6CiAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfc3VidGVzdCA9IHRlc3QuZ2V0X3N1YnRlc3QoaXRlbSkKQEAgLTY5MSw3ICs2OTEsNyBAQCBj
bGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgIyBzaW5jZSByZW1vdmluZyB0aGVz
ZSBtYXkgYmUgaW5hcHByb3ByaWF0ZQogICAgICAgICB0b3BfbGV2ZWxfcHJvcHMsIGRlcGVuZGVu
dF9wcm9wcyA9IHVwZGF0ZV9wcm9wZXJ0aWVzCiAgICAgICAgIGFsbF9wcm9wZXJ0aWVzID0gc2V0
KHRvcF9sZXZlbF9wcm9wcykKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRl
bnRfcHJvcHMpOgorICAgICAgICBmb3IgaXRlbSBpbiBkZXBlbmRlbnRfcHJvcHMudmFsdWVzKCk6
CiAgICAgICAgICAgICBhbGxfcHJvcGVydGllcyB8PSBzZXQoaXRlbSkKIAogICAgICAgICBmaWx0
ZXJlZCA9IFtdCkBAIC03NDEsOSArNzQxLDkgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9iamVjdCk6
CiAgICAgICAgICAgICB0ZXN0X2V4cGVjdGVkID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZCkK
ICAgICAgICAgICAgIGV4cGVjdGVkX2J5X3Rlc3RbdGVzdF9pZF0gPSB0ZXN0X2V4cGVjdGVkCiAK
LSAgICAgICAgZm9yIHRlc3RfaWQsIHRlc3RfZGF0YSBpbiBpdGVyaXRlbXMoc2VsZi5kYXRhKToK
KyAgICAgICAgZm9yIHRlc3RfaWQsIHRlc3RfZGF0YSBpbiBzZWxmLmRhdGEuaXRlbXMoKToKICAg
ICAgICAgICAgIHRlc3RfaWQgPSBlbnN1cmVfc3RyKHRlc3RfaWQpCi0gICAgICAgICAgICBmb3Ig
c3VidGVzdF9pZCwgcmVzdWx0c19saXN0IGluIGl0ZXJpdGVtcyh0ZXN0X2RhdGEpOgorICAgICAg
ICAgICAgZm9yIHN1YnRlc3RfaWQsIHJlc3VsdHNfbGlzdCBpbiB0ZXN0X2RhdGEuaXRlbXMoKToK
ICAgICAgICAgICAgICAgICBmb3IgcHJvcCwgcnVuX2luZm8sIHZhbHVlIGluIHJlc3VsdHNfbGlz
dDoKICAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZGlyZWN0b3J5IG1ldGFkYXRh
CiAgICAgICAgICAgICAgICAgICAgIGlmIHN1YnRlc3RfaWQgaXMgTm9uZSBhbmQgdGVzdF9pZC5l
bmRzd2l0aCgiX19kaXJfXyIpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21wY29udGV4dC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9tcGNvbnRleHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hNTBjMDQ3ODJhNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbXBjb250ZXh0LnB5CkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcK
KworX2NvbnRleHQgPSBOb25lCisKKworZGVmIGdldF9jb250ZXh0KCk6CisgICAgZ2xvYmFsIF9j
b250ZXh0CisKKyAgICBpZiBfY29udGV4dCBpcyBOb25lOgorICAgICAgICBfY29udGV4dCA9IG11
bHRpcHJvY2Vzc2luZy5nZXRfY29udGV4dCgic3Bhd24iKQorICAgIHJldHVybiBfY29udGV4dApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vz
cy5weQppbmRleCA4YTJiODk0Y2I3NGQuLmQzZmYzODBhZDA4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Byb2Nlc3MucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKQEAgLTEsMTEg
KzEsOCBAQAotaW1wb3J0IHN5cwotCiBpbXBvcnQgc2l4CiAKIAogZGVmIGNhc3RfZW52KGVudik6
Ci0gICAgIiIiRW5jb2RlIGFsbCB0aGUgZW52aXJvbm1lbnQgdmFsdWVzIGFzIHRoZSBhcHByb3By
aWF0ZSB0eXBlIGZvciBlYWNoIFB5dGhvbiB2ZXJzaW9uCisgICAgIiIiRW5jb2RlIGFsbCB0aGUg
ZW52aXJvbm1lbnQgdmFsdWVzIGFzIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgogICAgIFRoaXMgYXNz
dW1lcyB0aGF0IGFsbCB0aGUgZGF0YSBpcyBvciBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgVVRGOCIi
IgogCi0gICAgZW52X3R5cGUgPSBzaXguZW5zdXJlX2JpbmFyeSBpZiBzeXMudmVyc2lvbl9pbmZv
WzBdIDwgMyBlbHNlIHNpeC5lbnN1cmVfc3RyCi0gICAgcmV0dXJuIHtlbnZfdHlwZShrZXkpOiBl
bnZfdHlwZSh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gc2l4Lml0ZXJpdGVtcyhlbnYpfQorICAg
IHJldHVybiB7c2l4LmVuc3VyZV9zdHIoa2V5KTogc2l4LmVuc3VyZV9zdHIodmFsdWUpIGZvciBr
ZXksIHZhbHVlIGluIGVudi5pdGVtcygpfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1
Y3RzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CmluZGV4IGFiZDg0MDk0YmIzMy4uN2Jh
MzA1Mzc5MDc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IGltcG9ydGxpYgog
aW1wb3J0IGltcAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC5icm93c2VycyBp
bXBvcnQgcHJvZHVjdF9saXN0CiAKQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgUHJvZHVjdChvYmpl
Y3QpOgogICAgICAgICBzZWxmLmdldF90aW1lb3V0X211bHRpcGxpZXIgPSBnZXRhdHRyKG1vZHVs
ZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0pCiAKICAgICAgICAgc2VsZi5leGVjdXRvcl9j
bGFzc2VzID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xzX25hbWUgaW4gaXRlcml0ZW1z
KGRhdGFbImV4ZWN1dG9yIl0pOgorICAgICAgICBmb3IgdGVzdF90eXBlLCBjbHNfbmFtZSBpbiBk
YXRhWyJleGVjdXRvciJdLml0ZW1zKCk6CiAgICAgICAgICAgICBjbHMgPSBnZXRhdHRyKG1vZHVs
ZSwgY2xzX25hbWUpCiAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yX2NsYXNzZXNbdGVzdF90eXBl
XSA9IGNscwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3N0YWJpbGl0eS5weQppbmRleCA4OGQxYzIzMmJmYjUuLjIyNjU1MjNlY2M4NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3Rh
YmlsaXR5LnB5CkBAIC01LDcgKzUsNiBAQCBpbXBvcnQgaW8KIGltcG9ydCBvcwogZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CiBmcm9tIGRhdGV0aW1lIGlt
cG9ydCBkYXRldGltZQotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBp
bXBvcnQgcmVhZGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBKU09ORm9ybWF0dGVy
CkBAIC0xNDIsMTAgKzE0MSwxMCBAQCBkZWYgcHJvY2Vzc19yZXN1bHRzKGxvZywgaXRlcmF0aW9u
cyk6CiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIHJlYWRlci5oYW5kbGVfbG9nKHJl
YWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVzdWx0cyA9IGhhbmRsZXIucmVzdWx0cwot
ICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gaXRlcml0ZW1zKHJlc3VsdHMpOgorICAgIGZvciB0
ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVtcygpOgogICAgICAgICBpZiBpc19pbmNvbnNp
c3RlbnQodGVzdFsic3RhdHVzIl0sIGl0ZXJhdGlvbnMpOgogICAgICAgICAgICAgaW5jb25zaXN0
ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBOb25lLCB0ZXN0WyJzdGF0dXMiXSwgW10pKQotICAgICAg
ICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0IGluIGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJd
KToKKyAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBpbiB0ZXN0WyJzdWJ0ZXN0cyJd
Lml0ZW1zKCk6CiAgICAgICAgICAgICBpZiBpc19pbmNvbnNpc3RlbnQoc3VidGVzdFsic3RhdHVz
Il0sIGl0ZXJhdGlvbnMpOgogICAgICAgICAgICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRl
c3RfbmFtZSwgc3VidGVzdF9uYW1lLCBzdWJ0ZXN0WyJzdGF0dXMiXSwgc3VidGVzdFsibWVzc2Fn
ZXMiXSkpCiAKQEAgLTIzNSw3ICsyMzQsNyBAQCBkZWYgd3JpdGVfcmVzdWx0cyhsb2csIHJlc3Vs
dHMsIGl0ZXJhdGlvbnMsIHByX251bWJlcj1Ob25lLCB1c2VfZGV0YWlscz1GYWxzZSk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0cyIgaWYg
bGVuKHJlc3VsdHMpID4gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlICJ0ZXN0IikpCiAKLSAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0
ZXJpdGVtcyhyZXN1bHRzKToKKyAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIHJlc3VsdHMuaXRl
bXMoKToKICAgICAgICAgYmFzZXVybCA9ICJodHRwOi8vdzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25z
IgogICAgICAgICBpZiAiaHR0cHMiIGluIG9zLnBhdGguc3BsaXRleHQodGVzdF9uYW1lKVswXS5z
cGxpdCgiLiIpWzE6XToKICAgICAgICAgICAgIGJhc2V1cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5v
cmcvc3VibWlzc2lvbnMiCkBAIC0zMDUsNyArMzA0LDcgQEAgZGVmIGdldF9zdGVwcyhsb2dnZXIs
IHJlcGVhdF9sb29wLCByZXBlYXRfcmVzdGFydCwga3dhcmdzX2V4dHJhcyk6CiAgICAgZm9yIGt3
YXJnc19leHRyYSBpbiBrd2FyZ3NfZXh0cmFzOgogICAgICAgICBpZiBrd2FyZ3NfZXh0cmE6CiAg
ICAgICAgICAgICBmbGFnc19zdHJpbmcgPSAiIHdpdGggZmxhZ3MgJXMiICUgIiAiLmpvaW4oCi0g
ICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKGt3YXJn
c19leHRyYSkpCisgICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4ga3dh
cmdzX2V4dHJhLml0ZW1zKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmbGFnc19zdHJp
bmcgPSAiIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0ZHJpdmVyLWV4dHJhLmpzCmluZGV4IDljMGM2OWFmM2EzZi4uZTE1
NjUyZGNkZmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcwpAQCAtMzQsNyArMzQsNyBAQAog
ICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gInRlc3Rkcml2ZXItY29tcGxldGUiKSB7
CiAgICAgICAgICAgICBjb25zdCBjbWRfaWQgPSBkYXRhLmNtZF9pZDsKICAgICAgICAgICAgIGNv
bnN0IFtvbl9zdWNjZXNzLCBvbl9mYWlsdXJlXSA9IHBlbmRpbmcuZ2V0KGNtZF9pZCk7Ci0gICAg
ICAgICAgICBwZW5kaW5nLmNsZWFyKGNtZF9pZCk7CisgICAgICAgICAgICBwZW5kaW5nLmRlbGV0
ZShjbWRfaWQpOwogICAgICAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSBkYXRhLnN0YXR1cyA9PT0g
InN1Y2Nlc3MiID8gb25fc3VjY2VzcyA6IG9uX2ZhaWx1cmU7CiAgICAgICAgICAgICByZXNvbHZl
cihkYXRhKTsKICAgICAgICAgICAgIGlmIChpc190ZXN0X2NvbnRleHQpIHsKQEAgLTE2OSw2ICsx
NjksMTAgQEAKICAgICAgICAgcmV0dXJuIGNyZWF0ZV9hY3Rpb24oImNsaWNrIiwge3NlbGVjdG9y
LCBjb250ZXh0fSk7CiAgICAgfTsKIAorICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5k
ZWxldGVfYWxsX2Nvb2tpZXMgPSBmdW5jdGlvbihjb250ZXh0PW51bGwpIHsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZV9hY3Rpb24oImRlbGV0ZV9hbGxfY29va2llcyIsIHtjb250ZXh0fSk7CisgICAg
fTsKKwogICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5zZW5kX2tleXMgPSBmdW5jdGlv
bihlbGVtZW50LCBrZXlzKSB7CiAgICAgICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0X3NlbGVjdG9y
KGVsZW1lbnQpOwogICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0X2NvbnRleHQoZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm8uanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm8uanMKaW5kZXggYTEwYjY5ZGY1NTA0
Li40YTI3ZGMyN2VmNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9y
dC1zZXJ2by5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm8uanMK
QEAgLTEsNCArMSw0IEBACi12YXIgcHJvcHMgPSB7b3V0cHV0OiUob3V0cHV0KWR9OwordmFyIHBy
b3BzID0ge291dHB1dDolKG91dHB1dClkLCBkZWJ1ZzogJShkZWJ1ZylzfTsKIHZhciBzdGFydF9s
b2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiBzdGFydF9sb2MuaHJlZiA9IGxvY2F0
aW9uLmhyZWY7CiBzZXR1cChwcm9wcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhh
cm5lc3NyZXBvcnQtc2Vydm9kcml2ZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBv
cnQtc2Vydm9kcml2ZXIuanMKaW5kZXggYzg4ODQxMzYwNDcwLi43ODE5NTM4ZGJiOGYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC1zZXJ2b2RyaXZlci5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm9kcml2ZXIuanMKQEAgLTEsNCAr
MSw0IEBACi1zZXR1cCh7b3V0cHV0OiUob3V0cHV0KWR9KTsKK3NldHVwKHtvdXRwdXQ6JShvdXRw
dXQpZCwgZGVidWc6ICUoZGVidWcpc30pOwogCiBhZGRfY29tcGxldGlvbl9jYWxsYmFjayhmdW5j
dGlvbigpIHsKICAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbiAodGVzdHMsIHN0
YXR1cykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LmpzCmluZGV4IDljZDY4MGUxNGFlZC4uZDM4
NTY5MjQ0NWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LmpzCkBAIC03Myw2ICs3Myw3IEBA
IHdpbmRvdy5fX3dwdHJ1bm5lcl9wcm9jZXNzX25leHRfZXZlbnQgPSBmdW5jdGlvbigpIHsKICAg
dmFyIHByb3BzID0ge291dHB1dDogJShvdXRwdXQpZCwKICAgICAgICAgICAgICAgIHRpbWVvdXRf
bXVsdGlwbGllcjogJSh0aW1lb3V0X211bHRpcGxpZXIpcywKICAgICAgICAgICAgICAgIGV4cGxp
Y2l0X3RpbWVvdXQ6ICUoZXhwbGljaXRfdGltZW91dClzLAorICAgICAgICAgICAgICAgZGVidWc6
ICUoZGVidWcpcywKICAgICAgICAgICAgICAgIG1lc3NhZ2VfZXZlbnRzOiBbImNvbXBsZXRpb24i
XX07CiAKICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rpb24odGVzdHMsIGhhcm5lc3Nf
c3RhdHVzKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0bG9hZGVyLnB5CmluZGV4IDRhM2ZhNDI3MzY1NC4uMzQ2ZmUyYTI3MjA4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdGxvYWRlci5weQpAQCAtMSwxNiArMSwxNSBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBq
c29uCiBpbXBvcnQgb3MKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3Bs
aXQKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxpdAogZnJvbSBhYmMgaW1wb3J0IEFC
Q01ldGEsIGFic3RyYWN0bWV0aG9kCi1mcm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgRW1wdHkK
K2Zyb20gcXVldWUgaW1wb3J0IEVtcHR5CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdCwgZGVxdWUKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBRdWV1ZQotZnJvbSBzaXgg
aW1wb3J0IGVuc3VyZV9iaW5hcnksIGl0ZXJpdGVtcwotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJh
bmdlCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX2JpbmFyeQogCiBmcm9tIC4gaW1wb3J0IG1hbmlm
ZXN0aW5jbHVkZQogZnJvbSAuIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCitmcm9tIC4gaW1wb3J0
IG1wY29udGV4dAogZnJvbSAuIGltcG9ydCB3cHR0ZXN0CiBmcm9tIG1vemxvZyBpbXBvcnQgc3Ry
dWN0dXJlZAogCkBAIC00MSw3ICs0MCw3IEBAIGNsYXNzIFRlc3RHcm91cHNGaWxlKG9iamVjdCk6
CiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIHNlbGYuZ3JvdXBfYnlfdGVzdCA9IHt9Ci0g
ICAgICAgIGZvciBncm91cCwgdGVzdF9pZHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpOgorICAg
ICAgICBmb3IgZ3JvdXAsIHRlc3RfaWRzIGluIHNlbGYuX2RhdGEuaXRlbXMoKToKICAgICAgICAg
ICAgIGZvciB0ZXN0X2lkIGluIHRlc3RfaWRzOgogICAgICAgICAgICAgICAgIHNlbGYuZ3JvdXBf
YnlfdGVzdFt0ZXN0X2lkXSA9IGdyb3VwCiAKQEAgLTUxLDYgKzUwLDE2IEBAIGNsYXNzIFRlc3RH
cm91cHNGaWxlKG9iamVjdCk6CiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAg
ICAgIHJldHVybiBzZWxmLl9kYXRhW2tleV0KIAorZGVmIHJlYWRfaW5jbHVkZV9mcm9tX2ZpbGUo
ZmlsZSk6CisgICAgbmV3X2luY2x1ZGUgPSBbXQorICAgIHdpdGggb3BlbihmaWxlKSBhcyBmOgor
ICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQor
ICAgICAgICAgICAgIyBBbGxvdyB3aG9sZS1saW5lIGNvbW1lbnRzOworICAgICAgICAgICAgIyBm
cmFnbWVudHMgbWVhbiB3ZSBjYW4ndCBoYXZlIHBhcnRpYWwgbGluZSAjLWJhc2VkIGNvbW1lbnRz
CisgICAgICAgICAgICBpZiBsZW4obGluZSkgPiAwIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCIj
Iik6CisgICAgICAgICAgICAgICAgbmV3X2luY2x1ZGUuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJu
IG5ld19pbmNsdWRlCiAKIGRlZiB1cGRhdGVfaW5jbHVkZV9mb3JfZ3JvdXBzKHRlc3RfZ3JvdXBz
LCBpbmNsdWRlKToKICAgICBpZiBpbmNsdWRlIGlzIE5vbmU6CkBAIC0xNzMsNyArMTgyLDcgQEAg
Y2xhc3MgTWFuaWZlc3RMb2FkZXIob2JqZWN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAg
ICAgICBydiA9IHt9Ci0gICAgICAgIGZvciB1cmxfYmFzZSwgcGF0aHMgaW4gaXRlcml0ZW1zKHNl
bGYudGVzdF9wYXRocyk6CisgICAgICAgIGZvciB1cmxfYmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0
X3BhdGhzLml0ZW1zKCk6CiAgICAgICAgICAgICBtYW5pZmVzdF9maWxlID0gc2VsZi5sb2FkX21h
bmlmZXN0KHVybF9iYXNlPXVybF9iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKnBhdGhzKQogICAgICAgICAgICAgcGF0aF9kYXRhID0geyJ1cmxf
YmFzZSI6IHVybF9iYXNlfQpAQCAtMzkwLDcgKzM5OSw4IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2Uo
VGVzdFNvdXJjZSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMs
IHRlc3RzLCAqKmt3YXJncyk6Ci0gICAgICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCisgICAgICAg
IG1wID0gbXBjb250ZXh0LmdldF9jb250ZXh0KCkKKyAgICAgICAgdGVzdF9xdWV1ZSA9IG1wLlF1
ZXVlKCkKICAgICAgICAgZ3JvdXBzID0gW10KIAogICAgICAgICBzdGF0ZSA9IHt9CkBAIC00MjMs
NyArNDMzLDggQEAgY2xhc3MgR3JvdXBlZFNvdXJjZShUZXN0U291cmNlKToKIGNsYXNzIFNpbmds
ZVRlc3RTb3VyY2UoVGVzdFNvdXJjZSk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG1ha2Vf
cXVldWUoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgotICAgICAgICB0ZXN0X3F1ZXVlID0gUXVldWUo
KQorICAgICAgICBtcCA9IG1wY29udGV4dC5nZXRfY29udGV4dCgpCisgICAgICAgIHRlc3RfcXVl
dWUgPSBtcC5RdWV1ZSgpCiAgICAgICAgIHByb2Nlc3NlcyA9IGt3YXJnc1sicHJvY2Vzc2VzIl0K
ICAgICAgICAgcXVldWVzID0gW2RlcXVlKFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQog
ICAgICAgICBtZXRhZGF0YXMgPSBbY2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJh
bmdlKHByb2Nlc3NlcyldCkBAIC00NjcsOSArNDc4LDEwIEBAIGNsYXNzIEdyb3VwRmlsZVRlc3RT
b3VyY2UoVGVzdFNvdXJjZSk6CiAKICAgICAgICAgaWRzX3RvX3Rlc3RzID0ge3Rlc3QuaWQ6IHRl
c3QgZm9yIHRlc3QgaW4gdGVzdHN9CiAKLSAgICAgICAgdGVzdF9xdWV1ZSA9IFF1ZXVlKCkKKyAg
ICAgICAgbXAgPSBtcGNvbnRleHQuZ2V0X2NvbnRleHQoKQorICAgICAgICB0ZXN0X3F1ZXVlID0g
bXAuUXVldWUoKQogCi0gICAgICAgIGZvciBncm91cF9uYW1lLCB0ZXN0X2lkcyBpbiBpdGVyaXRl
bXModGVzdHNfYnlfZ3JvdXApOgorICAgICAgICBmb3IgZ3JvdXBfbmFtZSwgdGVzdF9pZHMgaW4g
dGVzdHNfYnlfZ3JvdXAuaXRlbXMoKToKICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhID0geyJz
Y29wZSI6IGdyb3VwX25hbWV9CiAgICAgICAgICAgICBncm91cCA9IGRlcXVlKCkKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weQppbmRleCA5NjFjNDBmYzViODAuLmUyMTdmOGQ0M2Q2OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Rlc3RydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkKQEAg
LTEsMTQgKzEsMTQgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwog
Ci1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdHJhY2Vi
YWNrCi1mcm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgRW1wdHkKK2Zyb20gcXVldWUgaW1wb3J0
IEVtcHR5CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIG11bHRpcHJv
Y2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgY3VycmVudF9wcm9jZXNzLCBRdWV1ZQogCiBmcm9tIG1v
emxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZywgY2FwdHVyZQogCitmcm9tIC4gaW1wb3J0IG1wY29u
dGV4dAorCiAjIFNwZWNpYWwgdmFsdWUgdXNlZCBhcyBhIHNlbnRpbmFsIGluIHZhcmlvdXMgY29t
bWFuZHMKIFN0b3AgPSBvYmplY3QoKQogCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFRlc3RSdW5u
ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5yZXN1bHRfcXVldWUgPSByZXN1bHRfcXVldWUKIAog
ICAgICAgICBzZWxmLmV4ZWN1dG9yID0gZXhlY3V0b3IKLSAgICAgICAgc2VsZi5uYW1lID0gY3Vy
cmVudF9wcm9jZXNzKCkubmFtZQorICAgICAgICBzZWxmLm5hbWUgPSBtcGNvbnRleHQuZ2V0X2Nv
bnRleHQoKS5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lCiAgICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpAQCAtMzExLDkgKzMxMSwxMSBAQCBjbGFz
cyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5leGVj
dXRvcl9jbHMgPSBleGVjdXRvcl9jbHMKICAgICAgICAgc2VsZi5leGVjdXRvcl9rd2FyZ3MgPSBl
eGVjdXRvcl9rd2FyZ3MKIAorICAgICAgICBtcCA9IG1wY29udGV4dC5nZXRfY29udGV4dCgpCisK
ICAgICAgICAgIyBGbGFncyB1c2VkIHRvIHNodXQgZG93biB0aGlzIHRocmVhZCBpZiB3ZSBnZXQg
YSBzaWdpbnQKICAgICAgICAgc2VsZi5wYXJlbnRfc3RvcF9mbGFnID0gc3RvcF9mbGFnCi0gICAg
ICAgIHNlbGYuY2hpbGRfc3RvcF9mbGFnID0gbXVsdGlwcm9jZXNzaW5nLkV2ZW50KCkKKyAgICAg
ICAgc2VsZi5jaGlsZF9zdG9wX2ZsYWcgPSBtcC5FdmVudCgpCiAKICAgICAgICAgc2VsZi5yZXJ1
biA9IHJlcnVuCiAgICAgICAgIHNlbGYucnVuX2NvdW50ID0gMApAQCAtMzI2LDggKzMyOCw4IEBA
IGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBhc3Nl
cnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCiAgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVjb3Jk
aW5nCiAKLSAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQotICAgICAgICBzZWxm
LnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKKyAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gbXAu
UXVldWUoKQorICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZSA9IG1wLlF1ZXVlKCkKIAogICAgICAg
ICBzZWxmLnRlc3RfcnVubmVyX3Byb2MgPSBOb25lCiAKQEAgLTM1OSw3ICszNjEsOCBAQCBjbGFz
cyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc3BpbnMuIiIi
CiAgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3RydW5uZXIiLCAic3RhcnR1cCJdKQog
ICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcihzZWxm
LnN1aXRlX25hbWUpCi0gICAgICAgIHdpdGggc2VsZi5icm93c2VyX2NscyhzZWxmLmxvZ2dlciwg
KipzZWxmLmJyb3dzZXJfa3dhcmdzKSBhcyBicm93c2VyOgorICAgICAgICB3aXRoIHNlbGYuYnJv
d3Nlcl9jbHMoc2VsZi5sb2dnZXIsIHJlbW90ZV9xdWV1ZT1zZWxmLmNvbW1hbmRfcXVldWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnNlbGYuYnJvd3Nlcl9rd2FyZ3MpIGFzIGJy
b3dzZXI6CiAgICAgICAgICAgICBzZWxmLmJyb3dzZXIgPSBCcm93c2VyTWFuYWdlcihzZWxmLmxv
Z2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRf
cXVldWUsCkBAIC01MTksOSArNTIyLDExIEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVh
ZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgICAgIGV4ZWN1dG9yX2Jyb3dzZXJfa3dhcmdzLAog
ICAgICAgICAgICAgICAgIHNlbGYuY2FwdHVyZV9zdGRpbywKICAgICAgICAgICAgICAgICBzZWxm
LmNoaWxkX3N0b3BfZmxhZykKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lcl9wcm9jID0gUHJvY2Vz
cyh0YXJnZXQ9c3RhcnRfcnVubmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3M9YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lPSJUZXN0UnVubmVyLSVpIiAlIHNlbGYubWFuYWdlcl9udW1iZXIpCisKKyAgICAgICAg
bXAgPSBtcGNvbnRleHQuZ2V0X2NvbnRleHQoKQorICAgICAgICBzZWxmLnRlc3RfcnVubmVyX3By
b2MgPSBtcC5Qcm9jZXNzKHRhcmdldD1zdGFydF9ydW5uZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU9IlRlc3RSdW5uZXItJWkiICUgc2VsZi5tYW5hZ2Vy
X251bWJlcikKICAgICAgICAgc2VsZi50ZXN0X3J1bm5lcl9wcm9jLnN0YXJ0KCkKICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoIlRlc3QgcnVubmVyIHN0YXJ0ZWQiKQogICAgICAgICAjIE5vdyB3
ZSB3YWl0IGZvciBlaXRoZXIgYW4gaW5pdF9zdWNjZWVkZWQgZXZlbnQgb3IgYW4gaW5pdF9mYWls
ZWQgZXZlbnQKQEAgLTYxMCw2ICs2MTUsOSBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJl
YWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLnRpbWVy
IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi50aW1lci5jYW5jZWwoKQorCisgICAgICAg
IHNlbGYuYnJvd3Nlci5icm93c2VyLm1heWJlX3BhcnNlX3RvbWJzdG9uZSgpCisKICAgICAgICAg
IyBXcml0ZSB0aGUgcmVzdWx0IG9mIGVhY2ggc3VidGVzdAogICAgICAgICBmaWxlX3Jlc3VsdCwg
dGVzdF9yZXN1bHRzID0gcmVzdWx0cwogICAgICAgICBzdWJ0ZXN0X3VuZXhwZWN0ZWQgPSBGYWxz
ZQpAQCAtNjY0LDggKzY3Miw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5U
aHJlYWQpOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlVuZXhwZWN0ZWQgY291bnQg
aW4gdGhpcyB0aHJlYWQgJWkiICUgc2VsZi51bmV4cGVjdGVkX2NvdW50KQogCiAgICAgICAgIGlm
ICJhc3NlcnRpb25fY291bnQiIGluIGZpbGVfcmVzdWx0LmV4dHJhOgotICAgICAgICAgICAgYXNz
ZXJ0aW9uX2NvdW50ID0gZmlsZV9yZXN1bHQuZXh0cmEucG9wKCJhc3NlcnRpb25fY291bnQiKQot
ICAgICAgICAgICAgaWYgYXNzZXJ0aW9uX2NvdW50ID4gMDoKKyAgICAgICAgICAgIGFzc2VydGlv
bl9jb3VudCA9IGZpbGVfcmVzdWx0LmV4dHJhWyJhc3NlcnRpb25fY291bnQiXQorICAgICAgICAg
ICAgaWYgYXNzZXJ0aW9uX2NvdW50IGlzIG5vdCBOb25lIGFuZCBhc3NlcnRpb25fY291bnQgPiAw
OgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmFzc2VydGlvbl9jb3VudCh0ZXN0LmlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoYXNzZXJ0aW9u
X2NvdW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dC5taW5fYXNzZXJ0aW9uX2NvdW50LApAQCAtNzY2LDIwICs3NzQsMjYgQEAgY2xhc3MgVGVzdFJ1
bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVn
KCJ3YWl0aW5nIGZvciBydW5uZXIgcHJvY2VzcyB0byBlbmQiKQogICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyX3Byb2Muam9pbigxMCkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFmdGVyIGpv
aW4iKQorICAgICAgICBtcCA9IG1wY29udGV4dC5nZXRfY29udGV4dCgpCiAgICAgICAgIGlmIHNl
bGYudGVzdF9ydW5uZXJfcHJvYy5pc19hbGl2ZSgpOgogICAgICAgICAgICAgIyBUaGlzIG1pZ2h0
IGxlYWsgYSBmaWxlIGhhbmRsZSBmcm9tIHRoZSBxdWV1ZQogICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygiRm9yY2libHkgdGVybWluYXRpbmcgcnVubmVyIHByb2Nlc3MiKQogICAgICAg
ICAgICAgc2VsZi50ZXN0X3J1bm5lcl9wcm9jLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzZWxm
LmxvZ2dlci5kZWJ1ZygiQWZ0ZXIgdGVybWluYXRpbmcgcnVubmVyIHByb2Nlc3MiKQogCiAgICAg
ICAgICAgICAjIE11bHRpcHJvY2Vzc2luZyBxdWV1ZXMgYXJlIGJhY2tlZCBieSBvcGVyYXRpbmcg
c3lzdGVtIHBpcGVzLiBJZgogICAgICAgICAgICAgIyB0aGUgcGlwZSBpbiB0aGUgY2hpbGQgcHJv
Y2VzcyBoYWQgYnVmZmVyZWQgZGF0YSBhdCB0aGUgdGltZSBvZgogICAgICAgICAgICAgIyBmb3Jj
ZWQgdGVybWluYXRpb24sIHRoZSBxdWV1ZSBpcyBubyBsb25nZXIgaW4gYSB1c2FibGUgc3RhdGUK
ICAgICAgICAgICAgICMgKHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gcmV0cmlldmUgaXRlbXMgbWF5
IGJsb2NrIGluZGVmaW5pdGVseSkuCiAgICAgICAgICAgICAjIERpc2NhcmQgdGhlIHBvdGVudGlh
bGx5LWNvcnJ1cHRlZCBxdWV1ZSBhbmQgY3JlYXRlIGEgbmV3IG9uZS4KKyAgICAgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJSZWNyZWF0aW5nIGNvbW1hbmQgcXVldWUiKQorICAgICAgICAgICAg
c2VsZi5jb21tYW5kX3F1ZXVlLmNhbmNlbF9qb2luX3RocmVhZCgpCiAgICAgICAgICAgICBzZWxm
LmNvbW1hbmRfcXVldWUuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0g
UXVldWUoKQorICAgICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gbXAuUXVldWUoKQorICAg
ICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlY3JlYXRpbmcgcmVtb3RlIHF1ZXVlIikKKyAg
ICAgICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlLmNhbmNlbF9qb2luX3RocmVhZCgpCiAgICAgICAg
ICAgICBzZWxmLnJlbW90ZV9xdWV1ZS5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLnJlbW90ZV9x
dWV1ZSA9IFF1ZXVlKCkKKyAgICAgICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gbXAuUXVldWUo
KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJ1bm5lciBw
cm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJWkiICUgc2VsZi50ZXN0X3J1bm5lcl9wcm9jLmV4aXRj
b2RlKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0X18u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0X18ucHkKaW5kZXggYTY4MzRi
ODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93
c2Vycy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0
X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfd2Vi
a2l0Z3RrLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfd2Via2l0Z3RrLnB5
CmluZGV4IDYxNTBkNTBhY2Y5My4uOThjMjk4OGRlZWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF93ZWJraXRndGsucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL2Jyb3dzZXJzL3Rlc3Rfd2Via2l0Z3RrLnB5CkBAIC00MSwxMiArNDEsMTMgQEAgZGVmIHRl
c3Rfd2Via2l0Z3RrX2NlcnRpZmljYXRlX2RvbWFpbl9saXN0KHByb2R1Y3QpOgogICAgIGt3YXJn
c1sid2ViZHJpdmVyX2JpbmFyeSJdID0gTm9uZQogICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVz
dCJdID0gRmFsc2UKICAgICBrd2FyZ3NbInBhdXNlX29uX3VuZXhwZWN0ZWQiXSA9IEZhbHNlCisg
ICAga3dhcmdzWyJkZWJ1Z190ZXN0Il0gPSBGYWxzZQogICAgIHdpdGggQ29uZmlnQnVpbGRlcihi
cm93c2VyX2hvc3Q9ImV4YW1wbGUubmV0IiwKICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJu
YXRlX2hvc3RzPXsiYWx0IjogImV4YW1wbGUub3JnIn0sCiAgICAgICAgICAgICAgICAgICAgICAg
IHN1YmRvbWFpbnM9eyJhIiwgImIifSwKICAgICAgICAgICAgICAgICAgICAgICAgbm90X3N1YmRv
bWFpbnM9eyJ4IiwgInkifSkgYXMgZW52X2NvbmZpZzoKIAotICAgICAgICBleGVjdXRvcl9hcmdz
ID0gZ2V0X2V4ZWN1dG9yX2t3YXJncyhOb25lLCBlbnZfY29uZmlnLCBOb25lLCBOb25lLCAqKmt3
YXJncykKKyAgICAgICAgZXhlY3V0b3JfYXJncyA9IGdldF9leGVjdXRvcl9rd2FyZ3MoTm9uZSwg
Tm9uZSwgZW52X2NvbmZpZywgTm9uZSwgTm9uZSwgKiprd2FyZ3MpCiAgICAgICAgIGFzc2VydCgn
Y2FwYWJpbGl0aWVzJyBpbiBleGVjdXRvcl9hcmdzKQogICAgICAgICBhc3NlcnQoJ3dlYmtpdGd0
azpicm93c2VyT3B0aW9ucycgaW4gZXhlY3V0b3JfYXJnc1snY2FwYWJpbGl0aWVzJ10pCiAgICAg
ICAgIGFzc2VydCgnY2VydGlmaWNhdGVzJyBpbiBleGVjdXRvcl9hcmdzWydjYXBhYmlsaXRpZXMn
XVsnd2Via2l0Z3RrOmJyb3dzZXJPcHRpb25zJ10pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvYnJvd3NlcnMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3Nl
cnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1Njk4Nzcz
MTI3Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy9icm93c2Vycy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9i
cm93c2Vycy90ZXN0X3NhdWNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rf
d2Via2l0Z3RrLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0
ZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA2MGIx
YjBhNWE4NzguLjlhYTU1MDJiYjZiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rl
c3RfZm9ybWF0dGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJz
LnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IGpzb24KIGltcG9ydCB0aW1lCi1mcm9tIHNpeC5t
b3ZlcyBpbXBvcnQgY1N0cmluZ0lPIGFzIFN0cmluZ0lPCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJ
TwogCiBpbXBvcnQgbW9jawogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9w
cm9kdWN0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Byb2R1Y3RzLnB5CmluZGV4IDVk
MmJjZjA3NWQwZi4uNzU3OTRkNDgxMzEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMv
dGVzdF9wcm9kdWN0cy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9wcm9kdWN0cy5w
eQpAQCAtNDIsNiArNDIsNyBAQCBkZWYgdGVzdF9zZXJ2ZXJfc3RhcnRfY29uZmlnKHByb2R1Y3Qp
OgogICAgICAgICB3aXRoIGVudmlyb25tZW50LlRlc3RFbnZpcm9ubWVudCh0ZXN0X3BhdGhzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVudl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7InR5cGUiOiAibm9uZSJ9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
dGVzdGxvYWRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkKaW5k
ZXggMzk0ZDJhMDAxNzdiLi5mNjhiYjVmYjMzYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVz
dGxvYWRlci5weQpAQCAtOCw2ICs4LDcgQEAgaW1wb3J0IHB5dGVzdAogCiBmcm9tIG1vemxvZyBp
bXBvcnQgc3RydWN0dXJlZAogZnJvbSAuLnRlc3Rsb2FkZXIgaW1wb3J0IFRlc3RGaWx0ZXIgYXMg
RmlsdGVyLCBUZXN0TG9hZGVyIGFzIExvYWRlcgorZnJvbSAuLnRlc3Rsb2FkZXIgaW1wb3J0IHJl
YWRfaW5jbHVkZV9mcm9tX2ZpbGUKIGZyb20gLnRlc3Rfd3B0dGVzdCBpbXBvcnQgbWFrZV9tb2Nr
X21hbmlmZXN0CiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCkBAIC01OCw2ICs1
OSwyOCBAQCBkZWYgdGVzdF9sb2FkZXJfaDJfdGVzdHMoKToKICAgICBhc3NlcnQgbGVuKGxvYWRl
ci5kaXNhYmxlZF90ZXN0c1sidGVzdGhhcm5lc3MiXSkgPT0gMQogICAgIGFzc2VydCBsb2FkZXIu
ZGlzYWJsZWRfdGVzdHNbInRlc3RoYXJuZXNzIl1bMF0udXJsID09ICIvYS9iYXIuaDIuaHRtbCIK
IAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0iTmFtZWRUZW1wb3JhcnlGaWxlIGNhbm5vdCBiZSByZW9wZW5lZCBv
biBXaW4zMiIpCitkZWYgdGVzdF9pbmNsdWRlX2ZpbGUoKToKKyAgICB0ZXN0X2Nhc2VzID0gIiIi
CisjIFRoaXMgaXMgYSBjb21tZW50CisvZm9vL2Jhci1lcnJvci5odHRwcy5odG1sCisvZm9vL2Jh
ci1zdWNjZXNzLmh0dHBzLmh0bWwKKy9mb28vaWRsaGFybmVzcy5odHRwcy5hbnkuaHRtbAorL2Zv
by9pZGxoYXJuZXNzLmh0dHBzLmFueS53b3JrZXIuaHRtbAorICAgICIiIgorCisgICAgd2l0aCB0
ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0id3QiKSBhcyBmOgorICAgICAgICBmLndy
aXRlKHRlc3RfY2FzZXMpCisgICAgICAgIGYuZmx1c2goKQorCisgICAgICAgIGluY2x1ZGUgPSBy
ZWFkX2luY2x1ZGVfZnJvbV9maWxlKGYubmFtZSkKKworICAgICAgICBhc3NlcnQgbGVuKGluY2x1
ZGUpID09IDQKKyAgICAgICAgYXNzZXJ0ICIvZm9vL2Jhci1lcnJvci5odHRwcy5odG1sIiBpbiBp
bmNsdWRlCisgICAgICAgIGFzc2VydCAiL2Zvby9iYXItc3VjY2Vzcy5odHRwcy5odG1sIiBpbiBp
bmNsdWRlCisgICAgICAgIGFzc2VydCAiL2Zvby9pZGxoYXJuZXNzLmh0dHBzLmFueS5odG1sIiBp
biBpbmNsdWRlCisgICAgICAgIGFzc2VydCAiL2Zvby9pZGxoYXJuZXNzLmh0dHBzLmFueS53b3Jr
ZXIuaHRtbCIgaW4gaW5jbHVkZQogCiBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIsCiAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUg
Y2Fubm90IGJlIHJlb3BlbmVkIG9uIFdpbjMyIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0cy90ZXN0X3VwZGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQpp
bmRleCBhMWJhOGRlMjg3ODAuLjc3MDQzODM5ODIxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL3Rlc3RfdXBkYXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0
ZS5weQpAQCAtNDQyLDcgKzQ0Miw3IEBAIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVk
KCk6CiAKICAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQogICAgIGFzc2VydCBu
ZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0uZ2V0KAotICAgICAgICAi
ZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCisgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0KIAogCiBk
ZWYgdGVzdF91cGRhdGVfYW5kX3ByZXNlcnZlX3VuY2hhbmdlZF9leHBlY3RlZF9pbnRlcm1pdHRl
bnQoKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOWVlMjdjNGQzMGJjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jhc2Uu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9leGVjdXRvcnMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3Jt
YXR0ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Byb2R1Y3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rz
L3Rlc3Rfc3RhYmlsaXR5LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X3dwdHRlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N0YXRlLnB5CmluZGV4IGJkYjIzZmVkOTllMS4uYTUy
NmMyNGM5NTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N0YXRlLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgb3MK
LWZyb20gc2l4Lm1vdmVzIGltcG9ydCBjUGlja2xlIGFzIHBpY2tsZSAgIyBub3FhOiBOODEzCitp
bXBvcnQgcGlja2xlCiAKIGhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSkKIApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBTYXZlZFN0YXRlKEJhc2VTdGF0ZSk6
CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjbHMuZmls
ZW5hbWUpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICB3aXRoIG9w
ZW4oY2xzLmZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgd2l0aCBvcGVuKGNscy5maWxlbmFt
ZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAg
IHJ2ID0gcGlja2xlLmxvYWQoZikKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJM
b2FkaW5nIGRhdGEgJXIiICUgKHJ2Ll9kYXRhLCkpCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3Mg
U2F2ZWRTdGF0ZShCYXNlU3RhdGUpOgogCiAgICAgZGVmIHNhdmUoc2VsZik6CiAgICAgICAgICIi
IldyaXRlIHRoZSBzdGF0ZSB0byBkaXNrIiIiCi0gICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVu
YW1lLCAidyIpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBh
cyBmOgogICAgICAgICAgICAgcGlja2xlLmR1bXAoc2VsZiwgZikKIAogICAgIGRlZiBjbGVhcihz
ZWxmKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3luYy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci91cGRhdGUvc3luYy5weQppbmRleCBmODc4NzUyZjQ1MTQuLjRhY2UyOGY0NDNjZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvc3luYy5weQpAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBVcGRhdGVDaGVja291dChTdGVw
KToKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb2NhbF9icmFuY2gpCiAgICAgICAg
IHN5bmNfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzeW5jX3RyZWUucm9vdCkKICAgICAgICAgaWYg
c3luY19wYXRoIG5vdCBpbiBzeXMucGF0aDoKLSAgICAgICAgICAgIGZyb20gdXBkYXRlIGltcG9y
dCBzZXR1cF9wYXRocworICAgICAgICAgICAgZnJvbSAudXBkYXRlIGltcG9ydCBzZXR1cF9wYXRo
cwogICAgICAgICAgICAgc2V0dXBfcGF0aHMoc3luY19wYXRoKQogCiAgICAgZGVmIHJlc3RvcmUo
c2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CmluZGV4IGYzNjI3NzBmZjE2ZC4uMmY0M2JhY2Qx
NWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3VwZGF0ZS90cmVlLnB5CkBAIC0zLDggKzMsNiBAQCBpbXBvcnQgcmUKIGltcG9ydCBz
dWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdl
Ci0KIGZyb20gLi4gaW1wb3J0IHZjcwogZnJvbSAuLnZjcyBpbXBvcnQgZ2l0LCBoZwogCkBAIC04
Nyw3ICs4NSw3IEBAIGNsYXNzIEhnVHJlZShvYmplY3QpOgogCiAgICAgQHByb3BlcnR5CiAgICAg
ZGVmIGlzX2NsZWFuKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5oZygic3RhdHVzIikuc3Ry
aXAoKSA9PSAiIgorICAgICAgICByZXR1cm4gc2VsZi5oZygic3RhdHVzIikuc3RyaXAoKSA9PSBi
IiIKIAogICAgIGRlZiBhZGRfbmV3KHNlbGYsIHByZWZpeD1Ob25lKToKICAgICAgICAgaWYgcHJl
Zml4IGlzIG5vdCBOb25lOgpAQCAtMTA1LDcgKzEwMyw3IEBAIGNsYXNzIEhnVHJlZShvYmplY3Qp
OgogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CiAgICAgICAg
ICAgICBwYXNzCiAKLSAgICAgICAgcGF0Y2hfbmFtZXMgPSBbaXRlbS5zdHJpcCgpIGZvciBpdGVt
IGluIHNlbGYuaGcoInFzZXJpZXMiKS5zcGxpdCgiXG4iKSBpZiBpdGVtLnN0cmlwKCldCisgICAg
ICAgIHBhdGNoX25hbWVzID0gW2l0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiBzZWxmLmhnKCJxc2Vy
aWVzIikuc3BsaXQoYiJcbiIpIGlmIGl0ZW0uc3RyaXAoKV0KIAogICAgICAgICBzdWZmaXggPSAw
CiAgICAgICAgIHRlc3RfbmFtZSA9IHBhdGNoX25hbWUKQEAgLTE0Miw3ICsxNDAsNyBAQCBjbGFz
cyBHaXRUcmVlKG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdD1Ob25lLCBs
b2dfZXJyb3I9VHJ1ZSk6CiAgICAgICAgIGlmIHJvb3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJv
b3QgPSBnaXQoInJldi1wYXJzZSIsICItLXNob3ctdG9wbGV2ZWwiLCBsb2dfZXJyb3I9bG9nX2Vy
cm9yKS5zdHJpcCgpCisgICAgICAgICAgICByb290ID0gZ2l0KCJyZXYtcGFyc2UiLCAiLS1zaG93
LXRvcGxldmVsIiwgbG9nX2Vycm9yPWxvZ19lcnJvcikuc3RyaXAoKS5kZWNvZGUoJ3V0Zi04JykK
ICAgICAgICAgc2VsZi5yb290ID0gcm9vdAogICAgICAgICBzZWxmLmdpdCA9IHZjcy5iaW5kX3Rv
X3JlcG8oZ2l0LCBzZWxmLnJvb3QsIGxvZ19lcnJvcj1sb2dfZXJyb3IpCiAgICAgICAgIHNlbGYu
bWVzc2FnZSA9IE5vbmUKQEAgLTE3OCw3ICsxNzYsNyBAQCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6
CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfY2xlYW4oc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLmdpdCgic3RhdHVzIikuc3RyaXAoKSA9PSAiIgorICAgICAgICByZXR1cm4gc2VsZi5n
aXQoInN0YXR1cyIpLnN0cmlwKCkgPT0gYiIiCiAKICAgICBkZWYgYWRkX25ldyhzZWxmLCBwcmVm
aXg9Tm9uZSk6CiAgICAgICAgICIiIkFkZCBmaWxlcyB0byB0aGUgc3RhZ2luZyBhcmVhLgpAQCAt
MjAzLDcgKzIwMSw3IEBAIGNsYXNzIEdpdFRyZWUob2JqZWN0KToKICAgICAgICAgICAgIGYuc2Vl
aygwKQogICAgICAgICAgICAgaWdub3JlZF9maWxlcyA9IHN5bmNfdHJlZS5naXQoImNoZWNrLWln
bm9yZSIsICItLW5vLWluZGV4IiwgIi0tc3RkaW4iLCAiLXoiLCBzdGRpbj1mKQogICAgICAgICBh
cmdzID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIGlnbm9yZWRfZmlsZXMuc3BsaXQoJ1wwJyk6
CisgICAgICAgIGZvciBlbnRyeSBpbiBpZ25vcmVkX2ZpbGVzLmRlY29kZSgndXRmLTgnKS5zcGxp
dCgnXDAnKToKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIGVu
dHJ5KSkKICAgICAgICAgaWYgYXJnczoKICAgICAgICAgICAgIHNlbGYuZ2l0KCJhZGQiLCAiLS1m
b3JjZSIsICphcmdzKQpAQCAtMjE5LDcgKzIxNyw3IEBAIGNsYXNzIEdpdFRyZWUob2JqZWN0KToK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHJlZl9maWx0ZXIpCiAgICAgICAgIGRhdGEgPSBzZWxm
LmdpdCgic2hvdy1yZWYiLCAqYXJncykKICAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgbGlu
ZSBpbiBkYXRhLnNwbGl0KCJcbiIpOgorICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KGIi
XG4iKToKICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0cmlwKCk6CiAgICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgIHNoYTEsIHJlZiA9IGxpbmUuc3BsaXQoKQpAQCAtMjM3LDcg
KzIzNSw3IEBAIGNsYXNzIEdpdFRyZWUob2JqZWN0KToKICAgICAgICAgICAgIGFyZ3MuYXBwZW5k
KHJlZl9maWx0ZXIpCiAgICAgICAgIGRhdGEgPSBzZWxmLmdpdCgibHMtcmVtb3RlIiwgcmVtb3Rl
LCAqYXJncykKICAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0
KCJcbiIpOgorICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KGIiXG4iKToKICAgICAgICAg
ICAgIGlmIG5vdCBsaW5lLnN0cmlwKCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAg
ICAgICAgIHNoYTEsIHJlZiA9IGxpbmUuc3BsaXQoKQpAQCAtMjUwLDggKzI0OCw4IEBAIGNsYXNz
IEdpdFRyZWUob2JqZWN0KToKICAgICAgICAgOnBhcmFtIHJlbW90ZTogdGhlIHJlbW90ZSBVUkwK
ICAgICAgICAgOnBhcmFtIGJyYW5jaDogdGhlIGJyYW5jaCBuYW1lIiIiCiAgICAgICAgIGZvciBz
aGExLCByZWYgaW4gc2VsZi5saXN0X3JlbW90ZShyZW1vdGUsIGJyYW5jaCk6Ci0gICAgICAgICAg
ICBpZiByZWYgPT0gInJlZnMvaGVhZHMvJXMiICUgYnJhbmNoOgotICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLmNvbW1pdF9jbHMoc2VsZiwgc2hhMSkKKyAgICAgICAgICAgIGlmIHJlZi5kZWNv
ZGUoJ3V0Zi04JykgPT0gInJlZnMvaGVhZHMvJXMiICUgYnJhbmNoOgorICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLmNvbW1pdF9jbHMoc2VsZiwgc2hhMS5kZWNvZGUoJ3V0Zi04JykpCiAgICAg
ICAgIGFzc2VydCBGYWxzZQogCiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBwYXRjaF9uYW1l
LCBtZXNzYWdlKToKQEAgLTI5OSw4ICsyOTcsOCBAQCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6CiAK
ICAgICAgICAgYXJncyA9IFtdCiAgICAgICAgIGlmIGJyYW5jaDoKLSAgICAgICAgICAgIGJyYW5j
aGVzID0gW3JlZltsZW4oInJlZnMvaGVhZHMvIik6XSBmb3Igc2hhMSwgcmVmIGluIHNlbGYubGlz
dF9yZWZzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlZi5zdGFydHN3aXRoKCJyZWZz
L2hlYWRzLyIpXQorICAgICAgICAgICAgYnJhbmNoZXMgPSBbcmVmW2xlbigicmVmcy9oZWFkcy8i
KTpdLmRlY29kZSgndXRmLTgnKSBmb3Igc2hhMSwgcmVmIGluIHNlbGYubGlzdF9yZWZzKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIHJlZi5zdGFydHN3aXRoKGIicmVmcy9oZWFkcy8iKV0K
ICAgICAgICAgICAgIGJyYW5jaCA9IGdldF91bmlxdWVfbmFtZShicmFuY2hlcywgYnJhbmNoKQog
CiAgICAgICAgICAgICBhcmdzICs9IFsiLWIiLCBicmFuY2hdCkBAIC0zMzYsOCArMzM0LDggQEAg
Y2xhc3MgR2l0VHJlZShvYmplY3QpOgogICAgICAgICBydiA9IFtdCiAKICAgICAgICAgZm9yIHJl
cG9fcGF0aCBpbiByZXBvX3BhdGhzOgotICAgICAgICAgICAgcGF0aHMgPSB2Y3MuZ2l0KCJscy10
cmVlIiwgIi1yIiwgIi0tbmFtZS1vbmx5IiwgIkhFQUQiLCByZXBvPXJlcG9fcGF0aCkuc3BsaXQo
IlxuIikKLSAgICAgICAgICAgIHJ2LmV4dGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2lu
KHJlcG9fcGF0aCwgaXRlbSksIHNlbGYucm9vdCkgZm9yIGl0ZW0gaW4gcGF0aHMKKyAgICAgICAg
ICAgIHBhdGhzID0gdmNzLmdpdCgibHMtdHJlZSIsICItciIsICItLW5hbWUtb25seSIsICJIRUFE
IiwgcmVwbz1yZXBvX3BhdGgpLnNwbGl0KGIiXG4iKQorICAgICAgICAgICAgcnYuZXh0ZW5kKG9z
LnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocmVwb19wYXRoLCBpdGVtLmRlY29kZSgndXRmLTgn
KSksIHNlbGYucm9vdCkgZm9yIGl0ZW0gaW4gcGF0aHMKICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpdGVtLnN0cmlwKCkpCiAgICAgICAgIHJldHVybiBydgogCkBAIC0zNDUsMTEgKzM0MywxMSBA
QCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6CiAgICAgICAgICIiIkxpc3Qgc3VibW9kdWxlIGRpcmVj
dG9yaWVzIiIiCiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2l0KCJzdWJtb2R1bGUiLCAic3RhdHVz
IiwgIi0tcmVjdXJzaXZlIikKICAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBv
dXRwdXQuc3BsaXQoIlxuIik6CisgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdChiIlxu
Iik6CiAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgICAgICBpZiBub3Qg
bGluZToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcGFydHMgPSBsaW5l
LnNwbGl0KCIgIikKKyAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdChiIiAiKQogICAgICAg
ICAgICAgcnYuYXBwZW5kKHBhcnRzWzFdKQogICAgICAgICByZXR1cm4gcnYKIApAQCAtNDAzLDUg
KzQwMSw1IEBAIGNsYXNzIENvbW1pdChvYmplY3QpOgogICAgICAgICBzZWxmLmdpdCA9IHNlbGYu
dHJlZS5naXQKIAogICAgIGRlZiBfZ2V0X21ldGEoc2VsZik6Ci0gICAgICAgIGF1dGhvciwgZW1h
aWwsIG1lc3NhZ2UgPSBzZWxmLmdpdCgic2hvdyIsICItcyIsICItLWZvcm1hdD1mb3JtYXQ6JWFu
XG4lYWVcbiVCIiwgc2VsZi5zaGExKS5zcGxpdCgiXG4iLCAyKQorICAgICAgICBhdXRob3IsIGVt
YWlsLCBtZXNzYWdlID0gc2VsZi5naXQoInNob3ciLCAiLXMiLCAiLS1mb3JtYXQ9Zm9ybWF0OiVh
blxuJWFlXG4lQiIsIHNlbGYuc2hhMSkuZGVjb2RlKCd1dGYtOCcpLnNwbGl0KCJcbiIsIDIpCiAg
ICAgICAgIHJldHVybiBhdXRob3IsIGVtYWlsLCBzZWxmLm1zZ19jbHMobWVzc2FnZSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0
ZS91cGRhdGUucHkKaW5kZXggODBlNTA5ZGQzODNiLi4yNjVhMzMxMWJlYjEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUv
dXBkYXRlLnB5CkBAIC0xLDggKzEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20g
c2l4IGltcG9ydCBpdGVydmFsdWVzCi0KIGZyb20gLm1ldGFkYXRhIGltcG9ydCBNZXRhZGF0YVVw
ZGF0ZVJ1bm5lcgogZnJvbSAuc3luYyBpbXBvcnQgU3luY0Zyb21VcHN0cmVhbVJ1bm5lcgogZnJv
bSAudHJlZSBpbXBvcnQgR2l0VHJlZSwgSGdUcmVlLCBOb1ZDU1RyZWUKQEAgLTExMSw3ICsxMDks
NyBAQCBjbGFzcyBSZW1vdmVPYnNvbGV0ZShTdGVwKToKICAgICAgICAgc3RhdGUudGVzdHNfcGF0
aCA9IHN0YXRlLnBhdGhzWyIvIl1bInRlc3RzX3BhdGgiXQogICAgICAgICBzdGF0ZS5tZXRhZGF0
YV9wYXRoID0gc3RhdGUucGF0aHNbIi8iXVsibWV0YWRhdGFfcGF0aCJdCiAKLSAgICAgICAgZm9y
IHVybF9wYXRocyBpbiBpdGVydmFsdWVzKHBhdGhzKToKKyAgICAgICAgZm9yIHVybF9wYXRocyBp
biBwYXRocy52YWx1ZXMoKToKICAgICAgICAgICAgIHRlc3RzX3BhdGggPSB1cmxfcGF0aHNbInRl
c3RzX3BhdGgiXQogICAgICAgICAgICAgbWV0YWRhdGFfcGF0aCA9IHVybF9wYXRoc1sibWV0YWRh
dGFfcGF0aCJdCiAgICAgICAgICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBp
biBvcy53YWxrKG1ldGFkYXRhX3BhdGgpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0
ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwOWEzOWFhMDlhZi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3VwZGF0ZS9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9tZXRhZGF0
YS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N5bmMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3VwZGF0ZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlMWUxN2Y0Y2IyNjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vu
dmlyb25tZW50LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
cGVjdGVkdHJlZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3Ry
dW1lbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RpbmNsdWRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3ByaW50X3JlZnRlc3RfcnVu
bmVyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZl
ci1leHRyYS5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0ZHJpdmVyLXZlbmRvci5qcwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0aGFybmVzc19ydW5uZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3Jl
cG9ydC1zZXJ2by5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC1zZXJ2b2RyaXZl
ci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0bG9hZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dmNzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
d3B0Y29tbWFuZGxpbmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2luZy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci93cHRydW5uZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0dGVzdC5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRs
aW5lLnB5CmluZGV4IDE1ZDIzMjI0OTRkYi4uN2Q0MDc0ZTRiNzE2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRs
aW5lLnB5CkBAIC01LDcgKzUsNyBAQCBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJs
ZQogZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCi1mcm9tIHNpeCBpbXBvcnQgZW5zdXJl
X3RleHQsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCBpdGVyaXRlbXMKK2Zyb20gc2l4IGltcG9ydCBl
bnN1cmVfdGV4dAogCiBmcm9tIC4gaW1wb3J0IGNvbmZpZwogZnJvbSAuIGltcG9ydCB3cHR0ZXN0
CkBAIC0xNiw3ICsxNiw3IEBAIGRlZiBhYnNfcGF0aChwYXRoKToKIAogCiBkZWYgdXJsX29yX3Bh
dGgocGF0aCk6Ci0gICAgZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJz
ZQorICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQogCiAgICAgcGFyc2VkID0g
dXJscGFyc2UocGF0aCkKICAgICBpZiBsZW4ocGFyc2VkLnNjaGVtZSkgPiAyOgpAQCAtMTMxLDYg
KzEzMSw4IEBAIHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iVGVzdCB0eXBlcyB0byBydW4iKQogICAgIHRlc3Rfc2Vs
ZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1pbmNsdWRlIiwgYWN0aW9uPSJhcHBlbmQiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJVUkwgcHJlZml4IHRv
IGluY2x1ZGUiKQorICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1pbmNs
dWRlLWZpbGUiLCBhY3Rpb249InN0b3JlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iQSBmaWxlIGxpc3RpbmcgVVJMIHByZWZpeCBmb3IgdGVzdHMiKQogICAg
IHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1leGNsdWRlIiwgYWN0aW9uPSJh
cHBlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJVUkwg
cHJlZml4IHRvIGV4Y2x1ZGUiKQogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVu
dCgiLS1pbmNsdWRlLW1hbmlmZXN0IiwgdHlwZT1hYnNfcGF0aCwKQEAgLTE3MCw2ICsxNzIsOCBA
QCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJIYWx0IHRoZSB0ZXN0IHJ1bm5lciBhZnRlciBlYWNoIHRlc3QgKHRoaXMgaGFw
cGVucyBieSBkZWZhdWx0IGlmIG9ubHkgYSBzaW5nbGUgdGVzdCBpcyBydW4pIikKICAgICBkZWJ1
Z2dpbmdfZ3JvdXAuYWRkX2FyZ3VtZW50KCctLW5vLXBhdXNlLWFmdGVyLXRlc3QnLCBkZXN0PSJw
YXVzZV9hZnRlcl90ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJEb24ndCBoYWx0IHRoZSB0ZXN0IHJ1bm5lciBpcnJlc3Bl
Y3RpdmUgb2YgdGhlIG51bWJlciBvZiB0ZXN0cyBydW4iKQorICAgIGRlYnVnZ2luZ19ncm91cC5h
ZGRfYXJndW1lbnQoJy0tZGVidWctdGVzdCcsIGRlc3Q9ImRlYnVnX3Rlc3QiLCBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRl
c3RzIHdpdGggYWRkaXRpb25hbCBkZWJ1Z2dpbmcgZmVhdHVyZXMgZW5hYmxlZCIpCiAKICAgICBk
ZWJ1Z2dpbmdfZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXBhdXNlLW9uLXVuZXhwZWN0ZWQnLCBhY3Rp
b249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
SGFsdCB0aGUgdGVzdCBydW5uZXIgd2hlbiBhbiB1bmV4cGVjdGVkIHJlc3VsdCBpcyBlbmNvdW50
ZXJlZCIpCkBAIC0xODEsNyArMTg1LDEwIEBAIHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggb3IgdXJsIHRvIHN5bWJv
bHMgZmlsZSB1c2VkIHRvIGFuYWx5c2UgY3Jhc2ggbWluaWR1bXBzLiIpCiAgICAgZGVidWdnaW5n
X2dyb3VwLmFkZF9hcmd1bWVudCgiLS1zdGFja3dhbGstYmluYXJ5IiwgYWN0aW9uPSJzdG9yZSIs
IHR5cGU9YWJzX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQ
YXRoIHRvIHN0YWNrd2Fsa2VyIHByb2dyYW0gdXNlZCB0byBhbmFseXNlIG1pbmlkdW1wcy4iKQot
CisgICAgZGVidWdnaW5nX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1vdXRwdXQtZGlyZWN0b3J5Iiwg
YWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQ
YXRoIHRvIGNocm9taXVtIG91dHB1dCBkaXJlY3RvcnkuIikKKyAgICBkZWJ1Z2dpbmdfZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLXN0YWNrcGFyc2VyLXNjcmlwdCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBl
PWFic19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0
byBzdGFjayBwYXJzZXIgc2NyaXB0IHVzZWQgdG8gYW5hbHlzZSB0b21ic3RvbmVzLiIpCiAgICAg
ZGVidWdnaW5nX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wZGIiLCBhY3Rpb249InN0b3JlX3RydWUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRHJvcCBpbnRvIHBkYiBv
biBweXRob24gZXhjZXB0aW9uIikKIApAQCAtMTk2LDYgKzIwMyw4IEBAIHNjaGVtZSBob3N0IGFu
ZCBwb3J0LiIiIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdlYmRyaXZlci1h
cmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1bXSwgYWN0aW9uPSJh
cHBlbmQiLCBkZXN0PSJ3ZWJkcml2ZXJfYXJncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJFeHRyYSBhcmd1bWVudCBmb3IgdGhlIFdlYkRyaXZlciBiaW5hcnkiKQorICAg
IGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tYWRiLWJpbmFyeSIsIGFjdGlvbj0ic3RvcmUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byBhZGIgYmluYXJ5
IHRvIHVzZSIpCiAgICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wYWNrYWdlLW5hbWUi
LCBhY3Rpb249InN0b3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkFu
ZHJvaWQgcGFja2FnZSBuYW1lIHRvIHJ1biB0ZXN0cyBhZ2FpbnN0IikKICAgICBjb25maWdfZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLWRldmljZS1zZXJpYWwiLCBhY3Rpb249InN0b3JlIiwKQEAgLTM2
Myw2ICszNzIsMTAgQEAgc2NoZW1lIGhvc3QgYW5kIHBvcnQuIiIiKQogICAgIHdlYmtpdF9ncm91
cC5hZGRfYXJndW1lbnQoIi0td2Via2l0LXBvcnQiLCBkZXN0PSJ3ZWJraXRfcG9ydCIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJXZWJLaXQgcG9ydCIpCiAKKyAgICBzYWZh
cmlfZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJTYWZhcmktc3BlY2lmaWMiKQor
ICAgIHNhZmFyaV9ncm91cC5hZGRfYXJndW1lbnQoIi0ta2lsbC1zYWZhcmkiLCBkZXN0PSJraWxs
X3NhZmFyaSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJLaWxsIFNhZmFyaSB3aGVuIHN0b3BwaW5nIHRoZSBi
cm93c2VyIikKKwogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInRlc3RfbGlzdCIsIG5hcmdzPSIq
IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ikxpc3Qgb2YgVVJMcyBmb3IgdGVzdHMg
dG8gcnVuLCBvciBwYXRocyBpbmNsdWRpbmcgdGVzdHMgdG8gcnVuLiAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIoZXF1aXZhbGVudCB0byAtLWluY2x1ZGUpIikKQEAgLTQwNCw3ICs0
MTcsNyBAQCBkZWYgc2V0X2Zyb21fY29uZmlnKGt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAg
ICgiaG9zdF9jZXJ0X3BhdGgiLCAiaG9zdF9jZXJ0X3BhdGgiLCBUcnVlKSwKICAgICAgICAgICAg
ICAgICAgICAgKCJob3N0X2tleV9wYXRoIiwgImhvc3Rfa2V5X3BhdGgiLCBUcnVlKV19CiAKLSAg
ICBmb3Igc2VjdGlvbiwgdmFsdWVzIGluIGl0ZXJpdGVtcyhrZXlzKToKKyAgICBmb3Igc2VjdGlv
biwgdmFsdWVzIGluIGtleXMuaXRlbXMoKToKICAgICAgICAgZm9yIGNvbmZpZ192YWx1ZSwga3df
dmFsdWUsIGlzX3BhdGggaW4gdmFsdWVzOgogICAgICAgICAgICAgaWYga3dfdmFsdWUgaW4ga3dh
cmdzIGFuZCBrd2FyZ3Nba3dfdmFsdWVdIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgbm90
IGlzX3BhdGg6CkBAIC00NDAsNyArNDUzLDcgQEAgZGVmIGdldF90ZXN0X3BhdGhzKGNvbmZpZyk6
CiAgICAgIyBTZXQgdXAgdGVzdF9wYXRocwogICAgIHRlc3RfcGF0aHMgPSBPcmRlcmVkRGljdCgp
CiAKLSAgICBmb3Igc2VjdGlvbiBpbiBpdGVya2V5cyhjb25maWcpOgorICAgIGZvciBzZWN0aW9u
IGluIGNvbmZpZy5rZXlzKCk6CiAgICAgICAgIGlmIHNlY3Rpb24uc3RhcnRzd2l0aCgibWFuaWZl
c3Q6Iik6CiAgICAgICAgICAgICBtYW5pZmVzdF9vcHRzID0gY29uZmlnLmdldChzZWN0aW9uKQog
ICAgICAgICAgICAgdXJsX2Jhc2UgPSBtYW5pZmVzdF9vcHRzLmdldCgidXJsX2Jhc2UiLCAiLyIp
CkBAIC00NjYsNyArNDc5LDcgQEAgZGVmIGV4ZV9wYXRoKG5hbWUpOgogCiAKIGRlZiBjaGVja19w
YXRocyhrd2FyZ3MpOgotICAgIGZvciB0ZXN0X3BhdGhzIGluIGl0ZXJ2YWx1ZXMoa3dhcmdzWyJ0
ZXN0X3BhdGhzIl0pOgorICAgIGZvciB0ZXN0X3BhdGhzIGluIGt3YXJnc1sidGVzdF9wYXRocyJd
LnZhbHVlcygpOgogICAgICAgICBpZiBub3QgKCJ0ZXN0c19wYXRoIiBpbiB0ZXN0X3BhdGhzIGFu
ZAogICAgICAgICAgICAgICAgICJtZXRhZGF0YV9wYXRoIiBpbiB0ZXN0X3BhdGhzKToKICAgICAg
ICAgICAgIHByaW50KCJGYXRhbDogbXVzdCBzcGVjaWZ5IGJvdGggYSB0ZXN0IHBhdGggYW5kIG1l
dGFkYXRhIHBhdGgiKQpAQCAtNDc0LDcgKzQ4Nyw3IEBAIGRlZiBjaGVja19wYXRocyhrd2FyZ3Mp
OgogICAgICAgICBpZiAibWFuaWZlc3RfcGF0aCIgbm90IGluIHRlc3RfcGF0aHM6CiAgICAgICAg
ICAgICB0ZXN0X3BhdGhzWyJtYW5pZmVzdF9wYXRoIl0gPSBvcy5wYXRoLmpvaW4odGVzdF9wYXRo
c1sibWV0YWRhdGFfcGF0aCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNQU5JRkVTVC5qc29uIikKLSAgICAgICAgZm9yIGtleSwgcGF0
aCBpbiBpdGVyaXRlbXModGVzdF9wYXRocyk6CisgICAgICAgIGZvciBrZXksIHBhdGggaW4gdGVz
dF9wYXRocy5pdGVtcygpOgogICAgICAgICAgICAgbmFtZSA9IGtleS5zcGxpdCgiXyIsIDEpWzBd
CiAKICAgICAgICAgICAgIGlmIG5hbWUgPT0gIm1hbmlmZXN0IjoKQEAgLTU5MCw3ICs2MDMsNyBA
QCBkZWYgY2hlY2tfYXJncyhrd2FyZ3MpOgogICAgICAgICBrd2FyZ3NbInJlZnRlc3RfaW50ZXJu
YWwiXSA9IFRydWUKIAogICAgIGlmIGt3YXJnc1sicmVmdGVzdF9zY3JlZW5zaG90Il0gaXMgTm9u
ZToKLSAgICAgICAga3dhcmdzWyJyZWZ0ZXN0X3NjcmVlbnNob3QiXSA9ICJ1bmV4cGVjdGVkIgor
ICAgICAgICBrd2FyZ3NbInJlZnRlc3Rfc2NyZWVuc2hvdCJdID0gInVuZXhwZWN0ZWQiIGlmIG5v
dCBrd2FyZ3NbImRlYnVnX3Rlc3QiXSBlbHNlICJhbHdheXMiCiAKICAgICBpZiBrd2FyZ3NbImVu
YWJsZV93ZWJyZW5kZXIiXSBpcyBOb25lOgogICAgICAgICBrd2FyZ3NbImVuYWJsZV93ZWJyZW5k
ZXIiXSA9IEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2Vu
ZHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvX19pbml0
X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9y
IG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFu
aWZlc3QvYmFja2VuZHMvYmFzZS5weQppbmRleCBjNTM5ZDQzNjdlOTQuLjMwNjllNGNmZThkZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkKQEAgLTEsNSArMSw0
IEBACiBpbXBvcnQgYWJjCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRl
cnZhbHVlcwogCiBmcm9tIC4ubm9kZSBpbXBvcnQgTm9kZVZpc2l0b3IKIGZyb20gLi5wYXJzZXIg
aW1wb3J0IHBhcnNlCkBAIC0xODcsMjEgKzE4NiwyMSBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2Jq
ZWN0KToKICAgICBkZWYgX2ZsYXR0ZW4oc2VsZik6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAg
Zm9yIG5vZGUgaW4gW3NlbGYsIHNlbGYucm9vdF06Ci0gICAgICAgICAgICBmb3IgbmFtZSwgdmFs
dWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVl
IGluIG5vZGUuX2RhdGEuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBy
djoKICAgICAgICAgICAgICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4g
cnYKIAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIGl0ZXJp
dGVtcyhzZWxmLl9mbGF0dGVuKCkpOgorICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9mbGF0dGVu
KCkuaXRlbXMoKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRlZiBpdGVya2V5cyhz
ZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcmtleXMoc2VsZi5fZmxhdHRlbigpKToKKyAg
ICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLmtleXMoKToKICAgICAgICAgICAgIHlp
ZWxkIGl0ZW0KIAogICAgIGRlZiBpdGVydmFsdWVzKHNlbGYpOgotICAgICAgICBmb3IgaXRlbSBp
biBpdGVydmFsdWVzKHNlbGYuX2ZsYXR0ZW4oKSk6CisgICAgICAgIGZvciBpdGVtIGluIHNlbGYu
X2ZsYXR0ZW4oKS52YWx1ZXMoKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRlZiBh
cHBlbmQoc2VsZiwgY2hpbGQpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tl
bmRzL2NvbmRpdGlvbmFsLnB5CmluZGV4IDNiMTFlODMwMTJhYi4uMzBkZDE0NDkxNTZlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CkBA
IC0xLDUgKzEsNSBAQAogaW1wb3J0IG9wZXJhdG9yCi1mcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3Rl
eHQsIGl0ZXJpdGVtcywgaXRlcmtleXMsIHRleHRfdHlwZQorZnJvbSBzaXggaW1wb3J0IGVuc3Vy
ZV90ZXh0CiAKIGZyb20gLi5ub2RlIGltcG9ydCBOb2RlVmlzaXRvciwgRGF0YU5vZGUsIENvbmRp
dGlvbmFsTm9kZSwgS2V5VmFsdWVOb2RlLCBMaXN0Tm9kZSwgVmFsdWVOb2RlLCBCaW5hcnlFeHBy
ZXNzaW9uTm9kZSwgVmFyaWFibGVOb2RlCiBmcm9tIC4ucGFyc2VyIGltcG9ydCBwYXJzZQpAQCAt
MzAwLDkgKzMwMCw5IEBAIGNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgogICAgICAgICBpZiBp
c2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgICAgIHZhbHVlX25vZGUgPSBMaXN0Tm9k
ZSgpCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1
ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUodGV4dF90eXBlKGl0ZW0pKSkKKyAgICAgICAgICAgICAg
ICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUoc3RyKGl0ZW0pKSkKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKKyAg
ICAgICAgICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5vZGUoc3RyKHZhbHVlKSkKICAgICAgICAgaWYg
Y29uZGl0aW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29u
ZGl0aW9uLCBDb25kaXRpb25hbE5vZGUpOgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsX25v
ZGUgPSBDb25kaXRpb25hbE5vZGUoKQpAQCAtMzY4LDE3ICszNjgsMTcgQEAgY2xhc3MgTWFuaWZl
c3RJdGVtKG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9
CiAgICAgICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9y
IG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhub2RlLl9kYXRhKToKKyAgICAgICAgICAgIGZvciBu
YW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgaWYgbmFt
ZSBub3QgaW4gcnY6CiAgICAgICAgICAgICAgICAgICAgIHJ2W25hbWVdID0gdmFsdWUKICAgICAg
ICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgotICAgICAgICBmb3IgaXRl
bSBpbiBpdGVyaXRlbXMoc2VsZi5fZmxhdHRlbigpKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gc2Vs
Zi5fZmxhdHRlbigpLml0ZW1zKCk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYg
aXRlcmtleXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0
ZW4oKSk6CisgICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5rZXlzKCk6CiAgICAg
ICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcl9wcm9wZXJ0aWVzKHNlbGYpOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDIwZmFlMDIzMjguLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZl
c3QvYmFja2VuZHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2Vu
ZHMvYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9jb25kaXRpb25h
bC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9zdGF0aWMucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dG1hbmlmZXN0L25vZGUucHkKaW5kZXggMGY4MmQ3MDA2YjY5Li41ZTlkMmI2NDI3NDQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC9ub2RlLnB5CkBAIC0xLDUgKzEsMyBAQAotZnJvbSBzaXgubW92ZXMgaW1w
b3J0IHJhbmdlCi0KIGNsYXNzIE5vZGVWaXNpdG9yKG9iamVjdCk6CiAgICAgZGVmIHZpc2l0KHNl
bGYsIG5vZGUpOgogICAgICAgICAjIFRoaXMgaXMgdWdseSBhcyBoZWxsLCBidXQgd2UgZG9uJ3Qg
aGF2ZSBtdWx0aW1ldGhvZHMgYW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZl
c3QvcGFyc2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3BhcnNlci5weQppbmRleCA5
MTFlZmFjODBmMjcuLmY2YWUxZTI5NDBlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5
CkBAIC0xNCw4ICsxNCw3IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRl
cmFscwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTywg
dW5pY2hyCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKK2Zyb20gaW8gaW1wb3J0IEJ5dGVz
SU8KIAogZnJvbSAubm9kZSBpbXBvcnQgKE5vZGUsIEF0b21Ob2RlLCBCaW5hcnlFeHByZXNzaW9u
Tm9kZSwgQmluYXJ5T3BlcmF0b3JOb2RlLAogICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbmFs
Tm9kZSwgRGF0YU5vZGUsIEluZGV4Tm9kZSwgS2V5VmFsdWVOb2RlLCBMaXN0Tm9kZSwKQEAgLTUw
LDcgKzQ5LDcgQEAgYXRvbXMgPSB7IlRydWUiOiBUcnVlLAogICAgICAgICAgIlJlc2V0Ijogb2Jq
ZWN0KCl9CiAKIGRlZiBkZWNvZGUocyk6Ci0gICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgdGV4dF90
eXBlKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIHN0cikKICAgICByZXR1cm4gcwogCiAKQEAg
LTc5LDcgKzc4LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAKICAgICBkZWYgdG9rZW5p
emUoc2VsZiwgc3RyZWFtKToKICAgICAgICAgc2VsZi5yZXNldCgpCi0gICAgICAgIGFzc2VydCBu
b3QgaXNpbnN0YW5jZShzdHJlYW0sIHRleHRfdHlwZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2lu
c3RhbmNlKHN0cmVhbSwgc3RyKQogICAgICAgICBpZiBpc2luc3RhbmNlKHN0cmVhbSwgYnl0ZXMp
OgogICAgICAgICAgICAgc3RyZWFtID0gQnl0ZXNJTyhzdHJlYW0pCiAgICAgICAgIGlmIG5vdCBo
YXNhdHRyKHN0cmVhbSwgIm5hbWUiKToKQEAgLTg5LDcgKzg4LDcgQEAgY2xhc3MgVG9rZW5pemVy
KG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5uZXh0X2xpbmVfc3RhdGUgPSBzZWxmLmxpbmVfc3Rh
cnRfc3RhdGUKICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKHN0cmVhbSk6Ci0gICAg
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lLCBiaW5hcnlfdHlwZSkKKyAgICAgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIGJ5dGVzKQogICAgICAgICAgICAgc2VsZi5zdGF0ZSA9
IHNlbGYubmV4dF9saW5lX3N0YXRlCiAgICAgICAgICAgICBhc3NlcnQgc2VsZi5zdGF0ZSBpcyBu
b3QgTm9uZQogICAgICAgICAgICAgc3RhdGVzID0gW10KQEAgLTk3LDcgKzk2LDcgQEAgY2xhc3Mg
VG9rZW5pemVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmxpbmVfbnVtYmVyID0gaSArIDEK
ICAgICAgICAgICAgIHNlbGYuaW5kZXggPSAwCiAgICAgICAgICAgICBzZWxmLmxpbmUgPSBsaW5l
LmRlY29kZSgndXRmLTgnKS5yc3RyaXAoKQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
c2VsZi5saW5lLCB0ZXh0X3R5cGUpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxm
LmxpbmUsIHN0cikKICAgICAgICAgICAgIHdoaWxlIHNlbGYuc3RhdGUgIT0gc2VsZi5lb2xfc3Rh
dGU6CiAgICAgICAgICAgICAgICAgc3RhdGVzLmFwcGVuZChzZWxmLnN0YXRlKQogICAgICAgICAg
ICAgICAgIHRva2VucyA9IHNlbGYuc3RhdGUoKQpAQCAtNTA1LDcgKzUwNCw3IEBAIGNsYXNzIFRv
a2VuaXplcihvYmplY3QpOgogICAgICAgICAgICAgdmFsdWUgKz0gc2VsZi5lc2NhcGVfdmFsdWUo
YykKICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAKLSAgICAgICAgcmV0dXJuIHVuaWNocih2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGNocih2YWx1ZSkKIAogICAgIGRlZiBlc2NhcGVfdmFsdWUo
c2VsZiwgYyk6CiAgICAgICAgIGlmICcwJyA8PSBjIDw9ICc5JzoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJk
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSAr
MCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlz
IGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFkYzdmMmZmMGExMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy9f
X2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlv
bmFsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfcGFyc2VyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Rva2VuaXplci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTNlM2RkNWQw
OWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9k
ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
d3B0bWFuaWZlc3Qvc2VyaWFsaXplci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1
bm5lci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKaW5kZXggZTFkOWVmOGIxYTkxLi4w
Mjk0ZTg3MjBhYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weQpAQCAtMywxMyArMywxMyBAQCBmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNvbgog
aW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVydmFs
dWVzCiAKIGltcG9ydCB3cHRzZXJ2ZQogZnJvbSB3cHRzZXJ2ZSBpbXBvcnQgc3NsdXRpbHMKIAog
ZnJvbSAuIGltcG9ydCBlbnZpcm9ubWVudCBhcyBlbnYKIGZyb20gLiBpbXBvcnQgaW5zdHJ1bWVu
dHMKK2Zyb20gLiBpbXBvcnQgbXBjb250ZXh0CiBmcm9tIC4gaW1wb3J0IHByb2R1Y3RzCiBmcm9t
IC4gaW1wb3J0IHRlc3Rsb2FkZXIKIGZyb20gLiBpbXBvcnQgd3B0Y29tbWFuZGxpbmUKQEAgLTY1
LDYgKzY1LDggQEAgZGVmIGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwgZGVidWc9Tm9u
ZSwgcnVuX2luZm9fZXh0cmFzPU5vbmUsIGNodW5rZXJfa3cKICAgICBtYW5pZmVzdF9maWx0ZXJz
ID0gW10KIAogICAgIGluY2x1ZGUgPSBrd2FyZ3NbImluY2x1ZGUiXQorICAgIGlmIGt3YXJnc1si
aW5jbHVkZV9maWxlIl06CisgICAgICAgIGluY2x1ZGUuZXh0ZW5kKHRlc3Rsb2FkZXIucmVhZF9p
bmNsdWRlX2Zyb21fZmlsZShrd2FyZ3NbImluY2x1ZGVfZmlsZSJdKSkKICAgICBpZiB0ZXN0X2dy
b3VwczoKICAgICAgICAgaW5jbHVkZSA9IHRlc3Rsb2FkZXIudXBkYXRlX2luY2x1ZGVfZm9yX2dy
b3Vwcyh0ZXN0X2dyb3VwcywgaW5jbHVkZSkKIApAQCAtMTE1LDcgKzExNyw3IEBAIGRlZiBsaXN0
X2Rpc2FibGVkKHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKICAgICBydW5faW5mbywg
dGVzdF9sb2FkZXIgPSBnZXRfbG9hZGVyKHRlc3RfcGF0aHMsIHByb2R1Y3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cnVuX2luZm9fZXh0
cmFzLCAqKmt3YXJncykKIAotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RzIGluIGl0ZXJpdGVtcyh0
ZXN0X2xvYWRlci5kaXNhYmxlZF90ZXN0cyk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4g
dGVzdF9sb2FkZXIuZGlzYWJsZWRfdGVzdHMuaXRlbXMoKToKICAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CiAgICAgICAgICAgICBydi5hcHBlbmQoeyJ0ZXN0IjogdGVzdC5pZCwgInJlYXNvbiI6
IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAgcHJpbnQoanNvbi5kdW1wcyhydiwgaW5kZW50PTIpKQpA
QCAtMTM5LDggKzE0MSwxMCBAQCBkZWYgZ2V0X3BhdXNlX2FmdGVyX3Rlc3QodGVzdF9sb2FkZXIs
ICoqa3dhcmdzKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBrd2FyZ3Nb
ImhlYWRsZXNzIl06CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYga3dhcmdz
WyJkZWJ1Z190ZXN0Il06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICB0ZXN0cyA9
IHRlc3RfbG9hZGVyLnRlc3RzCi0gICAgICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChzdW0o
bGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXModGVzdHMpKSA9PSAxIGFuZAorICAgICAg
ICBpc19zaW5nbGVfdGVzdGhhcm5lc3MgPSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiB0ZXN0
cy52YWx1ZXMoKSkgPT0gMSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
bih0ZXN0cy5nZXQoInRlc3RoYXJuZXNzIiwgW10pKSA9PSAxKQogICAgICAgICBpZiBrd2FyZ3Nb
InJlcGVhdCJdID09IDEgYW5kIGt3YXJnc1sicmVydW4iXSA9PSAxIGFuZCBpc19zaW5nbGVfdGVz
dGhhcm5lc3M6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMTUxLDExICsxNTUsMTQgQEAg
ZGVmIGdldF9wYXVzZV9hZnRlcl90ZXN0KHRlc3RfbG9hZGVyLCAqKmt3YXJncyk6CiBkZWYgcnVu
X3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICIiIlNl
dCB1cCB0aGUgdGVzdCBlbnZpcm9ubWVudCwgbG9hZCB0aGUgbGlzdCBvZiB0ZXN0cyB0byBiZSBl
eGVjdXRlZCwgYW5kCiAgICAgaW52b2tlIHRoZSByZW1haW5kZXIgb2YgdGhlIGNvZGUgdG8gZXhl
Y3V0ZSB0ZXN0cyIiIgorICAgIG1wID0gbXBjb250ZXh0LmdldF9jb250ZXh0KCkKICAgICBpZiBr
d2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdIGlzIE5vbmU6CiAgICAgICAgIHJlY29yZGVyID0g
aW5zdHJ1bWVudHMuTnVsbEluc3RydW1lbnQoKQogICAgIGVsc2U6CiAgICAgICAgIHJlY29yZGVy
ID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVudChrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdKQot
ICAgIHdpdGggcmVjb3JkZXIgYXMgcmVjb3JkaW5nLCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dnZXIs
IG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6CisgICAgd2l0aCByZWNvcmRlciBhcyBy
ZWNvcmRpbmcsIGNhcHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGt3YXJnc1sibm9fY2FwdHVyZV9zdGRp
byJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
cF9jb250ZXh0PW1wKToKICAgICAgICAgcmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKICAgICAg
ICAgZW52LmRvX2RlbGF5ZWRfaW1wb3J0cyhsb2dnZXIsIHRlc3RfcGF0aHMpCiAKQEAgLTIxOSw2
ICsyMjYsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKipr
d2FyZ3MpOgogICAgICAgICB3aXRoIGVudi5UZXN0RW52aXJvbm1lbnQodGVzdF9wYXRocywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlw
bGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJwYXVzZV9hZnRl
cl90ZXN0Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImRlYnVn
X3Rlc3QiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdf
aW5mbyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5lbnZfb3B0
aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb25maWcsCkBAIC0y
NzUsMTMgKzI4MywxNiBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVj
dCwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJvd3Nlcl9jbHMgPSBwcm9kdWN0LmJyb3dzZXJfY2xzCiAKLSAgICAgICAgICAg
ICAgICAgICAgYnJvd3Nlcl9rd2FyZ3MgPSBwcm9kdWN0LmdldF9icm93c2VyX2t3YXJncyh0ZXN0
X3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfa3dhcmdzID0gcHJvZHVjdC5nZXRf
YnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWc9dGVzdF9lbnZpcm9ubWVudC5jb25maWcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Rl
c3RfZ3JvdXBzPWxlbih0ZXN0X2dyb3VwcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAKICAgICAgICAg
ICAgICAgICAgICAgZXhlY3V0b3JfY2xzID0gcHJvZHVjdC5leGVjdXRvcl9jbGFzc2VzLmdldCh0
ZXN0X3R5cGUpCi0gICAgICAgICAgICAgICAgICAgIGV4ZWN1dG9yX2t3YXJncyA9IHByb2R1Y3Qu
Z2V0X2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1
dG9yX2t3YXJncyA9IHByb2R1Y3QuZ2V0X2V4ZWN1dG9yX2t3YXJncyhsb2dnZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Vudmlyb25tZW50LmNvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfZW52aXJvbm1lbnQuY2FjaGVfbWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0dGVzdC5w
eQppbmRleCBlMjEwNDFiNjQzMGEuLmI3YTdjZWMxOTc3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdHRlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsOSArMSw4
IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0
IGRlZmF1bHRkaWN0Ci1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKK2Zy
b20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLndwdG1hbmlmZXN0LnBhcnNl
ciBpbXBvcnQgYXRvbXMKIApAQCAtMzA3LDcgKzMwNiw3IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToK
ICAgICAgICAgcnYgPSB7fQogICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKE5vbmUp
OgogICAgICAgICAgICAgdGhyZXNob2xkID0gbWV0YS5sZWFrX3RocmVzaG9sZAotICAgICAgICAg
ICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHRocmVzaG9sZCk6CisgICAgICAgICAgICBm
b3Iga2V5LCB2YWx1ZSBpbiB0aHJlc2hvbGQuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiBr
ZXkgbm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltrZXldID0gdmFsdWUKICAgICAg
ICAgcmV0dXJuIHJ2CkBAIC0zNDksNyArMzQ4LDcgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogCiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIGV4cGVjdGVkID0gbWV0YWRhdGEuZ2V0KCJleHBlY3Rl
ZCIpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBzdHJpbmdfdHlwZXMpOgor
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgc3RyKToKICAgICAgICAgICAgICAg
ICByZXR1cm4gZXhwZWN0ZWQKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwg
bGlzdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkWzBdCkBAIC00NjQsOSArNDYz
LDkgQEAgY2xhc3MgUmVmdGVzdFRlc3QoVGVzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
dXJsX2Jhc2UsIHRlc3RzX3Jvb3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0
YSwgcmVmZXJlbmNlcywKICAgICAgICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUs
IHZpZXdwb3J0X3NpemU9Tm9uZSwgZHBpPU5vbmUsIGZ1enp5PU5vbmUsCi0gICAgICAgICAgICAg
ICAgIHByb3RvY29sPSJodHRwIiwgcXVpYz1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHByb3Rv
Y29sPSJodHRwIiwgc3ViZG9tYWluPUZhbHNlLCBxdWljPUZhbHNlKToKICAgICAgICAgVGVzdC5f
X2luaXRfXyhzZWxmLCB1cmxfYmFzZSwgdGVzdHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRh
LCB0ZXN0X21ldGFkYXRhLCB0aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHBy
b3RvY29sLCBxdWljKQorICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHByb3RvY29sLCBzdWJk
b21haW4sIHF1aWMpCiAKICAgICAgICAgZm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAg
ICAgICAgICAgICBpZiByZWZfdHlwZSBub3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNTA0LDYgKzUw
Myw3IEBAIGNsYXNzIFJlZnRlc3RUZXN0KFRlc3QpOgogICAgICAgICAgICAgICAgICAgIFtdLAog
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwKICAgICAgICAgICAgICAgICAgICBw
YXRoPW1hbmlmZXN0X3Rlc3QucGF0aCwKKyAgICAgICAgICAgICAgICAgICBzdWJkb21haW49bWFu
aWZlc3RfdGVzdC5zdWJkb21haW4sCiAgICAgICAgICAgICAgICAgICAgcXVpYz1xdWljLAogICAg
ICAgICAgICAgICAgICAgICoqY2xzLmNsc19rd2FyZ3MobWFuaWZlc3RfdGVzdCkpCiAKQEAgLTYy
MiwxMCArNjIyLDEwIEBAIGNsYXNzIFByaW50UmVmdGVzdFRlc3QoUmVmdGVzdFRlc3QpOgogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybF9iYXNlLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRf
bWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJlZmVyZW5jZXMsCiAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3cG9ydF9zaXplPU5vbmUsIGRwaT1Ob25lLCBmdXp6
eT1Ob25lLAotICAgICAgICAgICAgICAgICBwYWdlX3Jhbmdlcz1Ob25lLCBwcm90b2NvbD0iaHR0
cCIsIHF1aWM9RmFsc2UpOgorICAgICAgICAgICAgICAgICBwYWdlX3Jhbmdlcz1Ob25lLCBwcm90
b2NvbD0iaHR0cCIsIHN1YmRvbWFpbj1GYWxzZSwgcXVpYz1GYWxzZSk6CiAgICAgICAgIHN1cGVy
KFByaW50UmVmdGVzdFRlc3QsIHNlbGYpLl9faW5pdF9fKHVybF9iYXNlLCB0ZXN0c19yb290LCB1
cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsIHRpbWVvdXQsIHBhdGgsIHZp
ZXdwb3J0X3NpemUsIGRwaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnV6enksIHByb3RvY29sLCBxdWljPXF1aWMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1enp5LCBwcm90b2NvbCwgc3ViZG9tYWluPXN1
YmRvbWFpbiwgcXVpYz1xdWljKQogICAgICAgICBzZWxmLl9wYWdlX3JhbmdlcyA9IHBhZ2VfcmFu
Z2VzCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvLmNvdmVyYWdlcmMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlLy5j
b3ZlcmFnZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGUwMGMw
NzlmNjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS8uY292ZXJhZ2VyYwpAQCAtMCwwICsxLDExIEBA
CitbcnVuXQorYnJhbmNoID0gVHJ1ZQorcGFyYWxsZWwgPSBUcnVlCitvbWl0ID0KKyAgKi9zaXRl
LXBhY2thZ2VzLyoKKyAgKi9saWJfcHlweS8qCisKK1twYXRoc10KK3dwdHNlcnZlID0KKyAgd3B0
c2VydmUKKyAgLnRveC8qKi9zaXRlLXBhY2thZ2VzL3dwdHNlcnZlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlLy5n
aXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi44ZTg3ZDM4ODQ4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlLy5naXRpZ25vcmUKQEAg
LTAsMCArMSw0MCBAQAorKi5weVtjb2RdCisqfgorXCMqCisKK2RvY3MvX2J1aWxkLworCisjIEMg
ZXh0ZW5zaW9ucworKi5zbworCisjIFBhY2thZ2VzCisqLmVnZworKi5lZ2ctaW5mbworZGlzdAor
YnVpbGQKK2VnZ3MKK3BhcnRzCitiaW4KK3Zhcgorc2Rpc3QKK2RldmVsb3AtZWdncworLmluc3Rh
bGxlZC5jZmcKK2xpYgorbGliNjQKKworIyBJbnN0YWxsZXIgbG9ncworcGlwLWxvZy50eHQKKwor
IyBVbml0IHRlc3QgLyBjb3ZlcmFnZSByZXBvcnRzCisuY292ZXJhZ2UKKy50b3gKK25vc2V0ZXN0
cy54bWwKK3Rlc3RzL2Z1bmN0aW9uYWwvaHRtbC8qCisKKyMgVHJhbnNsYXRpb25zCisqLm1vCisK
KyMgTXIgRGV2ZWxvcGVyCisubXIuZGV2ZWxvcGVyLmNmZworLnByb2plY3QKKy5weWRldnByb2pl
Y3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvZG9jcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QxNmM3MzJjYWJmLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS9kb2NzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjgg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL2NvbmYucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2Rv
Y3MvaGFuZGxlcnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9pbnRyb2R1Y3Rpb24u
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS9kb2NzL21ha2UuYmF0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3BpcGVzLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9yZXF1ZXN0
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvZG9jcy9yZXNwb25zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3Mvcm91dGVyLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9z
ZXJ2ZXIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS9kb2NzL3N0YXNoLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
c2V0dXAucHkKaW5kZXggNzU5Y2I0OGQxZjY1Li5mZGQ4NTY2NDM1YTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
c2V0dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQpAQCAtMSw3ICsxLDcgQEAKIGZyb20gc2V0dXB0b29s
cyBpbXBvcnQgc2V0dXAKIAogUEFDS0FHRV9WRVJTSU9OID0gJzMuMCcKLWRlcHMgPSBbInNpeD49
MS44IiwgImgyPT0zLjAuMSJdCitkZXBzID0gWyJzaXg+PTEuMTMuMCIsICJoMj49My4wLjEiXQog
CiBzZXR1cChuYW1lPSd3cHRzZXJ2ZScsCiAgICAgICB2ZXJzaW9uPVBBQ0tBR0VfVkVSU0lPTiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJl
ZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFz
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9iYXNlLnB5CmluZGV4IDdjZTUzYTU5MGI2NS4uMmU3
ZmE0NDNjMzZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weQpAQCAtNiwxMCArNiw5IEBAIGltcG9ydCBvcwogaW1w
b3J0IHB5dGVzdAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJz
ZSBpbXBvcnQgdXJsZW5jb2RlLCB1cmx1bnNwbGl0Ci1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucmVx
dWVzdCBpbXBvcnQgUmVxdWVzdCBhcyBCYXNlUmVxdWVzdAotZnJvbSBzaXgubW92ZXMudXJsbGli
LnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KLWZyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgaXRl
cml0ZW1zLCBQWTMKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxlbmNvZGUsIHVybHVuc3Bs
aXQKK2Zyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IFJlcXVlc3QgYXMgQmFzZVJlcXVlc3QKK2Zy
b20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KIAogZnJvbSBoeXBlciBpbXBvcnQgSFRU
UDIwQ29ubmVjdGlvbiwgdGxzCiBpbXBvcnQgc3NsCkBAIC0zNyw3ICszNiw3IEBAIGNsYXNzIFJl
cXVlc3QoQmFzZVJlcXVlc3QpOgogICAgICAgICBpZiBoYXNhdHRyKGRhdGEsICJpdGVtcyIpOgog
ICAgICAgICAgICAgZGF0YSA9IHVybGVuY29kZShkYXRhKS5lbmNvZGUoImFzY2lpIikKIAotICAg
ICAgICBhc3NlcnQgaXNpbnN0YW5jZShkYXRhLCBiaW5hcnlfdHlwZSkKKyAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UoZGF0YSwgYnl0ZXMpCiAKICAgICAgICAgaWYgaGFzYXR0cihCYXNlUmVxdWVz
dCwgImFkZF9kYXRhIik6CiAgICAgICAgICAgICBCYXNlUmVxdWVzdC5hZGRfZGF0YShzZWxmLCBk
YXRhKQpAQCAtNjgsNyArNjcsNyBAQCBjbGFzcyBUZXN0VXNpbmdTZXJ2ZXIodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJz
ID0ge30KIAotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gaXRlcml0ZW1zKGhlYWRlcnMpOgor
ICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAg
cmVxLmFkZF9oZWFkZXIobmFtZSwgdmFsdWUpCiAKICAgICAgICAgaWYgYm9keSBpcyBub3QgTm9u
ZToKQEAgLTgwLDEwICs3OSw3IEBAIGNsYXNzIFRlc3RVc2luZ1NlcnZlcih1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHJldHVybiB1cmxvcGVuKHJlcSkKIAogICAgIGRlZiBhc3NlcnRfbXVs
dGlwbGVfaGVhZGVycyhzZWxmLCByZXNwLCBuYW1lLCB2YWx1ZXMpOgotICAgICAgICBpZiBQWTM6
Ci0gICAgICAgICAgICBhc3NlcnQgcmVzcC5pbmZvKCkuZ2V0X2FsbChuYW1lKSA9PSB2YWx1ZXMK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCByZXNwLmluZm8oKVtuYW1lXSA9PSAi
LCAiLmpvaW4odmFsdWVzKQorICAgICAgICBhc3NlcnQgcmVzcC5pbmZvKCkuZ2V0X2FsbChuYW1l
KSA9PSB2YWx1ZXMKIAogCiBAcHl0ZXN0Lm1hcmsuc2tpcGlmKG5vdCB3cHRzZXJ2ZS51dGlscy5o
dHRwMl9jb21wYXRpYmxlKCksIHJlYXNvbj0iaDIgc2VydmVyIG9ubHkgd29ya3MgaW4gcHl0aG9u
IDIuNy4xMCsgYW5kIFB5dGhvbiAzLjYrIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC9kb2Nyb290L2Jhci5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9v
dC9iYXIuYW55Lndvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzgy
OTEzNTI4ZTYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9i
YXIuYW55Lndvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViZGlyL2ltcG9ydF9oYW5kbGVyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViZGlyL2ltcG9ydF9oYW5kbGVyLnB5Cmlu
ZGV4IDNiNDJiMjliZTk1MS4uZTYzMzk1ZTI3Mzc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0
aW9uYWwvZG9jcm9vdC9zdWJkaXIvaW1wb3J0X2hhbmRsZXIucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5j
dGlvbmFsL2RvY3Jvb3Qvc3ViZGlyL2ltcG9ydF9oYW5kbGVyLnB5CkBAIC0xLDQgKzEsNCBAQAot
aW1wb3J0IGV4YW1wbGVfbW9kdWxlCitmcm9tIHN1YmRpciBpbXBvcnQgZXhhbXBsZV9tb2R1bGUK
IAogCiBkZWYgbWFpbihyZXF1ZXN0LCByZXNwb25zZSk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvZG9jcm9vdC9zdWJkaXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC9zdWJkaXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZiYzI4MzMyYTQ1Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC9kb2Nyb290L3N1YmRpci93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci9leGFtcGxl
X21vZHVsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci9maWxlLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci9pbXBvcnRfaGFuZGxlci5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
dGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci9zdWJfcGF0aC5zdWIudHh0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1ZDMxNmY0MzE1OGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2Jhci5hbnkud29ya2VyLmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvZG9jdW1lbnQudHh0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlv
bmFsL2RvY3Jvb3QvZm9vLmFueS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvZm9v
LmFueS5zZXJ2aWNld29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9mb28u
YW55LnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvZm9vLmFu
eS53b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2Zvby53aW5kb3cuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2Zvby53b3JrZXIuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9v
dC9ub19tYWluLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViLnN1Yi50eHQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Rv
Y3Jvb3Qvc3ViX2ZpbGVfaGFzaC5zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qv
c3ViX2ZpbGVfaGFzaF9zdWJqZWN0LnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1
Yl9maWxlX2hhc2hfdW5yZWNvZ25pemVkLnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9j
cm9vdC9zdWJfaGVhZGVyX29yX2RlZmF1bHQuc3ViLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9k
b2Nyb290L3N1Yl9oZWFkZXJzLnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9z
dWJfaGVhZGVycy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfbG9jYXRpb24u
c3ViLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9wYXJhbXMuc3ViLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9wYXJhbXMudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5j
dGlvbmFsL2RvY3Jvb3Qvc3ViX3VybF9iYXNlLnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
ZG9jcm9vdC9zdWJfdXVpZC5zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3Vi
X3Zhci5zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvdGVzdC5hc2lzCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90
ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvdGVzdF9oMl9kYXRhLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlv
bmFsL2RvY3Jvb3QvdGVzdF9oMl9oZWFkZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jv
b3QvdGVzdF9oMl9oZWFkZXJzX2RhdGEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC90
ZXN0X3N0cmluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3Rlc3RfdHVwbGVfMi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3Rlc3RfdHVwbGVfMy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L3dpdGhfaGVhZGVycy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
ZG9jcm9vdC93aXRoX2hlYWRlcnMudHh0LnN1Yi5oZWFkZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3Rz
L2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2hh
bmRsZXJzLnB5CmluZGV4IDI2MWJmM2JlMmMyZi4uMWRjMmE5YmE3YmIzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvdGVzdF9oYW5kbGVycy5weQpAQCAtNSw3ICs1LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBpbXBv
cnQgdXVpZAogCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHNpeC5tb3Zlcy51cmxsaWIuZXJyb3IgaW1w
b3J0IEhUVFBFcnJvcgorZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgogCiB3cHRz
ZXJ2ZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIndwdHNlcnZlIikKIGZyb20gLmJhc2UgaW1wb3J0
IFRlc3RVc2luZ1NlcnZlciwgVGVzdFVzaW5nSDJTZXJ2ZXIsIGRvY19yb290CkBAIC00MzYsMTIg
KzQzNiwxMiBAQCBjbGFzcyBUZXN0U2VydmljZVdvcmtlcnNIYW5kbGVyKFRlc3RXcmFwcGVySGFu
ZGxlclVzaW5nU2VydmVyKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0
bWwnLCBzZXJ2ZS5TZXJ2aWNlV29ya2Vyc0hhbmRsZXIpCiAKIAotY2xhc3MgVGVzdEFueVdvcmtl
ckhhbmRsZXIoVGVzdFdyYXBwZXJIYW5kbGVyVXNpbmdTZXJ2ZXIpOgorY2xhc3MgVGVzdENsYXNz
aWNXb3JrZXJIYW5kbGVyKFRlc3RXcmFwcGVySGFuZGxlclVzaW5nU2VydmVyKToKICAgICBkdW1t
eV9maWxlcyA9IHsnYmFyLmFueS5qcyc6IGInJ30KIAogICAgIGRlZiB0ZXN0X2FueV93b3JrX2pz
KHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl93cmFwcGVyX3Rlc3QoJ2Jhci5hbnkud29ya2VyLmpz
JywgJ3RleHQvamF2YXNjcmlwdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2
ZS5BbnlXb3JrZXJIYW5kbGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmUu
Q2xhc3NpY1dvcmtlckhhbmRsZXIpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2lucHV0X2ZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3Rz
L2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9maWxlLnB5CmluZGV4IDk4MTc2ZTU4Mzg2Mi4uOTNkYjYy
Yzg0MjI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9maWxlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2lucHV0X2ZpbGUucHkKQEAgLTEsOCArMSw2
IEBACi1pbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKIGltcG9ydCBweXRlc3QK
LWZyb20gc2l4IGltcG9ydCBQWTIKIAogZnJvbSB3cHRzZXJ2ZS5yZXF1ZXN0IGltcG9ydCBJbnB1
dEZpbGUKIApAQCAtMTIxLDggKzExOSw2IEBAIGRlZiB0ZXN0X3JlYWRsaW5lcygpOgogICAgIGFz
c2VydCBpbnB1dF9maWxlLnJlYWRsaW5lcygpID09IHRlc3RfZmlsZS5yZWFkbGluZXMoKQogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgUFkyLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQvaXNzdWVzLzEyOTQ5IikKIGRlZiB0ZXN0X3JlYWRsaW5lc19maWxlX2JpZ2dlcl90
aGFuX2J1ZmZlcigpOgogICAgIG9sZF9tYXhfYnVmID0gSW5wdXRGaWxlLm1heF9idWZmZXJfc2l6
ZQogICAgIElucHV0RmlsZS5tYXhfYnVmZmVyX3NpemUgPSAxMApAQCAtMTQwLDggKzEzNiw2IEBA
IGRlZiB0ZXN0X2l0ZXIoKToKICAgICAgICAgYXNzZXJ0IGEgPT0gYgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgUFkyLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNz
dWVzLzEyOTQ5IikKIGRlZiB0ZXN0X2l0ZXJfZmlsZV9iaWdnZXJfdGhhbl9idWZmZXIoKToKICAg
ICBvbGRfbWF4X2J1ZiA9IElucHV0RmlsZS5tYXhfYnVmZmVyX3NpemUKICAgICBJbnB1dEZpbGUu
bWF4X2J1ZmZlcl9zaXplID0gMTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0
X3BpcGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcGlwZXMucHkKaW5kZXggYTAwZGU3
MWQ3OTY4Li44YjQwZTFjODRmZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0
X3BpcGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3BpcGVzLnB5CkBAIC0yLDkg
KzIsNyBAQCBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRpbWUKIGltcG9ydCBq
c29uCi0KLWZyb20gc2l4IGltcG9ydCBhc3NlcnRSZWdleAotZnJvbSBzaXgubW92ZXMgaW1wb3J0
IHVybGxpYgoraW1wb3J0IHVybGxpYgogCiBpbXBvcnQgcHl0ZXN0CiAKQEAgLTEyMSw3ICsxMTks
NyBAQCBzZXJ2ZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ezB9IiIiLmZvcm1hdChzZWxmLnNlcnZlci5w
b3J0KS5lbmNvZGUoImFzY2lpIikKIAogICAgIGRlZiB0ZXN0X3N1Yl91dWlkKHNlbGYpOgogICAg
ICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvc3ViX3V1aWQuc3ViLnR4dCIpCi0gICAgICAgIGFz
c2VydFJlZ2V4KHNlbGYsIHJlc3AucmVhZCgpLnJzdHJpcCgpLCBiIkJlZm9yZSBbYS1mMC05LV0r
IEFmdGVyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXNwLnJlYWQoKS5yc3RyaXAoKSwg
YiJCZWZvcmUgW2EtZjAtOS1dKyBBZnRlciIpCiAKICAgICBkZWYgdGVzdF9zdWJfdmFyKHNlbGYp
OgogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvc3ViX3Zhci5zdWIudHh0IikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3JlcXVlc3QucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0
aW9uYWwvdGVzdF9yZXF1ZXN0LnB5CmluZGV4IGIzMGU2YzRjYjY0NS4uOTM3MWNkMGUyNDlmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXF1ZXN0LnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3JlcXVlc3QucHkKQEAgLTEsNiArMSw3IEBACiAjIC0qLSBjb2Rp
bmc6IHV0Zi04IC0qLQogaW1wb3J0IHB5dGVzdAotZnJvbSBzaXggaW1wb3J0IFBZMworCitmcm9t
IHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGVfZnJvbV9ieXRlcwogCiB3cHRzZXJ2ZSA9IHB5dGVz
dC5pbXBvcnRvcnNraXAoIndwdHNlcnZlIikKIGZyb20gLmJhc2UgaW1wb3J0IFRlc3RVc2luZ1Nl
cnZlcgpAQCAtMTQ0LDEyICsxNDUsNyBAQCBjbGFzcyBUZXN0UmVxdWVzdChUZXN0VXNpbmdTZXJ2
ZXIpOgogCiAgICAgICAgICMgV2UgaW50ZW50aW9uYWxseSBjaG9vc2UgYW4gZW5jb2RpbmcgdGhh
dCdzIG5vdCB0aGUgZGVmYXVsdCBVVEYtOC4KICAgICAgICAgZW5jb2RlZF90ZXh0ID0gdSLjganj
gYbjgoIiLmVuY29kZSgic2hpZnQtamlzIikKLSAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAg
ZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHF1b3RlX2Zyb21fYnl0ZXMKLSAgICAgICAgICAgIHF1
b3RlZCA9IHF1b3RlX2Zyb21fYnl0ZXMoZW5jb2RlZF90ZXh0KQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgZnJvbSB1cmxsaWIgaW1wb3J0IHF1b3RlCi0gICAgICAgICAgICBxdW90ZWQgPSBx
dW90ZShlbmNvZGVkX3RleHQpCisgICAgICAgIHF1b3RlZCA9IHF1b3RlX2Zyb21fYnl0ZXMoZW5j
b2RlZF90ZXh0KQogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBxdWVyeT0i
Zm9vPSIrcXVvdGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRfdGV4dCwgcmVz
cC5yZWFkKCkpCiAKQEAgLTE2MywxMyArMTU5LDggQEAgY2xhc3MgVGVzdFJlcXVlc3QoVGVzdFVz
aW5nU2VydmVyKToKIAogICAgICAgICAjIFdlIGludGVudGlvbmFsbHkgY2hvb3NlIGFuIGVuY29k
aW5nIHRoYXQncyBub3QgdGhlIGRlZmF1bHQgVVRGLTguCiAgICAgICAgIGVuY29kZWRfdGV4dCA9
IHUi44Gp44GG44KCIi5lbmNvZGUoInNoaWZ0LWppcyIpCi0gICAgICAgIGlmIFBZMzoKLSAgICAg
ICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZV9mcm9tX2J5dGVzCi0gICAgICAg
ICAgICAjIEFmdGVyIHVybGVuY29kaW5nLCB0aGUgc3RyaW5nIHNob3VsZCBvbmx5IGNvbnRhaW4g
QVNDSUkuCi0gICAgICAgICAgICBxdW90ZWQgPSBxdW90ZV9mcm9tX2J5dGVzKGVuY29kZWRfdGV4
dCkuZW5jb2RlKCJhc2NpaSIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmcm9tIHVybGxp
YiBpbXBvcnQgcXVvdGUKLSAgICAgICAgICAgIHF1b3RlZCA9IHF1b3RlKGVuY29kZWRfdGV4dCkK
KyAgICAgICAgIyBBZnRlciB1cmxlbmNvZGluZywgdGhlIHN0cmluZyBzaG91bGQgb25seSBjb250
YWluIEFTQ0lJLgorICAgICAgICBxdW90ZWQgPSBxdW90ZV9mcm9tX2J5dGVzKGVuY29kZWRfdGV4
dCkuZW5jb2RlKCJhc2NpaSIpCiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVbMV0s
IG1ldGhvZD0iUE9TVCIsIGJvZHk9YiJmb289IitxdW90ZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZW5jb2RlZF90ZXh0LCByZXNwLnJlYWQoKSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXNw
b25zZS5weQppbmRleCBjYzc0MGJiOTlkZjkuLjIzZjEzZjg2ZDExZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90
ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEsMTEgKzEsMTIgQEAKIGltcG9ydCBvcwogaW1wb3J0IHVu
aXR0ZXN0CiBpbXBvcnQganNvbgoraW1wb3J0IHR5cGVzCisKK2Zyb20gaHR0cC5jbGllbnQgaW1w
b3J0IEJhZFN0YXR1c0xpbmUKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAogaW1wb3J0IHB5dGVz
dAotZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3VuZF9tZXRob2QsIFBZMwotZnJvbSBzaXgubW92
ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIAogd3B0c2VydmUgPSBweXRlc3Qu
aW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdTZXJ2
ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBkb2Nfcm9vdApAQCAtMjIsOCArMjMsOCBAQCBjbGFzcyBU
ZXN0UmVzcG9uc2UoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9oZWFkX3dpdGhvdXRf
Ym9keShzZWxmKToKICAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAg
ZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgotICAgICAgICAgICAgcmVzcG9uc2Uud3Jp
dGVyLmVuZF9oZWFkZXJzID0gY3JlYXRlX2JvdW5kX21ldGhvZChzZW5kX2JvZHlfYXNfaGVhZGVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZS53cml0ZXIpCisgICAgICAgICAgICByZXNwb25zZS53cml0ZXIuZW5k
X2hlYWRlcnMgPSB0eXBlcy5NZXRob2RUeXBlKHNlbmRfYm9keV9hc19oZWFkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLndyaXRlcikKICAgICAgICAgICAgIHJldHVybiBbKCJYLVRlc3QiLCAiVEVTVCIpXSwgImJv
ZHlcclxuIgogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvdGVzdF9oZWFkX3dpdGhv
dXRfYm9keSIsIGhhbmRsZXIpCkBAIC0zNyw4ICszOCw4IEBAIGNsYXNzIFRlc3RSZXNwb25zZShU
ZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAg
ICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6CiAgICAgICAgICAgICByZXNwb25z
ZS5zZW5kX2JvZHlfZm9yX2hlYWRfcmVxdWVzdCA9IFRydWUKLSAgICAgICAgICAgIHJlc3BvbnNl
LndyaXRlci5lbmRfaGVhZGVycyA9IGNyZWF0ZV9ib3VuZF9tZXRob2Qoc2VuZF9ib2R5X2FzX2hl
YWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVyKQorICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVy
LmVuZF9oZWFkZXJzID0gdHlwZXMuTWV0aG9kVHlwZShzZW5kX2JvZHlfYXNfaGVhZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZS53cml0ZXIpCiAgICAgICAgICAgICByZXR1cm4gWygiWC1UZXN0IiwgIlRFU1QiKV0s
ICJib2R5XHJcbiIKIAogICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3Rlc3RfaGVhZF93
aXRoX2JvZHkiLCBoYW5kbGVyKQpAQCAtMTc3LDEzICsxNzgsOSBAQCBjbGFzcyBUZXN0UmVzcG9u
c2UoVGVzdFVzaW5nU2VydmVyKToKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC90ZXN0
X3dyaXRlX3Jhd19jb250ZW50IiwgaGFuZGxlcikKICAgICAgICAgc2VsZi5zZXJ2ZXIucm91dGVy
LnJlZ2lzdGVyKCpyb3V0ZSkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwID0gc2Vs
Zi5yZXF1ZXN0KHJvdXRlWzFdKQotICAgICAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJl
c3BfY29udGVudAotICAgICAgICBleGNlcHQgQmFkU3RhdHVzTGluZSBhcyBlOgotICAgICAgICAg
ICAgIyBJbiBQeXRob24zLCBhbiBpbnZhbGlkIEhUVFAgcmVxdWVzdCBzaG91bGQgdGhyb3cgQmFk
U3RhdHVzTGluZS4KLSAgICAgICAgICAgIGFzc2VydCBQWTMKLSAgICAgICAgICAgIGFzc2VydCBz
dHIoZSkgPT0gcmVzcF9jb250ZW50LmRlY29kZSgndXRmLTgnKQorICAgICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoQmFkU3RhdHVzTGluZSkgYXMgZToKKyAgICAgICAgICAgIHNlbGYucmVxdWVzdChy
b3V0ZVsxXSkKKyAgICAgICAgYXNzZXJ0IHN0cihlLnZhbHVlKSA9PSByZXNwX2NvbnRlbnQuZGVj
b2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRlc3RIMlJlc3BvbnNlKFRlc3RVc2luZ0gyU2VydmVyKToK
ICAgICBkZWYgdGVzdF93cml0ZV93aXRob3V0X2VuZGluZ19zdHJlYW0oc2VsZik6CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvdGVzdF9zZXJ2ZXIucHkKaW5kZXggMDUxZGMzZjFkZWZhLi5mM2IwOTVjZmJmMGIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3NlcnZlci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvdGVzdF9zZXJ2ZXIucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QK
IAogaW1wb3J0IHB5dGVzdAotZnJvbSBzaXgubW92ZXMudXJsbGliLmVycm9yIGltcG9ydCBIVFRQ
RXJyb3IKK2Zyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJyb3IKIAogd3B0c2VydmUgPSBw
eXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNp
bmdTZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvdGVzdF9zdGFzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4
IDBiOTYwYzFlOWY4Ni4uMWM0YzlhZDkzM2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvdGVzdF9zdGFzaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQpA
QCAtMSw0ICsxLDMgQEAKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHV1aWQK
IApAQCAtMTAsOCArOSw2IEBAIGZyb20gd3B0c2VydmUuc3Rhc2ggaW1wb3J0IFN0YXNoU2VydmVy
CiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdTZXJ2ZXIKIAogCi1AcHl0ZXN0Lm1hcmsuc2tp
cGlmKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpIGFuZCBzeXMucGxhdGZvcm0gPT0gJ2Rhcndp
bicsCi0gICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibXVsdGlwcm9jZXNzaW5nIHRlc3QgaGFu
Z3MgaW4gUHl0aG9uIDMuOCBvbiBtYWNPUyAoIzI0ODgwKSIpCiBjbGFzcyBUZXN0UmVzcG9uc2VT
ZXRDb29raWUoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdD1Ob25l
KToKICAgICAgICAgd2l0aCBTdGFzaFNlcnZlcihOb25lLCBhdXRoa2V5PXN0cih1dWlkLnV1aWQ0
KCkpKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
dGVzdHMvZnVuY3Rpb25hbC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzgwNjUyMDU3ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy9mdW5jdGlvbmFsL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Jhc2Uu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlv
bmFsL3Rlc3RfaGFuZGxlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9maWxl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcGlwZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvdGVzdF9yZXF1ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
dGVzdF9zdGFzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL3Rlc3RfcmVxdWVzdC5weQppbmRleCA5MTM5MGIyOGU0MTUuLmY2OTQ3MGQ0YjZkMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVl
c3QucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgbW9jawotZnJvbSBzaXggaW1wb3J0IGJpbmFy
eV90eXBlCiAKIGZyb20gd3B0c2VydmUucmVxdWVzdCBpbXBvcnQgUmVxdWVzdCwgUmVxdWVzdEhl
YWRlcnMsIE11bHRpRGljdAogCkBAIC00OSw5ICs0OCw5IEBAIGRlZiB0ZXN0X3JlcXVlc3RfaGVh
ZGVyc19lbmNvZGluZygpOgogICAgICAgICAneC1iYXInOiBbJ2JhcjEnLCAnYmFyMiddLAogICAg
IH0pCiAgICAgaGVhZGVycyA9IFJlcXVlc3RIZWFkZXJzKHJhd19oZWFkZXJzKQotICAgIGFzc2Vy
dCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gtZm9vJ10sIGJpbmFyeV90eXBlKQotICAgIGFzc2VydCBp
c2luc3RhbmNlKGhlYWRlcnNbJ3gtYmFyJ10sIGJpbmFyeV90eXBlKQotICAgIGFzc2VydCBpc2lu
c3RhbmNlKGhlYWRlcnMuZ2V0X2xpc3QoJ3gtYmFyJylbMF0sIGJpbmFyeV90eXBlKQorICAgIGFz
c2VydCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gtZm9vJ10sIGJ5dGVzKQorICAgIGFzc2VydCBpc2lu
c3RhbmNlKGhlYWRlcnNbJ3gtYmFyJ10sIGJ5dGVzKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGhl
YWRlcnMuZ2V0X2xpc3QoJ3gtYmFyJylbMF0sIGJ5dGVzKQogCiAKIGRlZiB0ZXN0X3JlcXVlc3Rf
dXJsX2Zyb21fc2VydmVyX2FkZHJlc3MoKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXNw
b25zZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXNwb25zZS5weQppbmRleCBmODA0OGFjMWNlNTUuLjE2
NDQwZGEyYjI3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3Jlc3BvbnNlLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
dGVzdHMvdGVzdF9yZXNwb25zZS5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCBtb2NrCi1mcm9t
IHNpeCBpbXBvcnQgQnl0ZXNJTworZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBmcm9tIHdwdHNl
cnZlLnJlc3BvbnNlIGltcG9ydCBSZXNwb25zZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rf
c3Rhc2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKaW5kZXggMzFhZjE1NThiMGNjLi40MTU3
ZGI1NzI2ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9zdGFzaC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3Rz
L3Rlc3Rfc3Rhc2gucHkKQEAgLTEsMTAgKzEsMTAgQEAKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcK
LWltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCBzeXMKKwogZnJvbSBtdWx0aXBy
b2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0IEJhc2VNYW5hZ2VyCiAKIGltcG9ydCBweXRlc3QKLWZy
b20gc2l4IGltcG9ydCBQWTMKIAogU3Rhc2ggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2
ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTIwLDYgKzIwLDcgQEAgZGVmIGFkZF9jbGVhbnVwKCk6CiAg
ICAgZm9yIGZuIGluIGZuczoKICAgICAgICAgZm4oKQogCisKIGRlZiBydW4ocHJvY2Vzc19xdWV1
ZSwgcmVxdWVzdF9sb2NrLCByZXNwb25zZV9sb2NrKToKICAgICAiIiJDcmVhdGUgdHdvIFN0YXNo
IGluc3RhbmNlcyBpbiBwYXJhbGxlbCB0aHJlYWRzLiBVc2UgdGhlIHByb3ZpZGVkIGxvY2tzCiAg
ICAgdG8gZW5zdXJlIHRoZSBmaXJzdCB0aHJlYWQgaXMgYWN0aXZlbHkgZXN0YWJsaXNoaW5nIGFu
IGludGVycHJvY2VzcwpAQCAtNTgsMTYgKzU5LDE5IEBAIGRlZiBydW4ocHJvY2Vzc19xdWV1ZSwg
cmVxdWVzdF9sb2NrLCByZXNwb25zZV9sb2NrKToKICAgICBwcm9jZXNzX3F1ZXVlLnB1dCh0aHJl
YWRfcXVldWUuZ2V0KCkpCiAKIAorY2xhc3MgU2xvd0xvY2soQmFzZU1hbmFnZXIpOgorICAgICMg
VGhpcyBjYW4gb25seSBiZSB1c2VkIGluIHRlc3RfZGVsYXllZF9sb2NrIHNpbmNlIHRoYXQgdGVz
dCBtb2RpZmllcyB0aGUKKyAgICAjIGNsYXNzIGJvZHksIGJ1dCBpdCBoYXMgdG8gYmUgYSBnbG9i
YWwgZm9yIG11bHRpcHJvY2Vzc2luZworICAgIHBhc3MKKworCiBAcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IKLSAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11
bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKKyAgICAgICAgICAg
ICAgICAgICBtdWx0aXByb2Nlc3NpbmcuZ2V0X3N0YXJ0X21ldGhvZCgpID09ICJzcGF3biIsCiAg
ICAgICAgICAgICAgICAgICAgcmVhc29uPSJodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdC9pc3N1ZXMvMTY5MzgiKQogZGVmIHRlc3RfZGVsYXllZF9sb2NrKGFkZF9jbGVh
bnVwKToKICAgICAiIiJFbnN1cmUgdGhhdCBkZWxheXMgaW4gcHJveGllZCBMb2NrIHJldHJpZXZh
bCBkbyBub3QgaW50ZXJmZXJlIHdpdGgKICAgICBpbml0aWFsaXphdGlvbiBpbiBwYXJhbGxlbCB0
aHJlYWRzLiIiIgogCi0gICAgY2xhc3MgU2xvd0xvY2soQmFzZU1hbmFnZXIpOgotICAgICAgICBw
YXNzCi0KICAgICByZXF1ZXN0X2xvY2sgPSBtdWx0aXByb2Nlc3NpbmcuTG9jaygpCiAgICAgcmVz
cG9uc2VfbG9jayA9IG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkKIApAQCAtOTgsMTYgKzEwMiwxOSBA
QCBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICAgICAiYm90aCBpbnN0
YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikKIAogCitjbGFzcyBTbG93RGljdChCYXNlTWFuYWdlcik6
CisgICAgIyBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgaW4gdGVzdF9kZWxheWVkX2RpY3Qgc2luY2Ug
dGhhdCB0ZXN0IG1vZGlmaWVzIHRoZQorICAgICMgY2xhc3MgYm9keSwgYnV0IGl0IGhhcyB0byBi
ZSBhIGdsb2JhbCBmb3IgbXVsdGlwcm9jZXNzaW5nCisgICAgcGFzcworCisKIEBweXRlc3QubWFy
ay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBvcgotICAgICAgICAgICAgICAgICAgIFBZ
MyBhbmQgbXVsdGlwcm9jZXNzaW5nLmdldF9zdGFydF9tZXRob2QoKSA9PSAic3Bhd24iLAorICAg
ICAgICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0aG9kKCkgPT0gInNw
YXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBkZWYgdGVzdF9kZWxheWVkX2RpY3Qo
YWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRlbGF5cyBpbiBwcm94aWVkIGBkaWN0
YCByZXRyaWV2YWwgZG8gbm90IGludGVyZmVyZSB3aXRoCiAgICAgaW5pdGlhbGl6YXRpb24gaW4g
cGFyYWxsZWwgdGhyZWFkcy4iIiIKIAotICAgIGNsYXNzIFNsb3dEaWN0KEJhc2VNYW5hZ2VyKToK
LSAgICAgICAgcGFzcwotCiAgICAgcmVxdWVzdF9sb2NrID0gbXVsdGlwcm9jZXNzaW5nLkxvY2so
KQogICAgIHJlc3BvbnNlX2xvY2sgPSBtdWx0aXByb2Nlc3NpbmcuTG9jaygpCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzcwOTI0YzA0ZWMuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy90ZXN0X2NvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXBsYWNlbWVu
dF90b2tlbml6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9y
ZXNwb25zZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9zdGFzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZhYWFmNjdlOTg1OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL01BTklGRVNULmluCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9SRUFE
TUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvY29uZmlnLnB5CmluZGV4IDRkNjUzZjUyMmEwNS4uODQzZjZlNjY0ZTM0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQpA
QCAtMiw5ICsyLDcgQEAgaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Ci0KLWZyb20gc2l4Lm1vdmVzLmNvbGxl
Y3Rpb25zX2FiYyBpbXBvcnQgTWFwcGluZwotZnJvbSBzaXggaW1wb3J0IGludGVnZXJfdHlwZXMs
IGl0ZXJpdGVtcywgaXRlcnZhbHVlcywgc3RyaW5nX3R5cGVzCitmcm9tIGNvbGxlY3Rpb25zLmFi
YyBpbXBvcnQgTWFwcGluZwogCiBmcm9tIC4gaW1wb3J0IHNzbHV0aWxzCiBmcm9tIC51dGlscyBp
bXBvcnQgZ2V0X3BvcnQKQEAgLTIwLDcgKzE4LDcgQEAgX3JlbmFtZWRfcHJvcHMgPSB7CiAKIGRl
ZiBfbWVyZ2VfZGljdChiYXNlX2RpY3QsIG92ZXJyaWRlX2RpY3QpOgogICAgIHJ2ID0gYmFzZV9k
aWN0LmNvcHkoKQotICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhiYXNlX2RpY3QpOgor
ICAgIGZvciBrZXksIHZhbHVlIGluIGJhc2VfZGljdC5pdGVtcygpOgogICAgICAgICBpZiBrZXkg
aW4gb3ZlcnJpZGVfZGljdDoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3Qp
OgogICAgICAgICAgICAgICAgIHJ2W2tleV0gPSBfbWVyZ2VfZGljdCh2YWx1ZSwgb3ZlcnJpZGVf
ZGljdFtrZXldKQpAQCAtODksNyArODcsNyBAQCBjbGFzcyBDb25maWcoTWFwcGluZyk6CiAgICAg
ICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W3BhcnRdCiAgICAgICAgICAgICB2YWx1ZSA9IHRh
cmdldFtrZXlbLTFdXQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6Ci0g
ICAgICAgICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0ge2s6diBmb3IgKGssdikgaW4gaXRlcml0
ZW1zKHZhbHVlKSBpZiBub3Qgay5zdGFydHN3aXRoKCJvcCIpfQorICAgICAgICAgICAgICAgIHRh
cmdldFtrZXlbLTFdXSA9IHtrOnYgZm9yIChrLHYpIGluIHZhbHVlLml0ZW1zKCkgaWYgbm90IGsu
c3RhcnRzd2l0aCgib3AiKX0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdGFy
Z2V0W2tleVstMV1dID0gW3ggZm9yIHggaW4gdmFsdWUgaWYgbm90IHguc3RhcnRzd2l0aCgib3Ai
KV0KIApAQCAtOTgsOSArOTYsOSBAQCBjbGFzcyBDb25maWcoTWFwcGluZyk6CiAKIGRlZiBqc29u
X3R5cGVzKG9iaik6CiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgotICAgICAgICByZXR1
cm4ge2tleToganNvbl90eXBlcyh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKG9i
ail9Ci0gICAgaWYgKGlzaW5zdGFuY2Uob2JqLCBzdHJpbmdfdHlwZXMpIG9yCi0gICAgICAgIGlz
aW5zdGFuY2Uob2JqLCBpbnRlZ2VyX3R5cGVzKSBvcgorICAgICAgICByZXR1cm4ge2tleToganNv
bl90eXBlcyh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gb2JqLml0ZW1zKCl9CisgICAgaWYgKGlz
aW5zdGFuY2Uob2JqLCBzdHIpIG9yCisgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBpbnQpIG9yCiAg
ICAgICAgIGlzaW5zdGFuY2Uob2JqLCBmbG9hdCkgb3IKICAgICAgICAgaXNpbnN0YW5jZShvYmos
IGJvb2wpIG9yCiAgICAgICAgIG9iaiBpcyBOb25lKToKQEAgLTIwMywxMyArMjAxLDEzIEBAIGNs
YXNzIENvbmZpZ0J1aWxkZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLmxvZ19sZXZl
bCA9IGxldmVsX25hbWUKICAgICAgICAgICAgIHNlbGYuX2xvZ2dlcl9uYW1lID0gbG9nZ2VyLm5h
bWUKIAotICAgICAgICBmb3IgaywgdiBpbiBpdGVyaXRlbXMoc2VsZi5fZGVmYXVsdCk6CisgICAg
ICAgIGZvciBrLCB2IGluIHNlbGYuX2RlZmF1bHQuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYu
X2RhdGFba10gPSBrd2FyZ3MucG9wKGssIHYpCiAKICAgICAgICAgc2VsZi5fZGF0YVsic3ViZG9t
YWlucyJdID0gc3ViZG9tYWlucwogICAgICAgICBzZWxmLl9kYXRhWyJub3Rfc3ViZG9tYWlucyJd
ID0gbm90X3N1YmRvbWFpbnMKIAotICAgICAgICBmb3IgaywgbmV3X2sgaW4gaXRlcml0ZW1zKF9y
ZW5hbWVkX3Byb3BzKToKKyAgICAgICAgZm9yIGssIG5ld19rIGluIF9yZW5hbWVkX3Byb3BzLml0
ZW1zKCk6CiAgICAgICAgICAgICBpZiBrIGluIGt3YXJnczoKICAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKAogICAgICAgICAgICAgICAgICAgICAiJXMgaW4gY29uZmlnIGlzIGRl
cHJlY2F0ZWQ7IHVzZSAlcyBpbnN0ZWFkIiAlICgKQEAgLTI0Miw3ICsyNDAsNyBAQCBjbGFzcyBD
b25maWdCdWlsZGVyKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBrIGluIG92ZXJyaWRlOgogICAg
ICAgICAgICAgICAgIHNlbGYuX3NldF9vdmVycmlkZShrLCBvdmVycmlkZS5wb3AoaykpCiAKLSAg
ICAgICAgZm9yIGssIG5ld19rIGluIGl0ZXJpdGVtcyhfcmVuYW1lZF9wcm9wcyk6CisgICAgICAg
IGZvciBrLCBuZXdfayBpbiBfcmVuYW1lZF9wcm9wcy5pdGVtcygpOgogICAgICAgICAgICAgaWYg
ayBpbiBvdmVycmlkZToKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKAogICAg
ICAgICAgICAgICAgICAgICAiJXMgaW4gY29uZmlnIGlzIGRlcHJlY2F0ZWQ7IHVzZSAlcyBpbnN0
ZWFkIiAlICgKQEAgLTI4Nyw3ICsyODUsNyBAQCBjbGFzcyBDb25maWdCdWlsZGVyKG9iamVjdCk6
CiAKICAgICBkZWYgX2dldF9wb3J0cyhzZWxmLCBkYXRhKToKICAgICAgICAgbmV3X3BvcnRzID0g
ZGVmYXVsdGRpY3QobGlzdCkKLSAgICAgICAgZm9yIHNjaGVtZSwgcG9ydHMgaW4gaXRlcml0ZW1z
KGRhdGFbInBvcnRzIl0pOgorICAgICAgICBmb3Igc2NoZW1lLCBwb3J0cyBpbiBkYXRhWyJwb3J0
cyJdLml0ZW1zKCk6CiAgICAgICAgICAgICBpZiBzY2hlbWUgaW4gWyJ3c3MiLCAiaHR0cHMiXSBh
bmQgbm90IHNzbHV0aWxzLmdldF9jbHMoZGF0YVsic3NsIl1bInR5cGUiXSkuc3NsX2VuYWJsZWQ6
CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGZvciBpLCBwb3J0IGluIGVu
dW1lcmF0ZShwb3J0cyk6CkBAIC0zMDEsNyArMjk5LDcgQEAgY2xhc3MgQ29uZmlnQnVpbGRlcihv
YmplY3QpOgogICAgICAgICBob3N0c1siIl0gPSBkYXRhWyJicm93c2VyX2hvc3QiXQogCiAgICAg
ICAgIHJ2ID0ge30KLSAgICAgICAgZm9yIG5hbWUsIGhvc3QgaW4gaXRlcml0ZW1zKGhvc3RzKToK
KyAgICAgICAgZm9yIG5hbWUsIGhvc3QgaW4gaG9zdHMuaXRlbXMoKToKICAgICAgICAgICAgIHJ2
W25hbWVdID0ge3N1YmRvbWFpbjogKHN1YmRvbWFpbi5lbmNvZGUoImlkbmEiKS5kZWNvZGUoImFz
Y2lpIikgKyB1Ii4iICsgaG9zdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWJkb21h
aW4gaW4gZGF0YVsic3ViZG9tYWlucyJdfQogICAgICAgICAgICAgcnZbbmFtZV1bIiJdID0gaG9z
dApAQCAtMzEzLDcgKzMxMSw3IEBAIGNsYXNzIENvbmZpZ0J1aWxkZXIob2JqZWN0KToKICAgICAg
ICAgaG9zdHNbIiJdID0gZGF0YVsiYnJvd3Nlcl9ob3N0Il0KIAogICAgICAgICBydiA9IHt9Ci0g
ICAgICAgIGZvciBuYW1lLCBob3N0IGluIGl0ZXJpdGVtcyhob3N0cyk6CisgICAgICAgIGZvciBu
YW1lLCBob3N0IGluIGhvc3RzLml0ZW1zKCk6CiAgICAgICAgICAgICBydltuYW1lXSA9IHtzdWJk
b21haW46IChzdWJkb21haW4uZW5jb2RlKCJpZG5hIikuZGVjb2RlKCJhc2NpaSIpICsgdSIuIiAr
IGhvc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3ViZG9tYWluIGluIGRhdGFbIm5v
dF9zdWJkb21haW5zIl19CiAgICAgICAgIHJldHVybiBydgpAQCAtMzI3LDEzICszMjUsMTMgQEAg
Y2xhc3MgQ29uZmlnQnVpbGRlcihvYmplY3QpOgogCiAgICAgZGVmIF9nZXRfZG9tYWluc19zZXQo
c2VsZiwgZGF0YSk6CiAgICAgICAgIHJldHVybiB7ZG9tYWluCi0gICAgICAgICAgICAgICAgZm9y
IHBlcl9ob3N0X2RvbWFpbnMgaW4gaXRlcnZhbHVlcyhkYXRhWyJkb21haW5zIl0pCi0gICAgICAg
ICAgICAgICAgZm9yIGRvbWFpbiBpbiBpdGVydmFsdWVzKHBlcl9ob3N0X2RvbWFpbnMpfQorICAg
ICAgICAgICAgICAgIGZvciBwZXJfaG9zdF9kb21haW5zIGluIGRhdGFbImRvbWFpbnMiXS52YWx1
ZXMoKQorICAgICAgICAgICAgICAgIGZvciBkb21haW4gaW4gcGVyX2hvc3RfZG9tYWlucy52YWx1
ZXMoKX0KIAogICAgIGRlZiBfZ2V0X25vdF9kb21haW5zX3NldChzZWxmLCBkYXRhKToKICAgICAg
ICAgcmV0dXJuIHtkb21haW4KLSAgICAgICAgICAgICAgICBmb3IgcGVyX2hvc3RfZG9tYWlucyBp
biBpdGVydmFsdWVzKGRhdGFbIm5vdF9kb21haW5zIl0pCi0gICAgICAgICAgICAgICAgZm9yIGRv
bWFpbiBpbiBpdGVydmFsdWVzKHBlcl9ob3N0X2RvbWFpbnMpfQorICAgICAgICAgICAgICAgIGZv
ciBwZXJfaG9zdF9kb21haW5zIGluIGRhdGFbIm5vdF9kb21haW5zIl0udmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICBmb3IgZG9tYWluIGluIHBlcl9ob3N0X2RvbWFpbnMudmFsdWVzKCl9CiAKICAg
ICBkZWYgX2dldF9hbGxfZG9tYWluc19zZXQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHJldHVybiBk
YXRhWyJkb21haW5zX3NldCJdIHwgZGF0YVsibm90X2RvbWFpbnNfc2V0Il0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvaGFuZGxlcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5CmluZGV4IGQx
ZTk2MTRjMDMxMi4uOWViNGE0NGMxOTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJz
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKQEAgLTEsMTEgKzEsOSBAQAogaW1wb3J0
IGpzb24KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawogZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNl
IGltcG9ydCBxdW90ZSwgdW5xdW90ZSwgdXJsam9pbgotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVt
cworZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHF1b3RlLCB1bnF1b3RlLCB1cmxqb2luCiAKIGZy
b20gLmNvbnN0YW50cyBpbXBvcnQgY29udGVudF90eXBlcwogZnJvbSAucGlwZXMgaW1wb3J0IFBp
cGVsaW5lLCB0ZW1wbGF0ZQpAQCAtOTksNyArOTcsOSBAQCBjbGFzcyBEaXJlY3RvcnlIYW5kbGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgeyJsaW5rIjogbGluaywgIm5hbWUiOiAiLi4i
fSkKICAgICAgICAgaXRlbXMgPSBbXQogICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCi0gICAgICAg
IGZvciBpdGVtIGluIHNvcnRlZChvcy5saXN0ZGlyKHBhdGgpKToKKyAgICAgICAgIyBUaGlzIGVu
c3VyZXMgdGhhdCAuaGVhZGVycyBhbHdheXMgc29ydHMgYWZ0ZXIgdGhlIGZpbGUgaXQgcHJvdmlk
ZXMgdGhlIGhlYWRlcnMgZm9yLiBFLmcuLAorICAgICAgICAjIGlmIHdlIGhhdmUgeCwgeC15LCBh
bmQgeC5oZWFkZXJzLCB0aGUgb3JkZXIgd2lsbCBiZSB4LCB4LmhlYWRlcnMsIGFuZCB0aGVuIHgt
eS4KKyAgICAgICAgZm9yIGl0ZW0gaW4gc29ydGVkKG9zLmxpc3RkaXIocGF0aCksIGtleT1sYW1i
ZGEgeDogKHhbOi1sZW4oIi5oZWFkZXJzIildLCB4KSBpZiB4LmVuZHN3aXRoKCIuaGVhZGVycyIp
IGVsc2UgKHgsIHgpKToKICAgICAgICAgICAgIGlmIHByZXZfaXRlbSBhbmQgcHJldl9pdGVtICsg
Ii5oZWFkZXJzIiA9PSBpdGVtOgogICAgICAgICAgICAgICAgIGl0ZW1zWy0xXVsxXSA9IGl0ZW0K
ICAgICAgICAgICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCkBAIC0yODcsOSArMjg3LDkgQEAgY2xh
c3MgUHl0aG9uU2NyaXB0SGFuZGxlcihvYmplY3QpOgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
ICAgICAgICAgcmV0dXJuICI8JXMgYmFzZV9wYXRoOiVzIHVybF9iYXNlOiVzPiIgJSAoc2VsZi5f
X2NsYXNzX18uX19uYW1lX18sIHNlbGYuYmFzZV9wYXRoLCBzZWxmLnVybF9iYXNlKQogCi0gICAg
ZGVmIF9zZXRfcGF0aF9hbmRfbG9hZF9maWxlKHNlbGYsIHJlcXVlc3QsIHJlc3BvbnNlLCBmdW5j
KToKKyAgICBkZWYgX2xvYWRfZmlsZShzZWxmLCByZXF1ZXN0LCByZXNwb25zZSwgZnVuYyk6CiAg
ICAgICAgICIiIgotICAgICAgICBUaGlzIG1vZGlmaWVzIHRoZSBgc3lzLnBhdGhgIGFuZCBsb2Fk
cyB0aGUgcmVxdWVzdGVkIHB5dGhvbiBmaWxlIGFzIGFuIGVudmlyb24gdmFyaWFibGUuCisgICAg
ICAgIFRoaXMgbG9hZHMgdGhlIHJlcXVlc3RlZCBweXRob24gZmlsZSBhcyBhbiBlbnZpcm9uIHZh
cmlhYmxlLgogCiAgICAgICAgIE9uY2UgdGhlIGVudmlyb24gaXMgbG9hZGVkLCB0aGUgcGFzc2Vk
IGBmdW5jYCBpcyBydW4gd2l0aCB0aGlzIGxvYWRlZCBlbnZpcm9uLgogCkBAIC0zMDAsMTEgKzMw
MCw4IEBAIGNsYXNzIFB5dGhvblNjcmlwdEhhbmRsZXIob2JqZWN0KToKICAgICAgICAgIiIiCiAg
ICAgICAgIHBhdGggPSBmaWxlc3lzdGVtX3BhdGgoc2VsZi5iYXNlX3BhdGgsIHJlcXVlc3QsIHNl
bGYudXJsX2Jhc2UpCiAKLSAgICAgICAgc3lzX3BhdGggPSBzeXMucGF0aFs6XQotICAgICAgICBz
eXNfbW9kdWxlcyA9IHN5cy5tb2R1bGVzLmNvcHkoKQogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICBlbnZpcm9uID0geyJfX2ZpbGVfXyI6IHBhdGh9Ci0gICAgICAgICAgICBzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5kaXJuYW1lKHBhdGgpKQogICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgs
ICdyYicpIGFzIGY6CiAgICAgICAgICAgICAgICAgZXhlYyhjb21waWxlKGYucmVhZCgpLCBwYXRo
LCAnZXhlYycpLCBlbnZpcm9uLCBlbnZpcm9uKQogCkBAIC0zMTMsOSArMzEwLDYgQEAgY2xhc3Mg
UHl0aG9uU2NyaXB0SGFuZGxlcihvYmplY3QpOgogCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgog
ICAgICAgICAgICAgcmFpc2UgSFRUUEV4Y2VwdGlvbig0MDQpCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzeXMucGF0aCA9IHN5c19wYXRoCi0gICAgICAgICAgICBzeXMubW9kdWxlcyA9
IHN5c19tb2R1bGVzCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVxdWVzdCwgcmVzcG9uc2Up
OgogICAgICAgICBkZWYgZnVuYyhyZXF1ZXN0LCByZXNwb25zZSwgZW52aXJvbiwgcGF0aCk6CkBA
IC0zMjYsNyArMzIwLDcgQEAgY2xhc3MgUHl0aG9uU2NyaXB0SGFuZGxlcihvYmplY3QpOgogICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBIVFRQRXhjZXB0aW9uKDUwMCwg
Ik5vIG1haW4gZnVuY3Rpb24gaW4gc2NyaXB0ICVzIiAlIHBhdGgpCiAKLSAgICAgICAgc2VsZi5f
c2V0X3BhdGhfYW5kX2xvYWRfZmlsZShyZXF1ZXN0LCByZXNwb25zZSwgZnVuYykKKyAgICAgICAg
c2VsZi5fbG9hZF9maWxlKHJlcXVlc3QsIHJlc3BvbnNlLCBmdW5jKQogCiAgICAgZGVmIGZyYW1l
X2hhbmRsZXIoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgICIiIgpAQCAtMzUzLDcgKzM0Nyw3IEBA
IGNsYXNzIFB5dGhvblNjcmlwdEhhbmRsZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICByYWlz
ZSBIVFRQRXhjZXB0aW9uKDUwMCwgIk5vIG1haW4gZnVuY3Rpb24gb3IgaGFuZGxlcnMgaW4gc2Ny
aXB0ICVzIiAlIHBhdGgpCiAKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyCi0gICAgICAgIHJl
dHVybiBzZWxmLl9zZXRfcGF0aF9hbmRfbG9hZF9maWxlKHJlcXVlc3QsIE5vbmUsIGZ1bmMpCisg
ICAgICAgIHJldHVybiBzZWxmLl9sb2FkX2ZpbGUocmVxdWVzdCwgTm9uZSwgZnVuYykKIAogCiBw
eXRob25fc2NyaXB0X2hhbmRsZXIgPSBQeXRob25TY3JpcHRIYW5kbGVyKCkKQEAgLTQ4Nyw3ICs0
ODEsNyBAQCBjbGFzcyBTdHJpbmdIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZGF0YSA9
IGRhdGEKIAogICAgICAgICBzZWxmLnJlc3BfaGVhZGVycyA9IFsoIkNvbnRlbnQtVHlwZSIsIGNv
bnRlbnRfdHlwZSldCi0gICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhoZWFkZXJzKToKKyAg
ICAgICAgZm9yIGssIHYgaW4gaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5yZXNw
X2hlYWRlcnMuYXBwZW5kKChrLnJlcGxhY2UoIl8iLCAiLSIpLCB2KSkKIAogICAgICAgICBzZWxm
LmhhbmRsZXIgPSBoYW5kbGVyKHNlbGYuaGFuZGxlX3JlcXVlc3QpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL3BpcGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQppbmRleCBiYmYyNWU2ZmUxMTEu
LjJhYTBhYWFlZThkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL3BpcGVzLnB5CkBAIC03LDggKzcsNyBAQCBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiBp
bXBvcnQgdXVpZAogCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgU3RyaW5nSU8KLWZyb20gc2l4IGlt
cG9ydCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBlCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCiB0
cnk6CiAgICAgZnJvbSBodG1sIGltcG9ydCBlc2NhcGUKQEAgLTMwNSw3ICszMDQsNyBAQCBjbGFz
cyBSZXBsYWNlbWVudFRva2VuaXplcihvYmplY3QpOgogICAgICAgICByZXR1cm4gKCJ2YXIiLCB0
b2tlbikKIAogICAgIGRlZiB0b2tlbml6ZShzZWxmLCBzdHJpbmcpOgotICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShzdHJpbmcsIGJpbmFyeV90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShzdHJpbmcsIGJ5dGVzKQogICAgICAgICByZXR1cm4gc2VsZi5zY2FubmVyLnNjYW4oc3RyaW5n
KVswXQogCiAgICAgc2Nhbm5lciA9IHJlLlNjYW5uZXIoWyhiciJcJFx3KzoiLCB2YXIpLApAQCAt
MzIwLDcgKzMxOSw3IEBAIGNsYXNzIEZpcnN0V3JhcHBlcihvYmplY3QpOgogCiAgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0
cik6CiAgICAgICAgICAgICAgICAga2V5ID0ga2V5LmVuY29kZSgnaXNvLTg4NTktMScpCiAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5wYXJhbXMuZmlyc3Qoa2V5KQogICAgICAgICBleGNlcHQgS2V5
RXJyb3I6CkBAIC00MDgsNyArNDA3LDcgQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAK
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGZpbGVfaGFzaChyZXF1ZXN0LCBhbGdvcml0aG0s
IHBhdGgpOgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhbGdvcml0aG0sIHRleHRfdHlwZSkK
KyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYWxnb3JpdGhtLCBzdHIpCiAgICAgICAgIGlmIGFs
Z29yaXRobSBub3QgaW4gU3ViRnVuY3Rpb25zLnN1cHBvcnRlZF9hbGdvcml0aG1zOgogICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG06
ICclcyciICUgYWxnb3JpdGhtKQogCkBAIC00NjAsMTIgKzQ1OSwxMiBAQCBkZWYgdGVtcGxhdGUo
cmVxdWVzdCwgY29udGVudCwgZXNjYXBlX3R5cGU9Imh0bWwiKToKICAgICAgICAgdG9rZW5zID0g
ZGVxdWUodG9rZW5zKQogCiAgICAgICAgIHRva2VuX3R5cGUsIGZpZWxkID0gdG9rZW5zLnBvcGxl
ZnQoKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWVsZCwgdGV4dF90eXBlKQorICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShmaWVsZCwgc3RyKQogCiAgICAgICAgIGlmIHRva2VuX3R5cGUg
PT0gInZhciI6CiAgICAgICAgICAgICB2YXJpYWJsZSA9IGZpZWxkCiAgICAgICAgICAgICB0b2tl
bl90eXBlLCBmaWVsZCA9IHRva2Vucy5wb3BsZWZ0KCkKLSAgICAgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKGZpZWxkLCB0ZXh0X3R5cGUpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShm
aWVsZCwgc3RyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdmFyaWFibGUgPSBOb25lCiAK
QEAgLTUxNiw3ICs1MTUsNyBAQCBkZWYgdGVtcGxhdGUocmVxdWVzdCwgY29udGVudCwgZXNjYXBl
X3R5cGU9Imh0bWwiKToKICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgdG9rZW4gdHlw
ZSAlcyAodG9rZW4gJyVyJyksIGV4cGVjdGVkIGlkZW50IG9yIGFyZ3VtZW50cyIgJSAodHR5cGUs
IGZpZWxkKQogICAgICAgICAgICAgICAgICkKIAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh2
YWx1ZSwgKGludCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKSksIHRva2VucworICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgKGludCwgKGJ5dGVzLCBzdHIpKSksIHRva2VucwogCiAg
ICAgICAgIGlmIHZhcmlhYmxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdmFyaWFibGVzW3Zh
cmlhYmxlXSA9IHZhbHVlCkBAIC01MjcsMTAgKzUyNiwxMCBAQCBkZWYgdGVtcGxhdGUocmVxdWVz
dCwgY29udGVudCwgZXNjYXBlX3R5cGU9Imh0bWwiKToKICAgICAgICAgIyBTaG91bGQgcG9zc2li
bHkgc3VwcG9ydCBlc2NhcGluZyBmb3Igb3RoZXIgY29udGV4dHMgZS5nLiBzY3JpcHQKICAgICAg
ICAgIyBUT0RPOiByZWFkIHRoZSBlbmNvZGluZyBvZiB0aGUgcmVzcG9uc2UKICAgICAgICAgIyBj
Z2kuZXNjYXBlKCkgb25seSB0YWtlcyB0ZXh0IHN0cmluZ3MgaW4gUHl0aG9uIDMuCi0gICAgICAg
IGlmIGlzaW5zdGFuY2UodmFsdWUsIGJpbmFyeV90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZSh2YWx1ZSwgYnl0ZXMpOgogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoInV0Zi04
IikKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgotICAgICAgICAgICAgdmFs
dWUgPSB0ZXh0X3R5cGUodmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIGVzY2FwZV9mdW5jKHZhbHVlKS5lbmNvZGUoInV0Zi04IikKIAogICAgIHRl
bXBsYXRlX3JlZ2V4cCA9IHJlLmNvbXBpbGUoYnIie3soW159XSopfX0iKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CmluZGV4IGRiZmUw
NjdiYTdmZi4uNzY2NDRjYzQ5Njk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CkBAIC0yLDkgKzIsOSBAQCBpbXBvcnQgYmFzZTY0
CiBpbXBvcnQgY2dpCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8s
IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIFBZMwotZnJvbSBzaXgubW92ZXMuaHR0cF9jb29raWVz
IGltcG9ydCBCYXNlQ29va2llCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHBh
cnNlX3FzbCwgdXJsc3BsaXQKK2Zyb20gaHR0cC5jb29raWVzIGltcG9ydCBCYXNlQ29va2llCitm
cm9tIGlvIGltcG9ydCBCeXRlc0lPCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNs
LCB1cmxzcGxpdAogCiBmcm9tIC4gaW1wb3J0IHN0YXNoCiBmcm9tIC51dGlscyBpbXBvcnQgSFRU
UEV4Y2VwdGlvbiwgaXNvbW9ycGhpY19lbmNvZGUsIGlzb21vcnBoaWNfZGVjb2RlCkBAIC0zMDEs
OSArMzAxLDggQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl9HRVQg
aXMgTm9uZToKICAgICAgICAgICAgIGt3YXJncyA9IHsKICAgICAgICAgICAgICAgICAia2VlcF9i
bGFua192YWx1ZXMiOiBUcnVlLAorICAgICAgICAgICAgICAgICJlbmNvZGluZyI6ICJpc28tODg1
OS0xIiwKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAg
ICBrd2FyZ3NbImVuY29kaW5nIl0gPSAiaXNvLTg4NTktMSIKICAgICAgICAgICAgIHBhcmFtcyA9
IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0cy5xdWVyeSwgKiprd2FyZ3MpCiAgICAgICAgICAgICBz
ZWxmLl9HRVQgPSBNdWx0aURpY3QoKQogICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcGFy
YW1zOgpAQCAtMzIxLDkgKzMyMCw4IEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAgICAgICAg
ICAgICAgICAiZW52aXJvbiI6IHsiUkVRVUVTVF9NRVRIT0QiOiBzZWxmLm1ldGhvZH0sCiAgICAg
ICAgICAgICAgICAgImhlYWRlcnMiOiBzZWxmLnJhd19oZWFkZXJzLAogICAgICAgICAgICAgICAg
ICJrZWVwX2JsYW5rX3ZhbHVlcyI6IFRydWUsCisgICAgICAgICAgICAgICAgImVuY29kaW5nIjog
Imlzby04ODU5LTEiLAogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgUFkzOgotICAgICAg
ICAgICAgICAgIGt3YXJnc1siZW5jb2RpbmciXSA9ICJpc28tODg1OS0xIgogICAgICAgICAgICAg
ZnMgPSBjZ2kuRmllbGRTdG9yYWdlKCoqa3dhcmdzKQogICAgICAgICAgICAgc2VsZi5fUE9TVCA9
IE11bHRpRGljdC5mcm9tX2ZpZWxkX3N0b3JhZ2UoZnMpCiAgICAgICAgICAgICBzZWxmLnJhd19p
bnB1dC5zZWVrKHBvcykKQEAgLTMzNiw3ICszMzQsNyBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6
CiAgICAgICAgICAgICBjb29raWVfaGVhZGVycyA9IHNlbGYuaGVhZGVycy5nZXQoImNvb2tpZSIs
IGIiIikKICAgICAgICAgICAgIHBhcnNlci5sb2FkKGNvb2tpZV9oZWFkZXJzKQogICAgICAgICAg
ICAgY29va2llcyA9IENvb2tpZXMoKQotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRl
cml0ZW1zKHBhcnNlcik6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJzZXIuaXRl
bXMoKToKICAgICAgICAgICAgICAgICBjb29raWVzW2lzb21vcnBoaWNfZW5jb2RlKGtleSldID0g
Q29va2llVmFsdWUodmFsdWUpCiAgICAgICAgICAgICBzZWxmLl9jb29raWVzID0gY29va2llcwog
ICAgICAgICByZXR1cm4gc2VsZi5fY29va2llcwpAQCAtNjMwLDExICs2MjgsOSBAQCBjbGFzcyBC
aW5hcnlDb29raWVQYXJzZXIoQmFzZUNvb2tpZSk6CiAgICAgICAgIFRoaXMgb3ZlcnJpZGVzIGFu
ZCBjYWxscyBCYXNlQ29va2llLmxvYWQuIFVubGlrZSBCYXNlQ29va2llLmxvYWQsIGl0CiAgICAg
ICAgIGRvZXMgbm90IGFjY2VwdCBkaWN0aW9uYXJpZXMuCiAgICAgICAgICIiIgotICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShyYXdkYXRhLCBiaW5hcnlfdHlwZSkKLSAgICAgICAgaWYgUFkzOgot
ICAgICAgICAgICAgIyBCYXNlQ29va2llLmxvYWQgZXhwZWN0cyBhIG5hdGl2ZSBzdHJpbmcsIHdo
aWNoIGluIFB5dGhvbiAzIGlzIHRleHQuCi0gICAgICAgICAgICByYXdkYXRhID0gaXNvbW9ycGhp
Y19kZWNvZGUocmF3ZGF0YSkKLSAgICAgICAgc3VwZXIoQmluYXJ5Q29va2llUGFyc2VyLCBzZWxm
KS5sb2FkKHJhd2RhdGEpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJhd2RhdGEsIGJ5dGVz
KQorICAgICAgICAjIEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZworICAg
ICAgICBzdXBlcihCaW5hcnlDb29raWVQYXJzZXIsIHNlbGYpLmxvYWQoaXNvbW9ycGhpY19kZWNv
ZGUocmF3ZGF0YSkpCiAKIAogY2xhc3MgQ29va2llcyhNdWx0aURpY3QpOgpAQCAtNjc1LDcgKzY3
MSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uKG9iamVjdCk6CiAKICAgICAgICAgaWYgImF1dGhv
cml6YXRpb24iIGluIGhlYWRlcnM6CiAgICAgICAgICAgICBoZWFkZXIgPSBoZWFkZXJzLmdldCgi
YXV0aG9yaXphdGlvbiIpCi0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShoZWFkZXIsIGJp
bmFyeV90eXBlKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyLCBieXRlcykK
ICAgICAgICAgICAgIGF1dGhfdHlwZSwgZGF0YSA9IGhlYWRlci5zcGxpdChiIiAiLCAxKQogICAg
ICAgICAgICAgaWYgYXV0aF90eXBlIGluIGF1dGhfc2NoZW1lczoKICAgICAgICAgICAgICAgICBz
ZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkID0gYXV0aF9zY2hlbWVzW2F1dGhfdHlwZV0oZGF0
YSkKQEAgLTY4Myw2ICs2NzksNiBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHJhaXNlIEhUVFBFeGNlcHRpb24oNDAwLCAiVW5zdXBwb3J0ZWQgYXV0aGVu
dGljYXRpb24gc2NoZW1lICVzIiAlIGF1dGhfdHlwZSkKIAogICAgIGRlZiBkZWNvZGVfYmFzaWMo
c2VsZiwgZGF0YSk6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRhdGEsIGJpbmFyeV90eXBl
KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkYXRhLCBieXRlcykKICAgICAgICAgZGVjb2Rl
ZF9kYXRhID0gYmFzZTY0LmI2NGRlY29kZShkYXRhKQogICAgICAgICByZXR1cm4gZGVjb2RlZF9k
YXRhLnNwbGl0KGIiOiIsIDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQppbmRleCAxNTE5ZWQ3OGYzOTcuLjg3NjNjY2E5MDM2ZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3Bv
bnNlLnB5CkBAIC02LDkgKzYsOCBAQCBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdXVpZAogCiBmcm9t
IGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUKK2Zyb20gaHR0cC5jb29raWVzIGltcG9y
dCBCYXNlQ29va2llLCBNb3JzZWwKIGZyb20gaHlwZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVy
c0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlvbkZyYW1lCi1mcm9tIHNpeCBpbXBvcnQgYmlu
YXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50ZWdlcl90eXBlcywgaXRlcnZhbHVlcywgUFkzCi1mcm9t
IHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VDb29raWUsIE1vcnNlbAogCiBmcm9t
IC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNlX2NvZGVzLCBoMl9oZWFkZXJzCiBmcm9tIC5sb2dn
ZXIgaW1wb3J0IGdldF9sb2dnZXIKQEAgLTQxLDExICs0MCw2IEBAIGNsYXNzIFJlc3BvbnNlKG9i
amVjdCk6CiAgICAgICAgQm9vbGVhbiwgZGVmYXVsdCBGYWxzZSwgaW5kaWNhdGluZyB3aGV0aGVy
IHRoZSBib2R5IGNvbnRlbnQgc2hvdWxkIGJlCiAgICAgICAgc2VudCB3aGVuIHRoZSByZXF1ZXN0
IG1ldGhvZCBpcyBIRUFELgogCi0gICAgLi4gYXR0cmlidXRlOjogZXhwbGljaXRfZmx1c2gKLQot
ICAgICAgIEJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG91dHB1dCBzaG91bGQgYmUgZmx1c2hl
ZCBhdXRvbWF0aWNhbGx5IG9yIG9ubHkKLSAgICAgICB3aGVuIHJlcXVlc3RlZC4KLQogICAgIC4u
IGF0dHJpYnV0ZTo6IHdyaXRlcgogCiAgICAgICAgVGhlIFJlc3BvbnNlV3JpdGVyIGZvciB0aGlz
IHJlc3BvbnNlCkBAIC03Myw3ICs2Nyw2IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAKICAg
ICAgICAgc2VsZi5hZGRfcmVxdWlyZWRfaGVhZGVycyA9IFRydWUKICAgICAgICAgc2VsZi5zZW5k
X2JvZHlfZm9yX2hlYWRfcmVxdWVzdCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZXhwbGljaXRfZmx1
c2ggPSBGYWxzZQogICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBGYWxzZQogCiAgICAg
ICAgIHNlbGYubG9nZ2VyID0gZ2V0X2xvZ2dlcigpCkBAIC05Nyw3ICs5MCw3IEBAIGNsYXNzIFJl
c3BvbnNlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHZhbHVlWzFdCiAgICAg
ICAgICAgICAgICAgIyBPbmx5IGNhbGwgc3RyKCkgaWYgbWVzc2FnZSBpcyBub3QgYSBzdHJpbmcg
dHlwZSwgc28gdGhhdCB3ZQogICAgICAgICAgICAgICAgICMgZG9uJ3QgZ2V0IGBzdHIoYiJmb28i
KSA9PSAiYidmb28nImAgaW4gUHl0aG9uIDMuCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UobWVzc2FnZSwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKToKKyAgICAgICAgICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShtZXNzYWdlLCAoYnl0ZXMsIHN0cikpOgogICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gc3RyKG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgc2VsZi5fc3Rh
dHVzID0gKGNvZGUsIG1lc3NhZ2UpCiAgICAgICAgIGVsc2U6CkBAIC0xMjgsOSArMTIxLDggQEAg
Y2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgICAgIG1heF9hZ2UgPSAwCiAgICAgICAg
ICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEpCiAKLSAgICAgICAgaWYgUFkzOgotICAg
ICAgICAgICAgbmFtZSA9IGlzb21vcnBoaWNfZGVjb2RlKG5hbWUpCi0gICAgICAgICAgICB2YWx1
ZSA9IGlzb21vcnBoaWNfZGVjb2RlKHZhbHVlKQorICAgICAgICBuYW1lID0gaXNvbW9ycGhpY19k
ZWNvZGUobmFtZSkKKyAgICAgICAgdmFsdWUgPSBpc29tb3JwaGljX2RlY29kZSh2YWx1ZSkKIAog
ICAgICAgICBkYXlzID0ge2krMTogbmFtZSBmb3IgaSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4i
LCAiZmViIiwgIm1hciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImFwciIsICJtYXkiLCAianVuIiwKQEAgLTE2OSwxNSArMTYxLDExIEBAIGNs
YXNzIFJlc3BvbnNlKG9iamVjdCk6CiAKICAgICBkZWYgdW5zZXRfY29va2llKHNlbGYsIG5hbWUp
OgogICAgICAgICAiIiJSZW1vdmUgYSBjb29raWUgZnJvbSB0aG9zZSB0aGF0IGFyZSBiZWluZyBz
ZW50IHdpdGggdGhlIHJlc3BvbnNlIiIiCi0gICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgIG5h
bWUgPSBpc29tb3JwaGljX2RlY29kZShuYW1lKQorICAgICAgICBuYW1lID0gaXNvbW9ycGhpY19k
ZWNvZGUobmFtZSkKICAgICAgICAgY29va2llcyA9IHNlbGYuaGVhZGVycy5nZXQoIlNldC1Db29r
aWUiKQogICAgICAgICBwYXJzZXIgPSBCYXNlQ29va2llKCkKICAgICAgICAgZm9yIGNvb2tpZSBp
biBjb29raWVzOgotICAgICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgICMgQmFzZUNv
b2tpZS5sb2FkIGV4cGVjdHMgYSB0ZXh0IHN0cmluZy4KLSAgICAgICAgICAgICAgICBjb29raWUg
PSBpc29tb3JwaGljX2RlY29kZShjb29raWUpCi0gICAgICAgICAgICBwYXJzZXIubG9hZChjb29r
aWUpCisgICAgICAgICAgICBwYXJzZXIubG9hZChpc29tb3JwaGljX2RlY29kZShjb29raWUpKQog
CiAgICAgICAgIGlmIG5hbWUgaW4gcGFyc2VyLmtleXMoKToKICAgICAgICAgICAgIGRlbCBzZWxm
LmhlYWRlcnNbIlNldC1Db29raWUiXQpAQCAtMjA1LDkgKzE5Myw5IEBAIGNsYXNzIFJlc3BvbnNl
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBmYWNpbGl0YXRpbmcg
bm9uLXN0cmVhbWluZyBvcGVyYXRpb25zIGxpa2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVtcGxhdGUgc3Vic3RpdHV0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5j
ZShzZWxmLmNvbnRlbnQsIGJpbmFyeV90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxm
LmNvbnRlbnQsIGJ5dGVzKToKICAgICAgICAgICAgIHlpZWxkIHNlbGYuY29udGVudAotICAgICAg
ICBlbGlmIGlzaW5zdGFuY2Uoc2VsZi5jb250ZW50LCB0ZXh0X3R5cGUpOgorICAgICAgICBlbGlm
IGlzaW5zdGFuY2Uoc2VsZi5jb250ZW50LCBzdHIpOgogICAgICAgICAgICAgeWllbGQgc2VsZi5j
b250ZW50LmVuY29kZShzZWxmLmVuY29kaW5nKQogICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZi5j
b250ZW50LCAicmVhZCIpOgogICAgICAgICAgICAgaWYgcmVhZF9maWxlOgpAQCAtMjYyLDcgKzI1
MCw3IEBAIGNsYXNzIE11bHRpcGFydENvbnRlbnQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgYm91bmRhcnk9Tm9uZSwgZGVmYXVsdF9jb250ZW50X3R5cGU9Tm9uZSk6CiAgICAgICAg
IHNlbGYuaXRlbXMgPSBbXQogICAgICAgICBpZiBib3VuZGFyeSBpcyBOb25lOgotICAgICAgICAg
ICAgYm91bmRhcnkgPSB0ZXh0X3R5cGUodXVpZC51dWlkNCgpKQorICAgICAgICAgICAgYm91bmRh
cnkgPSBzdHIodXVpZC51dWlkNCgpKQogICAgICAgICBzZWxmLmJvdW5kYXJ5ID0gYm91bmRhcnkK
ICAgICAgICAgc2VsZi5kZWZhdWx0X2NvbnRlbnRfdHlwZSA9IGRlZmF1bHRfY29udGVudF90eXBl
CiAKQEAgLTI5MCw3ICsyNzgsNyBAQCBjbGFzcyBNdWx0aXBhcnRDb250ZW50KG9iamVjdCk6CiAK
IGNsYXNzIE11bHRpcGFydFBhcnQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0
YSwgY29udGVudF90eXBlPU5vbmUsIGhlYWRlcnM9Tm9uZSk6Ci0gICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKGRhdGEsIGJpbmFyeV90eXBlKSwgZGF0YQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShkYXRhLCBieXRlcyksIGRhdGEKICAgICAgICAgc2VsZi5oZWFkZXJzID0gUmVzcG9uc2VIZWFk
ZXJzKCkKIAogICAgICAgICBpZiBjb250ZW50X3R5cGUgaXMgbm90IE5vbmU6CkBAIC0zMDksOCAr
Mjk3LDggQEAgY2xhc3MgTXVsdGlwYXJ0UGFydChvYmplY3QpOgogICAgIGRlZiB0b19ieXRlcyhz
ZWxmKToKICAgICAgICAgcnYgPSBbXQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmhl
YWRlcnM6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShrZXksIGJpbmFyeV90eXBlKQot
ICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUsIGJpbmFyeV90eXBlKQorICAgICAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoa2V5LCBieXRlcykKKyAgICAgICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKHZhbHVlLCBieXRlcykKICAgICAgICAgICAgIHJ2LmFwcGVuZChiIiVzOiAlcyIg
JSAoa2V5LCB2YWx1ZSkpCiAgICAgICAgIHJ2LmFwcGVuZChiIiIpCiAgICAgICAgIHJ2LmFwcGVu
ZChzZWxmLmRhdGEpCkBAIC0zMTksNyArMzA3LDcgQEAgY2xhc3MgTXVsdGlwYXJ0UGFydChvYmpl
Y3QpOgogCiBkZWYgX21heWJlX2VuY29kZShzKToKICAgICAiIiJFbmNvZGUgYSBzdHJpbmcgb3Ig
YW4gaW50IGludG8gYmluYXJ5IGRhdGEgdXNpbmcgaXNvbW9ycGhpY19lbmNvZGUoKS4iIiIKLSAg
ICBpZiBpc2luc3RhbmNlKHMsIGludGVnZXJfdHlwZXMpOgorICAgIGlmIGlzaW5zdGFuY2Uocywg
aW50KToKICAgICAgICAgcmV0dXJuIGIiJWkiICUgKHMsKQogICAgIHJldHVybiBpc29tb3JwaGlj
X2VuY29kZShzKQogCkBAIC0zODMsNyArMzcxLDcgQEAgY2xhc3MgUmVzcG9uc2VIZWFkZXJzKG9i
amVjdCk6CiAgICAgICAgIHNlbGYuc2V0KGtleSwgdmFsdWUpCiAKICAgICBkZWYgX19pdGVyX18o
c2VsZik6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlcyBpbiBpdGVydmFsdWVzKHNlbGYuZGF0YSk6
CisgICAgICAgIGZvciBrZXksIHZhbHVlcyBpbiBzZWxmLmRhdGEudmFsdWVzKCk6CiAgICAgICAg
ICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAgICAgICAgICAgIHlpZWxkIGtleSwgdmFs
dWUKIApAQCAtNDUzLDEwICs0NDEsMTAgQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmplY3Qp
OgogICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBoZWFkZXJzOgogICAgICAgICAgICAgIyBo
Ml9oZWFkZXJzIGFyZSBuYXRpdmUgc3RyaW5ncwogICAgICAgICAgICAgIyBoZWFkZXIgZmllbGQg
bmFtZXMgYXJlIHN0cmluZ3Mgb2YgQVNDSUkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaGVh
ZGVyLCBiaW5hcnlfdHlwZSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGhlYWRlciwgYnl0
ZXMpOgogICAgICAgICAgICAgICAgIGhlYWRlciA9IGhlYWRlci5kZWNvZGUoJ2FzY2lpJykKICAg
ICAgICAgICAgICMgdmFsdWUgaW4gaGVhZGVycyBjYW4gYmUgZWl0aGVyIHN0cmluZyBvciBpbnRl
Z2VyCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSk6CisgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBieXRlcyk6CiAgICAgICAgICAgICAgICAgdmFs
dWUgPSBzZWxmLmRlY29kZSh2YWx1ZSkKICAgICAgICAgICAgIGlmIGhlYWRlciBpbiBoMl9oZWFk
ZXJzOgogICAgICAgICAgICAgICAgIGhlYWRlciA9ICc6JyArIGhlYWRlcgpAQCAtNDg4LDcgKzQ3
Niw3IEBAIGNsYXNzIEgyUmVzcG9uc2VXcml0ZXIob2JqZWN0KToKICAgICAgICAgOnBhcmFtIGxh
c3Q6IEZsYWcgdG8gc2lnbmFsIGlmIHRoaXMgaXMgdGhlIGxhc3QgZnJhbWUgaW4gc3RyZWFtLgog
ICAgICAgICA6cGFyYW0gc3RyZWFtX2lkOiBJZCBvZiBzdHJlYW0gdG8gc2VuZCBmcmFtZSBvbi4g
V2lsbCB1c2UgdGhlIHJlcXVlc3Qgc3RyZWFtIElEIGlmIE5vbmUKICAgICAgICAgIiIiCi0gICAg
ICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgKHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAg
ICAgaWYgaXNpbnN0YW5jZShpdGVtLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgZGF0YSA9
IEJ5dGVzSU8oc2VsZi5lbmNvZGUoaXRlbSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBk
YXRhID0gaXRlbQpAQCAtNjQ0LDE4ICs2MzIsMTggQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihv
YmplY3QpOgogCiAgICAgZGVmIGRlY29kZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiQ29udmVy
dCBieXRlcyB0byB1bmljb2RlIGFjY29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4iIiIKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoZGF0YSwgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGVjb2RlKHNlbGYu
X3Jlc3BvbnNlLmVuY29kaW5nKQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YSwgdGV4dF90
eXBlKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6CiAgICAgICAgICAgICBy
ZXR1cm4gZGF0YQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcih0
eXBlKGRhdGEpKQogCiAgICAgZGVmIGVuY29kZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiQ29u
dmVydCB1bmljb2RlIHRvIGJ5dGVzIGFjY29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4iIiIK
LSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIGlmIGlz
aW5zdGFuY2UoZGF0YSwgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEKLSAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKGRhdGEsIHRleHRfdHlwZSk6CisgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShkYXRhLCBzdHIpOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZW5jb2RlKHNlbGYuX3Jlc3Bv
bnNlLmVuY29kaW5nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cgpAQCAtNjY1LDExICs2NTMsNyBAQCBjbGFzcyBSZXNwb25zZVdyaXRlcihvYmplY3QpOgogICAg
ICIiIk9iamVjdCBwcm92aWRpbmcgYW4gQVBJIHRvIHdyaXRlIG91dCBhIEhUVFAgcmVzcG9uc2Uu
CiAKICAgICA6cGFyYW0gaGFuZGxlcjogVGhlIFJlcXVlc3RIYW5kbGVyIGJlaW5nIHVzZWQuCi0g
ICAgOnBhcmFtIHJlc3BvbnNlOiBUaGUgUmVzcG9uc2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd3Jp
dGVyLgotCi0gICAgQWZ0ZXIgZWFjaCBwYXJ0IG9mIHRoZSByZXNwb25zZSBpcyB3cml0dGVuLCB0
aGUgb3V0cHV0IGlzCi0gICAgZmx1c2hlZCB1bmxlc3MgcmVzcG9uc2UuZXhwbGljaXRfZmx1c2gg
aXMgRmFsc2UsIGluIHdoaWNoIGNhc2UKLSAgICB0aGUgdXNlciBtdXN0IGNhbGwgLmZsdXNoKCkg
ZXhwbGljaXRseS4iIiIKKyAgICA6cGFyYW0gcmVzcG9uc2U6IFRoZSBSZXNwb25zZSBhc3NvY2lh
dGVkIHdpdGggdGhpcyB3cml0ZXIuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXIs
IHJlc3BvbnNlKToKICAgICAgICAgc2VsZi5fd2ZpbGUgPSBoYW5kbGVyLndmaWxlCiAgICAgICAg
IHNlbGYuX3Jlc3BvbnNlID0gcmVzcG9uc2UKQEAgLTcwNyw1MiArNjkxLDY1IEBAIGNsYXNzIFJl
c3BvbnNlV3JpdGVyKG9iamVjdCk6CiAKICAgICAgICAgOnBhcmFtIG5hbWU6IE5hbWUgb2YgdGhl
IGhlYWRlciBmaWVsZAogICAgICAgICA6cGFyYW0gdmFsdWU6IFZhbHVlIG9mIHRoZSBoZWFkZXIg
ZmllbGQKKyAgICAgICAgOnJldHVybjogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUg
d3JpdGUgc3VjY2VlZHMKICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zdGF0dXNf
d3JpdHRlbjoKICAgICAgICAgICAgIHNlbGYud3JpdGVfc3RhdHVzKHNlbGYuZGVmYXVsdF9zdGF0
dXMpCiAgICAgICAgIHNlbGYuX2hlYWRlcnNfc2Vlbi5hZGQoc2VsZi5lbmNvZGUobmFtZS5sb3dl
cigpKSkKLSAgICAgICAgc2VsZi53cml0ZShuYW1lKQotICAgICAgICBzZWxmLndyaXRlKGIiOiAi
KQorICAgICAgICBpZiBub3Qgc2VsZi53cml0ZShuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiBub3Qgc2VsZi53cml0ZShiIjogIik6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKLSAgICAgICAgICAg
IHNlbGYud3JpdGUodGV4dF90eXBlKHZhbHVlKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYud3JpdGUodmFsdWUpCi0gICAgICAgIHNlbGYud3JpdGUoYiJcclxuIikKLSAgICAgICAg
aWYgbm90IHNlbGYuX3Jlc3BvbnNlLmV4cGxpY2l0X2ZsdXNoOgotICAgICAgICAgICAgc2VsZi5m
bHVzaCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi53cml0ZShzdHIodmFsdWUpKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZWxpZiBub3Qgc2VsZi53cml0ZSh2YWx1
ZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYud3JpdGUo
YiJcclxuIikKIAogICAgIGRlZiB3cml0ZV9kZWZhdWx0X2hlYWRlcnMoc2VsZik6CiAgICAgICAg
IGZvciBuYW1lLCBmIGluIFsoIlNlcnZlciIsIHNlbGYuX2hhbmRsZXIudmVyc2lvbl9zdHJpbmcp
LAogICAgICAgICAgICAgICAgICAgICAgICAgKCJEYXRlIiwgc2VsZi5faGFuZGxlci5kYXRlX3Rp
bWVfc3RyaW5nKV06CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2Vlbl9oZWFkZXIobmFtZSk6
Ci0gICAgICAgICAgICAgICAgc2VsZi53cml0ZV9oZWFkZXIobmFtZSwgZigpKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLndyaXRlX2hlYWRlcihuYW1lLCBmKCkpOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBpZiAoaXNpbnN0YW5jZShzZWxmLl9yZXNw
b25zZS5jb250ZW50LCAoYmluYXJ5X3R5cGUsIHRleHRfdHlwZSkpIGFuZAorICAgICAgICBpZiAo
aXNpbnN0YW5jZShzZWxmLl9yZXNwb25zZS5jb250ZW50LCAoYnl0ZXMsIHN0cikpIGFuZAogICAg
ICAgICAgICAgbm90IHNlbGYuX3NlZW5faGVhZGVyKCJjb250ZW50LWxlbmd0aCIpKToKICAgICAg
ICAgICAgICNXb3VsZCBiZSBuaWNlIHRvIGF2b2lkIGRvdWJsZS1lbmNvZGluZyBoZXJlCi0gICAg
ICAgICAgICBzZWxmLndyaXRlX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCBsZW4oc2VsZi5lbmNv
ZGUoc2VsZi5fcmVzcG9uc2UuY29udGVudCkpKQorICAgICAgICAgICAgaWYgbm90IHNlbGYud3Jp
dGVfaGVhZGVyKCJDb250ZW50LUxlbmd0aCIsIGxlbihzZWxmLmVuY29kZShzZWxmLl9yZXNwb25z
ZS5jb250ZW50KSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHJl
dHVybiBUcnVlCiAKICAgICBkZWYgZW5kX2hlYWRlcnMoc2VsZik6CiAgICAgICAgICIiIkZpbmlz
aCB3cml0aW5nIGhlYWRlcnMgYW5kIHdyaXRlIHRoZSBzZXBhcmF0b3IuCiAKICAgICAgICAgVW5s
ZXNzIGFkZF9yZXF1aXJlZF9oZWFkZXJzIG9uIHRoZSByZXNwb25zZSBpcyBGYWxzZSwKICAgICAg
ICAgdGhpcyB3aWxsIGFsc28gYWRkIEhUVFAtbWFuZGF0ZWQgaGVhZGVycyB0aGF0IGhhdmUgbm90
IHlldCBiZWVuIHN1cHBsaWVkCi0gICAgICAgIHRvIHRoZSByZXNwb25zZSBoZWFkZXJzIiIiCisg
ICAgICAgIHRvIHRoZSByZXNwb25zZSBoZWFkZXJzLgorICAgICAgICA6cmV0dXJuOiBBIGJvb2xl
YW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB3cml0ZSBzdWNjZWVkcworICAgICAgICAiIiIKIAog
ICAgICAgICBpZiBzZWxmLl9yZXNwb25zZS5hZGRfcmVxdWlyZWRfaGVhZGVyczoKLSAgICAgICAg
ICAgIHNlbGYud3JpdGVfZGVmYXVsdF9oZWFkZXJzKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LndyaXRlX2RlZmF1bHRfaGVhZGVycygpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQog
Ci0gICAgICAgIHNlbGYud3JpdGUoIlxyXG4iKQorICAgICAgICBpZiBub3Qgc2VsZi53cml0ZSgi
XHJcbiIpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9z
ZWVuX2hlYWRlcigiY29udGVudC1sZW5ndGgiKToKICAgICAgICAgICAgIHNlbGYuX3Jlc3BvbnNl
LmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVlCi0gICAgICAgIGlmIG5vdCBzZWxmLl9yZXNwb25zZS5l
eHBsaWNpdF9mbHVzaDoKLSAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICBzZWxmLl9o
ZWFkZXJzX2NvbXBsZXRlID0gVHJ1ZQogCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYg
d3JpdGVfY29udGVudChzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgdGhlIGJvZHkgb2Yg
dGhlIHJlc3BvbnNlLgogCi0gICAgICAgIEhUVFAtbWFuZGF0ZWQgaGVhZGVycyB3aWxsIGJlIGF1
dG9tYXRpY2FsbHkgYWRkZWQgd2l0aCBzdGF0dXMgZGVmYXVsdCB0byAyMDAgaWYgdGhleSBoYXZl
IG5vdCBiZWVuIGV4cGxpY2l0bHkgc2V0LiIiIgorICAgICAgICBIVFRQLW1hbmRhdGVkIGhlYWRl
cnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHdpdGggc3RhdHVzIGRlZmF1bHQgdG8gMjAw
IGlmIHRoZXkgaGF2ZQorICAgICAgICBub3QgYmVlbiBleHBsaWNpdGx5IHNldC4KKyAgICAgICAg
OnJldHVybjogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgd3JpdGUgc3VjY2VlZHMK
KyAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zdGF0dXNfd3JpdHRlbjoKICAgICAg
ICAgICAgIHNlbGYud3JpdGVfc3RhdHVzKHNlbGYuZGVmYXVsdF9zdGF0dXMpCiAgICAgICAgIGlm
IG5vdCBzZWxmLl9oZWFkZXJzX2NvbXBsZXRlOgpAQCAtNzY0LDcgKzc2MSw3IEBAIGNsYXNzIFJl
c3BvbnNlV3JpdGVyKG9iamVjdCk6CiAgICAgICAgICIiIldyaXRlcyB0aGUgZGF0YSAnYXMgaXMn
IiIiCiAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ2RhdGEgY2Fubm90IGJlIE5vbmUnKQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsICh0
ZXh0X3R5cGUsIGJpbmFyeV90eXBlKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgKHN0
ciwgYnl0ZXMpKToKICAgICAgICAgICAgICMgRGVsaWJlcmF0ZWx5IGFsbG93cyBib3RoIHRleHQg
YW5kIGJpbmFyeSB0eXBlcy4gU2VlIGBzZWxmLmVuY29kZWAuCiAgICAgICAgICAgICByZXR1cm4g
c2VsZi53cml0ZShkYXRhKQogICAgICAgICBlbHNlOgpAQCAtNzcyLDcgKzc2OSw5IEBAIGNsYXNz
IFJlc3BvbnNlV3JpdGVyKG9iamVjdCk6CiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAg
ICAgICAgICIiIldyaXRlIGRpcmVjdGx5IHRvIHRoZSByZXNwb25zZSwgY29udmVydGluZyB1bmlj
b2RlIHRvIGJ5dGVzCi0gICAgICAgIGFjY29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4gRG9l
cyBub3QgZmx1c2guIiIiCisgICAgICAgIGFjY29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4K
KyAgICAgICAgOnJldHVybjogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgd3JpdGUg
c3VjY2VlZHMKKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY29udGVudF93cml0dGVuID0gVHJ1
ZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl93ZmlsZS53cml0ZShzZWxmLmVuY29k
ZShkYXRhKSkKQEAgLTc4Miw4ICs3ODEsNyBAQCBjbGFzcyBSZXNwb25zZVdyaXRlcihvYmplY3Qp
OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgd3JpdGVfY29udGVudF9maWxl
KHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJXcml0ZSBhIGZpbGUtbGlrZSBvYmplY3QgZGlyZWN0
bHkgdG8gdGhlIHJlc3BvbnNlIGluIGNodW5rcy4KLSAgICAgICAgRG9lcyBub3QgZmx1c2guIiIi
CisgICAgICAgICIiIldyaXRlIGEgZmlsZS1saWtlIG9iamVjdCBkaXJlY3RseSB0byB0aGUgcmVz
cG9uc2UgaW4gY2h1bmtzLiIiIgogICAgICAgICBzZWxmLmNvbnRlbnRfd3JpdHRlbiA9IFRydWUK
ICAgICAgICAgc3VjY2VzcyA9IFRydWUKICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTgwMSwxOSAr
Nzk5LDkgQEAgY2xhc3MgUmVzcG9uc2VXcml0ZXIob2JqZWN0KToKIAogICAgIGRlZiBlbmNvZGUo
c2VsZiwgZGF0YSk6CiAgICAgICAgICIiIkNvbnZlcnQgdW5pY29kZSB0byBieXRlcyBhY2NvcmRp
bmcgdG8gcmVzcG9uc2UuZW5jb2RpbmcuIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwg
YmluYXJ5X3R5cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKICAgICAg
ICAgICAgIHJldHVybiBkYXRhCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhLCB0ZXh0X3R5
cGUpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKICAgICAgICAgICAgIHJl
dHVybiBkYXRhLmVuY29kZShzZWxmLl9yZXNwb25zZS5lbmNvZGluZykKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGEgJXIgc2hvdWxkIGJlIHRleHQgb3Ig
YmluYXJ5LCBidXQgaXMgJXMiICUgKGRhdGEsIHR5cGUoZGF0YSkpKQotCi0gICAgZGVmIGZsdXNo
KHNlbGYpOgotICAgICAgICAiIiJGbHVzaCB0aGUgb3V0cHV0LiBSZXR1cm5zIEZhbHNlIGlmIHRo
ZSBmbHVzaCBmYWlsZWQgZHVlIHRvCi0gICAgICAgIHRoZSBzb2NrZXQgYmVpbmcgY2xvc2VkIGJ5
IHRoZSByZW1vdGUgZW5kLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl93Zmls
ZS5mbHVzaCgpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgc29ja2V0
LmVycm9yOgotICAgICAgICAgICAgIyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNvY2tldCBnb3Qg
Y2xvc2VkIGJ5IHRoZSByZW1vdGUgZW5kCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvcm91dGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yb3V0ZXIucHkKaW5kZXgg
NWI4NjBiNTk0MjU0Li41YTkxZGUzMDU3NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcm91dGVy
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvcm91dGVyLnB5CkBAIC0xLDggKzEsOCBAQAogaW1wb3J0IGl0
ZXJ0b29scwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCiAKIGZyb20gLmxvZ2dlciBpbXBvcnQgZ2V0
X2xvZ2dlcgotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKIAogYW55X21l
dGhvZCA9IG9iamVjdCgpCiAKQEAgLTk4LDYgKzk4LDE2IEBAIGNsYXNzIFJvdXRlcihvYmplY3Qp
OgogICAgICAgICBzZWxmLmRvY19yb290ID0gZG9jX3Jvb3QKICAgICAgICAgc2VsZi5yb3V0ZXMg
PSBbXQogICAgICAgICBzZWxmLmxvZ2dlciA9IGdldF9sb2dnZXIoKQorCisgICAgICAgICMgQWRk
IHRoZSBkb2Nfcm9vdCB0byB0aGUgUHl0aG9uIHBhdGgsIHNvIHRoYXQgYW55IFB5dGhvbiBoYW5k
bGVyIGNhbgorICAgICAgICAjIGNvcnJlY3RseSBsb2NhdGUgaGVscGVyIHNjcmlwdHMgKHNlZSBS
RkNfVE9fQkVfTElOS0VEKS4KKyAgICAgICAgIworICAgICAgICAjIFRPRE86IEluIGEgcGVyZmVj
dCB3b3JsZCwgUm91dGVyIHdvdWxkIG5vdCBuZWVkIHRvIGtub3cgYWJvdXQgdGhpcworICAgICAg
ICAjIGFuZCB0aGUgaGFuZGxlciBpdHNlbGYgd291bGQgdGFrZSBjYXJlIG9mIGl0LiBDdXJyZW50
bHksIGhvd2V2ZXIsIHdlCisgICAgICAgICMgdHJlYXQgaGFuZGxlcnMgbGlrZSBmdW5jdGlvbnMg
YW5kIHNvIHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gZG8gdGhhdC4KKyAgICAgICAgaWYgc2VsZi5k
b2Nfcm9vdCBub3QgaW4gc3lzLnBhdGg6CisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwg
c2VsZi5kb2Nfcm9vdCkKKwogICAgICAgICBmb3Igcm91dGUgaW4gcmV2ZXJzZWQocm91dGVzKToK
ICAgICAgICAgICAgIHNlbGYucmVnaXN0ZXIoKnJvdXRlKQogCkBAIC0xMzUsNyArMTQ1LDcgQEAg
Y2xhc3MgUm91dGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QgYW5k
IHRoZSByZXNwb25zZSBvYmplY3QuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFu
Y2UobWV0aG9kcywgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKSBvciBtZXRob2RzIGlzIGFueV9t
ZXRob2Q6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobWV0aG9kcywgKGJ5dGVzLCBzdHIpKSBvciBt
ZXRob2RzIGlzIGFueV9tZXRob2Q6CiAgICAgICAgICAgICBtZXRob2RzID0gW21ldGhvZHNdCiAg
ICAgICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoKICAgICAgICAgICAgIHNlbGYucm91dGVzLmFw
cGVuZCgobWV0aG9kLCBjb21waWxlX3BhdGhfbWF0Y2gocGF0aCksIGhhbmRsZXIpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NlcnZlci5weQppbmRleCBk
NmM2MTk2NWQ5NmQuLmNmYTg2Zjk5M2FhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKQEAgLTEsMjQgKzEsMjggQEAKLWZyb20gc2l4
Lm1vdmVzIGltcG9ydCBCYXNlSFRUUFNlcnZlcgogaW1wb3J0IGVycm5vCitpbXBvcnQgaHR0cC5z
ZXJ2ZXIKIGltcG9ydCBvcwogaW1wb3J0IHNvY2tldAotZnJvbSBzaXgubW92ZXMuc29ja2V0c2Vy
dmVyIGltcG9ydCBUaHJlYWRpbmdNaXhJbgorZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVh
ZGluZ01peEluCiBpbXBvcnQgc3NsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBv
cnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0
ZXh0X3R5cGUKIGltcG9ydCB1dWlkCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGlj
dAotCi1mcm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKK2Zyb20gcXVldWUgaW1wb3J0
IFF1ZXVlCiAKIGZyb20gaDIuY29uZmlnIGltcG9ydCBIMkNvbmZpZ3VyYXRpb24KIGZyb20gaDIu
Y29ubmVjdGlvbiBpbXBvcnQgSDJDb25uZWN0aW9uCiBmcm9tIGgyLmV2ZW50cyBpbXBvcnQgUmVx
dWVzdFJlY2VpdmVkLCBDb25uZWN0aW9uVGVybWluYXRlZCwgRGF0YVJlY2VpdmVkLCBTdHJlYW1S
ZXNldCwgU3RyZWFtRW5kZWQKK2Zyb20gaDIuZXhjZXB0aW9ucyBpbXBvcnQgU3RyZWFtQ2xvc2Vk
RXJyb3IsIFByb3RvY29sRXJyb3IKK2Zyb20gaDIuc2V0dGluZ3MgaW1wb3J0IFNldHRpbmdDb2Rl
cworZnJvbSBoMi51dGlsaXRpZXMgaW1wb3J0IGV4dHJhY3RfbWV0aG9kX2hlYWRlcgorCitmcm9t
IHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybHVuc3BsaXQKIAotZnJvbSBzaXgubW92
ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxpdCwgdXJsdW5zcGxpdAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Ug
aW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgogCiBmcm9tIC4gaW1wb3J0IHJvdXRlcyBhcyBkZWZh
dWx0X3JvdXRlcwogZnJvbSAuY29uZmlnIGltcG9ydCBDb25maWdCdWlsZGVyCkBAIC0yNiwxOCAr
MzAsMTggQEAgZnJvbSAubG9nZ2VyIGltcG9ydCBnZXRfbG9nZ2VyCiBmcm9tIC5yZXF1ZXN0IGlt
cG9ydCBTZXJ2ZXIsIFJlcXVlc3QsIEgyUmVxdWVzdAogZnJvbSAucmVzcG9uc2UgaW1wb3J0IFJl
c3BvbnNlLCBIMlJlc3BvbnNlCiBmcm9tIC5yb3V0ZXIgaW1wb3J0IFJvdXRlcgotZnJvbSAudXRp
bHMgaW1wb3J0IEhUVFBFeGNlcHRpb24sIGlzb21vcnBoaWNfZGVjb2RlCitmcm9tIC51dGlscyBp
bXBvcnQgSFRUUEV4Y2VwdGlvbiwgaXNvbW9ycGhpY19kZWNvZGUsIGlzb21vcnBoaWNfZW5jb2Rl
CiBmcm9tIC5jb25zdGFudHMgaW1wb3J0IGgyX2hlYWRlcnMKK2Zyb20gLndzX2gyX2hhbmRzaGFr
ZSBpbXBvcnQgV3NIMkhhbmRzaGFrZXIKIAogIyBXZSBuZWVkIHRvIHN0cmVzcyB0ZXN0IHRoYXQg
YnJvd3NlcnMgY2FuIHNlbmQvcmVjZWl2ZSBtYW55IGhlYWRlcnMgKHRoZXJlIGlzCiAjIG5vIHNw
ZWNpZmllZCBsaW1pdCksIGJ1dCB0aGUgUHl0aG9uIHN0ZGxpYiBoYXMgYW4gYXJiaXRyYXJ5IGxp
bWl0IG9mIDEwMAotIyBoZWFkZXJzLiBIaXR0aW5nIHRoZSBsaW1pdCB3b3VsZCBwcm9kdWNlIGFu
IGV4Y2VwdGlvbiB0aGF0IGlzIHNpbGVudGx5IGNhdWdodAotIyBpbiBQeXRob24gMiBidXQgbGVh
ZHMgdG8gSFRUUCA0MzEgaW4gUHl0aG9uIDMsIHNvIHdlIG1vbmtleSBwYXRjaCBpdCBoaWdoZXIu
CisjIGhlYWRlcnMuIEhpdHRpbmcgdGhlIGxpbWl0IGxlYWRzIHRvIEhUVFAgNDMxLCBzbyB3ZSBt
b25rZXkgcGF0Y2ggaXQgaGlnaGVyLgogIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2
NTg2CiAjIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L3B1bGwvMjQ0
NTEKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudAotYXNzZXJ0IGlzaW5zdGFuY2Uo
Z2V0YXR0cihodHRwX2NsaWVudCwgJ19NQVhIRUFERVJTJyksIGludCkKLXNldGF0dHIoaHR0cF9j
bGllbnQsICdfTUFYSEVBREVSUycsIDUxMikKK2ltcG9ydCBodHRwLmNsaWVudAorYXNzZXJ0IGlz
aW5zdGFuY2UoZ2V0YXR0cihodHRwLmNsaWVudCwgJ19NQVhIRUFERVJTJyksIGludCkKK3NldGF0
dHIoaHR0cC5jbGllbnQsICdfTUFYSEVBREVSUycsIDUxMikKIAogIiIiCiBIVFRQIHNlcnZlciBk
ZXNpZ25lZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KQEAgLTk5LDcgKzEwMyw3IEBAIGNsYXNzIFJl
cXVlc3RSZXdyaXRlcihvYmplY3QpOgogICAgICAgICA6cGFyYW0gb3V0cHV0X3BhdGg6IFBhdGgg
dG8gcmVwbGFjZSB0aGUgaW5wdXQgcGF0aCB3aXRoIGluCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhlIHJlcXVlc3QuCiAgICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKG1l
dGhvZHMsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bWV0aG9kcywgKGJ5dGVzLCBzdHIpKToKICAgICAgICAgICAgIG1ldGhvZHMgPSBbbWV0aG9kc10K
ICAgICAgICAgc2VsZi5ydWxlc1tpbnB1dF9wYXRoXSA9IChtZXRob2RzLCBvdXRwdXRfcGF0aCkK
IApAQCAtMTIyLDcgKzEyNiw3IEBAIGNsYXNzIFJlcXVlc3RSZXdyaXRlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlci5wYXRoID0gbmV3X3VybAogCiAKLWNsYXNzIFdl
YlRlc3RTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgor
Y2xhc3MgV2ViVGVzdFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgaHR0cC5zZXJ2ZXIuSFRUUFNlcnZl
cik6CiAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKICAgICBhY2NlcHRhYmxlX2Vycm9y
cyA9IChlcnJuby5FUElQRSwgZXJybm8uRUNPTk5BQk9SVEVEKQogICAgIHJlcXVlc3RfcXVldWVf
c2l6ZSA9IDIwMDAKQEAgLTEzMSw3ICsxMzUsNyBAQCBjbGFzcyBXZWJUZXN0U2VydmVyKFRocmVh
ZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKICAgICBkYWVtb25fdGhyZWFk
cyA9IFRydWUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXJfYWRkcmVzcywgcmVxdWVz
dF9oYW5kbGVyX2NscywKLSAgICAgICAgICAgICAgICAgcm91dGVyLCByZXdyaXRlciwgYmluZF9h
ZGRyZXNzLAorICAgICAgICAgICAgICAgICByb3V0ZXIsIHJld3JpdGVyLCBiaW5kX2FkZHJlc3Ms
IHdzX2RvY19yb290PU5vbmUsCiAgICAgICAgICAgICAgICAgIGNvbmZpZz1Ob25lLCB1c2Vfc3Ns
PUZhbHNlLCBrZXlfZmlsZT1Ob25lLCBjZXJ0aWZpY2F0ZT1Ob25lLAogICAgICAgICAgICAgICAg
ICBlbmNyeXB0X2FmdGVyX2Nvbm5lY3Q9RmFsc2UsIGxhdGVuY3k9Tm9uZSwgaHR0cDI9RmFsc2Us
ICoqa3dhcmdzKToKICAgICAgICAgIiIiU2VydmVyIGZvciBIVFRQKHMpIFJlcXVlc3RzCkBAIC0x
NTYsNiArMTYwLDggQEAgY2xhc3MgV2ViVGVzdFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgQmFzZUhU
VFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAKICAgICAgICAgOnBhcmFtIGNlcnRpZmljYXRlOiBQYXRo
IHRvIGNlcnRpZmljYXRlIHRvIHVzZSBpZiBTU0wgaXMgZW5hYmxlZC4KIAorICAgICAgICA6cGFy
YW0gd3NfZG9jX3Jvb3Q6IERvY3VtZW50IHJvb3QgZm9yIHdlYnNvY2tldHMKKwogICAgICAgICA6
cGFyYW0gZW5jcnlwdF9hZnRlcl9jb25uZWN0OiBGb3IgZWFjaCBjb25uZWN0aW9uLCBkb24ndCBz
dGFydCBlbmNyeXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
dGlsIGEgQ09OTkVDVCBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGVuYWJsZXMgdGhlIHNlcnZlciB0byBhY3QgYXMg
YQpAQCAtMTgxLDggKzE4Nyw3IEBAIGNsYXNzIFdlYlRlc3RTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4s
IEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
aG9zdG5hbWVfcG9ydCA9ICgiIixzZXJ2ZXJfYWRkcmVzc1sxXSkKIAotICAgICAgICAjc3VwZXIg
ZG9lc24ndCB3b3JrIGhlcmUgYmVjYXVzZSBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyIGlzIG9s
ZC1zdHlsZQotICAgICAgICBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyLl9faW5pdF9fKHNlbGYs
IGhvc3RuYW1lX3BvcnQsIHJlcXVlc3RfaGFuZGxlcl9jbHMsICoqa3dhcmdzKQorICAgICAgICBo
dHRwLnNlcnZlci5IVFRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGhvc3RuYW1lX3BvcnQsIHJlcXVl
c3RfaGFuZGxlcl9jbHMsICoqa3dhcmdzKQogCiAgICAgICAgIGlmIGNvbmZpZyBpcyBub3QgTm9u
ZToKICAgICAgICAgICAgIFNlcnZlci5jb25maWcgPSBjb25maWcKQEAgLTE5NSw2ICsyMDAsNyBA
QCBjbGFzcyBXZWJUZXN0U2VydmVyKFRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5IVFRQ
U2VydmVyKToKIAogCiAKKyAgICAgICAgc2VsZi53c19kb2Nfcm9vdCA9IHdzX2RvY19yb290CiAg
ICAgICAgIHNlbGYua2V5X2ZpbGUgPSBrZXlfZmlsZQogICAgICAgICBzZWxmLmNlcnRpZmljYXRl
ID0gY2VydGlmaWNhdGUKICAgICAgICAgc2VsZi5lbmNyeXB0X2FmdGVyX2Nvbm5lY3QgPSB1c2Vf
c3NsIGFuZCBlbmNyeXB0X2FmdGVyX2Nvbm5lY3QKQEAgLTIyNiwxMiArMjMyLDEyIEBAIGNsYXNz
IFdlYlRlc3RTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIp
OgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkK
IAogCi1jbGFzcyBCYXNlV2ViVGVzdFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQU2VydmVyLkJhc2VI
VFRQUmVxdWVzdEhhbmRsZXIpOgorY2xhc3MgQmFzZVdlYlRlc3RSZXF1ZXN0SGFuZGxlcihodHRw
LnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKICAgICAiIiJSZXF1ZXN0SGFuZGxlciBm
b3IgV2ViVGVzdEh0dHBkIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKICAgICAgICAgc2VsZi5sb2dnZXIgPSBnZXRfbG9nZ2VyKCkKLSAgICAgICAgQmFzZUhU
VFBTZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpCisgICAgICAgIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIGZpbmlzaF9oYW5kbGluZ19oMShz
ZWxmLCByZXF1ZXN0X2xpbmVfaXNfdmFsaWQpOgogCkBAIC0zNTMsNiArMzU5LDE0IEBAIGNsYXNz
IEh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyKEJhc2VXZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgog
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnKCVzKSBJbml0aWF0aW5nIGgyIENvbm5lY3Rpb24n
ICUgc2VsZi51aWQpCiAKICAgICAgICAgd2l0aCBzZWxmLmNvbm4gYXMgY29ubmVjdGlvbjoKKyAg
ICAgICAgICAgICMgQm9vdHN0cmFwcGluZyBXZWJTb2NrZXRzIHdpdGggSFRUUC8yIHNwZWNpZmlj
YXRpb24gcmVxdWlyZXMKKyAgICAgICAgICAgICMgRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0wgdG8g
YmUgc2V0IGluIG9yZGVyIHRvIGVuYWJsZSBXZWJTb2NrZXQKKyAgICAgICAgICAgICMgb3ZlciBI
VFRQLzIKKyAgICAgICAgICAgIG5ld19zZXR0aW5ncyA9IGRpY3QoY29ubmVjdGlvbi5sb2NhbF9z
ZXR0aW5ncykKKyAgICAgICAgICAgIG5ld19zZXR0aW5nc1tTZXR0aW5nQ29kZXMuRU5BQkxFX0NP
Tk5FQ1RfUFJPVE9DT0xdID0gMQorICAgICAgICAgICAgY29ubmVjdGlvbi5sb2NhbF9zZXR0aW5n
cy51cGRhdGUobmV3X3NldHRpbmdzKQorICAgICAgICAgICAgY29ubmVjdGlvbi5sb2NhbF9zZXR0
aW5ncy5hY2tub3dsZWRnZSgpCisKICAgICAgICAgICAgIGNvbm5lY3Rpb24uaW5pdGlhdGVfY29u
bmVjdGlvbigpCiAgICAgICAgICAgICBkYXRhID0gY29ubmVjdGlvbi5kYXRhX3RvX3NlbmQoKQog
ICAgICAgICAgICAgd2luZG93X3NpemUgPSBjb25uZWN0aW9uLnJlbW90ZV9zZXR0aW5ncy5pbml0
aWFsX3dpbmRvd19zaXplCkBAIC00MDYsNiArNDIwLDI0IEBAIGNsYXNzIEh0dHAyV2ViVGVzdFJl
cXVlc3RIYW5kbGVyKEJhc2VXZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgZm9y
IHN0cmVhbV9pZCwgKHRocmVhZCwgcXVldWUpIGluIHN0cmVhbV9xdWV1ZXMuaXRlbXMoKToKICAg
ICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCiAKKyAgICBkZWYgX2lzX2V4dGVuZGVkX2Nvbm5l
Y3RfZnJhbWUoc2VsZiwgZnJhbWUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmcmFtZSwg
UmVxdWVzdFJlY2VpdmVkKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG1l
dGhvZCA9IGV4dHJhY3RfbWV0aG9kX2hlYWRlcihmcmFtZS5oZWFkZXJzKQorICAgICAgICBpZiBt
ZXRob2QgIT0gYiJDT05ORUNUIjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg
IHByb3RvY29sID0gIiIKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZnJhbWUuaGVhZGVyczoK
KyAgICAgICAgICAgIGlmIGtleSBpbiAoYic6cHJvdG9jb2wnLCB1Jzpwcm90b2NvbCcpOgorICAg
ICAgICAgICAgICAgIHByb3RvY29sID0gaXNvbW9ycGhpY19lbmNvZGUodmFsdWUpCisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgcHJvdG9jb2wgIT0gYiJ3ZWJzb2NrZXQiOgorICAg
ICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigiSW52YWxpZCBwcm90b2NvbCAlcyB3aXRoIENP
Tk5FQ1QgTUVUSE9EIiAlIChwcm90b2NvbCwpKQorCisgICAgICAgIHJldHVybiBUcnVlCisKICAg
ICBkZWYgc3RhcnRfc3RyZWFtX3RocmVhZChzZWxmLCBmcmFtZSwgcXVldWUpOgogICAgICAgICAi
IiIKICAgICAgICAgVGhpcyBzdGFydHMgYSBuZXcgdGhyZWFkIHRvIGhhbmRsZSBmcmFtZXMgZm9y
IGEgc3BlY2lmaWMgc3RyZWFtLgpAQCAtNDEzLDEzICs0NDUsMTAyIEBAIGNsYXNzIEh0dHAyV2Vi
VGVzdFJlcXVlc3RIYW5kbGVyKEJhc2VXZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICA6
cGFyYW0gcXVldWU6IEEgcXVldWUgb2JqZWN0IHRoYXQgdGhlIHRocmVhZCB3aWxsIHVzZSB0byBj
aGVjayBmb3IgbmV3IGZyYW1lcwogICAgICAgICA6cmV0dXJuOiBUaGUgdGhyZWFkIG9iamVjdCB0
aGF0IGhhcyBhbHJlYWR5IGJlZW4gc3RhcnRlZAogICAgICAgICAiIiIKKyAgICAgICAgaWYgc2Vs
Zi5faXNfZXh0ZW5kZWRfY29ubmVjdF9mcmFtZShmcmFtZSk6CisgICAgICAgICAgICB0YXJnZXQg
PSBIdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlci5fc3RyZWFtX3dzX3RocmVhZAorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgdGFyZ2V0ID0gSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIuX3N0
cmVhbV90aHJlYWQKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoCi0gICAgICAgICAgICB0
YXJnZXQ9SHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIuX3N0cmVhbV90aHJlYWQsCisgICAgICAg
ICAgICB0YXJnZXQ9dGFyZ2V0LAogICAgICAgICAgICAgYXJncz0oc2VsZiwgZnJhbWUuc3RyZWFt
X2lkLCBxdWV1ZSkKICAgICAgICAgKQogICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgcmV0dXJu
IHQKIAorICAgIGRlZiBfc3RyZWFtX3dzX3RocmVhZChzZWxmLCBzdHJlYW1faWQsIHF1ZXVlKToK
KyAgICAgICAgZnJhbWUgPSBxdWV1ZS5nZXQoVHJ1ZSwgTm9uZSkKKworICAgICAgICByZmlsZSwg
d2ZpbGUgPSBvcy5waXBlKCkKKyAgICAgICAgcmZpbGUsIHdmaWxlID0gb3MuZmRvcGVuKHJmaWxl
LCAncmInKSwgb3MuZmRvcGVuKHdmaWxlLCAnd2InLCAwKSAgIyBuZWVkcyB0byBiZSB1bmJ1ZmZl
ciBmb3Igd2Vic29ja2V0cworICAgICAgICBzdHJlYW1faGFuZGxlciA9IEgySGFuZGxlckNvcHko
c2VsZiwgZnJhbWUsIHJmaWxlKQorCisgICAgICAgIGgycmVxdWVzdCA9IEgyUmVxdWVzdChzdHJl
YW1faGFuZGxlcikKKyAgICAgICAgaDJyZXNwb25zZSA9IEgyUmVzcG9uc2Uoc3RyZWFtX2hhbmRs
ZXIsIGgycmVxdWVzdCkKKworICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hl
cihzZWxmLnNlcnZlci53c19kb2Nfcm9vdCwgTm9uZSwgRmFsc2UpCisgICAgICAgIGlmIG5vdCBk
aXNwYXRjaGVyLmdldF9oYW5kbGVyX3N1aXRlKHN0cmVhbV9oYW5kbGVyLnBhdGgpOgorICAgICAg
ICAgICAgaDJyZXNwb25zZS5zZXRfZXJyb3IoNDA0KQorICAgICAgICAgICAgaDJyZXNwb25zZS53
cml0ZSgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICByZXF1ZXN0X3dyYXBwZXIgPSBf
V2ViU29ja2V0UmVxdWVzdChzdHJlYW1faGFuZGxlciwgaDJyZXNwb25zZSkKKworICAgICAgICBo
YW5kc2hha2VyID0gV3NIMkhhbmRzaGFrZXIocmVxdWVzdF93cmFwcGVyLCBkaXNwYXRjaGVyKQor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAg
ICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYubG9n
Z2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIGVycm9yOiAlcycgJSBlKQorICAgICAgICAg
ICAgaDJyZXNwb25zZS5zZXRfZXJyb3IoZS5zdGF0dXMpCisgICAgICAgICAgICBoMnJlc3BvbnNl
LndyaXRlKCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgaDIgSGFuZHNoYWtlciBw
cmVwYXJlcyB0aGUgaGVhZGVycyBidXQgZG9lcyBub3Qgc2VuZCB0aGVtIGRvd24gdGhlCisgICAg
ICAgICMgd2lyZS4gRmx1c2ggdGhlIGhlYWRlcnMgaGVyZS4KKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgaDJyZXNwb25zZS53cml0ZV9zdGF0dXNfaGVhZGVycygpCisgICAgICAgIGV4Y2VwdCBT
dHJlYW1DbG9zZWRFcnJvcjoKKyAgICAgICAgICAgICMgd29yayBhcm91bmQgaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzI3Nzg2CisgICAgICAgICAgICAj
IFRoZSBzdHJlYW0gd2FzIGFscmVhZHkgY2xvc2VkLgorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgcmVxdWVzdF93cmFwcGVyLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgorCisgICAgICAg
ICMgd2UgbmVlZCB0d28gdGhyZWFkczoKKyAgICAgICAgIyAtIG9uZSB0byBoYW5kbGUgdGhlIGZy
YW1lIHF1ZXVlCisgICAgICAgICMgLSBvbmUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0IChkaXNwYXRj
aGVyLnRyYW5zZmVyX2RhdGEgaXMgYmxvY2tpbmcpCisgICAgICAgICMgdGhlIGFsdGVybmF0aXZl
IGlzIHRvIGhhdmUgb25seSBvbmUgKGJsb2NraW5nKSB0aHJlYWQuIFRoYXQgdGhyZWFkCisgICAg
ICAgICMgd2lsbCBjYWxsIHRyYW5zZmVyX2RhdGEuIFRoYXQgd291bGQgcmVxdWlyZSBhIHNwZWNp
YWwgY2FzZSBpbgorICAgICAgICAjIGhhbmRsZV9vbmVfcmVxdWVzdCwgdG8gYnlwYXNzIHRoZSBx
dWV1ZSBhbmQgd3JpdGUgZGF0YSB0byB3ZmlsZQorICAgICAgICAjIGRpcmVjdGx5LgorICAgICAg
ICB0ID0gdGhyZWFkaW5nLlRocmVhZCgKKyAgICAgICAgICAgIHRhcmdldD1IdHRwMldlYlRlc3RS
ZXF1ZXN0SGFuZGxlci5fc3RyZWFtX3dzX3N1Yl90aHJlYWQsCisgICAgICAgICAgICBhcmdzPShz
ZWxmLCByZXF1ZXN0X3dyYXBwZXIsIHN0cmVhbV9oYW5kbGVyLCBxdWV1ZSkKKyAgICAgICAgKQor
ICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICB3aGlsZSBub3Qgc2VsZi5jbG9zZV9jb25uZWN0
aW9uOgorICAgICAgICAgICAgZnJhbWUgPSBxdWV1ZS5nZXQoVHJ1ZSwgTm9uZSkKKworICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZShmcmFtZSwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgICAg
ICB3ZmlsZS53cml0ZShmcmFtZS5kYXRhKQorICAgICAgICAgICAgICAgIGlmIGZyYW1lLnN0cmVh
bV9lbmRlZDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigi
ZnJhbWUuc3RyZWFtX2VuZGVkIikKKyAgICAgICAgICAgICAgICAgICAgd2ZpbGUuY2xvc2UoKQor
ICAgICAgICAgICAgZWxpZiBmcmFtZSBpcyBOb25lIG9yIGlzaW5zdGFuY2UoZnJhbWUsIChTdHJl
YW1SZXNldCwgU3RyZWFtRW5kZWQsIENvbm5lY3Rpb25UZXJtaW5hdGVkKSk6CisgICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJyglcyAtICVzKSBTdHJlYW0gUmVzZXQsIFRocmVhZCBD
bG9zaW5nJyAlIChzZWxmLnVpZCwgc3RyZWFtX2lkKSkKKyAgICAgICAgICAgICAgICBicmVhawor
CisgICAgICAgIHQuam9pbigpCisKKyAgICBkZWYgX3N0cmVhbV93c19zdWJfdGhyZWFkKHNlbGYs
IHJlcXVlc3QsIHN0cmVhbV9oYW5kbGVyLCBxdWV1ZSk6CisgICAgICAgIGRpc3BhdGNoZXIgPSBy
ZXF1ZXN0Ll9kaXNwYXRjaGVyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIu
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBleGNlcHQgU3RyZWFtQ2xvc2VkRXJyb3I6
CisgICAgICAgICAgICAjIHdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0L2lzc3Vlcy8yNzc4NgorICAgICAgICAgICAgIyBUaGUgc3RyZWFtIHdhcyBh
bHJlYWR5IGNsb3NlZC4KKyAgICAgICAgICAgIHF1ZXVlLnB1dChOb25lKQorICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgc3RyZWFtX2lkID0gc3RyZWFtX2hhbmRsZXIuaDJfc3RyZWFtX2lk
CisgICAgICAgIHdpdGggc3RyZWFtX2hhbmRsZXIuY29ubiBhcyBjb25uZWN0aW9uOgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZW5kX3N0cmVhbShzdHJlYW1f
aWQpCisgICAgICAgICAgICAgICAgZGF0YSA9IGNvbm5lY3Rpb24uZGF0YV90b19zZW5kKCkKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faGFuZGxlci5yZXF1ZXN0LnNlbmRhbGwoZGF0YSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBTdHJlYW1DbG9zZWRFcnJvcjogICMgbWF5YmUgdGhlIHN0cmVhbSBoYXMg
YWxyZWFkeSBiZWVuIGNsb3NlZAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcXVldWUu
cHV0KE5vbmUpCisKICAgICBkZWYgX3N0cmVhbV90aHJlYWQoc2VsZiwgc3RyZWFtX2lkLCBxdWV1
ZSk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIHRocmVhZCBwcm9jZXNzZXMgZnJhbWVzIGZv
ciBhIHNwZWNpZmljIHN0cmVhbS4gSXQgd2FpdHMgZm9yIGZyYW1lcyB0byBiZSBwbGFjZWQKQEAg
LTU5OSw2ICs3MjAsNyBAQCBjbGFzcyBXZWJUZXN0SHR0cGQob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLXByb3h5LgogICAgIDpwYXJhbSByb3V0ZXJfY2xz
OiBSb3V0ZXIgY2xhc3MgdG8gdXNlIHdoZW4gbWF0Y2hpbmcgVVJMcyB0byBoYW5kbGVycwogICAg
IDpwYXJhbSBkb2Nfcm9vdDogRG9jdW1lbnQgcm9vdCBmb3Igc2VydmluZyBmaWxlcworICAgIDpw
YXJhbSB3c19kb2Nfcm9vdDogRG9jdW1lbnQgcm9vdCBmb3Igd2Vic29ja2V0cwogICAgIDpwYXJh
bSByb3V0ZXM6IExpc3Qgb2Ygcm91dGVzIHdpdGggd2hpY2ggdG8gaW5pdGlhbGl6ZSB0aGUgcm91
dGVyCiAgICAgOnBhcmFtIHJld3JpdGVyX2NsczogQ2xhc3MgdG8gdXNlIGZvciByZXF1ZXN0IHJl
d3JpdGVyCiAgICAgOnBhcmFtIHJld3JpdGVzOiBMaXN0IG9mIHJld3JpdGVzIHdpdGggd2hpY2gg
dG8gaW5pdGlhbGl6ZSB0aGUgcmV3cml0ZXJfY2xzCkBAIC02NDEsNyArNzYzLDcgQEAgY2xhc3Mg
V2ViVGVzdEh0dHBkKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9IjEyNy4w
LjAuMSIsIHBvcnQ9ODAwMCwKICAgICAgICAgICAgICAgICAgc2VydmVyX2Nscz1Ob25lLCBoYW5k
bGVyX2Nscz1IdHRwMVdlYlRlc3RSZXF1ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgdXNl
X3NzbD1GYWxzZSwga2V5X2ZpbGU9Tm9uZSwgY2VydGlmaWNhdGU9Tm9uZSwgZW5jcnlwdF9hZnRl
cl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICByb3V0ZXJfY2xzPVJvdXRlciwgZG9j
X3Jvb3Q9b3MuY3VyZGlyLCByb3V0ZXM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcm91dGVyX2Ns
cz1Sb3V0ZXIsIGRvY19yb290PW9zLmN1cmRpciwgd3NfZG9jX3Jvb3Q9Tm9uZSwgcm91dGVzPU5v
bmUsCiAgICAgICAgICAgICAgICAgIHJld3JpdGVyX2Nscz1SZXF1ZXN0UmV3cml0ZXIsIGJpbmRf
YWRkcmVzcz1UcnVlLCByZXdyaXRlcz1Ob25lLAogICAgICAgICAgICAgICAgICBsYXRlbmN5PU5v
bmUsIGNvbmZpZz1Ob25lLCBodHRwMj1GYWxzZSk6CiAKQEAgLTY3Myw2ICs3OTUsNyBAQCBjbGFz
cyBXZWJUZXN0SHR0cGQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYucmV3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWc9Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9h
ZGRyZXNzPWJpbmRfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdzX2RvY19yb290PXdzX2RvY19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlX3NzbD11c2Vfc3NsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga2V5X2ZpbGU9a2V5X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwKQEAgLTcyNywzICs4NTAsNTQgQEAgY2xhc3MgV2Vi
VGVzdEh0dHBkKG9iamVjdCk6CiAgICAgICAgIHJldHVybiB1cmx1bnNwbGl0KCgiaHR0cCIgaWYg
bm90IHNlbGYudXNlX3NzbCBlbHNlICJodHRwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiJXM6JXMiICUgKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkpCisKKworY2xhc3MgX1dlYlNvY2tldENvbm5l
Y3Rpb24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyLCBy
ZXNwb25zZSk6CisgICAgICAgICIiIk1pbWljIG1vZF9weXRob24gbXBfY29ubi4KKworICAgICAg
ICA6cGFyYW0gcmVxdWVzdF9oYW5kbGVyOiBBIEgySGFuZGxlckNvcHkgaW5zdGFuY2UuCisKKyAg
ICAgICAgOnBhcmFtIHJlc3BvbnNlOiBBIEgyUmVzcG9uc2UgaW5zdGFuY2UuCisgICAgICAgICIi
IgorCisgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlciA9IHJlcXVlc3RfaGFuZGxlcgorICAg
ICAgICBzZWxmLl9yZXNwb25zZSA9IHJlc3BvbnNlCisKKyAgICAgICAgc2VsZi5yZW1vdGVfYWRk
ciA9IHNlbGYuX3JlcXVlc3RfaGFuZGxlci5jbGllbnRfYWRkcmVzcworCisgICAgZGVmIHdyaXRl
KHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9yZXNwb25zZS53cml0ZXIud3JpdGVfZGF0YShk
YXRhLCBGYWxzZSkKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6CisgICAgICAgIHJldHVy
biBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZpbGUucmVhZChsZW5ndGgpCisKKworY2xhc3MgX1dl
YlNvY2tldFJlcXVlc3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9o
YW5kbGVyLCByZXNwb25zZSk6CisgICAgICAgICIiIk1pbWljIG1vZF9weXRob24gcmVxdWVzdC4K
KworICAgICAgICA6cGFyYW0gcmVxdWVzdF9oYW5kbGVyOiBBIEgySGFuZGxlckNvcHkgaW5zdGFu
Y2UuCisKKyAgICAgICAgOnBhcmFtIHJlc3BvbnNlOiBBIEgyUmVzcG9uc2UgaW5zdGFuY2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9XZWJTb2NrZXRDb25uZWN0
aW9uKHJlcXVlc3RfaGFuZGxlciwgcmVzcG9uc2UpCisgICAgICAgIHNlbGYuX3Jlc3BvbnNlID0g
cmVzcG9uc2UKKworICAgICAgICBzZWxmLnVyaSA9IHJlcXVlc3RfaGFuZGxlci5wYXRoCisgICAg
ICAgIHNlbGYudW5wYXJzZWRfdXJpID0gcmVxdWVzdF9oYW5kbGVyLnBhdGgKKyAgICAgICAgc2Vs
Zi5tZXRob2QgPSByZXF1ZXN0X2hhbmRsZXIuY29tbWFuZAorICAgICAgICAjIHJlYWQgaGVhZGVy
cyBmcm9tIHJlcXVlc3RfaGFuZGxlcgorICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSByZXF1ZXN0
X2hhbmRsZXIuaGVhZGVycworICAgICAgICAjIHdyaXRlIGhlYWRlcnMgZGlyZWN0bHkgaW50byBI
MlJlc3BvbnNlCisgICAgICAgIHNlbGYuaGVhZGVyc19vdXQgPSByZXNwb25zZS5oZWFkZXJzCisK
KyAgICAjIHByb3hpZXMgc3RhdHVzIHRvIEgyUmVzcG9uc2UKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVzcG9uc2Uuc3RhdHVzCisK
KyAgICBAc3RhdHVzLnNldHRlcgorICAgIGRlZiBzdGF0dXMoc2VsZiwgc3RhdHVzKToKKyAgICAg
ICAgc2VsZi5fcmVzcG9uc2Uuc3RhdHVzID0gc3RhdHVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZl
L3NzbHV0aWxzL29wZW5zc2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKaW5k
ZXggNjRmNmQ1ZmIyZGIyLi44N2E4Y2M5Y2M3ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Ns
dXRpbHMvb3BlbnNzbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKQEAg
LTYsOCArNiw2IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gZGF0
ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcywgUFkyCi0KICMgQW1vdW50IG9mIHRpbWUgYmV5b25kIHRoZSBwcmVzZW50IHRvIGNvbnNp
ZGVyIGNlcnRpZmljYXRlcyAiZXhwaXJlZC4iIFRoaXMKICMgYWxsb3dzIGNlcnRpZmljYXRlcyB0
byBiZSBwcm9hY3RpdmVseSByZS1nZW5lcmF0ZWQgaW4gdGhlICJidWZmZXIiIHBlcmlvZAogIyBw
cmlvciB0byB0aGVpciBleGFjdCBleHBpcmF0aW9uIHRpbWUuCkBAIC0xOCwxMSArMTYsNyBAQCBk
ZWYgX2Vuc3VyZV9zdHIocywgZW5jb2RpbmcpOgogICAgICIiIm1ha2VzIHN1cmUgcyBpcyBhbiBp
bnN0YW5jZSBvZiBzdHIsIGNvbnZlcnRpbmcgd2l0aCBlbmNvZGluZyBpZiBuZWVkZWQiIiIKICAg
ICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CiAgICAgICAgIHJldHVybiBzCi0KLSAgICBpZiBQWTI6
Ci0gICAgICAgIHJldHVybiBzLmVuY29kZShlbmNvZGluZykKLSAgICBlbHNlOgotICAgICAgICBy
ZXR1cm4gcy5kZWNvZGUoZW5jb2RpbmcpCisgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nKQog
CiAKIGNsYXNzIE9wZW5TU0wob2JqZWN0KToKQEAgLTc5LDcgKzczLDcgQEAgY2xhc3MgT3BlblNT
TChvYmplY3QpOgogICAgICAgICAjIENvcHkgdGhlIGVudmlyb25tZW50LCBjb252ZXJ0aW5nIHRv
IHBsYWluIHN0cmluZ3MuIFdpbjMyIFN0YXJ0UHJvY2VzcwogICAgICAgICAjIGlzIHBpY2t5IGFi
b3V0IGFsbCB0aGUga2V5cy92YWx1ZXMgYmVpbmcgc3RyIChvbiBib3RoIFB5Mi8zKS4KICAgICAg
ICAgZW52ID0ge30KLSAgICAgICAgZm9yIGssIHYgaW4gaXRlcml0ZW1zKG9zLmVudmlyb24pOgor
ICAgICAgICBmb3IgaywgdiBpbiBvcy5lbnZpcm9uLml0ZW1zKCk6CiAgICAgICAgICAgICBlbnZb
X2Vuc3VyZV9zdHIoaywgInV0ZjgiKV0gPSBfZW5zdXJlX3N0cih2LCAidXRmOCIpCiAKICAgICAg
ICAgaWYgc2VsZi5iYXNlX2NvbmZfcGF0aCBpcyBub3QgTm9uZToKQEAgLTMyNCw3ICszMTgsNyBA
QCBjbGFzcyBPcGVuU1NMRW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAgIGVuZF9kYXRl
X3N0ciA9IG9wZW5zc2woIng1MDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiLW5vb3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lbmRkYXRl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1pbiIsIGNlcnRfcGF0aCku
c3BsaXQoIj0iLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICItaW4iLCBjZXJ0X3BhdGgpLmRlY29kZSgidXRmOCIpLnNwbGl0KCI9IiwgMSlbMV0uc3Ry
aXAoKQogICAgICAgICAgICAgIyBOb3Qgc3VyZSBpZiB0aGlzIHdvcmtzIGluIG90aGVyIGxvY2Fs
ZXMKICAgICAgICAgICAgIGVuZF9kYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUoZW5kX2RhdGVfc3Ry
LCAiJWIgJWQgJUg6JU06JVMgJVkgJVoiKQogICAgICAgICAgICAgdGltZV9idWZmZXIgPSB0aW1l
ZGVsdGEoKipDRVJUX0VYUElSWV9CVUZGRVIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3NWJiYjYwMjM2Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3NzbHV0aWxzL2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5z
c2wucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zdGFzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkKaW5kZXggNmIzNTE4NDc0
OTFiLi42NmMyNzEzMTkxMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zdGFzaC5weQpAQCAtMSwxMCArMSwxMCBAQAogaW1wb3J0IGJhc2U2NAogaW1w
b3J0IGpzb24KIGltcG9ydCBvcwotaW1wb3J0IHV1aWQKIGltcG9ydCB0aHJlYWRpbmcKK2ltcG9y
dCB1dWlkCisKIGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJlclBy
b3h5LCBCYXNlTWFuYWdlciwgRGljdFByb3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlLCBi
aW5hcnlfdHlwZQogCiBmcm9tIC51dGlscyBpbXBvcnQgaXNvbW9ycGhpY19lbmNvZGUKIApAQCAt
MzIsMTMgKzMyLDE2IEBAIENsaWVudERpY3RNYW5hZ2VyLnJlZ2lzdGVyKCJMb2NrIikKIAogCiBj
bGFzcyBTdGFzaFNlcnZlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNz
PU5vbmUsIGF1dGhrZXk9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3M9Tm9u
ZSwgYXV0aGtleT1Ob25lLCBtcF9jb250ZXh0PU5vbmUpOgogICAgICAgICBzZWxmLmFkZHJlc3Mg
PSBhZGRyZXNzCiAgICAgICAgIHNlbGYuYXV0aGtleSA9IGF1dGhrZXkKICAgICAgICAgc2VsZi5t
YW5hZ2VyID0gTm9uZQorICAgICAgICBzZWxmLm1wX2NvbnRleHQgPSBtcF9jb250ZXh0CiAKICAg
ICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLm1hbmFnZXIsIHNlbGYuYWRkcmVz
cywgc2VsZi5hdXRoa2V5ID0gc3RhcnRfc2VydmVyKHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5
KQorICAgICAgICBzZWxmLm1hbmFnZXIsIHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5ID0gc3Rh
cnRfc2VydmVyKHNlbGYuYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmF1dGhrZXksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5tcF9jb250ZXh0KQogICAgICAgICBzdG9yZV9lbnZfY29uZmlnKHNlbGYuYWRkcmVzcywgc2Vs
Zi5hdXRoa2V5KQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CkBA
IC02MSwxMyArNjQsMTkgQEAgZGVmIHN0b3JlX2Vudl9jb25maWcoYWRkcmVzcywgYXV0aGtleSk6
CiAgICAgb3MuZW52aXJvblsiV1BUX1NUQVNIX0NPTkZJRyJdID0ganNvbi5kdW1wcygoYWRkcmVz
cywgYXV0aGtleS5kZWNvZGUoImFzY2lpIikpKQogCiAKLWRlZiBzdGFydF9zZXJ2ZXIoYWRkcmVz
cz1Ob25lLCBhdXRoa2V5PU5vbmUpOgotICAgIGlmIGlzaW5zdGFuY2UoYXV0aGtleSwgdGV4dF90
eXBlKToKK2RlZiBzdGFydF9zZXJ2ZXIoYWRkcmVzcz1Ob25lLCBhdXRoa2V5PU5vbmUsIG1wX2Nv
bnRleHQ9Tm9uZSk6CisgICAgaWYgaXNpbnN0YW5jZShhdXRoa2V5LCBzdHIpOgogICAgICAgICBh
dXRoa2V5ID0gYXV0aGtleS5lbmNvZGUoImFzY2lpIikKLSAgICBtYW5hZ2VyID0gU2VydmVyRGlj
dE1hbmFnZXIoYWRkcmVzcywgYXV0aGtleSkKKyAgICBrd2FyZ3MgPSB7fQorICAgIGlmIG1wX2Nv
bnRleHQgaXMgbm90IE5vbmU6CisgICAgICAgIGt3YXJnc1siY3R4Il0gPSBtcF9jb250ZXh0Cisg
ICAgbWFuYWdlciA9IFNlcnZlckRpY3RNYW5hZ2VyKGFkZHJlc3MsIGF1dGhrZXksICoqa3dhcmdz
KQogICAgIG1hbmFnZXIuc3RhcnQoKQogCi0gICAgcmV0dXJuIChtYW5hZ2VyLCBtYW5hZ2VyLl9h
ZGRyZXNzLCBtYW5hZ2VyLl9hdXRoa2V5KQorICAgIGFkZHJlc3MgPSBtYW5hZ2VyLl9hZGRyZXNz
CisgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgIGFkZHJlc3MgPSBh
ZGRyZXNzLmRlY29kZSgiYXNjaWkiKQorICAgIHJldHVybiAobWFuYWdlciwgYWRkcmVzcywgbWFu
YWdlci5fYXV0aGtleSkKIAogCiBjbGFzcyBMb2NrV3JhcHBlcihvYmplY3QpOgpAQCAtMTQ5LDcg
KzE1OCw3IEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgICMgVGhpcyBrZXkgZm9ybWF0
IGlzIHJlcXVpcmVkIHRvIHN1cHBvcnQgdXNpbmcgdGhlIHBhdGguIFNpbmNlIHRoZSBkYXRhCiAg
ICAgICAgICMgcGFzc2VkIGludG8gdGhlIHN0YXNoIGNhbiBiZSBhIERpY3RQcm94eSB3aGljaCB3
b3VsZG4ndCBkZXRlY3QKICAgICAgICAgIyBjaGFuZ2VzIHdoZW4gd3JpdGluZyB0byBhIHN1YmRp
Y3QuCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBiaW5hcnlfdHlwZSk6CisgICAgICAgIGlm
IGlzaW5zdGFuY2Uoa2V5LCBieXRlcyk6CiAgICAgICAgICAgICAjIFVVSURzIGFyZSB3aXRoaW4g
dGhlIEFTQ0lJIGNoYXJzZXQuCiAgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdhc2NpaScp
CiAgICAgICAgIHJldHVybiAoaXNvbW9ycGhpY19lbmNvZGUocGF0aCksIHV1aWQuVVVJRChrZXkp
LmJ5dGVzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRp
bHMucHkKaW5kZXggMDkxZTljMjZiN2Y2Li5mMWY3ZGQyODZiYzcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0
c2VydmUvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQpAQCAtMSwyNCArMSwyNCBA
QAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5
cGUsIHRleHRfdHlwZQorCitmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKIAogCiBkZWYg
aXNvbW9ycGhpY19kZWNvZGUocyk6CiAgICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50
byBhIHRleHQgc3RyaW5nIHVzaW5nIGlzby04ODU5LTEuCiAKLSAgICBSZXR1cm5zIGB1bmljb2Rl
YCBpbiBQeXRob24gMiBhbmQgYHN0cmAgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCi0g
ICAgbm8tb3AgaWYgdGhlIGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1
OS0xIGlzIGNob3NlbiBiZWNhdXNlCi0gICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2Ug
Y29kZSBwb2ludHMgcmFuZ2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlCi0gICAgdmFsdWVzIGFy
ZSB0aGUgc2FtZSBhcyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBz
dHJpbmcgY2FuCi0gICAgYmUgZGVjb2RlZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTkt
MSB3aXRob3V0IGFueSBlcnJvcnMgb3IgZGF0YQotICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNl
cyBpc28tODg1OS0xIChvciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIFJldHVy
bnMgYHN0cmAuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIHRoZSBhcmd1bWVudCBhbHJlYWR5
IGhhcyBhIHRleHQKKyAgICB0eXBlLiBpc28tODg1OS0xIGlzIGNob3NlbiBiZWNhdXNlIGl0IGlz
IGFuIDgtYml0IGVuY29kaW5nIHdob3NlIGNvZGUKKyAgICBwb2ludHMgcmFuZ2UgZnJvbSAweDAg
dG8gMHhGRiBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUgYXMgdGhlIGJpbmFyeQorICAgIHJl
cHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJpbmcgY2FuIGJlIGRlY29kZWQgaW50byBh
bmQgZW5jb2RlZCBmcm9tCisgICAgaXNvLTg4NTktMSB3aXRob3V0IGFueSBlcnJvcnMgb3IgZGF0
YSBsb3NzLiBQeXRob24gMyBhbHNvIHVzZXMgaXNvLTg4NTktMQorICAgIChvciBsYXRpbi0xKSBl
eHRlbnNpdmVseSBpbiBodHRwOgogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhv
bi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0dHAv
Y2xpZW50LnB5I0wyMTMKICAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6
CisgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAgICByZXR1cm4gcwogCi0gICAgaWYg
aXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6
CiAgICAgICAgIHJldHVybiBzLmRlY29kZSgiaXNvLTg4NTktMSIpCiAKICAgICByYWlzZSBUeXBl
RXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgKGV4cGVjdGluZyBzdHJpbmctbGlrZSk6ICVyIiAlIHMp
CkBAIC0yNywxNCArMjcsMTMgQEAgZGVmIGlzb21vcnBoaWNfZGVjb2RlKHMpOgogZGVmIGlzb21v
cnBoaWNfZW5jb2RlKHMpOgogICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8g
YmluYXJ5IGRhdGEgdXNpbmcgaXNvLTg4NTktMS4KIAotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0
aG9uIDIgYW5kIGBieXRlc2AgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0g
ICAgaWYgdGhlIGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5cGUuIFRoaXMgaXMgdGhl
IGNvdW50ZXJwYXJ0IG9mCi0gICAgaXNvbW9ycGhpY19kZWNvZGUuCisgICAgUmV0dXJucyBgYnl0
ZXNgLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMg
YQorICAgIGJpbmFyeSB0eXBlLiBUaGlzIGlzIHRoZSBjb3VudGVycGFydCBvZiBpc29tb3JwaGlj
X2RlY29kZS4KICAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAg
ICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKICAgICAgICAgcmV0dXJuIHMKIAotICAgIGlmIGlz
aW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CiAgICAg
ICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCiAKICAgICByYWlzZSBUeXBlRXJyb3Io
IlVuZXhwZWN0ZWQgdmFsdWUgKGV4cGVjdGluZyBzdHJpbmctbGlrZSk6ICVyIiAlIHMpCkBAIC0x
MjAsNiArMTE5LDcgQEAgZGVmIGlzX2JhZF9wb3J0KHBvcnQpOgogICAgICAgICA1MzIsICAgIyBu
ZXRuZXdzCiAgICAgICAgIDU0MCwgICAjIHV1Y3AKICAgICAgICAgNTQ4LCAgICMgYWZwCisgICAg
ICAgIDU1NCwgICAjIHJ0c3AKICAgICAgICAgNTU2LCAgICMgcmVtb3RlZnMKICAgICAgICAgNTYz
LCAgICMgbm50cCtzc2wKICAgICAgICAgNTg3LCAgICMgc210cCAob3V0Z29pbmcpCkBAIC0xMjcs
NiArMTI3LDggQEAgZGVmIGlzX2JhZF9wb3J0KHBvcnQpOgogICAgICAgICA2MzYsICAgIyBsZGFw
K3NzbAogICAgICAgICA5OTMsICAgIyBsZGFwK3NzbAogICAgICAgICA5OTUsICAgIyBwb3AzK3Nz
bAorICAgICAgICAxNzIwLCAgIyBoMzIzaG9zdGNhbGwKKyAgICAgICAgMTcyMywgICMgcHB0cAog
ICAgICAgICAyMDQ5LCAgIyBuZnMKICAgICAgICAgMzY1OSwgICMgYXBwbGUtc2FzbAogICAgICAg
ICA0MDQ1LCAgIyBsb2NrZApAQCAtMTU0LDkgKzE1NiwxOCBAQCBkZWYgZ2V0X3BvcnQoaG9zdD0n
Jyk6CiAgICAgcmV0dXJuIHBvcnQKIAogZGVmIGh0dHAyX2NvbXBhdGlibGUoKToKLSAgICAjIEN1
cnJlbnRseSwgdGhlIEhUVFAvMi4wIHNlcnZlciBpcyBvbmx5IHdvcmtpbmcgaW4gcHl0aG9uIDIu
Ny4xMCsgb3IgMy42KyBhbmQgT3BlblNTTCAxLjAuMisKKyAgICAjIFRoZSBIVFRQLzIuMCBzZXJ2
ZXIgcmVxdWlyZXMgT3BlblNTTCAxLjAuMisgKGFuZCBQeXRob24gMy42KywgYnV0IFdQVAorICAg
ICMgcmVxdWlyZXMgdGhhdCBhbnl3YXkgc28gd2UgZG9uJ3QgY2hlY2sgdGhhdCBoZXJlLikKKyAg
ICAjCisgICAgIyBGb3Igc3lzdGVtcyB1c2luZyBvdGhlciBTU0wgbGlicmFyaWVzIChlLmcuIExp
YnJlU1NMKSwgd2UgYXNzdW1lIHRoZXkKKyAgICAjIGhhdmUgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0
LgogICAgIGltcG9ydCBzc2wKKyAgICBpZiBub3Qgc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3
aXRoKCJPcGVuU1NMIik6CisgICAgICAgIGxvZ2dlciA9IGdldF9sb2dnZXIoKQorICAgICAgICBs
b2dnZXIud2FybmluZygKKyAgICAgICAgICAgICdTa2lwcGluZyBIVFRQLzIuMCBjb21wYXRpYmls
aXR5IGNoZWNrIGFzIHN5c3RlbSBpcyBub3QgdXNpbmcgJworICAgICAgICAgICAgJ09wZW5TU0wg
KGZvdW5kOiAlcyknICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKKyAgICAgICAgcmV0dXJuIFRydWUK
KwogICAgIHNzbF92ID0gc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPCi0gICAgcHlfdiA9IHN5cy52
ZXJzaW9uX2luZm8KLSAgICByZXR1cm4gKCgocHlfdlswXSA9PSAyIGFuZCBweV92WzFdID09IDcg
YW5kIHB5X3ZbMl0gPj0gMTApIG9yIChweV92WzBdID09IDMgYW5kIHB5X3ZbMV0gPj0gNikpIGFu
ZAotICAgICAgICAoc3NsX3ZbMF0gPT0gMSBhbmQgKHNzbF92WzFdID09IDEgb3IgKHNzbF92WzFd
ID09IDAgYW5kIHNzbF92WzJdID49IDIpKSkpCisgICAgcmV0dXJuIHNzbF92WzBdID09IDEgYW5k
IChzc2xfdlsxXSA9PSAxIG9yIChzc2xfdlsxXSA9PSAwIGFuZCBzc2xfdlsyXSA+PSAyKSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjM0MmY5MmMxZjguLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMzEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2Vy
dmUvY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25zdGFudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRs
ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9sb2dnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93
cHRzZXJ2ZS9yYW5nZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jl
c3BvbnNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yb3V0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JvdXRlcy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
dXRpbHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3dwdHNlcnZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZl
L3dzX2gyX2hhbmRzaGFrZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvd3NfaDJfaGFuZHNoYWtlLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgxM2VjYjVhMGIzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS93c19oMl9oYW5kc2hha2UucHkKQEAgLTAsMCArMSwyNDUg
QEAKKyIiIlRoaXMgZmlsZSBwcm92aWRlcyB0aGUgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29y
IGZvciB0aGUgQm9vdHN0cmFwcGluZworV2ViU29ja2V0cyB3aXRoIEhUVFAvMiBwcm90b2NvbCAo
UkZDIDg0NDEpLgorCitTcGVjaWZpY2F0aW9uOgoraHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzg0NDEKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAor
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1PcHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCisjIFRP
RE86IFdlIGFyZSB1c2luZyAicHJpdmF0ZSIgbWV0aG9kcyBvZiBweXdlYnNvY2tldC4gV2UgbWln
aHQgd2FudCB0bworIyByZWZhY3RvciBweXdlYnNvY2tldCB0byBleHBvc2UgdGhvc2UgbWV0aG9k
cyBwdWJsaWNseS4gQWxzbywgX2dldF9vcmlnaW4KKyMgX2NoZWNrX3ZlcnNpb24gX3NldF9wcm90
b2NvbCBfcGFyc2VfZXh0ZW5zaW9ucyBhbmQgYSBsYXJnZSBwYXJ0IG9mIGRvX2hhbmRzaGFrZQor
IyBhcmUgaWRlbnRpY2FsIHdpdGggaHliaSBoYW5kc2hha2UuIFdlIG5lZWQgc29tZSByZWZhY3Rv
cmluZyB0byBnZXQgcmVtb3ZlIHRoYXQKKyMgY29kZSBkdXBsaWNhdGlvbi4KK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGdldF9leHRlbnNpb25fcHJvY2Vzc29yCitmcm9t
IG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGdldF9tYW5kYXRvcnlfaGVh
ZGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFr
ZUV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBw
YXJzZV90b2tlbl9saXN0Citmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKK2Zyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgorCisjIERlZmluaW5n
IGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCitfVkVSU0lPTl9MQVRFU1QgPSBj
b21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorX1ZFUlNJT05fTEFURVNUX1NUUklORyA9IHN0cihf
VkVSU0lPTl9MQVRFU1QpCitfU1VQUE9SVEVEX1ZFUlNJT05TID0gWworICAgIF9WRVJTSU9OX0xB
VEVTVCwKK10KKworCitkZWYgY2hlY2tfY29ubmVjdF9tZXRob2QocmVxdWVzdCk6CisgICAgaWYg
cmVxdWVzdC5tZXRob2QgIT0gdSdDT05ORUNUJzoKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKCdNZXRob2QgaXMgbm90IENPTk5FQ1Q6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisK
K2NsYXNzIFdzSDJIYW5kc2hha2VyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
cXVlc3QsIGRpc3BhdGNoZXIpOgorICAgICAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNz
b3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4KKworICAgICAgICA6cGFy
YW0gcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAgICAgIDpwYXJhbSBkaXNwYXRj
aGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KKworICAgICAgICBXc0gySGFu
ZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgZHVyaW5nIGhh
bmRzaGFrZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRf
Y2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAg
ICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKKworICAgIGRlZiBfZ2V0X2V4dGVu
c2lvbl9wcm9jZXNzb3JzX3JlcXVlc3RlZChzZWxmKToKKyAgICAgICAgcHJvY2Vzc29ycyA9IFtd
CisgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3JlcXVlc3QgaW4gc2VsZi5fcmVxdWVz
dC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgPSBn
ZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCkKKyAgICAgICAgICAgICAg
ICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVlc3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAg
ICAgICAgICAgaWYgcHJvY2Vzc29yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCisgICAgICAgIHJldHVybiBwcm9jZXNzb3JzCisK
KyAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Ns
b3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVhc29uID0g
Tm9uZQorCisgICAgICAgICMgUGFyc2luZy4KKworICAgICAgICBjaGVja19jb25uZWN0X21ldGhv
ZChzZWxmLl9yZXF1ZXN0KQorCisgICAgICAgIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoc2Vs
Zi5fcmVxdWVzdCwgJzpwcm90b2NvbCcsICd3ZWJzb2NrZXQnKQorCisgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVzb3VyY2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQorCisgICAgICAgIGdldF9tYW5k
YXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsICdhdXRob3JpdHknKQorCisgICAgICAgIHNlbGYu
X3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNlbGYuX2NoZWNrX3ZlcnNpb24oKQorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHNlbGYuX2dldF9vcmlnaW4oKQorICAgICAgICAgICAgc2VsZi5fc2V0
X3Byb3RvY29sKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX2V4dGVuc2lvbnMoKQorCisgICAg
ICAgICAgICAjIFNldHVwIGV4dGVuc2lvbiBwcm9jZXNzb3JzLgorICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IHNlbGYuX2dldF9leHRlbnNpb25fcHJv
Y2Vzc29yc19yZXF1ZXN0ZWQoKQorCisgICAgICAgICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVy
cy4gVGhlIGV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1heSBhZGQgaGVhZGVyCisgICAgICAgICAg
ICAjIGRhdGEgYXMgbmFtZS92YWx1ZSBwYWlycyB0byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0
IGFwcGVuZHMKKyAgICAgICAgICAgICMgdGhlbSB0byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4K
KyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVycyA9IFtdCisKKyAgICAgICAg
ICAgICMgRXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29y
cy4KKyAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYu
X3JlcXVlc3QpCisgICAgICAgICAgICBwcm9jZXNzb3JzID0gWworICAgICAgICAgICAgICAgIHBy
b2Nlc3NvcgorICAgICAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gc2VsZi5fcmVxdWVzdC53
c19leHRlbnNpb25fcHJvY2Vzc29ycworICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBpcyBu
b3QgTm9uZQorICAgICAgICAgICAgXQorCisgICAgICAgICAgICAjIEFzayBlYWNoIHByb2Nlc3Nv
ciBpZiB0aGVyZSBhcmUgZXh0ZW5zaW9ucyBvbiB0aGUgcmVxdWVzdCB3aGljaAorICAgICAgICAg
ICAgIyBjYW5ub3QgY28tZXhpc3QuIFdoZW4gcHJvY2Vzc29yIGRlY2lkZWQgb3RoZXIgcHJvY2Vz
c29ycyBjYW5ub3QKKyAgICAgICAgICAgICMgY28tZXhpc3Qgd2l0aCBpdCwgdGhlIHByb2Nlc3Nv
ciBtYXJrcyB0aGVtIChvciBpdHNlbGYpIGFzCisgICAgICAgICAgICAjICJpbmFjdGl2ZSIuIFRo
ZSBmaXJzdCBleHRlbnNpb24gcHJvY2Vzc29yIGhhcyB0aGUgcmlnaHQgdG8KKyAgICAgICAgICAg
ICMgbWFrZSB0aGUgZmluYWwgY2FsbC4KKyAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcmV2
ZXJzZWQocHJvY2Vzc29ycyk6CisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yLmlzX2FjdGl2
ZSgpOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuY2hlY2tfY29uc2lzdGVuY3lfd2l0
aF9vdGhlcl9wcm9jZXNzb3JzKAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykK
KyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAgICAgICAgcHJvY2Vzc29yIGZv
ciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29ycyBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCkKKyAgICAg
ICAgICAgIF0KKworICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisKKyAgICAg
ICAgICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygpCisKKyAgICAgICAgICAgIGZv
ciBpbmRleCwgcHJvY2Vzc29yIGluIGVudW1lcmF0ZShwcm9jZXNzb3JzKToKKyAgICAgICAgICAg
ICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29y
LmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9y
ZXNwb25zZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIFJlamVjdGVkLgorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5z
aW9ucy5hcHBlbmQoZXh0ZW5zaW9uX3Jlc3BvbnNlKQorCisgICAgICAgICAgICAgICAgcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICAg
ICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbXByZXNzaW9uIGV4dGVuc2lv
bnMuCisgICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoaW5kZXggKyAxLCBsZW4ocHJvY2Vz
c29ycykpOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFs
c2UpCisKKyAgICAgICAgICAgIGlmIGxlbihhY2NlcHRlZF9leHRlbnNpb25zKSA+IDA6CisgICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5z
aW9ucworICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAg
ICAgICAgJ0V4dGVuc2lvbnMgYWNjZXB0ZWQ6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgbGlz
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcChjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucykp
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbnMgPSBOb25lCisKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfc3RyZWFtID0g
c2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1fb3B0aW9ucykKKworICAgICAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RvX2V4dHJhX2hhbmRzaGFrZSBtdXN0IGNob29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAnd3NfcmVxdWVzdGVkX3Byb3RvY29scyBhbmQgc2V0
IGl0IHRvIHdzX3Byb3RvY29sJykKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2Nv
bChzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdTdWJwcm90b2NvbCBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAnd3NfcHJvdG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhl
IGNsaWVudCBkaWRuXCd0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBz
dWJwcm90b2NvbCcpCisKKyAgICAgICAgICAgIHNlbGYuX3ByZXBhcmVfaGFuZHNoYWtlX3Jlc3Bv
bnNlKCkKKyAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgaWYgbm90IGUuc3RhdHVzOgorICAgICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJh
ZCByZXF1ZXN0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24u
SFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QKKyAgICAgICAgICAgIHJhaXNlIGUKKworICAgIGRlZiBf
Z2V0X29yaWdpbihzZWxmKToKKyAgICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJz
X2luLmdldCgnb3JpZ2luJykKKyAgICAgICAgaWYgb3JpZ2luIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCByZXF1ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2lu
IGhlYWRlcicpCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gb3JpZ2luCisKKyAg
ICBkZWYgX2NoZWNrX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHNlY193ZWJzb2NrZXRfdmVyc2lv
bl9oZWFkZXIgPSAnc2VjLXdlYnNvY2tldC12ZXJzaW9uJworICAgICAgICB2ZXJzaW9uID0gZ2V0
X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgc2VjX3dlYnNvY2tldF92ZXJzaW9uX2hl
YWRlcikKKyAgICAgICAgaWYgdmVyc2lvbiA9PSBfVkVSU0lPTl9MQVRFU1RfU1RSSU5HOgorICAg
ICAgICAgICAgcmV0dXJuIF9WRVJTSU9OX0xBVEVTVAorCisgICAgICAgIGlmIHZlcnNpb24uZmlu
ZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAg
ICAgICAgICAgICAgJ011bHRpcGxlIHZlcnNpb25zICglcikgYXJlIG5vdCBhbGxvd2VkIGZvciBo
ZWFkZXIgJXMnICUKKyAgICAgICAgICAgICAgICAodmVyc2lvbiwgc2VjX3dlYnNvY2tldF92ZXJz
aW9uX2hlYWRlciksCisgICAgICAgICAgICAgICAgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19C
QURfUkVRVUVTVCkKKyAgICAgICAgcmFpc2UgVmVyc2lvbkV4Y2VwdGlvbignVW5zdXBwb3J0ZWQg
dmVyc2lvbiAlciBmb3IgaGVhZGVyICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHZlcnNpb24sIHNlY193ZWJzb2NrZXRfdmVyc2lvbl9oZWFkZXIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz0nLCAnLmpvaW4oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChzdHIsIF9TVVBQT1JURURfVkVSU0lPTlMp
KSkKKworICAgIGRlZiBfc2V0X3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX3Byb3RvY29sID0gTm9uZQorCisgICAgICAgIHByb3RvY29sX2hlYWRlciA9IHNlbGYuX3Jl
cXVlc3QuaGVhZGVyc19pbi5nZXQoJ3NlYy13ZWJzb2NrZXQtcHJvdG9jb2wnKQorCisgICAgICAg
IGlmIHByb3RvY29sX2hlYWRlciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19yZXF1ZXN0ZWRfcHJvdG9jb2xzID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzID0gcGFyc2VfdG9rZW5fbGlz
dCgKKyAgICAgICAgICAgIHByb3RvY29sX2hlYWRlcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdTdWJwcm90b2NvbHMgcmVxdWVzdGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMpCisKKyAgICBkZWYgX3Bh
cnNlX2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gc2VsZi5f
cmVxdWVzdC5oZWFkZXJzX2luLmdldCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAg
ICAgaWYgbm90IGV4dGVuc2lvbnNfaGVhZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lv
bnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25z
X2hlYWRlcikKKyAgICAgICAgZXhjZXB0IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBzZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMgaGVhZGVyOiAl
cicgJSBlKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRl
bnNpb25zIHJlcXVlc3RlZDogJXInLAorICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAg
ICBtYXAoY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX2Ny
ZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICByZXR1cm4gU3RyZWFt
KHNlbGYuX3JlcXVlc3QsIHN0cmVhbV9vcHRpb25zKQorCisgICAgZGVmIF9wcmVwYXJlX2hhbmRz
aGFrZV9yZXNwb25zZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5zdGF0dXMgPSAyMDAK
KworICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfb3V0Wyd1cGdyYWRlJ10gPSBjb21tb24u
V0VCU09DS0VUX1VQR1JBREVfVFlQRQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfb3V0
Wydjb25uZWN0aW9uJ10gPSBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUKKworICAgICAg
ICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC5oZWFkZXJzX291dFsnc2VjLXdlYnNvY2tldC1wcm90b2NvbCddID0gc2Vs
Zi5fcmVxdWVzdC53c19wcm90b2NvbAorCisgICAgICAgIGlmIChzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICAgICAgbGVuKHNlbGYuX3JlcXVl
c3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRl
cnNfb3V0WydzZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMnXSA9IGNvbW1vbi5mb3JtYXRfZXh0ZW5z
aW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpCisKKyAgICAgICAgIyBIZWFkZXJzIG5v
dCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxm
Ll9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRl
cnNfb3V0W25hbWVdID0gdmFsdWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZXhlY3V0aXZlLnB5CmluZGV4IDVhY2Q3ODEyYTc3ZC4uNmRmNTUzNWVmMzQyIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZl
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUu
cHkKQEAgLTQ5OSw2ICs0OTksOCBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUp
OgogICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBw
YXNzCiAKKyAgICAgICAgcHJpbnQoYXJncykKKwogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQg
YWx3YXlzIGJlIHN0cmluZ2lmeWluZyB0aGUgYXJncywgYnV0IGNhbGxlcnMgd2hvIHBhc3Mgc2hl
bGw9VHJ1ZQogICAgICAgICAjIGV4cGVjdCB0aGF0IHRoZSBleGFjdCBieXRlcyBwYXNzZWQgd2ls
bCBnZXQgcGFzc2VkIHRvIHRoZSBzaGVsbCAoZXZlbiBpZiB0aGV5J3JlIHdyb25nbHkgZW5jb2Rl
ZCkuCiAgICAgICAgICMgc2hlbGw9VHJ1ZSBpcyB3cm9uZyBmb3IgbWFueSBvdGhlciByZWFzb25z
LCBhbmQgd2Ugc2hvdWxkIHJlbW92ZSB0aGlzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2ZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2ZXIucHkK
aW5kZXggMmMwMWM4ZDcxYzY5Li5mYTk1NmQyMDgzMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9z
ZXJ2ZXIucHkKQEAgLTExOCwxNyArMTE4LDEyIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2Vy
dmVyLkxpZ2h0dHBkKToKICAgICAgICAgb3V0cHV0X2xvZyA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLl9vdXRwdXRfZGlyLCBsb2dfZmlsZV9uYW1lICsgIi1vdXQudHh0IikKICAgICAgICAg
c2VsZi5fd3NvdXQgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5n
KG91dHB1dF9sb2cpCiAKLSAgICAgICAgIyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2NTQ2OiBTaG91bGQgYmUgdXNpbmcgdGhlIHNhbWUgdmVyc2lvbiBv
ZiBQeXRob24gcnVuLXdlYmtpdC10ZXN0cyBpcwotICAgICAgICBweXRob25faW50ZXJwID0gc3lz
LmV4ZWN1dGFibGUKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICAg
ICAgICAgIHB5dGhvbl9pbnRlcnAgPSAncHl0aG9uMicKLQogICAgICAgICB3cHRfdG9vbHNfYmFz
ZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9sYXlvdXRfdGVzdHMsICJpbXBvcnRlZCIs
ICJ3M2MiLCAid2ViLXBsYXRmb3JtLXRlc3RzIiwgInRvb2xzIikKLSAgICAgICAgcHl3ZWJzb2Nr
ZXRfYmFzZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbih3cHRfdG9vbHNfYmFzZSwgInB5d2Vic29j
a2V0IikKKyAgICAgICAgcHl3ZWJzb2NrZXRfYmFzZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbih3
cHRfdG9vbHNfYmFzZSwgInRoaXJkX3BhcnR5IiwgInB5d2Vic29ja2V0MyIpCiAgICAgICAgIHB5
d2Vic29ja2V0X2RlcHMgPSBbc2VsZi5fZmlsZXN5c3RlbS5qb2luKHdwdF90b29sc19iYXNlLCAi
dGhpcmRfcGFydHkiLCAic2l4IildCiAgICAgICAgIHB5d2Vic29ja2V0X3NjcmlwdCA9IHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihweXdlYnNvY2tldF9iYXNlLCAnbW9kX3B5d2Vic29ja2V0JywgJ3N0
YW5kYWxvbmUucHknKQogICAgICAgICBzdGFydF9jbWQgPSBbCi0gICAgICAgICAgICBweXRob25f
aW50ZXJwLCAnLXUnLCBweXdlYnNvY2tldF9zY3JpcHQsCisgICAgICAgICAgICBzeXMuZXhlY3V0
YWJsZSwgJy11JywgcHl3ZWJzb2NrZXRfc2NyaXB0LAogICAgICAgICAgICAgJy0tc2VydmVyLWhv
c3QnLCAnbG9jYWxob3N0JywKICAgICAgICAgICAgICctLXBvcnQnLCBzdHIoc2VsZi5fcG9ydCks
CiAgICAgICAgICAgICAjIEZJWE1FOiBEb24ndCB3ZSBoYXZlIGEgc2VsZi5fcG9ydF9vYmoubGF5
b3V0X3Rlc3RfcGF0aD8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422169</attachid>
            <date>2021-03-03 18:00:11 -0800</date>
            <delta_ts>2021-03-03 18:00:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-222703.diff</filename>
            <type>text/plain</type>
            <size>10024011</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzLy5jb3ZlcmFnZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uM2RhMTRhZDNiNzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy8uY292ZXJhZ2VyYwpAQCAtMCwwICsx
LDI5IEBACitbcnVuXQorYnJhbmNoID0gVHJ1ZQorcGFyYWxsZWwgPSBUcnVlCitvbWl0ID0KKyAg
aHRtbDVsaWIvKgorICBweS8qCisgIHB5dGVzdC8qCisgIHB5d2Vic29ja2V0LyoKKyAgc2l4LyoK
KyAgd2ViZHJpdmVyLyoKKyAgKi9zaXRlLXBhY2thZ2VzLyoKKyAgKi9saWJfcHlweS8qCisgIHdw
dC8qCisgIHdwdHJ1bm5lci8qCisgICovdGVzdHMvKgorICBxdWljLyoKKworW3BhdGhzXQoraHRt
bDVsaWIgPQorICBodG1sNWxpYi9odG1sNWxpYgorICAudG94LyoqL3NpdGUtcGFja2FnZXMvaHRt
bDVsaWIKKworcHl0ZXN0ID0KKyAgcHl0ZXN0L19weXRlc3QKKyAgLnRveC8qKi9zaXRlLXBhY2th
Z2VzL19weXRlc3QKKworcHkgPQorICBweS9weQorICAudG94LyoqL3NpdGUtcGFja2FnZXMvcHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvLmdpdGF0dHJpYnV0ZXMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzLy5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDZhMmM4N2E1ZTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy8uZ2l0YXR0cmlidXRlcwpA
QCAtMCwwICsxIEBACitsaW50L3Rlc3RzL2R1bW15LyoqCS10ZXh0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLy5naXRpZ25vcmUg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLy5naXRp
Z25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNTlmOTQ4ZmRi
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxNyBAQAorKiMKKy5jb3ZlcmFn
ZQorLmNvdmVyYWdlLioKK2h0bWxjb3YvCitjb3ZlcmFnZS54bWwKKy5jYWNoZS8KKy5oeXBvdGhl
c2lzLworKi5weVtjb10KKyouc3dbcG9dCisqfgorXCMqCitydW5uZXIvTUFOSUZFU1QuanNvbgor
CisjIFdBVkUKKyF3YXZlL3d3dy9saWIKKyF3YXZlL2V4cG9ydC9saWIKKyF3YXZlL2V4cG9ydC9j
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvTUVUQS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL01FVEEueW1sCmluZGV4IDNlYjg5M2Y0ZTY1Yy4uYmI4ZWQwMzlkYzM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNSArMSw0IEBACiBzdWdnZXN0ZWRfcmV2aWV3ZXJz
OgogICAtIGpncmFoYW0KLSAgLSBIZXhjbGVzCiAgIC0gc3RlcGhlbm1jZ3J1ZXIKICAgLSBMdWtl
WmllbGluc2tpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkKaW5kZXggM2EzZTQ4
N2E4M2RlLi42YjI0MGU1MmIyMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LmtleQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5r
ZXkKQEAgLTEsMzAgKzEsMzAgQEAKIC0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0t
LS0KLU1JSUZIREJPQmdrcWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSVJ1N3Nj
SStWNVpRQ0FnZ0EKLU1Bd0dDQ3FHU0liM0RRSUpCUUF3RkFZSUtvWklodmNOQXdjRUNORHBqbmNv
TWVrMEJJSUV5TmRTRXplR2dGVGMKLTJtZGxqc3BnMjAyOEVGcEQ2d0FLN1hiY29BOFdITjgxcWtK
QTRhNFhRUUZncDRSSUQ3RFFjOTVFTHM0YXdNTHUKLVNrWTE5RjRWRVRyUzBSdmpQWUlRa2NPUU11
UGljVkdybUg5Y0RwdFh2K0lNMjRCdUJYZmo2OTJCMVpOaEU4R2QKLXRIbFJwU2lTZ2E3amExNjM1
bUo0bGNac05KSGlEVnBFSS9hSXkrWHkvRzVoSEZjZytTMjJ3Nzk3dHVLeEcyTVoKLVBHOW1uSTFT
L1BGMUtaYmJKSlplWkUydTYwR3hHUVlpdjNzT1VPZDR0TlpxTUx0Mk56bzBKcmpRSkN3eEZnRksK
LTdFelJyTjQxRzJJdVN1U01Tcm45Q0VBRGJ2QjFoZ0RXRWdjOHRXNGpFMjhkOU5ob2lJK0x3enEz
M1dCTjZ0eUcKLW9KbHkzNnc4SjBWTkJxaHFRU0x6d0FRK0NoVDIvYTU5R0o0UjVMdkZDUDJBeERH
a2FnMWlONUZkUTk2YUlvQ0EKLXpBZXZIdERObUd2ajQ0cXBrQWlSbEFDaUZqWVhLN3ZSOVppQitD
SWhlMGR4bTlrWUNjZTlTMkR1MzU0MWEvL1AKLTJZdGZqU2NWM21tYTIxZSt4VU1QemdOUitwOE85
T1kyRFNNaTNtNTZjWEZmUjVlb0tBRnZCVWFsT0JqSnU5V3AKLWs5ZHBMWmxiRThxQmQ4cGxFam5x
M2llMytEU2tXT2FxOEtJNE9lQmEwWnlFNmtSbkMrMnFZUTJhYWZHcS95NWQKLW84Vi9QOXhwdlpK
ZkgvUXNGcGFRTTlUUDNiaUk4d2ROMXcrdVU1WlgvZzl6cGdrVlNCUjRqVldiam1TZHBjTjgKLUlk
Vk5Jb2hMWkR0U1NHREEreXpHK1QvM3Rsb1M3dUIzZElRZ2pxSU5jSnFwM2w2VzhjaGJqWm9lMldE
QUpINnUKLUYrVnRoQ284MmRUZ0Rwbit5UFdzS05UeUpjOUI0YmJDZ0hrWkNqWDBFTmtzSnQyMk9p
OUJxMit1Q1U5UmRLWjgKLUt4TDM3T2xxQXdMdkRnOFhnVi9veDNsemNNbVNSL1kxeFk1WGRVUzRj
cnNYY1NaTXRha0VIbFl0OVUyczhTc0gKLVdxZGlVcmRUQzdZSkhSZUovRmhvb0VvOVRrNGJmeEp0
U2VPSk12ekhrRTE0alJXL292eTF0WUNweUpJN1ErRHkKLTl6KytoaS9EdU51c1dvSGp3M0tMT3RQ
U1Qyby9ZZHVCUEdCSzg4c1BFVlVJWlhkSi9KTGUxQ1FHYisxSXVLeHcKLVhBRGhOTUlHVzMxaTV1
b2FNN2VWZ1JNNW9aNkZVaEszNTZ2QmdKVnUzOXFTdEJ1YzhkcTE5bHUwaU9mZ3RWV1kKLVdFUWQ3
UHV3Sm5acmNwejZZaVBIVHJ0Q0RBcFBUNTNSbnVZSmdQbERHa1cveVVralprOFF6Y2c0eWVzNHpa
YVQKLVprdHMvQmlHdFE0YmdUa09adHdFOHhDSStOWlRuaFd5SXlNayt1czJmU3ZKSkdFc25CdEo4
UE81WHdvWnZIeFEKLURNUDRNb2FadDEvVFY1VFhNWWVsL3NodnBDV0liS0ZWRzlucGszYm9tQzJB
cFVKYk5scnZPS3J4UzV2YVZkMWkKLWJaWGlnWVpjeW5EWVNzWTRSSThqSzNuU3AydVI4QzRZQ2FC
VTF3czB1ajBaQXZZK1N4dVlTUVRFczFlUWQwcmEKLVFNT2xobVVBeWRIa1Ara1QyelVUWWE0dUZu
MkYvS01oUS9yMm5BdHBnRy93VDZnWWVPejViaThiR2w2K2RmdlUKLTlIVDZKV0ZOT0thRlZUVnZs
dTMyVkdwZTRuYlVzelZRbGdYTHUrMXRITDRLMHlSZ0xMNm5HcExIMzFVNE05WVYKLVQrYUpHakNC
RXNINTZpcE1NeTBLZS9OZkp5ZndHK0hFa2c5RVhLK3JlKzF6c200dldJNUFydTRlQXBOM0ltK04K
LVRuSUU3eTVPWkNRRVlnb2xab3R6dlBvWERBZXNvZlJwdDJSb0FNTklML3BSWlpHS0crNmJvanEw
QUlyS2k2cnAKLTZ5Mm5GM05qU2pHQk04SzJGSXNqMk9SY2hiR3p3M3p1NFFPQnNNZkxPMzIvU2hl
TWhheXRxUFZ0M1Brc3M1eGIKLWl2QkkxRk5WTWNHSllBOVMrNFpGM1E9PQorTUlJRkhEQk9CZ2tx
aGtpRzl3MEJCUTB3UVRBcEJna3Foa2lHOXcwQkJRd3dIQVFJNjY2byt0bUJnWFlDQWdnQQorTUF3
R0NDcUdTSWIzRFFJSkJRQXdGQVlJS29aSWh2Y05Bd2NFQ0lMWmdoMEtwRTlNQklJRXlDZ01DQ0Zr
U2xEbQord1BEcFEwckZDeVF5QWNkUDVITW5MTS9XKzJ6NVRZRHFkaHRMZCtYcUQybEdxcjRsQ2Qz
M0NvRHViUnhab1UvdAorVlEwVHVEUWNmaEN6OEhHNm5YTXBhaTJORHJjNU90MjlmVkZkTUZrazhu
YTE3UmhNS1VjNkdhbi9URGkrRTRpOAorZTJZYWtKNUpnYUJVRkJmL2p5cUpmTHNZSmV6TkZobjUr
bkNzeitLYlpCb2h0MkIrVy9ycS9GQVV6d1BHSitZYworOEoyZ1ZjdVJVY3RYd1M0N3lJOGFrbFho
SWh3bUw4OUlvYWQzcnB5cGVEWDN0dTVUZUcybnYvZDF1VjMvRm5nQworLzE4YjRlSno2ZHBxZFRW
TjVVb2EzTmpIalk4YThtY0J2V0tCTDZtV3kyZFRWbDlXOHdkZ3RWa3ZjMFBzRjNQdQorb0p5NW9l
V2hQNmRTcUF2REhURFhhMzhydDNIOUlSbVRzSVhkMFZWT0loRmpnOHREUVRCUi9DeUpLcDRKTzhP
eQoreS9SR1pzZHFjTzAzdWpvbFdPbERZNFBpOGU3SnBISysxa3loR09UaW1pLzlKdVd0aVNwNDBn
S0R6eWxMMW9hdworaHIxVWFQSGwva0EvZ0pncERCS1QrUFhRdDJHbTlxamU5K0IvVTZ6ajMxYlZk
MHIxUzBxTWxYejgxdC9LK0JjSAordS81TmFac0RYeUU4cnVmeXhBSFBCS1B4WE1aT05HN3k2RWJG
ODY4RUhVckNBS2xFbGZIdFRudlAvazY4VjNlSAorR25WenNJZDhlaXJ6dXRyUmR1Z1BYUzdQZzFV
ajFDTDZHYThpYTlNZkVJYlN4L2cyRlE5U01udXJYVmVXdjFxTQordU1OWmJSWlVra0pEOFQvVnFC
N2V6ckk1NTNpVHFaRkdyNmZRMGR5WEJTMG0xcGhQU2ttUGNxRTQyc1lDSVpjeQorS1pHWWVXUzFM
a0ZSb1R4b0F3UlM4Y2YxNE5qbW9HK0FieTRpeUIzUWlNRE9tc3lsWkRGMHZzWWVVYlVJa3h5egor
R25TbjJMYVZwVDNaZXV6aUxuTm4zSmFlSXk5NDZqRWdaRVR2Q0RydXVyVjVBb0FiOXBYRzJYdXlz
ZXZ4L0F1VgorT3d6ejgyUHFHMzA4a3E2eGhjR05LK3Y5RlJiYWdIYUdaNUVHK2lWVVRqTjM0OE5q
SklyaURWZHJIMDZmQnFlKworVUZEOWZBbk4vS2o0ZElKS1VDdW40VVppejJqSGVObkFta0x3T1pu
L2VUSzFMYlVybVQwSiszZXVwYUY3enp4bworQ2VkbkFSekh2QWlFVkFYOFdkNURhdUlqY3plc2pk
ck85eXM3ZFRNZVpleVY1dC9zOFc2NlRCNnRWRElRd1RJcAorM3NrZGhidzIyekkybGNyRGhaYmJZ
aHdPOVI2ZDRsaUVOVVovVzVJU0xEWG4rdzhrcXFoMXFYb0U4dlIwbHhweQorT3oyN2tnNURCcXlV
Zmx4OTlId0xqOGVwTU5wR3plcE1BZUZYVGQrZ0xGS2s3Z1d0VS81bUpJdFRFZkJ1OElpaAorRlQz
L2Vlc0NseHh6Qm0yTWsxdml2L2lLc3BUSDkyK21LRXoybmc2ak9OV3hIWGtmdXhOV2U0d1grS21P
N3M3UAorcGx6eG5icjJUbE5UZXdidVlxeUtNd2U5S09pWG9zZGZ4VWtKcTZEOFIwYmYrQTY5TS9k
Z2dPN0JWZHhOZkY3MQorK3hkZnFqV2psbC81OGxRMTVLZGx5Y2ZWbFlqNmlEdksxQ2hySzRVSDJt
eUdibWhUaElJdGV6UG04T280aTNJNgoraVBrOG5zL0JxZkZIMnJhRTdjdzdHM1VnNmNFSnJjOE9H
NGMxbWZCdUhQQWVEckNXTnU3dEVxd0tyR0dKVkEzYgorMUdpQm83Mno1WFZPaVA3bGt1NzA4WkVm
cnpoMlVHdVN2eDBnYnBXM2FNRE5uVnEyTzZldUlxdVp1Z2Vld2NrcQorMk94OUMxdkFESUE4dWdS
ZEhiU1ZSUUUzM1lpVTFRUzNNdlE5VFlXL1p2N0J1dWhyZGsyUzFXTFJwa1d3K3FSNgorNjJFRkZB
dzZ3anBLL3ZjaUd1Y3JWOEd5eWJkeFBGcVpQTXRRa2doYU9QVU84NFFzeDJyWlhBUis0L2dadUhH
bQordjJMM3RZU0RFbVErNmtFeW5XdFgvdz09CiAtLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBL
RVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCmluZGV4IGU5YjVmZGE1
NWMzOC4uZmNjOTc3YmUwNTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVt
CkBAIC0xLDE2ICsxLDE2IEBACiAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSkFoekND
UDIrZ0F3SUJBZ0lERGV1Zk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwK
LVlpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlNREV3TVRJd01ETXdORGRhRncweU1URXdNVEl3
TURNd05EZGEKK01JSkFoekNDUDIrZ0F3SUJBZ0lEQmxWRk1BMEdDU3FHU0liM0RRRUJDd1VBTUIw
eEd6QVpCZ05WQkFNTUVuZGwKK1lpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlNVEF4TVRJeE5q
RXpNamhhRncweU1qQXhNVEl4TmpFek1qaGEKIE1CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBa
bTl5YlMxMFpYTjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUIKLUJRQURnZ0VQQURDQ0FRb0NnZ0VC
QU9Ha1Avd0R1WmFCNUYrZHlETkQzeWVnUjArdUEvUHNQektjcEFMd2pyNkcKLUFrRVdTcU9wMUg1
cEx0VjBMK1Z1RkpNN2s5T2hpaHJYOWdRRjNORzJvVmlVbzhGWTB1OTBOUVVPRk9wS2Fpb2wKLXBR
RXRDMG5XN1JKTUU5aTZPcUhwOG9FVkVVbVROM3NnWG5tTHpuTy9FVnBianM3Z0VWOGJkdklVZWcy
MjRJOUQKLUx5N1FjRjkwR0hXSGpwOVNJN0ViT0RoYkU3b0IwN2w1NS9kZFRzakNRRTMyS0FkekxN
THJvd0l2Zk1IdEdJRzcKLURLdEV6TTRtdVhhSEpJbURKZGlYTGR2NjRabGJwd2p3cWhFek5CZGZH
aFBuRXFDcURLMC9HcW41VmZTK1V6Y0QKLS91UXJNV3NvTC9vVXJ3VHp0azJ1SSt6Y0tZQ1hvb0ts
RXZ6QVFtTmxYbWNDQXdFQUFhT0NQYzR3Z2ozS01Bd0cKLUExVWRFd1FGTUFNQkFmOHdIUVlEVlIw
T0JCWUVGSUZ1d0JWQlFIY1BERG9laSsrbHRDTTBLdFFQTUVjR0ExVWQKLUl3UkFNRDZBRklGdXdC
VkJRSGNQRERvZWkrK2x0Q00wS3RRUG9TR2tIekFkTVJzd0dRWURWUVFEREJKM1pXSXQKLWNHeGhk
R1p2Y20wdGRHVnpkSE9DQXczcm56QUxCZ05WSFE4RUJBTUNBZ1F3Z2grYkJnTlZIUjRFZ2grU01J
SWYKK0JRQURnZ0VQQURDQ0FRb0NnZ0VCQUtsQWMrNTJRa0ZHczN4alQwT2lUM3Q3SGFqcUZxZWxO
cDV0b1ZaZkwvU0YKK2NYcXZobGR2V3psS3MzWFc0K09LbkdRUDFuQjdxbVpaOEdqU1kwMk5obzM2
VnErWWR6bUhJSFlQWmNBbGZtTk8KKzZpWS9uY2E3QzlNRUlWSnZ4UXNHL0M1WlVUa0tKOTNpRGVo
R2F5NVlGOHdpSWIrazZjbWFWNWNEcytvQndtd3UKK1gzaHhzRGpPa2xVWUNWWTRXdmQ0ZlUvelIv
TGRJM1FaVEFsTmE0ZUx1N3YvOHowdm84dkc3VDhWUzA5bWM2ZWgKK0JqQjB4MUw3WEU2bis0djNn
R0U4UmJ4ZWFJcFpidjh2VldLMUxMTFEwMWdDT2lORmp1dUQzVmNCcW5aVGJWOS8KK3Y0TXFIclBG
ZlptMU14ZXNCL2t5Yk1UdmU0WTZQalQxVTN6Z0pzclYwVWNDQXdFQUFhT0NQYzR3Z2ozS01Bd0cK
K0ExVWRFd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGTnh0aldMZFZKaklZQmZDMDFHenYzTmJYSkM1
TUVjR0ExVWQKK0l3UkFNRDZBRk54dGpXTGRWSmpJWUJmQzAxR3p2M05iWEpDNW9TR2tIekFkTVJz
d0dRWURWUVFEREJKM1pXSXQKK2NHeGhkR1p2Y20wdGRHVnpkSE9DQXdaVlJUQUxCZ05WSFE4RUJB
TUNBZ1F3Z2grYkJnTlZIUjRFZ2grU01JSWYKIGpxQ0NING93RTRJUmQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0Y0SVZiM0E0TG5kbFlpMXdiR0YwWm05eWJTNTAKIFpYTjBNQmVDRlc5d055NTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQVhnaFZ2Y0RrdWQyVmlMWEJzWVhSbWIzSnQKIExuUmxjM1F3RjRJ
VmIzQTBMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmVDRlc1dmRDMTNaV0l0Y0d4aGRHWnYKQEAg
LTMzNywxMSArMzM3LDExIEBAIGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFzZG1VdE5t
eGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHIKIGNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHkKIGNXaDJNamhoTG5odUxTMXVPR28y
WkhNMU0yeDNkMnR5Y1doMk1qaGhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjAKIGdrVjRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTQKLVlT
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUJW
MEZkZDQKLW1CWWNwZXBJRHN3MFJnOWtWQTF4cnVzdUNCdkpCbUhFQWlCVDBCalB1UHFLbVZuU0hl
S0tOOXlQYitNb1pwVlYKLXA5c1lLMWRzdmc3azdQczluL2tVUjVEYVlYRlMwTDZDMTNhaTliOEtT
WGJmY0lwT1JqN2todHczcTJjN21YQlQKLVdKRzc3M3JsOWQ0SktnelVIeE14T3NzcVdnRnlWREk2
aVZJSUt0d1RjUGdrd2pJa3ptU0RYbXpLRzNVM3krRzEKLXV1c1g4T0lUejJZYm1FL2dQVU5Fd1VV
Yjh3RzJZdlN4bHFsNW9UbHRBbU8wQjdPTEt4VEo2eGI4MC8zTld0MTQKLUExcGU3NDJwN2Z6MkVD
UEJ4L3dIanZiRmYyamtNZ3RSeldLMStBOWFYQUpuWm5aaEtCZlcvTU5QNUo0QWlSblkKLXNzVkUr
cnA4cjhSZEhYZz0KK1lTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSktvWklodmNO
QVFFTEJRQURnZ0VCQUhPR3AySmkKK3hLdnZxTnVjTDJncEZCSXBzVDhhYm1LQkxCbTRMc1NCR0VG
UHkxMmZEenRrV0JWVEVOL1dpeUhSTDkzUFBubjIKK1lGbjMvalN1QWdxMExrU3g4VkIvWG4yQ1pn
WTkrV3pMNCsrR042STZrWUF1dXZHNC9QNml3d0RDd1g3eTJjb0QKK0Q3NUU0V1ZWVGpFc0tHMnZS
aVZXemNjbWcvQlRtdlhRSlU4RFNQaHpQUXRVL0Q4cUhVSWUvTWNIbUVXOXN4cEcKK2t0SlNYcUFl
MFZudndQWGhKL3NjT2l5SmFYdkM4bVJqTTUwblVHbnkwbjlOeXdsdG0zb3hPQVZBWklhaFphN2cK
K0tNblJ5d29qTnFsa2NjWGVIQ2pIMXdYT2h6dXlRWCtNdnZCcXE5Njh0dElWL2hiVVhoK0QvU3U5
TTBxUWNsYkEKKzA5dmRYZWxkK3JTeFA4cz0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2VydHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkODcxOTExNGYxZjIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9SRUFETUUubWQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2Nh
Y2VydC5rZXkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NvbmZpZy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRz
L3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRz
L3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCA5NTdkZmIyMzRmOGIuLmI2OWVkMmE5OTlkNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5r
ZXkKQEAgLTEsMjggKzEsMjggQEAKIC0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQotTUlJRXZn
SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFDcnU4djBINUthMk5Q
RwotV1ZWNVkwaDlFUi85eW5DTExTbXkvakhqY3ZZdHdOcEFmU2dIdW0xQ2JXemU5eUU3Yk5hUTlG
WGJBMzNWM2NuaAotMGd6VXlPSzgxeXhjVTVWa0tweU5KY1lGQi9wak9NQjY2clMyUURSMlBFckpU
ZHVoMXkzc1g2SmJLMWFBUThhYwotU25GWE16MkwyOHN3bVhnbUZZbUN4V0hCOHhWc1BSNXhxSWF2
NWNualF5VmZpN0JsY1pDVWFqRXh2dWdrRXRqdAotY2tTWnpCS215TFlXSWpWY0VJd1VhYXBFeXRz
MW1FSkwycVFIUm9FSFZza293MTJWdVBPYW5JaHBCY21yRElSbAotcG5UaFp1SFpPL2FPZUtXRzlz
S0ZWZkNPUkFVcnUrMy91ZFhSYkJMUUxtcEJaaVdPOEYxRXVMTnFVaHNXeC9iRgotc245NjMwRVBB
Z01CQUFFQ2dnRUFRYWQvTnFwbll2bW9KUGw4T3ZjZy9HZHlvcFVsWjUveGhETzRJT3VQZ0RodAot
ZUNBaEVLdE9JQW96aUI1VXZ5SkIrWkxmeStaTzBsZURXZWp5N05xTURJUDZ1cVZkeExpaHR6aU10
dG13K1FQMgotV2tlbXBOSncvQTdhekpFT2VaWUpRWWZpU3hhTGNHZjQ0MEYyaVU3V3BjUjJydkxO
UTBvU2swTWd0NFJXV1ZWNAotRlU0QTljZ0o0KytLaEF0bEN5c2tERytab0ZFajRPOTNXWHFhTy9v
RjhZLyttakQ3eG9Md201bzhVMUUwMEZaUQotT1FrSjI2b2JMZk9RUmNiczNadExjcXNiWmw0NkR6
bW1HOERkcGRzdDJZOGhrZU1QZkk4M2k0eHUyYjV1ait3TwotU1pxd2NIbzRvUkdFUUVVajRXR25O
OVpqVmE5QVdjRE5BWTYzL0Z2VDBRS0JnUURXT3dmWXpzZEczL1IzVFEwWAotN1ZxN3RnWUxEb1dW
RlJzMk8xdmJFKy8rZjZ6UnlDbzg0SXZLZDRLRkcvbWxjWnI2T2RvNkgySFNuUWlSWDQvdwotTEdq
RytwckFxbDkwSU9EWmxqZ1lYRUt1UWVzZUh6NmhIQUwvazlnS0hTT1NtR213NU1tT3c0VFV1SUkw
K29jKwotNWVBclhqdXU5U1gyQUM5MzVpcjN2WUVRbHdLQmdRRE5ONWp4SE9SR2R0SjkyWXIvcmtW
VVNSaXI1LzdPaEJqegotczJLNjAvaFNIYldmZWptV2dHcHFFRXA5cUhCWXVYR1B1T1JXUi9BMzdx
cDYxdzNIaTMvV3A3bkpjam43c1VRSwotOXBoWjhCbW1XMkZJdkMyMko4dWkzM2ZqWC9WYmJkNGlo
ZEJvbmY2RzlmdnBaMWtrVS9uOGNvM2RSZFFrR056SQotSVE2a0pNVnFTUUtCZ1FDOGhqdzBqbHVO
d24zM0VzWm4vUWR3MHhGa1g0WXNtT05XaVV3ZmNkOHNQcDBPQzdFbgotMjQ4SlFMeUtlUURybUJz
REF6QkpIOTdOSWtZczhFVFIzYkxqRUJ4cFdrVWdBK0w3ZUJlclVGMlp6Z2FqZm1sMgotREJtVFlq
Nm5QOWRUSlc4MUxWRTJvbGJkZi9XTnU3NlRHbVo0bzdld0Vxb3lYeDFtelJXWTZKcVF4d0tCZ1FE
QwotMEovaGJTTUwvYXNQaStCWG54SHoxTHlXSFZRWXF2Q2hFVStOdXNMRythczhyU1JVU3E0NjZD
SS9MaE1STjJLbQotSk1pblcvMmdxM0t0ME5Baytib3ZoZVJxWjRUQittTjA0T3A2bnVOS3VQOGV0
SDNVcWV5NFB0cXFRS05FMjRVQQotVXZZcENxdmhaVTF6SXdoTjQyYXpEL0M2K1pwTmRrakp1QkFW
SlU4LytRS0JnQWdyMzlzNjhadzhlc1B2M0FtUAotN1F4K0Q5aGxlRDA3eG0zaUhEMEVVL1dLM0lX
MlRxVU4yVnBMM2xwa3VjSDNNMHYxZG00OStUM05RdzUyNE5KSwotbmZ5dGdDYStSRVJtbzh0L2Vw
Skc2ZFdaZ2VzVW5paVN2QWNrR3JpWmpjc2dPRXhZeUhlN3Z1MWRIT0xlVTJTLwotTkRLUjdmcmdF
VTdFaUd0TlFFYTh1Y0xECitNSUlFdmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1Nr
QWdFQUFvSUJBUURjd2hkemlFdjJXQWt2CitLL3dwZWNuNUxSQXByYldSamFvdGFjWHZrdG94UzBh
SzJmZjM0d2lWN0dyQnVjeHhVODFpM0xDdWNuZDgyZEdUCis0dkhmelRLS2FiNS8rdnV0MUZOb0c1
QkttR1laQ3BPbzZNWk9XQUpKNHpYWVFCQUVlS3VyU2pnbHpPWFdtalNwCitBRXpNOVRxVUc2Nmxw
b1NLNTh6djdnbmVEYmpEbkpoYktZWlF1ck5PbTNQTE1kMGVwMy95eHF3cVZpYTFuT24rCit4YTRa
b0ZyV3dndVdES3gwOXloQktFVkRIWHRBR2ZacDlFV0FUcXVFc3FGU29lTHF5UUR2ZmU1SGVmaTRk
UG1ZCiszMk9pSkc0QXJTS2VneHlSZWtRWjhFNHgzbW5sdDNwckM2blpGZXhMRzYwVU9peC9BTjNS
aWZwSERleThacS9MCitwR3N5K05UN0FnTUJBQUVDZ2dFQkFKcmtPQTRoQUtOczY2ekVZTjQ5REtD
ZnBLcUpyazdkSmgxTkRNdG1yMTlNCis0TWNGM3IxMzk0c3g0VW5oOG5kRmhHTXNVMjlpODBHUGww
UDdSUmh4WWxmSmtCYzk0NTc0empqS3RqZ1FxL28vCisrSkRZR21QWHptdEhWMzFPbmE1MWVJWHJ3
bStMVDJ4K3NCb3dFckx3RVZUZ0EyOUk0ZENRaWJPQ3dqdWlSeFEvCittbjJBNFE2ME9sbElSQ3dT
RTMvdUE5K21VcGVNcDVqZ0pkK29OM3VUNThUbWUvU1JOWHhPS2dDaWU4V1JVbnVlCitYL2NnaEtZ
U05tQXlEU2tiSjBLWTRvYXZiNVlSS1hOcEF0MmhOVzlKc04wcWQzK2o2SloyMW9kaHlkRGJ0cVNx
CitteGpQVFVGUU5GZUxWdkRUYVJZdyt6SytJL25vWklybFFzUzZKUE5mWGtFQ2dZRUErbTNMOWpM
ZTJsejBTSm1HCitObkZ1WThyd3dZVkptNFRMaGpZRG1kbVliR2NZQ1BvOUNISEtoUjZaWHJtTnp4
Y1h2d2FaazhaVHNwQVoyQnp3CisxQU01Mm1oR1plalI3eVY1RkVDaCtVS3J4L0F1ZCtqbTBXaFB0
d1lqaXh6OElobUdHODFvcll1ZXV4NTBIVWNPCitRL0s1TnFvMWVzQkJDK1g1WWEycmIzalNoR0VD
Z1lFQTRhdFJuNlA1RENqNHVnM1NTbFVOSVMzZEp4YmUzUWhCCitsVGtDdFhVUUMrcCtWSVVJMG1W
azZOZ040ZHJnVmlLT2xoek1LWURNdGlWWTJYTFhRTlZQRUo0bmdNU0MxdXpyCit0R2VmTXVML1dS
cHN5c3h3ak4wYiswZkRWZVh0TTE2Q3RYT3Bxbm9ZaTNYWC9SNmFJcVozelZpL3R0d0VPeTZHCitU
ZGduWk5jSlZ0c0NnWUFXNzB0SXB1d0Y3NUZudkxldjhMOTlZQzZnYW9hTk9hSXlEbXhTQUwyVzMv
SXhrRWxhCitwcUUzZzgvai92WmZ5dXVmMFFqcm9iUTBuRUhocXZUYlZkaE1pbFE0TFJSYzVIK3NQ
U2NZWHVUQWtOeVFtc0hZCisxOGJGS2tqRENzcUVqUFhkUWZpZVBEVXpTZHkwZWJkeXZaMzh4YVhV
TWh0QzdiTGpJVGFjSk9LU3dRS0JnR2xKCisxa1ptYWI4cnFvaWNCRDVjR2trZHJlNGI5SlVwMGZk
K1p1NGtsUDBLUmpERzlRdTg5T3pTU1AvVWNCQ2dCT2l5Cit2T3FzUmxiQmJBZmdWZC9RNWhlNXdu
S0l2UWJyK1RqdGs5QlpLb3YzRVVVNVIxWGhuN21JalBHWjJpYTZkTCtXCitIRllHcTBiK0Qyendo
emVkZFkzZ1YycElrc3pOOHltRXJUU1dRNnc3QW9HQkFJRUNCTXdFM1lMMFRHV1BkVTlBCitSVjNh
NUc5c2x1bnFoVkdRQ3d2QmZXd2o2dElwbGh0T0xBcDR5NDAwREhidzRKd2k1WitoRFF1OVB6TUdo
aHd1CitxWkxNSlpKNEJBVWFWSG9FY3VvMXNhYjI1VUg2YTBwZEdmN0JnQ21qS2pQQUh0dnpNeWZ3
ZktwanU3Wk9icHF4CitZZXQxRE1wdm1QbFgxa1pzRWgwNzJ6QnMKIC0tLS0tRU5EIFBSSVZBVEUg
S0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0u
dGVzdC5wZW0KaW5kZXggNjFkN2U0ZDE4OTI2Li5lNzkzMjNkNjZmZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2Vi
LXBsYXRmb3JtLnRlc3QucGVtCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtCkBAIC0xLDQzICsx
LDQzIEBACiBDZXJ0aWZpY2F0ZToKICAgICBEYXRhOgogICAgICAgICBWZXJzaW9uOiAzICgweDIp
Ci0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDkxMjI4OCAoMHhkZWJhMCkKKyAgICAgICAgU2VyaWFs
IE51bWJlcjogNDE1MDQ2ICgweDY1NTQ2KQogICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBz
aGEyNTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10
ZXN0cwogICAgICAgICBWYWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDEyIDAw
OjMwOjQ3IDIwMjAgR01UCi0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTIgMDA6MzA6NDcg
MjAyMSBHTVQKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEphbiAxMiAxNjoxMzoyOCAyMDIxIEdN
VAorICAgICAgICAgICAgTm90IEFmdGVyIDogSmFuIDEyIDE2OjEzOjI4IDIwMjIgR01UCiAgICAg
ICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CiAgICAgICAgIFN1YmplY3QgUHVibGlj
IEtleSBJbmZvOgogICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRp
b24KICAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDggYml0KQogICAgICAgICAg
ICAgICAgIE1vZHVsdXM6Ci0gICAgICAgICAgICAgICAgICAgIDAwOmFiOmJiOmNiOmY0OjFmOjky
OjlhOmQ4OmQzOmM2OjU5OjU1Ojc5OjYzOgotICAgICAgICAgICAgICAgICAgICA0ODo3ZDoxMTox
ZjpmZDpjYTo3MDo4YjoyZDoyOTpiMjpmZTozMTplMzo3MjoKLSAgICAgICAgICAgICAgICAgICAg
ZjY6MmQ6YzA6ZGE6NDA6N2Q6Mjg6MDc6YmE6NmQ6NDI6NmQ6NmM6ZGU6Zjc6Ci0gICAgICAgICAg
ICAgICAgICAgIDIxOjNiOjZjOmQ2OjkwOmY0OjU1OmRiOjAzOjdkOmQ1OmRkOmM5OmUxOmQyOgot
ICAgICAgICAgICAgICAgICAgICAwYzpkNDpjODplMjpiYzpkNzoyYzo1Yzo1Mzo5NTo2NDoyYTo5
Yzo4ZDoyNToKLSAgICAgICAgICAgICAgICAgICAgYzY6MDU6MDc6ZmE6NjM6Mzg6YzA6N2E6ZWE6
YjQ6YjY6NDA6MzQ6NzY6M2M6Ci0gICAgICAgICAgICAgICAgICAgIDRhOmM5OjRkOmRiOmExOmQ3
OjJkOmVjOjVmOmEyOjViOjJiOjU2OjgwOjQzOgotICAgICAgICAgICAgICAgICAgICBjNjo5Yzo0
YTo3MTo1NzozMzozZDo4YjpkYjpjYjozMDo5OTo3ODoyNjoxNToKLSAgICAgICAgICAgICAgICAg
ICAgODk6ODI6YzU6NjE6YzE6ZjM6MTU6NmM6M2Q6MWU6NzE6YTg6ODY6YWY6ZTU6Ci0gICAgICAg
ICAgICAgICAgICAgIGM5OmUzOjQzOjI1OjVmOjhiOmIwOjY1OjcxOjkwOjk0OjZhOjMxOjMxOmJl
OgotICAgICAgICAgICAgICAgICAgICBlODoyNDoxMjpkODplZDo3Mjo0NDo5OTpjYzoxMjphNjpj
ODpiNjoxNjoyMjoKLSAgICAgICAgICAgICAgICAgICAgMzU6NWM6MTA6OGM6MTQ6Njk6YWE6NDQ6
Y2E6ZGI6MzU6OTg6NDI6NGI6ZGE6Ci0gICAgICAgICAgICAgICAgICAgIGE0OjA3OjQ2OjgxOjA3
OjU2OmM5OjI4OmMzOjVkOjk1OmI4OmYzOjlhOjljOgotICAgICAgICAgICAgICAgICAgICA4ODo2
OTowNTpjOTphYjowYzo4NDo2NTphNjo3NDplMTo2NjplMTpkOTozYjoKLSAgICAgICAgICAgICAg
ICAgICAgZjY6OGU6Nzg6YTU6ODY6ZjY6YzI6ODU6NTU6ZjA6OGU6NDQ6MDU6MmI6YmI6Ci0gICAg
ICAgICAgICAgICAgICAgIGVkOmZmOmI5OmQ1OmQxOjZjOjEyOmQwOjJlOjZhOjQxOjY2OjI1Ojhl
OmYwOgotICAgICAgICAgICAgICAgICAgICA1ZDo0NDpiODpiMzo2YTo1MjoxYjoxNjpjNzpmNjpj
NTpiMjo3Zjo3YTpkZjoKLSAgICAgICAgICAgICAgICAgICAgNDE6MGYKKyAgICAgICAgICAgICAg
ICAgICAgMDA6ZGM6YzI6MTc6NzM6ODg6NGI6ZjY6NTg6MDk6MmY6MmI6ZmM6Mjk6Nzk6CisgICAg
ICAgICAgICAgICAgICAgIGM5OmY5OjJkOjEwOjI5OmFkOmI1OjkxOjhkOmFhOjJkOjY5OmM1OmVm
OjkyOgorICAgICAgICAgICAgICAgICAgICBkYTozMTo0Yjo0Njo4YTpkOTpmNzpmNzplMzowODo5
NTplYzo2YTpjMTpiOToKKyAgICAgICAgICAgICAgICAgICAgY2M6NzE6NTM6Y2Q6NjI6ZGM6YjA6
YWU6NzI6Nzc6N2M6ZDk6ZDE6OTM6ZTI6CisgICAgICAgICAgICAgICAgICAgIGYxOmRmOmNkOjMy
OjhhOjY5OmJlOjdmOmZhOmZiOmFkOmQ0OjUzOjY4OjFiOgorICAgICAgICAgICAgICAgICAgICA5
MDo0YTo5ODo2NjoxOTowYTo5MzphODplODpjNjo0ZTo1ODowMjo0OTplMzoKKyAgICAgICAgICAg
ICAgICAgICAgMzU6ZDg6NDA6MTA6MDQ6Nzg6YWI6YWI6NGE6Mzg6MjU6Y2M6ZTU6ZDY6OWE6Cisg
ICAgICAgICAgICAgICAgICAgIDM0OmE5OjAwOjRjOmNjOmY1OjNhOjk0OjFiOmFlOmE1OmE2Ojg0
OjhhOmU3OgorICAgICAgICAgICAgICAgICAgICBjYzplZjplZTowOTpkZTowZDpiODpjMzo5Yzo5
ODo1YjoyOTo4Njo1MDpiYToKKyAgICAgICAgICAgICAgICAgICAgYjM6NGU6OWI6NzM6Y2I6MzE6
ZGQ6MWU6YTc6N2Y6ZjI6YzY6YWM6MmE6NTY6CisgICAgICAgICAgICAgICAgICAgIDI2OmI1Ojlj
OmU5OmZlOmM1OmFlOjE5OmEwOjVhOmQ2OmMyOjBiOjk2OjBjOgorICAgICAgICAgICAgICAgICAg
ICBhYzo3NDpmNzoyODo0MToyODo0NTo0MzoxZDo3Yjo0MDoxOTpmNjo2OTpmNDoKKyAgICAgICAg
ICAgICAgICAgICAgNDU6ODA6NGU6YWI6ODQ6YjI6YTE6NTI6YTE6ZTI6ZWE6Yzk6MDA6ZWY6N2Q6
CisgICAgICAgICAgICAgICAgICAgIGVlOjQ3Ojc5OmY4OmI4Ojc0OmY5Ojk4OmRmOjYzOmEyOjI0
OjZlOjAwOmFkOgorICAgICAgICAgICAgICAgICAgICAyMjo5ZTo4MzoxYzo5MTo3YTo0NDoxOTpm
MDo0ZTozMTpkZTo2OTplNTpiNzoKKyAgICAgICAgICAgICAgICAgICAgN2E6NmI6MGI6YTk6ZDk6
MTU6ZWM6NGI6MWI6YWQ6MTQ6M2E6MmM6N2Y6MDA6CisgICAgICAgICAgICAgICAgICAgIGRkOmQx
Ojg5OmZhOjQ3OjBkOmVjOmJjOjY2OmFmOmNiOmE0OjZiOjMyOmY4OgorICAgICAgICAgICAgICAg
ICAgICBkNDpmYgogICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKICAg
ICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CiAgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3Ry
YWludHM6IAogICAgICAgICAgICAgICAgIENBOkZBTFNFCiAgICAgICAgICAgICBYNTA5djMgU3Vi
amVjdCBLZXkgSWRlbnRpZmllcjogCi0gICAgICAgICAgICAgICAgOEM6RDQ6NDg6MDE6MUI6RkY6
OUY6NDI6MEQ6ODE6RDI6MDU6MkQ6NDc6Q0E6OEU6RjQ6REI6MTg6MDcKKyAgICAgICAgICAgICAg
ICBDRDpGMTpDODo2MjpEMTpFQzpBNTozRDpFNDoxQTo5MTo3MDpGMTowMjpFNjo2RTpCQzoyRjpF
MjowNQogICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCi0gICAg
ICAgICAgICAgICAga2V5aWQ6ODE6NkU6QzA6MTU6NDE6NDA6Nzc6MEY6MEM6M0E6MUU6OEI6RUY6
QTU6QjQ6MjM6MzQ6MkE6RDQ6MEYKKyAgICAgICAgICAgICAgICBrZXlpZDpEQzo2RDo4RDo2MjpE
RDo1NDo5ODpDODo2MDoxNzpDMjpEMzo1MTpCMzpCRjo3Mzo1Qjo1Qzo5MDpCOQogCiAgICAgICAg
ICAgICBYNTA5djMgS2V5IFVzYWdlOiAKICAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVy
ZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CkBAIC00NiwzMyArNDYsMzMgQEAg
Q2VydGlmaWNhdGU6CiAgICAgICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1l
OiAKICAgICAgICAgICAgICAgICBETlM6d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDI0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Nzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1
OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYw
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQwLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjMud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5NS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM2LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AyNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDk0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMzMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AzMi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDcwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AyNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDUyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wODYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AxNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDgwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AzNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDkyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjIu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUwLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A0Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzAud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQ4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNS5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUzLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wOTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AxOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIxLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDY1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUyLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDg5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDkubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDMwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzgubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AzMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIzLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjAubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUxLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNDEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNDIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ny5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDgubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU2Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5My5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODYubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQ3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODgubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDEwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cy
Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cx
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFk
Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54
bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbHZlLTZsYWQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54
bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4t
LW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0t
bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFo
djI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFo
djI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxh
ZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYy
OGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhq
NmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QKICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgot
ICAgICAgICAgNzk6Y2I6YTE6MTc6MTQ6Zjk6MzQ6OGI6ZjU6ZWY6Y2I6MjE6MjI6NDc6ZGM6YjE6
MzI6MTc6Ci0gICAgICAgICAwZjoxNDpkMzpkNzowMzo3NjpkZjo0MToyMDo4NDo1MDo2MzphMjo3
YzpiNzozMTpmZTphMDoKLSAgICAgICAgIGYyOmM5OjMwOjc5OjJjOjMwOjZiOmY3OmViOjM2OjEz
OmFjOjI3OjVlOjRhOjA2OjQ5OjZjOgotICAgICAgICAgYzI6OWM6ZjY6YjA6NTY6YTk6NmU6MjU6
ZTI6ODI6OTE6ZTk6YWM6M2I6MmQ6OWY6Y2Q6YTQ6Ci0gICAgICAgICBmOTpjMTo3NDo0YzoxNTpi
Nzo2ODplZjowMTo2ZjplMDpmMjo5YjpiZTowYzo0ODo5NjozZjoKLSAgICAgICAgIDZlOjQyOjcx
OmU5OmY3OmQ4OjA4OmJhOjNkOmU2OmFiOmMwOmNmOjQ0OmMwOmE4OmNhOjYyOgotICAgICAgICAg
ODQ6MWM6YzI6NDY6MDI6YjA6Nzc6OTg6MTU6YmE6N2Q6NjA6Yjk6ZTU6ZTk6ZmY6ZDk6Nzg6Ci0g
ICAgICAgICA2MjpjZDo1YjowYTo4ZToyNTpmZTphMzoyNToxMDo4Mzo0ZTo4NDo3NDoyNTo2MTo1
NDozMzoKLSAgICAgICAgIDQ1OmQ0Ojg0OmNiOjc2OjkxOmJiOmFiOjQxOmQ1Ojk4OmIxOjQ0Ojkx
OjRiOmUyOmQyOmE1OgotICAgICAgICAgNzU6MTU6ZmI6NWY6ZDc6NzM6NmQ6NmQ6YzY6NGI6OTc6
NzQ6M2I6MGI6ZjM6ZjE6ZmE6ZGE6Ci0gICAgICAgICAxOTo2ZDo2YjoyNzo3Yzo4ZDpmMTo5OTo4
NjpmMToxMTpiMTo4MToyZjphMDoyYzpmYjpmZToKLSAgICAgICAgIDlkOjY3OmQyOjQ5OjVkOmY1
OjBkOmRiOjAzOjI2OmZjOmMxOjRiOmFiOmRkOjE4OmQ1OjdlOgotICAgICAgICAgN2E6NjQ6NjE6
Njk6M2I6OTA6NGY6MmQ6YWQ6MjE6NDA6MDc6ZDE6NWE6ZjA6MzA6NmE6ZWQ6Ci0gICAgICAgICAw
Yzo4NDo1ODphMTo1NTozYzowMDplMToyMzozZTo2MDpjYjpkNDo1NzoxYTo2OToyZDoyZToKLSAg
ICAgICAgIDU2OjNhOjUxOjE0CisgICAgICAgICAzODphNzplZjplYjo1NTozMDplODo2ZjpiZjo1
MTphOTplYjo1Mjo5YTo2NjplYzozZDoxOToKKyAgICAgICAgIDVkOmY0OjFkOjg0OjE3OmMwOmYy
OjI2OjNlOjJiOjY2OjVkOjdhOmE5OjQ0Ojg2OmMzOmJhOgorICAgICAgICAgZDc6ZjA6OWU6ZTc6
YjI6YjM6MDU6MGM6MjU6ZWY6ZTE6Yjc6OTQ6OGM6NDQ6MWM6ZDI6NTc6CisgICAgICAgICA0Yzoz
MDo1MTo5NjoyOTo5NjoyZTpiMzplMzoxYzpmODo5YzplNjo3ZDo5NjoxNDozZjozZjoKKyAgICAg
ICAgIDNlOmE2Ojk2OjRiOjAxOmRjOmYyOmVkOmJmOmZjOmUzOjY0OjkzOjQ5OjgxOmJlOmM5OmRk
OgorICAgICAgICAgZGQ6MWI6Y2U6ZGE6NzI6NDU6ZDE6MmQ6Y2E6OTk6Y2Q6ZDE6N2Q6Zjk6MTc6
ZTE6ZWU6MTI6CisgICAgICAgICBmNDplZDo3Njo0MTpjYTo2ZjphNTo1Yzo3MjowMDo0YTo4ZDo3
NjpjNToyYjpiNzoxODo3YjoKKyAgICAgICAgIGNlOmU4OmFiOjc2OjlhOjc1OmU5OjFkOjUzOjli
Ojc1OjkzOjZkOjBiOjJlOjQ5OjNmOmJmOgorICAgICAgICAgODQ6MWY6NzE6YmU6NDk6MjM6YWI6
MmM6Zjg6YTY6YTI6Mjg6OTM6ODI6MDQ6NmM6OGU6ODU6CisgICAgICAgICAyMjowZTpiNjo2ZDpj
NToxZTo4MjpkMTowZDpjNjowODo5YTo4NjphMToyOTo1Yzo3OTo1MzoKKyAgICAgICAgIGQzOmFl
OmQ2OmM0OjMzOjRiOmQyOjA0OjVhOmQ5OmEwOmMzOjZkOjI2OmVjOmU4OjM1OjA2OgorICAgICAg
ICAgZTc6ODg6MTI6MDM6N2M6YzU6ODM6MjY6YjI6YjU6MzI6YTM6NDE6NTE6YjQ6OTQ6YjA6ODQ6
CisgICAgICAgICAwZDo0YTowNTo1MjowMjoyOTo0MTo1YjowMzowNDpmMDpjMzplNToyNDplNjo1
YTplZjo3MDoKKyAgICAgICAgIDQ1OjQ1OjU4OjI1OjJiOjVlOmJlOjdkOmNhOjczOjAyOjJiOjFk
OjRmOjNjOjRiOjAwOmY0OgorICAgICAgICAgNjk6NWY6MWE6NmUKIC0tLS0tQkVHSU4gQ0VSVElG
SUNBVEUtLS0tLQotTUlJZ3ZEQ0NINlNnQXdJQkFnSUREZXVnTUEwR0NTcUdTSWIzRFFFQkN3VUFN
QjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1ERXdNVEl3
TURNd05EZGFGdzB5TVRFd01USXdNRE13TkRkYQorTUlJZ3ZEQ0NINlNnQXdJQkFnSURCbFZHTUEw
R0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAorWWkxd2JHRjBabTl5YlMxMFpY
TjBjekFlRncweU1UQXhNVEl4TmpFek1qaGFGdzB5TWpBeE1USXhOakV6TWpoYQogTUJ3eEdqQVlC
Z05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFFRgot
QUFPQ0FROEFNSUlCQ2dLQ0FRRUFxN3ZMOUIrU210alR4bGxWZVdOSWZSRWYvY3B3aXkwcHN2NHg0
M0wyTGNEYQotUUgwb0I3cHRRbTFzM3ZjaE8yeldrUFJWMndOOTFkM0o0ZElNMU1qaXZOY3NYRk9W
WkNxY2pTWEdCUWY2WXpqQQotZXVxMHRrQTBkanhLeVUzYm9kY3Q3RitpV3l0V2dFUEduRXB4VnpN
OWk5dkxNSmw0SmhXSmdzVmh3Zk1WYkQwZQotY2FpR3IrWEo0ME1sWDR1d1pYR1FsR294TWI3b0pC
TFk3WEpFbWN3U3BzaTJGaUkxWEJDTUZHbXFSTXJiTlpoQwotUzlxa0IwYUJCMWJKS01OZGxianpt
cHlJYVFYSnF3eUVaYVowNFdiaDJUdjJqbmlsaHZiQ2hWWHdqa1FGSzd2dAotLzduVjBXd1MwQzVx
UVdZbGp2QmRSTGl6YWxJYkZzZjJ4YkovZXQ5QkR3SURBUUFCbzRJZUJEQ0NIZ0F3Q1FZRAotVlIw
VEJBSXdBREFkQmdOVkhRNEVGZ1FVak5SSUFSdi9uMElOZ2RJRkxVZktqdlRiR0Fjd0h3WURWUjBq
QkJndwotRm9BVWdXN0FGVUZBZHc4TU9oNkw3NlcwSXpRcTFBOHdDd1lEVlIwUEJBUURBZ1hnTUJN
R0ExVWRKUVFNTUFvRworQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzTUlYYzRoTDlsZ0pMeXY4S1huSitT
MFFLYTIxa1kycUxXbkY3NUxhTVV0RworaXRuMzkrTUlsZXhxd2JuTWNWUE5ZdHl3cm5KM2ZOblJr
K0x4MzgweWltbStmL3I3cmRSVGFCdVFTcGhtR1FxVAorcU9qR1RsZ0NTZU0xMkVBUUJIaXJxMG80
SmN6bDFwbzBxUUJNelBVNmxCdXVwYWFFaXVmTTcrNEozZzI0dzV5WQorV3ltR1VMcXpUcHR6eXpI
ZEhxZC84c2FzS2xZbXRaenAvc1d1R2FCYTFzSUxsZ3lzZFBjb1FTaEZReDE3UUJuMgorYWZSRmdF
NnJoTEtoVXFIaTZza0E3MzN1UjNuNHVIVDVtTjlqb2lSdUFLMGlub01ja1hwRUdmQk9NZDVwNWJk
NgorYXd1cDJSWHNTeHV0RkRvc2Z3RGQwWW42Unczc3ZHYXZ5NlJyTXZqVSt3SURBUUFCbzRJZUJE
Q0NIZ0F3Q1FZRAorVlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVemZISVl0SHNwVDNrR3BGdzhRTG1i
cnd2NGdVd0h3WURWUjBqQkJndworRm9BVTNHMk5ZdDFVbU1oZ0Y4TFRVYk8vYzF0Y2tMa3dDd1lE
VlIwUEJBUURBZ1hnTUJNR0ExVWRKUVFNTUFvRwogQ0NzR0FRVUZCd01CTUlJZGp3WURWUjBSQklJ
ZGhqQ0NIWUtDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdgogY0RndWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZXOXdOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBNQogTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hWdmNEUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzV2ZEMxMwpA
QCAtMjMxLDEwICsyMzEsMTAgQEAgTm14aFpDNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0
WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbAogYzNTQ1FYaHVMUzF1T0dvMlpITTFNMngzZDJ0
eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMgogTWpoaExuZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdrVjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NAogYmkwdGJqaHFO
bVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSgot
S29aSWh2Y05BUUVMQlFBRGdnRUJBSG5Mb1JjVStUU0w5ZS9MSVNKSDNMRXlGdzhVMDljRGR0OUJJ
SVJRWTZKOAotdHpIK29QTEpNSGtzTUd2MzZ6WVRyQ2RlU2daSmJNS2M5ckJXcVc0bDRvS1I2YXc3
TFovTnBQbkJkRXdWdDJqdgotQVcvZzhwdStERWlXUDI1Q2NlbjMyQWk2UGVhcndNOUV3S2pLWW9R
Y3drWUNzSGVZRmJwOVlMbmw2Zi9aZUdMTgotV3dxT0pmNmpKUkNEVG9SMEpXRlVNMFhVaE10Mmti
dXJRZFdZc1VTUlMrTFNwWFVWKzEvWGMyMXR4a3VYZERzTAotOC9INjJobHRheWQ4amZHWmh2RVJz
WUV2b0N6Ny9wMW4wa2xkOVEzYkF5Yjh3VXVyM1JqVmZucGtZV2s3a0U4dAotclNGQUI5RmE4REJx
N1F5RVdLRlZQQURoSXo1Z3k5UlhHbWt0TGxZNlVSUT0KK0tvWklodmNOQVFFTEJRQURnZ0VCQURp
bjcrdFZNT2h2djFHcDYxS2FadXc5R1YzMEhZUVh3UEltUGl0bVhYcXAKK1JJYkR1dGZ3bnVleXN3
VU1KZS9odDVTTVJCelNWMHd3VVpZcGxpNno0eHo0bk9aOWxoUS9QejZtbGtzQjNQTHQKK3Yvempa
Sk5KZ2I3SjNkMGJ6dHB5UmRFdHlwbk4wWDM1RitIdUV2VHRka0hLYjZWY2NnQktqWGJGSzdjWWU4
N28KK3EzYWFkZWtkVTV0MWsyMExMa2svdjRRZmNiNUpJNnNzK0thaUtKT0NCR3lPaFNJT3RtM0ZI
b0xSRGNZSW1vYWgKK0tWeDVVOU91MXNRelM5SUVXdG1ndzIwbTdPZzFCdWVJRWdOOHhZTW1zclV5
bzBGUnRKU3doQTFLQlZJQ0tVRmIKK0F3VHd3K1VrNWxydmNFVkZXQ1VyWHI1OXluTUNLeDFQUEVz
QTlHbGZHbTQ9CiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9f
X2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9fX2lu
aXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9h
enVyZS9hZmZlY3RlZF90ZXN0cy55bWwKaW5kZXggNDk0ZmYxZWZhMTljLi45NmFiMmI4Y2M1MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMu
eW1sCkBAIC0xNSw3ICsxNSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmku
eW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFu
aWZlc3QueW1sCi0tIHNjcmlwdDogLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1c2UgLS1uby1mYWls
LW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1hZmZlY3RlZCAke3sg
cGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAkKEJ1aWxkLkFydGlm
YWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdwdHNjcmVlbnNob3Qg
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5zaG90LnR4dCAtLWNo
YW5uZWwgcHJldmlldyBzYWZhcmkKKy0gc2NyaXB0OiAuL3dwdCBydW4gLS15ZXMgLS1uby1wYXVz
ZSAtLW5vLWZhaWwtb24tdW5leHBlY3RlZCAtLW5vLXJlc3RhcnQtb24tdW5leHBlY3RlZCAtLWFm
ZmVjdGVkICR7eyBwYXJhbWV0ZXJzLmFmZmVjdGVkUmFuZ2UgfX0gLS1sb2ctd3B0cmVwb3J0ICQo
QnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfcmVwb3J0Lmpzb24gLS1sb2ctd3B0
c2NyZWVuc2hvdCAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3NjcmVlbnNo
b3QudHh0IC0tY2hhbm5lbCBwcmV2aWV3IC0ta2lsbC1zYWZhcmkgc2FmYXJpCiAgIGRpc3BsYXlO
YW1lOiAnUnVuIHRlc3RzJwogLSB0YXNrOiBQdWJsaXNoQnVpbGRBcnRpZmFjdHNAMQogICBkaXNw
bGF5TmFtZTogJ1B1Ymxpc2ggcmVzdWx0cycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUu
eW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9pbnN0YWxsX2Nocm9tZS55bWwKaW5kZXggZmQ2NTBlODBhYWFkLi45Y2NkYzQ5YmEw
ZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJv
bWUueW1sCkBAIC0yLDggKzIsOSBAQCBzdGVwczoKICMgVGhlIGNvbmZsaWN0aW5nIGdvb2dsZS1j
aHJvbWUgYW5kIGNocm9tZWRyaXZlciBjYXNrcyBhcmUgZmlyc3QgdW5pbnN0YWxsZWQuCiAjIFRo
ZSByYXcgZ29vZ2xlLWNocm9tZS1kZXYgY2FzayBVUkwgaXMgdXNlZCB0byBieXBhc3MgY2FjaGlu
Zy4KIC0gc2NyaXB0OiB8Ci0gICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBicmV3IGNhc2sg
dW5pbnN0YWxsIGdvb2dsZS1jaHJvbWUgfHwgdHJ1ZQotICAgIEhPTUVCUkVXX05PX0FVVE9fVVBE
QVRFPTEgYnJldyBjYXNrIHVuaW5zdGFsbCBjaHJvbWVkcml2ZXIgfHwgdHJ1ZQotICAgIEhPTUVC
UkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcuZ2l0aHVi
dXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFzdGVyL0Nh
c2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisgICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBi
cmV3IHVuaW5zdGFsbCAtLWNhc2sgZ29vZ2xlLWNocm9tZSB8fCB0cnVlCisgICAgSE9NRUJSRVdf
Tk9fQVVUT19VUERBVEU9MSBicmV3IHVuaW5zdGFsbCAtLWNhc2sgY2hyb21lZHJpdmVyIHx8IHRy
dWUKKyAgICBjdXJsIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9o
b21lYnJldy1jYXNrLXZlcnNpb25zL21hc3Rlci9DYXNrcy9nb29nbGUtY2hyb21lLWRldi5yYiA+
IGdvb2dsZS1jaHJvbWUtZGV2LnJiCisgICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBicmV3
IGluc3RhbGwgLS1jYXNrIGdvb2dsZS1jaHJvbWUtZGV2LnJiCiAgIGRpc3BsYXlOYW1lOiAnSW5z
dGFsbCBDaHJvbWUgRGV2JwogICBjb25kaXRpb246IGFuZChzdWNjZWVkZWQoKSwgZXEodmFyaWFi
bGVzWydBZ2VudC5PUyddLCAnRGFyd2luJykpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZmlyZWZv
eC55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL2luc3RhbGxfZmlyZWZveC55bWwKaW5kZXggZGU2ZDAzMzVmMjIxLi43YjhjN2Jl
MDVmZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9maXJlZm94LnltbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxf
ZmlyZWZveC55bWwKQEAgLTEsNiArMSw4IEBACiBzdGVwczoKICMgVGhpcyBpcyBlcXVpdmFsZW50
IHRvIGBIb21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL2ZpcmVmb3gtbmlnaHRseWAsCiAj
IGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5nLgotLSBzY3JpcHQ6IEhP
TUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFzdGVy
L0Nhc2tzL2ZpcmVmb3gtbmlnaHRseS5yYgorLSBzY3JpcHQ6IHwKKyAgICBjdXJsIGh0dHBzOi8v
cmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25z
L21hc3Rlci9DYXNrcy9maXJlZm94LW5pZ2h0bHkucmIgPiBmaXJlZm94LW5pZ2h0bHkucmIKKyAg
ICBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgaW5zdGFsbCAtLWNhc2sgZmlyZWZveC1u
aWdodGx5LnJiCiAgIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBGaXJlZm94IE5pZ2h0bHknCiAgIGNv
bmRpdGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdEYXJ3
aW4nKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3B5dGhv
bi55bWwKaW5kZXggNjU4NTIzOWJjOGNjLi42MjU3MTcyMDIxZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9weXRob24ueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCkBAIC0xLDE1ICsxLDM2
IEBACiBzdGVwczoKIC0gcG93ZXJzaGVsbDogfAotICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291
cmNlIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8yLjcuMTUvcHl0aG9uLTIuNy4x
NS5hbWQ2NC5tc2kgLURlc3RpbmF0aW9uIHB5dGhvbi5tc2kKLSAgICAkaGFzaCA9IChHZXQtRmls
ZUhhc2ggcHl0aG9uLm1zaSkuSGFzaC5Ub0xvd2VyKCkKLSAgICAkZXhwZWN0ZWRIYXNoID0gIjVl
ODVmM2M0YzIwOWRlOTg0ODBhY2JmMmJhMmU3MWE5MDdmZDU1NjdhODM4YWQ0YjY3NDhjNzZkZWIy
ODZhZDciCisgICAgJHB5dGhvblBhdGggPSAnQzpcUHl0aG9uMzgnCisgICAgJHB5dGhvbkluc3Rh
bGxlckxvZ1BhdGggPSAncHl0aG9uX2luc3RhbGxlci5sb2cnCisgICAgJGluc3RhbGxBcmdzID0g
Ii9wYXNzaXZlIC9sb2cgJHB5dGhvbkluc3RhbGxlckxvZ1BhdGggVGFyZ2V0RGlyPSRweXRob25Q
YXRoIgorCisgICAgV3JpdGUtSG9zdCAiRG93bmxvYWRpbmcgcHl0aG9uIGluc3RhbGxlciBleGUi
CisgICAgJGRvd25sb2FkUGF0aCA9ICdweXRob25faW5zdGFsbGVyLmV4ZScKKyAgICBTdGFydC1C
aXRzVHJhbnNmZXIgLVNvdXJjZSBodHRwczovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vMy44
LjUvcHl0aG9uLTMuOC41LWFtZDY0LmV4ZSAgLURlc3RpbmF0aW9uICRkb3dubG9hZFBhdGgKKyAg
ICAkaGFzaCA9IChHZXQtRmlsZUhhc2ggJGRvd25sb2FkUGF0aCkuSGFzaC5Ub0xvd2VyKCkKKyAg
ICAkZXhwZWN0ZWRIYXNoID0gImNkNDI3YzdiMTczMzdkN2MxMzc2MWNhMjA4NzdkMmQ4YmU2NjFi
ZDMwNDE1ZGRjMTcwNzJhMzFhNjVhOTFiNjQiCiAgICAgaWYgKCRoYXNoLkVxdWFscygkZXhwZWN0
ZWRIYXNoKSkgewotICAgICAgV3JpdGUtSG9zdCAicHl0aG9uLm1zaSBoYXNoIHZlcmlmaWVkIgor
ICAgICAgV3JpdGUtSG9zdCAiJGRvd25sb2FkUGF0aCBoYXNoIHZlcmlmaWVkIgogICAgIH0gZWxz
ZSB7Ci0gICAgICBUaHJvdyAicHl0aG9uLm1zaSBoYXNoIG1pc21hdGNoLCBnb3QgJGhhc2gsIGV4
cGVjdGVkICRleHBlY3RlZEhhc2giCisgICAgICBUaHJvdyAiJGRvd25sb2FkUGF0aCBoYXNoIG1p
c21hdGNoLCBnb3QgJGhhc2gsIGV4cGVjdGVkICRleHBlY3RlZEhhc2giCiAgICAgfQotICAgIG1z
aWV4ZWMgL2kgcHl0aG9uLm1zaSBUQVJHRVRESVI9QzpcUHl0aG9uMjcgL3EKLSAgICBXcml0ZS1I
b3N0ICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXUM6XFB5dGhvbjI3IgotICAgIFdyaXRlLUhvc3Qg
IiMjdnNvW3Rhc2sucHJlcGVuZHBhdGhdQzpcUHl0aG9uMjdcU2NyaXB0cyIKKworICAgIGlmIChU
ZXN0LVBhdGggLUxpdGVyYWxQYXRoICRweXRob25QYXRoKSB7CisgICAgICAgIFdyaXRlLUhvc3Qg
IiRweXRob25QYXRoIGFscmVhZHkgZXhpc3RzLCB1bmluc3RhbGwgaXQiCisgICAgICAgICR1bmlu
c3RhbGxBcmdzID0gJGluc3RhbGxBcmdzICsgIiAvdW5pbnN0YWxsIC9xdWlldCIKKyAgICAgICAg
JHAgPSBTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAkZG93bmxvYWRQYXRoIC1WZXJiIFJ1bkFzIC1B
cmd1bWVudExpc3QgJHVuaW5zdGFsbEFyZ3MgLVBhc3NUaHJ1IC1XYWl0CisgICAgICAgIFdyaXRl
LUhvc3QgIlVuaW5zdGFsbCBmaW5pc2hlZC4gRXhpdCBjb2RlIHdhczogJCgkcC5FeGl0Q29kZSki
CisgICAgfQorCisgICAgV3JpdGUtSG9zdCAiUnVubmluZyAkZG93bmxvYWRQYXRoIHdpdGggYXJn
cyAkaW5zdGFsbEFyZ3MiCisgICAgJHAgPSBTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAkZG93bmxv
YWRQYXRoIC1WZXJiIFJ1bkFzIC1Bcmd1bWVudExpc3QgJGluc3RhbGxBcmdzIC1QYXNzVGhydSAt
V2FpdAorICAgIFdyaXRlLUhvc3QgIiRkb3dubG9hZFBhdGggZmluaXNoZWQuIEV4aXQgY29kZSB3
YXM6ICQoJHAuRXhpdENvZGUpIgorCisgICAgV3JpdGUtSG9zdCAiQWRkaW5nIFB5dGhvbiBkaXJz
IHRvIHBhdGgiCisgICAgV3JpdGUtSG9zdCAiIyN2c29bdGFzay5wcmVwZW5kcGF0aF1DOlxQeXRo
b24zOCIKKyAgICBXcml0ZS1Ib3N0ICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXUM6XFB5dGhvbjM4
XFNjcmlwdHMiCisKKyAgICBXcml0ZS1Ib3N0ICJEdW1waW5nIGluc3RhbGwgbG9nIGZpbGU6Igor
ICAgIEdldC1Db250ZW50IC1QYXRoICJweXRob25faW5zdGFsbGVyLmxvZyIKICAgZGlzcGxheU5h
bWU6ICdJbnN0YWxsIFB5dGhvbiAoV2luZG93cyknCiAgIGNvbmRpdGlvbjogYW5kKHN1Y2NlZWRl
ZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dzX05UJykpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2luc3RhbGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IDZjMWI1
NjJkNDExYS4uZDkyOWZmYTRkYTkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbApAQCAtOCw3ICs4LDggQEAgc3RlcHM6CiAgIGNvbmRp
dGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJfZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7
IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3ByZXZpZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwK
LSAgICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgdG9vbHMv
Y2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorICAgICAgc2V0IC1ldXgKKyAg
ICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBpbnN0YWxsIC0tY2FzayB0b29scy9j
aS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCiAgICAgICAjIFdvcmthcm91bmQg
Zm9yIGBzdWRvIHNhZmFyZHJpdmVyIC0tZW5hYmxlYCBub3Qgd29ya2luZyBvbiBDYXRhbGluYToK
ICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVz
LzIxNzUxCiAgICAgICBta2RpciAtcCB+L0xpYnJhcnkvV2ViRHJpdmVyLwpAQCAtMTgsNiArMTks
NyBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgU2FmYXJpIFRlY2hub2xvZ3kg
UHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3N0YWJsZScpIH19Ogog
ICAtIHNjcmlwdDogfAorICAgICAgc2V0IC1ldXgKICAgICAgIHN1ZG8gc2FmYXJpZHJpdmVyIC0t
ZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdlYktpdEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlOYW1lOiAnQ29u
ZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5y
YiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgppbmRleCAxMTVkZDFiOGYyMTAuLmUz
OWJlOTk2ZDk5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgpAQCAtMSwxMCArMSwxMCBAQAogY2Fz
ayAic2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldyIgZG8KICAgaWYgTWFjT1MudmVyc2lvbiA8PSA6
Y2F0YWxpbmEKLSAgICB2ZXJzaW9uICIxMTUsMDAxLTYyNjUxLTIwMjAxMDIyLTZjZDkyZTE4LWJm
YmUtNDhjYy05Mzg1LWQ4NGRhOGYzYzI0YyIKLSAgICBzaGEyNTYgImU0YjI5YWMyYTBkNjBlNDhi
YWU3ZDljNjM1ODUzZmY3ZGFkYzU5YTgyZGQ1M2YzNDBiNjIzZWViNTUzOGY2NTciCisgICAgdmVy
c2lvbiAiMTIxLDA3MS0wOTEyMC0yMDIxMDIyNS1mNDc0Njk1My05ZDRmLTRiM2YtOGM2ZC1jZjNh
YmNhNWE0MjciCisgICAgc2hhMjU2ICJkNzU0OGQ0MmRkNzNjMDFhNjFmYjYxMjYyNGRiNzk1MTdi
YjU5NWNlNGU1Mjk2NzU4ZDUyYTEyYTMwNTExNGM4IgogICBlbHNlCi0gICAgdmVyc2lvbiAiMTE1
LDAwMS02MjY3OS0yMDIwMTAyMi00MmUwZDYzYS01MjdhLTQ1YWYtYmViMS0wMmNkNDA5NWUzNDEi
Ci0gICAgc2hhMjU2ICI4MTUyNzZjYTgxNGU0OWE2YjJlOGViODQyOWQ2ZTY2NDRkZTJkYjg5NTI3
ZmJiY2U4M2NiOWQ2OWY1NDc4M2Y3IgorICAgIHZlcnNpb24gIjEyMSwwNzEtMDkxMDUtMjAyMTAy
MjUtMGI1NzZhOTQtYzdjZC00M2NiLTlkZjItNmUwODE3NmZjNDVhIgorICAgIHNoYTI1NiAiYTVm
YWUwMWQ0YjVjY2NhOTk1MmJhY2NjMGE1Mjc5MWUzMzY2ZGE4ZWUxY2E0NzBkYzFlNzU1NGVhNmIw
ZTg3YyIKICAgZW5kCiAKICAgdXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20v
U1RQLyN7dmVyc2lvbi5hZnRlcl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YzY5MmI1ZTYwNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJl
L1JFQURNRS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jaGVja291dC55bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Ns
ZWFudXBfd2luMTAueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpVGVjaG5vbG9neVByZXZpZXcucGxp
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2Z5aV9ob29rLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jZXJ0cy55bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hy
b21lLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvaW5zdGFsbF9lZGdlLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9maXJlZm94LnltbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9mb250cy55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfcHl0aG9uLnltbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZh
cmkueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFy
aS10ZWNobm9sb2d5LXByZXZpZXcucmIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3N5c3RlbV9pbmZvLnltbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdG94X3B5dGVz
dC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL3VwZGF0ZV9ob3N0cy55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3VwZGF0ZV9tYW5pZmVzdC55bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvY2lfdG9vbHNfdW5pdHRlc3Quc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCmluZGV4IDM2NmRjZjY2
ZGU4OC4uYTRkNWNiYjdkZTFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfdG9v
bHNfdW5pdHRlc3Quc2gKQEAgLTYsOSArNiw5IEBAIFdQVF9ST09UPSRTQ1JJUFRfRElSLy4uLy4u
CiBjZCAkV1BUX1JPT1QKIAogcnVuX2FwcGxpY2FibGVfdG94ICgpIHsKLSAgICAjIGluc3RlYWQg
b2YganVzdCBydW5uaW5nIFRPWEVOViAoZS5nLiwgcHkyNykKKyAgICAjIGluc3RlYWQgb2YganVz
dCBydW5uaW5nIFRPWEVOViAoZS5nLiwgcHkzOCkKICAgICAjIHJ1biBhbGwgZW52aXJvbm1lbnRz
IHRoYXQgc3RhcnQgd2l0aCBUT1hFTlYKLSAgICAjIChlLmcuLCBweTI3LWZpcmVmb3ggYXMgd2Vs
bCBhcyBweTI3KQorICAgICMgKGUuZy4sIHB5MzgtZmlyZWZveCBhcyB3ZWxsIGFzIHB5MzgpCiAg
ICAgbG9jYWwgT0xEX1RPWEVOVj0iJFRPWEVOViIKICAgICB1bnNldCBUT1hFTlYKICAgICBsb2Nh
bCBSVU5fRU5WUz0kKHRveCAtbCB8IGdyZXAgIl4ke09MRF9UT1hFTlZ9XChcLVx8XCRcKSIgfCB0
ciAiXG4iICIsIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRy
dW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gKaW5kZXggMDcwOTI5NWY0YTIwLi45N2FjMTdjZGYyZTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2lu
ZnJhc3RydWN0dXJlLnNoCkBAIC02LDIyICs2LDE4IEBAIFdQVF9ST09UPSRTQ1JJUFRfRElSLy4u
Ly4uCiBjZCAkV1BUX1JPT1QKIAogdGVzdF9pbmZyYXN0cnVjdHVyZSgpIHsKLSAgICBQWTNfRkxB
Rz0iJDIiCi0gICAgVEVSTT1kdW1iIC4vd3B0ICRQWTNfRkxBRyBydW4gLS1sb2ctbWFjaCAtIC0t
eWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01BTklGRVNULmpzb24gLS1tZXRhZGF0YSBpbmZyYXN0cnVj
dHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxsLWZvbnRzIC0taW5zdGFsbC13ZWJkcml2ZXIgJDEgJFBS
T0RVQ1QgaW5mcmFzdHJ1Y3R1cmUvCisgICAgUFkyX0ZMQUc9IiQyIgorICAgIFRFUk09ZHVtYiAu
L3dwdCAkUFkyX0ZMQUcgcnVuIC0tbG9nLW1hY2ggLSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9N
QU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFzdHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFs
bC1mb250cyAtLWluc3RhbGwtd2ViZHJpdmVyICQxICRQUk9EVUNUIGluZnJhc3RydWN0dXJlLwog
fQogCiBtYWluKCkgewotICAgIGlmIFtbICQjIC1lcSAxICYmICIkMSIgPSAiLS1weTMiIF1dOyB0
aGVuCi0gICAgICAgIFBST0RVQ1RTPSggImNocm9tZSIgKQotICAgIGVsc2UKLSAgICAgICAgUFJP
RFVDVFM9KCAiZmlyZWZveCIgImNocm9tZSIgKQotICAgIGZpCisgICAgUFJPRFVDVFM9KCAiZmly
ZWZveCIgImNocm9tZSIgKQogICAgIC4vd3B0IG1hbmlmZXN0IC0tcmVidWlsZCAtcCB+L21ldGEv
TUFOSUZFU1QuanNvbgogICAgIGZvciBQUk9EVUNUIGluICIke1BST0RVQ1RTW0BdfSI7IGRvCiAg
ICAgICAgIGlmIFtbICIkUFJPRFVDVCIgPT0gImNocm9tZSIgXV07IHRoZW4KICAgICAgICAgICAg
IHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0
YWJsZSkgLS1jaGFubmVsIGRldiIgIiQxIgogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0
X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gvZmlyZWZveCIKKyAgICAg
ICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PX4vYnVpbGQvZmlyZWZveC9maXJl
Zm94IiAiJDEiCiAgICAgICAgIGZpCiAgICAgZG9uZQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5
CmluZGV4IDc2MjRlYjBkNTE2Zi4uNDMwYzMyZWM2ZDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2Jz
LnB5CkBAIC00LDcgKzQsNiBAQCBpbXBvcnQgcmUKIGZyb20gLi53cHQudGVzdGZpbGVzIGltcG9y
dCBicmFuY2hfcG9pbnQsIGZpbGVzX2NoYW5nZWQKIAogZnJvbSB0b29scyBpbXBvcnQgbG9jYWxw
YXRocyAgIyBub3FhOiBGNDAxCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIHdwdF9yb290
ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
LCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCiAKQEAgLTEwOSw3ICsxMDgsNyBAQCBkZWYgZ2V0X2pv
YnMocGF0aHMsICoqa3dhcmdzKToKICAgICBpbmNsdWRlcyA9IGt3YXJncy5nZXQoImluY2x1ZGVz
IikKICAgICBpZiBpbmNsdWRlcyBpcyBub3QgTm9uZToKICAgICAgICAgaW5jbHVkZXMgPSBzZXQo
aW5jbHVkZXMpCi0gICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKGpvYl9wYXRoX21hcCk6
CisgICAgZm9yIGtleSwgdmFsdWUgaW4gam9iX3BhdGhfbWFwLml0ZW1zKCk6CiAgICAgICAgIGlm
IGluY2x1ZGVzIGlzIE5vbmUgb3Iga2V5IGluIGluY2x1ZGVzOgogICAgICAgICAgICAgcnVsZXNb
a2V5XSA9IFJ1bGVzZXQodmFsdWUpCiAKQEAgLTEyNCw3ICsxMjMsNyBAQCBkZWYgZ2V0X2pvYnMo
cGF0aHMsICoqa3dhcmdzKToKIAogICAgICMgRGVmYXVsdCBqb2JzIHNodWxkIHJ1biBldmVuIGlm
IHRoZXJlIHdlcmUgbm8gY2hhbmdlcwogICAgIGlmIG5vdCBwYXRoczoKLSAgICAgICAgZm9yIGpv
YiwgcGF0aF9yZSBpbiBpdGVyaXRlbXMoam9iX3BhdGhfbWFwKToKKyAgICAgICAgZm9yIGpvYiwg
cGF0aF9yZSBpbiBqb2JfcGF0aF9tYXAuaXRlbXMoKToKICAgICAgICAgICAgIGlmICIuKiIgaW4g
cGF0aF9yZToKICAgICAgICAgICAgICAgICBqb2JzLmFkZChqb2IpCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJl
dmlldy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvcHJfcHJldmlldy5weQppbmRleCAyMzk2ZTliOGFlZTguLmM2OTMyZGFiMjU1NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmlldy5weQpAQCAtMTIsNyArMTIsNiBAQCBpbXBv
cnQgYXJncGFyc2UKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBv
cnQgc3VicHJvY2VzcwogaW1wb3J0IHRpbWUKIAogaW1wb3J0IHJlcXVlc3RzCkBAIC0yNSw3ICsy
NCw3IEBAIEFQSV9SQVRFX0xJTUlUX1RIUkVTSE9MRCA9IDAuMgogTEFCRUwgPSAnc2FmZSBmb3Ig
cHJldmlldycKICMgVGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBhdHRlbXB0
cyB0byB2ZXJpZnkgdGhhdCBhIHN1Ym1pc3Npb24KICMgcHJldmlldyBpcyBhdmFpbGFibGUgb24g
dGhlIFB1bGwgUmVxdWVzdCBwcmV2aWV3IHNlcnZlcgotUE9MTElOR19QRVJJT0QgPSA1CitQT0xM
SU5HX1BFUklPRCA9IDE1CiAjIFB1bGwgUmVxdWVzdHMgZnJvbSBhdXRob3JzIHdpdGggdGhlIGZv
bGxvd2luZyBhc3NvY2lhdGlvbnMgdG8gdGhlIHByb2plY3QKICMgc2hvdWxkIGF1dG9tYXRpY2Fs
bHkgcmVjZWl2ZSBwcmV2aWV3cwogIwpAQCAtNDQsNyArNDMsNyBAQCBsb2dnaW5nLmJhc2ljQ29u
ZmlnKGxldmVsPWxvZ2dpbmcuSU5GTykKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQogCiBkZWYgZ2hfcmVxdWVzdChtZXRob2RfbmFtZSwgdXJsLCBib2R5PU5vbmUsIG1lZGlh
X3R5cGU9Tm9uZSk6Ci0gICAgZ2l0aHViX3Rva2VuID0gb3MuZW52aXJvblsnREVQTE9ZX1RPS0VO
J10KKyAgICBnaXRodWJfdG9rZW4gPSBvcy5lbnZpcm9uWydHSVRIVUJfVE9LRU4nXQogCiAgICAg
a3dhcmdzID0gewogICAgICAgICAnaGVhZGVycyc6IHsKQEAgLTYzLDEwICs2MiwyMSBAQCBkZWYg
Z2hfcmVxdWVzdChtZXRob2RfbmFtZSwgdXJsLCBib2R5PU5vbmUsIG1lZGlhX3R5cGU9Tm9uZSk6
CiAKICAgICBsb2dnZXIuaW5mbygnUmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICVzJywgcmVzcC5zdGF0
dXNfY29kZSkKIAorICAgICMgSWYgR2l0SHViIHRoaW5rcyB0aGUgZmllbGRzIGFyZSBpbnZhbGlk
LCBpdCB3aWxsIHNlbmQgYSA0MjIgYmFjayBhbmQKKyAgICAjIGluY2x1ZGUgZGVidWdnaW5nIGlu
Zm9ybWF0aW9uIGluIHRoZSBib2R5LiBTZWUKKyAgICAjIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1
Yi5jb20vdjMvI2NsaWVudC1lcnJvcnMKKyAgICBpZiByZXNwLnN0YXR1c19jb2RlID09IDQyMjoK
KyAgICAgICAgbG9nZ2VyLmVycm9yKHJlc3AuanNvbigpKQorCiAgICAgcmVzcC5yYWlzZV9mb3Jf
c3RhdHVzKCkKIAorICAgIGlmIHJlc3Auc3RhdHVzX2NvZGUgPT0gMjA0OgorICAgICAgICByZXR1
cm4gTm9uZQogICAgIHJldHVybiByZXNwLmpzb24oKQogCitjbGFzcyBHaXRIdWJSYXRlTGltaXRF
eGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGRlZiBndWFyZChyZXNvdXJjZSk6CiAg
ICAgJycnRGVjb3JhdGUgYSBgUHJvamVjdGAgaW5zdGFuY2UgbWV0aG9kIHdoaWNoIGludGVyYWN0
cyB3aXRoIHRoZSBHaXRIdWIKICAgICBBUEksIGVuc3VyaW5nIHRoYXQgdGhlIHN1YnNlcXVlbnQg
cmVxdWVzdCB3aWxsIG5vdCBkZXBsZXRlIHRoZSByZWxldmFudApAQCAtOTAsNyArMTAwLDcgQEAg
ZGVmIGd1YXJkKHJlc291cmNlKToKICAgICAgICAgICAgICkKIAogICAgICAgICAgICAgaWYgbGlt
aXQgYW5kIGZsb2F0KHJlbWFpbmluZykgLyBsaW1pdCA8IEFQSV9SQVRFX0xJTUlUX1RIUkVTSE9M
RDoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgcmFp
c2UgR2l0SHViUmF0ZUxpbWl0RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAnRXhpdGlu
ZyB0byBhdm9pZCBHaXRIdWIuY29tIEFQSSByZXF1ZXN0IHRocm90dGxpbmcuJwogICAgICAgICAg
ICAgICAgICkKIApAQCAtMTAzLDU0ICsxMTMsNiBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuX2dpdGh1Yl9wcm9qZWN0ID0g
Z2l0aHViX3Byb2plY3QKIAotICAgIEBndWFyZCgnY29yZScpCi0gICAgZGVmIGdldF9wdWxsX3Jl
cXVlc3Qoc2VsZiwgbnVtYmVyKToKLSAgICAgICAgdXJsID0gJ3t9L3JlcG9zL3t9L3B1bGxzL3t9
Jy5mb3JtYXQoCi0gICAgICAgICAgICBzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJvamVjdCwg
bnVtYmVyCi0gICAgICAgICkKLQotICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgUHVsbCBS
ZXF1ZXN0ICVzJywgbnVtYmVyKQotICAgICAgICByZXR1cm4gZ2hfcmVxdWVzdCgnR0VUJywgdXJs
KQotCi0gICAgQGd1YXJkKCdzZWFyY2gnKQotICAgIGRlZiBnZXRfcHVsbF9yZXF1ZXN0cyhzZWxm
LCB1cGRhdGVkX3NpbmNlKToKLSAgICAgICAgd2luZG93X3N0YXJ0ID0gdGltZS5zdHJmdGltZSgn
JVktJW0tJWRUJUg6JU06JVNaJywgdXBkYXRlZF9zaW5jZSkKLSAgICAgICAgdXJsID0gJ3t9L3Nl
YXJjaC9pc3N1ZXM/cT1yZXBvOnt9K2lzOnByK3VwZGF0ZWQ6Pnt9Jy5mb3JtYXQoCi0gICAgICAg
ICAgICBzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJvamVjdCwgd2luZG93X3N0YXJ0Ci0gICAg
ICAgICkKLQotICAgICAgICBsb2dnZXIuaW5mbygKLSAgICAgICAgICAgICdTZWFyY2hpbmcgZm9y
IFB1bGwgUmVxdWVzdHMgdXBkYXRlZCBzaW5jZSAlcycsIHdpbmRvd19zdGFydAotICAgICAgICAp
Ci0KLSAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKLQotICAgICAgICBsb2dn
ZXIuaW5mbygnRm91bmQgJWQgUHVsbCBSZXF1ZXN0cycsIGxlbihkYXRhWydpdGVtcyddKSkKLQot
ICAgICAgICBpZiBkYXRhWydpbmNvbXBsZXRlX3Jlc3VsdHMnXToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignSW5jb21wbGV0ZSByZXN1bHRzJykKLQotICAgICAgICByZXR1cm4ge3ByWydu
dW1iZXInXTogcHIgZm9yIHByIGluIGRhdGFbJ2l0ZW1zJ119Ci0KLSAgICBkZWYgcHVsbF9yZXF1
ZXN0X2lzX2Zyb21fZm9yayhzZWxmLCBwdWxsX3JlcXVlc3QpOgotICAgICAgICBwcl9udW1iZXIg
PSBwdWxsX3JlcXVlc3RbJ251bWJlciddCi0gICAgICAgIGxvZ2dlci5pbmZvKCdDaGVja2luZyBp
ZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBwcl9udW1iZXIpCi0KLSAgICAgICAg
IyBXZSBtYXkgYWxyZWFkeSBoYXZlIHRoaXMgaW5mb3JtYXRpb247IGlmIHNvIG5vIG5lZWQgdG8g
bWFrZSBhbm90aGVyCi0gICAgICAgICMgQVBJIGNhbGwuCi0gICAgICAgIGlmICdoZWFkJyBub3Qg
aW4gcHVsbF9yZXF1ZXN0OgotICAgICAgICAgICAgcHVsbF9yZXF1ZXN0ID0gc2VsZi5nZXRfcHVs
bF9yZXF1ZXN0KHByX251bWJlcikKLQotICAgICAgICByZXBvX25hbWUgPSBwdWxsX3JlcXVlc3Rb
J2hlYWQnXVsncmVwbyddWydmdWxsX25hbWUnXQotICAgICAgICBpc19mb3JrID0gcmVwb19uYW1l
ICE9IHNlbGYuX2dpdGh1Yl9wcm9qZWN0Ci0KLSAgICAgICAgbG9nZ2VyLmluZm8oCi0gICAgICAg
ICAgICAnUHVsbCByZXF1ZXN0ICVzIGlzIGZyb20gXCclc1wnLiBJcyBhIGZvcms6ICVzJywKLSAg
ICAgICAgICAgIHByX251bWJlciwgcmVwb19uYW1lLCBpc19mb3JrCi0gICAgICAgICkKLQotICAg
ICAgICByZXR1cm4gaXNfZm9yawotCiAgICAgQGd1YXJkKCdjb3JlJykKICAgICBkZWYgY3JlYXRl
X3JlZihzZWxmLCByZWZzcGVjLCByZXZpc2lvbik6CiAgICAgICAgIHVybCA9ICd7fS9yZXBvcy97
fS9naXQvcmVmcycuZm9ybWF0KHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1Yl9wcm9qZWN0KQpAQCAt
MTYyLDYgKzEyNCwyMyBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAgICAgICAgICAgICAnc2hh
JzogcmV2aXNpb24KICAgICAgICAgfSkKIAorICAgIEBndWFyZCgnY29yZScpCisgICAgZGVmIGdl
dF9yZWZfcmV2aXNpb24oc2VsZiwgcmVmc3BlYyk6CisgICAgICAgIHVybCA9ICd7fS9yZXBvcy97
fS9naXQvcmVmcy97fScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5faG9zdCwgc2VsZi5fZ2l0
aHViX3Byb2plY3QsIHJlZnNwZWMKKyAgICAgICAgKQorCisgICAgICAgIGxvZ2dlci5pbmZvKCdG
ZXRjaGluZyByZWYgIiVzIicsIHJlZnNwZWMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
Ym9keSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdS
ZWYgZGF0YTogJXMnLCBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKKyAgICAgICAgICAgIHJl
dHVybiBib2R5WydvYmplY3QnXVsnc2hhJ10KKyAgICAgICAgZXhjZXB0IHJlcXVlc3RzLmV4Y2Vw
dGlvbnMuSFRUUEVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLnJlc3BvbnNlLnN0YXR1c19j
b2RlID09IDQwNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmFp
c2UgZQorCiAgICAgQGd1YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX3JlZihzZWxmLCByZWZz
cGVjLCByZXZpc2lvbik6CiAgICAgICAgIHVybCA9ICd7fS9yZXBvcy97fS9naXQvcmVmcy97fScu
Zm9ybWF0KApAQCAtMTcyLDYgKzE1MSwxNiBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAKICAg
ICAgICAgZ2hfcmVxdWVzdCgnUEFUQ0gnLCB1cmwsIHsnc2hhJzogcmV2aXNpb259KQogCisgICAg
QGd1YXJkKCdjb3JlJykKKyAgICBkZWYgZGVsZXRlX3JlZihzZWxmLCByZWZzcGVjKToKKyAgICAg
ICAgdXJsID0gJ3t9L3JlcG9zL3t9L2dpdC9yZWZzL3t9Jy5mb3JtYXQoCisgICAgICAgICAgICBz
ZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJvamVjdCwgcmVmc3BlYworICAgICAgICApCisKKyAg
ICAgICAgbG9nZ2VyLmluZm8oJ0RlbGV0aW5nIHJlZiAiJXMiJywgcmVmc3BlYykKKworICAgICAg
ICBnaF9yZXF1ZXN0KCdERUxFVEUnLCB1cmwpCisKICAgICBAZ3VhcmQoJ2NvcmUnKQogICAgIGRl
ZiBjcmVhdGVfZGVwbG95bWVudChzZWxmLCBwdWxsX3JlcXVlc3QsIHJldmlzaW9uKToKICAgICAg
ICAgdXJsID0gJ3t9L3JlcG9zL3t9L2RlcGxveW1lbnRzJy5mb3JtYXQoCkBAIC0yMDYsNyArMTk1
LDcgQEAgY2xhc3MgUHJvamVjdChvYmplY3QpOgogICAgICAgICByZXR1cm4gZGVwbG95bWVudHMu
cG9wKCkgaWYgbGVuKGRlcGxveW1lbnRzKSBlbHNlIE5vbmUKIAogICAgIEBndWFyZCgnY29yZScp
Ci0gICAgZGVmIHVwZGF0ZV9kZXBsb3ltZW50KHNlbGYsIHRhcmdldCwgZGVwbG95bWVudCwgc3Rh
dGUsIGRlc2NyaXB0aW9uPScnKToKKyAgICBkZWYgYWRkX2RlcGxveW1lbnRfc3RhdHVzKHNlbGYs
IHRhcmdldCwgZGVwbG95bWVudCwgc3RhdGUsIGRlc2NyaXB0aW9uPScnKToKICAgICAgICAgaWYg
c3RhdGUgaW4gKCdwZW5kaW5nJywgJ3N1Y2Nlc3MnKToKICAgICAgICAgICAgIHByX251bWJlciA9
IGRlcGxveW1lbnRbJ2Vudmlyb25tZW50J11bbGVuKERFUExPWU1FTlRfUFJFRklYKTpdCiAgICAg
ICAgICAgICBlbnZpcm9ubWVudF91cmwgPSAne30ve30nLmZvcm1hdCh0YXJnZXQsIHByX251bWJl
cikKQEAgLTIyMiw3MyArMjExLDYgQEAgY2xhc3MgUHJvamVjdChvYmplY3QpOgogICAgICAgICAg
ICAgJ2Vudmlyb25tZW50X3VybCc6IGVudmlyb25tZW50X3VybAogICAgICAgICB9LCAnYXBwbGlj
YXRpb24vdm5kLmdpdGh1Yi5hbnQtbWFuLXByZXZpZXcranNvbicpCiAKLWNsYXNzIFJlbW90ZShv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnaXRodWJfcHJvamVjdCk6Ci0gICAgICAg
ICMgVGhlIHJlcG9zaXRvcnkgaW4gdGhlIEdpdEh1YiBBY3Rpb25zIGVudmlyb25tZW50IGlzIGNv
bmZpZ3VyZWQgd2l0aAotICAgICAgICAjIGEgcmVtb3RlIHdob3NlIFVSTCB1c2VzIHVuYXV0aGVu
dGljYXRlZCBIVFRQUywgbWFraW5nIGl0IHVuc3VpdGFibGUKLSAgICAgICAgIyBmb3IgcHVzaGlu
ZyBjaGFuZ2VzLgotICAgICAgICBzZWxmLl90b2tlbiA9IG9zLmVudmlyb25bJ0RFUExPWV9UT0tF
TiddCi0KLSAgICBkZWYgX2dpdChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgcmV0dXJuIHN1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0KFsKLSAgICAgICAgICAgICdnaXQnLAotICAgICAgICAgICAgJy1j
JywKLSAgICAgICAgICAgICdjcmVkZW50aWFsLnVzZXJuYW1lPXt9Jy5mb3JtYXQoc2VsZi5fdG9r
ZW4pLAotICAgICAgICAgICAgJy1jJywKLSAgICAgICAgICAgICdjb3JlLmFza1Bhc3M9dHJ1ZScs
Ci0gICAgICAgIF0gKyBjb21tYW5kKQotCi0gICAgZGVmIGdldF9yZXZpc2lvbihzZWxmLCByZWZz
cGVjKToKLSAgICAgICAgb3V0cHV0ID0gc2VsZi5fZ2l0KFsKLSAgICAgICAgICAgICdscy1yZW1v
dGUnLAotICAgICAgICAgICAgJ29yaWdpbicsCi0gICAgICAgICAgICAncmVmcy97fScuZm9ybWF0
KHJlZnNwZWMpCi0gICAgICAgIF0pCi0KLSAgICAgICAgaWYgbm90IG91dHB1dDoKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIG91dHB1dC5kZWNvZGUoJ3V0Zi04Jyku
c3BsaXQoKVswXQotCi0gICAgZGVmIGRlbGV0ZV9yZWYoc2VsZiwgcmVmc3BlYyk6Ci0gICAgICAg
IGZ1bGxfcmVmID0gJ3JlZnMve30nLmZvcm1hdChyZWZzcGVjKQotCi0gICAgICAgIGxvZ2dlci5p
bmZvKCdEZWxldGluZyByZWYgIiVzIicsIHJlZnNwZWMpCi0KLSAgICAgICAgc2VsZi5fZ2l0KFsK
LSAgICAgICAgICAgICdwdXNoJywKLSAgICAgICAgICAgICdvcmlnaW4nLAotICAgICAgICAgICAg
Jy0tZGVsZXRlJywKLSAgICAgICAgICAgIGZ1bGxfcmVmCi0gICAgICAgIF0pCi0KLSAgICBkZWYg
Z2V0X3B1bGxfcmVxdWVzdHNfd2l0aF9vcGVuX3JlZihzZWxmKToKLSAgICAgICAgJycnUmV0dXJu
cyBwdWxsIHJlcXVlc3RzIHRoYXQgaGF2ZSBhbiBvcGVuIHJlZi4KLQotICAgICAgICBUaGlzIGNo
ZWNrcyBmb3IgYWxsIHJlZnMgdGhhdCBtYXRjaCB0aGUgcGF0dGVybiAncmVmcy9wcnMtb3Blbi97
cHJ9JywKLSAgICAgICAgYW5kIHRoZW4gcmV0dXJucyB0aGVtIGFzIGEgbGlzdCBvZiBwdWxsIHJl
cXVlc3QgbnVtYmVycy4gTm90ZSB0aGF0IHRoaXMKLSAgICAgICAgbWV0aG9kIGRvZXMgbm90IHF1
ZXJ5IGdpdGh1YjsgdGhpcyBpcyBvbmx5IHRoZSBvcGVuIHB1bGwgcmVxdWVzdHMgYXMKLSAgICAg
ICAgZmFyIGFzIFdQVCBrbm93cy4KLSAgICAgICAgJycnCi0KLSAgICAgICAgcmVmc3BlYyA9ICdy
ZWZzL3Bycy1vcGVuLyonCi0KLSAgICAgICAgbG9nZ2VyLmluZm8oJ0ZldGNoaW5nIGFsbCByZWYg
bmFtZXMgbWF0Y2hpbmcgIiVzIicsIHJlZnNwZWMpCi0KLSAgICAgICAgb3V0cHV0ID0gc2VsZi5f
Z2l0KFsKLSAgICAgICAgICAgICdscy1yZW1vdGUnLAotICAgICAgICAgICAgJ29yaWdpbicsCi0g
ICAgICAgICAgICByZWZzcGVjLAotICAgICAgICBdKQotCi0gICAgICAgIGlmIG5vdCBvdXRwdXQ6
Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICByZWZfbmFtZXMgPSBbbGluZS5zcGxp
dCgpWzFdIGZvciBsaW5lIGluIG91dHB1dC5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpXQot
ICAgICAgICBsb2dnZXIuaW5mbygnJXMgcmVmIG5hbWVzIGZvdW5kJywgbGVuKHJlZl9uYW1lcykp
Ci0gICAgICAgIHJldHVybiBbaW50KHJlZl9uYW1lLnNwbGl0KCcvJylbMl0pIGZvciByZWZfbmFt
ZSBpbiByZWZfbmFtZXNdCi0KLQogZGVmIGlzX29wZW4ocHVsbF9yZXF1ZXN0KToKICAgICByZXR1
cm4gbm90IHB1bGxfcmVxdWVzdFsnY2xvc2VkX2F0J10KIApAQCAtMzA2LDEzMSArMjI4LDEyOCBA
QCBkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxfcmVxdWVzdCk6CiAgICAgICAg
ICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10gbm90IGluIEFVVE9NQVRJT05f
R0lUSFVCX1VTRVJTIGFuZAogICAgICAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fz
c29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TCiAgICAgICAgICAgICAp
Ci0gICAgICAgICkgYW5kCi0gICAgICAgICMgUXVlcnkgdGhpcyBsYXN0IGFzIGl0IHJlcXVpcmVz
IGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5Ci0gICAgICAgIG5vdCBwcm9qZWN0LnB1bGxfcmVx
dWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1ZXN0KQorICAgICAgICApCiAgICAgKQogCiBkZWYg
aXNfZGVwbG95ZWQoaG9zdCwgZGVwbG95bWVudCk6CiAgICAgd29ya3RyZWVfbmFtZSA9IGRlcGxv
eW1lbnRbJ2Vudmlyb25tZW50J11bbGVuKERFUExPWU1FTlRfUFJFRklYKTpdCi0gICAgcmVzcG9u
c2UgPSByZXF1ZXN0cy5nZXQoCi0gICAgICAgICd7fS8uZ2l0L3dvcmt0cmVlcy97fS9IRUFEJy5m
b3JtYXQoaG9zdCwgd29ya3RyZWVfbmFtZSkKLSAgICApCisgICAgdXJsID0gJ3t9Ly5naXQvd29y
a3RyZWVzL3t9L0hFQUQnLmZvcm1hdChob3N0LCB3b3JrdHJlZV9uYW1lKQorICAgIGxvZ2dlci5p
bmZvKCdJc3N1aW5nIHJlcXVlc3Q6IEdFVCAlcycsIHVybCkKKyAgICByZXNwb25zZSA9IHJlcXVl
c3RzLmdldCh1cmwpCiAKKyAgICBsb2dnZXIuaW5mbygnUmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICVz
JywgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0g
MjAwOgogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGxvZ2dlci5pbmZvKCdSZXNwb25zZSB0
ZXh0OiAlcycsIHJlc3BvbnNlLnRleHQuc3RyaXAoKSkKICAgICByZXR1cm4gcmVzcG9uc2UudGV4
dC5zdHJpcCgpID09IGRlcGxveW1lbnRbJ3NoYSddCiAKLWRlZiBzeW5jaHJvbml6ZShob3N0LCBn
aXRodWJfcHJvamVjdCwgd2luZG93KToKLSAgICAnJydJbnNwZWN0IGFsbCBQdWxsIFJlcXVlc3Rz
IHdoaWNoIGhhdmUgYmVlbiBtb2RpZmllZCBpbiBhIGdpdmVuIHdpbmRvdyBvZgotICAgIHRpbWUu
IEFkZCBvciByZW1vdmUgdGhlICJwcmV2aWV3IiBsYWJlbCBhbmQgdXBkYXRlIG9yIGRlbGV0ZSB0
aGUgcmVsZXZhbnQKLSAgICBnaXQgcmVmcyBhY2NvcmRpbmcgdG8gdGhlIHN0YXR1cyBvZiBlYWNo
IFB1bGwgUmVxdWVzdC4nJycKK2RlZiB1cGRhdGVfbWlycm9yX3JlZnMocHJvamVjdCwgcHVsbF9y
ZXF1ZXN0KToKKyAgICAnJydVcGRhdGUgdGhlIFdQVCByZWZzIHRoYXQgY29udHJvbCBtaXJyb3Jp
bmcgb2YgdGhpcyBwdWxsIHJlcXVlc3QuCiAKLSAgICBwcm9qZWN0ID0gUHJvamVjdChob3N0LCBn
aXRodWJfcHJvamVjdCkKLSAgICByZW1vdGUgPSBSZW1vdGUoZ2l0aHViX3Byb2plY3QpCisgICAg
VHdvIHNldHMgb2YgcmVmcyBhcmUgdXNlZCB0byBjb250cm9sIHdwdHByLmxpdmUncyBtaXJyb3Jp
bmcgb2YgcHVsbAorICAgIHJlcXVlc3RzOgogCi0gICAgcHVsbF9yZXF1ZXN0cyA9IHByb2plY3Qu
Z2V0X3B1bGxfcmVxdWVzdHMoCi0gICAgICAgIHRpbWUuZ210aW1lKHRpbWUudGltZSgpIC0gd2lu
ZG93KQotICAgICkKKyAgICAgICAgMS4gcmVmcy9wcnMtdHJ1c3RlZC1mb3ItcHJldmlldy97bnVt
YmVyfQorICAgICAgICAyLiByZWZzL3Bycy1vcGVuL3tudW1iZXJ9CiAKLSAgICAjIEl0IGlzIHBv
c3NpYmxlIHdlIG1heSBtaXNzIHNvbWUgcHVsbCByZXF1ZXN0cyBpZiB0aGlzIHNjcmlwdCBicmVh
a3Mgb3IgaXMKLSAgICAjIG5vdCBydW4gZm9yIGEgd2hpbGUgYW5kIHRoZSBQUiBmYWxscyBvdXRz
aWRlIHRoZSBjaGVja2VkIHdpbmRvdy4gVG8KLSAgICAjIGVuc3VyZSB0aGF0IGNsb3NlZCBwdWxs
IHJlcXVlc3RzIGFyZSBkZWxldGVkLCBleHRlbmQgdGhlIGxpc3Qgb2YgcHVsbAotICAgICMgcmVx
dWVzdHMgdG8gbG9vayBhdCB3aXRoIGFueSB0aGF0IGhhdmUgYW4gZXhpc3RpbmcgcmVmcy9wcnMt
b3Blbi97cHJ9IHJlZgotICAgICMgaW4gdGhlIHJlcG8uCi0gICAgZXhpc3RpbmdfcHJfbnVtYmVy
cyA9IHJlbW90ZS5nZXRfcHVsbF9yZXF1ZXN0c193aXRoX29wZW5fcmVmKCkKLSAgICBmb3IgcHJf
bnVtYmVyIGluIGV4aXN0aW5nX3ByX251bWJlcnM6Ci0gICAgICAgIGlmIHByX251bWJlciBpbiBw
dWxsX3JlcXVlc3RzOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcHVsbF9yZXF1ZXN0
ID0gcHJvamVjdC5nZXRfcHVsbF9yZXF1ZXN0KHByX251bWJlcikKLSAgICAgICAgcHVsbF9yZXF1
ZXN0c1twdWxsX3JlcXVlc3RbJ251bWJlciddXSA9IHB1bGxfcmVxdWVzdAotCi0gICAgZm9yIHB1
bGxfcmVxdWVzdCBpbiBwdWxsX3JlcXVlc3RzLnZhbHVlcygpOgotICAgICAgICBsb2dnZXIuaW5m
bygnUHJvY2Vzc2luZyBQdWxsIFJlcXVlc3QgIyUobnVtYmVyKWQnLCBwdWxsX3JlcXVlc3QpCi0K
LSAgICAgICAgcmVmc3BlY190cnVzdGVkID0gJ3Bycy10cnVzdGVkLWZvci1wcmV2aWV3L3tudW1i
ZXJ9Jy5mb3JtYXQoCi0gICAgICAgICAgICAqKnB1bGxfcmVxdWVzdAotICAgICAgICApCi0gICAg
ICAgIHJlZnNwZWNfb3BlbiA9ICdwcnMtb3Blbi97bnVtYmVyfScuZm9ybWF0KCoqcHVsbF9yZXF1
ZXN0KQotICAgICAgICByZXZpc2lvbl9sYXRlc3QgPSByZW1vdGUuZ2V0X3JldmlzaW9uKAotICAg
ICAgICAgICAgJ3B1bGwve251bWJlcn0vaGVhZCcuZm9ybWF0KCoqcHVsbF9yZXF1ZXN0KQotICAg
ICAgICApCi0gICAgICAgIHJldmlzaW9uX3RydXN0ZWQgPSByZW1vdGUuZ2V0X3JldmlzaW9uKHJl
ZnNwZWNfdHJ1c3RlZCkKLSAgICAgICAgcmV2aXNpb25fb3BlbiA9IHJlbW90ZS5nZXRfcmV2aXNp
b24ocmVmc3BlY19vcGVuKQorICAgIHdwdHByLmxpdmUgd2lsbCBvbmx5IG1pcnJvciBhIHB1bGwg
cmVxdWVzdCBpZiBib3RoIGV4aXN0IGZvciB0aGUgZ2l2ZW4gcHVsbAorICAgIHJlcXVlc3QgbnVt
YmVyOyBvdGhlcndpc2UgdGhlIHB1bGwgcmVxdWVzdCBpcyBlaXRoZXIgbm90IG9wZW4gb3IgaXMg
bm90CisgICAgdHJ1c3R3b3J0aHkgKGUuZy4gY2FtZSBmcm9tIHNvbWVvbmUgd2hvIGRvZXNuJ3Qg
aGF2ZSBwdXNoIGFjY2VzcyBhbnl3YXkuKQogCi0gICAgICAgIGlmIHNob3VsZF9iZV9taXJyb3Jl
ZChwcm9qZWN0LCBwdWxsX3JlcXVlc3QpOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1B1bGwg
UmVxdWVzdCBzaG91bGQgYmUgbWlycm9yZWQnKQorICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhl
IHJldmlzaW9uIHRoYXQgaXMgYmVpbmcgbWlycm9yZWQsIG9yIE5vbmUgaWYgdGhlCisgICAgcHVs
bCByZXF1ZXN0IHNob3VsZCBub3QgYmUgbWlycm9yZWQuCisgICAgJycnCiAKLSAgICAgICAgICAg
IGlmIHJldmlzaW9uX3RydXN0ZWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcm9qZWN0LmNy
ZWF0ZV9yZWYocmVmc3BlY190cnVzdGVkLCByZXZpc2lvbl9sYXRlc3QpCi0gICAgICAgICAgICBl
bGlmIHJldmlzaW9uX3RydXN0ZWQgIT0gcmV2aXNpb25fbGF0ZXN0OgotICAgICAgICAgICAgICAg
IHByb2plY3QudXBkYXRlX3JlZihyZWZzcGVjX3RydXN0ZWQsIHJldmlzaW9uX2xhdGVzdCkKKyAg
ICByZWZzcGVjX3RydXN0ZWQgPSAncHJzLXRydXN0ZWQtZm9yLXByZXZpZXcve251bWJlcn0nLmZv
cm1hdCgKKyAgICAgICAgKipwdWxsX3JlcXVlc3QKKyAgICApCisgICAgcmVmc3BlY19vcGVuID0g
J3Bycy1vcGVuL3tudW1iZXJ9Jy5mb3JtYXQoKipwdWxsX3JlcXVlc3QpCiAKLSAgICAgICAgICAg
IGlmIHJldmlzaW9uX29wZW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcm9qZWN0LmNyZWF0
ZV9yZWYocmVmc3BlY19vcGVuLCByZXZpc2lvbl9sYXRlc3QpCi0gICAgICAgICAgICBlbGlmIHJl
dmlzaW9uX29wZW4gIT0gcmV2aXNpb25fbGF0ZXN0OgotICAgICAgICAgICAgICAgIHByb2plY3Qu
dXBkYXRlX3JlZihyZWZzcGVjX29wZW4sIHJldmlzaW9uX2xhdGVzdCkKKyAgICByZXZpc2lvbl9s
YXRlc3QgPSBwdWxsX3JlcXVlc3RbJ2hlYWQnXVsnc2hhJ10KKyAgICByZXZpc2lvbl90cnVzdGVk
ID0gcHJvamVjdC5nZXRfcmVmX3JldmlzaW9uKHJlZnNwZWNfdHJ1c3RlZCkKKyAgICByZXZpc2lv
bl9vcGVuID0gcHJvamVjdC5nZXRfcmVmX3JldmlzaW9uKHJlZnNwZWNfb3BlbikKIAotICAgICAg
ICAgICAgaWYgcHJvamVjdC5nZXRfZGVwbG95bWVudChyZXZpc2lvbl9sYXRlc3QpIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgcHJvamVjdC5jcmVhdGVfZGVwbG95bWVudCgKLSAgICAgICAgICAg
ICAgICAgICAgcHVsbF9yZXF1ZXN0LCByZXZpc2lvbl9sYXRlc3QKLSAgICAgICAgICAgICAgICAp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnUHVsbCBSZXF1ZXN0IHNo
b3VsZCBub3QgYmUgbWlycm9yZWQnKQorICAgIGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0
LCBwdWxsX3JlcXVlc3QpOgorICAgICAgICBsb2dnZXIuaW5mbygnUHVsbCBSZXF1ZXN0IHNob3Vs
ZCBiZSBtaXJyb3JlZCcpCiAKLSAgICAgICAgICAgIGlmIG5vdCBoYXNfbWlycm9yaW5nX2xhYmVs
KHB1bGxfcmVxdWVzdCkgYW5kIHJldmlzaW9uX3RydXN0ZWQgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgcmVtb3RlLmRlbGV0ZV9yZWYocmVmc3BlY190cnVzdGVkKQorICAgICAgICBpZiBy
ZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CisgICAgICAgICAgICBwcm9qZWN0LmNyZWF0ZV9yZWYo
cmVmc3BlY190cnVzdGVkLCByZXZpc2lvbl9sYXRlc3QpCisgICAgICAgIGVsaWYgcmV2aXNpb25f
dHJ1c3RlZCAhPSByZXZpc2lvbl9sYXRlc3Q6CisgICAgICAgICAgICBwcm9qZWN0LnVwZGF0ZV9y
ZWYocmVmc3BlY190cnVzdGVkLCByZXZpc2lvbl9sYXRlc3QpCiAKLSAgICAgICAgICAgIGlmIHJl
dmlzaW9uX29wZW4gaXMgbm90IE5vbmUgYW5kIG5vdCBpc19vcGVuKHB1bGxfcmVxdWVzdCk6Ci0g
ICAgICAgICAgICAgICAgcmVtb3RlLmRlbGV0ZV9yZWYocmVmc3BlY19vcGVuKQorICAgICAgICBp
ZiByZXZpc2lvbl9vcGVuIGlzIE5vbmU6CisgICAgICAgICAgICBwcm9qZWN0LmNyZWF0ZV9yZWYo
cmVmc3BlY19vcGVuLCByZXZpc2lvbl9sYXRlc3QpCisgICAgICAgIGVsaWYgcmV2aXNpb25fb3Bl
biAhPSByZXZpc2lvbl9sYXRlc3Q6CisgICAgICAgICAgICBwcm9qZWN0LnVwZGF0ZV9yZWYocmVm
c3BlY19vcGVuLCByZXZpc2lvbl9sYXRlc3QpCiAKLWRlZiBkZXRlY3QoaG9zdCwgZ2l0aHViX3By
b2plY3QsIHRhcmdldCwgdGltZW91dCk6Ci0gICAgJycnTWFuYWdlIHRoZSBzdGF0dXMgb2YgYSBH
aXRIdWIgRGVwbG95bWVudCBieSBwb2xsaW5nIHRoZSBQdWxsIFJlcXVlc3QKLSAgICBwcmV2aWV3
IHdlYnNpdGUgdW50aWwgdGhlIERlcGxveW1lbnQgaXMgY29tcGxldGUgb3IgYSB0aW1lb3V0IGlz
Ci0gICAgcmVhY2hlZC4nJycKKyAgICAgICAgcmV0dXJuIHJldmlzaW9uX2xhdGVzdAogCi0gICAg
cHJvamVjdCA9IFByb2plY3QoaG9zdCwgZ2l0aHViX3Byb2plY3QpCisgICAgbG9nZ2VyLmluZm8o
J1B1bGwgUmVxdWVzdCBzaG91bGQgbm90IGJlIG1pcnJvcmVkJykKIAotICAgIHdpdGggb3Blbihv
cy5lbnZpcm9uWydHSVRIVUJfRVZFTlRfUEFUSCddKSBhcyBoYW5kbGU6Ci0gICAgICAgIGRhdGEg
PSBqc29uLmxvYWRzKGhhbmRsZS5yZWFkKCkpCisgICAgaWYgbm90IGhhc19taXJyb3JpbmdfbGFi
ZWwocHVsbF9yZXF1ZXN0KSBhbmQgcmV2aXNpb25fdHJ1c3RlZCBpcyBub3QgTm9uZToKKyAgICAg
ICAgcHJvamVjdC5kZWxldGVfcmVmKHJlZnNwZWNfdHJ1c3RlZCkKIAotICAgIGxvZ2dlci5pbmZv
KCdFdmVudCBkYXRhOiAlcycsIGpzb24uZHVtcHMoZGF0YSwgaW5kZW50PTIpKQorICAgIGlmIHJl
dmlzaW9uX29wZW4gaXMgbm90IE5vbmUgYW5kIG5vdCBpc19vcGVuKHB1bGxfcmVxdWVzdCk6Cisg
ICAgICAgIHByb2plY3QuZGVsZXRlX3JlZihyZWZzcGVjX29wZW4pCiAKLSAgICBkZXBsb3ltZW50
ID0gZGF0YVsnZGVwbG95bWVudCddCisgICAgIyBObyByZXZpc2lvbiB0byBiZSBkZXBsb3llZCB0
byB3cHRwci5saXZlCisgICAgcmV0dXJuIE5vbmUKIAotICAgIGlmIG5vdCBkZXBsb3ltZW50Wydl
bnZpcm9ubWVudCddLnN0YXJ0c3dpdGgoREVQTE9ZTUVOVF9QUkVGSVgpOgotICAgICAgICBsb2dn
ZXIuaW5mbygKLSAgICAgICAgICAgICdEZXBsb3ltZW50IGVudmlyb25tZW50ICIlcyIgaXMgdW5y
ZWNvZ25pemVkLiBFeGl0aW5nLicsCi0gICAgICAgICAgICBkZXBsb3ltZW50WydlbnZpcm9ubWVu
dCddCi0gICAgICAgICkKK2NsYXNzIERlcGxveW1lbnRGYWlsZWRFeGNlcHRpb24oRXhjZXB0aW9u
KToKKyAgICBwYXNzCisKK2RlZiBkZXBsb3kocHJvamVjdCwgdGFyZ2V0LCBwdWxsX3JlcXVlc3Qs
IHJldmlzaW9uLCB0aW1lb3V0KToKKyAgICAnJydDcmVhdGUgYSBHaXRIdWIgZGVwbG95bWVudCBm
b3IgdGhlIGdpdmVuIHB1bGwgcmVxdWVzdCBhbmQgcmV2aXNpb24uCisKKyAgICBUaGlzIG1ldGhv
ZCBjcmVhdGVzIGEgcGVuZGluZyBHaXRIdWIgZGVwbG95bWVudCwgd2FpdHMgZm9yIHRoZQorICAg
IGNvcnJlc3BvbmRpbmcgcmV2aXNpb24gdG8gYmUgYXZhaWxhYmxlIG9uIHdwdHByLmxpdmUgYW5k
IG1hcmtzIHRoZQorICAgIGRlcGxveW1lbnQgYXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIHJldmlzaW9u
IGRvZXMgbm90IGFwcGVhciBpbiB0aGUgZ2l2ZW4KKyAgICB0aW1lb3V0LCB0aGUgZGVwbG95bWVu
dCBpcyBtYXJrZWQgYXMgZXJyb3JlZCBpbnN0ZWFkLicnJworICAgIGlmIHByb2plY3QuZ2V0X2Rl
cGxveW1lbnQocmV2aXNpb24pIGlzIG5vdCBOb25lOgogICAgICAgICByZXR1cm4KIAorICAgIGRl
cGxveW1lbnQgPSBwcm9qZWN0LmNyZWF0ZV9kZXBsb3ltZW50KHB1bGxfcmVxdWVzdCwgcmV2aXNp
b24pCisKICAgICBtZXNzYWdlID0gJ1dhaXRpbmcgdXAgdG8ge30gc2Vjb25kcyBmb3IgRGVwbG95
bWVudCB7fSB0byBiZSBhdmFpbGFibGUgb24ge30nLmZvcm1hdCgKICAgICAgICAgdGltZW91dCwg
ZGVwbG95bWVudFsnZW52aXJvbm1lbnQnXSwgdGFyZ2V0CiAgICAgKQogICAgIGxvZ2dlci5pbmZv
KG1lc3NhZ2UpCi0gICAgcHJvamVjdC51cGRhdGVfZGVwbG95bWVudCh0YXJnZXQsIGRlcGxveW1l
bnQsICdwZW5kaW5nJywgbWVzc2FnZSkKKyAgICBwcm9qZWN0LmFkZF9kZXBsb3ltZW50X3N0YXR1
cyh0YXJnZXQsIGRlcGxveW1lbnQsICdwZW5kaW5nJywgbWVzc2FnZSkKIAogICAgIHN0YXJ0ID0g
dGltZS50aW1lKCkKLQogICAgIHdoaWxlIG5vdCBpc19kZXBsb3llZCh0YXJnZXQsIGRlcGxveW1l
bnQpOgogICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHN0YXJ0ID4gdGltZW91dDoKICAgICAgICAg
ICAgIG1lc3NhZ2UgPSAnRGVwbG95bWVudCBkaWQgbm90IGJlY29tZSBhdmFpbGFibGUgYWZ0ZXIg
e30gc2Vjb25kcycuZm9ybWF0KHRpbWVvdXQpCi0gICAgICAgICAgICBwcm9qZWN0LnVwZGF0ZV9k
ZXBsb3ltZW50KHRhcmdldCwgZGVwbG95bWVudCwgJ2Vycm9yJywgbWVzc2FnZSkKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbihtZXNzYWdlKQorICAgICAgICAgICAgcHJvamVjdC5hZGRfZGVw
bG95bWVudF9zdGF0dXModGFyZ2V0LCBkZXBsb3ltZW50LCAnZXJyb3InLCBtZXNzYWdlKQorICAg
ICAgICAgICAgcmFpc2UgRGVwbG95bWVudEZhaWxlZEV4Y2VwdGlvbihtZXNzYWdlKQogCiAgICAg
ICAgIHRpbWUuc2xlZXAoUE9MTElOR19QRVJJT0QpCiAKLSAgICByZXN1bHQgPSBwcm9qZWN0LnVw
ZGF0ZV9kZXBsb3ltZW50KHRhcmdldCwgZGVwbG95bWVudCwgJ3N1Y2Nlc3MnKQorICAgIHJlc3Vs
dCA9IHByb2plY3QuYWRkX2RlcGxveW1lbnRfc3RhdHVzKHRhcmdldCwgZGVwbG95bWVudCwgJ3N1
Y2Nlc3MnKQogICAgIGxvZ2dlci5pbmZvKGpzb24uZHVtcHMocmVzdWx0LCBpbmRlbnQ9MikpCiAK
K2RlZiBtYWluKGhvc3QsIGdpdGh1Yl9wcm9qZWN0LCB0YXJnZXQsIHRpbWVvdXQpOgorICAgIHBy
b2plY3QgPSBQcm9qZWN0KGhvc3QsIGdpdGh1Yl9wcm9qZWN0KQorCisgICAgd2l0aCBvcGVuKG9z
LmVudmlyb25bJ0dJVEhVQl9FVkVOVF9QQVRIJ10pIGFzIGhhbmRsZToKKyAgICAgICAgZGF0YSA9
IGpzb24ubG9hZChoYW5kbGUpCisKKyAgICBsb2dnZXIuaW5mbygnRXZlbnQgZGF0YTogJXMnLCBq
c29uLmR1bXBzKGRhdGEsIGluZGVudD0yKSkKKworICAgIHB1bGxfcmVxdWVzdCA9IGRhdGFbJ3B1
bGxfcmVxdWVzdCddCisKKyAgICBsb2dnZXIuaW5mbygnUHJvY2Vzc2luZyBQdWxsIFJlcXVlc3Qg
IyUobnVtYmVyKWQnLCBwdWxsX3JlcXVlc3QpCisKKyAgICByZXZpc2lvbl90b19taXJyb3IgPSB1
cGRhdGVfbWlycm9yX3JlZnMocHJvamVjdCwgcHVsbF9yZXF1ZXN0KQorICAgIGlmIHJldmlzaW9u
X3RvX21pcnJvcjoKKyAgICAgICAgZGVwbG95KHByb2plY3QsIHRhcmdldCwgcHVsbF9yZXF1ZXN0
LCByZXZpc2lvbl90b19taXJyb3IsIHRpbWVvdXQpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCi0gICAgICAgIGRlc2Ny
aXB0aW9uPScnJ1N5bmNocm9uaXplIHRoZSBzdGF0ZSBvZiBhIEdpdEh1Yi5jb20gcHJvamVjdCB3
aXRoIHRoZQotICAgICAgICAgICAgdW5kZXJseWluZyBnaXQgcmVwb3NpdG9yeSBpbiBvcmRlciB0
byBzdXBwb3J0IGEgZXh0ZXJuYWxseS1ob3N0ZWQKLSAgICAgICAgICAgIFB1bGwgUmVxdWVzdCBw
cmV2aWV3IHN5c3RlbS4gQ29tbXVuaWNhdGUgdGhlIHN0YXRlIG9mIHRoYXQgc3lzdGVtCi0gICAg
ICAgICAgICB2aWEgR2l0SHViIERlcGxveW1lbnRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIFB1bGwg
UmVxdWVzdC4nJycKKyAgICAgICAgZGVzY3JpcHRpb249JycnTWlycm9yIGEgcHVsbCByZXF1ZXN0
IHRvIGFuIGV4dGVybmFsbHktaG9zdGVkIHByZXZpZXcKKyAgICAgICAgICAgIHN5c3RlbSwgYW5k
IGNyZWF0ZSBhIEdpdEh1YiBEZXBsb3ltZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVsbAorICAg
ICAgICAgICAgcmVxdWVzdCBwb2ludGluZyBhdCB0aGUgcHJldmlldy4nJycKICAgICApCiAgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgJy0taG9zdCcsIHJlcXVpcmVkPVRydWUsIGhl
bHA9J3RoZSBsb2NhdGlvbiBvZiB0aGUgR2l0SHViIEFQSSBzZXJ2ZXInCkBAIC00NDEsMzYgKzM2
MCwxOSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICBoZWxwPScnJ3RoZSBH
aXRIdWIgb3JnYW5pemF0aW9uIGFuZCBHaXRIdWIgcHJvamVjdCBuYW1lLCBzZXBhcmF0ZWQgYnkK
ICAgICAgICAgICAgIGEgZm9yd2FyZCBzbGFzaCAoZS5nLiAid2ViLXBsYXRmb3JtLXRlc3RzL3dw
dCIpJycnCiAgICAgKQotICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnModGl0
bGU9J3N1YmNvbW1hbmRzJykKLQotICAgIHBhcnNlcl9zeW5jID0gc3VicGFyc2Vycy5hZGRfcGFy
c2VyKAotICAgICAgICAnc3luY2hyb25pemUnLCBoZWxwPXN5bmNocm9uaXplLl9fZG9jX18KLSAg
ICApCi0gICAgcGFyc2VyX3N5bmMuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS13aW5kb3cnLAot
ICAgICAgICB0eXBlPWludCwKLSAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKLSAgICAgICAgaGVscD0n
Jyd0aGUgbnVtYmVyIG9mIHNlY29uZHMgcHJpb3IgdG8gdGhlIGN1cnJlbnQgbW9tZW50IHdpdGhp
biB3aGljaAotICAgICAgICAgICAgdG8gc2VhcmNoIGZvciBHaXRIdWIgUHVsbCBSZXF1ZXN0cy4g
QW55IFB1bGwgUmVxdWVzdHMgdXBkYXRlZCBpbgotICAgICAgICAgICAgdGhpcyB0aW1lIGZyYW1l
IHdpbGwgYmUgY29uc2lkZXJlZCBmb3Igc3luY2hyb25pemF0aW9uLicnJwotICAgICkKLSAgICBw
YXJzZXJfc3luYy5zZXRfZGVmYXVsdHMoZnVuYz1zeW5jaHJvbml6ZSkKLQotICAgIHBhcnNlcl9k
ZXRlY3QgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2RldGVjdCcsIGhlbHA9ZGV0ZWN0Ll9fZG9j
X18pCi0gICAgcGFyc2VyX2RldGVjdC5hZGRfYXJndW1lbnQoCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgKICAgICAgICAgJy0tdGFyZ2V0JywKICAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKICAgICAg
ICAgaGVscD0nJyd0aGUgVVJMIG9mIHRoZSB3ZWJzaXRlIHRvIHdoaWNoIHN1Ym1pc3Npb24gcHJl
dmlld3MgYXJlCiAgICAgICAgICAgICBleHBlY3RlZCB0byBiZWNvbWUgYXZhaWxhYmxlJycnCiAg
ICAgKQotICAgIHBhcnNlcl9kZXRlY3QuYWRkX2FyZ3VtZW50KAorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCiAgICAgICAgICctLXRpbWVvdXQnLAogICAgICAgICB0eXBlPWludCwKICAgICAgICAg
cmVxdWlyZWQ9VHJ1ZSwKICAgICAgICAgaGVscD0nJyd0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8g
d2FpdCBmb3IgYSBzdWJtaXNzaW9uIHByZXZpZXcgdG8KICAgICAgICAgICAgIGJlY29tZSBhdmFp
bGFibGUgYmVmb3JlIHJlcG9ydGluZyBhIEdpdEh1YiBEZXBsb3ltZW50IGZhaWx1cmUnJycKICAg
ICApCi0gICAgcGFyc2VyX2RldGVjdC5zZXRfZGVmYXVsdHMoZnVuYz1kZXRlY3QpCiAKICAgICB2
YWx1ZXMgPSBkaWN0KHZhcnMocGFyc2VyLnBhcnNlX2FyZ3MoKSkpCi0gICAgdmFsdWVzLnBvcCgn
ZnVuYycpKCoqdmFsdWVzKQorICAgIG1haW4oKip2YWx1ZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVu
X3RjLnB5CmluZGV4IDY5YmY3MmZiNzQ1Yi4uYjdlNWQ3MjE0NmFjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3J1bl90Yy5weQpAQCAtMSw0ICsxLDQgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uMwogCiAiIiJXcmFwcGVyIHNjcmlwdCBmb3IgcnVubmluZyBqb2Jz
IGluIFRhc2tjbHVzdGVyCiAKQEAgLTU4LDYgKzU4LDggQEAgZGVmIHJ1bihjbWQsIHJldHVybl9z
dGRvdXQ9RmFsc2UsICoqa3dhcmdzKToKICAgICBwcmludCgiICIuam9pbihjbWQpKQogICAgIGlm
IHJldHVybl9zdGRvdXQ6CiAgICAgICAgIGYgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dAorICAg
ICAgICBpZiAiZW5jb2RpbmciIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAgICBrd2FyZ3NbImVu
Y29kaW5nIl0gPSAidXRmLTgiCiAgICAgZWxzZToKICAgICAgICAgZiA9IHN1YnByb2Nlc3MuY2hl
Y2tfY2FsbAogICAgIHJldHVybiBmKGNtZCwgKiprd2FyZ3MpCkBAIC0xNDYsNyArMTQ4LDcgQEAg
ZGVmIGluc3RhbGxfY2hyb21lKGNoYW5uZWwpOgogCiAgICAgZGVzdCA9IG9zLnBhdGguam9pbigi
L3RtcCIsIGRlYl9hcmNoaXZlKQogICAgIGRlYl91cmwgPSAiaHR0cHM6Ly9kbC5nb29nbGUuY29t
L2xpbnV4L2RpcmVjdC8lcyIgJSBkZWJfYXJjaGl2ZQotICAgIHdpdGggb3BlbihkZXN0LCAidyIp
IGFzIGY6CisgICAgd2l0aCBvcGVuKGRlc3QsICJ3YiIpIGFzIGY6CiAgICAgICAgIGdldF9kb3du
bG9hZF90b19kZXNjcmlwdG9yKGYsIGRlYl91cmwpCiAKICAgICBydW4oWyJzdWRvIiwgImFwdC1n
ZXQiLCAiLXFxeSIsICJ1cGRhdGUiXSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90YXNrY2x1
c3Rlci1ydW4ucHkKaW5kZXggNDlhN2QxNjMzODU2Li4zNTYwMjIwMzRiMTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFz
a2NsdXN0ZXItcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CkBAIC02Miw3ICs2Miw3IEBAIGRl
ZiBtYWluKHByb2R1Y3QsIGNoYW5uZWwsIGNvbW1pdF9yYW5nZSwgd3B0X2FyZ3MpOgogICAgICkK
ICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQogCi0gICAgc3VicHJvY2Vzcy5jYWxsKFsn
cHl0aG9uJywgJy4vd3B0JywgJ21hbmlmZXN0LWRvd25sb2FkJ10pCisgICAgc3VicHJvY2Vzcy5j
YWxsKFsncHl0aG9uMycsICcuL3dwdCcsICdtYW5pZmVzdC1kb3dubG9hZCddKQogCiAgICAgaWYg
Y29tbWl0X3JhbmdlOgogICAgICAgICBsb2dnZXIuaW5mbygKQEAgLTg4LDcgKzg4LDcgQEAgZGVm
IG1haW4ocHJvZHVjdCwgY2hhbm5lbCwgY29tbWl0X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgaWYg
cHJvZHVjdCA9PSAic2Vydm8iIGFuZCAiLS10ZXN0LXR5cGU9d2RzcGVjIiBpbiB3cHRfYXJnczoK
ICAgICAgICAgd3B0X2FyZ3MgPSBbaXRlbSBmb3IgaXRlbSBpbiB3cHRfYXJncyBpZiBub3QgaXRl
bS5zdGFydHN3aXRoKCItLXByb2Nlc3NlcyIpXQogCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwg
Ii4vd3B0IiwgInJ1biJdICsgd3B0X2FyZ3MgKyBbcHJvZHVjdF0KKyAgICBjb21tYW5kID0gWyJw
eXRob24zIiwgIi4vd3B0IiwgInJ1biJdICsgd3B0X2FyZ3MgKyBbcHJvZHVjdF0KIAogICAgIGxv
Z2dlci5pbmZvKCJFeGVjdXRpbmcgY29tbWFuZDogJXMiICUgIiAiLmpvaW4oY29tbWFuZCkpCiAg
ICAgd2l0aCBvcGVuKCIvaG9tZS90ZXN0L2FydGlmYWN0cy9jaGVja3J1bi5tZCIsICJhIikgYXMg
ZjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVh
NS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkK
QEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS90Yy9kZWNpc2lvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkKaW5kZXggZjUyZjViMDkzZjBm
Li5kMTlmZjc2OTJjZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9kZWNpc2lvbi5weQpA
QCAtNyw3ICs3LDYgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0
IE9yZGVyZWREaWN0CiAKIGltcG9ydCB0YXNrY2x1c3RlcgotZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcywgaXRlcnZhbHVlcwogCiBmcm9tIC4gaW1wb3J0IHRhc2tncmFwaAogCkBAIC00OCw3ICs0
Nyw3IEBAIGRlZiBmZXRjaF9ldmVudF9kYXRhKHF1ZXVlKToKIGRlZiBmaWx0ZXJfdHJpZ2dlcnMo
ZXZlbnQsIGFsbF90YXNrcyk6CiAgICAgaXNfcHIsIGJyYW5jaCA9IGdldF90cmlnZ2VycyhldmVu
dCkKICAgICB0cmlnZ2VyZWQgPSBPcmRlcmVkRGljdCgpCi0gICAgZm9yIG5hbWUsIHRhc2sgaW4g
aXRlcml0ZW1zKGFsbF90YXNrcyk6CisgICAgZm9yIG5hbWUsIHRhc2sgaW4gYWxsX3Rhc2tzLml0
ZW1zKCk6CiAgICAgICAgIGlmICJ0cmlnZ2VyIiBpbiB0YXNrOgogICAgICAgICAgICAgaWYgaXNf
cHIgYW5kICJwdWxsLXJlcXVlc3QiIGluIHRhc2tbInRyaWdnZXIiXToKICAgICAgICAgICAgICAg
ICB0cmlnZ2VyZWRbbmFtZV0gPSB0YXNrCkBAIC0xMDQsNyArMTAzLDcgQEAgZGVmIGdldF9leHRy
YV9qb2JzKGV2ZW50KToKIGRlZiBmaWx0ZXJfc2NoZWR1bGVfaWYoZXZlbnQsIHRhc2tzKToKICAg
ICBzY2hlZHVsZWQgPSBPcmRlcmVkRGljdCgpCiAgICAgcnVuX2pvYnMgPSBOb25lCi0gICAgZm9y
IG5hbWUsIHRhc2sgaW4gaXRlcml0ZW1zKHRhc2tzKToKKyAgICBmb3IgbmFtZSwgdGFzayBpbiB0
YXNrcy5pdGVtcygpOgogICAgICAgICBpZiAic2NoZWR1bGUtaWYiIGluIHRhc2s6CiAgICAgICAg
ICAgICBpZiAicnVuLWpvYiIgaW4gdGFza1sic2NoZWR1bGUtaWYiXToKICAgICAgICAgICAgICAg
ICBpZiBydW5fam9icyBpcyBOb25lOgpAQCAtMTM4LDcgKzEzNyw3IEBAIGRlZiBnZXRfZmV0Y2hf
cmV2KGV2ZW50KToKICAgICAgICAgICAgICAgICBpZiBub3Qgb3V0cHV0OgogICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBnZXQgY29tbWl0IGZvciAlcyIgJSByZWYp
CiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2hhID0gb3V0cHV0
LnNwbGl0KClbMF0KKyAgICAgICAgICAgICAgICAgICAgc2hhID0gb3V0cHV0LmRlY29kZSgidXRm
LTgiKS5zcGxpdCgpWzBdCiAgICAgICAgICAgICBydi5hcHBlbmQoc2hhKQogICAgICAgICBydiA9
IHR1cGxlKHJ2KQogICAgIGVsc2U6CkBAIC0yODMsNyArMjgyLDcgQEAgZGVmIGJ1aWxkX3Rhc2tf
Z3JhcGgoZXZlbnQsIGFsbF90YXNrcywgdGFza3MpOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbnZfZXh0cmE9ZW52X2V4dHJhKQogICAgICAgICB0YXNrX2lk
X21hcFt0YXNrX25hbWVdID0gKHRhc2tfaWQsIHRhc2tfZGF0YSkKIAotICAgIGZvciB0YXNrX25h
bWUsIHRhc2sgaW4gaXRlcml0ZW1zKHRhc2tzKToKKyAgICBmb3IgdGFza19uYW1lLCB0YXNrIGlu
IHRhc2tzLml0ZW1zKCk6CiAgICAgICAgIGlmIHRhc2tfbmFtZSA9PSAic2luay10YXNrIjoKICAg
ICAgICAgICAgICMgc2luay10YXNrIHdpbGwgYmUgY3JlYXRlZCBiZWxvdyBhdCB0aGUgZW5kIG9m
IHRoZSBvcmRlcmVkIGRpY3QsCiAgICAgICAgICAgICAjIHNvIHRoYXQgaXQgY2FuIGRlcGVuZCBv
biBhbGwgb3RoZXIgdGFza3MuCkBAIC0zMDksNyArMzA4LDcgQEAgZGVmIGJ1aWxkX3Rhc2tfZ3Jh
cGgoZXZlbnQsIGFsbF90YXNrcywgdGFza3MpOgogCiAKIGRlZiBjcmVhdGVfdGFza3MocXVldWUs
IHRhc2tfaWRfbWFwKToKLSAgICBmb3IgKHRhc2tfaWQsIHRhc2tfZGF0YSkgaW4gaXRlcnZhbHVl
cyh0YXNrX2lkX21hcCk6CisgICAgZm9yICh0YXNrX2lkLCB0YXNrX2RhdGEpIGluIHRhc2tfaWRf
bWFwLnZhbHVlcygpOgogICAgICAgICBxdWV1ZS5jcmVhdGVUYXNrKHRhc2tfaWQsIHRhc2tfZGF0
YSkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tncmFwaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFza2dyYXBoLnB5CmluZGV4IDhjNzhm
N2I1ZGJlNy4uZDVjODg5ZDFmYjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tncmFwaC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tn
cmFwaC5weQpAQCAtNCw5ICs0LDcgQEAgaW1wb3J0IHJlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAogZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQogCi1pbXBvcnQgc2l4CiBp
bXBvcnQgeWFtbAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBoZXJlID0gb3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKQogCkBAIC0yNyw3ICsyNSw3IEBAIGRlZiBsb2FkX3Rhc2tfZmlsZShw
YXRoKToKIAogCiBkZWYgdXBkYXRlX3JlY3Vyc2l2ZShkYXRhLCB1cGRhdGVfZGF0YSk6Ci0gICAg
Zm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHVwZGF0ZV9kYXRhKToKKyAgICBmb3Iga2V5LCB2
YWx1ZSBpbiB1cGRhdGVfZGF0YS5pdGVtcygpOgogICAgICAgICBpZiBrZXkgbm90IGluIGRhdGE6
CiAgICAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZQogICAgICAgICBlbHNlOgpAQCAtOTQsMTMg
KzkyLDEzIEBAIGRlZiByZXBsYWNlX3ZhcnMoaW5wdXRfc3RyaW5nLCB2YXJpYWJsZXMpOgogCiAK
IGRlZiBzdWJfdmFyaWFibGVzKGRhdGEsIHZhcmlhYmxlcyk6Ci0gICAgaWYgaXNpbnN0YW5jZShk
YXRhLCBzaXguc3RyaW5nX3R5cGVzKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6CiAg
ICAgICAgIHJldHVybiByZXBsYWNlX3ZhcnMoZGF0YSwgdmFyaWFibGVzKQogICAgIGlmIGlzaW5z
dGFuY2UoZGF0YSwgbGlzdCk6CiAgICAgICAgIHJldHVybiBbc3ViX3ZhcmlhYmxlcyhpdGVtLCB2
YXJpYWJsZXMpIGZvciBpdGVtIGluIGRhdGFdCiAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBkaWN0
KToKICAgICAgICAgcmV0dXJuIHtrZXk6IHN1Yl92YXJpYWJsZXModmFsdWUsIHZhcmlhYmxlcykK
LSAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoZGF0YSl9CisgICAg
ICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGF0YS5pdGVtcygpfQogICAgIHJldHVybiBk
YXRhCiAKIApAQCAtMTU0LDcgKzE1Miw3IEBAIGRlZiBsb2FkX3Rhc2tzKHRhc2tzX2RhdGEpOgog
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdvdCBkdXBsaWNhdGUgdGFzayBuYW1l
ICVzIiAlIG5ld19uYW1lKQogICAgICAgICAgICAgbWFwX3Jlc29sdmVkX3Rhc2tzW25ld19uYW1l
XSA9IHN1YnN0aXR1dGVfdmFyaWFibGVzKGRhdGEpCiAKLSAgICBmb3IgdGFza19kZWZhdWx0X25h
bWUsIGRhdGEgaW4gaXRlcml0ZW1zKG1hcF9yZXNvbHZlZF90YXNrcyk6CisgICAgZm9yIHRhc2tf
ZGVmYXVsdF9uYW1lLCBkYXRhIGluIG1hcF9yZXNvbHZlZF90YXNrcy5pdGVtcygpOgogICAgICAg
ICB0YXNrID0gcmVzb2x2ZV91c2UoZGF0YSwgdGFza3NfZGF0YVsiY29tcG9uZW50cyJdKQogICAg
ICAgICB0YXNrID0gcmVzb2x2ZV9uYW1lKHRhc2ssIHRhc2tfZGVmYXVsdF9uYW1lKQogICAgICAg
ICB0YXNrcy5leHRlbmQocmVzb2x2ZV9jaHVua3ModGFzaykpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rl
c3QueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS90Yy90YXNrcy90ZXN0LnltbAppbmRleCA1NzhiNzY5NDU1YjIuLjk1MjEyZTk3YmY3OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy90YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC0xMDUsMTEg
KzEwNSw2IEBAIGNvbXBvbmVudHM6CiAKICAgYnJvd3Nlci1zZXJ2bzoge30KIAotICB0b3gtcHl0
aG9uMjoKLSAgICBlbnY6Ci0gICAgICBUT1hFTlY6IHB5MjcKLSAgICAgIFBZX0NPTE9SUzogMAot
CiAgIHRveC1weXRob24zOgogICAgIGVudjoKICAgICAgIFRPWEVOVjogcHkzNgpAQCAtNDAyLDIw
ICszOTcsNiBAQCB0YXNrczoKICAgICAgICAgICAtIHVwZGF0ZV9idWlsdAogICAgICAgY29tbWFu
ZDogIi4vdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaCIKIAotICAtIHRvb2xzLyB1bml0dGVzdHMg
KFB5dGhvbiAyKToKLSAgICAgIHVzZToKLSAgICAgICAgLSB3cHQtYmFzZQotICAgICAgICAtIHRy
aWdnZXItcHIKLSAgICAgICAgLSB0b3gtcHl0aG9uMgotICAgICAgZGVzY3JpcHRpb246ID4tCi0g
ICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDIuNywgZXhj
bHVkaW5nIHdwdHJ1bm5lcgotICAgICAgY29tbWFuZDogLi90b29scy9jaS9jaV90b29sc191bml0
dGVzdC5zaAotICAgICAgZW52OgotICAgICAgICBIWVBPVEhFU0lTX1BST0ZJTEU6IGNpCi0gICAg
ICBzY2hlZHVsZS1pZjoKLSAgICAgICAgcnVuLWpvYjoKLSAgICAgICAgICAtIHRvb2xzX3VuaXR0
ZXN0Ci0KICAgLSB0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KToKICAgICAgIGRlc2NyaXB0
aW9uOiA+LQogICAgICAgICBVbml0IHRlc3RzIGZvciB0b29scyBydW5uaW5nIHVuZGVyIFB5dGhv
biAzLjYsIGV4Y2x1ZGluZyB3cHRydW5uZXIKQEAgLTQ0NywyOCArNDI4LDYgQEAgdGFza3M6CiAg
ICAgICAgIHJ1bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMv
IGludGVncmF0aW9uIHRlc3RzIChQeXRob24gMik6Ci0gICAgICBkZXNjcmlwdGlvbjogPi0KLSAg
ICAgICAgSW50ZWdyYXRpb24gdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDIu
NwotICAgICAgdXNlOgotICAgICAgICAtIHdwdC1iYXNlCi0gICAgICAgIC0gdHJpZ2dlci1wcgot
ICAgICAgICAtIHRveC1weXRob24yCi0gICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3Rvb2xz
X2ludGVncmF0aW9uX3Rlc3Quc2gKLSAgICAgIGluc3RhbGw6Ci0gICAgICAgIC0gbGlibnNzMy10
b29scwotICAgICAgb3B0aW9uczoKLSAgICAgICAgb29tLWtpbGxlcjogdHJ1ZQotICAgICAgICBi
cm93c2VyOgotICAgICAgICAgIC0gZmlyZWZveAotICAgICAgICAgIC0gY2hyb21lCi0gICAgICAg
IGNoYW5uZWw6IGV4cGVyaW1lbnRhbAotICAgICAgICB4dmZiOiB0cnVlCi0gICAgICAgIGhvc3Rz
OiB0cnVlCi0gICAgICBzY2hlZHVsZS1pZjoKLSAgICAgICAgcnVuLWpvYjoKLSAgICAgICAgICAt
IHdwdF9pbnRlZ3JhdGlvbgotCiAgIC0gdG9vbHMvIGludGVncmF0aW9uIHRlc3RzIChQeXRob24g
My42KToKICAgICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBm
b3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42CkBAIC01MTUsMjMgKzQ3NCw2IEBAIHRh
c2tzOgogICAgICAgICBydW4tam9iOgogICAgICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKLSAg
LSByZXNvdXJjZXMvIHRlc3RzIChQeXRob24gMik6Ci0gICAgICBkZXNjcmlwdGlvbjogPi0KLSAg
ICAgICAgVGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiByZXNvdXJj
ZXMvIHVuZGVyIFB5dGhvbiAyLjcKLSAgICAgIHVzZToKLSAgICAgICAgLSB3cHQtYmFzZQotICAg
ICAgICAtIHRyaWdnZXItcHIKLSAgICAgICAgLSB0b3gtcHl0aG9uMgotICAgICAgY29tbWFuZDog
Li90b29scy9jaS9jaV9yZXNvdXJjZXNfdW5pdHRlc3Quc2gKLSAgICAgIG9wdGlvbnM6Ci0gICAg
ICAgIGJyb3dzZXI6Ci0gICAgICAgICAgLSBmaXJlZm94Ci0gICAgICAgIHh2ZmI6IHRydWUKLSAg
ICAgICAgaG9zdHM6IHRydWUKLSAgICAgIHNjaGVkdWxlLWlmOgotICAgICAgICBydW4tam9iOgot
ICAgICAgICAgIC0gcmVzb3VyY2VzX3VuaXR0ZXN0Ci0gIAogICAtIHJlc291cmNlcy8gdGVzdHMg
KFB5dGhvbiAzLjYpOgogICAgICAgZGVzY3JpcHRpb246ID4tCiAgICAgICAgIFRlc3RzIGZvciB0
ZXN0aGFybmVzcy5qcyBhbmQgb3RoZXIgZmlsZXMgaW4gcmVzb3VyY2VzLyB1bmRlciBQeXRob24g
My42CkBAIC01NzIsNyArNTE0LDcgQEAgdGFza3M6CiAgICAgICAgIHJ1bi1qb2I6CiAgICAgICAg
ICAgLSByZXNvdXJjZXNfdW5pdHRlc3QKIAotICAtIGluZnJhc3RydWN0dXJlLyB0ZXN0czoKKyAg
LSBpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5dGhvbiAzKToKICAgICAgIGRlc2NyaXB0aW9uOiA+
LQogICAgICAgICBTbW9rZXRlc3RzIGZvciB3cHRydW5uZXIKICAgICAgIHZhcnM6CkBAIC01ODIs
MzEgKzUyNCw2IEBAIHRhc2tzOgogICAgICAgICAtIHRyaWdnZXItcHIKICAgICAgICAgLSBicm93
c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJh
c3RydWN0dXJlLnNoCi0gICAgICBpbnN0YWxsOgotICAgICAgICAtIGxpYm5zczMtdG9vbHMKLSAg
ICAgICAgLSBsaWJhcHBpbmRpY2F0b3IxCi0gICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgotICAg
ICAgb3B0aW9uczoKLSAgICAgICAgb29tLWtpbGxlcjogdHJ1ZQotICAgICAgICBicm93c2VyOgot
ICAgICAgICAgIC0gZmlyZWZveAotICAgICAgICAgIC0gY2hyb21lCi0gICAgICAgIGNoYW5uZWw6
IGV4cGVyaW1lbnRhbAotICAgICAgICB4dmZiOiB0cnVlCi0gICAgICAgIGhvc3RzOiBmYWxzZQot
ICAgICAgc2NoZWR1bGUtaWY6Ci0gICAgICAgIHJ1bi1qb2I6Ci0gICAgICAgICAgLSB3cHRydW5u
ZXJfaW5mcmFzdHJ1Y3R1cmUKLQotICAtIGluZnJhc3RydWN0dXJlLyB0ZXN0cyAoUHl0aG9uIDMp
OgotICAgICAgZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFNtb2tldGVzdHMgZm9yIHdwdHJ1bm5l
cgotICAgICAgdmFyczoKLSAgICAgICAgY2hhbm5lbDogbmlnaHRseQotICAgICAgdXNlOgotICAg
ICAgICAtIHdwdC1iYXNlCi0gICAgICAgIC0gdHJpZ2dlci1wcgotICAgICAgY29tbWFuZDogLi90
b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2ggLS1weTMKICAgICAgIGluc3Rh
bGw6CiAgICAgICAgIC0gcHl0aG9uMy1waXAKICAgICAgICAgLSBsaWJuc3MzLXRvb2xzCkBAIC02
MTUsNiArNTMyLDcgQEAgdGFza3M6CiAgICAgICBvcHRpb25zOgogICAgICAgICBvb20ta2lsbGVy
OiB0cnVlCiAgICAgICAgIGJyb3dzZXI6CisgICAgICAgICAgLSBmaXJlZm94CiAgICAgICAgICAg
LSBjaHJvbWUKICAgICAgICAgY2hhbm5lbDogZXhwZXJpbWVudGFsCiAgICAgICAgIHh2ZmI6IHRy
dWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvdGFza3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDIzYzI1MWI2OTAuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3RjL3Rhc2tzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy90YXNrcy90ZXN0LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0ZGF0YS93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGMvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkxNmVmZGM5ZTFlYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdGRhdGEvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL2Vwb2No
c19kYWlseV9wdXNoX2V2ZW50Lmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL21hc3Rlcl9wdXNoX2V2ZW50Lmpzb24K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rj
L3Rlc3RkYXRhL3ByX2V2ZW50Lmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL3ByX2V2ZW50X3Rlc3RzX2FmZmVjdGVk
Lmpzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF9kZWNpc2lvbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF9kZWNp
c2lvbi5weQppbmRleCA0MjViNTgyOWVkZDMuLjJmOTAxOGE0ZTBiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
cy90ZXN0X2RlY2lzaW9uLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF9kZWNpc2lvbi5weQpAQCAtMiw3ICsy
LDYgQEAgaW1wb3J0IG1vY2sKIGltcG9ydCBweXRlc3QKIAogZnJvbSB0b29scy5jaS50YyBpbXBv
cnQgZGVjaXNpb24KLWZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogCiBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoInJ1bl9qb2JzLHRhc2tzLGV4cGVjdGVkIiwgWwpAQCAtNDIsNyArNDEsNyBA
QCBkZWYgdGVzdF9leHRyYV9qb2JzX3ByKG1zZywgZXhwZWN0ZWQsIGV2ZW50KToKICAgICAgICAg
IiIiQ29weSBvYmosIGV4Y2VwdCBpZiBpdCdzIGEgc3RyaW5nIHdpdGggdGhlIHZhbHVlIDxtZXNz
YWdlPgogICAgICAgICByZXBsYWNlIGl0IHdpdGggdGhlIHZhbHVlIG9mIHRoZSBtc2cgYXJndW1l
bnQiIiIKICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgotICAgICAgICAgICAgcmV0
dXJuIHtrZXk6IHN1Yih2YWx1ZSkgZm9yIChrZXksIHZhbHVlKSBpbiBpdGVyaXRlbXMob2JqKX0K
KyAgICAgICAgICAgIHJldHVybiB7a2V5OiBzdWIodmFsdWUpIGZvciAoa2V5LCB2YWx1ZSkgaW4g
b2JqLml0ZW1zKCl9CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgogICAgICAg
ICAgICAgcmV0dXJuIFtzdWIodmFsdWUpIGZvciB2YWx1ZSBpbiBvYmpdCiAgICAgICAgIGVsaWYg
b2JqID09ICI8bWVzc2FnZT4iOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
cy90ZXN0X3ZhbGlkLnB5CmluZGV4IDRmNmJjYzJmMGE4ZC4uZDQ4OTIwNWIyNmY0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5CkBAIC0xMzAs
MTcgKzEzMCwxMyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ2xpbnQnXSks
CiAgICAgKCJwcl9ldmVudC5qc29uIiwgVHJ1ZSwgeyIudGFza2NsdXN0ZXIueW1sIiwgIi50cmF2
aXMueW1sIiwgInRvb2xzL2NpL3N0YXJ0LnNoIn0sCiAgICAgIFsnbGludCcsCi0gICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDIpJywKICAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRo
b24gMy42KScsCiAgICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAotICAgICAg
J3Rvb2xzLyBpbnRlZ3JhdGlvbiB0ZXN0cyAoUHl0aG9uIDIpJywKICAgICAgICd0b29scy8gaW50
ZWdyYXRpb24gdGVzdHMgKFB5dGhvbiAzLjYpJywKICAgICAgICd0b29scy8gaW50ZWdyYXRpb24g
dGVzdHMgKFB5dGhvbiAzLjgpJywKLSAgICAgICdyZXNvdXJjZXMvIHRlc3RzIChQeXRob24gMikn
LAogICAgICAgJ3Jlc291cmNlcy8gdGVzdHMgKFB5dGhvbiAzLjYpJywKICAgICAgICdyZXNvdXJj
ZXMvIHRlc3RzIChQeXRob24gMy44KScsCiAgICAgICAnZG93bmxvYWQtZmlyZWZveC1uaWdodGx5
JywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnLAogICAgICAgJ2luZnJhc3RydWN0dXJl
LyB0ZXN0cyAoUHl0aG9uIDMpJywKICAgICAgICdzaW5rLXRhc2snXSksCiAgICAgIyBNb3JlIHRl
c3RzIGFyZSBhZmZlY3RlZCBpbiB0aGUgYWN0dWFsIFBSIGJ1dCBpdCBzaG91bGRuJ3QgYWZmZWN0
IHRoZSBzY2hlZHVsZWQgdGFza3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rl
c3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjE4N2Y2
ZGQ5MzcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X2RlY2lzaW9uLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
cy90ZXN0X3Rhc2tncmFwaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI5MjM0YzZhZDE3ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2Rl
Y2lzaW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kb3dubG9hZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZ2l0aHViX2NoZWNrc19vdXRwdXQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3NpbmtfdGFz
ay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGMvdGFza2dyYXBoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMv
dGVzdF9wcl9wcmV2aWV3LnB5CmluZGV4IGVkNjMxMGMxZWExMi4uYTI2ODM4M2VkMGIxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQpA
QCAtMTQsMTAgKzE0LDExIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRo
cmVhZGluZwogCi1zdWJqZWN0ID0gb3MucGF0aC5qb2luKAotICAgIG9zLnBhdGguZGlybmFtZShv
cy5wYXRoLmFic3BhdGgoX19maWxlX18pKSwgJy4uJywgJ3ByX3ByZXZpZXcucHknCi0pCi10ZXN0
X2hvc3QgPSAnbG9jYWxob3N0Jworc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJykpKQoraW1wb3J0IHBy
X3ByZXZpZXcKKworCitURVNUX0hPU1QgPSAnbG9jYWxob3N0JwogCiAKIGRlZiBzYW1lX21lbWJl
cnMoYSwgYik6CkBAIC04MSw3ICs4MiwxMCBAQCBjbGFzcyBNb2NrSGFuZGxlcihCYXNlSFRUUFJl
cXVlc3RIYW5kbGVyLCBvYmplY3QpOgogICAgICAgICBzZWxmLnNlcnZlci5hY3R1YWxfdHJhZmZp
Yy5hcHBlbmQoKHJlcXVlc3QsIHJlc3BvbnNlKSkKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNl
KHJlc3BvbnNlWzBdKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgc2VsZi53
ZmlsZS53cml0ZShqc29uLmR1bXBzKHJlc3BvbnNlWzFdKS5lbmNvZGUoJ3V0Zi04JykpCisgICAg
ICAgIGlmIHNlbGYuc2VydmVyLnJlcG9uc2VfYm9keV9pc19qc29uOgorICAgICAgICAgICAgc2Vs
Zi53ZmlsZS53cml0ZShqc29uLmR1bXBzKHJlc3BvbnNlWzFdKS5lbmNvZGUoJ3V0Zi04JykpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlWzFdLmVu
Y29kZSgndXRmLTgnKSkKIAogICAgIGRlZiBkb19ERUxFVEUoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLmRvX2FsbCgpCkBAIC0xMDAsMTAgKzEwNCwxMSBAQCBjbGFzcyBNb2NrU2VydmVyKEhU
VFBTZXJ2ZXIsIG9iamVjdCk6CiAgICAgJycnSFRUUCBzZXJ2ZXIgdGhhdCByZXNwb25kcyB0byBh
bGwgcmVxdWVzdHMgd2l0aCBzdGF0dXMgY29kZSAyMDAgYW5kIGJvZHkKICAgICAne30nIHVubGVz
cyBhbiBhbHRlcm5hdGl2ZSBzdGF0dXMgY29kZSBhbmQgYm9keSBhcmUgc3BlY2lmaWVkIGZvciB0
aGUgZ2l2ZW4KICAgICBtZXRob2QgYW5kIHBhdGggaW4gdGhlIGByZXNwb25zZXNgIHBhcmFtZXRl
ci4nJycKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZXhwZWN0ZWRfdHJhZmZpYyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGV4cGVjdGVkX3RyYWZmaWMsIHJlcG9u
c2VfYm9keV9pc19qc29uPVRydWUpOgogICAgICAgICBzdXBlcihNb2NrU2VydmVyLCBzZWxmKS5f
X2luaXRfXyhhZGRyZXNzLCBNb2NrSGFuZGxlcikKICAgICAgICAgc2VsZi5leHBlY3RlZF90cmFm
ZmljID0gZXhwZWN0ZWRfdHJhZmZpYwogICAgICAgICBzZWxmLmFjdHVhbF90cmFmZmljID0gW10K
KyAgICAgICAgc2VsZi5yZXBvbnNlX2JvZHlfaXNfanNvbiA9IHJlcG9uc2VfYm9keV9pc19qc29u
CiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRh
cmdldD1sYW1iZGE6IHNlbGYuc2VydmVfZm9yZXZlcigpKS5zdGFydCgpCkBAIC0xMTUsMjEgKzEy
MCwzMSBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9iamVjdCk6CiAKIGNsYXNzIFJl
cXVlc3RzKG9iamVjdCk6CiAgICAgZ2V0X3JhdGUgPSAoJ0dFVCcsICcvcmF0ZV9saW1pdCcsIHt9
KQotICAgIHNlYXJjaCA9ICgnR0VUJywgJy9zZWFyY2gvaXNzdWVzJywge30pCi0gICAgcHJfZGV0
YWlscyA9ICgnR0VUJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vcHVsbHMvMjMnLCB7fSkK
ICAgICByZWZfY3JlYXRlX29wZW4gPSAoCi0gICAgICAgICdQT1NUJywgJy9yZXBvcy90ZXN0LW9y
Zy90ZXN0LXJlcG8vZ2l0L3JlZnMnLCB7J3JlZic6J3JlZnMvcHJzLW9wZW4vMjMnfQorICAgICAg
ICAnUE9TVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidy
ZWZzL3Bycy1vcGVuLzQ1J30KICAgICApCiAgICAgcmVmX2NyZWF0ZV90cnVzdGVkID0gKAogICAg
ICAgICAnUE9TVCcsCiAgICAgICAgICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZz
JywKLSAgICAgICAgeydyZWYnOidyZWZzL3Bycy10cnVzdGVkLWZvci1wcmV2aWV3LzIzJ30KKyAg
ICAgICAgeydyZWYnOidyZWZzL3Bycy10cnVzdGVkLWZvci1wcmV2aWV3LzQ1J30KKyAgICApCisg
ICAgcmVmX2dldF9vcGVuID0gKAorICAgICAgICAnR0VUJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0
LXJlcG8vZ2l0L3JlZnMvcHJzLW9wZW4vNDUnLCB7fQorICAgICkKKyAgICByZWZfZ2V0X3RydXN0
ZWQgPSAoCisgICAgICAgICdHRVQnLCAnL3JlcG9zL3Rlc3Qtb3JnL3Rlc3QtcmVwby9naXQvcmVm
cy9wcnMtdHJ1c3RlZC1mb3ItcHJldmlldy80NScsIHt9CiAgICAgKQogICAgIHJlZl91cGRhdGVf
b3BlbiA9ICgKLSAgICAgICAgJ1BBVENIJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vZ2l0
L3JlZnMvcHJzLW9wZW4vMjMnLCB7fQorICAgICAgICAnUEFUQ0gnLCAnL3JlcG9zL3Rlc3Qtb3Jn
L3Rlc3QtcmVwby9naXQvcmVmcy9wcnMtb3Blbi80NScsIHt9CiAgICAgKQogICAgIHJlZl91cGRh
dGVfdHJ1c3RlZCA9ICgKLSAgICAgICAgJ1BBVENIJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJl
cG8vZ2l0L3JlZnMvcHJzLXRydXN0ZWQtZm9yLXByZXZpZXcvMjMnLCB7fQorICAgICAgICAnUEFU
Q0gnLCAnL3JlcG9zL3Rlc3Qtb3JnL3Rlc3QtcmVwby9naXQvcmVmcy9wcnMtdHJ1c3RlZC1mb3It
cHJldmlldy80NScsIHt9CisgICAgKQorICAgIHJlZl9kZWxldGVfb3BlbiA9ICgKKyAgICAgICAg
J0RFTEVURScsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzL3Bycy1vcGVuLzQ1
Jywge30KKyAgICApCisgICAgcmVmX2RlbGV0ZV90cnVzdGVkID0gKAorICAgICAgICAnREVMRVRF
JywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vZ2l0L3JlZnMvcHJzLXRydXN0ZWQtZm9yLXBy
ZXZpZXcvNDUnLCB7fQogICAgICkKICAgICBkZXBsb3ltZW50X2dldCA9ICgnR0VUJywgJy9yZXBv
cy90ZXN0LW9yZy90ZXN0LXJlcG8vZGVwbG95bWVudHMnLCB7fSkKICAgICBkZXBsb3ltZW50X2Ny
ZWF0ZSA9ICgnUE9TVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2RlcGxveW1lbnRzJywg
e30pCkBAIC0xNjgsNyArMTgzLDkgQEAgY2xhc3MgUmVzcG9uc2VzKG9iamVjdCk6CiAKIEBjb250
ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgdGVtcF9yZXBvKCk6CisgICAgb3JpZ2luYWxfZGly
ID0gb3MuZ2V0Y3dkKCkKICAgICBkaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICBv
cy5jaGRpcihkaXJlY3RvcnkpCiAKICAgICB0cnk6CiAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tf
Y2FsbChbJ2dpdCcsICdpbml0J10sIGN3ZD1kaXJlY3RvcnkpCkBAIC0xOTIsMTM1ICsyMDksNzcg
QEAgZGVmIHRlbXBfcmVwbygpOgogCiAgICAgICAgIHlpZWxkIGRpcmVjdG9yeQogICAgIGZpbmFs
bHk6CisgICAgICAgIG9zLmNoZGlyKG9yaWdpbmFsX2RpcikKICAgICAgICAgc2h1dGlsLnJtdHJl
ZSgKICAgICAgICAgICAgIGRpcmVjdG9yeSwgaWdub3JlX2Vycm9ycz1GYWxzZSwgb25lcnJvcj1o
YW5kbGVfcmVtb3ZlX3JlYWRvbmx5CiAgICAgICAgICkKIAotZGVmIHN5bmNocm9uaXplKGV4cGVj
dGVkX3RyYWZmaWMsIHJlZnM9e30pOgotICAgIGVudiA9IHsKLSAgICAgICAgJ0RFUExPWV9UT0tF
Tic6ICdjMGZmZWUnCi0gICAgfQotICAgIGVudi51cGRhdGUob3MuZW52aXJvbikKLSAgICBzZXJ2
ZXIgPSBNb2NrU2VydmVyKCh0ZXN0X2hvc3QsIDApLCBleHBlY3RlZF90cmFmZmljKQotICAgIHRl
c3RfcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzc1sxXQotICAgIHJlbW90ZV9yZWZzID0ge30K
LQotICAgIHdpdGggdGVtcF9yZXBvKCkgYXMgbG9jYWxfcmVwbywgdGVtcF9yZXBvKCkgYXMgcmVt
b3RlX3JlcG8sIHNlcnZlcjoKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKAotICAgICAg
ICAgICAgWydnaXQnLCAnY29tbWl0JywgJy0tYWxsb3ctZW1wdHknLCAnLW0nLCAnZmlyc3QnXSwK
LSAgICAgICAgICAgIGN3ZD1yZW1vdGVfcmVwbwotICAgICAgICApCi0gICAgICAgIHN1YnByb2Nl
c3MuY2hlY2tfY2FsbCgKLSAgICAgICAgICAgIFsnZ2l0JywgJ2NvbW1pdCcsICctLWFsbG93LWVt
cHR5JywgJy1tJywgJ3NlY29uZCddLAotICAgICAgICAgICAgY3dkPXJlbW90ZV9yZXBvCi0gICAg
ICAgICkKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKAotICAgICAgICAgICAgWydnaXQn
LCAncmVtb3RlJywgJ2FkZCcsICdvcmlnaW4nLCByZW1vdGVfcmVwb10sIGN3ZD1sb2NhbF9yZXBv
Ci0gICAgICAgICkKK2RlZiB1cGRhdGVfbWlycm9yX3JlZnMocHVsbF9yZXF1ZXN0LCBleHBlY3Rl
ZF90cmFmZmljKToKKyAgICBvcy5lbnZpcm9uWydHSVRIVUJfVE9LRU4nXSA9ICdjMGZmZWUnCiAK
LSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlZnMuaXRlbXMoKToKLSAgICAgICAgICAgIHN1
YnByb2Nlc3MuY2hlY2tfY2FsbCgKLSAgICAgICAgICAgICAgICBbJ2dpdCcsICd1cGRhdGUtcmVm
JywgbmFtZSwgdmFsdWVdLAotICAgICAgICAgICAgICAgIGN3ZD1yZW1vdGVfcmVwbwotICAgICAg
ICAgICAgKQotCi0gICAgICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICBzdWJq
ZWN0LAotICAgICAgICAgICAgICAgICctLWhvc3QnLAotICAgICAgICAgICAgICAgICdodHRwOi8v
e306e30nLmZvcm1hdCh0ZXN0X2hvc3QsIHRlc3RfcG9ydCksCi0gICAgICAgICAgICAgICAgJy0t
Z2l0aHViLXByb2plY3QnLAotICAgICAgICAgICAgICAgICd0ZXN0LW9yZy90ZXN0LXJlcG8nLAot
ICAgICAgICAgICAgICAgICdzeW5jaHJvbml6ZScsCi0gICAgICAgICAgICAgICAgJy0td2luZG93
JywKLSAgICAgICAgICAgICAgICAnMzAwMCcKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBj
d2Q9bG9jYWxfcmVwbywKLSAgICAgICAgICAgIGVudj1lbnYKLSAgICAgICAgKQorICAgIGdpdGh1
Yl9zZXJ2ZXIgPSBNb2NrU2VydmVyKChURVNUX0hPU1QsIDApLCBleHBlY3RlZF90cmFmZmljKQor
ICAgIGdpdGh1Yl9wb3J0ID0gZ2l0aHViX3NlcnZlci5zZXJ2ZXJfYWRkcmVzc1sxXQogCi0gICAg
ICAgIGNoaWxkLmNvbW11bmljYXRlKCkKLSAgICAgICAgbGluZXMgPSBzdWJwcm9jZXNzLmNoZWNr
X291dHB1dCgKLSAgICAgICAgICAgIFsnZ2l0JywgJ2xzLXJlbW90ZScsICdvcmlnaW4nXSwgY3dk
PWxvY2FsX3JlcG8KKyAgICBtZXRob2RfdGhyZXcgPSBGYWxzZQorICAgIHdpdGggdGVtcF9yZXBv
KCksIGdpdGh1Yl9zZXJ2ZXI6CisgICAgICAgIHByb2plY3QgPSBwcl9wcmV2aWV3LlByb2plY3Qo
CisgICAgICAgICAgICAnaHR0cDovL3t9Ont9Jy5mb3JtYXQoVEVTVF9IT1NULCBnaXRodWJfcG9y
dCksCisgICAgICAgICAgICAndGVzdC1vcmcvdGVzdC1yZXBvJywKICAgICAgICAgKQotICAgICAg
ICBmb3IgbGluZSBpbiBsaW5lcy5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKS5zcGxpdCgnXG4nKToK
LSAgICAgICAgICAgIHJldmlzaW9uLCByZWYgPSBsaW5lLnNwbGl0KCkKLQotICAgICAgICAgICAg
aWYgbm90IHJlZiBvciByZWYgaW4gKCdIRUFEJywgJ3JlZnMvaGVhZHMvbWFzdGVyJyk6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJfcHJldmll
dy51cGRhdGVfbWlycm9yX3JlZnMocHJvamVjdCwgcHVsbF9yZXF1ZXN0KQorICAgICAgICBleGNl
cHQgcHJfcHJldmlldy5HaXRIdWJSYXRlTGltaXRFeGNlcHRpb246CisgICAgICAgICAgICBtZXRo
b2RfdGhyZXcgPSBUcnVlCiAKLSAgICAgICAgICAgIHJlbW90ZV9yZWZzW3JlZl0gPSByZXZpc2lv
bgorICAgIHJldHVybiAoCisgICAgICAgIG1ldGhvZF90aHJldywKKyAgICAgICAgZ2l0aHViX3Nl
cnZlci5hY3R1YWxfdHJhZmZpYywKKyAgICApCiAKLSAgICByZXR1cm4gY2hpbGQucmV0dXJuY29k
ZSwgc2VydmVyLmFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcwogCitkZWYgZGVwbG95KHByX251
bSwgcmV2aXNpb24sIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljLCBleHBlY3RlZF9wcmV2aWV3X3Ry
YWZmaWMpOgorICAgIG9zLmVudmlyb25bJ0dJVEhVQl9UT0tFTiddID0gJ2MwZmZlZScKIAotZGVm
IGRldGVjdChldmVudCwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdf
dHJhZmZpYyk6Ci0gICAgZW52ID0gewotICAgICAgICAnREVQTE9ZX1RPS0VOJzogJ2MwZmZlZScK
LSAgICB9Ci0gICAgZW52LnVwZGF0ZShvcy5lbnZpcm9uKQotICAgIGdpdGh1Yl9zZXJ2ZXIgPSBN
b2NrU2VydmVyKCh0ZXN0X2hvc3QsIDApLCBleHBlY3RlZF9naXRodWJfdHJhZmZpYykKKyAgICBn
aXRodWJfc2VydmVyID0gTW9ja1NlcnZlcigoVEVTVF9IT1NULCAwKSwgZXhwZWN0ZWRfZ2l0aHVi
X3RyYWZmaWMpCiAgICAgZ2l0aHViX3BvcnQgPSBnaXRodWJfc2VydmVyLnNlcnZlcl9hZGRyZXNz
WzFdCi0gICAgcHJldmlld19zZXJ2ZXIgPSBNb2NrU2VydmVyKCh0ZXN0X2hvc3QsIDApLCBleHBl
Y3RlZF9wcmV2aWV3X3RyYWZmaWMpCisgICAgcHJldmlld19zZXJ2ZXIgPSBNb2NrU2VydmVyKChU
RVNUX0hPU1QsIDApLCBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMsIHJlcG9uc2VfYm9keV9pc19q
c29uPUZhbHNlKQogICAgIHByZXZpZXdfcG9ydCA9IHByZXZpZXdfc2VydmVyLnNlcnZlcl9hZGRy
ZXNzWzFdCiAKLSAgICB3aXRoIHRlbXBfcmVwbygpIGFzIHJlcG8sIGdpdGh1Yl9zZXJ2ZXIsIHBy
ZXZpZXdfc2VydmVyOgotICAgICAgICBlbnZbJ0dJVEhVQl9FVkVOVF9QQVRIJ10gPSByZXBvICsg
Jy9ldmVudC5qc29uJwotCi0gICAgICAgIHdpdGggb3BlbihlbnZbJ0dJVEhVQl9FVkVOVF9QQVRI
J10sICd3JykgYXMgaGFuZGxlOgotICAgICAgICAgICAgaGFuZGxlLndyaXRlKGpzb24uZHVtcHMo
ZXZlbnQpKQotCi0gICAgICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICBzdWJq
ZWN0LAotICAgICAgICAgICAgICAgICctLWhvc3QnLAotICAgICAgICAgICAgICAgICdodHRwOi8v
e306e30nLmZvcm1hdCh0ZXN0X2hvc3QsIGdpdGh1Yl9wb3J0KSwKLSAgICAgICAgICAgICAgICAn
LS1naXRodWItcHJvamVjdCcsCi0gICAgICAgICAgICAgICAgJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycs
Ci0gICAgICAgICAgICAgICAgJ2RldGVjdCcsCi0gICAgICAgICAgICAgICAgJy0tdGFyZ2V0JywK
LSAgICAgICAgICAgICAgICAnaHR0cDovL3t9Ont9Jy5mb3JtYXQodGVzdF9ob3N0LCBwcmV2aWV3
X3BvcnQpLAotICAgICAgICAgICAgICAgICctLXRpbWVvdXQnLAotICAgICAgICAgICAgICAgICcx
JwotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIGN3ZD1yZXBvLAotICAgICAgICAgICAgZW52
PWVudgorICAgIG1ldGhvZF90aHJldyA9IEZhbHNlCisgICAgd2l0aCBnaXRodWJfc2VydmVyLCBw
cmV2aWV3X3NlcnZlcjoKKyAgICAgICAgcHJvamVjdCA9IHByX3ByZXZpZXcuUHJvamVjdCgKKyAg
ICAgICAgICAgICdodHRwOi8ve306e30nLmZvcm1hdChURVNUX0hPU1QsIGdpdGh1Yl9wb3J0KSwK
KyAgICAgICAgICAgICd0ZXN0LW9yZy90ZXN0LXJlcG8nLAogICAgICAgICApCi0gICAgICAgIGNo
aWxkLmNvbW11bmljYXRlKCkKKyAgICAgICAgdGFyZ2V0ID0gJ2h0dHA6Ly97fTp7fScuZm9ybWF0
KFRFU1RfSE9TVCwgcHJldmlld19wb3J0KQorICAgICAgICBwdWxsX3JlcXVlc3QgPSB7J251bWJl
cic6IHByX251bX0KKyAgICAgICAgdGltZW91dCA9IDEKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcHJfcHJldmlldy5kZXBsb3kocHJvamVjdCwgdGFyZ2V0LCBwdWxsX3JlcXVlc3QsIHJldmlz
aW9uLCB0aW1lb3V0KQorICAgICAgICBleGNlcHQgKHByX3ByZXZpZXcuR2l0SHViUmF0ZUxpbWl0
RXhjZXB0aW9uLCBwcl9wcmV2aWV3LkRlcGxveW1lbnRGYWlsZWRFeGNlcHRpb24pOgorICAgICAg
ICAgICAgbWV0aG9kX3RocmV3ID0gVHJ1ZQogCiAgICAgcmV0dXJuICgKLSAgICAgICAgY2hpbGQu
cmV0dXJuY29kZSwKKyAgICAgICAgbWV0aG9kX3RocmV3LAogICAgICAgICBnaXRodWJfc2VydmVy
LmFjdHVhbF90cmFmZmljLAogICAgICAgICBwcmV2aWV3X3NlcnZlci5hY3R1YWxfdHJhZmZpYwog
ICAgICkKIAotCi1kZWYgdGVzdF9zeW5jaHJvbml6ZV96ZXJvX3Jlc3VsdHMoKToKLSAgICBleHBl
Y3RlZF90cmFmZmljID0gWwotICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5u
b19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKLSAgICAgICAgICAgIDIwMCwK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRlbXMnOiBbXSwKLSAgICAgICAgICAg
ICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAg
KSkKLSAgICBdCi0KLSAgICByZXR1cm5jb2RlLCBhY3R1YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMg
PSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFmZmljKQotCi0gICAgYXNzZXJ0IHJldHVybmNvZGUg
PT0gMAotICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3Ry
YWZmaWMpCi0KLWRlZiB0ZXN0X3N5bmNocm9uaXplX2ZhaWxfc2VhcmNoX3Rocm90dGxlZCgpOgor
ZGVmIHRlc3RfdXBkYXRlX21pcnJvcl9yZWZzX2ZhaWxfcmF0ZV9saW1pdGVkKCk6CisgICAgcHVs
bF9yZXF1ZXN0ID0geworICAgICAgICAnbnVtYmVyJzogNDUsCisgICAgICAgICdoZWFkJzogeydz
aGEnOiAnYWJjMTIzJ30sCisgICAgICAgICdsYWJlbHMnOiBbXSwKKyAgICAgICAgJ3VzZXInOiB7
J2xvZ2luJzogJ3N0ZXBoZW5tY2dydWVyJ30sCisgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24n
OiAnQ09MTEFCT1JBVE9SJywKKyAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgfQogICAg
IGV4cGVjdGVkX3RyYWZmaWMgPSBbCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgKAogICAg
ICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICdyZXNvdXJjZXMn
OiB7Ci0gICAgICAgICAgICAgICAgICAgICdzZWFyY2gnOiB7CisgICAgICAgICAgICAgICAgICAg
ICdjb3JlJzogewogICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmluZyc6IDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAnbGltaXQnOiAxMAogICAgICAgICAgICAgICAgICAgICB9CkBA
IC0zMjksNDUxICsyODgsMjgwIEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX2ZhaWxfc2VhcmNoX3Ro
cm90dGxlZCgpOgogICAgICAgICApKQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCi0KLSAg
ICBhc3NlcnQgcmV0dXJuY29kZSAhPSAwCi0gICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3Rl
ZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKLQotZGVmIHRlc3Rfc3luY2hyb25pemVfZmFpbF9p
bmNvbXBsZXRlX3Jlc3VsdHMoKToKLSAgICBleHBlY3RlZF90cmFmZmljID0gWwotICAgICAgICAo
UmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0
cy5zZWFyY2gsICgKLSAgICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAnaXRlbXMnOiBbXSwKLSAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzog
VHJ1ZQotICAgICAgICAgICAgfQotICAgICAgICApKQotICAgIF0KLQotICAgIHJldHVybmNvZGUs
IGFjdHVhbF90cmFmZmljLCByZW1vdmVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZm
aWMpCisgICAgbWV0aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVm
cygKKyAgICAgICAgcHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAg
YXNzZXJ0IHJldHVybmNvZGUgIT0gMAorICAgIGFzc2VydCBtZXRob2RfdGhyZXcKICAgICBhc3Nl
cnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCiBkZWYg
dGVzdF9zeW5jaHJvbml6ZV9pZ25vcmVfY2xvc2VkKCk6CisgICAgIyBObyBleGlzdGluZyByZWZz
LCBidXQgYSBjbG9zZWQgUFIgZXZlbnQgY29tZXMgaW4uIE5vdGhpbmcgc2hvdWxkIGhhcHBlbi4K
KyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAgICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hl
YWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAn
dXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1ZXInfSwKKyAgICAgICAgJ2F1dGhvcl9hc3Nv
Y2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xvc2VkX2F0JzogJzIwMTktMTAt
MjgnLAorICAgIH0KICAgICBleHBlY3RlZF90cmFmZmljID0gWwogICAgICAgICAoUmVxdWVzdHMu
Z2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gs
ICgKLSAgICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRl
bXMnOiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdu
dW1iZXInOiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiAnMjAxOS0xMC0yOCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5jb21w
bGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSkKKyAgICAgICAg
KFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3RlZCwgKDQwNCwge30pKSwKKyAgICAgICAgKFJlcXVlc3Rz
LmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dl
dF9vcGVuLCAoNDA0LCB7fSkpLAogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFm
ZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0
aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAg
cHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVy
bmNvZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVf
bWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3lu
Y2hyb25pemVfc3luY19jb2xsYWJvcmF0b3IoKToKK2RlZiB0ZXN0X3VwZGF0ZV9taXJyb3JfcmVm
c19jb2xsYWJvcmF0b3IoKToKKyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAgICdudW1iZXIn
OiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAgICAgJ2xhYmVs
cyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1ZXInfSwKKyAg
ICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xv
c2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVz
dHMucmVmX2dldF90cnVzdGVkLCAoNDA0LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfZ2V0X29wZW4s
ICg0MDQsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xp
bWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAot
ICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAg
IChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVl
c3RzLnNlYXJjaCwgKAotICAgICAgICAgICAgMjAwLAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2xhYmVscyc6
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5j
b21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCi0gICAg
ICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICdoZWFkJzogewotICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICApKSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAg
ICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAo
UmVxdWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpLAotICAgICAgICAoUmVxdWVz
dHMuZGVwbG95bWVudF9nZXQsICgyMDAsIHt9KSksCi0gICAgICAgIChSZXF1ZXN0cy5kZXBsb3lt
ZW50X2NyZWF0ZSwgKDIwMCwge30pKQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAg
bWV0aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYywgPSB1cGRhdGVfbWlycm9yX3JlZnMoCisgICAg
ICAgIHB1bGxfcmVxdWVzdCwgZXhwZWN0ZWRfdHJhZmZpYworICAgICkKIAotICAgIGFzc2VydCBy
ZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgbm90IG1ldGhvZF90aHJldwogICAgIGFzc2VydCBz
YW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCiAKLWRlZiB0ZXN0
X3N5bmNocm9uaXplX2lnbm9yZV9jb2xsYWJvcmF0b3JfYm90KCk6CitkZWYgdGVzdF91cGRhdGVf
bWlycm9yX3JlZnNfaWdub3JlX2NvbGxhYm9yYXRvcl9ib3QoKToKKyAgICBwdWxsX3JlcXVlc3Qg
PSB7CisgICAgICAgICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMx
MjMnfSwKKyAgICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAn
Y2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6
ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAg
ZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCi0gICAgICAgICAgICAy
MDAsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzogW10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnY2xvc2VkX2F0JzogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeyds
b2dpbic6ICdjaHJvbWl1bS13cHQtZXhwb3J0LWJvdCd9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InCi0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jl
c3VsdHMnOiBGYWxzZQotICAgICAgICAgICAgfQotICAgICAgICApKQotICAgIF0KLQotICAgIHJl
dHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVj
dGVkX3RyYWZmaWMpCi0KLSAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCi0gICAgYXNzZXJ0IHNh
bWVfbWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKLQotZGVmIHRlc3Rf
c3luY2hyb25pemVfaWdub3JlX3VudHJ1c3RlZF9jb250cmlidXRvcigpOgotICAgIGV4cGVjdGVk
X3RyYWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5yZWZfZ2V0X3RydXN0ZWQsICg0MDQsIHt9
KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAg
ICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAotICAgICAgICAgICAgMjAwLAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xhYmVscyc6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09OVFJJQlVU
T1InCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQotICAgICAgICAgICAgfQotICAgICAg
ICApKQorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF9vcGVuLCAoNDA0LCB7fSkpLAogICAgIF0K
IAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9u
aXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9
IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAgcHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFm
ZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFzc2VydCBub3Qg
bWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBh
Y3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3B1bGxfcmVxdWVz
dF9mcm9tX2ZvcmsoKToKK2RlZiB0ZXN0X3VwZGF0ZV9taXJyb3JfcmVmc19pZ25vcmVfdW50cnVz
dGVkX2NvbnRyaWJ1dG9yKCk6CisgICAgcHVsbF9yZXF1ZXN0ID0geworICAgICAgICAnbnVtYmVy
JzogNDUsCisgICAgICAgICdoZWFkJzogeydzaGEnOiAnYWJjMTIzJ30sCisgICAgICAgICdsYWJl
bHMnOiBbXSwKKyAgICAgICAgJ3VzZXInOiB7J2xvZ2luJzogJ3N0ZXBoZW5tY2dydWVyJ30sCisg
ICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09OVFJJQlVUT1InLAorICAgICAgICAnY2xv
c2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVz
dHMucmVmX2dldF90cnVzdGVkLCAoNDA0LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKLSAg
ICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRlbXMnOiBb
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXIn
OiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAg
J3VzZXInOiB7J2xvZ2luJzogJ2dyYWNlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXV0
aG9yX2Fzc29jaWF0aW9uJzogJ0NPTExBQk9SQVRPUicKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6
IEZhbHNlCi0gICAgICAgICAgICB9Ci0gICAgICAgICkpLAotICAgICAgICAoUmVxdWVzdHMucHJf
ZGV0YWlscywgKDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaGVhZCc6IHsK
LSAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAn
ZnVsbF9uYW1lJzogJ3NvbWUtb3RoZXItb3JnL3Rlc3QtcmVwbycKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCisgICAg
ICAgIChSZXF1ZXN0cy5yZWZfZ2V0X29wZW4sICg0MDQsIHt9KSksCiAgICAgXQogCi0gICAgcmV0
dXJuY29kZSwgYWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhwZWN0
ZWRfdHJhZmZpYykKKyAgICBtZXRob2RfdGhyZXcsIGFjdHVhbF90cmFmZmljID0gdXBkYXRlX21p
cnJvcl9yZWZzKAorICAgICAgICBwdWxsX3JlcXVlc3QsIGV4cGVjdGVkX3RyYWZmaWMKKyAgICAp
CiAKLSAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IG5vdCBtZXRob2RfdGhy
ZXcKICAgICBhc3NlcnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFm
ZmljKQogCi1kZWYgdGVzdF9zeW5jaHJvbml6ZV9zeW5jX3RydXN0ZWRfY29udHJpYnV0b3IoKToK
K2RlZiB0ZXN0X3VwZGF0ZV9taXJyb3JfcmVmc190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CisgICAg
cHVsbF9yZXF1ZXN0ID0geworICAgICAgICAnbnVtYmVyJzogNDUsCisgICAgICAgICdoZWFkJzog
eydzaGEnOiAnYWJjMTIzJ30sCisgICAgICAgICMgdXNlciBoZXJlIGlzIGEgY29udHJpYnV0b3Ig
KHVudHJ1c3RlZCksIGJ1dCB0aGUgaXNzdWUKKyAgICAgICAgIyBoYXMgYmVlbiBsYWJlbGxlZCBh
cyBzYWZlLgorICAgICAgICAnbGFiZWxzJzogW3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31d
LAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnSGV4Y2xlcyd9LAorICAgICAgICAnYXV0aG9y
X2Fzc29jaWF0aW9uJzogJ0NPTlRSSUJVVE9SJywKKyAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUs
CisgICAgfQogICAgIGV4cGVjdGVkX3RyYWZmaWMgPSBbCiAgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9nZXRfdHJ1
c3RlZCwgKDQwNCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMu
bm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF9vcGVuLCAoNDA0LCB7fSkpLAog
ICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAg
IChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVl
c3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgK
LSAgICAgICAgICAgIDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnaXRlbXMn
OiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdudW1i
ZXInOiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlciBoZXJlIGlzIGEgY29udHJp
YnV0b3IgKHVudHJ1c3RlZCksIGJ1dCB0aGUgaXNzdWUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICMgaGFzIGJlZW4gbGFiZWxsZWQgYXMgc2FmZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICds
YWJlbHMnOiBbeyduYW1lJzogJ3NhZmUgZm9yIHByZXZpZXcnfV0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICd1c2Vy
Jzogeydsb2dpbic6ICdIZXhjbGVzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXV0aG9y
X2Fzc29jaWF0aW9uJzogJ0NPTlRSSUJVVE9SJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFs
c2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCi0gICAgICAgIChSZXF1ZXN0cy5wcl9kZXRh
aWxzLCAoMjAwLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdoZWFkJzogewotICAg
ICAgICAgICAgICAgICAgICAncmVwbyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmdWxs
X25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICApKSwKICAgICAgICAgKFJlcXVl
c3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV90
cnVzdGVkLCAoMjAwLCB7fSkpLAotICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgy
MDAsIFtdKSksCi0gICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2NyZWF0ZSwgKDIwMCwge30p
KQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9
IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0aG9kX3RocmV3LCBhY3R1YWxf
dHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAgcHVsbF9yZXF1ZXN0LCBleHBl
Y3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFz
c2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3RlZF90
cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAogZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY19ib3Rf
d2l0aF9sYWJlbCgpOgorICAgIHB1bGxfcmVxdWVzdCA9IHsKKyAgICAgICAgJ251bWJlcic6IDQ1
LAorICAgICAgICAnaGVhZCc6IHsnc2hhJzogJ2FiYzEyMyd9LAorICAgICAgICAjIHVzZXIgaGVy
ZSBpcyBhIGJvdCB3aGljaCBpcyBub3JtYWxseSBub3QgbWlycm9yZWQsCisgICAgICAgICMgYnV0
IHRoZSBpc3N1ZSBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgorICAgICAgICAnbGFiZWxzJzog
W3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAndXNlcic6IHsnbG9naW4n
OiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlv
bic6ICdDT0xMQUJPUkFUT1InLAorICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICB9CiAg
ICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNw
b25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF90cnVzdGVkLCAoNDA0
LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCks
CisgICAgICAgIChSZXF1ZXN0cy5yZWZfZ2V0X29wZW4sICg0MDQsIHt9KSksCiAgICAgICAgIChS
ZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3Rz
LmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVz
cG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAotICAgICAgICAg
ICAgMjAwLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMgbm9y
bWFsbHkgbm90IG1pcnJvcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGlz
c3VlIGhhcyBiZWVuIGxhYmVsbGVkIGFzIHNhZmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAn
bGFiZWxzJzogW3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAotICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNl
cic6IHsnbG9naW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5jb21w
bGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSksCi0gICAgICAg
IChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICdoZWFkJzogewotICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAp
KSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAgICAg
ICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVx
dWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpLAotICAgICAgICAoUmVxdWVzdHMu
ZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCi0gICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50
X2NyZWF0ZSwgKDIwMCwge30pKQogICAgIF0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFm
ZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisgICAgbWV0
aG9kX3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAg
cHVsbF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVy
bmNvZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVf
bWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3lu
Y2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgorZGVmIHRlc3RfdXBkYXRlX21pcnJvcl9y
ZWZzX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKKyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAg
ICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAg
ICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1
ZXInfSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAg
ICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICB9CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsK
ICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAg
ICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1
ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLmdl
dF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUs
IFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9u
c2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKKyAgICAgICAg
KFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3RlZCwgKAorICAgICAgICAgICAgMjAwLAogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xhYmVscyc6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6
IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2Un
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFC
T1JBVE9SJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKKyAgICAgICAgICAgICAgICAn
b2JqZWN0JzogeydzaGEnOiAnZGVmMjM0J30sCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAot
ICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgKFJlcXVlc3RzLmdl
dF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2dldF9v
cGVuLCAoCisgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
J2hlYWQnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdyZXBvJzogewotICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCi0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJ29iamVjdCc6IHsn
c2hhJzogJ2RlZjIzNCd9LAogICAgICAgICAgICAgfQogICAgICAgICApKSwKLSAgICAgICAgKFJl
cXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRl
X29wZW4sICgyMDAsIHt9KSksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2Vz
Lm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl91cGRhdGVfdHJ1c3RlZCwgKDIwMCwg
e30pKSwKLSAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCiAg
ICAgXQotICAgIHJlZnMgPSB7Ci0gICAgICAgICdyZWZzL3B1bGwvMjMvaGVhZCc6ICdIRUFEJywK
LSAgICAgICAgJ3JlZnMvcHJzLW9wZW4vMjMnOiAnSEVBRH4nLAotICAgICAgICAncmVmcy9wcnMt
dHJ1c3RlZC1mb3ItcHJldmlldy8yMyc6ICdIRUFEficKLSAgICB9CiAKLSAgICByZXR1cm5jb2Rl
LCBhY3R1YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMgPSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFm
ZmljLCByZWZzKQorICAgIG1ldGhvZF90aHJldywgYWN0dWFsX3RyYWZmaWMgPSB1cGRhdGVfbWly
cm9yX3JlZnMoCisgICAgICAgIHB1bGxfcmVxdWVzdCwgZXhwZWN0ZWRfdHJhZmZpYworICAgICkK
IAotICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgbm90IG1ldGhvZF90aHJl
dwogICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZm
aWMpCiAKIGRlZiB0ZXN0X3N5bmNocm9uaXplX3VwZGF0ZV9tZW1iZXIoKToKKyAgICBwdWxsX3Jl
cXVlc3QgPSB7CisgICAgICAgICdudW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6
ICdhYmMxMjMnfSwKKyAgICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnamdyYWhhbSd9LAorICAgICAgICAnYXV0aG9yX2Fzc29jaWF0aW9uJzogJ01FTUJFUics
CisgICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAorICAgIH0KICAgICBleHBlY3RlZF90cmFmZmlj
ID0gWwogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0g
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAotICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0gICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKDIw
MCwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3RlZCwgKAorICAgICAgICAgICAgMjAw
LAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2xhYmVscyc6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAg
J2Nsb3NlZF9hdCc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRp
b24nOiAnTUVNQkVSJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKKyAgICAgICAgICAg
ICAgICAnb2JqZWN0JzogeydzaGEnOiAnZGVmMjM0J30sCiAgICAgICAgICAgICB9CiAgICAgICAg
ICkpLAotICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgKFJlcXVl
c3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMucmVm
X2dldF9vcGVuLCAoCisgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgJ2hlYWQnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdyZXBvJzogewotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCi0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJ29iamVj
dCc6IHsnc2hhJzogJ2RlZjIzNCd9LAogICAgICAgICAgICAgfQogICAgICAgICApKSwKLSAgICAg
ICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbeydzb21lJzogJ2RlcGxveW1lbnQn
fV0pKSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAog
ICAgICAgICAoUmVxdWVzdHMucmVmX3VwZGF0ZV9vcGVuLCAoMjAwLCB7fSkpLAorICAgICAgICAo
UmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0
cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSkKICAgICBdCi0gICAgcmVmcyA9IHsKLSAg
ICAgICAgJ3JlZnMvcHVsbC8yMy9oZWFkJzogJ0hFQUQnLAotICAgICAgICAncmVmcy9wcnMtb3Bl
bi8yMyc6ICdIRUFEficsCi0gICAgICAgICdyZWZzL3Bycy10cnVzdGVkLWZvci1wcmV2aWV3LzIz
JzogJ0hFQUR+JwotICAgIH0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF90cmFmZmljLCByZW1v
dGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMsIHJlZnMpCisgICAgbWV0aG9k
X3RocmV3LCBhY3R1YWxfdHJhZmZpYyA9IHVwZGF0ZV9taXJyb3JfcmVmcygKKyAgICAgICAgcHVs
bF9yZXF1ZXN0LCBleHBlY3RlZF90cmFmZmljCisgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNv
ZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IHNhbWVfbWVt
YmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAotZGVmIHRlc3Rfc3luY2hy
b25pemVfZGVsZXRlX2NvbGxhYm9yYXRvcigpOgotICAgIGV4cGVjdGVkX3RyYWZmaWMgPSBbCi0g
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAg
KFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAn
aXRlbXMnOiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdudW1iZXInOiAyMywKLSAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiAnMjAxOS0xMC0zMCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2UnfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnaW5j
b21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSkKLSAgICBd
Ci0gICAgcmVmcyA9IHsKLSAgICAgICAgJ3JlZnMvcHVsbC8yMy9oZWFkJzogJ0hFQUQnLAotICAg
ICAgICAncmVmcy9wcnMtb3Blbi8yMyc6ICdIRUFEficsCi0gICAgICAgICdyZWZzL3Bycy10cnVz
dGVkLWZvci1wcmV2aWV3LzIzJzogJ0hFQUR+JworZGVmIHRlc3RfdXBkYXRlX21pcnJvcl9yZWZz
X2RlbGV0ZV9jb2xsYWJvcmF0b3IoKToKKyAgICBwdWxsX3JlcXVlc3QgPSB7CisgICAgICAgICdu
dW1iZXInOiA0NSwKKyAgICAgICAgJ2hlYWQnOiB7J3NoYSc6ICdhYmMxMjMnfSwKKyAgICAgICAg
J2xhYmVscyc6IFtdLAorICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnc3RlcGhlbm1jZ3J1ZXIn
fSwKKyAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFUT1InLAorICAgICAg
ICAnY2xvc2VkX2F0JzogMjAxOS0xMC0zMCwKICAgICB9Ci0KLSAgICByZXR1cm5jb2RlLCBhY3R1
YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMgPSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFmZmljLCBy
ZWZzKQotCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAotICAgIGFzc2VydCBzYW1lX21lbWJl
cnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCi0gICAgYXNzZXJ0IGxpc3QocmVt
b3RlX3JlZnMpID09IFsncmVmcy9wdWxsLzIzL2hlYWQnXQotCi0KLWRlZiB0ZXN0X3N5bmNocm9u
aXplX2RlbGV0ZV9vbGRfcHIoKToKLSAgICAjIE5vIHB1bGwgcmVxdWVzdHMgZnJvbSB0aGUgc2Vh
cmNoLCBidXQgb25lIG91dHN0YW5kaW5nIGNsb3NlZCBQUi4KICAgICBleHBlY3RlZF90cmFmZmlj
ID0gWwogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCi0g
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKLSAgICAgICAg
KFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9nZXRfdHJ1c3Rl
ZCwgKAorICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdp
dGVtcyc6IFtdLAotICAgICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQor
ICAgICAgICAgICAgICAgICdvYmplY3QnOiB7J3NoYSc6ICdkZWYyMzQnfSwKICAgICAgICAgICAg
IH0KICAgICAgICAgKSksCi0gICAgICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAorICAg
ICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChS
ZXF1ZXN0cy5yZWZfZ2V0X29wZW4sICgKKyAgICAgICAgICAgIDIwMCwKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCi0gICAgICAgICAgICAgICAgJ2xhYmVscyc6
IFtdLAotICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiAnMjAxOS0xMC0yOCcsCi0gICAgICAg
ICAgICAgICAgJ2hlYWQnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdyZXBvJzogewotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCi0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJ29i
amVjdCc6IHsnc2hhJzogJ2RlZjIzNCd9LAogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAg
ICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAo
UmVxdWVzdHMucmVmX2RlbGV0ZV90cnVzdGVkLCAoMjA0LCBOb25lKSksCisgICAgICAgIChSZXF1
ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnJl
Zl9kZWxldGVfb3BlbiwgKDIwNCwgTm9uZSkpLAogICAgIF0KLSAgICByZWZzID0gewotICAgICAg
ICAncmVmcy9wdWxsLzIzL2hlYWQnOiAnSEVBRCcsCi0gICAgICAgICdyZWZzL3Bycy1vcGVuLzIz
JzogJ0hFQUR+JywKLSAgICAgICAgJ3JlZnMvcHJzLXRydXN0ZWQtZm9yLXByZXZpZXcvMjMnOiAn
SEVBRH4nCi0gICAgfQogCi0gICAgcmV0dXJuY29kZSwgYWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9y
ZWZzID0gc3luY2hyb25pemUoZXhwZWN0ZWRfdHJhZmZpYywgcmVmcykKLQotICAgIGFzc2VydCBy
ZXR1cm5jb2RlID09IDAKLSAgICBhc3NlcnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMs
IGFjdHVhbF90cmFmZmljKQotICAgIGFzc2VydCBsaXN0KHJlbW90ZV9yZWZzKSA9PSBbJ3JlZnMv
cHVsbC8yMy9oZWFkJ10KLQotCi1kZWYgdGVzdF9kZXRlY3RfaWdub3JlX3Vua25vd25fZW52KCk6
Ci0gICAgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMgPSBbXQotICAgIGV4cGVjdGVkX3ByZXZpZXdf
dHJhZmZpYyA9IFtdCi0gICAgZXZlbnQgPSB7Ci0gICAgICAgICdkZXBsb3ltZW50JzogewotICAg
ICAgICAgICAgJ2lkJzogMjQ2MDEsCi0gICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnZ2hvc3Rz
JywKLSAgICAgICAgICAgICdzaGEnOiAnMzIzMicKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybmNvZGUsIGFjdHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdfdHJhZmZpYyA9
IGRldGVjdCgKLSAgICAgICAgZXZlbnQsIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljLCBleHBlY3Rl
ZF9wcmV2aWV3X3RyYWZmaWMKKyAgICBtZXRob2RfdGhyZXcsIGFjdHVhbF90cmFmZmljID0gdXBk
YXRlX21pcnJvcl9yZWZzKAorICAgICAgICBwdWxsX3JlcXVlc3QsIGV4cGVjdGVkX3RyYWZmaWMK
ICAgICApCiAKLSAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCi0gICAgYXNzZXJ0IGxlbihhY3R1
YWxfZ2l0aHViX3RyYWZmaWMpID09IDAKLSAgICBhc3NlcnQgbGVuKGFjdHVhbF9wcmV2aWV3X3Ry
YWZmaWMpID09IDAKKyAgICBhc3NlcnQgbm90IG1ldGhvZF90aHJldworICAgIGFzc2VydCBzYW1l
X21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCiAKLWRlZiB0ZXN0X2Rl
dGVjdF9mYWlsX3NlYXJjaF90aHJvdHRsZWQoKToKK2RlZiB0ZXN0X2RlcGxveV9mYWlsX3JhdGVf
bGltaXRlZCgpOgogICAgIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljID0gWwogICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsICgKICAgICAgICAgICAgIDIwMCwKQEAgLTc4OCw5OSArNTc2LDEwNyBA
QCBkZWYgdGVzdF9kZXRlY3RfZmFpbF9zZWFyY2hfdGhyb3R0bGVkKCk6CiAgICAgICAgICkpCiAg
ICAgXQogICAgIGV4cGVjdGVkX3ByZXZpZXdfdHJhZmZpYyA9IFtdCi0gICAgZXZlbnQgPSB7Ci0g
ICAgICAgICdkZXBsb3ltZW50JzogewotICAgICAgICAgICAgJ2lkJzogMjQ2MDEsCi0gICAgICAg
ICAgICAnZW52aXJvbm1lbnQnOiAnd3B0LXByZXZpZXctNDUnLAotICAgICAgICAgICAgJ3NoYSc6
ICczMjMyJwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmV0dXJuY29kZSwgYWN0dWFsX2dpdGh1
Yl90cmFmZmljLCBhY3R1YWxfcHJldmlld190cmFmZmljID0gZGV0ZWN0KAotICAgICAgICBldmVu
dCwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdfdHJhZmZpYworICAg
IHByX251bSA9IDQ1CisgICAgcmV2aXNpb24gPSAiYWJjZGVmMTIzIgorICAgIG1ldGhvZF90aHJl
dywgYWN0dWFsX2dpdGh1Yl90cmFmZmljLCBhY3R1YWxfcHJldmlld190cmFmZmljID0gZGVwbG95
KAorICAgICAgICBwcl9udW0sIHJldmlzaW9uLCBleHBlY3RlZF9naXRodWJfdHJhZmZpYywgZXhw
ZWN0ZWRfcHJldmlld190cmFmZmljCiAgICAgKQogCi0gICAgYXNzZXJ0IHJldHVybmNvZGUgPT0g
MQorICAgIGFzc2VydCBtZXRob2RfdGhyZXcKICAgICBhc3NlcnQgYWN0dWFsX2dpdGh1Yl90cmFm
ZmljID09IGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljCiAgICAgYXNzZXJ0IGFjdHVhbF9wcmV2aWV3
X3RyYWZmaWMgPT0gZXhwZWN0ZWRfcHJldmlld190cmFmZmljCiAKLWRlZiB0ZXN0X2RldGVjdF9z
dWNjZXNzKCk6CitkZWYgdGVzdF9kZXBsb3lfc3VjY2VzcygpOgorICAgIHByX251bSA9IDQ1Cisg
ICAgcmV2aXNpb24gPSAnYWJjZGVmMTIzJworCiAgICAgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMg
PSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAg
ICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAorICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5k
ZXBsb3ltZW50X2NyZWF0ZSwgKDIwMCwgeworICAgICAgICAgICAgJ2lkJzogMjQ2MDEsCisgICAg
ICAgICAgICAnc2hhJzogcmV2aXNpb24sCisgICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnd3B0
LXByZXZpZXctNDUnLAorICAgICAgICB9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfc3RhdHVz
X2NyZWF0ZV9wZW5kaW5nLCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUs
IFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X3N0YXR1
c19jcmVhdGVfc3VjY2VzcywgKDIwMCwge30pKQogICAgIF0KICAgICBleHBlY3RlZF9wcmV2aWV3
X3RyYWZmaWMgPSBbCi0gICAgICAgIChSZXF1ZXN0cy5wcmV2aWV3LCAoMjAwLCAzMjMyKSkKKyAg
ICAgICAgKFJlcXVlc3RzLnByZXZpZXcsICgyMDAsIHJldmlzaW9uKSkKICAgICBdCi0gICAgZXZl
bnQgPSB7Ci0gICAgICAgICdkZXBsb3ltZW50JzogewotICAgICAgICAgICAgJ2lkJzogMjQ2MDEs
Ci0gICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnd3B0LXByZXZpZXctNDUnLAotICAgICAgICAg
ICAgJ3NoYSc6ICczMjMyJwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmV0dXJuY29kZSwgYWN0
dWFsX2dpdGh1Yl90cmFmZmljLCBhY3R1YWxfcHJldmlld190cmFmZmljID0gZGV0ZWN0KAotICAg
ICAgICBldmVudCwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdfdHJh
ZmZpYworICAgIG1ldGhvZF90aHJldywgYWN0dWFsX2dpdGh1Yl90cmFmZmljLCBhY3R1YWxfcHJl
dmlld190cmFmZmljID0gZGVwbG95KAorICAgICAgICBwcl9udW0sIHJldmlzaW9uLCBleHBlY3Rl
ZF9naXRodWJfdHJhZmZpYywgZXhwZWN0ZWRfcHJldmlld190cmFmZmljCiAgICAgKQogCi0gICAg
YXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFzc2VydCBub3QgbWV0aG9kX3RocmV3CiAgICAg
YXNzZXJ0IGFjdHVhbF9naXRodWJfdHJhZmZpYyA9PSBleHBlY3RlZF9naXRodWJfdHJhZmZpYwog
ICAgIGFzc2VydCBhY3R1YWxfcHJldmlld190cmFmZmljID09IGV4cGVjdGVkX3ByZXZpZXdfdHJh
ZmZpYwogCi1kZWYgdGVzdF9kZXRlY3RfdGltZW91dF9taXNzaW5nKCk6CitkZWYgdGVzdF9kZXBs
b3lfdGltZW91dF9taXNzaW5nKCk6CisgICAgcHJfbnVtID0gNDUKKyAgICByZXZpc2lvbiA9ICdh
YmNkZWYxMjMnCisKICAgICBleHBlY3RlZF9naXRodWJfdHJhZmZpYyA9IFsKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMu
ZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfY3JlYXRl
LCAoMjAwLCB7CisgICAgICAgICAgICAnaWQnOiAyNDYwMSwKKyAgICAgICAgICAgICdzaGEnOiBy
ZXZpc2lvbiwKKyAgICAgICAgICAgICdlbnZpcm9ubWVudCc6ICd3cHQtcHJldmlldy00NScsCisg
ICAgICAgIH0pKSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGlt
aXQpLAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9zdGF0dXNfY3JlYXRlX3BlbmRpbmcs
ICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xp
bWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfc3RhdHVzX2NyZWF0ZV9lcnJvciwg
KDIwMCwge30pKQogICAgIF0KICAgICBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMgPSBbCi0gICAg
ICAgIChSZXF1ZXN0cy5wcmV2aWV3LCAoNDA0LCB7fSkpCisgICAgICAgIChSZXF1ZXN0cy5wcmV2
aWV3LCAoNDA0LCAiIikpCiAgICAgXQotICAgIGV2ZW50ID0gewotICAgICAgICAnZGVwbG95bWVu
dCc6IHsKLSAgICAgICAgICAgICdpZCc6IDI0NjAxLAotICAgICAgICAgICAgJ2Vudmlyb25tZW50
JzogJ3dwdC1wcmV2aWV3LTQ1JywKLSAgICAgICAgICAgICdzaGEnOiAnMzIzMicKLSAgICAgICAg
fQotICAgIH0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFs
X3ByZXZpZXdfdHJhZmZpYyA9IGRldGVjdCgKLSAgICAgICAgZXZlbnQsIGV4cGVjdGVkX2dpdGh1
Yl90cmFmZmljLCBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMKKyAgICBtZXRob2RfdGhyZXcsIGFj
dHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdfdHJhZmZpYyA9IGRlcGxveSgKKyAg
ICAgICAgcHJfbnVtLCByZXZpc2lvbiwgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMsIGV4cGVjdGVk
X3ByZXZpZXdfdHJhZmZpYwogICAgICkKIAotICAgIGFzc2VydCByZXR1cm5jb2RlID09IDEKKyAg
ICBhc3NlcnQgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IGV4cGVjdGVkX2dpdGh1Yl90cmFmZmlj
ID09IGFjdHVhbF9naXRodWJfdHJhZmZpYwogICAgIHBpbmdfY291bnQgPSBsZW4oYWN0dWFsX3By
ZXZpZXdfdHJhZmZpYykKICAgICBhc3NlcnQgcGluZ19jb3VudCA+IDAKICAgICBhc3NlcnQgYWN0
dWFsX3ByZXZpZXdfdHJhZmZpYyA9PSBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMgKiBwaW5nX2Nv
dW50CiAKLWRlZiB0ZXN0X2RldGVjdF90aW1lb3V0X3dyb25nX3JldmlzaW9uKCk6CitkZWYgdGVz
dF9kZXBsb3lfdGltZW91dF93cm9uZ19yZXZpc2lvbigpOgorICAgIHByX251bSA9IDQ1CisgICAg
cmV2aXNpb24gPSAnYWJjZGVmMTIzJworCiAgICAgZXhwZWN0ZWRfZ2l0aHViX3RyYWZmaWMgPSBb
CisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAg
ICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAorICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5kZXBs
b3ltZW50X2NyZWF0ZSwgKDIwMCwgeworICAgICAgICAgICAgJ2lkJzogMjQ2MDEsCisgICAgICAg
ICAgICAnc2hhJzogcmV2aXNpb24sCisgICAgICAgICAgICAnZW52aXJvbm1lbnQnOiAnd3B0LXBy
ZXZpZXctNDUnLAorICAgICAgICB9KSksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVz
cG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfc3RhdHVzX2Ny
ZWF0ZV9wZW5kaW5nLCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X3N0YXR1c19j
cmVhdGVfZXJyb3IsICgyMDAsIHt9KSkKICAgICBdCiAgICAgZXhwZWN0ZWRfcHJldmlld190cmFm
ZmljID0gWwotICAgICAgICAoUmVxdWVzdHMucHJldmlldywgKDIwMCwgMTIzNCkpCisgICAgICAg
ICMgd3B0cHIubGl2ZSBoYXMgdGhlIHdyb25nIHJldmlzaW9uIGRlcGxveWVkCisgICAgICAgIChS
ZXF1ZXN0cy5wcmV2aWV3LCAoMjAwLCAnZ2hpamtsNDU2JykpCiAgICAgXQotICAgIGV2ZW50ID0g
ewotICAgICAgICAnZGVwbG95bWVudCc6IHsKLSAgICAgICAgICAgICdpZCc6IDI0NjAxLAotICAg
ICAgICAgICAgJ2Vudmlyb25tZW50JzogJ3dwdC1wcmV2aWV3LTQ1JywKLSAgICAgICAgICAgICdz
aGEnOiAnMzIzMicKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJldHVybmNvZGUsIGFjdHVhbF9n
aXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdfdHJhZmZpYyA9IGRldGVjdCgKLSAgICAgICAg
ZXZlbnQsIGV4cGVjdGVkX2dpdGh1Yl90cmFmZmljLCBleHBlY3RlZF9wcmV2aWV3X3RyYWZmaWMK
KyAgICBtZXRob2RfdGhyZXcsIGFjdHVhbF9naXRodWJfdHJhZmZpYywgYWN0dWFsX3ByZXZpZXdf
dHJhZmZpYyA9IGRlcGxveSgKKyAgICAgICAgcHJfbnVtLCByZXZpc2lvbiwgZXhwZWN0ZWRfZ2l0
aHViX3RyYWZmaWMsIGV4cGVjdGVkX3ByZXZpZXdfdHJhZmZpYwogICAgICkKIAotICAgIGFzc2Vy
dCByZXR1cm5jb2RlID09IDEKKyAgICBhc3NlcnQgbWV0aG9kX3RocmV3CiAgICAgYXNzZXJ0IGV4
cGVjdGVkX2dpdGh1Yl90cmFmZmljID09IGFjdHVhbF9naXRodWJfdHJhZmZpYwogICAgIHBpbmdf
Y291bnQgPSBsZW4oYWN0dWFsX3ByZXZpZXdfdHJhZmZpYykKICAgICBhc3NlcnQgcGluZ19jb3Vu
dCA+IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2U5MDY5ZWRjNjguLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS90ZXN0cy90ZXN0X2pvYnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQw
MGE1NzM2ZmM2My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9yZXNvdXJj
ZXNfdW5pdHRlc3Quc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX2ludGVncmF0aW9uX3Rlc3Quc2gKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0
LnNoCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NvbW1hbmRzLmpzb24KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2Vwb2Noc191cGRhdGUu
c2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2pvYnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL21ha2VfaG9zdHNfZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZlc3RfYnVpbGQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3JlZ2Vu
X2NlcnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9ydW5fdGMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvd2Vic2l0ZV9idWlsZC5zaApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS93ZWJzaXRlX2J1aWxkLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoCmluZGV4IGY2YjI2MzEwYWFiYy4uZmMy
NTVhZTgzZjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3dlYnNpdGVfYnVpbGQuc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoCkBA
IC0xNCw3ICsxNCw3IEBAIHJlbW90ZV91cmw9aHR0cHM6Ly8ke0RFUExPWV9UT0tFTn1AZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0LmdpdAogCiBmdW5jdGlvbiBqc29uX3Byb3BlcnR5
IHsKICAgY2F0ICR7MX0gfCBcCi0gICAgcHl0aG9uIC1jICJpbXBvcnQganNvbiwgc3lzOyBwcmlu
dCBqc29uLmxvYWQoc3lzLnN0ZGluKS5nZXQoXCIkezJ9XCIsIFwiXCIpIgorICAgIHB5dGhvbiAt
YyAiaW1wb3J0IGpzb24sIHN5czsgcHJpbnQoanNvbi5sb2FkKHN5cy5zdGRpbikuZ2V0KFwiJHsy
fVwiLCBcIlwiKSkiCiB9CiAKIGZ1bmN0aW9uIGlzX3B1bGxfcmVxdWVzdCB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci8uYmFzaHJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvLmJhc2hyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmJiZTAzYzQ4OWFhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyLy5iYXNocmMKQEAgLTAsMCArMSw0
IEBACitmdW5jdGlvbiB4dmZiX3N0YXJ0KCkgeworICAgIEdFT01FVFJZPSIkU0NSRUVOX1dJRFRI
IiJ4IiIkU0NSRUVOX0hFSUdIVCIieCIiJFNDUkVFTl9ERVBUSCIKKyAgICB4dmZiLXJ1biAtLXNl
cnZlci1hcmdzPSItc2NyZWVuIDAgJEdFT01FVFJZIC1hYyArZXh0ZW5zaW9uIFJBTkRSIiAkQAor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9kb2NrZXIvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1
YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvX19pbml0X18u
cHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBz
ZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlvbi9Eb2NrZXJmaWxlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlv
bi9Eb2NrZXJmaWxlCmluZGV4IGUwMWY5OGU0ZDRkZi4uMDFlYTBiZDk1YmY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9kb2N1bWVudGF0aW9uL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlvbi9Eb2NrZXJmaWxl
CkBAIC0xLDMgKzEsMyBAQAotRlJPTSBweXRob246Mi1zdHJldGNoCitGUk9NIHB5dGhvbjozLjgt
YnVzdGVyCiAKLVJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLS15ZXMgZ2l0
CitSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC0teWVzIGdpdCB2aXJ0dWFs
ZW52CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2RvY2tlci9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRh
dGlvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyNGIy
ZjQwOWFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2RvY3VtZW50YXRpb24vRG9j
a2VyZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQppbmRleCA2ZDM1
ZDRjMzgyNjMuLmMwNTkzN2I3M2RjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJv
bnRlbmQucHkKQEAgLTUsOCArNSw2IEBAIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGlt
cG9ydCBzeXMKIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwotCiBoZXJlID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiB3cHRfcm9vdCA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyLCBvcy5wYXJkaXIpKQogCkBAIC0zNyw3
ICszNSw3IEBAIGRlZiB3YWxrX3lhbWwocm9vdCwgdGFyZ2V0KToKICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodmFsdWUsIChkaWN0LCBsaXN0KSk6CiAgICAgICAgICAgICAgICAgcnYuZXh0ZW5k
KHdhbGtfeWFtbCh2YWx1ZSwgdGFyZ2V0KSkKICAgICBlbGlmIGlzaW5zdGFuY2Uocm9vdCwgZGlj
dCk6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhyb290KToKKyAgICAgICAg
Zm9yIGtleSwgdmFsdWUgaW4gcm9vdC5pdGVtcygpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZSh2YWx1ZSwgKGRpY3QsIGxpc3QpKToKICAgICAgICAgICAgICAgICBydi5leHRlbmQod2Fsa195
YW1sKHZhbHVlLCB0YXJnZXQpKQogICAgICAgICAgICAgZWxpZiBrZXkgPT0gdGFyZ2V0OgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9kb2NrZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTExY2JmYmI5MGQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxl
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2Nr
ZXIvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9kb2NrZXIvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9yZXRyeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvZG9ja2VyL3NlY2NvbXAuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3N0YXJ0LnNoCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvZ2l0aWdub3JlL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weQpAQCAtMSAr
MCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlz
IGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2dpdGlnbm9yZS9naXRpZ25vcmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHkKaW5kZXggMmEyNzYxNTE4
NjYzLi41MDBmZTc4MzViZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9n
aXRpZ25vcmUucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCBvcwogaW1wb3J0
IGl0ZXJ0b29scwotZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9iaW5hcnksIGl0ZXJ2YWx1ZXMsIGl0
ZXJpdGVtcworZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9iaW5hcnkKIGZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IGRlZmF1bHRkaWN0CiAKIE1ZUFkgPSBGYWxzZQpAQCAtMTU1LDcgKzE1NSwxMCBAQCBj
bGFzcyBQYXRoRmlsdGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYubGl0ZXJhbHNfZGlyID0gZGVm
YXVsdGRpY3QoZGljdCkgICMgdHlwZTogRGljdFtPcHRpb25hbFtieXRlc10sIERpY3RbYnl0ZXMs
IExpc3RbVHVwbGVbYm9vbCwgUGF0dGVybltieXRlc11dXV1dCiAgICAgICAgIHNlbGYucGF0dGVy
bnNfZmlsZSA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbVHVwbGVbYm9vbCwgUGF0dGVybltieXRl
c11dLCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bYnl0ZXNdXV1dXQogICAgICAgICBzZWxmLnBh
dHRlcm5zX2RpciA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbVHVwbGVbYm9vbCwgUGF0dGVyblti
eXRlc11dLCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bYnl0ZXNdXV1dXQotICAgICAgICBzZWxm
LmNhY2hlID0gY2FjaGUgb3Ige30gICMgdHlwZTogTXV0YWJsZU1hcHBpbmdbYnl0ZXMsIGJvb2xd
CisKKyAgICAgICAgaWYgY2FjaGUgaXMgTm9uZToKKyAgICAgICAgICAgIGNhY2hlID0ge30KKyAg
ICAgICAgc2VsZi5jYWNoZSA9IGNhY2hlICAjIHR5cGU6IE11dGFibGVNYXBwaW5nW2J5dGVzLCBi
b29sXQogCiAgICAgICAgIGlmIGV4dHJhcyBpcyBOb25lOgogICAgICAgICAgICAgZXh0cmFzID0g
W10KQEAgLTE5MSwxMyArMTk0LDEzIEBAIGNsYXNzIFBhdGhGaWx0ZXIob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBydWxlID0gY2FzdChUdXBsZVtib29sLCBQYXR0ZXJuW2J5dGVzXV0sIHJ1bGUp
CiAgICAgICAgICAgICBpZiBub3QgZGlyX29ubHk6CiAgICAgICAgICAgICAgICAgcnVsZXNfaXRl
ciA9IGl0ZXJ0b29scy5jaGFpbigKLSAgICAgICAgICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWlu
KCooaXRlcml0ZW1zKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXMoc2VsZi5saXRlcmFsc19k
aXIpKSksCi0gICAgICAgICAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbigqKGl0ZXJpdGVtcyhp
dGVtKSBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKHNlbGYubGl0ZXJhbHNfZmlsZSkpKSwKKyAgICAg
ICAgICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWluKCooaXRlbS5pdGVtcygpIGZvciBpdGVtIGlu
IHNlbGYubGl0ZXJhbHNfZGlyLnZhbHVlcygpKSksCisgICAgICAgICAgICAgICAgICAgIGl0ZXJ0
b29scy5jaGFpbigqKGl0ZW0uaXRlbXMoKSBmb3IgaXRlbSBpbiBzZWxmLmxpdGVyYWxzX2ZpbGUu
dmFsdWVzKCkpKSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXR0ZXJuc19kaXIsCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybnNfZmlsZSkgICMgdHlwZTogSXRlcmFibGVbVHVw
bGVbQW55LCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bYnl0ZXNdXV1dXQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICBydWxlc19pdGVyID0gaXRlcnRvb2xzLmNoYWluKAotICAg
ICAgICAgICAgICAgICAgICBpdGVydG9vbHMuY2hhaW4oKihpdGVyaXRlbXMoaXRlbSkgZm9yIGl0
ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLmxpdGVyYWxzX2RpcikpKSwKKyAgICAgICAgICAgICAgICAg
ICAgaXRlcnRvb2xzLmNoYWluKCooaXRlbS5pdGVtcygpIGZvciBpdGVtIGluIHNlbGYubGl0ZXJh
bHNfZGlyLnZhbHVlcygpKSksCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybnNfZGly
KQogCiAgICAgICAgICAgICBmb3IgcnVsZXMgaW4gcnVsZXNfaXRlcjoKQEAgLTI0Niw3ICsyNDks
NyBAQCBjbGFzcyBQYXRoRmlsdGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5jYWNoZVtwYXRoXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXQuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgICAgICAgICBmb3IgcnVsZV9kaXIgaW4gW05vbmUsIGRpcnBhdGhdOgorICAgICAgICAg
ICAgICAgICAgICBmb3IgcnVsZV9kaXIgaW4gW05vbmUsIGRpcnBhdGggaWYgZGlycGF0aCAhPSBi
Ii4iIGVsc2UgYiIiXToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gbGl0ZXJh
bHMuZ2V0KHJ1bGVfZGlyLCBlbXB0eSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
bHVkZSA9IGxpdGVyYWxzW3J1bGVfZGlyXVtuYW1lXQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBhbnkocnVsZS5tYXRjaChuYW1lIGlmIG5hbWVfb25seSBlbHNlIHBhdGgpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL19faW5pdF9fLnB5Cmlu
ZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2lu
aXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0
cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjMmI4MDQwMmNmZmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdu
b3JlL3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdGVzdF9naXRpZ25vcmUucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Z2l0aWdub3JlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNmNWNjZTI4ZmY3OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkK
aW5kZXggMzgyMjVlYzk1ODg2Li5kOGZiOWZjMzVlZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9s
aW50LnB5CkBAIC0xNCw2ICsxNCw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogCiBm
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSB1cmxsaWIucGFyc2UgaW1w
b3J0IHVybHNwbGl0LCB1cmxqb2luCiAKIGZyb20gLiBpbXBvcnQgZm5tYXRjaAogZnJvbSAuIGlt
cG9ydCBydWxlcwpAQCAtMjQsOSArMjUsNyBAQCBmcm9tIC4ud3B0IGltcG9ydCB0ZXN0ZmlsZXMK
IGZyb20gLi5tYW5pZmVzdC52Y3MgaW1wb3J0IHdhbGsKIAogZnJvbSAuLm1hbmlmZXN0LnNvdXJj
ZWZpbGUgaW1wb3J0IFNvdXJjZUZpbGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFj
ZV9jaGFycywgZ2V0X2FueV92YXJpYW50cwotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBl
bnN1cmVfYmluYXJ5LCBlbnN1cmVfdGV4dCwgaXRlcml0ZW1zLCBpdGVydmFsdWVzLCB3aXRoX21l
dGFjbGFzcwotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucGFyc2UgaW1wb3J0IHVybHNwbGl0LCB1cmxqb2luCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJl
X2JpbmFyeSwgZW5zdXJlX3RleHQKIAogTVlQWSA9IEZhbHNlCiBpZiBNWVBZOgpAQCAtMzI1LDcg
KzMyNCw3IEBAIGRlZiBjaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlKHJlcG9fcm9vdCwgcGF0aHMp
OgogCiAgICAgZXJyb3JzID0gW10KIAotICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gaXRlcml0
ZW1zKHRlc3RfZmlsZXMpOgorICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gdGVzdF9maWxlcy5p
dGVtcygpOgogICAgICAgICBpZiBsZW4oY29sbGlkaW5nKSA+IDE6CiAgICAgICAgICAgICBpZiBu
b3QgX2FsbF9maWxlc19lcXVhbChbb3MucGF0aC5qb2luKHJlcG9fcm9vdCwgeCkgZm9yIHggaW4g
Y29sbGlkaW5nXSk6CiAgICAgICAgICAgICAgICAgIyBPbmx5IGNvbXB1dGUgYnlfc3BlYyBpZiB0
aGVyZSBhcmUgcHJpbWEtZmFjaWUgY29sbGlzaW9ucyBiZWNhdXNlIG9mIGNvc3QKQEAgLTM0Miw3
ICszNDEsNyBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhz
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnlfc3BlY1tzcGVjXS5hZGQocGF0aCkKIAotICAgICAgICAgICAgICAgIGZvciBz
cGVjLCBzcGVjX3BhdGhzIGluIGl0ZXJpdGVtcyhieV9zcGVjKToKKyAgICAgICAgICAgICAgICBm
b3Igc3BlYywgc3BlY19wYXRocyBpbiBieV9zcGVjLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBfYWxsX2ZpbGVzX2VxdWFsKFtvcy5wYXRoLmpvaW4ocmVwb19yb290LCB4KSBm
b3IgeCBpbiBzcGVjX3BhdGhzXSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBz
cGVjX3BhdGhzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQxID0gKG5hbWUs
IHNwZWMsICIsICIuam9pbihzb3J0ZWQoc3BlY19wYXRocykpKQpAQCAtMzUxLDcgKzM1MCw3IEBA
IGRlZiBjaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlKHJlcG9fcm9vdCwgcGF0aHMpOgogCiAgICAg
Zm9yIHJ1bGVfY2xhc3MsIGQgaW4gWyhydWxlcy5DU1NDb2xsaWRpbmdSZWZOYW1lLCByZWZfZmls
ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZXMuQ1NTQ29sbGlkaW5nU3VwcG9y
dE5hbWUsIHN1cHBvcnRfZmlsZXMpXToKLSAgICAgICAgZm9yIG5hbWUsIGNvbGxpZGluZyBpbiBp
dGVyaXRlbXMoZCk6CisgICAgICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gZC5pdGVtcygpOgog
ICAgICAgICAgICAgaWYgbGVuKGNvbGxpZGluZykgPiAxOgogICAgICAgICAgICAgICAgIGlmIG5v
dCBfYWxsX2ZpbGVzX2VxdWFsKFtvcy5wYXRoLmpvaW4ocmVwb19yb290LCB4KSBmb3IgeCBpbiBj
b2xsaWRpbmddKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dDIgPSAobmFtZSwgIiwgIi5q
b2luKHNvcnRlZChjb2xsaWRpbmcpKSkKQEAgLTQ1MSw3ICs0NTAsNyBAQCBkZWYgZmlsdGVyX2ln
bm9yZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9ycyk6CiAgICAgICAgICMgd2hpY2ggZXhwbGFpbnMg
aG93IHRvIGZpeCBpdCBjb3JyZWN0bHkgYW5kIHNob3VsZG4ndCBiZSBza2lwcGVkLgogICAgICAg
ICBpZiBlcnJvcl90eXBlIGluIGRhdGEgYW5kIGVycm9yX3R5cGUgIT0gIklHTk9SRUQgUEFUSCI6
CiAgICAgICAgICAgICB3bF9maWxlcyA9IGRhdGFbZXJyb3JfdHlwZV0KLSAgICAgICAgICAgIGZv
ciBmaWxlX21hdGNoLCBhbGxvd2VkX2xpbmVzIGluIGl0ZXJpdGVtcyh3bF9maWxlcyk6CisgICAg
ICAgICAgICBmb3IgZmlsZV9tYXRjaCwgYWxsb3dlZF9saW5lcyBpbiB3bF9maWxlcy5pdGVtcygp
OgogICAgICAgICAgICAgICAgIGlmIE5vbmUgaW4gYWxsb3dlZF9saW5lcyBvciBsaW5lIGluIGFs
bG93ZWRfbGluZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaGNhc2Uo
bm9ybXBhdGgsIGZpbGVfbWF0Y2gpOgogICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFtp
XSA9IFRydWUKQEAgLTUwNyw2ICs1MDYsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9fcm9vdCwg
cGF0aCwgZik6CiAgICAgICAgIGlmIChzb3VyY2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQK
ICAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKICAgICAg
ICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3RlbnRhdGl2ZSBhbmQKKyAgICAgICAgICAg
IG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX2NyYXNodGVzdCBhbmQKICAgICAgICAgICAgIG5vdCBz
b3VyY2VfZmlsZS5zcGVjX2xpbmtzKToKICAgICAgICAgICAgIHJldHVybiBbcnVsZXMuTWlzc2lu
Z0xpbmsuZXJyb3IocGF0aCldCiAKQEAgLTY1NSw5ICs2NTUsMTkgQEAgZGVmIGNoZWNrX3BhcnNl
ZChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICAgICBpZiBpbmNvcnJlY3RfcGF0aCgidGVzdGRy
aXZlci12ZW5kb3IuanMiLCBzcmMpOgogICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5U
ZXN0ZHJpdmVyVmVuZG9yUGF0aC5lcnJvcihwYXRoKSkKIAorICAgICAgICBzY3JpcHRfcGF0aCA9
IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2NyaXB0X3BhdGggPSB1cmxzcGxpdCh1
cmxqb2luKHNvdXJjZV9maWxlLnVybCwgc3JjKSkucGF0aAorICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKKyAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIHRoZSBjb250ZW50cyBvZiBzcmMg
aXNuJ3Qgc29tZXRoaW5nIHRoYXQgbG9va3MgbGlrZSBhIFVSTCB0byBQeXRob24KKyAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgaWYgKHNjcmlwdF9wYXRoID09ICIvY29tbW9uL3JlZnRlc3Qtd2Fp
dC5qcyIgYW5kCisgICAgICAgICAgICAicmVmdGVzdC13YWl0IiBub3QgaW4gc291cmNlX2ZpbGUu
cm9vdC5hdHRyaWIuZ2V0KCJjbGFzcyIsICIiKS5zcGxpdCgpKToKKyAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQocnVsZXMuTWlzc2luZ1JlZnRlc3RXYWl0LmVycm9yKHBhdGgpKQorCiAgICAgcmV0
dXJuIGVycm9ycwogCi1jbGFzcyBBU1RDaGVjayh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkp
OgorY2xhc3MgQVNUQ2hlY2sobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICBAYWJjLmFic3Ry
YWN0cHJvcGVydHkKICAgICBkZWYgcnVsZShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBU
eXBlW3J1bGVzLlJ1bGVdCkBAIC03MzAsNyArNzQwLDcgQEAgZGVmIGNoZWNrX3NjcmlwdF9tZXRh
ZGF0YShyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgIGRvbmUgPSBGYWxzZQogICAgIGVycm9ycyA9
IFtdCiAgICAgZm9yIGlkeCwgbGluZSBpbiBlbnVtZXJhdGUoZik6Ci0gICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKGxpbmUsIGJpbmFyeV90eXBlKSwgbGluZQorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShsaW5lLCBieXRlcyksIGxpbmUKIAogICAgICAgICBtID0gbWV0YV9yZS5tYXRjaChsaW5l
KQogICAgICAgICBpZiBtOgpAQCAtOTY0LDcgKzk3NCw3IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6
CiAKIGRlZiBtYWluKCoqa3dhcmdzX3N0cik6CiAgICAgIyB0eXBlOiAoKipBbnkpIC0+IGludAot
ICAgIGt3YXJncyA9IHtlbnN1cmVfdGV4dChrZXkpOiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBp
dGVyaXRlbXMoa3dhcmdzX3N0cil9CisgICAga3dhcmdzID0ge2Vuc3VyZV90ZXh0KGtleSk6IHZh
bHVlIGZvciBrZXksIHZhbHVlIGluIGt3YXJnc19zdHIuaXRlbXMoKX0KIAogICAgIGFzc2VydCBs
b2dnZXIgaXMgbm90IE5vbmUKICAgICBpZiBrd2FyZ3MuZ2V0KCJqc29uIikgYW5kIGt3YXJncy5n
ZXQoIm1hcmtkb3duIik6CkBAIC0xMDkyLDcgKzExMDIsNyBAQCBkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1Ob25lLCBnaXRodWJfY2hlY2tzX291
dHB1dAogICAgIGlmIGVycm9yX2NvdW50IGFuZCBnaXRodWJfY2hlY2tzX291dHB1dHRlcjoKICAg
ICAgICAgZ2l0aHViX2NoZWNrc19vdXRwdXR0ZXIub3V0cHV0KCJgYGAiKQogCi0gICAgcmV0dXJu
IHN1bShpdGVydmFsdWVzKGVycm9yX2NvdW50KSkKKyAgICByZXR1cm4gc3VtKGVycm9yX2NvdW50
LnZhbHVlcygpKQogCiAKIHBhdGhfbGludHMgPSBbY2hlY2tfZmlsZV90eXBlLCBjaGVja19wYXRo
X2xlbmd0aCwgY2hlY2tfd29ya2VyX2NvbGxpc2lvbiwgY2hlY2tfYWhlbV9jb3B5LApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3J1bGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5CmluZGV4IGY2ZTIzYWVmNThhZC4uZTliYjMwYjU5Y2ZmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvcnVsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3J1bGVzLnB5CkBAIC01LDggKzUsNiBAQCBpbXBvcnQgaW5z
cGVjdAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIAotaW1wb3J0IHNpeAotCiBNWVBZID0gRmFsc2UK
IGlmIE1ZUFk6CiAgICAgIyBNWVBZIGlzIHNldCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHku
CkBAIC0xOSw3ICsxNyw3IEBAIGRlZiBjb2xsYXBzZSh0ZXh0KToKICAgICByZXR1cm4gaW5zcGVj
dC5jbGVhbmRvYyhzdHIodGV4dCkpLnJlcGxhY2UoIlxuIiwgIiAiKQogCiAKLWNsYXNzIFJ1bGUo
c2l4LndpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CitjbGFzcyBSdWxlKG1ldGFjbGFzcz1h
YmMuQUJDTWV0YSk6CiAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CiAgICAgZGVmIG5hbWUoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dApAQCAtMTk3LDYgKzE5NSwxNCBAQCBjbGFz
cyBNdWx0aXBsZVRlc3RoYXJuZXNzKFJ1bGUpOgogICAgICIiIgogCiAKK2NsYXNzIE1pc3NpbmdS
ZWZ0ZXN0V2FpdChSdWxlKToKKyAgICBuYW1lID0gIk1JU1NJTkctUkVGVEVTVFdBSVQiCisgICAg
ZGVzY3JpcHRpb24gPSAiTWlzc2luZyBgY2xhc3M9cmVmdGVzdC13YWl0YCIKKyAgICB0b19maXgg
PSAiIiIKKyAgICAgICAgZW5zdXJlIHRlc3RzIHRoYXQgaW5jbHVkZSByZWZ0ZXN0LXdhaXQuanMg
YWxzbyB1c2UgY2xhc3M9cmVmdGVzdC13YWl0IG9uIHRoZSByb290IGVsZW1lbnQuCisgICAgIiIi
CisKKwogY2xhc3MgTWlzc2luZ1Rlc3RoYXJuZXNzUmVwb3J0KFJ1bGUpOgogICAgIG5hbWUgPSAi
TUlTU0lORy1URVNUSEFSTkVTU1JFUE9SVCIKICAgICBkZXNjcmlwdGlvbiA9ICJNaXNzaW5nIGA8
c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+YCIKQEAgLTM1OSw3
ICszNjUsNyBAQCBjbGFzcyBUZW50YXRpdmVEaXJlY3RvcnlOYW1lKFJ1bGUpOgogICAgIHRvX2Zp
eCA9ICJyZW5hbWUgZGlyZWN0b3J5IHRvIGJlIGNhbGxlZCAndGVudGF0aXZlJyIKIAogCi1jbGFz
cyBSZWdleHAoc2l4LndpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CitjbGFzcyBSZWdleHAo
bWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgICBk
ZWYgcGF0dGVybihzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBieXRlcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4u
ZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL19faW5p
dF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24g
dG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2UucHkKaW5kZXggMzYw
ZjEzY2UyOTM1Li4zNmMxNjY3NmQ1MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9iYXNlLnB5CkBAIC0xLDExICsxLDEwIEBACiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNv
ZGVfbGl0ZXJhbHMKIAotZnJvbSBzaXggaW1wb3J0IGludGVnZXJfdHlwZXMsIHRleHRfdHlwZQog
CiBkZWYgY2hlY2tfZXJyb3JzKGVycm9ycyk6CiAgICAgZm9yIGUgaW4gZXJyb3JzOgogICAgICAg
ICBlcnJvcl90eXBlLCBkZXNjcmlwdGlvbiwgcGF0aCwgbGluZV9udW1iZXIgPSBlCi0gICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKGVycm9yX3R5cGUsIHRleHRfdHlwZSkKLSAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UoZGVzY3JpcHRpb24sIHRleHRfdHlwZSkKLSAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocGF0aCwgdGV4dF90eXBlKQotICAgICAgICBhc3NlcnQgbGluZV9udW1iZXIgaXMgTm9u
ZSBvciBpc2luc3RhbmNlKGxpbmVfbnVtYmVyLCBpbnRlZ2VyX3R5cGVzKQorICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShlcnJvcl90eXBlLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNl
KGRlc2NyaXB0aW9uLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHBhdGgsIHN0cikK
KyAgICAgICAgYXNzZXJ0IGxpbmVfbnVtYmVyIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShsaW5lX251
bWJlciwgaW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLXJlZi5odG1sCnNpbWlsYXJpdHkg
aW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1leHBlY3Rl
ZC5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1yZWYuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sCnNpbWlsYXJpdHkgaW5k
ZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS1leHBl
Y3RlZC5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS1yZWYu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQv
dG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3Vw
cG9ydC90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODFkYmEzNDRjYmFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L21hdGNoL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwx
NyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9y
dC90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRj
aC9zdXBwb3J0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNo
L3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBm
YjM1MjNlZTIyNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC9zdXBwb3J0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGNiMGYyOTMzOS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9tYXRjaC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2NmYTZkZGMwYjUxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL21hdGNoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJlZi5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAw
JQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtZXhwZWN0
ZWQuaHRtbApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJl
Zi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3N1
cHBvcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNo
L3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1
MjM0NjQwZWEzYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9u
b3QtbWF0Y2gvc3VwcG9ydC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvc3VwcG9y
dC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gv
dG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNo
L3Rvb2xzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGZh
NzgxODk4OWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90
LW1hdGNoL3Rvb2xzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRiYzNiYTBjYjYuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL3JlbGF0aXZlLXRlc3RoYXJuZXNzLWludGVyYWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvcmVsYXRpdmUtdGVzdGhhcm5lc3MtaW50ZXJhY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE1MGVmOTgzYTkzOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9yZWxhdGl2ZS10ZXN0aGFybmVzcy1pbnRl
cmFjdC5odG1sCkBAIC0wLDAgKzEsNSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bGluayByZWw9aGVs
cCBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMi92aXN1ZnguaHRtbCNvdmVyZmxvdy1j
bGlwcGluZyI+Cis8bWV0YSBuYW1lPWZsYWdzIGNvbnRlbnQ9aW50ZXJhY3Q+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODJhNDYwZjJjYy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvc2VsZWN0b3JzL2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvc3VwcG9ydC90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjM0NjQ5YTQ5Y2FiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC90
b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNDNkNGE1NDU0ZC4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvdG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhk
YjZiODg3ODMyYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90
b29scy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRk
MzI1MWUzNTRjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9hLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvcmVsYXRpdmUtdGVzdGhh
cm5lc3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1yZWYuaHRtbApz
aW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9y
ZWxhdGl2ZS1leHBlY3RlZC5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jl
bGF0aXZlLXJlZi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42YTgwYzFmMjBkZGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsg
cmVsPSJtYXRjaCIgaHJlZj0ic2FtZV9maWxlX3BhdGguaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvcmVmL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ0ZGE1OWE5MmNiLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L3JlZi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIz
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhp
c3RlbnRfcmVsYXRpdmUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcm9vdF9yZWxhdGl2
ZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVsYXRpdmUuaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYv
c2FtZV9maWxlX2VtcHR5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMjk5MWQ5YmU2Yy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvYS5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIy
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZDY2OWU2NTNiZi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvYS54aHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL3JlbGF0aXZlLXRlc3RoYXJuZXNzLW1hbnVhbC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL3JlbGF0aXZlLXRlc3RoYXJuZXNzLW1hbnVhbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTU2OTNiOTkwYzFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL3JlbGF0aXZlLXRlc3RoYXJuZXNzLW1hbnVhbC5o
dG1sCkBAIC0wLDAgKzEsMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzRkMTY3MzBmNzAuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYWJvdXRfYmxhbmsuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9r
ZW4uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2RlcGVu
ZGVuY3kuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50Lmlnbm9yZQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9va2F5Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRz
LnB5CmluZGV4IGJlOTU4OTBkNmZiMy4uZDg5Mjg2NmZlZDcyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVz
dF9maWxlX2xpbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKQEAgLTEsMTAgKzEs
OCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KIGZyb20gLi5s
aW50IGltcG9ydCBjaGVja19maWxlX2NvbnRlbnRzCiBmcm9tIC5iYXNlIGltcG9ydCBjaGVja19l
cnJvcnMKK2ltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc2l4CiAK
IElOVEVSRVNUSU5HX0ZJTEVfTkFNRVMgPSB7CiAgICAgInB5dGhvbiI6IFsKQEAgLTI2LDcgKzI0
LDcgQEAgSU5URVJFU1RJTkdfRklMRV9OQU1FUyA9IHsKIAogZGVmIGNoZWNrX3dpdGhfZmlsZXMo
aW5wdXRfYnl0ZXMpOgogICAgIHJldHVybiB7Ci0gICAgICAgIGZpbGVuYW1lOiAoY2hlY2tfZmls
ZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlucHV0X2J5dGVzKSksIGtpbmQp
CisgICAgICAgIGZpbGVuYW1lOiAoY2hlY2tfZmlsZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIGlv
LkJ5dGVzSU8oaW5wdXRfYnl0ZXMpKSwga2luZCkKICAgICAgICAgZm9yIChmaWxlbmFtZSwga2lu
ZCkgaW4KICAgICAgICAgKAogICAgICAgICAgICAgKG9zLnBhdGguam9pbigiaHRtbCIsIGZpbGVu
YW1lKSwga2luZCkKQEAgLTY2MCwyOCArNjU4LDYgQEAgZGVmIHRlc3RfbGF0ZV90aW1lb3V0KCk6
CiAgICAgICAgICAgICBdCiAKIAotIyBOb3RlOiBUaGlzIHRlc3QgY2hlY2tzIHRoZSBwcmludCAq
c3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBweXRob24gMykuCi0jICAgICAgIFRo
ZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVzdF9wcmludF9mdW5jdGlvbiBiZWxv
dy4KLUBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3QgcGFyc2UgcHJp
bnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKLWRlZiB0ZXN0X3ByaW50X3N0YXRlbWVudCgp
OgotICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6XG4gIHByaW50
ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQotCi0gICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywg
a2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgotICAgICAgICBjaGVja19lcnJvcnMoZXJyb3Jz
KQotCi0gICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6Ci0gICAgICAgICAgICBhc3NlcnQgZXJy
b3JzID09IFsKLSAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJBIHNlcnZlci1z
aWRlIHB5dGhvbiBzdXBwb3J0IGZpbGUgY29udGFpbnMgYSBgcHJpbnRgIHN0YXRlbWVudCIsIGZp
bGVuYW1lLCAyKSwKLSAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJBIHNlcnZl
ci1zaWRlIHB5dGhvbiBzdXBwb3J0IGZpbGUgY29udGFpbnMgYSBgcHJpbnRgIHN0YXRlbWVudCIs
IGZpbGVuYW1lLCAzKSwKLSAgICAgICAgICAgIF0KLSAgICAgICAgZWxpZiBraW5kID09ICJ3ZWIt
c3RyaWN0IjoKLSAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWwotICAgICAgICAgICAgICAg
ICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUp
LAotICAgICAgICAgICAgXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGVycm9y
cyA9PSBbXQotCi0KIGRlZiB0ZXN0X3ByaW50X2Z1bmN0aW9uKCk6CiAgICAgZXJyb3JfbWFwID0g
Y2hlY2tfd2l0aF9maWxlcyhiImRlZiBmb28oKTpcbiAgcHJpbnQoJ2Z1bmN0aW9uJylcbiIpCiAK
QEAgLTc2MCw3ICs3MzYsNyBAQCBkZWYgZmlmdGgoKToKIGRlZiB0ZXN0X29wZW5fbW9kZSgpOgog
ICAgIGZvciBtZXRob2QgaW4gWyJvcGVuIiwgImZpbGUiXToKICAgICAgICAgY29kZSA9IG9wZW5f
bW9kZV9jb2RlLmZvcm1hdChtZXRob2QpLmVuY29kZSgidXRmLTgiKQotICAgICAgICBlcnJvcnMg
PSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAidGVzdC5weSIsIHNpeC5CeXRlc0lPKGNvZGUpKQor
ICAgICAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAidGVzdC5weSIsIGlvLkJ5
dGVzSU8oY29kZSkpCiAgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCiAKICAgICAgICAgbWVz
c2FnZSA9ICgiRmlsZSBvcGVuZWQgd2l0aG91dCBwcm92aWRpbmcgYW4gZXhwbGljaXQgbW9kZSAo
bm90ZTogIiArCkBAIC03NzksNyArNzU1LDcgQEAgZGVmIHRlc3Rfb3Blbl9tb2RlKCk6CiAgICAg
ICAgICgiY3NzL2Jhci5odG1sIiwgVHJ1ZSksCiAgICAgXSkKIGRlZiB0ZXN0X2Nzc19zdXBwb3J0
X2ZpbGUoZmlsZW5hbWUsIGV4cGVjdF9lcnJvcik6Ci0gICAgZXJyb3JzID0gY2hlY2tfZmlsZV9j
b250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGIiIikpCisgICAgZXJyb3JzID0gY2hl
Y2tfZmlsZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIGlvLkJ5dGVzSU8oYiIiKSkKICAgICBjaGVj
a19lcnJvcnMoZXJyb3JzKQogCiAgICAgaWYgZXhwZWN0X2Vycm9yOgpAQCAtODAwLDcgKzc3Niw3
IEBAIGRlZiB0ZXN0X2Nzc19taXNzaW5nX2ZpbGVfaW5fY3NzKCk6CiA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8L2h0bWw+CiAiIiIKLSAg
ICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAiY3NzL2Zvby9iYXIuaHRtbCIsIHNp
eC5CeXRlc0lPKGNvZGUpKQorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJj
c3MvZm9vL2Jhci5odG1sIiwgaW8uQnl0ZXNJTyhjb2RlKSkKICAgICBjaGVja19lcnJvcnMoZXJy
b3JzKQogCiAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCkBAIC04MTIsNyArNzg4LDcgQEAgZGVmIHRl
c3RfY3NzX21pc3NpbmdfZmlsZV9pbl9jc3MoKToKIAogCiBkZWYgdGVzdF9jc3NfbWlzc2luZ19m
aWxlX21hbnVhbCgpOgotICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJjc3Mv
Zm9vL2Jhci1tYW51YWwuaHRtbCIsIHNpeC5CeXRlc0lPKGIiIikpCisgICAgZXJyb3JzID0gY2hl
Y2tfZmlsZV9jb250ZW50cygiIiwgImNzcy9mb28vYmFyLW1hbnVhbC5odG1sIiwgaW8uQnl0ZXNJ
TyhiIiIpKQogICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCiAKICAgICBhc3NlcnQgZXJyb3JzID09
IFsKQEAgLTgzMyw3ICs4MDksNyBAQCBkZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX3RlbnRhdGl2
ZSgpOgogCiAgICAgIyBUaGUgdGVudGF0aXZlIGZsYWcgY292ZXJzIHRlc3RzIHRoYXQgbWFrZSBh
c3NlcnRpb25zICdub3QgeWV0IHJlcXVpcmVkIGJ5CiAgICAgIyBhbnkgc3BlY2lmaWNhdGlvbics
IHNvIHRoZXkgbmVlZCBub3QgaGF2ZSBhIHNwZWNpZmljYXRpb24gbGluay4KLSAgICBlcnJvcnMg
PSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAiY3NzL2Zvby9iYXIudGVudGF0aXZlLmh0bWwiLCBz
aXguQnl0ZXNJTyhjb2RlKSkKKyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAi
Y3NzL2Zvby9iYXIudGVudGF0aXZlLmh0bWwiLCBpby5CeXRlc0lPKGNvZGUpKQogICAgIGFzc2Vy
dCBub3QgZXJyb3JzCiAKIApAQCAtODYxLDcgKzgzNyw3IEBAIGRlZiB0ZXN0X2Nzc19taXNzaW5n
X2ZpbGVfdGVudGF0aXZlKCk6CiAgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWJhclxuIiIiLCAo
MSwgIlVOS05PV04tVElNRU9VVC1NRVRBREFUQSIpKSwKIF0pCiBkZWYgdGVzdF9zY3JpcHRfbWV0
YWRhdGEoZmlsZW5hbWUsIGlucHV0LCBlcnJvcik6Ci0gICAgZXJyb3JzID0gY2hlY2tfZmlsZV9j
b250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlucHV0KSkKKyAgICBlcnJvcnMgPSBj
aGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFtZSwgaW8uQnl0ZXNJTyhpbnB1dCkpCiAgICAg
Y2hlY2tfZXJyb3JzKGVycm9ycykKIAogICAgIGlmIGVycm9yIGlzIG5vdCBOb25lOgpAQCAtOTAy
LDcgKzg3OCw3IEBAIGRlZiB0ZXN0X3NjcmlwdF9tZXRhZGF0YShmaWxlbmFtZSwgaW5wdXQsIGVy
cm9yKToKIGRlZiB0ZXN0X3NjcmlwdF9nbG9iYWxzX21ldGFkYXRhKGdsb2JhbHMsIGVycm9yKToK
ICAgICBmaWxlbmFtZSA9ICJmb28uYW55LmpzIgogICAgIGlucHV0ID0gYiIiIi8vIE1FVEE6IGds
b2JhbD0lc1xuIiIiICUgZ2xvYmFscwotICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMo
IiIsIGZpbGVuYW1lLCBzaXguQnl0ZXNJTyhpbnB1dCkpCisgICAgZXJyb3JzID0gY2hlY2tfZmls
ZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIGlvLkJ5dGVzSU8oaW5wdXQpKQogICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCiAKICAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKQEAgLTkzMyw3ICs5MDks
NyBAQCBkZWYgdGVzdF9zY3JpcHRfZ2xvYmFsc19tZXRhZGF0YShnbG9iYWxzLCBlcnJvcik6CiBd
KQogZGVmIHRlc3RfcHl0aG9uX21ldGFkYXRhKGlucHV0LCBlcnJvcik6CiAgICAgZmlsZW5hbWUg
PSAidGVzdC5weSIKLSAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFt
ZSwgc2l4LkJ5dGVzSU8oaW5wdXQpKQorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMo
IiIsIGZpbGVuYW1lLCBpby5CeXRlc0lPKGlucHV0KSkKICAgICBjaGVja19lcnJvcnMoZXJyb3Jz
KQogCiAgICAgaWYgZXJyb3IgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCA1NWRiYmU5MmRmYzMuLmU4OTQ5OWZlOWJlNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CkBAIC0x
LDEwICsxLDggQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCitp
bXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCiBpbXBvcnQgbW9jawotaW1wb3J0IHNp
eAogCiBmcm9tIC4uLmxvY2FscGF0aHMgaW1wb3J0IHJlcG9fcm9vdAogZnJvbSAuLiBpbXBvcnQg
bGludCBhcyBsaW50X21vZApAQCAtNTQsNyArNTIsNyBAQCBkZWYgdGVzdF9maWx0ZXJfaWdub3Jl
bGlzdF9lcnJvcnMoKToKIAogCiBkZWYgdGVzdF9wYXJzZV9pZ25vcmVsaXN0KCk6Ci0gICAgaW5w
dXRfYnVmZmVyID0gc2l4LlN0cmluZ0lPKCIiIgorICAgIGlucHV0X2J1ZmZlciA9IGlvLlN0cmlu
Z0lPKCIiIgogIyBDb21tZW50CiBDUiBBVCBFT0w6IHN2Zy9pbXBvcnQvKgogQ1IgQVQgRU9MOiBz
dHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDY3YjUxODlmYmUxMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9wYXRoX2xpbnRzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZWFjNThkNGVkNy4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2ZubWF0Y2gucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxl
cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IDUxYWVjZWE3NzEyYS4uMWNi
NmY1YjM3MjQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CkBAIC0xMCwxMSArMTAs
MTUgQEAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHki
LCAiYXRvbWljd3JpdGVzIikpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUs
ICJ0aGlyZF9wYXJ0eSIsICJhdHRycyIsICJzcmMiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImZ1bmNzaWdzIikpCiBzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJodG1sNWxpYiIpKQorc3lz
LnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiemlwcCIp
KQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAi
bW9yZS1pdGVydG9vbHMiKSkKLXN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwg
InRoaXJkX3BhcnR5IiwgInBsdWdneSIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAicGFja2FnaW5nIikpCitzeXMucGF0aC5pbnNlcnQoMCwg
b3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJwYXRobGliMiIpKQorc3lzLnBhdGgu
aW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAicGx1Z2d5IiwgInNy
YyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHki
LCAicHkiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3Bh
cnR5IiwgInB5dGVzdCIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAi
dGhpcmRfcGFydHkiLCAicHl0ZXN0IiwgInNyYyIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBh
dGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl0ZXN0LWFzeW5jaW8iKSkKIHN5cy5wYXRo
Lmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgInNpeCIpKQogc3lz
LnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAid2ViZW5j
b2RpbmdzIikpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9w
YXJ0eSIsICJoMiIpKQpAQCAtMjIsNiArMjYsMTAgQEAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBh
dGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiaHBhY2siKSkKIHN5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImh5cGVyZnJhbWUiKSkKIHN5cy5w
YXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImNlcnRpZmki
KSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5Iiwg
Imh5cGVyIikpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9w
YXJ0eSIsICJ3ZWJzb2NrZXRzIiwgInNyYyIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGgu
am9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiaW5pY29uZmlnIiwgInNyYyIpKQoraWYgc3lzLnZl
cnNpb25faW5mbyA8ICgzLCA4KToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJpbXBvcnRsaWJfbWV0YWRhdGEiKSkKIHN5cy5wYXRoLmlu
c2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgIndlYmRyaXZlciIpKQogc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihoZXJlLCAid3B0cnVubmVyIikpCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1M
UGFyc2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9YTUxQYXJzZXIucHkKaW5kZXggODBhYTNiNWI5MjBiLi40NWE4YTU0MDI5
Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5CkBAIC02
LDggKzYsNiBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSB4bWwu
cGFyc2VycyBpbXBvcnQgZXhwYXQKIGltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgZXRy
ZWUgICMgbm9xYTogTjgxMwogCi1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCi0KIE1ZUFkgPSBG
YWxzZQogaWYgTVlQWToKICAgICAjIE1ZUFkgaXMgc2V0IHRvIFRydWUgd2hlbiBydW4gdW5kZXIg
TXlweS4KQEAgLTgzLDcgKzgxLDcgQEAgY2xhc3MgWE1MUGFyc2VyKG9iamVjdCk6CiAKICAgICBk
ZWYgX3N0YXJ0KHNlbGYsIHRhZywgYXR0cmliX2luKToKICAgICAgICAgIyB0eXBlOiAoVGV4dCwg
TGlzdFtzdHJdKSAtPiBldHJlZS5FbGVtZW50Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHRh
ZywgdGV4dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0YWcsIHN0cikKICAgICAg
ICAgc2VsZi5fZmVkX2RhdGEgPSBOb25lCiAgICAgICAgIHRhZyA9IF9maXhuYW1lKHRhZykKICAg
ICAgICAgYXR0cmliID0gT3JkZXJlZERpY3QoKSAgIyB0eXBlOiBEaWN0W1VuaW9uW2J5dGVzLCBU
ZXh0XSwgVW5pb25bYnl0ZXMsIFRleHRdXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC9jYXRhbG9nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3ZDEzOTExYzBhN2IuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFs
b2cveGh0bWwuZHRkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9n
L3hodG1sLmR0ZAppbmRleCA4MDQyMzQ4MGJjNTkuLjQzMDdiMWMyYzQzMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9jYXRhbG9nL3hodG1sLmR0ZAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkCkBAIC0xLDIxMjUg
KzEsMjEyNSBAQAotPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgotPCEtLUVOVElUWSBOZXdMaW5l
ICImI3hBOyItLT4KLTwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgotPCEtLUVOVElUWSBxdW90
ICImI3gyMjsiLS0+Ci08IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4KLTwhLS1FTlRJVFkgbnVt
ICImI3gyMzsiLS0+Ci08IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0tPgotPCEtLUVOVElUWSBw
ZXJjbnQgIiYjeDI1OyItLT4KLTwhLS1FTlRJVFkgYW1wICImI3gyNjsjeDI2OyItLT4KLTwhLS1F
TlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KLTwhLS1FTlRJVFkgYXBvcyAiJiN4Mjc7Ii0tPgot
PCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Ci08IS0tRU5USVRZIHJwYXIgIiYjeDI5OyItLT4K
LTwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Ci08IS0tRU5USVRZIG1pZGFzdCAiJiN4MkE7Ii0t
PgotPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Ci08IS0tRU5USVRZIGNvbW1hICImI3gyQzsi
LS0+Ci08IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgotPCEtLUVOVElUWSBzb2wgIiYjeDJG
OyItLT4KLTwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KLTwhLS1FTlRJVFkgc2VtaSAiJiN4
M0I7Ii0tPgotPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Ci08IS0tRU5USVRZIExUICIm
I3gyNjsjeDNDOyItLT4KLTwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyItLT4K
LTwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Ci08IS0tRU5USVRZIGJuZSAiJiN4M0Q7JiN4
MjBFNTsiLS0+Ci08IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Ci08IS0tRU5USVRZIEdUICImI3gz
RTsiLS0+Ci08IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBx
dWVzdCAiJiN4M0Y7Ii0tPgotPCEtLUVOVElUWSBjb21tYXQgIiYjeDQwOyItLT4KLTwhLS1FTlRJ
VFkgbHNxYiAiJiN4NUI7Ii0tPgotPCEtLUVOVElUWSBsYnJhY2sgIiYjeDVCOyItLT4KLTwhLS1F
TlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgotPCEtLUVOVElUWSByc3FiICImI3g1RDsiLS0+Ci08IS0t
RU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgotPCEtLUVOVElUWSBIYXQgIiYjeDVFOyItLT4KLTwh
LS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Ci08IS0tRU5USVRZIFVuZGVyQmFyICImI3g1Rjsi
LS0+Ci08IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Ci08IS0tRU5USVRZIERpYWNyaXRpY2Fs
R3JhdmUgIiYjeDYwOyItLT4KLTwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyItLT4KLTwh
LS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgotPCEtLUVOVElUWSBsYnJhY2UgIiYjeDdCOyItLT4K
LTwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Ci08IS0tRU5USVRZIHZlcnQgIiYjeDdDOyIt
LT4KLTwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Ci08IS0tRU5USVRZIHJjdWIg
IiYjeDdEOyItLT4KLTwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+Ci08IS0tRU5USVRZIG5i
c3AgIiYjeEEwOyItLT4KLTwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ii0tPgot
PCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgotPCEtLUVOVElUWSBjZW50ICImI3hBMjsiLS0+
Ci08IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Ci08IS0tRU5USVRZIGN1cnJlbiAiJiN4QTQ7
Ii0tPgotPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KLTwhLS1FTlRJVFkgYnJ2YmFyICImI3hB
NjsiLS0+Ci08IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KLTwhLS1FTlRJVFkgRG90ICImI3hB
ODsiLS0+Ci08IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVEb3Qg
IiYjeEE4OyItLT4KLTwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Ci08IS0tRU5USVRZIGNvcHkg
IiYjeEE5OyItLT4KLTwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgotPCEtLUVOVElUWSBvcmRm
ICImI3hBQTsiLS0+Ci08IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+Ci08IS0tRU5USVRZIG5v
dCAiJiN4QUM7Ii0tPgotPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4KLTwhLS1FTlRJVFkgcmVn
ICImI3hBRTsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsiLS0+Ci08IS0tRU5USVRZ
IFJFRyAiJiN4QUU7Ii0tPgotPCEtLUVOVElUWSBtYWNyICImI3hBRjsiLS0+Ci08IS0tRU5USVRZ
IHN0cm5zICImI3hBRjsiLS0+Ci08IS0tRU5USVRZIGRlZyAiJiN4QjA7Ii0tPgotPCEtLUVOVElU
WSBwbHVzbW4gIiYjeEIxOyItLT4KLTwhLS1FTlRJVFkgcG0gIiYjeEIxOyItLT4KLTwhLS1FTlRJ
VFkgUGx1c01pbnVzICImI3hCMTsiLS0+Ci08IS0tRU5USVRZIHN1cDIgIiYjeEIyOyItLT4KLTwh
LS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgotPCEtLUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ii0tPgot
PCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Ci08IS0tRU5USVRZIG1pY3Jv
ICImI3hCNTsiLS0+Ci08IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4KLTwhLS1FTlRJVFkgbWlk
ZG90ICImI3hCNzsiLS0+Ci08IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ii0tPgotPCEtLUVO
VElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KLTwhLS1FTlRJVFkgY2VkaWwgIiYjeEI4OyItLT4K
LTwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgotPCEtLUVOVElUWSBzdXAxICImI3hCOTsi
LS0+Ci08IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KLTwhLS1FTlRJVFkgcmFxdW8gIiYjeEJC
OyItLT4KLTwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Ci08IS0tRU5USVRZIGZyYWMxMiAi
JiN4QkQ7Ii0tPgotPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Ci08IS0tRU5USVRZIGZyYWMz
NCAiJiN4QkU7Ii0tPgotPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyItLT4KLTwhLS1FTlRJVFkg
QWdyYXZlICImI3hDMDsiLS0+Ci08IS0tRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ii0tPgotPCEtLUVO
VElUWSBBY2lyYyAiJiN4QzI7Ii0tPgotPCEtLUVOVElUWSBBdGlsZGUgIiYjeEMzOyItLT4KLTwh
LS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgotPCEtLUVOVElUWSBBcmluZyAiJiN4QzU7Ii0tPgot
PCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgotPCEtLUVOVElUWSBBRWxpZyAiJiN4QzY7Ii0t
PgotPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KLTwhLS1FTlRJVFkgRWdyYXZlICImI3hD
ODsiLS0+Ci08IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgotPCEtLUVOVElUWSBFY2lyYyAi
JiN4Q0E7Ii0tPgotPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Ci08IS0tRU5USVRZIElncmF2
ZSAiJiN4Q0M7Ii0tPgotPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyItLT4KLTwhLS1FTlRJVFkg
SWNpcmMgIiYjeENFOyItLT4KLTwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7Ii0tPgotPCEtLUVOVElU
WSBFVEggIiYjeEQwOyItLT4KLTwhLS1FTlRJVFkgTnRpbGRlICImI3hEMTsiLS0+Ci08IS0tRU5U
SVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgotPCEtLUVOVElUWSBPYWN1dGUgIiYjeEQzOyItLT4KLTwh
LS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KLTwhLS1FTlRJVFkgT3RpbGRlICImI3hENTsiLS0+
Ci08IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KLTwhLS1FTlRJVFkgdGltZXMgIiYjeEQ3OyIt
LT4KLTwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Ci08IS0tRU5USVRZIFVncmF2ZSAiJiN4
RDk7Ii0tPgotPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KLTwhLS1FTlRJVFkgVWNpcmMg
IiYjeERCOyItLT4KLTwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgotPCEtLUVOVElUWSBZYWN1
dGUgIiYjeEREOyItLT4KLTwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyItLT4KLTwhLS1FTlRJVFkg
c3psaWcgIiYjeERGOyItLT4KLTwhLS1FTlRJVFkgYWdyYXZlICImI3hFMDsiLS0+Ci08IS0tRU5U
SVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgotPCEtLUVOVElUWSBhY2lyYyAiJiN4RTI7Ii0tPgotPCEt
LUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KLTwhLS1FTlRJVFkgYXVtbCAiJiN4RTQ7Ii0tPgot
PCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgotPCEtLUVOVElUWSBhZWxpZyAiJiN4RTY7Ii0t
PgotPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KLTwhLS1FTlRJVFkgZWdyYXZlICImI3hF
ODsiLS0+Ci08IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgotPCEtLUVOVElUWSBlY2lyYyAi
JiN4RUE7Ii0tPgotPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Ci08IS0tRU5USVRZIGlncmF2
ZSAiJiN4RUM7Ii0tPgotPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyItLT4KLTwhLS1FTlRJVFkg
aWNpcmMgIiYjeEVFOyItLT4KLTwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7Ii0tPgotPCEtLUVOVElU
WSBldGggIiYjeEYwOyItLT4KLTwhLS1FTlRJVFkgbnRpbGRlICImI3hGMTsiLS0+Ci08IS0tRU5U
SVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgotPCEtLUVOVElUWSBvYWN1dGUgIiYjeEYzOyItLT4KLTwh
LS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KLTwhLS1FTlRJVFkgb3RpbGRlICImI3hGNTsiLS0+
Ci08IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KLTwhLS1FTlRJVFkgZGl2aWRlICImI3hGNzsi
LS0+Ci08IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgotPCEtLUVOVElUWSBvc2xhc2ggIiYjeEY4
OyItLT4KLTwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Ci08IS0tRU5USVRZIHVhY3V0ZSAi
JiN4RkE7Ii0tPgotPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgotPCEtLUVOVElUWSB1dW1s
ICImI3hGQzsiLS0+Ci08IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0tPgotPCEtLUVOVElUWSB0
aG9ybiAiJiN4RkU7Ii0tPgotPCEtLUVOVElUWSB5dW1sICImI3hGRjsiLS0+Ci08IS0tRU5USVRZ
IEFtYWNyICImI3gxMDA7Ii0tPgotPCEtLUVOVElUWSBhbWFjciAiJiN4MTAxOyItLT4KLTwhLS1F
TlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgotPCEtLUVOVElUWSBhYnJldmUgIiYjeDEwMzsiLS0+
Ci08IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgotPCEtLUVOVElUWSBhb2dvbiAiJiN4MTA1
OyItLT4KLTwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgotPCEtLUVOVElUWSBjYWN1dGUg
IiYjeDEwNzsiLS0+Ci08IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0tPgotPCEtLUVOVElUWSBj
Y2lyYyAiJiN4MTA5OyItLT4KLTwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBBOyItLT4KLTwhLS1FTlRJ
VFkgY2RvdCAiJiN4MTBCOyItLT4KLTwhLS1FTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ii0tPgotPCEt
LUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Ci08IS0tRU5USVRZIERjYXJvbiAiJiN4MTBFOyIt
LT4KLTwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgotPCEtLUVOVElUWSBEc3Ryb2sgIiYj
eDExMDsiLS0+Ci08IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4KLTwhLS1FTlRJVFkgRW1h
Y3IgIiYjeDExMjsiLS0+Ci08IS0tRU5USVRZIGVtYWNyICImI3gxMTM7Ii0tPgotPCEtLUVOVElU
WSBFZG90ICImI3gxMTY7Ii0tPgotPCEtLUVOVElUWSBlZG90ICImI3gxMTc7Ii0tPgotPCEtLUVO
VElUWSBFb2dvbiAiJiN4MTE4OyItLT4KLTwhLS1FTlRJVFkgZW9nb24gIiYjeDExOTsiLS0+Ci08
IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KLTwhLS1FTlRJVFkgZWNhcm9uICImI3gxMUI7
Ii0tPgotPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KLTwhLS1FTlRJVFkgZ2NpcmMgIiYj
eDExRDsiLS0+Ci08IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4KLTwhLS1FTlRJVFkgZ2Jy
ZXZlICImI3gxMUY7Ii0tPgotPCEtLUVOVElUWSBHZG90ICImI3gxMjA7Ii0tPgotPCEtLUVOVElU
WSBnZG90ICImI3gxMjE7Ii0tPgotPCEtLUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiLS0+Ci08IS0t
RU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgotPCEtLUVOVElUWSBoY2lyYyAiJiN4MTI1OyItLT4K
LTwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgotPCEtLUVOVElUWSBoc3Ryb2sgIiYjeDEy
NzsiLS0+Ci08IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KLTwhLS1FTlRJVFkgaXRpbGRl
ICImI3gxMjk7Ii0tPgotPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyItLT4KLTwhLS1FTlRJVFkg
aW1hY3IgIiYjeDEyQjsiLS0+Ci08IS0tRU5USVRZIElvZ29uICImI3gxMkU7Ii0tPgotPCEtLUVO
VElUWSBpb2dvbiAiJiN4MTJGOyItLT4KLTwhLS1FTlRJVFkgSWRvdCAiJiN4MTMwOyItLT4KLTwh
LS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Ci08IS0tRU5USVRZIGlub2RvdCAiJiN4MTMxOyIt
LT4KLTwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Ci08IS0tRU5USVRZIGlqbGlnICImI3gx
MzM7Ii0tPgotPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KLTwhLS1FTlRJVFkgamNpcmMg
IiYjeDEzNTsiLS0+Ci08IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyItLT4KLTwhLS1FTlRJVFkg
a2NlZGlsICImI3gxMzc7Ii0tPgotPCEtLUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiLS0+Ci08IS0t
RU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KLTwhLS1FTlRJVFkgbGFjdXRlICImI3gxM0E7Ii0t
PgotPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Ci08IS0tRU5USVRZIGxjZWRpbCAiJiN4
MTNDOyItLT4KLTwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgotPCEtLUVOVElUWSBsY2Fy
b24gIiYjeDEzRTsiLS0+Ci08IS0tRU5USVRZIExtaWRvdCAiJiN4MTNGOyItLT4KLTwhLS1FTlRJ
VFkgbG1pZG90ICImI3gxNDA7Ii0tPgotPCEtLUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiLS0+Ci08
IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KLTwhLS1FTlRJVFkgTmFjdXRlICImI3gxNDM7
Ii0tPgotPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Ci08IS0tRU5USVRZIE5jZWRpbCAi
JiN4MTQ1OyItLT4KLTwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0tPgotPCEtLUVOVElUWSBO
Y2Fyb24gIiYjeDE0NzsiLS0+Ci08IS0tRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyItLT4KLTwhLS1F
TlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Ci08IS0tRU5USVRZIEVORyAiJiN4MTRBOyItLT4KLTwh
LS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgotPCEtLUVOVElUWSBPbWFjciAiJiN4MTRDOyItLT4K
LTwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Ci08IS0tRU5USVRZIE9kYmxhYyAiJiN4MTUw
OyItLT4KLTwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgotPCEtLUVOVElUWSBPRWxpZyAi
JiN4MTUyOyItLT4KLTwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+Ci08IS0tRU5USVRZIFJh
Y3V0ZSAiJiN4MTU0OyItLT4KLTwhLS1FTlRJVFkgcmFjdXRlICImI3gxNTU7Ii0tPgotPCEtLUVO
VElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Ci08IS0tRU5USVRZIHJjZWRpbCAiJiN4MTU3OyItLT4K
LTwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgotPCEtLUVOVElUWSByY2Fyb24gIiYjeDE1
OTsiLS0+Ci08IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KLTwhLS1FTlRJVFkgc2FjdXRl
ICImI3gxNUI7Ii0tPgotPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyItLT4KLTwhLS1FTlRJVFkg
c2NpcmMgIiYjeDE1RDsiLS0+Ci08IS0tRU5USVRZIFNjZWRpbCAiJiN4MTVFOyItLT4KLTwhLS1F
TlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgotPCEtLUVOVElUWSBTY2Fyb24gIiYjeDE2MDsiLS0+
Ci08IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KLTwhLS1FTlRJVFkgVGNlZGlsICImI3gx
NjI7Ii0tPgotPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Ci08IS0tRU5USVRZIFRjYXJv
biAiJiN4MTY0OyItLT4KLTwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7Ii0tPgotPCEtLUVOVElU
WSBUc3Ryb2sgIiYjeDE2NjsiLS0+Ci08IS0tRU5USVRZIHRzdHJvayAiJiN4MTY3OyItLT4KLTwh
LS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgotPCEtLUVOVElUWSB1dGlsZGUgIiYjeDE2OTsi
LS0+Ci08IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgotPCEtLUVOVElUWSB1bWFjciAiJiN4
MTZCOyItLT4KLTwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgotPCEtLUVOVElUWSB1YnJl
dmUgIiYjeDE2RDsiLS0+Ci08IS0tRU5USVRZIFVyaW5nICImI3gxNkU7Ii0tPgotPCEtLUVOVElU
WSB1cmluZyAiJiN4MTZGOyItLT4KLTwhLS1FTlRJVFkgVWRibGFjICImI3gxNzA7Ii0tPgotPCEt
LUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Ci08IS0tRU5USVRZIFVvZ29uICImI3gxNzI7Ii0t
PgotPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KLTwhLS1FTlRJVFkgV2NpcmMgIiYjeDE3
NDsiLS0+Ci08IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgotPCEtLUVOVElUWSBZY2lyYyAi
JiN4MTc2OyItLT4KLTwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+Ci08IS0tRU5USVRZIFl1
bWwgIiYjeDE3ODsiLS0+Ci08IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5OyItLT4KLTwhLS1FTlRJ
VFkgemFjdXRlICImI3gxN0E7Ii0tPgotPCEtLUVOVElUWSBaZG90ICImI3gxN0I7Ii0tPgotPCEt
LUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgotPCEtLUVOVElUWSBaY2Fyb24gIiYjeDE3RDsiLS0+
Ci08IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KLTwhLS1FTlRJVFkgZm5vZiAiJiN4MTky
OyItLT4KLTwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Ci08IS0tRU5USVRZIGdhY3V0ZSAi
JiN4MUY1OyItLT4KLTwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+Ci08IS0tRU5USVRZIGNp
cmMgIiYjeDJDNjsiLS0+Ci08IS0tRU5USVRZIGNhcm9uICImI3gyQzc7Ii0tPgotPCEtLUVOVElU
WSBIYWNlayAiJiN4MkM3OyItLT4KLTwhLS1FTlRJVFkgYnJldmUgIiYjeDJEODsiLS0+Ci08IS0t
RU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgotPCEtLUVOVElUWSBkb3QgIiYjeDJEOTsiLS0+Ci08
IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgotPCEtLUVOVElUWSByaW5nICIm
I3gyREE7Ii0tPgotPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgotPCEtLUVOVElUWSB0aWxk
ZSAiJiN4MkRDOyItLT4KLTwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyItLT4K
LTwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Ci08IS0tRU5USVRZIERpYWNyaXRpY2FsRG91
YmxlQWN1dGUgIiYjeDJERDsiLS0+Ci08IS0tRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyItLT4K
LTwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Ci08IS0tRU5USVRZIEJldGEgIiYjeDM5Mjsi
LS0+Ci08IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgotPCEtLUVOVElUWSBEZWx0YSAiJiN4
Mzk0OyItLT4KLTwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4KLTwhLS1FTlRJVFkgWmV0
YSAiJiN4Mzk2OyItLT4KLTwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0tPgotPCEtLUVOVElUWSBU
aGV0YSAiJiN4Mzk4OyItLT4KLTwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5OyItLT4KLTwhLS1FTlRJ
VFkgS2FwcGEgIiYjeDM5QTsiLS0+Ci08IS0tRU5USVRZIExhbWJkYSAiJiN4MzlCOyItLT4KLTwh
LS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Ci08IS0tRU5USVRZIE51ICImI3gzOUQ7Ii0tPgotPCEt
LUVOVElUWSBYaSAiJiN4MzlFOyItLT4KLTwhLS1FTlRJVFkgT21pY3JvbiAiJiN4MzlGOyItLT4K
LTwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Ci08IS0tRU5USVRZIFJobyAiJiN4M0ExOyItLT4K
LTwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Ci08IS0tRU5USVRZIFRhdSAiJiN4M0E0OyIt
LT4KLTwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KLTwhLS1FTlRJVFkgUGhpICImI3gz
QTY7Ii0tPgotPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Ci08IS0tRU5USVRZIFBzaSAiJiN4
M0E4OyItLT4KLTwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Ci08IS0tRU5USVRZIG9obSAi
JiN4M0E5OyItLT4KLTwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+Ci08IS0tRU5USVRZIGJl
dGEgIiYjeDNCMjsiLS0+Ci08IS0tRU5USVRZIGdhbW1hICImI3gzQjM7Ii0tPgotPCEtLUVOVElU
WSBkZWx0YSAiJiN4M0I0OyItLT4KLTwhLS1FTlRJVFkgZXBzaSAiJiN4M0I1OyItLT4KLTwhLS1F
TlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KLTwhLS1FTlRJVFkgemV0YSAiJiN4M0I2OyItLT4K
LTwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgotPCEtLUVOVElUWSB0aGV0YSAiJiN4M0I4OyIt
LT4KLTwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KLTwhLS1FTlRJVFkga2FwcGEgIiYjeDNC
QTsiLS0+Ci08IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KLTwhLS1FTlRJVFkgbXUgIiYj
eDNCQzsiLS0+Ci08IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgotPCEtLUVOVElUWSB4aSAiJiN4
M0JFOyItLT4KLTwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4KLTwhLS1FTlRJVFkgcGkg
IiYjeDNDMDsiLS0+Ci08IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4KLTwhLS1FTlRJVFkgc2ln
bWF2ICImI3gzQzI7Ii0tPgotPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyItLT4KLTwhLS1F
TlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgotPCEtLUVOVElUWSBzaWdtYSAiJiN4M0MzOyItLT4K
LTwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgotPCEtLUVOVElUWSB1cHNpICImI3gzQzU7Ii0t
PgotPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgotPCEtLUVOVElUWSBwaGkgIiYjeDND
NjsiLS0+Ci08IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KLTwhLS1FTlRJVFkgcHNpICImI3gz
Qzg7Ii0tPgotPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KLTwhLS1FTlRJVFkgdGhldGF2
ICImI3gzRDE7Ii0tPgotPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyItLT4KLTwhLS1FTlRJ
VFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Ci08IS0tRU5USVRZIFVwc2kgIiYjeDNEMjsiLS0+Ci08
IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgotPCEtLUVOVElUWSBzdHJhaWdodHBoaSAiJiN4
M0Q1OyItLT4KLTwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KLTwhLS1FTlRJVFkgdmFycGhp
ICImI3gzRDU7Ii0tPgotPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+Ci08IS0tRU5USVRZIHZh
cnBpICImI3gzRDY7Ii0tPgotPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiLS0+Ci08IS0tRU5U
SVRZIGdhbW1hZCAiJiN4M0REOyItLT4KLTwhLS1FTlRJVFkgZGlnYW1tYSAiJiN4M0REOyItLT4K
LTwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgotPCEtLUVOVElUWSB2YXJrYXBwYSAiJiN4
M0YwOyItLT4KLTwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KLTwhLS1FTlRJVFkgdmFycmhv
ICImI3gzRjE7Ii0tPgotPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyItLT4KLTwhLS1FTlRJVFkg
c3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgotPCEtLUVOVElUWSB2YXJlcHNpbG9uICImI3gz
RjU7Ii0tPgotPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KLTwhLS1FTlRJVFkgYmFja2Vw
c2lsb24gIiYjeDNGNjsiLS0+Ci08IS0tRU5USVRZIElPY3kgIiYjeDQwMTsiLS0+Ci08IS0tRU5U
SVRZIERKY3kgIiYjeDQwMjsiLS0+Ci08IS0tRU5USVRZIEdKY3kgIiYjeDQwMzsiLS0+Ci08IS0t
RU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgotPCEtLUVOVElUWSBEU2N5ICImI3g0MDU7Ii0tPgot
PCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KLTwhLS1FTlRJVFkgWUljeSAiJiN4NDA3OyIt
LT4KLTwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgotPCEtLUVOVElUWSBMSmN5ICImI3g0
MDk7Ii0tPgotPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgotPCEtLUVOVElUWSBUU0hjeSAi
JiN4NDBCOyItLT4KLTwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4KLTwhLS1FTlRJVFkgVWJy
Y3kgIiYjeDQwRTsiLS0+Ci08IS0tRU5USVRZIERaY3kgIiYjeDQwRjsiLS0+Ci08IS0tRU5USVRZ
IEFjeSAiJiN4NDEwOyItLT4KLTwhLS1FTlRJVFkgQmN5ICImI3g0MTE7Ii0tPgotPCEtLUVOVElU
WSBWY3kgIiYjeDQxMjsiLS0+Ci08IS0tRU5USVRZIEdjeSAiJiN4NDEzOyItLT4KLTwhLS1FTlRJ
VFkgRGN5ICImI3g0MTQ7Ii0tPgotPCEtLUVOVElUWSBJRWN5ICImI3g0MTU7Ii0tPgotPCEtLUVO
VElUWSBaSGN5ICImI3g0MTY7Ii0tPgotPCEtLUVOVElUWSBaY3kgIiYjeDQxNzsiLS0+Ci08IS0t
RU5USVRZIEljeSAiJiN4NDE4OyItLT4KLTwhLS1FTlRJVFkgSmN5ICImI3g0MTk7Ii0tPgotPCEt
LUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Ci08IS0tRU5USVRZIExjeSAiJiN4NDFCOyItLT4KLTwh
LS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgotPCEtLUVOVElUWSBOY3kgIiYjeDQxRDsiLS0+Ci08
IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KLTwhLS1FTlRJVFkgUGN5ICImI3g0MUY7Ii0tPgot
PCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Ci08IS0tRU5USVRZIFNjeSAiJiN4NDIxOyItLT4K
LTwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgotPCEtLUVOVElUWSBVY3kgIiYjeDQyMzsiLS0+
Ci08IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KLTwhLS1FTlRJVFkgS0hjeSAiJiN4NDI1OyIt
LT4KLTwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KLTwhLS1FTlRJVFkgQ0hjeSAiJiN4NDI3
OyItLT4KLTwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KLTwhLS1FTlRJVFkgU0hDSGN5ICIm
I3g0Mjk7Ii0tPgotPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+Ci08IS0tRU5USVRZIFlj
eSAiJiN4NDJCOyItLT4KLTwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7Ii0tPgotPCEtLUVOVElU
WSBFY3kgIiYjeDQyRDsiLS0+Ci08IS0tRU5USVRZIFlVY3kgIiYjeDQyRTsiLS0+Ci08IS0tRU5U
SVRZIFlBY3kgIiYjeDQyRjsiLS0+Ci08IS0tRU5USVRZIGFjeSAiJiN4NDMwOyItLT4KLTwhLS1F
TlRJVFkgYmN5ICImI3g0MzE7Ii0tPgotPCEtLUVOVElUWSB2Y3kgIiYjeDQzMjsiLS0+Ci08IS0t
RU5USVRZIGdjeSAiJiN4NDMzOyItLT4KLTwhLS1FTlRJVFkgZGN5ICImI3g0MzQ7Ii0tPgotPCEt
LUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgotPCEtLUVOVElUWSB6aGN5ICImI3g0MzY7Ii0tPgot
PCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Ci08IS0tRU5USVRZIGljeSAiJiN4NDM4OyItLT4K
LTwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgotPCEtLUVOVElUWSBrY3kgIiYjeDQzQTsiLS0+
Ci08IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KLTwhLS1FTlRJVFkgbWN5ICImI3g0M0M7Ii0t
PgotPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Ci08IS0tRU5USVRZIG9jeSAiJiN4NDNFOyIt
LT4KLTwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgotPCEtLUVOVElUWSByY3kgIiYjeDQ0MDsi
LS0+Ci08IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KLTwhLS1FTlRJVFkgdGN5ICImI3g0NDI7
Ii0tPgotPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Ci08IS0tRU5USVRZIGZjeSAiJiN4NDQ0
OyItLT4KLTwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KLTwhLS1FTlRJVFkgdHNjeSAiJiN4
NDQ2OyItLT4KLTwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KLTwhLS1FTlRJVFkgc2hjeSAi
JiN4NDQ4OyItLT4KLTwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0tPgotPCEtLUVOVElUWSBo
YXJkY3kgIiYjeDQ0QTsiLS0+Ci08IS0tRU5USVRZIHljeSAiJiN4NDRCOyItLT4KLTwhLS1FTlRJ
VFkgc29mdGN5ICImI3g0NEM7Ii0tPgotPCEtLUVOVElUWSBlY3kgIiYjeDQ0RDsiLS0+Ci08IS0t
RU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Ci08IS0tRU5USVRZIHlhY3kgIiYjeDQ0RjsiLS0+Ci08
IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Ci08IS0tRU5USVRZIGRqY3kgIiYjeDQ1MjsiLS0+
Ci08IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Ci08IS0tRU5USVRZIGp1a2N5ICImI3g0NTQ7
Ii0tPgotPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgotPCEtLUVOVElUWSBpdWtjeSAiJiN4
NDU2OyItLT4KLTwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KLTwhLS1FTlRJVFkganNlcmN5
ICImI3g0NTg7Ii0tPgotPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0tPgotPCEtLUVOVElUWSBu
amN5ICImI3g0NUE7Ii0tPgotPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVCOyItLT4KLTwhLS1FTlRJ
VFkga2pjeSAiJiN4NDVDOyItLT4KLTwhLS1FTlRJVFkgdWJyY3kgIiYjeDQ1RTsiLS0+Ci08IS0t
RU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Ci08IS0tRU5USVRZIGVuc3AgIiYjeDIwMDI7Ii0tPgot
PCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KLTwhLS1FTlRJVFkgZW1zcDEzICImI3gyMDA0
OyItLT4KLTwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KLTwhLS1FTlRJVFkgbnVtc3Ag
IiYjeDIwMDc7Ii0tPgotPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ii0tPgotPCEtLUVOVElU
WSB0aGluc3AgIiYjeDIwMDk7Ii0tPgotPCEtLUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ii0t
PgotPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgotPCEtLUVOVElUWSBWZXJ5VGhpblNw
YWNlICImI3gyMDBBOyItLT4KLTwhLS1FTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ii0t
PgotPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgotPCEtLUVO
VElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Ci08IS0tRU5USVRZIE5lZ2F0aXZl
TWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgotPCEtLUVOVElUWSBOZWdhdGl2ZVRoaWNrU3BhY2Ug
IiYjeDIwMEI7Ii0tPgotPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyItLT4KLTwhLS1FTlRJVFkg
endqICImI3gyMDBEOyItLT4KLTwhLS1FTlRJVFkgbHJtICImI3gyMDBFOyItLT4KLTwhLS1FTlRJ
VFkgcmxtICImI3gyMDBGOyItLT4KLTwhLS1FTlRJVFkgaHlwaGVuICImI3gyMDEwOyItLT4KLTwh
LS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Ci08IS0tRU5USVRZIG5kYXNoICImI3gyMDEzOyIt
LT4KLTwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgotPCEtLUVOVElUWSBob3JiYXIgIiYj
eDIwMTU7Ii0tPgotPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0tPgotPCEtLUVOVElUWSBW
ZXJ0ICImI3gyMDE2OyItLT4KLTwhLS1FTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ii0tPgotPCEtLUVO
VElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Ci08IS0tRU5USVRZIHJzcXVvICImI3gy
MDE5OyItLT4KLTwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4KLTwhLS1FTlRJVFkgQ2xv
c2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KLTwhLS1FTlRJVFkgbHNxdW9yICImI3gyMDFBOyIt
LT4KLTwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgotPCEtLUVOVElUWSBsZHF1byAiJiN4
MjAxQzsiLS0+Ci08IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyItLT4K
LTwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgotPCEtLUVOVElUWSByZHF1b3IgIiYjeDIw
MUQ7Ii0tPgotPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ii0tPgot
PCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgotPCEtLUVOVElUWSBiZHF1byAiJiN4MjAx
RTsiLS0+Ci08IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Ci08IS0tRU5USVRZIERhZ2dl
ciAiJiN4MjAyMTsiLS0+Ci08IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ii0tPgotPCEtLUVO
VElUWSBidWxsICImI3gyMDIyOyItLT4KLTwhLS1FTlRJVFkgYnVsbGV0ICImI3gyMDIyOyItLT4K
LTwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Ci08IS0tRU5USVRZIGhlbGxpcCAiJiN4MjAy
NjsiLS0+Ci08IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgotPCEtLUVOVElUWSBwZXJtaWwg
IiYjeDIwMzA7Ii0tPgotPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyItLT4KLTwhLS1FTlRJ
VFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgotPCEtLUVOVElUWSBQcmltZSAiJiN4MjAzMzsiLS0+Ci08
IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Ci08IS0tRU5USVRZIGJwcmltZSAiJiN4MjAz
NTsiLS0+Ci08IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+Ci08IS0tRU5USVRZIGxz
YXF1byAiJiN4MjAzOTsiLS0+Ci08IS0tRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiLS0+Ci08IS0t
RU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KLTwhLS1FTlRJVFkgT3ZlckJhciAiJiN4MjAzRTsi
LS0+Ci08IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KLTwhLS1FTlRJVFkgaHlidWxsICIm
I3gyMDQzOyItLT4KLTwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0tPgotPCEtLUVOVElUWSBi
c2VtaSAiJiN4MjA0RjsiLS0+Ci08IS0tRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiLS0+Ci08IS0t
RU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KLTwhLS1FTlRJVFkgVGhpY2tTcGFjZSAi
JiN4MjA1RjsmI3gyMDBBOyItLT4KLTwhLS1FTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiLS0+Ci08
IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgotPCEtLUVOVElUWSBhZiAiJiN4
MjA2MTsiLS0+Ci08IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyItLT4KLTwhLS1F
TlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgotPCEtLUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4MjA2
MzsiLS0+Ci08IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KLTwhLS1FTlRJVFkgZXVybyAiJiN4
MjBBQzsiLS0+Ci08IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgotPCEtLUVOVElUWSBUcmlw
bGVEb3QgIiYjeDIwREI7Ii0tPgotPCEtLUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ii0tPgotPCEt
LUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KLTwhLS1FTlRJVFkgY29tcGxleGVzICImI3gyMTAy
OyItLT4KLTwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KLTwhLS1FTlRJVFkgZ3NjciAi
JiN4MjEwQTsiLS0+Ci08IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiLS0+Ci08IS0tRU5USVRZ
IEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Ci08IS0tRU5USVRZIEhzY3IgIiYjeDIxMEI7Ii0t
PgotPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgotPCEtLUVOVElUWSBQb2luY2FyZXBsYW5l
ICImI3gyMTBDOyItLT4KLTwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ii0tPgotPCEt
LUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KLTwhLS1FTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsi
LS0+Ci08IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Ci08IS0tRU5USVRZIGhiYXIgIiYj
eDIxMEY7Ii0tPgotPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0tPgotPCEtLUVOVElUWSBo
c2xhc2ggIiYjeDIxMEY7Ii0tPgotPCEtLUVOVElUWSBJc2NyICImI3gyMTEwOyItLT4KLTwhLS1F
TlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgotPCEtLUVOVElUWSBpbWFnZSAiJiN4MjExMTsi
LS0+Ci08IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KLTwhLS1FTlRJVFkgaW1hZ3BhcnQgIiYj
eDIxMTE7Ii0tPgotPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgotPCEtLUVOVElUWSBMc2Ny
ICImI3gyMTEyOyItLT4KLTwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEyOyItLT4KLTwhLS1FTlRJ
VFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Ci08IS0tRU5USVRZIGVsbCAiJiN4MjExMzsiLS0+
Ci08IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgotPCEtLUVOVElUWSBuYXR1cmFscyAiJiN4
MjExNTsiLS0+Ci08IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+Ci08IS0tRU5USVRZIGNv
cHlzciAiJiN4MjExNzsiLS0+Ci08IS0tRU5USVRZIHdlaWVycCAiJiN4MjExODsiLS0+Ci08IS0t
RU5USVRZIHdwICImI3gyMTE4OyItLT4KLTwhLS1FTlRJVFkgUG9wZiAiJiN4MjExOTsiLS0+Ci08
IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Ci08IS0tRU5USVRZIHJhdGlvbmFscyAiJiN4
MjExQTsiLS0+Ci08IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgotPCEtLUVOVElUWSBSc2Ny
ICImI3gyMTFCOyItLT4KLTwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiLS0+Ci08IS0tRU5U
SVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgotPCEtLUVOVElUWSBSZSAiJiN4MjExQzsiLS0+Ci08IS0t
RU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KLTwhLS1FTlRJVFkgUmZyICImI3gyMTFDOyIt
LT4KLTwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgotPCEtLUVOVElUWSBSb3BmICImI3gy
MTFEOyItLT4KLTwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgotPCEtLUVOVElUWSB0cmFkZSAi
JiN4MjEyMjsiLS0+Ci08IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyItLT4KLTwhLS1FTlRJVFkg
aW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgotPCEtLUVOVElUWSBab3BmICImI3gyMTI0OyItLT4KLTwh
LS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KLTwhLS1FTlRJVFkgWmZyICImI3gyMTI4OyItLT4K
LTwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KLTwhLS1FTlRJVFkgaWlvdGEgIiYjeDIx
Mjk7Ii0tPgotPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgotPCEtLUVOVElUWSBCZXJu
b3VsbGlzICImI3gyMTJDOyItLT4KLTwhLS1FTlRJVFkgQnNjciAiJiN4MjEyQzsiLS0+Ci08IS0t
RU5USVRZIENmciAiJiN4MjEyRDsiLS0+Ci08IS0tRU5USVRZIENheWxleXMgIiYjeDIxMkQ7Ii0t
PgotPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KLTwhLS1FTlRJVFkgRXNjciAiJiN4MjEz
MDsiLS0+Ci08IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyItLT4KLTwhLS1FTlRJVFkg
RnNjciAiJiN4MjEzMTsiLS0+Ci08IS0tRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ii0tPgot
PCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgotPCEtLUVOVElUWSBNZWxsaW50cmYgIiYj
eDIxMzM7Ii0tPgotPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4KLTwhLS1FTlRJVFkgb3Jk
ZXIgIiYjeDIxMzQ7Ii0tPgotPCEtLUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyItLT4KLTwhLS1F
TlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Ci08IS0tRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7Ii0t
PgotPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Ci08IS0tRU5USVRZIGJldGggIiYjeDIx
MzY7Ii0tPgotPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Ci08IS0tRU5USVRZIGRhbGV0
aCAiJiN4MjEzODsiLS0+Ci08IS0tRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1
OyItLT4KLTwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgotPCEtLUVOVElUWSBEaWZmZXJlbnRp
YWxEICImI3gyMTQ2OyItLT4KLTwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7Ii0tPgotPCEtLUVOVElU
WSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgotPCEtLUVOVElUWSBleHBvbmVudGlhbGUgIiYj
eDIxNDc7Ii0tPgotPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Ci08IS0tRU5USVRZIEltYWdp
bmFyeUkgIiYjeDIxNDg7Ii0tPgotPCEtLUVOVElUWSBpaSAiJiN4MjE0ODsiLS0+Ci08IS0tRU5U
SVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Ci08IS0tRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsiLS0+
Ci08IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Ci08IS0tRU5USVRZIGZyYWMyNSAiJiN4
MjE1NjsiLS0+Ci08IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+Ci08IS0tRU5USVRZIGZy
YWM0NSAiJiN4MjE1ODsiLS0+Ci08IS0tRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiLS0+Ci08IS0t
RU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Ci08IS0tRU5USVRZIGZyYWMxOCAiJiN4MjE1Qjsi
LS0+Ci08IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Ci08IS0tRU5USVRZIGZyYWM1OCAi
JiN4MjE1RDsiLS0+Ci08IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiLS0+Ci08IS0tRU5USVRZ
IGxhcnIgIiYjeDIxOTA7Ii0tPgotPCEtLUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ii0tPgot
PCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgotPCEtLUVOVElUWSBzbGFyciAiJiN4
MjE5MDsiLS0+Ci08IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyItLT4KLTwhLS1F
TlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Ci08IS0tRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ii0t
PgotPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KLTwhLS1FTlRJVFkgU2hvcnRVcEFy
cm93ICImI3gyMTkxOyItLT4KLTwhLS1FTlRJVFkgcmFyciAiJiN4MjE5MjsiLS0+Ci08IS0tRU5U
SVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgotPCEtLUVOVElUWSBSaWdodEFycm93ICImI3gy
MTkyOyItLT4KLTwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgotPCEtLUVOVElUWSBTaG9y
dFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgotPCEtLUVOVElUWSBkYXJyICImI3gyMTkzOyItLT4K
LTwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KLTwhLS1FTlRJVFkgRG93bkFycm93
ICImI3gyMTkzOyItLT4KLTwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ii0tPgot
PCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KLTwhLS1FTlRJVFkgbGVmdHJpZ2h0YXJyb3cg
IiYjeDIxOTQ7Ii0tPgotPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiLS0+Ci08
IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgotPCEtLUVOVElUWSB1cGRvd25hcnJvdyAiJiN4
MjE5NTsiLS0+Ci08IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyItLT4KLTwhLS1FTlRJ
VFkgbndhcnIgIiYjeDIxOTY7Ii0tPgotPCEtLUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4MjE5
NjsiLS0+Ci08IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgotPCEtLUVOVElUWSBuZWFy
ciAiJiN4MjE5NzsiLS0+Ci08IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5NzsiLS0+
Ci08IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgotPCEtLUVOVElUWSBzZWFyciAiJiN4
MjE5ODsiLS0+Ci08IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0tPgotPCEtLUVOVElUWSBM
b3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgotPCEtLUVOVElUWSBzd2FyciAiJiN4MjE5OTsi
LS0+Ci08IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgotPCEtLUVOVElUWSBMb3dlckxl
ZnRBcnJvdyAiJiN4MjE5OTsiLS0+Ci08IS0tRU5USVRZIG5sYXJyICImI3gyMTlBOyItLT4KLTwh
LS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Ci08IS0tRU5USVRZIG5yYXJyICImI3gy
MTlCOyItLT4KLTwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ii0tPgotPCEtLUVOVElU
WSByYXJydyAiJiN4MjE5RDsiLS0+Ci08IS0tRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjE5
RDsiLS0+Ci08IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ii0tPgotPCEtLUVOVElU
WSBMYXJyICImI3gyMTlFOyItLT4KLTwhLS1FTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4MjE5
RTsiLS0+Ci08IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgotPCEtLUVOVElUWSBSYXJyICIm
I3gyMUEwOyItLT4KLTwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ii0tPgot
PCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KLTwhLS1FTlRJVFkgbGFycnRsICImI3gyMUEy
OyItLT4KLTwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiLS0+Ci08IS0tRU5USVRZ
IHJhcnJ0bCAiJiN4MjFBMzsiLS0+Ci08IS0tRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gyMUEz
OyItLT4KLTwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyItLT4KLTwhLS1FTlRJVFkg
bWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Ci08IS0tRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIxQTU7
Ii0tPgotPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Ci08IS0tRU5USVRZIG1hcCAi
JiN4MjFBNjsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ii0tPgotPCEt
LUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgotPCEtLUVOVElUWSBEb3duVGVlQXJyb3cgIiYj
eDIxQTc7Ii0tPgotPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyItLT4KLTwhLS1FTlRJ
VFkgbGFycmhrICImI3gyMUE5OyItLT4KLTwhLS1FTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFB
OTsiLS0+Ci08IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Ci08IS0tRU5USVRZIGhvb2ty
aWdodGFycm93ICImI3gyMUFBOyItLT4KLTwhLS1FTlRJVFkgbGFycmxwICImI3gyMUFCOyItLT4K
LTwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Ci08IS0tRU5USVRZIHJhcnJs
cCAiJiN4MjFBQzsiLS0+Ci08IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyItLT4K
LTwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgotPCEtLUVOVElUWSBsZWZ0cmlnaHRzcXVp
Z2Fycm93ICImI3gyMUFEOyItLT4KLTwhLS1FTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ii0tPgotPCEt
LUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgotPCEtLUVOVElUWSBsc2ggIiYj
eDIxQjA7Ii0tPgotPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgotPCEtLUVOVElUWSByc2gg
IiYjeDIxQjE7Ii0tPgotPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0tPgotPCEtLUVOVElUWSBs
ZHNoICImI3gyMUIyOyItLT4KLTwhLS1FTlRJVFkgcmRzaCAiJiN4MjFCMzsiLS0+Ci08IS0tRU5U
SVRZIGNyYXJyICImI3gyMUI1OyItLT4KLTwhLS1FTlRJVFkgY3VsYXJyICImI3gyMUI2OyItLT4K
LTwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgotPCEtLUVOVElUWSBjdXJh
cnIgIiYjeDIxQjc7Ii0tPgotPCEtLUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7Ii0t
PgotPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWFycm93
bGVmdCAiJiN4MjFCQTsiLS0+Ci08IS0tRU5USVRZIG9yYXJyICImI3gyMUJCOyItLT4KLTwhLS1F
TlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Ci08IS0tRU5USVRZIGxoYXJ1ICIm
I3gyMUJDOyItLT4KLTwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiLS0+Ci08IS0tRU5U
SVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgotPCEtLUVOVElUWSBsaGFyZCAiJiN4MjFC
RDsiLS0+Ci08IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiLS0+Ci08IS0tRU5U
SVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KLTwhLS1FTlRJVFkgdWhhcnIgIiYjeDIx
QkU7Ii0tPgotPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiLS0+Ci08IS0tRU5U
SVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgotPCEtLUVOVElUWSB1aGFybCAiJiN4MjFC
RjsiLS0+Ci08IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ii0tPgotPCEtLUVOVElU
WSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgotPCEtLUVOVElUWSByaGFydSAiJiN4MjFDMDsi
LS0+Ci08IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4KLTwhLS1FTlRJVFkgcmln
aHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgotPCEtLUVOVElUWSByaGFyZCAiJiN4MjFDMTsiLS0+
Ci08IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0tPgotPCEtLUVOVElUWSBE
b3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgotPCEtLUVOVElUWSBkaGFyciAiJiN4MjFDMjsi
LS0+Ci08IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiLS0+Ci08IS0tRU5USVRZ
IGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgotPCEtLUVOVElUWSBkaGFybCAiJiN4MjFD
MzsiLS0+Ci08IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyItLT4KLTwhLS1FTlRJ
VFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KLTwhLS1FTlRJVFkgcmxhcnIgIiYjeDIx
QzQ7Ii0tPgotPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ii0tPgotPCEtLUVO
VElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KLTwhLS1FTlRJVFkgdWRhcnIg
IiYjeDIxQzU7Ii0tPgotPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyItLT4K
LTwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgotPCEtLUVOVElUWSBsZWZ0cmlnaHRhcnJv
d3MgIiYjeDIxQzY7Ii0tPgotPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2
OyItLT4KLTwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgotPCEtLUVOVElUWSBsZWZ0bGVm
dGFycm93cyAiJiN4MjFDNzsiLS0+Ci08IS0tRU5USVRZIHV1YXJyICImI3gyMUM4OyItLT4KLTwh
LS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Ci08IS0tRU5USVRZIHJyYXJyICImI3gy
MUM5OyItLT4KLTwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiLS0+Ci08IS0t
RU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KLTwhLS1FTlRJVFkgZG93bmRvd25hcnJvd3MgIiYj
eDIxQ0E7Ii0tPgotPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+Ci08IS0tRU5USVRZIFJl
dmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Ci08IS0tRU5USVRZIGxlZnRyaWdodGhhcnBv
b25zICImI3gyMUNCOyItLT4KLTwhLS1FTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ii0tPgotPCEtLUVO
VElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Ci08IS0tRU5USVRZIEVxdWlsaWJy
aXVtICImI3gyMUNDOyItLT4KLTwhLS1FTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ii0tPgotPCEtLUVO
VElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KLTwhLS1FTlRJVFkgbmhBcnIgIiYjeDIxQ0U7
Ii0tPgotPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ii0tPgotPCEtLUVOVElU
WSBuckFyciAiJiN4MjFDRjsiLS0+Ci08IS0tRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNGOyIt
LT4KLTwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Ci08IS0tRU5USVRZIExlZnRhcnJvdyAi
JiN4MjFEMDsiLS0+Ci08IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiLS0+Ci08
IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgotPCEtLUVOVElUWSBVcGFycm93ICImI3gyMUQx
OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiLS0+Ci08IS0tRU5USVRZ
IHJBcnIgIiYjeDIxRDI7Ii0tPgotPCEtLUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyItLT4K
LTwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVJpZ2h0
QXJyb3cgIiYjeDIxRDI7Ii0tPgotPCEtLUVOVElUWSBkQXJyICImI3gyMUQzOyItLT4KLTwhLS1F
TlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KLTwhLS1FTlRJVFkgRG91YmxlRG93bkFycm93
ICImI3gyMUQzOyItLT4KLTwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsiLS0+Ci08IS0tRU5USVRZ
IExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlTGVmdFJpZ2h0
QXJyb3cgIiYjeDIxRDQ7Ii0tPgotPCEtLUVOVElUWSBpZmYgIiYjeDIxRDQ7Ii0tPgotPCEtLUVO
VElUWSB2QXJyICImI3gyMUQ1OyItLT4KLTwhLS1FTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7
Ii0tPgotPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiLS0+Ci08IS0tRU5U
SVRZIG53QXJyICImI3gyMUQ2OyItLT4KLTwhLS1FTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ii0tPgot
PCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Ci08IS0tRU5USVRZIHN3QXJyICImI3gyMUQ5
OyItLT4KLTwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgotPCEtLUVOVElUWSBMbGVmdGFy
cm93ICImI3gyMURBOyItLT4KLTwhLS1FTlRJVFkgckFhcnIgIiYjeDIxREI7Ii0tPgotPCEtLUVO
VElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Ci08IS0tRU5USVRZIHppZ3JhcnIgIiYjeDIx
REQ7Ii0tPgotPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Ci08IS0tRU5USVRZIExlZnRB
cnJvd0JhciAiJiN4MjFFNDsiLS0+Ci08IS0tRU5USVRZIHJhcnJiICImI3gyMUU1OyItLT4KLTwh
LS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Ci08IS0tRU5USVRZIGR1YXJyICIm
I3gyMUY1OyItLT4KLTwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiLS0+Ci08
IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KLTwhLS1FTlRJVFkgcm9hcnIgIiYjeDIxRkU7
Ii0tPgotPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Ci08IS0tRU5USVRZIGZvcmFsbCAi
JiN4MjIwMDsiLS0+Ci08IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiLS0+Ci08IS0tRU5USVRZ
IGNvbXAgIiYjeDIyMDE7Ii0tPgotPCEtLUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyItLT4K
LTwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Ci08IS0tRU5USVRZIFBhcnRpYWxEICImI3gy
MjAyOyItLT4KLTwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgotPCEtLUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ii0tPgot
PCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgotPCEtLUVOVElUWSBOb3RFeGlzdHMgIiYj
eDIyMDQ7Ii0tPgotPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyItLT4KLTwhLS1FTlRJVFkg
ZW1wdHkgIiYjeDIyMDU7Ii0tPgotPCEtLUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiLS0+Ci08
IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Ci08IS0tRU5USVRZIHZhcm5vdGhpbmcgIiYj
eDIyMDU7Ii0tPgotPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+Ci08IS0tRU5USVRZIERl
bCAiJiN4MjIwNzsiLS0+Ci08IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7Ii0tPgotPCEtLUVOVElU
WSBpc2ludiAiJiN4MjIwODsiLS0+Ci08IS0tRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ii0tPgot
PCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Ci08IS0tRU5USVRZIG5vdGluICImI3gyMjA5OyIt
LT4KLTwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Ci08IS0tRU5USVRZIG5vdGlu
dmEgIiYjeDIyMDk7Ii0tPgotPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7Ii0tPgotPCEtLUVOVElU
WSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Ci08IS0tRU5USVRZIG5pICImI3gyMjBCOyIt
LT4KLTwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgotPCEtLUVOVElUWSBub3RuaSAi
JiN4MjIwQzsiLS0+Ci08IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ii0tPgotPCEtLUVOVElU
WSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Ci08IS0tRU5USVRZIHByb2QgIiYjeDIy
MEY7Ii0tPgotPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4KLTwhLS1FTlRJVFkgY29w
cm9kICImI3gyMjEwOyItLT4KLTwhLS1FTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyItLT4KLTwh
LS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KLTwhLS1FTlRJVFkgU3VtICImI3gyMjExOyItLT4K
LTwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgotPCEtLUVOVElUWSBtbnBsdXMgIiYjeDIy
MTM7Ii0tPgotPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Ci08IS0tRU5USVRZIE1pbnVzUGx1
cyAiJiN4MjIxMzsiLS0+Ci08IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiLS0+Ci08IS0tRU5U
SVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgotPCEtLUVOVElUWSBzZXRtbiAiJiN4MjIxNjsiLS0+
Ci08IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KLTwhLS1FTlRJVFkgQmFja3NsYXNo
ICImI3gyMjE2OyItLT4KLTwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2OyItLT4KLTwhLS1FTlRJ
VFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Ci08IS0tRU5USVRZIGxvd2FzdCAiJiN4MjIx
NzsiLS0+Ci08IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Ci08IS0tRU5USVRZIFNtYWxs
Q2lyY2xlICImI3gyMjE4OyItLT4KLTwhLS1FTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ii0tPgotPCEt
LUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KLTwhLS1FTlRJVFkgcHJvcCAiJiN4MjIxRDsiLS0+
Ci08IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Ci08IS0tRU5USVRZIFByb3BvcnRpb25h
bCAiJiN4MjIxRDsiLS0+Ci08IS0tRU5USVRZIHZwcm9wICImI3gyMjFEOyItLT4KLTwhLS1FTlRJ
VFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KLTwhLS1FTlRJVFkgaW5maW4gIiYjeDIyMUU7Ii0t
PgotPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Ci08IS0tRU5USVRZIGFuZyAiJiN4MjIy
MDsiLS0+Ci08IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KLTwhLS1FTlRJVFkgbmFuZyAi
JiN4MjIyMDsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgYW5nbXNkICImI3gyMjIxOyItLT4KLTwh
LS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Ci08IS0tRU5USVRZIGFuZ3NwaCAi
JiN4MjIyMjsiLS0+Ci08IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+Ci08IS0tRU5USVRZIFZl
cnRpY2FsQmFyICImI3gyMjIzOyItLT4KLTwhLS1FTlRJVFkgc21pZCAiJiN4MjIyMzsiLS0+Ci08
IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KLTwhLS1FTlRJVFkgbm1pZCAiJiN4MjIy
NDsiLS0+Ci08IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyItLT4KLTwhLS1FTlRJ
VFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgotPCEtLUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7Ii0t
PgotPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgotPCEtLUVOVElUWSBwYXJhbGxlbCAiJiN4
MjIyNTsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyItLT4KLTwh
LS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Ci08IS0tRU5USVRZIHNob3J0cGFyYWxsZWwgIiYj
eDIyMjU7Ii0tPgotPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgbnBh
cmFsbGVsICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYj
eDIyMjY7Ii0tPgotPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+Ci08IS0tRU5USVRZIG5z
aG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgYW5kICImI3gyMjI3OyItLT4K
LTwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgotPCEtLUVOVElUWSBvciAiJiN4MjIyODsi
LS0+Ci08IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Ci08IS0tRU5USVRZIGNhcCAiJiN4MjIy
OTsiLS0+Ci08IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZ
IGN1cCAiJiN4MjIyQTsiLS0+Ci08IS0tRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsiLS0+
Ci08IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Ci08IS0tRU5USVRZIEludGVncmFsICImI3gy
MjJCOyItLT4KLTwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KLTwhLS1FTlRJVFkgdGludCAi
JiN4MjIyRDsiLS0+Ci08IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyItLT4KLTwhLS1FTlRJVFkg
Y29uaW50ICImI3gyMjJFOyItLT4KLTwhLS1FTlRJVFkgb2ludCAiJiN4MjIyRTsiLS0+Ci08IS0t
RU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Ci08IS0tRU5USVRZIENvbmludCAi
JiN4MjIyRjsiLS0+Ci08IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRjsi
LS0+Ci08IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgotPCEtLUVOVElUWSBjd2ludCAi
JiN4MjIzMTsiLS0+Ci08IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyItLT4KLTwhLS1FTlRJ
VFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4KLTwhLS1FTlRJVFkgYXdj
b25pbnQgIiYjeDIyMzM7Ii0tPgotPCEtLUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91cklu
dGVncmFsICImI3gyMjMzOyItLT4KLTwhLS1FTlRJVFkgdGhlcmU0ICImI3gyMjM0OyItLT4KLTwh
LS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KLTwhLS1FTlRJVFkgVGhlcmVmb3JlICIm
I3gyMjM0OyItLT4KLTwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyItLT4KLTwhLS1FTlRJVFkg
YmVjYXVzZSAiJiN4MjIzNTsiLS0+Ci08IS0tRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ii0tPgot
PCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Ci08IS0tRU5USVRZIENvbG9uICImI3gyMjM3
OyItLT4KLTwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+Ci08IS0tRU5USVRZIG1p
bnVzZCAiJiN4MjIzODsiLS0+Ci08IS0tRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyItLT4KLTwh
LS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgotPCEtLUVOVElUWSBob210aHQgIiYjeDIyM0I7
Ii0tPgotPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgotPCEtLUVOVElUWSBUaWxkZSAiJiN4
MjIzQzsiLS0+Ci08IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+Ci08IS0tRU5USVRZIHRo
aWNrc2ltICImI3gyMjNDOyItLT4KLTwhLS1FTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBEMjsi
LS0+Ci08IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgotPCEtLUVOVElUWSBiYWNrc2ltICIm
I3gyMjNEOyItLT4KLTwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ii0tPgotPCEtLUVO
VElUWSBhYyAiJiN4MjIzRTsiLS0+Ci08IS0tRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiLS0+Ci08
IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgotPCEtLUVOVElUWSBhY2QgIiYjeDIy
M0Y7Ii0tPgotPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgotPCEtLUVOVElUWSBWZXJ0
aWNhbFRpbGRlICImI3gyMjQwOyItLT4KLTwhLS1FTlRJVFkgd3IgIiYjeDIyNDA7Ii0tPgotPCEt
LUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KLTwhLS1FTlRJVFkgTm90VGlsZGUgIiYjeDIyNDE7
Ii0tPgotPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KLTwhLS1FTlRJVFkgRXF1YWxUaWxk
ZSAiJiN4MjI0MjsiLS0+Ci08IS0tRU5USVRZIGVxc2ltICImI3gyMjQyOyItLT4KLTwhLS1FTlRJ
VFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuZXNpbSAi
JiN4MjI0MjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBzaW1lICImI3gyMjQzOyItLT4KLTwhLS1F
TlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Ci08IS0tRU5USVRZIHNpbWVxICImI3gyMjQz
OyItLT4KLTwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgotPCEtLUVOVElUWSBuc2ltZXEg
IiYjeDIyNDQ7Ii0tPgotPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyItLT4KLTwh
LS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Ci08IS0tRU5USVRZIFRpbGRlRnVsbEVxdWFsICIm
I3gyMjQ1OyItLT4KLTwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0tPgotPCEtLUVOVElUWSBu
Y29uZyAiJiN4MjI0NzsiLS0+Ci08IS0tRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3
OyItLT4KLTwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElUWSBhcCAiJiN4
MjI0ODsiLS0+Ci08IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElU
WSBhcHByb3ggIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElUWSB0aGthcCAiJiN4MjI0ODsiLS0+Ci08
IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KLTwhLS1FTlRJVFkgbmFwICImI3gy
MjQ5OyItLT4KLTwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiLS0+Ci08IS0tRU5U
SVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgotPCEtLUVOVElUWSBhcGUgIiYjeDIyNEE7Ii0tPgot
PCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Ci08IS0tRU5USVRZIGFwaWQgIiYjeDIy
NEI7Ii0tPgotPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ii0tPgotPCEtLUVOVElU
WSBiY29uZyAiJiN4MjI0QzsiLS0+Ci08IS0tRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyItLT4K
LTwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Ci08IS0tRU5USVRZIEN1cENhcCAiJiN4
MjI0RDsiLS0+Ci08IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiLS0+Ci08IS0tRU5U
SVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgotPCEtLUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIyNEU7
Ii0tPgotPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgotPCEtLUVOVElUWSBOb3RIdW1w
RG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmJ1bXAgIiYjeDIyNEU7
JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0tPgotPCEtLUVOVElUWSBI
dW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgotPCEtLUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ii0tPgot
PCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgTm90SHVt
cEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGVzZG90ICImI3gyMjUwOyIt
LT4KLTwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgotPCEtLUVOVElUWSBkb3RlcSAi
JiN4MjI1MDsiLS0+Ci08IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiLS0+Ci08IS0t
RU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgotPCEtLUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1MTsi
LS0+Ci08IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KLTwhLS1FTlRJVFkgZmFsbGluZ2Rv
dHNlcSAiJiN4MjI1MjsiLS0+Ci08IS0tRU5USVRZIGVyRG90ICImI3gyMjUzOyItLT4KLTwhLS1F
TlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KLTwhLS1FTlRJVFkgY29sb25lICImI3gy
MjU0OyItLT4KLTwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+Ci08IS0tRU5USVRZIEFz
c2lnbiAiJiN4MjI1NDsiLS0+Ci08IS0tRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiLS0+Ci08IS0t
RU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgotPCEtLUVOVElUWSBlY2lyICImI3gyMjU2OyIt
LT4KLTwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KLTwhLS1FTlRJVFkgY2lyZSAiJiN4
MjI1NzsiLS0+Ci08IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+Ci08IS0tRU5USVRZIHdl
ZGdlcSAiJiN4MjI1OTsiLS0+Ci08IS0tRU5USVRZIHZlZWVxICImI3gyMjVBOyItLT4KLTwhLS1F
TlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1Qzsi
LS0+Ci08IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Ci08IS0tRU5USVRZIHF1ZXN0ZXEg
IiYjeDIyNUY7Ii0tPgotPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+Ci08IS0tRU5USVRZIE5v
dEVxdWFsICImI3gyMjYwOyItLT4KLTwhLS1FTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ii0tPgotPCEt
LUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgotPCEtLUVOVElUWSBibmVxdWl2ICImI3gy
MjYxOyYjeDIwRTU7Ii0tPgotPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ii0tPgotPCEtLUVO
VElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgotPCEtLUVOVElUWSBsZSAiJiN4MjI2NDsi
LS0+Ci08IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Ci08IS0tRU5USVRZIG52bGUgIiYjeDIy
NjQ7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIGdlICImI3gyMjY1OyItLT4KLTwhLS1FTlRJVFkg
R3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KLTwhLS1FTlRJVFkgZ2VxICImI3gyMjY1OyItLT4K
LTwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgbEUgIiYj
eDIyNjY7Ii0tPgotPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyItLT4KLTwhLS1F
TlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Ci08IS0tRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gzMzg7
Ii0tPgotPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBn
RSAiJiN4MjI2NzsiLS0+Ci08IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7Ii0t
PgotPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KLTwhLS1FTlRJVFkgbmdFICImI3gyMjY3
OyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiLS0+Ci08IS0t
RU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgbG5FICImI3gyMjY4OyItLT4KLTwhLS1FTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ii0tPgotPCEt
LUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBsdmVydG5lcXEg
IiYjeDIyNjg7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIGduRSAiJiN4MjI2OTsiLS0+Ci08IS0t
RU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KLTwhLS1FTlRJVFkgZ3ZuRSAiJiN4MjI2OTsmI3hG
RTAwOyItLT4KLTwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ii0tPgotPCEt
LUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Ci08IS0tRU5USVRZIE5lc3RlZExlc3NMZXNzICImI3gy
MjZBOyItLT4KLTwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgotPCEtLUVOVElUWSBuTHR2ICIm
I3gyMjZBOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYjeDMz
ODsiLS0+Ci08IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkg
R3QgIiYjeDIyNkI7Ii0tPgotPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MjI2
QjsiLS0+Ci08IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KLTwhLS1FTlRJVFkgbkd0diAiJiN4
MjI2QjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2Qjsm
I3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiLS0+Ci08IS0tRU5U
SVRZIHR3aXh0ICImI3gyMjZDOyItLT4KLTwhLS1FTlRJVFkgYmV0d2VlbiAiJiN4MjI2QzsiLS0+
Ci08IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Ci08IS0tRU5USVRZIG5sdCAiJiN4
MjI2RTsiLS0+Ci08IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0tPgotPCEtLUVOVElUWSBu
bGVzcyAiJiN4MjI2RTsiLS0+Ci08IS0tRU5USVRZIG5ndCAiJiN4MjI2RjsiLS0+Ci08IS0tRU5U
SVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgotPCEtLUVOVElUWSBuZ3RyICImI3gyMjZGOyIt
LT4KLTwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KLTwhLS1FTlRJVFkgTm90TGVzc0VxdWFs
ICImI3gyMjcwOyItLT4KLTwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsiLS0+Ci08IS0tRU5USVRZ
IG5nZSAiJiN4MjI3MTsiLS0+Ci08IS0tRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3MTsi
LS0+Ci08IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgotPCEtLUVOVElUWSBsc2ltICImI3gy
MjcyOyItLT4KLTwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyItLT4KLTwhLS1FTlRJVFkg
bGVzc3NpbSAiJiN4MjI3MjsiLS0+Ci08IS0tRU5USVRZIGdzaW0gIiYjeDIyNzM7Ii0tPgotPCEt
LUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyVGlsZGUgIiYj
eDIyNzM7Ii0tPgotPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+Ci08IS0tRU5USVRZIE5v
dExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Ci08IS0tRU5USVRZIG5nc2ltICImI3gyMjc1OyItLT4K
LTwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4KLTwhLS1FTlRJVFkgbGcg
IiYjeDIyNzY7Ii0tPgotPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyItLT4KLTwhLS1FTlRJ
VFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgotPCEtLUVOVElUWSBnbCAiJiN4MjI3NzsiLS0+
Ci08IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyTGVz
cyAiJiN4MjI3NzsiLS0+Ci08IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7Ii0tPgotPCEtLUVOVElU
WSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Ci08IS0tRU5USVRZIG50Z2wgIiYjeDIyNzk7
Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiLS0+Ci08IS0tRU5USVRZ
IHByICImI3gyMjdBOyItLT4KLTwhLS1FTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ii0tPgotPCEt
LUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KLTwhLS1FTlRJVFkgc2MgIiYjeDIyN0I7Ii0tPgot
PCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Ci08IS0tRU5USVRZIHN1Y2MgIiYjeDIy
N0I7Ii0tPgotPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Ci08IS0tRU5USVRZIFByZWNl
ZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Ci08IS0tRU5USVRZIHByZWNjdXJseWVxICImI3gy
MjdDOyItLT4KLTwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgotPCEtLUVOVElUWSBTdWNj
ZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgotPCEtLUVOVElUWSBzdWNjY3VybHllcSAiJiN4
MjI3RDsiLS0+Ci08IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4KLTwhLS1FTlRJVFkgcHJl
Y3NpbSAiJiN4MjI3RTsiLS0+Ci08IS0tRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7Ii0t
PgotPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Ci08IS0tRU5USVRZIHN1Y2NzaW0gIiYj
eDIyN0Y7Ii0tPgotPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyItLT4KLTwhLS1F
TlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBu
cHIgIiYjeDIyODA7Ii0tPgotPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4MDsiLS0+Ci08IS0tRU5U
SVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KLTwhLS1FTlRJVFkgbnNjICImI3gyMjgxOyIt
LT4KLTwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgotPCEtLUVOVElUWSBOb3RTdWNjZWVk
cyAiJiN4MjI4MTsiLS0+Ci08IS0tRU5USVRZIHN1YiAiJiN4MjI4MjsiLS0+Ci08IS0tRU5USVRZ
IHN1YnNldCAiJiN4MjI4MjsiLS0+Ci08IS0tRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIwRDI7
Ii0tPgotPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElU
WSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIHN1cCAiJiN4MjI4
MzsiLS0+Ci08IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Ci08IS0tRU5USVRZIFN1cGVy
c2V0ICImI3gyMjgzOyItLT4KLTwhLS1FTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsiLS0+
Ci08IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIE5v
dFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBuc3ViICImI3gyMjg0
OyItLT4KLTwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Ci08IS0tRU5USVRZIHN1YmUgIiYj
eDIyODY7Ii0tPgotPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiLS0+Ci08IS0tRU5U
SVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KLTwhLS1FTlRJVFkgc3VwZSAiJiN4MjI4NzsiLS0+
Ci08IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KLTwhLS1FTlRJVFkgU3VwZXJzZXRF
cXVhbCAiJiN4MjI4NzsiLS0+Ci08IS0tRU5USVRZIG5zdWJlICImI3gyMjg4OyItLT4KLTwhLS1F
TlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KLTwhLS1FTlRJVFkgTm90U3Vic2V0RXF1YWwg
IiYjeDIyODg7Ii0tPgotPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiLS0+Ci08IS0tRU5USVRZ
IG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Ci08IS0tRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYj
eDIyODk7Ii0tPgotPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+Ci08IS0tRU5USVRZIHN1
YnNldG5lcSAiJiN4MjI4QTsiLS0+Ci08IS0tRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAw
OyItLT4KLTwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ii0tPgotPCEt
LUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Ci08IS0tRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4
QjsiLS0+Ci08IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KLTwhLS1FTlRJ
VFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBjdXBkb3Qg
IiYjeDIyOEQ7Ii0tPgotPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiLS0+Ci08IS0tRU5USVRZ
IFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Ci08IS0tRU5USVRZIHNxc3ViICImI3gyMjhGOyItLT4K
LTwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KLTwhLS1FTlRJVFkgc3FzdWJz
ZXQgIiYjeDIyOEY7Ii0tPgotPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgotPCEtLUVOVElUWSBTcXVh
cmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Ci08IS0tRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyIt
LT4KLTwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyItLT4KLTwh
LS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KLTwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0RXF1
YWwgIiYjeDIyOTE7Ii0tPgotPCEtLUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyItLT4KLTwh
LS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KLTwhLS1FTlRJVFkgU3F1YXJlU3VwZXJzZXRF
cXVhbCAiJiN4MjI5MjsiLS0+Ci08IS0tRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ii0tPgot
PCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Ci08IS0tRU5USVRZIFNxdWFyZUludGVyc2Vj
dGlvbiAiJiN4MjI5MzsiLS0+Ci08IS0tRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAwOyIt
LT4KLTwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgotPCEtLUVOVElUWSBTcXVhcmVVbmlv
biAiJiN4MjI5NDsiLS0+Ci08IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyItLT4K
LTwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgotPCEtLUVOVElUWSBDaXJjbGVQbHVzICIm
I3gyMjk1OyItLT4KLTwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyItLT4KLTwhLS1FTlRJVFkg
Q2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgotPCEtLUVOVElUWSBvdGltZXMgIiYjeDIyOTc7Ii0t
PgotPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Ci08IS0tRU5USVRZIG9zb2wg
IiYjeDIyOTg7Ii0tPgotPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyItLT4KLTwhLS1FTlRJVFkg
Q2lyY2xlRG90ICImI3gyMjk5OyItLT4KLTwhLS1FTlRJVFkgb2NpciAiJiN4MjI5QTsiLS0+Ci08
IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KLTwhLS1FTlRJVFkgb2FzdCAiJiN4
MjI5QjsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ii0tPgotPCEtLUVOVElU
WSBvZGFzaCAiJiN4MjI5RDsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlEOyIt
LT4KLTwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgotPCEtLUVOVElUWSBib3hwbHVzICIm
I3gyMjlFOyItLT4KLTwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyItLT4KLTwhLS1FTlRJVFkg
Ym94bWludXMgIiYjeDIyOUY7Ii0tPgotPCEtLUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ii0tPgot
PCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Ci08IS0tRU5USVRZIHNkb3RiICImI3gy
MkExOyItLT4KLTwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyItLT4KLTwhLS1FTlRJVFkg
dmRhc2ggIiYjeDIyQTI7Ii0tPgotPCEtLUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiLS0+Ci08
IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KLTwhLS1FTlRJVFkgTGVmdFRlZSAiJiN4MjJB
MzsiLS0+Ci08IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Ci08IS0tRU5USVRZIERvd25UZWUg
IiYjeDIyQTQ7Ii0tPgotPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ii0tPgotPCEtLUVOVElU
WSBib3QgIiYjeDIyQTU7Ii0tPgotPCEtLUVOVElUWSBwZXJwICImI3gyMkE1OyItLT4KLTwhLS1F
TlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgotPCEtLUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7Ii0t
PgotPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVJpZ2h0
VGVlICImI3gyMkE4OyItLT4KLTwhLS1FTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ii0tPgotPCEtLUVO
VElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgotPCEtLUVOVElUWSBWRGFzaCAiJiN4MjJBQjsiLS0+
Ci08IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Ci08IS0tRU5USVRZIG52RGFzaCAiJiN4
MjJBRDsiLS0+Ci08IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+Ci08IS0tRU5USVRZIG5W
RGFzaCAiJiN4MjJBRjsiLS0+Ci08IS0tRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiLS0+Ci08IS0t
RU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KLTwhLS1FTlRJVFkgdmFydHJpYW5nbGVsZWZ0ICIm
I3gyMkIyOyItLT4KLTwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyItLT4KLTwhLS1F
TlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgotPCEtLUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0ICIm
I3gyMkIzOyItLT4KLTwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiLS0+Ci08IS0t
RU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KLTwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ZXEgIiYj
eDIyQjQ7Ii0tPgotPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiLS0+Ci08
IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIHJ0cmll
ICImI3gyMkI1OyItLT4KLTwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyItLT4K
LTwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyItLT4KLTwhLS1FTlRJVFkg
bnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgb3JpZ29mICImI3gyMkI2
OyItLT4KLTwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Ci08IS0tRU5USVRZIG11bWFwICIm
I3gyMkI4OyItLT4KLTwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ii0tPgotPCEtLUVOVElU
WSBoZXJjb24gIiYjeDIyQjk7Ii0tPgotPCEtLUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ii0tPgot
PCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Ci08IS0tRU5USVRZIHZlZWJhciAiJiN4
MjJCQjsiLS0+Ci08IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+Ci08IS0tRU5USVRZIGFu
Z3J0dmIgIiYjeDIyQkU7Ii0tPgotPCEtLUVOVElUWSBscnRyaSAiJiN4MjJCRjsiLS0+Ci08IS0t
RU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Ci08IS0tRU5USVRZIFdlZGdlICImI3gyMkMwOyIt
LT4KLTwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgotPCEtLUVOVElUWSB4dmVlICIm
I3gyMkMxOyItLT4KLTwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4KLTwhLS1FTlRJVFkgYmln
dmVlICImI3gyMkMxOyItLT4KLTwhLS1FTlRJVFkgeGNhcCAiJiN4MjJDMjsiLS0+Ci08IS0tRU5U
SVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Ci08IS0tRU5USVRZIGJpZ2NhcCAiJiN4MjJD
MjsiLS0+Ci08IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgotPCEtLUVOVElUWSBVbmlvbiAi
JiN4MjJDMzsiLS0+Ci08IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiLS0+Ci08IS0tRU5USVRZ
IGRpYW0gIiYjeDIyQzQ7Ii0tPgotPCEtLUVOVElUWSBkaWFtb25kICImI3gyMkM0OyItLT4KLTwh
LS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Ci08IS0tRU5USVRZIHNkb3QgIiYjeDIyQzU7
Ii0tPgotPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgotPCEtLUVOVElUWSBTdGFyICIm
I3gyMkM2OyItLT4KLTwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyItLT4KLTwhLS1FTlRJVFkg
ZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Ci08IS0tRU5USVRZIGJvd3RpZSAiJiN4MjJDODsi
LS0+Ci08IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Ci08IS0tRU5USVRZIHJ0aW1lcyAi
JiN4MjJDQTsiLS0+Ci08IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiLS0+Ci08IS0tRU5USVRZ
IGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KLTwhLS1FTlRJVFkgcnRocmVlICImI3gyMkND
OyItLT4KLTwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyItLT4KLTwhLS1FTlRJ
VFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgotPCEtLUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ii0t
PgotPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Ci08IS0tRU5USVRZIGN1cmx5dmVlICIm
I3gyMkNFOyItLT4KLTwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0tPgotPCEtLUVOVElUWSBj
dXJseXdlZGdlICImI3gyMkNGOyItLT4KLTwhLS1FTlRJVFkgU3ViICImI3gyMkQwOyItLT4KLTwh
LS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KLTwhLS1FTlRJVFkgU3VwICImI3gyMkQxOyIt
LT4KLTwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KLTwhLS1FTlRJVFkgQ2FwICImI3gy
MkQyOyItLT4KLTwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KLTwhLS1FTlRJVFkgZm9yayAi
JiN4MjJENDsiLS0+Ci08IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiLS0+Ci08IS0tRU5U
SVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgotPCEtLUVOVElUWSBsdGRvdCAiJiN4MjJENjsiLS0+Ci08
IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgotPCEtLUVOVElUWSBndGRvdCAiJiN4MjJE
NzsiLS0+Ci08IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Ci08IS0tRU5USVRZIExsICIm
I3gyMkQ4OyItLT4KLTwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiLS0+Ci08IS0tRU5U
SVRZIEdnICImI3gyMkQ5OyItLT4KLTwhLS1FTlRJVFkgZ2dnICImI3gyMkQ5OyItLT4KLTwhLS1F
TlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGxlZyAiJiN4MjJEQTsi
LS0+Ci08IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ii0tPgotPCEtLUVOVElU
WSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgotPCEtLUVOVElUWSBsZXNnICImI3gyMkRBOyYjeEZF
MDA7Ii0tPgotPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgotPCEtLUVOVElUWSBndHJlcWxl
c3MgIiYjeDIyREI7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRCOyIt
LT4KLTwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgY3Vl
cHIgIiYjeDIyREU7Ii0tPgotPCEtLUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiLS0+Ci08
IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KLTwhLS1FTlRJVFkgY3VybHllcXN1Y2MgIiYj
eDIyREY7Ii0tPgotPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0tPgotPCEtLUVOVElUWSBO
b3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgotPCEtLUVOVElUWSBuc2NjdWUgIiYj
eDIyRTE7Ii0tPgotPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7Ii0t
PgotPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KLTwhLS1FTlRJVFkgTm90U3F1YXJl
U3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgotPCEtLUVOVElUWSBuc3FzdXBlICImI3gyMkUzOyIt
LT4KLTwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiLS0+Ci08IS0t
RU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KLTwhLS1FTlRJVFkgZ25zaW0gIiYjeDIyRTc7Ii0t
PgotPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgotPCEtLUVOVElUWSBwcmVjbnNpbSAi
JiN4MjJFODsiLS0+Ci08IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiLS0+Ci08IS0tRU5USVRZ
IHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KLTwhLS1FTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ii0tPgot
PCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KLTwhLS1FTlRJVFkgTm90TGVm
dFRyaWFuZ2xlICImI3gyMkVBOyItLT4KLTwhLS1FTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ii0tPgot
PCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Ci08IS0tRU5USVRZIE5vdFJp
Z2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgotPCEtLUVOVElUWSBubHRyaWUgIiYjeDIyRUM7Ii0t
PgotPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0tPgotPCEtLUVOVElUWSBO
b3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Ci08IS0tRU5USVRZIG5ydHJpZSAiJiN4
MjJFRDsiLS0+Ci08IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ii0tPgotPCEt
LUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0tPgotPCEtLUVOVElUWSB2
ZWxsaXAgIiYjeDIyRUU7Ii0tPgotPCEtLUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiLS0+Ci08IS0t
RU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KLTwhLS1FTlRJVFkgZHRkb3QgIiYjeDIyRjE7Ii0t
PgotPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Ci08IS0tRU5USVRZIGlzaW5zdiAiJiN4
MjJGMzsiLS0+Ci08IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4KLTwhLS1FTlRJVFkgaXNp
bmRvdCAiJiN4MjJGNTsiLS0+Ci08IS0tRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsi
LS0+Ci08IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgotPCEtLUVOVElUWSBub3RpbnZi
ICImI3gyMkY3OyItLT4KLTwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ii0tPgotPCEtLUVOVElU
WSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmlzZCAiJiN4MjJGQTsi
LS0+Ci08IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgotPCEtLUVOVElUWSBuaXMgIiYjeDIy
RkM7Ii0tPgotPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4KLTwhLS1FTlRJVFkgbm90
bml2YiAiJiN4MjJGRTsiLS0+Ci08IS0tRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiLS0+Ci08IS0t
RU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KLTwhLS1FTlRJVFkgQmFyd2VkICImI3gyMzA2
OyItLT4KLTwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ii0tPgotPCEtLUVOVElU
WSBsY2VpbCAiJiN4MjMwODsiLS0+Ci08IS0tRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyIt
LT4KLTwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgotPCEtLUVOVElUWSBSaWdodENlaWxp
bmcgIiYjeDIzMDk7Ii0tPgotPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ii0tPgotPCEtLUVO
VElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgotPCEtLUVOVElUWSByZmxvb3IgIiYjeDIzMEI7
Ii0tPgotPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4KLTwhLS1FTlRJVFkgZHJj
cm9wICImI3gyMzBDOyItLT4KLTwhLS1FTlRJVFkgZGxjcm9wICImI3gyMzBEOyItLT4KLTwhLS1F
TlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KLTwhLS1FTlRJVFkgdWxjcm9wICImI3gyMzBGOyIt
LT4KLTwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Ci08IS0tRU5USVRZIHByb2ZsaW5lICIm
I3gyMzEyOyItLT4KLTwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ii0tPgotPCEtLUVOVElU
WSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgotPCEtLUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ii0tPgot
PCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgotPCEtLUVOVElUWSB1bGNvcm5lciAiJiN4
MjMxQzsiLS0+Ci08IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+Ci08IS0tRU5USVRZIHVy
Y29ybmVyICImI3gyMzFEOyItLT4KLTwhLS1FTlRJVFkgZGxjb3JuICImI3gyMzFFOyItLT4KLTwh
LS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgotPCEtLUVOVElUWSBkcmNvcm4gIiYjeDIz
MUY7Ii0tPgotPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+Ci08IS0tRU5USVRZIGZy
b3duICImI3gyMzIyOyItLT4KLTwhLS1FTlRJVFkgc2Zyb3duICImI3gyMzIyOyItLT4KLTwhLS1F
TlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgotPCEtLUVOVElUWSBzc21pbGUgIiYjeDIzMjM7Ii0t
PgotPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgotPCEtLUVOVElUWSBwcm9mYWxhciAi
JiN4MjMyRTsiLS0+Ci08IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiLS0+Ci08IS0tRU5USVRZ
IG92YmFyICImI3gyMzNEOyItLT4KLTwhLS1FTlRJVFkgc29sYmFyICImI3gyMzNGOyItLT4KLTwh
LS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Ci08IS0tRU5USVRZIGxtb3VzdCAiJiN4MjNC
MDsiLS0+Ci08IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0tPgotPCEtLUVOVElUWSBy
bW91c3QgIiYjeDIzQjE7Ii0tPgotPCEtLUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyItLT4K
LTwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Ci08IS0tRU5USVRZIE92ZXJCcmFja2V0ICIm
I3gyM0I0OyItLT4KLTwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+Ci08IS0tRU5USVRZIFVu
ZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Ci08IS0tRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyIt
LT4KLTwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyItLT4KLTwhLS1FTlRJVFkg
VW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Ci08IS0tRU5USVRZIE92ZXJCcmFjZSAiJiN4
MjNERTsiLS0+Ci08IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ii0tPgotPCEtLUVOVElU
WSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Ci08IS0tRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyIt
LT4KLTwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgotPCEtLUVOVElUWSBvUyAiJiN4MjRD
ODsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4KLTwhLS1FTlRJVFkgYm94
aCAiJiN4MjUwMDsiLS0+Ci08IS0tRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyItLT4K
LTwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Ci08IS0tRU5USVRZIGJveGRyICImI3gyNTBD
OyItLT4KLTwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgotPCEtLUVOVElUWSBib3h1ciAi
JiN4MjUxNDsiLS0+Ci08IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyItLT4KLTwhLS1FTlRJVFkg
Ym94dnIgIiYjeDI1MUM7Ii0tPgotPCEtLUVOVElUWSBib3h2bCAiJiN4MjUyNDsiLS0+Ci08IS0t
RU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KLTwhLS1FTlRJVFkgYm94aHUgIiYjeDI1MzQ7Ii0t
PgotPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Ci08IS0tRU5USVRZIGJveEggIiYjeDI1
NTA7Ii0tPgotPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KLTwhLS1FTlRJVFkgYm94ZFIg
IiYjeDI1NTI7Ii0tPgotPCEtLUVOVElUWSBib3hEciAiJiN4MjU1MzsiLS0+Ci08IS0tRU5USVRZ
IGJveERSICImI3gyNTU0OyItLT4KLTwhLS1FTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ii0tPgotPCEt
LUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Ci08IS0tRU5USVRZIGJveERMICImI3gyNTU3OyIt
LT4KLTwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgotPCEtLUVOVElUWSBib3hVciAiJiN4
MjU1OTsiLS0+Ci08IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4KLTwhLS1FTlRJVFkgYm94
dUwgIiYjeDI1NUI7Ii0tPgotPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1QzsiLS0+Ci08IS0tRU5U
SVRZIGJveFVMICImI3gyNTVEOyItLT4KLTwhLS1FTlRJVFkgYm94dlIgIiYjeDI1NUU7Ii0tPgot
PCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Ci08IS0tRU5USVRZIGJveFZSICImI3gyNTYw
OyItLT4KLTwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgotPCEtLUVOVElUWSBib3hWbCAi
JiN4MjU2MjsiLS0+Ci08IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyItLT4KLTwhLS1FTlRJVFkg
Ym94SGQgIiYjeDI1NjQ7Ii0tPgotPCEtLUVOVElUWSBib3hoRCAiJiN4MjU2NTsiLS0+Ci08IS0t
RU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KLTwhLS1FTlRJVFkgYm94SHUgIiYjeDI1Njc7Ii0t
PgotPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Ci08IS0tRU5USVRZIGJveEhVICImI3gy
NTY5OyItLT4KLTwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgotPCEtLUVOVElUWSBib3hW
aCAiJiN4MjU2QjsiLS0+Ci08IS0tRU5USVRZIGJveFZIICImI3gyNTZDOyItLT4KLTwhLS1FTlRJ
VFkgdWhibGsgIiYjeDI1ODA7Ii0tPgotPCEtLUVOVElUWSBsaGJsayAiJiN4MjU4NDsiLS0+Ci08
IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KLTwhLS1FTlRJVFkgYmxrMTQgIiYjeDI1OTE7
Ii0tPgotPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Ci08IS0tRU5USVRZIGJsazM0ICIm
I3gyNTkzOyItLT4KLTwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4KLTwhLS1FTlRJVFkgc3F1
YXJlICImI3gyNUExOyItLT4KLTwhLS1FTlRJVFkgU3F1YXJlICImI3gyNUExOyItLT4KLTwhLS1F
TlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Ci08IS0tRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsiLS0+
Ci08IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KLTwhLS1FTlRJVFkgRmlsbGVk
VmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KLTwhLS1FTlRJVFkgRW1wdHlWZXJ5U21hbGxT
cXVhcmUgIiYjeDI1QUI7Ii0tPgotPCEtLUVOVElUWSByZWN0ICImI3gyNUFEOyItLT4KLTwhLS1F
TlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KLTwhLS1FTlRJVFkgZmx0bnMgIiYjeDI1QjE7Ii0t
PgotPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Ci08IS0tRU5USVRZIGJpZ3RyaWFuZ2xl
dXAgIiYjeDI1QjM7Ii0tPgotPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiLS0+Ci08IS0tRU5U
SVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgotPCEtLUVOVElUWSB1dHJpICImI3gyNUI1
OyItLT4KLTwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgotPCEtLUVOVElUWSBydHJp
ZiAiJiN4MjVCODsiLS0+Ci08IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsi
LS0+Ci08IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgotPCEtLUVOVElUWSB0cmlhbmdsZXJp
Z2h0ICImI3gyNUI5OyItLT4KLTwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ii0tPgotPCEtLUVO
VElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgotPCEtLUVOVElUWSBkdHJpZiAiJiN4
MjVCRTsiLS0+Ci08IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyItLT4KLTwh
LS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlZG93biAiJiN4
MjVCRjsiLS0+Ci08IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4KLTwhLS1FTlRJVFkgYmxh
Y2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgotPCEtLUVOVElUWSBsdHJpICImI3gyNUMzOyIt
LT4KLTwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4KLTwhLS1FTlRJVFkgbG96
ICImI3gyNUNBOyItLT4KLTwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiLS0+Ci08IS0tRU5U
SVRZIGNpciAiJiN4MjVDQjsiLS0+Ci08IS0tRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiLS0+Ci08
IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KLTwhLS1FTlRJVFkgYmlnY2lyYyAiJiN4MjVF
RjsiLS0+Ci08IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KLTwhLS1FTlRJVFkgdXJ0cmkg
IiYjeDI1Rjk7Ii0tPgotPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiLS0+Ci08IS0tRU5USVRZ
IEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgotPCEtLUVOVElUWSBGaWxsZWRTbWFsbFNx
dWFyZSAiJiN4MjVGQzsiLS0+Ci08IS0tRU5USVRZIHN0YXJmICImI3gyNjA1OyItLT4KLTwhLS1F
TlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Ci08IS0tRU5USVRZIHN0YXIgIiYjeDI2MDY7Ii0t
PgotPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Ci08IS0tRU5USVRZIGZlbWFsZSAiJiN4
MjY0MDsiLS0+Ci08IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgotPCEtLUVOVElUWSBzcGFk
ZXMgIiYjeDI2NjA7Ii0tPgotPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ii0tPgotPCEt
LUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Ci08IS0tRU5USVRZIGNsdWJzdWl0ICImI3gyNjYz
OyItLT4KLTwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KLTwhLS1FTlRJVFkgaGVhcnRz
dWl0ICImI3gyNjY1OyItLT4KLTwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ii0tPgotPCEtLUVO
VElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Ci08IS0tRU5USVRZIHN1bmcgIiYjeDI2NkE7
Ii0tPgotPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KLTwhLS1FTlRJVFkgbmF0dXIgIiYj
eDI2NkU7Ii0tPgotPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyItLT4KLTwhLS1FTlRJVFkg
c2hhcnAgIiYjeDI2NkY7Ii0tPgotPCEtLUVOVElUWSBjaGVjayAiJiN4MjcxMzsiLS0+Ci08IS0t
RU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Ci08IS0tRU5USVRZIGNyb3NzICImI3gyNzE3
OyItLT4KLTwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Ci08IS0tRU5USVRZIG1hbHRlc2Ug
IiYjeDI3MjA7Ii0tPgotPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyItLT4KLTwhLS1FTlRJVFkg
VmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgotPCEtLUVOVElUWSBsYmJyayAiJiN4Mjc3
MjsiLS0+Ci08IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KLTwhLS1FTlRJVFkgYnNvbGhz
dWIgIiYjeDI3Qzg7Ii0tPgotPCEtLUVOVElUWSBzdXBoc29sICImI3gyN0M5OyItLT4KLTwhLS1F
TlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgotPCEtLUVOVElUWSBMZWZ0RG91YmxlQnJhY2tldCAi
JiN4MjdFNjsiLS0+Ci08IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyItLT4KLTwhLS1FTlRJVFkg
UmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KLTwhLS1FTlRJVFkgbGFuZyAiJiN4MjdF
ODsiLS0+Ci08IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ii0tPgotPCEtLUVO
VElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgotPCEtLUVOVElUWSByYW5nICImI3gyN0U5OyItLT4K
LTwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0tPgotPCEtLUVOVElUWSBy
YW5nbGUgIiYjeDI3RTk7Ii0tPgotPCEtLUVOVElUWSBMYW5nICImI3gyN0VBOyItLT4KLTwhLS1F
TlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Ci08IS0tRU5USVRZIGxvYW5nICImI3gyN0VDOyItLT4K
LTwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgotPCEtLUVOVElUWSB4bGFyciAiJiN4MjdG
NTsiLS0+Ci08IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ii0tPgotPCEtLUVOVElU
WSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KLTwhLS1FTlRJVFkgeHJhcnIgIiYjeDI3RjY7
Ii0tPgotPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiLS0+Ci08IS0tRU5USVRZ
IExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KLTwhLS1FTlRJVFkgeGhhcnIgIiYjeDI3Rjc7
Ii0tPgotPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ii0tPgotPCEtLUVO
VElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgotPCEtLUVOVElUWSB4bEFyciAi
JiN4MjdGODsiLS0+Ci08IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ii0tPgotPCEt
LUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4KLTwhLS1FTlRJVFkgeHJB
cnIgIiYjeDI3Rjk7Ii0tPgotPCEtLUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsiLS0+
Ci08IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyItLT4KLTwhLS1FTlRJ
VFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgotPCEtLUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYj
eDI3RkE7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3RkE7
Ii0tPgotPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KLTwhLS1FTlRJVFkgbG9uZ21hcHN0
byAiJiN4MjdGQzsiLS0+Ci08IS0tRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyItLT4KLTwhLS1F
TlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KLTwhLS1FTlRJVFkgbnZyQXJyICImI3gyOTAzOyIt
LT4KLTwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KLTwhLS1FTlRJVFkgTWFwICImI3gy
OTA1OyItLT4KLTwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgotPCEtLUVOVElUWSByYmFy
ciAiJiN4MjkwRDsiLS0+Ci08IS0tRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiLS0+Ci08IS0tRU5U
SVRZIGxCYXJyICImI3gyOTBFOyItLT4KLTwhLS1FTlRJVFkgckJhcnIgIiYjeDI5MEY7Ii0tPgot
PCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KLTwhLS1FTlRJVFkgUkJhcnIgIiYjeDI5
MTA7Ii0tPgotPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+Ci08IS0tRU5USVRZIERE
b3RyYWhkICImI3gyOTExOyItLT4KLTwhLS1FTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiLS0+
Ci08IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Ci08IS0tRU5USVRZIFJhcnJ0
bCAiJiN4MjkxNjsiLS0+Ci08IS0tRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiLS0+Ci08IS0tRU5U
SVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Ci08IS0tRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsiLS0+
Ci08IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Ci08IS0tRU5USVRZIGxhcnJmcyAiJiN4
MjkxRDsiLS0+Ci08IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+Ci08IS0tRU5USVRZIGxh
cnJiZnMgIiYjeDI5MUY7Ii0tPgotPCEtLUVOVElUWSByYXJyYmZzICImI3gyOTIwOyItLT4KLTwh
LS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KLTwhLS1FTlRJVFkgbmVhcmhrICImI3gyOTI0
OyItLT4KLTwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KLTwhLS1FTlRJVFkgaGtzZWFy
b3cgIiYjeDI5MjU7Ii0tPgotPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ii0tPgotPCEtLUVO
VElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Ci08IS0tRU5USVRZIG53bmVhciAiJiN4MjkyNzsi
LS0+Ci08IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Ci08IS0tRU5USVRZIHRvZWEgIiYj
eDI5Mjg7Ii0tPgotPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0tPgotPCEtLUVOVElUWSB0
b3NhICImI3gyOTI5OyItLT4KLTwhLS1FTlRJVFkgc3dud2FyICImI3gyOTJBOyItLT4KLTwhLS1F
TlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgotPCEtLUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+Ci08IS0tRU5USVRZIGxk
Y2EgIiYjeDI5MzY7Ii0tPgotPCEtLUVOVElUWSByZGNhICImI3gyOTM3OyItLT4KLTwhLS1FTlRJ
VFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Ci08IS0tRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsiLS0+
Ci08IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgotPCEtLUVOVElUWSBjdWxhcnJwICIm
I3gyOTNEOyItLT4KLTwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyItLT4KLTwhLS1FTlRJVFkg
aGFycmNpciAiJiN4Mjk0ODsiLS0+Ci08IS0tRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyItLT4K
LTwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgotPCEtLUVOVElUWSBsZHJ1c2hhciAi
JiN4Mjk0QjsiLS0+Ci08IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiLS0+Ci08
IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4KLTwhLS1FTlRJVFkgRG93
bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Ci08IS0tRU5USVRZIExlZnRVcERvd25WZWN0
b3IgIiYjeDI5NTE7Ii0tPgotPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyItLT4K
LTwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgotPCEtLUVOVElUWSBSaWdo
dFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KLTwhLS1FTlRJVFkgUmlnaHREb3duVmVjdG9yQmFy
ICImI3gyOTU1OyItLT4KLTwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ii0t
PgotPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ii0tPgotPCEtLUVOVElU
WSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgotPCEtLUVOVElUWSBMZWZ0RG93blZlY3Rv
ckJhciAiJiN4Mjk1OTsiLS0+Ci08IS0tRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7Ii0t
PgotPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+Ci08IS0tRU5USVRZIFJp
Z2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgotPCEtLUVOVElUWSBSaWdodERvd25UZWVWZWN0
b3IgIiYjeDI5NUQ7Ii0tPgotPCEtLUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1RTsi
LS0+Ci08IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiLS0+Ci08IS0tRU5U
SVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Ci08IS0tRU5USVRZIExlZnREb3duVGVl
VmVjdG9yICImI3gyOTYxOyItLT4KLTwhLS1FTlRJVFkgbEhhciAiJiN4Mjk2MjsiLS0+Ci08IS0t
RU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgotPCEtLUVOVElUWSBySGFyICImI3gyOTY0OyItLT4K
LTwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Ci08IS0tRU5USVRZIGx1cnVoYXIgIiYjeDI5
NjY7Ii0tPgotPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4KLTwhLS1FTlRJVFkgcnVs
dWhhciAiJiN4Mjk2ODsiLS0+Ci08IS0tRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ii0tPgotPCEt
LUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgotPCEtLUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7
Ii0tPgotPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgotPCEtLUVOVElUWSBscmhhcmQg
IiYjeDI5NkQ7Ii0tPgotPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiLS0+Ci08IS0tRU5USVRZ
IFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgotPCEtLUVOVElUWSBkdWhhciAiJiN4Mjk2Rjsi
LS0+Ci08IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyItLT4KLTwhLS1F
TlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KLTwhLS1FTlRJVFkgZXJhcnIgIiYjeDI5
NzE7Ii0tPgotPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4KLTwhLS1FTlRJVFkgbGFy
cnNpbSAiJiN4Mjk3MzsiLS0+Ci08IS0tRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ii0tPgotPCEt
LUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgotPCEtLUVOVElUWSBsdGxhcnIgIiYjeDI5NzY7
Ii0tPgotPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgotPCEtLUVOVElUWSBzdWJyYXJy
ICImI3gyOTc5OyItLT4KLTwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiLS0+Ci08IS0tRU5U
SVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Ci08IS0tRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiLS0+
Ci08IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Ci08IS0tRU5USVRZIGRmaXNodCAiJiN4
Mjk3RjsiLS0+Ci08IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4KLTwhLS1FTlRJVFkgcm9w
YXIgIiYjeDI5ODY7Ii0tPgotPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiLS0+Ci08IS0tRU5U
SVRZIHJicmtlICImI3gyOThDOyItLT4KLTwhLS1FTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsiLS0+
Ci08IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgotPCEtLUVOVElUWSBsYnJrc2xkICIm
I3gyOThGOyItLT4KLTwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiLS0+Ci08IS0tRU5USVRZ
IGxhbmdkICImI3gyOTkxOyItLT4KLTwhLS1FTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ii0tPgotPCEt
LUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgotPCEtLUVOVElUWSBycGFyZ3QgIiYjeDI5OTQ7
Ii0tPgotPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgotPCEtLUVOVElUWSBsdHJQYXIg
IiYjeDI5OTY7Ii0tPgotPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlBOyItLT4KLTwhLS1FTlRJ
VFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KLTwhLS1FTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7Ii0t
PgotPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KLTwhLS1FTlRJVFkgcmFuZ2UgIiYjeDI5
QTU7Ii0tPgotPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4KLTwhLS1FTlRJVFkgdXdh
bmdsZSAiJiN4MjlBNzsiLS0+Ci08IS0tRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyItLT4KLTwh
LS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2RhYyAiJiN4
MjlBQTsiLS0+Ci08IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyItLT4KLTwhLS1FTlRJVFkg
YW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsiLS0+
Ci08IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KLTwhLS1FTlRJVFkgYW5nbXNkYWgg
IiYjeDI5QUY7Ii0tPgotPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyItLT4KLTwhLS1FTlRJ
VFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Ci08IS0tRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7Ii0t
PgotPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Ci08IS0tRU5USVRZIGxhZW1wdHl2
ICImI3gyOUI0OyItLT4KLTwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ii0tPgotPCEtLUVOVElU
WSBvbWlkICImI3gyOUI2OyItLT4KLTwhLS1FTlRJVFkgb3BhciAiJiN4MjlCNzsiLS0+Ci08IS0t
RU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KLTwhLS1FTlRJVFkgb2xjcm9zcyAiJiN4MjlCQjsi
LS0+Ci08IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Ci08IS0tRU5USVRZIG9sY2lyICIm
I3gyOUJFOyItLT4KLTwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0tPgotPCEtLUVOVElUWSBv
bHQgIiYjeDI5QzA7Ii0tPgotPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7Ii0tPgotPCEtLUVOVElU
WSBjaXJzY2lyICImI3gyOUMyOyItLT4KLTwhLS1FTlRJVFkgY2lyRSAiJiN4MjlDMzsiLS0+Ci08
IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgotPCEtLUVOVElUWSBic29sYiAiJiN4MjlDNTsi
LS0+Ci08IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Ci08IS0tRU5USVRZIHRyaXNiICIm
I3gyOUNEOyItLT4KLTwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ii0tPgotPCEtLUVOVElU
WSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgotPCEtLUVOVElUWSBOb3RMZWZ0VHJpYW5n
bGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUJhciAi
JiN4MjlEMDsiLS0+Ci08IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4KLTwhLS1FTlRJVFkgaW5m
aW50aWUgIiYjeDI5REQ7Ii0tPgotPCEtLUVOVElUWSBudmluZmluICImI3gyOURFOyItLT4KLTwh
LS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KLTwhLS1FTlRJVFkgc21lcGFyc2wgIiYjeDI5
RTQ7Ii0tPgotPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+Ci08IS0tRU5USVRZIGxv
emYgIiYjeDI5RUI7Ii0tPgotPCEtLUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ii0tPgot
PCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Ci08IS0tRU5USVRZIGRzb2wgIiYj
eDI5RjY7Ii0tPgotPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+Ci08IS0tRU5USVRZIGJp
Z29kb3QgIiYjeDJBMDA7Ii0tPgotPCEtLUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ii0tPgotPCEt
LUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Ci08IS0tRU5USVRZIHhvdGltZSAiJiN4MkEw
MjsiLS0+Ci08IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+Ci08IS0tRU5USVRZIHh1
cGx1cyAiJiN4MkEwNDsiLS0+Ci08IS0tRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyItLT4KLTwh
LS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KLTwhLS1FTlRJVFkgYmlnc3FjdXAgIiYjeDJB
MDY7Ii0tPgotPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KLTwhLS1FTlRJVFkgaWlpaW50
ICImI3gyQTBDOyItLT4KLTwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ii0tPgotPCEtLUVO
VElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Ci08IS0tRU5USVRZIGF3aW50ICImI3gyQTExOyIt
LT4KLTwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgotPCEtLUVOVElUWSBzY3BvbGlu
dCAiJiN4MkExMzsiLS0+Ci08IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ii0tPgotPCEtLUVO
VElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Ci08IS0tRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7
Ii0tPgotPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Ci08IS0tRU5USVRZIHBsdXNj
aXIgIiYjeDJBMjI7Ii0tPgotPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiLS0+Ci08IS0t
RU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgotPCEtLUVOVElUWSBwbHVzZHUgIiYjeDJBMjU7
Ii0tPgotPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KLTwhLS1FTlRJVFkgcGx1c3R3
byAiJiN4MkEyNzsiLS0+Ci08IS0tRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiLS0+Ci08IS0tRU5U
SVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgotPCEtLUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7Ii0t
PgotPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgotPCEtLUVOVElUWSBDcm9zcyAiJiN4
MkEyRjsiLS0+Ci08IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+Ci08IS0tRU5USVRZIHRp
bWVzYmFyICImI3gyQTMxOyItLT4KLTwhLS1FTlRJVFkgc21hc2hwICImI3gyQTMzOyItLT4KLTwh
LS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Ci08IS0tRU5USVRZIHJvdGltZXMgIiYjeDJB
MzU7Ii0tPgotPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+Ci08IS0tRU5USVRZIE90
aW1lcyAiJiN4MkEzNzsiLS0+Ci08IS0tRU5USVRZIG9kaXYgIiYjeDJBMzg7Ii0tPgotPCEtLUVO
VElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KLTwhLS1FTlRJVFkgdHJpbWludXMgIiYjeDJBM0E7
Ii0tPgotPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KLTwhLS1FTlRJVFkgaXByb2Qg
IiYjeDJBM0M7Ii0tPgotPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyItLT4KLTwhLS1FTlRJ
VFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgotPCEtLUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ii0tPgot
PCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KLTwhLS1FTlRJVFkgbmNhcCAiJiN4MkE0Mzsi
LS0+Ci08IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Ci08IS0tRU5USVRZIGN1cG9yICIm
I3gyQTQ1OyItLT4KLTwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyItLT4KLTwhLS1FTlRJVFkg
Y2FwY3VwICImI3gyQTQ3OyItLT4KLTwhLS1FTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ii0tPgot
PCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Ci08IS0tRU5USVRZIGN1cGN1cCAiJiN4
MkE0QTsiLS0+Ci08IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+Ci08IS0tRU5USVRZIGNj
dXBzICImI3gyQTRDOyItLT4KLTwhLS1FTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ii0tPgotPCEtLUVO
VElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KLTwhLS1FTlRJVFkgQW5kICImI3gyQTUzOyItLT4K
LTwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgotPCEtLUVOVElUWSBhbmRhbmQgIiYjeDJBNTU7
Ii0tPgotPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KLTwhLS1FTlRJVFkgb3JzbG9wZSAi
JiN4MkE1NzsiLS0+Ci08IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyItLT4KLTwhLS1FTlRJ
VFkgYW5kdiAiJiN4MkE1QTsiLS0+Ci08IS0tRU5USVRZIG9ydiAiJiN4MkE1QjsiLS0+Ci08IS0t
RU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgotPCEtLUVOVElUWSBvcmQgIiYjeDJBNUQ7Ii0tPgot
PCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgotPCEtLUVOVElUWSBzZG90ZSAiJiN4MkE2
NjsiLS0+Ci08IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Ci08IS0tRU5USVRZIGNvbmdk
b3QgIiYjeDJBNkQ7Ii0tPgotPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7Ii0t
PgotPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgotPCEtLUVOVElUWSBhcGFjaXIgIiYj
eDJBNkY7Ii0tPgotPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgotPCEtLUVOVElUWSBuYXBF
ICImI3gyQTcwOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGVwbHVzICImI3gyQTcxOyItLT4KLTwh
LS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgotPCEtLUVOVElUWSBFc2ltICImI3gyQTczOyIt
LT4KLTwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KLTwhLS1FTlRJVFkgRXF1YWwgIiYj
eDJBNzU7Ii0tPgotPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+Ci08IS0tRU5USVRZIGRk
b3RzZXEgIiYjeDJBNzc7Ii0tPgotPCEtLUVOVElUWSBlcXVpdkREICImI3gyQTc4OyItLT4KLTwh
LS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgotPCEtLUVOVElUWSBndGNpciAiJiN4MkE3QTsi
LS0+Ci08IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgotPCEtLUVOVElUWSBndHF1ZXN0
ICImI3gyQTdDOyItLT4KLTwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyItLT4KLTwhLS1FTlRJVFkg
TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgotPCEtLUVOVElUWSBsZXFzbGFudCAiJiN4MkE3
RDsiLS0+Ci08IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkg
Tm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmxlcXNs
YW50ICImI3gyQTdEOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGdlcyAiJiN4MkE3RTsiLS0+Ci08
IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4KLTwhLS1FTlRJVFkgZ2Vx
c2xhbnQgIiYjeDJBN0U7Ii0tPgotPCEtLUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiLS0+
Ci08IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiLS0+Ci08
IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBsZXNk
b3QgIiYjeDJBN0Y7Ii0tPgotPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ii0tPgotPCEtLUVO
VElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KLTwhLS1FTlRJVFkgZ2VzZG90byAiJiN4MkE4Mjsi
LS0+Ci08IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KLTwhLS1FTlRJVFkgZ2VzZG90
b2wgIiYjeDJBODQ7Ii0tPgotPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7Ii0tPgotPCEtLUVOVElU
WSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KLTwhLS1FTlRJVFkgZ2FwICImI3gyQTg2OyItLT4K
LTwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KLTwhLS1FTlRJVFkgbG5lICImI3gy
QTg3OyItLT4KLTwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Ci08IS0tRU5USVRZIGduZSAi
JiN4MkE4ODsiLS0+Ci08IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0tPgotPCEtLUVOVElUWSBs
bmFwICImI3gyQTg5OyItLT4KLTwhLS1FTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ii0tPgotPCEt
LUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KLTwhLS1FTlRJVFkgZ25hcHByb3ggIiYjeDJBOEE7
Ii0tPgotPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgotPCEtLUVOVElUWSBsZXNzZXFxZ3Ry
ICImI3gyQThCOyItLT4KLTwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyItLT4KLTwhLS1FTlRJVFkg
Z3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Ci08IS0tRU5USVRZIGxzaW1lICImI3gyQThEOyItLT4K
LTwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgotPCEtLUVOVElUWSBsc2ltZyAiJiN4MkE4
RjsiLS0+Ci08IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KLTwhLS1FTlRJVFkgbGdFICIm
I3gyQTkxOyItLT4KLTwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4KLTwhLS1FTlRJVFkgbGVz
Z2VzICImI3gyQTkzOyItLT4KLTwhLS1FTlRJVFkgZ2VzbGVzICImI3gyQTk0OyItLT4KLTwhLS1F
TlRJVFkgZWxzICImI3gyQTk1OyItLT4KLTwhLS1FTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJBOTU7
Ii0tPgotPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgotPCEtLUVOVElUWSBlcXNsYW50Z3Ry
ICImI3gyQTk2OyItLT4KLTwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3OyItLT4KLTwhLS1FTlRJ
VFkgZWdzZG90ICImI3gyQTk4OyItLT4KLTwhLS1FTlRJVFkgZWwgIiYjeDJBOTk7Ii0tPgotPCEt
LUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Ci08IS0tRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ii0tPgot
PCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KLTwhLS1FTlRJVFkgc2ltbEUgIiYjeDJBOUY7
Ii0tPgotPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Ci08IS0tRU5USVRZIExlc3NMZXNz
ICImI3gyQUExOyItLT4KLTwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ii0tPgotPCEtLUVO
VElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ii0tPgotPCEtLUVO
VElUWSBnbGogIiYjeDJBQTQ7Ii0tPgotPCEtLUVOVElUWSBnbGEgIiYjeDJBQTU7Ii0tPgotPCEt
LUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KLTwhLS1FTlRJVFkgZ3RjYyAiJiN4MkFBNzsiLS0+
Ci08IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KLTwhLS1FTlRJVFkgZ2VzY2MgIiYjeDJB
QTk7Ii0tPgotPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgotPCEtLUVOVElUWSBsYXQgIiYj
eDJBQUI7Ii0tPgotPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4KLTwhLS1FTlRJVFkgc210
ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ii0tPgot
PCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgYnVtcEUg
IiYjeDJBQUU7Ii0tPgotPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0tPgotPCEtLUVOVElUWSBw
cmVjZXEgIiYjeDJBQUY7Ii0tPgotPCEtLUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFGOyIt
LT4KLTwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBucHJl
Y2VxICImI3gyQUFGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIE5vdFByZWNlZGVzRXF1YWwgIiYj
eDJBQUY7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgc2NlICImI3gyQUIwOyItLT4KLTwhLS1FTlRJ
VFkgc3VjY2VxICImI3gyQUIwOyItLT4KLTwhLS1FTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4MkFC
MDsiLS0+Ci08IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkg
bnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RTdWNjZWVkc0VxdWFs
ICImI3gyQUIwOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIHByRSAiJiN4MkFCMzsiLS0+Ci08IS0t
RU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Ci08IS0tRU5USVRZIHBybkUgIiYjeDJBQjU7Ii0tPgot
PCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Ci08IS0tRU5USVRZIHNjbkUgIiYjeDJB
QjY7Ii0tPgotPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+Ci08IS0tRU5USVRZIHBy
YXAgIiYjeDJBQjc7Ii0tPgotPCEtLUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyItLT4KLTwh
LS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Ci08IS0tRU5USVRZIHN1Y2NhcHByb3ggIiYjeDJB
Qjg7Ii0tPgotPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Ci08IS0tRU5USVRZIHByZWNu
YXBwcm94ICImI3gyQUI5OyItLT4KLTwhLS1FTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ii0tPgotPCEt
LUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Ci08IS0tRU5USVRZIFByICImI3gyQUJC
OyItLT4KLTwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgotPCEtLUVOVElUWSBzdWJkb3QgIiYj
eDJBQkQ7Ii0tPgotPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0tPgotPCEtLUVOVElUWSBz
dWJwbHVzICImI3gyQUJGOyItLT4KLTwhLS1FTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiLS0+Ci08
IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgotPCEtLUVOVElUWSBzdXBtdWx0ICImI3gy
QUMyOyItLT4KLTwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+Ci08IS0tRU5USVRZIHN1
cGVkb3QgIiYjeDJBQzQ7Ii0tPgotPCEtLUVOVElUWSBzdWJFICImI3gyQUM1OyItLT4KLTwhLS1F
TlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KLTwhLS1FTlRJVFkgbnN1YkUgIiYjeDJBQzU7
JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ii0tPgot
PCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KLTwhLS1FTlRJVFkgc3Vwc2V0ZXFxICImI3gy
QUM2OyItLT4KLTwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBzdWJzaW0gIiYj
eDJBQzc7Ii0tPgotPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0tPgotPCEtLUVOVElUWSBz
dWJuRSAiJiN4MkFDQjsiLS0+Ci08IS0tRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ii0tPgot
PCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIHZhcnN1
YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIHN1cG5FICImI3gyQUND
OyItLT4KLTwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+Ci08IS0tRU5USVRZIHZz
dXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxcSAiJiN4
MkFDQzsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgY3N1YiAiJiN4MkFDRjsiLS0+Ci08IS0tRU5U
SVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgotPCEtLUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiLS0+Ci08
IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KLTwhLS1FTlRJVFkgc3Vic3VwICImI3gyQUQz
OyItLT4KLTwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KLTwhLS1FTlRJVFkgc3Vic3Vi
ICImI3gyQUQ1OyItLT4KLTwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyItLT4KLTwhLS1FTlRJ
VFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Ci08IS0tRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7Ii0t
PgotPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Ci08IS0tRU5USVRZIHRvcGZvcmsgIiYj
eDJBREE7Ii0tPgotPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4KLTwhLS1FTlRJVFkgRGFz
aHYgIiYjeDJBRTQ7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyItLT4K
LTwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KLTwhLS1FTlRJVFkgQmFydiAiJiN4MkFF
NzsiLS0+Ci08IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgotPCEtLUVOVElUWSB2QmFydiAi
JiN4MkFFOTsiLS0+Ci08IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0tPgotPCEtLUVOVElUWSBO
b3QgIiYjeDJBRUM7Ii0tPgotPCEtLUVOVElUWSBiTm90ICImI3gyQUVEOyItLT4KLTwhLS1FTlRJ
VFkgcm5taWQgIiYjeDJBRUU7Ii0tPgotPCEtLUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ii0tPgot
PCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgotPCEtLUVOVElUWSB0b3BjaXIgIiYjeDJB
RjE7Ii0tPgotPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Ci08IS0tRU5USVRZIHBhcnNp
bSAiJiN4MkFGMzsiLS0+Ci08IS0tRU5USVRZIHBhcnNsICImI3gyQUZEOyItLT4KLTwhLS1FTlRJ
VFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgotPCEtLUVOVElUWSBmZmxpZyAiJiN4RkIw
MDsiLS0+Ci08IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KLTwhLS1FTlRJVFkgZmxsaWcg
IiYjeEZCMDI7Ii0tPgotPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ii0tPgotPCEtLUVOVElU
WSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgotPCEtLUVOVElUWSBBc2NyICImI3gxRDQ5QzsiLS0+Ci08
IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KLTwhLS1FTlRJVFkgRHNjciAiJiN4MUQ0OUY7
Ii0tPgotPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Ci08IS0tRU5USVRZIEpzY3IgIiYj
eDFENEE1OyItLT4KLTwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0tPgotPCEtLUVOVElUWSBO
c2NyICImI3gxRDRBOTsiLS0+Ci08IS0tRU5USVRZIE9zY3IgIiYjeDFENEFBOyItLT4KLTwhLS1F
TlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgotPCEtLUVOVElUWSBRc2NyICImI3gxRDRBQzsiLS0+
Ci08IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KLTwhLS1FTlRJVFkgVHNjciAiJiN4MUQ0
QUY7Ii0tPgotPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Ci08IS0tRU5USVRZIFZzY3Ig
IiYjeDFENEIxOyItLT4KLTwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ii0tPgotPCEtLUVOVElU
WSBYc2NyICImI3gxRDRCMzsiLS0+Ci08IS0tRU5USVRZIFlzY3IgIiYjeDFENEI0OyItLT4KLTwh
LS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgotPCEtLUVOVElUWSBhc2NyICImI3gxRDRCNjsi
LS0+Ci08IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KLTwhLS1FTlRJVFkgY3NjciAiJiN4
MUQ0Qjg7Ii0tPgotPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+Ci08IS0tRU5USVRZIGZz
Y3IgIiYjeDFENEJCOyItLT4KLTwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ii0tPgotPCEtLUVO
VElUWSBpc2NyICImI3gxRDRCRTsiLS0+Ci08IS0tRU5USVRZIGpzY3IgIiYjeDFENEJGOyItLT4K
LTwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgotPCEtLUVOVElUWSBsc2NyICImI3gxRDRD
MTsiLS0+Ci08IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KLTwhLS1FTlRJVFkgbnNjciAi
JiN4MUQ0QzM7Ii0tPgotPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsiLS0+Ci08IS0tRU5USVRZ
IHFzY3IgIiYjeDFENEM2OyItLT4KLTwhLS1FTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ii0tPgotPCEt
LUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Ci08IS0tRU5USVRZIHRzY3IgIiYjeDFENEM5OyIt
LT4KLTwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgotPCEtLUVOVElUWSB2c2NyICImI3gx
RDRDQjsiLS0+Ci08IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4KLTwhLS1FTlRJVFkgeHNj
ciAiJiN4MUQ0Q0Q7Ii0tPgotPCEtLUVOVElUWSB5c2NyICImI3gxRDRDRTsiLS0+Ci08IS0tRU5U
SVRZIHpzY3IgIiYjeDFENENGOyItLT4KLTwhLS1FTlRJVFkgQWZyICImI3gxRDUwNDsiLS0+Ci08
IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgotPCEtLUVOVElUWSBEZnIgIiYjeDFENTA3OyIt
LT4KLTwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Ci08IS0tRU5USVRZIEZmciAiJiN4MUQ1
MDk7Ii0tPgotPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KLTwhLS1FTlRJVFkgSmZyICIm
I3gxRDUwRDsiLS0+Ci08IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0tPgotPCEtLUVOVElUWSBM
ZnIgIiYjeDFENTBGOyItLT4KLTwhLS1FTlRJVFkgTWZyICImI3gxRDUxMDsiLS0+Ci08IS0tRU5U
SVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgotPCEtLUVOVElUWSBPZnIgIiYjeDFENTEyOyItLT4KLTwh
LS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Ci08IS0tRU5USVRZIFFmciAiJiN4MUQ1MTQ7Ii0t
PgotPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KLTwhLS1FTlRJVFkgVGZyICImI3gxRDUx
NzsiLS0+Ci08IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgotPCEtLUVOVElUWSBWZnIgIiYj
eDFENTE5OyItLT4KLTwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+Ci08IS0tRU5USVRZIFhm
ciAiJiN4MUQ1MUI7Ii0tPgotPCEtLUVOVElUWSBZZnIgIiYjeDFENTFDOyItLT4KLTwhLS1FTlRJ
VFkgYWZyICImI3gxRDUxRTsiLS0+Ci08IS0tRU5USVRZIGJmciAiJiN4MUQ1MUY7Ii0tPgotPCEt
LUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KLTwhLS1FTlRJVFkgZGZyICImI3gxRDUyMTsiLS0+
Ci08IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgotPCEtLUVOVElUWSBmZnIgIiYjeDFENTIz
OyItLT4KLTwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Ci08IS0tRU5USVRZIGhmciAiJiN4
MUQ1MjU7Ii0tPgotPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4KLTwhLS1FTlRJVFkgamZy
ICImI3gxRDUyNzsiLS0+Ci08IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ii0tPgotPCEtLUVOVElU
WSBsZnIgIiYjeDFENTI5OyItLT4KLTwhLS1FTlRJVFkgbWZyICImI3gxRDUyQTsiLS0+Ci08IS0t
RU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgotPCEtLUVOVElUWSBvZnIgIiYjeDFENTJDOyItLT4K
LTwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Ci08IS0tRU5USVRZIHFmciAiJiN4MUQ1MkU7
Ii0tPgotPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KLTwhLS1FTlRJVFkgc2ZyICImI3gx
RDUzMDsiLS0+Ci08IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgotPCEtLUVOVElUWSB1ZnIg
IiYjeDFENTMyOyItLT4KLTwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsiLS0+Ci08IS0tRU5USVRZ
IHdmciAiJiN4MUQ1MzQ7Ii0tPgotPCEtLUVOVElUWSB4ZnIgIiYjeDFENTM1OyItLT4KLTwhLS1F
TlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Ci08IS0tRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ii0tPgot
PCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Ci08IS0tRU5USVRZIEJvcGYgIiYjeDFENTM5
OyItLT4KLTwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgotPCEtLUVOVElUWSBFb3BmICIm
I3gxRDUzQzsiLS0+Ci08IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyItLT4KLTwhLS1FTlRJVFkg
R29wZiAiJiN4MUQ1M0U7Ii0tPgotPCEtLUVOVElUWSBJb3BmICImI3gxRDU0MDsiLS0+Ci08IS0t
RU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KLTwhLS1FTlRJVFkgS29wZiAiJiN4MUQ1NDI7Ii0t
PgotPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Ci08IS0tRU5USVRZIE1vcGYgIiYjeDFE
NTQ0OyItLT4KLTwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgotPCEtLUVOVElUWSBTb3Bm
ICImI3gxRDU0QTsiLS0+Ci08IS0tRU5USVRZIFRvcGYgIiYjeDFENTRCOyItLT4KLTwhLS1FTlRJ
VFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgotPCEtLUVOVElUWSBWb3BmICImI3gxRDU0RDsiLS0+Ci08
IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KLTwhLS1FTlRJVFkgWG9wZiAiJiN4MUQ1NEY7
Ii0tPgotPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Ci08IS0tRU5USVRZIGFvcGYgIiYj
eDFENTUyOyItLT4KLTwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0tPgotPCEtLUVOVElUWSBj
b3BmICImI3gxRDU1NDsiLS0+Ci08IS0tRU5USVRZIGRvcGYgIiYjeDFENTU1OyItLT4KLTwhLS1F
TlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgotPCEtLUVOVElUWSBmb3BmICImI3gxRDU1NzsiLS0+
Ci08IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KLTwhLS1FTlRJVFkgaG9wZiAiJiN4MUQ1
NTk7Ii0tPgotPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Ci08IS0tRU5USVRZIGpvcGYg
IiYjeDFENTVCOyItLT4KLTwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7Ii0tPgotPCEtLUVOVElU
WSBsb3BmICImI3gxRDU1RDsiLS0+Ci08IS0tRU5USVRZIG1vcGYgIiYjeDFENTVFOyItLT4KLTwh
LS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgotPCEtLUVOVElUWSBvb3BmICImI3gxRDU2MDsi
LS0+Ci08IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KLTwhLS1FTlRJVFkgcW9wZiAiJiN4
MUQ1NjI7Ii0tPgotPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+Ci08IS0tRU5USVRZIHNv
cGYgIiYjeDFENTY0OyItLT4KLTwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ii0tPgotPCEtLUVO
VElUWSB1b3BmICImI3gxRDU2NjsiLS0+Ci08IS0tRU5USVRZIHZvcGYgIiYjeDFENTY3OyItLT4K
LTwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgotPCEtLUVOVElUWSB4b3BmICImI3gxRDU2
OTsiLS0+Ci08IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KLTwhLS1FTlRJVFkgem9wZiAi
JiN4MUQ1NkI7Ii0tPgorPCFFTlRJVFkgVGFiICImI3g5OyI+Cis8IUVOVElUWSBOZXdMaW5lICIm
I3hBOyI+Cis8IUVOVElUWSBleGNsICImI3gyMTsiPgorPCFFTlRJVFkgcXVvdCAiJiN4MjI7Ij4K
KzwhRU5USVRZIFFVT1QgIiYjeDIyOyI+Cis8IUVOVElUWSBudW0gIiYjeDIzOyI+Cis8IUVOVElU
WSBkb2xsYXIgIiYjeDI0OyI+Cis8IUVOVElUWSBwZXJjbnQgIiYjeDI1OyI+Cis8IUVOVElUWSBh
bXAgIiYjeDI2OyN4MjY7Ij4KKzwhRU5USVRZIEFNUCAiJiN4MjY7I3gyNjsiPgorPCFFTlRJVFkg
YXBvcyAiJiN4Mjc7Ij4KKzwhRU5USVRZIGxwYXIgIiYjeDI4OyI+Cis8IUVOVElUWSBycGFyICIm
I3gyOTsiPgorPCFFTlRJVFkgYXN0ICImI3gyQTsiPgorPCFFTlRJVFkgbWlkYXN0ICImI3gyQTsi
PgorPCFFTlRJVFkgcGx1cyAiJiN4MkI7Ij4KKzwhRU5USVRZIGNvbW1hICImI3gyQzsiPgorPCFF
TlRJVFkgcGVyaW9kICImI3gyRTsiPgorPCFFTlRJVFkgc29sICImI3gyRjsiPgorPCFFTlRJVFkg
Y29sb24gIiYjeDNBOyI+Cis8IUVOVElUWSBzZW1pICImI3gzQjsiPgorPCFFTlRJVFkgbHQgIiYj
eDI2OyN4M0M7Ij4KKzwhRU5USVRZIExUICImI3gyNjsjeDNDOyI+Cis8IUVOVElUWSBudmx0ICIm
I3gyNjsjeDNDOyYjeDIwRDI7Ij4KKzwhRU5USVRZIGVxdWFscyAiJiN4M0Q7Ij4KKzwhRU5USVRZ
IGJuZSAiJiN4M0Q7JiN4MjBFNTsiPgorPCFFTlRJVFkgZ3QgIiYjeDNFOyI+Cis8IUVOVElUWSBH
VCAiJiN4M0U7Ij4KKzwhRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ij4KKzwhRU5USVRZIHF1
ZXN0ICImI3gzRjsiPgorPCFFTlRJVFkgY29tbWF0ICImI3g0MDsiPgorPCFFTlRJVFkgbHNxYiAi
JiN4NUI7Ij4KKzwhRU5USVRZIGxicmFjayAiJiN4NUI7Ij4KKzwhRU5USVRZIGJzb2wgIiYjeDVD
OyI+Cis8IUVOVElUWSByc3FiICImI3g1RDsiPgorPCFFTlRJVFkgcmJyYWNrICImI3g1RDsiPgor
PCFFTlRJVFkgSGF0ICImI3g1RTsiPgorPCFFTlRJVFkgbG93YmFyICImI3g1RjsiPgorPCFFTlRJ
VFkgVW5kZXJCYXIgIiYjeDVGOyI+Cis8IUVOVElUWSBncmF2ZSAiJiN4NjA7Ij4KKzwhRU5USVRZ
IERpYWNyaXRpY2FsR3JhdmUgIiYjeDYwOyI+Cis8IUVOVElUWSBmamxpZyAiJiN4NjY7JiN4NkE7
Ij4KKzwhRU5USVRZIGxjdWIgIiYjeDdCOyI+Cis8IUVOVElUWSBsYnJhY2UgIiYjeDdCOyI+Cis8
IUVOVElUWSB2ZXJiYXIgIiYjeDdDOyI+Cis8IUVOVElUWSB2ZXJ0ICImI3g3QzsiPgorPCFFTlRJ
VFkgVmVydGljYWxMaW5lICImI3g3QzsiPgorPCFFTlRJVFkgcmN1YiAiJiN4N0Q7Ij4KKzwhRU5U
SVRZIHJicmFjZSAiJiN4N0Q7Ij4KKzwhRU5USVRZIG5ic3AgIiYjeEEwOyI+Cis8IUVOVElUWSBO
b25CcmVha2luZ1NwYWNlICImI3hBMDsiPgorPCFFTlRJVFkgaWV4Y2wgIiYjeEExOyI+Cis8IUVO
VElUWSBjZW50ICImI3hBMjsiPgorPCFFTlRJVFkgcG91bmQgIiYjeEEzOyI+Cis8IUVOVElUWSBj
dXJyZW4gIiYjeEE0OyI+Cis8IUVOVElUWSB5ZW4gIiYjeEE1OyI+Cis8IUVOVElUWSBicnZiYXIg
IiYjeEE2OyI+Cis8IUVOVElUWSBzZWN0ICImI3hBNzsiPgorPCFFTlRJVFkgRG90ICImI3hBODsi
PgorPCFFTlRJVFkgZGllICImI3hBODsiPgorPCFFTlRJVFkgRG91YmxlRG90ICImI3hBODsiPgor
PCFFTlRJVFkgdW1sICImI3hBODsiPgorPCFFTlRJVFkgY29weSAiJiN4QTk7Ij4KKzwhRU5USVRZ
IENPUFkgIiYjeEE5OyI+Cis8IUVOVElUWSBvcmRmICImI3hBQTsiPgorPCFFTlRJVFkgbGFxdW8g
IiYjeEFCOyI+Cis8IUVOVElUWSBub3QgIiYjeEFDOyI+Cis8IUVOVElUWSBzaHkgIiYjeEFEOyI+
Cis8IUVOVElUWSByZWcgIiYjeEFFOyI+Cis8IUVOVElUWSBjaXJjbGVkUiAiJiN4QUU7Ij4KKzwh
RU5USVRZIFJFRyAiJiN4QUU7Ij4KKzwhRU5USVRZIG1hY3IgIiYjeEFGOyI+Cis8IUVOVElUWSBz
dHJucyAiJiN4QUY7Ij4KKzwhRU5USVRZIGRlZyAiJiN4QjA7Ij4KKzwhRU5USVRZIHBsdXNtbiAi
JiN4QjE7Ij4KKzwhRU5USVRZIHBtICImI3hCMTsiPgorPCFFTlRJVFkgUGx1c01pbnVzICImI3hC
MTsiPgorPCFFTlRJVFkgc3VwMiAiJiN4QjI7Ij4KKzwhRU5USVRZIHN1cDMgIiYjeEIzOyI+Cis8
IUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ij4KKzwhRU5USVRZIERpYWNyaXRpY2FsQWN1dGUgIiYjeEI0
OyI+Cis8IUVOVElUWSBtaWNybyAiJiN4QjU7Ij4KKzwhRU5USVRZIHBhcmEgIiYjeEI2OyI+Cis8
IUVOVElUWSBtaWRkb3QgIiYjeEI3OyI+Cis8IUVOVElUWSBjZW50ZXJkb3QgIiYjeEI3OyI+Cis8
IUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyI+Cis8IUVOVElUWSBjZWRpbCAiJiN4Qjg7Ij4KKzwh
RU5USVRZIENlZGlsbGEgIiYjeEI4OyI+Cis8IUVOVElUWSBzdXAxICImI3hCOTsiPgorPCFFTlRJ
VFkgb3JkbSAiJiN4QkE7Ij4KKzwhRU5USVRZIHJhcXVvICImI3hCQjsiPgorPCFFTlRJVFkgZnJh
YzE0ICImI3hCQzsiPgorPCFFTlRJVFkgZnJhYzEyICImI3hCRDsiPgorPCFFTlRJVFkgaGFsZiAi
JiN4QkQ7Ij4KKzwhRU5USVRZIGZyYWMzNCAiJiN4QkU7Ij4KKzwhRU5USVRZIGlxdWVzdCAiJiN4
QkY7Ij4KKzwhRU5USVRZIEFncmF2ZSAiJiN4QzA7Ij4KKzwhRU5USVRZIEFhY3V0ZSAiJiN4QzE7
Ij4KKzwhRU5USVRZIEFjaXJjICImI3hDMjsiPgorPCFFTlRJVFkgQXRpbGRlICImI3hDMzsiPgor
PCFFTlRJVFkgQXVtbCAiJiN4QzQ7Ij4KKzwhRU5USVRZIEFyaW5nICImI3hDNTsiPgorPCFFTlRJ
VFkgYW5nc3QgIiYjeEM1OyI+Cis8IUVOVElUWSBBRWxpZyAiJiN4QzY7Ij4KKzwhRU5USVRZIENj
ZWRpbCAiJiN4Qzc7Ij4KKzwhRU5USVRZIEVncmF2ZSAiJiN4Qzg7Ij4KKzwhRU5USVRZIEVhY3V0
ZSAiJiN4Qzk7Ij4KKzwhRU5USVRZIEVjaXJjICImI3hDQTsiPgorPCFFTlRJVFkgRXVtbCAiJiN4
Q0I7Ij4KKzwhRU5USVRZIElncmF2ZSAiJiN4Q0M7Ij4KKzwhRU5USVRZIElhY3V0ZSAiJiN4Q0Q7
Ij4KKzwhRU5USVRZIEljaXJjICImI3hDRTsiPgorPCFFTlRJVFkgSXVtbCAiJiN4Q0Y7Ij4KKzwh
RU5USVRZIEVUSCAiJiN4RDA7Ij4KKzwhRU5USVRZIE50aWxkZSAiJiN4RDE7Ij4KKzwhRU5USVRZ
IE9ncmF2ZSAiJiN4RDI7Ij4KKzwhRU5USVRZIE9hY3V0ZSAiJiN4RDM7Ij4KKzwhRU5USVRZIE9j
aXJjICImI3hENDsiPgorPCFFTlRJVFkgT3RpbGRlICImI3hENTsiPgorPCFFTlRJVFkgT3VtbCAi
JiN4RDY7Ij4KKzwhRU5USVRZIHRpbWVzICImI3hENzsiPgorPCFFTlRJVFkgT3NsYXNoICImI3hE
ODsiPgorPCFFTlRJVFkgVWdyYXZlICImI3hEOTsiPgorPCFFTlRJVFkgVWFjdXRlICImI3hEQTsi
PgorPCFFTlRJVFkgVWNpcmMgIiYjeERCOyI+Cis8IUVOVElUWSBVdW1sICImI3hEQzsiPgorPCFF
TlRJVFkgWWFjdXRlICImI3hERDsiPgorPCFFTlRJVFkgVEhPUk4gIiYjeERFOyI+Cis8IUVOVElU
WSBzemxpZyAiJiN4REY7Ij4KKzwhRU5USVRZIGFncmF2ZSAiJiN4RTA7Ij4KKzwhRU5USVRZIGFh
Y3V0ZSAiJiN4RTE7Ij4KKzwhRU5USVRZIGFjaXJjICImI3hFMjsiPgorPCFFTlRJVFkgYXRpbGRl
ICImI3hFMzsiPgorPCFFTlRJVFkgYXVtbCAiJiN4RTQ7Ij4KKzwhRU5USVRZIGFyaW5nICImI3hF
NTsiPgorPCFFTlRJVFkgYWVsaWcgIiYjeEU2OyI+Cis8IUVOVElUWSBjY2VkaWwgIiYjeEU3OyI+
Cis8IUVOVElUWSBlZ3JhdmUgIiYjeEU4OyI+Cis8IUVOVElUWSBlYWN1dGUgIiYjeEU5OyI+Cis8
IUVOVElUWSBlY2lyYyAiJiN4RUE7Ij4KKzwhRU5USVRZIGV1bWwgIiYjeEVCOyI+Cis8IUVOVElU
WSBpZ3JhdmUgIiYjeEVDOyI+Cis8IUVOVElUWSBpYWN1dGUgIiYjeEVEOyI+Cis8IUVOVElUWSBp
Y2lyYyAiJiN4RUU7Ij4KKzwhRU5USVRZIGl1bWwgIiYjeEVGOyI+Cis8IUVOVElUWSBldGggIiYj
eEYwOyI+Cis8IUVOVElUWSBudGlsZGUgIiYjeEYxOyI+Cis8IUVOVElUWSBvZ3JhdmUgIiYjeEYy
OyI+Cis8IUVOVElUWSBvYWN1dGUgIiYjeEYzOyI+Cis8IUVOVElUWSBvY2lyYyAiJiN4RjQ7Ij4K
KzwhRU5USVRZIG90aWxkZSAiJiN4RjU7Ij4KKzwhRU5USVRZIG91bWwgIiYjeEY2OyI+Cis8IUVO
VElUWSBkaXZpZGUgIiYjeEY3OyI+Cis8IUVOVElUWSBkaXYgIiYjeEY3OyI+Cis8IUVOVElUWSBv
c2xhc2ggIiYjeEY4OyI+Cis8IUVOVElUWSB1Z3JhdmUgIiYjeEY5OyI+Cis8IUVOVElUWSB1YWN1
dGUgIiYjeEZBOyI+Cis8IUVOVElUWSB1Y2lyYyAiJiN4RkI7Ij4KKzwhRU5USVRZIHV1bWwgIiYj
eEZDOyI+Cis8IUVOVElUWSB5YWN1dGUgIiYjeEZEOyI+Cis8IUVOVElUWSB0aG9ybiAiJiN4RkU7
Ij4KKzwhRU5USVRZIHl1bWwgIiYjeEZGOyI+Cis8IUVOVElUWSBBbWFjciAiJiN4MTAwOyI+Cis8
IUVOVElUWSBhbWFjciAiJiN4MTAxOyI+Cis8IUVOVElUWSBBYnJldmUgIiYjeDEwMjsiPgorPCFF
TlRJVFkgYWJyZXZlICImI3gxMDM7Ij4KKzwhRU5USVRZIEFvZ29uICImI3gxMDQ7Ij4KKzwhRU5U
SVRZIGFvZ29uICImI3gxMDU7Ij4KKzwhRU5USVRZIENhY3V0ZSAiJiN4MTA2OyI+Cis8IUVOVElU
WSBjYWN1dGUgIiYjeDEwNzsiPgorPCFFTlRJVFkgQ2NpcmMgIiYjeDEwODsiPgorPCFFTlRJVFkg
Y2NpcmMgIiYjeDEwOTsiPgorPCFFTlRJVFkgQ2RvdCAiJiN4MTBBOyI+Cis8IUVOVElUWSBjZG90
ICImI3gxMEI7Ij4KKzwhRU5USVRZIENjYXJvbiAiJiN4MTBDOyI+Cis8IUVOVElUWSBjY2Fyb24g
IiYjeDEwRDsiPgorPCFFTlRJVFkgRGNhcm9uICImI3gxMEU7Ij4KKzwhRU5USVRZIGRjYXJvbiAi
JiN4MTBGOyI+Cis8IUVOVElUWSBEc3Ryb2sgIiYjeDExMDsiPgorPCFFTlRJVFkgZHN0cm9rICIm
I3gxMTE7Ij4KKzwhRU5USVRZIEVtYWNyICImI3gxMTI7Ij4KKzwhRU5USVRZIGVtYWNyICImI3gx
MTM7Ij4KKzwhRU5USVRZIEVkb3QgIiYjeDExNjsiPgorPCFFTlRJVFkgZWRvdCAiJiN4MTE3OyI+
Cis8IUVOVElUWSBFb2dvbiAiJiN4MTE4OyI+Cis8IUVOVElUWSBlb2dvbiAiJiN4MTE5OyI+Cis8
IUVOVElUWSBFY2Fyb24gIiYjeDExQTsiPgorPCFFTlRJVFkgZWNhcm9uICImI3gxMUI7Ij4KKzwh
RU5USVRZIEdjaXJjICImI3gxMUM7Ij4KKzwhRU5USVRZIGdjaXJjICImI3gxMUQ7Ij4KKzwhRU5U
SVRZIEdicmV2ZSAiJiN4MTFFOyI+Cis8IUVOVElUWSBnYnJldmUgIiYjeDExRjsiPgorPCFFTlRJ
VFkgR2RvdCAiJiN4MTIwOyI+Cis8IUVOVElUWSBnZG90ICImI3gxMjE7Ij4KKzwhRU5USVRZIEdj
ZWRpbCAiJiN4MTIyOyI+Cis8IUVOVElUWSBIY2lyYyAiJiN4MTI0OyI+Cis8IUVOVElUWSBoY2ly
YyAiJiN4MTI1OyI+Cis8IUVOVElUWSBIc3Ryb2sgIiYjeDEyNjsiPgorPCFFTlRJVFkgaHN0cm9r
ICImI3gxMjc7Ij4KKzwhRU5USVRZIEl0aWxkZSAiJiN4MTI4OyI+Cis8IUVOVElUWSBpdGlsZGUg
IiYjeDEyOTsiPgorPCFFTlRJVFkgSW1hY3IgIiYjeDEyQTsiPgorPCFFTlRJVFkgaW1hY3IgIiYj
eDEyQjsiPgorPCFFTlRJVFkgSW9nb24gIiYjeDEyRTsiPgorPCFFTlRJVFkgaW9nb24gIiYjeDEy
RjsiPgorPCFFTlRJVFkgSWRvdCAiJiN4MTMwOyI+Cis8IUVOVElUWSBpbWF0aCAiJiN4MTMxOyI+
Cis8IUVOVElUWSBpbm9kb3QgIiYjeDEzMTsiPgorPCFFTlRJVFkgSUpsaWcgIiYjeDEzMjsiPgor
PCFFTlRJVFkgaWpsaWcgIiYjeDEzMzsiPgorPCFFTlRJVFkgSmNpcmMgIiYjeDEzNDsiPgorPCFF
TlRJVFkgamNpcmMgIiYjeDEzNTsiPgorPCFFTlRJVFkgS2NlZGlsICImI3gxMzY7Ij4KKzwhRU5U
SVRZIGtjZWRpbCAiJiN4MTM3OyI+Cis8IUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiPgorPCFFTlRJ
VFkgTGFjdXRlICImI3gxMzk7Ij4KKzwhRU5USVRZIGxhY3V0ZSAiJiN4MTNBOyI+Cis8IUVOVElU
WSBMY2VkaWwgIiYjeDEzQjsiPgorPCFFTlRJVFkgbGNlZGlsICImI3gxM0M7Ij4KKzwhRU5USVRZ
IExjYXJvbiAiJiN4MTNEOyI+Cis8IUVOVElUWSBsY2Fyb24gIiYjeDEzRTsiPgorPCFFTlRJVFkg
TG1pZG90ICImI3gxM0Y7Ij4KKzwhRU5USVRZIGxtaWRvdCAiJiN4MTQwOyI+Cis8IUVOVElUWSBM
c3Ryb2sgIiYjeDE0MTsiPgorPCFFTlRJVFkgbHN0cm9rICImI3gxNDI7Ij4KKzwhRU5USVRZIE5h
Y3V0ZSAiJiN4MTQzOyI+Cis8IUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiPgorPCFFTlRJVFkgTmNl
ZGlsICImI3gxNDU7Ij4KKzwhRU5USVRZIG5jZWRpbCAiJiN4MTQ2OyI+Cis8IUVOVElUWSBOY2Fy
b24gIiYjeDE0NzsiPgorPCFFTlRJVFkgbmNhcm9uICImI3gxNDg7Ij4KKzwhRU5USVRZIG5hcG9z
ICImI3gxNDk7Ij4KKzwhRU5USVRZIEVORyAiJiN4MTRBOyI+Cis8IUVOVElUWSBlbmcgIiYjeDE0
QjsiPgorPCFFTlRJVFkgT21hY3IgIiYjeDE0QzsiPgorPCFFTlRJVFkgb21hY3IgIiYjeDE0RDsi
PgorPCFFTlRJVFkgT2RibGFjICImI3gxNTA7Ij4KKzwhRU5USVRZIG9kYmxhYyAiJiN4MTUxOyI+
Cis8IUVOVElUWSBPRWxpZyAiJiN4MTUyOyI+Cis8IUVOVElUWSBvZWxpZyAiJiN4MTUzOyI+Cis8
IUVOVElUWSBSYWN1dGUgIiYjeDE1NDsiPgorPCFFTlRJVFkgcmFjdXRlICImI3gxNTU7Ij4KKzwh
RU5USVRZIFJjZWRpbCAiJiN4MTU2OyI+Cis8IUVOVElUWSByY2VkaWwgIiYjeDE1NzsiPgorPCFF
TlRJVFkgUmNhcm9uICImI3gxNTg7Ij4KKzwhRU5USVRZIHJjYXJvbiAiJiN4MTU5OyI+Cis8IUVO
VElUWSBTYWN1dGUgIiYjeDE1QTsiPgorPCFFTlRJVFkgc2FjdXRlICImI3gxNUI7Ij4KKzwhRU5U
SVRZIFNjaXJjICImI3gxNUM7Ij4KKzwhRU5USVRZIHNjaXJjICImI3gxNUQ7Ij4KKzwhRU5USVRZ
IFNjZWRpbCAiJiN4MTVFOyI+Cis8IUVOVElUWSBzY2VkaWwgIiYjeDE1RjsiPgorPCFFTlRJVFkg
U2Nhcm9uICImI3gxNjA7Ij4KKzwhRU5USVRZIHNjYXJvbiAiJiN4MTYxOyI+Cis8IUVOVElUWSBU
Y2VkaWwgIiYjeDE2MjsiPgorPCFFTlRJVFkgdGNlZGlsICImI3gxNjM7Ij4KKzwhRU5USVRZIFRj
YXJvbiAiJiN4MTY0OyI+Cis8IUVOVElUWSB0Y2Fyb24gIiYjeDE2NTsiPgorPCFFTlRJVFkgVHN0
cm9rICImI3gxNjY7Ij4KKzwhRU5USVRZIHRzdHJvayAiJiN4MTY3OyI+Cis8IUVOVElUWSBVdGls
ZGUgIiYjeDE2ODsiPgorPCFFTlRJVFkgdXRpbGRlICImI3gxNjk7Ij4KKzwhRU5USVRZIFVtYWNy
ICImI3gxNkE7Ij4KKzwhRU5USVRZIHVtYWNyICImI3gxNkI7Ij4KKzwhRU5USVRZIFVicmV2ZSAi
JiN4MTZDOyI+Cis8IUVOVElUWSB1YnJldmUgIiYjeDE2RDsiPgorPCFFTlRJVFkgVXJpbmcgIiYj
eDE2RTsiPgorPCFFTlRJVFkgdXJpbmcgIiYjeDE2RjsiPgorPCFFTlRJVFkgVWRibGFjICImI3gx
NzA7Ij4KKzwhRU5USVRZIHVkYmxhYyAiJiN4MTcxOyI+Cis8IUVOVElUWSBVb2dvbiAiJiN4MTcy
OyI+Cis8IUVOVElUWSB1b2dvbiAiJiN4MTczOyI+Cis8IUVOVElUWSBXY2lyYyAiJiN4MTc0OyI+
Cis8IUVOVElUWSB3Y2lyYyAiJiN4MTc1OyI+Cis8IUVOVElUWSBZY2lyYyAiJiN4MTc2OyI+Cis8
IUVOVElUWSB5Y2lyYyAiJiN4MTc3OyI+Cis8IUVOVElUWSBZdW1sICImI3gxNzg7Ij4KKzwhRU5U
SVRZIFphY3V0ZSAiJiN4MTc5OyI+Cis8IUVOVElUWSB6YWN1dGUgIiYjeDE3QTsiPgorPCFFTlRJ
VFkgWmRvdCAiJiN4MTdCOyI+Cis8IUVOVElUWSB6ZG90ICImI3gxN0M7Ij4KKzwhRU5USVRZIFpj
YXJvbiAiJiN4MTdEOyI+Cis8IUVOVElUWSB6Y2Fyb24gIiYjeDE3RTsiPgorPCFFTlRJVFkgZm5v
ZiAiJiN4MTkyOyI+Cis8IUVOVElUWSBpbXBlZCAiJiN4MUI1OyI+Cis8IUVOVElUWSBnYWN1dGUg
IiYjeDFGNTsiPgorPCFFTlRJVFkgam1hdGggIiYjeDIzNzsiPgorPCFFTlRJVFkgY2lyYyAiJiN4
MkM2OyI+Cis8IUVOVElUWSBjYXJvbiAiJiN4MkM3OyI+Cis8IUVOVElUWSBIYWNlayAiJiN4MkM3
OyI+Cis8IUVOVElUWSBicmV2ZSAiJiN4MkQ4OyI+Cis8IUVOVElUWSBCcmV2ZSAiJiN4MkQ4OyI+
Cis8IUVOVElUWSBkb3QgIiYjeDJEOTsiPgorPCFFTlRJVFkgRGlhY3JpdGljYWxEb3QgIiYjeDJE
OTsiPgorPCFFTlRJVFkgcmluZyAiJiN4MkRBOyI+Cis8IUVOVElUWSBvZ29uICImI3gyREI7Ij4K
KzwhRU5USVRZIHRpbGRlICImI3gyREM7Ij4KKzwhRU5USVRZIERpYWNyaXRpY2FsVGlsZGUgIiYj
eDJEQzsiPgorPCFFTlRJVFkgZGJsYWMgIiYjeDJERDsiPgorPCFFTlRJVFkgRGlhY3JpdGljYWxE
b3VibGVBY3V0ZSAiJiN4MkREOyI+Cis8IUVOVElUWSBEb3duQnJldmUgIiYjeDMxMTsiPgorPCFF
TlRJVFkgQWxwaGEgIiYjeDM5MTsiPgorPCFFTlRJVFkgQmV0YSAiJiN4MzkyOyI+Cis8IUVOVElU
WSBHYW1tYSAiJiN4MzkzOyI+Cis8IUVOVElUWSBEZWx0YSAiJiN4Mzk0OyI+Cis8IUVOVElUWSBF
cHNpbG9uICImI3gzOTU7Ij4KKzwhRU5USVRZIFpldGEgIiYjeDM5NjsiPgorPCFFTlRJVFkgRXRh
ICImI3gzOTc7Ij4KKzwhRU5USVRZIFRoZXRhICImI3gzOTg7Ij4KKzwhRU5USVRZIElvdGEgIiYj
eDM5OTsiPgorPCFFTlRJVFkgS2FwcGEgIiYjeDM5QTsiPgorPCFFTlRJVFkgTGFtYmRhICImI3gz
OUI7Ij4KKzwhRU5USVRZIE11ICImI3gzOUM7Ij4KKzwhRU5USVRZIE51ICImI3gzOUQ7Ij4KKzwh
RU5USVRZIFhpICImI3gzOUU7Ij4KKzwhRU5USVRZIE9taWNyb24gIiYjeDM5RjsiPgorPCFFTlRJ
VFkgUGkgIiYjeDNBMDsiPgorPCFFTlRJVFkgUmhvICImI3gzQTE7Ij4KKzwhRU5USVRZIFNpZ21h
ICImI3gzQTM7Ij4KKzwhRU5USVRZIFRhdSAiJiN4M0E0OyI+Cis8IUVOVElUWSBVcHNpbG9uICIm
I3gzQTU7Ij4KKzwhRU5USVRZIFBoaSAiJiN4M0E2OyI+Cis8IUVOVElUWSBDaGkgIiYjeDNBNzsi
PgorPCFFTlRJVFkgUHNpICImI3gzQTg7Ij4KKzwhRU5USVRZIE9tZWdhICImI3gzQTk7Ij4KKzwh
RU5USVRZIG9obSAiJiN4M0E5OyI+Cis8IUVOVElUWSBhbHBoYSAiJiN4M0IxOyI+Cis8IUVOVElU
WSBiZXRhICImI3gzQjI7Ij4KKzwhRU5USVRZIGdhbW1hICImI3gzQjM7Ij4KKzwhRU5USVRZIGRl
bHRhICImI3gzQjQ7Ij4KKzwhRU5USVRZIGVwc2kgIiYjeDNCNTsiPgorPCFFTlRJVFkgZXBzaWxv
biAiJiN4M0I1OyI+Cis8IUVOVElUWSB6ZXRhICImI3gzQjY7Ij4KKzwhRU5USVRZIGV0YSAiJiN4
M0I3OyI+Cis8IUVOVElUWSB0aGV0YSAiJiN4M0I4OyI+Cis8IUVOVElUWSBpb3RhICImI3gzQjk7
Ij4KKzwhRU5USVRZIGthcHBhICImI3gzQkE7Ij4KKzwhRU5USVRZIGxhbWJkYSAiJiN4M0JCOyI+
Cis8IUVOVElUWSBtdSAiJiN4M0JDOyI+Cis8IUVOVElUWSBudSAiJiN4M0JEOyI+Cis8IUVOVElU
WSB4aSAiJiN4M0JFOyI+Cis8IUVOVElUWSBvbWljcm9uICImI3gzQkY7Ij4KKzwhRU5USVRZIHBp
ICImI3gzQzA7Ij4KKzwhRU5USVRZIHJobyAiJiN4M0MxOyI+Cis8IUVOVElUWSBzaWdtYXYgIiYj
eDNDMjsiPgorPCFFTlRJVFkgdmFyc2lnbWEgIiYjeDNDMjsiPgorPCFFTlRJVFkgc2lnbWFmICIm
I3gzQzI7Ij4KKzwhRU5USVRZIHNpZ21hICImI3gzQzM7Ij4KKzwhRU5USVRZIHRhdSAiJiN4M0M0
OyI+Cis8IUVOVElUWSB1cHNpICImI3gzQzU7Ij4KKzwhRU5USVRZIHVwc2lsb24gIiYjeDNDNTsi
PgorPCFFTlRJVFkgcGhpICImI3gzQzY7Ij4KKzwhRU5USVRZIGNoaSAiJiN4M0M3OyI+Cis8IUVO
VElUWSBwc2kgIiYjeDNDODsiPgorPCFFTlRJVFkgb21lZ2EgIiYjeDNDOTsiPgorPCFFTlRJVFkg
dGhldGF2ICImI3gzRDE7Ij4KKzwhRU5USVRZIHZhcnRoZXRhICImI3gzRDE7Ij4KKzwhRU5USVRZ
IHRoZXRhc3ltICImI3gzRDE7Ij4KKzwhRU5USVRZIFVwc2kgIiYjeDNEMjsiPgorPCFFTlRJVFkg
dXBzaWggIiYjeDNEMjsiPgorPCFFTlRJVFkgc3RyYWlnaHRwaGkgIiYjeDNENTsiPgorPCFFTlRJ
VFkgcGhpdiAiJiN4M0Q1OyI+Cis8IUVOVElUWSB2YXJwaGkgIiYjeDNENTsiPgorPCFFTlRJVFkg
cGl2ICImI3gzRDY7Ij4KKzwhRU5USVRZIHZhcnBpICImI3gzRDY7Ij4KKzwhRU5USVRZIEdhbW1h
ZCAiJiN4M0RDOyI+Cis8IUVOVElUWSBnYW1tYWQgIiYjeDNERDsiPgorPCFFTlRJVFkgZGlnYW1t
YSAiJiN4M0REOyI+Cis8IUVOVElUWSBrYXBwYXYgIiYjeDNGMDsiPgorPCFFTlRJVFkgdmFya2Fw
cGEgIiYjeDNGMDsiPgorPCFFTlRJVFkgcmhvdiAiJiN4M0YxOyI+Cis8IUVOVElUWSB2YXJyaG8g
IiYjeDNGMTsiPgorPCFFTlRJVFkgZXBzaXYgIiYjeDNGNTsiPgorPCFFTlRJVFkgc3RyYWlnaHRl
cHNpbG9uICImI3gzRjU7Ij4KKzwhRU5USVRZIHZhcmVwc2lsb24gIiYjeDNGNTsiPgorPCFFTlRJ
VFkgYmVwc2kgIiYjeDNGNjsiPgorPCFFTlRJVFkgYmFja2Vwc2lsb24gIiYjeDNGNjsiPgorPCFF
TlRJVFkgSU9jeSAiJiN4NDAxOyI+Cis8IUVOVElUWSBESmN5ICImI3g0MDI7Ij4KKzwhRU5USVRZ
IEdKY3kgIiYjeDQwMzsiPgorPCFFTlRJVFkgSnVrY3kgIiYjeDQwNDsiPgorPCFFTlRJVFkgRFNj
eSAiJiN4NDA1OyI+Cis8IUVOVElUWSBJdWtjeSAiJiN4NDA2OyI+Cis8IUVOVElUWSBZSWN5ICIm
I3g0MDc7Ij4KKzwhRU5USVRZIEpzZXJjeSAiJiN4NDA4OyI+Cis8IUVOVElUWSBMSmN5ICImI3g0
MDk7Ij4KKzwhRU5USVRZIE5KY3kgIiYjeDQwQTsiPgorPCFFTlRJVFkgVFNIY3kgIiYjeDQwQjsi
PgorPCFFTlRJVFkgS0pjeSAiJiN4NDBDOyI+Cis8IUVOVElUWSBVYnJjeSAiJiN4NDBFOyI+Cis8
IUVOVElUWSBEWmN5ICImI3g0MEY7Ij4KKzwhRU5USVRZIEFjeSAiJiN4NDEwOyI+Cis8IUVOVElU
WSBCY3kgIiYjeDQxMTsiPgorPCFFTlRJVFkgVmN5ICImI3g0MTI7Ij4KKzwhRU5USVRZIEdjeSAi
JiN4NDEzOyI+Cis8IUVOVElUWSBEY3kgIiYjeDQxNDsiPgorPCFFTlRJVFkgSUVjeSAiJiN4NDE1
OyI+Cis8IUVOVElUWSBaSGN5ICImI3g0MTY7Ij4KKzwhRU5USVRZIFpjeSAiJiN4NDE3OyI+Cis8
IUVOVElUWSBJY3kgIiYjeDQxODsiPgorPCFFTlRJVFkgSmN5ICImI3g0MTk7Ij4KKzwhRU5USVRZ
IEtjeSAiJiN4NDFBOyI+Cis8IUVOVElUWSBMY3kgIiYjeDQxQjsiPgorPCFFTlRJVFkgTWN5ICIm
I3g0MUM7Ij4KKzwhRU5USVRZIE5jeSAiJiN4NDFEOyI+Cis8IUVOVElUWSBPY3kgIiYjeDQxRTsi
PgorPCFFTlRJVFkgUGN5ICImI3g0MUY7Ij4KKzwhRU5USVRZIFJjeSAiJiN4NDIwOyI+Cis8IUVO
VElUWSBTY3kgIiYjeDQyMTsiPgorPCFFTlRJVFkgVGN5ICImI3g0MjI7Ij4KKzwhRU5USVRZIFVj
eSAiJiN4NDIzOyI+Cis8IUVOVElUWSBGY3kgIiYjeDQyNDsiPgorPCFFTlRJVFkgS0hjeSAiJiN4
NDI1OyI+Cis8IUVOVElUWSBUU2N5ICImI3g0MjY7Ij4KKzwhRU5USVRZIENIY3kgIiYjeDQyNzsi
PgorPCFFTlRJVFkgU0hjeSAiJiN4NDI4OyI+Cis8IUVOVElUWSBTSENIY3kgIiYjeDQyOTsiPgor
PCFFTlRJVFkgSEFSRGN5ICImI3g0MkE7Ij4KKzwhRU5USVRZIFljeSAiJiN4NDJCOyI+Cis8IUVO
VElUWSBTT0ZUY3kgIiYjeDQyQzsiPgorPCFFTlRJVFkgRWN5ICImI3g0MkQ7Ij4KKzwhRU5USVRZ
IFlVY3kgIiYjeDQyRTsiPgorPCFFTlRJVFkgWUFjeSAiJiN4NDJGOyI+Cis8IUVOVElUWSBhY3kg
IiYjeDQzMDsiPgorPCFFTlRJVFkgYmN5ICImI3g0MzE7Ij4KKzwhRU5USVRZIHZjeSAiJiN4NDMy
OyI+Cis8IUVOVElUWSBnY3kgIiYjeDQzMzsiPgorPCFFTlRJVFkgZGN5ICImI3g0MzQ7Ij4KKzwh
RU5USVRZIGllY3kgIiYjeDQzNTsiPgorPCFFTlRJVFkgemhjeSAiJiN4NDM2OyI+Cis8IUVOVElU
WSB6Y3kgIiYjeDQzNzsiPgorPCFFTlRJVFkgaWN5ICImI3g0Mzg7Ij4KKzwhRU5USVRZIGpjeSAi
JiN4NDM5OyI+Cis8IUVOVElUWSBrY3kgIiYjeDQzQTsiPgorPCFFTlRJVFkgbGN5ICImI3g0M0I7
Ij4KKzwhRU5USVRZIG1jeSAiJiN4NDNDOyI+Cis8IUVOVElUWSBuY3kgIiYjeDQzRDsiPgorPCFF
TlRJVFkgb2N5ICImI3g0M0U7Ij4KKzwhRU5USVRZIHBjeSAiJiN4NDNGOyI+Cis8IUVOVElUWSBy
Y3kgIiYjeDQ0MDsiPgorPCFFTlRJVFkgc2N5ICImI3g0NDE7Ij4KKzwhRU5USVRZIHRjeSAiJiN4
NDQyOyI+Cis8IUVOVElUWSB1Y3kgIiYjeDQ0MzsiPgorPCFFTlRJVFkgZmN5ICImI3g0NDQ7Ij4K
KzwhRU5USVRZIGtoY3kgIiYjeDQ0NTsiPgorPCFFTlRJVFkgdHNjeSAiJiN4NDQ2OyI+Cis8IUVO
VElUWSBjaGN5ICImI3g0NDc7Ij4KKzwhRU5USVRZIHNoY3kgIiYjeDQ0ODsiPgorPCFFTlRJVFkg
c2hjaGN5ICImI3g0NDk7Ij4KKzwhRU5USVRZIGhhcmRjeSAiJiN4NDRBOyI+Cis8IUVOVElUWSB5
Y3kgIiYjeDQ0QjsiPgorPCFFTlRJVFkgc29mdGN5ICImI3g0NEM7Ij4KKzwhRU5USVRZIGVjeSAi
JiN4NDREOyI+Cis8IUVOVElUWSB5dWN5ICImI3g0NEU7Ij4KKzwhRU5USVRZIHlhY3kgIiYjeDQ0
RjsiPgorPCFFTlRJVFkgaW9jeSAiJiN4NDUxOyI+Cis8IUVOVElUWSBkamN5ICImI3g0NTI7Ij4K
KzwhRU5USVRZIGdqY3kgIiYjeDQ1MzsiPgorPCFFTlRJVFkganVrY3kgIiYjeDQ1NDsiPgorPCFF
TlRJVFkgZHNjeSAiJiN4NDU1OyI+Cis8IUVOVElUWSBpdWtjeSAiJiN4NDU2OyI+Cis8IUVOVElU
WSB5aWN5ICImI3g0NTc7Ij4KKzwhRU5USVRZIGpzZXJjeSAiJiN4NDU4OyI+Cis8IUVOVElUWSBs
amN5ICImI3g0NTk7Ij4KKzwhRU5USVRZIG5qY3kgIiYjeDQ1QTsiPgorPCFFTlRJVFkgdHNoY3kg
IiYjeDQ1QjsiPgorPCFFTlRJVFkga2pjeSAiJiN4NDVDOyI+Cis8IUVOVElUWSB1YnJjeSAiJiN4
NDVFOyI+Cis8IUVOVElUWSBkemN5ICImI3g0NUY7Ij4KKzwhRU5USVRZIGVuc3AgIiYjeDIwMDI7
Ij4KKzwhRU5USVRZIGVtc3AgIiYjeDIwMDM7Ij4KKzwhRU5USVRZIGVtc3AxMyAiJiN4MjAwNDsi
PgorPCFFTlRJVFkgZW1zcDE0ICImI3gyMDA1OyI+Cis8IUVOVElUWSBudW1zcCAiJiN4MjAwNzsi
PgorPCFFTlRJVFkgcHVuY3NwICImI3gyMDA4OyI+Cis8IUVOVElUWSB0aGluc3AgIiYjeDIwMDk7
Ij4KKzwhRU5USVRZIFRoaW5TcGFjZSAiJiN4MjAwOTsiPgorPCFFTlRJVFkgaGFpcnNwICImI3gy
MDBBOyI+Cis8IUVOVElUWSBWZXJ5VGhpblNwYWNlICImI3gyMDBBOyI+Cis8IUVOVElUWSBaZXJv
V2lkdGhTcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJVFkgTmVnYXRpdmVWZXJ5VGhpblNwYWNlICIm
I3gyMDBCOyI+Cis8IUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJ
VFkgTmVnYXRpdmVNZWRpdW1TcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJVFkgTmVnYXRpdmVUaGlj
a1NwYWNlICImI3gyMDBCOyI+Cis8IUVOVElUWSB6d25qICImI3gyMDBDOyI+Cis8IUVOVElUWSB6
d2ogIiYjeDIwMEQ7Ij4KKzwhRU5USVRZIGxybSAiJiN4MjAwRTsiPgorPCFFTlRJVFkgcmxtICIm
I3gyMDBGOyI+Cis8IUVOVElUWSBoeXBoZW4gIiYjeDIwMTA7Ij4KKzwhRU5USVRZIGRhc2ggIiYj
eDIwMTA7Ij4KKzwhRU5USVRZIG5kYXNoICImI3gyMDEzOyI+Cis8IUVOVElUWSBtZGFzaCAiJiN4
MjAxNDsiPgorPCFFTlRJVFkgaG9yYmFyICImI3gyMDE1OyI+Cis8IUVOVElUWSBWZXJiYXIgIiYj
eDIwMTY7Ij4KKzwhRU5USVRZIFZlcnQgIiYjeDIwMTY7Ij4KKzwhRU5USVRZIGxzcXVvICImI3gy
MDE4OyI+Cis8IUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiPgorPCFFTlRJVFkgcnNx
dW8gIiYjeDIwMTk7Ij4KKzwhRU5USVRZIHJzcXVvciAiJiN4MjAxOTsiPgorPCFFTlRJVFkgQ2xv
c2VDdXJseVF1b3RlICImI3gyMDE5OyI+Cis8IUVOVElUWSBsc3F1b3IgIiYjeDIwMUE7Ij4KKzwh
RU5USVRZIHNicXVvICImI3gyMDFBOyI+Cis8IUVOVElUWSBsZHF1byAiJiN4MjAxQzsiPgorPCFF
TlRJVFkgT3BlbkN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUM7Ij4KKzwhRU5USVRZIHJkcXVvICIm
I3gyMDFEOyI+Cis8IUVOVElUWSByZHF1b3IgIiYjeDIwMUQ7Ij4KKzwhRU5USVRZIENsb3NlQ3Vy
bHlEb3VibGVRdW90ZSAiJiN4MjAxRDsiPgorPCFFTlRJVFkgbGRxdW9yICImI3gyMDFFOyI+Cis8
IUVOVElUWSBiZHF1byAiJiN4MjAxRTsiPgorPCFFTlRJVFkgZGFnZ2VyICImI3gyMDIwOyI+Cis8
IUVOVElUWSBEYWdnZXIgIiYjeDIwMjE7Ij4KKzwhRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ij4K
KzwhRU5USVRZIGJ1bGwgIiYjeDIwMjI7Ij4KKzwhRU5USVRZIGJ1bGxldCAiJiN4MjAyMjsiPgor
PCFFTlRJVFkgbmxkciAiJiN4MjAyNTsiPgorPCFFTlRJVFkgaGVsbGlwICImI3gyMDI2OyI+Cis8
IUVOVElUWSBtbGRyICImI3gyMDI2OyI+Cis8IUVOVElUWSBwZXJtaWwgIiYjeDIwMzA7Ij4KKzwh
RU5USVRZIHBlcnRlbmsgIiYjeDIwMzE7Ij4KKzwhRU5USVRZIHByaW1lICImI3gyMDMyOyI+Cis8
IUVOVElUWSBQcmltZSAiJiN4MjAzMzsiPgorPCFFTlRJVFkgdHByaW1lICImI3gyMDM0OyI+Cis8
IUVOVElUWSBicHJpbWUgIiYjeDIwMzU7Ij4KKzwhRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsi
PgorPCFFTlRJVFkgbHNhcXVvICImI3gyMDM5OyI+Cis8IUVOVElUWSByc2FxdW8gIiYjeDIwM0E7
Ij4KKzwhRU5USVRZIG9saW5lICImI3gyMDNFOyI+Cis8IUVOVElUWSBPdmVyQmFyICImI3gyMDNF
OyI+Cis8IUVOVElUWSBjYXJldCAiJiN4MjA0MTsiPgorPCFFTlRJVFkgaHlidWxsICImI3gyMDQz
OyI+Cis8IUVOVElUWSBmcmFzbCAiJiN4MjA0NDsiPgorPCFFTlRJVFkgYnNlbWkgIiYjeDIwNEY7
Ij4KKzwhRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiPgorPCFFTlRJVFkgTWVkaXVtU3BhY2UgIiYj
eDIwNUY7Ij4KKzwhRU5USVRZIFRoaWNrU3BhY2UgIiYjeDIwNUY7JiN4MjAwQTsiPgorPCFFTlRJ
VFkgTm9CcmVhayAiJiN4MjA2MDsiPgorPCFFTlRJVFkgQXBwbHlGdW5jdGlvbiAiJiN4MjA2MTsi
PgorPCFFTlRJVFkgYWYgIiYjeDIwNjE7Ij4KKzwhRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gy
MDYyOyI+Cis8IUVOVElUWSBpdCAiJiN4MjA2MjsiPgorPCFFTlRJVFkgSW52aXNpYmxlQ29tbWEg
IiYjeDIwNjM7Ij4KKzwhRU5USVRZIGljICImI3gyMDYzOyI+Cis8IUVOVElUWSBldXJvICImI3gy
MEFDOyI+Cis8IUVOVElUWSB0ZG90ICImI3gyMERCOyI+Cis8IUVOVElUWSBUcmlwbGVEb3QgIiYj
eDIwREI7Ij4KKzwhRU5USVRZIERvdERvdCAiJiN4MjBEQzsiPgorPCFFTlRJVFkgQ29wZiAiJiN4
MjEwMjsiPgorPCFFTlRJVFkgY29tcGxleGVzICImI3gyMTAyOyI+Cis8IUVOVElUWSBpbmNhcmUg
IiYjeDIxMDU7Ij4KKzwhRU5USVRZIGdzY3IgIiYjeDIxMEE7Ij4KKzwhRU5USVRZIGhhbWlsdCAi
JiN4MjEwQjsiPgorPCFFTlRJVFkgSGlsYmVydFNwYWNlICImI3gyMTBCOyI+Cis8IUVOVElUWSBI
c2NyICImI3gyMTBCOyI+Cis8IUVOVElUWSBIZnIgIiYjeDIxMEM7Ij4KKzwhRU5USVRZIFBvaW5j
YXJlcGxhbmUgIiYjeDIxMEM7Ij4KKzwhRU5USVRZIHF1YXRlcm5pb25zICImI3gyMTBEOyI+Cis8
IUVOVElUWSBIb3BmICImI3gyMTBEOyI+Cis8IUVOVElUWSBwbGFuY2toICImI3gyMTBFOyI+Cis8
IUVOVElUWSBwbGFuY2sgIiYjeDIxMEY7Ij4KKzwhRU5USVRZIGhiYXIgIiYjeDIxMEY7Ij4KKzwh
RU5USVRZIHBsYW5rdiAiJiN4MjEwRjsiPgorPCFFTlRJVFkgaHNsYXNoICImI3gyMTBGOyI+Cis8
IUVOVElUWSBJc2NyICImI3gyMTEwOyI+Cis8IUVOVElUWSBpbWFnbGluZSAiJiN4MjExMDsiPgor
PCFFTlRJVFkgaW1hZ2UgIiYjeDIxMTE7Ij4KKzwhRU5USVRZIEltICImI3gyMTExOyI+Cis8IUVO
VElUWSBpbWFncGFydCAiJiN4MjExMTsiPgorPCFFTlRJVFkgSWZyICImI3gyMTExOyI+Cis8IUVO
VElUWSBMc2NyICImI3gyMTEyOyI+Cis8IUVOVElUWSBsYWdyYW4gIiYjeDIxMTI7Ij4KKzwhRU5U
SVRZIExhcGxhY2V0cmYgIiYjeDIxMTI7Ij4KKzwhRU5USVRZIGVsbCAiJiN4MjExMzsiPgorPCFF
TlRJVFkgTm9wZiAiJiN4MjExNTsiPgorPCFFTlRJVFkgbmF0dXJhbHMgIiYjeDIxMTU7Ij4KKzwh
RU5USVRZIG51bWVybyAiJiN4MjExNjsiPgorPCFFTlRJVFkgY29weXNyICImI3gyMTE3OyI+Cis8
IUVOVElUWSB3ZWllcnAgIiYjeDIxMTg7Ij4KKzwhRU5USVRZIHdwICImI3gyMTE4OyI+Cis8IUVO
VElUWSBQb3BmICImI3gyMTE5OyI+Cis8IUVOVElUWSBwcmltZXMgIiYjeDIxMTk7Ij4KKzwhRU5U
SVRZIHJhdGlvbmFscyAiJiN4MjExQTsiPgorPCFFTlRJVFkgUW9wZiAiJiN4MjExQTsiPgorPCFF
TlRJVFkgUnNjciAiJiN4MjExQjsiPgorPCFFTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiPgorPCFF
TlRJVFkgcmVhbCAiJiN4MjExQzsiPgorPCFFTlRJVFkgUmUgIiYjeDIxMUM7Ij4KKzwhRU5USVRZ
IHJlYWxwYXJ0ICImI3gyMTFDOyI+Cis8IUVOVElUWSBSZnIgIiYjeDIxMUM7Ij4KKzwhRU5USVRZ
IHJlYWxzICImI3gyMTFEOyI+Cis8IUVOVElUWSBSb3BmICImI3gyMTFEOyI+Cis8IUVOVElUWSBy
eCAiJiN4MjExRTsiPgorPCFFTlRJVFkgdHJhZGUgIiYjeDIxMjI7Ij4KKzwhRU5USVRZIFRSQURF
ICImI3gyMTIyOyI+Cis8IUVOVElUWSBpbnRlZ2VycyAiJiN4MjEyNDsiPgorPCFFTlRJVFkgWm9w
ZiAiJiN4MjEyNDsiPgorPCFFTlRJVFkgbWhvICImI3gyMTI3OyI+Cis8IUVOVElUWSBaZnIgIiYj
eDIxMjg7Ij4KKzwhRU5USVRZIHplZXRyZiAiJiN4MjEyODsiPgorPCFFTlRJVFkgaWlvdGEgIiYj
eDIxMjk7Ij4KKzwhRU5USVRZIGJlcm5vdSAiJiN4MjEyQzsiPgorPCFFTlRJVFkgQmVybm91bGxp
cyAiJiN4MjEyQzsiPgorPCFFTlRJVFkgQnNjciAiJiN4MjEyQzsiPgorPCFFTlRJVFkgQ2ZyICIm
I3gyMTJEOyI+Cis8IUVOVElUWSBDYXlsZXlzICImI3gyMTJEOyI+Cis8IUVOVElUWSBlc2NyICIm
I3gyMTJGOyI+Cis8IUVOVElUWSBFc2NyICImI3gyMTMwOyI+Cis8IUVOVElUWSBleHBlY3RhdGlv
biAiJiN4MjEzMDsiPgorPCFFTlRJVFkgRnNjciAiJiN4MjEzMTsiPgorPCFFTlRJVFkgRm91cmll
cnRyZiAiJiN4MjEzMTsiPgorPCFFTlRJVFkgcGhtbWF0ICImI3gyMTMzOyI+Cis8IUVOVElUWSBN
ZWxsaW50cmYgIiYjeDIxMzM7Ij4KKzwhRU5USVRZIE1zY3IgIiYjeDIxMzM7Ij4KKzwhRU5USVRZ
IG9yZGVyICImI3gyMTM0OyI+Cis8IUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyI+Cis8IUVOVElU
WSBvc2NyICImI3gyMTM0OyI+Cis8IUVOVElUWSBhbGVmc3ltICImI3gyMTM1OyI+Cis8IUVOVElU
WSBhbGVwaCAiJiN4MjEzNTsiPgorPCFFTlRJVFkgYmV0aCAiJiN4MjEzNjsiPgorPCFFTlRJVFkg
Z2ltZWwgIiYjeDIxMzc7Ij4KKzwhRU5USVRZIGRhbGV0aCAiJiN4MjEzODsiPgorPCFFTlRJVFkg
Q2FwaXRhbERpZmZlcmVudGlhbEQgIiYjeDIxNDU7Ij4KKzwhRU5USVRZIEREICImI3gyMTQ1OyI+
Cis8IUVOVElUWSBEaWZmZXJlbnRpYWxEICImI3gyMTQ2OyI+Cis8IUVOVElUWSBkZCAiJiN4MjE0
NjsiPgorPCFFTlRJVFkgRXhwb25lbnRpYWxFICImI3gyMTQ3OyI+Cis8IUVOVElUWSBleHBvbmVu
dGlhbGUgIiYjeDIxNDc7Ij4KKzwhRU5USVRZIGVlICImI3gyMTQ3OyI+Cis8IUVOVElUWSBJbWFn
aW5hcnlJICImI3gyMTQ4OyI+Cis8IUVOVElUWSBpaSAiJiN4MjE0ODsiPgorPCFFTlRJVFkgZnJh
YzEzICImI3gyMTUzOyI+Cis8IUVOVElUWSBmcmFjMjMgIiYjeDIxNTQ7Ij4KKzwhRU5USVRZIGZy
YWMxNSAiJiN4MjE1NTsiPgorPCFFTlRJVFkgZnJhYzI1ICImI3gyMTU2OyI+Cis8IUVOVElUWSBm
cmFjMzUgIiYjeDIxNTc7Ij4KKzwhRU5USVRZIGZyYWM0NSAiJiN4MjE1ODsiPgorPCFFTlRJVFkg
ZnJhYzE2ICImI3gyMTU5OyI+Cis8IUVOVElUWSBmcmFjNTYgIiYjeDIxNUE7Ij4KKzwhRU5USVRZ
IGZyYWMxOCAiJiN4MjE1QjsiPgorPCFFTlRJVFkgZnJhYzM4ICImI3gyMTVDOyI+Cis8IUVOVElU
WSBmcmFjNTggIiYjeDIxNUQ7Ij4KKzwhRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiPgorPCFFTlRJ
VFkgbGFyciAiJiN4MjE5MDsiPgorPCFFTlRJVFkgbGVmdGFycm93ICImI3gyMTkwOyI+Cis8IUVO
VElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KKzwhRU5USVRZIHNsYXJyICImI3gyMTkwOyI+Cis8
IUVOVElUWSBTaG9ydExlZnRBcnJvdyAiJiN4MjE5MDsiPgorPCFFTlRJVFkgdWFyciAiJiN4MjE5
MTsiPgorPCFFTlRJVFkgdXBhcnJvdyAiJiN4MjE5MTsiPgorPCFFTlRJVFkgVXBBcnJvdyAiJiN4
MjE5MTsiPgorPCFFTlRJVFkgU2hvcnRVcEFycm93ICImI3gyMTkxOyI+Cis8IUVOVElUWSByYXJy
ICImI3gyMTkyOyI+Cis8IUVOVElUWSByaWdodGFycm93ICImI3gyMTkyOyI+Cis8IUVOVElUWSBS
aWdodEFycm93ICImI3gyMTkyOyI+Cis8IUVOVElUWSBzcmFyciAiJiN4MjE5MjsiPgorPCFFTlRJ
VFkgU2hvcnRSaWdodEFycm93ICImI3gyMTkyOyI+Cis8IUVOVElUWSBkYXJyICImI3gyMTkzOyI+
Cis8IUVOVElUWSBkb3duYXJyb3cgIiYjeDIxOTM7Ij4KKzwhRU5USVRZIERvd25BcnJvdyAiJiN4
MjE5MzsiPgorPCFFTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ij4KKzwhRU5USVRZIGhh
cnIgIiYjeDIxOTQ7Ij4KKzwhRU5USVRZIGxlZnRyaWdodGFycm93ICImI3gyMTk0OyI+Cis8IUVO
VElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiPgorPCFFTlRJVFkgdmFyciAiJiN4MjE5NTsi
PgorPCFFTlRJVFkgdXBkb3duYXJyb3cgIiYjeDIxOTU7Ij4KKzwhRU5USVRZIFVwRG93bkFycm93
ICImI3gyMTk1OyI+Cis8IUVOVElUWSBud2FyciAiJiN4MjE5NjsiPgorPCFFTlRJVFkgVXBwZXJM
ZWZ0QXJyb3cgIiYjeDIxOTY7Ij4KKzwhRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ij4KKzwhRU5U
SVRZIG5lYXJyICImI3gyMTk3OyI+Cis8IUVOVElUWSBVcHBlclJpZ2h0QXJyb3cgIiYjeDIxOTc7
Ij4KKzwhRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ij4KKzwhRU5USVRZIHNlYXJyICImI3gyMTk4
OyI+Cis8IUVOVElUWSBzZWFycm93ICImI3gyMTk4OyI+Cis8IUVOVElUWSBMb3dlclJpZ2h0QXJy
b3cgIiYjeDIxOTg7Ij4KKzwhRU5USVRZIHN3YXJyICImI3gyMTk5OyI+Cis8IUVOVElUWSBzd2Fy
cm93ICImI3gyMTk5OyI+Cis8IUVOVElUWSBMb3dlckxlZnRBcnJvdyAiJiN4MjE5OTsiPgorPCFF
TlRJVFkgbmxhcnIgIiYjeDIxOUE7Ij4KKzwhRU5USVRZIG5sZWZ0YXJyb3cgIiYjeDIxOUE7Ij4K
KzwhRU5USVRZIG5yYXJyICImI3gyMTlCOyI+Cis8IUVOVElUWSBucmlnaHRhcnJvdyAiJiN4MjE5
QjsiPgorPCFFTlRJVFkgcmFycncgIiYjeDIxOUQ7Ij4KKzwhRU5USVRZIHJpZ2h0c3F1aWdhcnJv
dyAiJiN4MjE5RDsiPgorPCFFTlRJVFkgbnJhcnJ3ICImI3gyMTlEOyYjeDMzODsiPgorPCFFTlRJ
VFkgTGFyciAiJiN4MjE5RTsiPgorPCFFTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4MjE5RTsi
PgorPCFFTlRJVFkgVWFyciAiJiN4MjE5RjsiPgorPCFFTlRJVFkgUmFyciAiJiN4MjFBMDsiPgor
PCFFTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ij4KKzwhRU5USVRZIERhcnIgIiYj
eDIxQTE7Ij4KKzwhRU5USVRZIGxhcnJ0bCAiJiN4MjFBMjsiPgorPCFFTlRJVFkgbGVmdGFycm93
dGFpbCAiJiN4MjFBMjsiPgorPCFFTlRJVFkgcmFycnRsICImI3gyMUEzOyI+Cis8IUVOVElUWSBy
aWdodGFycm93dGFpbCAiJiN4MjFBMzsiPgorPCFFTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0
OyI+Cis8IUVOVElUWSBtYXBzdG9sZWZ0ICImI3gyMUE0OyI+Cis8IUVOVElUWSBVcFRlZUFycm93
ICImI3gyMUE1OyI+Cis8IUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiPgorPCFFTlRJVFkgbWFw
ICImI3gyMUE2OyI+Cis8IUVOVElUWSBSaWdodFRlZUFycm93ICImI3gyMUE2OyI+Cis8IUVOVElU
WSBtYXBzdG8gIiYjeDIxQTY7Ij4KKzwhRU5USVRZIERvd25UZWVBcnJvdyAiJiN4MjFBNzsiPgor
PCFFTlRJVFkgbWFwc3RvZG93biAiJiN4MjFBNzsiPgorPCFFTlRJVFkgbGFycmhrICImI3gyMUE5
OyI+Cis8IUVOVElUWSBob29rbGVmdGFycm93ICImI3gyMUE5OyI+Cis8IUVOVElUWSByYXJyaGsg
IiYjeDIxQUE7Ij4KKzwhRU5USVRZIGhvb2tyaWdodGFycm93ICImI3gyMUFBOyI+Cis8IUVOVElU
WSBsYXJybHAgIiYjeDIxQUI7Ij4KKzwhRU5USVRZIGxvb3BhcnJvd2xlZnQgIiYjeDIxQUI7Ij4K
KzwhRU5USVRZIHJhcnJscCAiJiN4MjFBQzsiPgorPCFFTlRJVFkgbG9vcGFycm93cmlnaHQgIiYj
eDIxQUM7Ij4KKzwhRU5USVRZIGhhcnJ3ICImI3gyMUFEOyI+Cis8IUVOVElUWSBsZWZ0cmlnaHRz
cXVpZ2Fycm93ICImI3gyMUFEOyI+Cis8IUVOVElUWSBuaGFyciAiJiN4MjFBRTsiPgorPCFFTlRJ
VFkgbmxlZnRyaWdodGFycm93ICImI3gyMUFFOyI+Cis8IUVOVElUWSBsc2ggIiYjeDIxQjA7Ij4K
KzwhRU5USVRZIExzaCAiJiN4MjFCMDsiPgorPCFFTlRJVFkgcnNoICImI3gyMUIxOyI+Cis8IUVO
VElUWSBSc2ggIiYjeDIxQjE7Ij4KKzwhRU5USVRZIGxkc2ggIiYjeDIxQjI7Ij4KKzwhRU5USVRZ
IHJkc2ggIiYjeDIxQjM7Ij4KKzwhRU5USVRZIGNyYXJyICImI3gyMUI1OyI+Cis8IUVOVElUWSBj
dWxhcnIgIiYjeDIxQjY7Ij4KKzwhRU5USVRZIGN1cnZlYXJyb3dsZWZ0ICImI3gyMUI2OyI+Cis8
IUVOVElUWSBjdXJhcnIgIiYjeDIxQjc7Ij4KKzwhRU5USVRZIGN1cnZlYXJyb3dyaWdodCAiJiN4
MjFCNzsiPgorPCFFTlRJVFkgb2xhcnIgIiYjeDIxQkE7Ij4KKzwhRU5USVRZIGNpcmNsZWFycm93
bGVmdCAiJiN4MjFCQTsiPgorPCFFTlRJVFkgb3JhcnIgIiYjeDIxQkI7Ij4KKzwhRU5USVRZIGNp
cmNsZWFycm93cmlnaHQgIiYjeDIxQkI7Ij4KKzwhRU5USVRZIGxoYXJ1ICImI3gyMUJDOyI+Cis8
IUVOVElUWSBMZWZ0VmVjdG9yICImI3gyMUJDOyI+Cis8IUVOVElUWSBsZWZ0aGFycG9vbnVwICIm
I3gyMUJDOyI+Cis8IUVOVElUWSBsaGFyZCAiJiN4MjFCRDsiPgorPCFFTlRJVFkgbGVmdGhhcnBv
b25kb3duICImI3gyMUJEOyI+Cis8IUVOVElUWSBEb3duTGVmdFZlY3RvciAiJiN4MjFCRDsiPgor
PCFFTlRJVFkgdWhhcnIgIiYjeDIxQkU7Ij4KKzwhRU5USVRZIHVwaGFycG9vbnJpZ2h0ICImI3gy
MUJFOyI+Cis8IUVOVElUWSBSaWdodFVwVmVjdG9yICImI3gyMUJFOyI+Cis8IUVOVElUWSB1aGFy
bCAiJiN4MjFCRjsiPgorPCFFTlRJVFkgdXBoYXJwb29ubGVmdCAiJiN4MjFCRjsiPgorPCFFTlRJ
VFkgTGVmdFVwVmVjdG9yICImI3gyMUJGOyI+Cis8IUVOVElUWSByaGFydSAiJiN4MjFDMDsiPgor
PCFFTlRJVFkgUmlnaHRWZWN0b3IgIiYjeDIxQzA7Ij4KKzwhRU5USVRZIHJpZ2h0aGFycG9vbnVw
ICImI3gyMUMwOyI+Cis8IUVOVElUWSByaGFyZCAiJiN4MjFDMTsiPgorPCFFTlRJVFkgcmlnaHRo
YXJwb29uZG93biAiJiN4MjFDMTsiPgorPCFFTlRJVFkgRG93blJpZ2h0VmVjdG9yICImI3gyMUMx
OyI+Cis8IUVOVElUWSBkaGFyciAiJiN4MjFDMjsiPgorPCFFTlRJVFkgUmlnaHREb3duVmVjdG9y
ICImI3gyMUMyOyI+Cis8IUVOVElUWSBkb3duaGFycG9vbnJpZ2h0ICImI3gyMUMyOyI+Cis8IUVO
VElUWSBkaGFybCAiJiN4MjFDMzsiPgorPCFFTlRJVFkgTGVmdERvd25WZWN0b3IgIiYjeDIxQzM7
Ij4KKzwhRU5USVRZIGRvd25oYXJwb29ubGVmdCAiJiN4MjFDMzsiPgorPCFFTlRJVFkgcmxhcnIg
IiYjeDIxQzQ7Ij4KKzwhRU5USVRZIHJpZ2h0bGVmdGFycm93cyAiJiN4MjFDNDsiPgorPCFFTlRJ
VFkgUmlnaHRBcnJvd0xlZnRBcnJvdyAiJiN4MjFDNDsiPgorPCFFTlRJVFkgdWRhcnIgIiYjeDIx
QzU7Ij4KKzwhRU5USVRZIFVwQXJyb3dEb3duQXJyb3cgIiYjeDIxQzU7Ij4KKzwhRU5USVRZIGxy
YXJyICImI3gyMUM2OyI+Cis8IUVOVElUWSBsZWZ0cmlnaHRhcnJvd3MgIiYjeDIxQzY7Ij4KKzwh
RU5USVRZIExlZnRBcnJvd1JpZ2h0QXJyb3cgIiYjeDIxQzY7Ij4KKzwhRU5USVRZIGxsYXJyICIm
I3gyMUM3OyI+Cis8IUVOVElUWSBsZWZ0bGVmdGFycm93cyAiJiN4MjFDNzsiPgorPCFFTlRJVFkg
dXVhcnIgIiYjeDIxQzg7Ij4KKzwhRU5USVRZIHVwdXBhcnJvd3MgIiYjeDIxQzg7Ij4KKzwhRU5U
SVRZIHJyYXJyICImI3gyMUM5OyI+Cis8IUVOVElUWSByaWdodHJpZ2h0YXJyb3dzICImI3gyMUM5
OyI+Cis8IUVOVElUWSBkZGFyciAiJiN4MjFDQTsiPgorPCFFTlRJVFkgZG93bmRvd25hcnJvd3Mg
IiYjeDIxQ0E7Ij4KKzwhRU5USVRZIGxyaGFyICImI3gyMUNCOyI+Cis8IUVOVElUWSBSZXZlcnNl
RXF1aWxpYnJpdW0gIiYjeDIxQ0I7Ij4KKzwhRU5USVRZIGxlZnRyaWdodGhhcnBvb25zICImI3gy
MUNCOyI+Cis8IUVOVElUWSBybGhhciAiJiN4MjFDQzsiPgorPCFFTlRJVFkgcmlnaHRsZWZ0aGFy
cG9vbnMgIiYjeDIxQ0M7Ij4KKzwhRU5USVRZIEVxdWlsaWJyaXVtICImI3gyMUNDOyI+Cis8IUVO
VElUWSBubEFyciAiJiN4MjFDRDsiPgorPCFFTlRJVFkgbkxlZnRhcnJvdyAiJiN4MjFDRDsiPgor
PCFFTlRJVFkgbmhBcnIgIiYjeDIxQ0U7Ij4KKzwhRU5USVRZIG5MZWZ0cmlnaHRhcnJvdyAiJiN4
MjFDRTsiPgorPCFFTlRJVFkgbnJBcnIgIiYjeDIxQ0Y7Ij4KKzwhRU5USVRZIG5SaWdodGFycm93
ICImI3gyMUNGOyI+Cis8IUVOVElUWSBsQXJyICImI3gyMUQwOyI+Cis8IUVOVElUWSBMZWZ0YXJy
b3cgIiYjeDIxRDA7Ij4KKzwhRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiPgorPCFF
TlRJVFkgdUFyciAiJiN4MjFEMTsiPgorPCFFTlRJVFkgVXBhcnJvdyAiJiN4MjFEMTsiPgorPCFF
TlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiPgorPCFFTlRJVFkgckFyciAiJiN4MjFEMjsi
PgorPCFFTlRJVFkgUmlnaHRhcnJvdyAiJiN4MjFEMjsiPgorPCFFTlRJVFkgSW1wbGllcyAiJiN4
MjFEMjsiPgorPCFFTlRJVFkgRG91YmxlUmlnaHRBcnJvdyAiJiN4MjFEMjsiPgorPCFFTlRJVFkg
ZEFyciAiJiN4MjFEMzsiPgorPCFFTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyI+Cis8IUVOVElU
WSBEb3VibGVEb3duQXJyb3cgIiYjeDIxRDM7Ij4KKzwhRU5USVRZIGhBcnIgIiYjeDIxRDQ7Ij4K
KzwhRU5USVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyI+Cis8IUVOVElUWSBEb3VibGVMZWZ0
UmlnaHRBcnJvdyAiJiN4MjFENDsiPgorPCFFTlRJVFkgaWZmICImI3gyMUQ0OyI+Cis8IUVOVElU
WSB2QXJyICImI3gyMUQ1OyI+Cis8IUVOVElUWSBVcGRvd25hcnJvdyAiJiN4MjFENTsiPgorPCFF
TlRJVFkgRG91YmxlVXBEb3duQXJyb3cgIiYjeDIxRDU7Ij4KKzwhRU5USVRZIG53QXJyICImI3gy
MUQ2OyI+Cis8IUVOVElUWSBuZUFyciAiJiN4MjFENzsiPgorPCFFTlRJVFkgc2VBcnIgIiYjeDIx
RDg7Ij4KKzwhRU5USVRZIHN3QXJyICImI3gyMUQ5OyI+Cis8IUVOVElUWSBsQWFyciAiJiN4MjFE
QTsiPgorPCFFTlRJVFkgTGxlZnRhcnJvdyAiJiN4MjFEQTsiPgorPCFFTlRJVFkgckFhcnIgIiYj
eDIxREI7Ij4KKzwhRU5USVRZIFJyaWdodGFycm93ICImI3gyMURCOyI+Cis8IUVOVElUWSB6aWdy
YXJyICImI3gyMUREOyI+Cis8IUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiPgorPCFFTlRJVFkgTGVm
dEFycm93QmFyICImI3gyMUU0OyI+Cis8IUVOVElUWSByYXJyYiAiJiN4MjFFNTsiPgorPCFFTlRJ
VFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiPgorPCFFTlRJVFkgZHVhcnIgIiYjeDIxRjU7Ij4K
KzwhRU5USVRZIERvd25BcnJvd1VwQXJyb3cgIiYjeDIxRjU7Ij4KKzwhRU5USVRZIGxvYXJyICIm
I3gyMUZEOyI+Cis8IUVOVElUWSByb2FyciAiJiN4MjFGRTsiPgorPCFFTlRJVFkgaG9hcnIgIiYj
eDIxRkY7Ij4KKzwhRU5USVRZIGZvcmFsbCAiJiN4MjIwMDsiPgorPCFFTlRJVFkgRm9yQWxsICIm
I3gyMjAwOyI+Cis8IUVOVElUWSBjb21wICImI3gyMjAxOyI+Cis8IUVOVElUWSBjb21wbGVtZW50
ICImI3gyMjAxOyI+Cis8IUVOVElUWSBwYXJ0ICImI3gyMjAyOyI+Cis8IUVOVElUWSBQYXJ0aWFs
RCAiJiN4MjIwMjsiPgorPCFFTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyI+Cis8IUVOVElU
WSBleGlzdCAiJiN4MjIwMzsiPgorPCFFTlRJVFkgRXhpc3RzICImI3gyMjAzOyI+Cis8IUVOVElU
WSBuZXhpc3QgIiYjeDIyMDQ7Ij4KKzwhRU5USVRZIE5vdEV4aXN0cyAiJiN4MjIwNDsiPgorPCFF
TlRJVFkgbmV4aXN0cyAiJiN4MjIwNDsiPgorPCFFTlRJVFkgZW1wdHkgIiYjeDIyMDU7Ij4KKzwh
RU5USVRZIGVtcHR5c2V0ICImI3gyMjA1OyI+Cis8IUVOVElUWSBlbXB0eXYgIiYjeDIyMDU7Ij4K
KzwhRU5USVRZIHZhcm5vdGhpbmcgIiYjeDIyMDU7Ij4KKzwhRU5USVRZIG5hYmxhICImI3gyMjA3
OyI+Cis8IUVOVElUWSBEZWwgIiYjeDIyMDc7Ij4KKzwhRU5USVRZIGlzaW4gIiYjeDIyMDg7Ij4K
KzwhRU5USVRZIGlzaW52ICImI3gyMjA4OyI+Cis8IUVOVElUWSBFbGVtZW50ICImI3gyMjA4OyI+
Cis8IUVOVElUWSBpbiAiJiN4MjIwODsiPgorPCFFTlRJVFkgbm90aW4gIiYjeDIyMDk7Ij4KKzwh
RU5USVRZIE5vdEVsZW1lbnQgIiYjeDIyMDk7Ij4KKzwhRU5USVRZIG5vdGludmEgIiYjeDIyMDk7
Ij4KKzwhRU5USVRZIG5pdiAiJiN4MjIwQjsiPgorPCFFTlRJVFkgUmV2ZXJzZUVsZW1lbnQgIiYj
eDIyMEI7Ij4KKzwhRU5USVRZIG5pICImI3gyMjBCOyI+Cis8IUVOVElUWSBTdWNoVGhhdCAiJiN4
MjIwQjsiPgorPCFFTlRJVFkgbm90bmkgIiYjeDIyMEM7Ij4KKzwhRU5USVRZIG5vdG5pdmEgIiYj
eDIyMEM7Ij4KKzwhRU5USVRZIE5vdFJldmVyc2VFbGVtZW50ICImI3gyMjBDOyI+Cis8IUVOVElU
WSBwcm9kICImI3gyMjBGOyI+Cis8IUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyI+Cis8IUVOVElU
WSBjb3Byb2QgIiYjeDIyMTA7Ij4KKzwhRU5USVRZIENvcHJvZHVjdCAiJiN4MjIxMDsiPgorPCFF
TlRJVFkgc3VtICImI3gyMjExOyI+Cis8IUVOVElUWSBTdW0gIiYjeDIyMTE7Ij4KKzwhRU5USVRZ
IG1pbnVzICImI3gyMjEyOyI+Cis8IUVOVElUWSBtbnBsdXMgIiYjeDIyMTM7Ij4KKzwhRU5USVRZ
IG1wICImI3gyMjEzOyI+Cis8IUVOVElUWSBNaW51c1BsdXMgIiYjeDIyMTM7Ij4KKzwhRU5USVRZ
IHBsdXNkbyAiJiN4MjIxNDsiPgorPCFFTlRJVFkgZG90cGx1cyAiJiN4MjIxNDsiPgorPCFFTlRJ
VFkgc2V0bW4gIiYjeDIyMTY7Ij4KKzwhRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyI+Cis8IUVO
VElUWSBCYWNrc2xhc2ggIiYjeDIyMTY7Ij4KKzwhRU5USVRZIHNzZXRtbiAiJiN4MjIxNjsiPgor
PCFFTlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiPgorPCFFTlRJVFkgbG93YXN0ICImI3gy
MjE3OyI+Cis8IUVOVElUWSBjb21wZm4gIiYjeDIyMTg7Ij4KKzwhRU5USVRZIFNtYWxsQ2lyY2xl
ICImI3gyMjE4OyI+Cis8IUVOVElUWSByYWRpYyAiJiN4MjIxQTsiPgorPCFFTlRJVFkgU3FydCAi
JiN4MjIxQTsiPgorPCFFTlRJVFkgcHJvcCAiJiN4MjIxRDsiPgorPCFFTlRJVFkgcHJvcHRvICIm
I3gyMjFEOyI+Cis8IUVOVElUWSBQcm9wb3J0aW9uYWwgIiYjeDIyMUQ7Ij4KKzwhRU5USVRZIHZw
cm9wICImI3gyMjFEOyI+Cis8IUVOVElUWSB2YXJwcm9wdG8gIiYjeDIyMUQ7Ij4KKzwhRU5USVRZ
IGluZmluICImI3gyMjFFOyI+Cis8IUVOVElUWSBhbmdydCAiJiN4MjIxRjsiPgorPCFFTlRJVFkg
YW5nICImI3gyMjIwOyI+Cis8IUVOVElUWSBhbmdsZSAiJiN4MjIyMDsiPgorPCFFTlRJVFkgbmFu
ZyAiJiN4MjIyMDsmI3gyMEQyOyI+Cis8IUVOVElUWSBhbmdtc2QgIiYjeDIyMjE7Ij4KKzwhRU5U
SVRZIG1lYXN1cmVkYW5nbGUgIiYjeDIyMjE7Ij4KKzwhRU5USVRZIGFuZ3NwaCAiJiN4MjIyMjsi
PgorPCFFTlRJVFkgbWlkICImI3gyMjIzOyI+Cis8IUVOVElUWSBWZXJ0aWNhbEJhciAiJiN4MjIy
MzsiPgorPCFFTlRJVFkgc21pZCAiJiN4MjIyMzsiPgorPCFFTlRJVFkgc2hvcnRtaWQgIiYjeDIy
MjM7Ij4KKzwhRU5USVRZIG5taWQgIiYjeDIyMjQ7Ij4KKzwhRU5USVRZIE5vdFZlcnRpY2FsQmFy
ICImI3gyMjI0OyI+Cis8IUVOVElUWSBuc21pZCAiJiN4MjIyNDsiPgorPCFFTlRJVFkgbnNob3J0
bWlkICImI3gyMjI0OyI+Cis8IUVOVElUWSBwYXIgIiYjeDIyMjU7Ij4KKzwhRU5USVRZIHBhcmFs
bGVsICImI3gyMjI1OyI+Cis8IUVOVElUWSBEb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNTsiPgor
PCFFTlRJVFkgc3BhciAiJiN4MjIyNTsiPgorPCFFTlRJVFkgc2hvcnRwYXJhbGxlbCAiJiN4MjIy
NTsiPgorPCFFTlRJVFkgbnBhciAiJiN4MjIyNjsiPgorPCFFTlRJVFkgbnBhcmFsbGVsICImI3gy
MjI2OyI+Cis8IUVOVElUWSBOb3REb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNjsiPgorPCFFTlRJ
VFkgbnNwYXIgIiYjeDIyMjY7Ij4KKzwhRU5USVRZIG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyI+
Cis8IUVOVElUWSBhbmQgIiYjeDIyMjc7Ij4KKzwhRU5USVRZIHdlZGdlICImI3gyMjI3OyI+Cis8
IUVOVElUWSBvciAiJiN4MjIyODsiPgorPCFFTlRJVFkgdmVlICImI3gyMjI4OyI+Cis8IUVOVElU
WSBjYXAgIiYjeDIyMjk7Ij4KKzwhRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiPgorPCFF
TlRJVFkgY3VwICImI3gyMjJBOyI+Cis8IUVOVElUWSBjdXBzICImI3gyMjJBOyYjeEZFMDA7Ij4K
KzwhRU5USVRZIGludCAiJiN4MjIyQjsiPgorPCFFTlRJVFkgSW50ZWdyYWwgIiYjeDIyMkI7Ij4K
KzwhRU5USVRZIEludCAiJiN4MjIyQzsiPgorPCFFTlRJVFkgdGludCAiJiN4MjIyRDsiPgorPCFF
TlRJVFkgaWlpbnQgIiYjeDIyMkQ7Ij4KKzwhRU5USVRZIGNvbmludCAiJiN4MjIyRTsiPgorPCFF
TlRJVFkgb2ludCAiJiN4MjIyRTsiPgorPCFFTlRJVFkgQ29udG91ckludGVncmFsICImI3gyMjJF
OyI+Cis8IUVOVElUWSBDb25pbnQgIiYjeDIyMkY7Ij4KKzwhRU5USVRZIERvdWJsZUNvbnRvdXJJ
bnRlZ3JhbCAiJiN4MjIyRjsiPgorPCFFTlRJVFkgQ2NvbmludCAiJiN4MjIzMDsiPgorPCFFTlRJ
VFkgY3dpbnQgIiYjeDIyMzE7Ij4KKzwhRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyI+Cis8IUVO
VElUWSBDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgIiYjeDIyMzI7Ij4KKzwhRU5USVRZIGF3Y29u
aW50ICImI3gyMjMzOyI+Cis8IUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFs
ICImI3gyMjMzOyI+Cis8IUVOVElUWSB0aGVyZTQgIiYjeDIyMzQ7Ij4KKzwhRU5USVRZIHRoZXJl
Zm9yZSAiJiN4MjIzNDsiPgorPCFFTlRJVFkgVGhlcmVmb3JlICImI3gyMjM0OyI+Cis8IUVOVElU
WSBiZWNhdXMgIiYjeDIyMzU7Ij4KKzwhRU5USVRZIGJlY2F1c2UgIiYjeDIyMzU7Ij4KKzwhRU5U
SVRZIEJlY2F1c2UgIiYjeDIyMzU7Ij4KKzwhRU5USVRZIHJhdGlvICImI3gyMjM2OyI+Cis8IUVO
VElUWSBDb2xvbiAiJiN4MjIzNzsiPgorPCFFTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiPgor
PCFFTlRJVFkgbWludXNkICImI3gyMjM4OyI+Cis8IUVOVElUWSBkb3RtaW51cyAiJiN4MjIzODsi
PgorPCFFTlRJVFkgbUREb3QgIiYjeDIyM0E7Ij4KKzwhRU5USVRZIGhvbXRodCAiJiN4MjIzQjsi
PgorPCFFTlRJVFkgc2ltICImI3gyMjNDOyI+Cis8IUVOVElUWSBUaWxkZSAiJiN4MjIzQzsiPgor
PCFFTlRJVFkgdGhrc2ltICImI3gyMjNDOyI+Cis8IUVOVElUWSB0aGlja3NpbSAiJiN4MjIzQzsi
PgorPCFFTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBEMjsiPgorPCFFTlRJVFkgYnNpbSAiJiN4
MjIzRDsiPgorPCFFTlRJVFkgYmFja3NpbSAiJiN4MjIzRDsiPgorPCFFTlRJVFkgcmFjZSAiJiN4
MjIzRDsmI3gzMzE7Ij4KKzwhRU5USVRZIGFjICImI3gyMjNFOyI+Cis8IUVOVElUWSBtc3Rwb3Mg
IiYjeDIyM0U7Ij4KKzwhRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ij4KKzwhRU5USVRZIGFj
ZCAiJiN4MjIzRjsiPgorPCFFTlRJVFkgd3JlYXRoICImI3gyMjQwOyI+Cis8IUVOVElUWSBWZXJ0
aWNhbFRpbGRlICImI3gyMjQwOyI+Cis8IUVOVElUWSB3ciAiJiN4MjI0MDsiPgorPCFFTlRJVFkg
bnNpbSAiJiN4MjI0MTsiPgorPCFFTlRJVFkgTm90VGlsZGUgIiYjeDIyNDE7Ij4KKzwhRU5USVRZ
IGVzaW0gIiYjeDIyNDI7Ij4KKzwhRU5USVRZIEVxdWFsVGlsZGUgIiYjeDIyNDI7Ij4KKzwhRU5U
SVRZIGVxc2ltICImI3gyMjQyOyI+Cis8IUVOVElUWSBOb3RFcXVhbFRpbGRlICImI3gyMjQyOyYj
eDMzODsiPgorPCFFTlRJVFkgbmVzaW0gIiYjeDIyNDI7JiN4MzM4OyI+Cis8IUVOVElUWSBzaW1l
ICImI3gyMjQzOyI+Cis8IUVOVElUWSBUaWxkZUVxdWFsICImI3gyMjQzOyI+Cis8IUVOVElUWSBz
aW1lcSAiJiN4MjI0MzsiPgorPCFFTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ij4KKzwhRU5USVRZIG5z
aW1lcSAiJiN4MjI0NDsiPgorPCFFTlRJVFkgTm90VGlsZGVFcXVhbCAiJiN4MjI0NDsiPgorPCFF
TlRJVFkgY29uZyAiJiN4MjI0NTsiPgorPCFFTlRJVFkgVGlsZGVGdWxsRXF1YWwgIiYjeDIyNDU7
Ij4KKzwhRU5USVRZIHNpbW5lICImI3gyMjQ2OyI+Cis8IUVOVElUWSBuY29uZyAiJiN4MjI0Nzsi
PgorPCFFTlRJVFkgTm90VGlsZGVGdWxsRXF1YWwgIiYjeDIyNDc7Ij4KKzwhRU5USVRZIGFzeW1w
ICImI3gyMjQ4OyI+Cis8IUVOVElUWSBhcCAiJiN4MjI0ODsiPgorPCFFTlRJVFkgVGlsZGVUaWxk
ZSAiJiN4MjI0ODsiPgorPCFFTlRJVFkgYXBwcm94ICImI3gyMjQ4OyI+Cis8IUVOVElUWSB0aGth
cCAiJiN4MjI0ODsiPgorPCFFTlRJVFkgdGhpY2thcHByb3ggIiYjeDIyNDg7Ij4KKzwhRU5USVRZ
IG5hcCAiJiN4MjI0OTsiPgorPCFFTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiPgorPCFF
TlRJVFkgbmFwcHJveCAiJiN4MjI0OTsiPgorPCFFTlRJVFkgYXBlICImI3gyMjRBOyI+Cis8IUVO
VElUWSBhcHByb3hlcSAiJiN4MjI0QTsiPgorPCFFTlRJVFkgYXBpZCAiJiN4MjI0QjsiPgorPCFF
TlRJVFkgbmFwaWQgIiYjeDIyNEI7JiN4MzM4OyI+Cis8IUVOVElUWSBiY29uZyAiJiN4MjI0Qzsi
PgorPCFFTlRJVFkgYmFja2NvbmcgIiYjeDIyNEM7Ij4KKzwhRU5USVRZIGFzeW1wZXEgIiYjeDIy
NEQ7Ij4KKzwhRU5USVRZIEN1cENhcCAiJiN4MjI0RDsiPgorPCFFTlRJVFkgbnZhcCAiJiN4MjI0
RDsmI3gyMEQyOyI+Cis8IUVOVElUWSBidW1wICImI3gyMjRFOyI+Cis8IUVOVElUWSBIdW1wRG93
bkh1bXAgIiYjeDIyNEU7Ij4KKzwhRU5USVRZIEJ1bXBlcSAiJiN4MjI0RTsiPgorPCFFTlRJVFkg
Tm90SHVtcERvd25IdW1wICImI3gyMjRFOyYjeDMzODsiPgorPCFFTlRJVFkgbmJ1bXAgIiYjeDIy
NEU7JiN4MzM4OyI+Cis8IUVOVElUWSBidW1wZSAiJiN4MjI0RjsiPgorPCFFTlRJVFkgSHVtcEVx
dWFsICImI3gyMjRGOyI+Cis8IUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ij4KKzwhRU5USVRZIG5i
dW1wZSAiJiN4MjI0RjsmI3gzMzg7Ij4KKzwhRU5USVRZIE5vdEh1bXBFcXVhbCAiJiN4MjI0Rjsm
I3gzMzg7Ij4KKzwhRU5USVRZIGVzZG90ICImI3gyMjUwOyI+Cis8IUVOVElUWSBEb3RFcXVhbCAi
JiN4MjI1MDsiPgorPCFFTlRJVFkgZG90ZXEgIiYjeDIyNTA7Ij4KKzwhRU5USVRZIG5lZG90ICIm
I3gyMjUwOyYjeDMzODsiPgorPCFFTlRJVFkgZURvdCAiJiN4MjI1MTsiPgorPCFFTlRJVFkgZG90
ZXFkb3QgIiYjeDIyNTE7Ij4KKzwhRU5USVRZIGVmRG90ICImI3gyMjUyOyI+Cis8IUVOVElUWSBm
YWxsaW5nZG90c2VxICImI3gyMjUyOyI+Cis8IUVOVElUWSBlckRvdCAiJiN4MjI1MzsiPgorPCFF
TlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyI+Cis8IUVOVElUWSBjb2xvbmUgIiYjeDIyNTQ7
Ij4KKzwhRU5USVRZIGNvbG9uZXEgIiYjeDIyNTQ7Ij4KKzwhRU5USVRZIEFzc2lnbiAiJiN4MjI1
NDsiPgorPCFFTlRJVFkgZWNvbG9uICImI3gyMjU1OyI+Cis8IUVOVElUWSBlcWNvbG9uICImI3gy
MjU1OyI+Cis8IUVOVElUWSBlY2lyICImI3gyMjU2OyI+Cis8IUVOVElUWSBlcWNpcmMgIiYjeDIy
NTY7Ij4KKzwhRU5USVRZIGNpcmUgIiYjeDIyNTc7Ij4KKzwhRU5USVRZIGNpcmNlcSAiJiN4MjI1
NzsiPgorPCFFTlRJVFkgd2VkZ2VxICImI3gyMjU5OyI+Cis8IUVOVElUWSB2ZWVlcSAiJiN4MjI1
QTsiPgorPCFFTlRJVFkgdHJpZSAiJiN4MjI1QzsiPgorPCFFTlRJVFkgdHJpYW5nbGVxICImI3gy
MjVDOyI+Cis8IUVOVElUWSBlcXVlc3QgIiYjeDIyNUY7Ij4KKzwhRU5USVRZIHF1ZXN0ZXEgIiYj
eDIyNUY7Ij4KKzwhRU5USVRZIG5lICImI3gyMjYwOyI+Cis8IUVOVElUWSBOb3RFcXVhbCAiJiN4
MjI2MDsiPgorPCFFTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ij4KKzwhRU5USVRZIENvbmdydWVudCAi
JiN4MjI2MTsiPgorPCFFTlRJVFkgYm5lcXVpdiAiJiN4MjI2MTsmI3gyMEU1OyI+Cis8IUVOVElU
WSBuZXF1aXYgIiYjeDIyNjI7Ij4KKzwhRU5USVRZIE5vdENvbmdydWVudCAiJiN4MjI2MjsiPgor
PCFFTlRJVFkgbGUgIiYjeDIyNjQ7Ij4KKzwhRU5USVRZIGxlcSAiJiN4MjI2NDsiPgorPCFFTlRJ
VFkgbnZsZSAiJiN4MjI2NDsmI3gyMEQyOyI+Cis8IUVOVElUWSBnZSAiJiN4MjI2NTsiPgorPCFF
TlRJVFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyI+Cis8IUVOVElUWSBnZXEgIiYjeDIyNjU7Ij4K
KzwhRU5USVRZIG52Z2UgIiYjeDIyNjU7JiN4MjBEMjsiPgorPCFFTlRJVFkgbEUgIiYjeDIyNjY7
Ij4KKzwhRU5USVRZIExlc3NGdWxsRXF1YWwgIiYjeDIyNjY7Ij4KKzwhRU5USVRZIGxlcXEgIiYj
eDIyNjY7Ij4KKzwhRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gzMzg7Ij4KKzwhRU5USVRZIG5sZXFx
ICImI3gyMjY2OyYjeDMzODsiPgorPCFFTlRJVFkgZ0UgIiYjeDIyNjc7Ij4KKzwhRU5USVRZIEdy
ZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7Ij4KKzwhRU5USVRZIGdlcXEgIiYjeDIyNjc7Ij4KKzwh
RU5USVRZIG5nRSAiJiN4MjI2NzsmI3gzMzg7Ij4KKzwhRU5USVRZIG5nZXFxICImI3gyMjY3OyYj
eDMzODsiPgorPCFFTlRJVFkgTm90R3JlYXRlckZ1bGxFcXVhbCAiJiN4MjI2NzsmI3gzMzg7Ij4K
KzwhRU5USVRZIGxuRSAiJiN4MjI2ODsiPgorPCFFTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ij4KKzwh
RU5USVRZIGx2bkUgIiYjeDIyNjg7JiN4RkUwMDsiPgorPCFFTlRJVFkgbHZlcnRuZXFxICImI3gy
MjY4OyYjeEZFMDA7Ij4KKzwhRU5USVRZIGduRSAiJiN4MjI2OTsiPgorPCFFTlRJVFkgZ25lcXEg
IiYjeDIyNjk7Ij4KKzwhRU5USVRZIGd2bkUgIiYjeDIyNjk7JiN4RkUwMDsiPgorPCFFTlRJVFkg
Z3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ij4KKzwhRU5USVRZIEx0ICImI3gyMjZBOyI+Cis8
IUVOVElUWSBOZXN0ZWRMZXNzTGVzcyAiJiN4MjI2QTsiPgorPCFFTlRJVFkgbGwgIiYjeDIyNkE7
Ij4KKzwhRU5USVRZIG5MdHYgIiYjeDIyNkE7JiN4MzM4OyI+Cis8IUVOVElUWSBOb3RMZXNzTGVz
cyAiJiN4MjI2QTsmI3gzMzg7Ij4KKzwhRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyI+Cis8
IUVOVElUWSBHdCAiJiN4MjI2QjsiPgorPCFFTlRJVFkgTmVzdGVkR3JlYXRlckdyZWF0ZXIgIiYj
eDIyNkI7Ij4KKzwhRU5USVRZIGdnICImI3gyMjZCOyI+Cis8IUVOVElUWSBuR3R2ICImI3gyMjZC
OyYjeDMzODsiPgorPCFFTlRJVFkgTm90R3JlYXRlckdyZWF0ZXIgIiYjeDIyNkI7JiN4MzM4OyI+
Cis8IUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiPgorPCFFTlRJVFkgdHdpeHQgIiYjeDIy
NkM7Ij4KKzwhRU5USVRZIGJldHdlZW4gIiYjeDIyNkM7Ij4KKzwhRU5USVRZIE5vdEN1cENhcCAi
JiN4MjI2RDsiPgorPCFFTlRJVFkgbmx0ICImI3gyMjZFOyI+Cis8IUVOVElUWSBOb3RMZXNzICIm
I3gyMjZFOyI+Cis8IUVOVElUWSBubGVzcyAiJiN4MjI2RTsiPgorPCFFTlRJVFkgbmd0ICImI3gy
MjZGOyI+Cis8IUVOVElUWSBOb3RHcmVhdGVyICImI3gyMjZGOyI+Cis8IUVOVElUWSBuZ3RyICIm
I3gyMjZGOyI+Cis8IUVOVElUWSBubGUgIiYjeDIyNzA7Ij4KKzwhRU5USVRZIE5vdExlc3NFcXVh
bCAiJiN4MjI3MDsiPgorPCFFTlRJVFkgbmxlcSAiJiN4MjI3MDsiPgorPCFFTlRJVFkgbmdlICIm
I3gyMjcxOyI+Cis8IUVOVElUWSBOb3RHcmVhdGVyRXF1YWwgIiYjeDIyNzE7Ij4KKzwhRU5USVRZ
IG5nZXEgIiYjeDIyNzE7Ij4KKzwhRU5USVRZIGxzaW0gIiYjeDIyNzI7Ij4KKzwhRU5USVRZIExl
c3NUaWxkZSAiJiN4MjI3MjsiPgorPCFFTlRJVFkgbGVzc3NpbSAiJiN4MjI3MjsiPgorPCFFTlRJ
VFkgZ3NpbSAiJiN4MjI3MzsiPgorPCFFTlRJVFkgZ3Ryc2ltICImI3gyMjczOyI+Cis8IUVOVElU
WSBHcmVhdGVyVGlsZGUgIiYjeDIyNzM7Ij4KKzwhRU5USVRZIG5sc2ltICImI3gyMjc0OyI+Cis8
IUVOVElUWSBOb3RMZXNzVGlsZGUgIiYjeDIyNzQ7Ij4KKzwhRU5USVRZIG5nc2ltICImI3gyMjc1
OyI+Cis8IUVOVElUWSBOb3RHcmVhdGVyVGlsZGUgIiYjeDIyNzU7Ij4KKzwhRU5USVRZIGxnICIm
I3gyMjc2OyI+Cis8IUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyI+Cis8IUVOVElUWSBMZXNzR3Jl
YXRlciAiJiN4MjI3NjsiPgorPCFFTlRJVFkgZ2wgIiYjeDIyNzc7Ij4KKzwhRU5USVRZIGd0cmxl
c3MgIiYjeDIyNzc7Ij4KKzwhRU5USVRZIEdyZWF0ZXJMZXNzICImI3gyMjc3OyI+Cis8IUVOVElU
WSBudGxnICImI3gyMjc4OyI+Cis8IUVOVElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiPgor
PCFFTlRJVFkgbnRnbCAiJiN4MjI3OTsiPgorPCFFTlRJVFkgTm90R3JlYXRlckxlc3MgIiYjeDIy
Nzk7Ij4KKzwhRU5USVRZIHByICImI3gyMjdBOyI+Cis8IUVOVElUWSBQcmVjZWRlcyAiJiN4MjI3
QTsiPgorPCFFTlRJVFkgcHJlYyAiJiN4MjI3QTsiPgorPCFFTlRJVFkgc2MgIiYjeDIyN0I7Ij4K
KzwhRU5USVRZIFN1Y2NlZWRzICImI3gyMjdCOyI+Cis8IUVOVElUWSBzdWNjICImI3gyMjdCOyI+
Cis8IUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiPgorPCFFTlRJVFkgUHJlY2VkZXNTbGFudEVxdWFs
ICImI3gyMjdDOyI+Cis8IUVOVElUWSBwcmVjY3VybHllcSAiJiN4MjI3QzsiPgorPCFFTlRJVFkg
c2NjdWUgIiYjeDIyN0Q7Ij4KKzwhRU5USVRZIFN1Y2NlZWRzU2xhbnRFcXVhbCAiJiN4MjI3RDsi
PgorPCFFTlRJVFkgc3VjY2N1cmx5ZXEgIiYjeDIyN0Q7Ij4KKzwhRU5USVRZIHByc2ltICImI3gy
MjdFOyI+Cis8IUVOVElUWSBwcmVjc2ltICImI3gyMjdFOyI+Cis8IUVOVElUWSBQcmVjZWRlc1Rp
bGRlICImI3gyMjdFOyI+Cis8IUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiPgorPCFFTlRJVFkgc3Vj
Y3NpbSAiJiN4MjI3RjsiPgorPCFFTlRJVFkgU3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsiPgorPCFF
TlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ij4KKzwhRU5USVRZIG5wciAi
JiN4MjI4MDsiPgorPCFFTlRJVFkgbnByZWMgIiYjeDIyODA7Ij4KKzwhRU5USVRZIE5vdFByZWNl
ZGVzICImI3gyMjgwOyI+Cis8IUVOVElUWSBuc2MgIiYjeDIyODE7Ij4KKzwhRU5USVRZIG5zdWNj
ICImI3gyMjgxOyI+Cis8IUVOVElUWSBOb3RTdWNjZWVkcyAiJiN4MjI4MTsiPgorPCFFTlRJVFkg
c3ViICImI3gyMjgyOyI+Cis8IUVOVElUWSBzdWJzZXQgIiYjeDIyODI7Ij4KKzwhRU5USVRZIHZu
c3ViICImI3gyMjgyOyYjeDIwRDI7Ij4KKzwhRU5USVRZIG5zdWJzZXQgIiYjeDIyODI7JiN4MjBE
MjsiPgorPCFFTlRJVFkgTm90U3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ij4KKzwhRU5USVRZIHN1
cCAiJiN4MjI4MzsiPgorPCFFTlRJVFkgc3Vwc2V0ICImI3gyMjgzOyI+Cis8IUVOVElUWSBTdXBl
cnNldCAiJiN4MjI4MzsiPgorPCFFTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsiPgorPCFF
TlRJVFkgbnN1cHNldCAiJiN4MjI4MzsmI3gyMEQyOyI+Cis8IUVOVElUWSBOb3RTdXBlcnNldCAi
JiN4MjI4MzsmI3gyMEQyOyI+Cis8IUVOVElUWSBuc3ViICImI3gyMjg0OyI+Cis8IUVOVElUWSBu
c3VwICImI3gyMjg1OyI+Cis8IUVOVElUWSBzdWJlICImI3gyMjg2OyI+Cis8IUVOVElUWSBTdWJz
ZXRFcXVhbCAiJiN4MjI4NjsiPgorPCFFTlRJVFkgc3Vic2V0ZXEgIiYjeDIyODY7Ij4KKzwhRU5U
SVRZIHN1cGUgIiYjeDIyODc7Ij4KKzwhRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyI+Cis8IUVO
VElUWSBTdXBlcnNldEVxdWFsICImI3gyMjg3OyI+Cis8IUVOVElUWSBuc3ViZSAiJiN4MjI4ODsi
PgorPCFFTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyI+Cis8IUVOVElUWSBOb3RTdWJzZXRFcXVh
bCAiJiN4MjI4ODsiPgorPCFFTlRJVFkgbnN1cGUgIiYjeDIyODk7Ij4KKzwhRU5USVRZIG5zdXBz
ZXRlcSAiJiN4MjI4OTsiPgorPCFFTlRJVFkgTm90U3VwZXJzZXRFcXVhbCAiJiN4MjI4OTsiPgor
PCFFTlRJVFkgc3VibmUgIiYjeDIyOEE7Ij4KKzwhRU5USVRZIHN1YnNldG5lcSAiJiN4MjI4QTsi
PgorPCFFTlRJVFkgdnN1Ym5lICImI3gyMjhBOyYjeEZFMDA7Ij4KKzwhRU5USVRZIHZhcnN1YnNl
dG5lcSAiJiN4MjI4QTsmI3hGRTAwOyI+Cis8IUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiPgorPCFF
TlRJVFkgc3Vwc2V0bmVxICImI3gyMjhCOyI+Cis8IUVOVElUWSB2c3VwbmUgIiYjeDIyOEI7JiN4
RkUwMDsiPgorPCFFTlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ij4KKzwhRU5U
SVRZIGN1cGRvdCAiJiN4MjI4RDsiPgorPCFFTlRJVFkgdXBsdXMgIiYjeDIyOEU7Ij4KKzwhRU5U
SVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiPgorPCFFTlRJVFkgc3FzdWIgIiYjeDIyOEY7Ij4KKzwh
RU5USVRZIFNxdWFyZVN1YnNldCAiJiN4MjI4RjsiPgorPCFFTlRJVFkgc3FzdWJzZXQgIiYjeDIy
OEY7Ij4KKzwhRU5USVRZIE5vdFNxdWFyZVN1YnNldCAiJiN4MjI4RjsmI3gzMzg7Ij4KKzwhRU5U
SVRZIHNxc3VwICImI3gyMjkwOyI+Cis8IUVOVElUWSBTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsi
PgorPCFFTlRJVFkgc3FzdXBzZXQgIiYjeDIyOTA7Ij4KKzwhRU5USVRZIE5vdFNxdWFyZVN1cGVy
c2V0ICImI3gyMjkwOyYjeDMzODsiPgorPCFFTlRJVFkgc3FzdWJlICImI3gyMjkxOyI+Cis8IUVO
VElUWSBTcXVhcmVTdWJzZXRFcXVhbCAiJiN4MjI5MTsiPgorPCFFTlRJVFkgc3FzdWJzZXRlcSAi
JiN4MjI5MTsiPgorPCFFTlRJVFkgc3FzdXBlICImI3gyMjkyOyI+Cis8IUVOVElUWSBTcXVhcmVT
dXBlcnNldEVxdWFsICImI3gyMjkyOyI+Cis8IUVOVElUWSBzcXN1cHNldGVxICImI3gyMjkyOyI+
Cis8IUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiPgorPCFFTlRJVFkgU3F1YXJlSW50ZXJzZWN0aW9u
ICImI3gyMjkzOyI+Cis8IUVOVElUWSBzcWNhcHMgIiYjeDIyOTM7JiN4RkUwMDsiPgorPCFFTlRJ
VFkgc3FjdXAgIiYjeDIyOTQ7Ij4KKzwhRU5USVRZIFNxdWFyZVVuaW9uICImI3gyMjk0OyI+Cis8
IUVOVElUWSBzcWN1cHMgIiYjeDIyOTQ7JiN4RkUwMDsiPgorPCFFTlRJVFkgb3BsdXMgIiYjeDIy
OTU7Ij4KKzwhRU5USVRZIENpcmNsZVBsdXMgIiYjeDIyOTU7Ij4KKzwhRU5USVRZIG9taW51cyAi
JiN4MjI5NjsiPgorPCFFTlRJVFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ij4KKzwhRU5USVRZIG90
aW1lcyAiJiN4MjI5NzsiPgorPCFFTlRJVFkgQ2lyY2xlVGltZXMgIiYjeDIyOTc7Ij4KKzwhRU5U
SVRZIG9zb2wgIiYjeDIyOTg7Ij4KKzwhRU5USVRZIG9kb3QgIiYjeDIyOTk7Ij4KKzwhRU5USVRZ
IENpcmNsZURvdCAiJiN4MjI5OTsiPgorPCFFTlRJVFkgb2NpciAiJiN4MjI5QTsiPgorPCFFTlRJ
VFkgY2lyY2xlZGNpcmMgIiYjeDIyOUE7Ij4KKzwhRU5USVRZIG9hc3QgIiYjeDIyOUI7Ij4KKzwh
RU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ij4KKzwhRU5USVRZIG9kYXNoICImI3gyMjlEOyI+
Cis8IUVOVElUWSBjaXJjbGVkZGFzaCAiJiN4MjI5RDsiPgorPCFFTlRJVFkgcGx1c2IgIiYjeDIy
OUU7Ij4KKzwhRU5USVRZIGJveHBsdXMgIiYjeDIyOUU7Ij4KKzwhRU5USVRZIG1pbnVzYiAiJiN4
MjI5RjsiPgorPCFFTlRJVFkgYm94bWludXMgIiYjeDIyOUY7Ij4KKzwhRU5USVRZIHRpbWVzYiAi
JiN4MjJBMDsiPgorPCFFTlRJVFkgYm94dGltZXMgIiYjeDIyQTA7Ij4KKzwhRU5USVRZIHNkb3Ri
ICImI3gyMkExOyI+Cis8IUVOVElUWSBkb3RzcXVhcmUgIiYjeDIyQTE7Ij4KKzwhRU5USVRZIHZk
YXNoICImI3gyMkEyOyI+Cis8IUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiPgorPCFFTlRJVFkg
ZGFzaHYgIiYjeDIyQTM7Ij4KKzwhRU5USVRZIExlZnRUZWUgIiYjeDIyQTM7Ij4KKzwhRU5USVRZ
IHRvcCAiJiN4MjJBNDsiPgorPCFFTlRJVFkgRG93blRlZSAiJiN4MjJBNDsiPgorPCFFTlRJVFkg
Ym90dG9tICImI3gyMkE1OyI+Cis8IUVOVElUWSBib3QgIiYjeDIyQTU7Ij4KKzwhRU5USVRZIHBl
cnAgIiYjeDIyQTU7Ij4KKzwhRU5USVRZIFVwVGVlICImI3gyMkE1OyI+Cis8IUVOVElUWSBtb2Rl
bHMgIiYjeDIyQTc7Ij4KKzwhRU5USVRZIHZEYXNoICImI3gyMkE4OyI+Cis8IUVOVElUWSBEb3Vi
bGVSaWdodFRlZSAiJiN4MjJBODsiPgorPCFFTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ij4KKzwhRU5U
SVRZIFZ2ZGFzaCAiJiN4MjJBQTsiPgorPCFFTlRJVFkgVkRhc2ggIiYjeDIyQUI7Ij4KKzwhRU5U
SVRZIG52ZGFzaCAiJiN4MjJBQzsiPgorPCFFTlRJVFkgbnZEYXNoICImI3gyMkFEOyI+Cis8IUVO
VElUWSBuVmRhc2ggIiYjeDIyQUU7Ij4KKzwhRU5USVRZIG5WRGFzaCAiJiN4MjJBRjsiPgorPCFF
TlRJVFkgcHJ1cmVsICImI3gyMkIwOyI+Cis8IUVOVElUWSB2bHRyaSAiJiN4MjJCMjsiPgorPCFF
TlRJVFkgdmFydHJpYW5nbGVsZWZ0ICImI3gyMkIyOyI+Cis8IUVOVElUWSBMZWZ0VHJpYW5nbGUg
IiYjeDIyQjI7Ij4KKzwhRU5USVRZIHZydHJpICImI3gyMkIzOyI+Cis8IUVOVElUWSB2YXJ0cmlh
bmdsZXJpZ2h0ICImI3gyMkIzOyI+Cis8IUVOVElUWSBSaWdodFRyaWFuZ2xlICImI3gyMkIzOyI+
Cis8IUVOVElUWSBsdHJpZSAiJiN4MjJCNDsiPgorPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ZXEgIiYj
eDIyQjQ7Ij4KKzwhRU5USVRZIExlZnRUcmlhbmdsZUVxdWFsICImI3gyMkI0OyI+Cis8IUVOVElU
WSBudmx0cmllICImI3gyMkI0OyYjeDIwRDI7Ij4KKzwhRU5USVRZIHJ0cmllICImI3gyMkI1OyI+
Cis8IUVOVElUWSB0cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyQjU7Ij4KKzwhRU5USVRZIFJpZ2h0VHJp
YW5nbGVFcXVhbCAiJiN4MjJCNTsiPgorPCFFTlRJVFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQy
OyI+Cis8IUVOVElUWSBvcmlnb2YgIiYjeDIyQjY7Ij4KKzwhRU5USVRZIGltb2YgIiYjeDIyQjc7
Ij4KKzwhRU5USVRZIG11bWFwICImI3gyMkI4OyI+Cis8IUVOVElUWSBtdWx0aW1hcCAiJiN4MjJC
ODsiPgorPCFFTlRJVFkgaGVyY29uICImI3gyMkI5OyI+Cis8IUVOVElUWSBpbnRjYWwgIiYjeDIy
QkE7Ij4KKzwhRU5USVRZIGludGVyY2FsICImI3gyMkJBOyI+Cis8IUVOVElUWSB2ZWViYXIgIiYj
eDIyQkI7Ij4KKzwhRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiPgorPCFFTlRJVFkgYW5ncnR2YiAi
JiN4MjJCRTsiPgorPCFFTlRJVFkgbHJ0cmkgIiYjeDIyQkY7Ij4KKzwhRU5USVRZIHh3ZWRnZSAi
JiN4MjJDMDsiPgorPCFFTlRJVFkgV2VkZ2UgIiYjeDIyQzA7Ij4KKzwhRU5USVRZIGJpZ3dlZGdl
ICImI3gyMkMwOyI+Cis8IUVOVElUWSB4dmVlICImI3gyMkMxOyI+Cis8IUVOVElUWSBWZWUgIiYj
eDIyQzE7Ij4KKzwhRU5USVRZIGJpZ3ZlZSAiJiN4MjJDMTsiPgorPCFFTlRJVFkgeGNhcCAiJiN4
MjJDMjsiPgorPCFFTlRJVFkgSW50ZXJzZWN0aW9uICImI3gyMkMyOyI+Cis8IUVOVElUWSBiaWdj
YXAgIiYjeDIyQzI7Ij4KKzwhRU5USVRZIHhjdXAgIiYjeDIyQzM7Ij4KKzwhRU5USVRZIFVuaW9u
ICImI3gyMkMzOyI+Cis8IUVOVElUWSBiaWdjdXAgIiYjeDIyQzM7Ij4KKzwhRU5USVRZIGRpYW0g
IiYjeDIyQzQ7Ij4KKzwhRU5USVRZIGRpYW1vbmQgIiYjeDIyQzQ7Ij4KKzwhRU5USVRZIERpYW1v
bmQgIiYjeDIyQzQ7Ij4KKzwhRU5USVRZIHNkb3QgIiYjeDIyQzU7Ij4KKzwhRU5USVRZIHNzdGFy
ZiAiJiN4MjJDNjsiPgorPCFFTlRJVFkgU3RhciAiJiN4MjJDNjsiPgorPCFFTlRJVFkgZGl2b254
ICImI3gyMkM3OyI+Cis8IUVOVElUWSBkaXZpZGVvbnRpbWVzICImI3gyMkM3OyI+Cis8IUVOVElU
WSBib3d0aWUgIiYjeDIyQzg7Ij4KKzwhRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiPgorPCFFTlRJ
VFkgcnRpbWVzICImI3gyMkNBOyI+Cis8IUVOVElUWSBsdGhyZWUgIiYjeDIyQ0I7Ij4KKzwhRU5U
SVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyI+Cis8IUVOVElUWSBydGhyZWUgIiYjeDIyQ0M7
Ij4KKzwhRU5USVRZIHJpZ2h0dGhyZWV0aW1lcyAiJiN4MjJDQzsiPgorPCFFTlRJVFkgYnNpbWUg
IiYjeDIyQ0Q7Ij4KKzwhRU5USVRZIGJhY2tzaW1lcSAiJiN4MjJDRDsiPgorPCFFTlRJVFkgY3V2
ZWUgIiYjeDIyQ0U7Ij4KKzwhRU5USVRZIGN1cmx5dmVlICImI3gyMkNFOyI+Cis8IUVOVElUWSBj
dXdlZCAiJiN4MjJDRjsiPgorPCFFTlRJVFkgY3VybHl3ZWRnZSAiJiN4MjJDRjsiPgorPCFFTlRJ
VFkgU3ViICImI3gyMkQwOyI+Cis8IUVOVElUWSBTdWJzZXQgIiYjeDIyRDA7Ij4KKzwhRU5USVRZ
IFN1cCAiJiN4MjJEMTsiPgorPCFFTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyI+Cis8IUVOVElUWSBD
YXAgIiYjeDIyRDI7Ij4KKzwhRU5USVRZIEN1cCAiJiN4MjJEMzsiPgorPCFFTlRJVFkgZm9yayAi
JiN4MjJENDsiPgorPCFFTlRJVFkgcGl0Y2hmb3JrICImI3gyMkQ0OyI+Cis8IUVOVElUWSBlcGFy
ICImI3gyMkQ1OyI+Cis8IUVOVElUWSBsdGRvdCAiJiN4MjJENjsiPgorPCFFTlRJVFkgbGVzc2Rv
dCAiJiN4MjJENjsiPgorPCFFTlRJVFkgZ3Rkb3QgIiYjeDIyRDc7Ij4KKzwhRU5USVRZIGd0cmRv
dCAiJiN4MjJENzsiPgorPCFFTlRJVFkgTGwgIiYjeDIyRDg7Ij4KKzwhRU5USVRZIG5MbCAiJiN4
MjJEODsmI3gzMzg7Ij4KKzwhRU5USVRZIEdnICImI3gyMkQ5OyI+Cis8IUVOVElUWSBnZ2cgIiYj
eDIyRDk7Ij4KKzwhRU5USVRZIG5HZyAiJiN4MjJEOTsmI3gzMzg7Ij4KKzwhRU5USVRZIGxlZyAi
JiN4MjJEQTsiPgorPCFFTlRJVFkgTGVzc0VxdWFsR3JlYXRlciAiJiN4MjJEQTsiPgorPCFFTlRJ
VFkgbGVzc2VxZ3RyICImI3gyMkRBOyI+Cis8IUVOVElUWSBsZXNnICImI3gyMkRBOyYjeEZFMDA7
Ij4KKzwhRU5USVRZIGdlbCAiJiN4MjJEQjsiPgorPCFFTlRJVFkgZ3RyZXFsZXNzICImI3gyMkRC
OyI+Cis8IUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRCOyI+Cis8IUVOVElUWSBnZXNs
ICImI3gyMkRCOyYjeEZFMDA7Ij4KKzwhRU5USVRZIGN1ZXByICImI3gyMkRFOyI+Cis8IUVOVElU
WSBjdXJseWVxcHJlYyAiJiN4MjJERTsiPgorPCFFTlRJVFkgY3Vlc2MgIiYjeDIyREY7Ij4KKzwh
RU5USVRZIGN1cmx5ZXFzdWNjICImI3gyMkRGOyI+Cis8IUVOVElUWSBucHJjdWUgIiYjeDIyRTA7
Ij4KKzwhRU5USVRZIE5vdFByZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjJFMDsiPgorPCFFTlRJVFkg
bnNjY3VlICImI3gyMkUxOyI+Cis8IUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIy
RTE7Ij4KKzwhRU5USVRZIG5zcXN1YmUgIiYjeDIyRTI7Ij4KKzwhRU5USVRZIE5vdFNxdWFyZVN1
YnNldEVxdWFsICImI3gyMkUyOyI+Cis8IUVOVElUWSBuc3FzdXBlICImI3gyMkUzOyI+Cis8IUVO
VElUWSBOb3RTcXVhcmVTdXBlcnNldEVxdWFsICImI3gyMkUzOyI+Cis8IUVOVElUWSBsbnNpbSAi
JiN4MjJFNjsiPgorPCFFTlRJVFkgZ25zaW0gIiYjeDIyRTc7Ij4KKzwhRU5USVRZIHBybnNpbSAi
JiN4MjJFODsiPgorPCFFTlRJVFkgcHJlY25zaW0gIiYjeDIyRTg7Ij4KKzwhRU5USVRZIHNjbnNp
bSAiJiN4MjJFOTsiPgorPCFFTlRJVFkgc3VjY25zaW0gIiYjeDIyRTk7Ij4KKzwhRU5USVRZIG5s
dHJpICImI3gyMkVBOyI+Cis8IUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyI+Cis8IUVO
VElUWSBOb3RMZWZ0VHJpYW5nbGUgIiYjeDIyRUE7Ij4KKzwhRU5USVRZIG5ydHJpICImI3gyMkVC
OyI+Cis8IUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiPgorPCFFTlRJVFkgTm90Umln
aHRUcmlhbmdsZSAiJiN4MjJFQjsiPgorPCFFTlRJVFkgbmx0cmllICImI3gyMkVDOyI+Cis8IUVO
VElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ij4KKzwhRU5USVRZIE5vdExlZnRUcmlhbmds
ZUVxdWFsICImI3gyMkVDOyI+Cis8IUVOVElUWSBucnRyaWUgIiYjeDIyRUQ7Ij4KKzwhRU5USVRZ
IG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ij4KKzwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVF
cXVhbCAiJiN4MjJFRDsiPgorPCFFTlRJVFkgdmVsbGlwICImI3gyMkVFOyI+Cis8IUVOVElUWSBj
dGRvdCAiJiN4MjJFRjsiPgorPCFFTlRJVFkgdXRkb3QgIiYjeDIyRjA7Ij4KKzwhRU5USVRZIGR0
ZG90ICImI3gyMkYxOyI+Cis8IUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiPgorPCFFTlRJVFkgaXNp
bnN2ICImI3gyMkYzOyI+Cis8IUVOVElUWSBpc2lucyAiJiN4MjJGNDsiPgorPCFFTlRJVFkgaXNp
bmRvdCAiJiN4MjJGNTsiPgorPCFFTlRJVFkgbm90aW5kb3QgIiYjeDIyRjU7JiN4MzM4OyI+Cis8
IUVOVElUWSBub3RpbnZjICImI3gyMkY2OyI+Cis8IUVOVElUWSBub3RpbnZiICImI3gyMkY3OyI+
Cis8IUVOVElUWSBpc2luRSAiJiN4MjJGOTsiPgorPCFFTlRJVFkgbm90aW5FICImI3gyMkY5OyYj
eDMzODsiPgorPCFFTlRJVFkgbmlzZCAiJiN4MjJGQTsiPgorPCFFTlRJVFkgeG5pcyAiJiN4MjJG
QjsiPgorPCFFTlRJVFkgbmlzICImI3gyMkZDOyI+Cis8IUVOVElUWSBub3RuaXZjICImI3gyMkZE
OyI+Cis8IUVOVElUWSBub3RuaXZiICImI3gyMkZFOyI+Cis8IUVOVElUWSBiYXJ3ZWQgIiYjeDIz
MDU7Ij4KKzwhRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyI+Cis8IUVOVElUWSBCYXJ3ZWQgIiYj
eDIzMDY7Ij4KKzwhRU5USVRZIGRvdWJsZWJhcndlZGdlICImI3gyMzA2OyI+Cis8IUVOVElUWSBs
Y2VpbCAiJiN4MjMwODsiPgorPCFFTlRJVFkgTGVmdENlaWxpbmcgIiYjeDIzMDg7Ij4KKzwhRU5U
SVRZIHJjZWlsICImI3gyMzA5OyI+Cis8IUVOVElUWSBSaWdodENlaWxpbmcgIiYjeDIzMDk7Ij4K
KzwhRU5USVRZIGxmbG9vciAiJiN4MjMwQTsiPgorPCFFTlRJVFkgTGVmdEZsb29yICImI3gyMzBB
OyI+Cis8IUVOVElUWSByZmxvb3IgIiYjeDIzMEI7Ij4KKzwhRU5USVRZIFJpZ2h0Rmxvb3IgIiYj
eDIzMEI7Ij4KKzwhRU5USVRZIGRyY3JvcCAiJiN4MjMwQzsiPgorPCFFTlRJVFkgZGxjcm9wICIm
I3gyMzBEOyI+Cis8IUVOVElUWSB1cmNyb3AgIiYjeDIzMEU7Ij4KKzwhRU5USVRZIHVsY3JvcCAi
JiN4MjMwRjsiPgorPCFFTlRJVFkgYm5vdCAiJiN4MjMxMDsiPgorPCFFTlRJVFkgcHJvZmxpbmUg
IiYjeDIzMTI7Ij4KKzwhRU5USVRZIHByb2ZzdXJmICImI3gyMzEzOyI+Cis8IUVOVElUWSB0ZWxy
ZWMgIiYjeDIzMTU7Ij4KKzwhRU5USVRZIHRhcmdldCAiJiN4MjMxNjsiPgorPCFFTlRJVFkgdWxj
b3JuICImI3gyMzFDOyI+Cis8IUVOVElUWSB1bGNvcm5lciAiJiN4MjMxQzsiPgorPCFFTlRJVFkg
dXJjb3JuICImI3gyMzFEOyI+Cis8IUVOVElUWSB1cmNvcm5lciAiJiN4MjMxRDsiPgorPCFFTlRJ
VFkgZGxjb3JuICImI3gyMzFFOyI+Cis8IUVOVElUWSBsbGNvcm5lciAiJiN4MjMxRTsiPgorPCFF
TlRJVFkgZHJjb3JuICImI3gyMzFGOyI+Cis8IUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiPgor
PCFFTlRJVFkgZnJvd24gIiYjeDIzMjI7Ij4KKzwhRU5USVRZIHNmcm93biAiJiN4MjMyMjsiPgor
PCFFTlRJVFkgc21pbGUgIiYjeDIzMjM7Ij4KKzwhRU5USVRZIHNzbWlsZSAiJiN4MjMyMzsiPgor
PCFFTlRJVFkgY3lsY3R5ICImI3gyMzJEOyI+Cis8IUVOVElUWSBwcm9mYWxhciAiJiN4MjMyRTsi
PgorPCFFTlRJVFkgdG9wYm90ICImI3gyMzM2OyI+Cis8IUVOVElUWSBvdmJhciAiJiN4MjMzRDsi
PgorPCFFTlRJVFkgc29sYmFyICImI3gyMzNGOyI+Cis8IUVOVElUWSBhbmd6YXJyICImI3gyMzdD
OyI+Cis8IUVOVElUWSBsbW91c3QgIiYjeDIzQjA7Ij4KKzwhRU5USVRZIGxtb3VzdGFjaGUgIiYj
eDIzQjA7Ij4KKzwhRU5USVRZIHJtb3VzdCAiJiN4MjNCMTsiPgorPCFFTlRJVFkgcm1vdXN0YWNo
ZSAiJiN4MjNCMTsiPgorPCFFTlRJVFkgdGJyayAiJiN4MjNCNDsiPgorPCFFTlRJVFkgT3ZlckJy
YWNrZXQgIiYjeDIzQjQ7Ij4KKzwhRU5USVRZIGJicmsgIiYjeDIzQjU7Ij4KKzwhRU5USVRZIFVu
ZGVyQnJhY2tldCAiJiN4MjNCNTsiPgorPCFFTlRJVFkgYmJya3RicmsgIiYjeDIzQjY7Ij4KKzwh
RU5USVRZIE92ZXJQYXJlbnRoZXNpcyAiJiN4MjNEQzsiPgorPCFFTlRJVFkgVW5kZXJQYXJlbnRo
ZXNpcyAiJiN4MjNERDsiPgorPCFFTlRJVFkgT3ZlckJyYWNlICImI3gyM0RFOyI+Cis8IUVOVElU
WSBVbmRlckJyYWNlICImI3gyM0RGOyI+Cis8IUVOVElUWSB0cnBleml1bSAiJiN4MjNFMjsiPgor
PCFFTlRJVFkgZWxpbnRlcnMgIiYjeDIzRTc7Ij4KKzwhRU5USVRZIGJsYW5rICImI3gyNDIzOyI+
Cis8IUVOVElUWSBvUyAiJiN4MjRDODsiPgorPCFFTlRJVFkgY2lyY2xlZFMgIiYjeDI0Qzg7Ij4K
KzwhRU5USVRZIGJveGggIiYjeDI1MDA7Ij4KKzwhRU5USVRZIEhvcml6b250YWxMaW5lICImI3gy
NTAwOyI+Cis8IUVOVElUWSBib3h2ICImI3gyNTAyOyI+Cis8IUVOVElUWSBib3hkciAiJiN4MjUw
QzsiPgorPCFFTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ij4KKzwhRU5USVRZIGJveHVyICImI3gyNTE0
OyI+Cis8IUVOVElUWSBib3h1bCAiJiN4MjUxODsiPgorPCFFTlRJVFkgYm94dnIgIiYjeDI1MUM7
Ij4KKzwhRU5USVRZIGJveHZsICImI3gyNTI0OyI+Cis8IUVOVElUWSBib3hoZCAiJiN4MjUyQzsi
PgorPCFFTlRJVFkgYm94aHUgIiYjeDI1MzQ7Ij4KKzwhRU5USVRZIGJveHZoICImI3gyNTNDOyI+
Cis8IUVOVElUWSBib3hIICImI3gyNTUwOyI+Cis8IUVOVElUWSBib3hWICImI3gyNTUxOyI+Cis8
IUVOVElUWSBib3hkUiAiJiN4MjU1MjsiPgorPCFFTlRJVFkgYm94RHIgIiYjeDI1NTM7Ij4KKzwh
RU5USVRZIGJveERSICImI3gyNTU0OyI+Cis8IUVOVElUWSBib3hkTCAiJiN4MjU1NTsiPgorPCFF
TlRJVFkgYm94RGwgIiYjeDI1NTY7Ij4KKzwhRU5USVRZIGJveERMICImI3gyNTU3OyI+Cis8IUVO
VElUWSBib3h1UiAiJiN4MjU1ODsiPgorPCFFTlRJVFkgYm94VXIgIiYjeDI1NTk7Ij4KKzwhRU5U
SVRZIGJveFVSICImI3gyNTVBOyI+Cis8IUVOVElUWSBib3h1TCAiJiN4MjU1QjsiPgorPCFFTlRJ
VFkgYm94VWwgIiYjeDI1NUM7Ij4KKzwhRU5USVRZIGJveFVMICImI3gyNTVEOyI+Cis8IUVOVElU
WSBib3h2UiAiJiN4MjU1RTsiPgorPCFFTlRJVFkgYm94VnIgIiYjeDI1NUY7Ij4KKzwhRU5USVRZ
IGJveFZSICImI3gyNTYwOyI+Cis8IUVOVElUWSBib3h2TCAiJiN4MjU2MTsiPgorPCFFTlRJVFkg
Ym94VmwgIiYjeDI1NjI7Ij4KKzwhRU5USVRZIGJveFZMICImI3gyNTYzOyI+Cis8IUVOVElUWSBi
b3hIZCAiJiN4MjU2NDsiPgorPCFFTlRJVFkgYm94aEQgIiYjeDI1NjU7Ij4KKzwhRU5USVRZIGJv
eEhEICImI3gyNTY2OyI+Cis8IUVOVElUWSBib3hIdSAiJiN4MjU2NzsiPgorPCFFTlRJVFkgYm94
aFUgIiYjeDI1Njg7Ij4KKzwhRU5USVRZIGJveEhVICImI3gyNTY5OyI+Cis8IUVOVElUWSBib3h2
SCAiJiN4MjU2QTsiPgorPCFFTlRJVFkgYm94VmggIiYjeDI1NkI7Ij4KKzwhRU5USVRZIGJveFZI
ICImI3gyNTZDOyI+Cis8IUVOVElUWSB1aGJsayAiJiN4MjU4MDsiPgorPCFFTlRJVFkgbGhibGsg
IiYjeDI1ODQ7Ij4KKzwhRU5USVRZIGJsb2NrICImI3gyNTg4OyI+Cis8IUVOVElUWSBibGsxNCAi
JiN4MjU5MTsiPgorPCFFTlRJVFkgYmxrMTIgIiYjeDI1OTI7Ij4KKzwhRU5USVRZIGJsazM0ICIm
I3gyNTkzOyI+Cis8IUVOVElUWSBzcXUgIiYjeDI1QTE7Ij4KKzwhRU5USVRZIHNxdWFyZSAiJiN4
MjVBMTsiPgorPCFFTlRJVFkgU3F1YXJlICImI3gyNUExOyI+Cis8IUVOVElUWSBzcXVmICImI3gy
NUFBOyI+Cis8IUVOVElUWSBzcXVhcmYgIiYjeDI1QUE7Ij4KKzwhRU5USVRZIGJsYWNrc3F1YXJl
ICImI3gyNUFBOyI+Cis8IUVOVElUWSBGaWxsZWRWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUE7Ij4K
KzwhRU5USVRZIEVtcHR5VmVyeVNtYWxsU3F1YXJlICImI3gyNUFCOyI+Cis8IUVOVElUWSByZWN0
ICImI3gyNUFEOyI+Cis8IUVOVElUWSBtYXJrZXIgIiYjeDI1QUU7Ij4KKzwhRU5USVRZIGZsdG5z
ICImI3gyNUIxOyI+Cis8IUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiPgorPCFFTlRJVFkgYmlndHJp
YW5nbGV1cCAiJiN4MjVCMzsiPgorPCFFTlRJVFkgdXRyaWYgIiYjeDI1QjQ7Ij4KKzwhRU5USVRZ
IGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ij4KKzwhRU5USVRZIHV0cmkgIiYjeDI1QjU7Ij4KKzwh
RU5USVRZIHRyaWFuZ2xlICImI3gyNUI1OyI+Cis8IUVOVElUWSBydHJpZiAiJiN4MjVCODsiPgor
PCFFTlRJVFkgYmxhY2t0cmlhbmdsZXJpZ2h0ICImI3gyNUI4OyI+Cis8IUVOVElUWSBydHJpICIm
I3gyNUI5OyI+Cis8IUVOVElUWSB0cmlhbmdsZXJpZ2h0ICImI3gyNUI5OyI+Cis8IUVOVElUWSB4
ZHRyaSAiJiN4MjVCRDsiPgorPCFFTlRJVFkgYmlndHJpYW5nbGVkb3duICImI3gyNUJEOyI+Cis8
IUVOVElUWSBkdHJpZiAiJiN4MjVCRTsiPgorPCFFTlRJVFkgYmxhY2t0cmlhbmdsZWRvd24gIiYj
eDI1QkU7Ij4KKzwhRU5USVRZIGR0cmkgIiYjeDI1QkY7Ij4KKzwhRU5USVRZIHRyaWFuZ2xlZG93
biAiJiN4MjVCRjsiPgorPCFFTlRJVFkgbHRyaWYgIiYjeDI1QzI7Ij4KKzwhRU5USVRZIGJsYWNr
dHJpYW5nbGVsZWZ0ICImI3gyNUMyOyI+Cis8IUVOVElUWSBsdHJpICImI3gyNUMzOyI+Cis8IUVO
VElUWSB0cmlhbmdsZWxlZnQgIiYjeDI1QzM7Ij4KKzwhRU5USVRZIGxveiAiJiN4MjVDQTsiPgor
PCFFTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiPgorPCFFTlRJVFkgY2lyICImI3gyNUNCOyI+Cis8
IUVOVElUWSB0cmlkb3QgIiYjeDI1RUM7Ij4KKzwhRU5USVRZIHhjaXJjICImI3gyNUVGOyI+Cis8
IUVOVElUWSBiaWdjaXJjICImI3gyNUVGOyI+Cis8IUVOVElUWSB1bHRyaSAiJiN4MjVGODsiPgor
PCFFTlRJVFkgdXJ0cmkgIiYjeDI1Rjk7Ij4KKzwhRU5USVRZIGxsdHJpICImI3gyNUZBOyI+Cis8
IUVOVElUWSBFbXB0eVNtYWxsU3F1YXJlICImI3gyNUZCOyI+Cis8IUVOVElUWSBGaWxsZWRTbWFs
bFNxdWFyZSAiJiN4MjVGQzsiPgorPCFFTlRJVFkgc3RhcmYgIiYjeDI2MDU7Ij4KKzwhRU5USVRZ
IGJpZ3N0YXIgIiYjeDI2MDU7Ij4KKzwhRU5USVRZIHN0YXIgIiYjeDI2MDY7Ij4KKzwhRU5USVRZ
IHBob25lICImI3gyNjBFOyI+Cis8IUVOVElUWSBmZW1hbGUgIiYjeDI2NDA7Ij4KKzwhRU5USVRZ
IG1hbGUgIiYjeDI2NDI7Ij4KKzwhRU5USVRZIHNwYWRlcyAiJiN4MjY2MDsiPgorPCFFTlRJVFkg
c3BhZGVzdWl0ICImI3gyNjYwOyI+Cis8IUVOVElUWSBjbHVicyAiJiN4MjY2MzsiPgorPCFFTlRJ
VFkgY2x1YnN1aXQgIiYjeDI2NjM7Ij4KKzwhRU5USVRZIGhlYXJ0cyAiJiN4MjY2NTsiPgorPCFF
TlRJVFkgaGVhcnRzdWl0ICImI3gyNjY1OyI+Cis8IUVOVElUWSBkaWFtcyAiJiN4MjY2NjsiPgor
PCFFTlRJVFkgZGlhbW9uZHN1aXQgIiYjeDI2NjY7Ij4KKzwhRU5USVRZIHN1bmcgIiYjeDI2NkE7
Ij4KKzwhRU5USVRZIGZsYXQgIiYjeDI2NkQ7Ij4KKzwhRU5USVRZIG5hdHVyICImI3gyNjZFOyI+
Cis8IUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyI+Cis8IUVOVElUWSBzaGFycCAiJiN4MjY2Rjsi
PgorPCFFTlRJVFkgY2hlY2sgIiYjeDI3MTM7Ij4KKzwhRU5USVRZIGNoZWNrbWFyayAiJiN4Mjcx
MzsiPgorPCFFTlRJVFkgY3Jvc3MgIiYjeDI3MTc7Ij4KKzwhRU5USVRZIG1hbHQgIiYjeDI3MjA7
Ij4KKzwhRU5USVRZIG1hbHRlc2UgIiYjeDI3MjA7Ij4KKzwhRU5USVRZIHNleHQgIiYjeDI3MzY7
Ij4KKzwhRU5USVRZIFZlcnRpY2FsU2VwYXJhdG9yICImI3gyNzU4OyI+Cis8IUVOVElUWSBsYmJy
ayAiJiN4Mjc3MjsiPgorPCFFTlRJVFkgcmJicmsgIiYjeDI3NzM7Ij4KKzwhRU5USVRZIGJzb2xo
c3ViICImI3gyN0M4OyI+Cis8IUVOVElUWSBzdXBoc29sICImI3gyN0M5OyI+Cis8IUVOVElUWSBs
b2JyayAiJiN4MjdFNjsiPgorPCFFTlRJVFkgTGVmdERvdWJsZUJyYWNrZXQgIiYjeDI3RTY7Ij4K
KzwhRU5USVRZIHJvYnJrICImI3gyN0U3OyI+Cis8IUVOVElUWSBSaWdodERvdWJsZUJyYWNrZXQg
IiYjeDI3RTc7Ij4KKzwhRU5USVRZIGxhbmcgIiYjeDI3RTg7Ij4KKzwhRU5USVRZIExlZnRBbmds
ZUJyYWNrZXQgIiYjeDI3RTg7Ij4KKzwhRU5USVRZIGxhbmdsZSAiJiN4MjdFODsiPgorPCFFTlRJ
VFkgcmFuZyAiJiN4MjdFOTsiPgorPCFFTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7
Ij4KKzwhRU5USVRZIHJhbmdsZSAiJiN4MjdFOTsiPgorPCFFTlRJVFkgTGFuZyAiJiN4MjdFQTsi
PgorPCFFTlRJVFkgUmFuZyAiJiN4MjdFQjsiPgorPCFFTlRJVFkgbG9hbmcgIiYjeDI3RUM7Ij4K
KzwhRU5USVRZIHJvYW5nICImI3gyN0VEOyI+Cis8IUVOVElUWSB4bGFyciAiJiN4MjdGNTsiPgor
PCFFTlRJVFkgbG9uZ2xlZnRhcnJvdyAiJiN4MjdGNTsiPgorPCFFTlRJVFkgTG9uZ0xlZnRBcnJv
dyAiJiN4MjdGNTsiPgorPCFFTlRJVFkgeHJhcnIgIiYjeDI3RjY7Ij4KKzwhRU5USVRZIGxvbmdy
aWdodGFycm93ICImI3gyN0Y2OyI+Cis8IUVOVElUWSBMb25nUmlnaHRBcnJvdyAiJiN4MjdGNjsi
PgorPCFFTlRJVFkgeGhhcnIgIiYjeDI3Rjc7Ij4KKzwhRU5USVRZIGxvbmdsZWZ0cmlnaHRhcnJv
dyAiJiN4MjdGNzsiPgorPCFFTlRJVFkgTG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0Y3OyI+Cis8
IUVOVElUWSB4bEFyciAiJiN4MjdGODsiPgorPCFFTlRJVFkgTG9uZ2xlZnRhcnJvdyAiJiN4MjdG
ODsiPgorPCFFTlRJVFkgRG91YmxlTG9uZ0xlZnRBcnJvdyAiJiN4MjdGODsiPgorPCFFTlRJVFkg
eHJBcnIgIiYjeDI3Rjk7Ij4KKzwhRU5USVRZIExvbmdyaWdodGFycm93ICImI3gyN0Y5OyI+Cis8
IUVOVElUWSBEb3VibGVMb25nUmlnaHRBcnJvdyAiJiN4MjdGOTsiPgorPCFFTlRJVFkgeGhBcnIg
IiYjeDI3RkE7Ij4KKzwhRU5USVRZIExvbmdsZWZ0cmlnaHRhcnJvdyAiJiN4MjdGQTsiPgorPCFF
TlRJVFkgRG91YmxlTG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0ZBOyI+Cis8IUVOVElUWSB4bWFw
ICImI3gyN0ZDOyI+Cis8IUVOVElUWSBsb25nbWFwc3RvICImI3gyN0ZDOyI+Cis8IUVOVElUWSBk
emlncmFyciAiJiN4MjdGRjsiPgorPCFFTlRJVFkgbnZsQXJyICImI3gyOTAyOyI+Cis8IUVOVElU
WSBudnJBcnIgIiYjeDI5MDM7Ij4KKzwhRU5USVRZIG52SGFyciAiJiN4MjkwNDsiPgorPCFFTlRJ
VFkgTWFwICImI3gyOTA1OyI+Cis8IUVOVElUWSBsYmFyciAiJiN4MjkwQzsiPgorPCFFTlRJVFkg
cmJhcnIgIiYjeDI5MEQ7Ij4KKzwhRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiPgorPCFFTlRJVFkg
bEJhcnIgIiYjeDI5MEU7Ij4KKzwhRU5USVRZIHJCYXJyICImI3gyOTBGOyI+Cis8IUVOVElUWSBk
Ymthcm93ICImI3gyOTBGOyI+Cis8IUVOVElUWSBSQmFyciAiJiN4MjkxMDsiPgorPCFFTlRJVFkg
ZHJia2Fyb3cgIiYjeDI5MTA7Ij4KKzwhRU5USVRZIEREb3RyYWhkICImI3gyOTExOyI+Cis8IUVO
VElUWSBVcEFycm93QmFyICImI3gyOTEyOyI+Cis8IUVOVElUWSBEb3duQXJyb3dCYXIgIiYjeDI5
MTM7Ij4KKzwhRU5USVRZIFJhcnJ0bCAiJiN4MjkxNjsiPgorPCFFTlRJVFkgbGF0YWlsICImI3gy
OTE5OyI+Cis8IUVOVElUWSByYXRhaWwgIiYjeDI5MUE7Ij4KKzwhRU5USVRZIGxBdGFpbCAiJiN4
MjkxQjsiPgorPCFFTlRJVFkgckF0YWlsICImI3gyOTFDOyI+Cis8IUVOVElUWSBsYXJyZnMgIiYj
eDI5MUQ7Ij4KKzwhRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiPgorPCFFTlRJVFkgbGFycmJmcyAi
JiN4MjkxRjsiPgorPCFFTlRJVFkgcmFycmJmcyAiJiN4MjkyMDsiPgorPCFFTlRJVFkgbndhcmhr
ICImI3gyOTIzOyI+Cis8IUVOVElUWSBuZWFyaGsgIiYjeDI5MjQ7Ij4KKzwhRU5USVRZIHNlYXJo
ayAiJiN4MjkyNTsiPgorPCFFTlRJVFkgaGtzZWFyb3cgIiYjeDI5MjU7Ij4KKzwhRU5USVRZIHN3
YXJoayAiJiN4MjkyNjsiPgorPCFFTlRJVFkgaGtzd2Fyb3cgIiYjeDI5MjY7Ij4KKzwhRU5USVRZ
IG53bmVhciAiJiN4MjkyNzsiPgorPCFFTlRJVFkgbmVzZWFyICImI3gyOTI4OyI+Cis8IUVOVElU
WSB0b2VhICImI3gyOTI4OyI+Cis8IUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ij4KKzwhRU5USVRZ
IHRvc2EgIiYjeDI5Mjk7Ij4KKzwhRU5USVRZIHN3bndhciAiJiN4MjkyQTsiPgorPCFFTlRJVFkg
cmFycmMgIiYjeDI5MzM7Ij4KKzwhRU5USVRZIG5yYXJyYyAiJiN4MjkzMzsmI3gzMzg7Ij4KKzwh
RU5USVRZIGN1ZGFycnIgIiYjeDI5MzU7Ij4KKzwhRU5USVRZIGxkY2EgIiYjeDI5MzY7Ij4KKzwh
RU5USVRZIHJkY2EgIiYjeDI5Mzc7Ij4KKzwhRU5USVRZIGN1ZGFycmwgIiYjeDI5Mzg7Ij4KKzwh
RU5USVRZIGxhcnJwbCAiJiN4MjkzOTsiPgorPCFFTlRJVFkgY3VyYXJybSAiJiN4MjkzQzsiPgor
PCFFTlRJVFkgY3VsYXJycCAiJiN4MjkzRDsiPgorPCFFTlRJVFkgcmFycnBsICImI3gyOTQ1OyI+
Cis8IUVOVElUWSBoYXJyY2lyICImI3gyOTQ4OyI+Cis8IUVOVElUWSBVYXJyb2NpciAiJiN4Mjk0
OTsiPgorPCFFTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ij4KKzwhRU5USVRZIGxkcnVzaGFyICIm
I3gyOTRCOyI+Cis8IUVOVElUWSBMZWZ0UmlnaHRWZWN0b3IgIiYjeDI5NEU7Ij4KKzwhRU5USVRZ
IFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyI+Cis8IUVOVElUWSBEb3duTGVmdFJpZ2h0VmVj
dG9yICImI3gyOTUwOyI+Cis8IUVOVElUWSBMZWZ0VXBEb3duVmVjdG9yICImI3gyOTUxOyI+Cis8
IUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyI+Cis8IUVOVElUWSBSaWdodFZlY3RvckJh
ciAiJiN4Mjk1MzsiPgorPCFFTlRJVFkgUmlnaHRVcFZlY3RvckJhciAiJiN4Mjk1NDsiPgorPCFF
TlRJVFkgUmlnaHREb3duVmVjdG9yQmFyICImI3gyOTU1OyI+Cis8IUVOVElUWSBEb3duTGVmdFZl
Y3RvckJhciAiJiN4Mjk1NjsiPgorPCFFTlRJVFkgRG93blJpZ2h0VmVjdG9yQmFyICImI3gyOTU3
OyI+Cis8IUVOVElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ij4KKzwhRU5USVRZIExlZnRE
b3duVmVjdG9yQmFyICImI3gyOTU5OyI+Cis8IUVOVElUWSBMZWZ0VGVlVmVjdG9yICImI3gyOTVB
OyI+Cis8IUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiPgorPCFFTlRJVFkgUmlnaHRV
cFRlZVZlY3RvciAiJiN4Mjk1QzsiPgorPCFFTlRJVFkgUmlnaHREb3duVGVlVmVjdG9yICImI3gy
OTVEOyI+Cis8IUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1RTsiPgorPCFFTlRJVFkg
RG93blJpZ2h0VGVlVmVjdG9yICImI3gyOTVGOyI+Cis8IUVOVElUWSBMZWZ0VXBUZWVWZWN0b3Ig
IiYjeDI5NjA7Ij4KKzwhRU5USVRZIExlZnREb3duVGVlVmVjdG9yICImI3gyOTYxOyI+Cis8IUVO
VElUWSBsSGFyICImI3gyOTYyOyI+Cis8IUVOVElUWSB1SGFyICImI3gyOTYzOyI+Cis8IUVOVElU
WSBySGFyICImI3gyOTY0OyI+Cis8IUVOVElUWSBkSGFyICImI3gyOTY1OyI+Cis8IUVOVElUWSBs
dXJ1aGFyICImI3gyOTY2OyI+Cis8IUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyI+Cis8IUVOVElU
WSBydWx1aGFyICImI3gyOTY4OyI+Cis8IUVOVElUWSByZGxkaGFyICImI3gyOTY5OyI+Cis8IUVO
VElUWSBsaGFydWwgIiYjeDI5NkE7Ij4KKzwhRU5USVRZIGxsaGFyZCAiJiN4Mjk2QjsiPgorPCFF
TlRJVFkgcmhhcnVsICImI3gyOTZDOyI+Cis8IUVOVElUWSBscmhhcmQgIiYjeDI5NkQ7Ij4KKzwh
RU5USVRZIHVkaGFyICImI3gyOTZFOyI+Cis8IUVOVElUWSBVcEVxdWlsaWJyaXVtICImI3gyOTZF
OyI+Cis8IUVOVElUWSBkdWhhciAiJiN4Mjk2RjsiPgorPCFFTlRJVFkgUmV2ZXJzZVVwRXF1aWxp
YnJpdW0gIiYjeDI5NkY7Ij4KKzwhRU5USVRZIFJvdW5kSW1wbGllcyAiJiN4Mjk3MDsiPgorPCFF
TlRJVFkgZXJhcnIgIiYjeDI5NzE7Ij4KKzwhRU5USVRZIHNpbXJhcnIgIiYjeDI5NzI7Ij4KKzwh
RU5USVRZIGxhcnJzaW0gIiYjeDI5NzM7Ij4KKzwhRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ij4K
KzwhRU5USVRZIHJhcnJhcCAiJiN4Mjk3NTsiPgorPCFFTlRJVFkgbHRsYXJyICImI3gyOTc2OyI+
Cis8IUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ij4KKzwhRU5USVRZIHN1YnJhcnIgIiYjeDI5Nzk7
Ij4KKzwhRU5USVRZIHN1cGxhcnIgIiYjeDI5N0I7Ij4KKzwhRU5USVRZIGxmaXNodCAiJiN4Mjk3
QzsiPgorPCFFTlRJVFkgcmZpc2h0ICImI3gyOTdEOyI+Cis8IUVOVElUWSB1ZmlzaHQgIiYjeDI5
N0U7Ij4KKzwhRU5USVRZIGRmaXNodCAiJiN4Mjk3RjsiPgorPCFFTlRJVFkgbG9wYXIgIiYjeDI5
ODU7Ij4KKzwhRU5USVRZIHJvcGFyICImI3gyOTg2OyI+Cis8IUVOVElUWSBsYnJrZSAiJiN4Mjk4
QjsiPgorPCFFTlRJVFkgcmJya2UgIiYjeDI5OEM7Ij4KKzwhRU5USVRZIGxicmtzbHUgIiYjeDI5
OEQ7Ij4KKzwhRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ij4KKzwhRU5USVRZIGxicmtzbGQgIiYj
eDI5OEY7Ij4KKzwhRU5USVRZIHJicmtzbHUgIiYjeDI5OTA7Ij4KKzwhRU5USVRZIGxhbmdkICIm
I3gyOTkxOyI+Cis8IUVOVElUWSByYW5nZCAiJiN4Mjk5MjsiPgorPCFFTlRJVFkgbHBhcmx0ICIm
I3gyOTkzOyI+Cis8IUVOVElUWSBycGFyZ3QgIiYjeDI5OTQ7Ij4KKzwhRU5USVRZIGd0bFBhciAi
JiN4Mjk5NTsiPgorPCFFTlRJVFkgbHRyUGFyICImI3gyOTk2OyI+Cis8IUVOVElUWSB2emlnemFn
ICImI3gyOTlBOyI+Cis8IUVOVElUWSB2YW5ncnQgIiYjeDI5OUM7Ij4KKzwhRU5USVRZIGFuZ3J0
dmJkICImI3gyOTlEOyI+Cis8IUVOVElUWSBhbmdlICImI3gyOUE0OyI+Cis8IUVOVElUWSByYW5n
ZSAiJiN4MjlBNTsiPgorPCFFTlRJVFkgZHdhbmdsZSAiJiN4MjlBNjsiPgorPCFFTlRJVFkgdXdh
bmdsZSAiJiN4MjlBNzsiPgorPCFFTlRJVFkgYW5nbXNkYWEgIiYjeDI5QTg7Ij4KKzwhRU5USVRZ
IGFuZ21zZGFiICImI3gyOUE5OyI+Cis8IUVOVElUWSBhbmdtc2RhYyAiJiN4MjlBQTsiPgorPCFF
TlRJVFkgYW5nbXNkYWQgIiYjeDI5QUI7Ij4KKzwhRU5USVRZIGFuZ21zZGFlICImI3gyOUFDOyI+
Cis8IUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsiPgorPCFFTlRJVFkgYW5nbXNkYWcgIiYjeDI5
QUU7Ij4KKzwhRU5USVRZIGFuZ21zZGFoICImI3gyOUFGOyI+Cis8IUVOVElUWSBiZW1wdHl2ICIm
I3gyOUIwOyI+Cis8IUVOVElUWSBkZW1wdHl2ICImI3gyOUIxOyI+Cis8IUVOVElUWSBjZW1wdHl2
ICImI3gyOUIyOyI+Cis8IUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiPgorPCFFTlRJVFkgbGFl
bXB0eXYgIiYjeDI5QjQ7Ij4KKzwhRU5USVRZIG9oYmFyICImI3gyOUI1OyI+Cis8IUVOVElUWSBv
bWlkICImI3gyOUI2OyI+Cis8IUVOVElUWSBvcGFyICImI3gyOUI3OyI+Cis8IUVOVElUWSBvcGVy
cCAiJiN4MjlCOTsiPgorPCFFTlRJVFkgb2xjcm9zcyAiJiN4MjlCQjsiPgorPCFFTlRJVFkgb2Rz
b2xkICImI3gyOUJDOyI+Cis8IUVOVElUWSBvbGNpciAiJiN4MjlCRTsiPgorPCFFTlRJVFkgb2Zj
aXIgIiYjeDI5QkY7Ij4KKzwhRU5USVRZIG9sdCAiJiN4MjlDMDsiPgorPCFFTlRJVFkgb2d0ICIm
I3gyOUMxOyI+Cis8IUVOVElUWSBjaXJzY2lyICImI3gyOUMyOyI+Cis8IUVOVElUWSBjaXJFICIm
I3gyOUMzOyI+Cis8IUVOVElUWSBzb2xiICImI3gyOUM0OyI+Cis8IUVOVElUWSBic29sYiAiJiN4
MjlDNTsiPgorPCFFTlRJVFkgYm94Ym94ICImI3gyOUM5OyI+Cis8IUVOVElUWSB0cmlzYiAiJiN4
MjlDRDsiPgorPCFFTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ij4KKzwhRU5USVRZIExlZnRUcmlh
bmdsZUJhciAiJiN4MjlDRjsiPgorPCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlQmFyICImI3gyOUNG
OyYjeDMzODsiPgorPCFFTlRJVFkgUmlnaHRUcmlhbmdsZUJhciAiJiN4MjlEMDsiPgorPCFFTlRJ
VFkgTm90UmlnaHRUcmlhbmdsZUJhciAiJiN4MjlEMDsmI3gzMzg7Ij4KKzwhRU5USVRZIGlpbmZp
biAiJiN4MjlEQzsiPgorPCFFTlRJVFkgaW5maW50aWUgIiYjeDI5REQ7Ij4KKzwhRU5USVRZIG52
aW5maW4gIiYjeDI5REU7Ij4KKzwhRU5USVRZIGVwYXJzbCAiJiN4MjlFMzsiPgorPCFFTlRJVFkg
c21lcGFyc2wgIiYjeDI5RTQ7Ij4KKzwhRU5USVRZIGVxdnBhcnNsICImI3gyOUU1OyI+Cis8IUVO
VElUWSBsb3pmICImI3gyOUVCOyI+Cis8IUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ij4K
KzwhRU5USVRZIFJ1bGVEZWxheWVkICImI3gyOUY0OyI+Cis8IUVOVElUWSBkc29sICImI3gyOUY2
OyI+Cis8IUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiPgorPCFFTlRJVFkgYmlnb2RvdCAiJiN4MkEw
MDsiPgorPCFFTlRJVFkgeG9wbHVzICImI3gyQTAxOyI+Cis8IUVOVElUWSBiaWdvcGx1cyAiJiN4
MkEwMTsiPgorPCFFTlRJVFkgeG90aW1lICImI3gyQTAyOyI+Cis8IUVOVElUWSBiaWdvdGltZXMg
IiYjeDJBMDI7Ij4KKzwhRU5USVRZIHh1cGx1cyAiJiN4MkEwNDsiPgorPCFFTlRJVFkgYmlndXBs
dXMgIiYjeDJBMDQ7Ij4KKzwhRU5USVRZIHhzcWN1cCAiJiN4MkEwNjsiPgorPCFFTlRJVFkgYmln
c3FjdXAgIiYjeDJBMDY7Ij4KKzwhRU5USVRZIHFpbnQgIiYjeDJBMEM7Ij4KKzwhRU5USVRZIGlp
aWludCAiJiN4MkEwQzsiPgorPCFFTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ij4KKzwhRU5USVRZ
IGNpcmZuaW50ICImI3gyQTEwOyI+Cis8IUVOVElUWSBhd2ludCAiJiN4MkExMTsiPgorPCFFTlRJ
VFkgcnBwb2xpbnQgIiYjeDJBMTI7Ij4KKzwhRU5USVRZIHNjcG9saW50ICImI3gyQTEzOyI+Cis8
IUVOVElUWSBucG9saW50ICImI3gyQTE0OyI+Cis8IUVOVElUWSBwb2ludGludCAiJiN4MkExNTsi
PgorPCFFTlRJVFkgcXVhdGludCAiJiN4MkExNjsiPgorPCFFTlRJVFkgaW50bGFyaGsgIiYjeDJB
MTc7Ij4KKzwhRU5USVRZIHBsdXNjaXIgIiYjeDJBMjI7Ij4KKzwhRU5USVRZIHBsdXNhY2lyICIm
I3gyQTIzOyI+Cis8IUVOVElUWSBzaW1wbHVzICImI3gyQTI0OyI+Cis8IUVOVElUWSBwbHVzZHUg
IiYjeDJBMjU7Ij4KKzwhRU5USVRZIHBsdXNzaW0gIiYjeDJBMjY7Ij4KKzwhRU5USVRZIHBsdXN0
d28gIiYjeDJBMjc7Ij4KKzwhRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiPgorPCFFTlRJVFkgbWlu
dXNkdSAiJiN4MkEyQTsiPgorPCFFTlRJVFkgbG9wbHVzICImI3gyQTJEOyI+Cis8IUVOVElUWSBy
b3BsdXMgIiYjeDJBMkU7Ij4KKzwhRU5USVRZIENyb3NzICImI3gyQTJGOyI+Cis8IUVOVElUWSB0
aW1lc2QgIiYjeDJBMzA7Ij4KKzwhRU5USVRZIHRpbWVzYmFyICImI3gyQTMxOyI+Cis8IUVOVElU
WSBzbWFzaHAgIiYjeDJBMzM7Ij4KKzwhRU5USVRZIGxvdGltZXMgIiYjeDJBMzQ7Ij4KKzwhRU5U
SVRZIHJvdGltZXMgIiYjeDJBMzU7Ij4KKzwhRU5USVRZIG90aW1lc2FzICImI3gyQTM2OyI+Cis8
IUVOVElUWSBPdGltZXMgIiYjeDJBMzc7Ij4KKzwhRU5USVRZIG9kaXYgIiYjeDJBMzg7Ij4KKzwh
RU5USVRZIHRyaXBsdXMgIiYjeDJBMzk7Ij4KKzwhRU5USVRZIHRyaW1pbnVzICImI3gyQTNBOyI+
Cis8IUVOVElUWSB0cml0aW1lICImI3gyQTNCOyI+Cis8IUVOVElUWSBpcHJvZCAiJiN4MkEzQzsi
PgorPCFFTlRJVFkgaW50cHJvZCAiJiN4MkEzQzsiPgorPCFFTlRJVFkgYW1hbGcgIiYjeDJBM0Y7
Ij4KKzwhRU5USVRZIGNhcGRvdCAiJiN4MkE0MDsiPgorPCFFTlRJVFkgbmN1cCAiJiN4MkE0Mjsi
PgorPCFFTlRJVFkgbmNhcCAiJiN4MkE0MzsiPgorPCFFTlRJVFkgY2FwYW5kICImI3gyQTQ0OyI+
Cis8IUVOVElUWSBjdXBvciAiJiN4MkE0NTsiPgorPCFFTlRJVFkgY3VwY2FwICImI3gyQTQ2OyI+
Cis8IUVOVElUWSBjYXBjdXAgIiYjeDJBNDc7Ij4KKzwhRU5USVRZIGN1cGJyY2FwICImI3gyQTQ4
OyI+Cis8IUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiPgorPCFFTlRJVFkgY3VwY3VwICImI3gy
QTRBOyI+Cis8IUVOVElUWSBjYXBjYXAgIiYjeDJBNEI7Ij4KKzwhRU5USVRZIGNjdXBzICImI3gy
QTRDOyI+Cis8IUVOVElUWSBjY2FwcyAiJiN4MkE0RDsiPgorPCFFTlRJVFkgY2N1cHNzbSAiJiN4
MkE1MDsiPgorPCFFTlRJVFkgQW5kICImI3gyQTUzOyI+Cis8IUVOVElUWSBPciAiJiN4MkE1NDsi
PgorPCFFTlRJVFkgYW5kYW5kICImI3gyQTU1OyI+Cis8IUVOVElUWSBvcm9yICImI3gyQTU2OyI+
Cis8IUVOVElUWSBvcnNsb3BlICImI3gyQTU3OyI+Cis8IUVOVElUWSBhbmRzbG9wZSAiJiN4MkE1
ODsiPgorPCFFTlRJVFkgYW5kdiAiJiN4MkE1QTsiPgorPCFFTlRJVFkgb3J2ICImI3gyQTVCOyI+
Cis8IUVOVElUWSBhbmRkICImI3gyQTVDOyI+Cis8IUVOVElUWSBvcmQgIiYjeDJBNUQ7Ij4KKzwh
RU5USVRZIHdlZGJhciAiJiN4MkE1RjsiPgorPCFFTlRJVFkgc2RvdGUgIiYjeDJBNjY7Ij4KKzwh
RU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiPgorPCFFTlRJVFkgY29uZ2RvdCAiJiN4MkE2RDsiPgor
PCFFTlRJVFkgbmNvbmdkb3QgIiYjeDJBNkQ7JiN4MzM4OyI+Cis8IUVOVElUWSBlYXN0ZXIgIiYj
eDJBNkU7Ij4KKzwhRU5USVRZIGFwYWNpciAiJiN4MkE2RjsiPgorPCFFTlRJVFkgYXBFICImI3gy
QTcwOyI+Cis8IUVOVElUWSBuYXBFICImI3gyQTcwOyYjeDMzODsiPgorPCFFTlRJVFkgZXBsdXMg
IiYjeDJBNzE7Ij4KKzwhRU5USVRZIHBsdXNlICImI3gyQTcyOyI+Cis8IUVOVElUWSBFc2ltICIm
I3gyQTczOyI+Cis8IUVOVElUWSBDb2xvbmUgIiYjeDJBNzQ7Ij4KKzwhRU5USVRZIEVxdWFsICIm
I3gyQTc1OyI+Cis8IUVOVElUWSBlRERvdCAiJiN4MkE3NzsiPgorPCFFTlRJVFkgZGRvdHNlcSAi
JiN4MkE3NzsiPgorPCFFTlRJVFkgZXF1aXZERCAiJiN4MkE3ODsiPgorPCFFTlRJVFkgbHRjaXIg
IiYjeDJBNzk7Ij4KKzwhRU5USVRZIGd0Y2lyICImI3gyQTdBOyI+Cis8IUVOVElUWSBsdHF1ZXN0
ICImI3gyQTdCOyI+Cis8IUVOVElUWSBndHF1ZXN0ICImI3gyQTdDOyI+Cis8IUVOVElUWSBsZXMg
IiYjeDJBN0Q7Ij4KKzwhRU5USVRZIExlc3NTbGFudEVxdWFsICImI3gyQTdEOyI+Cis8IUVOVElU
WSBsZXFzbGFudCAiJiN4MkE3RDsiPgorPCFFTlRJVFkgbmxlcyAiJiN4MkE3RDsmI3gzMzg7Ij4K
KzwhRU5USVRZIE5vdExlc3NTbGFudEVxdWFsICImI3gyQTdEOyYjeDMzODsiPgorPCFFTlRJVFkg
bmxlcXNsYW50ICImI3gyQTdEOyYjeDMzODsiPgorPCFFTlRJVFkgZ2VzICImI3gyQTdFOyI+Cis8
IUVOVElUWSBHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsiPgorPCFFTlRJVFkgZ2Vxc2xhbnQg
IiYjeDJBN0U7Ij4KKzwhRU5USVRZIG5nZXMgIiYjeDJBN0U7JiN4MzM4OyI+Cis8IUVOVElUWSBO
b3RHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsmI3gzMzg7Ij4KKzwhRU5USVRZIG5nZXFzbGFu
dCAiJiN4MkE3RTsmI3gzMzg7Ij4KKzwhRU5USVRZIGxlc2RvdCAiJiN4MkE3RjsiPgorPCFFTlRJ
VFkgZ2VzZG90ICImI3gyQTgwOyI+Cis8IUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyI+Cis8IUVO
VElUWSBnZXNkb3RvICImI3gyQTgyOyI+Cis8IUVOVElUWSBsZXNkb3RvciAiJiN4MkE4MzsiPgor
PCFFTlRJVFkgZ2VzZG90b2wgIiYjeDJBODQ7Ij4KKzwhRU5USVRZIGxhcCAiJiN4MkE4NTsiPgor
PCFFTlRJVFkgbGVzc2FwcHJveCAiJiN4MkE4NTsiPgorPCFFTlRJVFkgZ2FwICImI3gyQTg2OyI+
Cis8IUVOVElUWSBndHJhcHByb3ggIiYjeDJBODY7Ij4KKzwhRU5USVRZIGxuZSAiJiN4MkE4Nzsi
PgorPCFFTlRJVFkgbG5lcSAiJiN4MkE4NzsiPgorPCFFTlRJVFkgZ25lICImI3gyQTg4OyI+Cis8
IUVOVElUWSBnbmVxICImI3gyQTg4OyI+Cis8IUVOVElUWSBsbmFwICImI3gyQTg5OyI+Cis8IUVO
VElUWSBsbmFwcHJveCAiJiN4MkE4OTsiPgorPCFFTlRJVFkgZ25hcCAiJiN4MkE4QTsiPgorPCFF
TlRJVFkgZ25hcHByb3ggIiYjeDJBOEE7Ij4KKzwhRU5USVRZIGxFZyAiJiN4MkE4QjsiPgorPCFF
TlRJVFkgbGVzc2VxcWd0ciAiJiN4MkE4QjsiPgorPCFFTlRJVFkgZ0VsICImI3gyQThDOyI+Cis8
IUVOVElUWSBndHJlcXFsZXNzICImI3gyQThDOyI+Cis8IUVOVElUWSBsc2ltZSAiJiN4MkE4RDsi
PgorPCFFTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ij4KKzwhRU5USVRZIGxzaW1nICImI3gyQThGOyI+
Cis8IUVOVElUWSBnc2ltbCAiJiN4MkE5MDsiPgorPCFFTlRJVFkgbGdFICImI3gyQTkxOyI+Cis8
IUVOVElUWSBnbEUgIiYjeDJBOTI7Ij4KKzwhRU5USVRZIGxlc2dlcyAiJiN4MkE5MzsiPgorPCFF
TlRJVFkgZ2VzbGVzICImI3gyQTk0OyI+Cis8IUVOVElUWSBlbHMgIiYjeDJBOTU7Ij4KKzwhRU5U
SVRZIGVxc2xhbnRsZXNzICImI3gyQTk1OyI+Cis8IUVOVElUWSBlZ3MgIiYjeDJBOTY7Ij4KKzwh
RU5USVRZIGVxc2xhbnRndHIgIiYjeDJBOTY7Ij4KKzwhRU5USVRZIGVsc2RvdCAiJiN4MkE5Nzsi
PgorPCFFTlRJVFkgZWdzZG90ICImI3gyQTk4OyI+Cis8IUVOVElUWSBlbCAiJiN4MkE5OTsiPgor
PCFFTlRJVFkgZWcgIiYjeDJBOUE7Ij4KKzwhRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ij4KKzwhRU5U
SVRZIHNpbWcgIiYjeDJBOUU7Ij4KKzwhRU5USVRZIHNpbWxFICImI3gyQTlGOyI+Cis8IUVOVElU
WSBzaW1nRSAiJiN4MkFBMDsiPgorPCFFTlRJVFkgTGVzc0xlc3MgIiYjeDJBQTE7Ij4KKzwhRU5U
SVRZIE5vdE5lc3RlZExlc3NMZXNzICImI3gyQUExOyYjeDMzODsiPgorPCFFTlRJVFkgR3JlYXRl
ckdyZWF0ZXIgIiYjeDJBQTI7Ij4KKzwhRU5USVRZIE5vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyICIm
I3gyQUEyOyYjeDMzODsiPgorPCFFTlRJVFkgZ2xqICImI3gyQUE0OyI+Cis8IUVOVElUWSBnbGEg
IiYjeDJBQTU7Ij4KKzwhRU5USVRZIGx0Y2MgIiYjeDJBQTY7Ij4KKzwhRU5USVRZIGd0Y2MgIiYj
eDJBQTc7Ij4KKzwhRU5USVRZIGxlc2NjICImI3gyQUE4OyI+Cis8IUVOVElUWSBnZXNjYyAiJiN4
MkFBOTsiPgorPCFFTlRJVFkgc210ICImI3gyQUFBOyI+Cis8IUVOVElUWSBsYXQgIiYjeDJBQUI7
Ij4KKzwhRU5USVRZIHNtdGUgIiYjeDJBQUM7Ij4KKzwhRU5USVRZIHNtdGVzICImI3gyQUFDOyYj
eEZFMDA7Ij4KKzwhRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ij4KKzwhRU5USVRZIGxhdGVzICImI3gy
QUFEOyYjeEZFMDA7Ij4KKzwhRU5USVRZIGJ1bXBFICImI3gyQUFFOyI+Cis8IUVOVElUWSBwcmUg
IiYjeDJBQUY7Ij4KKzwhRU5USVRZIHByZWNlcSAiJiN4MkFBRjsiPgorPCFFTlRJVFkgUHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsiPgorPCFFTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ij4KKzwh
RU5USVRZIG5wcmVjZXEgIiYjeDJBQUY7JiN4MzM4OyI+Cis8IUVOVElUWSBOb3RQcmVjZWRlc0Vx
dWFsICImI3gyQUFGOyYjeDMzODsiPgorPCFFTlRJVFkgc2NlICImI3gyQUIwOyI+Cis8IUVOVElU
WSBzdWNjZXEgIiYjeDJBQjA7Ij4KKzwhRU5USVRZIFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7Ij4K
KzwhRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyI+Cis8IUVOVElUWSBuc3VjY2VxICImI3gy
QUIwOyYjeDMzODsiPgorPCFFTlRJVFkgTm90U3VjY2VlZHNFcXVhbCAiJiN4MkFCMDsmI3gzMzg7
Ij4KKzwhRU5USVRZIHByRSAiJiN4MkFCMzsiPgorPCFFTlRJVFkgc2NFICImI3gyQUI0OyI+Cis8
IUVOVElUWSBwcm5FICImI3gyQUI1OyI+Cis8IUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiPgor
PCFFTlRJVFkgc2NuRSAiJiN4MkFCNjsiPgorPCFFTlRJVFkgc3VjY25lcXEgIiYjeDJBQjY7Ij4K
KzwhRU5USVRZIHByYXAgIiYjeDJBQjc7Ij4KKzwhRU5USVRZIHByZWNhcHByb3ggIiYjeDJBQjc7
Ij4KKzwhRU5USVRZIHNjYXAgIiYjeDJBQjg7Ij4KKzwhRU5USVRZIHN1Y2NhcHByb3ggIiYjeDJB
Qjg7Ij4KKzwhRU5USVRZIHBybmFwICImI3gyQUI5OyI+Cis8IUVOVElUWSBwcmVjbmFwcHJveCAi
JiN4MkFCOTsiPgorPCFFTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ij4KKzwhRU5USVRZIHN1Y2NuYXBw
cm94ICImI3gyQUJBOyI+Cis8IUVOVElUWSBQciAiJiN4MkFCQjsiPgorPCFFTlRJVFkgU2MgIiYj
eDJBQkM7Ij4KKzwhRU5USVRZIHN1YmRvdCAiJiN4MkFCRDsiPgorPCFFTlRJVFkgc3VwZG90ICIm
I3gyQUJFOyI+Cis8IUVOVElUWSBzdWJwbHVzICImI3gyQUJGOyI+Cis8IUVOVElUWSBzdXBwbHVz
ICImI3gyQUMwOyI+Cis8IUVOVElUWSBzdWJtdWx0ICImI3gyQUMxOyI+Cis8IUVOVElUWSBzdXBt
dWx0ICImI3gyQUMyOyI+Cis8IUVOVElUWSBzdWJlZG90ICImI3gyQUMzOyI+Cis8IUVOVElUWSBz
dXBlZG90ICImI3gyQUM0OyI+Cis8IUVOVElUWSBzdWJFICImI3gyQUM1OyI+Cis8IUVOVElUWSBz
dWJzZXRlcXEgIiYjeDJBQzU7Ij4KKzwhRU5USVRZIG5zdWJFICImI3gyQUM1OyYjeDMzODsiPgor
PCFFTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ij4KKzwhRU5USVRZIHN1cEUgIiYj
eDJBQzY7Ij4KKzwhRU5USVRZIHN1cHNldGVxcSAiJiN4MkFDNjsiPgorPCFFTlRJVFkgbnN1cEUg
IiYjeDJBQzY7JiN4MzM4OyI+Cis8IUVOVElUWSBuc3Vwc2V0ZXFxICImI3gyQUM2OyYjeDMzODsi
PgorPCFFTlRJVFkgc3Vic2ltICImI3gyQUM3OyI+Cis8IUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7
Ij4KKzwhRU5USVRZIHN1Ym5FICImI3gyQUNCOyI+Cis8IUVOVElUWSBzdWJzZXRuZXFxICImI3gy
QUNCOyI+Cis8IUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiPgorPCFFTlRJVFkgdmFy
c3Vic2V0bmVxcSAiJiN4MkFDQjsmI3hGRTAwOyI+Cis8IUVOVElUWSBzdXBuRSAiJiN4MkFDQzsi
PgorPCFFTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiPgorPCFFTlRJVFkgdnN1cG5FICImI3gy
QUNDOyYjeEZFMDA7Ij4KKzwhRU5USVRZIHZhcnN1cHNldG5lcXEgIiYjeDJBQ0M7JiN4RkUwMDsi
PgorPCFFTlRJVFkgY3N1YiAiJiN4MkFDRjsiPgorPCFFTlRJVFkgY3N1cCAiJiN4MkFEMDsiPgor
PCFFTlRJVFkgY3N1YmUgIiYjeDJBRDE7Ij4KKzwhRU5USVRZIGNzdXBlICImI3gyQUQyOyI+Cis8
IUVOVElUWSBzdWJzdXAgIiYjeDJBRDM7Ij4KKzwhRU5USVRZIHN1cHN1YiAiJiN4MkFENDsiPgor
PCFFTlRJVFkgc3Vic3ViICImI3gyQUQ1OyI+Cis8IUVOVElUWSBzdXBzdXAgIiYjeDJBRDY7Ij4K
KzwhRU5USVRZIHN1cGhzdWIgIiYjeDJBRDc7Ij4KKzwhRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7
Ij4KKzwhRU5USVRZIGZvcmt2ICImI3gyQUQ5OyI+Cis8IUVOVElUWSB0b3Bmb3JrICImI3gyQURB
OyI+Cis8IUVOVElUWSBtbGNwICImI3gyQURCOyI+Cis8IUVOVElUWSBEYXNodiAiJiN4MkFFNDsi
PgorPCFFTlRJVFkgRG91YmxlTGVmdFRlZSAiJiN4MkFFNDsiPgorPCFFTlRJVFkgVmRhc2hsICIm
I3gyQUU2OyI+Cis8IUVOVElUWSBCYXJ2ICImI3gyQUU3OyI+Cis8IUVOVElUWSB2QmFyICImI3gy
QUU4OyI+Cis8IUVOVElUWSB2QmFydiAiJiN4MkFFOTsiPgorPCFFTlRJVFkgVmJhciAiJiN4MkFF
QjsiPgorPCFFTlRJVFkgTm90ICImI3gyQUVDOyI+Cis8IUVOVElUWSBiTm90ICImI3gyQUVEOyI+
Cis8IUVOVElUWSBybm1pZCAiJiN4MkFFRTsiPgorPCFFTlRJVFkgY2lybWlkICImI3gyQUVGOyI+
Cis8IUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ij4KKzwhRU5USVRZIHRvcGNpciAiJiN4MkFGMTsi
PgorPCFFTlRJVFkgbmhwYXIgIiYjeDJBRjI7Ij4KKzwhRU5USVRZIHBhcnNpbSAiJiN4MkFGMzsi
PgorPCFFTlRJVFkgcGFyc2wgIiYjeDJBRkQ7Ij4KKzwhRU5USVRZIG5wYXJzbCAiJiN4MkFGRDsm
I3gyMEU1OyI+Cis8IUVOVElUWSBmZmxpZyAiJiN4RkIwMDsiPgorPCFFTlRJVFkgZmlsaWcgIiYj
eEZCMDE7Ij4KKzwhRU5USVRZIGZsbGlnICImI3hGQjAyOyI+Cis8IUVOVElUWSBmZmlsaWcgIiYj
eEZCMDM7Ij4KKzwhRU5USVRZIGZmbGxpZyAiJiN4RkIwNDsiPgorPCFFTlRJVFkgQXNjciAiJiN4
MUQ0OUM7Ij4KKzwhRU5USVRZIENzY3IgIiYjeDFENDlFOyI+Cis8IUVOVElUWSBEc2NyICImI3gx
RDQ5RjsiPgorPCFFTlRJVFkgR3NjciAiJiN4MUQ0QTI7Ij4KKzwhRU5USVRZIEpzY3IgIiYjeDFE
NEE1OyI+Cis8IUVOVElUWSBLc2NyICImI3gxRDRBNjsiPgorPCFFTlRJVFkgTnNjciAiJiN4MUQ0
QTk7Ij4KKzwhRU5USVRZIE9zY3IgIiYjeDFENEFBOyI+Cis8IUVOVElUWSBQc2NyICImI3gxRDRB
QjsiPgorPCFFTlRJVFkgUXNjciAiJiN4MUQ0QUM7Ij4KKzwhRU5USVRZIFNzY3IgIiYjeDFENEFF
OyI+Cis8IUVOVElUWSBUc2NyICImI3gxRDRBRjsiPgorPCFFTlRJVFkgVXNjciAiJiN4MUQ0QjA7
Ij4KKzwhRU5USVRZIFZzY3IgIiYjeDFENEIxOyI+Cis8IUVOVElUWSBXc2NyICImI3gxRDRCMjsi
PgorPCFFTlRJVFkgWHNjciAiJiN4MUQ0QjM7Ij4KKzwhRU5USVRZIFlzY3IgIiYjeDFENEI0OyI+
Cis8IUVOVElUWSBac2NyICImI3gxRDRCNTsiPgorPCFFTlRJVFkgYXNjciAiJiN4MUQ0QjY7Ij4K
KzwhRU5USVRZIGJzY3IgIiYjeDFENEI3OyI+Cis8IUVOVElUWSBjc2NyICImI3gxRDRCODsiPgor
PCFFTlRJVFkgZHNjciAiJiN4MUQ0Qjk7Ij4KKzwhRU5USVRZIGZzY3IgIiYjeDFENEJCOyI+Cis8
IUVOVElUWSBoc2NyICImI3gxRDRCRDsiPgorPCFFTlRJVFkgaXNjciAiJiN4MUQ0QkU7Ij4KKzwh
RU5USVRZIGpzY3IgIiYjeDFENEJGOyI+Cis8IUVOVElUWSBrc2NyICImI3gxRDRDMDsiPgorPCFF
TlRJVFkgbHNjciAiJiN4MUQ0QzE7Ij4KKzwhRU5USVRZIG1zY3IgIiYjeDFENEMyOyI+Cis8IUVO
VElUWSBuc2NyICImI3gxRDRDMzsiPgorPCFFTlRJVFkgcHNjciAiJiN4MUQ0QzU7Ij4KKzwhRU5U
SVRZIHFzY3IgIiYjeDFENEM2OyI+Cis8IUVOVElUWSByc2NyICImI3gxRDRDNzsiPgorPCFFTlRJ
VFkgc3NjciAiJiN4MUQ0Qzg7Ij4KKzwhRU5USVRZIHRzY3IgIiYjeDFENEM5OyI+Cis8IUVOVElU
WSB1c2NyICImI3gxRDRDQTsiPgorPCFFTlRJVFkgdnNjciAiJiN4MUQ0Q0I7Ij4KKzwhRU5USVRZ
IHdzY3IgIiYjeDFENENDOyI+Cis8IUVOVElUWSB4c2NyICImI3gxRDRDRDsiPgorPCFFTlRJVFkg
eXNjciAiJiN4MUQ0Q0U7Ij4KKzwhRU5USVRZIHpzY3IgIiYjeDFENENGOyI+Cis8IUVOVElUWSBB
ZnIgIiYjeDFENTA0OyI+Cis8IUVOVElUWSBCZnIgIiYjeDFENTA1OyI+Cis8IUVOVElUWSBEZnIg
IiYjeDFENTA3OyI+Cis8IUVOVElUWSBFZnIgIiYjeDFENTA4OyI+Cis8IUVOVElUWSBGZnIgIiYj
eDFENTA5OyI+Cis8IUVOVElUWSBHZnIgIiYjeDFENTBBOyI+Cis8IUVOVElUWSBKZnIgIiYjeDFE
NTBEOyI+Cis8IUVOVElUWSBLZnIgIiYjeDFENTBFOyI+Cis8IUVOVElUWSBMZnIgIiYjeDFENTBG
OyI+Cis8IUVOVElUWSBNZnIgIiYjeDFENTEwOyI+Cis8IUVOVElUWSBOZnIgIiYjeDFENTExOyI+
Cis8IUVOVElUWSBPZnIgIiYjeDFENTEyOyI+Cis8IUVOVElUWSBQZnIgIiYjeDFENTEzOyI+Cis8
IUVOVElUWSBRZnIgIiYjeDFENTE0OyI+Cis8IUVOVElUWSBTZnIgIiYjeDFENTE2OyI+Cis8IUVO
VElUWSBUZnIgIiYjeDFENTE3OyI+Cis8IUVOVElUWSBVZnIgIiYjeDFENTE4OyI+Cis8IUVOVElU
WSBWZnIgIiYjeDFENTE5OyI+Cis8IUVOVElUWSBXZnIgIiYjeDFENTFBOyI+Cis8IUVOVElUWSBY
ZnIgIiYjeDFENTFCOyI+Cis8IUVOVElUWSBZZnIgIiYjeDFENTFDOyI+Cis8IUVOVElUWSBhZnIg
IiYjeDFENTFFOyI+Cis8IUVOVElUWSBiZnIgIiYjeDFENTFGOyI+Cis8IUVOVElUWSBjZnIgIiYj
eDFENTIwOyI+Cis8IUVOVElUWSBkZnIgIiYjeDFENTIxOyI+Cis8IUVOVElUWSBlZnIgIiYjeDFE
NTIyOyI+Cis8IUVOVElUWSBmZnIgIiYjeDFENTIzOyI+Cis8IUVOVElUWSBnZnIgIiYjeDFENTI0
OyI+Cis8IUVOVElUWSBoZnIgIiYjeDFENTI1OyI+Cis8IUVOVElUWSBpZnIgIiYjeDFENTI2OyI+
Cis8IUVOVElUWSBqZnIgIiYjeDFENTI3OyI+Cis8IUVOVElUWSBrZnIgIiYjeDFENTI4OyI+Cis8
IUVOVElUWSBsZnIgIiYjeDFENTI5OyI+Cis8IUVOVElUWSBtZnIgIiYjeDFENTJBOyI+Cis8IUVO
VElUWSBuZnIgIiYjeDFENTJCOyI+Cis8IUVOVElUWSBvZnIgIiYjeDFENTJDOyI+Cis8IUVOVElU
WSBwZnIgIiYjeDFENTJEOyI+Cis8IUVOVElUWSBxZnIgIiYjeDFENTJFOyI+Cis8IUVOVElUWSBy
ZnIgIiYjeDFENTJGOyI+Cis8IUVOVElUWSBzZnIgIiYjeDFENTMwOyI+Cis8IUVOVElUWSB0ZnIg
IiYjeDFENTMxOyI+Cis8IUVOVElUWSB1ZnIgIiYjeDFENTMyOyI+Cis8IUVOVElUWSB2ZnIgIiYj
eDFENTMzOyI+Cis8IUVOVElUWSB3ZnIgIiYjeDFENTM0OyI+Cis8IUVOVElUWSB4ZnIgIiYjeDFE
NTM1OyI+Cis8IUVOVElUWSB5ZnIgIiYjeDFENTM2OyI+Cis8IUVOVElUWSB6ZnIgIiYjeDFENTM3
OyI+Cis8IUVOVElUWSBBb3BmICImI3gxRDUzODsiPgorPCFFTlRJVFkgQm9wZiAiJiN4MUQ1Mzk7
Ij4KKzwhRU5USVRZIERvcGYgIiYjeDFENTNCOyI+Cis8IUVOVElUWSBFb3BmICImI3gxRDUzQzsi
PgorPCFFTlRJVFkgRm9wZiAiJiN4MUQ1M0Q7Ij4KKzwhRU5USVRZIEdvcGYgIiYjeDFENTNFOyI+
Cis8IUVOVElUWSBJb3BmICImI3gxRDU0MDsiPgorPCFFTlRJVFkgSm9wZiAiJiN4MUQ1NDE7Ij4K
KzwhRU5USVRZIEtvcGYgIiYjeDFENTQyOyI+Cis8IUVOVElUWSBMb3BmICImI3gxRDU0MzsiPgor
PCFFTlRJVFkgTW9wZiAiJiN4MUQ1NDQ7Ij4KKzwhRU5USVRZIE9vcGYgIiYjeDFENTQ2OyI+Cis8
IUVOVElUWSBTb3BmICImI3gxRDU0QTsiPgorPCFFTlRJVFkgVG9wZiAiJiN4MUQ1NEI7Ij4KKzwh
RU5USVRZIFVvcGYgIiYjeDFENTRDOyI+Cis8IUVOVElUWSBWb3BmICImI3gxRDU0RDsiPgorPCFF
TlRJVFkgV29wZiAiJiN4MUQ1NEU7Ij4KKzwhRU5USVRZIFhvcGYgIiYjeDFENTRGOyI+Cis8IUVO
VElUWSBZb3BmICImI3gxRDU1MDsiPgorPCFFTlRJVFkgYW9wZiAiJiN4MUQ1NTI7Ij4KKzwhRU5U
SVRZIGJvcGYgIiYjeDFENTUzOyI+Cis8IUVOVElUWSBjb3BmICImI3gxRDU1NDsiPgorPCFFTlRJ
VFkgZG9wZiAiJiN4MUQ1NTU7Ij4KKzwhRU5USVRZIGVvcGYgIiYjeDFENTU2OyI+Cis8IUVOVElU
WSBmb3BmICImI3gxRDU1NzsiPgorPCFFTlRJVFkgZ29wZiAiJiN4MUQ1NTg7Ij4KKzwhRU5USVRZ
IGhvcGYgIiYjeDFENTU5OyI+Cis8IUVOVElUWSBpb3BmICImI3gxRDU1QTsiPgorPCFFTlRJVFkg
am9wZiAiJiN4MUQ1NUI7Ij4KKzwhRU5USVRZIGtvcGYgIiYjeDFENTVDOyI+Cis8IUVOVElUWSBs
b3BmICImI3gxRDU1RDsiPgorPCFFTlRJVFkgbW9wZiAiJiN4MUQ1NUU7Ij4KKzwhRU5USVRZIG5v
cGYgIiYjeDFENTVGOyI+Cis8IUVOVElUWSBvb3BmICImI3gxRDU2MDsiPgorPCFFTlRJVFkgcG9w
ZiAiJiN4MUQ1NjE7Ij4KKzwhRU5USVRZIHFvcGYgIiYjeDFENTYyOyI+Cis8IUVOVElUWSByb3Bm
ICImI3gxRDU2MzsiPgorPCFFTlRJVFkgc29wZiAiJiN4MUQ1NjQ7Ij4KKzwhRU5USVRZIHRvcGYg
IiYjeDFENTY1OyI+Cis8IUVOVElUWSB1b3BmICImI3gxRDU2NjsiPgorPCFFTlRJVFkgdm9wZiAi
JiN4MUQ1Njc7Ij4KKzwhRU5USVRZIHdvcGYgIiYjeDFENTY4OyI+Cis8IUVOVElUWSB4b3BmICIm
I3gxRDU2OTsiPgorPCFFTlRJVFkgeW9wZiAiJiN4MUQ1NkE7Ij4KKzwhRU5USVRZIHpvcGYgIiYj
eDFENTZCOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weQppbmRl
eCA5ZDc2MzE4MWQ4MmQuLjg4ZDQ3OGZlMGVmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L2Rvd25sb2FkLnB5CkBAIC03LDggKzcsNyBAQCBpbXBvcnQganNvbgogaW1wb3J0IGlv
CiBpbXBvcnQgb3MKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKLQot
ZnJvbSBzaXgubW92ZXMudXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Zyb20gdXJsbGli
LnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KIAogdHJ5OgogICAgIGltcG9ydCB6c3RhbmRhcmQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCA5YTQzYTY4ZjFmYmMuLjRiOTcz
ZDUzOTlhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQpAQCAtMSw3ICsx
LDYgQEAKIGltcG9ydCBvcy5wYXRoCiBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKLWZy
b20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIHdpdGhfbWV0YWNsYXNzCi1mcm9tIHNpeC5tb3Zlcy51
cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHBhcnNlCitmcm9tIHVybGxpYi5wYXJzZSBp
bXBvcnQgdXJsam9pbiwgdXJscGFyc2UsIHBhcnNlX3FzCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0
YSwgYWJzdHJhY3Rwcm9wZXJ0eQogCiBmcm9tIC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aApAQCAt
NDIsNyArNDEsNyBAQCBjbGFzcyBNYW5pZmVzdEl0ZW1NZXRhKEFCQ01ldGEpOgogICAgICAgICBy
ZXR1cm4gcnYgICMgdHlwZTogaWdub3JlCiAKIAotY2xhc3MgTWFuaWZlc3RJdGVtKHdpdGhfbWV0
YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKK2NsYXNzIE1hbmlmZXN0SXRlbShtZXRhY2xhc3M9
TWFuaWZlc3RJdGVtTWV0YSk6CiAgICAgX19zbG90c19fID0gKCJfdGVzdHNfcm9vdCIsICJwYXRo
IikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCBwYXRoKToKQEAgLTEwNCw3
ICsxMDMsNyBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0od2l0aF9tZXRhY2xhc3MoTWFuaWZlc3RJdGVt
TWV0YSkpOgogCiAKIGNsYXNzIFVSTE1hbmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgotICAgIF9f
c2xvdHNfXyA9ICgidXJsX2Jhc2UiLCAiX3VybCIsICJfZXh0cmFzIikKKyAgICBfX3Nsb3RzX18g
PSAoInVybF9iYXNlIiwgIl91cmwiLCAiX2V4dHJhcyIsICJfZmxhZ3MiKQogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgIHRlc3RzX3Jvb3QsICAjIHR5cGU6IFRleHQK
QEAgLTEyMCw2ICsxMTksOSBAQCBjbGFzcyBVUkxNYW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToK
ICAgICAgICAgYXNzZXJ0IHVybCBpcyBOb25lIG9yIHVybFswXSAhPSAiLyIKICAgICAgICAgc2Vs
Zi5fdXJsID0gdXJsCiAgICAgICAgIHNlbGYuX2V4dHJhcyA9IGV4dHJhcworICAgICAgICBwYXJz
ZWRfdXJsID0gdXJscGFyc2Uoc2VsZi51cmwpCisgICAgICAgIHNlbGYuX2ZsYWdzID0gKHNldChw
YXJzZWRfdXJsLnBhdGgucnNwbGl0KCIvIiwgMSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkgfAorICAg
ICAgICAgICAgICAgICAgICAgICBzZXQocGFyc2VfcXMocGFyc2VkX3VybC5xdWVyeSkuZ2V0KCJ3
cHRfZmxhZ3MiLCBbXSkpKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlkKHNlbGYpOgpAQCAt
MTM4LDIyICsxNDAsMTkgQEAgY2xhc3MgVVJMTWFuaWZlc3RJdGVtKE1hbmlmZXN0SXRlbSk6CiAg
ICAgQHByb3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+
IGJvb2wKLSAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICJodHRwcyIgaW4g
ZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisgICAgICAgIHJldHVybiAiaHR0cHMi
IGluIHNlbGYuX2ZsYWdzIG9yICJzZXJ2aWNld29ya2VyIiBpbiBzZWxmLl9mbGFncwogCiAgICAg
QHByb3BlcnR5CiAgICAgZGVmIGgyKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wK
LSAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwg
MSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICJoMiIgaW4gZmxhZ3MKKyAg
ICAgICAgcmV0dXJuICJoMiIgaW4gc2VsZi5fZmxhZ3MKIAogICAgIEBwcm9wZXJ0eQogICAgIGRl
ZiBzdWJkb21haW4oc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICBm
bGFncyA9IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxp
dCgiLiIpWzE6LTFdKQogICAgICAgICAjIE5vdGU6IHRoaXMgaXMgY3VycmVudGx5IGhhcmQtY29k
ZWQgdG8gY2hlY2sgZm9yIGB3d3dgLCByYXRoZXIgdGhhbgogICAgICAgICAjIGFsbCBwb3NzaWJs
ZSB2YWxpZCBzdWJkb21haW5zLiBJdCBjYW4gYmUgZXh0ZW5kZWQgaWYgbmVlZGVkLgotICAgICAg
ICByZXR1cm4gInd3dyIgaW4gZmxhZ3MKKyAgICAgICAgcmV0dXJuICJ3d3ciIGluIHNlbGYuX2Zs
YWdzCiAKICAgICBkZWYgdG9fanNvbihzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBs
ZVtPcHRpb25hbFtUZXh0XSwgRGljdFtBbnksIEFueV1dCkBAIC0yODksNyArMjg4LDcgQEAgY2xh
c3MgUmVmVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICBpZiBzZWxmLmRwaSBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgIGV4dHJhc1siZHBpIl0gPSBzZWxmLmRwaQogICAgICAgICBpZiBz
ZWxmLmZ1enp5OgotICAgICAgICAgICAgZXh0cmFzWyJmdXp6eSJdID0gbGlzdChpdGVyaXRlbXMo
c2VsZi5mdXp6eSkpCisgICAgICAgICAgICBleHRyYXNbImZ1enp5Il0gPSBsaXN0KHNlbGYuZnV6
enkuaXRlbXMoKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvanNvbmxpYi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvanNvbmxpYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjQ5ZWFmMDJlODAwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvanNv
bmxpYi5weQpAQCAtMCwwICsxLDEzOSBAQAoraW1wb3J0IHJlCitpbXBvcnQganNvbgorCisKK01Z
UFkgPSBGYWxzZQoraWYgTVlQWToKKyAgICAjIE1ZUFkgaXMgc2V0IHRvIFRydWUgd2hlbiBydW4g
dW5kZXIgTXlweS4KKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBBbnlTdHIsIENhbGxhYmxl
LCBEaWN0LCBJTywgVGV4dAorCisKK19fYWxsX18gPSBbImxvYWQiLCAiZHVtcF9sb2NhbCIsICJk
dW1wX2xvY2FsIiwgImR1bXBfZGlzdCIsICJkdW1wc19kaXN0Il0KKworCit0cnk6CisgICAgaW1w
b3J0IHVqc29uCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaGFzX3Vqc29uID0gRmFsc2UKK2Vs
c2U6CisgICAgaGFzX3Vqc29uID0gVHJ1ZQorCisjCisjIGxvYWQKKyMKKworaWYgaGFzX3Vqc29u
OgorICAgIGxvYWQgPSB1anNvbi5sb2FkICAjIHR5cGU6IENhbGxhYmxlW1tJT1tBbnlTdHJdXSwg
QW55XQorCitlbHNlOgorICAgIGxvYWQgPSBqc29uLmxvYWQKKworCisjCisjIGxvYWRzCisjCisK
K2lmIGhhc191anNvbjoKKyAgICBsb2FkcyA9IHVqc29uLmxvYWRzICAjIHR5cGU6IENhbGxhYmxl
W1tBbnlTdHJdLCBBbnldCisKK2Vsc2U6CisgICAgbG9hZHMgPSBqc29uLmxvYWRzCisKKworIwor
IyBkdW1wL2R1bXBzX2xvY2FsIG9wdGlvbnMgZm9yIHNvbWUgbGlicmFyaWVzCisjCitfdWpzb25f
ZHVtcF9sb2NhbF9rd2FyZ3MgPSB7CisgICAgJ2Vuc3VyZV9hc2NpaSc6IEZhbHNlLAorICAgICdl
c2NhcGVfZm9yd2FyZF9zbGFzaGVzJzogRmFsc2UsCisgICAgJ2luZGVudCc6IDEsCisgICAgJ3Jl
amVjdF9ieXRlcyc6IFRydWUsCit9ICAjIHR5cGU6IERpY3Rbc3RyLCBBbnldCisKKworX2pzb25f
ZHVtcF9sb2NhbF9rd2FyZ3MgPSB7CisgICAgJ2Vuc3VyZV9hc2NpaSc6IEZhbHNlLAorICAgICdp
bmRlbnQnOiAxLAorICAgICdzZXBhcmF0b3JzJzogKCcsJywgJzogJyksCit9ICAjIHR5cGU6IERp
Y3Rbc3RyLCBBbnldCisKKworIworIyBkdW1wX2xvY2FsIChmb3IgbG9jYWwsIG5vbi1kaXN0cmli
dXRlZCB1c2FnZSBvZiBKU09OKQorIworCitpZiBoYXNfdWpzb246CisgICAgZGVmIGR1bXBfbG9j
YWwob2JqLCBmcCk6CisgICAgICAgICMgdHlwZTogKEFueSwgSU9bc3RyXSkgLT4gTm9uZQorICAg
ICAgICByZXR1cm4gdWpzb24uZHVtcChvYmosIGZwLCAqKl91anNvbl9kdW1wX2xvY2FsX2t3YXJn
cykKKworZWxzZToKKyAgICBkZWYgZHVtcF9sb2NhbChvYmosIGZwKToKKyAgICAgICAgIyB0eXBl
OiAoQW55LCBJT1tzdHJdKSAtPiBOb25lCisgICAgICAgIHJldHVybiBqc29uLmR1bXAob2JqLCBm
cCwgKipfanNvbl9kdW1wX2xvY2FsX2t3YXJncykKKworCisjCisjIGR1bXBzX2xvY2FsIChmb3Ig
bG9jYWwsIG5vbi1kaXN0cmlidXRlZCB1c2FnZSBvZiBKU09OKQorIworCitpZiBoYXNfdWpzb246
CisgICAgZGVmIGR1bXBzX2xvY2FsKG9iaik6CisgICAgICAgICMgdHlwZTogKEFueSkgLT4gVGV4
dAorICAgICAgICByZXR1cm4gdWpzb24uZHVtcHMob2JqLCAqKl91anNvbl9kdW1wX2xvY2FsX2t3
YXJncykKKworZWxzZToKKyAgICBkZWYgZHVtcHNfbG9jYWwob2JqKToKKyAgICAgICAgIyB0eXBl
OiAoQW55KSAtPiBUZXh0CisgICAgICAgIHJldHVybiBqc29uLmR1bXBzKG9iaiwgKipfanNvbl9k
dW1wX2xvY2FsX2t3YXJncykKKworCisjCisjIGR1bXAvZHVtcHNfZGlzdCAoZm9yIGRpc3RyaWJ1
dGVkIHVzYWdlIG9mIEpTT04gd2hlcmUgZmlsZXMgc2hvdWxkIHNhZmVseSByb3VuZHRyaXApCisj
CisKK191anNvbl9kdW1wX2Rpc3Rfa3dhcmdzID0geworICAgICdzb3J0X2tleXMnOiBUcnVlLAor
ICAgICdpbmRlbnQnOiAxLAorICAgICdyZWplY3RfYnl0ZXMnOiBUcnVlLAorfSAgIyB0eXBlOiBE
aWN0W3N0ciwgQW55XQorCisKK19qc29uX2R1bXBfZGlzdF9rd2FyZ3MgPSB7CisgICAgJ3NvcnRf
a2V5cyc6IFRydWUsCisgICAgJ2luZGVudCc6IDEsCisgICAgJ3NlcGFyYXRvcnMnOiAoJywnLCAn
OiAnKSwKK30gICMgdHlwZTogRGljdFtzdHIsIEFueV0KKworCitpZiBoYXNfdWpzb246CisgICAg
aWYgdWpzb24uZHVtcHMoW10sIGluZGVudD0xKSA9PSAiW10iOgorICAgICAgICAjIG9wdGltaXN0
aWNhbGx5IHNlZSBpZiBodHRwczovL2dpdGh1Yi5jb20vdWx0cmFqc29uL3VsdHJhanNvbi9pc3N1
ZXMvNDI5IGlzIGZpeGVkCisgICAgICAgIGRlZiBfdWpzb25fZml4dXAocyk6CisgICAgICAgICAg
ICAjIHR5cGU6IChzdHIpIC0+IHN0cgorICAgICAgICAgICAgcmV0dXJuIHMKKyAgICBlbHNlOgor
ICAgICAgICBfdWpzb25fZml4dXBfcmUgPSByZS5jb21waWxlKHIiKFtcW3tdKVtcblx4MjBdKyhb
fVxdXSkiKQorCisgICAgICAgIGRlZiBfdWpzb25fZml4dXAocyk6CisgICAgICAgICAgICAjIHR5
cGU6IChzdHIpIC0+IHN0cgorICAgICAgICAgICAgcmV0dXJuIF91anNvbl9maXh1cF9yZS5zdWIo
CisgICAgICAgICAgICAgICAgbGFtYmRhIG06IG0uZ3JvdXAoMSkgKyBtLmdyb3VwKDIpLAorICAg
ICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICkKKworICAgIGRlZiBkdW1wX2Rpc3Qob2JqLCBm
cCk6CisgICAgICAgICMgdHlwZTogKEFueSwgSU9bc3RyXSkgLT4gTm9uZQorICAgICAgICBmcC53
cml0ZShfdWpzb25fZml4dXAodWpzb24uZHVtcHMob2JqLCAqKl91anNvbl9kdW1wX2Rpc3Rfa3dh
cmdzKSkpCisKKyAgICBkZWYgZHVtcHNfZGlzdChvYmopOgorICAgICAgICAjIHR5cGU6IChBbnkp
IC0+IFRleHQKKyAgICAgICAgcmV0dXJuIF91anNvbl9maXh1cCh1anNvbi5kdW1wcyhvYmosICoq
X3Vqc29uX2R1bXBfZGlzdF9rd2FyZ3MpKQorZWxzZToKKyAgICBkZWYgZHVtcF9kaXN0KG9iaiwg
ZnApOgorICAgICAgICAjIHR5cGU6IChBbnksIElPW3N0cl0pIC0+IE5vbmUKKyAgICAgICAganNv
bi5kdW1wKG9iaiwgZnAsICoqX2pzb25fZHVtcF9kaXN0X2t3YXJncykKKworICAgIGRlZiBkdW1w
c19kaXN0KG9iaik6CisgICAgICAgICMgdHlwZTogKEFueSkgLT4gVGV4dAorICAgICAgICByZXR1
cm4ganNvbi5kdW1wcyhvYmosICoqX2pzb25fZHVtcF9kaXN0X2t3YXJncykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvbG9nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9sb2cucHkKaW5kZXggOWUyYWQ3NDA4MWU0Li42NTUxYzJiNWY3Y2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvbG9nLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbG9nLnB5CkBAIC0xLDE1ICsxLDEwIEBACiBpbXBv
cnQgbG9nZ2luZwotaW1wb3J0IHN5cwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigibWFu
aWZlc3QiKQogCi1kZWYgc2V0dXAoKToKK2RlZiBlbmFibGVfZGVidWdfbG9nZ2luZygpOgogICAg
ICMgdHlwZTogKCkgLT4gTm9uZQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQot
ICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKLSAgICBmb3Jt
YXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcihsb2dnaW5nLkJBU0lDX0ZPUk1BVCwgTm9uZSkKLSAg
ICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIo
aGFuZGxlcikKIAogZGVmIGdldF9sb2dnZXIoKToKICAgICAjIHR5cGU6ICgpIC0+IGxvZ2dpbmcu
TG9nZ2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCA0
NDljZDI0NWFjYmMuLjlmMWU5MDJkMzFhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L21hbmlmZXN0LnB5CkBAIC0xLDE4ICsxLDEyIEBACiBpbXBvcnQgaW8KLWltcG9ydCBpdGVy
dG9vbHMKLWltcG9ydCBqc29uCiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGZyb20gYXRvbWljd3Jp
dGVzIGltcG9ydCBhdG9taWNfd3JpdGUKIGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKIGZyb20g
bXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQb29sLCBjcHVfY291bnQKLWZyb20gc2l4IGltcG9ydCAo
Ci0gICAgUFkzLAotICAgIGVuc3VyZV90ZXh0LAotICAgIGl0ZXJpdGVtcywKLSAgICBpdGVydmFs
dWVzLAotICAgIHN0cmluZ190eXBlcywKLSkKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfdGV4dAog
Citmcm9tIC4gaW1wb3J0IGpzb25saWIKIGZyb20gLiBpbXBvcnQgdmNzCiBmcm9tIC5pdGVtIGlt
cG9ydCAoQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwKICAgICAgICAgICAgICAgICAgICBDcmFzaFRl
c3QsCkBAIC00NSwxMSArMzksNiBAQCBpZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBU
eXBlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKLXRyeToKLSAgICBpbXBvcnQgdWpz
b24KLSAgICBmYXN0X2pzb24gPSB1anNvbgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZhc3Rf
anNvbiA9IGpzb24gICMgdHlwZTogaWdub3JlCiAKIENVUlJFTlRfVkVSU0lPTiA9IDggICMgdHlw
ZTogaW50CiAKQEAgLTk3LDcgKzg2LDcgQEAgY2xhc3MgTWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0
YVR5cGUpOgogICAgICAgICAiIiJEaWN0aW9uYXJ5IHN1YmNsYXNzIGNvbnRhaW5pbmcgYSBUeXBl
RGF0YSBpbnN0YW5jZSBmb3IgZWFjaCB0ZXN0IHR5cGUsCiAgICAgICAgIGtleWVkIGJ5IHR5cGUg
bmFtZSIiIgogICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gRmFsc2UgICMgdHlwZTogYm9vbAot
ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoaXRlbV9jbGFzc2VzKToKKyAgICAg
ICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbV9jbGFzc2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBz
ZWxmW2tleV0gPSBUeXBlRGF0YShtYW5pZmVzdCwgdmFsdWUpCiAgICAgICAgIHNlbGYuaW5pdGlh
bGl6ZWQgPSBUcnVlCiAgICAgICAgIHNlbGYuanNvbl9vYmogPSBOb25lICAjIHR5cGU6IE5vbmUK
QEAgLTExMyw3ICsxMDIsNyBAQCBjbGFzcyBNYW5pZmVzdERhdGEoTWFuaWZlc3REYXRhVHlwZSk6
CiAgICAgICAgICIiIkdldCBhIGxpc3Qgb2YgYWxsIHBhdGhzIGNvbnRhaW5pbmcgdGVzdCBpdGVt
cwogICAgICAgICB3aXRob3V0IGFjdHVhbGx5IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIi
CiAgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCi0gICAgICAgIGZvciBpdGVt
X2RhdGEgaW4gaXRlcnZhbHVlcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW1fZGF0YSBpbiBzZWxm
LnZhbHVlcygpOgogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbV9kYXRhOgogICAgICAgICAg
ICAgICAgIHJ2LmFkZChvcy5wYXRoLnNlcC5qb2luKGl0ZW0pKQogICAgICAgICByZXR1cm4gcnYK
QEAgLTEyMSw3ICsxMTAsNyBAQCBjbGFzcyBNYW5pZmVzdERhdGEoTWFuaWZlc3REYXRhVHlwZSk6
CiAgICAgZGVmIHR5cGVfYnlfcGF0aChzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0
W1R1cGxlW1RleHQsIC4uLl0sIFRleHRdCiAgICAgICAgIHJ2ID0ge30KLSAgICAgICAgZm9yIGl0
ZW1fdHlwZSwgaXRlbV9kYXRhIGluIGl0ZXJpdGVtcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW1f
dHlwZSwgaXRlbV9kYXRhIGluIHNlbGYuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBpdGVtIGlu
IGl0ZW1fZGF0YToKICAgICAgICAgICAgICAgICBydltpdGVtXSA9IGl0ZW1fdHlwZQogICAgICAg
ICByZXR1cm4gcnYKQEAgLTE2Myw3ICsxNTIsNyBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgog
ICAgICAgICB0cGF0aF9sZW4gPSBsZW4odHBhdGgpCiAKICAgICAgICAgZm9yIHR5cGVfdGVzdHMg
aW4gc2VsZi5fZGF0YS52YWx1ZXMoKToKLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiBp
dGVyaXRlbXModHlwZV90ZXN0cyk6CisgICAgICAgICAgICBmb3IgcGF0aCwgdGVzdHMgaW4gdHlw
ZV90ZXN0cy5pdGVtcygpOgogICAgICAgICAgICAgICAgIGlmIHBhdGhbOnRwYXRoX2xlbl0gPT0g
dHBhdGg6CiAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAg
ICAgICAgICAgICAgICAgeWllbGQgdGVzdApAQCAtMTc4LDYgKzE2Nyw4IEBAIGNsYXNzIE1hbmlm
ZXN0KG9iamVjdCk6CiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRoZSBjYXNlIHdlIGFyZSBub3Qg
dXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4gaXRlbSBmcm9tCiAgICAgICAg
IHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVmdW5jdCBlbnRyaWVzIGZyb20g
dGhlIG1hbmlmZXN0LiIiIgogCisgICAgICAgIGxvZ2dlciA9IGdldF9sb2dnZXIoKQorCiAgICAg
ICAgIGNoYW5nZWQgPSBGYWxzZQogCiAgICAgICAgICMgQ3JlYXRlIGxvY2FsIHZhcmlhYmxlIHJl
ZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZvaWQgdGhlCkBAIC0yMjYsMzUgKzIxNyw1
MiBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICB0b191cGRh
dGUuYXBwZW5kKHNvdXJjZV9maWxlKQogCiAgICAgICAgIGlmIHRvX3VwZGF0ZToKKyAgICAgICAg
ICAgIGxvZ2dlci5kZWJ1ZygiQ29tcHV0aW5nIG1hbmlmZXN0IHVwZGF0ZSBmb3IgJXMgaXRlbXMi
ICUgbGVuKHRvX3VwZGF0ZSkpCiAgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQogCisKKyAgICAg
ICAgIyAyNSBpdGVtcyB3YXMgZGVyaXZlZCBleHBlcmltZW50YWxseSAoMjAyMC0wMSkgdG8gYmUg
YXBwcm94aW1hdGVseSB0aGUKKyAgICAgICAgIyBwb2ludCBhdCB3aGljaCBpdCBpcyBxdWlja2Vy
IHRvIGNyZWF0ZSBhIFBvb2wgYW5kIHBhcmFsbGVsaXplIHVwZGF0ZS4KKyAgICAgICAgcG9vbCA9
IE5vbmUKICAgICAgICAgaWYgcGFyYWxsZWwgYW5kIGxlbih0b191cGRhdGUpID4gMjUgYW5kIGNw
dV9jb3VudCgpID4gMToKLSAgICAgICAgICAgICMgMjUgZGVyaXZlZCBleHBlcmltZW50YWxseSAo
MjAyMC0wMSkgdG8gYmUgYXBwcm94aW1hdGVseQotICAgICAgICAgICAgIyB0aGUgcG9pbnQgYXQg
d2hpY2ggaXQgaXMgcXVpY2tlciB0byBjcmVhdGUgUG9vbCBhbmQKLSAgICAgICAgICAgICMgcGFy
YWxsZWxpemUgdGhpcwotICAgICAgICAgICAgcG9vbCA9IFBvb2woKQorICAgICAgICAgICAgIyBP
biBQeXRob24gMyBvbiBXaW5kb3dzLCB1c2luZyA+PSBNQVhJTVVNX1dBSVRfT0JKRUNUUyBwcm9j
ZXNzZXMKKyAgICAgICAgICAgICMgY2F1c2VzIGEgY3Jhc2ggaW4gdGhlIG11bHRpcHJvY2Vzc2lu
ZyBtb2R1bGUuIFdoaWxzdCB0aGlzIGVudW0KKyAgICAgICAgICAgICMgY2FuIHRlY2huaWNhbGx5
IGhhdmUgYW55IHZhbHVlLCBpdCBpcyB1c3VhbGx5IDY0LiBGb3Igc2FmZXR5LAorICAgICAgICAg
ICAgIyByZXN0cmljdCBtYW5pZmVzdCByZWdlbmVyYXRpb24gdG8gNDggcHJvY2Vzc2VzIG9uIFdp
bmRvd3MuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIFNlZSBodHRwczovL2J1Z3MucHl0
aG9uLm9yZy9pc3N1ZTI2OTAzIGFuZCBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTQwMjYz
CisgICAgICAgICAgICBwcm9jZXNzZXMgPSBjcHVfY291bnQoKQorICAgICAgICAgICAgaWYgc3lz
LnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIHByb2Nlc3NlcyA+IDQ4OgorICAgICAgICAgICAgICAg
IHByb2Nlc3NlcyA9IDQ4CisgICAgICAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXMpCiAKICAg
ICAgICAgICAgICMgY2h1bmtzaXplIHNldCA+IDEgd2hlbiBtb3JlIHRoYW4gMTAwMDAgdGVzdHMs
IGJlY2F1c2UKICAgICAgICAgICAgICMgY2h1bmtpbmcgaXMgYSBuZXQtZ2FpbiBvbmNlIHdlIGdl
dCB0byB2ZXJ5IGxhcmdlIG51bWJlcnMKICAgICAgICAgICAgICMgb2YgaXRlbXMgKGFnYWluLCBl
eHBlcmltZW50YWxseSwgMjAyMC0wMSkKKyAgICAgICAgICAgIGNodW5rc2l6ZSA9IG1heCgxLCBs
ZW4odG9fdXBkYXRlKSAvLyAxMDAwMCkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiRG9pbmcg
YSBtdWx0aXByb2Nlc3NlZCB1cGRhdGUuIENQVSBjb3VudDogJXMsICIKKyAgICAgICAgICAgICAg
ICAicHJvY2Vzc2VzOiAlcywgY2h1bmtzaXplOiAlcyIgJSAoY3B1X2NvdW50KCksIHByb2Nlc3Nl
cywgY2h1bmtzaXplKSkKICAgICAgICAgICAgIHJlc3VsdHMgPSBwb29sLmltYXBfdW5vcmRlcmVk
KGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b191cGRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaHVua3NpemU9bWF4KDEsIGxlbih0b191cGRhdGUpIC8vIDEwMDAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzaXplPWNodW5rc2l6ZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgIyB0eXBlOiBJdGVy
YXRvcltUdXBsZVtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4
dF1dCi0gICAgICAgIGVsaWYgUFkzOgotICAgICAgICAgICAgcmVzdWx0cyA9IG1hcChjb21wdXRl
X21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZXN1bHRzID0gaXRlcnRvb2xzLmltYXAoY29tcHV0ZV9tYW5pZmVzdF9pdGVtcywgdG9fdXBkYXRl
KQorICAgICAgICAgICAgcmVzdWx0cyA9IG1hcChjb21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191
cGRhdGUpCiAKICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgogICAgICAgICAgICAgcmVs
X3BhdGhfcGFydHMsIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0
CiAgICAgICAgICAgICBkYXRhW25ld190eXBlXVtyZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9p
dGVtcwogICAgICAgICAgICAgZGF0YVtuZXdfdHlwZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9
IGZpbGVfaGFzaAogCisgICAgICAgICMgTWFrZSBzdXJlIHRvIHRlcm1pbmF0ZSB0aGUgUG9vbCwg
dG8gYXZvaWQgaGFuZ3Mgb24gUHl0aG9uIDMuCisgICAgICAgICMgaHR0cHM6Ly9kb2NzLnB5dGhv
bi5vcmcvMy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5odG1sI211bHRpcHJvY2Vzc2luZy5wb29s
LlBvb2wKKyAgICAgICAgaWYgcG9vbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBvb2wudGVy
bWluYXRlKCkKKwogICAgICAgICBpZiByZW1haW5pbmdfbWFuaWZlc3RfcGF0aHM6CiAgICAgICAg
ICAgICBjaGFuZ2VkID0gVHJ1ZQogICAgICAgICAgICAgZm9yIHJlbF9wYXRoX3BhcnRzIGluIHJl
bWFpbmluZ19tYW5pZmVzdF9wYXRoczoKLSAgICAgICAgICAgICAgICBmb3IgdGVzdF9kYXRhIGlu
IGl0ZXJ2YWx1ZXMoZGF0YSk6CisgICAgICAgICAgICAgICAgZm9yIHRlc3RfZGF0YSBpbiBkYXRh
LnZhbHVlcygpOgogICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0aF9wYXJ0cyBpbiB0ZXN0
X2RhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRoX3Bh
cnRzXQogCkBAIC0yNzQsNyArMjgyLDcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAg
ICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAgICAgICAgIHRlc3RfdHlwZTogdHlw
ZV9wYXRocy50b19qc29uKCkKLSAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMg
aW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0aHMKKyAgICAgICAgICAgIGZvciB0
ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gc2VsZi5fZGF0YS5pdGVtcygpIGlmIHR5cGVfcGF0aHMK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKQEAgLTMwOCw3ICszMTYs
NyBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihvYmos
ICJpdGVtcyIpOgogICAgICAgICAgICAgcmFpc2UgTWFuaWZlc3RFcnJvcgogCi0gICAgICAgIGZv
ciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gaXRlcml0ZW1zKG9ialsiaXRlbXMiXSk6CisgICAg
ICAgIGZvciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gb2JqWyJpdGVtcyJdLml0ZW1zKCk6CiAg
ICAgICAgICAgICBpZiB0ZXN0X3R5cGUgbm90IGluIGl0ZW1fY2xhc3NlczoKICAgICAgICAgICAg
ICAgICByYWlzZSBNYW5pZmVzdEVycm9yCiAKQEAgLTM0MSwxMiArMzQ5LDEyIEBAIGRlZiBfbG9h
ZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgICAgICAgIGFsbG93X2NhY2hlZD1UcnVlICAj
IHR5cGU6IGJvb2wKICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gT3B0aW9uYWxb
TWFuaWZlc3RdCi0gICAgbWFuaWZlc3RfcGF0aCA9IChtYW5pZmVzdCBpZiBpc2luc3RhbmNlKG1h
bmlmZXN0LCBzdHJpbmdfdHlwZXMpCisgICAgbWFuaWZlc3RfcGF0aCA9IChtYW5pZmVzdCBpZiBp
c2luc3RhbmNlKG1hbmlmZXN0LCBzdHIpCiAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1hbmlm
ZXN0Lm5hbWUpCiAgICAgaWYgYWxsb3dfY2FjaGVkIGFuZCBtYW5pZmVzdF9wYXRoIGluIF9fbG9h
ZF9jYWNoZToKICAgICAgICAgcmV0dXJuIF9fbG9hZF9jYWNoZVttYW5pZmVzdF9wYXRoXQogCi0g
ICAgaWYgaXNpbnN0YW5jZShtYW5pZmVzdCwgc3RyaW5nX3R5cGVzKToKKyAgICBpZiBpc2luc3Rh
bmNlKG1hbmlmZXN0LCBzdHIpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6
CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIk9wZW5pbmcgbWFuaWZlc3QgYXQgJXMiICUgbWFu
aWZlc3QpCiAgICAgICAgIGVsc2U6CkBAIC0zNTQsNyArMzYyLDcgQEAgZGVmIF9sb2FkKGxvZ2dl
ciwgICMgdHlwZTogTG9nZ2VyCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggaW8ub3Bl
bihtYW5pZmVzdCwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICAgICAg
IHJ2ID0gTWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFzdF9qc29uLmxvYWQoZiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAganNvbmxpYi5sb2FkKGYpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzPXR5cGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZV9vd25zX29iaj1UcnVlKQogICAgICAgICBleGNl
cHQgSU9FcnJvcjoKQEAgLTM2NCw3ICszNzIsNyBAQCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBl
OiBMb2dnZXIKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgZWxzZToKICAgICAgICAgcnYg
PSBNYW5pZmVzdC5mcm9tX2pzb24odGVzdHNfcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFzdF9qc29uLmxvYWQobWFuaWZlc3QpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqc29ubGliLmxvYWQobWFuaWZlc3QpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlcz10eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbGVlX293bnNfb2JqPVRydWUpCiAKQEAgLTQ0OSw2ICs0NTcsNyBAQCBkZWYgX2xvYWRfYW5k
X3VwZGF0ZSh0ZXN0c19yb290LCAgIyB0eXBlOiBUZXh0CiAgICAgICAgIHVwZGF0ZSA9IFRydWUK
IAogICAgIGlmIHJlYnVpbGQgb3IgdXBkYXRlOgorICAgICAgICBsb2dnZXIuaW5mbygiVXBkYXRp
bmcgbWFuaWZlc3QiKQogICAgICAgICBmb3IgcmV0cnkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAgICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBt
YW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVfcm9vdCwKQEAgLTQ3Niw2ICs0ODUsNSBAQCBk
ZWYgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgpOgogICAgIHdpdGggYXRvbWljX3dyaXRl
KG1hbmlmZXN0X3BhdGgsIG92ZXJ3cml0ZT1UcnVlKSBhcyBmOgogICAgICAgICAjIFVzZSAnLCcg
aW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50IHRyYWlsaW5n
CiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvanNv
bi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihjYWxs
ZXJfb3duc19vYmo9VHJ1ZSksIGYsCi0gICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1ZSwg
aW5kZW50PTEsIHNlcGFyYXRvcnM9KCcsJywgJzogJykpCisgICAgICAgIGpzb25saWIuZHVtcF9k
aXN0KG1hbmlmZXN0LnRvX2pzb24oY2FsbGVyX293bnNfb2JqPVRydWUpLCBmKQogICAgICAgICBm
LndyaXRlKCJcbiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUu
cHkKaW5kZXggNmU5MGFjMDU0NzVmLi4zNGU2NzllYjhiNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNl
ZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKQEAgLTMsOCArMyw3IEBAIGltcG9ydCByZQog
aW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBpbyBpbXBvcnQg
Qnl0ZXNJTwotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIHRleHRfdHlw
ZQotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCitmcm9tIHVybGxp
Yi5wYXJzZSBpbXBvcnQgdXJsam9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKIE1Z
UFkgPSBGYWxzZQpAQCAtNzQsNyArNzMsNyBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwg
cmVnZXhwKToKICAgICAgICAgICAgICAgIHZhbHVlLgogICAgICIiIgogICAgIGZvciBsaW5lIGlu
IGY6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIGJpbmFyeV90eXBlKSwgbGluZQor
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lLCBieXRlcyksIGxpbmUKICAgICAgICAgbSA9
IHJlZ2V4cC5tYXRjaChsaW5lKQogICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgIGJyZWFr
CkBAIC04NSw5ICs4NCwxMyBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhwKToK
IF9hbnlfdmFyaWFudHMgPSB7CiAgICAgIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnkuaHRtbCJ9
LAogICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAorICAgICJzZXJ2
aWNld29ya2VyLW1vZHVsZSI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKICAgICAic2hhcmVkd29y
a2VyIjoge30sCisgICAgInNoYXJlZHdvcmtlci1tb2R1bGUiOiB7fSwKICAgICAiZGVkaWNhdGVk
d29ya2VyIjogeyJzdWZmaXgiOiAiLmFueS53b3JrZXIuaHRtbCJ9LAorICAgICJkZWRpY2F0ZWR3
b3JrZXItbW9kdWxlIjogeyJzdWZmaXgiOiAiLmFueS53b3JrZXItbW9kdWxlLmh0bWwifSwKICAg
ICAid29ya2VyIjogeyJsb25naGFuZCI6IHsiZGVkaWNhdGVkd29ya2VyIiwgInNoYXJlZHdvcmtl
ciIsICJzZXJ2aWNld29ya2VyIn19LAorICAgICJ3b3JrZXItbW9kdWxlIjoge30sCiAgICAgImpz
c2hlbGwiOiB7InN1ZmZpeCI6ICIuYW55LmpzIn0sCiB9ICAjIHR5cGU6IERpY3RbVGV4dCwgRGlj
dFtUZXh0LCBBbnldXQogCkBAIC05Nyw3ICsxMDAsNyBAQCBkZWYgZ2V0X2FueV92YXJpYW50cyhp
dGVtKToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChzdHJpbmdzKSBk
ZWZpbmVkIGJ5IHRoZSBnaXZlbiBrZXl3b3JkLgogICAgICIiIgotICAgIGFzc2VydCBpc2luc3Rh
bmNlKGl0ZW0sIHRleHRfdHlwZSksIGl0ZW0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCBz
dHIpLCBpdGVtCiAKICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50cy5nZXQoaXRlbSwgTm9uZSkK
ICAgICBpZiB2YXJpYW50IGlzIE5vbmU6CkBAIC0xMTksNyArMTIyLDcgQEAgZGVmIHBhcnNlX3Zh
cmlhbnRzKHZhbHVlKToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChz
dHJpbmdzKSBkZWZpbmVkIGJ5IGEgY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgotICAg
IGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBp
c2luc3RhbmNlKHZhbHVlLCBzdHIpLCB2YWx1ZQogCiAgICAgaWYgdmFsdWUgPT0gIiI6CiAgICAg
ICAgIHJldHVybiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKQpAQCAtMTM4LDcgKzE0MSw3IEBA
IGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgogICAgIHZhcmlhbnQgaXMgaW50ZW5kZWQgdG8g
cnVuIGluIGEgSlMgc2hlbGwsIGZvciB0aGUgdmFyaWFudHMgZGVmaW5lZCBieSB0aGUKICAgICBn
aXZlbiBjb21tYS1zZXBhcmF0ZWQgdmFsdWUuCiAgICAgIiIiCi0gICAgYXNzZXJ0IGlzaW5zdGFu
Y2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUs
IHN0ciksIHZhbHVlCiAKICAgICBydiA9IHNldCgpCiAKQEAgLTE2NywyNyArMTcwLDI3IEBAIGRl
ZiBnbG9iYWxfdmFyaWFudF91cmwodXJsLCBzdWZmaXgpOgogCiAKIGRlZiBfcGFyc2VfaHRtbChm
KToKLSAgICAjIHR5cGU6IChCaW5hcnlJTykgLT4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUKKyAg
ICAjIHR5cGU6IChCaW5hcnlJTykgLT4gRWxlbWVudFRyZWUuRWxlbWVudAogICAgIGRvYyA9IGh0
bWw1bGliLnBhcnNlKGYsIHRyZWVidWlsZGVyPSJldHJlZSIsIHVzZUNoYXJkZXQ9RmFsc2UpCiAg
ICAgaWYgTVlQWToKLSAgICAgICAgcmV0dXJuIGNhc3QoRWxlbWVudFRyZWUuRWxlbWVudFRyZWUs
IGRvYykKKyAgICAgICAgcmV0dXJuIGNhc3QoRWxlbWVudFRyZWUuRWxlbWVudCwgZG9jKQogICAg
IHJldHVybiBkb2MKIAogZGVmIF9wYXJzZV94bWwoZik6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8p
IC0+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlCisgICAgIyB0eXBlOiAoQmluYXJ5SU8pIC0+IEVs
ZW1lbnRUcmVlLkVsZW1lbnQKICAgICB0cnk6CiAgICAgICAgICMgcmFpc2VzIFZhbHVlRXJyb3Ig
d2l0aCBhbiB1bnN1cHBvcnRlZCBlbmNvZGluZywKICAgICAgICAgIyBQYXJzZUVycm9yIHdoZW4g
dGhlcmUncyBhbiB1bmRlZmluZWQgZW50aXR5Ci0gICAgICAgIHJldHVybiBFbGVtZW50VHJlZS5w
YXJzZShmKQorICAgICAgICByZXR1cm4gRWxlbWVudFRyZWUucGFyc2UoZikuZ2V0cm9vdCgpCiAg
ICAgZXhjZXB0IChWYWx1ZUVycm9yLCBFbGVtZW50VHJlZS5QYXJzZUVycm9yKToKICAgICAgICAg
Zi5zZWVrKDApCi0gICAgICAgIHJldHVybiBFbGVtZW50VHJlZS5wYXJzZShmLCBYTUxQYXJzZXIu
WE1MUGFyc2VyKCkpICAjIHR5cGU6IGlnbm9yZQorICAgICAgICByZXR1cm4gRWxlbWVudFRyZWUu
cGFyc2UoZiwgWE1MUGFyc2VyLlhNTFBhcnNlcigpKS5nZXRyb290KCkgICMgdHlwZTogaWdub3Jl
CiAKIAogY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgIHBhcnNlcnMgPSB7dSJodG1sIjpf
cGFyc2VfaHRtbCwKICAgICAgICAgICAgICAgIHUieGh0bWwiOl9wYXJzZV94bWwsCi0gICAgICAg
ICAgICAgICB1InN2ZyI6X3BhcnNlX3htbH0gICMgdHlwZTogRGljdFtUZXh0LCBDYWxsYWJsZVtb
QmluYXJ5SU9dLCBFbGVtZW50VHJlZS5FbGVtZW50VHJlZV1dCisgICAgICAgICAgICAgICB1InN2
ZyI6X3BhcnNlX3htbH0gICMgdHlwZTogRGljdFtUZXh0LCBDYWxsYWJsZVtbQmluYXJ5SU9dLCBF
bGVtZW50VHJlZS5FbGVtZW50XV0KIAogICAgIHJvb3RfZGlyX25vbl90ZXN0ID0ge3UiY29tbW9u
In0KIApAQCAtMjQzLDcgKzI0Niw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAg
ICAgICBpZiAiX19jYWNoZWRfcHJvcGVydGllc19fIiBpbiBydjoKICAgICAgICAgICAgIGNhY2hl
ZF9wcm9wZXJ0aWVzID0gcnZbIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyJdCi0gICAgICAgICAgICBy
diA9IHtrZXk6dmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHJ2KSBpZiBrZXkgbm90
IGluIGNhY2hlZF9wcm9wZXJ0aWVzfQorICAgICAgICAgICAgcnYgPSB7a2V5OnZhbHVlIGZvciBr
ZXksIHZhbHVlIGluIHJ2Lml0ZW1zKCkgaWYga2V5IG5vdCBpbiBjYWNoZWRfcHJvcGVydGllc30K
ICAgICAgICAgICAgIGRlbCBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KICAgICAgICAgcmV0
dXJuIHJ2CiAKQEAgLTMwNCw3ICszMDcsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgY29udGVudCA9IGYucmVhZCgpCiAKICAgICAgICAgICAgIGRhdGEgPSBi
IiIuam9pbigoYiJibG9iICIsIGIiJWQiICUgbGVuKGNvbnRlbnQpLCBiIlwwIiwgY29udGVudCkp
Ci0gICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4dF90eXBlKGhhc2hsaWIuc2hhMShkYXRhKS5o
ZXhkaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBzdHIoaGFzaGxpYi5zaGExKGRh
dGEpLmhleGRpZ2VzdCgpKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCiAKQEAgLTQ0Nyw3
ICs0NTAsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3Bl
cnR5CiAgICAgZGVmIHJvb3Qoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxb
VW5pb25bRWxlbWVudFRyZWUuRWxlbWVudCwgRWxlbWVudFRyZWUuRWxlbWVudFRyZWVdXQorICAg
ICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0VsZW1lbnRUcmVlLkVsZW1lbnRdCiAgICAgICAg
ICIiIlJldHVybiBhbiBFbGVtZW50VHJlZSBFbGVtZW50IGZvciB0aGUgcm9vdCBub2RlIG9mIHRo
ZSBmaWxlIGlmIGl0IGNvbnRhaW5zCiAgICAgICAgIG1hcmt1cCwgb3IgTm9uZSBpZiBpdCBkb2Vz
IG5vdCIiIgogICAgICAgICBpZiBub3Qgc2VsZi5tYXJrdXBfdHlwZToKQEAgLTQ2MSwxMiArNDY0
LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbjoKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgIGlmIGhhc2F0dHIo
dHJlZSwgImdldHJvb3QiKToKLSAgICAgICAgICAgIHJvb3QgPSB0cmVlLmdldHJvb3QoKSAgIyB0
eXBlOiBVbmlvbltFbGVtZW50VHJlZS5FbGVtZW50LCBFbGVtZW50VHJlZS5FbGVtZW50VHJlZV0K
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJvb3QgPSB0cmVlCi0KLSAgICAgICAgcmV0dXJu
IHJvb3QKKyAgICAgICAgcmV0dXJuIHRyZWUKIAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBk
ZWYgdGltZW91dF9ub2RlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHBhdGhzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90
ZXN0cGF0aHMucHkKaW5kZXggMjE5Nzc5MmNkNjRlLi42OTAyZjBjMDYzMzYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvdGVzdHBhdGhzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHBhdGhzLnB5CkBAIC0zLDggKzMsNiBAQCBpbXBv
cnQganNvbgogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAog
Ci1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCi0KIGZyb20gLm1hbmlmZXN0IGltcG9ydCBsb2Fk
X2FuZF91cGRhdGUsIE1hbmlmZXN0CiBmcm9tIC5sb2cgaW1wb3J0IGdldF9sb2dnZXIKIApAQCAt
MTAyLDcgKzEwMCw3IEBAIGRlZiB3cml0ZV9vdXRwdXQocGF0aF9pZF9tYXAsIGFzX2pzb24pOgog
ICAgIGlmIGFzX2pzb246CiAgICAgICAgIHByaW50KGpzb24uZHVtcHMocGF0aF9pZF9tYXApKQog
ICAgIGVsc2U6Ci0gICAgICAgIGZvciBwYXRoLCB0ZXN0X2lkcyBpbiBzb3J0ZWQoaXRlcml0ZW1z
KHBhdGhfaWRfbWFwKSk6CisgICAgICAgIGZvciBwYXRoLCB0ZXN0X2lkcyBpbiBzb3J0ZWQocGF0
aF9pZF9tYXAuaXRlbXMoKSk6CiAgICAgICAgICAgICBwcmludChwYXRoKQogICAgICAgICAgICAg
Zm9yIHRlc3RfaWQgaW4gc29ydGVkKHRlc3RfaWRzKToKICAgICAgICAgICAgICAgICBwcmludCgi
ICAiICsgdGVzdF9pZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAs
MCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBk
aXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC90ZXN0cy90ZXN0X2l0ZW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQppbmRleCA0
ZjJmYzhmMDNmMmQuLmRkMWM0ZTIwMDRkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X2l0ZW0u
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC90ZXN0cy90ZXN0X2l0ZW0ucHkKQEAgLTEzNCwzICsxMzQsMjUgQEAgZGVmIHRl
c3RfaXRlbV90eXBlcygpOgogICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZW1fdHlwZXMuaXRlbXMo
KToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoa2V5LCBzdHIpCiAgICAgICAgIGFzc2VydCBu
b3QgaW5zcGVjdC5pc2Fic3RyYWN0KHZhbHVlKQorCisKK2RlZiB0ZXN0X3dwdF9mbGFncygpOgor
ICAgIG0xID0gSGFybmVzc1Rlc3QoIi9mb28iLCAiYmFyIiwgIi8iLCAiYmFyIiArICI/d3B0X2Zs
YWdzPXd3dyIpCisgICAgYXNzZXJ0IG0xLnN1YmRvbWFpbiBpcyBUcnVlCisgICAgYXNzZXJ0IG0x
Lmh0dHBzIGlzIEZhbHNlCisgICAgYXNzZXJ0IG0xLmgyIGlzIEZhbHNlCisKKyAgICBtMiA9IEhh
cm5lc3NUZXN0KCIvZm9vIiwgImJhciIsICIvIiwgImJhciIgKyAiP3dwdF9mbGFncz1odHRwcyIp
CisgICAgYXNzZXJ0IG0yLnN1YmRvbWFpbiBpcyBGYWxzZQorICAgIGFzc2VydCBtMi5odHRwcyBp
cyBUcnVlCisgICAgYXNzZXJ0IG0yLmgyIGlzIEZhbHNlCisKKyAgICBtMyA9IEhhcm5lc3NUZXN0
KCIvZm9vIiwgImJhciIsICIvIiwgImJhciIgKyAiP3dwdF9mbGFncz1oMiIpCisgICAgYXNzZXJ0
IG0zLnN1YmRvbWFpbiBpcyBGYWxzZQorICAgIGFzc2VydCBtMy5odHRwcyBpcyBGYWxzZQorICAg
IGFzc2VydCBtMy5oMiBpcyBUcnVlCisKKyAgICBtNCA9IEhhcm5lc3NUZXN0KCIvZm9vIiwgImJh
ciIsICIvIiwgImJhciIgKyAiP3dwdF9mbGFncz1odHRwcyZ3cHRfZmxhZ3M9d3d3IikKKyAgICBh
c3NlcnQgbTQuc3ViZG9tYWluIGlzIFRydWUKKyAgICBhc3NlcnQgbTQuaHR0cHMgaXMgVHJ1ZQor
ICAgIGFzc2VydCBtNC5oMiBpcyBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlm
ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5CmluZGV4IDI2YThmZGMxNzYzMy4uNjU0
MDcwZmU0ZGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90
ZXN0cy90ZXN0X21hbmlmZXN0LnB5CkBAIC01LDggKzUsNiBAQCBpbXBvcnQgbW9jawogaW1wb3J0
IGh5cG90aGVzaXMgYXMgaAogaW1wb3J0IGh5cG90aGVzaXMuc3RyYXRlZ2llcyBhcyBocwogCi1m
cm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCi0KIGZyb20gLi4gaW1wb3J0IG1hbmlmZXN0LCBzb3Vy
Y2VmaWxlLCBpdGVtLCB1dGlscwogCiBNWVBZID0gRmFsc2UKQEAgLTk0LDExICs5MiwxMSBAQCBk
ZWYgbWFuaWZlc3RfdHJlZShkcmF3KToKIAogICAgIHJlZnRlc3RfdXJscyA9IFtdCiAgICAgb3V0
cHV0ID0gW10KLSAgICBzdGFjayA9IFsoKGssKSwgdikgZm9yIGssIHYgaW4gaXRlcml0ZW1zKGdl
bmVyYXRlZF9yb290KV0KKyAgICBzdGFjayA9IFsoKGssKSwgdikgZm9yIGssIHYgaW4gZ2VuZXJh
dGVkX3Jvb3QuaXRlbXMoKV0KICAgICB3aGlsZSBzdGFjazoKICAgICAgICAgcGF0aCwgbm9kZSA9
IHN0YWNrLnBvcCgpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6Ci0gICAgICAg
ICAgICBzdGFjay5leHRlbmQoKHBhdGggKyAoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMo
bm9kZSkpCisgICAgICAgICAgICBzdGFjay5leHRlbmQoKHBhdGggKyAoaywpLCB2KSBmb3Igaywg
diBpbiBub2RlLml0ZW1zKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZWxfcGF0aCA9
IG9zLnBhdGguc2VwLmpvaW4ocGF0aCkKICAgICAgICAgICAgIG5vZGUucmVsX3BhdGggPSByZWxf
cGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rl
c3Rfc291cmNlZmlsZS5weQppbmRleCBjYzk3NjE5YmI1NzEuLmVmNzU0Y2RiMGY1NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJj
ZWZpbGUucHkKQEAgLTIsNyArMiw3IEBAIGltcG9ydCBvcwogCiBpbXBvcnQgcHl0ZXN0CiAKLWZy
b20gc2l4IGltcG9ydCBCeXRlc0lPCitmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIC4uLmxp
bnQubGludCBpbXBvcnQgY2hlY2tfZ2xvYmFsX21ldGFkYXRhCiBmcm9tIC4uc291cmNlZmlsZSBp
bXBvcnQgU291cmNlRmlsZSwgcmVhZF9zY3JpcHRfbWV0YWRhdGEsIGpzX21ldGFfcmUsIHB5dGhv
bl9tZXRhX3JlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWU1Mzk5ZjQ4
MmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVz
dHMvdGVzdF9YTUxQYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVz
dF9tYW5pZmVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0
X3V0aWxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90eXBlZGF0YS5weQppbmRl
eCAwMWJiODI3MDVmODQuLjE3NDAwOGVhZTgxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90eXBlZGF0YS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0xLDUgKzEsNCBAQAotZnJvbSBzaXggaW1wb3J0IGl0ZXJ2
YWx1ZXMsIGl0ZXJpdGVtcwotZnJvbSBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjIGltcG9ydCBN
dXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5n
CiAKIAogTVlQWSA9IEZhbHNlCkBAIC0xODEsNyArMTgwLDcgQEAgY2xhc3MgVHlwZURhdGEoVHlw
ZURhdGFUeXBlKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc2V0KToKICAgICAgICAg
ICAgICAgICBjb3VudCArPSAxCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0
YWNrLmV4dGVuZChpdGVydmFsdWVzKHYpKQorICAgICAgICAgICAgICAgIHN0YWNrLmV4dGVuZCh2
LnZhbHVlcygpKQogCiAgICAgICAgIHN0YWNrID0gW3NlbGYuX2pzb25fZGF0YV0KICAgICAgICAg
d2hpbGUgc3RhY2s6CkBAIC0xODksNyArMTg4LDcgQEAgY2xhc3MgVHlwZURhdGEoVHlwZURhdGFU
eXBlKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgbGlzdCk6CiAgICAgICAgICAgICAg
ICAgY291bnQgKz0gMQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdGFjay5l
eHRlbmQoaXRlcnZhbHVlcyh2KSkKKyAgICAgICAgICAgICAgICBzdGFjay5leHRlbmQodi52YWx1
ZXMoKSkKIAogICAgICAgICByZXR1cm4gY291bnQKIApAQCAtMjcwLDcgKzI2OSw3IEBAIGNsYXNz
IFR5cGVEYXRhKFR5cGVEYXRhVHlwZSk6CiAgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBq
c29uX3J2LCB0dXBsZSgpKV0gICMgdHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERp
Y3RbVGV4dCwgQW55XSwgVHVwbGVbVGV4dCwgLi4uXV1dCiAgICAgICAgIHdoaWxlIHN0YWNrOgog
ICAgICAgICAgICAgZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBv
cCgpCi0gICAgICAgICAgICBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAg
ICAgICAgIGZvciBrLCB2IGluIGRhdGFfbm9kZS5pdGVtcygpOgogICAgICAgICAgICAgICAgIGZ1
bGxfa2V5ID0gcGFyX2Z1bGxfa2V5ICsgKGssKQogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uodiwgc2V0KToKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGsgbm90IGluIGpzb25fbm9k
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQppbmRleCAyOTY1MzNhNmJh
YmYuLmE4NmVmN2M4YWEyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUu
cHkKQEAgLTQsNyArNCw3IEBAIGltcG9ydCBvcwogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0CiBm
cm9tIC4gaW1wb3J0IHZjcwotZnJvbSAubG9nIGltcG9ydCBnZXRfbG9nZ2VyCitmcm9tIC5sb2cg
aW1wb3J0IGdldF9sb2dnZXIsIGVuYWJsZV9kZWJ1Z19sb2dnaW5nCiBmcm9tIC5kb3dubG9hZCBp
bXBvcnQgZG93bmxvYWRfZnJvbV9naXRodWIKIAogaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykKQEAgLTY0LDYgKzY0LDkgQEAgZGVmIGFic19wYXRoKHBhdGgpOgogZGVmIGNyZWF0ZV9w
YXJzZXIoKToKICAgICAjIHR5cGU6ICgpIC0+IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyCiAgICAg
cGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBkZXN0PSJ2ZXJib3NlIiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0iVHVybiBvbiB2ZXJib3Nl
IGxvZ2dpbmciKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItcCIsICItLXBh
dGgiLCB0eXBlPWFic19wYXRoLCBoZWxwPSJQYXRoIHRvIG1hbmlmZXN0IGZpbGUuIikKICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KApAQCAtOTAsNiArOTMsOCBAQCBkZWYgcnVuKCphcmdzLCAqKmt3
YXJncyk6CiAgICAgIyB0eXBlOiAoKkFueSwgKipBbnkpIC0+IE5vbmUKICAgICBpZiBrd2FyZ3Nb
InBhdGgiXSBpcyBOb25lOgogICAgICAgICBrd2FyZ3NbInBhdGgiXSA9IG9zLnBhdGguam9pbihr
d2FyZ3NbInRlc3RzX3Jvb3QiXSwgIk1BTklGRVNULmpzb24iKQorICAgIGlmIGt3YXJnc1sidmVy
Ym9zZSJdOgorICAgICAgICBlbmFibGVfZGVidWdfbG9nZ2luZygpCiAgICAgdXBkYXRlX2Zyb21f
Y2xpKCoqa3dhcmdzKQogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC92Y3MucHkKaW5kZXgg
MzQ0NTc1Mjc2YjQyLi42NWJhMzA4ZWEyNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dmNzLnB5CkBAIC0xLDEyICsxLDEwIEBACiBpbXBvcnQgYWJjCi1pbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc3RhdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gY29s
bGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZwogCi1mcm9tIHNpeCBpbXBvcnQgd2l0
aF9tZXRhY2xhc3MsIFBZMgotZnJvbSBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjIGltcG9ydCBN
dXRhYmxlTWFwcGluZwotCitmcm9tIC4gaW1wb3J0IGpzb25saWIKIGZyb20gLnV0aWxzIGltcG9y
dCBnaXQKIAogIyBDYW5ub3QgZG8gYGZyb20gLi5naXRpZ25vcmUgaW1wb3J0IGdpdGlnbm9yZWAg
YmVjYXVzZQpAQCAtMTksMTAgKzE3LDExIEBAIGlmIE1ZUFk6CiAgICAgIyBNWVBZIGlzIHNldCB0
byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IERpY3Qs
IE9wdGlvbmFsLCBMaXN0LCBTZXQsIFRleHQsIEl0ZXJhYmxlLCBBbnksIFR1cGxlLCBJdGVyYXRv
cgogICAgIGZyb20gLm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdCAgIyBjeWNsaWMgaW1wb3J0IHVu
ZGVyIE1ZUFkgZ3VhcmQKLSAgICBpZiBQWTI6Ci0gICAgICAgIHN0YXRfcmVzdWx0ID0gQW55Ci0g
ICAgZWxzZToKLSAgICAgICAgc3RhdF9yZXN1bHQgPSBvcy5zdGF0X3Jlc3VsdAorICAgIHN0YXRf
cmVzdWx0ID0gb3Muc3RhdF9yZXN1bHQKKworICAgIEdpdElnbm9yZUNhY2hlVHlwZSA9IE11dGFi
bGVNYXBwaW5nW2J5dGVzLCBib29sXQorZWxzZToKKyAgICBHaXRJZ25vcmVDYWNoZVR5cGUgPSBN
dXRhYmxlTWFwcGluZwogCiAKIGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFu
aWZlc3RfcGF0aCwgY2FjaGVfcm9vdCwKQEAgLTEyOCw3ICsxMjcsNyBAQCBjbGFzcyBGaWxlU3lz
dGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgY2FjaGUuZHVtcCgpCiAKIAotY2xhc3MgQ2Fj
aGVGaWxlKHdpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CitjbGFzcyBDYWNoZUZpbGUobWV0
YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgY2FjaGVfcm9vdCwg
dGVzdHNfcm9vdCwgcmVidWlsZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKFRleHQsIFRleHQs
IGJvb2wpIC0+IE5vbmUKICAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdApAQCAt
MTQ4LDcgKzE0Nyw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgogICAgICAgICBpZiBub3Qgc2VsZi5tb2RpZmllZDoKICAgICAgICAgICAgIHJldHVybgog
ICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBqc29u
LmR1bXAoc2VsZi5kYXRhLCBmLCBpbmRlbnQ9MSkKKyAgICAgICAgICAgIGpzb25saWIuZHVtcF9s
b2NhbChzZWxmLmRhdGEsIGYpCiAKICAgICBkZWYgbG9hZChzZWxmLCByZWJ1aWxkPUZhbHNlKToK
ICAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCkBAIC0xNTcsNyArMTU2
LDcgQEAgY2xhc3MgQ2FjaGVGaWxlKHdpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CiAgICAg
ICAgICAgICBpZiBub3QgcmVidWlsZDoKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5w
YXRoLCAncicpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEgPSBqc29ubGliLmxvYWQoZikKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgZGF0YSA9
IHNlbGYuY2hlY2tfdmFsaWQoZGF0YSkKQEAgLTIyMCw4ICsyMTksOCBAQCBjbGFzcyBNdGltZUNh
Y2hlKENhY2hlRmlsZSk6CiAgICAgICAgIHN1cGVyKE10aW1lQ2FjaGUsIHNlbGYpLmR1bXAoKQog
CiAKLWNsYXNzIEdpdElnbm9yZUNhY2hlKENhY2hlRmlsZSwgTXV0YWJsZU1hcHBpbmcpOiAgIyB0
eXBlOiBpZ25vcmUKLSAgICBmaWxlX25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCitjbGFzcyBHaXRJ
Z25vcmVDYWNoZShDYWNoZUZpbGUsIEdpdElnbm9yZUNhY2hlVHlwZSk6CisgICAgZmlsZV9uYW1l
ID0gImdpdGlnbm9yZTIuanNvbiIKIAogICAgIGRlZiBjaGVja192YWxpZChzZWxmLCBkYXRhKToK
ICAgICAgICAgIyB0eXBlOiAoRGljdFtBbnksIEFueV0pIC0+IERpY3RbQW55LCBBbnldCkBAIC0y
MzUsMjcgKzIzNCwzNSBAQCBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVN
YXBwaW5nKTogICMgdHlwZTogaWdub3JlCiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtl
eSk6CiAgICAgICAgICMgdHlwZTogKEFueSkgLT4gYm9vbAorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBrZXkgPSBrZXkuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYu
ZGF0YQogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgICMgdHlwZTog
KFRleHQpIC0+IGJvb2wKLSAgICAgICAgdiA9IHNlbGYuZGF0YVtrZXldCisgICAgICAgICMgdHlw
ZTogKGJ5dGVzKSAtPiBib29sCisgICAgICAgIHJlYWxfa2V5ID0ga2V5LmRlY29kZSgidXRmLTgi
KQorICAgICAgICB2ID0gc2VsZi5kYXRhW3JlYWxfa2V5XQogICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZSh2LCBib29sKQogICAgICAgICByZXR1cm4gdgogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNl
bGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0LCBib29sKSAtPiBOb25lCi0g
ICAgICAgIGlmIHNlbGYuZGF0YS5nZXQoa2V5KSAhPSB2YWx1ZToKKyAgICAgICAgIyB0eXBlOiAo
Ynl0ZXMsIGJvb2wpIC0+IE5vbmUKKyAgICAgICAgcmVhbF9rZXkgPSBrZXkuZGVjb2RlKCJ1dGYt
OCIpCisgICAgICAgIGlmIHNlbGYuZGF0YS5nZXQocmVhbF9rZXkpICE9IHZhbHVlOgogICAgICAg
ICAgICAgc2VsZi5tb2RpZmllZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0g
dmFsdWUKKyAgICAgICAgICAgIHNlbGYuZGF0YVtyZWFsX2tleV0gPSB2YWx1ZQogCiAgICAgZGVm
IF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUK
LSAgICAgICAgZGVsIHNlbGYuZGF0YVtrZXldCisgICAgICAgICMgdHlwZTogKGJ5dGVzKSAtPiBO
b25lCisgICAgICAgIHJlYWxfa2V5ID0ga2V5LmRlY29kZSgidXRmLTgiKQorICAgICAgICBkZWwg
c2VsZi5kYXRhW3JlYWxfa2V5XQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAj
IHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1RleHRdCi0gICAgICAgIHJldHVybiBpdGVyKHNlbGYuZGF0
YSkKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltieXRlc10KKyAgICAgICAgcmV0dXJu
IChrZXkuZW5jb2RlKCJ1dGYtOCIpIGZvciBrZXkgaW4gc2VsZi5kYXRhKQogCiAgICAgZGVmIF9f
bGVuX18oc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gaW50CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzg4ZmJiMTFlZDlkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvY29tbWFuZHMuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L2xvZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rw
YXRocy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zj
cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9teXB5LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKaW5kZXggYjk0M2I2ZDA4OWE0Li40ZDM1MjMwMmQ4MGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbXlweS5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9teXB5LmluaQpAQCAtMjIsNiArMjIsOSBAQCBpZ25vcmVfbWlzc2luZ19p
bXBvcnRzID0gVHJ1ZQogW215cHktcHl0ZXN0LipdCiBpZ25vcmVfbWlzc2luZ19pbXBvcnRzID0g
VHJ1ZQogCitbbXlweS11anNvbi4qXQoraWdub3JlX21pc3NpbmdfaW1wb3J0cyA9IFRydWUKKwog
W215cHktenN0YW5kYXJkLipdCiBpZ25vcmVfbWlzc2luZ19pbXBvcnRzID0gVHJ1ZQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZDZjZWI2ZmVhNGIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaQorKysgL2Rldi9udWxs
CkBAIC0xLDI5ICswLDAgQEAKLVtmbGFrZThdCi1zZWxlY3QgPSBFLFcsRixOCi0jIEUxMjg6IGNv
bnRpbnVhdGlvbiBsaW5lIHVuZGVyLWluZGVudGVkIGZvciB2aXN1YWwgaW5kZW50Ci0jIEUxMjk6
IHZpc3VhbGx5IGluZGVudGVkIGxpbmUgd2l0aCBzYW1lIGluZGVudCBhcyBuZXh0IGxvZ2ljYWwg
bGluZQotIyBFMjI2OiBtaXNzaW5nIHdoaXRlc3BhY2UgYXJvdW5kIGFyaXRobWV0aWMgb3BlcmF0
b3IKLSMgRTIzMTogbWlzc2luZyB3aGl0ZXNwYWNlIGFmdGVyIOKAmCzigJksIOKAmDvigJksIG9y
IOKAmDrigJkKLSMgRTI1MTogdW5leHBlY3RlZCBzcGFjZXMgYXJvdW5kIGtleXdvcmQgLyBwYXJh
bWV0ZXIgZXF1YWxzCi0jIEUyNjU6IGJsb2NrIGNvbW1lbnQgc2hvdWxkIHN0YXJ0IHdpdGgg4oCY
IyDigJgKLSMgRTMwMjogZXhwZWN0ZWQgMiBibGFuayBsaW5lcywgZm91bmQgMAotIyBFMzAzOiB0
b28gbWFueSBibGFuayBsaW5lcyAoMykKLSMgRTMwNTogZXhwZWN0ZWQgMiBibGFuayBsaW5lcyBh
ZnRlciBlbmQgb2YgZnVuY3Rpb24gb3IgY2xhc3MKLSMgRTQwMjogbW9kdWxlIGxldmVsIGltcG9y
dCBub3QgYXQgdG9wIG9mIGZpbGUKLSMgRTczMTogZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBleHBy
ZXNzaW9uLCB1c2UgYSBkZWYKLSMgVzUwNDogbGluZSBicmVhayBhZnRlciBiaW5hcnkgb3BlcmF0
b3IKLSMgVzYwMTogLmhhc19rZXkoKSBpcyBkZXByZWNhdGVkLCB1c2Ug4oCYaW7igJkKLSMgVzYw
NTogaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UKLSMgVzYwNjogJ2FzeW5jJyBhbmQgJ2F3YWl0JyBh
cmUgcmVzZXJ2ZWQga2V5d29yZHMgc3RhcnRpbmcgd2l0aCBQeXRob24gMy43Ci0jIE44MDE6IGNs
YXNzIG5hbWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlv
biBuYW1lIHNob3VsZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24g
c2hvdWxkIGJlIGxvd2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUy
NjUsRTMwMixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwMSxXNjA1LFc2MDYsTjgwMSxOODAy
LE44MDYKLWV4Y2x1ZGUgPQotICAgIC50b3gsCi0gICAgcHl3ZWJzb2NrZXQsCi0gICAgcXVpYywK
LSAgICB0aGlyZF9wYXJ0eSwKLSAgICB3cHRzZXJ2ZS9kb2NzL2NvbmYucHksCi0gICAgd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkKLW1heC1saW5lLWxlbmd0aCA9
IDE0MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTMtZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkKaW5kZXggMTRjYzFkYzZmNmE3Li5m
OGQ0Nzc2ZWY2NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpAQCAtMTIsMTYg
KzEyLDE2IEBAIHNlbGVjdCA9IEUsVyxGLE4KICMgRTQwMjogbW9kdWxlIGxldmVsIGltcG9ydCBu
b3QgYXQgdG9wIG9mIGZpbGUKICMgRTczMTogZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBleHByZXNz
aW9uLCB1c2UgYSBkZWYKICMgVzUwNDogbGluZSBicmVhayBhZnRlciBiaW5hcnkgb3BlcmF0b3IK
KyMgVzYwMTogLmhhc19rZXkoKSBpcyBkZXByZWNhdGVkLCB1c2Ug4oCYaW7igJkKICMgVzYwNTog
aW52YWxpZCBlc2NhcGUgc2VxdWVuY2UKICMgTjgwMTogY2xhc3MgbmFtZXMgc2hvdWxkIHVzZSBD
YXBXb3JkcyBjb252ZW50aW9uCiAjIE44MDI6IGZ1bmN0aW9uIG5hbWUgc2hvdWxkIGJlIGxvd2Vy
Y2FzZQogIyBOODA2OiB2YXJpYWJsZSBpbiBmdW5jdGlvbiBzaG91bGQgYmUgbG93ZXJjYXNlCi1p
Z25vcmUgPSBFMTI4LEUxMjksRTIyNixFMjMxLEUyNTEsRTI2NSxFMzAyLEUzMDMsRTMwNSxFNDAy
LEU3MzEsVzUwNCxXNjA1LE44MDEsTjgwMixOODA2CitpZ25vcmUgPSBFMTI4LEUxMjksRTIyNixF
MjMxLEUyNTEsRTI2NSxFMzAyLEUzMDMsRTMwNSxFNDAyLEU3MzEsVzUwNCxXNjAxLFc2MDUsTjgw
MSxOODAyLE44MDYKIGV4Y2x1ZGUgPQogICAgIC50b3gsCiAgICAgcHl3ZWJzb2NrZXQsCiAgICAg
dGhpcmRfcGFydHksCi0gICAgd3B0cnVubmVyLAogICAgIHdwdHNlcnZlL2RvY3MvY29uZi5weSwK
ICAgICB3cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvaW52YWxpZC5weQogbWF4LWxp
bmUtbGVuZ3RoID0gMTQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L0NPTlRSSUJVVElORyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvQ09O
VFJJQlVUSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDE1ZjVkMDExZjMuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L0NPTlRSSUJVVElORworKysgL2Rldi9udWxsCkBAIC0xLDEx
ICswLDAgQEAKLUZvciBpbnN0cnVjdGlvbnMgZm9yIGNvbnRyaWJ1dGluZyBjb2RlLCBwbGVhc2Ug
cmVhZDoKLWh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHl3ZWJzb2NrZXQvd2lraS9Db2RlUmV2
aWV3SW5zdHJ1Y3Rpb24KLQotWW91IG11c3QgY29tcGxldGUgdGhlIEluZGl2aWR1YWwgQ29udHJp
YnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQuCi1odHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5j
b20vYWJvdXQvZ29vZ2xlLWluZGl2aWR1YWwKLVlvdSBjYW4gZG8gdGhpcyBvbmxpbmUsIGFuZCBp
dCBvbmx5IHRha2VzIGEgbWludXRlLgotCi1JZiB5b3UgYXJlIGNvbnRyaWJ1dGluZyBvbiBiZWhh
bGYgb2YgYSBjb3Jwb3JhdGlvbiwgeW91IG11c3QgZmlsbCBvdXQgdGhlCi1Db3Jwb3JhdGUgQ29u
dHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQKLWh0dHBzOi8vY2xhLmRldmVsb3BlcnMuZ29vZ2xl
LmNvbS9hYm91dC9nb29nbGUtY29ycG9yYXRlCi1hbmQgc2VuZCBpdCB0byB1cyBhcyBkZXNjcmli
ZWQgb24gdGhhdCBwYWdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9MSUNFTlNF
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODlkMDJlNGNkMDkuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L01BTklGRVNULmluIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9NQU5J
RkVTVC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkyNTY4ODJjNTZmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9NQU5JRkVTVC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAs
MCBAQAotaW5jbHVkZSBDT1BZSU5HCi1pbmNsdWRlIE1BTklGRVNULmluCi1pbmNsdWRlIFJFQURN
RQotcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5Ci1yZWN1cnNpdmUtaW5jbHVkZSBtb2Rf
cHl3ZWJzb2NrZXQgKi5weQotcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L1JFQURNRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjOGM3NThmNWVlZjQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JFQURNRQorKysgL2Rldi9u
dWxsCkBAIC0xLDE3ICswLDAgQEAKLUlOU1RBTEwKLQotVG8gaW5zdGFsbCB0aGlzIHBhY2thZ2Ug
dG8gdGhlIHN5c3RlbSwgcnVuIHRoaXM6Ci0kIHB5dGhvbiBzZXR1cC5weSBidWlsZAotJCBzdWRv
IHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCi0KLVRvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEg
bm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6Ci0kIHB5dGhvbiBzZXR1cC5weSBidWlsZAot
JCBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIKLQotTEFVTkNICi0KLVRvIHVzZSBweXdl
YnNvY2tldCBhcyBBcGFjaGUgbW9kdWxlLCBydW4gdGhpcyB0byByZWFkIHRoZSBkb2N1bWVudDoK
LSQgcHlkb2MgbW9kX3B5d2Vic29ja2V0Ci0KLVRvIHVzZSBweXdlYnNvY2tldCBhcyBzdGFuZGFs
b25lIHNlcnZlciwgcnVuIHRoaXMgdG8gcmVhZCB0aGUgZG9jdW1lbnQ6Ci0kIHB5ZG9jIG1vZF9w
eXdlYnNvY2tldC5zdGFuZGFsb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JFQURNRS5tZCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
UkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZThlOTEwYTg0ZWYuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JFQURNRS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAs
MCBAQAotCi0jIHB5d2Vic29ja2V0ICMKLQotVGhlIHB5d2Vic29ja2V0IHByb2plY3QgYWltcyB0
byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0
NTUpIHN0YW5kYWxvbmUgc2VydmVyIGFuZCBhIFdlYlNvY2tldCBleHRlbnNpb24gZm9yIFtBcGFj
aGUgSFRUUCBTZXJ2ZXJdKGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy8pLCBtb2RcX3B5d2Vic29j
a2V0LgotCi1weXdlYnNvY2tldCBpcyBpbnRlbmRlZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBl
cmltZW50YWwqKiBwdXJwb3Nlcy4KLQotUGxlYXNlIHNlZSBbV2lraV0oLi4vLi4vd2lraSkgZm9y
IG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwODAyM2ExZmU5MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhh
bmRzaGFrZQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
LSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigKLSAgICAgICAgIkFi
b3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UiKQotCi0KLWRlZiB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Fib3J0X3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9hYm9ydF93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYmYwMDVmNmEz
Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9hYm9ydF93c2gucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9u
KAotICAgICAgICAiQWJvcnRlZCBpbiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2FycmF5YnVmZmVyX2Jl
bmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjljZDdlMWVlNjUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzQgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1B
bGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQot
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlv
bi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxo
dG1sPgotPGhlYWQ+Ci08dGl0bGU+QXJyYXlCdWZmZXIgYmVuY2htYXJrPC90aXRsZT4KLTxzY3Jp
cHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgUFJJTlRfU0laRSA9IHRy
dWU7Ci0KLS8vIEluaXRpYWwgc2l6ZSBvZiBhcnJheXMuCi12YXIgU1RBUlRfU0laRSA9IDEwICog
MTAyNDsKLS8vIFN0b3BzIGJlbmNobWFyayB3aGVuIHRoZSBzaXplIG9mIGFuIGFycmF5IGV4Y2Vl
ZHMgdGhpcyB0aHJlc2hvbGQuCi12YXIgU1RPUF9USFJFU0hPTEQgPSAxMDAwMDAgKiAxMDI0Owot
Ly8gSWYgdGhlIHNpemUgb2YgZWFjaCBhcnJheSBpcyBzbWFsbCwgd3JpdGUvcmVhZCB0aGUgYXJy
YXkgbXVsdGlwbGUgdGltZXMKLS8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hlcyB0aGlz
IHRocmVzaG9sZC4KLXZhciBNSU5fVE9UQUwgPSAxMDAwMDAgKiAxMDI0OwotdmFyIE1VTFRJUExJ
RVJTID0gWzUsIDJdOwotCi0vLyBSZXBlYXQgYmVuY2htYXJrIGZvciBzZXZlcmFsIHRpbWVzIHRv
IG1lYXN1cmUgcGVyZm9ybWFuY2Ugb2Ygb3B0aW1pemVkCi0vLyAoc3VjaCBhcyBKSVQpIHJ1bi4K
LXZhciBSRVBFQVRfRk9SX1dBUk1VUCA9IDM7Ci0KLWZ1bmN0aW9uIHdyaXRlQmVuY2htYXJrKHNp
emUsIG1pblRvdGFsKSB7Ci0gIHZhciB0b3RhbFNpemUgPSAwOwotICB3aGlsZSAodG90YWxTaXpl
IDwgbWluVG90YWwpIHsKLSAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6
ZSk7Ci0KLSAgICAvLyBXcml0ZSAnYSdzLgotICAgIGZpbGxBcnJheUJ1ZmZlcihhcnJheUJ1ZmZl
ciwgMHg2MSk7Ci0KLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAgfQotICByZXR1cm4gdG90YWxT
aXplOwotfQotCi1mdW5jdGlvbiByZWFkQmVuY2htYXJrKHNpemUsIG1pblRvdGFsKSB7Ci0gIHZh
ciB0b3RhbFNpemUgPSAwOwotICB3aGlsZSAodG90YWxTaXplIDwgbWluVG90YWwpIHsKLSAgICB2
YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAgICBpZiAoIXZlcmlm
eUFycmF5QnVmZmVyKGFycmF5QnVmZmVyLCAweDAwKSkgewotICAgICAgcXVldWVMb2coJ1Zlcmlm
aWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICB0b3RhbFNp
emUgKz0gc2l6ZTsKLSAgfQotICByZXR1cm4gdG90YWxTaXplOwotfQotCi1mdW5jdGlvbiBydW5C
ZW5jaG1hcmsoYmVuY2htYXJrRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICBzdG9wVGhyZXNob2xkLAotICAgICAgICAgICAgICAgICAg
ICAgIG1pblRvdGFsLAotICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXJzLAotICAgICAg
ICAgICAgICAgICAgICAgIG11bHRpcGxpZXJJbmRleCkgewotICB3aGlsZSAoc2l6ZSA8PSBzdG9w
VGhyZXNob2xkKSB7Ci0gICAgdmFyIG1heFNwZWVkID0gMDsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgUkVQRUFUX0ZPUl9XQVJNVVA7ICsraSkgewotICAgICAgdmFyIHN0YXJ0VGltZUluTXMg
PSBnZXRUaW1lU3RhbXAoKTsKLQotICAgICAgdmFyIHRvdGFsU2l6ZSA9IGJlbmNobWFya0Z1bmN0
aW9uKHNpemUsIG1pblRvdGFsKTsKLQotICAgICAgbWF4U3BlZWQgPSBNYXRoLm1heChtYXhTcGVl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6
ZSwgc3RhcnRUaW1lSW5NcykpOwotICAgIH0KLSAgICBxdWV1ZUxvZyhmb3JtYXRSZXN1bHRJbktp
QihzaXplLCBtYXhTcGVlZCwgUFJJTlRfU0laRSkpOwotCi0gICAgc2l6ZSAqPSBtdWx0aXBsaWVy
c1ttdWx0aXBsaWVySW5kZXhdOwotICAgIG11bHRpcGxpZXJJbmRleCA9IChtdWx0aXBsaWVySW5k
ZXggKyAxKSAlIG11bHRpcGxpZXJzLmxlbmd0aDsKLSAgfQotfQotCi1mdW5jdGlvbiBydW5CZW5j
aG1hcmtzKCkgewotICBxdWV1ZUxvZygnTWVzc2FnZSBzaXplIGluIEtpQiwgU3BlZWQgaW4ga0Iv
cycpOwotCi0gIHF1ZXVlTG9nKCdXcml0ZSBiZW5jaG1hcmsnKTsKLSAgcnVuQmVuY2htYXJrKAot
ICAgICAgd3JpdGVCZW5jaG1hcmssIFNUQVJUX1NJWkUsIFNUT1BfVEhSRVNIT0xELCBNSU5fVE9U
QUwsIE1VTFRJUExJRVJTLCAwKTsKLSAgcXVldWVMb2coJ0ZpbmlzaGVkJyk7Ci0KLSAgcXVldWVM
b2coJ1JlYWQgYmVuY2htYXJrJyk7Ci0gIHJ1bkJlbmNobWFyaygKLSAgICAgIHJlYWRCZW5jaG1h
cmssIFNUQVJUX1NJWkUsIFNUT1BfVEhSRVNIT0xELCBNSU5fVE9UQUwsIE1VTFRJUExJRVJTLCAw
KTsKLSAgYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIGxv
Z0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBxdWV1ZUxvZyh3aW5k
b3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKLQotICBhZGRUb0xvZygnU3Rh
cnRlZC4uLicpOwotCi0gIHNldFRpbWVvdXQocnVuQmVuY2htYXJrcywgMCk7Ci19Ci0KLTwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotPHRleHRhcmVhCi0gICAgaWQ9
ImxvZyIgcm93cz0iNTAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaF93c2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L2V4YW1wbGUvYmVuY2hfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MDY3Y2E3ZDg5NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2hfd3No
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiQSBzaW1wbGUgbG9hZCB0ZXN0ZXIgZm9yIFdlYlNvY2tldCBjbGllbnRzLgotCi1BIGNsaWVu
dCBwcm9ncmFtIHNlbmRzIGEgbWVzc2FnZSBmb3JtYXR0ZWQgYXMgIjx0aW1lPiA8Y291bnQ+IDxt
ZXNzYWdlPiIgdG8KLXRoaXMgaGFuZGxlci4gVGhpcyBoYW5kbGVyIHN0YXJ0cyBzZW5kaW5nIHRv
dGFsIDxjb3VudD4gV2ViU29ja2V0IG1lc3NhZ2VzCi1jb250YWluaW5nIDxtZXNzYWdlPiBldmVy
eSA8dGltZT4gc2Vjb25kcy4gPHRpbWU+IGNhbiBiZSBhIGZsb2F0aW5nIHBvaW50Ci12YWx1ZS4g
PGNvdW50PiBtdXN0IGJlIGFuIGludGVnZXIgdmFsdWUuCi0iIiIKLQotCi1pbXBvcnQgdGltZQot
Ci0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNz
ICAjIEFsd2F5cyBhY2NlcHQuCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKLSAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAg
ICBwYXJ0cyA9IGxpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbihwYXJ0cykgIT0gMzoKLSAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHBhcmFtZXRlciBmb3JtYXQnKQotICAgIHdhaXQgPSBm
bG9hdChwYXJ0c1swXSkKLSAgICBjb3VudCA9IGludChwYXJ0c1sxXSkKLSAgICBtZXNzYWdlID0g
cGFydHNbMl0KLSAgICBmb3IgaSBpbiB4cmFuZ2UoY291bnQpOgotICAgICAgICByZXF1ZXN0Lndz
X3N0cmVhbS5zZW5kX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgdGltZS5zbGVlcCh3YWl0KQot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFy
ay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhOTIzODYzYTk5NTYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
YmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotPCEtLQotQ29w
eXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1T
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0
IGJlbmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiZW5jaG1hcmsu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rp
b24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52
YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAot
ICAgIG51bVNvY2tldHM6IGdldEludEZyb21JbnB1dCgnbnVtc29ja2V0cycpLAotICAgIC8vIElu
aXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5w
dXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9t
SW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNpemU6IGdldEludEZyb21J
bnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUg
b2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6IGdl
dEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIC8vIElmIHRoZSBzaXplIG9mIGVh
Y2ggbWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9yZWNlaXZlIG11bHRpcGxlIG1lc3NhZ2VzCi0gICAg
Ly8gdW50aWwgdGhlIHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotICAgIG1p
blRvdGFsOiBnZXRJbnRGcm9tSW5wdXQoJ21pbnRvdGFsJyksCi0gICAgbXVsdGlwbGllcnM6IGdl
dEZsb2F0QXJyYXlGcm9tSW5wdXQoJ211bHRpcGxpZXJzJyksCi0gICAgdmVyaWZ5RGF0YTogZ2V0
Qm9vbEZyb21DaGVja0JveCgndmVyaWZ5ZGF0YScpLAotICAgIGFkZFRvTG9nOiBhZGRUb0xvZywK
LSAgICBhZGRUb1N1bW1hcnk6IGFkZFRvU3VtbWFyeSwKLSAgICBtZWFzdXJlVmFsdWU6IG1lYXN1
cmVWYWx1ZSwKLSAgICBub3RpZnlBYm9ydDogbm90aWZ5QWJvcnQKLSAgfTsKLX0KLQotZnVuY3Rp
b24gb25TZW5kQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRv
QWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdzZW5kQmVuY2ht
YXJrJyk7Ci19Ci0KLWZ1bmN0aW9uIG9uUmVjZWl2ZUJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZp
ZyA9IGdldENvbmZpZygpOwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3go
J3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvbkJhdGNoQmVu
Y2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRvQWN0aW9uKGNvbmZp
ZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdiYXRjaEJlbmNobWFyaycpOwotfQot
Ci1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLSAgZG9B
Y3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ3N0b3AnKTsKLX0K
LQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cn
KTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1bW1hcnknKTsK
LQotICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonID8g
J3dzczovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVmYXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5k
b3cubG9jYXRpb24uaG9zdCArICcvYmVuY2htYXJrX2hlbHBlcic7Ci0KLSAgYWRkcmVzc0JveC52
YWx1ZSA9IGRlZmF1bHRBZGRyZXNzOwotCi0gIGFkZFRvTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNl
ckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1bW1hcnkod2luZG93Lm5hdmlnYXRvci51
c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93
KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOwotICB9Ci0K
LSAgaW5pdFdvcmtlcignV2ViU29ja2V0JywgJycpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxkaXYgaWQ9ImJlbmNobWFya19kaXYiPgotICB1cmwg
PGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+Ci0gIDxpbnB1dCB0eXBl
PSJidXR0b24iIHZhbHVlPSJzZW5kIiBvbmNsaWNrPSJvblNlbmRCZW5jaG1hcmsoKSI+Ci0gIDxp
bnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJyZWNlaXZlIiBvbmNsaWNrPSJvblJlY2VpdmVCZW5j
aG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJiYXRjaCIgb25jbGljaz0i
b25CYXRjaEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InN0b3Ai
IG9uY2xpY2s9Im9uU3RvcCgpIj4KLQotICA8YnIvPgotCi0gIDxpbnB1dCB0eXBlPSJjaGVja2Jv
eCIgaWQ9InByaW50c2l6ZSIgY2hlY2tlZD4KLSAgPGxhYmVsIGZvcj0icHJpbnRzaXplIj5Qcmlu
dCBzaXplIGFuZCB0aW1lIHBlciBtZXNzYWdlPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNr
Ym94IiBpZD0idmVyaWZ5ZGF0YSIgY2hlY2tlZD4KLSAgPGxhYmVsIGZvcj0idmVyaWZ5ZGF0YSI+
VmVyaWZ5IGRhdGE8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ3b3JrZXIi
PgotICA8bGFiZWwgZm9yPSJ3b3JrZXIiPlJ1biBvbiB3b3JrZXI8L2xhYmVsPgotCi0gIDxici8+
Ci0KLSAgUGFyYW1ldGVyczoKLQotICA8YnIvPgotCi0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAg
ICA8dGQ+TnVtIHNvY2tldHM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bnVtc29ja2V0cyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8
dGQ+TnVtYmVyIG9mIGl0ZXJhdGlvbnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0ibnVtaXRlcmF0aW9ucyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+
Ci0gICAgICA8dGQ+TnVtYmVyIG9mIHdhcm0tdXAgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+
PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW13YXJtdXBpdGVyYXRpb25zIiB2YWx1ZT0iMCI+PC90
ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdGFydCBzaXplPC90ZD4KLSAgICAg
IDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0YXJ0c2l6ZSIgdmFsdWU9IjEwMjQwIj48L3Rk
PgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0b3AgdGhyZXNob2xkPC90ZD4KLSAg
ICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0b3B0aHJlc2hvbGQiIHZhbHVlPSIxMDI0
MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TWluaW11bSB0b3Rh
bDwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtaW50b3RhbCIgdmFsdWU9
IjEwMjQwMDAwMCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5NdWx0aXBs
aWVyczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtdWx0aXBsaWVycyIg
dmFsdWU9IjUsIDIiPjwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgotCi08ZGl2
IGlkPSJsb2dfZGl2Ij4KLSAgPHRleHRhcmVhCi0gICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5
bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJz
dW1tYXJ5X2RpdiI+Ci0gIFN1bW1hcnkKLSAgPHRleHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2
PgotCi1Ob3RlOiBFZmZlY3Qgb2YgUlRUIGlzIG5vdCBlbGltaW5hdGVkLgotCi08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2htYXJrLmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU2NDM1ZDFk
MGRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5qcworKysgL2Rl
di9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29w
ZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi1pZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1
bmRlZmluZWQiKSB7Ci0gIC8vIFJ1bm5pbmcgb24gYSB3b3JrZXIKLSAgaW1wb3J0U2NyaXB0cygn
dXRpbC5qcycsICd1dGlsX3dvcmtlci5qcycpOwotfQotCi0vLyBOYW1lc3BhY2UgZm9yIGhvbGRp
bmcgZ2xvYmFscy4KLXZhciBiZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07Ci0KLXZhciBz
b2NrZXRzID0gW107Ci12YXIgbnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKLQotdmFyIHRpbWVy
SUQgPSBudWxsOwotCi1mdW5jdGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgewotICBzb2NrZXQu
b25vcGVuID0gbnVsbDsKLSAgc29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7Ci0gIHNvY2tldC5vbmVy
cm9yID0gbnVsbDsKLSAgc29ja2V0Lm9uY2xvc2UgPSBudWxsOwotICBzb2NrZXQuY2xvc2UoKTsK
LX0KLQotZnVuY3Rpb24gZGVzdHJveUFsbFNvY2tldHMoKSB7Ci0gIGZvciAodmFyIGkgPSAwOyBp
IDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7
Ci0gIH0KLSAgc29ja2V0cyA9IFtdOwotfQotCi1mdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChz
aXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIHZhciB0b3Rh
bFNpemUgPSAwOwotICB2YXIgdG90YWxSZXBsaWVkID0gMDsKLQotICB2YXIgb25NZXNzYWdlSGFu
ZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQo
Y29uZmlnLCBldmVudC5kYXRhLCBzaXplKSkgewotICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsK
LSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6
ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChj
b25maWcsIHNpemUsIGJlbmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCi0gICAgICAg
IGlzV2FybVVwKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH07Ci0KLSAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFyIHNvY2tldCA9IHNv
Y2tldHNbaV07Ci0gICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7Ci0gIH0K
LQotICB2YXIgZGF0YUFycmF5ID0gW107Ci0KLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5t
aW5Ub3RhbCkgewotICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAg
ICBmaWxsQXJyYXlCdWZmZXIoYnVmZmVyLCAweDYxKTsKLQotICAgIGRhdGFBcnJheS5wdXNoKGJ1
ZmZlcik7Ci0gICAgdG90YWxTaXplICs9IHNpemU7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gIHRvdGFsU2l6ZSA9IDA7Ci0KLSAgdmFyIHNv
Y2tldEluZGV4ID0gMDsKLSAgdmFyIGRhdGFJbmRleCA9IDA7Ci0gIHdoaWxlICh0b3RhbFNpemUg
PCBjb25maWcubWluVG90YWwpIHsKLSAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOwotICAgIGNv
bW1hbmQucHVzaChjb25maWcudmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7Ci0gICAgc29ja2V0c1tz
b2NrZXRJbmRleF0uc2VuZChjb21tYW5kLmpvaW4oJyAnKSk7Ci0gICAgc29ja2V0c1tzb2NrZXRJ
bmRleF0uc2VuZChkYXRhQXJyYXlbZGF0YUluZGV4XSk7Ci0gICAgc29ja2V0SW5kZXggPSAoc29j
a2V0SW5kZXggKyAxKSAlIHNvY2tldHMubGVuZ3RoOwotCi0gICAgdG90YWxTaXplICs9IHNpemU7
Ci0gICAgKytkYXRhSW5kZXg7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0
ZXAoc2l6ZSwgY29uZmlnLCBpc1dhcm1VcCkgewotICB0aW1lcklEID0gbnVsbDsKLQotICB2YXIg
dG90YWxTaXplID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0KLSAgdmFyIG9uTWVzc2Fn
ZUhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkgewotICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZl
bnQuZGF0YS5ieXRlTGVuZ3RoOwotICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKLSAg
ICAgIGNvbmZpZy5hZGRUb0xvZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQg
JyArCi0gICAgICAgICAgYnl0ZXNSZWNlaXZlZCArICdCJyk7Ci0gICAgICBkZXN0cm95QWxsU29j
a2V0cygpOwotICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVu
dC5kYXRhLCAweDYxKSkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmlj
YXRpb24gZmFpbGVkJyk7Ci0gICAgICBkZXN0cm95QWxsU29ja2V0cygpOwotICAgICAgY29uZmln
Lm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVk
ICs9IGJ5dGVzUmVjZWl2ZWQ7Ci0KLSAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7
Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZp
Zywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKLSAgICAgICAgaXNX
YXJtVXApOwotCi0gICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNvY2tldHMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgc29ja2V0ID0gc29ja2V0
c1tpXTsKLSAgICBzb2NrZXQuYmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7Ci0gICAgc29ja2V0
Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gIHZhciBzb2NrZXRJbmRleCA9IDA7Ci0gIHdo
aWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwpIHsKLSAgICBzb2NrZXRzW3NvY2tldElu
ZGV4XS5zZW5kKCdyZWNlaXZlICcgKyBzaXplKTsKLSAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJ
bmRleCArIDEpICUgc29ja2V0cy5sZW5ndGg7Ci0KLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAg
fQotfQotCi1mdW5jdGlvbiBjcmVhdGVTb2NrZXQoY29uZmlnKSB7Ci0gIC8vIFRPRE8odHlvc2hp
bm8pOiBBZGQgVENQIHdhcm0gdXAuCi0gIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOwotCi0g
IGNvbmZpZy5hZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsKTsKLQotICB2YXIgc29ja2V0ID0gbmV3
IFdlYlNvY2tldCh1cmwpOwotICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICBjb25maWcuYWRkVG9Mb2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRp
bmcuJyk7Ci0gIH07Ci0gIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgY29uZmln
LmFkZFRvTG9nKCdFcnJvcicpOwotICB9OwotICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdDbG9zZWQnKTsKLSAgICBjb25maWcubm90aWZ5
QWJvcnQoKTsKLSAgfTsKLSAgcmV0dXJuIHNvY2tldDsKLX0KLQotZnVuY3Rpb24gc3RhcnRCZW5j
aG1hcmsoY29uZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFNv
Y2tldHMoKTsKLQotICBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwotCi0gIGZvciAodmFyIGkg
PSAwOyBpIDwgY29uZmlnLm51bVNvY2tldHM7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBjcmVh
dGVTb2NrZXQoY29uZmlnKTsKLSAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICBjb25maWcuYWRkVG9Mb2coJ09wZW5lZCcpOwotCi0gICAgICArK251bUVzdGFibGlzaGVkU29j
a2V0czsKLQotICAgICAgaWYgKG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0
aCkgewotICAgICAgICBydW5OZXh0VGFzayhjb25maWcpOwotICAgICAgfQotICAgIH07Ci0gICAg
c29ja2V0cy5wdXNoKHNvY2tldCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5n
KGNvbmZpZykgewotICByZXR1cm4gJyhXZWJTb2NrZXQnICsKLSAgICAnLCAnICsgKHR5cGVvZiBp
bXBvcnRTY3JpcHRzICE9PSAidW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCi0gICAg
JywgbnVtU29ja2V0cz0nICsgY29uZmlnLm51bVNvY2tldHMgKwotICAgICcsIG51bUl0ZXJhdGlv
bnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25m
aWcudmVyaWZ5RGF0YSArCi0gICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCi0g
ICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMg
KwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNv
bmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhidWls
ZExlZ2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VE
YXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOwotICBhZGRSZXN1
bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJp
bmcoY29uZmlnKSk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOwot
ICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKwot
ICAgICAgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25maWcp
OwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKCkgewotICBkZXN0cm95QWxsU29ja2V0cygpOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0NGFkMGJmZWVmYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2ht
YXJrX2hlbHBlcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0jIENvcHly
aWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJIYW5kbGVyIGZvciBiZW5jaG1hcmsuaHRtbC4iIiIKLQotCi1kZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgIyBUdXJuIG9mZiBj
b21wcmVzc2lvbi4KLSAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KLQot
Ci1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIGRhdGEgPSAnJwot
Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgY29tbWFuZCA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJl
Y2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIGNvbW1hbmQgaXMgTm9uZToKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1hbmQsIHVuaWNvZGUpOgot
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6JyArIGNv
bW1hbmQpCi0gICAgICAgIGNvbW1hbmRzID0gY29tbWFuZC5zcGxpdCgnICcpCi0gICAgICAgIGlm
IGxlbihjb21tYW5kcykgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFs
aWQgY29tbWFuZCBkYXRhOiAnICsgY29tbWFuZCkKLQotICAgICAgICBpZiBjb21tYW5kc1swXSA9
PSAncmVjZWl2ZSc6Ci0gICAgICAgICAgICBpZiBsZW4oY29tbWFuZHMpICE9IDI6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdJbGxl
Z2FsIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHNlbmQgY29tbWFuZCcgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZCkKLSAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0p
Ci0KLSAgICAgICAgICAgICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KLSAgICAgICAgICAgIGlm
IGxlbihkYXRhKSAhPSBzaXplOgotICAgICAgICAgICAgICAgIGRhdGEgPSAnYScgKiBzaXplCi0g
ICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoZGF0YSwgYmluYXJ5PVRy
dWUpCi0gICAgICAgIGVsaWYgY29tbWFuZHNbMF0gPT0gJ3NlbmQnOgotICAgICAgICAgICAgaWYg
bGVuKGNvbW1hbmRzKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBy
ZWNlaXZlIGNvbW1hbmQnICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0gICAg
ICAgICAgICB2ZXJpZnlfZGF0YSA9IGNvbW1hbmRzWzFdID09ICcxJwotCi0gICAgICAgICAgICBk
YXRhID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgIGlm
IGRhdGEgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2Fk
IG5vdCByZWNlaXZlZCcpCi0gICAgICAgICAgICBzaXplID0gbGVuKGRhdGEpCi0KLSAgICAgICAg
ICAgIGlmIHZlcmlmeV9kYXRhOgotICAgICAgICAgICAgICAgIGlmIGRhdGEgIT0gJ2EnICogc2l6
ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmlj
YXRpb24gZmFpbGVkJykKLQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKHN0cihzaXplKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0ludmFsaWQgY29tbWFuZDogJyArIGNvbW1hbmRzWzBdKQotCi0KLSMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Nsb3NlX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9jbG9zZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YjA4Mzg0MDgx
Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9jbG9zZV93c2gucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN0cnVjdAot
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgc3RyZWFtCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5y
ZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBsaW5lIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgY29kZSwgcmVhc29uID0gbGluZS5zcGxpdCgnICcsIDEpCi0gICAgICAg
IGlmIGNvZGUgaXMgTm9uZSBvciByZWFzb24gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGludChjb2RlKSwgcmVh
c29uKQotICAgICAgICAjIGNsb3NlX2Nvbm5lY3Rpb24oKSBpbml0aWF0ZXMgY2xvc2luZyBoYW5k
c2hha2UuIEl0IHZhbGlkYXRlcyBjb2RlCi0gICAgICAgICMgYW5kIHJlYXNvbi4gSWYgeW91IHdh
bnQgdG8gc2VuZCBhIGJyb2tlbiBjbG9zZSBmcmFtZSBmb3IgYSB0ZXN0LAotICAgICAgICAjIGZv
bGxvd2luZyBjb2RlIHdpbGwgYmUgdXNlZnVsLgotICAgICAgICAjID4gZGF0YSA9IHN0cnVjdC5w
YWNrKCchSCcsIGludChjb2RlKSkgKyByZWFzb24uZW5jb2RlKCdVVEYtOCcpCi0gICAgICAgICMg
PiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRh
KSkKLSAgICAgICAgIyA+ICMgU3VwcHJlc3MgdG8gcmUtcmVzcG9uZCBjbGllbnQgcmVzcG9uZGlu
ZyBjbG9zZSBmcmFtZS4KLSAgICAgICAgIyA+IHJhaXNlIEV4Y2VwdGlvbigiY3VzdG9taXplZCBz
ZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICMgU2ltcGx5IGVjaG8gYSBj
bG9zZSBzdGF0dXMgY29kZQotICAgIGNvZGUsIHJlYXNvbiA9IHJlcXVlc3Qud3NfY2xvc2VfY29k
ZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KLQotICAgICMgcHl3ZWJzb2NrZXQgc2V0cyBwc2V1
ZG8gY29kZSBmb3IgcmVjZWl2aW5nIGFuIGVtcHR5IGJvZHkgY2xvc2UgZnJhbWUuCi0gICAgaWYg
Y29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRDoKLSAgICAgICAgY29kZSA9
IE5vbmUKLSAgICAgICAgcmVhc29uID0gJycKLSAgICByZXR1cm4gY29kZSwgcmVhc29uCi0KLQot
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY29uc29sZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2NvbnNvbGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2NkNmQ4ZjgwNjc2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2NvbnNvbGUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMxNyArMCwwIEBACi08IS0tCi1Db3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0tLT4KLQotPCEtLQotQSBzaW1wbGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2Nr
ZXQgc2VydmVyLgotCi1UeXBlIGFuIGFkZHJlc3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5k
IGNsaWNrIGNvbm5lY3QgdG8gZXN0YWJsaXNoCi1XZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBt
ZXNzYWdlIGludG8gdGhlIGJvdHRvbSB0ZXh0IGlucHV0IGFuZCBjbGljayBzZW5kCi10byBzZW5k
IHRoZSBtZXNzYWdlLiBSZWNlaXZlZC9zZW50IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRl
IHdpbGwgYmUgc2hvd24KLW9uIHRoZSBtaWRkbGUgdGV4dGFyZWEuCi0tLT4KLQotPGh0bWw+Ci08
aGVhZD4KLTx0aXRsZT5XZWJTb2NrZXQgY29uc29sZTwvdGl0bGU+Ci08c2NyaXB0PgotdmFyIHNv
Y2tldCA9IG51bGw7Ci0KLXZhciBzaG93VGltZVN0YW1wID0gZmFsc2U7Ci0KLXZhciBhZGRyZXNz
Qm94ID0gbnVsbDsKLXZhciBwcm90b2NvbHNCb3ggPSBudWxsOwotdmFyIGxvZ0JveCA9IG51bGw7
Ci12YXIgbWVzc2FnZUJveCA9IG51bGw7Ci12YXIgZmlsZUJveCA9IG51bGw7Ci12YXIgY29kZUJv
eCA9IG51bGw7Ci12YXIgcmVhc29uQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0VGltZVN0YW1w
KCkgewotICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRv
TG9nKGxvZykgewotICBpZiAoc2hvd1RpbWVTdGFtcCkgewotICAgIGxvZ0JveC52YWx1ZSArPSAn
WycgKyBnZXRUaW1lU3RhbXAoKSArICddICc7Ci0gIH0KLSAgbG9nQm94LnZhbHVlICs9IGxvZyAr
ICdcbicKLSAgLy8gTGFyZ2UgZW5vdWdoIHRvIGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3Nh
Z2UuCi0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBzZXRiaW5h
cnl0eXBlKGJpbmFyeVR5cGUpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90
IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIHNvY2tldC5iaW5hcnlUeXBlID0g
YmluYXJ5VHlwZTsKLSAgYWRkVG9Mb2coJ1NldCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBl
KTsKLX0KLQotZnVuY3Rpb24gc2VuZCgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xv
ZygnTm90IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIHNvY2tldC5zZW5kKG1l
c3NhZ2VCb3gudmFsdWUpOwotICBhZGRUb0xvZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7Ci0g
IG1lc3NhZ2VCb3gudmFsdWUgPSAnJzsKLX0KLQotZnVuY3Rpb24gc2VuZGZpbGUoKSB7Ci0gIGlm
ICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICB2YXIgZmlsZXMgPSBmaWxlQm94LmZpbGVzOwotCi0gIGlmIChmaWxlcy5sZW5n
dGggPT0gMCkgewotICAgIGFkZFRvTG9nKCdGaWxlIG5vdCBzZWxlY3RlZCcpOwotICAgIHJldHVy
bjsKLSAgfQotCi0gIHNvY2tldC5zZW5kKGZpbGVzWzBdKTsKLSAgYWRkVG9Mb2coJz4gU2VuZCAn
ICsgZmlsZXNbMF0ubmFtZSk7Ci19Ci0KLWZ1bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29s
c1RleHQpIHsKLSAgdmFyIHByb3RvY29scyA9IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKLSAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b2NvbHMubGVuZ3RoOyArK2kpIHsKLSAgICBwcm90b2Nv
bHNbaV0gPSBwcm90b2NvbHNbaV0udHJpbSgpOwotICB9Ci0KLSAgaWYgKHByb3RvY29scy5sZW5n
dGggPT0gMCkgewotICAgIC8vIERvbid0IHBhc3MuCi0gICAgcHJvdG9jb2xzID0gbnVsbDsKLSAg
fSBlbHNlIGlmIChwcm90b2NvbHMubGVuZ3RoID09IDEpIHsKLSAgICBpZiAocHJvdG9jb2xzWzBd
Lmxlbmd0aCA9PSAwKSB7Ci0gICAgICAvLyBEb24ndCBwYXNzLgotICAgICAgcHJvdG9jb2xzID0g
bnVsbDsKLSAgICB9IGVsc2UgewotICAgICAgLy8gUGFzcyBhcyBhIHN0cmluZy4KLSAgICAgIHBy
b3RvY29scyA9IHByb3RvY29sc1swXTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcHJvdG9jb2xz
OwotfQotCi1mdW5jdGlvbiBjb25uZWN0KCkgewotICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1
ZTsKLSAgdmFyIHByb3RvY29scyA9IHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7
Ci0KLSAgaWYgKCdXZWJTb2NrZXQnIGluIHdpbmRvdykgewotICAgIGlmIChwcm90b2NvbHMpIHsK
LSAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbHMpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7Ci0gICAgfQotICB9IGVsc2Ug
ewotICAgIHJldHVybjsKLSAgfQotCi0gIHNvY2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgdmFyIGV4dHJhSW5mbyA9IFtdOwotICAgIGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYm
IHNvY2tldC5wcm90b2NvbCkgewotICAgICAgZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyAr
IHNvY2tldC5wcm90b2NvbCk7Ci0gICAgfQotICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tl
dCkgJiYgc29ja2V0LmV4dGVuc2lvbnMpIHsKLSAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNp
b25zID0gJyArIHNvY2tldC5leHRlbnNpb25zKTsKLSAgICB9Ci0KLSAgICB2YXIgbG9nTWVzc2Fn
ZSA9ICdPcGVuZWQnOwotICAgIGlmIChleHRyYUluZm8ubGVuZ3RoID4gMCkgewotICAgICAgbG9n
TWVzc2FnZSArPSAnICgnICsgZXh0cmFJbmZvLmpvaW4oJywgJykgKyAnKSc7Ci0gICAgfQotICAg
IGFkZFRvTG9nKGxvZ01lc3NhZ2UpOwotICB9OwotICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgaWYgKCgnQXJyYXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50
LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHsKLSAgICAgIGFkZFRvTG9nKCc8IFJlY2Vp
dmVkIGFuIEFycmF5QnVmZmVyIG9mICcgKyBldmVudC5kYXRhLmJ5dGVMZW5ndGggKwotICAgICAg
ICAgICAgICAgJyBieXRlcycpCi0gICAgfSBlbHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYg
KGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBCbG9iKSkgewotICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2
ZWQgYSBCbG9iIG9mICcgKyBldmVudC5kYXRhLnNpemUgKyAnIGJ5dGVzJykKLSAgICB9IGVsc2Ug
ewotICAgICAgYWRkVG9Mb2coJzwgJyArIGV2ZW50LmRhdGEpOwotICAgIH0KLSAgfTsKLSAgc29j
a2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7Ci0gICAgYWRkVG9Mb2coJ0Vycm9yJyk7Ci0gIH07
Ci0gIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgdmFyIGxvZ01lc3Nh
Z2UgPSAnQ2xvc2VkICgnOwotICAgIGlmICgoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Ns
b3NlRXZlbnQnIGluIHdpbmRvdykgJiYKLSAgICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VF
dmVudCkpIHsKLSAgICAgIGxvZ01lc3NhZ2UgKz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0Ns
ZWFuOwotICAgICAgLy8gY29kZSBhbmQgcmVhc29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCi0gICAg
ICAvLyBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCi0g
ICAgICBpZiAoJ2NvZGUnIGluIGV2ZW50KSB7Ci0gICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29k
ZSA9ICcgKyBldmVudC5jb2RlOwotICAgICAgfQotICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50
KSB7Ci0gICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsK
LSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBp
cyBub3QgYXZhaWxhYmxlJzsKLSAgICB9Ci0gICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7
Ci0gIH07Ci0KLSAgaWYgKHByb3RvY29scykgewotICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1
cmwgKyAnIChwcm90b2NvbHMgPSAnICsgcHJvdG9jb2xzICsgJyknKTsKLSAgfSBlbHNlIHsKLSAg
ICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjbG9zZVNv
Y2tldCgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcp
OwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52
YWx1ZSkgewotICAgIHNvY2tldC5jbG9zZShjb2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUp
OwotICB9IGVsc2UgewotICAgIHNvY2tldC5jbG9zZSgpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBy
aW50U3RhdGUoKSB7Ci0gIGlmICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0
ZWQnKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBhZGRUb0xvZygKLSAgICAgICd1cmwgPSAnICsg
c29ja2V0LnVybCArCi0gICAgICAnLCByZWFkeVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRl
ICsKLSAgICAgICcsIGJ1ZmZlcmVkQW1vdW50ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7
Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24u
cHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7Ci0gIHZhciBkZWZhdWx0
QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKLQotICBh
ZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKLSAgcHJvdG9j
b2xzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3RvY29scycpOwotICBsb2dCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0gIG1lc3NhZ2VCb3ggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpOwotICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ZpbGUnKTsKLSAgY29kZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2RlJyk7Ci0gIHJlYXNvbkJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsK
LQotICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7Ci0KLSAgaWYgKCEoJ1dlYlNv
Y2tldCcgaW4gd2luZG93KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWls
YWJsZScpOwotICB9Ci19Ci08L3NjcmlwdD4KLTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci1mb3Jt
IHsKLSAgbWFyZ2luOiAwcHg7Ci19Ci0KLSNjb25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2Rp
diwgI3NlbmRmaWxlX2RpdiwgI2Nsb3NlX2RpdiwgI3ByaW50c3RhdGVfZGl2IHsKLSAgcGFkZGlu
ZzogNXB4OwotICBtYXJnaW46IDVweDsKLSAgYm9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4
OwotICBib3JkZXItc3R5bGU6IHNvbGlkOwotICBib3JkZXItY29sb3I6IHNpbHZlcjsKLX0KLTwv
c3R5bGU+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxkaXY+Ci0KLTxkaXYg
aWQ9ImNvbm5lY3RfZGl2Ij4KLSAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgp
OyByZXR1cm4gZmFsc2U7Ij4KLSAgICB1cmwgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNz
IiBzaXplPSI0MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgot
ICAgIDxici8+Ci0gICAgcHJvdG9jb2xzIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xz
IiBzaXplPSIyMCI+Ci0gIDwvZm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4KLSAg
PHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJl
YT4KLSAgPGJyLz4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IgotICAgICAgICAgbmFtZT0ic2hv
d3RpbWVzdGFtcCIKLSAgICAgICAgIHZhbHVlPSJzaG93dGltZXN0YW1wIgotICAgICAgICAgb25j
bGljaz0ic2hvd1RpbWVTdGFtcCA9IHRoaXMuY2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCi08L2Rp
dj4KLQotPGRpdiBpZD0ic2VuZF9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJz
ZW5kKCk7IHJldHVybiBmYWxzZTsiPgotICAgIGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJt
ZXNzYWdlIiBzaXplPSI0MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQi
PgotICA8L2Zvcm0+Ci08L2Rpdj4KLQotPGRpdiBpZD0ic2VuZGZpbGVfZGl2Ij4KLSAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZGZpbGUoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAgPGlu
cHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBzaXplPSI0MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1
Ym1pdCIgdmFsdWU9InNlbmQgZmlsZSI+Ci0gIDwvZm9ybT4KLQotICBTZXQgYmluYXJ5VHlwZQot
ICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgotICAgICAg
ICAgdmFsdWU9ImJsb2IiCi0gICAgICAgICBvbmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJyki
IGNoZWNrZWQ+YmxvYgotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJiaW5h
cnl0eXBlIgotICAgICAgICAgdmFsdWU9ImFycmF5YnVmZmVyIgotICAgICAgICAgb25jbGljaz0i
c2V0YmluYXJ5dHlwZSgnYXJyYXlidWZmZXInKSI+YXJyYXlidWZmZXIKLTwvZGl2PgotCi08ZGl2
IGlkPSJjbG9zZV9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tl
dCgpOyByZXR1cm4gZmFsc2U7Ij4KLSAgICBjb2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29k
ZSIgc2l6ZT0iMTAiPgotICAgIHJlYXNvbiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIg
c2l6ZT0iMjAiPgotICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+Ci0gIDwv
Zm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJwcmludHN0YXRlX2RpdiI+Ci0gIDxpbnB1dCB0eXBl
PSJidXR0b24iIHZhbHVlPSJwcmludCBzdGF0ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Ci08
L2Rpdj4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhh
bXBsZS9jb29raWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Nvb2tpZV93c2gucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMzI3MTUyZTcwMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS9jb29raWVfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotIyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMgaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLQotaW1w
b3J0IHVybHBhcnNlCi0KLQotZGVmIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCB2YWx1ZSk6Ci0g
ICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgoJ1NldC1Db29raWUnLCB2YWx1ZSkpCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIGNvbXBv
bmVudHMgPSB1cmxwYXJzZS51cmxwYXJzZShyZXF1ZXN0LnVyaSkKLSAgICBjb21tYW5kID0gY29t
cG9uZW50c1s0XQotCi0gICAgT05FX0RBWV9MSUZFID0gJ01heC1BZ2U9ODY0MDAnCi0KLSAgICBp
ZiBjb21tYW5kID09ICdzZXQnOgotICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJzsg
Jy5qb2luKFsnZm9vPWJhcicsIE9ORV9EQVlfTElGRV0pKQotICAgIGVsaWYgY29tbWFuZCA9PSAn
c2V0X2h0dHBvbmx5JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsCi0gICAgICAg
ICAgICAnOyAnLmpvaW4oWydodHRwT25seUZvbz1iYXInLCBPTkVfREFZX0xJRkUsICdodHRwT25s
eSddKSkKLSAgICBlbGlmIGNvbW1hbmQgPT0gJ2NsZWFyJzoKLSAgICAgICAgX2FkZF9zZXRfY29v
a2llKHJlcXVlc3QsICdmb289MDsgTWF4LUFnZT0wJykKLSAgICAgICAgX2FkZF9zZXRfY29va2ll
KHJlcXVlc3QsICdodHRwT25seUZvbz0wOyBNYXgtQWdlPTAnKQotCi0KLWRlZiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2VjaG9fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWM3NDBlNzA1OGIuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTI5ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiU2lt
cGxlIFdlYlNvY2tldCBjbGllbnQgbmFtZWQgZWNob19jbGllbnQganVzdCBiZWNhdXNlIG9mIGhp
c3RvcmljYWwgcmVhc29uLgotCi1tb2RfcHl3ZWJzb2NrZXQgZGlyZWN0b3J5IG11c3QgYmUgaW4g
UFlUSE9OUEFUSC4KLQotRXhhbXBsZSBVc2FnZToKLQotIyBzZXJ2ZXIgc2V0dXAKLSAlIGNkICRw
eXdlYnNvY2tldAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBweXRob24gLi9tb2RfcHl3ZWJzb2Nr
ZXQvc3RhbmRhbG9uZS5weSAtcCA4ODgwIFwKLSAgICAtZCAkY3dkL3NyYy9leGFtcGxlCi0KLSMg
cnVuIGNsaWVudAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBweXRob24gLi9zcmMvZXhhbXBsZS9l
Y2hvX2NsaWVudC5weSAtcCA4ODgwIFwKLSAgICAgLXMgbG9jYWxob3N0IFwKLSAgICAgLW8gaHR0
cDovL2xvY2FsaG9zdCAtciAvZWNobyAtbSB0ZXN0Ci0KLW9yCi0KLSMgcnVuIGVjaG8gY2xpZW50
IHRvIHRlc3QgSUVURiBIeUJpIDAwIHByb3RvY29sCi0gcnVuIHdpdGggLS1wcm90b2NvbC12ZXJz
aW9uPWh5YmkwMAotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0K
LQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGNvZGVjcwotaW1wb3J0IGxvZ2dpbmcKLWZyb20gb3B0
cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBv
cnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5z
aW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgX1Blck1lc3NhZ2VE
ZWZsYXRlRnJhbWVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBfcGFy
c2Vfd2luZG93X2JpdHMKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFt
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20g
bW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1fVElNRU9VVF9TRUMgPSAxMAotX1VOREVGSU5FRF9Q
T1JUID0gLTEKLQotX1VQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1f
VVBHUkFERV9IRUFERVJfSElYSUU3NSA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotCi0jIFNwZWNpYWwgbWVz
c2FnZSB0aGF0IHRlbGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFr
ZQotX0dPT0RCWUVfTUVTU0FHRSA9ICdHb29kYnllJwotCi1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJ
MTMgPSAnaHliaTEzJwotX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4ID0gJ2h5YmkwOCcKLV9QUk9U
T0NPTF9WRVJTSU9OX0hZQkkwMCA9ICdoeWJpMDAnCi1fUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1
ID0gJ2hpeGllNzUnCi0KLSMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1f
VExTX0JZX1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9w
ZW5zc2wnCi0KLSMgVmFsdWVzIHVzZWQgYnkgdGhlIC0tdGxzLXZlcnNpb24gZmxhZy4KLV9UTFNf
VkVSU0lPTl9TU0wyMyA9ICdzc2wyMycKLV9UTFNfVkVSU0lPTl9TU0wzID0gJ3NzbDMnCi1fVExT
X1ZFUlNJT05fVExTMSA9ICd0bHMxJwotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4
Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWRlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2Up
OgotICAgIHJldHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBf
b3JpZ2luX2hlYWRlcihoZWFkZXIsIG9yaWdpbik6Ci0gICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRp
b24gb2YgdGhlIHN0cmluZyAiT3JpZ2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKLSAg
ICAjIGFuZCB0aGUgL29yaWdpbi8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2Us
IHRvIC9maWVsZHMvLgotICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4u
bG93ZXIoKSkKLQotCi1kZWYgX2Zvcm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUp
OgotICAgICMgNC4xIDkuIExldCAvaG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KLSAgICAj
IDQuMSAxMC4gQXBwZW5kIHRoZSAvaG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dl
cmNhc2UsIHRvCi0gICAgIyAvaG9zdHBvcnQvCi0gICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkK
LSAgICAjIDQuMSAxMS4gSWYgL3NlY3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgw
LCBvciBpZiAvc2VjdXJlLwotICAgICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0
aGVuIGFwcGVuZCBhIFUrMDAzQSBDT0xPTiBjaGFyYWN0ZXIKLSAgICAjICg6KSBmb2xsb3dlZCBi
eSB0aGUgdmFsdWUgb2YgL3BvcnQvLCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAot
ICAgICMgdG8gL2hvc3Rwb3J0LwotICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21t
b24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQpIG9yCi0gICAgICAgIChzZWN1cmUgYW5kIHBvcnQg
IT0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCkpOgotICAgICAgICBob3N0
cG9ydCArPSAnOicgKyBzdHIocG9ydCkKLSAgICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0
aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIwIFNQQUNFCi0gICAgIyBjaGFyYWN0ZXIsIGFuZCAv
aG9zdHBvcnQvLCB0byAvZmllbGRzLy4KLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKGNvbW1v
bi5IT1NUX0hFQURFUiwgaG9zdHBvcnQpCi0KLQotZGVmIF9yZWNlaXZlX2J5dGVzKHNvY2tldCwg
bGVuZ3RoKToKLSAgICBieXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hp
bGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihy
ZW1haW5pbmcpCi0gICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKLSAgICAgICAgICAgIHJh
aXNlIElPRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSBy
ZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCi0gICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQg
JWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCi0gICAgICAgICAgICAgICAg
KGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKLSAgICAgICAgYnl0ZXMuYXBwZW5kKHJlY2Vp
dmVkX2J5dGVzKQotICAgICAgICByZW1haW5pbmcgLT0gbGVuKHJlY2VpdmVkX2J5dGVzKQotICAg
IHJldHVybiAnJy5qb2luKGJ5dGVzKQotCi0KLWRlZiBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmll
bGRzLCBuYW1lKToKLSAgICAiIiJHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIHNwZWNpZmll
ZCBieSBuYW1lIGZyb20gZmllbGRzLgotCi0gICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoYXQg
dGhlcmUncyBvbmx5IG9uZSBoZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKLSAgICBpbiBm
aWVsZHMuIE90aGVyd2lzZSwgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgotICAgICIi
IgotCi0gICAgdmFsdWVzID0gZmllbGRzLmdldChuYW1lLmxvd2VyKCkpCi0gICAgaWYgdmFsdWVz
IGlzIE5vbmUgb3IgbGVuKHZhbHVlcykgPT0gMDoKLSAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNo
YWtlRXJyb3IoCi0gICAgICAgICAgICAnJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUs
IHZhbHVlcykpCi0gICAgaWYgbGVuKHZhbHVlcykgPiAxOgotICAgICAgICByYWlzZSBDbGllbnRI
YW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICdNdWx0aXBsZSAlcyBoZWFkZXJzIGZvdW5kOiAl
cicgJSAobmFtZSwgdmFsdWVzKSkKLSAgICByZXR1cm4gdmFsdWVzWzBdCi0KLQotZGVmIF92YWxp
ZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF92YWx1ZSwgY2FzZV9zZW5zaXRpdmU9RmFsc2UpOgotICAgICIi
IkdldHMgYW5kIHZhbGlkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBzcGVjaWZpZWQgYnkg
bmFtZSBmcm9tCi0gICAgZmllbGRzLgotCi0gICAgSWYgZXhwZWN0ZWRfdmFsdWUgaXMgc3BlY2lm
aWVkLCBjb21wYXJlcyBleHBlY3RlZCB2YWx1ZSBhbmQgYWN0dWFsIHZhbHVlCi0gICAgYW5kIHJh
aXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvciBvbiBmYWlsdXJlLiBZb3UgY2FuIHNwZWNpZnkg
Y2FzZQotICAgIHNlbnNpdGl2ZW5lc3MgaW4gdGhpcyBjb21wYXJpc29uIGJ5IGNhc2Vfc2Vuc2l0
aXZlIHBhcmFtZXRlci4gVGhpcyBmdW5jdGlvbgotICAgIGV4cGVjdHMgdGhhdCB0aGVyZSdzIG9u
bHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBpbiBmaWVsZHMuCi0gICAgT3Ro
ZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3IuCi0gICAgIiIiCi0KLSAgICB2
YWx1ZSA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsIG5hbWUpCi0KLSAgICBpZiAoKGNh
c2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZSAhPSBleHBlY3RlZF92YWx1ZSkgb3IKLSAgICAgICAgKG5v
dCBjYXNlX3NlbnNpdGl2ZSBhbmQgdmFsdWUubG93ZXIoKSAhPSBleHBlY3RlZF92YWx1ZS5sb3dl
cigpKSk6Ci0gICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAg
J0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFs
KScgJQotICAgICAgICAgICAgKG5hbWUsIGV4cGVjdGVkX3ZhbHVlLCB2YWx1ZSkpCi0KLQotY2xh
c3MgX1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rp
b24uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwKLSAgICAgICAgICAgICAgICAgcmF3X3Nv
Y2tldCwgdGxzX21vZHVsZSwgdGxzX3ZlcnNpb24sIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uKToK
LSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAg
ICAgICAgaWYgdGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAg
ICAgIGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVSU0lPTl9TU0wyMzoKLSAgICAgICAgICAgICAg
ICB2ZXJzaW9uID0gc3NsLlBST1RPQ09MX1NTTHYyMwotICAgICAgICAgICAgZWxpZiB0bHNfdmVy
c2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3Ns
LlBST1RPQ09MX1NTTHYzCi0gICAgICAgICAgICBlbGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVS
U0lPTl9UTFMxOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzc2wuUFJPVE9DT0xfVExTdjEK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAg
ICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgLS10bHMtdmVyc2lvbiBmbGFnOiAlcicgJSB0bHNf
dmVyc2lvbikKLQotICAgICAgICAgICAgaWYgZGlzYWJsZV90bHNfY29tcHJlc3Npb246Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJy0tZGlz
YWJsZS10bHMtY29tcHJlc3Npb24gaXMgbm90IGF2YWlsYWJsZSBmb3Igc3NsICcKLSAgICAgICAg
ICAgICAgICAgICAgJ21vZHVsZScpCi0KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBz
c2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCwgc3NsX3ZlcnNpb249dmVyc2lvbikKLQotICAgICAg
ICAgICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiB3cmFwX3Nv
Y2tldCBjYWxsLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oIkNpcGhlcjogJXMiLCBz
ZWxmLl90bHNfc29ja2V0LmNpcGhlcigpKQotICAgICAgICBlbGlmIHRsc19tb2R1bGUgPT0gX1RM
U19CWV9QWU9QRU5TU0w6Ci0gICAgICAgICAgICBpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJ
T05fU1NMMjM6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYyM19N
RVRIT0QKLSAgICAgICAgICAgIGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9OX1NTTDM6
Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYzX01FVEhPRAotICAg
ICAgICAgICAgZWxpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fVExTMToKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gT3BlblNTTC5TU0wuVExTdjFfTUVUSE9ECi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdJbnZhbGlkIC0tdGxzLXZlcnNpb24gZmxhZzogJXInICUgdGxzX3ZlcnNpb24pCi0KLSAg
ICAgICAgICAgIGNvbnRleHQgPSBPcGVuU1NMLlNTTC5Db250ZXh0KHZlcnNpb24pCi0KLSAgICAg
ICAgICAgIGlmIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uOgotICAgICAgICAgICAgICAgICMgT1Bf
Tk9fQ09NUFJFU1NJT04gaXMgbm90IGRlZmluZWQgaW4gT3BlblNTTCBtb2R1bGUuCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRfb3B0aW9ucygweDAwMDIwMDAwKQotCi0gICAgICAgICAgICBz
ZWxmLl90bHNfc29ja2V0ID0gT3BlblNTTC5TU0wuQ29ubmVjdGlvbihjb250ZXh0LCByYXdfc29j
a2V0KQotICAgICAgICAgICAgIyBDbGllbnQgbW9kZS4KLSAgICAgICAgICAgIHNlbGYuX3Rsc19z
b2NrZXQuc2V0X2Nvbm5lY3Rfc3RhdGUoKQotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldC5z
ZXRibG9ja2luZyhUcnVlKQotCi0gICAgICAgICAgICAjIERvIGhhbmRzaGFrZSBub3cgKG5vdCBu
ZWNlc3NhcnkpLgotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldC5kb19oYW5kc2hha2UoKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm8gVExTIHN1cHBv
cnQgbW9kdWxlIGlzIGF2YWlsYWJsZScpCi0KLSAgICBkZWYgc2VuZChzZWxmLCBkYXRhKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQud3JpdGUoZGF0YSkKLQotICAgIGRlZiBzZW5k
YWxsKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5zZW5kYWxs
KGRhdGEpCi0KLSAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3Rsc19zb2NrZXQucmVhZChzaXplKQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgZ2V0cGVlcm5hbWUo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LmdldHBlZXJuYW1lKCkKLQot
Ci1jbGFzcyBDbGllbnRIYW5kc2hha2VCYXNlKG9iamVjdCk6Ci0gICAgIiIiQSBiYXNlIGNsYXNz
IGZvciBXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29ycyBmb3IgZWFjaAotICAg
IHByb3RvY29sIHZlcnNpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0g
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAg
ZGVmIF9yZWFkX2ZpZWxkcyhzZWxmKToKLSAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBi
ZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgICAgICBm
aWVsZHMgPSB7fQotICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCi0gICAgICAgICAgICAj
IDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cwotICAg
ICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgICAgICB2YWx1ZSA9ICcnCi0gICAgICAgICAgICAj
IDQuMSAzNC4gcmVhZCAvbmFtZS8KLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9yZWFkX25hbWUo
KQotICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKLSAgICAgICAgICAgICMgVE9ETyh0eW9z
aGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAg
ICAgICAgICAgY2ggPSBzZWxmLl9za2lwX3NwYWNlcygpCi0gICAgICAgICAgICAjIDQuMSAzNi4g
cmVhZCAvdmFsdWUvCi0gICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX3JlYWRfdmFsdWUoY2gpCi0g
ICAgICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAg
ICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGlm
IGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICdoZWFkZXIg
JXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCi0gICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5k
IGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAg
ICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAv
bmFtZS8gYnl0ZQotICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhl
IHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKLSAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50
ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAg
ICAgICAjIHN0cmVhbS4KLSAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5h
cHBlbmQodmFsdWUpCi0gICAgICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQi
IHN0ZXAgYWJvdmUKLSAgICAgICAgcmV0dXJuIGZpZWxkcwotCi0gICAgZGVmIF9yZWFkX25hbWUo
c2VsZik6Ci0gICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlz
Ci0gICAgICAgIG5hbWUgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyA0
LjEgMzQuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAgICAgICAgY2ggPSBfcmVj
ZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAg
IyAweDBECi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsaWYgY2gg
PT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVh
ZGVyIG5hbWUgJXInICUgbmFtZSkKLSAgICAgICAgICAgIGVsaWYgY2ggPT0gJzonOiAgIyAweDNB
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKLSAgICAgICAgICAgIGVsaWYgY2ggPj0gJ0En
IGFuZCBjaCA8PSAnWic6ICAjIFJhbmdlIDB4MzEgdG8gMHg1QQotICAgICAgICAgICAgICAgIGNo
ID0gY2hyKG9yZChjaCkgKyAweDIwKQotICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSArPSBjaAotCi0gICAgZGVmIF9za2lw
X3NwYWNlcyhzZWxmKToKLSAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNl
cnZlcgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRl
cyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBjaCA9PSAnICc6ICAjIDB4MjAKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmV0dXJuIGNoCi0KLSAgICBkZWYg
X3JlYWRfdmFsdWUoc2VsZiwgY2gpOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUg
ZW1wdHkgYnl0ZSBhcnJheXMKLSAgICAgICAgdmFsdWUgPSAnJwotICAgICAgICAjIDQuMSAzNi4g
cmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIuCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAg
ICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0g
ICAgICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
TEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicgJSB2YWx1ZSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgdmFsdWUgKz0gY2gKLSAgICAgICAgICAgIGNoID0gX3JlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotCi0KLWRlZiBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0
ZV9mcmFtZXIoZXh0ZW5zaW9uX3Jlc3BvbnNlKToKLSAgICAiIiJWYWxpZGF0ZSB0aGUgcmVzcG9u
c2UgYW5kIHJldHVybiBhIGZyYW1lciBvYmplY3QgdXNpbmcgdGhlIHBhcmFtZXRlcnMgaW4KLSAg
ICB0aGUgcmVzcG9uc2UuIFRoaXMgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHRoZSBzZXJ2ZXJfLiog
cGFyYW1ldGVycy4KLSAgICAiIiIKLQotICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25l
Ci0gICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBOb25lCi0KLSAgICBjbGllbnRfbWF4
X3dpbmRvd19iaXRzX25hbWUgPSAoCi0gICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICAgICAgX0NMSUVOVF9NQVhfV0lORE9XX0JJ
VFNfUEFSQU0pCi0gICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSA9ICgKLSAgICAg
ICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAg
ICAgICAgICBfQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCi0KLSAgICAjIFdlIGRp
ZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgotICAgICMgSGFuZGxlIHRob3NlIHBh
cmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCi0KLSAgICBmb3Ig
cGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9wYXJhbWV0
ZXJzKCk6Ci0gICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3dfYml0c19u
YW1lOgotICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBmb3VuZCcgJSBjbGllbnRfbWF4X3dpbmRvd19iaXRz
X25hbWUpCi0KLSAgICAgICAgICAgIHBhcnNlZF92YWx1ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhw
YXJhbV92YWx1ZSkKLSAgICAgICAgICAgIGlmIHBhcnNlZF92YWx1ZSBpcyBOb25lOgotICAgICAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICAg
ICAgICAgJ0JhZCAlczogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChjbGllbnRfbWF4
X3dpbmRvd19iaXRzX25hbWUsIHBhcmFtX3ZhbHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9tYXhf
d2luZG93X2JpdHMgPSBwYXJzZWRfdmFsdWUKLSAgICAgICAgZWxpZiBwYXJhbV9uYW1lID09IGNs
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWU6Ci0gICAgICAgICAgICBpZiBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3ZlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGll
bnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBm
b3VuZCcgJSBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lKQotCi0gICAgICAgICAgICBp
ZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRI
YW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6IEhhcyB2YWx1
ZSAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyX25hbWUsIHBhcmFtX3ZhbHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyID0gVHJ1ZQotCi0gICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgTm9u
ZToKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotCi0gICAgcmV0
dXJuIF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcihjbGllbnRfbWF4X3dpbmRvd19iaXRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLQotY2xhc3MgQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yKENsaWVudEhhbmRzaGFrZUJh
c2UpOgotICAgICIiIldlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yCi0g
ICAgZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlci4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgotICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKLQotICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
LQotICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcg
aGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgotCi0gICAgICAgIFJhaXNlczoKLSAg
ICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAg
ICAiIiIKLQotICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mg
b3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2xpbmUpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVl
c3RfbGluZSkKLQotICAgICAgICBmaWVsZHMgPSBbXQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9m
b3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0
LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMudXNlX3RscykpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVB
REVSKQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5vcmlnaW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnByb3RvY29sX3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4Ogot
ICAgICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoCi0gICAgICAgICAg
ICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgZmllbGRzLmFwcGVuZChfb3JpZ2luX2hlYWRlcihjb21tb24uT1JJR0lOX0hF
QURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMub3JpZ2luKSkKLQotICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2
KQotICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJyVzOiAlciAoJXMpJywKLSAg
ICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCi0gICAgICAgICAgICBz
ZWxmLl9rZXksCi0gICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQotICAgICAg
ICBmaWVsZHMuYXBwZW5kKAotICAgICAgICAgICAgJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNf
V0VCU09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleSkpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy52ZXJzaW9uX2hlYWRlciA+IDA6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczog
JWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudmVyc2lvbl9o
ZWFkZXIpKQotICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMucHJvdG9jb2xfdmVyc2lvbiA9PSBf
UFJPVE9DT0xfVkVSU0lPTl9IWUJJMDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczog
JWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQkkwOCkp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAl
IChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLQot
ICAgICAgICBleHRlbnNpb25zX3RvX3JlcXVlc3QgPSBbXQotCi0gICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04pKQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNl
X3Blcm1lc3NhZ2VfZGVmbGF0ZToKLSAgICAgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OKQotICAgICAgICAgICAgIyBBY2NlcHQgdGhlIGNsaWVudF9tYXhfd2lu
ZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZhdWx0LgotICAgICAgICAgICAgZXh0
ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9DTElF
TlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAgICBOb25lKQotICAg
ICAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAg
ICAgaWYgbGVuKGV4dGVuc2lvbnNfdG9fcmVxdWVzdCkgIT0gMDoKLSAgICAgICAgICAgIGZpZWxk
cy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgJyVzOiAlc1xyXG4nICUKLSAgICAgICAgICAgICAg
ICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAg
ICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhleHRlbnNpb25zX3RvX3JlcXVlc3QpKSkKLQot
ICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwoZmllbGQpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQotCi0g
ICAgICAgIHN0YXR1c19saW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAg
IGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgc3RhdHVz
X2xpbmUgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAg
YnJlYWsKLQotICAgICAgICBtID0gcmUubWF0Y2goJ0hUVFAvXFxkK1xcLlxcZCsgKFxcZFxcZFxc
ZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCi0gICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAg
ICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdXcm9uZyBz
dGF0dXMgbGluZSBmb3JtYXQ6ICVyJyAlIHN0YXR1c19saW5lKQotICAgICAgICBzdGF0dXNfY29k
ZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgaWYgc3RhdHVzX2NvZGUgIT0gJzEwMSc6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1VuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgJXMgd2l0aCBm
b2xsb3dpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJzOiAlcics
IHN0YXR1c19jb2RlLCBzZWxmLl9yZWFkX2ZpZWxkcygpKQotICAgICAgICAgICAgcmFpc2UgQ2xp
ZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3RhdHVz
IGNvZGUgMTAxIGJ1dCBmb3VuZCAlcicgJSBzdGF0dXNfY29kZSkKLQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlY2VpdmVkIHZhbGlkIFN0YXR1cy1MaW5lJykKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIGhlYWRlcnMgdW50aWwgd2Ugc2VlIGFuIGVtcHR5
IGxpbmUnKQotCi0gICAgICAgIGZpZWxkcyA9IHNlbGYuX3JlYWRfZmllbGRzKCkKLQotICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggIT0g
J1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZh
bHVlICVyIGZvciBoZWFkZXIgJwotICAgICAgICAgICAgICAgICduYW1lICVyJyAlIChjaCwgdmFs
dWUsIG5hbWUpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgYW4gZW1w
dHkgbGluZScpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VydmVyXCdzIG9wZW5pbmcg
aGFuZHNoYWtlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAgIF92YWxpZGF0ZV9tYW5k
YXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLAotICAgICAgICAgICAgY29tbW9uLlVQ
R1JBREVfSEVBREVSLAotICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUs
Ci0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cigKLSAgICAgICAgICAgIGZpZWxkcywKLSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hF
QURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSwKLSAgICAg
ICAgICAgIEZhbHNlKQotCi0gICAgICAgIGFjY2VwdCA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcigK
LSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUikK
LQotICAgICAgICAjIFZhbGlkYXRlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJpbmFyeV9h
Y2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJv
cjoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCi0gICAgICAgICAgICAgICAgKGNvbW1v
bi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCkpCi0KLSAgICAgICAgaWYgbGVu
KGJpbmFyeV9hY2NlcHQpICE9IDIwOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtl
RXJyb3IoCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFsdWUgb2YgJXMgaXMgbm90IDIwLWJ5
dGUgbG9uZycgJQotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9I
RUFERVIpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1Jlc3Bv
bnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywKLSAgICAgICAgICAgIGFjY2VwdCwgdXRpbC5o
ZXhpZnkoYmluYXJ5X2FjY2VwdCkpCi0KLSAgICAgICAgYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCA9
IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICAgICAgc2VsZi5fa2V5ICsgY29tbW9uLldFQlNPQ0tF
VF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0
LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCByZXNwb25zZSBmb3IgY2hhbGxlbmdlOiAl
ciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkX2FjY2VwdCwgdXRpbC5oZXhpZnkoYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgaWYgYWNjZXB0ICE9IGV4cGVjdGVkX2FjY2Vw
dDoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAg
ICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVkOiAlcyknICUKLSAgICAgICAgICAg
ICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0LCBleHBlY3Rl
ZF9hY2NlcHQpKQotCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQgPSBGYWxzZQotICAg
ICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBGYWxzZQotCi0gICAgICAgIGV4dGVu
c2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX0VYVEVOU0lPTlNfSEVBREVSLmxvd2VyKCkpCi0gICAgICAgIGFjY2VwdGVkX2V4dGVuc2lv
bnMgPSBbXQotICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZSBhbmQgbGVu
KGV4dGVuc2lvbnNfaGVhZGVyKSAhPSAwOgotICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9u
cyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKGV4dGVuc2lvbnNfaGVhZGVyWzBdKQotCi0gICAg
ICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgdGhlIG5ldyBzdHlsZSBwZXJmcmFtZSBjb21wcmVz
c2lvbiBleHRlbnNpb24uCi0gICAgICAgIGZvciBleHRlbnNpb24gaW4gYWNjZXB0ZWRfZXh0ZW5z
aW9uczoKLSAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lID0gZXh0ZW5zaW9uLm5hbWUoKQotICAg
ICAgICAgICAgaWYgKGV4dGVuc2lvbl9uYW1lID09IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTiBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRlZmxhdGVfZnJhbWUpOgot
ICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lv
bikKLSAgICAgICAgICAgICAgICB1bnVzZWRfZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29y
LmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
ZGVmbGF0ZV9mcmFtZSA9IHByb2Nlc3NvcgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBlbGlmIChleHRlbnNpb25fbmFtZSA9PSBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRF
X0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Blcm1l
c3NhZ2VfZGVmbGF0ZSk6Ci0gICAgICAgICAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlX2FjY2Vw
dGVkID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgZnJhbWVyID0gX2dldF9wZXJtZXNzYWdlX2Rl
ZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICBmcmFtZXIuc2V0X2NvbXBy
ZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAnVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUgZXh0ZW5zaW9uX25hbWUpCi0KLSAgICAg
ICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBhbmQgbm90IGRlZmxhdGVfZnJhbWVf
YWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAg
ICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2ZXIgcmVqZWN0ZWQgaXQnICUK
LSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLSAgICAg
ICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSBhbmQKLSAgICAgICAg
ICAgIG5vdCBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2Ug
Q2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgJXMs
IGJ1dCB0aGUgc2VydmVyIHJlamVjdGVkIGl0JyAlCi0gICAgICAgICAgICAgICAgICAgIGNvbW1v
bi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotCi0gICAgICAgICMgVE9ETyh0eW9zaGlu
byk6IEhhbmRsZSBTZWMtV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgICMgVE9ETyh0eW9zaGlu
byk6IEhhbmRsZSBDb29raWUsIGV0Yy4KLQotCi1jbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNz
b3JIeWJpMDAoQ2xpZW50SGFuZHNoYWtlQmFzZSk6Ci0gICAgIiIiV2ViU29ja2V0IG9wZW5pbmcg
aGFuZHNoYWtlIHByb2Nlc3NvciBmb3IKLSAgICBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0
cHJvdG9jb2wtMDAgKGVxdWl2YWxlbnQgdG8KLSAgICBkcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRw
cm90b2NvbC03NikuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBv
cHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwLCBz
ZWxmKS5fX2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0
ZV9mcmFtZSBvcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZs
YXRlKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0h5QmkgMDAgZG9lc25cJ3Qgc3Vw
cG9ydCBleHRlbnNpb25zLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZGVmIGhh
bmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybXMgb3BlbmluZyBoYW5kc2hha2Ugb24g
dGhlIHNwZWNpZmllZCBzb2NrZXQuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQ2xp
ZW50SGFuZHNoYWtlRXJyb3I6IGhhbmRzaGFrZSBmYWlsZWQuCi0gICAgICAgICIiIgotCi0gICAg
ICAgICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAgICBzZWxmLl9zb2NrZXQuc2Vu
ZGFsbChfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkpCi0gICAgICAg
ICMgNC4xIDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0IG9mIHN0cmluZ3MuCi0gICAg
ICAgIGZpZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0aGUgc3RyaW5nICJVcGdyYWRl
OiBXZWJTb2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURF
X0hFQURFUl9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQgdGhlIHN0cmluZyAiQ29ubmVj
dGlvbjogVXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5F
Q1RJT05fSEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQgSG9zdDogZmllbGQgdG8gL2Zp
ZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLSAg
ICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5vcmlnaW46Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5k
c2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnU3BlY2lmeSB0aGUgb3JpZ2luIG9mIHRoZSBj
b25uZWN0aW9uIGJ5IC0tb3JpZ2luIGZsYWcnKQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmln
aW5faGVhZGVyKGNvbW1vbi5PUklHSU5fSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgIyBUT0RPOiA0LjEg
MTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAg
ICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8gL2ZpZWxkcy8uCi0KLSAgICAg
ICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxuPiB0byAvZmllbGRzLy4KLSAg
ICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRf
a2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIxOiAlZCcsIHNlbGYuX251
bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNf
V0VCU09DS0VUX0tFWTFfSEVBREVSLCBrZXkxKSkKLSAgICAgICAgc2VsZi5fbnVtYmVyMiwga2V5
MiA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdOdW1iZXIyOiAlZCcsIHNlbGYuX251bWJlcjIpCi0gICAgICAgIGZpZWxkcy5h
cHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWTJfSEVBREVSLCBr
ZXkyKSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogMFxyXG4nICUgY29tbW9uLlNFQ19X
RUJTT0NLRVRfRFJBRlRfSEVBREVSKQotCi0gICAgICAgICMgNC4xIDI0LiBGb3IgZWFjaCBzdHJp
bmcgaW4gL2ZpZWxkcy8sIGluIGEgcmFuZG9tIG9yZGVyOiBzZW5kIHRoZQotICAgICAgICAjIHN0
cmluZywgZW5jb2RlZCBhcyBVVEYtOCwgZm9sbG93ZWQgYnkgYSBVVEYtOCBlbmNvZGVkIFUrMDAw
RCBDQVJSSUFHRQotICAgICAgICAjIFJFVFVSTiBVKzAwMEEgTElORSBGRUVEIGNoYXJhY3RlciBw
YWlyIChDUkxGKS4KLSAgICAgICAgcmFuZG9tLnNodWZmbGUoZmllbGRzKQotICAgICAgICBmb3Ig
ZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQp
Ci0gICAgICAgICMgNC4xIDI1LiBzZW5kIGEgVVRGLTgtZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0Ug
UkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQKLSAgICAgICAgIyBjaGFyYWN0ZXIgcGFpciAoQ1JMRiku
Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLSAgICAgICAgIyA0LjEgMjYu
IGxldCAva2V5My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiBlaWdodCByYW5kb20gYnl0ZXMg
KG9yCi0gICAgICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRvbSA2NCBiaXQgaW50ZWdlciBlbmNv
ZGVkIGluIGEgYmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAgIHNlbGYuX2tleTMgPSBzZWxmLl9n
ZW5lcmF0ZV9rZXkzKCkKLSAgICAgICAgIyA0LjEgMjcuIHNlbmQgL2tleTMvIHRvIHRoZSBzZXJ2
ZXIuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2tleTMpCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdLZXkzOiAlciAoJXMpJywgc2VsZi5fa2V5
MywgdXRpbC5oZXhpZnkoc2VsZi5fa2V5MykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J1NlbnQgaGFuZHNoYWtlJykKLQotICAgICAgICAjIDQuMSAyOC4gUmVhZCBieXRlcyBmcm9tIHRo
ZSBzZXJ2ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICMgY2xvc2VzLCBv
ciBhIDB4MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0aGVzZSBieXRlcywgaW5jbHVk
aW5nCi0gICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAgIGZpZWxkID0gJycKLSAgICAg
ICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29j
a2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09ICdc
bic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBpZiAvZmllbGQvIGlzIG5vdCBh
dCBsZWFzdCBzZXZlbiBieXRlcyBsb25nLCBvciBpZiB0aGUgbGFzdAotICAgICAgICAjIHR3byBi
eXRlcyBhcmVuJ3QgMHgwRCBhbmQgMHgwQSByZXNwZWN0aXZlbHksIG9yIGlmIGl0IGRvZXMgbm90
Ci0gICAgICAgICMgY29udGFpbiBhdCBsZWFzdCB0d28gMHgyMCBieXRlcywgdGhlbiBmYWlsIHRo
ZSBXZWJTb2NrZXQgY29ubmVjdGlvbgotICAgICAgICAjIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4K
LSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVuZHN3aXRoKCdcclxuJyk6
Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignV3Jvbmcgc3RhdHVzIGxp
bmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2goJ1teIF0qIChbXiBdKikgLion
LCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50
SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ05vIEhUVFAgc3RhdHVzIGNvZGUgZm91
bmQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICAjIDQuMSAyOS4gbGV0IC9j
b2RlLyBiZSB0aGUgc3Vic3RyaW5nIG9mIC9maWVsZC8gdGhhdCBzdGFydHMgZnJvbSB0aGUKLSAg
ICAgICAgIyBieXRlIGFmdGVyIHRoZSBmaXJzdCAweDIwIGJ5dGUsIGFuZCBlbmRzIHdpdGggdGhl
IGJ5dGUgYmVmb3JlIHRoZQotICAgICAgICAjIHNlY29uZCAweDIwIGJ5dGUuCi0gICAgICAgIGNv
ZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICMgNC4xIDMwLiBpZiAvY29kZS8gaXMgbm90IHRocmVl
IGJ5dGVzIGxvbmcsIG9yIGlmIGFueSBvZiB0aGUgYnl0ZXMgaW4KLSAgICAgICAgIyAvY29kZS8g
YXJlIG5vdCBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDkwLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tl
dAotICAgICAgICAjIGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBp
ZiBub3QgcmUubWF0Y2goJ1swLTldWzAtOV1bMC05XScsIGNvZGUpOgotICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVzIGNv
ZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAgICAg
ICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgICMgNC4xIDMxLiBpZiAvY29kZS8sIGludGVy
cHJldGVkIGFzIFVURi04LCBpcyAiMTAxIiwgdGhlbiBtb3ZlIHRvIHRoZQotICAgICAgICAjIG5l
eHQgc3RlcC4KLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoKLSAgICAgICAgICAgIHJhaXNlIENs
aWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1
cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcKLSAgICAgICAgICAgICAg
ICAnJXInICUgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0LjEgMzItMzkuIHJlYWQgZmllbGRz
IGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gc2VsZi5fcmVhZF9maWVsZHMoKQotICAg
ICAgICAjIDQuMSA0MC4gX0ZpZWxkcyBwcm9jZXNzaW5nXwotICAgICAgICAjIHJlYWQgYSBieXRl
IGZyb20gc2VydmVyCi0gICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBDbGll
bnRIYW5kc2hha2VFcnJvcignRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyJyAlIGNoKQotICAgICAg
ICAjIDQuMSA0MS4gY2hlY2sgL2ZpZWxkcy8KLSAgICAgICAgIyBUT0RPKHVrYWkpOiBwcm90b2Nv
bAotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMgInVwZ3JhZGUiCi0gICAgICAgICMg
IGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhhY3RseSBlcXVhbCB0byB0aGUgc3RyaW5nICJXZWJTb2Nr
ZXQiLAotICAgICAgICAjICB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoCi0g
ICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsCi0g
ICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJRTc1LAotICAgICAg
ICAgICAgVHJ1ZSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBuYW1lIGlzICJjb25uZWN0aW9u
IgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2Us
IGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRvIHRoZSBzdHJpbmcgInVwZ3JhZGUi
LCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZAotICAgICAgICAjICBhYm9y
dCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoCi0gICAg
ICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIsCi0g
ICAgICAgICAgICBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUsCi0gICAgICAgICAgICBG
YWxzZSkKLQotICAgICAgICBvcmlnaW4gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAg
ICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIpCi0KLSAgICAg
ICAgbG9jYXRpb24gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMs
IGNvbW1vbi5TRUNfV0VCU09DS0VUX0xPQ0FUSU9OX0hFQURFUikKLQotICAgICAgICAjIFRPRE8o
dWthaSk6IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwgLi4KLQotICAgICAgICAjIDQu
MSA0Mi4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIC9udW1iZXJfMS8s
Ci0gICAgICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgL251
bWJlcl8yLywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdl
ciwgYW5kIHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRoZQotICAgICAgICAjIG9yZGVy
IHRoZXkgd2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBjaGFsbGVuZ2UgPSBzdHJ1Y3Qu
cGFjaygnIUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBh
Y2soJyFJJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxlbmdlICs9IHNlbGYuX2tleTMK
LQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxlbmdlOiAl
ciAoJXMpJywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVuZ2UpKQotCi0gICAgICAgICMg
NC4xIDQzLiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdlcnByaW50IG9mIC9jaGFsbGVu
Z2UvIGFzIGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQgc3RyaW5nLgotICAgICAgICBl
eHBlY3RlZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQgY2hhbGxlbmdlIHJlc3BvbnNl
OiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGlsLmhleGlmeShleHBlY3RlZCkp
Ci0KLSAgICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIu
Ci0gICAgICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMuCi0gICAgICAgIHJlcGx5ID0g
X3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxNikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAotICAgICAgICAgICAgJ0FjdHVhbCBjaGFsbGVuZ2UgcmVzcG9uc2U6ICVyICglcyknLCBy
ZXBseSwgdXRpbC5oZXhpZnkocmVwbHkpKQotCi0gICAgICAgICMgNC4xIDQ1LiBpZiAvcmVwbHkv
IGRvZXMgbm90IGV4YWN0bHkgZXF1YWwgL2V4cGVjdGVkLywgdGhlbiBmYWlsCi0gICAgICAgICMg
dGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAg
aWYgZXhwZWN0ZWQgIT0gcmVwbHk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcigKLSAgICAgICAgICAgICAgICAnQmFkIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKGV4cGVj
dGVkKSAhPSAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZCwgcmVwbHkp
KQotICAgICAgICAjIDQuMSA0Ni4gVGhlICpXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxp
c2hlZCouCi0KLSAgICBkZWYgX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KHNlbGYpOgotICAg
ICAgICAjIDQuMSAxNi4gbGV0IC9zcGFjZXNfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDEg
dG8gMTIgaW5jbHVzaXZlLgotICAgICAgICBzcGFjZXMgPSByYW5kb20ucmFuZGludCgxLCAxMikK
LSAgICAgICAgIyA0LjEgMTcuIGxldCAvbWF4X24vIGJlIHRoZSBsYXJnZXN0IGludGVnZXIgbm90
IGdyZWF0ZXIgdGhhbgotICAgICAgICAjICA0LDI5NCw5NjcsMjk1IGRpdmlkZWQgYnkgL3NwYWNl
c19uLy4KLSAgICAgICAgbWF4bnVtID0gNDI5NDk2NzI5NSAvIHNwYWNlcwotICAgICAgICAjIDQu
MSAxOC4gbGV0IC9udW1iZXJfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gL21heF9u
LwotICAgICAgICAjIGluY2x1c2l2ZS4KLSAgICAgICAgbnVtYmVyID0gcmFuZG9tLnJhbmRpbnQo
MCwgbWF4bnVtKQotICAgICAgICAjIDQuMSAxOS4gbGV0IC9wcm9kdWN0X24vIGJlIHRoZSByZXN1
bHQgb2YgbXVsdGlwbHlpbmcgL251bWJlcl9uLyBhbmQKLSAgICAgICAgIyAvc3BhY2VzX24vIHRv
Z2V0aGVyLgotICAgICAgICBwcm9kdWN0ID0gbnVtYmVyICogc3BhY2VzCi0gICAgICAgICMgNC4x
IDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIC9wcm9kdWN0X24vLCBl
eHByZXNzZWQKLSAgICAgICAgIyBpbiBiYXNlIHRlbiB1c2luZyB0aGUgbnVtZXJhbHMgaW4gdGhl
IHJhbmdlIFUrMDAzMCBESUdJVCBaRVJPICgwKSB0bwotICAgICAgICAjIFUrMDAzOSBESUdJVCBO
SU5FICg5KS4KLSAgICAgICAga2V5ID0gc3RyKHByb2R1Y3QpCi0gICAgICAgICMgNC4xIDIxLiBp
bnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3ZWx2ZSByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZQot
ICAgICAgICAjIHJhbmdlIFUrMDAyMSB0byBVKzAwMkYgYW5kIFUrMDAzQSB0byBVKzAwN0UgaW50
byAva2V5X24vIGF0IHJhbmRvbQotICAgICAgICAjIHBvc2l0aW9ucy4KLSAgICAgICAgYXZhaWxh
YmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwgMHgyZiArIDEpICsgcmFuZ2UoMHgzYSwgMHg3ZSArIDEp
Ci0gICAgICAgIG4gPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAgICAgICAgZm9yIF8gaW4geHJh
bmdlKG4pOgotICAgICAgICAgICAgY2ggPSByYW5kb20uY2hvaWNlKGF2YWlsYWJsZV9jaGFycykK
LSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDAsIGxlbihrZXkpKQotICAgICAgICAg
ICAga2V5ID0ga2V5WzA6cG9zXSArIGNocihjaCkgKyBrZXlbcG9zOl0KLSAgICAgICAgIyA0LjEg
MjIuIGluc2VydCAvc3BhY2VzX24vIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXJzIGludG8gL2tleV9u
LyBhdAotICAgICAgICAjIHJhbmRvbSBwb3NpdGlvbnMgb3RoZXIgdGhhbiBzdGFydCBvciBlbmQg
b2YgdGhlIHN0cmluZy4KLSAgICAgICAgZm9yIF8gaW4geHJhbmdlKHNwYWNlcyk6Ci0gICAgICAg
ICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5KSAtIDEpCi0gICAgICAgICAgICBr
ZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCi0gICAgICAgIHJldHVybiBudW1iZXIs
IGtleQotCi0gICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYpOgotICAgICAgICAjIDQuMSAyNi4g
bGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAo
b3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29k
ZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocihy
YW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFuZ2UoOCldKQotCi0KLWNsYXNzIENs
aWVudENvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJBIHdyYXBwZXIgZm9yIHNvY2tldCBvYmpl
Y3QgdG8gcHJvdmlkZSB0aGUgbXBfY29ubiBpbnRlcmZhY2UuCi0gICAgbW9kX3B5d2Vic29ja2V0
IGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gYmUgd29ya2luZyBvbiBBcGFjaGUgbW9kX3B5dGhvbidz
Ci0gICAgbXBfY29ubiBvYmplY3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
c29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICBkZWYgd3JpdGUo
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGRhdGEpCi0KLSAgICBk
ZWYgcmVhZChzZWxmLCBuKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2tldC5yZWN2KG4pCi0K
LSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc29j
a2V0LmdldHBlZXJuYW1lKCkKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVf
YWRkcikKLQotCi1jbGFzcyBDbGllbnRSZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVy
IGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBhYmxlIHRvIHBhc3MgYSBzb2NrZXQgb2JqZWN0IHRvCi0g
ICAgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbXBfcmVxdWVzdCBvYmplY3QuCi0gICAgIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0g
dXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IENsaWVudENvbm5lY3Rpb24oc29ja2V0KQot
Ci0KLWRlZiBfaW1wb3J0X3NzbCgpOgotICAgIGdsb2JhbCBzc2wKLSAgICB0cnk6Ci0gICAgICAg
IGltcG9ydCBzc2wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfaW1wb3J0X3B5b3BlbnNzbCgpOgotICAg
IGdsb2JhbCBPcGVuU1NMCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgT3BlblNTTC5TU0wKLSAg
ICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVy
biBGYWxzZQotCi0KLWNsYXNzIEVjaG9DbGllbnQob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQg
ZWNobyBjbGllbnQuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAg
ICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUK
LQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQot
ICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIlJ1biB0aGUgY2xpZW50LgotCi0gICAgICAg
IFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3NhZ2UgYW5kIHJlY2Vpdmlu
ZyBpdHMgZWNoby4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0
LnNvY2tldCgpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0KHNlbGYuX29wdGlvbnMu
c29ja2V0X3RpbWVvdXQpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5j
b25uZWN0KChzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpKQotICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCA9IF9U
TFNTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy50bHNfbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnRsc192ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLmRpc2FibGVfdGxzX2NvbXByZXNzaW9uKQotCi0gICAgICAgICAgICB2ZXJzaW9uID0gc2Vs
Zi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uCi0KLSAgICAgICAgICAgIGlmICh2ZXJzaW9uID09
IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCBvcgotICAgICAgICAgICAgICAgIHZlcnNpb24gPT0g
X1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzKToKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hh
a2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3NvY2tldCwgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIGVsaWYgdmVyc2lvbiA9PSBfUFJP
VE9DT0xfVkVSU0lPTl9IWUJJMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlID0g
Q2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwKAotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9zb2NrZXQsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tcHJv
dG9jb2wtdmVyc2lvbiBmbGFnOiAlcicgJSB2ZXJzaW9uKQotCi0gICAgICAgICAgICBzZWxmLl9o
YW5kc2hha2UuaGFuZHNoYWtlKCkKLQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nv
bm5lY3Rpb24gZXN0YWJsaXNoZWQnKQotCi0gICAgICAgICAgICByZXF1ZXN0ID0gQ2xpZW50UmVx
dWVzdChzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgICAgIHZlcnNpb25fbWFwID0gewotICAgICAg
ICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwODogY29tbW9uLlZFUlNJT05fSFlCSTA4
LAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkxMzogY29tbW9uLlZFUlNJ
T05fSFlCSTEzLAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMDogY29t
bW9uLlZFUlNJT05fSFlCSTAwfQotICAgICAgICAgICAgcmVxdWVzdC53c192ZXJzaW9uID0gdmVy
c2lvbl9tYXBbdmVyc2lvbl0KLQotICAgICAgICAgICAgaWYgKHZlcnNpb24gPT0gX1BST1RPQ09M
X1ZFUlNJT05fSFlCSTA4IG9yCi0gICAgICAgICAgICAgICAgdmVyc2lvbiA9PSBfUFJPVE9DT0xf
VkVSU0lPTl9IWUJJMTMpOgotICAgICAgICAgICAgICAgIHN0cmVhbV9vcHRpb24gPSBTdHJlYW1P
cHRpb25zKCkKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLm1hc2tfc2VuZCA9IFRydWUK
LSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLnVubWFza19yZWNlaXZlID0gRmFsc2UKLQot
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBpcyBub3QgRmFs
c2U6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX29wdGlvbnMuZGVmbGF0
ZV9mcmFtZQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlv
bnMoc3RyZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNl
X3Blcm1lc3NhZ2VfZGVmbGF0ZSBpcyBub3QgRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZy
YW1lciA9IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZQotICAgICAgICAgICAg
ICAgICAgICBmcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbikKLQotICAg
ICAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9u
KQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBTdHJlYW1IaXhpZTc1KHJlcXVlc3QsIFRy
dWUpCi0KLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29wdGlvbnMubWVzc2FnZS5zcGxp
dCgnLCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSkK
LSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHByaW50KCdTZW5kOiAlcycgJSBsaW5lKQotICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdl
KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcmludCgnUmVjdjogJXMnICUgcmVjZWl2ZWQpCi0gICAgICAg
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnRXJy
b3I6ICVzJyAlIGUpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgICAgIHNl
bGYuX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKHNl
bGYpOgotICAgICAgICAiIiJQZXJmb3JtIGNsb3NpbmcgaGFuZHNoYWtlIHVzaW5nIHRoZSBzcGVj
aWZpZWQgY2xvc2luZyBmcmFtZS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm1lc3Nh
Z2Uuc3BsaXQoJywnKVstMV0gPT0gX0dPT0RCWUVfTUVTU0FHRToKLSAgICAgICAgICAgICMgcmVx
dWVzdGVkIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UsIHNvCi0gICAgICAgICAg
ICAjIGV4cGVjdGluZyBjbG9zaW5nIGhhbmRzaGFrZSBtZXNzYWdlIGZyb20gc2VydmVyLgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1dhaXQgZm9yIHNlcnZlci1pbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3N0cmVhbS5yZWNl
aXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAg
ICAgICAgIHByaW50KCdSZWN2IGNsb3NlJykKLSAgICAgICAgICAgICAgICBwcmludCgnU2VuZCBh
Y2snKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAotICAgICAgICAgICAgICAg
ICAgICAnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQgYWNrJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2UnKQotICAgICAgICBzZWxm
Ll9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdT
ZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgcHJpbnQoJ1JlY3YgYWNrJykKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCi0KLQotZGVmIG1haW4oKToKLSAg
ICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcigndXRmLTgnKShzeXMuc3Rkb3V0KQotCi0g
ICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKLSAgICAjIFdlIGFjY2VwdCAtLWNvbW1hbmRfbGlu
ZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBzYW1lIGFzIEdvb2dsZQotICAgICMgZ2Zs
YWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1hbmQtbGluZS1mbGFnIHN0eWxlIGZsYWdz
LgotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNlcnZlci1ob3N0JywgJy0tc2VydmVy
X2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9ob3N0JywgdHlwZT0n
c3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLCBoZWxw
PSdzZXJ2ZXIgaG9zdCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tc2VydmVyLXBv
cnQnLCAnLS1zZXJ2ZXJfcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVy
X3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X1VOREVG
SU5FRF9QT1JULCBoZWxwPSdzZXJ2ZXIgcG9ydCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1v
JywgJy0tb3JpZ2luJywgZGVzdD0nb3JpZ2luJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J29yaWdpbicpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1yJywgJy0tcmVzb3VyY2UnLCBkZXN0PSdyZXNvdXJjZScsIHR5cGU9J3N0cmluZycs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nL2VjaG8nLCBoZWxwPSdyZXNvdXJjZSBw
YXRoJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS1tZXNzYWdlJywgZGVzdD0nbWVz
c2FnZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ2NvbW1h
LXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4nICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3ZlcmJvc2UnLCBhY3Rpb249J3N0b3Jl
X2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhlbHA9J3N1cHBy
ZXNzIG1lc3NhZ2VzJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10bHMnLCBkZXN0
PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pLiBCeSBkZWZhdWx0LCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgJ2l0IGxvb2tzIGZvciBzc2wgYW5kIHB5T3BlblNTTCBtb2R1bGUg
YW5kIHVzZXMgZm91bmQgJwotICAgICAgICAgICAgICAgICAgICAgICdvbmUuIFVzZSAtLXRscy1t
b2R1bGUgb3B0aW9uIHRvIHNwZWNpZnkgd2hpY2ggbW9kdWxlICcKLSAgICAgICAgICAgICAgICAg
ICAgICAndG8gdXNlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9kdWxlJywgJy0t
dGxzX21vZHVsZScsIGRlc3Q9J3Rsc19tb2R1bGUnLAotICAgICAgICAgICAgICAgICAgICAgIHR5
cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bX1RMU19CWV9TVEFO
REFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZC4gJwotICAgICAgICAgICAg
ICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZCcgJQot
ICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19CWV9Q
WU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy12ZXJzaW9uJywgJy0tdGxz
X3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Rsc192ZXJzaW9uJywKLSAg
ICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PV9UTFNfVkVSU0lPTl9T
U0wyMywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMvU1NMIHZlcnNpb24gdG8gdXNl
LiBPbmUgb2YgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfVExTX1ZFUlNJT05fU1NMMjMg
KyAnXCcgKFNTTCB2ZXJzaW9uIDIgb3IgMyksIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAg
X1RMU19WRVJTSU9OX1NTTDMgKyAnXCcgKFNTTCB2ZXJzaW9uIDMpLCBcJycgKwotICAgICAgICAg
ICAgICAgICAgICAgIF9UTFNfVkVSU0lPTl9UTFMxICsgJ1wnIChUTFMgdmVyc2lvbiAxKScpCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzYWJsZS10bHMtY29tcHJlc3Npb24nLCAnLS1kaXNh
YmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGlzYWJs
ZV90bHNfY29tcHJlc3Npb24nLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVf
dHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nRGlzYWJs
ZSBUTFMgY29tcHJlc3Npb24uIEF2YWlsYWJsZSBvbmx5IHdoZW4gJwotICAgICAgICAgICAgICAg
ICAgICAgICdweU9wZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLWsnLCAnLS1zb2NrZXQtdGltZW91dCcsICctLXNvY2tldF90aW1lb3V0JywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9
X1RJTUVPVVRfU0VDLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RpbWVvdXQoc2VjKSBm
b3Igc29ja2V0cycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZHJhZnQ3NScsIGRlc3Q9J2Ry
YWZ0NzUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1
bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nT2Jzb2xldGUgb3B0aW9uLiBE
b25cJ3QgdXNlIHRoaXMuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1wcm90b2NvbC12ZXJz
aW9uJywgJy0tcHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywg
ZGVmYXVsdD1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMsCi0gICAgICAgICAgICAgICAgICAgICAg
aGVscD0nV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gdG8gdXNlLiBPbmUgb2YgXCcnICsKLSAg
ICAgICAgICAgICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgKyAnXCcsIFwnJyAr
Ci0gICAgICAgICAgICAgICAgICAgICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4ICsgJ1wnLCBc
JycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMCArICdc
JycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdmVyc2lvbi1oZWFkZXInLCAnLS12ZXJzaW9u
X2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyc2lvbl9oZWFkZXInLAot
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1bHQ9LTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBTZWMtV2ViU29ja2V0LVZlcnNpb24gaGVhZGVyIHZh
bHVlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZsYXRlLWZyYW1lJywgJy0tZGVmbGF0
ZV9mcmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGVmbGF0ZV9mcmFtZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhlIGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdXNlLXBlcm1lc3NhZ2UtZGVmbGF0ZScs
ICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0n
c3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0n
VXNlIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLicpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tbG9nLWxldmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAg
ICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9y
JywgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGxldmVsLicp
Ci0KLSAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0g
ICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLmdldExldmVsTmFtZShvcHRpb25z
LmxvZ19sZXZlbC51cHBlcigpKSkKLQotICAgIGlmIG9wdGlvbnMuZHJhZnQ3NToKLSAgICAgICAg
bG9nZ2luZy5jcml0aWNhbCgnLS1kcmFmdDc1IG9wdGlvbiBpcyBvYnNvbGV0ZS4nKQotICAgICAg
ICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uID09IF9QUk9U
T0NPTF9WRVJTSU9OX0hJWElFNzU6Ci0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCi0gICAgICAg
ICAgICAnVmFsdWUgJXMgaXMgb2Jzb2xldGUgZm9yIC0tcHJvdG9jb2xfdmVyc2lvbiBvcHRpb25z
JyAlCi0gICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1KQotICAgICAgICBzeXMu
ZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBvcHRpb25zLnRs
c19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6Ci0gICAgICAg
ICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEUKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKLSAgICAgICAg
ICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRs
c19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVi
dWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUyBz
dXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAgICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19C
WV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9zc2woKToKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFi
bGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYgb3B0aW9ucy50
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgbm90IF9pbXBv
cnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgncHlPcGVu
U1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnSW52YWxpZCAt
LXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYg
KG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb24gYW5kCi0gICAgICAgICAgICBvcHRpb25z
LnRsc19tb2R1bGUgIT0gX1RMU19CWV9QWU9QRU5TU0wpOgotICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgnWW91IGNhbiBkaXNhYmxlIFRMUyBjb21wcmVzc2lvbiBvbmx5IHdoZW4gJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAncHlPcGVuU1NMIG1vZHVsZSBpcyB1c2VkLicpCi0g
ICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxz
X21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VzZSAt
LXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgx
KQotCi0gICAgICAgIGlmIG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb246Ci0gICAgICAg
ICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS1kaXNhYmxlLXRscy1jb21wcmVzc2lvbiBvbmx5
IHRvZ2V0aGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggLS11c2UtdGxz
IG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgRGVmYXVsdCBwb3J0
IG51bWJlciBkZXBlbmRzIG9uIHdoZXRoZXIgVExTIGlzIHVzZWQuCi0gICAgaWYgb3B0aW9ucy5z
ZXJ2ZXJfcG9ydCA9PSBfVU5ERUZJTkVEX1BPUlQ6Ci0gICAgICAgIGlmIG9wdGlvbnMudXNlX3Rs
czoKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1NFQ1VSRV9QT1JUCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcHRpb25zLnNl
cnZlcl9wb3J0ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCi0KLSAgICAjIG9wdHBh
cnNlIGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQgdmFsdWVzLgotICAg
ICMgU2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgotICAgIGlmIG5vdCBvcHRpb25zLm1lc3NhZ2U6
Ci0gICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2NzJjJyAgICMgIkph
cGFuIiBpbiBKYXBhbmVzZQotCi0gICAgRWNob0NsaWVudChvcHRpb25zKS5ydW4oKQotCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvZWNob19ub2V4dF93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFk
ZjUxNTEyMjcxMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX25vZXh0X3dz
aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTMsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LV9HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9ucyBoZWFkZXIgdmFsdWUgaXMgcGFyc2VkIGludG8KLSAgICByZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zLiBweXdlYnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgotICAgIHByb2Nl
c3NvcnMgdXNpbmcgaXQgYmVmb3JlIGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBs
b29rcyBhdCBpdAotICAgIGFmdGVyIHRoZSBjYWxsLgotCi0gICAgVG8gcmVqZWN0IHJlcXVlc3Rl
ZCBleHRlbnNpb25zLCBjbGVhciB0aGUgcHJvY2Vzc29yIGxpc3QuCi0gICAgIiIiCi0KLSAgICBy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KLQotCi1kZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHku
IiIiCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0u
cmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6Ci0gICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQotICAg
ICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgotICAgICAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9t
ZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODY0NmMzMmNlYjUuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NCAr
MCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1fR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnll
JwotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICAj
IFRoaXMgZXhhbXBsZSBoYW5kbGVyIGFjY2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5fY2hl
Y2tfd3NoLnB5IGZvciBob3cKLSAgICAjIHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0ZWQg
c2NyaXB0cyBiYXNlZCBvbiBvcmlnaW4gdmFsdWUuCi0KLSAgICBwYXNzICAjIEFsd2F5cyBhY2Nl
cHQuCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGls
ZSBUcnVlOgotICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdl
KCkKLSAgICAgICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfR09PREJZRV9NRVNTQUdFOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJp
bmFyeT1UcnVlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2V2ZW50c291cmNlLmNnaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZGRmMjM3Y2Y3ZC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIENH
SSBzY3JpcHQgZ2VuZXJhdGVzIHRleHQvZXZlbnQtc3RyZWFtIHR5cGUgZGF0YSBzdHJlYW0gZm9y
IHRlc3RpbmcKLXRoZSBTZXJ2ZXItU2VudCBFdmVudHMuCi0KLUl0IHdpbGwgb25seSB3b3JrIGNv
cnJlY3RseSB3aXRoIEhUVFAgc2VydmVycyB0aGF0IGRvIG5vdCBidWZmZXIgdGhlIG91dHB1dCBv
ZgotQ0dJIHNjcmlwdHMuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotCi1zeXMu
c3Rkb3V0LndyaXRlKCdDb250ZW50LXR5cGU6IHRleHQvZXZlbnQtc3RyZWFtXHJcblxyXG4nKQot
Ci1pZCA9IDAKLQotd2hpbGUgVHJ1ZToKLSAgc3lzLnN0ZG91dC53cml0ZSgnZGF0YTogSGVsbG9c
clxuaWQ6ICVkXHJcblxyXG4nICUgaWQpCi0gIHN5cy5zdGRvdXQuZmx1c2goKQotCi0gIGlkID0g
aWQgKyAxCi0KLSAgdGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2V2ZW50
c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZlbnRzb3VyY2UuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTU5OGE4ODA3ZDFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2V2ZW50c291cmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08
IS0tCi1Db3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0K
LVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0o
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPCEtLQotU2ltcGxlIGV4YW1wbGUgb2Yg
dGhlIFNlcnZlci1TZW50IEV2ZW50cwotaHR0cDovL2Rldi53My5vcmcvaHRtbDUvZXZlbnRzb3Vy
Y2UvCi0KLUZvciBjb21wYXJpc29uIHdpdGggdGhlIFdlYlNvY2tldCBQcm90b2NvbCAmIEFQSS4K
LQotUnVuIHRoZSBweXdlYnNvY2tldCB3aXRoIHRoZSAtLWNnaV9wYXRoIHBhcmFtZXRlci4KLS0t
PgotCi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlNlcnZlci1TZW50IEV2ZW50cyBFeGFtcGxlPC90
aXRsZT4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRTb3VyY2UgPSBudWxsOwotCi1mdW5jdGlvbiBhZGRU
b0xvZyhkYXRhKSB7Ci0gIGxvZ0JveC52YWx1ZSArPSBkYXRhICsgJ1xuJzsKLSAgbG9nQm94LnNj
cm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIGxvZ0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBldmVudFNvdXJjZSAgPSBuZXcgRXZl
bnRTb3VyY2UoJy9ldmVudHNvdXJjZS5jZ2knKTsKLSAgZXZlbnRTb3VyY2Uub25vcGVuID0gZnVu
Y3Rpb24oKSB7Ci0gICAgYWRkVG9Mb2coJ29ub3BlbiAocmVhZHlTdGF0ZSA9ICcgKyBldmVudFNv
dXJjZS5yZWFkeVN0YXRlICsgJyknKTsKLSAgfQotICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKGV2ZW50LmRhdGEpOwotICB9Ci0gIGV2ZW50
U291cmNlLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKCdvbmVycm9y
IChyZWFkeVN0YXRlID0gJyArIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgKyAnKScpOwotICB9Ci19
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLTx0ZXh0YXJlYSBp
ZD0ibG9nIiByb3dzPSIxMCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08cCBzdHls
ZT0iZm9udC1zaXplOiBzbWFsbCI+Ci0gIE1ha2Ugc3VyZSB0aGF0IHB5d2Vic29ja2V0IGlzIHJ1
biB3aXRoIC0tY2dpX3BhdGggcGFyYW1ldGVyLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2ZldGNoX2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTA1
ZWI2N2E1NTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJr
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIw
MTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLWxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5j
b20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0tLT4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+
RmV0Y2ggQVBJIGJlbmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJm
ZXRjaF9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0g
bnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVy
bDogYWRkcmVzc0JveC52YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3go
J3ByaW50c2l6ZScpLAotICAgIG51bUZldGNoZXM6IGdldEludEZyb21JbnB1dCgnbnVtRmV0Y2hl
cycpLAotICAgIC8vIEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25z
OiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRp
b25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNp
emU6IGdldEludEZyb21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJr
IHdoZW4gdGhlIHNpemUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0
b3BUaHJlc2hvbGQ6IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIG11bHRp
cGxpZXJzOiBnZXRGbG9hdEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAotICAgIHZlcmlm
eURhdGE6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKSwKLSAgICBhZGRUb0xvZzog
YWRkVG9Mb2csCi0gICAgYWRkVG9TdW1tYXJ5OiBhZGRUb1N1bW1hcnksCi0gICAgbWVhc3VyZVZh
bHVlOiBtZWFzdXJlVmFsdWUsCi0gICAgbm90aWZ5QWJvcnQ6IG5vdGlmeUFib3J0Ci0gIH07Ci19
Ci0KLWZ1bmN0aW9uIG9uU2VuZEJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZp
ZygpOwotICBjb25maWcuZGF0YVR5cGUgPSBnZXRTdHJpbmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBl
cmFkaW8nKTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXIn
KSwgJ3NlbmRCZW5jaG1hcmsnKTsKLX0KLQotZnVuY3Rpb24gb25SZWNlaXZlQmVuY2htYXJrKCkg
ewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlwZSA9IGdldFN0
cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotICBkb0FjdGlvbihjb25maWcsIGdl
dEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFyaycpOwotfQotCi1m
dW5jdGlvbiBvbkJhdGNoQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7
Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdiYXRj
aEJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBjb25maWcgPSBn
ZXRDb25maWcoKTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3Jr
ZXInKSwgJ3N0b3AnKTsKLX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N1bW1hcnknKTsKLQotICAvLyBTcGVjaWFsIGFkZHJlc3Mgb2YgcHl3ZWJzb2NrZXQg
Zm9yIFhIUi9GZXRjaCBBUEkgYmVuY2htYXJrLgotICBhZGRyZXNzQm94LnZhbHVlID0gJy8wNzNi
ZTAwMWUxMDk1MDY5MmNjYmYzYTJhZDIxYzI0NSc7Ci0KLSAgYWRkVG9Mb2cod2luZG93Lm5hdmln
YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0gIGFkZFRvU3VtbWFyeSh3aW5kb3cubmF2
aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKLQotICBpbml0V29ya2VyKCdmZXRjaCcs
ICcnKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08
Zm9ybSBpZD0iYmVuY2htYXJrX2Zvcm0iPgotICB1cmwgcHJlZml4IDxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i
c2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9u
IiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5w
dXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmso
KSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3Ao
KSI+Ci0KLSAgPGJyLz4KLQotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUi
IGNoZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBw
ZXIgbWVzc2FnZTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRh
dGEiIGNoZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJl
bD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0i
d29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJlbD4KLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6
Ci0KLSAgPGJyLz4KLQotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiBm
ZXRjaCgpIHJlcXVlc3RzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51
bUZldGNoZXMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRk
Pk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIg
aWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgot
ICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3RkPgotICAgICAgPHRkPjxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIgdmFsdWU9IjAiPjwvdGQ+
Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RhcnQgc2l6ZTwvdGQ+Ci0gICAgICA8
dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVlPSIxMDI0MCI+PC90ZD4K
LSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9wIHRocmVzaG9sZDwvdGQ+Ci0gICAg
ICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xkIiB2YWx1ZT0iMTAyNDAw
MDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11bHRpcGxpZXJzPC90
ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxpZXJzIiB2YWx1ZT0i
NSwgMiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotCi0gIFNldCBkYXRhIHR5cGUKLSAg
PGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRpbyIKLSAgICAg
ICAgIGlkPSJkYXRhdHlwZXJhZGlvdGV4dCIKLSAgICAgICAgIHZhbHVlPSJ0ZXh0IgotICAgICAg
ICAgY2hlY2tlZD48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvdGV4dCI+dGV4dDwvbGFiZWw+Ci0g
IDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8iCi0gICAg
ICAgICBpZD0iZGF0YXR5cGVyYWRpb2Jsb2IiCi0gICAgICAgICB2YWx1ZT0iYmxvYiIKLSAgICAg
ICAgID48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvYmxvYiI+YmxvYjwvbGFiZWw+Ci0gIDxpbnB1
dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8iCi0gICAgICAgICBp
ZD0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVyIgotICAgICAgICAgdmFsdWU9ImFycmF5YnVmZmVy
IgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9hcnJheWJ1ZmZlciI+YXJyYXli
dWZmZXI8L2xhYmVsPgotPC9mb3JtPgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4KLSAgPHRleHRhcmVh
Ci0gICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48
L3RleHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJzdW1tYXJ5X2RpdiI+Ci0gIFN1bW1hcnkKLSAg
PHRleHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAw
JSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2PgotCi08ZGl2IGlkPSJub3RlX2RpdiI+Ci0g
IE5vdGU6Ci0gIDx1bD4KLSAgICA8bGk+RWZmZWN0IG9mIFJUVCBhbmQgdGltZSBzcGVudCBmb3Ig
QXJyYXlCdWZmZXIgY3JlYXRpb24gaW4gcmVjZWl2ZSBiZW5jaG1hcmtzIGFyZSBub3QgZWxpbWlu
YXRlZC48L2xpPgotICAgIDxsaT5UaGUgU3RkZGV2IGNvbHVtbiBzaG93cyBOYU4gd2hlbiB0aGUg
bnVtYmVyIG9mIGl0ZXJhdGlvbnMgaXMgc2V0IHRvIDEuPC9saT4KLSAgPC91bD4KLTwvZGl2Pgot
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2ht
YXJrLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTM5NTIxOTBhOGUwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2ZldGNoX2JlbmNobWFyay5qcworKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBs
aWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0
dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi12
YXIgaXNXb3JrZXIgPSB0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gInVuZGVmaW5lZCI7Ci0KLWlm
IChpc1dvcmtlcikgewotICAvLyBSdW5uaW5nIG9uIGEgd29ya2VyCi0gIGltcG9ydFNjcmlwdHMo
J3V0aWwuanMnLCAndXRpbF93b3JrZXIuanMnKTsKLX0KLQotLy8gTmFtZXNwYWNlIGZvciBob2xk
aW5nIGdsb2JhbHMuCi12YXIgYmVuY2htYXJrID0ge307Ci1iZW5jaG1hcmsuc3RhcnRUaW1lSW5N
cyA9IDA7Ci0KLXZhciB0aW1lcklEID0gbnVsbDsKLQotZnVuY3Rpb24gc2VuZEJlbmNobWFya1N0
ZXAoc2l6ZSwgY29uZmlnLCBpc1dhcm1VcCkgewotICB0aW1lcklEID0gbnVsbDsKLSAgYmVuY2ht
YXJrLnN0YXJ0VGltZUluTXMgPSBudWxsOwotCi0gIC8vIFByZXBhcmUgZGF0YS4KLSAgdmFyIGRh
dGFBcnJheSA9IFtdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZpZy5udW1GZXRjaGVzOyAr
K2kpIHsKLSAgICB2YXIgZGF0YSA9IG51bGw7Ci0gICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAn
YXJyYXlidWZmZXInIHx8Ci0gICAgICAgIGNvbmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAg
ICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAgICAgIGZpbGxBcnJheUJ1ZmZl
cihkYXRhLCAweDYxKTsKLQotICAgICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsK
LSAgICAgICAgZGF0YSA9IG5ldyBCbG9iKFtkYXRhXSk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgIGRhdGEgPSByZXBlYXRTdHJpbmcoJ2EnLCBzaXplKTsKLSAgICB9Ci0KLSAgICBkYXRh
QXJyYXkucHVzaChkYXRhKTsKLSAgfQotCi0gIC8vIFN0YXJ0IHRpbWUgbWVhc3VyaW5nLgotICBi
ZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gIC8vIFN0YXJ0IGZl
dGNoLgotICB2YXIgcHJvbWlzZXMgPSBbXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcu
bnVtRmV0Y2hlczsgKytpKSB7Ci0gICAgdmFyIGRhdGEgPSBkYXRhQXJyYXlbaV07Ci0gICAgdmFy
IHByb21pc2UgPSBmZXRjaChjb25maWcucHJlZml4VXJsICsgJ19zZW5kJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHttZXRob2Q6ICdQT1NUJywgYm9keTogZGF0YX0pCi0gICAgICAgIC50aGVu
KGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT0g
MjAwKSB7Ci0gICAgICAgICAgICBjb25maWcuYWRkVG9Mb2coJ0ZhaWxlZCAoc3RhdHVzPScgKyBy
ZXNwb25zZS5zdGF0dXMgKyAnKScpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIENoZWNrIGFuZCB3YXJuIGlmIHByb3h5IGlz
IGVuYWJsZWQuCi0gICAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdWaWEnKSAhPT0g
bnVsbCkgewotICAgICAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdXQVJOSU5HOiBwcm94eSBzZWVt
cyBlbmFibGVkLicpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoY29uZmlnLnZlcmlmeURh
dGEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkKLSAgICAgICAgICAgICAg
ICAudGhlbihmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICBpZiAoIXZlcmlmeUFj
a25vd2xlZGdlbWVudChjb25maWcsIHRleHQsIHNpemUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgcHJvbWlzZXMucHVzaChw
cm9taXNlKTsKLSAgfQotCi0gIC8vIEZpbmlzaCBhbmQgcmVwb3J0IHRpbWUgbWVhc3VyaW5nLgot
ICBQcm9taXNlLmFsbChwcm9taXNlcykKLSAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPT0gbnVsbCkgewotICAgICAgICAgIGNvbmZp
Zy5hZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0Jyk7Ci0gICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0
KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsCi0gICAgICAgICAgc2l6ZSAq
IGNvbmZpZy5udW1GZXRjaGVzLCBpc1dhcm1VcCk7Ci0gICAgICAgIHJ1bk5leHRUYXNrKGNvbmZp
Zyk7Ci0gICAgICB9KQotICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgY29uZmln
LmFkZFRvTG9nKCJFUlJPUjogIiArIGUpOwotICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsK
LSAgICAgIH0pOwotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJrU3RlcChzaXplLCBjb25m
aWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotICBiZW5jaG1hcmsuc3RhcnRUaW1l
SW5NcyA9IG51bGw7Ci0KLSAgLy8gU3RhcnQgdGltZSBtZWFzdXJpbmcuCi0gIGJlbmNobWFyay5z
dGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgLy8gU3RhcnQgZmV0Y2guCi0gIHZh
ciBwcm9taXNlcyA9IFtdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZpZy5udW1GZXRjaGVz
OyArK2kpIHsKLSAgICB2YXIgcmVxdWVzdDsKLSAgICBpZiAoY29uZmlnLm1ldGhvZEFuZENhY2hl
ID09PSAnR0VULU5PQ0FDSEUnKSB7Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoY29uZmln
LnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRub2NhY2hlPycgKyBzaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHttZXRob2Q6ICdHRVQnfSk7Ci0gICAgfSBlbHNlIGlmIChjb25maWcu
bWV0aG9kQW5kQ2FjaGUgPT09ICdHRVQtQ0FDSEUnKSB7Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJl
cXVlc3QoY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRjYWNoZT8nICsgc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7bWV0aG9kOiAnR0VUJ30pOwotICAgIH0gZWxzZSB7
Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge21ldGhvZDogJ1BPU1QnLCBib2R5OiBz
aXplICsgJyBub25lJ30pOwotICAgIH0KLSAgICB2YXIgcHJvbWlzZSA9IGZldGNoKHJlcXVlc3Qp
Ci0gICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgaWYgKHJlc3Bv
bnNlLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnRmFpbGVk
IChzdGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdCgpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBDaGVjayBhbmQgd2FybiBp
ZiBwcm94eSBpcyBlbmFibGVkLgotICAgICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzLmdldCgn
VmlhJykgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnV0FSTklORzog
cHJveHkgc2VlbXMgZW5hYmxlZC4nKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGNvbmZp
Zy5kYXRhVHlwZSA9PT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgICAgICAgcmV0dXJuIHJlc3Bv
bnNlLmFycmF5QnVmZmVyKCkKLSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihhcnJheUJ1
ZmZlcikgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIFthcnJheUJ1ZmZlci5ieXRlTGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAoIWNvbmZpZy52ZXJpZnlEYXRhIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHg2
MSkpXTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5k
YXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCkK
LSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihibG9iKSB7Ci0gICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJpZnlCbG9iKGNvbmZpZywgYmxvYiwgMHg2MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbihyZWNlaXZlZFNpemUsIHZlcmlmaWNhdGlvblJlc3VsdCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbcmVjZWl2ZWRTaXplLCB2ZXJp
ZmljYXRpb25SZXN1bHRdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZShbYmxvYi5zaXplLCB0cnVlXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKQotICAgICAgICAgICAgICAgIC50aGVu
KGZ1bmN0aW9uKHRleHQpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBbdGV4dC5sZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICghY29uZmlnLnZlcmlmeURhdGEgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHQgPT0gcmVwZWF0U3RyaW5nKCdhJywgdGV4dC5sZW5n
dGgpKV07Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfQotICAgICAgICB9KQotICAg
ICAgICAudGhlbihmdW5jdGlvbihyZWNlaXZlZFNpemVBbmRWZXJpZmljYXRpb25SZXN1bHQpIHsK
LSAgICAgICAgICB2YXIgcmVjZWl2ZWRTaXplID0gcmVjZWl2ZWRTaXplQW5kVmVyaWZpY2F0aW9u
UmVzdWx0WzBdOwotICAgICAgICAgIHZhciB2ZXJpZmljYXRpb25SZXN1bHQgPSByZWNlaXZlZFNp
emVBbmRWZXJpZmljYXRpb25SZXN1bHRbMV07Ci0gICAgICAgICAgaWYgKHJlY2VpdmVkU2l6ZSAh
PT0gc2l6ZSkgewotICAgICAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdFeHBlY3RlZCAnICsgc2l6
ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0IgYnV0IHJlY2VpdmVkICcgKyByZWNl
aXZlZFNpemUgKyAnQicpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIGlmICghdmVyaWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICAg
ICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTsKLSAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAgICAgIH0KLSAgICAgICAg
fSk7Ci0gICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTsKLSAgfQotCi0gIC8vIEZpbmlzaCBhbmQg
cmVwb3J0IHRpbWUgbWVhc3VyaW5nLgotICBQcm9taXNlLmFsbChwcm9taXNlcykKLSAgICAgIC50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPT0g
bnVsbCkgewotICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0
Jyk7Ci0gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGlt
ZUluTXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplICogY29uZmlnLm51bUZl
dGNoZXMsIGlzV2FybVVwKTsKLSAgICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgICAgIH0p
Ci0gICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgewotICAgICAgICBjb25maWcuYWRkVG9Mb2coIkVS
Uk9SOiAiICsgZSk7Ci0gICAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgfSk7Ci19
Ci0KLQotZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewotICByZXR1cm4gJygnICsg
Y29uZmlnLmRhdGFUeXBlICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0
YSArCi0gICAgJywgJyArIChpc1dvcmtlciA/ICdXb3JrZXInIDogJ01haW4nKSArCi0gICAgJywg
bnVtRmV0Y2hlcz0nICsgY29uZmlnLm51bUZldGNoZXMgKwotICAgICcsIG51bUl0ZXJhdGlvbnM9
JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAnLCBudW1XYXJtVXBJdGVyYXRpb25zPScg
KyBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucyArCi0gICAgJyknOwotfQotCi1mdW5jdGlvbiBz
dGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0KHRpbWVySUQpOwotCi0gIHJ1
bk5leHRUYXNrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGJhdGNoQmVuY2htYXJrKG9yaWdpbmFs
Q29uZmlnKSB7Ci0gIG9yaWdpbmFsQ29uZmlnLmFkZFRvTG9nKCdCYXRjaCBiZW5jaG1hcmsnKTsK
LQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0KLSAgdmFyIGRhdGFUeXBl
cyA9IFsndGV4dCcsICdibG9iJywgJ2FycmF5YnVmZmVyJ107Ci0gIHZhciBzdGVwRnVuY3MgPSBb
c2VuZEJlbmNobWFya1N0ZXAsIHJlY2VpdmVCZW5jaG1hcmtTdGVwXTsKLSAgdmFyIG5hbWVzID0g
WydTZW5kJywgJ1JlY2VpdmUnXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwRnVuY3MubGVu
Z3RoOyArK2kpIHsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFUeXBlcy5sZW5ndGg7ICsr
aikgewotICAgICAgdmFyIGNvbmZpZyA9IGNsb25lQ29uZmlnKG9yaWdpbmFsQ29uZmlnKTsKLSAg
ICAgIGNvbmZpZy5kYXRhVHlwZSA9IGRhdGFUeXBlc1tqXTsKLSAgICAgIGFkZFRhc2tzKGNvbmZp
Zywgc3RlcEZ1bmNzW2ldKTsKLSAgICAgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAot
ICAgICAgICAgIG5hbWVzW2ldICsgJyBiZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25m
aWcpKTsKLSAgICB9Ci0gIH0KLQotICBzdGFydEJlbmNobWFyayhjb25maWcpOwotfQotCi1mdW5j
dGlvbiBjbGVhbnVwKCkgewotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX3BlcmZv
cm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfcGVyZm9ybWFuY2Vf
dGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyZGYyZTdk
ZjRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX3BlcmZvcm1hbmNlX3Rl
c3RfaWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZl
dGNoX2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvaGFuZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjNGMwOWFhMDA5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLSMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUsIHVzZWQgYnkgc3RhbmRhbG9uZS5w
eSAtbSBvcHRpb24uCi0jIEEgbGluZSBzdGFydGluZyB3aXRoICcjJyBpcyBhIGNvbW1lbnQgbGlu
ZS4KLSMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlhc19yZXNvdXJjZV9wYXRoJyBhbmQgJ2V4
aXN0aW5nX3Jlc291cmNlX3BhdGgnCi0jIHNlcGFyYXRlZCBieSBzcGFjZXMuCi0jIEFsaWFzaW5n
IGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhlIGJvdHRvbSBvZiB0aGUgbGluZSwgYW5k
Ci0jICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0IGV4aXN0IGJlZm9yZSBpdCBpcyBhbGlh
c2VkLgotIyBGb3IgZXhhbXBsZSwKLSMgIC8gL2VjaG8KLSMgbWVhbnMgdGhhdCBhIHJlcXVlc3Qg
dG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVycyBmb3IgJy9lY2hvJy4KLS8gL2VjaG8K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2hzdHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2hz
dHNfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODYxOTQ2OTIxYWYuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaHN0c193c2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVu
ZCgKLSAgICAgICAgKCdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5JywgJ21heC1hZ2U9ODY0MDAn
KSkKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVl
c3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8nLCBiaW5hcnk9RmFsc2UpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZmU1ODFiNTRhNjQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAg
QEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1
dGlsCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAg
IHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJh
aXNlIG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdJbnRlbnRpb25hbCcpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlMDU3NjdhYjkzMmYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvb3JpZ2luX2NoZWNrX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0jIFRoaXMgZXhhbXBsZSBpcyBkZXJpdmVkIGZyb20gdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5LgotCi0KLWRlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0LndzX29yaWdpbiA9PSAn
aHR0cDovL2V4YW1wbGUuY29tJzoKLSAgICAgICAgcmV0dXJuCi0gICAgcmFpc2UgVmFsdWVFcnJv
cignVW5hY2NlcHRhYmxlIG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4pCi0KLQotZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9y
bWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhh
ZWRlOTdhMTQzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3BlcmZvcm1hbmNlX3Rl
c3RfaWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJl
bmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
cGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVz
dF9pZnJhbWUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWIyNWJkMWZmZC4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5q
cworKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLWZ1bmN0aW9uIHBlcmZUZXN0QWRkVG9M
b2codGV4dCkgewotICBwYXJlbnQucG9zdE1lc3NhZ2Uoeydjb21tYW5kJzogJ2xvZycsICd2YWx1
ZSc6IHRleHR9LCAnKicpOwotfQotCi1mdW5jdGlvbiBwZXJmVGVzdEFkZFRvU3VtbWFyeSh0ZXh0
KSB7Ci19Ci0KLWZ1bmN0aW9uIHBlcmZUZXN0TWVhc3VyZVZhbHVlKHZhbHVlKSB7Ci0gIHBhcmVu
dC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbWVhc3VyZVZhbHVlJywgJ3ZhbHVlJzogdmFsdWV9
LCAnKicpOwotfQotCi1mdW5jdGlvbiBwZXJmVGVzdE5vdGlmeUFib3J0KCkgewotICBwYXJlbnQu
cG9zdE1lc3NhZ2Uoeydjb21tYW5kJzogJ25vdGlmeUFib3J0J30sICcqJyk7Ci19Ci0KLWZ1bmN0
aW9uIGdldENvbmZpZ0ZvclBlcmZvcm1hbmNlVGVzdChjb25uZWN0aW9uVHlwZSwgZGF0YVR5cGUs
IGFzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeURhdGEs
IG51bUl0ZXJhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt
V2FybVVwSXRlcmF0aW9ucykgewotICB2YXIgcHJlZml4VXJsOwotICBpZiAoY29ubmVjdGlvblR5
cGUgPT09ICdXZWJTb2NrZXQnKSB7Ci0gICAgcHJlZml4VXJsID0gJ3dzOi8vJyArIGxvY2F0aW9u
Lmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInOwotICB9IGVsc2UgewotICAgIC8vIFhIUiBvciBm
ZXRjaAotICAgIHByZWZpeFVybCA9ICdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QgKyAnLzA3M2Jl
MDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1JzsKLSAgfQotCi0gIHJldHVybiB7Ci0gICAgcHJl
Zml4VXJsOiBwcmVmaXhVcmwsCi0gICAgcHJpbnRTaXplOiB0cnVlLAotICAgIG51bVhIUnM6IDEs
Ci0gICAgbnVtRmV0Y2hlczogMSwKLSAgICBudW1Tb2NrZXRzOiAxLAotICAgIC8vICsgMSBpcyBm
b3IgYSB3YXJtdXAgaXRlcmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgotICAgIG51
bUl0ZXJhdGlvbnM6IG51bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKLSAg
ICBudW1XYXJtVXBJdGVyYXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAotICAgIG1pblRvdGFs
OiAxMDI0MDAwMCwKLSAgICBzdGFydFNpemU6IDEwMjQwMDAwLAotICAgIHN0b3BUaHJlc2hvbGQ6
IDEwMjQwMDAwLAotICAgIG11bHRpcGxpZXJzOiBbMl0sCi0gICAgdmVyaWZ5RGF0YTogdmVyaWZ5
RGF0YSwKLSAgICBkYXRhVHlwZTogZGF0YVR5cGUsCi0gICAgYXN5bmM6IGFzeW5jLAotICAgIGFk
ZFRvTG9nOiBwZXJmVGVzdEFkZFRvTG9nLAotICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRU
b1N1bW1hcnksCi0gICAgbWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKLSAgICBu
b3RpZnlBYm9ydDogcGVyZlRlc3ROb3RpZnlBYm9ydAotICB9OwotfQotCi12YXIgZGF0YTsKLW9u
bWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKLSAgdmFyIGFjdGlvbjsKLSAgaWYgKG1lc3Nh
Z2UuZGF0YS5jb21tYW5kID09PSAnc3RhcnQnKSB7Ci0gICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsK
LSAgICBpbml0V29ya2VyKGRhdGEuY29ubmVjdGlvblR5cGUsICdodHRwOi8vJyArIGxvY2F0aW9u
Lmhvc3QpOwotICAgIGFjdGlvbiA9IGRhdGEuYmVuY2htYXJrTmFtZTsKLSAgfSBlbHNlIHsKLSAg
ICBhY3Rpb24gPSAnc3RvcCc7Ci0gIH0KLQotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnRm9yUGVy
Zm9ybWFuY2VUZXN0KGRhdGEuY29ubmVjdGlvblR5cGUsIGRhdGEuZGF0YVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hc3luYywgZGF0YS52ZXJp
ZnlEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bnVtSXRlcmF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOwotICBkb0FjdGlvbihjb25maWcsIGRhdGEuaXNX
b3JrZXIsIGFjdGlvbik7Ci19OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3B5d2Vic29ja2V0
LmNvbmYgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzM1ZDEzMGE1Yzg0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L3B5d2Vic29ja2V0LmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIwotIyBTYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhcGFjaGUyCi0j
Ci1Mb2dMZXZlbCBkZWJ1ZwotPElmTW9kdWxlIHB5dGhvbl9tb2R1bGU+Ci0gIFB5dGhvblBhdGgg
InN5cy5wYXRoK1snL21vZF9weXdlYnNvY2tldCddIgotICBQeXRob25PcHRpb24gbW9kX3B5d2Vi
c29ja2V0LmhhbmRsZXJfcm9vdCAvdmFyL3d3dwotICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29j
a2V0LmhhbmRsZXJfc2NhbiAvdmFyL3d3dy93cwotICAjUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNv
Y2tldC5hbGxvd19kcmFmdDc1IE9uCi0gIDxMb2NhdGlvbiAvd3M+Ci0gICAgUHl0aG9uSGVhZGVy
UGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICA8L0xv
Y2F0aW9uPgotPC9JZk1vZHVsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9zcGVjaWFsX2hl
YWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVhNTA4MGYxZjFhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBA
QAotIyEvdXNyL2Jpbi9weXRob24KLQotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZQotIyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZ
SU5HIGZpbGUgb3IgYXQKLSMgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3Vy
Y2UvbGljZW5zZXMvYnNkCi0KLSIiIkNHSSBzY3JpcHQgc2FtcGxlIGZvciB0ZXN0aW5nIGVmZmVj
dCBvZiBIVFRQIGhlYWRlcnMgb24gdGhlIG9yaWdpbiBwYWdlLgotCi1Ob3RlIHRoYXQgQ0dJIHNj
cmlwdHMgZG9uJ3Qgd29yayBvbiB0aGUgc3RhbmRhbG9uZSBweXdlYnNvY2tldCBydW5uaW5nIGlu
IFRMUwotbW9kZS4KLSIiIgotCi0KLXByaW50ICIiIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sCi1D
b250ZW50LVNlY3VyaXR5LVBvbGljeTogY29ubmVjdC1zcmMgc2VsZgotCi08aHRtbD4KLTxoZWFk
PgotPHRpdGxlPjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci12YXIgc29ja2V0
ID0gbmV3IFdlYlNvY2tldCgid3M6Ly9leGFtcGxlLmNvbSIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+IiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhh
bXBsZS91dGlsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWMwMDA3YjFlZGQu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDMyNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9yIGJvdGgg
bWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCi0KLXZhciByZXN1bHRzID0ge307Ci0KLWZ1bmN0aW9u
IGdldFRpbWVTdGFtcCgpIHsKLSAgcmV0dXJuIERhdGUubm93KCk7Ci19Ci0KLWZ1bmN0aW9uIGZv
cm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGltZVBlck1l
c3NhZ2VJbk1zLAotICAgIHNwZWVkLCBwcmludFNpemUpIHsKLSAgaWYgKHByaW50U2l6ZSkgewot
ICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKLSAgICAgICAgJ1x0JyArIHRpbWVQZXJNZXNzYWdl
SW5Ncy50b0ZpeGVkKDMpICsKLSAgICAgICAgKHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5NcyA9PSAt
MSA/Ci0gICAgICAgICAgICAnJyA6Ci0gICAgICAgICAgICAnXHQnICsgc3RkZGV2VGltZVBlck1l
c3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKLSAgICAgICAgJ1x0JyArIHNwZWVkLnRvRml4ZWQoMyk7
Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5nKCk7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKLSAgcmVzdWx0cyA9IHt9OwotfQotCi1mdW5jdGlv
biByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvU3VtbWFyeSgKLSAg
ICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRldiB0aW1lW21zXVx0U3BlZWRb
S0Ivc10nKTsKLSAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7Ci0gICAgdmFyIGF2ZXJhZ2VU
aW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90IC8gcmVzdWx0c1tzaXplXS5u
OwotICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCBhdmVyYWdlVGltZVBl
ck1lc3NhZ2VJbk1zKTsKLSAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlv
bgotICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBNYXRoLnNxcnQoCi0gICAgICAg
IChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0ubiAtCi0gICAgICAgICAgICBh
dmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcykgKgot
ICAgICAgICByZXN1bHRzW3NpemVdLm4gLwotICAgICAgICAocmVzdWx0c1tzaXplXS5uIC0gMSkp
OwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0SW5LaUIoCi0gICAgICAgIHNp
emUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5Ncywg
c3BlZWQsCi0gICAgICAgIHRydWUpKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjYWxjdWxhdGVTcGVl
ZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgewotICByZXR1cm4gTWF0aC5yb3VuZChzaXplIC8g
dGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKLX0KLQotZnVuY3Rpb24gY2FsY3VsYXRlQW5k
TG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAotICAgIGlz
V2FybVVwKSB7Ci0gIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGltZVN0YW1wKCkgLSBzdGFydFRp
bWVJbk1zOwotICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXplLCB0aW1l
U3BlbnRJbk1zKTsKLSAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9IHRpbWVTcGVudEluTXMgLyAo
dG90YWxTaXplIC8gc2l6ZSk7Ci0gIGlmICghaXNXYXJtVXApIHsKLSAgICBjb25maWcubWVhc3Vy
ZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7Ci0gICAgaWYgKCFyZXN1bHRzW3NpemVdKSB7Ci0g
ICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9OwotICAgIH0K
LSAgICByZXN1bHRzW3NpemVdLm4gKys7Ci0gICAgcmVzdWx0c1tzaXplXS5zdW1fdCArPSB0aW1l
UGVyTWVzc2FnZUluTXM7Ci0gICAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0gdGltZVBlck1lc3Nh
Z2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOwotICB9Ci0gIGNvbmZpZy5hZGRUb0xvZyhmb3Jt
YXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIC0xLCBzcGVlZCwKLSAgICAg
IGNvbmZpZy5wcmludFNpemUpKTsKLX0KLQotZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0ciwgY291
bnQpIHsKLSAgdmFyIGRhdGEgPSAnJzsKLSAgdmFyIGV4cENodW5rID0gc3RyOwotICB2YXIgcmVt
YWluID0gY291bnQ7Ci0gIHdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKHJlbWFpbiAlIDIpIHsKLSAg
ICAgIGRhdGEgKz0gZXhwQ2h1bms7Ci0gICAgICByZW1haW4gPSAocmVtYWluIC0gMSkgLyAyOwot
ICAgIH0gZWxzZSB7Ci0gICAgICByZW1haW4gLz0gMjsKLSAgICB9Ci0KLSAgICBpZiAocmVtYWlu
ID09IDApCi0gICAgICBicmVhazsKLQotICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBleHBDaHVu
azsKLSAgfQotICByZXR1cm4gZGF0YTsKLX0KLQotZnVuY3Rpb24gZmlsbEFycmF5QnVmZmVyKGJ1
ZmZlciwgYykgewotICB2YXIgaTsKLQotICB2YXIgdTMyQ29udGVudCA9IGMgKiAweDAxMDEwMTAx
OwotCi0gIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3RoIC8gNCk7
Ci0gIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxvY2tzKTsK
LSAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9tZS4gRG9uJ3QgdXNlIGl0IGZv
ciBsb29wIGNvbmRpdGlvbi4KLSAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytpKSB7Ci0g
ICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7Ci0gIH0KLQotICAvLyBGcmFjdGlvbgotICB2YXIg
dThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAqIDQ7Ci0gIHZhciB1OFZp
ZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tzKTsKLSAg
Zm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKLSAgICB1OFZpZXdbaV0gPSBjOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZlciwgZXhwZWN0ZWRDaGFyKSB7
Ci0gIHZhciBpOwotCi0gIHZhciBleHBlY3RlZFUzMlZhbHVlID0gZXhwZWN0ZWRDaGFyICogMHgw
MTAxMDEwMTsKLQotICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0ZUxlbmd0
aCAvIDQpOwotICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAsIHUzMkJs
b2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkgewotICAgIGlmICh1MzJW
aWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gIH0KLQotICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAq
IDQ7Ci0gIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQs
IHU4QmxvY2tzKTsKLSAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKLSAgICBpZiAo
dThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlCbG9iKGNvbmZpZywg
YmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKLSAgdmFyIHJlYWRlciA9IG5ldyBG
aWxlUmVhZGVyKGJsb2IpOwotICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewotICAgIGNv
bmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJlYWRlci5lcnJvci5tZXNzYWdl
KTsKLSAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7Ci0gIH0KLSAgcmVhZGVyLm9u
bG9hZGVuZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciByZXN1bHQgPSB2ZXJpZnlBcnJheUJ1ZmZl
cihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOwotICAgIGRvbmVDYWxsYmFjayhibG9iLnNp
emUsIHJlc3VsdCk7Ci0gIH0KLSAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpOwotfQot
Ci1mdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBtZXNzYWdlLCBzaXplKSB7
Ci0gIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgewotICAgIGNvbmZpZy5hZGRUb0xv
ZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdlKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLSAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1lc3NhZ2UpOwotICBpZiAoaXNO
YU4ocGFyc2VkQWNrKSkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sgdmFsdWU6
ICcgKyBtZXNzYWdlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKHBhcnNlZEFjayAh
PSBzaXplKSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKAotICAgICAgICAnRXhwZWN0ZWQgYWNrIGZv
ciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcgKyBwYXJzZWRBY2sgKwotICAg
ICAgICAnQicpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHJldHVybiB0cnVlOwotfQot
Ci1mdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKLSAgdmFyIG5ld09iaiA9IHt9OwotICBmb3Ig
KGtleSBpbiBvYmopIHsKLSAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldOwotICB9Ci0gIHJldHVy
biBuZXdPYmo7Ci19Ci0KLXZhciB0YXNrcyA9IFtdOwotCi1mdW5jdGlvbiBydW5OZXh0VGFzayhj
b25maWcpIHsKLSAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOwotICBpZiAodGFzayA9PSB1bmRl
ZmluZWQpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7Ci0gICAgY2xlYW51cCgp
OwotICAgIHJldHVybjsKLSAgfQotICB0aW1lcklEID0gc2V0VGltZW91dCh0YXNrLCAwKTsKLX0K
LQotZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7Ci0gIHZhciBsZWdlbmQgPSAn
JwotICBpZiAoY29uZmlnLnByaW50U2l6ZSkKLSAgICBsZWdlbmQgPSAnTWVzc2FnZSBzaXplIGlu
IEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOwotICBsZWdlbmQgKz0gJ1NwZWVkIGluIGtCL3Mn
OwotICByZXR1cm4gbGVnZW5kOwotfQotCi1mdW5jdGlvbiBhZGRUYXNrcyhjb25maWcsIHN0ZXBG
dW5jKSB7Ci0gIGZvciAodmFyIGkgPSAwOwotICAgICAgaSA8IGNvbmZpZy5udW1XYXJtVXBJdGVy
YXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgewotICAgIHZhciBtdWx0aXBsaWVy
SW5kZXggPSAwOwotICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwotICAgICAg
ICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKLSAgICAgICAgICsrbXVsdGlwbGllcklu
ZGV4KSB7Ci0gICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCi0gICAgICAgICAgbnVsbCwK
LSAgICAgICAgICBzaXplLAotICAgICAgICAgIGNvbmZpZywKLSAgICAgICAgICBpIDwgY29uZmln
Lm51bVdhcm1VcEl0ZXJhdGlvbnMpOwotICAgICAgdGFza3MucHVzaCh0YXNrKTsKLSAgICAgIHZh
ciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWwotICAgICAgICBtdWx0aXBsaWVySW5k
ZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKLSAgICAgIGlmIChtdWx0aXBsaWVyIDw9
IDEpIHsKLSAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIG11bHRpcGxpZXIgJyArIG11
bHRpcGxpZXIpOwotICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOwotICAgICAgfQotICAgICAgc2l6ZSA9IE1h
dGguY2VpbChzaXplICogbXVsdGlwbGllcik7Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIGFk
ZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgewotICB0YXNrcy5wdXNoKGZ1bmN0
aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAgICAgIGNvbmZpZy5hZGRUb1N1bW1hcnko
dGl0bGUpOwotICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKLSAgICAgIGNsZWFyQXZl
cmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0pOwotfQotCi1mdW5j
dGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgewotICBjb25maWcuYWRkVG9Mb2coJ1NlbmQgYmVu
Y2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsK
LQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZp
Zywgc2VuZEJlbmNobWFya1N0ZXApOwotICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywg
J1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVu
Y2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKSB7
Ci0gIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRv
TG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFy
QXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJrU3RlcCk7
Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAotICAgICAgJ1JlY2VpdmUgQmVuY2ht
YXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZp
Zyk7Ci19Ci0KLWZ1bmN0aW9uIHN0b3AoY29uZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklE
KTsKLSAgdGltZXJJRCA9IG51bGw7Ci0gIHRhc2tzID0gW107Ci0gIGNvbmZpZy5hZGRUb0xvZygn
U3RvcHBlZCcpOwotICBjbGVhbnVwKCk7Ci19Ci0KLXZhciB3b3JrZXI7Ci0KLWZ1bmN0aW9uIGlu
aXRXb3JrZXIoY29ubmVjdGlvblR5cGUsIG9yaWdpbikgewotICB2YXIgc2NyaXB0UGF0aCA9Ci0g
ICAgY29ubmVjdGlvblR5cGUgPT09ICdXZWJTb2NrZXQnID8gJy9iZW5jaG1hcmsuanMnIDoKLSAg
ICBjb25uZWN0aW9uVHlwZSA9PT0gJ1hIUicgPyAnL3hocl9iZW5jaG1hcmsuanMnIDoKLSAgICAn
L2ZldGNoX2JlbmNobWFyay5qcyc7IC8vIGNvbm5lY3Rpb25UeXBlID09PSAnZmV0Y2gnCi0gIHdv
cmtlciA9IG5ldyBXb3JrZXIob3JpZ2luICsgc2NyaXB0UGF0aCk7Ci19Ci0KLWZ1bmN0aW9uIGRv
QWN0aW9uKGNvbmZpZywgaXNXaW5kb3dUb1dvcmtlciwgYWN0aW9uKSB7Ci0gIGlmIChpc1dpbmRv
d1RvV29ya2VyKSB7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGFkZFRvTG9nLCBh
ZGRUb1N1bW1hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVWYWx1
ZSwgbm90aWZ5QWJvcnQsIG1lc3NhZ2UpIHsKLSAgICAgIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9
PT0gJ2FkZFRvTG9nJykKLSAgICAgICAgYWRkVG9Mb2cobWVzc2FnZS5kYXRhLmRhdGEpOwotICAg
ICAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdhZGRUb1N1bW1hcnknKQotICAgICAg
ICBhZGRUb1N1bW1hcnkobWVzc2FnZS5kYXRhLmRhdGEpOwotICAgICAgZWxzZSBpZiAobWVzc2Fn
ZS5kYXRhLnR5cGUgPT09ICdtZWFzdXJlVmFsdWUnKQotICAgICAgICBtZWFzdXJlVmFsdWUobWVz
c2FnZS5kYXRhLmRhdGEpOwotICAgICAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdu
b3RpZnlBYm9ydCcpCi0gICAgICAgIG5vdGlmeUFib3J0KCk7Ci0gICAgfS5iaW5kKHVuZGVmaW5l
ZCwgY29uZmlnLmFkZFRvTG9nLCBjb25maWcuYWRkVG9TdW1tYXJ5LAotICAgICAgICAgICBjb25m
aWcubWVhc3VyZVZhbHVlLCBjb25maWcubm90aWZ5QWJvcnQpOwotICAgIGNvbmZpZy5hZGRUb0xv
ZyA9IHVuZGVmaW5lZDsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gdW5kZWZpbmVkOwotICAg
IGNvbmZpZy5tZWFzdXJlVmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAgY29uZmlnLm5vdGlmeUFib3J0
ID0gdW5kZWZpbmVkOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogYWN0aW9uLCBjb25m
aWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAgIGlmIChhY3Rpb24gPT09ICdzZW5kQmVuY2ht
YXJrJykKLSAgICAgIHNlbmRCZW5jaG1hcmsoY29uZmlnKTsKLSAgICBlbHNlIGlmIChhY3Rpb24g
PT09ICdyZWNlaXZlQmVuY2htYXJrJykKLSAgICAgIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKTsK
LSAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdiYXRjaEJlbmNobWFyaycpCi0gICAgICBiYXRjaEJl
bmNobWFyayhjb25maWcpOwotICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3N0b3AnKQotICAgICAg
c3RvcChjb25maWcpOwotICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbF9tYWlu
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL3V0aWxfbWFpbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDcxZWQ2M2ZiNWQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWxf
bWFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJz
Lmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLS8vIFV0aWxpdGllcyBmb3Ig
ZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgbWFpbiB0aHJlYWQgb25seSkuCi0KLXZhciBs
b2dCb3ggPSBudWxsOwotdmFyIHF1ZXVlZExvZyA9ICcnOwotCi12YXIgc3VtbWFyeUJveCA9IG51
bGw7Ci0KLWZ1bmN0aW9uIHF1ZXVlTG9nKGxvZykgewotICBxdWV1ZWRMb2cgKz0gbG9nICsgJ1xu
JzsKLX0KLQotZnVuY3Rpb24gYWRkVG9Mb2cobG9nKSB7Ci0gIGxvZ0JveC52YWx1ZSArPSBxdWV1
ZWRMb2c7Ci0gIHF1ZXVlZExvZyA9ICcnOwotICBsb2dCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsK
LSAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRvU3VtbWFy
eShsb2cpIHsKLSAgc3VtbWFyeUJveC52YWx1ZSArPSBsb2cgKyAnXG4nOwotICBzdW1tYXJ5Qm94
LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLS8vIHZhbHVlOiBleGVjdXRpb24gdGltZSBpbiBt
aWxsaXNlY29uZHMuCi0vLyBjb25maWcubWVhc3VyZVZhbHVlIGlzIGludGVuZGVkIHRvIGJlIHVz
ZWQgaW4gUGVyZm9ybWFuY2UgVGVzdHMuCi0vLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZv
cm1hbmNlVGVzdC4KLWZ1bmN0aW9uIG1lYXN1cmVWYWx1ZSh2YWx1ZSkgewotfQotCi0vLyBjb25m
aWcubm90aWZ5QWJvcnQgaXMgY2FsbGVkIHdoZW4gdGhlIGJlbmNobWFyayBmYWlsZWQgYW5kIGFi
b3J0ZWQsIGFuZAotLy8gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBQZXJmb3JtYW5jZSBUZXN0cy4K
LS8vIERvIG5vdGhpbmcgaGVyZSBpbiBub24tUGVyZm9ybWFuY2VUZXN0LgotZnVuY3Rpb24gbm90
aWZ5QWJvcnQoKSB7Ci19Ci0KLWZ1bmN0aW9uIGdldEludEZyb21JbnB1dChpZCkgewotICByZXR1
cm4gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlKTsKLX0KLQotZnVu
Y3Rpb24gZ2V0U3RyaW5nRnJvbVJhZGlvQm94KG5hbWUpIHsKLSAgdmFyIGxpc3QgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYmVuY2htYXJrX2Zvcm0nKVtuYW1lXTsKLSAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQotICAgIGlmIChsaXN0Lml0ZW0oaSkuY2hlY2tlZCkK
LSAgICAgIHJldHVybiBsaXN0Lml0ZW0oaSkudmFsdWU7Ci0gIHJldHVybiB1bmRlZmluZWQ7Ci19
Ci1mdW5jdGlvbiBnZXRCb29sRnJvbUNoZWNrQm94KGlkKSB7Ci0gIHJldHVybiBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZCkuY2hlY2tlZDsKLX0KLQotZnVuY3Rpb24gZ2V0SW50QXJyYXlGcm9t
SW5wdXQoaWQpIHsKLSAgdmFyIHN0ckFycmF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQp
LnZhbHVlLnNwbGl0KCcsJyk7Ci0gIHJldHVybiBzdHJBcnJheS5tYXAoZnVuY3Rpb24oc3RyKSB7
IHJldHVybiBwYXJzZUludChzdHIsIDEwKTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIGdldEZsb2F0QXJy
YXlGcm9tSW5wdXQoaWQpIHsKLSAgdmFyIHN0ckFycmF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoaWQpLnZhbHVlLnNwbGl0KCcsJyk7Ci0gIHJldHVybiBzdHJBcnJheS5tYXAocGFyc2VGbG9h
dCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbF93b3JrZXIuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvdXRpbF93b3JrZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZGNm
NDQxNzI5OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91dGlsX3dvcmtlci5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5j
b20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBh
cHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2VyIHRocmVhZHMgb25seSkuCi0KLW9ubWVzc2FnZSA9
IGZ1bmN0aW9uIChtZXNzYWdlKSB7Ci0gIHZhciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmln
OwotICBjb25maWcuYWRkVG9Mb2cgPSBmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICBwb3N0TWVzc2Fn
ZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTogdGV4dH0pOyB9OwotICBjb25maWcuYWRkVG9TdW1t
YXJ5ID0gZnVuY3Rpb24odGV4dCkgewotICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1
bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Ci0gIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlv
bih2YWx1ZSkgewotICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRh
OiB2YWx1ZX0pOyB9OwotICBjb25maWcubm90aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1l
c3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9KTsgfTsKLQotICBkb0FjdGlvbihjb25maWcsIGZh
bHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Ci19OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwZjkzYjhiNjk1NWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9h
Ym9ydF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvYmVuY2hfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVy
X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9jbG9zZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY29uc29s
ZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL2Nvb2tpZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19j
bGllbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
ZWNob193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZlbnRzb3VyY2UuY2dpCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2V2ZW50c291cmNlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJrLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJrLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX3BlcmZv
cm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2hzdHNfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dz
aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3Bl
cmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVz
dF9pZnJhbWUuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWwuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvdXRpbF9tYWluLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWxfd29ya2VyLmpzCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3hocl9iZW5jaG1hcmsuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL3hocl9ldmVudF9sb2dnZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfcGVy
Zm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9i
ZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMGQyMGM5Y2NiNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAs
MCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2Vy
dmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08
dGl0bGU+WE1MSHR0cFJlcXVlc3QgYmVuY2htYXJrPC90aXRsZT4KLTxzY3JpcHQgc3JjPSJ1dGls
X21haW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Inhocl9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRy
ZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAg
IHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9t
Q2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAgIG51bVhIUnM6IGdldEludEZyb21JbnB1dCgnbnVt
WEhScycpLAotICAgIGFzeW5jOiBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycpLAotICAgIC8v
IEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9t
SW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRG
cm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNpemU6IGdldEludEZy
b21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNp
emUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6
IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIG11bHRpcGxpZXJzOiBnZXRG
bG9hdEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAotICAgIHZlcmlmeURhdGE6IGdldEJv
b2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKSwKLSAgICBtZXRob2RBbmRDYWNoZTogZ2V0U3Ry
aW5nRnJvbVJhZGlvQm94KCdtZXRob2RhbmRjYWNoZScpLAotICAgIGFkZFRvTG9nOiBhZGRUb0xv
ZywKLSAgICBhZGRUb1N1bW1hcnk6IGFkZFRvU3VtbWFyeSwKLSAgICBtZWFzdXJlVmFsdWU6IG1l
YXN1cmVWYWx1ZSwKLSAgICBub3RpZnlBYm9ydDogbm90aWZ5QWJvcnQKLSAgfTsKLX0KLQotZnVu
Y3Rpb24gb25TZW5kQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0g
IGNvbmZpZy5kYXRhVHlwZSA9IGdldFN0cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycp
OwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAnc2Vu
ZEJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvblJlY2VpdmVCZW5jaG1hcmsoKSB7Ci0gIHZh
ciBjb25maWcgPSBnZXRDb25maWcoKTsKLSAgY29uZmlnLmRhdGFUeXBlID0gZ2V0U3RyaW5nRnJv
bVJhZGlvQm94KCdkYXRhdHlwZXJhZGlvJyk7Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZy
b21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZlQmVuY2htYXJrJyk7Ci19Ci0KLWZ1bmN0aW9u
IG9uQmF0Y2hCZW5jaG1hcmsoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLSAgZG9B
Y3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ2JhdGNoQmVuY2ht
YXJrJyk7Ci19Ci0KLWZ1bmN0aW9uIG9uU3RvcCgpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZp
ZygpOwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAn
c3RvcCcpOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewotICBhZGRyZXNzQm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xvZycpOwotCi0gIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3VtbWFyeScpOwotCi0gIC8vIFNwZWNpYWwgYWRkcmVzcyBvZiBweXdlYnNvY2tldCBmb3IgWEhS
IGJlbmNobWFyay4KLSAgYWRkcmVzc0JveC52YWx1ZSA9ICcvMDczYmUwMDFlMTA5NTA2OTJjY2Jm
M2EyYWQyMWMyNDUnOwotCi0gIGFkZFRvTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRv
TG93ZXJDYXNlKCkpOwotICBhZGRUb1N1bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQu
dG9Mb3dlckNhc2UoKSk7Ci0KLSAgaW5pdFdvcmtlcignWEhSJywgJycpOwotfQotPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxmb3JtIGlkPSJiZW5jaG1hcmtf
Zm9ybSI+Ci0gIHVybCBwcmVmaXggPGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXpl
PSI0MCI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzZW5kIiBvbmNsaWNrPSJvblNl
bmRCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJyZWNlaXZlIiBv
bmNsaWNrPSJvblJlY2VpdmVCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZh
bHVlPSJiYXRjaCIgb25jbGljaz0ib25CYXRjaEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9
ImJ1dHRvbiIgdmFsdWU9InN0b3AiIG9uY2xpY2s9Im9uU3RvcCgpIj4KLQotICA8YnIvPgotCi0g
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InByaW50c2l6ZSIgY2hlY2tlZD4KLSAgPGxhYmVs
IGZvcj0icHJpbnRzaXplIj5QcmludCBzaXplIGFuZCB0aW1lIHBlciBtZXNzYWdlPC9sYWJlbD4K
LSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idmVyaWZ5ZGF0YSIgY2hlY2tlZD4KLSAgPGxh
YmVsIGZvcj0idmVyaWZ5ZGF0YSI+VmVyaWZ5IGRhdGE8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0i
Y2hlY2tib3giIGlkPSJ3b3JrZXIiPgotICA8bGFiZWwgZm9yPSJ3b3JrZXIiPlJ1biBvbiB3b3Jr
ZXI8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJhc3luYyIgY2hlY2tlZD4K
LSAgPGxhYmVsIGZvcj0iYXN5bmMiPkFzeW5jPC9sYWJlbD48YnI+Ci0gIChSZWNlaXZlICZhbXA7
JmFtcDsgTm9uLVdvcmtlciAmYW1wOyZhbXA7IFN5bmMgaXMgbm90IHN1cHBvcnRlZCBieSBzcGVj
KQotCi0gIDxici8+Ci0KLSAgUGFyYW1ldGVyczoKLQotICA8YnIvPgotCi0gIDx0YWJsZT4KLSAg
ICA8dHI+Ci0gICAgICA8dGQ+TnVtIFhIUnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0ibnVtWEhScyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0g
ICAgICA8dGQ+TnVtYmVyIG9mIGl0ZXJhdGlvbnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0ibnVtaXRlcmF0aW9ucyIgdmFsdWU9IjEiPjwvdGQ+Ci0gICAgPC90cj4KLSAg
ICA8dHI+Ci0gICAgICA8dGQ+TnVtYmVyIG9mIHdhcm0tdXAgaXRlcmF0aW9uczwvdGQ+Ci0gICAg
ICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW13YXJtdXBpdGVyYXRpb25zIiB2YWx1ZT0i
MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdGFydCBzaXplPC90ZD4K
LSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0YXJ0c2l6ZSIgdmFsdWU9IjEwMjQw
Ij48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0b3AgdGhyZXNob2xkPC90
ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0b3B0aHJlc2hvbGQiIHZhbHVl
PSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TXVsdGlw
bGllcnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibXVsdGlwbGllcnMi
IHZhbHVlPSI1LCAyIj48L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0KLSAgU2V0IGRhdGEg
dHlwZQotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJkYXRhdHlwZXJhZGlv
IgotICAgICAgICAgaWQ9ImRhdGF0eXBlcmFkaW90ZXh0IgotICAgICAgICAgdmFsdWU9InRleHQi
Ci0gICAgICAgICBjaGVja2VkPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW90ZXh0Ij50ZXh0PC9s
YWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRp
byIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYmxvYiIKLSAgICAgICAgIHZhbHVlPSJibG9i
IgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9ibG9iIj5ibG9iPC9sYWJlbD4K
LSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRpbyIKLSAg
ICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYXJyYXlidWZmZXIiCi0gICAgICAgICB2YWx1ZT0iYXJy
YXlidWZmZXIiCi0gICAgICAgICA+PGxhYmVsIGZvcj0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVy
Ij5hcnJheWJ1ZmZlcjwvbGFiZWw+Ci0KLSAgPGJyPgotICBTZXQgSFRUUCBtZXRob2QgYW5kIGNh
Y2hlIGNvbnRyb2wKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0ibWV0aG9k
YW5kY2FjaGUiCi0gICAgICAgICBpZD0ibWV0aG9kYW5kY2FjaGVQT1NUIgotICAgICAgICAgdmFs
dWU9IlBPU1QiCi0gICAgICAgICBjaGVja2VkPjxsYWJlbCBmb3I9Im1ldGhvZGFuZGNhY2hlUE9T
VCI+UE9TVCAoTm8gQ2FjaGUpPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAg
ICAgbmFtZT0ibWV0aG9kYW5kY2FjaGUiCi0gICAgICAgICBpZD0ibWV0aG9kYW5kY2FjaGVHRVRO
T0NBQ0hFIgotICAgICAgICAgdmFsdWU9IkdFVC1OT0NBQ0hFIgotICAgICAgICAgPjxsYWJlbCBm
b3I9Im1ldGhvZGFuZGNhY2hlR0VUTk9DQUNIRSI+R0VUIChObyBDYWNoZSk8L2xhYmVsPgotICA8
aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJtZXRob2RhbmRjYWNoZSIKLSAgICAg
ICAgIGlkPSJtZXRob2RhbmRjYWNoZUdFVENBQ0hFIgotICAgICAgICAgdmFsdWU9IkdFVC1DQUNI
RSIKLSAgICAgICAgID48bGFiZWwgZm9yPSJtZXRob2RhbmRjYWNoZUdFVENBQ0hFIj5HRVQgKENh
Y2hlKTwvbGFiZWw+Ci0gIDxicj4KLSAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogODAlIj4oQ2Fj
aGUgY29udHJvbDogcmVjZWl2ZSBvbmx5LiBDYWNoZSBpcyB2YWxpZCBmb3IgMTAgc2Vjb25kcy4g
VGhpcyBjb25maWcgY29udHJvbHMgQ2FjaGUtY29udHJvbCBIVFRQIHJlc3BvbnNlIGhlYWRlci4g
QnJvd3NlcnMgbWlnaHQgbm90IGNhY2hlIGRhdGEgZS5nLiB3aGVuIGl0IGlzIGxhcmdlKTwvc3Bh
bj4KLTwvZm9ybT4KLQotPGRpdiBpZD0ibG9nX2RpdiI+Ci0gIDx0ZXh0YXJlYQotICAgICAgaWQ9
ImxvZyIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
LTwvZGl2PgotPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgotICBTdW1tYXJ5Ci0gIDx0ZXh0YXJlYQot
ICAgICAgaWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5
PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLQotPGRpdiBpZD0ibm90ZV9kaXYiPgotICBOb3RlOgotICA8
dWw+Ci0gICAgPGxpPkVmZmVjdCBvZiBSVFQgYW5kIHRpbWUgc3BlbnQgZm9yIEFycmF5QnVmZmVy
IGNyZWF0aW9uIGluIHJlY2VpdmUgYmVuY2htYXJrcyBhcmUgbm90IGVsaW1pbmF0ZWQuPC9saT4K
LSAgICA8bGk+VGhlIFN0ZGRldiBjb2x1bW4gc2hvd3MgTmFOIHdoZW4gdGhlIG51bWJlciBvZiBp
dGVyYXRpb25zIGlzIHNldCB0byAxLjwvbGk+Ci0gIDwvdWw+Ci08L2Rpdj4KLQotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1hcmsuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L2V4YW1wbGUveGhyX2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTRhOTdlOGZiODNlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1h
cmsuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTQg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotLy8gbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0vLyBodHRwczovL2RldmVsb3BlcnMu
Z29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQotdmFyIGlzV29ya2VyID0gdHlw
ZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiOwotCi1pZiAoaXNXb3JrZXIpIHsKLSAg
Ly8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRzKCd1dGlsLmpzJywgJ3V0aWxf
d29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9sZGluZyBnbG9iYWxzLgotdmFy
IGJlbmNobWFyayA9IHt9OwotYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSAwOwotCi12YXIgeGhy
cyA9IFtdOwotCi12YXIgdGltZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lBbGxYSFJz
KCkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB4aHJz
W2ldLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0gICAgLy8gQWJvcnQgWEhScyBpZiB0aGV5
IGFyZSBub3QgeWV0IERPTkUgc3RhdGUuCi0gICAgLy8gQ2FsbGluZyBhYm9ydCgpIGhlcmUgKGku
ZS4gaW4gb25yZWFkeXN0YXRlY2hhbmdlIGhhbmRsZXIpIAotICAgIC8vIGNhdXNlcyAiTmV0d29y
a0Vycm9yIiBtZXNzYWdlcyBpbiBEZXZUb29scyBpbiBzeW5jIG1vZGUsCi0gICAgLy8gZXZlbiBp
ZiBpdCBpcyBhZnRlciB0cmFuc2l0aW9uIHRvIERPTkUgc3RhdGUuCi0gICAgaWYgKHhocnNbaV0u
cmVhZHlTdGF0ZSAhPSBYTUxIdHRwUmVxdWVzdC5ET05FKQotICAgICAgeGhyc1tpXS5hYm9ydCgp
OwotICB9Ci0gIHhocnMgPSBbXTsKLSAgLy8gZ2MoKSBtaWdodCBiZSBuZWVkZWQgZm9yIENocm9t
ZS9CbG9iCi19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZpZywgaXNX
YXJtVXApIHsKLSAgdGltZXJJRCA9IG51bGw7Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PSBudWxsOwotICB2YXIgdG90YWxTaXplID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0K
LSAgdmFyIG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYg
KHRoaXMucmVhZHlTdGF0ZSAhPSB0aGlzLkRPTkUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAodGhpcy5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0Zh
aWxlZCAoc3RhdHVzPScgKyB0aGlzLnN0YXR1cyArICcpJyk7Ci0gICAgICBkZXN0cm95QWxsWEhS
cygpOwotICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmCi0gICAgICAgICF2ZXJpZnlBY2tub3dsZWRn
ZW1lbnQoY29uZmlnLCB0aGlzLnJlc3BvbnNlLCBzaXplKSkgewotICAgICAgZGVzdHJveUFsbFhI
UnMoKTsKLSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRv
dGFsU2l6ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChiZW5jaG1hcmsuc3Rh
cnRUaW1lSW5NcyA9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ3N0YXJ0VGltZUlu
TXMgbm90IHNldCcpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENoZWNrIGFuZCB3YXJu
IGlmIHByb3h5IGlzIGVuYWJsZWQuCi0gICAgaWYgKHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoJ1Zp
YScpICE9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1dBUk5JTkc6IHByb3h5IHNl
ZW1zIGVuYWJsZWQuJyk7Ci0gICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZp
Zywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKLSAgICAgICAgaXNX
YXJtVXApOwotCi0gICAgZGVzdHJveUFsbFhIUnMoKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZp
Zyk7Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtWEhSczsgKytpKSB7
Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyOwotICAgIHhocnMucHVzaCh4aHIp
OwotICB9Ci0KLSAgdmFyIGRhdGFBcnJheSA9IFtdOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwg
eGhycy5sZW5ndGg7ICsraSkgewotICAgIHZhciBkYXRhID0gbnVsbDsKLSAgICBpZiAoY29uZmln
LmRhdGFUeXBlID09ICdhcnJheWJ1ZmZlcicgfHwKLSAgICAgICAgY29uZmlnLmRhdGFUeXBlID09
ICdibG9iJykgewotICAgICAgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgICAg
ZmlsbEFycmF5QnVmZmVyKGRhdGEsIDB4NjEpOwotCi0gICAgICBpZiAoY29uZmlnLmRhdGFUeXBl
ID09ICdibG9iJykgewotICAgICAgICBkYXRhID0gbmV3IEJsb2IoW2RhdGFdKTsKLSAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgZGF0YSA9IHJlcGVhdFN0cmluZygnYScsIHNpemUpOwotICAg
IH0KLQotICAgIGRhdGFBcnJheS5wdXNoKGRhdGEpOwotICB9Ci0KLQotICBiZW5jaG1hcmsuc3Rh
cnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotICB0b3RhbFNpemUgPSBzaXplICogeGhycy5s
ZW5ndGg7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAg
dmFyIGRhdGEgPSBkYXRhQXJyYXlbaV07Ci0gICAgdmFyIHhociA9IHhocnNbaV07Ci0gICAgeGhy
Lm9wZW4oJ1BPU1QnLCBjb25maWcucHJlZml4VXJsICsgJ19zZW5kJywgY29uZmlnLmFzeW5jKTsK
LSAgICB4aHIuc2VuZChkYXRhKTsKLSAgfQotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJr
U3RlcChzaXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIGJl
bmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVsbDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZh
ciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZhciBjaGVja1Jlc3VsdEFuZENvbnRpbnVlID0gZnVu
Y3Rpb24gKGJ5dGVzUmVjZWl2ZWQsIHZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgIGlmICghdmVy
aWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlm
aWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICBjb25maWcu
bm90aWZ5QWJvcnQoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b3RhbFJlcGxpZWQg
Kz0gYnl0ZXNSZWNlaXZlZDsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PT0gbnVsbCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdzdGFydFRpbWVJbk1zIG5vdCBzZXQn
KTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmln
LCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAotICAgICAgICBpc1dh
cm1VcCk7Ci0KLSAgICBkZXN0cm95QWxsWEhScygpOwotCi0gICAgcnVuTmV4dFRhc2soY29uZmln
KTsKLSAgfQotCi0gIHZhciBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKCkg
ewotICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT0gdGhpcy5ET05FKSB7Ci0gICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKHRoaXMuc3RhdHVzICE9IDIwMCkgewotICAgICAgY29uZmlnLmFk
ZFRvTG9nKCdGYWlsZWQgKHN0YXR1cz0nICsgdGhpcy5zdGF0dXMgKyAnKScpOwotICAgICAgZGVz
dHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIENoZWNrIGFuZCB3YXJuIGlmIHByb3h5IGlzIGVuYWJsZWQuCi0g
ICAgaWYgKHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoJ1ZpYScpICE9PSBudWxsKSB7Ci0gICAgICBj
b25maWcuYWRkVG9Mb2coJ1dBUk5JTkc6IHByb3h5IHNlZW1zIGVuYWJsZWQuJyk7Ci0gICAgfQot
Ci0gICAgdmFyIGJ5dGVzUmVjZWl2ZWQgPSAtMTsKLSAgICBpZiAodGhpcy5yZXNwb25zZVR5cGUg
PT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2Uu
Ynl0ZUxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVzcG9uc2VUeXBlID09ICdibG9iJykg
ewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2Uuc2l6ZTsKLSAgICB9IGVsc2Ug
ewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2UubGVuZ3RoOwotICAgIH0KLSAg
ICBpZiAoYnl0ZXNSZWNlaXZlZCAhPSBzaXplKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0V4
cGVjdGVkICcgKyBzaXplICsKLSAgICAgICAgICAnQiBidXQgcmVjZWl2ZWQgJyArIGJ5dGVzUmVj
ZWl2ZWQgKyAnQicpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh0aGlzLnJlc3BvbnNl
VHlwZSA9PSAnYXJyYXlidWZmZXInKSB7Ci0gICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKGJ5
dGVzUmVjZWl2ZWQsCi0gICAgICAgICAgIWNvbmZpZy52ZXJpZnlEYXRhIHx8IHZlcmlmeUFycmF5
QnVmZmVyKHRoaXMucmVzcG9uc2UsIDB4NjEpKTsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVzcG9u
c2VUeXBlID09ICdibG9iJykgewotICAgICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhKQotICAgICAg
ICB2ZXJpZnlCbG9iKGNvbmZpZywgdGhpcy5yZXNwb25zZSwgMHg2MSwgY2hlY2tSZXN1bHRBbmRD
b250aW51ZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGNoZWNrUmVzdWx0QW5kQ29udGludWUoYnl0
ZXNSZWNlaXZlZCwgdHJ1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNoZWNrUmVzdWx0QW5kQ29u
dGludWUoCi0gICAgICAgICAgYnl0ZXNSZWNlaXZlZCwKLSAgICAgICAgICAhY29uZmlnLnZlcmlm
eURhdGEgfHwKLSAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZSA9PSByZXBlYXRTdHJpbmcoJ2En
LCB0aGlzLnJlc3BvbnNlLmxlbmd0aCkpOwotICAgIH0KLSAgfTsKLQotICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvbmZpZy5udW1YSFJzOyArK2kpIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVhZHlTdGF0ZUNoYW5n
ZUhhbmRsZXI7Ci0gICAgeGhycy5wdXNoKHhocik7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotICB0b3RhbFNpemUgPSBzaXplICogeGhycy5sZW5n
dGg7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFy
IHhociA9IHhocnNbaV07Ci0gICAgaWYgKGNvbmZpZy5tZXRob2RBbmRDYWNoZSA9PT0gJ0dFVC1O
T0NBQ0hFJykgewotICAgICAgeGhyLm9wZW4oJ0dFVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAnX3Jl
Y2VpdmVfZ2V0bm9jYWNoZT8nICsgc2l6ZSwKLSAgICAgICAgICBjb25maWcuYXN5bmMpOwotICAg
ICAgeGhyLnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTsKLSAgICAgIHhoci5zZW5kKCk7
Ci0gICAgfSBlbHNlIGlmIChjb25maWcubWV0aG9kQW5kQ2FjaGUgPT09ICdHRVQtQ0FDSEUnKSB7
Ci0gICAgICB4aHIub3BlbignR0VUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRj
YWNoZT8nICsgc2l6ZSwKLSAgICAgICAgICBjb25maWcuYXN5bmMpOwotICAgICAgeGhyLnJlc3Bv
bnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTsKLSAgICAgIHhoci5zZW5kKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZScs
IGNvbmZpZy5hc3luYyk7Ci0gICAgICB4aHIucmVzcG9uc2VUeXBlID0gY29uZmlnLmRhdGFUeXBl
OwotICAgICAgeGhyLnNlbmQoc2l6ZSArICcgbm9uZScpOwotICAgIH0KLSAgfQotfQotCi0KLWZ1
bmN0aW9uIGdldENvbmZpZ1N0cmluZyhjb25maWcpIHsKLSAgcmV0dXJuICcoJyArIGNvbmZpZy5k
YXRhVHlwZSArCi0gICAgJywgdmVyaWZ5RGF0YT0nICsgY29uZmlnLnZlcmlmeURhdGEgKwotICAg
ICcsICcgKyAoaXNXb3JrZXIgPyAnV29ya2VyJyA6ICdNYWluJykgKwotICAgICcsICcgKyAoY29u
ZmlnLmFzeW5jID8gJ0FzeW5jJyA6ICdTeW5jJykgKwotICAgICcsIG51bVhIUnM9JyArIGNvbmZp
Zy5udW1YSFJzICsKLSAgICAnLCBudW1JdGVyYXRpb25zPScgKyBjb25maWcubnVtSXRlcmF0aW9u
cyArCi0gICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJh
dGlvbnMgKwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7
Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFhIUnMoKTsKLQotICBydW5O
ZXh0VGFzayhjb25maWcpOwotfQotCi1mdW5jdGlvbiBiYXRjaEJlbmNobWFyayhvcmlnaW5hbENv
bmZpZykgewotICBvcmlnaW5hbENvbmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0K
LSAgdGFza3MgPSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotCi0gIHZhciBkYXRhVHlwZXMg
PSBbJ3RleHQnLCAnYmxvYicsICdhcnJheWJ1ZmZlciddOwotICB2YXIgc3RlcEZ1bmNzID0gW3Nl
bmRCZW5jaG1hcmtTdGVwLCByZWNlaXZlQmVuY2htYXJrU3RlcF07Ci0gIHZhciBuYW1lcyA9IFsn
U2VuZCcsICdSZWNlaXZlJ107Ci0gIHZhciBhc3luYyA9IFt0cnVlLCBmYWxzZV07Ci0gIGZvciAo
dmFyIGkgPSAwOyBpIDwgc3RlcEZ1bmNzLmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9
IDA7IGogPCBkYXRhVHlwZXMubGVuZ3RoOyArK2opIHsKLSAgICAgIGZvciAodmFyIGsgPSAwOyBr
IDwgYXN5bmMubGVuZ3RoOyArK2spIHsKLSAgICAgICAgdmFyIGNvbmZpZyA9IGNsb25lQ29uZmln
KG9yaWdpbmFsQ29uZmlnKTsKLSAgICAgICAgY29uZmlnLmRhdGFUeXBlID0gZGF0YVR5cGVzW2pd
OwotICAgICAgICBjb25maWcuYXN5bmMgPSBhc3luY1trXTsKLQotICAgICAgICAvLyBSZWNlaXZl
ICYmIE5vbi1Xb3JrZXIgJiYgU3luYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzcGVjCi0gICAg
ICAgIGlmIChzdGVwRnVuY3NbaV0gPT09IHJlY2VpdmVCZW5jaG1hcmtTdGVwICYmICFpc1dvcmtl
ciAmJgotICAgICAgICAgICAgIWNvbmZpZy5hc3luYykKLSAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBhZGRUYXNrcyhjb25maWcsIHN0ZXBGdW5jc1tpXSk7Ci0gICAgICAgIGFkZFJlc3Vs
dFJlcG9ydGluZ1Rhc2soY29uZmlnLAotICAgICAgICAgICAgbmFtZXNbaV0gKyAnIGJlbmNobWFy
ayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0g
IHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXAoKSB7Ci19CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3hocl9ldmVudF9sb2dnZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTBkYjBmYmVjNDk0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9ldmVudF9s
b2dnZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi08IS0tCi1Db3B5cmln
aHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi1Vc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci1odHRwczovL2RldmVsb3BlcnMuZ29v
Z2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLS0tPgotCi08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPlhIUiBldmVudCBsb2dnZXI8L3RpdGxlPgotPHNjcmlwdCBzcmM9InV0aWxfbWFpbi5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotdmFyIGV2ZW50cyA9IFtdOwotdmFyIHN0YXJ0VGltZSA9
IDA7Ci0KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgZXZlbnRzID0gW107Ci0gIHN0YXJ0VGltZSA9IERh
dGUubm93KCk7Ci0KLSAgZnVuY3Rpb24gcHVzaFRvTG9nKHR5cGUpIHsKLSAgICB2YXIgdGltZSA9
IERhdGUubm93KCk7Ci0gICAgaWYgKGV2ZW50cy5sZW5ndGggIT0gMCAmJiB0eXBlID09PSBldmVu
dHNbZXZlbnRzLmxlbmd0aCAtIDFdLnR5cGUpIHsKLSAgICAgIGV2ZW50c1tldmVudHMubGVuZ3Ro
IC0gMV0uY291bnQgKz0gMTsKLSAgICAgIGV2ZW50c1tldmVudHMubGVuZ3RoIC0gMV0ubGFzdCA9
IHRpbWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGV2ZW50cy5wdXNoKHt0eXBlOiB0eXBlLCBjb3Vu
dDogMSwgZmlyc3Q6IHRpbWUsIGxhc3Q6IHRpbWV9KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NFdmVudER1
bXAoZSkgewotICAgIHJldHVybiAnKCcgKyBlLmxlbmd0aENvbXB1dGFibGUgKyAnLCAnICsgZS5s
b2FkZWQgKyAnLCAnICsgZS50b3RhbCArICcpJzsKLSAgfQotCi0gIHZhciBkdW1wUHJvZ3Jlc3NF
dmVudCA9IGdldEJvb2xGcm9tQ2hlY2tCb3goJ2R1bXBwcm9ncmVzc2V2ZW50Jyk7Ci0KLSAgZnVu
Y3Rpb24gbG9nKGUpIHsKLSAgICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAodHlwZSA9PT0g
J3JlYWR5c3RhdGVjaGFuZ2UnKSB7Ci0gICAgICB0eXBlICs9IGUudGFyZ2V0LnJlYWR5U3RhdGU7
Ci0gICAgfQotICAgIGlmIChkdW1wUHJvZ3Jlc3NFdmVudCAmJiAoZSBpbnN0YW5jZW9mIFByb2dy
ZXNzRXZlbnQpKSB7Ci0gICAgICB0eXBlICs9IGdldFByb2dyZXNzRXZlbnREdW1wKGUpOwotICAg
IH0KLSAgICBwdXNoVG9Mb2codHlwZSk7Ci0gIH07Ci0KLSAgZnVuY3Rpb24gbG9nVXBsb2FkKGUp
IHsKLSAgICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAoZHVtcFByb2dyZXNzRXZlbnQgJiYg
KGUgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSkgewotICAgICAgdHlwZSArPSBnZXRQcm9ncmVz
c0V2ZW50RHVtcChlKTsKLSAgICB9Ci0gICAgcHVzaFRvTG9nKCd1cGxvYWQnICsgdHlwZSk7Ci0g
IH0KLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgndXBsb2FkJykpIHsKLSAgICB2YXIgdXBs
b2FkID0geGhyLnVwbG9hZDsKLSAgICB1cGxvYWQub25sb2Fkc3RhcnQgPSBsb2dVcGxvYWQ7Ci0g
ICAgdXBsb2FkLm9ucHJvZ3Jlc3MgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uYWJvcnQgPSBs
b2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uZXJyb3IgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9u
bG9hZCA9IGxvZ1VwbG9hZDsKLSAgICB1cGxvYWQub250aW1lb3V0ID0gbG9nVXBsb2FkOwotICAg
IHVwbG9hZC5vbmxvYWRlbmQgPSBsb2dVcGxvYWQ7Ci0gIH0KLQotICB4aHIub25yZWFkeXN0YXRl
Y2hhbmdlID0gbG9nOwotICB4aHIub25sb2Fkc3RhcnQgPSBsb2c7Ci0gIHhoci5vbnByb2dyZXNz
ID0gbG9nOwotICB4aHIub25hYm9ydCA9IGxvZzsKLSAgeGhyLm9uZXJyb3IgPSBsb2c7Ci0gIHho
ci5vbmxvYWQgPSBsb2c7Ci0gIHhoci5vbnRpbWVvdXQgPSBsb2c7Ci0gIHhoci5vbmxvYWRlbmQg
PSBsb2c7Ci0KLSAgeGhyLm9wZW4oJ1BPU1QnLCAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFk
MjFjMjQ1X3JlY2VpdmUnLAotICAgICAgICAgICBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycp
KTsKLSAgdmFyIHNpemUgPSBnZXRJbnRGcm9tSW5wdXQoJ3NpemUnKTsKLSAgdmFyIGNodW5rZWRN
b2RlID0gJ25vbmUnOwotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnY2h1bmtlZHJlc3BvbnNl
JykpIHsKLSAgICBjaHVua2VkTW9kZSA9ICdjaHVua2VkJzsKLSAgfQotICB4aHIuc2VuZChzaXpl
ICsgJyAnICsgY2h1bmtlZE1vZGUpOwotfQotCi1mdW5jdGlvbiBwcmludCgpIHsKLSAgdmFyIHJl
c3VsdCA9ICcnOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7ICsraSkgewot
ICAgIHZhciBldmVudCA9IGV2ZW50c1tpXTsKLSAgICB2YXIgbGluZSA9ICcnOwotICAgIGxpbmUg
Kz0gKGV2ZW50LmZpcnN0IC0gc3RhcnRUaW1lKSArICJtcyI7Ci0gICAgaWYgKGV2ZW50LmNvdW50
ID4gMSkKLSAgICAgIGxpbmUgKz0gIi0iICsgKGV2ZW50Lmxhc3QgLSBzdGFydFRpbWUpICsgIm1z
IjsKLSAgICBlbHNlCi0gICAgICBsaW5lICs9ICIgICAgICAgICI7Ci0gICAgd2hpbGUobGluZS5s
ZW5ndGggPCAxNSkKLSAgICAgIGxpbmUgKz0gIiAiOwotICAgIGxpbmUgKz0gIjogIiArIGV2ZW50
LnR5cGUgKyAnICogJyArIGV2ZW50LmNvdW50ICsgJ1xuJzsKLSAgICByZXN1bHQgKz0gbGluZTsK
LSAgfQotICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudmFsdWUgPSByZXN1bHQ7Ci19
Ci08L3NjcmlwdD4KLQotPGJvZHk+Ci0gIDx0ZXh0YXJlYSBpZD0ibG9nIiByb3dzPSIxMCIgY29s
cz0iNzAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci0gIDxici8+Ci0gIFNpemU6IDxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0ic2l6ZSIgdmFsdWU9IjY1NTM2Ij48YnIvPgotICA8aW5wdXQgdHlwZT0iY2hl
Y2tib3giIGlkPSJjaHVua2VkcmVzcG9uc2UiPgotICA8bGFiZWwgZm9yPSJjaHVua2VkcmVzcG9u
c2UiPlVzZSBDaHVua2VkIFQtRSBmb3IgcmVzcG9uc2U8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9InVwbG9hZCI+Ci0gIDxsYWJlbCBmb3I9InVwbG9hZCI+VXBsb2Fk
IHByb2dyZXNzPC9sYWJlbD48YnIvPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJkdW1w
cHJvZ3Jlc3NldmVudCI+Ci0gIDxsYWJlbCBmb3I9ImR1bXBwcm9ncmVzc2V2ZW50Ij4KLSAgICBE
dW1wIGxlbmd0aENvbXB1dGFibGUvbG9hZGVkL3RvdGFsPC9sYWJlbD48YnIvPgotICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJhc3luYyIgY2hlY2tlZD4KLSAgPGxhYmVsIGZvcj0iYXN5bmMi
PkFzeW5jPC9sYWJlbD48YnIvPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJydW4o
KSIgdmFsdWU9IlJ1biBYSFIiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJwcmlu
dCgpIiB2YWx1ZT0iUHJpbnQgbG9nIj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS94aHJfcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS94aHJfcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWIwMmM5ZWE1NmY2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3ho
cl9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJ4aHJfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOTMzYTIy
MDQ1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IldlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlci4KLQotbW9kX3B5d2Vi
c29ja2V0IGlzIGEgV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVyCi1p
bnRlbmRlZCBmb3IgdGVzdGluZyBvciBleHBlcmltZW50YWwgcHVycG9zZXMuIG1vZF9weXRob24g
aXMgcmVxdWlyZWQuCi0KLQotSW5zdGFsbGF0aW9uCi09PT09PT09PT09PT0KLQotMC4gUHJlcGFy
ZSBhbiBBcGFjaGUgSFRUUCBTZXJ2ZXIgZm9yIHdoaWNoIG1vZF9weXRob24gaXMgZW5hYmxlZC4K
LQotMS4gU3BlY2lmeSB0aGUgZm9sbG93aW5nIEFwYWNoZSBIVFRQIFNlcnZlciBkaXJlY3RpdmVz
IHRvIHN1aXQgeW91cgotICAgY29uZmlndXJhdGlvbi4KLQotICAgSWYgbW9kX3B5d2Vic29ja2V0
IGlzIG5vdCBpbiB0aGUgUHl0aG9uIHBhdGgsIHNwZWNpZnkgdGhlIGZvbGxvd2luZy4KLSAgIDx3
ZWJzb2NrX2xpYj4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSBtb2RfcHl3ZWJzb2NrZXQgaXMgaW5z
dGFsbGVkLgotCi0gICAgICAgUHl0aG9uUGF0aCAic3lzLnBhdGgrWyc8d2Vic29ja19saWI+J10i
Ci0KLSAgIEFsd2F5cyBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcuIDx3ZWJzb2NrX2hhbmRsZXJzPiBp
cyB0aGUgZGlyZWN0b3J5IHdoZXJlCi0gICB1c2VyLXdyaXR0ZW4gV2ViU29ja2V0IGhhbmRsZXJz
IGFyZSBwbGFjZWQuCi0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRs
ZXJfcm9vdCA8d2Vic29ja19oYW5kbGVycz4KLSAgICAgICBQeXRob25IZWFkZXJQYXJzZXJIYW5k
bGVyIG1vZF9weXdlYnNvY2tldC5oZWFkZXJwYXJzZXJoYW5kbGVyCi0KLSAgIFRvIGxpbWl0IHRo
ZSBzZWFyY2ggZm9yIFdlYlNvY2tldCBoYW5kbGVycyB0byBhIGRpcmVjdG9yeSA8c2Nhbl9kaXI+
Ci0gICB1bmRlciA8d2Vic29ja19oYW5kbGVycz4sIGNvbmZpZ3VyZSBhcyBmb2xsb3dzOgotCi0g
ICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gPHNjYW5fZGly
PgotCi0gICA8c2Nhbl9kaXI+IGlzIHVzZWZ1bCBpbiBzYXZpbmcgc2NhbiB0aW1lIHdoZW4gPHdl
YnNvY2tfaGFuZGxlcnM+Ci0gICBjb250YWlucyBtYW55IG5vbi1XZWJTb2NrZXQgaGFuZGxlciBm
aWxlcy4KLQotICAgSWYgeW91IHdhbnQgdG8gYWxsb3cgaGFuZGxlcnMgd2hvc2UgY2Fub25pY2Fs
IHBhdGggaXMgbm90IHVuZGVyIHRoZSByb290Ci0gICBkaXJlY3RvcnkgKGkuZS4gc3ltYm9saWMg
bGluayBpcyBpbiByb290IGRpcmVjdG9yeSBidXQgaXRzIHRhcmdldCBpcyBub3QpLAotICAgY29u
ZmlndXJlIGFzIGZvbGxvd3M6Ci0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0
LmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIgT24KLQotICAgRXhhbXBsZSBzbmlwcGV0
IG9mIGh0dHBkLmNvbmY6Ci0gICAobW9kX3B5d2Vic29ja2V0IGlzIGluIC93ZWJzb2NrX2xpYiwg
V2ViU29ja2V0IGhhbmRsZXJzIGFyZSBpbgotICAgL3dlYnNvY2tfaGFuZGxlcnMsIHBvcnQgaXMg
ODAgZm9yIHdzLCA0NDMgZm9yIHdzcy4pCi0KLSAgICAgICA8SWZNb2R1bGUgcHl0aG9uX21vZHVs
ZT4KLSAgICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1snL3dlYnNvY2tfbGliJ10iCi0gICAg
ICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfcm9vdCAvd2Vic29ja19o
YW5kbGVycwotICAgICAgICAgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2Nr
ZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICAgICAgIDwvSWZNb2R1bGU+Ci0KLTIuIFR1bmUgQXBh
Y2hlIHBhcmFtZXRlcnMgZm9yIHNlcnZpbmcgV2ViU29ja2V0LiBXZSdkIGxpa2UgdG8gbm90ZSB0
aGF0IGF0Ci0gICBsZWFzdCBUaW1lT3V0IGRpcmVjdGl2ZSBmcm9tIGNvcmUgZmVhdHVyZXMgYW5k
IFJlcXVlc3RSZWFkVGltZW91dAotICAgZGlyZWN0aXZlIGZyb20gbW9kX3JlcXRpbWVvdXQgc2hv
dWxkIGJlIG1vZGlmaWVkIG5vdCB0byBraWxsIGNvbm5lY3Rpb25zCi0gICBpbiBvbmx5IGEgZmV3
IHNlY29uZHMgb2YgaWRsZSB0aW1lLgotCi0zLiBWZXJpZnkgaW5zdGFsbGF0aW9uLiBZb3UgY2Fu
IHVzZSBleGFtcGxlL2NvbnNvbGUuaHRtbCB0byBwb2tlIHRoZSBzZXJ2ZXIuCi0KLQotV3JpdGlu
ZyBXZWJTb2NrZXQgaGFuZGxlcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVdoZW4g
YSBXZWJTb2NrZXQgcmVxdWVzdCBjb21lcyBpbiwgdGhlIHJlc291cmNlIG5hbWUKLXNwZWNpZmll
ZCBpbiB0aGUgaGFuZHNoYWtlIGlzIGNvbnNpZGVyZWQgYXMgaWYgaXQgaXMgYSBmaWxlIHBhdGgg
dW5kZXIKLTx3ZWJzb2NrX2hhbmRsZXJzPiBhbmQgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgotPHdl
YnNvY2tfaGFuZGxlcnM+LzxyZXNvdXJjZV9uYW1lPl93c2gucHkgaXMgaW52b2tlZC4KLQotRm9y
IGV4YW1wbGUsIGlmIHRoZSByZXNvdXJjZSBuYW1lIGlzIC9leGFtcGxlL2NoYXQsIHRoZSBoYW5k
bGVyIGRlZmluZWQgaW4KLTx3ZWJzb2NrX2hhbmRsZXJzPi9leGFtcGxlL2NoYXRfd3NoLnB5IGlz
IGludm9rZWQuCi0KLUEgV2ViU29ja2V0IGhhbmRsZXIgaXMgY29tcG9zZWQgb2YgdGhlIGZvbGxv
d2luZyB0aHJlZSBmdW5jdGlvbnM6Ci0KLSAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KQotICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIHdl
Yl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi13aGVyZToKLSAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLXdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGhhbmRzaGFrZSBhZnRlciB0aGUKLWhlYWRlcnMg
YXJlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgYW5kIFdlYlNvY2tldCBwcm9wZXJ0aWVzICh3c19sb2Nh
dGlvbiwKLXdzX29yaWdpbiwgYW5kIHdzX3Jlc291cmNlKSBhcmUgYWRkZWQgdG8gcmVxdWVzdC4g
QSBoYW5kbGVyCi1jYW4gcmVqZWN0IHRoZSByZXF1ZXN0IGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9u
LgotCi1BIHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhhdCB5
b3UgY2FuIHVzZSBkdXJpbmcgdGhlCi1leHRyYSBoYW5kc2hha2UgKHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKToKLS0gd3NfcmVzb3VyY2UKLS0gd3Nfb3JpZ2luCi0tIHdzX3ZlcnNpb24K
LS0gd3NfbG9jYXRpb24gKEh5QmkgMDAgb25seSkKLS0gd3NfZXh0ZW5zaW9ucyAoSHlCaSAwNiBh
bmQgbGF0ZXIpCi0tIHdzX2RlZmxhdGUgKEh5QmkgMDYgYW5kIGxhdGVyKQotLSB3c19wcm90b2Nv
bAotLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIChIeUJpIDA2IGFuZCBsYXRlcikKLQotVGhlIGxh
c3QgdHdvIGFyZSBhIGJpdCB0cmlja3kuIFNlZSB0aGUgbmV4dCBzdWJzZWN0aW9uLgotCi0KLVN1
YnByb3RvY29sIE5lZ290aWF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Gb3IgSHlC
aSAwNiBhbmQgbGF0ZXIsIHdzX3Byb3RvY29sIGlzIGFsd2F5cyBzZXQgdG8gTm9uZSB3aGVuCi13
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQuIElmIHdzX3JlcXVlc3RlZF9w
cm90b2NvbHMgaXMgbm90Ci1Ob25lLCB5b3UgbXVzdCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZy
b20gdGhpcyBsaXN0IGFuZCBzZXQgaXQgdG8KLXdzX3Byb3RvY29sLgotCi1Gb3IgSHlCaSAwMCwg
d2hlbiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQsCi13c19wcm90b2Nv
bCBpcyBzZXQgdG8gdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBjbGllbnQgaW4KLVNlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wgaGVhZGVyIG9yIE5vbmUgaWYKLXN1Y2ggaGVhZGVyIHdhcyBub3QgZm91bmQg
aW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QuIEZpbmlzaCBleHRyYQotaGFuZHNoYWtl
IHdpdGggd3NfcHJvdG9jb2wgdW50b3VjaGVkIHRvIGFjY2VwdCB0aGUgcmVxdWVzdCBzdWJwcm90
b2NvbC4KLVRoZW4sIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVhZGVyIHdpbGwgYmUgc2VudCB0
bwotdGhlIGNsaWVudCBpbiByZXNwb25zZSB3aXRoIHRoZSBzYW1lIHZhbHVlIGFzIHJlcXVlc3Rl
ZC4gUmFpc2UgYW4gZXhjZXB0aW9uCi1pbiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSB0
byByZWplY3QgdGhlIHJlcXVlc3RlZCBzdWJwcm90b2NvbC4KLQotCi1EYXRhIFRyYW5zZmVyCi0t
LS0tLS0tLS0tLS0tCi0KLXdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBpcyBjYWxsZWQgYWZ0ZXIg
dGhlIGhhbmRzaGFrZSBjb21wbGV0ZWQKLXN1Y2Nlc3NmdWxseS4gQSBoYW5kbGVyIGNhbiByZWNl
aXZlL3NlbmQgbWVzc2FnZXMgZnJvbS90byB0aGUgY2xpZW50Ci11c2luZyByZXF1ZXN0LiBtb2Rf
cHl3ZWJzb2NrZXQubXNndXRpbCBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0aWVzCi1mb3IgZGF0YSB0
cmFuc2Zlci4KLQotWW91IGNhbiByZWNlaXZlIGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0
YXRlbWVudC4KLQotICAgIG1lc3NhZ2UgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3Nh
Z2UoKQotCi1UaGlzIGNhbGwgYmxvY2tzIHVudGlsIGFueSBjb21wbGV0ZSB0ZXh0IGZyYW1lIGFy
cml2ZXMsIGFuZCB0aGUgcGF5bG9hZCBkYXRhCi1vZiB0aGUgaW5jb21pbmcgZnJhbWUgd2lsbCBi
ZSBzdG9yZWQgaW50byBtZXNzYWdlLiBXaGVuIHlvdSdyZSB1c2luZyBJRVRGCi1IeUJpIDAwIG9y
IGxhdGVyIHByb3RvY29sLCByZWNlaXZlX21lc3NhZ2UoKSB3aWxsIHJldHVybiBOb25lIG9uIHJl
Y2VpdmluZwotY2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZS4gV2hlbiBhbnkgZXJy
b3Igb2NjdXJzLCByZWNlaXZlX21lc3NhZ2UoKQotd2lsbCByYWlzZSBzb21lIGV4Y2VwdGlvbi4K
LQotWW91IGNhbiBzZW5kIGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudC4KLQot
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShtZXNzYWdlKQotCi0KLUNsb3Npbmcg
Q29ubmVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUV4ZWN1dGluZyB0aGUgZm9sbG93aW5n
IHN0YXRlbWVudCBvciBqdXN0IHJldHVybi1pbmcgZnJvbQotd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhIGNhdXNlIGNvbm5lY3Rpb24gY2xvc2UuCi0KLSAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9z
ZV9jb25uZWN0aW9uKCkKLQotY2xvc2VfY29ubmVjdGlvbiB3aWxsIHdhaXQKLWZvciBjbG9zaW5n
IGhhbmRzaGFrZSBhY2tub3dsZWRnZW1lbnQgY29taW5nIGZyb20gdGhlIGNsaWVudC4gV2hlbiBp
dAotY291bGRuJ3QgcmVjZWl2ZSBhIHZhbGlkIGFja25vd2xlZGdlbWVudCwgcmFpc2VzIGFuIGV4
Y2VwdGlvbi4KLQotd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlIGlzIGNhbGxl
ZCBhZnRlciB0aGUgc2VydmVyIHJlY2VpdmVzCi1pbmNvbWluZyBjbG9zaW5nIGZyYW1lIGZyb20g
dGhlIGNsaWVudCBwZWVyIGltbWVkaWF0ZWx5LiBZb3UgY2FuIHNwZWNpZnkKLWNvZGUgYW5kIHJl
YXNvbiBieSByZXR1cm4gdmFsdWVzLiBUaGV5IGFyZSBzZW50IGFzIGEgb3V0Z29pbmcgY2xvc2lu
ZyBmcmFtZQotZnJvbSB0aGUgc2VydmVyLiBBIHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93
aW5nIHByb3BlcnRpZXMgdGhhdCB5b3UgY2FuCi11c2UgaW4gd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlLgotLSB3c19jbG9zZV9jb2RlCi0tIHdzX2Nsb3NlX3JlYXNvbgotCi0K
LVRocmVhZGluZwotLS0tLS0tLS0tCi0KLUEgV2ViU29ja2V0IGhhbmRsZXIgbXVzdCBiZSB0aHJl
YWQtc2FmZSBpZiB0aGUgc2VydmVyIChBcGFjaGUgb3IKLXN0YW5kYWxvbmUucHkpIGlzIGNvbmZp
Z3VyZWQgdG8gdXNlIHRocmVhZHMuCi0KLQotQ29uZmlndXJpbmcgV2ViU29ja2V0IEV4dGVuc2lv
biBQcm9jZXNzb3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotU2VlIGV4dGVuc2lvbnMucHkgZm9yIHN1cHBvcnRlZCBXZWJTb2NrZXQgZXh0ZW5zaW9ucy4g
Tm90ZSB0aGF0IHRoZXkgYXJlCi11bnN0YWJsZSBhbmQgdGhlaXIgQVBJcyBhcmUgc3ViamVjdCB0
byBjaGFuZ2Ugc3Vic3RhbnRpYWxseS4KLQotQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlc2UgZXh0
ZW5zaW9uIHByb2Nlc3NpbmcgcmVsYXRlZCBhdHRyaWJ1dGVzLgotCi0tIHdzX3JlcXVlc3RlZF9l
eHRlbnNpb25zOgotCi0gIEEgbGlzdCBvZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3Rh
bmNlcyByZXByZXNlbnRpbmcgZXh0ZW5zaW9uCi0gIHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSB0
aGUgY2xpZW50IGluIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgWW91IHNob3Vs
ZG4ndCBtb2RpZnkgaXQgbWFudWFsbHkuCi0KLS0gd3NfZXh0ZW5zaW9uczoKLQotICBBIGxpc3Qg
b2YgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVu
c2lvbgotICBwYXJhbWV0ZXJzIHRvIHNlbmQgYmFjayB0byB0aGUgY2xpZW50IGluIHRoZSBzZXJ2
ZXIncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgWW91IHNob3VsZG4ndCB0b3VjaCBpdCBkaXJlY3Rs
eS4gSW5zdGVhZCwgY2FsbCBtZXRob2RzIG9uIGV4dGVuc2lvbgotICBwcm9jZXNzb3JzLgotCi0t
IHdzX2V4dGVuc2lvbl9wcm9jZXNzb3JzOgotCi0gIEEgbGlzdCBvZiBsb2FkZWQgZXh0ZW5zaW9u
IHByb2Nlc3NvcnMuIEZpbmQgdGhlIHByb2Nlc3NvciBmb3IgdGhlCi0gIGV4dGVuc2lvbiB5b3Ug
d2FudCB0byBjb25maWd1cmUgZnJvbSBpdCwgYW5kIGNhbGwgaXRzIG1ldGhvZHMuCi0iIiIKLQot
Ci0jIHZpOnN0cz00IHN3PTQgZXQgdHc9NzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L19zdHJlYW1fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhMTI1NGFlNmQwLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTgxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkJhc2Ugc3RyZWFt
IGNsYXNzLgotIiIiCi0KLQotIyBOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBh
cmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKLSMgbW9kX3B5dGhvbiBkb2N1bWVu
dCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KLSMgaGFu
ZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1w
bGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBk
b24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVzCi0jIHdyaXRpbmcvcmVhZGluZy4KLQotCi1pbXBv
cnQgc29ja2V0Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotIyBFeGNl
cHRpb25zCi0KLQotY2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9u
KToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlv
biBpcyB0ZXJtaW5hdGVkCi0gICAgdW5leHBlY3RlZGx5LgotICAgICIiIgotCi0gICAgcGFzcwot
Ci0KLWNsYXNzIEludmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNl
aXZlZCBhbiBpbnZhbGlkIGZyYW1lIHdlCi0gICAgY2Fubm90IHBhcnNlLgotICAgICIiIgotCi0g
ICAgcGFzcwotCi0KLWNsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAg
ICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMg
Y2FsbGVkIG9uCi0gICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21l
c3NhZ2UoKSBpcyBjYWxsZWQgb24KLSAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgot
ICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24o
RXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdl
IHJlY2VpdmUgYSBmcmFtZSB3aXRoIGZsYWcsIG9wY29kZQotICAgIHdlIGNhbm5vdCBoYW5kbGUu
IEhhbmRsZXJzIGNhbiBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCi0g
ICAgY2FsbCByZWNlaXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRo
ZSBuZXh0IGZyYW1lLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEludmFsaWRVVEY4
RXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlz
ZWQgd2hlbiB3ZSByZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAotICAgIGNvbnRhaW5zIGludmFs
aWQgVVRGLTggc3RyaW5ncy4KLSAgICAiIiIKLQotICAgIHBhc3MKLQotCi1jbGFzcyBTdHJlYW1C
YXNlKG9iamVjdCk6Ci0gICAgIiIiQmFzZSBzdHJlYW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0
LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotCi0gICAgZGVm
IF9yZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJlYWRzIGxlbmd0aCBieXRlcyBmcm9t
IGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55IGV4Y2VwdGlvbiwKLSAgICAgICAgcHJl
cGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGFuZCByYWlzZSBh
Z2Fpbi4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIK
LQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZWFkX2J5dGVzID0gc2VsZi5fcmVxdWVzdC5j
b25uZWN0aW9uLnJlYWQobGVuZ3RoKQotICAgICAgICAgICAgaWYgbm90IHJlYWRfYnl0ZXM6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIFBlZXIgKCVyKSBjbG9z
ZWQgY29ubmVjdGlvbicgJQotICAgICAgICAgICAgICAgICAgICAobGVuZ3RoLCAoc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCkpKQotICAgICAgICAgICAgcmV0dXJuIHJlYWRf
Ynl0ZXMKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgotICAgICAgICAgICAgIyBD
YXRjaCBhIHNvY2tldC5lcnJvci4gQmVjYXVzZSBpdCdzIG5vdCBhIGNoaWxkIGNsYXNzIG9mIHRo
ZQotICAgICAgICAgICAgIyBJT0Vycm9yIHByaW9yIHRvIFB5dGhvbiAyLjYsIHdlIGNhbm5vdCBv
bWl0IHRoaXMgZXhjZXB0IGNsYXVzZS4KLSAgICAgICAgICAgICMgVXNlICVzIHJhdGhlciB0aGFu
ICVyIGZvciB0aGUgZXhjZXB0aW9uIHRvIHVzZSBodW1hbiBmcmllbmRseQotICAgICAgICAgICAg
IyBmb3JtYXQuCi0gICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBzb2NrZXQuZXJy
b3IgKCVzKSBvY2N1cnJlZCcgJQotICAgICAgICAgICAgICAgIChsZW5ndGgsIGUpKQotICAgICAg
ICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgIyBBbHNvIGNhdGNoIGFuIElPRXJy
b3IgYmVjYXVzZSBtb2RfcHl0aG9uIHRocm93cyBpdC4KLSAgICAgICAgICAgIHJhaXNlIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQg
Ynl0ZSBmYWlsZWQuIElPRXJyb3IgKCVzKSBvY2N1cnJlZCcgJQotICAgICAgICAgICAgICAgIChs
ZW5ndGgsIGUpKQotCi0gICAgZGVmIF93cml0ZShzZWxmLCBieXRlc190b193cml0ZSk6Ci0gICAg
ICAgICIiIldyaXRlcyBnaXZlbiBieXRlcyB0byBjb25uZWN0aW9uLiBJbiBjYXNlIHdlIGNhdGNo
IGFueSBleGNlcHRpb24sCi0gICAgICAgIHByZXBlbmRzIHJlbW90ZSBhZGRyZXNzIHRvIHRoZSBl
eGNlcHRpb24gbWVzc2FnZSBhbmQgcmFpc2UgYWdhaW4uCi0gICAgICAgICIiIgotCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShieXRlc190
b193cml0ZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgdXRp
bC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFp
bGVkIHRvIHNlbmQgbWVzc2FnZSB0byAlcjogJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1vdGVfYWRkciwpLAotICAgICAgICAgICAg
ICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiByZWNlaXZlX2J5dGVzKHNl
bGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJlY2VpdmVzIG11bHRpcGxlIGJ5dGVzLiBSZXRyaWVz
IHJlYWQgd2hlbiB3ZSBjb3VsZG4ndCByZWNlaXZlIHRoZQotICAgICAgICBzcGVjaWZpZWQgYW1v
dW50LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVk
RXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIHJlYWRfYnl0ZXMgPSBbXQotICAgICAgICB3aGlsZSBsZW5ndGggPiAwOgotICAg
ICAgICAgICAgbmV3X3JlYWRfYnl0ZXMgPSBzZWxmLl9yZWFkKGxlbmd0aCkKLSAgICAgICAgICAg
IHJlYWRfYnl0ZXMuYXBwZW5kKG5ld19yZWFkX2J5dGVzKQotICAgICAgICAgICAgbGVuZ3RoIC09
IGxlbihuZXdfcmVhZF9ieXRlcykKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVhZF9ieXRlcykK
LQotICAgIGRlZiBfcmVhZF91bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKLSAgICAgICAgIiIiUmVh
ZHMgYnl0ZXMgdW50aWwgd2UgZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBu
b3QKLSAgICAgICAgY29udGFpbiBkZWxpbV9jaGFyLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBl
bXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJlYWRfYnl0ZXMgPSBbXQotICAg
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCi0gICAgICAg
ICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
ICAgICByZWFkX2J5dGVzLmFwcGVuZChjaCkKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVhZF9i
eXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L19zdHJlYW1faGl4aWU3NS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1f
aGl4aWU3NS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRjZjViMzFiYTBmLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1LnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IlRoaXMgZmlsZSBwcm92aWRlcyBhIGNsYXNzIGZvciBwYXJzaW5nL2J1aWxkaW5nIGZyYW1lcyBv
ZiB0aGUgV2ViU29ja2V0Ci1wcm90b2NvbCB2ZXJzaW9uIEh5QmkgMDAgYW5kIEhpeGllIDc1Lgot
Ci1TcGVjaWZpY2F0aW9uOgotLSBIeUJpIDAwIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMAotLSBIaXhpZSA3NSBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbC03NQot
IiIiCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRF
eGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IFN0cmVhbUJhc2UKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwK
LQotCi1jbGFzcyBTdHJlYW1IaXhpZTc1KFN0cmVhbUJhc2UpOgotICAgICIiIkEgY2xhc3MgZm9y
IHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lv
bgotICAgIEh5QmkgMDAgYW5kIEhpeGllIDc1LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QsIGVuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZT1GYWxzZSk6Ci0gICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
cmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgZW5hYmxlX2Nsb3Npbmdf
aGFuZHNoYWtlOiB0byBsZXQgU3RyZWFtSGl4aWU3NSBwZXJmb3JtIGNsb3NpbmcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlIGFzIHNwZWNpZmllZCBpbiBI
eUJpIDAwLCBzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBv
cHRpb24gdG8gVHJ1ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgU3RyZWFtQmFzZS5fX2luaXRf
XyhzZWxmLCByZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX2VuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZSA9
IGVuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50
X3Rlcm1pbmF0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5h
dGVkID0gRmFsc2UKLQotICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRy
dWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgICIiIlNlbmQgbWVzc2FnZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgbWVzc2FnZTogdW5pY29kZSBzdHJpbmcgdG8gc2VuZC4KLSAgICAg
ICAgICAgIGJpbmFyeTogbm90IHVzZWQgaW4gaGl4aWU3NS4KLQotICAgICAgICBSYWlzZXM6Ci0g
ICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgc2VydmVy
LXRlcm1pbmF0ZWQKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLgotICAgICAgICAiIiIKLQot
ICAgICAgICBpZiBub3QgZW5kOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdTdHJlYW1IaXhpZTc1IGRvZXNuXCd0IHN1cHBvcnQgc2Vu
ZF9tZXNzYWdlIHdpdGggZW5kPUZhbHNlJykKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1N0cmVh
bUhpeGllNzUgZG9lc25cJ3Qgc3VwcG9ydCBzZW5kX21lc3NhZ2Ugd2l0aCBiaW5hcnk9VHJ1ZScp
Ci0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAg
ICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVz
dGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtlJykK
LQotICAgICAgICBzZWxmLl93cml0ZSgnJy5qb2luKFsnXHgwMCcsIG1lc3NhZ2UuZW5jb2RlKCd1
dGYtOCcpLCAnXHhmZiddKSkKLQotICAgIGRlZiBfcmVhZF9wYXlsb2FkX2xlbmd0aF9oaXhpZTc1
KHNlbGYpOgotICAgICAgICAiIiJSZWFkcyBhIGxlbmd0aCBoZWFkZXIgaW4gYSBIaXhpZTc1IHZl
cnNpb24gZnJhbWUgd2l0aCBsZW5ndGguCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAg
Q29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0
cmluZy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgbGVuZ3RoID0gMAotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgYl9zdHIgPSBzZWxmLl9yZWFkKDEpCi0gICAgICAgICAgICBiID0g
b3JkKGJfc3RyKQotICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoICogMTI4ICsgKGIgJiAweDdm
KQotICAgICAgICAgICAgaWYgKGIgJiAweDgwKSA9PSAwOgotICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgIHJldHVybiBsZW5ndGgKLQotICAgIGRlZiByZWNlaXZlX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5
bG9hZCBhbiB1bmljb2RlIHN0cmluZy4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAg
cGF5bG9hZCB1bmljb2RlIHN0cmluZyBpbiBhIFdlYlNvY2tldCBmcmFtZS4KLQotICAgICAgICBS
YWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiBy
ZWFkIHJldHVybnMgZW1wdHkKLSAgICAgICAgICAgICAgICBzdHJpbmcuCi0gICAgICAgICAgICBC
YWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgY2xpZW50LXRlcm1pbmF0ZWQK
LSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBz
ZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgcmVjZWl2ZV9tZXNz
YWdlIGFmdGVyIHJlY2VpdmluZyBhIGNsb3NpbmcgJwotICAgICAgICAgICAgICAgICdoYW5kc2hh
a2UnKQotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAjIFJlYWQgMSBieXRlLgot
ICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBibG9jayBpZiBubyBieXRlcyBhcmUgYXZh
aWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91dCBk
aXJlY3RpdmUgb2YgQXBhY2hlLgotICAgICAgICAgICAgZnJhbWVfdHlwZV9zdHIgPSBzZWxmLnJl
Y2VpdmVfYnl0ZXMoMSkKLSAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBvcmQoZnJhbWVfdHlwZV9z
dHIpCi0gICAgICAgICAgICBpZiAoZnJhbWVfdHlwZSAmIDB4ODApID09IDB4ODA6Ci0gICAgICAg
ICAgICAgICAgIyBUaGUgcGF5bG9hZCBsZW5ndGggaXMgc3BlY2lmaWVkIGluIHRoZSBmcmFtZS4K
LSAgICAgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQuCi0gICAgICAgICAgICAgICAgbGVu
Z3RoID0gc2VsZi5fcmVhZF9wYXlsb2FkX2xlbmd0aF9oaXhpZTc1KCkKLSAgICAgICAgICAgICAg
ICBpZiBsZW5ndGggPiAwOgotICAgICAgICAgICAgICAgICAgICBfID0gc2VsZi5yZWNlaXZlX2J5
dGVzKGxlbmd0aCkKLSAgICAgICAgICAgICAgICAjIDUuMyAzLiAxMi4gaWYgL3R5cGUvIGlzIDB4
RkYgYW5kIC9sZW5ndGgvIGlzIDAsIHRoZW4gc2V0IHRoZQotICAgICAgICAgICAgICAgICMgL2Ns
aWVudCB0ZXJtaW5hdGVkLyBmbGFnIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlOgotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSAweEZG
IGFuZCBsZW5ndGggPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGll
bnRfdGVybWluYXRlZCA9IFRydWUKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9y
IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2hhbmRzaGFrZScpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdSZWNlaXZlZCBjbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLQotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAg
J1NlbnQgYWNrIGZvciBjbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgIyBUaGUgcGF5bG9hZCBpcyBkZWxpbWl0ZWQgd2l0aCBceGZmLgotICAgICAgICAgICAg
ICAgIGJ5dGVzID0gc2VsZi5fcmVhZF91bnRpbCgnXHhmZicpCi0gICAgICAgICAgICAgICAgIyBU
aGUgV2ViU29ja2V0IHByb3RvY29sIHNlY3Rpb24gNC40IHNwZWNpZmllcyB0aGF0IGludmFsaWQK
LSAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIFUrZmZm
ZCBSRVBMQUNFTUVOVAotICAgICAgICAgICAgICAgICMgQ0hBUkFDVEVSLgotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgPSBieXRlcy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKQotICAgICAgICAg
ICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gMHgwMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAjIERpc2NhcmQgZGF0YSBvZiBvdGhlciB0eXBlcy4K
LQotICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgaWYgbm90
IHNlbGYuX2VuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnQ2xvc2luZyBoYW5kc2hha2UgaXMg
bm90IHN1cHBvcnRlZCBpbiBIaXhpZSA3NSBwcm90b2NvbCcpCi0KLSAgICAgICAgc2VsZi5fcmVx
dWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKLQotICAgICAgICAjIDUuMyB0aGUgc2VydmVy
IG1heSBkZWNpZGUgdG8gdGVybWluYXRlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBieQotICAg
ICAgICAjIHJ1bm5pbmcgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAjIDEu
IHNlbmQgYSAweEZGIGJ5dGUgYW5kIGEgMHgwMCBieXRlIHRvIHRoZSBjbGllbnQgdG8gaW5kaWNh
dGUgdGhlCi0gICAgICAgICMgc3RhcnQgb2YgdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgotICAgICAg
ICBzZWxmLl93cml0ZSgnXHhmZlx4MDAnKQotCi0gICAgZGVmIGNsb3NlX2Nvbm5lY3Rpb24oc2Vs
ZiwgdW51c2VkX2NvZGU9JycsIHVudXNlZF9yZWFzb249JycpOgotICAgICAgICAiIiJDbG9zZXMg
YSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBD
b25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiBjbG9zaW5nIGhhbmRzaGFrZSB3YXMK
LSAgICAgICAgICAgICAgICBub3Qgc3VjY2Vzc2Z1bGwuCi0gICAgICAgICIiIgotCi0gICAgICAg
IGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBjbG9zZV9jb25uZWN0aW9u
IGJ1dCBzZXJ2ZXIgaXMgYWxyZWFkeSB0ZXJtaW5hdGVkJykKLSAgICAgICAgICAgIHJldHVybgot
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9lbmFibGVfY2xvc2luZ19oYW5kc2hha2U6Ci0gICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdDb25uZWN0aW9uIGNsb3NlZCcpCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdTZW50IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2Un
KQotCi0gICAgICAgICMgVE9ETyh1a2FpKTogMi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJt
aW5hdGVkLyBmbGFnIGhhcyBiZWVuIHNldCwKLSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1k
ZWZpbmVkIHRpbWVvdXQgZXhwaXJlcy4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdl
IGV4cGVjdCByZWNlaXZpbmcgY2xvc2luZyBoYW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwot
ICAgICAgICAjIG91dCBjbG9zaW5nIGhhbmRzaGFrZSwgYW5kIGlmIHdlIGNvdWxkbid0IHJlY2Vp
dmUgbm9uLWhhbmRzaGFrZQotICAgICAgICAjIGZyYW1lLCB3ZSB0YWtlIGl0IGFzIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uLgotICAgICAgICBtZXNzYWdlID0gc2VsZi5yZWNlaXZlX21l
c3NhZ2UoKQotICAgICAgICBpZiBtZXNzYWdlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFp
c2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0RpZG5c
J3QgcmVjZWl2ZSB2YWxpZCBhY2sgZm9yIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgIyBU
T0RPOiAzLiBjbG9zZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uCi0gICAgICAgICMgbm90ZTog
bW9kX3B5dGhvbiBDb25uZWN0aW9uIChtcF9jb25uKSBkb2Vzbid0IGhhdmUgY2xvc2UgbWV0aG9k
LgotCi0gICAgZGVmIHNlbmRfcGluZyhzZWxmLCBib2R5KToKLSAgICAgICAgcmFpc2UgQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgJ1N0cmVhbUhpeGllNzUgZG9lc25cJ3Qgc3Vw
cG9ydCBzZW5kX3BpbmcnKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
X3N0cmVhbV9oeWJpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MThlOGZmYTM5
NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5Ymku
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiVGhpcyBmaWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBh
cnNpbmcvYnVpbGRpbmcgZnJhbWVzCi1vZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1
NSkuCi0KLVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1
Ci0iIiIKLQotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHRpbWUKLQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZy
b20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1w
b3J0IEludmFsaWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9i
YXNlIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9iYXNlIGltcG9ydCBTdHJlYW1CYXNlCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLQotCi1fTk9PUF9NQVNLRVIg
PSB1dGlsLk5vb3BNYXNrZXIoKQotCi0KLWNsYXNzIEZyYW1lKG9iamVjdCk6Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgZmluPTEsIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTAsCi0gICAgICAgICAg
ICAgICAgIG9wY29kZT1Ob25lLCBwYXlsb2FkPScnKToKLSAgICAgICAgc2VsZi5maW4gPSBmaW4K
LSAgICAgICAgc2VsZi5yc3YxID0gcnN2MQotICAgICAgICBzZWxmLnJzdjIgPSByc3YyCi0gICAg
ICAgIHNlbGYucnN2MyA9IHJzdjMKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUKLSAgICAg
ICAgc2VsZi5wYXlsb2FkID0gcGF5bG9hZAotCi0KLSMgSGVscGVyIGZ1bmN0aW9ucyBtYWRlIHB1
YmxpYyB0byBiZSB1c2VkIGZvciB3cml0aW5nIHVuaXR0ZXN0cyBmb3IgV2ViU29ja2V0Ci0jIGNs
aWVudHMuCi0KLQotZGVmIGNyZWF0ZV9sZW5ndGhfaGVhZGVyKGxlbmd0aCwgbWFzayk6Ci0gICAg
IiIiQ3JlYXRlcyBhIGxlbmd0aCBoZWFkZXIuCi0KLSAgICBBcmdzOgotICAgICAgICBsZW5ndGg6
IEZyYW1lIGxlbmd0aC4gTXVzdCBiZSBsZXNzIHRoYW4gMl42My4KLSAgICAgICAgbWFzazogTWFz
ayBiaXQuIE11c3QgYmUgYm9vbGVhbi4KLQotICAgIFJhaXNlczoKLSAgICAgICAgVmFsdWVFcnJv
cjogd2hlbiBiYWQgZGF0YSBpcyBnaXZlbi4KLSAgICAiIiIKLQotICAgIGlmIG1hc2s6Ci0gICAg
ICAgIG1hc2tfYml0ID0gMSA8PCA3Ci0gICAgZWxzZToKLSAgICAgICAgbWFza19iaXQgPSAwCi0K
LSAgICBpZiBsZW5ndGggPCAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZW5ndGggbXVz
dCBiZSBub24gbmVnYXRpdmUgaW50ZWdlcicpCi0gICAgZWxpZiBsZW5ndGggPD0gMTI1OgotICAg
ICAgICByZXR1cm4gY2hyKG1hc2tfYml0IHwgbGVuZ3RoKQotICAgIGVsaWYgbGVuZ3RoIDwgKDEg
PDwgMTYpOgotICAgICAgICByZXR1cm4gY2hyKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNr
KCchSCcsIGxlbmd0aCkKLSAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0
dXJuIGNocihtYXNrX2JpdCB8IDEyNykgKyBzdHJ1Y3QucGFjaygnIVEnLCBsZW5ndGgpCi0gICAg
ZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBpcyB0b28gYmlnIGZvciBv
bmUgZnJhbWUnKQotCi0KLWRlZiBjcmVhdGVfaGVhZGVyKG9wY29kZSwgcGF5bG9hZF9sZW5ndGgs
IGZpbiwgcnN2MSwgcnN2MiwgcnN2MywgbWFzayk6Ci0gICAgIiIiQ3JlYXRlcyBhIGZyYW1lIGhl
YWRlci4KLQotICAgIFJhaXNlczoKLSAgICAgICAgRXhjZXB0aW9uOiB3aGVuIGJhZCBkYXRhIGlz
IGdpdmVuLgotICAgICIiIgotCi0gICAgaWYgb3Bjb2RlIDwgMCBvciAweGYgPCBvcGNvZGU6Ci0g
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ09wY29kZSBvdXQgb2YgcmFuZ2UnKQotCi0gICAgaWYg
cGF5bG9hZF9sZW5ndGggPCAwIG9yICgxIDw8IDYzKSA8PSBwYXlsb2FkX2xlbmd0aDoKLSAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigncGF5bG9hZF9sZW5ndGggb3V0IG9mIHJhbmdlJykKLQotICAg
IGlmIChmaW4gfCByc3YxIHwgcnN2MiB8IHJzdjMpICYgfjE6Ci0gICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0ZJTiBiaXQgYW5kIFJlc2VydmVkIGJpdCBwYXJhbWV0ZXIgbXVzdCBiZSAwIG9yIDEn
KQotCi0gICAgaGVhZGVyID0gJycKLQotICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQotICAg
ICAgICAgICAgICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkK
LSAgICAgICAgICAgICAgICAgIHwgb3Bjb2RlKQotICAgIGhlYWRlciArPSBjaHIoZmlyc3RfYnl0
ZSkKLSAgICBoZWFkZXIgKz0gY3JlYXRlX2xlbmd0aF9oZWFkZXIocGF5bG9hZF9sZW5ndGgsIG1h
c2spCi0KLSAgICByZXR1cm4gaGVhZGVyCi0KLQotZGVmIF9idWlsZF9mcmFtZShoZWFkZXIsIGJv
ZHksIG1hc2spOgotICAgIGlmIG5vdCBtYXNrOgotICAgICAgICByZXR1cm4gaGVhZGVyICsgYm9k
eQotCi0gICAgbWFza2luZ19ub25jZSA9IG9zLnVyYW5kb20oNCkKLSAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKG1hc2tpbmdfbm9uY2UpCi0KLSAgICByZXR1cm4gaGVhZGVyICsg
bWFza2luZ19ub25jZSArIG1hc2tlci5tYXNrKGJvZHkpCi0KLQotZGVmIF9maWx0ZXJfYW5kX2Zv
cm1hdF9mcmFtZV9vYmplY3QoZnJhbWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgotICAgIGZvciBm
cmFtZV9maWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKLSAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRl
cihmcmFtZSkKLQotICAgIGhlYWRlciA9IGNyZWF0ZV9oZWFkZXIoCi0gICAgICAgIGZyYW1lLm9w
Y29kZSwgbGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4sCi0gICAgICAgIGZyYW1lLnJzdjEs
IGZyYW1lLnJzdjIsIGZyYW1lLnJzdjMsIG1hc2spCi0gICAgcmV0dXJuIF9idWlsZF9mcmFtZSho
ZWFkZXIsIGZyYW1lLnBheWxvYWQsIG1hc2spCi0KLQotZGVmIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
Ci0gICAgbWVzc2FnZSwgb3Bjb2RlPWNvbW1vbi5PUENPREVfQklOQVJZLCBmaW49MSwgbWFzaz1G
YWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkg
ZnJhbWUgd2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKLQotICAgIGZyYW1lID0g
RnJhbWUoZmluPWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQotICAgIHJldHVy
biBfZmlsdGVyX2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0
ZXJzKQotCi0KLWRlZiBjcmVhdGVfdGV4dF9mcmFtZSgKLSAgICBtZXNzYWdlLCBvcGNvZGU9Y29t
bW9uLk9QQ09ERV9URVhULCBmaW49MSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0g
ICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0IGZyYW1lIHdpdGggbm8gZXh0ZW5zaW9uLCByZXNl
cnZlZCBiaXQuIiIiCi0KLSAgICBlbmNvZGVkX21lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRm
LTgnKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKGVuY29kZWRfbWVzc2FnZSwgb3Bj
b2RlLCBmaW4sIG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZmls
dGVycykKLQotCi1kZWYgcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcywgbG9nZ2VyPU5vbmUsCi0g
ICAgICAgICAgICAgICAgd3NfdmVyc2lvbj1jb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCwKLSAg
ICAgICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1UcnVlKToKLSAgICAiIiJQYXJzZXMgYSBmcmFt
ZS4gUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgZWFjaCBoZWFkZXIgZmllbGQgYW5kCi0gICAg
cGF5bG9hZC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlY2VpdmVfYnl0ZXM6IGEgZnVuY3Rpb24g
dGhhdCByZWFkcyBmcmFtZSBkYXRhIGZyb20gYSBzdHJlYW0gb3IKLSAgICAgICAgICAgIHNvbWV0
aGluZyBzaW1pbGFyLiBUaGUgZnVuY3Rpb24gdGFrZXMgbGVuZ3RoIG9mIHRoZSBieXRlcyB0byBi
ZQotICAgICAgICAgICAgcmVhZC4gVGhlIGZ1bmN0aW9uIG11c3QgcmFpc2UgQ29ubmVjdGlvblRl
cm1pbmF0ZWRFeGNlcHRpb24gaWYKLSAgICAgICAgICAgIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0
YSB0byBiZSByZWFkLgotICAgICAgICBsb2dnZXI6IGEgbG9nZ2luZyBvYmplY3QuCi0gICAgICAg
IHdzX3ZlcnNpb246IHRoZSB2ZXJzaW9uIG9mIFdlYlNvY2tldCBwcm90b2NvbC4KLSAgICAgICAg
dW5tYXNrX3JlY2VpdmU6IHVubWFzayByZWNlaXZlZCBmcmFtZXMuIFdoZW4gcmVjZWl2ZWQgdW5t
YXNrZWQKLSAgICAgICAgICAgIGZyYW1lLCByYWlzZXMgSW52YWxpZEZyYW1lRXhjZXB0aW9uLgot
Ci0gICAgUmFpc2VzOgotICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hl
biByZWNlaXZlX2J5dGVzIHJhaXNlcyBpdC4KLSAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9u
OiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCi0gICAgIiIiCi0KLSAgICBp
ZiBub3QgbG9nZ2VyOgotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0KLSAg
ICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSB0aGUgZmlyc3QgMiBv
Y3RldHMgb2YgYSBmcmFtZScpCi0KLSAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoMikKLQot
ICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5dGUg
Pj4gNykgJiAxCi0gICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIgPSAo
Zmlyc3RfYnl0ZSA+PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0g
ICAgb3Bjb2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQocmVj
ZWl2ZWRbMV0pCi0gICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXlsb2Fk
X2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9H
TEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9JXMsIFJT
VjM9JXMsIG9wY29kZT0lcywgJwotICAgICAgICAgICAgICAgJ01hc2s9JXMsIFBheWxvYWRfbGVu
Z3RoPSVzJywKLSAgICAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBt
YXNrLCBwYXlsb2FkX2xlbmd0aCkKLQotICAgIGlmIChtYXNrID09IDEpICE9IHVubWFza19yZWNl
aXZlOgotICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAn
TWFzayBiaXQgb24gdGhlIHJlY2VpdmVkIGZyYW1lIGRpZFwnbnQgbWF0Y2ggbWFza2luZyAnCi0g
ICAgICAgICAgICAnY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZWQgZnJhbWVzJykKLQotICAgICMg
VGhlIEh5QmkgYW5kIGxhdGVyIHNwZWNzIGRpc2FsbG93IHB1dHRpbmcgYSB2YWx1ZSBpbiAweDAt
MHhGRkZGCi0gICAgIyBpbnRvIHRoZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZp
ZWxkIChvciAweDAtMHhGRCBpbgotICAgICMgMi1vY3RldCBmaWVsZCkuCi0gICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gVHJ1ZQotICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDEKLSAgICBp
ZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjc6Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgOC1vY3RldCBleHRlbmRlZCBw
YXlsb2FkIGxlbmd0aCcpCi0KLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNl
aXZlX2J5dGVzKDgpCi0gICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKLSAg
ICAgICAgICAgICchUScsIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoKVswXQotICAgICAgICBpZiBw
YXlsb2FkX2xlbmd0aCA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXh0ZW5kZWQgcGF5bG9hZCBs
ZW5ndGggPj0gMl42MycpCi0gICAgICAgIGlmIHdzX3ZlcnNpb24gPj0gMTMgYW5kIHBheWxvYWRf
bGVuZ3RoIDwgMHgxMDAwMDoKLSAgICAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZh
bHNlCi0gICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSA4Ci0KLSAgICAgICAgbG9n
Z2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAnRGVjb2Rl
ZF9wYXlsb2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQotICAgIGVsaWYgcGF5bG9hZF9s
ZW5ndGggPT0gMTI2OgotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAot
ICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDItb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5n
dGgnKQotCi0gICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcygy
KQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAgICAn
IUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgaWYgd3NfdmVyc2lvbiA+
PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6Ci0gICAgICAgICAgICB2YWxpZF9sZW5ndGhf
ZW5jb2RpbmcgPSBGYWxzZQotICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMgot
Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAg
ICAgICAgJ0RlY29kZWRfcGF5bG9hZF9sZW5ndGg9JXMnLCBwYXlsb2FkX2xlbmd0aCkKLQotICAg
IGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6Ci0gICAgICAgIGxvZ2dlci53YXJuaW5nKAot
ICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBtaW5p
bWFsIG51bWJlciBvZiAnCi0gICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNpbmcg
JWQgYnl0ZXMpJywKLSAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoLAotICAgICAgICAgICAgbGVu
Z3RoX2VuY29kaW5nX2J5dGVzKQotCi0gICAgaWYgbWFzayA9PSAxOgotICAgICAgICBsb2dnZXIu
bG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSBtYXNrJykKLQotICAgICAgICBtYXNr
aW5nX25vbmNlID0gcmVjZWl2ZV9ieXRlcyg0KQotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVh
dGVkWG9yTWFza2VyKG1hc2tpbmdfbm9uY2UpCi0KLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ01hc2s9JXInLCBtYXNraW5nX25vbmNlKQotICAgIGVsc2U6Ci0gICAg
ICAgIG1hc2tlciA9IF9OT09QX01BU0tFUgotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVW
RUxfRklORSwgJ1JlY2VpdmUgcGF5bG9hZCBkYXRhJykKLSAgICBpZiBsb2dnZXIuaXNFbmFibGVk
Rm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgcmVjZWl2ZV9zdGFydCA9IHRpbWUu
dGltZSgpCi0KLSAgICByYXdfcGF5bG9hZF9ieXRlcyA9IHJlY2VpdmVfYnl0ZXMocGF5bG9hZF9s
ZW5ndGgpCi0KLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5F
KToKLSAgICAgICAgbG9nZ2VyLmxvZygKLSAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAotICAgICAgICAgICAgJ0RvbmUgcmVjZWl2aW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywK
LSAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2ZV9zdGFy
dCkgLyAxMDAwIC8gMTAwMCkKLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
VW5tYXNrIHBheWxvYWQgZGF0YScpCi0KLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1v
bi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1lKCkKLQot
ICAgIHVubWFza2VkX2J5dGVzID0gbWFza2VyLm1hc2socmF3X3BheWxvYWRfYnl0ZXMpCi0KLSAg
ICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAg
bG9nZ2VyLmxvZygKLSAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAg
ICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKLSAgICAgICAgICAg
IHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gdW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAx
MDAwKQotCi0gICAgcmV0dXJuIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2
MiwgcnN2MwotCi0KLWNsYXNzIEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIob2JqZWN0KToKLSAgICAi
IiJBIHN0YXRlZnVsIGNsYXNzIHRvIHNlbmQgYSBtZXNzYWdlIGFzIGZyYWdtZW50cy4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNrLCBmcmFtZV9maWx0ZXJzPVtdLCBlbmNvZGVfdXRm
OD1UcnVlKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4iIiIKLQotICAgICAg
ICBzZWxmLl9tYXNrID0gbWFzawotICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzID0gZnJhbWVf
ZmlsdGVycwotICAgICAgICAjIFRoaXMgaXMgZm9yIHNraXBwaW5nIFVURi04IGVuY29kaW5nIHdo
ZW4gYnVpbGRpbmcgdGV4dCB0eXBlIGZyYW1lcwotICAgICAgICAjIGZyb20gY29tcHJlc3NlZCBk
YXRhLgotICAgICAgICBzZWxmLl9lbmNvZGVfdXRmOCA9IGVuY29kZV91dGY4Ci0KLSAgICAgICAg
c2VsZi5fc3RhcnRlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBIb2xkIG9wY29kZSBvZiB0aGUgZmly
c3QgZnJhbWUgaW4gbWVzc2FnZXMgdG8gdmVyaWZ5IHR5cGVzIG9mIG90aGVyCi0gICAgICAgICMg
ZnJhbWVzIGluIHRoZSBtZXNzYWdlIGFyZSBhbGwgdGhlIHNhbWUuCi0gICAgICAgIHNlbGYuX29w
Y29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAotCi0gICAgZGVmIGJ1aWxkKHNlbGYsIHBheWxvYWRf
ZGF0YSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBmcmFt
ZV90eXBlID0gY29tbW9uLk9QQ09ERV9CSU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGZyYW1lX3R5cGUgPSBjb21tb24uT1BDT0RFX1RFWFQKLSAgICAgICAgaWYgc2VsZi5fc3RhcnRl
ZDoKLSAgICAgICAgICAgIGlmIHNlbGYuX29wY29kZSAhPSBmcmFtZV90eXBlOgotICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiBm
cmFtZXMgZm9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBt
ZXNzYWdlJykKLSAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9O
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCi0gICAgICAg
ICAgICBzZWxmLl9vcGNvZGUgPSBmcmFtZV90eXBlCi0KLSAgICAgICAgaWYgZW5kOgotICAgICAg
ICAgICAgc2VsZi5fc3RhcnRlZCA9IEZhbHNlCi0gICAgICAgICAgICBmaW4gPSAxCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gVHJ1ZQotICAgICAgICAgICAgZmlu
ID0gMAotCi0gICAgICAgIGlmIGJpbmFyeSBvciBub3Qgc2VsZi5fZW5jb2RlX3V0Zjg6Ci0gICAg
ICAgICAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAgICAgICAgICAgICBwYXls
b2FkX2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLCBzZWxmLl9mcmFtZV9maWx0ZXJzKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKAotICAg
ICAgICAgICAgICAgIHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssIHNlbGYu
X2ZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIF9jcmVhdGVfY29udHJvbF9mcmFtZShvcGNvZGUsIGJv
ZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgotICAgIGZyYW1lID0gRnJhbWUob3Bjb2RlPW9wY29k
ZSwgcGF5bG9hZD1ib2R5KQotCi0gICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJz
OgotICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgaWYgbGVuKGZyYW1l
LnBheWxvYWQpID4gMTI1OgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0g
ICAgICAgICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVzdCBiZSAx
MjUgYnl0ZXMgb3IgbGVzcycpCi0KLSAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKAotICAgICAg
ICBmcmFtZS5vcGNvZGUsIGxlbihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAotICAgICAgICBm
cmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzLCBtYXNrKQotICAgIHJldHVybiBfYnVp
bGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXlsb2FkLCBtYXNrKQotCi0KLWRlZiBjcmVhdGVfcGlu
Z19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUElORywgYm9keSwgbWFzaywgZnJh
bWVfZmlsdGVycykKLQotCi1kZWYgY3JlYXRlX3BvbmdfZnJhbWUoYm9keSwgbWFzaz1GYWxzZSwg
ZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVfY29udHJvbF9mcmFtZShjb21t
b24uT1BDT0RFX1BPTkcsIGJvZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNyZWF0
ZV9jbG9zZV9mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICBy
ZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1lKAotICAgICAgICBjb21tb24uT1BDT0RFX0NMT1NF
LCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBjcmVhdGVfY2xvc2luZ19oYW5k
c2hha2VfYm9keShjb2RlLCByZWFzb24pOgotICAgIGJvZHkgPSAnJwotICAgIGlmIGNvZGUgaXMg
bm90IE5vbmU6Ci0gICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVf
TUFYIG9yCi0gICAgICAgICAgICBjb2RlIDwgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6
Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlz
IG91dCBvZiByYW5nZScpCi0gICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfTk9fU1RB
VFVTX1JFQ0VJVkVEIG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfQUJOT1JN
QUxfQ0xPU1VSRSBvcgotICAgICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX1RMU19IQU5E
U0hBS0UpOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMg
Y29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJwotICAgICAgICAgICAgICAgICdjb2RlJykKLSAgICAg
ICAgZW5jb2RlZF9yZWFzb24gPSByZWFzb24uZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGJvZHkg
PSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIGVuY29kZWRfcmVhc29uCi0gICAgcmV0dXJuIGJv
ZHkKLQotCi1jbGFzcyBTdHJlYW1PcHRpb25zKG9iamVjdCk6Ci0gICAgIiIiSG9sZHMgb3B0aW9u
IHZhbHVlcyB0byBjb25maWd1cmUgU3RyZWFtIG9iamVjdHMuIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZik6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgU3RyZWFtT3B0aW9ucy4iIiIKLQotICAg
ICAgICAjIEZpbHRlcnMgYXBwbGllZCB0byBmcmFtZXMuCi0gICAgICAgIHNlbGYub3V0Z29pbmdf
ZnJhbWVfZmlsdGVycyA9IFtdCi0gICAgICAgIHNlbGYuaW5jb21pbmdfZnJhbWVfZmlsdGVycyA9
IFtdCi0KLSAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gbWVzc2FnZXMuIENvbnRyb2wgZnJh
bWVzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlbS4KLSAgICAgICAgc2VsZi5vdXRnb2luZ19tZXNz
YWdlX2ZpbHRlcnMgPSBbXQotICAgICAgICBzZWxmLmluY29taW5nX21lc3NhZ2VfZmlsdGVycyA9
IFtdCi0KLSAgICAgICAgc2VsZi5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBUcnVlCi0g
ICAgICAgIHNlbGYubWFza19zZW5kID0gRmFsc2UKLSAgICAgICAgc2VsZi51bm1hc2tfcmVjZWl2
ZSA9IFRydWUKLQotCi1jbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBm
b3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbAotICAg
IChSRkMgNjQ1NSkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwg
b3B0aW9ucyk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgU3RyZWFtQmFzZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotCi0gICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRf
dGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0
ZWQgPSBGYWxzZQotCi0gICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBmcmFnbWVudHMu
Ci0gICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgICMgSG9sZHMg
dGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCi0gICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IE5vbmUKLQotICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVudGVkRnJhbWVC
dWlsZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNlbGYuX29wdGlv
bnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5j
b2RlX3RleHRfbWVzc2FnZV90b191dGY4KQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUgPSBk
ZXF1ZSgpCi0KLSAgICBkZWYgX3JlY2VpdmVfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlJlY2Vp
dmVzIGEgZnJhbWUgYW5kIHJldHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRh
aW5pbmcKLSAgICAgICAgZWFjaCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4K
LQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkKLSAgICAgICAgICAgICAgICBzdHJpbmcuCi0g
ICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5z
IGludmFsaWQgZGF0YS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVz
KGxlbmd0aCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlX2J5dGVzKGxlbmd0aCkK
LQotICAgICAgICByZXR1cm4gcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcz1fcmVjZWl2ZV9ieXRl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1zZWxmLl9sb2dnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICB3c192ZXJzaW9uPXNlbGYuX3JlcXVlc3Qud3NfdmVyc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubWFza19yZWNlaXZlPXNlbGYuX29wdGlv
bnMudW5tYXNrX3JlY2VpdmUpCi0KLSAgICBkZWYgX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2Jq
ZWN0KHNlbGYpOgotICAgICAgICBvcGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJz
djIsIHJzdjMgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lKCkKLQotICAgICAgICByZXR1cm4gRnJhbWUo
ZmluPWZpbiwgcnN2MT1yc3YxLCByc3YyPXJzdjIsIHJzdjM9cnN2MywKLSAgICAgICAgICAgICAg
ICAgICAgIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9dW5tYXNrZWRfYnl0ZXMpCi0KLSAgICBkZWYg
cmVjZWl2ZV9maWx0ZXJlZF9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgYSBmcmFt
ZSBhbmQgYXBwbGllcyBmcmFtZSBmaWx0ZXJzIGFuZCBtZXNzYWdlIGZpbHRlcnMuCi0gICAgICAg
IFRoZSBmcmFtZSB0byBiZSByZWNlaXZlZCBtdXN0IHNhdGlzZnkgZm9sbG93aW5nIGNvbmRpdGlv
bnM6Ci0gICAgICAgIC0gVGhlIGZyYW1lIGlzIG5vdCBmcmFnbWVudGVkLgotICAgICAgICAtIFRo
ZSBvcGNvZGUgb2YgdGhlIGZyYW1lIGlzIFRFWFQgb3IgQklOQVJZLgotCi0gICAgICAgIERPIE5P
VCBVU0UgdGhpcyBtZXRob2QgZXhjZXB0IGZvciB0ZXN0aW5nIHB1cnBvc2UuCi0gICAgICAgICIi
IgotCi0gICAgICAgIGZyYW1lID0gc2VsZi5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3Qo
KQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZy
YW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZWdtZW50ZWQgZnJhbWVzIG11c3Qgbm90
IGJlIHJlY2VpdmVkIHZpYSAnCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVfZmlsdGVyZWRfZnJh
bWUoKScpCi0gICAgICAgIGlmIChmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9URVhUIGFu
ZAotICAgICAgICAgICAgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQklOQVJZKToKLSAg
ICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
Q29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKLSAgICAgICAgICAgICAg
ICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKLQotICAgICAgICBmb3IgZnJhbWVfZmlsdGVy
IGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKLSAgICAgICAgICAgIGZy
YW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0gICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBz
ZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKLSAgICAgICAgICAgIGZyYW1l
LnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAg
cmV0dXJuIGZyYW1lCi0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1U
cnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICAiIiJTZW5kIG1lc3NhZ2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29kZSBvciBiaW5hcnkgaW4g
c3RyIHRvIHNlbmQuCi0gICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVzc2FnZSBhcyBiaW5hcnkg
ZnJhbWUuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCi0gICAgICAgICAgICAgICAg
Y29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVzc2FnZSB0eXBlIG9yCi0g
ICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAg
aWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHNlbmRfbWVz
c2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtlJykKLQotICAgICAgICBp
ZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICBy
YWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ01lc3NhZ2UgZm9y
IGJpbmFyeSBmcmFtZSBtdXN0IGJlIGluc3RhbmNlIG9mIHN0cicpCi0KLSAgICAgICAgZm9yIG1l
c3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzOgot
ICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlLCBlbmQs
IGJpbmFyeSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFNldCB0aGlzIHRvIGFueSBw
b3NpdGl2ZSBpbnRlZ2VyIHRvIGxpbWl0IG1heGltdW0gc2l6ZSBvZiBkYXRhIGluCi0gICAgICAg
ICAgICAjIHBheWxvYWQgZGF0YSBvZiBlYWNoIGZyYW1lLgotICAgICAgICAgICAgTUFYX1BBWUxP
QURfREFUQV9TSVpFID0gLTEKLQotICAgICAgICAgICAgaWYgTUFYX1BBWUxPQURfREFUQV9TSVpF
IDw9IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoc2VsZi5fd3JpdGVyLmJ1aWxkKG1l
c3NhZ2UsIGVuZCwgYmluYXJ5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAg
ICAgYnl0ZXNfd3JpdHRlbiA9IDAKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAg
ICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gZW5kCi0gICAgICAgICAgICAgICAgYnl0ZXNfdG9f
d3JpdGUgPSBsZW4obWVzc2FnZSkgLSBieXRlc193cml0dGVuCi0gICAgICAgICAgICAgICAgaWYg
KE1BWF9QQVlMT0FEX0RBVEFfU0laRSA+IDAgYW5kCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVz
X3RvX3dyaXRlID4gTUFYX1BBWUxPQURfREFUQV9TSVpFKToKLSAgICAgICAgICAgICAgICAgICAg
ZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9f
d3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRBX1NJWkUKLQotICAgICAgICAgICAgICAgIGZyYW1lID0g
c2VsZi5fd3JpdGVyLmJ1aWxkKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dy
aXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5dGVzX3RvX3dyaXRlXSwKLSAgICAgICAgICAgICAgICAg
ICAgZW5kX2Zvcl90aGlzX2ZyYW1lLAotICAgICAgICAgICAgICAgICAgICBiaW5hcnkpCi0gICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICAgICAgICAgICAgICBieXRlc193
cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCi0KLSAgICAgICAgICAgICAgICAjIFRoaXMgaWYgbXVz
dCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28gdGhhdAotICAgICAg
ICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCi0gICAgICAgICAgICAgICAg
aWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBC
YWRPcGVyYXRpb25FeGNlcHRpb24oZSkKLQotICAgIGRlZiBfZ2V0X21lc3NhZ2VfZnJvbV9mcmFt
ZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZyb20gZnJhbWUuIElm
IHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKLSAgICAgICAgZnJhbWVzIGFu
ZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUsIHRoaXMgbWV0aG9k
Ci0gICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5l
ZCB3aGVuIHRoZSBsYXN0Ci0gICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMgcGFzc2VkIHRvIHRo
aXMgbWV0aG9kLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4
Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdtZW50YXRpb24KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRh
LgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09E
RV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVjZWl2ZWRfZnJhZ21l
bnRzOgotICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1Jl
Y2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1lIGJ1dCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRlZCcpCi0KLSAgICAg
ICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAjIEVuZCBvZiBmcmFnbWVudGF0
aW9uIGZyYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVu
ZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJy5qb2luKHNlbGYu
X3JlY2VpdmVkX2ZyYWdtZW50cykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFn
bWVudHMgPSBbXQotICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9yZWNlaXZlZF9mcmFnbWVudHM6Ci0gICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gdW5mcmFnbWVudGVkIGZyYW1lIHdpdGhvdXQgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1pbmF0aW5nIGV4aXN0aW5nIGZyYWdtZW50YXRp
b24nKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdOZXcgZnJhZ21l
bnRhdGlvbiBzdGFydGVkIHdpdGhvdXQgdGVybWluYXRpbmcgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2V4aXN0aW5nIGZyYWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBpZiBmcmFtZS5m
aW46Ci0gICAgICAgICAgICAgICAgIyBVbmZyYWdtZW50ZWQgZnJhbWUKLQotICAgICAgICAgICAg
ICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAg
IHJldHVybiBmcmFtZS5wYXlsb2FkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICMgU3RhcnQgb2YgZnJhZ21lbnRhdGlvbiBmcmFtZQotCi0gICAgICAgICAgICAgICAgaWYgY29t
bW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdD
b250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkJykKLQotICAgICAgICAgICAgICAg
IHNlbGYuX29yaWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHNl
bGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgICBtZXNzYWdlOiBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIFJh
aXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgbWVzc2Fn
ZSBpcyBpbnZhbGlkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVu
dF90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgICAgICMgU3RhdHVzIGNvZGUgaXMgb3B0aW9uYWwu
IFdlIGNhbiBoYXZlIHN0YXR1cyByZWFzb24gb25seSBpZiB3ZQotICAgICAgICAjIGhhdmUgc3Rh
dHVzIGNvZGUuIFN0YXR1cyByZWFzb24gY2FuIGJlIGVtcHR5IHN0cmluZy4gU28sCi0gICAgICAg
ICMgYWxsb3dlZCBjYXNlcyBhcmUKLSAgICAgICAgIyAtIG5vIGFwcGxpY2F0aW9uIGRhdGE6IG5v
IGNvZGUgbm8gcmVhc29uCi0gICAgICAgICMgLSAyIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6
IGhhcyBjb2RlIGJ1dCBubyByZWFzb24KLSAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBh
cHBsaWNhdGlvbiBkYXRhOiBib3RoIGNvZGUgYW5kIHJlYXNvbgotICAgICAgICBpZiBsZW4obWVz
c2FnZSkgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xv
c2UgZnJhbWUgKGVtcHR5IGJvZHkpJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xv
c2VfY29kZSA9ICgKLSAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNF
SVZFRCkKLSAgICAgICAgZWxpZiBsZW4obWVzc2FnZSkgPT0gMToKLSAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWYgYSBjbG9zZSBmcmFt
ZSBoYXMgc3RhdHVzIGNvZGUsIHRoZSBsZW5ndGggb2YgJwotICAgICAgICAgICAgICAgICdzdGF0
dXMgY29kZSBtdXN0IGJlIDIgb2N0ZXQnKQotICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAy
OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gc3RydWN0LnVucGFj
aygKLSAgICAgICAgICAgICAgICAnIUgnLCBtZXNzYWdlWzA6Ml0pWzBdCi0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IG1lc3NhZ2VbMjpdLmRlY29kZSgKLSAgICAg
ICAgICAgICAgICAndXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChjb2RlPSVkLCBy
ZWFzb249JXIpJywKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUs
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24pCi0KLSAgICAg
ICAgIyBBcyB3ZSd2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRhdGEgaXMgY29t
aW5nIG92ZXIgdGhlCi0gICAgICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVseSBjbG9zZSB0
aGUgc29ja2V0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQKLSAgICAgICAgIyBSU1Qgc2VuZGluZy4K
LQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9y
IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1JlY2VpdmVkIGNs
aWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGNvZGUgPSBjb21t
b24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgIGlm
IGhhc2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19kaXNwYXRjaGVyJyk6Ci0gICAgICAgICAgICBkaXNw
YXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlzcGF0Y2hlcgotICAgICAgICAgICAgY29kZSwgcmVh
c29uID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAotICAgICAgICAgICAg
ICAgIHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICAgICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNv
biBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci53YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAnSGFuZGxlciBzcGVjaWZpZWQg
cmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKLSAgICAgICAgICAgICAgICByZWFzb24g
PSAnJwotICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVh
c29uID0gJycKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFz
b24pCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY2tub3dsZWRn
ZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcKLSAgICAgICAgICAg
ICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKLQotICAgIGRlZiBfcHJvY2Vz
c19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwaW5n
IG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBpbmcgbWVz
c2FnZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9
IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCi0gICAgICAgICAgICBpZiBoYW5kbGVyOgot
ICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAg
ICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuX3NlbmRfcG9uZyhtZXNzYWdlKQotCi0gICAgZGVm
IF9wcm9jZXNzX3BvbmdfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vz
c2VzIHBvbmcgbWVzc2FnZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTog
cG9uZyBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBB
ZGQgcGluZyB0aW1lb3V0IGhhbmRsaW5nLgotCi0gICAgICAgIGluZmxpZ2h0X3BpbmdzID0gZGVx
dWUoKQotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfYm9keSA9IHNlbGYuX3BpbmdfcXVldWUucG9wbGVmdCgpCi0gICAgICAg
ICAgICAgICAgaWYgZXhwZWN0ZWRfYm9keSA9PSBtZXNzYWdlOgotICAgICAgICAgICAgICAgICAg
ICAjIGluZmxpZ2h0X3BpbmdzIGNvbnRhaW5zIHBpbmdzIGlnbm9yZWQgYnkgdGhlCi0gICAgICAg
ICAgICAgICAgICAgICMgb3RoZXIgcGVlci4gSnVzdCBmb3JnZXQgdGhlbS4KLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1Bp
bmcgJXIgaXMgYWNrZWQgKCVkIHBpbmdzIHdlcmUgaWdub3JlZCknLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfYm9keSwgbGVuKGluZmxpZ2h0X3BpbmdzKSkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICBpbmZsaWdodF9waW5ncy5hcHBlbmQoZXhwZWN0ZWRfYm9keSkKLSAgICAgICAgICAgIGV4Y2Vw
dCBJbmRleEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgIyBUaGUgcmVjZWl2ZWQgcG9uZyB3
YXMgdW5zb2xpY2l0ZWQgcG9uZy4gS2VlcCB0aGUKLSAgICAgICAgICAgICAgICAjIHBpbmcgcXVl
dWUgYXMgaXMuCi0gICAgICAgICAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGluZmxpZ2h0X3Bp
bmdzCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhIHVuc29s
aWNpdGVkIHBvbmcnKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcG9uZ19oYW5kbGVyCi0gICAgICAg
ICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwg
bWVzc2FnZSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJSZWNl
aXZlIGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGlu
Ci0gICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgotCi0gICAgICAgIFJldHVybnM6
Ci0gICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCi0gICAgICAgICAgICAtIGFz
IHVuaWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQotICAgICAgICAgICAgLSBh
cyBzdHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCi0gICAgICAgICAgICBvciBO
b25lIGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgUmFpc2VzOgotICAg
ICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10
ZXJtaW5hdGVkCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAg
ICAgICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hl
biB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAotICAgICAgICAgICAgICAgIGRhdGEuCi0gICAg
ICAgICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFt
ZSBoYXMKLSAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlv
dSBjYW4gaWdub3JlIHRoaXMKLSAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVl
IHJlY2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2Fn
ZSBhZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKLSAgICAgICAgICAgICAgICAnaGFuZHNoYWtl
JykKLQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2ls
bCBibG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0
IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91dCBkaXJlY3RpdmUgb2YgQXBhY2hlLgotCi0gICAgICAg
ICAgICBmcmFtZSA9IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLQotICAg
ICAgICAgICAgIyBDaGVjayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBj
b250cm9sIGZyYW1lcwotICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0
aGUgZnJhbWUuCi0gICAgICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUjc2VjdGlvbi01LjUKLSAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJv
bF9vcGNvZGUoZnJhbWUub3Bjb2RlKSBhbmQKLSAgICAgICAgICAgICAgICBsZW4oZnJhbWUucGF5
bG9hZCkgPiAxMjUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgJ1BheWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJh
bWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAgICAgICAgICAgJ2xlc3MnKQot
Ci0gICAgICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdf
ZnJhbWVfZmlsdGVyczoKLSAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1l
KQotCi0gICAgICAgICAgICBpZiBmcmFtZS5yc3YxIG9yIGZyYW1lLnJzdjIgb3IgZnJhbWUucnN2
MzoKLSAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgZmxhZyBpcyBzZXQgKHJzdiA9ICVkJWQlZCkn
ICUKLSAgICAgICAgICAgICAgICAgICAgKGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJz
djMpKQotCi0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fZ2V0X21lc3NhZ2VfZnJvbV9mcmFt
ZShmcmFtZSkKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAg
ICBjb250aW51ZQotCi0gICAgICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0
aW9ucy5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9
IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9v
cmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9URVhUOgotICAgICAgICAgICAgICAgICMg
VGhlIFdlYlNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlk
Ci0gICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXJzIG11c3QgYmUgcmVwbGFjZWQgd2l0aCBVK2Zm
ZmQgUkVQTEFDRU1FTlQKLSAgICAgICAgICAgICAgICAjIENIQVJBQ1RFUi4KLSAgICAgICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlLmRlY29kZSgndXRm
LTgnKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZToKLSAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24oZSkKLSAgICAgICAg
ICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZOgot
ICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29y
aWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgICAgIHNl
bGYuX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24u
T1BDT0RFX1BJTkc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19waW5nX21lc3NhZ2Uo
bWVzc2FnZSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1v
bi5PUENPREVfUE9ORzoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3BvbmdfbWVzc2Fn
ZShtZXNzYWdlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBVbnN1
cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlICVkIGlz
IG5vdCBzdXBwb3J0ZWQnICUgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlKQotCi0gICAgZGVmIF9zZW5k
X2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIGJvZHkgPSBj
cmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keShjb2RlLCByZWFzb24pCi0gICAgICAgIGZyYW1l
ID0gY3JlYXRlX2Nsb3NlX2ZyYW1lKAotICAgICAgICAgICAgYm9keSwgbWFzaz1zZWxmLl9vcHRp
b25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnM9c2VsZi5fb3B0aW9ucy5v
dXRnb2luZ19mcmFtZV9maWx0ZXJzKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rl
cm1pbmF0ZWQgPSBUcnVlCi0KLSAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYg
Y2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUs
IHJlYXNvbj0nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3Jlc3BvbnNlPVRydWUp
OgotICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gTm90ZSB0aGF0IHRo
aXMgbWV0aG9kIGJsb2NrcyB1bnRpbAotICAgICAgICBpdCByZWNlaXZlcyBhY2tub3dsZWRnZW1l
bnQgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBjb2RlOiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJhbWUuIElmIGNvZGUgaXMgTm9uZSwgYSBj
bG9zZQotICAgICAgICAgICAgICAgIGZyYW1lIHdpdGggZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQu
Ci0gICAgICAgICAgICByZWFzb246IHN0cmluZyByZXByZXNlbnRpbmcgY2xvc2UgcmVhc29uLgot
ICAgICAgICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3aGVuIGNhbGxlciB3YW50IHRvIHdhaXQg
dGhlIHJlc3BvbnNlLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25F
eGNlcHRpb246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmllZCB3aXRoIGNvZGUgTm9uZQotICAgICAg
ICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBib3RoIHN0ciBhbmQgdW5pY29k
ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWlu
YXRlZDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAn
UmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0
ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBj
bG9zZSBmcmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9zZV9tZXNzYWdlKCkuCi0gICAgICAgICMg
X3Byb2Nlc3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0ZWx5IGFja25vd2xlZGdlcyB0byB0aGUK
LSAgICAgICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNl
cnZlcl90ZXJtaW5hdGVkIHRvCi0gICAgICAgICMgVHJ1ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3Vt
ZSB0aGF0IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNsb3NlCi0gICAgICAgICMgZnJhbWUuIFdl
J3JlIGluaXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFrZS4KLQotICAgICAgICBpZiBjb2RlIGlz
IE5vbmU6Ci0gICAgICAgICAgICBpZiByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24p
ID4gMDoKLSAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVzdCBub3QgYmUgc3BlY2lmaWVkIGlmIGNv
ZGUgaXMgTm9uZScpCi0gICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29uLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5j
ZShyZWFzb24sIHVuaWNvZGUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIHN0ciBvciB1bmljb2RlJykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3Npbmdf
aGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ0luaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVy
KScsCi0gICAgICAgICAgICBjb2RlLCByZWFzb24pCi0KLSAgICAgICAgaWYgKGNvZGUgPT0gY29t
bW9uLlNUQVRVU19HT0lOR19BV0FZIG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFU
VVNfUFJPVE9DT0xfRVJST1IpIG9yIG5vdCB3YWl0X3Jlc3BvbnNlOgotICAgICAgICAgICAgIyBJ
dCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBpZiB0aGUgcmVh
c29uIGlzCi0gICAgICAgICAgICAjIHByb3RvY29sIGVycm9yIG9yIHRoYXQgdGhlIHNlcnZlciBp
cyBnb2luZyBhd2F5LiBGb3Igc29tZSBvZgotICAgICAgICAgICAgIyBvdGhlciByZWFzb25zLCBp
dCBtaWdodCBub3QgbWFrZSBzZW5zZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lLAotICAgICAg
ICAgICAgIyBidXQgaXQncyBub3QgY2xlYXIsIHlldC4KLSAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgICMgVE9ETyh1a2FpKTogMi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJtaW5hdGVk
LyBmbGFnIGhhcyBiZWVuIHNldCwKLSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1kZWZpbmVk
IHRpbWVvdXQgZXhwaXJlcy4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdlIGV4cGVj
dCByZWNlaXZpbmcgY2xvc2luZyBoYW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwotICAgICAg
ICAjIG91dCBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2
ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdE
aWRuXCd0IHJlY2VpdmUgdmFsaWQgYWNrIGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAg
ICMgVE9ETzogMy4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICAjIG5v
dGU6IG1vZF9weXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1l
dGhvZC4KLQotICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGZyYW1l
ID0gY3JlYXRlX3BpbmdfZnJhbWUoCi0gICAgICAgICAgICBib2R5LAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5tYXNrX3NlbmQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5n
X2ZyYW1lX2ZpbHRlcnMpCi0gICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgICAgIHNl
bGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBi
b2R5KToKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZSgKLSAgICAgICAgICAgIGJv
ZHksCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLSAgICAgICAgc2VsZi5fd3JpdGUo
ZnJhbWUpCi0KLSAgICBkZWYgZ2V0X2xhc3RfcmVjZWl2ZWRfb3Bjb2RlKHNlbGYpOgotICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBvcGNvZGUgb2YgdGhlIFdlYlNvY2tldCBtZXNzYWdlIHdoaWNoIHRo
ZSBsYXN0IHJlY2VpdmVkCi0gICAgICAgIGZyYW1lIGJlbG9uZ3MgdG8uIFRoZSByZXR1cm4gdmFs
dWUgaXMgdmFsaWQgaWZmIGltbWVkaWF0ZWx5IGFmdGVyCi0gICAgICAgIHJlY2VpdmVfbWVzc2Fn
ZSBjYWxsLgotICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC9jb21tb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9jb21tb24ucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNzNkNjY1NjBkNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCww
IEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgbXVzdCBub3QgZGVwZW5kIG9u
IGFueSBtb2R1bGUgc3BlY2lmaWMgdG8gdGhlIFdlYlNvY2tldCBwcm90b2NvbC4KLSIiIgotCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotIyBBZGRp
dGlvbmFsIGxvZyBsZXZlbCBkZWZpbml0aW9ucy4KLUxPR0xFVkVMX0ZJTkUgPSA5Ci0KLSMgQ29u
c3RhbnRzIGluZGljYXRpbmcgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24uCi1WRVJTSU9OX0hJ
WElFNzUgPSAtMQotVkVSU0lPTl9IWUJJMDAgPSAwCi1WRVJTSU9OX0hZQkkwMSA9IDEKLVZFUlNJ
T05fSFlCSTAyID0gMgotVkVSU0lPTl9IWUJJMDMgPSAyCi1WRVJTSU9OX0hZQkkwNCA9IDQKLVZF
UlNJT05fSFlCSTA1ID0gNQotVkVSU0lPTl9IWUJJMDYgPSA2Ci1WRVJTSU9OX0hZQkkwNyA9IDcK
LVZFUlNJT05fSFlCSTA4ID0gOAotVkVSU0lPTl9IWUJJMDkgPSA4Ci1WRVJTSU9OX0hZQkkxMCA9
IDgKLVZFUlNJT05fSFlCSTExID0gOAotVkVSU0lPTl9IWUJJMTIgPSA4Ci1WRVJTSU9OX0hZQkkx
MyA9IDEzCi1WRVJTSU9OX0hZQkkxNCA9IDEzCi1WRVJTSU9OX0hZQkkxNSA9IDEzCi1WRVJTSU9O
X0hZQkkxNiA9IDEzCi1WRVJTSU9OX0hZQkkxNyA9IDEzCi0KLSMgQ29uc3RhbnRzIGluZGljYXRp
bmcgV2ViU29ja2V0IHByb3RvY29sIGxhdGVzdCB2ZXJzaW9uLgotVkVSU0lPTl9IWUJJX0xBVEVT
VCA9IFZFUlNJT05fSFlCSTEzCi0KLSMgUG9ydCBudW1iZXJzCi1ERUZBVUxUX1dFQl9TT0NLRVRf
UE9SVCA9IDgwCi1ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0NDMKLQotIyBTY2hl
bWVzCi1XRUJfU09DS0VUX1NDSEVNRSA9ICd3cycKLVdFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSA9
ICd3c3MnCi0KLSMgRnJhbWUgb3Bjb2RlcyBkZWZpbmVkIGluIHRoZSBzcGVjLgotT1BDT0RFX0NP
TlRJTlVBVElPTiA9IDB4MAotT1BDT0RFX1RFWFQgPSAweDEKLU9QQ09ERV9CSU5BUlkgPSAweDIK
LU9QQ09ERV9DTE9TRSA9IDB4OAotT1BDT0RFX1BJTkcgPSAweDkKLU9QQ09ERV9QT05HID0gMHhh
Ci0KLSMgVVVJRHMgdXNlZCBieSBIeUJpIDA0IGFuZCBsYXRlciBvcGVuaW5nIGhhbmRzaGFrZSBh
bmQgZnJhbWUgbWFza2luZy4KLVdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9ICcyNThFQUZBNS1FOTE0
LTQ3REEtOTVDQS1DNUFCMERDODVCMTEnCi0KLSMgT3BlbmluZyBoYW5kc2hha2UgaGVhZGVyIG5h
bWVzIGFuZCBleHBlY3RlZCB2YWx1ZXMuCi1VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlJwotV0VC
U09DS0VUX1VQR1JBREVfVFlQRSA9ICd3ZWJzb2NrZXQnCi1XRUJTT0NLRVRfVVBHUkFERV9UWVBF
X0hJWElFNzUgPSAnV2ViU29ja2V0JwotQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbicK
LVVQR1JBREVfQ09OTkVDVElPTl9UWVBFID0gJ1VwZ3JhZGUnCi1IT1NUX0hFQURFUiA9ICdIb3N0
JwotT1JJR0lOX0hFQURFUiA9ICdPcmlnaW4nCi1TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIg
PSAnU2VjLVdlYlNvY2tldC1PcmlnaW4nCi1TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIgPSAnU2Vj
LVdlYlNvY2tldC1LZXknCi1TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIgPSAnU2VjLVdlYlNv
Y2tldC1BY2NlcHQnCi1TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSID0gJ1NlYy1XZWJTb2Nr
ZXQtVmVyc2lvbicKLVNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSID0gJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wnCi1TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSID0gJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucycKLVNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSID0gJ1NlYy1XZWJT
b2NrZXQtRHJhZnQnCi1TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQt
S2V5MScKLVNFQ19XRUJTT0NLRVRfS0VZMl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1LZXkyJwot
U0VDX1dFQlNPQ0tFVF9MT0NBVElPTl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbicK
LQotIyBFeHRlbnNpb25zCi1ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICdkZWZsYXRlLWZyYW1l
JwotUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxhdGUnCi1Y
X1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1kZWZsYXRlLWZyYW1l
JwotTVVYX0VYVEVOU0lPTiA9ICdtdXhfRE9fTk9UX1VTRScKLQotIyBTdGF0dXMgY29kZXMKLSMg
Q29kZSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVELCBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRSwg
YW5kCi0jIFNUQVRVU19UTFNfSEFORFNIQUtFIGFyZSBwc2V1ZG8gY29kZXMgdG8gaW5kaWNhdGUg
c3BlY2lmaWMgZXJyb3IgY2FzZXMuCi0jIENvdWxkIG5vdCBiZSB1c2VkIGZvciBjb2RlcyBpbiBh
Y3R1YWwgY2xvc2luZyBmcmFtZXMuCi0jIEFwcGxpY2F0aW9uIGxldmVsIGVycm9ycyBtdXN0IHVz
ZSBjb2RlcyBpbiB0aGUgcmFuZ2UKLSMgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFIHRvIFNU
QVRVU19VU0VSX1BSSVZBVEVfTUFYLiBUaGUgY29kZXMgaW4gdGhlCi0jIHJhbmdlIFNUQVRVU19V
U0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCBhcmUgbWFu
YWdlZAotIyBieSBJQU5BLiBVc3VhbGx5IGFwcGxpY2F0aW9uIG11c3QgZGVmaW5lIHVzZXIgcHJv
dG9jb2wgbGV2ZWwgZXJyb3JzIGluIHRoZQotIyByYW5nZSBTVEFUVVNfVVNFUl9QUklWQVRFX0JB
U0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguCi1TVEFUVVNfTk9STUFMX0NMT1NVUkUgPSAx
MDAwCi1TVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKLVNUQVRVU19QUk9UT0NPTF9FUlJPUiA9IDEw
MDIKLVNUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAwMwotU1RBVFVTX05PX1NUQVRVU19SRUNF
SVZFRCA9IDEwMDUKLVNUQVRVU19BQk5PUk1BTF9DTE9TVVJFID0gMTAwNgotU1RBVFVTX0lOVkFM
SURfRlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNwotU1RBVFVTX1BPTElDWV9WSU9MQVRJT04gPSAx
MDA4Ci1TVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQotU1RBVFVTX01BTkRBVE9SWV9FWFRF
TlNJT04gPSAxMDEwCi1TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IgPSAxMDExCi1TVEFU
VVNfVExTX0hBTkRTSEFLRSA9IDEwMTUKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfQkFTRSA9IDMw
MDAKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfTUFYID0gMzk5OQotU1RBVFVTX1VTRVJfUFJJVkFU
RV9CQVNFID0gNDAwMAotU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggPSA0OTk5Ci0jIEZvbGxvd2lu
ZyBkZWZpbml0aW9ucyBhcmUgYWxpYXNlcyB0byBrZWVwIGNvbXBhdGliaWxpdHkuIEFwcGxpY2F0
aW9ucyBtdXN0Ci0jIG5vdCB1c2UgdGhlc2Ugb2Jzb2xldGVkIGRlZmluaXRpb25zIGFueW1vcmUu
Ci1TVEFUVVNfTk9STUFMID0gU1RBVFVTX05PUk1BTF9DTE9TVVJFCi1TVEFUVVNfVU5TVVBQT1JU
RUQgPSBTVEFUVVNfVU5TVVBQT1JURURfREFUQQotU1RBVFVTX0NPREVfTk9UX0FWQUlMQUJMRSA9
IFNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQKLVNUQVRVU19BQk5PUk1BTF9DTE9TRSA9IFNUQVRV
U19BQk5PUk1BTF9DTE9TVVJFCi1TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEID0gU1RBVFVT
X0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBCi1TVEFUVVNfTUFOREFUT1JZX0VYVCA9IFNUQVRV
U19NQU5EQVRPUllfRVhURU5TSU9OCi0KLSMgSFRUUCBzdGF0dXMgY29kZXMKLUhUVFBfU1RBVFVT
X0JBRF9SRVFVRVNUID0gNDAwCi1IVFRQX1NUQVRVU19GT1JCSURERU4gPSA0MDMKLUhUVFBfU1RB
VFVTX05PVF9GT1VORCA9IDQwNAotCi0KLWRlZiBpc19jb250cm9sX29wY29kZShvcGNvZGUpOgot
ICAgIHJldHVybiAob3Bjb2RlID4+IDMpID09IDEKLQotCi1jbGFzcyBFeHRlbnNpb25QYXJhbWV0
ZXIob2JqZWN0KToKLQotICAgICIiIlRoaXMgaXMgZXhjaGFuZ2VkIG9uIGV4dGVuc2lvbiBuZWdv
dGlhdGlvbiBpbiBvcGVuaW5nIGhhbmRzaGFrZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lKToKLSAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLSAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBtb3JlIGVmZmljaWVudCBvbmUgc3Vj
aAotICAgICAgICAjIGFzIGRpY3Qgd2hlbiB0aGUgc3BlYyBjaGFuZ2VzIHRvIHNheSBsaWtlCi0g
ICAgICAgICMgLSBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSB1bmlxdWUKLSAgICAgICAgIyAtIFRo
ZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIG5vdCBzaWduaWZpY2FudAotICAgICAgICBzZWxmLl9w
YXJhbWV0ZXJzID0gW10KLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4g
dGhlIGV4dGVuc2lvbiBuYW1lLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQotCi0gICAg
ZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICAiIiJBZGQgYSBw
YXJhbWV0ZXIuIiIiCi0gICAgICAgIHNlbGYuX3BhcmFtZXRlcnMuYXBwZW5kKChuYW1lLCB2YWx1
ZSkpCi0KLSAgICBkZWYgZ2V0X3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgcGFyYW1ldGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKLQotICAg
IGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5h
bWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIiIgotICAgICAgICByZXR1cm4gW25hbWUgZm9yIG5hbWUs
IHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQotCi0gICAgZGVmIGhhc19wYXJhbWV0
ZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlRlc3QgaWYgYSBwYXJhbWV0ZXIgZXhpc3RzLiIi
IgotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVy
czoKLSAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFtZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBnZXRfcGFyYW1ldGVy
X3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJHZXQgdGhlIHZhbHVlIG9mIGEgc3BlY2lm
aWMgcGFyYW1ldGVyLiIiIgotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4g
c2VsZi5fcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFtZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKLQotCi1jbGFzcyBFeHRlbnNpb25QYXJz
aW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0KLSAgICAiIiJFeGNlcHRpb24gdG8gaGFuZGxlIGVy
cm9ycyBpbiBleHRlbnNpb24gcGFyc2luZy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu
YW1lKToKLSAgICAgICAgc3VwZXIoRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgc2VsZikuX19p
bml0X18obmFtZSkKLQotCi1kZWYgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0ZSwgZGVmaW5p
dGlvbik6Ci0gICAgcGFyYW1fbmFtZSA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihz
dGF0ZSkKLQotICAgIGlmIHBhcmFtX25hbWUgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgRXh0ZW5z
aW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgcGFyYW1ldGVyIG5hbWUgZm91bmQnKQotCi0g
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgaWYgbm90IGh0
dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc9Jyk6Ci0gICAgICAgIGRlZmlu
aXRpb24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBOb25lKQotICAgICAgICByZXR1cm4KLQot
ICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKLQotICAgICMgVE9ETyh0
eW9zaGlubyk6IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQgcGFyc2VkIHBhcmFtX3ZhbHVlIGlz
IHRva2VuCi0gICAgcGFyYW1fdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW5f
b3JfcXVvdGVkX3N0cmluZyhzdGF0ZSkKLSAgICBpZiBwYXJhbV92YWx1ZSBpcyBOb25lOgotICAg
ICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAotICAgICAgICAgICAgJ05vIHZh
bGlkIHBhcmFtZXRlciB2YWx1ZSBmb3VuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mICcKLSAg
ICAgICAgICAgICdwYXJhbWV0ZXIgJXInICUgcGFyYW1fbmFtZSkKLQotICAgIGRlZmluaXRpb24u
YWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSkKLQotCi1kZWYgX3BhcnNlX2V4
dGVuc2lvbihzdGF0ZSk6Ci0gICAgZXh0ZW5zaW9uX3Rva2VuID0gaHR0cF9oZWFkZXJfdXRpbC5j
b25zdW1lX3Rva2VuKHN0YXRlKQotICAgIGlmIGV4dGVuc2lvbl90b2tlbiBpcyBOb25lOgotICAg
ICAgICByZXR1cm4gTm9uZQotCi0gICAgZXh0ZW5zaW9uID0gRXh0ZW5zaW9uUGFyYW1ldGVyKGV4
dGVuc2lvbl90b2tlbikKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJzsnKToKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIF9wYXJzZV9leHRlbnNpb25fcGFyYW0oc3RhdGUsIGV4dGVuc2lvbikKLSAg
ICAgICAgZXhjZXB0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAg
IHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxl
ZCB0byBwYXJzZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUKLSAgICAgICAgICAgICAgICAoZXh0
ZW5zaW9uX3Rva2VuLCBlKSkKLQotICAgIHJldHVybiBleHRlbnNpb24KLQotCi1kZWYgcGFyc2Vf
ZXh0ZW5zaW9ucyhkYXRhKToKLSAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIHZhbHVlLgotCi0gICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5zaW9uUGFyYW1ldGVy
IG9iamVjdHMuCi0gICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQuCi0gICAgIiIiCi0g
ICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQotCi0gICAgZXh0
ZW5zaW9uX2xpc3QgPSBbXQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGV4dGVuc2lvbiA9IF9w
YXJzZV9leHRlbnNpb24oc3RhdGUpCi0gICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlmIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGJyZWFrCi0KLSAg
ICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6
Ci0gICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjog
JwotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJQotICAg
ICAgICAgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkpCi0KLSAgICAgICAgaHR0
cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgaWYgbGVuKGV4dGVuc2lv
bl9saXN0KSA9PSAwOgotICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAot
ICAgICAgICAgICAgJ05vIHZhbGlkIGV4dGVuc2lvbiBlbnRyeSBmb3VuZCcpCi0KLSAgICByZXR1
cm4gZXh0ZW5zaW9uX2xpc3QKLQotCi1kZWYgZm9ybWF0X2V4dGVuc2lvbihleHRlbnNpb24pOgot
ICAgICIiIkZvcm1hdCBhbiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0LiIiIgotICAgIGZvcm1h
dHRlZF9wYXJhbXMgPSBbZXh0ZW5zaW9uLm5hbWUoKV0KLSAgICBmb3IgcGFyYW1fbmFtZSwgcGFy
YW1fdmFsdWUgaW4gZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgIGlmIHBhcmFt
X3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICBmb3JtYXR0ZWRfcGFyYW1zLmFwcGVuZChwYXJh
bV9uYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcXVvdGVkX3ZhbHVlID0gaHR0cF9o
ZWFkZXJfdXRpbC5xdW90ZV9pZl9uZWNlc3NhcnkocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICBm
b3JtYXR0ZWRfcGFyYW1zLmFwcGVuZCgnJXM9JXMnICUgKHBhcmFtX25hbWUsIHF1b3RlZF92YWx1
ZSkpCi0gICAgcmV0dXJuICc7ICcuam9pbihmb3JtYXR0ZWRfcGFyYW1zKQotCi0KLWRlZiBmb3Jt
YXRfZXh0ZW5zaW9ucyhleHRlbnNpb25fbGlzdCk6Ci0gICAgIiIiRm9ybWF0IGEgbGlzdCBvZiBF
eHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4iIiIKLSAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xp
c3QgPSBbXQotICAgIGZvciBleHRlbnNpb24gaW4gZXh0ZW5zaW9uX2xpc3Q6Ci0gICAgICAgIGZv
cm1hdHRlZF9leHRlbnNpb25fbGlzdC5hcHBlbmQoZm9ybWF0X2V4dGVuc2lvbihleHRlbnNpb24p
KQotICAgIHJldHVybiAnLCAnLmpvaW4oZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0KQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0
Y2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjU5MWZlOGI5ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOTMgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRGlzcGF0Y2ggV2ViU29ja2V0IHJlcXVlc3QuCi0iIiIK
LQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRz
aGFrZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtdXgKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1NPVVJDRV9QQVRIX1BBVFRFUk4g
PSByZS5jb21waWxlKHInKD9pKV93c2hcLnB5JCcpCi1fU09VUkNFX1NVRkZJWCA9ICdfd3NoLnB5
JwotX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUgPSAnd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UnCi1fVFJBTlNGRVJfREFUQV9IQU5ETEVSX05BTUUgPSAnd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhJwotX1BBU1NJVkVfQ0xPU0lOR19IQU5EU0hBS0VfSEFORExFUl9OQU1FID0g
KAotICAgICd3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UnKQotCi0KLWNsYXNz
IERpc3BhdGNoRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIGluIGRpc3Bh
dGNoaW5nIFdlYlNvY2tldCByZXF1ZXN0LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfTk9UX0ZPVU5EKToKLSAgICAgICAgc3VwZXIo
RGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCi0gICAgICAgIHNlbGYuc3Rh
dHVzID0gc3RhdHVzCi0KLQotZGVmIF9kZWZhdWx0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Vf
aGFuZGxlcihyZXF1ZXN0KToKLSAgICAiIiJEZWZhdWx0IHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgotCi0gICAgcmV0dXJuIGNvbW1vbi5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsICcnCi0KLQotZGVmIF9ub3JtYWxpemVfcGF0aChwYXRoKToKLSAgICAiIiJO
b3JtYWxpemUgcGF0aC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHBhdGg6IHRoZSBwYXRoIHRvIG5v
cm1hbGl6ZS4KLQotICAgIFBhdGggaXMgY29udmVydGVkIHRvIHRoZSBhYnNvbHV0ZSBwYXRoLgot
ICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVyICdcXCcgb3IgJy8nIGFzIHRoZSBzZXBh
cmF0b3IuCi0gICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBhbHdheXMgdXNlcyAnLycgcmVnYXJkbGVz
cyBvZiB0aGUgcGxhdGZvcm0uCi0gICAgIiIiCi0KLSAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdc
XCcsIG9zLnBhdGguc2VwKQotICAgIHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCi0gICAg
cGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgcmV0dXJuIHBhdGgKLQotCi1kZWYg
X2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihiYXNlX2Rpcik6Ci0gICAgIiIiUmV0
dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIHBhdGggb2YgYSBXZWJTb2NrZXQgaGFu
ZGxlciBzb3VyY2UKLSAgICBmaWxlIHRvIGEgcmVzb3VyY2Ugc3RyaW5nIGJ5IHJlbW92aW5nIHRo
ZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBmcm9tCi0gICAgaXRzIGhlYWQsIHJlbW92aW5n
IF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRhaWwsIGFuZCByZXBsYWNpbmcgcGF0aAotICAgIHNl
cGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCi0KLSAgICBBcmdzOgotICAgICAgICBiYXNlX2Rpcjog
dGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgYmFzZV9kaXIg
PSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIpCi0KLSAgICBiYXNlX2xlbiA9IGxlbihiYXNlX2Rp
cikKLSAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklYKQotCi0gICAgZGVmIGNvbnZl
cnRlcihwYXRoKToKLSAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoX1NPVVJDRV9TVUZGSVgp
OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBfbm9ybWFsaXplX3BhdGggbXVz
dCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29sdmluZyBzeW1saW5rIGJyZWFrcwotICAgICAgICAj
IGZvbGxvd2luZyBwYXRoIGNoZWNrLgotICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdcXCcs
ICcvJykKLSAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChiYXNlX2Rpcik6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gcGF0aFtiYXNlX2xlbjotc3VmZml4X2xl
bl0KLQotICAgIHJldHVybiBjb252ZXJ0ZXIKLQotCi1kZWYgX2VudW1lcmF0ZV9oYW5kbGVyX2Zp
bGVfcGF0aHMoZGlyZWN0b3J5KToKLSAgICAiIiJSZXR1cm5zIGEgZ2VuZXJhdG9yIHRoYXQgZW51
bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBzb3VyY2UgZmlsZSBuYW1lcwotICAgIGluIHRoZSBn
aXZlbiBkaXJlY3RvcnkuCi0gICAgIiIiCi0KLSAgICBmb3Igcm9vdCwgdW51c2VkX2RpcnMsIGZp
bGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKLSAgICAgICAgZm9yIGJhc2UgaW4gZmlsZXM6Ci0g
ICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGJhc2UpCi0gICAgICAgICAgICBp
ZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFyY2gocGF0aCk6Ci0gICAgICAgICAgICAgICAgeWll
bGQgcGF0aAotCi0KLWNsYXNzIF9IYW5kbGVyU3VpdGUob2JqZWN0KToKLSAgICAiIiJBIGhhbmRs
ZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRvX2V4
dHJhX2hhbmRzaGFrZSwgdHJhbnNmZXJfZGF0YSwKLSAgICAgICAgICAgICAgICAgcGFzc2l2ZV9j
bG9zaW5nX2hhbmRzaGFrZSk6Ci0gICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlID0gZG9f
ZXh0cmFfaGFuZHNoYWtlCi0gICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YSA9IHRyYW5zZmVyX2Rh
dGEKLSAgICAgICAgc2VsZi5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlID0gcGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZQotCi0KLWRlZiBfc291cmNlX2hhbmRsZXJfZmlsZShoYW5kbGVyX2RlZmlu
aXRpb24pOgotICAgICIiIlNvdXJjZSBhIGhhbmRsZXIgZGVmaW5pdGlvbiBzdHJpbmcuCi0KLSAg
ICBBcmdzOgotICAgICAgICBoYW5kbGVyX2RlZmluaXRpb246IGEgc3RyaW5nIGNvbnRhaW5pbmcg
UHl0aG9uIHN0YXRlbWVudHMgdGhhdCBkZWZpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVyIGZ1bmN0aW9ucy4KLSAgICAiIiIKLQotICAgIGdsb2JhbF9kaWMgPSB7fQotICAg
IHRyeToKLSAgICAgICAgZXhlYyhoYW5kbGVyX2RlZmluaXRpb24sIGdsb2JhbF9kaWMpCi0gICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ0Vycm9y
IGluIHNvdXJjaW5nIGhhbmRsZXI6JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0gICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9o
YW5kbGVyID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZV9oYW5kbGVyID0gX2V4dHJhY3RfaGFuZGxlcigKLSAgICAgICAgICAgIGdsb2JhbF9kaWMsIF9Q
QVNTSVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSkKLSAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSAoCi0gICAg
ICAgICAgICBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIpCi0gICAg
cmV0dXJuIF9IYW5kbGVyU3VpdGUoCi0gICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUpLAotICAgICAgICBfZXh0cmFjdF9o
YW5kbGVyKGdsb2JhbF9kaWMsIF9UUkFOU0ZFUl9EQVRBX0hBTkRMRVJfTkFNRSksCi0gICAgICAg
IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKLQotCi1kZWYgX2V4dHJhY3RfaGFu
ZGxlcihkaWMsIG5hbWUpOgotICAgICIiIkV4dHJhY3RzIGEgY2FsbGFibGUgd2l0aCB0aGUgc3Bl
Y2lmaWVkIG5hbWUgZnJvbSB0aGUgZ2l2ZW4gZGljdGlvbmFyeQotICAgIGRpYy4KLSAgICAiIiIK
LQotICAgIGlmIG5hbWUgbm90IGluIGRpYzoKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oJyVzIGlzIG5vdCBkZWZpbmVkLicgJSBuYW1lKQotICAgIGhhbmRsZXIgPSBkaWNbbmFtZV0K
LSAgICBpZiBub3QgY2FsbGFibGUoaGFuZGxlcik6Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXhj
ZXB0aW9uKCclcyBpcyBub3QgY2FsbGFibGUuJyAlIG5hbWUpCi0gICAgcmV0dXJuIGhhbmRsZXIK
LQotCi1jbGFzcyBEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiRGlzcGF0Y2hlcyBXZWJTb2Nr
ZXQgcmVxdWVzdHMuCi0KLSAgICBUaGlzIGNsYXNzIG1haW50YWlucyBhIG1hcCBmcm9tIHJlc291
cmNlIG5hbWUgdG8gaGFuZGxlcnMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oCi0gICAg
ICAgIHNlbGYsIHJvb3RfZGlyLCBzY2FuX2Rpcj1Ob25lLAotICAgICAgICBhbGxvd19oYW5kbGVy
c19vdXRzaWRlX3Jvb3RfZGlyPVRydWUpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFu
Y2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJvb3RfZGlyOiBUaGUgZGlyZWN0b3J5
IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKLSAgICAgICAgICAgICAgICAgICAg
ICBwbGFjZWQuCi0gICAgICAgICAgICBzY2FuX2RpcjogVGhlIGRpcmVjdG9yeSB3aGVyZSBoYW5k
bGVyIGRlZmluaXRpb24gZmlsZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoZWQu
IHNjYW5fZGlyIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgcm9vdF9kaXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgaW5jbHVkaW5nIHJvb3RfZGlyIGl0c2VsZi4gIElmIHNjYW5fZGlyIGlzIE5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgcm9vdF9kaXIgaXMgdXNlZCBhcyBzY2FuX2Rpci4g
c2Nhbl9kaXIgY2FuIGJlIHVzZWZ1bAotICAgICAgICAgICAgICAgICAgICAgIGluIHNhdmluZyBz
Y2FuIHRpbWUgd2hlbiByb290X2RpciBjb250YWlucyBtYW55Ci0gICAgICAgICAgICAgICAgICAg
ICAgc3ViZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jv
b3RfZGlyOiBTY2FucyBoYW5kbGVyIGZpbGVzIGV2ZW4gaWYgdGhlaXIKLSAgICAgICAgICAgICAg
ICAgICAgICBjYW5vbmljYWwgcGF0aCBpcyBub3QgdW5kZXIgcm9vdF9kaXIuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQot
Ci0gICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwID0ge30KLSAgICAgICAgc2VsZi5fc291
cmNlX3dhcm5pbmdzID0gW10KLSAgICAgICAgaWYgc2Nhbl9kaXIgaXMgTm9uZToKLSAgICAgICAg
ICAgIHNjYW5fZGlyID0gcm9vdF9kaXIKLSAgICAgICAgaWYgbm90IG9zLnBhdGgucmVhbHBhdGgo
c2Nhbl9kaXIpLnN0YXJ0c3dpdGgoCi0gICAgICAgICAgICAgICAgb3MucGF0aC5yZWFscGF0aChy
b290X2RpcikpOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ3NjYW5fZGly
OiVzIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Jvb3RfZGlyOiVzLicgJSAoc2Nhbl9kaXIsIHJvb3RfZGlyKSkKLSAgICAg
ICAgc2VsZi5fc291cmNlX2hhbmRsZXJfZmlsZXNfaW5fZGlyKAotICAgICAgICAgICAgcm9vdF9k
aXIsIHNjYW5fZGlyLCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQotCi0gICAgZGVm
IGFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsaWFzX3Jlc291cmNlX3BhdGgsIGV4aXN0aW5nX3Jlc291cmNlX3BhdGgpOgotICAg
ICAgICAiIiJBZGQgcmVzb3VyY2UgcGF0aCBhbGlhcy4KLQotICAgICAgICBPbmNlIGFkZGVkLCBy
ZXF1ZXN0IHRvIGFsaWFzX3Jlc291cmNlX3BhdGggd291bGQgYmUgaGFuZGxlZCBieQotICAgICAg
ICBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIGV4aXN0aW5nX3Jlc291cmNlX3BhdGguCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGFsaWFzX3Jlc291cmNlX3BhdGg6IGFsaWFzIHJlc291cmNl
IHBhdGgKLSAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291cmNlX3BhdGg6IGV4aXN0aW5nIHJlc291
cmNlIHBhdGgKLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXJf
c3VpdGUgPSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcFtleGlzdGluZ19yZXNvdXJjZV9wYXRoXQot
ICAgICAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXBbYWxpYXNfcmVzb3VyY2VfcGF0aF0g
PSBoYW5kbGVyX3N1aXRlCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJh
aXNlIERpc3BhdGNoRXhjZXB0aW9uKCdObyBoYW5kbGVyIGZvcjogJXInICUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291cmNlX3BhdGgpCi0KLSAgICBk
ZWYgc291cmNlX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gd2FybmluZ3MgaW4g
c291cmNpbmcgaGFuZGxlcnMuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3NvdXJjZV93YXJu
aW5ncwotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCByZXF1ZXN0KToKLSAgICAg
ICAgIiIiRG8gZXh0cmEgY2hlY2tpbmcgaW4gV2ViU29ja2V0IGhhbmRzaGFrZS4KLQotICAgICAg
ICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3QudXJpIGFuZCBjYWxsIGl0cwotICAg
ICAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBmdW5jdGlvbi4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi0gICAgICAg
IFJhaXNlczoKLSAgICAgICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2Fz
IG5vdCBmb3VuZAotICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2Vy
IGhhbmRsZXIgYWJvcnQgY29ubmVjdGlvbgotICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0aW9u
OiB3aGVuIG9wZW5pbmcgaGFuZHNoYWtlIGZhaWxlZAotICAgICAgICAiIiIKLQotICAgICAgICBo
YW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291cmNl
KQotICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBE
aXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UpCi0gICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8gPSBoYW5kbGVyX3N1aXRlLmRvX2V4dHJh
X2hhbmRzaGFrZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkb19leHRyYV9oYW5kc2hha2Vf
KHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgIyBSZS1yYWlzZSB0byB0ZWxsIHRoZSBjYWxsZXIgb2YgdGhp
cyBmdW5jdGlvbiB0byBmaW5pc2ggdGhpcwotICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhv
dXQgc2VuZGluZyBhbnkgZXJyb3IuCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVz
JywgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3Rv
X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9y
ICVzOiAnICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ET19FWFRSQV9IQU5EU0hB
S0VfSEFORExFUl9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpLAotICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UgaGFu
ZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVO
KQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkxl
dCBhIGhhbmRsZXIgdHJhbnNmZXJfZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KLQotICAg
ICAgICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNh
bGwgaXRzCi0gICAgICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRs
ZXIgd2FzIG5vdCBmb3VuZAotICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hl
biB1c2VyIGhhbmRsZXIgYWJvcnQgY29ubmVjdGlvbgotICAgICAgICAiIiIKLQotICAgICAgICAj
IFRPRE8odHlvc2hpbm8pOiBUZXJtaW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBw
b3NzaWJsZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbXV4LnVzZV9tdXgocmVxdWVz
dCk6Ci0gICAgICAgICAgICAgICAgbXV4LnN0YXJ0KHJlcXVlc3QsIHNlbGYpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVy
X3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgaWYgaGFuZGxlcl9z
dWl0ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlv
bignTm8gaGFuZGxlciBmb3I6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgdHJhbnNm
ZXJfZGF0YV8gPSBoYW5kbGVyX3N1aXRlLnRyYW5zZmVyX2RhdGEKLSAgICAgICAgICAgICAgICB0
cmFuc2Zlcl9kYXRhXyhyZXF1ZXN0KQotCi0gICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2
ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKCkKLSAgICAgICAgIyBDYXRjaCBub24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUg
aGFuZGxlciBkaWRuJ3QgaGFuZGxlLgotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRC
eVVzZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMn
LCB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgICAgICAjIEludmFsaWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNh
dWdodCBiZWZvcmUKLSAgICAgICAgICAgICMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24g
dGhhdCBjYXRjaGVzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KLSAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2Vf
Y29ubmVjdGlvbihjb21tb24uU1RBVFVTX1BST1RPQ09MX0VSUk9SKQotICAgICAgICBleGNlcHQg
bXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQotICAgICAgICBl
eGNlcHQgc3RyZWFtLkludmFsaWRVVEY4RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZS
QU1FX1BBWUxPQURfREFUQSkKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMn
LCBlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAjIEFueSBv
dGhlciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGNhbGxlciBvZiB0aGlzCi0gICAg
ICAgICAgICAjIGZ1bmN0aW9uLgotICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9f
ZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczog
JyAlICgKLSAgICAgICAgICAgICAgICAgICAgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FLCBy
ZXF1ZXN0LndzX3Jlc291cmNlKSwKLSAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFp
c2UKLQotICAgIGRlZiBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgot
ICAgICAgICAiIiJQcmVwYXJlIGNvZGUgYW5kIHJlYXNvbiBmb3IgcmVzcG9uZGluZyBjbGllbnQg
aW5pdGlhdGVkIGNsb3NpbmcKLSAgICAgICAgaGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAg
ICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jl
c291cmNlKQotICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gX2RlZmF1bHRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyKHJlcXVlc3Qp
Ci0gICAgICAgIHJldHVybiBoYW5kbGVyX3N1aXRlLnBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uo
cmVxdWVzdCkKLQotICAgIGRlZiBnZXRfaGFuZGxlcl9zdWl0ZShzZWxmLCByZXNvdXJjZSk6Ci0g
ICAgICAgICIiIlJldHJpZXZlcyB0d28gaGFuZGxlcnMgKG9uZSBmb3IgZXh0cmEgaGFuZHNoYWtl
IHByb2Nlc3NpbmcsIGFuZCBvbmUKLSAgICAgICAgZm9yIGRhdGEgdHJhbnNmZXIpIGZvciB0aGUg
Z2l2ZW4gcmVxdWVzdCBhcyBhIEhhbmRsZXJTdWl0ZSBvYmplY3QuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIGZyYWdtZW50ID0gTm9uZQotICAgICAgICBpZiAnIycgaW4gcmVzb3VyY2U6Ci0gICAg
ICAgICAgICByZXNvdXJjZSwgZnJhZ21lbnQgPSByZXNvdXJjZS5zcGxpdCgnIycsIDEpCi0gICAg
ICAgIGlmICc/JyBpbiByZXNvdXJjZToKLSAgICAgICAgICAgIHJlc291cmNlID0gcmVzb3VyY2Uu
c3BsaXQoJz8nLCAxKVswXQotICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5faGFuZGxlcl9z
dWl0ZV9tYXAuZ2V0KHJlc291cmNlKQotICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGFuZCBmcmFn
bWVudDoKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdGcmFnbWVudCBpZGVu
dGlmaWVycyBNVVNUIE5PVCBiZSB1c2VkIG9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdXZWJTb2NrZXQgVVJJcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCi0gICAgICAgIHJldHVybiBo
YW5kbGVyX3N1aXRlCi0KLSAgICBkZWYgX3NvdXJjZV9oYW5kbGVyX2ZpbGVzX2luX2RpcigKLSAg
ICAgICAgc2VsZiwgcm9vdF9kaXIsIHNjYW5fZGlyLCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jv
b3RfZGlyKToKLSAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMg
aW4gdGhlIHNjYW5fZGlyIGRpcmVjdG9yeS4KLQotICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBp
cyBkZXRlcm1pbmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgotICAgICAgICAiIiIKLQotICAgICAg
ICAjIFdlIGJ1aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3VtaW5n
IHRoYXQgdGhlcmUncwotICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0byBz
Y2FuX2RpciBhbmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5Ci0gICAgICAgICMgY29tcGFyaW5nIHJl
YWxwYXRoIG9mIHRoZW0uCi0KLSAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0aC4g
U2VlCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
NjAzCi0KLSAgICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0
ZXIocm9vdF9kaXIpCi0gICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHNj
YW5fZGlyKQotICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290X2Rp
cikKLSAgICAgICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoc2Nh
bl9yZWFscGF0aCk6Ci0gICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNpZGVf
cm9vdF9kaXIgYW5kCi0gICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBhdGgp
LnN0YXJ0c3dpdGgocm9vdF9yZWFscGF0aCkpKToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBpcyBu
b3QgdW5kZXIgcm9vdCBkaXJlY3RvcnknICUKLSAgICAgICAgICAgICAgICAgICAgcGF0aCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IGhhbmRsZXJfc3VpdGUgPSBfc291cmNlX2hhbmRsZXJfZmlsZShvcGVuKHBhdGgpLnJlYWQoKSkK
LSAgICAgICAgICAgIGV4Y2VwdCBEaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBlbmQoJyVzOiAlcycgJSAocGF0aCwgZSkpCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlc291cmNlID0gY29udmVydChw
YXRoKQotICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICdQYXRoIHRvIHJlc291cmNl
IGNvbnZlcnNpb24gb24gJXMgZmFpbGVkJyAlIHBhdGgpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2NvbnZlcnQocGF0aCldID0gaGFu
ZGxlcl9zdWl0ZQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lv
bnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYmU3NDlmZmY1OS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw3NTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwK
LWZyb20gbW9kX3B5d2Vic29ja2V0Lmh0dHBfaGVhZGVyX3V0aWwgaW1wb3J0IHF1b3RlX2lmX25l
Y2Vzc2FyeQotCi0KLSMgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHNlcnZlciBzaWRlIGV4dGVuc2lv
biBwcm9jZXNzb3IgY2xhc3Nlcy4KLV9hdmFpbGFibGVfcHJvY2Vzc29ycyA9IHt9Ci1fY29tcHJl
c3Npb25fZXh0ZW5zaW9uX25hbWVzID0gW10KLQotCi1jbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJ
bnRlcmZhY2Uob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQot
Ci0gICAgZGVmIHJlcXVlc3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0Ci0K
LSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBjaGVj
a19jb25zaXN0ZW5jeV93aXRoX290aGVyX3Byb2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRfYWN0aXZlKHNlbGYsIGFjdGl2ZSk6Ci0gICAgICAg
IHNlbGYuX2FjdGl2ZSA9IGFjdGl2ZQotCi0gICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2FjdGl2ZQotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
X2ludGVybmFsKHNlbGYpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9leHRl
bnNpb25fcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9hY3RpdmU6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0V4dGVuc2lvbiAlcyBpcyBkZWFjdGl2YXRlZCcs
IHNlbGYubmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25z
ZSA9IHNlbGYuX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoKQotICAgICAgICBpZiBy
ZXNwb25zZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVy
bmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHVw
X3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5f
YWN0aXZlOgotICAgICAgICAgICAgc2VsZi5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwo
c3RyZWFtX29wdGlvbnMpCi0KLQotZGVmIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8o
Ci0gICAgICAgIGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdl
X3JhdGlvKToKLSAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0g
ICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAgICBpZiBvcmlnaW5hbF9ieXRlcyAhPSAwOgotICAg
ICAgICByYXRpbyA9IGZsb2F0KGZpbHRlcmVkX2J5dGVzKSAvIG9yaWdpbmFsX2J5dGVzCi0KLSAg
ICBsb2dnZXIuZGVidWcoJ091dGdvaW5nIGNvbXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTog
JWYpJyAlCi0gICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfbG9n
X2luY29taW5nX2NvbXByZXNzaW9uX3JhdGlvKAotICAgICAgICBsb2dnZXIsIHJlY2VpdmVkX2J5
dGVzLCBmaWx0ZXJlZF9ieXRlcywgYXZlcmFnZV9yYXRpbyk6Ci0gICAgIyBQcmludCBpbmYgd2hl
biByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgotICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCi0gICAg
aWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKLSAgICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9i
eXRlcykgLyBmaWx0ZXJlZF9ieXRlcwotCi0gICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21w
cmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQotICAgICAgICAgICAgKHJhdGlvLCBh
dmVyYWdlX3JhdGlvKSkKLQotCi1kZWYgX3BhcnNlX3dpbmRvd19iaXRzKGJpdHMpOgotICAgICIi
IlJldHVybiBwYXJzZWQgaW50ZWdlciB2YWx1ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBjb25mb3Jt
cyB0byB0aGUKLSAgICBncmFtbWFyIG9mIHRoZSB3aW5kb3cgYml0cyBleHRlbnNpb24gcGFyYW1l
dGVycy4KLSAgICAiIiIKLQotICAgIGlmIGJpdHMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQnKQotCi0gICAgIyBGb3Igbm9uIGludGVnZXIgdmFs
dWVzIHN1Y2ggYXMgIjEwLjAiLCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLgotICAgIGludF9i
aXRzID0gaW50KGJpdHMpCi0KLSAgICAjIEZpcnN0IGNvbmRpdGlvbiBpcyB0byBkcm9wIGxlYWRp
bmcgemVybyBjYXNlIGUuZy4gIjA4Ii4KLSAgICBpZiBiaXRzICE9IHN0cihpbnRfYml0cykgb3Ig
aW50X2JpdHMgPCA4IG9yIGludF9iaXRzID4gMTU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ludmFsaWQgdmFsdWU6ICVyJyAlIGJpdHMpCi0KLSAgICByZXR1cm4gaW50X2JpdHMKLQotCi1j
bGFzcyBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcihvYmplY3QpOgotICAgICIiIlN0b3JlcyB0b3Rh
bCBieXRlcyBvZiBvcmlnaW5hbCBhbmQgcmVzdWx0IGRhdGEsIGFuZCBjYWxjdWxhdGVzIGF2ZXJh
Z2UKLSAgICByZXN1bHQgLyBvcmlnaW5hbCByYXRpby4KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgPSAwCi0gICAg
ICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKLQotICAgIGRlZiBhZGRfb3JpZ2luYWxf
Ynl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyAr
PSB2YWx1ZQotCi0gICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAg
ICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUKLQotICAgIGRlZiBnZXRfYXZlcmFn
ZV9yYXRpbyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0g
MDoKLSAgICAgICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzKSAv
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdpbmYnKQotCi0KLWNsYXNzIERlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgot
ICAgICIiImRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmlj
YXRpb246Ci0gICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdHlvc2hpbm8taHli
aS13ZWJzb2NrZXQtcGVyZnJhbWUtZGVmbGF0ZQotICAgICIiIgotCi0gICAgX1dJTkRPV19CSVRT
X1BBUkFNID0gJ21heF93aW5kb3dfYml0cycKLSAgICBfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJB
TSA9ICdub19jb250ZXh0X3Rha2VvdmVyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVl
c3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwg
cmVxdWVzdCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCi0KLSAgICAgICAgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAg
IHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotICAgICAgICBzZWxm
Ll9iZmluYWwgPSBGYWxzZQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAo
VG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAg
IyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhp
cyBmaWx0ZXIpCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRv
ciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAg
ICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAg
ICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5n
IHRoaXMgZmlsdGVyKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1
bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgbmFtZShzZWxmKToK
LSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTgotCi0gICAgZGVm
IF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAgICAjIEFueSB1
bmtub3duIHBhcmFtZXRlciB3aWxsIGJlIGp1c3QgaWdub3JlZC4KLQotICAgICAgICB3aW5kb3df
Yml0cyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYu
X1dJTkRPV19CSVRTX1BBUkFNKToKLSAgICAgICAgICAgIHdpbmRvd19iaXRzID0gc2VsZi5fcmVx
dWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19C
SVRTX1BBUkFNKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpbmRvd19iaXRz
ID0gX3BhcnNlX3dpbmRvd19iaXRzKHdpbmRvd19iaXRzKQotICAgICAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIG5v
X2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAg
ICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKQotICAgICAgICBpZiAobm9fY29u
dGV4dF90YWtlb3ZlciBhbmQKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRl
cl92YWx1ZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYu
X3JmYzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCi0gICAgICAgICAgICB3
aW5kb3dfYml0cywgbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgICAgICBzZWxmLl9yZmMxOTc5
X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9jb21w
cmVzc19vdXRnb2luZyA9IFRydWUKLQotICAgICAgICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCi0KLSAgICAgICAgaWYgc2VsZi5fcmVz
cG9uc2Vfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXNwb25zZS5hZGRf
cGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNLCBzdHIo
c2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMpKQotICAgICAgICBpZiBzZWxmLl9yZXNwb25zZV9u
b19jb250ZXh0X3Rha2VvdmVyOgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigK
LSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQot
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFbmFibGUgJXMgZXh0
ZW5zaW9uICgnCi0gICAgICAgICAgICAncmVxdWVzdDogd2luZG93X2JpdHM9JXM7IG5vX2NvbnRl
eHRfdGFrZW92ZXI9JXIsICcKLSAgICAgICAgICAgICdyZXNwb25zZTogd2luZG93X3diaXRzPSVz
OyBub19jb250ZXh0X3Rha2VvdmVyPSVyKScgJQotICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3Qu
bmFtZSgpLAotICAgICAgICAgICAgIHdpbmRvd19iaXRzLAotICAgICAgICAgICAgIG5vX2NvbnRl
eHRfdGFrZW92ZXIsCi0gICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMsCi0g
ICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcikpCi0KLSAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVy
bmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLQotICAgICAgICBjbGFzcyBfT3V0Z29pbmdGaWx0
ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0KLSAgICAgICAgICAgIGRlZiBm
aWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudC5fb3V0Z29p
bmdfZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZpbHRlcihvYmplY3Qp
OgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxm
LCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9pbmNvbWluZ19maWx0ZXIo
ZnJhbWUpCi0KLSAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5h
cHBlbmQoCi0gICAgICAgICAgICBfT3V0Z29pbmdGaWx0ZXIoc2VsZikpCi0gICAgICAgIHN0cmVh
bV9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuaW5zZXJ0KAotICAgICAgICAgICAgMCwg
X0luY29taW5nRmlsdGVyKHNlbGYpKQotCi0gICAgZGVmIHNldF9yZXNwb25zZV93aW5kb3dfYml0
cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzID0gdmFs
dWUKLQotICAgIGRlZiBzZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1
ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQot
Ci0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9iZmluYWwg
PSB2YWx1ZQotCi0gICAgZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAg
ICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVlCi0KLSAgICBkZWYgZGlzYWJsZV9v
dXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29p
bmcgPSBGYWxzZQotCi0gICAgZGVmIF9vdXRnb2luZ19maWx0ZXIoc2VsZiwgZnJhbWUpOgotICAg
ICAgICAiIiJUcmFuc2Zvcm0gb3V0Z29pbmcgZnJhbWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQg
b25seSBieQotICAgICAgICBhbiBfT3V0Z29pbmdGaWx0ZXIgaW5zdGFuY2UuCi0gICAgICAgICIi
IgotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQot
ICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdp
bmFsX2J5dGVzKAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKLQotICAg
ICAgICBpZiAobm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nIG9yCi0gICAgICAgICAgICBjb21t
b24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSk6Ci0gICAgICAgICAgICBzZWxmLl9v
dXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAg
ICAgICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQotICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIuZmlsdGVy
KAotICAgICAgICAgICAgZnJhbWUucGF5bG9hZCwgYmZpbmFsPXNlbGYuX2JmaW5hbCkKLSAgICAg
ICAgZnJhbWUucnN2MSA9IDEKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4o
ZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxj
dWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9h
ZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxv
YWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAg
ICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVy
YWdlX3JhdGlvKCkpCi0KLSAgICBkZWYgX2luY29taW5nX2ZpbHRlcihzZWxmLCBmcmFtZSk6Ci0g
ICAgICAgICIiIlRyYW5zZm9ybSBpbmNvbWluZyBmcmFtZXMuIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCBvbmx5IGJ5Ci0gICAgICAgIGFuIF9JbmNvbWluZ0ZpbHRlciBpbnN0YW5jZS4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQp
Ci0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVz
dWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSkKLQotICAg
ICAgICBpZiBmcmFtZS5yc3YxICE9IDEgb3IgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1l
Lm9wY29kZSk6Ci0gICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1
bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgICAgICAgICByZWNlaXZlZF9w
YXlsb2FkX3NpemUpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5wYXlsb2Fk
ID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAg
ZnJhbWUucnN2MSA9IDAKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJh
bWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2Fk
X3NpemUpCi0KLSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9h
ZF9zaXplLAotICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAg
ICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJh
Z2VfcmF0aW8oKSkKLQotCi1fYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLkRFRkxBVEVfRlJB
TUVfRVhURU5TSU9OXSA9ICgKLSAgICBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi1f
Y29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uREVGTEFURV9GUkFNRV9F
WFRFTlNJT04pCi0KLV9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uWF9XRUJLSVRfREVGTEFU
RV9GUkFNRV9FWFRFTlNJT05dID0gKAotICAgIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cikKLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKGNvbW1vbi5YX1dFQktJVF9E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiInBlcm1l
c3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24gcHJvY2Vzc29yLgotCi0gICAgU3BlY2lmaWNhdGlvbjoK
LSAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh5YmktcGVybWVzc2Fn
ZS1jb21wcmVzc2lvbi0wOAotICAgICIiIgotCi0gICAgX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNf
UEFSQU0gPSAnc2VydmVyX21heF93aW5kb3dfYml0cycKLSAgICBfU0VSVkVSX05PX0NPTlRFWFRf
VEFLRU9WRVJfUEFSQU0gPSAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInCi0gICAgX0NMSUVO
VF9NQVhfV0lORE9XX0JJVFNfUEFSQU0gPSAnY2xpZW50X21heF93aW5kb3dfYml0cycKLSAgICBf
Q0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0gPSAnY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXInCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNv
bnN0cnVjdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4iIiIKLQotICAgICAg
ICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAg
IHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKLQotICAgIGRlZiBuYW1l
KHNlbGYpOgotICAgICAgICAjIFRoaXMgbWV0aG9kIHJldHVybnMgImRlZmxhdGUiIChub3QgInBl
cm1lc3NhZ2UtZGVmbGF0ZSIpIGZvcgotICAgICAgICAjIGNvbXBhdGliaWxpdHkuCi0gICAgICAg
IHJldHVybiAnZGVmbGF0ZScKLQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRl
cm5hbChzZWxmKToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1l
dGVyX25hbWVzKCk6Ci0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbc2VsZi5fU0VSVkVSX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNXToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Vua25vd24gcGFyYW1ldGVyOiAlcicsIG5hbWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
ID0gTm9uZQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fU0VS
VkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSk6Ci0gICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2lu
ZG93X2JpdHMoCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCi0g
ICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCi0KLSAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1
ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSkKLSAgICAgICAgaWYgKHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIGFu
ZAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAg
ICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3Qg
Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFtZXRlciBtdXN0
IG5vdCBoYXZlIGEgdmFsdWU6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICAgICAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBjbGll
bnQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsaWVudCBjYW4KLSAgICAgICAgIyBhY2NlcHQgY2xp
ZW50X21heF93aW5kb3dfYml0cyBmcm9tIGEgc2VydmVyIG9yIG5vdC4KLSAgICAgICAgY2xpZW50
X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0g
ICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICBp
ZiAoY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHMgYW5kCi0gICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5U
X01BWF9XSU5ET1dfQklUU19QQVJBTSkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCclcyBwYXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2U6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFY
X1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVu
dF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAg
ICAgICBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyID0gdXRpbC5fUkZDMTk3OURlZmxhdGVyKAotICAg
ICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLSAgICAgICAgIyBOb3RlIHRoYXQgd2UgcHJlcGFyZSBmb3IgaW5jb21pbmcgbWVzc2Fn
ZXMgY29tcHJlc3NlZCB3aXRoIHdpbmRvdwotICAgICAgICAjIGJpdHMgdXB0byAxNSByZWdhcmRs
ZXNzIG9mIHRoZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIHZhbHVlIHRvIGJlCi0gICAgICAgICMg
c2VudCB0byB0aGUgY2xpZW50LgotICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRp
bC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9mcmFtZXIgPSBfUGVyTWVzc2Fn
ZURlZmxhdGVGcmFtZXIoCi0gICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLCBzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9iZmluYWwo
RmFsc2UpCi0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxl
ZChUcnVlKQotCi0gICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihz
ZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAg
ICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAg
ICAgICAgIHN0cihzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKSkKLQotICAgICAgICBpZiBzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlcjoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIo
Ci0gICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0s
IE5vbmUpCi0KLSAgICAgICAgaWYgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2Jp
dHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgY2xpZW50X2NsaWVudF9tYXhfd2lu
ZG93X2JpdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm9jZXNzb3Ig
aXMgY29uZmlndXJlZCB0byB1c2UgJXMgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RoZSBjbGllbnQgY2Fubm90IGFjY2VwdCBpdCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJB
TSwKLSAgICAgICAgICAgICAgICBzdHIoc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93
X2JpdHMpKQotCi0gICAgICAgIGlmIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgot
ICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxm
Ll9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAg
ICAgICAgICAgJ3JlcXVlc3Q6IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9JXM7ICcKLSAgICAgICAg
ICAgICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcj0lciwgJwotICAgICAgICAgICAgJ3Jlc3Bv
bnNlOiBjbGllbnRfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAgICAgICAnY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXI9JXIpJyAlCi0gICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1l
KCksCi0gICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKLSAgICAgICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29u
dGV4dF90YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3Nl
dHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAg
ICAgc2VsZi5fZnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0g
ICAgZGVmIHNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKHNlbGYsIHZhbHVlKToKLSAgICAgICAg
IiIiSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAg
ICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFu
ZHNoYWtlIHJlc3BvbnNlLAotICAgICAgICBidXQgZG9lc24ndCByZWR1Y2UgdGhlIExaNzcgc2xp
ZGluZyB3aW5kb3cgc2l6ZSBvZiBpdHMgaW5mbGF0ZXIuCi0gICAgICAgIEkuZS4sIHlvdSBjYW4g
dXNlIHRoaXMgZm9yIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QKLSAg
ICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvZiB0aGlzIGNsYXNzLgotCi0gICAgICAgIElmIHRo
aXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCB3aXRoIFRydWUgYW5kIGFuIG9mZmVyIHdpdGhvdXQg
dGhlCi0gICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBp
cyByZWNlaXZlZCwKLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWRl
ZmxhdGUgZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGRlY2xpbmVzIHRoZSBy
ZXF1ZXN0LgotICAgICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtY29tcHJl
c3MgZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGFjY2VwdHMgdGhlIHJlcXVl
c3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzID0gdmFsdWUKLQotICAgIGRlZiBzZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQs
IHRoaXMgY2xhc3MgYWRkcyB0aGUKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIg
ZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlCi0gICAgICAgIHJlc3BvbnNlLCBi
dXQgZG9lc24ndCByZXNldCBpbmZsYXRlciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2Fu
Ci0gICAgICAgIHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQg
Y2Fubm90IHJlZHVjZSBtZW1vcnkKLSAgICAgICAgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1
ZQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9mcmFt
ZXIuc2V0X2JmaW5hbCh2YWx1ZSkKLQotICAgIGRlZiBlbmFibGVfb3V0Z29pbmdfY29tcHJlc3Np
b24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5h
YmxlZChUcnVlKQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6
Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxz
ZSkKLQotCi1jbGFzcyBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIob2JqZWN0KToKLSAgICAiIiJB
IGZyYW1lciBmb3IgZXh0ZW5zaW9ucyB3aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4i
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVm
bGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9
IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19i
aXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3
OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCi0KLSAgICAgICAgc2VsZi5fYmZp
bmFsID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0g
RmFsc2UKLQotICAgICAgICAjIFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNv
bXByZXNzaW9uIGlzIG9uZ29pbmcuCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBG
YWxzZQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29p
bmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFs
IGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0g
ICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdl
UmF0aW9DYWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAg
KFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAg
KFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVy
KQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZl
cmFnZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6
Ci0gICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NvbXByZXNzX291
dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRn
b2luZ19lbmFibGVkID0gdmFsdWUKLQotICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgotICAgICAgICBpZiBub3QgZGVjb21wcmVzczoK
LSAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9z
aXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9f
Y2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3Bh
eWxvYWRfc2l6ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5m
aWx0ZXIobWVzc2FnZSkKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVz
c2FnZSkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFk
ZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUp
Ci0KLSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXpl
LAotICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0
aW8oKSkKLQotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX291dGdv
aW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBub3Qg
YmluYXJ5OgotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0K
LSAgICAgICAgaWYgbm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxl
bihtZXNzYWdlKQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0
b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXpl
KQotCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAg
ICAgICAgICAgIG1lc3NhZ2UsIGVuZD1lbmQsIGJmaW5hbD1zZWxmLl9iZmluYWwpCi0KLSAgICAg
ICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAg
ICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29t
cHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAg
ICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9w
YXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRp
b19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICAgICAgaWYgbm90IHNlbGYu
X2NvbXByZXNzX29uZ29pbmc6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0
ZXIuc2V0X2NvbXByZXNzaW9uX2JpdCgpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcg
PSBub3QgZW5kCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5j
b21pbmdfZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFtZS5yc3YxID09IDEgYW5k
IG5vdCBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAg
IHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKCkK
LSAgICAgICAgICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdf
ZnJhbWUoc2VsZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6Ci0gICAgICAgIGlmIChub3QgY29t
cHJlc3Npb25fYml0IG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJh
bWUub3Bjb2RlKSk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5yc3YxID0g
MQotCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToK
LSAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0cmVhbU9w
dGlvbnMuIiIiCi0KLSAgICAgICAgY2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3Qp
OgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxm
LCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ01l
c3NhZ2VGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotCi0gICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKLQotICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQotCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Ci0K
LSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudCA9IHBhcmVudAotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVz
c2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChz
ZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQot
Ci0gICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLCBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQotICAgICAgICAgICAgICAgIHNlbGYu
X3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0Zy
YW1lRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJl
bnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotCi0gICAgICAgICAg
ICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQu
X3Byb2Nlc3NfaW5jb21pbmdfZnJhbWUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdf
ZnJhbWVfZmlsdGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5f
aW5jb21pbmdfZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAg
ICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAg
ICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
LmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5faW5jb21p
bmdfZnJhbWVfZmlsdGVyKQotCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21l
c3NhZ2VfdG9fdXRmOCA9IEZhbHNlCi0KLQotX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5Q
RVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OXSA9ICgKLSAgICAgICAgUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0jIFRPRE8odHlvc2hpbm8pOiBSZW9yZ2FuaXplIGNsYXNz
IG5hbWVzLgotX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoJ2RlZmxhdGUnKQot
Ci0KLWNsYXNzIE11eEV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZh
Y2UpOgotICAgICIiIldlYlNvY2tldCBtdWx0aXBsZXhpbmcgZXh0ZW5zaW9uIHByb2Nlc3Nvci4i
IiIKLQotICAgIF9RVU9UQV9QQVJBTSA9ICdxdW90YScKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXF1ZXN0KToKLSAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5pdF9f
KHNlbGYsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuX3F1b3RhID0gMAotICAgICAgICBzZWxmLl9l
eHRlbnNpb25zID0gW10KLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gY29t
bW9uLk1VWF9FWFRFTlNJT04KLQotICAgIGRlZiBjaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVy
X3Byb2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0gICAgICAgIGJlZm9yZV9tdXggPSBUcnVl
Ci0gICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yczoKLSAgICAgICAgICAgIG5hbWUg
PSBwcm9jZXNzb3IubmFtZSgpCi0gICAgICAgICAgICBpZiBuYW1lID09IHNlbGYubmFtZSgpOgot
ICAgICAgICAgICAgICAgIGJlZm9yZV9tdXggPSBGYWxzZQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBiZWZvcmVfbXV4OgotICAgICAgICAgICAg
ICAgICMgTXV4IGV4dGVuc2lvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciBleHRlbnNpb25zCi0gICAg
ICAgICAgICAgICAgIyB0aGF0IGRlcGVuZCBvbiBmcmFtZSBib3VuZGFyeSwgZXh0ZW5zaW9uIGRh
dGEgZmllbGQsIG9yIGFueQotICAgICAgICAgICAgICAgICMgcmVzZXJ2ZWQgYml0cyB3aGljaCBh
cmUgYXR0cmlidXRlZCB0byBlYWNoIGZyYW1lLgotICAgICAgICAgICAgICAgIGlmIChuYW1lID09
IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAgICAgICAgICBu
YW1lID09IGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTik6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgTXV4IGV4dGVuc2lv
biBzaG91bGQgbm90IGJlIGFwcGxpZWQgYmVmb3JlIGFueSBoaXN0b3J5LWJhc2VkCi0gICAgICAg
ICAgICAgICAgIyBjb21wcmVzc2lvbiBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgaWYgKG5h
bWUgPT0gJ2RlZmxhdGUnIG9yCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPT0gY29tbW9uLkRF
RkxBVEVfRlJBTUVfRVhURU5TSU9OIG9yCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPT0gY29t
bW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5zZXRfYWN0aXZlKEZhbHNlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLQot
ICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKLSAgICAgICAg
c2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAgICAgcXVvdGEgPSBzZWxmLl9yZXF1ZXN0LmdldF9w
YXJhbWV0ZXJfdmFsdWUoc2VsZi5fUVVPVEFfUEFSQU0pCi0gICAgICAgIGlmIHF1b3RhIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHF1b3RhID0gaW50KHF1
b3RhKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgcXVvdGEgPCAwIG9yIHF1b3RhID49IDIgKiog
MzI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHNlbGYuX3F1b3Rh
ID0gcXVvdGEKLQotICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0gICAgICAgIHJldHVybiBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKQotCi0gICAgZGVm
IF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRfcXVvdGEoc2VsZiwgcXVvdGEpOgotICAgICAgICBz
ZWxmLl9xdW90YSA9IHF1b3RhCi0KLSAgICBkZWYgcXVvdGEoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9xdW90YQotCi0gICAgZGVmIHNldF9leHRlbnNpb25zKHNlbGYsIGV4dGVuc2lvbnMp
OgotICAgICAgICBzZWxmLl9leHRlbnNpb25zID0gZXh0ZW5zaW9ucwotCi0gICAgZGVmIGV4dGVu
c2lvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9leHRlbnNpb25zCi0KLQotX2F2YWls
YWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lvblByb2Nl
c3NvcgotCi0KLWRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCk6
Ci0gICAgIiIiR2l2ZW4gYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIHJlcHJlc2VudGluZyBhbiBleHRl
bnNpb24gb2ZmZXIgcmVjZWl2ZWQKLSAgICBmcm9tIGEgY2xpZW50LCBjb25maWd1cmVzIGFuZCBy
ZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgZXh0ZW5zaW9uIHBy
b2Nlc3NvciBjbGFzcy4KLSAgICAiIiIKLQotICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9hdmFpbGFi
bGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQotICAgIGlmIHByb2Nl
c3Nvcl9jbGFzcyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBwcm9j
ZXNzb3JfY2xhc3MoZXh0ZW5zaW9uX3JlcXVlc3QpCi0KLQotZGVmIGlzX2NvbXByZXNzaW9uX2V4
dGVuc2lvbihleHRlbnNpb25fbmFtZSk6Ci0gICAgcmV0dXJuIGV4dGVuc2lvbl9uYW1lIGluIF9j
b21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3
ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRk
YWFkMjdmNTNjNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3Rf
bWFza2luZy5pCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSVtb2R1bGUgZmFzdF9tYXNraW5nCi0K
LSVpbmNsdWRlICJjc3RyaW5nLmkiCi0KLSV7Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2lmZGVm
IF9fU1NFMl9fCi0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jZW5kaWYKLSV9Ci0KLSVhcHBseSAo
Y2hhciAqU1RSSU5HLCBpbnQgTEVOR1RIKSB7Ci0gICAgKGNvbnN0IGNoYXIqIHBheWxvYWQsIGlu
dCBwYXlsb2FkX2xlbmd0aCksCi0gICAgKGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5LCBpbnQgbWFz
a2luZ19rZXlfbGVuZ3RoKSB9OwotJWNzdHJpbmdfb3V0cHV0X2FsbG9jYXRlX3NpemUoCi0gICAg
Y2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoLCBkZWxldGUgW10gKiQxKTsKLQotJWlu
bGluZSAlewotCi12b2lkIG1hc2soCi0gICAgY29uc3QgY2hhciogcGF5bG9hZCwgaW50IHBheWxv
YWRfbGVuZ3RoLAotICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5LCBpbnQgbWFza2luZ19rZXlf
bGVuZ3RoLAotICAgIGludCBtYXNraW5nX2tleV9pbmRleCwKLSAgICBjaGFyKiogcmVzdWx0LCBp
bnQqIHJlc3VsdF9sZW5ndGgpIHsKLSAgKnJlc3VsdCA9IG5ldyBjaGFyW3BheWxvYWRfbGVuZ3Ro
XTsKLSAgKnJlc3VsdF9sZW5ndGggPSBwYXlsb2FkX2xlbmd0aDsKLSAgbWVtY3B5KCpyZXN1bHQs
IHBheWxvYWQsIHBheWxvYWRfbGVuZ3RoKTsKLQotICBjaGFyKiBjdXJzb3IgPSAqcmVzdWx0Owot
ICBjaGFyKiBjdXJzb3JfZW5kID0gKnJlc3VsdCArICpyZXN1bHRfbGVuZ3RoOwotCi0jaWZkZWYg
X19TU0UyX18KLSAgd2hpbGUgKChjdXJzb3IgPCBjdXJzb3JfZW5kKSAmJgotICAgICAgICAgKHJl
aW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihjdXJzb3IpICYgMHhmKSkgewotICAgICpjdXJzb3IgXj0g
bWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdOwotICAgICsrY3Vyc29yOwotICAgIG1hc2tp
bmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tleV9sZW5n
dGg7Ci0gIH0KLSAgaWYgKGN1cnNvciA9PSBjdXJzb3JfZW5kKSB7Ci0gICAgcmV0dXJuOwotICB9
Ci0KLSAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKLSAgX19tMTI4aSBtYXNraW5nX2tleV9i
bG9jazsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQmxvY2tTaXplOyArK2kpIHsKLSAgICAqKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZtYXNraW5nX2tleV9ibG9jaykgKyBpKSA9Ci0gICAgICAg
IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9
IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOwotICB9Ci0KLSAg
d2hpbGUgKGN1cnNvciArIGtCbG9ja1NpemUgPD0gY3Vyc29yX2VuZCkgewotICAgIF9fbTEyOGkg
cGF5bG9hZF9ibG9jayA9Ci0gICAgICAgIF9tbV9sb2FkX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8
X19tMTI4aSo+KGN1cnNvcikpOwotICAgIF9tbV9zdHJlYW1fc2kxMjgocmVpbnRlcnByZXRfY2Fz
dDxfX20xMjhpKj4oY3Vyc29yKSwKLSAgICAgICAgICAgICAgICAgICAgIF9tbV94b3Jfc2kxMjgo
cGF5bG9hZF9ibG9jaywgbWFza2luZ19rZXlfYmxvY2spKTsKLSAgICBjdXJzb3IgKz0ga0Jsb2Nr
U2l6ZTsKLSAgfQotI2VuZGlmCi0KLSAgd2hpbGUgKGN1cnNvciA8IGN1cnNvcl9lbmQpIHsKLSAg
ICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICArK2N1cnNv
cjsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFz
a2luZ19rZXlfbGVuZ3RoOwotICB9Ci19Ci0KLSV9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5k
c2hha2UvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNzI2M2E2
OWZlOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9f
X2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0jIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yLiBUaGlzIGNs
YXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUKLW9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvcnMg
Zm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1bnRpbCBhIGNvbm5lY3Rpb24gaXMKLXN1Y2Nlc3Nm
dWxseSBlc3RhYmxpc2hlZC4KLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBp
bXBvcnQgaHliaTAwCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkK
LSMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIEhhbmRzaGFrZUV4Y2VwdGlvbiwgYW5k
IFZlcnNpb25FeGNlcHRpb24KLSMgc3ltYm9sIGZyb20gdGhpcyBtb2R1bGUuCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhj
ZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNp
b25FeGNlcHRpb24KLQotCi1fTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0K
LQotZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9RmFs
c2UsIHN0cmljdD1GYWxzZSk6Ci0gICAgIiIiUGVyZm9ybXMgV2ViU29ja2V0IGhhbmRzaGFrZS4K
LQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAg
ICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAg
IGFsbG93RHJhZnQ3NTogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9yZWQuCi0gICAgICAgIHN0cmlj
dDogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9yZWQuCi0KLSAgICBIYW5kc2hha2VyIHdpbGwgYWRk
IGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5nCi0gICAgaGFuZHNo
YWtlLgotICAgICIiIgotCi0gICAgX0xPR0dFUi5kZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFu
ZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVlc3QudXJpKQotICAgICMgVG8gcHJpbnQgbWltZXRv
b2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUtbGluZSBzdHJpbmcsIHdlIGNvbnZlcnRzCi0gICAg
IyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0LiBXaXRob3V0IGNvbnZlcnNpb24sIGlmIHdlIHVz
ZSAlciwgaXQganVzdAotICAgICMgcHJpbnRzIHRoZSB0eXBlIGFuZCBhZGRyZXNzLCBhbmQgaWYg
d2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9yaWdpbmFsCi0gICAgIyBoZWFkZXIgc3RyaW5nIGFz
IG11bHRpcGxlIGxpbmVzLgotICAgICMKLSAgICAjIEJvdGggbWltZXRvb2xzLk1lc3NhZ2UgYW5k
IE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9uIGNhbiBiZQotICAgICMgY29udmVydGVkIHRvIGRp
Y3QuCi0gICAgIwotICAgICMgbWltZXRvb2xzLk1lc3NhZ2UuX19zdHJfXyByZXR1cm5zIHRoZSBv
cmlnaW5hbCBoZWFkZXIgc3RyaW5nLgotICAgICMgZGljdChtaW1ldG9vbHMuTWVzc2FnZSBvYmpl
Y3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhlYWRlciBuYW1lcyB0bwotICAgICMgaGVhZGVyIHZh
bHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRvZXNuJ3QgaGF2ZSBzdWNoIF9fc3RyX18gYnV0IGp1
c3QKLSAgICAjIF9fcmVwcl9fIHdoaWNoIGZvcm1hdHMgaXRzZWxmIGFzIHdlbGwgYXMgZGljdGlv
bmFyeSBvYmplY3QuCi0gICAgX0xPR0dFUi5kZWJ1ZygKLSAgICAgICAgJ0NsaWVudFwncyBvcGVu
aW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcicsIGRpY3QocmVxdWVzdC5oZWFkZXJzX2luKSkKLQot
ICAgIGhhbmRzaGFrZXJzID0gW10KLSAgICBoYW5kc2hha2Vycy5hcHBlbmQoCi0gICAgICAgICgn
UkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotICAgIGhh
bmRzaGFrZXJzLmFwcGVuZCgKLSAgICAgICAgKCdIeUJpIDAwJywgaHliaTAwLkhhbmRzaGFrZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotCi0gICAgZm9yIG5hbWUsIGhhbmRzaGFrZXIgaW4gaGFu
ZHNoYWtlcnM6Ci0gICAgICAgIF9MT0dHRVIuZGVidWcoJ1RyeWluZyBwcm90b2NvbCB2ZXJzaW9u
ICVzJywgbmFtZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UoKQotICAgICAgICAgICAgX0xPR0dFUi5pbmZvKCdFc3RhYmxpc2hlZCAoJXMgcHJvdG9j
b2wpJywgbmFtZSkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBleGNlcHQgSGFuZHNoYWtl
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBfTE9HR0VSLmRlYnVnKAotICAgICAgICAgICAg
ICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3BlbmluZyBoYW5kc2hha2UgYXMgJXMgcHJvdG9jb2w6
ICVyJywKLSAgICAgICAgICAgICAgICBuYW1lLCBlKQotICAgICAgICAgICAgaWYgZS5zdGF0dXM6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgZQotICAgICAgICBleGNlcHQgQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0IFZlcnNpb25F
eGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICAjIFRPRE8odG95b3NoaW0p
OiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFsbCBoYW5kc2hha2VycyBmYWlsLgotICAg
IHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgJ0ZhaWxlZCB0byBjb21wbGV0ZSBv
cGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJsZSBwcm90b2NvbHMnLAotICAgICAgICBz
dGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotCi0KLSMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYWYwNTI0MmJmY2QuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODIg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiQ29tbW9uIGZ1bmN0aW9ucyBhbmQgZXhj
ZXB0aW9ucyB1c2VkIGJ5IFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZQotcHJvY2Vzc29ycy4K
LSIiIgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotY2xhc3MgQWJvcnRlZEJ5VXNl
ckV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRpbmcgYSBj
b25uZWN0aW9uIGludGVudGlvbmFsbHkuCi0KLSAgICBJZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlz
ZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCi0gICAgd2ls
bCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIgd2ls
bCBiZSBpbnZva2VkLgotCi0gICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRyYW5z
ZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAotICAgIGJlIGNsb3NlZCB3aXRo
b3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChTKSBoYW5k
bGVyCi0gICAgd2lsbCBiZSBpbnZva2VkLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNz
IEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdp
bGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZwotICAg
IFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lLCBzdGF0dXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhhbmRzaGFrZUV4Y2Vw
dGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKLSAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0dXMK
LQotCi1jbGFzcyBWZXJzaW9uRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNl
cHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBhIHZlcnNpb24gb2YgY2xpZW50IHJlcXVlc3QgZG9l
cyBub3QKLSAgICBtYXRjaCB3aXRoIHZlcnNpb24gdGhlIHNlcnZlciBzdXBwb3J0cy4KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9Jycp
OgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uOiBhIHN0ciBvYmplY3QgdG8gc2hvdyBzdXBwb3J0
ZWQgaHliaSB2ZXJzaW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAn
OCwgMTMnKQotICAgICAgICAiIiIKLSAgICAgICAgc3VwZXIoVmVyc2lvbkV4Y2VwdGlvbiwgc2Vs
ZikuX19pbml0X18obmFtZSkKLSAgICAgICAgc2VsZi5zdXBwb3J0ZWRfdmVyc2lvbnMgPSBzdXBw
b3J0ZWRfdmVyc2lvbnMKLQotCi1kZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUpOgotICAg
IGlmIGlzX3NlY3VyZToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
U0VDVVJFX1BPUlQKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VC
X1NPQ0tFVF9QT1JUCi0KLQotZGVmIHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKToK
LSAgICAiIiJWYWxpZGF0ZSBhIHZhbHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZp
ZWxkLgotCi0gICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2YgUkZD
IDY0NTUuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3VicHJvdG9jb2w6Ci0gICAgICAgIHJhaXNl
IEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScpCi0K
LSAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgotICAgIHN0YXRl
ID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCi0gICAgdG9rZW4g
PSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgcmVzdCA9IGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkKLSAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwgfHN1
YnByb3RvY29sfCBpcyBub3Qgb25lIHRva2VuIG9yIGludmFsaWQuIElmCi0gICAgIyB8cmVzdHwg
aXMgTm9uZSwgfHRva2VufCBtdXN0IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3RvY29sfCBp
cwotICAgICMgY29uY2F0ZW5hdGlvbiBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5vdCBO
b25lLgotICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignSW52YWxpZCBub24tdG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lOiAlcicgJSByZXN0KQotCi0KLWRlZiBw
YXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KToKLSAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRlcnNf
aW5bY29tbW9uLkhPU1RfSEVBREVSXS5zcGxpdCgnOicsIDEpCi0gICAgaWYgbGVuKGZpZWxkcykg
PT0gMToKLSAgICAgICAgcmV0dXJuIGZpZWxkc1swXSwgZ2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0
LmlzX2h0dHBzKCkpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQoZmll
bGRzWzFdKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgIHJhaXNlIEhhbmRz
aGFrZUV4Y2VwdGlvbignSW52YWxpZCBwb3J0IG51bWJlciBmb3JtYXQ6ICVyJyAlIGUpCi0KLQot
ZGVmIGZvcm1hdF9oZWFkZXIobmFtZSwgdmFsdWUpOgotICAgIHJldHVybiAnJXM6ICVzXHJcbicg
JSAobmFtZSwgdmFsdWUpCi0KLQotZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSk6Ci0gICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKLSAgICBpZiB2YWx1
ZSBpcyBOb25lOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBp
cyBub3QgZGVmaW5lZCcgJSBrZXkpCi0gICAgcmV0dXJuIHZhbHVlCi0KLQotZGVmIHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0
dXM9Tm9uZSk6Ci0gICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkp
Ci0KLSAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6Ci0gICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdFeHBlY3RlZCAlciBm
b3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKLSAgICAgICAg
ICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksIHN0YXR1cz1mYWlsX3N0YXR1cykKLQot
Ci1kZWYgY2hlY2tfcmVxdWVzdF9saW5lKHJlcXVlc3QpOgotICAgICMgNS4xIDEuIFRoZSB0aHJl
ZSBjaGFyYWN0ZXIgVVRGLTggc3RyaW5nICJHRVQiLgotICAgICMgNS4xIDIuIEEgVVRGLTgtZW5j
b2RlZCBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyICgweDIwIGJ5dGUpLgotICAgIGlmIHJlcXVlc3Qu
bWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ01ldGhv
ZCBpcyBub3QgR0VUOiAlcicgJSByZXF1ZXN0Lm1ldGhvZCkKLQotICAgIGlmIHJlcXVlc3QucHJv
dG9jb2wgIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdW
ZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCi0KLQotZGVmIHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6
Ci0gICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQg
cmV0dXJucyBwYXJzZWQgZWxlbWVudHMKLSAgICBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KLQotICAg
IExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgotICAgICIiIgotCi0gICAgc3RhdGUgPSBo
dHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQotCi0gICAgdG9rZW5fbGlzdCA9IFtd
Ci0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV90b2tlbihzdGF0ZSkKLSAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKLQotICAgICAgICBodHRwX2hlYWRlcl91dGls
LmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVr
KHN0YXRlKSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgaHR0
cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToKLSAgICAgICAgICAgIHJh
aXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21t
YSBidXQgZm91bmQgJXInICUgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAg
ICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4odG9r
ZW5fbGlzdCkgPT0gMDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdObyB2YWxp
ZCB0b2tlbiBmb3VuZCcpCi0KLSAgICByZXR1cm4gdG9rZW5fbGlzdAotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5Ymku
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmRiZjI1YTFkY2NhLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MjAg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBv
cGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIChS
RkMgNjQ1NSkuCi0KLVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM2NDU1Ci0iIiIKLQotCi0jIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSBpcyB1c2Vk
IGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaCBtb2RfcHl0aG9uCi0jIGRvY3VtZW50IHNheXMg
dGhhdCBpdCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24gaGFuZGxlcnMuCi0jIFVu
Zm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsIHJlcXVl
c3Qud3JpdGUgaXMgbm90Ci0jIHN1aXRhYmxlIGJlY2F1c2UgaXQgZG9lc24ndCBhbGxvdyBkaXJl
Y3QgcmF3IGJ5dGVzIHdyaXRpbmcuCi0KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGdldF9leHRlbnNpb25f
cHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBpc19jb21w
cmVzc2lvbl9leHRlbnNpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgY2hlY2tfcmVxdWVzdF9saW5lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QKLWZyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hl
YWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0
ZV9zdWJwcm90b2NvbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBWZXJzaW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0
cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLSMgVXNlZCB0byB2YWxpZGF0ZSB0
aGUgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4gUkZDIDQ2
NDgKLSMgZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIgcmlnaHQg
YmVmb3JlID09IG11c3QgYmUgYW55IG9mCi0jIEEsIFEsIGcgYW5kIHcuCi1fU0VDX1dFQlNPQ0tF
VF9LRVlfUkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109PSQnKQot
Ci0jIERlZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCi1fVkVSU0lP
Tl9MQVRFU1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotX1ZFUlNJT05fTEFURVNUX1NU
UklORyA9IHN0cihfVkVSU0lPTl9MQVRFU1QpCi1fU1VQUE9SVEVEX1ZFUlNJT05TID0gWwotICAg
IF9WRVJTSU9OX0xBVEVTVCwKLV0KLQotCi1kZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToKLSAgICAi
IiJDb21wdXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBmcm9t
IHZhbHVlIG9mIHRoZQotICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KLSAgICAiIiIKLQot
ICAgIGFjY2VwdF9iaW5hcnkgPSB1dGlsLnNoYTFfaGFzaCgKLSAgICAgICAga2V5ICsgY29tbW9u
LldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICBhY2NlcHQgPSBiYXNlNjQuYjY0
ZW5jb2RlKGFjY2VwdF9iaW5hcnkpCi0KLSAgICByZXR1cm4gKGFjY2VwdCwgYWNjZXB0X2JpbmFy
eSkKLQotCi1jbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcik6Ci0gICAgICAgICIi
IkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVx
dWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0
Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0KLSAgICAgICAgSGFuZHNoYWtlciB3aWxsIGFk
ZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgZHVyaW5nIGhhbmRzaGFrZS4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fZGlz
cGF0Y2hlciA9IGRpc3BhdGNoZXIKLQotICAgIGRlZiBfdmFsaWRhdGVfY29ubmVjdGlvbl9oZWFk
ZXIoc2VsZik6Ci0gICAgICAgIGNvbm5lY3Rpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUikKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBjb25uZWN0aW9uX3Rva2VucyA9IHBhcnNlX3Rva2VuX2xp
c3QoY29ubmVjdGlvbikKLSAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdG
YWlsZWQgdG8gcGFyc2UgJXM6ICVzJyAlIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGUpKQot
Ci0gICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBGYWxzZQotICAgICAgICBmb3IgdG9rZW4g
aW4gY29ubmVjdGlvbl90b2tlbnM6Ci0gICAgICAgICAgICBpZiB0b2tlbi5sb3dlcigpID09IGNv
bW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRS5sb3dlcigpOgotICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25faXNfdmFsaWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
aWYgbm90IGNvbm5lY3Rpb25faXNfdmFsaWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJyVzIGhlYWRlciBkb2VzblwndCBjb250YWluICIl
cyInICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24u
VVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQotCi0gICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToK
LSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gTm9uZQotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IE5vbmUKLQotICAgICAgICAjIFBhcnNpbmcuCi0K
LSAgICAgICAgY2hlY2tfcmVxdWVzdF9saW5lKHNlbGYuX3JlcXVlc3QpCi0KLSAgICAgICAgdmFs
aWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsCi0gICAg
ICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09D
S0VUX1VQR1JBREVfVFlQRSkKLQotICAgICAgICBzZWxmLl92YWxpZGF0ZV9jb25uZWN0aW9uX2hl
YWRlcigpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVl
c3QudXJpCi0KLSAgICAgICAgdW51c2VkX2hvc3QgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxm
Ll9yZXF1ZXN0LCBjb21tb24uSE9TVF9IRUFERVIpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53
c192ZXJzaW9uID0gc2VsZi5fY2hlY2tfdmVyc2lvbigpCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5fZ2V0X29yaWdpbigpCi0gICAgICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2wo
KQotICAgICAgICAgICAgc2VsZi5fcGFyc2VfZXh0ZW5zaW9ucygpCi0KLSAgICAgICAgICAgICMg
S2V5IHZhbGlkYXRpb24sIHJlc3BvbnNlIGdlbmVyYXRpb24uCi0KLSAgICAgICAgICAgIGtleSA9
IHNlbGYuX2dldF9rZXkoKQotICAgICAgICAgICAgKGFjY2VwdCwgYWNjZXB0X2JpbmFyeSkgPSBj
b21wdXRlX2FjY2VwdChrZXkpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAg
ICAgICAgICAgICAgJyVzOiAlciAoJXMpJywKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9BQ0NFUFRfSEVBREVSLAotICAgICAgICAgICAgICAgIGFjY2VwdCwKLSAgICAgICAg
ICAgICAgICB1dGlsLmhleGlmeShhY2NlcHRfYmluYXJ5KSkKLQotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdQcm90b2NvbCB2ZXJzaW9uIGlzIFJGQyA2NDU1JykKLQotICAgICAgICAg
ICAgIyBTZXR1cCBleHRlbnNpb24gcHJvY2Vzc29ycy4KLQotICAgICAgICAgICAgcHJvY2Vzc29y
cyA9IFtdCi0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNp
b25zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGZvciBleHRlbnNpb25fcmVxdWVzdCBp
biBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzb3IgPSBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVz
dCkKLSAgICAgICAgICAgICAgICAgICAgIyBVbmtub3duIGV4dGVuc2lvbiByZXF1ZXN0cyBhcmUg
anVzdCBpZ25vcmVkLgotICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3Ip
Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gcHJv
Y2Vzc29ycwotCi0gICAgICAgICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVycy4gVGhlIGV4dHJh
IGhhbmRzaGFrZSBoYW5kbGVyIG1heSBhZGQgaGVhZGVyCi0gICAgICAgICAgICAjIGRhdGEgYXMg
bmFtZS92YWx1ZSBwYWlycyB0byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0IGFwcGVuZHMKLSAg
ICAgICAgICAgICMgdGhlbSB0byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4KLSAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVycyA9IFtdCi0KLSAgICAgICAgICAgICMgRXh0cmEg
aGFuZHNoYWtlIGhhbmRsZXIgbWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29ycy4KLSAgICAgICAg
ICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCi0g
ICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nv
ciBpcyBub3QgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykKLQotICAgICAgICAgICAgIyBBc2sgZWFjaCBw
cm9jZXNzb3IgaWYgdGhlcmUgYXJlIGV4dGVuc2lvbnMgb24gdGhlIHJlcXVlc3Qgd2hpY2gKLSAg
ICAgICAgICAgICMgY2Fubm90IGNvLWV4aXN0LiBXaGVuIHByb2Nlc3NvciBkZWNpZGVkIG90aGVy
IHByb2Nlc3NvcnMgY2Fubm90Ci0gICAgICAgICAgICAjIGNvLWV4aXN0IHdpdGggaXQsIHRoZSBw
cm9jZXNzb3IgbWFya3MgdGhlbSAob3IgaXRzZWxmKSBhcwotICAgICAgICAgICAgIyAiaW5hY3Rp
dmUiLiBUaGUgZmlyc3QgZXh0ZW5zaW9uIHByb2Nlc3NvciBoYXMgdGhlIHJpZ2h0IHRvCi0gICAg
ICAgICAgICAjIG1ha2UgdGhlIGZpbmFsIGNhbGwuCi0gICAgICAgICAgICBmb3IgcHJvY2Vzc29y
IGluIHJldmVyc2VkKHByb2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5p
c19hY3RpdmUoKToKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLmNoZWNrX2NvbnNpc3Rl
bmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycygKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nl
c3NvcnMpCi0gICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6
IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc29ycykKLQotICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0KLSAg
ICAgICAgICAgICMgV2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBvZiBtdXggZXh0ZW5zaW9u
IGhlcmUuCi0gICAgICAgICAgICAjIElmIG11eCBleHRlbnNpb24gZXhpc3RzOgotICAgICAgICAg
ICAgIyAtIFJlbW92ZSBwcm9jZXNzb3JzIG9mIGV4dGVuc2lvbnMgZm9yIGxvZ2ljYWwgY2hhbm5l
bCwKLSAgICAgICAgICAgICMgICB3aGljaCBhcmUgcHJvY2Vzc29ycyBsb2NhdGVkIGJlZm9yZSB0
aGUgbXV4IHByb2Nlc3NvcgotICAgICAgICAgICAgIyAtIFBhc3MgZXh0ZW5zaW9uIHJlcXVlc3Rz
IGZvciBsb2dpY2FsIGNoYW5uZWwgdG8gbXV4IHByb2Nlc3NvcgotICAgICAgICAgICAgIyAtIEF0
dGFjaCB0aGUgbXV4IHByb2Nlc3NvciB0byB0aGUgcmVxdWVzdC4gSXQgd2lsbCBiZSByZWZlcnJl
ZAotICAgICAgICAgICAgIyAgIGJ5IGRpc3BhdGNoZXIgdG8gc2VlIHdoZXRoZXIgdGhlIGRpc3Bh
dGNoZXIgc2hvdWxkIHVzZSBtdXgKLSAgICAgICAgICAgICMgICBoYW5kbGVyIG9yIG5vdC4KLSAg
ICAgICAgICAgIG11eF9pbmRleCA9IC0xCi0gICAgICAgICAgICBmb3IgaSwgcHJvY2Vzc29yIGlu
IGVudW1lcmF0ZShwcm9jZXNzb3JzKToKLSAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IubmFt
ZSgpID09IGNvbW1vbi5NVVhfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgICAgICBtdXhfaW5k
ZXggPSBpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBtdXhfaW5k
ZXggPj0gMDoKLSAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyA9IFtd
Ci0gICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzWzptdXhfaW5kZXhd
OgotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucy5hcHBlbmQo
cHJvY2Vzc29yLnJlcXVlc3QoKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldF9h
Y3RpdmUoRmFsc2UpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29y
ID0gcHJvY2Vzc29yc1ttdXhfaW5kZXhdCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5t
dXhfcHJvY2Vzc29yLnNldF9leHRlbnNpb25zKAotICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
X2NoYW5uZWxfZXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVy
KGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMpCi0KLSAgICAgICAgICAgIHN0cmVhbV9v
cHRpb25zID0gU3RyZWFtT3B0aW9ucygpCi0KLSAgICAgICAgICAgIGZvciBpbmRleCwgcHJvY2Vz
c29yIGluIGVudW1lcmF0ZShwcm9jZXNzb3JzKToKLSAgICAgICAgICAgICAgICBpZiBub3QgcHJv
Y2Vzc29yLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAg
ICAgICAgICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25f
cmVzcG9uc2UoKQotICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBpcyBOb25l
OgotICAgICAgICAgICAgICAgICAgICAjIFJlamVjdGVkLgotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotCi0gICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0
ZW5zaW9uX3Jlc3BvbnNlKQotCi0gICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVh
bV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzX2Nv
bXByZXNzaW9uX2V4dGVuc2lvbihwcm9jZXNzb3IubmFtZSgpKToKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICMgSW5hY3RpdmF0ZSBhbGwgb2YgdGhlIGZv
bGxvd2luZyBjb21wcmVzc2lvbiBleHRlbnNpb25zLgotICAgICAgICAgICAgICAgIGZvciBqIGlu
IHhyYW5nZShpbmRleCArIDEsIGxlbihwcm9jZXNzb3JzKSk6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbihwcm9jZXNzb3JzW2pdLm5hbWUoKSk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFsc2UpCi0KLSAg
ICAgICAgICAgIGlmIGxlbihhY2NlcHRlZF9leHRlbnNpb25zKSA+IDA6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5zaW9ucwotICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0V4
dGVuc2lvbnMgYWNjZXB0ZWQ6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIubmFtZSwgYWNjZXB0ZWRfZXh0ZW5zaW9ucykpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyA9IE5v
bmUKLQotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxmLl9jcmVhdGVf
c3RyZWFtKHN0cmVhbV9vcHRpb25zKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9fZXh0cmFf
aGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQgdG8gd3NfcHJv
dG9jb2wnKQotICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYuX3JlcXVl
c3Qud3NfcHJvdG9jb2wpCi0KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAgICAgICAgICdTdWJwcm90b2NvbCBhY2NlcHRlZDogJXInLAotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnd3NfcHJvdG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhlIGNsaWVu
dCBkaWRuXCd0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBzdWJwcm90
b2NvbCcpCi0KLSAgICAgICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKGFjY2VwdCkKLSAgICAg
ICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYgbm90IGUu
c3RhdHVzOgotICAgICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJhZCByZXF1ZXN0IGJ5
IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24uSFRUUF9TVEFUVVNf
QkFEX1JFUVVFU1QKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgIGRlZiBfZ2V0X29yaWdpbihz
ZWxmKToKLSAgICAgICAgb3JpZ2luX2hlYWRlciA9IGNvbW1vbi5PUklHSU5fSEVBREVSCi0gICAg
ICAgIG9yaWdpbiA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQob3JpZ2luX2hlYWRlcikK
LSAgICAgICAgaWYgb3JpZ2luIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ0NsaWVudCByZXF1ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2luIGhlYWRlcicpCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gb3JpZ2luCi0KLSAgICBkZWYgX2NoZWNrX3ZlcnNp
b24oc2VsZik6Ci0gICAgICAgIHZlcnNpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9y
ZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpCi0gICAgICAgIGlmIHZlcnNpb24gPT0gX1ZFUlNJ
T05fTEFURVNUX1NUUklORzoKLSAgICAgICAgICAgIHJldHVybiBfVkVSU0lPTl9MQVRFU1QKLQot
ICAgICAgICBpZiB2ZXJzaW9uLmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSB2ZXJzaW9ucyAoJXIp
IGFyZSBub3QgYWxsb3dlZCBmb3IgaGVhZGVyICVzJyAlCi0gICAgICAgICAgICAgICAgKHZlcnNp
b24sIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSKSwKLSAgICAgICAgICAgICAg
ICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICByYWlzZSBW
ZXJzaW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9y
IGhlYWRlciAlcycgJQotICAgICAgICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNfV0VCU09DS0VU
X1ZFUlNJT05fSEVBREVSKSwKLSAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz0nLCAnLmpv
aW4obWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQotCi0gICAgZGVmIF9zZXRfcHJvdG9j
b2woc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0KLSAg
ICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAg
ICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKLQotICAgICAg
ICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rva2VuX2xp
c3QoCi0gICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQotCi0gICAgZGVmIF9w
YXJzZV9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9IHNlbGYu
X3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUikKLSAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVhZGVyOgot
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9IE5vbmUK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygK
LSAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKLSAgICAgICAgZXhjZXB0IGNvbW1v
bi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMtV2Vi
U29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAotICAgICAg
ICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFtZSwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKLQotICAgIGRlZiBfdmFs
aWRhdGVfa2V5KHNlbGYsIGtleSk6Ci0gICAgICAgIGlmIGtleS5maW5kKCcsJykgPj0gMDoKLSAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignUmVxdWVzdCBoYXMgbXVsdGlwbGUg
JXMgaGVhZGVyIGxpbmVzIG9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXIgXCcsXCc6ICVyJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIs
IGtleSkpCi0KLSAgICAgICAgIyBWYWxpZGF0ZQotICAgICAgICBrZXlfaXNfdmFsaWQgPSBGYWxz
ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFZhbGlkYXRlIGtleSBieSBxdWljayByZWdl
eCBtYXRjaCBiZWZvcmUgcGFyc2luZyBieSBiYXNlNjQKLSAgICAgICAgICAgICMgbW9kdWxlLiBC
ZWNhdXNlIGJhc2U2NCBtb2R1bGUgc2tpcHMgaW52YWxpZCBjaGFyYWN0ZXJzLCB3ZSBoYXZlCi0g
ICAgICAgICAgICAjIHRvIGRvIHRoaXMgaW4gYWR2YW5jZSB0byBtYWtlIHRoaXMgc2VydmVyIHN0
cmljdGx5IHJlamVjdCBpbGxlZ2FsCi0gICAgICAgICAgICAjIGtleXMuCi0gICAgICAgICAgICBp
ZiBfU0VDX1dFQlNPQ0tFVF9LRVlfUkVHRVgubWF0Y2goa2V5KToKLSAgICAgICAgICAgICAgICBk
ZWNvZGVkX2tleSA9IGJhc2U2NC5iNjRkZWNvZGUoa2V5KQotICAgICAgICAgICAgICAgIGlmIGxl
bihkZWNvZGVkX2tleSkgPT0gMTY6Ci0gICAgICAgICAgICAgICAgICAgIGtleV9pc192YWxpZCA9
IFRydWUKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAgICAgICAgICAgcGFzcwot
Ci0gICAgICAgIGlmIG5vdCBrZXlfaXNfdmFsaWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAl
czogJXInICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURF
Uiwga2V5KSkKLQotICAgICAgICByZXR1cm4gZGVjb2RlZF9rZXkKLQotICAgIGRlZiBfZ2V0X2tl
eShzZWxmKToKLSAgICAgICAga2V5ID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LCBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSKQotCi0gICAg
ICAgIGRlY29kZWRfa2V5ID0gc2VsZi5fdmFsaWRhdGVfa2V5KGtleSkKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnJXM6ICVyICglcyknLAotICAgICAgICAgICAg
Y29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwKLSAgICAgICAgICAgIGtleSwKLSAgICAg
ICAgICAgIHV0aWwuaGV4aWZ5KGRlY29kZWRfa2V5KSkKLQotICAgICAgICByZXR1cm4ga2V5Ci0K
LSAgICBkZWYgX2NyZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX29wdGlvbnMpOgotICAgICAgICBy
ZXR1cm4gU3RyZWFtKHNlbGYuX3JlcXVlc3QsIHN0cmVhbV9vcHRpb25zKQotCi0gICAgZGVmIF9j
cmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKHNlbGYsIGFjY2VwdCk6Ci0gICAgICAgIHJlc3BvbnNl
ID0gW10KLQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcg
UHJvdG9jb2xzXHJcbicpCi0KLSAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycwotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURF
X0hFQURFUiwgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpKQotICAgICAgICByZXNwb25z
ZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hF
QURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKLSAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9B
Q0NFUFRfSEVBREVSLCBhY2NlcHQpKQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3Rv
Y29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFk
ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVS
LAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQotICAgICAgICBp
ZiAoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAg
ICAgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6Ci0gICAgICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uU0VD
X1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwKLSAgICAgICAgICAgICAgICBjb21tb24uZm9y
bWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSkpCi0KLSAgICAgICAg
IyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0Ci0gICAgICAgIGZvciBuYW1lLCB2
YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6Ci0gICAgICAgICAgICByZXNwb25z
ZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkpCi0KLSAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKCdcclxuJykKLQotICAgICAgICByZXR1cm4gJycuam9pbihyZXNwb25zZSkKLQotICAg
IGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgcmF3X3Jlc3BvbnNl
ID0gc2VsZi5fY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZShhY2NlcHQpCi0gICAgICAgIHNlbGYu
X3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdfcmVzcG9uc2UpCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4NzU3NzE3YTYzOWIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkz
ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRlcyB0aGUg
b3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0Ci1wcm90b2NvbCB2
ZXJzaW9uIEh5QmkgMDAuCi0KLVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9kcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDAKLSIiIgotCi0KLSMg
Tm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1
bGUsIGV2ZW4gdGhvdWdoCi0jIG1vZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0IHRoZXkgc2hv
dWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uCi0jIGhhbmRsZXJzLiBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLAotIyByZXF1ZXN0LndyaXRl
L3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJh
dyBieXRlcwotIyB3cml0aW5nL3JlYWRpbmcuCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBy
ZQotaW1wb3J0IHN0cnVjdAotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1ZXN0X2xpbmUKLWZyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9ybWF0X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBnZXRfZGVmYXVsdF9wb3J0Ci1mcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGdldF9tYW5kYXRvcnlfaGVhZGVyCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX2hvc3RfaGVh
ZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIKLQotCi1fTUFOREFUT1JZX0hFQURFUlMgPSBbCi0gICAgIyBrZXks
IGV4cGVjdGVkIHZhbHVlIG9yIE5vbmUKLSAgICBbY29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21t
b24uV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJRTc1XSwKLSAgICBbY29tbW9uLkNPTk5FQ1RJ
T05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEVdLAotXQotCi0KLWRlZiBf
dmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgotICAgICIiIkNoZWNrcyBpZiBjaGFy
YWN0ZXJzIGluIHN1YnByb3RvY29sIGFyZSBpbiByYW5nZSBiZXR3ZWVuIFUrMDAyMCBhbmQKLSAg
ICBVKzAwN0UuIEEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmllbGQgbmVl
ZCB0byBzYXRpc2Z5IHRoaXMKLSAgICByZXF1aXJlbWVudC4KLQotICAgIFNlZSB0aGUgU2VjdGlv
biA0LjEuIE9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBzcGVjLgotICAgICIiIgotCi0gICAgaWYg
bm90IHN1YnByb3RvY29sOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFs
aWQgc3VicHJvdG9jb2wgbmFtZTogZW1wdHknKQotCi0gICAgIyBQYXJhbWV0ZXIgc2hvdWxkIGJl
IGluIHRoZSByYW5nZSBVKzAwMjAgdG8gVSswMDdFLgotICAgIGZvciBjIGluIHN1YnByb3RvY29s
OgotICAgICAgICBpZiBub3QgMHgyMCA8PSBvcmQoYykgPD0gMHg3ZToKLSAgICAgICAgICAgIHJh
aXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWxsZWdhbCBjaGFyYWN0
ZXIgaW4gc3VicHJvdG9jb2wgbmFtZTogJXInICUgYykKLQotCi1kZWYgX2NoZWNrX2hlYWRlcl9s
aW5lcyhyZXF1ZXN0LCBtYW5kYXRvcnlfaGVhZGVycyk6Ci0gICAgY2hlY2tfcmVxdWVzdF9saW5l
KHJlcXVlc3QpCi0KLSAgICAjIFRoZSBleHBlY3RlZCBmaWVsZCBuYW1lcywgYW5kIHRoZSBtZWFu
aW5nIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgICAjIHZhbHVlcywgYXJlIGFzIGZvbGxvd3Mu
Ci0gICAgIyAgfFVwZ3JhZGV8IGFuZCB8Q29ubmVjdGlvbnwKLSAgICBmb3Iga2V5LCBleHBlY3Rl
ZF92YWx1ZSBpbiBtYW5kYXRvcnlfaGVhZGVyczoKLSAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5
X2hlYWRlcihyZXF1ZXN0LCBrZXksIGV4cGVjdGVkX3ZhbHVlKQotCi0KLWRlZiBfYnVpbGRfbG9j
YXRpb24ocmVxdWVzdCk6Ci0gICAgIiIiQnVpbGQgV2ViU29ja2V0IGxvY2F0aW9uIGZvciByZXF1
ZXN0LiIiIgotCi0gICAgbG9jYXRpb25fcGFydHMgPSBbXQotICAgIGlmIHJlcXVlc3QuaXNfaHR0
cHMoKToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGNvbW1vbi5XRUJfU09DS0VUX1NF
Q1VSRV9TQ0hFTUUpCi0gICAgZWxzZToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGNv
bW1vbi5XRUJfU09DS0VUX1NDSEVNRSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzovLycp
Ci0gICAgaG9zdCwgcG9ydCA9IHBhcnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpCi0gICAgY29ubmVj
dGlvbl9wb3J0ID0gcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHJbMV0KLSAgICBpZiBwb3J0
ICE9IGNvbm5lY3Rpb25fcG9ydDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdI
ZWFkZXIvY29ubmVjdGlvbiBwb3J0IG1pc21hdGNoOiAlZC8lZCcgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHBvcnQsIGNvbm5lY3Rpb25fcG9ydCkpCi0gICAgbG9jYXRpb25f
cGFydHMuYXBwZW5kKGhvc3QpCi0gICAgaWYgKHBvcnQgIT0gZ2V0X2RlZmF1bHRfcG9ydChyZXF1
ZXN0LmlzX2h0dHBzKCkpKToKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKCc6JykKLSAg
ICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHN0cihwb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0
cy5hcHBlbmQocmVxdWVzdC51bnBhcnNlZF91cmkpCi0gICAgcmV0dXJuICcnLmpvaW4obG9jYXRp
b25fcGFydHMpCi0KLQotY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgotICAgICIiIk9wZW5pbmcg
aGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEh5
QmkgMDAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0
Y2hlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAg
ZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0KLSAgICAgICAg
SGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgaW4gcGVy
Zm9ybWluZwotICAgICAgICBoYW5kc2hha2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX3Jl
cXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyCi0K
LSAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQZXJmb3JtIFdlYlNvY2tl
dCBIYW5kc2hha2UuCi0KLSAgICAgICAgT24gX3JlcXVlc3QsIHdlIHNldAotICAgICAgICAgICAg
d3NfcmVzb3VyY2UsIHdzX3Byb3RvY29sLCB3c19sb2NhdGlvbiwgd3Nfb3JpZ2luLCB3c19jaGFs
bGVuZ2UsCi0gICAgICAgICAgICB3c19jaGFsbGVuZ2VfbWQ1OiBXZWJTb2NrZXQgaGFuZHNoYWtl
IGluZm9ybWF0aW9uLgotICAgICAgICAgICAgd3Nfc3RyZWFtOiBGcmFtZSBnZW5lcmF0aW9uL3Bh
cnNpbmcgY2xhc3MuCi0gICAgICAgICAgICB3c192ZXJzaW9uOiBQcm90b2NvbCB2ZXJzaW9uLgot
Ci0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBh
bnkgZXJyb3IgaGFwcGVuZWQgaW4gcGFyc2luZyB0aGUgb3BlbmluZwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kc2hha2UgcmVxdWVzdC4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgIyA1LjEgUmVhZGluZyB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCi0gICAgICAg
ICMgZGlzcGF0Y2hlciBzZXRzIGl0IGluIHNlbGYuX3JlcXVlc3QuCi0gICAgICAgIF9jaGVja19o
ZWFkZXJfbGluZXMoc2VsZi5fcmVxdWVzdCwgX01BTkRBVE9SWV9IRUFERVJTKQotICAgICAgICBz
ZWxmLl9zZXRfcmVzb3VyY2UoKQotICAgICAgICBzZWxmLl9zZXRfc3VicHJvdG9jb2woKQotICAg
ICAgICBzZWxmLl9zZXRfbG9jYXRpb24oKQotICAgICAgICBzZWxmLl9zZXRfb3JpZ2luKCkKLSAg
ICAgICAgc2VsZi5fc2V0X2NoYWxsZW5nZV9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuX3NldF9w
cm90b2NvbF92ZXJzaW9uKCkKLQotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyLmRvX2V4dHJhX2hh
bmRzaGFrZShzZWxmLl9yZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKCkK
LQotICAgIGRlZiBfc2V0X3Jlc291cmNlKHNlbGYpOgotICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X3Jlc291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKLQotICAgIGRlZiBfc2V0X3N1YnByb3RvY29s
KHNlbGYpOgotICAgICAgICAjIHxTZWMtV2ViU29ja2V0LVByb3RvY29sfAotICAgICAgICBzdWJw
cm90b2NvbCA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCi0gICAgICAgICAgICBjb21t
b24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIpCi0gICAgICAgIGlmIHN1YnByb3RvY29s
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3Rv
Y29sKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0gc3VicHJvdG9jb2wKLQot
ICAgIGRlZiBfc2V0X2xvY2F0aW9uKHNlbGYpOgotICAgICAgICAjIHxIb3N0fAotICAgICAgICBo
b3N0ID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChjb21tb24uSE9TVF9IRUFERVIpCi0g
ICAgICAgIGlmIGhvc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X2xvY2F0aW9uID0gX2J1aWxkX2xvY2F0aW9uKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICMgVE9E
Tyh1a2FpKTogY2hlY2sgaG9zdCBpcyB0aGlzIGhvc3QuCi0KLSAgICBkZWYgX3NldF9vcmlnaW4o
c2VsZik6Ci0gICAgICAgICMgfE9yaWdpbnwKLSAgICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVz
dC5oZWFkZXJzX2luLmdldChjb21tb24uT1JJR0lOX0hFQURFUikKLSAgICAgICAgaWYgb3JpZ2lu
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmln
aW4KLQotICAgIGRlZiBfc2V0X3Byb3RvY29sX3ZlcnNpb24oc2VsZik6Ci0gICAgICAgICMgfFNl
Yy1XZWJTb2NrZXQtRHJhZnR8Ci0gICAgICAgIGRyYWZ0ID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJz
X2luLmdldChjb21tb24uU0VDX1dFQlNPQ0tFVF9EUkFGVF9IRUFERVIpCi0gICAgICAgIGlmIGRy
YWZ0IGlzIG5vdCBOb25lIGFuZCBkcmFmdCAhPSAnMCc6Ci0gICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFeGNlcHRpb24oJ0lsbGVnYWwgdmFsdWUgZm9yICVzOiAlcycgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9EUkFGVF9IRUFE
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWZ0KSkKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgSHlCaSAwMCcpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQkkwMAot
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IFN0cmVhbUhpeGllNzUoc2VsZi5fcmVx
dWVzdCwgVHJ1ZSkKLQotICAgIGRlZiBfc2V0X2NoYWxsZW5nZV9yZXNwb25zZShzZWxmKToKLSAg
ICAgICAgIyA1LjIgNC04LgotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2NoYWxsZW5nZSA9IHNl
bGYuX2dldF9jaGFsbGVuZ2UoKQotICAgICAgICAjIDUuMiA5LiBsZXQgL3Jlc3BvbnNlLyBiZSB0
aGUgTUQ1IGZpbnRlcnByaW50IG9mIC9jaGFsbGVuZ2UvCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfY2hhbGxlbmdlX21kNSA9IHV0aWwubWQ1X2hhc2goCi0gICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2NoYWxsZW5nZSkuZGlnZXN0KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgJ0NoYWxsZW5nZTogJXIgKCVzKScsCi0gICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2NoYWxsZW5nZSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KHNlbGYuX3JlcXVlc3Qu
d3NfY2hhbGxlbmdlKSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAg
J0NoYWxsZW5nZSByZXNwb25zZTogJXIgKCVzKScsCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX2NoYWxsZW5nZV9tZDUsCi0gICAgICAgICAgICB1dGlsLmhleGlmeShzZWxmLl9yZXF1ZXN0
LndzX2NoYWxsZW5nZV9tZDUpKQotCi0gICAgZGVmIF9nZXRfa2V5X3ZhbHVlKHNlbGYsIGtleV9m
aWVsZCk6Ci0gICAgICAgIGtleV92YWx1ZSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3Jl
cXVlc3QsIGtleV9maWVsZCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzOiAlcics
IGtleV9maWVsZCwga2V5X3ZhbHVlKQotCi0gICAgICAgICMgNS4yIDQuIGxldCAva2V5LW51bWJl
cl9uLyBiZSB0aGUgZGlnaXRzIChjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQotICAgICAgICAjIFUr
MDAzMCBESUdJVCBaRVJPICgwKSB0byBVKzAwMzkgRElHSVQgTklORSAoOSkpIGluIC9rZXlfbi8s
Ci0gICAgICAgICMgaW50ZXJwcmV0ZWQgYXMgYSBiYXNlIHRlbiBpbnRlZ2VyLCBpZ25vcmluZyBh
bGwgb3RoZXIgY2hhcmFjdGVycwotICAgICAgICAjIGluIC9rZXlfbi8uCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGtleV9udW1iZXIgPSBpbnQocmUuc3ViKCJcXEQiLCAiIiwga2V5X3ZhbHVl
KSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KCclcyBmaWVsZCBjb250YWlucyBubyBkaWdpdCcgJSBrZXlfZmllbGQpCi0gICAgICAgICMgNS4y
IDUuIGxldCAvc3BhY2VzX24vIGJlIHRoZSBudW1iZXIgb2YgVSswMDIwIFNQQUNFIGNoYXJhY3Rl
cnMKLSAgICAgICAgIyBpbiAva2V5X24vLgotICAgICAgICBzcGFjZXMgPSByZS5zdWJuKCIgIiwg
IiIsIGtleV92YWx1ZSlbMV0KLSAgICAgICAgaWYgc3BhY2VzID09IDA6Ci0gICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJyVzIGZpZWxkIGNvbnRhaW5zIG5vIHNwYWNlJyAlIGtl
eV9maWVsZCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnJXM6
IEtleS1udW1iZXIgaXMgJWQgYW5kIG51bWJlciBvZiBzcGFjZXMgaXMgJWQnLAotICAgICAgICAg
ICAga2V5X2ZpZWxkLCBrZXlfbnVtYmVyLCBzcGFjZXMpCi0KLSAgICAgICAgIyA1LjIgNi4gaWYg
L2tleS1udW1iZXJfbi8gaXMgbm90IGFuIGludGVncmFsIG11bHRpcGxlIG9mIC9zcGFjZXNfbi8K
LSAgICAgICAgIyB0aGVuIGFib3J0IHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KLSAgICAgICAg
aWYga2V5X251bWJlciAlIHNwYWNlcyAhPSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICclczogS2V5LW51bWJlciAoJWQpIGlzIG5vdCBh
biBpbnRlZ3JhbCBtdWx0aXBsZSBvZiBzcGFjZXMgJwotICAgICAgICAgICAgICAgICcoJWQpJyAl
IChrZXlfZmllbGQsIGtleV9udW1iZXIsIHNwYWNlcykpCi0gICAgICAgICMgNS4yIDcuIGxldCAv
cGFydF9uLyBiZSAva2V5LW51bWJlcl9uLyBkaXZpZGVkIGJ5IC9zcGFjZXNfbi8uCi0gICAgICAg
IHBhcnQgPSBrZXlfbnVtYmVyIC8gc3BhY2VzCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
JXM6IFBhcnQgaXMgJWQnLCBrZXlfZmllbGQsIHBhcnQpCi0gICAgICAgIHJldHVybiBwYXJ0Ci0K
LSAgICBkZWYgX2dldF9jaGFsbGVuZ2Uoc2VsZik6Ci0gICAgICAgICMgNS4yIDQtNy4KLSAgICAg
ICAga2V5MSA9IHNlbGYuX2dldF9rZXlfdmFsdWUoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMV9I
RUFERVIpCi0gICAgICAgIGtleTIgPSBzZWxmLl9nZXRfa2V5X3ZhbHVlKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWTJfSEVBREVSKQotICAgICAgICAjIDUuMiA4LiBsZXQgL2NoYWxsZW5nZS8gYmUg
dGhlIGNvbmNhdGVuYXRpb24gb2YgL3BhcnRfMS8sCi0gICAgICAgIGNoYWxsZW5nZSA9ICcnCi0g
ICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1Y3QucGFjaygnIUknLCBrZXkxKSAgIyBuZXR3b3JrIGJ5
dGVvcmRlciBpbnQKLSAgICAgICAgY2hhbGxlbmdlICs9IHN0cnVjdC5wYWNrKCchSScsIGtleTIp
ICAjIG5ldHdvcmsgYnl0ZW9yZGVyIGludAotICAgICAgICBjaGFsbGVuZ2UgKz0gc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLnJlYWQoOCkKLSAgICAgICAgcmV0dXJuIGNoYWxsZW5nZQotCi0gICAg
ZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAg
ICAgICMgNS4yIDEwLiBzZW5kIHRoZSBmb2xsb3dpbmcgbGluZS4KLSAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKCdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nKQot
Ci0gICAgICAgICMgNS4yIDExLiBzZW5kIHRoZSBmb2xsb3dpbmcgZmllbGRzIHRvIHRoZSBjbGll
bnQuCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAg
Y29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJ
RTc1KSkKLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAg
ICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQ
RSkpCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAg
Y29tbW9uLlNFQ19XRUJTT0NLRVRfTE9DQVRJT05fSEVBREVSLCBzZWxmLl9yZXF1ZXN0LndzX2xv
Y2F0aW9uKSkKLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAg
ICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9PUklHSU5fSEVBREVSLCBzZWxmLl9yZXF1ZXN0Lndz
X29yaWdpbikpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2w6Ci0gICAgICAg
ICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgICAgICBjb21t
b24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgICMgNS4yIDEyLiBzZW5kIHR3byBieXRlcyAw
eDBEIDB4MEEuCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnXHJcbicpCi0gICAgICAgICMgNS4y
IDEzLiBzZW5kIC9yZXNwb25zZS8KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHNlbGYuX3JlcXVl
c3Qud3NfY2hhbGxlbmdlX21kNSkKLQotICAgICAgICByYXdfcmVzcG9uc2UgPSAnJy5qb2luKHJl
c3BvbnNlKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUocmF3X3Jlc3Bv
bnNlKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2VydmVyXCdzIG9wZW5pbmcg
aGFuZHNoYWtlOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByYXdfcmVzcG9uc2Up
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1N2E0OGM2
MjdiYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9oeWJpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA2ZTc2Mzg1OTc5OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwy
NTcgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiUHl0aG9uSGVhZGVyUGFyc2VySGFu
ZGxlciBmb3IgbW9kX3B5d2Vic29ja2V0LgotCi1BcGFjaGUgSFRUUCBTZXJ2ZXIgYW5kIG1vZF9w
eXRob24gbXVzdCBiZSBjb25maWd1cmVkIHN1Y2ggdGhhdCB0aGlzCi1mdW5jdGlvbiBpcyBjYWxs
ZWQgdG8gaGFuZGxlIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcK
LQotZnJvbSBtb2RfcHl0aG9uIGltcG9ydCBhcGFjaGUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotCi0KLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgcm9v
dCBkaXJlY3RvcnkuCi1fUFlPUFRfSEFORExFUl9ST09UID0gJ21vZF9weXdlYnNvY2tldC5oYW5k
bGVyX3Jvb3QnCi0KLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgc2NhbiBk
aXJlY3RvcnkuCi0jIFRoaXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciB0aGUgcm9vdCBkaXJl
Y3RvcnkuCi0jIFRoZSBkZWZhdWx0IGlzIHRoZSByb290IGRpcmVjdG9yeS4KLV9QWU9QVF9IQU5E
TEVSX1NDQU4gPSAnbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfc2NhbicKLQotIyBQeXRob25PcHRp
b24gdG8gYWxsb3cgaGFuZGxlcnMgd2hvc2UgY2Fub25pY2FsIHBhdGggaXMKLSMgbm90IHVuZGVy
IHRoZSByb290IGRpcmVjdG9yeS4gSXQncyBkaXNhbGxvd2VkIGJ5IGRlZmF1bHQuCi0jIFNldCB0
aGlzIG9wdGlvbiB3aXRoIHZhbHVlIG9mICd5ZXMnIHRvIGFsbG93LgotX1BZT1BUX0FMTE9XX0hB
TkRMRVJTX09VVFNJREVfUk9PVCA9ICgKLSAgICAnbW9kX3B5d2Vic29ja2V0LmFsbG93X2hhbmRs
ZXJzX291dHNpZGVfcm9vdF9kaXInKQotIyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVhbmlu
Z3MuICdZZXMnIGFuZCAnTm8nIGFyZSBhbGxvd2VkIGp1c3QgZm9yCi0jIGNvbXBhdGliaWxpdHku
Ci1fUFlPUFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9ST09UX0RFRklOSVRJT04gPSB7Ci0gICAg
J29mZic6IEZhbHNlLCAnbm8nOiBGYWxzZSwgJ29uJzogVHJ1ZSwgJ3llcyc6IFRydWV9Ci0KLSMg
KE9ic29sZXRlIG9wdGlvbi4gSWdub3JlZC4pCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRv
IGFsbG93IGhhbmRzaGFrZSBkZWZpbmVkIGluIEhpeGllIDc1IHZlcnNpb24KLSMgcHJvdG9jb2wu
IFRoZSBkZWZhdWx0IGlzIE5vbmUgKE9mZikKLV9QWU9QVF9BTExPV19EUkFGVDc1ID0gJ21vZF9w
eXdlYnNvY2tldC5hbGxvd19kcmFmdDc1JwotIyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVh
bmluZ3MuCi1fUFlPUFRfQUxMT1dfRFJBRlQ3NV9ERUZJTklUSU9OID0geydvZmYnOiBGYWxzZSwg
J29uJzogVHJ1ZX0KLQotCi1jbGFzcyBBcGFjaGVMb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6
Ci0KLSAgICAiIiJXcmFwcGVyIGxvZ2dpbmcuSGFuZGxlciB0byBlbWl0IGxvZyBtZXNzYWdlIHRv
IGFwYWNoZSdzIGVycm9yLmxvZy4iIiIKLQotICAgIF9MRVZFTFMgPSB7Ci0gICAgICAgIGxvZ2dp
bmcuREVCVUc6IGFwYWNoZS5BUExPR19ERUJVRywKLSAgICAgICAgbG9nZ2luZy5JTkZPOiBhcGFj
aGUuQVBMT0dfSU5GTywKLSAgICAgICAgbG9nZ2luZy5XQVJOSU5HOiBhcGFjaGUuQVBMT0dfV0FS
TklORywKLSAgICAgICAgbG9nZ2luZy5FUlJPUjogYXBhY2hlLkFQTE9HX0VSUiwKLSAgICAgICAg
bG9nZ2luZy5DUklUSUNBTDogYXBhY2hlLkFQTE9HX0NSSVQsCi0gICAgICAgIH0KLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0PU5vbmUpOgotICAgICAgICBsb2dnaW5nLkhhbmRsZXIu
X19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nX2Vycm9yID0gYXBhY2hlLmxvZ19lcnJv
cgotICAgICAgICBpZiByZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fbG9n
X2Vycm9yID0gcmVxdWVzdC5sb2dfZXJyb3IKLQotICAgICAgICAjIFRpbWUgYW5kIGxldmVsIHdp
bGwgYmUgcHJpbnRlZCBieSBBcGFjaGUuCi0gICAgICAgIHNlbGYuX2Zvcm1hdHRlciA9IGxvZ2dp
bmcuRm9ybWF0dGVyKCclKG5hbWUpczogJShtZXNzYWdlKXMnKQotCi0gICAgZGVmIGVtaXQoc2Vs
ZiwgcmVjb3JkKToKLSAgICAgICAgYXBhY2hlX2xldmVsID0gYXBhY2hlLkFQTE9HX0RFQlVHCi0g
ICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIGluIEFwYWNoZUxvZ0hhbmRsZXIuX0xFVkVMUzoKLSAg
ICAgICAgICAgIGFwYWNoZV9sZXZlbCA9IEFwYWNoZUxvZ0hhbmRsZXIuX0xFVkVMU1tyZWNvcmQu
bGV2ZWxub10KLQotICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXR0ZXIuZm9ybWF0KHJlY29yZCkK
LQotICAgICAgICAjICJzZXJ2ZXIiIHBhcmFtZXRlciBtdXN0IGJlIHBhc3NlZCB0byBoYXZlICJs
ZXZlbCIgcGFyYW1ldGVyIHdvcmsuCi0gICAgICAgICMgSWYgb25seSAibGV2ZWwiIHBhcmFtZXRl
ciBpcyBwYXNzZWQsIG5vdGhpbmcgc2hvd3MgdXAgb24gQXBhY2hlJ3MKLSAgICAgICAgIyBsb2cu
IEhvd2V2ZXIsIGF0IHRoaXMgcG9pbnQsIHdlIGNhbm5vdCBnZXQgdGhlIHNlcnZlciBvYmplY3Qg
b2YgdGhlCi0gICAgICAgICMgdmlydHVhbCBob3N0IHdoaWNoIHdpbGwgcHJvY2VzcyBXZWJTb2Nr
ZXQgcmVxdWVzdHMuIFRoZSBvbmx5IHNlcnZlcgotICAgICAgICAjIG9iamVjdCB3ZSBjYW4gZ2V0
IGhlcmUgaXMgYXBhY2hlLm1haW5fc2VydmVyLiBCdXQgV2hlcmV2ZXIgKHNlcnZlcgotICAgICAg
ICAjIGNvbmZpZ3VyYXRpb24gY29udGV4dCBvciB2aXJ0dWFsIGhvc3QgY29udGV4dCkgd2UgcHV0
Ci0gICAgICAgICMgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBkaXJlY3RpdmUsIGFwYWNoZS5t
YWluX3NlcnZlciBqdXN0IHBvaW50cwotICAgICAgICAjIHRoZSBtYWluIHNlcnZlciBpbnN0YW5j
ZSAobm90IGFueSBvZiB2aXJ0dWFsIHNlcnZlciBpbnN0YW5jZSkuIFRoZW4sCi0gICAgICAgICMg
QXBhY2hlIGZvbGxvd3MgTG9nTGV2ZWwgZGlyZWN0aXZlIGluIHRoZSBzZXJ2ZXIgY29uZmlndXJh
dGlvbiBjb250ZXh0Ci0gICAgICAgICMgdG8gZmlsdGVyIGxvZ3MuIFNvLCB3ZSBuZWVkIHRvIHNw
ZWNpZnkgTG9nTGV2ZWwgaW4gdGhlIHNlcnZlcgotICAgICAgICAjIGNvbmZpZ3VyYXRpb24gY29u
dGV4dC4gRXZlbiBpZiB3ZSBzcGVjaWZ5ICJMb2dMZXZlbCBkZWJ1ZyIgaW4gdGhlCi0gICAgICAg
ICMgdmlydHVhbCBob3N0IGNvbnRleHQgd2hpY2ggYWN0dWFsbHkgaGFuZGxlcyBXZWJTb2NrZXQg
Y29ubmVjdGlvbnMsCi0gICAgICAgICMgREVCVUcgbGV2ZWwgbG9ncyBuZXZlciBzaG93IHVwIHVu
bGVzcyAiTG9nTGV2ZWwgZGVidWciIGlzIHNwZWNpZmllZAotICAgICAgICAjIGluIHRoZSBzZXJ2
ZXIgY29uZmlndXJhdGlvbiBjb250ZXh0LgotICAgICAgICAjCi0gICAgICAgICMgVE9ETyh0eW9z
aGlubyk6IFByb3ZpZGUgbG9nZ2luZyBtZXRob2RzIG9uIHJlcXVlc3Qgb2JqZWN0LiBXaGVuCi0g
ICAgICAgICMgcmVxdWVzdCBpcyBtcF9yZXF1ZXN0IG9iamVjdCAod2hlbiB1c2VkIHRvZ2V0aGVy
IHdpdGggQXBhY2hlKSwgdGhlCi0gICAgICAgICMgbWV0aG9kcyBjYWxsIHJlcXVlc3QubG9nX2Vy
cm9yIGluZGlyZWN0bHkuIFdoZW4gcmVxdWVzdCBpcwotICAgICAgICAjIF9TdGFuZGFsb25lUmVx
dWVzdCwgdGhlIG1ldGhvZHMgY2FsbCBQeXRob24ncyBsb2dnaW5nIGZhY2lsaXR5IHdoaWNoCi0g
ICAgICAgICMgd2UgY3JlYXRlIGluIHN0YW5kYWxvbmUucHkuCi0gICAgICAgIHNlbGYuX2xvZ19l
cnJvcihtc2csIGFwYWNoZV9sZXZlbCwgYXBhY2hlLm1haW5fc2VydmVyKQotCi0KLWRlZiBfY29u
ZmlndXJlX2xvZ2dpbmcoKToKLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAg
IyBMb2dzIGFyZSBmaWx0ZXJlZCBieSBBcGFjaGUgYmFzZWQgb24gTG9nTGV2ZWwgZGlyZWN0aXZl
IGluIEFwYWNoZQotICAgICMgY29uZmlndXJhdGlvbiBmaWxlLiBXZSBtdXN0IGp1c3QgcGFzcyBs
b2dzIGZvciBhbGwgbGV2ZWxzIHRvCi0gICAgIyBBcGFjaGVMb2dIYW5kbGVyLgotICAgIGxvZ2dl
ci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKEFwYWNoZUxv
Z0hhbmRsZXIoKSkKLQotCi1fY29uZmlndXJlX2xvZ2dpbmcoKQotCi1fTE9HR0VSID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIF9wYXJzZV9vcHRpb24obmFtZSwgdmFsdWUs
IGRlZmluaXRpb24pOgotICAgICIiIlJldHVybiB0aGUgbWVhbmluZyBvZiBhIG9wdGlvbiB2YWx1
ZS4iIiIKLSAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
IG1lYW5pbmcgPSBkZWZpbml0aW9uLmdldCh2YWx1ZS5sb3dlcigpKQotICAgIGlmIG1lYW5pbmcg
aXMgTm9uZToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIHZhbHVlIGZvciBQeXRo
b25PcHRpb24gJXM6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUp
KQotICAgIHJldHVybiBtZWFuaW5nCi0KLQotZGVmIF9jcmVhdGVfZGlzcGF0Y2hlcigpOgotICAg
ICIiIkluaXRpYWxpemUgYSBkaXNwYXRjaC5EaXNwYXRjaGVyLiIiIgotICAgIF9MT0dHRVIuaW5m
bygnSW5pdGlhbGl6aW5nIERpc3BhdGNoZXInKQotCi0gICAgb3B0aW9ucyA9IGFwYWNoZS5tYWlu
X3NlcnZlci5nZXRfb3B0aW9ucygpCi0KLSAgICBoYW5kbGVyX3Jvb3QgPSBvcHRpb25zLmdldChf
UFlPUFRfSEFORExFUl9ST09ULCBOb25lKQotICAgIGlmIG5vdCBoYW5kbGVyX3Jvb3Q6Ci0gICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignUHl0aG9uT3B0aW9uICVzIGlzIG5vdCBkZWZpbmVkJyAlIF9Q
WU9QVF9IQU5ETEVSX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0df
RVJSKQotCi0gICAgaGFuZGxlcl9zY2FuID0gb3B0aW9ucy5nZXQoX1BZT1BUX0hBTkRMRVJfU0NB
TiwgaGFuZGxlcl9yb290KQotCi0gICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290ID0gX3Bh
cnNlX29wdGlvbigKLSAgICAgICAgX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCwK
LSAgICAgICAgb3B0aW9ucy5nZXQoX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCks
Ci0gICAgICAgIF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1RfREVGSU5JVElPTikK
LQotICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAotICAgICAgICBoYW5kbGVy
X3Jvb3QsIGhhbmRsZXJfc2NhbiwgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290KQotCi0gICAg
Zm9yIHdhcm5pbmcgaW4gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKToKLSAgICAgICAgYXBh
Y2hlLmxvZ19lcnJvcigKLSAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IFdhcm5pbmcgaW4g
c291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcsCi0gICAgICAgICAgICBhcGFjaGUuQVBMT0df
V0FSTklORykKLQotICAgIHJldHVybiBkaXNwYXRjaGVyCi0KLQotIyBJbml0aWFsaXplCi1fZGlz
cGF0Y2hlciA9IF9jcmVhdGVfZGlzcGF0Y2hlcigpCi0KLQotZGVmIGhlYWRlcnBhcnNlcmhhbmRs
ZXIocmVxdWVzdCk6Ci0gICAgIiIiSGFuZGxlIHJlcXVlc3QuCi0KLSAgICBBcmdzOgotICAgICAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIG5h
bWVkIGhlYWRlcnBhcnNlcmhhbmRsZXIgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdAotICAgIG5h
bWUgZm9yIGEgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlci4KLSAgICAiIiIKLSAgICBoYW5kc2hh
a2VfaXNfZG9uZSA9IEZhbHNlCi0gICAgdHJ5OgotICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1
bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAgICAjIHdl
IGRvbid0IGhhdmUgcmVxdWVzdCBoYW5kbGVycy4KLSAgICAgICAgaWYgbm90IF9kaXNwYXRjaGVy
LmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3QudXJpKToKLSAgICAgICAgICAgIHJlcXVlc3QubG9n
X2Vycm9yKAotICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IE5vIGhhbmRsZXIgZm9y
IHJlc291cmNlOiAlcicgJSByZXF1ZXN0LnVyaSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBM
T0dfSU5GTykKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAg
ICdtb2RfcHl3ZWJzb2NrZXQ6IEZhbGxiYWNrIHRvIEFwYWNoZScsIGFwYWNoZS5BUExPR19JTkZP
KQotICAgICAgICAgICAgcmV0dXJuIGFwYWNoZS5ERUNMSU5FRAotICAgIGV4Y2VwdCBkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKLSAg
ICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IERpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVz
JyAlIGUsCi0gICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAgaWYgbm90IGhh
bmRzaGFrZV9pc19kb25lOgotICAgICAgICAgICAgcmV0dXJuIGUuc3RhdHVzCi0KLSAgICB0cnk6
Ci0gICAgICAgIGFsbG93X2RyYWZ0NzUgPSBfcGFyc2Vfb3B0aW9uKAotICAgICAgICAgICAgX1BZ
T1BUX0FMTE9XX0RSQUZUNzUsCi0gICAgICAgICAgICBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29w
dGlvbnMoKS5nZXQoX1BZT1BUX0FMTE9XX0RSQUZUNzUpLAotICAgICAgICAgICAgX1BZT1BUX0FM
TE9XX0RSQUZUNzVfREVGSU5JVElPTikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5k
c2hha2UuZG9faGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHJlcXVlc3QsIF9kaXNwYXRjaGVy
LCBhbGxvd0RyYWZ0NzU9YWxsb3dfZHJhZnQ3NSkKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5W
ZXJzaW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKLSAg
ICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBIYW5kc2hha2UgZmFpbGVkIGZvciB2ZXJz
aW9uIGVycm9yOiAlcycgJSBlLAotICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19JTkZPKQot
ICAgICAgICAgICAgcmVxdWVzdC5lcnJfaGVhZGVyc19vdXQuYWRkKGNvbW1vbi5TRUNfV0VCU09D
S0VUX1ZFUlNJT05fSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGUuc3VwcG9ydGVkX3ZlcnNpb25zKQotICAgICAgICAgICAgcmV0dXJuIGFwYWNoZS5IVFRQ
X0JBRF9SRVFVRVNUCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9u
IGFzIGU6Ci0gICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mvd3NzIGZhaWxlZC4KLSAgICAg
ICAgICAgICMgU2VuZCBodHRwIHJlc3BvbnNlIHdpdGggZXJyb3Igc3RhdHVzLgotICAgICAgICAg
ICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDog
SGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJyb3I6ICVzJyAlIGUsCi0gICAgICAgICAgICAgICAgYXBh
Y2hlLkFQTE9HX0lORk8pCi0gICAgICAgICAgICByZXR1cm4gZS5zdGF0dXMKLQotICAgICAgICBo
YW5kc2hha2VfaXNfZG9uZSA9IFRydWUKLSAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IF9k
aXNwYXRjaGVyCi0gICAgICAgIF9kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAg
ICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
cmVxdWVzdC5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDogQWJvcnRlZDogJXMnICUgZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uIGNhbiBhbHNvIGJlIHRo
cm93biBpZiBzb21ldGhpbmcgaXMgd3JvbmcgaW4KLSAgICAgICAgIyBweXdlYnNvY2tldCBjb2Rl
LiBJdCdzIGNhdWdodCBoZXJlLCB0aGVuLgotCi0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdt
b2RfcHl3ZWJzb2NrZXQ6IEV4Y2VwdGlvbiBvY2N1cnJlZDogJXNcbiVzJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIChlLCB1dGlsLmdldF9zdGFja190cmFjZSgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0VSUikKLSAgICAgICAgIyBVbmtub3duIGV4Y2Vw
dGlvbnMgYmVmb3JlIGhhbmRzaGFrZSBtZWFuIEFwYWNoZSBtdXN0IGhhbmRsZSBpdHMKLSAgICAg
ICAgIyByZXF1ZXN0IHdpdGggYW5vdGhlciBoYW5kbGVyLgotICAgICAgICBpZiBub3QgaGFuZHNo
YWtlX2lzX2RvbmU6Ci0gICAgICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0gICAgIyBT
ZXQgYXNzYmFja3dhcmRzIHRvIHN1cHByZXNzIHJlc3BvbnNlIGhlYWRlciBnZW5lcmF0aW9uIGJ5
IEFwYWNoZS4KLSAgICByZXF1ZXN0LmFzc2JhY2t3YXJkcyA9IDEKLSAgICByZXR1cm4gYXBhY2hl
LkRPTkUgICMgUmV0dXJuIERPTkUgc3VjaCB0aGF0IG5vIG90aGVyIGhhbmRsZXJzIGFyZSBpbnZv
a2VkLgotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVh
ZGVyX3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMDU4NGM1ZGFjOC4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiVXRpbGl0aWVzIGZvciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGhlYWRlcnMgdGhhdCBmb2xs
b3cgdGhlIGdyYW1tYXIgZGVmaW5lZAotaW4gSFRUUCBSRkMgaHR0cDovL3d3dy5pZXRmLm9yZy9y
ZmMvcmZjMjYxNi50eHQuCi0iIiIKLQotCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCi0K
LQotX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/PXt9IFx0JwotCi0KLWRlZiBfaXNfY2hh
cihjKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQg
aW4gSFRUUCBSRkMuIiIiCi0KLSAgICByZXR1cm4gb3JkKGMpIDw9IDEyNwotCi0KLWRlZiBfaXNf
Y3RsKGMpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVk
IGluIEhUVFAgUkZDLiIiIgotCi0gICAgcmV0dXJuIG9yZChjKSA8PSAzMSBvciBvcmQoYykgPT0g
MTI3Ci0KLQotY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLSAgICAgICAgc2VsZi5oZWFk
ID0gMAotCi0KLWRlZiBwZWVrKHN0YXRlLCBwb3M9MCk6Ci0gICAgIiIiUGVla3MgdGhlIGNoYXJh
Y3RlciBhdCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgotCi0gICAgaWYgc3RhdGUuaGVh
ZCArIHBvcyA+PSBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBy
ZXR1cm4gc3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQotCi0KLWRlZiBjb25zdW1lKHN0YXRl
LCBhbW91bnQ9MSk6Ci0gICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBm
cm9tIHRoZSBoZWFkIGFuZCByZXR1cm5zIHRoZQotICAgIGNvbnN1bWVkIGJ5dGVzLiBJZiB0aGVy
ZSdzIG5vdCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBOb25lLgotICAgICIiIgot
Ci0gICAgaWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5kYXRhKToKLSAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3RhdGUuaGVhZDpzdGF0ZS5o
ZWFkICsgYW1vdW50XQotICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFkICsgYW1vdW50Ci0gICAg
cmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb25zdW1lX3N0cmluZyhzdGF0ZSwgZXhwZWN0ZWQpOgot
ICAgICIiIkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3RlZCBzdHJpbmcsIGNvbnN1
bWVzIHRoZSBzdHJpbmcgZnJvbQotICAgIHRoZSBoZWFkLiBSZXR1cm5zIFRydWUgaWYgY29uc3Vt
ZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKLSAgICBGYWxzZS4KLSAgICAiIiIK
LQotICAgIHBvcyA9IDAKLQotICAgIGZvciBjIGluIGV4cGVjdGVkOgotICAgICAgICBpZiBjICE9
IHBlZWsoc3RhdGUsIHBvcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcG9z
ICs9IDEKLQotICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSBMV1MgZnJvbSB0aGUgaGVh
ZC4gUmV0dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCi0gICAgT3RoZXJ3aXNlLCBy
ZXR1cm5zIEZhbHNlLgotCi0gICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8IEhUICkKLSAgICAiIiIK
LQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0KLSAgICBjb25zdW1lX3N0cmluZyhz
dGF0ZSwgJ1xyXG4nKQotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
YyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyA9PSAnICcgb3IgYyA9PSAnXHQnOgot
ICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHBvcyA9
PSAwOgotICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBjb25zdW1lX2x3c2VzKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyAqTFdTIGZyb20gdGhlIGhl
YWQuIiIiCi0KLSAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgICAgIHBhc3MKLQot
Ci1kZWYgY29uc3VtZV90b2tlbihzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBmcm9t
IHRoZSBoZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5vIHRva2VuCi0gICAgd2Fz
IGZvdW5kLgotICAgICIiIgotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAg
ICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyBpcyBOb25lIG9yIGMgaW4gX1NF
UEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICBp
ZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICBy
ZXR1cm4gY29uc3VtZShzdGF0ZSwgcG9zKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9z
ICs9IDEKLQotCi1kZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKToKLSAg
ICAiIiJDb25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywgYW5kIHJldHVybnMgdGhl
IHRva2VuIG9yIHVucXVvdGVkCi0gICAgc3RyaW5nLiBJZiBubyB0b2tlbiBvciBxdW90ZWQtc3Ry
aW5nIHdhcyBmb3VuZCwgcmV0dXJucyBOb25lLgotICAgICIiIgotCi0gICAgb3JpZ2luYWxfaGVh
ZCA9IHN0YXRlLmhlYWQKLQotICAgIGlmIG5vdCBjb25zdW1lX3N0cmluZyhzdGF0ZSwgJyInKToK
LSAgICAgICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICByZXN1bHQgPSBbXQot
Ci0gICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKLQotICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgIGlmIG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVfbHdzKHN0YXRlKToKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQotICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICBjID0gY29uc3VtZShzdGF0ZSkKLSAgICAgICAgaWYgYyBpcyBOb25lOgotICAgICAgICAg
ICAgIyBxdW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRvdWJsZSBxdW90YXRpb24K
LSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoKLSAgICAgICAgICAgIGV4
cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfaXNfY2hhcihjKToKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1b3RlZC1wYWlyCi0gICAg
ICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKLSAgICAgICAgICAgIGV4cGVjdF9x
dW90ZWRfcGFpciA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICciJzoKLSAgICAgICAgICAgIHJl
dHVybiAnJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZWxpZiBfaXNfY3RsKGMpOgotICAgICAgICAg
ICAgIyBJbnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQKLSAgICAgICAgICAgIHN0
YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQotCi0KLWRlZiBxdW90ZV9pZl9u
ZWNlc3Nhcnkocyk6Ci0gICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJpbmcgaW50byBxdW90ZWQt
c3RyaW5nLiIiIgotCi0gICAgcXVvdGUgPSBGYWxzZQotICAgIGlmIHMgPT0gJyc6Ci0gICAgICAg
IHJldHVybiAnIiInCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBjIGluIHM6Ci0gICAgICAg
IGlmIGMgPT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lz
X2NoYXIoYyk6Ci0gICAgICAgICAgICBxdW90ZSA9IFRydWUKLQotICAgICAgICBpZiBjID09ICci
JyBvciBfaXNfY3RsKGMpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnICsgYykKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykKLQotICAgIGlmIHF1b3Rl
OgotICAgICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsgJyInCi0gICAgZWxzZToK
LSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0KLWRlZiBwYXJzZV91cmkodXJpKToK
LSAgICAiIiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9zdCwgcG9ydCBhbmQgcmVz
b3VyY2UuIiIiCi0KLSAgICBwYXJzZWQgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJpKQotICAg
IGlmIHBhcnNlZC5zY2hlbWUgIT0gJ3dzcycgYW5kIHBhcnNlZC5zY2hlbWUgIT0gJ3dzJzoKLSAg
ICAgICAgIyB8dXJpfCBtdXN0IGJlIGEgcmVsYXRpdmUgVVJJLgotICAgICAgICAjIFRPRE8odG95
b3NoaW0pOiBTaG91bGQgdmFsaWRhdGUgfHVyaXwuCi0gICAgICAgIHJldHVybiBOb25lLCBOb25l
LCB1cmkKLQotICAgIGlmIHBhcnNlZC5ob3N0bmFtZSBpcyBOb25lOgotICAgICAgICByZXR1cm4g
Tm9uZSwgTm9uZSwgTm9uZQotCi0gICAgcG9ydCA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIHBv
cnQgPSBwYXJzZWQucG9ydAotICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICMg
cG9ydCBwcm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBwb3J0IGRlc2Ny
aXB0aW9uIGxpa2UKLSAgICAgICAgIyAnd3M6Ly9ob3N0Oi9wYXRoJy4KLSAgICAgICAgcmV0dXJu
IE5vbmUsIE5vbmUsIE5vbmUKLQotICAgIGlmIHBvcnQgaXMgTm9uZToKLSAgICAgICAgaWYgcGFy
c2VkLnNjaGVtZSA9PSAnd3MnOgotICAgICAgICAgICAgcG9ydCA9IDgwCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBwb3J0ID0gNDQzCi0KLSAgICBwYXRoID0gcGFyc2VkLnBhdGgKLSAgICBp
ZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCArPSAnLycKLSAgICBpZiBwYXJzZWQucXVlcnk6Ci0g
ICAgICAgIHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Ci0gICAgaWYgcGFyc2VkLmZyYWdtZW50
OgotICAgICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFnbWVudAotCi0gICAgcmV0dXJuIHBh
cnNlZC5ob3N0bmFtZSwgcG9ydCwgcGF0aAotCi0KLXRyeToKLSAgICB1cmxsaWIucGFyc2UudXNl
c19uZXRsb2MuaW5kZXgoJ3dzJykKLWV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgIyB1cmxw
YXJzZSBpbiBQeXRob24yLjUuMSBkb2Vzbid0IGhhdmUgJ3dzJyBhbmQgJ3dzcycgZW50cmllcy4K
LSAgICB1cmxsaWIucGFyc2UudXNlc19uZXRsb2MuYXBwZW5kKCd3cycpCi0gICAgdXJsbGliLnBh
cnNlLnVzZXNfbmV0bG9jLmFwcGVuZCgnd3NzJykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM3YWZjYzE1N2VkNy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L21lbW9yaXppbmdmaWxlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiTWVtb3JpemluZyBmaWxlLgotCi1BIG1lbW9yaXppbmcgZmls
ZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotIiIi
Ci0KLQotY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKLQotICAgICIiIk1lbW9yaXppbmdG
aWxlIHdyYXBzIGEgZmlsZSBhbmQgbWVtb3JpemVzIGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCi0K
LSAgICBOb3RlIHRoYXQgZGF0YSByZWFkIGJ5IG90aGVyIG1ldGhvZHMgYXJlIG5vdCBtZW1vcml6
ZWQuIFRoaXMgYmVoYXZpb3IKLSAgICBpcyBnb29kIGVub3VnaCBmb3IgbWVtb3JpemluZyBsaW5l
cyBTaW1wbGVIVFRQU2VydmVyIHJlYWRzIGJlZm9yZQotICAgIHRoZSBjb250cm9sIHJlYWNoZXMg
V2ViU29ja2V0UmVxdWVzdEhhbmRsZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZmlsZV8sIG1heF9tZW1vcml6ZWRfbGluZXM9MHg3RkZGRkZGRik6Ci0gICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZmlsZV86
IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgotICAgICAgICAgICAgbWF4X21lbW9yaXplZF9saW5l
czogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgotICAgICAgICAgICAg
ICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXplZC4KLSAg
ICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5fZmlsZSA9IGZpbGVfCi0gICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9IFtdCi0g
ICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xpbmVzCi0g
ICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGlu
ZSA9IE5vbmUKLQotICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAg
ICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KLQotICAgICAgICBSZXR1cm5zIHRoZSB2YWx1
ZSBvdmVycmlkZGVuIGJ5IHRoaXMgY2xhc3MgZm9yIHNvbWUgYXR0cmlidXRlcywKLSAgICAgICAg
YW5kIGZvcndhcmRzIHRoZSBjYWxsIHRvIF9maWxlIGZvciB0aGUgb3RoZXIgYXR0cmlidXRlcy4K
LSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5hbWUgaW4gKCdfZmlsZScsICdfbWVtb3JpemVkX2xp
bmVzJywgJ19tYXhfbWVtb3JpemVkX2xpbmVzJywKLSAgICAgICAgICAgICAgICAgICAgJ19idWZm
ZXJlZCcsICdfYnVmZmVyZWRfbGluZScsICdyZWFkbGluZScsCi0gICAgICAgICAgICAgICAgICAg
ICdnZXRfbWVtb3JpemVkX2xpbmVzJyk6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0
YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUuX19nZXRh
dHRyaWJ1dGVfXyhuYW1lKQotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAg
ICAgICAiIiJPdmVycmlkZSBmaWxlLnJlYWRsaW5lIGFuZCBtZW1vcml6ZSB0aGUgbGluZSByZWFk
LgotCi0gICAgICAgIE5vdGUgdGhhdCBldmVuIGlmIHNpemUgaXMgc3BlY2lmaWVkIGFuZCBzbWFs
bGVyIHRoYW4gYWN0dWFsIHNpemUsCi0gICAgICAgIHRoZSB3aG9sZSBsaW5lIHdpbGwgYmUgcmVh
ZCBvdXQgZnJvbSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0IGJ5Ci0gICAgICAgIHN1YnNlcXVlbnQg
cmVhZGxpbmUgY2FsbHMuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9idWZmZXJlZDoK
LSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJlZF9saW5lCi0gICAgICAgICAgICBzZWxm
Ll9idWZmZXJlZCA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gc2Vs
Zi5fZmlsZS5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBsaW5lIGFuZCBsZW4oc2VsZi5fbWVt
b3JpemVkX2xpbmVzKSA8IHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXM6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICBpZiBzaXplID49
IDAgYW5kIHNpemUgPCBsZW4obGluZSk6Ci0gICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IFRy
dWUKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUgPSBsaW5lW3NpemU6XQotICAgICAg
ICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCi0gICAgICAgIHJldHVybiBsaW5lCi0KLSAgICBkZWYg
Z2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0IGxpbmVzIG1lbW9yaXpl
ZCBzbyBmYXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9tZW1vcml6ZWRfbGluZXMKLQotCi0j
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0
aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYzZjNWIxZGJjZTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9tc2d1dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIk1lc3NhZ2UgcmVsYXRlZCB1dGlsaXRpZXMuCi0KLU5vdGU6
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBl
dmVuIHRob3VnaAotbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUg
dXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KLWhhbmRsZXJzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZl
IG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLAotcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBu
b3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcKLWJ5dGVzIHdy
aXRpbmcvcmVhZGluZy4KLSIiIgotCi0KLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBxdWV1ZQotaW1w
b3J0IHRocmVhZGluZwotCi0KLSMgRXhwb3J0IEV4Y2VwdGlvbiBzeW1ib2xzIGZyb20gbXNndXRp
bCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVkRnJh
bWVFeGNlcHRpb24KLQotCi0jIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2Vi
U29ja2V0IG1lc3NhZ2VzLgotZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6Ci0gICAgIiIi
Q2xvc2UgY29ubmVjdGlvbi4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRo
b24gcmVxdWVzdC4KLSAgICAiIiIKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0
aW9uKCkKLQotCi1kZWYgc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRy
dWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBt
ZXNzYWdlKS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVz
dC4KLSAgICAgICAgcGF5bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBz
ZW5kLgotICAgICAgICBlbmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KLSAgICAgICAg
ICAgICBGYWxzZSB0byBzZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0
IGlzIHRvIGJlCi0gICAgICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRf
bWVzc2FnZSBjYWxsIHdpdGggZW5kPVRydWUuCi0gICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2Fk
X2RhdGEgYXMgYmluYXJ5IGZyYW1lKHMpLgotICAgIFJhaXNlczoKLSAgICAgICAgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uOiB3aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCi0gICAgIiIiCi0g
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5h
cnkpCi0KLQotZGVmIHJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKLSAgICAiIiJSZWNlaXZlIGEg
V2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCi0gICAg
dW5pY29kZSBvciBhIGJpbmFyeSBpbiBzdHIuCi0KLSAgICBBcmdzOgotICAgICAgICByZXF1ZXN0
OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgUmFpc2VzOgotICAgICAgICBJbnZhbGlkRnJhbWVF
eGNlcHRpb246ICAgICB3aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCi0gICAgICAgIFVu
c3VwcG9ydGVkRnJhbWVFeGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJh
bWUgZS5nLiBzb21lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2Vy
dmVkIGJpdCBpcyBzZXQgYnV0IG5vIGV4dGVuc2lvbiBjYW4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjb2duaXplIGl0LgotICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlv
bjogICAgICB3aGVuIGNsaWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KLSAg
ICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24g
aXMgY2xvc2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRs
eS4KLSAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFk
eSB0ZXJtaW5hdGVkLgotICAgICIiIgotICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNl
aXZlX21lc3NhZ2UoKQotCi0KLWRlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keT0nJyk6Ci0gICAg
cmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKGJvZHkpCi0KLQotY2xhc3MgTWVzc2FnZVJlY2Vp
dmVyKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2Fn
ZXMgZnJvbSB0aGUgY2xpZW50LgotCi0gICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlz
IHRvIHJlY2VpdmUgbWVzc2FnZXM6IGJsb2NraW5nLAotICAgIG5vbi1ibG9ja2luZywgYW5kIHZp
YSBjYWxsYmFjay4gQ2FsbGJhY2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCi0KLSAgICBO
b3RlOiBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNl
cnZlciBmb3Igd3NzCi0gICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJh
aXNlcyBhIGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKLSAgICBpcyBhY2Nlc3NlZCBmcm9tIG11
bHRpcGxlIHRocmVhZHMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVz
dCwgb25tZXNzYWdlPU5vbmUpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4K
LSAgICAgICAgICAgIG9ubWVzc2FnZTogYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhIG1l
c3NhZ2UgaXMgcmVjZWl2ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSBOb25lLiBJ
ZiBub3QgTm9uZSwgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbgotICAgICAgICAgICAgICAgICAg
ICAgICBhbm90aGVyIHRocmVhZC4gSW4gdGhhdCBjYXNlLCBNZXNzYWdlUmVjZWl2ZXIucmVjZWl2
ZQotICAgICAgICAgICAgICAgICAgICAgICBhbmQgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmVfbm93
YWl0IGFyZSB1c2VsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhleSB3aWxs
IG5ldmVyIHJldHVybiBhbnkgbWVzc2FnZXMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRocmVh
ZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVl
c3QKLSAgICAgICAgc2VsZi5fcXVldWUgPSBxdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuX29u
bWVzc2FnZSA9IG9ubWVzc2FnZQotICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IEZhbHNl
Ci0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAgICAgIHNlbGYuc3RhcnQoKQotCi0g
ICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNl
bGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlX21l
c3NhZ2Uoc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vbm1lc3NhZ2U6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29ubWVzc2FnZShtZXNzYWdlKQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChtZXNzYWdl
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2xvc2VfY29ubmVjdGlvbihzZWxmLl9y
ZXF1ZXN0KQotCi0gICAgZGVmIHJlY2VpdmUoc2VsZik6Ci0gICAgICAgICIiIiBSZWNlaXZlIGEg
bWVzc2FnZSBmcm9tIHRoZSBjaGFubmVsLCBibG9ja2luZy4KLQotICAgICAgICBSZXR1cm5zOgot
ICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nLgotICAgICAgICAiIiIKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3F1ZXVlLmdldCgpCi0KLSAgICBkZWYgcmVjZWl2ZV9ub3dhaXQo
c2VsZik6Ci0gICAgICAgICIiIiBSZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBjaGFubmVsLCBu
b24tYmxvY2tpbmcuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG1lc3NhZ2UgYXMg
YSB1bmljb2RlIHN0cmluZyBpZiBhdmFpbGFibGUuIE5vbmUgb3RoZXJ3aXNlLgotICAgICAgICAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3F1ZXVlLmdldF9u
b3dhaXQoKQotICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6Ci0gICAgICAgICAgICBtZXNzYWdl
ID0gTm9uZQotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIHN0b3Aoc2VsZik6Ci0g
ICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgotCi0gICAgICAgIFRoZSBp
bnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2Uu
Ci0gICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBp
cyBubyBjbGVhbiB3YXkKLSAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1
bm5pbmcgdGhyZWFkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQg
PSBUcnVlCi0KLQotY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAi
IiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCi0KLSAgICBUaGlzIGNs
YXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNl
bmQKLSAgICBtZXNzYWdlcy4KLQotICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1
c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKLSAgICBiZWNhdXNlIHB5T3Bl
blNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tl
dAotICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGlu
c3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9u
IHJlcXVlc3QuCi0gICAgICAgICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX3F1
ZXVlID0gcXVldWUuUXVldWUoKQotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotICAgICAg
ICBzZWxmLnN0YXJ0KCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6
Ci0gICAgICAgICAgICBtZXNzYWdlLCBjb25kaXRpb24gPSBzZWxmLl9xdWV1ZS5nZXQoKQotICAg
ICAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgc2VuZF9tZXNzYWdlKHNl
bGYuX3JlcXVlc3QsIG1lc3NhZ2UpCi0gICAgICAgICAgICBjb25kaXRpb24ubm90aWZ5KCkKLSAg
ICAgICAgICAgIGNvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBzZW5kKHNlbGYsIG1lc3Nh
Z2UpOgotICAgICAgICAiIiJTZW5kIGEgbWVzc2FnZSwgYmxvY2tpbmcuIiIiCi0KLSAgICAgICAg
Y29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIGNvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgc2VsZi5fcXVldWUucHV0KChtZXNzYWdlLCBjb25kaXRpb24pKQotICAg
ICAgICBjb25kaXRpb24ud2FpdCgpCi0KLSAgICBkZWYgc2VuZF9ub3dhaXQoc2VsZiwgbWVzc2Fn
ZSk6Ci0gICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBub24tYmxvY2tpbmcuIiIiCi0KLSAgICAg
ICAgc2VsZi5fcXVldWUucHV0KChtZXNzYWdlLCB0aHJlYWRpbmcuQ29uZGl0aW9uKCkpKQotCi0K
LSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXV4
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OTRmOGExNDY0NWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC9tdXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODg1ICswLDAgQEAKLSMgQ29weXJpZ2h0
IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCBoZWxwZXIgZnVuY3Rp
b25zIGZvciBtdWx0aXBsZXhpbmcgZXh0ZW5zaW9uLgotCi1TcGVjaWZpY2F0aW9uOgotaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXdlYnNvY2tldC1tdWx0aXBsZXhp
bmctMDYKLSIiIgotCi0KLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGNvcHkKLWltcG9ydCBl
bWFpbAotaW1wb3J0IGVtYWlsLnBhcnNlcgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCi1p
bXBvcnQgc3RydWN0Ci1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZh
bGlkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgRnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgU3RyZWFt
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlvbnMK
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2JpbmFyeV9m
cmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfY2xv
c2luZ19oYW5kc2hha2VfYm9keQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGlt
cG9ydCBjcmVhdGVfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1w
b3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5
YmkgaW1wb3J0IHBhcnNlX2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1w
b3J0IGh5YmkKLQotCi1fQ09OVFJPTF9DSEFOTkVMX0lEID0gMAotX0RFRkFVTFRfQ0hBTk5FTF9J
RCA9IDEKLQotX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA9IDAKLV9NVVhfT1BDT0RF
X0FERF9DSEFOTkVMX1JFU1BPTlNFID0gMQotX01VWF9PUENPREVfRkxPV19DT05UUk9MID0gMgot
X01VWF9PUENPREVfRFJPUF9DSEFOTkVMID0gMwotX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xP
VCA9IDQKLQotX01BWF9DSEFOTkVMX0lEID0gMiAqKiAyOSAtIDEKLQotX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMgPSA2NAotX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCA9IDggKiAx
MDI0Ci0KLV9IQU5EU0hBS0VfRU5DT0RJTkdfSURFTlRJVFkgPSAwCi1fSEFORFNIQUtFX0VOQ09E
SU5HX0RFTFRBID0gMQotCi0jIFdlIG5lZWQgb25seSB0aGVzZSBzdGF0dXMgY29kZSBmb3Igbm93
LgotX0hUVFBfQkFEX1JFU1BPTlNFX01FU1NBR0VTID0gewotICAgIGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVDogJ0JhZCBSZXF1ZXN0JywKLX0KLQotIyBEcm9wQ2hhbm5lbCByZWFzb24g
Y29kZQotIyBUT0RPKGJhc2hpKTogRGVmaW5lIGFsbCByZWFzb24gY29kZSBkZWZpbmVkIGluIC0w
NSBkcmFmdC4KLV9EUk9QX0NPREVfTk9STUFMX0NMT1NVUkUgPSAxMDAwCi0KLV9EUk9QX0NPREVf
SU5WQUxJRF9FTkNBUFNVTEFUSU5HX01FU1NBR0UgPSAyMDAxCi1fRFJPUF9DT0RFX0NIQU5ORUxf
SURfVFJVTkNBVEVEID0gMjAwMgotX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJV
TkNBVEVEID0gMjAwMwotX0RST1BfQ09ERV9VTktOT1dOX01VWF9PUENPREUgPSAyMDA0Ci1fRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0sgPSAyMDA1Ci1fRFJPUF9DT0RFX0NIQU5O
RUxfQUxSRUFEWV9FWElTVFMgPSAyMDA2Ci1fRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklP
TEFUSU9OID0gMjAwNwotX0RST1BfQ09ERV9VTktOT1dOX1JFUVVFU1RfRU5DT0RJTkcgPSAyMDEw
Ci0KLV9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9MQVRJT04gPSAzMDA1Ci1fRFJPUF9DT0RFX1NF
TkRfUVVPVEFfT1ZFUkZMT1cgPSAzMDA2Ci1fRFJPUF9DT0RFX0FDS05PV0xFREdFRCA9IDMwMDgK
LV9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04gPSAzMDA5Ci0KLQotY2xhc3MgTXV4VW5leHBl
Y3RlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotCi0gICAgIiIiRXhjZXB0aW9uIGluIGhhbmRsaW5n
IG11bHRpcGxleGluZyBleHRlbnNpb24uIiIiCi0KLSAgICBwYXNzCi0KLQotIyBUZW1wb3JhcnkK
LWNsYXNzIE11eE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0KLSAgICAiIiJS
YWlzZWQgd2hlbiBhIGZsb3cgZW50ZXJzIHVuaW1wbGVtZW50ZWQgY29kZSBwYXRoLiIiIgotCi0g
ICAgcGFzcwotCi0KLWNsYXNzIExvZ2ljYWxDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uKEV4Y2Vw
dGlvbik6Ci0KLSAgICAiIiJSYWlzZWQgd2hlbiBsb2dpY2FsIGNvbm5lY3Rpb24gaXMgZ3JhY2Vm
dWxseSBjbG9zZWQuIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgUGh5c2ljYWxDb25uZWN0aW9u
RXJyb3IoRXhjZXB0aW9uKToKLQotICAgICIiIlJhaXNlZCB3aGVuIHRoZXJlIGlzIGEgcGh5c2lj
YWwgY29ubmVjdGlvbiBlcnJvci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkcm9wX2Nv
ZGUsIG1lc3NhZ2U9JycpOgotICAgICAgICBzdXBlcihQaHlzaWNhbENvbm5lY3Rpb25FcnJvciwg
c2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY29kZT0lZCwgbWVzc2FnZT0lcicgJSAoZHJv
cF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBkcm9wX2NvZGUKLSAg
ICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0KLWNsYXNzIExvZ2ljYWxDaGFubmVsRXJy
b3IoRXhjZXB0aW9uKToKLQotICAgICIiIlJhaXNlZCB3aGVuIHRoZXJlIGlzIGEgbG9naWNhbCBj
aGFubmVsIGVycm9yLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWxfaWQsIGRy
b3BfY29kZSwgbWVzc2FnZT0nJyk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGhlIGVycm9yIHdp
dGggYSBzdGF0dXMgbWVzc2FnZS4iIiIKLSAgICAgICAgc3VwZXIoTG9naWNhbENoYW5uZWxFcnJv
ciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY2hhbm5lbF9pZD0lZCwgY29kZT0lZCwg
bWVzc2FnZT0lcicgJSAoCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgZHJvcF9jb2RlLCBt
ZXNzYWdlKSkKLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBz
ZWxmLmRyb3BfY29kZSA9IGRyb3BfY29kZQotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdl
Ci0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVs
X2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5v
dCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiog
NzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAy
ICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5l
bF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIo
MHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0
LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAq
KiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFu
bmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFy
Z2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBy
ZXR1cm4gY3JlYXRlX2xlbmd0aF9oZWFkZXIobnVtYmVyLCBGYWxzZSkKLQotCi1kZWYgX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkLCBlbmNvZGVkX2hhbmRzaGFrZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPUZhbHNl
KToKLSAgICBpZiBlbmNvZGluZyAhPSAwIGFuZCBlbmNvZGluZyAhPSAxOgotICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVuY29kaW5nICVkJyAlIGVuY29kaW5nKQotCi0gICAgZmly
c3RfYnl0ZSA9ICgoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0UgPDwgNSkgfAotICAg
ICAgICAgICAgICAgICAgKHJlamVjdGVkIDw8IDQpIHwgZW5jb2RpbmcpCi0gICAgYmxvY2sgPSAo
Y2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5l
bF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKGxlbihlbmNvZGVkX2hhbmRzaGFr
ZSkpICsKLSAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSkKLSAgICByZXR1cm4gYmxvY2sK
LQotCi1kZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNz
YWdlPScnKToKLSAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBjb2RlIGlzIE5vbmU6Ci0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgbWVzc2FnZSBp
cyBzcGVjaWZpZWQnKQotCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCA8PCA1Ci0gICAgYmxvY2sgPSBjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5uZWxfaWQo
Y2hhbm5lbF9pZCkKLSAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAgICAgIGJsb2NrICs9IF9lbmNv
ZGVfbnVtYmVyKDApICAjIFJlYXNvbiBzaXplCi0gICAgZWxzZToKLSAgICAgICAgcmVhc29uID0g
c3RydWN0LnBhY2soJyFIJywgY29kZSkgKyBtZXNzYWdlCi0gICAgICAgIHJlYXNvbl9zaXplID0g
X2VuY29kZV9udW1iZXIobGVuKHJlYXNvbikpCi0gICAgICAgIGJsb2NrICs9IHJlYXNvbl9zaXpl
ICsgcmVhc29uCi0KLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9mbG93X2NvbnRy
b2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpOgotICAgIGZpcnN0X2J5dGUgPSBfTVVY
X09QQ09ERV9GTE9XX0NPTlRST0wgPDwgNQotICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSAr
Ci0gICAgICAgICAgICAgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsKLSAgICAgICAg
ICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5pc2hlZF9xdW90YSkpCi0gICAgcmV0dXJuIGJsb2Nr
Ci0KLQotZGVmIF9jcmVhdGVfbmV3X2NoYW5uZWxfc2xvdChzbG90cywgc2VuZF9xdW90YSk6Ci0g
ICAgaWYgc2xvdHMgPCAwIG9yIHNlbmRfcXVvdGEgPCAwOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdzbG90cyBhbmQgc2VuZF9xdW90YSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4nKQotICAgIGZp
cnN0X2J5dGUgPSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UIDw8IDUKLSAgICBibG9jayA9
IChjaHIoZmlyc3RfYnl0ZSkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHNsb3RzKSAr
Ci0gICAgICAgICAgICAgX2VuY29kZV9udW1iZXIoc2VuZF9xdW90YSkpCi0gICAgcmV0dXJuIGJs
b2NrCi0KLQotZGVmIF9jcmVhdGVfZmFsbGJhY2tfbmV3X2NoYW5uZWxfc2xvdCgpOgotICAgIGZp
cnN0X2J5dGUgPSAoX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVCA8PCA1KSB8IDEgICMgU2V0
IHRoZSBGIGZsYWcKLSAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX251bWJl
cigwKSArIF9lbmNvZGVfbnVtYmVyKDApKQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBfcGFy
c2VfcmVxdWVzdF90ZXh0KHJlcXVlc3RfdGV4dCk6Ci0gICAgcmVxdWVzdF9saW5lLCBoZWFkZXJf
bGluZXMgPSByZXF1ZXN0X3RleHQuc3BsaXQoJ1xyXG4nLCAxKQotCi0gICAgd29yZHMgPSByZXF1
ZXN0X2xpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbih3b3JkcykgIT0gMzoKLSAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQmFkIFJlcXVlc3QtTGluZSBzeW50YXggJXInICUgcmVxdWVzdF9saW5l
KQotICAgIFtjb21tYW5kLCBwYXRoLCB2ZXJzaW9uXSA9IHdvcmRzCi0gICAgaWYgdmVyc2lvbiAh
PSAnSFRUUC8xLjEnOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgcmVxdWVzdCB2ZXJz
aW9uICVyJyAlIHZlcnNpb24pCi0KLSAgICAjIGVtYWlsLnBhcnNlci5QYXJzZXIoKSBwYXJzZXMg
UkZDIDI4MjIgKFJGQyA4MjIpIHN0eWxlIGhlYWRlcnMuCi0gICAgIyBSRkMgNjQ1NSByZWZlcnMg
UkZDIDI2MTYgZm9yIGhhbmRzaGFrZSBwYXJzaW5nLCBhbmQgUkZDIDI2MTYgcmVmZXJzCi0gICAg
IyBSRkMgODIyLgotICAgIGhlYWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKCkucGFyc2VzdHIo
aGVhZGVyX2xpbmVzKQotICAgIHJldHVybiBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uLCBoZWFkZXJz
Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jayhvYmplY3QpOgotCi0gICAgIiIiQSBzdHJ1Y3R1cmUg
dGhhdCBob2xkcyBwYXJzaW5nIHJlc3VsdCBvZiBtdWx0aXBsZXhpbmcgY29udHJvbCBibG9jay4K
LQotICAgIENvbnRyb2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxsIGJlIGFkZGVkIGJ5
IF9NdXhGcmFtZVBheWxvYWRQYXJzZXIuCi0gICAgKGUuZy4gZW5jb2RlZF9oYW5kc2hha2Ugd2ls
bCBiZSBhZGRlZCBmb3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCi0gICAgQWRkQ2hhbm5lbFJlc3Bv
bnNlKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29kZSk6Ci0gICAgICAg
IHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0KLQotY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihv
YmplY3QpOgotCi0gICAgIiIiQSBjbGFzcyB0aGF0IHBhcnNlcyBtdWx0aXBsZXhlZCBmcmFtZSBw
YXlsb2FkLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBz
ZWxmLl9kYXRhID0gcGF5bG9hZAotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gMAotICAg
ICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgIGRl
ZiByZWFkX2NoYW5uZWxfaWQoc2VsZik6Ci0gICAgICAgICIiIlJlYWQgY2hhbm5lbCBpZC4KLQot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBWYWx1ZUVycm9yOiB3aGVuIHRoZSBwYXlsb2Fk
IGRvZXNuJ3QgY29udGFpbgotICAgICAgICAgICAgICAgIHZhbGlkIGNoYW5uZWwgaWQuCi0gICAg
ICAgICIiIgotICAgICAgICByZW1haW5pbmdfbGVuZ3RoID0gbGVuKHNlbGYuX2RhdGEpIC0gc2Vs
Zi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBwb3MgPSBzZWxmLl9yZWFkX3Bvc2l0aW9uCi0gICAg
ICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotCi0gICAgICAgIGNoYW5uZWxfaWQgPSBv
cmQoc2VsZi5fZGF0YVtwb3NdKQotICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDEKLSAgICAg
ICAgaWYgY2hhbm5lbF9pZCAmIDB4ZTAgPT0gMHhlMDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmlu
Z19sZW5ndGggPCA0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQg
Y2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVjdC51bnBh
Y2soJyFMJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rh
dGFbcG9zOnBvcys0XSlbMF0gJiAweDFmZmZmZmZmCi0gICAgICAgICAgICBjaGFubmVsX2lkX2xl
bmd0aCA9IDQKLSAgICAgICAgZWxpZiBjaGFubmVsX2lkICYgMHhjMCA9PSAweGMwOgotICAgICAg
ICAgICAgaWYgcmVtYWluaW5nX2xlbmd0aCA8IDM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgICAgICBjaGFubmVs
X2lkID0gKCgoY2hhbm5lbF9pZCAmIDB4MWYpIDw8IDE2KSArCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdC51bnBhY2soJyFIJywgc2VsZi5fZGF0YVtwb3MrMTpwb3MrM10pWzBdKQot
ICAgICAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAzCi0gICAgICAgIGVsaWYgY2hhbm5lbF9p
ZCAmIDB4ODAgPT0gMHg4MDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPCAyOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3Jt
YXQnKQotICAgICAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVjdC51bnBhY2soJyFIJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFbcG9zOnBvcysyXSlb
MF0gJiAweDNmZmYKLSAgICAgICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gMgotICAgICAgICBz
ZWxmLl9yZWFkX3Bvc2l0aW9uICs9IGNoYW5uZWxfaWRfbGVuZ3RoCi0KLSAgICAgICAgcmV0dXJu
IGNoYW5uZWxfaWQKLQotICAgIGRlZiByZWFkX2lubmVyX2ZyYW1lKHNlbGYpOgotICAgICAgICAi
IiJSZWFkIGFuIGlubmVyIGZyYW1lLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yOiB3aGVuIHRoZSBpbm5lciBmcmFtZSBpcyBpbnZhbGlkLgot
ICAgICAgICAiIiIKLSAgICAgICAgaWYgbGVuKHNlbGYuX2RhdGEpID09IHNlbGYuX3JlYWRfcG9z
aXRpb246Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAg
ICAgICAgICAgICBfRFJPUF9DT0RFX0VOQ0FQU1VMQVRFRF9GUkFNRV9JU19UUlVOQ0FURUQpCi0K
LSAgICAgICAgYml0cyA9IG9yZChzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb25dKQotICAg
ICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAgICAgZmluID0gKGJpdHMgJiAweDgw
KSA9PSAweDgwCi0gICAgICAgIHJzdjEgPSAoYml0cyAmIDB4NDApID09IDB4NDAKLSAgICAgICAg
cnN2MiA9IChiaXRzICYgMHgyMCkgPT0gMHgyMAotICAgICAgICByc3YzID0gKGJpdHMgJiAweDEw
KSA9PSAweDEwCi0gICAgICAgIG9wY29kZSA9IGJpdHMgJiAweGYKLSAgICAgICAgcGF5bG9hZCA9
IHNlbGYucmVtYWluaW5nX2RhdGEoKQotICAgICAgICAjIENvbnN1bWUgcmVzdCBvZiB0aGUgbWVz
c2FnZSB3aGljaCBpcyBwYXlsb2FkIGRhdGEgb2YgdGhlIG9yaWdpbmFsCi0gICAgICAgICMgZnJh
bWUuCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gPSBsZW4oc2VsZi5fZGF0YSkKLSAgICAg
ICAgcmV0dXJuIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBwYXlsb2FkCi0KLSAgICBk
ZWYgX3JlYWRfbnVtYmVyKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9yZWFkX3Bvc2l0aW9uICsg
MSA+IGxlbihzZWxmLl9kYXRhKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAg
ICAgICAgICAgICAgJ0Nhbm5vdCByZWFkIHRoZSBmaXJzdCBieXRlIG9mIG51bWJlciBmaWVsZCcp
Ci0KLSAgICAgICAgbnVtYmVyID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3NpdGlvbl0p
Ci0gICAgICAgIGlmIG51bWJlciAmIDB4ODAgPT0gMHg4MDoKLSAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ1RoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiB0
aGUgZmlyc3QgYnl0ZSBvZiBudW1iZXIgc2hvdWxkICcKLSAgICAgICAgICAgICAgICAnYmUgdW5z
ZXQnKQotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAgICAgcG9zID0gc2Vs
Zi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBpZiBudW1iZXIgPT0gMTI3OgotICAgICAgICAgICAg
aWYgcG9zICsgOCA+IGxlbihzZWxmLl9kYXRhKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdJbnZhbGlkIG51bWJlciBmaWVsZCcpCi0gICAgICAgICAgICBzZWxmLl9yZWFkX3Bv
c2l0aW9uICs9IDgKLSAgICAgICAgICAgIG51bWJlciA9IHN0cnVjdC51bnBhY2soJyFRJywgc2Vs
Zi5fZGF0YVtwb3M6cG9zKzhdKVswXQotICAgICAgICAgICAgaWYgbnVtYmVyID4gMHg3RkZGRkZG
RkZGRkZGRkZGOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0VuY29kZWQgbnVt
YmVyKCVkKSA+PSAyXjYzJyAlIG51bWJlcikKLSAgICAgICAgICAgIGlmIG51bWJlciA8PSAweEZG
RkY6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAg
ICAgJyVkIHNob3VsZCBub3QgYmUgZW5jb2RlZCBieSA5IGJ5dGVzIGVuY29kaW5nJyAlIG51bWJl
cikKLSAgICAgICAgICAgIHJldHVybiBudW1iZXIKLSAgICAgICAgaWYgbnVtYmVyID09IDEyNjoK
LSAgICAgICAgICAgIGlmIHBvcyArIDIgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQotICAgICAgICAgICAg
c2VsZi5fcmVhZF9wb3NpdGlvbiArPSAyCi0gICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3QudW5w
YWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zOnBvcysyXSlbMF0KLSAgICAgICAgICAgIGlmIG51bWJl
ciA8PSAxMjU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgJyVkIHNob3VsZCBub3QgYmUgZW5jb2RlZCBieSAzIGJ5dGVzIGVuY29kaW5nJyAl
IG51bWJlcikKLSAgICAgICAgcmV0dXJuIG51bWJlcgotCi0gICAgZGVmIF9yZWFkX3NpemVfYW5k
X2NvbnRlbnRzKHNlbGYpOgotICAgICAgICAiIiJSZWFkIGRhdGEgdGhhdCBjb25zaXN0cyBvZiB0
aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgY29udGVudHMgZW5j
b2RlZCB0aGUgc2FtZSB3YXkgYXMgcGF5bG9hZCBsZW5ndGgKLSAgICAgICAgICAgICAgb2YgdGhl
IFdlYlNvY2tldCBQcm90b2NvbCB3aXRoIDEgYml0IHBhZGRpbmcgYXQgdGhlIGhlYWQuCi0gICAg
ICAgICAgICAtIHRoZSBjb250ZW50cy4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNpemUgPSBzZWxmLl9yZWFkX251bWJlcigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHIoZSkpCi0gICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9z
aXRpb24KLSAgICAgICAgaWYgcG9zICsgc2l6ZSA+IGxlbihzZWxmLl9kYXRhKToKLSAgICAgICAg
ICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9Q
X0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnQ2Fubm90
IHJlYWQgJWQgYnl0ZXMgZGF0YScgJSBzaXplKQotCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zaXRp
b24gKz0gc2l6ZQotICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVtwb3M6cG9zK3NpemVdCi0KLSAg
ICBkZWYgX3JlYWRfYWRkX2NoYW5uZWxfcmVxdWVzdChzZWxmLCBmaXJzdF9ieXRlLCBjb250cm9s
X2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSAoZmlyc3RfYnl0ZSA+PiAyKSAmIDB4NwotICAg
ICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9M
X0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBiaXRzIG11c3QgYmUgdW5zZXQnKQot
Ci0gICAgICAgICMgSW52YWxpZCBlbmNvZGluZyB3aWxsIGJlIGhhbmRsZWQgYnkgTXV4SGFuZGxl
ci4KLSAgICAgICAgZW5jb2RpbmcgPSBmaXJzdF9ieXRlICYgMHgzCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGNvbnRyb2xfYmxvY2suY2hhbm5lbF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lk
KCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9D
SykKLSAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGVuY29kaW5nCi0gICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCi0gICAgICAg
IGNvbnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBlbmNvZGVkX2hhbmRzaGFrZQotICAg
ICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2FkZF9jaGFubmVsX3Jl
c3BvbnNlKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZl
ZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHgzCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0g
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAg
ICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAg
J1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgY29udHJvbF9ibG9jay5h
Y2NlcHRlZCA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBjb250cm9sX2Jsb2NrLmVu
Y29kaW5nID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250
cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4
Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIGNv
bnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBzZWxmLl9yZWFkX3NpemVfYW5kX2NvbnRl
bnRzKCkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xfYmxvY2sKLQotICAgIGRlZiBfcmVhZF9mbG93
X2NvbnRyb2woc2VsZiwgZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2Vy
dmVkID0gZmlyc3RfYnl0ZSAmIDB4MWYKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAg
ICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9E
Uk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVz
ZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBj
b250cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAg
ICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFkX251bWJlcigpCi0gICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENv
bm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZSkpCi0KLSAgICAgICAg
cmV0dXJuIGNvbnRyb2xfYmxvY2sKLQotICAgIGRlZiBfcmVhZF9kcm9wX2NoYW5uZWwoc2VsZiwg
Zmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0
ZSAmIDB4MWYKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJ
RF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0
IGJlIHVuc2V0JykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLmNo
YW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIHJlYXNvbiA9IHNlbGYu
X3JlYWRfc2l6ZV9hbmRfY29udGVudHMoKQotICAgICAgICBpZiBsZW4ocmVhc29uKSA9PSAwOgot
ICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAgICAgICBj
b250cm9sX2Jsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgIGVsaWYgbGVuKHJlYXNvbikg
Pj0gMjoKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9jb2RlID0gc3RydWN0LnVucGFj
aygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX21l
c3NhZ2UgPSByZWFzb25bMjpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBQaHlz
aWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURf
TVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIERyb3BDaGFubmVs
IHRoYXQgY29uYWlucyBvbmx5IDEtYnl0ZSByZWFzb24nKQotICAgICAgICByZXR1cm4gY29udHJv
bF9ibG9jawotCi0gICAgZGVmIF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZiwgZmlyc3RfYnl0
ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAmIDB4MWUK
LSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29u
bmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09O
VFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0
JykKLSAgICAgICAgY29udHJvbF9ibG9jay5mYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9yZWFkX251
bWJlcigpCi0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFk
X251bWJlcigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBy
YWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRS
T0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
ZSkpCi0gICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYgcmVhZF9jb250cm9s
X2Jsb2NrcyhzZWxmKToKLSAgICAgICAgIiIiUmVhZCBjb250cm9sIGJsb2NrKHMpLgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3I6IHdoZW4gdGhl
IHBheWxvYWQgY29udGFpbnMgaW52YWxpZCBjb250cm9sCi0gICAgICAgICAgICAgICBibG9jayhz
KS4KLSAgICAgICAgICAgU3RvcEl0ZXJhdGlvbjogd2hlbiBubyBjb250cm9sIGJsb2NrcyBsZWZ0
LgotICAgICAgICAiIiIKLSAgICAgICAgd2hpbGUgc2VsZi5fcmVhZF9wb3NpdGlvbiA8IGxlbihz
ZWxmLl9kYXRhKToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUgPSBvcmQoc2VsZi5fZGF0YVtzZWxm
Ll9yZWFkX3Bvc2l0aW9uXSkKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMQot
ICAgICAgICAgICAgb3Bjb2RlID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAweDcKLSAgICAgICAgICAg
IGNvbnRyb2xfYmxvY2sgPSBfQ29udHJvbEJsb2NrKG9wY29kZT1vcGNvZGUpCi0gICAgICAgICAg
ICBpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVDoKLSAgICAgICAg
ICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2FkZF9jaGFubmVsX3JlcXVlc3QoZmlyc3RfYnl0ZSwg
Y29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FE
RF9DSEFOTkVMX1JFU1BPTlNFOgotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfYWRk
X2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NP
TlRST0w6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9mbG93X2NvbnRyb2woZmly
c3RfYnl0ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTDoKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2Ry
b3BfY2hhbm5lbChmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxpZiBv
cGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAgICAgICAgICAgICB5
aWVsZCBzZWxmLl9yZWFkX25ld19jaGFubmVsX3Nsb3QoZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9j
aykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25u
ZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfVU5LTk9XTl9NVVhf
T1BDT0RFLAotICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCBvcGNvZGUgJWQnICUgb3Bjb2Rl
KQotCi0gICAgICAgIGFzc2VydCBzZWxmLl9yZWFkX3Bvc2l0aW9uID09IGxlbihzZWxmLl9kYXRh
KQotICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0KLSAgICBkZWYgcmVtYWluaW5nX2RhdGEo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiByZW1haW5pbmcgZGF0YS4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3NpdGlvbjpdCi0KLQotY2xhc3MgX0xvZ2ljYWxS
ZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWxfaWQsIGNvbW1hbmQsIHBhdGgsIHByb3Rv
Y29sLCBoZWFkZXJzLAotICAgICAgICAgICAgICAgICBjb25uZWN0aW9uKToKLSAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFu
bmVsX2lkOiB0aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAg
ICAgY29tbWFuZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCi0gICAgICAgICAgICBwYXRoOiBIVFRQ
IHJlcXVlc3QgcGF0aC4KLSAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVycy4KLSAgICAg
ICAgICAgIGNvbm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4KLSAgICAgICAg
IiIiCi0gICAgICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgc2VsZi5t
ZXRob2QgPSBjb21tYW5kCi0gICAgICAgIHNlbGYudXJpID0gcGF0aAotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLSAgICAgICAgc2VsZi5oZWFkZXJzX2luID0gaGVhZGVycwotICAg
ICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0gICAgICAgIHNlbGYuc2VydmVyX3Rl
cm1pbmF0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmNsaWVudF90ZXJtaW5hdGVkID0gRmFsc2UK
LQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19o
dHRwcygpLgotCi0gICAgICAgIFJldHVybnMgRmFsc2UgYmVjYXVzZSB0aGlzIG1ldGhvZCBpcyB1
c2VkIG9ubHkgYnkgb2xkIHByb3RvY29scwotICAgICAgICAoaGl4aWUgYW5kIGh5YmkwMCkuCi0g
ICAgICAgICIiIgotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBfTG9naWNhbENvbm5l
Y3Rpb24ob2JqZWN0KToKLQotICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIG1wX2Nvbm4uIiIiCi0K
LSAgICAjIEZvciBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnQgb2Ygc2V0X3JlYWRfc3RhdGUoKS4K
LSAgICBTVEFURV9BQ1RJVkUgPSAxCi0gICAgU1RBVEVfR1JBQ0VGVUxMWV9DTE9TRUQgPSAyCi0g
ICAgU1RBVEVfVEVSTUlOQVRFRCA9IDMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtdXhfaGFu
ZGxlciwgY2hhbm5lbF9pZCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgbXV4X2hhbmRsZXI6IF9NdXhIYW5kbGVyIGluc3Rh
bmNlLgotICAgICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbCBpZCBvZiB0aGlzIGNvbm5lY3Rp
b24uCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9oYW5kbGVy
Ci0gICAgICAgIHNlbGYuX2NoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAgIHNlbGYuX2lu
Y29taW5nX2RhdGEgPSAnJwotCi0gICAgICAgICMgLSBQcm90ZWN0cyBfd2FpdGluZ193cml0ZV9j
b21wbGV0aW9uCi0gICAgICAgICMgLSBTaWduYWxzIHRoZSB0aHJlYWQgd2FpdGluZyBmb3IgY29t
cGxldGlvbiBvZiB3cml0ZSBieSBtdXggaGFuZGxlcgotICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAgICAgc2VsZi5fd2FpdGluZ193cml0
ZV9jb21wbGV0aW9uID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbiA9IHRo
cmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBzZWxmLl9yZWFkX3N0YXRlID0gc2VsZi5TVEFU
RV9BQ1RJVkUKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAgICAgICAgIiIiR2V0
dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYu
X211eF9oYW5kbGVyLnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X2xvY2FsX2FkZHIoKQotICAgIGxv
Y2FsX2FkZHIgPSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRfcmVtb3Rl
X2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9h
ZGRyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfY29ubmVj
dGlvbi5nZXRfcmVtb3RlX2FkZHIoKQotICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3Jl
bW90ZV9hZGRyKQotCi0gICAgZGVmIGdldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAgICAg
ICIiIkdldCBtZW1vcml6ZWQgbGluZXMuIE5vdCBzdXBwb3J0ZWQuIiIiCi0gICAgICAgIHJhaXNl
IE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oJ19Mb2dpY2FsQ29ubmVjdGlvbiBkb2VzIG5vdCBzdXBw
b3J0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X21lbW9yaXpl
ZF9saW5lcycpCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIldyaXRl
IGRhdGEuIG11eF9oYW5kbGVyIHNlbmRzIGRhdGEgYXN5bmNocm9ub3VzbHkuCi0KLSAgICAgICAg
VGhlIGNhbGxlciB3aWxsIGJlIHN1c3BlbmRlZCB1bnRpbCB3cml0ZSBkb25lLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgICBkYXRhOiBkYXRhIHRvIGJlIHdyaXR0ZW4uCi0KLSAgICAgICAg
UmFpc2VzOgotICAgICAgICAgICAgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbjogd2hlbiBjYWxsZWQg
YmVmb3JlIGZpbmlzaGluZyB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICB3cml0ZS4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlv
bjoKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGFscmVhZHkgd2FpdGluZyB0
aGUgY29tcGxldGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICdvZiB3cml0ZScgJSBzZWxmLl9j
aGFubmVsX2lkKQotCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24g
PSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2RhdGEoc2VsZi5fY2hh
bm5lbF9pZCwgZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi53YWl0KCkK
LSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB3b2tl
IHVwIGJ5IG9uX3dyaXRlcl9kb25lLgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHdyaXRlX2NvbnRyb2xfZGF0
YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGUgZGF0YSB2aWEgdGhlIGNvbnRyb2wgY2hh
bm5lbC4KLQotICAgICAgICBEb24ndCB3YWl0IGZpbmlzaGluZyB3cml0ZSBiZWNhdXNlIHRoaXMg
bWV0aG9kIGNhbiBiZSBjYWxsZWQgYnkKLSAgICAgICAgbXV4IGRpc3BhdGNoZXIuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGRhdGE6IGRhdGEgdG8gYmUgd3JpdHRlbi4KLSAgICAgICAg
IiIiCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLnNlbmRfY29udHJvbF9kYXRhKGRhdGEpCi0K
LSAgICBkZWYgb25fd3JpdGVfZGF0YV9kb25lKHNlbGYpOgotICAgICAgICAiIiJDYWxsZWQgd2hl
biBzZW5kaW5nIGRhdGEgaXMgY29tcGxldGVkLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVu
ZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIGNhbGwgb2Yg
b25fd3JpdGVfZGF0YV9kb25lIGZvciBsb2dpY2FsICcKLSAgICAgICAgICAgICAgICAgICAgJ2Nv
bm5lY3Rpb24gJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHNlbGYuX3dhaXRp
bmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRl
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBvbl93cml0ZXJfZG9uZShzZWxmKToKLSAg
ICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSBtdXggaGFuZGxlciB3aGVuIHRoZSB3cml0ZXIgdGhyZWFk
IGhhcyBmaW5pc2hlZC4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fd3JpdGVf
Y29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgc2VsZi5fd2FpdGluZ193cml0ZV9jb21w
bGV0aW9uID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5ub3RpZnko
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0gICAgZGVmIGFwcGVuZF9mcmFtZV9kYXRhKHNlbGYsIGZyYW1lX2RhdGEpOgot
ICAgICAgICAiIiJBcHBlbmQgaW5jb21pbmcgZnJhbWUgZGF0YS4KLQotICAgICAgICBDYWxsZWQg
d2hlbiBtdXhfaGFuZGxlciBkaXNwYXRjaGVzIGZyYW1lIGRhdGEgdG8gdGhlIGNvcnJlc3BvbmRp
bmcKLSAgICAgICAgYXBwbGljYXRpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZy
YW1lX2RhdGE6IGluY29taW5nIGZyYW1lIGRhdGEuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
Ll9yZWFkX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfZGF0YSAr
PSBmcmFtZV9kYXRhCi0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAg
ICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHJlYWQoc2VsZiwg
bGVuZ3RoKToKLSAgICAgICAgIiIiUmVhZCBkYXRhLgotCi0gICAgICAgIEJsb2NrcyB1bnRpbCBl
bm91Z2ggZGF0YSBoYXMgYXJyaXZlZCB2aWEgcGh5c2ljYWwgY29ubmVjdGlvbi4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgICAgbGVuZ3RoOiBsZW5ndGggb2YgZGF0YSB0byBiZSByZWFkLgot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2Vw
dGlvbjogd2hlbiBjbG9zaW5nIGhhbmRzaGFrZSBmb3IgdGhpcwotICAgICAgICAgICAgICAgIGxv
Z2ljYWwgY2hhbm5lbCBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIGhhcwotICAg
ICAgICAgICAgICAgIGNsb3NlZCwgb3IgYW4gZXJyb3IgaXMgY2F1c2VkIG9uIHRoZSByZWFkZXIg
dGhyZWFkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWly
ZSgpCi0gICAgICAgIHdoaWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfQUNUSVZF
IGFuZAotICAgICAgICAgICAgICAgbGVuKHNlbGYuX2luY29taW5nX2RhdGEpIDwgbGVuZ3RoKToK
LSAgICAgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5TVEFURV9HUkFDRUZVTExZ
X0NMT1NFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hhbm5lbCAlZCBoYXMgY2xv
c2VkLicgJSBzZWxmLl9jaGFubmVsX2lkKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9yZWFkX3N0
YXRlID09IHNlbGYuU1RBVEVfVEVSTUlOQVRFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25u
ZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2Vpdmlu
ZyAlZCBieXRlIGZhaWxlZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xvc2VkJyAlCi0gICAgICAg
ICAgICAgICAgICAgIChsZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQotCi0gICAgICAgICAgICB2
YWx1ZSA9IHNlbGYuX2luY29taW5nX2RhdGFbOmxlbmd0aF0KLSAgICAgICAgICAgIHNlbGYuX2lu
Y29taW5nX2RhdGEgPSBzZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpdCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAg
ICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShzZWxmLCBuZXdfc3RhdGUp
OgotICAgICAgICAiIiJTZXQgdGhlIHN0YXRlIG9mIHRoaXMgY29ubmVjdGlvbi4KLQotICAgICAg
ICBDYWxsZWQgd2hlbiBhbiBldmVudCBmb3IgdGhpcyBjb25uZWN0aW9uIGhhcyBvY2N1cnJlZC4K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG5ld19zdGF0ZTogc3RhdGUgdG8gYmUgc2V0LiBu
ZXdfc3RhdGUgbXVzdCBiZSBvbmUgb2YgZm9sbG93aW5nczoKLSAgICAgICAgICAgIC0gU1RBVEVf
R1JBQ0VGVUxMWV9DTE9TRUQ6IHdoZW4gY2xvc2luZyBoYW5kc2hha2UgZm9yIHRoaXMKLSAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uIGhhcyBiZWVuIHJlY2VpdmVkLgotICAgICAgICAgICAgLSBT
VEFURV9URVJNSU5BVEVEOiB3aGVuIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIGhhcyBjbG9zZWQg
b3IKLSAgICAgICAgICAgICAgICBEcm9wQ2hhbm5lbCBvZiB0aGlzIGNvbm5lY3Rpb24gaGFzIHJl
Y2VpdmVkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWly
ZSgpCi0gICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3RhdGUKLSAgICAgICAgc2VsZi5f
cmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVs
ZWFzZSgpCi0KLQotY2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3QpOgotCi0gICAgIiIiSG9sZCB0
aGUgcmVzdWx0IG9mIF9Jbm5lck1lc3NhZ2VCdWlsZGVyLmJ1aWxkKCkuIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgb3Bjb2RlLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBv
cGNvZGUKLSAgICAgICAgc2VsZi5wYXlsb2FkID0gcGF5bG9hZAotCi0KLWNsYXNzIF9Jbm5lck1l
c3NhZ2VCdWlsZGVyKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0byBidWlsZCBhbiBfSW5uZXJN
ZXNzYWdlLgotCi0gICAgQSBjbGFzcyB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIGlubmVyIG1l
c3NhZ2UgZnJhZ21lbnRhdGlvbiBhbmQKLSAgICBidWlsZHMgYSBtZXNzYWdlIGZyb20gZnJhZ21l
bnRlZCBpbm5lciBmcmFtZShzKS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRp
bmdfY29udHJvbF9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9
IE5vbmUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cyA9IFtdCi0gICAg
ICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZmlyc3QKLQotICAgIGRlZiBf
aGFuZGxlX2ZpcnN0KHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNv
bW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1l
RXhjZXB0aW9uKCdTZW5kaW5nIGludmFsaWQgY29udGludWF0aW9uIG9wY29kZScpCi0KLSAgICAg
ICAgaWYgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woZnJhbWUpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY2Vzc19maXJzdF9mcmFn
bWVudGVkX21lc3NhZ2UoZnJhbWUpCi0KLSAgICBkZWYgX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRl
ZF9jb250cm9sKHNlbGYsIGZyYW1lKToKLSAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBm
cmFtZS5vcGNvZGUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cy5hcHBl
bmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoKLSAgICAgICAgICAg
IHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9jb250cm9sCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9m
cmFnbWVudGVkX2NvbnRyb2woKQotCi0gICAgZGVmIF9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRf
bWVzc2FnZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gZnJh
bWUub3Bjb2RlCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMuYXBwZW5k
KGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFtZS5maW46Ci0gICAgICAgICAgICBz
ZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZyYWdtZW50ZWRfbWVzc2FnZQotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJh
Z21lbnRlZF9tZXNzYWdlKCkKLQotICAgIGRlZiBfaGFuZGxlX2ZyYWdtZW50ZWRfY29udHJvbChz
ZWxmLCBmcmFtZSk6Ci0gICAgICAgIGlmIGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RFX0NP
TlRJTlVBVElPTjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnU2VuZGluZyBpbnZhbGlkIG9wY29kZSAlZCB3aGlsZSBzZW5kaW5nIGZy
YWdtZW50ZWQgY29udHJvbCAnCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnICUgZnJhbWUub3Bj
b2RlKQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21lbnRzLmFwcGVuZChmcmFt
ZS5wYXlsb2FkKQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9jb250cm9s
KCkKLQotICAgIGRlZiBfcmVhc3NlbWJsZV9mcmFnbWVudGVkX2NvbnRyb2woc2VsZik6Ci0gICAg
ICAgIG9wY29kZSA9IHNlbGYuX2NvbnRyb2xfb3Bjb2RlCi0gICAgICAgIHBheWxvYWQgPSAnJy5q
b2luKHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMpCi0gICAgICAgIHNlbGYuX2NvbnRy
b2xfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21lbnRz
ID0gW10KLSAgICAgICAgaWYgc2VsZi5fbWVzc2FnZV9vcGNvZGUgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZyYWdtZW50ZWRfbWVz
c2FnZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNl
bGYuX2hhbmRsZV9maXJzdAotICAgICAgICByZXR1cm4gX0lubmVyTWVzc2FnZShvcGNvZGUsIHBh
eWxvYWQpCi0KLSAgICBkZWYgX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZiwgZnJhbWUp
OgotICAgICAgICAjIFNlbmRlciBjYW4gaW50ZXJsZWF2ZSBhIGNvbnRyb2wgbWVzc2FnZSB3aGls
ZSBzZW5kaW5nIGZyYWdtZW50ZWQKLSAgICAgICAgIyBtZXNzYWdlcy4KLSAgICAgICAgaWYgY29t
bW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9jb250cm9sX29wY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhV
bmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnU2hvdWxkIG5vdCByZWFj
aCBoZXJlKEJ1ZyBpbiBidWlsZGVyKScpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY2Vz
c19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woZnJhbWUpCi0KLSAgICAgICAgaWYgZnJhbWUub3Bj
b2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2UgSW52
YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZW5kaW5nIGludmFsaWQgb3Bj
b2RlICVkIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZCBtZXNzYWdlJyAlCi0gICAgICAgICAgICAg
ICAgZnJhbWUub3Bjb2RlKQotICAgICAgICBzZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRz
LmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJhZ21l
bnRlZF9tZXNzYWdlKCkKLQotICAgIGRlZiBfcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2Uo
c2VsZik6Ci0gICAgICAgIG9wY29kZSA9IHNlbGYuX21lc3NhZ2Vfb3Bjb2RlCi0gICAgICAgIHBh
eWxvYWQgPSAnJy5qb2luKHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMpCi0gICAgICAg
IHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX21lc3Nh
Z2VfZnJhZ21lbnRzID0gW10KLSAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hh
bmRsZV9maXJzdAotICAgICAgICByZXR1cm4gX0lubmVyTWVzc2FnZShvcGNvZGUsIHBheWxvYWQp
Ci0KLSAgICBkZWYgYnVpbGQoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJCdWlsZCBhbiBpbm5l
ciBtZXNzYWdlLgotCi0gICAgICAgIFJldHVybnMgYW4gX0lubmVyTWVzc2FnZSBpbnN0YW5jZSB3
aGVuIHRoZSBnaXZlbiBmcmFtZSBpcyB0aGUgbGFzdAotICAgICAgICBmcmFnbWVudGVkIGZyYW1l
LiBSZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBm
cmFtZTogYW4gaW5uZXIgZnJhbWUuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFs
aWRGcmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZlZCBpbnZhbGlkIG9wY29kZS4gKGUuZy4KLSAg
ICAgICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNvbnRpbnVhdGlvbiBkYXRhIG9wY29kZSBidXQg
dGhlIGZpbiBmbGFnIG9mCi0gICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIGlubmVyIGZyYW1l
IHdhcyBub3Qgc2V0LikKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9mcmFtZV9o
YW5kbGVyKGZyYW1lKQotCi0KLWNsYXNzIF9Mb2dpY2FsU3RyZWFtKFN0cmVhbSk6Ci0KLSAgICAi
IiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4KLQotICAgIFRoaXMgY2xhc3MgaW50ZXJwcmV0cyBt
dWx0aXBsZXhlZCBXZWJTb2NrZXQgZnJhbWVzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QsIHN0cmVhbV9vcHRpb25zLCBzZW5kX3F1b3RhLCByZWNlaXZlX3F1b3Rh
KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0g
ICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2UuCi0gICAgICAgICAg
ICBzdHJlYW1fb3B0aW9uczogU3RyZWFtT3B0aW9ucyBpbnN0YW5jZS4KLSAgICAgICAgICAgIHNl
bmRfcXVvdGE6IEluaXRpYWwgc2VuZCBxdW90YS4KLSAgICAgICAgICAgIHJlY2VpdmVfcXVvdGE6
IEluaXRpYWwgcmVjZWl2ZSBxdW90YS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgUGh5c2ljYWwg
c3RyZWFtIGlzIHJlc3BvbnNpYmxlIGZvciBtYXNraW5nLgotICAgICAgICBzdHJlYW1fb3B0aW9u
cy51bm1hc2tfcmVjZWl2ZSA9IEZhbHNlCi0gICAgICAgIFN0cmVhbS5fX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NlZCA9IEZh
bHNlCi0gICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgICMgLSBQ
cm90ZWN0cyBfc2VuZF9jbG9zZWQgYW5kIF9zZW5kX3F1b3RhCi0gICAgICAgICMgLSBTaWduYWxz
IHRoZSB0aHJlYWQgd2FpdGluZyBmb3Igc2VuZCBxdW90YSByZXBsZW5pc2hlZAotICAgICAgICBz
ZWxmLl9zZW5kX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQotCi0gICAgICAgICMg
VGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhbWUgaW4gbWVzc2FnZXMuCi0gICAgICAgIHNlbGYu
X21lc3NhZ2Vfb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgICMgVHJ1ZSB3aGVu
IHRoZSBsYXN0IG1lc3NhZ2Ugd2FzIGZyYWdtZW50ZWQuCi0gICAgICAgIHNlbGYuX2xhc3RfbWVz
c2FnZV93YXNfZnJhZ21lbnRlZCA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90
YSA9IHJlY2VpdmVfcXVvdGEKLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBo
b3JlID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgpCi0KLSAgICAgICAgc2VsZi5faW5uZXJfbWVzc2Fn
ZV9idWlsZGVyID0gX0lubmVyTWVzc2FnZUJ1aWxkZXIoKQotCi0gICAgZGVmIF9jcmVhdGVfaW5u
ZXJfZnJhbWUoc2VsZiwgb3Bjb2RlLCBwYXlsb2FkLCBlbmQ9VHJ1ZSk6Ci0gICAgICAgIGZyYW1l
ID0gRnJhbWUoZmluPWVuZCwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1wYXlsb2FkKQotICAgICAg
ICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVy
czoKLSAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICAgICAgaWYg
bGVuKHBheWxvYWQpICE9IGxlbihmcmFtZS5wYXlsb2FkKToKLSAgICAgICAgICAgIHJhaXNlIE11
eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011eCBleHRlbnNpb24gbXVz
dCBub3QgYmUgdXNlZCBhZnRlciBleHRlbnNpb25zIHdoaWNoIGNoYW5nZSAnCi0gICAgICAgICAg
ICAgICAgJyBmcmFtZSBib3VuZGFyeScpCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9ICgoZnJhbWUu
ZmluIDw8IDcpIHwgKGZyYW1lLnJzdjEgPDwgNikgfAotICAgICAgICAgICAgICAgICAgICAgIChm
cmFtZS5yc3YyIDw8IDUpIHwgKGZyYW1lLnJzdjMgPDwgNCkgfCBmcmFtZS5vcGNvZGUpCi0gICAg
ICAgIHJldHVybiBjaHIoZmlyc3RfYnl0ZSkgKyBmcmFtZS5wYXlsb2FkCi0KLSAgICBkZWYgX3dy
aXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUpOgotICAgICAg
ICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2FkKQotICAgICAgICB3cml0ZV9wb3NpdGlvbiA9
IDAKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEFuIGlubmVyIGZyYW1lIHdpbGwgYmUg
ZnJhZ21lbnRlZCBpZiB0aGVyZSBpcyBubyBlbm91Z2ggc2VuZAotICAgICAgICAgICAgIyBxdW90
YS4gVGhpcyBzZW1hcGhvcmUgZW5zdXJlcyB0aGF0IGZyYWdtZW50ZWQgaW5uZXIgZnJhbWVzIGFy
ZQotICAgICAgICAgICAgIyBzZW50IGluIG9yZGVyIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0g
ICAgICAgICAgICAjIE5vdGUgdGhhdCBmcmFtZXMgdGhhdCBjb21lIGZyb20gb3RoZXIgbG9naWNh
bCBjaGFubmVscyBvcgotICAgICAgICAgICAgIyBtdWx0aXBsZXhpbmcgY29udHJvbCBibG9ja3Mg
Y2FuIGJlIGluc2VydGVkIGJldHdlZW4gZnJhZ21lbnRlZAotICAgICAgICAgICAgIyBpbm5lciBm
cmFtZXMgb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9p
bm5lcl9mcmFtZV9zZW1hcGhvcmUuYWNxdWlyZSgpCi0KLSAgICAgICAgICAgICMgQ29uc3VtZSBh
biBvY3RldCBxdW90YSB3aGVuIHRoaXMgaXMgdGhlIGZpcnN0IGZyYWdtZW50ZWQgZnJhbWUuCi0g
ICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9zZW5kX2Ns
b3NlZCkgYW5kIHNlbGYuX3NlbmRfcXVvdGEgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NlbmRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3NlbmRfY2xvc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMb2dpY2FsIGNvbm5l
Y3Rpb24gJWQgaXMgY2xvc2VkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC5jaGFubmVsX2lkKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVv
dGEgLT0gMQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgICAgICB3aGlsZSB3cml0ZV9w
b3NpdGlvbiA8IHBheWxvYWRfbGVuZ3RoOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VuZF9jbG9zZWQpIGFuZCBzZWxmLl9zZW5kX3F1b3Rh
ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ05vIHF1b3RhLiBXYWl0aW5nIEZsb3dDb250cm9sIG1l
c3NhZ2UgZm9yICVkLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLndhaXQoKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlbmRfY2xvc2VkOgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdMb2dpY2FsIGNvbm5lY3Rpb24gJWQgaXMgY2xvc2Vk
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0Ll9jaGFubmVsX2lk
KQotCi0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IHBheWxvYWRfbGVuZ3RoIC0gd3Jp
dGVfcG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgd3JpdGVfbGVuZ3RoID0gbWluKHNlbGYu
X3NlbmRfcXVvdGEsIHJlbWFpbmluZykKLSAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWVf
ZW5kID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGFuZAotICAgICAgICAgICAgICAg
ICAgICAgICAgKHdyaXRlX3Bvc2l0aW9uICsgd3JpdGVfbGVuZ3RoID09IHBheWxvYWRfbGVuZ3Ro
KSkKLQotICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYuX2NyZWF0ZV9pbm5l
cl9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBheWxvYWRbd3JpdGVfcG9zaXRpb246d3JpdGVfcG9zaXRpb24rd3JpdGVfbGVu
Z3RoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lX2VuZCkKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSAtPSB3cml0ZV9sZW5ndGgKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb25zdW1lZCBxdW90YT0lZCwgcmVtYWluaW5n
PSVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3JpdGVfbGVu
Z3RoLCBzZWxmLl9zZW5kX3F1b3RhKSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAg
ICAgICAgICMgV3JpdGluZyBkYXRhIHdpbGwgYmxvY2sgdGhlIHdvcmtlciBzbyB3ZSBuZWVkIHRv
IHJlbGVhc2UKLSAgICAgICAgICAgICAgICAjIF9zZW5kX2NvbmRpdGlvbiBiZWZvcmUgd3JpdGlu
Zy4KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgaW5uZXIgZnJh
bWU6ICVyJyAlIGlubmVyX2ZyYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi53cml0ZShpbm5lcl9mcmFtZSkKLSAgICAgICAgICAgICAgICB3cml0ZV9wb3NpdGlv
biArPSB3cml0ZV9sZW5ndGgKLQotICAgICAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENP
REVfQ09OVElOVUFUSU9OCi0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihlKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlLnJlbGVhc2UoKQot
Ci0gICAgZGVmIHJlcGxlbmlzaF9zZW5kX3F1b3RhKHNlbGYsIHNlbmRfcXVvdGEpOgotICAgICAg
ICAiIiJSZXBsZW5pc2ggc2VuZCBxdW90YS4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
c2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBzZWxmLl9zZW5k
X3F1b3RhICsgc2VuZF9xdW90YSA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX3F1b3RhID0gMAotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFu
bmVsRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwg
X0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9x
dW90YSArPSBzZW5kX3F1b3RhCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcGxl
bmlzaGVkIHNlbmQgcXVvdGEgZm9yIGNoYW5uZWwgaWQgJWQ6ICVkJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgc2VsZi5fc2VuZF9x
dW90YSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi5ub3RpZnkoKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgY29uc3VtZV9yZWNlaXZlX3F1b3RhKHNlbGYsIGFtb3VudCk6Ci0gICAgICAgICIi
IkNvbnN1bWUgcmVjZWl2ZSBxdW90YS4gUmV0dXJucyBGYWxzZSBvbiBmYWlsdXJlLiIiIgotICAg
ICAgICBpZiBzZWxmLl9yZWNlaXZlX3F1b3RhIDwgYW1vdW50OgotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdWaW9sYXRlIHF1b3RhIG9uIGNoYW5uZWwgaWQgJWQ6ICVkIDwgJWQnICUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhLCBh
bW91bnQpKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHNlbGYuX3JlY2VpdmVf
cXVvdGEgLT0gYW1vdW50Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgc2VuZF9tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICAiIiJP
dmVycmlkZSBTdHJlYW0uc2VuZF9tZXNzYWdlLiIiIgotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRp
bmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGlmIGJpbmFyeSBhbmQgaXNp
bnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZyYW1lIG11
c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAg
ICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgICAgICBtZXNzYWdlID0gbWVz
c2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2Vs
Zi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBtZXNzYWdl
ID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAg
IGlmIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZDoKLSAgICAgICAgICAgIGlmIG9w
Y29kZSAhPSBzZWxmLl9tZXNzYWdlX29wY29kZToKLSAgICAgICAgICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXMgZm9yIHRoZSBz
YW1lIG1lc3NhZ2UnKQotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5V
QVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0g
b3Bjb2RlCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWUob3Bjb2RlLCBtZXNzYWdl
LCBlbmQpCi0gICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZCA9IG5vdCBl
bmQKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUg
U3RyZWFtLl9yZWNlaXZlX2ZyYW1lLgotCi0gICAgICAgIEluIGFkZGl0aW9uIHRvIGNhbGwgU3Ry
ZWFtLl9yZWNlaXZlX2ZyYW1lLCB0aGlzIG1ldGhvZCBhZGRzIHRoZSBhbW91bnQKLSAgICAgICAg
b2YgcGF5bG9hZCB0byByZWNlaXZpbmcgcXVvdGEgYW5kIHNlbmRzIEZsb3dDb250cm9sIHRvIHRo
ZSBjbGllbnQuCi0gICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgaGVyZSBiZWNhdXNlIFN0cmVhbS5y
ZWNlaXZlX21lc3NhZ2UoKSBoYW5kbGVzCi0gICAgICAgIGNvbnRyb2wgZnJhbWVzIGludGVybmFs
bHkuCi0gICAgICAgICIiIgotICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2
MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShzZWxmKQotICAgICAgICBhbW91bnQgPSBs
ZW4ocGF5bG9hZCkKLSAgICAgICAgIyBSZXBsZW5pc2ggZXh0cmEgb25lIG9jdGV0IHdoZW4gcmVj
ZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgotICAgICAgICBpZiBvcGNvZGUgIT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBhbW91bnQgKz0gMQotICAg
ICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3VudAotICAgICAgICBmcmFtZV9kYXRhID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50KQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1NlbmRpbmcgZmxvdyBjb250cm9sIGZvciAlZCwgcmVwbGVuaXNoZWQ9JWQn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQs
IGFtb3VudCkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZV9jb250cm9s
X2RhdGEoZnJhbWVfZGF0YSkKLSAgICAgICAgcmV0dXJuIG9wY29kZSwgcGF5bG9hZCwgZmluLCBy
c3YxLCByc3YyLCByc3YzCi0KLSAgICBkZWYgX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUoc2VsZiwg
ZnJhbWUpOgotICAgICAgICAiIiJPdmVycmlkZSBTdHJlYW0uX2dldF9tZXNzYWdlX2Zyb21fZnJh
bWUuIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlubmVyX21lc3NhZ2UgPSBzZWxmLl9p
bm5lcl9tZXNzYWdlX2J1aWxkZXIuYnVpbGQoZnJhbWUpCi0gICAgICAgIGV4Y2VwdCBJbnZhbGlk
RnJhbWVFeGNlcHRpb246Ci0gICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAot
ICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgX0RST1BfQ09ERV9CQURf
RlJBR01FTlRBVElPTikKLQotICAgICAgICBpZiBpbm5lcl9tZXNzYWdlIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBpbm5l
cl9tZXNzYWdlLm9wY29kZQotICAgICAgICByZXR1cm4gaW5uZXJfbWVzc2FnZS5wYXlsb2FkCi0K
LSAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBTdHJl
YW0ucmVjZWl2ZV9tZXNzYWdlLiIiIgotICAgICAgICAjIEp1c3QgY2FsbCBTdHJlYW0ucmVjZWl2
ZV9tZXNzYWdlKCksIGJ1dCBjYXRjaAotICAgICAgICAjIExvZ2ljYWxDb25uZWN0aW9uQ2xvc2Vk
RXhjZXB0aW9uLCB3aGljaCBpcyByYWlzZWQgd2hlbiB0aGUgbG9naWNhbAotICAgICAgICAjIGNv
bm5lY3Rpb24gaGFzIGNsb3NlZCBncmFjZWZ1bGx5LgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICByZXR1cm4gU3RyZWFtLnJlY2VpdmVfbWVzc2FnZShzZWxmKQotICAgICAgICBleGNlcHQgTG9n
aWNhbENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBf
c2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgotICAgICAgICAiIiJP
dmVycmlkZSBTdHJlYW0uX3NlbmRfY2xvc2luZ19oYW5kc2hha2UuIiIiCi0gICAgICAgIGJvZHkg
PSBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keShjb2RlLCByZWFzb24pCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGluZyBjbG9zaW5nIGhhbmRzaGFrZSBmb3IgJWQ6ICglciwg
JXIpJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFubmVs
X2lkLCBjb2RlLCByZWFzb24pKQotICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZShjb21t
b24uT1BDT0RFX0NMT1NFLCBib2R5LCBlbmQ9VHJ1ZSkKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHNlbmRfcGluZyhzZWxmLCBib2R5
PScnKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRfcGluZy4iIiIKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBpbmcgb24gbG9naWNhbCBjaGFubmVsICVkOiAl
cicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9p
ZCwgYm9keSkpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVf
UElORywgYm9keSwgZW5kPVRydWUpCi0KLSAgICAgICAgc2VsZi5fcGluZ19xdWV1ZS5hcHBlbmQo
Ym9keSkKLQotICAgIGRlZiBfc2VuZF9wb25nKHNlbGYsIGJvZHkpOgotICAgICAgICAiIiJPdmVy
cmlkZSBTdHJlYW0uX3NlbmRfcG9uZy4iIiIKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZW5kaW5nIHBvbmcgb24gbG9naWNhbCBjaGFubmVsICVkOiAlcicgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgYm9keSkpCi0gICAgICAgIHNl
bGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgZW5kPVRydWUp
Ci0KLSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIFN0cmVhbS5jbG9z
ZV9jb25uZWN0aW9uLiIiIgotICAgICAgICAjIFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbG9zaW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHN0
b3Bfc2VuZGluZyhzZWxmKToKLSAgICAgICAgIiIiU3RvcCBhY2NlcHRpbmcgbmV3IHNlbmQgb3Bl
cmF0aW9uIChfd3JpdGVfaW5uZXJfZnJhbWUpLiIiIgotICAgICAgICBzZWxmLl9zZW5kX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCi0gICAgICAg
IHNlbGYuX3NlbmRfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0KLWNsYXNzIF9PdXRnb2luZ0RhdGEob2JqZWN0KToKLQotICAgICIi
IlNpbXBsZSBkYXRhL2NoYW5uZWwgY29udGFpbmVyLgotCi0gICAgQSBzdHJ1Y3R1cmUgdGhhdCBo
b2xkcyBkYXRhIHRvIGJlIHNlbnQgdmlhIHBoeXNpY2FsIGNvbm5lY3Rpb24gYW5kCi0gICAgb3Jp
Z2luIG9mIHRoZSBkYXRhLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5u
ZWxfaWQsIGRhdGEpOgotICAgICAgICBzZWxmLmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAg
ICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotCi1jbGFzcyBfUGh5c2ljYWxDb25uZWN0aW9uV3JpdGVy
KHRocmVhZGluZy5UaHJlYWQpOgotCi0gICAgIiIiQSB0aHJlYWQgdGhhdCBpcyByZXNwb25zaWJs
ZSBmb3Igd3JpdGluZyBkYXRhIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICBUT0RPKGJh
c2hpKTogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRocmVhZC1zYWZldHkgcHJvYmxlbSB3aGVuIHRo
ZSByZWFkZXIKLSAgICB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBzYW1lIHNvY2tldCBhdCBh
IHRpbWUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgot
ICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5k
bGVyID0gbXV4X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgICAg
ICAjIFdoZW4gc2V0LCBtYWtlIHRoaXMgdGhyZWFkIHN0b3AgYWNjZXB0aW5nIG5ldyBkYXRhLCBm
bHVzaCBwZW5kaW5nCi0gICAgICAgICMgZGF0YSBhbmQgZXhpdC4KLSAgICAgICAgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICAjIFRoZSBjbG9zZSBjb2RlIG9mIHRoZSBwaHlz
aWNhbCBjb25uZWN0aW9uLgotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY29tbW9uLlNUQVRV
U19OT1JNQUxfQ0xPU1VSRQotICAgICAgICAjIERlcXVlIGZvciBwYXNzaW5nIHdyaXRlIGRhdGEu
IEl0J3MgcHJvdGVjdGVkIGJ5IF9kZXF1ZV9jb25kaXRpb24KLSAgICAgICAgIyB1bnRpbCBfc3Rv
cF9yZXF1ZXN0ZWQgaXMgc2V0LgotICAgICAgICBzZWxmLl9kZXF1ZSA9IGNvbGxlY3Rpb25zLmRl
cXVlKCkKLSAgICAgICAgIyAtIFByb3RlY3RzIF9kZXF1ZSwgX3N0b3BfcmVxdWVzdGVkIGFuZCBf
Y2xvc2VfY29kZQotICAgICAgICAjIC0gU2lnbmFscyB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoZW0g
dG8gYmUgYXZhaWxhYmxlCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbiA9IHRocmVhZGlu
Zy5Db25kaXRpb24oKQotCi0gICAgZGVmIHB1dF9vdXRnb2luZ19kYXRhKHNlbGYsIGRhdGEpOgot
ICAgICAgICAiIiJQdXQgb3V0Z29pbmcgZGF0YS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgZGF0YTogX091dGdvaW5nRGF0YSBpbnN0YW5jZS4KLSAgICAgICAgUmFpc2VzOgotICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHRoZSB0aHJlYWQgaGFzIGJlZW4gcmVx
dWVzdGVkIHRvCi0gICAgICAgICAgICAgICAgdGVybWluYXRlLgotICAgICAgICAiIiIKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotICAg
ICAgICAgICAgaWYgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
QmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdDYW5ub3Qgd3JpdGUgZGF0YSBhbnltb3JlJykKLQotICAg
ICAgICAgICAgc2VsZi5fZGVxdWUuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9kZXF1
ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYu
X2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBfd3JpdGVfZGF0YShzZWxmLCBv
dXRnb2luZ19kYXRhKToKLSAgICAgICAgbWVzc2FnZSA9IChfZW5jb2RlX2NoYW5uZWxfaWQob3V0
Z29pbmdfZGF0YS5jaGFubmVsX2lkKSArCi0gICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfZGF0
YS5kYXRhKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlz
aWNhbF9zdHJlYW0uc2VuZF9tZXNzYWdlKAotICAgICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2Fn
ZSwgZW5kPVRydWUsIGJpbmFyeT1UcnVlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6
Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcgJQotICAgICAgICAgICAg
ICAgIChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCks
IGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IEl0IHdvdWxk
IGJlIGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMKLSAgICAgICAgIyBjb250
cm9sIGRhdGEgYXMgd2VsbC4KLSAgICAgICAgaWYgb3V0Z29pbmdfZGF0YS5jaGFubmVsX2lkICE9
IF9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3Rp
Znlfd3JpdGVfZGF0YV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCkKLQotICAgIGRlZiBy
dW4oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoK
LSAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEgPSBzZWxmLl9kZXF1ZS5w
b3BsZWZ0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNl
KCkKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG91dGdvaW5nX2RhdGEpCi0gICAg
ICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotCi0gICAgICAgICAg
ICAjIEZsdXNoIGRlcXVlLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBBdCB0aGlzIHBv
aW50LCBzZWxmLl9kZXF1ZV9jb25kaXRpb24gaXMgYWx3YXlzIGFjcXVpcmVkLgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9kZXF1ZSkgPiAwOgotICAg
ICAgICAgICAgICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVxdWUucG9wbGVmdCgpCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29pbmdfZGF0YSkKLSAgICAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0gICAgICAgICAgICAjIENsb3NlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCB3YWl0IHRoZSByZXNwb25zZSBo
ZXJlLiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSByZWFkCi0gICAgICAgICAgICAgICAgIyBieSB0aGUg
cmVhZGVyIHRocmVhZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNh
bF9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xv
c2VfY29kZSwgd2FpdF9yZXNwb25zZT1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKLSAgICAgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gY2xvc2UgdGhlIHBoeXNpY2FsIGNv
bm5lY3Rpb246ICVyJyAlIGUpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV93cml0ZXJfZG9uZSgpCi0K
LSAgICBkZWYgc3RvcChzZWxmLCBjbG9zZV9jb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NV
UkUpOgotICAgICAgICAiIiJTdG9wIHRoZSB3cml0ZXIgdGhyZWFkLiIiIgotICAgICAgICBzZWxm
Ll9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVk
ID0gVHJ1ZQotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY2xvc2VfY29kZQotICAgICAgICBz
ZWxmLl9kZXF1ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0KLWNsYXNzIF9QaHlzaWNhbENvbm5lY3Rpb25SZWFkZXIodGhyZWFk
aW5nLlRocmVhZCk6Ci0KLSAgICAiIiJBIHRocmVhZCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBy
ZWFkaW5nIGRhdGEgZnJvbSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIG11eF9oYW5kbGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGlu
c3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhh
bmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9f
aW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9oYW5kbGVyCi0gICAgICAg
IHNlbGYuc2V0RGFlbW9uKFRydWUpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBoeXNpY2FsX3N0cmVh
bSA9IHNlbGYuX211eF9oYW5kbGVyLnBoeXNpY2FsX3N0cmVhbQotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSBwaHlzaWNhbF9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgICAg
ICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
ICAgICAgICAgIyBCZWxvdyBoYXBwZW5zIG9ubHkgd2hlbiBhIGRhdGEgbWVzc2FnZSBpcyByZWNl
aXZlZC4KLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBwaHlzaWNhbF9zdHJlYW0uZ2V0X2xhc3Rf
cmVjZWl2ZWRfb3Bjb2RlKCkKLSAgICAgICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9Q
Q09ERV9CSU5BUlk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLmZhaWxf
cGh5c2ljYWxfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVf
SU5WQUxJRF9FTkNBUFNVTEFUSU5HX01FU1NBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
UmVjZWl2ZWQgYSB0ZXh0IG1lc3NhZ2Ugb24gcGh5c2ljYWwgY29ubmVjdGlvbicpCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uVGVybWlu
YXRlZEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
JXMnLCBlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5kaXNwYXRjaF9tZXNzYWdlKG1lc3NhZ2UpCi0g
ICAgICAgICAgICBleGNlcHQgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IgYXMgZToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24oCi0gICAg
ICAgICAgICAgICAgICAgIGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCi0gICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBMb2dpY2FsQ2hhbm5lbEVycm9yIGFzIGU6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9sb2dpY2FsX2NoYW5uZWwoCi0gICAg
ICAgICAgICAgICAgICAgIGUuY2hhbm5lbF9pZCwgZS5kcm9wX2NvZGUsIGUubWVzc2FnZSkKLSAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgICAgICAgICBicmVh
awotCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQot
Y2xhc3MgX1dvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKLQotICAgICIiIkEgdGhyZWFkIHRoYXQg
aXMgcmVzcG9uc2libGUgZm9yIHJ1bm5pbmcgdGhlIGNvcnJlc3BvbmRpbmcgYXBwbGljYXRpb24K
LSAgICBoYW5kbGVyLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG11eF9oYW5k
bGVyLCByZXF1ZXN0KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2Uu
Ci0gICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2UuCi0gICAgICAg
ICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNl
bGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlciA9IG11eF9oYW5kbGVyCi0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0
Ci0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0xvZ2ljYWwgY2hhbm5lbCB3b3JrZXIgc3RhcnRlZC4g
KGlkPSVkKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE5vbi1jcml0aWNhbCBleGNlcHRp
b25zIHdpbGwgYmUgaGFuZGxlZCBieSBkaXNwYXRjaGVyLgotICAgICAgICAgICAgc2VsZi5fbXV4
X2hhbmRsZXIuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHNlbGYuX3JlcXVlc3QpCi0gICAgICAg
IGV4Y2VwdCBMb2dpY2FsQ2hhbm5lbEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLl9tdXhf
aGFuZGxlci5mYWlsX2xvZ2ljYWxfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBlLmNoYW5uZWxf
aWQsIGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd29ya2VyX2RvbmUoc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkKQotCi0KLWNsYXNzIF9NdXhIYW5kc2hha2VyKGh5YmkuSGFuZHNoYWtlcik6Ci0KLSAg
ICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIG11bHRpcGxleGluZy4iIiIKLQot
ICAgIF9EVU1NWV9XRUJTT0NLRVRfS0VZID0gJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzZW5kX3F1b3RhLCBy
ZWNlaXZlX3F1b3RhKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2Uu
Ci0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIGluc3RhbmNlIChkaXNwYXRjaC5E
aXNwYXRjaGVyKS4KLSAgICAgICAgICAgIHNlbmRfcXVvdGE6IEluaXRpYWwgc2VuZCBxdW90YS4K
LSAgICAgICAgICAgIHJlY2VpdmVfcXVvdGE6IEluaXRpYWwgcmVjZWl2ZSBxdW90YS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGh5YmkuSGFuZHNoYWtlci5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBk
aXNwYXRjaGVyKQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAg
ICBzZWxmLl9yZWNlaXZlX3F1b3RhID0gcmVjZWl2ZV9xdW90YQotCi0gICAgICAgICMgQXBwZW5k
IGhlYWRlcnMgd2hpY2ggc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBoYW5kc2hha2UgZmllbGQg
b2YKLSAgICAgICAgIyBBZGRDaGFubmVsUmVxdWVzdC4KLSAgICAgICAgIyBUT0RPKGJhc2hpKTog
TWFrZSBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiB3aGVuCi0gICAgICAg
ICMgICAgIHRoZXNlIGhlYWRlcnMgYXJlIGluY2x1ZGVkIGFscmVhZHkuCi0gICAgICAgIHJlcXVl
c3QuaGVhZGVyc19pbltjb21tb24uVVBHUkFERV9IRUFERVJdID0gKAotICAgICAgICAgICAgY29t
bW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCi0gICAgICAgIHJlcXVlc3QuaGVhZGVyc19pbltj
b21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBzdHIo
Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QpKQotICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5b
Y29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBzZWxmLl9E
VU1NWV9XRUJTT0NLRVRfS0VZKQotCi0gICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9vcHRpb25zKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5IYW5kc2hha2VyLl9jcmVhdGVf
c3RyZWFtLiIiIgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIGxvZ2ljYWwg
c3RyZWFtIGZvciAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC5jaGFubmVsX2lkKQotICAgICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCi0gICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90YSwKLSAgICAg
ICAgICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2Vf
cmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5fY3JlYXRl
X2hhbmRzaGFrZV9yZXNwb25zZS4iIiIKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAgICAg
IHJlc3BvbnNlLmFwcGVuZCgnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJykK
LQotICAgICAgICAjIFVwZ3JhZGUgYW5kIFNlYy1XZWJTb2NrZXQtQWNjZXB0IHNob3VsZCBiZSBl
eGNsdWRlZC4KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAlICgKLSAgICAg
ICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElP
Tl9UWVBFKSkKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCi0gICAgICAg
ICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSLAotICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQotICAgICAgICBpZiAoc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgbGVuKHNlbGYu
X3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBl
bmQoJyVzOiAlc1xyXG4nICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VU
X0VYVEVOU0lPTlNfSEVBREVSLAotICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5z
aW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKLSAgICAgICAgcmVzcG9uc2UuYXBw
ZW5kKCdcclxuJykKLQotICAgICAgICByZXR1cm4gJycuam9pbihyZXNwb25zZSkKLQotICAgIGRl
ZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHli
aS5IYW5kc2hha2VyLl9zZW5kX2hhbmRzaGFrZS4iIiIKLSAgICAgICAgIyBEb24ndCBzZW5kIGhh
bmRzaGFrZSByZXNwb25zZSBmb3IgdGhlIGRlZmF1bHQgY2hhbm5lbAotICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LmNoYW5uZWxfaWQgPT0gX0RFRkFVTFRfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIGhhbmRzaGFrZV9yZXNwb25zZSA9IHNlbGYuX2NyZWF0ZV9oYW5k
c2hha2VfcmVzcG9uc2UoYWNjZXB0KQotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9hZGRf
Y2hhbm5lbF9yZXNwb25zZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LmNoYW5uZWxfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlX3Jlc3BvbnNl
KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgaGFuZHNoYWtlIHJlc3BvbnNl
IGZvciAlZDogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0
LmNoYW5uZWxfaWQsIGZyYW1lX2RhdGEpKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLQotY2xhc3MgX0xvZ2ljYWxDaGFu
bmVsRGF0YShvYmplY3QpOgotCi0gICAgIiIiQSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyBpbmZvcm1h
dGlvbiBhYm91dCBsb2dpY2FsIGNoYW5uZWwuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cmVxdWVzdCwgd29ya2VyKToKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAg
ICBzZWxmLndvcmtlciA9IHdvcmtlcgotICAgICAgICBzZWxmLmRyb3BfY29kZSA9IF9EUk9QX0NP
REVfTk9STUFMX0NMT1NVUkUKLSAgICAgICAgc2VsZi5kcm9wX21lc3NhZ2UgPSAnJwotCi0KLWNs
YXNzIF9IYW5kc2hha2VEZWx0YUJhc2Uob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIHRoYXQgaG9s
ZHMgaW5mb3JtYXRpb24gZm9yIGRlbHRhLWVuY29kZWQgaGFuZHNoYWtlLiIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhlYWRlcnMpOgotICAgICAgICBzZWxmLl9oZWFkZXJzID0gaGVhZGVy
cwotCi0gICAgZGVmIGNyZWF0ZV9oZWFkZXJzKHNlbGYsIGRlbHRhPU5vbmUpOgotICAgICAgICAi
IiJDcmVhdGVzIHJlcXVlc3QgaGVhZGVycyBmb3IgYW4gQWRkQ2hhbm5lbFJlcXVlc3QgdGhhdCBo
YXMKLSAgICAgICAgZGVsdGEtZW5jb2RlZCBoYW5kc2hha2UuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIGRlbHRhOiBoZWFkZXJzIHNob3VsZCBiZSBvdmVycmlkZGVuLgotICAgICAgICAi
IiIKLQotICAgICAgICBoZWFkZXJzID0gY29weS5jb3B5KHNlbGYuX2hlYWRlcnMpCi0gICAgICAg
IGlmIGRlbHRhOgotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGVsdGEuaXRlbXMoKToK
LSAgICAgICAgICAgICAgICAjIFRoZSBzcGVjIHJlcXVpcmVzIHRoYXQgYSBoZWFkZXIgd2l0aCBh
biBlbXB0eSB2YWx1ZSBpcwotICAgICAgICAgICAgICAgICMgcmVtb3ZlZCBmcm9tIHRoZSBkZWx0
YSBiYXNlLgotICAgICAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMCBhbmQgaGVhZGVycy5o
YXNfa2V5KGtleSk6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBoZWFkZXJzW2tleV0KLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1
ZQotICAgICAgICByZXR1cm4gaGVhZGVycwotCi0KLWNsYXNzIF9NdXhIYW5kbGVyKG9iamVjdCk6
Ci0gICAgIiIiTXVsdGlwbGV4aW5nIGhhbmRsZXIuIFdoZW4gYSBoYW5kbGVyIHN0YXJ0cywgaXQg
bGF1bmNoZXMgdGhyZWUKLSAgICB0aHJlYWRzOyB0aGUgcmVhZGVyIHRocmVhZCwgdGhlIHdyaXRl
ciB0aHJlYWQsIGFuZCBhIHdvcmtlciB0aHJlYWQuCi0KLSAgICBUaGUgcmVhZGVyIHRocmVhZCBy
ZWFkcyBkYXRhIGZyb20gdGhlIHBoeXNpY2FsIHN0cmVhbSwgaS5lLiwgdGhlCi0gICAgd3Nfc3Ry
ZWFtIG9iamVjdCBvZiB0aGUgdW5kZXJseWluZyB3ZWJzb2NrZXQgY29ubmVjdGlvbi4gVGhlIHJl
YWRlcgotICAgIHRocmVhZCBpbnRlcnByZXRzIG11bHRpcGxleGVkIGZyYW1lcyBhbmQgZGlzcGF0
Y2hlcyB0aGVtIHRvIGxvZ2ljYWwKLSAgICBjaGFubmVscy4gTWV0aG9kcyBvZiB0aGlzIGNsYXNz
IGFyZSBtb3N0bHkgY2FsbGVkIGJ5IHRoZSByZWFkZXIgdGhyZWFkLgotCi0gICAgVGhlIHdyaXRl
ciB0aHJlYWQgc2VuZHMgbXVsdGlwbGV4ZWQgZnJhbWVzIHdoaWNoIGFyZSBjcmVhdGVkIGJ5Ci0g
ICAgbG9naWNhbCBjaGFubmVscyB2aWEgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICBU
aGUgd29ya2VyIHRocmVhZCBsYXVuY2hlZCBhdCB0aGUgc3RhcnRpbmcgcG9pbnQgaGFuZGxlcyB0
aGUKLSAgICAiSW1wbGljaXRseSBPcGVuZWQgQ29ubmVjdGlvbiIuIElmIG11bHRpcGxleGluZyBo
YW5kbGVyIHJlY2VpdmVzCi0gICAgYW4gQWRkQ2hhbm5lbFJlcXVlc3QgYW5kIGFjY2VwdHMgaXQs
IHRoZSBoYW5kbGVyIHdpbGwgbGF1bmNoIGEgbmV3IHdvcmtlcgotICAgIHRocmVhZCBhbmQgZGlz
cGF0Y2ggdGhlIHJlcXVlc3QgdG8gaXQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFu
Y2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVx
dWVzdCBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6
IERpc3BhdGNoZXIgaW5zdGFuY2UgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgotICAgICAgICAiIiIK
LQotICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYu
ZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLSAgICAgICAgc2VsZi5waHlzaWNhbF9jb25uZWN0aW9u
ID0gcmVxdWVzdC5jb25uZWN0aW9uCi0gICAgICAgIHNlbGYucGh5c2ljYWxfc3RyZWFtID0gcmVx
dWVzdC53c19zdHJlYW0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9n
Z2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMgPSB7fQotICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQot
ICAgICAgICAjIEhvbGRzIGNsaWVudCdzIGluaXRpYWwgcXVvdGEKLSAgICAgICAgc2VsZi5fY2hh
bm5lbF9zbG90cyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtl
X2Jhc2UgPSBOb25lCi0gICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9
IEZhbHNlCi0gICAgICAgIHNlbGYuX3JlYWRlciA9IE5vbmUKLSAgICAgICAgc2VsZi5fd3JpdGVy
ID0gTm9uZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICAiIiJTdGFydHMgdGhlIGhh
bmRsZXIuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgTXV4VW5leHBlY3RlZEV4Y2Vw
dGlvbjogd2hlbiB0aGUgaGFuZGxlciBhbHJlYWR5IHN0YXJ0ZWQsIG9yIHdoZW4KLSAgICAgICAg
ICAgICAgICBvcGVuaW5nIGhhbmRzaGFrZSBvZiB0aGUgZGVmYXVsdCBjaGFubmVsIGZhaWxzLgot
ICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkZXIgb3Igc2VsZi5fd3JpdGVyOgot
ICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbignTXV4SGFuZGxlciBhbHJl
YWR5IHN0YXJ0ZWQnKQotCi0gICAgICAgIHNlbGYuX3JlYWRlciA9IF9QaHlzaWNhbENvbm5lY3Rp
b25SZWFkZXIoc2VsZikKLSAgICAgICAgc2VsZi5fd3JpdGVyID0gX1BoeXNpY2FsQ29ubmVjdGlv
bldyaXRlcihzZWxmKQotICAgICAgICBzZWxmLl9yZWFkZXIuc3RhcnQoKQotICAgICAgICBzZWxm
Ll93cml0ZXIuc3RhcnQoKQotCi0gICAgICAgICMgQ3JlYXRlICJJbXBsaWNpdGx5IE9wZW5lZCBD
b25uZWN0aW9uIi4KLSAgICAgICAgbG9naWNhbF9jb25uZWN0aW9uID0gX0xvZ2ljYWxDb25uZWN0
aW9uKHNlbGYsIF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0gICAgICAgIGhlYWRlcnMgPSBjb3B5LmNv
cHkoc2VsZi5vcmlnaW5hbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAgICAgICMgQWRkIGV4dGVu
c2lvbnMgZm9yIGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAgICAgaGVhZGVyc1tjb21tb24uU0VDX1dF
QlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUl0gPSAoCi0gICAgICAgICAgICBjb21tb24uZm9ybWF0
X2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9yZXF1ZXN0Lm11eF9w
cm9jZXNzb3IuZXh0ZW5zaW9ucygpKSkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2UgPSBf
SGFuZHNoYWtlRGVsdGFCYXNlKGhlYWRlcnMpCi0gICAgICAgIGxvZ2ljYWxfcmVxdWVzdCA9IF9M
b2dpY2FsUmVxdWVzdCgKLSAgICAgICAgICAgIF9ERUZBVUxUX0NIQU5ORUxfSUQsCi0gICAgICAg
ICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QubWV0aG9kLAotICAgICAgICAgICAgc2VsZi5vcmln
aW5hbF9yZXF1ZXN0LnVyaSwKLSAgICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5wcm90
b2NvbCwKLSAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlLmNyZWF0ZV9oZWFkZXJzKCks
Ci0gICAgICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24pCi0gICAgICAgICMgQ2xpZW50J3Mgc2Vu
ZCBxdW90YSBmb3IgdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNvbm5lY3Rpb24gaXMgemVybywKLSAg
ICAgICAgIyBidXQgd2Ugd2lsbCBzZW5kIEZsb3dDb250cm9sIGxhdGVyIHNvIHNldCB0aGUgaW5p
dGlhbCBxdW90YSB0bwotICAgICAgICAjIF9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQuCi0gICAg
ICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMuYXBwZW5kKF9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQp
Ci0gICAgICAgIHNlbmRfcXVvdGEgPSBzZWxmLm9yaWdpbmFsX3JlcXVlc3QubXV4X3Byb2Nlc3Nv
ci5xdW90YSgpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9kb19oYW5kc2hha2VfZm9yX2xvZ2ljYWxf
cmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdCwgc2VuZF9xdW90YT1zZW5kX3F1
b3RhKToKLSAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ0ZhaWxlZCBoYW5kc2hha2Ugb24gdGhlIGRlZmF1bHQgY2hhbm5lbCBpZCcpCi0g
ICAgICAgIHNlbGYuX2FkZF9sb2dpY2FsX2NoYW5uZWwobG9naWNhbF9yZXF1ZXN0KQotCi0gICAg
ICAgICMgU2VuZCBGbG93Q29udHJvbCBmb3IgdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNvbm5lY3Rp
b24uCi0gICAgICAgIGZyYW1lX2RhdGEgPSBfY3JlYXRlX2Zsb3dfY29udHJvbChfREVGQVVMVF9D
SEFOTkVMX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lO
SVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLSAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgYWRkX2NoYW5uZWxf
c2xvdHMoc2VsZiwgc2xvdHMsIHNlbmRfcXVvdGEpOgotICAgICAgICAiIiJBZGRzIGNoYW5uZWwg
c2xvdHMuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHNsb3RzOiBudW1iZXIgb2Ygc2xv
dHMgdG8gYmUgYWRkZWQuCi0gICAgICAgICAgICBzZW5kX3F1b3RhOiBpbml0aWFsIHNlbmQgcXVv
dGEgZm9yIHNsb3RzLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3Rz
LmV4dGVuZChbc2VuZF9xdW90YV0gKiBzbG90cykKLSAgICAgICAgIyBTZW5kIE5ld0NoYW5uZWxT
bG90IHRvIGNsaWVudC4KLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfbmV3X2NoYW5uZWxf
c2xvdChzbG90cywgc2VuZF9xdW90YSkKLSAgICAgICAgc2VsZi5zZW5kX2NvbnRyb2xfZGF0YShm
cmFtZV9kYXRhKQotCi0gICAgZGVmIHdhaXRfdW50aWxfZG9uZShzZWxmLCB0aW1lb3V0PU5vbmUp
OgotICAgICAgICAiIiJXYWl0cyB1bnRpbCBhbGwgd29ya2VycyBhcmUgZG9uZS4gUmV0dXJucyBG
YWxzZSB3aGVuIHRpbWVvdXQgaGFzCi0gICAgICAgIG9jY3VycmVkLiBSZXR1cm5zIFRydWUgb24g
c3VjY2Vzcy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGltZW91dDogdGltZW91dCBp
biBzZWMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBsZW4oc2Vs
Zi5fbG9naWNhbF9jaGFubmVscykgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnV2FpdGluZyB3b3JrZXJzKCVkKS4uLicgJQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZW4oc2VsZi5fbG9naWNhbF9jaGFubmVscykpCi0gICAgICAgICAgICAgICAg
c2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkID0gRmFsc2UKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi53YWl0KHRpbWVvdXQpCi0gICAgICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZDoKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXYWl0aW5nIHdvcmtlcihzKSB0aW1l
ZCBvdXQnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2Uo
KQotCi0gICAgICAgICMgRmx1c2ggcGVuZGluZyBvdXRnb2luZyBkYXRhCi0gICAgICAgIHNlbGYu
X3dyaXRlci5zdG9wKCkKLSAgICAgICAgc2VsZi5fd3JpdGVyLmpvaW4oKQotCi0gICAgICAgIHJl
dHVybiBUcnVlCi0KLSAgICBkZWYgbm90aWZ5X3dyaXRlX2RhdGFfZG9uZShzZWxmLCBjaGFubmVs
X2lkKToKLSAgICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSB3cml0ZXIgdGhyZWFkIHdoZW4gYSB3cml0
ZSBvcGVyYXRpb24gaGFzIGRvbmUuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ6IG9iamVjdGl2ZSBjaGFubmVsIGlkLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkK
LSAgICAgICAgICAgIGlmIGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAg
ICAgICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5u
ZWxfaWRdCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5v
bl93cml0ZV9kYXRhX2RvbmUoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1NlZW1zIHRoYXQgbG9naWNhbCBjaGFubmVsIGZvciAlZCBoYXMg
Z29uZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjaGFubmVsX2lkKQot
ICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25k
aXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgc2VuZF9jb250cm9sX2RhdGEoc2VsZiwgZGF0YSk6
Ci0gICAgICAgICIiIlNlbmRzIGRhdGEgdmlhIHRoZSBjb250cm9sIGNoYW5uZWwuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGRhdGE6IGRhdGEgdG8gYmUgc2VudC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5fd3JpdGVyLnB1dF9vdXRnb2luZ19kYXRhKF9PdXRnb2luZ0RhdGEo
Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZD1fQ09OVFJPTF9DSEFOTkVMX0lELCBkYXRhPWRh
dGEpKQotCi0gICAgZGVmIHNlbmRfZGF0YShzZWxmLCBjaGFubmVsX2lkLCBkYXRhKToKLSAgICAg
ICAgIiIiU2VuZHMgZGF0YSB2aWEgZ2l2ZW4gbG9naWNhbCBjaGFubmVsLiBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgYnkKLSAgICAgICAgd29ya2VyIHRocmVhZHMuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ6IG9iamVjdGl2ZSBjaGFubmVsIGlkLgotICAgICAgICAgICAg
ZGF0YTogZGF0YSB0byBiZSBzZW50LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl93cml0
ZXIucHV0X291dGdvaW5nX2RhdGEoX091dGdvaW5nRGF0YSgKLSAgICAgICAgICAgICAgICBjaGFu
bmVsX2lkPWNoYW5uZWxfaWQsIGRhdGE9ZGF0YSkpCi0KLSAgICBkZWYgX3NlbmRfZHJvcF9jaGFu
bmVsKHNlbGYsIGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6Ci0gICAgICAgIGZy
YW1lX2RhdGEgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNzYWdl
KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnU2VuZGluZyBkcm9w
IGNoYW5uZWwgZm9yIGNoYW5uZWwgaWQgJWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5z
ZW5kX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0gICAgZGVmIF9zZW5kX2Vycm9yX2FkZF9j
aGFubmVsX3Jlc3BvbnNlKHNlbGYsIGNoYW5uZWxfaWQsIHN0YXR1cz1Ob25lKToKLSAgICAgICAg
aWYgc3RhdHVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0dXMgPSBjb21tb24uSFRUUF9TVEFU
VVNfQkFEX1JFUVVFU1QKLQotICAgICAgICBpZiBzdGF0dXMgaW4gX0hUVFBfQkFEX1JFU1BPTlNF
X01FU1NBR0VTOgotICAgICAgICAgICAgbWVzc2FnZSA9IF9IVFRQX0JBRF9SRVNQT05TRV9NRVNT
QUdFU1tzdGF0dXNdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ1Jlc3BvbnNlIG1lc3NhZ2UgZm9yICVkIGlzIG5vdCBmb3VuZCcgJSBzdGF0dXMpCi0gICAg
ICAgICAgICBtZXNzYWdlID0gJz8/PycKLQotICAgICAgICByZXNwb25zZSA9ICdIVFRQLzEuMSAl
ZCAlc1xyXG5cclxuJyAlIChzdGF0dXMsIG1lc3NhZ2UpCi0gICAgICAgIGZyYW1lX2RhdGEgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxfaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPXJlc3Bv
bnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmNvZGluZz0wLCByZWplY3RlZD1UcnVlKQotICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9kYXRh
KGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9sb2dpY2FsX3JlcXVlc3Qoc2VsZiwgYmxv
Y2spOgotICAgICAgICBpZiBibG9jay5jaGFubmVsX2lkID09IF9DT05UUk9MX0NIQU5ORUxfSUQ6
Ci0gICAgICAgICAgICAjIFRPRE8oYmFzaGkpOiBSYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
ciB3aXRoIGNvZGUgMjAwNgotICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIE11eFVuZXhwZWN0ZWRF
eGNlcHRpb24uCi0gICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICdSZWNlaXZlZCB0aGUgY29udHJvbCBjaGFubmVsIGlkICgwKSBhcyBvYmpl
Y3RpdmUgY2hhbm5lbCAnCi0gICAgICAgICAgICAgICAgJ2lkIGZvciBBZGRDaGFubmVsJykKLQot
ICAgICAgICBpZiBibG9jay5lbmNvZGluZyA+IF9IQU5EU0hBS0VfRU5DT0RJTkdfREVMVEE6Ci0g
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAg
ICBfRFJPUF9DT0RFX1VOS05PV05fUkVRVUVTVF9FTkNPRElORykKLQotICAgICAgICBtZXRob2Qs
IHBhdGgsIHZlcnNpb24sIGhlYWRlcnMgPSBfcGFyc2VfcmVxdWVzdF90ZXh0KAotICAgICAgICAg
ICAgYmxvY2suZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIGlmIGJsb2NrLmVuY29kaW5nID09
IF9IQU5EU0hBS0VfRU5DT0RJTkdfREVMVEE6Ci0gICAgICAgICAgICBoZWFkZXJzID0gc2VsZi5f
aGFuZHNoYWtlX2Jhc2UuY3JlYXRlX2hlYWRlcnMoaGVhZGVycykKLQotICAgICAgICBjb25uZWN0
aW9uID0gX0xvZ2ljYWxDb25uZWN0aW9uKHNlbGYsIGJsb2NrLmNoYW5uZWxfaWQpCi0gICAgICAg
IHJlcXVlc3QgPSBfTG9naWNhbFJlcXVlc3QoYmxvY2suY2hhbm5lbF9pZCwgbWV0aG9kLCBwYXRo
LCB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsIGNv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybiByZXF1ZXN0Ci0KLSAgICBkZWYgX2RvX2hhbmRzaGFr
ZV9mb3JfbG9naWNhbF9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIHNlbmRfcXVvdGE9MCk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJlY2VpdmVfcXVvdGEgPSBzZWxmLl9jaGFubmVsX3Nsb3Rz
LnBvcGxlZnQoKQotICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgIHJhaXNl
IExvZ2ljYWxDaGFubmVsRXJyb3IoCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jaGFubmVsX2lk
LCBfRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklPTEFUSU9OKQotCi0gICAgICAgIGhhbmRz
aGFrZXIgPSBfTXV4SGFuZHNoYWtlcihyZXF1ZXN0LCBzZWxmLmRpc3BhdGNoZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3F1b3RhLCByZWNlaXZlX3F1b3RhKQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAg
ICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3Jf
YWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jaGFubmVsX2lk
LCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uIGFz
IGU6Ci0gICAgICAgICAgICAjIFRPRE8oYmFzaGkpOiBTaG91bGQgd2UgX0ZhaWwgdGhlIExvZ2lj
YWwgQ2hhbm5lbF8gd2l0aCAzMDAxCi0gICAgICAgICAgICAjIGluc3RlYWQ/Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJv
cl9hZGRfY2hhbm5lbF9yZXNwb25zZShyZXF1ZXN0LmNoYW5uZWxfaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1lLnN0YXR1cykKLSAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRC
eVVzZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCclcycs
IGUpCi0gICAgICAgICAgICBzZWxmLl9zZW5kX2Vycm9yX2FkZF9jaGFubmVsX3Jlc3BvbnNlKHJl
cXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJl
dHVybiBUcnVlCi0KLSAgICBkZWYgX2FkZF9sb2dpY2FsX2NoYW5uZWwoc2VsZiwgbG9naWNhbF9y
ZXF1ZXN0KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBsb2dpY2FsX3JlcXVlc3QuY2hh
bm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ2hhbm5lbCBpZCAlZCBhbHJlYWR5IGV4aXN0cycgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAg
ICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RTLAotICAgICAgICAgICAg
ICAgICAgICAnQ2hhbm5lbCBpZCAlZCBhbHJlYWR5IGV4aXN0cycgJQotICAgICAgICAgICAgICAg
ICAgICBsb2dpY2FsX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHdvcmtlciA9IF9X
b3JrZXIoc2VsZiwgbG9naWNhbF9yZXF1ZXN0KQotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0g
X0xvZ2ljYWxDaGFubmVsRGF0YShsb2dpY2FsX3JlcXVlc3QsIHdvcmtlcikKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbbG9naWNhbF9yZXF1ZXN0LmNoYW5uZWxfaWRdID0gY2hh
bm5lbF9kYXRhCi0gICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgX3Byb2Nlc3NfYWRkX2NoYW5uZWxfcmVxdWVzdChzZWxmLCBibG9jayk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdCA9IHNlbGYuX2NyZWF0ZV9sb2dp
Y2FsX3JlcXVlc3QoYmxvY2spCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbG9naWNhbCByZXF1
ZXN0OiAlcicgJSBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9y
ZXNwb25zZSgKLSAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBzdGF0dXM9Y29tbW9u
LkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlm
IHNlbGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KGxvZ2ljYWxfcmVxdWVzdCk6
Ci0gICAgICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VOQ09ESU5HX0lE
RU5USVRZOgotICAgICAgICAgICAgICAgICMgVXBkYXRlIGhhbmRzaGFrZSBiYXNlLgotICAgICAg
ICAgICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGlzIGlzIHRoZSByaWdodCBwbGFj
ZSB0byB1cGRhdGUKLSAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBiYXNlLgotICAgICAgICAg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFzZSgKLSAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAgICAgICAgICBz
ZWxmLl9hZGRfbG9naWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAg
ICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19C
QURfUkVRVUVTVCkKLQotICAgIGRlZiBfcHJvY2Vzc19mbG93X2NvbnRyb2woc2VsZiwgYmxvY2sp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVsX2lkIGluIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAg
ICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2NrLmNoYW5uZWxfaWRd
Ci0gICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0ucmVwbGVuaXNoX3Nl
bmRfcXVvdGEoCi0gICAgICAgICAgICAgICAgYmxvY2suc2VuZF9xdW90YSkKLSAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVh
c2UoKQotCi0gICAgZGVmIF9wcm9jZXNzX2Ryb3BfY2hhbm5lbChzZWxmLCBibG9jayk6Ci0gICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdEcm9wQ2hhbm5lbCByZWNlaXZl
ZCBmb3IgJWQ6IGNvZGU9JXIsIHJlYXNvbj0lcicgJQotICAgICAgICAgICAgKGJsb2NrLmNoYW5u
ZWxfaWQsIGJsb2NrLmRyb3BfY29kZSwgYmxvY2suZHJvcF9tZXNzYWdlKSkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgp
Ci0gICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5lbF9kYXRh
ID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAgICAgICAgICAg
Y2hhbm5lbF9kYXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VECi0KLSAgICAg
ICAgICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAgY2hhbm5lbF9k
YXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICBf
TG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgIGNoYW5uZWxf
ZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgX3Byb2Nlc3NfY29udHJvbF9ibG9ja3Moc2VsZiwgcGFyc2VyKToKLSAgICAgICAg
Zm9yIGNvbnRyb2xfYmxvY2sgaW4gcGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKToKLSAgICAg
ICAgICAgIG9wY29kZSA9IGNvbnRyb2xfYmxvY2sub3Bjb2RlCi0gICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ2NvbnRyb2wgYmxvY2sgcmVjZWl2ZWQsIG9wY29kZTogJWQnICUgb3Bjb2Rl
KQotICAgICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVF
U1Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KGNv
bnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05U
Uk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgQWRkQ2hhbm5lbFJlc3Bv
bnNlJykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJP
TDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Zsb3dfY29udHJvbChjb250cm9sX2Js
b2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
OgotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfZHJvcF9jaGFubmVsKGNvbnRyb2xfYmxv
Y2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9T
TE9UOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAg
ICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0g
ICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBOZXdDaGFubmVsU2xvdCcpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZSAlcicgJSBvcGNvZGUpCi0KLSAg
ICBkZWYgX3Byb2Nlc3NfbG9naWNhbF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBwYXJzZXIpOgot
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgZnJhbWUuIGNoYW5uZWwgaWQ9
JWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5l
bF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICMgV2UgbXVz
dCBpZ25vcmUgdGhlIG1lc3NhZ2UgZm9yIGFuIGluYWN0aXZlIGNoYW5uZWwuCi0gICAgICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzW2NoYW5uZWxfaWRdCi0gICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9w
Y29kZSwgcGF5bG9hZCA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAgICAgIGNv
bnN1bWluZ19ieXRlID0gbGVuKHBheWxvYWQpCi0gICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29t
bW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUg
Kz0gMQotICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5j
b25zdW1lX3JlY2VpdmVfcXVvdGEoCi0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUpOgot
ICAgICAgICAgICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xvc2UgbG9naWNh
bCBjaGFubmVsLgotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVsRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9M
QVRJT04pCi0gICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBh
eWxvYWQpLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2s9RmFsc2UpCi0gICAgICAgICAgICBmcmFtZV9kYXRhID0gaGVhZGVyICsg
cGF5bG9hZAotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5hcHBl
bmRfZnJhbWVfZGF0YShmcmFtZV9kYXRhKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgZGlz
cGF0Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiRGlzcGF0Y2hlcyBtZXNz
YWdlLiBUaGUgcmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMgZW5jYXBzdWxh
dGVkIGZyYW1lLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcjogaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKLSAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uIGxldmVsIGVycm9ycy4KLSAgICAgICAgICAgIExvZ2ljYWxDaGFubmVsRXJy
b3I6IGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAg
ICAgIGxldmVsIGVycm9ycy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcGFyc2VyID0gX011eEZy
YW1lUGF5bG9hZFBhcnNlcihtZXNzYWdlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGFu
bmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJP
UF9DT0RFX0NIQU5ORUxfSURfVFJVTkNBVEVEKQotICAgICAgICBpZiBjaGFubmVsX2lkID09IF9D
T05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2NvbnRyb2xfYmxv
Y2tzKHBhcnNlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkLCBwYXJzZXIpCi0KLSAgICBkZWYgbm90aWZ5X3dvcmtlcl9k
b25lKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICAiIiJDYWxsZWQgd2hlbiBhIHdvcmtlciBo
YXMgZmluaXNoZWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ6IGNo
YW5uZWwgaWQgY29ycmVzcG9uZGVkIHdpdGggdGhlIHdvcmtlci4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXb3JrZXIgZm9yIGNoYW5uZWwgaWQgJWQgdGVybWlu
YXRlZCcgJSBjaGFubmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBjaGFu
bmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
TXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0NoYW5uZWwgaWQg
JWQgbm90IGZvdW5kJyAlIGNoYW5uZWxfaWQpCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzLnBvcChjaGFubmVsX2lkKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkID0gVHJ1ZQotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ubm90aWZ5KCkKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAg
ICAgIGlmIG5vdCBjaGFubmVsX2RhdGEucmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAg
ICAgICAgIHNlbGYuX3NlbmRfZHJvcF9jaGFubmVsKAotICAgICAgICAgICAgICAgIGNoYW5uZWxf
aWQsIGNvZGU9Y2hhbm5lbF9kYXRhLmRyb3BfY29kZSwKLSAgICAgICAgICAgICAgICBtZXNzYWdl
PWNoYW5uZWxfZGF0YS5kcm9wX21lc3NhZ2UpCi0KLSAgICBkZWYgbm90aWZ5X3JlYWRlcl9kb25l
KHNlbGYpOgotICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIHJlYWRlciB0
aHJlYWQgd2hlbiB0aGUgcmVhZGVyIGhhcwotICAgICAgICBmaW5pc2hlZC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1Rlcm1pYXRpbmcg
YWxsIGxvZ2ljYWwgY29ubmVjdGlvbnMgd2FpdGluZyBmb3IgaW5jb21pbmcgZGF0YSAnCi0gICAg
ICAgICAgICAnLi4uJykKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgIGZvciBjaGFubmVsX2RhdGEgaW4gc2VsZi5fbG9naWNhbF9jaGFu
bmVscy52YWx1ZXMoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGFubmVs
X2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKAotICAgICAgICAgICAgICAg
ICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIG5vdGlmeV93cml0ZXJfZG9uZShzZWxmKToKLSAgICAg
ICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSB3cml0ZXIgdGhyZWFkIHdoZW4gdGhl
IHdyaXRlciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJtaWF0aW5nIGFsbCBsb2dpY2FsIGNv
bm5lY3Rpb25zIHdhaXRpbmcgZm9yIHdyaXRlICcKLSAgICAgICAgICAgICdjb21wbGV0aW9uIC4u
LicpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMudmFsdWVz
KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVl
c3QuY29ubmVjdGlvbi5vbl93cml0ZXJfZG9uZSgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2suZm9ybWF0
X2V4YygpKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNl
KCkKLQotICAgIGRlZiBmYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24oc2VsZiwgY29kZSwgbWVzc2Fn
ZSk6Ci0gICAgICAgICIiIkZhaWwgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIGNvZGU6IGRyb3AgcmVhc29uIGNvZGUuCi0gICAgICAgICAgICBt
ZXNzYWdlOiBkcm9wIG1lc3NhZ2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnRmFpbGluZyB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4uLicpCi0gICAgICAgIHNl
bGYuX3NlbmRfZHJvcF9jaGFubmVsKF9DT05UUk9MX0NIQU5ORUxfSUQsIGNvZGUsIG1lc3NhZ2Up
Ci0gICAgICAgIHNlbGYuX3dyaXRlci5zdG9wKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9J
TlRfRVJST1IpCi0KLSAgICBkZWYgZmFpbF9sb2dpY2FsX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9p
ZCwgY29kZSwgbWVzc2FnZSk6Ci0gICAgICAgICIiIkZhaWwgYSBsb2dpY2FsIGNoYW5uZWwuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ6IGNoYW5uZWwgaWQuCi0gICAg
ICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAgICAgICAgbWVzc2FnZTogZHJv
cCBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Zh
aWxpbmcgbG9naWNhbCBjaGFubmVsICVkLi4uJyAlIGNoYW5uZWxfaWQpCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAg
ICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5l
bF9pZF0KLSAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBsb2dpY2FsIGNoYW5uZWwuIG5vdGlm
eV93b3JrZXJfZG9uZSgpIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAjIGNhbGxlZCBsYXRlciBh
bmQgaXQgd2lsbCBzZW5kIERyb3BDaGFubmVsLgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0
YS5kcm9wX2NvZGUgPSBjb2RlCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLmRyb3BfbWVz
c2FnZSA9IG1lc3NhZ2UKLQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNv
bm5lY3Rpb24uc2V0X3JlYWRfc3RhdGUoCi0gICAgICAgICAgICAgICAgICAgIF9Mb2dpY2FsQ29u
bmVjdGlvbi5TVEFURV9URVJNSU5BVEVEKQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5y
ZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNz
YWdlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24ucmVsZWFzZSgpCi0KLQotZGVmIHVzZV9tdXgocmVxdWVzdCk6Ci0gICAgcmV0
dXJuIGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9jZXNzb3InKSBhbmQgKAotICAgICAgICByZXF1
ZXN0Lm11eF9wcm9jZXNzb3IuaXNfYWN0aXZlKCkpCi0KLQotZGVmIHN0YXJ0KHJlcXVlc3QsIGRp
c3BhdGNoZXIpOgotICAgIG11eF9oYW5kbGVyID0gX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICBtdXhfaGFuZGxlci5hZGRfY2hh
bm5lbF9zbG90cyhfSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAg
bXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
Yzg3ODYwNjQ4ODkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIwOCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlN0YW5kYWxvbmUgV2ViU29ja2V0
IHNlcnZlci4KLQotVXNlIHRoaXMgZmlsZSB0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aG91dCBB
cGFjaGUgSFRUUCBTZXJ2ZXIuCi0KLQotQkFTSUMgVVNBR0UKLT09PT09PT09PT09Ci0KLUdvIHRv
IHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4KLQotICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+XQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tfaGFuZGxlcnM+XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQotCi08d3NfcG9ydD4g
aXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlvbi4KLQotPGRvY3Vt
ZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVz
LgotCi08d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KLUlmIG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290
PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRfXy5weSAob3IKLXJ1biAkIHB5ZG9jIG1vZF9weXdl
YnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBXZWJTb2NrZXQgaGFuZGxlcnMuCi0KLUZvciBtb3Jl
IGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywgcnVuCi0KLSAgJCBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCi0KLW9yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBt
ZXRob2QgYmVsb3cuCi0KLUZvciB0cm91YmxlIHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVs
IGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KLQotCi1UUlkgREVNTwotPT09PT09PT0KLQotR28gdG8g
dGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRv
IHNldCB0aGUKLWRvY3VtZW50IHJvb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1w
bGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2UgdGhpczoKLQotICAkIGNkIHNyYwotICAkIFBZVEhP
TlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQot
Ci10byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwg
b24gcG9ydCA4MC4gT3BlbgotaHR0cDovL2xvY2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRo
ZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21ldGhpbmcgaW50bwotdGhlIHRleHQgYm94IG5leHQg
dG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGljayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhp
bmcKLWlzIHdvcmtpbmcsIHlvdSdsbCBzZWUgdGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBi
eSB0aGUgc2VydmVyLgotCi0KLVVTSU5HIFRMUwotPT09PT09PT09Ci0KLVRvIHJ1biB0aGUgc3Rh
bmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3VwcG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQg
LWMKLW9wdGlvbnMuIFdoZW4gVExTIGlzIGVuYWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBh
Y2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24uCi0KLU5vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUg
aXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKLVRMUyBjb25u
ZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgot
Ci1FeGFtcGxlOgotCi0gICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3Rh
bmRhbG9uZS5weSBcCi0gICAgICAgIC1kIGV4YW1wbGUgXAotICAgICAgICAtcCAxMDQ0MyBcCi0g
ICAgICAgIC10IFwKLSAgICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIFwKLSAgICAgICAg
LWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVs
YXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCi11c2lu
ZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotVVNJTkcgQ0xJ
RU5UIEFVVEhFTlRJQ0FUSU9OCi09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVG8gcnVu
IHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRoIFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3Vw
cG9ydCwgcnVuIGl0IHdpdGgKLS0tdGxzLWNsaWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Eg
b3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVzIHJlcXVpcmVkIGZvcgotVExTIHN1cHBvcnQuCi0K
LUV4YW1wbGU6Ci0KLSAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0NDMgLXQgXAotICAgICAgICAtYyAuLi90ZXN0L2Nl
cnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotICAgICAgICAtLXRscy1jbGll
bnQtYXV0aCBcCi0gICAgICAgIC0tdGxzLWNsaWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBl
bQotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGll
bnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCi1yZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9v
dCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotQ09ORklHVVJBVElPTiBGSUxFCi09PT09PT09
PT09PT09PT09PT0KLQotWW91IGNhbiBhbHNvIHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFu
ZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUgcGF0aCB0bwotdGhlIGNvbmZpZ3VyYXRpb24gZmls
ZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFzZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQot
Zm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxp
YnJhcnkuIE5hbWUgb2YgZWFjaAotZW50cnkgbXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3Vt
ZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBsZXZlbCB0byBkZWJ1ZywKLWFkZCB0aGUgZm9sbG93
aW5nIGxpbmU6Ci0KLWxvZ19sZXZlbD1kZWJ1ZwotCi1Gb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0
IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29tZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgotLS10bHMg
b3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lOgotCi10bHM9VHJ1ZQotCi1Ob3RlIHRoYXQg
dGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlmIHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZh
bHVlIHBhcnQgaXMKLWZha2UuCi0KLVdoZW4gYm90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBh
bmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50cnkgYXJlIHNldCBmb3IKLXRoZSBzYW1lIGNvbmZp
Z3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQgbGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBp
biB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZS4KLQotCi1USFJFQURJTkcKLT09PT09PT09PQotCi1U
aGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20gc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLiBI
ZW5jZSBhIHRocmVhZCBpcwotdXNlZCBmb3IgZWFjaCByZXF1ZXN0LgotCi0KLVNFQ1VSSVRZIFdB
Uk5JTkcKLT09PT09PT09PT09PT09PT0KLQotVGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENH
SUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4KLUl0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRo
b24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFtcy4gSXQgc2hvdWxkIG5vdCBiZQotdXNlZCBvdXRz
aWRlIGEgZmlyZXdhbGwuCi0iIiIKLQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQU2Vy
dmVyCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgQ0dJSFRUUFNlcnZlcgotZnJvbSBzaXgubW92ZXMg
aW1wb3J0IFNpbXBsZUhUVFBTZXJ2ZXIKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBzb2NrZXRzZXJ2
ZXIKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBjb25maWdwYXJzZXIKLWltcG9ydCBiYXNlNjQKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudAotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBs
b2dnaW5nLmhhbmRsZXJzCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1p
bXBvcnQgc2VsZWN0Ci1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5n
Ci1pbXBvcnQgdGltZQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgotCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlz
cGF0Y2gKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgbWVtb3JpemluZ2ZpbGUKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1m
cm9tIG1vZF9weXdlYnNvY2tldC54aHJfYmVuY2htYXJrX2hhbmRsZXIgaW1wb3J0IFhIUkJlbmNo
bWFya0hhbmRsZXIKLQotCi1fREVGQVVMVF9MT0dfTUFYX0JZVEVTID0gMTAyNCAqIDI1NgotX0RF
RkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUKLQotX0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpF
ID0gMTI4Ci0KLSMgMTAyNCBpcyBwcmFjdGljYWxseSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBX
ZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgotX01BWF9NRU1PUklaRURfTElORVMgPSAxMDI0Ci0K
LSMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZX1NUQU5EQVJE
X01PRFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wnCi0KLQotY2xh
c3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9iamVjdCk6Ci0gICAgIiIiTWltaWMgbW9kX3B5dGhv
biBtcF9jb25uLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlcik6
Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGluc3Rh
bmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1
ZXN0X2hhbmRsZXIKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLQotICAgICAgICByZXR1cm4g
KHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKLSAgICBsb2NhbF9h
ZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRy
KHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4K
LQotICAgICAgICBTZXR0aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJl
Y2F1c2UgdGhlIHJlcXVlc3QKLSAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0
IHRoZXJlLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50
X2FkZHJlc3MKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQot
ICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiTWltaWMgbXBfY29ubi53cml0
ZSgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIud2ZpbGUud3Jp
dGUoZGF0YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk1pbWlj
IG1wX2Nvbm4ucmVhZCgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIucmZpbGUucmVhZChsZW5ndGgpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxm
KToKLSAgICAgICAgIiIiR2V0IG1lbW9yaXplZCBsaW5lcy4iIiIKLQotICAgICAgICByZXR1cm4g
c2VsZi5fcmVxdWVzdF9oYW5kbGVyLnJmaWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQotCi0KLWNs
YXNzIF9TdGFuZGFsb25lUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1pbWljIG1vZF9weXRob24g
cmVxdWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVz
ZV90bHMpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxl
ciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0g
cmVxdWVzdF9oYW5kbGVyCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29u
bmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCi0gICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxz
Ci0gICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCi0KLSAg
ICBkZWYgZ2V0X3VyaShzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3Qu
dXJpLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBS
ZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQotICAgICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1
cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9uCi0gICAgICAgIHJl
dHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRlciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBi
ZWhhdmlvciBpcwotICAgICAgICBrZXB0IGZvciBjb21wYXRpYmlsaXR5LgotICAgICAgICAiIiIK
LQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1cmkgPSBw
cm9wZXJ0eShnZXRfdXJpKQotCi0gICAgZGVmIGdldF91bnBhcnNlZF91cmkoc2VsZik6Ci0gICAg
ICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVucGFyc2VkX3VyaS4iIiIKLQotICAgICAg
ICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1bnBhcnNlZF91cmkgPSBw
cm9wZXJ0eShnZXRfdW5wYXJzZWRfdXJpKQotCi0gICAgZGVmIGdldF9tZXRob2Qoc2VsZik6Ci0g
ICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIKLQotICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKLSAgICBtZXRob2QgPSBwcm9wZXJ0
eShnZXRfbWV0aG9kKQotCi0gICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKLSAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIHJlcXVlc3QucHJvdG9jb2wuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNl
bGYuX3JlcXVlc3RfaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24KLSAgICBwcm90b2NvbCA9IHByb3Bl
cnR5KGdldF9wcm90b2NvbCkKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIi
TWltaWMgcmVxdWVzdC5pc19odHRwcygpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl91c2Vf
dGxzCi0KLQotZGVmIF9pbXBvcnRfc3NsKCk6Ci0gICAgZ2xvYmFsIHNzbAotICAgIHRyeToKLSAg
ICAgICAgaW1wb3J0IHNzbAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9pbXBvcnRfcHlvcGVuc3NsKCk6
Ci0gICAgZ2xvYmFsIE9wZW5TU0wKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBPcGVuU1NMLlNT
TAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAg
cmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uKG9iamVjdCk6
Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0aW9uIHRvCi0g
ICAgLSBwcm92aWRlIG1ha2VmaWxlIG1ldGhvZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo
ZSBjbGFzcwotICAgIC0gdHdlYWsgc2h1dGRvd24gbWV0aG9kIHNpbmNlIE9wZW5TU0wuU1NMLkNv
bm5lY3Rpb24uc2h1dGRvd24gZG9lc24ndAotICAgICAgYWNjZXB0IHRoZSAiaG93IiBhcmd1bWVu
dC4KLSAgICAtIGNvbnZlcnQgU3lzQ2FsbEVycm9yIGV4Y2VwdGlvbnMgdGhhdCBpdHMgcmVjdiBt
ZXRob2QgbWF5IHJhaXNlIGludG8gYQotICAgICAgcmV0dXJuIHZhbHVlIG9mICcnLCBtZWFuaW5n
IEVPRi4gV2UgY2Fubm90IG92ZXJ3cml0ZSB0aGUgcmVjdiBtZXRob2Qgb24KLSAgICAgIHNlbGYu
X2Nvbm5lY3Rpb24gc2luY2UgaXQncyBpbW11dGFibGUuCi0gICAgIiIiCi0KLSAgICBfT1ZFUlJJ
RERFTl9BVFRSSUJVVEVTID0gWydfY29ubmVjdGlvbicsICdtYWtlZmlsZScsICdzaHV0ZG93bics
ICdyZWN2J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uKToKLSAgICAgICAg
c2VsZi5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLQotICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9f
KHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluIF9TdGFuZGFsb25lU1NMQ29ubmVjdGlv
bi5fT1ZFUlJJRERFTl9BVFRSSUJVVEVTOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dl
dGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9u
Ll9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1l
LCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9P
VkVSUklEREVOX0FUVFJJQlVURVM6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0
cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5f
X3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKLQotICAgIGRlZiBtYWtlZmlsZShzZWxmLCBtb2RlPSdy
JywgYnVmc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzb2NrZXQuX2ZpbGVvYmplY3Qoc2VsZiwg
bW9kZSwgYnVmc2l6ZSkKLQotICAgIGRlZiBzaHV0ZG93bihzZWxmLCB1bnVzZWRfaG93KToKLSAg
ICAgICAgc2VsZi5fY29ubmVjdGlvbi5zaHV0ZG93bigpCi0KLSAgICBkZWYgcmVjdihzZWxmLCBi
dWZzaXplLCBmbGFncz0wKToKLSAgICAgICAgaWYgZmxhZ3MgIT0gMDoKLSAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ05vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkJykKLQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5yZWN2KGJ1ZnNpemUpCi0g
ICAgICAgIGV4Y2VwdCBPcGVuU1NMLlNTTC5TeXNDYWxsRXJyb3IgYXMgZToKLSAgICAgICAgICAg
IGlmIGUuYXJnc1swXSA9PSAtMToKLSAgICAgICAgICAgICAgICAjIFN1cHByZXNzICJ1bmV4cGVj
dGVkIEVPRiIgZXhjZXB0aW9uLiBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQKLSAgICAgICAgICAg
ICAgICAjIGZvciBTU0xfZ2V0X2Vycm9yLgotICAgICAgICAgICAgICAgIHJldHVybiAnJwotICAg
ICAgICAgICAgcmFpc2UKLQotCi1kZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNv
Y2tfaGFuZGxlcnNfbWFwX2ZpbGUpOgotICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3
ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KLQotICAgIEFyZ3M6Ci0gICAg
ICAgIGRpc3BhdGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKLSAgICAgICAgd2Vi
c29ja19oYW5kbGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQotICAgICIiIgotCi0gICAgZnAg
PSBvcGVuKHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpCi0gICAgdHJ5OgotICAgICAgICBmb3Ig
bGluZSBpbiBmcDoKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gJyMnIG9yIGxpbmUuaXNzcGFj
ZSgpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gcmUubWF0Y2go
cicoXFMrKVxzKyhcUyspJywgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAg
ICAgICAgIGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5l
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAgICAg
ICAgICAgbS5ncm91cCgxKSwgbS5ncm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Io
c3RyKGUpKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGZwLmNsb3NlKCkKLQotCi1jbGFzcyBXZWJT
b2NrZXRTZXJ2ZXIoc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5I
VFRQU2VydmVyKToKLSAgICAiIiJIVFRQU2VydmVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQu
IiIiCi0KLSAgICAjIE92ZXJyaWRlcyBzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4uZGFlbW9u
X3RocmVhZHMKLSAgICBkYWVtb25fdGhyZWFkcyA9IFRydWUKLSAgICAjIE92ZXJyaWRlcyBCYXNl
SFRUUFNlcnZlci5IVFRQU2VydmVyLmFsbG93X3JldXNlX2FkZHJlc3MKLSAgICBhbGxvd19yZXVz
ZV9hZGRyZXNzID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAg
ICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fIHRvIHNldCBT
U0wgZW5hYmxlZAotICAgICAgICBzb2NrZXQgb2JqZWN0IHRvIHNlbGYuc29ja2V0IGJlZm9yZSBz
ZXJ2ZXJfYmluZCBhbmQgc2VydmVyX2FjdGl2YXRlLAotICAgICAgICBpZiBuZWNlc3NhcnkuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJlcXVlc3Qg
aGFuZGxlcnMgdG8gc2F2ZSB0aW1lIGZvcgotICAgICAgICAjIGluc3RhbnRpYXRpb24uICBEaXNw
YXRjaGVyIGNhbiBiZSBzaGFyZWQgYmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KLSAgICAgICAg
b3B0aW9ucy5kaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcigKLSAgICAgICAgICAgIG9w
dGlvbnMud2Vic29ja19oYW5kbGVycywKLSAgICAgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIsCi0g
ICAgICAgICAgICBvcHRpb25zLmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0gICAg
ICAgIGlmIG9wdGlvbnMud2Vic29ja19oYW5kbGVyc19tYXBfZmlsZToKLSAgICAgICAgICAgIF9h
bGlhc19oYW5kbGVycyhvcHRpb25zLmRpc3BhdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQotICAgICAgICB3YXJuaW5n
cyA9IG9wdGlvbnMuZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICBpZiB3YXJu
aW5nczoKLSAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAgICAgICAg
ICAgIGxvZ2dpbmcud2FybmluZygnV2FybmluZyBpbiBzb3VyY2UgbG9hZGluZzogJXMnICUgd2Fy
bmluZykKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2Vs
ZikKLQotICAgICAgICBzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSA9IG9wdGlvbnMucmVxdWVzdF9x
dWV1ZV9zaXplCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24gPSB0aHJlYWRpbmcuRXZl
bnQoKQotICAgICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IEZhbHNlCi0KLSAgICAgICAgc29ja2V0
c2VydmVyLkJhc2VTZXJ2ZXIuX19pbml0X18oCi0gICAgICAgICAgICBzZWxmLCAob3B0aW9ucy5z
ZXJ2ZXJfaG9zdCwgb3B0aW9ucy5wb3J0KSwgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIpCi0KLSAg
ICAgICAgIyBFeHBvc2UgdGhlIG9wdGlvbnMgb2JqZWN0IHRvIGFsbG93IGhhbmRsZXIgb2JqZWN0
cyBhY2Nlc3MgaXQuIFdlIG5hbWUKLSAgICAgICAgIyBpdCB3aXRoIHdlYnNvY2tldF8gcHJlZml4
IHRvIGF2b2lkIGNvbmZsaWN0LgotICAgICAgICBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9u
cyA9IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9jcmVhdGVfc29ja2V0cygpCi0gICAgICAgIHNl
bGYuc2VydmVyX2JpbmQoKQotICAgICAgICBzZWxmLnNlcnZlcl9hY3RpdmF0ZSgpCi0KLSAgICBk
ZWYgX2NyZWF0ZV9zb2NrZXRzKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLCBzZWxm
LnNlcnZlcl9wb3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzcwotICAgICAgICBzZWxmLl9zb2NrZXRz
ID0gW10KLSAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX25hbWU6Ci0gICAgICAgICAgICAjIE9u
IHBsYXRmb3JtcyB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBJUHY2LCB0aGUgZmlyc3QgYmluZCBmYWls
cy4KLSAgICAgICAgICAgICMgT24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSVB2NgotICAgICAg
ICAgICAgIyAtIElmIGl0IGJpbmRzIGJvdGggSVB2NCBhbmQgSVB2NiBvbiBjYWxsIHdpdGggQUZf
SU5FVDYsIHRoZQotICAgICAgICAgICAgIyAgIGZpcnN0IGJpbmQgc3VjY2VlZHMgYW5kIHRoZSBz
ZWNvbmQgZmFpbHMgKHdlJ2xsIHNlZSAnQWRkcmVzcwotICAgICAgICAgICAgIyAgIGFscmVhZHkg
aW4gdXNlJyBlcnJvcikuCi0gICAgICAgICAgICAjIC0gSWYgaXQgYmluZHMgb25seSBJUHY2IG9u
IGNhbGwgd2l0aCBBRl9JTkVUNiwgYm90aCBjYWxsIGFyZQotICAgICAgICAgICAgIyAgIGV4cGVj
dGVkIHRvIHN1Y2NlZWQgdG8gbGlzdGVuIGJvdGggcHJvdG9jb2wuCi0gICAgICAgICAgICBhZGRy
aW5mb19hcnJheSA9IFsKLSAgICAgICAgICAgICAgICAoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQu
U09DS19TVFJFQU0sICcnLCAnJywgJycpLAotICAgICAgICAgICAgICAgIChzb2NrZXQuQUZfSU5F
VCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycsICcnKV0KLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0LmdldGFkZHJpbmZvKHNlbGYuc2VydmVyX25h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc29ja2V0LkFGX1VOU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RPX1RDUCkKLSAgICAgICAg
Zm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICBmYW1p
bHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9IGFkZHJpbmZvCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc29ja2V0XyA9IHNvY2tldC5zb2NrZXQoZmFt
aWx5LCBzb2NrdHlwZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCi0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2Vs
Zi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25z
LnVzZV90bHM6Ci0gICAgICAgICAgICAgICAgIyBGb3IgdGhlIGNhc2Ugb2YgX0hBU19PUEVOX1NT
TCwgd2UgZG8gd3JhcHBlciBzZXR1cCBhZnRlcgotICAgICAgICAgICAgICAgICMgYWNjZXB0Lgot
ICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9T
VEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRs
c19jbGllbnRfYXV0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25z
LnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VS
VF9SRVFVSVJFRAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgICAgICAgICBz
b2NrZXRfID0gc3NsLndyYXBfc29ja2V0KHNvY2tldF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBrZXlmaWxlPXNlcnZlcl9vcHRpb25zLnByaXZhdGVfa2V5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgY2VydGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY2FfY2VydHM9c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jYSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jbGllbnRfY2VydF8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHNl
bGYuX3NvY2tldHMuYXBwZW5kKChzb2NrZXRfLCBhZGRyaW5mbykpCi0KLSAgICBkZWYgc2VydmVy
X2JpbmQoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIu
c2VydmVyX2JpbmQgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMgYmluZC4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgZmFpbGVkX3NvY2tldHMgPSBbXQotCi0gICAgICAgIGZvciBz
b2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5m
byA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdCaW5kIG9uOiAl
cicsIGFkZHJpbmZvKQotICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19yZXVzZV9hZGRyZXNzOgot
ICAgICAgICAgICAgICAgIHNvY2tldF8uc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29j
a2V0LlNPX1JFVVNFQUREUiwgMSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBz
b2NrZXRfLmJpbmQoc2VsZi5zZXJ2ZXJfYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBm
YWlsdXJlOiAlcicsIGUpCi0gICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0gICAgICAg
ICAgICAgICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCi0gICAgICAgICAgICBp
ZiBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdID09IDA6Ci0gICAgICAgICAgICAgICAgIyBUaGUgb3Bl
cmF0aW5nIHN5c3RlbSBhc3NpZ25zIHRoZSBhY3R1YWwgcG9ydCBudW1iZXIgZm9yIHBvcnQKLSAg
ICAgICAgICAgICAgICAjIG51bWJlciAwLiBUaGlzIGNhc2UsIHRoZSBzZWNvbmQgYW5kIGxhdGVy
IHNvY2tldHMgc2hvdWxkIHVzZQotICAgICAgICAgICAgICAgICMgdGhlIHNhbWUgcG9ydCBudW1i
ZXIuIEFsc28gc2VsZi5zZXJ2ZXJfcG9ydCBpcyByZXdyaXR0ZW4KLSAgICAgICAgICAgICAgICAj
IGJlY2F1c2UgaXQgaXMgZXhwb3J0ZWQsIGFuZCB3aWxsIGJlIHVzZWQgYnkgZXh0ZXJuYWwgY29k
ZS4KLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9hZGRyZXNzID0gKAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLCBzb2NrZXRfLmdldHNvY2tuYW1lKClbMV0pCi0gICAg
ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbMV0KLSAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUG9ydCAlciBpcyBhc3NpZ25lZCcsIHNl
bGYuc2VydmVyX3BvcnQpCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tl
dHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAg
ZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgc29ja2V0c2Vy
dmVyLlRDUFNlcnZlci5zZXJ2ZXJfYWN0aXZhdGUgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAg
IHNvY2tldHMgbGlzdGVuLgotICAgICAgICAiIiIKLQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9
IFtdCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAg
ICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJ0xpc3RlbiBvbjogJXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBzb2NrZXRfLmxpc3RlbihzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSkKLSAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCi0gICAgICAgICAgICAgICAgc29j
a2V0Xy5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tl
dGluZm8pCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6Ci0gICAg
ICAgICAgICBzZWxmLl9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAgICAgIGlmIGxl
bihzZWxmLl9zb2NrZXRzKSA9PSAwOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2Fs
KAotICAgICAgICAgICAgICAgICdObyBzb2NrZXRzIGFjdGl2YXRlZC4gVXNlIGluZm8gbG9nIGxl
dmVsIHRvIHNlZSB0aGUgcmVhc29uLicpCi0KLSAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgot
ICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9jbG9zZSB0
byBlbmFibGUgbXVsdGlwbGUKLSAgICAgICAgc29ja2V0cyBjbG9zZS4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNv
Y2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmlu
Zm8oJ0Nsb3NlIG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgp
Ci0KLSAgICBkZWYgZmlsZW5vKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2
ZXIuVENQU2VydmVyLmZpbGVuby4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuY3JpdGljYWwo
J05vdCBzdXBwb3J0ZWQ6IGZpbGVubycpCi0gICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXRzWzBd
WzBdLmZpbGVubygpCi0KLSAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVu
dF9hZGRyZXNzKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgc29ja2V0c2VydmVyLmhhbmRsZV9lcnJv
ci4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZXJyb3IoCi0gICAgICAgICAgICAnRXhjZXB0
aW9uIGluIHByb2Nlc3NpbmcgcmVxdWVzdCBmcm9tOiAlclxuJXMnLAotICAgICAgICAgICAgY2xp
ZW50X2FkZHJlc3MsCi0gICAgICAgICAgICB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgICAg
ICAjIE5vdGU6IGNsaWVudF9hZGRyZXNzIGlzIGEgdHVwbGUuCi0KLSAgICBkZWYgZ2V0X3JlcXVl
c3Qoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFRDUFNlcnZlci5nZXRfcmVxdWVzdCB0byB3
cmFwIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24KLSAgICAgICAgb2JqZWN0IHdpdGggX1N0YW5kYWxv
bmVTU0xDb25uZWN0aW9uIHRvIHByb3ZpZGUgbWFrZWZpbGUgbWV0aG9kLiBXZQotICAgICAgICBj
YW5ub3Qgc3Vic3RpdHV0ZSBPcGVuU1NMLlNTTC5Db25uZWN0aW9uLm1ha2VmaWxlIHNpbmNlIGl0
J3MgcmVhZG9ubHkKLSAgICAgICAgYXR0cmlidXRlLgotICAgICAgICAiIiIKLQotICAgICAgICBh
Y2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKLQot
ICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0g
ICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVzZV90bHM6Ci0gICAgICAgICAgICBpZiBzZXJ2ZXJf
b3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfU1RBTkRBUkRfTU9EVUxFOgotICAgICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmRvX2hhbmRz
aGFrZSgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVyJywgZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmFpc2UKLQotICAgICAgICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4gSGFu
ZHNoYWtlIGlzIGRvbmUgb24gYWNjZXB0LgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2lwaGVyOiAlcycsIGFjY2VwdGVkX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5nZXRwZWVyY2VydCgpKQotICAg
ICAgICAgICAgZWxpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVO
U1NMOgotICAgICAgICAgICAgICAgICMgV2UgY2Fubm90IHByaW50IHRoZSBjaXBoZXIgaW4gdXNl
LiBweU9wZW5TU0wgZG9lc24ndCBwcm92aWRlCi0gICAgICAgICAgICAgICAgIyBhbnkgbWV0aG9k
IHRvIGZldGNoIHRoYXQuCi0KLSAgICAgICAgICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5Db250
ZXh0KE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QpCi0gICAgICAgICAgICAgICAgY3R4LnVzZV9w
cml2YXRla2V5X2ZpbGUoc2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXkpCi0gICAgICAgICAgICAg
ICAgY3R4LnVzZV9jZXJ0aWZpY2F0ZV9maWxlKHNlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRlKQot
Ci0gICAgICAgICAgICAgICAgZGVmIGRlZmF1bHRfY2FsbGJhY2soY29ubiwgY2VydCwgZXJybnVt
LCBlcnJkZXB0aCwgb2spOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2sgPT0gMQotCi0g
ICAgICAgICAgICAgICAgIyBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQgZm9yIFNTTF9DVFhfc2V0
X3ZlcmlmeS4KLSAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2F1
dGg6Ci0gICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlID0gT3BlblNTTC5TU0wuVkVSSUZZ
X1BFRVIKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9vcHRpb25zLnRsc19jbGll
bnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlIHw9
IE9wZW5TU0wuU1NMLlZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVAotICAgICAgICAgICAgICAg
ICAgICBjdHguc2V0X3ZlcmlmeSh2ZXJpZnlfbW9kZSwgZGVmYXVsdF9jYWxsYmFjaykKLSAgICAg
ICAgICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzZXJ2ZXJfb3B0aW9ucy50
bHNfY2xpZW50X2NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vbmUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY3R4
LnNldF92ZXJpZnkoT3BlblNTTC5TU0wuVkVSSUZZX05PTkUsIGRlZmF1bHRfY2FsbGJhY2spCi0K
LSAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBPcGVuU1NMLlNTTC5Db25uZWN0aW9u
KGN0eCwgYWNjZXB0ZWRfc29ja2V0KQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5z
ZXRfYWNjZXB0X3N0YXRlKCkKLQotICAgICAgICAgICAgICAgICMgQ29udmVydCBTU0wgcmVsYXRl
ZCBlcnJvciBpbnRvIHNvY2tldC5lcnJvciBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBTb2Nr
ZXRTZXJ2ZXIgaWdub3JlcyB0aGVtIGFuZCBrZWVwcyBydW5uaW5nLgotICAgICAgICAgICAgICAg
ICMKLSAgICAgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBDb252ZXJ0IGFsbCBraW5kcyBv
ZiBlcnJvcnMuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBhY2Nl
cHRlZF9zb2NrZXQuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT3BlblNT
TC5TU0wuRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgIyBTZXQgZXJybm8gcGFydCB0
byAxIChTU0xfRVJST1JfU1NMKSBsaWtlIHRoZSBzc2wgbW9kdWxlCi0gICAgICAgICAgICAgICAg
ICAgICMgZG9lcy4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcics
IGUpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcigxLCAnJXInICUgZSkK
LSAgICAgICAgICAgICAgICBjZXJ0ID0gYWNjZXB0ZWRfc29ja2V0LmdldF9wZWVyX2NlcnRpZmlj
YXRlKCkKLSAgICAgICAgICAgICAgICBpZiBjZXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0IHN1YmplY3Q6ICVyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQuZ2V0X3N1YmplY3QoKS5n
ZXRfY29tcG9uZW50cygpKQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IF9TdGFu
ZGFsb25lU1NMQ29ubmVjdGlvbihhY2NlcHRlZF9zb2NrZXQpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBp
cyBhdmFpbGFibGUnKQotCi0gICAgICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9h
ZGRyZXNzCi0KLSAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6
Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2
ZXIuIiIiCi0KLSAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBUcnVlCi0gICAgICAgIHNlbGYu
X193c19pc19zaHV0X2Rvd24uY2xlYXIoKQotICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYu
aGFuZGxlX3JlcXVlc3QKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hhbmRsZV9yZXF1ZXN0
X25vYmxvY2snKToKLSAgICAgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5faGFuZGxlX3Jl
cXVlc3Rfbm9ibG9jawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndh
cm5pbmcoJ0ZhbGxiYWNrIHRvIGJsb2NraW5nIHJlcXVlc3QgaGFuZGxlcicpCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuX193c19zZXJ2aW5nOgotICAgICAgICAgICAgICAg
IHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KAotICAgICAgICAgICAgICAgICAgICBbc29ja2V0X1sw
XSBmb3Igc29ja2V0XyBpbiBzZWxmLl9zb2NrZXRzXSwKLSAgICAgICAgICAgICAgICAgICAgW10s
IFtdLCBwb2xsX2ludGVydmFsKQotICAgICAgICAgICAgICAgIGZvciBzb2NrZXRfIGluIHI6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0XwotICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVfcmVxdWVzdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25l
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLnNl
dCgpCi0KLSAgICBkZWYgc2h1dGRvd24oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tl
dHNlcnZlci5CYXNlU2VydmVyLnNodXRkb3duLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2
aW5nID0gRmFsc2UKLSAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi53YWl0KCkKLQotCi1j
bGFzcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0
SGFuZGxlcik6Ci0gICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBX
ZWJTb2NrZXQuIiIiCi0KLSAgICAjIFVzZSBodHRwX2NsaWVudC5IVFRQTWVzc2FnZSBpbnN0ZWFk
IG9mIG1pbWV0b29scy5NZXNzYWdlLgotICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHBfY2xpZW50LkhU
VFBNZXNzYWdlCi0KLSAgICBwcm90b2NvbF92ZXJzaW9uID0gIkhUVFAvMS4xIgotCi0gICAgZGVm
IHNldHVwKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVx
dWVzdEhhbmRsZXIuc2V0dXAgdG8gd3JhcCByZmlsZQotICAgICAgICB3aXRoIE1lbW9yaXppbmdG
aWxlLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJ5IEJhc2VSZXF1ZXN0
SGFuZGxlcidzIGNvbnN0cnVjdG9yCi0gICAgICAgIGJlZm9yZSBjYWxsaW5nIEJhc2VIVFRQUmVx
dWVzdEhhbmRsZXIuaGFuZGxlLgotICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRs
ZSB3aWxsIGNhbGwKLSAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3Jl
cXVlc3QgYW5kIGl0IHdpbGwgY2FsbAotICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5w
YXJzZV9yZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICAjIENhbGwgc3VwZXJjbGFzcydz
IHNldHVwIHRvIHByZXBhcmUgcmZpbGUsIHdmaWxlLCBldGMuIFNlZSBzZXR1cAotICAgICAgICAj
IGRlZmluaXRpb24gb24gdGhlIHJvb3QgY2xhc3Mgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RI
YW5kbGVyIHRvCi0gICAgICAgICMgdW5kZXJzdGFuZCB3aGF0IHRoaXMgZG9lcy4KLSAgICAgICAg
Q0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuc2V0dXAoc2VsZikKLQotICAgICAg
ICBzZWxmLnJmaWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCi0gICAgICAgICAg
ICBzZWxmLnJmaWxlLAotICAgICAgICAgICAgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9S
SVpFRF9MSU5FUykKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRk
cmVzcywgc2VydmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9n
Z2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2Vy
dmVyX29wdGlvbnMKLQotICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhh
bmRsZXIuY2dpX2RpcmVjdG9yaWVzLgotICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNl
bGYuX29wdGlvbnMuY2dpX2RpcmVjdG9yaWVzCi0gICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVx
dWVzdEhhbmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCi0gICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmlz
X2V4ZWN1dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCi0KLSAgICAg
ICAgIyBUaGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KLSAg
ICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oCi0gICAg
ICAgICAgICBzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VydmVyKQotCi0gICAgZGVm
IHBhcnNlX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVy
LkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KLQotICAgICAgICBSZXR1cm4g
VHJ1ZSB0byBjb250aW51ZSBwcm9jZXNzaW5nIGZvciBIVFRQKFMpLCBGYWxzZSBvdGhlcndpc2Uu
Ci0KLSAgICAgICAgU2VlIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0
IG1ldGhvZCB3aGljaCBjYWxscwotICAgICAgICB0aGlzIG1ldGhvZCB0byB1bmRlcnN0YW5kIGhv
dyB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgIyBXZSBob29rIHBhcnNlX3JlcXVlc3QgbWV0aG9kLCBidXQgYWxzbyBjYWxsIHRoZSBvcmln
aW5hbAotICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0IHNpbmNl
IHdoZW4gd2UgcmV0dXJuIEZhbHNlLAotICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5o
YW5kbGVfb25lX3JlcXVlc3QgY29udGludWVzIHByb2Nlc3NpbmcgYW5kCi0gICAgICAgICMgaXQg
bmVlZHMgdmFyaWFibGVzIHNldCBieSBDR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVz
dC4KLSAgICAgICAgIwotICAgICAgICAjIFZhcmlhYmxlcyBzZXQgYnkgdGhpcyBtZXRob2Qgd2ls
bCBiZSBhbHNvIHVzZWQgYnkgV2ViU29ja2V0IHJlcXVlc3QKLSAgICAgICAgIyBoYW5kbGluZyAo
c2VsZi5wYXRoLCBzZWxmLmNvbW1hbmQsIHNlbGYucmVxdWVzdGxpbmUsIGV0Yy4gU2VlIGFsc28K
LSAgICAgICAgIyBob3cgX1N0YW5kYWxvbmVSZXF1ZXN0J3MgbWVtYmVycyBhcmUgaW1wbGVtZW50
ZWQgdXNpbmcgdGhlc2UKLSAgICAgICAgIyBhdHRyaWJ1dGVzKS4KLSAgICAgICAgaWYgbm90IENH
SUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qoc2VsZik6Ci0g
ICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gIkNP
Tk5FQ1QiOgotICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCwgIkNvbm5lY3RlZCIp
Ci0gICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb25uZWN0aW9uIiwgImtlZXAtYWxpdmUi
KQotICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCi0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9iYXNpY19hdXRoOgotICAgICAgICAg
ICAgYXV0aCA9IHNlbGYuaGVhZGVycy5nZXRoZWFkZXIoJ0F1dGhvcml6YXRpb24nKQotICAgICAg
ICAgICAgaWYgYXV0aCAhPSBzZWxmLl9vcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbDoKLSAg
ICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNDAxKQotICAgICAgICAgICAgICAgIHNl
bGYuc2VuZF9oZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGUnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0Jhc2ljIHJlYWxtPSJQeXdlYnNvY2tldCInKQotICAgICAgICAgICAgICAg
IHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdS
ZXF1ZXN0IGJhc2ljIGF1dGhlbnRpY2F0aW9uJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICAjIFNwZWNpYWwgcGF0aHMgZm9yIFhNTEh0dHBSZXF1ZXN0IGJlbmNobWFy
awotICAgICAgICB4aHJfYmVuY2htYXJrX2hlbHBlcl9wcmVmaXggPSAnLzA3M2JlMDAxZTEwOTUw
NjkyY2NiZjNhMmFkMjFjMjQ1JwotICAgICAgICBwYXJzZWRfcGF0aCA9IHVybGxpYi5wYXJzZS51
cmxzcGxpdChzZWxmLnBhdGgpCi0gICAgICAgIGlmIHBhcnNlZF9wYXRoLnBhdGggPT0gKHhocl9i
ZW5jaG1hcmtfaGVscGVyX3ByZWZpeCArICdfc2VuZCcpOgotICAgICAgICAgICAgeGhyX2JlbmNo
bWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxm
LmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJfYmVuY2ht
YXJrX2hhbmRsZXIuZG9fc2VuZCgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAg
aWYgcGFyc2VkX3BhdGgucGF0aCA9PSAoeGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ICsgJ19y
ZWNlaXZlJyk6Ci0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIgPSBYSFJCZW5jaG1h
cmtIYW5kbGVyKAotICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVycywgc2VsZi5yZmlsZSwgc2Vs
Zi53ZmlsZSkKLSAgICAgICAgICAgIHhocl9iZW5jaG1hcmtfaGFuZGxlci5kb19yZWNlaXZlX2Fu
ZF9wYXJzZSgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcGFyc2VkX3Bh
dGgucGF0aCA9PSAoeGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ19yZWNlaXZlX2dldG5vY2FjaGUnKToKLSAgICAgICAgICAgIHho
cl9iZW5jaG1hcmtfaGFuZGxlciA9IFhIUkJlbmNobWFya0hhbmRsZXIoCi0gICAgICAgICAgICAg
ICAgc2VsZi5oZWFkZXJzLCBzZWxmLnJmaWxlLCBzZWxmLndmaWxlKQotICAgICAgICAgICAgeGhy
X2JlbmNobWFya19oYW5kbGVyLmRvX3JlY2VpdmUoCi0gICAgICAgICAgICAgICAgaW50KHBhcnNl
ZF9wYXRoLnF1ZXJ5KSwgRmFsc2UsIEZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgIGlmIHBhcnNlZF9wYXRoLnBhdGggPT0gKHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZp
eCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfcmVjZWl2ZV9nZXRjYWNoZScp
OgotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxl
cigKLSAgICAgICAgICAgICAgICBzZWxmLmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUp
Ci0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIuZG9fcmVjZWl2ZSgKLSAgICAgICAg
ICAgICAgICBpbnQocGFyc2VkX3BhdGgucXVlcnkpLCBGYWxzZSwgVHJ1ZSkKLSAgICAgICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFk
ZXJfdXRpbC5wYXJzZV91cmkoc2VsZi5wYXRoKQotICAgICAgICBpZiByZXNvdXJjZSBpcyBOb25l
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ludmFsaWQgVVJJOiAlcicsIHNlbGYu
cGF0aCkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQ
UmVxdWVzdEhhbmRsZXInKQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VydmVy
X29wdGlvbnMgPSBzZWxmLnNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAg
aWYgaG9zdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHZhbGlkYXRpb25faG9zdCA9IHNlcnZl
cl9vcHRpb25zLnZhbGlkYXRpb25faG9zdAotICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9ob3N0
IGlzIG5vdCBOb25lIGFuZCBob3N0ICE9IHZhbGlkYXRpb25faG9zdDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBob3N0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25fcG9ydAot
ICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBwb3J0ICE9IHZh
bGlkYXRpb25fcG9ydDoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxp
ZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9u
X3BvcnQpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENH
SUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAg
ICAgc2VsZi5wYXRoID0gcmVzb3VyY2UKLQotICAgICAgICByZXF1ZXN0ID0gX1N0YW5kYWxvbmVS
ZXF1ZXN0KHNlbGYsIHNlbGYuX29wdGlvbnMudXNlX3RscykKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBh
dGhzIGZvciB3aGljaAotICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFuZGxl
cnMuCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLmdldF9oYW5k
bGVyX3N1aXRlKHNlbGYucGF0aCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J05vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5wYXRoKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdG
YWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlCi0gICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Rpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6
ICVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihlLnN0YXR1cykKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICMgSWYgYW55IEV4Y2VwdGlvbnMgd2l0aG91dCBl
eGNlcHQgY2xhdXNlIHNldHVwIChpbmNsdWRpbmcKLSAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlv
bikgaXMgcmFpc2VkIGJlbG93IHRoaXMgcG9pbnQsIGl0IHdpbGwgYmUgY2F1Z2h0Ci0gICAgICAg
ICMgYW5kIGxvZ2dlZCBieSBXZWJTb2NrZXRTZXJ2ZXIuCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5kb19oYW5kc2hha2UoCi0gICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuZGlzcGF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgYWxsb3dEcmFmdDc1PXNlbGYuX29w
dGlvbnMuYWxsb3dfZHJhZnQ3NSwKLSAgICAgICAgICAgICAgICAgICAgc3RyaWN0PXNlbGYuX29w
dGlvbnMuc3RyaWN0KQotICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBm
YWlsZWQgZm9yIHZlcnNpb24gZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNl
bmRfcmVzcG9uc2UoY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAg
ICAgIHNlbGYuc2VuZF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN1cHBvcnRlZF92ZXJzaW9ucykK
LSAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9u
IGFzIGU6Ci0gICAgICAgICAgICAgICAgIyBIYW5kc2hha2UgZm9yIHdzKHMpIGZhaWxlZC4KLSAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJy
b3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoZS5zdGF0dXMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIHJlcXVlc3QuX2Rpc3Bh
dGNoZXIgPSBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIKLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBoYW5k
c2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJ0Fib3J0ZWQ6ICVzJywgZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBk
ZWYgbG9nX3JlcXVlc3Qoc2VsZiwgY29kZT0nLScsIHNpemU9Jy0nKToKLSAgICAgICAgIiIiT3Zl
cnJpZGUgQmFzZUhUVFBTZXJ2ZXIubG9nX3JlcXVlc3QuIiIiCi0KLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJyIlcyIgJXMgJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJl
cXVlc3RsaW5lLCBzdHIoY29kZSksIHN0cihzaXplKSkKLQotICAgIGRlZiBsb2dfZXJyb3Ioc2Vs
ZiwgKmFyZ3MpOgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfZXJyb3Iu
IiIiCi0KLSAgICAgICAgIyBEZXNwaXRlIHRoZSBuYW1lLCB0aGlzIG1ldGhvZCBpcyBmb3Igd2Fy
bmluZ3MgdGhhbiBmb3IgZXJyb3JzLgotICAgICAgICAjIEZvciBleGFtcGxlLCBIVFRQIHN0YXR1
cyBjb2RlIGlzIGxvZ2dlZCBieSB0aGlzIG1ldGhvZC4KLSAgICAgICAgc2VsZi5fbG9nZ2VyLndh
cm5pbmcoJyVzIC0gJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZHJl
c3Nfc3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gJSBhcmdz
WzE6XSkKLQotICAgIGRlZiBpc19jZ2koc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2hldGhlciBz
ZWxmLnBhdGggY29ycmVzcG9uZHMgdG8gYSBDR0kgc2NyaXB0LgotCi0gICAgICAgIEFkZCBleHRy
YSBjaGVjayB0aGF0IHNlbGYucGF0aCBkb2Vzbid0IGNvbnRhaW5zIC4uCi0gICAgICAgIEFsc28g
Y2hlY2sgaWYgdGhlIGZpbGUgaXMgYSBleGVjdXRhYmxlIGZpbGUgb3Igbm90LgotICAgICAgICBJ
ZiB0aGUgZmlsZSBpcyBub3QgZXhlY3V0YWJsZSwgaXQgaXMgaGFuZGxlZCBhcyBzdGF0aWMgZmls
ZSBvciBkaXIKLSAgICAgICAgcmF0aGVyIHRoYW4gYSBDR0kgc2NyaXB0LgotICAgICAgICAiIiIK
LQotICAgICAgICBpZiBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5pc19jZ2ko
c2VsZik6Ci0gICAgICAgICAgICBpZiAnLi4nIGluIHNlbGYucGF0aDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICMgc3RyaXAgcXVlcnkgcGFyYW1ldGVyIGZyb20g
cmVxdWVzdCBwYXRoCi0gICAgICAgICAgICByZXNvdXJjZV9uYW1lID0gc2VsZi5wYXRoLnNwbGl0
KCc/JywgMilbMF0KLSAgICAgICAgICAgICMgY29udmVydCByZXNvdXJjZV9uYW1lIGludG8gcmVh
bCBwYXRoIG5hbWUgaW4gZmlsZXN5c3RlbS4KLSAgICAgICAgICAgIHNjcmlwdGZpbGUgPSBzZWxm
LnRyYW5zbGF0ZV9wYXRoKHJlc291cmNlX25hbWUpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0
aC5pc2ZpbGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5pc19leGVjdXRhYmxlKHNjcmlwdGZpbGUpOgotICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLQotZGVmIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3MoYyk6Ci0gICAgcmV0dXJu
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4lcycgJSAoYy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkK
LQotCi1kZWYgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpOgotICAgIGxvZ2dpbmcuYWRkTGV2
ZWxOYW1lKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRklORScpCi0KLSAgICBsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcigpCi0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1l
KG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQotICAgIGlmIG9wdGlvbnMubG9nX2ZpbGU6Ci0g
ICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCi0g
ICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dfZmlsZSwgJ2EnLCBvcHRpb25zLmxvZ19tYXgsIG9w
dGlvbnMubG9nX2NvdW50KQotICAgIGVsc2U6Ci0gICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0
cmVhbUhhbmRsZXIoKQotICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAgICAg
ICAgICAgJ1slKGFzY3RpbWUpc10gWyUobGV2ZWxuYW1lKXNdICUobmFtZSlzOiAlKG1lc3NhZ2Up
cycpCi0gICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGxvZ2dlci5hZGRI
YW5kbGVyKGhhbmRsZXIpCi0KLSAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lID0gbG9nZ2luZy5n
ZXRMZXZlbE5hbWUoCi0gICAgICAgIG9wdGlvbnMuZGVmbGF0ZV9sb2dfbGV2ZWwudXBwZXIoKSkK
LSAgICBfZ2V0X2xvZ2dlcl9mcm9tX2NsYXNzKHV0aWwuX0RlZmxhdGVyKS5zZXRMZXZlbCgKLSAg
ICAgICAgZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKLSAgICBfZ2V0X2xvZ2dlcl9mcm9tX2NsYXNz
KHV0aWwuX0luZmxhdGVyKS5zZXRMZXZlbCgKLSAgICAgICAgZGVmbGF0ZV9sb2dfbGV2ZWxfbmFt
ZSkKLQotCi1kZWYgX2J1aWxkX29wdGlvbl9wYXJzZXIoKToKLSAgICBwYXJzZXIgPSBvcHRwYXJz
ZS5PcHRpb25QYXJzZXIoKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tY29uZmlnJywgZGVz
dD0nY29uZmlnX2ZpbGUnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1
cmF0aW9uIGZpbGUuIFNlZSB0aGUgZmlsZSBjb21tZW50ICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZSBmb3JtYXQnKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLUgnLCAnLS1zZXJ2ZXItaG9zdCcsICctLXNlcnZlcl9ob3N0JywKLSAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD0nJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5h
bWUgdG8gbGlzdGVuIHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLVYnLCAnLS12YWxpZGF0
aW9uLWhvc3QnLCAnLS12YWxpZGF0aW9uX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3ZhbGlkYXRpb25faG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBob3N0bmFtZSB0byB2YWxpZGF0
ZSBpbiBhYnNvbHV0ZSBwYXRoLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcG9y
dCcsIGRlc3Q9J3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9Y29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J3BvcnQgdG8gbGlzdGVuIHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLVAnLCAn
LS12YWxpZGF0aW9uLXBvcnQnLCAnLS12YWxpZGF0aW9uX3BvcnQnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZl
ciBwb3J0IHRvIHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLXcnLCAnLS13ZWJzb2NrLWhhbmRsZXJzJywgJy0td2Vic29ja19oYW5kbGVycycsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19oYW5kbGVycycsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1Ro
ZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxlciBmaWxlcy4gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdJZiB0aGUgcGF0aCBpcyByZWxhdGl2ZSwgLS1kb2N1bWVudC1y
b290IGlzIHVzZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcyB0aGUgYmFzZS4n
KSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1m
aWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxl
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxl
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgaGVscD0oJ1dlYlNvY2tldCBoYW5kbGVycyBtYXAgZmlsZS4gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdFYWNoIGxpbmUgY29uc2lzdHMgb2YgYWxpYXNfcmVzb3VyY2VfcGF0
aCBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdGluZ19yZXNvdXJjZV9w
YXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycs
ICctLXNjYW4tZGlyJywgJy0tc2Nhbl9kaXInLCBkZXN0PSdzY2FuX2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdN
dXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIC0td2Vic29jay1oYW5kbGVycy4gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdPbmx5IGhhbmRsZXJzIHVuZGVyIHRoaXMgZGlyZWN0b3J5IGFy
ZSBzY2FubmVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIHJlZ2lzdGVyZWQg
dG8gdGhlIHNlcnZlci4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VmdWwgZm9y
IHNhdmluZyBzY2FuIHRpbWUgd2hlbiB0aGUgaGFuZGxlciAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Jvb3QgZGlyZWN0b3J5IGNvbnRhaW5zIGxvdHMgb2YgZmlsZXMgdGhhdCBhcmUg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgaGFuZGxlciBmaWxlIG9yIGFyZSBo
YW5kbGVyIGZpbGVzIGJ1dCB5b3UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb25c
J3Qgd2FudCB0aGVtIHRvIGJlIHJlZ2lzdGVyZWQuICcpKQotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctLWFsbG93LWhhbmRsZXJzLW91dHNpZGUtcm9vdC1kaXInLAotICAgICAgICAgICAgICAgICAg
ICAgICctLWFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2FsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAotICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnU2NhbnMgV2ViU29j
a2V0IGhhbmRsZXJzIGV2ZW4gaWYgdGhlaXIgY2Fub25pY2FsICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncGF0aCBpcyBub3QgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLicpKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctZCcsICctLWRvY3VtZW50LXJvb3QnLCAnLS1kb2N1bWVudF9y
b290JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywgZGVmYXVs
dD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nRG9jdW1lbnQgcm9vdCBkaXJlY3Rv
cnkuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXgnLCAnLS1jZ2ktcGF0aHMnLCAnLS1jZ2lf
cGF0aHMnLCBkZXN0PSdjZ2lfcGF0aHMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnQ0dJIHBhdGhzIHJlbGF0aXZlIHRv
IGRvY3VtZW50X3Jvb3QuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb21tYS1zZXBh
cmF0ZWQuIChlLmcgLXggL2NnaSwvaHRiaW4pICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRmlsZXMgdW5kZXIgZG9jdW1lbnRfcm9vdC9jZ2lfcGF0aCBhcmUgaGFuZGxlZCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIENHSSBwcm9ncmFtcy4gTXVzdCBiZSBleGVjdXRh
YmxlLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90
bHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
RmFsc2UsIGhlbHA9J3VzZSBUTFMgKHdzczovLyknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LXRscy1tb2R1bGUnLCAnLS10bHNfbW9kdWxlJywgZGVzdD0ndGxzX21vZHVsZScsCi0gICAgICAg
ICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9p
Y2VzID0gW19UTFNfQllfU1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgaGVscD0nVXNlIHNzbCBtb2R1bGUgaWYgIiVzIiBpcyBzcGVjaWZp
ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAnVXNlIHB5T3BlblNTTCBtb2R1bGUgaWYgIiVz
IiBpcyBzcGVjaWZpZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAoX1RMU19CWV9TVEFOREFS
RF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWsn
LCAnLS1wcml2YXRlLWtleScsICctLXByaXZhdGVfa2V5JywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdwcml2YXRlX2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywg
aGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWMn
LCAnLS1jZXJ0aWZpY2F0ZScsIGRlc3Q9J2NlcnRpZmljYXRlJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScnLCBoZWxwPSdUTFMgY2VydGlmaWNhdGUgZmlsZS4nKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtYXV0aCcsIGRlc3Q9J3Rsc19jbGllbnRfYXV0aCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSZXF1ZXN0cyBUTFMgY2xpZW50IGF1dGgg
b24gZXZlcnkgY29ubmVjdGlvbi4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGll
bnQtY2VydC1vcHRpb25hbCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVu
dF9jZXJ0X29wdGlvbmFsJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3Ry
dWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBj
bGllbnQgY2VydGlmaWNhdGUgb3B0aW9uYWwgZXZlbiB0aG91Z2ggJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdUTFMgY2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10bHMtY2xpZW50LWNhJywgZGVzdD0ndGxzX2NsaWVudF9jYScsIGRlZmF1
bHQ9JycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NwZWNpZmllcyBhIHBlbSBmaWxl
IHdoaWNoIGNvbnRhaW5zIGEgc2V0IG9mICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Y29uY2F0ZW5hdGVkIENBIGNlcnRpZmljYXRlcyB3aGljaCBhcmUgdXNlZCB0byAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3ZhbGlkYXRlIGNlcnRpZmljYXRlcyBwYXNzZWQgZnJvbSBj
bGllbnRzJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0aCcsIGRlc3Q9J3Vz
ZV9iYXNpY19hdXRoJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1JlcXVpcmVzIEJh
c2ljIGF1dGhlbnRpY2F0aW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0
aC1jcmVkZW50aWFsJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdiYXNpY19hdXRoX2Ny
ZWRlbnRpYWwnLCBkZWZhdWx0PSd0ZXN0OnRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J1NwZWNpZmllcyB0aGUgY3JlZGVudGlhbCBvZiBiYXNpYyBhdXRoZW50aWNhdGlvbiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgJ2J5IHVzZXJuYW1lOnBhc3N3b3JkIHBhaXIgKGUuZy4gdGVz
dDp0ZXN0KS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsICctLWxvZy1maWxlJywgJy0t
bG9nX2ZpbGUnLCBkZXN0PSdsb2dfZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nJywgaGVscD0nTG9nIGZpbGUuJykKLSAgICAjIEN1c3RvbSBsb2cgbGV2ZWw6Ci0gICAgIyAt
IEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFjaCBmcmFtZSBwcm9jZXNzaW5nIHN0ZXAKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9p
Y2UnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dh
cm4nLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydmaW5lJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAn
ZXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddLAotICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWRlZmxhdGUtbG9nLWxldmVsJywgJy0tZGVmbGF0ZV9sb2dfbGV2ZWwnLAotICAgICAg
ICAgICAgICAgICAgICAgIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nZGVmbGF0ZV9sb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAg
ICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3In
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIu
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1z
ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2lu
X3NlYycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2
YWxfaW5fc2VjJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLCBkZWZhdWx0PS0x
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdJZiBwb3NpdGl2ZSBpbnRlZ2VyIGlzIHNw
ZWNpZmllZCwgcnVuIGEgdGhyZWFkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9u
aXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwZXJpb2RpY2FsbHkgaW4gdGhlIHNwZWNpZmllZCBpbnRldmFsIGlu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Vjb25kLiBJZiBub24tcG9zaXRpdmUg
aW50ZWdlciBpcyBzcGVjaWZpZWQsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlz
YWJsZSB0aGUgdGhyZWFkIG1vbml0b3IuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9n
LW1heCcsICctLWxvZ19tYXgnLCBkZXN0PSdsb2dfbWF4JywgdHlwZT0naW50JywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19NQVhfQllURVMsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nTG9nIG1heGltdW0gYnl0ZXMnKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWxvZy1jb3VudCcsICctLWxvZ19jb3VudCcsIGRlc3Q9J2xvZ19jb3VudCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywgZGVmYXVsdD1fREVGQVVMVF9MT0dfQkFDS1VQ
X0NPVU5ULAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBiYWNrdXAgY291bnQnKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWFsbG93LWRyYWZ0NzUnLCBkZXN0PSdhbGxvd19kcmFm
dDc1JywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J09ic29sZXRlIG9wdGlvbi4gSWdu
b3JlZC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0cmljdCcsIGRlc3Q9J3N0cmljdCcs
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxz
ZSwgaGVscD0nT2Jzb2xldGUgb3B0aW9uLiBJZ25vcmVkLicpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1xJywgJy0tcXVldWUnLCBkZXN0PSdyZXF1ZXN0X3F1ZXVlX3NpemUnLCB0eXBlPSdpbnQn
LAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9T
SVpFLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6ZScpCi0K
LSAgICByZXR1cm4gcGFyc2VyCi0KLQotY2xhc3MgVGhyZWFkTW9uaXRvcih0aHJlYWRpbmcuVGhy
ZWFkKToKLSAgICBkYWVtb24gPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW50ZXJ2
YWxfaW5fc2VjKToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1l
PSdUaHJlYWRNb25pdG9yJykKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFz
c19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9pbnRlcnZhbF9pbl9zZWMgPSBpbnRlcnZh
bF9pbl9zZWMKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICAgICB0aHJlYWRfbmFtZV9saXN0ID0gW10KLSAgICAgICAgICAgIGZvciB0aHJlYWQgaW4g
dGhyZWFkaW5nLmVudW1lcmF0ZSgpOgotICAgICAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3Qu
YXBwZW5kKHRocmVhZC5uYW1lKQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAg
ICAgICAgICAgICAgIiVkIGFjdGl2ZSB0aHJlYWRzOiAlcyIsCi0gICAgICAgICAgICAgICAgdGhy
ZWFkaW5nLmFjdGl2ZV9jb3VudCgpLAotICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRf
bmFtZV9saXN0KSkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2Vj
KQotCi0KLWRlZiBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3MpOgotICAgIHBhcnNlciA9IF9i
dWlsZF9vcHRpb25fcGFyc2VyKCkKLQotICAgICMgRmlyc3QsIHBhcnNlIG9wdGlvbnMgd2l0aG91
dCBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9h
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzKQotICAgIGlmIHRlbXBvcmFyeV9hcmdz
OgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgJ1VucmVjb2duaXplZCBw
b3NpdGlvbmFsIGFyZ3VtZW50czogJXInLCB0ZW1wb3JhcnlfYXJncykKLSAgICAgICAgc3lzLmV4
aXQoMSkKLQotICAgIGlmIHRlbXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBjb25maWdfZnAgPSBvcGVuKHRlbXBvcmFyeV9vcHRpb25zLmNvbmZp
Z19maWxlLCAncicpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBs
b2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gb3BlbiBjb25maWd1
cmF0aW9uIGZpbGUgJXI6ICVyJywKLSAgICAgICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5j
b25maWdfZmlsZSwKLSAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkK
LQotICAgICAgICBjb25maWdfcGFyc2VyID0gY29uZmlncGFyc2VyLlNhZmVDb25maWdQYXJzZXIo
KQotICAgICAgICBjb25maWdfcGFyc2VyLnJlYWRmcChjb25maWdfZnApCi0gICAgICAgIGNvbmZp
Z19mcC5jbG9zZSgpCi0KLSAgICAgICAgYXJnc19mcm9tX2NvbmZpZyA9IFtdCi0gICAgICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBjb25maWdfcGFyc2VyLml0ZW1zKCdweXdlYnNvY2tldCcpOgotICAg
ICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQoJy0tJyArIG5hbWUpCi0gICAgICAgICAg
ICBhcmdzX2Zyb21fY29uZmlnLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgaWYgYXJncyBpcyBOb25l
OgotICAgICAgICAgICAgYXJncyA9IGFyZ3NfZnJvbV9jb25maWcKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21fY29uZmlnICsgYXJncwotICAgICAgICByZXR1cm4g
cGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB0
ZW1wb3Jhcnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MKLQotCi1kZWYgX21haW4oYXJncz1Ob25l
KToKLSAgICAiIiJZb3UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHlvdXIgb3duIHByb2dy
YW0sIGJ1dCBwbGVhc2Ugbm90ZSB0aGF0Ci0gICAgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzaWRl
LWVmZmVjdHMgdGhhdCBtaWdodCBhZmZlY3QgeW91ciBwcm9ncmFtLiBGb3IKLSAgICBleGFtcGxl
LCB1dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4gdXNlIGluIHRoaXMgbWV0aG9kIHJlcGxhY2VzIGlt
cGxlbWVudGF0aW9uCi0gICAgb2Ygb3MucG9wZW4zLgotICAgICIiIgotCi0gICAgb3B0aW9ucywg
YXJncyA9IF9wYXJzZV9hcmdzX2FuZF9jb25maWcoYXJncz1hcmdzKQotCi0gICAgb3MuY2hkaXIo
b3B0aW9ucy5kb2N1bWVudF9yb290KQotCi0gICAgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMp
Ci0KLSAgICBpZiBvcHRpb25zLmFsbG93X2RyYWZ0NzU6Ci0gICAgICAgIGxvZ2dpbmcud2Fybmlu
ZygnLS1hbGxvd19kcmFmdDc1IG9wdGlvbiBpcyBvYnNvbGV0ZS4nKQotCi0gICAgaWYgb3B0aW9u
cy5zdHJpY3Q6Ci0gICAgICAgIGxvZ2dpbmcud2FybmluZygnLS1zdHJpY3Qgb3B0aW9uIGlzIG9i
c29sZXRlLicpCi0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1cCBpbml0aWFsaXphdGlv
biBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUgc29tZQotICAgICMgb2YgY29kZSBoZXJlIHRv
IFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0dGVyLgotICAgIG9wdGlv
bnMuY2dpX2RpcmVjdG9yaWVzID0gW10KLSAgICBvcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9k
ID0gTm9uZQotICAgIGlmIG9wdGlvbnMuY2dpX3BhdGhzOgotICAgICAgICBvcHRpb25zLmNnaV9k
aXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykKLSAgICAgICAgaWYgc3lz
LnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6Ci0gICAgICAgICAgICBjeWd3aW5fcGF0
aCA9IE5vbmUKLSAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwgaXQgaXMgZXhwZWN0ZWQg
dGhhdCBDWUdXSU5fUEFUSAotICAgICAgICAgICAgIyBpcyBzZXQgdG8gYSBkaXJlY3Rvcnkgb2Yg
Y3lnd2luIGJpbmFyaWVzLgotICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Vic29ja2V0X3Nl
cnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCi0gICAgICAgICAgICAjIGZ1
bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgotICAgICAgICAgICAgaWYgJ0NZR1dJ
Tl9QQVRIJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3Mu
ZW52aXJvblsnQ1lHV0lOX1BBVEgnXQotICAgICAgICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jf
d2luKGN5Z3dpbl9wYXRoKQotCi0gICAgICAgICAgICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0
cGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2Ny
aXB0cGF0aCwgY3lnd2luX3BhdGgpCi0KLSAgICAgICAgICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJs
ZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAg
ICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBv
cnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9T
VEFOREFSRF9NT0RVTEUKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wg
bW9kdWxlJykKLSAgICAgICAgICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAg
ICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZGVidWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAg
ICAgICAgICAgICAgJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxl
LicpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRs
c19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3Qg
X2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9k
dWxlIGlzIG5vdCBhdmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAg
ICAgIGVsaWYgb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAg
ICAgICAgaWYgbm90IF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2lu
Zy5jcml0aWNhbCgncHlPcGVuU1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAg
ICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgnSW52YWxpZCAtLXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0
KDEpCi0KLSAgICAgICAgaWYgbm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlvbnMu
Y2VydGlmaWNhdGU6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAg
ICAgICAgICAnVG8gdXNlIFRMUywgc3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlmaWNhdGUu
JykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYgKG9wdGlvbnMudGxzX2Ns
aWVudF9jZXJ0X29wdGlvbmFsIGFuZAotICAgICAgICAgICAgbm90IG9wdGlvbnMudGxzX2NsaWVu
dF9hdXRoKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNh
dGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
c3BlY2lmeSB0bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwnKQotICAgICAgICAgICAgc3lzLmV4aXQo
MSkKLSAgICBlbHNlOgotICAgICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS10bHMtbW9kdWxlIG9wdGlvbiBv
bmx5IHRvZ2V0aGVyIHdpdGggJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2Ut
dGxzIG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRp
b25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBt
dXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAg
c3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25h
bDoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9y
IGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAg
IGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgotICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0
aW9ucy53ZWJzb2NrX2hhbmRsZXJzCi0KLSAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19hdXRoOgot
ICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsgYmFzZTY0
LmI2NGVuY29kZSgKLSAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsKQot
Ci0gICAgdHJ5OgotICAgICAgICBpZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2lu
X3NlYyA+IDA6Ci0gICAgICAgICAgICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cgdGhl
IHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyBmb3IKLSAgICAgICAgICAgICMgZGVidWdnaW5nLgot
ICAgICAgICAgICAgVGhyZWFkTW9uaXRvcihvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFs
X2luX3NlYykuc3RhcnQoKQotCi0gICAgICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRp
b25zKQotICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IGUpCi0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ21vZF9weXdlYnNvY2tldDogJXMnICUgdXRp
bC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIF9tYWluKHN5cy5hcmd2WzE6XSkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTdkMzEzNmFjOWI0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
c3RyZWFtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotIiIiVGhpcyBmaWxlIGV4cG9ydHMgcHVibGljIHN5bWJvbHMuIiIiCi0KLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQg
SW52YWxpZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2Jhc2UgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1faGl4aWU3NSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBGcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9oeWJpIGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotCi0jIFRoZXNlIG1ldGhvZHMgYXJlIGludGVuZGVkIHRv
IGJlIHVzZWQgYnkgV2ViU29ja2V0IGNsaWVudCBkZXZlbG9wZXJzIHRvIGhhdmUKLSMgdGhlaXIg
aW1wbGVtZW50YXRpb25zIHJlY2VpdmUgYnJva2VuIGRhdGEgaW4gdGVzdHMuCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zZV9mcmFtZQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfaGVhZGVyCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9waW5nX2ZyYW1l
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9wb25nX2Zy
YW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5h
cnlfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRl
X3RleHRfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3Jl
YXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzgyODRjZDA3NDQuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNDI0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCB1
dGlsaXRpZXMuIiIiCi0KLQotaW1wb3J0IGFycmF5Ci1pbXBvcnQgZXJybm8KLQotIyBJbXBvcnQg
aGFzaCBjbGFzc2VzIGZyb20gYSBtb2R1bGUgYXZhaWxhYmxlIGFuZCByZWNvbW1lbmRlZCBmb3Ig
ZWFjaCBQeXRob24KLSMgdmVyc2lvbiBhbmQgcmUtZXhwb3J0IHRob3NlIHN5bWJvbC4gVXNlIHNo
YSBhbmQgbWQ1IG1vZHVsZSBpbiBQeXRob24gMi40LCBhbmQKLSMgaGFzaGxpYiBtb2R1bGUgaW4g
UHl0aG9uIDIuNi4KLXRyeToKLSAgICBpbXBvcnQgaGFzaGxpYgotICAgIG1kNV9oYXNoID0gaGFz
aGxpYi5tZDUKLSAgICBzaGExX2hhc2ggPSBoYXNobGliLnNoYTEKLWV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICBpbXBvcnQgbWQ1Ci0gICAgaW1wb3J0IHNoYQotICAgIG1kNV9oYXNoID0gbWQ1Lm1k
NQotICAgIHNoYTFfaGFzaCA9IHNoYS5zaGEKLQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IFN0cmlu
Z0lPCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQK
LWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB6bGliCi0KLXRyeToKLSAgICBmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgZmFzdF9tYXNraW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFz
cwotCi0KLWRlZiBnZXRfc3RhY2tfdHJhY2UoKToKLSAgICAiIiJHZXQgdGhlIGN1cnJlbnQgc3Rh
Y2sgdHJhY2UgYXMgc3RyaW5nLgotCi0gICAgVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBQeXRo
b24gMi4zLgotICAgIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gd2Ugb25seSBzdXBwb3J0IFB5dGhv
biAyLjQgYW5kIGFib3ZlLgotICAgICAgICAgIFVzZSB0cmFjZWJhY2suZm9ybWF0X2V4YyBpbnN0
ZWFkLgotICAgICIiIgotICAgIG91dCA9IFN0cmluZ0lPKCkKLSAgICB0cmFjZWJhY2sucHJpbnRf
ZXhjKGZpbGU9b3V0KQotICAgIHJldHVybiBvdXQuZ2V0dmFsdWUoKQotCi0KLWRlZiBwcmVwZW5k
X21lc3NhZ2VfdG9fZXhjZXB0aW9uKG1lc3NhZ2UsIGV4Yyk6Ci0gICAgIiIiUHJlcGVuZCBtZXNz
YWdlIHRvIHRoZSBleGNlcHRpb24uIiIiCi0gICAgZXhjLmFyZ3MgPSAobWVzc2FnZSArIHN0cihl
eGMpLCkKLSAgICByZXR1cm4KLQotCi1kZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3ln
d2luX3BhdGgpOgotICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4z
MiBweXRob24gdG8gcnVuIGN5Z3dpbiBwcm9ncmFtCi0gICAgKGUuZy4gcGVybCkuICBOb3RlIHRo
YXQgaXQgZG9lc24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKLSAgICB3aGlj
aCBpcyB0eXBpY2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4u
Ci0gICAgRm9yIFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3ln
d2luIGJpbmFyaWVzLgotCi0gICAgQXJnczoKLSAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQg
bGluZQotICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnks
IG9yIE5vbmUKLSAgICBSZXR1cm5zOgotICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBs
aW5lLgotICAgICIiIgotICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKLSAgICAgICAgcmV0dXJuIGlu
dGVycAotICAgIG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCi0g
ICAgaWYgbToKLSAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3Vw
KDEpKQotICAgICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQotICAgIHJldHVybiBpbnRlcnAK
LQotCi1kZWYgZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUp
OgotICAgIHIiIiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlw
dC4KLQotICAgIEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9u
IGlzIHVzZWQsIGUuZy4gaW4gV2ViS2l0LAotICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVy
bCAtd1QgaGVsbG8ucGwiLgotICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4g
Q2hyb21pdW0sIGl0IGNvdWxkbid0LiAgU28sIGZpeAotICAgICIvdXNyL2Jpbi9wZXJsIiB0byAi
PGN5Z3dpbl9wYXRoPlxwZXJsLmV4ZSIuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0X3BhdGg6
IHBhdGhuYW1lIG9mIHRoZSBzY3JpcHQKLSAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFt
ZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoKLSAgICAgICMhLWludGVy
cHJldGVyIGNvbW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgotICAg
ICIiIgotICAgIGZwID0gb3BlbihzY3JpcHRfcGF0aCkKLSAgICBsaW5lID0gZnAucmVhZGxpbmUo
KQotICAgIGZwLmNsb3NlKCkKLSAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQotICAg
IGlmIG06Ci0gICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3ln
d2luX3BhdGgpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihj
eWd3aW5fcGF0aCk6Ci0gICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24g
V2luZG93cy4KLQotICAgIEFyZ3M6Ci0gICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dp
biBiaW5hcnkgaWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQotICAgICAgICAgICAgICAg
ICAgICB0cmFuc2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KLSAgICAi
IiIKLSAgICBfX29yaWdfcG9wZW4zID0gb3MucG9wZW4zCi0KLSAgICBkZWYgX193cmFwX3BvcGVu
MyhjbWQsIG1vZGU9J3QnLCBidWZzaXplPS0xKToKLSAgICAgICAgY21kbGluZSA9IGNtZC5zcGxp
dCgnICcpCi0gICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0sIGN5
Z3dpbl9wYXRoKQotICAgICAgICBpZiBpbnRlcnA6Ci0gICAgICAgICAgICBjbWQgPSBpbnRlcnAg
KyAnICcgKyBjbWQKLSAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBidWZz
aXplKQotCi0gICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMwotCi0KLWRlZiBoZXhpZnkocyk6
Ci0gICAgcmV0dXJuICcgJy5qb2luKG1hcChsYW1iZGEgeDogJyUwMngnICUgb3JkKHgpLCBzKSkK
LQotCi1kZWYgZ2V0X2NsYXNzX2xvZ2dlcihvKToKLSAgICAiIiJSZXR1cm4gdGhlIGxvZ2dpbmcg
Y2xhc3MgaW5mb3JtYXRpb24uIiIiCi0gICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKAotICAg
ICAgICAnJXMuJXMnICUgKG8uX19jbGFzc19fLl9fbW9kdWxlX18sIG8uX19jbGFzc19fLl9fbmFt
ZV9fKSkKLQotCi1jbGFzcyBOb29wTWFza2VyKG9iamVjdCk6Ci0gICAgIiIiQSBOb09wIG1hc2tp
bmcgb2JqZWN0LgotCi0gICAgVGhpcyBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIFJlcGVhdGVk
WG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKLSAgICB0aGUgc3RyaW5nIHBhc3NlZCBpbiB3aXRo
b3V0IG1ha2luZyBhbnkgY2hhbmdlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICAiIiJOb09wLiIiIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbWFzayhzZWxm
LCBzKToKLSAgICAgICAgIiIiTm9PcC4iIiIKLSAgICAgICAgcmV0dXJuIHMKLQotCi1jbGFzcyBS
ZXBlYXRlZFhvck1hc2tlcihvYmplY3QpOgotCi0gICAgIiIiQSBtYXNraW5nIG9iamVjdCB0aGF0
IGFwcGxpZXMgWE9SIG9uIHRoZSBzdHJpbmcuCi0KLSAgICBBcHBsaWVzIFhPUiBvbiB0aGUgc3Ry
aW5nIGdpdmVuIHRvIG1hc2sgbWV0aG9kIHdpdGggdGhlIG1hc2tpbmcgYnl0ZXMKLSAgICBnaXZl
biB0byB0aGUgY29uc3RydWN0b3IgcmVwZWF0ZWRseS4gVGhpcyBvYmplY3QgcmVtZW1iZXJzIHRo
ZSBwb3NpdGlvbgotICAgIGluIHRoZSBtYXNraW5nIGJ5dGVzIHRoZSBsYXN0IG1hc2sgbWV0aG9k
IGNhbGwgZW5kZWQgYW5kIHJlc3VtZXMgZnJvbQotICAgIHRoYXQgcG9pbnQgb24gdGhlIG5leHQg
bWFzayBtZXRob2QgY2FsbC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNr
aW5nX2tleSk6Ci0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5ID0gbWFza2luZ19rZXkKLSAgICAg
ICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSAwCi0KLSAgICBkZWYgX21hc2tfdXNpbmdfc3dp
ZyhzZWxmLCBzKToKLSAgICAgICAgIiIiUGVyZm9ybSB0aGUgbWFzayB2aWEgU1dJRy4iIiIKLSAg
ICAgICAgbWFza2VkX2RhdGEgPSBmYXN0X21hc2tpbmcubWFzaygKLSAgICAgICAgICAgICAgICBz
LCBzZWxmLl9tYXNraW5nX2tleSwgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgpCi0gICAgICAgIHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4ID0gKAotICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5n
X2tleV9pbmRleCArIGxlbihzKSkgJSBsZW4oc2VsZi5fbWFza2luZ19rZXkpKQotICAgICAgICBy
ZXR1cm4gbWFza2VkX2RhdGEKLQotICAgIGRlZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToK
LSAgICAgICAgIiIiUGVyZm9ybSB0aGUgbWFzayB2aWEgcHl0aG9uLiIiIgotICAgICAgICByZXN1
bHQgPSBhcnJheS5hcnJheSgnQicpCi0gICAgICAgIHJlc3VsdC5mcm9tc3RyaW5nKHMpCi0KLSAg
ICAgICAgIyBVc2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNv
c3QgdG8gYWNjZXNzCi0gICAgICAgICMgYXR0cmlidXRlcwotICAgICAgICBtYXNraW5nX2tleSA9
IG1hcChvcmQsIHNlbGYuX21hc2tpbmdfa2V5KQotICAgICAgICBtYXNraW5nX2tleV9zaXplID0g
bGVuKG1hc2tpbmdfa2V5KQotICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IHNlbGYuX21hc2tp
bmdfa2V5X2luZGV4Ci0KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAg
ICAgICAgICAgIHJlc3VsdFtpXSBePSBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF0KLSAg
ICAgICAgICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBt
YXNraW5nX2tleV9zaXplCi0KLSAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSBtYXNr
aW5nX2tleV9pbmRleAotCi0gICAgICAgIHJldHVybiByZXN1bHQudG9zdHJpbmcoKQotCi0gICAg
aWYgJ2Zhc3RfbWFza2luZycgaW4gZ2xvYmFscygpOgotICAgICAgICBtYXNrID0gX21hc2tfdXNp
bmdfc3dpZwotICAgIGVsc2U6Ci0gICAgICAgIG1hc2sgPSBfbWFza191c2luZ19hcnJheQotCi0K
LSMgQnkgbWFraW5nIHdiaXRzIG9wdGlvbiBuZWdhdGl2ZSwgd2UgY2FuIHN1cHByZXNzIENNRi9G
TEcgKDIgb2N0ZXQpIGFuZAotIyBBRExFUjMyICg0IG9jdGV0KSBmaWVsZHMgb2YgemxpYiBzbyB0
aGF0IHdlIGNhbiB1c2UgemxpYiBtb2R1bGUganVzdCBhcwotIyBkZWZsYXRlIGxpYnJhcnkuIERJ
Q1RJRCB3b24ndCBiZSBhZGRlZCBhcyBmYXIgYXMgd2UgZG9uJ3Qgc2V0IGRpY3Rpb25hcnkuCi0j
IExaNzcgd2luZG93IG9mIDMySyB3aWxsIGJlIHVzZWQgZm9yIGJvdGggY29tcHJlc3Npb24gYW5k
IGRlY29tcHJlc3Npb24uCi0jIEZvciBkZWNvbXByZXNzaW9uLCB3ZSBjYW4ganVzdCB1c2UgMzJL
IHRvIGNvdmVyIGFueSB3aW5kb3dzIHNpemUuIEZvcgotIyBjb21wcmVzc2lvbiwgd2UgdXNlIDMy
SyBzbyByZWNlaXZlcnMgbXVzdCB1c2UgMzJLLgotIwotIyBDb21wcmVzc2lvbiBsZXZlbCBpcyBa
X0RFRkFVTFRfQ09NUFJFU1NJT04uIFdlIGRvbid0IGhhdmUgdG8gbWF0Y2ggbGV2ZWwKLSMgdG8g
ZGVjb2RlLgotIwotIyBTZWUgemNvbmYuaCwgZGVmbGF0ZS5jYywgaW5mbGF0ZS5jYyBvZiB6bGli
IGxpYnJhcnksIGFuZCB6bGlibW9kdWxlLmMgb2YKLSMgUHl0aG9uLiBTZWUgYWxzbyBSRkMxOTUw
IChaTElCIDMuMykuCi0KLQotY2xhc3MgX0RlZmxhdGVyKG9iamVjdCk6Ci0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgd2luZG93X2JpdHMpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSBnZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsIC13aW5kb3dfYml0cykKLQotICAgIGRlZiBjb21wcmVzcyhzZWxmLCBieXRlcyk6Ci0gICAg
ICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRf
Ynl0ZXMpCi0gICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVzCi0KLSAgICBkZWYgY29tcHJl
c3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyA9IHNl
bGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQotICAgICAgICBjb21wcmVzc2VkX2J5dGVzICs9
IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykKLSAgICAg
ICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKLQotICAgIGRlZiBjb21wcmVzc19hbmRfZmluaXNo
KHNlbGYsIGJ5dGVzKToKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNz
LmNvbXByZXNzKGJ5dGVzKQotICAgICAgICBjb21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29t
cHJlc3MgaW5wdXQgJXInLCBieXRlcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21w
cmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQotICAgICAgICByZXR1cm4gY29tcHJl
c3NlZF9ieXRlcwotCi0KLWNsYXNzIF9JbmZsYXRlcihvYmplY3QpOgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHdpbmRvd19iaXRzKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl93aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzCi0K
LSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9ICcnCi0KLSAgICAgICAgc2VsZi5yZXNldCgpCi0K
LSAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgbm90IChzaXplID09
IC0xIG9yIHNpemUgPiAwKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc2l6ZSBtdXN0
IGJlIC0xIG9yIHBvc2l0aXZlJykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgaWYgc2l6ZSA9PSAtMToKLSAgICAgICAgICAgICAgICBkYXRh
ICs9IHNlbGYuX2RlY29tcHJlc3MuZGVjb21wcmVzcyhzZWxmLl91bmNvbnN1bWVkKQotICAgICAg
ICAgICAgICAgICMgU2VlIFB5dGhvbiBidWcgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEy
MDUwIHRvCi0gICAgICAgICAgICAgICAgIyB1bmRlcnN0YW5kIHdoeSB0aGUgc2FtZSBjb2RlIGNh
bm5vdCBiZSB1c2VkIGZvciB1cGRhdGluZwotICAgICAgICAgICAgICAgICMgc2VsZi5fdW5jb25z
dW1lZCBmb3IgaGVyZSBhbmQgZWxzZSBibG9jay4KLSAgICAgICAgICAgICAgICBzZWxmLl91bmNv
bnN1bWVkID0gJycKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBz
ZWxmLl9kZWNvbXByZXNzLmRlY29tcHJlc3MoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Vu
Y29uc3VtZWQsIHNpemUgLSBsZW4oZGF0YSkpCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25z
dW1lZCA9IHNlbGYuX2RlY29tcHJlc3MudW5jb25zdW1lZF90YWlsCi0gICAgICAgICAgICBpZiBz
ZWxmLl9kZWNvbXByZXNzLnVudXNlZF9kYXRhOgotICAgICAgICAgICAgICAgICMgRW5jb3VudGVy
ZWQgYSBsYXN0IGJsb2NrIChpLmUuIGEgYmxvY2sgd2l0aCBCRklOQUwgPSAxKSBhbmQKLSAgICAg
ICAgICAgICAgICAjIGZvdW5kIGEgbmV3IHN0cmVhbSAodW51c2VkX2RhdGEpLiBXZSBjYW5ub3Qg
dXNlIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgIyB6bGliLkRlY29tcHJlc3Mgb2JqZWN0IGZv
ciB0aGUgbmV3IHN0cmVhbS4gQ3JlYXRlIGEgbmV3Ci0gICAgICAgICAgICAgICAgIyBEZWNvbXBy
ZXNzIG9iamVjdCB0byBkZWNvbXByZXNzIHRoZSBuZXcgb25lLgotICAgICAgICAgICAgICAgICMK
LSAgICAgICAgICAgICAgICAjIEl0J3MgZmluZSB0byBpZ25vcmUgdW5jb25zdW1lZF90YWlsIGlm
IHVudXNlZF9kYXRhIGlzIG5vdAotICAgICAgICAgICAgICAgICMgZW1wdHkuCi0gICAgICAgICAg
ICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IHNlbGYuX2RlY29tcHJlc3MudW51c2VkX2RhdGEKLSAg
ICAgICAgICAgICAgICBzZWxmLnJlc2V0KCkKLSAgICAgICAgICAgICAgICBpZiBzaXplID49IDAg
YW5kIGxlbihkYXRhKSA9PSBzaXplOgotICAgICAgICAgICAgICAgICAgICAjIGRhdGEgaXMgZmls
bGVkLiBEb24ndCBjYWxsIGRlY29tcHJlc3MgYWdhaW4uCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBSZS1pbnZv
a2UgRGVjb21wcmVzcy5kZWNvbXByZXNzIHRvIHRyeSB0byBkZWNvbXByZXNzIGFsbAotICAgICAg
ICAgICAgICAgICAgICAjIGF2YWlsYWJsZSBieXRlcyBiZWZvcmUgaW52b2tpbmcgcmVhZCB3aGlj
aCBibG9ja3MgdW50aWwKLSAgICAgICAgICAgICAgICAgICAgIyBhbnkgbmV3IGJ5dGUgaXMgYXZh
aWxhYmxlLgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAjIEhlcmUsIHNpbmNlIHVudXNlZF9kYXRhIGlzIGVtcHR5LCBldmVu
IGlmIHVuY29uc3VtZWRfdGFpbCBpcwotICAgICAgICAgICAgICAgICMgbm90IGVtcHR5LCBieXRl
cyBvZiByZXF1ZXN0ZWQgbGVuZ3RoIGFyZSBhbHJlYWR5IGluIGRhdGEuIFdlCi0gICAgICAgICAg
ICAgICAgIyBkb24ndCBoYXZlIHRvICJjb250aW51ZSIgaGVyZS4KLSAgICAgICAgICAgICAgICBi
cmVhawotCi0gICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J0RlY29tcHJlc3NlZCAlcicsIGRhdGEpCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYg
YXBwZW5kKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FwcGVuZGVk
ICVyJywgZGF0YSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICBkZWYg
cmVzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVzZXQnKQotICAgICAg
ICBzZWxmLl9kZWNvbXByZXNzID0gemxpYi5kZWNvbXByZXNzb2JqKC1zZWxmLl93aW5kb3dfYml0
cykKLQotCi0jIENvbXByZXNzZXMvZGVjb21wcmVzc2VzIGdpdmVuIG9jdGV0cyB1c2luZyB0aGUg
bWV0aG9kIGludHJvZHVjZWQgaW4gUkZDMTk3OS4KLQotCi1jbGFzcyBfUkZDMTk3OURlZmxhdGVy
KG9iamVjdCk6Ci0gICAgIiIiQSBjb21wcmVzc29yIGNsYXNzIHRoYXQgYXBwbGllcyBERUZMQVRF
IHRvIGdpdmVuIGJ5dGUgc2VxdWVuY2UgYW5kCi0gICAgZmx1c2hlcyB1c2luZyB0aGUgYWxnb3Jp
dGhtIGRlc2NyaWJlZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIuMS4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cywgbm9fY29udGV4dF90YWtlb3Zlcik6Ci0g
ICAgICAgIHNlbGYuX2RlZmxhdGVyID0gTm9uZQotICAgICAgICBpZiB3aW5kb3dfYml0cyBpcyBO
b25lOgotICAgICAgICAgICAgd2luZG93X2JpdHMgPSB6bGliLk1BWF9XQklUUwotICAgICAgICBz
ZWxmLl93aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzCi0gICAgICAgIHNlbGYuX25vX2NvbnRleHRf
dGFrZW92ZXIgPSBub19jb250ZXh0X3Rha2VvdmVyCi0KLSAgICBkZWYgZmlsdGVyKHNlbGYsIGJ5
dGVzLCBlbmQ9VHJ1ZSwgYmZpbmFsPUZhbHNlKToKLSAgICAgICAgaWYgc2VsZi5fZGVmbGF0ZXIg
aXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHNlbGYuX3dp
bmRvd19iaXRzKQotCi0gICAgICAgIGlmIGJmaW5hbDoKLSAgICAgICAgICAgIHJlc3VsdCA9IHNl
bGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goYnl0ZXMpCi0gICAgICAgICAgICAjIEFk
ZCBhIHBhZGRpbmcgYmxvY2sgd2l0aCBCRklOQUwgPSAwIGFuZCBCVFlQRSA9IDAuCi0gICAgICAg
ICAgICByZXN1bHQgPSByZXN1bHQgKyBjaHIoMCkKLSAgICAgICAgICAgIHNlbGYuX2RlZmxhdGVy
ID0gTm9uZQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgICAgIHJlc3VsdCA9IHNl
bGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykKLSAgICAgICAgaWYgZW5kOgot
ICAgICAgICAgICAgIyBTdHJpcCBsYXN0IDQgb2N0ZXRzIHdoaWNoIGlzIExFTiBhbmQgTkxFTiBm
aWVsZCBvZiBhCi0gICAgICAgICAgICAjIG5vbi1jb21wcmVzc2VkIGJsb2NrIGFkZGVkIGZvciBa
X1NZTkNfRkxVU0guCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOi00XQotCi0gICAgICAg
IGlmIHNlbGYuX25vX2NvbnRleHRfdGFrZW92ZXIgYW5kIGVuZDoKLSAgICAgICAgICAgIHNlbGYu
X2RlZmxhdGVyID0gTm9uZQotCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi1jbGFzcyBfUkZD
MTk3OUluZmxhdGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkZWNvbXByZXNzb3IgY2xhc3MgYSBsYSBS
RkMxOTc5LgotCi0gICAgQSBkZWNvbXByZXNzb3IgY2xhc3MgZm9yIGJ5dGUgc2VxdWVuY2UgY29t
cHJlc3NlZCBhbmQgZmx1c2hlZCBmb2xsb3dpbmcKLSAgICB0aGUgYWxnb3JpdGhtIGRlc2NyaWJl
ZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIuMS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB3aW5kb3dfYml0cz16bGliLk1BWF9XQklUUyk6Ci0gICAgICAgIHNlbGYuX2luZmxh
dGVyID0gX0luZmxhdGVyKHdpbmRvd19iaXRzKQotCi0gICAgZGVmIGZpbHRlcihzZWxmLCBieXRl
cyk6Ci0gICAgICAgICMgUmVzdG9yZSBzdHJpcHBlZCBMRU4gYW5kIE5MRU4gZmllbGQgb2YgYSBu
b24tY29tcHJlc3NlZCBibG9jayBhZGRlZAotICAgICAgICAjIGZvciBaX1NZTkNfRkxVU0guCi0g
ICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChieXRlcyArICdceDAwXHgwMFx4ZmZceGZmJykK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2luZmxhdGVyLmRlY29tcHJlc3MoLTEpCi0KLQotY2xhc3Mg
RGVmbGF0ZVNvY2tldChvYmplY3QpOgotICAgICIiIkEgd3JhcHBlciBjbGFzcyBmb3Igc29ja2V0
IG9iamVjdCB0byBpbnRlcmNlcHQgc2VuZCBhbmQgcmVjdiB0byBwZXJmb3JtCi0gICAgZGVmbGF0
ZSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiB0cmFuc3BhcmVudGx5LgotICAgICIiIgot
Ci0gICAgIyBTaXplIG9mIHRoZSBidWZmZXIgcGFzc2VkIHRvIHJlY3YgdG8gcmVjZWl2ZSBjb21w
cmVzc2VkIGRhdGEuCi0gICAgX1JFQ1ZfU0laRSA9IDQwOTYKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBzb2NrZXQpOgotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICBz
ZWxmLl9sb2dnZXIgPSBnZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fZGVm
bGF0ZXIgPSBfRGVmbGF0ZXIoemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIHNlbGYuX2luZmxhdGVy
ID0gX0luZmxhdGVyKHpsaWIuTUFYX1dCSVRTKQotCi0gICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZSk6
Ci0gICAgICAgICIiIlJlY2VpdmVzIGRhdGEgZnJvbSB0aGUgc29ja2V0IHNwZWNpZmllZCBvbiB0
aGUgY29uc3RydWN0aW9uIHVwCi0gICAgICAgIHRvIHRoZSBzcGVjaWZpZWQgc2l6ZS4gT25jZSBh
bnkgZGF0YSBpcyBhdmFpbGFibGUsIHJldHVybnMgaXQgZXZlbgotICAgICAgICBpZiBpdCdzIHNt
YWxsZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHNpemUuCi0gICAgICAgICIiIgotCi0gICAgICAgICMg
VE9ETyh0eW9zaGlubyk6IEFsbG93IGNhbGwgd2l0aCBzaXplPTAuIEl0IHNob3VsZCBibG9jayB1
bnRpbCBhbnkKLSAgICAgICAgIyBkZWNvbXByZXNzZWQgZGF0YSBpcyBhdmFpbGFibGUuCi0gICAg
ICAgIGlmIHNpemUgPD0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm9uLXBvc2l0
aXZlIHNpemUgcGFzc2VkJykKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGRhdGEg
PSBzZWxmLl9pbmZsYXRlci5kZWNvbXByZXNzKHNpemUpCi0gICAgICAgICAgICBpZiBsZW4oZGF0
YSkgIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgICAgICAgICByZWFk
X2RhdGEgPSBzZWxmLl9zb2NrZXQucmVjdihEZWZsYXRlU29ja2V0Ll9SRUNWX1NJWkUpCi0gICAg
ICAgICAgICBpZiBub3QgcmVhZF9kYXRhOgotICAgICAgICAgICAgICAgIHJldHVybiAnJwotICAg
ICAgICAgICAgc2VsZi5faW5mbGF0ZXIuYXBwZW5kKHJlYWRfZGF0YSkKLQotICAgIGRlZiBzZW5k
YWxsKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5zZW5kKGJ5dGVzKQotCi0gICAgZGVmIHNl
bmQoc2VsZiwgYnl0ZXMpOgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9kZWZs
YXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpKQotICAgICAgICByZXR1cm4gbGVuKGJ5dGVz
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMyM2E1ZDI4Yjc1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L19zdHJlYW1faGl4aWU3NS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1f
aHliaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2Rpc3BhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVh
ZGVyX3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tdXgu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFya19oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQveGhyX2JlbmNobWFya19oYW5kbGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0M2E1YjA0OTIyMGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC94aHJfYmVuY2htYXJrX2hhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotIyBs
aWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMgaHR0
cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLQot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1jbGFzcyBYSFJCZW5jaG1hcmtI
YW5kbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlYWRlcnMsIHJmaWxlLCB3
ZmlsZSk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxm
KQotCi0gICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKLSAgICAgICAgc2VsZi5yZmlsZSA9
IHJmaWxlCi0gICAgICAgIHNlbGYud2ZpbGUgPSB3ZmlsZQotCi0gICAgZGVmIGRvX3NlbmQoc2Vs
Zik6Ci0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFkZXIo
J0NvbnRlbnQtTGVuZ3RoJykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1ZXN0
ZWQgdG8gcmVjZWl2ZSAlcyBieXRlcycsIGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIFJFQ0VJ
VkVfQkxPQ0tfU0laRSA9IDEwMjQgKiAxMDI0Ci0KLSAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZSA9
IGNvbnRlbnRfbGVuZ3RoCi0gICAgICAgIHdoaWxlIGJ5dGVzX3RvX3JlY2VpdmUgPiAwOgotICAg
ICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPSBieXRlc190b19yZWNlaXZl
Ci0gICAgICAgICAgICBpZiBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCA+IFJFQ0VJVkVf
QkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9v
cCA9IFJFQ0VJVkVfQkxPQ0tfU0laRQotICAgICAgICAgICAgcmVjZWl2ZWRfZGF0YSA9IHNlbGYu
cmZpbGUucmVhZChieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAgIGlm
IHJlY2VpdmVkX2RhdGEgIT0gKCdhJyAqIGJ5dGVzX3RvX3JlY2VpdmVfaW5fdGhpc19sb29wKToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3QgYm9keSB2ZXJpZmlj
YXRpb24gZmFpbGVkJykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGJ5dGVz
X3RvX3JlY2VpdmUgLT0gbGVuKHJlY2VpdmVkX2RhdGEpCi0gICAgICAgIGlmIGJ5dGVzX3RvX3Jl
Y2VpdmUgPCAwOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCAlZCBt
b3JlIGJ5dGVzIHRoYW4gZXhwZWN0ZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoLWJ5dGVzX3RvX3JlY2VpdmUpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBS
ZXR1cm4gdGhlIG51bWJlciBvZiByZWNlaXZlZCBieXRlcyBiYWNrIHRvIHRoZSBjbGllbnQuCi0g
ICAgICAgIHJlc3BvbnNlX2JvZHkgPSAnJWQnICUgY29udGVudF9sZW5ndGgKLSAgICAgICAgc2Vs
Zi53ZmlsZS53cml0ZSgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAg
ICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKlxyXG4nCi0gICAgICAgICAgICAn
Q29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuJwotICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3Ro
OiAlZFxyXG4nCi0gICAgICAgICAgICAnXHJcbiVzJyAlIChsZW4ocmVzcG9uc2VfYm9keSksIHJl
c3BvbnNlX2JvZHkpKQotICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAgIGRlZiBkb19y
ZWNlaXZlX2FuZF9wYXJzZShzZWxmKToKLSAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoc2Vs
Zi5oZWFkZXJzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSkKLSAgICAgICAgcmVxdWVzdF9i
b2R5ID0gc2VsZi5yZmlsZS5yZWFkKGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIHJlcXVlc3Rf
YXJyYXkgPSByZXF1ZXN0X2JvZHkuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4ocmVxdWVzdF9h
cnJheSkgPCAyOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdNYWxmb3JtZWQgcmVx
dWVzdCBib2R5OiAlcicsIHJlcXVlc3RfYm9keSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICMgUGFyc2UgdGhlIHNpemUgcGFyYW1ldGVyLgotICAgICAgICBieXRlc190b19zZW5kID0g
cmVxdWVzdF9hcnJheVswXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlc190b19zZW5k
ID0gaW50KGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0g
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ01hbGZvcm1lZCBzaXplIHBhcmFtZXRlcjog
JXInLCBieXRlc190b19zZW5kKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBQYXJz
ZSB0aGUgdHJhbnNmZXIgZW5jb2RpbmcgcGFyYW1ldGVyLgotICAgICAgICBjaHVua2VkX21vZGUg
PSBGYWxzZQotICAgICAgICBtb2RlX3BhcmFtZXRlciA9IHJlcXVlc3RfYXJyYXlbMV0KLSAgICAg
ICAgaWYgbW9kZV9wYXJhbWV0ZXIgPT0gJ2NodW5rZWQnOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZXF1ZXN0ZWQgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZycpCi0gICAgICAg
ICAgICBjaHVua2VkX21vZGUgPSBUcnVlCi0gICAgICAgIGVsaWYgbW9kZV9wYXJhbWV0ZXIgIT0g
J25vbmUnOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdJbnZhbGlkIG1vZGUgcGFy
YW1ldGVyOiAlcicsIG1vZGVfcGFyYW1ldGVyKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgc2VsZi5kb19yZWNlaXZlKGJ5dGVzX3RvX3NlbmQsIGNodW5rZWRfbW9kZSwgRmFsc2UpCi0K
LSAgICBkZWYgZG9fcmVjZWl2ZShzZWxmLCBieXRlc190b19zZW5kLCBjaHVua2VkX21vZGUsIGVu
YWJsZV9jYWNoZSk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdS
ZXF1ZXN0ZWQgdG8gc2VuZCAlcyBieXRlcyAoY2h1bmtlZDogJXMsIGNhY2hlOiAlcyknLAotICAg
ICAgICAgICAgYnl0ZXNfdG9fc2VuZCwgY2h1bmtlZF9tb2RlLCBlbmFibGVfY2FjaGUpCi0gICAg
ICAgICMgV3JpdGUgYSBoZWFkZXIKLSAgICAgICAgcmVzcG9uc2VfaGVhZGVyID0gKAotICAgICAg
ICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCi0gICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luOiAqXHJcbicKLSAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbVxyXG4nKQotICAgICAgICBpZiBlbmFibGVfY2FjaGU6Ci0gICAgICAg
ICAgICByZXNwb25zZV9oZWFkZXIgKz0gJ0NhY2hlLUNvbnRyb2w6IHByaXZhdGUsIG1heC1hZ2U9
MTBcclxuJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzcG9uc2VfaGVhZGVyICs9IFwK
LSAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0
LXJldmFsaWRhdGVcclxuJwotICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAgICBy
ZXNwb25zZV9oZWFkZXIgKz0gJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXNwb25zZV9oZWFkZXIgKz0gKAotICAgICAgICAg
ICAgICAgICdDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbicgJSBieXRlc190b19zZW5kKQotICAg
ICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlX2hlYWRlcikKLSAgICAgICAgc2VsZi53Zmls
ZS5mbHVzaCgpCi0KLSAgICAgICAgIyBXcml0ZSBhIGJvZHkKLSAgICAgICAgU0VORF9CTE9DS19T
SVpFID0gMTAyNCAqIDEwMjQKLQotICAgICAgICB3aGlsZSBieXRlc190b19zZW5kID4gMDoKLSAg
ICAgICAgICAgIGJ5dGVzX3RvX3NlbmRfaW5fdGhpc19sb29wID0gYnl0ZXNfdG9fc2VuZAotICAg
ICAgICAgICAgaWYgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPiBTRU5EX0JMT0NLX1NJWkU6
Ci0gICAgICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPSBTRU5EX0JMT0NL
X1NJWkUKLQotICAgICAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgotICAgICAgICAgICAgICAgIHNl
bGYud2ZpbGUud3JpdGUoJyV4XHJcbicgJSBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcCkKLSAg
ICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJ2EnICogYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xv
b3ApCi0gICAgICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi53
ZmlsZS53cml0ZSgnXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAg
ICAgICAgICAgYnl0ZXNfdG9fc2VuZCAtPSBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcAotCi0g
ICAgICAgIGlmIGNodW5rZWRfbW9kZToKLSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJzBc
clxuXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NldHVwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5MzVkNmIxMDU4OTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NldHVwLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNzQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJTZXQgdXAgc2NyaXB0IGZvciBtb2RfcHl3ZWJzb2NrZXQuCi0iIiIK
LQotCi1mcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9uCi1pbXBvcnQg
c3lzCi0KLQotX1BBQ0tBR0VfTkFNRSA9ICdtb2RfcHl3ZWJzb2NrZXQnCi0KLSMgQnVpbGQgYW5k
IHVzZSBhIEMrKyBleHRlbnNpb24gZm9yIGZhc3RlciBtYXNraW5nLiBTV0lHIGlzIHJlcXVpcmVk
LgotX1VTRV9GQVNUX01BU0tJTkcgPSBGYWxzZQotCi1pZiBzeXMudmVyc2lvbiA8ICcyLjMnOgot
ICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICclcyByZXF1aXJlcyBQeXRob24gMi4zIG9yIGxhdGVy
LicgJSBfUEFDS0FHRV9OQU1FCi0gICAgc3lzLmV4aXQoMSkKLQotaWYgX1VTRV9GQVNUX01BU0tJ
Tkc6Ci0gICAgc2V0dXAoZXh0X21vZHVsZXM9WwotICAgICAgICAgICAgICAgICAgRXh0ZW5zaW9u
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0L19mYXN0X21hc2tp
bmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbJ21vZF9weXdlYnNvY2tldC9mYXN0X21h
c2tpbmcuaSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lnX29wdHM9WyctYysrJ10p
XSkKLQotc2V0dXAoYXV0aG9yPSdZdXpvIEZ1amlzaGltYScsCi0gICAgICBhdXRob3JfZW1haWw9
J3l1em9AY2hyb21pdW0ub3JnJywKLSAgICAgIGRlc2NyaXB0aW9uPSdXZWJTb2NrZXQgZXh0ZW5z
aW9uIGZvciBBcGFjaGUgSFRUUCBTZXJ2ZXIuJywKLSAgICAgIGxvbmdfZGVzY3JpcHRpb249KAot
ICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0IGlzIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBl
eHRlbnNpb24gZm9yICcKLSAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgKFJG
QyA2NDU1KS4gJwotICAgICAgICAgICAgICAnU2VlIG1vZF9weXdlYnNvY2tldC9fX2luaXRfXy5w
eSBmb3IgbW9yZSBkZXRhaWwuJyksCi0gICAgICBsaWNlbnNlPSdTZWUgTElDRU5TRScsCi0gICAg
ICBuYW1lPV9QQUNLQUdFX05BTUUsCi0gICAgICBwYWNrYWdlcz1bX1BBQ0tBR0VfTkFNRSwgX1BB
Q0tBR0VfTkFNRSArICcuaGFuZHNoYWtlJ10sCi0gICAgICB1cmw9J2h0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9weXdlYnNvY2tldC8nLAotICAgICAgIyBTZWUgdGhlIHNvdXJjZSBvZiBkaXN0dXRp
bHMudmVyc2lvbiwgZGlzdHV0aWxzLnZlcnNpb25wcmVkaWNhdGUgYW5kCi0gICAgICAjIGRpc3R1
dGlscy5kaXN0IHRvIHVuZGVyc3RhbmQgaG93IHRvIG5hbWUgdmVyc2lvbiBudW1iZXJzLgotICAg
ICAgdmVyc2lvbj0nMC43LjknLAotICAgICAgKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvQ09QWUlORyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NPUFlJTkcKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk4OWQwMmU0Y2QwOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL01BTklG
RVNULmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTI1Njg4MmM1NmYuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9NQU5JRkVTVC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDYg
KzAsMCBAQAotaW5jbHVkZSBDT1BZSU5HCi1pbmNsdWRlIE1BTklGRVNULmluCi1pbmNsdWRlIFJF
QURNRQotcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5Ci1yZWN1cnNpdmUtaW5jbHVkZSBt
b2RfcHl3ZWJzb2NrZXQgKi5weQotcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9SRUFETUUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM4Yzc1OGY1ZWVmNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL1JF
QURNRQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUlOU1RBTEwKLQotVG8gaW5zdGFs
bCB0aGlzIHBhY2thZ2UgdG8gdGhlIHN5c3RlbSwgcnVuIHRoaXM6Ci0kIHB5dGhvbiBzZXR1cC5w
eSBidWlsZAotJCBzdWRvIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCi0KLVRvIGluc3RhbGwgdGhp
cyBwYWNrYWdlIGFzIGEgbm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6Ci0kIHB5dGhvbiBz
ZXR1cC5weSBidWlsZAotJCBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIKLQotTEFVTkNI
Ci0KLVRvIHVzZSBweXdlYnNvY2tldCBhcyBBcGFjaGUgbW9kdWxlLCBydW4gdGhpcyB0byByZWFk
IHRoZSBkb2N1bWVudDoKLSQgcHlkb2MgbW9kX3B5d2Vic29ja2V0Ci0KLVRvIHVzZSBweXdlYnNv
Y2tldCBhcyBzdGFuZGFsb25lIHNlcnZlciwgcnVuIHRoaXMgdG8gcmVhZCB0aGUgZG9jdW1lbnQ6
Ci0kIHB5ZG9jIG1vZF9weXdlYnNvY2tldC5zdGFuZGFsb25lCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Fib3J0
X2hhbmRzaGFrZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwODAyM2Ex
ZmU5MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtl
X3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIs
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLQotCi1kZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFi
b3J0ZWRCeVVzZXJFeGNlcHRpb24oCi0gICAgICAgICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHBhc3MKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvYWJvcnRfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF93c2gucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYmYwMDVmNmEzNy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDMgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGhhbmRzaGFrZQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigKLSAgICAgICAg
IkFib3J0ZWQgaW4gd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIikKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjljZDdlMWVlNjUuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTM0ICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgot
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0K
LSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRp
b24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08
aHRtbD4KLTxoZWFkPgotPHRpdGxlPkFycmF5QnVmZmVyIGJlbmNobWFyazwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotdmFyIFBSSU5UX1NJWkUgPSB0
cnVlOwotCi0vLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgotdmFyIFNUQVJUX1NJWkUgPSAxMCAq
IDEwMjQ7Ci0vLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBhbiBhcnJheSBleGNl
ZWRzIHRoaXMgdGhyZXNob2xkLgotdmFyIFNUT1BfVEhSRVNIT0xEID0gMTAwMDAwICogMTAyNDsK
LS8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21hbGwsIHdyaXRlL3JlYWQgdGhlIGFy
cmF5IG11bHRpcGxlIHRpbWVzCi0vLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJlYWNoZXMgdGhp
cyB0aHJlc2hvbGQuCi12YXIgTUlOX1RPVEFMID0gMTAwMDAwICogMTAyNDsKLXZhciBNVUxUSVBM
SUVSUyA9IFs1LCAyXTsKLQotLy8gUmVwZWF0IGJlbmNobWFyayBmb3Igc2V2ZXJhbCB0aW1lcyB0
byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAotLy8gKHN1Y2ggYXMgSklUKSBydW4u
Ci12YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOwotCi1mdW5jdGlvbiB3cml0ZUJlbmNobWFyayhz
aXplLCBtaW5Ub3RhbCkgewotICB2YXIgdG90YWxTaXplID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6
ZSA8IG1pblRvdGFsKSB7Ci0gICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNp
emUpOwotCi0gICAgLy8gV3JpdGUgJ2Ency4KLSAgICBmaWxsQXJyYXlCdWZmZXIoYXJyYXlCdWZm
ZXIsIDB4NjEpOwotCi0gICAgdG90YWxTaXplICs9IHNpemU7Ci0gIH0KLSAgcmV0dXJuIHRvdGFs
U2l6ZTsKLX0KLQotZnVuY3Rpb24gcmVhZEJlbmNobWFyayhzaXplLCBtaW5Ub3RhbCkgewotICB2
YXIgdG90YWxTaXplID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7Ci0gICAg
dmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOwotCi0gICAgaWYgKCF2ZXJp
ZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsKLSAgICAgIHF1ZXVlTG9nKCdWZXJp
ZmljYXRpb24gZmFpbGVkJyk7Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgdG90YWxT
aXplICs9IHNpemU7Ci0gIH0KLSAgcmV0dXJuIHRvdGFsU2l6ZTsKLX0KLQotZnVuY3Rpb24gcnVu
QmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIHNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9sZCwKLSAgICAgICAgICAgICAgICAg
ICAgICBtaW5Ub3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVycywKLSAgICAg
ICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsKLSAgd2hpbGUgKHNpemUgPD0gc3Rv
cFRocmVzaG9sZCkgewotICAgIHZhciBtYXhTcGVlZCA9IDA7Ci0KLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKLSAgICAgIHZhciBzdGFydFRpbWVJbk1z
ID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgICAgIHZhciB0b3RhbFNpemUgPSBiZW5jaG1hcmtGdW5j
dGlvbihzaXplLCBtaW5Ub3RhbCk7Ci0KLSAgICAgIG1heFNwZWVkID0gTWF0aC5tYXgobWF4U3Bl
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVNwZWVkSW5LQih0b3RhbFNp
emUsIHN0YXJ0VGltZUluTXMpKTsKLSAgICB9Ci0gICAgcXVldWVMb2coZm9ybWF0UmVzdWx0SW5L
aUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKLQotICAgIHNpemUgKj0gbXVsdGlwbGll
cnNbbXVsdGlwbGllckluZGV4XTsKLSAgICBtdWx0aXBsaWVySW5kZXggPSAobXVsdGlwbGllcklu
ZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVuQmVu
Y2htYXJrcygpIHsKLSAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFNwZWVkIGluIGtC
L3MnKTsKLQotICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJrJyk7Ci0gIHJ1bkJlbmNobWFyaygK
LSAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RP
VEFMLCBNVUxUSVBMSUVSUywgMCk7Ci0gIHF1ZXVlTG9nKCdGaW5pc2hlZCcpOwotCi0gIHF1ZXVl
TG9nKCdSZWFkIGJlbmNobWFyaycpOwotICBydW5CZW5jaG1hcmsoCi0gICAgICByZWFkQmVuY2ht
YXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywg
MCk7Ci0gIGFkZFRvTG9nKCdGaW5pc2hlZCcpOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewotICBs
b2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgcXVldWVMb2cod2lu
ZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgYWRkVG9Mb2coJ1N0
YXJ0ZWQuLi4nKTsKLQotICBzZXRUaW1lb3V0KHJ1bkJlbmNobWFya3MsIDApOwotfQotCi08L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLTx0ZXh0YXJlYQotICAgIGlk
PSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNoX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2hfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MDY3Y2E3ZDg5NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2JlbmNoX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIkEgc2ltcGxlIGxvYWQgdGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50
cy4KLQotQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBhIG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGlt
ZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCi10aGlzIGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFy
dHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNvY2tldCBtZXNzYWdlcwotY29udGFpbmluZyA8
bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMuIDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBw
b2ludAotdmFsdWUuIDxjb3VudD4gbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlLgotIiIiCi0KLQot
aW1wb3J0IHRpbWUKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6Ci0gICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVf
bWVzc2FnZSgpCi0gICAgcGFydHMgPSBsaW5lLnNwbGl0KCcgJykKLSAgICBpZiBsZW4ocGFydHMp
ICE9IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBwYXJhbWV0ZXIgZm9ybWF0JykK
LSAgICB3YWl0ID0gZmxvYXQocGFydHNbMF0pCi0gICAgY291bnQgPSBpbnQocGFydHNbMV0pCi0g
ICAgbWVzc2FnZSA9IHBhcnRzWzJdCi0gICAgZm9yIGkgaW4geHJhbmdlKGNvdW50KToKLSAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHRpbWUu
c2xlZXAod2FpdCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUvYmVuY2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTIxODE3M2EwZjEuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMjAzICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08aHRtbD4K
LTxoZWFkPgotPHRpdGxlPldlYlNvY2tldCBiZW5jaG1hcms8L3RpdGxlPgotPHNjcmlwdCBzcmM9
InV0aWxfbWFpbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgYWRk
cmVzc0JveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGdldENvbmZpZygpIHsKLSAgcmV0dXJuIHsKLSAg
ICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFsdWUsCi0gICAgcHJpbnRTaXplOiBnZXRCb29sRnJv
bUNoZWNrQm94KCdwcmludHNpemUnKSwKLSAgICBudW1Tb2NrZXRzOiBnZXRJbnRGcm9tSW5wdXQo
J251bXNvY2tldHMnKSwKLSAgICAvLyBJbml0aWFsIHNpemUgb2YgbWVzc2FnZXMuCi0gICAgbnVt
SXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW1pdGVyYXRpb25zJyksCi0gICAgbnVtV2Fy
bVVwSXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW13YXJtdXBpdGVyYXRpb25zJyksCi0g
ICAgc3RhcnRTaXplOiBnZXRJbnRGcm9tSW5wdXQoJ3N0YXJ0c2l6ZScpLAotICAgIC8vIFN0b3Bz
IGJlbmNobWFyayB3aGVuIHRoZSBzaXplIG9mIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRocmVzaG9s
ZC4KLSAgICBzdG9wVGhyZXNob2xkOiBnZXRJbnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hvbGQnKSwK
LSAgICAvLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIG1lc3NhZ2UgaXMgc21hbGwsIHNlbmQvcmVjZWl2
ZSBtdWx0aXBsZSBtZXNzYWdlcwotICAgIC8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hl
cyB0aGlzIHRocmVzaG9sZC4KLSAgICBtaW5Ub3RhbDogZ2V0SW50RnJvbUlucHV0KCdtaW50b3Rh
bCcpLAotICAgIG11bHRpcGxpZXJzOiBnZXRJbnRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGllcnMn
KSwKLSAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJykKLSAg
fTsKLX0KLQotdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ2JlbmNobWFyay5qcycpOwotd29ya2Vy
Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZTsKLQotZnVuY3Rpb24gb25TZW5kQmVuY2htYXJrKCkgewot
ICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0KLSAgaWYgKGdldEJvb2xGcm9tQ2hlY2tCb3go
J3dvcmtlcicpKSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAnc2VuZEJlbmNobWFy
aycsIGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nID0g
YWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAgICBj
b25maWcubWVhc3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwotICAgIHNlbmRCZW5jaG1hcmsoY29u
ZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBvblJlY2VpdmVCZW5jaG1hcmsoKSB7Ci0gIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2Vy
JykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdyZWNlaXZlQmVuY2htYXJrJywg
Y29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRU
b0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZp
Zy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgcmVjZWl2ZUJlbmNobWFyayhjb25m
aWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7Ci0gIHZhciBjb25m
aWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJykp
IHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdiYXRjaEJlbmNobWFyaycsIGNvbmZp
ZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nID0gYWRkVG9Mb2c7
Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAgICBjb25maWcubWVh
c3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwotICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0g
IH0KLX0KLQotZnVuY3Rpb24gb25TdG9wKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7
Ci0KLSAgaWYgKGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpKSB7Ci0gICAgd29ya2VyLnBv
c3RNZXNzYWdlKHt0eXBlOiAnc3RvcCcsIGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0g
ICAgY29uZmlnLmFkZFRvTG9nID0gYWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9
IGFkZFRvU3VtbWFyeTsKLSAgICBjb25maWcubWVhc3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwot
ICAgIHN0b3AoY29uZmlnKTsKLSAgfQotfQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0Jv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3N1bW1hcnknKTsKLQotICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9u
LnByb3RvY29sID09ICdodHRwczonID8gJ3dzczovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVmYXVs
dEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvYmVuY2htYXJrX2hl
bHBlcic7Ci0KLSAgYWRkcmVzc0JveC52YWx1ZSA9IGRlZmF1bHRBZGRyZXNzOwotCi0gIGFkZFRv
TG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1
bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgaWYg
KCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMg
bm90IGF2YWlsYWJsZScpOwotICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0iaW5pdCgpIj4KLQotPGRpdiBpZD0iYmVuY2htYXJrX2RpdiI+Ci0gIHVybCA8aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9IjQwIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIg
dmFsdWU9InNlbmQiIG9uY2xpY2s9Im9uU2VuZEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9
ImJ1dHRvbiIgdmFsdWU9InJlY2VpdmUiIG9uY2xpY2s9Im9uUmVjZWl2ZUJlbmNobWFyaygpIj4K
LSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImJhdGNoIiBvbmNsaWNrPSJvbkJhdGNoQmVu
Y2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic3RvcCIgb25jbGljaz0i
b25TdG9wKCkiPgotCi0gIDxici8+Ci0KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJp
bnRzaXplIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJwcmludHNpemUiPlByaW50IHNpemUgYW5k
IHRpbWUgcGVyIG1lc3NhZ2U8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ2
ZXJpZnlkYXRhIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJ2ZXJpZnlkYXRhIj5WZXJpZnkgZGF0
YTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IndvcmtlciI+Ci0gIDxsYWJl
bCBmb3I9IndvcmtlciI+UnVuIG9uIHdvcmtlcjwvbGFiZWw+Ci0KLSAgPGJyLz4KLQotICBQYXJh
bWV0ZXJzOgotCi0gIDxici8+Ci0KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZD5OdW0g
c29ja2V0czwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW1zb2NrZXRz
IiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5OdW1iZXIg
b2YgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW1p
dGVyYXRpb25zIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0
ZD5OdW1iZXIgb2Ygd2FybS11cCBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXdhcm11cGl0ZXJhdGlvbnMiIHZhbHVlPSIwIj48L3RkPgotICAgIDwv
dHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0YXJ0IHNpemU8L3RkPgotICAgICAgPHRkPjxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnRzaXplIiB2YWx1ZT0iMTAyNDAiPjwvdGQ+Ci0gICAgPC90
cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RvcCB0aHJlc2hvbGQ8L3RkPgotICAgICAgPHRkPjxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RvcHRocmVzaG9sZCIgdmFsdWU9IjEwMjQwMDAwMCI+PC90
ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5NaW5pbXVtIHRvdGFsPC90ZD4KLSAg
ICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1pbnRvdGFsIiB2YWx1ZT0iMTAyNDAwMDAw
Ij48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11bHRpcGxpZXJzPC90ZD4K
LSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxpZXJzIiB2YWx1ZT0iNSwg
MiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+Ci0KLTxkaXYgaWQ9ImxvZ19k
aXYiPgotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJsb2ciIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6
IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLTxkaXYgaWQ9InN1bW1hcnlfZGl2
Ij4KLSAgU3VtbWFyeQotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJzdW1tYXJ5IiByb3dzPSIyMCIg
c3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci0KLU5vdGU6
IEVmZmVjdCBvZiBSVFQgaXMgbm90IGVsaW1pbmF0ZWQuCi0KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9iZW5jaG1hcmsuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNDdhZTllMTNk
ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20v
b3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLWlmICh0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0g
InVuZGVmaW5lZCIpIHsKLSAgLy8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRz
KCd1dGlsLmpzJywgJ3V0aWxfd29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9s
ZGluZyBnbG9iYWxzLgotdmFyIGJlbmNobWFyayA9IHtzdGFydFRpbWVJbk1zOiAwfTsKLQotdmFy
IHNvY2tldHMgPSBbXTsKLXZhciBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwotCi12YXIgdGlt
ZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lTb2NrZXQoc29ja2V0KSB7Ci0gIHNvY2tl
dC5vbm9wZW4gPSBudWxsOwotICBzb2NrZXQub25tZXNzYWdlID0gbnVsbDsKLSAgc29ja2V0Lm9u
ZXJyb3IgPSBudWxsOwotICBzb2NrZXQub25jbG9zZSA9IG51bGw7Ci0gIHNvY2tldC5jbG9zZSgp
OwotfQotCi1mdW5jdGlvbiBkZXN0cm95QWxsU29ja2V0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7Ci0gICAgZGVzdHJveVNvY2tldChzb2NrZXRzW2ld
KTsKLSAgfQotICBzb2NrZXRzID0gW107Ci19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVw
KHNpemUsIGNvbmZpZykgewotICB0aW1lcklEID0gbnVsbDsKLQotICB2YXIgdG90YWxTaXplID0g
MDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0KLSAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGlmICghdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywg
ZXZlbnQuZGF0YSwgc2l6ZSkpIHsKLSAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci0gICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVkICs9IHNpemU7Ci0KLSAgICBpZiAodG90
YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2Fs
Y3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMs
IHRvdGFsU2l6ZSk7Ci0KLSAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9OwotCi0gIGZvciAo
dmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBz
b2NrZXRzW2ldOwotICAgIHNvY2tldC5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2VIYW5kbGVyOwotICB9
Ci0KLSAgdmFyIGRhdGFBcnJheSA9IFtdOwotCi0gIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcu
bWluVG90YWwpIHsKLSAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOwotCi0g
ICAgZmlsbEFycmF5QnVmZmVyKGJ1ZmZlciwgMHg2MSk7Ci0KLSAgICBkYXRhQXJyYXkucHVzaChi
dWZmZXIpOwotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci0KLSAgYmVuY2htYXJrLnN0YXJ0
VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsKLQotICB0b3RhbFNpemUgPSAwOwotCi0gIHZhciBz
b2NrZXRJbmRleCA9IDA7Ci0gIHZhciBkYXRhSW5kZXggPSAwOwotICB3aGlsZSAodG90YWxTaXpl
IDwgY29uZmlnLm1pblRvdGFsKSB7Ci0gICAgdmFyIGNvbW1hbmQgPSBbJ3NlbmQnXTsKLSAgICBj
b21tYW5kLnB1c2goY29uZmlnLnZlcmlmeURhdGEgPyAnMScgOiAnMCcpOwotICAgIHNvY2tldHNb
c29ja2V0SW5kZXhdLnNlbmQoY29tbWFuZC5qb2luKCcgJykpOwotICAgIHNvY2tldHNbc29ja2V0
SW5kZXhdLnNlbmQoZGF0YUFycmF5W2RhdGFJbmRleF0pOwotICAgIHNvY2tldEluZGV4ID0gKHNv
Y2tldEluZGV4ICsgMSkgJSBzb2NrZXRzLmxlbmd0aDsKLQotICAgIHRvdGFsU2l6ZSArPSBzaXpl
OwotICAgICsrZGF0YUluZGV4OwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmtT
dGVwKHNpemUsIGNvbmZpZykgewotICB0aW1lcklEID0gbnVsbDsKLQotICB2YXIgdG90YWxTaXpl
ID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0KLSAgdmFyIG9uTWVzc2FnZUhhbmRsZXIg
PSBmdW5jdGlvbihldmVudCkgewotICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0YS5i
eXRlTGVuZ3RoOwotICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKLSAgICAgIGNvbmZp
Zy5hZGRUb0xvZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCi0gICAg
ICAgICAgYnl0ZXNSZWNlaXZlZCArICdCJyk7Ci0gICAgICBkZXN0cm95QWxsU29ja2V0cygpOwot
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChjb25maWcudmVyaWZ5RGF0YSAmJiAhdmVy
aWZ5QXJyYXlCdWZmZXIoZXZlbnQuZGF0YSwgMHg2MSkpIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xv
ZygnUmVzcG9uc2UgdmVyaWZpY2F0aW9uIGZhaWxlZCcpOwotICAgICAgZGVzdHJveUFsbFNvY2tl
dHMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b3RhbFJlcGxpZWQgKz0gYnl0ZXNS
ZWNlaXZlZDsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsKLSAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBi
ZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplKTsKLQotICAgIHJ1bk5leHRUYXNrKGNv
bmZpZyk7Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytp
KSB7Ci0gICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07Ci0gICAgc29ja2V0LmJpbmFyeVR5cGUg
PSAnYXJyYXlidWZmZXInOwotICAgIHNvY2tldC5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2VIYW5kbGVy
OwotICB9Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsKLQot
ICB2YXIgc29ja2V0SW5kZXggPSAwOwotICB3aGlsZSAodG90YWxTaXplIDwgY29uZmlnLm1pblRv
dGFsKSB7Ci0gICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZCgncmVjZWl2ZSAnICsgc2l6ZSk7
Ci0gICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNvY2tldHMubGVuZ3RoOwot
Ci0gICAgdG90YWxTaXplICs9IHNpemU7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY3JlYXRlU29ja2V0
KGNvbmZpZykgewotICAvLyBUT0RPKHR5b3NoaW5vKTogQWRkIFRDUCB3YXJtIHVwLgotICB2YXIg
dXJsID0gY29uZmlnLnByZWZpeFVybDsKLQotICBjb25maWcuYWRkVG9Mb2coJ0Nvbm5lY3QgJyAr
IHVybCk7Ci0KLSAgdmFyIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTsKLSAgc29ja2V0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdVbmV4cGVj
dGVkIG1lc3NhZ2UgcmVjZWl2ZWQuIEFib3J0aW5nLicpOwotICB9OwotICBzb2NrZXQub25lcnJv
ciA9IGZ1bmN0aW9uKCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnRXJyb3InKTsKLSAgfTsKLSAg
c29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygn
Q2xvc2VkJyk7Ci0gIH07Ci0gIHJldHVybiBzb2NrZXQ7Ci19Ci0KLXZhciB0YXNrcyA9IFtdOwot
Ci1mdW5jdGlvbiBzdGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0KHRpbWVy
SUQpOwotICBkZXN0cm95QWxsU29ja2V0cygpOwotCi0gIG51bUVzdGFibGlzaGVkU29ja2V0cyA9
IDA7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtU29ja2V0czsgKytpKSB7Ci0g
ICAgdmFyIHNvY2tldCA9IGNyZWF0ZVNvY2tldChjb25maWcpOwotICAgIHNvY2tldC5vbm9wZW4g
PSBmdW5jdGlvbigpIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygnT3BlbmVkJyk7Ci0KLSAgICAg
ICsrbnVtRXN0YWJsaXNoZWRTb2NrZXRzOwotCi0gICAgICBpZiAobnVtRXN0YWJsaXNoZWRTb2Nr
ZXRzID09IHNvY2tldHMubGVuZ3RoKSB7Ci0gICAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0g
ICAgICB9Ci0gICAgfTsKLSAgICBzb2NrZXRzLnB1c2goc29ja2V0KTsKLSAgfQotfQotCi1mdW5j
dGlvbiBydW5OZXh0VGFzayhjb25maWcpIHsKLSAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOwot
ICBpZiAodGFzayA9PSB1bmRlZmluZWQpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVk
Jyk7Ci0gICAgZGVzdHJveUFsbFNvY2tldHMoKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgdGltZXJJ
RCA9IHNldFRpbWVvdXQodGFzaywgMCk7Ci19Ci0KLWZ1bmN0aW9uIGJ1aWxkTGVnZW5kU3RyaW5n
KGNvbmZpZykgewotICB2YXIgbGVnZW5kID0gJycKLSAgaWYgKGNvbmZpZy5wcmludFNpemUpCi0g
ICAgbGVnZW5kID0gJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFRpbWUvbWVzc2FnZSBpbiBtcywgJzsK
LSAgbGVnZW5kICs9ICdTcGVlZCBpbiBrQi9zJzsKLSAgcmV0dXJuIGxlZ2VuZDsKLX0KLQotZnVu
Y3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewotICByZXR1cm4gJyhXZWJTb2NrZXQnICsK
LSAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAidW5kZWZpbmVkIiA/ICdXb3Jr
ZXInIDogJ01haW4nKSArCi0gICAgJywgbnVtU29ja2V0cz0nICsgY29uZmlnLm51bVNvY2tldHMg
KwotICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAn
LCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCi0gICAgJywgbWluVG90YWw9JyAr
IGNvbmZpZy5taW5Ub3RhbCArCi0gICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmln
Lm51bVdhcm1VcEl0ZXJhdGlvbnMgKwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gYWRkVGFza3Mo
Y29uZmlnLCBzdGVwRnVuYykgewotICBmb3IgKHZhciBpID0gMDsKLSAgICAgIGkgPCBjb25maWcu
bnVtV2FybVVwSXRlcmF0aW9ucyArIGNvbmZpZy5udW1JdGVyYXRpb25zOyArK2kpIHsKLSAgICAv
LyBJZ25vcmUgdGhlIGZpcnN0IHxjb25maWcubnVtV2FybVVwSXRlcmF0aW9uc3wgaXRlcmF0aW9u
cy4KLSAgICBpZiAoaSA9PSBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucykKLSAgICAgIGFkZFJl
c3VsdENsZWFyaW5nVGFzayhjb25maWcpOwotCi0gICAgdmFyIG11bHRpcGxpZXJJbmRleCA9IDA7
Ci0gICAgZm9yICh2YXIgc2l6ZSA9IGNvbmZpZy5zdGFydFNpemU7Ci0gICAgICAgICBzaXplIDw9
IGNvbmZpZy5zdG9wVGhyZXNob2xkOwotICAgICAgICAgKyttdWx0aXBsaWVySW5kZXgpIHsKLSAg
ICAgIHZhciB0YXNrID0gc3RlcEZ1bmMuYmluZCgKLSAgICAgICAgICBudWxsLAotICAgICAgICAg
IHNpemUsCi0gICAgICAgICAgY29uZmlnKTsKLSAgICAgIHRhc2tzLnB1c2godGFzayk7Ci0gICAg
ICBzaXplICo9IGNvbmZpZy5tdWx0aXBsaWVyc1sKLSAgICAgICAgICBtdWx0aXBsaWVySW5kZXgg
JSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24g
YWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsIHRpdGxlKSB7Ci0gIHRhc2tzLnB1c2goZnVu
Y3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxsOwotICAgICAgY29uZmlnLmFkZFRvU3VtbWFy
eSh0aXRsZSk7Ci0gICAgICByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpOwotICAgICAgY2xlYXJB
dmVyYWdlRGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfSk7Ci19Ci0KLWZ1
bmN0aW9uIGFkZFJlc3VsdENsZWFyaW5nVGFzayhjb25maWcpIHsKLSAgdGFza3MucHVzaChmdW5j
dGlvbigpewotICAgICAgdGltZXJJRCA9IG51bGw7Ci0gICAgICBjbGVhckF2ZXJhZ2VEYXRhKCk7
Ci0gICAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9KTsKLX0KLQotZnVuY3Rpb24gc2VuZEJl
bmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdTZW5kIGJlbmNobWFyaycpOwot
ICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSk7Ci0KLSAgdGFza3Mg
PSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRUYXNrcyhjb25maWcsIHNlbmRCZW5j
aG1hcmtTdGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsICdTZW5kIEJlbmNo
bWFyayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25m
aWcpOwotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJrKGNvbmZpZykgewotICBjb25maWcu
YWRkVG9Mb2coJ1JlY2VpdmUgYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhidWlsZExl
Z2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRh
KCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOwotICBhZGRSZXN1
bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywKLSAgICAgICdSZWNlaXZlIEJlbmNobWFyayAnICsgZ2V0
Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25maWcpOwotfQotCi1m
dW5jdGlvbiBiYXRjaEJlbmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdCYXRj
aCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZp
ZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3Mo
Y29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29u
ZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgYWRk
VGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGlu
Z1Rhc2soY29uZmlnLCAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArCi0gICAgICBnZXRDb25maWdTdHJp
bmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIHN0
b3AoY29uZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgdGltZXJJRCA9IG51bGw7
Ci0gIGNvbmZpZy5hZGRUb0xvZygnU3RvcHBlZCcpOwotICBkZXN0cm95QWxsU29ja2V0cygpOwot
fQotCi1vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgewotICB2YXIgY29uZmlnID0gbWVz
c2FnZS5kYXRhLmNvbmZpZzsKLSAgY29uZmlnLmFkZFRvTG9nID0gd29ya2VyQWRkVG9Mb2c7Ci0g
IGNvbmZpZy5hZGRUb1N1bW1hcnkgPSB3b3JrZXJBZGRUb1N1bW1hcnk7Ci0gIGNvbmZpZy5tZWFz
dXJlVmFsdWUgPSB3b3JrZXJNZWFzdXJlVmFsdWU7Ci0gIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9
PT0gJ3NlbmRCZW5jaG1hcmsnKQotICAgIHNlbmRCZW5jaG1hcmsoY29uZmlnKTsKLSAgZWxzZSBp
ZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdyZWNlaXZlQmVuY2htYXJrJykKLSAgICByZWNlaXZl
QmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYmF0
Y2hCZW5jaG1hcmsnKQotICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1l
c3NhZ2UuZGF0YS50eXBlID09PSAnc3RvcCcpCi0gICAgc3RvcChjb25maWcpOwotfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NGFkMGJmZWVmYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxl
L2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiSGFuZGxlciBmb3IgYmVuY2htYXJrLmh0bWwuIiIiCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICMgVHVy
biBvZmYgY29tcHJlc3Npb24uCi0gICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBkYXRh
ID0gJycKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGNvbW1hbmQgPSByZXF1ZXN0LndzX3N0
cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBjb21tYW5kIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21tYW5kLCB1bmlj
b2RlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkYXRh
OicgKyBjb21tYW5kKQotICAgICAgICBjb21tYW5kcyA9IGNvbW1hbmQuc3BsaXQoJyAnKQotICAg
ICAgICBpZiBsZW4oY29tbWFuZHMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdJbnZhbGlkIGNvbW1hbmQgZGF0YTogJyArIGNvbW1hbmQpCi0KLSAgICAgICAgaWYgY29tbWFu
ZHNbMF0gPT0gJ3JlY2VpdmUnOgotICAgICAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSAhPSAyOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNvbW1hbmQnICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0gICAgICAgICAgICBzaXplID0gaW50KGNvbW1h
bmRzWzFdKQotCi0gICAgICAgICAgICAjIFJldXNlIGRhdGEgaWYgcG9zc2libGUuCi0gICAgICAg
ICAgICBpZiBsZW4oZGF0YSkgIT0gc2l6ZToKLSAgICAgICAgICAgICAgICBkYXRhID0gJ2EnICog
c2l6ZQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJp
bmFyeT1UcnVlKQotICAgICAgICBlbGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKLSAgICAgICAg
ICAgIGlmIGxlbihjb21tYW5kcykgIT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0lsbGVnYWwgbnVtYmVyIG9mIGFyZ3VtZW50
cyBmb3IgcmVjZWl2ZSBjb21tYW5kJyArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
KQotICAgICAgICAgICAgdmVyaWZ5X2RhdGEgPSBjb21tYW5kc1sxXSA9PSAnMScKLQotICAgICAg
ICAgICAgZGF0YSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAg
ICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
UGF5bG9hZCBub3QgcmVjZWl2ZWQnKQotICAgICAgICAgICAgc2l6ZSA9IGxlbihkYXRhKQotCi0g
ICAgICAgICAgICBpZiB2ZXJpZnlfZGF0YToKLSAgICAgICAgICAgICAgICBpZiBkYXRhICE9ICdh
JyAqIHNpemU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQg
dmVyaWZpY2F0aW9uIGZhaWxlZCcpCi0KLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNl
bmRfbWVzc2FnZShzdHIoc2l6ZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQ6ICcgKyBjb21tYW5kc1swXSkKLQotCi0jIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY2xvc2Vfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS9jbG9zZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI2YjA4Mzg0MDgxMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY2xv
c2Vfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCBzdHJ1Y3QKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQotCi0KLWRlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBpcyBO
b25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNvZGUsIHJlYXNvbiA9IGxpbmUuc3Bs
aXQoJyAnLCAxKQotICAgICAgICBpZiBjb2RlIGlzIE5vbmUgb3IgcmVhc29uIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVj
dGlvbihpbnQoY29kZSksIHJlYXNvbikKLSAgICAgICAgIyBjbG9zZV9jb25uZWN0aW9uKCkgaW5p
dGlhdGVzIGNsb3NpbmcgaGFuZHNoYWtlLiBJdCB2YWxpZGF0ZXMgY29kZQotICAgICAgICAjIGFu
ZCByZWFzb24uIElmIHlvdSB3YW50IHRvIHNlbmQgYSBicm9rZW4gY2xvc2UgZnJhbWUgZm9yIGEg
dGVzdCwKLSAgICAgICAgIyBmb2xsb3dpbmcgY29kZSB3aWxsIGJlIHVzZWZ1bC4KLSAgICAgICAg
IyA+IGRhdGEgPSBzdHJ1Y3QucGFjaygnIUgnLCBpbnQoY29kZSkpICsgcmVhc29uLmVuY29kZSgn
VVRGLTgnKQotICAgICAgICAjID4gcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVh
dGVfY2xvc2VfZnJhbWUoZGF0YSkpCi0gICAgICAgICMgPiAjIFN1cHByZXNzIHRvIHJlLXJlc3Bv
bmQgY2xpZW50IHJlc3BvbmRpbmcgY2xvc2UgZnJhbWUuCi0gICAgICAgICMgPiByYWlzZSBFeGNl
cHRpb24oImN1c3RvbWl6ZWQgc2VydmVyIGluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSIpCi0K
LQotZGVmIHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAg
ICAjIFNpbXBseSBlY2hvIGEgY2xvc2Ugc3RhdHVzIGNvZGUKLSAgICBjb2RlLCByZWFzb24gPSBy
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCi0KLSAgICAjIHB5
d2Vic29ja2V0IHNldHMgcHNldWRvIGNvZGUgZm9yIHJlY2VpdmluZyBhbiBlbXB0eSBib2R5IGNs
b3NlIGZyYW1lLgotICAgIGlmIGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNfUkVDRUlW
RUQ6Ci0gICAgICAgIGNvZGUgPSBOb25lCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgcmV0dXJu
IGNvZGUsIHJlYXNvbgotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvZXhhbXBsZS9jb25zb2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2NvbnNvbGUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NkNmQ4ZjgwNjc2Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb25zb2xlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MTcgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRz
IHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTwhLS0KLUEgc2lt
cGxlIGNvbnNvbGUgZm9yIHRlc3RpbmcgV2ViU29ja2V0IHNlcnZlci4KLQotVHlwZSBhbiBhZGRy
ZXNzIGludG8gdGhlIHRvcCB0ZXh0IGlucHV0IGFuZCBjbGljayBjb25uZWN0IHRvIGVzdGFibGlz
aAotV2ViU29ja2V0LiBUaGVuLCB0eXBlIHNvbWUgbWVzc2FnZSBpbnRvIHRoZSBib3R0b20gdGV4
dCBpbnB1dCBhbmQgY2xpY2sgc2VuZAotdG8gc2VuZCB0aGUgbWVzc2FnZS4gUmVjZWl2ZWQvc2Vu
dCBtZXNzYWdlcyBhbmQgY29ubmVjdGlvbiBzdGF0ZSB3aWxsIGJlIHNob3duCi1vbiB0aGUgbWlk
ZGxlIHRleHRhcmVhLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0IGNv
bnNvbGU8L3RpdGxlPgotPHNjcmlwdD4KLXZhciBzb2NrZXQgPSBudWxsOwotCi12YXIgc2hvd1Rp
bWVTdGFtcCA9IGZhbHNlOwotCi12YXIgYWRkcmVzc0JveCA9IG51bGw7Ci12YXIgcHJvdG9jb2xz
Qm94ID0gbnVsbDsKLXZhciBsb2dCb3ggPSBudWxsOwotdmFyIG1lc3NhZ2VCb3ggPSBudWxsOwot
dmFyIGZpbGVCb3ggPSBudWxsOwotdmFyIGNvZGVCb3ggPSBudWxsOwotdmFyIHJlYXNvbkJveCA9
IG51bGw7Ci0KLWZ1bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKLSAgcmV0dXJuIG5ldyBEYXRlKCku
Z2V0VGltZSgpOwotfQotCi1mdW5jdGlvbiBhZGRUb0xvZyhsb2cpIHsKLSAgaWYgKHNob3dUaW1l
U3RhbXApIHsKLSAgICBsb2dCb3gudmFsdWUgKz0gJ1snICsgZ2V0VGltZVN0YW1wKCkgKyAnXSAn
OwotICB9Ci0gIGxvZ0JveC52YWx1ZSArPSBsb2cgKyAnXG4nCi0gIC8vIExhcmdlIGVub3VnaCB0
byBrZWVwIHNob3dpbmcgdGhlIGxhdGVzdCBtZXNzYWdlLgotICBsb2dCb3guc2Nyb2xsVG9wID0g
MTAwMDAwMDsKLX0KLQotZnVuY3Rpb24gc2V0YmluYXJ5dHlwZShiaW5hcnlUeXBlKSB7Ci0gIGlm
ICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICBzb2NrZXQuYmluYXJ5VHlwZSA9IGJpbmFyeVR5cGU7Ci0gIGFkZFRvTG9nKCdT
ZXQgYmluYXJ5VHlwZSB0byAnICsgYmluYXJ5VHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIHNlbmQoKSB7
Ci0gIGlmICghc29ja2V0KSB7Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBzb2NrZXQuc2VuZChtZXNzYWdlQm94LnZhbHVlKTsKLSAgYWRkVG9M
b2coJz4gJyArIG1lc3NhZ2VCb3gudmFsdWUpOwotICBtZXNzYWdlQm94LnZhbHVlID0gJyc7Ci19
Ci0KLWZ1bmN0aW9uIHNlbmRmaWxlKCkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9n
KCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgdmFyIGZpbGVzID0gZmls
ZUJveC5maWxlczsKLQotICBpZiAoZmlsZXMubGVuZ3RoID09IDApIHsKLSAgICBhZGRUb0xvZygn
RmlsZSBub3Qgc2VsZWN0ZWQnKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBzb2NrZXQuc2VuZChm
aWxlc1swXSk7Ci0gIGFkZFRvTG9nKCc+IFNlbmQgJyArIGZpbGVzWzBdLm5hbWUpOwotfQotCi1m
dW5jdGlvbiBwYXJzZVByb3RvY29scyhwcm90b2NvbHNUZXh0KSB7Ci0gIHZhciBwcm90b2NvbHMg
PSBwcm90b2NvbHNUZXh0LnNwbGl0KCcsJyk7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvdG9j
b2xzLmxlbmd0aDsgKytpKSB7Ci0gICAgcHJvdG9jb2xzW2ldID0gcHJvdG9jb2xzW2ldLnRyaW0o
KTsKLSAgfQotCi0gIGlmIChwcm90b2NvbHMubGVuZ3RoID09IDApIHsKLSAgICAvLyBEb24ndCBw
YXNzLgotICAgIHByb3RvY29scyA9IG51bGw7Ci0gIH0gZWxzZSBpZiAocHJvdG9jb2xzLmxlbmd0
aCA9PSAxKSB7Ci0gICAgaWYgKHByb3RvY29sc1swXS5sZW5ndGggPT0gMCkgewotICAgICAgLy8g
RG9uJ3QgcGFzcy4KLSAgICAgIHByb3RvY29scyA9IG51bGw7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IC8vIFBhc3MgYXMgYSBzdHJpbmcuCi0gICAgICBwcm90b2NvbHMgPSBwcm90b2NvbHNbMF07Ci0g
ICAgfQotICB9Ci0KLSAgcmV0dXJuIHByb3RvY29sczsKLX0KLQotZnVuY3Rpb24gY29ubmVjdCgp
IHsKLSAgdmFyIHVybCA9IGFkZHJlc3NCb3gudmFsdWU7Ci0gIHZhciBwcm90b2NvbHMgPSBwYXJz
ZVByb3RvY29scyhwcm90b2NvbHNCb3gudmFsdWUpOwotCi0gIGlmICgnV2ViU29ja2V0JyBpbiB3
aW5kb3cpIHsKLSAgICBpZiAocHJvdG9jb2xzKSB7Ci0gICAgICBzb2NrZXQgPSBuZXcgV2ViU29j
a2V0KHVybCwgcHJvdG9jb2xzKTsKLSAgICB9IGVsc2UgewotICAgICAgc29ja2V0ID0gbmV3IFdl
YlNvY2tldCh1cmwpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICByZXR1cm47Ci0gIH0KLQotICBz
b2NrZXQub25vcGVuID0gZnVuY3Rpb24gKCkgewotICAgIHZhciBleHRyYUluZm8gPSBbXTsKLSAg
ICBpZiAoKCdwcm90b2NvbCcgaW4gc29ja2V0KSAmJiBzb2NrZXQucHJvdG9jb2wpIHsKLSAgICAg
IGV4dHJhSW5mby5wdXNoKCdwcm90b2NvbCA9ICcgKyBzb2NrZXQucHJvdG9jb2wpOwotICAgIH0K
LSAgICBpZiAoKCdleHRlbnNpb25zJyBpbiBzb2NrZXQpICYmIHNvY2tldC5leHRlbnNpb25zKSB7
Ci0gICAgICBleHRyYUluZm8ucHVzaCgnZXh0ZW5zaW9ucyA9ICcgKyBzb2NrZXQuZXh0ZW5zaW9u
cyk7Ci0gICAgfQotCi0gICAgdmFyIGxvZ01lc3NhZ2UgPSAnT3BlbmVkJzsKLSAgICBpZiAoZXh0
cmFJbmZvLmxlbmd0aCA+IDApIHsKLSAgICAgIGxvZ01lc3NhZ2UgKz0gJyAoJyArIGV4dHJhSW5m
by5qb2luKCcsICcpICsgJyknOwotICAgIH0KLSAgICBhZGRUb0xvZyhsb2dNZXNzYWdlKTsKLSAg
fTsKLSAgc29ja2V0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgewotICAgIGlmICgoJ0Fy
cmF5QnVmZmVyJyBpbiB3aW5kb3cpICYmIChldmVudC5kYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZm
ZXIpKSB7Ci0gICAgICBhZGRUb0xvZygnPCBSZWNlaXZlZCBhbiBBcnJheUJ1ZmZlciBvZiAnICsg
ZXZlbnQuZGF0YS5ieXRlTGVuZ3RoICsKLSAgICAgICAgICAgICAgICcgYnl0ZXMnKQotICAgIH0g
ZWxzZSBpZiAoKCdCbG9iJyBpbiB3aW5kb3cpICYmIChldmVudC5kYXRhIGluc3RhbmNlb2YgQmxv
YikpIHsKLSAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGEgQmxvYiBvZiAnICsgZXZlbnQuZGF0
YS5zaXplICsgJyBieXRlcycpCi0gICAgfSBlbHNlIHsKLSAgICAgIGFkZFRvTG9nKCc8ICcgKyBl
dmVudC5kYXRhKTsKLSAgICB9Ci0gIH07Ci0gIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24gKCkg
ewotICAgIGFkZFRvTG9nKCdFcnJvcicpOwotICB9OwotICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0
aW9uIChldmVudCkgewotICAgIHZhciBsb2dNZXNzYWdlID0gJ0Nsb3NlZCAoJzsKLSAgICBpZiAo
KGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgJiYgKCdDbG9zZUV2ZW50JyBpbiB3aW5kb3cpICYmCi0g
ICAgICAgIChldmVudCBpbnN0YW5jZW9mIENsb3NlRXZlbnQpKSB7Ci0gICAgICBsb2dNZXNzYWdl
ICs9ICd3YXNDbGVhbiA9ICcgKyBldmVudC53YXNDbGVhbjsKLSAgICAgIC8vIGNvZGUgYW5kIHJl
YXNvbiBhcmUgcHJlc2VudCBvbmx5IGZvcgotICAgICAgLy8gZHJhZnQtaWV0Zi1oeWJpLXRoZXdl
YnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgotICAgICAgaWYgKCdjb2RlJyBpbiBldmVudCkg
ewotICAgICAgICBsb2dNZXNzYWdlICs9ICcsIGNvZGUgPSAnICsgZXZlbnQuY29kZTsKLSAgICAg
IH0KLSAgICAgIGlmICgncmVhc29uJyBpbiBldmVudCkgewotICAgICAgICBsb2dNZXNzYWdlICs9
ICcsIHJlYXNvbiA9ICcgKyBldmVudC5yZWFzb247Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIGxvZ01lc3NhZ2UgKz0gJ0Nsb3NlRXZlbnQgaXMgbm90IGF2YWlsYWJsZSc7Ci0gICAgfQot
ICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UgKyAnKScpOwotICB9OwotCi0gIGlmIChwcm90b2NvbHMp
IHsKLSAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsICsgJyAocHJvdG9jb2xzID0gJyArIHBy
b3RvY29scyArICcpJyk7Ci0gIH0gZWxzZSB7Ci0gICAgYWRkVG9Mb2coJ0Nvbm5lY3QgJyArIHVy
bCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2xvc2VTb2NrZXQoKSB7Ci0gIGlmICghc29ja2V0KSB7
Ci0gICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBp
ZiAoY29kZUJveC52YWx1ZSB8fCByZWFzb25Cb3gudmFsdWUpIHsKLSAgICBzb2NrZXQuY2xvc2Uo
Y29kZUJveC52YWx1ZSwgcmVhc29uQm94LnZhbHVlKTsKLSAgfSBlbHNlIHsKLSAgICBzb2NrZXQu
Y2xvc2UoKTsKLSAgfQotfQotCi1mdW5jdGlvbiBwcmludFN0YXRlKCkgewotICBpZiAoIXNvY2tl
dCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgYWRkVG9Mb2coCi0gICAgICAndXJsID0gJyArIHNvY2tldC51cmwgKwotICAgICAgJywgcmVh
ZHlTdGF0ZSA9ICcgKyBzb2NrZXQucmVhZHlTdGF0ZSArCi0gICAgICAnLCBidWZmZXJlZEFtb3Vu
dCA9ICcgKyBzb2NrZXQuYnVmZmVyZWRBbW91bnQpOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewot
ICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonID8gJ3dz
czovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVmYXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5kb3cu
bG9jYXRpb24uaG9zdCArICcvZWNobyc7Ci0KLSAgYWRkcmVzc0JveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIHByb3RvY29sc0JveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwcm90b2NvbHMnKTsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZycpOwotICBtZXNzYWdlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2Un
KTsKLSAgZmlsZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlJyk7Ci0gIGNvZGVC
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpOwotICByZWFzb25Cb3ggPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVhc29uJyk7Ci0KLSAgYWRkcmVzc0JveC52YWx1ZSA9IGRl
ZmF1bHRBZGRyZXNzOwotCi0gIGlmICghKCdXZWJTb2NrZXQnIGluIHdpbmRvdykpIHsKLSAgICBh
ZGRUb0xvZygnV2ViU29ja2V0IGlzIG5vdCBhdmFpbGFibGUnKTsKLSAgfQotfQotPC9zY3JpcHQ+
Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotZm9ybSB7Ci0gIG1hcmdpbjogMHB4OwotfQotCi0j
Y29ubmVjdF9kaXYsICNsb2dfZGl2LCAjc2VuZF9kaXYsICNzZW5kZmlsZV9kaXYsICNjbG9zZV9k
aXYsICNwcmludHN0YXRlX2RpdiB7Ci0gIHBhZGRpbmc6IDVweDsKLSAgbWFyZ2luOiA1cHg7Ci0g
IGJvcmRlci13aWR0aDogMHB4IDBweCAwcHggMTBweDsKLSAgYm9yZGVyLXN0eWxlOiBzb2xpZDsK
LSAgYm9yZGVyLWNvbG9yOiBzaWx2ZXI7Ci19Ci08L3N0eWxlPgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJpbml0KCkiPgotCi08ZGl2PgotCi08ZGl2IGlkPSJjb25uZWN0X2RpdiI+Ci0gIDxmb3Jt
IGFjdGlvbj0iIyIgb25zdWJtaXQ9ImNvbm5lY3QoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAgdXJs
IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgotICAgIDxpbnB1dCB0
eXBlPSJzdWJtaXQiIHZhbHVlPSJjb25uZWN0Ij4KLSAgICA8YnIvPgotICAgIHByb3RvY29scyA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InByb3RvY29scyIgc2l6ZT0iMjAiPgotICA8L2Zvcm0+Ci08
L2Rpdj4KLQotPGRpdiBpZD0ibG9nX2RpdiI+Ci0gIDx0ZXh0YXJlYSBpZD0ibG9nIiByb3dzPSIx
MCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci0gIDxici8+Ci0gIDxpbnB1dCB0eXBl
PSJjaGVja2JveCIKLSAgICAgICAgIG5hbWU9InNob3d0aW1lc3RhbXAiCi0gICAgICAgICB2YWx1
ZT0ic2hvd3RpbWVzdGFtcCIKLSAgICAgICAgIG9uY2xpY2s9InNob3dUaW1lU3RhbXAgPSB0aGlz
LmNoZWNrZWQiPlNob3cgdGltZSBzdGFtcAotPC9kaXY+Ci0KLTxkaXYgaWQ9InNlbmRfZGl2Ij4K
LSAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZCgpOyByZXR1cm4gZmFsc2U7Ij4KLSAg
ICBkYXRhIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWVzc2FnZSIgc2l6ZT0iNDAiPgotICAgIDxp
bnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzZW5kIj4KLSAgPC9mb3JtPgotPC9kaXY+Ci0KLTxk
aXYgaWQ9InNlbmRmaWxlX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9InNlbmRm
aWxlKCk7IHJldHVybiBmYWxzZTsiPgotICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmlsZSIg
c2l6ZT0iNDAiPgotICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzZW5kIGZpbGUiPgot
ICA8L2Zvcm0+Ci0KLSAgU2V0IGJpbmFyeVR5cGUKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAg
ICAgICAgbmFtZT0iYmluYXJ5dHlwZSIKLSAgICAgICAgIHZhbHVlPSJibG9iIgotICAgICAgICAg
b25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYmxvYicpIiBjaGVja2VkPmJsb2IKLSAgPGlucHV0IHR5
cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iYmluYXJ5dHlwZSIKLSAgICAgICAgIHZhbHVlPSJh
cnJheWJ1ZmZlciIKLSAgICAgICAgIG9uY2xpY2s9InNldGJpbmFyeXR5cGUoJ2FycmF5YnVmZmVy
JykiPmFycmF5YnVmZmVyCi08L2Rpdj4KLQotPGRpdiBpZD0iY2xvc2VfZGl2Ij4KLSAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0iY2xvc2VTb2NrZXQoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAg
Y29kZSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvZGUiIHNpemU9IjEwIj4KLSAgICByZWFzb24g
PGlucHV0IHR5cGU9InRleHQiIGlkPSJyZWFzb24iIHNpemU9IjIwIj4KLSAgICA8aW5wdXQgdHlw
ZT0ic3VibWl0IiB2YWx1ZT0iY2xvc2UiPgotICA8L2Zvcm0+Ci08L2Rpdj4KLQotPGRpdiBpZD0i
cHJpbnRzdGF0ZV9kaXYiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icHJpbnQgc3Rh
dGUiIG9uY2xpY2s9InByaW50U3RhdGUoKTsiPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Nvb2tpZV93c2gucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9leGFtcGxlL2Nvb2tpZV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhiMzI3MTUyZTcwMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY29v
a2llX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMgQ29weXJpZ2h0IDIw
MTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5n
b29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0KLWltcG9ydCB1cmxwYXJzZQot
Ci0KLWRlZiBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgdmFsdWUpOgotICAgIHJlcXVlc3QuZXh0
cmFfaGVhZGVycy5hcHBlbmQoKCdTZXQtQ29va2llJywgdmFsdWUpKQotCi0KLWRlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBjb21wb25lbnRzID0gdXJscGFy
c2UudXJscGFyc2UocmVxdWVzdC51cmkpCi0gICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KLQot
ICAgIE9ORV9EQVlfTElGRSA9ICdNYXgtQWdlPTg2NDAwJwotCi0gICAgaWYgY29tbWFuZCA9PSAn
c2V0JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1i
YXInLCBPTkVfREFZX0xJRkVdKSkKLSAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6
Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LAotICAgICAgICAgICAgJzsgJy5qb2lu
KFsnaHR0cE9ubHlGb289YmFyJywgT05FX0RBWV9MSUZFLCAnaHR0cE9ubHknXSkpCi0gICAgZWxp
ZiBjb21tYW5kID09ICdjbGVhcic6Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAn
Zm9vPTA7IE1heC1BZ2U9MCcpCi0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnaHR0
cE9ubHlGb289MDsgTWF4LUFnZT0wJykKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNob19j
bGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fY2xpZW50LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5NDNjZTY0ZThiODguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2VjaG9fY2xpZW50LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEyOCArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlNpbXBs
ZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVjYXVzZSBvZiBoaXN0
b3JpY2FsIHJlYXNvbi4KLQotbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBtdXN0IGJlIGluIFBZ
VEhPTlBBVEguCi0KLUV4YW1wbGUgVXNhZ2U6Ci0KLSMgc2VydmVyIHNldHVwCi0gJSBjZCAkcHl3
ZWJzb2NrZXQKLSAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCi0gICAgLWQgJGN3ZC9zcmMvZXhhbXBsZQotCi0jIHJ1
biBjbGllbnQKLSAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3JjL2V4YW1wbGUvZWNo
b19jbGllbnQucHkgLXAgODg4MCBcCi0gICAgIC1zIGxvY2FsaG9zdCBcCi0gICAgIC1vIGh0dHA6
Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAotCi1vcgotCi0jIHJ1biBlY2hvIGNsaWVudCB0
byB0ZXN0IElFVEYgSHlCaSAwMCBwcm90b2NvbAotIHJ1biB3aXRoIC0tcHJvdG9jb2wtdmVyc2lv
bj1oeWJpMDAKLSIiIgotCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBjb2RlY3MKLWltcG9ydCBs
b2dnaW5nCi1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLWltcG9ydCBvcwotaW1w
b3J0IHJhbmRvbQotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1pbXBv
cnQgc3lzCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5z
aW9ucyBpbXBvcnQgX3BhcnNlX3dpbmRvd19iaXRzCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJl
YW0gaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJl
YW1IaXhpZTc1Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlv
bnMKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1RJTUVPVVRfU0VDID0g
MTAKLV9VTkRFRklORURfUE9SVCA9IC0xCi0KLV9VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlOiB3
ZWJzb2NrZXRcclxuJwotX1VQR1JBREVfSEVBREVSX0hJWElFNzUgPSAnVXBncmFkZTogV2ViU29j
a2V0XHJcbicKLV9DT05ORUNUSU9OX0hFQURFUiA9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
LQotIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQg
Y2xvc2luZyBoYW5kc2hha2UKLV9HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKLQotX1BST1RP
Q09MX1ZFUlNJT05fSFlCSTEzID0gJ2h5YmkxMycKLV9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCA9
ICdoeWJpMDgnCi1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDAgPSAnaHliaTAwJwotX1BST1RPQ09M
X1ZFUlNJT05fSElYSUU3NSA9ICdoaXhpZTc1JwotCi0jIENvbnN0YW50cyBmb3IgdGhlIC0tdGxz
X21vZHVsZSBmbGFnLgotX1RMU19CWV9TVEFOREFSRF9NT0RVTEUgPSAnc3NsJwotX1RMU19CWV9Q
WU9QRU5TU0wgPSAncHlvcGVuc3NsJwotCi0jIFZhbHVlcyB1c2VkIGJ5IHRoZSAtLXRscy12ZXJz
aW9uIGZsYWcuCi1fVExTX1ZFUlNJT05fU1NMMjMgPSAnc3NsMjMnCi1fVExTX1ZFUlNJT05fU1NM
MyA9ICdzc2wzJwotX1RMU19WRVJTSU9OX1RMUzEgPSAndGxzMScKLQotCi1jbGFzcyBDbGllbnRI
YW5kc2hha2VFcnJvcihFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgX2J1aWxkX21ldGhv
ZF9saW5lKHJlc291cmNlKToKLSAgICByZXR1cm4gJ0dFVCAlcyBIVFRQLzEuMVxyXG4nICUgcmVz
b3VyY2UKLQotCi1kZWYgX29yaWdpbl9oZWFkZXIoaGVhZGVyLCBvcmlnaW4pOgotICAgICMgNC4x
IDEzLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIk9yaWdpbjoiLCBhIFUrMDAyMCBTUEFD
RSBjaGFyYWN0ZXIsCi0gICAgIyBhbmQgdGhlIC9vcmlnaW4vIHZhbHVlLCBjb252ZXJ0ZWQgdG8g
QVNDSUkgbG93ZXJjYXNlLCB0byAvZmllbGRzLy4KLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUg
KGhlYWRlciwgb3JpZ2luLmxvd2VyKCkpCi0KLQotZGVmIF9mb3JtYXRfaG9zdF9oZWFkZXIoaG9z
dCwgcG9ydCwgc2VjdXJlKToKLSAgICAjIDQuMSA5LiBMZXQgL2hvc3Rwb3J0LyBiZSBhbiBlbXB0
eSBzdHJpbmcuCi0gICAgIyA0LjEgMTAuIEFwcGVuZCB0aGUgL2hvc3QvIHZhbHVlLCBjb252ZXJ0
ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0bwotICAgICMgL2hvc3Rwb3J0LwotICAgIGhvc3Rwb3J0
ID0gaG9zdC5sb3dlcigpCi0gICAgIyA0LjEgMTEuIElmIC9zZWN1cmUvIGlzIGZhbHNlLCBhbmQg
L3BvcnQvIGlzIG5vdCA4MCwgb3IgaWYgL3NlY3VyZS8KLSAgICAjIGlzIHRydWUsIGFuZCAvcG9y
dC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBVKzAwM0EgQ09MT04gY2hhcmFjdGVyCi0gICAg
IyAoOikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIC9wb3J0LywgZXhwcmVzc2VkIGFzIGEgYmFz
ZS10ZW4gaW50ZWdlciwKLSAgICAjIHRvIC9ob3N0cG9ydC8KLSAgICBpZiAoKG5vdCBzZWN1cmUg
YW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUKSBvcgotICAgICAgICAo
c2VjdXJlIGFuZCBwb3J0ICE9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQp
KToKLSAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3RyKHBvcnQpCi0gICAgIyA0LjEgMTIuIGNv
bmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoiLCBhIFUrMDAyMCBTUEFDRQotICAgICMg
Y2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICclczog
JXNcclxuJyAlIChjb21tb24uSE9TVF9IRUFERVIsIGhvc3Rwb3J0KQotCi0KLWRlZiBfcmVjZWl2
ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6Ci0gICAgYnl0ZXMgPSBbXQotICAgIHJlbWFpbmluZyA9
IGxlbmd0aAotICAgIHdoaWxlIHJlbWFpbmluZyA+IDA6Ci0gICAgICAgIHJlY2VpdmVkX2J5dGVz
ID0gc29ja2V0LnJlY3YocmVtYWluaW5nKQotICAgICAgICBpZiBub3QgcmVjZWl2ZWRfYnl0ZXM6
Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKAotICAgICAgICAgICAgICAgICdDb25uZWN0aW9u
IGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAgICAgICAgICAg
ICAgICcocmVxdWVzdGVkICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQot
ICAgICAgICAgICAgICAgIChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0gICAgICAgIGJ5
dGVzLmFwcGVuZChyZWNlaXZlZF9ieXRlcykKLSAgICAgICAgcmVtYWluaW5nIC09IGxlbihyZWNl
aXZlZF9ieXRlcykKLSAgICByZXR1cm4gJycuam9pbihieXRlcykKLQotCi1kZWYgX2dldF9tYW5k
YXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSk6Ci0gICAgIiIiR2V0cyB0aGUgdmFsdWUgb2YgdGhl
IGhlYWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tIGZpZWxkcy4KLQotICAgIFRoaXMgZnVuY3Rp
b24gZXhwZWN0cyB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmll
ZCBuYW1lCi0gICAgaW4gZmllbGRzLiBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hh
a2VFcnJvci4KLSAgICAiIiIKLQotICAgIHZhbHVlcyA9IGZpZWxkcy5nZXQobmFtZS5sb3dlcigp
KQotICAgIGlmIHZhbHVlcyBpcyBOb25lIG9yIGxlbih2YWx1ZXMpID09IDA6Ci0gICAgICAgIHJh
aXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgJyVzIGhlYWRlciBub3QgZm91
bmQ6ICVyJyAlIChuYW1lLCB2YWx1ZXMpKQotICAgIGlmIGxlbih2YWx1ZXMpID4gMToKLSAgICAg
ICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAnTXVsdGlwbGUgJXMg
aGVhZGVycyBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCi0gICAgcmV0dXJuIHZhbHVlc1sw
XQotCi0KLWRlZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsIG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdmFsdWUsIGNhc2Vfc2Vuc2l0aXZl
PUZhbHNlKToKLSAgICAiIiJHZXRzIGFuZCB2YWxpZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBoZWFk
ZXIgc3BlY2lmaWVkIGJ5IG5hbWUgZnJvbQotICAgIGZpZWxkcy4KLQotICAgIElmIGV4cGVjdGVk
X3ZhbHVlIGlzIHNwZWNpZmllZCwgY29tcGFyZXMgZXhwZWN0ZWQgdmFsdWUgYW5kIGFjdHVhbCB2
YWx1ZQotICAgIGFuZCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3Igb24gZmFpbHVyZS4g
WW91IGNhbiBzcGVjaWZ5IGNhc2UKLSAgICBzZW5zaXRpdmVuZXNzIGluIHRoaXMgY29tcGFyaXNv
biBieSBjYXNlX3NlbnNpdGl2ZSBwYXJhbWV0ZXIuIFRoaXMgZnVuY3Rpb24KLSAgICBleHBlY3Rz
IHRoYXQgdGhlcmUncyBvbmx5IG9uZSBoZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgaW4g
ZmllbGRzLgotICAgIE90aGVyd2lzZSwgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgot
ICAgICIiIgotCi0gICAgdmFsdWUgPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBuYW1l
KQotCi0gICAgaWYgKChjYXNlX3NlbnNpdGl2ZSBhbmQgdmFsdWUgIT0gZXhwZWN0ZWRfdmFsdWUp
IG9yCi0gICAgICAgIChub3QgY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlLmxvd2VyKCkgIT0gZXhw
ZWN0ZWRfdmFsdWUubG93ZXIoKSkpOgotICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJv
cigKLSAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyIChleHBlY3Rl
ZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgIChuYW1lLCBleHBlY3RlZF92YWx1ZSwg
dmFsdWUpKQotCi0KLWNsYXNzIF9UTFNTb2NrZXQob2JqZWN0KToKLSAgICAiIiJXcmFwcGVyIGZv
ciBhIFRMUyBjb25uZWN0aW9uLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsCi0gICAgICAg
ICAgICAgICAgIHJhd19zb2NrZXQsIHRsc19tb2R1bGUsIHRsc192ZXJzaW9uLCBkaXNhYmxlX3Rs
c19jb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xv
Z2dlcihzZWxmKQotCi0gICAgICAgIGlmIHRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9N
T0RVTEU6Ci0gICAgICAgICAgICBpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMjM6
Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNzbC5QUk9UT0NPTF9TU0x2MjMKLSAgICAgICAg
ICAgIGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9OX1NTTDM6Ci0gICAgICAgICAgICAg
ICAgdmVyc2lvbiA9IHNzbC5QUk9UT0NPTF9TU0x2MwotICAgICAgICAgICAgZWxpZiB0bHNfdmVy
c2lvbiA9PSBfVExTX1ZFUlNJT05fVExTMToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3Ns
LlBST1RPQ09MX1RMU3YxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tdGxzLXZlcnNpb24g
ZmxhZzogJXInICUgdGxzX3ZlcnNpb24pCi0KLSAgICAgICAgICAgIGlmIGRpc2FibGVfdGxzX2Nv
bXByZXNzaW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAg
ICAgICAgICAgICctLWRpc2FibGUtdGxzLWNvbXByZXNzaW9uIGlzIG5vdCBhdmFpbGFibGUgZm9y
IHNzbCAnCi0gICAgICAgICAgICAgICAgICAgICdtb2R1bGUnKQotCi0gICAgICAgICAgICBzZWxm
Ll90bHNfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHJhd19zb2NrZXQsIHNzbF92ZXJzaW9uPXZl
cnNpb24pCi0KLSAgICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4gSGFuZHNoYWtlIGlz
IGRvbmUgb24gd3JhcF9zb2NrZXQgY2FsbC4KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCJDaXBoZXI6ICVzIiwgc2VsZi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAgZWxpZiB0
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgdGxzX3ZlcnNp
b24gPT0gX1RMU19WRVJTSU9OX1NTTDIzOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBPcGVu
U1NMLlNTTC5TU0x2MjNfTUVUSE9ECi0gICAgICAgICAgICBlbGlmIHRsc192ZXJzaW9uID09IF9U
TFNfVkVSU0lPTl9TU0wzOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBPcGVuU1NMLlNTTC5T
U0x2M19NRVRIT0QKLSAgICAgICAgICAgIGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9O
X1RMUzE6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlRMU3YxX01FVEhP
RAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAot
ICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCAtLXRscy12ZXJzaW9uIGZsYWc6ICVyJyAlIHRs
c192ZXJzaW9uKQotCi0gICAgICAgICAgICBjb250ZXh0ID0gT3BlblNTTC5TU0wuQ29udGV4dCh2
ZXJzaW9uKQotCi0gICAgICAgICAgICBpZiBkaXNhYmxlX3Rsc19jb21wcmVzc2lvbjoKLSAgICAg
ICAgICAgICAgICAjIE9QX05PX0NPTVBSRVNTSU9OIGlzIG5vdCBkZWZpbmVkIGluIE9wZW5TU0wg
bW9kdWxlLgotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X29wdGlvbnMoMHgwMDAyMDAwMCkK
LQotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldCA9IE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24o
Y29udGV4dCwgcmF3X3NvY2tldCkKLSAgICAgICAgICAgICMgQ2xpZW50IG1vZGUuCi0gICAgICAg
ICAgICBzZWxmLl90bHNfc29ja2V0LnNldF9jb25uZWN0X3N0YXRlKCkKLSAgICAgICAgICAgIHNl
bGYuX3Rsc19zb2NrZXQuc2V0YmxvY2tpbmcoVHJ1ZSkKLQotICAgICAgICAgICAgIyBEbyBoYW5k
c2hha2Ugbm93IChub3QgbmVjZXNzYXJ5KS4KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQu
ZG9faGFuZHNoYWtlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBpcyBhdmFpbGFibGUnKQotCi0gICAgZGVmIHNlbmQo
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LndyaXRlKGRhdGEp
Ci0KLSAgICBkZWYgc2VuZGFsbChzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rs
c19zb2NrZXQuc2VuZGFsbChkYXRhKQotCi0gICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZT0tMSk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnJlYWQoc2l6ZSkKLQotICAgIGRlZiBjbG9z
ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuY2xvc2UoKQotCi0gICAg
ZGVmIGdldHBlZXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5n
ZXRwZWVybmFtZSgpCi0KLQotY2xhc3MgQ2xpZW50SGFuZHNoYWtlQmFzZShvYmplY3QpOgotICAg
ICIiIkEgYmFzZSBjbGFzcyBmb3IgV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nv
cnMgZm9yIGVhY2gKLSAgICBwcm90b2NvbCB2ZXJzaW9uLgotICAgICIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dn
ZXIoc2VsZikKLQotICAgIGRlZiBfcmVhZF9maWVsZHMoc2VsZik6Ci0gICAgICAgICMgNC4xIDMy
LiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBl
bXB0eS4KLSAgICAgICAgZmllbGRzID0ge30KLSAgICAgICAgd2hpbGUgVHJ1ZTogICMgIkZpZWxk
IgotICAgICAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUgZW1wdHkg
Ynl0ZSBhcnJheXMKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICAgICAgdmFsdWUgPSAn
JwotICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25hbWUvCi0gICAgICAgICAgICBuYW1lID0g
c2VsZi5fcmVhZF9uYW1lKCkKLSAgICAgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2VzCi0gICAgICAg
ICAgICAjIFRPRE8odHlvc2hpbm8pOiBTa2lwIG9ubHkgb25lIHNwYWNlIGFzIGRlc2NyaWJlZCBp
biB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNoID0gc2VsZi5fc2tpcF9zcGFjZXMoKQotICAgICAg
ICAgICAgIyA0LjEgMzYuIHJlYWQgL3ZhbHVlLwotICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9y
ZWFkX3ZhbHVlKGNoKQotICAgICAgICAgICAgIyA0LjEgMzcuIHJlYWQgYSBieXRlIGZyb20gdGhl
IHNlcnZlcgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEp
Ci0gICAgICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdFeHBlY3RlZCBM
RiBidXQgZm91bmQgJXIgd2hpbGUgcmVhZGluZyB2YWx1ZSAlciBmb3IgJwotICAgICAgICAgICAg
ICAgICAgICAnaGVhZGVyICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCAlciBoZWFkZXInLCBuYW1lKQotICAgICAgICAgICAg
IyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0IGhhcyB0
aGUgbmFtZQotICAgICAgICAgICAgIyBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGlu
dGVycHJldGluZyB0aGUgL25hbWUvIGJ5dGUKLSAgICAgICAgICAgICMgYXJyYXkgYXMgYSBVVEYt
OCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3RyaW5nCi0gICAgICAgICAgICAj
IG9idGFpbmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRG
LTggYnl0ZQotICAgICAgICAgICAgIyBzdHJlYW0uCi0gICAgICAgICAgICBmaWVsZHMuc2V0ZGVm
YXVsdChuYW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgIyA0LjEgMzkuIHJldHVy
biB0byB0aGUgIkZpZWxkIiBzdGVwIGFib3ZlCi0gICAgICAgIHJldHVybiBmaWVsZHMKLQotICAg
IGRlZiBfcmVhZF9uYW1lKHNlbGYpOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBl
bXB0eSBieXRlIGFycmF5cwotICAgICAgICBuYW1lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAg
ICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAg
aWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlzZSBD
bGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYg
d2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAgICAgICAgICBlbGlmIGNo
ID09ICc6JzogICMgMHgzQQotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCi0gICAgICAgICAg
ICBlbGlmIGNoID49ICdBJyBhbmQgY2ggPD0gJ1onOiAgIyBSYW5nZSAweDMxIHRvIDB4NUEKLSAg
ICAgICAgICAgICAgICBjaCA9IGNocihvcmQoY2gpICsgMHgyMCkKLSAgICAgICAgICAgICAgICBu
YW1lICs9IGNoCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gK
LQotICAgIGRlZiBfc2tpcF9zcGFjZXMoc2VsZik6Ci0gICAgICAgICMgNC4xIDM1LiByZWFkIGEg
Ynl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNo
ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgY2ggPT0g
JyAnOiAgIyAweDIwCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVy
biBjaAotCi0gICAgZGVmIF9yZWFkX3ZhbHVlKHNlbGYsIGNoKToKLSAgICAgICAgIyA0LjEgMzMu
IGxldCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgICAgIHZhbHVlID0gJycKLSAg
ICAgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgaWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAgICAgICAgICAg
IHJldHVybiB2YWx1ZQotICAgICAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAg
ICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCi0gICAgICAg
ICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLQotCi1kZWYgX2dldF9w
ZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6Ci0gICAgIiIiVmFs
aWRhdGUgdGhlIHJlc3BvbnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBw
YXJhbWV0ZXJzIGluCi0gICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2Vw
dCB0aGUgc2VydmVyXy4qIHBhcmFtZXRlcnMuCi0gICAgIiIiCi0KLSAgICBjbGllbnRfbWF4X3dp
bmRvd19iaXRzID0gTm9uZQotICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQot
Ci0gICAgY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lID0gKAotICAgICAgICAgICAgUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCi0gICAgICAgICAgICAgICAgICAgIF9DTElF
TlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
X25hbWUgPSAoCi0gICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
ci4KLSAgICAgICAgICAgICAgICAgICAgX0NMSUVOVF9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KQotCi0gICAgIyBXZSBkaWRuJ3Qgc2VuZCBhbnkgc2VydmVyXy4qIHBhcmFtZXRlci4KLSAgICAj
IEhhbmRsZSB0aG9zZSBwYXJhbWV0ZXJzIGFzIGludmFsaWQgaWYgZm91bmQgaW4gdGhlIHJlc3Bv
bnNlLgotCi0gICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbl9yZXNw
b25zZS5nZXRfcGFyYW1ldGVycygpOgotICAgICAgICBpZiBwYXJhbV9uYW1lID09IGNsaWVudF9t
YXhfd2luZG93X2JpdHNfbmFtZToKLSAgICAgICAgICAgIGlmIGNsaWVudF9tYXhfd2luZG93X2Jp
dHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGlwbGUgJXMgZm91bmQnICUgY2xpZW50
X21heF93aW5kb3dfYml0c19uYW1lKQotCi0gICAgICAgICAgICBwYXJzZWRfdmFsdWUgPSBfcGFy
c2Vfd2luZG93X2JpdHMocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICBpZiBwYXJzZWRfdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAoY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCi0gICAgICAg
ICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzID0gcGFyc2VkX3ZhbHVlCi0gICAgICAgIGVsaWYg
cGFyYW1fbmFtZSA9PSBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgotICAgICAgICAg
ICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnTXVsdGlwbGUgJXMgZm91bmQnICUgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSkK
LQotICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAn
QmFkICVzOiBIYXMgdmFsdWUgJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lLCBwYXJhbV92YWx1ZSkpCi0gICAgICAgICAgICBjbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciA9IFRydWUKLQotICAgIGlmIGNsaWVudF9ub19jb250ZXh0
X3Rha2VvdmVyIGlzIE5vbmU6Ci0gICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0g
RmFsc2UKLQotICAgIHJldHVybiBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIoY2xpZW50X21heF93
aW5kb3dfYml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyKQotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZVByb2Nlc3NvcihD
bGllbnRIYW5kc2hha2VCYXNlKToKLSAgICAiIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2Ug
cHJvY2Vzc29yIGZvcgotICAgIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0w
NiBhbmQgbGF0ZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBv
cHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yLCBzZWxmKS5f
X2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQ
ZXJmb3JtcyBvcGVuaW5nIGhhbmRzaGFrZSBvbiB0aGUgc3BlY2lmaWVkIHNvY2tldC4KLQotICAg
ICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDbGllbnRIYW5kc2hha2VFcnJvcjogaGFuZHNoYWtl
IGZhaWxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX2J1aWxkX21l
dGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIFJlcXVlc3QtTGluZTogJXInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9saW5lKQotICAgICAgICBzZWxmLl9zb2Nr
ZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUpCi0KLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAg
ZmllbGRzLmFwcGVuZChfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQs
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQotICAgICAgICBmaWVsZHMuYXBw
ZW5kKF9VUEdSQURFX0hFQURFUikKLSAgICAgICAgZmllbGRzLmFwcGVuZChfQ09OTkVDVElPTl9I
RUFERVIpCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMub3JpZ2luIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uID09IF9QUk9UT0NPTF9W
RVJTSU9OX0hZQkkwODoKLSAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVh
ZGVyKAotICAgICAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9PUklHSU5fSEVB
REVSLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIo
Y29tbW9uLk9SSUdJTl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0KLSAgICAgICAgb3JpZ2luYWxfa2V5
ID0gb3MudXJhbmRvbSgxNikKLSAgICAgICAgc2VsZi5fa2V5ID0gYmFzZTY0LmI2NGVuY29kZShv
cmlnaW5hbF9rZXkpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICcl
czogJXIgKCVzKScsCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVS
LAotICAgICAgICAgICAgc2VsZi5fa2V5LAotICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2lu
YWxfa2V5KSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgKLSAgICAgICAgICAgICclczogJXNcclxu
JyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBzZWxmLl9rZXkpKQotCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudmVyc2lvbl9oZWFkZXIgPiAwOgotICAgICAgICAgICAgZmll
bGRzLmFwcGVuZCgnJXM6ICVkXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9I
RUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnZlcnNpb25faGVhZGVyKSkKLSAgICAgICAgZWxpZiBzZWxmLl9vcHRpb25zLnByb3Rv
Y29sX3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4OgotICAgICAgICAgICAgZmll
bGRzLmFwcGVuZCgnJXM6ICVkXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9I
RUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24u
VkVSU0lPTl9IWUJJMDgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmllbGRzLmFwcGVu
ZCgnJXM6ICVkXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uVkVSU0lPTl9I
WUJJX0xBVEVTVCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0gW10KLQotICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmRlZmxhdGVfZnJhbWU6Ci0gICAgICAgICAgICBleHRlbnNp
b25zX3RvX3JlcXVlc3QuYXBwZW5kKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKSkKLQotICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6Ci0gICAgICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgICAgICBjb21t
b24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgICAgICMgQWNjZXB0IHRo
ZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIgYnkgZGVmYXVsdC4K
LSAgICAgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKAotICAgICAgICAgICAgICAgICAg
ICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAgICAgICAgICAg
ICAgICAgTm9uZSkKLSAgICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5hcHBlbmQoZXh0
ZW5zaW9uKQotCi0gICAgICAgIGlmIGxlbihleHRlbnNpb25zX3RvX3JlcXVlc3QpICE9IDA6Ci0g
ICAgICAgICAgICBmaWVsZHMuYXBwZW5kKAotICAgICAgICAgICAgICAgICclczogJXNcclxuJyAl
Ci0gICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVS
LAotICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190
b19yZXF1ZXN0KSkpCi0KLSAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoKLSAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkKQotCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5k
YWxsKCdcclxuJykKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgY2xpZW50XCdz
IG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIFN0
YXR1cy1MaW5lJykKLQotICAgICAgICBzdGF0dXNfbGluZSA9ICcnCi0gICAgICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAg
ICAgICAgICAgIHN0YXR1c19saW5lICs9IGNoCi0gICAgICAgICAgICBpZiBjaCA9PSAnXG4nOgot
ICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgbSA9IHJlLm1hdGNoKCdIVFRQL1xcZCtc
LlxcZCsgKFxcZFxcZFxcZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCi0gICAgICAgIGlmIG0gaXMg
Tm9uZToKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAg
ICAgICAgICdXcm9uZyBzdGF0dXMgbGluZSBmb3JtYXQ6ICVyJyAlIHN0YXR1c19saW5lKQotICAg
ICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgaWYgc3RhdHVzX2NvZGUgIT0g
JzEwMSc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1VuZXhwZWN0ZWQgc3RhdHVz
IGNvZGUgJXMgd2l0aCBmb2xsb3dpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdoZWFkZXJzOiAlcicsIHN0YXR1c19jb2RlLCBzZWxmLl9yZWFkX2ZpZWxkcygpKQotICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVj
dGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAlcicgJSBzdGF0dXNfY29kZSkKLQot
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIHZhbGlkIFN0YXR1cy1MaW5lJykK
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIGhlYWRlcnMgdW50aWwg
d2Ugc2VlIGFuIGVtcHR5IGxpbmUnKQotCi0gICAgICAgIGZpZWxkcyA9IHNlbGYuX3JlYWRfZmll
bGRzKCkKLQotICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAg
ICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciBoZWFkZXIgJwotICAgICAgICAgICAgICAgICduYW1l
ICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
UmVjZWl2ZWQgYW4gZW1wdHkgbGluZScpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2Vy
dmVyXCdzIG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAg
IF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLAotICAgICAg
ICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLAotICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tF
VF9VUEdSQURFX1RZUEUsCi0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBfdmFsaWRhdGVf
bWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywKLSAgICAgICAgICAgIGNvbW1v
bi5DT05ORUNUSU9OX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJ
T05fVFlQRSwKLSAgICAgICAgICAgIEZhbHNlKQotCi0gICAgICAgIGFjY2VwdCA9IF9nZXRfbWFu
ZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJTT0NLRVRf
QUNDRVBUX0hFQURFUikKLQotICAgICAgICAjIFZhbGlkYXRlCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAg
ZXhjZXB0IFR5cGVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKAot
ICAgICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCi0gICAg
ICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCkp
Ci0KLSAgICAgICAgaWYgbGVuKGJpbmFyeV9hY2NlcHQpICE9IDIwOgotICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFsdWUg
b2YgJXMgaXMgbm90IDIwLWJ5dGUgbG9uZycgJQotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX0FDQ0VQVF9IRUFERVIpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgJ1Jlc3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywKLSAgICAgICAg
ICAgIGFjY2VwdCwgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCi0KLSAgICAgICAgYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCA9IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICAgICAgc2VsZi5fa2V5
ICsgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICAgICAgZXhwZWN0
ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KQotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCByZXNwb25z
ZSBmb3IgY2hhbGxlbmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkX2FjY2VwdCwg
dXRpbC5oZXhpZnkoYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgaWYgYWNjZXB0
ICE9IGV4cGVjdGVkX2FjY2VwdDoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAotICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVkOiAl
cyknICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURF
UiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQotCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfYWNj
ZXB0ZWQgPSBGYWxzZQotICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBGYWxz
ZQotCi0gICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgKLSAgICAgICAgICAg
IGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLmxvd2VyKCkpCi0gICAgICAg
IGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBbXQotICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRlciBp
cyBub3QgTm9uZSBhbmQgbGVuKGV4dGVuc2lvbnNfaGVhZGVyKSAhPSAwOgotICAgICAgICAgICAg
YWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKGV4dGVuc2lvbnNf
aGVhZGVyWzBdKQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgdGhlIG5ldyBzdHls
ZSBwZXJmcmFtZSBjb21wcmVzc2lvbiBleHRlbnNpb24uCi0gICAgICAgIGZvciBleHRlbnNpb24g
aW4gYWNjZXB0ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lID0gZXh0
ZW5zaW9uLm5hbWUoKQotICAgICAgICAgICAgaWYgKGV4dGVuc2lvbl9uYW1lID09IGNvbW1vbi5E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LmRlZmxhdGVfZnJhbWUpOgotICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQg
PSBUcnVlCi0gICAgICAgICAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9u
UHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICB1bnVzZWRfZXh0ZW5zaW9uX3Jl
c3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSA9IHByb2Nlc3NvcgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIChleHRlbnNpb25fbmFtZSA9PSBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6Ci0gICAgICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgZnJhbWVyID0g
X2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAg
ICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLSAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUgZXh0ZW5z
aW9uX25hbWUpCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBhbmQg
bm90IGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2
ZXIgcmVqZWN0ZWQgaXQnICUKLSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9F
WFRFTlNJT04pCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVm
bGF0ZSBhbmQKLSAgICAgICAgICAgIG5vdCBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQpOgot
ICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdSZXF1ZXN0ZWQgJXMsIGJ1dCB0aGUgc2VydmVyIHJlamVjdGVkIGl0JyAlCi0gICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotCi0gICAg
ICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29ja2V0LVByb3RvY29sCi0gICAg
ICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0Yy4KLQotCi1jbGFzcyBDbGll
bnRIYW5kc2hha2VQcm9jZXNzb3JIeWJpMDAoQ2xpZW50SGFuZHNoYWtlQmFzZSk6Ci0gICAgIiIi
V2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IKLSAgICBkcmFmdC1pZXRm
LWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDAgKGVxdWl2YWxlbnQgdG8KLSAgICBkcmFmdC1o
aXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbC03NikuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgc29ja2V0LCBvcHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtl
UHJvY2Vzc29ySHliaTAwLCBzZWxmKS5fX2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0
ID0gc29ja2V0Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgKHNl
bGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBvcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0h5
QmkgMDAgZG9lc25cJ3Qgc3VwcG9ydCBleHRlbnNpb25zLicpCi0gICAgICAgICAgICBzeXMuZXhp
dCgxKQotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybXMgb3Bl
bmluZyBoYW5kc2hha2Ugb24gdGhlIHNwZWNpZmllZCBzb2NrZXQuCi0KLSAgICAgICAgUmFpc2Vz
OgotICAgICAgICAgICAgQ2xpZW50SGFuZHNoYWtlRXJyb3I6IGhhbmRzaGFrZSBmYWlsZWQuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAg
ICBzZWxmLl9zb2NrZXQuc2VuZGFsbChfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5y
ZXNvdXJjZSkpCi0gICAgICAgICMgNC4xIDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0
IG9mIHN0cmluZ3MuCi0gICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0
aGUgc3RyaW5nICJVcGdyYWRlOiBXZWJTb2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVs
ZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUl9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQg
dGhlIHN0cmluZyAiQ29ubmVjdGlvbjogVXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZp
ZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQg
SG9zdDogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9o
b3N0X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy51c2VfdGxzKSkKLSAgICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9m
aWVsZHMvLgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5vcmlnaW46Ci0gICAgICAgICAg
ICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnU3BlY2lmeSB0
aGUgb3JpZ2luIG9mIHRoZSBjb25uZWN0aW9uIGJ5IC0tb3JpZ2luIGZsYWcnKQotICAgICAgICBm
aWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKGNvbW1vbi5PUklHSU5fSEVBREVSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAg
ICAgICAgIyBUT0RPOiA0LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRv
IC9maWVsZHMvLgotICAgICAgICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8g
L2ZpZWxkcy8uCi0KLSAgICAgICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxu
PiB0byAvZmllbGRzLy4KLSAgICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVy
YXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1i
ZXIxOiAlZCcsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xy
XG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSLCBrZXkxKSkKLSAgICAgICAg
c2VsZi5fbnVtYmVyMiwga2V5MiA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkK
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIyOiAlZCcsIHNlbGYuX251bWJlcjIp
Ci0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09D
S0VUX0tFWTJfSEVBREVSLCBrZXkyKSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogMFxy
XG4nICUgY29tbW9uLlNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSKQotCi0gICAgICAgICMgNC4x
IDI0LiBGb3IgZWFjaCBzdHJpbmcgaW4gL2ZpZWxkcy8sIGluIGEgcmFuZG9tIG9yZGVyOiBzZW5k
IHRoZQotICAgICAgICAjIHN0cmluZywgZW5jb2RlZCBhcyBVVEYtOCwgZm9sbG93ZWQgYnkgYSBV
VEYtOCBlbmNvZGVkIFUrMDAwRCBDQVJSSUFHRQotICAgICAgICAjIFJFVFVSTiBVKzAwMEEgTElO
RSBGRUVEIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgcmFuZG9tLnNodWZmbGUoZmll
bGRzKQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoZmllbGQpCi0gICAgICAgICMgNC4xIDI1LiBzZW5kIGEgVVRGLTgtZW5jb2Rl
ZCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQKLSAgICAgICAgIyBjaGFy
YWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykK
LSAgICAgICAgIyA0LjEgMjYuIGxldCAva2V5My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiBl
aWdodCByYW5kb20gYnl0ZXMgKG9yCi0gICAgICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRvbSA2
NCBiaXQgaW50ZWdlciBlbmNvZGVkIGluIGEgYmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAgIHNl
bGYuX2tleTMgPSBzZWxmLl9nZW5lcmF0ZV9rZXkzKCkKLSAgICAgICAgIyA0LjEgMjcuIHNlbmQg
L2tleTMvIHRvIHRoZSBzZXJ2ZXIuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYu
X2tleTMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdLZXkzOiAl
ciAoJXMpJywgc2VsZi5fa2V5MywgdXRpbC5oZXhpZnkoc2VsZi5fa2V5MykpCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgaGFuZHNoYWtlJykKLQotICAgICAgICAjIDQuMSAyOC4g
UmVhZCBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0g
ICAgICAgICMgY2xvc2VzLCBvciBhIDB4MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0
aGVzZSBieXRlcywgaW5jbHVkaW5nCi0gICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAg
IGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAg
ICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBp
ZiAvZmllbGQvIGlzIG5vdCBhdCBsZWFzdCBzZXZlbiBieXRlcyBsb25nLCBvciBpZiB0aGUgbGFz
dAotICAgICAgICAjIHR3byBieXRlcyBhcmVuJ3QgMHgwRCBhbmQgMHgwQSByZXNwZWN0aXZlbHks
IG9yIGlmIGl0IGRvZXMgbm90Ci0gICAgICAgICMgY29udGFpbiBhdCBsZWFzdCB0d28gMHgyMCBi
eXRlcywgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbgotICAgICAgICAjIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxk
LmVuZHN3aXRoKCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJv
cignV3Jvbmcgc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2go
J1teIF0qIChbXiBdKikgLionLCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ05vIEhU
VFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAg
ICAjIDQuMSAyOS4gbGV0IC9jb2RlLyBiZSB0aGUgc3Vic3RyaW5nIG9mIC9maWVsZC8gdGhhdCBz
dGFydHMgZnJvbSB0aGUKLSAgICAgICAgIyBieXRlIGFmdGVyIHRoZSBmaXJzdCAweDIwIGJ5dGUs
IGFuZCBlbmRzIHdpdGggdGhlIGJ5dGUgYmVmb3JlIHRoZQotICAgICAgICAjIHNlY29uZCAweDIw
IGJ5dGUuCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICMgNC4xIDMwLiBpZiAv
Y29kZS8gaXMgbm90IHRocmVlIGJ5dGVzIGxvbmcsIG9yIGlmIGFueSBvZiB0aGUgYnl0ZXMgaW4K
LSAgICAgICAgIyAvY29kZS8gYXJlIG5vdCBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDkwLCB0aGVu
IGZhaWwgdGhlIFdlYlNvY2tldAotICAgICAgICAjIGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgICAgICBpZiBub3QgcmUubWF0Y2goJ1swLTldWzAtOV1bMC05XScsIGNvZGUp
OgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAg
ICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5l
OiAlcicgJQotICAgICAgICAgICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgICMgNC4xIDMx
LiBpZiAvY29kZS8sIGludGVycHJldGVkIGFzIFVURi04LCBpcyAiMTAxIiwgdGhlbiBtb3ZlIHRv
IHRoZQotICAgICAgICAjIG5leHQgc3RlcC4KLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoKLSAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdF
eHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6
ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0LjEg
MzItMzkuIHJlYWQgZmllbGRzIGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gc2VsZi5f
cmVhZF9maWVsZHMoKQotICAgICAgICAjIDQuMSA0MC4gX0ZpZWxkcyBwcm9jZXNzaW5nXwotICAg
ICAgICAjIHJlYWQgYSBieXRlIGZyb20gc2VydmVyCi0gICAgICAgIGNoID0gX3JlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignRXhwZWN0ZWQgTEYgYnV0IGZvdW5k
ICVyJyAlIGNoKQotICAgICAgICAjIDQuMSA0MS4gY2hlY2sgL2ZpZWxkcy8KLSAgICAgICAgIyBU
T0RPKHVrYWkpOiBwcm90b2NvbAotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMgInVw
Z3JhZGUiCi0gICAgICAgICMgIGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhhY3RseSBlcXVhbCB0byB0
aGUgc3RyaW5nICJXZWJTb2NrZXQiLAotICAgICAgICAjICB0aGVuIGZhaWwgdGhlIFdlYlNvY2tl
dCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21h
bmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24u
VVBHUkFERV9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQ
RV9ISVhJRTc1LAotICAgICAgICAgICAgVHJ1ZSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBu
YW1lIGlzICJjb25uZWN0aW9uIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0
byBBU0NJSSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRvIHRo
ZSBzdHJpbmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFu
ZAotICAgICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRh
dG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uQ09O
TkVDVElPTl9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZ
UEUsCi0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBvcmlnaW4gPSBfZ2V0X21hbmRhdG9y
eV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJ
Tl9IRUFERVIpCi0KLSAgICAgICAgbG9jYXRpb24gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0g
ICAgICAgICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX0xPQ0FUSU9OX0hFQURFUikK
LQotICAgICAgICAjIFRPRE8odWthaSk6IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwg
Li4KLQotICAgICAgICAjIDQuMSA0Mi4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0
aW9uIG9mIC9udW1iZXJfMS8sCi0gICAgICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAz
MiBiaXQgaW50ZWdlciwgL251bWJlcl8yLywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVu
ZGlhbiAzMiBiaXQgaW50ZWdlciwgYW5kIHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRo
ZQotICAgICAgICAjIG9yZGVyIHRoZXkgd2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBj
aGFsbGVuZ2UgPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFs
bGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxl
bmdlICs9IHNlbGYuX2tleTMKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVu
Z2UpKQotCi0gICAgICAgICMgNC4xIDQzLiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdl
cnByaW50IG9mIC9jaGFsbGVuZ2UvIGFzIGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQg
c3RyaW5nLgotICAgICAgICBleHBlY3RlZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdl
c3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQg
Y2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGls
LmhleGlmeShleHBlY3RlZCkpCi0KLSAgICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRl
cyBmcm9tIHRoZSBzZXJ2ZXIuCi0gICAgICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMu
Ci0gICAgICAgIHJlcGx5ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxNikKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0FjdHVhbCBjaGFsbGVuZ2UgcmVz
cG9uc2U6ICVyICglcyknLCByZXBseSwgdXRpbC5oZXhpZnkocmVwbHkpKQotCi0gICAgICAgICMg
NC4xIDQ1LiBpZiAvcmVwbHkvIGRvZXMgbm90IGV4YWN0bHkgZXF1YWwgL2V4cGVjdGVkLywgdGhl
biBmYWlsCi0gICAgICAgICMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgZXhwZWN0ZWQgIT0gcmVwbHk6Ci0gICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnQmFkIGNoYWxsZW5nZSBy
ZXNwb25zZTogJXIgKGV4cGVjdGVkKSAhPSAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAg
IChleHBlY3RlZCwgcmVwbHkpKQotICAgICAgICAjIDQuMSA0Ni4gVGhlICpXZWJTb2NrZXQgY29u
bmVjdGlvbiBpcyBlc3RhYmxpc2hlZCouCi0KLSAgICBkZWYgX2dlbmVyYXRlX3NlY193ZWJzb2Nr
ZXRfa2V5KHNlbGYpOgotICAgICAgICAjIDQuMSAxNi4gbGV0IC9zcGFjZXNfbi8gYmUgYSByYW5k
b20gaW50ZWdlciBmcm9tIDEgdG8gMTIgaW5jbHVzaXZlLgotICAgICAgICBzcGFjZXMgPSByYW5k
b20ucmFuZGludCgxLCAxMikKLSAgICAgICAgIyA0LjEgMTcuIGxldCAvbWF4X24vIGJlIHRoZSBs
YXJnZXN0IGludGVnZXIgbm90IGdyZWF0ZXIgdGhhbgotICAgICAgICAjICA0LDI5NCw5NjcsMjk1
IGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgbWF4bnVtID0gNDI5NDk2NzI5NSAvIHNw
YWNlcwotICAgICAgICAjIDQuMSAxOC4gbGV0IC9udW1iZXJfbi8gYmUgYSByYW5kb20gaW50ZWdl
ciBmcm9tIDAgdG8gL21heF9uLwotICAgICAgICAjIGluY2x1c2l2ZS4KLSAgICAgICAgbnVtYmVy
ID0gcmFuZG9tLnJhbmRpbnQoMCwgbWF4bnVtKQotICAgICAgICAjIDQuMSAxOS4gbGV0IC9wcm9k
dWN0X24vIGJlIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgL251bWJlcl9uLyBhbmQKLSAgICAg
ICAgIyAvc3BhY2VzX24vIHRvZ2V0aGVyLgotICAgICAgICBwcm9kdWN0ID0gbnVtYmVyICogc3Bh
Y2VzCi0gICAgICAgICMgNC4xIDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0cmluZyBjb25zaXN0aW5n
IG9mIC9wcm9kdWN0X24vLCBleHByZXNzZWQKLSAgICAgICAgIyBpbiBiYXNlIHRlbiB1c2luZyB0
aGUgbnVtZXJhbHMgaW4gdGhlIHJhbmdlIFUrMDAzMCBESUdJVCBaRVJPICgwKSB0bwotICAgICAg
ICAjIFUrMDAzOSBESUdJVCBOSU5FICg5KS4KLSAgICAgICAga2V5ID0gc3RyKHByb2R1Y3QpCi0g
ICAgICAgICMgNC4xIDIxLiBpbnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3ZWx2ZSByYW5kb20gY2hh
cmFjdGVycyBmcm9tIHRoZQotICAgICAgICAjIHJhbmdlIFUrMDAyMSB0byBVKzAwMkYgYW5kIFUr
MDAzQSB0byBVKzAwN0UgaW50byAva2V5X24vIGF0IHJhbmRvbQotICAgICAgICAjIHBvc2l0aW9u
cy4KLSAgICAgICAgYXZhaWxhYmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwgMHgyZiArIDEpICsgcmFu
Z2UoMHgzYSwgMHg3ZSArIDEpCi0gICAgICAgIG4gPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAg
ICAgICAgZm9yIF8gaW4geHJhbmdlKG4pOgotICAgICAgICAgICAgY2ggPSByYW5kb20uY2hvaWNl
KGF2YWlsYWJsZV9jaGFycykKLSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDAsIGxl
bihrZXkpKQotICAgICAgICAgICAga2V5ID0ga2V5WzA6cG9zXSArIGNocihjaCkgKyBrZXlbcG9z
Ol0KLSAgICAgICAgIyA0LjEgMjIuIGluc2VydCAvc3BhY2VzX24vIFUrMDAyMCBTUEFDRSBjaGFy
YWN0ZXJzIGludG8gL2tleV9uLyBhdAotICAgICAgICAjIHJhbmRvbSBwb3NpdGlvbnMgb3RoZXIg
dGhhbiBzdGFydCBvciBlbmQgb2YgdGhlIHN0cmluZy4KLSAgICAgICAgZm9yIF8gaW4geHJhbmdl
KHNwYWNlcyk6Ci0gICAgICAgICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5KSAt
IDEpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCi0gICAg
ICAgIHJldHVybiBudW1iZXIsIGtleQotCi0gICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYpOgot
ICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVp
Z2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0
IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAgcmV0
dXJuICcnLmpvaW4oW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFuZ2Uo
OCldKQotCi0KLWNsYXNzIENsaWVudENvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJBIHdyYXBw
ZXIgZm9yIHNvY2tldCBvYmplY3QgdG8gcHJvdmlkZSB0aGUgbXBfY29ubiBpbnRlcmZhY2UuCi0g
ICAgbW9kX3B5d2Vic29ja2V0IGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gYmUgd29ya2luZyBvbiBB
cGFjaGUgbW9kX3B5dGhvbidzCi0gICAgbXBfY29ubiBvYmplY3QuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0
Ci0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5k
YWxsKGRhdGEpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBuKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3NvY2tldC5yZWN2KG4pCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fc29ja2V0LmdldHBlZXJuYW1lKCkKLSAgICByZW1vdGVfYWRkciA9IHBy
b3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQotCi1jbGFzcyBDbGllbnRSZXF1ZXN0KG9iamVjdCk6
Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBhYmxlIHRvIHBhc3MgYSBz
b2NrZXQgb2JqZWN0IHRvCi0gICAgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbXBfcmVxdWVzdCBv
YmplY3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAg
c2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IENsaWVudENv
bm5lY3Rpb24oc29ja2V0KQotCi0KLWRlZiBfaW1wb3J0X3NzbCgpOgotICAgIGdsb2JhbCBzc2wK
LSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBl
eGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfaW1wb3J0
X3B5b3BlbnNzbCgpOgotICAgIGdsb2JhbCBPcGVuU1NMCi0gICAgdHJ5OgotICAgICAgICBpbXBv
cnQgT3BlblNTTC5TU0wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0RXJy
b3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIEVjaG9DbGllbnQob2JqZWN0KToK
LSAgICAiIiJXZWJTb2NrZXQgZWNobyBjbGllbnQuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNl
bGYuX3NvY2tldCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFz
c19sb2dnZXIoc2VsZikKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIlJ1biB0aGUg
Y2xpZW50LgotCi0gICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1l
c3NhZ2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2Vs
Zi5fc29ja2V0ID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1l
b3V0KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHNlbGYuX3NvY2tldC5jb25uZWN0KChzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQp
KQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgICAg
IHNlbGYuX3NvY2tldCA9IF9UTFNTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nv
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50bHNfbW9kdWxlLAotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRsc192ZXJzaW9uLAotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLmRpc2FibGVfdGxzX2NvbXByZXNzaW9uKQotCi0gICAgICAg
ICAgICB2ZXJzaW9uID0gc2VsZi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uCi0KLSAgICAgICAg
ICAgIGlmICh2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCBvcgotICAgICAgICAg
ICAgICAgIHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzKToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9oYW5kc2hha2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIGVs
aWYgdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDA6Ci0gICAgICAgICAgICAgICAg
c2VsZi5faGFuZHNoYWtlID0gQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwKAotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ICAgICdJbnZhbGlkIC0tcHJvdG9jb2wtdmVyc2lvbiBmbGFnOiAlcicgJSB2ZXJzaW9uKQotCi0g
ICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKLQotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQotCi0gICAgICAgICAgICBy
ZXF1ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgICAgIHZlcnNp
b25fbWFwID0gewotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwODogY29t
bW9uLlZFUlNJT05fSFlCSTA4LAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZ
QkkxMzogY29tbW9uLlZFUlNJT05fSFlCSTEzLAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9W
RVJTSU9OX0hZQkkwMDogY29tbW9uLlZFUlNJT05fSFlCSTAwfQotICAgICAgICAgICAgcmVxdWVz
dC53c192ZXJzaW9uID0gdmVyc2lvbl9tYXBbdmVyc2lvbl0KLQotICAgICAgICAgICAgaWYgKHZl
cnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4IG9yCi0gICAgICAgICAgICAgICAgdmVy
c2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMpOgotICAgICAgICAgICAgICAgIHN0cmVh
bV9vcHRpb24gPSBTdHJlYW1PcHRpb25zKCkKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9u
Lm1hc2tfc2VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLnVubWFza19y
ZWNlaXZlID0gRmFsc2UKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0
ZV9mcmFtZSBpcyBub3QgRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciA9IHNl
bGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSBpcyBub3QgRmFsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIGZyYW1lciA9IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVm
bGF0ZQotICAgICAgICAgICAgICAgICAgICBmcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0cmVhbShyZXF1
ZXN0LCBzdHJlYW1fb3B0aW9uKQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9UT0NP
TF9WRVJTSU9OX0hZQkkwMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBTdHJlYW1I
aXhpZTc1KHJlcXVlc3QsIFRydWUpCi0KLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29w
dGlvbnMubWVzc2FnZS5zcGxpdCgnLCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5z
ZW5kX21lc3NhZ2UobGluZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJv
c2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdTZW5kOiAlcycgJSBsaW5lCi0gICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX3N0cmVh
bS5yZWNlaXZlX21lc3NhZ2UoKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdSZWN2OiAlcycgJSBy
ZWNlaXZlZAotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ICdFcnJvcjogJXMnICUgZQotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0g
ICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQotCi0gICAgZGVmIF9kb19jbG9zaW5n
X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5nIGhhbmRzaGFrZSB1
c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09IF9HT09EQllFX01FU1NBR0U6Ci0gICAg
ICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlLCBz
bwotICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2UgbWVzc2FnZSBmcm9t
IHNlcnZlci4KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdXYWl0IGZvciBzZXJ2ZXIt
aW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxm
Ll9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICBwcmludCAnUmVjdiBjbG9zZScKLSAgICAgICAgICAgICAgICBw
cmludCAnU2VuZCBhY2snCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZSBhbmQgc2VudCBhY2sn
KQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBwcmludCAnU2VuZCBjbG9zZScKLSAg
ICAgICAgc2VsZi5fc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnU2VudCBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgIHByaW50ICdSZWN2IGFj
aycKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCi0KLQotZGVmIG1h
aW4oKToKLSAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcigndXRmLTgnKShzeXMuc3Rk
b3V0KQotCi0gICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKLSAgICAjIFdlIGFjY2VwdCAtLWNv
bW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBzYW1lIGFzIEdvb2dsZQot
ICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1hbmQtbGluZS1mbGFnIHN0
eWxlIGZsYWdzLgotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNlcnZlci1ob3N0Jywg
Jy0tc2VydmVyX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9ob3N0
JywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhv
c3QnLCBoZWxwPSdzZXJ2ZXIgaG9zdCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0t
c2VydmVyLXBvcnQnLCAnLS1zZXJ2ZXJfcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nc2VydmVyX3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9X1VOREVGSU5FRF9QT1JULCBoZWxwPSdzZXJ2ZXIgcG9ydCcpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1vJywgJy0tb3JpZ2luJywgZGVzdD0nb3JpZ2luJywgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J29yaWdpbicpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1yJywgJy0tcmVzb3VyY2UnLCBkZXN0PSdyZXNvdXJjZScsIHR5cGU9
J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nL2VjaG8nLCBoZWxwPSdy
ZXNvdXJjZSBwYXRoJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS1tZXNzYWdlJywg
ZGVzdD0nbWVzc2FnZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0oJ2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kLiAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZl
ci4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3ZlcmJvc2UnLCBhY3Rp
b249J3N0b3JlX2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhl
bHA9J3N1cHByZXNzIG1lc3NhZ2VzJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10
bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pLiBCeSBkZWZhdWx0
LCAnCi0gICAgICAgICAgICAgICAgICAgICAgJ2l0IGxvb2tzIGZvciBzc2wgYW5kIHB5T3BlblNT
TCBtb2R1bGUgYW5kIHVzZXMgZm91bmQgJwotICAgICAgICAgICAgICAgICAgICAgICdvbmUuIFVz
ZSAtLXRscy1tb2R1bGUgb3B0aW9uIHRvIHNwZWNpZnkgd2hpY2ggbW9kdWxlICcKLSAgICAgICAg
ICAgICAgICAgICAgICAndG8gdXNlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9k
dWxlJywgJy0tdGxzX21vZHVsZScsIGRlc3Q9J3Rsc19tb2R1bGUnLAotICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bX1RM
U19CWV9TVEFOREFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZC4gJwotICAg
ICAgICAgICAgICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNp
ZmllZCcgJQotICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwg
X1RMU19CWV9QWU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy12ZXJzaW9u
JywgJy0tdGxzX3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Rsc192ZXJz
aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PV9UTFNf
VkVSU0lPTl9TU0wyMywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMvU1NMIHZlcnNp
b24gdG8gdXNlLiBPbmUgb2YgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfVExTX1ZFUlNJ
T05fU1NMMjMgKyAnXCcgKFNTTCB2ZXJzaW9uIDIgb3IgMyksIFwnJyArCi0gICAgICAgICAgICAg
ICAgICAgICAgX1RMU19WRVJTSU9OX1NTTDMgKyAnXCcgKFNTTCB2ZXJzaW9uIDMpLCBcJycgKwot
ICAgICAgICAgICAgICAgICAgICAgIF9UTFNfVkVSU0lPTl9UTFMxICsgJ1wnIChUTFMgdmVyc2lv
biAxKScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzYWJsZS10bHMtY29tcHJlc3Npb24n
LCAnLS1kaXNhYmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nZGlzYWJsZV90bHNfY29tcHJlc3Npb24nLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nRGlzYWJsZSBUTFMgY29tcHJlc3Npb24uIEF2YWlsYWJsZSBvbmx5IHdoZW4gJwotICAgICAg
ICAgICAgICAgICAgICAgICdweU9wZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLWsnLCAnLS1zb2NrZXQtdGltZW91dCcsICctLXNvY2tldF90aW1lb3V0JywK
LSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsIHR5cGU9J2ludCcs
IGRlZmF1bHQ9X1RJTUVPVVRfU0VDLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RpbWVv
dXQoc2VjKSBmb3Igc29ja2V0cycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZHJhZnQ3NScs
IGRlc3Q9J2RyYWZ0NzUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nT2Jzb2xldGUg
b3B0aW9uLiBEb25cJ3QgdXNlIHRoaXMuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1wcm90
b2NvbC12ZXJzaW9uJywgJy0tcHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ncHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0n
c3RyaW5nJywgZGVmYXVsdD1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gdG8gdXNlLiBPbmUgb2Yg
XCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgKyAn
XCcsIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4
ICsgJ1wnLCBcJycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZ
QkkwMCArICdcJycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdmVyc2lvbi1oZWFkZXInLCAn
LS12ZXJzaW9uX2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyc2lvbl9o
ZWFkZXInLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1bHQ9LTEsCi0g
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBTZWMtV2ViU29ja2V0LVZlcnNpb24g
aGVhZGVyIHZhbHVlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZsYXRlLWZyYW1lJywg
Jy0tZGVmbGF0ZV9mcmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGVmbGF0ZV9m
cmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhlIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdXNlLXBlcm1lc3NhZ2Ut
ZGVmbGF0ZScsICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nVXNlIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLicpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNl
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJu
JywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJu
JywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9n
IGxldmVsLicpCi0KLSAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoKQotCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLmdldExldmVsTmFt
ZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkKLQotICAgIGlmIG9wdGlvbnMuZHJhZnQ3NToK
LSAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnLS1kcmFmdDc1IG9wdGlvbiBpcyBvYnNvbGV0ZS4n
KQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9u
ID09IF9QUk9UT0NPTF9WRVJTSU9OX0hJWElFNzU6Ci0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
Ci0gICAgICAgICAgICAnVmFsdWUgJXMgaXMgb2Jzb2xldGUgZm9yIC0tcHJvdG9jb2xfdmVyc2lv
biBvcHRpb25zJyAlCi0gICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1KQotICAg
ICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBv
cHRpb25zLnRsc19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6
Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9N
T0RVTEUKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykK
LSAgICAgICAgICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBv
cHRpb25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxv
Z2dpbmcuZGVidWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAg
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUg
PT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9z
c2woKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5v
dCBhdmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYg
b3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYg
bm90IF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNh
bCgncHlPcGVuU1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBz
eXMuZXhpdCgxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgn
SW52YWxpZCAtLXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAg
ICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb24gYW5kCi0gICAgICAgICAg
ICBvcHRpb25zLnRsc19tb2R1bGUgIT0gX1RMU19CWV9QWU9QRU5TU0wpOgotICAgICAgICAgICAg
bG9nZ2luZy5jcml0aWNhbCgnWW91IGNhbiBkaXNhYmxlIFRMUyBjb21wcmVzc2lvbiBvbmx5IHdo
ZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlPcGVuU1NMIG1vZHVsZSBpcyB1
c2VkLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIG9w
dGlvbnMudGxzX21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGlj
YWwoJ1VzZSAtLXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBz
eXMuZXhpdCgxKQotCi0gICAgICAgIGlmIG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb246
Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS1kaXNhYmxlLXRscy1jb21wcmVz
c2lvbiBvbmx5IHRvZ2V0aGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGgg
LS11c2UtdGxzIG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgRGVm
YXVsdCBwb3J0IG51bWJlciBkZXBlbmRzIG9uIHdoZXRoZXIgVExTIGlzIHVzZWQuCi0gICAgaWYg
b3B0aW9ucy5zZXJ2ZXJfcG9ydCA9PSBfVU5ERUZJTkVEX1BPUlQ6Ci0gICAgICAgIGlmIG9wdGlv
bnMudXNlX3RsczoKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVG
QVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBv
cHRpb25zLnNlcnZlcl9wb3J0ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCi0KLSAg
ICAjIG9wdHBhcnNlIGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQgdmFs
dWVzLgotICAgICMgU2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgotICAgIGlmIG5vdCBvcHRpb25z
Lm1lc3NhZ2U6Ci0gICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2NzJj
JyAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQotCi0gICAgRWNob0NsaWVudChvcHRpb25zKS5ydW4o
KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fbm9leHRfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWRmNTE1MTIyNzExLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
ZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAK
LSMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0KLV9HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCi0KLQot
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICIiIlJlY2Vp
dmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUgaXMgcGFyc2VkIGludG8K
LSAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zLiBweXdlYnNvY2tldCBjcmVhdGVz
IGV4dGVuc2lvbgotICAgIHByb2Nlc3NvcnMgdXNpbmcgaXQgYmVmb3JlIGRvX2V4dHJhX2hhbmRz
aGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBpdAotICAgIGFmdGVyIHRoZSBjYWxsLgotCi0g
ICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNpb25zLCBjbGVhciB0aGUgcHJvY2Vzc29yIGxp
c3QuCi0gICAgIiIiCi0KLSAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10K
LQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgICIiIkVjaG8u
IFNhbWUgYXMgZWNob193c2gucHkuIiIiCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5l
ID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBp
cyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwg
dW5pY29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGlu
ZSwgYmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdF
OgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQotCi0KLSMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX3dzaC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvZWNob193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4NjQ2YzMyY2ViNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNo
b193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEx
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi1fR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnllJwotCi0KLWRlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICAjIFRoaXMgZXhhbXBsZSBoYW5kbGVyIGFj
Y2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5fY2hlY2tfd3NoLnB5IGZvciBob3cKLSAgICAj
IHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0ZWQgc2NyaXB0cyBiYXNlZCBvbiBvcmlnaW4g
dmFsdWUuCi0KLSAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQuCi0KLQotZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgaWYgbGluZSBpcyBO
b25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5p
Y29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwg
YmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgot
ICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmNnaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWRkZGYyMzdjZjdkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9ldmVudHNvdXJjZS5jZ2kKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIS91c3Iv
YmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIENHSSBzY3JpcHQgZ2Vu
ZXJhdGVzIHRleHQvZXZlbnQtc3RyZWFtIHR5cGUgZGF0YSBzdHJlYW0gZm9yIHRlc3RpbmcKLXRo
ZSBTZXJ2ZXItU2VudCBFdmVudHMuCi0KLUl0IHdpbGwgb25seSB3b3JrIGNvcnJlY3RseSB3aXRo
IEhUVFAgc2VydmVycyB0aGF0IGRvIG5vdCBidWZmZXIgdGhlIG91dHB1dCBvZgotQ0dJIHNjcmlw
dHMuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotCi1zeXMuc3Rkb3V0LndyaXRl
KCdDb250ZW50LXR5cGU6IHRleHQvZXZlbnQtc3RyZWFtXHJcblxyXG4nKQotCi1pZCA9IDAKLQot
d2hpbGUgVHJ1ZToKLSAgc3lzLnN0ZG91dC53cml0ZSgnZGF0YTogSGVsbG9cclxuaWQ6ICVkXHJc
blxyXG4nICUgaWQpCi0gIHN5cy5zdGRvdXQuZmx1c2goKQotCi0gIGlkID0gaWQgKyAxCi0KLSAg
dGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNTk4YTg4MDdkMWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL2V2ZW50c291cmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08
IS0tCi1Db3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0K
LVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0o
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPCEtLQotU2ltcGxlIGV4YW1wbGUgb2Yg
dGhlIFNlcnZlci1TZW50IEV2ZW50cwotaHR0cDovL2Rldi53My5vcmcvaHRtbDUvZXZlbnRzb3Vy
Y2UvCi0KLUZvciBjb21wYXJpc29uIHdpdGggdGhlIFdlYlNvY2tldCBQcm90b2NvbCAmIEFQSS4K
LQotUnVuIHRoZSBweXdlYnNvY2tldCB3aXRoIHRoZSAtLWNnaV9wYXRoIHBhcmFtZXRlci4KLS0t
PgotCi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlNlcnZlci1TZW50IEV2ZW50cyBFeGFtcGxlPC90
aXRsZT4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRTb3VyY2UgPSBudWxsOwotCi1mdW5jdGlvbiBhZGRU
b0xvZyhkYXRhKSB7Ci0gIGxvZ0JveC52YWx1ZSArPSBkYXRhICsgJ1xuJzsKLSAgbG9nQm94LnNj
cm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0gIGxvZ0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBldmVudFNvdXJjZSAgPSBuZXcgRXZl
bnRTb3VyY2UoJy9ldmVudHNvdXJjZS5jZ2knKTsKLSAgZXZlbnRTb3VyY2Uub25vcGVuID0gZnVu
Y3Rpb24oKSB7Ci0gICAgYWRkVG9Mb2coJ29ub3BlbiAocmVhZHlTdGF0ZSA9ICcgKyBldmVudFNv
dXJjZS5yZWFkeVN0YXRlICsgJyknKTsKLSAgfQotICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKGV2ZW50LmRhdGEpOwotICB9Ci0gIGV2ZW50
U291cmNlLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFkZFRvTG9nKCdvbmVycm9y
IChyZWFkeVN0YXRlID0gJyArIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgKyAnKScpOwotICB9Ci19
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLTx0ZXh0YXJlYSBp
ZD0ibG9nIiByb3dzPSIxMCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08cCBzdHls
ZT0iZm9udC1zaXplOiBzbWFsbCI+Ci0gIE1ha2Ugc3VyZSB0aGF0IHB5d2Vic29ja2V0IGlzIHJ1
biB3aXRoIC0tY2dpX3BhdGggcGFyYW1ldGVyLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2hhbmRsZXJfbWFwLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjNGMw
OWFhMDA5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9oYW5kbGVyX21hcC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHdlYnNvY2tldCBoYW5kbGVyIG1h
cCBmaWxlLCB1c2VkIGJ5IHN0YW5kYWxvbmUucHkgLW0gb3B0aW9uLgotIyBBIGxpbmUgc3RhcnRp
bmcgd2l0aCAnIycgaXMgYSBjb21tZW50IGxpbmUuCi0jIEVhY2ggbGluZSBjb25zaXN0cyBvZiAn
YWxpYXNfcmVzb3VyY2VfcGF0aCcgYW5kICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJwotIyBzZXBh
cmF0ZWQgYnkgc3BhY2VzLgotIyBBbGlhc2luZyBpcyBwcm9jZXNzZWQgZnJvbSB0aGUgdG9wIHRv
IHRoZSBib3R0b20gb2YgdGhlIGxpbmUsIGFuZAotIyAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCcg
bXVzdCBleGlzdCBiZWZvcmUgaXQgaXMgYWxpYXNlZC4KLSMgRm9yIGV4YW1wbGUsCi0jICAvIC9l
Y2hvCi0jIG1lYW5zIHRoYXQgYSByZXF1ZXN0IHRvICcvJyB3aWxsIGJlIGhhbmRsZWQgYnkgaGFu
ZGxlcnMgZm9yICcvZWNobycuCi0vIC9lY2hvCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUvaHN0c193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2hzdHNfd3NoLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlODYxOTQ2OTIxYWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL2hzdHNfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoCi0gICAgICAgICgnU3Ry
aWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAwJykpCi0KLQotZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5k
X21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9pbnRlcm5hbF9lcnJvcl93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmU1ODFiNTRhNjQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9pbnRlcm5hbF9lcnJvcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0j
IENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAot
Ci0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNz
Ci0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBt
c2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50aW9uYWwnKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlMDU3NjdhYjkzMmYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCww
IEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGV4YW1wbGUgaXMgZGVyaXZlZCBmcm9tIHRl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weS4KLQotCi1kZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC53c19vcmln
aW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6Ci0gICAgICAgIHJldHVybgotICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qud3Nfb3JpZ2luKQot
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVz
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCBy
ZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvcHl3
ZWJzb2NrZXQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1ZDEzMGE1Yzg0
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9weXdlYnNvY2tldC5jb25mCisr
KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMKLSMgU2Ft
cGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgYXBhY2hlMgotIwotTG9nTGV2ZWwgZGVidWcKLTxJ
Zk1vZHVsZSBweXRob25fbW9kdWxlPgotICBQeXRob25QYXRoICJzeXMucGF0aCtbJy9tb2RfcHl3
ZWJzb2NrZXQnXSIKLSAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3Qg
L3Zhci93d3cKLSAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gL3Zh
ci93d3cvd3MKLSAgI1B5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuYWxsb3dfZHJhZnQ3NSBP
bgotICA8TG9jYXRpb24gL3dzPgotICAgIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgbW9kX3B5
d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIKLSAgPC9Mb2NhdGlvbj4KLTwvSWZNb2R1bGU+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVhNTA4MGYxZjFhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
c3BlY2lhbF9oZWFkZXJzLmNnaQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMhL3Vz
ci9iaW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxl
IG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vu
c2VzL2JzZAotCi0iIiJDR0kgc2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRU
UCBoZWFkZXJzIG9uIHRoZSBvcmlnaW4gcGFnZS4KLQotTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRv
bid0IHdvcmsgb24gdGhlIHN0YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKLW1v
ZGUuCi0iIiIKLQotCi1wcmludCAiIiJDb250ZW50LXR5cGU6IHRleHQvaHRtbAotQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3k6IGNvbm5lY3Qtc3JjIHNlbGYKLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRs
ZT48L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotdmFyIHNvY2tldCA9IG5ldyBX
ZWJTb2NrZXQoIndzOi8vZXhhbXBsZS5jb20iKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PiIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsLmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhh
bXBsZS91dGlsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWNhZDQ5NzVlZTAu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWwuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxNzcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciBi
b3RoIG1haW4gYW5kIHdvcmtlciB0aHJlYWQpLgotCi12YXIgcmVzdWx0cyA9IHt9OwotCi1mdW5j
dGlvbiBnZXRUaW1lU3RhbXAoKSB7Ci0gIHJldHVybiBEYXRlLm5vdygpOwotfQotCi1mdW5jdGlv
biBmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQ
ZXJNZXNzYWdlSW5NcywKLSAgICBzcGVlZCwgcHJpbnRTaXplKSB7Ci0gIGlmIChwcmludFNpemUp
IHsKLSAgICByZXR1cm4gKHNpemUgLyAxMDI0KSArCi0gICAgICAgICdcdCcgKyB0aW1lUGVyTWVz
c2FnZUluTXMudG9GaXhlZCgzKSArCi0gICAgICAgIChzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMg
PT0gLTEgPwotICAgICAgICAgICAgJycgOgotICAgICAgICAgICAgJ1x0JyArIHN0ZGRldlRpbWVQ
ZXJNZXNzYWdlSW5Ncy50b0ZpeGVkKDMpKSArCi0gICAgICAgICdcdCcgKyBzcGVlZC50b0ZpeGVk
KDMpOwotICB9IGVsc2UgewotICAgIHJldHVybiBzcGVlZC50b1N0cmluZygpOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGNsZWFyQXZlcmFnZURhdGEoKSB7Ci0gIHJlc3VsdHMgPSB7fTsKLX0KLQotZnVu
Y3Rpb24gcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb1N1bW1hcnko
Ci0gICAgICAnU2l6ZVtLaUJdXHRBdmVyYWdlIHRpbWVbbXNdXHRTdGRkZXYgdGltZVttc11cdFNw
ZWVkW0tCL3NdJyk7Ci0gIGZvciAodmFyIHNpemUgaW4gcmVzdWx0cykgewotICAgIHZhciBhdmVy
YWdlVGltZVBlck1lc3NhZ2VJbk1zID0gcmVzdWx0c1tzaXplXS5zdW1fdCAvIHJlc3VsdHNbc2l6
ZV0ubjsKLSAgICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0Ioc2l6ZSwgYXZlcmFnZVRp
bWVQZXJNZXNzYWdlSW5Ncyk7Ci0gICAgLy8gQ2FsY3VsYXRlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24KLSAgICB2YXIgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zID0gTWF0aC5zcXJ0KAotICAg
ICAgICAocmVzdWx0c1tzaXplXS5zdW1fdDIgLyByZXN1bHRzW3NpemVdLm4gLQotICAgICAgICAg
ICAgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcyAqIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMp
ICoKLSAgICAgICAgcmVzdWx0c1tzaXplXS5uIC8KLSAgICAgICAgKHJlc3VsdHNbc2l6ZV0ubiAt
IDEpKTsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5KGZvcm1hdFJlc3VsdEluS2lCKAotICAgICAg
ICBzaXplLCBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1lUGVyTWVzc2FnZUlu
TXMsIHNwZWVkLAotICAgICAgICB0cnVlKSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2FsY3VsYXRl
U3BlZWRJbktCKHNpemUsIHRpbWVTcGVudEluTXMpIHsKLSAgcmV0dXJuIE1hdGgucm91bmQoc2l6
ZSAvIHRpbWVTcGVudEluTXMgKiAxMDAwKSAvIDEwMDA7Ci19Ci0KLWZ1bmN0aW9uIGNhbGN1bGF0
ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIHN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSkgewot
ICB2YXIgdGltZVNwZW50SW5NcyA9IGdldFRpbWVTdGFtcCgpIC0gc3RhcnRUaW1lSW5NczsKLSAg
dmFyIHNwZWVkID0gY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6ZSwgdGltZVNwZW50SW5Ncyk7
Ci0gIHZhciB0aW1lUGVyTWVzc2FnZUluTXMgPSB0aW1lU3BlbnRJbk1zIC8gKHRvdGFsU2l6ZSAv
IHNpemUpOwotICBpZiAoIXJlc3VsdHNbc2l6ZV0pIHsKLSAgICByZXN1bHRzW3NpemVdID0ge246
IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9OwotICB9Ci0gIGNvbmZpZy5tZWFzdXJlVmFsdWUodGlt
ZVBlck1lc3NhZ2VJbk1zKTsKLSAgcmVzdWx0c1tzaXplXS5uICsrOwotICByZXN1bHRzW3NpemVd
LnN1bV90ICs9IHRpbWVQZXJNZXNzYWdlSW5NczsKLSAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0g
dGltZVBlck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOwotICBjb25maWcuYWRkVG9M
b2coZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgdGltZVBlck1lc3NhZ2VJbk1zLCAtMSwgc3BlZWQs
Ci0gICAgICBjb25maWcucHJpbnRTaXplKSk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGxBcnJheUJ1ZmZl
cihidWZmZXIsIGMpIHsKLSAgdmFyIGk7Ci0KLSAgdmFyIHUzMkNvbnRlbnQgPSBjICogMHgwMTAx
MDEwMTsKLQotICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0ZUxlbmd0aCAv
IDQpOwotICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAsIHUzMkJsb2Nr
cyk7Ci0gIC8vIGxlbmd0aCBhdHRyaWJ1dGUgaXMgc2xvdyBvbiBDaHJvbWUuIERvbid0IHVzZSBp
dCBmb3IgbG9vcCBjb25kaXRpb24uCi0gIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkg
ewotICAgIHUzMlZpZXdbaV0gPSB1MzJDb250ZW50OwotICB9Ci0KLSAgLy8gRnJhY3Rpb24KLSAg
dmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9ja3MgKiA0OwotICB2YXIg
dThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3MgKiA0LCB1OEJsb2Nrcyk7
Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7Ci0gICAgdThWaWV3W2ldID0gYzsK
LSAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlBcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVjdGVkQ2hh
cikgewotICB2YXIgaTsKLQotICB2YXIgZXhwZWN0ZWRVMzJWYWx1ZSA9IGV4cGVjdGVkQ2hhciAq
IDB4MDEwMTAxMDE7Ci0KLSAgdmFyIHUzMkJsb2NrcyA9IE1hdGguZmxvb3IoYnVmZmVyLmJ5dGVM
ZW5ndGggLyA0KTsKLSAgdmFyIHUzMlZpZXcgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyLCAwLCB1
MzJCbG9ja3MpOwotICBmb3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kpIHsKLSAgICBpZiAo
dTMyVmlld1tpXSAhPSBleHBlY3RlZFUzMlZhbHVlKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICB9Ci0KLSAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9j
a3MgKiA0OwotICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3Mg
KiA0LCB1OEJsb2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7Ci0gICAg
aWYgKHU4Vmlld1tpXSAhPSBleHBlY3RlZENoYXIpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5QmxvYihjb25m
aWcsIGJsb2IsIGV4cGVjdGVkQ2hhciwgZG9uZUNhbGxiYWNrKSB7Ci0gIHZhciByZWFkZXIgPSBu
ZXcgRmlsZVJlYWRlcihibG9iKTsKLSAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAg
ICBjb25maWcuYWRkVG9Mb2coJ0ZpbGVSZWFkZXIgRXJyb3I6ICcgKyByZWFkZXIuZXJyb3IubWVz
c2FnZSk7Ci0gICAgZG9uZUNhbGxiYWNrKGJsb2Iuc2l6ZSwgZmFsc2UpOwotICB9Ci0gIHJlYWRl
ci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVzdWx0ID0gdmVyaWZ5QXJyYXlC
dWZmZXIocmVhZGVyLnJlc3VsdCwgZXhwZWN0ZWRDaGFyKTsKLSAgICBkb25lQ2FsbGJhY2soYmxv
Yi5zaXplLCByZXN1bHQpOwotICB9Ci0gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTsK
LX0KLQotZnVuY3Rpb24gdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywgbWVzc2FnZSwgc2l6
ZSkgewotICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIHsKLSAgICBjb25maWcuYWRk
VG9Mb2coJ0ludmFsaWQgYWNrIHR5cGU6ICcgKyB0eXBlb2YgbWVzc2FnZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0gIHZhciBwYXJzZWRBY2sgPSBwYXJzZUludChtZXNzYWdlKTsKLSAgaWYg
KGlzTmFOKHBhcnNlZEFjaykpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ludmFsaWQgYWNrIHZh
bHVlOiAnICsgbWVzc2FnZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGlmIChwYXJzZWRB
Y2sgIT0gc2l6ZSkgewotICAgIGNvbmZpZy5hZGRUb0xvZygKLSAgICAgICAgJ0V4cGVjdGVkIGFj
ayBmb3IgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgb25lIGZvciAnICsgcGFyc2VkQWNrICsK
LSAgICAgICAgJ0InKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsK
LX0KLQotZnVuY3Rpb24gY2xvbmVDb25maWcob2JqKSB7Ci0gIHZhciBuZXdPYmogPSB7fTsKLSAg
Zm9yIChrZXkgaW4gb2JqKSB7Ci0gICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsKLSAgfQotICBy
ZXR1cm4gbmV3T2JqOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX21haW4u
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWxfbWFpbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjAzZDFjMmJkYzQ2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS91dGlsX21haW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2
ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0vLyBVdGlsaXRp
ZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgot
Ci12YXIgbG9nQm94ID0gbnVsbDsKLXZhciBxdWV1ZWRMb2cgPSAnJzsKLQotdmFyIHN1bW1hcnlC
b3ggPSBudWxsOwotCi1mdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKLSAgcXVldWVkTG9nICs9IGxv
ZyArICdcbic7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRvTG9nKGxvZykgewotICBsb2dCb3gudmFsdWUg
Kz0gcXVldWVkTG9nOwotICBxdWV1ZWRMb2cgPSAnJzsKLSAgbG9nQm94LnZhbHVlICs9IGxvZyAr
ICdcbic7Ci0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBhZGRU
b1N1bW1hcnkobG9nKSB7Ci0gIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKLSAgc3Vt
bWFyeUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi0vLyB2YWx1ZTogZXhlY3V0aW9uIHRp
bWUgaW4gbWlsbGlzZWNvbmRzLgotLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0
byBiZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgotLy8gRG8gbm90aGluZyBoZXJlIGluIG5v
bi1QZXJmb3JtYW5jZVRlc3QuCi1mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKLX0KLQot
ZnVuY3Rpb24gZ2V0SW50RnJvbUlucHV0KGlkKSB7Ci0gIHJldHVybiBwYXJzZUludChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWUpOwotfQotCi1mdW5jdGlvbiBnZXRTdHJpbmdGcm9t
UmFkaW9Cb3gobmFtZSkgewotICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
ZW5jaG1hcmtfZm9ybScpW25hbWVdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3Ro
OyArK2kpCi0gICAgaWYgKGxpc3QuaXRlbShpKS5jaGVja2VkKQotICAgICAgcmV0dXJuIGxpc3Qu
aXRlbShpKS52YWx1ZTsKLSAgcmV0dXJuIHVuZGVmaW5lZDsKLX0KLWZ1bmN0aW9uIGdldEJvb2xG
cm9tQ2hlY2tCb3goaWQpIHsKLSAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5j
aGVja2VkOwotfQotCi1mdW5jdGlvbiBnZXRJbnRBcnJheUZyb21JbnB1dChpZCkgewotICB2YXIg
c3RyQXJyYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWUuc3BsaXQoJywnKTsK
LSAgcmV0dXJuIHN0ckFycmF5Lm1hcChmdW5jdGlvbihzdHIpIHsgcmV0dXJuIHBhcnNlSW50KHN0
ciwgMTApOyB9KTsKLX0KLQotZnVuY3Rpb24gb25NZXNzYWdlKG1lc3NhZ2UpIHsKLSAgaWYgKG1l
c3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9Mb2cnKQotICAgIGFkZFRvTG9nKG1lc3NhZ2UuZGF0
YS5kYXRhKTsKLSAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdhZGRUb1N1bW1hcnkn
KQotICAgIGFkZFRvU3VtbWFyeShtZXNzYWdlLmRhdGEuZGF0YSk7Ci0gIGVsc2UgaWYgKG1lc3Nh
Z2UuZGF0YS50eXBlID09PSAnbWVhc3VyZVZhbHVlJykKLSAgICBtZWFzdXJlVmFsdWUobWVzc2Fn
ZS5kYXRhLmRhdGEpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtl
ci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI2NGY3ODI5ZDUyZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvdXRpbF93b3JrZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBz
Oi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0vLyBV
dGlsaXRpZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIHdvcmtlciB0aHJlYWRz
IG9ubHkpLgotCi1mdW5jdGlvbiB3b3JrZXJBZGRUb0xvZyh0ZXh0KSB7Ci0gIHBvc3RNZXNzYWdl
KHt0eXBlOiAnYWRkVG9Mb2cnLCBkYXRhOiB0ZXh0fSk7Ci19Ci0KLWZ1bmN0aW9uIHdvcmtlckFk
ZFRvU3VtbWFyeSh0ZXh0KSB7Ci0gIHBvc3RNZXNzYWdlKHt0eXBlOiAnYWRkVG9TdW1tYXJ5Jywg
ZGF0YTogdGV4dH0pOwotfQotCi1mdW5jdGlvbiB3b3JrZXJNZWFzdXJlVmFsdWUodmFsdWUpIHsK
LSAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMWY3
OTliYzQxYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Fib3J0X3dzaC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2JlbmNoX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2ht
YXJrX2hlbHBlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Nsb3NlX3dzaC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvY29uc29sZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb29raWVfd3NoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNo
b19ub2V4dF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fd3NoLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
ZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
aHN0c193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvcHl3
ZWJzb2NrZXQuY29uZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvdXRpbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbF9tYWluLmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2Jl
bmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpzCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUveGhyX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJr
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NjIyOTc3NWY1YS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNobWFyay5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMjIyICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5j
LgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6
Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmli
dXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1E
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgot
Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPlhNTEh0dHBSZXF1ZXN0IGJlbmNobWFyazwvdGl0bGU+
Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1dGls
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ4aHJfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci12YXIgYWRkcmVzc0JveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGdldENvbmZpZygp
IHsKLSAgcmV0dXJuIHsKLSAgICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFsdWUsCi0gICAgcHJp
bnRTaXplOiBnZXRCb29sRnJvbUNoZWNrQm94KCdwcmludHNpemUnKSwKLSAgICBudW1YSFJzOiBn
ZXRJbnRGcm9tSW5wdXQoJ251bVhIUnMnKSwKLSAgICBhc3luYzogZ2V0Qm9vbEZyb21DaGVja0Jv
eCgnYXN5bmMnKSwKLSAgICAvLyBJbml0aWFsIHNpemUgb2YgbWVzc2FnZXMuCi0gICAgbnVtSXRl
cmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW1pdGVyYXRpb25zJyksCi0gICAgbnVtV2FybVVw
SXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW13YXJtdXBpdGVyYXRpb25zJyksCi0gICAg
c3RhcnRTaXplOiBnZXRJbnRGcm9tSW5wdXQoJ3N0YXJ0c2l6ZScpLAotICAgIC8vIFN0b3BzIGJl
bmNobWFyayB3aGVuIHRoZSBzaXplIG9mIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4K
LSAgICBzdG9wVGhyZXNob2xkOiBnZXRJbnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hvbGQnKSwKLSAg
ICAvLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIG1lc3NhZ2UgaXMgc21hbGwsIHNlbmQvcmVjZWl2ZSBt
dWx0aXBsZSBtZXNzYWdlcwotICAgIC8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hlcyB0
aGlzIHRocmVzaG9sZC4KLSAgICAvLyBtaW5Ub3RhbDogZ2V0SW50RnJvbUlucHV0KCdtaW50b3Rh
bCcpLAotICAgIC8vIG1pblRvdGFsIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gWEhSIGJlbmNo
bWFyawotICAgIG11bHRpcGxpZXJzOiBnZXRJbnRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGllcnMn
KSwKLSAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJykKLSAg
fTsKLX0KLQotdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3hocl9iZW5jaG1hcmsuanMnKTsKLXdv
cmtlci5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2U7Ci0KLWZ1bmN0aW9uIG9uU2VuZEJlbmNobWFyaygp
IHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotICBjb25maWcuZGF0YVR5cGUgPSBnZXRT
dHJpbmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBlcmFkaW8nKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21D
aGVja0JveCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdzZW5k
QmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRk
VG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5
OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgc2VuZEJlbmNo
bWFyayhjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uUmVjZWl2ZUJlbmNobWFyaygpIHsK
LSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotICBjb25maWcuZGF0YVR5cGUgPSBnZXRTdHJp
bmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBlcmFkaW8nKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVj
a0JveCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdyZWNlaXZl
QmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRk
VG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5
OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgcmVjZWl2ZUJl
bmNobWFyayhjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7
Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0Jv
eCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdiYXRjaEJlbmNo
bWFyaycsIGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9n
ID0gYWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAg
ICBjb25maWcubWVhc3VyZVZhbHVlID0gbWVhc3VyZVZhbHVlOwotICAgIGJhdGNoQmVuY2htYXJr
KGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25TdG9wKCkgewotICB2YXIgY29uZmlnID0g
Z2V0Q29uZmlnKCk7Ci0KLSAgaWYgKGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpKSB7Ci0g
ICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAnc3RvcCcsIGNvbmZpZzogY29uZmlnfSk7Ci0g
IH0gZWxzZSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nID0gYWRkVG9Mb2c7Ci0gICAgY29uZmlnLmFk
ZFRvU3VtbWFyeSA9IGFkZFRvU3VtbWFyeTsKLSAgICBjb25maWcubWVhc3VyZVZhbHVlID0gbWVh
c3VyZVZhbHVlOwotICAgIHN0b3AoY29uZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBpbml0KCkg
ewotICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKLSAg
bG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwotCi0gIHN1bW1hcnlCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOwotCi0gIC8vIFNwZWNpYWwgYWRk
cmVzcyBvZiBweXdlYnNvY2tldCBmb3IgWEhSIGJlbmNobWFyay4KLSAgYWRkcmVzc0JveC52YWx1
ZSA9ICcvMDczYmUwMDFlMTA5NTA2OTJjY2JmM2EyYWQyMWMyNDUnOwotCi0gIGFkZFRvTG9nKHdp
bmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1bW1hcnko
d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci19Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLQotPGZvcm0gaWQ9ImJlbmNobWFya19m
b3JtIj4KLSAgdXJsIHByZWZpeCA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9
IjQwIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InNlbmQiIG9uY2xpY2s9Im9uU2Vu
ZEJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InJlY2VpdmUiIG9u
Y2xpY2s9Im9uUmVjZWl2ZUJlbmNobWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFs
dWU9ImJhdGNoIiBvbmNsaWNrPSJvbkJhdGNoQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0i
YnV0dG9uIiB2YWx1ZT0ic3RvcCIgb25jbGljaz0ib25TdG9wKCkiPgotCi0gIDxici8+Ci0KLSAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJpbnRzaXplIiBjaGVja2VkPgotICA8bGFiZWwg
Zm9yPSJwcmludHNpemUiPlByaW50IHNpemUgYW5kIHRpbWUgcGVyIG1lc3NhZ2U8L2xhYmVsPgot
ICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ2ZXJpZnlkYXRhIiBjaGVja2VkPgotICA8bGFi
ZWwgZm9yPSJ2ZXJpZnlkYXRhIj5WZXJpZnkgZGF0YTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJj
aGVja2JveCIgaWQ9IndvcmtlciI+Ci0gIDxsYWJlbCBmb3I9IndvcmtlciI+UnVuIG9uIHdvcmtl
cjwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgot
ICA8bGFiZWwgZm9yPSJhc3luYyI+QXN5bmM8L2xhYmVsPjxicj4KLSAgKFJlY2VpdmUgJmFtcDsm
YW1wOyBOb24tV29ya2VyICZhbXA7JmFtcDsgU3luYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNwZWMp
Ci0KLSAgPGJyLz4KLQotICBQYXJhbWV0ZXJzOgotCi0gIDxici8+Ci0KLSAgPHRhYmxlPgotICAg
IDx0cj4KLSAgICAgIDx0ZD5OdW0gWEhSczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRl
eHQiIGlkPSJudW1YSFJzIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAg
ICAgIDx0ZD5OdW1iZXIgb2YgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9
InRleHQiIGlkPSJudW1pdGVyYXRpb25zIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAg
IDx0cj4KLSAgICAgIDx0ZD5OdW1iZXIgb2Ygd2FybS11cCBpdGVyYXRpb25zPC90ZD4KLSAgICAg
IDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bXdhcm11cGl0ZXJhdGlvbnMiIHZhbHVlPSIw
Ij48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0YXJ0IHNpemU8L3RkPgot
ICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnRzaXplIiB2YWx1ZT0iMTAyNDAi
PjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RvcCB0aHJlc2hvbGQ8L3Rk
PgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RvcHRocmVzaG9sZCIgdmFsdWU9
IjEwMjQwMDAwMCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5NaW5pbXVt
IHRvdGFsPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1pbnRvdGFsIiB2
YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11
bHRpcGxpZXJzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxp
ZXJzIiB2YWx1ZT0iNSwgMiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotCi0gIFNldCBk
YXRhIHR5cGUKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVy
YWRpbyIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvdGV4dCIKLSAgICAgICAgIHZhbHVlPSJ0
ZXh0IgotICAgICAgICAgY2hlY2tlZD48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvdGV4dCI+dGV4
dDwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBl
cmFkaW8iCi0gICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb2Jsb2IiCi0gICAgICAgICB2YWx1ZT0i
YmxvYiIKLSAgICAgICAgID48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvYmxvYiI+YmxvYjwvbGFi
ZWw+Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8i
Ci0gICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVyIgotICAgICAgICAgdmFsdWU9
ImFycmF5YnVmZmVyIgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9hcnJheWJ1
ZmZlciI+YXJyYXlidWZmZXI8L2xhYmVsPgotPC9mb3JtPgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4K
LSAgPHRleHRhcmVhCi0gICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAl
IiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJzdW1tYXJ5X2RpdiI+Ci0g
IFN1bW1hcnkKLSAgPHRleHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIgcm93cz0iMjAiIHN0eWxl
PSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2PgotCi1Ob3RlOiBFZmZl
Y3Qgb2YgUlRUIGFuZCB0aW1lIHNwZW50IGZvciBBcnJheUJ1ZmZlciBjcmVhdGlvbiBpbiByZWNl
aXZlIGJlbmNobWFya3MgYXJlIG5vdCBlbGltaW5hdGVkLgotCi08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3hocl9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL3hocl9iZW5jaG1hcmsuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIz
M2M3Y2IzOGM0OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNo
bWFyay5qcworKysgL2Rldi9udWxsCkBAIC0xLDM4OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAx
NCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2ZWxvcGVy
cy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi12YXIgaXNXb3JrZXIgPSB0
eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gInVuZGVmaW5lZCI7Ci0KLWlmIChpc1dvcmtlcikgewot
ICAvLyBSdW5uaW5nIG9uIGEgd29ya2VyCi0gIGltcG9ydFNjcmlwdHMoJ3V0aWwuanMnLCAndXRp
bF93b3JrZXIuanMnKTsKLX0KLQotLy8gTmFtZXNwYWNlIGZvciBob2xkaW5nIGdsb2JhbHMuCi12
YXIgYmVuY2htYXJrID0ge307Ci1iZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IDA7Ci0KLXZhciB4
aHJzID0gW107Ci0KLXZhciB0aW1lcklEID0gbnVsbDsKLQotZnVuY3Rpb24gZGVzdHJveUFsbFhI
UnMoKSB7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgeGhycy5sZW5ndGg7ICsraSkgewotICAgIHho
cnNbaV0ub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDsKLSAgICAvLyBBYm9ydCBYSFJzIGlmIHRo
ZXkgYXJlIG5vdCB5ZXQgRE9ORSBzdGF0ZS4KLSAgICAvLyBDYWxsaW5nIGFib3J0KCkgaGVyZSAo
aS5lLiBpbiBvbnJlYWR5c3RhdGVjaGFuZ2UgaGFuZGxlcikgCi0gICAgLy8gY2F1c2VzICJOZXR3
b3JrRXJyb3IiIG1lc3NhZ2VzIGluIERldlRvb2xzIGluIHN5bmMgbW9kZSwKLSAgICAvLyBldmVu
IGlmIGl0IGlzIGFmdGVyIHRyYW5zaXRpb24gdG8gRE9ORSBzdGF0ZS4KLSAgICBpZiAoeGhyc1tp
XS5yZWFkeVN0YXRlICE9IFhNTEh0dHBSZXF1ZXN0LkRPTkUpCi0gICAgICB4aHJzW2ldLmFib3J0
KCk7Ci0gIH0KLSAgeGhycyA9IFtdOwotICAvLyBnYygpIG1pZ2h0IGJlIG5lZWRlZCBmb3IgQ2hy
b21lL0Jsb2IKLX0KLQotZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0ciwgY291bnQpIHsKLSAgdmFy
IGRhdGEgPSAnJzsKLSAgdmFyIGV4cENodW5rID0gc3RyOwotICB2YXIgcmVtYWluID0gY291bnQ7
Ci0gIHdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKHJlbWFpbiAlIDIpIHsKLSAgICAgIGRhdGEgKz0g
ZXhwQ2h1bms7Ci0gICAgICByZW1haW4gPSAocmVtYWluIC0gMSkgLyAyOwotICAgIH0gZWxzZSB7
Ci0gICAgICByZW1haW4gLz0gMjsKLSAgICB9Ci0KLSAgICBpZiAocmVtYWluID09IDApCi0gICAg
ICBicmVhazsKLQotICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBleHBDaHVuazsKLSAgfQotICBy
ZXR1cm4gZGF0YTsKLX0KLQotZnVuY3Rpb24gc2VuZEJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmln
KSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVs
bDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZh
ciBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh0aGlz
LnJlYWR5U3RhdGUgIT0gdGhpcy5ET05FKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKHRoaXMuc3RhdHVzICE9IDIwMCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdGYWlsZWQg
KHN0YXR1cz0nICsgdGhpcy5zdGF0dXMgKyAnKScpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY29uZmlnLnZlcmlmeURhdGEgJiYKLSAg
ICAgICAgIXZlcmlmeUFja25vd2xlZGdlbWVudChjb25maWcsIHRoaXMucmVzcG9uc2UsIHNpemUp
KSB7Ci0gICAgICBkZXN0cm95QWxsWEhScygpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6
ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChiZW5jaG1hcmsuc3RhcnRUaW1l
SW5NcyA9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ3N0YXJ0VGltZUluTXMgbm90
IHNldCcpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcywgdG90YWxTaXplKTsKLQotICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0KLSAgICBydW5O
ZXh0VGFzayhjb25maWcpOwotICB9OwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLm51
bVhIUnM7ICsraSkgewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4
aHIub25yZWFkeXN0YXRlY2hhbmdlID0gb25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxlcjsKLSAgICB4
aHJzLnB1c2goeGhyKTsKLSAgfQotCi0gIHZhciBkYXRhQXJyYXkgPSBbXTsKLQotICBmb3IgKHZh
ciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgZGF0YSA9IG51bGw7Ci0g
ICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAnYXJyYXlidWZmZXInIHx8Ci0gICAgICAgIGNvbmZp
Zy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2l6
ZSk7Ci0KLSAgICAgIGZpbGxBcnJheUJ1ZmZlcihkYXRhLCAweDYxKTsKLQotICAgICAgaWYgKGNv
bmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgICAgZGF0YSA9IG5ldyBCbG9iKFtkYXRh
XSk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRhdGEgPSByZXBlYXRTdHJpbmcoJ2En
LCBzaXplKTsKLSAgICB9Ci0KLSAgICBkYXRhQXJyYXkucHVzaChkYXRhKTsKLSAgfQotCi0KLSAg
YmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsKLSAgdG90YWxTaXplID0g
c2l6ZSAqIHhocnMubGVuZ3RoOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwgeGhycy5sZW5ndGg7
ICsraSkgewotICAgIHZhciBkYXRhID0gZGF0YUFycmF5W2ldOwotICAgIHZhciB4aHIgPSB4aHJz
W2ldOwotICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfc2VuZCcsIGNv
bmZpZy5hc3luYyk7Ci0gICAgeGhyLnNlbmQoZGF0YSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcmVj
ZWl2ZUJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0g
IGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVsbDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0g
IHZhciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZhciBjaGVja1Jlc3VsdEFuZENvbnRpbnVlID0g
ZnVuY3Rpb24gKGJ5dGVzUmVjZWl2ZWQsIHZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgIGlmICgh
dmVyaWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZl
cmlmaWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7Ci0KLSAgICBp
ZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGJlbmNobWFyay5zdGFydFRpbWVJbk1zID09IG51bGwpIHsKLSAgICAgIGNvbmZpZy5h
ZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0Jyk7Ci0gICAgICBkZXN0cm95QWxsWEhScygp
OwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25m
aWcsIHNpemUsIGJlbmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUpOwotCi0gICAgZGVz
dHJveUFsbFhIUnMoKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0KLQotICB2YXIg
b25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKLSAgICBpZiAodGhpcy5y
ZWFkeVN0YXRlICE9IHRoaXMuRE9ORSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICh0aGlzLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygnRmFpbGVkIChz
dGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0g
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGJ5dGVzUmVjZWl2ZWQgPSAtMTsKLSAgICBp
ZiAodGhpcy5yZXNwb25zZVR5cGUgPT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgYnl0ZXNSZWNl
aXZlZCA9IHRoaXMucmVzcG9uc2UuYnl0ZUxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVz
cG9uc2VUeXBlID09ICdibG9iJykgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9u
c2Uuc2l6ZTsKLSAgICB9IGVsc2UgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9u
c2UubGVuZ3RoOwotICAgIH0KLSAgICBpZiAoYnl0ZXNSZWNlaXZlZCAhPSBzaXplKSB7Ci0gICAg
ICBjb25maWcuYWRkVG9Mb2coJ0V4cGVjdGVkICcgKyBzaXplICsKLSAgICAgICAgICAnQiBidXQg
cmVjZWl2ZWQgJyArIGJ5dGVzUmVjZWl2ZWQgKyAnQicpOwotICAgICAgZGVzdHJveUFsbFhIUnMo
KTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy5yZXNwb25zZVR5cGUgPT0g
J2FycmF5YnVmZmVyJykgewotICAgICAgY2hlY2tSZXN1bHRBbmRDb250aW51ZShieXRlc1JlY2Vp
dmVkLAotICAgICAgICAgICFjb25maWcudmVyaWZ5RGF0YSB8fCB2ZXJpZnlBcnJheUJ1ZmZlcih0
aGlzLnJlc3BvbnNlLCAweDYxKSk7Ci0gICAgfSBlbHNlIGlmICh0aGlzLnJlc3BvbnNlVHlwZSA9
PSAnYmxvYicpIHsKLSAgICAgIGlmIChjb25maWcudmVyaWZ5RGF0YSkKLSAgICAgICAgdmVyaWZ5
QmxvYihjb25maWcsIHRoaXMucmVzcG9uc2UsIDB4NjEsIGNoZWNrUmVzdWx0QW5kQ29udGludWUp
OwotICAgICAgZWxzZQotICAgICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKGJ5dGVzUmVjZWl2
ZWQsIHRydWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKAot
ICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQsCi0gICAgICAgICAgIWNvbmZpZy52ZXJpZnlEYXRhIHx8
Ci0gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2UgPT0gcmVwZWF0U3RyaW5nKCdhJywgdGhpcy5y
ZXNwb25zZS5sZW5ndGgpKTsKLSAgICB9Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b25maWcubnVtWEhSczsgKytpKSB7Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OwotICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVy
OwotICAgIHhocnMucHVzaCh4aHIpOwotICB9Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PSBnZXRUaW1lU3RhbXAoKTsKLSAgdG90YWxTaXplID0gc2l6ZSAqIHhocnMubGVuZ3RoOwotCi0g
IGZvciAodmFyIGkgPSAwOyBpIDwgeGhycy5sZW5ndGg7ICsraSkgewotICAgIHZhciB4aHIgPSB4
aHJzW2ldOwotICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2
ZScsIGNvbmZpZy5hc3luYyk7Ci0gICAgeGhyLnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlw
ZTsKLSAgICB4aHIuc2VuZChzaXplICsgJyBub25lJyk7Ci0gIH0KLX0KLQotCi1mdW5jdGlvbiBn
ZXRDb25maWdTdHJpbmcoY29uZmlnKSB7Ci0gIHJldHVybiAnKCcgKyBjb25maWcuZGF0YVR5cGUg
KwotICAgICcsIHZlcmlmeURhdGE9JyArIGNvbmZpZy52ZXJpZnlEYXRhICsKLSAgICAnLCAnICsg
KGlzV29ya2VyID8gJ1dvcmtlcicgOiAnTWFpbicpICsKLSAgICAnLCAnICsgKGNvbmZpZy5hc3lu
YyA/ICdBc3luYycgOiAnU3luYycpICsKLSAgICAnLCBudW1YSFJzPScgKyBjb25maWcubnVtWEhS
cyArCi0gICAgJywgbnVtSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bUl0ZXJhdGlvbnMgKwotICAg
ICcsIG51bVdhcm1VcEl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsK
LSAgICAnKSc7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0QmVuY2htYXJrKGNvbmZpZykgewotICBjbGVh
clRpbWVvdXQodGltZXJJRCk7Ci0gIGRlc3Ryb3lBbGxYSFJzKCk7Ci0KLSAgcnVuTmV4dFRhc2so
Y29uZmlnKTsKLX0KLQotLy8gVE9ETyhoaXJvc2hpZ2UpOiB0aGUgZm9sbG93aW5nIGNvZGUgaXMg
dGhlIHNhbWUgYXMgYmVuY2htYXJrLmh0bWwKLS8vIGFuZCBzb21lIG9mIHRoZW0gc2hvdWxkIGJl
IG1lcmdlZCBpbnRvIGUuZy4gdXRpbC5qcwotCi12YXIgdGFza3MgPSBbXTsKLQotZnVuY3Rpb24g
cnVuTmV4dFRhc2soY29uZmlnKSB7Ci0gIHZhciB0YXNrID0gdGFza3Muc2hpZnQoKTsKLSAgaWYg
KHRhc2sgPT0gdW5kZWZpbmVkKSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdGaW5pc2hlZCcpOwot
ICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHRpbWVySUQgPSBzZXRU
aW1lb3V0KHRhc2ssIDApOwotfQotCi1mdW5jdGlvbiBidWlsZExlZ2VuZFN0cmluZyhjb25maWcp
IHsKLSAgdmFyIGxlZ2VuZCA9ICcnCi0gIGlmIChjb25maWcucHJpbnRTaXplKQotICAgIGxlZ2Vu
ZCA9ICdNZXNzYWdlIHNpemUgaW4gS2lCLCBUaW1lL21lc3NhZ2UgaW4gbXMsICc7Ci0gIGxlZ2Vu
ZCArPSAnU3BlZWQgaW4ga0Ivcyc7Ci0gIHJldHVybiBsZWdlbmQ7Ci19Ci0KLWZ1bmN0aW9uIGFk
ZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmMpIHsKLSAgZm9yICh2YXIgaSA9IDA7Ci0gICAgICBpIDwg
Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKyBjb25maWcubnVtSXRlcmF0aW9uczsgKytpKSB7
Ci0gICAgLy8gSWdub3JlIHRoZSBmaXJzdCB8Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnN8IGl0
ZXJhdGlvbnMuCi0gICAgaWYgKGkgPT0gY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpCi0gICAg
ICBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmlnKTsKLQotICAgIHZhciBtdWx0aXBsaWVySW5k
ZXggPSAwOwotICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwotICAgICAgICAg
c2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKLSAgICAgICAgICsrbXVsdGlwbGllckluZGV4
KSB7Ci0gICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCi0gICAgICAgICAgbnVsbCwKLSAg
ICAgICAgICBzaXplLAotICAgICAgICAgIGNvbmZpZyk7Ci0gICAgICB0YXNrcy5wdXNoKHRhc2sp
OwotICAgICAgc2l6ZSAqPSBjb25maWcubXVsdGlwbGllcnNbCi0gICAgICAgICAgbXVsdGlwbGll
ckluZGV4ICUgY29uZmlnLm11bHRpcGxpZXJzLmxlbmd0aF07Ci0gICAgfQotICB9Ci19Ci0KLWZ1
bmN0aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgewotICB0YXNrcy5w
dXNoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAgICAgIGNvbmZpZy5hZGRU
b1N1bW1hcnkodGl0bGUpOwotICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKLSAgICAg
IGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0pOwot
fQotCi1mdW5jdGlvbiBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmlnKSB7Ci0gIHRhc2tzLnB1
c2goZnVuY3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxsOwotICAgICAgY2xlYXJBdmVyYWdl
RGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfSk7Ci19Ci0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmsoY29u
ZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb0xvZygnU2VuZCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFk
ZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNs
ZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3MoY29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7
Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdl
dENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQot
ZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdS
ZWNlaXZlIGJlbmNobWFyaycpOwotICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmco
Y29uZmlnKSk7Ci0KLSAgdGFza3MgPSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRU
YXNrcyhjb25maWcsIHJlY2VpdmVCZW5jaG1hcmtTdGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5n
VGFzayhjb25maWcsCi0gICAgICAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmlu
Zyhjb25maWcpKTsKLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gYmF0
Y2hCZW5jaG1hcmsob3JpZ2luYWxDb25maWcpIHsKLSAgb3JpZ2luYWxDb25maWcuYWRkVG9Mb2co
J0JhdGNoIGJlbmNobWFyaycpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEo
KTsKLQotICB2YXIgZGF0YVR5cGVzID0gWyd0ZXh0JywgJ2Jsb2InLCAnYXJyYXlidWZmZXInXTsK
LSAgdmFyIHN0ZXBGdW5jcyA9IFtzZW5kQmVuY2htYXJrU3RlcCwgcmVjZWl2ZUJlbmNobWFya1N0
ZXBdOwotICB2YXIgbmFtZXMgPSBbJ1NlbmQnLCAnUmVjZWl2ZSddOwotICB2YXIgYXN5bmMgPSBb
dHJ1ZSwgZmFsc2VdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ZXBGdW5jcy5sZW5ndGg7ICsr
aSkgewotICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGF0YVR5cGVzLmxlbmd0aDsgKytqKSB7Ci0g
ICAgICBmb3IgKHZhciBrID0gMDsgayA8IGFzeW5jLmxlbmd0aDsgKytrKSB7Ci0gICAgICAgIHZh
ciBjb25maWcgPSBjbG9uZUNvbmZpZyhvcmlnaW5hbENvbmZpZyk7Ci0gICAgICAgIGNvbmZpZy5k
YXRhVHlwZSA9IGRhdGFUeXBlc1tqXTsKLSAgICAgICAgY29uZmlnLmFzeW5jID0gYXN5bmNba107
Ci0KLSAgICAgICAgLy8gUmVjZWl2ZSAmJiBOb24tV29ya2VyICYmIFN5bmMgaXMgbm90IHN1cHBv
cnRlZCBieSB0aGUgc3BlYwotICAgICAgICBpZiAoc3RlcEZ1bmNzW2ldID09PSByZWNlaXZlQmVu
Y2htYXJrU3RlcCAmJiAhaXNXb3JrZXIgJiYKLSAgICAgICAgICAgICFjb25maWcuYXN5bmMpCi0g
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYWRkVGFza3MoY29uZmlnLCBzdGVwRnVuY3Nb
aV0pOwotICAgICAgICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywKLSAgICAgICAgICAg
IG5hbWVzW2ldICsgJyBiZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICBzdGFydEJlbmNobWFyayhjb25maWcpOwotfQotCi0KLWZ1
bmN0aW9uIHN0b3AoY29uZmlnKSB7Ci0gIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gIGNsZWFyVGltZW91
dCh0aW1lcklEKTsKLSAgdGltZXJJRCA9IG51bGw7Ci0gIGNvbmZpZy5hZGRUb0xvZygnU3RvcHBl
ZCcpOwotfQotCi1vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgewotICB2YXIgY29uZmln
ID0gbWVzc2FnZS5kYXRhLmNvbmZpZzsKLSAgY29uZmlnLmFkZFRvTG9nID0gd29ya2VyQWRkVG9M
b2c7Ci0gIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSB3b3JrZXJBZGRUb1N1bW1hcnk7Ci0gIGNvbmZp
Zy5tZWFzdXJlVmFsdWUgPSB3b3JrZXJNZWFzdXJlVmFsdWU7Ci0gIGlmIChtZXNzYWdlLmRhdGEu
dHlwZSA9PT0gJ3NlbmRCZW5jaG1hcmsnKQotICAgIHNlbmRCZW5jaG1hcmsoY29uZmlnKTsKLSAg
ZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdyZWNlaXZlQmVuY2htYXJrJykKLSAgICBy
ZWNlaXZlQmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09
PSAnYmF0Y2hCZW5jaG1hcmsnKQotICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2Ug
aWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnc3RvcCcpCi0gICAgc3RvcChjb25maWcpOwotfTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY5ODM1NTNiOGFjOC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAK
LTwhLS0KLUNvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi1saWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLWh0dHBzOi8v
ZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotLS0+Ci0KLTxo
dG1sPgotPGhlYWQ+Ci08dGl0bGU+WEhSIGV2ZW50IGxvZ2dlcjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRzID0gW107Ci0K
LWZ1bmN0aW9uIHJ1bigpIHsKLSAgZXZlbnRzID0gW107Ci0KLSAgZnVuY3Rpb24gcHVzaFRvTG9n
KHR5cGUpIHsKLSAgICBpZiAoZXZlbnRzLmxlbmd0aCAhPSAwICYmIHR5cGUgPT09IGV2ZW50c1tl
dmVudHMubGVuZ3RoIC0gMV0udHlwZSkgewotICAgICAgZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAx
XS5jb3VudCArPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICBldmVudHMucHVzaCh7dHlwZTogdHlw
ZSwgY291bnQ6IDF9KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Ci0KLSAgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NFdmVudER1bXAoZSkgewotICAgIHJldHVy
biAnKCcgKyBlLmxlbmd0aENvbXB1dGFibGUgKyAnLCAnICsgZS5sb2FkZWQgKyAnLCAnICsgZS50
b3RhbCArICcpJzsKLSAgfQotCi0gIHZhciBkdW1wUHJvZ3Jlc3NFdmVudCA9IGdldEJvb2xGcm9t
Q2hlY2tCb3goJ2R1bXBwcm9ncmVzc2V2ZW50Jyk7Ci0KLSAgZnVuY3Rpb24gbG9nKGUpIHsKLSAg
ICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAodHlwZSA9PT0gJ3JlYWR5c3RhdGVjaGFuZ2Un
KSB7Ci0gICAgICB0eXBlICs9IGUudGFyZ2V0LnJlYWR5U3RhdGU7Ci0gICAgfQotICAgIGlmIChk
dW1wUHJvZ3Jlc3NFdmVudCAmJiAoZSBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7Ci0gICAg
ICB0eXBlICs9IGdldFByb2dyZXNzRXZlbnREdW1wKGUpOwotICAgIH0KLSAgICBwdXNoVG9Mb2co
dHlwZSk7Ci0gIH07Ci0KLSAgZnVuY3Rpb24gbG9nVXBsb2FkKGUpIHsKLSAgICB2YXIgdHlwZSA9
IGUudHlwZTsKLSAgICBpZiAoZHVtcFByb2dyZXNzRXZlbnQgJiYgKGUgaW5zdGFuY2VvZiBQcm9n
cmVzc0V2ZW50KSkgewotICAgICAgdHlwZSArPSBnZXRQcm9ncmVzc0V2ZW50RHVtcChlKTsKLSAg
ICB9Ci0gICAgcHVzaFRvTG9nKCd1cGxvYWQnICsgdHlwZSk7Ci0gIH0KLQotICBpZiAoZ2V0Qm9v
bEZyb21DaGVja0JveCgndXBsb2FkJykpIHsKLSAgICB2YXIgdXBsb2FkID0geGhyLnVwbG9hZDsK
LSAgICB1cGxvYWQub25sb2Fkc3RhcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ucHJvZ3Jl
c3MgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uYWJvcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBs
b2FkLm9uZXJyb3IgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ubG9hZCA9IGxvZ1VwbG9hZDsK
LSAgICB1cGxvYWQub250aW1lb3V0ID0gbG9nVXBsb2FkOwotICAgIHVwbG9hZC5vbmxvYWRlbmQg
PSBsb2dVcGxvYWQ7Ci0gIH0KLQotICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbG9nOwotICB4
aHIub25sb2Fkc3RhcnQgPSBsb2c7Ci0gIHhoci5vbnByb2dyZXNzID0gbG9nOwotICB4aHIub25h
Ym9ydCA9IGxvZzsKLSAgeGhyLm9uZXJyb3IgPSBsb2c7Ci0gIHhoci5vbmxvYWQgPSBsb2c7Ci0g
IHhoci5vbnRpbWVvdXQgPSBsb2c7Ci0gIHhoci5vbmxvYWRlbmQgPSBsb2c7Ci0KLSAgeGhyLm9w
ZW4oJ1BPU1QnLCAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1X3JlY2VpdmUnLAot
ICAgICAgICAgICBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycpKTsKLSAgdmFyIHNpemUgPSBn
ZXRJbnRGcm9tSW5wdXQoJ3NpemUnKTsKLSAgdmFyIGNodW5rZWRNb2RlID0gJ25vbmUnOwotICBp
ZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnY2h1bmtlZHJlc3BvbnNlJykpIHsKLSAgICBjaHVua2Vk
TW9kZSA9ICdjaHVua2VkJzsKLSAgfQotICB4aHIuc2VuZChzaXplICsgJyAnICsgY2h1bmtlZE1v
ZGUpOwotfQotCi1mdW5jdGlvbiBwcmludCgpIHsKLSAgdmFyIHJlc3VsdCA9ICcnOwotICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBldmVudCA9IGV2
ZW50c1tpXTsKLSAgICByZXN1bHQgKz0gZXZlbnQudHlwZSArICcgKiAnICsgZXZlbnQuY291bnQg
KyAnXG4nOwotICB9Ci0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS52YWx1ZSA9IHJl
c3VsdDsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT4KLSAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9
IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLSAgPGJyLz4KLSAgU2l6ZTogPGlu
cHV0IHR5cGU9InRleHQiIGlkPSJzaXplIiB2YWx1ZT0iNjU1MzYiPjxici8+Ci0gIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9ImNodW5rZWRyZXNwb25zZSI+Ci0gIDxsYWJlbCBmb3I9ImNodW5r
ZWRyZXNwb25zZSI+VXNlIENodW5rZWQgVC1FIGZvciByZXNwb25zZTwvbGFiZWw+PGJyLz4KLSAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idXBsb2FkIj4KLSAgPGxhYmVsIGZvcj0idXBsb2Fk
Ij5VcGxvYWQgcHJvZ3Jlc3M8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIg
aWQ9ImR1bXBwcm9ncmVzc2V2ZW50Ij4KLSAgPGxhYmVsIGZvcj0iZHVtcHByb2dyZXNzZXZlbnQi
PgotICAgIER1bXAgbGVuZ3RoQ29tcHV0YWJsZS9sb2FkZWQvdG90YWw8L2xhYmVsPjxici8+Ci0g
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgotICA8bGFiZWwgZm9y
PSJhc3luYyI+QXN5bmM8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9InJ1bigpIiB2YWx1ZT0iUnVuIFhIUiI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9InByaW50KCkiIHZhbHVlPSJQcmludCBsb2ciPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
MDkzM2EyMjA0NTEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQv
X19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVyLgot
Ci1tb2RfcHl3ZWJzb2NrZXQgaXMgYSBXZWJTb2NrZXQgZXh0ZW5zaW9uIGZvciBBcGFjaGUgSFRU
UCBTZXJ2ZXIKLWludGVuZGVkIGZvciB0ZXN0aW5nIG9yIGV4cGVyaW1lbnRhbCBwdXJwb3Nlcy4g
bW9kX3B5dGhvbiBpcyByZXF1aXJlZC4KLQotCi1JbnN0YWxsYXRpb24KLT09PT09PT09PT09PQot
Ci0wLiBQcmVwYXJlIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBmb3Igd2hpY2ggbW9kX3B5dGhvbiBp
cyBlbmFibGVkLgotCi0xLiBTcGVjaWZ5IHRoZSBmb2xsb3dpbmcgQXBhY2hlIEhUVFAgU2VydmVy
IGRpcmVjdGl2ZXMgdG8gc3VpdCB5b3VyCi0gICBjb25maWd1cmF0aW9uLgotCi0gICBJZiBtb2Rf
cHl3ZWJzb2NrZXQgaXMgbm90IGluIHRoZSBQeXRob24gcGF0aCwgc3BlY2lmeSB0aGUgZm9sbG93
aW5nLgotICAgPHdlYnNvY2tfbGliPiBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIG1vZF9weXdlYnNv
Y2tldCBpcyBpbnN0YWxsZWQuCi0KLSAgICAgICBQeXRob25QYXRoICJzeXMucGF0aCtbJzx3ZWJz
b2NrX2xpYj4nXSIKLQotICAgQWx3YXlzIHNwZWNpZnkgdGhlIGZvbGxvd2luZy4gPHdlYnNvY2tf
aGFuZGxlcnM+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUKLSAgIHVzZXItd3JpdHRlbiBXZWJTb2Nr
ZXQgaGFuZGxlcnMgYXJlIHBsYWNlZC4KLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJz
b2NrZXQuaGFuZGxlcl9yb290IDx3ZWJzb2NrX2hhbmRsZXJzPgotICAgICAgIFB5dGhvbkhlYWRl
clBhcnNlckhhbmRsZXIgbW9kX3B5d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIKLQotICAg
VG8gbGltaXQgdGhlIHNlYXJjaCBmb3IgV2ViU29ja2V0IGhhbmRsZXJzIHRvIGEgZGlyZWN0b3J5
IDxzY2FuX2Rpcj4KLSAgIHVuZGVyIDx3ZWJzb2NrX2hhbmRsZXJzPiwgY29uZmlndXJlIGFzIGZv
bGxvd3M6Ci0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfc2Nh
biA8c2Nhbl9kaXI+Ci0KLSAgIDxzY2FuX2Rpcj4gaXMgdXNlZnVsIGluIHNhdmluZyBzY2FuIHRp
bWUgd2hlbiA8d2Vic29ja19oYW5kbGVycz4KLSAgIGNvbnRhaW5zIG1hbnkgbm9uLVdlYlNvY2tl
dCBoYW5kbGVyIGZpbGVzLgotCi0gICBJZiB5b3Ugd2FudCB0byBhbGxvdyBoYW5kbGVycyB3aG9z
ZSBjYW5vbmljYWwgcGF0aCBpcyBub3QgdW5kZXIgdGhlIHJvb3QKLSAgIGRpcmVjdG9yeSAoaS5l
LiBzeW1ib2xpYyBsaW5rIGlzIGluIHJvb3QgZGlyZWN0b3J5IGJ1dCBpdHMgdGFyZ2V0IGlzIG5v
dCksCi0gICBjb25maWd1cmUgYXMgZm9sbG93czoKLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2Rf
cHl3ZWJzb2NrZXQuYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpciBPbgotCi0gICBFeGFt
cGxlIHNuaXBwZXQgb2YgaHR0cGQuY29uZjoKLSAgIChtb2RfcHl3ZWJzb2NrZXQgaXMgaW4gL3dl
YnNvY2tfbGliLCBXZWJTb2NrZXQgaGFuZGxlcnMgYXJlIGluCi0gICAvd2Vic29ja19oYW5kbGVy
cywgcG9ydCBpcyA4MCBmb3Igd3MsIDQ0MyBmb3Igd3NzLikKLQotICAgICAgIDxJZk1vZHVsZSBw
eXRob25fbW9kdWxlPgotICAgICAgICAgUHl0aG9uUGF0aCAic3lzLnBhdGgrWycvd2Vic29ja19s
aWInXSIKLSAgICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290
IC93ZWJzb2NrX2hhbmRsZXJzCi0gICAgICAgICBQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVyIG1v
ZF9weXdlYnNvY2tldC5oZWFkZXJwYXJzZXJoYW5kbGVyCi0gICAgICAgPC9JZk1vZHVsZT4KLQot
Mi4gVHVuZSBBcGFjaGUgcGFyYW1ldGVycyBmb3Igc2VydmluZyBXZWJTb2NrZXQuIFdlJ2QgbGlr
ZSB0byBub3RlIHRoYXQgYXQKLSAgIGxlYXN0IFRpbWVPdXQgZGlyZWN0aXZlIGZyb20gY29yZSBm
ZWF0dXJlcyBhbmQgUmVxdWVzdFJlYWRUaW1lb3V0Ci0gICBkaXJlY3RpdmUgZnJvbSBtb2RfcmVx
dGltZW91dCBzaG91bGQgYmUgbW9kaWZpZWQgbm90IHRvIGtpbGwgY29ubmVjdGlvbnMKLSAgIGlu
IG9ubHkgYSBmZXcgc2Vjb25kcyBvZiBpZGxlIHRpbWUuCi0KLTMuIFZlcmlmeSBpbnN0YWxsYXRp
b24uIFlvdSBjYW4gdXNlIGV4YW1wbGUvY29uc29sZS5odG1sIHRvIHBva2UgdGhlIHNlcnZlci4K
LQotCi1Xcml0aW5nIFdlYlNvY2tldCBoYW5kbGVycwotPT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotV2hlbiBhIFdlYlNvY2tldCByZXF1ZXN0IGNvbWVzIGluLCB0aGUgcmVzb3VyY2UgbmFt
ZQotc3BlY2lmaWVkIGluIHRoZSBoYW5kc2hha2UgaXMgY29uc2lkZXJlZCBhcyBpZiBpdCBpcyBh
IGZpbGUgcGF0aCB1bmRlcgotPHdlYnNvY2tfaGFuZGxlcnM+IGFuZCB0aGUgaGFuZGxlciBkZWZp
bmVkIGluCi08d2Vic29ja19oYW5kbGVycz4vPHJlc291cmNlX25hbWU+X3dzaC5weSBpcyBpbnZv
a2VkLgotCi1Gb3IgZXhhbXBsZSwgaWYgdGhlIHJlc291cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hh
dCwgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgotPHdlYnNvY2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hh
dF93c2gucHkgaXMgaW52b2tlZC4KLQotQSBXZWJTb2NrZXQgaGFuZGxlciBpcyBjb21wb3NlZCBv
ZiB0aGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9uczoKLQotICAgIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0gICAgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpCi0gICAgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpCi0K
LXdoZXJlOgotICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmluZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRo
ZQotaGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBhbmQgV2ViU29ja2V0IHByb3BlcnRp
ZXMgKHdzX2xvY2F0aW9uLAotd3Nfb3JpZ2luLCBhbmQgd3NfcmVzb3VyY2UpIGFyZSBhZGRlZCB0
byByZXF1ZXN0LiBBIGhhbmRsZXIKLWNhbiByZWplY3QgdGhlIHJlcXVlc3QgYnkgcmFpc2luZyBh
biBleGNlcHRpb24uCi0KLUEgcmVxdWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllcyB0aGF0IHlvdSBjYW4gdXNlIGR1cmluZyB0aGUKLWV4dHJhIGhhbmRzaGFrZSAod2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UpOgotLSB3c19yZXNvdXJjZQotLSB3c19vcmlnaW4KLS0g
d3NfdmVyc2lvbgotLSB3c19sb2NhdGlvbiAoSHlCaSAwMCBvbmx5KQotLSB3c19leHRlbnNpb25z
IChIeUJpIDA2IGFuZCBsYXRlcikKLS0gd3NfZGVmbGF0ZSAoSHlCaSAwNiBhbmQgbGF0ZXIpCi0t
IHdzX3Byb3RvY29sCi0tIHdzX3JlcXVlc3RlZF9wcm90b2NvbHMgKEh5QmkgMDYgYW5kIGxhdGVy
KQotCi1UaGUgbGFzdCB0d28gYXJlIGEgYml0IHRyaWNreS4gU2VlIHRoZSBuZXh0IHN1YnNlY3Rp
b24uCi0KLQotU3VicHJvdG9jb2wgTmVnb3RpYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLUZvciBIeUJpIDA2IGFuZCBsYXRlciwgd3NfcHJvdG9jb2wgaXMgYWx3YXlzIHNldCB0byBO
b25lIHdoZW4KLXdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZC4gSWYgd3Nf
cmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKLU5vbmUsIHlvdSBtdXN0IGNob29zZSBvbmUgc3Vi
cHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBpdCB0bwotd3NfcHJvdG9jb2wuCi0KLUZv
ciBIeUJpIDAwLCB3aGVuIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZCwK
LXdzX3Byb3RvY29sIGlzIHNldCB0byB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIGNsaWVudCBpbgot
U2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgb3IgTm9uZSBpZgotc3VjaCBoZWFkZXIgd2Fz
IG5vdCBmb3VuZCBpbiB0aGUgb3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdC4gRmluaXNoIGV4dHJh
Ci1oYW5kc2hha2Ugd2l0aCB3c19wcm90b2NvbCB1bnRvdWNoZWQgdG8gYWNjZXB0IHRoZSByZXF1
ZXN0IHN1YnByb3RvY29sLgotVGhlbiwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgd2ls
bCBiZSBzZW50IHRvCi10aGUgY2xpZW50IGluIHJlc3BvbnNlIHdpdGggdGhlIHNhbWUgdmFsdWUg
YXMgcmVxdWVzdGVkLiBSYWlzZSBhbiBleGNlcHRpb24KLWluIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdGVkIHN1YnByb3RvY29sLgotCi0KLURhdGEg
VHJhbnNmZXIKLS0tLS0tLS0tLS0tLS0KLQotd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlzIGNh
bGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAotc3VjY2Vzc2Z1bGx5LiBBIGhhbmRs
ZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBjbGllbnQKLXVzaW5nIHJl
cXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMK
LWZvciBkYXRhIHRyYW5zZmVyLgotCi1Zb3UgY2FuIHJlY2VpdmUgYSBtZXNzYWdlIGJ5IHRoZSBm
b2xsb3dpbmcgc3RhdGVtZW50LgotCi0gICAgbWVzc2FnZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJl
Y2VpdmVfbWVzc2FnZSgpCi0KLVRoaXMgY2FsbCBibG9ja3MgdW50aWwgYW55IGNvbXBsZXRlIHRl
eHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXlsb2FkIGRhdGEKLW9mIHRoZSBpbmNvbWluZyBm
cmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3NhZ2UuIFdoZW4geW91J3JlIHVzaW5nIElFVEYK
LUh5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJlY2VpdmVfbWVzc2FnZSgpIHdpbGwgcmV0dXJu
IE5vbmUgb24gcmVjZWl2aW5nCi1jbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlLiBX
aGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVfbWVzc2FnZSgpCi13aWxsIHJhaXNlIHNvbWUg
ZXhjZXB0aW9uLgotCi1Zb3UgY2FuIHNlbmQgYSBtZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3Rh
dGVtZW50LgotCi0gICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCi0K
LQotQ2xvc2luZyBDb25uZWN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRXhlY3V0aW5nIHRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3QgcmV0dXJuLWluZyBmcm9tCi13ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlvbiBjbG9zZS4KLQotICAgIHJlcXVlc3Qud3Nf
c3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotCi1jbG9zZV9jb25uZWN0aW9uIHdpbGwgd2FpdAot
Zm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xlZGdlbWVudCBjb21pbmcgZnJvbSB0aGUgY2xp
ZW50LiBXaGVuIGl0Ci1jb3VsZG4ndCByZWNlaXZlIGEgdmFsaWQgYWNrbm93bGVkZ2VtZW50LCBy
YWlzZXMgYW4gZXhjZXB0aW9uLgotCi13ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hh
a2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIgcmVjZWl2ZXMKLWluY29taW5nIGNsb3Npbmcg
ZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1tZWRpYXRlbHkuIFlvdSBjYW4gc3BlY2lmeQot
Y29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1ZXMuIFRoZXkgYXJlIHNlbnQgYXMgYSBvdXRn
b2luZyBjbG9zaW5nIGZyYW1lCi1mcm9tIHRoZSBzZXJ2ZXIuIEEgcmVxdWVzdCBvYmplY3QgaGFz
IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4KLXVzZSBpbiB3ZWJfc29ja2V0
X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCi0tIHdzX2Nsb3NlX2NvZGUKLS0gd3NfY2xvc2Vf
cmVhc29uCi0KLQotVGhyZWFkaW5nCi0tLS0tLS0tLS0KLQotQSBXZWJTb2NrZXQgaGFuZGxlciBt
dXN0IGJlIHRocmVhZC1zYWZlIGlmIHRoZSBzZXJ2ZXIgKEFwYWNoZSBvcgotc3RhbmRhbG9uZS5w
eSkgaXMgY29uZmlndXJlZCB0byB1c2UgdGhyZWFkcy4KLQotCi1Db25maWd1cmluZyBXZWJTb2Nr
ZXQgRXh0ZW5zaW9uIFByb2Nlc3NvcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1TZWUgZXh0ZW5zaW9ucy5weSBmb3Igc3VwcG9ydGVkIFdlYlNvY2tldCBl
eHRlbnNpb25zLiBOb3RlIHRoYXQgdGhleSBhcmUKLXVuc3RhYmxlIGFuZCB0aGVpciBBUElzIGFy
ZSBzdWJqZWN0IHRvIGNoYW5nZSBzdWJzdGFudGlhbGx5LgotCi1BIHJlcXVlc3Qgb2JqZWN0IGhh
cyB0aGVzZSBleHRlbnNpb24gcHJvY2Vzc2luZyByZWxhdGVkIGF0dHJpYnV0ZXMuCi0KLS0gd3Nf
cmVxdWVzdGVkX2V4dGVuc2lvbnM6Ci0KLSAgQSBsaXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBleHRlbnNpb24KLSAgcGFyYW1ldGVycyByZWNl
aXZlZCBmcm9tIHRoZSBjbGllbnQgaW4gdGhlIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtlLgot
ICBZb3Ugc2hvdWxkbid0IG1vZGlmeSBpdCBtYW51YWxseS4KLQotLSB3c19leHRlbnNpb25zOgot
Ci0gIEEgbGlzdCBvZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3RhbmNlcyByZXByZXNl
bnRpbmcgZXh0ZW5zaW9uCi0gIHBhcmFtZXRlcnMgdG8gc2VuZCBiYWNrIHRvIHRoZSBjbGllbnQg
aW4gdGhlIHNlcnZlcidzIG9wZW5pbmcgaGFuZHNoYWtlLgotICBZb3Ugc2hvdWxkbid0IHRvdWNo
IGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCBjYWxsIG1ldGhvZHMgb24gZXh0ZW5zaW9uCi0gIHByb2Nl
c3NvcnMuCi0KLS0gd3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6Ci0KLSAgQSBsaXN0IG9mIGxvYWRl
ZCBleHRlbnNpb24gcHJvY2Vzc29ycy4gRmluZCB0aGUgcHJvY2Vzc29yIGZvciB0aGUKLSAgZXh0
ZW5zaW9uIHlvdSB3YW50IHRvIGNvbmZpZ3VyZSBmcm9tIGl0LCBhbmQgY2FsbCBpdHMgbWV0aG9k
cy4KLSIiIgotCi0KLSMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9fc3RyZWFtX2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMzU2
NjZiYmIxZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9fc3Ry
ZWFtX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiQmFzZSBzdHJlYW0gY2xhc3MuCi0iIiIKLQotCi0jIE5vdGU6IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3Vn
aAotIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9u
bHkgaW4gY29ubmVjdGlvbgotIyBoYW5kbGVycy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBv
dGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKLSMgcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBub3Qg
c3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMKLSMgd3Jp
dGluZy9yZWFkaW5nLgotCi0KLWltcG9ydCBzb2NrZXQKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHV0aWwKLQotCi0jIEV4Y2VwdGlvbnMKLQotCi1jbGFzcyBDb25uZWN0aW9uVGVybWlu
YXRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUg
cmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzIHRlcm1pbmF0ZWQKLSAgICB1bmV4cGVjdGVkbHku
Ci0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgSW52YWxpZEZyYW1lRXhjZXB0aW9uKENv
bm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxs
IGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmVkIGFuIGludmFsaWQgZnJhbWUgd2UKLSAgICBjYW5u
b3QgcGFyc2UuCi0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQg
d2hlbiBzZW5kX21lc3NhZ2UoKSBpcyBjYWxsZWQgb24KLSAgICBzZXJ2ZXItdGVybWluYXRlZCBj
b25uZWN0aW9uIG9yIHJlY2VpdmVfbWVzc2FnZSgpIGlzIGNhbGxlZCBvbgotICAgIGNsaWVudC10
ZXJtaW5hdGVkIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9u
IHdpbGwgYmUgcmFpc2VkIHdoZW4gd2UgcmVjZWl2ZSBhIGZyYW1lIHdpdGggZmxhZywgb3Bjb2Rl
Ci0gICAgd2UgY2Fubm90IGhhbmRsZS4gSGFuZGxlcnMgY2FuIGp1c3QgY2F0Y2ggYW5kIGlnbm9y
ZSB0aGlzIGV4Y2VwdGlvbiBhbmQKLSAgICBjYWxsIHJlY2VpdmVfbWVzc2FnZSgpIGFnYWluIHRv
IGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIG5leHQgZnJhbWUuCi0gICAgIiIiCi0KLSAgICBwYXNz
Ci0KLQotY2xhc3MgSW52YWxpZFVURjhFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlz
IGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSB0ZXh0IGZyYW1lIHdo
aWNoCi0gICAgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzdHJpbmdzLgotICAgICIiIgotCi0gICAg
cGFzcwotCi0KLWNsYXNzIFN0cmVhbUJhc2Uob2JqZWN0KToKLSAgICAiIiJCYXNlIHN0cmVhbSBj
bGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1
ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xv
Z2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX3JlcXVl
c3QgPSByZXF1ZXN0Ci0KLSAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIi
UmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkg
ZXhjZXB0aW9uLAotICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0
aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAg
ICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0
eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlYWRf
Ynl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCi0gICAgICAgICAg
ICBpZiBub3QgcmVhZF9ieXRlczoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVy
bWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRl
IGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCi0gICAgICAgICAgICAgICAg
ICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsKSkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVhZF9ieXRlcwotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9y
LCBlOgotICAgICAgICAgICAgIyBDYXRjaCBhIHNvY2tldC5lcnJvci4gQmVjYXVzZSBpdCdzIG5v
dCBhIGNoaWxkIGNsYXNzIG9mIHRoZQotICAgICAgICAgICAgIyBJT0Vycm9yIHByaW9yIHRvIFB5
dGhvbiAyLjYsIHdlIGNhbm5vdCBvbWl0IHRoaXMgZXhjZXB0IGNsYXVzZS4KLSAgICAgICAgICAg
ICMgVXNlICVzIHJhdGhlciB0aGFuICVyIGZvciB0aGUgZXhjZXB0aW9uIHRvIHVzZSBodW1hbiBm
cmllbmRseQotICAgICAgICAgICAgIyBmb3JtYXQuCi0gICAgICAgICAgICByYWlzZSBDb25uZWN0
aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5
dGUgZmFpbGVkLiBzb2NrZXQuZXJyb3IgKCVzKSBvY2N1cnJlZCcgJQotICAgICAgICAgICAgICAg
IChsZW5ndGgsIGUpKQotICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgICAgICAgICMg
QWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJlY2F1c2UgbW9kX3B5dGhvbiB0aHJvd3MgaXQuCi0gICAg
ICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBJT0Vycm9yICglcykgb2NjdXJyZWQnICUK
LSAgICAgICAgICAgICAgICAobGVuZ3RoLCBlKSkKLQotICAgIGRlZiBfd3JpdGUoc2VsZiwgYnl0
ZXNfdG9fd3JpdGUpOgotICAgICAgICAiIiJXcml0ZXMgZ2l2ZW4gYnl0ZXMgdG8gY29ubmVjdGlv
bi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAotICAgICAgICBwcmVwZW5kcyByZW1v
dGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgotICAg
ICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3JpdGUpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICdGYWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvICVyOiAnICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRy
LCksCi0gICAgICAgICAgICAgICAgICAgIGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgZGVm
IHJlY2VpdmVfYnl0ZXMoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgbXVsdGlw
bGUgYnl0ZXMuIFJldHJpZXMgcmVhZCB3aGVuIHdlIGNvdWxkbid0IHJlY2VpdmUgdGhlCi0gICAg
ICAgIHNwZWNpZmllZCBhbW91bnQuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmlu
Zy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVhZF9ieXRlcyA9IFtdCi0gICAgICAgIHdoaWxl
IGxlbmd0aCA+IDA6Ci0gICAgICAgICAgICBuZXdfcmVhZF9ieXRlcyA9IHNlbGYuX3JlYWQobGVu
Z3RoKQotICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQobmV3X3JlYWRfYnl0ZXMpCi0gICAg
ICAgICAgICBsZW5ndGggLT0gbGVuKG5ld19yZWFkX2J5dGVzKQotICAgICAgICByZXR1cm4gJycu
am9pbihyZWFkX2J5dGVzKQotCi0gICAgZGVmIF9yZWFkX3VudGlsKHNlbGYsIGRlbGltX2NoYXIp
OgotICAgICAgICAiIiJSZWFkcyBieXRlcyB1bnRpbCB3ZSBlbmNvdW50ZXIgZGVsaW1fY2hhci4g
VGhlIHJlc3VsdCB3aWxsIG5vdAotICAgICAgICBjb250YWluIGRlbGltX2NoYXIuCi0KLSAgICAg
ICAgUmFpc2VzOgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdo
ZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVh
ZF9ieXRlcyA9IFtdCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHNlbGYu
X3JlYWQoMSkKLSAgICAgICAgICAgIGlmIGNoID09IGRlbGltX2NoYXI6Ci0gICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBwZW5kKGNoKQotICAgICAgICByZXR1
cm4gJycuam9pbihyZWFkX2J5dGVzKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk0Y2Y1YjMxYmEwZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIGEgY2xhc3Mg
Zm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZl
cnNpb24gSHlCaSAwMCBhbmQgSGl4aWUgNzUuCi0KLVNwZWNpZmljYXRpb246Ci0tIEh5QmkgMDAg
aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHBy
b3RvY29sLTAwCi0tIEhpeGllIDc1IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWhp
eGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc1Ci0iIiIKLQotCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNl
IGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgU3RyZWFtQmFzZQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLWNsYXNzIFN0cmVhbUhpeGllNzUoU3Ry
ZWFtQmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2Yg
dGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uCi0gICAgSHlCaSAwMCBhbmQgSGl4aWUgNzUu
Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZW5hYmxlX2Nsb3Np
bmdfaGFuZHNoYWtlPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
Ci0gICAgICAgICAgICBlbmFibGVfY2xvc2luZ19oYW5kc2hha2U6IHRvIGxldCBTdHJlYW1IaXhp
ZTc1IHBlcmZvcm0gY2xvc2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kc2hha2UgYXMgc3BlY2lmaWVkIGluIEh5QmkgMDAsIHNldAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG9wdGlvbiB0byBUcnVlLgotICAgICAgICAiIiIK
LQotICAgICAgICBTdHJlYW1CYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2Vs
Zi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlID0gZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlCi0K
LSAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBGYWxzZQotCi0gICAgZGVmIHNlbmRf
bWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAg
IiIiU2VuZCBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtZXNzYWdlOiB1
bmljb2RlIHN0cmluZyB0byBzZW5kLgotICAgICAgICAgICAgYmluYXJ5OiBub3QgdXNlZCBpbiBo
aXhpZTc1LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbjogd2hlbiBjYWxsZWQgb24gYSBzZXJ2ZXItdGVybWluYXRlZAotICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBlbmQ6Ci0gICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1N0cmVh
bUhpeGllNzUgZG9lc25cJ3Qgc3VwcG9ydCBzZW5kX21lc3NhZ2Ugd2l0aCBlbmQ9RmFsc2UnKQot
Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNl
bmRfbWVzc2FnZSB3aXRoIGJpbmFyeT1UcnVlJykKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRp
bmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIHNlbGYuX3dyaXRlKCcnLmpv
aW4oWydceDAwJywgbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JyksICdceGZmJ10pKQotCi0gICAgZGVm
IF9yZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoc2VsZik6Ci0gICAgICAgICIiIlJlYWRzIGEg
bGVuZ3RoIGhlYWRlciBpbiBhIEhpeGllNzUgdmVyc2lvbiBmcmFtZSB3aXRoIGxlbmd0aC4KLQot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
bjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIKLQotICAgICAg
ICBsZW5ndGggPSAwCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBiX3N0ciA9IHNl
bGYuX3JlYWQoMSkKLSAgICAgICAgICAgIGIgPSBvcmQoYl9zdHIpCi0gICAgICAgICAgICBsZW5n
dGggPSBsZW5ndGggKiAxMjggKyAoYiAmIDB4N2YpCi0gICAgICAgICAgICBpZiAoYiAmIDB4ODAp
ID09IDA6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGxlbmd0aAotCi0g
ICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIFdlYlNv
Y2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFuIHVuaWNvZGUgc3RyaW5nLgotCi0g
ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBwYXlsb2FkIHVuaWNvZGUgc3RyaW5nIGluIGEg
V2ViU29ja2V0IGZyYW1lLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAgICAg
ICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBj
YWxsZWQgb24gYSBjbGllbnQtdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0
ZWQ6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1JlcXVlc3RlZCByZWNlaXZlX21lc3NhZ2UgYWZ0ZXIgcmVjZWl2aW5nIGEgY2xvc2lu
ZyAnCi0gICAgICAgICAgICAgICAgJ2hhbmRzaGFrZScpCi0KLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgICMgUmVhZCAxIGJ5dGUuCi0gICAgICAgICAgICAjIG1wX2Nvbm4ucmVhZCB3
aWxsIGJsb2NrIGlmIG5vIGJ5dGVzIGFyZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAjIFRpbWVv
dXQgaXMgY29udHJvbGxlZCBieSBUaW1lT3V0IGRpcmVjdGl2ZSBvZiBBcGFjaGUuCi0gICAgICAg
ICAgICBmcmFtZV90eXBlX3N0ciA9IHNlbGYucmVjZWl2ZV9ieXRlcygxKQotICAgICAgICAgICAg
ZnJhbWVfdHlwZSA9IG9yZChmcmFtZV90eXBlX3N0cikKLSAgICAgICAgICAgIGlmIChmcmFtZV90
eXBlICYgMHg4MCkgPT0gMHg4MDoKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGxlbmd0
aCBpcyBzcGVjaWZpZWQgaW4gdGhlIGZyYW1lLgotICAgICAgICAgICAgICAgICMgUmVhZCBhbmQg
ZGlzY2FyZC4KLSAgICAgICAgICAgICAgICBsZW5ndGggPSBzZWxmLl9yZWFkX3BheWxvYWRfbGVu
Z3RoX2hpeGllNzUoKQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA+IDA6Ci0gICAgICAgICAg
ICAgICAgICAgIF8gPSBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQotICAgICAgICAgICAgICAg
ICMgNS4zIDMuIDEyLiBpZiAvdHlwZS8gaXMgMHhGRiBhbmQgL2xlbmd0aC8gaXMgMCwgdGhlbiBz
ZXQgdGhlCi0gICAgICAgICAgICAgICAgIyAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9lbmFibGVfY2xv
c2luZ19oYW5kc2hha2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
ICAgICAgICBpZiBmcmFtZV90eXBlID09IDB4RkYgYW5kIGxlbmd0aCA9PSAwOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0
ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRf
Y2xvc2luZ19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoCi0gICAgICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVudC1pbml0aWF0
ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGlzIGRlbGlt
aXRlZCB3aXRoIFx4ZmYuCi0gICAgICAgICAgICAgICAgYnl0ZXMgPSBzZWxmLl9yZWFkX3VudGls
KCdceGZmJykKLSAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgc2VjdGlv
biA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAotICAgICAgICAgICAgICAgICMgY2hhcmFjdGVy
cyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VNRU5UCi0gICAgICAgICAgICAg
ICAgIyBDSEFSQUNURVIuCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGJ5dGVzLmRlY29kZSgn
dXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSAweDAw
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotICAgICAgICAgICAgICAgICMg
RGlzY2FyZCBkYXRhIG9mIG90aGVyIHR5cGVzLgotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFu
ZHNoYWtlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNo
YWtlOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdDbG9zaW5nIGhhbmRzaGFrZSBpcyBub3Qgc3VwcG9ydGVkIGluIEhpeGllIDc1IHBy
b3RvY29sJykKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1
ZQotCi0gICAgICAgICMgNS4zIHRoZSBzZXJ2ZXIgbWF5IGRlY2lkZSB0byB0ZXJtaW5hdGUgdGhl
IFdlYlNvY2tldCBjb25uZWN0aW9uIGJ5Ci0gICAgICAgICMgcnVubmluZyB0aHJvdWdoIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICMgMS4gc2VuZCBhIDB4RkYgYnl0ZSBhbmQgYSAweDAw
IGJ5dGUgdG8gdGhlIGNsaWVudCB0byBpbmRpY2F0ZSB0aGUKLSAgICAgICAgIyBzdGFydCBvZiB0
aGUgY2xvc2luZyBoYW5kc2hha2UuCi0gICAgICAgIHNlbGYuX3dyaXRlKCdceGZmXHgwMCcpCi0K
LSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCB1bnVzZWRfY29kZT0nJywgdW51c2VkX3Jl
YXNvbj0nJyk6Ci0gICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBjb25uZWN0aW9uLgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
OiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIHdhcwotICAgICAgICAgICAgICAgIG5vdCBzdWNjZXNz
ZnVsbC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVy
bWluYXRlZDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1p
bmF0ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2VuYWJs
ZV9jbG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rl
cm1pbmF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Nvbm5lY3Rp
b24gY2xvc2VkJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3NlbmRfY2xv
c2luZ19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2VydmVy
LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgIyBUT0RPKHVrYWkpOiAy
LiB3YWl0IHVudGlsIHRoZSAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0LAot
ICAgICAgICAjIG9yIHVudGlsIGEgc2VydmVyLWRlZmluZWQgdGltZW91dCBleHBpcmVzLgotICAg
ICAgICAjCi0gICAgICAgICMgRm9yIG5vdywgd2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5nIGhh
bmRzaGFrZSByaWdodCBhZnRlciBzZW5kaW5nCi0gICAgICAgICMgb3V0IGNsb3NpbmcgaGFuZHNo
YWtlLCBhbmQgaWYgd2UgY291bGRuJ3QgcmVjZWl2ZSBub24taGFuZHNoYWtlCi0gICAgICAgICMg
ZnJhbWUsIHdlIHRha2UgaXQgYXMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24uCi0gICAg
ICAgIG1lc3NhZ2UgPSBzZWxmLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIG1lc3NhZ2Ug
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xv
c2luZyBoYW5kc2hha2UnKQotICAgICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQg
Y29ubmVjdGlvbi4KLSAgICAgICAgIyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nv
bm4pIGRvZXNuJ3QgaGF2ZSBjbG9zZSBtZXRob2QuCi0KLSAgICBkZWYgc2VuZF9waW5nKHNlbGYs
IGJvZHkpOgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAg
ICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNlbmRfcGluZycpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVh
bV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThhNDllM2MzZGM5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQorKysgL2Rldi9udWxs
CkBAIC0xLDg4NyArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJv
dmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgcGFyc2luZy9idWlsZGluZyBm
cmFtZXMKLW9mIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4KLQotU3BlY2lmaWNh
dGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKLSIiIgotCi0KLWZyb20g
Y29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBv
cnQgc3RydWN0Ci1pbXBvcnQgdGltZQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRp
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1l
RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFs
aWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IFN0cmVhbUJhc2UKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotCi0KLV9OT09QX01BU0tFUiA9IHV0aWwuTm9vcE1hc2tl
cigpCi0KLQotY2xhc3MgRnJhbWUob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aW49MSwgcnN2MT0wLCByc3YyPTAsIHJzdjM9MCwKLSAgICAgICAgICAgICAgICAgb3Bjb2RlPU5v
bmUsIHBheWxvYWQ9JycpOgotICAgICAgICBzZWxmLmZpbiA9IGZpbgotICAgICAgICBzZWxmLnJz
djEgPSByc3YxCi0gICAgICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAgICAgc2VsZi5yc3YzID0g
cnN2MwotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxvYWQg
PSBwYXlsb2FkCi0KLQotIyBIZWxwZXIgZnVuY3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQg
Zm9yIHdyaXRpbmcgdW5pdHRlc3RzIGZvciBXZWJTb2NrZXQKLSMgY2xpZW50cy4KLQotCi1kZWYg
Y3JlYXRlX2xlbmd0aF9oZWFkZXIobGVuZ3RoLCBtYXNrKToKLSAgICAiIiJDcmVhdGVzIGEgbGVu
Z3RoIGhlYWRlci4KLQotICAgIEFyZ3M6Ci0gICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBN
dXN0IGJlIGxlc3MgdGhhbiAyXjYzLgotICAgICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBi
b29sZWFuLgotCi0gICAgUmFpc2VzOgotICAgICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRh
IGlzIGdpdmVuLgotICAgICIiIgotCi0gICAgaWYgbWFzazoKLSAgICAgICAgbWFza19iaXQgPSAx
IDw8IDcKLSAgICBlbHNlOgotICAgICAgICBtYXNrX2JpdCA9IDAKLQotICAgIGlmIGxlbmd0aCA8
IDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2
ZSBpbnRlZ2VyJykKLSAgICBlbGlmIGxlbmd0aCA8PSAxMjU6Ci0gICAgICAgIHJldHVybiBjaHIo
bWFza19iaXQgfCBsZW5ndGgpCi0gICAgZWxpZiBsZW5ndGggPCAoMSA8PCAxNik6Ci0gICAgICAg
IHJldHVybiBjaHIobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soJyFIJywgbGVuZ3RoKQot
ICAgIGVsaWYgbGVuZ3RoIDwgKDEgPDwgNjMpOgotICAgICAgICByZXR1cm4gY2hyKG1hc2tfYml0
IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKLSAgICBlbHNlOgotICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9yIG9uZSBmcmFtZScpCi0KLQot
ZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCwgZmluLCByc3YxLCByc3Yy
LCByc3YzLCBtYXNrKToKLSAgICAiIiJDcmVhdGVzIGEgZnJhbWUgaGVhZGVyLgotCi0gICAgUmFp
c2VzOgotICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEgaXMgZ2l2ZW4uCi0gICAgIiIi
Ci0KLSAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToKLSAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCi0KLSAgICBpZiBwYXlsb2FkX2xlbmd0aCA8
IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQotCi0gICAgaWYgKGZpbiB8IHJzdjEg
fCByc3YyIHwgcnN2MykgJiB+MToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRklOIGJpdCBh
bmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3IgMScpCi0KLSAgICBoZWFkZXIg
PSAnJwotCi0gICAgZmlyc3RfYnl0ZSA9ICgoZmluIDw8IDcpCi0gICAgICAgICAgICAgICAgICB8
IChyc3YxIDw8IDYpIHwgKHJzdjIgPDwgNSkgfCAocnN2MyA8PCA0KQotICAgICAgICAgICAgICAg
ICAgfCBvcGNvZGUpCi0gICAgaGVhZGVyICs9IGNocihmaXJzdF9ieXRlKQotICAgIGhlYWRlciAr
PSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXlsb2FkX2xlbmd0aCwgbWFzaykKLQotICAgIHJldHVy
biBoZWFkZXIKLQotCi1kZWYgX2J1aWxkX2ZyYW1lKGhlYWRlciwgYm9keSwgbWFzayk6Ci0gICAg
aWYgbm90IG1hc2s6Ci0gICAgICAgIHJldHVybiBoZWFkZXIgKyBib2R5Ci0KLSAgICBtYXNraW5n
X25vbmNlID0gb3MudXJhbmRvbSg0KQotICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIobWFza2luZ19ub25jZSkKLQotICAgIHJldHVybiBoZWFkZXIgKyBtYXNraW5nX25vbmNlICsg
bWFza2VyLm1hc2soYm9keSkKLQotCi1kZWYgX2ZpbHRlcl9hbmRfZm9ybWF0X2ZyYW1lX29iamVj
dChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycyk6Ci0gICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBm
cmFtZV9maWx0ZXJzOgotICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAg
aGVhZGVyID0gY3JlYXRlX2hlYWRlcigKLSAgICAgICAgZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUu
cGF5bG9hZCksIGZyYW1lLmZpbiwKLSAgICAgICAgZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJh
bWUucnN2MywgbWFzaykKLSAgICByZXR1cm4gX2J1aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5
bG9hZCwgbWFzaykKLQotCi1kZWYgY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICBtZXNzYWdlLCBv
cGNvZGU9Y29tbW9uLk9QQ09ERV9CSU5BUlksIGZpbj0xLCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0
ZXJzPVtdKToKLSAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIGJpbmFyeSBmcmFtZSB3aXRoIG5vIGV4
dGVuc2lvbiwgcmVzZXJ2ZWQgYml0LiIiIgotCi0gICAgZnJhbWUgPSBGcmFtZShmaW49ZmluLCBv
cGNvZGU9b3Bjb2RlLCBwYXlsb2FkPW1lc3NhZ2UpCi0gICAgcmV0dXJuIF9maWx0ZXJfYW5kX2Zv
cm1hdF9mcmFtZV9vYmplY3QoZnJhbWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNy
ZWF0ZV90ZXh0X2ZyYW1lKAotICAgIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQs
IGZpbj0xLCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICAiIiJDcmVhdGVzIGEg
c2ltcGxlIHRleHQgZnJhbWUgd2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKLQot
ICAgIGVuY29kZWRfbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0gICAgcmV0dXJu
IGNyZWF0ZV9iaW5hcnlfZnJhbWUoZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBw
YXJzZV9mcmFtZShyZWNlaXZlX2J5dGVzLCBsb2dnZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICB3
c192ZXJzaW9uPWNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULAotICAgICAgICAgICAgICAgIHVu
bWFza19yZWNlaXZlPVRydWUpOgotICAgICIiIlBhcnNlcyBhIGZyYW1lLiBSZXR1cm5zIGEgdHVw
bGUgY29udGFpbmluZyBlYWNoIGhlYWRlciBmaWVsZCBhbmQKLSAgICBwYXlsb2FkLgotCi0gICAg
QXJnczoKLSAgICAgICAgcmVjZWl2ZV9ieXRlczogYSBmdW5jdGlvbiB0aGF0IHJlYWRzIGZyYW1l
IGRhdGEgZnJvbSBhIHN0cmVhbSBvcgotICAgICAgICAgICAgc29tZXRoaW5nIHNpbWlsYXIuIFRo
ZSBmdW5jdGlvbiB0YWtlcyBsZW5ndGggb2YgdGhlIGJ5dGVzIHRvIGJlCi0gICAgICAgICAgICBy
ZWFkLiBUaGUgZnVuY3Rpb24gbXVzdCByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
biBpZgotICAgICAgICAgICAgdGhlcmUgaXMgbm90IGVub3VnaCBkYXRhIHRvIGJlIHJlYWQuCi0g
ICAgICAgIGxvZ2dlcjogYSBsb2dnaW5nIG9iamVjdC4KLSAgICAgICAgd3NfdmVyc2lvbjogdGhl
IHZlcnNpb24gb2YgV2ViU29ja2V0IHByb3RvY29sLgotICAgICAgICB1bm1hc2tfcmVjZWl2ZTog
dW5tYXNrIHJlY2VpdmVkIGZyYW1lcy4gV2hlbiByZWNlaXZlZCB1bm1hc2tlZAotICAgICAgICAg
ICAgZnJhbWUsIHJhaXNlcyBJbnZhbGlkRnJhbWVFeGNlcHRpb24uCi0KLSAgICBSYWlzZXM6Ci0g
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlY2VpdmVfYnl0ZXMg
cmFpc2VzIGl0LgotICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1l
IGNvbnRhaW5zIGludmFsaWQgZGF0YS4KLSAgICAiIiIKLQotICAgIGlmIG5vdCBsb2dnZXI6Ci0g
ICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLQotICAgIGxvZ2dlci5sb2coY29t
bW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIHRoZSBmaXJzdCAyIG9jdGV0cyBvZiBhIGZyYW1l
JykKLQotICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcygyKQotCi0gICAgZmlyc3RfYnl0ZSA9
IG9yZChyZWNlaXZlZFswXSkKLSAgICBmaW4gPSAoZmlyc3RfYnl0ZSA+PiA3KSAmIDEKLSAgICBy
c3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCi0gICAgcnN2MiA9IChmaXJzdF9ieXRlID4+IDUp
ICYgMQotICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLSAgICBvcGNvZGUgPSBmaXJz
dF9ieXRlICYgMHhmCi0KLSAgICBzZWNvbmRfYnl0ZSA9IG9yZChyZWNlaXZlZFsxXSkKLSAgICBt
YXNrID0gKHNlY29uZF9ieXRlID4+IDcpICYgMQotICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25k
X2J5dGUgJiAweDdmCi0KLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAg
ICAgICAgICAgICAgJ0ZJTj0lcywgUlNWMT0lcywgUlNWMj0lcywgUlNWMz0lcywgb3Bjb2RlPSVz
LCAnCi0gICAgICAgICAgICAgICAnTWFzaz0lcywgUGF5bG9hZF9sZW5ndGg9JXMnLAotICAgICAg
ICAgICAgICAgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIG1hc2ssIHBheWxvYWRfbGVu
Z3RoKQotCi0gICAgaWYgKG1hc2sgPT0gMSkgIT0gdW5tYXNrX3JlY2VpdmU6Ci0gICAgICAgIHJh
aXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdNYXNrIGJpdCBvbiB0aGUg
cmVjZWl2ZWQgZnJhbWUgZGlkXCdudCBtYXRjaCBtYXNraW5nICcKLSAgICAgICAgICAgICdjb25m
aWd1cmF0aW9uIGZvciByZWNlaXZlZCBmcmFtZXMnKQotCi0gICAgIyBUaGUgSHlCaSBhbmQgbGF0
ZXIgc3BlY3MgZGlzYWxsb3cgcHV0dGluZyBhIHZhbHVlIGluIDB4MC0weEZGRkYKLSAgICAjIGlu
dG8gdGhlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQgKG9yIDB4MC0weEZE
IGluCi0gICAgIyAyLW9jdGV0IGZpZWxkKS4KLSAgICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBU
cnVlCi0gICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMQotICAgIGlmIHBheWxvYWRfbGVuZ3Ro
ID09IDEyNzoKLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykK
LQotICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoOCkKLSAg
ICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFRJywg
ZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4g
MHg3RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdFeHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykK
LSAgICAgICAgaWYgd3NfdmVyc2lvbiA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAw
OgotICAgICAgICAgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gRmFsc2UKLSAgICAgICAgICAg
IGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDgKLQotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5M
T0dMRVZFTF9GSU5FLAotICAgICAgICAgICAgICAgICAgICdEZWNvZGVkX3BheWxvYWRfbGVuZ3Ro
PSVzJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6Ci0g
ICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAg
ICAgJ1JlY2VpdmUgMi1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCcpCi0KLSAgICAgICAg
ZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKDIpCi0gICAgICAgIHBheWxv
YWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKLSAgICAgICAgICAgICchSCcsIGV4dGVuZGVkX3Bh
eWxvYWRfbGVuZ3RoKVswXQotICAgICAgICBpZiB3c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2Fk
X2xlbmd0aCA8IDEyNjoKLSAgICAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNl
Ci0gICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAyCi0KLSAgICAgICAgbG9nZ2Vy
LmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAnRGVjb2RlZF9w
YXlsb2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQotCi0gICAgaWYgbm90IHZhbGlkX2xl
bmd0aF9lbmNvZGluZzoKLSAgICAgICAgbG9nZ2VyLndhcm5pbmcoCi0gICAgICAgICAgICAnUGF5
bG9hZCBsZW5ndGggaXMgbm90IGVuY29kZWQgdXNpbmcgdGhlIG1pbmltYWwgbnVtYmVyIG9mICcK
LSAgICAgICAgICAgICdieXRlcyAoJWQgaXMgZW5jb2RlZCB1c2luZyAlZCBieXRlcyknLAotICAg
ICAgICAgICAgcGF5bG9hZF9sZW5ndGgsCi0gICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0
ZXMpCi0KLSAgICBpZiBtYXNrID09IDE6Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQotCi0gICAgICAgIG1hc2tpbmdfbm9uY2UgPSByZWNl
aXZlX2J5dGVzKDQpCi0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFz
a2luZ19ub25jZSkKLQotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
TWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCi0gICAgZWxzZToKLSAgICAgICAgbWFza2VyID0gX05P
T1BfTUFTS0VSCi0KLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2
ZSBwYXlsb2FkIGRhdGEnKQotICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xF
VkVMX0ZJTkUpOgotICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKLQotICAgIHJh
d19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKLQotICAgIGlm
IGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgotICAgICAgICBsb2dn
ZXIubG9nKAotICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAn
RG9uZSByZWNlaXZpbmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAotICAgICAgICAgICAgcGF5
bG9hZF9sZW5ndGggLyAodGltZS50aW1lKCkgLSByZWNlaXZlX3N0YXJ0KSAvIDEwMDAgLyAxMDAw
KQotICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdVbm1hc2sgcGF5bG9hZCBk
YXRhJykKLQotICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUp
OgotICAgICAgICB1bm1hc2tfc3RhcnQgPSB0aW1lLnRpbWUoKQotCi0gICAgdW5tYXNrZWRfYnl0
ZXMgPSBtYXNrZXIubWFzayhyYXdfcGF5bG9hZF9ieXRlcykKLQotICAgIGlmIGxvZ2dlci5pc0Vu
YWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgotICAgICAgICBsb2dnZXIubG9nKAotICAg
ICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAnRG9uZSB1bm1hc2tp
bmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAotICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgg
LyAodGltZS50aW1lKCkgLSB1bm1hc2tfc3RhcnQpIC8gMTAwMCAvIDEwMDApCi0KLSAgICByZXR1
cm4gb3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzCi0KLQotY2xh
c3MgRnJhZ21lbnRlZEZyYW1lQnVpbGRlcihvYmplY3QpOgotICAgICIiIkEgc3RhdGVmdWwgY2xh
c3MgdG8gc2VuZCBhIG1lc3NhZ2UgYXMgZnJhZ21lbnRzLiIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIG1hc2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgotICAgICAg
ICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgotCi0gICAgICAgIHNlbGYuX21hc2sgPSBt
YXNrCi0gICAgICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCi0gICAgICAg
ICMgVGhpcyBpcyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0ZXh0
IHR5cGUgZnJhbWVzCi0gICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCi0gICAgICAgIHNl
bGYuX2VuY29kZV91dGY4ID0gZW5jb2RlX3V0ZjgKLQotICAgICAgICBzZWxmLl9zdGFydGVkID0g
RmFsc2UKLQotICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBtZXNz
YWdlcyB0byB2ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKLSAgICAgICAgIyBmcmFtZXMgaW4gdGhlIG1l
c3NhZ2UgYXJlIGFsbCB0aGUgc2FtZS4KLSAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9uLk9Q
Q09ERV9URVhUCi0KLSAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFy
eSk6Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24u
T1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNv
bW1vbi5PUENPREVfVEVYVAotICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgotICAgICAgICAgICAg
aWYgc2VsZi5fb3Bjb2RlICE9IGZyYW1lX3R5cGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignTWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQotICAgICAg
ICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKLSAgICAgICAgICAgIHNlbGYuX29wY29k
ZSA9IGZyYW1lX3R5cGUKLQotICAgICAgICBpZiBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9zdGFy
dGVkID0gRmFsc2UKLSAgICAgICAgICAgIGZpbiA9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuX3N0YXJ0ZWQgPSBUcnVlCi0gICAgICAgICAgICBmaW4gPSAwCi0KLSAgICAgICAg
aWYgYmluYXJ5IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKLSAgICAgICAgICAgIHJldHVybiBj
cmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgICAgICAgICAgICAgIHBheWxvYWRfZGF0YSwgb3Bjb2Rl
LCBmaW4sIHNlbGYuX21hc2ssIHNlbGYuX2ZyYW1lX2ZpbHRlcnMpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByZXR1cm4gY3JlYXRlX3RleHRfZnJhbWUoCi0gICAgICAgICAgICAgICAgcGF5
bG9hZF9kYXRhLCBvcGNvZGUsIGZpbiwgc2VsZi5fbWFzaywgc2VsZi5fZnJhbWVfZmlsdGVycykK
LQotCi1kZWYgX2NyZWF0ZV9jb250cm9sX2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVf
ZmlsdGVycyk6Ci0gICAgZnJhbWUgPSBGcmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkp
Ci0KLSAgICBmb3IgZnJhbWVfZmlsdGVyIGluIGZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgIGZyYW1l
X2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6
Ci0gICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICdQYXls
b2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNz
JykKLQotICAgIGhlYWRlciA9IGNyZWF0ZV9oZWFkZXIoCi0gICAgICAgIGZyYW1lLm9wY29kZSwg
bGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4sCi0gICAgICAgIGZyYW1lLnJzdjEsIGZyYW1l
LnJzdjIsIGZyYW1lLnJzdjMsIG1hc2spCi0gICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIs
IGZyYW1lLnBheWxvYWQsIG1hc2spCi0KLQotZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1h
c2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgotICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xf
ZnJhbWUoY29tbW9uLk9QQ09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0K
LWRlZiBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtd
KToKLSAgICByZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywg
Ym9keSwgbWFzaywgZnJhbWVfZmlsdGVycykKLQotCi1kZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJv
ZHksIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgotICAgIHJldHVybiBfY3JlYXRlX2Nv
bnRyb2xfZnJhbWUoCi0gICAgICAgIGNvbW1vbi5PUENPREVfQ0xPU0UsIGJvZHksIG1hc2ssIGZy
YW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5KGNvZGUs
IHJlYXNvbik6Ci0gICAgYm9keSA9ICcnCi0gICAgaWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAg
ICAgaWYgKGNvZGUgPiBjb21tb24uU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggb3IKLSAgICAgICAg
ICAgIGNvZGUgPCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKToKLSAgICAgICAgICAgIHJh
aXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUgaXMgb3V0IG9mIHJhbmdlJykK
LSAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgb3IK
LSAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19BQk5PUk1BTF9DTE9TVVJFIG9yCi0g
ICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfVExTX0hBTkRTSEFLRSk6Ci0gICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIHJlc2VydmVk
IHBzZXVkbyAnCi0gICAgICAgICAgICAgICAgJ2NvZGUnKQotICAgICAgICBlbmNvZGVkX3JlYXNv
biA9IHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCch
SCcsIGNvZGUpICsgZW5jb2RlZF9yZWFzb24KLSAgICByZXR1cm4gYm9keQotCi0KLWNsYXNzIFN0
cmVhbU9wdGlvbnMob2JqZWN0KToKLSAgICAiIiJIb2xkcyBvcHRpb24gdmFsdWVzIHRvIGNvbmZp
Z3VyZSBTdHJlYW0gb2JqZWN0cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgIiIiQ29uc3RydWN0cyBTdHJlYW1PcHRpb25zLiIiIgotCi0gICAgICAgICMgRmlsdGVycyBh
cHBsaWVkIHRvIGZyYW1lcy4KLSAgICAgICAgc2VsZi5vdXRnb2luZ19mcmFtZV9maWx0ZXJzID0g
W10KLSAgICAgICAgc2VsZi5pbmNvbWluZ19mcmFtZV9maWx0ZXJzID0gW10KLQotICAgICAgICAj
IEZpbHRlcnMgYXBwbGllZCB0byBtZXNzYWdlcy4gQ29udHJvbCBmcmFtZXMgYXJlIG5vdCBhZmZl
Y3RlZCBieSB0aGVtLgotICAgICAgICBzZWxmLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycyA9IFtd
Ci0gICAgICAgIHNlbGYuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KLQotICAgICAgICBz
ZWxmLmVuY29kZV90ZXh0X21lc3NhZ2VfdG9fdXRmOCA9IFRydWUKLSAgICAgICAgc2VsZi5tYXNr
X3NlbmQgPSBGYWxzZQotICAgICAgICBzZWxmLnVubWFza19yZWNlaXZlID0gVHJ1ZQotCi0KLWNs
YXNzIFN0cmVhbShTdHJlYW1CYXNlKToKLSAgICAiIiJBIGNsYXNzIGZvciBwYXJzaW5nL2J1aWxk
aW5nIGZyYW1lcyBvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sCi0gICAgKFJGQyA2NDU1KS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvcHRpb25zKToKLSAgICAg
ICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBT
dHJlYW1CYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gRmFs
c2UKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IEZhbHNlCi0KLSAg
ICAgICAgIyBIb2xkcyBib2R5IG9mIHJlY2VpdmVkIGZyYWdtZW50cy4KLSAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KLSAgICAgICAgIyBIb2xkcyB0aGUgb3Bjb2RlIG9mIHRo
ZSBmaXJzdCBmcmFnbWVudC4KLSAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gTm9uZQot
Ci0gICAgICAgIHNlbGYuX3dyaXRlciA9IEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIoCi0gICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwgc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFt
ZV9maWx0ZXJzLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdl
X3RvX3V0ZjgpCi0KLSAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGRlcXVlKCkKLQotICAgIGRl
ZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgYSBmcmFtZSBhbmQg
cmV0dXJuIGRhdGEgaW4gdGhlIGZyYW1lIGFzIGEgdHVwbGUgY29udGFpbmluZwotICAgICAgICBl
YWNoIGhlYWRlciBmaWVsZCBhbmQgcGF5bG9hZCBzZXBhcmF0ZWx5LgotCi0gICAgICAgIFJhaXNl
czoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQg
cmV0dXJucyBlbXB0eQotICAgICAgICAgICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEludmFs
aWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgot
ICAgICAgICAiIiIKLQotICAgICAgICBkZWYgX3JlY2VpdmVfYnl0ZXMobGVuZ3RoKToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQotCi0gICAgICAgIHJldHVy
biBwYXJzZV9mcmFtZShyZWNlaXZlX2J5dGVzPV9yZWNlaXZlX2J5dGVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZ2VyPXNlbGYuX2xvZ2dlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdzX3ZlcnNpb249c2VsZi5fcmVxdWVzdC53c192ZXJzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5tYXNrX3JlY2VpdmU9c2VsZi5fb3B0aW9ucy51bm1hc2tfcmVjZWl2
ZSkKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3Qoc2VsZik6Ci0gICAg
ICAgIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IHNlbGYu
X3JlY2VpdmVfZnJhbWUoKQotCi0gICAgICAgIHJldHVybiBGcmFtZShmaW49ZmluLCByc3YxPXJz
djEsIHJzdjI9cnN2MiwgcnN2Mz1yc3YzLAotICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPW9w
Y29kZSwgcGF5bG9hZD11bm1hc2tlZF9ieXRlcykKLQotICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVk
X2ZyYW1lKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZy
YW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVycy4KLSAgICAgICAgVGhlIGZyYW1lIHRvIGJl
IHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAgICAgICAgLSBU
aGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCi0gICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUg
ZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCi0KLSAgICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhv
ZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZnJh
bWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCi0gICAgICAgIGlmIG5v
dCBmcmFtZS5maW46Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlh
ICcKLSAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKLSAgICAgICAg
aWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RFX1RFWFQgYW5kCi0gICAgICAgICAgICBm
cmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9CSU5BUlkpOgotICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdDb250cm9sIGZyYW1lcyBt
dXN0IG5vdCBiZSByZWNlaXZlZCB2aWEgJwotICAgICAgICAgICAgICAgICdyZWNlaXZlX2ZpbHRl
cmVkX2ZyYW1lKCknKQotCi0gICAgICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9u
cy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgotICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRl
cihmcmFtZSkKLSAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5j
b21pbmdfbWVzc2FnZV9maWx0ZXJzOgotICAgICAgICAgICAgZnJhbWUucGF5bG9hZCA9IG1lc3Nh
Z2VfZmlsdGVyLmZpbHRlcihmcmFtZS5wYXlsb2FkKQotICAgICAgICByZXR1cm4gZnJhbWUKLQot
ICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1GYWxz
ZSk6Ci0gICAgICAgICIiIlNlbmQgbWVzc2FnZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgbWVzc2FnZTogdGV4dCBpbiB1bmljb2RlIG9yIGJpbmFyeSBpbiBzdHIgdG8gc2VuZC4KLSAg
ICAgICAgICAgIGJpbmFyeTogc2VuZCBtZXNzYWdlIGFzIGJpbmFyeSBmcmFtZS4KLQotICAgICAg
ICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2FsbGVk
IG9uIGEgc2VydmVyLXRlcm1pbmF0ZWQKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uIG9yIGNh
bGxlZCB3aXRoIGluY29uc2lzdGVudCBtZXNzYWdlIHR5cGUgb3IKLSAgICAgICAgICAgICAgICBi
aW5hcnkgcGFyYW1ldGVyLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRp
bmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGlmIGJpbmFyeSBhbmQgaXNp
bnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZyYW1lIG11
c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4g
c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBtZXNz
YWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIg
dG8gbGltaXQgbWF4aW11bSBzaXplIG9mIGRhdGEgaW4KLSAgICAgICAgICAgICMgcGF5bG9hZCBk
YXRhIG9mIGVhY2ggZnJhbWUuCi0gICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAt
MQotCi0gICAgICAgICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKLSAgICAgICAg
ICAgICAgICBzZWxmLl93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5h
cnkpKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBieXRlc193cml0dGVu
ID0gMAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBlbmRfZm9yX3Ro
aXNfZnJhbWUgPSBlbmQKLSAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNz
YWdlKSAtIGJ5dGVzX3dyaXR0ZW4KLSAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFU
QV9TSVpFID4gMCBhbmQKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPiBNQVhf
UEFZTE9BRF9EQVRBX1NJWkUpOgotICAgICAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNfZnJh
bWUgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IE1BWF9QQVlM
T0FEX0RBVEFfU0laRQotCi0gICAgICAgICAgICAgICAgZnJhbWUgPSBzZWxmLl93cml0ZXIuYnVp
bGQoCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VbYnl0ZXNfd3JpdHRlbjpieXRlc193cml0
dGVuICsgYnl0ZXNfdG9fd3JpdGVdLAotICAgICAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNf
ZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgIGJpbmFyeSkKLSAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShmcmFtZSkKLQotICAgICAgICAgICAgICAgIGJ5dGVzX3dyaXR0ZW4gKz0gYnl0ZXNf
dG9fd3JpdGUKLQotICAgICAgICAgICAgICAgICMgVGhpcyBpZiBtdXN0IGJlIHBsYWNlZCBoZXJl
ICh0aGUgZW5kIG9mIHdoaWxlIGJsb2NrKSBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBhdCBs
ZWFzdCBvbmUgZnJhbWUgaXMgc2VudC4KLSAgICAgICAgICAgICAgICBpZiBsZW4obWVzc2FnZSkg
PD0gYnl0ZXNfd3JpdHRlbjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhj
ZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRp
b24oZSkKLQotICAgIGRlZiBfZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6Ci0g
ICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZyb20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNv
bXBvc2VkIG9mIGZyYWdtZW50ZWQKLSAgICAgICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90
IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUsIHRoaXMgbWV0aG9kCi0gICAgICAgIHJldHVybnMg
Tm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0Ci0g
ICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMgcGFzc2VkIHRvIHRoaXMgbWV0aG9kLgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUg
ZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdtZW50YXRpb24KLSAgICAgICAgICAgICAgICBjb250
ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgotICAgICAgICAiIiIKLQot
ICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0g
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgotICAgICAgICAgICAg
ICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1l
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRp
b24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgJ25v
dCBzdGFydGVkJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVj
ZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1lIGJ1dCAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRlZCcpCi0KLSAgICAgICAgICAgIGlmIGZyYW1lLmZp
bjoKLSAgICAgICAgICAgICAgICAjIEVuZCBvZiBmcmFnbWVudGF0aW9uIGZyYW1lCi0gICAgICAg
ICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJy5qb2luKHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50
cykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMgPSBbXQotICAgICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRf
ZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLl9yZWNlaXZlZF9mcmFnbWVu
dHM6Ci0gICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVj
ZWl2ZWQgYW4gdW5mcmFnbWVudGVkIGZyYW1lIHdpdGhvdXQgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlcm1pbmF0aW5nIGV4aXN0aW5nIGZyYWdtZW50YXRpb24nKQotICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICdOZXcgZnJhZ21lbnRhdGlvbiBzdGFydGVkIHdp
dGhvdXQgdGVybWluYXRpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nIGZy
YWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBpZiBmcmFtZS5maW46Ci0gICAgICAgICAgICAg
ICAgIyBVbmZyYWdtZW50ZWQgZnJhbWUKLQotICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZS5wYXls
b2FkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZnJhZ21l
bnRhdGlvbiBmcmFtZQotCi0gICAgICAgICAgICAgICAgaWYgY29tbW9uLmlzX2NvbnRyb2xfb3Bj
b2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFt
ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9sIGZyYW1lcyBtdXN0
IG5vdCBiZSBmcmFnbWVudGVkJykKLQotICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX29w
Y29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdt
ZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
Ci0gICAgZGVmIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAg
ICIiIlByb2Nlc3NlcyBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBtZXNzYWdlOiBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAg
IEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgbWVzc2FnZSBpcyBpbnZhbGlkLgotICAg
ICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gVHJ1
ZQotCi0gICAgICAgICMgU3RhdHVzIGNvZGUgaXMgb3B0aW9uYWwuIFdlIGNhbiBoYXZlIHN0YXR1
cyByZWFzb24gb25seSBpZiB3ZQotICAgICAgICAjIGhhdmUgc3RhdHVzIGNvZGUuIFN0YXR1cyBy
ZWFzb24gY2FuIGJlIGVtcHR5IHN0cmluZy4gU28sCi0gICAgICAgICMgYWxsb3dlZCBjYXNlcyBh
cmUKLSAgICAgICAgIyAtIG5vIGFwcGxpY2F0aW9uIGRhdGE6IG5vIGNvZGUgbm8gcmVhc29uCi0g
ICAgICAgICMgLSAyIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGhhcyBjb2RlIGJ1dCBubyBy
ZWFzb24KLSAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRhOiBi
b3RoIGNvZGUgYW5kIHJlYXNvbgotICAgICAgICBpZiBsZW4obWVzc2FnZSkgPT0gMDoKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJhbWUgKGVtcHR5IGJv
ZHkpJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSA9ICgKLSAgICAg
ICAgICAgICAgICBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCkKLSAgICAgICAgZWxp
ZiBsZW4obWVzc2FnZSkgPT0gMToKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnSWYgYSBjbG9zZSBmcmFtZSBoYXMgc3RhdHVzIGNvZGUs
IHRoZSBsZW5ndGggb2YgJwotICAgICAgICAgICAgICAgICdzdGF0dXMgY29kZSBtdXN0IGJlIDIg
b2N0ZXQnKQotICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAyOgotICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gc3RydWN0LnVucGFjaygKLSAgICAgICAgICAgICAg
ICAnIUgnLCBtZXNzYWdlWzA6Ml0pWzBdCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Ns
b3NlX3JlYXNvbiA9IG1lc3NhZ2VbMjpdLmRlY29kZSgKLSAgICAgICAgICAgICAgICAndXRmLTgn
LCAncmVwbGFjZScpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAgICAgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChjb2RlPSVkLCByZWFzb249JXIpJywKLSAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUsCi0gICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24pCi0KLSAgICAgICAgIyBBcyB3ZSd2ZSByZWNl
aXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRhdGEgaXMgY29taW5nIG92ZXIgdGhlCi0gICAg
ICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVseSBjbG9zZSB0aGUgc29ja2V0IHdpdGhvdXQg
d29ycnlpbmcgYWJvdXQKLSAgICAgICAgIyBSU1Qgc2VuZGluZy4KLQotICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9yIHNlcnZlci1pbml0aWF0ZWQg
Y2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9D
TE9TVVJFCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcmVx
dWVzdCwgJ19kaXNwYXRjaGVyJyk6Ci0gICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fcmVx
dWVzdC5fZGlzcGF0Y2hlcgotICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qp
Ci0gICAgICAgICAgICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQg
bGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAot
ICAgICAgICAgICAgICAgICAgICAnSGFuZGxlciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29k
ZSBiZWluZyBOb25lJykKLSAgICAgICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICAgICAg
aWYgcmVhc29uIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVhc29uID0gJycKLSAgICAgICAg
c2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24pCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hh
a2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcKLSAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29u
PSVyKScsIGNvZGUsIHJlYXNvbikKLQotICAgIGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBpbmcgbWVzc2FnZS4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25f
cGluZ19oYW5kbGVyCi0gICAgICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhh
bmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yLCBlOgotICAgICAgICAgICAgcGFzcwotICAgICAg
ICBzZWxmLl9zZW5kX3BvbmcobWVzc2FnZSkKLQotICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBvbmcgbWVzc2FnZS4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5k
bGluZy4KLQotICAgICAgICBpbmZsaWdodF9waW5ncyA9IGRlcXVlKCkKLQotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkg
PSBzZWxmLl9waW5nX3F1ZXVlLnBvcGxlZnQoKQotICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVk
X2JvZHkgPT0gbWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBj
b250YWlucyBwaW5ncyBpZ25vcmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAjIG90aGVy
IHBlZXIuIEp1c3QgZm9yZ2V0IHRoZW0uCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgICAgICdQaW5nICVyIGlzIGFja2VkICglZCBw
aW5ncyB3ZXJlIGlnbm9yZWQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Jv
ZHksIGxlbihpbmZsaWdodF9waW5ncykpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBw
ZW5kKGV4cGVjdGVkX2JvZHkpCi0gICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvciwgZToKLSAg
ICAgICAgICAgICAgICAjIFRoZSByZWNlaXZlZCBwb25nIHdhcyB1bnNvbGljaXRlZCBwb25nLiBL
ZWVwIHRoZQotICAgICAgICAgICAgICAgICMgcGluZyBxdWV1ZSBhcyBpcy4KLSAgICAgICAgICAg
ICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRfcGluZ3MKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgdW5zb2xpY2l0ZWQgcG9uZycpCi0gICAgICAg
ICAgICAgICAgYnJlYWsKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gc2Vs
Zi5fcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIKLSAgICAgICAgICAgIGlmIGhhbmRsZXI6Ci0gICAg
ICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQotICAgICAgICBleGNl
cHQgQXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgcmVjZWl2
ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1lIGFu
ZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCi0gICAgICAgIHVuaWNvZGUgb3IgYSBi
aW5hcnkgaW4gc3RyLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBwYXlsb2FkIGRh
dGEgb2YgdGhlIGZyYW1lCi0gICAgICAgICAgICAtIGFzIHVuaWNvZGUgaW5zdGFuY2UgaWYgcmVj
ZWl2ZWQgdGV4dCBmcmFtZQotICAgICAgICAgICAgLSBhcyBzdHIgaW5zdGFuY2UgaWYgcmVjZWl2
ZWQgYmluYXJ5IGZyYW1lCi0gICAgICAgICAgICBvciBOb25lIGlmZiByZWNlaXZlZCBjbG9zaW5n
IGhhbmRzaGFrZS4KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJtaW5hdGVkCi0gICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
OiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAgICAgICAgICAgIHN0cmluZy4KLSAgICAg
ICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29udGFpbnMgaW52
YWxpZAotICAgICAgICAgICAgICAgIGRhdGEuCi0gICAgICAgICAgICBVbnN1cHBvcnRlZEZyYW1l
RXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBoYXMKLSAgICAgICAgICAgICAgICBm
bGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBjYW4gaWdub3JlIHRoaXMKLSAgICAg
ICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJlY2VpdmluZyB0aGUgbmV4dCBmcmFt
ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWlu
YXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBhZnRlciByZWNlaXZpbmcgYSBjbG9z
aW5nICcKLSAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLQotICAgICAgICB3aGlsZSBUcnVl
OgotICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBibG9jayBpZiBubyBieXRlcyBhcmUg
YXZhaWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91
dCBkaXJlY3RpdmUgb2YgQXBhY2hlLgotCi0gICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3JlY2Vp
dmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLQotICAgICAgICAgICAgIyBDaGVjayB0aGUgY29u
c3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9sIGZyYW1lcwotICAgICAgICAg
ICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJhbWUuCi0gICAgICAgICAgICAj
IFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjUK
LSAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSBh
bmQKLSAgICAgICAgICAgICAgICBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjUpOgotICAgICAgICAg
ICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
J1BheWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9y
ICcKLSAgICAgICAgICAgICAgICAgICAgJ2xlc3MnKQotCi0gICAgICAgICAgICBmb3IgZnJhbWVf
ZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKLSAgICAgICAg
ICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgICAgICAgICBpZiBmcmFt
ZS5yc3YxIG9yIGZyYW1lLnJzdjIgb3IgZnJhbWUucnN2MzoKLSAgICAgICAgICAgICAgICByYWlz
ZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnVW5zdXBw
b3J0ZWQgZmxhZyBpcyBzZXQgKHJzdiA9ICVkJWQlZCknICUKLSAgICAgICAgICAgICAgICAgICAg
KGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJzdjMpKQotCi0gICAgICAgICAgICBtZXNz
YWdlID0gc2VsZi5fZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShmcmFtZSkKLSAgICAgICAgICAgIGlm
IG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAg
ICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19tZXNzYWdlX2Zp
bHRlcnM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlciht
ZXNzYWdlKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9u
Lk9QQ09ERV9URVhUOgotICAgICAgICAgICAgICAgICMgVGhlIFdlYlNvY2tldCBwcm90b2NvbCBz
ZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlkCi0gICAgICAgICAgICAgICAgIyBjaGFy
YWN0ZXJzIG11c3QgYmUgcmVwbGFjZWQgd2l0aCBVK2ZmZmQgUkVQTEFDRU1FTlQKLSAgICAgICAg
ICAgICAgICAjIENIQVJBQ1RFUi4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtZXNzYWdlLmRlY29kZSgndXRmLTgnKQotICAgICAgICAgICAgICAgIGV4
Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRVVEY4RXhjZXB0aW9uKGUpCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29w
Y29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICByZXR1cm4gbWVz
c2FnZQotICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9Q
Q09ERV9DTE9TRToKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uo
bWVzc2FnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgZWxpZiBz
ZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9QSU5HOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICBlbGlm
IHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BPTkc6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgJ09wY29kZSAlZCBpcyBub3Qgc3VwcG9ydGVkJyAlIHNlbGYuX29y
aWdpbmFsX29wY29kZSkKLQotICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBj
b2RlLCByZWFzb24pOgotICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2Jv
ZHkoY29kZSwgcmVhc29uKQotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKLSAg
ICAgICAgICAgIGJvZHksIG1hc2s9c2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCi0gICAgICAgICAg
ICBmcmFtZV9maWx0ZXJzPXNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLQot
ICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgICAg
IHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgZGVmIGNsb3NlX2Nvbm5lY3Rpb24oc2VsZiwgY29k
ZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgd2FpdF9yZXNwb25zZT1UcnVlKToKLSAgICAgICAgIiIiQ2xvc2VzIGEgV2Vi
U29ja2V0IGNvbm5lY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGNvZGU6IFN0
YXR1cyBjb2RlIGZvciBjbG9zZSBmcmFtZS4gSWYgY29kZSBpcyBOb25lLCBhIGNsb3NlCi0gICAg
ICAgICAgICAgICAgZnJhbWUgd2l0aCBlbXB0eSBib2R5IHdpbGwgYmUgc2VudC4KLSAgICAgICAg
ICAgIHJlYXNvbjogc3RyaW5nIHJlcHJlc2VudGluZyBjbG9zZSByZWFzb24uCi0gICAgICAgICAg
ICB3YWl0X3Jlc3BvbnNlOiBUcnVlIHdoZW4gY2FsbGVyIHdhbnQgdG8gd2FpdCB0aGUgcmVzcG9u
c2UuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjog
d2hlbiByZWFzb24gaXMgc3BlY2lmaWVkIHdpdGggY29kZSBOb25lCi0gICAgICAgICAgICBvciBy
ZWFzb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGJvdGggc3RyIGFuZCB1bmljb2RlLgotICAgICAg
ICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQg
Y2xvc2VfY29ubmVjdGlvbiBidXQgc2VydmVyIGlzIGFscmVhZHkgdGVybWluYXRlZCcpCi0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBp
ZiByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKLSAgICAgICAgICAgICAg
ICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdjbG9z
ZSByZWFzb24gbXVzdCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCi0gICAgICAg
ICAgICByZWFzb24gPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UocmVhc29uLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5jZShyZWFzb24sIHVuaWNvZGUpOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvciB1bmlj
b2RlJykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNv
bikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0luaXRpYXRlZCBj
bG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCi0gICAgICAgICAgICBjb2Rl
LCByZWFzb24pCi0KLSAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19HT0lOR19BV0FZ
IG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfUFJPVE9DT0xfRVJST1IpIG9y
IG5vdCB3YWl0X3Jlc3BvbnNlOgotICAgICAgICAgICAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBpZiB0aGUgcmVhc29uIGlzCi0gICAgICAgICAgICAj
IHByb3RvY29sIGVycm9yIG9yIHRoYXQgdGhlIHNlcnZlciBpcyBnb2luZyBhd2F5LiBGb3Igc29t
ZSBvZgotICAgICAgICAgICAgIyBvdGhlciByZWFzb25zLCBpdCBtaWdodCBub3QgbWFrZSBzZW5z
ZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lLAotICAgICAgICAgICAgIyBidXQgaXQncyBub3Qg
Y2xlYXIsIHlldC4KLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgVE9ETyh1a2FpKTog
Mi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJtaW5hdGVkLyBmbGFnIGhhcyBiZWVuIHNldCwK
LSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1kZWZpbmVkIHRpbWVvdXQgZXhwaXJlcy4KLSAg
ICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdlIGV4cGVjdCByZWNlaXZpbmcgY2xvc2luZyBo
YW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwotICAgICAgICAjIG91dCBjbG9zaW5nIGhhbmRz
aGFrZS4KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAg
aWYgbWVzc2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJt
aW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdEaWRuXCd0IHJlY2VpdmUgdmFsaWQg
YWNrIGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgICMgVE9ETzogMy4gY2xvc2UgdGhl
IFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICAjIG5vdGU6IG1vZF9weXRob24gQ29ubmVj
dGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4KLQotICAgIGRlZiBzZW5k
X3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGZyYW1lID0gY3JlYXRlX3BpbmdfZnJhbWUo
Ci0gICAgICAgICAgICBib2R5LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQs
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCi0gICAg
ICAgIHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5k
KGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgZnJhbWUg
PSBjcmVhdGVfcG9uZ19mcmFtZSgKLSAgICAgICAgICAgIGJvZHksCi0gICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3V0Z29pbmdf
ZnJhbWVfZmlsdGVycykKLSAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYgZ2V0
X2xhc3RfcmVjZWl2ZWRfb3Bjb2RlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBvcGNv
ZGUgb2YgdGhlIFdlYlNvY2tldCBtZXNzYWdlIHdoaWNoIHRoZSBsYXN0IHJlY2VpdmVkCi0gICAg
ICAgIGZyYW1lIGJlbG9uZ3MgdG8uIFRoZSByZXR1cm4gdmFsdWUgaXMgdmFsaWQgaWZmIGltbWVk
aWF0ZWx5IGFmdGVyCi0gICAgICAgIHJlY2VpdmVfbWVzc2FnZSBjYWxsLgotICAgICAgICAiIiIK
LQotICAgICAgICByZXR1cm4gc2VsZi5fb3JpZ2luYWxfb3Bjb2RlCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmZjMmVhZDY0ODFiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBACi0jIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgbXVzdCBub3QgZGVwZW5kIG9uIGFueSBtb2R1
bGUgc3BlY2lmaWMgdG8gdGhlIFdlYlNvY2tldCBwcm90b2NvbC4KLSIiIgotCi0KLWZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotIyBBZGRpdGlvbmFsIGxv
ZyBsZXZlbCBkZWZpbml0aW9ucy4KLUxPR0xFVkVMX0ZJTkUgPSA5Ci0KLSMgQ29uc3RhbnRzIGlu
ZGljYXRpbmcgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24uCi1WRVJTSU9OX0hJWElFNzUgPSAt
MQotVkVSU0lPTl9IWUJJMDAgPSAwCi1WRVJTSU9OX0hZQkkwMSA9IDEKLVZFUlNJT05fSFlCSTAy
ID0gMgotVkVSU0lPTl9IWUJJMDMgPSAyCi1WRVJTSU9OX0hZQkkwNCA9IDQKLVZFUlNJT05fSFlC
STA1ID0gNQotVkVSU0lPTl9IWUJJMDYgPSA2Ci1WRVJTSU9OX0hZQkkwNyA9IDcKLVZFUlNJT05f
SFlCSTA4ID0gOAotVkVSU0lPTl9IWUJJMDkgPSA4Ci1WRVJTSU9OX0hZQkkxMCA9IDgKLVZFUlNJ
T05fSFlCSTExID0gOAotVkVSU0lPTl9IWUJJMTIgPSA4Ci1WRVJTSU9OX0hZQkkxMyA9IDEzCi1W
RVJTSU9OX0hZQkkxNCA9IDEzCi1WRVJTSU9OX0hZQkkxNSA9IDEzCi1WRVJTSU9OX0hZQkkxNiA9
IDEzCi1WRVJTSU9OX0hZQkkxNyA9IDEzCi0KLSMgQ29uc3RhbnRzIGluZGljYXRpbmcgV2ViU29j
a2V0IHByb3RvY29sIGxhdGVzdCB2ZXJzaW9uLgotVkVSU0lPTl9IWUJJX0xBVEVTVCA9IFZFUlNJ
T05fSFlCSTEzCi0KLSMgUG9ydCBudW1iZXJzCi1ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCA9IDgw
Ci1ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0NDMKLQotIyBTY2hlbWVzCi1XRUJf
U09DS0VUX1NDSEVNRSA9ICd3cycKLVdFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSA9ICd3c3MnCi0K
LSMgRnJhbWUgb3Bjb2RlcyBkZWZpbmVkIGluIHRoZSBzcGVjLgotT1BDT0RFX0NPTlRJTlVBVElP
TiA9IDB4MAotT1BDT0RFX1RFWFQgPSAweDEKLU9QQ09ERV9CSU5BUlkgPSAweDIKLU9QQ09ERV9D
TE9TRSA9IDB4OAotT1BDT0RFX1BJTkcgPSAweDkKLU9QQ09ERV9QT05HID0gMHhhCi0KLSMgVVVJ
RHMgdXNlZCBieSBIeUJpIDA0IGFuZCBsYXRlciBvcGVuaW5nIGhhbmRzaGFrZSBhbmQgZnJhbWUg
bWFza2luZy4KLVdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9ICcyNThFQUZBNS1FOTE0LTQ3REEtOTVD
QS1DNUFCMERDODVCMTEnCi0KLSMgT3BlbmluZyBoYW5kc2hha2UgaGVhZGVyIG5hbWVzIGFuZCBl
eHBlY3RlZCB2YWx1ZXMuCi1VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlJwotV0VCU09DS0VUX1VQ
R1JBREVfVFlQRSA9ICd3ZWJzb2NrZXQnCi1XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUg
PSAnV2ViU29ja2V0JwotQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbicKLVVQR1JBREVf
Q09OTkVDVElPTl9UWVBFID0gJ1VwZ3JhZGUnCi1IT1NUX0hFQURFUiA9ICdIb3N0JwotT1JJR0lO
X0hFQURFUiA9ICdPcmlnaW4nCi1TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIgPSAnU2VjLVdl
YlNvY2tldC1PcmlnaW4nCi1TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIgPSAnU2VjLVdlYlNvY2tl
dC1LZXknCi1TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1BY2Nl
cHQnCi1TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtVmVyc2lv
bicKLVNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtUHJvdG9j
b2wnCi1TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9ucycKLVNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtRHJh
ZnQnCi1TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5MScKLVNF
Q19XRUJTT0NLRVRfS0VZMl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1LZXkyJwotU0VDX1dFQlNP
Q0tFVF9MT0NBVElPTl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbicKLQotIyBFeHRl
bnNpb25zCi1ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICdkZWZsYXRlLWZyYW1lJwotUEVSTUVT
U0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1jb21wcmVzcycKLVBFUk1F
U1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZsYXRlJwotWF9XRUJLSVRf
REVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAneC13ZWJraXQtZGVmbGF0ZS1mcmFtZScKLVhfV0VC
S0lUX1BFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3gtd2Via2l0LXBlcm1lc3Nh
Z2UtY29tcHJlc3MnCi1NVVhfRVhURU5TSU9OID0gJ211eF9ET19OT1RfVVNFJwotCi0jIFN0YXR1
cyBjb2RlcwotIyBDb2RlIFNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQsIFNUQVRVU19BQk5PUk1B
TF9DTE9TVVJFLCBhbmQKLSMgU1RBVFVTX1RMU19IQU5EU0hBS0UgYXJlIHBzZXVkbyBjb2RlcyB0
byBpbmRpY2F0ZSBzcGVjaWZpYyBlcnJvciBjYXNlcy4KLSMgQ291bGQgbm90IGJlIHVzZWQgZm9y
IGNvZGVzIGluIGFjdHVhbCBjbG9zaW5nIGZyYW1lcy4KLSMgQXBwbGljYXRpb24gbGV2ZWwgZXJy
b3JzIG11c3QgdXNlIGNvZGVzIGluIHRoZSByYW5nZQotIyBTVEFUVVNfVVNFUl9SRUdJU1RFUkVE
X0JBU0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguIFRoZSBjb2RlcyBpbiB0aGUKLSMgcmFu
Z2UgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFIHRvIFNUQVRVU19VU0VSX1JFR0lTVEVSRURf
TUFYIGFyZSBtYW5hZ2VkCi0jIGJ5IElBTkEuIFVzdWFsbHkgYXBwbGljYXRpb24gbXVzdCBkZWZp
bmUgdXNlciBwcm90b2NvbCBsZXZlbCBlcnJvcnMgaW4gdGhlCi0jIHJhbmdlIFNUQVRVU19VU0VS
X1BSSVZBVEVfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01BWC4KLVNUQVRVU19OT1JNQUxf
Q0xPU1VSRSA9IDEwMDAKLVNUQVRVU19HT0lOR19BV0FZID0gMTAwMQotU1RBVFVTX1BST1RPQ09M
X0VSUk9SID0gMTAwMgotU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEgPSAxMDAzCi1TVEFUVVNfTk9f
U1RBVFVTX1JFQ0VJVkVEID0gMTAwNQotU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgPSAxMDA2Ci1T
VEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEgPSAxMDA3Ci1TVEFUVVNfUE9MSUNZX1ZJ
T0xBVElPTiA9IDEwMDgKLVNUQVRVU19NRVNTQUdFX1RPT19CSUcgPSAxMDA5Ci1TVEFUVVNfTUFO
REFUT1JZX0VYVEVOU0lPTiA9IDEwMTAKLVNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiA9
IDEwMTEKLVNUQVRVU19UTFNfSEFORFNIQUtFID0gMTAxNQotU1RBVFVTX1VTRVJfUkVHSVNURVJF
RF9CQVNFID0gMzAwMAotU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9NQVggPSAzOTk5Ci1TVEFUVVNf
VVNFUl9QUklWQVRFX0JBU0UgPSA0MDAwCi1TVEFUVVNfVVNFUl9QUklWQVRFX01BWCA9IDQ5OTkK
LSMgRm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBhbGlhc2VzIHRvIGtlZXAgY29tcGF0aWJpbGl0
eS4gQXBwbGljYXRpb25zIG11c3QKLSMgbm90IHVzZSB0aGVzZSBvYnNvbGV0ZWQgZGVmaW5pdGlv
bnMgYW55bW9yZS4KLVNUQVRVU19OT1JNQUwgPSBTVEFUVVNfTk9STUFMX0NMT1NVUkUKLVNUQVRV
U19VTlNVUFBPUlRFRCA9IFNUQVRVU19VTlNVUFBPUlRFRF9EQVRBCi1TVEFUVVNfQ09ERV9OT1Rf
QVZBSUxBQkxFID0gU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAotU1RBVFVTX0FCTk9STUFMX0NM
T1NFID0gU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUKLVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxP
QUQgPSBTVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEKLVNUQVRVU19NQU5EQVRPUllf
RVhUID0gU1RBVFVTX01BTkRBVE9SWV9FWFRFTlNJT04KLQotIyBIVFRQIHN0YXR1cyBjb2Rlcwot
SFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QgPSA0MDAKLUhUVFBfU1RBVFVTX0ZPUkJJRERFTiA9IDQw
MwotSFRUUF9TVEFUVVNfTk9UX0ZPVU5EID0gNDA0Ci0KLQotZGVmIGlzX2NvbnRyb2xfb3Bjb2Rl
KG9wY29kZSk6Ci0gICAgcmV0dXJuIChvcGNvZGUgPj4gMykgPT0gMQotCi0KLWNsYXNzIEV4dGVu
c2lvblBhcmFtZXRlcihvYmplY3QpOgotICAgICIiIkhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGFu
IGV4dGVuc2lvbiB3aGljaCBpcyBleGNoYW5nZWQgb24gZXh0ZW5zaW9uCi0gICAgbmVnb3RpYXRp
b24gaW4gb3BlbmluZyBoYW5kc2hha2UuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgICMgVE9ETyh0eW9z
aGlubyk6IENoYW5nZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gbW9yZSBlZmZpY2llbnQgb25lIHN1
Y2gKLSAgICAgICAgIyBhcyBkaWN0IHdoZW4gdGhlIHNwZWMgY2hhbmdlcyB0byBzYXkgbGlrZQot
ICAgICAgICAjIC0gUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgdW5pcXVlCi0gICAgICAgICMgLSBU
aGUgb3JkZXIgb2YgcGFyYW1ldGVycyBpcyBub3Qgc2lnbmlmaWNhbnQKLSAgICAgICAgc2VsZi5f
cGFyYW1ldGVycyA9IFtdCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX25hbWUKLQotICAgIGRlZiBhZGRfcGFyYW1ldGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAg
ICAgICAgc2VsZi5fcGFyYW1ldGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKLQotICAgIGRlZiBn
ZXRfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKLQot
ICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gW25hbWUg
Zm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQotCi0gICAgZGVmIGhh
c19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92
YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzOgotICAgICAgICAgICAgaWYgcGFyYW1fbmFtZSA9PSBu
YW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZGVmIGdldF9wYXJhbWV0ZXJfdmFsdWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZvciBw
YXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzOgotICAgICAgICAgICAg
aWYgcGFyYW1fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbV92YWx1
ZQotCi0KLWNsYXNzIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHN1cGVyKEV4dGVuc2lvblBhcnNpbmdF
eGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCi0KLQotZGVmIF9wYXJzZV9leHRlbnNpb25f
cGFyYW0oc3RhdGUsIGRlZmluaXRpb24pOgotICAgIHBhcmFtX25hbWUgPSBodHRwX2hlYWRlcl91
dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICBpZiBwYXJhbV9uYW1lIGlzIE5vbmU6Ci0g
ICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oJ05vIHZhbGlkIHBhcmFtZXRl
ciBuYW1lIGZvdW5kJykKLQotICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0
ZSkKLQotICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAn
PScpOgotICAgICAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0ZXIocGFyYW1fbmFtZSwgTm9uZSkK
LSAgICAgICAgcmV0dXJuCi0KLSAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3Rh
dGUpCi0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgY29kZSB0byB2YWxpZGF0ZSB0aGF0IHBh
cnNlZCBwYXJhbV92YWx1ZSBpcyB0b2tlbgotICAgIHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFkZXJf
dXRpbC5jb25zdW1lX3Rva2VuX29yX3F1b3RlZF9zdHJpbmcoc3RhdGUpCi0gICAgaWYgcGFyYW1f
dmFsdWUgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigK
LSAgICAgICAgICAgICdObyB2YWxpZCBwYXJhbWV0ZXIgdmFsdWUgZm91bmQgb24gdGhlIHJpZ2h0
LWhhbmQgc2lkZSBvZiAnCi0gICAgICAgICAgICAncGFyYW1ldGVyICVyJyAlIHBhcmFtX25hbWUp
Ci0KLSAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0ZXIocGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUp
Ci0KLQotZGVmIF9wYXJzZV9leHRlbnNpb24oc3RhdGUpOgotICAgIGV4dGVuc2lvbl90b2tlbiA9
IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKLSAgICBpZiBleHRlbnNpb25f
dG9rZW4gaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGV4dGVuc2lvbiA9IEV4
dGVuc2lvblBhcmFtZXRlcihleHRlbnNpb25fdG9rZW4pCi0KLSAgICB3aGlsZSBUcnVlOgotICAg
ICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAgaWYg
bm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICc7Jyk6Ci0gICAgICAg
ICAgICBicmVhawotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0
ZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKHN0
YXRlLCBleHRlbnNpb24pCi0gICAgICAgIGV4Y2VwdCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJQotICAg
ICAgICAgICAgICAgIChleHRlbnNpb25fdG9rZW4sIGUpKQotCi0gICAgcmV0dXJuIGV4dGVuc2lv
bgotCi0KLWRlZiBwYXJzZV9leHRlbnNpb25zKGRhdGEpOgotICAgICIiIlBhcnNlcyBTZWMtV2Vi
U29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIHZhbHVlIHJldHVybnMgYSBsaXN0IG9mCi0gICAgRXh0
ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMuCi0KLSAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUgdHJp
bW1lZC4KLSAgICAiIiIKLQotICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3Rh
dGUoZGF0YSkKLQotICAgIGV4dGVuc2lvbl9saXN0ID0gW10KLSAgICB3aGlsZSBUcnVlOgotICAg
ICAgICBleHRlbnNpb24gPSBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKQotICAgICAgICBpZiBleHRl
bnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBleHRlbnNpb25fbGlzdC5hcHBlbmQoZXh0
ZW5zaW9uKQotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkK
LQotICAgICAgICBpZiBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpIGlzIE5vbmU6Ci0gICAg
ICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
c3RyaW5nKHN0YXRlLCAnLCcpOgotICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQt
RXh0ZW5zaW9ucyBoZWFkZXI6ICcKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBi
dXQgZm91bmQgJXInICUKLSAgICAgICAgICAgICAgICBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3Rh
dGUpKQotCi0gICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKLQot
ICAgIGlmIGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKLSAgICAgICAgcmFpc2UgRXh0ZW5zaW9u
UGFyc2luZ0V4Y2VwdGlvbigKLSAgICAgICAgICAgICdObyB2YWxpZCBleHRlbnNpb24gZW50cnkg
Zm91bmQnKQotCi0gICAgcmV0dXJuIGV4dGVuc2lvbl9saXN0Ci0KLQotZGVmIGZvcm1hdF9leHRl
bnNpb24oZXh0ZW5zaW9uKToKLSAgICAiIiJGb3JtYXRzIGFuIEV4dGVuc2lvblBhcmFtZXRlciBv
YmplY3QuIiIiCi0KLSAgICBmb3JtYXR0ZWRfcGFyYW1zID0gW2V4dGVuc2lvbi5uYW1lKCldCi0g
ICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVy
cygpOgotICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgZm9ybWF0
dGVkX3BhcmFtcy5hcHBlbmQocGFyYW1fbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHF1b3RlZF92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFt
X3ZhbHVlKQotICAgICAgICAgICAgZm9ybWF0dGVkX3BhcmFtcy5hcHBlbmQoJyVzPSVzJyAlIChw
YXJhbV9uYW1lLCBxdW90ZWRfdmFsdWUpKQotICAgIHJldHVybiAnOyAnLmpvaW4oZm9ybWF0dGVk
X3BhcmFtcykKLQotCi1kZWYgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uX2xpc3QpOgotICAg
ICIiIkZvcm1hdHMgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgotCi0g
ICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0ID0gW10KLSAgICBmb3IgZXh0ZW5zaW9uIGluIGV4
dGVuc2lvbl9saXN0OgotICAgICAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGZv
cm1hdF9leHRlbnNpb24oZXh0ZW5zaW9uKSkKLSAgICByZXR1cm4gJywgJy5qb2luKGZvcm1hdHRl
ZF9leHRlbnNpb25fbGlzdCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9kaXNwYXRjaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjOTFlMGM5
MGU3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNo
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LSIiIkRpc3BhdGNoIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtc2d1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4Ci1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotCi0KLV9TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29tcGlsZShyJyg/aSlf
d3NoXC5weSQnKQotX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKLV9ET19FWFRSQV9IQU5EU0hB
S0VfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlJwotX1RSQU5T
RkVSX0RBVEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YScKLV9QQVNT
SVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9ICgKLSAgICAnd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlJykKLQotCi1jbGFzcyBEaXNwYXRjaEV4Y2VwdGlvbihF
eGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRjaGluZyBXZWJTb2NrZXQgcmVx
dWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9Y29tbW9uLkhU
VFBfU1RBVFVTX05PVF9GT1VORCk6Ci0gICAgICAgIHN1cGVyKERpc3BhdGNoRXhjZXB0aW9uLCBz
ZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWRl
ZiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVxdWVzdCk6Ci0g
ICAgIiIiRGVmYXVsdCB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UgaGFuZGxl
ci4iIiIKLQotICAgIHJldHVybiBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCAnJwotCi0K
LWRlZiBfbm9ybWFsaXplX3BhdGgocGF0aCk6Ci0gICAgIiIiTm9ybWFsaXplIHBhdGguCi0KLSAg
ICBBcmdzOgotICAgICAgICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUuCi0KLSAgICBQYXRo
IGlzIGNvbnZlcnRlZCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KLSAgICBUaGUgaW5wdXQgcGF0aCBj
YW4gdXNlIGVpdGhlciAnXFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgotICAgIFRoZSBub3Jt
YWxpemVkIHBhdGggYWx3YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgot
ICAgICIiIgotCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5wYXRoLnNlcCkKLSAg
ICBwYXRoID0gb3MucGF0aC5yZWFscGF0aChwYXRoKQotICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uo
J1xcJywgJy8nKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVmIF9jcmVhdGVfcGF0aF90b19yZXNv
dXJjZV9jb252ZXJ0ZXIoYmFzZV9kaXIpOgotICAgICIiIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0
IGNvbnZlcnRzIHRoZSBwYXRoIG9mIGEgV2ViU29ja2V0IGhhbmRsZXIgc291cmNlCi0gICAgZmls
ZSB0byBhIHJlc291cmNlIHN0cmluZyBieSByZW1vdmluZyB0aGUgcGF0aCB0byB0aGUgYmFzZSBk
aXJlY3RvcnkgZnJvbQotICAgIGl0cyBoZWFkLCByZW1vdmluZyBfU09VUkNFX1NVRkZJWCBmcm9t
IGl0cyB0YWlsLCBhbmQgcmVwbGFjaW5nIHBhdGgKLSAgICBzZXBhcmF0b3JzIGluIGl0IHdpdGgg
Jy8nLgotCi0gICAgQXJnczoKLSAgICAgICAgYmFzZV9kaXI6IHRoZSBwYXRoIHRvIHRoZSBiYXNl
IGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIGJhc2VfZGlyID0gX25vcm1hbGl6ZV9wYXRoKGJh
c2VfZGlyKQotCi0gICAgYmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCi0gICAgc3VmZml4X2xlbiA9
IGxlbihfU09VUkNFX1NVRkZJWCkKLQotICAgIGRlZiBjb252ZXJ0ZXIocGF0aCk6Ci0gICAgICAg
IGlmIG5vdCBwYXRoLmVuZHN3aXRoKF9TT1VSQ0VfU1VGRklYKToKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgICMgX25vcm1hbGl6ZV9wYXRoIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVz
ZSByZXNvbHZpbmcgc3ltbGluayBicmVha3MKLSAgICAgICAgIyBmb2xsb3dpbmcgcGF0aCBjaGVj
ay4KLSAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgICAgIGlmIG5v
dCBwYXRoLnN0YXJ0c3dpdGgoYmFzZV9kaXIpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgcmV0dXJuIHBhdGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCi0KLSAgICByZXR1cm4gY29u
dmVydGVyCi0KLQotZGVmIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKGRpcmVjdG9yeSk6
Ci0gICAgIiIiUmV0dXJucyBhIGdlbmVyYXRvciB0aGF0IGVudW1lcmF0ZXMgV2ViU29ja2V0IEhh
bmRsZXIgc291cmNlIGZpbGUgbmFtZXMKLSAgICBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgotICAg
ICIiIgotCi0gICAgZm9yIHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVj
dG9yeSk6Ci0gICAgICAgIGZvciBiYXNlIGluIGZpbGVzOgotICAgICAgICAgICAgcGF0aCA9IG9z
LnBhdGguam9pbihyb290LCBiYXNlKQotICAgICAgICAgICAgaWYgX1NPVVJDRV9QQVRIX1BBVFRF
Uk4uc2VhcmNoKHBhdGgpOgotICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKLQotCi1jbGFzcyBf
SGFuZGxlclN1aXRlKG9iamVjdCk6Ci0gICAgIiIiQSBoYW5kbGVyIHN1aXRlIGhvbGRlciBjbGFz
cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5z
ZmVyX2RhdGEsCi0gICAgICAgICAgICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgot
ICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQotICAg
ICAgICBzZWxmLnRyYW5zZmVyX2RhdGEgPSB0cmFuc2Zlcl9kYXRhCi0gICAgICAgIHNlbGYucGFz
c2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKLQotCi1k
ZWYgX3NvdXJjZV9oYW5kbGVyX2ZpbGUoaGFuZGxlcl9kZWZpbml0aW9uKToKLSAgICAiIiJTb3Vy
Y2UgYSBoYW5kbGVyIGRlZmluaXRpb24gc3RyaW5nLgotCi0gICAgQXJnczoKLSAgICAgICAgaGFu
ZGxlcl9kZWZpbml0aW9uOiBhIHN0cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRo
YXQgZGVmaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMu
Ci0gICAgIiIiCi0KLSAgICBnbG9iYWxfZGljID0ge30KLSAgICB0cnk6Ci0gICAgICAgIGV4ZWMg
aGFuZGxlcl9kZWZpbml0aW9uIGluIGdsb2JhbF9kaWMKLSAgICBleGNlcHQgRXhjZXB0aW9uOgot
ICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFuZGxl
cjonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5nZXRfc3RhY2tfdHJh
Y2UoKSkKLSAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCi0gICAg
dHJ5OgotICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0cmFj
dF9oYW5kbGVyKAotICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19IQU5E
U0hBS0VfSEFORExFUl9OQU1FKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHBhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKLSAgICAgICAgICAgIF9kZWZhdWx0X3Bh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKLSAgICByZXR1cm4gX0hhbmRsZXJTdWl0
ZSgKLSAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFORFNI
QUtFX0hBTkRMRVJfTkFNRSksCi0gICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2RpYywg
X1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKLSAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZV9oYW5kbGVyKQotCi0KLWRlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6Ci0g
ICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRo
ZSBnaXZlbiBkaWN0aW9uYXJ5Ci0gICAgZGljLgotICAgICIiIgotCi0gICAgaWYgbmFtZSBub3Qg
aW4gZGljOgotICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRlZmlu
ZWQuJyAlIG5hbWUpCi0gICAgaGFuZGxlciA9IGRpY1tuYW1lXQotICAgIGlmIG5vdCBjYWxsYWJs
ZShoYW5kbGVyKToKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5vdCBj
YWxsYWJsZS4nICUgbmFtZSkKLSAgICByZXR1cm4gaGFuZGxlcgotCi0KLWNsYXNzIERpc3BhdGNo
ZXIob2JqZWN0KToKLSAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KLQotICAg
IFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5kbGVy
cy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwgcm9vdF9kaXIs
IHNjYW5fZGlyPU5vbmUsCi0gICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9
VHJ1ZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgcm9vdF9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZp
bml0aW9uIGZpbGVzIGFyZQotICAgICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KLSAgICAgICAg
ICAgIHNjYW5fZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxl
cyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBh
IGRpcmVjdG9yeSB1bmRlciByb290X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRp
bmcgcm9vdF9kaXIgaXRzZWxmLiAgSWYgc2Nhbl9kaXIgaXMgTm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICByb290X2RpciBpcyB1c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNl
ZnVsCi0gICAgICAgICAgICAgICAgICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3Rf
ZGlyIGNvbnRhaW5zIG1hbnkKLSAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4K
LSAgICAgICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRs
ZXIgZmlsZXMgZXZlbiBpZiB0aGVpcgotICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBw
YXRoIGlzIG5vdCB1bmRlciByb290X2Rpci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5faGFu
ZGxlcl9zdWl0ZV9tYXAgPSB7fQotICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQot
ICAgICAgICBpZiBzY2FuX2RpciBpcyBOb25lOgotICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290
X2RpcgotICAgICAgICBpZiBub3Qgb3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0
aCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6Ci0gICAgICAg
ICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVj
dG9yeSB1bmRlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9k
aXI6JXMuJyAlIChzY2FuX2Rpciwgcm9vdF9kaXIpKQotICAgICAgICBzZWxmLl9zb3VyY2VfaGFu
ZGxlcl9maWxlc19pbl9kaXIoCi0gICAgICAgICAgICByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0KLSAgICBkZWYgYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfcmVzb3Vy
Y2VfcGF0aCwgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCk6Ci0gICAgICAgICIiIkFkZCByZXNvdXJj
ZSBwYXRoIGFsaWFzLgotCi0gICAgICAgIE9uY2UgYWRkZWQsIHJlcXVlc3QgdG8gYWxpYXNfcmVz
b3VyY2VfcGF0aCB3b3VsZCBiZSBoYW5kbGVkIGJ5Ci0gICAgICAgIGhhbmRsZXIgcmVnaXN0ZXJl
ZCBmb3IgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgYWxpYXNfcmVzb3VyY2VfcGF0aDogYWxpYXMgcmVzb3VyY2UgcGF0aAotICAgICAgICAgICAg
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aDogZXhpc3RpbmcgcmVzb3VyY2UgcGF0aAotICAgICAgICAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuX2hhbmRs
ZXJfc3VpdGVfbWFwW2V4aXN0aW5nX3Jlc291cmNlX3BhdGhdCi0gICAgICAgICAgICBzZWxmLl9o
YW5kbGVyX3N1aXRlX21hcFthbGlhc19yZXNvdXJjZV9wYXRoXSA9IGhhbmRsZXJfc3VpdGUKLSAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCkKLQotICAgIGRlZiBzb3VyY2Vfd2FybmluZ3Mo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiB3YXJuaW5ncyBpbiBzb3VyY2luZyBoYW5kbGVycy4i
IiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fc291cmNlX3dhcm5pbmdzCi0KLSAgICBkZWYgZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJEbyBleHRyYSBjaGVj
a2luZyBpbiBXZWJTb2NrZXQgaGFuZHNoYWtlLgotCi0gICAgICAgIFNlbGVjdCBhIGhhbmRsZXIg
YmFzZWQgb24gcmVxdWVzdC51cmkgYW5kIGNhbGwgaXRzCi0gICAgICAgIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIGZ1bmN0aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgRGlzcGF0Y2hFeGNlcHRpb246IHdoZW4gaGFuZGxlciB3YXMgbm90IGZvdW5kCi0gICAgICAg
ICAgICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uOiB3aGVuIHVzZXIgaGFuZGxlciBhYm9ydCBjb25u
ZWN0aW9uCi0gICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb246IHdoZW4gb3BlbmluZyBoYW5k
c2hha2UgZmFpbGVkCi0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxm
LmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRs
ZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdO
byBoYW5kbGVyIGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAgICAgZG9fZXh0
cmFfaGFuZHNoYWtlXyA9IGhhbmRsZXJfc3VpdGUuZG9fZXh0cmFfaGFuZHNoYWtlCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8ocmVxdWVzdCkKLSAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
IyBSZS1yYWlzZSB0byB0ZWxsIHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBmaW5pc2gg
dGhpcwotICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhbnkgZXJyb3Iu
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdXRpbC5nZXRfc3RhY2tfdHJh
Y2UoKSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlICgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKSwKLSAgICAgICAgICAg
ICAgICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlIGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRp
b24oZSwgY29tbW9uLkhUVFBfU1RBVFVTX0ZPUkJJRERFTikKLQotICAgIGRlZiB0cmFuc2Zlcl9k
YXRhKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJMZXQgYSBoYW5kbGVyIHRyYW5zZmVyX2Rh
dGEgd2l0aCBhIFdlYlNvY2tldCBjbGllbnQuCi0KLSAgICAgICAgU2VsZWN0IGEgaGFuZGxlciBi
YXNlZCBvbiByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxsIGl0cwotICAgICAgICB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEgZnVuY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAg
ICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQKLSAgICAg
ICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFib3J0IGNv
bm5lY3Rpb24KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogVGVybWlu
YXRlIHVuZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYgcG9zc2libGUuCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGlmIG11eC51c2VfbXV4KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIG11
eC5zdGFydChyZXF1ZXN0LCBzZWxmKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291
cmNlKQotICAgICAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X3Jlc291cmNlKQotICAgICAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0
ZS50cmFuc2Zlcl9kYXRhCi0gICAgICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkK
LQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAgICMg
Q2F0Y2ggbm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRsZXIgZGlkbid0IGhhbmRsZS4K
LSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgbXNndXRpbC5CYWRPcGVyYXRpb25F
eGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAg
ICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKLSAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBJbnZh
bGlkRnJhbWVFeGNlcHRpb24gbXVzdCBiZSBjYXVnaHQgYmVmb3JlCi0gICAgICAgICAgICAjIENv
bm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIHRoYXQgY2F0Y2hlcyBJbnZhbGlkRnJhbWVFeGNl
cHRpb24uCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2Vw
dGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1VO
U1VQUE9SVEVEX0RBVEEpCi0gICAgICAgIGV4Y2VwdCBzdHJlYW0uSW52YWxpZFVURjhFeGNlcHRp
b24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAg
Y29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKLSAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgICMgQW55IG90aGVyIGV4Y2VwdGlvbnMgYXJlIGZvcndhcmRlZCB0byB0aGUg
Y2FsbGVyIG9mIHRoaXMKLSAgICAgICAgICAgICMgZnVuY3Rpb24uCi0gICAgICAgICAgICB1dGls
LnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJyVzIHJhaXNl
ZCBleGNlcHRpb24gZm9yICVzOiAnICUgKAotICAgICAgICAgICAgICAgICAgICBfVFJBTlNGRVJf
REFUQV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3NfcmVzb3VyY2UpLAotICAgICAgICAgICAgICAg
IGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hh
a2Uoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZv
ciByZXNwb25kaW5nIGNsaWVudCBpbml0aWF0ZWQgY2xvc2luZwotICAgICAgICBoYW5kc2hha2Uu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVy
X3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMg
Tm9uZToKLSAgICAgICAgICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNo
YWtlX2hhbmRsZXIocmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2
ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi0gICAgZGVmIGdldF9oYW5kbGVyX3N1aXRl
KHNlbGYsIHJlc291cmNlKToKLSAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25l
IGZvciBleHRyYSBoYW5kc2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQotICAgICAgICBmb3IgZGF0
YSB0cmFuc2ZlcikgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVj
dC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZnJhZ21lbnQgPSBOb25lCi0gICAgICAgIGlmICcj
JyBpbiByZXNvdXJjZToKLSAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNl
LnNwbGl0KCcjJywgMSkKLSAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgotICAgICAgICAgICAg
cmVzb3VyY2UgPSByZXNvdXJjZS5zcGxpdCgnPycsIDEpWzBdCi0gICAgICAgIGhhbmRsZXJfc3Vp
dGUgPSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCi0gICAgICAgIGlmIGhh
bmRsZXJfc3VpdGUgYW5kIGZyYWdtZW50OgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dlYlNvY2tldCBVUklzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKLQotICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKAotICAgICAgICBzZWxmLCByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpOgotICAgICAgICAiIiJTb3VyY2UgYWxsIHRoZSBo
YW5kbGVyIHNvdXJjZSBmaWxlcyBpbiB0aGUgc2Nhbl9kaXIgZGlyZWN0b3J5LgotCi0gICAgICAg
IFRoZSByZXNvdXJjZSBwYXRoIGlzIGRldGVybWluZWQgcmVsYXRpdmUgdG8gcm9vdF9kaXIuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgV2UgYnVpbGQgYSBtYXAgZnJvbSByZXNvdXJjZSB0byBo
YW5kbGVyIGNvZGUgYXNzdW1pbmcgdGhhdCB0aGVyZSdzCi0gICAgICAgICMgb25seSBvbmUgcGF0
aCBmcm9tIHJvb3RfZGlyIHRvIHNjYW5fZGlyIGFuZCBpdCBjYW4gYmUgb2J0YWluZWQgYnkKLSAg
ICAgICAgIyBjb21wYXJpbmcgcmVhbHBhdGggb2YgdGhlbS4KLQotICAgICAgICAjIEhlcmUgd2Ug
Y2Fubm90IHVzZSBhYnNwYXRoLiBTZWUKLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MDMKLQotICAgICAgICBjb252ZXJ0ID0gX2NyZWF0ZV9wYXRo
X3RvX3Jlc291cmNlX2NvbnZlcnRlcihyb290X2RpcikKLSAgICAgICAgc2Nhbl9yZWFscGF0aCA9
IG9zLnBhdGgucmVhbHBhdGgoc2Nhbl9kaXIpCi0gICAgICAgIHJvb3RfcmVhbHBhdGggPSBvcy5w
YXRoLnJlYWxwYXRoKHJvb3RfZGlyKQotICAgICAgICBmb3IgcGF0aCBpbiBfZW51bWVyYXRlX2hh
bmRsZXJfZmlsZV9wYXRocyhzY2FuX3JlYWxwYXRoKToKLSAgICAgICAgICAgIGlmIChub3QgYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpciBhbmQKLSAgICAgICAgICAgICAgICAobm90IG9z
LnBhdGgucmVhbHBhdGgocGF0aCkuc3RhcnRzd2l0aChyb290X3JlYWxwYXRoKSkpOgotICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0Nhbm9u
aWNhbCBwYXRoIG9mICVzIGlzIG5vdCB1bmRlciByb290IGRpcmVjdG9yeScgJQotICAgICAgICAg
ICAgICAgICAgICBwYXRoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IF9zb3VyY2VfaGFuZGxlcl9maWxl
KG9wZW4ocGF0aCkucmVhZCgpKQotICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBlbmQoJyVzOiAl
cycgJSAocGF0aCwgZSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJl
c291cmNlID0gY29udmVydChwYXRoKQotICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAg
ICdQYXRoIHRvIHJlc291cmNlIGNvbnZlcnNpb24gb24gJXMgZmFpbGVkJyAlIHBhdGgpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2Nv
bnZlcnQocGF0aCldID0gaGFuZGxlcl9zdWl0ZQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDlhOWZkY2Y5NDc5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4ODUgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0Lmh0dHBf
aGVhZGVyX3V0aWwgaW1wb3J0IHF1b3RlX2lmX25lY2Vzc2FyeQotCi0KLSMgVGhlIGxpc3Qgb2Yg
YXZhaWxhYmxlIHNlcnZlciBzaWRlIGV4dGVuc2lvbiBwcm9jZXNzb3IgY2xhc3Nlcy4KLV9hdmFp
bGFibGVfcHJvY2Vzc29ycyA9IHt9Ci1fY29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzID0gW10K
LQotCi1jbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QK
LSAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0Ci0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBjaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVyX3By
b2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRf
YWN0aXZlKHNlbGYsIGFjdGl2ZSk6Ci0gICAgICAgIHNlbGYuX2FjdGl2ZSA9IGFjdGl2ZQotCi0g
ICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2FjdGl2ZQotCi0g
ICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6Ci0gICAg
ICAgIGlmIG5vdCBzZWxmLl9hY3RpdmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J0V4dGVuc2lvbiAlcyBpcyBkZWFjdGl2YXRlZCcsIHNlbGYubmFtZSgpKQotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYuX2dldF9leHRlbnNpb25fcmVz
cG9uc2VfaW50ZXJuYWwoKQotICAgICAgICBpZiByZXNwb25zZSBpcyBOb25lOgotICAgICAgICAg
ICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBk
ZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToK
LSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVh
bV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5fYWN0aXZlOgotICAgICAgICAgICAgc2VsZi5f
c2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc3RyZWFtX29wdGlvbnMpCi0KLQotZGVmIF9s
b2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgIGxvZ2dlciwgb3JpZ2luYWxf
Ynl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdlX3JhdGlvKToKLSAgICAjIFByaW50IGluZiB3
aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0gICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAg
ICBpZiBvcmlnaW5hbF9ieXRlcyAhPSAwOgotICAgICAgICByYXRpbyA9IGZsb2F0KGZpbHRlcmVk
X2J5dGVzKSAvIG9yaWdpbmFsX2J5dGVzCi0KLSAgICBsb2dnZXIuZGVidWcoJ091dGdvaW5nIGNv
bXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTogJWYpJyAlCi0gICAgICAgICAgICAocmF0aW8s
IGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfbG9nX2luY29taW5nX2NvbXByZXNzaW9uX3JhdGlv
KAotICAgICAgICBsb2dnZXIsIHJlY2VpdmVkX2J5dGVzLCBmaWx0ZXJlZF9ieXRlcywgYXZlcmFn
ZV9yYXRpbyk6Ci0gICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgot
ICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCi0gICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKLSAg
ICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcwotCi0g
ICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6
ICVmKScgJQotICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3JhdGlvKSkKLQotCi1kZWYgX3Bh
cnNlX3dpbmRvd19iaXRzKGJpdHMpOgotICAgICIiIlJldHVybiBwYXJzZWQgaW50ZWdlciB2YWx1
ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBjb25mb3JtcyB0byB0aGUKLSAgICBncmFtbWFyIG9mIHRo
ZSB3aW5kb3cgYml0cyBleHRlbnNpb24gcGFyYW1ldGVycy4KLSAgICAiIiIKLQotICAgIGlmIGJp
dHMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQn
KQotCi0gICAgIyBGb3Igbm9uIGludGVnZXIgdmFsdWVzIHN1Y2ggYXMgIjEwLjAiLCBWYWx1ZUVy
cm9yIHdpbGwgYmUgcmFpc2VkLgotICAgIGludF9iaXRzID0gaW50KGJpdHMpCi0KLSAgICAjIEZp
cnN0IGNvbmRpdGlvbiBpcyB0byBkcm9wIGxlYWRpbmcgemVybyBjYXNlIGUuZy4gIjA4Ii4KLSAg
ICBpZiBiaXRzICE9IHN0cihpbnRfYml0cykgb3IgaW50X2JpdHMgPCA4IG9yIGludF9iaXRzID4g
MTU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsdWU6ICVyJyAlIGJpdHMp
Ci0KLSAgICByZXR1cm4gaW50X2JpdHMKLQotCi1jbGFzcyBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRv
cihvYmplY3QpOgotICAgICIiIlN0b3JlcyB0b3RhbCBieXRlcyBvZiBvcmlnaW5hbCBhbmQgcmVz
dWx0IGRhdGEsIGFuZCBjYWxjdWxhdGVzIGF2ZXJhZ2UKLSAgICByZXN1bHQgLyBvcmlnaW5hbCBy
YXRpby4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5f
dG90YWxfb3JpZ2luYWxfYnl0ZXMgPSAwCi0gICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRl
cyA9IDAKLQotICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAg
ICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQotCi0gICAgZGVmIGFkZF9yZXN1
bHRfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMg
Kz0gdmFsdWUKLQotICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiAoZmxv
YXQoc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzKSAvCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3RvdGFsX29yaWdpbmFsX2J5dGVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IGZsb2F0KCdpbmYnKQotCi0KLWNsYXNzIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiImRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvZHJhZnQtdHlvc2hpbm8taHliaS13ZWJzb2NrZXQtcGVyZnJhbWUtZGVmbGF0
ZQotICAgICIiIgotCi0gICAgX1dJTkRPV19CSVRTX1BBUkFNID0gJ21heF93aW5kb3dfYml0cycK
LSAgICBfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdub19jb250ZXh0X3Rha2VvdmVyJwot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9j
ZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVzcG9u
c2Vfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRf
dGFrZW92ZXIgPSBGYWxzZQotICAgICAgICBzZWxmLl9iZmluYWwgPSBGYWxzZQotCi0gICAgICAg
ICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxp
ZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8g
dGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0gICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9y
KCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJl
Y2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5n
IGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQotICAgICAgICBzZWxm
Ll9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3Vs
YXRvcigpCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZM
QVRFX0ZSQU1FX0VYVEVOU0lPTgotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2lu
dGVybmFsKHNlbGYpOgotICAgICAgICAjIEFueSB1bmtub3duIHBhcmFtZXRlciB3aWxsIGJlIGp1
c3QgaWdub3JlZC4KLQotICAgICAgICB3aW5kb3dfYml0cyA9IE5vbmUKLSAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNKToKLSAgICAg
ICAgICAgIHdpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAot
ICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIHdpbmRvd19iaXRzID0gX3BhcnNlX3dpbmRvd19iaXRzKHdpbmRv
d19iaXRzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBub19jb250ZXh0X3Rha2VvdmVyID0gc2VsZi5fcmVx
dWVzdC5oYXNfcGFyYW1ldGVyKAotICAgICAgICAgICAgc2VsZi5fTk9fQ09OVEVYVF9UQUtFT1ZF
Ul9QQVJBTSkKLSAgICAgICAgaWYgKG5vX2NvbnRleHRfdGFrZW92ZXIgYW5kCi0gICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyID0gdXRpbC5fUkZD
MTk3OURlZmxhdGVyKAotICAgICAgICAgICAgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFrZW92
ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVlCi0KLSAgICAg
ICAgcmVzcG9uc2UgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKHNlbGYuX3JlcXVlc3QubmFt
ZSgpKQotCi0gICAgICAgIGlmIHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBz
ZWxmLl9XSU5ET1dfQklUU19QQVJBTSwgc3RyKHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzKSkK
LSAgICAgICAgaWYgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcjoKLSAgICAgICAg
ICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5fTk9fQ09O
VEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
Ci0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAgICAgICAgICAgJ3JlcXVl
c3Q6IHdpbmRvd19iaXRzPSVzOyBub19jb250ZXh0X3Rha2VvdmVyPSVyLCAnCi0gICAgICAgICAg
ICAncmVzcG9uc2U6IHdpbmRvd193Yml0cz0lczsgbm9fY29udGV4dF90YWtlb3Zlcj0lciknICUK
LSAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0Lm5hbWUoKSwKLSAgICAgICAgICAgICB3aW5kb3df
Yml0cywKLSAgICAgICAgICAgICBub19jb250ZXh0X3Rha2VvdmVyLAotICAgICAgICAgICAgIHNl
bGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzLAotICAgICAgICAgICAgIHNlbGYuX3Jlc3BvbnNlX25v
X2NvbnRleHRfdGFrZW92ZXIpKQotCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVm
IF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0K
LSAgICAgICAgY2xhc3MgX091dGdvaW5nRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9
IHBhcmVudAotCi0gICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wYXJlbnQuX291dGdvaW5nX2ZpbHRlcihmcmFtZSkKLQotICAgICAgICBj
bGFzcyBfSW5jb21pbmdGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0K
LSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHNl
bGYuX3BhcmVudC5faW5jb21pbmdfZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIHN0cmVhbV9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgX091dGdvaW5n
RmlsdGVyKHNlbGYpKQotICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0
ZXJzLmluc2VydCgKLSAgICAgICAgICAgIDAsIF9JbmNvbWluZ0ZpbHRlcihzZWxmKSkKLQotICAg
IGRlZiBzZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxm
Ll9yZXNwb25zZV93aW5kb3dfYml0cyA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X3Jlc3BvbnNlX25v
X2NvbnRleHRfdGFrZW92ZXIoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9yZXNwb25zZV9u
b19jb250ZXh0X3Rha2VvdmVyID0gdmFsdWUKLQotICAgIGRlZiBzZXRfYmZpbmFsKHNlbGYsIHZh
bHVlKToKLSAgICAgICAgc2VsZi5fYmZpbmFsID0gdmFsdWUKLQotICAgIGRlZiBlbmFibGVfb3V0
Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5n
ID0gVHJ1ZQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0g
ICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nID0gRmFsc2UKLQotICAgIGRlZiBfb3V0Z29p
bmdfZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgIiIiVHJhbnNmb3JtIG91dGdvaW5nIGZy
YW1lcy4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9ubHkgYnkKLSAgICAgICAgYW4gX091dGdvaW5n
RmlsdGVyIGluc3RhbmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBvcmlnaW5hbF9wYXlsb2Fk
X3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBv
cmlnaW5hbF9wYXlsb2FkX3NpemUpCi0KLSAgICAgICAgaWYgKG5vdCBzZWxmLl9jb21wcmVzc19v
dXRnb2luZyBvcgotICAgICAgICAgICAgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9w
Y29kZSkpOgotICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmFkZF9yZXN1bHRfYnl0ZXMoCi0gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxv
YWRfc2l6ZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZyYW1lLnBheWxvYWQgPSBz
ZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAgICAgICAgICAgIGZyYW1lLnBheWxvYWQs
IGJmaW5hbD1zZWxmLl9iZmluYWwpCi0gICAgICAgIGZyYW1lLnJzdjEgPSAxCi0KLSAgICAgICAg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYu
X291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAg
ICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBfbG9nX291dGdv
aW5nX2NvbXByZXNzaW9uX3JhdGlvKAotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlciwKLSAg
ICAgICAgICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJh
Z2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQotCi0gICAgZGVmIF9pbmNv
bWluZ19maWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJUcmFuc2Zvcm0gaW5jb21pbmcg
ZnJhbWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBieQotICAgICAgICBhbiBfSW5jb21p
bmdGaWx0ZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJlY2VpdmVkX3BheWxv
YWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAgICBy
ZWNlaXZlZF9wYXlsb2FkX3NpemUpCi0KLSAgICAgICAgaWYgZnJhbWUucnN2MSAhPSAxIG9yIGNv
bW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgotICAgICAgICAgICAgc2VsZi5f
aW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAg
ICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQotICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIuZmls
dGVyKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX2lu
Y29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfb3JpZ2luYWxfYnl0ZXMoCi0gICAg
ICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfaW5jb21p
bmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAg
ICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLQotX2F2YWlsYWJsZV9w
cm9jZXNzb3JzW2NvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTl0gPSAoCi0gICAgRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5h
cHBlbmQoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotCi1fYXZhaWxhYmxlX3Byb2Nl
c3NvcnNbY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OXSA9ICgKLSAgICBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Npb25fZXh0ZW5zaW9uX25h
bWVzLmFwcGVuZChjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLQot
ZGVmIF9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoZGF0YSk6Ci0gICAgIiIiUGFyc2VzIHRoZSB2
YWx1ZSBvZiAibWV0aG9kIiBleHRlbnNpb24gcGFyYW1ldGVyLiIiIgotCi0gICAgcmV0dXJuIGNv
bW1vbi5wYXJzZV9leHRlbnNpb25zKGRhdGEpCi0KLQotZGVmIF9jcmVhdGVfYWNjZXB0ZWRfbWV0
aG9kX2Rlc2MobWV0aG9kX25hbWUsIG1ldGhvZF9wYXJhbXMpOgotICAgICIiIkNyZWF0ZXMgYWNj
ZXB0ZWQtbWV0aG9kLWRlc2MgZnJvbSBnaXZlbiBtZXRob2QgbmFtZSBhbmQgcGFyYW1ldGVycyIi
IgotCi0gICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihtZXRob2RfbmFt
ZSkKLSAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbWV0aG9kX3BhcmFtczoKLSAgICAgICAgZXh0ZW5z
aW9uLmFkZF9wYXJhbWV0ZXIobmFtZSwgdmFsdWUpCi0gICAgcmV0dXJuIGNvbW1vbi5mb3JtYXRf
ZXh0ZW5zaW9uKGV4dGVuc2lvbikKLQotCi1jbGFzcyBDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nl
c3NvckJhc2UoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKLSAgICAiIiJCYXNlIGNsYXNz
IGZvciBwZXJmcmFtZS1jb21wcmVzcyBhbmQgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24u
IiIiCi0KLSAgICBfTUVUSE9EX1BBUkFNID0gJ21ldGhvZCcKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXF1ZXN0KToKLSAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5p
dF9fKHNlbGYsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSA9IE5v
bmUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yID0gTm9uZQotICAgICAgICBz
ZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vayA9IE5vbmUKLQotICAgIGRlZiBuYW1lKHNl
bGYpOgotICAgICAgICByZXR1cm4gJycKLQotICAgIGRlZiBfbG9va3VwX2NvbXByZXNzaW9uX3By
b2Nlc3NvcihzZWxmLCBtZXRob2RfZGVzYyk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBk
ZWYgX2dldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgICIi
Ikxvb2tzIHVwIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzb3IgYmFzZWQgb24gdGhlIHNlbGYuX3Jl
cXVlc3QgYW5kCi0gICAgICAgICAgIHJldHVybnMgdGhlIGNvbXByZXNzaW9uIHByb2Nlc3Nvcidz
IHJlc3BvbnNlLgotICAgICAgICAiIiIKLQotICAgICAgICBtZXRob2RfbGlzdCA9IHNlbGYuX3Jl
cXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZShzZWxmLl9NRVRIT0RfUEFSQU0pCi0gICAgICAgIGlm
IG1ldGhvZF9saXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBt
ZXRob2RzID0gX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZChtZXRob2RfbGlzdCkKLSAgICAgICAg
aWYgbWV0aG9kcyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgY29t
cmVzc2lvbl9wcm9jZXNzb3IgPSBOb25lCi0gICAgICAgICMgVGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24gdHJpZXMgb25seSB0aGUgZmlyc3QgbWV0aG9kIHRoYXQgbWF0Y2hlcwotICAgICAgICAj
IHN1cHBvcnRlZCBhbGdvcml0aG0uIEZvbGxvd2luZyBtZXRob2RzIGFyZW4ndCB0cmllZCBldmVu
IGlmIHRoZQotICAgICAgICAjIGZpcnN0IG9uZSBpcyByZWplY3RlZC4KLSAgICAgICAgIyBUT0RP
KGJhc2hpKTogTmVlZCB0byBjbGFyaWZ5IHRoaXMgYmVoYXZpb3IuCi0gICAgICAgIGZvciBtZXRo
b2RfZGVzYyBpbiBtZXRob2RzOgotICAgICAgICAgICAgY29tcHJlc3Npb25fcHJvY2Vzc29yID0g
c2VsZi5fbG9va3VwX2NvbXByZXNzaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBtZXRo
b2RfZGVzYykKLSAgICAgICAgICAgIGlmIGNvbXByZXNzaW9uX3Byb2Nlc3NvciBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSA9IG1ldGhv
ZF9kZXNjLm5hbWUoKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGNvbXByZXNz
aW9uX3Byb2Nlc3NvciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAg
ICBpZiBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vazoKLSAgICAgICAgICAgIHNlbGYu
X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rKGNvbXByZXNzaW9uX3Byb2Nlc3NvcikKLQotICAg
ICAgICBwcm9jZXNzb3JfcmVzcG9uc2UgPSBjb21wcmVzc2lvbl9wcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIGlmIHByb2Nlc3Nvcl9yZXNwb25zZSBpcyBOb25lOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vz
c29yID0gY29tcHJlc3Npb25fcHJvY2Vzc29yCi0gICAgICAgIHJldHVybiBwcm9jZXNzb3JfcmVz
cG9uc2UKLQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToK
LSAgICAgICAgcHJvY2Vzc29yX3Jlc3BvbnNlID0gc2VsZi5fZ2V0X2NvbXByZXNzaW9uX3Byb2Nl
c3Nvcl9yZXNwb25zZSgpCi0gICAgICAgIGlmIHByb2Nlc3Nvcl9yZXNwb25zZSBpcyBOb25lOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25zZSA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCi0gICAgICAgIGFjY2VwdGVkX21l
dGhvZF9kZXNjID0gX2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVzYygKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fbWV0aG9kX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvcl9yZXNwb25zZS5nZXRfcGFy
YW1ldGVycygpKQotICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX01FVEhPRF9Q
QVJBTSwgYWNjZXB0ZWRfbWV0aG9kX2Rlc2MpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygK
LSAgICAgICAgICAgICdFbmFibGUgJXMgZXh0ZW5zaW9uIChtZXRob2Q6ICVzKScgJQotICAgICAg
ICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgpLCBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFt
ZSkpCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0
aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIGlmIHNlbGYuX2Nv
bXByZXNzaW9uX3Byb2Nlc3NvciBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1f
b3B0aW9ucykKLQotICAgIGRlZiBzZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2soc2VsZiwg
aG9vayk6Ci0gICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rID0gaG9vawot
Ci0gICAgZGVmIGdldF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0
ZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIi
InBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24gcHJvY2Vzc29yLiBJdCdzIGFsc28gdXNlZCBm
b3IKLSAgICBwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbiB3aGVuIHRoZSBkZWZsYXRlIG1l
dGhvZCBpcyBjaG9zZW4uCi0KLSAgICBTcGVjaWZpY2F0aW9uOgotICAgIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4Ci0g
ICAgIiIiCi0KLSAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJwotICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKLSAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJwotICAgIF9DTElFTlRfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkcmFmdDA4PVRydWUpOgotICAgICAgICAiIiJDb25zdHJ1
Y3QgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IKLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgZHJhZnQwODogRm9sbG93IHRoZSBjb25zdHJhaW50cyBvbiB0aGUgcGFyYW1l
dGVycyB0aGF0IHdlcmUgbm90Ci0gICAgICAgICAgICAgICAgc3BlY2lmaWVkIGZvciBwZXJtZXNz
YWdlLWNvbXByZXNzIGJ1dCBhcmUgc3BlY2lmaWVkIGZvcgotICAgICAgICAgICAgICAgIHBlcm1l
c3NhZ2UtZGVmbGF0ZSBhcyBvbgotICAgICAgICAgICAgICAgIGRyYWZ0LWlldGYtaHliaS1wZXJt
ZXNzYWdlLWNvbXByZXNzaW9uLTA4LgotICAgICAgICAiIiIKLQotICAgICAgICBFeHRlbnNpb25Q
cm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcHJl
ZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX2NsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9kcmFmdDA4ID0g
ZHJhZnQwOAotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnZGVmbGF0ZScK
LQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKLSAgICAg
ICAgaWYgc2VsZi5fZHJhZnQwODoKLSAgICAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuX3JlcXVl
c3QuZ2V0X3BhcmFtZXRlcl9uYW1lcygpOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGlu
IFtzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklU
U19QQVJBTV06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVW5rbm93
biBwYXJhbWV0ZXI6ICVyJywgbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQW55IHVua25vd24gcGFyYW1ldGVyIHdpbGwg
YmUganVzdCBpZ25vcmVkLgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHNlcnZlcl9tYXhf
d2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRl
cihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKToKLSAgICAgICAgICAgIHNlcnZl
cl9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cyA9
IF9wYXJzZV93aW5kb3dfYml0cygKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BB
UkFNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIgPSBz
ZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9f
Q09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKLSAgICAgICAgaWYgKHNlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVl
KAotICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFt
ZXRlciBtdXN0IG5vdCBoYXZlIGEgdmFsdWU6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZy
b20gYSBjbGllbnQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsaWVudCBjYW4KLSAgICAgICAgIyBh
Y2NlcHQgY2xpZW50X21heF93aW5kb3dfYml0cyBmcm9tIGEgc2VydmVyIG9yIG5vdC4KLSAgICAg
ICAgY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJh
bWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQot
ICAgICAgICBpZiAoc2VsZi5fZHJhZnQwOCBhbmQKLSAgICAgICAgICAgIGNsaWVudF9jbGllbnRf
bWF4X3dpbmRvd19iaXRzIGFuZAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1l
dGVyX3ZhbHVlKAotICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNf
UEFSQU0pIGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMg
cGFyYW1ldGVyIG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnY2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJB
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2xpZW50X21heF93aW5k
b3dfYml0cykKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3
OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIHNlcnZlcl9t
YXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgICAgICMg
Tm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2VzIGNvbXByZXNzZWQgd2l0
aCB3aW5kb3cKLSAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVzcyBvZiB0aGUgY2xpZW50
X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQotICAgICAgICAjIHNlbnQgdG8gdGhlIGNsaWVu
dC4KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRl
cigpCi0KLSAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKAot
ICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIpCi0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKEZhbHNlKQotICAgICAgICBz
ZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLQotICAgICAg
ICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1l
KCkpCi0KLSAgICAgICAgaWYgc2VydmVyX21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5f
U0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAgICAgICAgICAgICBzdHIoc2VydmVy
X21heF93aW5kb3dfYml0cykpCi0KLSAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92
ZXI6Ci0gICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKAotICAgICAgICAgICAgICAg
IHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQotCi0gICAgICAg
IGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgaWYgc2VsZi5fZHJhZnQwOCBhbmQgbm90IGNsaWVudF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUHJvY2Vzc29y
IGlzIGNvbmZpZ3VyZWQgdG8gdXNlICVzIGJ1dCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0aGUgY2xpZW50IGNhbm5vdCBhY2NlcHQgaXQnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQot
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICByZXNwb25zZS5hZGRfcGFy
YW1ldGVyKAotICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFS
QU0sCi0gICAgICAgICAgICAgICAgc3RyKHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRv
d19iaXRzKSkKLQotICAgICAgICBpZiBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcjoK
LSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKLSAg
ICAgICAgICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAg
ICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKLSAgICAgICAgICAgICdyZXNw
b25zZTogY2xpZW50X21heF93aW5kb3dfYml0cz0lczsgJwotICAgICAgICAgICAgJ2NsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyPSVyKScgJQotICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFt
ZSgpLAotICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAg
c2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCi0gICAgICAgICAgICAgc2VsZi5fcHJlZmVycmVk
X2NsaWVudF9tYXhfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIpKQotCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIF9z
ZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAg
ICAgIHNlbGYuX2ZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9ucykKLQot
ICAgIGRlZiBzZXRfY2xpZW50X21heF93aW5kb3dfYml0cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAg
ICIiIklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQotICAg
ICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIgdG8gdGhlIGhh
bmRzaGFrZSByZXNwb25zZSwKLSAgICAgICAgYnV0IGRvZXNuJ3QgcmVkdWNlIHRoZSBMWjc3IHNs
aWRpbmcgd2luZG93IHNpemUgb2YgaXRzIGluZmxhdGVyLgotICAgICAgICBJLmUuLCB5b3UgY2Fu
IHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQgY2Fubm90Ci0g
ICAgICAgIHJlZHVjZSBtZW1vcnkgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLQotICAgICAgICBJZiB0
aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgd2l0aCBUcnVlIGFuZCBhbiBvZmZlciB3aXRob3V0
IHRoZQotICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIg
aXMgcmVjZWl2ZWQsCi0gICAgICAgIC0gKFdoZW4gcHJvY2Vzc2luZyB0aGUgcGVybWVzc2FnZS1k
ZWZsYXRlIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKLSAgICAgICAgICBkZWNsaW5lcyB0aGUg
cmVxdWVzdC4KLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWNvbXBy
ZXNzIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKLSAgICAgICAgICBhY2NlcHRzIHRoZSByZXF1
ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21heF93
aW5kb3dfYml0cyA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyKHNlbGYsIHZhbHVlKToKLSAgICAgICAgIiIiSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVk
LCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
IGV4dGVuc2lvbiBwYXJhbWV0ZXIgdG8gdGhlIGhhbmRzaGFrZQotICAgICAgICByZXNwb25zZSwg
YnV0IGRvZXNuJ3QgcmVzZXQgaW5mbGF0ZXIgZm9yIGVhY2ggbWVzc2FnZS4gSS5lLiwgeW91IGNh
bgotICAgICAgICB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQgaW1wbGVtZW50YXRpb24gYnV0
IGNhbm5vdCByZWR1Y2UgbWVtb3J5Ci0gICAgICAgIHVzYWdlIG9mIHRoaXMgY2xhc3MuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gdmFs
dWUKLQotICAgIGRlZiBzZXRfYmZpbmFsKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9iZmluYWwodmFsdWUpCi0KLSAgICBkZWYgZW5hYmxlX291dGdvaW5nX2NvbXByZXNz
aW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2Vu
YWJsZWQoVHJ1ZSkKLQotICAgIGRlZiBkaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKHNlbGYp
OgotICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoRmFs
c2UpCi0KLQotY2xhc3MgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKG9iamVjdCk6Ci0gICAgIiIi
QSBmcmFtZXIgZm9yIGV4dGVuc2lvbnMgd2l0aCBwZXItbWVzc2FnZSBERUZMQVRFIGZlYXR1cmUu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGVmbGF0ZV9tYXhfd2luZG93X2JpdHMsIGRl
ZmxhdGVfbm9fY29udGV4dF90YWtlb3Zlcik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIg
PSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCi0gICAgICAgICAgICBkZWZsYXRlX21heF93aW5kb3df
Yml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgICAgIHNlbGYuX3JmYzE5
NzlfaW5mbGF0ZXIgPSB1dGlsLl9SRkMxOTc5SW5mbGF0ZXIoKQotCi0gICAgICAgIHNlbGYuX2Jm
aW5hbCA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9
IEZhbHNlCi0KLSAgICAgICAgIyBUcnVlIGlmIGEgbWVzc2FnZSBpcyBmcmFnbWVudGVkIGFuZCBj
b21wcmVzc2lvbiBpcyBvbmdvaW5nLgotICAgICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5nID0g
RmFsc2UKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAgKFRvdGFsIG91dGdv
aW5nIGJ5dGVzIHN1cHBsaWVkIHRvIHRoaXMgZmlsdGVyKSAvCi0gICAgICAgICMgICAgIChUb3Rh
bCBieXRlcyBzZW50IHRvIHRoZSBuZXR3b3JrIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQot
ICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFn
ZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICAgICAgIyBDYWxjdWxhdGVzCi0gICAgICAgICMgICAg
IChUb3RhbCBieXRlcyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrKSAvCi0gICAgICAgICMgICAg
IChUb3RhbCBpbmNvbWluZyBieXRlcyBvYnRhaW5lZCBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRl
cikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2
ZXJhZ2VSYXRpb0NhbGN1bGF0b3IoKQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUp
OgotICAgICAgICBzZWxmLl9iZmluYWwgPSB2YWx1ZQotCi0gICAgZGVmIHNldF9jb21wcmVzc19v
dXRnb2luZ19lbmFibGVkKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0
Z29pbmdfZW5hYmxlZCA9IHZhbHVlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlLCBkZWNvbXByZXNzKToKLSAgICAgICAgaWYgbm90IGRlY29tcHJlc3M6
Ci0gICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgICAgIHJlY2VpdmVkX3BheWxvYWRf
c2l6ZSA9IGxlbihtZXNzYWdlKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlv
X2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAgICByZWNlaXZlZF9w
YXlsb2FkX3NpemUpCi0KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIu
ZmlsdGVyKG1lc3NhZ2UpCi0KLSAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1l
c3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5h
ZGRfb3JpZ2luYWxfYnl0ZXMoCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXpl
KQotCi0gICAgICAgIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6
ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAg
ICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3Jh
dGlvKCkpCi0KLSAgICAgICAgcmV0dXJuIG1lc3NhZ2UKLQotICAgIGRlZiBfcHJvY2Vzc19vdXRn
b2luZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KToKLSAgICAgICAgaWYgbm90
IGJpbmFyeToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQot
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkOgotICAgICAg
ICAgICAgcmV0dXJuIG1lc3NhZ2UKLQotICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBs
ZW4obWVzc2FnZSkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6
ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIoCi0g
ICAgICAgICAgICBtZXNzYWdlLCBlbmQ9ZW5kLCBiZmluYWw9c2VsZi5fYmZpbmFsKQotCi0gICAg
ICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQotICAgICAgICBzZWxmLl9v
dXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBfbG9nX291dGdvaW5nX2Nv
bXByZXNzaW9uX3JhdGlvKAotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlciwKLSAgICAgICAg
ICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRf
cGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0
aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQotCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll9jb21wcmVzc19vbmdvaW5nOgotICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQotICAgICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5n
ID0gbm90IGVuZAotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX2lu
Y29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUucnN2MSA9PSAxIGFu
ZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAg
ICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlci5kZWNvbXByZXNzX25leHRfbWVzc2FnZSgp
Ci0gICAgICAgICAgICBmcmFtZS5yc3YxID0gMAotCi0gICAgZGVmIF9wcm9jZXNzX291dGdvaW5n
X2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVzc2lvbl9iaXQpOgotICAgICAgICBpZiAobm90IGNv
bXByZXNzaW9uX2JpdCBvcgotICAgICAgICAgICAgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZy
YW1lLm9wY29kZSkpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZnJhbWUucnN2MSA9
IDEKLQotICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6
Ci0gICAgICAgICIiIkNyZWF0ZXMgZmlsdGVycyBhbmQgc2V0cyB0aGVtIHRvIHRoZSBTdHJlYW1P
cHRpb25zLiIiIgotCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2JqZWN0
KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2Vs
ZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX3BhcmVudC5fcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKAotICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlLCBlbmQsIGJpbmFyeSkKLQotICAgICAgICBjbGFzcyBfSW5jb21pbmdN
ZXNzYWdlRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
YXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotICAgICAgICAg
ICAgICAgIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gRmFsc2UKLQotICAgICAgICAg
ICAgZGVmIGRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKHNlbGYpOgotICAgICAgICAgICAgICAgIHNl
bGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gVHJ1ZQotCi0gICAgICAgICAgICBkZWYgZmls
dGVyKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9wYXJl
bnQuX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSwgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UpCi0gICAgICAgICAgICAgICAgc2VsZi5f
ZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBt
ZXNzYWdlCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfbWVzc2FnZV9maWx0ZXIgPSBfT3V0Z29p
bmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmls
dGVyID0gX0luY29taW5nTWVzc2FnZUZpbHRlcihzZWxmKQotICAgICAgICBzdHJlYW1fb3B0aW9u
cy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5fb3V0
Z29pbmdfbWVzc2FnZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5nX21l
c3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdl
X2ZpbHRlcikKLQotICAgICAgICBjbGFzcyBfT3V0Z29pbmdGcmFtZUZpbHRlcihvYmplY3QpOgot
Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJl
c3Npb25fYml0ID0gRmFsc2UKLQotICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQo
c2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUK
LQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKAotICAgICAgICAgICAgICAgICAg
ICBmcmFtZSwgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCkKLSAgICAgICAgICAgICAgICBzZWxm
Ll9zZXRfY29tcHJlc3Npb25fYml0ID0gRmFsc2UKLQotICAgICAgICBjbGFzcyBfSW5jb21pbmdG
cmFtZUZpbHRlcihvYmplY3QpOgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy
ZW50KToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAg
ICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50
Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZyYW1lKQotCi0gICAgICAgIHNlbGYuX291dGdvaW5n
X2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1lRmlsdGVyKHNlbGYpCi0gICAgICAgIHNlbGYu
X2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNvbWluZ0ZyYW1lRmlsdGVyKHNlbGYpCi0gICAg
ICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAg
ICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyKQotICAgICAgICBzdHJlYW1fb3B0aW9u
cy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29t
aW5nX2ZyYW1lX2ZpbHRlcikKLQotICAgICAgICBzdHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9t
ZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQotCi0KLV9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0gPSAoCi0gICAgICAgIFBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQotIyBUT0RPKHR5b3NoaW5vKTogUmVvcmdhbml6ZSBjbGFz
cyBuYW1lcy4KLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKCdkZWZsYXRlJykK
LQotCi1jbGFzcyBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgQ29t
cHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKToKLSAgICAiIiJwZXJtZXNzYWdlLWNvbXBy
ZXNzIGV4dGVuc2lvbiBwcm9jZXNzb3IuCi0KLSAgICBTcGVjaWZpY2F0aW9uOgotICAgIGh0dHA6
Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNz
aW9uCi0gICAgIiIiCi0KLSAgICBfREVGTEFURV9NRVRIT0QgPSAnZGVmbGF0ZScKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgQ29tcHJlc3Npb25FeHRlbnNpb25Q
cm9jZXNzb3JCYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICBkZWYgbmFtZShzZWxm
KToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lP
TgotCi0gICAgZGVmIF9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKHNlbGYsIG1ldGhvZF9k
ZXNjKToKLSAgICAgICAgaWYgbWV0aG9kX2Rlc2MubmFtZSgpID09IHNlbGYuX0RFRkxBVEVfTUVU
SE9EOgotICAgICAgICAgICAgcmV0dXJuIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yKG1ldGhvZF9kZXNjLCBGYWxzZSkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi1fYXZhaWxh
YmxlX3Byb2Nlc3NvcnNbY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OXSA9
ICgKLSAgICBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Np
b25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9F
WFRFTlNJT04pCi0KLQotY2xhc3MgTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nl
c3NvckludGVyZmFjZSk6Ci0gICAgIiIiV2ViU29ja2V0IG11bHRpcGxleGluZyBleHRlbnNpb24g
cHJvY2Vzc29yLiIiIgotCi0gICAgX1FVT1RBX1BBUkFNID0gJ3F1b3RhJwotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZh
Y2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5fcXVvdGEgPSAwCi0gICAg
ICAgIHNlbGYuX2V4dGVuc2lvbnMgPSBbXQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAg
IHJldHVybiBjb21tb24uTVVYX0VYVEVOU0lPTgotCi0gICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5
X3dpdGhfb3RoZXJfcHJvY2Vzc29ycyhzZWxmLCBwcm9jZXNzb3JzKToKLSAgICAgICAgYmVmb3Jl
X211eCA9IFRydWUKLSAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzOgotICAgICAg
ICAgICAgbmFtZSA9IHByb2Nlc3Nvci5uYW1lKCkKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gc2Vs
Zi5uYW1lKCk6Ci0gICAgICAgICAgICAgICAgYmVmb3JlX211eCA9IEZhbHNlCi0gICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6
Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGJlZm9yZV9tdXg6Ci0g
ICAgICAgICAgICAgICAgIyBNdXggZXh0ZW5zaW9uIGNhbm5vdCBiZSB1c2VkIGFmdGVyIGV4dGVu
c2lvbnMKLSAgICAgICAgICAgICAgICAjIHRoYXQgZGVwZW5kIG9uIGZyYW1lIGJvdW5kYXJ5LCBl
eHRlbnNpb24gZGF0YSBmaWVsZCwgb3IgYW55Ci0gICAgICAgICAgICAgICAgIyByZXNlcnZlZCBi
aXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGVkIHRvIGVhY2ggZnJhbWUuCi0gICAgICAgICAgICAgICAg
aWYgKG5hbWUgPT0gY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OIG9yCi0gICAgICAgICAg
ICAgICAgICAgIG5hbWUgPT0gY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9O
KToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRfYWN0aXZlKEZhbHNlKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBN
dXggZXh0ZW5zaW9uIHNob3VsZCBub3QgYmUgYXBwbGllZCBiZWZvcmUgYW55IGhpc3RvcnktYmFz
ZWQKLSAgICAgICAgICAgICAgICAjIGNvbXByZXNzaW9uIGV4dGVuc2lvbi4KLSAgICAgICAgICAg
ICAgICBpZiAobmFtZSA9PSBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04gb3IKLSAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRF
TlNJT04gb3IKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uUEVSTUVTU0FHRV9D
T01QUkVTU0lPTl9FWFRFTlNJT04gb3IKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21t
b24uWF9XRUJLSVRfUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNldF9hY3RpdmUoRmFsc2UpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybgotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgot
ICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQotICAgICAgICBxdW90YSA9IHNlbGYuX3JlcXVl
c3QuZ2V0X3BhcmFtZXRlcl92YWx1ZShzZWxmLl9RVU9UQV9QQVJBTSkKLSAgICAgICAgaWYgcXVv
dGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcXVvdGEg
PSBpbnQocXVvdGEpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgcXVvdGEgPCAwIG9yIHF1b3RhID49
IDIgKiogMzI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHNlbGYu
X3F1b3RhID0gcXVvdGEKLQotICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0gICAgICAgIHJl
dHVybiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKQotCi0g
ICAgZGVmIF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9u
cyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRfcXVvdGEoc2VsZiwgcXVvdGEpOgotICAg
ICAgICBzZWxmLl9xdW90YSA9IHF1b3RhCi0KLSAgICBkZWYgcXVvdGEoc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9xdW90YQotCi0gICAgZGVmIHNldF9leHRlbnNpb25zKHNlbGYsIGV4dGVu
c2lvbnMpOgotICAgICAgICBzZWxmLl9leHRlbnNpb25zID0gZXh0ZW5zaW9ucwotCi0gICAgZGVm
IGV4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9leHRlbnNpb25zCi0KLQot
X2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lv
blByb2Nlc3NvcgotCi0KLWRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVx
dWVzdCk6Ci0gICAgIiIiR2l2ZW4gYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIHJlcHJlc2VudGluZyBh
biBleHRlbnNpb24gb2ZmZXIgcmVjZWl2ZWQKLSAgICBmcm9tIGEgY2xpZW50LCBjb25maWd1cmVz
IGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgZXh0ZW5z
aW9uIHByb2Nlc3NvciBjbGFzcy4KLSAgICAiIiIKLQotICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9h
dmFpbGFibGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQotICAgIGlm
IHByb2Nlc3Nvcl9jbGFzcyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVy
biBwcm9jZXNzb3JfY2xhc3MoZXh0ZW5zaW9uX3JlcXVlc3QpCi0KLQotZGVmIGlzX2NvbXByZXNz
aW9uX2V4dGVuc2lvbihleHRlbnNpb25fbmFtZSk6Ci0gICAgcmV0dXJuIGV4dGVuc2lvbl9uYW1l
IGluIF9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGRhYWQyN2Y1M2M0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSVtb2R1
bGUgZmFzdF9tYXNraW5nCi0KLSVpbmNsdWRlICJjc3RyaW5nLmkiCi0KLSV7Ci0jaW5jbHVkZSA8
Y3N0cmluZz4KLQotI2lmZGVmIF9fU1NFMl9fCi0jaW5jbHVkZSA8ZW1taW50cmluLmg+Ci0jZW5k
aWYKLSV9Ci0KLSVhcHBseSAoY2hhciAqU1RSSU5HLCBpbnQgTEVOR1RIKSB7Ci0gICAgKGNvbnN0
IGNoYXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCksCi0gICAgKGNvbnN0IGNoYXIqIG1h
c2tpbmdfa2V5LCBpbnQgbWFza2luZ19rZXlfbGVuZ3RoKSB9OwotJWNzdHJpbmdfb3V0cHV0X2Fs
bG9jYXRlX3NpemUoCi0gICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoLCBkZWxl
dGUgW10gKiQxKTsKLQotJWlubGluZSAlewotCi12b2lkIG1hc2soCi0gICAgY29uc3QgY2hhciog
cGF5bG9hZCwgaW50IHBheWxvYWRfbGVuZ3RoLAotICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5
LCBpbnQgbWFza2luZ19rZXlfbGVuZ3RoLAotICAgIGludCBtYXNraW5nX2tleV9pbmRleCwKLSAg
ICBjaGFyKiogcmVzdWx0LCBpbnQqIHJlc3VsdF9sZW5ndGgpIHsKLSAgKnJlc3VsdCA9IG5ldyBj
aGFyW3BheWxvYWRfbGVuZ3RoXTsKLSAgKnJlc3VsdF9sZW5ndGggPSBwYXlsb2FkX2xlbmd0aDsK
LSAgbWVtY3B5KCpyZXN1bHQsIHBheWxvYWQsIHBheWxvYWRfbGVuZ3RoKTsKLQotICBjaGFyKiBj
dXJzb3IgPSAqcmVzdWx0OwotICBjaGFyKiBjdXJzb3JfZW5kID0gKnJlc3VsdCArICpyZXN1bHRf
bGVuZ3RoOwotCi0jaWZkZWYgX19TU0UyX18KLSAgd2hpbGUgKChjdXJzb3IgPCBjdXJzb3JfZW5k
KSAmJgotICAgICAgICAgKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihjdXJzb3IpICYgMHhmKSkg
ewotICAgICpjdXJzb3IgXj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdOwotICAgICsr
Y3Vyc29yOwotICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkg
JSBtYXNraW5nX2tleV9sZW5ndGg7Ci0gIH0KLSAgaWYgKGN1cnNvciA9PSBjdXJzb3JfZW5kKSB7
Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKLSAgX19t
MTI4aSBtYXNraW5nX2tleV9ibG9jazsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQmxvY2tTaXpl
OyArK2kpIHsKLSAgICAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZtYXNraW5nX2tleV9ibG9j
aykgKyBpKSA9Ci0gICAgICAgIG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICBt
YXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlf
bGVuZ3RoOwotICB9Ci0KLSAgd2hpbGUgKGN1cnNvciArIGtCbG9ja1NpemUgPD0gY3Vyc29yX2Vu
ZCkgewotICAgIF9fbTEyOGkgcGF5bG9hZF9ibG9jayA9Ci0gICAgICAgIF9tbV9sb2FkX3NpMTI4
KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvcikpOwotICAgIF9tbV9zdHJlYW1fc2kx
MjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oY3Vyc29yKSwKLSAgICAgICAgICAgICAgICAg
ICAgIF9tbV94b3Jfc2kxMjgocGF5bG9hZF9ibG9jaywgbWFza2luZ19rZXlfYmxvY2spKTsKLSAg
ICBjdXJzb3IgKz0ga0Jsb2NrU2l6ZTsKLSAgfQotI2VuZGlmCi0KLSAgd2hpbGUgKGN1cnNvciA8
IGN1cnNvcl9lbmQpIHsKLSAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2lu
ZGV4XTsKLSAgICArK2N1cnNvcjsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tl
eV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOwotICB9Ci19Ci0KLSV9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTk0ZjZiMzk1YWUyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBA
IC0xLDExMCArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgb3Blbmlu
ZyBoYW5kc2hha2UgcHJvY2Vzc29yLiBUaGlzIGNsYXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUK
LW9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvcnMgZm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1
bnRpbCBhIGNvbm5lY3Rpb24gaXMKLXN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4KLSIiIgotCi0K
LWltcG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZy
b20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTAwCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkKLSMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNl
cHRpb24sIEhhbmRzaGFrZUV4Y2VwdGlvbiwgYW5kIFZlcnNpb25FeGNlcHRpb24KLSMgc3ltYm9s
IGZyb20gdGhpcyBtb2R1bGUuCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2Ug
aW1wb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLQotCi1fTE9HR0VSID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0
LCBkaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9RmFsc2UsIHN0cmljdD1GYWxzZSk6Ci0gICAgIiIi
UGVyZm9ybXMgV2ViU29ja2V0IGhhbmRzaGFrZS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVl
c3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAo
ZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAgIGFsbG93RHJhZnQ3NTogb2Jzb2xldGUgYXJn
dW1lbnQuIGlnbm9yZWQuCi0gICAgICAgIHN0cmljdDogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9y
ZWQuCi0KLSAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNv
dXJjZSBpbiBwZXJmb3JtaW5nCi0gICAgaGFuZHNoYWtlLgotICAgICIiIgotCi0gICAgX0xPR0dF
Ui5kZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVl
c3QudXJpKQotICAgICMgVG8gcHJpbnQgbWltZXRvb2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUt
bGluZSBzdHJpbmcsIHdlIGNvbnZlcnRzCi0gICAgIyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0
LiBXaXRob3V0IGNvbnZlcnNpb24sIGlmIHdlIHVzZSAlciwgaXQganVzdAotICAgICMgcHJpbnRz
IHRoZSB0eXBlIGFuZCBhZGRyZXNzLCBhbmQgaWYgd2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9y
aWdpbmFsCi0gICAgIyBoZWFkZXIgc3RyaW5nIGFzIG11bHRpcGxlIGxpbmVzLgotICAgICMKLSAg
ICAjIEJvdGggbWltZXRvb2xzLk1lc3NhZ2UgYW5kIE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9u
IGNhbiBiZQotICAgICMgY29udmVydGVkIHRvIGRpY3QuCi0gICAgIwotICAgICMgbWltZXRvb2xz
Lk1lc3NhZ2UuX19zdHJfXyByZXR1cm5zIHRoZSBvcmlnaW5hbCBoZWFkZXIgc3RyaW5nLgotICAg
ICMgZGljdChtaW1ldG9vbHMuTWVzc2FnZSBvYmplY3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhl
YWRlciBuYW1lcyB0bwotICAgICMgaGVhZGVyIHZhbHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRv
ZXNuJ3QgaGF2ZSBzdWNoIF9fc3RyX18gYnV0IGp1c3QKLSAgICAjIF9fcmVwcl9fIHdoaWNoIGZv
cm1hdHMgaXRzZWxmIGFzIHdlbGwgYXMgZGljdGlvbmFyeSBvYmplY3QuCi0gICAgX0xPR0dFUi5k
ZWJ1ZygKLSAgICAgICAgJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcics
IGRpY3QocmVxdWVzdC5oZWFkZXJzX2luKSkKLQotICAgIGhhbmRzaGFrZXJzID0gW10KLSAgICBo
YW5kc2hha2Vycy5hcHBlbmQoCi0gICAgICAgICgnUkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgKLSAgICAgICAg
KCdIeUJpIDAwJywgaHliaTAwLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotCi0g
ICAgZm9yIG5hbWUsIGhhbmRzaGFrZXIgaW4gaGFuZHNoYWtlcnM6Ci0gICAgICAgIF9MT0dHRVIu
ZGVidWcoJ1RyeWluZyBwcm90b2NvbCB2ZXJzaW9uICVzJywgbmFtZSkKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgX0xPR0dF
Ui5pbmZvKCdFc3RhYmxpc2hlZCAoJXMgcHJvdG9jb2wpJywgbmFtZSkKLSAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
X0xPR0dFUi5kZWJ1ZygKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5p
bmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcicsCi0gICAgICAgICAgICAgICAgbmFtZSwg
ZSkKLSAgICAgICAgICAgIGlmIGUuc3RhdHVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAg
ICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICByYWlz
ZQotICAgICAgICBleGNlcHQgVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJhaXNl
Ci0KLSAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFs
bCBoYW5kc2hha2VycyBmYWlsLgotICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAg
ICAgJ0ZhaWxlZCB0byBjb21wbGV0ZSBvcGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJs
ZSBwcm90b2NvbHMnLAotICAgICAgICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFV
RVNUKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTNhNTg0
YjdiMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiQ29tbW9uIGZ1bmN0aW9ucyBhbmQgZXhjZXB0aW9ucyB1c2VkIGJ5IFdlYlNv
Y2tldCBvcGVuaW5nIGhhbmRzaGFrZQotcHJvY2Vzc29ycy4KLSIiIgotCi0KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRw
X2hlYWRlcl91dGlsCi0KLQotY2xhc3MgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24p
OgotICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRpbmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFs
bHkuCi0KLSAgICBJZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNo
YWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCi0gICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90
aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIgd2lsbCBiZSBpbnZva2VkLgotCi0gICAg
SWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhl
IGNvbm5lY3Rpb24gd2lsbAotICAgIGJlIGNsb3NlZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtl
LiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChTKSBoYW5kbGVyCi0gICAgd2lsbCBiZSBpbnZv
a2VkLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihF
eGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4g
ZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZwotICAgIFdlYlNvY2tldCBpbml0aWFsIGhh
bmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9
Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhhbmRzaGFrZUV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18o
bmFtZSkKLSAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0dXMKLQotCi1jbGFzcyBWZXJzaW9uRXhj
ZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQg
d2hlbiBhIHZlcnNpb24gb2YgY2xpZW50IHJlcXVlc3QgZG9lcyBub3QKLSAgICBtYXRjaCB3aXRo
IHZlcnNpb24gdGhlIHNlcnZlciBzdXBwb3J0cy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9JycpOgotICAgICAgICAiIiJDb25zdHJ1
Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9uOiBhIHN0ciBvYmplY3QgdG8gc2hvdyBzdXBwb3J0ZWQgaHliaSB2ZXJzaW9ucy4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAnOCwgMTMnKQotICAgICAgICAiIiIK
LSAgICAgICAgc3VwZXIoVmVyc2lvbkV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKLSAg
ICAgICAgc2VsZi5zdXBwb3J0ZWRfdmVyc2lvbnMgPSBzdXBwb3J0ZWRfdmVyc2lvbnMKLQotCi1k
ZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUpOgotICAgIGlmIGlzX3NlY3VyZToKLSAgICAg
ICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQKLSAgICBlbHNl
OgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCi0KLQotZGVm
IHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKToKLSAgICAiIiJWYWxpZGF0ZSBhIHZh
bHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZpZWxkLgotCi0gICAgU2VlIHRoZSBT
ZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2YgUkZDIDY0NTUuCi0gICAgIiIiCi0KLSAg
ICBpZiBub3Qgc3VicHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbign
SW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScpCi0KLSAgICAjIFBhcmFtZXRlciBzaG91
bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgotICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5Q
YXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCi0gICAgdG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNv
bnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgcmVzdCA9IGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0
ZSkKLSAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwgfHN1YnByb3RvY29sfCBpcyBub3Qgb25l
IHRva2VuIG9yIGludmFsaWQuIElmCi0gICAgIyB8cmVzdHwgaXMgTm9uZSwgfHRva2VufCBtdXN0
IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3RvY29sfCBpcwotICAgICMgY29uY2F0ZW5hdGlv
biBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5vdCBOb25lLgotICAgIGlmIHJlc3QgaXMg
bm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBub24t
dG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICduYW1lOiAlcicgJSByZXN0KQotCi0KLWRlZiBwYXJzZV9ob3N0X2hlYWRlcihyZXF1
ZXN0KToKLSAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLkhPU1RfSEVBREVS
XS5zcGxpdCgnOicsIDEpCi0gICAgaWYgbGVuKGZpZWxkcykgPT0gMToKLSAgICAgICAgcmV0dXJu
IGZpZWxkc1swXSwgZ2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0LmlzX2h0dHBzKCkpCi0gICAgdHJ5
OgotICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQoZmllbGRzWzFdKQotICAgIGV4Y2VwdCBW
YWx1ZUVycm9yLCBlOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQg
cG9ydCBudW1iZXIgZm9ybWF0OiAlcicgJSBlKQotCi0KLWRlZiBmb3JtYXRfaGVhZGVyKG5hbWUs
IHZhbHVlKToKLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKG5hbWUsIHZhbHVlKQotCi0KLWRl
ZiBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkpOgotICAgIHZhbHVlID0gcmVxdWVz
dC5oZWFkZXJzX2luLmdldChrZXkpCi0gICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdIZWFkZXIgJXMgaXMgbm90IGRlZmluZWQnICUga2V5KQot
ICAgIHJldHVybiB2YWx1ZQotCi0KLWRlZiB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKHJlcXVl
c3QsIGtleSwgZXhwZWN0ZWRfdmFsdWUsIGZhaWxfc3RhdHVzPU5vbmUpOgotICAgIHZhbHVlID0g
Z2V0X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5KQotCi0gICAgaWYgdmFsdWUubG93ZXIo
KSAhPSBleHBlY3RlZF92YWx1ZS5sb3dlcigpOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNl
cHRpb24oCi0gICAgICAgICAgICAnRXhwZWN0ZWQgJXIgZm9yIGhlYWRlciAlcyBidXQgZm91bmQg
JXIgKGNhc2UtaW5zZW5zaXRpdmUpJyAlCi0gICAgICAgICAgICAoZXhwZWN0ZWRfdmFsdWUsIGtl
eSwgdmFsdWUpLCBzdGF0dXM9ZmFpbF9zdGF0dXMpCi0KLQotZGVmIGNoZWNrX3JlcXVlc3RfbGlu
ZShyZXF1ZXN0KToKLSAgICAjIDUuMSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmlu
ZyAiR0VUIi4KLSAgICAjIDUuMSAyLiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJh
Y3RlciAoMHgyMCBieXRlKS4KLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAg
ICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdNZXRob2QgaXMgbm90IEdFVDogJXInICUgcmVx
dWVzdC5tZXRob2QpCi0KLSAgICBpZiByZXF1ZXN0LnByb3RvY29sICE9ICdIVFRQLzEuMSc6Ci0g
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignVmVyc2lvbiBpcyBub3QgSFRUUC8xLjE6
ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnByb3RvY29s
KQotCi0KLWRlZiBwYXJzZV90b2tlbl9saXN0KGRhdGEpOgotICAgICIiIlBhcnNlcyBhIGhlYWRl
ciB2YWx1ZSB3aGljaCBmb2xsb3dzIDEjdG9rZW4gYW5kIHJldHVybnMgcGFyc2VkIGVsZW1lbnRz
Ci0gICAgYXMgYSBsaXN0IG9mIHN0cmluZ3MuCi0KLSAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUg
dHJpbW1lZC4KLSAgICAiIiIKLQotICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5n
U3RhdGUoZGF0YSkKLQotICAgIHRva2VuX2xpc3QgPSBbXQotCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgdG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAg
ICAgIGlmIHRva2VuIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdG9rZW5fbGlzdC5hcHBlbmQo
dG9rZW4pCi0KLSAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQot
Ci0gICAgICAgIGlmIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKLSAgICAg
ICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9z
dHJpbmcoc3RhdGUsICcsJyk6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIGEgY29tbWEgYnV0IGZvdW5kICVyJyAlIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkpCi0KLSAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25z
dW1lX2x3c2VzKHN0YXRlKQotCi0gICAgaWYgbGVuKHRva2VuX2xpc3QpID09IDA6Ci0gICAgICAg
IHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignTm8gdmFsaWQgdG9rZW4gZm91bmQnKQotCi0gICAg
cmV0dXJuIHRva2VuX2xpc3QKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWFkMTBlYTM3MjgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L2hhbmRzaGFrZS9oeWJpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIwICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRlcyB0aGUgb3BlbmluZyBoYW5k
c2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0Ci1wcm90b2NvbCAoUkZDIDY0NTUpLgot
Ci1TcGVjaWZpY2F0aW9uOgotaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQotIiIi
Ci0KLQotIyBOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgaXMgdXNlZCBpbiB0aGlzIG1v
ZHVsZSwgZXZlbiB0aG91Z2ggbW9kX3B5dGhvbgotIyBkb2N1bWVudCBzYXlzIHRoYXQgaXQgc2hv
dWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uIGhhbmRsZXJzLgotIyBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLCByZXF1ZXN0LndyaXRlIGlz
IG5vdAotIyBzdWl0YWJsZSBiZWNhdXNlIGl0IGRvZXNuJ3QgYWxsb3cgZGlyZWN0IHJhdyBieXRl
cyB3cml0aW5nLgotCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MK
LWltcG9ydCByZQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nvcgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgaXNfY29tcHJlc3Npb25fZXh0
ZW5zaW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGNoZWNr
X3JlcXVlc3RfbGluZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBmb3JtYXRfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IGdldF9tYW5kYXRvcnlfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV90b2tlbl9saXN0Ci1mcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIKLWZyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJvdG9j
b2wKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4
Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KLWZyb20g
bW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi0jIFVzZWQgdG8gdmFsaWRhdGUgdGhlIHZhbHVlIGlu
IHRoZSBTZWMtV2ViU29ja2V0LUtleSBoZWFkZXIgc3RyaWN0bHkuIFJGQyA0NjQ4Ci0jIGRpc2Fs
bG93cyBub24temVybyBwYWRkaW5nLCBzbyB0aGUgY2hhcmFjdGVyIHJpZ2h0IGJlZm9yZSA9PSBt
dXN0IGJlIGFueSBvZgotIyBBLCBRLCBnIGFuZCB3LgotX1NFQ19XRUJTT0NLRVRfS0VZX1JFR0VY
ID0gcmUuY29tcGlsZSgnXlsrLzAtOUEtWmEtel17MjF9W0FRZ3ddPT0kJykKLQotIyBEZWZpbmlu
ZyBhbGlhc2VzIGZvciB2YWx1ZXMgdXNlZCBmcmVxdWVudGx5LgotX1ZFUlNJT05fTEFURVNUID0g
Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKLV9WRVJTSU9OX0xBVEVTVF9TVFJJTkcgPSBzdHIo
X1ZFUlNJT05fTEFURVNUKQotX1NVUFBPUlRFRF9WRVJTSU9OUyA9IFsKLSAgICBfVkVSU0lPTl9M
QVRFU1QsCi1dCi0KLQotZGVmIGNvbXB1dGVfYWNjZXB0KGtleSk6Ci0gICAgIiIiQ29tcHV0ZXMg
dmFsdWUgZm9yIHRoZSBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIgZnJvbSB2YWx1ZSBvZiB0
aGUKLSAgICBTZWMtV2ViU29ja2V0LUtleSBoZWFkZXIuCi0gICAgIiIiCi0KLSAgICBhY2NlcHRf
YmluYXJ5ID0gdXRpbC5zaGExX2hhc2goCi0gICAgICAgIGtleSArIGNvbW1vbi5XRUJTT0NLRVRf
QUNDRVBUX1VVSUQpLmRpZ2VzdCgpCi0gICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2Nl
cHRfYmluYXJ5KQotCi0gICAgcmV0dXJuIChhY2NlcHQsIGFjY2VwdF9iaW5hcnkpCi0KLQotY2xh
c3MgSGFuZHNoYWtlcihvYmplY3QpOgotICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nv
ciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNoZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3Qg
YW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9w
eXRob24gcmVxdWVzdC4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgKGRpc3Bh
dGNoLkRpc3BhdGNoZXIpLgotCi0gICAgICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRl
cyBzdWNoIGFzIHdzX3Jlc291cmNlIGR1cmluZyBoYW5kc2hha2UuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBk
aXNwYXRjaGVyCi0KLSAgICBkZWYgX3ZhbGlkYXRlX2Nvbm5lY3Rpb25faGVhZGVyKHNlbGYpOgot
ICAgICAgICBjb25uZWN0aW9uID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LCBjb21tb24uQ09OTkVDVElPTl9IRUFERVIpCi0KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMgPSBwYXJzZV90b2tlbl9saXN0KGNvbm5lY3Rp
b24pCi0gICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJz
ZSAlczogJXMnICUgKGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgZSkpCi0KLSAgICAgICAgY29u
bmVjdGlvbl9pc192YWxpZCA9IEZhbHNlCi0gICAgICAgIGZvciB0b2tlbiBpbiBjb25uZWN0aW9u
X3Rva2VuczoKLSAgICAgICAgICAgIGlmIHRva2VuLmxvd2VyKCkgPT0gY29tbW9uLlVQR1JBREVf
Q09OTkVDVElPTl9UWVBFLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pc192
YWxpZCA9IFRydWUKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3QgY29ubmVj
dGlvbl9pc192YWxpZDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnJXMgaGVhZGVyIGRvZXNuXCd0IGNvbnRhaW4gIiVzIicgJQotICAgICAg
ICAgICAgICAgIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5F
Q1RJT05fVFlQRSkpCi0KLSAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2xvc2VfcmVhc29uID0gTm9uZQotCi0gICAgICAgICMgUGFyc2luZy4KLQotICAgICAgICBjaGVj
a19yZXF1ZXN0X2xpbmUoc2VsZi5fcmVxdWVzdCkKLQotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRv
cnlfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCwKLSAgICAgICAgICAgIGNvbW1v
bi5VUEdSQURFX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9U
WVBFKQotCi0gICAgICAgIHNlbGYuX3ZhbGlkYXRlX2Nvbm5lY3Rpb25faGVhZGVyKCkKLQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3Jlc291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKLQotICAg
ICAgICB1bnVzZWRfaG9zdCA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsIGNv
bW1vbi5IT1NUX0hFQURFUikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24gPSBz
ZWxmLl9jaGVja192ZXJzaW9uKCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9n
ZXRfb3JpZ2luKCkKLSAgICAgICAgICAgIHNlbGYuX3NldF9wcm90b2NvbCgpCi0gICAgICAgICAg
ICBzZWxmLl9wYXJzZV9leHRlbnNpb25zKCkKLQotICAgICAgICAgICAgIyBLZXkgdmFsaWRhdGlv
biwgcmVzcG9uc2UgZ2VuZXJhdGlvbi4KLQotICAgICAgICAgICAga2V5ID0gc2VsZi5fZ2V0X2tl
eSgpCi0gICAgICAgICAgICAoYWNjZXB0LCBhY2NlcHRfYmluYXJ5KSA9IGNvbXB1dGVfYWNjZXB0
KGtleSkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAn
JXM6ICVyICglcyknLAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQ
VF9IRUFERVIsCi0gICAgICAgICAgICAgICAgYWNjZXB0LAotICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGFjY2VwdF9iaW5hcnkpKQotCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQotCi0gICAgICAgICAgICAjIFNldHVwIGV4
dGVuc2lvbiBwcm9jZXNzb3JzLgotCi0gICAgICAgICAgICBwcm9jZXNzb3JzID0gW10KLSAgICAg
ICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9yZXF1ZXN0IGluIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nv
ciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KQotICAgICAgICAg
ICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVlc3RzIGFyZSBqdXN0IGlnbm9yZWQu
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHByb2Nlc3NvcikKLSAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBwcm9jZXNzb3JzCi0KLSAg
ICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBUaGUgZXh0cmEgaGFuZHNoYWtlIGhh
bmRsZXIgbWF5IGFkZCBoZWFkZXIKLSAgICAgICAgICAgICMgZGF0YSBhcyBuYW1lL3ZhbHVlIHBh
aXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBwZW5kcwotICAgICAgICAgICAgIyB0
aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgotICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC5leHRyYV9oZWFkZXJzID0gW10KLQotICAgICAgICAgICAgIyBFeHRyYSBoYW5kc2hha2UgaGFu
ZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgotICAgICAgICAgICAgc2VsZi5fZGlz
cGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgICAgIHBy
b2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nlc3NvcjogcHJvY2Vzc29yIGlzIG5vdCBOb25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVu
c2lvbl9wcm9jZXNzb3JzKQotCi0gICAgICAgICAgICAjIEFzayBlYWNoIHByb2Nlc3NvciBpZiB0
aGVyZSBhcmUgZXh0ZW5zaW9ucyBvbiB0aGUgcmVxdWVzdCB3aGljaAotICAgICAgICAgICAgIyBj
YW5ub3QgY28tZXhpc3QuIFdoZW4gcHJvY2Vzc29yIGRlY2lkZWQgb3RoZXIgcHJvY2Vzc29ycyBj
YW5ub3QKLSAgICAgICAgICAgICMgY28tZXhpc3Qgd2l0aCBpdCwgdGhlIHByb2Nlc3NvciBtYXJr
cyB0aGVtIChvciBpdHNlbGYpIGFzCi0gICAgICAgICAgICAjICJpbmFjdGl2ZSIuIFRoZSBmaXJz
dCBleHRlbnNpb24gcHJvY2Vzc29yIGhhcyB0aGUgcmlnaHQgdG8KLSAgICAgICAgICAgICMgbWFr
ZSB0aGUgZmluYWwgY2FsbC4KLSAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcmV2ZXJzZWQo
cHJvY2Vzc29ycyk6Ci0gICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgot
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhl
cl9wcm9jZXNzb3JzKAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykKLSAgICAg
ICAgICAgIHByb2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nlc3NvcjogcHJvY2Vzc29yLmlz
X2FjdGl2ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQot
Ci0gICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KLQotICAgICAgICAgICAgIyBX
ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IG9mIG11eCBleHRlbnNpb24gaGVyZS4KLSAgICAg
ICAgICAgICMgSWYgbXV4IGV4dGVuc2lvbiBleGlzdHM6Ci0gICAgICAgICAgICAjIC0gUmVtb3Zl
IHByb2Nlc3NvcnMgb2YgZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLAotICAgICAgICAg
ICAgIyAgIHdoaWNoIGFyZSBwcm9jZXNzb3JzIGxvY2F0ZWQgYmVmb3JlIHRoZSBtdXggcHJvY2Vz
c29yCi0gICAgICAgICAgICAjIC0gUGFzcyBleHRlbnNpb24gcmVxdWVzdHMgZm9yIGxvZ2ljYWwg
Y2hhbm5lbCB0byBtdXggcHJvY2Vzc29yCi0gICAgICAgICAgICAjIC0gQXR0YWNoIHRoZSBtdXgg
cHJvY2Vzc29yIHRvIHRoZSByZXF1ZXN0LiBJdCB3aWxsIGJlIHJlZmVycmVkCi0gICAgICAgICAg
ICAjICAgYnkgZGlzcGF0Y2hlciB0byBzZWUgd2hldGhlciB0aGUgZGlzcGF0Y2hlciBzaG91bGQg
dXNlIG11eAotICAgICAgICAgICAgIyAgIGhhbmRsZXIgb3Igbm90LgotICAgICAgICAgICAgbXV4
X2luZGV4ID0gLTEKLSAgICAgICAgICAgIGZvciBpLCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHBy
b2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5uYW1lKCkgPT0gY29tbW9u
Lk1VWF9FWFRFTlNJT046Ci0gICAgICAgICAgICAgICAgICAgIG11eF9pbmRleCA9IGkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG11eF9pbmRleCA+PSAwOgotICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zID0gW10KLSAgICAgICAgICAg
ICAgICBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnNbOm11eF9pbmRleF06Ci0gICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zLmFwcGVuZChwcm9jZXNzb3IucmVx
dWVzdCgpKQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0X2FjdGl2ZShGYWxzZSkK
LSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lm11eF9wcm9jZXNzb3IgPSBwcm9jZXNzb3Jz
W211eF9pbmRleF0KLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lm11eF9wcm9jZXNzb3Iu
c2V0X2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRl
bnNpb25zKQotICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nl
c3NvcjogcHJvY2Vzc29yLmlzX2FjdGl2ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29ycykKLQotICAgICAgICAgICAgc3RyZWFtX29wdGlvbnMgPSBTdHJl
YW1PcHRpb25zKCkKLQotICAgICAgICAgICAgZm9yIGluZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVy
YXRlKHByb2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0
aXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBl
eHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgICMgUmVqZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAg
ICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25fcmVzcG9u
c2UpCi0KLSAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbnMpCi0KLSAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29tcHJlc3Npb25fZXh0
ZW5zaW9uKHByb2Nlc3Nvci5uYW1lKCkpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgICAgICAgICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbXBy
ZXNzaW9uIGV4dGVuc2lvbnMuCi0gICAgICAgICAgICAgICAgZm9yIGogaW4geHJhbmdlKGluZGV4
ICsgMSwgbGVuKHByb2Nlc3NvcnMpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNfY29tcHJl
c3Npb25fZXh0ZW5zaW9uKHByb2Nlc3NvcnNbal0ubmFtZSgpKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkKLQotICAgICAgICAgICAgaWYg
bGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25zCi0gICAgICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAnRXh0ZW5zaW9ucyBhY2Nl
cHRlZDogJXInLAotICAgICAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlci5uYW1lLCBhY2NlcHRlZF9leHRlbnNpb25zKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gTm9uZQotCi0gICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3RyZWFt
X29wdGlvbnMpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3By
b3RvY29scyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3Byb3RvY29sIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb19leHRyYV9oYW5kc2hha2UgbXVz
dCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZyb20gJwotICAgICAgICAgICAgICAgICAgICAgICAg
J3dzX3JlcXVlc3RlZF9wcm90b2NvbHMgYW5kIHNldCBpdCB0byB3c19wcm90b2NvbCcpCi0gICAg
ICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZi5fcmVxdWVzdC53c19wcm90b2Nv
bCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAgICAgJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xpZW50IGRpZG5cJ3QgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnByb3RvY29sJykKLQotICAg
ICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQotICAgICAgICBleGNlcHQgSGFu
ZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgbm90IGUuc3RhdHVzOgotICAgICAg
ICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJhZCByZXF1ZXN0IGJ5IGRlZmF1bHQuCi0gICAg
ICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QKLSAg
ICAgICAgICAgIHJhaXNlIGUKLQotICAgIGRlZiBfZ2V0X29yaWdpbihzZWxmKToKLSAgICAgICAg
b3JpZ2luX2hlYWRlciA9IGNvbW1vbi5PUklHSU5fSEVBREVSCi0gICAgICAgIG9yaWdpbiA9IHNl
bGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQob3JpZ2luX2hlYWRlcikKLSAgICAgICAgaWYgb3Jp
Z2luIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCByZXF1
ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2luIGhlYWRlcicpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3Nfb3JpZ2luID0gb3JpZ2luCi0KLSAgICBkZWYgX2NoZWNrX3ZlcnNpb24oc2VsZik6Ci0gICAg
ICAgIHZlcnNpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVS
U0lPTl9IRUFERVIpCi0gICAgICAgIGlmIHZlcnNpb24gPT0gX1ZFUlNJT05fTEFURVNUX1NUUklO
RzoKLSAgICAgICAgICAgIHJldHVybiBfVkVSU0lPTl9MQVRFU1QKLQotICAgICAgICBpZiB2ZXJz
aW9uLmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSB2ZXJzaW9ucyAoJXIpIGFyZSBub3QgYWxsb3dl
ZCBmb3IgaGVhZGVyICVzJyAlCi0gICAgICAgICAgICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1ZFUlNJT05fSEVBREVSKSwKLSAgICAgICAgICAgICAgICBzdGF0dXM9Y29tbW9u
LkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICByYWlzZSBWZXJzaW9uRXhjZXB0aW9u
KAotICAgICAgICAgICAgJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9yIGhlYWRlciAlcycgJQot
ICAgICAgICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVS
KSwKLSAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz0nLCAnLmpvaW4obWFwKHN0ciwgX1NV
UFBPUlRFRF9WRVJTSU9OUykpKQotCi0gICAgZGVmIF9zZXRfcHJvdG9jb2woc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0KLSAgICAgICAgcHJvdG9jb2xf
aGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1v
bi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKLQotICAgICAgICBpZiBwcm90b2NvbF9o
ZWFkZXIgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3By
b3RvY29scyA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rva2VuX2xpc3QoCi0gICAgICAgICAg
ICBwcm90b2NvbF9oZWFkZXIpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3VicHJvdG9j
b2xzIHJlcXVlc3RlZDogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQotCi0gICAgZGVmIF9wYXJzZV9leHRlbnNpb25z
KHNlbGYpOgotICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9IHNlbGYuX3JlcXVlc3QuaGVhZGVy
c19pbi5nZXQoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hF
QURFUikKLSAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVhZGVyOgotICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9IE5vbmUKLSAgICAgICAgICAgIHJl
dHVybgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVz
dGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAg
ICBleHRlbnNpb25zX2hlYWRlcikKLSAgICAgICAgZXhjZXB0IGNvbW1vbi5FeHRlbnNpb25QYXJz
aW5nRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25z
IGhlYWRlcjogJXInICUgZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnRXh0ZW5zaW9ucyByZXF1ZXN0ZWQ6ICVyJywKLSAgICAgICAgICAgIG1hcChjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyLm5hbWUsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucykpCi0KLSAgICBkZWYgX3ZhbGlkYXRlX2tleShzZWxmLCBr
ZXkpOgotICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6Ci0gICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBsaW5lcyBv
ciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGlsbGVn
YWwgY2hhcmFjdGVyIFwnLFwnOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQotCi0gICAgICAg
ICMgVmFsaWRhdGUKLSAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVmb3JlIHBh
cnNpbmcgYnkgYmFzZTY0Ci0gICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNlNjQgbW9k
dWxlIHNraXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQotICAgICAgICAgICAgIyB0byBk
byB0aGlzIGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWplY3QgaWxs
ZWdhbAotICAgICAgICAgICAgIyBrZXlzLgotICAgICAgICAgICAgaWYgX1NFQ19XRUJTT0NLRVRf
S0VZX1JFR0VYLm1hdGNoKGtleSk6Ci0gICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkgPSBiYXNl
NjQuYjY0ZGVjb2RlKGtleSkKLSAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9rZXkpID09
IDE2OgotICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCi0gICAgICAgIGV4
Y2VwdCBUeXBlRXJyb3IsIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgaWYgbm90IGtl
eV9pc192YWxpZDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlcicgJQotICAgICAgICAg
ICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQotCi0gICAgICAg
IHJldHVybiBkZWNvZGVkX2tleQotCi0gICAgZGVmIF9nZXRfa2V5KHNlbGYpOgotICAgICAgICBr
ZXkgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIGNv
bW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCi0KLSAgICAgICAgZGVjb2RlZF9rZXkgPSBz
ZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAg
ICAgICAgICAgICclczogJXIgKCVzKScsCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tF
VF9LRVlfSEVBREVSLAotICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgdXRpbC5oZXhpZnko
ZGVjb2RlZF9rZXkpKQotCi0gICAgICAgIHJldHVybiBrZXkKLQotICAgIGRlZiBfY3JlYXRlX3N0
cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIHJldHVybiBTdHJlYW0oc2VsZi5f
cmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2VfcmVz
cG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJykKLQot
ICAgICAgICAjIFdlYlNvY2tldCBoZWFkZXJzCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3Jt
YXRfaGVhZGVyKAotICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21tb24uV0VC
U09DS0VUX1VQR1JBREVfVFlQRSkpCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVh
ZGVyKAotICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFE
RV9DT05ORUNUSU9OX1RZUEUpKQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRl
cigKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2Vw
dCkpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgICAg
ICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlmIChzZWxmLl9yZXF1ZXN0Lndz
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICBsZW4oc2VsZi5fcmVxdWVz
dC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3Jt
YXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lP
TlNfSEVBREVSLAotICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhzZWxm
Ll9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKLQotICAgICAgICAjIEhlYWRlcnMgbm90IHNwZWNp
ZmljIGZvciBXZWJTb2NrZXQKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX3JlcXVl
c3QuZXh0cmFfaGVhZGVyczoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVh
ZGVyKG5hbWUsIHZhbHVlKSkKLQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ1xyXG4nKQotCi0g
ICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNlKQotCi0gICAgZGVmIF9zZW5kX2hhbmRzaGFr
ZShzZWxmLCBhY2NlcHQpOgotICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFu
ZHNoYWtlX3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlKHJhd19yZXNwb25zZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW50IHNl
cnZlclwncyBvcGVuaW5nIGhhbmRzaGFrZTogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmF3X3Jlc3BvbnNlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODc1NzcxN2E2MzliLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBvcGVuaW5n
IGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZlcnNpb24g
SHlCaSAwMC4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMAotIiIiCi0KLQotIyBOb3RlOiBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZl
biB0aG91Z2gKLSMgbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUg
dXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KLSMgaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhh
dmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBh
cmUgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVz
Ci0jIHdyaXRpbmcvcmVhZGluZy4KLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBv
cnQgc3RydWN0Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9k
X3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IGNoZWNrX3JlcXVlc3RfbGluZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBmb3JtYXRfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UuX2Jhc2UgaW1wb3J0IGdldF9kZWZhdWx0X3BvcnQKLWZyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfaG9zdF9oZWFkZXIKLWZy
b20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcgotCi0KLV9NQU5EQVRPUllfSEVBREVSUyA9IFsKLSAgICAjIGtleSwgZXhwZWN0
ZWQgdmFsdWUgb3IgTm9uZQotICAgIFtjb21tb24uVVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJT
T0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzVdLAotICAgIFtjb21tb24uQ09OTkVDVElPTl9IRUFE
RVIsIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRV0sCi1dCi0KLQotZGVmIF92YWxpZGF0
ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCk6Ci0gICAgIiIiQ2hlY2tzIGlmIGNoYXJhY3RlcnMg
aW4gc3VicHJvdG9jb2wgYXJlIGluIHJhbmdlIGJldHdlZW4gVSswMDIwIGFuZAotICAgIFUrMDA3
RS4gQSB2YWx1ZSBpbiB0aGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBmaWVsZCBuZWVkIHRvIHNh
dGlzZnkgdGhpcwotICAgIHJlcXVpcmVtZW50LgotCi0gICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4g
T3BlbmluZyBoYW5kc2hha2Ugb2YgdGhlIHNwZWMuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3Vi
cHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJw
cm90b2NvbCBuYW1lOiBlbXB0eScpCi0KLSAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgaW4gdGhl
IHJhbmdlIFUrMDAyMCB0byBVKzAwN0UuCi0gICAgZm9yIGMgaW4gc3VicHJvdG9jb2w6Ci0gICAg
ICAgIGlmIG5vdCAweDIwIDw9IG9yZChjKSA8PSAweDdlOgotICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbGxlZ2FsIGNoYXJhY3RlciBpbiBz
dWJwcm90b2NvbCBuYW1lOiAlcicgJSBjKQotCi0KLWRlZiBfY2hlY2tfaGVhZGVyX2xpbmVzKHJl
cXVlc3QsIG1hbmRhdG9yeV9oZWFkZXJzKToKLSAgICBjaGVja19yZXF1ZXN0X2xpbmUocmVxdWVz
dCkKLQotICAgICMgVGhlIGV4cGVjdGVkIGZpZWxkIG5hbWVzLCBhbmQgdGhlIG1lYW5pbmcgb2Yg
dGhlaXIgY29ycmVzcG9uZGluZwotICAgICMgdmFsdWVzLCBhcmUgYXMgZm9sbG93cy4KLSAgICAj
ICB8VXBncmFkZXwgYW5kIHxDb25uZWN0aW9ufAotICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVl
IGluIG1hbmRhdG9yeV9oZWFkZXJzOgotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVy
KHJlcXVlc3QsIGtleSwgZXhwZWN0ZWRfdmFsdWUpCi0KLQotZGVmIF9idWlsZF9sb2NhdGlvbihy
ZXF1ZXN0KToKLSAgICAiIiJCdWlsZCBXZWJTb2NrZXQgbG9jYXRpb24gZm9yIHJlcXVlc3QuIiIi
Ci0KLSAgICBsb2NhdGlvbl9wYXJ0cyA9IFtdCi0gICAgaWYgcmVxdWVzdC5pc19odHRwcygpOgot
ICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NLRVRfU0VDVVJFX1ND
SEVNRSkKLSAgICBlbHNlOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldF
Ql9TT0NLRVRfU0NIRU1FKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAgICBo
b3N0LCBwb3J0ID0gcGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCkKLSAgICBjb25uZWN0aW9uX3Bv
cnQgPSByZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkclsxXQotICAgIGlmIHBvcnQgIT0gY29u
bmVjdGlvbl9wb3J0OgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlci9j
b25uZWN0aW9uIHBvcnQgbWlzbWF0Y2g6ICVkLyVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocG9ydCwgY29ubmVjdGlvbl9wb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5h
cHBlbmQoaG9zdCkKLSAgICBpZiAocG9ydCAhPSBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNf
aHR0cHMoKSkpOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzonKQotICAgICAgICBs
b2NhdGlvbl9wYXJ0cy5hcHBlbmQoc3RyKHBvcnQpKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVu
ZChyZXF1ZXN0LnVucGFyc2VkX3VyaSkKLSAgICByZXR1cm4gJycuam9pbihsb2NhdGlvbl9wYXJ0
cykKLQotCi1jbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToK
LSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRj
aGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KLQotICAgICAgICBIYW5kc2hh
a2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5n
Ci0gICAgICAgIGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9
IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLQotICAgIGRl
ZiBkb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm0gV2ViU29ja2V0IEhhbmRz
aGFrZS4KLQotICAgICAgICBPbiBfcmVxdWVzdCwgd2Ugc2V0Ci0gICAgICAgICAgICB3c19yZXNv
dXJjZSwgd3NfcHJvdG9jb2wsIHdzX2xvY2F0aW9uLCB3c19vcmlnaW4sIHdzX2NoYWxsZW5nZSwK
LSAgICAgICAgICAgIHdzX2NoYWxsZW5nZV9tZDU6IFdlYlNvY2tldCBoYW5kc2hha2UgaW5mb3Jt
YXRpb24uCi0gICAgICAgICAgICB3c19zdHJlYW06IEZyYW1lIGdlbmVyYXRpb24vcGFyc2luZyBj
bGFzcy4KLSAgICAgICAgICAgIHdzX3ZlcnNpb246IFByb3RvY29sIHZlcnNpb24uCi0KLSAgICAg
ICAgUmFpc2VzOgotICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0aW9uOiB3aGVuIGFueSBlcnJv
ciBoYXBwZW5lZCBpbiBwYXJzaW5nIHRoZSBvcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhhbmRzaGFrZSByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICAjIDUu
MSBSZWFkaW5nIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgIyBkaXNw
YXRjaGVyIHNldHMgaXQgaW4gc2VsZi5fcmVxdWVzdC4KLSAgICAgICAgX2NoZWNrX2hlYWRlcl9s
aW5lcyhzZWxmLl9yZXF1ZXN0LCBfTUFOREFUT1JZX0hFQURFUlMpCi0gICAgICAgIHNlbGYuX3Nl
dF9yZXNvdXJjZSgpCi0gICAgICAgIHNlbGYuX3NldF9zdWJwcm90b2NvbCgpCi0gICAgICAgIHNl
bGYuX3NldF9sb2NhdGlvbigpCi0gICAgICAgIHNlbGYuX3NldF9vcmlnaW4oKQotICAgICAgICBz
ZWxmLl9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29s
X3ZlcnNpb24oKQotCi0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtl
KHNlbGYuX3JlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoKQotCi0gICAg
ZGVmIF9zZXRfcmVzb3VyY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVzb3Vy
Y2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQotCi0gICAgZGVmIF9zZXRfc3VicHJvdG9jb2woc2VsZik6
Ci0gICAgICAgICMgfFNlYy1XZWJTb2NrZXQtUHJvdG9jb2x8Ci0gICAgICAgIHN1YnByb3RvY29s
ID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKLSAgICAgICAgaWYgc3VicHJvdG9jb2wgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBzdWJwcm90b2NvbAotCi0gICAgZGVm
IF9zZXRfbG9jYXRpb24oc2VsZik6Ci0gICAgICAgICMgfEhvc3R8Ci0gICAgICAgIGhvc3QgPSBz
ZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5IT1NUX0hFQURFUikKLSAgICAgICAg
aWYgaG9zdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRp
b24gPSBfYnVpbGRfbG9jYXRpb24oc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgIyBUT0RPKHVrYWkp
OiBjaGVjayBob3N0IGlzIHRoaXMgaG9zdC4KLQotICAgIGRlZiBfc2V0X29yaWdpbihzZWxmKToK
LSAgICAgICAgIyB8T3JpZ2lufAotICAgICAgICBvcmlnaW4gPSBzZWxmLl9yZXF1ZXN0LmhlYWRl
cnNfaW4uZ2V0KGNvbW1vbi5PUklHSU5fSEVBREVSKQotICAgICAgICBpZiBvcmlnaW4gaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9IG9yaWdpbgotCi0g
ICAgZGVmIF9zZXRfcHJvdG9jb2xfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIyB8U2VjLVdlYlNv
Y2tldC1EcmFmdHwKLSAgICAgICAgZHJhZnQgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0
KGNvbW1vbi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUikKLSAgICAgICAgaWYgZHJhZnQgaXMg
bm90IE5vbmUgYW5kIGRyYWZ0ICE9ICcwJzoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignSWxsZWdhbCB2YWx1ZSBmb3IgJXM6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnQpKQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnUHJvdG9jb2wgdmVyc2lvbiBpcyBIeUJpIDAwJykKLSAgICAgICAg
c2VsZi5fcmVxdWVzdC53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSTAwCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Qud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShzZWxmLl9yZXF1ZXN0LCBU
cnVlKQotCi0gICAgZGVmIF9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICAj
IDUuMiA0LTguCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlID0gc2VsZi5fZ2V0
X2NoYWxsZW5nZSgpCi0gICAgICAgICMgNS4yIDkuIGxldCAvcmVzcG9uc2UvIGJlIHRoZSBNRDUg
ZmludGVycHJpbnQgb2YgL2NoYWxsZW5nZS8KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFs
bGVuZ2VfbWQ1ID0gdXRpbC5tZDVfaGFzaCgKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2hhbGxlbmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2hhbGxlbmdlLAotICAgICAgICAgICAgdXRpbC5oZXhpZnkoc2VsZi5fcmVxdWVzdC53c19jaGFs
bGVuZ2UpKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxl
bmdlIHJlc3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hh
bGxlbmdlX21kNSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KHNlbGYuX3JlcXVlc3Qud3NfY2hh
bGxlbmdlX21kNSkpCi0KLSAgICBkZWYgX2dldF9rZXlfdmFsdWUoc2VsZiwga2V5X2ZpZWxkKToK
LSAgICAgICAga2V5X3ZhbHVlID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwg
a2V5X2ZpZWxkKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyJywga2V5X2Zp
ZWxkLCBrZXlfdmFsdWUpCi0KLSAgICAgICAgIyA1LjIgNC4gbGV0IC9rZXktbnVtYmVyX24vIGJl
IHRoZSBkaWdpdHMgKGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCi0gICAgICAgICMgVSswMDMwIERJ
R0lUIFpFUk8gKDApIHRvIFUrMDAzOSBESUdJVCBOSU5FICg5KSkgaW4gL2tleV9uLywKLSAgICAg
ICAgIyBpbnRlcnByZXRlZCBhcyBhIGJhc2UgdGVuIGludGVnZXIsIGlnbm9yaW5nIGFsbCBvdGhl
ciBjaGFyYWN0ZXJzCi0gICAgICAgICMgaW4gL2tleV9uLy4KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAga2V5X251bWJlciA9IGludChyZS5zdWIoIlxcRCIsICIiLCBrZXlfdmFsdWUpKQotICAg
ICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJyVzIGZp
ZWxkIGNvbnRhaW5zIG5vIGRpZ2l0JyAlIGtleV9maWVsZCkKLSAgICAgICAgIyA1LjIgNS4gbGV0
IC9zcGFjZXNfbi8gYmUgdGhlIG51bWJlciBvZiBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVycwotICAg
ICAgICAjIGluIC9rZXlfbi8uCi0gICAgICAgIHNwYWNlcyA9IHJlLnN1Ym4oIiAiLCAiIiwga2V5
X3ZhbHVlKVsxXQotICAgICAgICBpZiBzcGFjZXMgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbignJXMgZmllbGQgY29udGFpbnMgbm8gc3BhY2UnICUga2V5X2ZpZWxk
KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICclczogS2V5LW51
bWJlciBpcyAlZCBhbmQgbnVtYmVyIG9mIHNwYWNlcyBpcyAlZCcsCi0gICAgICAgICAgICBrZXlf
ZmllbGQsIGtleV9udW1iZXIsIHNwYWNlcykKLQotICAgICAgICAjIDUuMiA2LiBpZiAva2V5LW51
bWJlcl9uLyBpcyBub3QgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgL3NwYWNlc19uLwotICAgICAg
ICAjIHRoZW4gYWJvcnQgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICBpZiBrZXlf
bnVtYmVyICUgc3BhY2VzICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJyVzOiBLZXktbnVtYmVyICglZCkgaXMgbm90IGFuIGludGVn
cmFsIG11bHRpcGxlIG9mIHNwYWNlcyAnCi0gICAgICAgICAgICAgICAgJyglZCknICUgKGtleV9m
aWVsZCwga2V5X251bWJlciwgc3BhY2VzKSkKLSAgICAgICAgIyA1LjIgNy4gbGV0IC9wYXJ0X24v
IGJlIC9rZXktbnVtYmVyX24vIGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgcGFydCA9
IGtleV9udW1iZXIgLyBzcGFjZXMKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogUGFy
dCBpcyAlZCcsIGtleV9maWVsZCwgcGFydCkKLSAgICAgICAgcmV0dXJuIHBhcnQKLQotICAgIGRl
ZiBfZ2V0X2NoYWxsZW5nZShzZWxmKToKLSAgICAgICAgIyA1LjIgNC03LgotICAgICAgICBrZXkx
ID0gc2VsZi5fZ2V0X2tleV92YWx1ZShjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVkxX0hFQURFUikK
LSAgICAgICAga2V5MiA9IHNlbGYuX2dldF9rZXlfdmFsdWUoY29tbW9uLlNFQ19XRUJTT0NLRVRf
S0VZMl9IRUFERVIpCi0gICAgICAgICMgNS4yIDguIGxldCAvY2hhbGxlbmdlLyBiZSB0aGUgY29u
Y2F0ZW5hdGlvbiBvZiAvcGFydF8xLywKLSAgICAgICAgY2hhbGxlbmdlID0gJycKLSAgICAgICAg
Y2hhbGxlbmdlICs9IHN0cnVjdC5wYWNrKCchSScsIGtleTEpICAjIG5ldHdvcmsgYnl0ZW9yZGVy
IGludAotICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywga2V5MikgICMgbmV0
d29yayBieXRlb3JkZXIgaW50Ci0gICAgICAgIGNoYWxsZW5nZSArPSBzZWxmLl9yZXF1ZXN0LmNv
bm5lY3Rpb24ucmVhZCg4KQotICAgICAgICByZXR1cm4gY2hhbGxlbmdlCi0KLSAgICBkZWYgX3Nl
bmRfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IFtdCi0KLSAgICAgICAgIyA1
LjIgMTAuIHNlbmQgdGhlIGZvbGxvd2luZyBsaW5lLgotICAgICAgICByZXNwb25zZS5hcHBlbmQo
J0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicpCi0KLSAgICAg
ICAgIyA1LjIgMTEuIHNlbmQgdGhlIGZvbGxvd2luZyBmaWVsZHMgdG8gdGhlIGNsaWVudC4KLSAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24u
VVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUpKQot
ICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1v
bi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKLSAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9MT0NBVElPTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24p
KQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNv
bW1vbi5TRUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2lu
KSkKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbDoKLSAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX3Byb3RvY29sKSkKLSAgICAgICAgIyA1LjIgMTIuIHNlbmQgdHdvIGJ5dGVzIDB4MEQgMHgw
QS4KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdcclxuJykKLSAgICAgICAgIyA1LjIgMTMuIHNl
bmQgL3Jlc3BvbnNlLwotICAgICAgICByZXNwb25zZS5hcHBlbmQoc2VsZi5fcmVxdWVzdC53c19j
aGFsbGVuZ2VfbWQ1KQotCi0gICAgICAgIHJhd19yZXNwb25zZSA9ICcnLmpvaW4ocmVzcG9uc2Up
Ci0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdfcmVzcG9uc2UpCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hh
a2U6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKLQotCi0j
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTBkZDc1
NGE0OTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3
ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL2h5YmkwMC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hl
YWRlcnBhcnNlcmhhbmRsZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFy
c2VyaGFuZGxlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI0NDQyMWNmNzli
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNl
cmhhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBmb3IgbW9kX3B5d2Vic29ja2V0
LgotCi1BcGFjaGUgSFRUUCBTZXJ2ZXIgYW5kIG1vZF9weXRob24gbXVzdCBiZSBjb25maWd1cmVk
IHN1Y2ggdGhhdCB0aGlzCi1mdW5jdGlvbiBpcyBjYWxsZWQgdG8gaGFuZGxlIFdlYlNvY2tldCBy
ZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcKLQotZnJvbSBtb2RfcHl0aG9uIGltcG9y
dCBhcGFjaGUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
aGFuZHNoYWtlCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLSMgUHl0aG9u
T3B0aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgcm9vdCBkaXJlY3RvcnkuCi1fUFlPUFRfSEFO
RExFUl9ST09UID0gJ21vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QnCi0KLSMgUHl0aG9uT3B0
aW9uIHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgc2NhbiBkaXJlY3RvcnkuCi0jIFRoaXMgbXVzdCBi
ZSBhIGRpcmVjdG9yeSB1bmRlciB0aGUgcm9vdCBkaXJlY3RvcnkuCi0jIFRoZSBkZWZhdWx0IGlz
IHRoZSByb290IGRpcmVjdG9yeS4KLV9QWU9QVF9IQU5ETEVSX1NDQU4gPSAnbW9kX3B5d2Vic29j
a2V0LmhhbmRsZXJfc2NhbicKLQotIyBQeXRob25PcHRpb24gdG8gYWxsb3cgaGFuZGxlcnMgd2hv
c2UgY2Fub25pY2FsIHBhdGggaXMKLSMgbm90IHVuZGVyIHRoZSByb290IGRpcmVjdG9yeS4gSXQn
cyBkaXNhbGxvd2VkIGJ5IGRlZmF1bHQuCi0jIFNldCB0aGlzIG9wdGlvbiB3aXRoIHZhbHVlIG9m
ICd5ZXMnIHRvIGFsbG93LgotX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCA9ICgK
LSAgICAnbW9kX3B5d2Vic29ja2V0LmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInKQot
IyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVhbmluZ3MuICdZZXMnIGFuZCAnTm8nIGFyZSBh
bGxvd2VkIGp1c3QgZm9yCi0jIGNvbXBhdGliaWxpdHkuCi1fUFlPUFRfQUxMT1dfSEFORExFUlNf
T1VUU0lERV9ST09UX0RFRklOSVRJT04gPSB7Ci0gICAgJ29mZic6IEZhbHNlLCAnbm8nOiBGYWxz
ZSwgJ29uJzogVHJ1ZSwgJ3llcyc6IFRydWV9Ci0KLSMgKE9ic29sZXRlIG9wdGlvbi4gSWdub3Jl
ZC4pCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRvIGFsbG93IGhhbmRzaGFrZSBkZWZpbmVk
IGluIEhpeGllIDc1IHZlcnNpb24KLSMgcHJvdG9jb2wuIFRoZSBkZWZhdWx0IGlzIE5vbmUgKE9m
ZikKLV9QWU9QVF9BTExPV19EUkFGVDc1ID0gJ21vZF9weXdlYnNvY2tldC5hbGxvd19kcmFmdDc1
JwotIyBNYXAgZnJvbSB2YWx1ZXMgdG8gdGhlaXIgbWVhbmluZ3MuCi1fUFlPUFRfQUxMT1dfRFJB
RlQ3NV9ERUZJTklUSU9OID0geydvZmYnOiBGYWxzZSwgJ29uJzogVHJ1ZX0KLQotCi1jbGFzcyBB
cGFjaGVMb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6Ci0gICAgIiIiV3JhcHBlciBsb2dnaW5n
LkhhbmRsZXIgdG8gZW1pdCBsb2cgbWVzc2FnZSB0byBhcGFjaGUncyBlcnJvci5sb2cuIiIiCi0K
LSAgICBfTEVWRUxTID0gewotICAgICAgICBsb2dnaW5nLkRFQlVHOiBhcGFjaGUuQVBMT0dfREVC
VUcsCi0gICAgICAgIGxvZ2dpbmcuSU5GTzogYXBhY2hlLkFQTE9HX0lORk8sCi0gICAgICAgIGxv
Z2dpbmcuV0FSTklORzogYXBhY2hlLkFQTE9HX1dBUk5JTkcsCi0gICAgICAgIGxvZ2dpbmcuRVJS
T1I6IGFwYWNoZS5BUExPR19FUlIsCi0gICAgICAgIGxvZ2dpbmcuQ1JJVElDQUw6IGFwYWNoZS5B
UExPR19DUklULAotICAgICAgICB9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdD1O
b25lKToKLSAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNl
bGYuX2xvZ19lcnJvciA9IGFwYWNoZS5sb2dfZXJyb3IKLSAgICAgICAgaWYgcmVxdWVzdCBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ19lcnJvciA9IHJlcXVlc3QubG9nX2Vycm9y
Ci0KLSAgICAgICAgIyBUaW1lIGFuZCBsZXZlbCB3aWxsIGJlIHByaW50ZWQgYnkgQXBhY2hlLgot
ICAgICAgICBzZWxmLl9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcignJShuYW1lKXM6ICUo
bWVzc2FnZSlzJykKLQotICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6Ci0gICAgICAgIGFwYWNo
ZV9sZXZlbCA9IGFwYWNoZS5BUExPR19ERUJVRwotICAgICAgICBpZiByZWNvcmQubGV2ZWxubyBp
biBBcGFjaGVMb2dIYW5kbGVyLl9MRVZFTFM6Ci0gICAgICAgICAgICBhcGFjaGVfbGV2ZWwgPSBB
cGFjaGVMb2dIYW5kbGVyLl9MRVZFTFNbcmVjb3JkLmxldmVsbm9dCi0KLSAgICAgICAgbXNnID0g
c2VsZi5fZm9ybWF0dGVyLmZvcm1hdChyZWNvcmQpCi0KLSAgICAgICAgIyAic2VydmVyIiBwYXJh
bWV0ZXIgbXVzdCBiZSBwYXNzZWQgdG8gaGF2ZSAibGV2ZWwiIHBhcmFtZXRlciB3b3JrLgotICAg
ICAgICAjIElmIG9ubHkgImxldmVsIiBwYXJhbWV0ZXIgaXMgcGFzc2VkLCBub3RoaW5nIHNob3dz
IHVwIG9uIEFwYWNoZSdzCi0gICAgICAgICMgbG9nLiBIb3dldmVyLCBhdCB0aGlzIHBvaW50LCB3
ZSBjYW5ub3QgZ2V0IHRoZSBzZXJ2ZXIgb2JqZWN0IG9mIHRoZQotICAgICAgICAjIHZpcnR1YWwg
aG9zdCB3aGljaCB3aWxsIHByb2Nlc3MgV2ViU29ja2V0IHJlcXVlc3RzLiBUaGUgb25seSBzZXJ2
ZXIKLSAgICAgICAgIyBvYmplY3Qgd2UgY2FuIGdldCBoZXJlIGlzIGFwYWNoZS5tYWluX3NlcnZl
ci4gQnV0IFdoZXJldmVyIChzZXJ2ZXIKLSAgICAgICAgIyBjb25maWd1cmF0aW9uIGNvbnRleHQg
b3IgdmlydHVhbCBob3N0IGNvbnRleHQpIHdlIHB1dAotICAgICAgICAjIFB5dGhvbkhlYWRlclBh
cnNlckhhbmRsZXIgZGlyZWN0aXZlLCBhcGFjaGUubWFpbl9zZXJ2ZXIganVzdCBwb2ludHMKLSAg
ICAgICAgIyB0aGUgbWFpbiBzZXJ2ZXIgaW5zdGFuY2UgKG5vdCBhbnkgb2YgdmlydHVhbCBzZXJ2
ZXIgaW5zdGFuY2UpLiBUaGVuLAotICAgICAgICAjIEFwYWNoZSBmb2xsb3dzIExvZ0xldmVsIGRp
cmVjdGl2ZSBpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gY29udGV4dAotICAgICAgICAjIHRv
IGZpbHRlciBsb2dzLiBTbywgd2UgbmVlZCB0byBzcGVjaWZ5IExvZ0xldmVsIGluIHRoZSBzZXJ2
ZXIKLSAgICAgICAgIyBjb25maWd1cmF0aW9uIGNvbnRleHQuIEV2ZW4gaWYgd2Ugc3BlY2lmeSAi
TG9nTGV2ZWwgZGVidWciIGluIHRoZQotICAgICAgICAjIHZpcnR1YWwgaG9zdCBjb250ZXh0IHdo
aWNoIGFjdHVhbGx5IGhhbmRsZXMgV2ViU29ja2V0IGNvbm5lY3Rpb25zLAotICAgICAgICAjIERF
QlVHIGxldmVsIGxvZ3MgbmV2ZXIgc2hvdyB1cCB1bmxlc3MgIkxvZ0xldmVsIGRlYnVnIiBpcyBz
cGVjaWZpZWQKLSAgICAgICAgIyBpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gY29udGV4dC4K
LSAgICAgICAgIwotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBQcm92aWRlIGxvZ2dpbmcgbWV0
aG9kcyBvbiByZXF1ZXN0IG9iamVjdC4gV2hlbgotICAgICAgICAjIHJlcXVlc3QgaXMgbXBfcmVx
dWVzdCBvYmplY3QgKHdoZW4gdXNlZCB0b2dldGhlciB3aXRoIEFwYWNoZSksIHRoZQotICAgICAg
ICAjIG1ldGhvZHMgY2FsbCByZXF1ZXN0LmxvZ19lcnJvciBpbmRpcmVjdGx5LiBXaGVuIHJlcXVl
c3QgaXMKLSAgICAgICAgIyBfU3RhbmRhbG9uZVJlcXVlc3QsIHRoZSBtZXRob2RzIGNhbGwgUHl0
aG9uJ3MgbG9nZ2luZyBmYWNpbGl0eSB3aGljaAotICAgICAgICAjIHdlIGNyZWF0ZSBpbiBzdGFu
ZGFsb25lLnB5LgotICAgICAgICBzZWxmLl9sb2dfZXJyb3IobXNnLCBhcGFjaGVfbGV2ZWwsIGFw
YWNoZS5tYWluX3NlcnZlcikKLQotCi1kZWYgX2NvbmZpZ3VyZV9sb2dnaW5nKCk6Ci0gICAgbG9n
Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgICMgTG9ncyBhcmUgZmlsdGVyZWQgYnkgQXBh
Y2hlIGJhc2VkIG9uIExvZ0xldmVsIGRpcmVjdGl2ZSBpbiBBcGFjaGUKLSAgICAjIGNvbmZpZ3Vy
YXRpb24gZmlsZS4gV2UgbXVzdCBqdXN0IHBhc3MgbG9ncyBmb3IgYWxsIGxldmVscyB0bwotICAg
ICMgQXBhY2hlTG9nSGFuZGxlci4KLSAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykK
LSAgICBsb2dnZXIuYWRkSGFuZGxlcihBcGFjaGVMb2dIYW5kbGVyKCkpCi0KLQotX2NvbmZpZ3Vy
ZV9sb2dnaW5nKCkKLQotX0xPR0dFUiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0K
LWRlZiBfcGFyc2Vfb3B0aW9uKG5hbWUsIHZhbHVlLCBkZWZpbml0aW9uKToKLSAgICBpZiB2YWx1
ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIG1lYW5pbmcgPSBkZWZpbml0
aW9uLmdldCh2YWx1ZS5sb3dlcigpKQotICAgIGlmIG1lYW5pbmcgaXMgTm9uZToKLSAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIHZhbHVlIGZvciBQeXRob25PcHRpb24gJXM6ICVyJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUpKQotICAgIHJldHVybiBtZWFu
aW5nCi0KLQotZGVmIF9jcmVhdGVfZGlzcGF0Y2hlcigpOgotICAgIF9MT0dHRVIuaW5mbygnSW5p
dGlhbGl6aW5nIERpc3BhdGNoZXInKQotCi0gICAgb3B0aW9ucyA9IGFwYWNoZS5tYWluX3NlcnZl
ci5nZXRfb3B0aW9ucygpCi0KLSAgICBoYW5kbGVyX3Jvb3QgPSBvcHRpb25zLmdldChfUFlPUFRf
SEFORExFUl9ST09ULCBOb25lKQotICAgIGlmIG5vdCBoYW5kbGVyX3Jvb3Q6Ci0gICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignUHl0aG9uT3B0aW9uICVzIGlzIG5vdCBkZWZpbmVkJyAlIF9QWU9QVF9I
QU5ETEVSX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfRVJSKQot
Ci0gICAgaGFuZGxlcl9zY2FuID0gb3B0aW9ucy5nZXQoX1BZT1BUX0hBTkRMRVJfU0NBTiwgaGFu
ZGxlcl9yb290KQotCi0gICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290ID0gX3BhcnNlX29w
dGlvbigKLSAgICAgICAgX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCwKLSAgICAg
ICAgb3B0aW9ucy5nZXQoX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVCksCi0gICAg
ICAgIF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1RfREVGSU5JVElPTikKLQotICAg
IGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAotICAgICAgICBoYW5kbGVyX3Jvb3Qs
IGhhbmRsZXJfc2NhbiwgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290KQotCi0gICAgZm9yIHdh
cm5pbmcgaW4gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKToKLSAgICAgICAgYXBhY2hlLmxv
Z19lcnJvcigKLSAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IFdhcm5pbmcgaW4gc291cmNl
IGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcsCi0gICAgICAgICAgICBhcGFjaGUuQVBMT0dfV0FSTklO
RykKLQotICAgIHJldHVybiBkaXNwYXRjaGVyCi0KLQotIyBJbml0aWFsaXplCi1fZGlzcGF0Y2hl
ciA9IF9jcmVhdGVfZGlzcGF0Y2hlcigpCi0KLQotZGVmIGhlYWRlcnBhcnNlcmhhbmRsZXIocmVx
dWVzdCk6Ci0gICAgIiIiSGFuZGxlIHJlcXVlc3QuCi0KLSAgICBBcmdzOgotICAgICAgICByZXF1
ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIG5hbWVkIGhl
YWRlcnBhcnNlcmhhbmRsZXIgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdAotICAgIG5hbWUgZm9y
IGEgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlci4KLSAgICAiIiIKLQotICAgIGhhbmRzaGFrZV9p
c19kb25lID0gRmFsc2UKLSAgICB0cnk6Ci0gICAgICAgICMgRmFsbGJhY2sgdG8gZGVmYXVsdCBo
dHRwIGhhbmRsZXIgZm9yIHJlcXVlc3QgcGF0aHMgZm9yIHdoaWNoCi0gICAgICAgICMgd2UgZG9u
J3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgotICAgICAgICBpZiBub3QgX2Rpc3BhdGNoZXIuZ2V0
X2hhbmRsZXJfc3VpdGUocmVxdWVzdC51cmkpOgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJy
b3IoCi0gICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogTm8gaGFuZGxlciBmb3IgcmVz
b3VyY2U6ICVyJyAlIHJlcXVlc3QudXJpLAotICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19J
TkZPKQotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAgICAgJ21v
ZF9weXdlYnNvY2tldDogRmFsbGJhY2sgdG8gQXBhY2hlJywgYXBhY2hlLkFQTE9HX0lORk8pCi0g
ICAgICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0gICAgZXhjZXB0IGRpc3BhdGNoLkRp
c3BhdGNoRXhjZXB0aW9uLCBlOgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigKLSAgICAgICAg
ICAgICdtb2RfcHl3ZWJzb2NrZXQ6IERpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVzJyAlIGUs
Ci0gICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAgaWYgbm90IGhhbmRzaGFr
ZV9pc19kb25lOgotICAgICAgICAgICAgcmV0dXJuIGUuc3RhdHVzCi0KLSAgICB0cnk6Ci0gICAg
ICAgIGFsbG93X2RyYWZ0NzUgPSBfcGFyc2Vfb3B0aW9uKAotICAgICAgICAgICAgX1BZT1BUX0FM
TE9XX0RSQUZUNzUsCi0gICAgICAgICAgICBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29wdGlvbnMo
KS5nZXQoX1BZT1BUX0FMTE9XX0RSQUZUNzUpLAotICAgICAgICAgICAgX1BZT1BUX0FMTE9XX0RS
QUZUNzVfREVGSU5JVElPTikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kc2hha2Uu
ZG9faGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHJlcXVlc3QsIF9kaXNwYXRjaGVyLCBhbGxv
d0RyYWZ0NzU9YWxsb3dfZHJhZnQ3NSkKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9u
RXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAg
ICAgICAgJ21vZF9weXdlYnNvY2tldDogSGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJv
cjogJXMnICUgZSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAg
ICAgIHJlcXVlc3QuZXJyX2hlYWRlcnNfb3V0LmFkZChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN1
cHBvcnRlZF92ZXJzaW9ucykKLSAgICAgICAgICAgIHJldHVybiBhcGFjaGUuSFRUUF9CQURfUkVR
VUVTVAotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiwgZToKLSAg
ICAgICAgICAgICMgSGFuZHNoYWtlIGZvciB3cy93c3MgZmFpbGVkLgotICAgICAgICAgICAgIyBT
ZW5kIGh0dHAgcmVzcG9uc2Ugd2l0aCBlcnJvciBzdGF0dXMuCi0gICAgICAgICAgICByZXF1ZXN0
LmxvZ19lcnJvcigKLSAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBIYW5kc2hha2Ug
ZmFpbGVkIGZvciBlcnJvcjogJXMnICUgZSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0df
SU5GTykKLSAgICAgICAgICAgIHJldHVybiBlLnN0YXR1cwotCi0gICAgICAgIGhhbmRzaGFrZV9p
c19kb25lID0gVHJ1ZQotICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gX2Rpc3BhdGNoZXIK
LSAgICAgICAgX2Rpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIGV4Y2VwdCBo
YW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwgZToKLSAgICAgICAgcmVxdWVzdC5sb2df
ZXJyb3IoJ21vZF9weXdlYnNvY2tldDogQWJvcnRlZDogJXMnICUgZSwgYXBhY2hlLkFQTE9HX0lO
Rk8pCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlv
biBjYW4gYWxzbyBiZSB0aHJvd24gaWYgc29tZXRoaW5nIGlzIHdyb25nIGluCi0gICAgICAgICMg
cHl3ZWJzb2NrZXQgY29kZS4gSXQncyBjYXVnaHQgaGVyZSwgdGhlbi4KLQotICAgICAgICByZXF1
ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiBFeGNlcHRpb24gb2NjdXJyZWQ6ICVzXG4l
cycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgdXRpbC5nZXRfc3RhY2tfdHJhY2Uo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19FUlIpCi0gICAgICAg
ICMgVW5rbm93biBleGNlcHRpb25zIGJlZm9yZSBoYW5kc2hha2UgbWVhbiBBcGFjaGUgbXVzdCBo
YW5kbGUgaXRzCi0gICAgICAgICMgcmVxdWVzdCB3aXRoIGFub3RoZXIgaGFuZGxlci4KLSAgICAg
ICAgaWYgbm90IGhhbmRzaGFrZV9pc19kb25lOgotICAgICAgICAgICAgcmV0dXJuIGFwYWNoZS5E
RUNMSU5FRAotICAgICMgU2V0IGFzc2JhY2t3YXJkcyB0byBzdXBwcmVzcyByZXNwb25zZSBoZWFk
ZXIgZ2VuZXJhdGlvbiBieSBBcGFjaGUuCi0gICAgcmVxdWVzdC5hc3NiYWNrd2FyZHMgPSAxCi0g
ICAgcmV0dXJuIGFwYWNoZS5ET05FICAjIFJldHVybiBET05FIHN1Y2ggdGhhdCBubyBvdGhlciBo
YW5kbGVycyBhcmUgaW52b2tlZC4KLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
bW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI3NzQ2NTM5MzI4NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYzICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlV0aWxpdGllcyBmb3IgcGFyc2luZyBhbmQg
Zm9ybWF0dGluZyBoZWFkZXJzIHRoYXQgZm9sbG93IHRoZSBncmFtbWFyIGRlZmluZWQKLWluIEhU
VFAgUkZDIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0LgotIiIiCi0KLQotaW1w
b3J0IHVybHBhcnNlCi0KLQotX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/PXt9IFx0Jwot
Ci0KLWRlZiBfaXNfY2hhcihjKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ0hB
UiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCi0KLSAgICByZXR1cm4gb3JkKGMpIDw9IDEy
NwotCi0KLWRlZiBfaXNfY3RsKGMpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBD
VEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgotCi0gICAgcmV0dXJuIG9yZChjKSA8PSAz
MSBvciBvcmQoYykgPT0gMTI3Ci0KLQotY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVjdCk6Ci0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLSAg
ICAgICAgc2VsZi5oZWFkID0gMAotCi0KLWRlZiBwZWVrKHN0YXRlLCBwb3M9MCk6Ci0gICAgIiIi
UGVla3MgdGhlIGNoYXJhY3RlciBhdCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgotCi0g
ICAgaWYgc3RhdGUuaGVhZCArIHBvcyA+PSBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVy
biBOb25lCi0KLSAgICByZXR1cm4gc3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQotCi0KLWRl
ZiBjb25zdW1lKHN0YXRlLCBhbW91bnQ9MSk6Ci0gICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFt
b3VudCBvZiBieXRlcyBmcm9tIHRoZSBoZWFkIGFuZCByZXR1cm5zIHRoZQotICAgIGNvbnN1bWVk
IGJ5dGVzLiBJZiB0aGVyZSdzIG5vdCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBO
b25lLgotICAgICIiIgotCi0gICAgaWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5k
YXRhKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3Rh
dGUuaGVhZDpzdGF0ZS5oZWFkICsgYW1vdW50XQotICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFk
ICsgYW1vdW50Ci0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb25zdW1lX3N0cmluZyhzdGF0
ZSwgZXhwZWN0ZWQpOgotICAgICIiIkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3Rl
ZCBzdHJpbmcsIGNvbnN1bWVzIHRoZSBzdHJpbmcgZnJvbQotICAgIHRoZSBoZWFkLiBSZXR1cm5z
IFRydWUgaWYgY29uc3VtZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKLSAgICBG
YWxzZS4KLSAgICAiIiIKLQotICAgIHBvcyA9IDAKLQotICAgIGZvciBjIGluIGV4cGVjdGVkOgot
ICAgICAgICBpZiBjICE9IHBlZWsoc3RhdGUsIHBvcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgcG9zICs9IDEKLQotICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICByZXR1
cm4gVHJ1ZQotCi0KLWRlZiBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSBM
V1MgZnJvbSB0aGUgaGVhZC4gUmV0dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCi0g
ICAgT3RoZXJ3aXNlLCByZXR1cm5zIEZhbHNlLgotCi0gICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8
IEhUICkKLSAgICAiIiIKLQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0KLSAgICBj
b25zdW1lX3N0cmluZyhzdGF0ZSwgJ1xyXG4nKQotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUg
VHJ1ZToKLSAgICAgICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyA9PSAnICcg
b3IgYyA9PSAnXHQnOgotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGlmIHBvcyA9PSAwOgotICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5h
bF9oZWFkCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICAgICAgICAgICAgICByZXR1
cm4gVHJ1ZQotCi0KLWRlZiBjb25zdW1lX2x3c2VzKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyAq
TFdTIGZyb20gdGhlIGhlYWQuIiIiCi0KLSAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0g
ICAgICAgIHBhc3MKLQotCi1kZWYgY29uc3VtZV90b2tlbihzdGF0ZSk6Ci0gICAgIiIiQ29uc3Vt
ZXMgYSB0b2tlbiBmcm9tIHRoZSBoZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5v
IHRva2VuCi0gICAgd2FzIGZvdW5kLgotICAgICIiIgotCi0gICAgcG9zID0gMAotCi0gICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyBpcyBO
b25lIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6
Ci0gICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
Ci0gICAgICAgICAgICByZXR1cm4gY29uc3VtZShzdGF0ZSwgcG9zKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcG9zICs9IDEKLQotCi1kZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3Ry
aW5nKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywg
YW5kIHJldHVybnMgdGhlIHRva2VuIG9yIHVucXVvdGVkCi0gICAgc3RyaW5nLiBJZiBubyB0b2tl
biBvciBxdW90ZWQtc3RyaW5nIHdhcyBmb3VuZCwgcmV0dXJucyBOb25lLgotICAgICIiIgotCi0g
ICAgb3JpZ2luYWxfaGVhZCA9IHN0YXRlLmhlYWQKLQotICAgIGlmIG5vdCBjb25zdW1lX3N0cmlu
ZyhzdGF0ZSwgJyInKToKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAg
ICByZXN1bHQgPSBbXQotCi0gICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKLQotICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgIGlmIG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVf
bHdzKHN0YXRlKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQotICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICBjID0gY29uc3VtZShzdGF0ZSkKLSAgICAgICAgaWYgYyBpcyBO
b25lOgotICAgICAgICAgICAgIyBxdW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRv
dWJsZSBxdW90YXRpb24KLSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoK
LSAgICAgICAgICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCi0gICAgICAgICAgICBpZiBf
aXNfY2hhcihjKToKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1
b3RlZC1wYWlyCi0gICAgICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKLSAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKLSAgICAg
ICAgICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICciJzoK
LSAgICAgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZWxpZiBfaXNfY3Rs
KGMpOgotICAgICAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQK
LSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQotCi0K
LWRlZiBxdW90ZV9pZl9uZWNlc3Nhcnkocyk6Ci0gICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJp
bmcgaW50byBxdW90ZWQtc3RyaW5nLiIiIgotCi0gICAgcXVvdGUgPSBGYWxzZQotICAgIGlmIHMg
PT0gJyc6Ci0gICAgICAgIHJldHVybiAnIiInCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBj
IGluIHM6Ci0gICAgICAgIGlmIGMgPT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0
bChjKSBvciBub3QgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICBxdW90ZSA9IFRydWUKLQotICAg
ICAgICBpZiBjID09ICciJyBvciBfaXNfY3RsKGMpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnXFwnICsgYykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykK
LQotICAgIGlmIHF1b3RlOgotICAgICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsg
JyInCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0KLWRlZiBw
YXJzZV91cmkodXJpKToKLSAgICAiIiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9z
dCwgcG9ydCBhbmQgcmVzb3VyY2UuIiIiCi0KLSAgICBwYXJzZWQgPSB1cmxwYXJzZS51cmxzcGxp
dCh1cmkpCi0gICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3NzJyBhbmQgcGFyc2VkLnNjaGVtZSAh
PSAnd3MnOgotICAgICAgICAjIHx1cml8IG11c3QgYmUgYSByZWxhdGl2ZSBVUkkuCi0gICAgICAg
ICMgVE9ETyh0b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8dXJpfC4KLSAgICAgICAgcmV0dXJu
IE5vbmUsIE5vbmUsIHVyaQotCi0gICAgaWYgcGFyc2VkLmhvc3RuYW1lIGlzIE5vbmU6Ci0gICAg
ICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCi0KLSAgICBwb3J0ID0gTm9uZQotICAgIHRyeToK
LSAgICAgICAgcG9ydCA9IHBhcnNlZC5wb3J0Ci0gICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0g
ICAgICAgICMgcG9ydCBwcm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBw
b3J0IGRlc2NyaXB0aW9uIGxpa2UKLSAgICAgICAgIyAnd3M6Ly9ob3N0Oi9wYXRoJy4KLSAgICAg
ICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKLQotICAgIGlmIHBvcnQgaXMgTm9uZToKLSAgICAg
ICAgaWYgcGFyc2VkLnNjaGVtZSA9PSAnd3MnOgotICAgICAgICAgICAgcG9ydCA9IDgwCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3J0ID0gNDQzCi0KLSAgICBwYXRoID0gcGFyc2VkLnBh
dGgKLSAgICBpZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCArPSAnLycKLSAgICBpZiBwYXJzZWQu
cXVlcnk6Ci0gICAgICAgIHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Ci0gICAgaWYgcGFyc2Vk
LmZyYWdtZW50OgotICAgICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFnbWVudAotCi0gICAg
cmV0dXJuIHBhcnNlZC5ob3N0bmFtZSwgcG9ydCwgcGF0aAotCi0KLXRyeToKLSAgICB1cmxwYXJz
ZS51c2VzX25ldGxvYy5pbmRleCgnd3MnKQotZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgIyB1
cmxwYXJzZSBpbiBQeXRob24yLjUuMSBkb2Vzbid0IGhhdmUgJ3dzJyBhbmQgJ3dzcycgZW50cmll
cy4KLSAgICB1cmxwYXJzZS51c2VzX25ldGxvYy5hcHBlbmQoJ3dzJykKLSAgICB1cmxwYXJzZS51
c2VzX25ldGxvYy5hcHBlbmQoJ3dzcycpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRkNGNkOTU4NTk1YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTWVt
b3JpemluZyBmaWxlLgotCi1BIG1lbW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9y
aXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotIiIiCi0KLQotaW1wb3J0IHN5cwotCi0KLWNs
YXNzIE1lbW9yaXppbmdGaWxlKG9iamVjdCk6Ci0gICAgIiIiTWVtb3JpemluZ0ZpbGUgd3JhcHMg
YSBmaWxlIGFuZCBtZW1vcml6ZXMgbGluZXMgcmVhZCBieSByZWFkbGluZS4KLQotICAgIE5vdGUg
dGhhdCBkYXRhIHJlYWQgYnkgb3RoZXIgbWV0aG9kcyBhcmUgbm90IG1lbW9yaXplZC4gVGhpcyBi
ZWhhdmlvcgotICAgIGlzIGdvb2QgZW5vdWdoIGZvciBtZW1vcml6aW5nIGxpbmVzIFNpbXBsZUhU
VFBTZXJ2ZXIgcmVhZHMgYmVmb3JlCi0gICAgdGhlIGNvbnRyb2wgcmVhY2hlcyBXZWJTb2NrZXRS
ZXF1ZXN0SGFuZGxlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlXywg
bWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4aW50KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFu
IGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmaWxlXzogdGhlIGZpbGUg
b2JqZWN0IHRvIHdyYXAuCi0gICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVzOiB0aGUgbWF4
aW11bSBudW1iZXIgb2YgbGluZXMgdG8gbWVtb3JpemUuCi0gICAgICAgICAgICAgICAgT25seSB0
aGUgZmlyc3QgbWF4X21lbW9yaXplZF9saW5lcyBhcmUgbWVtb3JpemVkLgotICAgICAgICAgICAg
ICAgIERlZmF1bHQ6IHN5cy5tYXhpbnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2Zp
bGUgPSBmaWxlXwotICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMgPSBbXQotICAgICAgICBz
ZWxmLl9tYXhfbWVtb3JpemVkX2xpbmVzID0gbWF4X21lbW9yaXplZF9saW5lcwotICAgICAgICBz
ZWxmLl9idWZmZXJlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUgPSBOb25l
Ci0KLSAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgaWYgbmFt
ZSBpbiAoJ19maWxlJywgJ19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMn
LAotICAgICAgICAgICAgICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3Jl
YWRsaW5lJywKLSAgICAgICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKLSAg
ICAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQotICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCi0KLSAgICBkZWYg
cmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxp
bmUgYW5kIG1lbW9yaXplIHRoZSBsaW5lIHJlYWQuCi0KLSAgICAgICAgTm90ZSB0aGF0IGV2ZW4g
aWYgc2l6ZSBpcyBzcGVjaWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKLSAgICAg
ICAgdGhlIHdob2xlIGxpbmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBv
YmplY3QgYnkKLSAgICAgICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgaWYgc2VsZi5fYnVmZmVyZWQ6Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5f
YnVmZmVyZWRfbGluZQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWQgPSBGYWxzZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKQotICAgICAg
ICAgICAgaWYgbGluZSBhbmQgbGVuKHNlbGYuX21lbW9yaXplZF9saW5lcykgPCBzZWxmLl9tYXhf
bWVtb3JpemVkX2xpbmVzOgotICAgICAgICAgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcy5h
cHBlbmQobGluZSkKLSAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBzaXplIDwgbGVuKGxpbmUpOgot
ICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9idWZm
ZXJlZF9saW5lID0gbGluZVtzaXplOl0KLSAgICAgICAgICAgIHJldHVybiBsaW5lWzpzaXplXQot
ICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVmIGdldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6
Ci0gICAgICAgICIiIkdldCBsaW5lcyBtZW1vcml6ZWQgc28gZmFyLiIiIgotICAgICAgICByZXR1
cm4gc2VsZi5fbWVtb3JpemVkX2xpbmVzCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzFh
MDExNGI0YmMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXNn
dXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEx
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi0iIiJNZXNzYWdlIHJlbGF0ZWQgdXRpbGl0aWVzLgotCi1Ob3RlOiByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKLW1v
ZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0IHRoZXkgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBj
b25uZWN0aW9uCi1oYW5kbGVycy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRp
b25zLiBGb3IgZXhhbXBsZSwKLXJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1aXRhYmxlIGJl
Y2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3Ci1ieXRlcyB3cml0aW5nL3JlYWRpbmcu
Ci0iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLQotCi0jIEV4cG9ydCBF
eGNlcHRpb24gc3ltYm9scyBmcm9tIG1zZ3V0aWwgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkK
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQg
SW52YWxpZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi0KLQotIyBBbiBBUEkgZm9y
IGhhbmRsZXIgdG8gc2VuZC9yZWNlaXZlIFdlYlNvY2tldCBtZXNzYWdlcy4KLWRlZiBjbG9zZV9j
b25uZWN0aW9uKHJlcXVlc3QpOgotICAgICIiIkNsb3NlIGNvbm5lY3Rpb24uCi0KLSAgICBBcmdz
OgotICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgIiIiCi0gICAgcmVx
dWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0KLQotZGVmIHNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCBwYXlsb2FkX2RhdGEsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICIiIlNl
bmQgYSBtZXNzYWdlIChvciBwYXJ0IG9mIGEgbWVzc2FnZSkuCi0KLSAgICBBcmdzOgotICAgICAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgIHBheWxvYWRfZGF0YTogdW5p
Y29kZSB0ZXh0IG9yIHN0ciBiaW5hcnkgdG8gc2VuZC4KLSAgICAgICAgZW5kOiBUcnVlIHRvIHRl
cm1pbmF0ZSBhIG1lc3NhZ2UuCi0gICAgICAgICAgICAgRmFsc2UgdG8gc2VuZCBwYXlsb2FkX2Rh
dGEgYXMgcGFydCBvZiBhIG1lc3NhZ2UgdGhhdCBpcyB0byBiZQotICAgICAgICAgICAgIHRlcm1p
bmF0ZWQgYnkgbmV4dCBvciBsYXRlciBzZW5kX21lc3NhZ2UgY2FsbCB3aXRoIGVuZD1UcnVlLgot
ICAgICAgICBiaW5hcnk6IHNlbmQgcGF5bG9hZF9kYXRhIGFzIGJpbmFyeSBmcmFtZShzKS4KLSAg
ICBSYWlzZXM6Ci0gICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBzZXJ2ZXIgYWxy
ZWFkeSB0ZXJtaW5hdGVkLgotICAgICIiIgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVz
c2FnZShwYXlsb2FkX2RhdGEsIGVuZCwgYmluYXJ5KQotCi0KLWRlZiByZWNlaXZlX21lc3NhZ2Uo
cmVxdWVzdCk6Ci0gICAgIiIiUmVjZWl2ZSBhIFdlYlNvY2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0
cyBwYXlsb2FkIGFzIGEgdGV4dCBpbgotICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgot
Ci0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgIFJh
aXNlczoKLSAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgc2Vu
ZCBpbnZhbGlkIGZyYW1lLgotICAgICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVu
IGNsaWVudCBzZW5kIHVuc3VwcG9ydGVkIGZyYW1lIGUuZy4gc29tZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZiByZXNlcnZlZCBiaXQgaXMgc2V0IGJ1dCBubyBleHRlbnNp
b24gY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBpdC4K
LSAgICAgICAgSW52YWxpZFVURjhFeGNlcHRpb246ICAgICAgd2hlbiBjbGllbnQgc2VuZCBhIHRl
eHQgZnJhbWUgY29udGFpbmluZyBhbnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW52YWxpZCBVVEYtOCBzdHJpbmcuCi0gICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhj
ZXB0aW9uOiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkbHkuCi0gICAgICAgIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbjogICAgIHdoZW4gY2xpZW50IGFscmVhZHkgdGVybWluYXRlZC4KLSAgICAiIiIKLSAgICBy
ZXR1cm4gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLQotCi1kZWYgc2VuZF9w
aW5nKHJlcXVlc3QsIGJvZHk9JycpOgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZyhi
b2R5KQotCi0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAi
IiJUaGlzIGNsYXNzIHJlY2VpdmVzIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudC4KLQotICAgIFRo
aXMgY2xhc3MgcHJvdmlkZXMgdGhyZWUgd2F5cyB0byByZWNlaXZlIG1lc3NhZ2VzOiBibG9ja2lu
ZywKLSAgICBub24tYmxvY2tpbmcsIGFuZCB2aWEgY2FsbGJhY2suIENhbGxiYWNrIGhhcyB0aGUg
aGlnaGVzdCBwcmVjZWRlbmNlLgotCi0gICAgTm90ZTogVGhpcyBjbGFzcyBzaG91bGQgbm90IGJl
IHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcwotICAgIGJlY2F1c2UgcHlP
cGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBlcnJvciBpZiB0aGUgc29j
a2V0Ci0gICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToKLSAgICAgICAg
IiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBvbm1lc3NhZ2U6IGEgZnVu
Y3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgotICAgICAgICAg
ICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5jdGlvbiBpcyBj
YWxsZWQgb24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQuIEluIHRoYXQg
Y2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgYW5k
IE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcwotICAgICAgICAgICAg
ICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1lc3NhZ2VzLgot
ICAgICAgICAiIiIKLQotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX3F1ZXVlID0gUXVl
dWUuUXVldWUoKQotICAgICAgICBzZWxmLl9vbm1lc3NhZ2UgPSBvbm1lc3NhZ2UKLSAgICAgICAg
c2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVl
KQotICAgICAgICBzZWxmLnN0YXJ0KCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gcmVjZWl2ZV9tZXNzYWdlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAg
ICAgICAgICAgaWYgc2VsZi5fb25tZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
bm1lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9xdWV1ZS5wdXQobWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgIGNsb3NlX2Nvbm5lY3Rpb24oc2VsZi5fcmVxdWVzdCkKLQotICAgIGRlZiByZWNlaXZlKHNl
bGYpOgotICAgICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgYmxv
Y2tpbmcuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG1lc3NhZ2UgYXMgYSB1bmlj
b2RlIHN0cmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9xdWV1ZS5nZXQo
KQotCi0gICAgZGVmIHJlY2VpdmVfbm93YWl0KHNlbGYpOgotICAgICAgICAiIiIgUmVjZWl2ZSBh
IG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgbm9uLWJsb2NraW5nLgotCi0gICAgICAgIFJldHVy
bnM6Ci0gICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcgaWYgYXZhaWxhYmxl
LiBOb25lIG90aGVyd2lzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IG1lc3NhZ2UgPSBzZWxmLl9xdWV1ZS5nZXRfbm93YWl0KCkKLSAgICAgICAgZXhjZXB0IFF1ZXVl
LkVtcHR5OgotICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKLSAgICAgICAgcmV0dXJuIG1lc3Nh
Z2UKLQotICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICAiIiJSZXF1ZXN0IHRvIHN0b3AgdGhp
cyBpbnN0YW5jZS4KLQotICAgICAgICBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBzdG9wcGVkIGFmdGVy
IHJlY2VpdmluZyB0aGUgbmV4dCBtZXNzYWdlLgotICAgICAgICBUaGlzIG1ldGhvZCBtYXkgbm90
IGJlIHZlcnkgdXNlZnVsLCBidXQgdGhlcmUgaXMgbm8gY2xlYW4gd2F5Ci0gICAgICAgIGluIFB5
dGhvbiB0byBmb3JjZWZ1bGx5IHN0b3AgYSBydW5uaW5nIHRocmVhZC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0KLWNsYXNzIE1lc3NhZ2VTZW5k
ZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyBzZW5kcyBtZXNzYWdlcyB0
byB0aGUgY2xpZW50LgotCi0gICAgVGhpcyBjbGFzcyBwcm92aWRlcyBib3RoIHN5bmNocm9ub3Vz
IGFuZCBhc3luY2hyb25vdXMgd2F5cyB0byBzZW5kCi0gICAgbWVzc2FnZXMuCi0KLSAgICBOb3Rl
OiBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZl
ciBmb3Igd3NzCi0gICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNl
cyBhIGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKLSAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRp
cGxlIHRocmVhZHMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6
Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLSAgICAg
ICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9yZXF1ZXN0
ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICBkZWYgcnVu
KHNlbGYpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbWVzc2FnZSwgY29uZGl0
aW9uID0gc2VsZi5fcXVldWUuZ2V0KCkKLSAgICAgICAgICAgIGNvbmRpdGlvbi5hY3F1aXJlKCkK
LSAgICAgICAgICAgIHNlbmRfbWVzc2FnZShzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQotICAgICAg
ICAgICAgY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBjb25kaXRpb24ucmVsZWFzZSgp
Ci0KLSAgICBkZWYgc2VuZChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiU2VuZCBhIG1lc3Nh
Z2UsIGJsb2NraW5nLiIiIgotCi0gICAgICAgIGNvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRp
b24oKQotICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3F1ZXVlLnB1
dCgobWVzc2FnZSwgY29uZGl0aW9uKSkKLSAgICAgICAgY29uZGl0aW9uLndhaXQoKQotCi0gICAg
ZGVmIHNlbmRfbm93YWl0KHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAiIiJTZW5kIGEgbWVzc2Fn
ZSwgbm9uLWJsb2NraW5nLiIiIgotCi0gICAgICAgIHNlbGYuX3F1ZXVlLnB1dCgobWVzc2FnZSwg
dGhyZWFkaW5nLkNvbmRpdGlvbigpKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9tdXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJz
b2NrZXQvbXV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjMzNDY4NWIzMTEu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTg4OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlz
IGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGV4
aW5nIGV4dGVuc2lvbi4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL2RyYWZ0LWlldGYtaHliaS13ZWJzb2NrZXQtbXVsdGlwbGV4aW5nLTA2Ci0iIiIKLQotCi1p
bXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBjb3B5Ci1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFp
bC5wYXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IHN0cnVjdAotaW1w
b3J0IHRocmVhZGluZwotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0
Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9u
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IEZyYW1lCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJhbWUKLWZyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2Jv
ZHkKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2hlYWRl
cgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfbGVuZ3Ro
X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9m
cmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBoeWJpCi0KLQotX0NP
TlRST0xfQ0hBTk5FTF9JRCA9IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BD
T0RFX0FERF9DSEFOTkVMX1JFUVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQ
T05TRSA9IDEKLV9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1Bf
Q0hBTk5FTCA9IDMKLV9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLV9NQVhfQ0hB
Tk5FTF9JRCA9IDIgKiogMjkgLSAxCi0KLV9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RT
ID0gNjQKLV9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQgPSA4ICogMTAyNAotCi1fSEFORFNIQUtF
X0VOQ09ESU5HX0lERU5USVRZID0gMAotX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQSA9IDEKLQot
IyBXZSBuZWVkIG9ubHkgdGhlc2Ugc3RhdHVzIGNvZGUgZm9yIG5vdy4KLV9IVFRQX0JBRF9SRVNQ
T05TRV9NRVNTQUdFUyA9IHsKLSAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1Q6ICdC
YWQgUmVxdWVzdCcsCi19Ci0KLSMgRHJvcENoYW5uZWwgcmVhc29uIGNvZGUKLSMgVE9ETyhiYXNo
aSk6IERlZmluZSBhbGwgcmVhc29uIGNvZGUgZGVmaW5lZCBpbiAtMDUgZHJhZnQuCi1fRFJPUF9D
T0RFX05PUk1BTF9DTE9TVVJFID0gMTAwMAotCi1fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxB
VElOR19NRVNTQUdFID0gMjAwMQotX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCA9IDIw
MDIKLV9EUk9QX0NPREVfRU5DQVBTVUxBVEVEX0ZSQU1FX0lTX1RSVU5DQVRFRCA9IDIwMDMKLV9E
Uk9QX0NPREVfVU5LTk9XTl9NVVhfT1BDT0RFID0gMjAwNAotX0RST1BfQ09ERV9JTlZBTElEX01V
WF9DT05UUk9MX0JMT0NLID0gMjAwNQotX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RT
ID0gMjAwNgotX0RST1BfQ09ERV9ORVdfQ0hBTk5FTF9TTE9UX1ZJT0xBVElPTiA9IDIwMDcKLV9E
Uk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HID0gMjAxMAotCi1fRFJPUF9DT0RFX1NF
TkRfUVVPVEFfVklPTEFUSU9OID0gMzAwNQotX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9X
ID0gMzAwNgotX0RST1BfQ09ERV9BQ0tOT1dMRURHRUQgPSAzMDA4Ci1fRFJPUF9DT0RFX0JBRF9G
UkFHTUVOVEFUSU9OID0gMzAwOQotCi0KLWNsYXNzIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oRXhj
ZXB0aW9uKToKLSAgICAiIiJFeGNlcHRpb24gaW4gaGFuZGxpbmcgbXVsdGlwbGV4aW5nIGV4dGVu
c2lvbi4iIiIKLSAgICBwYXNzCi0KLQotIyBUZW1wb3JhcnkKLWNsYXNzIE11eE5vdEltcGxlbWVu
dGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gYSBmbG93IGVudGVy
cyB1bmltcGxlbWVudGVkIGNvZGUgcGF0aC4iIiIKLSAgICBwYXNzCi0KLQotY2xhc3MgTG9naWNh
bENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hl
biBsb2dpY2FsIGNvbm5lY3Rpb24gaXMgZ3JhY2VmdWxseSBjbG9zZWQuIiIiCi0gICAgcGFzcwot
Ci0KLWNsYXNzIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFp
c2VkIHdoZW4gdGhlcmUgaXMgYSBwaHlzaWNhbCBjb25uZWN0aW9uIGVycm9yLiIiIgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBkcm9wX2NvZGUsIG1lc3NhZ2U9JycpOgotICAgICAgICBzdXBlcihQ
aHlzaWNhbENvbm5lY3Rpb25FcnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY29k
ZT0lZCwgbWVzc2FnZT0lcicgJSAoZHJvcF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5k
cm9wX2NvZGUgPSBkcm9wX2NvZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0K
LWNsYXNzIExvZ2ljYWxDaGFubmVsRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hl
biB0aGVyZSBpcyBhIGxvZ2ljYWwgY2hhbm5lbCBlcnJvci4iIiIKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY2hhbm5lbF9pZCwgZHJvcF9jb2RlLCBtZXNzYWdlPScnKToKLSAgICAgICAgc3VwZXIo
TG9naWNhbENoYW5uZWxFcnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY2hhbm5l
bF9pZD0lZCwgY29kZT0lZCwgbWVzc2FnZT0lcicgJSAoCi0gICAgICAgICAgICAgICAgY2hhbm5l
bF9pZCwgZHJvcF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hh
bm5lbF9pZAotICAgICAgICBzZWxmLmRyb3BfY29kZSA9IGRyb3BfY29kZQotICAgICAgICBzZWxm
Lm1lc3NhZ2UgPSBtZXNzYWdlCi0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lk
KToKLSAgICBpZiBjaGFubmVsX2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hh
bm5lbCBpZCAlZCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYg
Y2hhbm5lbF9pZCA8IDIgKiogNzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAg
IGlmIGNoYW5uZWxfaWQgPCAyICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFI
JywgMHg4MDAwICsgY2hhbm5lbF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAg
ICAgICAgZmlyc3QgPSBjaHIoMHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0
dXJuIGZpcnN0ICsgc3RydWN0LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBp
ZiBjaGFubmVsX2lkIDwgMiAqKiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcs
IDB4ZTAwMDAwMDAgKyBjaGFubmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5l
bCBpZCAlZCBpcyB0b28gbGFyZ2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1i
ZXIobnVtYmVyKToKLSAgICByZXR1cm4gY3JlYXRlX2xlbmd0aF9oZWFkZXIobnVtYmVyLCBGYWxz
ZSkKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkLCBlbmNv
ZGVkX2hhbmRzaGFrZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5n
PTAsIHJlamVjdGVkPUZhbHNlKToKLSAgICBpZiBlbmNvZGluZyAhPSAwIGFuZCBlbmNvZGluZyAh
PSAxOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVuY29kaW5nICVkJyAlIGVu
Y29kaW5nKQotCi0gICAgZmlyc3RfYnl0ZSA9ICgoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVT
UE9OU0UgPDwgNSkgfAotICAgICAgICAgICAgICAgICAgKHJlamVjdGVkIDw8IDQpIHwgZW5jb2Rp
bmcpCi0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2Rl
X2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKGxl
bihlbmNvZGVkX2hhbmRzaGFrZSkpICsKLSAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSkK
LSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9p
ZCwgY29kZT1Ob25lLCBtZXNzYWdlPScnKToKLSAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBj
b2RlIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVj
aWZpZWQgaWYgbWVzc2FnZSBpcyBzcGVjaWZpZWQnKQotCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTCA8PCA1Ci0gICAgYmxvY2sgPSBjaHIoZmlyc3RfYnl0ZSkgKyBf
ZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkKLSAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAg
ICAgIGJsb2NrICs9IF9lbmNvZGVfbnVtYmVyKDApICMgUmVhc29uIHNpemUKLSAgICBlbHNlOgot
ICAgICAgICByZWFzb24gPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIG1lc3NhZ2UKLSAgICAg
ICAgcmVhc29uX3NpemUgPSBfZW5jb2RlX251bWJlcihsZW4ocmVhc29uKSkKLSAgICAgICAgYmxv
Y2sgKz0gcmVhc29uX3NpemUgKyByZWFzb24KLQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBf
Y3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAg
Zmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1Ci0gICAgYmxvY2sgPSAo
Y2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5l
bF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkK
LSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3Rz
LCBzZW5kX3F1b3RhKToKLSAgICBpZiBzbG90cyA8IDAgb3Igc2VuZF9xdW90YSA8IDA6Ci0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Nsb3RzIGFuZCBzZW5kX3F1b3RhIG11c3QgYmUgbm9uLW5l
Z2F0aXZlLicpCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Qg
PDwgNQotICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSArCi0gICAgICAgICAgICAgX2VuY29k
ZV9udW1iZXIoc2xvdHMpICsKLSAgICAgICAgICAgICBfZW5jb2RlX251bWJlcihzZW5kX3F1b3Rh
KSkKLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9mYWxsYmFja19uZXdfY2hhbm5l
bF9zbG90KCk6Ci0gICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9U
IDw8IDUpIHwgMSAjIFNldCB0aGUgRiBmbGFnCi0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUp
ICsgX2VuY29kZV9udW1iZXIoMCkgKyBfZW5jb2RlX251bWJlcigwKSkKLSAgICByZXR1cm4gYmxv
Y2sKLQotCi1kZWYgX3BhcnNlX3JlcXVlc3RfdGV4dChyZXF1ZXN0X3RleHQpOgotICAgIHJlcXVl
c3RfbGluZSwgaGVhZGVyX2xpbmVzID0gcmVxdWVzdF90ZXh0LnNwbGl0KCdcclxuJywgMSkKLQot
ICAgIHdvcmRzID0gcmVxdWVzdF9saW5lLnNwbGl0KCcgJykKLSAgICBpZiBsZW4od29yZHMpICE9
IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBSZXF1ZXN0LUxpbmUgc3ludGF4ICVy
JyAlIHJlcXVlc3RfbGluZSkKLSAgICBbY29tbWFuZCwgcGF0aCwgdmVyc2lvbl0gPSB3b3Jkcwot
ICAgIGlmIHZlcnNpb24gIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
QmFkIHJlcXVlc3QgdmVyc2lvbiAlcicgJSB2ZXJzaW9uKQotCi0gICAgIyBlbWFpbC5wYXJzZXIu
UGFyc2VyKCkgcGFyc2VzIFJGQyAyODIyIChSRkMgODIyKSBzdHlsZSBoZWFkZXJzLgotICAgICMg
UkZDIDY0NTUgcmVmZXJzIFJGQyAyNjE2IGZvciBoYW5kc2hha2UgcGFyc2luZywgYW5kIFJGQyAy
NjE2IHJlZmVycwotICAgICMgUkZDIDgyMi4KLSAgICBoZWFkZXJzID0gZW1haWwucGFyc2VyLlBh
cnNlcigpLnBhcnNlc3RyKGhlYWRlcl9saW5lcykKLSAgICByZXR1cm4gY29tbWFuZCwgcGF0aCwg
dmVyc2lvbiwgaGVhZGVycwotCi0KLWNsYXNzIF9Db250cm9sQmxvY2sob2JqZWN0KToKLSAgICAi
IiJBIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHBhcnNpbmcgcmVzdWx0IG9mIG11bHRpcGxleGluZyBj
b250cm9sIGJsb2NrLgotICAgIENvbnRyb2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxs
IGJlIGFkZGVkIGJ5IF9NdXhGcmFtZVBheWxvYWRQYXJzZXIuCi0gICAgKGUuZy4gZW5jb2RlZF9o
YW5kc2hha2Ugd2lsbCBiZSBhZGRlZCBmb3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCi0gICAgQWRk
Q2hhbm5lbFJlc3BvbnNlKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29k
ZSk6Ci0gICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0KLQotY2xhc3MgX011eEZyYW1lUGF5
bG9hZFBhcnNlcihvYmplY3QpOgotICAgICIiIkEgY2xhc3MgdGhhdCBwYXJzZXMgbXVsdGlwbGV4
ZWQgZnJhbWUgcGF5bG9hZC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXlsb2FkKToK
LSAgICAgICAgc2VsZi5fZGF0YSA9IHBheWxvYWQKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlv
biA9IDAKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYp
Ci0KLSAgICBkZWYgcmVhZF9jaGFubmVsX2lkKHNlbGYpOgotICAgICAgICAiIiJSZWFkcyBjaGFu
bmVsIGlkLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIFZhbHVlRXJyb3I6IHdoZW4g
dGhlIHBheWxvYWQgZG9lc24ndCBjb250YWluCi0gICAgICAgICAgICAgICAgdmFsaWQgY2hhbm5l
bCBpZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IGxlbihzZWxm
Ll9kYXRhKSAtIHNlbGYuX3JlYWRfcG9zaXRpb24KLSAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9w
b3NpdGlvbgotICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoID09IDA6Ci0gICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLQotICAgICAgICBj
aGFubmVsX2lkID0gb3JkKHNlbGYuX2RhdGFbcG9zXSkKLSAgICAgICAgY2hhbm5lbF9pZF9sZW5n
dGggPSAxCi0gICAgICAgIGlmIGNoYW5uZWxfaWQgJiAweGUwID09IDB4ZTA6Ci0gICAgICAgICAg
ICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgNDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQg
PSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrNF0pWzBdICYgMHgxZmZmZmZmZgotICAgICAgICAgICAg
Y2hhbm5lbF9pZF9sZW5ndGggPSA0Ci0gICAgICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0g
MHhjMDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPCAzOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAg
ICAgICAgY2hhbm5lbF9pZCA9ICgoKGNoYW5uZWxfaWQgJiAweDFmKSA8PCAxNikgKwotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QudW5wYWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zKzE6
cG9zKzNdKVswXSkKLSAgICAgICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gMwotICAgICAgICBl
bGlmIGNoYW5uZWxfaWQgJiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICBpZiByZW1haW5pbmdf
bGVuZ3RoIDwgMjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNo
YW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNr
KCchSCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRh
W3Bvczpwb3MrMl0pWzBdICYgMHgzZmZmCi0gICAgICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9
IDIKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSBjaGFubmVsX2lkX2xlbmd0aAotCi0g
ICAgICAgIHJldHVybiBjaGFubmVsX2lkCi0KLSAgICBkZWYgcmVhZF9pbm5lcl9mcmFtZShzZWxm
KToKLSAgICAgICAgIiIiUmVhZHMgYW4gaW5uZXIgZnJhbWUuCi0KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICAgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3I6IHdoZW4gdGhlIGlubmVyIGZyYW1l
IGlzIGludmFsaWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIGxlbihzZWxmLl9kYXRhKSA9
PSBzZWxmLl9yZWFkX3Bvc2l0aW9uOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVf
SVNfVFJVTkNBVEVEKQotCi0gICAgICAgIGJpdHMgPSBvcmQoc2VsZi5fZGF0YVtzZWxmLl9yZWFk
X3Bvc2l0aW9uXSkKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIGZp
biA9IChiaXRzICYgMHg4MCkgPT0gMHg4MAotICAgICAgICByc3YxID0gKGJpdHMgJiAweDQwKSA9
PSAweDQwCi0gICAgICAgIHJzdjIgPSAoYml0cyAmIDB4MjApID09IDB4MjAKLSAgICAgICAgcnN2
MyA9IChiaXRzICYgMHgxMCkgPT0gMHgxMAotICAgICAgICBvcGNvZGUgPSBiaXRzICYgMHhmCi0g
ICAgICAgIHBheWxvYWQgPSBzZWxmLnJlbWFpbmluZ19kYXRhKCkKLSAgICAgICAgIyBDb25zdW1l
IHJlc3Qgb2YgdGhlIG1lc3NhZ2Ugd2hpY2ggaXMgcGF5bG9hZCBkYXRhIG9mIHRoZSBvcmlnaW5h
bAotICAgICAgICAjIGZyYW1lLgotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gbGVuKHNl
bGYuX2RhdGEpCi0gICAgICAgIHJldHVybiBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwg
cGF5bG9hZAotCi0gICAgZGVmIF9yZWFkX251bWJlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5f
cmVhZF9wb3NpdGlvbiArIDEgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICdDYW5ub3QgcmVhZCB0aGUgZmlyc3QgYnl0ZSBv
ZiBudW1iZXIgZmllbGQnKQotCi0gICAgICAgIG51bWJlciA9IG9yZChzZWxmLl9kYXRhW3NlbGYu
X3JlYWRfcG9zaXRpb25dKQotICAgICAgICBpZiBudW1iZXIgJiAweDgwID09IDB4ODA6Ci0gICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICdUaGUgbW9zdCBzaWdu
aWZpY2FudCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgb2YgbnVtYmVyIHNob3VsZCAnCi0gICAgICAg
ICAgICAgICAgJ2JlIHVuc2V0JykKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0g
ICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9zaXRpb24KLSAgICAgICAgaWYgbnVtYmVyID09IDEy
NzoKLSAgICAgICAgICAgIGlmIHBvcyArIDggPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQotICAgICAgICAg
ICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSA4Ci0gICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3Qu
dW5wYWNrKCchUScsIHNlbGYuX2RhdGFbcG9zOnBvcys4XSlbMF0KLSAgICAgICAgICAgIGlmIG51
bWJlciA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdFbmNvZGVkIG51bWJlciglZCkgPj0gMl42MycgJSBudW1iZXIpCi0gICAgICAgICAgICBp
ZiBudW1iZXIgPD0gMHhGRkZGOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgOSBieXRlcyBl
bmNvZGluZycgJSBudW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gbnVtYmVyCi0gICAgICAgIGlm
IG51bWJlciA9PSAxMjY6Ci0gICAgICAgICAgICBpZiBwb3MgKyAyID4gbGVuKHNlbGYuX2RhdGEp
OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgbnVtYmVyIGZpZWxk
JykKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMgotICAgICAgICAgICAgbnVt
YmVyID0gc3RydWN0LnVucGFjaygnIUgnLCBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdCi0gICAg
ICAgICAgICBpZiBudW1iZXIgPD0gMTI1OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgMyBi
eXRlcyBlbmNvZGluZycgJSBudW1iZXIpCi0gICAgICAgIHJldHVybiBudW1iZXIKLQotICAgIGRl
ZiBfcmVhZF9zaXplX2FuZF9jb250ZW50cyhzZWxmKToKLSAgICAgICAgIiIiUmVhZHMgZGF0YSB0
aGF0IGNvbnNpc3RzIG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIHRoZSBzaXplIG9mIHRo
ZSBjb250ZW50cyBlbmNvZGVkIHRoZSBzYW1lIHdheSBhcyBwYXlsb2FkIGxlbmd0aAotICAgICAg
ICAgICAgICBvZiB0aGUgV2ViU29ja2V0IFByb3RvY29sIHdpdGggMSBiaXQgcGFkZGluZyBhdCB0
aGUgaGVhZC4KLSAgICAgICAgICAgIC0gdGhlIGNvbnRlbnRzLgotICAgICAgICAiIiIKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzaXplID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVj
dGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLSAgICAgICAgcG9zID0g
c2VsZi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBpZiBwb3MgKyBzaXplID4gbGVuKHNlbGYuX2Rh
dGEpOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAg
ICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAg
ICAgICAgICdDYW5ub3QgcmVhZCAlZCBieXRlcyBkYXRhJyAlIHNpemUpCi0KLSAgICAgICAgc2Vs
Zi5fcmVhZF9wb3NpdGlvbiArPSBzaXplCi0gICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3Bvczpw
b3Mrc2l6ZV0KLQotICAgIGRlZiBfcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGZpcnN0
X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IChmaXJzdF9ieXRlID4+
IDIpICYgMHg3Ci0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQ
aHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFM
SURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVz
dCBiZSB1bnNldCcpCi0KLSAgICAgICAgIyBJbnZhbGlkIGVuY29kaW5nIHdpbGwgYmUgaGFuZGxl
ZCBieSBNdXhIYW5kbGVyLgotICAgICAgICBlbmNvZGluZyA9IGZpcnN0X2J5dGUgJiAweDMKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5y
ZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAg
ICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhf
Q09OVFJPTF9CTE9DSykKLSAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGVuY29kaW5n
Ci0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50
cygpCi0gICAgICAgIGNvbnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBlbmNvZGVkX2hh
bmRzaGFrZQotICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2Fk
ZF9jaGFubmVsX3Jlc3BvbnNlKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAg
ICAgICByZXNlcnZlZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHgzCi0gICAgICAgIGlmIHJlc2Vy
dmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAg
ICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAg
ICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgY29u
dHJvbF9ibG9jay5hY2NlcHRlZCA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBjb250
cm9sX2Jsb2NrLmVuY29kaW5nID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBjb250cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgp
Ci0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2lj
YWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLKQot
ICAgICAgICBjb250cm9sX2Jsb2NrLmVuY29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXpl
X2FuZF9jb250ZW50cygpCi0gICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYg
X3JlYWRfZmxvd19jb250cm9sKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAg
ICAgICByZXNlcnZlZCA9IGZpcnN0X2J5dGUgJiAweDFmCi0gICAgICAgIGlmIHJlc2VydmVkICE9
IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAg
ICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAg
ICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQo
KQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1i
ZXIoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9D
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLQot
ICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2Ryb3BfY2hhbm5l
bChzZWxmLCBmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSBm
aXJzdF9ieXRlICYgMHgxZgotICAgICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAg
cmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09E
RV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBi
aXRzIG11c3QgYmUgdW5zZXQnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xf
YmxvY2suY2hhbm5lbF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
cihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIHJlYXNvbiA9
IHNlbGYuX3JlYWRfc2l6ZV9hbmRfY29udGVudHMoKQotICAgICAgICBpZiBsZW4ocmVhc29uKSA9
PSAwOgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAg
ICAgICBjb250cm9sX2Jsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgIGVsaWYgbGVuKHJl
YXNvbikgPj0gMjoKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9jb2RlID0gc3RydWN0
LnVucGFjaygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5k
cm9wX21lc3NhZ2UgPSByZWFzb25bMjpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlz
ZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lO
VkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIERyb3BD
aGFubmVsIHRoYXQgY29uYWlucyBvbmx5IDEtYnl0ZSByZWFzb24nKQotICAgICAgICByZXR1cm4g
Y29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZiwgZmly
c3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAm
IDB4MWUKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9N
VVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJl
IHVuc2V0JykKLSAgICAgICAgY29udHJvbF9ibG9jay5mYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAx
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9y
ZWFkX251bWJlcigpCi0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxm
Ll9yZWFkX251bWJlcigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAg
ICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9D
T05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyKGUpKQotICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIHJlYWRfY29u
dHJvbF9ibG9ja3Moc2VsZik6Ci0gICAgICAgICIiIlJlYWRzIGNvbnRyb2wgYmxvY2socykuCi0K
LSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcjogd2hl
biB0aGUgcGF5bG9hZCBjb250YWlucyBpbnZhbGlkIGNvbnRyb2wKLSAgICAgICAgICAgICAgIGJs
b2NrKHMpLgotICAgICAgICAgICBTdG9wSXRlcmF0aW9uOiB3aGVuIG5vIGNvbnRyb2wgYmxvY2tz
IGxlZnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfcG9zaXRpb24g
PCBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHNlbGYuX2Rh
dGFbc2VsZi5fcmVhZF9wb3NpdGlvbl0pCi0gICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9u
ICs9IDEKLSAgICAgICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAg
ICAgICAgICBjb250cm9sX2Jsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGU9b3Bjb2RlKQotICAg
ICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6Ci0g
ICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KGZpcnN0
X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9y
ZWFkX2FkZF9jaGFubmVsX3Jlc3BvbnNlKAotICAgICAgICAgICAgICAgICAgICBmaXJzdF9ieXRl
LCBjb250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVf
RkxPV19DT05UUk9MOgotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfZmxvd19jb250
cm9sKGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9
PSBfTVVYX09QQ09ERV9EUk9QX0NIQU5ORUw6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5f
cmVhZF9kcm9wX2NoYW5uZWwoZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAg
IGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAg
ICAgICAgeWllbGQgc2VsZi5fcmVhZF9uZXdfY2hhbm5lbF9zbG90KGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX1VOS05P
V05fTVVYX09QQ09ERSwKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgb3Bjb2RlICVkJyAl
IG9wY29kZSkKLQotICAgICAgICBhc3NlcnQgc2VsZi5fcmVhZF9wb3NpdGlvbiA9PSBsZW4oc2Vs
Zi5fZGF0YSkKLSAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIHJlbWFpbmlu
Z19kYXRhKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHJlbWFpbmluZyBkYXRhLiIiIgotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb246XQotCi0KLWNsYXNz
IF9Mb2dpY2FsUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIHJlcXVl
c3QuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwgY29tbWFuZCwgcGF0
aCwgcHJvdG9jb2wsIGhlYWRlcnMsCi0gICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pOgotICAg
ICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICBjaGFubmVsX2lkOiB0aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgot
ICAgICAgICAgICAgY29tbWFuZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCi0gICAgICAgICAgICBw
YXRoOiBIVFRQIHJlcXVlc3QgcGF0aC4KLSAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVy
cy4KLSAgICAgICAgICAgIGNvbm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAg
ICAgICBzZWxmLm1ldGhvZCA9IGNvbW1hbmQKLSAgICAgICAgc2VsZi51cmkgPSBwYXRoCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBo
ZWFkZXJzCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAgc2Vs
Zi5zZXJ2ZXJfdGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY2xpZW50X3Rlcm1pbmF0
ZWQgPSBGYWxzZQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJNaW1pY3Mg
cmVxdWVzdC5pc19odHRwcygpLiBSZXR1cm5zIEZhbHNlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMK
LSAgICAgICAgdXNlZCBvbmx5IGJ5IG9sZCBwcm90b2NvbHMgKGhpeGllIGFuZCBoeWJpMDApLgot
ICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBfTG9naWNhbENv
bm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgot
Ci0gICAgIyBGb3IgZGV0YWlscywgc2VlIHRoZSBjb21tZW50IG9mIHNldF9yZWFkX3N0YXRlKCku
Ci0gICAgU1RBVEVfQUNUSVZFID0gMQotICAgIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEID0gMgot
ICAgIFNUQVRFX1RFUk1JTkFURUQgPSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hh
bmRsZXIsIGNoYW5uZWxfaWQpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5z
dGFuY2UuCi0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIG9mIHRoaXMgY29ubmVj
dGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFu
ZGxlcgotICAgICAgICBzZWxmLl9jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxm
Ll9pbmNvbWluZ19kYXRhID0gJycKLQotICAgICAgICAjIC0gUHJvdGVjdHMgX3dhaXRpbmdfd3Jp
dGVfY29tcGxldGlvbgotICAgICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9y
IGNvbXBsZXRpb24gb2Ygd3JpdGUgYnkgbXV4IGhhbmRsZXIKLSAgICAgICAgc2VsZi5fd3JpdGVf
Y29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIHNlbGYuX3dhaXRpbmdf
d3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24g
PSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAgICAgc2VsZi5fcmVhZF9zdGF0ZSA9IHNlbGYu
U1RBVEVfQUNUSVZFCi0KLSAgICBkZWYgZ2V0X2xvY2FsX2FkZHIoc2VsZik6Ci0gICAgICAgICIi
IkdldHRlciB0byBtaW1pYyBtcF9jb25uLmxvY2FsX2FkZHIuIiIiCi0KLSAgICAgICAgcmV0dXJu
IHNlbGYuX211eF9oYW5kbGVyLnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X2xvY2FsX2FkZHIoKQot
ICAgIGxvY2FsX2FkZHIgPSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRf
cmVtb3RlX2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJl
bW90ZV9hZGRyLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNh
bF9jb25uZWN0aW9uLmdldF9yZW1vdGVfYWRkcigpCi0gICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0
eShnZXRfcmVtb3RlX2FkZHIpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToK
LSAgICAgICAgIiIiR2V0cyBtZW1vcml6ZWQgbGluZXMuIE5vdCBzdXBwb3J0ZWQuIiIiCi0KLSAg
ICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbignX0xvZ2ljYWxDb25uZWN0aW9uIGRv
ZXMgbm90IHN1cHBvcnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn
ZXRfbWVtb3JpemVkX2xpbmVzJykKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAg
ICAgIiIiV3JpdGVzIGRhdGEuIG11eF9oYW5kbGVyIHNlbmRzIGRhdGEgYXN5bmNocm9ub3VzbHku
IFRoZSBjYWxsZXIgd2lsbAotICAgICAgICBiZSBzdXNwZW5kZWQgdW50aWwgd3JpdGUgZG9uZS4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgot
Ci0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdo
ZW4gY2FsbGVkIGJlZm9yZSBmaW5pc2hpbmcgdGhlIHByZXZpb3VzCi0gICAgICAgICAgICAgICAg
d3JpdGUuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dy
aXRlX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3dhaXRpbmdfd3Jp
dGVfY29tcGxldGlvbjoKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGFscmVh
ZHkgd2FpdGluZyB0aGUgY29tcGxldGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICdvZiB3cml0
ZScgJSBzZWxmLl9jaGFubmVsX2lkKQotCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRl
X2NvbXBsZXRpb24gPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2Rh
dGEoc2VsZi5fY2hhbm5lbF9pZCwgZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRp
dGlvbi53YWl0KCkKLSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2Vw
dGlvbiBpZiB3b2tlIHVwIGJ5IG9uX3dyaXRlcl9kb25lLgotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHdyaXRl
X2NvbnRyb2xfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGVzIGRhdGEgdmlhIHRo
ZSBjb250cm9sIGNoYW5uZWwuIERvbid0IHdhaXQgZmluaXNoaW5nIHdyaXRlCi0gICAgICAgIGJl
Y2F1c2UgdGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBieSBtdXggZGlzcGF0Y2hlci4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotICAgICAg
ICAiIiIKLQotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2NvbnRyb2xfZGF0YShkYXRh
KQotCi0gICAgZGVmIG9uX3dyaXRlX2RhdGFfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVk
IHdoZW4gc2VuZGluZyBkYXRhIGlzIGNvbXBsZXRlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNl
IE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIGNh
bGwgb2Ygb25fd3JpdGVfZGF0YV9kb25lIGZvciBsb2dpY2FsICcKLSAgICAgICAgICAgICAgICAg
ICAgJ2Nvbm5lY3Rpb24gJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHNlbGYu
X3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYu
X3dyaXRlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBvbl93cml0ZXJfZG9uZShzZWxm
KToKLSAgICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSBtdXggaGFuZGxlciB3aGVuIHRoZSB3cml0ZXIg
dGhyZWFkIGhhcyBmaW5pc2hlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxm
Ll93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dy
aXRlX2NvbXBsZXRpb24gPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9u
Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24ucmVsZWFzZSgpCi0KLQotICAgIGRlZiBhcHBlbmRfZnJhbWVfZGF0YShzZWxmLCBmcmFt
ZV9kYXRhKToKLSAgICAgICAgIiIiQXBwZW5kcyBpbmNvbWluZyBmcmFtZSBkYXRhLiBDYWxsZWQg
d2hlbiBtdXhfaGFuZGxlciBkaXNwYXRjaGVzCi0gICAgICAgIGZyYW1lIGRhdGEgdG8gdGhlIGNv
cnJlc3BvbmRpbmcgYXBwbGljYXRpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZy
YW1lX2RhdGE6IGluY29taW5nIGZyYW1lIGRhdGEuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNl
bGYuX3JlYWRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRh
ICs9IGZyYW1lX2RhdGEKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAg
ICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgcmVhZChzZWxm
LCBsZW5ndGgpOgotICAgICAgICAiIiJSZWFkcyBkYXRhLiBCbG9ja3MgdW50aWwgZW5vdWdoIGRh
dGEgaGFzIGFycml2ZWQgdmlhIHBoeXNpY2FsCi0gICAgICAgIGNvbm5lY3Rpb24uCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEgdG8gYmUgcmVhZC4K
LSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRFeGNl
cHRpb246IHdoZW4gY2xvc2luZyBoYW5kc2hha2UgZm9yIHRoaXMKLSAgICAgICAgICAgICAgICBs
b2dpY2FsIGNoYW5uZWwgaGFzIGJlZW4gcmVjZWl2ZWQuCi0gICAgICAgICAgICBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMKLSAg
ICAgICAgICAgICAgICBjbG9zZWQsIG9yIGFuIGVycm9yIGlzIGNhdXNlZCBvbiB0aGUgcmVhZGVy
IHRocmVhZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNx
dWlyZSgpCi0gICAgICAgIHdoaWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfQUNU
SVZFIGFuZAotICAgICAgICAgICAgICAgbGVuKHNlbGYuX2luY29taW5nX2RhdGEpIDwgbGVuZ3Ro
KToKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5TVEFURV9HUkFDRUZV
TExZX0NMT1NFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29ubmVjdGlvbkNsb3Nl
ZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hhbm5lbCAlZCBoYXMg
Y2xvc2VkLicgJSBzZWxmLl9jaGFubmVsX2lkKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9yZWFk
X3N0YXRlID09IHNlbGYuU1RBVEVfVEVSTUlOQVRFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBD
b25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2Vp
dmluZyAlZCBieXRlIGZhaWxlZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xvc2VkJyAlCi0gICAg
ICAgICAgICAgICAgICAgIChsZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQotCi0gICAgICAgICAg
ICB2YWx1ZSA9IHNlbGYuX2luY29taW5nX2RhdGFbOmxlbmd0aF0KLSAgICAgICAgICAgIHNlbGYu
X2luY29taW5nX2RhdGEgPSBzZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpdCi0gICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAg
ICAgICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShzZWxmLCBuZXdfc3Rh
dGUpOgotICAgICAgICAiIiJTZXRzIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24uIENhbGxl
ZCB3aGVuIGFuIGV2ZW50IGZvciB0aGlzCi0gICAgICAgIGNvbm5lY3Rpb24gaGFzIG9jY3VycmVk
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBuZXdfc3RhdGU6IHN0YXRlIHRvIGJlIHNl
dC4gbmV3X3N0YXRlIG11c3QgYmUgb25lIG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIFNU
QVRFX0dSQUNFRlVMTFlfQ0xPU0VEOiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIGZvciB0aGlzCi0g
ICAgICAgICAgICAgICAgY29ubmVjdGlvbiBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAg
IC0gU1RBVEVfVEVSTUlOQVRFRDogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMgY2xv
c2VkIG9yCi0gICAgICAgICAgICAgICAgRHJvcENoYW5uZWwgb2YgdGhpcyBjb25uZWN0aW9uIGhh
cyByZWNlaXZlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3RhdGUKLSAgICAgICAg
c2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRp
b24ucmVsZWFzZSgpCi0KLQotY2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3QpOgotICAgICIiIkhv
bGRzIHRoZSByZXN1bHQgb2YgX0lubmVyTWVzc2FnZUJ1aWxkZXIuYnVpbGQoKS4KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxm
Lm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCi0KLQotY2xh
c3MgX0lubmVyTWVzc2FnZUJ1aWxkZXIob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIHRoYXQgaG9s
ZHMgdGhlIGNvbnRleHQgb2YgaW5uZXIgbWVzc2FnZSBmcmFnbWVudGF0aW9uIGFuZAotICAgIGJ1
aWxkcyBhIG1lc3NhZ2UgZnJvbSBmcmFnbWVudGVkIGlubmVyIGZyYW1lKHMpLgotICAgICIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9
IE5vbmUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cyA9IFtdCi0gICAg
ICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX21l
c3NhZ2VfZnJhZ21lbnRzID0gW10KLSAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYu
X2hhbmRsZV9maXJzdAotCi0gICAgZGVmIF9oYW5kbGVfZmlyc3Qoc2VsZiwgZnJhbWUpOgotICAg
ICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAg
ICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBjb250
aW51YXRpb24gb3Bjb2RlJykKLQotICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUo
ZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2Zy
YWdtZW50ZWRfY29udHJvbChmcmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfbWVzc2FnZShmcmFtZSkKLQotICAgIGRl
ZiBfcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJhbWUpOgotICAgICAg
ICBzZWxmLl9jb250cm9sX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICBzZWxmLl9wZW5k
aW5nX2NvbnRyb2xfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICBpZiBu
b3QgZnJhbWUuZmluOgotICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hh
bmRsZV9mcmFnbWVudGVkX2NvbnRyb2wKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAg
IHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgpCi0KLSAgICBkZWYg
X3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1lKToKLSAgICAgICAg
c2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKLSAgICAgICAgc2VsZi5fcGVuZGlu
Z19tZXNzYWdlX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgaWYgbm90
IGZyYW1lLmZpbjoKLSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5k
bGVfZnJhZ21lbnRlZF9tZXNzYWdlCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9o
YW5kbGVfZnJhZ21lbnRlZF9jb250cm9sKHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUu
b3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZW5kaW5nIGludmFsaWQg
b3Bjb2RlICVkIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZCBjb250cm9sICcKLSAgICAgICAgICAg
ICAgICAnbWVzc2FnZScgJSBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfY29u
dHJvbF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFt
ZS5maW46Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVh
c3NlbWJsZV9mcmFnbWVudGVkX2NvbnRyb2woKQotCi0gICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdt
ZW50ZWRfY29udHJvbChzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5fY29udHJvbF9vcGNv
ZGUKLSAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdt
ZW50cykKLSAgICAgICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYu
X3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMgPSBbXQotICAgICAgICBpZiBzZWxmLl9tZXNzYWdl
X29wY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBz
ZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9tZXNzYWdlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzZWxmLl9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVy
biBfSW5uZXJNZXNzYWdlKG9wY29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBfaGFuZGxlX2ZyYWdt
ZW50ZWRfbWVzc2FnZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgICMgU2VuZGVyIGNhbiBpbnRlcmxl
YXZlIGEgY29udHJvbCBtZXNzYWdlIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZAotICAgICAgICAj
IG1lc3NhZ2VzLgotICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bj
b2RlKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbnRyb2xfb3Bjb2RlIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICdTaG91bGQgbm90IHJlYWNoIGhlcmUoQnVnIGluIGJ1aWxkZXIpJykKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChmcmFt
ZSkKLQotICAgICAgICBpZiBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJ
T046Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1NlbmRpbmcgaW52YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGluZyBmcmFnbWVudGVk
IG1lc3NhZ2UnICUKLSAgICAgICAgICAgICAgICBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYu
X3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAg
IGlmIG5vdCBmcmFtZS5maW46Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1
cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9yZWFz
c2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5f
bWVzc2FnZV9vcGNvZGUKLSAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19t
ZXNzYWdlX2ZyYWdtZW50cykKLSAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBOb25lCi0g
ICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxm
Ll9mcmFtZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVybiBfSW5u
ZXJNZXNzYWdlKG9wY29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBidWlsZChzZWxmLCBmcmFtZSk6
Ci0gICAgICAgICIiIkJ1aWxkIGFuIGlubmVyIG1lc3NhZ2UuIFJldHVybnMgYW4gX0lubmVyTWVz
c2FnZSBpbnN0YW5jZSB3aGVuCi0gICAgICAgIHRoZSBnaXZlbiBmcmFtZSBpcyB0aGUgbGFzdCBm
cmFnbWVudGVkIGZyYW1lLiBSZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICBmcmFtZTogYW4gaW5uZXIgZnJhbWUuCi0gICAgICAgIFJhaXNlczoKLSAg
ICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZlZCBpbnZhbGlkIG9w
Y29kZS4gKGUuZy4KLSAgICAgICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNvbnRpbnVhdGlvbiBk
YXRhIG9wY29kZSBidXQgdGhlIGZpbiBmbGFnIG9mCi0gICAgICAgICAgICAgICAgdGhlIHByZXZp
b3VzIGlubmVyIGZyYW1lIHdhcyBub3Qgc2V0LikKLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmV0
dXJuIHNlbGYuX2ZyYW1lX2hhbmRsZXIoZnJhbWUpCi0KLQotY2xhc3MgX0xvZ2ljYWxTdHJlYW0o
U3RyZWFtKToKLSAgICAiIiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4gVGhpcyBjbGFzcyBpbnRl
cnByZXRzIG11bHRpcGxleGVkIFdlYlNvY2tldAotICAgIGZyYW1lcy4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VuZF9xdW90YSwg
cmVjZWl2ZV9xdW90YSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5j
ZS4KLSAgICAgICAgICAgIHN0cmVhbV9vcHRpb25zOiBTdHJlYW1PcHRpb25zIGluc3RhbmNlLgot
ICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgotICAgICAgICAgICAg
cmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgotICAgICAgICAiIiIKLQotICAg
ICAgICAjIFBoeXNpY2FsIHN0cmVhbSBpcyByZXNwb25zaWJsZSBmb3IgbWFza2luZy4KLSAgICAg
ICAgc3RyZWFtX29wdGlvbnMudW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotICAgICAgICBTdHJlYW0u
X19pbml0X18oc2VsZiwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICAgICAgc2VsZi5f
c2VuZF9jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9xdW90
YQotICAgICAgICAjIC0gUHJvdGVjdHMgX3NlbmRfY2xvc2VkIGFuZCBfc2VuZF9xdW90YQotICAg
ICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgcmVwbGVu
aXNoZWQKLSAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9u
KCkKLQotICAgICAgICAjIFRoZSBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1lc3NhZ2Vz
LgotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAotICAg
ICAgICAjIFRydWUgd2hlbiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBmcmFnbWVudGVkLgotICAgICAg
ICBzZWxmLl9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgICAgIHNl
bGYuX3JlY2VpdmVfcXVvdGEgPSByZWNlaXZlX3F1b3RhCi0gICAgICAgIHNlbGYuX3dyaXRlX2lu
bmVyX2ZyYW1lX3NlbWFwaG9yZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoKQotCi0gICAgICAgIHNl
bGYuX2lubmVyX21lc3NhZ2VfYnVpbGRlciA9IF9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkKLQotICAg
IGRlZiBfY3JlYXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUp
OgotICAgICAgICBmcmFtZSA9IEZyYW1lKGZpbj1lbmQsIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9
cGF5bG9hZCkKLSAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLm91dGdv
aW5nX2ZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1l
KQotCi0gICAgICAgIGlmIGxlbihwYXlsb2FkKSAhPSBsZW4oZnJhbWUucGF5bG9hZCk6Ci0gICAg
ICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdN
dXggZXh0ZW5zaW9uIG11c3Qgbm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucyB3aGljaCBjaGFu
Z2UgJwotICAgICAgICAgICAgICAgICcgZnJhbWUgYm91bmRhcnknKQotCi0gICAgICAgIGZpcnN0
X2J5dGUgPSAoKGZyYW1lLmZpbiA8PCA3KSB8IChmcmFtZS5yc3YxIDw8IDYpIHwKLSAgICAgICAg
ICAgICAgICAgICAgICAoZnJhbWUucnN2MiA8PCA1KSB8IChmcmFtZS5yc3YzIDw8IDQpIHwgZnJh
bWUub3Bjb2RlKQotICAgICAgICByZXR1cm4gY2hyKGZpcnN0X2J5dGUpICsgZnJhbWUucGF5bG9h
ZAotCi0gICAgZGVmIF93cml0ZV9pbm5lcl9mcmFtZShzZWxmLCBvcGNvZGUsIHBheWxvYWQsIGVu
ZD1UcnVlKToKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKLSAgICAgICAg
d3JpdGVfcG9zaXRpb24gPSAwCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBBbiBpbm5l
ciBmcmFtZSB3aWxsIGJlIGZyYWdtZW50ZWQgaWYgdGhlcmUgaXMgbm8gZW5vdWdoIHNlbmQKLSAg
ICAgICAgICAgICMgcXVvdGEuIFRoaXMgc2VtYXBob3JlIGVuc3VyZXMgdGhhdCBmcmFnbWVudGVk
IGlubmVyIGZyYW1lcyBhcmUKLSAgICAgICAgICAgICMgc2VudCBpbiBvcmRlciBvbiB0aGUgbG9n
aWNhbCBjaGFubmVsLgotICAgICAgICAgICAgIyBOb3RlIHRoYXQgZnJhbWVzIHRoYXQgY29tZSBm
cm9tIG90aGVyIGxvZ2ljYWwgY2hhbm5lbHMgb3IKLSAgICAgICAgICAgICMgbXVsdGlwbGV4aW5n
IGNvbnRyb2wgYmxvY2tzIGNhbiBiZSBpbnNlcnRlZCBiZXR3ZWVuIGZyYWdtZW50ZWQKLSAgICAg
ICAgICAgICMgaW5uZXIgZnJhbWVzIG9uIHRoZSBwaHlzaWNhbCBjaGFubmVsLgotICAgICAgICAg
ICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlLmFjcXVpcmUoKQotCi0gICAgICAg
ICAgICAjIENvbnN1bWUgYW4gb2N0ZXQgcXVvdGEgd2hlbiB0aGlzIGlzIHRoZSBmaXJzdCBmcmFn
bWVudGVkIGZyYW1lLgotICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09O
VElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChu
b3Qgc2VsZi5fc2VuZF9jbG9zZWQpIGFuZCBzZWxmLl9zZW5kX3F1b3RhID09IDA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX3F1b3RhIC09IDEKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAg
ICAgd2hpbGUgd3JpdGVfcG9zaXRpb24gPCBwYXlsb2FkX2xlbmd0aDoKLSAgICAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUo
KQotICAgICAgICAgICAgICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlbmRfY2xvc2VkKSBhbmQg
c2VsZi5fc2VuZF9xdW90YSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBxdW90YS4gV2FpdGlu
ZyBGbG93Q29udHJvbCBtZXNzYWdlIGZvciAlZC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0
aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVx
dWVzdC5fY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBwYXls
b2FkX2xlbmd0aCAtIHdyaXRlX3Bvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xl
bmd0aCA9IG1pbihzZWxmLl9zZW5kX3F1b3RhLCByZW1haW5pbmcpCi0gICAgICAgICAgICAgICAg
ICAgIGlubmVyX2ZyYW1lX2VuZCA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBhbmQK
LSAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZV9wb3NpdGlvbiArIHdyaXRlX2xlbmd0aCA9
PSBwYXlsb2FkX2xlbmd0aCkpCi0KLSAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWUgPSBz
ZWxmLl9jcmVhdGVfaW5uZXJfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkW3dyaXRlX3Bvc2l0aW9uOndyaXRlX3Bv
c2l0aW9uK3dyaXRlX2xlbmd0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFt
ZV9lbmQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgLT0gd3JpdGVfbGVu
Z3RoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29uc3VtZWQgcXVv
dGE9JWQsIHJlbWFpbmluZz0lZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHdyaXRlX2xlbmd0aCwgc2VsZi5fc2VuZF9xdW90YSkpCi0gICAgICAgICAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFz
ZSgpCi0KLSAgICAgICAgICAgICAgICAjIFdyaXRpbmcgZGF0YSB3aWxsIGJsb2NrIHRoZSB3b3Jr
ZXIgc28gd2UgbmVlZCB0byByZWxlYXNlCi0gICAgICAgICAgICAgICAgIyBfc2VuZF9jb25kaXRp
b24gYmVmb3JlIHdyaXRpbmcuCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZW5kaW5nIGlubmVyIGZyYW1lOiAlcicgJSBpbm5lcl9mcmFtZSkKLSAgICAgICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaW5uZXJfZnJhbWUpCi0gICAgICAgICAgICAg
ICAgd3JpdGVfcG9zaXRpb24gKz0gd3JpdGVfbGVuZ3RoCi0KLSAgICAgICAgICAgICAgICBvcGNv
ZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTgotCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKGUpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZV9zZW1hcGhv
cmUucmVsZWFzZSgpCi0KLSAgICBkZWYgcmVwbGVuaXNoX3NlbmRfcXVvdGEoc2VsZiwgc2VuZF9x
dW90YSk6Ci0gICAgICAgICIiIlJlcGxlbmlzaCBzZW5kIHF1b3RhLiIiIgotCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAg
ICAgaWYgc2VsZi5fc2VuZF9xdW90YSArIHNlbmRfcXVvdGEgPiAweDdGRkZGRkZGRkZGRkZGRkY6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IDAKLSAgICAgICAgICAgICAgICBy
YWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9PVkVSRkxPVykKLSAgICAgICAg
ICAgIHNlbGYuX3NlbmRfcXVvdGEgKz0gc2VuZF9xdW90YQotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZXBsZW5pc2hlZCBzZW5kIHF1b3RhIGZvciBjaGFubmVsIGlkICVkOiAlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxf
aWQsIHNlbGYuX3NlbmRfcXVvdGEpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIGNvbnN1bWVfcmVjZWl2ZV9xdW90YShzZWxmLCBhbW91
bnQpOgotICAgICAgICAiIiJDb25zdW1lcyByZWNlaXZlIHF1b3RhLiBSZXR1cm5zIEZhbHNlIG9u
IGZhaWx1cmUuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVjZWl2ZV9xdW90YSA8IGFtb3VudDoK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVmlvbGF0ZSBxdW90YSBvbiBjaGFubmVs
IGlkICVkOiAlZCA8ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu
X3JlcXVlc3QuY2hhbm5lbF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcmVjZWl2ZV9xdW90YSwgYW1vdW50KSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhIC09IGFtb3VudAotICAgICAgICByZXR1cm4gVHJ1ZQot
Ci0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZh
bHNlKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRfbWVzc2FnZS4iIiIKLQotICAg
ICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFp
c2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2Vu
ZF9tZXNzYWdlIGFmdGVyIHNlbmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAg
ICAgIGlmIGJpbmFyeSBhbmQgaXNpbnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAg
ICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2Fn
ZSBmb3IgYmluYXJ5IGZyYW1lIG11c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBp
ZiBiaW5hcnk6Ci0gICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJTkFSWQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAg
ICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICBmb3Ig
bWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6
Ci0gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVu
ZCwgYmluYXJ5KQotCi0gICAgICAgIGlmIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRl
ZDoKLSAgICAgICAgICAgIGlmIG9wY29kZSAhPSBzZWxmLl9tZXNzYWdlX29wY29kZToKLSAgICAg
ICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ01lc3NhZ2UgdHlwZXMgYXJl
IGRpZmZlcmVudCBpbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdmcmFtZXMgZm9yIHRoZSBzYW1lIG1lc3NhZ2UnKQotICAgICAgICAgICAgb3Bjb2RlID0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
bGYuX21lc3NhZ2Vfb3Bjb2RlID0gb3Bjb2RlCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJf
ZnJhbWUob3Bjb2RlLCBtZXNzYWdlLCBlbmQpCi0gICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93
YXNfZnJhZ21lbnRlZCA9IG5vdCBlbmQKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToK
LSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZS4KLQotICAgICAgICBJ
biBhZGRpdGlvbiB0byBjYWxsIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSwgdGhpcyBtZXRob2QgYWRk
cyB0aGUgYW1vdW50Ci0gICAgICAgIG9mIHBheWxvYWQgdG8gcmVjZWl2aW5nIHF1b3RhIGFuZCBz
ZW5kcyBGbG93Q29udHJvbCB0byB0aGUgY2xpZW50LgotICAgICAgICBXZSBuZWVkIHRvIGRvIGl0
IGhlcmUgYmVjYXVzZSBTdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkgaGFuZGxlcwotICAgICAgICBj
b250cm9sIGZyYW1lcyBpbnRlcm5hbGx5LgotICAgICAgICAiIiIKLQotICAgICAgICBvcGNvZGUs
IHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShz
ZWxmKQotICAgICAgICBhbW91bnQgPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgIyBSZXBsZW5pc2gg
ZXh0cmEgb25lIG9jdGV0IHdoZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1l
LgotICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAg
ICAgICAgICBhbW91bnQgKz0gMQotICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3Vu
dAotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVz
dC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW1vdW50KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgZmxvdyBjb250cm9s
IGZvciAlZCwgcmVwbGVuaXNoZWQ9JWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGFtb3VudCkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLSAgICAgICAgcmV0dXJu
IG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3YxLCByc3YyLCByc3YzCi0KLSAgICBkZWYgX2dldF9t
ZXNzYWdlX2Zyb21fZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJPdmVycmlkZXMgU3Ry
ZWFtLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBpbm5lcl9tZXNzYWdlID0gc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVy
LmJ1aWxkKGZyYW1lKQotICAgICAgICBleGNlcHQgSW52YWxpZEZyYW1lRXhjZXB0aW9uOgotICAg
ICAgICAgICAgcmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04pCi0KLSAg
ICAgICAgaWYgaW5uZXJfbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gaW5uZXJfbWVzc2FnZS5vcGNvZGUKLSAg
ICAgICAgcmV0dXJuIGlubmVyX21lc3NhZ2UucGF5bG9hZAotCi0gICAgZGVmIHJlY2VpdmVfbWVz
c2FnZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2Uu
IiIiCi0KLSAgICAgICAgIyBKdXN0IGNhbGwgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpLCBidXQg
Y2F0Y2gKLSAgICAgICAgIyBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbiwgd2hpY2gg
aXMgcmFpc2VkIHdoZW4gdGhlIGxvZ2ljYWwKLSAgICAgICAgIyBjb25uZWN0aW9uIGhhcyBjbG9z
ZWQgZ3JhY2VmdWxseS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5y
ZWNlaXZlX21lc3NhZ2Uoc2VsZikKLSAgICAgICAgZXhjZXB0IExvZ2ljYWxDb25uZWN0aW9uQ2xv
c2VkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUp
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNo
YWtlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uX3Nl
bmRfY2xvc2luZ19oYW5kc2hha2UuIiIiCi0KLSAgICAgICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5n
X2hhbmRzaGFrZV9ib2R5KGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdTZW5kaW5nIGNsb3NpbmcgaGFuZHNoYWtlIGZvciAlZDogKCVyLCAlciknICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGNvZGUsIHJlYXNv
bikpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfQ0xPU0Us
IGJvZHksIGVuZD1UcnVlKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0
ZWQgPSBUcnVlCi0KLSAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHk9JycpOgotICAgICAgICAi
IiJPdmVycmlkZXMgU3RyZWFtLnNlbmRfcGluZyIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnU2VuZGluZyBwaW5nIG9uIGxvZ2ljYWwgY2hhbm5lbCAlZDogJXInICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQotICAg
ICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIGVu
ZD1UcnVlKQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBk
ZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5f
c2VuZF9wb25nIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBvbmcg
b24gbG9naWNhbCBjaGFubmVsICVkOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgYm9keSkpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lu
bmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgZW5kPVRydWUpCi0KLSAgICBkZWYg
Y2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUs
IHJlYXNvbj0nJyk6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uY2xvc2VfY29ubmVjdGlv
bi4iIiIKLQotICAgICAgICAjIFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDbG9zaW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHN0b3Bfc2VuZGlu
ZyhzZWxmKToKLSAgICAgICAgIiIiU3RvcHMgYWNjZXB0aW5nIG5ldyBzZW5kIG9wZXJhdGlvbiAo
X3dyaXRlX2lubmVyX2ZyYW1lKS4iIiIKLQotICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5h
Y3F1aXJlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCi0gICAgICAgIHNlbGYu
X3NlbmRfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0KLWNsYXNzIF9PdXRnb2luZ0RhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVj
dHVyZSB0aGF0IGhvbGRzIGRhdGEgdG8gYmUgc2VudCB2aWEgcGh5c2ljYWwgY29ubmVjdGlvbiBh
bmQKLSAgICBvcmlnaW4gb2YgdGhlIGRhdGEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY2hhbm5lbF9pZCwgZGF0YSk6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5u
ZWxfaWQKLSAgICAgICAgc2VsZi5kYXRhID0gZGF0YQotCi0KLWNsYXNzIF9QaHlzaWNhbENvbm5l
Y3Rpb25Xcml0ZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiQSB0aHJlYWQgdGhhdCBpcyBy
ZXNwb25zaWJsZSBmb3Igd3JpdGluZyBkYXRhIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAg
ICBUT0RPKGJhc2hpKTogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRocmVhZC1zYWZldHkgcHJvYmxl
bSB3aGVuIHRoZSByZWFkZXIKLSAgICB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBzYW1lIHNv
Y2tldCBhdCBhIHRpbWUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hh
bmRsZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNl
bGYuX211eF9oYW5kbGVyID0gbXV4X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1
ZSkKLQotICAgICAgICAjIFdoZW4gc2V0LCBtYWtlIHRoaXMgdGhyZWFkIHN0b3AgYWNjZXB0aW5n
IG5ldyBkYXRhLCBmbHVzaCBwZW5kaW5nCi0gICAgICAgICMgZGF0YSBhbmQgZXhpdC4KLSAgICAg
ICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICAjIFRoZSBjbG9zZSBjb2Rl
IG9mIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0g
Y29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRQotICAgICAgICAjIERlcXVlIGZvciBwYXNzaW5n
IHdyaXRlIGRhdGEuIEl0J3MgcHJvdGVjdGVkIGJ5IF9kZXF1ZV9jb25kaXRpb24KLSAgICAgICAg
IyB1bnRpbCBfc3RvcF9yZXF1ZXN0ZWQgaXMgc2V0LgotICAgICAgICBzZWxmLl9kZXF1ZSA9IGNv
bGxlY3Rpb25zLmRlcXVlKCkKLSAgICAgICAgIyAtIFByb3RlY3RzIF9kZXF1ZSwgX3N0b3BfcmVx
dWVzdGVkIGFuZCBfY2xvc2VfY29kZQotICAgICAgICAjIC0gU2lnbmFscyB0aHJlYWRzIHdhaXRp
bmcgZm9yIHRoZW0gdG8gYmUgYXZhaWxhYmxlCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlv
biA9IHRocmVhZGluZy5Db25kaXRpb24oKQotCi0gICAgZGVmIHB1dF9vdXRnb2luZ19kYXRhKHNl
bGYsIGRhdGEpOgotICAgICAgICAiIiJQdXRzIG91dGdvaW5nIGRhdGEuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIGRhdGE6IF9PdXRnb2luZ0RhdGEgaW5zdGFuY2UuCi0KLSAgICAgICAg
UmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHRoZSB0aHJl
YWQgaGFzIGJlZW4gcmVxdWVzdGVkIHRvCi0gICAgICAgICAgICAgICAgdGVybWluYXRlLgotICAg
ICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRp
b24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAg
ICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSBkYXRh
IGFueW1vcmUnKQotCi0gICAgICAgICAgICBzZWxmLl9kZXF1ZS5hcHBlbmQoZGF0YSkKLSAgICAg
ICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF93
cml0ZV9kYXRhKHNlbGYsIG91dGdvaW5nX2RhdGEpOgotICAgICAgICBtZXNzYWdlID0gKF9lbmNv
ZGVfY2hhbm5lbF9pZChvdXRnb2luZ19kYXRhLmNoYW5uZWxfaWQpICsKLSAgICAgICAgICAgICAg
ICAgICBvdXRnb2luZ19kYXRhLmRhdGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X211eF9oYW5kbGVyLnBoeXNpY2FsX3N0cmVhbS5zZW5kX21lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgbWVzc2FnZT1tZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PVRydWUpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcg
JQotICAgICAgICAgICAgICAgIChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9u
LnJlbW90ZV9hZGRyLCksIGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgVE9ETyhi
YXNoaSk6IEl0IHdvdWxkIGJlIGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMK
LSAgICAgICAgIyBjb250cm9sIGRhdGEgYXMgd2VsbC4KLSAgICAgICAgaWYgb3V0Z29pbmdfZGF0
YS5jaGFubmVsX2lkICE9IF9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlci5ub3RpZnlfd3JpdGVfZGF0YV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9p
ZCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X2RlcXVlX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9z
dG9wX3JlcXVlc3RlZDoKLSAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEg
PSBzZWxmLl9kZXF1ZS5wb3BsZWZ0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2Nv
bmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG91dGdv
aW5nX2RhdGEpCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUo
KQotCi0gICAgICAgICAgICAjIEZsdXNoIGRlcXVlLgotICAgICAgICAgICAgIwotICAgICAgICAg
ICAgIyBBdCB0aGlzIHBvaW50LCBzZWxmLl9kZXF1ZV9jb25kaXRpb24gaXMgYWx3YXlzIGFjcXVp
cmVkLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9k
ZXF1ZSkgPiAwOgotICAgICAgICAgICAgICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVx
dWUucG9wbGVmdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29p
bmdfZGF0YSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVx
dWVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgICAgICAjIENsb3NlIHBoeXNpY2FsIGNv
bm5lY3Rpb24uCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCB3YWl0
IHRoZSByZXNwb25zZSBoZXJlLiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSByZWFkCi0gICAgICAgICAg
ICAgICAgIyBieSB0aGUgcmVhZGVyIHRocmVhZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhf
aGFuZGxlci5waHlzaWNhbF9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY2xvc2VfY29kZSwgd2FpdF9yZXNwb25zZT1GYWxzZSkKLSAgICAgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3Nh
Z2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNsb3NlIHRo
ZSBwaHlzaWNhbCBjb25uZWN0aW9uOiAlcicgJSBlKQotICAgICAgICAgICAgICAgIHJhaXNlCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd3Jp
dGVyX2RvbmUoKQotCi0gICAgZGVmIHN0b3Aoc2VsZiwgY2xvc2VfY29kZT1jb21tb24uU1RBVFVT
X05PUk1BTF9DTE9TVVJFKToKLSAgICAgICAgIiIiU3RvcHMgdGhlIHdyaXRlciB0aHJlYWQuIiIi
Ci0KLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxm
Ll9zdG9wX3JlcXVlc3RlZCA9IFRydWUKLSAgICAgICAgc2VsZi5fY2xvc2VfY29kZSA9IGNsb3Nl
X2NvZGUKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNl
bGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotCi1jbGFzcyBfUGh5c2ljYWxDb25uZWN0
aW9uUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIkEgdGhyZWFkIHRoYXQgaXMgcmVz
cG9uc2libGUgZm9yIHJlYWRpbmcgZGF0YSBmcm9tIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgotICAgICAgICAiIiJD
b25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhf
aGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRo
cmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRp
bC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyID0gbXV4
X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgIGRlZiBydW4oc2Vs
Zik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgcGh5c2ljYWxfc3RyZWFtID0gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtCi0g
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IHBoeXNpY2FsX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2Uo
KQotICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgICAgICAjIEJlbG93IGhhcHBlbnMgb25seSB3aGVuIGEgZGF0
YSBtZXNzYWdlIGlzIHJlY2VpdmVkLgotICAgICAgICAgICAgICAgIG9wY29kZSA9IHBoeXNpY2Fs
X3N0cmVhbS5nZXRfbGFzdF9yZWNlaXZlZF9vcGNvZGUoKQotICAgICAgICAgICAgICAgIGlmIG9w
Y29kZSAhPSBjb21tb24uT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
bXV4X2hhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAgICAgX0RST1BfQ09ERV9JTlZBTElEX0VOQ0FQU1VMQVRJTkdfTUVTU0FHRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhIHRleHQgbWVzc2FnZSBvbiBwaHlzaWNhbCBjb25u
ZWN0aW9uJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgZXhjZXB0
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5kaXNwYXRjaF9tZXNz
YWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICBleGNlcHQgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Is
IGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25u
ZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICBlLmRyb3BfY29kZSwgZS5tZXNzYWdlKQotICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgTG9naWNhbENoYW5uZWxFcnJv
ciwgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX2xvZ2ljYWxfY2hh
bm5lbCgKLSAgICAgICAgICAgICAgICAgICAgZS5jaGFubmVsX2lkLCBlLmRyb3BfY29kZSwgZS5t
ZXNzYWdlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgICAg
ICAgICBicmVhawotCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9u
ZSgpCi0KLQotY2xhc3MgX1dvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJBIHRocmVh
ZCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBydW5uaW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxp
Y2F0aW9uCi0gICAgaGFuZGxlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBt
dXhfaGFuZGxlciwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2Uu
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBp
bnN0YW5jZS4KLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQot
ICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAg
ICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxmLl9yZXF1ZXN0
ID0gcmVxdWVzdAotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotCi0gICAgZGVmIHJ1bihz
ZWxmKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdMb2dpY2FsIGNoYW5uZWwgd29ya2Vy
IHN0YXJ0ZWQuIChpZD0lZCknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBOb24tY3JpdGlj
YWwgZXhjZXB0aW9ucyB3aWxsIGJlIGhhbmRsZWQgYnkgZGlzcGF0Y2hlci4KLSAgICAgICAgICAg
IHNlbGYuX211eF9oYW5kbGVyLmRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShzZWxmLl9yZXF1ZXN0
KQotICAgICAgICBleGNlcHQgTG9naWNhbENoYW5uZWxFcnJvciwgZToKLSAgICAgICAgICAgIHNl
bGYuX211eF9oYW5kbGVyLmZhaWxfbG9naWNhbF9jaGFubmVsKAotICAgICAgICAgICAgICAgIGUu
Y2hhbm5lbF9pZCwgZS5kcm9wX2NvZGUsIGUubWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV93b3JrZXJfZG9uZShzZWxmLl9yZXF1
ZXN0LmNoYW5uZWxfaWQpCi0KLQotY2xhc3MgX011eEhhbmRzaGFrZXIoaHliaS5IYW5kc2hha2Vy
KToKLSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIG11bHRpcGxleGluZy4i
IiIKLQotICAgIF9EVU1NWV9XRUJTT0NLRVRfS0VZID0gJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9
PScKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzZW5kX3F1
b3RhLCByZWNlaXZlX3F1b3RhKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0
YW5jZS4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgaW5zdGFuY2UgKGRpc3Bh
dGNoLkRpc3BhdGNoZXIpLgotICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1
b3RhLgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgot
ICAgICAgICAiIiIKLQotICAgICAgICBoeWJpLkhhbmRzaGFrZXIuX19pbml0X18oc2VsZiwgcmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEK
LSAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSA9IHJlY2VpdmVfcXVvdGEKLQotICAgICAgICAj
IEFwcGVuZCBoZWFkZXJzIHdoaWNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gaGFuZHNoYWtl
IGZpZWxkIG9mCi0gICAgICAgICMgQWRkQ2hhbm5lbFJlcXVlc3QuCi0gICAgICAgICMgVE9ETyhi
YXNoaSk6IE1ha2Ugc3VyZSB3aGV0aGVyIHdlIHNob3VsZCByYWlzZSBleGNlcHRpb24gd2hlbgot
ICAgICAgICAjICAgICB0aGVzZSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBhbHJlYWR5LgotICAgICAg
ICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLlVQR1JBREVfSEVBREVSXSA9ICgKLSAgICAgICAg
ICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFKQotICAgICAgICByZXF1ZXN0LmhlYWRl
cnNfaW5bY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVJdID0gKAotICAgICAgICAg
ICAgc3RyKGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLSAgICAgICAgcmVxdWVzdC5oZWFk
ZXJzX2luW2NvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVJdID0gKAotICAgICAgICAgICAg
c2VsZi5fRFVNTVlfV0VCU09DS0VUX0tFWSkKLQotICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxm
LCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGh5YmkuSGFuZHNoYWtlci5f
Y3JlYXRlX3N0cmVhbS4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NyZWF0aW5n
IGxvZ2ljYWwgc3RyZWFtIGZvciAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCi0g
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90
YSwKLSAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9o
YW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHli
aS5fY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZS4iIiIKLQotICAgICAgICByZXNwb25zZSA9IFtd
Ci0KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3Rv
Y29sc1xyXG4nKQotCi0gICAgICAgICMgVXBncmFkZSBhbmQgU2VjLVdlYlNvY2tldC1BY2NlcHQg
c2hvdWxkIGJlIGV4Y2x1ZGVkLgotICAgICAgICByZXNwb25zZS5hcHBlbmQoJyVzOiAlc1xyXG4n
ICUgKAotICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFE
RV9DT05ORUNUSU9OX1RZUEUpKQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29s
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAl
ICgKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIs
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlm
IChzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAg
ICBsZW4oc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAgICAgY29tbW9uLmZv
cm1hdF9leHRlbnNpb25zKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykpKQotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoJ1xyXG4nKQotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNl
KQotCi0gICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQpOgotICAgICAgICAiIiJP
dmVycmlkZSBoeWJpLkhhbmRzaGFrZXIuX3NlbmRfaGFuZHNoYWtlLiIiIgotCi0gICAgICAgICMg
RG9uJ3Qgc2VuZCBoYW5kc2hha2UgcmVzcG9uc2UgZm9yIHRoZSBkZWZhdWx0IGNoYW5uZWwKLSAg
ICAgICAgaWYgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkID09IF9ERUZBVUxUX0NIQU5ORUxfSUQ6
Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBoYW5kc2hha2VfcmVzcG9uc2UgPSBzZWxm
Ll9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgZnJhbWVfZGF0YSA9
IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRz
aGFrZV9yZXNwb25zZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGhhbmRz
aGFrZSByZXNwb25zZSBmb3IgJWQ6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLCBmcmFtZV9kYXRhKSkKLSAgICAgICAgc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLndyaXRlX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0KLWNsYXNz
IF9Mb2dpY2FsQ2hhbm5lbERhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhv
bGRzIGluZm9ybWF0aW9uIGFib3V0IGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCB3b3JrZXIpOgotICAgICAgICBzZWxmLnJlcXVlc3Qg
PSByZXF1ZXN0Ci0gICAgICAgIHNlbGYud29ya2VyID0gd29ya2VyCi0gICAgICAgIHNlbGYuZHJv
cF9jb2RlID0gX0RST1BfQ09ERV9OT1JNQUxfQ0xPU1VSRQotICAgICAgICBzZWxmLmRyb3BfbWVz
c2FnZSA9ICcnCi0KLQotY2xhc3MgX0hhbmRzaGFrZURlbHRhQmFzZShvYmplY3QpOgotICAgICIi
IkEgY2xhc3MgdGhhdCBob2xkcyBpbmZvcm1hdGlvbiBmb3IgZGVsdGEtZW5jb2RlZCBoYW5kc2hh
a2UuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVycyk6Ci0gICAgICAgIHNlbGYu
X2hlYWRlcnMgPSBoZWFkZXJzCi0KLSAgICBkZWYgY3JlYXRlX2hlYWRlcnMoc2VsZiwgZGVsdGE9
Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZXMgcmVxdWVzdCBoZWFkZXJzIGZvciBhbiBBZGRDaGFu
bmVsUmVxdWVzdCB0aGF0IGhhcwotICAgICAgICBkZWx0YS1lbmNvZGVkIGhhbmRzaGFrZS4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGVsdGE6IGhlYWRlcnMgc2hvdWxkIGJlIG92ZXJy
aWRkZW4uCi0gICAgICAgICIiIgotCi0gICAgICAgIGhlYWRlcnMgPSBjb3B5LmNvcHkoc2VsZi5f
aGVhZGVycykKLSAgICAgICAgaWYgZGVsdGE6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBp
biBkZWx0YS5pdGVtcygpOgotICAgICAgICAgICAgICAgICMgVGhlIHNwZWMgcmVxdWlyZXMgdGhh
dCBhIGhlYWRlciB3aXRoIGFuIGVtcHR5IHZhbHVlIGlzCi0gICAgICAgICAgICAgICAgIyByZW1v
dmVkIGZyb20gdGhlIGRlbHRhIGJhc2UuCi0gICAgICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9
PSAwIGFuZCBoZWFkZXJzLmhhc19rZXkoa2V5KToKLSAgICAgICAgICAgICAgICAgICAgZGVsIGhl
YWRlcnNba2V5XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhl
YWRlcnNba2V5XSA9IHZhbHVlCi0gICAgICAgIHJldHVybiBoZWFkZXJzCi0KLQotY2xhc3MgX011
eEhhbmRsZXIob2JqZWN0KToKLSAgICAiIiJNdWx0aXBsZXhpbmcgaGFuZGxlci4gV2hlbiBhIGhh
bmRsZXIgc3RhcnRzLCBpdCBsYXVuY2hlcyB0aHJlZQotICAgIHRocmVhZHM7IHRoZSByZWFkZXIg
dGhyZWFkLCB0aGUgd3JpdGVyIHRocmVhZCwgYW5kIGEgd29ya2VyIHRocmVhZC4KLQotICAgIFRo
ZSByZWFkZXIgdGhyZWFkIHJlYWRzIGRhdGEgZnJvbSB0aGUgcGh5c2ljYWwgc3RyZWFtLCBpLmUu
LCB0aGUKLSAgICB3c19zdHJlYW0gb2JqZWN0IG9mIHRoZSB1bmRlcmx5aW5nIHdlYnNvY2tldCBj
b25uZWN0aW9uLiBUaGUgcmVhZGVyCi0gICAgdGhyZWFkIGludGVycHJldHMgbXVsdGlwbGV4ZWQg
ZnJhbWVzIGFuZCBkaXNwYXRjaGVzIHRoZW0gdG8gbG9naWNhbAotICAgIGNoYW5uZWxzLiBNZXRo
b2RzIG9mIHRoaXMgY2xhc3MgYXJlIG1vc3RseSBjYWxsZWQgYnkgdGhlIHJlYWRlciB0aHJlYWQu
Ci0KLSAgICBUaGUgd3JpdGVyIHRocmVhZCBzZW5kcyBtdWx0aXBsZXhlZCBmcmFtZXMgd2hpY2gg
YXJlIGNyZWF0ZWQgYnkKLSAgICBsb2dpY2FsIGNoYW5uZWxzIHZpYSB0aGUgcGh5c2ljYWwgY29u
bmVjdGlvbi4KLQotICAgIFRoZSB3b3JrZXIgdGhyZWFkIGxhdW5jaGVkIGF0IHRoZSBzdGFydGlu
ZyBwb2ludCBoYW5kbGVzIHRoZQotICAgICJJbXBsaWNpdGx5IE9wZW5lZCBDb25uZWN0aW9uIi4g
SWYgbXVsdGlwbGV4aW5nIGhhbmRsZXIgcmVjZWl2ZXMKLSAgICBhbiBBZGRDaGFubmVsUmVxdWVz
dCBhbmQgYWNjZXB0cyBpdCwgdGhlIGhhbmRsZXIgd2lsbCBsYXVuY2ggYSBuZXcgd29ya2VyCi0g
ICAgdGhyZWFkIGFuZCBkaXNwYXRjaCB0aGUgcmVxdWVzdCB0byBpdC4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29u
c3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVz
dDogbW9kX3B5dGhvbiByZXF1ZXN0IG9mIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAg
ICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciBpbnN0YW5jZSAoZGlzcGF0Y2guRGlzcGF0Y2hl
cikuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdCA9IHJlcXVl
c3QKLSAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotICAgICAgICBzZWxmLnBo
eXNpY2FsX2Nvbm5lY3Rpb24gPSByZXF1ZXN0LmNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5waHlz
aWNhbF9zdHJlYW0gPSByZXF1ZXN0LndzX3N0cmVhbQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1
dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
cyA9IHt9Ci0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhyZWFk
aW5nLkNvbmRpdGlvbigpCi0gICAgICAgICMgSG9sZHMgY2xpZW50J3MgaW5pdGlhbCBxdW90YQot
ICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3RzID0gY29sbGVjdGlvbnMuZGVxdWUoKQotICAgICAg
ICBzZWxmLl9oYW5kc2hha2VfYmFzZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fd29ya2VyX2RvbmVf
bm90aWZ5X3JlY2VpdmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVhZGVyID0gTm9uZQotICAg
ICAgICBzZWxmLl93cml0ZXIgPSBOb25lCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAg
ICIiIlN0YXJ0cyB0aGUgaGFuZGxlci4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBN
dXhVbmV4cGVjdGVkRXhjZXB0aW9uOiB3aGVuIHRoZSBoYW5kbGVyIGFscmVhZHkgc3RhcnRlZCwg
b3Igd2hlbgotICAgICAgICAgICAgICAgIG9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBkZWZhdWx0
IGNoYW5uZWwgZmFpbHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRlciBv
ciBzZWxmLl93cml0ZXI6Ci0gICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9u
KCdNdXhIYW5kbGVyIGFscmVhZHkgc3RhcnRlZCcpCi0KLSAgICAgICAgc2VsZi5fcmVhZGVyID0g
X1BoeXNpY2FsQ29ubmVjdGlvblJlYWRlcihzZWxmKQotICAgICAgICBzZWxmLl93cml0ZXIgPSBf
UGh5c2ljYWxDb25uZWN0aW9uV3JpdGVyKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlYWRlci5zdGFy
dCgpCi0gICAgICAgIHNlbGYuX3dyaXRlci5zdGFydCgpCi0KLSAgICAgICAgIyBDcmVhdGUgIklt
cGxpY2l0bHkgT3BlbmVkIENvbm5lY3Rpb24iLgotICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24g
PSBfTG9naWNhbENvbm5lY3Rpb24oc2VsZiwgX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLSAgICAgICAg
aGVhZGVycyA9IGNvcHkuY29weShzZWxmLm9yaWdpbmFsX3JlcXVlc3QuaGVhZGVyc19pbikKLSAg
ICAgICAgIyBBZGQgZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBoZWFk
ZXJzW2NvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSXSA9ICgKLSAgICAgICAg
ICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICBzZWxmLm9yaWdp
bmFsX3JlcXVlc3QubXV4X3Byb2Nlc3Nvci5leHRlbnNpb25zKCkpKQotICAgICAgICBzZWxmLl9o
YW5kc2hha2VfYmFzZSA9IF9IYW5kc2hha2VEZWx0YUJhc2UoaGVhZGVycykKLSAgICAgICAgbG9n
aWNhbF9yZXF1ZXN0ID0gX0xvZ2ljYWxSZXF1ZXN0KAotICAgICAgICAgICAgX0RFRkFVTFRfQ0hB
Tk5FTF9JRCwKLSAgICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tZXRob2QsCi0gICAg
ICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QudXJpLAotICAgICAgICAgICAgc2VsZi5vcmln
aW5hbF9yZXF1ZXN0LnByb3RvY29sLAotICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2Uu
Y3JlYXRlX2hlYWRlcnMoKSwKLSAgICAgICAgICAgIGxvZ2ljYWxfY29ubmVjdGlvbikKLSAgICAg
ICAgIyBDbGllbnQncyBzZW5kIHF1b3RhIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29ubmVj
dGlvbiBpcyB6ZXJvLAotICAgICAgICAjIGJ1dCB3ZSB3aWxsIHNlbmQgRmxvd0NvbnRyb2wgbGF0
ZXIgc28gc2V0IHRoZSBpbml0aWFsIHF1b3RhIHRvCi0gICAgICAgICMgX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVC4KLSAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cy5hcHBlbmQoX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLSAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYub3JpZ2luYWxfcmVx
dWVzdC5tdXhfcHJvY2Vzc29yLnF1b3RhKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX2RvX2hhbmRz
aGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LCBz
ZW5kX3F1b3RhPXNlbmRfcXVvdGEpOgotICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIGhhbmRzaGFrZSBvbiB0aGUgZGVmYXVs
dCBjaGFubmVsIGlkJykKLSAgICAgICAgc2VsZi5fYWRkX2xvZ2ljYWxfY2hhbm5lbChsb2dpY2Fs
X3JlcXVlc3QpCi0KLSAgICAgICAgIyBTZW5kIEZsb3dDb250cm9sIGZvciB0aGUgaW1wbGljaXRs
eSBvcGVuZWQgY29ubmVjdGlvbi4KLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZmxvd19j
b250cm9sKF9ERUZBVUxUX0NIQU5ORUxfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICBsb2dpY2Fs
X3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAg
IGRlZiBhZGRfY2hhbm5lbF9zbG90cyhzZWxmLCBzbG90cywgc2VuZF9xdW90YSk6Ci0gICAgICAg
ICIiIkFkZHMgY2hhbm5lbCBzbG90cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgc2xv
dHM6IG51bWJlciBvZiBzbG90cyB0byBiZSBhZGRlZC4KLSAgICAgICAgICAgIHNlbmRfcXVvdGE6
IGluaXRpYWwgc2VuZCBxdW90YSBmb3Igc2xvdHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNl
bGYuX2NoYW5uZWxfc2xvdHMuZXh0ZW5kKFtzZW5kX3F1b3RhXSAqIHNsb3RzKQotICAgICAgICAj
IFNlbmQgTmV3Q2hhbm5lbFNsb3QgdG8gY2xpZW50LgotICAgICAgICBmcmFtZV9kYXRhID0gX2Ny
ZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1b3RhKQotICAgICAgICBzZWxmLnNl
bmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgd2FpdF91bnRpbF9kb25lKHNl
bGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICIiIldhaXRzIHVudGlsIGFsbCB3b3JrZXJzIGFy
ZSBkb25lLiBSZXR1cm5zIEZhbHNlIHdoZW4gdGltZW91dCBoYXMKLSAgICAgICAgb2NjdXJyZWQu
IFJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0
aW1lb3V0OiB0aW1lb3V0IGluIHNlYy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHdoaWxlIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSA+IDA6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXYWl0aW5nIHdvcmtlcnMoJWQpLi4uJyAlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSkK
LSAgICAgICAgICAgICAgICBzZWxmLl93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQgPSBGYWxz
ZQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLndhaXQo
dGltZW91dCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5
X3JlY2VpdmVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRp
bmcgd29ya2VyKHMpIHRpbWVkIG91dCcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19j
b25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgIyBGbHVzaCBwZW5kaW5nIG91dGdvaW5nIGRh
dGEKLSAgICAgICAgc2VsZi5fd3JpdGVyLnN0b3AoKQotICAgICAgICBzZWxmLl93cml0ZXIuam9p
bigpCi0KLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBub3RpZnlfd3JpdGVfZGF0YV9k
b25lKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHdyaXRlciB0
aHJlYWQgd2hlbiBhIHdyaXRlIG9wZXJhdGlvbiBoYXMgZG9uZS4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwgaWQuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVx
dWVzdC5jb25uZWN0aW9uLm9uX3dyaXRlX2RhdGFfZG9uZSgpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VlbXMgdGhhdCBsb2dpY2FsIGNo
YW5uZWwgZm9yICVkIGhhcyBnb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAlIGNoYW5uZWxfaWQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBzZW5kX2NvbnRyb2xf
ZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiU2VuZHMgZGF0YSB2aWEgdGhlIGNvbnRyb2wg
Y2hhbm5lbC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSBz
ZW50LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl93cml0ZXIucHV0X291dGdvaW5nX2Rh
dGEoX091dGdvaW5nRGF0YSgKLSAgICAgICAgICAgICAgICBjaGFubmVsX2lkPV9DT05UUk9MX0NI
QU5ORUxfSUQsIGRhdGE9ZGF0YSkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIGNoYW5uZWxf
aWQsIGRhdGEpOgotICAgICAgICAiIiJTZW5kcyBkYXRhIHZpYSBnaXZlbiBsb2dpY2FsIGNoYW5u
ZWwuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieQotICAgICAgICB3b3JrZXIgdGhyZWFkcy4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwg
aWQuCi0gICAgICAgICAgICBkYXRhOiBkYXRhIHRvIGJlIHNlbnQuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHNlbGYuX3dyaXRlci5wdXRfb3V0Z29pbmdfZGF0YShfT3V0Z29pbmdEYXRhKAotICAg
ICAgICAgICAgICAgIGNoYW5uZWxfaWQ9Y2hhbm5lbF9pZCwgZGF0YT1kYXRhKSkKLQotICAgIGRl
ZiBfc2VuZF9kcm9wX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdl
PScnKToKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxf
aWQsIGNvZGUsIG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAg
ICAgICdTZW5kaW5nIGRyb3AgY2hhbm5lbCBmb3IgY2hhbm5lbCBpZCAlZCcgJSBjaGFubmVsX2lk
KQotICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYg
X3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2Uoc2VsZiwgY2hhbm5lbF9pZCwgc3RhdHVz
PU5vbmUpOgotICAgICAgICBpZiBzdGF0dXMgaXMgTm9uZToKLSAgICAgICAgICAgIHN0YXR1cyA9
IGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVAotCi0gICAgICAgIGlmIHN0YXR1cyBpbiBf
SFRUUF9CQURfUkVTUE9OU0VfTUVTU0FHRVM6Ci0gICAgICAgICAgICBtZXNzYWdlID0gX0hUVFBf
QkFEX1JFU1BPTlNFX01FU1NBR0VTW3N0YXR1c10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVzcG9uc2UgbWVzc2FnZSBmb3IgJWQgaXMgbm90IGZvdW5k
JyAlIHN0YXR1cykKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnPz8/JwotCi0gICAgICAgIHJlc3Bv
bnNlID0gJ0hUVFAvMS4xICVkICVzXHJcblxyXG4nICUgKHN0YXR1cywgbWVzc2FnZSkKLSAgICAg
ICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoY2hhbm5lbF9pZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2U9cmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYu
c2VuZF9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAgIGRlZiBfY3JlYXRlX2xvZ2ljYWxf
cmVxdWVzdChzZWxmLCBibG9jayk6Ci0gICAgICAgIGlmIGJsb2NrLmNoYW5uZWxfaWQgPT0gX0NP
TlRST0xfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAgICMgVE9ETyhiYXNoaSk6IFJhaXNlIFBoeXNp
Y2FsQ29ubmVjdGlvbkVycm9yIHdpdGggY29kZSAyMDA2Ci0gICAgICAgICAgICAjIGluc3RlYWQg
b2YgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbi4KLSAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0
ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIHRoZSBjb250cm9sIGNoYW5u
ZWwgaWQgKDApIGFzIG9iamVjdGl2ZSBjaGFubmVsICcKLSAgICAgICAgICAgICAgICAnaWQgZm9y
IEFkZENoYW5uZWwnKQotCi0gICAgICAgIGlmIGJsb2NrLmVuY29kaW5nID4gX0hBTkRTSEFLRV9F
TkNPRElOR19ERUxUQToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HKQot
Ci0gICAgICAgIG1ldGhvZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVycyA9IF9wYXJzZV9yZXF1ZXN0
X3RleHQoCi0gICAgICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgaWYg
YmxvY2suZW5jb2RpbmcgPT0gX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQToKLSAgICAgICAgICAg
IGhlYWRlcnMgPSBzZWxmLl9oYW5kc2hha2VfYmFzZS5jcmVhdGVfaGVhZGVycyhoZWFkZXJzKQot
Ci0gICAgICAgIGNvbm5lY3Rpb24gPSBfTG9naWNhbENvbm5lY3Rpb24oc2VsZiwgYmxvY2suY2hh
bm5lbF9pZCkKLSAgICAgICAgcmVxdWVzdCA9IF9Mb2dpY2FsUmVxdWVzdChibG9jay5jaGFubmVs
X2lkLCBtZXRob2QsIHBhdGgsIHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycywgY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIHJlcXVlc3QKLQotICAg
IGRlZiBfZG9faGFuZHNoYWtlX2Zvcl9sb2dpY2FsX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgc2Vu
ZF9xdW90YT0wKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YSA9IHNl
bGYuX2NoYW5uZWxfc2xvdHMucG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgot
ICAgICAgICAgICAgcmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfTkVXX0NIQU5ORUxfU0xPVF9WSU9MQVRJT04p
Ci0KLSAgICAgICAgaGFuZHNoYWtlciA9IF9NdXhIYW5kc2hha2VyKHJlcXVlc3QsIHNlbGYuZGlz
cGF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGEs
IHJlY2VpdmVfcXVvdGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0aW9uLCBl
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNl
bGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgcmVx
dWVzdC5jaGFubmVsX2lkLCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQot
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNo
YWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBUT0RPKGJhc2hpKTogU2hvdWxkIHdlIF9G
YWlsIHRoZSBMb2dpY2FsIENoYW5uZWxfIHdpdGggMzAwMQotICAgICAgICAgICAgIyBpbnN0ZWFk
PwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNl
bGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UocmVxdWVzdC5jaGFubmVsX2lkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9
ZS5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZXhjZXB0IGhhbmRz
aGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxf
cmVzcG9uc2UocmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0K
LSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfYWRkX2xvZ2ljYWxfY2hhbm5lbChzZWxm
LCBsb2dpY2FsX3JlcXVlc3QpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIGxvZ2ljYWxf
cmVxdWVzdC5jaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFu
bmVsX2lkKQotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAot
ICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0NIQU5ORUxfQUxSRUFEWV9FWElTVFMsCi0g
ICAgICAgICAgICAgICAgICAgICdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlCi0gICAg
ICAgICAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAg
d29ya2VyID0gX1dvcmtlcihzZWxmLCBsb2dpY2FsX3JlcXVlc3QpCi0gICAgICAgICAgICBjaGFu
bmVsX2RhdGEgPSBfTG9naWNhbENoYW5uZWxEYXRhKGxvZ2ljYWxfcmVxdWVzdCwgd29ya2VyKQot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tsb2dpY2FsX3JlcXVlc3QuY2hhbm5l
bF9pZF0gPSBjaGFubmVsX2RhdGEKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgIGRlZiBfcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGJs
b2NrKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gc2VsZi5f
Y3JlYXRlX2xvZ2ljYWxfcmVxdWVzdChibG9jaykKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3Is
IGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbG9n
aWNhbCByZXF1ZXN0OiAlcicgJSBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRf
Y2hhbm5lbF9yZXNwb25zZSgKLSAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBzdGF0
dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIGlmIHNlbGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KGxvZ2ljYWxf
cmVxdWVzdCk6Ci0gICAgICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VO
Q09ESU5HX0lERU5USVRZOgotICAgICAgICAgICAgICAgICMgVXBkYXRlIGhhbmRzaGFrZSBiYXNl
LgotICAgICAgICAgICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBy
aWdodCBwbGFjZSB0byB1cGRhdGUKLSAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBiYXNlLgot
ICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFz
ZSgKLSAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAg
ICAgICAgICBzZWxmLl9hZGRfbG9naWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9u
c2UoCi0gICAgICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQ
X1NUQVRVU19CQURfUkVRVUVTVCkKLQotICAgIGRlZiBfcHJvY2Vzc19mbG93X2NvbnRyb2woc2Vs
ZiwgYmxvY2spOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVs
X2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2NrLmNo
YW5uZWxfaWRdCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0ucmVw
bGVuaXNoX3NlbmRfcXVvdGEoCi0gICAgICAgICAgICAgICAgYmxvY2suc2VuZF9xdW90YSkKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0
aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF9wcm9jZXNzX2Ryb3BfY2hhbm5lbChzZWxmLCBibG9j
ayk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdEcm9wQ2hhbm5l
bCByZWNlaXZlZCBmb3IgJWQ6IGNvZGU9JXIsIHJlYXNvbj0lcicgJQotICAgICAgICAgICAgKGJs
b2NrLmNoYW5uZWxfaWQsIGJsb2NrLmRyb3BfY29kZSwgYmxvY2suZHJvcF9tZXNzYWdlKSkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hh
bm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAg
ICAgICAgICAgY2hhbm5lbF9kYXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VE
Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAg
Y2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAg
ICAgICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAg
IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVs
ZWFzZSgpCi0KLSAgICBkZWYgX3Byb2Nlc3NfY29udHJvbF9ibG9ja3Moc2VsZiwgcGFyc2VyKToK
LSAgICAgICAgZm9yIGNvbnRyb2xfYmxvY2sgaW4gcGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3Mo
KToKLSAgICAgICAgICAgIG9wY29kZSA9IGNvbnRyb2xfYmxvY2sub3Bjb2RlCi0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ2NvbnRyb2wgYmxvY2sgcmVjZWl2ZWQsIG9wY29kZTogJWQn
ICUgb3Bjb2RlKQotICAgICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFO
TkVMX1JFUVVFU1Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19hZGRfY2hhbm5lbF9y
ZXF1ZXN0KGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNh
bENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElE
X01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgQWRkQ2hh
bm5lbFJlc3BvbnNlJykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZM
T1dfQ09OVFJPTDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Zsb3dfY29udHJvbChj
b250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJP
UF9DSEFOTkVMOgotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfZHJvcF9jaGFubmVsKGNv
bnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdf
Q0hBTk5FTF9TTE9UOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVy
cm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xf
QkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBOZXdDaGFubmVsU2xvdCcpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZSAlcicgJSBvcGNv
ZGUpCi0KLSAgICBkZWYgX3Byb2Nlc3NfbG9naWNhbF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBw
YXJzZXIpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgZnJhbWUuIGNo
YW5uZWwgaWQ9JWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBu
b3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAg
ICMgV2UgbXVzdCBpZ25vcmUgdGhlIG1lc3NhZ2UgZm9yIGFuIGluYWN0aXZlIGNoYW5uZWwuCi0g
ICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdCi0gICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIs
IHJzdjMsIG9wY29kZSwgcGF5bG9hZCA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAg
ICAgICAgIGNvbnN1bWluZ19ieXRlID0gbGVuKHBheWxvYWQpCi0gICAgICAgICAgICBpZiBvcGNv
ZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgY29uc3Vt
aW5nX2J5dGUgKz0gMQotICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfZGF0YS5yZXF1ZXN0Lndz
X3N0cmVhbS5jb25zdW1lX3JlY2VpdmVfcXVvdGEoCi0gICAgICAgICAgICAgICAgY29uc3VtaW5n
X2J5dGUpOgotICAgICAgICAgICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xv
c2UgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVs
RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9R
VU9UQV9WSU9MQVRJT04pCi0gICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29k
ZSwgbGVuKHBheWxvYWQpLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hc2s9RmFsc2UpCi0gICAgICAgICAgICBmcmFtZV9kYXRhID0g
aGVhZGVyICsgcGF5bG9hZAotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVj
dGlvbi5hcHBlbmRfZnJhbWVfZGF0YShmcmFtZV9kYXRhKQotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAg
ICBkZWYgZGlzcGF0Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiRGlzcGF0
Y2hlcyBtZXNzYWdlLiBUaGUgcmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMg
ZW5jYXBzdWxhdGVkIGZyYW1lLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNh
bENvbm5lY3Rpb25FcnJvcjogaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKLSAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uIGxldmVsIGVycm9ycy4KLSAgICAgICAgICAgIExvZ2ljYWxD
aGFubmVsRXJyb3I6IGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAotICAg
ICAgICAgICAgICAgIGxldmVsIGVycm9ycy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcGFyc2Vy
ID0gX011eEZyYW1lUGF5bG9hZFBhcnNlcihtZXNzYWdlKQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJy
b3IoX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCkKLSAgICAgICAgaWYgY2hhbm5lbF9p
ZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19jb250
cm9sX2Jsb2NrcyhwYXJzZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcm9j
ZXNzX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZCwgcGFyc2VyKQotCi0gICAgZGVmIG5vdGlmeV93
b3JrZXJfZG9uZShzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB3
b3JrZXIgaGFzIGZpbmlzaGVkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVs
X2lkOiBjaGFubmVsIGlkIGNvcnJlc3BvbmRlZCB3aXRoIHRoZSB3b3JrZXIuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnV29ya2VyIGZvciBjaGFubmVsIGlkICVk
IHRlcm1pbmF0ZWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBu
b3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAg
IHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdDaGFu
bmVsIGlkICVkIG5vdCBmb3VuZCcgJSBjaGFubmVsX2lkKQotICAgICAgICAgICAgY2hhbm5lbF9k
YXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVscy5wb3AoY2hhbm5lbF9pZCkKLSAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9IFRy
dWUKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgp
Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkK
LQotICAgICAgICBpZiBub3QgY2hhbm5lbF9kYXRhLnJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6
Ci0gICAgICAgICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBj
aGFubmVsX2lkLCBjb2RlPWNoYW5uZWxfZGF0YS5kcm9wX2NvZGUsCi0gICAgICAgICAgICAgICAg
bWVzc2FnZT1jaGFubmVsX2RhdGEuZHJvcF9tZXNzYWdlKQotCi0gICAgZGVmIG5vdGlmeV9yZWFk
ZXJfZG9uZShzZWxmKToKLSAgICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBy
ZWFkZXIgdGhyZWFkIHdoZW4gdGhlIHJlYWRlciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJt
aWF0aW5nIGFsbCBsb2dpY2FsIGNvbm5lY3Rpb25zIHdhaXRpbmcgZm9yIGluY29taW5nIGRhdGEg
JwotICAgICAgICAgICAgJy4uLicpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHMudmFsdWVzKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
Y2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgX0xvZ2ljYWxDb25uZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCi0gICAgICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
Zyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBub3RpZnlfd3JpdGVyX2RvbmUoc2VsZik6
Ci0gICAgICAgICIiIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgd3JpdGVyIHRocmVhZCB3
aGVuIHRoZSB3cml0ZXIgaGFzCi0gICAgICAgIGZpbmlzaGVkLgotICAgICAgICAiIiIKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnVGVybWlhdGluZyBhbGwgbG9n
aWNhbCBjb25uZWN0aW9ucyB3YWl0aW5nIGZvciB3cml0ZSAnCi0gICAgICAgICAgICAnY29tcGxl
dGlvbiAuLi4nKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgZm9yIGNoYW5uZWxfZGF0YSBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
LnZhbHVlcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0
YS5yZXF1ZXN0LmNvbm5lY3Rpb24ub25fd3JpdGVyX2RvbmUoKQotICAgICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNr
LmZvcm1hdF9leGMoKSkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24u
cmVsZWFzZSgpCi0KLSAgICBkZWYgZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKHNlbGYsIGNvZGUs
IG1lc3NhZ2UpOgotICAgICAgICAiIiJGYWlsIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAg
ICAgICAgbWVzc2FnZTogZHJvcCBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0ZhaWxpbmcgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uLi4nKQotICAg
ICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbChfQ09OVFJPTF9DSEFOTkVMX0lELCBjb2RlLCBt
ZXNzYWdlKQotICAgICAgICBzZWxmLl93cml0ZXIuc3RvcChjb21tb24uU1RBVFVTX0lOVEVSTkFM
X0VORFBPSU5UX0VSUk9SKQotCi0gICAgZGVmIGZhaWxfbG9naWNhbF9jaGFubmVsKHNlbGYsIGNo
YW5uZWxfaWQsIGNvZGUsIG1lc3NhZ2UpOgotICAgICAgICAiIiJGYWlsIGEgbG9naWNhbCBjaGFu
bmVsLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlk
LgotICAgICAgICAgICAgY29kZTogZHJvcCByZWFzb24gY29kZS4KLSAgICAgICAgICAgIG1lc3Nh
Z2U6IGRyb3AgbWVzc2FnZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdGYWlsaW5nIGxvZ2ljYWwgY2hhbm5lbCAlZC4uLicgJSBjaGFubmVsX2lkKQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgICAgIGlmIGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVs
czoKLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
W2NoYW5uZWxfaWRdCi0gICAgICAgICAgICAgICAgIyBDbG9zZSB0aGUgbG9naWNhbCBjaGFubmVs
LiBub3RpZnlfd29ya2VyX2RvbmUoKSB3aWxsIGJlCi0gICAgICAgICAgICAgICAgIyBjYWxsZWQg
bGF0ZXIgYW5kIGl0IHdpbGwgc2VuZCBEcm9wQ2hhbm5lbC4KLSAgICAgICAgICAgICAgICBjaGFu
bmVsX2RhdGEuZHJvcF9jb2RlID0gY29kZQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5k
cm9wX21lc3NhZ2UgPSBtZXNzYWdlCi0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVx
dWVzdC5jb25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKAotICAgICAgICAgICAgICAgICAgICBfTG9n
aWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgICAgICBjaGFubmVs
X2RhdGEucmVxdWVzdC53c19zdHJlYW0uc3RvcF9zZW5kaW5nKCkKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29k
ZSwgbWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0KLWRlZiB1c2VfbXV4KHJlcXVlc3QpOgot
ICAgIHJldHVybiBoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykgYW5kICgKLSAgICAg
ICAgcmVxdWVzdC5tdXhfcHJvY2Vzc29yLmlzX2FjdGl2ZSgpKQotCi0KLWRlZiBzdGFydChyZXF1
ZXN0LCBkaXNwYXRjaGVyKToKLSAgICBtdXhfaGFuZGxlciA9IF9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMoX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkK
LQotICAgIG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSgpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyNGMyOTllYWYzZGYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOTMgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJT
dGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCi0KLVVzZSB0aGlzIGZpbGUgdG8gbGF1bmNoIHB5
d2Vic29ja2V0IHdpdGhvdXQgQXBhY2hlIEhUVFAgU2VydmVyLgotCi0KLUJBU0lDIFVTQUdFCi09
PT09PT09PT09PQotCi1HbyB0byB0aGUgc3JjIGRpcmVjdG9yeSBhbmQgcnVuCi0KLSAgJCBweXRo
b24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgWy1wIDx3c19wb3J0Pl0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy13IDx3ZWJzb2NrX2hhbmRsZXJzPl0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy1kIDxkb2N1bWVudF9y
b290Pl0KLQotPHdzX3BvcnQ+IGlzIHRoZSBwb3J0IG51bWJlciB0byB1c2UgZm9yIHdzOi8vIGNv
bm5lY3Rpb24uCi0KLTxkb2N1bWVudF9yb290PiBpcyB0aGUgcGF0aCB0byB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgSFRNTCBmaWxlcy4KLQotPHdlYnNvY2tfaGFuZGxlcnM+IGlzIHRoZSBwYXRoIHRv
IHRoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxlcnMuCi1JZiBub3Qgc3BlY2lm
aWVkLCA8ZG9jdW1lbnRfcm9vdD4gd2lsbCBiZSB1c2VkLiBTZWUgX19pbml0X18ucHkgKG9yCi1y
dW4gJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQpIGZvciBob3cgdG8gd3JpdGUgV2ViU29ja2V0IGhh
bmRsZXJzLgotCi1Gb3IgbW9yZSBkZXRhaWwgYW5kIG90aGVyIG9wdGlvbnMsIHJ1bgotCi0gICQg
cHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC0taGVscAotCi1vciBzZWUgX2J1
aWxkX29wdGlvbl9wYXJzZXIgbWV0aG9kIGJlbG93LgotCi1Gb3IgdHJvdWJsZSBzaG9vdGluZywg
YWRkaW5nICItLWxvZ19sZXZlbCBkZWJ1ZyIgbWlnaHQgaGVscCB5b3UuCi0KLQotVFJZIERFTU8K
LT09PT09PT09Ci0KLUdvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4gc3RhbmRhbG9uZS5w
eSB3aXRoIC1kIG9wdGlvbiB0byBzZXQgdGhlCi1kb2N1bWVudCByb290IHRvIHRoZSBkaXJlY3Rv
cnkgY29udGFpbmluZyBleGFtcGxlIEhUTUxzIGFuZCBoYW5kbGVycyBsaWtlIHRoaXM6Ci0KLSAg
JCBjZCBzcmMKLSAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFs
b25lLnB5IC1kIGV4YW1wbGUKLQotdG8gbGF1bmNoIHB5d2Vic29ja2V0IHdpdGggdGhlIHNhbXBs
ZSBoYW5kbGVyIGFuZCBodG1sIG9uIHBvcnQgODAuIE9wZW4KLWh0dHA6Ly9sb2NhbGhvc3QvY29u
c29sZS5odG1sLCBjbGljayB0aGUgY29ubmVjdCBidXR0b24sIHR5cGUgc29tZXRoaW5nIGludG8K
LXRoZSB0ZXh0IGJveCBuZXh0IHRvIHRoZSBzZW5kIGJ1dHRvbiBhbmQgY2xpY2sgdGhlIHNlbmQg
YnV0dG9uLiBJZiBldmVyeXRoaW5nCi1pcyB3b3JraW5nLCB5b3UnbGwgc2VlIHRoZSBtZXNzYWdl
IHlvdSB0eXBlZCBlY2hvZWQgYnkgdGhlIHNlcnZlci4KLQotCi1VU0lORyBUTFMKLT09PT09PT09
PQotCi1UbyBydW4gdGhlIHN0YW5kYWxvbmUgc2VydmVyIHdpdGggVExTIHN1cHBvcnQsIHJ1biBp
dCB3aXRoIC10LCAtaywgYW5kIC1jCi1vcHRpb25zLiBXaGVuIFRMUyBpcyBlbmFibGVkLCB0aGUg
c3RhbmRhbG9uZSBzZXJ2ZXIgYWNjZXB0cyBvbmx5IFRMUyBjb25uZWN0aW9uLgotCi1Ob3RlIHRo
YXQgd2hlbiBzc2wgbW9kdWxlIGlzIHVzZWQgYW5kIHRoZSBrZXkvY2VydCBsb2NhdGlvbiBpcyBp
bmNvcnJlY3QsCi1UTFMgY29ubmVjdGlvbiBzaWxlbnRseSBmYWlscyB3aGlsZSBweU9wZW5TU0wg
ZmFpbHMgb24gc3RhcnR1cC4KLQotRXhhbXBsZToKLQotICAkIFBZVEhPTlBBVEg9LiBweXRob24g
bW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgXAotICAgICAgICAtZCBleGFtcGxlIFwKLSAg
ICAgICAgLXAgMTA0NDMgXAotICAgICAgICAtdCBcCi0gICAgICAgIC1jIC4uL3Rlc3QvY2VydC9j
ZXJ0LnBlbSBcCi0gICAgICAgIC1rIC4uL3Rlc3QvY2VydC9rZXkucGVtIFwKLQotTm90ZSB0aGF0
IHdoZW4gcGFzc2luZyBhIHJlbGF0aXZlIHBhdGggdG8gLWMgYW5kIC1rIG9wdGlvbiwgaXQgd2ls
bCBiZSByZXNvbHZlZAotdXNpbmcgdGhlIGRvY3VtZW50IHJvb3QgZGlyZWN0b3J5IGFzIHRoZSBi
YXNlLgotCi0KLVVTSU5HIENMSUVOVCBBVVRIRU5USUNBVElPTgotPT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0KLVRvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgY2xpZW50
IGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQsIHJ1biBpdCB3aXRoCi0tLXRscy1jbGllbnQtYXV0aCBh
bmQgLS10bHMtY2xpZW50LWNhIG9wdGlvbnMgaW4gYWRkaXRpb24gdG8gb25lcyByZXF1aXJlZCBm
b3IKLVRMUyBzdXBwb3J0LgotCi1FeGFtcGxlOgotCi0gICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBt
b2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtZCBleGFtcGxlIC1wIDEwNDQzIC10IFwKLSAg
ICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIC1rIC4uL3Rlc3QvY2VydC9rZXkucGVtIFwK
LSAgICAgICAgLS10bHMtY2xpZW50LWF1dGggXAotICAgICAgICAtLXRscy1jbGllbnQtY2E9Li4v
dGVzdC9jZXJ0L2NhY2VydC5wZW0KLQotTm90ZSB0aGF0IHdoZW4gcGFzc2luZyBhIHJlbGF0aXZl
IHBhdGggdG8gLS10bHMtY2xpZW50LWNhIG9wdGlvbiwgaXQgd2lsbCBiZQotcmVzb2x2ZWQgdXNp
bmcgdGhlIGRvY3VtZW50IHJvb3QgZGlyZWN0b3J5IGFzIHRoZSBiYXNlLgotCi0KLUNPTkZJR1VS
QVRJT04gRklMRQotPT09PT09PT09PT09PT09PT09Ci0KLVlvdSBjYW4gYWxzbyB3cml0ZSBhIGNv
bmZpZ3VyYXRpb24gZmlsZSBhbmQgdXNlIGl0IGJ5IHNwZWNpZnlpbmcgdGhlIHBhdGggdG8KLXRo
ZSBjb25maWd1cmF0aW9uIGZpbGUgYnkgLS1jb25maWcgb3B0aW9uLiBQbGVhc2Ugd3JpdGUgYSBj
b25maWd1cmF0aW9uIGZpbGUKLWZvbGxvd2luZyB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgUHl0
aG9uIENvbmZpZ1BhcnNlciBsaWJyYXJ5LiBOYW1lIG9mIGVhY2gKLWVudHJ5IG11c3QgYmUgdGhl
IGxvbmcgdmVyc2lvbiBhcmd1bWVudCBuYW1lLiBFLmcuIHRvIHNldCBsb2cgbGV2ZWwgdG8gZGVi
dWcsCi1hZGQgdGhlIGZvbGxvd2luZyBsaW5lOgotCi1sb2dfbGV2ZWw9ZGVidWcKLQotRm9yIG9w
dGlvbnMgd2hpY2ggZG9lc24ndCB0YWtlIHZhbHVlLCBwbGVhc2UgYWRkIHNvbWUgZmFrZSB2YWx1
ZS4gRS5nLiBmb3IKLS0tdGxzIG9wdGlvbiwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZToKLQotdGxz
PVRydWUKLQotTm90ZSB0aGF0IHRscyB3aWxsIGJlIGVuYWJsZWQgZXZlbiBpZiB5b3Ugd3JpdGUg
dGxzPUZhbHNlIGFzIHRoZSB2YWx1ZSBwYXJ0IGlzCi1mYWtlLgotCi1XaGVuIGJvdGggYSBjb21t
YW5kIGxpbmUgYXJndW1lbnQgYW5kIGEgY29uZmlndXJhdGlvbiBmaWxlIGVudHJ5IGFyZSBzZXQg
Zm9yCi10aGUgc2FtZSBjb25maWd1cmF0aW9uIGl0ZW0sIHRoZSBjb21tYW5kIGxpbmUgdmFsdWUg
d2lsbCBvdmVycmlkZSBvbmUgaW4gdGhlCi1jb25maWd1cmF0aW9uIGZpbGUuCi0KLQotVEhSRUFE
SU5HCi09PT09PT09PT0KLQotVGhpcyBzZXJ2ZXIgaXMgZGVyaXZlZCBmcm9tIFNvY2tldFNlcnZl
ci5UaHJlYWRpbmdNaXhJbi4gSGVuY2UgYSB0aHJlYWQgaXMKLXVzZWQgZm9yIGVhY2ggcmVxdWVz
dC4KLQotCi1TRUNVUklUWSBXQVJOSU5HCi09PT09PT09PT09PT09PT09Ci0KLVRoaXMgdXNlcyBD
R0lIVFRQU2VydmVyIGFuZCBDR0lIVFRQU2VydmVyIGlzIG5vdCBzZWN1cmUuCi1JdCBtYXkgZXhl
Y3V0ZSBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgb3IgZXh0ZXJuYWwgcHJvZ3JhbXMuIEl0IHNob3Vs
ZCBub3QgYmUKLXVzZWQgb3V0c2lkZSBhIGZpcmV3YWxsLgotIiIiCi0KLWltcG9ydCBCYXNlSFRU
UFNlcnZlcgotaW1wb3J0IENHSUhUVFBTZXJ2ZXIKLWltcG9ydCBTaW1wbGVIVFRQU2VydmVyCi1p
bXBvcnQgU29ja2V0U2VydmVyCi1pbXBvcnQgQ29uZmlnUGFyc2VyCi1pbXBvcnQgYmFzZTY0Ci1p
bXBvcnQgaHR0cGxpYgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBsb2dnaW5nLmhhbmRsZXJzCi1p
bXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2VsZWN0Ci1pbXBv
cnQgc29ja2V0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdGltZQotCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgZGlzcGF0Y2gKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi1mcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCB1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldC54aHJfYmVuY2htYXJrX2hhbmRsZXIgaW1wb3J0
IFhIUkJlbmNobWFya0hhbmRsZXIKLQotCi1fREVGQVVMVF9MT0dfTUFYX0JZVEVTID0gMTAyNCAq
IDI1NgotX0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUKLQotX0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFID0gMTI4Ci0KLSMgMTAyNCBpcyBwcmFjdGljYWxseSBsYXJnZSBlbm91Z2ggdG8g
Y29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgotX01BWF9NRU1PUklaRURfTElORVMg
PSAxMDI0Ci0KLSMgQ29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZ
X1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wn
Ci0KLQotY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9iamVjdCk6Ci0gICAgIiIiTWltaWMg
bW9kX3B5dGhvbiBtcF9jb25uLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Rf
aGFuZGxlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5k
bGVyIGluc3RhbmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIgPSByZXF1ZXN0X2hhbmRsZXIKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAg
ICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLQotICAgICAg
ICByZXR1cm4gKHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKLSAg
ICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3Jl
bW90ZV9hZGRyKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1v
dGVfYWRkci4KLQotICAgICAgICBTZXR0aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24n
dCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKLSAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlh
bGl6ZWQgeWV0IHRoZXJlLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIuY2xpZW50X2FkZHJlc3MKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVf
YWRkcikKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiTWltaWMgbXBf
Y29ubi53cml0ZSgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIu
d2ZpbGUud3JpdGUoZGF0YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAg
ICIiIk1pbWljIG1wX2Nvbm4ucmVhZCgpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1
ZXN0X2hhbmRsZXIucmZpbGUucmVhZChsZW5ndGgpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9s
aW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0IG1lbW9yaXplZCBsaW5lcy4iIiIKLQotICAgICAg
ICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnJmaWxlLmdldF9tZW1vcml6ZWRfbGluZXMo
KQotCi0KLWNsYXNzIF9TdGFuZGFsb25lUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1pbWljIG1v
ZF9weXRob24gcmVxdWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hh
bmRsZXIsIHVzZV90bHMpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1
ZXN0SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdF9o
YW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFu
ZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCi0gICAgICAgIHNlbGYuX3VzZV90bHMg
PSB1c2VfdGxzCi0gICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IHJlcXVlc3RfaGFuZGxlci5oZWFk
ZXJzCi0KLSAgICBkZWYgZ2V0X3VyaShzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWlj
IHJlcXVlc3QudXJpLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJhdyBkYXRh
IGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQotICAgICAgICBSZXF1ZXN0LUxpbmUsIHdo
aWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9uCi0g
ICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRlciBwYXJzaW5nIHRoZSByYXcgZGF0
YS4gVGhpcyBiZWhhdmlvciBpcwotICAgICAgICBrZXB0IGZvciBjb21wYXRpYmlsaXR5LgotICAg
ICAgICAiIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAg
ICB1cmkgPSBwcm9wZXJ0eShnZXRfdXJpKQotCi0gICAgZGVmIGdldF91bnBhcnNlZF91cmkoc2Vs
Zik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVucGFyc2VkX3VyaS4iIiIK
LQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1bnBhcnNl
ZF91cmkgPSBwcm9wZXJ0eShnZXRfdW5wYXJzZWRfdXJpKQotCi0gICAgZGVmIGdldF9tZXRob2Qo
c2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIKLQot
ICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKLSAgICBtZXRob2Qg
PSBwcm9wZXJ0eShnZXRfbWV0aG9kKQotCi0gICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKLSAg
ICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QucHJvdG9jb2wuIiIiCi0KLSAgICAgICAg
cmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24KLSAgICBwcm90b2Nv
bCA9IHByb3BlcnR5KGdldF9wcm90b2NvbCkKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAg
ICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19odHRwcygpLiIiIgotCi0gICAgICAgIHJldHVybiBz
ZWxmLl91c2VfdGxzCi0KLQotZGVmIF9pbXBvcnRfc3NsKCk6Ci0gICAgZ2xvYmFsIHNzbAotICAg
IHRyeToKLSAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9pbXBvcnRfcHlv
cGVuc3NsKCk6Ci0gICAgZ2xvYmFsIE9wZW5TU0wKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBP
cGVuU1NMLlNTTAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
LSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9u
KG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0
aW9uIHRvCi0gICAgLSBwcm92aWRlIG1ha2VmaWxlIG1ldGhvZCB3aGljaCBpcyBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBjbGFzcwotICAgIC0gdHdlYWsgc2h1dGRvd24gbWV0aG9kIHNpbmNlIE9wZW5T
U0wuU1NMLkNvbm5lY3Rpb24uc2h1dGRvd24gZG9lc24ndAotICAgICAgYWNjZXB0IHRoZSAiaG93
IiBhcmd1bWVudC4KLSAgICAtIGNvbnZlcnQgU3lzQ2FsbEVycm9yIGV4Y2VwdGlvbnMgdGhhdCBp
dHMgcmVjdiBtZXRob2QgbWF5IHJhaXNlIGludG8gYQotICAgICAgcmV0dXJuIHZhbHVlIG9mICcn
LCBtZWFuaW5nIEVPRi4gV2UgY2Fubm90IG92ZXJ3cml0ZSB0aGUgcmVjdiBtZXRob2Qgb24KLSAg
ICAgIHNlbGYuX2Nvbm5lY3Rpb24gc2luY2UgaXQncyBpbW11dGFibGUuCi0gICAgIiIiCi0KLSAg
ICBfT1ZFUlJJRERFTl9BVFRSSUJVVEVTID0gWydfY29ubmVjdGlvbicsICdtYWtlZmlsZScsICdz
aHV0ZG93bicsICdyZWN2J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uKToK
LSAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLQotICAgIGRlZiBfX2dldGF0
dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluIF9TdGFuZGFsb25lU1NM
Q29ubmVjdGlvbi5fT1ZFUlJJRERFTl9BVFRSSUJVVEVTOgotICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9j
b25uZWN0aW9uLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhz
ZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25u
ZWN0aW9uLl9PVkVSUklEREVOX0FUVFJJQlVURVM6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0
Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotICAgICAgICByZXR1cm4gc2VsZi5fY29u
bmVjdGlvbi5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKLQotICAgIGRlZiBtYWtlZmlsZShzZWxm
LCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzb2NrZXQuX2ZpbGVvYmpl
Y3Qoc2VsZiwgbW9kZSwgYnVmc2l6ZSkKLQotICAgIGRlZiBzaHV0ZG93bihzZWxmLCB1bnVzZWRf
aG93KToKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5zaHV0ZG93bigpCi0KLSAgICBkZWYgcmVj
dihzZWxmLCBidWZzaXplLCBmbGFncz0wKToKLSAgICAgICAgaWYgZmxhZ3MgIT0gMDoKLSAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkJykKLQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5yZWN2KGJ1
ZnNpemUpCi0gICAgICAgIGV4Y2VwdCBPcGVuU1NMLlNTTC5TeXNDYWxsRXJyb3IsIChlcnIsIG1l
c3NhZ2UpOgotICAgICAgICAgICAgaWYgZXJyID09IC0xOgotICAgICAgICAgICAgICAgICMgU3Vw
cHJlc3MgInVuZXhwZWN0ZWQgRU9GIiBleGNlcHRpb24uIFNlZSB0aGUgT3BlblNTTCBkb2N1bWVu
dAotICAgICAgICAgICAgICAgICMgZm9yIFNTTF9nZXRfZXJyb3IuCi0gICAgICAgICAgICAgICAg
cmV0dXJuICcnCi0gICAgICAgICAgICByYWlzZQotCi0KLWRlZiBfYWxpYXNfaGFuZGxlcnMoZGlz
cGF0Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6Ci0gICAgIiIiU2V0IGFsaWFzZXMg
c3BlY2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBpbiBkaXNwYXRjaGVyLgotCi0g
ICAgQXJnczoKLSAgICAgICAgZGlzcGF0Y2hlcjogZGlzcGF0Y2guRGlzcGF0Y2hlciBpbnN0YW5j
ZQotICAgICAgICB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGU6IGFsaWFzIG1hcCBmaWxlCi0gICAg
IiIiCi0KLSAgICBmcCA9IG9wZW4od2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSkKLSAgICB0cnk6
Ci0gICAgICAgIGZvciBsaW5lIGluIGZwOgotICAgICAgICAgICAgaWYgbGluZVswXSA9PSAnIycg
b3IgbGluZS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IG0gPSByZS5tYXRjaCgnKFxTKylccysoXFMrKScsIGxpbmUpCi0gICAgICAgICAgICBpZiBub3Qg
bToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAg
ZmlsZTonICsgbGluZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMoCi0g
ICAgICAgICAgICAgICAgICAgIG0uZ3JvdXAoMSksIG0uZ3JvdXAoMikpCi0gICAgICAgICAgICBl
eGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcihzdHIoZSkpCi0gICAgZmluYWxseToKLSAgICAgICAgZnAuY2xvc2UoKQotCi0K
LWNsYXNzIFdlYlNvY2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VI
VFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgotICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9y
IFdlYlNvY2tldC4iIiIKLQotICAgICMgT3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdN
aXhJbi5kYWVtb25fdGhyZWFkcwotICAgIGRhZW1vbl90aHJlYWRzID0gVHJ1ZQotICAgICMgT3Zl
cnJpZGVzIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcwotICAg
IGFsbG93X3JldXNlX2FkZHJlc3MgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0
aW9ucyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0
X18gdG8gc2V0IFNTTCBlbmFibGVkCi0gICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2Nr
ZXQgYmVmb3JlIHNlcnZlcl9iaW5kIGFuZCBzZXJ2ZXJfYWN0aXZhdGUsCi0gICAgICAgIGlmIG5l
Y2Vzc2FyeS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1v
bmcgcmVxdWVzdCBoYW5kbGVycyB0byBzYXZlIHRpbWUgZm9yCi0gICAgICAgICMgaW5zdGFudGlh
dGlvbi4gIERpc3BhdGNoZXIgY2FuIGJlIHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZl
LgotICAgICAgICBvcHRpb25zLmRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAotICAg
ICAgICAgICAgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzLAotICAgICAgICAgICAgb3B0aW9ucy5z
Y2FuX2RpciwKLSAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290
X2RpcikKLSAgICAgICAgaWYgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlOgotICAg
ICAgICAgICAgX2FsaWFzX2hhbmRsZXJzKG9wdGlvbnMuZGlzcGF0Y2hlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpCi0gICAg
ICAgIHdhcm5pbmdzID0gb3B0aW9ucy5kaXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpCi0gICAg
ICAgIGlmIHdhcm5pbmdzOgotICAgICAgICAgICAgZm9yIHdhcm5pbmcgaW4gd2FybmluZ3M6Ci0g
ICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdXYXJuaW5nIGluIHNvdXJjZSBsb2FkaW5n
OiAlcycgJSB3YXJuaW5nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYucmVxdWVzdF9xdWV1ZV9zaXplID0gb3B0aW9u
cy5yZXF1ZXN0X3F1ZXVlX3NpemUKLSAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93biA9IHRo
cmVhZGluZy5FdmVudCgpCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gRmFsc2UKLQotICAg
ICAgICBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5fX2luaXRfXygKLSAgICAgICAgICAgIHNlbGYs
IChvcHRpb25zLnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLCBXZWJTb2NrZXRSZXF1ZXN0SGFu
ZGxlcikKLQotICAgICAgICAjIEV4cG9zZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFu
ZGxlciBvYmplY3RzIGFjY2VzcyBpdC4gV2UgbmFtZQotICAgICAgICAjIGl0IHdpdGggd2Vic29j
a2V0XyBwcmVmaXggdG8gYXZvaWQgY29uZmxpY3QuCi0gICAgICAgIHNlbGYud2Vic29ja2V0X3Nl
cnZlcl9vcHRpb25zID0gb3B0aW9ucwotCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkK
LSAgICAgICAgc2VsZi5zZXJ2ZXJfYmluZCgpCi0gICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRl
KCkKLQotICAgIGRlZiBfY3JlYXRlX3NvY2tldHMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVy
X25hbWUsIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzCi0gICAgICAgIHNl
bGYuX3NvY2tldHMgPSBbXQotICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKLSAgICAg
ICAgICAgICMgT24gcGxhdGZvcm1zIHRoYXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJz
dCBiaW5kIGZhaWxzLgotICAgICAgICAgICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJ
UHY2Ci0gICAgICAgICAgICAjIC0gSWYgaXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNh
bGwgd2l0aCBBRl9JTkVUNiwgdGhlCi0gICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVk
cyBhbmQgdGhlIHNlY29uZCBmYWlscyAod2UnbGwgc2VlICdBZGRyZXNzCi0gICAgICAgICAgICAj
ICAgYWxyZWFkeSBpbiB1c2UnIGVycm9yKS4KLSAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBv
bmx5IElQdjYgb24gY2FsbCB3aXRoIEFGX0lORVQ2LCBib3RoIGNhbGwgYXJlCi0gICAgICAgICAg
ICAjICAgZXhwZWN0ZWQgdG8gc3VjY2VlZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KLSAgICAg
ICAgICAgIGFkZHJpbmZvX2FycmF5ID0gWwotICAgICAgICAgICAgICAgIChzb2NrZXQuQUZfSU5F
VDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLCAnJyksCi0gICAgICAgICAgICAgICAgKHNv
Y2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0sICcnLCAnJywgJycpXQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgYWRkcmluZm9fYXJyYXkgPSBzb2NrZXQuZ2V0YWRkcmluZm8oc2Vs
Zi5zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb2NrZXQuQUZfVU5TUEVDLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfU1RSRUFNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQ
KQotICAgICAgICBmb3IgYWRkcmluZm8gaW4gYWRkcmluZm9fYXJyYXk6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygnQ3JlYXRlIHNvY2tldCBvbjogJXInLCBhZGRyaW5mbykKLSAgICAg
ICAgICAgIGZhbWlseSwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNvY2thZGRyID0gYWRk
cmluZm8KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb2NrZXRfID0gc29ja2V0
LnNvY2tldChmYW1pbHksIHNvY2t0eXBlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg
ZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAl
cicsIGUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHNlcnZlcl9vcHRp
b25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgICAgIGlmIHNlcnZl
cl9vcHRpb25zLnVzZV90bHM6Ci0gICAgICAgICAgICAgICAgIyBGb3IgdGhlIGNhc2Ugb2YgX0hB
U19PUEVOX1NTTCwgd2UgZG8gd3JhcHBlciBzZXR1cCBhZnRlcgotICAgICAgICAgICAgICAgICMg
YWNjZXB0LgotICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0g
X1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9v
cHRpb25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlcnZl
cl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8g
PSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAg
ICAgICAgICBzb2NrZXRfID0gc3NsLndyYXBfc29ja2V0KHNvY2tldF8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBrZXlmaWxlPXNlcnZlcl9vcHRpb25zLnByaXZhdGVfa2V5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9j
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jbGllbnRfY2VydF8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAg
ICAgICAgIHNlbGYuX3NvY2tldHMuYXBwZW5kKChzb2NrZXRfLCBhZGRyaW5mbykpCi0KLSAgICBk
ZWYgc2VydmVyX2JpbmQoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5U
Q1BTZXJ2ZXIuc2VydmVyX2JpbmQgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMg
YmluZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmFpbGVkX3NvY2tldHMgPSBbXQotCi0gICAg
ICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRf
LCBhZGRyaW5mbyA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdC
aW5kIG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19yZXVzZV9h
ZGRyZXNzOgotICAgICAgICAgICAgICAgIHNvY2tldF8uc2V0c29ja29wdChzb2NrZXQuU09MX1NP
Q0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBzb2NrZXRfLmJpbmQoc2VsZi5zZXJ2ZXJfYWRkcmVzcykKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1Nr
aXAgYnkgZmFpbHVyZTogJXInLCBlKQotICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQot
ICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQotICAgICAg
ICAgICAgaWYgc2VsZi5zZXJ2ZXJfYWRkcmVzc1sxXSA9PSAwOgotICAgICAgICAgICAgICAgICMg
VGhlIG9wZXJhdGluZyBzeXN0ZW0gYXNzaWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBw
b3J0Ci0gICAgICAgICAgICAgICAgIyBudW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFu
ZCBsYXRlciBzb2NrZXRzIHNob3VsZCB1c2UKLSAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBv
cnQgbnVtYmVyLiBBbHNvIHNlbGYuc2VydmVyX3BvcnQgaXMgcmV3cml0dGVuCi0gICAgICAgICAg
ICAgICAgIyBiZWNhdXNlIGl0IGlzIGV4cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVy
bmFsIGNvZGUuCi0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9ICgKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSwgc29ja2V0Xy5nZXRzb2NrbmFtZSgpWzFd
KQotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNz
WzFdCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMgYXNzaWdu
ZWQnLCBzZWxmLnNlcnZlcl9wb3J0KQotCi0gICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxl
ZF9zb2NrZXRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykK
LQotICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNv
Y2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0aXBsZQot
ICAgICAgICBzb2NrZXRzIGxpc3Rlbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmFpbGVkX3Nv
Y2tldHMgPSBbXQotCi0gICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0g
ICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1ZXVlX3Np
emUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKLSAgICAgICAgICAgICAg
ICBzb2NrZXRfLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBmYWlsZWRfc29ja2V0cy5hcHBlbmQo
c29ja2V0aW5mbykKLQotICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBmYWlsZWRfc29ja2V0czoK
LSAgICAgICAgICAgIHNlbGYuX3NvY2tldHMucmVtb3ZlKHNvY2tldGluZm8pCi0KLSAgICAgICAg
aWYgbGVuKHNlbGYuX3NvY2tldHMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuY3Jp
dGljYWwoCi0gICAgICAgICAgICAgICAgJ05vIHNvY2tldHMgYWN0aXZhdGVkLiBVc2UgaW5mbyBs
b2cgbGV2ZWwgdG8gc2VlIHRoZSByZWFzb24uJykKLQotICAgIGRlZiBzZXJ2ZXJfY2xvc2Uoc2Vs
Zik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2Ns
b3NlIHRvIGVuYWJsZSBtdWx0aXBsZQotICAgICAgICBzb2NrZXRzIGNsb3NlLgotICAgICAgICAi
IiIKLQotICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxmLl9zb2NrZXRzOgotICAgICAgICAg
ICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCi0gICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnQ2xvc2Ugb246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICBzb2NrZXRfLmNs
b3NlKCkKLQotICAgIGRlZiBmaWxlbm8oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tl
dFNlcnZlci5UQ1BTZXJ2ZXIuZmlsZW5vLiIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5jcml0
aWNhbCgnTm90IHN1cHBvcnRlZDogZmlsZW5vJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2tl
dHNbMF1bMF0uZmlsZW5vKCkKLQotICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwg
Y2xpZW50X2FkZHJlc3MpOgotICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuaGFuZGxl
X2Vycm9yLiIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5lcnJvcigKLSAgICAgICAgICAgICdF
eGNlcHRpb24gaW4gcHJvY2Vzc2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCi0gICAgICAgICAg
ICBjbGllbnRfYWRkcmVzcywKLSAgICAgICAgICAgIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0g
ICAgICAgICMgTm90ZTogY2xpZW50X2FkZHJlc3MgaXMgYSB0dXBsZS4KLQotICAgIGRlZiBnZXRf
cmVxdWVzdChzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgVENQU2VydmVyLmdldF9yZXF1ZXN0
IHRvIHdyYXAgT3BlblNTTC5TU0wuQ29ubmVjdGlvbgotICAgICAgICBvYmplY3Qgd2l0aCBfU3Rh
bmRhbG9uZVNTTENvbm5lY3Rpb24gdG8gcHJvdmlkZSBtYWtlZmlsZSBtZXRob2QuIFdlCi0gICAg
ICAgIGNhbm5vdCBzdWJzdGl0dXRlIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24ubWFrZWZpbGUgc2lu
Y2UgaXQncyByZWFkb25seQotICAgICAgICBhdHRyaWJ1dGUuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLnNvY2tldC5hY2NlcHQo
KQotCi0gICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlv
bnMKLSAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNlX3RsczoKLSAgICAgICAgICAgIGlmIHNl
cnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yLCBlOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVyJywgZSkKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UKLQotICAgICAgICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4g
SGFuZHNoYWtlIGlzIGRvbmUgb24gYWNjZXB0LgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnQ2lwaGVyOiAlcycsIGFjY2VwdGVkX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5nZXRwZWVyY2VydCgpKQot
ICAgICAgICAgICAgZWxpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlP
UEVOU1NMOgotICAgICAgICAgICAgICAgICMgV2UgY2Fubm90IHByaW50IHRoZSBjaXBoZXIgaW4g
dXNlLiBweU9wZW5TU0wgZG9lc24ndCBwcm92aWRlCi0gICAgICAgICAgICAgICAgIyBhbnkgbWV0
aG9kIHRvIGZldGNoIHRoYXQuCi0KLSAgICAgICAgICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5D
b250ZXh0KE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QpCi0gICAgICAgICAgICAgICAgY3R4LnVz
ZV9wcml2YXRla2V5X2ZpbGUoc2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXkpCi0gICAgICAgICAg
ICAgICAgY3R4LnVzZV9jZXJ0aWZpY2F0ZV9maWxlKHNlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRl
KQotCi0gICAgICAgICAgICAgICAgZGVmIGRlZmF1bHRfY2FsbGJhY2soY29ubiwgY2VydCwgZXJy
bnVtLCBlcnJkZXB0aCwgb2spOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2sgPT0gMQot
Ci0gICAgICAgICAgICAgICAgIyBTZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQgZm9yIFNTTF9DVFhf
c2V0X3ZlcmlmeS4KLSAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50
X2F1dGg6Ci0gICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlID0gT3BlblNTTC5TU0wuVkVS
SUZZX1BFRVIKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9vcHRpb25zLnRsc19j
bGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2Rl
IHw9IE9wZW5TU0wuU1NMLlZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVAotICAgICAgICAgICAg
ICAgICAgICBjdHguc2V0X3ZlcmlmeSh2ZXJpZnlfbW9kZSwgZGVmYXVsdF9jYWxsYmFjaykKLSAg
ICAgICAgICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzZXJ2ZXJfb3B0aW9u
cy50bHNfY2xpZW50X2NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
Y3R4LnNldF92ZXJpZnkoT3BlblNTTC5TU0wuVkVSSUZZX05PTkUsIGRlZmF1bHRfY2FsbGJhY2sp
Ci0KLSAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBPcGVuU1NMLlNTTC5Db25uZWN0
aW9uKGN0eCwgYWNjZXB0ZWRfc29ja2V0KQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tl
dC5zZXRfYWNjZXB0X3N0YXRlKCkKLQotICAgICAgICAgICAgICAgICMgQ29udmVydCBTU0wgcmVs
YXRlZCBlcnJvciBpbnRvIHNvY2tldC5lcnJvciBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBT
b2NrZXRTZXJ2ZXIgaWdub3JlcyB0aGVtIGFuZCBrZWVwcyBydW5uaW5nLgotICAgICAgICAgICAg
ICAgICMKLSAgICAgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBDb252ZXJ0IGFsbCBraW5k
cyBvZiBlcnJvcnMuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBh
Y2NlcHRlZF9zb2NrZXQuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT3Bl
blNTTC5TU0wuRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgICMgU2V0IGVycm5vIHBhcnQg
dG8gMSAoU1NMX0VSUk9SX1NTTCkgbGlrZSB0aGUgc3NsIG1vZHVsZQotICAgICAgICAgICAgICAg
ICAgICAjIGRvZXMuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXIn
LCBlKQotICAgICAgICAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoMSwgJyVyJyAlIGUp
Ci0gICAgICAgICAgICAgICAgY2VydCA9IGFjY2VwdGVkX3NvY2tldC5nZXRfcGVlcl9jZXJ0aWZp
Y2F0ZSgpCi0gICAgICAgICAgICAgICAgaWYgY2VydCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQgY2VydCBzdWJqZWN0OiAlcicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0LmdldF9zdWJqZWN0KCku
Z2V0X2NvbXBvbmVudHMoKSkKLSAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQgPSBfU3Rh
bmRhbG9uZVNTTENvbm5lY3Rpb24oYWNjZXB0ZWRfc29ja2V0KQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdObyBUTFMgc3VwcG9ydCBtb2R1bGUg
aXMgYXZhaWxhYmxlJykKLQotICAgICAgICByZXR1cm4gYWNjZXB0ZWRfc29ja2V0LCBjbGllbnRf
YWRkcmVzcwotCi0gICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZiwgcG9sbF9pbnRlcnZhbD0wLjUp
OgotICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5zZXJ2ZV9mb3Jl
dmVyLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gVHJ1ZQotICAgICAgICBzZWxm
Ll9fd3NfaXNfc2h1dF9kb3duLmNsZWFyKCkKLSAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxm
LmhhbmRsZV9yZXF1ZXN0Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19oYW5kbGVfcmVxdWVz
dF9ub2Jsb2NrJyk6Ci0gICAgICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYuX2hhbmRsZV9y
ZXF1ZXN0X25vYmxvY2sKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53
YXJuaW5nKCdGYWxsYmFjayB0byBibG9ja2luZyByZXF1ZXN0IGhhbmRsZXInKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICB3aGlsZSBzZWxmLl9fd3Nfc2VydmluZzoKLSAgICAgICAgICAgICAg
ICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdCgKLSAgICAgICAgICAgICAgICAgICAgW3NvY2tldF9b
MF0gZm9yIHNvY2tldF8gaW4gc2VsZi5fc29ja2V0c10sCi0gICAgICAgICAgICAgICAgICAgIFtd
LCBbXSwgcG9sbF9pbnRlcnZhbCkKLSAgICAgICAgICAgICAgICBmb3Igc29ja2V0XyBpbiByOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldF8KLSAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9u
ZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi5z
ZXQoKQotCi0gICAgZGVmIHNodXRkb3duKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBTb2Nr
ZXRTZXJ2ZXIuQmFzZVNlcnZlci5zaHV0ZG93bi4iIiIKLQotICAgICAgICBzZWxmLl9fd3Nfc2Vy
dmluZyA9IEZhbHNlCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24ud2FpdCgpCi0KLQot
Y2xhc3MgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIoQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVz
dEhhbmRsZXIpOgotICAgICIiIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciBzcGVjaWFsaXplZCBmb3Ig
V2ViU29ja2V0LiIiIgotCi0gICAgIyBVc2UgaHR0cGxpYi5IVFRQTWVzc2FnZSBpbnN0ZWFkIG9m
IG1pbWV0b29scy5NZXNzYWdlLgotICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHBsaWIuSFRUUE1lc3Nh
Z2UKLQotICAgIHByb3RvY29sX3ZlcnNpb24gPSAiSFRUUC8xLjEiCi0KLSAgICBkZWYgc2V0dXAo
c2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5TdHJlYW1SZXF1ZXN0SGFu
ZGxlci5zZXR1cCB0byB3cmFwIHJmaWxlCi0gICAgICAgIHdpdGggTWVtb3JpemluZ0ZpbGUuCi0K
LSAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYnkgQmFzZVJlcXVlc3RIYW5kbGVy
J3MgY29uc3RydWN0b3IKLSAgICAgICAgYmVmb3JlIGNhbGxpbmcgQmFzZUhUVFBSZXF1ZXN0SGFu
ZGxlci5oYW5kbGUuCi0gICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlIHdpbGwg
Y2FsbAotICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBh
bmQgaXQgd2lsbCBjYWxsCi0gICAgICAgIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLnBhcnNlX3Jl
cXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQ2FsbCBzdXBlcmNsYXNzJ3Mgc2V0dXAg
dG8gcHJlcGFyZSByZmlsZSwgd2ZpbGUsIGV0Yy4gU2VlIHNldHVwCi0gICAgICAgICMgZGVmaW5p
dGlvbiBvbiB0aGUgcm9vdCBjbGFzcyBTb2NrZXRTZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIg
dG8KLSAgICAgICAgIyB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkb2VzLgotICAgICAgICBDR0lIVFRQ
U2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5zZXR1cChzZWxmKQotCi0gICAgICAgIHNlbGYu
cmZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZSgKLSAgICAgICAgICAgIHNlbGYu
cmZpbGUsCi0gICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVzPV9NQVhfTUVNT1JJWkVEX0xJ
TkVTKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBz
ZXJ2ZXIpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2Vs
ZikKLQotICAgICAgICBzZWxmLl9vcHRpb25zID0gc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0
aW9ucwotCi0gICAgICAgICMgT3ZlcnJpZGVzIENHSUhUVFBTZXJ2ZXJSZXF1ZXN0SGFuZGxlci5j
Z2lfZGlyZWN0b3JpZXMuCi0gICAgICAgIHNlbGYuY2dpX2RpcmVjdG9yaWVzID0gc2VsZi5fb3B0
aW9ucy5jZ2lfZGlyZWN0b3JpZXMKLSAgICAgICAgIyBSZXBsYWNlIENHSUhUVFBSZXF1ZXN0SGFu
ZGxlci5pc19leGVjdXRhYmxlIG1ldGhvZC4KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5pc19l
eGVjdXRhYmxlX21ldGhvZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuaXNfZXhlY3V0
YWJsZSA9IHNlbGYuX29wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QKLQotICAgICAgICAjIFRo
aXMgYWN0dWFsbHkgY2FsbHMgQmFzZVJlcXVlc3RIYW5kbGVyLl9faW5pdF9fLgotICAgICAgICBD
R0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5fX2luaXRfXygKLSAgICAgICAgICAg
IHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCi0KLSAgICBkZWYgcGFyc2Vf
cmVxdWVzdChzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2ZXIuQmFzZUhU
VFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgotCi0gICAgICAgIFJldHVybiBUcnVlIHRv
IGNvbnRpbnVlIHByb2Nlc3NpbmcgZm9yIEhUVFAoUyksIEZhbHNlIG90aGVyd2lzZS4KLQotICAg
ICAgICBTZWUgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgbWV0aG9k
IHdoaWNoIGNhbGxzCi0gICAgICAgIHRoaXMgbWV0aG9kIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBy
ZXR1cm4gdmFsdWUgd2lsbCBiZSBoYW5kbGVkLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFdl
IGhvb2sgcGFyc2VfcmVxdWVzdCBtZXRob2QsIGJ1dCBhbHNvIGNhbGwgdGhlIG9yaWdpbmFsCi0g
ICAgICAgICMgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qgc2luY2Ugd2hlbiB3
ZSByZXR1cm4gRmFsc2UsCi0gICAgICAgICMgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9v
bmVfcmVxdWVzdCBjb250aW51ZXMgcHJvY2Vzc2luZyBhbmQKLSAgICAgICAgIyBpdCBuZWVkcyB2
YXJpYWJsZXMgc2V0IGJ5IENHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgotICAg
ICAgICAjCi0gICAgICAgICMgVmFyaWFibGVzIHNldCBieSB0aGlzIG1ldGhvZCB3aWxsIGJlIGFs
c28gdXNlZCBieSBXZWJTb2NrZXQgcmVxdWVzdAotICAgICAgICAjIGhhbmRsaW5nIChzZWxmLnBh
dGgsIHNlbGYuY29tbWFuZCwgc2VsZi5yZXF1ZXN0bGluZSwgZXRjLiBTZWUgYWxzbwotICAgICAg
ICAjIGhvdyBfU3RhbmRhbG9uZVJlcXVlc3QncyBtZW1iZXJzIGFyZSBpbXBsZW1lbnRlZCB1c2lu
ZyB0aGVzZQotICAgICAgICAjIGF0dHJpYnV0ZXMpLgotICAgICAgICBpZiBub3QgQ0dJSFRUUFNl
cnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdChzZWxmKToKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuY29tbWFuZCA9PSAiQ09OTkVDVCI6
Ci0gICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiQ29ubmVjdGVkIikKLSAgICAg
ICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbm5lY3Rpb24iLCAia2VlcC1hbGl2ZSIpCi0gICAg
ICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Jhc2ljX2F1dGg6Ci0gICAgICAgICAgICBhdXRo
ID0gc2VsZi5oZWFkZXJzLmdldGhlYWRlcignQXV0aG9yaXphdGlvbicpCi0gICAgICAgICAgICBp
ZiBhdXRoICE9IHNlbGYuX29wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsOgotICAgICAgICAg
ICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSg0MDEpCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5k
X2hlYWRlcignV1dXLUF1dGhlbnRpY2F0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnQmFzaWMgcmVhbG09IlB5d2Vic29ja2V0IicpCi0gICAgICAgICAgICAgICAgc2VsZi5l
bmRfaGVhZGVycygpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlcXVlc3Qg
YmFzaWMgYXV0aGVudGljYXRpb24nKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmko
c2VsZi5wYXRoKQotCi0gICAgICAgICMgU3BlY2lhbCBwYXRocyBmb3IgWE1MSHR0cFJlcXVlc3Qg
YmVuY2htYXJrCi0gICAgICAgIHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZpeCA9ICcvMDczYmUw
MDFlMTA5NTA2OTJjY2JmM2EyYWQyMWMyNDUnCi0gICAgICAgIGlmIHJlc291cmNlID09ICh4aHJf
YmVuY2htYXJrX2hlbHBlcl9wcmVmaXggKyAnX3NlbmQnKToKLSAgICAgICAgICAgIHhocl9iZW5j
aG1hcmtfaGFuZGxlciA9IFhIUkJlbmNobWFya0hhbmRsZXIoCi0gICAgICAgICAgICAgICAgc2Vs
Zi5oZWFkZXJzLCBzZWxmLnJmaWxlLCBzZWxmLndmaWxlKQotICAgICAgICAgICAgeGhyX2JlbmNo
bWFya19oYW5kbGVyLmRvX3NlbmQoKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAg
IGlmIHJlc291cmNlID09ICh4aHJfYmVuY2htYXJrX2hlbHBlcl9wcmVmaXggKyAnX3JlY2VpdmUn
KToKLSAgICAgICAgICAgIHhocl9iZW5jaG1hcmtfaGFuZGxlciA9IFhIUkJlbmNobWFya0hhbmRs
ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5oZWFkZXJzLCBzZWxmLnJmaWxlLCBzZWxmLndmaWxl
KQotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyLmRvX3JlY2VpdmUoKQotICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdJbnZhbGlkIFVSSTogJXInLCBzZWxmLnBhdGgpCi0g
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sgdG8gQ0dJSFRUUFJlcXVlc3RI
YW5kbGVyJykKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHNlcnZlcl9vcHRpb25z
ID0gc2VsZi5zZXJ2ZXIud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0gICAgICAgIGlmIGhvc3Qg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QgPSBzZXJ2ZXJfb3B0aW9u
cy52YWxpZGF0aW9uX2hvc3QKLSAgICAgICAgICAgIGlmIHZhbGlkYXRpb25faG9zdCBpcyBub3Qg
Tm9uZSBhbmQgaG9zdCAhPSB2YWxpZGF0aW9uX2hvc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0ludmFsaWQgaG9zdDogJXIgKGV4cGVjdGVkOiAlciknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdGlvbl9ob3N0KQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCi0gICAgICAgIGlmIHBvcnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB2
YWxpZGF0aW9uX3BvcnQgPSBzZXJ2ZXJfb3B0aW9ucy52YWxpZGF0aW9uX3BvcnQKLSAgICAgICAg
ICAgIGlmIHZhbGlkYXRpb25fcG9ydCBpcyBub3QgTm9uZSBhbmQgcG9ydCAhPSB2YWxpZGF0aW9u
X3BvcnQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ludmFsaWQgcG9ydDog
JXIgKGV4cGVjdGVkOiAlciknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVx
dWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHNlbGYu
cGF0aCA9IHJlc291cmNlCi0KLSAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChz
ZWxmLCBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
IyBGYWxsYmFjayB0byBkZWZhdWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Ig
d2hpY2gKLSAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgotICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0
ZShzZWxmLnBhdGgpOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5k
bGVyIGZvciByZXNvdXJjZTogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucGF0aCkKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sg
dG8gQ0dJSFRUUFJlcXVlc3RIYW5kbGVyJykKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQot
ICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMnLCBlKQot
ICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0KLSAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3aXRob3V0IGV4Y2VwdCBjbGF1
c2Ugc2V0dXAgKGluY2x1ZGluZwotICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uKSBpcyByYWlz
ZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQKLSAgICAgICAgIyBhbmQgbG9n
Z2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZSgKLSAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5kaXNwYXRj
aGVyLAotICAgICAgICAgICAgICAgICAgICBhbGxvd0RyYWZ0NzU9c2VsZi5fb3B0aW9ucy5hbGxv
d19kcmFmdDc1LAotICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9c2VsZi5fb3B0aW9ucy5zdHJp
Y3QpCi0gICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZlcnNpb25FeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIHZl
cnNpb24gZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Uo
Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgICAgIHNlbGYuc2Vu
ZF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlLnN1cHBvcnRlZF92ZXJzaW9ucykKLSAgICAgICAgICAg
ICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAg
ICAgICAgICAgICMgSGFuZHNoYWtlIGZvciB3cyhzKSBmYWlsZWQuCi0gICAgICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCi0g
ICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gc2VsZi5f
b3B0aW9ucy5kaXNwYXRjaGVyCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIu
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRC
eVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRl
ZDogJXMnLCBlKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBsb2dfcmVxdWVzdChz
ZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNl
cnZlci5sb2dfcmVxdWVzdC4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAl
cyAlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUsIHN0cihj
b2RlKSwgc3RyKHNpemUpKQotCi0gICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6Ci0gICAg
ICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKLQotICAgICAgICAj
IERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBl
cnJvcnMuCi0gICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2Vk
IGJ5IHRoaXMgbWV0aG9kLgotICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnJXMgLSAlcycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1swXSAlIGFyZ3NbMTpdKQotCi0gICAgZGVm
IGlzX2NnaShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNw
b25kcyB0byBhIENHSSBzY3JpcHQuCi0KLSAgICAgICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2Vs
Zi5wYXRoIGRvZXNuJ3QgY29udGFpbnMgLi4KLSAgICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmls
ZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBvciBub3QuCi0gICAgICAgIElmIHRoZSBmaWxlIGlzIG5v
dCBleGVjdXRhYmxlLCBpdCBpcyBoYW5kbGVkIGFzIHN0YXRpYyBmaWxlIG9yIGRpcgotICAgICAg
ICByYXRoZXIgdGhhbiBhIENHSSBzY3JpcHQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIENH
SUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmlzX2NnaShzZWxmKToKLSAgICAgICAg
ICAgIGlmICcuLicgaW4gc2VsZi5wYXRoOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQot
ICAgICAgICAgICAgIyBzdHJpcCBxdWVyeSBwYXJhbWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKLSAg
ICAgICAgICAgIHJlc291cmNlX25hbWUgPSBzZWxmLnBhdGguc3BsaXQoJz8nLCAyKVswXQotICAg
ICAgICAgICAgIyBjb252ZXJ0IHJlc291cmNlX25hbWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBm
aWxlc3lzdGVtLgotICAgICAgICAgICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgo
cmVzb3VyY2VfbmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRm
aWxlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1k
ZWYgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyhjKToKLSAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dn
ZXIoJyVzLiVzJyAlIChjLl9fbW9kdWxlX18sIGMuX19uYW1lX18pKQotCi0KLWRlZiBfY29uZmln
dXJlX2xvZ2dpbmcob3B0aW9ucyk6Ci0gICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxP
R0xFVkVMX0ZJTkUsICdGSU5FJykKLQotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkK
LSAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2
ZWwudXBwZXIoKSkpCi0gICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKLSAgICAgICAgaGFuZGxlciA9
IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcigKLSAgICAgICAgICAgICAgICBv
cHRpb25zLmxvZ19maWxlLCAnYScsIG9wdGlvbnMubG9nX21heCwgb3B0aW9ucy5sb2dfY291bnQp
Ci0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCi0g
ICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoCi0gICAgICAgICAgICAnWyUoYXNjdGlt
ZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1lKXM6ICUobWVzc2FnZSlzJykKLSAgICBoYW5kbGVy
LnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikK
LQotICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5nLmdldExldmVsTmFtZSgKLSAg
ICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigpKQotICAgIF9nZXRfbG9nZ2Vy
X2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKAotICAgICAgICBkZWZsYXRlX2xv
Z19sZXZlbF9uYW1lKQotICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fSW5mbGF0ZXIp
LnNldExldmVsKAotICAgICAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lKQotCi0KLWRlZiBfYnVp
bGRfb3B0aW9uX3BhcnNlcigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
Ci0KLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLCBkZXN0PSdjb25maWdfZmlsZScs
IHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdQYXRoIHRvIGNvbmZpZ3VyYXRpb24gZmlsZS4gU2Vl
IHRoZSBmaWxlIGNvbW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCB0aGUg
dG9wIG9mIHRoaXMgZmlsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdmaWxlIGZvcm1hdCcpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctSCcs
ICctLXNlcnZlci1ob3N0JywgJy0tc2VydmVyX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3NlcnZlcl9ob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAot
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBob3N0bmFtZSB0byBsaXN0ZW4gdG8n
KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctVicsICctLXZhbGlkYXRpb24taG9zdCcsICctLXZh
bGlkYXRpb25faG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmFsaWRhdGlvbl9o
b3N0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIHZhbGlkYXRlIGluIGFic29sdXRlIHBh
dGguJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wb3J0JywgZGVzdD0ncG9ydCcs
IHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVM
VF9XRUJfU09DS0VUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBs
aXN0ZW4gdG8nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctUCcsICctLXZhbGlkYXRpb24tcG9y
dCcsICctLXZhbGlkYXRpb25fcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmFs
aWRhdGlvbl9wb3J0JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFsaWRh
dGUgaW4gYWJzb2x1dGUgcGF0aC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsICctLXdl
YnNvY2staGFuZGxlcnMnLCAnLS13ZWJzb2NrX2hhbmRsZXJzJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIHJvb3QgZGlyZWN0b3J5
IG9mIFdlYlNvY2tldCBoYW5kbGVyIGZpbGVzLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0lmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLCAtLWRvY3VtZW50LXJvb3QgaXMgdXNlZCAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIHRoZSBiYXNlLicpKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctbScsICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAotICAgICAgICAg
ICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnV2Vi
U29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRoIGFuZCAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFyYXRlZCBi
eSBzcGFjZXMuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc2Nhbi1kaXInLCAn
LS1zY2FuX2RpcicsIGRlc3Q9J3NjYW5fZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ011c3QgYmUgYSBkaXJlY3Rv
cnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBkaXJlY3RvcnkgYXJlIHNjYW5uZWQgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgcmVnaXN0ZXJlZCB0byB0aGUgc2VydmVyLiAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBmb3Igc2F2aW5nIHNjYW4gdGlt
ZSB3aGVuIHRoZSBoYW5kbGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdCBk
aXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxlcyB0aGF0IGFyZSAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZpbGUgb3IgYXJlIGhhbmRsZXIgZmlsZXMgYnV0
IHlvdSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvblwndCB3YW50IHRoZW0gdG8g
YmUgcmVnaXN0ZXJlZC4gJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYWxsb3ctaGFuZGxl
cnMtb3V0c2lkZS1yb290LWRpcicsCi0gICAgICAgICAgICAgICAgICAgICAgJy0tYWxsb3dfaGFu
ZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0
aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTY2FucyBXZWJTb2NrZXQgaGFuZGxlcnMgZXZl
biBpZiB0aGVpciBjYW5vbmljYWwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRo
IGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1kJywgJy0tZG9jdW1lbnQtcm9vdCcsICctLWRvY3VtZW50X3Jvb3QnLAotICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J2RvY3VtZW50X3Jvb3QnLCBkZWZhdWx0PScuJywKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdEb2N1bWVudCByb290IGRpcmVjdG9yeS4nKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCcteCcsICctLWNnaS1wYXRocycsICctLWNnaV9wYXRocycsIGRlc3Q9J2Nn
aV9wYXRocycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAv
Y2dpLC9odGJpbikgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBk
b2N1bWVudF9yb290L2NnaV9wYXRoIGFyZSBoYW5kbGVkICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXMgQ0dJIHByb2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy10JywgJy0tdGxzJywgZGVzdD0ndXNlX3RscycsIGFjdGlvbj0nc3Rv
cmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0ndXNl
IFRMUyAod3NzOi8vKScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLW1vZHVsZScsICct
LXRsc19tb2R1bGUnLCBkZXN0PSd0bHNfbW9kdWxlJywKLSAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXMgPSBbX1RMU19CWV9T
VEFOREFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZC4gJwotICAgICAgICAg
ICAgICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNpZmllZCcg
JQotICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19C
WV9QWU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsICctLXByaXZhdGUta2V5
JywgJy0tcHJpdmF0ZV9rZXknLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ByaXZhdGVf
a2V5JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdUTFMgcHJpdmF0
ZSBrZXkgZmlsZS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYycsICctLWNlcnRpZmljYXRl
JywgZGVzdD0nY2VydGlmaWNhdGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jycs
IGhlbHA9J1RMUyBjZXJ0aWZpY2F0ZSBmaWxlLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0t
dGxzLWNsaWVudC1hdXRoJywgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKLSAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1JlcXVlc3RzIFRMUyBjbGllbnQgYXV0aCBvbiBldmVyeSBjb25uZWN0
aW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLWNsaWVudC1jZXJ0LW9wdGlvbmFs
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwn
LAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ01ha2VzIGNsaWVudCBjZXJ0aWZpY2F0
ZSBvcHRpb25hbCBldmVuIHRob3VnaCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RM
UyBjbGllbnQgYXV0aCBpcyBlbmFibGVkLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRs
cy1jbGllbnQtY2EnLCBkZXN0PSd0bHNfY2xpZW50X2NhJywgZGVmYXVsdD0nJywKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnU3BlY2lmaWVzIGEgcGVtIGZpbGUgd2hpY2ggY29udGFpbnMg
YSBzZXQgb2YgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRlbmF0ZWQgQ0Eg
Y2VydGlmaWNhdGVzIHdoaWNoIGFyZSB1c2VkIHRvICcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndmFsaWRhdGUgY2VydGlmaWNhdGVzIHBhc3NlZCBmcm9tIGNsaWVudHMnKSkKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLS1iYXNpYy1hdXRoJywgZGVzdD0ndXNlX2Jhc2ljX2F1dGgnLAot
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRp
b24uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAot
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsIGRlZmF1
bHQ9J3Rlc3Q6dGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmaWVzIHRo
ZSBjcmVkZW50aWFsIG9mIGJhc2ljIGF1dGhlbnRpY2F0aW9uICcKLSAgICAgICAgICAgICAgICAg
ICAgICAnYnkgdXNlcm5hbWU6cGFzc3dvcmQgcGFpciAoZS5nLiB0ZXN0OnRlc3QpLicpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1sJywgJy0tbG9nLWZpbGUnLCAnLS1sb2dfZmlsZScsIGRlc3Q9
J2xvZ19maWxlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdMb2cg
ZmlsZS4nKQotICAgICMgQ3VzdG9tIGxvZyBsZXZlbDoKLSAgICAjIC0gRklORTogUHJpbnRzIHN0
YXR1cyBvZiBlYWNoIGZyYW1lIHByb2Nlc3Npbmcgc3RlcAotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctLWxvZy1sZXZlbCcsICctLWxvZ19sZXZlbCcsIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0nbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybicsCi0gICAgICAgICAg
ICAgICAgICAgICAgY2hvaWNlcz1bJ2ZpbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nTG9nIGxldmVsLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGVmbGF0ZS1s
b2ctbGV2ZWwnLCAnLS1kZWZsYXRlX2xvZ19sZXZlbCcsCi0gICAgICAgICAgICAgICAgICAgICAg
dHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdkZWZsYXRlX2xvZ19s
ZXZlbCcsIGRlZmF1bHQ9J3dhcm4nLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9Wydk
ZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nTG9nIGxldmVsIGZvciBfRGVmbGF0ZXIgYW5kIF9JbmZsYXRlci4nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXRocmVhZC1tb25pdG9yLWludGVydmFsLWluLXNlYycsCi0gICAgICAgICAg
ICAgICAgICAgICAgJy0tdGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSd0aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMnLAotICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1bHQ9LTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ0lmIHBvc2l0aXZlIGludGVnZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0
aHJlYWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25pdG9yIHRvIHNob3cgdGhl
IHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3BlcmlvZGljYWxseSBpbiB0aGUgc3BlY2lmaWVkIGludGV2YWwgaW4gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdzZWNvbmQuIElmIG5vbi1wb3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNp
ZmllZCwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlIHRoZSB0aHJlYWQg
bW9uaXRvci4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbWF4JywgJy0tbG9nX21h
eCcsIGRlc3Q9J2xvZ19tYXgnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9X0RFRkFVTFRfTE9HX01BWF9CWVRFUywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdMb2cgbWF4aW11bSBieXRlcycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50
JywgJy0tbG9nX2NvdW50JywgZGVzdD0nbG9nX2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAg
ICB0eXBlPSdpbnQnLCBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tYWxsb3ctZHJhZnQ3NScsIGRlc3Q9J2FsbG93X2RyYWZ0NzUnLAotICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nT2Jzb2xldGUgb3B0aW9uLiBJZ25vcmVkLicpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy0tc3RyaWN0JywgZGVzdD0nc3RyaWN0JywgYWN0aW9uPSdzdG9yZV90
cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSdPYnNvbGV0
ZSBvcHRpb24uIElnbm9yZWQuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWV1
ZScsIGRlc3Q9J3JlcXVlc3RfcXVldWVfc2l6ZScsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9SRVFVRVNUX1FVRVVFX1NJWkUsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0ncmVxdWVzdCBxdWV1ZSBzaXplJykKLQotICAgIHJldHVybiBwYXJz
ZXIKLQotCi1jbGFzcyBUaHJlYWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgotICAgIGRhZW1v
biA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgotICAg
ICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3In
KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQot
Ci0gICAgICAgIHNlbGYuX2ludGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYwotCi0gICAg
ZGVmIHJ1bihzZWxmKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRocmVhZF9u
YW1lX2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVy
YXRlKCk6Ci0gICAgICAgICAgICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5h
bWUpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygKLSAgICAgICAgICAgICAgICAiJWQg
YWN0aXZlIHRocmVhZHM6ICVzIiwKLSAgICAgICAgICAgICAgICB0aHJlYWRpbmcuYWN0aXZlX2Nv
dW50KCksCi0gICAgICAgICAgICAgICAgJywgJy5qb2luKHRocmVhZF9uYW1lX2xpc3QpKQotICAg
ICAgICAgICAgdGltZS5zbGVlcChzZWxmLl9pbnRlcnZhbF9pbl9zZWMpCi0KLQotZGVmIF9wYXJz
ZV9hcmdzX2FuZF9jb25maWcoYXJncyk6Ci0gICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJz
ZXIoKQotCi0gICAgIyBGaXJzdCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24g
ZmlsZS4KLSAgICB0ZW1wb3Jhcnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFy
c2VfYXJncyhhcmdzPWFyZ3MpCi0gICAgaWYgdGVtcG9yYXJ5X2FyZ3M6Ci0gICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoCi0gICAgICAgICAgICAnVW5yZWNvZ25pemVkIHBvc2l0aW9uYWwgYXJndW1l
bnRzOiAlcicsIHRlbXBvcmFyeV9hcmdzKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYg
dGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IGNvbmZpZ19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdyJykKLSAg
ICAgICAgZXhjZXB0IElPRXJyb3IsIGU6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAot
ICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gb3BlbiBjb25maWd1cmF0aW9uIGZpbGUgJXI6ICVy
JywKLSAgICAgICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwKLSAgICAg
ICAgICAgICAgICBlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBjb25maWdf
cGFyc2VyID0gQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoKQotICAgICAgICBjb25maWdf
cGFyc2VyLnJlYWRmcChjb25maWdfZnApCi0gICAgICAgIGNvbmZpZ19mcC5jbG9zZSgpCi0KLSAg
ICAgICAgYXJnc19mcm9tX2NvbmZpZyA9IFtdCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBj
b25maWdfcGFyc2VyLml0ZW1zKCdweXdlYnNvY2tldCcpOgotICAgICAgICAgICAgYXJnc19mcm9t
X2NvbmZpZy5hcHBlbmQoJy0tJyArIG5hbWUpCi0gICAgICAgICAgICBhcmdzX2Zyb21fY29uZmln
LmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgaWYgYXJncyBpcyBOb25lOgotICAgICAgICAgICAgYXJn
cyA9IGFyZ3NfZnJvbV9jb25maWcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZ3MgPSBh
cmdzX2Zyb21fY29uZmlnICsgYXJncwotICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJncz1hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB0ZW1wb3Jhcnlfb3B0aW9ucywg
dGVtcG9yYXJ5X2FyZ3MKLQotCi1kZWYgX21haW4oYXJncz1Ob25lKToKLSAgICAiIiJZb3UgY2Fu
IGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHlvdXIgb3duIHByb2dyYW0sIGJ1dCBwbGVhc2Ugbm90
ZSB0aGF0Ci0gICAgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzaWRlLWVmZmVjdHMgdGhhdCBtaWdo
dCBhZmZlY3QgeW91ciBwcm9ncmFtLiBGb3IKLSAgICBleGFtcGxlLCB1dGlsLndyYXBfcG9wZW4z
X2Zvcl93aW4gdXNlIGluIHRoaXMgbWV0aG9kIHJlcGxhY2VzIGltcGxlbWVudGF0aW9uCi0gICAg
b2Ygb3MucG9wZW4zLgotICAgICIiIgotCi0gICAgb3B0aW9ucywgYXJncyA9IF9wYXJzZV9hcmdz
X2FuZF9jb25maWcoYXJncz1hcmdzKQotCi0gICAgb3MuY2hkaXIob3B0aW9ucy5kb2N1bWVudF9y
b290KQotCi0gICAgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCi0KLSAgICBpZiBvcHRpb25z
LmFsbG93X2RyYWZ0NzU6Ci0gICAgICAgIGxvZ2dpbmcud2FybmluZygnLS1hbGxvd19kcmFmdDc1
IG9wdGlvbiBpcyBvYnNvbGV0ZS4nKQotCi0gICAgaWYgb3B0aW9ucy5zdHJpY3Q6Ci0gICAgICAg
IGxvZ2dpbmcud2FybmluZygnLS1zdHJpY3Qgb3B0aW9uIGlzIG9ic29sZXRlLicpCi0KLSAgICAj
IFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2
YWx1ZXMuIE1vdmUgc29tZQotICAgICMgb2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RI
YW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0dGVyLgotICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVz
ID0gW10KLSAgICBvcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kID0gTm9uZQotICAgIGlmIG9w
dGlvbnMuY2dpX3BhdGhzOgotICAgICAgICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlv
bnMuY2dpX3BhdGhzLnNwbGl0KCcsJykKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3ln
d2luJywgJ3dpbjMyJyk6Ci0gICAgICAgICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKLSAgICAgICAg
ICAgICMgRm9yIFdpbjMyIFB5dGhvbiwgaXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAot
ICAgICAgICAgICAgIyBpcyBzZXQgdG8gYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgot
ICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1
bSBzZXRzIENZR1dJTl9QQVRIIHRvCi0gICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9w
YXJ0eS9jeWd3aW4vYmluLgotICAgICAgICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZp
cm9uOgotICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BB
VEgnXQotICAgICAgICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQot
Ci0gICAgICAgICAgICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0cGF0aCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3Bh
dGgpCi0KLSAgICAgICAgICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNr
X3NjcmlwdAotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBvcHRpb25zLnRs
c19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6Ci0gICAgICAg
ICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEUKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKLSAgICAgICAg
ICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRs
c19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVi
dWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUyBz
dXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAgICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19C
WV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9zc2woKToKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFi
bGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYgb3B0aW9ucy50
bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgbm90IF9pbXBv
cnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgncHlPcGVu
U1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnSW52YWxpZCAt
LXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYg
bm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlvbnMuY2VydGlmaWNhdGU6Ci0gICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAnVG8gdXNlIFRM
Uywgc3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlmaWNhdGUuJykKLSAgICAgICAgICAgIHN5
cy5leGl0KDEpCi0KLSAgICAgICAgaWYgKG9wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFs
IGFuZAotICAgICAgICAgICAgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKLSAgICAgICAg
ICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJs
ZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50
X2NlcnRfb3B0aW9uYWwnKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBlbHNlOgotICAg
ICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsb2dn
aW5nLmNyaXRpY2FsKCdVc2UgLS10bHMtbW9kdWxlIG9wdGlvbiBvbmx5IHRvZ2V0aGVyIHdpdGgg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2UtdGxzIG9wdGlvbi4nKQotICAg
ICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfYXV0
aDoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9y
IGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAg
ICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNh
dGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIG5vdCBvcHRpb25zLnNj
YW5fZGlyOgotICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRs
ZXJzCi0KLSAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19hdXRoOgotICAgICAgICBvcHRpb25zLmJh
c2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsgYmFzZTY0LmI2NGVuY29kZSgKLSAgICAg
ICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsKQotCi0gICAgdHJ5OgotICAgICAg
ICBpZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYyA+IDA6Ci0gICAgICAg
ICAgICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIg
dGhyZWFkcyBmb3IKLSAgICAgICAgICAgICMgZGVidWdnaW5nLgotICAgICAgICAgICAgVGhyZWFk
TW9uaXRvcihvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYykuc3RhcnQoKQot
Ci0gICAgICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRpb25zKQotICAgICAgICBzZXJ2
ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgbG9n
Z2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAlcycgJSBlKQotICAgICAgICBsb2dnaW5n
LmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
ICBfbWFpbihzeXMuYXJndlsxOl0pCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L3N0cmVhbS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRjNTMzMjc5
NzQ5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IlRoaXMgZmlsZSBleHBvcnRzIHB1YmxpYyBzeW1ib2xzLgotIiIiCi0KLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRF
eGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IEludmFsaWRVVEY4RXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1faGl4aWU3NSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9oeWJpIGltcG9ydCBGcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9o
eWJpIGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgU3RyZWFtT3B0aW9ucwotCi0jIFRoZXNlIG1ldGhvZHMgYXJlIGludGVuZGVkIHRvIGJlIHVz
ZWQgYnkgV2ViU29ja2V0IGNsaWVudCBkZXZlbG9wZXJzIHRvIGhhdmUKLSMgdGhlaXIgaW1wbGVt
ZW50YXRpb25zIHJlY2VpdmUgYnJva2VuIGRhdGEgaW4gdGVzdHMuCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zZV9mcmFtZQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfaGVhZGVyCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9waW5nX2ZyYW1lCi1mcm9t
IG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9wb25nX2ZyYW1lCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJh
bWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX3RleHRf
ZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Ns
b3NpbmdfaGFuZHNoYWtlX2JvZHkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMjRhZTM5NDJkNy4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsNDE2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNv
Y2tldCB1dGlsaXRpZXMuCi0iIiIKLQotCi1pbXBvcnQgYXJyYXkKLWltcG9ydCBlcnJubwotCi0j
IEltcG9ydCBoYXNoIGNsYXNzZXMgZnJvbSBhIG1vZHVsZSBhdmFpbGFibGUgYW5kIHJlY29tbWVu
ZGVkIGZvciBlYWNoIFB5dGhvbgotIyB2ZXJzaW9uIGFuZCByZS1leHBvcnQgdGhvc2Ugc3ltYm9s
LiBVc2Ugc2hhIGFuZCBtZDUgbW9kdWxlIGluIFB5dGhvbiAyLjQsIGFuZAotIyBoYXNobGliIG1v
ZHVsZSBpbiBQeXRob24gMi42LgotdHJ5OgotICAgIGltcG9ydCBoYXNobGliCi0gICAgbWQ1X2hh
c2ggPSBoYXNobGliLm1kNQotICAgIHNoYTFfaGFzaCA9IGhhc2hsaWIuc2hhMQotZXhjZXB0IElt
cG9ydEVycm9yOgotICAgIGltcG9ydCBtZDUKLSAgICBpbXBvcnQgc2hhCi0gICAgbWQ1X2hhc2gg
PSBtZDUubWQ1Ci0gICAgc2hhMV9oYXNoID0gc2hhLnNoYQotCi1pbXBvcnQgU3RyaW5nSU8KLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0
IHRyYWNlYmFjawotaW1wb3J0IHpsaWIKLQotdHJ5OgotICAgIGZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBmYXN0X21hc2tpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLQot
ZGVmIGdldF9zdGFja190cmFjZSgpOgotICAgICIiIkdldCB0aGUgY3VycmVudCBzdGFjayB0cmFj
ZSBhcyBzdHJpbmcuCi0KLSAgICBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IFB5dGhvbiAyLjMu
Ci0gICAgVE9ETzogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBvbmx5IHN1cHBvcnQgUHl0aG9uIDIuNCBh
bmQgYWJvdmUuCi0gICAgICAgICAgVXNlIHRyYWNlYmFjay5mb3JtYXRfZXhjIGluc3RlYWQuCi0g
ICAgIiIiCi0KLSAgICBvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgdHJhY2ViYWNrLnBy
aW50X2V4YyhmaWxlPW91dCkKLSAgICByZXR1cm4gb3V0LmdldHZhbHVlKCkKLQotCi1kZWYgcHJl
cGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihtZXNzYWdlLCBleGMpOgotICAgICIiIlByZXBlbmQg
bWVzc2FnZSB0byB0aGUgZXhjZXB0aW9uLiIiIgotCi0gICAgZXhjLmFyZ3MgPSAobWVzc2FnZSAr
IHN0cihleGMpLCkKLSAgICByZXR1cm4KLQotCi1kZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVy
cCwgY3lnd2luX3BhdGgpOgotICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZv
ciBXaW4zMiBweXRob24gdG8gcnVuIGN5Z3dpbiBwcm9ncmFtCi0gICAgKGUuZy4gcGVybCkuICBO
b3RlIHRoYXQgaXQgZG9lc24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKLSAg
ICB3aGljaCBpcyB0eXBpY2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdy
aXR0ZW4uCi0gICAgRm9yIFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkg
b2YgY3lnd2luIGJpbmFyaWVzLgotCi0gICAgQXJnczoKLSAgICAgIGludGVycDogaW50ZXJwIGNv
bW1hbmQgbGluZQotICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBi
aW5hcnksIG9yIE5vbmUKLSAgICBSZXR1cm5zOgotICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29t
bWFuZCBsaW5lLgotICAgICIiIgotICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKLSAgICAgICAgcmV0
dXJuIGludGVycAotICAgIG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRl
cnApCi0gICAgaWYgbToKLSAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBt
Lmdyb3VwKDEpKQotICAgICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQotICAgIHJldHVybiBp
bnRlcnAKLQotCi1kZWYgZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRo
PU5vbmUpOgotICAgICIiIkdldHMgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhl
IHNjcmlwdC4KLQotICAgIEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4g
UHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gV2ViS2l0LAotICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9i
aW4vcGVybCAtd1QgaGVsbG8ucGwiLgotICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUu
Zy4gaW4gQ2hyb21pdW0sIGl0IGNvdWxkbid0LiAgU28sIGZpeAotICAgICIvdXNyL2Jpbi9wZXJs
IiB0byAiPGN5Z3dpbl9wYXRoPlxwZXJsLmV4ZSIuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0
X3BhdGg6IHBhdGhuYW1lIG9mIHRoZSBzY3JpcHQKLSAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3Rv
cnkgbmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoKLSAgICAgICMh
LWludGVycHJldGVyIGNvbW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0
LgotICAgICIiIgotICAgIGZwID0gb3BlbihzY3JpcHRfcGF0aCkKLSAgICBsaW5lID0gZnAucmVh
ZGxpbmUoKQotICAgIGZwLmNsb3NlKCkKLSAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5l
KQotICAgIGlmIG06Ci0gICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgx
KSwgY3lnd2luX3BhdGgpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgd3JhcF9wb3BlbjNfZm9y
X3dpbihjeWd3aW5fcGF0aCk6Ci0gICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3Jp
cHQgb24gV2luZG93cy4KLQotICAgIEFyZ3M6Ci0gICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9y
IGN5Z3dpbiBiaW5hcnkgaWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQotICAgICAgICAg
ICAgICAgICAgICB0cmFuc2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4K
LSAgICAiIiIKLQotICAgIF9fb3JpZ19wb3BlbjMgPSBvcy5wb3BlbjMKLQotICAgIGRlZiBfX3dy
YXBfcG9wZW4zKGNtZCwgbW9kZT0ndCcsIGJ1ZnNpemU9LTEpOgotICAgICAgICBjbWRsaW5lID0g
Y21kLnNwbGl0KCcgJykKLSAgICAgICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9pbnRlcnAoY21kbGlu
ZVswXSwgY3lnd2luX3BhdGgpCi0gICAgICAgIGlmIGludGVycDoKLSAgICAgICAgICAgIGNtZCA9
IGludGVycCArICcgJyArIGNtZAotICAgICAgICByZXR1cm4gX19vcmlnX3BvcGVuMyhjbWQsIG1v
ZGUsIGJ1ZnNpemUpCi0KLSAgICBvcy5wb3BlbjMgPSBfX3dyYXBfcG9wZW4zCi0KLQotZGVmIGhl
eGlmeShzKToKLSAgICByZXR1cm4gJyAnLmpvaW4obWFwKGxhbWJkYSB4OiAnJTAyeCcgJSBvcmQo
eCksIHMpKQotCi0KLWRlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgotICAgIHJldHVybiBsb2dnaW5n
LmdldExvZ2dlcigKLSAgICAgICAgJyVzLiVzJyAlIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBv
Ll9fY2xhc3NfXy5fX25hbWVfXykpCi0KLQotY2xhc3MgTm9vcE1hc2tlcihvYmplY3QpOgotICAg
ICIiIkEgbWFza2luZyBvYmplY3QgdGhhdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIFJlcGVh
dGVkWG9yTWFza2VyIGJ1dAotICAgIGp1c3QgcmV0dXJucyB0aGUgc3RyaW5nIHBhc3NlZCBpbiB3
aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbWFzayhzZWxmLCBzKToKLSAgICAgICAgcmV0
dXJuIHMKLQotCi1jbGFzcyBSZXBlYXRlZFhvck1hc2tlcihvYmplY3QpOgotICAgICIiIkEgbWFz
a2luZyBvYmplY3QgdGhhdCBhcHBsaWVzIFhPUiBvbiB0aGUgc3RyaW5nIGdpdmVuIHRvIG1hc2sg
bWV0aG9kCi0gICAgd2l0aCB0aGUgbWFza2luZyBieXRlcyBnaXZlbiB0byB0aGUgY29uc3RydWN0
b3IgcmVwZWF0ZWRseS4gVGhpcyBvYmplY3QKLSAgICByZW1lbWJlcnMgdGhlIHBvc2l0aW9uIGlu
IHRoZSBtYXNraW5nIGJ5dGVzIHRoZSBsYXN0IG1hc2sgbWV0aG9kIGNhbGwKLSAgICBlbmRlZCBh
bmQgcmVzdW1lcyBmcm9tIHRoYXQgcG9pbnQgb24gdGhlIG5leHQgbWFzayBtZXRob2QgY2FsbC4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNraW5nX2tleSk6Ci0gICAgICAg
IHNlbGYuX21hc2tpbmdfa2V5ID0gbWFza2luZ19rZXkKLSAgICAgICAgc2VsZi5fbWFza2luZ19r
ZXlfaW5kZXggPSAwCi0KLSAgICBkZWYgX21hc2tfdXNpbmdfc3dpZyhzZWxmLCBzKToKLSAgICAg
ICAgbWFza2VkX2RhdGEgPSBmYXN0X21hc2tpbmcubWFzaygKLSAgICAgICAgICAgICAgICBzLCBz
ZWxmLl9tYXNraW5nX2tleSwgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgpCi0gICAgICAgIHNlbGYu
X21hc2tpbmdfa2V5X2luZGV4ID0gKAotICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5nX2tl
eV9pbmRleCArIGxlbihzKSkgJSBsZW4oc2VsZi5fbWFza2luZ19rZXkpKQotICAgICAgICByZXR1
cm4gbWFza2VkX2RhdGEKLQotICAgIGRlZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToKLSAg
ICAgICAgcmVzdWx0ID0gYXJyYXkuYXJyYXkoJ0InKQotICAgICAgICByZXN1bHQuZnJvbXN0cmlu
ZyhzKQotCi0gICAgICAgICMgVXNlIHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWlu
YXRlIHRoZSBjb3N0IHRvIGFjY2VzcwotICAgICAgICAjIGF0dHJpYnV0ZXMKLSAgICAgICAgbWFz
a2luZ19rZXkgPSBtYXAob3JkLCBzZWxmLl9tYXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19r
ZXlfc2l6ZSA9IGxlbihtYXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSBz
ZWxmLl9tYXNraW5nX2tleV9pbmRleAotCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocmVz
dWx0KSk6Ci0gICAgICAgICAgICByZXN1bHRbaV0gXj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlf
aW5kZXhdCi0gICAgICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRl
eCArIDEpICUgbWFza2luZ19rZXlfc2l6ZQotCi0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2lu
ZGV4ID0gbWFza2luZ19rZXlfaW5kZXgKLQotICAgICAgICByZXR1cm4gcmVzdWx0LnRvc3RyaW5n
KCkKLQotICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKLSAgICAgICAgbWFzayA9
IF9tYXNrX3VzaW5nX3N3aWcKLSAgICBlbHNlOgotICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdf
YXJyYXkKLQotCi0jIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBw
cmVzcyBDTUYvRkxHICgyIG9jdGV0KSBhbmQKLSMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9m
IHpsaWIgc28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKLSMgZGVmbGF0ZSBs
aWJyYXJ5LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0
aW9uYXJ5LgotIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXBy
ZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgotIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1
c3QgdXNlIDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKLSMgY29tcHJlc3Npb24s
IHdlIHVzZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KLSMKLSMgQ29tcHJlc3Npb24g
bGV2ZWwgaXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxl
dmVsCi0jIHRvIGRlY29kZS4KLSMKLSMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUu
Y2Mgb2YgemxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCi0jIFB5dGhvbi4gU2VlIGFs
c28gUkZDMTk1MCAoWkxJQiAzLjMpLgotCi0KLWNsYXNzIF9EZWZsYXRlcihvYmplY3QpOgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzKToKLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxp
Yi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6
bGliLkRFRkxBVEVELCAtd2luZG93X2JpdHMpCi0KLSAgICBkZWYgY29tcHJlc3Moc2VsZiwgYnl0
ZXMpOgotICAgICAgICBjb21wcmVzc2VkX2J5dGVzID0gc2VsZi5fY29tcHJlc3MuY29tcHJlc3Mo
Ynl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBi
eXRlcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBj
b21wcmVzc2VkX2J5dGVzKQotICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcwotCi0gICAg
ZGVmIGNvbXByZXNzX2FuZF9mbHVzaChzZWxmLCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRf
Ynl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3Nl
ZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQotICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRfYnl0
ZXMpCi0gICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVzCi0KLSAgICBkZWYgY29tcHJlc3Nf
YW5kX2ZpbmlzaChzZWxmLCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxm
Ll9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBz
ZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykKLSAgICAgICAgcmV0
dXJuIGNvbXByZXNzZWRfYnl0ZXMKLQotCi1jbGFzcyBfSW5mbGF0ZXIob2JqZWN0KToKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9
IGdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5k
b3dfYml0cwotCi0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSAnJwotCi0gICAgICAgIHNlbGYu
cmVzZXQoKQotCi0gICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgc2l6ZSk6Ci0gICAgICAgIGlmIG5v
dCAoc2l6ZSA9PSAtMSBvciBzaXplID4gMCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J3NpemUgbXVzdCBiZSAtMSBvciBwb3NpdGl2ZScpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAg
ICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIHNpemUgPT0gLTE6Ci0gICAgICAgICAg
ICAgICAgZGF0YSArPSBzZWxmLl9kZWNvbXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1l
ZCkKLSAgICAgICAgICAgICAgICAjIFNlZSBQeXRob24gYnVnIGh0dHA6Ly9idWdzLnB5dGhvbi5v
cmcvaXNzdWUxMjA1MCB0bwotICAgICAgICAgICAgICAgICMgdW5kZXJzdGFuZCB3aHkgdGhlIHNh
bWUgY29kZSBjYW5ub3QgYmUgdXNlZCBmb3IgdXBkYXRpbmcKLSAgICAgICAgICAgICAgICAjIHNl
bGYuX3VuY29uc3VtZWQgZm9yIGhlcmUgYW5kIGVsc2UgYmxvY2suCi0gICAgICAgICAgICAgICAg
c2VsZi5fdW5jb25zdW1lZCA9ICcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl91bmNvbnN1bWVkLCBzaXplIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgICAgIHNl
bGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbAotICAgICAg
ICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRfZGF0YToKLSAgICAgICAgICAgICAgICAj
IEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGggQkZJTkFMID0gMSkg
YW5kCi0gICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVudXNlZF9kYXRhKS4g
V2UgY2Fubm90IHVzZSB0aGUgc2FtZQotICAgICAgICAgICAgICAgICMgemxpYi5EZWNvbXByZXNz
IG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldwotICAgICAgICAgICAgICAg
ICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9uZS4KLSAgICAgICAg
ICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdub3JlIHVuY29uc3Vt
ZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKLSAgICAgICAgICAgICAgICAjIGVtcHR5Lgot
ICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVudXNl
ZF9kYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5yZXNldCgpCi0gICAgICAgICAgICAgICAgaWYg
c2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgIyBk
YXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgotICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
ICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8gZGVjb21wcmVzcyBh
bGwKLSAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVmb3JlIGludm9raW5n
IHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCi0gICAgICAgICAgICAgICAgICAgICMgYW55IG5ldyBi
eXRlIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVzZWRfZGF0YSBpcyBl
bXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMKLSAgICAgICAgICAgICAgICAjIG5vdCBl
bXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBpbiBkYXRhLiBXZQot
ICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhlcmUuCi0gICAgICAg
ICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRhKQotICAgICAgICByZXR1cm4gZGF0YQot
Ci0gICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdBcHBlbmRlZCAlcicsIGRhdGEpCi0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgKz0gZGF0YQot
Ci0gICAgZGVmIHJlc2V0KHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jlc2V0
JykKLSAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVzc29iaigtc2VsZi5f
d2luZG93X2JpdHMpCi0KLQotIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBnaXZlbiBvY3RldHMg
dXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCi0KLQotY2xhc3MgX1JGQzE5
NzlEZWZsYXRlcihvYmplY3QpOgotICAgICIiIkEgY29tcHJlc3NvciBjbGFzcyB0aGF0IGFwcGxp
ZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNlIGFuZAotICAgIGZsdXNoZXMgdXNpbmcg
dGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFr
ZW92ZXIpOgotICAgICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgaWYgd2luZG93
X2JpdHMgaXMgTm9uZToKLSAgICAgICAgICAgIHdpbmRvd19iaXRzID0gemxpYi5NQVhfV0JJVFMK
LSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5kb3dfYml0cwotICAgICAgICBzZWxmLl9u
b19jb250ZXh0X3Rha2VvdmVyID0gbm9fY29udGV4dF90YWtlb3ZlcgotCi0gICAgZGVmIGZpbHRl
cihzZWxmLCBieXRlcywgZW5kPVRydWUsIGJmaW5hbD1GYWxzZSk6Ci0gICAgICAgIGlmIHNlbGYu
X2RlZmxhdGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRl
cihzZWxmLl93aW5kb3dfYml0cykKLQotICAgICAgICBpZiBiZmluYWw6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmluaXNoKGJ5dGVzKQotICAgICAg
ICAgICAgIyBBZGQgYSBwYWRkaW5nIGJsb2NrIHdpdGggQkZJTkFMID0gMCBhbmQgQlRZUEUgPSAw
LgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgY2hyKDApCi0gICAgICAgICAgICBzZWxm
Ll9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpCi0gICAgICAg
IGlmIGVuZDoKLSAgICAgICAgICAgICMgU3RyaXAgbGFzdCA0IG9jdGV0cyB3aGljaCBpcyBMRU4g
YW5kIE5MRU4gZmllbGQgb2YgYQotICAgICAgICAgICAgIyBub24tY29tcHJlc3NlZCBibG9jayBh
ZGRlZCBmb3IgWl9TWU5DX0ZMVVNILgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotNF0K
LQotICAgICAgICBpZiBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZCBlbmQ6Ci0gICAgICAg
ICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLQot
Y2xhc3MgX1JGQzE5NzlJbmZsYXRlcihvYmplY3QpOgotICAgICIiIkEgZGVjb21wcmVzc29yIGNs
YXNzIGZvciBieXRlIHNlcXVlbmNlIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQgZm9sbG93aW5nCi0g
ICAgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0g
ICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHM9emxpYi5NQVhfV0JJ
VFMpOgotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih3aW5kb3dfYml0cykKLQot
ICAgIGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMpOgotICAgICAgICAjIFJlc3RvcmUgc3RyaXBwZWQg
TEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQKLSAgICAg
ICAgIyBmb3IgWl9TWU5DX0ZMVVNILgotICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQoYnl0
ZXMgKyAnXHgwMFx4MDBceGZmXHhmZicpCi0gICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5k
ZWNvbXByZXNzKC0xKQotCi0KLWNsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKLSAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJl
Y3YgdG8gcGVyZm9ybQotICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24g
dHJhbnNwYXJlbnRseS4KLSAgICAiIiIKLQotICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3Nl
ZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgotICAgIF9SRUNWX1NJWkUgPSA0
MDk2Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQotCi0gICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRT
KQotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKLQot
ICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgotICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20g
dGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAotICAgICAgICB0byB0
aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0
IGV2ZW4KLSAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgot
ICAgICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGgg
c2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55Ci0gICAgICAgICMgZGVjb21wcmVzc2Vk
IGRhdGEgaXMgYXZhaWxhYmxlLgotICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCi0gICAgICAgIHdoaWxl
IFRydWU6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXpl
KQotICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGEKLQotICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0
ZVNvY2tldC5fUkVDVl9TSVpFKQotICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChy
ZWFkX2RhdGEpCi0KLSAgICBkZWYgc2VuZGFsbChzZWxmLCBieXRlcyk6Ci0gICAgICAgIHNlbGYu
c2VuZChieXRlcykKLQotICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKSkK
LSAgICAgICAgcmV0dXJuIGxlbihieXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTc5ZGYzNTk5OGQxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9f
c3RyZWFtX2hpeGllNzUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJp
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9kaXNwYXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9leHRlbnNp
b25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC9tZW1vcml6aW5nZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L211eC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9zdGFuZGFsb25lLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC94aHJfYmVuY2htYXJrX2hhbmRsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY3MzVjN2UyYTNkYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC94aHJfYmVuY2htYXJrX2hhbmRsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQot
IyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMg
aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0K
LQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1jbGFzcyBYSFJCZW5jaG1h
cmtIYW5kbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlYWRlcnMsIHJmaWxl
LCB3ZmlsZSk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQotCi0gICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKLSAgICAgICAgc2VsZi5yZmls
ZSA9IHJmaWxlCi0gICAgICAgIHNlbGYud2ZpbGUgPSB3ZmlsZQotCi0gICAgZGVmIGRvX3NlbmQo
c2VsZik6Ci0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFk
ZXIoJ0NvbnRlbnQtTGVuZ3RoJykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1
ZXN0ZWQgdG8gcmVjZWl2ZSAlcyBieXRlcycsIGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIFJF
Q0VJVkVfQkxPQ0tfU0laRSA9IDEwMjQgKiAxMDI0Ci0KLSAgICAgICAgYnl0ZXNfdG9fcmVjZWl2
ZSA9IGNvbnRlbnRfbGVuZ3RoCi0gICAgICAgIHdoaWxlIGJ5dGVzX3RvX3JlY2VpdmUgPiAwOgot
ICAgICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPSBieXRlc190b19yZWNl
aXZlCi0gICAgICAgICAgICBpZiBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCA+IFJFQ0VJ
VkVfQkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190b19yZWNlaXZlX2luX3RoaXNf
bG9vcCA9IFJFQ0VJVkVfQkxPQ0tfU0laRQotICAgICAgICAgICAgcmVjZWl2ZWRfZGF0YSA9IHNl
bGYucmZpbGUucmVhZChieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAg
IGlmIHJlY2VpdmVkX2RhdGEgIT0gKCdhJyAqIGJ5dGVzX3RvX3JlY2VpdmVfaW5fdGhpc19sb29w
KToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3QgYm9keSB2ZXJp
ZmljYXRpb24gZmFpbGVkJykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGJ5
dGVzX3RvX3JlY2VpdmUgLT0gbGVuKHJlY2VpdmVkX2RhdGEpCi0gICAgICAgIGlmIGJ5dGVzX3Rv
X3JlY2VpdmUgPCAwOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCAl
ZCBtb3JlIGJ5dGVzIHRoYW4gZXhwZWN0ZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoLWJ5dGVzX3RvX3JlY2VpdmUpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAg
IyBSZXR1cm4gdGhlIG51bWJlciBvZiByZWNlaXZlZCBieXRlcyBiYWNrIHRvIHRoZSBjbGllbnQu
Ci0gICAgICAgIHJlc3BvbnNlX2JvZHkgPSAnJWQnICUgY29udGVudF9sZW5ndGgKLSAgICAgICAg
c2VsZi53ZmlsZS53cml0ZSgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAg
ICAgICAgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcbicKLSAgICAgICAgICAgICdDb250
ZW50LUxlbmd0aDogJWRcclxuJwotICAgICAgICAgICAgJ1xyXG4lcycgJSAobGVuKHJlc3BvbnNl
X2JvZHkpLCByZXNwb25zZV9ib2R5KSkKLSAgICAgICAgc2VsZi53ZmlsZS5mbHVzaCgpCi0KLSAg
ICBkZWYgZG9fcmVjZWl2ZShzZWxmKToKLSAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoc2Vs
Zi5oZWFkZXJzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSkKLSAgICAgICAgcmVxdWVzdF9i
b2R5ID0gc2VsZi5yZmlsZS5yZWFkKGNvbnRlbnRfbGVuZ3RoKQotCi0gICAgICAgIHJlcXVlc3Rf
YXJyYXkgPSByZXF1ZXN0X2JvZHkuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4ocmVxdWVzdF9h
cnJheSkgPCAyOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdNYWxmb3JtZWQgcmVx
dWVzdCBib2R5OiAlcicsIHJlcXVlc3RfYm9keSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICMgUGFyc2UgdGhlIHNpemUgcGFyYW1ldGVyLgotICAgICAgICBieXRlc190b19zZW5kID0g
cmVxdWVzdF9hcnJheVswXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlc190b19zZW5k
ID0gaW50KGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdNYWxmb3JtZWQgc2l6ZSBwYXJhbWV0ZXI6ICVy
JywgYnl0ZXNfdG9fc2VuZCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ1JlcXVlc3RlZCB0byBzZW5kICVzIGJ5dGVzJywgYnl0ZXNfdG9fc2VuZCkKLQot
ICAgICAgICAjIFBhcnNlIHRoZSB0cmFuc2ZlciBlbmNvZGluZyBwYXJhbWV0ZXIuCi0gICAgICAg
IGNodW5rZWRfbW9kZSA9IEZhbHNlCi0gICAgICAgIG1vZGVfcGFyYW1ldGVyID0gcmVxdWVzdF9h
cnJheVsxXQotICAgICAgICBpZiBtb2RlX3BhcmFtZXRlciA9PSAnY2h1bmtlZCc6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3RlZCBjaHVua2VkIHRyYW5zZmVyIGVuY29k
aW5nJykKLSAgICAgICAgICAgIGNodW5rZWRfbW9kZSA9IFRydWUKLSAgICAgICAgZWxpZiBtb2Rl
X3BhcmFtZXRlciAhPSAnbm9uZSc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0lu
dmFsaWQgbW9kZSBwYXJhbWV0ZXI6ICVyJywgbW9kZV9wYXJhbWV0ZXIpCi0gICAgICAgICAgICBy
ZXR1cm4KLQotICAgICAgICAjIFdyaXRlIGEgaGVhZGVyCi0gICAgICAgIHJlc3BvbnNlX2hlYWRl
ciA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAgICAgICAgJ0Nv
bnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXHJcbicpCi0gICAgICAgIGlmIGNo
dW5rZWRfbW9kZToKLSAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRlciArPSAnVHJhbnNmZXItRW5j
b2Rpbmc6IGNodW5rZWRcclxuXHJcbicKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3Bv
bnNlX2hlYWRlciArPSAoCi0gICAgICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiAlZFxyXG5c
clxuJyAlIGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIHNlbGYud2ZpbGUud3JpdGUocmVzcG9uc2Vf
aGVhZGVyKQotICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAgICAgICAjIFdyaXRlIGEg
Ym9keQotICAgICAgICBTRU5EX0JMT0NLX1NJWkUgPSAxMDI0ICogMTAyNAotCi0gICAgICAgIHdo
aWxlIGJ5dGVzX3RvX3NlbmQgPiAwOgotICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9pbl90aGlz
X2xvb3AgPSBieXRlc190b19zZW5kCi0gICAgICAgICAgICBpZiBieXRlc190b19zZW5kX2luX3Ro
aXNfbG9vcCA+IFNFTkRfQkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190b19zZW5k
X2luX3RoaXNfbG9vcCA9IFNFTkRfQkxPQ0tfU0laRQotCi0gICAgICAgICAgICBpZiBjaHVua2Vk
X21vZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgnJXhcclxuJyAlIGJ5dGVz
X3RvX3NlbmRfaW5fdGhpc19sb29wKQotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgnYScg
KiBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAgIGlmIGNodW5rZWRfbW9k
ZToKLSAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKCdcclxuJykKLSAgICAgICAgICAg
IHNlbGYud2ZpbGUuZmx1c2goKQotCi0gICAgICAgICAgICBieXRlc190b19zZW5kIC09IGJ5dGVz
X3RvX3NlbmRfaW5fdGhpc19sb29wCi0KLSAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgotICAgICAg
ICAgICAgc2VsZi53ZmlsZS53cml0ZSgnMFxyXG5cclxuJykKLSAgICAgICAgICAgIHNlbGYud2Zp
bGUuZmx1c2goKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9zZXR1
cC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRhOGRiM2UxMTFiLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvc2V0dXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlNl
dCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4KLSIiIgotCi0KLWZyb20gZGlzdHV0aWxz
LmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KLWltcG9ydCBzeXMKLQotCi1fUEFDS0FHRV9O
QU1FID0gJ21vZF9weXdlYnNvY2tldCcKLQotIyBCdWlsZCBhbmQgdXNlIGEgQysrIGV4dGVuc2lv
biBmb3IgZmFzdGVyIG1hc2tpbmcuIFNXSUcgaXMgcmVxdWlyZWQuCi1fVVNFX0ZBU1RfTUFTS0lO
RyA9IEZhbHNlCi0KLWlmIHN5cy52ZXJzaW9uIDwgJzIuMyc6Ci0gICAgcHJpbnQgPj4gc3lzLnN0
ZGVyciwgJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUK
LSAgICBzeXMuZXhpdCgxKQotCi1pZiBfVVNFX0ZBU1RfTUFTS0lORzoKLSAgICBzZXR1cChleHRf
bW9kdWxlcz1bCi0gICAgICAgICAgICAgICAgICBFeHRlbnNpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQvX2Zhc3RfbWFza2luZycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aWdfb3B0cz1bJy1jKysnXSldKQotCi1zZXR1cChhdXRob3I9
J1l1em8gRnVqaXNoaW1hJywKLSAgICAgIGF1dGhvcl9lbWFpbD0neXV6b0BjaHJvbWl1bS5vcmcn
LAotICAgICAgZGVzY3JpcHRpb249J1dlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQ
IFNlcnZlci4nLAotICAgICAgbG9uZ19kZXNjcmlwdGlvbj0oCi0gICAgICAgICAgICAgICdtb2Rf
cHl3ZWJzb2NrZXQgaXMgYW4gQXBhY2hlIEhUVFAgU2VydmVyIGV4dGVuc2lvbiBmb3IgJwotICAg
ICAgICAgICAgICAndGhlIFdlYlNvY2tldCBQcm90b2NvbCAoUkZDIDY0NTUpLiAnCi0gICAgICAg
ICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGZvciBtb3JlIGRldGFpbC4n
KSwKLSAgICAgIGxpY2Vuc2U9J1NlZSBDT1BZSU5HJywKLSAgICAgIG5hbWU9X1BBQ0tBR0VfTkFN
RSwKLSAgICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9OQU1FICsgJy5oYW5k
c2hha2UnXSwKLSAgICAgIHVybD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5d2Vic29ja2V0
LycsCi0gICAgICAjIFNlZSB0aGUgc291cmNlIG9mIGRpc3R1dGlscy52ZXJzaW9uLCBkaXN0dXRp
bHMudmVyc2lvbnByZWRpY2F0ZSBhbmQKLSAgICAgICMgZGlzdHV0aWxzLmRpc3QgdG8gdW5kZXJz
dGFuZCBob3cgdG8gbmFtZSB2ZXJzaW9uIG51bWJlcnMuCi0gICAgICB2ZXJzaW9uPScwLjcuOScs
Ci0gICAgICApCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTY4MzRiODI4NWE1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBt
b2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NhY2VydC5wZW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYWRhZTEyMWJkZC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jYWNlcnQucGVtCisrKyAvZGV2L251bGwKQEAgLTEsMTcg
KzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDdkRDQ0FpV2dBd0lCQWdJ
SkFLcVZnaGtHRjFyU01BMEdDU3FHU0liM0RRRUJCUVVBTUVreEN6QUpCZ05WCi1CQVlUQWtwUU1R
NHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXhGREFTCi1C
Z05WQkFNVEMzQjVkMlZpYzI5amEyVjBNQjRYRFRFeU1EWXdOakEzTWpRek0xb1hEVE01TVRBeU16
QTNNalF6Ci1NMW93U1RFTE1Ba0dBMVVFQmhNQ1NsQXhEakFNQmdOVkJBZ1RCVlJ2YTNsdk1SUXdF
Z1lEVlFRS0V3dHdlWGRsCi1Zbk52WTJ0bGRERVVNQklHQTFVRUF4TUxjSGwzWldKemIyTnJaWFF3
Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFECi1nWTBBTUlHSkFvR0JBS29TRVcyYmlReFZyTU1LZG4v
OFBKekRZaVNYRFBSOVdRYkxSUlExR201amtDWWlhaFhXCi11MkNiVFRoZlBQZmkyTkhBM0krSGxU
N2dPOXlSN1JWVXZONklTVXpHd1hERXE0ZjRVTnF0UU9oUWFxcUsrQ1o5Ci1MTy9CaE8vWVlmTnJi
U1BsWXpIVUthVDllc2U3eE85VnpWS0xXK3FVZjJNamg0LytTenhCRE5QN0FnTUJBQUdqCi1nYXN3
Z2Fnd0hRWURWUjBPQkJZRUZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpNSGtHQTFVZEl3UnlN
SENBCi1GT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMrK2J6b1Uya1N6QkpNUXN3Q1FZRFZRUUdFd0pL
VURFT01Bd0dBMVVFCi1DQk1GVkc5cmVXOHhGREFTQmdOVkJBb1RDM0I1ZDJWaWMyOWphMlYwTVJR
d0VnWURWUVFERXd0d2VYZGxZbk52Ci1ZMnRsZElJSkFLcVZnaGtHRjFyU01Bd0dBMVVkRXdRRk1B
TUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnWUVBCi1nc01JMVdFWXFOdy9qaFVJZHJUQmNDeEow
WDZoSnZBOXppS0FOVm0xUnMrNFAzWURBcmtROGJDcjZ4WStLdzdzCi1acDB5RTdkTThHTWRpK0RV
NmhMM3QzRTVlTWtUUzF5WnI5V0NLNGYyUkxvK2V0OThzZWxaeWRwSGVtRjNESkozCi1nQWo4U3g0
TEJhRzhDYi9XbkVNUHYzTXhHM2ZCRTVmYXZGNlY0alUwN2hRPQotLS0tLS1FTkQgQ0VSVElGSUNB
VEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NlcnQucGVtIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9jZXJ0L2NlcnQucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTM3
OWE3MmIwZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2VydC5wZW0K
KysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1DZXJ0aWZpY2F0ZToKLSAgICBEYXRhOgot
ICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDEgKDB4MSkK
LSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAg
ICAgIElzc3VlcjogQz1KUCwgU1Q9VG9reW8sIE89cHl3ZWJzb2NrZXQsIENOPXB5d2Vic29ja2V0
Ci0gICAgICAgIFZhbGlkaXR5Ci0gICAgICAgICAgICBOb3QgQmVmb3JlOiBKdW4gIDYgMDc6MjU6
MDggMjAxMiBHTVQKLSAgICAgICAgICAgIE5vdCBBZnRlciA6IE9jdCAyMyAwNzoyNTowOCAyMDM5
IEdNVAotICAgICAgICBTdWJqZWN0OiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049
cHl3ZWJzb2NrZXQKLSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86Ci0gICAgICAgICAg
ICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgotICAgICAgICAgICAgUlNBIFB1
YmxpYyBLZXk6ICgxMDI0IGJpdCkKLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6
Ci0gICAgICAgICAgICAgICAgICAgIDAwOmRlOjEwOmNlOjNhOjVhOjA0OmE0OjFjOjI5OjkzOjVj
OjIzOjgyOjFhOgotICAgICAgICAgICAgICAgICAgICBmMjowNjowMTplNjoyYjphNDowZjpkZDo3
Nzo0OTo3Njo4OTowMzphMjoyMToKLSAgICAgICAgICAgICAgICAgICAgZGU6MDQ6NzU6YzY6ZTI6
ZGQ6ZmI6MzU6Mjc6M2E6YTI6OTI6OGU6MTI6NjI6Ci0gICAgICAgICAgICAgICAgICAgIDJiOjNl
OjFmOmY0Ojc4OmRmOmI2Ojk0OmNiOjI3OmQ2OmNiOmQ2OjM3OmQ3OgotICAgICAgICAgICAgICAg
ICAgICA1YzowODpmMDowOTozZTpjOTpjZToyNDoyZDowMDpjOTpkZjo0YTplMDo5OToKLSAgICAg
ICAgICAgICAgICAgICAgZTU6ZmI6MjM6YTk6ZTI6ZDY6Yzk6M2Q6OTY6ZmE6MDE6ODg6ZGU6NWE6
ODk6Ci0gICAgICAgICAgICAgICAgICAgIGIwOmNmOjAzOjY3OjZmOjA0Ojg2OjFkOmVmOjYyOjFj
OjU1OmE5OjA3OjlhOgotICAgICAgICAgICAgICAgICAgICAyZTo2NjoyYTo3Mzo1Yjo0Yzo2Mjow
MzpmOTo4Mjo4MzpkYjo2ODpiZjpiODoKLSAgICAgICAgICAgICAgICAgICAgNGI6MGI6OGI6OTM6
MTE6Yjg6NTQ6NzM6N2IKLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEp
Ci0gICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENv
bnN0cmFpbnRzOiAKLSAgICAgICAgICAgICAgICBDQTpGQUxTRQotICAgICAgICAgICAgTmV0c2Nh
cGUgQ2VydCBUeXBlOiAKLSAgICAgICAgICAgICAgICBTU0wgU2VydmVyCi0gICAgICAgICAgICBO
ZXRzY2FwZSBDb21tZW50OiAKLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0
aWZpY2F0ZQotICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAotICAg
ICAgICAgICAgICAgIDgyOkExOjczOjhCOjE2OjBDOjdDOkU0OkQzOjQ2Ojk1OjEzOjk1OjFBOjMy
OkMxOjg0OkU5OjA2OjAwCi0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlm
aWVyOiAKLSAgICAgICAgICAgICAgICBrZXlpZDpFQjoxNjo3NzoxMDo5MjpCQjoyODo3MDo2OTo5
Nzo5QTo2RjpBMDo2ODo0RToxQTozNzpGQjpFNjpGMwotCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRo
bTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIDZiOmIzOjQ2OjI5OjAyOmRmOmIwOmM4
OjhlOmM0OmQ3OjdmOmEwOjFlOjBkOjFhOmViOjJmOgotICAgICAgICBkZjpkMTo0ODo1NzozNjo1
Zjo5NTo4YzoxYjpmMDo1MTpkNjo1MjplNzo4ZDo4NDozYjo5ZjoKLSAgICAgICAgZDg6ZWQ6MjI6
OWM6YWE6YmQ6ZWU6OWI6OTA6MWQ6ODQ6YTM6NGM6MGI6Y2I6ZWI6NjQ6NzM6Ci0gICAgICAgIGJh
OmY3OjE1OmNlOmRhOjVmOmRiOjhiOjE1OjA3OmE2OjI4OjdmOmI5OjhjOjExOjliOjY0OgotICAg
ICAgICBkMzpmMTpiZTo1Mjo0ZjpjMzpkODo1ODpmZTpkZTo1Njo2Mzo2MzozYjo1MTplZDphNzo4
MToKLSAgICAgICAgZjk6MDU6NTE6NzA6NjM6MzI6MDk6MGU6OTQ6N2U6MDU6ZmU6YTE6NTY6MTg6
MzQ6OTg6ZDU6Ci0gICAgICAgIDk5OjFlOjRlOjI3OjM4Ojg5OjkwOjZhOmU1OmNlOjYwOjM1OjAx
OmY1OmRlOjM0OjYwOmIxOgotICAgICAgICBjYjphZQotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCi1NSUlDbURDQ0FnR2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCSk1Rc3dDUVlE
VlFRR0V3SktVREVPCi1NQXdHQTFVRUNCTUZWRzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5
amEyVjBNUlF3RWdZRFZRUURFd3R3Ci1lWGRsWW5OdlkydGxkREFlRncweE1qQTJNRFl3TnpJMU1E
aGFGdzB6T1RFd01qTXdOekkxTURoYU1Fa3hDekFKCi1CZ05WQkFZVEFrcFFNUTR3REFZRFZRUUlF
d1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldKemIyTnJaWFF4Ci1GREFTQmdOVkJBTVRDM0I1
ZDJWaWMyOWphMlYwTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCCi1nUURlRU00
NldnU2tIQ21UWENPQ0d2SUdBZVlycEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxSnpxaWtvNFNZaXMr
Ci1IL1I0MzdhVXl5Zld5OVkzMTF3SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CaU41
YWliRFBBMmR2Ci1CSVlkNzJJY1Zha0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3
SURBUUFCbzRHUE1JR01NQWtHCi1BMVVkRXdRQ01BQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnWkFN
Q3dHQ1dDR1NBR0crRUlCRFFRZkZoMVBjR1Z1Ci1VMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pw
WTJGMFpUQWRCZ05WSFE0RUZnUVVncUZ6aXhZTWZPVFRScFVUCi1sUm95d1lUcEJnQXdId1lEVlIw
akJCZ3dGb0FVNnhaM0VKSzdLSEJwbDVwdm9HaE9HamY3NXZNd0RRWUpLb1pJCi1odmNOQVFFRkJR
QURnWUVBYTdOR0tRTGZzTWlPeE5kL29CNE5HdXN2MzlGSVZ6WmZsWXdiOEZIV1V1ZU5oRHVmCi0y
TzBpbktxOTdwdVFIWVNqVEF2TDYyUnp1dmNWenRwZjI0c1ZCNllvZjdtTUVadGswL0crVWsvRDJG
aiszbFpqCi1ZenRSN2FlQitRVlJjR015Q1E2VWZnWCtvVllZTkpqVm1SNU9KemlKa0dybHptQTFB
ZlhlTkdDeHk2ND0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2xpZW50
X2NlcnQucDEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGUxMzk5Mjc5ODJmYTk4
MjNhNTcyMzFhZjExMzQ5OWQ2YTVhOGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDI1ODIKemNtWStGWEgqamk3S01gIzB0QmcycXpGaXRQIWY8UEhBLSpOTG9AVl9nY2YwdDhXQigj
ST97JVlSRngqdWAlKXlKCnoxbkchSzM1YnFoWHJYN0FiOVElamY4NnVseCVadi0+JUheQWFacHdl
a1A0MllufWc2diNPdVlBOEd0bXZWalNJagp6RnBoNVUoKFolZkFTd1N1a1lYR3A9RipBKTBSZmk8
YCVlT2ReRnBCaS1mI3M3ZmlyPz4yY1ckVCM7MipHQVBfQWUKejFfI2xybjJFKGVLT01KNk4yNllK
bmVfQGhwfVNLUFhVQjdGTWVyX341fDFxZ0N7VHFubkJ1djEka3BwNU9CeiVACno8bXlTdys/WT5e
akFaNCNYQS19KiFRc2J1T2hXKHNPODM2NigkOygxQT5tbyhPLSV4KGhuKD15Wjt5fk5HI1FYMQp6
Z0hrU2leXjhjdjRUVFNMOXZuNXFSKD5fRDNmJm9jKmp3UGdJI0tAUSNBc0wpRDtCRCZXYjJkK0kx
Xko3bj59WVoKemJDWG85Zk9AZyFAZFdZYTJWJX07KSF7PHpEY3wocHZKSWF4VzdOZE8lTzZmPnIm
YU9ycEhre29fUjltUTQ3dW9iCno/bD45fG58WDNgYWdwXkc7THdYUjU8KGxyK1I8Y0w1alRRKD9e
RDxrUm8hSF9UI3A/eTNkfV50Q1lWIThSXk4/fQp6QyolWG05TGVmPmo3aGxyLT9qSGxwfHdmQSZe
bi1zOzwheiRxRDF4UHEhOEtRMX1+ZHVwd35CTTFnc35AQW87Q3EKendSZ1V8Ml5kfU4tZ1Y7QGFZ
a3U4SSV9fDxsNlFNPz1kfkZZcGJHRkg5JnZOZ0taKlN5Y0lTfG1jdU9SP2wmQ093Cnpze3pkNXpt
ZWx4cU4xRFF5e31QZ0I9dSNmeklOUGtCMG9OKmNrM3ZgKzF7IVlYUH57RVZJN1ZxaCp+dWFXX35V
Qwp6bFIzM1JaMDVIaGtDLTFlSXApLUBZXnl2Yy18UiUhKjlkdzduZlcpeWpjSElZZjZyPWFDdChV
aGktRkptMm57XykKeiV7dWxCVVhSYDI8Pmx4fWVHbVNtUko+NW90a0AoK3Bqc1BxOzRoWjZGSUts
I3tueFAhQUwhMjhfX0FZZmxgVmd7CnpsUlJhQVJ8Vm15MV9gXmJialpyekF7USRsWWVqSVlkXkEk
Wj5XJmp5bk09S2BUbDR3Vikzd0BkMUpjYC01LUNHSgp6eHFeQDhfKCE8WkYycWxoX1p9fW5yP1Mm
NSp6K0ZAKXYoWjFFSXM7SG19ITF+TVRMIWoxQGMkWkhMUn1WKD07Xm8KemRVcGZ5P28+eXpvbF9z
aTw8VUVCPXQoZWVCemdKXldZd3NIQ0c5MzRzJGQpQHFxSHdnXnlaTXtgXmpKITk7dHI2Cnplb1Vh
eSYkK0J5R3xOXl96b0FIXnRZSWc+aGFZd3xAfGMzMV53KG5VZDdrKFltRUo3NlZZNzkrKEMoXyQ7
MU1zVQp6aGlOaStCNWdTckRqfDk+PEA/NlImOHpibThicj9DLU5uMWNrKCs8TkslNyk2di13V3E0
PU1fVGJ0MTk0elUqeUYKemg8b3Q8SEJXbm94QiUxazkoTTBvPE5nKVJnSFMoIz9lZEVRQiFefEZr
LV8oYWBiVUJMQUsqaH5hen4hX3h1PVQ0Cno2RzVLLWFYSm90SFFsRUM4Q1U1fFJ5TVJ1UWtYRSk/
XnY2KGk9TXUpPSRebyUwIXlzNUdWUmFYWjJTMkg0STgzTAp6cSliYHxQeHsoODlXMzJ6cTRzcXpI
K0JBS1A5dWFERXBEOElJQTlELUg0NUMlVlQ/SkojTWErQkBpOU1QZEYtIyMKek54RjVUdX1pel9o
eiRTS1owX18mIVlwMXlhZFZ6b2NARXkrQmVmSkN0Q1NWZDUoSnkoPEM2SWNDV31EbUh3QzhUCnpS
e2txdlJAPzNyekxHMiRaZGN4LTV2RlJAZCRRI0REK357ZGhAbWRfZWBCQjYqVVk2Uis0XiNVJXo0
bHR4OUIlOwp6TlY4eip7R2NHTTtncTJSdHlkantIMFMwcCN6PDYlN20zISV7P01RdWE8YEBlNWJP
dGJkIUVjP0dedXhmNGd4Y0kKei1GN1NUWWl+dkRibXZDWjNORGNmSGo4PkM5RlY2amQxfShwU3dy
Z0drKlFaOVJyNCk2IXNTa1RVcWJ4YmFlYTJ1Cnp3U2AkeW9zUSllYiVvX3ZKTyohQWBkUjtZNGs+
JnFZenVhLVpORTwzRkU9SStlU1U7eCFwdF5BMzU+b0lvUGBKcQp6Wmx+KXJDNjBMK2tTeEFnb1BF
fHJHalZAPzJBeSpYYj0kY2BjX0wzPUV6aGpCVUQ9aDFfNCVlQkNmbGomRUhabU8KenN7MWJ8TnV4
Nis7SyNLQj1Ua198aWt8eyowMWRrJDlLYTZgY1JVPU1jWWlOIWstYSkyUEQzMWg8Y1RzJWtQaG9a
CnpPKTJ3X1Q5LTh3Mk5NJiZxMnBsNF5LcX1DUGU9bDlocSRXNCF0O0pEJXxVSigyOHZEYk0qTD5W
RjdiV19Ye2IxNAp6R053KHc+RV9TOWA8O3hRbFBgQHNkPjZtM24yKUwpMHAhWFJyRCMyNWlJa1JE
cykxdWpOJVNzeXcjNjJ2ZHYmQWwKemNkai1ZbCM2K0BhMFdzY1U8M2BndlckMnctKF5IZkVSeXhz
TnNxNm1LMGQ4Oz8wTFNlTmglTkVlMEJZSjRJTChhCnokV1huZClQQlc8QVRre3klMlM5R1BhMnF5
SlckXkpKX2NvX1hQMW05RX1qKVE/XmwkIypNRHhQNXxtWTF6Y3EzeQp6Yj1AenlDWHVnd2R7Tmp4
P2kyN2orelhPNCpWPn1aZS16QlF4KUh5bndMYE5qKCE5dCk1NGRPO3pUVn4tTyM7VTsKek13cDBQ
VS11VUw/IyM4TC0pJnZtYm5BbW4jQCZhPnY9Y1B9RVVRSlZ3YUR3OVY8LUl3WXRpVDl3KFRNZWEy
JUR5Cnp8QTQwJE41dW9pUUVeX3tTMS1pYHE1bHR0cGc+U0Q0cGFmaGZsQnw2UEU+IT5zaFdrb0Vt
WmhnK34wSHA8M0tUQAp6OWprJHFNQz0wJkJia15mUm80ZjM4Sn5pV0N8eEdQMGB3WjNGI2s4ZypJ
ZE5ZJEdGLUF4OF48RHJCXmoyOFhiNnMKelJ8O1Z2YXIlPHxUWkt+PjMwa0QzKVckQUQjKHR0YCNA
eDdROE9ZYXBUX0p5TTF2VD9sYngtK19GKEpGJXlTME8kCnpwUyNsfXcqMGo+Yn1NM2U7NEk+e3BN
TT5zJWA/ZlNBRV9RYmBBbj5fViFraX0kOXdNTjkoZlUxdUpHbTBNaTdoSwp6QTVsMGUxd1ZjXiRx
bD81Z20+OEV2QnBTYVdmNVRJZzNaU2J1SmhwO2ElKFora2N7Y2R2MVB1WCRlMkdBTj9KZjgKeldL
TmdTPChNMkZOVWBSeGRCR31mPVMxcm5RKmVSMTJxRl9DJiZwbkBgeSVDfkw5XlFfWjlsaCZHPVh2
R0MhNDEwCnp5bik1bz0peDJpSlkrXj9eRUxqbnRISGB9Syl6YT9JPXx2ISRoTDBuJkd6eXB6YUx3
TmRlTT1Pald8LS09bVJfagp6eXQ/flZ4X185QkV2Y2hMPzlodVVvYi01bityMT88eEBjZ301YXxW
fEZjRlFPKmVJcHdaRW5+VkdMZXF2U0BXazIKeikhK0QzLTt7NEBPTyliK2JRTyM9LUUrQmVPQGYh
MzxpVDBtYjJwYjM4OHtHSVJhcmpkblRpJUA/NHF3eSNxNjBZCnpxaUF8e3Q2bzQ5RU0xOEomdzhE
QSN3UUREc0Z3TiRIRypNVEwyMUJRailZUmBXNUw7WmZNTTwqckw9RklnfDBiSgp6VDlyN0ZsQkxM
XnJWJTFVTyEzfEdERWFNIWpIUExyPzVRQnVDQyFXKT5kcmZeUkNgYDdZUllaKEs+aWUwPnBKZF4K
ekpXX0h7JSleYyE2Pmx8OVA4P2M9aihCNTdZSno4P1h5UXpFOXVHYX1kVjBQVHAzITtwIVNGKX10
LWk+QzxFZEgrCnpNS0FTblYjISZTV2ZkfTBkbGpYc3lRZnpzQDZpMCtkcVNISkx+Rjd+b3R8JEh3
ZitGKjBqQ0sqdzVXb0ZAUTloTgp6aGxrJVN7aDZDNTdDSTJfNVI5O2YzO3AtMT5EVW4qVV5lb0dq
aHFvOypSKiRrVkUwMUo+VEpRUnN2OW96JmshM3oKemtXVDsqMFFlME0zVUNMdzBEPUorZkdmY0Z2
SlV8YFVkc0tfMzR0VHZIe2YmLVk4V0ZHaD9eUCFYNTt5PUZadURzCmZmcldrMCVNKE9HblRNTjxo
JnFAeUxkRFVfJk1jQWY/fDFrTWVqVU5vCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0
L2tleS5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQva2V5LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmFlODU4MzE4ZjI5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC9jZXJ0L2tleS5wZW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0tLS0tLUJFR0lO
IFJTQSBQUklWQVRFIEtFWS0tLS0tCi1NSUlDWGdJQkFBS0JnUURlRU00NldnU2tIQ21UWENPQ0d2
SUdBZVlycEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxCi1KenFpa280U1lpcytIL1I0MzdhVXl5Zld5
OVkzMTF3SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CCi1pTjVhaWJEUEEyZHZCSVlk
NzJJY1Zha0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3SURBUUFCCi1Bb0dCQUl1
Q3VWMVZjbmI3cm04Q3d0Z1pQNVhnbVk4dlNqeFRsZGFmYTZYdmF3RVlVVFAwUzc3di8xbGxnMVl2
Ci1VSVYrSStQUWdHOW9Wb1lPbDIyTG9pbUhTL1ozZTFmc290NXREWXN6R2U4L0drc3Q0b2FSZVNv
eHZCVWE2V1hwCi1RU283WUZDYWp1SHRFK1cvZ3pGK1VIYmR6elhJRGpRWjMxNExORjV0KzRVbnNF
UEJBa0VBK2dpckltcVdvTTJ0Ci0zVVI4ZjhvZWtFUndzbUVNZjlESDVZcEg0Y3ZVbnZJK2t3ZXND
L3IyVThTaG8rK2Z5RU1VTm03YUlYR3FOTGdhCi1vZ0FNKzROWDRRSkJBT05kU3hTYXkyMmVnVEdO
b0loTG5kbGpXa3VPdC85RldqMmtsZi80UXhENGJsTUpRNU9xCi1RZE9HQWg3blZRanBQTFE1RDdD
QlZBS3BHTTJDRCtRSkJ0c0NRRVAya3ozNXB4UHlsRzN1cmNDMm1mUXhCa2tXCi1aQ1ZpQk5QNThH
d0owYk9hdVRPU0JFd0ZYV3VMcVR3OGFEd3hMNDlVTm1xYzBOMGZwZTJmQWVoajNVRUNRUUNtCi1G
SC9EalU4THc3eWJkZGpOdG02WFhQdVlOYWd4ejNjYmtCNEIzRmNoRGxlSVVEd01vVkYwTVc5Ykk1
LzU0bVYxCi1RRGsxdFVLb3J0eHZRWkphQUQ0QkFrRUFoR09IUXFQZDZiQkJvRkJ2cGFMelBKTXh3
TEtyQitXdGtxL1FsQzcyCi1DbFJpTW4yZzhTQUxpSUwzQkRnR1hLY0tFL1d5N2pvL2FmL0pDelEv
Y1BxdC9BPT0KLS0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZDcwM2Q4MjFlYS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jYWNl
cnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0
L2NsaWVudF9jZXJ0LnAxMgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9rZXkucGVtCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2xp
ZW50X2Zvcl90ZXN0aW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2Y4MDVl
ZTk0ZTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NsaWVudF9mb3JfdGVzdGlu
Zy5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkg
Zm9yIHRlc3RpbmcuCi0KLVRoaXMgbW9kdWxlIGNvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBw
ZXJmb3JtaW5nIGhhbmRzaGFrZSwgZnJhbWUKLXNlbmRpbmcvcmVjZWl2aW5nIGFzIGEgV2ViU29j
a2V0IGNsaWVudC4KLQotVGhpcyBpcyBjb2RlIGZvciB0ZXN0aW5nIG1vZF9weXdlYnNvY2tldC4g
S2VlcCB0aGlzIGNvZGUgaW5kZXBlbmRlbnQgZnJvbQotbW9kX3B5d2Vic29ja2V0LiBEb24ndCBp
bXBvcnQgZS5nLiBTdHJlYW0gY2xhc3MgZm9yIGdlbmVyYXRpbmcgZnJhbWUgZm9yCi10ZXN0aW5n
LiBVc2luZyB1dGlsLmhleGlmeSwgZXRjLiB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBwcm90b2Nv
bCBwcm9jZXNzaW5nCi1pcyBhbGxvd2VkLgotCi1Ob3RlOgotVGhpcyBjb2RlIGlzIGZhciBmcm9t
IHJvYnVzdCwgZS5nLiwgd2UgY3V0IGNvcm5lcnMgaW4gaGFuZHNoYWtlLgotIiIiCi0KLQotaW1w
b3J0IGJhc2U2NAotaW1wb3J0IGVycm5vCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBv
cnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9y
dCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotREVGQVVMVF9QT1JUID0gODAKLURFRkFVTFRfU0VD
VVJFX1BPUlQgPSA0NDMKLQotIyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZv
ciB0aGUgbmV3IGZyYW1pbmcgZm9ybWF0Ci1PUENPREVfQ09OVElOVUFUSU9OID0gMHgwCi1PUENP
REVfQ0xPU0UgPSAweDgKLU9QQ09ERV9QSU5HID0gMHg5Ci1PUENPREVfUE9ORyA9IDB4YQotT1BD
T0RFX1RFWFQgPSAweDEKLU9QQ09ERV9CSU5BUlkgPSAweDIKLQotIyBTdHJpbmdzIHVzZWQgZm9y
IGhhbmRzaGFrZQotX1VQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1f
VVBHUkFERV9IRUFERVJfSElYSUU3NSA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotCi1XRUJTT0NLRVRfQUND
RVBUX1VVSUQgPSAnMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJwotCi0jIFN0
YXR1cyBjb2RlcwotU1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAotU1RBVFVTX0dPSU5HX0FX
QVkgPSAxMDAxCi1TVEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCi1TVEFUVVNfVU5TVVBQT1JU
RURfREFUQSA9IDEwMDMKLVNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1Ci1TVEFUVVNf
QUJOT1JNQUxfQ0xPU1VSRSA9IDEwMDYKLVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFU
QSA9IDEwMDcKLVNUQVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAotU1RBVFVTX01FU1NBR0Vf
VE9PX0JJRyA9IDEwMDkKLVNUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAotU1RBVFVTX0lOVEVS
TkFMX0VORFBPSU5UX0VSUk9SID0gMTAxMQotU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1Ci0K
LSMgRXh0ZW5zaW9uIHRva2VucwotX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUt
ZnJhbWUnCi0jIFRPRE8oYmFzaGkpOiBVcGRhdGUgYWZ0ZXIgbXV4IGltcGxlbWVudGF0aW9uIGZp
bmlzaGVkLgotX01VWF9FWFRFTlNJT04gPSAnbXV4X0RPX05PVF9VU0UnCi1fUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxhdGUnCi0KLWRlZiBfbWV0aG9kX2xp
bmUocmVzb3VyY2UpOgotICAgIHJldHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJj
ZQotCi0KLWRlZiBfc2VjX29yaWdpbl9oZWFkZXIob3JpZ2luKToKLSAgICByZXR1cm4gJ1NlYy1X
ZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgb3JpZ2luLmxvd2VyKCkKLQotCi1kZWYgX29yaWdp
bl9oZWFkZXIob3JpZ2luKToKLSAgICAjIDQuMSAxMy4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3Ry
aW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyLAotICAgICMgYW5kIHRoZSAv
b3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8u
Ci0gICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBf
Zm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQsIHNlY3VyZSk6Ci0gICAgIyA0LjEgOS4gTGV0
IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5nLgotICAgICMgNC4xIDEwLiBBcHBlbmQgdGhl
IC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8KLSAgICAjIC9o
b3N0cG9ydC8KLSAgICBob3N0cG9ydCA9IGhvc3QubG93ZXIoKQotICAgICMgNC4xIDExLiBJZiAv
c2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBpcyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCi0g
ICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5vdCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNB
IENPTE9OIGNoYXJhY3RlcgotICAgICMgKDopIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9y
dC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGludGVnZXIsCi0gICAgIyB0byAvaG9zdHBvcnQv
Ci0gICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0ICE9IERFRkFVTFRfUE9SVCkgb3IKLSAgICAg
ICAgKHNlY3VyZSBhbmQgcG9ydCAhPSBERUZBVUxUX1NFQ1VSRV9QT1JUKSk6Ci0gICAgICAgIGhv
c3Rwb3J0ICs9ICc6JyArIHN0cihwb3J0KQotICAgICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9m
IHRoZSBzdHJpbmcgIkhvc3Q6IiwgYSBVKzAwMjAgU1BBQ0UKLSAgICAjIGNoYXJhY3RlciwgYW5k
IC9ob3N0cG9ydC8sIHRvIC9maWVsZHMvLgotICAgIHJldHVybiAnSG9zdDogJXNcclxuJyAlIGhv
c3Rwb3J0Ci0KLQotIyBUT0RPKHR5b3NoaW5vKTogRGVmaW5lIGEgYmFzZSBjbGFzcyBhbmQgbW92
ZSB0aGVzZSBzaGFyZWQgbWV0aG9kcyB0byB0aGF0LgotCi0KLWRlZiByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgbGVuZ3RoKToKLSAgICByZWNlaXZlZF9ieXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0g
bGVuZ3RoCi0gICAgd2hpbGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgbmV3X3JlY2VpdmVkX2J5
dGVzID0gc29ja2V0LnJlY3YocmVtYWluaW5nKQotICAgICAgICBpZiBub3QgbmV3X3JlY2VpdmVk
X2J5dGVzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdD
b25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAg
ICAgICAgICAgICAgICcocmVxdWVzdGVkICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5
dGVzKScgJQotICAgICAgICAgICAgICAgIChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0g
ICAgICAgIHJlY2VpdmVkX2J5dGVzLmFwcGVuZChuZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgICAg
IHJlbWFpbmluZyAtPSBsZW4obmV3X3JlY2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2lu
KHJlY2VpdmVkX2J5dGVzKQotCi0KLSMgVE9ETyh0eW9zaGlubyk6IE5vdyB0aGUgV2ViU29ja2V0
SGFuZHNoYWtlIGNsYXNzIGRpdmVydHMgdGhlc2UgbWV0aG9kcy4gV2UKLSMgc2hvdWxkIG1vdmUg
dG8gSFRUUCBwYXJzZXIgYXMgc3BlY2lmaWVkIGluIFJGQyA2NDU1LiBGb3IgSHlCaSAwMCBhbmQK
LSMgSGl4aWUgNzUsIHBhY2sgdGhlc2UgbWV0aG9kcyBhcyBzb21lIHBhcnNlciBjbGFzcy4KLQot
Ci1kZWYgX3JlYWRfZmllbGRzKHNvY2tldCk6Ci0gICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBi
ZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgIGZpZWxk
cyA9IHt9Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5k
IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKLSAgICAgICAgbmFtZSA9ICcnCi0gICAgICAg
IHZhbHVlID0gJycKLSAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25hbWUvCi0gICAgICAgIG5hbWUg
PSBfcmVhZF9uYW1lKHNvY2tldCkKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2VzCi0gICAgICAgICMgVE9ETyh0
eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgot
ICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhzb2NrZXQpCi0gICAgICAgICMgNC4xIDM2LiByZWFk
IC92YWx1ZS8KLSAgICAgICAgdmFsdWUgPSBfcmVhZF92YWx1ZShzb2NrZXQsIGNoKQotICAgICAg
ICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAgIGNoID0gcmVj
ZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYg
YnV0IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCi0gICAgICAg
ICAgICAgICAgJyVyJyAlIChjaCwgbmFtZSwgdmFsdWUpKQotICAgICAgICAjIDQuMSAzOC4gYXBw
ZW5kIGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAg
ICAgICMgZ2l2ZW4gYnkgdGhlIHN0cmluZyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9u
YW1lLyBieXRlCi0gICAgICAgICMgYXJyYXkgYXMgYSBVVEYtOCBzdHJlYW0gYW5kIHRoZSB2YWx1
ZSBnaXZlbiBieSB0aGUgc3RyaW5nCi0gICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5n
IHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAgICMgc3RyZWFt
LgotICAgICAgICBmaWVsZHMuc2V0ZGVmYXVsdChuYW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAg
ICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICByZXR1
cm4gZmllbGRzCi0KLQotZGVmIF9yZWFkX25hbWUoc29ja2V0KToKLSAgICAjIDQuMSAzMy4gbGV0
IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cwotICAgIG5hbWUgPSAnJwotICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAg
ICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggPT0gJ1xyJzog
ICMgMHgwRAotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4n
OiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAg
ICAgIGVsaWYgY2ggPT0gJzonOiAgIyAweDNBCi0gICAgICAgICAgICByZXR1cm4gbmFtZQotICAg
ICAgICBlbGlmIGNoID49ICdBJyBhbmQgY2ggPD0gJ1onOiAgIyByYW5nZSAweDMxIHRvIDB4NUEK
LSAgICAgICAgICAgIGNoID0gY2hyKG9yZChjaCkgKyAweDIwKQotICAgICAgICAgICAgbmFtZSAr
PSBjaAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSArPSBjaAotCi0KLWRlZiBfc2tp
cF9zcGFjZXMoc29ja2V0KToKLSAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2Vy
dmVyCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwg
MSkKLSAgICAgICAgaWYgY2ggPT0gJyAnOiAgIyAweDIwCi0gICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICByZXR1cm4gY2gKLQotCi1kZWYgX3JlYWRfdmFsdWUoc29ja2V0LCBjaCk6Ci0gICAg
IyA0LjEgMzMuIGxldCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgdmFsdWUgPSAn
JwotICAgICMgNC4xIDM2LiByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KLSAgICB3aGlsZSBUcnVl
OgotICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICByZXR1cm4gdmFs
dWUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhl
YWRlciB2YWx1ZSAlcicgJSB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVl
ICs9IGNoCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0KLQotZGVmIHJl
YWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6Ci0gICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMikKLQotICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0g
KGZpcnN0X2J5dGUgPj4gNykgJiAxCi0gICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQot
ICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA+PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUg
Pj4gNCkgJiAxCi0gICAgb3Bjb2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5
dGUgPSBvcmQocmVjZWl2ZWRbMV0pCi0gICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEK
LSAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgotCi0gICAgaWYgbWFzayAh
PSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAnTWFzayBiaXQgbXVz
dCBiZSAwIGZvciBmcmFtZXMgY29taW5nIGZyb20gc2VydmVyJykKLQotICAgIGlmIHBheWxvYWRf
bGVuZ3RoID09IDEyNzoKLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZl
X2J5dGVzKHNvY2tldCwgOCkKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNr
KAotICAgICAgICAgICAgJyFRJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAg
IGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdFeHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKLSAgICBlbGlm
IHBheWxvYWRfbGVuZ3RoID09IDEyNjoKLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgg
PSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMikKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1
Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBd
Ci0KLSAgICByZXR1cm4gZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVu
Z3RoCi0KLQotY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEg
VExTIGNvbm5lY3Rpb24uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6
Ci0gICAgICAgIHNlbGYuX3NzbCA9IHNvY2tldC5zc2wocmF3X3NvY2tldCkKLQotICAgIGRlZiBz
ZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykK
LQotICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3Ns
LnJlYWQoc2l6ZSkKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgIyBOb3RoaW5nIHRv
IGRvLgotICAgICAgICBwYXNzCi0KLQotY2xhc3MgSHR0cFN0YXR1c0V4Y2VwdGlvbihFeGNlcHRp
b24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdW5leHBlY3Rl
ZCBodHRwIHN0YXR1cyBjb2RlIHdhcwotICAgIHJlY2VpdmVkIGFzIGEgcmVzdWx0IG9mIGhhbmRz
aGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXMpOgot
ICAgICAgICBzdXBlcihIdHRwU3RhdHVzRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQot
ICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWNsYXNzIFdlYlNvY2tldEhhbmRzaGFr
ZShvYmplY3QpOgotICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIo
c2VsZikKLQotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotCi0gICAgZGVmIGhhbmRz
aGFrZShzZWxmLCBzb2NrZXQpOgotICAgICAgICAiIiJIYW5kc2hha2UgV2ViU29ja2V0LgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAg
cmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAl
cicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9s
aW5lKQotCi0gICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JB
REVfSEVBREVSKQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLQot
ICAgICAgICBmaWVsZHMuYXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2
ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0KLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uIGlzIDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5k
KF9zZWNfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMu
b3JpZ2luKSkKLQotICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAg
ICBrZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5
LCB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMt
V2ViU29ja2V0LUtleTogJXNcclxuJyAlIGtleSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdT
ZWMtV2ViU29ja2V0LVZlcnNpb246ICVkXHJcbicgJSBzZWxmLl9vcHRpb25zLnZlcnNpb24pCi0K
LSAgICAgICAgIyBTZXR0aW5nIHVwIGV4dGVuc2lvbnMuCi0gICAgICAgIGlmIGxlbihzZWxmLl9v
cHRpb25zLmV4dGVuc2lvbnMpID4gMDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9uczogJXNcclxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICcsICcuam9pbihzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMpKQotCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxk
cykKLQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoZmllbGQpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykK
LQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1
ZXN0JykKLQotICAgICAgICBmaWVsZCA9ICcnCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAg
ICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmll
bGQgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJl
YWsKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlc3Bv
bnNlLUxpbmU6ICVyJywgZmllbGQpCi0KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90
IGZpZWxkLmVuZHN3aXRoKCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1dy
b25nIHN0YXR1cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgbSA9IHJlLm1hdGNoKCdbXiBd
KiAoW14gXSopIC4qJywgZmllbGQpCi0gICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBm
b3VuZCBpbiBzdGF0dXMgbGluZTogJXInICUgZmllbGQpCi0gICAgICAgIGNvZGUgPSBtLmdyb3Vw
KDEpCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaCgnWzAtOV1bMC05XVswLTldJywgY29kZSk6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVz
IGNvZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAg
ICAgICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgIGlmIGNvZGUgIT0gJzEwMSc6Ci0gICAg
ICAgICAgICByYWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdFeHBl
Y3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcK
LSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSwgaW50KGNvZGUpKQotICAgICAg
ICBmaWVsZHMgPSBfcmVhZF9maWVsZHMoc2VsZi5fc29ja2V0KQotICAgICAgICBjaCA9IHJlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBB
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXIn
ICUgY2gpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBy
ZXNwb25zZSBoZWFkZXJzOiAlcicsIGZpZWxkcykKLQotICAgICAgICAjIENoZWNrIC9maWVsZHMv
Ci0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJz
IGZvdW5kOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1sn
Y29ubmVjdGlvbiddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdNdWx0aXBsZSBDb25uZWN0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxk
c1snY29ubmVjdGlvbiddKQotICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnd2Vi
c29ja2V0JzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
VW5leHBlY3RlZCBVcGdyYWRlIGhlYWRlciB2YWx1ZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ11b
MF0pCi0gICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3Jh
ZGUnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4
cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQotICAgICAgICAgICAgICAgIGZp
ZWxkc1snY29ubmVjdGlvbiddWzBdKQotCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJz
b2NrZXQtYWNjZXB0J10pICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6
ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddKQot
Ci0gICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQnXVswXQotCi0g
ICAgICAgICMgVmFsaWRhdGUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVjb2RlZF9hY2Nl
cHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciwg
ZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAg
ICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyIFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAnICsgYWNj
ZXB0KQotCi0gICAgICAgIGlmIGxlbihkZWNvZGVkX2FjY2VwdCkgIT0gMjA6Ci0gICAgICAgICAg
ICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFs
dWUgb2YgU2VjLVdlYlNvY2tldC1BY2NlcHQgaXMgbm90IDIwLWJ5dGUgbG9uZycpCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBY3R1YWwgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVyICgl
cyknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0LCB1dGlsLmhleGlmeShkZWNv
ZGVkX2FjY2VwdCkpCi0KLSAgICAgICAgb3JpZ2luYWxfZXhwZWN0ZWRfYWNjZXB0ID0gdXRpbC5z
aGExX2hhc2goCi0gICAgICAgICAgICBrZXkgKyBXRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRpZ2Vz
dCgpCi0gICAgICAgIGV4cGVjdGVkX2FjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxf
ZXhwZWN0ZWRfYWNjZXB0KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQg
U2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVyICglcyknLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfYWNjZXB0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhp
Znkob3JpZ2luYWxfZXhwZWN0ZWRfYWNjZXB0KSkKLQotICAgICAgICBpZiBhY2NlcHQgIT0gZXhw
ZWN0ZWRfYWNjZXB0OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVkKSAh
PSAlciAnCi0gICAgICAgICAgICAgICAgJyhhY3R1YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVkX2Fj
Y2VwdCkpCi0KLSAgICAgICAgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgn
c2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKLSAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9
IFtdCi0gICAgICAgIGlmIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygK
LSAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHNlcnZlcl9leHRlbnNpb25zX2hlYWRlcikp
Ci0KLSAgICAgICAgIyBTY2FuIGFjY2VwdGVkIGV4dGVuc2lvbiBsaXN0IHRvIGNoZWNrIGlmIHRo
ZXJlIGlzIGFueSB1bnJlY29nbml6ZWQKLSAgICAgICAgIyBleHRlbnNpb25zIG9yIGV4dGVuc2lv
bnMgd2UgZGlkbid0IHJlcXVlc3QgaW4gaXQuIFRoZW4sIGZvcgotICAgICAgICAjIGV4dGVuc2lv
bnMgd2UgcmVxdWVzdCwgcGFyc2UgdGhlbSBhbmQgc3RvcmUgcGFyYW1ldGVycy4gVGhleSB3aWxs
IGJlCi0gICAgICAgICMgdXNlZCBsYXRlciBieSBlYWNoIGV4dGVuc2lvbi4KLSAgICAgICAgZGVm
bGF0ZV9mcmFtZV9hY2NlcHRlZCA9IEZhbHNlCi0gICAgICAgIG11eF9hY2NlcHRlZCA9IEZhbHNl
Ci0gICAgICAgIGZvciBleHRlbnNpb24gaW4gYWNjZXB0ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAg
ICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OOgotICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWU6Ci0gICAgICAg
ICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBleHRlbnNpb24ubmFtZSgpID09IF9NVVhf
RVhURU5TSU9OOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX211eDoKLSAg
ICAgICAgICAgICAgICAgICAgbXV4X2FjY2VwdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgaWYgZXh0ZW5zaW9uLm5hbWUoKSA9PSBfUEVSTUVTU0FH
RV9ERUZMQVRFX0VYVEVOU0lPTjoKLSAgICAgICAgICAgICAgICBjaGVja2VyID0gc2VsZi5fb3B0
aW9ucy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUKLSAgICAgICAgICAgICAgICBpZiBjaGVja2Vy
OgotICAgICAgICAgICAgICAgICAgICBjaGVja2VyKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdSZWNlaXZlZCB1bnJlY29nbml6ZWQgZXh0ZW5zaW9uOiAlcycgJSBleHRlbnNpb24u
bmFtZSgpKQotCi0gICAgICAgICMgTGV0IGFsbCBleHRlbnNpb25zIGNoZWNrIHRoZSByZXNwb25z
ZSBmb3IgZXh0ZW5zaW9uIHJlcXVlc3QuCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNl
X2RlZmxhdGVfZnJhbWUgYW5kCi0gICAgICAgICAgICBub3QgZGVmbGF0ZV9mcmFtZV9hY2NlcHRl
ZCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIGV4dGVuc2lvbiBub3QgYWNjZXB0
ZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfREVGTEFURV9GUkFNRV9FWFRFTlNJ
T04pCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfbXV4IGFuZCBub3QgbXV4X2FjY2Vw
dGVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBleHRlbnNpb24gbm90IGFjY2Vw
dGVkJyAlIF9NVVhfRVhURU5TSU9OKQotCi0KLWNsYXNzIFdlYlNvY2tldEh5YmkwMEhhbmRzaGFr
ZShvYmplY3QpOgotICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEh5QmkgMDAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgb3B0aW9ucywgZHJhZnRfZmllbGQpOgotICAgICAgICBzZWxmLl9sb2dnZXIg
PSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9vcHRpb25zID0g
b3B0aW9ucwotICAgICAgICBzZWxmLl9kcmFmdF9maWVsZCA9IGRyYWZ0X2ZpZWxkCi0KLSAgICBk
ZWYgaGFuZHNoYWtlKHNlbGYsIHNvY2tldCk6Ci0gICAgICAgICIiIkhhbmRzaGFrZSBXZWJTb2Nr
ZXQuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2Ug
ZmFpbGVkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQot
ICAgICAgICAjIDQuMSA1LiBzZW5kIHJlcXVlc3QgbGluZS4KLSAgICAgICAgcmVxdWVzdF9saW5l
ID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3Rf
bGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lKQotICAgICAg
ICAjIDQuMSA2LiBMZXQgL2ZpZWxkcy8gYmUgYW4gZW1wdHkgbGlzdCBvZiBzdHJpbmdzLgotICAg
ICAgICBmaWVsZHMgPSBbXQotICAgICAgICAjIDQuMSA3LiBBZGQgdGhlIHN0cmluZyAiVXBncmFk
ZTogV2ViU29ja2V0IiB0byAvZmllbGRzLy4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFE
RV9IRUFERVJfSElYSUU3NSkKLSAgICAgICAgIyA0LjEgOC4gQWRkIHRoZSBzdHJpbmcgIkNvbm5l
Y3Rpb246IFVwZ3JhZGUiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05O
RUNUSU9OX0hFQURFUikKLSAgICAgICAgIyA0LjEgOS0xMi4gQWRkIEhvc3Q6IGZpZWxkIHRvIC9m
aWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0g
ICAgICAgICMgNC4xIDEzLiBBZGQgT3JpZ2luOiBmaWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAg
ZmllbGRzLmFwcGVuZChfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAg
ICAgICMgVE9ETzogNC4xIDE0IEFkZCBTZWMtV2ViU29ja2V0LVByb3RvY29sOiBmaWVsZCB0byAv
ZmllbGRzLy4KLSAgICAgICAgIyBUT0RPOiA0LjEgMTUgQWRkIGNvb2tpZSBoZWFkZXJzIHRvIC9m
aWVsZHMvLgotCi0gICAgICAgICMgNC4xIDE2LTIzLiBBZGQgU2VjLVdlYlNvY2tldC1LZXk8bj4g
dG8gL2ZpZWxkcy8uCi0gICAgICAgIHNlbGYuX251bWJlcjEsIGtleTEgPSBzZWxmLl9nZW5lcmF0
ZV9zZWNfd2Vic29ja2V0X2tleSgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnTnVtYmVy
MTogJWQnLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29j
a2V0LUtleTE6ICVzXHJcbicgJSBrZXkxKQotICAgICAgICBzZWxmLl9udW1iZXIyLCBrZXkyID0g
c2VsZi5fZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoKQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ051bWJlcjI6ICVkJywgc2VsZi5fbnVtYmVyMSkKLSAgICAgICAgZmllbGRzLmFwcGVu
ZCgnU2VjLVdlYlNvY2tldC1LZXkyOiAlc1xyXG4nICUga2V5MikKLQotICAgICAgICBmaWVsZHMu
YXBwZW5kKCdTZWMtV2ViU29ja2V0LURyYWZ0OiAlc1xyXG4nICUgc2VsZi5fZHJhZnRfZmllbGQp
Ci0KLSAgICAgICAgIyA0LjEgMjQuIEZvciBlYWNoIHN0cmluZyBpbiAvZmllbGRzLywgaW4gYSBy
YW5kb20gb3JkZXI6IHNlbmQgdGhlCi0gICAgICAgICMgc3RyaW5nLCBlbmNvZGVkIGFzIFVURi04
LCBmb2xsb3dlZCBieSBhIFVURi04IGVuY29kZWQgVSswMDBEIENBUlJJQUdFCi0gICAgICAgICMg
UkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQgY2hhcmFjdGVyIHBhaXIgKENSTEYpLgotICAgICAgICBy
YW5kb20uc2h1ZmZsZShmaWVsZHMpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVu
aW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRzKQotICAgICAgICBmb3Ig
ZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQp
Ci0KLSAgICAgICAgIyA0LjEgMjUuIHNlbmQgYSBVVEYtOC1lbmNvZGVkIFUrMDAwRCBDQVJSSUFH
RSBSRVRVUk4gVSswMDBBIExJTkUgRkVFRAotICAgICAgICAjIGNoYXJhY3RlciBwYWlyIChDUkxG
KS4KLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotICAgICAgICAjIDQuMSAy
Ni4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRl
cyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVu
Y29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAgc2VsZi5fa2V5MyA9IHNlbGYu
X2dlbmVyYXRlX2tleTMoKQotICAgICAgICAjIDQuMSAyNy4gc2VuZCAva2V5My8gdG8gdGhlIHNl
cnZlci4KLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoc2VsZi5fa2V5MykKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0tleTM6ICVyICglcyknLCBzZWxmLl9r
ZXkzLCB1dGlsLmhleGlmeShzZWxmLl9rZXkzKSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKLQotICAgICAgICAjIDQuMSAyOC4g
UmVhZCBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0g
ICAgICAgICMgY2xvc2VzLCBvciBhIDB4MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0
aGVzZSBieXRlcywgaW5jbHVkaW5nCi0gICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAg
IGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBmaWVsZCArPSBjaAotICAgICAg
ICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVzcG9uc2UtTGluZTogJXInLCBm
aWVsZCkKLQotICAgICAgICAjIGlmIC9maWVsZC8gaXMgbm90IGF0IGxlYXN0IHNldmVuIGJ5dGVz
IGxvbmcsIG9yIGlmIHRoZSBsYXN0Ci0gICAgICAgICMgdHdvIGJ5dGVzIGFyZW4ndCAweDBEIGFu
ZCAweDBBIHJlc3BlY3RpdmVseSwgb3IgaWYgaXQgZG9lcyBub3QKLSAgICAgICAgIyBjb250YWlu
IGF0IGxlYXN0IHR3byAweDIwIGJ5dGVzLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0
aW9uCi0gICAgICAgICMgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBsZW4oZmll
bGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoJ1xyXG4nKToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignV3Jvbmcgc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0g
cmUubWF0Y2goJ1teIF0qIChbXiBdKikgLionLCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25l
OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBjb2RlIGZvdW5kIGluIHN0YXR1cyBs
aW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgIyA0LjEgMjkuIGxldCAvY29kZS8gYmUgdGhlIHN1
YnN0cmluZyBvZiAvZmllbGQvIHRoYXQgc3RhcnRzIGZyb20gdGhlCi0gICAgICAgICMgYnl0ZSBh
ZnRlciB0aGUgZmlyc3QgMHgyMCBieXRlLCBhbmQgZW5kcyB3aXRoIHRoZSBieXRlIGJlZm9yZSB0
aGUKLSAgICAgICAgIyBzZWNvbmQgMHgyMCBieXRlLgotICAgICAgICBjb2RlID0gbS5ncm91cCgx
KQotICAgICAgICAjIDQuMSAzMC4gaWYgL2NvZGUvIGlzIG5vdCB0aHJlZSBieXRlcyBsb25nLCBv
ciBpZiBhbnkgb2YgdGhlIGJ5dGVzIGluCi0gICAgICAgICMgL2NvZGUvIGFyZSBub3QgaW4gdGhl
IHJhbmdlIDB4MzAgdG8gMHg5MCwgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQKLSAgICAgICAgIyBj
b25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgbm90IHJlLm1hdGNo
KCdbMC05XVswLTldWzAtOV0nLCBjb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnSFRUUCBzdGF0dXMgY29kZSAlciBpcyBub3QgdGhyZWUgZGlnaXQg
aW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0gICAgICAgICAgICAgICAgKGNvZGUsIGZpZWxkKSkKLSAg
ICAgICAgIyA0LjEgMzEuIGlmIC9jb2RlLywgaW50ZXJwcmV0ZWQgYXMgVVRGLTgsIGlzICIxMDEi
LCB0aGVuIG1vdmUgdG8gdGhlCi0gICAgICAgICMgbmV4dCBzdGVwLgotICAgICAgICBpZiBjb2Rl
ICE9ICcxMDEnOgotICAgICAgICAgICAgcmFpc2UgSHR0cFN0YXR1c0V4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnRXhwZWN0ZWQgSFRUUCBzdGF0dXMgY29kZSAxMDEgYnV0IGZvdW5kICVyIGlu
IHN0YXR1cyBsaW5lOiAnCi0gICAgICAgICAgICAgICAgJyVyJyAlIChjb2RlLCBmaWVsZCksIGlu
dChjb2RlKSkKLSAgICAgICAgIyA0LjEgMzItMzkuIHJlYWQgZmllbGRzIGludG8gL2ZpZWxkcy8K
LSAgICAgICAgZmllbGRzID0gX3JlYWRfZmllbGRzKHNlbGYuX3NvY2tldCkKLQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIHJlc3BvbnNlIGhlYWRlcnM6ICVy
JywgZmllbGRzKQotCi0gICAgICAgICMgNC4xIDQwLiBfRmllbGRzIHByb2Nlc3NpbmdfCi0gICAg
ICAgICMgcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVz
KHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFeHBlY3RlZCBMRiBidXQgZm91bmQgJXInICUgY2gpCi0g
ICAgICAgICMgNC4xIDQxLiBjaGVjayAvZmllbGRzLwotICAgICAgICBpZiBsZW4oZmllbGRzWyd1
cGdyYWRlJ10pICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ011bHRpcGxlIFVwZ3JhZGUgaGVhZGVycyBmb3VuZDogJXMnICUgZmllbGRzWyd1cGdy
YWRlJ10pCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkgIT0gMToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgQ29ubmVj
dGlvbiBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKLSAgICAgICAg
aWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1vcmlnaW4nXSkgIT0gMToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgU2VjLVdlYlNvY2tl
dC1PcmlnaW4gaGVhZGVycyBmb3VuZDogJXMnICUKLSAgICAgICAgICAgICAgICBmaWVsZHNbJ3Nl
Yy1zZWJzb2NrZXQtb3JpZ2luJ10pCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2Nr
ZXQtbG9jYXRpb24nXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnTXVsdGlwbGUgU2VjLVdlYlNvY2tldC1Mb2NhdGlvbiBoZWFkZXJzIGZvdW5k
OiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snc2VjLXNlYnNvY2tldC1sb2NhdGlvbidd
KQotICAgICAgICAjIFRPRE8odWthaSk6IHByb3RvY29sCi0gICAgICAgICMgaWYgdGhlIGVudHJ5
J3MgbmFtZSBpcyAidXBncmFkZSIKLSAgICAgICAgIyAgaWYgdGhlIHZhbHVlIGlzIG5vdCBleGFj
dGx5IGVxdWFsIHRvIHRoZSBzdHJpbmcgIldlYlNvY2tldCIsCi0gICAgICAgICMgIHRoZW4gZmFp
bCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAg
ICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnV2ViU29ja2V0JzoKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBVcGdyYWRlIGhlYWRl
ciB2YWx1ZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ11bMF0pCi0gICAgICAgICMgaWYgdGhlIGVu
dHJ5J3MgbmFtZSBpcyAiY29ubmVjdGlvbiIKLSAgICAgICAgIyAgaWYgdGhlIHZhbHVlLCBjb252
ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCBpcyBub3QgZXhhY3RseSBlcXVhbAotICAgICAgICAj
ICB0byB0aGUgc3RyaW5nICJ1cGdyYWRlIiwgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVj
dGlvbiBhbmQKLSAgICAgICAgIyAgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGZpZWxk
c1snY29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIENvbm5lY3Rpb24gaGVh
ZGVyIHZhbHVlOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBd
KQotICAgICAgICAjIFRPRE8odWthaSk6IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwg
Li4KLQotICAgICAgICAjIDQuMSA0Mi4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0
aW9uIG9mIC9udW1iZXJfMS8sCi0gICAgICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAz
MiBiaXQgaW50ZWdlciwgL251bWJlcl8yLywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVu
ZGlhbiAzMiBiaXQgaW50ZWdlciwgYW5kIHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRo
ZQotICAgICAgICAjIG9yZGVyIHRoZXkgd2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBj
aGFsbGVuZ2UgPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFs
bGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxl
bmdlICs9IHNlbGYuX2tleTMKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVu
Z2UpKQotCi0gICAgICAgICMgNC4xIDQzLiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdl
cnByaW50IG9mIC9jaGFsbGVuZ2UvIGFzIGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQg
c3RyaW5nLgotICAgICAgICBleHBlY3RlZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdl
c3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQg
Y2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGls
LmhleGlmeShleHBlY3RlZCkpCi0KLSAgICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRl
cyBmcm9tIHRoZSBzZXJ2ZXIuCi0gICAgICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMu
Ci0gICAgICAgIHJlcGx5ID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDE2KQotICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQWN0dWFsIGNoYWxsZW5nZSByZXNw
b25zZTogJXIgKCVzKScsIHJlcGx5LCB1dGlsLmhleGlmeShyZXBseSkpCi0KLSAgICAgICAgIyA0
LjEgNDUuIGlmIC9yZXBseS8gZG9lcyBub3QgZXhhY3RseSBlcXVhbCAvZXhwZWN0ZWQvLCB0aGVu
IGZhaWwKLSAgICAgICAgIyB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgICAgICBpZiBleHBlY3RlZCAhPSByZXBseToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnQmFkIGNoYWxsZW5nZSByZXNwb25zZTogJXIg
KGV4cGVjdGVkKSAhPSAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZCwg
cmVwbHkpKQotICAgICAgICAjIDQuMSA0Ni4gVGhlICpXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBl
c3RhYmxpc2hlZCouCi0KLSAgICBkZWYgX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KHNlbGYp
OgotICAgICAgICAjIDQuMSAxNi4gbGV0IC9zcGFjZXNfbi8gYmUgYSByYW5kb20gaW50ZWdlciBm
cm9tIDEgdG8gMTIgaW5jbHVzaXZlLgotICAgICAgICBzcGFjZXMgPSByYW5kb20ucmFuZGludCgx
LCAxMikKLSAgICAgICAgIyA0LjEgMTcuIGxldCAvbWF4X24vIGJlIHRoZSBsYXJnZXN0IGludGVn
ZXIgbm90IGdyZWF0ZXIgdGhhbgotICAgICAgICAjICA0LDI5NCw5NjcsMjk1IGRpdmlkZWQgYnkg
L3NwYWNlc19uLy4KLSAgICAgICAgbWF4bnVtID0gNDI5NDk2NzI5NSAvIHNwYWNlcwotICAgICAg
ICAjIDQuMSAxOC4gbGV0IC9udW1iZXJfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8g
L21heF9uLwotICAgICAgICAjIGluY2x1c2l2ZS4KLSAgICAgICAgbnVtYmVyID0gcmFuZG9tLnJh
bmRpbnQoMCwgbWF4bnVtKQotICAgICAgICAjIDQuMSAxOS4gbGV0IC9wcm9kdWN0X24vIGJlIHRo
ZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgL251bWJlcl9uLyBhbmQKLSAgICAgICAgIyAvc3BhY2Vz
X24vIHRvZ2V0aGVyLgotICAgICAgICBwcm9kdWN0ID0gbnVtYmVyICogc3BhY2VzCi0gICAgICAg
ICMgNC4xIDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIC9wcm9kdWN0
X24vLCBleHByZXNzZWQKLSAgICAgICAgIyBpbiBiYXNlIHRlbiB1c2luZyB0aGUgbnVtZXJhbHMg
aW4gdGhlIHJhbmdlIFUrMDAzMCBESUdJVCBaRVJPICgwKSB0bwotICAgICAgICAjIFUrMDAzOSBE
SUdJVCBOSU5FICg5KS4KLSAgICAgICAga2V5ID0gc3RyKHByb2R1Y3QpCi0gICAgICAgICMgNC4x
IDIxLiBpbnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3ZWx2ZSByYW5kb20gY2hhcmFjdGVycyBmcm9t
IHRoZQotICAgICAgICAjIHJhbmdlIFUrMDAyMSB0byBVKzAwMkYgYW5kIFUrMDAzQSB0byBVKzAw
N0UgaW50byAva2V5X24vIGF0IHJhbmRvbQotICAgICAgICAjIHBvc2l0aW9ucy4KLSAgICAgICAg
YXZhaWxhYmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwgMHgyZiArIDEpICsgcmFuZ2UoMHgzYSwgMHg3
ZSArIDEpCi0gICAgICAgIG4gPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAgICAgICAgZm9yIF8g
aW4geHJhbmdlKG4pOgotICAgICAgICAgICAgY2ggPSByYW5kb20uY2hvaWNlKGF2YWlsYWJsZV9j
aGFycykKLSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDAsIGxlbihrZXkpKQotICAg
ICAgICAgICAga2V5ID0ga2V5WzA6cG9zXSArIGNocihjaCkgKyBrZXlbcG9zOl0KLSAgICAgICAg
IyA0LjEgMjIuIGluc2VydCAvc3BhY2VzX24vIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXJzIGludG8g
L2tleV9uLyBhdAotICAgICAgICAjIHJhbmRvbSBwb3NpdGlvbnMgb3RoZXIgdGhhbiBzdGFydCBv
ciBlbmQgb2YgdGhlIHN0cmluZy4KLSAgICAgICAgZm9yIF8gaW4geHJhbmdlKHNwYWNlcyk6Ci0g
ICAgICAgICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5KSAtIDEpCi0gICAgICAg
ICAgICBrZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCi0gICAgICAgIHJldHVybiBu
dW1iZXIsIGtleQotCi0gICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYpOgotICAgICAgICAjIDQu
MSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBi
eXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2Vy
IGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAgcmV0dXJuICcnLmpvaW4o
W2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFuZ2UoOCldKQotCi0KLWNs
YXNzIFdlYlNvY2tldEhpeGllNzVIYW5kc2hha2Uob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQg
aGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgSUVURiBIaXhpZSA3NS4iIiIKLQotICAgIF9FWFBFQ1RF
RF9SRVNQT05TRSA9ICgKLSAgICAgICAgJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29s
IEhhbmRzaGFrZVxyXG4nICsKLSAgICAgICAgX1VQR1JBREVfSEVBREVSX0hJWElFNzUgKwotICAg
ICAgICBfQ09OTkVDVElPTl9IRUFERVIpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9u
cyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQot
Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICBkZWYgX3NraXBfaGVhZGVy
cyhzZWxmKToKLSAgICAgICAgdGVybWluYXRvciA9ICdcclxuXHJcbicKLSAgICAgICAgcG9zID0g
MAotICAgICAgICB3aGlsZSBwb3MgPCBsZW4odGVybWluYXRvcik6Ci0gICAgICAgICAgICByZWNl
aXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgcmVj
ZWl2ZWQgPT0gdGVybWluYXRvcltwb3NdOgotICAgICAgICAgICAgICAgIHBvcyArPSAxCi0gICAg
ICAgICAgICBlbGlmIHJlY2VpdmVkID09IHRlcm1pbmF0b3JbMF06Ci0gICAgICAgICAgICAgICAg
cG9zID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwb3MgPSAwCi0KLSAg
ICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNvY2tldCk6Ci0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNv
Y2tldAotCi0gICAgICAgIHJlcXVlc3RfbGluZSA9IF9tZXRob2RfbGluZShzZWxmLl9vcHRpb25z
LnJlc291cmNlKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtl
IFJlcXVlc3QtTGluZTogJXInLCByZXF1ZXN0X2xpbmUpCi0gICAgICAgIHNlbGYuX3NvY2tldC5z
ZW5kYWxsKHJlcXVlc3RfbGluZSkKLQotICAgICAgICBoZWFkZXJzID0gX1VQR1JBREVfSEVBREVS
X0hJWElFNzUgKyBfQ09OTkVDVElPTl9IRUFERVIKLSAgICAgICAgaGVhZGVycyArPSBfZm9ybWF0
X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnVzZV90bHMpCi0gICAgICAgIGhlYWRlcnMgKz0gX29yaWdpbl9oZWFkZXIoc2VsZi5f
b3B0aW9ucy5vcmlnaW4pCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5k
c2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGhlYWRlcnMpCi0gICAgICAgIHNlbGYuX3NvY2tl
dC5zZW5kYWxsKGhlYWRlcnMpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4n
KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IG9wZW5pbmcgaGFuZHNoYWtlIHJl
cXVlc3QnKQotCi0gICAgICAgIGZvciBleHBlY3RlZF9jaGFyIGluIFdlYlNvY2tldEhpeGllNzVI
YW5kc2hha2UuX0VYUEVDVEVEX1JFU1BPTlNFOgotICAgICAgICAgICAgcmVjZWl2ZWQgPSByZWNl
aXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NoYXIg
IT0gcmVjZWl2ZWQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdIYW5kc2hha2Ug
ZmFpbHVyZScpCi0gICAgICAgICMgV2UgY3V0IGNvcm5lcnMgYW5kIHNraXAgb3RoZXIgaGVhZGVy
cy4KLSAgICAgICAgc2VsZi5fc2tpcF9oZWFkZXJzKCkKLQotCi1jbGFzcyBXZWJTb2NrZXRTdHJl
YW0ob2JqZWN0KToKLSAgICAiIiJGcmFtZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJv
dG9jb2wgKFJGQyA2NDU1KS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIGhh
bmRzaGFrZSk6Ci0gICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IGhhbmRzaGFrZQotICAgICAgICBz
ZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICAjIEZpbHRlcnMgYXBwbGllZCB0byBhcHBs
aWNhdGlvbiBkYXRhIHBhcnQgb2YgZGF0YSBmcmFtZXMuCi0gICAgICAgIHNlbGYuX291dGdvaW5n
X2ZyYW1lX2ZpbHRlciA9IE5vbmUKLSAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVy
ID0gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZS5fb3B0aW9ucy51c2VfZGVmbGF0
ZV9mcmFtZToKLSAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9ICgKLSAg
ICAgICAgICAgICAgICB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoTm9uZSwgRmFsc2UpKQotICAgICAg
ICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVy
KCkKLQotICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFsc2UKLQotICAgIGRlZiBfbWFza19o
eWJpKHNlbGYsIHMpOgotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBvcy51cmFuZG9tIGRvZXMg
b3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxsLiBJZgotICAgICAgICAjIHBlcmZvcm1hbmNl
IG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUgbGlicmFyeSBjYWxsIHRoYXQgZ2VuZXJhdGVz
Ci0gICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkbyByYW5kb20gbnVtYmVy
IHNlcXVlbmNlLgotICAgICAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQotICAgICAg
ICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KLSAgICAgICAgY291bnQgPSAwCi0gICAgICAgIGZv
ciBjIGluIHM6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNocihvcmQoYykgXiBvcmQobWFz
a2luZ19ub25jZVtjb3VudF0pKSkKLSAgICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBs
ZW4obWFza2luZ19ub25jZSkKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0gICAg
ZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKHNlbGYsIGhlYWRlciwgYm9keSk6Ci0g
ICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlciArIHNlbGYuX21hc2tfaHliaShib2R5
KSkKLQotICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgcGF5bG9hZCwgZnJhbWVfdHlwZSwgZW5kPVRy
dWUsIG1hc2s9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTAp
OgotICAgICAgICBpZiBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihw
YXlsb2FkKQotCi0gICAgICAgIGlmIHNlbGYuX2ZyYWdtZW50ZWQ6Ci0gICAgICAgICAgICBvcGNv
ZGUgPSBPUENPREVfQ09OVElOVUFUSU9OCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNv
ZGUgPSBmcmFtZV90eXBlCi0KLSAgICAgICAgaWYgZW5kOgotICAgICAgICAgICAgc2VsZi5fZnJh
Z21lbnRlZCA9IEZhbHNlCi0gICAgICAgICAgICBmaW4gPSAxCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gVHJ1ZQotICAgICAgICAgICAgZmluID0gMAotCi0g
ICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZS5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAg
ICAgICAgICAgIHJzdjEgPSAxCi0KLSAgICAgICAgaWYgbWFzazoKLSAgICAgICAgICAgIG1hc2tf
Yml0ID0gMSA8PCA3Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXNrX2JpdCA9IDAKLQot
ICAgICAgICBoZWFkZXIgPSBjaHIoZmluIDw8IDcgfCByc3YxIDw8IDYgfCByc3YyIDw8IDUgfCBy
c3YzIDw8IDQgfCBvcGNvZGUpCi0gICAgICAgIHBheWxvYWRfbGVuZ3RoID0gbGVuKHBheWxvYWQp
Ci0gICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoIDw9IDEyNToKLSAgICAgICAgICAgIGhlYWRlciAr
PSBjaHIobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0aCkKLSAgICAgICAgZWxpZiBwYXlsb2FkX2xl
bmd0aCA8IDEgPDwgMTY6Ci0gICAgICAgICAgICBoZWFkZXIgKz0gY2hyKG1hc2tfYml0IHwgMTI2
KSArIHN0cnVjdC5wYWNrKCchSCcsIHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBlbGlmIHBheWxv
YWRfbGVuZ3RoIDwgMSA8PCA2MzoKLSAgICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQg
fCAxMjcpICsgc3RydWN0LnBhY2soJyFRJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RvbyBsb25nIHBheWxvYWQgKCVkIGJ5dGUp
JyAlIHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBpZiBtYXNrOgotICAgICAgICAgICAgcGF5bG9h
ZCA9IHNlbGYuX21hc2tfaHliaShwYXlsb2FkKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFs
bChoZWFkZXIgKyBwYXlsb2FkKQotCi0gICAgZGVmIHNlbmRfYmluYXJ5KHNlbGYsIHBheWxvYWQs
IGVuZD1UcnVlLCBtYXNrPVRydWUpOgotICAgICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLCBP
UENPREVfQklOQVJZLCBlbmQsIG1hc2spCi0KLSAgICBkZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxv
YWQsIGVuZD1UcnVlLCBtYXNrPVRydWUpOgotICAgICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2Fk
LmVuY29kZSgndXRmLTgnKSwgT1BDT0RFX1RFWFQsIGVuZCwgbWFzaykKLQotICAgIGRlZiBfYXNz
ZXJ0X3JlY2VpdmVfZGF0YShzZWxmLCBwYXlsb2FkLCBvcGNvZGUsIGZpbiwgcnN2MSwgcnN2Miwg
cnN2Myk6Ci0gICAgICAgIChhY3R1YWxfZmluLCBhY3R1YWxfcnN2MSwgYWN0dWFsX3JzdjIsIGFj
dHVhbF9yc3YzLCBhY3R1YWxfb3Bjb2RlLAotICAgICAgICAgcGF5bG9hZF9sZW5ndGgpID0gcmVh
ZF9mcmFtZV9oZWFkZXIoc2VsZi5fc29ja2V0KQotCi0gICAgICAgIGlmIGFjdHVhbF9vcGNvZGUg
IT0gb3Bjb2RlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICdVbmV4cGVjdGVkIG9wY29kZTogJWQgKGV4cGVjdGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAg
ICAgICAgICAgICAgIChvcGNvZGUsIGFjdHVhbF9vcGNvZGUpKQotCi0gICAgICAgIGlmIGFjdHVh
bF9maW4gIT0gZmluOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdVbmV4cGVjdGVkIGZpbjogJWQgKGV4cGVjdGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAg
ICAgICAgICAgICAgIChmaW4sIGFjdHVhbF9maW4pKQotCi0gICAgICAgIGlmIHJzdjEgaXMgTm9u
ZToKLSAgICAgICAgICAgIHJzdjEgPSAwCi0gICAgICAgICAgICBpZiBzZWxmLl9oYW5kc2hha2Uu
X29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWU6Ci0gICAgICAgICAgICAgICAgcnN2MSA9IDEKLQot
ICAgICAgICBpZiByc3YyIGlzIE5vbmU6Ci0gICAgICAgICAgICByc3YyID0gMAotCi0gICAgICAg
IGlmIHJzdjMgaXMgTm9uZToKLSAgICAgICAgICAgIHJzdjMgPSAwCi0KLSAgICAgICAgaWYgYWN0
dWFsX3JzdjEgIT0gcnN2MToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnVW5leHBlY3RlZCByc3YxOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAl
Ci0gICAgICAgICAgICAgICAgKHJzdjEsIGFjdHVhbF9yc3YxKSkKLQotICAgICAgICBpZiBhY3R1
YWxfcnN2MiAhPSByc3YyOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIHJzdjI6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUK
LSAgICAgICAgICAgICAgICAocnN2MiwgYWN0dWFsX3JzdjIpKQotCi0gICAgICAgIGlmIGFjdHVh
bF9yc3YzICE9IHJzdjM6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ1VuZXhwZWN0ZWQgcnN2MzogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQot
ICAgICAgICAgICAgICAgIChyc3YzLCBhY3R1YWxfcnN2MykpCi0KLSAgICAgICAgcmVjZWl2ZWQg
PSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgcGF5bG9hZF9sZW5ndGgpCi0KLSAgICAgICAg
aWYgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
cmVjZWl2ZWQgPSBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHJlY2VpdmVkKQot
Ci0gICAgICAgIGlmIGxlbihyZWNlaXZlZCkgIT0gbGVuKHBheWxvYWQpOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQgbGVu
Z3RoOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKGxl
bihwYXlsb2FkKSwgbGVuKHJlY2VpdmVkKSkpCi0KLSAgICAgICAgaWYgcGF5bG9hZCAhPSByZWNl
aXZlZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5l
eHBlY3RlZCBwYXlsb2FkOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAg
ICAgICAgICAgKHBheWxvYWQsIHJlY2VpdmVkKSkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9i
aW5hcnkoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlPU9QQ09ERV9CSU5BUlksIGZpbj0xLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1Ob25lLCByc3YyPU5vbmUsIHJzdjM9Tm9uZSk6
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2RhdGEocGF5bG9hZCwgb3Bjb2RlLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfdGV4dChzZWxmLCBw
YXlsb2FkLCBvcGNvZGU9T1BDT0RFX1RFWFQsIGZpbj0xLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9Tm9uZSwgcnN2Mj1Ob25lLCByc3YzPU5vbmUpOgotICAgICAgICBzZWxmLl9h
c3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQuZW5jb2RlKCd1dGYtOCcpLCBvcGNvZGUsIGZpbiwg
cnN2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YyLCByc3YzKQotCi0g
ICAgZGVmIF9idWlsZF9jbG9zZV9mcmFtZShzZWxmLCBjb2RlLCByZWFzb24sIG1hc2spOgotICAg
ICAgICBmcmFtZSA9IGNocigxIDw8IDcgfCBPUENPREVfQ0xPU0UpCi0KLSAgICAgICAgaWYgY29k
ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2Rl
KSArIHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJv
ZHkgPSAnJwotICAgICAgICBpZiBtYXNrOgotICAgICAgICAgICAgZnJhbWUgKz0gY2hyKDEgPDwg
NyB8IGxlbihib2R5KSkgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGZyYW1lICs9IGNocihsZW4oYm9keSkpICsgYm9keQotICAgICAgICByZXR1cm4g
ZnJhbWUKLQotICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAg
IHNlbGYuX3NvY2tldC5zZW5kYWxsKAotICAgICAgICAgICAgc2VsZi5fYnVpbGRfY2xvc2VfZnJh
bWUoY29kZSwgcmVhc29uLCBUcnVlKSkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShz
ZWxmLCBjb2RlLCByZWFzb24pOgotICAgICAgICBleHBlY3RlZF9mcmFtZSA9IHNlbGYuX2J1aWxk
X2Nsb3NlX2ZyYW1lKGNvZGUsIHJlYXNvbiwgRmFsc2UpCi0gICAgICAgIGFjdHVhbF9mcmFtZSA9
IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBsZW4oZXhwZWN0ZWRfZnJhbWUpKQotICAgICAg
ICBpZiBhY3R1YWxfZnJhbWUgIT0gZXhwZWN0ZWRfZnJhbWU6Ci0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgY2xvc2UgZnJhbWU6ICVyIChl
eHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfZnJh
bWUsIGFjdHVhbF9mcmFtZSkpCi0KLQotY2xhc3MgV2ViU29ja2V0U3RyZWFtSGl4aWU3NShvYmpl
Y3QpOgotICAgICIiIkZyYW1lIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2
ZXJzaW9uIEhpeGllIDc1IGFuZCBIeUJpIDAwLgotICAgICIiIgotCi0gICAgX0NMT1NFX0ZSQU1F
ID0gJ1x4ZmZceDAwJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tldCwgdW51c2VkX2hh
bmRzaGFrZSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAotCi0gICAgZGVmIHNlbmRf
ZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKHNlbGYsIGhlYWRlciwgYm9keSk6Ci0gICAgICAgIHNl
bGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlciArIGJvZHkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNl
bGYsIHBheWxvYWQsIHVudXNlZF9mcmFtZV90eXBlbSwgdW51c2VkX2VuZCwgdW51c2VkX21hc2sp
OgotICAgICAgICBmcmFtZSA9ICcnLmpvaW4oWydceDAwJywgcGF5bG9hZCwgJ1x4ZmYnXSkKLSAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZnJhbWUpCi0KLSAgICBkZWYgc2VuZF9iaW5hcnko
c2VsZiwgdW51c2VkX3BheWxvYWQsIHVudXNlZF9lbmQsIHVudXNlZF9tYXNrKToKLSAgICAgICAg
cGFzcwotCi0gICAgZGVmIHNlbmRfdGV4dChzZWxmLCBwYXlsb2FkLCB1bnVzZWRfZW5kLCB1bnVz
ZWRfbWFzayk6Ci0gICAgICAgIGVuY29kZWRfcGF5bG9hZCA9IHBheWxvYWQuZW5jb2RlKCd1dGYt
OCcpCi0gICAgICAgIGZyYW1lID0gJycuam9pbihbJ1x4MDAnLCBlbmNvZGVkX3BheWxvYWQsICdc
eGZmJ10pCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZyYW1lKQotCi0gICAgZGVmIGFz
c2VydF9yZWNlaXZlX2JpbmFyeShzZWxmLCBwYXlsb2FkLCBvcGNvZGU9T1BDT0RFX0JJTkFSWSwg
ZmluPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTAsIHJzdjI9MCwgcnN2
Mz0wKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdCaW5hcnkgZnJhbWUgaXMgbm90IHN1cHBv
cnRlZCBpbiBoaXhpZTc1JykKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsIHBh
eWxvYWQpOgotICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotCi0gICAgICAgIGlmIHJlY2VpdmVkICE9ICdceDAwJzoKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBmcmFtZSB0eXBlOiAlZCAoZXhw
ZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKDAsIG9yZChyZWNlaXZl
ZCkpKQotCi0gICAgICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxl
bihwYXlsb2FkKSArIDEpCi0gICAgICAgIGlmIHJlY2VpdmVkWy0xXSAhPSAnXHhmZic6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1Rlcm1pbmF0aW9uIGV4
cGVjdGVkOiAweGZmIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAg
ICByZWNlaXZlZCkKLQotICAgICAgICBpZiByZWNlaXZlZFswOi0xXSAhPSBwYXlsb2FkOgotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHBh
eWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAo
cGF5bG9hZCwgcmVjZWl2ZWRbMDotMV0pKQotCi0gICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29k
ZSwgcmVhc29uKToKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoc2VsZi5fQ0xPU0VfRlJB
TUUpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgdW51c2VkX2NvZGUsIHVu
dXNlZF9yZWFzb24pOgotICAgICAgICBjbG9zaW5nID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIGxlbihzZWxmLl9DTE9TRV9GUkFNRSkpCi0gICAgICAgIGlmIGNsb3NpbmcgIT0gc2VsZi5f
Q0xPU0VfRlJBTUU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2
ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLQotY2xhc3MgQ2xpZW50T3B0aW9ucyhvYmplY3QpOgot
ICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8gY29uZmlndXJlIHRoZSBDbGllbnQgb2JqZWN0
LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnZlcnNpb24gPSAx
MwotICAgICAgICBzZWxmLnNlcnZlcl9ob3N0ID0gJycKLSAgICAgICAgc2VsZi5vcmlnaW4gPSAn
JwotICAgICAgICBzZWxmLnJlc291cmNlID0gJycKLSAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9
IC0xCi0gICAgICAgIHNlbGYuc29ja2V0X3RpbWVvdXQgPSAxMDAwCi0gICAgICAgIHNlbGYudXNl
X3RscyA9IEZhbHNlCi0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgICMgRW5h
YmxlIGRlZmxhdGUtYXBwbGljYXRpb24tZGF0YS4KLSAgICAgICAgc2VsZi51c2VfZGVmbGF0ZV9m
cmFtZSA9IEZhbHNlCi0gICAgICAgICMgRW5hYmxlIG11eAotICAgICAgICBzZWxmLnVzZV9tdXgg
PSBGYWxzZQotCi0gICAgZGVmIGVuYWJsZV9kZWZsYXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICBz
ZWxmLnVzZV9kZWZsYXRlX2ZyYW1lID0gVHJ1ZQotICAgICAgICBzZWxmLmV4dGVuc2lvbnMuYXBw
ZW5kKF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotICAgIGRlZiBlbmFibGVfbXV4KHNlbGYp
OgotICAgICAgICBzZWxmLnVzZV9tdXggPSBUcnVlCi0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5h
cHBlbmQoX01VWF9FWFRFTlNJT04pCi0KLQotZGVmIGNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnko
aG9zdCwgcG9ydCwgdGltZW91dCwgdXNlX3RscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHJ5PTEwLCBzbGVlcF9zZWM9MC4xKToKLSAgICByZXRyeV9jb3VudCA9IDAKLSAgICB3
aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzID0g
c29ja2V0LnNvY2tldCgpCi0gICAgICAgICAgICBzLnNldHRpbWVvdXQodGltZW91dCkKLSAgICAg
ICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCi0gICAgICAgICAgICBpZiB1c2VfdGxzOgot
ICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29ja2V0KHMpCi0gICAgICAgICAgICByZXR1cm4g
cwotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yLCBlOgotICAgICAgICAgICAgaWYgZS5lcnJu
byAhPSBlcnJuby5FQ09OTlJFRlVTRUQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0cnlfY291bnQgPSByZXRyeV9jb3VudCArIDEK
LSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHNsZWVwX3NlYykKLQotICAgIHJldHVybiBOb25l
Ci0KLQotY2xhc3MgQ2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0IGNsaWVudC4iIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBoYW5kc2hha2UsIHN0cmVhbV9jbGFz
cyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQot
Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9
IE5vbmUKLQotICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKLSAgICAgICAgc2Vs
Zi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNzCi0KLSAgICBkZWYgY29ubmVjdChzZWxmKToK
LSAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVjdF9zb2NrZXRfd2l0aF9yZXRyeSgKLSAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5z
b2NrZXRfdGltZW91dCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0K
LSAgICAgICAgc2VsZi5faGFuZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCi0KLSAgICAg
ICAgc2VsZi5fc3RyZWFtID0gc2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5f
aGFuZHNoYWtlKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFi
bGlzaGVkJykKLQotICAgIGRlZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBo
ZWFkZXIsIGJvZHkpOgotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJh
cnlfYnl0ZXMoaGVhZGVyLCBib2R5KQotCi0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNz
YWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlLCByYXc9RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICBtYXNrPVRydWUpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9iaW5hcnkobWVzc2FnZSwgZW5kLCBtYXNrKQotICAgICAgICBlbGlmIHJhdzoK
LSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2RhdGEobWVzc2FnZSwgT1BDT0RFX1RFWFQs
IGVuZCwgbWFzaykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5k
X3RleHQobWVzc2FnZSwgZW5kLCBtYXNrKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYs
IHBheWxvYWQsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAg
IHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkocGF5bG9hZCkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV90ZXh0KHBheWxvYWQp
Ci0KLSAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwg
cmVhc29uPScnKToKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfY2xvc2UoY29kZSwgcmVhc29u
KQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNvZGU9U1RBVFVTX05PUk1B
TF9DTE9TVVJFLCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAgZGVmIGNsb3NlX3NvY2tldChzZWxmKToKLSAg
ICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKLQotICAgIGRlZiBhc3NlcnRfY29ubmVjdGlvbl9j
bG9zZWQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlYWRfZGF0YSA9IHJlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgot
ICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24g
Y2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnKSA9PSAwOgotICAgICAg
ICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVycm9y
X251bWJlciwgbWVzc2FnZSA9IGUKLSAgICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBb
J0VDT05OUkVTRVQnLCAnV1NBRUNPTk5SRVNFVCddOgotICAgICAgICAgICAgICAgICAgICBpZiAo
ZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8pIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JfbnVtYmVyID09IGdldGF0dHIoZXJybm8sIGVycm9yX25hbWUpKToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHJh
aXNlIGUKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nv
bm5lY3Rpb24gaXMgbm90IGNsb3NlZCAoUmVhZDogJXIpJyAlIHJlYWRfZGF0YSkKLQotCi1kZWYg
Y3JlYXRlX2NsaWVudChvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRp
b25zLCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbSkKLQotCi1k
ZWYgY3JlYXRlX2NsaWVudF9oeWJpMDAob3B0aW9ucyk6Ci0gICAgcmV0dXJuIENsaWVudCgKLSAg
ICAgICAgb3B0aW9ucywKLSAgICAgICAgV2ViU29ja2V0SHliaTAwSGFuZHNoYWtlKG9wdGlvbnMs
ICcwJyksCi0gICAgICAgIFdlYlNvY2tldFN0cmVhbUhpeGllNzUpCi0KLQotZGVmIGNyZWF0ZV9j
bGllbnRfaGl4aWU3NShvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRp
b25zLCBXZWJTb2NrZXRIaXhpZTc1SGFuZHNoYWtlKG9wdGlvbnMpLCBXZWJTb2NrZXRTdHJlYW1I
aXhpZTc1KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvZW5kdG9l
bmRfd2l0aF9leHRlcm5hbF9zZXJ2ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ3Zjg2ZmRiNDE2My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvZW5kdG9lbmRf
d2l0aF9leHRlcm5hbF9zZXJ2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3QgZm9y
IGVuZC10by1lbmQgd2l0aCBleHRlcm5hbCBzZXJ2ZXIuCi0KLVRoaXMgdGVzdCBpcyBub3QgcnVu
IGJ5IHJ1bl9hbGwucHkgYmVjYXVzZSBpdCByZXF1aXJlcyBzb21lIHByZXBhcmF0aW9ucy4KLUlm
IHlvdSB3b3VsZCBsaWtlIHRvIHJ1biB0aGlzIHRlc3QgY29ycmVjdGx5LCBsYXVuY2ggQXBhY2hl
IHdpdGggbW9kX3B5dGhvbgotYW5kIG1vZF9weXdlYnNvY2tldCBtYW51YWxseS4gSW4gYWRkaXRp
b24sIHlvdSBzaG91bGQgcGFzcyBhbGxvd19kcmFmdDc1IG9wdGlvbgotYW5kIGV4YW1wbGUgcGF0
aCBhcyBoYW5kbGVyX3NjYW4gb3B0aW9uIGFuZCBBcGFjaGUncyBEb2N1bWVudFJvb3QuCi0iIiIK
LQotCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBzeXMKLWltcG9ydCB0ZXN0LnRlc3RfZW5kdG9l
bmQKLWltcG9ydCB1bml0dGVzdAotCi0KLV9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCA9IDgwCi0K
LQotY2xhc3MgRW5kVG9FbmRUZXN0V2l0aEV4dGVybmFsU2VydmVyKHRlc3QudGVzdF9lbmR0b2Vu
ZC5FbmRUb0VuZFRlc3QpOgotICAgIHBhc3MKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctcCcsICctLXBvcnQnLCBkZXN0PSdwb3J0JywgdHlwZT0naW50JywKLSAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCwKLSAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdleHRlcm5hbCB0ZXN0IHNlcnZlciBwb3J0LicpCi0gICAgKG9wdGlv
bnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgdGVzdC50ZXN0X2VuZHRvZW5k
Ll91c2VfZXh0ZXJuYWxfc2VydmVyID0gVHJ1ZQotICAgIHRlc3QudGVzdF9lbmR0b2VuZC5fZXh0
ZXJuYWxfc2VydmVyX3BvcnQgPSBvcHRpb25zLnBvcnQKLQotICAgIHVuaXR0ZXN0Lm1haW4oYXJn
dj1bc3lzLmFyZ3ZbMF1dKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC9tb2NrLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9tb2NrLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YmZmY2FjNDhkYzQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L21vY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjEgKzAsMCBAQAotIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiTW9ja3MgZm9yIHRlc3RpbmcuCi0iIiIKLQotCi1pbXBvcnQgUXVldWUK
LWltcG9ydCB0aHJlYWRpbmcKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1Ci0KLQotY2xh
c3MgX01vY2tDb25uQmFzZShvYmplY3QpOgotICAgICIiIkJhc2UgY2xhc3Mgb2YgbW9ja3MgZm9y
IG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCi0KLSAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8g
Y2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGEgKG1vY2spIG1wX2Nvbm4uCi0gICAgIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQotICAg
ICAgICBzZWxmLnJlbW90ZV9hZGRyID0gJ2Zha2VfYWRkcmVzcycKLQotICAgIGRlZiB3cml0ZShz
ZWxmLCBkYXRhKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29u
bi53cml0ZS4iIiIKLQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhLmFwcGVuZChkYXRhKQotCi0g
ICAgZGVmIHdyaXR0ZW5fZGF0YShzZWxmKToKLSAgICAgICAgIiIiR2V0IGJ5dGVzIHdyaXR0ZW4g
dG8gdGhpcyBtb2NrLiIiIgotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHNlbGYuX3dyaXRlX2Rh
dGEpCi0KLQotY2xhc3MgTW9ja0Nvbm4oX01vY2tDb25uQmFzZSk6Ci0gICAgIiIiTW9jayBmb3Ig
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBz
cGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBhIChtb2NrKSBtcF9jb25uIGFzCi0gICAg
d2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVhZF9kYXRhKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBp
bnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0
aGF0IHNob3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCi0gICAgICAgICAg
ICBjYWxsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18o
c2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCi0gICAgICAgIHNlbGYu
X3JlYWRfcG9zID0gMAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYpOgotICAgICAgICAiIiJPdmVy
cmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgotCi0gICAgICAgIGlm
IHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgotICAgICAgICAgICAgcmV0
dXJuICcnCi0gICAgICAgIGVuZF9pbmRleCA9IHNlbGYuX3JlYWRfZGF0YS5maW5kKCdcbicsIHNl
bGYuX3JlYWRfcG9zKSArIDEKLSAgICAgICAgaWYgbm90IGVuZF9pbmRleDoKLSAgICAgICAgICAg
IGVuZF9pbmRleCA9IGxlbihzZWxmLl9yZWFkX2RhdGEpCi0gICAgICAgIHJldHVybiBzZWxmLl9y
ZWFkX3VwX3RvKGVuZF9pbmRleCkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAg
ICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIKLQotICAg
ICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2VsZi5fcmVhZF9kYXRhKToKLSAgICAgICAg
ICAgIHJldHVybiAnJwotICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0
YSksIHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91
cF90byhlbmRfaW5kZXgpCi0KLSAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToK
LSAgICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhd
Ci0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4Ci0gICAgICAgIHJldHVybiBsaW5l
Ci0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKLSAgICAiIiJCbG9j
a2luZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgotCi0gICAgVGhpcyBlbmFi
bGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1w
X2Nvbm4gYXMKLSAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KLSAg
ICBDYWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRl
cyBhdmFpbGFibGUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
IF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1
ZS5RdWV1ZSgpCi0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRl
IG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZGxpbmUuIiIiCi0gICAgICAgIGxpbmUgPSAn
JwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYyA9IHNlbGYuX3F1ZXVlLmdldCgp
Ci0gICAgICAgICAgICBsaW5lICs9IGMKLSAgICAgICAgICAgIGlmIGMgPT0gJ1xuJzoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAg
ICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgotCi0g
ICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKGxlbmd0aCk6Ci0g
ICAgICAgICAgICBkYXRhICs9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgIHJldHVybiBkYXRh
Ci0KLSAgICBkZWYgcHV0X2J5dGVzKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgIiIiUHV0IGJ5dGVz
IHRvIGJlIHJlYWQgZnJvbSB0aGlzIG1vY2suCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IGJ5dGVzOiBieXRlcyB0byBiZSByZWFkLgotICAgICAgICAiIiIKLQotICAgICAgICBmb3IgYnl0
ZSBpbiBieXRlczoKLSAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChieXRlKQotCi0KLWNsYXNz
IE1vY2tUYWJsZShkaWN0KToKLSAgICAiIiJNb2NrIHRhYmxlLgotCi0gICAgVGhpcyBtaW1pY3Mg
bW9kX3B5dGhvbiBtcF90YWJsZS4gTm90ZSB0aGF0IG9ubHkgdGhlIG1ldGhvZHMgdXNlZCBieQot
ICAgIHRlc3RzIGFyZSBvdmVycmlkZGVuLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNvcHlfZnJvbT17fSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoY29weV9mcm9tLCBkaWN0
KToKLSAgICAgICAgICAgIGNvcHlfZnJvbSA9IGNvcHlfZnJvbS5pdGVtcygpCi0gICAgICAgIGZv
ciBrZXksIHZhbHVlIGluIGNvcHlfZnJvbToKLSAgICAgICAgICAgIHNlbGYuX19zZXRpdGVtX18o
a2V5LCB2YWx1ZSkKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICBy
ZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX2dldGl0ZW1fXyhrZXkubG93ZXIoKSkKLQot
ICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgc3VwZXIoTW9j
a1RhYmxlLCBzZWxmKS5fX3NldGl0ZW1fXyhrZXkubG93ZXIoKSwgdmFsdWUpCi0KLSAgICBkZWYg
Z2V0KHNlbGYsIGtleSwgZGVmX3ZhbHVlPU5vbmUpOgotICAgICAgICByZXR1cm4gc3VwZXIoTW9j
a1RhYmxlLCBzZWxmKS5nZXQoa2V5Lmxvd2VyKCksIGRlZl92YWx1ZSkKLQotCi1jbGFzcyBNb2Nr
UmVxdWVzdChvYmplY3QpOgotICAgICIiIk1vY2sgcmVxdWVzdC4KLQotICAgIFRoaXMgbWltaWNz
IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1
cmk9Tm9uZSwgaGVhZGVyc19pbj17fSwgY29ubmVjdGlvbj1Ob25lLCBtZXRob2Q9J0dFVCcsCi0g
ICAgICAgICAgICAgICAgIHByb3RvY29sPSdIVFRQLzEuMScsIGlzX2h0dHBzPUZhbHNlKToKLSAg
ICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3VtZW50czoKLSAg
ICAgICAgICAgIHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgotICAgICAgICAgICAgaGVhZGVyc19p
bjogUmVxdWVzdCBoZWFkZXJzLgotICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB1
c2VkIGZvciB0aGUgcmVxdWVzdC4KLSAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRob2Qu
Ci0gICAgICAgICAgICBpc19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wu
Ci0KLSAgICAgICAgU2VlIHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRl
dGFpbHMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnVyaSA9IHVyaQotICAgICAgICBzZWxm
LnVucGFyc2VkX3VyaSA9IHVyaQotICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9u
Ci0gICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBw
cm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikK
LSAgICAgICAgIyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVz
dHMuICBUbyBhdm9pZCBuYW1lCi0gICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBz
KCksIGl0IGlzIG5hbWVkIGFzIHN1Y2guCi0gICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0
cHMKLSAgICAgICAgc2VsZi53c19zdHJlYW0gPSBTdHJlYW1IaXhpZTc1KHNlbGYsIFRydWUpCi0g
ICAgICAgIHNlbGYud3NfY2xvc2VfY29kZSA9IE5vbmUKLSAgICAgICAgc2VsZi53c19jbG9zZV9y
ZWFzb24gPSBOb25lCi0gICAgICAgIHNlbGYud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZ
QkkwMAotICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBGYWxzZQotCi0gICAgZGVmIGlzX2h0dHBz
KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBT
U0wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmlzX2h0dHBzXwotCi0KLWNsYXNzIE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9jayBmb3IgZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5kb19leHRyYV9oYW5kc2hh
a2VfY2FsbGVkID0gRmFsc2UKLQotICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29u
bl9jb250ZXh0KToKLSAgICAgICAgc2VsZi5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVkID0gVHJ1
ZQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAg
cGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9t
dXhfY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9tdXhfY2xpZW50X2Zvcl90
ZXN0aW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDU0MzVhOGNjMGUuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L211eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
Ci0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9u
LgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRl
c3RpbmcgbXV4IGV4dGVuc2lvbi4KLQotVGhpcyBjb2RlIHNob3VsZCBiZSBpbmRlcGVuZGVudCBm
cm9tIG1vZF9weXdlYnNvY2tldC4gU2VlIHRoZSBjb21tZW50IG9mCi1jbGllbnRfZm9yX3Rlc3Rp
bmcucHkuCi0KLU5PVEU6IFRoaXMgY29kZSBpcyBmYXIgZnJvbSByb2J1c3QgbGlrZSBjbGllbnRf
Zm9yX3Rlc3RpbmcucHkuCi0iIiIKLQotCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IGJhc2U2NAot
aW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFpbC5wYXJzZXIKLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBv
cnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgdGhyZWFkaW5nCi0KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLWZyb20gdGVzdCBpbXBvcnQgY2xpZW50X2Zvcl90ZXN0
aW5nCi0KLQotX0NPTlRST0xfQ0hBTk5FTF9JRCA9IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAx
Ci0KLV9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVNQT05TRSA9IDEKLV9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMKLV9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0
Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jazoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3Bjb2Rl
KToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUKLQotCi1kZWYgX3BhcnNlX2hhbmRzaGFr
ZV9yZXNwb25zZShyZXNwb25zZSk6Ci0gICAgc3RhdHVzX2xpbmUsIGhlYWRlcl9saW5lcyA9IHJl
c3BvbnNlLnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdvcmRzID0gc3RhdHVzX2xpbmUuc3BsaXQo
JyAnKQotICAgIGlmIGxlbih3b3JkcykgPCAzOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdC
YWQgU3RhdHVzLUxpbmUgc3ludGF4ICVyJyAlIHN0YXR1c19saW5lKQotICAgIFt2ZXJzaW9uLCBy
ZXNwb25zZV9jb2RlXSA9IHdvcmRzWzoyXQotICAgIGlmIHZlcnNpb24gIT0gJ0hUVFAvMS4xJzoK
LSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlc3BvbnNlIHZlcnNpb24gJXInICUgdmVy
c2lvbikKLQotICAgIGlmIHJlc3BvbnNlX2NvZGUgIT0gJzEwMSc6Ci0gICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ0JhZCByZXNwb25zZSBjb2RlICVyICcgJSByZXNwb25zZV9jb2RlKQotICAgIGhl
YWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKCkucGFyc2VzdHIoaGVhZGVyX2xpbmVzKQotICAg
IHJldHVybiBoZWFkZXJzCi0KLQotZGVmIF9wYXJzZV9jaGFubmVsX2lkKGRhdGEsIG9mZnNldD0w
KToKLSAgICBsZW5ndGggPSBsZW4oZGF0YSkKLSAgICByZW1haW5pbmcgPSBsZW5ndGggLSBvZmZz
ZXQKLQotICAgIGlmIHJlbWFpbmluZyA8PSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05v
IGNoYW5uZWwgaWQgZm91bmQnKQotCi0gICAgY2hhbm5lbF9pZCA9IG9yZChkYXRhW29mZnNldF0p
Ci0gICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAgaWYgY2hhbm5lbF9pZCAmIDB4ZTAgPT0g
MHhlMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgNDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBz
dHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFbb2Zmc2V0Om9mZnNldCs0XSlbMF0gJiAweDFmZmZmZmZmCi0gICAgICAgIGNoYW5uZWxfaWRf
bGVuZ3RoID0gNAotICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0gMHhjMDoKLSAgICAgICAg
aWYgcmVtYWluaW5nIDwgMzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBj
aGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgIGNoYW5uZWxfaWQgPSAoKChjaGFubmVsX2lkICYg
MHgxZikgPDwgMTYpICsKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QudW5wYWNrKCchSCcs
IGRhdGFbb2Zmc2V0KzE6b2Zmc2V0KzNdKVswXSkKLSAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGgg
PSAzCi0gICAgZWxpZiBjaGFubmVsX2lkICYgMHg4MCA9PSAweDgwOgotICAgICAgICBpZiByZW1h
aW5pbmcgPCAyOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGNoYW5uZWwg
aWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVjdC51bnBhY2soJyFIJywgZGF0
YVtvZmZzZXQ6b2Zmc2V0KzJdKVswXSAmIDB4M2ZmZgotICAgICAgICBjaGFubmVsX2lkX2xlbmd0
aCA9IDIKLQotICAgIHJldHVybiBjaGFubmVsX2lkLCBjaGFubmVsX2lkX2xlbmd0aAotCi0KLWRl
ZiBfcGFyc2VfbnVtYmVyKGRhdGEsIG9mZnNldD0wKToKLSAgICBmaXJzdF9ieXRlID0gb3JkKGRh
dGFbb2Zmc2V0XSkKLSAgICBpZiAoZmlyc3RfYnl0ZSAmIDB4ODApICE9IDA6Ci0gICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignVGhlIE1TQiBvZiBudW1iZXIgZmllbGQgbXVzdCBiZSB1bnNldCcpCi0g
ICAgZmlyc3RfYnl0ZSA9IGZpcnN0X2J5dGUgJiAweDdmCi0gICAgaWYgZmlyc3RfYnl0ZSA9PSAx
Mjc6Ci0gICAgICAgIGlmIG9mZnNldCArIDkgPiBsZW4oZGF0YSk6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBh
Y2soJyFRJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrOV0pWzBdLCA5Ci0gICAgaWYgZmlyc3RfYnl0
ZSA9PSAxMjY6Ci0gICAgICAgIGlmIG9mZnNldCArIDMgPiBsZW4oZGF0YSk6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAgICAgICAgcmV0dXJuIHN0cnVj
dC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrM10pWzBdLCAzCi0gICAgcmV0dXJu
IGZpcnN0X2J5dGUsIDEKLQotCi1kZWYgX3BhcnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIG9m
ZnNldD0wKToKLSAgICBzaXplLCBhZHZhbmNlID0gX3BhcnNlX251bWJlcihkYXRhLCBvZmZzZXQp
Ci0gICAgc3RhcnRfcG9zaXRpb24gPSBvZmZzZXQgKyBhZHZhbmNlCi0gICAgZW5kX3Bvc2l0aW9u
ID0gc3RhcnRfcG9zaXRpb24gKyBzaXplCi0gICAgaWYgbGVuKGRhdGEpIDwgZW5kX3Bvc2l0aW9u
OgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgc2l6ZSBvZiBjb250cm9sIGJsb2Nr
ICglZCA8ICVkKScgJSAoCi0gICAgICAgICAgICAgICAgbGVuKGRhdGEpLCBlbmRfcG9zaXRpb24p
KQotICAgIHJldHVybiBkYXRhW3N0YXJ0X3Bvc2l0aW9uOmVuZF9wb3NpdGlvbl0sIHNpemUgKyBh
ZHZhbmNlCi0KLQotZGVmIF9wYXJzZV9jb250cm9sX2Jsb2NrcyhkYXRhKToKLSAgICBibG9ja3Mg
PSBbXQotICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAgIHBvcyA9IDAKLQotICAgIHdoaWxlIHBv
cyA8IGxlbmd0aDoKLSAgICAgICAgZmlyc3RfYnl0ZSA9IG9yZChkYXRhW3Bvc10pCi0gICAgICAg
IHBvcyArPSAxCi0gICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAg
ICAgIGJsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGUpCi0KLSAgICAgICAgIyBUT0RPKGJhc2hp
KTogU3VwcG9ydCBtb3JlIG9wY29kZQotICAgICAgICBpZiBvcGNvZGUgPT0gX01VWF9PUENPREVf
QUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICBibG9jay5lbmNvZGUgPSBmaXJzdF9i
eXRlICYgMwotICAgICAgICAgICAgYmxvY2sucmVqZWN0ZWQgPSAoZmlyc3RfYnl0ZSA+PiA0KSAm
IDEKLQotICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lk
KGRhdGEsIHBvcykKLSAgICAgICAgICAgIGJsb2NrLmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0g
ICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZSwgYWR2YW5jZSA9IF9wYXJzZV9zaXplX2FuZF9jb250ZW50cyhkYXRhLCBwb3MpCi0gICAgICAg
ICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSA9IGVuY29kZWRfaGFuZHNoYWtlCi0gICAgICAg
ICAgICBwb3MgKz0gYWR2YW5jZQotICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAg
ICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVMOgotICAgICAgICAg
ICAgYmxvY2subXV4X2Vycm9yID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0KLSAgICAgICAgICAg
IGNoYW5uZWxfaWQsIGFkdmFuY2UgPSBfcGFyc2VfY2hhbm5lbF9pZChkYXRhLCBwb3MpCi0gICAg
ICAgICAgICBibG9jay5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICAgICAgcG9zICs9
IGFkdmFuY2UKLQotICAgICAgICAgICAgcmVhc29uLCBhZHZhbmNlID0gX3BhcnNlX3NpemVfYW5k
X2NvbnRlbnRzKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGlmIGxlbihyZWFzb24pID09IDA6Ci0g
ICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0gTm9uZQotICAgICAgICAgICAgICAgIGJs
b2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgICAgICBlbGlmIGxlbihyZWFzb24pID49IDI6
Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0gc3RydWN0LnVucGFjaygnIUgnLCBy
ZWFzb25bOjJdKVswXQotICAgICAgICAgICAgICAgIGJsb2NrLmRyb3BfbWVzc2FnZSA9IHJlYXNv
blsyOl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdJbnZhbGlkIERyb3BDaGFubmVsJykKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAg
ICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2NrKQotICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVY
X09QQ09ERV9GTE9XX0NPTlRST0w6Ci0gICAgICAgICAgICBjaGFubmVsX2lkLCBhZHZhbmNlID0g
X3BhcnNlX2NoYW5uZWxfaWQoZGF0YSwgcG9zKQotICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9p
ZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBz
ZW5kX3F1b3RhLCBhZHZhbmNlID0gX3BhcnNlX251bWJlcihkYXRhLCBwb3MpCi0gICAgICAgICAg
ICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAgICAgcG9zICs9IGFkdmFu
Y2UKLSAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxvY2spCi0gICAgICAgIGVsaWYgb3Bjb2Rl
ID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAgICBmYWxsYmFjayA9
IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgICAgICBzbG90cywgYWR2YW5jZSA9IF9wYXJzZV9udW1i
ZXIoZGF0YSwgcG9zKQotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIHNl
bmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRhdGEsIHBvcykKLSAgICAgICAgICAg
IHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBpZiBmYWxsYmFjayA9PSAxIGFuZCAoc2xvdHMg
IT0gMCBvciBzZW5kX3F1b3RhICE9IDApOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignc2xvdHMgYW5kIHNlbmRfcXVvdGEgbXVzdCBiZSB6ZXJvIGlmIEYgYml0ICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIHNldCcpCi0gICAgICAgICAgICBibG9jay5mYWxs
YmFjayA9IGZhbGxiYWNrCi0gICAgICAgICAgICBibG9jay5zbG90cyA9IHNsb3RzCi0gICAgICAg
ICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAgICAgYmxvY2tzLmFw
cGVuZChibG9jaykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgbXV4IG9wY29kZSAlZCByZWNlaXZlZCcgJSBv
cGNvZGUpCi0KLSAgICByZXR1cm4gYmxvY2tzCi0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChj
aGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVsX2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQot
Ci0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogNzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVs
X2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0
LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5lbF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAq
KiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIoMHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAg
ICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZm
ZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5w
YWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFubmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJv
cignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFyZ2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2Vu
Y29kZV9udW1iZXIobnVtYmVyKToKLSAgICBpZiBudW1iZXIgPD0gMTI1OgotICAgICAgICByZXR1
cm4gY2hyKG51bWJlcikKLSAgICBlbGlmIG51bWJlciA8ICgxIDw8IDE2KToKLSAgICAgICAgcmV0
dXJuIGNocigweDdlKSArIHN0cnVjdC5wYWNrKCchSCcsIG51bWJlcikKLSAgICBlbGlmIG51bWJl
ciA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0dXJuIGNocigweDdmKSArIHN0cnVjdC5wYWNrKCch
UScsIG51bWJlcikKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQg
bnVtYmVyJykKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0KGNoYW5uZWxfaWQs
IGVuY29kZWRfaGFuZHNoYWtlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNv
ZGluZz0wKToKLSAgICBsZW5ndGggPSBsZW4oZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgaGFuZHNo
YWtlX2xlbmd0aCA9IF9lbmNvZGVfbnVtYmVyKGxlbmd0aCkKLQotICAgIGZpcnN0X2J5dGUgPSAo
X01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA8PCA1KSB8IGVuY29kaW5nCi0gICAgcmV0
dXJuIChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwot
ICAgICAgICAgICAgaGFuZHNoYWtlX2xlbmd0aCArIGVuY29kZWRfaGFuZHNoYWtlKQotCi0KLWRl
ZiBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0g
ICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9GTE9XX0NPTlRST0wgPDwgNSkKLSAgICByZXR1
cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCi0g
ICAgICAgICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5pc2hlZF9xdW90YSkpCi0KLQotY2xhc3Mg
X011eFJlYWRlclRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJNdXggcmVhZGVyIHRo
cmVhZC4KLQotICAgIFJlYWRzIGZyYW1lcyBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlIG11eCBjbGll
bnQuIFRoaXMgdGhyZWFkIGFjY2Vzc2VzCi0gICAgcHJpdmF0ZSBmdW5jdGlvbnMvdmFyaWFibGVz
IG9mIHRoZSBtdXggY2xpZW50LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG11
eCk6Ci0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2Vs
Zi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5fbXV4ID0gbXV4Ci0gICAgICAgIHNlbGYu
X3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLQotICAgIGRlZiBfcmVjZWl2ZV9tZXNzYWdlKHNlbGYp
OgotICAgICAgICBmaXJzdF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHBlbmRpbmdfcGF5bG9hZCA9
IFtdCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAgICAgICAg
IGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCA9ICgKLSAgICAg
ICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcucmVhZF9mcmFtZV9oZWFkZXIoc2VsZi5fbXV4
Ll9zb2NrZXQpKQotCi0gICAgICAgICAgICBpZiBub3QgZmlyc3Rfb3Bjb2RlOgotICAgICAgICAg
ICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2ZWQgYSB0ZXh0IG1lc3NhZ2Ug
b24gcGh5c2ljYWwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nvbm5l
Y3Rpb24nKQotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3Rpbmcu
T1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdSZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUgYnV0ICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdmcmFnbWVudGF0aW9uIHdhcyBub3Qgc3RhcnRlZCcpCi0gICAg
ICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFS
WSBvcgotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9QT05HIG9yCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1BPTkcgb3IKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID09IGNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0UpOgotICAgICAgICAgICAgICAgICAgICBmaXJzdF9v
cGNvZGUgPSBvcGNvZGUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVkIGFuIHVuZGVmaW5lZCBvcGNvZGUgZnJhbWU6ICVk
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUpCi0KLSAgICAg
ICAgICAgIGVsaWYgb3Bjb2RlICE9IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ09OVElOVUFU
SU9OOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2ZWQgYSBuZXcgb3Bj
b2RlIGJlZm9yZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGlu
ZyBmcmFnbWVudGF0aW9uJykKLQotICAgICAgICAgICAgcGF5bG9hZCA9IGNsaWVudF9mb3JfdGVz
dGluZy5yZWNlaXZlX2J5dGVzKAotICAgICAgICAgICAgICAgIHNlbGYuX211eC5fc29ja2V0LCBw
YXlsb2FkX2xlbmd0aCkKLQotICAgICAgICAgICAgaWYgc2VsZi5fbXV4Ll9pbmNvbWluZ19mcmFt
ZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX211
eC5faW5jb21pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihwYXlsb2FkKQotCi0gICAgICAgICAgICBw
ZW5kaW5nX3BheWxvYWQuYXBwZW5kKHBheWxvYWQpCi0KLSAgICAgICAgICAgIGlmIGZpbjoKLSAg
ICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIHNlbGYuX3N0b3BfcmVxdWVzdGVkOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLQotICAgICAgICBtZXNzYWdlID0gJycuam9p
bihwZW5kaW5nX3BheWxvYWQpCi0gICAgICAgIHJldHVybiBmaXJzdF9vcGNvZGUsIG1lc3NhZ2UK
LQotICAgIGRlZiByZXF1ZXN0X3N0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVz
dGVkID0gVHJ1ZQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgICAgICMgb3Bj
b2RlIGlzIE9QQ09ERV9CSU5BUlkgb3IgY29udHJvbCBvcGNvZGVzIHdoZW4gYSBtZXNzYWdlCi0g
ICAgICAgICAgICAgICAgIyBpcyBzdWNjZXNmdWxseSByZWNlaXZlZC4KLSAgICAgICAgICAgICAg
ICBvcGNvZGUsIG1lc3NhZ2UgPSBzZWxmLl9yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAg
ICAgIGlmIG5vdCBvcGNvZGU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAg
ICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFSWToKLSAg
ICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lk
KG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX211eC5fZGlzcGF0Y2hfZnJhbWUo
Y2hhbm5lbF9pZCwgbWVzc2FnZVthZHZhbmNlOl0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9wcm9jZXNzX2NvbnRyb2xfbWVzc2FnZShvcGNv
ZGUsIG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9tdXguX25v
dGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xhc3MgX0lubmVyRnJhbWUob2JqZWN0KToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWQp
OgotICAgICAgICBzZWxmLmZpbiA9IGZpbgotICAgICAgICBzZWxmLnJzdjEgPSByc3YxCi0gICAg
ICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAgICAgc2VsZi5yc3YzID0gcnN2MwotICAgICAgICBz
ZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCi0KLQot
Y2xhc3MgX0xvZ2ljYWxDaGFubmVsRGF0YShvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKLSAgICAgICAgc2VsZi5xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc2VsZi5zZW5k
X3F1b3RhID0gMAotICAgICAgICBzZWxmLnJlY2VpdmVfcXVvdGEgPSAwCi0KLQotY2xhc3MgTXV4
Q2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0IG11eCBjbGllbnQuCi0KLSAgICBOb3Rl
IHRoYXQgdGhpcyBjbGFzcyBpcyBOT1QgdGhyZWFkLXNhZmUuIERvIG5vdCBhY2Nlc3MgYW4gaW5z
dGFuY2Ugb2YgdGhpcwotICAgIGNsYXNzIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhdCBhIHNhbWUg
dGltZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAg
c2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fb3B0aW9ucy5lbmFibGVfbXV4
KCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0gTm9uZQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBO
b25lCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IGNsaWVudF9mb3JfdGVzdGluZy5XZWJTb2Nr
ZXRIYW5kc2hha2Uoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVf
ZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25l
Ci0KLSAgICAgICAgc2VsZi5faXNfYWN0aXZlID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVhZF90
aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbiA9IHRo
cmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2NrcyA9IFtdCi0g
ICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCi0gICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigp
OwotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzID0ge30KLSAgICAgICAgc2VsZi5fdGlt
ZW91dCA9IDIKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudCA9
IE5vbmUKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlID0g
Tm9uZQotCi0gICAgZGVmIF9wYXJzZV9pbm5lcl9mcmFtZShzZWxmLCBkYXRhKToKLSAgICAgICAg
aWYgbGVuKGRhdGEpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQg
ZW5jYXBzdWxhdGVkIGZyYW1lIHJlY2VpdmVkJykKLQotICAgICAgICBmaXJzdF9ieXRlID0gb3Jk
KGRhdGFbMF0pCi0gICAgICAgIGZpbiA9IChmaXJzdF9ieXRlIDw8IDcpICYgMQotICAgICAgICBy
c3YxID0gKGZpcnN0X2J5dGUgPDwgNikgJiAxCi0gICAgICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA8
PCA1KSAmIDEKLSAgICAgICAgcnN2MyA9IChmaXJzdF9ieXRlIDw8IDQpICYgMQotICAgICAgICBv
cGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0KLSAgICAgICAgaWYgc2VsZi5fb3V0Z29pbmdfZnJh
bWVfZmlsdGVyOgotICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX291dGdvaW5nX2ZyYW1lX2Zp
bHRlci5maWx0ZXIoCi0gICAgICAgICAgICAgICAgZGF0YVsxOl0pCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBwYXlsb2FkID0gZGF0YVsxOl0KLQotICAgICAgICByZXR1cm4gX0lubmVyRnJh
bWUoZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWQpCi0KLSAgICBkZWYgX3By
b2Nlc3NfbXV4X2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICBmb3IgYmxvY2sgaW4gc2Vs
Zi5fY29udHJvbF9ibG9ja3M6Ci0gICAgICAgICAgICBpZiBibG9jay5vcGNvZGUgPT0gX01VWF9P
UENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICAgICAgIyBBZGRDaGFubmVs
UmVzcG9uc2Ugd2lsbCBiZSBoYW5kbGVkIGluIGFkZF9jaGFubmVsKCkuCi0gICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgYmxvY2sub3Bjb2RlID09IF9NVVhfT1BDT0RF
X0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAg
ICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
OgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGZsb3cg
Y29udHJvbCByZWNlaXZlZCBmb3IgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdjaGFubmVsIGlkICVkJyAlIGJsb2NrLmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbYmxvY2suY2hhbm5lbF9pZF0uc2VuZF9xdW90
YSArPSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhKQotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5ub3RpZnkoKQot
ICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotICAgICAgICAgICAgZWxpZiBibG9jay5v
cGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAgICAgICAgICAgICBz
ZWxmLl9jaGFubmVsX3Nsb3RzLmV4dGVuZChbYmxvY2suc2VuZF9xdW90YV0gKiBibG9jay5zbG90
cykKLQotICAgIGRlZiBfZGlzcGF0Y2hfZnJhbWUoc2VsZiwgY2hhbm5lbF9pZCwgcGF5bG9hZCk6
Ci0gICAgICAgIGlmIGNoYW5uZWxfaWQgPT0gX0NPTlRST0xfQ0hBTk5FTF9JRDoKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3MgKz0gX3BhcnNl
X2NvbnRyb2xfYmxvY2tzKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19t
dXhfY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tz
X2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfaWQg
aW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdSZWNlaXZlZCBsb2dpY2FsIGZyYW1lIG9uIGNoYW5uZWwgaWQgJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLCB3aGljaCBpcyBub3QgZXN0YWJsaXNoZWQn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQpCi0KLSAg
ICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYuX3BhcnNlX2lubmVyX2ZyYW1lKHBheWxv
YWQpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5y
ZWNlaXZlX3F1b3RhIC09ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihpbm5lcl9mcmFt
ZS5wYXlsb2FkKSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2No
YW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgPCAwOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ1RoZSBzZXJ2ZXIgdmlvbGF0ZXMgcXVvdGEgb24gJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2NoYW5uZWwgaWQgJWQnICUgY2hhbm5lbF9pZCkKLSAgICAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19j
b25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2No
YW5uZWxfaWRdLnF1ZXVlLnB1dChpbm5lcl9mcmFtZSkKLQotICAgIGRlZiBfcHJvY2Vzc19jb250
cm9sX21lc3NhZ2Uoc2VsZiwgb3Bjb2RlLCBtZXNzYWdlKToKLSAgICAgICAgIyBQaW5nL1Bvbmcg
YXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9j
bG9zZV9tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICAgICAgaWYgc2VsZi5faXNfYWN0aXZlOgot
ICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKAotICAgICAgICAgICAgICAg
ICAgICBjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNv
bj0nJykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3RocmVhZC5yZXF1ZXN0X3N0b3AoKQot
Ci0gICAgICAgICAgICBpZiBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50Ogot
ICAgICAgICAgICAgICAgIHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQuc2V0
KCkKLQotICAgIGRlZiBfbm90aWZ5X3JlYWRlcl9kb25lKHNlbGYpOgotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlYWQgdGhyZWFkIHRlcm1pbmF0ZWQuJykKLSAgICAgICAgc2VsZi5jbG9z
ZV9zb2NrZXQoKQotCi0gICAgZGVmIF9hc3NlcnRfY2hhbm5lbF9zbG90X2F2YWlsYWJsZShzZWxm
KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3NfY29uZGl0
aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2NoYW5uZWxfc2xvdHMpID09
IDA6Ci0gICAgICAgICAgICAgICAgIyBXYWl0IG9uY2UKLSAgICAgICAgICAgICAgICBzZWxmLl9j
b250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24u
cmVsZWFzZSgpCi0KLSAgICAgICAgaWYgbGVuKHNlbGYuX2NoYW5uZWxfc2xvdHMpID09IDA6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZhaWxlZCB0byByZWNlaXZlIE5ld0NoYW5uZWxT
bG90JykKLQotICAgIGRlZiBfYXNzZXJ0X3NlbmRfcXVvdGFfYXZhaWxhYmxlKHNlbGYsIGNoYW5u
ZWxfaWQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9PSAwOgotICAgICAgICAgICAgICAgICMgV2FpdCBv
bmNlCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ud2Fp
dCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBpZiBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnNlbmRfcXVvdGEgPT0gMDoKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJlY2VpdmUgRmxvd0NvbnRyb2wgZm9y
IGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lk
KQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuX3NvY2tldCA9IGNsaWVu
dF9mb3JfdGVzdGluZy5jb25uZWN0X3NvY2tldF93aXRoX3JldHJ5KAotICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNvY2tldF90aW1l
b3V0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykKLQotICAgICAgICBz
ZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNlbGYuX3NvY2tldCkKLSAgICAgICAgc2VsZi5fc3Ry
ZWFtID0gY2xpZW50X2Zvcl90ZXN0aW5nLldlYlNvY2tldFN0cmVhbSgKLSAgICAgICAgICAgIHNl
bGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQotCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hh
bm5lbHNbX0RFRkFVTFRfQ0hBTk5FTF9JRF0gPSBfTG9naWNhbENoYW5uZWxEYXRhKCkKLQotICAg
ICAgICBzZWxmLl9yZWFkX3RocmVhZCA9IF9NdXhSZWFkZXJUaHJlYWQoc2VsZikKLSAgICAgICAg
c2VsZi5fcmVhZF90aHJlYWQuc3RhcnQoKQotCi0gICAgICAgIHNlbGYuX2Fzc2VydF9jaGFubmVs
X3Nsb3RfYXZhaWxhYmxlKCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3NlbmRfcXVvdGFfYXZhaWxh
YmxlKF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0KLSAgICAgICAgc2VsZi5faXNfYWN0aXZlID0gVHJ1
ZQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpCi0K
LSAgICBkZWYgYWRkX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCwgb3B0aW9ucyk6Ci0gICAgICAg
IGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011
eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDaGFubmVs
IGlkICVkIGFscmVhZHkgZXhpc3RzJyAlIGNoYW5uZWxfaWQpCi0KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYuX2NoYW5uZWxfc2xvdHMucG9wbGVmdCgpCi0gICAg
ICAgIGV4Y2VwdCBJbmRleEVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdO
byBjaGFubmVsIHNsb3RzOiAlcicgJSBlKQotCi0gICAgICAgICMgQ3JlYXRlIEFkZENoYW5uZWwg
cmVxdWVzdAotICAgICAgICByZXF1ZXN0X2xpbmUgPSAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSBv
cHRpb25zLnJlc291cmNlCi0gICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgIGlmIG9wdGlvbnMu
c2VydmVyX3BvcnQgPT0gY2xpZW50X2Zvcl90ZXN0aW5nLkRFRkFVTFRfUE9SVDoKLSAgICAgICAg
ICAgIGZpZWxkcy5hcHBlbmQoJ0hvc3Q6ICVzXHJcbicgJSBvcHRpb25zLnNlcnZlcl9ob3N0Lmxv
d2VyKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCdIb3N0OiAl
czolZFxyXG4nICUgKG9wdGlvbnMuc2VydmVyX2hvc3QubG93ZXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCkpCi0g
ICAgICAgIGZpZWxkcy5hcHBlbmQoJ09yaWdpbjogJXNcclxuJyAlIG9wdGlvbnMub3JpZ2luLmxv
d2VyKCkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJykK
LQotICAgICAgICBpZiBsZW4ob3B0aW9ucy5leHRlbnNpb25zKSA+IDA6Ci0gICAgICAgICAgICBm
aWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6ICVzXHJcbicgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4ob3B0aW9ucy5leHRlbnNpb25zKSkKLQotICAg
ICAgICBoYW5kc2hha2UgPSByZXF1ZXN0X2xpbmUgKyAnJy5qb2luKGZpZWxkcykgKyAnXHJcbicK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dCgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGhhbmRzaGFrZSkKLSAgICAgICAgcGF5bG9hZCA9
IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJPTF9DSEFOTkVMX0lEKSArIGFkZF9jaGFubmVsX3Jl
cXVlc3QKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KHBheWxvYWQpCi0KLSAgICAg
ICAgIyBXYWl0IEFkZENoYW5uZWxSZXNwb25zZQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1dhaXRpbmcgQWRkQ2hhbm5lbFJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdC4uLicpCi0gICAgICAg
IHJlc3BvbnNlID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9s
X2Jsb2Nrc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAg
ICAgICAgICAgICAgIGZvciBibG9jayBpbiBzZWxmLl9jb250cm9sX2Jsb2NrczoKLSAgICAgICAg
ICAgICAgICAgICAgaWYgYmxvY2sub3Bjb2RlICE9IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JF
U1BPTlNFOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAg
ICAgICAgaWYgYmxvY2suY2hhbm5lbF9pZCA9PSBjaGFubmVsX2lkOgotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UgPSBibG9jawotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y29udHJvbF9ibG9ja3MucmVtb3ZlKHJlc3BvbnNlKQotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgICAgICBpZiByZXNwb25zZToKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2Fp
dChzZWxmLl90aW1lb3V0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6
Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQWRkQ2hhbm5lbFJlcXVlc3Qg
dGltZWQgb3V0JykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xf
YmxvY2tzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAjIFZhbGlkYXRlIEFkZENoYW5u
ZWxSZXNwb25zZQotICAgICAgICBpZiByZXNwb25zZS5yZWplY3RlZDoKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignVGhlIHNlcnZlciByZWplY3RlZCBBZGRDaGFubmVsUmVxdWVzdCcpCi0K
LSAgICAgICAgZmllbGRzID0gX3BhcnNlX2hhbmRzaGFrZV9yZXNwb25zZShyZXNwb25zZS5lbmNv
ZGVkX2hhbmRzaGFrZSkKLQotICAgICAgICAjIFNob3VsZCB3ZSByZWplY3Qgd2hlbiBVcGdyYWRl
LCBDb25uZWN0aW9uLCBvciBTZWMtV2ViU29ja2V0LUFjY2VwdAotICAgICAgICAjIGhlYWRlcnMg
ZXhpc3Q/Ci0KLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWly
ZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0gPSBfTG9naWNh
bENoYW5uZWxEYXRhKCkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lk
XS5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0xvZ2lj
YWwgY2hhbm5lbCAlZCBlc3RhYmxpc2hlZCcgJSBjaGFubmVsX2lkKQotCi0gICAgZGVmIF9jaGVj
a19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICBp
ZiBub3Qgc2VsZi5faXNfYWN0aXZlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdNdXgg
Y2xpZW50IGlzIG5vdCBhY3RpdmUnKQotCi0gICAgICAgIGlmIG5vdCBjaGFubmVsX2lkIGluIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0xvZ2lj
YWwgY2hhbm5lbCAlZCBpcyBub3QgZXN0YWJsaXNoZWQuJykKLQotICAgIGRlZiBkcm9wX2NoYW5u
ZWwoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgICMgVE9ETyhiYXNoaSk6IEltcGxlbWVudAot
ICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2VuZF9mbG93X2NvbnRyb2woc2VsZiwgY2hhbm5lbF9p
ZCwgcmVwbGVuaXNoZWRfcXVvdGEpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5u
ZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVf
Zmxvd19jb250cm9sKGNoYW5uZWxfaWQsIHJlcGxlbmlzaGVkX3F1b3RhKQotICAgICAgICBwYXls
b2FkID0gX2VuY29kZV9jaGFubmVsX2lkKF9DT05UUk9MX0NIQU5ORUxfSUQpICsgZmxvd19jb250
cm9sCi0gICAgICAgICMgUmVwbGVuaXNoIHJlY2VpdmUgcXVvdGEKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEg
Kz0gKAotICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhKQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgp
Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFyeShwYXlsb2FkKQotCi0gICAgZGVmIHNl
bmRfbWVzc2FnZShzZWxmLCBjaGFubmVsX2lkLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZh
bHNlKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChjaGFu
bmVsX2lkKQotCi0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUgPSAo
ZW5kIDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9CSU5BUlkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUgPSAoZW5kIDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0
aW5nLk9QQ09ERV9URVhUCi0gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0
Zi04JykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA8IGxlbihtZXNzYWdlKToKLSAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ1NlbmQgcXVvdGEgdmlvbGF0aW9uOiAlZCA8ICVkJyAlICgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0u
c2VuZF9xdW90YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihtZXNzYWdlKSkpCi0KLSAg
ICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSAt
PSBsZW4obWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotICAgICAgICBwYXlsb2FkID0gX2VuY29k
ZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsgY2hyKGZpcnN0X2J5dGUpICsgbWVzc2FnZQotICAg
ICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5bG9hZCkKLQotICAgIGRlZiBhc3NlcnRf
cmVjZWl2ZShzZWxmLCBjaGFubmVsX2lkLCBwYXlsb2FkLCBiaW5hcnk9RmFsc2UpOgotICAgICAg
ICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgaW5uZXJfZnJhbWUgPSBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLmdldCgKLSAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYu
X3RpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eSwgZToKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2VpdmUgbWVzc2FnZSBmcm9tIGNoYW5uZWwgaWQgJWQn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lkKQotCi0gICAgICAgIGlm
IGJpbmFyeToKLSAgICAgICAgICAgIG9wY29kZSA9IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
QklOQVJZCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUgPSBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1RFWFQKLQotICAgICAgICBpZiBpbm5lcl9mcmFtZS5vcGNvZGUgIT0gb3Bj
b2RlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIG9wY29kZSByZWNl
aXZlZCAoJXIgIT0gJXIpJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVk
X29wY29kZSwgaW5uZXJfZnJhbWUub3Bjb2RlKSkKLQotICAgICAgICBpZiBpbm5lcl9mcmFtZS5w
YXlsb2FkICE9IHBheWxvYWQ6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgcGF5bG9hZCByZWNlaXZlZCcpCi0KLSAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjaGFubmVs
X2lkLCBjb2RlPU5vbmUsIHJlYXNvbj0nJyk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxf
Y2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLQotICAgICAgICBpZiBjb2RlIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgcmVhc29u
LmVuY29kZSgndXRmLTgnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYm9keSA9ICcnCi0K
LSAgICAgICAgZmlyc3RfYnl0ZSA9ICgxIDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9DTE9TRQotICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQp
ICsgY2hyKGZpcnN0X2J5dGUpICsgYm9keQotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5h
cnkocGF5bG9hZCkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjaGFubmVs
X2lkKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChjaGFu
bmVsX2lkKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5xdWV1ZS5nZXQoCi0gICAgICAgICAgICAgICAg
dGltZW91dD1zZWxmLl90aW1lb3V0KQotICAgICAgICBleGNlcHQgUXVldWUuRW1wdHksIGU6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nhbm5vdCByZWNlaXZlIG1lc3NhZ2UgZnJvbSBj
aGFubmVsIGlkICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCkK
LSAgICAgICAgaWYgaW5uZXJfZnJhbWUub3Bjb2RlICE9IGNsaWVudF9mb3JfdGVzdGluZy5PUENP
REVfQ0xPU0U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBj
bG9zZSBmcmFtZScpCi0KLSAgICBkZWYgc2VuZF9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlKHNl
bGYsIGNvZGU9Tm9uZSwgcmVhc29uPScnKToKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVj
dGlvbl9jbG9zZV9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgIHNlbGYuX3N0cmVh
bS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLQotICAgICMgVGhpcyBtZXRob2QgY2FuIGJlIHVz
ZWQgb25seSBhZnRlciBjYWxsaW5nCi0gICAgIyBzZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xv
c2UoKS4KLSAgICBkZWYgYXNzZXJ0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgK
LSAgICAgICAgc2VsZiwgY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX05PUk1BTF9DTE9T
VVJFLCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3Nl
X2V2ZW50LndhaXQodGltZW91dD1zZWxmLl90aW1lb3V0KQotICAgICAgICBpZiAobm90IHNlbGYu
X3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQuaXNTZXQoKSBvcgotICAgICAgICAgICAg
bm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfbWVzc2FnZSk6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0K
LSAgICBkZWYgY2xvc2Vfc29ja2V0KHNlbGYpOgotICAgICAgICBzZWxmLl9pc19hY3RpdmUgPSBG
YWxzZQotICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC9ydW5fYWxsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9ydW5fYWxsLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4MGE1ZDg3ZDgzODIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3J1bl9hbGwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlJ1biBhbGwgdGVzdHMg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotCi1UaGlzIHN1aXRlIGlzIGV4cGVjdGVkIHRvIGJlIHJ1
biB1bmRlciBweXdlYnNvY2tldCdzIHNyYyBkaXJlY3RvcnksIGkuZS4gdGhlCi1kaXJlY3Rvcnkg
Y29udGFpbmluZyBtb2RfcHl3ZWJzb2NrZXQsIHRlc3QsIGV0Yy4KLQotVG8gY2hhbmdlIGxvZ2dp
biBsZXZlbCwgcGxlYXNlIHNwZWNpZnkgLS1sb2ctbGV2ZWwgb3B0aW9uLgotICAgIHB5dGhvbiB0
ZXN0L3J1bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVnCi0KLVRvIHBhc3MgYW55IG9wdGlvbiB0
byB1bml0dGVzdCBtb2R1bGUsIHBsZWFzZSBzcGVjaWZ5IG9wdGlvbnMgYWZ0ZXIgJy0tJy4gRm9y
Ci1leGFtcGxlLCBydW4gdGhpcyBmb3IgbWFraW5nIHRoZSB0ZXN0IHJ1bm5lciB2ZXJib3NlLgot
ICAgIHB5dGhvbiB0ZXN0L3J1bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVnIC0tIC12Ci0iIiIK
LQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBy
ZQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX1RFU1RfTU9EVUxFX1BBVFRFUk4g
PSByZS5jb21waWxlKHInXih0ZXN0Xy4rKVwucHkkJykKLQotCi1kZWYgX2xpc3RfdGVzdF9tb2R1
bGVzKGRpcmVjdG9yeSk6Ci0gICAgbW9kdWxlX25hbWVzID0gW10KLSAgICBmb3IgZmlsZW5hbWUg
aW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgotICAgICAgICBtYXRjaCA9IF9URVNUX01PRFVMRV9Q
QVRURVJOLnNlYXJjaChmaWxlbmFtZSkKLSAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICBt
b2R1bGVfbmFtZXMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQotICAgIHJldHVybiBtb2R1bGVfbmFt
ZXMKLQotCi1kZWYgX3N1aXRlKCk6Ci0gICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigp
Ci0gICAgcmV0dXJuIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoCi0gICAgICAgICAgICBfbGlz
dF90ZXN0X21vZHVsZXMob3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAn
LicpKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHBhcnNlciA9IG9wdHBh
cnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVsJywg
Jy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBj
aG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddKQotICAgIG9wdGlvbnMsIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKLSAgICAg
ICAgICAgIGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVsLnVwcGVy
KCkpLAotICAgICAgICAgICAgZm9ybWF0PSclKGxldmVsbmFtZSlzICUoYXNjdGltZSlzICcKLSAg
ICAgICAgICAgICAgICAgICAnJShmaWxlbmFtZSlzOiUobGluZW5vKWRdICcKLSAgICAgICAgICAg
ICAgICAgICAnJShtZXNzYWdlKXMnLAotICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06JVMnKQot
ICAgIHVuaXR0ZXN0Lm1haW4oZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5hcmd2WzBd
XSArIGFyZ3MpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3NldF9zeXNfcGF0aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2M2ZGI5ZWE0ZDMuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3NldF9zeXNfcGF0aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvbmZpZ3VyYXRpb24gZm9yIHRlc3Rpbmcu
Ci0KLVRlc3QgZmlsZXMgc2hvdWxkIGltcG9ydCB0aGlzIG1vZHVsZSBiZWZvcmUgbW9kX3B5d2Vi
c29ja2V0LgotIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLQotIyBBZGQgdGhlIHBh
cmVudCBkaXJlY3RvcnkgdG8gc3lzLnBhdGggdG8gZW5hYmxlIGltcG9ydGluZyBtb2RfcHl3ZWJz
b2NrZXQuCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19m
aWxlX18pWzBdLCAnLi4nKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdF9kaXNwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9kaXNwYXRj
aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNhM2Q0ZjNhZTFkLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMjg4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiVGVzdHMgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MK
LWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0
aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtl
Ci1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1fVEVTVF9IQU5ETEVSU19ESVIgPSBvcy5wYXRo
LmpvaW4oCi0gICAgICAgIG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnLCAn
aGFuZGxlcnMnKQotCi1fVEVTVF9IQU5ETEVSU19TVUJfRElSID0gb3MucGF0aC5qb2luKF9URVNU
X0hBTkRMRVJTX0RJUiwgJ3N1YicpCi0KLQotY2xhc3MgRGlzcGF0Y2hlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQot
ICAgIGRlZiB0ZXN0X25vcm1hbGl6ZV9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcs
ICcvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRo
KCdcXGFcXGInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9h
L2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0
Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9jLy4uL2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChvcy5wYXRoLmFic3BhdGgoJ2FiYycpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQotCi0gICAgZGVm
IHRlc3RfY29udmVydGVyKHNlbGYpOgotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3Jl
YXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKLSAgICAgICAgIyBQeXRob24g
YnVpbHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRo
KCkuCi0gICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGgg
dXNpbmcgcmVhbHBhdGgoKSBhbmQgdXNlcwotICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBh
IGRyaXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCi0gICAgICAgIG9zX3Jvb3QgPSBvcy5w
YXRoLnJlYWxwYXRoKCcvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0
ZXIob3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
L2MvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQot
Ci0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9j
b252ZXJ0ZXIoJ2EvYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVy
KGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgKLSAgICAgICAgICAgICdhL2IvaF93c2gucHknKSkp
Ci0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNl
X2NvbnZlcnRlcignL2EvYi8vLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29u
dmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgKLSAgICAgICAgICAg
ICcvYS9iLy4uL2IvaF93c2gucHknKSkpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2gu
X2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigKLSAgICAgICAgICAgICcvYS8uLi9h
L2IvLi4vYi8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19y
b290ICsgJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9j
cmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidcYVxiJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3NoLnB5JykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyByJ2EvYi9o
X3dzaC5weScpKQotCi0gICAgZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmlsZV9wYXRocyhz
ZWxmKToKLSAgICAgICAgcGF0aHMgPSBsaXN0KAotICAgICAgICAgICAgZGlzcGF0Y2guX2VudW1l
cmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKLSAgICAgICAgcGF0
aHMuc29ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhzKSkKLSAgICAg
ICAgZXhwZWN0ZWRfcGF0aHMgPSBbCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNU
X0hBTkRMRVJTX0RJUiwgJ2Fib3J0X2J5X3VzZXJfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAg
b3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2JsYW5rX3dzaC5weScpLAotICAgICAg
ICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tf
d3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJ
UiwgJ3N1YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb25faW5fdHJh
bnNmZXJfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRM
RVJTX0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAg
b3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdwbGFpbl93c2gucHknKSwK
LSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5
JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1
YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cm9uZ190cmFuc2Zlcl9zaWdfd3No
LnB5JyksCi0gICAgICAgICAgICAgICAgXQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBp
biB6aXAoZXhwZWN0ZWRfcGF0aHMsIHBhdGhzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9oYW5kbGVyX2ZpbGUo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgZGlzcGF0Y2gu
RGlzcGF0Y2hFeGNlcHRpb24sIGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaEV4
Y2VwdGlvbiwgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUsICdkZWYnKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9u
LCBkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSwgJzEvMCcpCi0gICAgICAgIHNlbGYuZmFp
bFVubGVzcyhkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSgKLSAgICAgICAgICAgICAgICAn
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOnBhc3NcbicKLSAgICAg
ICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KTpwYXNzXG4n
KSkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgZGlzcGF0
Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAg
ICAgICB3YXJuaW5ncyA9IGRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgd2Fy
bmluZ3Muc29ydCgpCi0gICAgICAgIGV4cGVjdGVkX3dhcm5pbmdzID0gWwotICAgICAgICAgICAg
ICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAg
X1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3NoLnB5JykpICsKLSAgICAgICAgICAgICAgICAg
Jzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAg
ICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKAotICAgICAgICAgICAg
ICAgICAgICBfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScp
KSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlz
IG5vdCBjYWxsYWJsZS4nKSwKLSAgICAgICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aChvcy5w
YXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgIF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1Yics
ICd3cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weScpKSArCi0gICAgICAgICAgICAgICAgICc6IHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAotICAgICAgICAg
ICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAg
ICAgX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkn
KSkgKwotICAgICAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgbm90
IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyg0LCBsZW4od2FybmluZ3MpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAo
ZXhwZWN0ZWRfd2FybmluZ3MsIHdhcm5pbmdzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGV4cGVjdGVkLCBhY3R1YWwpCi0KLSAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uo
c2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hB
TkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQot
ICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCi0gICAgICAgIHJl
cXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKLSAgICAgICAgZGlzcGF0Y2hl
ci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9u
LgotCi0gICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20n
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hh
a2VFeGNlcHRpb24gd2l0aCA0MDMgc3RhdHVzJykKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5I
YW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg0MDMs
IGUuc3RhdHVzKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2Vs
Zi5mYWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUgZSkKLQotICAgIGRlZiB0ZXN0X2Fi
b3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNo
LkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0g
bW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0
X2J5X3VzZXInCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlV
c2VyRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4
dHJhX2hhbmRzaGFrZSwgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2Vs
Zik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRM
RVJTX0RJUiwgTm9uZSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25u
ZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVz
b3VyY2UgPSAnL29yaWdpbl9jaGVjaycKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdw
MScKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAvb3JpZ2lu
X2NoZWNrLCBwMScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXHhmZlx4MDAnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQot
ICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nv
bm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFp
bicKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9w
bGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluLCBOb25lJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICdceGZmXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1v
Y2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignXHhmZlx4MDAnKSkKLSAgICAgICAg
cmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluPycKLSAgICAgICAgcmVxdWVzdC53c19w
cm90b2NvbCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZv
ciAvc3ViL3BsYWluPywgTm9uZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXHhmZlx4MDAn
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1v
Y2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAn
L3N1Yi9wbGFpbj9xPXYnCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0gICAg
ICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj9xPXYsIE5v
bmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYg
dGVzdF90cmFuc2Zlcl9kYXRhX25vX2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIg
PSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAg
Zm9yIHJlc291cmNlIGluIFsnL2JsYW5rJywgJy9zdWIvbm9uX2NhbGxhYmxlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnL3N1Yi9ub193c2hfYXRfdGhlX2VuZCcsICcvZG9lcy9ub3QvZXhp
c3QnXToKLSAgICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249
bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gcmVz
b3VyY2UKLSAgICAgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDInCi0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3Mo
c3RyKGUpLmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKLQotICAgIGRlZiB0ZXN0X3RyYW5z
ZmVyX2RhdGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBk
aXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVx
dWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicK
LSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMycKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxm
LmZhaWwoKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5m
YWlsVW5sZXNzKHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcpICE9IC0xLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZSkKLQotICAgIGRl
ZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBk
aXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVx
dWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0g
Jy9hYm9ydF9ieV91c2VyJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9kaXIoc2VsZik6
Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwg
Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0
ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9vcmlnaW5fY2hlY2snIGluIGRpc3Au
X2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoCi0gICAgICAgICAg
ICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFw
KQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJf
c3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNlbGYpOgotICAgICAgICBk
aXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIF9URVNUX0hBTkRM
RVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKSkKLSAgICAgICAgc2VsZi5mYWlsSWYoJy9vcmlnaW5fY2hlY2snIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoCi0gICAgICAg
ICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyX2FzX3Jvb3Qoc2VsZik6
Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX1NVQl9E
SVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9URVNUX0hBTkRMRVJTX1NV
Ql9ESVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hhbmRsZXJfc3Vp
dGVfbWFwKSkKLSAgICAgICAgc2VsZi5mYWlsSWYoJy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxJZignL3N1Yi9leGNlcHRpb25faW5f
dHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxJ
ZignL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYu
ZmFpbFVubGVzcygnL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0
ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVy
X3N1aXRlX21hcCkKLQotICAgIGRlZiB0ZXN0X3NjYW5fZGlyX211c3RfdW5kZXJfcm9vdChzZWxm
KToKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iJywgJ2EvYi9jJykgICMgT0sKLSAg
ICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iLy8vJywgJ2EvYicpICAjIE9LCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaGVyLCAnYS9iL2MnLCAnYS9iJykKLQot
ICAgIGRlZiB0ZXN0X3Jlc291cmNlX3BhdGhfYWxpYXMoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBk
aXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgZGlz
cC5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygnLycsICcvb3JpZ2luX2NoZWNrJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApKQotICAgICAg
ICBzZWxmLmZhaWxVbmxlc3MoJy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoCi0gICAgICAgICAgICAnL3N1Yi9leGNlcHRp
b25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxm
LmZhaWxVbmxlc3MoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAg
ICAgICBzZWxmLmZhaWxVbmxlc3MoJy8nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcC5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcywgJy9hbGlh
cycsICcvbm90LWV4aXN0JykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVu
aXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTVjZjYxNTczOTEuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw3NTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi0iIiJFbmQtdG8tZW5kIHRlc3RzIGZvciBweXdlYnNvY2tldC4gVGVzdHMgc3RhbmRhbG9u
ZS5weSBieSBkZWZhdWx0LiBZb3UKLWNhbiBhbHNvIHRlc3QgbW9kX3B5d2Vic29ja2V0IGhvc3Rl
ZCBvbiBhbiBBcGFjaGUgc2VydmVyIGJ5IHNldHRpbmcKLV91c2VfZXh0ZXJuYWxfc2VydmVyIHRv
IFRydWUgYW5kIG1vZGlmeWluZyBfZXh0ZXJuYWxfc2VydmVyX3BvcnQgdG8gcG9pbnQgdG8KLXRo
ZSBwb3J0IG9uIHdoaWNoIHRoZSBBcGFjaGUgc2VydmVyIGlzIHJ1bm5pbmcuCi0iIiIKLQotCi1p
bXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc29ja2V0Ci1p
bXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB1bml0dGVz
dAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9k
X3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3Rp
bmcKLWZyb20gdGVzdCBpbXBvcnQgbXV4X2NsaWVudF9mb3JfdGVzdGluZwotCi0KLSMgU3BlY2lh
bCBtZXNzYWdlIHRoYXQgdGVsbHMgdGhlIGVjaG8gc2VydmVyIHRvIHN0YXJ0IGNsb3NpbmcgaGFu
ZHNoYWtlCi1fR09PREJZRV9NRVNTQUdFID0gJ0dvb2RieWUnCi0KLV9TRVJWRVJfV0FSTVVQX0lO
X1NFQyA9IDAuMgotCi0jIElmIHlvdSB3YW50IHRvIHVzZSBleHRlcm5hbCBzZXJ2ZXIgdG8gcnVu
IGVuZCB0byBlbmQgdGVzdHMsIHNldCBmb2xsb3dpbmcKLSMgcGFyYW1ldGVycyBjb3JyZWN0bHku
Ci1fdXNlX2V4dGVybmFsX3NlcnZlciA9IEZhbHNlCi1fZXh0ZXJuYWxfc2VydmVyX3BvcnQgPSAw
Ci0KLQotIyBUZXN0IGJvZHkgZnVuY3Rpb25zCi1kZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlKGNs
aWVudCk6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfbWVzc2FnZSgn
dGVzdCcpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0JykKLSAgICBjbGllbnQuc2Vu
ZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ2hlbGxv
d29ybGQnKQotCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgIGNsaWVudC5hc3NlcnRfcmVj
ZWl2ZV9jbG9zZSgpCi0KLSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQot
Ci1kZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5KGNsaWVudCk6Ci0gICAgY2xp
ZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfbWVzc2FnZSgnYmluYXJ5JywgYmluYXJ5
PVRydWUpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCdiaW5hcnknLCBiaW5hcnk9VHJ1ZSkK
LSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5h
cnk9VHJ1ZSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ1x4MDBceDgwXHhmZVx4ZmZceDAw
XHg4MCcsIGJpbmFyeT1UcnVlKQotCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgIGNsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25f
Y2xvc2VkKCkKLQotCi1kZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZShjbGll
bnQpOgotICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rl
c3QnKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgndGVzdCcpCi0KLSAgICBjbGllbnQuc2Vu
ZF9tZXNzYWdlKF9HT09EQllFX01FU1NBR0UpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKF9H
T09EQllFX01FU1NBR0UpCi0KLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotICAg
IGNsaWVudC5zZW5kX2Nsb3NlKCkKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9z
ZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24o
Y2xpZW50LCBjb2RlLCByZWFzb24pOgotICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgIGNsaWVu
dC5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoY29kZSwgcmVhc29uKQotCi0gICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgp
Ci0KLQotZGVmIF91bm1hc2tlZF9mcmFtZV9jaGVja19wcm9jZWR1cmUoY2xpZW50KToKLSAgICBj
bGllbnQuY29ubmVjdCgpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JywgbWFzaz1G
YWxzZSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY2xpZW50X2Zvcl90ZXN0aW5n
LlNUQVRVU19QUk9UT0NPTF9FUlJPUiwgJycpCi0KLSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rp
b25fY2xvc2VkKCkKLQotCi1kZWYgX211eF9lY2hvX2NoZWNrX3Byb2NlZHVyZShtdXhfY2xpZW50
KToKLSAgICBtdXhfY2xpZW50LmNvbm5lY3QoKQotICAgIG11eF9jbGllbnQuc2VuZF9mbG93X2Nv
bnRyb2woMSwgMTAyNCkKLQotICAgIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zID0gY2xpZW50X2Zv
cl90ZXN0aW5nLkNsaWVudE9wdGlvbnMoKQotICAgIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zLnNl
cnZlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKLSAgICBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucy5zZXJ2
ZXJfcG9ydCA9IDgwCi0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMub3JpZ2luID0gJ2h0dHA6
Ly9sb2NhbGhvc3QnCi0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMucmVzb3VyY2UgPSAnL2Vj
aG8nCi0gICAgbXV4X2NsaWVudC5hZGRfY2hhbm5lbCgyLCBsb2dpY2FsX2NoYW5uZWxfb3B0aW9u
cykKLSAgICBtdXhfY2xpZW50LnNlbmRfZmxvd19jb250cm9sKDIsIDEwMjQpCi0KLSAgICBtdXhf
Y2xpZW50LnNlbmRfbWVzc2FnZSgyLCAndGVzdCcpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVj
ZWl2ZSgyLCAndGVzdCcpCi0KLSAgICBtdXhfY2xpZW50LmFkZF9jaGFubmVsKDMsIGxvZ2ljYWxf
Y2hhbm5lbF9vcHRpb25zKQotICAgIG11eF9jbGllbnQuc2VuZF9mbG93X2NvbnRyb2woMywgMTAy
NCkKLQotICAgIG11eF9jbGllbnQuc2VuZF9tZXNzYWdlKDIsICdoZWxsbycpCi0gICAgbXV4X2Ns
aWVudC5zZW5kX21lc3NhZ2UoMywgJ3dvcmxkJykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNl
aXZlKDIsICdoZWxsbycpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2ZSgzLCAnd29ybGQn
KQotCi0gICAgIyBEb24ndCBzZW5kIGNsb3NlIG1lc3NhZ2Ugb24gY2hhbm5lbCBpZCAxIHNvIHRo
YXQgc2VydmVyLWluaXRpYXRlZAotICAgICMgY2xvc2luZyBoYW5kc2hha2Ugd29uJ3Qgb2NjdXIu
Ci0gICAgbXV4X2NsaWVudC5zZW5kX2Nsb3NlKDIpCi0gICAgbXV4X2NsaWVudC5zZW5kX2Nsb3Nl
KDMpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgyKQotICAgIG11eF9jbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoMykKLQotICAgIG11eF9jbGllbnQuc2VuZF9waHlzaWNh
bF9jb25uZWN0aW9uX2Nsb3NlKCkKLSAgICBtdXhfY2xpZW50LmFzc2VydF9waHlzaWNhbF9jb25u
ZWN0aW9uX3JlY2VpdmVfY2xvc2UoKQotCi0KLWNsYXNzIEVuZFRvRW5kVGVzdEJhc2UodW5pdHRl
c3QuVGVzdENhc2UpOgotICAgICIiIkJhc2UgY2xhc3MgZm9yIGVuZC10by1lbmQgdGVzdHMgdGhh
dCBsYXVuY2ggcHl3ZWJzb2NrZXQgc3RhbmRhbG9uZQotICAgIHNlcnZlciBhcyBhIHNlcGFyYXRl
IHByb2Nlc3MsIGNvbm5lY3QgdG8gaXQgdXNpbmcgdGhlIGNsaWVudF9mb3JfdGVzdGluZwotICAg
IG1vZHVsZSwgYW5kIGNoZWNrIGlmIHRoZSBzZXJ2ZXIgYmVoYXZlcyBjb3JyZWN0bHkgYnkgZXhj
aGFuZ2luZyBvcGVuaW5nCi0gICAgaGFuZHNoYWtlIGFuZCBmcmFtZXMgb3ZlciBhIFRDUCBjb25u
ZWN0aW9uLgotICAgICIiIgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnNl
cnZlcl9zdGRlcnIgPSBOb25lCi0gICAgICAgIHNlbGYudG9wX2RpciA9IG9zLnBhdGguam9pbihv
cy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykKLSAgICAgICAgb3MucHV0ZW52KCdQWVRI
T05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpvaW4oc3lzLnBhdGgpKQotICAgICAgICBzZWxmLnN0
YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIHNlbGYudG9wX2Rp
ciwgJ21vZF9weXdlYnNvY2tldCcsICdzdGFuZGFsb25lLnB5JykKLSAgICAgICAgc2VsZi5kb2N1
bWVudF9yb290ID0gb3MucGF0aC5qb2luKHNlbGYudG9wX2RpciwgJ2V4YW1wbGUnKQotICAgICAg
ICBzID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgIHMuYmluZCgoJ2xvY2FsaG9zdCcsIDApKQot
ICAgICAgICAoXywgc2VsZi50ZXN0X3BvcnQpID0gcy5nZXRzb2NrbmFtZSgpCi0gICAgICAgIHMu
Y2xvc2UoKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBjbGllbnRfZm9yX3Rlc3RpbmcuQ2xp
ZW50T3B0aW9ucygpCi0gICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QgPSAnbG9jYWxo
b3N0JwotICAgICAgICBzZWxmLl9vcHRpb25zLm9yaWdpbiA9ICdodHRwOi8vbG9jYWxob3N0Jwot
ICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9lY2hvJwotCi0gICAgICAgICMgVE9E
Tyh0b3lvc2hpbSk6IEVsaW1pbmF0ZSBsYXVuY2hpbmcgYSBzdGFuZGFsb25lIHNlcnZlciBvbiB1
c2luZwotICAgICAgICAjIGV4dGVybmFsIHNlcnZlci4KLQotICAgICAgICBpZiBfdXNlX2V4dGVy
bmFsX3NlcnZlcjoKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQgPSBfZXh0
ZXJuYWxfc2VydmVyX3BvcnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuc2VydmVyX3BvcnQgPSBzZWxmLnRlc3RfcG9ydAotCi0gICAgIyBUT0RPKHR5b3NoaW5vKTog
VXNlIHRlYXJEb3duIHRvIGtpbGwgdGhlIHNlcnZlci4KLQotICAgIGRlZiBfcnVuX3B5dGhvbl9j
b21tYW5kKHNlbGYsIGNvbW1hbmRsaW5lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgotICAg
ICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGVdICsgY29tbWFuZGxp
bmUsIGNsb3NlX2Zkcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRv
dXQ9c3Rkb3V0LCBzdGRlcnI9c3RkZXJyKQotCi0gICAgZGVmIF9ydW5fc2VydmVyKHNlbGYpOgot
ICAgICAgICBhcmdzID0gW3NlbGYuc3RhbmRhbG9uZV9jb21tYW5kLAotICAgICAgICAgICAgICAg
ICctSCcsICdsb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICctVicsICdsb2NhbGhvc3QnLAot
ICAgICAgICAgICAgICAgICctcCcsIHN0cihzZWxmLnRlc3RfcG9ydCksCi0gICAgICAgICAgICAg
ICAgJy1QJywgc3RyKHNlbGYudGVzdF9wb3J0KSwKLSAgICAgICAgICAgICAgICAnLWQnLCBzZWxm
LmRvY3VtZW50X3Jvb3RdCi0KLSAgICAgICAgIyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhl
IHJvb3QgbG9nZ2VyIGJ5IHRlc3QgcnVubmVyLgotICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKCkKLSAgICAgICAgbG9nX2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0
aXZlTGV2ZWwoKQotICAgICAgICBpZiBsb2dfbGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6Ci0gICAg
ICAgICAgICBhcmdzLmFwcGVuZCgnLS1sb2ctbGV2ZWwnKQotICAgICAgICAgICAgYXJncy5hcHBl
bmQobG9nZ2luZy5nZXRMZXZlbE5hbWUobG9nX2xldmVsKS5sb3dlcigpKQotCi0gICAgICAgIHJl
dHVybiBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c2VsZi5zZXJ2ZXJfc3RkZXJyKQotCi0gICAgZGVm
IF9raWxsX3Byb2Nlc3Moc2VsZiwgcGlkKToKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgn
d2luMzInLCAnY3lnd2luJyk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzLmNhbGwoCi0gICAgICAg
ICAgICAgICAgKCd0YXNra2lsbC5leGUnLCAnL2YnLCAnL3BpZCcsIHN0cihwaWQpKSwgY2xvc2Vf
ZmRzPVRydWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFs
LlNJR0tJTEwpCi0KLQotY2xhc3MgRW5kVG9FbmRIeUJpVGVzdChFbmRUb0VuZFRlc3RCYXNlKToK
LSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2Vs
ZikKLQotICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0ZXN0X2Z1
bmN0aW9uLCBvcHRpb25zKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IGFkZCBzb21lIGxvZ2lj
IHRvIHBvbGwgdGhlIHNlcnZlciB1bnRpbCBpdAotICAgICAgICAgICAgIyBiZWNvbWVzIHJlYWR5
Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAg
ICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkK
LSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tl
dCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2Vy
dmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6Ci0gICAg
ICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29wdGlvbnModGVzdF9mdW5jdGlvbiwgc2Vs
Zi5fb3B0aW9ucykKLQotICAgIGRlZiBfcnVuX2RlZmxhdGVfZnJhbWVfdGVzdChzZWxmLCB0ZXN0
X2Z1bmN0aW9uKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0g
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmVuYWJsZV9kZWZsYXRlX2ZyYW1lKCkKLSAgICAgICAg
ICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50KHNlbGYuX29wdGlv
bnMpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGll
bnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9z
b2NrZXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNz
KHNlcnZlci5waWQpCi0KLSAgICBkZWYgX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAg
ICAgICAgICAgIHNlbGYsIG9mZmVyLCByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKToK
LSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMgKz0gb2ZmZXIKLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuY2hlY2tfcGVybWVzc2FnZV9kZWZsYXRlID0gcmVzcG9uc2VfY2hlY2tlcgotICAgICAgICAg
ICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9u
cykKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkK
LQotICAgICAgICAgICAgICAgIGlmIHRlc3RfZnVuY3Rpb24gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQotCi0gICAgICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBkZWYgX3J1bl9j
bG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24sIGNvZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNv
bik6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAg
ICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9u
cykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCwgY29kZSwgcmVhc29uKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBj
bGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYu
X2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9ydW5faHR0cF9mYWxsYmFja190
ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FS
TVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNy
ZWF0ZV9jbGllbnQob3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBj
bGllbnQuY29ubmVjdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0
Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCi0gICAgICAgICAgICBleGNlcHQgY2xpZW50X2Zvcl90
ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdGF0dXMsIGUuc3RhdHVzKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg
ZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0NhdGNoIHVuZXhwZWN0ZWQgZXhjZXB0aW9u
JykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3Nv
Y2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Mo
c2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX211eF90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24p
OgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAg
IGNsaWVudCA9IG11eF9jbGllbnRfZm9yX3Rlc3RpbmcuTXV4Q2xpZW50KHNlbGYuX29wdGlvbnMp
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQp
Ci0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2Nr
ZXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNl
cnZlci5waWQpCi0KLSAgICBkZWYgdGVzdF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5f
dGVzdChfZWNob19jaGVja19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2JpbmFyeShz
ZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhf
YmluYXJ5KQotCi0gICAgZGVmIHRlc3RfZWNob19zZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUpCi0KLSAg
ICBkZWYgdGVzdF91bm1hc2tlZF9mcmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3Qo
X3VubWFza2VkX2ZyYW1lX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fZGVm
bGF0ZV9mcmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2RlZmxhdGVfZnJhbWVfdGVzdChf
ZWNob19jaGVja19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2RlZmxhdGVfZnJhbWVf
c2VydmVyX2Nsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0
KAotICAgICAgICAgICAgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKLQotICAg
IGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBkZWYgdGVz
dF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0
aGUgc3BlYy4KLSAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNkXHhj
OVx4YzlceDA3XHgwMCcKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAg
ICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3Yx
PTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0g
ICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAg
IG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAg
ICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAg
ICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2Vf
Y2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhbXSwgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5f
cnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2Fn
ZS1kZWZsYXRlJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAg
ICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2Rl
ZmxhdGVfdHdvX2ZyYW1lcyhzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50
KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAg
ICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYy
XHg0OFx4Y2QnLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIGVuZD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAg
ICAgICAgICAgICAgICAnXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhj
ZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zv
cl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAg
ICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRf
cmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVy
KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBw
YXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAotICAg
ICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5j
dGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tZXNzYWdl
cyhzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAg
ICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjbGllbnQuX3N0
cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhj
OVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQu
X3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHgwMFx4MTFceDAw
XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVY
VCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJl
YW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhc
eGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAg
ICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAg
ICAgICAgICAgICAgJ1x4ZjJceDAwXHgxMVx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9j
aGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVz
c2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9y
dW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdl
LWRlZmxhdGUnXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAg
ICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90d29fbXNnc19zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKLSAgICAgICAg
ZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBs
ZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0g
ICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAg
ICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEo
Ci0gICAgICAgICAgICAgICAgICAgICdceGYyXHgwMFx4MTFceDAwXHgwMCcsCi0gICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAg
ICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
YmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgw
MCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJc
eDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEp
Ci0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFy
YW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxh
dGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWygn
c2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKV0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9y
dW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdl
LWRlZmxhdGU7IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJ10sCi0gICAgICAgICAgICAgICAg
cmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfcHJlZmVyZW5jZShzZWxmKToKLSAgICAg
ICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhh
bXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gJ1x4ZjJc
eDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5k
X2RhdGEoCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAg
ICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
YmluYXJ5KAotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAg
ICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAg
ICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkK
LSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVm
IHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQotCi0gICAg
ICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBb
J3Blcm1lc3NhZ2UtZGVmbGF0ZScsICdkZWZsYXRlLWZyYW1lJ10sCi0gICAgICAgICAgICAgICAg
cmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF9wYXJhbWV0ZXJzKHNlbGYpOgot
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRo
ZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSAn
XHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAg
ICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVj
ZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAg
ICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0g
ICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xv
c2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAg
ICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhbKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzEwJyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlcicsIE5vbmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5n
ZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVf
dGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93
aW5kb3dfYml0cz0xMDsgJwotICAgICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXInXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAg
ICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0
ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBkZWYgdGVz
dF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAg
ICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVz
cG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdV
bmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRlJykKLQotICAgICAgICBz
ZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJt
ZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MzAwMDAwMCddLAotICAgICAg
ICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlv
bikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfYmFkX3NlcnZl
cl9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6Ci0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQu
YXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBh
cmFtZXRlcik6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0
YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNz
YWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsg
c2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAwJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9u
c2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRl
c3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVyKHNlbGYp
OgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50
LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkK
LQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZs
YXRlJykKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAg
ICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKLSAgICAgICAgICAg
ICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0K
LSAgICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAg
ICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKLSAgICAgICAgc2VsZi5fcnVu
X2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCi0gICAgICAgICAgICBfZWNob19jaGVj
a19wcm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQot
Ci0gICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6Ci0gICAgICAg
IHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJwotICAgICAgICBzZWxmLl9ydW5fY2xv
c2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKLSAgICAgICAgICAgIF9lY2hvX2NoZWNrX3By
b2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCi0KLSAgICBkZWYgdGVzdF9t
dXhfZWNobyhzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX211eF90ZXN0KF9tdXhfZWNob19jaGVj
a19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9jbG9zZV9vbl9wcm90b2NvbF9lcnJvcihzZWxm
KToKLSAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUg
d2l0aCBwcm90b2NvbCBlcnJvciBzdGF0dXMKLSAgICAgICAgY29kZSB3aGVuIHRoZSBjbGllbnQg
c2VuZHMgZGF0YSB3aXRoIHNvbWUgcHJvdG9jb2wgZXJyb3IuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVj
dCgpCi0KLSAgICAgICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lIHdpdGhvdXQgYW55IHByZWNl
ZGluZyBzdGFydCBvZiBmcmFnbWVudGF0aW9uCi0gICAgICAgICAgICAjIGZyYW1lLgotICAgICAg
ICAgICAgY2xpZW50LnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKCdceDgwXHg4MCcsICcn
KQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAg
ICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IpCi0KLSAgICAgICAg
c2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX3Vu
c3VwcG9ydGVkX2ZyYW1lKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIg
c2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIHVuc3VwcG9ydGVkIG9wZXJhdGlvbgotICAgICAgICBz
dGF0dXMgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSBhc2tpbmcgc29tZSBvcGVyYXRp
b24gdGhhdCBpcwotICAgICAgICBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCi0gICAgICAg
ICIiIgotCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBj
bGllbnQuY29ubmVjdCgpCi0KLSAgICAgICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIFJTVjMgYml0
IHJhaXNlZC4KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRl
cygnXHg5MVx4ODAnLCAnJykKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9z
ZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1VOU1VQUE9SVEVE
X0RBVEEpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRl
ZiB0ZXN0X2Nsb3NlX29uX2ludmFsaWRfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRo
YXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggaW52YWxpZCBmcmFtZSBwYXls
b2FkCi0gICAgICAgIGRhdGEgc3RhdHVzIGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGFuIGlu
dmFsaWQgZnJhbWUgbGlrZSBjb250YWluaW5nCi0gICAgICAgIGludmFsaWQgVVRGLTggY2hhcmFj
dGVyLgotICAgICAgICAiIiIKLQotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgot
ICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAjIFRleHQgZnJhbWUg
d2l0aCBpbnZhbGlkIFVURi04IHN0cmluZy4KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX21lc3Nh
Z2UoJ1x4ODAnLCByYXc9VHJ1ZSkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9j
bG9zZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVkFMSURf
RlJBTUVfUEFZTE9BRF9EQVRBKQotCi0gICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rp
b24pCi0KLSAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnRlcm5hbF9lbmRwb2ludF9lcnJvcihzZWxm
KToKLSAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUg
d2l0aCBpbnRlcm5hbCBlbmRwb2ludAotICAgICAgICBlcnJvciBzdGF0dXMgY29kZSB3aGVuIHRo
ZSBoYW5kbGVyIGRvZXMgYmFkIG9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvaW50ZXJuYWxfZXJyb3InCi0KLSAgICAgICAgZGVmIHRl
c3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLSAgICAg
ICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgICAgICAgICBjbGll
bnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQotCi0gICAgICAg
IHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCi0KLSAgICAjIFRPRE8odG95b3NoaW0pOiBB
ZGQgdGVzdHMgdG8gdmVyaWZ5IGludmFsaWQgYWJzb2x1dGUgdXJpIGhhbmRsaW5nIGxpa2UKLSAg
ICAjIGhvc3QgdW5tYXRjaCwgcG9ydCB1bm1hdGNoIGFuZCBpbnZhbGlkIHBvcnQgZGVzY3JpcHRp
b24gKCc6JyB3aXRob3V0IHBvcnQKLSAgICAjIG51bWJlcikuCi0KLSAgICBkZWYgdGVzdF9hYnNv
bHV0ZV91cmkoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGFic29sdXRlIHVyaSByZXF1ZXN0LiIi
IgotCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMucmVz
b3VyY2UgPSAnd3M6Ly9sb2NhbGhvc3Q6JWQvZWNobycgJSBvcHRpb25zLnNlcnZlcl9wb3J0Ci0g
ICAgICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29wdGlvbnMoX2VjaG9fY2hlY2tfcHJv
Y2VkdXJlLCBvcHRpb25zKQotCi0gICAgZGVmIHRlc3Rfb3JpZ2luX2NoZWNrKHNlbGYpOgotICAg
ICAgICAiIiJUZXN0cyBodHRwIGZhbGxiYWNrIG9uIG9yaWdpbiBjaGVjayBmYWlsLiIiIgotCi0g
ICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMucmVzb3VyY2Ug
PSAnL29yaWdpbl9jaGVjaycKLSAgICAgICAgIyBTZXJ2ZXIgc2hvd3Mgd2FybmluZyBtZXNzYWdl
IGZvciBodHRwIDQwMyBmYWxsYmFjay4gVGhpcyB3YXJuaW5nCi0gICAgICAgICMgbWVzc2FnZSBp
cyBjb25mdXNpbmcuIEZvbGxvd2luZyBwaXBlIGRpc3Bvc2VzIHdhcm5pbmcgbWVzc2FnZXMuCi0g
ICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IHN1YnByb2Nlc3MuUElQRQotICAgICAgICBzZWxm
Ll9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQwMykKLQotICAgIGRlZiB0ZXN0X3Zl
cnNpb25fY2hlY2soc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gdmVy
c2lvbiBjaGVjayBmYWlsLiIiIgotCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0g
ICAgICAgIG9wdGlvbnMudmVyc2lvbiA9IDk5Ci0gICAgICAgIHNlbGYuX3J1bl9odHRwX2ZhbGxi
YWNrX3Rlc3Qob3B0aW9ucywgNDAwKQotCi0KLWNsYXNzIEVuZFRvRW5kSHlCaTAwVGVzdChFbmRU
b0VuZFRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVuZFRvRW5kVGVz
dEJhc2Uuc2V0VXAoc2VsZikKLQotICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlv
bik6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAg
ICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnRfaHliaTAwKHNlbGYu
X29wdGlvbnMpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlv
bihjbGllbnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5j
bG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9w
cm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBkZWYgdGVzdF9lY2hvKHNlbGYpOgotICAgICAgICBz
ZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hv
X3NlcnZlcl9jbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tf
cHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKLQotCi1jbGFzcyBFbmRUb0VuZFRlc3RXaXRoRWNob0Ns
aWVudChFbmRUb0VuZFRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVu
ZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKLQotICAgIGRlZiBfY2hlY2tfZXhhbXBsZV9lY2hv
X2NsaWVudF9yZXN1bHQoCi0gICAgICAgIHNlbGYsIGV4cGVjdGVkLCBzdGRvdXRkYXRhLCBzdGRl
cnJkYXRhKToKLSAgICAgICAgYWN0dWFsID0gc3Rkb3V0ZGF0YS5kZWNvZGUoInV0Zi04IikKLSAg
ICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdVbmV4cGVjdGVkIHJlc3VsdCBvbiBleGFtcGxlIGVjaG8gY2xpZW50OiAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWQsIGFjdHVhbCkpCi0gICAgICAgIGlmIHN0
ZGVycmRhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhw
ZWN0ZWQgZXJyb3IgbWVzc2FnZSBvbiBleGFtcGxlIGVjaG8gJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjbGllbnQ6ICVyJyAlIHN0ZGVycmRhdGEpCi0KLSAgICBkZWYgdGVzdF9leGFt
cGxlX2VjaG9fY2xpZW50KHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBlY2hvX2Ns
aWVudC5weSBleGFtcGxlIGNhbiB0YWxrIHdpdGggdGhlIHNlcnZlci4iIiIKLQotICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGlt
ZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIGNsaWVudF9jb21t
YW5kID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYudG9wX2RpciwgJ2V4YW1w
bGUnLCAnZWNob19jbGllbnQucHknKQotCi0gICAgICAgICAgICAjIEV4cGVjdGVkIG91dHB1dCBm
b3IgdGhlIGRlZmF1bHQgbWVzc2FnZXMuCi0gICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9u
ID0gKCdTZW5kOiBIZWxsb1xuJyAnUmVjdjogSGVsbG9cbicKLSAgICAgICAgICAgICAgICB1J1Nl
bmQ6IFx1NjVlNVx1NjcyY1xuJyB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJwotICAgICAgICAgICAg
ICAgICdTZW5kIGNsb3NlXG4nICdSZWN2IGFja1xuJykKLQotICAgICAgICAgICAgYXJncyA9IFtj
bGllbnRfY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYuX29wdGlv
bnMuc2VydmVyX3BvcnQpXQotICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9j
b21tYW5kKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzdGRvdXRk
YXRhLCBzdGRlcnJkYXRhID0gY2xpZW50LmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIHNlbGYu
X2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KAotICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0X2V4cGVjdGF0aW9uLCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQotCi0gICAgICAgICAg
ICAjIFByb2Nlc3MgYSBiaWcgbWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5bG9hZCBsZW5n
dGggaXMgdXNlZC4KLSAgICAgICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBheWxvYWQgbGVu
Z3RoLCB3c192ZXJzaW9uIGF0dHJpYnV0ZSB3aWxsIGJlCi0gICAgICAgICAgICAjIGFjY2Vzc2Vk
LiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkgc2V0LgotICAg
ICAgICAgICAgYmlnX21lc3NhZ2UgPSAnYScgKiAxMDI0Ci0gICAgICAgICAgICBhcmdzID0gW2Ns
aWVudF9jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAnLXAnLCBzdHIoc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICctbScsIGJpZ19tZXNzYWdlXQot
ICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0g
Y2xpZW50LmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIGV4cGVjdGVkID0gKCdTZW5kOiAlc1xu
UmVjdjogJXNcblNlbmQgY2xvc2VcblJlY3YgYWNrXG4nICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIChiaWdfbWVzc2FnZSwgYmlnX21lc3NhZ2UpKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tf
ZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQsIHN0
ZG91dGRhdGEsIHN0ZGVycmRhdGEpCi0KLSAgICAgICAgICAgICMgVGVzdCB0aGUgcGVybWVzc2Fn
ZS1kZWZsYXRlIGV4dGVuc2lvbi4KLSAgICAgICAgICAgIGFyZ3MgPSBbY2xpZW50X2NvbW1hbmQs
Ci0gICAgICAgICAgICAgICAgICAgICctcCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0
KSwKLSAgICAgICAgICAgICAgICAgICAgJy0tdXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSddCi0gICAg
ICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGll
bnQuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2Ns
aWVudF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24sIHN0
ZG91dGRhdGEsIHN0ZGVycmRhdGEpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxm
Ll9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rf
ZXh0ZW5zaW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4YjEyNjJkODli
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwzNjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCi0K
LQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAj
IFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGV4dGVuc2lvbnMKLQotCi1jbGFzcyBFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Igbm9uLWNsYXNzIG1ldGhvZHMgaW4gZXh0ZW5zaW9u
cy5weSIiIgotCi0gICAgZGVmIHRlc3RfcGFyc2Vfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19i
aXRzLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNp
b25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2JhcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnIDggJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2lu
ZG93X2JpdHMsICdhOGEnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBl
eHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDAwJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcwMDAw
OCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3Bh
cnNlX3dpbmRvd19iaXRzLCAnMHg4JykKLQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzkuNScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRz
LCAnOC4wJykKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZXh0ZW5zaW9ucy5fcGFyc2Vfd2lu
ZG93X2JpdHMsICc4JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4dGVuc2lvbnMuX3BhcnNl
X3dpbmRvd19iaXRzLCAnMTUnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnLTgnKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAn
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJz
ZV93aW5kb3dfYml0cywgJzcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTYnKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcygKLSAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJz
ZV93aW5kb3dfYml0cywgJzEwMDAwMDAwJykKLQotCi1jbGFzcyBDb21wcmVzc2lvbk1ldGhvZFBh
cmFtZXRlclBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3Qg
Zm9yIF9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2Qgd2hpY2ggcGFyc2VzIHRoZSBjb21wcmVzc2lv
bgotICAgIG1ldGhvZCBkZXNjcmlwdGlvbiB1c2VkIGJ5IHBlcmZyYW1lLWNvbXByZXNzaW9uIGFu
ZCBwZXJtZXNzYWdlLWNvbXByZXNzaW9uCi0gICAgZXh0ZW5zaW9uIGluIHRoZWlyICJtZXRob2Qi
IGV4dGVuc2lvbiBwYXJhbWV0ZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9tZXRo
b2Rfc2ltcGxlKHNlbGYpOgotICAgICAgICBtZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNl
X2NvbXByZXNzaW9uX21ldGhvZCgnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBs
ZW4obWV0aG9kX2xpc3QpKQotICAgICAgICBtZXRob2QgPSBtZXRob2RfbGlzdFswXQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCBtZXRob2QubmFtZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGxlbihtZXRob2QuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAgICBkZWYgdGVz
dF9wYXJzZV9tZXRob2Rfd2l0aF9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIG1ldGhvZF9saXN0
ID0gZXh0ZW5zaW9ucy5fcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKCdmb287IHg7IHk9MTAnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXRob2RfbGlzdCkpCi0gICAgICAgIG1l
dGhvZCA9IG1ldGhvZF9saXN0WzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsIG1l
dGhvZC5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1ldGhvZC5nZXRf
cGFyYW1ldGVycygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGhvZC5oYXNfcGFyYW1l
dGVyKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbWV0aG9kLmdldF9wYXJh
bWV0ZXJfdmFsdWUoJ3gnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGhvZC5oYXNfcGFy
YW1ldGVyKCd5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEwJywgbWV0aG9kLmdldF9w
YXJhbWV0ZXJfdmFsdWUoJ3knKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX21ldGhvZF93aXRoX3F1
b3RlZF9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIG1ldGhvZF9saXN0ID0gZXh0ZW5zaW9ucy5f
cGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKAotICAgICAgICAgICAgJ2ZvbzsgeD0iSGVsbG8gV29y
bGQiOyB5PTEwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWV0aG9kX2xpc3Qp
KQotICAgICAgICBtZXRob2QgPSBtZXRob2RfbGlzdFswXQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdmb28nLCBtZXRob2QubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxl
bihtZXRob2QuZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZXRo
b2QuaGFzX3BhcmFtZXRlcigneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBX
b3JsZCcsIG1ldGhvZC5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd4JykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtZXRob2QuaGFzX3BhcmFtZXRlcigneScpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcxMCcsIG1ldGhvZC5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd5JykpCi0KLSAgICBkZWYgdGVz
dF9wYXJzZV9tZXRob2RfbXVsdGlwbGUoc2VsZik6Ci0gICAgICAgIG1ldGhvZF9saXN0ID0gZXh0
ZW5zaW9ucy5fcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKCdmb28sIGJhcicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1ldGhvZF9saXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnZm9vJywgbWV0aG9kX2xpc3RbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDAsIGxlbihtZXRob2RfbGlzdFswXS5nZXRfcGFyYW1ldGVycygpKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnYmFyJywgbWV0aG9kX2xpc3RbMV0ubmFtZSgpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDAsIGxlbihtZXRob2RfbGlzdFsxXS5nZXRfcGFyYW1ldGVycygpKSkKLQot
ICAgIGRlZiB0ZXN0X3BhcnNlX21ldGhvZF9tdWx0aXBsZV9tZXRob2RzX3dpdGhfcXVvdGVkX3Bh
cmFtZXRlcihzZWxmKToKLSAgICAgICAgbWV0aG9kX2xpc3QgPSBleHRlbnNpb25zLl9wYXJzZV9j
b21wcmVzc2lvbl9tZXRob2QoCi0gICAgICAgICAgICAnZm9vOyB4PSJIZWxsbyBXb3JsZCIsIGJh
cjsgeT0xMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1ldGhvZF9saXN0KSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbWV0aG9kX2xpc3RbMF0ubmFtZSgpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXRob2RfbGlzdFswXS5nZXRfcGFyYW1l
dGVycygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGhvZF9saXN0WzBdLmhhc19wYXJh
bWV0ZXIoJ3gnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9saXN0WzBdLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J3gnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYmFyJywgbWV0aG9kX2xpc3RbMV0ubmFt
ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXRob2RfbGlzdFsxXS5nZXRf
cGFyYW1ldGVycygpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGhvZF9saXN0WzFdLmhh
c19wYXJhbWV0ZXIoJ3knKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTAnLCBtZXRob2Rf
bGlzdFsxXS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd5JykpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVf
bWV0aG9kX2Rlc2Nfc2ltcGxlKHNlbGYpOgotICAgICAgICBwYXJhbXMgPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdmb28nKQotICAgICAgICBkZXNjID0gZXh0ZW5zaW9ucy5fY3JlYXRlX2Fj
Y2VwdGVkX21ldGhvZF9kZXNjKCdmb28nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRfcGFyYW1ldGVycygpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCBkZXNjKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX21l
dGhvZF9kZXNjX3dpdGhfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgcGFyYW1zID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcignZm9vJykKLSAgICAgICAgcGFyYW1zLmFkZF9wYXJhbWV0ZXIo
J3gnLCAnSGVsbG8sIFdvcmxkJykKLSAgICAgICAgcGFyYW1zLmFkZF9wYXJhbWV0ZXIoJ3knLCAn
MTAnKQotICAgICAgICBkZXNjID0gZXh0ZW5zaW9ucy5fY3JlYXRlX2FjY2VwdGVkX21ldGhvZF9k
ZXNjKCdmb28nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRfcGFyYW1ldGVycygpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdmb287IHg9IkhlbGxvLCBXb3JsZCI7IHk9MTAnLCBkZXNjKQotCi0KLWNsYXNzIERlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvclBhcnNpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2luZyB0aGF0IERlZmxhdGVGcmFtZUV4dGVuc2lv
blByb2Nlc3NvciBwYXJzZXMgZ2l2ZW4KLSAgICBleHRlbnNpb24gcGFyYW1ldGVyIGNvcnJlY3Rs
eS4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X3JlZ2lzdHJ5KHNlbGYpOgotICAgICAgICBwcm9j
ZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25fcHJvY2Vzc29yKAotICAgICAgICAgICAg
ICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ2RlZmxhdGUtZnJhbWUnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMuRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAg
ICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IoCi0gICAg
ICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigneC13ZWJraXQtZGVmbGF0ZS1m
cmFtZScpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHJvY2Vzc29yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IpCi0KLSAgICBkZWYgdGVzdF9taW5pbWFsX29mZmVyKHNlbGYpOgotICAgICAgICBw
cm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcigKLSAg
ICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKSkK
LQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5h
bWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFt
ZXRlcnMoKSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRv
d19iaXRzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZs
YXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4
X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJh
bWV0ZXIoJ21heF93aW5kb3dfYml0cycsICcxMCcpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVu
c2lvbnMuRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgncGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMCwgcHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxh
dGVyLl93aW5kb3dfYml0cykKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfb3V0X29mX3Jhbmdl
X21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRf
cGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMnLCAnMCcpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4
dGVuc2lvbnMuRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAg
ICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
KQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhfd2luZG93X2JpdHNfd2l0aG91dF92YWx1
ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcign
cGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdtYXhf
d2luZG93X2JpdHMnLCBOb25lKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0
ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKLSAgICAgICAgcGFyYW1l
dGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAg
ICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkK
LSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9j
ZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRl
bnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJmcmFtZS1kZWZs
YXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihy
ZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJv
Y2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgZGVm
IHRlc3Rfb2ZmZXJfd2l0aF9ub19jb250ZXh0X3Rha2VvdmVyX3dpdGhfdmFsdWUoc2VsZik6Ci0g
ICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRl
ZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbm9fY29udGV4dF90YWtl
b3ZlcicsICdmb29iYXInKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVG
cmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0
X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBw
YXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignZm9vJywgJ2JhcicpCi0gICAgICAgIHByb2Nlc3NvciA9
IGV4dGVuc2lvbnMuRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQot
ICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRl
cnMoKSkpCi0KLQotY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JQYXJz
aW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tp
bmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvciBwYXJzZXMKLSAgICBn
aXZlbiBleHRlbnNpb24gcGFyYW1ldGVyIGNvcnJlY3RseS4KLSAgICAiIiIKLQotICAgIGRlZiB0
ZXN0X3JlZ2lzdHJ5KHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9l
eHRlbnNpb25fcHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFu
Y2UocHJvY2Vzc29yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5Q
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcikKLQotICAgIGRlZiB0ZXN0X21pbmlt
YWxfb2ZmZXIoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2Fn
ZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLQotICAgICAgICByZXNwb25zZSA9IHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKSkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHpsaWIuTUFYX1dCSVRTLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl9ub19jb250ZXh0X3Rha2Vv
dmVyKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0g
ICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dp
bmRvd19iaXRzJywgJzEwJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNz
YWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9u
c2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzEwJyldLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxMCwgcHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl93aW5k
b3dfYml0cykKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfb3V0X29mX3JhbmdlX21heF93aW5k
b3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0
ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMCcpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4
dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0
X3ZhbHVlKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignc2VydmVyX21heF93aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4
dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXIoc2Vs
Zik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lv
bnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAg
ICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
LCBOb25lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRl
cnMoKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxh
dGVyLl9ub19jb250ZXh0X3Rha2VvdmVyKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19j
b250ZXh0X3Rha2VvdmVyX3dpdGhfdmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBh
cmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsICdmb29i
YXInKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShw
cm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJf
d2l0aF91bmtub3duX3BhcmFtZXRlcihzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1l
dGVyLmFkZF9wYXJhbWV0ZXIoJ2ZvbycsICdiYXInKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRl
bnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQot
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSgpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yQnVpbGRp
bmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2lu
ZyB0aGF0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIGJ1aWxkcwotICAgIGEg
cmVzcG9uc2UgYmFzZWQgb24gc3BlY2lmaWVkIG9wdGlvbnMgY29ycmVjdGx5LgotICAgICIiIgot
Ci0gICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAg
ICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVm
bGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRv
d19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0gICAgICAgIHByb2Nlc3Nvci5z
ZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxMCkKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nl
c3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
cGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgIGRlZiB0ZXN0X3Jl
c3BvbnNlX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRfY2xpZW50X3Blcm1pc3Npb24oc2Vs
Zik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdw
ZXJtZXNzYWdlLWRlZmxhdGUnKSkKLSAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzKDEwKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNp
b25fcmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXNwb25zZSkKLQotICAg
IGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfdHJ1ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxm
KToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIoVHJ1ZSkKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2Fn
ZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFso
J2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25z
ZV93aXRoX2ZhbHNlX2Zvcl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBwcm9j
ZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAot
ICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRl
JykpCi0KLSAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihG
YWxzZSkKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVz
cG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5n
ZXRfcGFyYW1ldGVycygpKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Q
cm9jZXNzb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZWdpc3RyeShz
ZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nl
c3NvcigKLSAgICAgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWNvbXByZXNzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBlck1lc3NhZ2VDb21w
cmVzc0V4dGVuc2lvblByb2Nlc3NvcikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5k
c2hha2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNzhhYzA1ZTU4Ny4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwxODggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNoYWtlLl9iYXNlIG1vZHVsZS4iIiIKLQot
Ci1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBh
dGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29j
a2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5zaW9uUGFyYW1ldGVyCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5jb21tb24gaW1wb3J0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vi
c29ja2V0LmNvbW1vbiBpbXBvcnQgZm9ybWF0X2V4dGVuc2lvbnMKLWZyb20gbW9kX3B5d2Vic29j
a2V0LmNvbW1vbiBpbXBvcnQgcGFyc2VfZXh0ZW5zaW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
aGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vi
c29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKLQotCi1j
bGFzcyBWYWxpZGF0ZVN1YnByb3RvY29sVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIi
QSB1bml0dGVzdCBmb3IgdmFsaWRhdGVfc3VicHJvdG9jb2wgbWV0aG9kLiIiIgotCi0gICAgZGVm
IHRlc3RfdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZik6Ci0gICAgICAgICMgU2hvdWxkIHN1Y2Nl
ZWQuCi0gICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGUnKQotICAgICAgICB2YWxp
ZGF0ZV9zdWJwcm90b2NvbCgnU2FtcGxlJykKLSAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wo
J3NhbXBsZVx4N2Vwcm90b2NvbCcpCi0KLSAgICAgICAgIyBTaG91bGQgZmFpbC4KLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICdzYW1wbGVceDA5cHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgxOXBy
b3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MjBwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVc
eDdmcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFwYW5lc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0KLV9URVNUX1RPS0VOX0VYVEVOU0lP
Tl9EQVRBID0gWwotICAgICgnZm9vJywgWygnZm9vJywgW10pXSksCi0gICAgKCdmb287IGJhcics
IFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPWJheicsIFsoJ2Zv
bycsIFsoJ2JhcicsICdiYXonKV0pXSksCi0gICAgKCdmb287IGJhcj1iYXo7IGNhcj1jZHInLCBb
KCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywgJ2NkcicpXSldKSwKLSAgICAoJ2Zvbzsg
YmFyPWJheiwgY2FyOyBjZHInLAotICAgICBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKSwgKCdj
YXInLCBbKCdjZHInLCBOb25lKV0pXSksCi0gICAgKCdhLCBiLCBjLCBkJywKLSAgICAgWygnYScs
IFtdKSwgKCdiJywgW10pLCAoJ2MnLCBbXSksICgnZCcsIFtdKV0pLAotICAgIF0KLQotCi1fVEVT
VF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgKCdmb287IGJhcj0iIicsIFsoJ2Zvbycs
IFsoJ2JhcicsICcnKV0pXSksCi0gICAgKCdmb287IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygn
YmFyJywgJyBiYXogJyldKV0pLAotICAgICgnZm9vOyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFso
J2JhcicsICcsYmF6OycpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdm
b28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywg
WygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSksCi0gICAgKCdmb287IGJhcj0iXHhiYmJheiIn
LCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicpXSldKSwKLSAgICBdCi0KLQotX1RFU1RfUkVE
VU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgnZm9vIFx0ICcsIFsoJ2Zvbycs
IFtdKV0pLAotICAgICgnZm9vOyBcclxuIGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSld
KSwKLSAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXonLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6
JyldKV0pLAotICAgICgnZm9vIDtiYXIgPSBiYXogJywgWygnZm9vJywgWygnYmFyJywgJ2Jheicp
XSldKSwKLSAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2ZvbycsIFtdKSwgKCdiYXInLCBbXSksICgn
YmF6JywgW10pXSksCi0gICAgXQotCi0KLV9URVNUX1JFRFVOREFOVF9RVU9URURfRVhURU5TSU9O
X0RBVEEgPSBbCi0gICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJheiInLCBbKCdmb28nLCBbKCdi
YXInLCAnICBiYXonKV0pXSksCi0gICAgXQotCi0KLWNsYXNzIEV4dGVuc2lvbnNQYXJzZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBfdmVyaWZ5X2V4dGVuc2lvbl9saXN0KHNl
bGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAgICAgIiIiVmVyaWZpZXMgdGhh
dCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxfbGlzdCBoYXZlIHRoZQotICAg
ICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRpb25zIGluIGV4cGVjdGVkX2xp
c3QuIEV4dGVuc2lvbgotICAgICAgICBkZWZpbml0aW9uIHVzZWQgaW4gdGhpcyB0ZXN0IGlzIGEg
cGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQotICAgICAgICBwYXJhbWV0ZXIgZGljdGlv
bmFyeS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0
ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFs
IGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICAgICAobmFtZSwg
cGFyYW1ldGVycykgPSBleHBlY3RlZAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1l
LCBhY3R1YWwuX25hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtZXRlcnMs
IGFjdHVhbC5fcGFyYW1ldGVycykKLQotICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYpOgotICAgICAg
ICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJ
T05fREFUQToKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlzdCgKLSAgICAg
ICAgICAgICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcp
KQotCi0gICAgZGVmIHRlc3RfcGFyc2VfcXVvdGVkX2RhdGEoc2VsZik6Ci0gICAgICAgIGZvciBm
b3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9uIGluIF9URVNUX1FVT1RFRF9FWFRFTlNJT05fREFU
QToKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlzdCgKLSAgICAgICAgICAg
ICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQotCi0g
ICAgZGVmIHRlc3RfcGFyc2VfcmVkdW5kYW50X2RhdGEoc2VsZik6Ci0gICAgICAgIGZvciAoZm9y
bWF0dGVkX3N0cmluZywKLSAgICAgICAgICAgICBkZWZpbml0aW9uKSBpbiBfVEVTVF9SRURVTkRB
TlRfVE9LRU5fRVhURU5TSU9OX0RBVEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5z
aW9uX2xpc3QoCi0gICAgICAgICAgICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhm
b3JtYXR0ZWRfc3RyaW5nKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9xdW90ZWRf
ZGF0YShzZWxmKToKLSAgICAgICAgZm9yIChmb3JtYXR0ZWRfc3RyaW5nLAotICAgICAgICAgICAg
IGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9RVU9URURfRVhURU5TSU9OX0RBVEE6Ci0g
ICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAgICAgICAg
ZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQotICAgIGRl
ZiB0ZXN0X3BhcnNlX2JhZF9kYXRhKHNlbGYpOgotICAgICAgICBfVEVTVF9CQURfRVhURU5TSU9O
X0RBVEEgPSBbCi0gICAgICAgICAgICAoJ2ZvbzsgOyAnKSwKLSAgICAgICAgICAgICgnZm9vOyBh
IGEnKSwKLSAgICAgICAgICAgICgnZm9vIGZvbycpLAotICAgICAgICAgICAgKCcsLCwnKSwKLSAg
ICAgICAgICAgICgnZm9vOyBiYXI9JyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJob2dlJyks
Ci0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJhXHIiJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFy
PSJcXFx4ZmYiJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPVxyYScpLAotICAgICAgICAgICAg
XQotCi0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nIGluIF9URVNUX0JBRF9FWFRFTlNJT05f
REFUQToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgIEV4
dGVuc2lvblBhcnNpbmdFeGNlcHRpb24sIHBhcnNlX2V4dGVuc2lvbnMsIGZvcm1hdHRlZF9zdHJp
bmcpCi0KLQotY2xhc3MgRm9ybWF0RXh0ZW5zaW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
Ci0gICAgZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIGZvciBmb3Jt
YXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToK
LSAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBbXQotICAgICAgICAgICAgZm9yIGRlZmluaXRpb24g
aW4gZGVmaW5pdGlvbnM6Ci0gICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZGVm
aW5pdGlvbgotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihu
YW1lKQotICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMK
LSAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9zdHJpbmcsIGZv
cm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbnMpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZj
ODcxMzgyMzBiMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hh
a2VfaHliaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBoYW5kc2hha2Ug
bW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAj
IFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkgaW1wb3J0IEhhbmRzaGFrZXIKLQotaW1w
b3J0IG1vY2sKLQotCi1jbGFzcyBSZXF1ZXN0RGVmaW5pdGlvbihvYmplY3QpOgotICAgICIiIkEg
Y2xhc3MgZm9yIGhvbGRpbmcgZGF0YSBmb3IgY29uc3RydWN0aW5nIG9wZW5pbmcgaGFuZHNoYWtl
IHN0cmluZ3MgZm9yCi0gICAgdGVzdGluZyB0aGUgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29y
LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZCwgdXJpLCBoZWFkZXJz
KToKLSAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi51cmkgPSB1cmkK
LSAgICAgICAgc2VsZi5oZWFkZXJzID0gaGVhZGVycwotCi0KLWRlZiBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKToKLSAgICByZXR1cm4gUmVxdWVzdERlZmluaXRpb24oCi0gICAgICAgICdHRVQn
LCAnL2RlbW8nLAotICAgICAgICB7J0hvc3QnOiAnc2VydmVyLmV4YW1wbGUuY29tJywKLSAgICAg
ICAgICdVcGdyYWRlJzogJ3dlYnNvY2tldCcsCi0gICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdy
YWRlJywKLSAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleSc6ICdkR2hsSUhOaGJYQnNaU0J1YjI1
alpRPT0nLAotICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbic6ICcxMycsCi0gICAgICAg
ICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbSd9KQotCi0KLWRlZiBfY3JlYXRlX3JlcXVl
c3QocmVxdWVzdF9kZWYpOgotICAgIGNvbm4gPSBtb2NrLk1vY2tDb25uKCcnKQotICAgIHJldHVy
biBtb2NrLk1vY2tSZXF1ZXN0KAotICAgICAgICBtZXRob2Q9cmVxdWVzdF9kZWYubWV0aG9kLAot
ICAgICAgICB1cmk9cmVxdWVzdF9kZWYudXJpLAotICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3Rf
ZGVmLmhlYWRlcnMsCi0gICAgICAgIGNvbm5lY3Rpb249Y29ubikKLQotCi1kZWYgX2NyZWF0ZV9o
YW5kc2hha2VyKHJlcXVlc3QpOgotICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3Qs
IG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICByZXR1cm4gaGFuZHNoYWtlcgotCi0KLWNsYXNz
IFN1YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkaXNwYXRj
aGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgc2V0cyB0aGUgaS10aCBzdWJwcm90b2Nv
bAotICAgIG9mIHJlcXVlc3RlZCBvbmVzIHRvIHdzX3Byb3RvY29sIHdoZXJlIGkgaXMgZ2l2ZW4g
b24gY29uc3RydWN0aW9uIGFzIGluZGV4Ci0gICAgYXJndW1lbnQuIElmIGluZGV4IGlzIG5lZ2F0
aXZlLCBkZWZhdWx0X3ZhbHVlIHdpbGwgYmUgc2V0IHRvIHdzX3Byb3RvY29sLgotICAgICIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlPU5vbmUpOgotICAg
ICAgICBzZWxmLmluZGV4ID0gaW5kZXgKLSAgICAgICAgc2VsZi5kZWZhdWx0X3ZhbHVlID0gZGVm
YXVsdF92YWx1ZQotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRl
eHQpOgotICAgICAgICBpZiBzZWxmLmluZGV4ID49IDA6Ci0gICAgICAgICAgICBjb25uX2NvbnRl
eHQud3NfcHJvdG9jb2wgPSBjb25uX2NvbnRleHQud3NfcmVxdWVzdGVkX3Byb3RvY29sc1sKLSAg
ICAgICAgICAgICAgICBzZWxmLmluZGV4XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29u
bl9jb250ZXh0LndzX3Byb3RvY29sID0gc2VsZi5kZWZhdWx0X3ZhbHVlCi0KLSAgICBkZWYgdHJh
bnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAgICBwYXNzCi0KLQotY2xhc3Mg
SGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1jbGFz
cyBBYm9ydGluZ0Rpc3BhdGNoZXIob2JqZWN0KToKLSAgICAiIiJBIGRpc3BhdGNoZXIgZm9yIHRl
c3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4gZXhjZXB0aW9uIGluCi0gICAgZG9fZXh0
cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBk
b19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbignQW4gZXhjZXB0aW9uIHRvIHJlamVjdCB0aGUgcmVxdWVz
dCcpCi0KLSAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAg
ICBwYXNzCi0KLQotY2xhc3MgQWJvcnRlZEJ5VXNlckRpc3BhdGNoZXIob2JqZWN0KToKLSAgICAi
IiJBIGRpc3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4KLSAg
ICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGluIGRvX2V4dHJhX2hhbmRzaGFrZSB0byByZWplY3Qg
dGhlIHJlcXVlc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYs
IGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHJhaXNlIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fu
IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gdG8gcmVqZWN0IHRoZSAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QnKQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEo
c2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLV9FWFBFQ1RFRF9SRVNQT05T
RSA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJwotICAgICdV
cGdyYWRlOiB3ZWJzb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAg
ICAnU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1cclxu
XHJcbicpCi0KLQotY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIkEgdW5pdHRlc3QgZm9yIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0w
NiBhbmQgbGF0ZXIKLSAgICBoYW5kc2hha2UgcHJvY2Vzc29yLgotICAgICIiIgotCi0gICAgZGVm
IHRlc3RfZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpKQotICAgICAgICBkaXNwYXRjaGVyID0gbW9j
ay5Nb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVk
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVT
UE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnL2RlbW8nLCByZXF1ZXN0LndzX3Jlc291cmNlKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdodHRwOi8vZXhhbXBsZS5jb20nLCByZXF1ZXN0LndzX29yaWdpbikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXF1ZXN0LndzX3Byb3RvY29sKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCwgcmVxdWVzdC53c192ZXJz
aW9uKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfZXh0cmFfaGVhZGVycyhzZWxm
KToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAg
ICAgICAjIEFkZCBoZWFkZXJzIG5vdCByZWxhdGVkIHRvIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRz
aGFrZS4KLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRm9vS2V5J10gPSAnQmFyVmFsdWUn
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0VtcHR5S2V5J10gPSAnJwotCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFr
ZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgX0VYUEVD
VEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9jYXBpdGFsaXplZF92YWx1ZShzZWxmKToKLSAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWyd1cGdyYWRlJ10gPSAnV0VCU09DS0VUJwotCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBf
Y3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgX0VYUEVDVEVEX1JF
U1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVVBHUkFERScKLQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0
ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05T
RSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfZG9f
aGFuZHNoYWtlX3dpdGhfbXVsdGlwbGVfY29ubmVjdGlvbl92YWx1ZXMoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VwZ3JhZGUsIGtlZXAtYWxpdmUsICwgJwot
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAg
IGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
Ci0KLSAgICBkZWYgdGVzdF9hYm9ydGluZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGhhbmRz
aGFrZXIgPSBIYW5kc2hha2VyKAotICAgICAgICAgICAgX2NyZWF0ZV9yZXF1ZXN0KF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpKSwKLSAgICAgICAgICAgIEFib3J0aW5nRGlzcGF0Y2hlcigpKQot
ICAgICAgICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gZXhjZXB0aW9uLiBDaGVjayB0
aGF0IGl0J3Mgbm90IGNhdWdodCBieQotICAgICAgICAjIGRvX2hhbmRzaGFrZS4KLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbiwgaGFuZHNoYWtlci5k
b19oYW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbChz
ZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQot
ICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAn
Y2hhdCwgc3VwZXJjaGF0JwotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVx
dWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIFN1YnBy
b3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKDApKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCi0KLSAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCi0gICAgICAgICAgICAnSFRU
UC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJwotICAgICAgICAgICAgJ1VwZ3JhZGU6
IHdlYnNvY2tldFxyXG4nCi0gICAgICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0g
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJL
K3hPbz1cclxuJwotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGNoYXRcclxu
XHJcbicpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNQT05TRSwgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdjaGF0JywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFr
ZV9wcm90b2NvbF9ub3RfaW5fcmVxdWVzdF9idXRfaW5fcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIoCi0gICAgICAgICAgICByZXF1ZXN0LCBTdWJwcm90b2NvbENob29zaW5nRGlzcGF0
Y2hlcigtMSwgJ2Zvb2JhcicpKQotICAgICAgICAjIE5vIHJlcXVlc3QgaGFzIGJlZW4gbWFkZSBi
dXQgd3NfcHJvdG9jb2wgaXMgc2V0LiBIYW5kc2hha2VFeGNlcHRpb24KLSAgICAgICAgIyBtdXN0
IGJlIHJhaXNlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9u
LCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX3Byb3RvY29sX25vX3Byb3RvY29sX3NlbGVjdGlvbihzZWxmKToKLSAgICAgICAgcmVxdWVz
dF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5o
ZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hhdCwgc3VwZXJjaGF0JwotCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhh
bmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgIyB3c19wcm90
b2NvbCBpcyBub3Qgc2V0LiBIYW5kc2hha2VFeGNlcHRpb24gbXVzdCBiZSByYWlzZWQuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRlbnNpb25zKHNl
bGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0g
KAotICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlLCB1bmtu
b3duJykKLQotICAgICAgICBFWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAgICAgICdIVFRQ
LzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCi0gICAgICAgICAgICAnVXBncmFkZTog
d2Vic29ja2V0XHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksr
eE9vPVxyXG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiBwZXJtZXNz
YWdlLWNvbXByZXNzOyBtZXRob2Q9ZGVmbGF0ZVxyXG4nCi0gICAgICAgICAgICAnXHJcbicpCi0K
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAg
aGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVT
UE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgZXh0ZW5z
aW9uID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydt
ZXRob2QnXSwgZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfbmFtZXMoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnZGVmbGF0ZScsIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdtZXRo
b2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNp
b25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NB
R0VfQ09NUFJFU1NJT05fRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotCi0gICAgZGVmIHRlc3RfZG9f
aGFuZHNoYWtlX3dpdGhfcGVybWVzc2FnZV9jb21wcmVzcyhzZWxmKToKLSAgICAgICAgcmVxdWVz
dF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5o
ZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKLSAgICAgICAgICAgICdwZXJt
ZXNzYWdlLWNvbXByZXNzOyBtZXRob2Q9ZGVmbGF0ZScpCi0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hh
bmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVO
U0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0u
bmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVu
c2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVT
U0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0KLSAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9xdW90ZWRfZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAgICAgcmVxdWVz
dF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5o
ZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKLSAgICAgICAgICAgICdwZXJt
ZXNzYWdlLWNvbXByZXNzOyBtZXRob2Q9ZGVmbGF0ZSwgLCAnCi0gICAgICAgICAgICAndW5rbm93
bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJcbiAgICAgIFxcXHJmICAiOyBwdj1ucnQnKQotCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhh
bmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0
LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKLSAgICAgICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVx
dWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdwZXJtZXNzYWdlLWNvbXByZXNzJywgZmlyc3RfZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ21ldGhvZCddLCBmaXJzdF9leHRlbnNpb24uZ2V0X3BhcmFtZXRl
cl9uYW1lcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkZWZsYXRlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBmaXJzdF9leHRlbnNpb24uZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbWV0
aG9kJykpCi0gICAgICAgIHNlY29uZF9leHRlbnNpb24gPSByZXF1ZXN0LndzX3JlcXVlc3RlZF9l
eHRlbnNpb25zWzFdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Vua25vd24nLCBzZWNvbmRf
ZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IFsnZScsICdtYScsICdwdiddLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfbmFtZXMo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbWNeMicsIHNlY29uZF9leHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl92YWx1ZSgnZScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcgXHJmICcs
IHNlY29uZF9leHRlbnNpb24uZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbWEnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnbnJ0Jywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVl
KCdwdicpKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfb3B0aW9uYWxfaGVhZGVy
cyhzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYo
KQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydFbXB0eVZhbHVlJ10gPSAnJwotICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydBS2V5J10gPSAnQVZhbHVlJwotCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBf
Y3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ0FWYWx1ZScsIHJl
cXVlc3QuaGVhZGVyc19pblsnQUtleSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgJycsIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQotCi0gICAgZGVm
IHRlc3RfYWJvcnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBoYW5kc2hha2VyID0g
SGFuZHNoYWtlcigKLSAgICAgICAgICAgIF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKSksCi0gICAgICAgICAgICBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcigpKQotICAg
ICAgICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlv
bi4gQ2hlY2sgdGhhdCBpdCdzCi0gICAgICAgICMgbm90IGNhdWdodCBieSBkb19oYW5kc2hha2Uu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGhhbmRz
aGFrZXIuZG9faGFuZHNoYWtlKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfbXV4
X2FuZF9kZWZsYXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKCclcywgJXMnICUgKAotICAgICAgICAgICAgICAgIGNvbW1v
bi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgIGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VY
VEVOU0lPTikpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYp
Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAg
ICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAjIG11eCBzaG91bGQgYmUgcmVq
ZWN0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5z
aW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhU
RU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1sw
XS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qud3NfZXh0
ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhf
RVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9u
X3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0KLSAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9kZWZsYXRlX2ZyYW1lX2FuZF9tdXgoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9k
ZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoJyVzLCAlcycgJSAoCi0g
ICAgICAgICAgICAgICAgY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAg
ICAgICAgIGNvbW1vbi5NVVhfRVhURU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNo
YWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAg
ICMgbXV4IHNob3VsZCBiZSByZWplY3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBs
ZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVx
dWVzdC53c19leHRlbnNpb25zWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLkRF
RkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2V4
dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qu
d3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1v
bi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShoYXNhdHRyKHJlcXVlc3QsICdtdXgnKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hh
bmRzaGFrZV93aXRoX3Blcm1lc3NhZ2VfY29tcHJlc3NfYW5kX211eChzZWxmKToKLSAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0
X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKLSAgICAgICAgICAg
ICclczsgbWV0aG9kPWRlZmxhdGUsICVzJyAlICgKLSAgICAgICAgICAgICAgICBjb21tb24uUEVS
TUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLk1V
WF9FWFRFTlNJT04pKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3Rf
ZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0g
ICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qud3NfZXh0ZW5zaW9uc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwg
bGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5h
bWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9j
ZXNzb3InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QubXV4X3Byb2Nlc3Nvci5p
c19hY3RpdmUoKSkKLSAgICAgICAgbXV4X2V4dGVuc2lvbnMgPSByZXF1ZXN0Lm11eF9wcm9jZXNz
b3IuZXh0ZW5zaW9ucygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG11eF9leHRl
bnNpb25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9DT01Q
UkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgbXV4X2V4dGVuc2lv
bnNbMF0ubmFtZSgpKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfbXV4X2FuZF9w
ZXJtZXNzYWdlX2NvbXByZXNzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAgJyVzLCAlczsgbWV0aG9kPWRlZmxh
dGUnICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAg
ICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTikpCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFr
ZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UoKQotICAgICAgICAjIG11eCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIGZp
cnN0X2V4dGVuc2lvbiA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBmaXJzdF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9F
WFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihy
ZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpKQotCi0gICAgZGVmIHRlc3RfYmFkX3JlcXVlc3RzKHNl
bGYpOgotICAgICAgICBiYWRfY2FzZXMgPSBbCi0gICAgICAgICAgICAoJ0hUVFAgcmVxdWVzdCcs
Ci0gICAgICAgICAgICAgUmVxdWVzdERlZmluaXRpb24oCi0gICAgICAgICAgICAgICAgICdHRVQn
LCAnL2RlbW8nLAotICAgICAgICAgICAgICAgICB7J0hvc3QnOiAnd3d3Lmdvb2dsZS5jb20nLAot
ICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOgotICAgICAgICAgICAgICAgICAgICAgICdN
b3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OycKLSAgICAgICAg
ICAgICAgICAgICAgICAnIGVuLVVTOyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94
LzMuNS4zJwotICAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBHVEJBJywKLSAgICAgICAgICAg
ICAgICAgICdBY2NlcHQnOgotICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0bWwsYXBwbGlj
YXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwnCi0gICAgICAgICAgICAgICAg
ICAgICAgJyovKjtxPTAuOCcsCi0gICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzog
J2VuLXVzLGVuO3E9MC41JywKLSAgICAgICAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAn
Z3ppcCxkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICdBY2NlcHQtQ2hhcnNldCc6ICdJU08t
ODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjcnLAotICAgICAgICAgICAgICAgICAgJ0tlZXAtQWxp
dmUnOiAnMzAwJywKLSAgICAgICAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ2tlZXAtYWxpdmUn
fSksIE5vbmUsIFRydWUpXQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3Jl
cXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYubWV0aG9kID0gJ1BPU1QnCi0gICAgICAg
IGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBtZXRob2QnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1
ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQot
ICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snSG9zdCddCi0gICAgICAgIGJhZF9jYXNl
cy5hcHBlbmQoKCdNaXNzaW5nIEhvc3QnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAg
ICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBk
ZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snVXBncmFkZSddCi0gICAgICAgIGJhZF9jYXNlcy5hcHBl
bmQoKCdNaXNzaW5nIFVwZ3JhZGUnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10gPSAnbm9ud2Vic29ja2V0JwotICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnV3JvbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkK
LQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAg
ICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10KLSAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgoJ01pc3NpbmcgQ29ubmVjdGlvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVl
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdEb3duZ3JhZGUnCi0g
ICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYs
IE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
S2V5J10KLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgU2VjLVdlYlNvY2tldC1L
ZXknLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1Nl
Yy1XZWJTb2NrZXQtS2V5J10gPSAoCi0gICAgICAgICAgICAnZEdobElITmhiWEJzWlNCdWIyNWpa
UT09Z2FyYmFnZScpCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29j
a2V0LUtleSAod2l0aCBnYXJiYWdlIG9uIHRoZSB0YWlsKScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1LZXknXSA9ICdZUT09JyAgIyBCQVNFNjQgb2YgJ2EnCi0gICAgICAgIGJh
ZF9jYXNlcy5hcHBlbmQoCi0gICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5IChk
ZWNvZGVkIHZhbHVlIGlzIG5vdCAxNiBvY3RldHMgbG9uZyknLAotICAgICAgICAgICAgIHJlcXVl
c3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKLSAgICAgICAgIyBUaGUgbGFzdCBjaGFyYWN0ZXIgcmlnaHQgYmVmb3Jl
ID09IG11c3QgYmUgYW55IG9mIEEsIFEsIHcgYW5kIGcuCi0gICAgICAgIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCi0gICAgICAgICAgICAnQVFJREJBVUdCd2dK
Q2dzTURRNFBFQz09JykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgn
V3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKHBhZGRpbmcgYml0cyBhcmUgbm90IHplcm8pJywKLSAg
ICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2Rl
ZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRl
cnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCi0gICAgICAgICAgICAnZEdobElITmhiWEJzWlNC
dWIyNWpaUT09LGRHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScpCi0gICAgICAgIGJhZF9jYXNlcy5h
cHBlbmQoCi0gICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5IChtdWx0aXBsZSB2
YWx1ZXMpJywKLSAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAg
ICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIGRlbCBy
ZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQotICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0LVZlcnNpb24nLCByZXF1ZXN0X2Rl
ZiwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkpCi0KLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXSA9ICczJwotICAgICAgICBiYWRfY2Fz
ZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9uJywgcmVxdWVzdF9kZWYsIE5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKLQotICAgICAgICByZXF1ZXN0
X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddID0gJzEzLCAxMycKLSAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbiAobXVsdGlwbGUgdmFsdWVz
KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQot
Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAg
ICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2lsbGVn
YWxceDA5cHJvdG9jb2wnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdJbGxlZ2FsIFNlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2Rl
ZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnXSA9ICcnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdFbXB0eSBTZWMtV2ViU29j
a2V0LVByb3RvY29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQw
MCwgVHJ1ZSkpCi0KLSAgICAgICAgZm9yIChjYXNlX25hbWUsIHJlcXVlc3RfZGVmLCBleHBlY3Rl
ZF9zdGF0dXMsCi0gICAgICAgICAgICAgZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pIGluIGJh
ZF9jYXNlczoKLSAgICAgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCi0gICAgICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1v
Y2tEaXNwYXRjaGVyKCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gZXhjZXB0
aW9uIHRocm93biBmb3IgXCclc1wnIGNhc2UnICUgY2FzZV9uYW1lKQotICAgICAgICAgICAgZXhj
ZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUoZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZF9zdGF0dXMsIGUuc3RhdHVzKQotICAgICAgICAgICAgZXhjZXB0IFZl
cnNpb25FeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBl
Y3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkwMC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNm
OWYyN2NhMmQ5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFr
ZV9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MTYgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNoYWtl
Lmh5YmkwMCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lz
X3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxl
LgotCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFr
ZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkwMCBpbXBvcnQg
SGFuZHNoYWtlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkwMCBpbXBvcnQg
X3ZhbGlkYXRlX3N1YnByb3RvY29sCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1fVEVTVF9L
RVkxID0gJzQgQDEgIDQ2NTQ2eFclMGwgMSA1JwotX1RFU1RfS0VZMiA9ICcxMjk5OCA1IFkzIDEg
IC5QMDAnCi1fVEVTVF9LRVkzID0gJ15uOmRzWzRVJwotX1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNF
ID0gJzhqS1NcJ3k6RypDbyxXeGEtJwotCi0KLV9HT09EX1JFUVVFU1QgPSAoCi0gICAgODAsCi0g
ICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUu
Y29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2Vi
U29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bCc6ICdzYW1wbGUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAn
U2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRw
Oi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVRVUVT
VF9DQVBJVEFMSVpFRF9IRUFERVJfVkFMVUVTID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAg
ICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAg
ICdDb25uZWN0aW9uJzogJ1VQR1JBREUnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzog
X1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywK
LSAgICAgICAgJ1VwZ3JhZGUnOiAnV0VCU09DS0VUJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQt
S2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29t
JywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFUVVFU1RfQ0FTRV9NSVhFRF9I
RUFERVJfTkFNRVMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7
Ci0gICAgICAgICdoT3NUJzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ2NPbk5lQ3RJb04nOiAn
VXBncmFkZScsCi0gICAgICAgICdzRWMtd0Vic09jS2VULWtFeTInOiBfVEVTVF9LRVkyLAotICAg
ICAgICAnc0VjLXdFYnNPY0tlVC1wUm9Ub0NvTCc6ICdzYW1wbGUnLAotICAgICAgICAndVBnUmFE
ZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1rRXkxJzogX1RFU1RfS0VZ
MSwKLSAgICAgICAgJ29SaUdpTic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAg
X1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JUID0gKAotICAgICdIVFRQ
LzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6
IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMt
V2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMt
V2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NIQUxM
RU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFID0gKAotICAgICdIVFRQLzEu
MSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdl
YlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2Vi
U29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAnU2VjLVdl
YlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVO
R0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUID0gKAotICAgIDgw
ODEsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4
YW1wbGUuY29tOjgwODEnLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdTZWMtV2ViU29j
a2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcs
Ci0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAnT3Jp
Z2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi1f
R09PRF9SRVNQT05TRV9OT05ERUZBVUxUX1BPUlQgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBXZWJT
b2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJc
bicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtTG9j
YXRpb246IHdzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNvY2tl
dC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVT
UE9OU0UpCi0KLV9HT09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYgPSAoCi0gICAgJ0hUVFAvMS4x
IDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2Vi
U29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtTG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4nCi0gICAgJ1Nl
Yy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdTZWMtV2Vi
U29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0gICAgX1RFU1RfQ0hB
TExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX05PX1BST1RPQ09MID0gKAotICAgIDgw
LAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFt
cGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2Vj
LVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29j
a2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAg
ICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMp
Ci0KLV9HT09EX1JFU1BPTlNFX05PX1BST1RPQ09MID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2Vi
U29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxy
XG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxv
Y2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9y
aWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NI
QUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hFQURFUlMg
PSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdI
b3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0g
ICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnRW1wdHlW
YWx1ZSc6ICcnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAot
ICAgICAgICAnQUtleSc6ICdBVmFsdWUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQn
LAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09y
aWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQot
IyBUT0RPKHR5b3NoaW5vKTogSW5jbHVkZSBcciBcbiBpbiBrZXkzLCBjaGFsbGVuZ2UgcmVzcG9u
c2UuCi0KLV9HT09EX1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZID0gKAotICAgIDgwLAot
ICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxl
LmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkyJzogJ3kgIFIyIDQ4IFExTzQgIGV8QlYzIGk1IDEgIHUtIDY1JywKLSAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUn
OiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6ICczNiA3ICAgNzQg
aSAgOTIgMlwnbSA5IDBHJywKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20n
LAotICAgIH0sCi0gICAgJycuam9pbihtYXAoY2hyLCBbMHgwMSwgMHhkMSwgMHhkZCwgMHgzYiwg
MHhkMSwgMHg1NiwgMHg2MywgMHhmZl0pKSkKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9OT05QUklO
VEFCTEVfS0VZID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRz
aGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246
IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUu
Y29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUu
Y29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAn
XHJcbicgKwotICAgICcnLmpvaW4obWFwKGNociwgWzB4MGIsIDB4OTksIDB4ZmEsIDB4NTUsIDB4
YmQsIDB4MDEsIDB4MjMsIDB4N2IsCi0gICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhhMiwg
MHhmMSwgMHhkMCwgMHg4NywgMHg4YSwgMHhlZSwgMHhlYl0pKSkKLQotX0dPT0RfUkVRVUVTVF9X
SVRIX1FVRVJZX1BBUlQgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vP2U9bWMy
JywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5l
Y3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9L
RVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAg
ICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzog
X1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAg
IH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9RVUVSWV9QQVJUID0g
KAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0g
ICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxu
JwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW8/ZT1t
YzJcclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
bicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicg
KwotICAgIF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0JBRF9SRVFVRVNUUyA9ICgKLSAg
ICAoICAjIEhUVFAgcmVxdWVzdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAg
ICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ3d3dy5nb29nbGUuY29t
JywKLSAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7
IEludGVsIE1hYyBPUyBYIDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVuLVVT
OyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4zJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnIEdUQjYgR1RCQScsCi0gICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQv
aHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcKLSAgICAg
ICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICdBY2NlcHQtTGFuZ3Vh
Z2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdn
emlwLGRlZmxhdGUnLAotICAgICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JzogJ0lTTy04ODU5LTEs
dXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAgICAnS2VlcC1BbGl2ZSc6ICczMDAnLAot
ICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAna2VlcC1hbGl2ZScsCi0gICAgICAgIH0pLAotICAg
ICggICMgV3JvbmcgbWV0aG9kCi0gICAgICAgIDgwLAotICAgICAgICAnUE9TVCcsCi0gICAgICAg
ICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywK
LSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Q
cm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywK
LSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAg
ICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBf
VEVTVF9LRVkzKSwKLSAgICAoICAjIE1pc3NpbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAg
ICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0
JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAot
ICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAg
ICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6
Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAgICgg
ICMgV3JvbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcv
ZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAg
ICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJT
b2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnTm9uV2ViU29ja2V0JywK
LSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAg
ICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBf
VEVTVF9LRVkzKSwKLSAgICAoICAjIEVtcHR5IFdlYlNvY2tldC1Qcm90b2NvbAotICAgICAgICA4
MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1Vw
Z3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0g
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICcnLAotICAgICAgICAgICAgJ1Vw
Z3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBf
VEVTVF9LRVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAot
ICAgICAgICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIFdyb25nIHBvcnQgbnVt
YmVyIGZvcm1hdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycs
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tOjB4NTAnLAotICAg
ICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNv
Y2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3Rv
Y29sJzogJ3NhbXBsZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAg
ICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAn
T3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNU
X0tFWTMpLAotICAgICggICMgSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaAotICAgICAg
ICA4MDgwLAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAg
ICAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24n
OiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZ
MiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAg
ICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFt
cGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAgICggICMgSWxs
ZWdhbCBXZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAotICAg
ICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNv
bScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdT
ZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wnOiAnaWxsZWdhbFx4MDlwcm90b2NvbCcsCi0gICAgICAgICAgICAnVXBncmFk
ZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNU
X0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAg
ICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotKQotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpOgotICAgIGRhdGEgPSAnJwotICAgIGlmIGxlbihyZXF1ZXN0X2RlZikgPiA0
OgotICAgICAgICBkYXRhID0gcmVxdWVzdF9kZWZbNF0KLSAgICBjb25uID0gbW9jay5Nb2NrQ29u
bihkYXRhKQotICAgIGNvbm4ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIHJlcXVlc3RfZGVmWzBd
KQotICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KAotICAgICAgICBtZXRob2Q9cmVxdWVzdF9k
ZWZbMV0sCi0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZlsyXSwKLSAgICAgICAgaGVhZGVyc19pbj1y
ZXF1ZXN0X2RlZlszXSwKLSAgICAgICAgY29ubmVjdGlvbj1jb25uKQotCi0KLWRlZiBfY3JlYXRl
X2dldF9tZW1vcml6ZWRfbGluZXMobGluZXMpOgotICAgICIiIkNyZWF0ZXMgYSBmdW5jdGlvbiB0
aGF0IHJldHVybnMgdGhlIGdpdmVuIHN0cmluZy4iIiIKLQotICAgIGRlZiBnZXRfbWVtb3JpemVk
X2xpbmVzKCk6Ci0gICAgICAgIHJldHVybiBsaW5lcwotICAgIHJldHVybiBnZXRfbWVtb3JpemVk
X2xpbmVzCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhyZXF1ZXN0X2xpbmVz
X3NldCk6Ci0gICAgcmVxdWVzdHMgPSBbXQotICAgIGZvciBsaW5lcyBpbiByZXF1ZXN0X2xpbmVz
X3NldDoKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcyA9IF9jcmVhdGVf
Z2V0X21lbW9yaXplZF9saW5lcygKLSAgICAgICAgICAgICAgICBsaW5lcykKLSAgICAgICAgcmVx
dWVzdHMuYXBwZW5kKHJlcXVlc3QpCi0gICAgcmV0dXJuIHJlcXVlc3RzCi0KLQotY2xhc3MgSHlC
aTAwSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfZ29v
ZF9yZXF1ZXN0X2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihy
ZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFu
ZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxU
X1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScs
IHJlcXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3czovL2V4YW1w
bGUuY29tL2RlbW8nLCByZXF1ZXN0LndzX2xvY2F0aW9uKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9y
ZXF1ZXN0X2NhcGl0YWxpemVkX2hlYWRlcl92YWx1ZXMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9DQVBJVEFMSVpFRF9IRUFERVJfVkFMVUVT
KQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNw
YXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3RfZ29vZF9yZXF1ZXN0X2Nhc2VfbWl4ZWRfaGVhZGVyX25hbWVzKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfQ0FTRV9NSVhFRF9IRUFE
RVJfTkFNRVMpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2su
TW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX0RFRkFVTFRfUE9SVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0K
LSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX2RlZmF1bHRfcG9ydChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIDQ0MykKLSAgICAgICAg
cmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2Vy
KHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1NFQ1VS
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJv
dG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfbm9uZGVmYXVsdF9wb3J0KHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9OREVG
QVVMVF9QT1JUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hl
cigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JULAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0
ZXN0X2dvb2RfcmVxdWVzdF9zZWN1cmVfbm9uX2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX05PTkRFRkFVTFRfUE9SVCkK
LSAgICAgICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIgPSBI
YW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BP
TlNFX1NFQ1VSRV9OT05ERUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUn
LCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2RlZmF1
bHRfbm9fcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
X0dPT0RfUkVRVUVTVF9OT19QUk9UT0NPTCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFr
ZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfTk9f
UFJPVE9DT0wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qud3Nf
cHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfb3B0aW9uYWxfaGVhZGVycyhz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX1dJ
VEhfT1BUSU9OQUxfSEVBREVSUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVx
dWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FWYWx1ZScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2lu
WydFbXB0eVZhbHVlJ10pCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfd2l0aF9ub25wcmlu
dGFibGVfa2V5KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09E
X1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZKQotICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05T
RV9XSVRIX05PTlBSSU5UQUJMRV9LRVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdz
YW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0
X3dpdGhfcXVlcnlfcGFydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dChfR09PRF9SRVFVRVNUX1dJVEhfUVVFUllfUEFSVCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9O
U0VfV0lUSF9RVUVSWV9QQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd3M6Ly9l
eGFtcGxlLmNvbS9kZW1vP2U9bWMyJywgcmVxdWVzdC53c19sb2NhdGlvbikKLQotICAgIGRlZiB0
ZXN0X2JhZF9yZXF1ZXN0cyhzZWxmKToKLSAgICAgICAgZm9yIHJlcXVlc3QgaW4gbWFwKF9jcmVh
dGVfcmVxdWVzdCwgX0JBRF9SRVFVRVNUUyk6Ci0gICAgICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KQotCi0KLWNsYXNzIEh5QmkwMFZhbGlkYXRlU3VicHJvdG9jb2xUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICBkZWYgdGVzdF92YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmKToKLSAgICAgICAg
IyBzaG91bGQgc3VjY2VlZC4KLSAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGUn
KQotICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScpCi0gICAgICAgIF92YWxp
ZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlXHg3ZXByb3RvY29sJykKLSAgICAgICAgX3ZhbGlkYXRl
X3N1YnByb3RvY29sKCdzYW1wbGVceDIwcHJvdG9jb2wnKQotCi0gICAgICAgICMgc2hvdWxkIGZh
aWwuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhj
ZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2ws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJvdG9jb2wnKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3NhbXBsZVx4N2Zwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRz
aGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnBy
b3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFwYW5lc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0MzZkYzU3YzM3MzEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDkwICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIi
VGVzdHMgZm9yIGh0dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVz
dAotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAotCi0KLWNs
YXNzIFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBo
dHRwX2hlYWRlcl91dGlsIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlbGF0aXZl
X3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgnL3dzL3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IGhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcG9ydCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgIGRlZiB0ZXN0X3BhcnNl
X2Fic29sdXRlX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRw
X2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKLSAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDoxMDA4
MC93cy90ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbG9jYWxob3N0JywgaG9zdCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMDA4MCwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNv
dXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vZXhh
bXBsZS5jb20vd3MvdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29t
JywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MCwgcG9ydCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0
LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dz
czovL2V4YW1wbGUuY29tLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29t
JywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0NDMsIHBvcnQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNv
dXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vZXhh
bXBsZS5jb206ODA4MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywg
aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MDgwLCBwb3J0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlk
X3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBy
ZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0
aWwucGFyc2VfdXJpKCd3czovL2xvY2FsaG9zdDonKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9o
ZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzOi8vbG9jYWxob3N0Oi93cycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdF9tZW1vcml6aW5nZmlsZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYx
YjhlZWY0MzM3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21lbW9yaXpp
bmdmaWxlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1lbW9yaXppbmdm
aWxlIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCB1bml0dGVzdAotCi1p
bXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vi
c29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1lbW9yaXppbmdm
aWxlCi0KLQotY2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5p
dHRlc3QgZm9yIG1lbW9yaXppbmdmaWxlIG1vZHVsZS4iIiIKLQotICAgIGRlZiBjaGVjayhzZWxm
LCBtZW1vcml6aW5nX2ZpbGUsIG51bV9yZWFkLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgZm9y
IHVudXNlZCBpbiByYW5nZShudW1fcmVhZCk6Ci0gICAgICAgICAgICBtZW1vcml6aW5nX2ZpbGUu
cmVhZGxpbmUoKQotICAgICAgICBhY3R1YWxfbGlzdCA9IG1lbW9yaXppbmdfZmlsZS5nZXRfbWVt
b3JpemVkX2xpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlz
dCksIGxlbihhY3R1YWxfbGlzdCkpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHpp
cChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkLCBhY3R1YWwpCi0KLSAgICBkZWYgY2hlY2tfd2l0aF9zaXplKHNlbGYsIG1l
bW9yaXppbmdfZmlsZSwgcmVhZF9zaXplLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgcmVhZF9s
aXN0ID0gW10KLSAgICAgICAgcmVhZF9saW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgICAgIGxpbmUgPSBtZW1vcml6aW5nX2ZpbGUucmVhZGxpbmUocmVhZF9zaXplKQotICAg
ICAgICAgICAgbGluZV9sZW5ndGggPSBsZW4obGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShsaW5lX2xlbmd0aCA8PSByZWFkX3NpemUpCi0gICAgICAgICAgICBpZiBsaW5lX2xlbmd0
aCA9PSAwOgotICAgICAgICAgICAgICAgIGlmIHJlYWRfbGluZSAhPSAnJzoKLSAgICAgICAgICAg
ICAgICAgICAgcmVhZF9saXN0LmFwcGVuZChyZWFkX2xpbmUpCi0gICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIHJlYWRfbGluZSArPSBsaW5lCi0gICAgICAgICAgICBpZiBsaW5lW2xp
bmVfbGVuZ3RoIC0gMV0gPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5k
KHJlYWRfbGluZSkKLSAgICAgICAgICAgICAgICByZWFkX2xpbmUgPSAnJwotICAgICAgICBhY3R1
YWxfbGlzdCA9IG1lbW9yaXppbmdfZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4ocmVhZF9saXN0
KSkKLSAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwsIHJlYWQgaW4gemlwKGV4cGVjdGVkX2xp
c3QsIGFjdHVhbF9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVhZF9saXN0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFj
dHVhbCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlYWQpCi0KLSAg
ICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5n
X2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygK
LSAgICAgICAgICAgICAgICAnSGVsbG9cbldvcmxkXG5XZWxjb21lJykpCi0gICAgICAgIHNlbGYu
Y2hlY2sobWVtb3JpemluZ19maWxlLCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRcbicsICdXZWxjb21l
J10pCi0KLSAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX2xpbWl0X21lbW9yaXplZF9s
aW5lcyhzZWxmKToKLSAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVt
b3JpemluZ0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5X
b3JsZFxuV2VsY29tZScpLCAyKQotICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwg
MywgWydIZWxsb1xuJywgJ1dvcmxkXG4nXSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRf
bGluZXNfZW1wdHlfZmlsZShzZWxmKToKLSAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3Jp
emluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAg
ICAgJycpKQotICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQotCi0g
ICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9saW5lc193aXRoX3NpemUoc2VsZik6Ci0gICAgICAg
IGZvciBzaXplIGluIHJhbmdlKDEsIDEwKToKLSAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9
IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAotICAgICAg
ICAgICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKLSAgICAgICAgICAgIHNlbGYuY2hl
Y2tfd2l0aF9zaXplKG1lbW9yaXppbmdfZmlsZSwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnSGVsbG9cbicsICdXb3JsZFxuJywgJ1dlbGNvbWUnXSkKLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tb2NrLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0X21vY2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYzIz
YTczZDhmYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tb2NrLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwot
IyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1vY2sgbW9kdWxlLiIiIgotCi0KLWlt
cG9ydCBRdWV1ZQotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBz
ZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQg
bW9kdWxlLgotCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1jbGFzcyBNb2NrQ29ublRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tDb25uIGNsYXNz
LiIiIgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25uID0gbW9jay5N
b2NrQ29ubignQUJDXHJcbkRFRkdcclxuXHJcbkhJSksnKQotCi0gICAgZGVmIHRlc3RfcmVhZGxp
bmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FCQ1xyXG4nLCBzZWxmLl9jb25u
LnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0RFRkdcclxuJywgc2VsZi5f
Y29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcclxuJywgc2VsZi5f
Y29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdISUpLJywgc2VsZi5f
Y29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25u
LnJlYWRsaW5lKCkpCi0KLSAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdBQkNcclxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnRUZHXHJcblxyXG5ISScsIHNlbGYuX2Nvbm4ucmVhZCg5KSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSksnLCBzZWxmLl9jb25uLnJlYWQoMTApKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWQoMTApKQotCi0gICAgZGVmIHRlc3RfcmVh
ZF9hbmRfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FCQ1xyXG5E
Jywgc2VsZi5fY29ubi5yZWFkKDYpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFRkdcclxu
Jywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcclxu
SElKSycsIHNlbGYuX2Nvbm4ucmVhZCg5KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywg
c2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0gICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ0hlbGxvXHJcbicpCi0gICAgICAgIHNlbGYuX2Nvbm4ud3Jp
dGUoJ1dvcmxkXHJcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvXHJcbldvcmxk
XHJcbicsIHNlbGYuX2Nvbm4ud3JpdHRlbl9kYXRhKCkpCi0KLQotY2xhc3MgTW9ja0Jsb2NraW5n
Q29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tC
bG9ja2luZ0Nvbm4gY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgotICAgICAg
ICAiIiJUZXN0cyB0aGF0IGRhdGEgcHV0IHRvIE1vY2tCbG9ja2luZ0Nvbm4gYnkgcHV0X2J5dGVz
IG1ldGhvZCBjYW4gYmUKLSAgICAgICAgcmVhZCBmcm9tIGl0LgotICAgICAgICAiIiIKLQotICAg
ICAgICBjbGFzcyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgotICAgICAgICAgICAgIiIi
QSB0ZXN0IGNsYXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRo
ZQotICAgICAgICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVh
ZCBkYXRhIHRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgICAgIHF1ZXVlLgotICAgICAgICAgICAg
IiIiCi0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uLCBxdWV1ZSk6Ci0gICAg
ICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAg
ICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25uID0gY29u
bgotICAgICAgICAgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAgICAgICAgICAgICAg
c2VsZi5zdGFydCgpCi0KLSAgICAgICAgICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAgICAg
ICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2Nvbm4ucmVh
ZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoZGF0YSkKLQotICAg
ICAgICBjb25uID0gbW9jay5Nb2NrQmxvY2tpbmdDb25uKCkKLSAgICAgICAgcXVldWUgPSBRdWV1
ZS5RdWV1ZSgpCi0gICAgICAgIHJlYWRlciA9IExpbmVSZWFkZXIoY29ubiwgcXVldWUpCi0gICAg
ICAgIHNlbGYuZmFpbFVubGVzcyhxdWV1ZS5lbXB0eSgpKQotICAgICAgICBjb25uLnB1dF9ieXRl
cygnRm9vIGJhclxyXG4nKQotICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnRm9vIGJhclxyXG4nLCByZWFkKQotCi0KLWNsYXNzIE1vY2tUYWJsZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tUYWJsZSBj
bGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2RpY3Qoc2VsZik6Ci0gICAgICAg
IHRhYmxlID0gbW9jay5Nb2NrVGFibGUoeydLZXknOiAnVmFsdWUnfSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9t
X2xpc3Qoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoWygnS2V5JywgJ1Zh
bHVlJyldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZ
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotCi0g
ICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fdHVwbGUoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9j
ay5Nb2NrVGFibGUoKCgnS2V5JywgJ1ZhbHVlJyksKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdW
YWx1ZScsIHRhYmxlWydrZXknXSkKLQotICAgIGRlZiB0ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgot
ICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQotICAgICAgICB0YWJsZVsnS2V5J10gPSAnVmFsdWUn
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLZXknKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tleScpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
VmFsdWUnLCB0YWJsZVsnS0VZJ10pCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
ICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdF9tc2d1dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21zZ3V0aWwu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZWRjZjkyZjYxZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tc2d1dGlsLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMTM1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0KLSIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgYXJyYXkK
LWltcG9ydCBRdWV1ZQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHVuaXR0
ZXN0Ci1pbXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0
aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQg
RGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRl
bnNpb25zIGltcG9ydCBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IKLWZyb20g
bW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlvbgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFt
IGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAot
ZnJvbSB0ZXN0IGltcG9ydCBtb2NrCi0KLQotIyBXZSB1c2Ugb25lIGZpeGVkIG5vbmNlIGZvciB0
ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIFBSTkcuCi1fTUFTS0lO
R19OT05DRSA9ICdBQkNEJwotCi0KLWRlZiBfbWFza19oeWJpKGZyYW1lKToKLSAgICBmcmFtZV9r
ZXkgPSBtYXAob3JkLCBfTUFTS0lOR19OT05DRSkKLSAgICBmcmFtZV9rZXlfbGVuID0gbGVuKGZy
YW1lX2tleSkKLSAgICByZXN1bHQgPSBhcnJheS5hcnJheSgnQicpCi0gICAgcmVzdWx0LmZyb21z
dHJpbmcoZnJhbWUpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGkgaW4geHJhbmdlKGxlbihyZXN1
bHQpKToKLSAgICAgICAgcmVzdWx0W2ldIF49IGZyYW1lX2tleVtjb3VudF0KLSAgICAgICAgY291
bnQgPSAoY291bnQgKyAxKSAlIGZyYW1lX2tleV9sZW4KLSAgICByZXR1cm4gX01BU0tJTkdfTk9O
Q0UgKyByZXN1bHQudG9zdHJpbmcoKQotCi0KLWRlZiBfaW5zdGFsbF9leHRlbnNpb25fcHJvY2Vz
c29yKHByb2Nlc3NvciwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpOgotICAgIHJlc3BvbnNlID0g
cHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgIGlmIHJlc3BvbnNlIGlzIG5v
dCBOb25lOgotICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29w
dGlvbnMpCi0gICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMuYXBwZW5kKHBy
b2Nlc3NvcikKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
cmVhZF9kYXRhLAotICAgICAgICBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9Tm9uZSwKLSAgICAgICAg
cGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0PU5vbmUsCi0gICAgICAgIHBlcm1lc3NhZ2Vf
ZGVmbGF0ZV9yZXF1ZXN0PU5vbmUpOgotICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVj
dGlvbj1tb2NrLk1vY2tDb25uKCcnLmpvaW4ocmVhZF9kYXRhKSkpCi0gICAgcmVxLndzX3ZlcnNp
b24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotICAgIHJlcS53c19leHRlbnNpb25fcHJv
Y2Vzc29ycyA9IFtdCi0KLSAgICBwcm9jZXNzb3IgPSBOb25lCi0gICAgaWYgZGVmbGF0ZV9mcmFt
ZV9yZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVF
eHRlbnNpb25Qcm9jZXNzb3IoZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0KQotICAgIGVsaWYgcGVybWVz
c2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3Ig
PSBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAg
cGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0KQotICAgIGVsaWYgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nlc3NvciA9IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9yZXF1ZXN0KQotCi0gICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKLSAg
ICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9w
cm9jZXNzb3IocHJvY2Vzc29yLCByZXEsIHN0cmVhbV9vcHRpb25zKQotICAgIHJlcS53c19zdHJl
YW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLQotICAgIHJldHVybiByZXEKLQotCi1k
ZWYgX2NyZWF0ZV9yZXF1ZXN0KCpmcmFtZXMpOgotICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3Qg
dXNpbmcgZGF0YSBnaXZlbiBhcyBmcmFtZXMuCi0KLSAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5l
ZCBvbiBjYWxsaW5nIHJlcXVlc3QuY29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAotICAg
IGlzIE1vY2tSZXF1ZXN0IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gICAgIiIiCi0KLSAg
ICByZWFkX2RhdGEgPSBbXQotICAgIGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6Ci0gICAg
ICAgIHJlYWRfZGF0YS5hcHBlbmQoaGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKLQotICAgIHJl
dHVybiBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKHJlYWRfZGF0YSkKLQotCi1kZWYgX2Ny
ZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCk6Ci0gICAgIiIiQ3JlYXRlcyBNb2NrUmVxdWVzdC4KLQot
ICAgIERhdGEgd3JpdHRlbiB0byBhIE1vY2tSZXF1ZXN0IGNhbiBiZSByZWFkIG91dCBieSBjYWxs
aW5nCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpLgotICAgICIiIgotCi0g
ICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Jsb2NraW5nQ29u
bigpKQotICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKLSAg
ICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAgIHJlcS53c19zdHJlYW0gPSBT
dHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLSAgICByZXR1cm4gcmVxCi0KLQotZGVmIF9jcmVh
dGVfcmVxdWVzdF9oaXhpZTc1KHJlYWRfZGF0YT0nJyk6Ci0gICAgcmVxID0gbW9jay5Nb2NrUmVx
dWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKLSAgICByZXEud3Nfc3Ry
ZWFtID0gU3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWRlZiBfY3JlYXRl
X2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpOgotICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3Qo
Y29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKLSAgICByZXEud3Nfc3RyZWFtID0g
U3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWNsYXNzIEJhc2ljTWVzc2Fn
ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0u
IiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnSGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNUhlbGxvJywgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHBheWxvYWQgPSAnYScg
KiAxMjUKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1x4ODFceDdkJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZWRpdW1f
bWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVx
dWVzdCwgcGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4N2VceDAwXHg3
ZScgKyBwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAt
IDEpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdceDgxXHg3ZVx4ZmZceGZmJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9s
YXJnZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICogKDEgPDwgMTYpCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgx
XHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJyArIHBheWxvYWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCB1J1x1NjVlNScpCi0gICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQgYXMgZTYsOTcsYTUgaW4g
VVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDNceGU2XHg5N1x4YTUnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJyAnLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJ1dvcmxkJywgRmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICchJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4MDVIZWxsb1x4MDBc
eDAxIFx4MDBceDA1V29ybGRceDgwXHgwMSEnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZnJh
Z21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJ0hlbGxvIFdvcmxkIScsIEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4MGNIZWxs
byBXb3JsZCFceDgwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdc
eDgxXHg4NScsICdIZWxsbycpLCAoJ1x4ODFceDg2JywgJ1dvcmxkIScpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI1Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgxXHhmZCcsIHBheWxvYWQpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZWRpdW1fbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5
bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4
MVx4ZmVceDAwXHg3ZScsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxv
YWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHBheWxvYWQg
PSAnYScgKiAoKDEgPDwgMTYpIC0gMSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0
ZXN0X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAq
ICgxIDw8IDE2KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAg
ICAgKCdceDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJywgcGF5bG9hZCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2xlbmd0aF9ub3RfZW5jb2RlZF91
c2luZ19taW5pbWFsX251bWJlcl9vZl9ieXRlcyhzZWxmKToKLSAgICAgICAgIyBMb2cgd2Fybmlu
ZyBvbiByZWNlaXZpbmcgYmFkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIHRoYXQgZG9lc24ndCB1c2UK
LSAgICAgICAgIyBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBidXQgY29udGludWUgcHJvY2Vzc2lu
Zy4KLQotICAgICAgICBwYXlsb2FkID0gJ2EnCi0gICAgICAgICMgMSBieXRlIGNhbiBiZSByZXBy
ZXNlbnRlZCB3aXRob3V0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDgxXHhmZlx4MDBceDAw
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBk
ZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODFceDgzJywgJ1x4ZTZceDljXHhhYycpKQotICAgICAgICAj
IFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKLSAg
ICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlkIGFzIFVURi04LgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ODInLCAnXHg4MFx4ODEnKSkKLSAgICAgICAg
IyBJbnZhbGlkIGNoYXJhY3RlcnMgc2hvdWxkIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRVVEY4RXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdc
eDAxXHg4NScsICdIZWxsbycpLAotICAgICAgICAgICAgKCdceDAwXHg4MScsICcgJyksCi0gICAg
ICAgICAgICAoJ1x4MDBceDg1JywgJ1dvcmxkJyksCi0gICAgICAgICAgICAoJ1x4ODBceDgxJywg
JyEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQhJywgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50
c191bmljb2RlKHNlbGYpOgotICAgICAgICAjIFVURi04IGVuY29kZXMgVSs2ZjIyIGludG8gZTZi
Y2EyIGFuZCBVKzViNTcgaW50byBlNWFkOTcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDgyJywgJ1x4ZTZceGJjJyksCi0gICAgICAgICAg
ICAoJ1x4MDBceDgyJywgJ1x4YTJceGU1JyksCi0gICAgICAgICAgICAoJ1x4ODBceDgyJywgJ1x4
YWRceDk3JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTZmMjJcdTViNTcnLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJh
Z21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDAxXHg4YycsICdIZWxsbyBXb3Js
ZCEnKSwgKCdceDgwXHg4MCcsICcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8g
V29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX2ZyYWdtZW50c19kdXBsaWNhdGVfc3RhcnQoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDg1JywgJ0hlbGxvJyks
ICgnXHgwMVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3Rh
cnRlZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4MDBceDg1
JywgJ0hlbGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZy
YW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0
ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2VuZF9idXRfbm90X3N0YXJ0ZWQoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgwXHg4NScsICdIZWxsbycpKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Vf
ZGlzY2FyZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAg
ICAgICAgICgnXHg4Zlx4ODYnLCAnSUdOT1JFJyksICgnXHg4MVx4ODUnLCAnSGVsbG8nKSwKLSAg
ICAgICAgICAgICgnXHg4Zlx4ODknLCAnRElTUkVHQVJEJyksICgnXHg4MVx4ODYnLCAnV29ybGQh
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4
Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0
aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVm
IHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgKLSAgICAgICAgICAgICgnXHg4OFx4OGEnLCBzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSAr
ICdHb29kIGJ5ZScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwMDAsIHJl
cXVlc3Qud3NfY2xvc2VfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnR29vZCBieWUn
LCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9j
bG9zZShzZWxmKToKLSAgICAgICAgcmVhc29uID0gJ2EnICogMTIzCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODhceGZkJywKLSAgICAgICAgICAg
ICBzdHJ1Y3QucGFjaygnIUgnLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKSArIHJlYXNv
bikpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNU
QVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFzb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC53c19jbG9z
ZV9jb2RlLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uLCByZWFzb24pCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX2Nsb3NlX3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNl
cHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2EnICogMTI0KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV9p
bmNvbnNpc3RlbnRfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgIyByZWFzb24gcGFyYW1ldGVyIG11c3Qgbm90IGJlIHNw
ZWNpZmllZCB3aGVuIGNvZGUgaXMgTm9uZS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNn
dXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmVhbS5jbG9zZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LndzX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2EnKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX3Bp
bmcocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4
ODlceDBjSGVsbG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2xvbmdlc3RfcGlu
ZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdhJyAqIDEyNSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHg4OVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfcGlu
Z190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnNlbmRfcGluZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnICog
MTI2KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nKHNlbGYpOgotICAgICAgICAiIiJUZXN0
cyByZWNlaXZpbmcgYSBwaW5nIGNvbnRyb2wgZnJhbWUuIiIiCi0KLSAgICAgICAgZGVmIGhhbmRs
ZXIocmVxdWVzdCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LmNhbGxlZCA9IFRydWUK
LQotICAgICAgICAjIFN0cmVhbSBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgdG8gcGluZyB3aXRoIHBv
bmcgd2l0aG91dCBhbnkgYWN0aW9uCi0gICAgICAgICMgYnkgYXBwbGljYXRpb24gbGF5ZXIuCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1
JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHg4YVx4MDVIZWxsbycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1JywgJ0hlbGxvJyksICgn
XHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hhbmRsZXIgPSBo
YW5kbGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1ZXN0LmNhbGxl
ZCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDg5XHhmZCcsICdhJyAq
IDEyNSksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
V29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnXHg4YVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfcGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgoJ1x4ODlceGZlXHgwMFx4N2UnLCAnYScgKiAxMjYpKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Bvbmcoc2VsZik6Ci0gICAgICAg
ICIiIlRlc3RzIHJlY2VpdmluZyBhIHBvbmcgY29udHJvbCBmcmFtZS4iIiIKLQotICAgICAgICBk
ZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKLSAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVk
ID0gVHJ1ZQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAg
ICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAg
cmVxdWVzdC5vbl9wb25nX2hhbmRsZXIgPSBoYW5kbGVyCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9w
aW5nKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODlceDA1
SGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKLSAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBidXQgcmVjZWl2
ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgICMgQ2hl
Y2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2FnZSBjYWxsLgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDg5XHgwNUhlbGxvJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV91
bnNvbGljaXRlZF9wb25nKHNlbGYpOgotICAgICAgICAjIFVuc29saWNpdGVkIHBvbmcgaXMgYWxs
b3dlZCBmcm9tIEh5QmkgMDcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0g
ICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkK
LSAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDhhXHg4NScsICdIZWxsbycp
LCAoJ1x4ODFceDg1JywgJ1dvcmxkJykpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVl
c3QsICdKdW1ibycpCi0gICAgICAgICMgQm9keSBtaXNtYXRjaC4KLSAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3BpbmdfY2Fubm90X2JlX2Zy
YWdtZW50ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDA5
XHg4NScsICdIZWxsbycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFs
aWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBk
ZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMVx4MDAnLCAnYScgKiAyNTYpKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLQotY2xhc3MgRGVmbGF0ZUZyYW1lVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGNoZWNraW5nIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVf
RlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21f
cmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9u
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQotCi0gICAgICAgIGV4cGVj
dGVkID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3Mo
J0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGli
LlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVs
bG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hl
bGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0KLSAgICAgICAgY29t
cHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXBy
ZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0
ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQg
Kz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQs
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRf
bWVzc2FnZV9iZmluYWwoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZs
YXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygx
LCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVf
ZnJhbWVfcHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAg
ICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5zZXRfYmZpbmFsKFRydWUpCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgZXhwZWN0ZWQgPSAnJwotCi0g
ICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvICsgY2hyKDApCi0gICAgICAg
IGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4
cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29t
cHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5E
RUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29t
cHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29t
cHJlc3NlZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxl
bihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxk
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2NvbXBfYml0KHNl
bGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9
ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19l
eHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yID0g
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nv
ci5kaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9wcm9jZXNzb3Iu
ZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0KLSAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZXhw
ZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0
ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgxXHgwNUhl
bGxvJwotCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3Mo
J0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2go
emxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJl
c3NlZF8ybmRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihj
b21wcmVzc2VkXzJuZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF8ybmRf
aGVsbG8KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfbm9fY29u
dGV4dF90YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5j
b21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAg
ICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAg
ICAgICAnJywgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgZm9yIGkg
aW4geHJhbmdlKDMpOgotICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
J0hlbGxvJykKLQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzcy5jb21wcmVz
cygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJlc3MuZmx1c2go
emxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNz
ZWRfbWVzc2FnZVs6LTRdCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4YzElYycgJSBsZW4oY29tcHJl
c3NlZF9tZXNzYWdlKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX21lc3NhZ2UKLQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZXhwZWN0ZWQgKyBleHBlY3Rl
ZCArIGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBk
ZWYgdGVzdF9iYWRfcmVxdWVzdF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0
aGF0IGlmIHRoZXJlJ3MgYW55dGhpbmcgd3Jvbmcgd2l0aCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lv
bgotICAgICAgICByZXF1ZXN0LCBkZWZsYXRlLWZyYW1lIGlzIHJlamVjdGVkLgotICAgICAgICAi
IiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1v
bi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBtYXhfd2luZG93X2JpdHMgbGVz
cyB0aGFuIDggaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21h
eF93aW5kb3dfYml0cycsICc3JykKLSAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0
ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25l
LCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5T
SU9OKQotICAgICAgICAjIG1heF93aW5kb3dfYml0cyBncmVhdGVyIHRoYW4gMTUgaXMgaWxsZWdh
bC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICcx
NicpCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBO
b24gaW50ZWdlciBtYXhfd2luZG93X2JpdHMgaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICdmb29iYXInKQotICAgICAgICBwcm9j
ZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21t
b24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgICMgbm9fY29udGV4dF90YWtlb3Zl
ciBtdXN0IG5vdCBoYXZlIGFueSB2YWx1ZS4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0g
RGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0g
ICAgZGVmIHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJ
T04pCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMoOCkK
LSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdtYXhfd2luZG93
X2JpdHMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOCcsIHJlc3BvbnNlLmdldF9wYXJh
bWV0ZXJfdmFsdWUoJ21heF93aW5kb3dfYml0cycpKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQot
ICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5z
aW9uKQotICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIo
VHJ1ZSkKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdub19j
b250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAg
IHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ25vX2NvbnRleHRfdGFrZW92ZXInKSBpcyBO
b25lKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBjb21w
cmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGRhdGEg
PSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6
LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwg
MHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAg
ICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgPSBjb21wcmVzcy5jb21wcmVzcygnV2ViU29ja2V0
JykKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gJ1x4MDAnCi0gICAgICAg
IGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd2Vic29ja2V0KSB8IDB4ODApCi0g
ICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dlYnNvY2tldCkKLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAg
IGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBj
b21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAg
ICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGRh
dGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4MCkKLSAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAgICAgIyBDbG9zZSBm
cmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNr
KCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBk
YXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdXZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9t
ZXNzYWdlX2NsaWVudF91c2luZ19zbWFsbGVyX3dpbmRvdyhzZWxmKToKLSAgICAgICAgIiIiVGVz
dCB0aGF0IGZyYW1lcyBjb21pbmcgZnJvbSBhIGNsaWVudCB3aGljaCBpcyB1c2luZyBzbWFsbGVy
IHdpbmRvdwotICAgICAgICBzaXplIHRoYXQgdGhlIHNlcnZlciBhcmUgY29ycmVjdGx5IHJlY2Vp
dmVkLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cg
Yml0cyBvZiA4IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KLSAgICAgICAgY29tcHJlc3Mg
PSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sIHpsaWIuREVGTEFURUQsIC04KQotCi0gICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgICMg
VXNlIGEgZnJhbWUgd2hvc2UgY29udGVudCBpcyBiaWdnZXIgdGhhbiB0aGUgY2xpZW50cycgREVG
TEFURSB3aW5kb3cKLSAgICAgICAgIyBzaXplIGJlZm9yZSBjb21wcmVzc2lvbi4gVGhlIGNvbnRl
bnQgbWFpbmx5IGNvbnNpc3RzIG9mICdhJyBidXQKLSAgICAgICAgIyByZXBldGl0aW9uIG9mICdi
JyBpcyBwdXQgYXQgdGhlIGhlYWQgYW5kIHRhaWwgc28gdGhhdCBpZiB0aGUgd2luZG93Ci0gICAg
ICAgICMgc2l6ZSBpcyBiaWcsIHRoZSBoZWFkIGlzIGJhY2stcmVmZXJlbmNlZCBidXQgaWYgc21h
bGwsIG5vdC4KLSAgICAgICAgcGF5bG9hZCA9ICdiJyAqIDY0ICsgJ2EnICogMTAyNCArICdiJyAq
IDY0Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2Fk
KQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRd
Ci0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwgMHg4
MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAgICAg
ICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0g
ICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfY29tcF9iaXQo
c2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAg
IHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJ
VFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4o
Y29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29t
cHJlc3NlZF9oZWxsbykKLQotICAgICAgICBkYXRhICs9ICdceDgxXHg4NScgKyBfbWFza19oeWJp
KCdIZWxsbycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1B
WF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNv
bXByZXNzZWRfMm5kX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4o
Y29tcHJlc3NlZF8ybmRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJp
KGNvbXByZXNzZWRfMm5kX2hlbGxvKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEs
IGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIGZvciBpIGluIHhyYW5n
ZSgzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdmFy
aW91c19idHlwZShzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAot
ICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16
bGliLk1BWF9XQklUUykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJl
c3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBkYXRhICs9ICdceGMx
JWMnICUgKGxlbihjb21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21h
c2tfaHliaShjb21wcmVzc2VkX2hlbGxvKQotCi0gICAgICAgIGNvbXByZXNzZWRfd2Vic29ja2V0
ID0gY29tcHJlc3MuY29tcHJlc3MoJ1dlYlNvY2tldCcpCi0gICAgICAgIGNvbXByZXNzZWRfd2Vi
c29ja2V0ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIGNvbXByZXNz
ZWRfd2Vic29ja2V0ICs9ICdceDAwJwotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihj
b21wcmVzc2VkX3dlYnNvY2tldCkgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5Ymko
Y29tcHJlc3NlZF93ZWJzb2NrZXQpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJl
c3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNv
bXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21w
cmVzc2VkX3dvcmxkKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVz
c2VkX3dvcmxkKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAnXHg4
OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScp
Ci0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0
PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV2ViU29j
a2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIiIgotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21t
b24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVl
c3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVs
bG8nKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFY
X1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hl
bGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
U1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9b
Oi00XQotICAgICAgICBleHBlY3RlZCA9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8p
Ci0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9lbXB0eV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRo
YXQgYW4gZW1wdHkgbWVzc2FnZSBpcyBjb21wcmVzc2VkIGNvcnJlY3RseS4iIiIKLQotICAgICAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9t
ZXNzYWdlKHJlcXVlc3QsICcnKQotCi0gICAgICAgICMgUGF5bG9hZCBpbiBiaW5hcnk6IDBiMDAw
MDAwMTAgMGIwMDAwMDAwMAotICAgICAgICAjIEZyb20gTFNCLAotICAgICAgICAjIC0gMSBiaXQg
b2YgQkZJTkFMICgwKQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5z
IGZpeGVkIEh1ZmZtYW4pCi0gICAgICAgICMgLSA3IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAw
MDAwMDAgdGhhdCBpcyB0aGUgY29kZSBmb3IgdGhlCi0gICAgICAgICMgICBlbmQtb2YtYmxvY2sp
Ci0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAgICMgLSAyIGJpdHMgb2Yg
QlRZUEUgKG5vIGNvbXByZXNzaW9uKQotICAgICAgICAjIC0gMyBiaXRzIG9mIHBhZGRpbmcKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhjMVx4MDJceDAyXHgwMCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX3dpdGhfbnVsbF9jaGFyYWN0ZXIoc2VsZik6Ci0gICAgICAgICIi
IlRlc3QgdGhhdCBhIHNpbXBsZSBwYXlsb2FkIChvbmUgbnVsbCkgaXMgZnJhbWVkIGNvcnJlY3Rs
eS4iIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAot
ICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAg
ICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotCi0gICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKLQotICAgICAgICAjIFBheWxv
YWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAwMDAwMAotICAgICAgICAj
IEZyb20gTFNCLAotICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQotICAgICAgICAjIC0g
MiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCi0gICAgICAgICMg
LSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQgaXMgdGhlIGNvZGUgZm9y
IHRoZSBsaXRlcmFsCi0gICAgICAgICMgICBhbHBoYWJldCAweDAwKQotICAgICAgICAjIC0gNyBi
aXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0aGUK
LSAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKLSAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5BTCAo
MCkKLSAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Npb24pCi0gICAgICAg
ICMgLSAyIGJpdHMgb2YgcGFkZGluZwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGMxXHgw
M1x4NjJceDAwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF90d29fbWVzc2FnZXMoc2Vs
Zik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAg
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAg
ICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9t
ZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXBy
ZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXhwZWN0ZWQgPSAnJwotCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAg
ICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAg
ICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAg
IGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVzc2VkX3dvcmxk
ID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCAr
PSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF93
b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVj
JyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2Vk
X3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdt
ZW50ZWQoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAg
ICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0dvb2RieWUnLCBlbmQ9RmFsc2Up
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQot
ICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAg
ICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9nb29k
YnllID0gY29tcHJlc3MuY29tcHJlc3MoJ0dvb2RieWUnKQotICAgICAgICBjb21wcmVzc2VkX2dv
b2RieWUgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGV4cGVj
dGVkICs9ICdceDAwJWMnICUgbGVuKGNvbXByZXNzZWRfZ29vZGJ5ZSkKLSAgICAgICAgZXhwZWN0
ZWQgKz0gY29tcHJlc3NlZF9nb29kYnllCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21w
cmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0g
Y29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVu
KGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1w
dHlfZmlyc3RfZnJhbWUoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9F
WFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRh
KAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBlbmQ9RmFsc2Up
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0KLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnJykKLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAg
ICAgZXhwZWN0ZWQgPSAnXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBl
eHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0gICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBj
b21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5
ID0gY29tcHJlc3NlZF9lbXB0eVs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUg
bGVuKGNvbXByZXNzZWRfZW1wdHkpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1w
dHkKLSAgICAgICAgcHJpbnQgJyVyJyAlIGV4cGVjdGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRl
ZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2xhc3RfZnJhbWUoc2VsZik6Ci0g
ICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBw
ZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXBy
ZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQx
JWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNz
ZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNzLmNvbXByZXNzKCcn
KQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3NlZF9lbXB0eVs6LTRd
Ci0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfZW1wdHkpCi0g
ICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAg
ZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhzZWxmKToKLSAgICAgICAg
Y29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi0gICAgICAgIHRlc3Rf
bWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21tb25fcGFydAotCi0gICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAg
ICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIGV4dGVuc2lv
bi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzgnKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAn
JywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB0ZXN0X21lc3NhZ2UpCi0KLSAgICAgICAgZXhwZWN0ZWRf
d2Vic29ja2V0X2hlYWRlcl9zaXplID0gMgotICAgICAgICBleHBlY3RlZF93ZWJzb2NrZXRfcGF5
bG9hZF9zaXplID0gOTEKLQotICAgICAgICBhY3R1YWxfZnJhbWUgPSByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF93ZWJz
b2NrZXRfaGVhZGVyX3NpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3dl
YnNvY2tldF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGFjdHVh
bF9mcmFtZSkpCi0gICAgICAgIGFjdHVhbF9oZWFkZXIgPSBhY3R1YWxfZnJhbWVbMDpleHBlY3Rl
ZF93ZWJzb2NrZXRfaGVhZGVyX3NpemVdCi0gICAgICAgIGFjdHVhbF9wYXlsb2FkID0gYWN0dWFs
X2ZyYW1lW2V4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZTpdCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAnXHhjMSVjJyAlIGV4cGVjdGVkX3dlYnNvY2tl
dF9wYXlsb2FkX3NpemUsIGFjdHVhbF9oZWFkZXIpCi0gICAgICAgIGRlY29tcHJlc3MgPSB6bGli
LmRlY29tcHJlc3NvYmooLTgpCi0gICAgICAgIGRlY29tcHJlc3NlZF9tZXNzYWdlID0gZGVjb21w
cmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIGFjdHVhbF9wYXlsb2FkICsgJ1x4MDBc
eDAwXHhmZlx4ZmYnKQotICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSArPSBkZWNvbXByZXNz
LmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X21lc3NhZ2UsIGRlY29tcHJl
c3NlZF9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNz
LnVudXNlZF9kYXRhKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVz
cy51bmNvbnN1bWVkX3RhaWwpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2NvbnRl
eHRfdGFrZW92ZXJfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignc2VydmVy
X25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMyk6Ci0gICAg
ICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2Up
Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9
VHJ1ZSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAg
ICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1B
WF9XQklUUykKLQotICAgICAgICBmaXJzdF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxs
bycpCi0gICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGZpcnN0X2hlbGxvKQotICAg
ICAgICBleHBlY3RlZCArPSBmaXJzdF9oZWxsbwotICAgICAgICBzZWNvbmRfaGVsbG8gPSBjb21w
cmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBzZWNvbmRfaGVsbG8gKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIHNlY29uZF9oZWxsbyA9IHNlY29uZF9o
ZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKHNlY29uZF9oZWxs
bykKLSAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgICAgICBleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgotICAgICAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0uc2V0X2JmaW5hbChUcnVlKQotICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCi0gICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcsIGVuZD1UcnVlKQotCi0gICAg
ICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
Ci0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwg
LXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29t
cHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9o
ZWxsbyArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHg0MSVjJyAlIGxlbihjb21wcmVz
c2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0KLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNv
bXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGQgKyBjaHIoMCkKLSAgICAgICAgZXhw
ZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0
ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfbWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29t
cHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5E
RUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgPSAnXHhjMSVjJyAlIChsZW4o
Y29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29t
cHJlc3NlZF9oZWxsbykKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0g
J1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBi
eWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAg
ICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9zZWN0
aW9uKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYSBjb21wcmVzc2VkIG1lc3NhZ2UgZnJh
Z21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlzCi0gICAgICAgIGNvcnJlY3RseSByZWNlaXZl
ZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAgICAgICBwYXls
b2FkID0gJycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkg
Zm9yIGkgaW4geHJhbmdlKDEwMDApXSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZM
QVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSBjb21w
cmVzcy5jb21wcmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9h
ZCA9IGNvbXByZXNzZWRfcGF5bG9hZFs6LTRdCi0KLSAgICAgICAgIyBGcmFnbWVudCB0aGUgY29t
cHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0gICAgICAgIGJ5dGVzX2NodW5r
ZWQgPSAwCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmcmFtZV9jb3VudCA9IDAKLQotICAg
ICAgICBjaHVua19zaXplcyA9IFtdCi0KLSAgICAgICAgd2hpbGUgYnl0ZXNfY2h1bmtlZCA8IGxl
bihjb21wcmVzc2VkX3BheWxvYWQpOgotICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdAotICAg
ICAgICAgICAgIyAtIHRoZSBsZW5ndGggb2YgY2h1bmtzIGFyZSBlcXVhbCBvciBsZXNzIHRoYW4g
MTI1IHNvIHRoYXQgd2UgY2FuCi0gICAgICAgICAgICAjICAgdXNlIDEgb2N0ZXQgbGVuZ3RoIGhl
YWRlciBmb3JtYXQgZm9yIGFsbCBmcmFtZXMuCi0gICAgICAgICAgICAjIC0gYXQgbGVhc3QgMTAg
Y2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5yYW5k
aW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigxMjUsCi0gICAgICAgICAgICAgICAgICAgICAg
IGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC8gMTAsCi0gICAgICAgICAgICAgICAgICAgICAgIGxl
bihjb21wcmVzc2VkX3BheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgICAgICBjaHVu
a19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5rID0gY29tcHJlc3Nl
ZF9wYXlsb2FkWwotICAgICAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtlZCAr
IGNodW5rX3NpemVdCi0gICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKLQot
ICAgICAgICAgICAgZmlyc3Rfb2N0ZXQgPSAweDAwCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkg
PT0gMDoKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0Mgot
ICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKToK
LSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAotCi0gICAg
ICAgICAgICBkYXRhICs9ICclYyVjJyAlIChmaXJzdF9vY3RldCwgY2h1bmtfc2l6ZSB8IDB4ODAp
Ci0gICAgICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY2h1bmspCi0KLSAgICAgICAgICAgIGZy
YW1lX2NvdW50ICs9IDEKLQotICAgICAgICBwcmludCAiQ2h1bmsgc2l6ZXM6ICVyIiAlIGNodW5r
X3NpemVzCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY2h1bmtfc2l6ZXMpID4gMTApCi0K
LSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFz
a19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9u
LlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYg
dGVzdF9yZWNlaXZlX3R3b19tZXNzYWdlcyhzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGli
LmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9O
LCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0K
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsb1dlYlNv
Y2tldCcpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxv
WzotNF0KLSAgICAgICAgc3BsaXRfcG9zaXRpb24gPSBsZW4oY29tcHJlc3NlZF9oZWxsbykgLyAy
Ci0gICAgICAgIGRhdGEgKz0gJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24gfCAweDgwKQotICAg
ICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3BsaXRfcG9zaXRpb25d
KQotCi0gICAgICAgIGRhdGEgKz0gJ1x4ODAlYycgJSAoKGxlbihjb21wcmVzc2VkX2hlbGxvKSAt
IHNwbGl0X3Bvc2l0aW9uKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21w
cmVzc2VkX2hlbGxvW3NwbGl0X3Bvc2l0aW9uOl0pCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGli
LmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9O
LCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgY29tcHJlc3NlZF93
b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29y
bGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVj
JyAlIChsZW4oY29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNr
X2h5YmkoY29tcHJlc3NlZF93b3JsZCkKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAg
IGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkg
KyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAg
ICAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9XZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRl
c3RfcmVjZWl2ZV9tZXNzYWdlX21peGVkX2J0eXBlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRo
YXQgYSBtZXNzYWdlIGNvbXByZXNzZWQgdXNpbmcgbG90cyBvZiBERUZMQVRFIGJsb2NrcyB3aXRo
Ci0gICAgICAgIHZhcmlvdXMgZmx1c2ggbW9kZSBpcyBjb3JyZWN0bHkgcmVjZWl2ZWQuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAgICAgICAgcGF5bG9hZCA9ICcn
LmpvaW4oCi0gICAgICAgICAgICBbY2hyKHJhbmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGlu
IHhyYW5nZSgxMDAwKV0pCi0KLSAgICAgICAgY29tcHJlc3MgPSBOb25lCi0KLSAgICAgICAgIyBG
cmFnbWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0gICAg
ICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9ICcnCi0K
LSAgICAgICAgY2h1bmtfc2l6ZXMgPSBbXQotICAgICAgICBtZXRob2RzID0gW10KLSAgICAgICAg
c3luY191c2VkID0gRmFsc2UKLSAgICAgICAgZmluaXNoX3VzZWQgPSBGYWxzZQotCi0gICAgICAg
IHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4ocGF5bG9hZCk6Ci0gICAgICAgICAgICAjIE1ha2Ug
c3VyZSBhdCBsZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBjaHVua19z
aXplID0gcmFuZG9tLnJhbmRpbnQoCi0gICAgICAgICAgICAgICAgMSwgbWluKDEwMCwgbGVuKHBh
eWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQo
Y2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19jaHVua2VkOmJ5
dGVzX2NodW5rZWQgKyBjaHVua19zaXplXQotCi0gICAgICAgICAgICBieXRlc19jaHVua2VkICs9
IGNodW5rX3NpemUKLQotICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgICAg
IHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAgICAgICAgICAgICB6bGliLkRF
RkxBVEVELAotICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAg
ICAgIGlmIGJ5dGVzX2NodW5rZWQgPT0gbGVuKHBheWxvYWQpOgotICAgICAgICAgICAgICAgIGNv
bXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKLSAgICAgICAgICAg
ICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkID0gY29tcHJlc3NlZF9wYXls
b2FkWzotNF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWV0aG9kID0gcmFu
ZG9tLnJhbmRpbnQoMCwgMSkKLSAgICAgICAgICAgICAgICBtZXRob2RzLmFwcGVuZChtZXRob2Qp
Ci0gICAgICAgICAgICAgICAgaWYgbWV0aG9kID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNv
bXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKLSAgICAgICAgICAg
ICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICAgICAgICAgICAgICBzeW5jX3VzZWQgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgICAgICAgICAg
ICAgY29tcHJlc3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGZpbmlzaF91c2VkID0gVHJ1
ZQotCi0gICAgICAgIHByaW50ICJDaHVuayBzaXplczogJXIiICUgY2h1bmtfc2l6ZXMKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKLSAgICAgICAgcHJpbnQg
Ik1ldGhvZHM6ICVyIiAlIG1ldGhvZHMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5bmNfdXNl
ZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmlzaF91c2VkKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgxMjUgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxlbihjb21wcmVzc2VkX3BheWxvYWQpIDwgNjU1MzYpCi0gICAgICAgIGRhdGEg
PSAnXHhjMlx4ZmUnICsgc3RydWN0LnBhY2soJyFIJywgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkp
Ci0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3BheWxvYWQpCi0KLSAgICAg
ICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9uLlBFUk1F
U1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVybWVzc2FnZV9kZWZsYXRlX3Jl
cXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLQotY2xhc3MgUGVyTWVz
c2FnZUNvbXByZXNzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGNo
ZWNraW5nIHBlcm1lc3NhZ2UtY29tcHJlc3Npb24gZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRl
c3RfZGVmbGF0ZV9yZXNwb25zZV9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRl
cignbWV0aG9kJywgJ2RlZmxhdGUnKQotICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlQ29t
cHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICByZXNwb25zZSA9IHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnZGVmbGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFt
ZXRlcl92YWx1ZSgnbWV0aG9kJykpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9O
X0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21ldGhvZCcsICdk
ZWZsYXRlJykKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZUNvbXByZXNzRXh0ZW5zaW9u
UHJvY2Vzc29yKGV4dGVuc2lvbikKLQotICAgICAgICBkZWYgX2NvbXByZXNzaW9uX3Byb2Nlc3Nv
cl9ob29rKGNvbXByZXNzaW9uX3Byb2Nlc3Nvcik6Ci0gICAgICAgICAgICBjb21wcmVzc2lvbl9w
cm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoOCkKLSAgICAgICAgICAgIGNvbXBy
ZXNzaW9uX3Byb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKLSAg
ICAgICAgcHJvY2Vzc29yLnNldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vaygKLSAgICAgICAg
ICAgIF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vaykKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICAnZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0cz04OyBjbGllbnRf
bm9fY29udGV4dF90YWtlb3ZlcicsCi0gICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVy
X3ZhbHVlKCdtZXRob2QnKSkKLQotCi1jbGFzcyBNZXNzYWdlVGVzdEhpeGllNzUodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciBkcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRwcm90
b2NvbC03NiBzdHJlYW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCkKLSAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgdSdcdTY1ZTUnKQotICAgICAgICAjIFUrNjVlNSBpcyBlbmNvZGVk
IGFzIGU2LDk3LGE1IGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBceGU2
XHg5N1x4YTVceGZmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgwMEhlbGxvXHhm
Zlx4MDBXb3JsZCFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
V29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdF9oaXhpZTc1KCdceDAwXHhlNlx4OWNceGFjXHhmZicpCi0gICAgICAgICMgVSs2
NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2RlKHNlbGYpOgotICAgICAg
ICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgwMFx4ODBceDgxXHhmZicpCi0gICAgICAgICMg
SW52YWxpZCBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoCi0gICAgICAgICMgVStm
ZmZkIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUnXHVm
ZmZkXHVmZmZkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYg
dGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDgwXHgwNklHTk9SRVx4MDBIZWxsb1x4ZmYnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHgwMURJU1JFR0FSRFx4ZmZc
eDAwV29ybGQhXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dv
cmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0KLWNsYXNzIE1lc3Nh
Z2VSZWNlaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIHRoZSBTdHJl
YW0gY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0gICAgZGVmIHRlc3RfcXVldWUo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAg
ICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZWNlaXZlci5yZWNlaXZlX25vd2FpdCgpKQotCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4ODFceDg2JyArIF9tYXNrX2h5
YmkoJ0hlbGxvIScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZl
ci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIG9u
bWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgb25tZXNzYWdlX2hh
bmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUucHV0KG1lc3NhZ2Up
Ci0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAg
IHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCwgb25tZXNzYWdlX2hh
bmRsZXIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygnXHg4MVx4ODYn
ICsgX21hc2tfaHliaSgnSGVsbG8hJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
IScsIG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlUmVjZWl2ZXJIaXhp
ZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbUhpeGll
NzUgY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0gICAgZGVmIHRlc3RfcXVldWUo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3
NSgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlY2VpdmVyLnJlY2VpdmVfbm93YWl0
KCkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygnXHgwMEhlbGxvIVx4
ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZl
KCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIG9ubWVzc2FnZV9x
dWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgb25tZXNzYWdlX2hhbmRsZXIobWVz
c2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUucHV0KG1lc3NhZ2UpCi0KLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9oaXhpZTc1KCkKLSAgICAgICAg
cmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0LCBvbm1lc3NhZ2VfaGFu
ZGxlcikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKCdceDAwSGVsbG8h
XHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9ubWVzc2FnZV9xdWV1
ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdlU2VuZGVyLiIiIgot
Ci0gICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxv
Y2tpbmdfcmVxdWVzdCgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihy
ZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAgICAgICAgIyBVc2UgYSBx
dWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdlU2VuZGVyLgotICAgICAg
ICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5ub3QgYmUgdXNlZCBoZXJl
IGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4gYSBzZXBhcmF0ZSB0aHJl
YWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAgICAgICAgZGVmIHdy
aXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0KGJ5dGVzKQotCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUgPSB3cml0ZQotCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2Fn
ZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnSGVsbG8nKQot
ICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHg4MVx4MDVIZWxsbycsIHNlbmRfcXVldWUuZ2V0KCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCBzZW5kX3F1ZXVlLmdldCgpKQotCi0KLWNsYXNzIE1l
c3NhZ2VTZW5kZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMg
dGhlIFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVNlbmRlci4iIiIKLQotICAgIGRl
ZiB0ZXN0X3NlbmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3Jl
cXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihy
ZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAgICAgICAgIyBVc2UgYSBx
dWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdlU2VuZGVyLgotICAgICAg
ICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5ub3QgYmUgdXNlZCBoZXJl
IGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4gYSBzZXBhcmF0ZSB0aHJl
YWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAgICAgICAgZGVmIHdy
aXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0KGJ5dGVzKQotCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZSA9IHdyaXRlCi0KLSAgICAgICAgc2VuZGVyID0gbXNndXRp
bC5NZXNzYWdlU2VuZGVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdI
ZWxsbycpCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnV29ybGQnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgc2VuZF9xdWV1ZS5nZXQoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHNlbmRfcXVldWUuZ2V0KCkpCi0KLQot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tdXgucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
NDU5ODk0NGUwODcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjA4OSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtdXggbW9kdWxlLiIiIgotCi1p
bXBvcnQgUXVldWUKLWltcG9ydCBjb3B5Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9wdHBhcnNl
Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0aW1l
Ci1pbXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0
byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG11eAotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBvcnRl
ZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0
IEZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbQot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBTdHJlYW1PcHRpb25zCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJh
bWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Nsb3Nl
X2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9j
bG9zaW5nX2hhbmRzaGFrZV9ib2R5Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5Ymkg
aW1wb3J0IHBhcnNlX2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9y
dCBNdXhFeHRlbnNpb25Qcm9jZXNzb3IKLQotCi1pbXBvcnQgbW9jawotCi0KLV9URVNUX0hFQURF
UlMgPSB7J0hvc3QnOiAnc2VydmVyLmV4YW1wbGUuY29tJywKLSAgICAgICAgICAgICAgICAgJ1Vw
Z3JhZGUnOiAnd2Vic29ja2V0JywKLSAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBn
cmFkZScsCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleSc6ICdkR2hsSUhOaGJY
QnNaU0J1YjI1alpRPT0nLAotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1WZXJzaW9u
JzogJzEzJywKLSAgICAgICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20n
fQotCi0KLWNsYXNzIF9PdXRnb2luZ0NoYW5uZWxEYXRhKG9iamVjdCk6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYpOgotICAgICAgICBzZWxmLm1lc3NhZ2VzID0gW10KLSAgICAgICAgc2VsZi5jb250
cm9sX21lc3NhZ2VzID0gW10KLQotICAgICAgICBzZWxmLmJ1aWxkZXIgPSBtdXguX0lubmVyTWVz
c2FnZUJ1aWxkZXIoKQotCi1jbGFzcyBfTW9ja011eENvbm5lY3Rpb24obW9jay5Nb2NrQmxvY2tp
bmdDb25uKToKLSAgICAiIiJNb2NrIGNsYXNzIG9mIG1vZF9weXRob24gY29ubmVjdGlvbiBmb3Ig
bXV4LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBtb2NrLk1vY2tCbG9j
a2luZ0Nvbm4uX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3MgPSBb
XQotICAgICAgICBzZWxmLl9jaGFubmVsX2RhdGEgPSB7fQotCi0gICAgICAgIHNlbGYuX2N1cnJl
bnRfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyYWdtZW50cyA9IFtdCi0K
LSAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2VfY29kZSA9IE5vbmUKLQotICAgIGRlZiB3cml0ZShz
ZWxmLCBkYXRhKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgTW9ja0Jsb2NraW5nQ29ubi53cml0ZS4i
IiIKLQotICAgICAgICBzZWxmLl9jdXJyZW50X2RhdGEgPSBkYXRhCi0gICAgICAgIHNlbGYuX3Bv
c2l0aW9uID0gMAotCi0gICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgotICAgICAg
ICAgICAgaWYgc2VsZi5fcG9zaXRpb24gKyBsZW5ndGggPiBsZW4oc2VsZi5fY3VycmVudF9kYXRh
KToKLSAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byByZWNlaXZlICVkIGJ5dGVzIGZyb20gZW5j
YXBzdWxhdGVkICcKLSAgICAgICAgICAgICAgICAgICAgJ2ZyYW1lJyAlIGxlbmd0aCkKLSAgICAg
ICAgICAgIGRhdGEgPSBzZWxmLl9jdXJyZW50X2RhdGFbc2VsZi5fcG9zaXRpb246c2VsZi5fcG9z
aXRpb24rbGVuZ3RoXQotICAgICAgICAgICAgc2VsZi5fcG9zaXRpb24gKz0gbGVuZ3RoCi0gICAg
ICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgICAgICMgUGFyc2UgcGh5c2ljYWwgZnJhbWVzIGFu
ZCBhc3NlbWJsZSBhIG1lc3NhZ2UgaWYgdGhlIG1lc3NhZ2UgaXMKLSAgICAgICAgIyBmcmFnbWVu
dGVkLgotICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9ICgK
LSAgICAgICAgICAgIHBhcnNlX2ZyYW1lKF9yZWNlaXZlX2J5dGVzLCB1bm1hc2tfcmVjZWl2ZT1G
YWxzZSkpCi0KLSAgICAgICAgc2VsZi5fcGVuZGluZ19mcmFnbWVudHMuYXBwZW5kKHBheWxvYWQp
Ci0KLSAgICAgICAgaWYgc2VsZi5fY3VycmVudF9vcGNvZGUgaXMgTm9uZToKLSAgICAgICAgICAg
IGlmIG9wY29kZSA9PSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBjb250aW51YXRpb24gb3Bjb2RlJykK
LSAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfb3Bjb2RlID0gb3Bjb2RlCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdTZW5kaW5nIGludmFsaWQgb3Bjb2RlICVk
JyAlIG9wY29kZSkKLSAgICAgICAgaWYgbm90IGZpbjoKLSAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgIGlubmVyX2ZyYW1lX2RhdGEgPSAnJy5qb2luKHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRz
KQotICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgIHNlbGYuX2N1
cnJlbnRfb3Bjb2RlID0gTm9uZQotCi0gICAgICAgICMgSGFuZGxlIGEgY29udHJvbCBtZXNzYWdl
IG9uIHRoZSBwaHlzaWNhbCBjaGFubmVsLgotICAgICAgICAjIFRPRE8oYmFzaGkpOiBTdXBwb3J0
IG90aGVyIG9wY29kZXMgaWYgbmVlZGVkLgotICAgICAgICBpZiBvcGNvZGUgPT0gY29tbW9uLk9Q
Q09ERV9DTE9TRToKLSAgICAgICAgICAgIGlmIGxlbihwYXlsb2FkKSA+PSAyOgotICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIHBheWxv
YWRbOjJdKVswXQotICAgICAgICAgICAgY2xvc2VfYm9keSA9IGNyZWF0ZV9jbG9zaW5nX2hhbmRz
aGFrZV9ib2R5KAotICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUs
ICcnKQotICAgICAgICAgICAgY2xvc2VfZnJhbWUgPSBjcmVhdGVfY2xvc2VfZnJhbWUoY2xvc2Vf
Ym9keSwgbWFzaz1UcnVlKQotICAgICAgICAgICAgc2VsZi5wdXRfYnl0ZXMoY2xvc2VfZnJhbWUp
Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIFBhcnNlIHRoZSBwYXlsb2FkIG9mIHRo
ZSBtZXNzYWdlIG9uIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4
RnJhbWVQYXlsb2FkUGFyc2VyKGlubmVyX2ZyYW1lX2RhdGEpCi0gICAgICAgIGNoYW5uZWxfaWQg
PSBwYXJzZXIucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBtdXgu
X0NPTlRST0xfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzLmV4
dGVuZChsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpKQotICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgaWYgbm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fY2hhbm5lbF9kYXRhOgot
ICAgICAgICAgICAgc2VsZi5fY2hhbm5lbF9kYXRhW2NoYW5uZWxfaWRdID0gX091dGdvaW5nQ2hh
bm5lbERhdGEoKQotICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9jaGFubmVsX2RhdGFbY2hh
bm5lbF9pZF0KLQotICAgICAgICAjIFBhcnNlIGxvZ2ljYWwgZnJhbWVzIGFuZCBhc3NlbWJsZSBh
biBpbm5lciAobG9naWNhbCkgbWVzc2FnZS4KLSAgICAgICAgKGlubmVyX2ZpbiwgaW5uZXJfcnN2
MSwgaW5uZXJfcnN2MiwgaW5uZXJfcnN2MywgaW5uZXJfb3Bjb2RlLAotICAgICAgICAgaW5uZXJf
cGF5bG9hZCkgPSBwYXJzZXIucmVhZF9pbm5lcl9mcmFtZSgpCi0gICAgICAgIGlubmVyX2ZyYW1l
ID0gRnJhbWUoaW5uZXJfZmluLCBpbm5lcl9yc3YxLCBpbm5lcl9yc3YyLCBpbm5lcl9yc3YzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyX29wY29kZSwgaW5uZXJfcGF5bG9hZCkK
LSAgICAgICAgbWVzc2FnZSA9IGNoYW5uZWxfZGF0YS5idWlsZGVyLmJ1aWxkKGlubmVyX2ZyYW1l
KQotICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAg
ICAgICBpZiAobWVzc2FnZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9URVhUIG9yCi0gICAgICAg
ICAgICBtZXNzYWdlLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWSk6Ci0gICAgICAgICAg
ICBjaGFubmVsX2RhdGEubWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UucGF5bG9hZCkKLQotICAgICAg
ICAgICAgc2VsZi5vbl9kYXRhX21lc3NhZ2UobWVzc2FnZS5wYXlsb2FkKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLmNvbnRyb2xfbWVzc2FnZXMuYXBwZW5kKAotICAg
ICAgICAgICAgICAgIHsnb3Bjb2RlJzogbWVzc2FnZS5vcGNvZGUsCi0gICAgICAgICAgICAgICAg
ICdtZXNzYWdlJzogbWVzc2FnZS5wYXlsb2FkfSkKLQotICAgIGRlZiBvbl9kYXRhX21lc3NhZ2Uo
c2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRfd3JpdHRlbl9jb250
cm9sX2Jsb2NrcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRyb2xfYmxvY2tzCi0K
LSAgICBkZWYgZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0ubWVzc2FnZXMKLQotICAgIGRl
ZiBnZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fY2hhbm5lbF9kYXRhW2NoYW5uZWxfaWRdLmNvbnRyb2xfbWVzc2FnZXMK
LQotCi1jbGFzcyBfRmFpbE9uV3JpdGVDb25uZWN0aW9uKF9Nb2NrTXV4Q29ubmVjdGlvbik6Ci0g
ICAgIiIiU3BlY2ljaWFsaXplZCB2ZXJzaW9uIG9mIF9Nb2NrTXV4Q29ubmVjdGlvbi4gSXRzIHdy
aXRlKCkgbWV0aG9kIHJhaXNlcwotICAgIGFuIGV4Y2VwdGlvbiBmb3IgdGVzdGluZyB3aGVuIGEg
ZGF0YSBtZXNzYWdlIGlzIHdyaXR0ZW4uCi0gICAgIiIiCi0KLSAgICBkZWYgb25fZGF0YV9tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAiIiJPdmVycmlkZSB0byByYWlzZSBhbiBleGNl
cHRpb24uIiIiCi0KLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnRlbnRpb25hbCBmYWlsdXJl
JykKLQotCi1jbGFzcyBfQ2hhbm5lbEV2ZW50KG9iamVjdCk6Ci0gICAgIiIiQSBzdHJ1Y3R1cmUg
dGhhdCByZWNvcmRzIGNoYW5uZWwgZXZlbnRzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBzZWxmLnJlcXVlc3QgPSBOb25lCi0gICAgICAgIHNlbGYubWVzc2FnZXMgPSBb
XQotICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IE5vbmUKLSAgICAgICAgc2VsZi5jbGllbnRfaW5p
dGlhdGVkX2Nsb3NpbmcgPSBGYWxzZQotCi0KLWNsYXNzIF9NdXhNb2NrRGlzcGF0Y2hlcihvYmpl
Y3QpOgotICAgICIiIk1vY2sgY2xhc3Mgb2YgZGlzcGF0Y2guRGlzcGF0Y2hlciBmb3IgbXV4LiIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRz
ID0ge30KLQotICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6Ci0gICAg
ICAgIGlmIHJlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSByZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2Nv
bHNbMF0KLQotICAgIGRlZiBfZG9fZWNobyhzZWxmLCByZXF1ZXN0LCBjaGFubmVsX2V2ZW50cyk6
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gcmVxdWVzdC53c19z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgPT0gTm9uZToK
LSAgICAgICAgICAgICAgICBjaGFubmVsX2V2ZW50cy5jbGllbnRfaW5pdGlhdGVkX2Nsb3Npbmcg
PSBUcnVlCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBpZiBtZXNzYWdlID09
ICdHb29kYnllJzoKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGNoYW5uZWxf
ZXZlbnRzLm1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQotICAgICAgICAgICAgIyBlY2hvIGJhY2sK
LSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShtZXNzYWdlKQotCi0g
ICAgZGVmIF9kb19waW5nKHNlbGYsIHJlcXVlc3QsIGNoYW5uZWxfZXZlbnRzKToKLSAgICAgICAg
cmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKCdQaW5nIScpCi0KLSAgICBkZWYgX2RvX3Bpbmdf
d2hpbGVfaGVsbG9fd29ybGQoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9ldmVudHMpOgotICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ0hlbGxvICcsIGVuZD1GYWxzZSkKLSAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKCdQaW5nIScpCi0gICAgICAgIHJlcXVl
c3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnV29ybGQhJywgZW5kPVRydWUpCi0KLSAgICBkZWYg
X2RvX3R3b19waW5nX3doaWxlX2hlbGxvX3dvcmxkKHNlbGYsIHJlcXVlc3QsIGNoYW5uZWxfZXZl
bnRzKToKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdIZWxsbyAnLCBl
bmQ9RmFsc2UpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUGluZyEnKQot
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BvbmchJykKLSAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdXb3JsZCEnLCBlbmQ9VHJ1ZSkKLQotICAgIGRl
ZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBzZWxmLmNoYW5uZWxfZXZl
bnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0gPSBfQ2hhbm5lbEV2ZW50KCkKLSAgICAgICAgc2VsZi5j
aGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLnJlcXVlc3QgPSByZXF1ZXN0Ci0KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgIyBOb3RlOiBtb3JlIGhhbmRsZXIgd2lsbCBiZSBhZGRl
ZC4KLSAgICAgICAgICAgIGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCdlY2hvJyk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fZG9fZWNobyhyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAg
ICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgncGluZycpOgotICAgICAgICAgICAgICAgIHNl
bGYuX2RvX3BpbmcocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
Y2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXSkKLSAgICAgICAgICAgIGVsaWYgcmVx
dWVzdC51cmkuZW5kc3dpdGgoJ3R3b19waW5nX3doaWxlX2hlbGxvX3dvcmxkJyk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fZG9fdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQoCi0gICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QsIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lk
XSkKLSAgICAgICAgICAgIGVsaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgoJ3Bpbmdfd2hpbGVfaGVs
bG9fd29ybGQnKToKLSAgICAgICAgICAgICAgICBzZWxmLl9kb19waW5nX3doaWxlX2hlbGxvX3dv
cmxkKAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LCBzZWxmLmNoYW5uZWxfZXZlbnRzW3Jl
cXVlc3QuY2hhbm5lbF9pZF0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBoYW5kbGUgcGF0aCAlcicgJSByZXF1ZXN0LnBhdGgpCi0g
ICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKLSAgICAgICAgZXhjZXB0
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5jaGFu
bmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4Y2VwdGlvbiA9IGUKLSAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVz
dC5jaGFubmVsX2lkXS5leGNlcHRpb24gPSBlCi0gICAgICAgICAgICByYWlzZQotCi0KLWRlZiBf
Y3JlYXRlX21vY2tfcmVxdWVzdChjb25uZWN0aW9uPU5vbmUsIGxvZ2ljYWxfY2hhbm5lbF9leHRl
bnNpb25zPU5vbmUpOgotICAgIGlmIGNvbm5lY3Rpb24gaXMgTm9uZToKLSAgICAgICAgY29ubmVj
dGlvbiA9IF9Nb2NrTXV4Q29ubmVjdGlvbigpCi0KLSAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVx
dWVzdCh1cmk9Jy9lY2hvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJz
X2luPV9URVNUX0hFQURFUlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVj
dGlvbj1jb25uZWN0aW9uKQotICAgIHJlcXVlc3Qud3Nfc3RyZWFtID0gU3RyZWFtKHJlcXVlc3Qs
IG9wdGlvbnM9U3RyZWFtT3B0aW9ucygpKQotICAgIHJlcXVlc3QubXV4X3Byb2Nlc3NvciA9IE11
eEV4dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihj
b21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgaWYgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnMg
aXMgbm90IE5vbmU6Ci0gICAgICAgIHJlcXVlc3QubXV4X3Byb2Nlc3Nvci5zZXRfZXh0ZW5zaW9u
cyhsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucykKLSAgICByZXF1ZXN0Lm11eF9wcm9jZXNzb3Iu
c2V0X3F1b3RhKDggKiAxMDI0KQotICAgIHJldHVybiByZXF1ZXN0Ci0KLQotZGVmIF9jcmVhdGVf
YWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZShjaGFubmVsX2lkLCBlbmNvZGluZywgZW5jb2RlZF9o
YW5kc2hha2UpOgotICAgICMgQWxsb3cgaW52YWxpZCBlbmNvZGluZyBmb3IgdGVzdGluZy4KLSAg
ICBmaXJzdF9ieXRlID0gKChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA8PCA1
KSB8IGVuY29kaW5nKQotICAgIHBheWxvYWQgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAg
ICAgICAgIG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAgICAg
ICAgbXV4Ll9lbmNvZGVfbnVtYmVyKGxlbihlbmNvZGVkX2hhbmRzaGFrZSkpICsKLSAgICAgICAg
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1l
KAotICAgICAgICAobXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9J
RCkgKyBwYXlsb2FkKSwgbWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9m
cmFtZShjaGFubmVsX2lkLCBjb2RlPU5vbmUsIG1lc3NhZ2U9JycpOgotICAgIHBheWxvYWQgPSBt
dXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkKLSAgICBy
ZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAgICAgKG11eC5fZW5jb2RlX2NoYW5uZWxf
aWQobXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgcGF5bG9hZCksIG1hc2s9VHJ1ZSkKLQotCi1k
ZWYgX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVv
dGEpOgotICAgIHBheWxvYWQgPSBtdXguX2NyZWF0ZV9mbG93X2NvbnRyb2woY2hhbm5lbF9pZCwg
cmVwbGVuaXNoZWRfcXVvdGEpCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUoCi0gICAg
ICAgIChtdXguX2VuY29kZV9jaGFubmVsX2lkKG11eC5fQ09OVFJPTF9DSEFOTkVMX0lEKSArIHBh
eWxvYWQpLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkLCBtZXNzYWdlLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9CSU5BUlksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbj1UcnVlLCByc3YxPUZhbHNlLCByc3YyPUZhbHNlLCByc3YzPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrPVRydWUpOgotICAgIGJpdHMgPSBjaHIo
KGZpbiA8PCA3KSB8IChyc3YxIDw8IDYpIHwgKHJzdjIgPDwgNSkgfCAocnN2MyA8PCA0KSB8IG9w
Y29kZSkKLSAgICBwYXlsb2FkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSAr
IGJpdHMgKyBtZXNzYWdlCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZCwg
bWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJywg
ZXh0ZW5zaW9ucz1Ob25lKToKLSAgICBoZWFkZXJzID0gKAotICAgICAgICAnR0VUICVzIEhUVFAv
MS4xXHJcbicKLSAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxlLmNvbVxyXG4nCi0gICAgICAg
ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1w
bGUuY29tXHJcbicpICUgcGF0aAotICAgIGlmIGV4dGVuc2lvbnM6Ci0gICAgICAgIGhlYWRlcnMg
Kz0gJyVzOiAlcycgJSAoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJ
T05TX0hFQURFUiwgZXh0ZW5zaW9ucykKLSAgICByZXR1cm4gaGVhZGVycwotCi0KLWNsYXNzIE11
eFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIG11eCBtb2R1
bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX2RlY29kZShzZWxmKToKLSAgICAgICAg
ZGF0YSA9ICdceDAwXHgwMVx4YmZceGZmXHhkZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZicKLSAg
ICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAg
Y2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDAsIGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIucmVhZF9j
aGFubmVsX2lkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBjaGFubmVsX2lkKQotICAg
ICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMiAqKiAxNCAtIDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQg
PSBwYXJzZXIucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICoq
IDIxIC0gMSwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2No
YW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgKiogMjkgLSAxLCBjaGFubmVs
X2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgcGFyc2VyLl9yZWFkX3Bv
c2l0aW9uKQotCi0gICAgZGVmIHRlc3RfY2hhbm5lbF9pZF9lbmNvZGUoc2VsZik6Ci0gICAgICAg
IGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1x4MDAnLCBlbmNvZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hh
bm5lbF9pZCgyICoqIDE0IC0gMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhiZlx4ZmYn
LCBlbmNvZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoq
IDE0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGMwQFx4MDAnLCBlbmNvZGVkKQotICAg
ICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoqIDIxIC0gMSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhkZlx4ZmZceGZmJywgZW5jb2RlZCkKLSAgICAgICAgZW5j
b2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyMSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHhlMCBceDAwXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXgu
X2VuY29kZV9jaGFubmVsX2lkKDIgKiogMjkgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdceGZmXHhmZlx4ZmZceGZmJywgZW5jb2RlZCkKLSAgICAgICAgIyBjaGFubmVsX2lkIGlzIHRv
byBsYXJnZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBtdXguX2VuY29kZV9jaGFubmVsX2lkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAyICoqIDI5KQotCi0gICAgZGVmIHRlc3RfcmVhZF9tdWx0aXBsZV9jb250cm9s
X2Jsb2NrcyhzZWxmKToKLSAgICAgICAgIyBVc2UgQWRkQ2hhbm5lbFJlcXVlc3QgYmVjYXVzZSBp
dCBjYW4gY29udGFpbiBhcmJpdHJhcnkgbGVuZ3RoIG9mIGRhdGEKLSAgICAgICAgZGF0YSA9ICgn
XHgwMFx4MDFceDAxYScKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDJceDdkJXMnCi0gICAgICAg
ICAgICAgICAgJ1x4MDBceDAzXHg3ZVx4ZmZceGZmJXMnCi0gICAgICAgICAgICAgICAgJ1x4MDBc
eDA0XHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJXMnKSAlICgKLSAgICAgICAg
ICAgICdhJyAqIDB4N2QsICdiJyAqIDB4ZmZmZiwgJ2MnICogMHgxMDAwMCkKLSAgICAgICAgcGFy
c2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0g
bGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDQsIGxlbihibG9ja3MpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhf
T1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nrc1swXS5vcGNvZGUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgbGVuKGJsb2Nrc1swXS5lbmNvZGVkX2hhbmRzaGFrZSkpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxv
Y2tzWzFdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBibG9ja3NbMV0uY2hh
bm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgweDdkLCBsZW4oYmxvY2tzWzFdLmVu
Y29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVFVRVNULCBibG9ja3NbMl0ub3Bjb2RlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDMsIGJsb2Nrc1syXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDB4ZmZmZiwgbGVuKGJsb2Nrc1syXS5lbmNvZGVkX2hhbmRzaGFrZSkpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwg
YmxvY2tzWzNdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBibG9ja3NbM10u
Y2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgweDEwMDAwLCBsZW4oYmxvY2tz
WzNdLmVuY29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihk
YXRhKSwgcGFyc2VyLl9yZWFkX3Bvc2l0aW9uKQotCi0gICAgZGVmIHRlc3RfcmVhZF9hZGRfY2hh
bm5lbF9yZXF1ZXN0KHNlbGYpOgotICAgICAgICBkYXRhID0gJ1x4MDBceDAxXHgwMWEnCi0gICAg
ICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIGJs
b2NrcyA9IGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxvY2tzWzBd
Lm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hhbm5lbF9p
ZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29kZWRfaGFu
ZHNoYWtlKSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfZHJvcF9jaGFubmVsKHNlbGYpOgotICAgICAg
ICBkYXRhID0gJ1x4NjBceDAxXHgwMCcKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBh
eWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250
cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwsIGJsb2Nrc1sw
XS5vcGNvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgYmxvY2tzWzBdLmRyb3Bf
Y29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oYmxvY2tzWzBdLmRyb3BfbWVz
c2FnZSkpCi0KLSAgICAgICAgZGF0YSA9ICdceDYwXHgwMlx4MDlceDAzXHhlOFN1Y2Nlc3MnCi0g
ICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAg
IGJsb2NrcyA9IGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
LCBibG9ja3NbMF0uY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX01V
WF9PUENPREVfRFJPUF9DSEFOTkVMLCBibG9ja3NbMF0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEwMDAsIGJsb2Nrc1swXS5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1N1Y2Nlc3MnLCBibG9ja3NbMF0uZHJvcF9tZXNzYWdlKQotCi0gICAgICAgICMgUmVh
c29uIGlzIHRvbyBzaG9ydC4KLSAgICAgICAgZGF0YSA9ICdceDYwXHgwMVx4MDFceDAwJwotICAg
ICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGxhbWJkYTogbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2Nrcygp
KSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfZmxvd19jb250cm9sKHNlbGYpOgotICAgICAgICBkYXRh
ID0gJ1x4NDBceDAxXHgwMicKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQ
YXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Js
b2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9GTE9XX0NPTlRST0wsIGJsb2Nrc1swXS5vcGNv
ZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgYmxvY2tzWzBdLnNlbmRfcXVvdGEpCi0K
LSAgICBkZWYgdGVzdF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZik6Ci0gICAgICAgIGRhdGEg
PSAnXHg4MFx4MDFceDAyXHgwMlx4MDMnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQ
YXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IEltcGxlbWVudAotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Js
b2NrcygpKSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfaW52YWxpZF9udW1iZXJfZmllbGRfaW5fY29u
dHJvbF9ibG9jayhzZWxmKToKLSAgICAgICAgIyBObyBudW1iZXIgZmllbGQuCi0gICAgICAgIGRh
dGEgPSAnJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRh
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVt
YmVyKQotCi0gICAgICAgICMgVGhlIGxhc3QgdHdvIGJ5dGVzIGFyZSBtaXNzaW5nLgotICAgICAg
ICBkYXRhID0gJ1x4N2UnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFy
c2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5f
cmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBNaXNzaW5nIHRoZSBsYXN0IG9uZSBieXRlLgotICAg
ICAgICBkYXRhID0gJ1x4N2ZceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwJwotICAgICAgICBw
YXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0gICAgICAgICMg
VGhlIGxlbmd0aCBvZiBudW1iZXIgZmllbGQgaXMgdG9vIGxhcmdlLgotICAgICAgICBkYXRhID0g
J1x4N2ZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZicKLSAgICAgICAgcGFyc2VyID0g
bXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAjIFRoZSBtc2Ig
b2YgdGhlIGZpcnN0IGJ5dGUgaXMgc2V0LgotICAgICAgICBkYXRhID0gJ1x4ODAnCi0gICAgICAg
IHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAg
IyBVc2luZyAzIGJ5dGVzIGVuY29kaW5nIGZvciAxMjUuCi0gICAgICAgIGRhdGEgPSAnXHg3ZVx4
MDBceDdkJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRh
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVt
YmVyKQotCi0gICAgICAgICMgVXNpbmcgOSBieXRlcyBlbmNvZGluZyBmb3IgMHhmZmZmCi0gICAg
ICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ZmZceGZmJwotICAgICAg
ICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0gICAgZGVm
IHRlc3RfcmVhZF9pbnZhbGlkX3NpemVfYW5kX2NvbnRlbnRzKHNlbGYpOgotICAgICAgICAjIE9u
bHkgY29udGFpbiBudW1iZXIgZmllbGQuCi0gICAgICAgIGRhdGEgPSAnXHgwMScKLSAgICAgICAg
cGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMobXV4LlBoeXNpY2FsQ29ubmVjdGlvbkVycm9yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJzZXIuX3JlYWRfc2l6ZV9hbmRfY29udGVudHMpCi0KLSAgICBkZWYgdGVz
dF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgIGRhdGEgPSBtdXgu
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkPTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT0nRm9v
QmFyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y29kaW5nPTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWplY3RlZD1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgyMFx4MDFceDA2
Rm9vQmFyJywgZGF0YSkKLQotICAgICAgICBkYXRhID0gbXV4Ll9jcmVhdGVfYWRkX2NoYW5uZWxf
cmVzcG9uc2UoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9J0hlbGxvJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RlZD1UcnVlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDMxXHgwMlx4MDVIZWxsbycsIGRhdGEpCi0KLSAgICBk
ZWYgdGVzdF9jcmVhdGVfZHJvcF9jaGFubmVsKHNlbGYpOgotICAgICAgICBkYXRhID0gbXV4Ll9j
cmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQ9MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnXHg2MFx4MDFceDAwJywgZGF0YSkKLQotICAgICAgICBkYXRhID0gbXV4Ll9jcmVhdGVfZHJv
cF9jaGFubmVsKGNoYW5uZWxfaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2RlPTIwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZT0nZXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDYwXHgwMVx4
MDdceDA3XHhkMGVycm9yJywgZGF0YSkKLQotICAgICAgICAjIHJlYXNvbiBtdXN0IGJlIGVtcHR5
IGlmIGNvZGUgaXMgTm9uZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIE5vbmUsICdGb29CYXInKQotCi0gICAgZGVmIHRlc3Rf
cGFyc2VfcmVxdWVzdF90ZXh0KHNlbGYpOgotICAgICAgICByZXF1ZXN0X3RleHQgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKCkKLSAgICAgICAgY29tbWFuZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVy
cyA9IG11eC5fcGFyc2VfcmVxdWVzdF90ZXh0KHJlcXVlc3RfdGV4dCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnR0VUJywgY29tbWFuZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Vj
aG8nLCBwYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIVFRQLzEuMScsIHZlcnNpb24p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGhlYWRlcnMpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzZXJ2ZXIuZXhhbXBsZS5jb20nLCBoZWFkZXJzWydIb3N0J10pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIGhlYWRlcnNbJ09yaWdp
biddKQotCi0KLWNsYXNzIE11eEhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAg
IGRlZiB0ZXN0X2FkZF9jaGFubmVsKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9t
b2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkK
LSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hl
cikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRf
Y2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1Jf
Q0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hl
YWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRl
X2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVu
Y29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFr
ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1
ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxf
cmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAg
IGNoYW5uZWxfaWQ9MywgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
PWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0x
LCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNz
YWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0g
ICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdH
b29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50
aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRpc3Bh
dGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50
c1szXS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVsIDIKLSAgICAgICAgbWVzc2FnZXMgPSBy
ZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
ZWxsbycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENoYW5uZWwgMwotICAgICAgICBtZXNzYWdl
cyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygzKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAgIGNvbnRyb2xfYmxvY2tzID0gcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgIyBUaGVy
ZSBzaG91bGQgYmUgOCBjb250cm9sIGJsb2NrczoKLSAgICAgICAgIyAgIC0gMSBOZXdDaGFubmVs
U2xvdAotICAgICAgICAjICAgLSAyIEFkZENoYW5uZWxSZXNwb25zZXMgZm9yIGNoYW5uZWwgaWQg
MiBhbmQgMwotICAgICAgICAjICAgLSA2IEZsb3dDb250cm9scyBmb3IgY2hhbm5lbCBpZCAxIChp
bml0aWFsaXplKSwgJ0hlbGxvJywgJ1dvcmxkJywKLSAgICAgICAgIyAgICAgYW5kIDMgJ0dvb2Ri
eWUncwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDksIGxlbihjb250cm9sX2Jsb2NrcykpCi0K
LSAgICBkZWYgdGVzdF9waHlzaWNhbF9jb25uZWN0aW9uX3dyaXRlX2ZhaWx1cmUoc2VsZik6Ci0g
ICAgICAgICMgVXNlIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24uCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX21vY2tfcmVxdWVzdChjb25uZWN0aW9uPV9GYWlsT25Xcml0ZUNvbm5lY3Rpb24oKSkK
LQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4
X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
bXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgTGV0IHRoZSB3b3JrZXIgZWNobyBiYWNr
ICdIZWxsbycuIEl0IGNhdXNlcyBfRmFpbE9uV3JpdGVDb25uZWN0aW9uCi0gICAgICAgICMgcmFp
c2luZyBhbiBleGNlcHRpb24uCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdl
PSdIZWxsbycpKQotCi0gICAgICAgICMgTGV0IHRoZSB3b3JrZXIgZXhpdC4gVGhpcyB3aWxsIGJl
IHVubmVjZXNzYXJ5IHdoZW4KLSAgICAgICAgIyBfTG9naWNhbENvbm5lY3Rpb24ud3JpdGUoKSBp
cyBjaGFuZ2VkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpZgotICAgICAgICAjIHdva2UgdXAgYnkg
b25fd3JpdGVyX2RvbmUuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0g
ICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdH
b29kYnllJykpCi0KLSAgICAgICAgIyBBbGwgdGhyZWFkcyBzaG91bGQgYmUgZG9uZS4KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIp
KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9ibG9ja2VkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9T
TE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29k
ZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9j
aGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBPbiByZWNlaXZpbmcgdGhpcyAnSGVsbG8nLCB0
aGUgc2VydmVyIHRyaWVzIHRvIGVjaG8gYmFjayAnSGVsbG8nLAotICAgICAgICAjIGJ1dCBpdCB3
aWxsIGJlIGJsb2NrZWQgc2luY2UgdGhlcmUncyBubyBzZW5kIHF1b3RhIGF2YWlsYWJsZSBmb3Ig
dGhlCi0gICAgICAgICMgY2hhbm5lbCAyLgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICAjIFdhaXQgdW50aWwgdGhlIHdvcmtlciBpcyBi
bG9ja2VkIGR1ZSB0byBzZW5kIHF1b3RhIHNob3J0YWdlLgotICAgICAgICB0aW1lLnNsZWVwKDEp
Ci0KLSAgICAgICAgIyBDbG9zZSB0aGUgY2hhbm5lbCAyLiBUaGUgd29ya2VyIHNob3VsZCBiZSBu
b3RpZmllZCBvZiB0aGUgZW5kIG9mCi0gICAgICAgICMgd3JpdGVyIHRocmVhZCBhbmQgc3RvcCB3
YWl0aW5nIGZvciBzZW5kIHF1b3RhIHRvIGJlIHJlcGxlbmlzaGVkLgotICAgICAgICBkcm9wX2No
YW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTIpCi0KLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhkcm9wX2NoYW5uZWwpCi0KLSAgICAgICAg
IyBNYWtlIHN1cmUgdGhlIGNoYW5uZWwgMSBpcyBhbHNvIGNsb3NlZC4KLSAgICAgICAgZHJvcF9j
aGFubmVsID0gX2NyZWF0ZV9kcm9wX2NoYW5uZWxfZnJhbWUoY2hhbm5lbF9pZD0xKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGRyb3BfY2hhbm5lbCkKLQotICAgICAgICAj
IEFsbCB0aHJlYWRzIHNob3VsZCBiZSBkb25lLgotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4
X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICBkZWYgdGVzdF9hZGRf
Y2hhbm5lbF9kZWx0YV9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
bW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigp
Ci0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNo
ZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRk
X2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9S
X0NMSUVOVCkKLQotICAgICAgICBkZWx0YSA9ICdHRVQgL2VjaG8gSFRUUC8xLjFcclxuXHJcbicK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MSwgZW5jb2RlZF9o
YW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3df
Y29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAg
ICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotCi0gICAgZGVmIHRlc3RfYWRkX2No
YW5uZWxfZGVsdGFfZW5jb2Rpbmdfb3ZlcnJpZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3Bh
dGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBk
aXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5k
bGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9U
UywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FV
T1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgIyBPdmVycmlkZSBTZWMtV2ViU29ja2V0LVByb3Rv
Y29sLgotICAgICAgICBkZWx0YSA9ICgnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAgICAg
ICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAg
ICAgICAgJ1xyXG4nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRf
Y2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGlu
Zz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9
IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1l
c3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRl
bl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3gtZm9vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
YXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYg
dGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9hZnRlcl9pZGVudGl0eShzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAg
bXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFO
TkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lO
SVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLSAgICAgICAgIyBTZWMtV2ViU29ja2V0LVByb3RvY29s
IGlzIGRpZmZlcmVudCBmcm9tIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtlCi0gICAgICAgICMg
b2YgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFJlbW92
ZSBVcGdyYWRlLCBDb25uZWN0aW9uLCBTZWMtV2ViU29ja2V0LUtleSBhbmQKLSAgICAgICAgIyBT
ZWMtV2ViU29ja2V0LVZlcnNpb24uCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gKAotICAg
ICAgICAgICAgJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAnSG9zdDogc2Vy
dmVyLmV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29s
OiB4LWZvb1xyXG4nCi0gICAgICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAg
ICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgJ1xy
XG4nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAg
ICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAg
ICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxl
bmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxv
d19jb250cm9sKQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG5cclxu
JwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1
ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0xLCBlbmNvZGVk
X2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhh
ZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0zLCBtZXNzYWdlPSdXb3JsZCcpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAg
ICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nR29v
ZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGls
X2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkaXNwYXRj
aGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbJ1dvcmxkJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNb
M10ubWVzc2FnZXMpCi0gICAgICAgICMgQ2hhbm5lbCAyCi0gICAgICAgIG1lc3NhZ2VzID0gcmVx
dWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVs
bG8nLCBtZXNzYWdlc1swXSkKLSAgICAgICAgIyBDaGFubmVsIDMKLSAgICAgICAgbWVzc2FnZXMg
PSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdXb3JsZCcsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIEhhbmRzaGFrZSBiYXNlIHNob3VsZCBi
ZSB1cGRhdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ3gtZm9v
JywKLSAgICAgICAgICAgIG11eF9oYW5kbGVyLl9oYW5kc2hha2VfYmFzZS5faGVhZGVyc1snU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCddKQotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWxfZGVsdGFf
cmVtb3ZlX2hlYWRlcihzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1
ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAg
IG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAg
ICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxf
c2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkK
LSAgICAgICAgIyBPdmVycmlkZSBoYW5kc2hha2UgZGVsdGEgYmFzZS4KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSAoCi0gICAgICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAg
ICAgICAgICAgICdIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxy
XG4nCi0gICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBSZW1vdmUgU2VjLVdl
YlNvY2tldC1Qcm90b2NvbCBoZWFkZXIuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRU
UC8xLjFcclxuJwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDonCi0g
ICAgICAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MywgZW5jb2Rpbmc9MSwgZW5jb2RlZF9oYW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93
X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVk
X3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250
cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTMsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
bXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVu
dHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCddLCBkaXNw
YXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5uZWwgMgot
ICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdl
cygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgQ2hhbm5l
bCAzCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21l
c3NhZ2VzKDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICd4LWZvbycsCi0gICAgICAgICAgICBkaXNwYXRj
aGVyLmNoYW5uZWxfZXZlbnRzWzJdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgZGlzcGF0Y2hlci5j
aGFubmVsX2V2ZW50c1szXS5yZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfYWRk
X2NoYW5uZWxfZGVsdGFfZW5jb2RpbmdfcGVybWVzc2FnZV9jb21wcmVzcyhzZWxmKToKLSAgICAg
ICAgIyBFbmFibGUgcGVybWVzc2FnZSBjb21wcmVzcyBleHRlbnNpb24gb24gdGhlIGltcGxpY2l0
bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0
ZW5zaW9ucygKLSAgICAgICAgICAgICclczsgbWV0aG9kPWRlZmxhdGUnICUgY29tbW9uLlBFUk1F
U1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9t
b2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucz1leHRl
bnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAg
ICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAg
ICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5l
bF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5U
KQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG5cclxuJwotICAgICAg
ICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1l
KAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFr
ZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVz
c2VkICdIZWxsbycgb24gbG9naWNhbCBjaGFubmVsIDEgYW5kIDIuCi0gICAgICAgIGNvbXByZXNz
ID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNT
SU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTEsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPVRydWUpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJzdjE9VHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9
J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAg
ICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2Ri
eWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9k
b25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRp
c3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQot
ICAgICAgICAjIFdyaXR0ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAgICAg
IG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDEpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvLCBtZXNzYWdlc1swXSkKLSAgICAgICAgbWVzc2Fn
ZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbXByZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBdKQotCi0gICAgZGVmIHRlc3RfYWRkX2No
YW5uZWxfZGVsdGFfZW5jb2RpbmdfcmVtb3ZlX2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgICMg
RW5hYmxlIHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0ZW5zaW9uIG9uIHRoZSBpbXBsaWNpdGx5IG9w
ZW5lZCBjaGFubmVsLgotICAgICAgICBleHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVuc2lv
bnMoCi0gICAgICAgICAgICAnJXM7IG1ldGhvZD1kZWZsYXRlJyAlIGNvbW1vbi5QRVJNRVNTQUdF
X0NPTVBSRVNTSU9OX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19y
ZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnM9ZXh0ZW5zaW9u
cykKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11
eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAg
IG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xv
dHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQot
ICAgICAgICAjIFJlbW92ZSBwZXJtZXNzYWdlIGNvbXByZXNzIGV4dGVuc2lvbi4KLSAgICAgICAg
ZGVsdGEgPSAoJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAgICAgICdTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnM6XHJcbicKLSAgICAgICAgICAgICAgICAgJ1xyXG4nKQotICAg
ICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2Zy
YW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRz
aGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21w
cmVzc2VkIG1lc3NhZ2Ugb24gbG9naWNhbCBjaGFubmVsIDIuIFRoZSBtZXNzYWdlIHNob3VsZAot
ICAgICAgICAjIGJlIHJlamVjdGVkIChzaW5jZSByc3YxIGlzIHNldCkuCi0gICAgICAgIGNvbXBy
ZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2MT1UcnVlKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFu
ZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwg
PSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dy
aXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9N
VVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RS
T1BfQ09ERV9OT1JNQUxfQ0xPU1VSRSwgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAgIyBV
bnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uIHNob3VsZCBiZSByYWlzZWQgb24gbG9naWNhbCBjaGFu
bmVsIDIuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGRpc3BhdGNoZXIuY2hh
bm5lbF9ldmVudHNbMl0uZXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKSkKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFu
bmVsX2ludmFsaWRfZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21v
Y2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQot
ICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVy
KQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9j
aGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9D
TElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVh
ZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVf
YWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5j
b2Rpbmc9MywKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtl
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVl
c3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9u
ZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAg
ICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2Nr
cygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFO
TkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1VOS05PV05fUkVR
VUVTVF9FTkNPRElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJv
cF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxf
RU5EUE9JTlRfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnNlcnZlcl9jbG9zZV9jb2RlKQotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWxfaW5jb21w
bGV0ZV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVx
dWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAg
ICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAg
ICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVs
X3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQp
Ci0KLSAgICAgICAgaW5jb21wbGV0ZV9lbmNvZGVkX2hhbmRzaGFrZSA9ICdHRVQgL2VjaG8gSFRU
UC8xLjEnCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVs
X3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0g
ICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1pbmNvbXBsZXRlX2VuY29kZWRfaGFuZHNoYWtl
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVl
c3QpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkK
LQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDEgaW4gZGlzcGF0Y2hlci5jaGFu
bmVsX2V2ZW50cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCAyIGluIGRpc3BhdGNoZXIu
Y2hhbm5lbF9ldmVudHMpCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kdXBsaWNhdGVfY2hh
bm5lbF9pZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkK
LSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9o
YW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11
eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMo
bXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2Vj
aG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAg
ICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAg
ICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8n
KQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1
ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAg
ICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0K
LSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVx
dWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAg
IGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfQ0hBTk5FTF9BTFJFQURZX0VYSVNUUywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9zZV9j
b2RlKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9kcm9wX2NoYW5uZWwoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBf
TXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxl
cihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAg
ICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0Zf
Q0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4
Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2Ug
PSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5u
ZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAg
ICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gX2NyZWF0
ZV9kcm9wX2NoYW5uZWxfZnJhbWUoY2hhbm5lbF9pZD0yKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGRyb3BfY2hhbm5lbCkKLQotICAgICAgICAjIFRlcm1pbmF0ZSBpbXBs
aWNpdGx5IG9wZW5lZCBjaGFubmVsLgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVz
c2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53
YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBleGNlcHRpb24gPSBkaXNwYXRj
aGVyLmNoYW5uZWxfZXZlbnRzWzJdLmV4Y2VwdGlvbgotICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZXhjZXB0aW9uLl9fY2xhc3NfXyA9PSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbikKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZ19mcmFtZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlz
cGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hh
bmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NM
T1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVf
cmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0
ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5l
bF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2Rl
ZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2No
YW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEzKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICBwaW5nX2ZyYW1l
ID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyBXb3JsZCEnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZ19mcmFtZSkK
LQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkK
LQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250
cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9Q
T05HLCBtZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvIFdvcmxkIScsIG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX2ZyYWdtZW50ZWRfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9j
a19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0g
ICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2No
YW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFk
ZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNv
ZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2Up
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVz
dCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEzKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQgYSBwaW5nIHdpdGggbWVz
c2FnZSAnSGVsbG8gd29ybGQhJyBpbiB0d28gZnJhZ21lbnRlZCBmcmFtZXMuCi0gICAgICAgIHBp
bmdfZnJhbWUxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVsbG8gJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9QSU5HKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmdfZnJh
bWUxKQotICAgICAgICBwaW5nX2ZyYW1lMiA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2U9J1dvcmxkIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMocGluZ19mcmFtZTIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1l
c3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIu
d2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0
LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtZXNzYWdlc1swXVsnbWVz
c2FnZSddKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudGVkX3Bpbmdfd2hpbGVfcmVj
ZWl2aW5nX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hl
cigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3Bh
dGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVz
dF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2Ny
ZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0y
LCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5k
c2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxf
cmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE5KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFnbWVu
dGVkIGZyYW1lIG9mIG1lc3NhZ2UgJ0hlbGxvICcuCi0gICAgICAgIGhlbGxvID0gX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nSGVsbG8gJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmluPUZhbHNlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGhlbGxvKQotCi0gICAgICAgICMgQmVmb3JlIHNlbmRpbmcgdGhlIGxhc3QgZnJhZ21lbnRlZCBm
cmFtZSBvZiB0aGUgbWVzc2FnZSwgc2VuZCBhCi0gICAgICAgICMgZnJhZ21lbnRlZCBwaW5nLgot
ICAgICAgICBwaW5nMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BpJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcxKQotICAgICAgICBwaW5nMiA9IF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9J25nIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzIpCi0KLSAgICAgICAgIyBTZW5kIHRoZSBsYXN0IGZy
YWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UuCi0gICAgICAgIHdvcmxkID0gX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyh3b3JsZCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29u
bmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAgICAgICBjb250cm9sX21lc3NhZ2VzID0g
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcsIGNvbnRyb2xfbWVzc2FnZXNb
MF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIGNvbnRyb2xf
bWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfdHdvX3Bpbmdf
d2hpbGVfcmVjZWl2aW5nX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2Nr
RGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4
X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVM
X1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJ
QUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3df
Y29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTI1KQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQg
YSBmcmFnbWVudGVkIGZyYW1lIG9mIG1lc3NhZ2UgJ0hlbGxvICcuCi0gICAgICAgIGhlbGxvID0g
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVsbG8gJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmluPUZhbHNlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGhlbGxvKQotCi0gICAgICAgICMgQmVmb3JlIHNlbmRpbmcgdGhlIGxhc3QgZnJh
Z21lbnRlZCBmcmFtZSBvZiB0aGUgbWVzc2FnZSwgc2VuZCBhCi0gICAgICAgICMgZnJhZ21lbnRl
ZCBwaW5nIGFuZCBhIG5vbi1mcmFnbWVudGVkIHBpbmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZT0nUGknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMocGluZzEpCi0gICAgICAgIHBpbmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nbmchJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BD
T0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhw
aW5nMikKLSAgICAgICAgcGluZzMgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQb25nIScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5H
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmczKQotCi0gICAgICAg
ICMgU2VuZCB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLgotICAgICAg
ICB3b3JsZCA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1dvcmxkIScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMod29ybGQpCi0KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVz
c2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykKLSAgICAgICAg
Y29udHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9s
X21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05H
LCBjb250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnUGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05HLCBjb250cm9sX21lc3NhZ2VzWzFdWydvcGNv
ZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUG9uZyEnLCBjb250cm9sX21lc3NhZ2Vz
WzFdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Vfd2hpbGVfcmVj
ZWl2aW5nX2ZyYWdtZW50ZWRfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
bW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigp
Ci0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNo
ZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRk
X2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9S
X0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9o
ZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBl
bmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hh
a2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVx
dWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFt
ZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xOSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBTZW5kIGEgZnJhZ21lbnRlZCBw
aW5nLgotICAgICAgICBwaW5nMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BpJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcxKQotCi0gICAgICAgICMg
QmVmb3JlIHNlbmRpbmcgdGhlIGxhc3QgZnJhZ21lbnRlZCBwaW5nLCBzZW5kIGEgbWVzc2FnZS4K
LSAgICAgICAgIyBUaGUgbG9naWNhbCBjaGFubmVsICgyKSBzaG91bGQgYmUgZHJvcHBlZC4KLSAg
ICAgICAgbWVzc2FnZSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVsbG8gd29ybGQh
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhtZXNzYWdlKQotCi0gICAgICAgICMg
U2VuZCB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLgotICAgICAgICBw
aW5nMiA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J25nIScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzIpCi0KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJv
cF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0
aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2Rl
ID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMiwgZHJvcF9jaGFubmVsLmNoYW5uZWxfaWQpCi0gICAgICAgICMgTm8gbWVzc2FnZSBzaG91
bGQgYmUgc2VudCBvbiBjaGFubmVsIDIuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVy
cm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dy
aXR0ZW5fbWVzc2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgMikKLQotICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9
IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5k
bGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9P
Rl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
dXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL3BpbmcnKQotICAgICAgICBhZGRfY2hh
bm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAg
ICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3Jl
YXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0g
ICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
bWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcs
IG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEn
LCBtZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFnbWVudGVk
X3Bpbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFu
ZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhf
aGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11
eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9waW5n
JykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVx
dWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAg
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAg
IyBSZXBsZW5pc2ggMyBieXRlcy4gVGhpcyBpc24ndCBlbm91Z2ggdG8gc2VuZCB0aGUgd2hvbGUg
cGluZyBmcmFtZQotICAgICAgICAjIGJlY2F1c2UgdGhlIGZyYW1lIHdpbGwgaGF2ZSA1IGJ5dGVz
IG1lc3NhZ2UoJ1BpbmchJykuIFRoZSBmcmFtZQotICAgICAgICAjIHNob3VsZCBiZSBmcmFnbWVu
dGVkLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgV2FpdCB1bnRpbCB0aGUgd29ya2Vy
IGlzIGJsb2NrZWQgZHVlIHRvIHNlbmQgcXVvdGEgc2hvcnRhZ2UuCi0gICAgICAgIHRpbWUuc2xl
ZXAoMSkKLQotICAgICAgICAjIFJlcGxlbmlzaCByZW1haW5pbmcgMiArIDEgYnl0ZXMgKGluY2x1
ZGluZyBleHRyYSBjb3N0KS4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2Nv
bnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0zKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNz
YWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QSU5HLCBtZXNzYWdlc1sw
XVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgbWVzc2FnZXNb
MF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRlZF9waW5nX3doaWxl
X3NlbmRpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRj
aGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlz
cGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxl
ci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9U
QV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1
ZXN0X2hlYWRlcigKLSAgICAgICAgICAgIHBhdGg9Jy9waW5nX3doaWxlX2hlbGxvX3dvcmxkJykK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBB
cHBsaWNhdGlvbiB3aWxsIHNlbmQ6Ci0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ0hlbGxvICcg
d2l0aCBmaW49MAotICAgICAgICAjIC0gcGluZyB3aXRoICdQaW5nIScgbWVzc2FnZQotICAgICAg
ICAjIC0gdGV4dCBtZXNzYWdlICdXb3JsZCEnIHdpdGggZmluPTEKLSAgICAgICAgIyBSZXBsZW5p
c2ggKDYgKyAxKSArICgyICsgMSkgYnl0ZXMgc28gdGhhdCB0aGUgcGluZyB3aWxsIGJlCi0gICAg
ICAgICMgZnJhZ21lbnRlZCBvbiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBmbG93X2Nv
bnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1
b3RhPTEwKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJv
bCkKLQotICAgICAgICB0aW1lLnNsZWVwKDEpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggcmVtYWlu
aW5nIDMgKyA2IGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTkpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3Nh
Z2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwgbWVzc2FnZXMpCi0gICAgICAgIGNv
bnRyb2xfbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUElORywg
Y29udHJvbF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1BpbmchJywgY29udHJvbF9tZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rf
c2VuZF9mcmFnbWVudGVkX3R3b19waW5nX3doaWxlX3NlbmRpbmdfZnJhZ21lbnRlZF9tZXNzYWdl
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAg
ICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIg
PSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRs
ZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lO
SVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcigKLSAgICAgICAgICAgIHBh
dGg9Jy90d29fcGluZ193aGlsZV9oZWxsb193b3JsZCcpCi0gICAgICAgIGFkZF9jaGFubmVsX3Jl
cXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBj
aGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1l
bmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhh
ZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgQXBwbGljYXRpb24gd2lsbCBzZW5kOgot
ICAgICAgICAjIC0gdGV4dCBtZXNzYWdlICdIZWxsbyAnIHdpdGggZmluPTAKLSAgICAgICAgIyAt
IHBpbmcgd2l0aCAnUGluZyEnIG1lc3NhZ2UKLSAgICAgICAgIyAtIHBpbmcgd2l0aCAnUG9uZyEn
IG1lc3NhZ2UKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnV29ybGQhJyB3aXRoIGZpbj0xCi0g
ICAgICAgICMgUmVwbGVuaXNoICg2ICsgMSkgKyAoMiArIDEpIGJ5dGVzIHNvIHRoYXQgdGhlIGZp
cnN0IHBpbmcgd2lsbCBiZQotICAgICAgICAjIGZyYWdtZW50ZWQgb24gdGhlIGxvZ2ljYWwgY2hh
bm5lbC4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUo
Y2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xMCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgdGltZS5zbGVlcCgxKQotCi0gICAg
ICAgICMgUmVwbGVuaXNoIHJlbWFpbmluZyAzICsgKDUgKyAxKSArIDYgYnl0ZXMuIFRoZSBzZWNv
bmQgcGluZyB3b24ndAotICAgICAgICAjIGJlIGZyYWdtZW50ZWQgb24gdGhlIGxvZ2ljYWwgY2hh
bm5lbC4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUo
Y2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xNSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEs
IG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRs
ZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykKLSAgICAgICAgY29udHJvbF9tZXNz
YWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QSU5HLCBjb250cm9sX21l
c3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBj
b250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29tbW9uLk9QQ09ERV9QSU5HLCBjb250cm9sX21lc3NhZ2VzWzFdWydvcGNvZGUnXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnUG9uZyEnLCBjb250cm9sX21lc3NhZ2VzWzFdWydtZXNzYWdl
J10pCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Ryb3BfY2hhbm5lbChzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLQotICAgICAg
ICAjIERyb3BDaGFubmVsIGZvciBjaGFubmVsIGlkIDEgd2hpY2ggZG9lc24ndCBoYXZlIHJlYXNv
bi4KLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAwXHg2MFx4MDFceDAw
JywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1l
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUo
dGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAg
YiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Mo
KQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9BQ0tOT1dMRURHRUQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLQotICAgIGRl
ZiB0ZXN0X3R3b19mbG93X2NvbnRyb2woc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIo
KQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRj
aGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFk
ZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZP
Ul9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3Rf
aGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVh
dGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9Miwg
ZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNo
YWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3Jl
cXVlc3QpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggNSBieXRlcy4KLSAgICAgICAgZmxvd19jb250
cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90
YT01KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkK
LQotICAgICAgICAjIFNlbmQgMTAgYnl0ZXMuIFRoZSBzZXJ2ZXIgd2lsbCB0cnkgZWNobyBiYWNr
IDEwIGJ5dGVzLgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG9X
b3JsZCcpKQotCi0gICAgICAgICMgUmVwbGVuaXNoIDUgKyAxIChwZXItbWVzc2FnZSBleHRyYSBj
b3N0KSBieXRlcy4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVl
c3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnSGVsbG9Xb3JsZCddLCBtZXNzYWdlcykKLSAgICAgICAgcmVjZWl2ZWRfZmxvd19j
b250cm9scyA9IFsKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdl
dF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11
eC5fTVVYX09QQ09ERV9GTE9XX0NPTlRST0wgYW5kIGIuY2hhbm5lbF9pZCA9PSAyXQotICAgICAg
ICAjIFJlcGxlbmlzaG1lbnQgZm9yICdIZWxsb1dvcmxkJyArIDEKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxMSwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1swXS5zZW5kX3F1b3RhKQotICAgICAg
ICAjIFJlcGxlbmlzaG1lbnQgZm9yICdHb29kYnllJyArIDEKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCg4LCByZWNlaXZlZF9mbG93X2NvbnRyb2xzWzFdLnNlbmRfcXVvdGEpCi0KLSAgICBkZWYg
dGVzdF9ub19zZW5kX3F1b3RhX29uX3NlcnZlcihzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0
Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRp
c3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RT
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVP
VEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVx
dWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0g
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9p
ZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9o
YW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5u
ZWxfcmVxdWVzdCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAg
ICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVs
bG9Xb3JsZCcpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29k
YnllJykpCi0KLSAgICAgICAgIyBKdXN0IHdhaXQgZm9yIDEgc2VjIHNvIHRoYXQgdGhlIHNlcnZl
ciBhdHRlbXB0cyB0byBlY2hvIGJhY2sKLSAgICAgICAgIyAnSGVsbG9Xb3JsZCcuCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MSkp
Ci0KLSAgICAgICAgIyBObyBtZXNzYWdlIHNob3VsZCBiZSBzZW50IG9uIGNoYW5uZWwgMi4KLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgMikKLQotICAgIGRlZiB0ZXN0X25vX3NlbmRfcXVvdGFfb25fc2VydmVy
X2Zvcl9wZXJtZXNzYWdlX2V4dHJhX2Nvc3Qoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNo
ZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNw
YXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVy
LmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RB
X0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVl
c3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFu
ZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVs
X3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgICMgUmVwbGVuaXNoIG9ubHkgbGVuKCdXb3Js
ZCcpIGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICAjIFNlcnZlciBzaG91bGQgbm90
IGNhbGxiYWNrIGZvciB0aGlzIG1lc3NhZ2UuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0y
LCBtZXNzYWdlPSdXb3JsZCcpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNz
YWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgIyBKdXN0IHdhaXQgZm9yIDEgc2VjIHNvIHRoYXQg
dGhlIHNlcnZlciBhdHRlbXB0cyB0byBlY2hvIGJhY2sKLSAgICAgICAgIyAnV29ybGQnLgotICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0
PTEpKQotCi0gICAgICAgICMgT25seSBvbmUgbWVzc2FnZSBzaG91bGQgYmUgc2VudCBvbiBjaGFu
bmVsIDIuCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVu
X21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBtZXNzYWdl
cykKLQotICAgIGRlZiB0ZXN0X3F1b3RhX3Zpb2xhdGlvbl9ieV9jbGllbnQoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJf
T0ZfQ0hBTk5FTF9TTE9UUywgMCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2Fn
ZT0nSGVsbG9Xb3JsZCcpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdl
PSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRf
dW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGNvbnRyb2xfYmxvY2tzID0gcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCg1LCBsZW4oY29udHJvbF9ibG9ja3MpKQotICAgICAgICBkcm9wX2NoYW5uZWwg
PSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiBjb250cm9sX2Jsb2NrcwotICAgICAgICAg
ICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9TRU5EX1FVT1RBX1ZJT0xBVElPTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotCi0gICAgZGVm
IHRlc3RfY29uc3VtZV9xdW90YV9lbXB0eV9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICAjIENs
aWVudCBoYXMgMSBieXRlIHF1b3RhLgotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9z
bG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsIDEpCi0KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxv
d19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hl
ZF9xdW90YT0yKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29u
dHJvbCkKLSAgICAgICAgIyBTZW5kIGFuIGVtcHR5IG1lc3NhZ2UuIFB5d2Vic29ja2V0IGFsd2F5
cyByZXBsZW5pc2hlcyAxIGJ5dGUgcXVvdGEKLSAgICAgICAgIyBmb3IgZW1wdHkgbWVzc2FnZQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nJykpCi0KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgIyBUaGlzIG1l
c3NhZ2UgdmlvbGF0ZXMgcXVvdGEgb24gY2hhbm5lbCBpZCAyLgotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2Vz
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50
c1syXS5tZXNzYWdlc1swXSkKLQotICAgICAgICByZWNlaXZlZF9mbG93X2NvbnRyb2xzID0gWwot
ICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29u
dHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RF
X0ZMT1dfQ09OVFJPTCBhbmQgYi5jaGFubmVsX2lkID09IDJdCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgbGVuKHJlY2VpdmVkX2Zsb3dfY29udHJvbHMpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIHJlY2VpdmVkX2Zsb3dfY29udHJvbHNbMF0uc2VuZF9xdW90YSkKLQotICAgICAg
ICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNv
bm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5v
cGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChtdXguX0RST1BfQ09ERV9TRU5EX1FVT1RBX1ZJT0xBVElPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotCi0gICAgZGVmIHRlc3RfY29uc3Vt
ZV9xdW90YV9mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNo
ZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNw
YXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgICMgQ2xpZW50IGhh
cyBsZW4oJ0hlbGxvJykgKyBsZW4oJ0dvb2RieWUnKSArIDIgYnl0ZXMgcXVvdGEuCi0gICAgICAg
IG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hB
Tk5FTF9TTE9UUywgMTQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3Jl
cXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9
IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxf
aWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRf
aGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFu
bmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRy
b2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsIG1lc3NhZ2U9J0hlJywgZmluPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQpKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwgbWVzc2FnZT0nbGxvJywgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKSkKLQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAg
ICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygy
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgbWVzc2FnZXMpCi0KLSAgICBk
ZWYgdGVzdF9mcmFnbWVudGVkX2NvbnRyb2xfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2Nr
RGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4
X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVM
X1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJ
QUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL3BpbmcnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFJlcGxlbmlzaCB0b3RhbCA2IGJ5dGVzIGlu
IDMgRmxvd0NvbnRyb2xzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIGZsb3dfY29udHJv
bCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9
MikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5l
bF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXBsZW5pc2hlZF9xdW90YT0zKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29u
bmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QSU5HLCBtZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQot
ICAgIGRlZiB0ZXN0X2NoYW5uZWxfc2xvdF92aW9sYXRpb25fYnlfY2xpZW50KHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhzbG90cz0xLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3F1b3RhPW11eC5fSU5JVElBTF9RVU9U
QV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1
ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMgVGhpcyByZXF1ZXN0IHNob3VsZCBi
ZSByZWplY3RlZC4KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3Rf
aGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVh
dGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9Mywg
ZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNo
YWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3Jl
cXVlc3QpCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1l
KGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTMs
IG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3Nh
Z2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRp
bF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50cy5oYXNfa2V5KDMp
KQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiBy
ZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAg
ICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgzLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9ORVdfQ0hBTk5FTF9TTE9UX1ZJT0xBVElPTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotCi0gICAg
ZGVmIHRlc3RfcXVvdGFfb3ZlcmZsb3dfYnlfY2xpZW50KHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhzbG90cz0xLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZW5kX3F1b3RhPW11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5U
KQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihw
YXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5n
PTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQot
ICAgICAgICAjIFJlcGxlbmlzaCAweDdGRkZGRkZGRkZGRkZGRkYgYnl0ZXMgdHdpY2UuCi0gICAg
ICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MHg3RkZGRkZG
RkZGRkZGRkZGKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29u
dHJvbCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wp
Ci0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVv
dXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9y
IGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAg
ICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZHJvcF9jaGFubmVsLmNoYW5uZWxfaWQpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfU0VORF9RVU9UQV9PVkVSRkxPVywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotCi0gICAg
ZGVmIHRlc3RfaW52YWxpZF9lbmNhcHN1bGF0ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLQotICAgICAg
ICBmaXJzdF9ieXRlID0gKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNUIDw8IDUp
Ci0gICAgICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSArCi0gICAgICAgICAgICAgICAgIG11
eC5fZW5jb2RlX2NoYW5uZWxfaWQoMSkgKwotICAgICAgICAgICAgICAgICBtdXguX2VuY29kZV9u
dW1iZXIoMCkpCi0gICAgICAgIHBheWxvYWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKG11eC5f
Q09OVFJPTF9DSEFOTkVMX0lEKSArIGJsb2NrCi0gICAgICAgIHRleHRfZnJhbWUgPSBjcmVhdGVf
YmluYXJ5X2ZyYW1lKHBheWxvYWQsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyh0ZXh0X2ZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAg
ICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNv
bm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5v
cGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtdXguX0RST1BfQ09ERV9JTlZBTElEX0VOQ0FQU1VMQVRJTkdfTUVTU0FHRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9zZV9j
b2RlKQotCi0gICAgZGVmIHRlc3RfY2hhbm5lbF9pZF90cnVuY2F0ZWQoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBf
TXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxl
cihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAg
ICAgICAgIyBUaGUgbGFzdCBieXRlIG9mIHRoZSBjaGFubmVsIGlkIGlzIG1pc3NpbmcuCi0gICAg
ICAgIGZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFtZSgnXHg4MCcsIG1hc2s9VHJ1ZSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZSkKLQotICAgICAgICBzZWxmLmFz
c2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAg
ICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5j
b25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIu
b3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfQ0hBTk5FTF9JRF9UUlVOQ0FURUQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQot
ICAgIGRlZiB0ZXN0X2lubmVyX2ZyYW1lX3RydW5jYXRlZChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2Nr
RGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLQotICAgICAgICAj
IEp1c3QgY29udGFpbiBjaGFubmVsIGlkIDEuCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2JpbmFy
eV9mcmFtZSgnXHgwMScsIG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmcmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2Fp
dF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgK
LSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2Nv
bnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09E
RV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVf
RU5DQVBTVUxBVEVEX0ZSQU1FX0lTX1RSVU5DQVRFRCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1v
bi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9zZV9jb2RlKQotCi0gICAgZGVmIHRlc3Rf
dW5rbm93bl9tdXhfb3Bjb2RlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2Nr
X3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikK
LSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgVW5kZWZpbmVkIG9wY29k
ZSA1Ci0gICAgICAgIGZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFtZSgnXHgwMFx4YTAnLCBtYXNr
PVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0
PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBi
IGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAg
ICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1VOS05PV05fTVVYX09QQ09ERSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9z
ZV9jb2RlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF9tdXhfY29udHJvbF9ibG9jayhzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0
Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9N
dXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0
KCkKLQotICAgICAgICAjIERyb3BDaGFubmVsIGNvbnRhaW5zIDEgYnl0ZSByZWFzb24KLSAgICAg
ICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAwXHg2MFx4MDBceDAxXHgwMCcsIG1h
c2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZSkKLQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVv
dXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9y
IGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAg
ICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJP
TF9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2Rl
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9J
TlRfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNl
cnZlcl9jbG9zZV9jb2RlKQotCi0gICAgZGVmIHRlc3RfcGVybWVzc2FnZV9jb21wcmVzcyhzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlz
cGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4
Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0
YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFM
X05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICAjIEVuYWJs
ZSBwZXJtZXNzYWdlIGNvbXByZXNzIGV4dGVuc2lvbiBvbiBsb2dpY2FsIGNoYW5uZWwgMi4KLSAg
ICAgICAgZXh0ZW5zaW9ucyA9ICclczsgbWV0aG9kPWRlZmxhdGUnICUgKAotICAgICAgICAgICAg
Y29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucz1l
eHRlbnNpb25zKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0w
LAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQot
ICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxlbmlzaGVkX3F1b3RhPTIwKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQgY29tcHJlc3NlZCAnSGVsbG8nIHR3
aWNlLgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMSA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMSA9IGNvbXByZXNzZWRfaGVsbG8xWzot
NF0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxs
bzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVlKSkKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbzIgPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvMiArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkK
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzIgPSBjb21wcmVzc2VkX2hlbGxvMls6LTRdCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbJ0hlbGxvJywgJ0hlbGxvJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAgICAgIyBXcml0
dGVuICdIZWxsbydzIHNob3VsZCBiZSBjb21wcmVzc2VkLgotICAgICAgICBtZXNzYWdlcyA9IHJl
cXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
cHJlc3NlZF9oZWxsbzEsIG1lc3NhZ2VzWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bXByZXNzZWRfaGVsbG8yLCBtZXNzYWdlc1sxXSkKLQotCi0gICAgZGVmIHRlc3RfcGVybWVzc2Fn
ZV9jb21wcmVzc19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbnMg
PSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICclczsgbWV0aG9kPWRlZmxh
dGUnICUgY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5u
ZWxfZXh0ZW5zaW9ucz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2VkICdIZWxsb0hl
bGxvSGVsbG8nIGFzIGZyYWdtZW50ZWQgbWVzc2FnZS4KLSAgICAgICAgY29tcHJlc3MgPSB6bGli
LmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHps
aWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9
IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsb0hlbGxvSGVsbG8nKQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0KLSAgICAgICAgbSA9IGxlbihj
b21wcmVzc2VkX2hlbGxvKSAvIDIKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvWzpt
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsIHJzdjE9VHJ1
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09E
RV9URVhUKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvW206XSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwgcnN2MT1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJ
T04pKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsb0hlbGxvSGVsbG8n
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFd
Lm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9tZXNzYWdlcygxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdl
cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbywgbWVzc2FnZXNb
MF0pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2JhZF9mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9O
VU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAg
YWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgK
LSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBTZW5kIGEgZnJh
bWUgd2l0aCBmaW49RmFsc2UsIGFuZCB0aGVuIHNlbmQgYSBmcmFtZSB3aXRoCi0gICAgICAgICMg
b3Bjb2RlPVRFWFQgKG5vdCBDT05USU5VQVRJT04pLiBMb2dpY2FsIGNoYW5uZWwgMiBzaG91bGQg
YmUgZHJvcHBlZC4KLSAgICAgICAgZnJhbWUxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9
J0hlbGxvICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9u
Lk9QQ09ERV9URVhUKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1l
MSkKLSAgICAgICAgZnJhbWUyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1dvcmxkIScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1RF
WFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUyKQotCi0gICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNo
bycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3Jl
cXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5nPTAsCi0gICAg
ICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAg
ICMgU2VuZCBhIGZyYW1lIHdpdGggb3Bjb2RlPUNPTlRJTlVBVElPTiB3aXRob3V0IGEgcHJlY2Vk
aW5nIGZyYW1lCi0gICAgICAgICMgdGhlIGZpbiBvZiB3aGljaCBpcyBub3Qgc2V0LiBMb2dpY2Fs
IGNoYW5uZWwgMyBzaG91bGQgYmUgZHJvcHBlZC4KLSAgICAgICAgZnJhbWUzID0gX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lMykKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9
IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5l
bF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD00LCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFtZSB3aXRoIG9w
Y29kZT1QSU5HIGFuZCBmaW49RmFsc2UsIGFuZCB0aGVuIHNlbmQgYSBmcmFtZQotICAgICAgICAj
IHdpdGggb3Bjb2RlPVRFWFQgKG5vdCBDT05USU5VQVRJT04pLiBMb2dpY2FsIGNoYW5uZWwgNCBz
aG91bGQgYmUKLSAgICAgICAgIyBkcm9wcGVkLgotICAgICAgICBmcmFtZTQgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD00LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nUGluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZyYW1lNCkKLSAgICAgICAgZnJhbWU1ID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U9J0hlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNv
bW1vbi5PUENPREVfVEVYVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhm
cmFtZTUpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVscyA9IFsKLSAgICAgICAgICAgIGIg
Zm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkK
LSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUxd
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGRyb3BfY2hhbm5lbHMpKQotICAgICAg
ICBmb3IgZCBpbiBkcm9wX2NoYW5uZWxzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
dXguX0RST1BfQ09ERV9CQURfRlJBR01FTlRBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZC5kcm9wX2NvZGUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1
bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvdGVzdF9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rfc3RyZWFtLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWFjZmViMDQ4ZDMuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rfc3RyZWFtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzcg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29n
bGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0i
IiJUZXN0cyBmb3Igc3RyZWFtIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KLQotCi1jbGFzcyBTdHJlYW1UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgot
Ci0gICAgZGVmIHRlc3RfY3JlYXRlX2hlYWRlcihzZWxmKToKLSAgICAgICAgIyBtb3JlLCByc3Yx
LCAuLi4sIHJzdjQgYXJlIGFsbCB0cnVlCi0gICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVf
aGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwgMSwgMSwgMSwgMSwgMSwgMSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnXHhmMVx4ODEnLCBoZWFkZXIpCi0KLSAgICAgICAgIyBNYXhpbXVtIHBh
eWxvYWQgc2l6ZQotICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKLSAgICAg
ICAgICAgIGNvbW1vbi5PUENPREVfVEVYVCwgKDEgPDwgNjMpIC0gMSwgMCwgMCwgMCwgMCwgMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4N2ZceDdmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZicsIGhlYWRlcikKLQotICAgICAgICAjIEludmFsaWQgb3Bjb2RlIDB4MTAKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MTAsIDAsIDAsIDAsIDAsIDAsIDApCi0KLSAgICAgICAgIyBJbnZhbGlkIHZhbHVlIDB4ZiBwYXNz
ZWQgdG8gbW9yZSBwYXJhbWV0ZXIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVYVCwgMCwgMHhmLCAwLCAwLCAw
LCAwKQotCi0gICAgICAgICMgVG9vIGxvbmcgcGF5bG9hZF9sZW5ndGgKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
LmNyZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5PUENPREVf
VEVYVCwgMSA8PCA2MywgMCwgMCwgMCwgMCwgMCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3N0cmVhbV9oaXhpZTc1LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC90ZXN0X3N0cmVhbV9oaXhpZTc1LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YTlhYzcxMzBiNzMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rfc3RyZWFt
X2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBzdHJlYW0gbW9k
dWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVw
ZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIHRlc3QudGVz
dF9tc2d1dGlsIGltcG9ydCBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NQotCi0KLWNsYXNzIFN0cmVh
bUhpeGllNzVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBT
dHJlYW1IaXhpZTc1IGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfcGF5bG9hZF9sZW5ndGgoc2Vs
Zik6Ci0gICAgICAgIGZvciBsZW5ndGgsIGJ5dGVzIGluICgoMCwgJ1x4MDAnKSwgKDB4N2YsICdc
eDdmJyksICgweDgwLCAnXHg4MVx4MDAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgweDEyMzQsICdceDgwXHhhNFx4MzQnKSk6Ci0gICAgICAgICAgICB0ZXN0X3N0cmVhbSA9IFN0
cmVhbUhpeGllNzUoX2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUoYnl0ZXMpKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBsZW5ndGgsIHRlc3Rfc3RyZWFtLl9y
ZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfdXRp
bC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmNGFiMDU5NjUyLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwyMDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEx
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi0iIiJUZXN0cyBmb3IgdXRpbCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQg
cmFuZG9tCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0
aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1RFU1RfREFUQV9ESVIgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScpCi0KLQot
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9y
IHV0aWwgbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfZ2V0X3N0YWNrX3RyYWNlKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdOb25lXG4nLCB1dGlsLmdldF9zdGFja190cmFjZSgp
KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhID0gMSAvIDAgICMgSW50ZW50aW9uYWxseSBy
YWlzZSBleGNlcHRpb24uCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICB0
cmFjZSA9IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkKLSAgICAgICAgICAgIHNlbGYuZmFpbFVubGVz
cyh0cmFjZS5zdGFydHN3aXRoKCdUcmFjZWJhY2snKSkKLSAgICAgICAgICAgIHNlbGYuZmFpbFVu
bGVzcyh0cmFjZS5maW5kKCdaZXJvRGl2aXNpb25FcnJvcicpICE9IC0xKQotCi0gICAgZGVmIHRl
c3RfcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgZXhjID0gRXhj
ZXB0aW9uKCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgc3RyKGV4
YykpCi0gICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbignSGVsbG8gJywg
ZXhjKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCcsIHN0cihleGMpKQot
Ci0gICAgZGVmIHRlc3RfZ2V0X3NjcmlwdF9pbnRlcnAoc2VsZik6Ci0gICAgICAgIGN5Z3dpbl9w
YXRoID0gJ2M6XFxjeWd3aW5cXGJpbicKLSAgICAgICAgY3lnd2luX3BlcmwgPSBvcy5wYXRoLmpv
aW4oY3lnd2luX3BhdGgsICdwZXJsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCB1
dGlsLmdldF9zY3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RB
VEFfRElSLCAnUkVBRE1FJykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHV0aWwu
Z2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9E
SVIsICdSRUFETUUnKSwgY3lnd2luX3BhdGgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
dXNyL2Jpbi9wZXJsIC13VCcsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBv
cy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdoZWxsby5wbCcpKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjeWd3aW5fcGVybCArICcgLXdUJywgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgK
LSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBsJyksIGN5
Z3dpbl9wYXRoKSkKLQotICAgIGRlZiB0ZXN0X2hleGlmeShzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnNjEgN2EgNDEgNWEgMzAgMzkgMjAgMDkgMGQgMGEgMDAgZmYnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KCdhekFaMDkgXHRcclxuXHgwMFx4ZmYnKSkK
LQotCi1jbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFza2VyIGNsYXNzLiIiIgotCi0gICAgZGVm
IHRlc3RfbWFzayhzZWxmKToKLSAgICAgICAgIyBTYW1wbGUgaW5wdXQgZTYsOTcsYTUgaXMgVSs2
NWU1IGluIFVURi04Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4
ZmZceGZmXHhmZlx4ZmYnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdc
eGE1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgxOVx4NjhceDVhJywgcmVzdWx0KQot
Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4MDBceDAwXHgwMFx4
MDAnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdceGE1JykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhlNlx4OTdceGE1JywgcmVzdWx0KQotCi0gICAgICAgIG1h
c2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4ZTZceDk3XHhhNVx4MjAnKQotICAgICAg
ICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdceGE1JykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHgwMFx4MDBceDAwJywgcmVzdWx0KQotCi0gICAgZGVmIHRlc3RfbWFza190d2lj
ZShzZWxmKToKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHgwMFx4
N2ZceGZmXHgyMCcpCi0gICAgICAgICMgbWFza1swXSwgbWFza1sxXSwgLi4uIHdpbGwgYmUgdXNl
ZC4KLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4MDBceDAwXHgwMFx4MDBceDAwJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFx4N2ZceGZmXHgyMFx4MDAnLCByZXN1bHQp
Ci0gICAgICAgICMgbWFza1syXSwgbWFza1swXSwgLi4uIHdpbGwgYmUgdXNlZCBmb3IgdGhlIG5l
eHQgY2FsbC4KLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4MDBceDAwXHgwMFx4MDBc
eDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg3Zlx4ZmZceDIwXHgwMFx4N2YnLCBy
ZXN1bHQpCi0KLSAgICBkZWYgdGVzdF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6Ci0gICAgICAgIG1h
c2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ21BU2snKQotICAgICAgICBvcmlnaW5hbCA9
ICcnLmpvaW4oW2NocihpICUgMjU2KSBmb3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotICAgICAgICBy
ZXN1bHQgPSBtYXNrZXIubWFzayhvcmlnaW5hbCkKLSAgICAgICAgZXhwZWN0ZWQgPSAnJy5qb2lu
KAotICAgICAgICAgICAgICAgIFtjaHIoKGkgJSAyNTYpIF4gb3JkKCdtQVNrJ1tpICUgNF0pKSBm
b3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
LCByZXN1bHQpCi0KLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignTWFT
aycpCi0gICAgICAgIGZpcnN0X3BhcnQgPSAnVGhlIFdlYlNvY2tldCBQcm90b2NvbCBlbmFibGVz
IHR3by13YXkgY29tbXVuaWNhdGlvbi4nCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGZp
cnN0X3BhcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgJ1x4
MTlcdDZLXHgxYVx4MDQxOCJceDAyOFx4MGU5QVx4MDNceDE5Ilx4MTU8XHgwOCJccnNceDBlIycK
LSAgICAgICAgICAgICAgICAnXHgwMDFceDA3KFx4MTJzXHgxZjpceDBlflx4MWMsXHgxOHNceDA4
Ilx4MGM+XHgxZSNceDA4MFxuOScKLSAgICAgICAgICAgICAgICAnXHgwODxceDA1YycsCi0gICAg
ICAgICAgICAgICAgcmVzdWx0KQotICAgICAgICBzZWNvbmRfcGFydCA9ICdJdCBoYXMgdHdvIHBh
cnRzOiBhIGhhbmRzaGFrZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJwotICAgICAgICByZXN1bHQg
PSBtYXNrZXIubWFzayhzZWNvbmRfcGFydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgICAgICAiKCdLJVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQyXHgwNSlc
eDEyO1xuJlx4MDRzXG4jIgotICAgICAgICAgICAgICAgICJceDA1c1x4MWYlXHgwNHNceDBmLFx4
MTUySzlceDEzMlx4MDU+XHgwNzZceDE5YyIsCi0gICAgICAgICAgICAgICAgcmVzdWx0KQotCi0K
LWRlZiBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCBtaW5fbnVtX2NodW5rcyk6Ci0gICAgY2h1
bmtzID0gW10KLSAgICBieXRlc19jaHVua2VkID0gMAotCi0gICAgd2hpbGUgYnl0ZXNfY2h1bmtl
ZCA8IGxlbihzb3VyY2UpOgotICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRpbnQoCi0g
ICAgICAgICAgICAxLAotICAgICAgICAgICAgbWluKGxlbihzb3VyY2UpIC8gbWluX251bV9jaHVu
a3MsIGxlbihzb3VyY2UpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgIGNodW5rID0gc291cmNl
W2J5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCi0gICAgICAgIGNodW5r
cy5hcHBlbmQoY2h1bmspCi0gICAgICAgIGJ5dGVzX2NodW5rZWQgKz0gY2h1bmtfc2l6ZQotCi0g
ICAgcmV0dXJuIGNodW5rcwotCi0KLWNsYXNzIEluZmxhdGVyRGVmbGF0ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBfSW5mbGF0ZXIgYW5kIF9EZWZsYXRl
ciBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2luZmxhdGVfZGVmbGF0ZV9kZWZhdWx0KHNlbGYp
OgotICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgJy0nICogMzAwMDAgKyBiJ2hlbGxvJwotICAg
ICAgICBpbmZsYXRlcjE1ID0gdXRpbC5fSW5mbGF0ZXIoMTUpCi0gICAgICAgIGRlZmxhdGVyMTUg
PSB1dGlsLl9EZWZsYXRlcigxNSkKLSAgICAgICAgaW5mbGF0ZXI4ID0gdXRpbC5fSW5mbGF0ZXIo
OCkKLSAgICAgICAgZGVmbGF0ZXI4ID0gdXRpbC5fRGVmbGF0ZXIoOCkKLQotICAgICAgICBjb21w
cmVzc2VkMTUgPSBkZWZsYXRlcjE1LmNvbXByZXNzX2FuZF9maW5pc2goaW5wdXQpCi0gICAgICAg
IGNvbXByZXNzZWQ4ID0gZGVmbGF0ZXI4LmNvbXByZXNzX2FuZF9maW5pc2goaW5wdXQpCi0KLSAg
ICAgICAgaW5mbGF0ZXIxNS5hcHBlbmQoY29tcHJlc3NlZDE1KQotICAgICAgICBpbmZsYXRlcjgu
YXBwZW5kKGNvbXByZXNzZWQ4KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29tcHJl
c3NlZDE1LCBjb21wcmVzc2VkOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1dCwgaW5m
bGF0ZXIxNS5kZWNvbXByZXNzKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1dCwg
aW5mbGF0ZXI4LmRlY29tcHJlc3MoLTEpKQotCi0gICAgZGVmIHRlc3RfcmFuZG9tX3NlY3Rpb24o
c2VsZik6Ci0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAgICAgICAgc291cmNlID0gJycuam9p
bigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4geHJh
bmdlKDEwMCAqIDEwMjQpXSkKLQotICAgICAgICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9z
ZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAgIHByaW50ICJJbnB1dCBjaHVuayBzaXplczogJXIi
ICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2lucHV0XQotCi0gICAgICAgIGRlZmxhdGVyID0g
dXRpbC5fRGVmbGF0ZXIoMTUpCi0gICAgICAgIGNvbXByZXNzZWQgPSBbXQotICAgICAgICBmb3Ig
Y2h1bmsgaW4gY2h1bmtlZF9pbnB1dDoKLSAgICAgICAgICAgIGNvbXByZXNzZWQuYXBwZW5kKGRl
ZmxhdGVyLmNvbXByZXNzKGNodW5rKSkKLSAgICAgICAgY29tcHJlc3NlZC5hcHBlbmQoZGVmbGF0
ZXIuY29tcHJlc3NfYW5kX2ZpbmlzaCgnJykpCi0KLSAgICAgICAgY2h1bmtlZF9leHBlY3RhdGlv
biA9IGdldF9yYW5kb21fc2VjdGlvbihzb3VyY2UsIDEwKQotICAgICAgICBwcmludCAoIkV4cGVj
dGF0aW9uIGNodW5rIHNpemVzOiAlciIgJQotICAgICAgICAgICAgICAgW2xlbihjKSBmb3IgYyBp
biBjaHVua2VkX2V4cGVjdGF0aW9uXSkKLQotICAgICAgICBpbmZsYXRlciA9IHV0aWwuX0luZmxh
dGVyKDE1KQotICAgICAgICBpbmZsYXRlci5hcHBlbmQoJycuam9pbihjb21wcmVzc2VkKSkKLSAg
ICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfZXhwZWN0YXRpb246Ci0gICAgICAgICAgICBkZWNv
bXByZXNzZWQgPSBpbmZsYXRlci5kZWNvbXByZXNzKGxlbihjaHVuaykpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNodW5rLCBkZWNvbXByZXNzZWQpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnJywgaW5mbGF0ZXIuZGVjb21wcmVzcygtMSkpCi0KLQotaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC90ZXN0ZGF0YS9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDFhYTU1
OTVjZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvUkVBRE1FCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGVzdCBkYXRhIGRpcmVjdG9yeQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2N2Y5OTMwZjc4Mi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlV
c2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbigiYWJvcnQgZm9yIHRlc3QiKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzEzOWZhMTc2Y2MuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC53c19v
cmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6Ci0gICAgICAgIHJldHVybgotICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qud3Nfb3JpZ2lu
KQotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMs
ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNl
LCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFu
c2Zlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRp
b25faW5fdHJhbnNmZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTgy
ZDAyMzFlZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRXhjZXB0aW9uIGluIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YSgpLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIEV4Y2VwdGlvbignSW50ZW50aW9uYWwgRXhjZXB0aW9u
IGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2Us
IHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2Vu
ZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdlN2JlMTgwMmUzLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jIENvcHlyaWdodCAy
MDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJDb3JyZWN0IHNpZ25hdHVyZXMsIHdyb25nIGZpbGUgbmFtZS4KLSIiIgotCi0K
LWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0K
LQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUoCi0gICAgICAgICAgICAnc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5IGlz
IGNhbGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwg
cmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYzNTJlYjRjYTIzLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxhYmxl
X3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDks
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0KLSIiIk5vbi1jYWxsYWJsZSBoYW5kbGVycy4KLSIiIgotCi0KLXdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlID0gVHJ1ZQotd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhID0gMQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9zdWIvcGxhaW5fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9z
dWIvcGxhaW5fd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjNmZjY5MzAy
NTYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi9wbGFpbl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0g
ICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3Ig
JXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291
cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZDNmMmU4NTkxMC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3Jvbmdf
aGFuZHNoYWtlX3NpZ193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmJmNjU5YmM5YWYwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXcm9uZyB3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZSBzaWduYXR1cmUuCi0iIiIKLQotCi1kZWYgbm9fd2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
KAotICAgICAgICAgICAgJ3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weSBpcyBjYWxsZWQg
Zm9yICVzLCAlcycgJQotICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0
LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdf
d3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGUyZTU1MDc5NGIuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190
cmFuc2Zlcl9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBDb3B5
cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKCkgc2lnbmF0
dXJlLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgotICAgIHBhc3MKLQotCi1kZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvd3Jvbmdf
dHJhbnNmZXJfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAg
KHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDI4YWU0Nzc2Yy4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90
ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL29yaWdpbl9jaGVja193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTUzMWY5MTM0MWYuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9S
RUFETUUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWU3
MjQwZGEyODkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9f
X2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
bW9jay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvcnVuX2FsbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRoLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2VuZHRvZW5k
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3RfaGFuZHNoYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3RfaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmls
ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tb2NrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21z
Z3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0
X3N0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvdGVzdF91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZDMyYTZiNmJiYmYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NPUFlJ
TkcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL1JFQURNRQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Nl
dHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvX19p
bml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ODM0YjgyODVhNS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRo
aXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L2NhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jYWNl
cnQucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGFkYWUxMjFiZGQuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jYWNlcnQucGVtCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDdkRDQ0FpV2dB
d0lCQWdJSkFLcVZnaGtHRjFyU01BMEdDU3FHU0liM0RRRUJCUVVBTUVreEN6QUpCZ05WCi1CQVlU
QWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXhG
REFTCi1CZ05WQkFNVEMzQjVkMlZpYzI5amEyVjBNQjRYRFRFeU1EWXdOakEzTWpRek0xb1hEVE01
TVRBeU16QTNNalF6Ci1NMW93U1RFTE1Ba0dBMVVFQmhNQ1NsQXhEakFNQmdOVkJBZ1RCVlJ2YTNs
dk1SUXdFZ1lEVlFRS0V3dHdlWGRsCi1Zbk52WTJ0bGRERVVNQklHQTFVRUF4TUxjSGwzWldKemIy
TnJaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFECi1nWTBBTUlHSkFvR0JBS29TRVcyYmlReFZy
TU1LZG4vOFBKekRZaVNYRFBSOVdRYkxSUlExR201amtDWWlhaFhXCi11MkNiVFRoZlBQZmkyTkhB
M0krSGxUN2dPOXlSN1JWVXZONklTVXpHd1hERXE0ZjRVTnF0UU9oUWFxcUsrQ1o5Ci1MTy9CaE8v
WVlmTnJiU1BsWXpIVUthVDllc2U3eE85VnpWS0xXK3FVZjJNamg0LytTenhCRE5QN0FnTUJBQUdq
Ci1nYXN3Z2Fnd0hRWURWUjBPQkJZRUZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpNSGtHQTFV
ZEl3UnlNSENBCi1GT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMrK2J6b1Uya1N6QkpNUXN3Q1FZRFZR
UUdFd0pLVURFT01Bd0dBMVVFCi1DQk1GVkc5cmVXOHhGREFTQmdOVkJBb1RDM0I1ZDJWaWMyOWph
MlYwTVJRd0VnWURWUVFERXd0d2VYZGxZbk52Ci1ZMnRsZElJSkFLcVZnaGtHRjFyU01Bd0dBMVVk
RXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnWUVBCi1nc01JMVdFWXFOdy9qaFVJZHJU
QmNDeEowWDZoSnZBOXppS0FOVm0xUnMrNFAzWURBcmtROGJDcjZ4WStLdzdzCi1acDB5RTdkTThH
TWRpK0RVNmhMM3QzRTVlTWtUUzF5WnI5V0NLNGYyUkxvK2V0OThzZWxaeWRwSGVtRjNESkozCi1n
QWo4U3g0TEJhRzhDYi9XbkVNUHYzTXhHM2ZCRTVmYXZGNlY0alUwN2hRPQotLS0tLS1FTkQgQ0VS
VElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvY2VydC9jZXJ0LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUzNzlh
NzJiMGRhLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1DZXJ0aWZpY2F0ZToKLSAgICBEYXRhOgotICAgICAg
ICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDEgKDB4MSkKLSAgICAg
ICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIElz
c3VlcjogQz1KUCwgU1Q9VG9reW8sIE89cHl3ZWJzb2NrZXQsIENOPXB5d2Vic29ja2V0Ci0gICAg
ICAgIFZhbGlkaXR5Ci0gICAgICAgICAgICBOb3QgQmVmb3JlOiBKdW4gIDYgMDc6MjU6MDggMjAx
MiBHTVQKLSAgICAgICAgICAgIE5vdCBBZnRlciA6IE9jdCAyMyAwNzoyNTowOCAyMDM5IEdNVAot
ICAgICAgICBTdWJqZWN0OiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJz
b2NrZXQKLSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86Ci0gICAgICAgICAgICBQdWJs
aWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgotICAgICAgICAgICAgUlNBIFB1YmxpYyBL
ZXk6ICgxMDI0IGJpdCkKLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6Ci0gICAg
ICAgICAgICAgICAgICAgIDAwOmRlOjEwOmNlOjNhOjVhOjA0OmE0OjFjOjI5OjkzOjVjOjIzOjgy
OjFhOgotICAgICAgICAgICAgICAgICAgICBmMjowNjowMTplNjoyYjphNDowZjpkZDo3Nzo0OTo3
Njo4OTowMzphMjoyMToKLSAgICAgICAgICAgICAgICAgICAgZGU6MDQ6NzU6YzY6ZTI6ZGQ6ZmI6
MzU6Mjc6M2E6YTI6OTI6OGU6MTI6NjI6Ci0gICAgICAgICAgICAgICAgICAgIDJiOjNlOjFmOmY0
Ojc4OmRmOmI2Ojk0OmNiOjI3OmQ2OmNiOmQ2OjM3OmQ3OgotICAgICAgICAgICAgICAgICAgICA1
YzowODpmMDowOTozZTpjOTpjZToyNDoyZDowMDpjOTpkZjo0YTplMDo5OToKLSAgICAgICAgICAg
ICAgICAgICAgZTU6ZmI6MjM6YTk6ZTI6ZDY6Yzk6M2Q6OTY6ZmE6MDE6ODg6ZGU6NWE6ODk6Ci0g
ICAgICAgICAgICAgICAgICAgIGIwOmNmOjAzOjY3OjZmOjA0Ojg2OjFkOmVmOjYyOjFjOjU1OmE5
OjA3OjlhOgotICAgICAgICAgICAgICAgICAgICAyZTo2NjoyYTo3Mzo1Yjo0Yzo2MjowMzpmOTo4
Mjo4MzpkYjo2ODpiZjpiODoKLSAgICAgICAgICAgICAgICAgICAgNGI6MGI6OGI6OTM6MTE6Yjg6
NTQ6NzM6N2IKLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCi0gICAg
ICAgIFg1MDl2MyBleHRlbnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFp
bnRzOiAKLSAgICAgICAgICAgICAgICBDQTpGQUxTRQotICAgICAgICAgICAgTmV0c2NhcGUgQ2Vy
dCBUeXBlOiAKLSAgICAgICAgICAgICAgICBTU0wgU2VydmVyCi0gICAgICAgICAgICBOZXRzY2Fw
ZSBDb21tZW50OiAKLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0
ZQotICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAg
ICAgICAgIDgyOkExOjczOjhCOjE2OjBDOjdDOkU0OkQzOjQ2Ojk1OjEzOjk1OjFBOjMyOkMxOjg0
OkU5OjA2OjAwCi0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAK
LSAgICAgICAgICAgICAgICBrZXlpZDpFQjoxNjo3NzoxMDo5MjpCQjoyODo3MDo2OTo5Nzo5QTo2
RjpBMDo2ODo0RToxQTozNzpGQjpFNjpGMwotCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hh
MVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIDZiOmIzOjQ2OjI5OjAyOmRmOmIwOmM4OjhlOmM0
OmQ3OjdmOmEwOjFlOjBkOjFhOmViOjJmOgotICAgICAgICBkZjpkMTo0ODo1NzozNjo1Zjo5NTo4
YzoxYjpmMDo1MTpkNjo1MjplNzo4ZDo4NDozYjo5ZjoKLSAgICAgICAgZDg6ZWQ6MjI6OWM6YWE6
YmQ6ZWU6OWI6OTA6MWQ6ODQ6YTM6NGM6MGI6Y2I6ZWI6NjQ6NzM6Ci0gICAgICAgIGJhOmY3OjE1
OmNlOmRhOjVmOmRiOjhiOjE1OjA3OmE2OjI4OjdmOmI5OjhjOjExOjliOjY0OgotICAgICAgICBk
MzpmMTpiZTo1Mjo0ZjpjMzpkODo1ODpmZTpkZTo1Njo2Mzo2MzozYjo1MTplZDphNzo4MToKLSAg
ICAgICAgZjk6MDU6NTE6NzA6NjM6MzI6MDk6MGU6OTQ6N2U6MDU6ZmU6YTE6NTY6MTg6MzQ6OTg6
ZDU6Ci0gICAgICAgIDk5OjFlOjRlOjI3OjM4Ojg5OjkwOjZhOmU1OmNlOjYwOjM1OjAxOmY1OmRl
OjM0OjYwOmIxOgotICAgICAgICBjYjphZQotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1N
SUlDbURDQ0FnR2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCSk1Rc3dDUVlEVlFRR0V3
SktVREVPCi1NQXdHQTFVRUNCTUZWRzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5amEyVjBN
UlF3RWdZRFZRUURFd3R3Ci1lWGRsWW5OdlkydGxkREFlRncweE1qQTJNRFl3TnpJMU1EaGFGdzB6
T1RFd01qTXdOekkxTURoYU1Fa3hDekFKCi1CZ05WQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0
NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldKemIyTnJaWFF4Ci1GREFTQmdOVkJBTVRDM0I1ZDJWaWMy
OWphMlYwTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCCi1nUURlRU00NldnU2tI
Q21UWENPQ0d2SUdBZVlycEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxSnpxaWtvNFNZaXMrCi1IL1I0
MzdhVXl5Zld5OVkzMTF3SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CaU41YWliRFBB
MmR2Ci1CSVlkNzJJY1Zha0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3SURBUUFC
bzRHUE1JR01NQWtHCi1BMVVkRXdRQ01BQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnWkFNQ3dHQ1dD
R1NBR0crRUlCRFFRZkZoMVBjR1Z1Ci1VMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpU
QWRCZ05WSFE0RUZnUVVncUZ6aXhZTWZPVFRScFVUCi1sUm95d1lUcEJnQXdId1lEVlIwakJCZ3dG
b0FVNnhaM0VKSzdLSEJwbDVwdm9HaE9HamY3NXZNd0RRWUpLb1pJCi1odmNOQVFFRkJRQURnWUVB
YTdOR0tRTGZzTWlPeE5kL29CNE5HdXN2MzlGSVZ6WmZsWXdiOEZIV1V1ZU5oRHVmCi0yTzBpbktx
OTdwdVFIWVNqVEF2TDYyUnp1dmNWenRwZjI0c1ZCNllvZjdtTUVadGswL0crVWsvRDJGaiszbFpq
Ci1ZenRSN2FlQitRVlJjR015Q1E2VWZnWCtvVllZTkpqVm1SNU9KemlKa0dybHptQTFBZlhlTkdD
eHk2ND0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9j
ZXJ0L2NsaWVudF9jZXJ0LnAxMiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRlMTM5OTI3OTgyZmE5ODIzYTU3MjMxYWYxMTM0
OTlkNmE1YThiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyNTgyCnpjbVkrRlhI
KmppN0tNYCMwdEJnMnF6Rml0UCFmPFBIQS0qTkxvQFZfZ2NmMHQ4V0IoI0k/eyVZUkZ4KnVgJSl5
Sgp6MW5HIUszNWJxaFhyWDdBYjlRJWpmODZ1bHglWnYtPiVIXkFhWnB3ZWtQNDJZbn1nNnYjT3VZ
QThHdG12VmpTSWoKekZwaDVVKChaJWZBU3dTdWtZWEdwPUYqQSkwUmZpPGAlZU9kXkZwQmktZiNz
N2Zpcj8+MmNXJFQjOzIqR0FQX0FlCnoxXyNscm4yRShlS09NSjZOMjZZSm5lX0BocH1TS1BYVUI3
Rk1lcl9+NXwxcWdDe1Rxbm5CdXYxJGtwcDVPQnolQAp6PG15U3crP1k+XmpBWjQjWEEtfSohUXNi
dU9oVyhzTzgzNjYoJDsoMUE+bW8oTy0leChobig9eVo7eX5ORyNRWDEKemdIa1NpXl44Y3Y0VFRT
TDl2bjVxUig+X0QzZiZvYypqd1BnSSNLQFEjQXNMKUQ7QkQmV2IyZCtJMV5KN24+fVlaCnpiQ1hv
OWZPQGchQGRXWWEyViV9Oykhezx6RGN8KHB2SklheFc3TmRPJU82Zj5yJmFPcnBIa3tvX1I5bVE0
N3VvYgp6P2w+OXxufFgzYGFncF5HO0x3WFI1PChscitSPGNMNWpUUSg/XkQ8a1JvIUhfVCNwP3kz
ZH1edENZViE4Ul5OP30KekMqJVhtOUxlZj5qN2hsci0/akhscHx3ZkEmXm4tczs8IXokcUQxeFBx
IThLUTF9fmR1cHd+Qk0xZ3N+QEFvO0NxCnp3UmdVfDJeZH1OLWdWO0BhWWt1OEklfXw8bDZRTT89
ZH5GWXBiR0ZIOSZ2TmdLWipTeWNJU3xtY3VPUj9sJkNPdwp6c3t6ZDV6bWVseHFOMURReXt9UGdC
PXUjZnpJTlBrQjBvTipjazN2YCsxeyFZWFB+e0VWSTdWcWgqfnVhV19+VUMKemxSMzNSWjA1SGhr
Qy0xZUlwKS1AWV55dmMtfFIlISo5ZHc3bmZXKXlqY0hJWWY2cj1hQ3QoVWhpLUZKbTJue18pCnol
e3VsQlVYUmAyPD5seH1lR21TbVJKPjVvdGtAKCtwanNQcTs0aFo2RklLbCN7bnhQIUFMITI4X19B
WWZsYFZnewp6bFJSYUFSfFZteTFfYF5iYmpacnpBe1EkbFllaklZZF5BJFo+VyZqeW5NPUtgVGw0
d1YpM3dAZDFKY2AtNS1DR0oKenhxXkA4XyghPFpGMnFsaF9afX1ucj9TJjUqeitGQCl2KFoxRUlz
O0htfSExfk1UTCFqMUBjJFpITFJ9Vig9O15vCnpkVXBmeT9vPnl6b2xfc2k8PFVFQj10KGVlQnpn
Sl5XWXdzSENHOTM0cyRkKUBxcUh3Z155Wk17YF5qSiE5O3RyNgp6ZW9VYXkmJCtCeUd8Tl5fem9B
SF50WUlnPmhhWXd8QHxjMzFedyhuVWQ3ayhZbUVKNzZWWTc5KyhDKF8kOzFNc1UKemhpTmkrQjVn
U3JEanw5PjxAPzZSJjh6Ym04YnI/Qy1ObjFjaygrPE5LJTcpNnYtd1dxND1NX1RidDE5NHpVKnlG
CnpoPG90PEhCV25veEIlMWs5KE0wbzxOZylSZ0hTKCM/ZWRFUUIhXnxGay1fKGFgYlVCTEFLKmh+
YXp+IV94dT1UNAp6Nkc1Sy1hWEpvdEhRbEVDOENVNXxSeU1SdVFrWEUpP152NihpPU11KT0kXm8l
MCF5czVHVlJhWFoyUzJINEk4M0wKenEpYmB8UHh7KDg5VzMyenE0c3F6SCtCQUtQOXVhREVwRDhJ
SUE5RC1INDVDJVZUP0pKI01hK0JAaTlNUGRGLSMjCnpOeEY1VHV9aXpfaHokU0taMF9fJiFZcDF5
YWRWem9jQEV5K0JlZkpDdENTVmQ1KEp5KDxDNkljQ1d9RG1Id0M4VAp6UntrcXZSQD8zcnpMRzIk
WmRjeC01dkZSQGQkUSNERCt+e2RoQG1kX2VgQkI2KlVZNlIrNF4jVSV6NGx0eDlCJTsKek5WOHoq
e0djR007Z3EyUnR5ZGp7SDBTMHAjejw2JTdtMyElez9NUXVhPGBAZTViT3RiZCFFYz9HXnV4ZjRn
eGNJCnotRjdTVFlpfnZEYm12Q1ozTkRjZkhqOD5DOUZWNmpkMX0ocFN3cmdHaypRWjlScjQpNiFz
U2tUVXFieGJhZWEydQp6d1NgJHlvc1EpZWIlb192Sk8qIUFgZFI7WTRrPiZxWXp1YS1aTkU8M0ZF
PUkrZVNVO3ghcHReQTM1Pm9Jb1BgSnEKelpsfilyQzYwTCtrU3hBZ29QRXxyR2pWQD8yQXkqWGI9
JGNgY19MMz1FemhqQlVEPWgxXzQlZUJDZmxqJkVIWm1PCnpzezFifE51eDYrO0sjS0I9VGtffGlr
fHsqMDFkayQ5S2E2YGNSVT1NY1lpTiFrLWEpMlBEMzFoPGNUcyVrUGhvWgp6Tykyd19UOS04dzJO
TSYmcTJwbDReS3F9Q1BlPWw5aHEkVzQhdDtKRCV8VUooMjh2RGJNKkw+VkY3YldfWHtiMTQKekdO
dyh3PkVfUzlgPDt4UWxQYEBzZD42bTNuMilMKTBwIVhSckQjMjVpSWtSRHMpMXVqTiVTc3l3IzYy
dmR2JkFsCnpjZGotWWwjNitAYTBXc2NVPDNgZ3ZXJDJ3LSheSGZFUnl4c05zcTZtSzBkODs/MExT
ZU5oJU5FZTBCWUo0SUwoYQp6JFdYbmQpUEJXPEFUa3t5JTJTOUdQYTJxeUpXJF5KSl9jb19YUDFt
OUV9ailRP15sJCMqTUR4UDV8bVkxemNxM3kKemI9QHp5Q1h1Z3dke05qeD9pMjdqK3pYTzQqVj59
WmUtekJReClIeW53TGBOaighOXQpNTRkTzt6VFZ+LU8jO1U7CnpNd3AwUFUtdVVMPyMjOEwtKSZ2
bWJuQW1uI0AmYT52PWNQfUVVUUpWd2FEdzlWPC1Jd1l0aVQ5dyhUTWVhMiVEeQp6fEE0MCRONXVv
aVFFXl97UzEtaWBxNWx0dHBnPlNENHBhZmhmbEJ8NlBFPiE+c2hXa29FbVpoZyt+MEhwPDNLVEAK
ejlqayRxTUM9MCZCYmteZlJvNGYzOEp+aVdDfHhHUDBgd1ozRiNrOGcqSWROWSRHRi1BeDhePERy
Ql5qMjhYYjZzCnpSfDtWdmFyJTx8VFpLfj4zMGtEMylXJEFEIyh0dGAjQHg3UThPWWFwVF9KeU0x
dlQ/bGJ4LStfRihKRiV5UzBPJAp6cFMjbH13KjBqPmJ9TTNlOzRJPntwTU0+cyVgP2ZTQUVfUWJg
QW4+X1Yha2l9JDl3TU45KGZVMXVKR20wTWk3aEsKekE1bDBlMXdWY14kcWw/NWdtPjhFdkJwU2FX
ZjVUSWczWlNidUpocDthJShaK2tje2NkdjFQdVgkZTJHQU4/SmY4CnpXS05nUzwoTTJGTlVgUnhk
Qkd9Zj1TMXJuUSplUjEycUZfQyYmcG5AYHklQ35MOV5RX1o5bGgmRz1YdkdDITQxMAp6eW4pNW89
KXgyaUpZK14/XkVMam50SEhgfUspemE/ST18diEkaEwwbiZHenlwemFMd05kZU09T2pXfC0tPW1S
X2oKenl0P35WeF9fOUJFdmNoTD85aHVVb2ItNW4rcjE/PHhAY2d9NWF8VnxGY0ZRTyplSXB3WkVu
flZHTGVxdlNAV2syCnopIStEMy07ezRAT08pYitiUU8jPS1FK0JlT0BmITM8aVQwbWIycGIzODh7
R0lSYXJqZG5UaSVAPzRxd3kjcTYwWQp6cWlBfHt0Nm80OUVNMThKJnc4REEjd1FERHNGd04kSEcq
TVRMMjFCUWopWVJgVzVMO1pmTU08KnJMPUZJZ3wwYkoKelQ5cjdGbEJMTF5yViUxVU8hM3xHREVh
TSFqSFBMcj81UUJ1Q0MhVyk+ZHJmXlJDYGA3WVJZWihLPmllMD5wSmReCnpKV19IeyUpXmMhNj5s
fDlQOD9jPWooQjU3WUp6OD9YeVF6RTl1R2F9ZFYwUFRwMyE7cCFTRil9dC1pPkM8RWRIKwp6TUtB
U25WIyEmU1dmZH0wZGxqWHN5UWZ6c0A2aTArZHFTSEpMfkY3fm90fCRId2YrRiowakNLKnc1V29G
QFE5aE4KemhsayVTe2g2QzU3Q0kyXzVSOTtmMztwLTE+RFVuKlVeZW9HamhxbzsqUioka1ZFMDFK
PlRKUVJzdjlveiZrITN6CnprV1Q7KjBRZTBNM1VDTHcwRD1KK2ZHZmNGdkpVfGBVZHNLXzM0dFR2
SHtmJi1ZOFdGR2g/XlAhWDU7eT1GWnVEcwpmZnJXazAlTShPR25UTU48aCZxQHlMZERVXyZNY0Fm
P3wxa01lalVObwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L2tleS5wZW0gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvY2VydC9rZXkucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWU4NTgzMThm
MjkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9rZXkucGVtCisrKyAvZGV2L251
bGwKQEAgLTEsMTUgKzAsMCBAQAotLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQotTUlJ
Q1hnSUJBQUtCZ1FEZUVNNDZXZ1NrSENtVFhDT0NHdklHQWVZcnBBL2RkMGwyaVFPaUlkNEVkY2Jp
M2ZzMQotSnpxaWtvNFNZaXMrSC9SNDM3YVV5eWZXeTlZMzExd0k4QWsreWM0a0xRREozMHJnbWVY
N0k2bmkxc2s5bHZvQgotaU41YWliRFBBMmR2QklZZDcySWNWYWtIbWk1bUtuTmJUR0lEK1lLRDIy
aS91RXNMaTVNUnVGUnpld0lEQVFBQgotQW9HQkFJdUN1VjFWY25iN3JtOEN3dGdaUDVYZ21ZOHZT
anhUbGRhZmE2WHZhd0VZVVRQMFM3N3YvMWxsZzFZdgotVUlWK0krUFFnRzlvVm9ZT2wyMkxvaW1I
Uy9aM2UxZnNvdDV0RFlzekdlOC9Ha3N0NG9hUmVTb3h2QlVhNldYcAotUVNvN1lGQ2FqdUh0RStX
L2d6RitVSGJkenpYSURqUVozMTRMTkY1dCs0VW5zRVBCQWtFQStnaXJJbXFXb00ydAotM1VSOGY4
b2VrRVJ3c21FTWY5REg1WXBINGN2VW52SStrd2VzQy9yMlU4U2hvKytmeUVNVU5tN2FJWEdxTkxn
YQotb2dBTSs0Tlg0UUpCQU9OZFN4U2F5MjJlZ1RHTm9JaExuZGxqV2t1T3QvOUZXajJrbGYvNFF4
RDRibE1KUTVPcQotUWRPR0FoN25WUWpwUExRNUQ3Q0JWQUtwR00yQ0QrUUpCdHNDUUVQMmt6MzVw
eFB5bEczdXJjQzJtZlF4QmtrVwotWkNWaUJOUDU4R3dKMGJPYXVUT1NCRXdGWFd1THFUdzhhRHd4
TDQ5VU5tcWMwTjBmcGUyZkFlaGozVUVDUVFDbQotRkgvRGpVOEx3N3liZGRqTnRtNlhYUHVZTmFn
eHozY2JrQjRCM0ZjaERsZUlVRHdNb1ZGME1XOWJJNS81NG1WMQotUURrMXRVS29ydHh2UVpKYUFE
NEJBa0VBaEdPSFFxUGQ2YkJCb0ZCdnBhTHpQSk14d0xLckIrV3RrcS9RbEM3MgotQ2xSaU1uMmc4
U0FMaUlMM0JEZ0dYS2NLRS9XeTdqby9hZi9KQ3pRL2NQcXQvQT09Ci0tLS0tLUVORCBSU0EgUFJJ
VkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDgxMjQxNmI4NmI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvY2VydC9jYWNlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvY2VydC9jbGllbnRfY2VydC5wMTIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9rZXkucGVtCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NsaWVudF9m
b3JfdGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkMTg1NzEyZWVh
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQorKysg
L2Rldi9udWxsCkBAIC0xLDExMDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3Rp
bmcuCi0KLVRoaXMgbW9kdWxlIGNvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBwZXJmb3JtaW5n
IGhhbmRzaGFrZSwgZnJhbWUKLXNlbmRpbmcvcmVjZWl2aW5nIGFzIGEgV2ViU29ja2V0IGNsaWVu
dC4KLQotVGhpcyBpcyBjb2RlIGZvciB0ZXN0aW5nIG1vZF9weXdlYnNvY2tldC4gS2VlcCB0aGlz
IGNvZGUgaW5kZXBlbmRlbnQgZnJvbQotbW9kX3B5d2Vic29ja2V0LiBEb24ndCBpbXBvcnQgZS5n
LiBTdHJlYW0gY2xhc3MgZm9yIGdlbmVyYXRpbmcgZnJhbWUgZm9yCi10ZXN0aW5nLiBVc2luZyB1
dGlsLmhleGlmeSwgZXRjLiB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBwcm90b2NvbCBwcm9jZXNz
aW5nCi1pcyBhbGxvd2VkLgotCi1Ob3RlOgotVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCwg
ZS5nLiwgd2UgY3V0IGNvcm5lcnMgaW4gaGFuZHNoYWtlLgotIiIiCi0KLQotaW1wb3J0IGJhc2U2
NAotaW1wb3J0IGVycm5vCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9t
Ci1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aW1lCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCB1dGlsCi0KLQotREVGQVVMVF9QT1JUID0gODAKLURFRkFVTFRfU0VDVVJFX1BPUlQg
PSA0NDMKLQotIyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3
IGZyYW1pbmcgZm9ybWF0Ci1PUENPREVfQ09OVElOVUFUSU9OID0gMHgwCi1PUENPREVfQ0xPU0Ug
PSAweDgKLU9QQ09ERV9QSU5HID0gMHg5Ci1PUENPREVfUE9ORyA9IDB4YQotT1BDT0RFX1RFWFQg
PSAweDEKLU9QQ09ERV9CSU5BUlkgPSAweDIKLQotIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFr
ZQotX1VQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9I
RUFERVJfSElYSUU3NSA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVB
REVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotCi1XRUJTT0NLRVRfQUNDRVBUX1VVSUQg
PSAnMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJwotCi0jIFN0YXR1cyBjb2Rl
cwotU1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAotU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAx
Ci1TVEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCi1TVEFUVVNfVU5TVVBQT1JURURfREFUQSA9
IDEwMDMKLVNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1Ci1TVEFUVVNfQUJOT1JNQUxf
Q0xPU1VSRSA9IDEwMDYKLVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcK
LVNUQVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAotU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9
IDEwMDkKLVNUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAotU1RBVFVTX0lOVEVSTkFMX0VORFBP
SU5UX0VSUk9SID0gMTAxMQotU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1Ci0KLSMgRXh0ZW5z
aW9uIHRva2VucwotX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUtZnJhbWUnCi0j
IFRPRE8oYmFzaGkpOiBVcGRhdGUgYWZ0ZXIgbXV4IGltcGxlbWVudGF0aW9uIGZpbmlzaGVkLgot
X01VWF9FWFRFTlNJT04gPSAnbXV4X0RPX05PVF9VU0UnCi1fUEVSTUVTU0FHRV9ERUZMQVRFX0VY
VEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxhdGUnCi0KLWRlZiBfbWV0aG9kX2xpbmUocmVzb3Vy
Y2UpOgotICAgIHJldHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRl
ZiBfc2VjX29yaWdpbl9oZWFkZXIob3JpZ2luKToKLSAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQt
T3JpZ2luOiAlc1xyXG4nICUgb3JpZ2luLmxvd2VyKCkKLQotCi1kZWYgX29yaWdpbl9oZWFkZXIo
b3JpZ2luKToKLSAgICAjIDQuMSAxMy4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmln
aW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyLAotICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2
YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCi0gICAgcmV0
dXJuICdPcmlnaW46ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBfZm9ybWF0X2hv
c3RfaGVhZGVyKGhvc3QsIHBvcnQsIHNlY3VyZSk6Ci0gICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9y
dC8gYmUgYW4gZW1wdHkgc3RyaW5nLgotICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2
YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8KLSAgICAjIC9ob3N0cG9ydC8K
LSAgICBob3N0cG9ydCA9IGhvc3QubG93ZXIoKQotICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBp
cyBmYWxzZSwgYW5kIC9wb3J0LyBpcyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCi0gICAgIyBpcyB0
cnVlLCBhbmQgL3BvcnQvIGlzIG5vdCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNo
YXJhY3RlcgotICAgICMgKDopIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJl
c3NlZCBhcyBhIGJhc2UtdGVuIGludGVnZXIsCi0gICAgIyB0byAvaG9zdHBvcnQvCi0gICAgaWYg
KChub3Qgc2VjdXJlIGFuZCBwb3J0ICE9IERFRkFVTFRfUE9SVCkgb3IKLSAgICAgICAgKHNlY3Vy
ZSBhbmQgcG9ydCAhPSBERUZBVUxUX1NFQ1VSRV9QT1JUKSk6Ci0gICAgICAgIGhvc3Rwb3J0ICs9
ICc6JyArIHN0cihwb3J0KQotICAgICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJp
bmcgIkhvc3Q6IiwgYSBVKzAwMjAgU1BBQ0UKLSAgICAjIGNoYXJhY3RlciwgYW5kIC9ob3N0cG9y
dC8sIHRvIC9maWVsZHMvLgotICAgIHJldHVybiAnSG9zdDogJXNcclxuJyAlIGhvc3Rwb3J0Ci0K
LQotIyBUT0RPKHR5b3NoaW5vKTogRGVmaW5lIGEgYmFzZSBjbGFzcyBhbmQgbW92ZSB0aGVzZSBz
aGFyZWQgbWV0aG9kcyB0byB0aGF0LgotCi0KLWRlZiByZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVu
Z3RoKToKLSAgICByZWNlaXZlZF9ieXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0g
ICAgd2hpbGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgbmV3X3JlY2VpdmVkX2J5dGVzID0gc29j
a2V0LnJlY3YocmVtYWluaW5nKQotICAgICAgICBpZiBub3QgbmV3X3JlY2VpdmVkX2J5dGVzOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdDb25uZWN0aW9u
IGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAgICAgICAgICAg
ICAgICcocmVxdWVzdGVkICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQot
ICAgICAgICAgICAgICAgIChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0gICAgICAgIHJl
Y2VpdmVkX2J5dGVzLmFwcGVuZChuZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgICAgIHJlbWFpbmlu
ZyAtPSBsZW4obmV3X3JlY2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKHJlY2VpdmVk
X2J5dGVzKQotCi0KLSMgVE9ETyh0eW9zaGlubyk6IE5vdyB0aGUgV2ViU29ja2V0SGFuZHNoYWtl
IGNsYXNzIGRpdmVydHMgdGhlc2UgbWV0aG9kcy4gV2UKLSMgc2hvdWxkIG1vdmUgdG8gSFRUUCBw
YXJzZXIgYXMgc3BlY2lmaWVkIGluIFJGQyA2NDU1LiBGb3IgSHlCaSAwMCBhbmQKLSMgSGl4aWUg
NzUsIHBhY2sgdGhlc2UgbWV0aG9kcyBhcyBzb21lIHBhcnNlciBjbGFzcy4KLQotCi1kZWYgX3Jl
YWRfZmllbGRzKHNvY2tldCk6Ci0gICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qg
b2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgIGZpZWxkcyA9IHt9Ci0g
ICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8g
YmUgZW1wdHkgYnl0ZSBhcnJheXMKLSAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIHZhbHVlID0g
JycKLSAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25hbWUvCi0gICAgICAgIG5hbWUgPSBfcmVhZF9u
YW1lKHNvY2tldCkKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsK
LSAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2VzCi0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6
IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAgICAgICBj
aCA9IF9za2lwX3NwYWNlcyhzb2NrZXQpCi0gICAgICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8K
LSAgICAgICAgdmFsdWUgPSBfcmVhZF92YWx1ZShzb2NrZXQsIGNoKQotICAgICAgICAjIDQuMSAz
Ny4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRl
cyhzb2NrZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0IGZvdW5k
ICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCi0gICAgICAgICAgICAgICAg
JyVyJyAlIChjaCwgbmFtZSwgdmFsdWUpKQotICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVu
dHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAgICMgZ2l2
ZW4gYnkgdGhlIHN0cmluZyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9uYW1lLyBieXRl
Ci0gICAgICAgICMgYXJyYXkgYXMgYSBVVEYtOCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBi
eSB0aGUgc3RyaW5nCi0gICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFs
dWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAgICMgc3RyZWFtLgotICAgICAg
ICBmaWVsZHMuc2V0ZGVmYXVsdChuYW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAgICAgICAjIDQu
MSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICByZXR1cm4gZmllbGRz
Ci0KLQotZGVmIF9yZWFkX25hbWUoc29ja2V0KToKLSAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBi
ZSBlbXB0eSBieXRlIGFycmF5cwotICAgIG5hbWUgPSAnJwotICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgY2ggPSBy
ZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggPT0gJ1xyJzogICMgMHgwRAot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBB
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0
ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAgICAgIGVsaWYg
Y2ggPT0gJzonOiAgIyAweDNBCi0gICAgICAgICAgICByZXR1cm4gbmFtZQotICAgICAgICBlbGlm
IGNoID49ICdBJyBhbmQgY2ggPD0gJ1onOiAgIyByYW5nZSAweDMxIHRvIDB4NUEKLSAgICAgICAg
ICAgIGNoID0gY2hyKG9yZChjaCkgKyAweDIwKQotICAgICAgICAgICAgbmFtZSArPSBjaAotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSArPSBjaAotCi0KLWRlZiBfc2tpcF9zcGFjZXMo
c29ja2V0KToKLSAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAg
d2hpbGUgVHJ1ZToKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAg
ICAgaWYgY2ggPT0gJyAnOiAgIyAweDIwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBy
ZXR1cm4gY2gKLQotCi1kZWYgX3JlYWRfdmFsdWUoc29ja2V0LCBjaCk6Ci0gICAgIyA0LjEgMzMu
IGxldCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgdmFsdWUgPSAnJwotICAgICMg
NC4xIDM2LiByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KLSAgICB3aGlsZSBUcnVlOgotICAgICAg
ICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAg
ICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1
ZSAlcicgJSB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlICs9IGNoCi0g
ICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0KLQotZGVmIHJlYWRfZnJhbWVf
aGVhZGVyKHNvY2tldCk6Ci0gICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMikK
LQotICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5
dGUgPj4gNykgJiAxCi0gICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIg
PSAoZmlyc3RfYnl0ZSA+PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAx
Ci0gICAgb3Bjb2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQo
cmVjZWl2ZWRbMV0pCi0gICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXls
b2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgotCi0gICAgaWYgbWFzayAhPSAwOgotICAg
ICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAnTWFzayBiaXQgbXVzdCBiZSAwIGZv
ciBmcmFtZXMgY29taW5nIGZyb20gc2VydmVyJykKLQotICAgIGlmIHBheWxvYWRfbGVuZ3RoID09
IDEyNzoKLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgOCkKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAg
ICAgICAgJyFRJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHBheWxv
YWRfbGVuZ3RoID4gMHg3RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdFeHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKLSAgICBlbGlmIHBheWxvYWRf
bGVuZ3RoID09IDEyNjoKLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZl
X2J5dGVzKHNvY2tldCwgMikKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNr
KAotICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0KLSAgICBy
ZXR1cm4gZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCi0KLQot
Y2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5l
Y3Rpb24uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6Ci0gICAgICAg
IHNlbGYuX3NzbCA9IHNvY2tldC5zc2wocmF3X3NvY2tldCkKLQotICAgIGRlZiBzZW5kKHNlbGYs
IGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykKLQotICAgIGRl
ZiByZWN2KHNlbGYsIHNpemU9LTEpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLnJlYWQoc2l6
ZSkKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgotICAg
ICAgICBwYXNzCi0KLQotY2xhc3MgSHR0cFN0YXR1c0V4Y2VwdGlvbihFeGNlcHRpb24pOgotICAg
ICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdW5leHBlY3RlZCBodHRwIHN0
YXR1cyBjb2RlIHdhcwotICAgIHJlY2VpdmVkIGFzIGEgcmVzdWx0IG9mIGhhbmRzaGFrZS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXMpOgotICAgICAgICBz
dXBlcihIdHRwU3RhdHVzRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBz
ZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZShvYmplY3Qp
OgotICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBw
cm90b2NvbCAoUkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMp
OgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQot
ICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxm
LCBzb2NrZXQpOgotICAgICAgICAiIiJIYW5kc2hha2UgV2ViU29ja2V0LgotCi0gICAgICAgIFJh
aXNlczoKLSAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAgcmVxdWVzdF9s
aW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVl
c3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lKQotCi0g
ICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVS
KQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLQotICAgICAgICBm
aWVsZHMuYXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwK
LSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0KLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy52ZXJzaW9uID09IDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9zZWNfb3Jp
Z2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
LQotICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBrZXkgPSBi
YXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5LCB1dGlsLmhl
eGlmeShvcmlnaW5hbF9rZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0
LUtleTogJXNcclxuJyAlIGtleSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29j
a2V0LVZlcnNpb246ICVkXHJcbicgJSBzZWxmLl9vcHRpb25zLnZlcnNpb24pCi0KLSAgICAgICAg
IyBTZXR0aW5nIHVwIGV4dGVuc2lvbnMuCi0gICAgICAgIGlmIGxlbihzZWxmLl9vcHRpb25zLmV4
dGVuc2lvbnMpID4gMDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQt
RXh0ZW5zaW9uczogJXNcclxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9p
bihzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnT3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxkcykKLQotICAg
ICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRh
bGwoZmllbGQpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLQotICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKLQot
ICAgICAgICBmaWVsZCA9ICcnCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9
IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gK
LSAgICAgICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlc3BvbnNlLUxpbmU6
ICVyJywgZmllbGQpCi0KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVu
ZHN3aXRoKCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1
cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgbSA9IHJlLm1hdGNoKCdbXiBdKiAoW14gXSop
IC4qJywgZmllbGQpCi0gICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBz
dGF0dXMgbGluZTogJXInICUgZmllbGQpCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAg
ICAgIGlmIG5vdCByZS5tYXRjaCgnWzAtOV1bMC05XVswLTldJywgY29kZSk6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIg
aXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAgICAgICAgICAg
IChjb2RlLCBmaWVsZCkpCi0gICAgICAgIGlmIGNvZGUgIT0gJzEwMSc6Ci0gICAgICAgICAgICBy
YWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQ
IHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcKLSAgICAgICAg
ICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSwgaW50KGNvZGUpKQotICAgICAgICBmaWVsZHMg
PSBfcmVhZF9maWVsZHMoc2VsZi5fc29ja2V0KQotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMo
c2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCi0K
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBo
ZWFkZXJzOiAlcicsIGZpZWxkcykKLQotICAgICAgICAjIENoZWNrIC9maWVsZHMvCi0gICAgICAg
IGlmIGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAl
cycgJSBmaWVsZHNbJ3VwZ3JhZGUnXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlv
biddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICdNdWx0aXBsZSBDb25uZWN0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVj
dGlvbiddKQotICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnd2Vic29ja2V0JzoK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3Rl
ZCBVcGdyYWRlIGhlYWRlciB2YWx1ZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ11bMF0pCi0gICAg
ICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIENv
bm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snY29u
bmVjdGlvbiddWzBdKQotCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNj
ZXB0J10pICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVzJyAlCi0g
ICAgICAgICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddKQotCi0gICAgICAg
IGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQnXVswXQotCi0gICAgICAgICMg
VmFsaWRhdGUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVjb2RlZF9hY2NlcHQgPSBiYXNl
NjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAg
ICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbGxl
Z2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICcgKyBhY2NlcHQpCi0K
LSAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoKLSAgICAgICAgICAgIHJhaXNl
IEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBvZiBT
ZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25nJykKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFjY2VwdDogJXIgKCVzKScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQsIHV0aWwuaGV4aWZ5KGRlY29kZWRfYWNj
ZXB0KSkKLQotICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2NlcHQgPSB1dGlsLnNoYTFfaGFz
aCgKLSAgICAgICAgICAgIGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAg
ICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9leHBlY3Rl
ZF9hY2NlcHQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBTZWMtV2Vi
U29ja2V0LUFjY2VwdDogJXIgKCVzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZF9hY2NlcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShvcmln
aW5hbF9leHBlY3RlZF9hY2NlcHQpKQotCi0gICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9h
Y2NlcHQ6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0lu
dmFsaWQgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyOiAlciAoZXhwZWN0ZWQpICE9ICVyICcK
LSAgICAgICAgICAgICAgICAnKGFjdHVhbCknICUgKGFjY2VwdCwgZXhwZWN0ZWRfYWNjZXB0KSkK
LQotICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVsZHMuZ2V0KCdzZWMtd2Vi
c29ja2V0LWV4dGVuc2lvbnMnKQotICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KLSAg
ICAgICAgaWYgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAg
ICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkKLQotICAg
ICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhlcmUgaXMg
YW55IHVucmVjb2duaXplZAotICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9ucyB3ZSBk
aWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCi0gICAgICAgICMgZXh0ZW5zaW9ucyB3ZSBy
ZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwgYmUKLSAg
ICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgotICAgICAgICBkZWZsYXRlX2Zy
YW1lX2FjY2VwdGVkID0gRmFsc2UKLSAgICAgICAgbXV4X2FjY2VwdGVkID0gRmFsc2UKLSAgICAg
ICAgZm9yIGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgaWYg
ZXh0ZW5zaW9uLm5hbWUoKSA9PSBfREVGTEFURV9GUkFNRV9FWFRFTlNJT046Ci0gICAgICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgICAg
ICAgICAgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX01VWF9FWFRFTlNJ
T046Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfbXV4OgotICAgICAgICAg
ICAgICAgICAgICBtdXhfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICBpZiBleHRlbnNpb24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxB
VEVfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNo
ZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZQotICAgICAgICAgICAgICAgIGlmIGNoZWNrZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIGNoZWNrZXIoZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlIGV4dGVuc2lvbi5uYW1lKCkp
Ci0KLSAgICAgICAgIyBMZXQgYWxsIGV4dGVuc2lvbnMgY2hlY2sgdGhlIHJlc3BvbnNlIGZvciBl
eHRlbnNpb24gcmVxdWVzdC4KLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy51c2VfZGVmbGF0
ZV9mcmFtZSBhbmQKLSAgICAgICAgICAgIG5vdCBkZWZsYXRlX2ZyYW1lX2FjY2VwdGVkKToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgZXh0ZW5zaW9uIG5vdCBhY2NlcHRlZCcgJQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9tdXggYW5kIG5vdCBtdXhfYWNjZXB0ZWQ6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIGV4dGVuc2lvbiBub3QgYWNjZXB0ZWQnICUg
X01VWF9FWFRFTlNJT04pCi0KLQotY2xhc3MgV2ViU29ja2V0SHliaTAwSGFuZHNoYWtlKG9iamVj
dCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0
IHByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBvcHRpb25zLCBkcmFmdF9maWVsZCk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
Ci0gICAgICAgIHNlbGYuX2RyYWZ0X2ZpZWxkID0gZHJhZnRfZmllbGQKLQotICAgIGRlZiBoYW5k
c2hha2Uoc2VsZiwgc29ja2V0KToKLSAgICAgICAgIiIiSGFuZHNoYWtlIFdlYlNvY2tldC4KLQot
ICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBFeGNlcHRpb246IGhhbmRzaGFrZSBmYWlsZWQu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAotCi0gICAgICAg
ICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAgICAgICByZXF1ZXN0X2xpbmUgPSBfbWV0
aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxpbmU6ICVyJywgcmVxdWVzdF9saW5lKQot
ICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUpCi0gICAgICAgICMgNC4x
IDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBsaXN0IG9mIHN0cmluZ3MuCi0gICAgICAgIGZp
ZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFkZCB0aGUgc3RyaW5nICJVcGdyYWRlOiBXZWJT
b2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURF
Ul9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBBZGQgdGhlIHN0cmluZyAiQ29ubmVjdGlvbjog
VXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05f
SEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBBZGQgSG9zdDogZmllbGQgdG8gL2ZpZWxkcy8u
Ci0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNl
cnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLSAgICAgICAg
IyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMu
YXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgIyBU
T0RPOiA0LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxkIHRvIC9maWVsZHMv
LgotICAgICAgICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMgdG8gL2ZpZWxkcy8u
Ci0KLSAgICAgICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtleTxuPiB0byAvZmll
bGRzLy4KLSAgICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dlbmVyYXRlX3NlY193
ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIxOiAlZCcs
IHNlbGYuX251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtS2V5
MTogJXNcclxuJyAlIGtleTEpCi0gICAgICAgIHNlbGYuX251bWJlcjIsIGtleTIgPSBzZWxmLl9n
ZW5lcmF0ZV9zZWNfd2Vic29ja2V0X2tleSgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
TnVtYmVyMjogJWQnLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMt
V2ViU29ja2V0LUtleTI6ICVzXHJcbicgJSBrZXkyKQotCi0gICAgICAgIGZpZWxkcy5hcHBlbmQo
J1NlYy1XZWJTb2NrZXQtRHJhZnQ6ICVzXHJcbicgJSBzZWxmLl9kcmFmdF9maWVsZCkKLQotICAg
ICAgICAjIDQuMSAyNC4gRm9yIGVhY2ggc3RyaW5nIGluIC9maWVsZHMvLCBpbiBhIHJhbmRvbSBv
cmRlcjogc2VuZCB0aGUKLSAgICAgICAgIyBzdHJpbmcsIGVuY29kZWQgYXMgVVRGLTgsIGZvbGxv
d2VkIGJ5IGEgVVRGLTggZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0UKLSAgICAgICAgIyBSRVRVUk4g
VSswMDBBIExJTkUgRkVFRCBjaGFyYWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAgIHJhbmRvbS5z
aHVmZmxlKGZpZWxkcykKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFu
ZHNoYWtlIHJlcXVlc3QgaGVhZGVyczogJXInLCBmaWVsZHMpCi0gICAgICAgIGZvciBmaWVsZCBp
biBmaWVsZHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmaWVsZCkKLQotICAg
ICAgICAjIDQuMSAyNS4gc2VuZCBhIFVURi04LWVuY29kZWQgVSswMDBEIENBUlJJQUdFIFJFVFVS
TiBVKzAwMEEgTElORSBGRUVECi0gICAgICAgICMgY2hhcmFjdGVyIHBhaXIgKENSTEYpLgotICAg
ICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbCgnXHJcbicpCi0gICAgICAgICMgNC4xIDI2LiBsZXQg
L2tleTMvIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChvcgot
ICAgICAgICAjIGVxdWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2RlZCBp
biBhIGJpZy1lbmRpYW4gb3JkZXIpLgotICAgICAgICBzZWxmLl9rZXkzID0gc2VsZi5fZ2VuZXJh
dGVfa2V5MygpCi0gICAgICAgICMgNC4xIDI3LiBzZW5kIC9rZXkzLyB0byB0aGUgc2VydmVyLgot
ICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9rZXkzKQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnS2V5MzogJXIgKCVzKScsIHNlbGYuX2tleTMsIHV0
aWwuaGV4aWZ5KHNlbGYuX2tleTMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50
IG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QnKQotCi0gICAgICAgICMgNC4xIDI4LiBSZWFkIGJ5
dGVzIGZyb20gdGhlIHNlcnZlciB1bnRpbCBlaXRoZXIgdGhlIGNvbm5lY3Rpb24KLSAgICAgICAg
IyBjbG9zZXMsIG9yIGEgMHgwQSBieXRlIGlzIHJlYWQuIGxldCAvZmllbGQvIGJlIHRoZXNlIGJ5
dGVzLCBpbmNsdWRpbmcKLSAgICAgICAgIyB0aGUgMHgwQSBieXRlcy4KLSAgICAgICAgZmllbGQg
PSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVz
KHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGZpZWxkICs9IGNoCi0gICAgICAgICAgICBp
ZiBjaCA9PSAnXG4nOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXNwb25zZS1MaW5lOiAlcicsIGZpZWxkKQot
Ci0gICAgICAgICMgaWYgL2ZpZWxkLyBpcyBub3QgYXQgbGVhc3Qgc2V2ZW4gYnl0ZXMgbG9uZywg
b3IgaWYgdGhlIGxhc3QKLSAgICAgICAgIyB0d28gYnl0ZXMgYXJlbid0IDB4MEQgYW5kIDB4MEEg
cmVzcGVjdGl2ZWx5LCBvciBpZiBpdCBkb2VzIG5vdAotICAgICAgICAjIGNvbnRhaW4gYXQgbGVh
c3QgdHdvIDB4MjAgYnl0ZXMsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24KLSAg
ICAgICAgIyBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGxlbihmaWVsZCkgPCA3
IG9yIG5vdCBmaWVsZC5lbmRzd2l0aCgnXHJcbicpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdXcm9uZyBzdGF0dXMgbGluZTogJXInICUgZmllbGQpCi0gICAgICAgIG0gPSByZS5tYXRj
aCgnW14gXSogKFteIF0qKSAuKicsIGZpZWxkKQotICAgICAgICBpZiBtIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVy
JyAlIGZpZWxkKQotICAgICAgICAjIDQuMSAyOS4gbGV0IC9jb2RlLyBiZSB0aGUgc3Vic3RyaW5n
IG9mIC9maWVsZC8gdGhhdCBzdGFydHMgZnJvbSB0aGUKLSAgICAgICAgIyBieXRlIGFmdGVyIHRo
ZSBmaXJzdCAweDIwIGJ5dGUsIGFuZCBlbmRzIHdpdGggdGhlIGJ5dGUgYmVmb3JlIHRoZQotICAg
ICAgICAjIHNlY29uZCAweDIwIGJ5dGUuCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAg
ICAgICMgNC4xIDMwLiBpZiAvY29kZS8gaXMgbm90IHRocmVlIGJ5dGVzIGxvbmcsIG9yIGlmIGFu
eSBvZiB0aGUgYnl0ZXMgaW4KLSAgICAgICAgIyAvY29kZS8gYXJlIG5vdCBpbiB0aGUgcmFuZ2Ug
MHgzMCB0byAweDkwLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldAotICAgICAgICAjIGNvbm5lY3Rp
b24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBub3QgcmUubWF0Y2goJ1swLTld
WzAtOV1bMC05XScsIGNvZGUpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdIVFRQIHN0YXR1cyBjb2RlICVyIGlzIG5vdCB0aHJlZSBkaWdpdCBpbiBzdGF0
dXMgbGluZTogJXInICUKLSAgICAgICAgICAgICAgICAoY29kZSwgZmllbGQpKQotICAgICAgICAj
IDQuMSAzMS4gaWYgL2NvZGUvLCBpbnRlcnByZXRlZCBhcyBVVEYtOCwgaXMgIjEwMSIsIHRoZW4g
bW92ZSB0byB0aGUKLSAgICAgICAgIyBuZXh0IHN0ZXAuCi0gICAgICAgIGlmIGNvZGUgIT0gJzEw
MSc6Ci0gICAgICAgICAgICByYWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVz
IGxpbmU6ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSwgaW50KGNvZGUp
KQotICAgICAgICAjIDQuMSAzMi0zOS4gcmVhZCBmaWVsZHMgaW50byAvZmllbGRzLwotICAgICAg
ICBmaWVsZHMgPSBfcmVhZF9maWVsZHMoc2VsZi5fc29ja2V0KQotCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVzcG9uc2UgaGVhZGVyczogJXInLCBmaWVs
ZHMpCi0KLSAgICAgICAgIyA0LjEgNDAuIF9GaWVsZHMgcHJvY2Vzc2luZ18KLSAgICAgICAgIyBy
ZWFkIGEgYnl0ZSBmcm9tIHNlcnZlcgotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5f
c29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlcicgJSBjaCkKLSAgICAgICAg
IyA0LjEgNDEuIGNoZWNrIC9maWVsZHMvCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3VwZ3JhZGUn
XSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
TXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXSkK
LSAgICAgICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlvbiddKSAhPSAxOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBDb25uZWN0aW9uIGhl
YWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVjdGlvbiddKQotICAgICAgICBpZiBsZW4o
ZmllbGRzWydzZWMtd2Vic29ja2V0LW9yaWdpbiddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBTZWMtV2ViU29ja2V0LU9yaWdp
biBoZWFkZXJzIGZvdW5kOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snc2VjLXNlYnNv
Y2tldC1vcmlnaW4nXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1sb2Nh
dGlvbiddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdNdWx0aXBsZSBTZWMtV2ViU29ja2V0LUxvY2F0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAl
Ci0gICAgICAgICAgICAgICAgZmllbGRzWydzZWMtc2Vic29ja2V0LWxvY2F0aW9uJ10pCi0gICAg
ICAgICMgVE9ETyh1a2FpKTogcHJvdG9jb2wKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBuYW1l
IGlzICJ1cGdyYWRlIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUgaXMgbm90IGV4YWN0bHkgZXF1
YWwgdG8gdGhlIHN0cmluZyAiV2ViU29ja2V0IiwKLSAgICAgICAgIyAgdGhlbiBmYWlsIHRoZSBX
ZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGZp
ZWxkc1sndXBncmFkZSddWzBdICE9ICdXZWJTb2NrZXQnOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIFVwZ3JhZGUgaGVhZGVyIHZhbHVl
OiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXVswXSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkncyBu
YW1lIGlzICJjb25uZWN0aW9uIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0
byBBU0NJSSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRvIHRo
ZSBzdHJpbmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFu
ZAotICAgICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgZmllbGRzWydjb25u
ZWN0aW9uJ11bMF0ubG93ZXIoKSAhPSAndXBncmFkZSc6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgQ29ubmVjdGlvbiBoZWFkZXIgdmFs
dWU6ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydjb25uZWN0aW9uJ11bMF0pCi0gICAg
ICAgICMgVE9ETyh1a2FpKTogY2hlY2sgb3JpZ2luLCBsb2NhdGlvbiwgY29va2llLCAuLgotCi0g
ICAgICAgICMgNC4xIDQyLiBsZXQgL2NoYWxsZW5nZS8gYmUgdGhlIGNvbmNhdGVuYXRpb24gb2Yg
L251bWJlcl8xLywKLSAgICAgICAgIyBleHByZXNzZWQgYXMgYSBiaWcgZW5kaWFuIDMyIGJpdCBp
bnRlZ2VyLCAvbnVtYmVyXzIvLCBleHByZXNzZWQKLSAgICAgICAgIyBhcyBiaWcgZW5kaWFuIDMy
IGJpdCBpbnRlZ2VyLCBhbmQgdGhlIGVpZ2h0IGJ5dGVzIG9mIC9rZXlfMy8gaW4gdGhlCi0gICAg
ICAgICMgb3JkZXIgdGhleSB3ZXJlIHNlbnQgb24gdGhlIHdpcmUuCi0gICAgICAgIGNoYWxsZW5n
ZSA9IHN0cnVjdC5wYWNrKCchSScsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGNoYWxsZW5nZSAr
PSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIyKQotICAgICAgICBjaGFsbGVuZ2UgKz0g
c2VsZi5fa2V5MwotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdD
aGFsbGVuZ2U6ICVyICglcyknLCBjaGFsbGVuZ2UsIHV0aWwuaGV4aWZ5KGNoYWxsZW5nZSkpCi0K
LSAgICAgICAgIyA0LjEgNDMuIGxldCAvZXhwZWN0ZWQvIGJlIHRoZSBNRDUgZmluZ2VycHJpbnQg
b2YgL2NoYWxsZW5nZS8gYXMgYQotICAgICAgICAjIGJpZy1lbmRpYW4gMTI4IGJpdCBzdHJpbmcu
Ci0gICAgICAgIGV4cGVjdGVkID0gdXRpbC5tZDVfaGFzaChjaGFsbGVuZ2UpLmRpZ2VzdCgpCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCBjaGFsbGVu
Z2UgcmVzcG9uc2U6ICVyICglcyknLAotICAgICAgICAgICAgZXhwZWN0ZWQsIHV0aWwuaGV4aWZ5
KGV4cGVjdGVkKSkKLQotICAgICAgICAjIDQuMSA0NC4gcmVhZCBzaXh0ZWVuIGJ5dGVzIGZyb20g
dGhlIHNlcnZlci4KLSAgICAgICAgIyBsZXQgL3JlcGx5LyBiZSB0aG9zZSBieXRlcy4KLSAgICAg
ICAgcmVwbHkgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMTYpCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY3R1YWwgY2hhbGxlbmdlIHJlc3BvbnNlOiAl
ciAoJXMpJywgcmVwbHksIHV0aWwuaGV4aWZ5KHJlcGx5KSkKLQotICAgICAgICAjIDQuMSA0NS4g
aWYgL3JlcGx5LyBkb2VzIG5vdCBleGFjdGx5IGVxdWFsIC9leHBlY3RlZC8sIHRoZW4gZmFpbAot
ICAgICAgICAjIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
Ci0gICAgICAgIGlmIGV4cGVjdGVkICE9IHJlcGx5OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdCYWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoZXhwZWN0
ZWQpICE9ICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKGV4cGVjdGVkLCByZXBseSkp
Ci0gICAgICAgICMgNC4xIDQ2LiBUaGUgKldlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlz
aGVkKi4KLQotICAgIGRlZiBfZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoc2VsZik6Ci0gICAg
ICAgICMgNC4xIDE2LiBsZXQgL3NwYWNlc19uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMSB0
byAxMiBpbmNsdXNpdmUuCi0gICAgICAgIHNwYWNlcyA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQot
ICAgICAgICAjIDQuMSAxNy4gbGV0IC9tYXhfbi8gYmUgdGhlIGxhcmdlc3QgaW50ZWdlciBub3Qg
Z3JlYXRlciB0aGFuCi0gICAgICAgICMgIDQsMjk0LDk2NywyOTUgZGl2aWRlZCBieSAvc3BhY2Vz
X24vLgotICAgICAgICBtYXhudW0gPSA0Mjk0OTY3Mjk1IC8gc3BhY2VzCi0gICAgICAgICMgNC4x
IDE4LiBsZXQgL251bWJlcl9uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byAvbWF4X24v
Ci0gICAgICAgICMgaW5jbHVzaXZlLgotICAgICAgICBudW1iZXIgPSByYW5kb20ucmFuZGludCgw
LCBtYXhudW0pCi0gICAgICAgICMgNC4xIDE5LiBsZXQgL3Byb2R1Y3Rfbi8gYmUgdGhlIHJlc3Vs
dCBvZiBtdWx0aXBseWluZyAvbnVtYmVyX24vIGFuZAotICAgICAgICAjIC9zcGFjZXNfbi8gdG9n
ZXRoZXIuCi0gICAgICAgIHByb2R1Y3QgPSBudW1iZXIgKiBzcGFjZXMKLSAgICAgICAgIyA0LjEg
MjAuIGxldCAva2V5X24vIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgL3Byb2R1Y3Rfbi8sIGV4
cHJlc3NlZAotICAgICAgICAjIGluIGJhc2UgdGVuIHVzaW5nIHRoZSBudW1lcmFscyBpbiB0aGUg
cmFuZ2UgVSswMDMwIERJR0lUIFpFUk8gKDApIHRvCi0gICAgICAgICMgVSswMDM5IERJR0lUIE5J
TkUgKDkpLgotICAgICAgICBrZXkgPSBzdHIocHJvZHVjdCkKLSAgICAgICAgIyA0LjEgMjEuIGlu
c2VydCBiZXR3ZWVuIG9uZSBhbmQgdHdlbHZlIHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhlCi0g
ICAgICAgICMgcmFuZ2UgVSswMDIxIHRvIFUrMDAyRiBhbmQgVSswMDNBIHRvIFUrMDA3RSBpbnRv
IC9rZXlfbi8gYXQgcmFuZG9tCi0gICAgICAgICMgcG9zaXRpb25zLgotICAgICAgICBhdmFpbGFi
bGVfY2hhcnMgPSByYW5nZSgweDIxLCAweDJmICsgMSkgKyByYW5nZSgweDNhLCAweDdlICsgMSkK
LSAgICAgICAgbiA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAgICBmb3IgXyBpbiB4cmFu
Z2Uobik6Ci0gICAgICAgICAgICBjaCA9IHJhbmRvbS5jaG9pY2UoYXZhaWxhYmxlX2NoYXJzKQot
ICAgICAgICAgICAgcG9zID0gcmFuZG9tLnJhbmRpbnQoMCwgbGVuKGtleSkpCi0gICAgICAgICAg
ICBrZXkgPSBrZXlbMDpwb3NdICsgY2hyKGNoKSArIGtleVtwb3M6XQotICAgICAgICAjIDQuMSAy
Mi4gaW5zZXJ0IC9zcGFjZXNfbi8gVSswMDIwIFNQQUNFIGNoYXJhY3RlcnMgaW50byAva2V5X24v
IGF0Ci0gICAgICAgICMgcmFuZG9tIHBvc2l0aW9ucyBvdGhlciB0aGFuIHN0YXJ0IG9yIGVuZCBv
ZiB0aGUgc3RyaW5nLgotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uoc3BhY2VzKToKLSAgICAgICAg
ICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDEsIGxlbihrZXkpIC0gMSkKLSAgICAgICAgICAgIGtl
eSA9IGtleVswOnBvc10gKyAnICcgKyBrZXlbcG9zOl0KLSAgICAgICAgcmV0dXJuIG51bWJlciwg
a2V5Ci0KLSAgICBkZWYgX2dlbmVyYXRlX2tleTMoc2VsZik6Ci0gICAgICAgICMgNC4xIDI2LiBs
ZXQgL2tleTMvIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChv
cgotICAgICAgICAjIGVxdWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2Rl
ZCBpbiBhIGJpZy1lbmRpYW4gb3JkZXIpLgotICAgICAgICByZXR1cm4gJycuam9pbihbY2hyKHJh
bmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBfIGluIHhyYW5nZSg4KV0pCi0KLQotY2xhc3MgV2Vi
U29ja2V0SGl4aWU3NUhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBoYW5kc2hh
a2UgcHJvY2Vzc29yIGZvciBJRVRGIEhpeGllIDc1LiIiIgotCi0gICAgX0VYUEVDVEVEX1JFU1BP
TlNFID0gKAotICAgICAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNo
YWtlXHJcbicgKwotICAgICAgICBfVVBHUkFERV9IRUFERVJfSElYSUU3NSArCi0gICAgICAgIF9D
T05ORUNUSU9OX0hFQURFUikKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgIGRlZiBfc2tpcF9oZWFkZXJzKHNlbGYp
OgotICAgICAgICB0ZXJtaW5hdG9yID0gJ1xyXG5cclxuJwotICAgICAgICBwb3MgPSAwCi0gICAg
ICAgIHdoaWxlIHBvcyA8IGxlbih0ZXJtaW5hdG9yKToKLSAgICAgICAgICAgIHJlY2VpdmVkID0g
cmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiByZWNlaXZlZCA9
PSB0ZXJtaW5hdG9yW3Bvc106Ci0gICAgICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgICAg
IGVsaWYgcmVjZWl2ZWQgPT0gdGVybWluYXRvclswXToKLSAgICAgICAgICAgICAgICBwb3MgPSAx
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBvcyA9IDAKLQotICAgIGRlZiBo
YW5kc2hha2Uoc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0K
LSAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMucmVzb3Vy
Y2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVxdWVz
dC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwo
cmVxdWVzdF9saW5lKQotCi0gICAgICAgIGhlYWRlcnMgPSBfVVBHUkFERV9IRUFERVJfSElYSUU3
NSArIF9DT05ORUNUSU9OX0hFQURFUgotICAgICAgICBoZWFkZXJzICs9IF9mb3JtYXRfaG9zdF9o
ZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
dXNlX3RscykKLSAgICAgICAgaGVhZGVycyArPSBfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25z
Lm9yaWdpbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBy
ZXF1ZXN0IGhlYWRlcnM6ICVyJywgaGVhZGVycykKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRh
bGwoaGVhZGVycykKLQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbCgnXHJcbicpCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCcp
Ci0KLSAgICAgICAgZm9yIGV4cGVjdGVkX2NoYXIgaW4gV2ViU29ja2V0SGl4aWU3NUhhbmRzaGFr
ZS5fRVhQRUNURURfUkVTUE9OU0U6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgZXhwZWN0ZWRfY2hhciAhPSByZWNl
aXZlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0hhbmRzaGFrZSBmYWlsdXJl
JykKLSAgICAgICAgIyBXZSBjdXQgY29ybmVycyBhbmQgc2tpcCBvdGhlciBoZWFkZXJzLgotICAg
ICAgICBzZWxmLl9za2lwX2hlYWRlcnMoKQotCi0KLWNsYXNzIFdlYlNvY2tldFN0cmVhbShvYmpl
Y3QpOgotICAgICIiIkZyYW1lIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAo
UkZDIDY0NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tldCwgaGFuZHNoYWtl
KToKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFuZHNoYWtlCi0gICAgICAgIHNlbGYuX3Nv
Y2tldCA9IHNvY2tldAotCi0gICAgICAgICMgRmlsdGVycyBhcHBsaWVkIHRvIGFwcGxpY2F0aW9u
IGRhdGEgcGFydCBvZiBkYXRhIGZyYW1lcy4KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVf
ZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgPSBOb25l
Ci0KLSAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlLl9vcHRpb25zLnVzZV9kZWZsYXRlX2ZyYW1l
OgotICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyID0gKAotICAgICAgICAg
ICAgICAgIHV0aWwuX1JGQzE5NzlEZWZsYXRlcihOb25lLCBGYWxzZSkpCi0gICAgICAgICAgICBz
ZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgPSB1dGlsLl9SRkMxOTc5SW5mbGF0ZXIoKQotCi0g
ICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgZGVmIF9tYXNrX2h5Ymkoc2Vs
Ziwgcyk6Ci0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IG9zLnVyYW5kb20gZG9lcyBvcGVuL3Jl
YWQvY2xvc2UgZm9yIGV2ZXJ5IGNhbGwuIElmCi0gICAgICAgICMgcGVyZm9ybWFuY2UgbWF0dGVy
cywgY2hhbmdlIHRoaXMgdG8gc29tZSBsaWJyYXJ5IGNhbGwgdGhhdCBnZW5lcmF0ZXMKLSAgICAg
ICAgIyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvIHJhbmRvbSBudW1iZXIgc2VxdWVu
Y2UuCi0gICAgICAgIG1hc2tpbmdfbm9uY2UgPSBvcy51cmFuZG9tKDQpCi0gICAgICAgIHJlc3Vs
dCA9IFttYXNraW5nX25vbmNlXQotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgZm9yIGMgaW4g
czoKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hyKG9yZChjKSBeIG9yZChtYXNraW5nX25v
bmNlW2NvdW50XSkpKQotICAgICAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGxlbihtYXNr
aW5nX25vbmNlKQotICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCi0KLSAgICBkZWYgc2Vu
ZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKLSAgICAgICAg
c2VsZi5fc29ja2V0LnNlbmRhbGwoaGVhZGVyICsgc2VsZi5fbWFza19oeWJpKGJvZHkpKQotCi0g
ICAgZGVmIHNlbmRfZGF0YShzZWxmLCBwYXlsb2FkLCBmcmFtZV90eXBlLCBlbmQ9VHJ1ZSwgbWFz
az1UcnVlLAotICAgICAgICAgICAgICAgICAgcnN2MT0wLCByc3YyPTAsIHJzdjM9MCk6Ci0gICAg
ICAgIGlmIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHBheWxvYWQgPSBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHBheWxvYWQp
Ci0KLSAgICAgICAgaWYgc2VsZi5fZnJhZ21lbnRlZDoKLSAgICAgICAgICAgIG9wY29kZSA9IE9Q
Q09ERV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wY29kZSA9IGZy
YW1lX3R5cGUKLQotICAgICAgICBpZiBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVk
ID0gRmFsc2UKLSAgICAgICAgICAgIGZpbiA9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuX2ZyYWdtZW50ZWQgPSBUcnVlCi0gICAgICAgICAgICBmaW4gPSAwCi0KLSAgICAgICAg
aWYgc2VsZi5faGFuZHNoYWtlLl9vcHRpb25zLnVzZV9kZWZsYXRlX2ZyYW1lOgotICAgICAgICAg
ICAgcnN2MSA9IDEKLQotICAgICAgICBpZiBtYXNrOgotICAgICAgICAgICAgbWFza19iaXQgPSAx
IDw8IDcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hc2tfYml0ID0gMAotCi0gICAgICAg
IGhlYWRlciA9IGNocihmaW4gPDwgNyB8IHJzdjEgPDwgNiB8IHJzdjIgPDwgNSB8IHJzdjMgPDwg
NCB8IG9wY29kZSkKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKLSAgICAg
ICAgaWYgcGF5bG9hZF9sZW5ndGggPD0gMTI1OgotICAgICAgICAgICAgaGVhZGVyICs9IGNociht
YXNrX2JpdCB8IHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBlbGlmIHBheWxvYWRfbGVuZ3RoIDwg
MSA8PCAxNjoKLSAgICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCAxMjYpICsgc3Ry
dWN0LnBhY2soJyFIJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsaWYgcGF5bG9hZF9sZW5n
dGggPCAxIDw8IDYzOgotICAgICAgICAgICAgaGVhZGVyICs9IGNocihtYXNrX2JpdCB8IDEyNykg
KyBzdHJ1Y3QucGFjaygnIVEnLCBwYXlsb2FkX2xlbmd0aCkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVG9vIGxvbmcgcGF5bG9hZCAoJWQgYnl0ZSknICUgcGF5
bG9hZF9sZW5ndGgpCi0gICAgICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBwYXlsb2FkID0gc2Vs
Zi5fbWFza19oeWJpKHBheWxvYWQpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRl
ciArIHBheWxvYWQpCi0KLSAgICBkZWYgc2VuZF9iaW5hcnkoc2VsZiwgcGF5bG9hZCwgZW5kPVRy
dWUsIG1hc2s9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2VuZF9kYXRhKHBheWxvYWQsIE9QQ09ERV9C
SU5BUlksIGVuZCwgbWFzaykKLQotICAgIGRlZiBzZW5kX3RleHQoc2VsZiwgcGF5bG9hZCwgZW5k
PVRydWUsIG1hc2s9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2VuZF9kYXRhKHBheWxvYWQuZW5jb2Rl
KCd1dGYtOCcpLCBPUENPREVfVEVYVCwgZW5kLCBtYXNrKQotCi0gICAgZGVmIF9hc3NlcnRfcmVj
ZWl2ZV9kYXRhKHNlbGYsIHBheWxvYWQsIG9wY29kZSwgZmluLCByc3YxLCByc3YyLCByc3YzKToK
LSAgICAgICAgKGFjdHVhbF9maW4sIGFjdHVhbF9yc3YxLCBhY3R1YWxfcnN2MiwgYWN0dWFsX3Jz
djMsIGFjdHVhbF9vcGNvZGUsCi0gICAgICAgICBwYXlsb2FkX2xlbmd0aCkgPSByZWFkX2ZyYW1l
X2hlYWRlcihzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgaWYgYWN0dWFsX29wY29kZSAhPSBvcGNv
ZGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhw
ZWN0ZWQgb3Bjb2RlOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAgICAgICAg
ICAgICAgKG9wY29kZSwgYWN0dWFsX29wY29kZSkpCi0KLSAgICAgICAgaWYgYWN0dWFsX2ZpbiAh
PSBmaW46Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1Vu
ZXhwZWN0ZWQgZmluOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAgICAgICAg
ICAgICAgKGZpbiwgYWN0dWFsX2ZpbikpCi0KLSAgICAgICAgaWYgcnN2MSBpcyBOb25lOgotICAg
ICAgICAgICAgcnN2MSA9IDAKLSAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZS5fb3B0aW9u
cy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgICAgICByc3YxID0gMQotCi0gICAgICAg
IGlmIHJzdjIgaXMgTm9uZToKLSAgICAgICAgICAgIHJzdjIgPSAwCi0KLSAgICAgICAgaWYgcnN2
MyBpcyBOb25lOgotICAgICAgICAgICAgcnN2MyA9IDAKLQotICAgICAgICBpZiBhY3R1YWxfcnN2
MSAhPSByc3YxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAg
ICAgICAgICAgICAocnN2MSwgYWN0dWFsX3JzdjEpKQotCi0gICAgICAgIGlmIGFjdHVhbF9yc3Yy
ICE9IHJzdjI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAg
ICAgICAgICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCi0KLSAgICAgICAgaWYgYWN0dWFsX3JzdjMg
IT0gcnN2MzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
VW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAg
ICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKLQotICAgICAgICByZWNlaXZlZCA9IHJlY2Vp
dmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICBpZiBzZWxm
Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZWNlaXZl
ZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocmVjZWl2ZWQpCi0KLSAgICAg
ICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Ci0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5bG9hZCBsZW5ndGg6ICVk
IChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAobGVuKHBheWxv
YWQpLCBsZW4ocmVjZWl2ZWQpKSkKLQotICAgICAgICBpZiBwYXlsb2FkICE9IHJlY2VpdmVkOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVk
IHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAg
ICAocGF5bG9hZCwgcmVjZWl2ZWQpKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2JpbmFyeShz
ZWxmLCBwYXlsb2FkLCBvcGNvZGU9T1BDT0RFX0JJTkFSWSwgZmluPTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByc3YxPU5vbmUsIHJzdjI9Tm9uZSwgcnN2Mz1Ob25lKToKLSAgICAg
ICAgc2VsZi5fYXNzZXJ0X3JlY2VpdmVfZGF0YShwYXlsb2FkLCBvcGNvZGUsIGZpbiwgcnN2MSwg
cnN2MiwgcnN2MykKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsIHBheWxvYWQs
IG9wY29kZT1PUENPREVfVEVYVCwgZmluPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnN2MT1Ob25lLCByc3YyPU5vbmUsIHJzdjM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9y
ZWNlaXZlX2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjIsIHJzdjMpCi0KLSAgICBkZWYg
X2J1aWxkX2Nsb3NlX2ZyYW1lKHNlbGYsIGNvZGUsIHJlYXNvbiwgbWFzayk6Ci0gICAgICAgIGZy
YW1lID0gY2hyKDEgPDwgNyB8IE9QQ09ERV9DTE9TRSkKLQotICAgICAgICBpZiBjb2RlIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgcmVh
c29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYm9keSA9ICcn
Ci0gICAgICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBmcmFtZSArPSBjaHIoMSA8PCA3IHwgbGVu
KGJvZHkpKSArIHNlbGYuX21hc2tfaHliaShib2R5KQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZnJhbWUgKz0gY2hyKGxlbihib2R5KSkgKyBib2R5Ci0gICAgICAgIHJldHVybiBmcmFtZQot
Ci0gICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoCi0gICAgICAgICAgICBzZWxmLl9idWlsZF9jbG9zZV9mcmFtZShjb2Rl
LCByZWFzb24sIFRydWUpKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNv
ZGUsIHJlYXNvbik6Ci0gICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gc2VsZi5fYnVpbGRfY2xvc2Vf
ZnJhbWUoY29kZSwgcmVhc29uLCBGYWxzZSkKLSAgICAgICAgYWN0dWFsX2ZyYW1lID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihleHBlY3RlZF9mcmFtZSkpCi0gICAgICAgIGlmIGFj
dHVhbF9mcmFtZSAhPSBleHBlY3RlZF9mcmFtZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBjbG9zZSBmcmFtZTogJXIgKGV4cGVjdGVk
KSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZF9mcmFtZSwgYWN0
dWFsX2ZyYW1lKSkKLQotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IaXhpZTc1KG9iamVjdCk6Ci0g
ICAgIiIiRnJhbWUgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24g
SGl4aWUgNzUgYW5kIEh5QmkgMDAuCi0gICAgIiIiCi0KLSAgICBfQ0xPU0VfRlJBTUUgPSAnXHhm
Zlx4MDAnCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCB1bnVzZWRfaGFuZHNoYWtl
KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICBkZWYgc2VuZF9mcmFtZV9v
Zl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKLSAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoaGVhZGVyICsgYm9keSkKLQotICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgcGF5
bG9hZCwgdW51c2VkX2ZyYW1lX3R5cGVtLCB1bnVzZWRfZW5kLCB1bnVzZWRfbWFzayk6Ci0gICAg
ICAgIGZyYW1lID0gJycuam9pbihbJ1x4MDAnLCBwYXlsb2FkLCAnXHhmZiddKQotICAgICAgICBz
ZWxmLl9zb2NrZXQuc2VuZGFsbChmcmFtZSkKLQotICAgIGRlZiBzZW5kX2JpbmFyeShzZWxmLCB1
bnVzZWRfcGF5bG9hZCwgdW51c2VkX2VuZCwgdW51c2VkX21hc2spOgotICAgICAgICBwYXNzCi0K
LSAgICBkZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxvYWQsIHVudXNlZF9lbmQsIHVudXNlZF9tYXNr
KToKLSAgICAgICAgZW5jb2RlZF9wYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ3V0Zi04JykKLSAg
ICAgICAgZnJhbWUgPSAnJy5qb2luKFsnXHgwMCcsIGVuY29kZWRfcGF5bG9hZCwgJ1x4ZmYnXSkK
LSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZnJhbWUpCi0KLSAgICBkZWYgYXNzZXJ0X3Jl
Y2VpdmVfYmluYXJ5KHNlbGYsIHBheWxvYWQsIG9wY29kZT1PUENPREVfQklOQVJZLCBmaW49MSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTApOgot
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0JpbmFyeSBmcmFtZSBpcyBub3Qgc3VwcG9ydGVkIGlu
IGhpeGllNzUnKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwgcGF5bG9hZCk6
Ci0gICAgICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0KLSAg
ICAgICAgaWYgcmVjZWl2ZWQgIT0gJ1x4MDAnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGZyYW1lIHR5cGU6ICVkIChleHBlY3RlZCkg
dnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAoMCwgb3JkKHJlY2VpdmVkKSkpCi0K
LSAgICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgbGVuKHBheWxv
YWQpICsgMSkKLSAgICAgICAgaWYgcmVjZWl2ZWRbLTFdICE9ICdceGZmJzoKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVGVybWluYXRpb24gZXhwZWN0ZWQ6
IDB4ZmYgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIHJlY2Vp
dmVkKQotCi0gICAgICAgIGlmIHJlY2VpdmVkWzA6LTFdICE9IHBheWxvYWQ6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5bG9hZDog
JXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChwYXlsb2Fk
LCByZWNlaXZlZFswOi0xXSkpCi0KLSAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjb2RlLCByZWFz
b24pOgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9DTE9TRV9GUkFNRSkKLQot
ICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCB1bnVzZWRfY29kZSwgdW51c2VkX3Jl
YXNvbik6Ci0gICAgICAgIGNsb3NpbmcgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgbGVu
KHNlbGYuX0NMT1NFX0ZSQU1FKSkKLSAgICAgICAgaWYgY2xvc2luZyAhPSBzZWxmLl9DTE9TRV9G
UkFNRToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkblwndCByZWNlaXZlIGNsb3Np
bmcgaGFuZHNoYWtlJykKLQotCi1jbGFzcyBDbGllbnRPcHRpb25zKG9iamVjdCk6Ci0gICAgIiIi
SG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIENsaWVudCBvYmplY3QuIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCi0gICAg
ICAgIHNlbGYuc2VydmVyX2hvc3QgPSAnJwotICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCi0gICAg
ICAgIHNlbGYucmVzb3VyY2UgPSAnJwotICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEKLSAg
ICAgICAgc2VsZi5zb2NrZXRfdGltZW91dCA9IDEwMDAKLSAgICAgICAgc2VsZi51c2VfdGxzID0g
RmFsc2UKLSAgICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KLSAgICAgICAgIyBFbmFibGUgZGVm
bGF0ZS1hcHBsaWNhdGlvbi1kYXRhLgotICAgICAgICBzZWxmLnVzZV9kZWZsYXRlX2ZyYW1lID0g
RmFsc2UKLSAgICAgICAgIyBFbmFibGUgbXV4Ci0gICAgICAgIHNlbGYudXNlX211eCA9IEZhbHNl
Ci0KLSAgICBkZWYgZW5hYmxlX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAgIHNlbGYudXNl
X2RlZmxhdGVfZnJhbWUgPSBUcnVlCi0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBlbmQoX0RF
RkxBVEVfRlJBTUVfRVhURU5TSU9OKQotCi0gICAgZGVmIGVuYWJsZV9tdXgoc2VsZik6Ci0gICAg
ICAgIHNlbGYudXNlX211eCA9IFRydWUKLSAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChf
TVVYX0VYVEVOU0lPTikKLQotCi1kZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9yZXRyeShob3N0LCBw
b3J0LCB0aW1lb3V0LCB1c2VfdGxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
cnk9MTAsIHNsZWVwX3NlYz0wLjEpOgotICAgIHJldHJ5X2NvdW50ID0gMAotICAgIHdoaWxlIHJl
dHJ5X2NvdW50IDwgcmV0cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQu
c29ja2V0KCkKLSAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAg
cy5jb25uZWN0KChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgIGlmIHVzZV90bHM6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIF9UTFNTb2NrZXQocykKLSAgICAgICAgICAgIHJldHVybiBzCi0gICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0g
ZXJybm8uRUNPTk5SRUZVU0VEOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJldHJ5X2NvdW50ID0gcmV0cnlfY291bnQgKyAxCi0gICAg
ICAgICAgICAgICAgdGltZS5zbGVlcChzbGVlcF9zZWMpCi0KLSAgICByZXR1cm4gTm9uZQotCi0K
LWNsYXNzIENsaWVudChvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBjbGllbnQuIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgaGFuZHNoYWtlLCBzdHJlYW1fY2xhc3MpOgot
ICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAg
ICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9zb2NrZXQgPSBOb25l
Ci0KLSAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFuZHNoYWtlCi0gICAgICAgIHNlbGYuX3N0
cmVhbV9jbGFzcyA9IHN0cmVhbV9jbGFzcwotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3NvY2tldCA9IGNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoCi0gICAgICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc29ja2V0
X3RpbWVvdXQsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKQotCi0gICAg
ICAgIHNlbGYuX2hhbmRzaGFrZS5oYW5kc2hha2Uoc2VsZi5fc29ja2V0KQotCi0gICAgICAgIHNl
bGYuX3N0cmVhbSA9IHNlbGYuX3N0cmVhbV9jbGFzcyhzZWxmLl9zb2NrZXQsIHNlbGYuX2hhbmRz
aGFrZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3RhYmxpc2hl
ZCcpCi0KLSAgICBkZWYgc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVy
LCBib2R5KToKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5
dGVzKGhlYWRlciwgYm9keSkKLQotICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwg
ZW5kPVRydWUsIGJpbmFyeT1GYWxzZSwgcmF3PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAg
bWFzaz1UcnVlKToKLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LnNlbmRfYmluYXJ5KG1lc3NhZ2UsIGVuZCwgbWFzaykKLSAgICAgICAgZWxpZiByYXc6Ci0gICAg
ICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9kYXRhKG1lc3NhZ2UsIE9QQ09ERV9URVhULCBlbmQs
IG1hc2spCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF90ZXh0
KG1lc3NhZ2UsIGVuZCwgbWFzaykKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZShzZWxmLCBwYXls
b2FkLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBzZWxm
Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHBheWxvYWQpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfdGV4dChwYXlsb2FkKQotCi0g
ICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNv
bj0nJyk6Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLQot
ICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xP
U1VSRSwgcmVhc29uPScnKToKLSAgICAgICAgc2VsZi5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2Ns
b3NlKGNvZGUsIHJlYXNvbikKLQotICAgIGRlZiBjbG9zZV9zb2NrZXQoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2Vk
KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZWFkX2RhdGEgPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xv
c2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnKSA9PSAwOgotICAgICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVycm9yX251
bWJlciwgbWVzc2FnZSA9IGUKLSAgICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VD
T05OUkVTRVQnLCAnV1NBRUNPTk5SRVNFVCddOgotICAgICAgICAgICAgICAgICAgICBpZiAoZXJy
b3JfbmFtZSBpbiBkaXIoZXJybm8pIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jf
bnVtYmVyID09IGdldGF0dHIoZXJybm8sIGVycm9yX25hbWUpKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHJhaXNl
IGUKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nvbm5l
Y3Rpb24gaXMgbm90IGNsb3NlZCAoUmVhZDogJXIpJyAlIHJlYWRfZGF0YSkKLQotCi1kZWYgY3Jl
YXRlX2NsaWVudChvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25z
LCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbSkKLQotCi1kZWYg
Y3JlYXRlX2NsaWVudF9oeWJpMDAob3B0aW9ucyk6Ci0gICAgcmV0dXJuIENsaWVudCgKLSAgICAg
ICAgb3B0aW9ucywKLSAgICAgICAgV2ViU29ja2V0SHliaTAwSGFuZHNoYWtlKG9wdGlvbnMsICcw
JyksCi0gICAgICAgIFdlYlNvY2tldFN0cmVhbUhpeGllNzUpCi0KLQotZGVmIGNyZWF0ZV9jbGll
bnRfaGl4aWU3NShvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25z
LCBXZWJTb2NrZXRIaXhpZTc1SGFuZHNoYWtlKG9wdGlvbnMpLCBXZWJTb2NrZXRTdHJlYW1IaXhp
ZTc1KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2VuZHRv
ZW5kX3dpdGhfZXh0ZXJuYWxfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2VuZHRvZW5kX3dpdGhfZXh0
ZXJuYWxfc2VydmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2Y4NmZkYjQx
NjMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvZW5kdG9lbmRfd2l0aF9leHRlcm5hbF9z
ZXJ2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIS91c3IvYmluL2VudiBw
eXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3QgZm9yIGVuZC10by1lbmQgd2l0
aCBleHRlcm5hbCBzZXJ2ZXIuCi0KLVRoaXMgdGVzdCBpcyBub3QgcnVuIGJ5IHJ1bl9hbGwucHkg
YmVjYXVzZSBpdCByZXF1aXJlcyBzb21lIHByZXBhcmF0aW9ucy4KLUlmIHlvdSB3b3VsZCBsaWtl
IHRvIHJ1biB0aGlzIHRlc3QgY29ycmVjdGx5LCBsYXVuY2ggQXBhY2hlIHdpdGggbW9kX3B5dGhv
bgotYW5kIG1vZF9weXdlYnNvY2tldCBtYW51YWxseS4gSW4gYWRkaXRpb24sIHlvdSBzaG91bGQg
cGFzcyBhbGxvd19kcmFmdDc1IG9wdGlvbgotYW5kIGV4YW1wbGUgcGF0aCBhcyBoYW5kbGVyX3Nj
YW4gb3B0aW9uIGFuZCBBcGFjaGUncyBEb2N1bWVudFJvb3QuCi0iIiIKLQotCi1pbXBvcnQgb3B0
cGFyc2UKLWltcG9ydCBzeXMKLWltcG9ydCB0ZXN0LnRlc3RfZW5kdG9lbmQKLWltcG9ydCB1bml0
dGVzdAotCi0KLV9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCA9IDgwCi0KLQotY2xhc3MgRW5kVG9F
bmRUZXN0V2l0aEV4dGVybmFsU2VydmVyKHRlc3QudGVzdF9lbmR0b2VuZC5FbmRUb0VuZFRlc3Qp
OgotICAgIHBhc3MKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBv
cnQnLCBkZXN0PSdwb3J0JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PV9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdleHRlcm5hbCB0ZXN0IHNlcnZlciBwb3J0LicpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgdGVzdC50ZXN0X2VuZHRvZW5kLl91c2VfZXh0ZXJuYWxf
c2VydmVyID0gVHJ1ZQotICAgIHRlc3QudGVzdF9lbmR0b2VuZC5fZXh0ZXJuYWxfc2VydmVyX3Bv
cnQgPSBvcHRpb25zLnBvcnQKLQotICAgIHVuaXR0ZXN0Lm1haW4oYXJndj1bc3lzLmFyZ3ZbMF1d
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3QvbW9jay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmZmNh
YzQ4ZGM0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwyMjEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTW9ja3MgZm9yIHRl
c3RpbmcuCi0iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFt
IGltcG9ydCBTdHJlYW1IaXhpZTc1Ci0KLQotY2xhc3MgX01vY2tDb25uQmFzZShvYmplY3QpOgot
ICAgICIiIkJhc2UgY2xhc3Mgb2YgbW9ja3MgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4u
Ci0KLSAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGEg
KG1vY2spIG1wX2Nvbm4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQotICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gJ2Zh
a2VfYWRkcmVzcycKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiT3Zl
cnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi53cml0ZS4iIiIKLQotICAgICAgICBzZWxm
Ll93cml0ZV9kYXRhLmFwcGVuZChkYXRhKQotCi0gICAgZGVmIHdyaXR0ZW5fZGF0YShzZWxmKToK
LSAgICAgICAgIiIiR2V0IGJ5dGVzIHdyaXR0ZW4gdG8gdGhpcyBtb2NrLiIiIgotCi0gICAgICAg
IHJldHVybiAnJy5qb2luKHNlbGYuX3dyaXRlX2RhdGEpCi0KLQotY2xhc3MgTW9ja0Nvbm4oX01v
Y2tDb25uQmFzZSk6Ci0gICAgIiIiTW9jayBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4K
LQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQg
ZnJvbSBhIChtb2NrKSBtcF9jb25uIGFzCi0gICAgd2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdy
aXR0ZW4gdG8gaXQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZF9kYXRh
KToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB3aGVu
IHJlYWQqIG1ldGhvZHMgYXJlCi0gICAgICAgICAgICBjYWxsZWQuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF9k
YXRhID0gcmVhZF9kYXRhCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gMAotCi0gICAgZGVmIHJl
YWRsaW5lKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9j
b25uLnJlYWRsaW5lLiIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxm
Ll9yZWFkX2RhdGEpOgotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIGVuZF9pbmRleCA9
IHNlbGYuX3JlYWRfZGF0YS5maW5kKCdcbicsIHNlbGYuX3JlYWRfcG9zKSArIDEKLSAgICAgICAg
aWYgbm90IGVuZF9pbmRleDoKLSAgICAgICAgICAgIGVuZF9pbmRleCA9IGxlbihzZWxmLl9yZWFk
X2RhdGEpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VwX3RvKGVuZF9pbmRleCkKLQotICAg
IGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24u
YXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBs
ZW4oc2VsZi5fcmVhZF9kYXRhKToKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbmRf
aW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSksIHNlbGYuX3JlYWRfcG9zICsgbGVuZ3Ro
KQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90byhlbmRfaW5kZXgpCi0KLSAgICBkZWYg
X3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToKLSAgICAgICAgbGluZSA9IHNlbGYuX3JlYWRf
ZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0g
ZW5kX2luZGV4Ci0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29u
bihfTW9ja0Nvbm5CYXNlKToKLSAgICAiIiJCbG9ja2luZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFw
YWNoZS5tcF9jb25uLgotCi0gICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBz
aG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKLSAgICB3ZWxsIGFzIHRvIGNo
ZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KLSAgICBDYWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMg
d2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBhdmFpbGFibGUuCi0gICAgIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2Vs
ZikKLSAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAgICBkZWYgcmVhZGxp
bmUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4u
cmVhZGxpbmUuIiIiCi0gICAgICAgIGxpbmUgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAg
ICAgICAgICAgYyA9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgICAgICBsaW5lICs9IGMKLSAg
ICAgICAgICAgIGlmIGMgPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotCi0g
ICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhv
bi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgotCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBm
b3IgdW51c2VkIGluIHJhbmdlKGxlbmd0aCk6Ci0gICAgICAgICAgICBkYXRhICs9IHNlbGYuX3F1
ZXVlLmdldCgpCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgcHV0X2J5dGVzKHNlbGYs
IGJ5dGVzKToKLSAgICAgICAgIiIiUHV0IGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSB0aGlzIG1vY2su
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGJ5dGVzOiBieXRlcyB0byBiZSByZWFkLgot
ICAgICAgICAiIiIKLQotICAgICAgICBmb3IgYnl0ZSBpbiBieXRlczoKLSAgICAgICAgICAgIHNl
bGYuX3F1ZXVlLnB1dChieXRlKQotCi0KLWNsYXNzIE1vY2tUYWJsZShkaWN0KToKLSAgICAiIiJN
b2NrIHRhYmxlLgotCi0gICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiBtcF90YWJsZS4gTm90ZSB0
aGF0IG9ubHkgdGhlIG1ldGhvZHMgdXNlZCBieQotICAgIHRlc3RzIGFyZSBvdmVycmlkZGVuLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvcHlfZnJvbT17fSk6Ci0gICAgICAg
IGlmIGlzaW5zdGFuY2UoY29weV9mcm9tLCBkaWN0KToKLSAgICAgICAgICAgIGNvcHlfZnJvbSA9
IGNvcHlfZnJvbS5pdGVtcygpCi0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvcHlfZnJvbToK
LSAgICAgICAgICAgIHNlbGYuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKLQotICAgIGRlZiBfX2dl
dGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxm
KS5fX2dldGl0ZW1fXyhrZXkubG93ZXIoKSkKLQotICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBr
ZXksIHZhbHVlKToKLSAgICAgICAgc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX3NldGl0ZW1fXyhr
ZXkubG93ZXIoKSwgdmFsdWUpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmX3ZhbHVlPU5v
bmUpOgotICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5nZXQoa2V5Lmxvd2Vy
KCksIGRlZl92YWx1ZSkKLQotCi1jbGFzcyBNb2NrUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1v
Y2sgcmVxdWVzdC4KLQotICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmk9Tm9uZSwgaGVhZGVyc19pbj17fSwgY29u
bmVjdGlvbj1Ob25lLCBtZXRob2Q9J0dFVCcsCi0gICAgICAgICAgICAgICAgIHByb3RvY29sPSdI
VFRQLzEuMScsIGlzX2h0dHBzPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3Rh
bmNlLgotCi0gICAgICAgIEFyZ3VtZW50czoKLSAgICAgICAgICAgIHVyaTogVVJJIG9mIHRoZSBy
ZXF1ZXN0LgotICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVzdCBoZWFkZXJzLgotICAgICAg
ICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0aGUgcmVxdWVzdC4KLSAgICAg
ICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCi0gICAgICAgICAgICBpc19odHRwczogV2hl
dGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCi0KLSAgICAgICAgU2VlIHRoZSBkb2N1bWVu
dCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCi0gICAgICAgICIiIgotICAgICAg
ICBzZWxmLnVyaSA9IHVyaQotICAgICAgICBzZWxmLnVucGFyc2VkX3VyaSA9IHVyaQotICAgICAg
ICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0gICAgICAgIHNlbGYubWV0aG9kID0gbWV0
aG9kCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRl
cnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKLSAgICAgICAgIyBzZWxmLmlzX2h0dHBzXyBu
ZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBhdm9pZCBuYW1lCi0gICAgICAg
ICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlzIG5hbWVkIGFzIHN1Y2guCi0g
ICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKLSAgICAgICAgc2VsZi53c19zdHJlYW0g
PSBTdHJlYW1IaXhpZTc1KHNlbGYsIFRydWUpCi0gICAgICAgIHNlbGYud3NfY2xvc2VfY29kZSA9
IE5vbmUKLSAgICAgICAgc2VsZi53c19jbG9zZV9yZWFzb24gPSBOb25lCi0gICAgICAgIHNlbGYu
d3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQkkwMAotICAgICAgICBzZWxmLndzX2RlZmxh
dGUgPSBGYWxzZQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4g
d2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuIiIiCi0gICAgICAgIHJldHVybiBzZWxm
LmlzX2h0dHBzXwotCi0KLWNsYXNzIE1vY2tEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9j
ayBmb3IgZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgc2VsZi5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVkID0gRmFsc2UKLQotICAgIGRl
ZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgc2VsZi5k
b19leHRyYV9oYW5kc2hha2VfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEo
c2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L211eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzA0ZTdmYzk1ZDNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L211eF9jbGll
bnRfZm9yX3Rlc3RpbmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgY2xp
ZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcgbXV4IGV4dGVuc2lvbi4KLQotVGhpcyBjb2RlIHNob3Vs
ZCBiZSBpbmRlcGVuZGVudCBmcm9tIG1vZF9weXdlYnNvY2tldC4gU2VlIHRoZSBjb21tZW50IG9m
Ci1jbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0KLU5PVEU6IFRoaXMgY29kZSBpcyBmYXIgZnJvbSBy
b2J1c3QgbGlrZSBjbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0iIiIKLQotCi0KLWltcG9ydCBRdWV1
ZQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgZW1haWwKLWltcG9y
dCBlbWFpbC5wYXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IG9zCi1p
bXBvcnQgcmFuZG9tCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgdGhyZWFk
aW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLWZyb20gdGVzdCBpbXBv
cnQgY2xpZW50X2Zvcl90ZXN0aW5nCi0KLQotX0NPTlRST0xfQ0hBTk5FTF9JRCA9IDAKLV9ERUZB
VUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QgPSAw
Ci1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA9IDEKLV9NVVhfT1BDT0RFX0ZMT1df
Q09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMKLV9NVVhfT1BDT0RFX05F
V19DSEFOTkVMX1NMT1QgPSA0Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jazoKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgb3Bjb2RlKToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUKLQotCi1k
ZWYgX3BhcnNlX2hhbmRzaGFrZV9yZXNwb25zZShyZXNwb25zZSk6Ci0gICAgc3RhdHVzX2xpbmUs
IGhlYWRlcl9saW5lcyA9IHJlc3BvbnNlLnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdvcmRzID0g
c3RhdHVzX2xpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbih3b3JkcykgPCAzOgotICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdCYWQgU3RhdHVzLUxpbmUgc3ludGF4ICVyJyAlIHN0YXR1c19saW5l
KQotICAgIFt2ZXJzaW9uLCByZXNwb25zZV9jb2RlXSA9IHdvcmRzWzoyXQotICAgIGlmIHZlcnNp
b24gIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlc3BvbnNl
IHZlcnNpb24gJXInICUgdmVyc2lvbikKLQotICAgIGlmIHJlc3BvbnNlX2NvZGUgIT0gJzEwMSc6
Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCByZXNwb25zZSBjb2RlICVyICcgJSByZXNw
b25zZV9jb2RlKQotICAgIGhlYWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKCkucGFyc2VzdHIo
aGVhZGVyX2xpbmVzKQotICAgIHJldHVybiBoZWFkZXJzCi0KLQotZGVmIF9wYXJzZV9jaGFubmVs
X2lkKGRhdGEsIG9mZnNldD0wKToKLSAgICBsZW5ndGggPSBsZW4oZGF0YSkKLSAgICByZW1haW5p
bmcgPSBsZW5ndGggLSBvZmZzZXQKLQotICAgIGlmIHJlbWFpbmluZyA8PSAwOgotICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vIGNoYW5uZWwgaWQgZm91bmQnKQotCi0gICAgY2hhbm5lbF9pZCA9
IG9yZChkYXRhW29mZnNldF0pCi0gICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAgaWYgY2hh
bm5lbF9pZCAmIDB4ZTAgPT0gMHhlMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgNDoKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAg
ICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0Om9mZnNldCs0XSlbMF0gJiAweDFmZmZmZmZmCi0g
ICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gNAotICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAg
PT0gMHhjMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgMzoKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgIGNoYW5uZWxfaWQg
PSAoKChjaGFubmVsX2lkICYgMHgxZikgPDwgMTYpICsKLSAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QudW5wYWNrKCchSCcsIGRhdGFbb2Zmc2V0KzE6b2Zmc2V0KzNdKVswXSkKLSAgICAgICAg
Y2hhbm5lbF9pZF9sZW5ndGggPSAzCi0gICAgZWxpZiBjaGFubmVsX2lkICYgMHg4MCA9PSAweDgw
OgotICAgICAgICBpZiByZW1haW5pbmcgPCAyOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9IHN0cnVj
dC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQ6b2Zmc2V0KzJdKVswXSAmIDB4M2ZmZgotICAgICAg
ICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKLQotICAgIHJldHVybiBjaGFubmVsX2lkLCBjaGFubmVs
X2lkX2xlbmd0aAotCi0KLWRlZiBfcGFyc2VfbnVtYmVyKGRhdGEsIG9mZnNldD0wKToKLSAgICBm
aXJzdF9ieXRlID0gb3JkKGRhdGFbb2Zmc2V0XSkKLSAgICBpZiAoZmlyc3RfYnl0ZSAmIDB4ODAp
ICE9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIE1TQiBvZiBudW1iZXIgZmllbGQg
bXVzdCBiZSB1bnNldCcpCi0gICAgZmlyc3RfYnl0ZSA9IGZpcnN0X2J5dGUgJiAweDdmCi0gICAg
aWYgZmlyc3RfYnl0ZSA9PSAxMjc6Ci0gICAgICAgIGlmIG9mZnNldCArIDkgPiBsZW4oZGF0YSk6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAgICAgICAg
cmV0dXJuIHN0cnVjdC51bnBhY2soJyFRJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrOV0pWzBdLCA5
Ci0gICAgaWYgZmlyc3RfYnl0ZSA9PSAxMjY6Ci0gICAgICAgIGlmIG9mZnNldCArIDMgPiBsZW4o
ZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAg
ICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrM10p
WzBdLCAzCi0gICAgcmV0dXJuIGZpcnN0X2J5dGUsIDEKLQotCi1kZWYgX3BhcnNlX3NpemVfYW5k
X2NvbnRlbnRzKGRhdGEsIG9mZnNldD0wKToKLSAgICBzaXplLCBhZHZhbmNlID0gX3BhcnNlX251
bWJlcihkYXRhLCBvZmZzZXQpCi0gICAgc3RhcnRfcG9zaXRpb24gPSBvZmZzZXQgKyBhZHZhbmNl
Ci0gICAgZW5kX3Bvc2l0aW9uID0gc3RhcnRfcG9zaXRpb24gKyBzaXplCi0gICAgaWYgbGVuKGRh
dGEpIDwgZW5kX3Bvc2l0aW9uOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgc2l6
ZSBvZiBjb250cm9sIGJsb2NrICglZCA8ICVkKScgJSAoCi0gICAgICAgICAgICAgICAgbGVuKGRh
dGEpLCBlbmRfcG9zaXRpb24pKQotICAgIHJldHVybiBkYXRhW3N0YXJ0X3Bvc2l0aW9uOmVuZF9w
b3NpdGlvbl0sIHNpemUgKyBhZHZhbmNlCi0KLQotZGVmIF9wYXJzZV9jb250cm9sX2Jsb2Nrcyhk
YXRhKToKLSAgICBibG9ja3MgPSBbXQotICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAgIHBvcyA9
IDAKLQotICAgIHdoaWxlIHBvcyA8IGxlbmd0aDoKLSAgICAgICAgZmlyc3RfYnl0ZSA9IG9yZChk
YXRhW3Bvc10pCi0gICAgICAgIHBvcyArPSAxCi0gICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRl
ID4+IDUpICYgMHg3Ci0gICAgICAgIGJsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGUpCi0KLSAg
ICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBtb3JlIG9wY29kZQotICAgICAgICBpZiBvcGNv
ZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICBibG9j
ay5lbmNvZGUgPSBmaXJzdF9ieXRlICYgMwotICAgICAgICAgICAgYmxvY2sucmVqZWN0ZWQgPSAo
Zmlyc3RfYnl0ZSA+PiA0KSAmIDEKLQotICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9
IF9wYXJzZV9jaGFubmVsX2lkKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGJsb2NrLmNoYW5uZWxf
aWQgPSBjaGFubmVsX2lkCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotCi0gICAgICAgICAg
ICBlbmNvZGVkX2hhbmRzaGFrZSwgYWR2YW5jZSA9IF9wYXJzZV9zaXplX2FuZF9jb250ZW50cyhk
YXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSA9IGVuY29kZWRf
aGFuZHNoYWtlCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotICAgICAgICAgICAgYmxvY2tz
LmFwcGVuZChibG9jaykKLSAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9D
SEFOTkVMOgotICAgICAgICAgICAgYmxvY2subXV4X2Vycm9yID0gKGZpcnN0X2J5dGUgPj4gNCkg
JiAxCi0KLSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGFkdmFuY2UgPSBfcGFyc2VfY2hhbm5lbF9p
ZChkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAot
ICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLQotICAgICAgICAgICAgcmVhc29uLCBhZHZhbmNl
ID0gX3BhcnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGlmIGxl
bihyZWFzb24pID09IDA6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0gTm9uZQot
ICAgICAgICAgICAgICAgIGJsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgICAgICBlbGlm
IGxlbihyZWFzb24pID49IDI6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0gc3Ry
dWN0LnVucGFjaygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgICAgIGJsb2NrLmRy
b3BfbWVzc2FnZSA9IHJlYXNvblsyOl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIERyb3BDaGFubmVsJykKLSAgICAgICAgICAgIHBv
cyArPSBhZHZhbmNlCi0gICAgICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2NrKQotICAgICAgICBl
bGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NPTlRST0w6Ci0gICAgICAgICAgICBjaGFu
bmVsX2lkLCBhZHZhbmNlID0gX3BhcnNlX2NoYW5uZWxfaWQoZGF0YSwgcG9zKQotICAgICAgICAg
ICAgYmxvY2suY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgICAgIHBvcyArPSBhZHZh
bmNlCi0gICAgICAgICAgICBzZW5kX3F1b3RhLCBhZHZhbmNlID0gX3BhcnNlX251bWJlcihkYXRh
LCBwb3MpCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAg
ICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxvY2spCi0g
ICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAg
ICAgICAgICBmYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgICAgICBzbG90cywgYWR2
YW5jZSA9IF9wYXJzZV9udW1iZXIoZGF0YSwgcG9zKQotICAgICAgICAgICAgcG9zICs9IGFkdmFu
Y2UKLSAgICAgICAgICAgIHNlbmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRhdGEs
IHBvcykKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBpZiBmYWxsYmFj
ayA9PSAxIGFuZCAoc2xvdHMgIT0gMCBvciBzZW5kX3F1b3RhICE9IDApOgotICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignc2xvdHMgYW5kIHNlbmRfcXVvdGEgbXVzdCBiZSB6ZXJvIGlm
IEYgYml0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIHNldCcpCi0gICAg
ICAgICAgICBibG9jay5mYWxsYmFjayA9IGZhbGxiYWNrCi0gICAgICAgICAgICBibG9jay5zbG90
cyA9IHNsb3RzCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAg
ICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgbXV4IG9wY29k
ZSAlZCByZWNlaXZlZCcgJSBvcGNvZGUpCi0KLSAgICByZXR1cm4gYmxvY2tzCi0KLQotZGVmIF9l
bmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVsX2lkIDwgMDoKLSAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5vdCBiZSBuZWdhdGl2
ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogNzoKLSAgICAgICAg
cmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDE0OgotICAg
ICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5lbF9pZCkKLSAgICBp
ZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIoMHhjMCArIChjaGFu
bmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0LnBhY2soJyFIJywg
Y2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyOToKLSAgICAg
ICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFubmVsX2lkKQotCi0g
ICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFyZ2UnICUgY2hhbm5l
bF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBpZiBudW1iZXIgPD0g
MTI1OgotICAgICAgICByZXR1cm4gY2hyKG51bWJlcikKLSAgICBlbGlmIG51bWJlciA8ICgxIDw8
IDE2KToKLSAgICAgICAgcmV0dXJuIGNocigweDdlKSArIHN0cnVjdC5wYWNrKCchSCcsIG51bWJl
cikKLSAgICBlbGlmIG51bWJlciA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0dXJuIGNocigweDdm
KSArIHN0cnVjdC5wYWNrKCchUScsIG51bWJlcikKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXF1ZXN0KGNoYW5uZWxfaWQsIGVuY29kZWRfaGFuZHNoYWtlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGluZz0wKToKLSAgICBsZW5ndGggPSBsZW4oZW5jb2RlZF9oYW5k
c2hha2UpCi0gICAgaGFuZHNoYWtlX2xlbmd0aCA9IF9lbmNvZGVfbnVtYmVyKGxlbmd0aCkKLQot
ICAgIGZpcnN0X2J5dGUgPSAoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA8PCA1KSB8
IGVuY29kaW5nCi0gICAgcmV0dXJuIChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5uZWxf
aWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAgICAgaGFuZHNoYWtlX2xlbmd0aCArIGVuY29kZWRf
aGFuZHNoYWtlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBs
ZW5pc2hlZF9xdW90YSk6Ci0gICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9GTE9XX0NPTlRS
T0wgPDwgNSkKLSAgICByZXR1cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNvZGVfY2hhbm5lbF9p
ZChjaGFubmVsX2lkKSArCi0gICAgICAgICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5pc2hlZF9x
dW90YSkpCi0KLQotY2xhc3MgX011eFJlYWRlclRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKLSAg
ICAiIiJNdXggcmVhZGVyIHRocmVhZC4KLQotICAgIFJlYWRzIGZyYW1lcyBhbmQgcGFzc2VzIHRo
ZW0gdG8gdGhlIG11eCBjbGllbnQuIFRoaXMgdGhyZWFkIGFjY2Vzc2VzCi0gICAgcHJpdmF0ZSBm
dW5jdGlvbnMvdmFyaWFibGVzIG9mIHRoZSBtdXggY2xpZW50LgotICAgICIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIG11eCk6Ci0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18o
c2VsZikKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5fbXV4ID0g
bXV4Ci0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLQotICAgIGRlZiBfcmVj
ZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBmaXJzdF9vcGNvZGUgPSBOb25lCi0gICAgICAg
IHBlbmRpbmdfcGF5bG9hZCA9IFtdCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVl
c3RlZDoKLSAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBwYXlsb2Fk
X2xlbmd0aCA9ICgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcucmVhZF9mcmFt
ZV9oZWFkZXIoc2VsZi5fbXV4Ll9zb2NrZXQpKQotCi0gICAgICAgICAgICBpZiBub3QgZmlyc3Rf
b3Bjb2RlOgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3Rpbmcu
T1BDT0RFX1RFWFQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2
ZWQgYSB0ZXh0IG1lc3NhZ2Ugb24gcGh5c2ljYWwgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Nvbm5lY3Rpb24nKQotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBj
bGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUgYnV0ICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFnbWVudGF0aW9uIHdhcyBu
b3Qgc3RhcnRlZCcpCi0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX0JJTkFSWSBvcgotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gY2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9QT05HIG9yCi0gICAgICAgICAgICAgICAgICAgIG9wY29k
ZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1BPTkcgb3IKLSAgICAgICAgICAgICAgICAg
ICAgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0UpOgotICAgICAgICAg
ICAgICAgICAgICBmaXJzdF9vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVkIGFuIHVuZGVmaW5l
ZCBvcGNvZGUgZnJhbWU6ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGNvZGUpCi0KLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlICE9IGNsaWVudF9mb3JfdGVzdGlu
Zy5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
UmVjZWl2ZWQgYSBuZXcgb3Bjb2RlIGJlZm9yZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXJtaW5hdGluZyBmcmFnbWVudGF0aW9uJykKLQotICAgICAgICAgICAgcGF5bG9h
ZCA9IGNsaWVudF9mb3JfdGVzdGluZy5yZWNlaXZlX2J5dGVzKAotICAgICAgICAgICAgICAgIHNl
bGYuX211eC5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICAgICAgaWYgc2VsZi5f
bXV4Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
cGF5bG9hZCA9IHNlbGYuX211eC5faW5jb21pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihwYXlsb2Fk
KQotCi0gICAgICAgICAgICBwZW5kaW5nX3BheWxvYWQuYXBwZW5kKHBheWxvYWQpCi0KLSAgICAg
ICAgICAgIGlmIGZpbjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIHNlbGYu
X3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLQotICAgICAg
ICBtZXNzYWdlID0gJycuam9pbihwZW5kaW5nX3BheWxvYWQpCi0gICAgICAgIHJldHVybiBmaXJz
dF9vcGNvZGUsIG1lc3NhZ2UKLQotICAgIGRlZiByZXF1ZXN0X3N0b3Aoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAg
ICAgICAgICAgICAgICMgb3Bjb2RlIGlzIE9QQ09ERV9CSU5BUlkgb3IgY29udHJvbCBvcGNvZGVz
IHdoZW4gYSBtZXNzYWdlCi0gICAgICAgICAgICAgICAgIyBpcyBzdWNjZXNmdWxseSByZWNlaXZl
ZC4KLSAgICAgICAgICAgICAgICBvcGNvZGUsIG1lc3NhZ2UgPSBzZWxmLl9yZWNlaXZlX21lc3Nh
Z2UoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcGNvZGU6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3Rpbmcu
T1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9
IF9wYXJzZV9jaGFubmVsX2lkKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX211
eC5fZGlzcGF0Y2hfZnJhbWUoY2hhbm5lbF9pZCwgbWVzc2FnZVthZHZhbmNlOl0pCi0gICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9wcm9jZXNzX2Nv
bnRyb2xfbWVzc2FnZShvcGNvZGUsIG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBzZWxmLl9tdXguX25vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xhc3MgX0lubmVyRnJh
bWUob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmluLCByc3YxLCByc3YyLCByc3Yz
LCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxmLmZpbiA9IGZpbgotICAgICAgICBzZWxm
LnJzdjEgPSByc3YxCi0gICAgICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAgICAgc2VsZi5yc3Yz
ID0gcnN2MwotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxmLnBheWxv
YWQgPSBwYXlsb2FkCi0KLQotY2xhc3MgX0xvZ2ljYWxDaGFubmVsRGF0YShvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkK
LSAgICAgICAgc2VsZi5zZW5kX3F1b3RhID0gMAotICAgICAgICBzZWxmLnJlY2VpdmVfcXVvdGEg
PSAwCi0KLQotY2xhc3MgTXV4Q2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0IG11eCBj
bGllbnQuCi0KLSAgICBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcyBOT1QgdGhyZWFkLXNhZmUuIERv
IG5vdCBhY2Nlc3MgYW4gaW5zdGFuY2Ugb2YgdGhpcwotICAgIGNsYXNzIGZyb20gbXVsdGlwbGUg
dGhyZWFkcyBhdCBhIHNhbWUgdGltZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2Vy
KHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5f
b3B0aW9ucy5lbmFibGVfbXV4KCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0gTm9uZQotICAgICAg
ICBzZWxmLl9zb2NrZXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IGNsaWVudF9m
b3JfdGVzdGluZy5XZWJTb2NrZXRIYW5kc2hha2Uoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc2Vs
Zi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxmLl9vdXRnb2luZ19m
cmFtZV9maWx0ZXIgPSBOb25lCi0KLSAgICAgICAgc2VsZi5faXNfYWN0aXZlID0gRmFsc2UKLSAg
ICAgICAgc2VsZi5fcmVhZF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX2NvbnRyb2xfYmxv
Y2tzX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBzZWxmLl9jb250
cm9sX2Jsb2NrcyA9IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMgPSBjb2xsZWN0aW9u
cy5kZXF1ZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhy
ZWFkaW5nLkNvbmRpdGlvbigpOwotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzID0ge30K
LSAgICAgICAgc2VsZi5fdGltZW91dCA9IDIKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVj
dGlvbl9jbG9zZV9ldmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlv
bl9jbG9zZV9tZXNzYWdlID0gTm9uZQotCi0gICAgZGVmIF9wYXJzZV9pbm5lcl9mcmFtZShzZWxm
LCBkYXRhKToKLSAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ0ludmFsaWQgZW5jYXBzdWxhdGVkIGZyYW1lIHJlY2VpdmVkJykKLQotICAgICAg
ICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbMF0pCi0gICAgICAgIGZpbiA9IChmaXJzdF9ieXRlIDw8
IDcpICYgMQotICAgICAgICByc3YxID0gKGZpcnN0X2J5dGUgPDwgNikgJiAxCi0gICAgICAgIHJz
djIgPSAoZmlyc3RfYnl0ZSA8PCA1KSAmIDEKLSAgICAgICAgcnN2MyA9IChmaXJzdF9ieXRlIDw8
IDQpICYgMQotICAgICAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0KLSAgICAgICAgaWYg
c2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyOgotICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYu
X291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIoCi0gICAgICAgICAgICAgICAgZGF0YVsxOl0p
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXlsb2FkID0gZGF0YVsxOl0KLQotICAgICAg
ICByZXR1cm4gX0lubmVyRnJhbWUoZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxv
YWQpCi0KLSAgICBkZWYgX3Byb2Nlc3NfbXV4X2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAg
ICBmb3IgYmxvY2sgaW4gc2VsZi5fY29udHJvbF9ibG9ja3M6Ci0gICAgICAgICAgICBpZiBibG9j
ay5vcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAg
ICAgICAgIyBBZGRDaGFubmVsUmVzcG9uc2Ugd2lsbCBiZSBoYW5kbGVkIGluIGFkZF9jaGFubmVs
KCkuCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgYmxvY2sub3Bj
b2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVp
cmUoKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdJbnZhbGlkIGZsb3cgY29udHJvbCByZWNlaXZlZCBmb3IgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFubmVsIGlkICVkJyAlIGJsb2NrLmNoYW5uZWxf
aWQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbYmxvY2suY2hh
bm5lbF9pZF0uc2VuZF9xdW90YSArPSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5z
ZW5kX3F1b3RhKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2Nv
bmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotICAgICAg
ICAgICAgZWxpZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3RzLmV4dGVuZChbYmxvY2suc2VuZF9x
dW90YV0gKiBibG9jay5zbG90cykKLQotICAgIGRlZiBfZGlzcGF0Y2hfZnJhbWUoc2VsZiwgY2hh
bm5lbF9pZCwgcGF5bG9hZCk6Ci0gICAgICAgIGlmIGNoYW5uZWxfaWQgPT0gX0NPTlRST0xfQ0hB
Tk5FTF9JRDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9s
X2Jsb2Nrc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY29udHJv
bF9ibG9ja3MgKz0gX3BhcnNlX2NvbnRyb2xfYmxvY2tzKHBheWxvYWQpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcHJvY2Vzc19tdXhfY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgICAgIHNl
bGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ucmVsZWFz
ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAg
aWYgbm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBsb2dpY2FsIGZyYW1lIG9uIGNoYW5u
ZWwgaWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLCB3aGljaCBp
cyBub3QgZXN0YWJsaXNoZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5uZWxfaWQpCi0KLSAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYuX3BhcnNl
X2lubmVyX2ZyYW1lKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFu
bmVsc1tjaGFubmVsX2lkXS5yZWNlaXZlX3F1b3RhIC09ICgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbihpbm5lcl9mcmFtZS5wYXlsb2FkKSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgPCAwOgotICAgICAgICAg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RoZSBzZXJ2ZXIgdmlvbGF0ZXMgcXVvdGEgb24g
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5uZWwgaWQgJWQnICUg
Y2hhbm5lbF9pZCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
bG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLnB1dChpbm5lcl9mcmFtZSkKLQotICAg
IGRlZiBfcHJvY2Vzc19jb250cm9sX21lc3NhZ2Uoc2VsZiwgb3Bjb2RlLCBtZXNzYWdlKToKLSAg
ICAgICAgIyBQaW5nL1BvbmcgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAgIGlmIG9wY29kZSA9
PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgc2VsZi5fcGh5
c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICAgICAgaWYg
c2VsZi5faXNfYWN0aXZlOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3Nl
KAotICAgICAgICAgICAgICAgICAgICBjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3RocmVh
ZC5yZXF1ZXN0X3N0b3AoKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9waHlzaWNhbF9jb25uZWN0
aW9uX2Nsb3NlX2V2ZW50OgotICAgICAgICAgICAgICAgIHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rp
b25fY2xvc2VfZXZlbnQuc2V0KCkKLQotICAgIGRlZiBfbm90aWZ5X3JlYWRlcl9kb25lKHNlbGYp
OgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlYWQgdGhyZWFkIHRlcm1pbmF0ZWQuJykK
LSAgICAgICAgc2VsZi5jbG9zZV9zb2NrZXQoKQotCi0gICAgZGVmIF9hc3NlcnRfY2hhbm5lbF9z
bG90X2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fY29u
dHJvbF9ibG9ja3NfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbGVuKHNlbGYu
X2NoYW5uZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICAgICAgIyBXYWl0IG9uY2UKLSAgICAg
ICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2FpdCh0aW1lb3V0PXNl
bGYuX3RpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9s
X2Jsb2Nrc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgaWYgbGVuKHNlbGYuX2NoYW5u
ZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZhaWxlZCB0byBy
ZWNlaXZlIE5ld0NoYW5uZWxTbG90JykKLQotICAgIGRlZiBfYXNzZXJ0X3NlbmRfcXVvdGFfYXZh
aWxhYmxlKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9PSAwOgotICAgICAg
ICAgICAgICAgICMgV2FpdCBvbmNlCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFu
bmVsc19jb25kaXRpb24ud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNl
KCkKLQotICAgICAgICBpZiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnNlbmRf
cXVvdGEgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJlY2Vp
dmUgRmxvd0NvbnRyb2wgZm9yIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFubmVsX2lkKQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHNl
bGYuX3NvY2tldCA9IGNsaWVudF9mb3JfdGVzdGluZy5jb25uZWN0X3NvY2tldF93aXRoX3JldHJ5
KAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnNvY2tldF90aW1lb3V0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNl
X3RscykKLQotICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNlbGYuX3NvY2tldCkK
LSAgICAgICAgc2VsZi5fc3RyZWFtID0gY2xpZW50X2Zvcl90ZXN0aW5nLldlYlNvY2tldFN0cmVh
bSgKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQotCi0gICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbX0RFRkFVTFRfQ0hBTk5FTF9JRF0gPSBfTG9naWNhbENo
YW5uZWxEYXRhKCkKLQotICAgICAgICBzZWxmLl9yZWFkX3RocmVhZCA9IF9NdXhSZWFkZXJUaHJl
YWQoc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF90aHJlYWQuc3RhcnQoKQotCi0gICAgICAgIHNl
bGYuX2Fzc2VydF9jaGFubmVsX3Nsb3RfYXZhaWxhYmxlKCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0
X3NlbmRfcXVvdGFfYXZhaWxhYmxlKF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0KLSAgICAgICAgc2Vs
Zi5faXNfYWN0aXZlID0gVHJ1ZQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlv
biBlc3RhYmxpc2hlZCcpCi0KLSAgICBkZWYgYWRkX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCwg
b3B0aW9ucyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ011eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAgICAgaWYg
Y2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlIGNoYW5uZWxfaWQpCi0K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYuX2NoYW5uZWxfc2xv
dHMucG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGU6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ05vIGNoYW5uZWwgc2xvdHM6ICVyJyAlIGUpCi0KLSAgICAgICAg
IyBDcmVhdGUgQWRkQ2hhbm5lbCByZXF1ZXN0Ci0gICAgICAgIHJlcXVlc3RfbGluZSA9ICdHRVQg
JXMgSFRUUC8xLjFcclxuJyAlIG9wdGlvbnMucmVzb3VyY2UKLSAgICAgICAgZmllbGRzID0gW10K
LSAgICAgICAgaWYgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuREVG
QVVMVF9QT1JUOgotICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnSG9zdDogJXNcclxuJyAlIG9w
dGlvbnMuc2VydmVyX2hvc3QubG93ZXIoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZp
ZWxkcy5hcHBlbmQoJ0hvc3Q6ICVzOiVkXHJcbicgJSAob3B0aW9ucy5zZXJ2ZXJfaG9zdC5sb3dl
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25zLnNlcnZlcl9wb3J0KSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnT3JpZ2luOiAlc1xyXG4n
ICUgb3B0aW9ucy5vcmlnaW4ubG93ZXIoKSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnQ29ubmVj
dGlvbjogVXBncmFkZVxyXG4nKQotCi0gICAgICAgIGlmIGxlbihvcHRpb25zLmV4dGVuc2lvbnMp
ID4gMDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9u
czogJXNcclxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihvcHRpb25z
LmV4dGVuc2lvbnMpKQotCi0gICAgICAgIGhhbmRzaGFrZSA9IHJlcXVlc3RfbGluZSArICcnLmpv
aW4oZmllbGRzKSArICdcclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0KAotICAgICAgICAgICAgY2hhbm5lbF9pZCwgaGFuZHNoYWtl
KQotICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKF9DT05UUk9MX0NIQU5ORUxf
SUQpICsgYWRkX2NoYW5uZWxfcmVxdWVzdAotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5h
cnkocGF5bG9hZCkKLQotICAgICAgICAjIFdhaXQgQWRkQ2hhbm5lbFJlc3BvbnNlCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnV2FpdGluZyBBZGRDaGFubmVsUmVzcG9uc2UgZm9yIHRoZSBy
ZXF1ZXN0Li4uJykKLSAgICAgICAgcmVzcG9uc2UgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAg
ICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgZm9yIGJsb2NrIGluIHNlbGYuX2NvbnRy
b2xfYmxvY2tzOgotICAgICAgICAgICAgICAgICAgICBpZiBibG9jay5vcGNvZGUgIT0gX01VWF9P
UENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBibG9jay5jaGFubmVsX2lkID09IGNoYW5uZWxf
aWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGJsb2NrCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrcy5yZW1vdmUocmVzcG9uc2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlOgot
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xf
YmxvY2tzX2NvbmRpdGlvbi53YWl0KHNlbGYuX3RpbWVvdXQpCi0gICAgICAgICAgICAgICAgaWYg
bm90IHNlbGYuX2lzX2FjdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdBZGRDaGFubmVsUmVxdWVzdCB0aW1lZCBvdXQnKQotICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3NfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAg
ICMgVmFsaWRhdGUgQWRkQ2hhbm5lbFJlc3BvbnNlCi0gICAgICAgIGlmIHJlc3BvbnNlLnJlamVj
dGVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUaGUgc2VydmVyIHJlamVjdGVkIEFk
ZENoYW5uZWxSZXF1ZXN0JykKLQotICAgICAgICBmaWVsZHMgPSBfcGFyc2VfaGFuZHNoYWtlX3Jl
c3BvbnNlKHJlc3BvbnNlLmVuY29kZWRfaGFuZHNoYWtlKQotCi0gICAgICAgICMgU2hvdWxkIHdl
IHJlamVjdCB3aGVuIFVwZ3JhZGUsIENvbm5lY3Rpb24sIG9yIFNlYy1XZWJTb2NrZXQtQWNjZXB0
Ci0gICAgICAgICMgaGVhZGVycyBleGlzdD8KLQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tj
aGFubmVsX2lkXSA9IF9Mb2dpY2FsQ2hhbm5lbERhdGEoKQotICAgICAgICBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzW2NoYW5uZWxfaWRdLnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnTG9naWNhbCBjaGFubmVsICVkIGVzdGFibGlzaGVkJyAlIGNoYW5uZWxf
aWQpCi0KLSAgICBkZWYgX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoc2VsZiwgY2hh
bm5lbF9pZCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ011eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAgICAgaWYg
bm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignTG9naWNhbCBjaGFubmVsICVkIGlzIG5vdCBlc3RhYmxpc2hlZC4nKQot
Ci0gICAgZGVmIGRyb3BfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgIyBUT0RP
KGJhc2hpKTogSW1wbGVtZW50Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzZW5kX2Zsb3dfY29u
dHJvbChzZWxmLCBjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgICAgIHNlbGYu
X2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLSAgICAgICAgZmxv
d19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRf
cXVvdGEpCi0gICAgICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NPTlRST0xfQ0hB
Tk5FTF9JRCkgKyBmbG93X2NvbnRyb2wKLSAgICAgICAgIyBSZXBsZW5pc2ggcmVjZWl2ZSBxdW90
YQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5l
bF9pZF0ucmVjZWl2ZV9xdW90YSArPSAoCi0gICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVv
dGEpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KHBh
eWxvYWQpCi0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIGNoYW5uZWxfaWQsIG1lc3NhZ2Us
IGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2No
YW5uZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAg
ICAgICAgZmlyc3RfYnl0ZSA9IChlbmQgPDwgNykgfCBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmlyc3RfYnl0ZSA9IChlbmQgPDwg
NykgfCBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYg
c2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhIDwgbGVuKG1lc3Nh
Z2UpOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2VuZCBxdW90YSB2aW9sYXRp
b246ICVkIDwgJWQnICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9j
aGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhLAotICAgICAgICAgICAgICAgICAgICAgICAg
bGVuKG1lc3NhZ2UpKSkKLQotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFu
bmVsX2lkXS5zZW5kX3F1b3RhIC09IGxlbihtZXNzYWdlKQotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAg
ICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKyBjaHIoZmlyc3Rf
Ynl0ZSkgKyBtZXNzYWdlCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFyeShwYXlsb2Fk
KQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYsIGNoYW5uZWxfaWQsIHBheWxvYWQsIGJp
bmFyeT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVu
ZWQoY2hhbm5lbF9pZCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbm5lcl9mcmFtZSA9
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0ucXVldWUuZ2V0KAotICAgICAgICAg
ICAgICAgIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5
IGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nhbm5vdCByZWNlaXZlIG1lc3Nh
Z2UgZnJvbSBjaGFubmVsIGlkICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bm5lbF9pZCkKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBvcGNvZGUgPSBjbGll
bnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
b3Bjb2RlID0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUCi0KLSAgICAgICAgaWYgaW5u
ZXJfZnJhbWUub3Bjb2RlICE9IG9wY29kZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
VW5leHBlY3RlZCBvcGNvZGUgcmVjZWl2ZWQgKCVyICE9ICVyKScgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChleHBlY3RlZF9vcGNvZGUsIGlubmVyX2ZyYW1lLm9wY29kZSkpCi0KLSAg
ICAgICAgaWYgaW5uZXJfZnJhbWUucGF5bG9hZCAhPSBwYXlsb2FkOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHBheWxvYWQgcmVjZWl2ZWQnKQotCi0gICAgZGVmIHNl
bmRfY2xvc2Uoc2VsZiwgY2hhbm5lbF9pZCwgY29kZT1Ob25lLCByZWFzb249JycpOgotICAgICAg
ICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAg
ICAgICAgaWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFj
aygnIUgnLCBjb2RlKSArIHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGJvZHkgPSAnJwotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAoMSA8PCA3KSB8IGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0UKLSAgICAgICAgcGF5bG9hZCA9IF9lbmNvZGVf
Y2hhbm5lbF9pZChjaGFubmVsX2lkKSArIGNocihmaXJzdF9ieXRlKSArIGJvZHkKLSAgICAgICAg
c2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KHBheWxvYWQpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2Vp
dmVfY2xvc2Uoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxf
Y2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBpbm5lcl9mcmFtZSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0ucXVldWUu
Z2V0KAotICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZXhj
ZXB0IFF1ZXVlLkVtcHR5IGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nhbm5v
dCByZWNlaXZlIG1lc3NhZ2UgZnJvbSBjaGFubmVsIGlkICVkJyAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbm5lbF9pZCkKLSAgICAgICAgaWYgaW5uZXJfZnJhbWUub3Bjb2RlICE9
IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9zZSBmcmFtZScpCi0KLSAgICBkZWYgc2VuZF9waHlz
aWNhbF9jb25uZWN0aW9uX2Nsb3NlKHNlbGYsIGNvZGU9Tm9uZSwgcmVhc29uPScnKToKLSAgICAg
ICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudCA9IHRocmVhZGluZy5FdmVu
dCgpCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLQotICAg
ICMgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgb25seSBhZnRlciBjYWxsaW5nCi0gICAgIyBzZW5k
X3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2UoKS4KLSAgICBkZWYgYXNzZXJ0X3BoeXNpY2FsX2Nv
bm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgc2VsZiwgY29kZT1jbGllbnRfZm9yX3Rl
c3RpbmcuU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9w
aHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50LndhaXQodGltZW91dD1zZWxmLl90aW1lb3V0
KQotICAgICAgICBpZiAobm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQu
aXNTZXQoKSBvcgotICAgICAgICAgICAgbm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xv
c2VfbWVzc2FnZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2
ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICBkZWYgY2xvc2Vfc29ja2V0KHNlbGYpOgotICAg
ICAgICBzZWxmLl9pc19hY3RpdmUgPSBGYWxzZQotICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2Uo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3J1bl9hbGwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBhNWQ4N2Q4MzgyLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3J1bl9hbGwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlJ1
biBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotCi1UaGlzIHN1aXRlIGlzIGV4cGVj
dGVkIHRvIGJlIHJ1biB1bmRlciBweXdlYnNvY2tldCdzIHNyYyBkaXJlY3RvcnksIGkuZS4gdGhl
Ci1kaXJlY3RvcnkgY29udGFpbmluZyBtb2RfcHl3ZWJzb2NrZXQsIHRlc3QsIGV0Yy4KLQotVG8g
Y2hhbmdlIGxvZ2dpbiBsZXZlbCwgcGxlYXNlIHNwZWNpZnkgLS1sb2ctbGV2ZWwgb3B0aW9uLgot
ICAgIHB5dGhvbiB0ZXN0L3J1bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVnCi0KLVRvIHBhc3Mg
YW55IG9wdGlvbiB0byB1bml0dGVzdCBtb2R1bGUsIHBsZWFzZSBzcGVjaWZ5IG9wdGlvbnMgYWZ0
ZXIgJy0tJy4gRm9yCi1leGFtcGxlLCBydW4gdGhpcyBmb3IgbWFraW5nIHRoZSB0ZXN0IHJ1bm5l
ciB2ZXJib3NlLgotICAgIHB5dGhvbiB0ZXN0L3J1bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVn
IC0tIC12Ci0iIiIKLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQg
b3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX1RFU1RfTU9E
VUxFX1BBVFRFUk4gPSByZS5jb21waWxlKHInXih0ZXN0Xy4rKVwucHkkJykKLQotCi1kZWYgX2xp
c3RfdGVzdF9tb2R1bGVzKGRpcmVjdG9yeSk6Ci0gICAgbW9kdWxlX25hbWVzID0gW10KLSAgICBm
b3IgZmlsZW5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgotICAgICAgICBtYXRjaCA9IF9U
RVNUX01PRFVMRV9QQVRURVJOLnNlYXJjaChmaWxlbmFtZSkKLSAgICAgICAgaWYgbWF0Y2g6Ci0g
ICAgICAgICAgICBtb2R1bGVfbmFtZXMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQotICAgIHJldHVy
biBtb2R1bGVfbmFtZXMKLQotCi1kZWYgX3N1aXRlKCk6Ci0gICAgbG9hZGVyID0gdW5pdHRlc3Qu
VGVzdExvYWRlcigpCi0gICAgcmV0dXJuIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoCi0gICAg
ICAgICAgICBfbGlzdF90ZXN0X21vZHVsZXMob3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19m
aWxlX18pWzBdLCAnLicpKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHBh
cnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0t
bG9nLWxldmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuaW5nJywKLSAgICAgICAgICAg
ICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAn
ZXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddKQotICAg
IG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgbG9nZ2luZy5iYXNpY0Nv
bmZpZygKLSAgICAgICAgICAgIGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9n
X2xldmVsLnVwcGVyKCkpLAotICAgICAgICAgICAgZm9ybWF0PSclKGxldmVsbmFtZSlzICUoYXNj
dGltZSlzICcKLSAgICAgICAgICAgICAgICAgICAnJShmaWxlbmFtZSlzOiUobGluZW5vKWRdICcK
LSAgICAgICAgICAgICAgICAgICAnJShtZXNzYWdlKXMnLAotICAgICAgICAgICAgZGF0ZWZtdD0n
JUg6JU06JVMnKQotICAgIHVuaXR0ZXN0Lm1haW4oZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9
W3N5cy5hcmd2WzBdXSArIGFyZ3MpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3Qvc2V0X3N5c19wYXRoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3NldF9zeXNfcGF0aC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjNmRiOWVhNGQzLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3NldF9zeXNfcGF0aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvbmZpZ3VyYXRpb24gZm9yIHRlc3Rpbmcu
Ci0KLVRlc3QgZmlsZXMgc2hvdWxkIGltcG9ydCB0aGlzIG1vZHVsZSBiZWZvcmUgbW9kX3B5d2Vi
c29ja2V0LgotIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLQotIyBBZGQgdGhlIHBh
cmVudCBkaXJlY3RvcnkgdG8gc3lzLnBhdGggdG8gZW5hYmxlIGltcG9ydGluZyBtb2RfcHl3ZWJz
b2NrZXQuCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19m
aWxlX18pWzBdLCAnLi4nKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNmQ2MDU2MDljOC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIi
VGVzdHMgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0
dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUg
bW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRp
c3BhdGNoCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIHRlc3Qg
aW1wb3J0IG1vY2sKLQotCi1fVEVTVF9IQU5ETEVSU19ESVIgPSBvcy5wYXRoLmpvaW4oCi0gICAg
ICAgIG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnLCAnaGFuZGxlcnMnKQot
Ci1fVEVTVF9IQU5ETEVSU19TVUJfRElSID0gb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJ
UiwgJ3N1YicpCi0KLQotY2xhc3MgRGlzcGF0Y2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgICIiIkEgdW5pdHRlc3QgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0
X25vcm1hbGl6ZV9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGgu
YWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdcXGFcXGInKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNl
KCdcXCcsICcvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6
ZV9wYXRoKCcvYS9jLy4uL2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFi
c3BhdGgoJ2FiYycpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQotCi0gICAgZGVmIHRlc3RfY29udmVy
dGVyKHNlbGYpOgotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9f
cmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKLSAgICAgICAgIyBQeXRob24gYnVpbHQgYnkgTVND
IGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCkuCi0gICAgICAg
ICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNpbmcgcmVhbHBh
dGgoKSBhbmQgdXNlcwotICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRyaXZlIG5hbWUg
dG8gdmVyaWZ5IHRoZSBwcmVmaXguCi0gICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRoLnJlYWxwYXRo
KCcvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCAr
ICdhL2IvaF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2MvaCcsIGNvbnZl
cnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNv
bnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJ2Ev
YicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9u
b3JtYWxpemVfcGF0aCgKLSAgICAgICAgICAgICdhL2IvaF93c2gucHknKSkpCi0KLSAgICAgICAg
Y29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcign
L2EvYi8vLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jv
b3QgKyAnYS9iL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29u
dmVydGVyKGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgKLSAgICAgICAgICAgICcvYS9iLy4uL2Iv
aF93c2gucHknKSkpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRo
X3RvX3Jlc291cmNlX2NvbnZlcnRlcigKLSAgICAgICAgICAgICcvYS8uLi9hL2IvLi4vYi8nKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9o
X3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90
b19yZXNvdXJjZV9jb252ZXJ0ZXIocidcYVxiJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
L2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3NoLnB5JykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyByJ2EvYi9oX3dzaC5weScpKQot
Ci0gICAgZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmlsZV9wYXRocyhzZWxmKToKLSAgICAg
ICAgcGF0aHMgPSBsaXN0KAotICAgICAgICAgICAgZGlzcGF0Y2guX2VudW1lcmF0ZV9oYW5kbGVy
X2ZpbGVfcGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKLSAgICAgICAgcGF0aHMuc29ydCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhzKSkKLSAgICAgICAgZXhwZWN0ZWRf
cGF0aHMgPSBbCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJ
UiwgJ2Fib3J0X2J5X3VzZXJfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2lu
KF9URVNUX0hBTkRMRVJTX0RJUiwgJ2JsYW5rX3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9z
LnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3NoLnB5JyksCi0g
ICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5
JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1
YicsICdub25fY2FsbGFibGVfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2lu
KF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdwbGFpbl93c2gucHknKSwKLSAgICAgICAgICAg
ICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCi0gICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd3cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5JyksCi0gICAg
ICAgICAgICAgICAgXQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0
ZWRfcGF0aHMsIHBhdGhzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQs
IGFjdHVhbCkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9oYW5kbGVyX2ZpbGUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hFeGNl
cHRpb24sIGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlz
cGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUsICdkZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcygKLSAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBkaXNwYXRjaC5f
c291cmNlX2hhbmRsZXJfZmlsZSwgJzEvMCcpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNw
YXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSgKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOnBhc3NcbicKLSAgICAgICAgICAgICAgICAn
ZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KTpwYXNzXG4nKSkKLQotICAgIGRl
ZiB0ZXN0X3NvdXJjZV93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3Bh
dGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICB3YXJuaW5n
cyA9IGRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgd2FybmluZ3Muc29ydCgp
Ci0gICAgICAgIGV4cGVjdGVkX3dhcm5pbmdzID0gWwotICAgICAgICAgICAgICAgIChvcy5wYXRo
LnJlYWxwYXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExF
UlNfRElSLCAnYmxhbmtfd3NoLnB5JykpICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAg
KG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBfVEVT
VF9IQU5ETEVSU19ESVIsICdzdWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScpKSArCi0gICAgICAg
ICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBjYWxsYWJs
ZS4nKSwKLSAgICAgICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oCi0g
ICAgICAgICAgICAgICAgICAgIF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICd3cm9uZ19oYW5k
c2hha2Vfc2lnX3dzaC5weScpKSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAotICAgICAgICAgICAgICAgIChvcy5w
YXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFO
RExFUlNfRElSLCAnc3ViJywgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSkgKwotICAgICAg
ICAgICAgICAgICAnOiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgbm90IGRlZmluZWQuJyks
Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg0LCBsZW4od2Fy
bmluZ3MpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfd2Fy
bmluZ3MsIHdhcm5pbmdzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVk
LCBhY3R1YWwpCi0KLSAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAg
ICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwg
Tm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQotICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCi0gICAgICAgIHJlcXVlc3Qud3Nfb3Jp
Z2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKLSAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgotCi0gICAgICAg
IHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0g
ICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNlcHRpb24g
d2l0aCA0MDMgc3RhdHVzJykKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQwMywgZS5zdGF0dXMp
Ci0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgn
VW5leHBlY3RlZCBleGNlcHRpb246ICVyJyAlIGUpCi0KLSAgICBkZWYgdGVzdF9hYm9ydF9leHRy
YV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRj
aGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9j
a1JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9hYm9ydF9ieV91c2Vy
JwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5k
c2hha2UsIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhKHNlbGYpOgotICAg
ICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIs
IE5vbmUpCi0KLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1t
b2NrLk1vY2tDb25uKCdceGZmXHgwMCcpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0g
Jy9vcmlnaW5fY2hlY2snCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDEnCi0gICAg
ICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgL29yaWdpbl9jaGVjaywg
cDEnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAg
cmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCdceGZm
XHgwMCcpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCi0gICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3No
LnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVz
dChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qu
d3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbj8nCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wg
PSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9w
bGFpbj8sIE5vbmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0K
LSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tD
b25uKCdceGZmXHgwMCcpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxh
aW4/cT12JwotICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQotICAgICAgICBkaXNw
YXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
c3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/cT12LCBOb25lJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICdceGZmXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfdHJh
bnNmZXJfZGF0YV9ub19oYW5kbGVyKHNlbGYpOgotICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0
Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIGZvciByZXNv
dXJjZSBpbiBbJy9ibGFuaycsICcvc3ViL25vbl9jYWxsYWJsZScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQnLCAnL2RvZXMvbm90L2V4aXN0J106Ci0g
ICAgICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9j
a0Nvbm4oJycpKQotICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9IHJlc291cmNlCi0g
ICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJwotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgpCi0gICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0
Y2hFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3Moc3RyKGUp
LmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKLQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2Rh
dGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAg
cmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicKLSAgICAg
ICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMycKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxmLmZhaWwo
KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmZhaWxV
bmxlc3Moc3RyKGUpLmZpbmQoJ0ludGVudGlvbmFsJykgIT0gLTEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZXhjZXB0aW9uOiAlcycgJSBlKQotCi0gICAgZGVmIHRl
c3RfYWJvcnRfdHJhbnNmZXJfZGF0YShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3Bh
dGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1ZXN0
ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fi
b3J0X2J5X3VzZXInCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVk
QnlVc2VyRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnRy
YW5zZmVyX2RhdGEsIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9zY2FuX2RpcihzZWxmKToKLSAg
ICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25l
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21h
cCkpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAgICcv
c3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0g
ICAgICAgIHNlbGYuZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0
ZV9tYXApCi0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXIoc2VsZik6Ci0gICAgICAgIGRpc3Ag
PSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgX1RFU1RfSEFORExFUlNf
U1VCX0RJUikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxJZignL29yaWdpbl9jaGVjaycgaW4gZGlzcC5f
aGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAg
ICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXAp
Ci0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApCi0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9vdChzZWxmKToKLSAg
ICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfU1VCX0RJUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfU1VCX0RJ
UikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9t
YXApKQotICAgICAgICBzZWxmLmZhaWxJZignL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbElmKCcvc3ViL2V4Y2VwdGlvbl9pbl90cmFu
c2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbElmKCcv
c3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5mYWls
VW5sZXNzKCcvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21h
cCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKCcvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3Vp
dGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9kaXJfbXVzdF91bmRlcl9yb290KHNlbGYpOgot
ICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaGVyKCdhL2InLCAnYS9iL2MnKSAgIyBPSwotICAgICAg
ICBkaXNwYXRjaC5EaXNwYXRjaGVyKCdhL2IvLy8nLCAnYS9iJykgICMgT0sKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIsICdhL2IvYycsICdhL2InKQotCi0gICAg
ZGVmIHRlc3RfcmVzb3VyY2VfcGF0aF9hbGlhcyhzZWxmKToKLSAgICAgICAgZGlzcCA9IGRpc3Bh
dGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICBkaXNwLmFk
ZF9yZXNvdXJjZV9wYXRoX2FsaWFzKCcvJywgJy9vcmlnaW5fY2hlY2snKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDUsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCi0gICAgICAgIHNl
bGYuZmFpbFVubGVzcygnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXAp
Ci0gICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9p
bl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFp
bFVubGVzcygnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAg
IHNlbGYuZmFpbFVubGVzcygnLycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzLCAnL2FsaWFzJywg
Jy9ub3QtZXhpc3QnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRl
c3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF9lbmR0b2VuZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2VuZHRvZW5kLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzNjgwZWMyZWJhNjcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkVuZC10by1l
bmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5IGJ5IGRlZmF1bHQu
IFlvdQotY2FuIGFsc28gdGVzdCBtb2RfcHl3ZWJzb2NrZXQgaG9zdGVkIG9uIGFuIEFwYWNoZSBz
ZXJ2ZXIgYnkgc2V0dGluZwotX3VzZV9leHRlcm5hbF9zZXJ2ZXIgdG8gVHJ1ZSBhbmQgbW9kaWZ5
aW5nIF9leHRlcm5hbF9zZXJ2ZXJfcG9ydCB0byBwb2ludCB0bwotdGhlIHBvcnQgb24gd2hpY2gg
dGhlIEFwYWNoZSBzZXJ2ZXIgaXMgcnVubmluZy4KLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3MKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdWJwcm9jZXNz
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRf
c3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9k
dWxlLgotCi1mcm9tIHRlc3QgaW1wb3J0IGNsaWVudF9mb3JfdGVzdGluZwotZnJvbSB0ZXN0IGlt
cG9ydCBtdXhfY2xpZW50X2Zvcl90ZXN0aW5nCi0KLQotIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0
ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xvc2luZyBoYW5kc2hha2UKLV9HT09EQllF
X01FU1NBR0UgPSAnR29vZGJ5ZScKLQotX1NFUlZFUl9XQVJNVVBfSU5fU0VDID0gMC4yCi0KLSMg
SWYgeW91IHdhbnQgdG8gdXNlIGV4dGVybmFsIHNlcnZlciB0byBydW4gZW5kIHRvIGVuZCB0ZXN0
cywgc2V0IGZvbGxvd2luZwotIyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4KLV91c2VfZXh0ZXJuYWxf
c2VydmVyID0gRmFsc2UKLV9leHRlcm5hbF9zZXJ2ZXJfcG9ydCA9IDAKLQotCi0jIFRlc3QgYm9k
eSBmdW5jdGlvbnMKLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmUoY2xpZW50KToKLSAgICBjbGll
bnQuY29ubmVjdCgpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKLSAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmUoJ3Rlc3QnKQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ2hlbGxv
d29ybGQnKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgnaGVsbG93b3JsZCcpCi0KLSAgICBj
bGllbnQuc2VuZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQot
ICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVj
a19wcm9jZWR1cmVfd2l0aF9iaW5hcnkoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0K
LSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKLSAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmUoJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5zZW5k
X21lc3NhZ2UoJ1x4MDBceDgwXHhmZVx4ZmZceDAwXHg4MCcsIGJpbmFyeT1UcnVlKQotICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZSgnXHgwMFx4ODBceGZlXHhmZlx4MDBceDgwJywgYmluYXJ5PVRy
dWUpCi0KLSAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
X2Nsb3NlKCkKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRl
ZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKGNsaWVudCk6Ci0gICAgY2xpZW50
LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCi0gICAgY2xpZW50
LmFzc2VydF9yZWNlaXZlKCd0ZXN0JykKLQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoX0dPT0RC
WUVfTUVTU0FHRSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoX0dPT0RCWUVfTUVTU0FHRSkK
LQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0gICAgY2xpZW50LnNlbmRfY2xv
c2UoKQotCi0gICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCi0KLQotZGVmIF9l
Y2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbihjbGllbnQsIGNvZGUsIHJl
YXNvbik6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoY29k
ZSwgcmVhc29uKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjb2RlLCByZWFzb24p
Ci0KLSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX3VubWFz
a2VkX2ZyYW1lX2NoZWNrX3Byb2NlZHVyZShjbGllbnQpOgotICAgIGNsaWVudC5jb25uZWN0KCkK
LQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rlc3QnLCBtYXNrPUZhbHNlKQotICAgIGNsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1BST1RPQ09M
X0VSUk9SLCAnJykKLQotICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0K
LWRlZiBfbXV4X2VjaG9fY2hlY2tfcHJvY2VkdXJlKG11eF9jbGllbnQpOgotICAgIG11eF9jbGll
bnQuY29ubmVjdCgpCi0gICAgbXV4X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgxLCAxMDI0KQot
Ci0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMgPSBjbGllbnRfZm9yX3Rlc3RpbmcuQ2xpZW50
T3B0aW9ucygpCi0gICAgbG9naWNhbF9jaGFubmVsX29wdGlvbnMuc2VydmVyX2hvc3QgPSAnbG9j
YWxob3N0JwotICAgIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zLnNlcnZlcl9wb3J0ID0gODAKLSAg
ICBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKLSAg
ICBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKLSAgICBtdXhfY2xp
ZW50LmFkZF9jaGFubmVsKDIsIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zKQotICAgIG11eF9jbGll
bnQuc2VuZF9mbG93X2NvbnRyb2woMiwgMTAyNCkKLQotICAgIG11eF9jbGllbnQuc2VuZF9tZXNz
YWdlKDIsICd0ZXN0JykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDIsICd0ZXN0JykK
LQotICAgIG11eF9jbGllbnQuYWRkX2NoYW5uZWwoMywgbG9naWNhbF9jaGFubmVsX29wdGlvbnMp
Ci0gICAgbXV4X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgzLCAxMDI0KQotCi0gICAgbXV4X2Ns
aWVudC5zZW5kX21lc3NhZ2UoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xpZW50LnNlbmRfbWVzc2Fn
ZSgzLCAnd29ybGQnKQotICAgIG11eF9jbGllbnQuYXNzZXJ0X3JlY2VpdmUoMiwgJ2hlbGxvJykK
LSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDMsICd3b3JsZCcpCi0KLSAgICAjIERvbid0
IHNlbmQgY2xvc2UgbWVzc2FnZSBvbiBjaGFubmVsIGlkIDEgc28gdGhhdCBzZXJ2ZXItaW5pdGlh
dGVkCi0gICAgIyBjbG9zaW5nIGhhbmRzaGFrZSB3b24ndCBvY2N1ci4KLSAgICBtdXhfY2xpZW50
LnNlbmRfY2xvc2UoMikKLSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2UoMykKLSAgICBtdXhfY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKDIpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZSgzKQotCi0gICAgbXV4X2NsaWVudC5zZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xv
c2UoKQotICAgIG11eF9jbGllbnQuYXNzZXJ0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fcmVjZWl2ZV9j
bG9zZSgpCi0KLQotY2xhc3MgRW5kVG9FbmRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgIiIiQmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNv
Y2tldCBzdGFuZGFsb25lCi0gICAgc2VydmVyIGFzIGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVj
dCB0byBpdCB1c2luZyB0aGUgY2xpZW50X2Zvcl90ZXN0aW5nCi0gICAgbW9kdWxlLCBhbmQgY2hl
Y2sgaWYgdGhlIHNlcnZlciBiZWhhdmVzIGNvcnJlY3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcK
LSAgICBoYW5kc2hha2UgYW5kIGZyYW1lcyBvdmVyIGEgVENQIGNvbm5lY3Rpb24uCi0gICAgIiIi
Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IE5v
bmUKLSAgICAgICAgc2VsZi50b3BfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19m
aWxlX18pWzBdLCAnLi4nKQotICAgICAgICBvcy5wdXRlbnYoJ1BZVEhPTlBBVEgnLCBvcy5wYXRo
LnBhdGhzZXAuam9pbihzeXMucGF0aCkpCi0gICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5k
ID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgc2VsZi50b3BfZGlyLCAnbW9kX3B5d2Vic29j
a2V0JywgJ3N0YW5kYWxvbmUucHknKQotICAgICAgICBzZWxmLmRvY3VtZW50X3Jvb3QgPSBvcy5w
YXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScpCi0gICAgICAgIHMgPSBzb2NrZXQuc29j
a2V0KCkKLSAgICAgICAgcy5iaW5kKCgnbG9jYWxob3N0JywgMCkpCi0gICAgICAgIChfLCBzZWxm
LnRlc3RfcG9ydCkgPSBzLmdldHNvY2tuYW1lKCkKLSAgICAgICAgcy5jbG9zZSgpCi0KLSAgICAg
ICAgc2VsZi5fb3B0aW9ucyA9IGNsaWVudF9mb3JfdGVzdGluZy5DbGllbnRPcHRpb25zKCkKLSAg
ICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCA9ICdsb2NhbGhvc3QnCi0gICAgICAgIHNl
bGYuX29wdGlvbnMub3JpZ2luID0gJ2h0dHA6Ly9sb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29w
dGlvbnMucmVzb3VyY2UgPSAnL2VjaG8nCi0KLSAgICAgICAgIyBUT0RPKHRveW9zaGltKTogRWxp
bWluYXRlIGxhdW5jaGluZyBhIHN0YW5kYWxvbmUgc2VydmVyIG9uIHVzaW5nCi0gICAgICAgICMg
ZXh0ZXJuYWwgc2VydmVyLgotCi0gICAgICAgIGlmIF91c2VfZXh0ZXJuYWxfc2VydmVyOgotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IF9leHRlcm5hbF9zZXJ2ZXJfcG9y
dAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9
IHNlbGYudGVzdF9wb3J0Ci0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBVc2UgdGVhckRvd24gdG8g
a2lsbCB0aGUgc2VydmVyLgotCi0gICAgZGVmIF9ydW5fcHl0aG9uX2NvbW1hbmQoc2VsZiwgY29t
bWFuZGxpbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzdWJw
cm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZV0gKyBjb21tYW5kbGluZSwgY2xvc2VfZmRzPVRy
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQsIHN0ZGVy
cj1zdGRlcnIpCi0KLSAgICBkZWYgX3J1bl9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBb
c2VsZi5zdGFuZGFsb25lX2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgJy1IJywgJ2xvY2FsaG9z
dCcsCi0gICAgICAgICAgICAgICAgJy1WJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAg
Jy1wJywgc3RyKHNlbGYudGVzdF9wb3J0KSwKLSAgICAgICAgICAgICAgICAnLVAnLCBzdHIoc2Vs
Zi50ZXN0X3BvcnQpLAotICAgICAgICAgICAgICAgICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdF0K
LQotICAgICAgICAjIEluaGVyaXQgdGhlIGxldmVsIHNldCB0byB0aGUgcm9vdCBsb2dnZXIgYnkg
dGVzdCBydW5uZXIuCi0gICAgICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQot
ICAgICAgICBsb2dfbGV2ZWwgPSByb290X2xvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpCi0gICAg
ICAgIGlmIGxvZ19sZXZlbCAhPSBsb2dnaW5nLk5PVFNFVDoKLSAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKCctLWxvZy1sZXZlbCcpCi0gICAgICAgICAgICBhcmdzLmFwcGVuZChsb2dnaW5nLmdldExl
dmVsTmFtZShsb2dfbGV2ZWwpLmxvd2VyKCkpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9w
eXRob25fY29tbWFuZChhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZGVycj1zZWxmLnNlcnZlcl9zdGRlcnIpCi0KLSAgICBkZWYgX2tpbGxfcHJvY2Vzcyhz
ZWxmLCBwaWQpOgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4n
KToKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbCgKLSAgICAgICAgICAgICAgICAoJ3Rhc2tr
aWxsLmV4ZScsICcvZicsICcvcGlkJywgc3RyKHBpZCkpLCBjbG9zZV9mZHM9VHJ1ZSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKLQotCi1j
bGFzcyBFbmRUb0VuZEh5QmlUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChz
ZWxmKToKLSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9y
dW5fdGVzdF93aXRoX2NsaWVudF9vcHRpb25zKHNlbGYsIHRlc3RfZnVuY3Rpb24sIG9wdGlvbnMp
OgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogYWRkIHNvbWUgbG9naWMgdG8gcG9sbCB0aGUgc2Vy
dmVyIHVudGlsIGl0Ci0gICAgICAgICAgICAjIGJlY29tZXMgcmVhZHkKLSAgICAgICAgICAgIHRp
bWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBj
bGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQotICAgICAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAg
ZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VsZi5fcnVuX3Rl
c3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25zKQotCi0g
ICAgZGVmIF9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMuZW5hYmxlX2RlZmxhdGVfZnJhbWUoKQotICAgICAgICAgICAgY2xpZW50ID0gY2xp
ZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAg
IHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQot
ICAgIGRlZiBfcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgc2VsZiwg
b2ZmZXIsIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIg
PSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVl
cChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXh0
ZW5zaW9ucyArPSBvZmZlcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNz
YWdlX2RlZmxhdGUgPSByZXNwb25zZV9jaGVja2VyCi0gICAgICAgICAgICBjbGllbnQgPSBjbGll
bnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25zKQotCi0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAg
ICAgaWYgdGVzdF9mdW5jdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdGVz
dF9mdW5jdGlvbihjbGllbnQpCi0KLSAgICAgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X2Nvbm5l
Y3Rpb25fY2xvc2VkKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xp
ZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9r
aWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX2Nsb3NlX3dpdGhfY29kZV9h
bmRfcmVhc29uX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbiwgY29kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKToKLSAgICAgICAgc2Vy
dmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUu
c2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGll
bnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25zKQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50LCBjb2RlLCByZWFzb24p
Ci0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2Nr
ZXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNl
cnZlci5waWQpCi0KLSAgICBkZWYgX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qoc2VsZiwgb3B0aW9u
cywgc3RhdHVzKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0g
ICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRp
b25zKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkK
LSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIdHRwU3RhdHVzRXhj
ZXB0aW9uJykKLSAgICAgICAgICAgIGV4Y2VwdCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1
c0V4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVz
LCBlLnN0YXR1cykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
ICAgICAgICBzZWxmLmZhaWwoJ0NhdGNoIHVuZXhwZWN0ZWQgZXhjZXB0aW9uJykKLSAgICAgICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkK
LQotICAgIGRlZiBfcnVuX211eF90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGlt
ZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIGNsaWVudCA9IG11
eF9jbGllbnRfZm9yX3Rlc3RpbmcuTXV4Q2xpZW50KHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0gICAgICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0K
LSAgICBkZWYgdGVzdF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19j
aGVja19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2JpbmFyeShzZWxmKToKLSAgICAg
ICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5KQotCi0g
ICAgZGVmIHRlc3RfZWNob19zZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90
ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUpCi0KLSAgICBkZWYgdGVzdF91
bm1hc2tlZF9mcmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX3VubWFza2VkX2Zy
YW1lX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fZGVmbGF0ZV9mcmFtZShz
ZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2RlZmxhdGVfZnJhbWVfdGVzdChfZWNob19jaGVja19w
cm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2RlZmxhdGVfZnJhbWVfc2VydmVyX2Nsb3Nl
KHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KAotICAgICAgICAg
ICAgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKLQotICAgIGRlZiB0ZXN0X2Vj
aG9fcGVybWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihj
bGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAg
ICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgw
MCcKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90
ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAg
ICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAg
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGll
bnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkK
LQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFz
c2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJh
bWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwg
cGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJ10s
Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0
X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX2Zy
YW1lcyhzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAg
ICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjbGllbnQu
X3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2QnLAot
ICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAg
ICAgICAgICAgICAgICAgIGVuZD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQot
ICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAg
ICAnXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVz
dGluZy5PUENPREVfVEVYVCkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNl
aXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgw
N1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNs
aWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9z
ZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFt
ZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFy
YW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgK
LSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAotICAgICAgICAgICAgICAg
IHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAg
IGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tZXNzYWdlcyhzZWxmKToKLSAg
ICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUg
ZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2Rh
dGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywK
LSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAg
ICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5k
X2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHgwMFx4MTFceDAwXHgwMCcsCi0gICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAg
ICAgICAgICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3Jl
Y2VpdmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4Yzlc
eDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rpbmcu
T1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNs
aWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAg
J1x4ZjJceDAwXHgxMVx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQot
Ci0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFt
ZXRlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRl
JywgcGFyYW1ldGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBw
YXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2Fn
ZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwK
LSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3Rf
ZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29fbXNn
c19zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVu
Y3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNw
ZWMuCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAg
ICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICBy
c3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAg
ICAgICAgICAgICdceGYyXHgwMFx4MTFceDAwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0x
KQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAg
ICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAg
ICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAg
ICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2Vy
dF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4Yzlc
eGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0
aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAg
ICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0
ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWygnc2VydmVyX25vX2Nv
bnRleHRfdGFrZW92ZXInLCBOb25lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2Fn
ZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hl
Y2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNo
b19wZXJtZXNzYWdlX2RlZmxhdGVfcHJlZmVyZW5jZShzZWxmKToKLSAgICAgICAgZGVmIHRlc3Rf
ZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhl
IHNwZWMuCi0gICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gJ1x4ZjJceDQ4XHhjZFx4Yzlc
eGM5XHgwN1x4MDAnCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0x
KQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAg
ICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBv
cGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2No
ZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNz
YWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1
bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScsICdkZWZsYXRlLWZyYW1lJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hl
Y2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNo
b19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBp
biB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNk
XHhjOVx4YzlceDA3XHgwMCcKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgK
LSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICBy
c3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnko
Ci0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAg
ICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9u
c2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhbKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzEwJyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUp
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVy
cygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAg
ICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0x
MDsgJwotICAgICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInXSwKLSAg
ICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVu
Y3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9z
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihj
bGllbnQpOgotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tl
cihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFj
Y2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRlJykKLQotICAgICAgICBzZWxmLl9ydW5fcGVy
bWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxh
dGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MzAwMDAwMCddLAotICAgICAgICAgICAgICAgIHJl
c3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRl
ZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93
X2JpdHMoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAg
ICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJt
ZXNzYWdlLWRlZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVf
dGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93
aW5kb3dfYml0cz0zMDAwMDAwJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwK
LSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJt
ZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBk
ZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2Uo
KQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBk
ZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRlJykKLQotICAg
ICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAg
WydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKLSAgICAgICAgICAgICAgICByZXNwb25z
ZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVz
dF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAgICAgICBzZWxmLl9v
cHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKLSAgICAgICAgc2VsZi5fcnVuX2Nsb3NlX3dpdGhf
Y29kZV9hbmRfcmVhc29uX3Rlc3QoCi0gICAgICAgICAgICBfZWNob19jaGVja19wcm9jZWR1cmVf
d2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQotCi0gICAgZGVmIHRl
c3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6Ci0gICAgICAgIHNlbGYuX29wdGlv
bnMucmVzb3VyY2UgPSAnL2Nsb3NlJwotICAgICAgICBzZWxmLl9ydW5fY2xvc2Vfd2l0aF9jb2Rl
X2FuZF9yZWFzb25fdGVzdCgKLSAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRo
X2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCi0KLSAgICBkZWYgdGVzdF9tdXhfZWNobyhzZWxm
KToKLSAgICAgICAgc2VsZi5fcnVuX211eF90ZXN0KF9tdXhfZWNob19jaGVja19wcm9jZWR1cmUp
Ci0KLSAgICBkZWYgdGVzdF9jbG9zZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKLSAgICAgICAg
IiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2Nv
bCBlcnJvciBzdGF0dXMKLSAgICAgICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3
aXRoIHNvbWUgcHJvdG9jb2wgZXJyb3IuCi0gICAgICAgICIiIgotCi0gICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICAg
ICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lIHdpdGhvdXQgYW55IHByZWNlZGluZyBzdGFydCBv
ZiBmcmFnbWVudGF0aW9uCi0gICAgICAgICAgICAjIGZyYW1lLgotICAgICAgICAgICAgY2xpZW50
LnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKCdceDgwXHg4MCcsICcnKQotICAgICAgICAg
ICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Rl
c3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX3Vuc3VwcG9ydGVkX2Zy
YW1lKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9z
ZSBmcmFtZSB3aXRoIHVuc3VwcG9ydGVkIG9wZXJhdGlvbgotICAgICAgICBzdGF0dXMgY29kZSB3
aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSBhc2tpbmcgc29tZSBvcGVyYXRpb24gdGhhdCBpcwot
ICAgICAgICBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVj
dCgpCi0KLSAgICAgICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KLSAg
ICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcygnXHg5MVx4ODAn
LCAnJykKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAg
ICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEpCi0KLSAg
ICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3Nl
X29uX2ludmFsaWRfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIHNlcnZl
ciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggaW52YWxpZCBmcmFtZSBwYXlsb2FkCi0gICAgICAg
IGRhdGEgc3RhdHVzIGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGFuIGludmFsaWQgZnJhbWUg
bGlrZSBjb250YWluaW5nCi0gICAgICAgIGludmFsaWQgVVRGLTggY2hhcmFjdGVyLgotICAgICAg
ICAiIiIKLQotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAg
Y2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAjIFRleHQgZnJhbWUgd2l0aCBpbnZhbGlk
IFVURi04IHN0cmluZy4KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ1x4ODAnLCBy
YXc9VHJ1ZSkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAg
ICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9B
RF9EQVRBKQotCi0gICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCi0KLSAgICBk
ZWYgdGVzdF9jbG9zZV9vbl9pbnRlcm5hbF9lbmRwb2ludF9lcnJvcihzZWxmKToKLSAgICAgICAg
IiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5h
bCBlbmRwb2ludAotICAgICAgICBlcnJvciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRv
ZXMgYmFkIG9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucy5y
ZXNvdXJjZSA9ICcvaW50ZXJuYWxfZXJyb3InCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24o
Y2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLSAgICAgICAgICAgIGNsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3Rp
bmcuU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQotCi0gICAgICAgIHNlbGYuX3J1bl90
ZXN0KHRlc3RfZnVuY3Rpb24pCi0KLSAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8g
dmVyaWZ5IGludmFsaWQgYWJzb2x1dGUgdXJpIGhhbmRsaW5nIGxpa2UKLSAgICAjIGhvc3QgdW5t
YXRjaCwgcG9ydCB1bm1hdGNoIGFuZCBpbnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRo
b3V0IHBvcnQKLSAgICAjIG51bWJlcikuCi0KLSAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2Vs
Zik6Ci0gICAgICAgICIiIlRlc3RzIGFic29sdXRlIHVyaSByZXF1ZXN0LiIiIgotCi0gICAgICAg
IG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6
Ly9sb2NhbGhvc3Q6JWQvZWNobycgJSBvcHRpb25zLnNlcnZlcl9wb3J0Ci0gICAgICAgIHNlbGYu
X3J1bl90ZXN0X3dpdGhfY2xpZW50X29wdGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRp
b25zKQotCi0gICAgZGVmIHRlc3Rfb3JpZ2luX2NoZWNrKHNlbGYpOgotICAgICAgICAiIiJUZXN0
cyBodHRwIGZhbGxiYWNrIG9uIG9yaWdpbiBjaGVjayBmYWlsLiIiIgotCi0gICAgICAgIG9wdGlv
bnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9j
aGVjaycKLSAgICAgICAgIyBTZXJ2ZXIgc2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQw
MyBmYWxsYmFjay4gVGhpcyB3YXJuaW5nCi0gICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcu
IEZvbGxvd2luZyBwaXBlIGRpc3Bvc2VzIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAgICAgIHNlbGYu
c2VydmVyX3N0ZGVyciA9IHN1YnByb2Nlc3MuUElQRQotICAgICAgICBzZWxmLl9ydW5faHR0cF9m
YWxsYmFja190ZXN0KG9wdGlvbnMsIDQwMykKLQotICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2so
c2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBm
YWlsLiIiIgotCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIG9wdGlv
bnMudmVyc2lvbiA9IDk5Ci0gICAgICAgIHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0
aW9ucywgNDAwKQotCi0KLWNsYXNzIEVuZFRvRW5kSHlCaTAwVGVzdChFbmRUb0VuZFRlc3RCYXNl
KToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAo
c2VsZikKLQotICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6Ci0gICAgICAg
IHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0
aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0g
Y2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnRfaHliaTAwKHNlbGYuX29wdGlvbnMpCi0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0g
ICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQo
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZl
ci5waWQpCi0KLSAgICBkZWYgdGVzdF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVz
dChfZWNob19jaGVja19wcm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9z
ZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dp
dGhfZ29vZGJ5ZSkKLQotCi1jbGFzcyBFbmRUb0VuZFRlc3RXaXRoRWNob0NsaWVudChFbmRUb0Vu
ZFRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIEVuZFRvRW5kVGVzdEJh
c2Uuc2V0VXAoc2VsZikKLQotICAgIGRlZiBfY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1
bHQoCi0gICAgICAgIHNlbGYsIGV4cGVjdGVkLCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKToKLSAg
ICAgICAgYWN0dWFsID0gc3Rkb3V0ZGF0YS5kZWNvZGUoInV0Zi04IikKLSAgICAgICAgaWYgYWN0
dWFsICE9IGV4cGVjdGVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVk
IHJlc3VsdCBvbiBleGFtcGxlIGVjaG8gY2xpZW50OiAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZXhwZWN0ZWQsIGFjdHVhbCkpCi0gICAgICAgIGlmIHN0ZGVycmRhdGEgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgZXJyb3Ig
bWVzc2FnZSBvbiBleGFtcGxlIGVjaG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj
bGllbnQ6ICVyJyAlIHN0ZGVycmRhdGEpCi0KLSAgICBkZWYgdGVzdF9leGFtcGxlX2VjaG9fY2xp
ZW50KHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBlY2hvX2NsaWVudC5weSBleGFt
cGxlIGNhbiB0YWxrIHdpdGggdGhlIHNlcnZlci4iIiIKLQotICAgICAgICBzZXJ2ZXIgPSBzZWxm
Ll9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VS
VkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIGNsaWVudF9jb21tYW5kID0gb3MucGF0
aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYudG9wX2RpciwgJ2V4YW1wbGUnLCAnZWNob19j
bGllbnQucHknKQotCi0gICAgICAgICAgICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1
bHQgbWVzc2FnZXMuCi0gICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKCdTZW5kOiBI
ZWxsb1xuJyAnUmVjdjogSGVsbG9cbicKLSAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1
NjcyY1xuJyB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJwotICAgICAgICAgICAgICAgICdTZW5kIGNs
b3NlXG4nICdSZWN2IGFja1xuJykKLQotICAgICAgICAgICAgYXJncyA9IFtjbGllbnRfY29tbWFu
ZCwKLSAgICAgICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3Bv
cnQpXQotICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3Ms
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJk
YXRhID0gY2xpZW50LmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1w
bGVfZWNob19jbGllbnRfcmVzdWx0KAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2V4cGVj
dGF0aW9uLCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQotCi0gICAgICAgICAgICAjIFByb2Nlc3Mg
YSBiaWcgbWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggaXMgdXNlZC4K
LSAgICAgICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoLCB3c192ZXJz
aW9uIGF0dHJpYnV0ZSB3aWxsIGJlCi0gICAgICAgICAgICAjIGFjY2Vzc2VkLiBUaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkgc2V0LgotICAgICAgICAgICAgYmln
X21lc3NhZ2UgPSAnYScgKiAxMDI0Ci0gICAgICAgICAgICBhcmdzID0gW2NsaWVudF9jb21tYW5k
LAotICAgICAgICAgICAgICAgICAgICAnLXAnLCBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCksCi0gICAgICAgICAgICAgICAgICAgICctbScsIGJpZ19tZXNzYWdlXQotICAgICAgICAgICAg
Y2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNz
LlBJUEUpCi0gICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xpZW50LmNvbW11
bmljYXRlKCkKLSAgICAgICAgICAgIGV4cGVjdGVkID0gKCdTZW5kOiAlc1xuUmVjdjogJXNcblNl
bmQgY2xvc2VcblJlY3YgYWNrXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChiaWdfbWVz
c2FnZSwgYmlnX21lc3NhZ2UpKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hv
X2NsaWVudF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQsIHN0ZG91dGRhdGEsIHN0
ZGVycmRhdGEpCi0KLSAgICAgICAgICAgICMgVGVzdCB0aGUgcGVybWVzc2FnZS1kZWZsYXRlIGV4
dGVuc2lvbi4KLSAgICAgICAgICAgIGFyZ3MgPSBbY2xpZW50X2NvbW1hbmQsCi0gICAgICAgICAg
ICAgICAgICAgICctcCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwKLSAgICAgICAg
ICAgICAgICAgICAgJy0tdXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSddCi0gICAgICAgICAgICBjbGll
bnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSkKLSAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNh
dGUoKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQo
Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24sIHN0ZG91dGRhdGEsIHN0
ZGVycmRhdGEpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nl
c3Moc2VydmVyLnBpZCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0
ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YTQzODQ3OTJiZi4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJU
ZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBv
cnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2Nh
dGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGV4dGVuc2lvbnMKLQotCi1jbGFz
cyBFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBm
b3Igbm9uLWNsYXNzIG1ldGhvZHMgaW4gZXh0ZW5zaW9ucy5weSIiIgotCi0gICAgZGVmIHRlc3Rf
cGFyc2Vfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywg
J2Zvb2JhcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnIDggJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3df
Yml0cywgJzAwMDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0
ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykK
LQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJz
ZV93aW5kb3dfYml0cywgJzkuNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKLQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnLTgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBl
eHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAnKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnMTYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAg
ICAgICBWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzEwMDAwMDAw
JykKLQotCi1jbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3JQYXJzaW5nVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IgcGFyc2VzIGdpdmVuCi0gICAgZXh0ZW5zaW9u
IHBhcmFtZXRlciBjb3JyZWN0bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShz
ZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nl
c3NvcigKLSAgICAgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdkZWZsYXRl
LWZyYW1lJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lv
blByb2Nlc3NvcikKLQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNp
b25fcHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
J3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNl
KHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuRGVm
bGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAgZGVmIHRlc3RfbWluaW1hbF9vZmZl
cihzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRl
bnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdw
ZXJmcmFtZS1kZWZsYXRlJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRl
ZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVu
KHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
emxpYi5NQVhfV0JJVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9yZmMx
OTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9j
ZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICBkZWYg
dGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFyYW1ldGVy
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMnLCAnMTAnKQotICAgICAg
ICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihw
YXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCBy
ZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nl
c3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZl
cl93aXRoX291dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFt
ZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAg
ICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRv
d19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIu
YWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29y
ID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXIoc2Vs
Zik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZy
YW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbm9fY29udGV4
dF90YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9
IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgncGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90
YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93
aXRoX3ZhbHVlKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0
ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0g
ZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25fcGFyYW1ldGVyKHNlbGYpOgot
ICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1k
ZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2ZvbycsICdiYXInKQot
ICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxh
dGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEg
dW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9j
ZXNzb3IgcGFyc2VzCi0gICAgZ2l2ZW4gZXh0ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0bHkuCi0g
ICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToKLSAgICAgICAgcHJvY2Vzc29y
ID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0K
LSAgICBkZWYgdGVzdF9taW5pbWFsX29mZmVyKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBl
eHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAg
ICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0KLSAg
ICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRl
cnMoKSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19i
aXRzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRl
ci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dp
bmRvd19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpCi0gICAgICAgIHByb2Nlc3NvciA9
IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVy
KQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2Uo
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25z
ZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93aW5kb3df
Yml0cycsICcxMCcpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFy
YW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5fcmZj
MTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX291
dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBh
cmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhf
d2luZG93X2JpdHNfd2l0aG91dF92YWx1ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFy
YW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCBOb25lKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19j
b250ZXh0X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRk
X3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBw
cm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29y
KHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRl
JywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nl
c3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0
ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNlbGYpOgotICAg
ICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5Q
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQot
ICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAg
IHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykKLSAgICAg
ICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdl
dF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvckJ1aWxkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1
bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvciBidWlsZHMKLSAgICBhIHJlc3BvbnNlIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIGNv
cnJlY3RseS4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4X3dpbmRv
d19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignY2xpZW50X21heF93aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4
dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQot
ICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTApCi0KLSAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgJzEw
JyldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkp
Ci0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0X2Ns
aWVudF9wZXJtaXNzaW9uKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29tbW9uLkV4
dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0gICAgICAgIHByb2Nlc3Nv
ci5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxMCkKLQotICAgICAgICByZXNwb25zZSA9IHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUocmVzcG9uc2UpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX3RydWVfZm9yX25vX2Nv
bnRleHRfdGFrZW92ZXIoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVy
TWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLQotICAgICAgICBwcm9jZXNz
b3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUpCi0KLSAgICAgICAgcmVzcG9u
c2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQotCi0g
ICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9mYWxzZV9mb3Jfbm9fY29udGV4dF90YWtlb3Zlcihz
ZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4
dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
J3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXIoRmFsc2UpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLQotaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X2hhbmRzaGFrZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3OGFjMDVlNTg3
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUuIiIiCi0K
LQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lvblBhcmFtZXRlcgotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5jb21tb24gaW1wb3J0IGZvcm1hdF9leHRlbnNpb25zCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5jb21tb24gaW1wb3J0IHBhcnNlX2V4dGVuc2lvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29sCi0KLQot
Y2xhc3MgVmFsaWRhdGVTdWJwcm90b2NvbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIi
IkEgdW5pdHRlc3QgZm9yIHZhbGlkYXRlX3N1YnByb3RvY29sIG1ldGhvZC4iIiIKLQotICAgIGRl
ZiB0ZXN0X3ZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYpOgotICAgICAgICAjIFNob3VsZCBzdWNj
ZWVkLgotICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlJykKLSAgICAgICAgdmFs
aWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScpCi0gICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29s
KCdzYW1wbGVceDdlcHJvdG9jb2wnKQotCi0gICAgICAgICMgU2hvdWxkIGZhaWwuCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlw
cm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxl
XHg3ZnByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnXHU2NWU1XHU2NzJjJykKLQotCi1fVEVTVF9UT0tFTl9FWFRFTlNJ
T05fREFUQSA9IFsKLSAgICAoJ2ZvbycsIFsoJ2ZvbycsIFtdKV0pLAotICAgICgnZm9vOyBiYXIn
LCBbKCdmb28nLCBbKCdiYXInLCBOb25lKV0pXSksCi0gICAgKCdmb287IGJhcj1iYXonLCBbKCdm
b28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAotICAgICgnZm9vOyBiYXI9YmF6OyBjYXI9Y2RyJywg
WygnZm9vJywgWygnYmFyJywgJ2JheicpLCAoJ2NhcicsICdjZHInKV0pXSksCi0gICAgKCdmb287
IGJhcj1iYXosIGNhcjsgY2RyJywKLSAgICAgWygnZm9vJywgWygnYmFyJywgJ2JheicpXSksICgn
Y2FyJywgWygnY2RyJywgTm9uZSldKV0pLAotICAgICgnYSwgYiwgYywgZCcsCi0gICAgIFsoJ2En
LCBbXSksICgnYicsIFtdKSwgKCdjJywgW10pLCAoJ2QnLCBbXSldKSwKLSAgICBdCi0KLQotX1RF
U1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgnZm9vOyBiYXI9IiInLCBbKCdmb28n
LCBbKCdiYXInLCAnJyldKV0pLAotICAgICgnZm9vOyBiYXI9IiBiYXogIicsIFsoJ2ZvbycsIFso
J2JhcicsICcgYmF6ICcpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSIsYmF6OyInLCBbKCdmb28nLCBb
KCdiYXInLCAnLGJhejsnKV0pXSksCi0gICAgKCdmb287IGJhcj0iXFxcclxcXG5iYXoiJywgWygn
Zm9vJywgWygnYmFyJywgJ1xyXG5iYXonKV0pXSksCi0gICAgKCdmb287IGJhcj0iXFwiYmF6Iics
IFsoJ2ZvbycsIFsoJ2JhcicsICciYmF6JyldKV0pLAotICAgICgnZm9vOyBiYXI9Ilx4YmJiYXoi
JywgWygnZm9vJywgWygnYmFyJywgJ1x4YmJiYXonKV0pXSksCi0gICAgXQotCi0KLV9URVNUX1JF
RFVOREFOVF9UT0tFTl9FWFRFTlNJT05fREFUQSA9IFsKLSAgICAoJ2ZvbyBcdCAnLCBbKCdmb28n
LCBbXSldKSwKLSAgICAoJ2ZvbzsgXHJcbiBiYXInLCBbKCdmb28nLCBbKCdiYXInLCBOb25lKV0p
XSksCi0gICAgKCdmb287IGJhcj1cclxuIFxyXG4gYmF6JywgWygnZm9vJywgWygnYmFyJywgJ2Jh
eicpXSldKSwKLSAgICAoJ2ZvbyA7YmFyID0gYmF6ICcsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXon
KV0pXSksCi0gICAgKCdmb28sYmFyLCxiYXonLCBbKCdmb28nLCBbXSksICgnYmFyJywgW10pLCAo
J2JheicsIFtdKV0pLAotICAgIF0KLQotCi1fVEVTVF9SRURVTkRBTlRfUVVPVEVEX0VYVEVOU0lP
Tl9EQVRBID0gWwotICAgICgnZm9vOyBiYXI9IlxyXG4gXHJcbiBiYXoiJywgWygnZm9vJywgWygn
YmFyJywgJyAgYmF6JyldKV0pLAotICAgIF0KLQotCi1jbGFzcyBFeHRlbnNpb25zUGFyc2VyVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgX3ZlcmlmeV9leHRlbnNpb25fbGlzdChz
ZWxmLCBleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICIiIlZlcmlmaWVzIHRo
YXQgRXh0ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMgaW4gYWN0dWFsX2xpc3QgaGF2ZSB0aGUKLSAg
ICAgICAgc2FtZSBtZW1iZXJzIGFzIGV4dGVuc2lvbiBkZWZpbml0aW9ucyBpbiBleHBlY3RlZF9s
aXN0LiBFeHRlbnNpb24KLSAgICAgICAgZGVmaW5pdGlvbiB1c2VkIGluIHRoaXMgdGVzdCBpcyBh
IHBhaXIgb2YgYW4gZXh0ZW5zaW9uIG5hbWUgYW5kIGEKLSAgICAgICAgcGFyYW1ldGVyIGRpY3Rp
b25hcnkuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVj
dGVkX2xpc3QpLCBsZW4oYWN0dWFsX2xpc3QpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVh
bCBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QpOgotICAgICAgICAgICAgKG5hbWUs
IHBhcmFtZXRlcnMpID0gZXhwZWN0ZWQKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFt
ZSwgYWN0dWFsLl9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbWV0ZXJz
LCBhY3R1YWwuX3BhcmFtZXRlcnMpCi0KLSAgICBkZWYgdGVzdF9wYXJzZShzZWxmKToKLSAgICAg
ICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRpb24gaW4gX1RFU1RfVE9LRU5fRVhURU5T
SU9OX0RBVEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAg
ICAgICAgICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5n
KSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3F1b3RlZF9kYXRhKHNlbGYpOgotICAgICAgICBmb3Ig
Zm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9RVU9URURfRVhURU5TSU9OX0RB
VEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAg
ICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQot
ICAgIGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgotICAgICAgICBmb3IgKGZv
cm1hdHRlZF9zdHJpbmcsCi0gICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5E
QU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBOgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVu
c2lvbl9saXN0KAotICAgICAgICAgICAgICAgIGRlZmluaXRpb24sIHBhcnNlX2V4dGVuc2lvbnMo
Zm9ybWF0dGVkX3N0cmluZykpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZWR1bmRhbnRfcXVvdGVk
X2RhdGEoc2VsZik6Ci0gICAgICAgIGZvciAoZm9ybWF0dGVkX3N0cmluZywKLSAgICAgICAgICAg
ICBkZWZpbml0aW9uKSBpbiBfVEVTVF9SRURVTkRBTlRfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgot
ICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9saXN0KAotICAgICAgICAgICAgICAg
IGRlZmluaXRpb24sIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCi0KLSAgICBk
ZWYgdGVzdF9wYXJzZV9iYWRfZGF0YShzZWxmKToKLSAgICAgICAgX1RFU1RfQkFEX0VYVEVOU0lP
Tl9EQVRBID0gWwotICAgICAgICAgICAgKCdmb287IDsgJyksCi0gICAgICAgICAgICAoJ2Zvbzsg
YSBhJyksCi0gICAgICAgICAgICAoJ2ZvbyBmb28nKSwKLSAgICAgICAgICAgICgnLCwsJyksCi0g
ICAgICAgICAgICAoJ2ZvbzsgYmFyPScpLAotICAgICAgICAgICAgKCdmb287IGJhcj0iaG9nZScp
LAotICAgICAgICAgICAgKCdmb287IGJhcj0iYVxyIicpLAotICAgICAgICAgICAgKCdmb287IGJh
cj0iXFxceGZmIicpLAotICAgICAgICAgICAgKCdmb287IGJhcj1ccmEnKSwKLSAgICAgICAgICAg
IF0KLQotICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9O
X0RBVEE6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgICAgICBF
eHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uLCBwYXJzZV9leHRlbnNpb25zLCBmb3JtYXR0ZWRfc3Ry
aW5nKQotCi0KLWNsYXNzIEZvcm1hdEV4dGVuc2lvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LQotICAgIGRlZiB0ZXN0X2Zvcm1hdF9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICBmb3IgZm9y
bWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbnMgaW4gX1RFU1RfVE9LRU5fRVhURU5TSU9OX0RBVEE6
Ci0gICAgICAgICAgICBleHRlbnNpb25zID0gW10KLSAgICAgICAgICAgIGZvciBkZWZpbml0aW9u
IGluIGRlZmluaXRpb25zOgotICAgICAgICAgICAgICAgIChuYW1lLCBwYXJhbWV0ZXJzKSA9IGRl
ZmluaXRpb24KLSAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBFeHRlbnNpb25QYXJhbWV0ZXIo
bmFtZSkKLSAgICAgICAgICAgICAgICBleHRlbnNpb24uX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJz
Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfc3RyaW5nLCBm
b3JtYXRfZXh0ZW5zaW9ucyhleHRlbnNpb25zKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9o
YW5kc2hha2VfaHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhYWY2NDBh
NTg4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
Ci0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9u
LgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4iIiIK
LQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lz
LnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2Ug
aW1wb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vi
c29ja2V0LmhhbmRzaGFrZS5oeWJpIGltcG9ydCBIYW5kc2hha2VyCi0KLWltcG9ydCBtb2NrCi0K
LQotY2xhc3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIGZvciBo
b2xkaW5nIGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJpbmdzIGZv
cgotICAgIHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2QsIHVyaSwgaGVhZGVycyk6Ci0gICAgICAg
IHNlbGYubWV0aG9kID0gbWV0aG9kCi0gICAgICAgIHNlbGYudXJpID0gdXJpCi0gICAgICAgIHNl
bGYuaGVhZGVycyA9IGhlYWRlcnMKLQotCi1kZWYgX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCk6
Ci0gICAgcmV0dXJuIFJlcXVlc3REZWZpbml0aW9uKAotICAgICAgICAnR0VUJywgJy9kZW1vJywK
LSAgICAgICAgeydIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCi0gICAgICAgICAnVXBncmFk
ZSc6ICd3ZWJzb2NrZXQnLAotICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAg
ICAgICAnU2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09JywKLSAg
ICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAotICAgICAgICAgJ09yaWdpbic6
ICdodHRwOi8vZXhhbXBsZS5jb20nfSkKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3Rf
ZGVmKToKLSAgICBjb25uID0gbW9jay5Nb2NrQ29ubignJykKLSAgICByZXR1cm4gbW9jay5Nb2Nr
UmVxdWVzdCgKLSAgICAgICAgbWV0aG9kPXJlcXVlc3RfZGVmLm1ldGhvZCwKLSAgICAgICAgdXJp
PXJlcXVlc3RfZGVmLnVyaSwKLSAgICAgICAgaGVhZGVyc19pbj1yZXF1ZXN0X2RlZi5oZWFkZXJz
LAotICAgICAgICBjb25uZWN0aW9uPWNvbm4pCi0KLQotZGVmIF9jcmVhdGVfaGFuZHNoYWtlcihy
ZXF1ZXN0KToKLSAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tE
aXNwYXRjaGVyKCkpCi0gICAgcmV0dXJuIGhhbmRzaGFrZXIKLQotCi1jbGFzcyBTdWJwcm90b2Nv
bENob29zaW5nRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVz
dGluZy4gVGhpcyBkaXNwYXRjaGVyIHNldHMgdGhlIGktdGggc3VicHJvdG9jb2wKLSAgICBvZiBy
ZXF1ZXN0ZWQgb25lcyB0byB3c19wcm90b2NvbCB3aGVyZSBpIGlzIGdpdmVuIG9uIGNvbnN0cnVj
dGlvbiBhcyBpbmRleAotICAgIGFyZ3VtZW50LiBJZiBpbmRleCBpcyBuZWdhdGl2ZSwgZGVmYXVs
dF92YWx1ZSB3aWxsIGJlIHNldCB0byB3c19wcm90b2NvbC4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBpbmRleCwgZGVmYXVsdF92YWx1ZT1Ob25lKToKLSAgICAgICAgc2VsZi5p
bmRleCA9IGluZGV4Ci0gICAgICAgIHNlbGYuZGVmYXVsdF92YWx1ZSA9IGRlZmF1bHRfdmFsdWUK
LQotICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAg
ICAgaWYgc2VsZi5pbmRleCA+PSAwOgotICAgICAgICAgICAgY29ubl9jb250ZXh0LndzX3Byb3Rv
Y29sID0gY29ubl9jb250ZXh0LndzX3JlcXVlc3RlZF9wcm90b2NvbHNbCi0gICAgICAgICAgICAg
ICAgc2VsZi5pbmRleF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbm5fY29udGV4dC53
c19wcm90b2NvbCA9IHNlbGYuZGVmYXVsdF92YWx1ZQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEo
c2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIEhhbmRzaGFrZUFi
b3J0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLQotY2xhc3MgQWJvcnRpbmdE
aXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlz
IGRpc3BhdGNoZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpbgotICAgIGRvX2V4dHJhX2hhbmRzaGFr
ZSB0byByZWplY3QgdGhlIHJlcXVlc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFu
ZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUFib3J0
ZWRFeGNlcHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWplY3QgdGhlIHJlcXVlc3QnKQotCi0gICAg
ZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0K
LWNsYXNzIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiQSBkaXNwYXRj
aGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuCi0gICAgQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0
LgotICAgICIiIgotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRl
eHQpOgotICAgICAgICByYWlzZSBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCdBbiBBYm9ydGVkQnlV
c2VyRXhjZXB0aW9uIHRvIHJlamVjdCB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXF1ZXN0JykKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5f
Y29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi1fRVhQRUNURURfUkVTUE9OU0UgPSAoCi0gICAg
J0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKLSAgICAnVXBncmFkZTogd2Vi
c29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289XHJcblxyXG4nKQotCi0K
LWNsYXNzIEhhbmRzaGFrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0
ZXN0IGZvciBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVy
Ci0gICAgaGFuZHNoYWtlIHByb2Nlc3Nvci4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X2RvX2hh
bmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfY3JlYXRl
X2dvb2RfcmVxdWVzdF9kZWYoKSkKLSAgICAgICAgZGlzcGF0Y2hlciA9IG1vY2suTW9ja0Rpc3Bh
dGNoZXIoKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBkaXNwYXRj
aGVyKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jy9kZW1vJywgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
aHR0cDovL2V4YW1wbGUuY29tJywgcmVxdWVzdC53c19vcmlnaW4pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19wcm90b2NvbCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCByZXF1ZXN0LndzX2V4dGVuc2lvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsIHJlcXVlc3Qud3NfdmVyc2lvbikKLQotICAg
IGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2V4dHJhX2hlYWRlcnMoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgIyBBZGQg
aGVhZGVycyBub3QgcmVsYXRlZCB0byBXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UuCi0gICAg
ICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Zvb0tleSddID0gJ0JhclZhbHVlJwotICAgICAgICBy
ZXF1ZXN0X2RlZi5oZWFkZXJzWydFbXB0eUtleSddID0gJycKLQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0
ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05T
RSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfZG9f
aGFuZHNoYWtlX3dpdGhfY2FwaXRhbGl6ZWRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Rf
ZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1sndXBncmFkZSddID0gJ1dFQlNPQ0tFVCcKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5k
c2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
Q29ubmVjdGlvbiddID0gJ1VQR1JBREUnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtl
cihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX211bHRpcGxlX2Nvbm5lY3Rpb25fdmFsdWVzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2Rl
ZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRl
cnNbJ0Nvbm5lY3Rpb24nXSA9ICdVcGdyYWRlLCBrZWVwLWFsaXZlLCAsICcKLQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2Vy
ID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFu
ZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RF
RF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3RfYWJvcnRpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcigKLSAgICAgICAgICAgIF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVz
dF9kZWYoKSksCi0gICAgICAgICAgICBBYm9ydGluZ0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgIyBk
b19leHRyYV9oYW5kc2hha2UgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gQ2hlY2sgdGhhdCBpdCdzIG5v
dCBjYXVnaHQgYnkKLSAgICAgICAgIyBkb19oYW5kc2hha2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKEhhbmRzaGFrZUFib3J0ZWRFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9jb2woc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2NoYXQsIHN1cGVy
Y2hhdCcKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQot
ICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBTdWJwcm90b2NvbENob29z
aW5nRGlzcGF0Y2hlcigwKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotCi0g
ICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICAgICAgICAgJ0hUVFAvMS4xIDEwMSBT
d2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKLSAgICAgICAgICAgICdVcGdyYWRlOiB3ZWJzb2NrZXRc
clxuJwotICAgICAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289XHJcbicK
LSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBjaGF0XHJcblxyXG4nKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY2hhdCcsIHJl
cXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2VfcHJvdG9jb2xf
bm90X2luX3JlcXVlc3RfYnV0X2luX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2Rl
ZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKAot
ICAgICAgICAgICAgcmVxdWVzdCwgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoLTEsICdm
b29iYXInKSkKLSAgICAgICAgIyBObyByZXF1ZXN0IGhhcyBiZWVuIG1hZGUgYnV0IHdzX3Byb3Rv
Y29sIGlzIHNldC4gSGFuZHNoYWtlRXhjZXB0aW9uCi0gICAgICAgICMgbXVzdCBiZSByYWlzZWQu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2Nv
bF9ub19wcm90b2NvbF9zZWxlY3Rpb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2Ny
ZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2NoYXQsIHN1cGVyY2hhdCcKLQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0g
X2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgICMgd3NfcHJvdG9jb2wgaXMgbm90
IHNldC4gSGFuZHNoYWtlRXhjZXB0aW9uIG11c3QgYmUgcmFpc2VkLgotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQot
Ci0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKLSAgICAgICAg
ICAgICdwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJykKLQot
ICAgICAgICBFWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAxMDEg
U3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCi0gICAgICAgICAgICAnVXBncmFkZTogd2Vic29ja2V0
XHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAg
ICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4n
Ci0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAnCi0gICAgICAgICAgICAg
ICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXJcclxuJwot
ICAgICAgICAgICAgJ1xyXG4nKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVx
dWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5z
aW9ucykpCi0gICAgICAgIGV4dGVuc2lvbiA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9O
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNp
b24uZ2V0X3BhcmFtZXRlcl92YWx1ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
bGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFr
ZV93aXRoX3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1Nl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVm
bGF0ZSwgLCAnCi0gICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJc
biAgICAgIFxcXHJmICAiOyBwdj1ucnQnKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFr
ZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkK
LSAgICAgICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9u
c1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBmaXJz
dF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVxdWVzdC53
c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1sxXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd1bmtu
b3duJywgc2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBbJ2UnLCAnbWEnLCAncHYnXSwgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFy
YW1ldGVyX25hbWVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21jXjInLCBzZWNvbmRf
ZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnIFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ21hJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29uZF9leHRlbnNpb24uZ2V0X3Bh
cmFtZXRlcl92YWx1ZSgncHYnKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX29w
dGlvbmFsX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlWYWx1ZSdd
ID0gJycKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtleSddID0gJ0FWYWx1ZScKLQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBo
YW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
ICdBVmFsdWUnLCByZXF1ZXN0LmhlYWRlcnNfaW5bJ0FLZXknXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgICcnLCByZXF1ZXN0LmhlYWRlcnNfaW5bJ0VtcHR5VmFsdWUn
XSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAg
aGFuZHNoYWtlciA9IEhhbmRzaGFrZXIoCi0gICAgICAgICAgICBfY3JlYXRlX3JlcXVlc3QoX2Ny
ZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAotICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckRpc3Bh
dGNoZXIoKSkKLSAgICAgICAgIyBkb19leHRyYV9oYW5kc2hha2UgcmFpc2VzIGFuIEFib3J0ZWRC
eVVzZXJFeGNlcHRpb24uIENoZWNrIHRoYXQgaXQncwotICAgICAgICAjIG5vdCBjYXVnaHQgYnkg
ZG9faGFuZHNoYWtlLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBYm9ydGVkQnlVc2VyRXhj
ZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRz
aGFrZV93aXRoX211eF9hbmRfZGVmbGF0ZV9mcmFtZShzZWxmKToKLSAgICAgICAgcmVxdWVzdF9k
ZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFk
ZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgnJXMsICVzJyAlICgKLSAgICAgICAg
ICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICBjb21tb24uREVG
TEFURV9GUkFNRV9FWFRFTlNJT04pKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJl
cXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgIyBtdXgg
c2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1
ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5ERUZM
QVRFX0ZSQU1FX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X2V4dGVuc2lvbnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihyZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpKQotCi0g
ICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfZGVmbGF0ZV9mcmFtZV9hbmRfbXV4KHNlbGYp
OgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAg
ICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKCcl
cywgJXMnICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lP
TiwKLSAgICAgICAgICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBf
Y3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICAjIG11eCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIGZpcnN0X2V4
dGVuc2lvbiA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJzdF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIs
IGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihyZXF1ZXN0LCAnbXV4JykpCi0KLSAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wZXJtZXNzYWdlX2RlZmxhdGVfYW5kX211eChzZWxm
KToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAg
ICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgK
LSAgICAgICAgICAgICclcywgJXMnICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNT
QUdFX0RFRkxBVEVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgIGNvbW1vbi5NVVhfRVhURU5T
SU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAg
ICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBo
YW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBs
ZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
b24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4
dGVuc2lvbnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
ZGVmbGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1V
WF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNp
b25fcHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRy
KHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1
ZXN0Lm11eF9wcm9jZXNzb3IuaXNfYWN0aXZlKCkpCi0gICAgICAgIG11eF9leHRlbnNpb25zID0g
cmVxdWVzdC5tdXhfcHJvY2Vzc29yLmV4dGVuc2lvbnMoKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIGxlbihtdXhfZXh0ZW5zaW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgbXV4X2V4dGVuc2lvbnNbMF0ubmFtZSgpKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtl
X3dpdGhfbXV4X2FuZF9wZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Rf
ZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAnJXMsICVz
JyAlICgKLSAgICAgICAgICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAg
ICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBf
Y3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICAjIG11eCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIGZpcnN0X2V4
dGVuc2lvbiA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpcnN0X2V4dGVuc2lvbi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMiwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0KLSAgICBkZWYgdGVz
dF9iYWRfcmVxdWVzdHMoc2VsZik6Ci0gICAgICAgIGJhZF9jYXNlcyA9IFsKLSAgICAgICAgICAg
ICgnSFRUUCByZXF1ZXN0JywKLSAgICAgICAgICAgICBSZXF1ZXN0RGVmaW5pdGlvbigKLSAgICAg
ICAgICAgICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgICAgICAgICAgIHsnSG9zdCc6ICd3
d3cuZ29vZ2xlLmNvbScsCi0gICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBY
IDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMpIEdlY2tv
LzIwMDkwODI0IEZpcmVmb3gvMy41LjMnCi0gICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdU
QkEnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6Ci0gICAgICAgICAgICAgICAgICAgICAg
J3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcK
LSAgICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICAgICAgICdB
Y2NlcHQtTGFuZ3VhZ2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgICAgICAgJ0Fj
Y2VwdC1FbmNvZGluZyc6ICdnemlwLGRlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgJ0FjY2Vw
dC1DaGFyc2V0JzogJ0lTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAg
ICAgICAgICAnS2VlcC1BbGl2ZSc6ICczMDAnLAotICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rp
b24nOiAna2VlcC1hbGl2ZSd9KSwgTm9uZSwgVHJ1ZSldCi0KLSAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2Qg
PSAnUE9TVCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVl
c3RfZGVmLCBOb25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10K
LSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBO
b25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0
X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KLSAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25l
LCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2Nr
ZXQnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9k
ZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3Jl
cXVlc3RfZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24n
XQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVz
dF9kZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbidd
ID0gJ0Rvd25ncmFkZScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rp
b24nLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVy
c1snU2VjLVdlYlNvY2tldC1LZXknXQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2lu
ZyBTZWMtV2ViU29ja2V0LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT1nYXJiYWdlJykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgo
J1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBv
ZiAnYScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2Vj
LVdlYlNvY2tldC1LZXkgKGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCi0g
ICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9k
ZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICAjIFRoZSBsYXN0IGNoYXJh
Y3RlciByaWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KLSAgICAg
ICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAg
ICAgICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0nKQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5k
KAotICAgICAgICAgICAgKCdXcm9uZyBTZWMtV2ViU29ja2V0LUtleSAocGFkZGluZyBiaXRzIGFy
ZSBub3QgemVybyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0g
ICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAg
cmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAg
ICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0sZEdobElITmhiWEJzWlNCdWIyNWpaUT09JykKLSAg
ICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tl
dC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAs
IFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVm
KCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lv
biddCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVy
c2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVl
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddID0gJzMn
Ci0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24n
LCByZXF1ZXN0X2RlZiwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQot
Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAg
ICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAnMTMsIDEz
JwotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9u
IChtdWx0aXBsZSB2YWx1ZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9k
ZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVBy
b3RvY29sJ10gPSAnaWxsZWdhbFx4MDlwcm90b2NvbCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVu
ZCgoJ0lsbGVnYWwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJycKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgo
J0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVx
dWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywKLSAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtl
X2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgotICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2Vy
KHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3duIGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUp
Ci0gICAgICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdF9oYW5kc2hha2VfZXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKLSAg
ICAgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkwMC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDczZjlmMjdjYTJkOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X2hhbmRzaGFrZV9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MTYgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3Ig
aGFuZHNoYWtlLmh5YmkwMCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9y
dCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2Nr
ZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0
IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5Ymkw
MCBpbXBvcnQgSGFuZHNoYWtlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5Ymkw
MCBpbXBvcnQgX3ZhbGlkYXRlX3N1YnByb3RvY29sCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQot
Ci1fVEVTVF9LRVkxID0gJzQgQDEgIDQ2NTQ2eFclMGwgMSA1JwotX1RFU1RfS0VZMiA9ICcxMjk5
OCA1IFkzIDEgIC5QMDAnCi1fVEVTVF9LRVkzID0gJ15uOmRzWzRVJwotX1RFU1RfQ0hBTExFTkdF
X1JFU1BPTlNFID0gJzhqS1NcJ3k6RypDbyxXeGEtJwotCi0KLV9HT09EX1JFUVVFU1QgPSAoCi0g
ICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0Jzog
J2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAg
ICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tl
dC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAot
ICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdp
bic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dP
T0RfUkVRVUVTVF9DQVBJVEFMSVpFRF9IRUFERVJfVkFMVUVTID0gKAotICAgIDgwLAotICAgICdH
RVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScs
Ci0gICAgICAgICdDb25uZWN0aW9uJzogJ1VQR1JBREUnLAotICAgICAgICAnU2VjLVdlYlNvY2tl
dC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAn
c2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV0VCU09DS0VUJywKLSAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4
YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFUVVFU1RfQ0FT
RV9NSVhFRF9IRUFERVJfTkFNRVMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1v
JywKLSAgICB7Ci0gICAgICAgICdoT3NUJzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ2NPbk5l
Q3RJb04nOiAnVXBncmFkZScsCi0gICAgICAgICdzRWMtd0Vic09jS2VULWtFeTInOiBfVEVTVF9L
RVkyLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1wUm9Ub0NvTCc6ICdzYW1wbGUnLAotICAgICAg
ICAndVBnUmFEZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1rRXkxJzog
X1RFU1RfS0VZMSwKLSAgICAgICAgJ29SaUdpTic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAg
IH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JUID0gKAot
ICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAg
J1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwot
ICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwot
ICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAn
U2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9U
RVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFID0gKAotICAg
ICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1Vw
Z3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAg
ICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAg
ICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVT
VF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUID0g
KAotICAgIDgwODEsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdI
b3N0JzogJ2V4YW1wbGUuY29tOjgwODEnLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRl
JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdT
ZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dl
YlNvY2tldCcsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAg
ICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9L
RVkzKQotCi1fR09PRF9SRVNQT05TRV9OT05ERUZBVUxUX1BPUlQgPSAoCi0gICAgJ0hUVFAvMS4x
IDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2Vi
U29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAgICAnU2Vj
LVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFM
TEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYgPSAoCi0gICAg
J0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBn
cmFkZTogV2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAg
J1NlYy1XZWJTb2NrZXQtTG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4n
Ci0gICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAg
ICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0gICAg
X1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX05PX1BST1RPQ09MID0g
KAotICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9z
dCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAg
ICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1VwZ3JhZGUn
OiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEs
Ci0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9U
RVNUX0tFWTMpCi0KLV9HT09EX1JFU1BPTlNFX05PX1BST1RPQ09MID0gKAotICAgICdIVFRQLzEu
MSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdl
YlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2Vi
U29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2Vi
U29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnXHJcbicgKwotICAg
IF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFM
X0hFQURFUlMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0g
ICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBn
cmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAg
ICAnRW1wdHlWYWx1ZSc6ICcnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdz
YW1wbGUnLAotICAgICAgICAnQUtleSc6ICdBVmFsdWUnLAotICAgICAgICAnVXBncmFkZSc6ICdX
ZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAg
ICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1Rf
S0VZMykKLQotIyBUT0RPKHR5b3NoaW5vKTogSW5jbHVkZSBcciBcbiBpbiBrZXkzLCBjaGFsbGVu
Z2UgcmVzcG9uc2UuCi0KLV9HT09EX1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZID0gKAot
ICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6
ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAg
ICAnU2VjLVdlYlNvY2tldC1LZXkyJzogJ3kgIFIyIDQ4IFExTzQgIGV8QlYzIGk1IDEgIHUtIDY1
JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAg
J1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6ICcz
NiA3ICAgNzQgaSAgOTIgMlwnbSA5IDBHJywKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhh
bXBsZS5jb20nLAotICAgIH0sCi0gICAgJycuam9pbihtYXAoY2hyLCBbMHgwMSwgMHhkMSwgMHhk
ZCwgMHgzYiwgMHhkMSwgMHg1NiwgMHg2MywgMHhmZl0pKSkKLQotX0dPT0RfUkVTUE9OU0VfV0lU
SF9OT05QUklOVEFCTEVfS0VZID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3Rv
Y29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nv
bm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czov
L2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDov
L2V4YW1wbGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJc
bicKLSAgICAnXHJcbicgKwotICAgICcnLmpvaW4obWFwKGNociwgWzB4MGIsIDB4OTksIDB4ZmEs
IDB4NTUsIDB4YmQsIDB4MDEsIDB4MjMsIDB4N2IsCi0gICAgICAgICAgICAgICAgICAgICAgMHg0
NSwgMHhhMiwgMHhmMSwgMHhkMCwgMHg4NywgMHg4YSwgMHhlZSwgMHhlYl0pKSkKLQotX0dPT0Rf
UkVRVUVTVF9XSVRIX1FVRVJZX1BBUlQgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9k
ZW1vP2U9bWMyJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAg
ICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTIn
OiBfVEVTVF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUn
LAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tl
dC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5j
b20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9RVUVS
WV9QQVJUID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFr
ZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVw
Z3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29t
L2RlbW8/ZT1tYzJcclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1w
bGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAg
ICAnXHJcbicgKwotICAgIF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0JBRF9SRVFVRVNU
UyA9ICgKLSAgICAoICAjIEhUVFAgcmVxdWVzdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcs
Ci0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ3d3dy5n
b29nbGUuY29tJywKLSAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChNYWNp
bnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAnIGVuLVVTOyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4zJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAnIEdUQjYgR1RCQScsCi0gICAgICAgICAgICAnQWNjZXB0
JzogJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45
LCcKLSAgICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICdBY2Nl
cHQtTGFuZ3VhZ2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgJ0FjY2VwdC1FbmNv
ZGluZyc6ICdnemlwLGRlZmxhdGUnLAotICAgICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JzogJ0lT
Ty04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAgICAnS2VlcC1BbGl2ZSc6
ICczMDAnLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAna2VlcC1hbGl2ZScsCi0gICAgICAg
IH0pLAotICAgICggICMgV3JvbmcgbWV0aG9kCi0gICAgICAgIDgwLAotICAgICAgICAnUE9TVCcs
Ci0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1w
bGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdl
YlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2Vi
U29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAot
ICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAot
ICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIE1pc3NpbmcgVXBncmFkZQotICAgICAgICA4
MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1Vw
Z3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0g
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2lu
JzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMp
LAotICAgICggICMgV3JvbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0g
ICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUu
Y29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnTm9uV2Vi
U29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAot
ICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAot
ICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIEVtcHR5IFdlYlNvY2tldC1Qcm90b2NvbAot
ICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsK
LSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0
aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNU
X0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICcnLAotICAgICAg
ICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0
LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBs
ZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIFdyb25n
IHBvcnQgbnVtYmVyIGZvcm1hdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAg
ICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tOjB4
NTAnLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAn
U2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2Nr
ZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAg
ICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAg
ICAgIF9URVNUX0tFWTMpLAotICAgICggICMgSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRj
aAotICAgICAgICA4MDgwLAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAg
ICAgewotICAgICAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nv
bm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzog
X1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBs
ZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0
dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAg
ICggICMgSWxsZWdhbCBXZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgODAsCi0gICAgICAgICdH
RVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdl
eGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnaWxsZWdhbFx4MDlwcm90b2NvbCcsCi0gICAgICAgICAg
ICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5
MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNv
bScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotKQotCi0KLWRlZiBfY3JlYXRl
X3JlcXVlc3QocmVxdWVzdF9kZWYpOgotICAgIGRhdGEgPSAnJwotICAgIGlmIGxlbihyZXF1ZXN0
X2RlZikgPiA0OgotICAgICAgICBkYXRhID0gcmVxdWVzdF9kZWZbNF0KLSAgICBjb25uID0gbW9j
ay5Nb2NrQ29ubihkYXRhKQotICAgIGNvbm4ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIHJlcXVl
c3RfZGVmWzBdKQotICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KAotICAgICAgICBtZXRob2Q9
cmVxdWVzdF9kZWZbMV0sCi0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZlsyXSwKLSAgICAgICAgaGVh
ZGVyc19pbj1yZXF1ZXN0X2RlZlszXSwKLSAgICAgICAgY29ubmVjdGlvbj1jb25uKQotCi0KLWRl
ZiBfY3JlYXRlX2dldF9tZW1vcml6ZWRfbGluZXMobGluZXMpOgotICAgICIiIkNyZWF0ZXMgYSBm
dW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGdpdmVuIHN0cmluZy4iIiIKLQotICAgIGRlZiBnZXRf
bWVtb3JpemVkX2xpbmVzKCk6Ci0gICAgICAgIHJldHVybiBsaW5lcwotICAgIHJldHVybiBnZXRf
bWVtb3JpemVkX2xpbmVzCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhyZXF1
ZXN0X2xpbmVzX3NldCk6Ci0gICAgcmVxdWVzdHMgPSBbXQotICAgIGZvciBsaW5lcyBpbiByZXF1
ZXN0X2xpbmVzX3NldDoKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9S
RVFVRVNUKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcyA9
IF9jcmVhdGVfZ2V0X21lbW9yaXplZF9saW5lcygKLSAgICAgICAgICAgICAgICBsaW5lcykKLSAg
ICAgICAgcmVxdWVzdHMuYXBwZW5kKHJlcXVlc3QpCi0gICAgcmV0dXJuIHJlcXVlc3RzCi0KLQot
Y2xhc3MgSHlCaTAwSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVm
IHRlc3RfZ29vZF9yZXF1ZXN0X2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05T
RV9ERUZBVUxUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJl
cXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFt
cGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3
czovL2V4YW1wbGUuY29tL2RlbW8nLCByZXF1ZXN0LndzX2xvY2F0aW9uKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRl
c3RfZ29vZF9yZXF1ZXN0X2NhcGl0YWxpemVkX2hlYWRlcl92YWx1ZXMoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9DQVBJVEFMSVpFRF9IRUFE
RVJfVkFMVUVTKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2Nr
Lk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQot
Ci0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2Nhc2VfbWl4ZWRfaGVhZGVyX25hbWVzKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfQ0FTRV9N
SVhFRF9IRUFERVJfTkFNRVMpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVl
c3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX0RFRkFVTFRfUE9S
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX2RlZmF1bHRfcG9ydChz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIDQ0MykK
LSAgICAgICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIgPSBI
YW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BP
TlNFX1NFQ1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVl
c3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfbm9uZGVmYXVsdF9w
b3J0KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVF
U1RfTk9OREVGQVVMVF9QT1JUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2Nr
RGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JULAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQot
ICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9zZWN1cmVfbm9uX2RlZmF1bHRfcG9ydChzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX05PTkRFRkFV
TFRfUE9SVCkKLSAgICAgICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRz
aGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAg
ICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9H
T09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1
ZXN0X2RlZmF1bHRfbm9fcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9OT19QUk9UT0NPTCkKLSAgICAgICAgaGFuZHNoYWtlciA9
IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVT
UE9OU0VfTk9fUFJPVE9DT0wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJl
cXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfb3B0aW9uYWxf
aGVhZGVycyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9S
RVFVRVNUX1dJVEhfT1BUSU9OQUxfSEVBREVSUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRz
aGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FWYWx1ZScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5o
ZWFkZXJzX2luWydFbXB0eVZhbHVlJ10pCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfd2l0
aF9ub25wcmludGFibGVfa2V5KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KF9HT09EX1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZKQotICAgICAgICBoYW5kc2hh
a2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAg
IGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09P
RF9SRVNQT05TRV9XSVRIX05PTlBSSU5UQUJMRV9LRVksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29v
ZF9yZXF1ZXN0X3dpdGhfcXVlcnlfcGFydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX1dJVEhfUVVFUllfUEFSVCkKLSAgICAgICAgaGFuZHNo
YWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dP
T0RfUkVTUE9OU0VfV0lUSF9RVUVSWV9QQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnd3M6Ly9leGFtcGxlLmNvbS9kZW1vP2U9bWMyJywgcmVxdWVzdC53c19sb2NhdGlvbikKLQot
ICAgIGRlZiB0ZXN0X2JhZF9yZXF1ZXN0cyhzZWxmKToKLSAgICAgICAgZm9yIHJlcXVlc3QgaW4g
bWFwKF9jcmVhdGVfcmVxdWVzdCwgX0JBRF9SRVFVRVNUUyk6Ci0gICAgICAgICAgICBoYW5kc2hh
a2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKQotCi0KLWNsYXNzIEh5QmkwMFZhbGlkYXRlU3VicHJvdG9jb2xUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF92YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmKToK
LSAgICAgICAgIyBzaG91bGQgc3VjY2VlZC4KLSAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29s
KCdzYW1wbGUnKQotICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScpCi0gICAg
ICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlXHg3ZXByb3RvY29sJykKLSAgICAgICAg
X3ZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDIwcHJvdG9jb2wnKQotCi0gICAgICAgICMg
c2hvdWxkIGZhaWwuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFu
ZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3Vi
cHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJvdG9jb2wn
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NhbXBsZVx4N2Zwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlk
YXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4g
SmFwYW5lc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91
dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDM2ZGM1N2MzNzMxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVz
dHMgZm9yIGh0dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAot
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAotCi0KLWNsYXNz
IFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBodHRw
X2hlYWRlcl91dGlsIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlbGF0aXZlX3Vy
aShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGls
LnBhcnNlX3VyaSgnL3dzL3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGhv
c3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcG9ydCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX2Fi
c29sdXRlX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hl
YWRlcl91dGlsLnBhcnNlX3VyaSgKLSAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDoxMDA4MC93
cy90ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbG9jYWxob3N0JywgaG9zdCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMDA4MCwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJj
ZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vZXhhbXBs
ZS5jb20vd3MvdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywg
aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MCwgcG9ydCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCBy
ZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzczov
L2V4YW1wbGUuY29tLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywg
aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0NDMsIHBvcnQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJj
ZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAgICAgICAgJ3dzOi8vZXhhbXBs
ZS5jb206ODA4MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9z
dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MDgwLCBwb3J0KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3Vy
aShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGls
LnBhcnNlX3VyaSgnd3M6Ly8vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNv
dXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwu
cGFyc2VfdXJpKCd3czovL2xvY2FsaG9zdDonKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5v
bmUsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFk
ZXJfdXRpbC5wYXJzZV91cmkoJ3dzOi8vbG9jYWxob3N0Oi93cycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbWVtb3Jp
emluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMWI4ZWVmNDMzNy4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1lbW9yaXppbmdmaWxlIG1vZHVsZS4iIiIK
LQotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
LQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1lbW9yaXppbmdmaWxlCi0KLQotY2xhc3Mg
VXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIG1lbW9y
aXppbmdmaWxlIG1vZHVsZS4iIiIKLQotICAgIGRlZiBjaGVjayhzZWxmLCBtZW1vcml6aW5nX2Zp
bGUsIG51bV9yZWFkLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgZm9yIHVudXNlZCBpbiByYW5n
ZShudW1fcmVhZCk6Ci0gICAgICAgICAgICBtZW1vcml6aW5nX2ZpbGUucmVhZGxpbmUoKQotICAg
ICAgICBhY3R1YWxfbGlzdCA9IG1lbW9yaXppbmdfZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxf
bGlzdCkpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0
LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBh
Y3R1YWwpCi0KLSAgICBkZWYgY2hlY2tfd2l0aF9zaXplKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwg
cmVhZF9zaXplLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgcmVhZF9saXN0ID0gW10KLSAgICAg
ICAgcmVhZF9saW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGxpbmUg
PSBtZW1vcml6aW5nX2ZpbGUucmVhZGxpbmUocmVhZF9zaXplKQotICAgICAgICAgICAgbGluZV9s
ZW5ndGggPSBsZW4obGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lX2xlbmd0
aCA8PSByZWFkX3NpemUpCi0gICAgICAgICAgICBpZiBsaW5lX2xlbmd0aCA9PSAwOgotICAgICAg
ICAgICAgICAgIGlmIHJlYWRfbGluZSAhPSAnJzoKLSAgICAgICAgICAgICAgICAgICAgcmVhZF9s
aXN0LmFwcGVuZChyZWFkX2xpbmUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAg
IHJlYWRfbGluZSArPSBsaW5lCi0gICAgICAgICAgICBpZiBsaW5lW2xpbmVfbGVuZ3RoIC0gMV0g
PT0gJ1xuJzoKLSAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKLSAg
ICAgICAgICAgICAgICByZWFkX2xpbmUgPSAnJwotICAgICAgICBhY3R1YWxfbGlzdCA9IG1lbW9y
aXppbmdfZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4ocmVhZF9saXN0KSkKLSAgICAgICAgZm9y
IGV4cGVjdGVkLCBhY3R1YWwsIHJlYWQgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9saXN0KToK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlYWQpCi0KLSAgICBkZWYgdGVzdF9nZXRf
bWVtb3JpemVkX2xpbmVzKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6
aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAgICAg
ICAnSGVsbG9cbldvcmxkXG5XZWxjb21lJykpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3Jpemlu
Z19maWxlLCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRcbicsICdXZWxjb21lJ10pCi0KLSAgICBkZWYg
dGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX2xpbWl0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAg
ICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3Ry
aW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScp
LCAyKQotICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMywgWydIZWxsb1xuJywg
J1dvcmxkXG4nXSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfZW1wdHlfZmls
ZShzZWxmKToKLSAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3Jp
emluZ0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJycpKQotICAgICAg
ICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQotCi0gICAgZGVmIHRlc3RfZ2V0
X21lbW9yaXplZF9saW5lc193aXRoX3NpemUoc2VsZik6Ci0gICAgICAgIGZvciBzaXplIGluIHJh
bmdlKDEsIDEwKToKLSAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxl
Lk1lbW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAotICAgICAgICAgICAgICAgICdIZWxs
b1xuV29ybGRcbldlbGNvbWUnKSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfd2l0aF9zaXplKG1l
bW9yaXppbmdfZmlsZSwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
SGVsbG9cbicsICdXb3JsZFxuJywgJ1dlbGNvbWUnXSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21vY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGMyM2E3M2Q4ZmIuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVz
dHMgZm9yIG1vY2sgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IHRocmVhZGlu
ZwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIHRlc3QgaW1wb3J0
IG1vY2sKLQotCi1jbGFzcyBNb2NrQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIi
IkEgdW5pdHRlc3QgZm9yIE1vY2tDb25uIGNsYXNzLiIiIgotCi0gICAgZGVmIHNldFVwKHNlbGYp
OgotICAgICAgICBzZWxmLl9jb25uID0gbW9jay5Nb2NrQ29ubignQUJDXHJcbkRFRkdcclxuXHJc
bkhJSksnKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0FCQ1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0RFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdISUpLJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0KLSAgICBkZWYgdGVz
dF9yZWFkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBQkNcclxuRCcsIHNlbGYu
X2Nvbm4ucmVhZCg2KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRUZHXHJcblxyXG5ISScs
IHNlbGYuX2Nvbm4ucmVhZCg5KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSksnLCBzZWxm
Ll9jb25uLnJlYWQoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25u
LnJlYWQoMTApKQotCi0gICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxpbmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcclxuSElKSycsIHNlbGYuX2Nvbm4ucmVhZCg5KSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0g
ICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ0hlbGxv
XHJcbicpCi0gICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ1dvcmxkXHJcbicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0hlbGxvXHJcbldvcmxkXHJcbicsIHNlbGYuX2Nvbm4ud3JpdHRlbl9k
YXRhKCkpCi0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tCbG9ja2luZ0Nvbm4gY2xhc3MuIiIiCi0KLSAg
ICBkZWYgdGVzdF9yZWFkKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IGRhdGEgcHV0IHRv
IE1vY2tCbG9ja2luZ0Nvbm4gYnkgcHV0X2J5dGVzIG1ldGhvZCBjYW4gYmUKLSAgICAgICAgcmVh
ZCBmcm9tIGl0LgotICAgICAgICAiIiIKLQotICAgICAgICBjbGFzcyBMaW5lUmVhZGVyKHRocmVh
ZGluZy5UaHJlYWQpOgotICAgICAgICAgICAgIiIiQSB0ZXN0IGNsYXNzIHRoYXQgbGF1bmNoZXMg
YSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRoZQotICAgICAgICAgICAgc3BlY2lmaWVkIGNv
bm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVhZCBkYXRhIHRvIHRoZSBzcGVjaWZpZWQKLSAg
ICAgICAgICAgIHF1ZXVlLgotICAgICAgICAgICAgIiIiCi0KLSAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjb25uLCBxdWV1ZSk6Ci0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVh
ZC5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKLSAg
ICAgICAgICAgICAgICBzZWxmLl9jb25uID0gY29ubgotICAgICAgICAgICAgICAgIHNlbGYuc2V0
RGFlbW9uKFRydWUpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICAgICAgICAg
IGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YSA9IHNlbGYuX2Nvbm4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9xdWV1ZS5wdXQoZGF0YSkKLQotICAgICAgICBjb25uID0gbW9jay5Nb2NrQmxvY2tp
bmdDb25uKCkKLSAgICAgICAgcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHJlYWRlciA9
IExpbmVSZWFkZXIoY29ubiwgcXVldWUpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhxdWV1ZS5l
bXB0eSgpKQotICAgICAgICBjb25uLnB1dF9ieXRlcygnRm9vIGJhclxyXG4nKQotICAgICAgICBy
ZWFkID0gcXVldWUuZ2V0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm9vIGJhclxyXG4n
LCByZWFkKQotCi0KLWNsYXNzIE1vY2tUYWJsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tUYWJsZSBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9mcm9tX2RpY3Qoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoeydL
ZXknOiAnVmFsdWUnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5n
ZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXkn
XSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2xpc3Qoc2VsZik6Ci0gICAgICAgIHRhYmxl
ID0gbW9jay5Nb2NrVGFibGUoWygnS2V5JywgJ1ZhbHVlJyldKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fdHVw
bGUoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoKCgnS2V5JywgJ1ZhbHVl
JyksKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLQotICAg
IGRlZiB0ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1Rh
YmxlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQot
ICAgICAgICB0YWJsZVsnS2V5J10gPSAnVmFsdWUnCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1ZhbHVlJywgdGFibGUuZ2V0KCdLZXknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFs
dWUnLCB0YWJsZS5nZXQoJ2tleScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScs
IHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFi
bGVbJ0tleSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXkn
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsnS0VZJ10pCi0KLQot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
MzQ3MzVjNjMwNDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMTM0NyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLQotCi1pbXBvcnQgYXJyYXkK
LWltcG9ydCBRdWV1ZQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHVuaXR0
ZXN0Ci1pbXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0
aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQg
RGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRl
bnNpb25zIGltcG9ydCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVh
bSBpbXBvcnQgSW52YWxpZFVURjhFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVh
bSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bUhpeGllNzUKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9u
cwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gdGVzdCBpbXBvcnQgbW9j
awotCi0KLSMgV2UgdXNlIG9uZSBmaXhlZCBub25jZSBmb3IgdGVzdGluZyBpbnN0ZWFkIG9mIGNy
eXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBQUk5HLgotX01BU0tJTkdfTk9OQ0UgPSAnQUJDRCcKLQot
Ci1kZWYgX21hc2tfaHliaShmcmFtZSk6Ci0gICAgZnJhbWVfa2V5ID0gbWFwKG9yZCwgX01BU0tJ
TkdfTk9OQ0UpCi0gICAgZnJhbWVfa2V5X2xlbiA9IGxlbihmcmFtZV9rZXkpCi0gICAgcmVzdWx0
ID0gYXJyYXkuYXJyYXkoJ0InKQotICAgIHJlc3VsdC5mcm9tc3RyaW5nKGZyYW1lKQotICAgIGNv
dW50ID0gMAotICAgIGZvciBpIGluIHhyYW5nZShsZW4ocmVzdWx0KSk6Ci0gICAgICAgIHJlc3Vs
dFtpXSBePSBmcmFtZV9rZXlbY291bnRdCi0gICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBm
cmFtZV9rZXlfbGVuCi0gICAgcmV0dXJuIF9NQVNLSU5HX05PTkNFICsgcmVzdWx0LnRvc3RyaW5n
KCkKLQotCi1kZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcXVl
c3QsIHN0cmVhbV9vcHRpb25zKToKLSAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKLSAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKLSAgICAgICAgcHJv
Y2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotICAgICAgICByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCi0KLQotZGVmIF9j
cmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgIHJlYWRfZGF0YSwKLSAgICAgICAg
ZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PU5vbmUsCi0gICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PU5vbmUpOgotICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2Nr
Lk1vY2tDb25uKCcnLmpvaW4ocmVhZF9kYXRhKSkpCi0gICAgcmVxLndzX3ZlcnNpb24gPSBjb21t
b24uVkVSU0lPTl9IWUJJX0xBVEVTVAotICAgIHJlcS53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCi0KLSAgICBwcm9jZXNzb3IgPSBOb25lCi0gICAgaWYgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0
IGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IoZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0KQotICAgIGVsaWYgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nlc3NvciA9IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9yZXF1ZXN0KQotCi0gICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKLSAg
ICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9w
cm9jZXNzb3IocHJvY2Vzc29yLCByZXEsIHN0cmVhbV9vcHRpb25zKQotICAgIHJlcS53c19zdHJl
YW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLQotICAgIHJldHVybiByZXEKLQotCi1k
ZWYgX2NyZWF0ZV9yZXF1ZXN0KCpmcmFtZXMpOgotICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3Qg
dXNpbmcgZGF0YSBnaXZlbiBhcyBmcmFtZXMuCi0KLSAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5l
ZCBvbiBjYWxsaW5nIHJlcXVlc3QuY29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAotICAg
IGlzIE1vY2tSZXF1ZXN0IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gICAgIiIiCi0KLSAg
ICByZWFkX2RhdGEgPSBbXQotICAgIGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6Ci0gICAg
ICAgIHJlYWRfZGF0YS5hcHBlbmQoaGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKLQotICAgIHJl
dHVybiBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKHJlYWRfZGF0YSkKLQotCi1kZWYgX2Ny
ZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCk6Ci0gICAgIiIiQ3JlYXRlcyBNb2NrUmVxdWVzdC4KLQot
ICAgIERhdGEgd3JpdHRlbiB0byBhIE1vY2tSZXF1ZXN0IGNhbiBiZSByZWFkIG91dCBieSBjYWxs
aW5nCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpLgotICAgICIiIgotCi0g
ICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Jsb2NraW5nQ29u
bigpKQotICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKLSAg
ICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAgIHJlcS53c19zdHJlYW0gPSBT
dHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLSAgICByZXR1cm4gcmVxCi0KLQotZGVmIF9jcmVh
dGVfcmVxdWVzdF9oaXhpZTc1KHJlYWRfZGF0YT0nJyk6Ci0gICAgcmVxID0gbW9jay5Nb2NrUmVx
dWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKLSAgICByZXEud3Nfc3Ry
ZWFtID0gU3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWRlZiBfY3JlYXRl
X2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpOgotICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3Qo
Y29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKLSAgICByZXEud3Nfc3RyZWFtID0g
U3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWNsYXNzIEJhc2ljTWVzc2Fn
ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0u
IiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnSGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNUhlbGxvJywgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHBheWxvYWQgPSAnYScg
KiAxMjUKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1x4ODFceDdkJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZWRpdW1f
bWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVx
dWVzdCwgcGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4N2VceDAwXHg3
ZScgKyBwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAt
IDEpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdceDgxXHg3ZVx4ZmZceGZmJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9s
YXJnZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICogKDEgPDwgMTYpCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgx
XHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJyArIHBheWxvYWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCB1J1x1NjVlNScpCi0gICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQgYXMgZTYsOTcsYTUgaW4g
VVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDNceGU2XHg5N1x4YTUnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJyAnLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJ1dvcmxkJywgRmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICchJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4MDVIZWxsb1x4MDBc
eDAxIFx4MDBceDA1V29ybGRceDgwXHgwMSEnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZnJh
Z21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJ0hlbGxvIFdvcmxkIScsIEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4MGNIZWxs
byBXb3JsZCFceDgwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdc
eDgxXHg4NScsICdIZWxsbycpLCAoJ1x4ODFceDg2JywgJ1dvcmxkIScpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI1Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgxXHhmZCcsIHBheWxvYWQpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZWRpdW1fbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5
bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4
MVx4ZmVceDAwXHg3ZScsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxv
YWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHBheWxvYWQg
PSAnYScgKiAoKDEgPDwgMTYpIC0gMSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0
ZXN0X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAq
ICgxIDw8IDE2KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAg
ICAgKCdceDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJywgcGF5bG9hZCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2xlbmd0aF9ub3RfZW5jb2RlZF91
c2luZ19taW5pbWFsX251bWJlcl9vZl9ieXRlcyhzZWxmKToKLSAgICAgICAgIyBMb2cgd2Fybmlu
ZyBvbiByZWNlaXZpbmcgYmFkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIHRoYXQgZG9lc24ndCB1c2UK
LSAgICAgICAgIyBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBidXQgY29udGludWUgcHJvY2Vzc2lu
Zy4KLQotICAgICAgICBwYXlsb2FkID0gJ2EnCi0gICAgICAgICMgMSBieXRlIGNhbiBiZSByZXBy
ZXNlbnRlZCB3aXRob3V0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDgxXHhmZlx4MDBceDAw
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBk
ZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODFceDgzJywgJ1x4ZTZceDljXHhhYycpKQotICAgICAgICAj
IFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKLSAg
ICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlkIGFzIFVURi04LgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ODInLCAnXHg4MFx4ODEnKSkKLSAgICAgICAg
IyBJbnZhbGlkIGNoYXJhY3RlcnMgc2hvdWxkIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRVVEY4RXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdc
eDAxXHg4NScsICdIZWxsbycpLAotICAgICAgICAgICAgKCdceDAwXHg4MScsICcgJyksCi0gICAg
ICAgICAgICAoJ1x4MDBceDg1JywgJ1dvcmxkJyksCi0gICAgICAgICAgICAoJ1x4ODBceDgxJywg
JyEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQhJywgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50
c191bmljb2RlKHNlbGYpOgotICAgICAgICAjIFVURi04IGVuY29kZXMgVSs2ZjIyIGludG8gZTZi
Y2EyIGFuZCBVKzViNTcgaW50byBlNWFkOTcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDgyJywgJ1x4ZTZceGJjJyksCi0gICAgICAgICAg
ICAoJ1x4MDBceDgyJywgJ1x4YTJceGU1JyksCi0gICAgICAgICAgICAoJ1x4ODBceDgyJywgJ1x4
YWRceDk3JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTZmMjJcdTViNTcnLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJh
Z21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDAxXHg4YycsICdIZWxsbyBXb3Js
ZCEnKSwgKCdceDgwXHg4MCcsICcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8g
V29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX2ZyYWdtZW50c19kdXBsaWNhdGVfc3RhcnQoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDg1JywgJ0hlbGxvJyks
ICgnXHgwMVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3Rh
cnRlZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4MDBceDg1
JywgJ0hlbGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZy
YW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0
ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2VuZF9idXRfbm90X3N0YXJ0ZWQoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgwXHg4NScsICdIZWxsbycpKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Vf
ZGlzY2FyZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAg
ICAgICAgICgnXHg4Zlx4ODYnLCAnSUdOT1JFJyksICgnXHg4MVx4ODUnLCAnSGVsbG8nKSwKLSAg
ICAgICAgICAgICgnXHg4Zlx4ODknLCAnRElTUkVHQVJEJyksICgnXHg4MVx4ODYnLCAnV29ybGQh
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4
Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0
aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVm
IHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgKLSAgICAgICAgICAgICgnXHg4OFx4OGEnLCBzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSAr
ICdHb29kIGJ5ZScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwMDAsIHJl
cXVlc3Qud3NfY2xvc2VfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnR29vZCBieWUn
LCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9j
bG9zZShzZWxmKToKLSAgICAgICAgcmVhc29uID0gJ2EnICogMTIzCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODhceGZkJywKLSAgICAgICAgICAg
ICBzdHJ1Y3QucGFjaygnIUgnLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKSArIHJlYXNv
bikpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNU
QVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFzb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC53c19jbG9z
ZV9jb2RlLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uLCByZWFzb24pCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX2Nsb3NlX3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNl
cHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2EnICogMTI0KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV9p
bmNvbnNpc3RlbnRfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgIyByZWFzb24gcGFyYW1ldGVyIG11c3Qgbm90IGJlIHNw
ZWNpZmllZCB3aGVuIGNvZGUgaXMgTm9uZS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNn
dXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmVhbS5jbG9zZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LndzX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2EnKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX3Bp
bmcocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4
ODlceDBjSGVsbG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2xvbmdlc3RfcGlu
ZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdhJyAqIDEyNSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHg4OVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfcGlu
Z190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnNlbmRfcGluZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnICog
MTI2KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nKHNlbGYpOgotICAgICAgICAiIiJUZXN0
cyByZWNlaXZpbmcgYSBwaW5nIGNvbnRyb2wgZnJhbWUuIiIiCi0KLSAgICAgICAgZGVmIGhhbmRs
ZXIocmVxdWVzdCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LmNhbGxlZCA9IFRydWUK
LQotICAgICAgICAjIFN0cmVhbSBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgdG8gcGluZyB3aXRoIHBv
bmcgd2l0aG91dCBhbnkgYWN0aW9uCi0gICAgICAgICMgYnkgYXBwbGljYXRpb24gbGF5ZXIuCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1
JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHg4YVx4MDVIZWxsbycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1JywgJ0hlbGxvJyksICgn
XHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hhbmRsZXIgPSBo
YW5kbGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1ZXN0LmNhbGxl
ZCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDg5XHhmZCcsICdhJyAq
IDEyNSksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
V29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnXHg4YVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfcGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgoJ1x4ODlceGZlXHgwMFx4N2UnLCAnYScgKiAxMjYpKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Bvbmcoc2VsZik6Ci0gICAgICAg
ICIiIlRlc3RzIHJlY2VpdmluZyBhIHBvbmcgY29udHJvbCBmcmFtZS4iIiIKLQotICAgICAgICBk
ZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKLSAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVk
ID0gVHJ1ZQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAg
ICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAg
cmVxdWVzdC5vbl9wb25nX2hhbmRsZXIgPSBoYW5kbGVyCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9w
aW5nKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODlceDA1
SGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKLSAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBidXQgcmVjZWl2
ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgICMgQ2hl
Y2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2FnZSBjYWxsLgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDg5XHgwNUhlbGxvJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV91
bnNvbGljaXRlZF9wb25nKHNlbGYpOgotICAgICAgICAjIFVuc29saWNpdGVkIHBvbmcgaXMgYWxs
b3dlZCBmcm9tIEh5QmkgMDcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0g
ICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkK
LSAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDhhXHg4NScsICdIZWxsbycp
LCAoJ1x4ODFceDg1JywgJ1dvcmxkJykpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVl
c3QsICdKdW1ibycpCi0gICAgICAgICMgQm9keSBtaXNtYXRjaC4KLSAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3BpbmdfY2Fubm90X2JlX2Zy
YWdtZW50ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDA5
XHg4NScsICdIZWxsbycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFs
aWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBk
ZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMVx4MDAnLCAnYScgKiAyNTYpKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLQotY2xhc3MgRGVmbGF0ZUZyYW1lVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGNoZWNraW5nIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVf
RlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21f
cmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9u
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQotCi0gICAgICAgIGV4cGVj
dGVkID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3Mo
J0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGli
LlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVs
bG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hl
bGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0KLSAgICAgICAgY29t
cHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXBy
ZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0
ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQg
Kz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQs
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRf
bWVzc2FnZV9iZmluYWwoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZs
YXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygx
LCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVf
ZnJhbWVfcHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAg
ICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5zZXRfYmZpbmFsKFRydWUpCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgZXhwZWN0ZWQgPSAnJwotCi0g
ICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvICsgY2hyKDApCi0gICAgICAg
IGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4
cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29t
cHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5E
RUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29t
cHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29t
cHJlc3NlZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxl
bihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxk
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2NvbXBfYml0KHNl
bGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9
ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19l
eHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yID0g
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nv
ci5kaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9wcm9jZXNzb3Iu
ZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0KLSAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZXhw
ZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0
ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgxXHgwNUhl
bGxvJwotCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3Mo
J0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2go
emxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJl
c3NlZF8ybmRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihj
b21wcmVzc2VkXzJuZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF8ybmRf
aGVsbG8KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfbm9fY29u
dGV4dF90YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5j
b21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAg
ICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAg
ICAgICAnJywgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgZm9yIGkg
aW4geHJhbmdlKDMpOgotICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
J0hlbGxvJykKLQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzcy5jb21wcmVz
cygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJlc3MuZmx1c2go
emxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNz
ZWRfbWVzc2FnZVs6LTRdCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4YzElYycgJSBsZW4oY29tcHJl
c3NlZF9tZXNzYWdlKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX21lc3NhZ2UKLQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZXhwZWN0ZWQgKyBleHBlY3Rl
ZCArIGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBk
ZWYgdGVzdF9iYWRfcmVxdWVzdF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0
aGF0IGlmIHRoZXJlJ3MgYW55dGhpbmcgd3Jvbmcgd2l0aCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lv
bgotICAgICAgICByZXF1ZXN0LCBkZWZsYXRlLWZyYW1lIGlzIHJlamVjdGVkLgotICAgICAgICAi
IiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1v
bi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBtYXhfd2luZG93X2JpdHMgbGVz
cyB0aGFuIDggaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21h
eF93aW5kb3dfYml0cycsICc3JykKLSAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0
ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25l
LCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5T
SU9OKQotICAgICAgICAjIG1heF93aW5kb3dfYml0cyBncmVhdGVyIHRoYW4gMTUgaXMgaWxsZWdh
bC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICcx
NicpCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBO
b24gaW50ZWdlciBtYXhfd2luZG93X2JpdHMgaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICdmb29iYXInKQotICAgICAgICBwcm9j
ZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21t
b24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgICMgbm9fY29udGV4dF90YWtlb3Zl
ciBtdXN0IG5vdCBoYXZlIGFueSB2YWx1ZS4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0g
RGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0g
ICAgZGVmIHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJ
T04pCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMoOCkK
LSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdtYXhfd2luZG93
X2JpdHMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOCcsIHJlc3BvbnNlLmdldF9wYXJh
bWV0ZXJfdmFsdWUoJ21heF93aW5kb3dfYml0cycpKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQot
ICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5z
aW9uKQotICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIo
VHJ1ZSkKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdub19j
b250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAg
IHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ25vX2NvbnRleHRfdGFrZW92ZXInKSBpcyBO
b25lKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBjb21w
cmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGRhdGEg
PSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6
LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwg
MHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAg
ICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgPSBjb21wcmVzcy5jb21wcmVzcygnV2ViU29ja2V0
JykKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gJ1x4MDAnCi0gICAgICAg
IGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd2Vic29ja2V0KSB8IDB4ODApCi0g
ICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dlYnNvY2tldCkKLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAg
IGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBj
b21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAg
ICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGRh
dGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4MCkKLSAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAgICAgIyBDbG9zZSBm
cmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNr
KCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBk
YXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdXZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9t
ZXNzYWdlX2NsaWVudF91c2luZ19zbWFsbGVyX3dpbmRvdyhzZWxmKToKLSAgICAgICAgIiIiVGVz
dCB0aGF0IGZyYW1lcyBjb21pbmcgZnJvbSBhIGNsaWVudCB3aGljaCBpcyB1c2luZyBzbWFsbGVy
IHdpbmRvdwotICAgICAgICBzaXplIHRoYXQgdGhlIHNlcnZlciBhcmUgY29ycmVjdGx5IHJlY2Vp
dmVkLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cg
Yml0cyBvZiA4IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KLSAgICAgICAgY29tcHJlc3Mg
PSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sIHpsaWIuREVGTEFURUQsIC04KQotCi0gICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgICMg
VXNlIGEgZnJhbWUgd2hvc2UgY29udGVudCBpcyBiaWdnZXIgdGhhbiB0aGUgY2xpZW50cycgREVG
TEFURSB3aW5kb3cKLSAgICAgICAgIyBzaXplIGJlZm9yZSBjb21wcmVzc2lvbi4gVGhlIGNvbnRl
bnQgbWFpbmx5IGNvbnNpc3RzIG9mICdhJyBidXQKLSAgICAgICAgIyByZXBldGl0aW9uIG9mICdi
JyBpcyBwdXQgYXQgdGhlIGhlYWQgYW5kIHRhaWwgc28gdGhhdCBpZiB0aGUgd2luZG93Ci0gICAg
ICAgICMgc2l6ZSBpcyBiaWcsIHRoZSBoZWFkIGlzIGJhY2stcmVmZXJlbmNlZCBidXQgaWYgc21h
bGwsIG5vdC4KLSAgICAgICAgcGF5bG9hZCA9ICdiJyAqIDY0ICsgJ2EnICogMTAyNCArICdiJyAq
IDY0Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2Fk
KQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRd
Ci0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwgMHg4
MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCi0KLSAgICAg
ICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0g
ICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfY29tcF9iaXQo
c2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAg
IHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJ
VFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4o
Y29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29t
cHJlc3NlZF9oZWxsbykKLQotICAgICAgICBkYXRhICs9ICdceDgxXHg4NScgKyBfbWFza19oeWJp
KCdIZWxsbycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1B
WF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNv
bXByZXNzZWRfMm5kX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4o
Y29tcHJlc3NlZF8ybmRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJp
KGNvbXByZXNzZWRfMm5kX2hlbGxvKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEs
IGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIGZvciBpIGluIHhyYW5n
ZSgzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdmFy
aW91c19idHlwZShzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAot
ICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16
bGliLk1BWF9XQklUUykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJl
c3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBkYXRhICs9ICdceGMx
JWMnICUgKGxlbihjb21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21h
c2tfaHliaShjb21wcmVzc2VkX2hlbGxvKQotCi0gICAgICAgIGNvbXByZXNzZWRfd2Vic29ja2V0
ID0gY29tcHJlc3MuY29tcHJlc3MoJ1dlYlNvY2tldCcpCi0gICAgICAgIGNvbXByZXNzZWRfd2Vi
c29ja2V0ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAgIGNvbXByZXNz
ZWRfd2Vic29ja2V0ICs9ICdceDAwJwotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihj
b21wcmVzc2VkX3dlYnNvY2tldCkgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5Ymko
Y29tcHJlc3NlZF93ZWJzb2NrZXQpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJl
c3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNv
bXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21w
cmVzc2VkX3dvcmxkKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVz
c2VkX3dvcmxkKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAnXHg4
OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScp
Ci0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0
PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV2ViU29j
a2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIiIgotCi0g
ICAgZGVmIHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNT
QUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcign
c2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBwcm9jZXNzb3IgPSBQ
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHJl
c3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoCi0gICAgICAgICAgICByZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlcicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgTm9uZSwgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXInKSkKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAotICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
Ci0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRz
JywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Q
cm9jZXNzb3IoZXh0ZW5zaW9uKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93
aW5kb3dfYml0cyg4KQotICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyKFRydWUpCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25f
cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJzgnLCBy
ZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAgIHJlc3BvbnNlLmhhc19wYXJhbWV0
ZXIoJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRl
cl92YWx1ZSgnY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInKSkKLQotICAgIGRlZiB0ZXN0X3Nl
bmRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVO
U0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0g
ICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
LSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAg
ZXhwZWN0ZWQgPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBl
Y3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3Nl
bmRfZW1wdHlfbWVzc2FnZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IGFuIGVtcHR5IG1l
c3NhZ2UgaXMgY29tcHJlc3NlZCBjb3JyZWN0bHkuIiIiCi0KLSAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVT
U0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PWV4dGVuc2lvbikKLQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnJykKLQotICAgICAgICAjIFBheWxvYWQgaW4gYmluYXJ5OiAwYjAwMDAwMDAwCi0gICAgICAg
ICMgRnJvbSBMU0IsCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAgICMg
LSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNzaW9uKQotICAgICAgICAjIC0gNSBiaXRzIG9m
IHBhZGRpbmcKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhjMVx4MDFceDAwJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0K
LSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfd2l0aF9udWxsX2NoYXJhY3RlcihzZWxmKToKLSAg
ICAgICAgIiIiVGVzdCB0aGF0IGEgc2ltcGxlIHBheWxvYWQgKG9uZSBudWxsKSBpcyBmcmFtZWQg
Y29ycmVjdGx5LiIiIgotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAg
ICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0K
LSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1x4MDAnKQotCi0gICAgICAg
ICMgUGF5bG9hZCBpbiBiaW5hcnk6IDBiMDExMDAwMTAgMGIwMDAwMDAwMCAwYjAwMDAwMDAwCi0g
ICAgICAgICMgRnJvbSBMU0IsCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAg
ICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKDAxIHRoYXQgbWVhbnMgZml4ZWQgSHVmZm1hbikKLSAg
ICAgICAgIyAtIDggYml0cyBvZiB0aGUgZmlyc3QgY29kZSAoMDAxMTAwMDAgdGhhdCBpcyB0aGUg
Y29kZSBmb3IgdGhlIGxpdGVyYWwKLSAgICAgICAgIyAgIGFscGhhYmV0IDB4MDApCi0gICAgICAg
ICMgLSA3IGJpdHMgb2YgdGhlIHNlY29uZCBjb2RlICgwMDAwMDAwIHRoYXQgaXMgdGhlIGNvZGUg
Zm9yIHRoZQotICAgICAgICAjICAgZW5kLW9mLWJsb2NrKQotICAgICAgICAjIC0gMSBiaXQgb2Yg
QkZJTkFMICgwKQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFIChubyBjb21wcmVzc2lvbikK
LSAgICAgICAgIyAtIDIgYml0cyBvZiBwYWRkaW5nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1x4YzFceDAzXHg2Mlx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX3R3b19tZXNz
YWdlcyhzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRl
cigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAg
ICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKLQotICAgICAgICBjb21wcmVzcyA9IHps
aWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBleHBlY3RlZCA9
ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxs
bycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzot
NF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykK
LSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9
ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9IGNv
bXByZXNzZWRfd29ybGQKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3Nh
Z2VfZnJhZ21lbnRlZChzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VY
VEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEo
Ci0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lv
bikKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZh
bHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5ZScsIGVu
ZD1GYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykK
LQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAg
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklU
UykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxs
bykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotICAgICAgICBjb21wcmVz
c2VkX2dvb2RieWUgPSBjb21wcmVzcy5jb21wcmVzcygnR29vZGJ5ZScpCi0gICAgICAgIGNvbXBy
ZXNzZWRfZ29vZGJ5ZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAg
ICAgZXhwZWN0ZWQgKz0gJ1x4MDAlYycgJSBsZW4oY29tcHJlc3NlZF9nb29kYnllKQotICAgICAg
ICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2dvb2RieWUKLSAgICAgICAgY29tcHJlc3NlZF93b3Js
ZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQg
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRf
d29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAl
YycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3Nl
ZF93b3JsZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21l
bnRlZF9lbXB0eV9maXJzdF9mcmFtZShzZWxmKToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIGVu
ZD1GYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykK
LQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAg
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklU
UykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCcnKQotICAg
ICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0g
ICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9l
bXB0eSA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfZW1w
dHkgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNz
ZWRfZW1wdHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4
ODAlYycgJSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJl
c3NlZF9lbXB0eQotICAgICAgICBwcmludCgnJXInICUgZXhwZWN0ZWQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
LQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2xhc3RfZnJhbWUo
c2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAg
ICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNT
SU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3Rl
ZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9
IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNzLmNv
bXByZXNzKCcnKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3NlZF9l
bXB0eVs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKGNvbXByZXNzZWRf
ZW1wdHkpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhzZWxmKToK
LSAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi0gICAg
ICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21tb25fcGFy
dAotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAg
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAg
IGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzgnKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
ICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB0ZXN0X21lc3NhZ2UpCi0KLSAgICAgICAg
ZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplID0gMgotICAgICAgICBleHBlY3RlZF93ZWJz
b2NrZXRfcGF5bG9hZF9zaXplID0gOTEKLQotICAgICAgICBhY3R1YWxfZnJhbWUgPSByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
bGVuKGFjdHVhbF9mcmFtZSkpCi0gICAgICAgIGFjdHVhbF9oZWFkZXIgPSBhY3R1YWxfZnJhbWVb
MDpleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemVdCi0gICAgICAgIGFjdHVhbF9wYXlsb2Fk
ID0gYWN0dWFsX2ZyYW1lW2V4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZTpdCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAnXHhjMSVjJyAlIGV4cGVjdGVk
X3dlYnNvY2tldF9wYXlsb2FkX3NpemUsIGFjdHVhbF9oZWFkZXIpCi0gICAgICAgIGRlY29tcHJl
c3MgPSB6bGliLmRlY29tcHJlc3NvYmooLTgpCi0gICAgICAgIGRlY29tcHJlc3NlZF9tZXNzYWdl
ID0gZGVjb21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIGFjdHVhbF9wYXlsb2Fk
ICsgJ1x4MDBceDAwXHhmZlx4ZmYnKQotICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSArPSBk
ZWNvbXByZXNzLmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X21lc3NhZ2Us
IGRlY29tcHJlc3NlZF9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihk
ZWNvbXByZXNzLnVudXNlZF9kYXRhKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4o
ZGVjb21wcmVzcy51bmNvbnN1bWVkX3RhaWwpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdl
X25vX2NvbnRleHRfdGFrZW92ZXJfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRl
cignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uo
Myk6Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBl
bmQ9RmFsc2UpCi0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVs
bG8nLCBlbmQ9VHJ1ZSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0g
ICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQs
IC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBmaXJzdF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKCdIZWxsbycpCi0gICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGZpcnN0X2hl
bGxvKQotICAgICAgICBleHBlY3RlZCArPSBmaXJzdF9oZWxsbwotICAgICAgICBzZWNvbmRfaGVs
bG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBzZWNvbmRfaGVsbG8gKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIHNlY29uZF9oZWxsbyA9
IHNlY29uZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKHNl
Y29uZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBleHBlY3RlZCArIGV4cGVjdGVkICsg
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYp
OgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAg
ICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAn
JywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAg
ICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0uc2V0X2JmaW5hbChUcnVlKQot
ICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2Up
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcsIGVuZD1UcnVl
KQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29t
cHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5E
RUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3NlZF9oZWxsbyArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHg0MSVjJyAlIGxl
bihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxv
Ci0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxp
Yi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykK
LSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0g
ICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkK
LSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGQgKyBjaHIoMCkKLSAg
ICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAg
ICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9
IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lP
TiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgPSAnXHhjMSVj
JyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNr
X2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAg
IGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkg
KyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAg
ICAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3Jh
bmRvbV9zZWN0aW9uKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYSBjb21wcmVzc2VkIG1l
c3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlzCi0gICAgICAgIGNvcnJlY3Rs
eSByZWNlaXZlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAg
ICAgICBwYXlsb2FkID0gJycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQo
MCwgMjU1KSkgZm9yIGkgaW4geHJhbmdlKDEwMDApXSkKLQotICAgICAgICBjb21wcmVzcyA9IHps
aWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwg
emxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3BheWxv
YWQgPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVzc2VkX3BheWxv
YWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNz
ZWRfcGF5bG9hZCA9IGNvbXByZXNzZWRfcGF5bG9hZFs6LTRdCi0KLSAgICAgICAgIyBGcmFnbWVu
dCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0gICAgICAgIGJ5
dGVzX2NodW5rZWQgPSAwCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmcmFtZV9jb3VudCA9
IDAKLQotICAgICAgICBjaHVua19zaXplcyA9IFtdCi0KLSAgICAgICAgd2hpbGUgYnl0ZXNfY2h1
bmtlZCA8IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgotICAgICAgICAgICAgIyBNYWtlIHN1cmUg
dGhhdAotICAgICAgICAgICAgIyAtIHRoZSBsZW5ndGggb2YgY2h1bmtzIGFyZSBlcXVhbCBvciBs
ZXNzIHRoYW4gMTI1IHNvIHRoYXQgd2UgY2FuCi0gICAgICAgICAgICAjICAgdXNlIDEgb2N0ZXQg
bGVuZ3RoIGhlYWRlciBmb3JtYXQgZm9yIGFsbCBmcmFtZXMuCi0gICAgICAgICAgICAjIC0gYXQg
bGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJh
bmRvbS5yYW5kaW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigxMjUsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC8gMTAsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAg
ICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5rID0g
Y29tcHJlc3NlZF9wYXlsb2FkWwotICAgICAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQ6Ynl0ZXNf
Y2h1bmtlZCArIGNodW5rX3NpemVdCi0gICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5r
X3NpemUKLQotICAgICAgICAgICAgZmlyc3Rfb2N0ZXQgPSAweDAwCi0gICAgICAgICAgICBpZiBs
ZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0
IHwgMHg0MgotICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9w
YXlsb2FkKToKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4
MAotCi0gICAgICAgICAgICBkYXRhICs9ICclYyVjJyAlIChmaXJzdF9vY3RldCwgY2h1bmtfc2l6
ZSB8IDB4ODApCi0gICAgICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY2h1bmspCi0KLSAgICAg
ICAgICAgIGZyYW1lX2NvdW50ICs9IDEKLQotICAgICAgICBwcmludCgiQ2h1bmsgc2l6ZXM6ICVy
IiAlIGNodW5rX3NpemVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVz
KSA+IDEwKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAnXHg4OFx4
OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScpCi0K
LSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAg
ICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEsIHBlcm1l
c3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV90d29fbWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGNvbXBy
ZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9D
T01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGRh
dGEgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygn
SGVsbG9XZWJTb2NrZXQnKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVuKGNvbXByZXNzZWRf
aGVsbG8pIC8gMgotICAgICAgICBkYXRhICs9ICdceDQxJWMnICUgKHNwbGl0X3Bvc2l0aW9uIHwg
MHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG9bOnNwbGl0
X3Bvc2l0aW9uXSkKLQotICAgICAgICBkYXRhICs9ICdceDgwJWMnICUgKChsZW4oY29tcHJlc3Nl
ZF9oZWxsbykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNr
X2h5YmkoY29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQotCi0gICAgICAgIGNvbXBy
ZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9D
T01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNv
bXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAg
ICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGRhdGEg
Kz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4MCkKLSAgICAgICAgZGF0
YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFt
ZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCch
SCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxB
VEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3
ZGF0YSgKLSAgICAgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1l
eHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvV2ViU29ja2V0JywgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9taXhlZF9idHlwZShzZWxmKToKLSAgICAgICAg
IiIiVGVzdCB0aGF0IGEgbWVzc2FnZSBjb21wcmVzc2VkIHVzaW5nIGxvdHMgb2YgREVGTEFURSBi
bG9ja3Mgd2l0aAotICAgICAgICB2YXJpb3VzIGZsdXNoIG1vZGUgaXMgY29ycmVjdGx5IHJlY2Vp
dmVkLgotICAgICAgICAiIiIKLQotICAgICAgICByYW5kb20uc2VlZChhPTApCi0gICAgICAgIHBh
eWxvYWQgPSAnJy5qb2luKAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUp
KSBmb3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotCi0gICAgICAgIGNvbXByZXNzID0gTm9uZQotCi0g
ICAgICAgICMgRnJhZ21lbnQgdGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJh
bWVzLgotICAgICAgICBieXRlc19jaHVua2VkID0gMAotICAgICAgICBjb21wcmVzc2VkX3BheWxv
YWQgPSAnJwotCi0gICAgICAgIGNodW5rX3NpemVzID0gW10KLSAgICAgICAgbWV0aG9kcyA9IFtd
Ci0gICAgICAgIHN5bmNfdXNlZCA9IEZhbHNlCi0gICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UK
LQotICAgICAgICB3aGlsZSBieXRlc19jaHVua2VkIDwgbGVuKHBheWxvYWQpOgotICAgICAgICAg
ICAgIyBNYWtlIHN1cmUgYXQgbGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAg
ICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5yYW5kaW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigx
MDAsIGxlbihwYXlsb2FkKSAtIGJ5dGVzX2NodW5rZWQpKQotICAgICAgICAgICAgY2h1bmtfc2l6
ZXMuYXBwZW5kKGNodW5rX3NpemUpCi0gICAgICAgICAgICBjaHVuayA9IHBheWxvYWRbYnl0ZXNf
Y2h1bmtlZDpieXRlc19jaHVua2VkICsgY2h1bmtfc2l6ZV0KLQotICAgICAgICAgICAgYnl0ZXNf
Y2h1bmtlZCArPSBjaHVua19zaXplCi0KLSAgICAgICAgICAgIGlmIGNvbXByZXNzIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAg
ICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAg
ICAgemxpYi5ERUZMQVRFRCwKLSAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQot
Ci0gICAgICAgICAgICBpZiBieXRlc19jaHVua2VkID09IGxlbihwYXlsb2FkKToKLSAgICAgICAg
ICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmspCi0g
ICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQotICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXBy
ZXNzZWRfcGF5bG9hZFs6LTRdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1l
dGhvZCA9IHJhbmRvbS5yYW5kaW50KDAsIDEpCi0gICAgICAgICAgICAgICAgbWV0aG9kcy5hcHBl
bmQobWV0aG9kKQotICAgICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAwOgotICAgICAgICAgICAg
ICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmspCi0g
ICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgICAgICAgICAgICAgc3luY191c2VkID0gVHJ1ZQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5
bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKLSAgICAgICAgICAgICAgICAgICAgY29t
cHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbXByZXNzID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBmaW5pc2hf
dXNlZCA9IFRydWUKLQotICAgICAgICBwcmludCgiQ2h1bmsgc2l6ZXM6ICVyIiAlIGNodW5rX3Np
emVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVzKSA+IDEwKQotICAg
ICAgICBwcmludCgiTWV0aG9kczogJXIiICUgbWV0aG9kcykKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHN5bmNfdXNlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmlzaF91c2VkKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgxMjUgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjb21wcmVzc2VkX3BheWxvYWQpIDwgNjU1MzYpCi0g
ICAgICAgIGRhdGEgPSAnXHhjMlx4ZmUnICsgc3RydWN0LnBhY2soJyFIJywgbGVuKGNvbXByZXNz
ZWRfcGF5bG9hZCkpCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3BheWxv
YWQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScg
KyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAg
ICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAg
Y29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
eWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLQot
Y2xhc3MgTWVzc2FnZVRlc3RIaXhpZTc1KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0
cyBmb3IgZHJhZnQtaGl4aWUtdGhld2Vic29ja2V0cHJvdG9jb2wtNzYgc3RyZWFtIGNsYXNzLiIi
IgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZm
JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfaGl4aWU3NSgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHUnXHU2
NWU1JykKLSAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5NyxhNSBpbiBVVEYtOAot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwXHhlNlx4OTdceGE1XHhmZicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2hpeGllNzUoJ1x4MDBIZWxsb1x4ZmZceDAwV29ybGQhXHhmZicpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNv
ZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgw
MFx4ZTZceDljXHhhY1x4ZmYnKQotICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDlj
LGFjIGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKLSAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBp
bnZhbGlkIGFzIFVURi04LgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2hpeGll
NzUoJ1x4MDBceDgwXHg4MVx4ZmYnKQotICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aAotICAgICAgICAjIFUrZmZmZCBSRVBMQUNFTUVOVCBDSEFSQUNU
RVIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1ZmZmZFx1ZmZmZCcsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Rp
c2NhcmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgn
XHg4MFx4MDZJR05PUkVceDAwSGVsbG9ceGZmJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1x4MDFESVNSRUdBUkRceGZmXHgwMFdvcmxkIVx4ZmYnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZShyZXF1ZXN0KSkKLQotCi1jbGFzcyBNZXNzYWdlUmVjZWl2ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyB0aGUgU3RyZWFtIGNsYXNzIHVzaW5nIE1lc3NhZ2VS
ZWNlaXZlci4iIiIKLQotICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGls
Lk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKCdceDgxXHg4NicgKyBfbWFza19oeWJpKCdIZWxsbyEnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8hJywgcmVjZWl2ZXIucmVjZWl2ZSgpKQotCi0gICAgZGVm
IHRlc3Rfb25tZXNzYWdlKHNlbGYpOgotICAgICAgICBvbm1lc3NhZ2VfcXVldWUgPSBRdWV1ZS5R
dWV1ZSgpCi0KLSAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2UpOgotICAgICAg
ICAgICAgb25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQotCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVz
c2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQotCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4ODFceDg2JyArIF9tYXNrX2h5YmkoJ0hlbGxvIScp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCBvbm1lc3NhZ2VfcXVldWUuZ2V0
KCkpCi0KLQotY2xhc3MgTWVzc2FnZVJlY2VpdmVySGl4aWU3NVRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotICAgICIiIlRlc3RzIHRoZSBTdHJlYW1IaXhpZTc1IGNsYXNzIHVzaW5nIE1lc3NhZ2VS
ZWNlaXZlci4iIiIKLQotICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICByZWNlaXZlciA9
IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCByZWNlaXZlci5yZWNlaXZlX25vd2FpdCgpKQotCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4MDBIZWxsbyFceGZmJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnSGVsbG8hJywgcmVjZWl2ZXIucmVjZWl2ZSgpKQotCi0gICAgZGVmIHRlc3Rfb25t
ZXNzYWdlKHNlbGYpOgotICAgICAgICBvbm1lc3NhZ2VfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0K
LSAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2UpOgotICAgICAgICAgICAgb25t
ZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Js
b2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNz
YWdlUmVjZWl2ZXIocmVxdWVzdCwgb25tZXNzYWdlX2hhbmRsZXIpCi0KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygnXHgwMEhlbGxvIVx4ZmYnKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdIZWxsbyEnLCBvbm1lc3NhZ2VfcXVldWUuZ2V0KCkpCi0KLQotY2xhc3MgTWVz
c2FnZVNlbmRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIHRoZSBTdHJl
YW0gY2xhc3MgdXNpbmcgTWVzc2FnZVNlbmRlci4iIiIKLQotICAgIGRlZiB0ZXN0X3NlbmQoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAg
ICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBzZW5k
ZXIuc2VuZCgnV29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNVdvcmxk
JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgcXVldWUgdG8gY2hlY2sgdGhlIGJ5dGVz
IHdyaXR0ZW4gYnkgTWVzc2FnZVNlbmRlci4KLSAgICAgICAgIyByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkgY2Fubm90IGJlIHVzZWQgaGVyZSBiZWNhdXNlCi0gICAgICAgICMgTWVz
c2FnZVNlbmRlciBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkLgotICAgICAgICBzZW5kX3F1ZXVl
ID0gUXVldWUuUXVldWUoKQotCi0gICAgICAgIGRlZiB3cml0ZShieXRlcyk6Ci0gICAgICAgICAg
ICBzZW5kX3F1ZXVlLnB1dChieXRlcykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9j
a2luZ19yZXF1ZXN0KCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlID0gd3JpdGUK
LQotICAgICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAg
ICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ0hlbGxvJykKLSAgICAgICAgc2VuZGVyLnNlbmRfbm93
YWl0KCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1SGVsbG8nLCBz
ZW5kX3F1ZXVlLmdldCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgwNVdvcmxk
Jywgc2VuZF9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVySGl4aWU3NVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIHRoZSBTdHJlYW1IaXhpZTc1IGNsYXNz
IHVzaW5nIE1lc3NhZ2VTZW5kZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0X2hpeGllNzUoKQotICAgICAg
ICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBzZW5k
ZXIuc2VuZCgnV29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwV29ybGRceGZm
JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgcXVldWUgdG8gY2hlY2sgdGhlIGJ5dGVz
IHdyaXR0ZW4gYnkgTWVzc2FnZVNlbmRlci4KLSAgICAgICAgIyByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkgY2Fubm90IGJlIHVzZWQgaGVyZSBiZWNhdXNlCi0gICAgICAgICMgTWVz
c2FnZVNlbmRlciBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkLgotICAgICAgICBzZW5kX3F1ZXVl
ID0gUXVldWUuUXVldWUoKQotCi0gICAgICAgIGRlZiB3cml0ZShieXRlcyk6Ci0gICAgICAgICAg
ICBzZW5kX3F1ZXVlLnB1dChieXRlcykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9j
a2luZ19yZXF1ZXN0X2hpeGllNzUoKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUg
PSB3cml0ZQotCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0
KQotCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnSGVsbG8nKQotICAgICAgICBzZW5kZXIu
c2VuZF9ub3dhaXQoJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMEhlbGxv
XHhmZicsIHNlbmRfcXVldWUuZ2V0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBX
b3JsZFx4ZmYnLCBzZW5kX3F1ZXVlLmdldCgpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NzNkZWNiZmQ2Ni4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X211eC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwODggKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBm
b3IgbXV4IG1vZHVsZS4iIiIKLQotaW1wb3J0IFF1ZXVlCi1pbXBvcnQgY29weQotaW1wb3J0IGxv
Z2dpbmcKLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHN5cwotaW1wb3J0
IHVuaXR0ZXN0Ci1pbXBvcnQgdGltZQotaW1wb3J0IHpsaWIKLQotaW1wb3J0IHNldF9zeXNfcGF0
aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtdXgKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1f
YmFzZSBpbXBvcnQgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBGcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9oeWJpIGltcG9ydCBTdHJlYW0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBp
bXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGlt
cG9ydCBjcmVhdGVfYmluYXJ5X2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5
YmkgaW1wb3J0IGNyZWF0ZV9jbG9zZV9mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9oeWJpIGltcG9ydCBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9mcmFtZQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgTXV4RXh0ZW5zaW9uUHJvY2Vzc29yCi0KLQotaW1wb3J0
IG1vY2sKLQotCi1fVEVTVF9IRUFERVJTID0geydIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScs
Ci0gICAgICAgICAgICAgICAgICdVcGdyYWRlJzogJ3dlYnNvY2tldCcsCi0gICAgICAgICAgICAg
ICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNv
Y2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09JywKLSAgICAgICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtVmVyc2lvbic6ICcxMycsCi0gICAgICAgICAgICAgICAgICdPcmlnaW4n
OiAnaHR0cDovL2V4YW1wbGUuY29tJ30KLQotCi1jbGFzcyBfT3V0Z29pbmdDaGFubmVsRGF0YShv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5tZXNzYWdlcyA9
IFtdCi0gICAgICAgIHNlbGYuY29udHJvbF9tZXNzYWdlcyA9IFtdCi0KLSAgICAgICAgc2VsZi5i
dWlsZGVyID0gbXV4Ll9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkKLQotY2xhc3MgX01vY2tNdXhDb25u
ZWN0aW9uKG1vY2suTW9ja0Jsb2NraW5nQ29ubik6Ci0gICAgIiIiTW9jayBjbGFzcyBvZiBtb2Rf
cHl0aG9uIGNvbm5lY3Rpb24gZm9yIG11eC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgbW9jay5Nb2NrQmxvY2tpbmdDb25uLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNl
bGYuX2NvbnRyb2xfYmxvY2tzID0gW10KLSAgICAgICAgc2VsZi5fY2hhbm5lbF9kYXRhID0ge30K
LQotICAgICAgICBzZWxmLl9jdXJyZW50X29wY29kZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGVu
ZGluZ19mcmFnbWVudHMgPSBbXQotCi0gICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlX2NvZGUgPSBO
b25lCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIE1v
Y2tCbG9ja2luZ0Nvbm4ud3JpdGUuIiIiCi0KLSAgICAgICAgc2VsZi5fY3VycmVudF9kYXRhID0g
ZGF0YQotICAgICAgICBzZWxmLl9wb3NpdGlvbiA9IDAKLQotICAgICAgICBkZWYgX3JlY2VpdmVf
Ynl0ZXMobGVuZ3RoKToKLSAgICAgICAgICAgIGlmIHNlbGYuX3Bvc2l0aW9uICsgbGVuZ3RoID4g
bGVuKHNlbGYuX2N1cnJlbnRfZGF0YSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcmVj
ZWl2ZSAlZCBieXRlcyBmcm9tIGVuY2Fwc3VsYXRlZCAnCi0gICAgICAgICAgICAgICAgICAgICdm
cmFtZScgJSBsZW5ndGgpCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fY3VycmVudF9kYXRhW3Nl
bGYuX3Bvc2l0aW9uOnNlbGYuX3Bvc2l0aW9uK2xlbmd0aF0KLSAgICAgICAgICAgIHNlbGYuX3Bv
c2l0aW9uICs9IGxlbmd0aAotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgICAgICAjIFBh
cnNlIHBoeXNpY2FsIGZyYW1lcyBhbmQgYXNzZW1ibGUgYSBtZXNzYWdlIGlmIHRoZSBtZXNzYWdl
IGlzCi0gICAgICAgICMgZnJhZ21lbnRlZC4KLSAgICAgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMgPSAoCi0gICAgICAgICAgICBwYXJzZV9mcmFtZShfcmVjZWl2ZV9i
eXRlcywgdW5tYXNrX3JlY2VpdmU9RmFsc2UpKQotCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJh
Z21lbnRzLmFwcGVuZChwYXlsb2FkKQotCi0gICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfb3Bjb2Rl
IGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBvcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5V
QVRJT046Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdTZW5kaW5nIGludmFsaWQg
Y29udGludWF0aW9uIG9wY29kZScpCi0gICAgICAgICAgICBzZWxmLl9jdXJyZW50X29wY29kZSA9
IG9wY29kZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5P
UENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2Vu
ZGluZyBpbnZhbGlkIG9wY29kZSAlZCcgJSBvcGNvZGUpCi0gICAgICAgIGlmIG5vdCBmaW46Ci0g
ICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpbm5lcl9mcmFtZV9kYXRhID0gJycuam9pbihz
ZWxmLl9wZW5kaW5nX2ZyYWdtZW50cykKLSAgICAgICAgc2VsZi5fcGVuZGluZ19mcmFnbWVudHMg
PSBbXQotICAgICAgICBzZWxmLl9jdXJyZW50X29wY29kZSA9IE5vbmUKLQotICAgICAgICAjIEhh
bmRsZSBhIGNvbnRyb2wgbWVzc2FnZSBvbiB0aGUgcGh5c2ljYWwgY2hhbm5lbC4KLSAgICAgICAg
IyBUT0RPKGJhc2hpKTogU3VwcG9ydCBvdGhlciBvcGNvZGVzIGlmIG5lZWRlZC4KLSAgICAgICAg
aWYgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICBpZiBsZW4ocGF5
bG9hZCkgPj0gMjoKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZV9jb2RlID0gc3Ry
dWN0LnVucGFjaygnIUgnLCBwYXlsb2FkWzoyXSlbMF0KLSAgICAgICAgICAgIGNsb3NlX2JvZHkg
PSBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keSgKLSAgICAgICAgICAgICAgICBjb21tb24u
U1RBVFVTX05PUk1BTF9DTE9TVVJFLCAnJykKLSAgICAgICAgICAgIGNsb3NlX2ZyYW1lID0gY3Jl
YXRlX2Nsb3NlX2ZyYW1lKGNsb3NlX2JvZHksIG1hc2s9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYu
cHV0X2J5dGVzKGNsb3NlX2ZyYW1lKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBQ
YXJzZSB0aGUgcGF5bG9hZCBvZiB0aGUgbWVzc2FnZSBvbiBwaHlzaWNhbCBjaGFubmVsLgotICAg
ICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihpbm5lcl9mcmFtZV9kYXRh
KQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAg
IGlmIGNoYW5uZWxfaWQgPT0gbXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBz
ZWxmLl9jb250cm9sX2Jsb2Nrcy5leHRlbmQobGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2Nr
cygpKSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIG5vdCBjaGFubmVsX2lkIGlu
IHNlbGYuX2NoYW5uZWxfZGF0YToKLSAgICAgICAgICAgIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFu
bmVsX2lkXSA9IF9PdXRnb2luZ0NoYW5uZWxEYXRhKCkKLSAgICAgICAgY2hhbm5lbF9kYXRhID0g
c2VsZi5fY2hhbm5lbF9kYXRhW2NoYW5uZWxfaWRdCi0KLSAgICAgICAgIyBQYXJzZSBsb2dpY2Fs
IGZyYW1lcyBhbmQgYXNzZW1ibGUgYW4gaW5uZXIgKGxvZ2ljYWwpIG1lc3NhZ2UuCi0gICAgICAg
IChpbm5lcl9maW4sIGlubmVyX3JzdjEsIGlubmVyX3JzdjIsIGlubmVyX3JzdjMsIGlubmVyX29w
Y29kZSwKLSAgICAgICAgIGlubmVyX3BheWxvYWQpID0gcGFyc2VyLnJlYWRfaW5uZXJfZnJhbWUo
KQotICAgICAgICBpbm5lcl9mcmFtZSA9IEZyYW1lKGlubmVyX2ZpbiwgaW5uZXJfcnN2MSwgaW5u
ZXJfcnN2MiwgaW5uZXJfcnN2MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9v
cGNvZGUsIGlubmVyX3BheWxvYWQpCi0gICAgICAgIG1lc3NhZ2UgPSBjaGFubmVsX2RhdGEuYnVp
bGRlci5idWlsZChpbm5lcl9mcmFtZSkKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAg
ICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgKG1lc3NhZ2Uub3Bjb2RlID09IGNvbW1vbi5P
UENPREVfVEVYVCBvcgotICAgICAgICAgICAgbWVzc2FnZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09E
RV9CSU5BUlkpOgotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLm1lc3NhZ2VzLmFwcGVuZChtZXNz
YWdlLnBheWxvYWQpCi0KLSAgICAgICAgICAgIHNlbGYub25fZGF0YV9tZXNzYWdlKG1lc3NhZ2Uu
cGF5bG9hZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5jb250cm9s
X21lc3NhZ2VzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICB7J29wY29kZSc6IG1lc3NhZ2Uub3Bj
b2RlLAotICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UucGF5bG9hZH0pCi0KLSAg
ICBkZWYgb25fZGF0YV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9jb250cm9sX2Jsb2NrcwotCi0gICAgZGVmIGdldF93cml0dGVuX21lc3NhZ2VzKHNlbGYs
IGNoYW5uZWxfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2hhbm5lbF9kYXRhW2NoYW5uZWxf
aWRdLm1lc3NhZ2VzCi0KLSAgICBkZWYgZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcyhzZWxm
LCBjaGFubmVsX2lkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVs
X2lkXS5jb250cm9sX21lc3NhZ2VzCi0KLQotY2xhc3MgX0ZhaWxPbldyaXRlQ29ubmVjdGlvbihf
TW9ja011eENvbm5lY3Rpb24pOgotICAgICIiIlNwZWNpY2lhbGl6ZWQgdmVyc2lvbiBvZiBfTW9j
a011eENvbm5lY3Rpb24uIEl0cyB3cml0ZSgpIG1ldGhvZCByYWlzZXMKLSAgICBhbiBleGNlcHRp
b24gZm9yIHRlc3Rpbmcgd2hlbiBhIGRhdGEgbWVzc2FnZSBpcyB3cml0dGVuLgotICAgICIiIgot
Ci0gICAgZGVmIG9uX2RhdGFfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiT3Zl
cnJpZGUgdG8gcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgotCi0gICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignSW50ZW50aW9uYWwgZmFpbHVyZScpCi0KLQotY2xhc3MgX0NoYW5uZWxFdmVudChvYmplY3Qp
OgotICAgICIiIkEgc3RydWN0dXJlIHRoYXQgcmVjb3JkcyBjaGFubmVsIGV2ZW50cy4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gTm9uZQotICAg
ICAgICBzZWxmLm1lc3NhZ2VzID0gW10KLSAgICAgICAgc2VsZi5leGNlcHRpb24gPSBOb25lCi0g
ICAgICAgIHNlbGYuY2xpZW50X2luaXRpYXRlZF9jbG9zaW5nID0gRmFsc2UKLQotCi1jbGFzcyBf
TXV4TW9ja0Rpc3BhdGNoZXIob2JqZWN0KToKLSAgICAiIiJNb2NrIGNsYXNzIG9mIGRpc3BhdGNo
LkRpc3BhdGNoZXIgZm9yIG11eC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc2VsZi5jaGFubmVsX2V2ZW50cyA9IHt9Ci0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtl
KHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBpZiByZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2Nv
bHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gcmVxdWVz
dC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzWzBdCi0KLSAgICBkZWYgX2RvX2VjaG8oc2VsZiwgcmVx
dWVzdCwgY2hhbm5lbF9ldmVudHMpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAg
bWVzc2FnZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgICAg
ICBpZiBtZXNzYWdlID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9ldmVudHMuY2xp
ZW50X2luaXRpYXRlZF9jbG9zaW5nID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJldHVybgotICAg
ICAgICAgICAgaWYgbWVzc2FnZSA9PSAnR29vZGJ5ZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgICAgICBjaGFubmVsX2V2ZW50cy5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKLSAg
ICAgICAgICAgICMgZWNobyBiYWNrCi0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5k
X21lc3NhZ2UobWVzc2FnZSkKLQotICAgIGRlZiBfZG9fcGluZyhzZWxmLCByZXF1ZXN0LCBjaGFu
bmVsX2V2ZW50cyk6Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUGluZyEn
KQotCi0gICAgZGVmIF9kb19waW5nX3doaWxlX2hlbGxvX3dvcmxkKHNlbGYsIHJlcXVlc3QsIGNo
YW5uZWxfZXZlbnRzKToKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdI
ZWxsbyAnLCBlbmQ9RmFsc2UpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygn
UGluZyEnKQotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ1dvcmxkIScs
IGVuZD1UcnVlKQotCi0gICAgZGVmIF9kb190d29fcGluZ193aGlsZV9oZWxsb193b3JsZChzZWxm
LCByZXF1ZXN0LCBjaGFubmVsX2V2ZW50cyk6Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNl
bmRfbWVzc2FnZSgnSGVsbG8gJywgZW5kPUZhbHNlKQotICAgICAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX3BpbmcoJ1BpbmchJykKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5n
KCdQb25nIScpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnV29ybGQh
JywgZW5kPVRydWUpCi0KLSAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCByZXF1ZXN0KToKLSAg
ICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdID0gX0NoYW5uZWxF
dmVudCgpCi0gICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXS5y
ZXF1ZXN0ID0gcmVxdWVzdAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgTm90ZTogbW9y
ZSBoYW5kbGVyIHdpbGwgYmUgYWRkZWQuCi0gICAgICAgICAgICBpZiByZXF1ZXN0LnVyaS5lbmRz
d2l0aCgnZWNobycpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX2VjaG8ocmVxdWVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5j
aGFubmVsX2lkXSkKLSAgICAgICAgICAgIGVsaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgoJ3Bpbmcn
KToKLSAgICAgICAgICAgICAgICBzZWxmLl9kb19waW5nKHJlcXVlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0p
Ci0gICAgICAgICAgICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCd0d29fcGluZ193aGlsZV9o
ZWxsb193b3JsZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX3R3b19waW5nX3doaWxlX2hl
bGxvX3dvcmxkKAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LCBzZWxmLmNoYW5uZWxfZXZl
bnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0pCi0gICAgICAgICAgICBlbGlmIHJlcXVlc3QudXJpLmVu
ZHN3aXRoKCdwaW5nX3doaWxlX2hlbGxvX3dvcmxkJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
ZG9fcGluZ193aGlsZV9oZWxsb193b3JsZCgKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwg
c2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgaGFuZGxlIHBhdGgg
JXInICUgcmVxdWVzdC5wYXRoKQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rl
cm1pbmF0ZWQ6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVj
dGlvbigpCi0gICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbiBhcyBl
OgotICAgICAgICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4
Y2VwdGlvbiA9IGUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
c2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4Y2VwdGlvbiA9IGUKLSAg
ICAgICAgICAgIHJhaXNlCi0KLQotZGVmIF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249
Tm9uZSwgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnM9Tm9uZSk6Ci0gICAgaWYgY29ubmVjdGlv
biBpcyBOb25lOgotICAgICAgICBjb25uZWN0aW9uID0gX01vY2tNdXhDb25uZWN0aW9uKCkKLQot
ICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KHVyaT0nL2VjaG8nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnNfaW49X1RFU1RfSEVBREVSUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPWNvbm5lY3Rpb24pCi0gICAgcmVxdWVzdC53
c19zdHJlYW0gPSBTdHJlYW0ocmVxdWVzdCwgb3B0aW9ucz1TdHJlYW1PcHRpb25zKCkpCi0gICAg
cmVxdWVzdC5tdXhfcHJvY2Vzc29yID0gTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKSkKLSAgICBpZiBs
b2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgcmVxdWVzdC5t
dXhfcHJvY2Vzc29yLnNldF9leHRlbnNpb25zKGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zKQot
ICAgIHJlcXVlc3QubXV4X3Byb2Nlc3Nvci5zZXRfcXVvdGEoOCAqIDEwMjQpCi0gICAgcmV0dXJu
IHJlcXVlc3QKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKGNoYW5u
ZWxfaWQsIGVuY29kaW5nLCBlbmNvZGVkX2hhbmRzaGFrZSk6Ci0gICAgIyBBbGxvdyBpbnZhbGlk
IGVuY29kaW5nIGZvciB0ZXN0aW5nLgotICAgIGZpcnN0X2J5dGUgPSAoKG11eC5fTVVYX09QQ09E
RV9BRERfQ0hBTk5FTF9SRVFVRVNUIDw8IDUpIHwgZW5jb2RpbmcpCi0gICAgcGF5bG9hZCA9IChj
aHIoZmlyc3RfYnl0ZSkgKwotICAgICAgICAgICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChj
aGFubmVsX2lkKSArCi0gICAgICAgICAgICAgICBtdXguX2VuY29kZV9udW1iZXIobGVuKGVuY29k
ZWRfaGFuZHNoYWtlKSkgKwotICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UpCi0gICAg
cmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUoCi0gICAgICAgIChtdXguX2VuY29kZV9jaGFubmVs
X2lkKG11eC5fQ09OVFJPTF9DSEFOTkVMX0lEKSArIHBheWxvYWQpLCBtYXNrPVRydWUpCi0KLQot
ZGVmIF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVz
c2FnZT0nJyk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVs
X2lkLCBjb2RlLCBtZXNzYWdlKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAg
ICAgICAobXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBw
YXlsb2FkKSwgbWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRl
X2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSkKLSAgICByZXR1cm4g
Y3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAgICAgKG11eC5fZW5jb2RlX2NoYW5uZWxfaWQobXV4
Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgcGF5bG9hZCksIG1hc2s9VHJ1ZSkKLQotCi1kZWYgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQsIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BD
T0RFX0JJTkFSWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsIHJzdjE9RmFs
c2UsIHJzdjI9RmFsc2UsIHJzdjM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1h
c2s9VHJ1ZSk6Ci0gICAgYml0cyA9IGNocigoZmluIDw8IDcpIHwgKHJzdjEgPDwgNikgfCAocnN2
MiA8PCA1KSB8IChyc3YzIDw8IDQpIHwgb3Bjb2RlKQotICAgIHBheWxvYWQgPSBtdXguX2VuY29k
ZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsgYml0cyArIG1lc3NhZ2UKLSAgICByZXR1cm4gY3Jl
YXRlX2JpbmFyeV9mcmFtZShwYXlsb2FkLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfcmVx
dWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nLCBleHRlbnNpb25zPU5vbmUpOgotICAgIGhlYWRlcnMg
PSAoCi0gICAgICAgICdHRVQgJXMgSFRUUC8xLjFcclxuJwotICAgICAgICAnSG9zdDogc2VydmVy
LmV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAg
ICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJykgJSBwYXRoCi0gICAgaWYgZXh0
ZW5zaW9uczoKLSAgICAgICAgaGVhZGVycyArPSAnJXM6ICVzJyAlICgKLSAgICAgICAgICAgIGNv
bW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLCBleHRlbnNpb25zKQotICAgIHJl
dHVybiBoZWFkZXJzCi0KLQotY2xhc3MgTXV4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
IiIiQSB1bml0dGVzdCBmb3IgbXV4IG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxf
aWRfZGVjb2RlKHNlbGYpOgotICAgICAgICBkYXRhID0gJ1x4MDBceDAxXHhiZlx4ZmZceGRmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5
bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5l
bF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgY2hhbm5lbF9pZCkKLSAgICAgICAg
Y2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIucmVhZF9j
aGFubmVsX2lkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICoqIDE0IC0gMSwgY2hhbm5l
bF9pZCkKLSAgICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIgKiogMjEgLSAxLCBjaGFubmVsX2lkKQotICAgICAgICBj
aGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMiAqKiAyOSAtIDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVs
X2lkX2VuY29kZShzZWxmKToKLSAgICAgICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxf
aWQoMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMCcsIGVuY29kZWQpCi0gICAgICAg
IGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMTQgLSAxKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceGJmXHhmZicsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBt
dXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMTQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1x4YzBAXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFu
bmVsX2lkKDIgKiogMjEgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGRmXHhmZlx4
ZmYnLCBlbmNvZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgy
ICoqIDIxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGUwIFx4MDBceDAwJywgZW5jb2Rl
ZCkKLSAgICAgICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyOSAtIDEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ZmZceGZmXHhmZlx4ZmYnLCBlbmNvZGVkKQot
ICAgICAgICAjIGNoYW5uZWxfaWQgaXMgdG9vIGxhcmdlCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fZW5jb2RlX2No
YW5uZWxfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogMjkpCi0KLSAgICBkZWYg
dGVzdF9yZWFkX211bHRpcGxlX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICAjIFVzZSBB
ZGRDaGFubmVsUmVxdWVzdCBiZWNhdXNlIGl0IGNhbiBjb250YWluIGFyYml0cmFyeSBsZW5ndGgg
b2YgZGF0YQotICAgICAgICBkYXRhID0gKCdceDAwXHgwMVx4MDFhJwotICAgICAgICAgICAgICAg
ICdceDAwXHgwMlx4N2QlcycKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDNceDdlXHhmZlx4ZmYl
cycKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDRceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAx
XHgwMFx4MDAlcycpICUgKAotICAgICAgICAgICAgJ2EnICogMHg3ZCwgJ2InICogMHhmZmZmLCAn
YycgKiAweDEwMDAwKQotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNl
cihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tz
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGJsb2NrcykpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxv
Y2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hh
bm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29k
ZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09E
RV9BRERfQ0hBTk5FTF9SRVFVRVNULCBibG9ja3NbMV0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGJsb2Nrc1sxXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDB4N2QsIGxlbihibG9ja3NbMV0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nr
c1syXS5vcGNvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgYmxvY2tzWzJdLmNoYW5u
ZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZmZmLCBsZW4oYmxvY2tzWzJdLmVu
Y29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVFVRVNULCBibG9ja3NbM10ub3Bjb2RlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDQsIGJsb2Nrc1szXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDB4MTAwMDAsIGxlbihibG9ja3NbM10uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0K
LSAgICBkZWYgdGVzdF9yZWFkX2FkZF9jaGFubmVsX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIGRh
dGEgPSAnXHgwMFx4MDFceDAxYScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxv
YWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9s
X2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVFVRVNULCBibG9ja3NbMF0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IGxlbihibG9ja3NbMF0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9k
cm9wX2NoYW5uZWwoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHg2MFx4MDFceDAwJwotICAgICAg
ICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9j
a3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgbGVuKGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxv
Y2tzWzBdLmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BD
T0RFX0RST1BfQ0hBTk5FTCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCBibG9ja3NbMF0uZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIGxlbihibG9ja3NbMF0uZHJvcF9tZXNzYWdlKSkKLQotICAgICAgICBkYXRhID0gJ1x4NjBc
eDAyXHgwOVx4MDNceGU4U3VjY2VzcycKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBh
eWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250
cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwsIGJsb2Nrc1sw
XS5vcGNvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgYmxvY2tzWzBdLmRyb3Bf
Y29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnU3VjY2VzcycsIGJsb2Nrc1swXS5kcm9w
X21lc3NhZ2UpCi0KLSAgICAgICAgIyBSZWFzb24gaXMgdG9vIHNob3J0LgotICAgICAgICBkYXRh
ID0gJ1x4NjBceDAxXHgwMVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXls
b2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENv
bm5lY3Rpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBh
cnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9mbG93X2Nv
bnRyb2woc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHg0MFx4MDFceDAyJwotICAgICAgICBwYXJz
ZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBs
aXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBd
LmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0ZM
T1dfQ09OVFJPTCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
LCBibG9ja3NbMF0uc2VuZF9xdW90YSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfbmV3X2NoYW5uZWxf
c2xvdChzZWxmKToKLSAgICAgICAgZGF0YSA9ICdceDgwXHgwMVx4MDJceDAyXHgwMycKLSAgICAg
ICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgIyBU
T0RPKGJhc2hpKTogSW1wbGVtZW50Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlz
aWNhbENvbm5lY3Rpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBs
aXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9p
bnZhbGlkX251bWJlcl9maWVsZF9pbl9jb250cm9sX2Jsb2NrKHNlbGYpOgotICAgICAgICAjIE5v
IG51bWJlciBmaWVsZC4KLSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHBhcnNlciA9IG11eC5f
TXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBUaGUgbGFzdCB0d28g
Ynl0ZXMgYXJlIG1pc3NpbmcuCi0gICAgICAgIGRhdGEgPSAnXHg3ZScKLSAgICAgICAgcGFyc2Vy
ID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAjIE1pc3Np
bmcgdGhlIGxhc3Qgb25lIGJ5dGUuCi0gICAgICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFy
c2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5f
cmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBUaGUgbGVuZ3RoIG9mIG51bWJlciBmaWVsZCBpcyB0
b28gbGFyZ2UuCi0gICAgICAgIGRhdGEgPSAnXHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRh
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVt
YmVyKQotCi0gICAgICAgICMgVGhlIG1zYiBvZiB0aGUgZmlyc3QgYnl0ZSBpcyBzZXQuCi0gICAg
ICAgIGRhdGEgPSAnXHg4MCcKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQ
YXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2Vy
Ll9yZWFkX251bWJlcikKLQotICAgICAgICAjIFVzaW5nIDMgYnl0ZXMgZW5jb2RpbmcgZm9yIDEy
NS4KLSAgICAgICAgZGF0YSA9ICdceDdlXHgwMFx4N2QnCi0gICAgICAgIHBhcnNlciA9IG11eC5f
TXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBVc2luZyA5IGJ5dGVz
IGVuY29kaW5nIGZvciAweGZmZmYKLSAgICAgICAgZGF0YSA9ICdceDdmXHgwMFx4MDBceDAwXHgw
MFx4MDBceDAwXHhmZlx4ZmYnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2Fk
UGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNl
ci5fcmVhZF9udW1iZXIpCi0KLSAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfc2l6ZV9hbmRfY29u
dGVudHMoc2VsZik6Ci0gICAgICAgICMgT25seSBjb250YWluIG51bWJlciBmaWVsZC4KLSAgICAg
ICAgZGF0YSA9ICdceDAxJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBh
cnNlcihkYXRhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5fcmVhZF9zaXplX2Fu
ZF9jb250ZW50cykKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShz
ZWxmKToKLSAgICAgICAgZGF0YSA9IG11eC5fY3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNo
YW5uZWxfaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPSdGb29CYXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdGVkPUZhbHNlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceDIwXHgwMVx4MDZGb29CYXInLCBkYXRhKQotCi0gICAgICAgIGRhdGEg
PSBtdXguX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkPTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT0nSGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5jb2Rpbmc9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlamVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MzFceDAy
XHgwNUhlbGxvJywgZGF0YSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kcm9wX2NoYW5uZWwoc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0x
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDYwXHgwMVx4MDAnLCBkYXRhKQotCi0gICAg
ICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9MjAwMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdlcnJvcicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1x4NjBceDAxXHgwN1x4MDdceGQwZXJyb3InLCBkYXRhKQotCi0gICAg
ICAgICMgcmVhc29uIG11c3QgYmUgZW1wdHkgaWYgY29kZSBpcyBOb25lCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
Y3JlYXRlX2Ryb3BfY2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgTm9uZSwg
J0Zvb0JhcicpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZXF1ZXN0X3RleHQoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3RfdGV4dCA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIoKQotICAgICAgICBjb21t
YW5kLCBwYXRoLCB2ZXJzaW9uLCBoZWFkZXJzID0gbXV4Ll9wYXJzZV9yZXF1ZXN0X3RleHQocmVx
dWVzdF90ZXh0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdHRVQnLCBjb21tYW5kKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZWNobycsIHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hUVFAvMS4xJywgdmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBs
ZW4oaGVhZGVycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NlcnZlci5leGFtcGxlLmNv
bScsIGhlYWRlcnNbJ0hvc3QnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4
YW1wbGUuY29tJywgaGVhZGVyc1snT3JpZ2luJ10pCi0KLQotY2xhc3MgTXV4SGFuZGxlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWwoc2VsZik6Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNo
ZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4
SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgp
Ci0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1C
RVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRk
X2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2Vj
aG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAg
ICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAg
ICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxl
bmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxv
d19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxs
bycpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdl
cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5l
bF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCdd
LCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5u
ZWwgMgotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMg
Q2hhbm5lbCAzCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX21lc3NhZ2VzKDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2Vz
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAg
ICAgY29udHJvbF9ibG9ja3MgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJv
bF9ibG9ja3MoKQotICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSA4IGNvbnRyb2wgYmxvY2tzOgot
ICAgICAgICAjICAgLSAxIE5ld0NoYW5uZWxTbG90Ci0gICAgICAgICMgICAtIDIgQWRkQ2hhbm5l
bFJlc3BvbnNlcyBmb3IgY2hhbm5lbCBpZCAyIGFuZCAzCi0gICAgICAgICMgICAtIDYgRmxvd0Nv
bnRyb2xzIGZvciBjaGFubmVsIGlkIDEgKGluaXRpYWxpemUpLCAnSGVsbG8nLCAnV29ybGQnLAot
ICAgICAgICAjICAgICBhbmQgMyAnR29vZGJ5ZSdzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
OSwgbGVuKGNvbnRyb2xfYmxvY2tzKSkKLQotICAgIGRlZiB0ZXN0X3BoeXNpY2FsX2Nvbm5lY3Rp
b25fd3JpdGVfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBVc2UgX0ZhaWxPbldyaXRlQ29ubmVj
dGlvbi4KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249
X0ZhaWxPbldyaXRlQ29ubmVjdGlvbigpKQotCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9j
a0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAg
IyBMZXQgdGhlIHdvcmtlciBlY2hvIGJhY2sgJ0hlbGxvJy4gSXQgY2F1c2VzIF9GYWlsT25Xcml0
ZUNvbm5lY3Rpb24KLSAgICAgICAgIyByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBMZXQgdGhl
IHdvcmtlciBleGl0LiBUaGlzIHdpbGwgYmUgdW5uZWNlc3Nhcnkgd2hlbgotICAgICAgICAjIF9M
b2dpY2FsQ29ubmVjdGlvbi53cml0ZSgpIGlzIGNoYW5nZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9u
IGlmCi0gICAgICAgICMgd29rZSB1cCBieSBvbl93cml0ZXJfZG9uZS4KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEFsbCB0aHJl
YWRzIHNob3VsZCBiZSBkb25lLgotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIu
d2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0KLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9J
TklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBl
bmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIE9u
IHJlY2VpdmluZyB0aGlzICdIZWxsbycsIHRoZSBzZXJ2ZXIgdHJpZXMgdG8gZWNobyBiYWNrICdI
ZWxsbycsCi0gICAgICAgICMgYnV0IGl0IHdpbGwgYmUgYmxvY2tlZCBzaW5jZSB0aGVyZSdzIG5v
IHNlbmQgcXVvdGEgYXZhaWxhYmxlIGZvciB0aGUKLSAgICAgICAgIyBjaGFubmVsIDIuCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMg
V2FpdCB1bnRpbCB0aGUgd29ya2VyIGlzIGJsb2NrZWQgZHVlIHRvIHNlbmQgcXVvdGEgc2hvcnRh
Z2UuCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIENsb3NlIHRoZSBjaGFubmVs
IDIuIFRoZSB3b3JrZXIgc2hvdWxkIGJlIG5vdGlmaWVkIG9mIHRoZSBlbmQgb2YKLSAgICAgICAg
IyB3cml0ZXIgdGhyZWFkIGFuZCBzdG9wIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgdG8gYmUgcmVw
bGVuaXNoZWQuCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2Zy
YW1lKGNoYW5uZWxfaWQ9MikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGRyb3BfY2hhbm5lbCkKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2hhbm5lbCAxIGlzIGFs
c28gY2xvc2VkLgotICAgICAgICBkcm9wX2NoYW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9m
cmFtZShjaGFubmVsX2lkPTEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
ZHJvcF9jaGFubmVsKQotCi0gICAgICAgICMgQWxsIHRocmVhZHMgc2hvdWxkIGJlIGRvbmUuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91
dD0yKSkKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2VuY29kaW5nKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVN
QkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGRlbHRhID0gJ0dF
VCAvZWNobyBIVFRQLzEuMVxyXG5cclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0g
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9p
ZD0yLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZs
b3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNo
ZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2Nv
bnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxf
ZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlv
bi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNb
MF0pCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19vdmVycmlkZShz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAg
ZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0g
bXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVy
LnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklU
SUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICAjIE92
ZXJyaWRlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2Vj
aG8gSFRUUC8xLjFcclxuJwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bDogeC1mb29cclxuJwotICAgICAgICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFu
bmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAg
ICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3Qp
Ci0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hh
bm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVz
c2FnZT0nSGVsbG8nKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3Bh
dGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVx
dWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVs
bG8nLCBtZXNzYWdlc1swXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneC1mb28nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVz
dC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2FmdGVyX2lk
ZW50aXR5KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQot
ICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hh
bmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4
X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyht
dXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAg
ICAjIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaXMgZGlmZmVyZW50IGZyb20gY2xpZW50J3Mgb3Bl
bmluZyBoYW5kc2hha2UKLSAgICAgICAgIyBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAg
ICAgICAgIyBUT0RPKGJhc2hpKTogUmVtb3ZlIFVwZ3JhZGUsIENvbm5lY3Rpb24sIFNlYy1XZWJT
b2NrZXQtS2V5IGFuZAotICAgICAgICAjIFNlYy1XZWJTb2NrZXQtVmVyc2lvbi4KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSAoCi0gICAgICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJc
bicKLSAgICAgICAgICAgICdIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25u
ZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxl
LmNvbVxyXG4nCi0gICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19j
b250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZGVsdGEgPSAn
R0VUIC9lY2hvIEhUVFAvMS4xXHJcblxyXG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTMsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAg
Zmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5p
c2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3df
Y29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8n
KSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoW10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxf
ZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwg
ZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1szXS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVs
IDIKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVz
c2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENo
YW5uZWwgMwotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRl
bl9tZXNzYWdlcygzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAg
ICMgSGFuZHNoYWtlIGJhc2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICAneC1mb28nLAotICAgICAgICAgICAgbXV4X2hhbmRsZXIuX2hh
bmRzaGFrZV9iYXNlLl9oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10pCi0KLSAgICBk
ZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9yZW1vdmVfaGVhZGVyKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIE92ZXJyaWRlIGhhbmRzaGFrZSBk
ZWx0YSBiYXNlLgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9ICgKLSAgICAgICAgICAgICdH
RVQgL2VjaG8gSFRUUC8xLjFcclxuJwotICAgICAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxl
LmNvbVxyXG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxu
JwotICAgICAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ09y
aWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICdcclxuJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250
cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90
YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkK
LQotICAgICAgICAjIFJlbW92ZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4KLSAgICAg
ICAgZGVsdGEgPSAoJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAgICAgICdT
ZWMtV2ViU29ja2V0LVByb3RvY29sOicKLSAgICAgICAgICAgICAgICAgJ1xyXG4nKQotICAgICAg
ICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1l
KAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFr
ZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBt
ZXNzYWdlPSdXb3JsZCcpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAot
ICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0n
R29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5
ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nR29vZGJ5ZScpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGlt
ZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkaXNwYXRjaGVyLmNoYW5u
ZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8n
XSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbJ1dvcmxkJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbM10ubWVzc2Fn
ZXMpCi0gICAgICAgICMgQ2hhbm5lbCAyCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25u
ZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNz
YWdlc1swXSkKLSAgICAgICAgIyBDaGFubmVsIDMKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0
LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcs
IG1lc3NhZ2VzWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ3gt
Zm9vJywKLSAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53
c19wcm90b2NvbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIE5vbmUs
Ci0gICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLnJlcXVlc3Qud3NfcHJv
dG9jb2wpCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19wZXJtZXNz
YWdlX2RlZmxhdGUoc2VsZik6Ci0gICAgICAgICMgRW5hYmxlIHBlcm1lc3NhZ2UgZGVmbGF0ZSBl
eHRlbnNpb24gb24gdGhlIGltcGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIGV4dGVu
c2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2Nr
X3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucz1leHRlbnNp
b25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAg
bXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAg
ICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9z
bG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQot
Ci0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG5cclxuJwotICAgICAgICBh
ZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAot
ICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1k
ZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2Vk
ICdIZWxsbycgb24gbG9naWNhbCBjaGFubmVsIDEgYW5kIDIuCi0gICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9O
LCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVs
bG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTEsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByc3YxPVRydWUpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVz
c2FnZT1jb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJzdjE9VHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3Bh
dGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAg
ICAgICAjIFdyaXR0ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAgICAgIG1l
c3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21wcmVzc2VkX2hlbGxvLCBtZXNzYWdlc1swXSkKLSAgICAgICAgbWVzc2FnZXMg
PSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbXByZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBdKQotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5u
ZWxfZGVsdGFfZW5jb2RpbmdfcmVtb3ZlX2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgICMgRW5h
YmxlIHBlcm1lc3NhZ2UgZGVmbGF0ZSBleHRlbnNpb24gb24gdGhlIGltcGxpY2l0bHkgb3BlbmVk
IGNoYW5uZWwuCi0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygK
LSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2No
YW5uZWxfZXh0ZW5zaW9ucz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBt
dXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5O
RUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgUmVtb3ZlIHBlcm1lc3NhZ2UgZGVm
bGF0ZSBleHRlbnNpb24uCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRUUC8xLjFcclxu
JwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOlxyXG4nCi0gICAg
ICAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVh
dGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9Miwg
ZW5jb2Rpbmc9MSwgZW5jb2RlZF9oYW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2Nv
bnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1
b3RhPTIwKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJv
bCkKLQotICAgICAgICAjIFNlbmQgY29tcHJlc3NlZCBtZXNzYWdlIG9uIGxvZ2ljYWwgY2hhbm5l
bCAyLiBUaGUgbWVzc2FnZSBzaG91bGQKLSAgICAgICAgIyBiZSByZWplY3RlZCAoc2luY2UgcnN2
MSBpcyBzZXQpLgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFY
X1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hl
bGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
U1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9b
Oi00XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT1jb21wcmVzc2VkX2hl
bGxvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0KLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9Mikp
Ci0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4g
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAg
ICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfTk9STUFMX0NMT1NVUkUsIGRyb3BfY2hh
bm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZHJvcF9jaGFubmVs
LmNoYW5uZWxfaWQpCi0gICAgICAgICMgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiBzaG91bGQg
YmUgcmFpc2VkIG9uIGxvZ2ljYWwgY2hhbm5lbCAyLgotICAgICAgICBzZWxmLmFzc2VydFRydWUo
aXNpbnN0YW5jZShkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLmV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbikp
Ci0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9pbnZhbGlkX2VuY29kaW5nKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9j
aGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTMsCi0gICAgICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSht
dXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2No
YW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24u
Z2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0g
bXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
dXguX0RST1BfQ09ERV9VTktOT1dOX1JFUVVFU1RfRU5DT0RJTkcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRl
ZiB0ZXN0X2FkZF9jaGFubmVsX2luY29tcGxldGVfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGluY29tcGxldGVfZW5jb2RlZF9o
YW5kc2hha2UgPSAnR0VUIC9lY2hvIEhUVFAvMS4xJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9aW5j
b21wbGV0ZV9lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9o
YW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgxIGluIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShub3QgMiBpbiBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzKQotCi0gICAgZGVmIHRlc3Rf
YWRkX2NoYW5uZWxfZHVwbGljYXRlX2NoYW5uZWxfaWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9T
TE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29k
ZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9j
aGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3Jl
cXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9
IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxf
aWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRf
aGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFu
bmVsX3JlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRf
dW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0g
ICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250
cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVf
RFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0NI
QU5ORUxfQUxSRUFEWV9FWElTVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFu
bmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lO
VEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZHJv
cF9jaGFubmVsKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3Qo
KQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4
X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
bXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90
cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0g
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScv
ZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVs
X3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0g
ICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAg
ICAgIGRyb3BfY2hhbm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQ9
MikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhkcm9wX2NoYW5uZWwpCi0K
LSAgICAgICAgIyBUZXJtaW5hdGUgaW1wbGljaXRseSBvcGVuZWQgY2hhbm5lbC4KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxm
LmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAg
ICAgICAgZXhjZXB0aW9uID0gZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5leGNlcHRpb24K
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Y2VwdGlvbi5fX2NsYXNzX18gPT0gQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3BpbmdfZnJhbWUo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5J
VElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5j
b2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAg
ICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9m
cmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAg
IGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19j
b250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9x
dW90YT0xMykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRy
b2wpCi0KLSAgICAgICAgcGluZ19mcmFtZSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nSGVsbG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKHBpbmdfZnJhbWUpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEs
IG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3Nh
Z2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2Fp
dF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNv
bm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtZXNzYWdlc1swXVsnbWVzc2Fn
ZSddKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudGVkX3Bpbmcoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJf
T0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2No
YW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xMykKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAg
ICAgIyBTZW5kIGEgcGluZyB3aXRoIG1lc3NhZ2UgJ0hlbGxvIHdvcmxkIScgaW4gdHdvIGZyYWdt
ZW50ZWQgZnJhbWVzLgotICAgICAgICBwaW5nX2ZyYW1lMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2U9J0hlbGxvICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhwaW5nX2ZyYW1lMSkKLSAgICAgICAgcGluZ19mcmFtZTIgPSBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9O
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmdfZnJhbWUyKQotCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0g
ICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
bWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcs
IG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8g
V29ybGQhJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVf
ZnJhZ21lbnRlZF9waW5nX3doaWxlX3JlY2VpdmluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9O
VU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAg
YWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgK
LSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0x
OSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgIyBTZW5kIGEgZnJhZ21lbnRlZCBmcmFtZSBvZiBtZXNzYWdlICdIZWxsbyAnLgot
ICAgICAgICBoZWxsbyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvICcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhoZWxsbykKLQotICAgICAgICAjIEJlZm9yZSBzZW5k
aW5nIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UsIHNlbmQgYQotICAg
ICAgICAjIGZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGluZzEgPSBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNv
bW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhw
aW5nMSkKLSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSduZyEnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElO
VUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcyKQotCi0g
ICAgICAgICMgU2VuZCB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLgot
ICAgICAgICB3b3JsZCA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1dvcmxkIScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJ
T04pCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMod29ybGQpCi0KLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFz
c2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAg
ICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykKLSAg
ICAgICAgY29udHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9j
b250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09E
RV9QT05HLCBjb250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnUGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBk
ZWYgdGVzdF9yZWNlaXZlX3R3b19waW5nX3doaWxlX3JlY2VpdmluZ19mcmFnbWVudGVkX21lc3Nh
Z2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAg
ICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxl
ciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFu
ZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5f
SU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxv
d19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hl
ZF9xdW90YT0yNSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2Nv
bnRyb2wpCi0KLSAgICAgICAgIyBTZW5kIGEgZnJhZ21lbnRlZCBmcmFtZSBvZiBtZXNzYWdlICdI
ZWxsbyAnLgotICAgICAgICBoZWxsbyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxv
ICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhoZWxsbykKLQotICAgICAgICAjIEJl
Zm9yZSBzZW5kaW5nIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UsIHNl
bmQgYQotICAgICAgICAjIGZyYWdtZW50ZWQgcGluZyBhbmQgYSBub24tZnJhZ21lbnRlZCBwaW5n
LgotICAgICAgICBwaW5nMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BpJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBpbmcxKQotICAgICAgICBwaW5nMiA9
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J25nIScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzIpCi0gICAgICAgIHBpbmczID0gX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nUG9uZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhwaW5nMykKLQotICAgICAgICAjIFNlbmQgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFt
ZSBvZiB0aGUgbWVzc2FnZS4KLSAgICAgICAgd29ybGQgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPSdXb3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKHdvcmxkKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29k
YnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93
cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyBXb3Js
ZCEnXSwgbWVzc2FnZXMpCi0gICAgICAgIGNvbnRyb2xfbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5l
Y3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgY29udHJvbF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgY29udHJvbF9tZXNzYWdlc1swXVsn
bWVzc2FnZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywg
Y29udHJvbF9tZXNzYWdlc1sxXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1BvbmchJywgY29udHJvbF9tZXNzYWdlc1sxXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX3doaWxlX3JlY2VpdmluZ19mcmFnbWVudGVkX3Bpbmcoc2VsZik6Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNo
ZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4
SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgp
Ci0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1C
RVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRk
X2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTkpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAg
ICAgICMgU2VuZCBhIGZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGluZzEgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bj
b2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhwaW5nMSkKLQotICAgICAgICAjIEJlZm9yZSBzZW5kaW5nIHRoZSBsYXN0IGZyYWdtZW50
ZWQgcGluZywgc2VuZCBhIG1lc3NhZ2UuCi0gICAgICAgICMgVGhlIGxvZ2ljYWwgY2hhbm5lbCAo
Mikgc2hvdWxkIGJlIGRyb3BwZWQuCi0gICAgICAgIG1lc3NhZ2UgPSBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2U9J0hlbGxvIHdvcmxkIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmluPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMobWVzc2FnZSkKLQotICAgICAgICAjIFNlbmQgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSBv
ZiB0aGUgbWVzc2FnZS4KLSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
PSduZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENP
REVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHBp
bmcyKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBi
IGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2Nrcygp
Ci0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQot
ICAgICAgICAjIE5vIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgb24gY2hhbm5lbCAyLgotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRy
b2xfbWVzc2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIpCi0KLSAgICBkZWYgdGVz
dF9zZW5kX3Bpbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVz
dCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBt
dXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAg
ICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Ns
b3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0K
LSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9
Jy9waW5nJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5u
ZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwK
LSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAg
ICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9p
ZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAot
ICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0n
R29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3Vu
dGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVj
dGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbW9uLk9QQ09ERV9QSU5HLCBtZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAg
IGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFu
ZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xP
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9R
VU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9y
ZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVk
X2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIDMgYnl0ZXMuIFRoaXMgaXNuJ3Qg
ZW5vdWdoIHRvIHNlbmQgdGhlIHdob2xlIHBpbmcgZnJhbWUKLSAgICAgICAgIyBiZWNhdXNlIHRo
ZSBmcmFtZSB3aWxsIGhhdmUgNSBieXRlcyBtZXNzYWdlKCdQaW5nIScpLiBUaGUgZnJhbWUKLSAg
ICAgICAgIyBzaG91bGQgYmUgZnJhZ21lbnRlZC4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0zKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAg
ICAjIFdhaXQgdW50aWwgdGhlIHdvcmtlciBpcyBibG9ja2VkIGR1ZSB0byBzZW5kIHF1b3RhIHNo
b3J0YWdlLgotICAgICAgICB0aW1lLnNsZWVwKDEpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggcmVt
YWluaW5nIDIgKyAxIGJ5dGVzIChpbmNsdWRpbmcgZXh0cmEgY29zdCkuCi0gICAgICAgIGZsb3df
Y29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRf
cXVvdGE9MykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRy
b2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkK
LQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dy
aXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1v
bi5PUENPREVfUElORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdQaW5nIScsIG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX2ZyYWdtZW50ZWRfcGluZ193aGlsZV9zZW5kaW5nX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlz
cGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4
Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0
YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFM
X05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIoCi0gICAgICAgICAgICBwYXRoPScv
cGluZ193aGlsZV9oZWxsb193b3JsZCcpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgICMgQXBwbGljYXRpb24gd2lsbCBzZW5kOgotICAgICAgICAj
IC0gdGV4dCBtZXNzYWdlICdIZWxsbyAnIHdpdGggZmluPTAKLSAgICAgICAgIyAtIHBpbmcgd2l0
aCAnUGluZyEnIG1lc3NhZ2UKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnV29ybGQhJyB3aXRo
IGZpbj0xCi0gICAgICAgICMgUmVwbGVuaXNoICg2ICsgMSkgKyAoMiArIDEpIGJ5dGVzIHNvIHRo
YXQgdGhlIHBpbmcgd2lsbCBiZQotICAgICAgICAjIGZyYWdtZW50ZWQgb24gdGhlIGxvZ2ljYWwg
Y2hhbm5lbC4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJh
bWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0xMCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgdGltZS5zbGVlcCgxKQotCi0g
ICAgICAgICMgUmVwbGVuaXNoIHJlbWFpbmluZyAzICsgNiBieXRlcy4KLSAgICAgICAgZmxvd19j
b250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9x
dW90YT05KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJv
bCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGlt
ZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQh
J10sIG1lc3NhZ2VzKQotICAgICAgICBjb250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0
aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21l
c3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRlZF90d29fcGluZ193aGlsZV9z
ZW5kaW5nX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hl
cigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3Bh
dGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVz
dF9oZWFkZXIoCi0gICAgICAgICAgICBwYXRoPScvdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQn
KQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1
ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAg
ICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAj
IEFwcGxpY2F0aW9uIHdpbGwgc2VuZDoKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnSGVsbG8g
JyB3aXRoIGZpbj0wCi0gICAgICAgICMgLSBwaW5nIHdpdGggJ1BpbmchJyBtZXNzYWdlCi0gICAg
ICAgICMgLSBwaW5nIHdpdGggJ1BvbmchJyBtZXNzYWdlCi0gICAgICAgICMgLSB0ZXh0IG1lc3Nh
Z2UgJ1dvcmxkIScgd2l0aCBmaW49MQotICAgICAgICAjIFJlcGxlbmlzaCAoNiArIDEpICsgKDIg
KyAxKSBieXRlcyBzbyB0aGF0IHRoZSBmaXJzdCBwaW5nIHdpbGwgYmUKLSAgICAgICAgIyBmcmFn
bWVudGVkIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9j
cmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTApCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAg
ICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIFJlcGxlbmlzaCByZW1haW5pbmcgMyArICg1
ICsgMSkgKyA2IGJ5dGVzLiBUaGUgc2Vjb25kIHBpbmcgd29uJ3QKLSAgICAgICAgIyBiZSBmcmFn
bWVudGVkIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9j
cmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTUpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQot
Ci0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3Nh
Z2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwgbWVzc2Fn
ZXMpCi0gICAgICAgIGNvbnRyb2xfbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dy
aXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1v
bi5PUENPREVfUElORywgY29udHJvbF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgY29udHJvbF9tZXNzYWdlc1swXVsnbWVzc2FnZSddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUElORywgY29udHJvbF9tZXNz
YWdlc1sxXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BvbmchJywgY29u
dHJvbF9tZXNzYWdlc1sxXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9kcm9wX2No
YW5uZWwoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFu
ZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhf
aGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBEcm9wQ2hhbm5lbCBmb3IgY2hhbm5lbCBpZCAx
IHdoaWNoIGRvZXNuJ3QgaGF2ZSByZWFzb24uCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2JpbmFy
eV9mcmFtZSgnXHgwMFx4NjBceDAxXHgwMCcsIG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4
X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFu
bmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdl
dF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11
eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4
Ll9EUk9QX0NPREVfQUNLTk9XTEVER0VELAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bf
Y2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZHJvcF9jaGFu
bmVsLmNoYW5uZWxfaWQpCi0KLSAgICBkZWYgdGVzdF90d29fZmxvd19jb250cm9sKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVN
QkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFk
ZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0g
ICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIDUg
Ynl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBTZW5kIDEwIGJ5dGVzLiBUaGUg
c2VydmVyIHdpbGwgdHJ5IGVjaG8gYmFjayAxMCBieXRlcy4KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvV29ybGQnKSkKLQotICAgICAgICAjIFJlcGxlbmlzaCA1
ICsgMSAocGVyLW1lc3NhZ2UgZXh0cmEgY29zdCkgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJv
bCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9
NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0K
LSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2Fn
ZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvV29ybGQnXSwgbWVzc2FnZXMp
Ci0gICAgICAgIHJlY2VpdmVkX2Zsb3dfY29udHJvbHMgPSBbCi0gICAgICAgICAgICBiIGZvciBi
IGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAg
ICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRkxPV19DT05UUk9MIGFuZCBi
LmNoYW5uZWxfaWQgPT0gMl0KLSAgICAgICAgIyBSZXBsZW5pc2htZW50IGZvciAnSGVsbG9Xb3Js
ZCcgKyAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEsIHJlY2VpdmVkX2Zsb3dfY29udHJv
bHNbMF0uc2VuZF9xdW90YSkKLSAgICAgICAgIyBSZXBsZW5pc2htZW50IGZvciAnR29vZGJ5ZScg
KyAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1sx
XS5zZW5kX3F1b3RhKQotCi0gICAgZGVmIHRlc3Rfbm9fc2VuZF9xdW90YV9vbl9zZXJ2ZXIoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRp
c3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11
eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5z
dGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElB
TF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvV29ybGQnKSkKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgICMgSnVzdCB3YWl0IGZv
ciAxIHNlYyBzbyB0aGF0IHRoZSBzZXJ2ZXIgYXR0ZW1wdHMgdG8gZWNobyBiYWNrCi0gICAgICAg
ICMgJ0hlbGxvV29ybGQnLgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG11eF9oYW5kbGVyLndh
aXRfdW50aWxfZG9uZSh0aW1lb3V0PTEpKQotCi0gICAgICAgICMgTm8gbWVzc2FnZSBzaG91bGQg
YmUgc2VudCBvbiBjaGFubmVsIDIuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0
ZW5fbWVzc2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIpCi0KLSAgICBkZWYgdGVz
dF9ub19zZW5kX3F1b3RhX29uX3NlcnZlcl9mb3JfcGVybWVzc2FnZV9leHRyYV9jb3N0KHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNw
YXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXgu
X011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3Rh
cnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxf
TlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAg
IGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJv
bCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9
NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAgICAgICAj
IFJlcGxlbmlzaCBvbmx5IGxlbignV29ybGQnKSBieXRlcy4KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT01
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLSAg
ICAgICAgIyBTZXJ2ZXIgc2hvdWxkIG5vdCBjYWxsYmFjayBmb3IgdGhpcyBtZXNzYWdlLgotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nV29ybGQnKSkKLQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgICMgSnVz
dCB3YWl0IGZvciAxIHNlYyBzbyB0aGF0IHRoZSBzZXJ2ZXIgYXR0ZW1wdHMgdG8gZWNobyBiYWNr
Ci0gICAgICAgICMgJ1dvcmxkJy4KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0xKSkKLQotICAgICAgICAjIE9ubHkgb25lIG1lc3Nh
Z2Ugc2hvdWxkIGJlIHNlbnQgb24gY2hhbm5lbCAyLgotICAgICAgICBtZXNzYWdlcyA9IHJlcXVl
c3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnSGVsbG8nXSwgbWVzc2FnZXMpCi0KLSAgICBkZWYgdGVzdF9xdW90YV92aW9sYXRp
b25fYnlfY2xpZW50KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVl
c3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAg
bXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAg
ICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9z
bG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsIDApCi0KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvV29ybGQnKSkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAg
ICBjb250cm9sX2Jsb2NrcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9s
X2Jsb2NrcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNvbnRyb2xfYmxvY2tz
KSkKLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4g
Y29udHJvbF9ibG9ja3MKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09E
RV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVf
U0VORF9RVU9UQV9WSU9MQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFu
bmVsLmRyb3BfY29kZSkKLQotICAgIGRlZiB0ZXN0X2NvbnN1bWVfcXVvdGFfZW1wdHlfbWVzc2Fn
ZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAg
ICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVy
ID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5k
bGVyLnN0YXJ0KCkKLSAgICAgICAgIyBDbGllbnQgaGFzIDEgYnl0ZSBxdW90YS4KLSAgICAgICAg
bXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFO
TkVMX1NMT1RTLCAxKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1
ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgICMgU2VuZCBhbiBlbXB0eSBt
ZXNzYWdlLiBQeXdlYnNvY2tldCBhbHdheXMgcmVwbGVuaXNoZXMgMSBieXRlIHF1b3RhCi0gICAg
ICAgICMgZm9yIGVtcHR5IG1lc3NhZ2UKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1l
c3NhZ2U9JycpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29k
YnllJykpCi0gICAgICAgICMgVGhpcyBtZXNzYWdlIHZpb2xhdGVzIHF1b3RhIG9uIGNoYW5uZWwg
aWQgMi4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkK
LQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZGlzcGF0Y2hlci5j
aGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycs
IGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVzc2FnZXNbMF0pCi0KLSAgICAgICAgcmVj
ZWl2ZWRfZmxvd19jb250cm9scyA9IFsKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5j
b25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIu
b3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9GTE9XX0NPTlRST0wgYW5kIGIuY2hhbm5lbF9pZCA9
PSAyXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZWNlaXZlZF9mbG93X2NvbnRy
b2xzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCByZWNlaXZlZF9mbG93X2NvbnRyb2xz
WzBdLnNlbmRfcXVvdGEpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAg
ICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxv
Y2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NI
QU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZHJvcF9jaGFubmVsLmNoYW5uZWxf
aWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfU0VORF9RVU9UQV9W
SU9MQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29k
ZSkKLQotICAgIGRlZiB0ZXN0X2NvbnN1bWVfcXVvdGFfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNw
YXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXgu
X011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3Rh
cnQoKQotICAgICAgICAjIENsaWVudCBoYXMgbGVuKCdIZWxsbycpICsgbGVuKCdHb29kYnllJykg
KyAyIGJ5dGVzIHF1b3RhLgotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyht
dXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsIDE0KQotCi0gICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAg
ICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJh
bWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBl
bmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29u
dHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVv
dGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZScsIGZpbj1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9U
RVhUKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J2xsbycsIGZpbj1U
cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BD
T0RFX0NPTlRJTlVBVElPTikpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3Nh
Z2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAg
ICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dv
b2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRp
bF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rp
b24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hl
bGxvJ10sIG1lc3NhZ2VzKQotCi0gICAgZGVmIHRlc3RfZnJhZ21lbnRlZF9jb250cm9sX21lc3Nh
Z2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAg
ICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxl
ciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFu
ZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5f
SU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9waW5nJykK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBS
ZXBsZW5pc2ggdG90YWwgNiBieXRlcyBpbiAzIEZsb3dDb250cm9scy4KLSAgICAgICAgZmxvd19j
b250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9x
dW90YT0xKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJv
bCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVf
Zmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MykKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFz
c2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAg
ICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNz
YWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUElORywgbWVz
c2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIG1l
c3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX3Nsb3RfdmlvbGF0
aW9uX2J5X2NsaWVudChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1
ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAg
IG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAg
ICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxf
c2xvdHMoc2xvdHM9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vu
ZF9xdW90YT1tdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAg
ICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1l
KAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5j
b2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAg
ICAjIFRoaXMgcmVxdWVzdCBzaG91bGQgYmUgcmVqZWN0ZWQuCi0gICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFk
ZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0g
ICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotICAgICAgICBmbG93X2NvbnRyb2wgPSBf
Y3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoW10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxf
ZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRpc3BhdGNoZXIu
Y2hhbm5lbF9ldmVudHMuaGFzX2tleSgzKSkKLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgK
LSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2Nv
bnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09E
RV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgZHJvcF9jaGFubmVs
LmNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfTkVX
X0NIQU5ORUxfU0xPVF9WSU9MQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9j
aGFubmVsLmRyb3BfY29kZSkKLQotICAgIGRlZiB0ZXN0X3F1b3RhX292ZXJmbG93X2J5X2NsaWVu
dChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAg
ICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVy
ID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5k
bGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMoc2xvdHM9
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9xdW90YT1tdXgu
X0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9
IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5l
bF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLSAgICAgICAgIyBSZXBsZW5pc2ggMHg3RkZGRkZGRkZG
RkZGRkZGIGJ5dGVzIHR3aWNlLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3df
Y29udHJvbF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgIHJl
cGxlbmlzaGVkX3F1b3RhPTB4N0ZGRkZGRkZGRkZGRkZGRikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0x
LCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5k
bGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9
IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01V
WF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3Bf
Y2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9D
T0RFX1NFTkRfUVVPVEFfT1ZFUkZMT1csCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9j
aGFubmVsLmRyb3BfY29kZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfZW5jYXBzdWxhdGVkX21l
c3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFu
ZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhf
aGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9IChtdXguX01VWF9PUENPREVf
QUREX0NIQU5ORUxfUkVRVUVTVCA8PCA1KQotICAgICAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0
ZSkgKwotICAgICAgICAgICAgICAgICBtdXguX2VuY29kZV9jaGFubmVsX2lkKDEpICsKLSAgICAg
ICAgICAgICAgICAgbXV4Ll9lbmNvZGVfbnVtYmVyKDApKQotICAgICAgICBwYXlsb2FkID0gbXV4
Ll9lbmNvZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBibG9jawotICAg
ICAgICB0ZXh0X2ZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFtZShwYXlsb2FkLCBvcGNvZGU9Y29t
bW9uLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXModGV4dF9m
cmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9k
b25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAg
ICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxv
Y2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NI
QU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfSU5WQUxJRF9F
TkNBUFNVTEFUSU5HX01FU1NBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFu
bmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lO
VEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxfaWRf
dHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3Qo
KQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4
X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
bXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgVGhlIGxhc3QgYnl0ZSBvZiB0aGUgY2hh
bm5lbCBpZCBpcyBtaXNzaW5nLgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUo
J1x4ODAnLCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
ZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxf
ZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAg
ICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Js
b2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9D
SEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0NIQU5ORUxf
SURfVFJVTkNBVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9w
X2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbm5lcl9mcmFtZV90cnVuY2F0
ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAg
ICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxl
ciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFu
ZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBKdXN0IGNvbnRhaW4gY2hhbm5lbCBpZCAxLgotICAg
ICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDEnLCBtYXNrPVRydWUpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3Qu
Y29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBi
Lm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0VOQ0FQU1VMQVRFRF9GUkFNRV9JU19UUlVOQ0FURUQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9S
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xv
c2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X3Vua25vd25fbXV4X29wY29kZShzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9
IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5k
bGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLQot
ICAgICAgICAjIFVuZGVmaW5lZCBvcGNvZGUgNQotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5h
cnlfZnJhbWUoJ1x4MDBceGEwJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBu
ZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0
ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1Bf
Q09ERV9VTktOT1dOX01VWF9PUENPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9j
aGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uU1RBVFVT
X0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRf
bXV4X2NvbnRyb2xfYmxvY2soc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tf
cmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAg
ICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQot
ICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBEcm9wQ2hhbm5lbCBjb250
YWlucyAxIGJ5dGUgcmVhc29uCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2JpbmFyeV9mcmFtZSgn
XHgwMFx4NjBceDAwXHgwMVx4MDAnLCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5k
bGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9
IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01V
WF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZHJvcF9jaGFubmVsLmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
b24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5zZXJ2ZXJfY2xvc2VfY29kZSkKLQotICAgIGRlZiB0ZXN0
X3Blcm1lc3NhZ2VfZGVmbGF0ZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9j
a19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0g
ICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2No
YW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLQotICAgICAgICAjIEVuYWJsZSBwZXJtZXNzYWdlIGRlZmxhdGUgZXh0ZW5zaW9uIG9u
IGxvZ2ljYWwgY2hhbm5lbCAyLgotICAgICAgICBleHRlbnNpb25zID0gY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM9ZXh0ZW5zaW9ucykKLSAgICAgICAg
YWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgK
LSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9s
ID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0y
MCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgIyBTZW5kIGNvbXByZXNzZWQgJ0hlbGxvJyB0d2ljZS4KLSAgICAgICAgY29tcHJl
c3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJF
U1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbzEgPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvMSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbzEgPSBjb21wcmVzc2VkX2hlbGxvMVs6LTRdCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0yLCBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8xLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8y
ID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzIg
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8yID0gY29tcHJlc3NlZF9oZWxsbzJbOi00XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByc3YxPVRydWUpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdl
PSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRf
dW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxs
bycsICdIZWxsbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5l
bF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgICMgV3JpdHRlbiAnSGVsbG8ncyBzaG91bGQg
YmUgY29tcHJlc3NlZC4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0
X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obWVz
c2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWRfaGVsbG8xLCBtZXNz
YWdlc1swXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvMiwgbWVz
c2FnZXNbMV0pCi0KLQotICAgIGRlZiB0ZXN0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFnbWVudGVk
X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5z
aW9ucygKLSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dp
Y2FsX2NoYW5uZWxfZXh0ZW5zaW9ucz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAg
ICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09G
X0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2Vk
ICdIZWxsb0hlbGxvSGVsbG8nIGFzIGZyYWdtZW50ZWQgbWVzc2FnZS4KLSAgICAgICAgY29tcHJl
c3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJF
U1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsb0hlbGxvSGVsbG8nKQotICAgICAgICBj
b21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAg
ICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0KLSAgICAgICAg
bSA9IGxlbihjb21wcmVzc2VkX2hlbGxvKSAvIDIKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21wcmVzc2Vk
X2hlbGxvWzptXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2Us
IHJzdjE9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29t
bW9uLk9QQ09ERV9URVhUKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvW206XSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwgcnN2MT1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9D
T05USU5VQVRJT04pKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0g
ICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdH
b29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50
aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsb0hl
bGxvSGVsbG8nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxf
ZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlv
bi5nZXRfd3JpdHRlbl9tZXNzYWdlcygxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbywg
bWVzc2FnZXNbMF0pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2JhZF9mcmFnbWVudGVkX21lc3Nh
Z2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAg
ICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxl
ciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFu
ZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5f
SU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykK
LSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVz
dF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBT
ZW5kIGEgZnJhbWUgd2l0aCBmaW49RmFsc2UsIGFuZCB0aGVuIHNlbmQgYSBmcmFtZSB3aXRoCi0g
ICAgICAgICMgb3Bjb2RlPVRFWFQgKG5vdCBDT05USU5VQVRJT04pLiBMb2dpY2FsIGNoYW5uZWwg
MiBzaG91bGQgYmUgZHJvcHBlZC4KLSAgICAgICAgZnJhbWUxID0gX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U9J0hlbGxvICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNv
ZGU9Y29tbW9uLk9QQ09ERV9URVhUKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGZyYW1lMSkKLSAgICAgICAgZnJhbWUyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9
J1dvcmxkIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24u
T1BDT0RFX1RFWFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUy
KQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihw
YXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5n
PTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQot
Ci0gICAgICAgICMgU2VuZCBhIGZyYW1lIHdpdGggb3Bjb2RlPUNPTlRJTlVBVElPTiB3aXRob3V0
IGEgcHJlY2VkaW5nIGZyYW1lCi0gICAgICAgICMgdGhlIGZpbiBvZiB3aGljaCBpcyBub3Qgc2V0
LiBMb2dpY2FsIGNoYW5uZWwgMyBzaG91bGQgYmUgZHJvcHBlZC4KLSAgICAgICAgZnJhbWUzID0g
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lMykKLQotICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBh
ZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAot
ICAgICAgICAgICAgY2hhbm5lbF9pZD00LCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFt
ZSB3aXRoIG9wY29kZT1QSU5HIGFuZCBmaW49RmFsc2UsIGFuZCB0aGVuIHNlbmQgYSBmcmFtZQot
ICAgICAgICAjIHdpdGggb3Bjb2RlPVRFWFQgKG5vdCBDT05USU5VQVRJT04pLiBMb2dpY2FsIGNo
YW5uZWwgNCBzaG91bGQgYmUKLSAgICAgICAgIyBkcm9wcGVkLgotICAgICAgICBmcmFtZTQgPSBf
Y3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD00LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGluZycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lNCkKLSAgICAgICAgZnJhbWU1ID0gX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2U9J0hlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmcmFtZTUpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9
J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91
bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVscyA9IFsKLSAgICAg
ICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
YmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9Q
X0NIQU5ORUxdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGRyb3BfY2hhbm5lbHMp
KQotICAgICAgICBmb3IgZCBpbiBkcm9wX2NoYW5uZWxzOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtdXguX0RST1BfQ09ERV9CQURfRlJBR01FTlRBVElPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZC5kcm9wX2NvZGUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3N0cmVhbS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFhY2ZlYjA0OGQzLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJU
ZXN0cyBmb3Igc3RyZWFtIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KLQotCi1jbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0g
ICAgZGVmIHRlc3RfY3JlYXRlX2hlYWRlcihzZWxmKToKLSAgICAgICAgIyBtb3JlLCByc3YxLCAu
Li4sIHJzdjQgYXJlIGFsbCB0cnVlCi0gICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVh
ZGVyKGNvbW1vbi5PUENPREVfVEVYVCwgMSwgMSwgMSwgMSwgMSwgMSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnXHhmMVx4ODEnLCBoZWFkZXIpCi0KLSAgICAgICAgIyBNYXhpbXVtIHBheWxv
YWQgc2l6ZQotICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKLSAgICAgICAg
ICAgIGNvbW1vbi5PUENPREVfVEVYVCwgKDEgPDwgNjMpIC0gMSwgMCwgMCwgMCwgMCwgMCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4N2ZceDdmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZicsIGhlYWRlcikKLQotICAgICAgICAjIEludmFsaWQgb3Bjb2RlIDB4MTAKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAs
IDAsIDAsIDAsIDAsIDAsIDApCi0KLSAgICAgICAgIyBJbnZhbGlkIHZhbHVlIDB4ZiBwYXNzZWQg
dG8gbW9yZSBwYXJhbWV0ZXIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVYVCwgMCwgMHhmLCAwLCAwLCAwLCAw
KQotCi0gICAgICAgICMgVG9vIGxvbmcgcGF5bG9hZF9sZW5ndGgKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNy
ZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVY
VCwgMSA8PCA2MywgMCwgMCwgMCwgMCwgMCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJl
YW1faGl4aWU3NS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E5YWM3MTMwYjcz
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0KLWlt
cG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0
byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
c3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIHRlc3QudGVzdF9tc2d1dGlsIGltcG9y
dCBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NQotCi0KLWNsYXNzIFN0cmVhbUhpeGllNzVUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBTdHJlYW1IaXhpZTc1IGNs
YXNzLiIiIgotCi0gICAgZGVmIHRlc3RfcGF5bG9hZF9sZW5ndGgoc2VsZik6Ci0gICAgICAgIGZv
ciBsZW5ndGgsIGJ5dGVzIGluICgoMCwgJ1x4MDAnKSwgKDB4N2YsICdceDdmJyksICgweDgwLCAn
XHg4MVx4MDAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEyMzQsICdceDgw
XHhhNFx4MzQnKSk6Ci0gICAgICAgICAgICB0ZXN0X3N0cmVhbSA9IFN0cmVhbUhpeGllNzUoX2Ny
ZWF0ZV9yZXF1ZXN0X2hpeGllNzUoYnl0ZXMpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgICAgICBsZW5ndGgsIHRlc3Rfc3RyZWFtLl9yZWFkX3BheWxvYWRfbGVu
Z3RoX2hpeGllNzUoKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0
ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY0YmEzZjQ3NzM3YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0X3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDEgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgdXRpbCBtb2R1
bGUuIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0KLQotaW1wb3J0
IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotX1RFU1Rf
REFUQV9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0
ZGF0YScpCi0KLQotY2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEg
dW5pdHRlc3QgZm9yIHV0aWwgbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfZ2V0X3N0YWNrX3Ry
YWNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdOb25lXG4nLCB1dGlsLmdldF9z
dGFja190cmFjZSgpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhID0gMSAvIDAgICMgSW50
ZW50aW9uYWxseSByYWlzZSBleGNlcHRpb24uCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0g
ICAgICAgICAgICB0cmFjZSA9IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkKLSAgICAgICAgICAgIHNl
bGYuZmFpbFVubGVzcyh0cmFjZS5zdGFydHN3aXRoKCdUcmFjZWJhY2snKSkKLSAgICAgICAgICAg
IHNlbGYuZmFpbFVubGVzcyh0cmFjZS5maW5kKCdaZXJvRGl2aXNpb25FcnJvcicpICE9IC0xKQot
Ci0gICAgZGVmIHRlc3RfcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihzZWxmKToKLSAgICAg
ICAgZXhjID0gRXhjZXB0aW9uKCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dv
cmxkJywgc3RyKGV4YykpCi0gICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlv
bignSGVsbG8gJywgZXhjKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCcs
IHN0cihleGMpKQotCi0gICAgZGVmIHRlc3RfZ2V0X3NjcmlwdF9pbnRlcnAoc2VsZik6Ci0gICAg
ICAgIGN5Z3dpbl9wYXRoID0gJ2M6XFxjeWd3aW5cXGJpbicKLSAgICAgICAgY3lnd2luX3Blcmwg
PSBvcy5wYXRoLmpvaW4oY3lnd2luX3BhdGgsICdwZXJsJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5q
b2luKF9URVNUX0RBVEFfRElSLCAnUkVBRE1FJykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwgY3lnd2luX3BhdGgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcvdXNyL2Jpbi9wZXJsIC13VCcsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0g
ICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdoZWxsby5wbCcpKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjeWd3aW5fcGVybCArICcgLXdUJywgdXRpbC5nZXRfc2Ny
aXB0X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hl
bGxvLnBsJyksIGN5Z3dpbl9wYXRoKSkKLQotICAgIGRlZiB0ZXN0X2hleGlmeShzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnNjEgN2EgNDEgNWEgMzAgMzkgMjAgMDkgMGQgMGEgMDAg
ZmYnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KCdhekFaMDkgXHRcclxu
XHgwMFx4ZmYnKSkKLQotCi1jbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFza2VyIGNsYXNzLiIi
IgotCi0gICAgZGVmIHRlc3RfbWFzayhzZWxmKToKLSAgICAgICAgIyBTYW1wbGUgaW5wdXQgZTYs
OTcsYTUgaXMgVSs2NWU1IGluIFVURi04Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRY
b3JNYXNrZXIoJ1x4ZmZceGZmXHhmZlx4ZmYnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFz
aygnXHhlNlx4OTdceGE1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgxOVx4NjhceDVh
JywgcmVzdWx0KQotCi0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4
MDBceDAwXHgwMFx4MDAnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdc
eGE1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhlNlx4OTdceGE1JywgcmVzdWx0KQot
Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4ZTZceDk3XHhhNVx4
MjAnKQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHhlNlx4OTdceGE1JykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFx4MDBceDAwJywgcmVzdWx0KQotCi0gICAgZGVmIHRl
c3RfbWFza190d2ljZShzZWxmKToKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1h
c2tlcignXHgwMFx4N2ZceGZmXHgyMCcpCi0gICAgICAgICMgbWFza1swXSwgbWFza1sxXSwgLi4u
IHdpbGwgYmUgdXNlZC4KLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4MDBceDAwXHgw
MFx4MDBceDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFx4N2ZceGZmXHgyMFx4
MDAnLCByZXN1bHQpCi0gICAgICAgICMgbWFza1syXSwgbWFza1swXSwgLi4uIHdpbGwgYmUgdXNl
ZCBmb3IgdGhlIG5leHQgY2FsbC4KLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4MDBc
eDAwXHgwMFx4MDBceDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg3Zlx4ZmZceDIw
XHgwMFx4N2YnLCByZXN1bHQpCi0KLSAgICBkZWYgdGVzdF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6
Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ21BU2snKQotICAgICAg
ICBvcmlnaW5hbCA9ICcnLmpvaW4oW2NocihpICUgMjU2KSBmb3IgaSBpbiB4cmFuZ2UoMTAwMCld
KQotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhvcmlnaW5hbCkKLSAgICAgICAgZXhwZWN0
ZWQgPSAnJy5qb2luKAotICAgICAgICAgICAgICAgIFtjaHIoKGkgJSAyNTYpIF4gb3JkKCdtQVNr
J1tpICUgNF0pKSBmb3IgaSBpbiB4cmFuZ2UoMTAwMCldKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkLCByZXN1bHQpCi0KLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhv
ck1hc2tlcignTWFTaycpCi0gICAgICAgIGZpcnN0X3BhcnQgPSAnVGhlIFdlYlNvY2tldCBQcm90
b2NvbCBlbmFibGVzIHR3by13YXkgY29tbXVuaWNhdGlvbi4nCi0gICAgICAgIHJlc3VsdCA9IG1h
c2tlci5tYXNrKGZpcnN0X3BhcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICAgICAgJ1x4MTlcdDZLXHgxYVx4MDQxOCJceDAyOFx4MGU5QVx4MDNceDE5Ilx4MTU8XHgw
OCJccnNceDBlIycKLSAgICAgICAgICAgICAgICAnXHgwMDFceDA3KFx4MTJzXHgxZjpceDBlflx4
MWMsXHgxOHNceDA4Ilx4MGM+XHgxZSNceDA4MFxuOScKLSAgICAgICAgICAgICAgICAnXHgwODxc
eDA1YycsCi0gICAgICAgICAgICAgICAgcmVzdWx0KQotICAgICAgICBzZWNvbmRfcGFydCA9ICdJ
dCBoYXMgdHdvIHBhcnRzOiBhIGhhbmRzaGFrZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJwotICAg
ICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhzZWNvbmRfcGFydCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgICAgICAiKCdLJVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltz
XG5tXHQyXHgwNSlceDEyO1xuJlx4MDRzXG4jIgotICAgICAgICAgICAgICAgICJceDA1c1x4MWYl
XHgwNHNceDBmLFx4MTUySzlceDEzMlx4MDU+XHgwNzZceDE5YyIsCi0gICAgICAgICAgICAgICAg
cmVzdWx0KQotCi0KLWRlZiBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCBtaW5fbnVtX2NodW5r
cyk6Ci0gICAgY2h1bmtzID0gW10KLSAgICBieXRlc19jaHVua2VkID0gMAotCi0gICAgd2hpbGUg
Ynl0ZXNfY2h1bmtlZCA8IGxlbihzb3VyY2UpOgotICAgICAgICBjaHVua19zaXplID0gcmFuZG9t
LnJhbmRpbnQoCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgbWluKGxlbihzb3VyY2UpIC8g
bWluX251bV9jaHVua3MsIGxlbihzb3VyY2UpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgIGNo
dW5rID0gc291cmNlW2J5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCi0g
ICAgICAgIGNodW5rcy5hcHBlbmQoY2h1bmspCi0gICAgICAgIGJ5dGVzX2NodW5rZWQgKz0gY2h1
bmtfc2l6ZQotCi0gICAgcmV0dXJuIGNodW5rcwotCi0KLWNsYXNzIEluZmxhdGVyRGVmbGF0ZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBfSW5mbGF0ZXIg
YW5kIF9EZWZsYXRlciBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2luZmxhdGVfZGVmbGF0ZV9k
ZWZhdWx0KHNlbGYpOgotICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgJy0nICogMzAwMDAgKyBi
J2hlbGxvJwotICAgICAgICBpbmZsYXRlcjE1ID0gdXRpbC5fSW5mbGF0ZXIoMTUpCi0gICAgICAg
IGRlZmxhdGVyMTUgPSB1dGlsLl9EZWZsYXRlcigxNSkKLSAgICAgICAgaW5mbGF0ZXI4ID0gdXRp
bC5fSW5mbGF0ZXIoOCkKLSAgICAgICAgZGVmbGF0ZXI4ID0gdXRpbC5fRGVmbGF0ZXIoOCkKLQot
ICAgICAgICBjb21wcmVzc2VkMTUgPSBkZWZsYXRlcjE1LmNvbXByZXNzX2FuZF9maW5pc2goaW5w
dXQpCi0gICAgICAgIGNvbXByZXNzZWQ4ID0gZGVmbGF0ZXI4LmNvbXByZXNzX2FuZF9maW5pc2go
aW5wdXQpCi0KLSAgICAgICAgaW5mbGF0ZXIxNS5hcHBlbmQoY29tcHJlc3NlZDE1KQotICAgICAg
ICBpbmZsYXRlcjguYXBwZW5kKGNvbXByZXNzZWQ4KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90
RXF1YWwoY29tcHJlc3NlZDE1LCBjb21wcmVzc2VkOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChpbnB1dCwgaW5mbGF0ZXIxNS5kZWNvbXByZXNzKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChpbnB1dCwgaW5mbGF0ZXI4LmRlY29tcHJlc3MoLTEpKQotCi0gICAgZGVmIHRlc3RfcmFu
ZG9tX3NlY3Rpb24oc2VsZik6Ci0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAgICAgICAgc291
cmNlID0gJycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkg
Zm9yIGkgaW4geHJhbmdlKDEwMCAqIDEwMjQpXSkKLQotICAgICAgICBjaHVua2VkX2lucHV0ID0g
Z2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAgIHByaW50KCJJbnB1dCBjaHVu
ayBzaXplczogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2lucHV0XSkKLQotICAgICAg
ICBkZWZsYXRlciA9IHV0aWwuX0RlZmxhdGVyKDE1KQotICAgICAgICBjb21wcmVzc2VkID0gW10K
LSAgICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfaW5wdXQ6Ci0gICAgICAgICAgICBjb21wcmVz
c2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVzcyhjaHVuaykpCi0gICAgICAgIGNvbXByZXNzZWQu
YXBwZW5kKGRlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goJycpKQotCi0gICAgICAgIGNodW5r
ZWRfZXhwZWN0YXRpb24gPSBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCAxMCkKLSAgICAgICAg
cHJpbnQgKCJFeHBlY3RhdGlvbiBjaHVuayBzaXplczogJXIiICUKLSAgICAgICAgICAgICAgIFts
ZW4oYykgZm9yIGMgaW4gY2h1bmtlZF9leHBlY3RhdGlvbl0pCi0KLSAgICAgICAgaW5mbGF0ZXIg
PSB1dGlsLl9JbmZsYXRlcigxNSkKLSAgICAgICAgaW5mbGF0ZXIuYXBwZW5kKCcnLmpvaW4oY29t
cHJlc3NlZCkpCi0gICAgICAgIGZvciBjaHVuayBpbiBjaHVua2VkX2V4cGVjdGF0aW9uOgotICAg
ICAgICAgICAgZGVjb21wcmVzc2VkID0gaW5mbGF0ZXIuZGVjb21wcmVzcyhsZW4oY2h1bmspKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHVuaywgZGVjb21wcmVzc2VkKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGluZmxhdGVyLmRlY29tcHJlc3MoLTEpKQotCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC90ZXN0L3Rlc3RkYXRhL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAw
MWFhNTU5NWNkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL1JFQURNRQor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzY3Zjk5MzBmNzgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGhhbmRzaGFrZQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlv
bigiYWJvcnQgZm9yIHRlc3QiKQotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oImFib3J0
IGZvciB0ZXN0IikKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvYmxhbmtfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjg3YzZh
ZjIzZGYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxh
bmtfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAw
OSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotIyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJjMTM5ZmExNzZjYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5j
b20nOgotICAgICAgICByZXR1cm4KLSAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUg
b3JpZ2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2lu
X2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0K
LQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI5ODJkMDIzMWVmMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkV4
Y2VwdGlvbiBpbiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEoKS4KLSIiIgotCi0KLWRlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBFeGNlcHRpb24oJ0lu
dGVudGlvbmFsIEV4Y2VwdGlvbiBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgIChy
ZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9f
d3NoX2F0X3RoZV9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dz
aF9hdF90aGVfZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2U3YmUxODAy
ZTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25v
X3dzaF9hdF90aGVfZW5kLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBDb3B5
cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUuCi0i
IiIKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAg
cGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXRlKAotICAgICAgICAgICAgJ3N1Yi9ub193c2hfYXRfdGhlX2Vu
ZC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVz
b3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjM1MmViNGNhMjMuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0i
IiJOb24tY2FsbGFibGUgaGFuZGxlcnMuCi0iIiIKLQotCi13ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZSA9IFRydWUKLXdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSA9IDEKLQotCi0jIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
cGxhaW5fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93c2gu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiM2ZmNjkzMDI1Ni4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0ZSgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19w
cm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjA5YTM2MTQyNjgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3Ry
YW5zZmVyX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJs
ZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193
c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3Jvbmdf
aGFuZHNoYWtlX3NpZ193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dy
b25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
YmY2NTliYzlhZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2Ugc2lnbmF0dXJlLgotIiIiCi0KLQotZGVmIG5vX3dlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAg
ICAgICAgICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgaXMgY2FsbGVkIGZvciAlcywg
JXMnICUKLSAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90
b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZTJlNTUwNzk0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldy
b25nIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KLSIiIgotCi0KLWRlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVm
IG5vX3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUoCi0gICAgICAgICAgICAnc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkg
aXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNl
LCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTVmYzdiZWY0MjkxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3No
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Y2NhM2VkZTY4Yy4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9SRUFE
TUUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiNWU0MTU4MDAxLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L19faW5pdF9fLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVy
bmFsX3NlcnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9tb2NrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L211eF9jbGllbnRf
Zm9yX3Rlc3RpbmcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9zZXRfc3lz
X3BhdGgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Vu
ZHRvZW5kLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X2hhbmRzaGFrZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkwMC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2h0dHBfaGVhZGVy
X3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0X21vY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
bXV4LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3RyZWFt
X2hpeGllNzUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggN2JiMmVkNTIzYjNiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvQ09OVFJJ
QlVUSU5HCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9SRUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19p
bml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9fX2lu
aXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3F1aWMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWlj
L2NlcnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWZj
NWExOWYzY2IuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvUkVBRE1FLm1kCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQu
a2V5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL2NlcnRzL2NlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5qc29uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMu
anNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cXVpYy9jb21tYW5kcy5qc29uCmluZGV4IGQ0ZTNjZTgxMjgwMC4uNDQ5NmY0ODM2ZmY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvY29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNvbgpAQCAtMyw3ICszLDYgQEAKICAg
ICAicGF0aCI6ICJzZXJ2ZS5weSIsCiAgICAgInNjcmlwdCI6ICJydW4iLAogICAgICJwYXJzZXIi
OiAiZ2V0X3BhcnNlciIsCi0gICAgInB5M29ubHkiOiB0cnVlLAogICAgICJoZWxwIjogIlN0YXJ0
IHRoZSBRVUlDIHNlcnZlciBmb3IgV2ViVHJhbnNwb3J0IiwKICAgICAidmlydHVhbGVudiI6IHRy
dWUsCiAgICAgInJlcXVpcmVtZW50cyI6IFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdkNTQ1OWUxNTFmLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL1JFQURNRS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jb21tYW5kcy5qc29uCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJh
bnNwb3J0X3NlcnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3NlcnZlLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVt
ZW50c19teXB5LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDY1MTAwZDcwMzc2Yy4uMWM4NTA2
NTg1NzljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dApA
QCAtMSwzICsxLDMgQEAKLW15cHk9PTAuNzkwCitteXB5PT0wLjgxMgogbXlweS1leHRlbnNpb25z
PT0wLjQuMwotdHlwZWQtYXN0PT0xLjQuMQordHlwZWQtYXN0PT0xLjQuMgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIv
Y3NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9ydW5uZXIvY3NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYTBjMTgxNTJkZDQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvYm9v
dHN0cmFwLXRoZW1lLm1pbi5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvYm9vdHN0cmFwLm1pbi5jc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVy
L2ZvbnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvZm9udHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRkYWYyNzIxM2JjNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIv
Zm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250cy9nbHlwaGljb25z
LWhhbGZsaW5ncy1yZWd1bGFyLnN2ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3Vs
YXIudHRmCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci53b2ZmCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1
bm5lci9yZXBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkKaW5kZXggZTk5ODZmZGIzOTgyLi5jMjI5OTRjZWQw
MGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkKQEAgLTksNyArOSw2IEBA
IGltcG9ydCB0eXBlcwogCiBmcm9tIGNnaSBpbXBvcnQgZXNjYXBlCiBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiAKIGRlZiBo
dG1sX2VzY2FwZShpdGVtLCBlc2NhcGVfcXVvdGU9RmFsc2UpOgpAQCAtNDUsNyArNDQsNyBAQCBj
bGFzcyBOb2RlKG9iamVjdCk6CiAgICAgICAgICAgICBhdHRyc191bmljb2RlID0gIiAiICsgIiAi
LmpvaW4oIiVzPVwiJXNcIiIgJSAoaHRtbF9lc2NhcGUoa2V5KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2VzY2FwZSh2YWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlc2NhcGVfcXVvdGU9VHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYu
YXR0cnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBr
ZXksIHZhbHVlIGluIHNlbGYuYXR0cnMuaXRlbXMoKSkKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIGF0dHJzX3VuaWNvZGUgPSAiIgogICAgICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIg
JSAoc2VsZi5uYW1lLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpzCmluZGV4IDI3
OTQ2ZTEzOWI5YS4uMTU3NzIyOGIyZmJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVu
bmVyLmpzCkBAIC04OTMsMTggKzg5MywxNyBAQCBmdW5jdGlvbiBzZXR1cCgpIHsKICAgICBuZXcg
TWFudWFsVUkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hbnVhbFVJIiksIHJ1bm5lcik7CiAg
ICAgbmV3IFZpc3VhbE91dHB1dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IiksIHJ1
bm5lcik7CiAKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgaWYgKGUuZGF0YS50eXBlID09PSAiY29tcGxldGUiKQorICAgICAgICAg
ICAgcnVubmVyLm9uX2NvbXBsZXRlKGUuZGF0YS50ZXN0cywgZS5kYXRhLnN0YXR1cyk7CisgICAg
fSk7CisKICAgICBpZiAob3B0aW9ucy5hdXRvcnVuID09PSAiMSIpIHsKICAgICAgICAgcnVubmVy
LnN0YXJ0KHRlc3RfY29udHJvbC5nZXRfcGF0aCgpLAogICAgICAgICAgICAgICAgICAgICAgdGVz
dF9jb250cm9sLmdldF90ZXN0X3R5cGVzKCksCiAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nv
bnRyb2wuZ2V0X3Rlc3RoYXJuZXNzX3NldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X2NvbnRyb2wuZ2V0X3VzZV9yZWdleCgpKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLQot
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkgewotICAg
ICAgaWYgKGUuZGF0YS50eXBlID09PSAiY29tcGxldGUiKQotICAgICAgICBydW5uZXIub25fY29t
cGxldGUoZS5kYXRhLnRlc3RzLCBlLmRhdGEuc3RhdHVzKTsKLSAgICB9KTsKIH0KIAogd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBzZXR1cCwgZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzQ0YjJhNTc1MWMzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9pbmRleC5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5u
ZXIvcmVwb3J0LmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5jc3MKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRh
dGVfbWFuaWZlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmViOWIyNjI3M2UyLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zY3JpcHRzL2lkMnBhdGguanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvaWQycGF0aC5qc29uCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL21hbmlmZXN0LmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRz
L3BhY2thZ2UuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvc2NyaXB0cy90b2MuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvdXBkYXRlLWRpcmVjdG9yeS1zdHJ1Y3R1cmUuanMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvc2VydmUvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5CmluZGV4IDNhMWM3ODI3OTRhMy4uOGUxYWFh
OGRjNzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvc2VydmUucHkKQEAgLTQsOCArNCwxMCBA
QCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAKIGltcG9ydCBhYmMKIGlt
cG9ydCBhcmdwYXJzZQoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dn
aW5nCitpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQog
aW1wb3J0IHNpZ25hbApAQCAtMTUsMTQgKzE3LDEyIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aHJl
YWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIHNpeC5tb3ZlcyBpbXBv
cnQgdXJsbGliCitpbXBvcnQgdXJsbGliCiBpbXBvcnQgdXVpZAogZnJvbSBjb2xsZWN0aW9ucyBp
bXBvcnQgZGVmYXVsdGRpY3QsIE9yZGVyZWREaWN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hh
aW4sIHByb2R1Y3QKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBFdmVudAog
CiBmcm9tIGxvY2FscGF0aHMgaW1wb3J0IHJlcG9fcm9vdAotZnJvbSBzaXgubW92ZXMgaW1wb3J0
IHJlbG9hZF9tb2R1bGUKIAogZnJvbSBtYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCByZWFkX3Nj
cmlwdF9tZXRhZGF0YSwganNfbWV0YV9yZSwgcGFyc2VfdmFyaWFudHMKIGZyb20gd3B0c2VydmUg
aW1wb3J0IHNlcnZlciBhcyB3cHRzZXJ2ZSwgaGFuZGxlcnMKQEAgLTIyNyw2ICsyMjcsMjIgQEAg
ZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigiJShwYXRoKXMlKHF1ZXJ5KXMiKSk7
CiAiIiIKIAogCitjbGFzcyBXb3JrZXJNb2R1bGVzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIp
OgorICAgIGdsb2JhbF90eXBlID0gImRlZGljYXRlZHdvcmtlci1tb2R1bGUiCisgICAgcGF0aF9y
ZXBsYWNlID0gWygiLmFueS53b3JrZXItbW9kdWxlLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndv
cmtlci1tb2R1bGUuanMiKSwKKyAgICAgICAgICAgICAgICAgICAgKCIud29ya2VyLmh0bWwiLCAi
Lndvcmtlci5qcyIpXQorICAgIHdyYXBwZXIgPSAiIiI8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+CislKG1ldGEpcworPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorZmV0Y2hfdGVz
dHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigiJShwYXRoKXMlKHF1ZXJ5KXMiLCB7IHR5cGU6ICJt
b2R1bGUiIH0pKTsKKzwvc2NyaXB0PgorIiIiCisKKwogY2xhc3MgV2luZG93SGFuZGxlcihIdG1s
V3JhcHBlckhhbmRsZXIpOgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi53aW5kb3cuaHRtbCIsICIu
d2luZG93LmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgpAQCAtMjc1LDYg
KzI5MSwyMSBAQCBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCIlKHBh
dGgpcyUocXVlcnkpcyIpKTsKICIiIgogCiAKK2NsYXNzIFNoYXJlZFdvcmtlck1vZHVsZXNIYW5k
bGVyKEh0bWxXcmFwcGVySGFuZGxlcik6CisgICAgZ2xvYmFsX3R5cGUgPSAic2hhcmVkd29ya2Vy
LW1vZHVsZSIKKyAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNoYXJlZHdvcmtlci1tb2R1bGUu
aHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLW1vZHVsZS5qcyIpXQorICAgIHdyYXBwZXIg
PSAiIiI8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+CislKG1ldGEpcworPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGRpdiBpZD1s
b2c+PC9kaXY+Cis8c2NyaXB0PgorZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdv
cmtlcigiJShwYXRoKXMlKHF1ZXJ5KXMiLCB7IHR5cGU6ICJtb2R1bGUiIH0pKTsKKzwvc2NyaXB0
PgorIiIiCisKKwogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFuZGxl
cik6CiAgICAgZ2xvYmFsX3R5cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2Ug
PSBbKCIuYW55LnNlcnZpY2V3b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpz
IildCkBAIC0yOTYsOCArMzI3LDU0IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJzSGFuZGxlcihIdG1s
V3JhcHBlckhhbmRsZXIpOgogIiIiCiAKIAotY2xhc3MgQW55V29ya2VySGFuZGxlcihXcmFwcGVy
SGFuZGxlcik6CitjbGFzcyBTZXJ2aWNlV29ya2VyTW9kdWxlc0hhbmRsZXIoSHRtbFdyYXBwZXJI
YW5kbGVyKToKKyAgICBnbG9iYWxfdHlwZSA9ICJzZXJ2aWNld29ya2VyLW1vZHVsZSIKKyAgICBw
YXRoX3JlcGxhY2UgPSBbKCIuYW55LnNlcnZpY2V3b3JrZXItbW9kdWxlLmh0bWwiLAorICAgICAg
ICAgICAgICAgICAgICAgIi5hbnkuanMiLCAiLmFueS53b3JrZXItbW9kdWxlLmpzIildCisgICAg
d3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKyUobWV0
YSlzCis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisoYXN5bmMgZnVuY3Rpb24oKSB7CisgIGNvbnN0
IHNjb3BlID0gJ2RvZXMvbm90L2V4aXN0JzsKKyAgbGV0IHJlZyA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbihzY29wZSk7CisgIGlmIChyZWcpIGF3YWl0IHJl
Zy51bnJlZ2lzdGVyKCk7CisgIHJlZyA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKAorICAgICIlKHBhdGgpcyUocXVlcnkpcyIsCisgICAgeyBzY29wZSwgdHlwZTogJ21v
ZHVsZScgfSwKKyAgKTsKKyAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIocmVnLmluc3RhbGxpbmcp
OworfSkoKTsKKzwvc2NyaXB0PgorIiIiCisKKworY2xhc3MgQmFzZVdvcmtlckhhbmRsZXIoV3Jh
cHBlckhhbmRsZXIpOgogICAgIGhlYWRlcnMgPSBbKCdDb250ZW50LVR5cGUnLCAndGV4dC9qYXZh
c2NyaXB0JyldCisKKyAgICBkZWYgX21ldGFfcmVwbGFjZW1lbnQoc2VsZiwga2V5LCB2YWx1ZSk6
CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVm
IF9jcmVhdGVfc2NyaXB0X2ltcG9ydChzZWxmLCBhdHRyaWJ1dGUpOgorICAgICAgICAjIFRha2Ug
YXR0cmlidXRlIChhIHN0cmluZyBVUkwgdG8gYSBKUyBzY3JpcHQpIGFuZCByZXR1cm4gSlMgc291
cmNlIHRvIGltcG9ydCB0aGUgc2NyaXB0CisgICAgICAgICMgaW50byB0aGUgd29ya2VyLgorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgX3NjcmlwdF9yZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVl
KToKKyAgICAgICAgaWYga2V5ID09ICJzY3JpcHQiOgorICAgICAgICAgICAgYXR0cmlidXRlID0g
dmFsdWUucmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAnXFwiJykKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9jcmVhdGVfc2NyaXB0X2ltcG9ydChhdHRyaWJ1dGUpCisgICAgICAg
IGlmIGtleSA9PSAidGl0bGUiOgorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJc
XCIsICJcXFxcIikucmVwbGFjZSgnIicsICdcXCInKQorICAgICAgICAgICAgcmV0dXJuICdzZWxm
Lk1FVEFfVElUTEUgPSAiJXMiOycgJSB2YWx1ZQorICAgICAgICByZXR1cm4gTm9uZQorCisKK2Ns
YXNzIENsYXNzaWNXb3JrZXJIYW5kbGVyKEJhc2VXb3JrZXJIYW5kbGVyKToKICAgICBwYXRoX3Jl
cGxhY2UgPSBbKCIuYW55Lndvcmtlci5qcyIsICIuYW55LmpzIildCiAgICAgd3JhcHBlciA9ICIi
IiUobWV0YSlzCiBzZWxmLkdMT0JBTCA9IHsKQEAgLTMxMCwxNyArMzg3LDI1IEBAIGltcG9ydFNj
cmlwdHMoIiUocGF0aClzIik7CiBkb25lKCk7CiAiIiIKIAotICAgIGRlZiBfbWV0YV9yZXBsYWNl
bWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBkZWYgX2Ny
ZWF0ZV9zY3JpcHRfaW1wb3J0KHNlbGYsIGF0dHJpYnV0ZSk6CisgICAgICAgIHJldHVybiAnaW1w
b3J0U2NyaXB0cygiJXMiKScgJSBhdHRyaWJ1dGUKIAotICAgIGRlZiBfc2NyaXB0X3JlcGxhY2Vt
ZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gInNjcmlwdCI6Ci0gICAg
ICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgn
IicsICdcXCInKQotICAgICAgICAgICAgcmV0dXJuICdpbXBvcnRTY3JpcHRzKCIlcyIpJyAlIGF0
dHJpYnV0ZQotICAgICAgICBpZiBrZXkgPT0gInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0g
dmFsdWUucmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAnXFwiJykKLSAgICAgICAg
ICAgIHJldHVybiAnc2VsZi5NRVRBX1RJVExFID0gIiVzIjsnICUgdmFsdWUKLSAgICAgICAgcmV0
dXJuIE5vbmUKKworY2xhc3MgTW9kdWxlV29ya2VySGFuZGxlcihCYXNlV29ya2VySGFuZGxlcik6
CisgICAgcGF0aF9yZXBsYWNlID0gWygiLmFueS53b3JrZXItbW9kdWxlLmpzIiwgIi5hbnkuanMi
KV0KKyAgICB3cmFwcGVyID0gIiIiJShtZXRhKXMKK3NlbGYuR0xPQkFMID0geworICBpc1dpbmRv
dzogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgaXNXb3JrZXI6IGZ1bmN0aW9uKCkg
eyByZXR1cm4gdHJ1ZTsgfSwKK307CitpbXBvcnQgIi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
OworJShzY3JpcHQpcworaW1wb3J0ICIlKHBhdGgpcyI7Citkb25lKCk7CisiIiIKKworICAgIGRl
ZiBfY3JlYXRlX3NjcmlwdF9pbXBvcnQoc2VsZiwgYXR0cmlidXRlKToKKyAgICAgICAgcmV0dXJu
ICdpbXBvcnQgIiVzIjsnICUgYXR0cmlidXRlCiAKIAogcmV3cml0ZXMgPSBbKCJHRVQiLCAiL3Jl
c291cmNlcy9XZWJJRExQYXJzZXIuanMiLCAiL3Jlc291cmNlcy93ZWJpZGwyL2xpYi93ZWJpZGwy
LmpzIildCkBAIC0zNjgsMTEgKzQ1MywxNSBAQCBjbGFzcyBSb3V0ZXNCdWlsZGVyKG9iamVjdCk6
CiAKICAgICAgICAgcm91dGVzID0gWwogICAgICAgICAgICAgKCJHRVQiLCAiKi53b3JrZXIuaHRt
bCIsIFdvcmtlcnNIYW5kbGVyKSwKKyAgICAgICAgICAgICgiR0VUIiwgIioud29ya2VyLW1vZHVs
ZS5odG1sIiwgV29ya2VyTW9kdWxlc0hhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi53
aW5kb3cuaHRtbCIsIFdpbmRvd0hhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnku
aHRtbCIsIEFueUh0bWxIYW5kbGVyKSwKICAgICAgICAgICAgICgiR0VUIiwgIiouYW55LnNoYXJl
ZHdvcmtlci5odG1sIiwgU2hhcmVkV29ya2Vyc0hhbmRsZXIpLAorICAgICAgICAgICAgKCJHRVQi
LCAiKi5hbnkuc2hhcmVkd29ya2VyLW1vZHVsZS5odG1sIiwgU2hhcmVkV29ya2VyTW9kdWxlc0hh
bmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwg
U2VydmljZVdvcmtlcnNIYW5kbGVyKSwKLSAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtl
ci5qcyIsIEFueVdvcmtlckhhbmRsZXIpLAorICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnkuc2Vy
dmljZXdvcmtlci1tb2R1bGUuaHRtbCIsIFNlcnZpY2VXb3JrZXJNb2R1bGVzSGFuZGxlciksCisg
ICAgICAgICAgICAoIkdFVCIsICIqLmFueS53b3JrZXIuanMiLCBDbGFzc2ljV29ya2VySGFuZGxl
ciksCisgICAgICAgICAgICAoIkdFVCIsICIqLmFueS53b3JrZXItbW9kdWxlLmpzIiwgTW9kdWxl
V29ya2VySGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqLmFzaXMiLCBoYW5kbGVycy5B
c0lzSGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIvLndlbGwta25vd24vb3JpZ2luLXBv
bGljeSIsIGhhbmRsZXJzLlB5dGhvblNjcmlwdEhhbmRsZXIpLAogICAgICAgICAgICAgKCIqIiwg
IioucHkiLCBoYW5kbGVycy5QeXRob25TY3JpcHRIYW5kbGVyKSwKQEAgLTQwNywxOCArNDk2LDE5
IEBAIGRlZiBnZXRfcm91dGVfYnVpbGRlcihhbGlhc2VzLCBjb25maWc9Tm9uZSk6CiAKIAogY2xh
c3MgU2VydmVyUHJvYyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY2hlbWU9Tm9u
ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1wX2NvbnRleHQsIHNjaGVtZT1Ob25lKToKICAg
ICAgICAgc2VsZi5wcm9jID0gTm9uZQogICAgICAgICBzZWxmLmRhZW1vbiA9IE5vbmUKLSAgICAg
ICAgc2VsZi5zdG9wID0gRXZlbnQoKQorICAgICAgICBzZWxmLm1wX2NvbnRleHQgPSBtcF9jb250
ZXh0CisgICAgICAgIHNlbGYuc3RvcCA9IG1wX2NvbnRleHQuRXZlbnQoKQogICAgICAgICBzZWxm
LnNjaGVtZSA9IHNjaGVtZQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIGluaXRfZnVuYywgaG9zdCwg
cG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAg
ICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzcyh0YXJnZXQ9c2VsZi5jcmVhdGVfZGFlbW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KGluaXRfZnVuYywgaG9zdCwgcG9ydCwgcGF0
aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nJXMgb24gcG9y
dCAlcycgJSAoc2VsZi5zY2hlbWUsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGt3YXJncz1rd2FyZ3MpCisgICAgICAgIHNlbGYucHJvYyA9IHNlbGYubXBfY29udGV4dC5Qcm9j
ZXNzKHRhcmdldD1zZWxmLmNyZWF0ZV9kYWVtb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3M9KGluaXRfZnVuYywgaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lPSclcyBvbiBwb3J0ICVzJyAlIChzZWxmLnNjaGVtZSwgcG9ydCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncz1rd2FyZ3Mp
CiAgICAgICAgIHNlbGYucHJvYy5kYWVtb24gPSBUcnVlCiAgICAgICAgIHNlbGYucHJvYy5zdGFy
dCgpCiAKQEAgLTQ3MCw3ICs1NjAsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jKG9iamVjdCk6CiAgICAg
ICAgIHJldHVybiBzZWxmLnByb2MuaXNfYWxpdmUoKQogCiAKLWRlZiBjaGVja19zdWJkb21haW5z
KGNvbmZpZywgcm91dGVzKToKK2RlZiBjaGVja19zdWJkb21haW5zKGNvbmZpZywgcm91dGVzLCBt
cF9jb250ZXh0KToKICAgICBwYXRocyA9IGNvbmZpZy5wYXRocwogICAgIGJpbmRfYWRkcmVzcyA9
IGNvbmZpZy5iaW5kX2FkZHJlc3MKIApAQCAtNDc4LDcgKzU2OCw3IEBAIGRlZiBjaGVja19zdWJk
b21haW5zKGNvbmZpZywgcm91dGVzKToKICAgICBwb3J0ID0gZ2V0X3BvcnQoKQogICAgIGxvZ2dl
ci5kZWJ1ZygiR29pbmcgdG8gdXNlIHBvcnQgJWQgdG8gY2hlY2sgc3ViZG9tYWlucyIgJSBwb3J0
KQogCi0gICAgd3JhcHBlciA9IFNlcnZlclByb2MoKQorICAgIHdyYXBwZXIgPSBTZXJ2ZXJQcm9j
KG1wX2NvbnRleHQpCiAgICAgd3JhcHBlci5zdGFydChzdGFydF9odHRwX3NlcnZlciwgaG9zdCwg
cG9ydCwgcGF0aHMsIHJvdXRlcywKICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcywgY29u
ZmlnKQogCkBAIC01MzAsNyArNjIwLDggQEAgZGVmIG1ha2VfaG9zdHNfZmlsZShjb25maWcsIGhv
c3QpOgogICAgIHJldHVybiAiIi5qb2luKHJ2KQogCiAKLWRlZiBzdGFydF9zZXJ2ZXJzKGhvc3Qs
IHBvcnRzLCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgor
ZGVmIHN0YXJ0X3NlcnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVz
cywgY29uZmlnLAorICAgICAgICAgICAgICAgICAgbXBfY29udGV4dCwgKiprd2FyZ3MpOgogICAg
IHNlcnZlcnMgPSBkZWZhdWx0ZGljdChsaXN0KQogICAgIGZvciBzY2hlbWUsIHBvcnRzIGluIHBv
cnRzLml0ZW1zKCk6CiAgICAgICAgIGFzc2VydCBsZW4ocG9ydHMpID09IHsiaHR0cCI6IDIsICJo
dHRwcyI6IDJ9LmdldChzY2hlbWUsIDEpCkBAIC01NTEsNyArNjQyLDcgQEAgZGVmIHN0YXJ0X3Nl
cnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIndzcyI6IHN0YXJ0X3dzc19zZXJ2
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInF1aWMtdHJhbnNwb3J0Ijogc3RhcnRfcXVp
Y190cmFuc3BvcnRfc2VydmVyfVtzY2hlbWVdCiAKLSAgICAgICAgICAgIHNlcnZlcl9wcm9jID0g
U2VydmVyUHJvYyhzY2hlbWU9c2NoZW1lKQorICAgICAgICAgICAgc2VydmVyX3Byb2MgPSBTZXJ2
ZXJQcm9jKG1wX2NvbnRleHQsIHNjaGVtZT1zY2hlbWUpCiAgICAgICAgICAgICBzZXJ2ZXJfcHJv
Yy5zdGFydChpbml0X2Z1bmMsIGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVz
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywgKiprd2FyZ3MpCiAgICAg
ICAgICAgICBzZXJ2ZXJzW3NjaGVtZV0uYXBwZW5kKChwb3J0LCBzZXJ2ZXJfcHJvYykpCkBAIC02
MDksNiArNzAwLDcgQEAgZGVmIHN0YXJ0X2h0dHAyX3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywg
cm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlcl9jbHM9d3B0c2VydmUuSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRs
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNb
ImRvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NfZG9j
X3Jvb3Q9cGF0aHNbIndzX2RvY19yb290Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcm91dGVzPXJvdXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXdyaXRlcz1yZXdyaXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiaW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLApAQCAtNjk0LDcgKzc4Niw3IEBAIGRlZiBy
ZWxlYXNlX21vemxvZ19sb2NrKCk6CiBkZWYgc3RhcnRfd3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBh
dGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBFbnN1
cmUgdGhhdCB3aGVuIHdlIHN0YXJ0IHRoaXMgaW4gYSBuZXcgcHJvY2VzcyB3ZSBoYXZlIHRoZSBn
bG9iYWwgbG9jawogICAgICMgaW4gdGhlIGxvZ2dpbmcgbW9kdWxlIHVubG9ja2VkCi0gICAgcmVs
b2FkX21vZHVsZShsb2dnaW5nKQorICAgIGltcG9ydGxpYi5yZWxvYWQobG9nZ2luZykKICAgICBy
ZWxlYXNlX21vemxvZ19sb2NrKCkKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBXZWJTb2NrZXRE
YWVtb24oaG9zdCwKQEAgLTcxMCw3ICs4MDIsNyBAQCBkZWYgc3RhcnRfd3Nfc2VydmVyKGhvc3Qs
IHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiBk
ZWYgc3RhcnRfd3NzX3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJl
c3MsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICMgRW5zdXJlIHRoYXQgd2hlbiB3ZSBzdGFydCB0
aGlzIGluIGEgbmV3IHByb2Nlc3Mgd2UgaGF2ZSB0aGUgZ2xvYmFsIGxvY2sKICAgICAjIGluIHRo
ZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAotICAgIHJlbG9hZF9tb2R1bGUobG9nZ2luZykKKyAg
ICBpbXBvcnRsaWIucmVsb2FkKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2dfbG9jaygpCiAg
ICAgdHJ5OgogICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCkBAIC03NjgsNyAr
ODYwLDcgQEAgY2xhc3MgUXVpY1RyYW5zcG9ydERhZW1vbihvYmplY3QpOgogZGVmIHN0YXJ0X3F1
aWNfdHJhbnNwb3J0X3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJl
c3MsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICMgRW5zdXJlIHRoYXQgd2hlbiB3ZSBzdGFydCB0
aGlzIGluIGEgbmV3IHByb2Nlc3Mgd2UgaGF2ZSB0aGUgZ2xvYmFsIGxvY2sKICAgICAjIGluIHRo
ZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAotICAgIHJlbG9hZF9tb2R1bGUobG9nZ2luZykKKyAg
ICBpbXBvcnRsaWIucmVsb2FkKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2dfbG9jaygpCiAg
ICAgdHJ5OgogICAgICAgICByZXR1cm4gUXVpY1RyYW5zcG9ydERhZW1vbihob3N0LApAQCAtNzgw
LDcgKzg3Miw3IEBAIGRlZiBzdGFydF9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIoaG9zdCwgcG9ydCwg
cGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsCiAgICAgICAgIHN0YXJ0dXBfZmFp
bGVkKGxvZz1GYWxzZSkKIAogCi1kZWYgc3RhcnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToK
K2RlZiBzdGFydChjb25maWcsIHJvdXRlcywgbXBfY29udGV4dCwgKiprd2FyZ3MpOgogICAgIGhv
c3QgPSBjb25maWdbInNlcnZlcl9ob3N0Il0KICAgICBwb3J0cyA9IGNvbmZpZy5wb3J0cwogICAg
IHBhdGhzID0gY29uZmlnLnBhdGhzCkBAIC03ODgsNyArODgwLDcgQEAgZGVmIHN0YXJ0KGNvbmZp
Zywgcm91dGVzLCAqKmt3YXJncyk6CiAKICAgICBsb2dnZXIuZGVidWcoIlVzaW5nIHBvcnRzOiAl
ciIgJSBwb3J0cykKIAotICAgIHNlcnZlcnMgPSBzdGFydF9zZXJ2ZXJzKGhvc3QsIHBvcnRzLCBw
YXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpCisgICAgc2VydmVy
cyA9IHN0YXJ0X3NlcnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVz
cywgY29uZmlnLCBtcF9jb250ZXh0LCAqKmt3YXJncykKIAogICAgIHJldHVybiBzZXJ2ZXJzCiAK
QEAgLTg0Niw3ICs5MzgsNyBAQCBjbGFzcyBDb25maWdCdWlsZGVyKGNvbmZpZy5Db25maWdCdWls
ZGVyKToKICAgICAgICAgICAgICJ3c3MiOiBbImF1dG8iXSwKICAgICAgICAgfSwKICAgICAgICAg
ImNoZWNrX3N1YmRvbWFpbnMiOiBUcnVlLAotICAgICAgICAibG9nX2xldmVsIjogImRlYnVnIiwK
KyAgICAgICAgImxvZ19sZXZlbCI6ICJpbmZvIiwKICAgICAgICAgImJpbmRfYWRkcmVzcyI6IFRy
dWUsCiAgICAgICAgICJzc2wiOiB7CiAgICAgICAgICAgICAidHlwZSI6ICJwcmVnZW5lcmF0ZWQi
LApAQCAtOTI4LDYgKzEwMjAsOSBAQCBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9u
ZSwgY29uZmlnX2Nscz1Db25maWdCdWlsZGVyLCAqKmt3YXJncyk6CiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb25maWcgcGF0aCAlcyBkb2VzIG5vdCBleGlz
dCIgJSBvdGhlcl9wYXRoKQogCisgICAgaWYga3dhcmdzLmdldCgidmVyYm9zZSIpOgorICAgICAg
ICBydi5sb2dfbGV2ZWwgPSAiZGVidWciCisKICAgICBvdmVycmlkaW5nX3BhdGhfYXJncyA9IFso
ImRvY19yb290IiwgIkRvY3VtZW50IHJvb3QiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoIndzX2RvY19yb290IiwgIldlYlNvY2tldHMgZG9jdW1lbnQgcm9vdCIpXQogICAgIGZvciBr
ZXksIHRpdGxlIGluIG92ZXJyaWRpbmdfcGF0aF9hcmdzOgpAQCAtOTYwLDE0ICsxMDU1LDI2IEBA
IGRlZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxl
IHRoZSBIVFRQLzIuMCBzZXJ2ZXIiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcXVpYy10
cmFuc3BvcnQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJFbmFibGUgUVVJQyBzZXJ2ZXIg
Zm9yIFdlYlRyYW5zcG9ydCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1leGl0LWFmdGVy
LXN0YXJ0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRXhpdCBhZnRlciBzdGFydGluZyBz
ZXJ2ZXJzIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPSJFbmFibGUgdmVyYm9zZSBsb2dnaW5nIikKICAgICBwYXJzZXIuc2V0
X2RlZmF1bHRzKHJlcG9ydD1GYWxzZSkKICAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGlzX3dhdmU9
RmFsc2UpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKLWRlZiBydW4oY29uZmlnX2Nscz1Db25maWdC
dWlsZGVyLCByb3V0ZV9idWlsZGVyPU5vbmUsICoqa3dhcmdzKToKK2NsYXNzIE1wQ29udGV4dChv
YmplY3QpOgorICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmV0dXJu
IGdldGF0dHIobXVsdGlwcm9jZXNzaW5nLCBuYW1lKQorCisKK2RlZiBydW4oY29uZmlnX2Nscz1D
b25maWdCdWlsZGVyLCByb3V0ZV9idWlsZGVyPU5vbmUsIG1wX2NvbnRleHQ9Tm9uZSwgKiprd2Fy
Z3MpOgogICAgIHJlY2VpdmVkX3NpZ25hbCA9IHRocmVhZGluZy5FdmVudCgpCiAKKyAgICBpZiBt
cF9jb250ZXh0IGlzIE5vbmU6CisgICAgICAgIGlmIGhhc2F0dHIobXVsdGlwcm9jZXNzaW5nLCAi
Z2V0X2NvbnRleHQiKToKKyAgICAgICAgICAgIG1wX2NvbnRleHQgPSBtdWx0aXByb2Nlc3Npbmcu
Z2V0X2NvbnRleHQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXBfY29udGV4dCA9IE1w
Q29udGV4dCgpCisKICAgICB3aXRoIGJ1aWxkX2NvbmZpZyhvcy5wYXRoLmpvaW4ocmVwb19yb290
LCAiY29uZmlnLmpzb24iKSwKICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2xzPWNvbmZp
Z19jbHMsCiAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpIGFzIGNvbmZpZzoKQEAgLTk5
Nyw3ICsxMTA0LDcgQEAgZGVmIHJ1bihjb25maWdfY2xzPUNvbmZpZ0J1aWxkZXIsIHJvdXRlX2J1
aWxkZXI9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICByb3V0ZXMgPSByb3V0ZV9idWlsZGVyKGNv
bmZpZy5hbGlhc2VzLCBjb25maWcpLmdldF9yb3V0ZXMoKQogCiAgICAgICAgIGlmIGNvbmZpZ1si
Y2hlY2tfc3ViZG9tYWlucyJdOgotICAgICAgICAgICAgY2hlY2tfc3ViZG9tYWlucyhjb25maWcs
IHJvdXRlcykKKyAgICAgICAgICAgIGNoZWNrX3N1YmRvbWFpbnMoY29uZmlnLCByb3V0ZXMsIG1w
X2NvbnRleHQpCiAKICAgICAgICAgc3Rhc2hfYWRkcmVzcyA9IE5vbmUKICAgICAgICAgaWYgYmlu
ZF9hZGRyZXNzOgpAQCAtMTAwNSw3ICsxMTEyLDcgQEAgZGVmIHJ1bihjb25maWdfY2xzPUNvbmZp
Z0J1aWxkZXIsIHJvdXRlX2J1aWxkZXI9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgbG9n
Z2VyLmRlYnVnKCJHb2luZyB0byB1c2UgcG9ydCAlZCBmb3Igc3Rhc2giICUgc3Rhc2hfYWRkcmVz
c1sxXSkKIAogICAgICAgICB3aXRoIHN0YXNoLlN0YXNoU2VydmVyKHN0YXNoX2FkZHJlc3MsIGF1
dGhrZXk9c3RyKHV1aWQudXVpZDQoKSkpOgotICAgICAgICAgICAgc2VydmVycyA9IHN0YXJ0KGNv
bmZpZywgcm91dGVzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlcnZlcnMgPSBzdGFydChjb25m
aWcsIHJvdXRlcywgbXBfY29udGV4dCwgKiprd2FyZ3MpCiAgICAgICAgICAgICBzaWduYWwuc2ln
bmFsKHNpZ25hbC5TSUdURVJNLCBoYW5kbGVfc2lnbmFsKQogICAgICAgICAgICAgc2lnbmFsLnNp
Z25hbChzaWduYWwuU0lHSU5ULCBoYW5kbGVfc2lnbmFsKQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3RfZnVu
Y3Rpb25hbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvc2VydmUvdGVzdF9mdW5jdGlvbmFsLnB5CmluZGV4IDVhOTE4YzJlZTQ3My4uODk0NDc5
ZDExMWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3RfZnVuY3Rpb25hbC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3RfZnVuY3Rpb25h
bC5weQpAQCAtOSw3ICs5LDYgQEAgdHJ5OgogICAgIGltcG9ydCBRdWV1ZSBhcyBxdWV1ZSAgIyBu
b3FhOiBOODEzCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IHF1ZXVlCi1pbXBvcnQg
c3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJlYWRpbmcKIApAQCAtNDYsOCArNDUsNiBA
QCBkZWYgdGVtcGZpbGVfbmFtZSgpOgogICAgIG9zLnJlbW92ZShuYW1lKQogCiAKLUBweXRlc3Qu
bWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCkgYW5kIHN5cy5wbGF0Zm9ybSA9
PSAnZGFyd2luJywKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtdWx0aXByb2Nlc3Npbmcg
dGVzdCBoYW5ncyBpbiBQeXRob24gMy44IG9uIG1hY09TICgjMjQ4ODApIikKIGRlZiB0ZXN0X3N1
YnByb2Nlc3NfZXhpdChzZXJ2ZXJfc3VicHJvY2Vzc2VzLCB0ZW1wZmlsZV9uYW1lKToKICAgICB0
aW1lb3V0ID0gMzAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YjM1NmU5ZTZjYS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Nl
cnZlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zZXJ2ZS9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9zZXJ2ZS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdGVzdF9mdW5jdGlvbmFs
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
ZXJ2ZS90ZXN0X3NlcnZlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9zZXJ2ZS93YXZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5ODI3ZTY2OTViNTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdAor
KysgL2Rldi9udWxsCkBAIC0xLDc4NSArMCwwIEBACi1TaXg6IFB5dGhvbiAyIGFuZCAzIENvbXBh
dGliaWxpdHkgTGlicmFyeQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotLi4gbW9kdWxlOjogc2l4Ci0gICA6c3lub3BzaXM6IFB5dGhvbiAyIGFuZCAzIGNvbXBh
dGliaWxpdHkKLQotLi4gbW9kdWxlYXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWlu
QHB5dGhvbi5vcmc+Ci0uLiBzZWN0aW9uYXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmph
bWluQHB5dGhvbi5vcmc+Ci0KLQotU2l4IHByb3ZpZGVzIHNpbXBsZSB1dGlsaXRpZXMgZm9yIHdy
YXBwaW5nIG92ZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiBQeXRob24gMiBhbmQKLVB5dGhvbiAzLiAg
SXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9ydCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0
aG9uIDIgYW5kIDMKLXdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkg
b25lIFB5dGhvbiBmaWxlLCBzbyBpdCBpcyBwYWlubGVzcwotdG8gY29weSBpbnRvIGEgcHJvamVj
dC4KLQotU2l4IGNhbiBiZSBkb3dubG9hZGVkIG9uIGBQeVBpIDxodHRwOi8vcHlwaS5weXRob24u
b3JnL3B5cGkvc2l4Lz5gXy4gIEl0cyBidWcKLXRyYWNrZXIgYW5kIGNvZGUgaG9zdGluZyBpcyBv
biBgQml0QnVja2V0IDxodHRwOi8vYml0YnVja2V0Lm9yZy9ndXR3b3J0aC9zaXg+YF8uCi0KLVRo
ZSBuYW1lLCAic2l4IiwgY29tZXMgZnJvbSB0aGUgZmFjdCB0aGF0IDIqMyBlcXVhbHMgNi4gIFdo
eSBub3QgYWRkaXRpb24/Ci1NdWx0aXBsaWNhdGlvbiBpcyBtb3JlIHBvd2VyZnVsLCBhbmQsIGFu
eXdheSwgImZpdmUiIGhhcyBhbHJlYWR5IGJlZW4gc25hdGNoZWQKLWF3YXkgYnkgdGhlIFpvcGUg
Rml2ZSBwcm9qZWN0LgotCi0KLUluZGljZXMgYW5kIHRhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLSogOnJlZjpgZ2VuaW5kZXhgCi0qIDpyZWY6YHNlYXJjaGAKLQotCi1QYWNrYWdlIGNvbnRl
bnRzCi0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGRhdGE6OiBQWTIKLQotICAgQSBib29sZWFuIGlu
ZGljYXRpbmcgaWYgdGhlIGNvZGUgaXMgcnVubmluZyBvbiBQeXRob24gMi4KLQotLi4gZGF0YTo6
IFBZMwotCi0gICBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgY29kZSBpcyBydW5uaW5nIG9u
IFB5dGhvbiAzLgotCi0KLUNvbnN0YW50cwotPj4+Pj4+Pj4+Ci0KLVNpeCBwcm92aWRlcyBjb25z
dGFudHMgdGhhdCBtYXkgZGlmZmVyIGJldHdlZW4gUHl0aG9uIHZlcnNpb25zLiAgT25lcyBlbmRp
bmcKLWBgX3R5cGVzYGAgYXJlIG1vc3RseSB1c2VmdWwgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0
byBgYGlzaW5zdGFuY2VgYCBvcgotYGBpc3N1YmNsYXNzYGAuCi0KLQotLi4gZGF0YTo6IGNsYXNz
X3R5cGVzCi0KLSAgIFBvc3NpYmxlIGNsYXNzIHR5cGVzLiAgSW4gUHl0aG9uIDIsIHRoaXMgZW5j
b21wYXNzZXMgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUKLSAgIGNsYXNzZXMuICBJbiBQeXRob24g
MywgdGhpcyBpcyBqdXN0IG5ldy1zdHlsZXMuCi0KLQotLi4gZGF0YTo6IGludGVnZXJfdHlwZXMK
LQotICAgUG9zc2libGUgaW50ZWdlciB0eXBlcy4gIEluIFB5dGhvbiAyLCB0aGlzIGlzIDpmdW5j
OmBweTI6bG9uZ2AgYW5kCi0gICA6ZnVuYzpgcHkyOmludGAsIGFuZCBpbiBQeXRob24gMywganVz
dCA6ZnVuYzpgcHkzOmludGAuCi0KLQotLi4gZGF0YTo6IHN0cmluZ190eXBlcwotCi0gICBQb3Nz
aWJsZSB0eXBlcyBmb3IgdGV4dCBkYXRhLiAgVGhpcyBpcyA6ZnVuYzpgcHkyOmJhc2VzdHJpbmdg
IGluIFB5dGhvbiAyIGFuZAotICAgOmZ1bmM6YHB5MzpzdHJgIGluIFB5dGhvbiAzLgotCi0KLS4u
IGRhdGE6OiB0ZXh0X3R5cGUKLQotICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIChVbmljb2RlKSB0
ZXh0dWFsIGRhdGEuICBUaGlzIGlzIDpmdW5jOmBweTI6dW5pY29kZWAgaW4KLSAgIFB5dGhvbiAy
IGFuZCA6ZnVuYzpgcHkzOnN0cmAgaW4gUHl0aG9uIDMuCi0KLQotLi4gZGF0YTo6IGJpbmFyeV90
eXBlCi0KLSAgIFR5cGUgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YS4gIFRoaXMgaXMgOmZ1
bmM6YHB5MjpzdHJgIGluIFB5dGhvbiAyIGFuZAotICAgOmZ1bmM6YHB5MzpieXRlc2AgaW4gUHl0
aG9uIDMuCi0KLQotLi4gZGF0YTo6IE1BWFNJWkUKLQotICAgVGhlIG1heGltdW0gIHNpemUgb2Yg
YSAgY29udGFpbmVyIGxpa2UgOmZ1bmM6YHB5MzpsaXN0YCAgb3IgOmZ1bmM6YHB5MzpkaWN0YC4K
LSAgIFRoaXMgIGlzICBlcXVpdmFsZW50ICB0byAgOmRhdGE6YHB5MzpzeXMubWF4c2l6ZWAgaW4g
IFB5dGhvbiAgMi42ICBhbmQgIGxhdGVyCi0gICAoaW5jbHVkaW5nIDMueCkuICAgTm90ZSwgdGhp
cyBpcyB0ZW1wdGluZ2x5ICBzaW1pbGFyIHRvLCBidXQgbm90ICB0aGUgc2FtZSBhcwotICAgOmRh
dGE6YHB5MjpzeXMubWF4aW50YCAgaW4gIFB5dGhvbiAgMi4gICBUaGVyZSBpcyAgbm8gIGRpcmVj
dCAgZXF1aXZhbGVudCAgdG8KLSAgIDpkYXRhOmBweTI6c3lzLm1heGludGAgaW4gIFB5dGhvbiAz
ICBiZWNhdXNlIGl0cyBpbnRlZ2VyICB0eXBlIGhhcyAgbm8gbGltaXRzCi0gICBhc2lkZSBmcm9t
IG1lbW9yeS4KLQotCi1IZXJlJ3MgZXhhbXBsZSB1c2FnZSBvZiB0aGUgbW9kdWxlOjoKLQotICAg
aW1wb3J0IHNpeAotCi0gICBkZWYgZGlzcGF0Y2hfdHlwZXModmFsdWUpOgotICAgICAgIGlmIGlz
aW5zdGFuY2UodmFsdWUsIHNpeC5pbnRlZ2VyX3R5cGVzKToKLSAgICAgICAgICAgaGFuZGxlX2lu
dGVnZXIodmFsdWUpCi0gICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzaXguY2xhc3NfdHlw
ZXMpOgotICAgICAgICAgICBoYW5kbGVfY2xhc3ModmFsdWUpCi0gICAgICAgZWxpZiBpc2luc3Rh
bmNlKHZhbHVlLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgaGFuZGxlX3N0cmluZyh2
YWx1ZSkKLQotCi1PYmplY3QgbW9kZWwgY29tcGF0aWJpbGl0eQotPj4+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4KLQotUHl0aG9uIDMgcmVuYW1lZCB0aGUgYXR0cmlidXRlcyBvZiBzZXZlcmFsIGlu
dGVycHJldGVyIGRhdGEgc3RydWN0dXJlcy4gIFRoZQotZm9sbG93aW5nIGFjY2Vzc29ycyBhcmUg
YXZhaWxhYmxlLiAgTm90ZSB0aGF0IHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zcGVjdAotZnVu
Y3Rpb25zIGFuZCBtZXRob2RzIGlzIHRoZSBzdGRsaWIgOm1vZDpgcHkzOmluc3BlY3RgIG1vZHVs
ZS4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF91bmJvdW5kX2Z1bmN0aW9uKG1ldGgpCi0KLSAgIEdl
dCB0aGUgZnVuY3Rpb24gb3V0IG9mIHVuYm91bmQgbWV0aG9kICptZXRoKi4gIEluIFB5dGhvbiAz
LCB1bmJvdW5kIG1ldGhvZHMKLSAgIGRvbid0IGV4aXN0LCBzbyB0aGlzIGZ1bmN0aW9uIGp1c3Qg
cmV0dXJucyAqbWV0aCogdW5jaGFuZ2VkLiAgRXhhbXBsZQotICAgdXNhZ2U6OgotCi0gICAgICBm
cm9tIHNpeCBpbXBvcnQgZ2V0X3VuYm91bmRfZnVuY3Rpb24KLQotICAgICAgY2xhc3MgWChvYmpl
Y3QpOgotICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6Ci0gICAgICAgICAgICAgIHBhc3MKLSAg
ICAgIG1ldGhvZF9mdW5jdGlvbiA9IGdldF91bmJvdW5kX2Z1bmN0aW9uKFgubWV0aG9kKQotCi0K
LS4uIGZ1bmN0aW9uOjogZ2V0X21ldGhvZF9mdW5jdGlvbihtZXRoKQotCi0gICBHZXQgdGhlIGZ1
bmN0aW9uIG91dCBvZiBtZXRob2Qgb2JqZWN0ICptZXRoKi4KLQotCi0uLiBmdW5jdGlvbjo6IGdl
dF9tZXRob2Rfc2VsZihtZXRoKQotCi0gICBHZXQgdGhlIGBgc2VsZmBgIG9mIGJvdW5kIG1ldGhv
ZCAqbWV0aCouCi0KLQotLi4gZnVuY3Rpb246OiBnZXRfZnVuY3Rpb25fY2xvc3VyZShmdW5jKQot
Ci0gICBHZXQgdGhlIGNsb3N1cmUgKGxpc3Qgb2YgY2VsbHMpIGFzc29jaWF0ZWQgd2l0aCAqZnVu
YyouICBUaGlzIGlzIGVxdWl2YWxlbnQKLSAgIHRvIGBgZnVuYy5fX2Nsb3N1cmVfX2BgIG9uIFB5
dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19jbG9zdXJlYGAgb24gUHl0aG9uCi0gICAyLjUuCi0K
LQotLi4gZnVuY3Rpb246OiBnZXRfZnVuY3Rpb25fY29kZShmdW5jKQotCi0gICBHZXQgdGhlIGNv
ZGUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8K
LSAgIGBgZnVuYy5fX2NvZGVfX2BgIG9uIFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19jb2Rl
YGAgb24gUHl0aG9uIDIuNS4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9kZWZhdWx0
cyhmdW5jKQotCi0gICBHZXQgdGhlIGRlZmF1bHRzIHR1cGxlIGFzc29jaWF0ZWQgd2l0aCAqZnVu
YyouICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGBgZnVuYy5fX2RlZmF1bHRzX19gYCBvbiBQ
eXRob24gMi42KyBhbmQgYGBmdW5jLmZ1bmNfZGVmYXVsdHNgYCBvbiBQeXRob24KLSAgIDIuNS4K
LQotCi0uLiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9nbG9iYWxzKGZ1bmMpCi0KLSAgIEdldCB0
aGUgZ2xvYmFscyBvZiAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBmdW5jLl9fZ2xv
YmFsc19fYGAgb24KLSAgIFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19nbG9iYWxzYGAgb24g
UHl0aG9uIDIuNS4KLQotCi0uLiBmdW5jdGlvbjo6IG5leHQoaXQpCi0gICAgICAgICAgICAgIGFk
dmFuY2VfaXRlcmF0b3IoaXQpCi0KLSAgIEdldCB0aGUgbmV4dCBpdGVtIG9mIGl0ZXJhdG9yICpp
dCouICA6ZXhjOmBweTM6U3RvcEl0ZXJhdGlvbmAgaXMgcmFpc2VkIGlmCi0gICB0aGUgaXRlcmF0
b3IgaXMgZXhoYXVzdGVkLiAgVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBjYWxsaW5nIGBgaXQu
bmV4dCgpYGAKLSAgIGluIFB5dGhvbiAyIGFuZCBgYG5leHQoaXQpYGAgaW4gUHl0aG9uIDMuCi0K
LQotLi4gZnVuY3Rpb246OiBjYWxsYWJsZShvYmopCi0KLSAgIENoZWNrIGlmICpvYmoqIGNhbiBi
ZSBjYWxsZWQuICBOb3RlIGBgY2FsbGFibGVgYCBoYXMgcmV0dXJuZWQgaW4gUHl0aG9uIDMuMiwK
LSAgIHNvIHVzaW5nIHNpeCdzIHZlcnNpb24gaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBzdXBwb3J0
aW5nIFB5dGhvbiAzLjAgb3IgMy4xLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcmtleXMoZGljdGlv
bmFyeSwgKiprd2FyZ3MpCi0KLSAgIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciAqZGljdGlvbmFy
eSpcJ3Mga2V5cy4gVGhpcyByZXBsYWNlcwotICAgYGBkaWN0aW9uYXJ5Lml0ZXJrZXlzKClgYCBv
biBQeXRob24gMiBhbmQgYGBkaWN0aW9uYXJ5LmtleXMoKWBgIG9uCi0gICBQeXRob24gMy4gICpr
d2FyZ3MqIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBtZXRob2QuCi0KLQot
Li4gZnVuY3Rpb246OiBpdGVydmFsdWVzKGRpY3Rpb25hcnksICoqa3dhcmdzKQotCi0gICBSZXR1
cm5zIGFuIGl0ZXJhdG9yIG92ZXIgKmRpY3Rpb25hcnkqXCdzIHZhbHVlcy4gVGhpcyByZXBsYWNl
cwotICAgYGBkaWN0aW9uYXJ5Lml0ZXJ2YWx1ZXMoKWBgIG9uIFB5dGhvbiAyIGFuZCBgYGRpY3Rp
b25hcnkudmFsdWVzKClgYCBvbgotICAgUHl0aG9uIDMuICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRo
cm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgbWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcml0
ZW1zKGRpY3Rpb25hcnksICoqa3dhcmdzKQotCi0gICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIg
KmRpY3Rpb25hcnkqXCdzIGl0ZW1zLiBUaGlzIHJlcGxhY2VzCi0gICBgYGRpY3Rpb25hcnkuaXRl
cml0ZW1zKClgYCBvbiBQeXRob24gMiBhbmQgYGBkaWN0aW9uYXJ5Lml0ZW1zKClgYCBvbgotICAg
UHl0aG9uIDMuICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcg
bWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcmxpc3RzKGRpY3Rpb25hcnksICoqa3dhcmdz
KQotCi0gICBDYWxscyBgYGRpY3Rpb25hcnkuaXRlcmxpc3RzKClgYCBvbiBQeXRob24gMiBhbmQg
YGBkaWN0aW9uYXJ5Lmxpc3RzKClgYCBvbgotICAgUHl0aG9uIDMuICBObyBidWlsdGluIFB5dGhv
biBtYXBwaW5nIHR5cGUgaGFzIHN1Y2ggYSBtZXRob2Q7IHRoaXMgbWV0aG9kIGlzCi0gICBpbnRl
bmRlZCBmb3IgdXNlIHdpdGggbXVsdGktdmFsdWVkIGRpY3Rpb25hcmllcyBsaWtlIGBXZXJremV1
ZydzCi0gICA8aHR0cDovL3dlcmt6ZXVnLnBvY29vLm9yZy9kb2NzL2RhdGFzdHJ1Y3R1cmVzLyN3
ZXJremV1Zy5kYXRhc3RydWN0dXJlcy5NdWx0aURpY3Q+YF8uCi0gICAqa3dhcmdzKiBhcmUgcGFz
c2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgbWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjog
dmlld2tleXMoZGljdGlvbmFyeSkKLQotICAgUmV0dXJuIGEgdmlldyBvdmVyICpkaWN0aW9uYXJ5
KlwncyBrZXlzLiBUaGlzIHJlcGxhY2VzCi0gICA6bWV0aDpgcHkyOmRpY3Qudmlld2tleXNgIG9u
IFB5dGhvbiAyLjcgYW5kIDptZXRoOmBweTM6ZGljdC5rZXlzYCBvbgotICAgUHl0aG9uIDMuCi0K
LQotLi4gZnVuY3Rpb246OiB2aWV3dmFsdWVzKGRpY3Rpb25hcnkpCi0KLSAgIFJldHVybiBhIHZp
ZXcgb3ZlciAqZGljdGlvbmFyeSpcJ3MgdmFsdWVzLiBUaGlzIHJlcGxhY2VzCi0gICA6bWV0aDpg
cHkyOmRpY3Qudmlld3ZhbHVlc2Agb24gUHl0aG9uIDIuNyBhbmQgOm1ldGg6YHB5MzpkaWN0LnZh
bHVlc2Agb24KLSAgIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogdmlld2l0ZW1zKGRpY3Rp
b25hcnkpCi0KLSAgIFJldHVybiBhIHZpZXcgb3ZlciAqZGljdGlvbmFyeSpcJ3MgaXRlbXMuIFRo
aXMgcmVwbGFjZXMKLSAgIDptZXRoOmBweTI6ZGljdC52aWV3aXRlbXNgIG9uIFB5dGhvbiAyLjcg
YW5kIDptZXRoOmBweTM6ZGljdC5pdGVtc2Agb24KLSAgIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0
aW9uOjogY3JlYXRlX2JvdW5kX21ldGhvZChmdW5jLCBvYmopCi0KLSAgIFJldHVybiBhIG1ldGhv
ZCBvYmplY3Qgd3JhcHBpbmcgKmZ1bmMqIGFuZCBib3VuZCB0byAqb2JqKi4gIE9uIGJvdGggUHl0
aG9uIDIKLSAgIGFuZCAzLCB0aGlzIHdpbGwgcmV0dXJuIGEgOmZ1bmM6YHB5Mzp0eXBlcy5NZXRo
b2RUeXBlYCBvYmplY3QuICBUaGUgcmVhc29uCi0gICB0aGlzIHdyYXBwZXIgZXhpc3RzIGlzIHRo
YXQgb24gUHl0aG9uIDIsIHRoZSBgYE1ldGhvZFR5cGVgYCBjb25zdHJ1Y3RvcgotICAgcmVxdWly
ZXMgdGhlICpvYmoqJ3MgY2xhc3MgdG8gYmUgcGFzc2VkLgotCi0KLS4uIGNsYXNzOjogSXRlcmF0
b3IKLQotICAgQSBjbGFzcyBmb3IgbWFraW5nIHBvcnRhYmxlIGl0ZXJhdG9ycy4gVGhlIGludGVu
dGlvbiBpcyB0aGF0IGl0IGJlIHN1YmNsYXNzZWQKLSAgIGFuZCBzdWJjbGFzc2VzIHByb3ZpZGUg
YSBgYF9fbmV4dF9fYGAgbWV0aG9kLiBJbiBQeXRob24gMiwgOmNsYXNzOmBJdGVyYXRvcmAKLSAg
IGhhcyBvbmUgbWV0aG9kOiBgYG5leHRgYC4gSXQgc2ltcGx5IGRlbGVnYXRlcyB0byBgYF9fbmV4
dF9fYGAuIEFuIGFsdGVybmF0ZQotICAgd2F5IHRvIGRvIHRoaXMgd291bGQgYmUgdG8gc2ltcGx5
IGFsaWFzIGBgbmV4dGBgIHRvIGBgX19uZXh0X19gYC4gSG93ZXZlciwKLSAgIHRoaXMgaW50ZXJh
Y3RzIGJhZGx5IHdpdGggc3ViY2xhc3NlcyB0aGF0IG92ZXJyaWRlCi0gICBgYF9fbmV4dF9fYGAu
IDpjbGFzczpgSXRlcmF0b3JgIGlzIGVtcHR5IG9uIFB5dGhvbiAzLiAoSW4gZmFjdCwgaXQgaXMg
anVzdAotICAgYWxpYXNlZCB0byA6Y2xhc3M6YHB5MzpvYmplY3RgLikKLQotCi0uLiBmdW5jdGlv
bjo6IHdyYXBzKHdyYXBwZWQsIGFzc2lnbmVkPWZ1bmN0b29scy5XUkFQUEVSX0FTU0lHTk1FTlRT
LCB1cGRhdGVkPWZ1bmN0b29scy5XUkFQUEVSX1VQREFURVMpCi0KLSAgIFRoaXMgaXMgZXhhY3Rs
eSB0aGUgOmZ1bmM6YHB5MzpmdW5jdG9vbHMud3JhcHNgIGRlY29yYXRvciwgYnV0IGl0IHNldHMg
dGhlCi0gICBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlIG9uIHdoYXQgaXQgZGVjb3JhdGVzIGFz
IDpmdW5jOmBweTM6ZnVuY3Rvb2xzLndyYXBzYAotICAgZG9lcyBvbiBQeXRob24gdmVyc2lvbnMg
YWZ0ZXIgMy4yLgotCi0KLVN5bnRheCBjb21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+
PgotCi1UaGVzZSBmdW5jdGlvbnMgc21vb3RoIG92ZXIgb3BlcmF0aW9ucyB3aGljaCBoYXZlIGRp
ZmZlcmVudCBzeW50YXhlcyBiZXR3ZWVuCi1QeXRob24gMiBhbmQgMy4KLQotCi0uLiBmdW5jdGlv
bjo6IGV4ZWNfKGNvZGUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCi0KLSAgIEV4ZWN1dGUg
KmNvZGUqIGluIHRoZSBzY29wZSBvZiAqZ2xvYmFscyogYW5kICpsb2NhbHMqLiAgKmNvZGUqIGNh
biBiZSBhCi0gICBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdC4gIElmICpnbG9iYWxzKiBvciAqbG9j
YWxzKiBhcmUgbm90IGdpdmVuLCB0aGV5IHdpbGwKLSAgIGRlZmF1bHQgdG8gdGhlIHNjb3BlIG9m
IHRoZSBjYWxsZXIuICBJZiBqdXN0ICpnbG9iYWxzKiBpcyBnaXZlbiwgaXQgd2lsbCBhbHNvCi0g
ICBiZSB1c2VkIGFzICpsb2NhbHMqLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgUHl0aG9uIDMn
cyA6ZnVuYzpgcHkzOmV4ZWNgIGRvZXNuJ3QgdGFrZSBrZXl3b3JkIGFyZ3VtZW50cywgc28gY2Fs
bGluZwotICAgICAgOmZ1bmM6YGV4ZWNgIHdpdGggdGhlbSBzaG91bGQgYmUgYXZvaWRlZC4KLQot
Ci0uLiBmdW5jdGlvbjo6IHByaW50XygqYXJncywgKiwgZmlsZT1zeXMuc3Rkb3V0LCBlbmQ9Ilxc
biIsIHNlcD0iICIpCi0KLSAgIFByaW50ICphcmdzKiBpbnRvICpmaWxlKi4gIEVhY2ggYXJndW1l
bnQgd2lsbCBiZSBzZXBhcmF0ZWQgd2l0aCAqc2VwKiBhbmQKLSAgICplbmQqIHdpbGwgYmUgd3Jp
dHRlbiB0byB0aGUgZmlsZSBhZnRlciB0aGUgbGFzdCBhcmd1bWVudCBpcyBwcmludGVkLgotCi0g
ICAuLiBub3RlOjoKLQotICAgICAgSW4gUHl0aG9uIDIsIHRoaXMgZnVuY3Rpb24gaW1pdGF0ZXMg
UHl0aG9uIDMncyA6ZnVuYzpgcHkzOnByaW50YCBieSBub3QKLSAgICAgIGhhdmluZyBzb2Z0c3Bh
Y2Ugc3VwcG9ydC4gIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdGhhdCBpcywgeW91J3JlIHByb2Jh
Ymx5Ci0gICAgICBvay4gOikKLQotCi0uLiBmdW5jdGlvbjo6IHJhaXNlX2Zyb20oZXhjX3ZhbHVl
LCBleGNfdmFsdWVfZnJvbSkKLQotICAgUmFpc2UgYW4gZXhjZXB0aW9uIGZyb20gYSBjb250ZXh0
LiAgT24gUHl0aG9uIDMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bwotICAgYGByYWlzZSBleGNfdmFs
dWUgZnJvbSBleGNfdmFsdWVfZnJvbWBgLiAgT24gUHl0aG9uIDIsIHdoaWNoIGRvZXMgbm90IHN1
cHBvcnQKLSAgIGV4Y2VwdGlvbiBjaGFpbmluZywgaXQgaXMgZXF1aXZhbGVudCB0byBgYHJhaXNl
IGV4Y192YWx1ZWBgLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVyYWlzZShleGNfdHlwZSwgZXhjX3Zh
bHVlLCBleGNfdHJhY2ViYWNrPU5vbmUpCi0KLSAgIFJlcmFpc2UgYW4gZXhjZXB0aW9uLCBwb3Nz
aWJseSB3aXRoIGEgZGlmZmVyZW50IHRyYWNlYmFjay4gIEluIHRoZSBzaW1wbGUKLSAgIGNhc2Us
IGBgcmVyYWlzZSgqc3lzLmV4Y19pbmZvKCkpYGAgd2l0aCBhbiBhY3RpdmUgZXhjZXB0aW9uIChp
biBhbiBleGNlcHQKLSAgIGJsb2NrKSByZXJhaXNlcyB0aGUgY3VycmVudCBleGNlcHRpb24gd2l0
aCB0aGUgbGFzdCB0cmFjZWJhY2suICBBIGRpZmZlcmVudAotICAgdHJhY2ViYWNrIGNhbiBiZSBz
cGVjaWZpZWQgd2l0aCB0aGUgKmV4Y190cmFjZWJhY2sqIHBhcmFtZXRlci4gIE5vdGUgdGhhdAot
ICAgc2luY2UgdGhlIGV4Y2VwdGlvbiByZXJhaXNpbmcgaXMgZG9uZSB3aXRoaW4gdGhlIDpmdW5j
OmByZXJhaXNlYCBmdW5jdGlvbiwKLSAgIFB5dGhvbiB3aWxsIGF0dGFjaCB0aGUgY2FsbCBmcmFt
ZSBvZiA6ZnVuYzpgcmVyYWlzZWAgdG8gd2hhdGV2ZXIgdHJhY2ViYWNrIGlzCi0gICByYWlzZWQu
Ci0KLQotLi4gZnVuY3Rpb246OiB3aXRoX21ldGFjbGFzcyhtZXRhY2xhc3MsICpiYXNlcykKLQot
ICAgQ3JlYXRlIGEgbmV3IGNsYXNzIHdpdGggYmFzZSBjbGFzc2VzICpiYXNlcyogYW5kIG1ldGFj
bGFzcyAqbWV0YWNsYXNzKi4gIFRoaXMKLSAgIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgaW4gY2xh
c3MgZGVjbGFyYXRpb25zIGxpa2UgdGhpczogOjoKLQotICAgICAgZnJvbSBzaXggaW1wb3J0IHdp
dGhfbWV0YWNsYXNzCi0KLSAgICAgIGNsYXNzIE1ldGEodHlwZSk6Ci0gICAgICAgICAgcGFzcwot
Ci0gICAgICBjbGFzcyBCYXNlKG9iamVjdCk6Ci0gICAgICAgICAgcGFzcwotCi0gICAgICBjbGFz
cyBNeUNsYXNzKHdpdGhfbWV0YWNsYXNzKE1ldGEsIEJhc2UpKToKLSAgICAgICAgICBwYXNzCi0K
LSAgIEFub3RoZXIgd2F5IHRvIHNldCBhIG1ldGFjbGFzcyBvbiBhIGNsYXNzIGlzIHdpdGggdGhl
IDpmdW5jOmBhZGRfbWV0YWNsYXNzYAotICAgZGVjb3JhdG9yLgotCi0KLS4uIGZ1bmN0aW9uOjog
YWRkX21ldGFjbGFzcyhtZXRhY2xhc3MpCi0KLSAgIENsYXNzIGRlY29yYXRvciB0aGF0IHJlcGxh
Y2VzIGEgbm9ybWFsbHktY29uc3RydWN0ZWQgY2xhc3Mgd2l0aCBhCi0gICBtZXRhY2xhc3MtY29u
c3RydWN0ZWQgb25lLiAgRXhhbXBsZSB1c2FnZTogOjoKLQotICAgICAgIEBhZGRfbWV0YWNsYXNz
KE1ldGEpCi0gICAgICAgY2xhc3MgTXlDbGFzcyhvYmplY3QpOgotICAgICAgICAgICBwYXNzCi0K
LSAgIFRoYXQgY29kZSBwcm9kdWNlcyBhIGNsYXNzIGVxdWl2YWxlbnQgdG8gOjoKLQotICAgICAg
IGNsYXNzIE15Q2xhc3Mob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6Ci0gICAgICAgICAgIHBhc3MK
LQotICAgb24gUHl0aG9uIDMgb3IgOjoKLQotICAgICAgIGNsYXNzIE15Q2xhc3Mob2JqZWN0KToK
LSAgICAgICAgICAgX19tZXRhY2xhc3NfXyA9IE15TWV0YQotCi0gICBvbiBQeXRob24gMi4KLQot
ICAgTm90ZSB0aGF0IGNsYXNzIGRlY29yYXRvcnMgcmVxdWlyZSBQeXRob24gMi42LiBIb3dldmVy
LCB0aGUgZWZmZWN0IG9mIHRoZQotICAgZGVjb3JhdG9yIGNhbiBiZSBlbXVsYXRlZCBvbiBQeXRo
b24gMi41IGxpa2Ugc286OgotCi0gICAgICAgY2xhc3MgTXlDbGFzcyhvYmplY3QpOgotICAgICAg
ICAgICBwYXNzCi0gICAgICAgTXlDbGFzcyA9IGFkZF9tZXRhY2xhc3MoTWV0YSkoTXlDbGFzcykK
LQotCi1CaW5hcnkgYW5kIHRleHQgZGF0YQotPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KLQotUHl0aG9u
IDMgZW5mb3JjZXMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gYnl0ZSBzdHJpbmdzIGFuZCB0ZXh0
IHN0cmluZ3MgZmFyIG1vcmUKLXJpZ29yaW91c2x5IHRoYW4gUHl0aG9uIDIgZG9lczsgYmluYXJ5
IGRhdGEgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29lcmNlZCB0bwotb3IgZnJvbSB0ZXh0IGRh
dGEuICBzaXggcHJvdmlkZXMgc2V2ZXJhbCBmdW5jdGlvbnMgdG8gYXNzaXN0IGluIGNsYXNzaWZ5
aW5nCi1zdHJpbmcgZGF0YSBpbiBhbGwgUHl0aG9uIHZlcnNpb25zLgotCi0KLS4uIGZ1bmN0aW9u
OjogYihkYXRhKQotCi0gICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBh
bHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5j
OmBiYCByZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNv
ZGVkCi0gICB3aXRoIHRoZSBsYXRpbi0xIGVuY29kaW5nIHRvIGJ5dGVzLgotCi0KLSAgIC4uIG5v
dGU6OgotCi0gICAgICBTaW5jZSBhbGwgUHl0aG9uIHZlcnNpb25zIDIuNiBhbmQgYWZ0ZXIgc3Vw
cG9ydCB0aGUgYGBiYGAgcHJlZml4LAotICAgICAgOmZ1bmM6YGJgLCBjb2RlIHdpdGhvdXQgMi41
IHN1cHBvcnQgZG9lc24ndCBuZWVkIDpmdW5jOmBiYC4KLQotCi0uLiBmdW5jdGlvbjo6IHUodGV4
dCkKLQotICAgQSAiZmFrZSIgdW5pY29kZSBsaXRlcmFsLiAgKnRleHQqIHNob3VsZCBhbHdheXMg
YmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuCi0gICBJbiBQeXRob24gMiwgOmZ1bmM6YHVgIHJl
dHVybnMgdW5pY29kZSwgYW5kIGluIFB5dGhvbiAzLCBhIHN0cmluZy4gIEFsc28sIGluCi0gICBQ
eXRob24gMiwgdGhlIHN0cmluZyBpcyBkZWNvZGVkIHdpdGggdGhlIGBgdW5pY29kZS1lc2NhcGVg
YCBjb2RlYywgd2hpY2gKLSAgIGFsbG93cyB1bmljb2RlIGVzY2FwZXMgdG8gYmUgdXNlZCBpbiBp
dC4KLQotCi0gICAuLiBub3RlOjoKLQotICAgICAgSW4gUHl0aG9uIDMuMywgdGhlIGBgdWBgIHBy
ZWZpeCBoYXMgYmVlbiByZWludHJvZHVjZWQuIENvZGUgdGhhdCBvbmx5Ci0gICAgICBzdXBwb3J0
cyBQeXRob24gMyB2ZXJzaW9ucyBncmVhdGVyIHRoYW4gMy4zIHRodXMgZG9lcyBub3QgbmVlZAot
ICAgICAgOmZ1bmM6YHVgLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgT24gUHl0aG9uIDIsIDpm
dW5jOmB1YCBkb2Vzbid0IGtub3cgd2hhdCB0aGUgZW5jb2Rpbmcgb2YgdGhlIGxpdGVyYWwKLSAg
ICAgIGlzLiBFYWNoIGJ5dGUgaXMgY29udmVydGVkIGRpcmVjdGx5IHRvIHRoZSB1bmljb2RlIGNv
ZGVwb2ludCBvZiB0aGUgc2FtZQotICAgICAgdmFsdWUuIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBv
bmx5IHNhZmUgdG8gdXNlIDpmdW5jOmB1YCB3aXRoIHN0cmluZ3Mgb2YKLSAgICAgIEFTQ0lJIGRh
dGEuCi0KLQotLi4gZnVuY3Rpb246OiB1bmljaHIoYykKLQotICAgUmV0dXJuIHRoZSAoVW5pY29k
ZSkgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29kZXBvaW50ICpjKi4gIFRoaXMgaXMKLSAgIGVx
dWl2YWxlbnQgdG8gOmZ1bmM6YHB5Mjp1bmljaHJgIG9uIFB5dGhvbiAyIGFuZCA6ZnVuYzpgcHkz
OmNocmAgb24gUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiBpbnQyYnl0ZShpKQotCi0gICBD
b252ZXJ0cyAqaSogdG8gYSBieXRlLiAgKmkqIG11c3QgYmUgaW4gYGByYW5nZSgwLCAyNTYpYGAu
ICBUaGlzIGlzCi0gICBlcXVpdmFsZW50IHRvIDpmdW5jOmBweTI6Y2hyYCBpbiBQeXRob24gMiBh
bmQgYGBieXRlcygoaSwpKWBgIGluIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogYnl0ZTJp
bnQoYnMpCi0KLSAgIENvbnZlcnRzIHRoZSBmaXJzdCBieXRlIG9mICpicyogdG8gYW4gaW50ZWdl
ci4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwotICAgYGBvcmQoYnNbMF0pYGAgb24gUHl0aG9uIDIg
YW5kIGBgYnNbMF1gYCBvbiBQeXRob24gMy4KLQotCi0uLiBmdW5jdGlvbjo6IGluZGV4Ynl0ZXMo
YnVmLCBpKQotCi0gICBSZXR1cm4gdGhlIGJ5dGUgYXQgaW5kZXggKmkqIG9mICpidWYqIGFzIGFu
IGludGVnZXIuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGluZGV4aW5nIGEgYnl0ZXMgb2Jq
ZWN0IGluIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcmJ5dGVzKGJ1ZikKLQotICAg
UmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYnl0ZXMgaW4gKmJ1ZiogYXMgaW50ZWdlcnMuICBUaGlz
IGlzIGVxdWl2YWxlbnQgdG8KLSAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAz
LgotCi0KLS4uIGRhdGE6OiBTdHJpbmdJTwotCi0gICBUaGlzIGlzIGFuIGZha2UgZmlsZSBvYmpl
Y3QgZm9yIHRleHR1YWwgZGF0YS4gIEl0J3MgYW4gYWxpYXMgZm9yCi0gICA6Y2xhc3M6YHB5MjpT
dHJpbmdJTy5TdHJpbmdJT2AgaW4gUHl0aG9uIDIgYW5kIDpjbGFzczpgcHkzOmlvLlN0cmluZ0lP
YCBpbgotICAgUHl0aG9uIDMuCi0KLQotLi4gZGF0YTo6IEJ5dGVzSU8KLQotICAgVGhpcyBpcyBh
IGZha2UgZmlsZSBvYmplY3QgZm9yIGJpbmFyeSBkYXRhLiAgSW4gUHl0aG9uIDIsIGl0J3MgYW4g
YWxpYXMgZm9yCi0gICA6Y2xhc3M6YHB5MjpTdHJpbmdJTy5TdHJpbmdJT2AsIGJ1dCBpbiBQeXRo
b24gMywgaXQncyBhbiBhbGlhcyBmb3IKLSAgIDpjbGFzczpgcHkzOmlvLkJ5dGVzSU9gLgotCi0K
LVJlbmFtZWQgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBjb21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PgotCi0uLiBtb2R1bGU6OiBzaXgubW92
ZXMKLSAgIDpzeW5vcHNpczogUmVuYW1lZCBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGNvbXBhdGli
aWxpdHkKLQotUHl0aG9uIDMgcmVvcmdhbml6ZWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kIG1v
dmVkIHNldmVyYWwgZnVuY3Rpb25zIHRvCi1kaWZmZXJlbnQgbW9kdWxlcy4gIFNpeCBwcm92aWRl
cyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIHRvIHRoZW0gdGhyb3VnaCB0aGUgZmFrZQotOm1vZDpg
c2l4Lm1vdmVzYCBtb2R1bGUuICBGb3IgZXhhbXBsZSwgdG8gbG9hZCB0aGUgbW9kdWxlIGZvciBw
YXJzaW5nIEhUTUwgb24KLVB5dGhvbiAyIG9yIDMsIHdyaXRlOjoKLQotICAgZnJvbSBzaXgubW92
ZXMgaW1wb3J0IGh0bWxfcGFyc2VyCi0KLVNpbWlsYXJseSwgdG8gZ2V0IHRoZSBmdW5jdGlvbiB0
byByZWxvYWQgbW9kdWxlcywgd2hpY2ggd2FzIG1vdmVkIGZyb20gdGhlCi1idWlsdGluIG1vZHVs
ZSB0byB0aGUgYGBpbXBgYCBtb2R1bGUsIHVzZTo6Ci0KLSAgIGZyb20gc2l4Lm1vdmVzIGltcG9y
dCByZWxvYWRfbW9kdWxlCi0KLUZvciB0aGUgbW9zdCBwYXJ0LCA6bW9kOmBzaXgubW92ZXNgIGFs
aWFzZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgbW9kdWxlcyBpbgotUHl0aG9uIDMuICBXaGVuIHRo
ZSBuZXcgUHl0aG9uIDMgbmFtZSBpcyBhIHBhY2thZ2UsIHRoZSBjb21wb25lbnRzIG9mIHRoZSBu
YW1lCi1hcmUgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmVzLiAgRm9yIGV4YW1wbGUsIGBgaHRtbC5w
YXJzZXJgYCBiZWNvbWVzCi1gYGh0bWxfcGFyc2VyYGAuICBJbiBzb21lIGNhc2VzIHdoZXJlIHNl
dmVyYWwgbW9kdWxlcyBoYXZlIGJlZW4gY29tYmluZWQsIHRoZQotUHl0aG9uIDIgbmFtZSBpcyBy
ZXRhaW5lZC4gIFRoaXMgaXMgc28gdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMgY2FuIGJlIGZvdW5k
IHdoZW4KLXJ1bm5pbmcgb24gUHl0aG9uIDIuICBGb3IgZXhhbXBsZSwgYGBCYXNlSFRUUFNlcnZl
cmBgIHdoaWNoIGlzIGluCi1gYGh0dHAuc2VydmVyYGAgaW4gUHl0aG9uIDMgaXMgYWxpYXNlZCBh
cyBgYEJhc2VIVFRQU2VydmVyYGAuCi0KLVNvbWUgbW9kdWxlcyB3aGljaCBoYWQgdHdvIGltcGxl
bWVudGF0aW9ucyBoYXZlIGJlZW4gbWVyZ2VkIGluIFB5dGhvbiAzLiAgRm9yCi1leGFtcGxlLCBg
YGNQaWNrbGVgYCBubyBsb25nZXIgZXhpc3RzIGluIFB5dGhvbiAzOyBpdCB3YXMgbWVyZ2VkIHdp
dGgKLWBgcGlja2xlYGAuICBJbiB0aGVzZSBjYXNlcywgZmV0Y2hpbmcgdGhlIGZhc3QgdmVyc2lv
biB3aWxsIGxvYWQgdGhlIGZhc3Qgb25lIG9uCi1QeXRob24gMiBhbmQgdGhlIG1lcmdlZCBtb2R1
bGUgaW4gUHl0aG9uIDMuCi0KLVRoZSA6bW9kOmBweTI6dXJsbGliYCwgOm1vZDpgcHkyOnVybGxp
YjJgLCBhbmQgOm1vZDpgcHkyOnVybHBhcnNlYCBtb2R1bGVzIGhhdmUKLWJlZW4gY29tYmluZWQg
aW4gdGhlIDptb2Q6YHB5Mzp1cmxsaWJgIHBhY2thZ2UgaW4gUHl0aG9uIDMuICBUaGUKLTptb2Q6
YHNpeC5tb3Zlcy51cmxsaWJgIHBhY2thZ2UgaXMgYSB2ZXJzaW9uLWluZGVwZW5kZW50IGxvY2F0
aW9uIGZvciB0aGlzCi1mdW5jdGlvbmFsaXR5OyBpdHMgc3RydWN0dXJlIG1pbWljcyB0aGUgc3Ry
dWN0dXJlIG9mIHRoZSBQeXRob24gMwotOm1vZDpgcHkzOnVybGxpYmAgcGFja2FnZS4KLQotLi4g
bm90ZTo6Ci0KLSAgIEluIG9yZGVyIHRvIG1ha2UgaW1wb3J0cyBvZiB0aGUgZm9ybTo6Ci0KLSAg
ICAgZnJvbSBzaXgubW92ZXMuY1BpY2tsZSBpbXBvcnQgbG9hZHMKLQotICAgd29yaywgc2l4IHBs
YWNlcyBzcGVjaWFsIHByb3h5IG9iamVjdHMgaW4gaW4gOmRhdGE6YHB5MzpzeXMubW9kdWxlc2Au
IFRoZXNlCi0gICBwcm94aWVzIGxhemlseSBsb2FkIHRoZSB1bmRlcmx5aW5nIG1vZHVsZSB3aGVu
IGFuIGF0dHJpYnV0ZSBpcyBmZXRjaGVkLiBUaGlzCi0gICB3aWxsIGZhaWwgaWYgdGhlIHVuZGVy
bHlpbmcgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIFB5dGhvbgotICAgaW50ZXJwcmV0
ZXIuIEZvciBleGFtcGxlLCBgYHN5cy5tb2R1bGVzWyJzaXgubW92ZXMud2lucmVnIl0uTG9hZEtl
eWBgIHdvdWxkCi0gICBmYWlsIG9uIGFueSBub24tV2luZG93cyBwbGF0Zm9ybS4gVW5mb3J0dW5h
dGVseSwgc29tZSBhcHBsaWNhdGlvbnMgdHJ5IHRvCi0gICBsb2FkIGF0dHJpYnV0ZXMgb24gZXZl
cnkgbW9kdWxlIGluIDpkYXRhOmBweTM6c3lzLm1vZHVsZXNgLiBzaXggbWl0aWdhdGVzCi0gICB0
aGlzIHByb2JsZW0gZm9yIHNvbWUgYXBwbGljYXRpb25zIGJ5IHByZXRlbmRpbmcgYXR0cmlidXRl
cyBvbiB1bmltcG9ydGFibGUKLSAgIG1vZHVsZXMgZG9uJ3QgZXhpc3QuIFRoaXMgaGFjayBkb2Vz
bid0IHdvcmsgaW4gZXZlcnkgY2FzZSwgdGhvdWdoLiBJZiB5b3UgYXJlCi0gICBlbmNvdW50ZXJp
bmcgcHJvYmxlbXMgd2l0aCB0aGUgbGF6eSBtb2R1bGVzIGFuZCBkb24ndCB1c2UgYW55IGZyb20g
aW1wb3J0cwotICAgZGlyZWN0bHkgZnJvbSBgYHNpeC5tb3Zlc2BgIG1vZHVsZXMsIHlvdSBjYW4g
d29ya2Fyb3VuZCB0aGUgaXNzdWUgYnkgcmVtb3ZpbmcKLSAgIHRoZSBzaXggcHJveHkgbW9kdWxl
czo6Ci0KLSAgICAgZCA9IFtuYW1lIGZvciBuYW1lIGluIHN5cy5tb2R1bGVzIGlmIG5hbWUuc3Rh
cnRzd2l0aCgic2l4Lm1vdmVzLiIpXQotICAgICBmb3IgbmFtZSBpbiBkOgotICAgICAgICAgZGVs
IHN5cy5tb2R1bGVzW25hbWVdCi0KLVN1cHBvcnRlZCByZW5hbWVzOgotCi0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgTmFtZSAgICAgICAgICAg
ICAgICAgICAgICAgICB8IFB5dGhvbiAyIG5hbWUgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0
aG9uIDMgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCi18IGBgYnVpbHRpbnNgYCAgICAgICAgICAg
ICAgICAgfCA6bW9kOmBweTI6X19idWlsdGluX19gICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzpi
dWlsdGluc2AgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGNvbmZpZ3BhcnNlcmBgICAgICAgICAgICAgIHwg
Om1vZDpgcHkyOkNvbmZpZ1BhcnNlcmAgICAgICAgICAgICAgfCA6bW9kOmBweTM6Y29uZmlncGFy
c2VyYCAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLXwgYGBjb3B5cmVnYGAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5
Mjpjb3B5X3JlZ2AgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmNvcHlyZWdgICAgICAgICAg
ICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi18IGBgY1BpY2tsZWBgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6Y1BpY2ts
ZWAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpwaWNrbGVgICAgICAgICAgICAgICAgICAg
IHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
fCBgYGNTdHJpbmdJT2BgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjpjU3RyaW5nSU8uU3Ry
aW5nSU9gICAgICAgfCA6Y2xhc3M6YHB5Mzppby5TdHJpbmdJT2AgICAgICAgICAgICB8Ci0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkYm1f
Z251YGAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6Z2RibWAgICAgICAgICAgICAgICAg
ICAgIHwgOmNsYXNzOmBweTM6ZGJtLmdudWAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgX2R1bW15X3RocmVh
ZGBgICAgICAgICAgICAgfCA6bW9kOmBweTI6ZHVtbXlfdGhyZWFkYCAgICAgICAgICAgICB8IDpt
b2Q6YHB5MzpfZHVtbXlfdGhyZWFkYCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGVtYWlsX21pbWVfbXVsdGlwYXJ0
YGAgICAgIHwgOm1vZDpgcHkyOmVtYWlsLk1JTUVNdWx0aXBhcnRgICAgICAgfCA6bW9kOmBweTM6
ZW1haWwubWltZS5tdWx0aXBhcnRgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBlbWFpbF9taW1lX25vbm11bHRpcGFydGBgICB8
IDptb2Q6YHB5MjplbWFpbC5NSU1FTm9uTXVsdGlwYXJ0YCAgIHwgOm1vZDpgcHkzOmVtYWlsLm1p
bWUubm9ubXVsdGlwYXJ0YCAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi18IGBgZW1haWxfbWltZV90ZXh0YGAgICAgICAgICAgfCA6bW9kOmBw
eTI6ZW1haWwuTUlNRVRleHRgICAgICAgICAgICB8IDptb2Q6YHB5MzplbWFpbC5taW1lLnRleHRg
ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotfCBgYGVtYWlsX21pbWVfYmFzZWBgICAgICAgICAgIHwgOm1vZDpgcHkyOmVtYWls
Lk1JTUVCYXNlYCAgICAgICAgICAgfCA6bW9kOmBweTM6ZW1haWwubWltZS5iYXNlYCAgICAgICAg
ICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LXwgYGBmaWx0ZXJgYCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6aXRlcnRvb2xzLmlm
aWx0ZXJgICAgICAgIHwgOmZ1bmM6YHB5MzpmaWx0ZXJgICAgICAgICAgICAgICAgICAgfAotKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZmls
dGVyZmFsc2VgYCAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOml0ZXJ0b29scy5pZmlsdGVyZmFs
c2VgICB8IDpmdW5jOmBweTM6aXRlcnRvb2xzLmZpbHRlcmZhbHNlYCAgIHwKLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGh0dHBfY29va2ll
amFyYGAgICAgICAgICAgIHwgOm1vZDpgcHkyOmNvb2tpZWxpYmAgICAgICAgICAgICAgICAgfCA6
bW9kOmBweTM6aHR0cC5jb29raWVqYXJgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBodHRwX2Nvb2tpZXNgYCAgICAg
ICAgICAgICB8IDptb2Q6YHB5MjpDb29raWVgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkz
Omh0dHAuY29va2llc2AgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaHRtbF9lbnRpdGllc2BgICAgICAgICAgICAg
fCA6bW9kOmBweTI6aHRtbGVudGl0eWRlZnNgICAgICAgICAgICB8IDptb2Q6YHB5MzpodG1sLmVu
dGl0aWVzYCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotfCBgYGh0bWxfcGFyc2VyYGAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOkhUTUxQYXJzZXJgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6aHRtbC5wYXJzZXJgICAg
ICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLXwgYGBodHRwX2NsaWVudGBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpodHRw
bGliYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmh0dHAuY2xpZW50YCAgICAgICAgICAg
ICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci18IGBgQmFzZUhUVFBTZXJ2ZXJgYCAgICAgICAgICAgfCA6bW9kOmBweTI6QmFzZUhUVFBTZXJ2
ZXJgICAgICAgICAgICB8IDptb2Q6YHB5MzpodHRwLnNlcnZlcmAgICAgICAgICAgICAgIHwKLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYENH
SUhUVFBTZXJ2ZXJgYCAgICAgICAgICAgIHwgOm1vZDpgcHkyOkNHSUhUVFBTZXJ2ZXJgICAgICAg
ICAgICAgfCA6bW9kOmBweTM6aHR0cC5zZXJ2ZXJgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBTaW1wbGVIVFRQ
U2VydmVyYGAgICAgICAgICB8IDptb2Q6YHB5MjpTaW1wbGVIVFRQU2VydmVyYCAgICAgICAgIHwg
Om1vZDpgcHkzOmh0dHAuc2VydmVyYCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaW5wdXRgYCAgICAgICAgICAg
ICAgICAgICAgfCA6ZnVuYzpgcHkyOnJhd19pbnB1dGAgICAgICAgICAgICAgICB8IDpmdW5jOmBw
eTM6aW5wdXRgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGludGVybmBgICAgICAgICAgICAgICAgICAg
IHwgOmZ1bmM6YHB5MjppbnRlcm5gICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkzOnN5cy5p
bnRlcm5gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBtYXBgYCAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5j
OmBweTI6aXRlcnRvb2xzLmltYXBgICAgICAgICAgIHwgOmZ1bmM6YHB5MzptYXBgICAgICAgICAg
ICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi18IGBgcXVldWVgYCAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6UXVl
dWVgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpxdWV1ZWAgICAgICAgICAgICAgICAg
ICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotfCBgYHJhbmdlYGAgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5Mjp4cmFuZ2VgICAg
ICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkzOnJhbmdlYCAgICAgICAgICAgICAgICAgICB8Ci0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBy
ZWR1Y2VgYCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6cmVkdWNlYCAgICAgICAgICAg
ICAgICAgIHwgOmZ1bmM6YHB5MzpmdW5jdG9vbHMucmVkdWNlYCAgICAgICAgfAotKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcmVsb2FkX21v
ZHVsZWBgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOnJlbG9hZGAgICAgICAgICAgICAgICAgICB8
IDpmdW5jOmBweTM6aW1wLnJlbG9hZGAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHJlcHJsaWJgYCAgICAgICAg
ICAgICAgICAgIHwgOm1vZDpgcHkyOnJlcHJgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBw
eTM6cmVwcmxpYmAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzaGxleF9xdW90ZWBgICAgICAgICAgICAg
ICB8IDptb2Q6YHB5MjpwaXBlcy5xdW90ZWAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnNobGV4
LnF1b3RlYCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc29ja2V0c2VydmVyYGAgICAgICAgICAgICAgfCA6bW9k
OmBweTI6U29ja2V0U2VydmVyYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzpzb2NrZXRzZXJ2ZXJg
ICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotfCBgYF90aHJlYWRgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOnRo
cmVhZGAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6X3RocmVhZGAgICAgICAgICAgICAg
ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKLXwgYGB0a2ludGVyYGAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpUa2ludGVyYCAg
ICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXJgICAgICAgICAgICAgICAgICAgfAot
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBg
dGtpbnRlcl9kaWFsb2dgYCAgICAgICAgICAgfCA6bW9kOmBweTI6RGlhbG9nYCAgICAgICAgICAg
ICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLmRpYWxvZ2AgICAgICAgICAgIHwKLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJf
ZmlsZWRpYWxvZ2BgICAgICAgIHwgOm1vZDpgcHkyOkZpbGVEaWFsb2dgICAgICAgICAgICAgICAg
fCA6bW9kOmBweTM6dGtpbnRlci5GaWxlRGlhbG9nYCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX3Njcm9sbGVk
dGV4dGBgICAgICB8IDptb2Q6YHB5MjpTY3JvbGxlZFRleHRgICAgICAgICAgICAgIHwgOm1vZDpg
cHkzOnRraW50ZXIuc2Nyb2xsZWR0ZXh0YCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9zaW1wbGVkaWFsb2dgYCAg
ICAgfCA6bW9kOmBweTI6U2ltcGxlRGlhbG9nYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2lu
dGVyLnNpbXBsZWRpYWxvZ2AgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfdHRrYGAgICAgICAgICAgICAgIHwgOm1v
ZDpgcHkyOnR0a2AgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci50dGtg
ICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX3RpeGBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpU
aXhgICAgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIudGl4YCAgICAgICAg
ICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi18IGBgdGtpbnRlcl9jb25zdGFudHNgYCAgICAgICAgfCA6bW9kOmBweTI6VGtjb25zdGFu
dHNgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLmNvbnN0YW50c2AgICAgICAgIHwK
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBg
YHRraW50ZXJfZG5kYGAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOlRrZG5kYCAgICAgICAgICAg
ICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5kbmRgICAgICAgICAgICAgICB8Ci0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVy
X2NvbG9yY2hvb3NlcmBgICAgICB8IDptb2Q6YHB5Mjp0a0NvbG9yQ2hvb3NlcmAgICAgICAgICAg
IHwgOm1vZDpgcHkzOnRraW50ZXIuY29sb3JjaG9vc2VyYCAgICAgfAotKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9jb21tb25k
aWFsb2dgYCAgICAgfCA6bW9kOmBweTI6dGtDb21tb25EaWFsb2dgICAgICAgICAgICB8IDptb2Q6
YHB5Mzp0a2ludGVyLmNvbW1vbmRpYWxvZ2AgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfdGtmaWxlZGlhbG9nYGAg
ICAgIHwgOm1vZDpgcHkyOnRrRmlsZURpYWxvZ2AgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtp
bnRlci5maWxlZGlhbG9nYCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX2ZvbnRgYCAgICAgICAgICAgICB8IDpt
b2Q6YHB5Mjp0a0ZvbnRgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuZm9u
dGAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9tZXNzYWdlYm94YGAgICAgICAgfCA6bW9kOmBweTI6
dGtNZXNzYWdlQm94YCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLm1lc3NhZ2Vib3hg
ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotfCBgYHRraW50ZXJfdGtzaW1wbGVkaWFsb2dgYCAgIHwgOm1vZDpgcHkyOnRrU2ltcGxl
RGlhbG9nYCAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5zaW1wbGVkaWFsb2dgICAgICB8
Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwg
YGB1cmxsaWIucGFyc2VgYCAgICAgICAgICAgICB8IFNlZSA6bW9kOmBzaXgubW92ZXMudXJsbGli
LnBhcnNlYCAgIHwgOm1vZDpgcHkzOnVybGxpYi5wYXJzZWAgICAgICAgICAgICAgfAotKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGli
LmVycm9yYGAgICAgICAgICAgICAgfCBTZWUgOm1vZDpgc2l4Lm1vdmVzLnVybGxpYi5lcnJvcmAg
ICB8IDptb2Q6YHB5Mzp1cmxsaWIuZXJyb3JgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHVybGxpYi5yZXF1ZXN0
YGAgICAgICAgICAgIHwgU2VlIDptb2Q6YHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdGAgfCA6bW9k
OmBweTM6dXJsbGliLnJlcXVlc3RgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB1cmxsaWIucmVzcG9uc2VgYCAgICAg
ICAgICB8IFNlZSA6bW9kOmBzaXgubW92ZXMudXJsbGliLnJlc3BvbnNlYHwgOm1vZDpgcHkzOnVy
bGxpYi5yZXNwb25zZWAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGliLnJvYm90cGFyc2VyYGAgICAgICAgfCA6
bW9kOmBweTI6cm9ib3RwYXJzZXJgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp1cmxsaWIucm9i
b3RwYXJzZXJgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotfCBgYHVybGxpYl9yb2JvdHBhcnNlcmBgICAgICAgIHwgOm1vZDpgcHky
OnJvYm90cGFyc2VyYCAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dXJsbGliLnJvYm90cGFyc2Vy
YCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKLXwgYGBVc2VyRGljdGBgICAgICAgICAgICAgICAgICB8IDpjbGFzczpgcHkyOlVzZXJE
aWN0LlVzZXJEaWN0YCAgICAgIHwgOmNsYXNzOmBweTM6Y29sbGVjdGlvbnMuVXNlckRpY3RgICAg
fAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18
IGBgVXNlckxpc3RgYCAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MjpVc2VyTGlzdC5Vc2Vy
TGlzdGAgICAgICB8IDpjbGFzczpgcHkzOmNvbGxlY3Rpb25zLlVzZXJMaXN0YCAgIHwKLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYFVzZXJT
dHJpbmdgYCAgICAgICAgICAgICAgIHwgOmNsYXNzOmBweTI6VXNlclN0cmluZy5Vc2VyU3RyaW5n
YCAgfCA6Y2xhc3M6YHB5Mzpjb2xsZWN0aW9ucy5Vc2VyU3RyaW5nYCB8Ci0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB3aW5yZWdgYCAgICAg
ICAgICAgICAgICAgICB8IDptb2Q6YHB5Mjpfd2lucmVnYCAgICAgICAgICAgICAgICAgIHwgOm1v
ZDpgcHkzOndpbnJlZ2AgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgeG1scnBjX2NsaWVudGBgICAgICAg
ICAgICAgfCA6bW9kOmBweTI6eG1scnBjbGliYCAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp4
bWxycGMuY2xpZW50YCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHhtbHJwY19zZXJ2ZXJgYCAgICAgICAgICAgIHwg
Om1vZDpgcHkyOlNpbXBsZVhNTFJQQ1NlcnZlcmAgICAgICAgfCA6bW9kOmBweTM6eG1scnBjLnNl
cnZlcmAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLXwgYGB4cmFuZ2VgYCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBw
eTI6eHJhbmdlYCAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MzpyYW5nZWAgICAgICAgICAg
ICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi18IGBgemlwYGAgICAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOml0ZXJ0
b29scy5pemlwYCAgICAgICAgICB8IDpmdW5jOmBweTM6emlwYCAgICAgICAgICAgICAgICAgICAg
IHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
fCBgYHppcF9sb25nZXN0YGAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjppdGVydG9vbHMuaXpp
cF9sb25nZXN0YCAgfCA6ZnVuYzpgcHkzOml0ZXJ0b29scy56aXBfbG9uZ2VzdGAgICB8Ci0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotdXJsbGli
IHBhcnNlCi08PDw8PDw8PDw8PDwKLQotLi4gbW9kdWxlOjogc2l4Lm1vdmVzLnVybGxpYi5wYXJz
ZQotICAgOnN5bm9wc2lzOiBTdHVmZiBmcm9tIDptb2Q6YHB5Mjp1cmxwYXJzZWAgYW5kIDptb2Q6
YHB5Mjp1cmxsaWJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGliLnBhcnNlYCBpbiBQ
eXRob24gMwotCi1Db250YWlucyBmdW5jdGlvbnMgZnJvbSBQeXRob24gMydzIDptb2Q6YHB5Mzp1
cmxsaWIucGFyc2VgIGFuZCBQeXRob24gMidzOgotCi06bW9kOmBweTI6dXJscGFyc2VgOgotCi0q
IDpmdW5jOmBweTI6dXJscGFyc2UuUGFyc2VSZXN1bHRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2Uu
U3BsaXRSZXN1bHRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJscGFyc2VgCi0qIDpmdW5jOmBw
eTI6dXJscGFyc2UudXJsdW5wYXJzZWAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5wYXJzZV9xc2AK
LSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5wYXJzZV9xc2xgCi0qIDpmdW5jOmBweTI6dXJscGFyc2Uu
dXJsam9pbmAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51cmxkZWZyYWdgCi0qIDpmdW5jOmBweTI6
dXJscGFyc2UudXJsc3BsaXRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJsdW5zcGxpdGAKLSog
OmZ1bmM6YHB5Mjp1cmxwYXJzZS5zcGxpdHF1ZXJ5YAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnVz
ZXNfZnJhZ21lbnRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXNlc19uZXRsb2NgCi0qIDpmdW5j
OmBweTI6dXJscGFyc2UudXNlc19wYXJhbXNgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXNlc19x
dWVyeWAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51c2VzX3JlbGF0aXZlYAotCi1hbmQgOm1vZDpg
cHkyOnVybGxpYmA6Ci0KLSogOmZ1bmM6YHB5Mjp1cmxsaWIucXVvdGVgCi0qIDpmdW5jOmBweTI6
dXJsbGliLnF1b3RlX3BsdXNgCi0qIDpmdW5jOmBweTI6dXJsbGliLnNwbGl0dGFnYAotKiA6ZnVu
YzpgcHkyOnVybGxpYi5zcGxpdHVzZXJgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVucXVvdGVgCi0q
IDpmdW5jOmBweTI6dXJsbGliLnVucXVvdGVfcGx1c2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJs
ZW5jb2RlYAotCi0KLXVybGxpYiBlcnJvcgotPDw8PDw8PDw8PDw8Ci0KLS4uIG1vZHVsZTo6IHNp
eC5tb3Zlcy51cmxsaWIuZXJyb3IKLSAgIDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6bW9kOmBweTI6
dXJsbGliYCBhbmQgOm1vZDpgcHkyOnVybGxpYjJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6
dXJsbGliLmVycm9yYCBpbiBQeXRob24gMwotCi1Db250YWlucyBleGNlcHRpb25zIGZyb20gUHl0
aG9uIDMncyA6bW9kOmBweTM6dXJsbGliLmVycm9yYCBhbmQgUHl0aG9uIDInczoKLQotOm1vZDpg
cHkyOnVybGxpYmA6Ci0KLSogOmV4YzpgcHkyOnVybGxpYi5Db250ZW50VG9vU2hvcnRFcnJvcmAK
LQotYW5kIDptb2Q6YHB5Mjp1cmxsaWIyYDoKLQotKiA6ZXhjOmBweTI6dXJsbGliMi5VUkxFcnJv
cmAKLSogOmV4YzpgcHkyOnVybGxpYjIuSFRUUEVycm9yYAotCi0KLXVybGxpYiByZXF1ZXN0Ci08
PDw8PDw8PDw8PDw8PAotCi0uLiBtb2R1bGU6OiBzaXgubW92ZXMudXJsbGliLnJlcXVlc3QKLSAg
IDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6bW9kOmBweTI6dXJsbGliYCBhbmQgOm1vZDpgcHkyOnVy
bGxpYjJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGliLnJlcXVlc3RgIGluIFB5dGhv
biAzCi0KLUNvbnRhaW5zIGl0ZW1zIGZyb20gUHl0aG9uIDMncyA6bW9kOmBweTM6dXJsbGliLnJl
cXVlc3RgIGFuZCBQeXRob24gMidzOgotCi06bW9kOmBweTI6dXJsbGliYDoKLQotKiA6ZnVuYzpg
cHkyOnVybGxpYi5wYXRobmFtZTJ1cmxgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVybDJwYXRobmFt
ZWAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIuZ2V0cHJveGllc2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIu
dXJscmV0cmlldmVgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVybGNsZWFudXBgCi0qIDpjbGFzczpg
cHkyOnVybGxpYi5VUkxvcGVuZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYi5GYW5jeVVSTG9wZW5l
cmAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIucHJveHlfYnlwYXNzYAotCi1hbmQgOm1vZDpgcHkyOnVy
bGxpYjJgOgotCi0qIDpmdW5jOmBweTI6dXJsbGliMi51cmxvcGVuYAotKiA6ZnVuYzpgcHkyOnVy
bGxpYjIuaW5zdGFsbF9vcGVuZXJgCi0qIDpmdW5jOmBweTI6dXJsbGliMi5idWlsZF9vcGVuZXJg
Ci0qIDpjbGFzczpgcHkyOnVybGxpYjIuUmVxdWVzdGAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5P
cGVuZXJEaXJlY3RvcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQRGVmYXVsdEVycm9ySGFu
ZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQUmVkaXJlY3RIYW5kbGVyYAotKiA6Y2xh
c3M6YHB5Mjp1cmxsaWIyLkhUVFBDb29raWVQcm9jZXNzb3JgCi0qIDpjbGFzczpgcHkyOnVybGxp
YjIuUHJveHlIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkJhc2VIYW5kbGVyYAotKiA6
Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBQYXNzd29yZE1ncmAKLSogOmNsYXNzOmBweTI6dXJsbGli
Mi5IVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIy
LkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQQmFz
aWNBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5Qcm94eUJhc2ljQXV0aEhhbmRs
ZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcmAKLSog
OmNsYXNzOmBweTI6dXJsbGliMi5IVFRQRGlnZXN0QXV0aEhhbmRsZXJgCi0qIDpjbGFzczpgcHky
OnVybGxpYjIuUHJveHlEaWdlc3RBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5I
VFRQSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQU0hhbmRsZXJgCi0qIDpjbGFz
czpgcHkyOnVybGxpYjIuRmlsZUhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuRlRQSGFu
ZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5DYWNoZUZUUEhhbmRsZXJgCi0qIDpjbGFzczpg
cHkyOnVybGxpYjIuVW5rbm93bkhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuSFRUUEVy
cm9yUHJvY2Vzc29yYAotCi0KLXVybGxpYiByZXNwb25zZQotPDw8PDw8PDw8PDw8PDw8Ci0KLS4u
IG1vZHVsZTo6IHNpeC5tb3Zlcy51cmxsaWIucmVzcG9uc2UKLSAgIDpzeW5vcHNpczogU3R1ZmYg
ZnJvbSA6bW9kOmBweTI6dXJsbGliYCBpbiBQeXRob24gMiBhbmQgOm1vZDpgcHkzOnVybGxpYi5y
ZXNwb25zZWAgaW4gUHl0aG9uIDMKLQotQ29udGFpbnMgY2xhc3NlcyBmcm9tIFB5dGhvbiAzJ3Mg
Om1vZDpgcHkzOnVybGxpYi5yZXNwb25zZWAgYW5kIFB5dGhvbiAyJ3M6Ci0KLTptb2Q6YHB5Mjp1
cmxsaWJgOgotCi0qIDpjbGFzczpgcHkyOnVybGxpYi5hZGRiYXNlYAotKiA6Y2xhc3M6YHB5Mjp1
cmxsaWIuYWRkY2xvc2Vob29rYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIuYWRkaW5mb2AKLSogOmNs
YXNzOmBweTI6dXJsbGliLmFkZGluZm91cmxgCi0KLQotQWR2YW5jZWQgLSBDdXN0b21pemluZyBy
ZW5hbWVzCi08PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwKLQotLi4gY3VycmVudG1vZHVs
ZTo6IHNpeAotCi1JdCBpcyBwb3NzaWJsZSB0byBhZGQgYWRkaXRpb25hbCBuYW1lcyB0byB0aGUg
Om1vZDpgc2l4Lm1vdmVzYCBuYW1lc3BhY2UuCi0KLQotLi4gZnVuY3Rpb246OiBhZGRfbW92ZShp
dGVtKQotCi0gICBBZGQgKml0ZW0qIHRvIHRoZSA6bW9kOmBzaXgubW92ZXNgIG1hcHBpbmcuICAq
aXRlbSogc2hvdWxkIGJlIGEKLSAgIDpjbGFzczpgTW92ZWRBdHRyaWJ1dGVgIG9yIDpjbGFzczpg
TW92ZWRNb2R1bGVgIGluc3RhbmNlLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVtb3ZlX21vdmUobmFt
ZSkKLQotICAgUmVtb3ZlIHRoZSA6bW9kOmBzaXgubW92ZXNgIG1hcHBpbmcgY2FsbGVkICpuYW1l
Ki4gICpuYW1lKiBzaG91bGQgYmUgYQotICAgc3RyaW5nLgotCi0KLUluc3RhbmNlcyBvZiB0aGUg
Zm9sbG93aW5nIGNsYXNzZXMgY2FuIGJlIHBhc3NlZCB0byA6ZnVuYzpgYWRkX21vdmVgLiAgTmVp
dGhlcgotaGF2ZSBhbnkgcHVibGljIG1lbWJlcnMuCi0KLQotLi4gY2xhc3M6OiBNb3ZlZE1vZHVs
ZShuYW1lLCBvbGRfbW9kLCBuZXdfbW9kKQotCi0gICBDcmVhdGUgYSBtYXBwaW5nIGZvciA6bW9k
OmBzaXgubW92ZXNgIGNhbGxlZCAqbmFtZSogdGhhdCByZWZlcmVuY2VzIGRpZmZlcmVudAotICAg
bW9kdWxlcyBpbiBQeXRob24gMiBhbmQgMy4gICpvbGRfbW9kKiBpcyB0aGUgbmFtZSBvZiB0aGUg
UHl0aG9uIDIgbW9kdWxlLgotICAgKm5ld19tb2QqIGlzIHRoZSBuYW1lIG9mIHRoZSBQeXRob24g
MyBtb2R1bGUuCi0KLQotLi4gY2xhc3M6OiBNb3ZlZEF0dHJpYnV0ZShuYW1lLCBvbGRfbW9kLCBu
ZXdfbW9kLCBvbGRfYXR0cj1Ob25lLCBuZXdfYXR0cj1Ob25lKQotCi0gICBDcmVhdGUgYSBtYXBw
aW5nIGZvciA6bW9kOmBzaXgubW92ZXNgIGNhbGxlZCAqbmFtZSogdGhhdCByZWZlcmVuY2VzIGRp
ZmZlcmVudAotICAgYXR0cmlidXRlcyBpbiBQeXRob24gMiBhbmQgMy4gICpvbGRfbW9kKiBpcyB0
aGUgbmFtZSBvZiB0aGUgUHl0aG9uIDIgbW9kdWxlLgotICAgKm5ld19tb2QqIGlzIHRoZSBuYW1l
IG9mIHRoZSBQeXRob24gMyBtb2R1bGUuICBJZiAqbmV3X2F0dHIqIGlzIG5vdCBnaXZlbiwgaXQK
LSAgIGRlZmF1bHRzIHRvICpvbGRfYXR0ciouICBJZiBuZWl0aGVyIGlzIGdpdmVuLCB0aGV5IGJv
dGggZGVmYXVsdCB0byAqbmFtZSouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
aXgvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjBkN2I3OGZiNTE2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRp
b24vTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zaXgvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjE5ODY1M2VkMGZlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9zaXgucHljCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0
aWxzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zc2x1dGlscy9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTQ2YmU4NTFkNjRmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9fX2luaXRfXy5weQorKysg
L2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotaW1wb3J0IG9wZW5zc2wKLWltcG9ydCBwcmVnZW5l
cmF0ZWQKLWZyb20gYmFzZSBpbXBvcnQgTm9TU0xFbnZpcm9ubWVudAotZnJvbSBvcGVuc3NsIGlt
cG9ydCBPcGVuU1NMRW52aXJvbm1lbnQKLWZyb20gcHJlZ2VuZXJhdGVkIGltcG9ydCBQcmVnZW5l
cmF0ZWRTU0xFbnZpcm9ubWVudAotCi1lbnZpcm9ubWVudHMgPSB7Im5vbmUiOiBOb1NTTEVudmly
b25tZW50LAotICAgICAgICAgICAgICAgICJvcGVuc3NsIjogT3BlblNTTEVudmlyb25tZW50LAot
ICAgICAgICAgICAgICAgICJwcmVnZW5lcmF0ZWQiOiBQcmVnZW5lcmF0ZWRTU0xFbnZpcm9ubWVu
dH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvc3NsdXRpbHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjM3YWU1ZjIzY2NmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9iYXNlLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotY2xhc3MgTm9TU0xFbnZpcm9ubWVudChvYmpl
Y3QpOgotICAgIHNzbF9lbmFibGVkID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBob3N0X2NlcnRfcGF0aChzZWxmLCBo
b3N0KToKLSAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLQotICAgIGRlZiBjYV9jZXJ0X3BhdGgo
c2VsZik6Ci0gICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL29wZW5zc2wucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxz
L29wZW5zc2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzI0NzFhYWVlMy4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMiAr
MCwwIEBACi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9y
dCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gZGF0ZXRp
bWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKLQotIyBBbW91bnQgb2YgdGltZSBiZXlvbmQg
dGhlIHByZXNlbnQgdG8gY29uc2lkZXIgY2VydGlmaWNhdGVzICJleHBpcmVkLiIgVGhpcwotIyBh
bGxvd3MgY2VydGlmaWNhdGVzIHRvIGJlIHByb2FjdGl2ZWx5IHJlLWdlbmVyYXRlZCBpbiB0aGUg
ImJ1ZmZlciIgcGVyaW9kCi0jIHByaW9yIHRvIHRoZWlyIGV4YWN0IGV4cGlyYXRpb24gdGltZS4K
LUNFUlRfRVhQSVJZX0JVRkZFUiA9IGRpY3QoaG91cnM9NikKLQotY2xhc3MgT3BlblNTTChvYmpl
Y3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgYmFzZV9wYXRoLCBj
b25mX3BhdGgsIGhvc3RzLCBkdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgYmFzZV9jb25mX3Bh
dGg9Tm9uZSk6Ci0gICAgICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgaW50ZXJhY3Rpbmcgd2l0
aCBPcGVuU1NMLgotICAgICAgICBDcmVhdGVzIGEgY29uZmlnIGZpbGUgZm9yIHRoZSBkdXJhdGlv
biBvZiB0aGUgY29udGV4dC4KLQotICAgICAgICA6cGFyYW0gbG9nZ2VyOiBzdGRsaWIgbG9nZ2Vy
IG9yIHB5dGhvbiBzdHJ1Y3R1cmVkIGxvZ2dlcgotICAgICAgICA6cGFyYW0gYmluYXJ5OiBwYXRo
IHRvIG9wZW5zc2wgYmluYXJ5Ci0gICAgICAgIDpwYXJhbSBiYXNlX3BhdGg6IHBhdGggdG8gZGly
ZWN0b3J5IGZvciBzdG9yaW5nIGNlcnRpZmljYXRlcwotICAgICAgICA6cGFyYW0gY29uZl9wYXRo
OiBwYXRoIGZvciBjb25maWd1cmF0aW9uIGZpbGUgc3RvcmluZyBjb25maWd1cmF0aW9uIGRhdGEK
LSAgICAgICAgOnBhcmFtIGhvc3RzOiBsaXN0IG9mIGhvc3RzIHRvIGluY2x1ZGUgaW4gY29uZmln
dXJhdGlvbiAob3IgTm9uZSBpZiBub3QKLSAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5n
IGhvc3QgY2VydGlmaWNhdGVzKQotICAgICAgICA6cGFyYW0gZHVyYXRpb246IENlcnRpZmljYXRl
IGR1cmF0aW9uIGluIGRheXMiIiIKLQotICAgICAgICBzZWxmLmJhc2VfcGF0aCA9IGJhc2VfcGF0
aAotICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQotICAgICAgICBzZWxmLmNvbmZfcGF0aCA9
IGNvbmZfcGF0aAotICAgICAgICBzZWxmLmJhc2VfY29uZl9wYXRoID0gYmFzZV9jb25mX3BhdGgK
LSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm9jID0gTm9uZQot
ICAgICAgICBzZWxmLmNtZCA9IFtdCi0gICAgICAgIHNlbGYuaG9zdHMgPSBob3N0cwotICAgICAg
ICBzZWxmLmR1cmF0aW9uID0gZHVyYXRpb24KLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgIHdpdGggb3BlbihzZWxmLmNvbmZfcGF0aCwgInciKSBhcyBmOgotICAgICAgICAgICAg
Zi53cml0ZShnZXRfY29uZmlnKHNlbGYuYmFzZV9wYXRoLCBzZWxmLmhvc3RzLCBzZWxmLmR1cmF0
aW9uKSkKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJn
cywgKiprd2FyZ3MpOgotICAgICAgICBvcy51bmxpbmsoc2VsZi5jb25mX3BhdGgpCi0KLSAgICBk
ZWYgbG9nKHNlbGYsIGxpbmUpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYubG9nZ2VyLCAicHJv
Y2Vzc19vdXRwdXQiKToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNl
bGYucHJvYy5waWQgaWYgc2VsZi5wcm9jIGlzIG5vdCBOb25lIGVsc2UgTm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuZGVjb2RlKCJ1dGY4IiwgInJlcGxh
Y2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9IiAi
LmpvaW4oc2VsZi5jbWQpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIu
ZGVidWcobGluZSkKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBjbWQsICphcmdzLCAqKmt3YXJn
cyk6Ci0gICAgICAgICIiIlJ1biBhIGNvbW1hbmQgdXNpbmcgT3BlblNTTCBpbiB0aGUgY3VycmVu
dCBjb250ZXh0LgotCi0gICAgICAgIDpwYXJhbSBjbWQ6IFRoZSBvcGVuc3NsIHN1YmNvbW1hbmQg
dG8gcnVuCi0gICAgICAgIDpwYXJhbSAqYXJnczogQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFz
cyB0byB0aGUgY29tbWFuZAotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jbWQgPSBbc2VsZi5i
aW5hcnksIGNtZF0KLSAgICAgICAgaWYgY21kICE9ICJ4NTA5IjoKLSAgICAgICAgICAgIHNlbGYu
Y21kICs9IFsiLWNvbmZpZyIsIHNlbGYuY29uZl9wYXRoXQotICAgICAgICBzZWxmLmNtZCArPSBs
aXN0KGFyZ3MpCi0KLSAgICAgICAgIyBDb3B5IHRoZSBlbnZpcm9ubWVudCwgY29udmVydGluZyB0
byBwbGFpbiBzdHJpbmdzLiBXaW5kb3dzCi0gICAgICAgICMgU3RhcnRQcm9jZXNzIGlzIHBpY2t5
IGFib3V0IGFsbCB0aGUga2V5cy92YWx1ZXMgYmVpbmcgcGxhaW4gc3RyaW5ncywKLSAgICAgICAg
IyBidXQgYXQgbGVhc3QgaW4gTVNZUyBzaGVsbHMsIHRoZSBvcy5lbnZpcm9uIGRpY3Rpb25hcnkg
Y2FuIGJlIG1peGVkLgotICAgICAgICBlbnYgPSB7fQotICAgICAgICBmb3IgaywgdiBpbiBvcy5l
bnZpcm9uLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVu
dltrLmVuY29kZSgidXRmOCIpXSA9IHYuZW5jb2RlKCJ1dGY4IikKLSAgICAgICAgICAgIGV4Y2Vw
dCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlm
IHNlbGYuYmFzZV9jb25mX3BhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBlbnZbIk9QRU5T
U0xfQ09ORiJdID0gc2VsZi5iYXNlX2NvbmZfcGF0aC5lbmNvZGUoInV0ZjgiKQotCi0gICAgICAg
IHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsIHN0ZG91dD1zdWJwcm9jZXNz
LlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9ZW52KQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYucHJv
Yy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHNlbGYubG9nKHN0ZG91dCkKLSAgICAgICAgaWYgc2Vs
Zi5wcm9jLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIHN1YnByb2Nlc3MuQ2Fs
bGVkUHJvY2Vzc0Vycm9yKHNlbGYucHJvYy5yZXR1cm5jb2RlLCBzZWxmLmNtZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1zdGRvdXQpCi0K
LSAgICAgICAgc2VsZi5jbWQgPSBbXQotICAgICAgICBzZWxmLnByb2MgPSBOb25lCi0gICAgICAg
IHJldHVybiBzdGRvdXQKLQotCi1kZWYgbWFrZV9zdWJqZWN0KGNvbW1vbl9uYW1lLAotICAgICAg
ICAgICAgICAgICBjb3VudHJ5PU5vbmUsCi0gICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsCi0g
ICAgICAgICAgICAgICAgIGxvY2FsaXR5PU5vbmUsCi0gICAgICAgICAgICAgICAgIG9yZ2FuaXph
dGlvbj1Ob25lLAotICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fdW5pdD1Ob25lKToKLSAg
ICBhcmdzID0gWygiY291bnRyeSIsICJDIiksCi0gICAgICAgICAgICAoInN0YXRlIiwgIlNUIiks
Ci0gICAgICAgICAgICAoImxvY2FsaXR5IiwgIkwiKSwKLSAgICAgICAgICAgICgib3JnYW5pemF0
aW9uIiwgIk8iKSwKLSAgICAgICAgICAgICgib3JnYW5pemF0aW9uX3VuaXQiLCAiT1UiKSwKLSAg
ICAgICAgICAgICgiY29tbW9uX25hbWUiLCAiQ04iKV0KLQotICAgIHJ2ID0gW10KLQotICAgIGZv
ciB2YXIsIGtleSBpbiBhcmdzOgotICAgICAgICB2YWx1ZSA9IGxvY2FscygpW3Zhcl0KLSAgICAg
ICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBydi5hcHBlbmQoIi8lcz0lcyIg
JSAoa2V5LCB2YWx1ZS5yZXBsYWNlKCIvIiwgIlxcLyIpKSkKLQotICAgIHJldHVybiAiIi5qb2lu
KHJ2KQotCi1kZWYgbWFrZV9hbHRfbmFtZXMoaG9zdHMpOgotICAgIHJ2ID0gW10KLSAgICBmb3Ig
bmFtZSBpbiBob3N0czoKLSAgICAgICAgcnYuYXBwZW5kKCJETlM6JXMiICUgbmFtZSkKLSAgICBy
ZXR1cm4gIiwiLmpvaW4ocnYpCi0KLWRlZiBnZXRfY29uZmlnKHJvb3RfZGlyLCBob3N0cywgZHVy
YXRpb249MzApOgotICAgIGlmIGhvc3RzIGlzIE5vbmU6Ci0gICAgICAgIHNhbl9saW5lID0gIiIK
LSAgICBlbHNlOgotICAgICAgICBzYW5fbGluZSA9ICJzdWJqZWN0QWx0TmFtZSA9ICVzIiAlIG1h
a2VfYWx0X25hbWVzKGhvc3RzKQotCi0gICAgaWYgb3MucGF0aC5zZXAgPT0gIlxcIjoKLSAgICAg
ICAgIyBUaGlzIHNlZW1zIHRvIGJlIG5lZWRlZCBmb3IgdGhlIFNoaW5pbmcgTGlnaHQgT3BlblNT
TCBvbgotICAgICAgICAjIFdpbmRvd3MsIGF0IGxlYXN0LgotICAgICAgICByb290X2RpciA9IHJv
b3RfZGlyLnJlcGxhY2UoIlxcIiwgIlxcXFwiKQotCi0gICAgcnYgPSAiIiJbIGNhIF0KLWRlZmF1
bHRfY2EgPSBDQV9kZWZhdWx0Ci0KLVsgQ0FfZGVmYXVsdCBdCi1kaXIgPSAlKHJvb3RfZGlyKXMK
LWNlcnRzID0gJGRpcgotbmV3X2NlcnRzX2RpciA9ICRjZXJ0cwotY3JsX2RpciA9ICRkaXIlKHNl
cClzY3JsCi1kYXRhYmFzZSA9ICRkaXIlKHNlcClzaW5kZXgudHh0Ci1wcml2YXRlX2tleSA9ICRk
aXIlKHNlcClzY2FrZXkucGVtCi1jZXJ0aWZpY2F0ZSA9ICRkaXIlKHNlcClzY2FjZXJ0LnBlbQot
c2VyaWFsID0gJGRpciUoc2VwKXNzZXJpYWwKLWNybGRpciA9ICRkaXIlKHNlcClzY3JsCi1jcmxu
dW1iZXIgPSAkZGlyJShzZXApc2NybG51bWJlcgotY3JsID0gJGNybGRpciUoc2VwKXNjcmwucGVt
Ci1SQU5ERklMRSA9ICRkaXIlKHNlcClzcHJpdmF0ZSUoc2VwKXMucmFuZAoteDUwOV9leHRlbnNp
b25zID0gdXNyX2NlcnQKLW5hbWVfb3B0ICAgICAgICA9IGNhX2RlZmF1bHQKLWNlcnRfb3B0ICAg
ICAgICA9IGNhX2RlZmF1bHQKLWRlZmF1bHRfZGF5cyA9ICUoZHVyYXRpb24pZAotZGVmYXVsdF9j
cmxfZGF5cyA9ICUoZHVyYXRpb24pZAotZGVmYXVsdF9tZCA9IHNoYTI1NgotcHJlc2VydmUgPSBu
bwotcG9saWN5ID0gcG9saWN5X2FueXRoaW5nCi1jb3B5X2V4dGVuc2lvbnMgPSBjb3B5Ci0KLVsg
cG9saWN5X2FueXRoaW5nIF0KLWNvdW50cnlOYW1lID0gb3B0aW9uYWwKLXN0YXRlT3JQcm92aW5j
ZU5hbWUgPSBvcHRpb25hbAotbG9jYWxpdHlOYW1lID0gb3B0aW9uYWwKLW9yZ2FuaXphdGlvbk5h
bWUgPSBvcHRpb25hbAotb3JnYW5pemF0aW9uYWxVbml0TmFtZSA9IG9wdGlvbmFsCi1jb21tb25O
YW1lID0gc3VwcGxpZWQKLWVtYWlsQWRkcmVzcyA9IG9wdGlvbmFsCi0KLVsgcmVxIF0KLWRlZmF1
bHRfYml0cyA9IDIwNDgKLWRlZmF1bHRfa2V5ZmlsZSAgPSBwcml2a2V5LnBlbQotZGlzdGluZ3Vp
c2hlZF9uYW1lID0gcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZQotYXR0cmlidXRlcyA9IHJlcV9hdHRy
aWJ1dGVzCi14NTA5X2V4dGVuc2lvbnMgPSB2M19jYQotCi0jIFBhc3N3b3JkcyBmb3IgcHJpdmF0
ZSBrZXlzIGlmIG5vdCBwcmVzZW50IHRoZXkgd2lsbCBiZSBwcm9tcHRlZCBmb3IKLSMgaW5wdXRf
cGFzc3dvcmQgPSBzZWNyZXQKLSMgb3V0cHV0X3Bhc3N3b3JkID0gc2VjcmV0Ci1zdHJpbmdfbWFz
ayA9IHV0Zjhvbmx5Ci1yZXFfZXh0ZW5zaW9ucyA9IHYzX3JlcQotCi1bIHJlcV9kaXN0aW5ndWlz
aGVkX25hbWUgXQotY291bnRyeU5hbWUgPSBDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpCi1j
b3VudHJ5TmFtZV9kZWZhdWx0ID0gQVUKLWNvdW50cnlOYW1lX21pbiA9IDIKLWNvdW50cnlOYW1l
X21heCA9IDIKLXN0YXRlT3JQcm92aW5jZU5hbWUgPSBTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChm
dWxsIG5hbWUpCi1zdGF0ZU9yUHJvdmluY2VOYW1lX2RlZmF1bHQgPQotbG9jYWxpdHlOYW1lID0g
TG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpCi0wLm9yZ2FuaXphdGlvbk5hbWUgPSBPcmdhbml6YXRp
b24gTmFtZQotMC5vcmdhbml6YXRpb25OYW1lX2RlZmF1bHQgPSBXZWIgUGxhdGZvcm0gVGVzdHMK
LW9yZ2FuaXphdGlvbmFsVW5pdE5hbWUgPSBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBz
ZWN0aW9uKQotI29yZ2FuaXphdGlvbmFsVW5pdE5hbWVfZGVmYXVsdCA9Ci1jb21tb25OYW1lID0g
Q29tbW9uIE5hbWUgKGUuZy4gc2VydmVyIEZRRE4gb3IgWU9VUiBuYW1lKQotY29tbW9uTmFtZV9t
YXggPSA2NAotZW1haWxBZGRyZXNzID0gRW1haWwgQWRkcmVzcwotZW1haWxBZGRyZXNzX21heCA9
IDY0Ci0KLVsgcmVxX2F0dHJpYnV0ZXMgXQotCi1bIHVzcl9jZXJ0IF0KLWJhc2ljQ29uc3RyYWlu
dHM9Q0E6ZmFsc2UKLXN1YmplY3RLZXlJZGVudGlmaWVyPWhhc2gKLWF1dGhvcml0eUtleUlkZW50
aWZpZXI9a2V5aWQsaXNzdWVyCi0KLVsgdjNfcmVxIF0KLWJhc2ljQ29uc3RyYWludHMgPSBDQTpG
QUxTRQota2V5VXNhZ2UgPSBub25SZXB1ZGlhdGlvbiwgZGlnaXRhbFNpZ25hdHVyZSwga2V5RW5j
aXBoZXJtZW50Ci1leHRlbmRlZEtleVVzYWdlID0gc2VydmVyQXV0aAotJShzYW5fbGluZSlzCi0K
LVsgdjNfY2EgXQotYmFzaWNDb25zdHJhaW50cyA9IENBOnRydWUKLXN1YmplY3RLZXlJZGVudGlm
aWVyPWhhc2gKLWF1dGhvcml0eUtleUlkZW50aWZpZXI9a2V5aWQ6YWx3YXlzLGlzc3VlcjphbHdh
eXMKLWtleVVzYWdlID0ga2V5Q2VydFNpZ24KLSIiIiAlIHsicm9vdF9kaXIiOiByb290X2RpciwK
LSAgICAgICAic2FuX2xpbmUiOiBzYW5fbGluZSwKLSAgICAgICAiZHVyYXRpb24iOiBkdXJhdGlv
biwKLSAgICAgICAic2VwIjogb3MucGF0aC5zZXAucmVwbGFjZSgiXFwiLCAiXFxcXCIpfQotCi0g
ICAgcmV0dXJuIHJ2Ci0KLWNsYXNzIE9wZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgotICAgIHNz
bF9lbmFibGVkID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgb3BlbnNz
bF9iaW5hcnk9Im9wZW5zc2wiLCBiYXNlX3BhdGg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgcGFz
c3dvcmQ9IndlYi1wbGF0Zm9ybS10ZXN0cyIsIGZvcmNlX3JlZ2VuZXJhdGU9RmFsc2UsCi0gICAg
ICAgICAgICAgICAgIGR1cmF0aW9uPTMwLCBiYXNlX2NvbmZfcGF0aD1Ob25lKToKLSAgICAgICAg
IiIiU1NMIGVudmlyb25tZW50IHRoYXQgY3JlYXRlcyBhIGxvY2FsIENBIGFuZCBob3N0IGNlcnRp
ZmljYXRlIHVzaW5nIE9wZW5TU0wuCi0KLSAgICAgICAgQnkgZGVmYXVsdCB0aGlzIHdpbGwgbG9v
ayBpbiBiYXNlX3BhdGggZm9yIGV4aXN0aW5nIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBzdGlsbAot
ICAgICAgICB2YWxpZCBhbmQgb25seSBjcmVhdGUgbmV3IGNlcnRpZmljYXRlcyBpZiB0aGVyZSBh
cmVuJ3QgYW55LiBUaGlzIGJlaGF2aW91ciBjYW4KLSAgICAgICAgYmUgYWRqdXN0ZWQgdXNpbmcg
dGhlIGZvcmNlX3JlZ2VuZXJhdGUgb3B0aW9uLgotCi0gICAgICAgIDpwYXJhbSBsb2dnZXI6IGEg
c3RkbGliIGxvZ2dpbmcgY29tcGF0aWJsZSBsb2dnZXIgb3IgbW96bG9nIHN0cnVjdHVyZWQgbG9n
Z2VyCi0gICAgICAgIDpwYXJhbSBvcGVuc3NsX2JpbmFyeTogUGF0aCB0byB0aGUgT3BlblNTTCBi
aW5hcnkKLSAgICAgICAgOnBhcmFtIGJhc2VfcGF0aDogUGF0aCBpbiB3aGljaCBjZXJ0aWZpY2F0
ZXMgd2lsbCBiZSBzdG9yZWQuIElmIE5vbmUsIGEgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQgYW5kIHJlbW92ZWQgd2hlbiB0aGUgc2Vy
dmVyIHNodXRzIGRvd24KLSAgICAgICAgOnBhcmFtIHBhc3N3b3JkOiBQYXNzd29yZCB0byB1c2UK
LSAgICAgICAgOnBhcmFtIGZvcmNlX3JlZ2VuZXJhdGU6IEFsd2F5cyBjcmVhdGUgYSBuZXcgY2Vy
dGlmaWNhdGUgZXZlbiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0gICAgICAgICIiIgotICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotCi0gICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gRmFsc2UK
LSAgICAgICAgaWYgYmFzZV9wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBiYXNlX3BhdGggPSB0
ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gVHJ1ZQotCi0g
ICAgICAgIHNlbGYuYmFzZV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKGJhc2VfcGF0aCkKLSAgICAg
ICAgc2VsZi5wYXNzd29yZCA9IHBhc3N3b3JkCi0gICAgICAgIHNlbGYuZm9yY2VfcmVnZW5lcmF0
ZSA9IGZvcmNlX3JlZ2VuZXJhdGUKLSAgICAgICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0g
ICAgICAgIHNlbGYuYmFzZV9jb25mX3BhdGggPSBiYXNlX2NvbmZfcGF0aAotCi0gICAgICAgIHNl
bGYucGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5iaW5hcnkgPSBvcGVuc3NsX2JpbmFyeQotICAg
ICAgICBzZWxmLm9wZW5zc2wgPSBOb25lCi0KLSAgICAgICAgc2VsZi5fY2FfY2VydF9wYXRoID0g
Tm9uZQotICAgICAgICBzZWxmLl9jYV9rZXlfcGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5ob3N0
X2NlcnRpZmljYXRlcyA9IHt9Ci0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5iYXNlX3BhdGgpOgotICAgICAgICAgICAgb3MubWFr
ZWRpcnMoc2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAgcGF0aCA9IGZ1bmN0b29scy5wYXJ0aWFs
KG9zLnBhdGguam9pbiwgc2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAgd2l0aCBvcGVuKHBhdGgo
ImluZGV4LnR4dCIpLCAidyIpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICB3aXRoIG9wZW4o
cGF0aCgic2VyaWFsIiksICJ3IikgYXMgZjoKLSAgICAgICAgICAgIHNlcmlhbCA9ICIleCIgJSBy
YW5kb20ucmFuZGludCgwLCAxMDAwMDAwKQotICAgICAgICAgICAgaWYgbGVuKHNlcmlhbCkgJSAy
OgotICAgICAgICAgICAgICAgIHNlcmlhbCA9ICIwIiArIHNlcmlhbAotICAgICAgICAgICAgZi53
cml0ZShzZXJpYWwpCi0KLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgICAgIHJldHVy
biBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAg
ICAgaWYgc2VsZi50ZW1wb3Jhcnk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuYmFz
ZV9wYXRoKQotCi0gICAgZGVmIF9jb25maWdfb3BlbnNzbChzZWxmLCBob3N0cyk6Ci0gICAgICAg
IGNvbmZfcGF0aCA9IHNlbGYucGF0aCgib3BlbnNzbC5jZmciKQotICAgICAgICByZXR1cm4gT3Bl
blNTTChzZWxmLmxvZ2dlciwgc2VsZi5iaW5hcnksIHNlbGYuYmFzZV9wYXRoLCBjb25mX3BhdGgs
IGhvc3RzLAotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1cmF0aW9uLCBzZWxmLmJhc2Vf
Y29uZl9wYXRoKQotCi0gICAgZGVmIGNhX2NlcnRfcGF0aChzZWxmKToKLSAgICAgICAgIiIiR2V0
IHRoZSBwYXRoIHRvIHRoZSBDQSBjZXJ0aWZpY2F0ZSBmaWxlLCBnZW5lcmF0aW5nIGEKLSAgICAg
ICAgbmV3IG9uZSBpZiBuZWVkZWQiIiIKLSAgICAgICAgaWYgc2VsZi5fY2FfY2VydF9wYXRoIGlz
IE5vbmUgYW5kIG5vdCBzZWxmLmZvcmNlX3JlZ2VuZXJhdGU6Ci0gICAgICAgICAgICBzZWxmLl9s
b2FkX2NhX2NlcnQoKQotICAgICAgICBpZiBzZWxmLl9jYV9jZXJ0X3BhdGggaXMgTm9uZToKLSAg
ICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhX2Nl
cnRfcGF0aAotCi0gICAgZGVmIF9sb2FkX2NhX2NlcnQoc2VsZik6Ci0gICAgICAgIGtleV9wYXRo
ID0gc2VsZi5wYXRoKCJjYWtleS5wZW0iKQotICAgICAgICBjZXJ0X3BhdGggPSBzZWxmLnBhdGgo
ImNhY2VydC5wZW0iKQotCi0gICAgICAgIGlmIHNlbGYuY2hlY2tfa2V5X2NlcnQoa2V5X3BhdGgs
IGNlcnRfcGF0aCwgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJVc2luZyBl
eGlzdGluZyBDQSBjZXJ0IikKLSAgICAgICAgICAgIHNlbGYuX2NhX2tleV9wYXRoLCBzZWxmLl9j
YV9jZXJ0X3BhdGggPSBrZXlfcGF0aCwgY2VydF9wYXRoCi0KLSAgICBkZWYgY2hlY2tfa2V5X2Nl
cnQoc2VsZiwga2V5X3BhdGgsIGNlcnRfcGF0aCwgaG9zdHMpOgotICAgICAgICAiIiJDaGVjayB0
aGF0IGEga2V5IGFuZCBjZXJ0IGZpbGUgZXhpc3QgYW5kIGFyZSB2YWxpZCIiIgotICAgICAgICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoa2V5X3BhdGgpIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhjZXJ0
X3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgd2l0aCBzZWxmLl9j
b25maWdfb3BlbnNzbChob3N0cykgYXMgb3BlbnNzbDoKLSAgICAgICAgICAgIGVuZF9kYXRlX3N0
ciA9IG9wZW5zc2woIng1MDkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
LW5vb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lbmRkYXRlIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1pbiIsIGNlcnRfcGF0aCkuc3Bs
aXQoIj0iLCAxKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAjIE5vdCBzdXJlIGlmIHRoaXMgd29y
a3MgaW4gb3RoZXIgbG9jYWxlcwotICAgICAgICAgICAgZW5kX2RhdGUgPSBkYXRldGltZS5zdHJw
dGltZShlbmRfZGF0ZV9zdHIsICIlYiAlZCAlSDolTTolUyAlWSAlWiIpCi0gICAgICAgICAgICB0
aW1lX2J1ZmZlciA9IHRpbWVkZWx0YSgqKkNFUlRfRVhQSVJZX0JVRkZFUikKLSAgICAgICAgICAg
ICMgQmVjYXVzZSBgc3RycHRpbWVgIGRvZXMgbm90IGFjY291bnQgZm9yIHRpbWUgem9uZSBvZmZz
ZXRzLCBpdCBpcwotICAgICAgICAgICAgIyBhbHdheXMgaW4gdGVybXMgb2YgVVRDLCBzbyB0aGUg
Y3VycmVudCB0aW1lIHNob3VsZCBiZSBjYWxjdWxhdGVkCi0gICAgICAgICAgICAjIGFjY29yZGlu
Z2x5LgotICAgICAgICAgICAgaWYgZW5kX2RhdGUgPCBkYXRldGltZS51dGNub3coKSArIHRpbWVf
YnVmZmVyOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICNUT0RPOiBj
aGVjayB0aGUga2V5IGFjdHVhbGx5IHNpZ25lZCB0aGUgY2VydC4KLSAgICAgICAgcmV0dXJuIFRy
dWUKLQotICAgIGRlZiBfZ2VuZXJhdGVfY2Eoc2VsZik6Ci0gICAgICAgIHBhdGggPSBzZWxmLnBh
dGgKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2VuZXJhdGluZyBuZXcgQ0EgaW4gJXMiICUg
c2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAga2V5X3BhdGggPSBwYXRoKCJjYWtleS5wZW0iKQot
ICAgICAgICByZXFfcGF0aCA9IHBhdGgoImNhcmVxLnBlbSIpCi0gICAgICAgIGNlcnRfcGF0aCA9
IHBhdGgoImNhY2VydC5wZW0iKQotCi0gICAgICAgIHdpdGggc2VsZi5fY29uZmlnX29wZW5zc2wo
Tm9uZSkgYXMgb3BlbnNzbDoKLSAgICAgICAgICAgIG9wZW5zc2woInJlcSIsCi0gICAgICAgICAg
ICAgICAgICAgICItYmF0Y2giLAotICAgICAgICAgICAgICAgICAgICAiLW5ldyIsCi0gICAgICAg
ICAgICAgICAgICAgICItbmV3a2V5IiwgInJzYToyMDQ4IiwKLSAgICAgICAgICAgICAgICAgICAg
Ii1rZXlvdXQiLCBrZXlfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgIi1vdXQiLCByZXFfcGF0
aCwKLSAgICAgICAgICAgICAgICAgICAgIi1zdWJqIiwgbWFrZV9zdWJqZWN0KCJ3ZWItcGxhdGZv
cm0tdGVzdHMiKSwKLSAgICAgICAgICAgICAgICAgICAgIi1wYXNzb3V0IiwgInBhc3M6JXMiICUg
c2VsZi5wYXNzd29yZCkKLQotICAgICAgICAgICAgb3BlbnNzbCgiY2EiLAotICAgICAgICAgICAg
ICAgICAgICAiLWJhdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgIi1jcmVhdGVfc2VyaWFsIiwK
LSAgICAgICAgICAgICAgICAgICAgIi1rZXlmaWxlIiwga2V5X3BhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICItcGFzc2luIiwgInBhc3M6JXMiICUgc2VsZi5wYXNzd29yZCwKLSAgICAgICAgICAg
ICAgICAgICAgIi1zZWxmc2lnbiIsCi0gICAgICAgICAgICAgICAgICAgICItZXh0ZW5zaW9ucyIs
ICJ2M19jYSIsCi0gICAgICAgICAgICAgICAgICAgICItaW4iLCByZXFfcGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgIi1vdXQiLCBjZXJ0X3BhdGgpCi0KLSAgICAgICAgb3MudW5saW5rKHJlcV9w
YXRoKQotCi0gICAgICAgIHNlbGYuX2NhX2tleV9wYXRoLCBzZWxmLl9jYV9jZXJ0X3BhdGggPSBr
ZXlfcGF0aCwgY2VydF9wYXRoCi0KLSAgICBkZWYgaG9zdF9jZXJ0X3BhdGgoc2VsZiwgaG9zdHMp
OgotICAgICAgICAiIiJHZXQgYSB0dXBsZSBvZiAocHJpdmF0ZSBrZXkgcGF0aCwgY2VydGlmaWNh
dGUgcGF0aCkgZm9yIGEgaG9zdCwKLSAgICAgICAgZ2VuZXJhdGluZyBuZXcgb25lcyBpZiBuZWNl
c3NhcnkuCi0KLSAgICAgICAgaG9zdHMgbXVzdCBiZSBhIGxpc3Qgb2YgYWxsIGhvc3RzIHRvIGFw
cGVhciBvbiB0aGUgY2VydGlmaWNhdGUsIHdpdGgKLSAgICAgICAgdGhlIHByaW1hcnkgaG9zdG5h
bWUgZmlyc3QuIiIiCi0gICAgICAgIGhvc3RzID0gdHVwbGUoaG9zdHMpCi0gICAgICAgIGlmIGhv
c3RzIG5vdCBpbiBzZWxmLmhvc3RfY2VydGlmaWNhdGVzOgotICAgICAgICAgICAgaWYgbm90IHNl
bGYuZm9yY2VfcmVnZW5lcmF0ZToKLSAgICAgICAgICAgICAgICBrZXlfY2VydCA9IHNlbGYuX2xv
YWRfaG9zdF9jZXJ0KGhvc3RzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBr
ZXlfY2VydCA9IE5vbmUKLSAgICAgICAgICAgIGlmIGtleV9jZXJ0IGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAga2V5LCBjZXJ0ID0gc2VsZi5fZ2VuZXJhdGVfaG9zdF9jZXJ0KGhvc3RzKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrZXksIGNlcnQgPSBrZXlfY2VydAotICAg
ICAgICAgICAgc2VsZi5ob3N0X2NlcnRpZmljYXRlc1tob3N0c10gPSBrZXksIGNlcnQKLQotICAg
ICAgICByZXR1cm4gc2VsZi5ob3N0X2NlcnRpZmljYXRlc1tob3N0c10KLQotICAgIGRlZiBfbG9h
ZF9ob3N0X2NlcnQoc2VsZiwgaG9zdHMpOgotICAgICAgICBob3N0ID0gaG9zdHNbMF0KLSAgICAg
ICAga2V5X3BhdGggPSBzZWxmLnBhdGgoIiVzLmtleSIgJSBob3N0KQotICAgICAgICBjZXJ0X3Bh
dGggPSBzZWxmLnBhdGgoIiVzLnBlbSIgJSBob3N0KQotCi0gICAgICAgICMgVE9ETzogY2hlY2sg
dGhhdCB0aGlzIGNlcnQgd2FzIHNpZ25lZCBieSB0aGUgQ0EgY2VydAotICAgICAgICBpZiBzZWxm
LmNoZWNrX2tleV9jZXJ0KGtleV9wYXRoLCBjZXJ0X3BhdGgsIGhvc3RzKToKLSAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oIlVzaW5nIGV4aXN0aW5nIGhvc3QgY2VydCIpCi0gICAgICAgICAg
ICByZXR1cm4ga2V5X3BhdGgsIGNlcnRfcGF0aAotCi0gICAgZGVmIF9nZW5lcmF0ZV9ob3N0X2Nl
cnQoc2VsZiwgaG9zdHMpOgotICAgICAgICBob3N0ID0gaG9zdHNbMF0KLSAgICAgICAgaWYgc2Vs
Zi5fY2Ffa2V5X3BhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkK
LSAgICAgICAgY2Ffa2V5X3BhdGggPSBzZWxmLl9jYV9rZXlfcGF0aAotCi0gICAgICAgIGFzc2Vy
dCBvcy5wYXRoLmV4aXN0cyhjYV9rZXlfcGF0aCkKLQotICAgICAgICBwYXRoID0gc2VsZi5wYXRo
Ci0KLSAgICAgICAgcmVxX3BhdGggPSBwYXRoKCJ3cHQucmVxIikKLSAgICAgICAgY2VydF9wYXRo
ID0gcGF0aCgiJXMucGVtIiAlIGhvc3QpCi0gICAgICAgIGtleV9wYXRoID0gcGF0aCgiJXMua2V5
IiAlIGhvc3QpCi0KLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2VuZXJhdGluZyBuZXcgaG9z
dCBjZXJ0IikKLQotICAgICAgICB3aXRoIHNlbGYuX2NvbmZpZ19vcGVuc3NsKGhvc3RzKSBhcyBv
cGVuc3NsOgotICAgICAgICAgICAgb3BlbnNzbCgicmVxIiwKLSAgICAgICAgICAgICAgICAgICAg
Ii1iYXRjaCIsCi0gICAgICAgICAgICAgICAgICAgICItbmV3a2V5IiwgInJzYToyMDQ4IiwKLSAg
ICAgICAgICAgICAgICAgICAgIi1rZXlvdXQiLCBrZXlfcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgIi1pbiIsIGNhX2tleV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLW5vZGVzIiwKLSAg
ICAgICAgICAgICAgICAgICAgIi1vdXQiLCByZXFfcGF0aCkKLQotICAgICAgICAgICAgb3BlbnNz
bCgiY2EiLAotICAgICAgICAgICAgICAgICAgICAiLWJhdGNoIiwKLSAgICAgICAgICAgICAgICAg
ICAgIi1pbiIsIHJlcV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLXBhc3NpbiIsICJwYXNz
OiVzIiAlIHNlbGYucGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICItc3ViaiIsIG1ha2Vf
c3ViamVjdChob3N0KSwKLSAgICAgICAgICAgICAgICAgICAgIi1vdXQiLCBjZXJ0X3BhdGgpCi0K
LSAgICAgICAgb3MudW5saW5rKHJlcV9wYXRoKQotCi0gICAgICAgIHJldHVybiBrZXlfcGF0aCwg
Y2VydF9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvcHJlZ2VuZXJhdGVk
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzQ4N2RmM2FkZDAuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAg
QEAKLWNsYXNzIFByZWdlbmVyYXRlZFNTTEVudmlyb25tZW50KG9iamVjdCk6Ci0gICAgIiIiU1NM
IGVudmlyb25tZW50IHRvIHVzZSB3aXRoIGV4aXN0aW5nIGtleS9jZXJ0aWZpY2F0ZSBmaWxlcwot
ICAgIGUuZy4gd2hlbiBydW5uaW5nIG9uIGEgc2VydmVyIHdpdGggYSBwdWJsaWMgZG9tYWluIG5h
bWUKLSAgICAiIiIKLSAgICBzc2xfZW5hYmxlZCA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIGhvc3Rfa2V5X3BhdGgsIGhvc3RfY2VydF9wYXRoLAotICAgICAgICAgICAg
ICAgICBjYV9jZXJ0X3BhdGg9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2NhX2NlcnRfcGF0aCA9IGNh
X2NlcnRfcGF0aAotICAgICAgICBzZWxmLl9ob3N0X2tleV9wYXRoID0gaG9zdF9rZXlfcGF0aAot
ICAgICAgICBzZWxmLl9ob3N0X2NlcnRfcGF0aCA9IGhvc3RfY2VydF9wYXRoCi0KLSAgICBkZWYg
X19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9f
KHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBob3N0X2Nl
cnRfcGF0aChzZWxmLCBob3N0cyk6Ci0gICAgICAgICIiIlJldHVybiB0aGUga2V5IGFuZCBjZXJ0
aWZpY2F0ZSBwYXRocyBmb3IgdGhlIGhvc3QiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3Rf
a2V5X3BhdGgsIHNlbGYuX2hvc3RfY2VydF9wYXRoCi0KLSAgICBkZWYgY2FfY2VydF9wYXRoKHNl
bGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNlcnRpZmljYXRlIHBhdGggb2YgdGhlIENBIHRo
YXQgc2lnbmVkIHRoZQotICAgICAgICBob3N0IGNlcnRpZmljYXRlcywgb3IgTm9uZSBpZiB0aGF0
IGlzbid0IGtub3duIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9jYV9jZXJ0X3BhdGgKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c3NsdXRpbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4NmMwMTc5Zjg3NGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9fX2lu
aXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc3NsdXRpbHMvYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvcHJlZ2VuZXJhdGVkLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmFwcHZleW9yLnltbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uYXBw
dmV5b3IueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDBlZGVl
MTg3YWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5hcHB2ZXlvci55bWwKQEAg
LTAsMCArMSwxMiBAQAorZW52aXJvbm1lbnQ6CisgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBj
cDM0LSoKKyAgQ0lCV19URVNUX0NPTU1BTkQ6IHB5dGhvbiAtbSB1bml0dGVzdCBkaXNjb3ZlciAt
cyB7cHJvamVjdH0vdGVzdHMKK2luc3RhbGw6CisgIC0gY21kOiBDOlxQeXRob24zNi14NjRccHl0
aG9uLmV4ZSAtbSBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKK2J1aWxkX3NjcmlwdDoKKyAgLSBj
bWQ6IEM6XFB5dGhvbjM2LXg2NFxweXRob24uZXhlIC1tIGNpYnVpbGR3aGVlbCAtLW91dHB1dC1k
aXIgd2hlZWxob3VzZQorICAtIHBzOiA+LQorICAgICAgaWYgKCRlbnY6QVBQVkVZT1JfUkVQT19U
QUcgLWVxICJ0cnVlIikgeworICAgICAgICBJbnZva2UtRXhwcmVzc2lvbiAicHl0aG9uIC1tIHBp
cCBpbnN0YWxsIHR3aW5lIgorICAgICAgICBJbnZva2UtRXhwcmVzc2lvbiAicHl0aG9uIC1tIHR3
aW5lIHVwbG9hZCAtLXNraXAtZXhpc3Rpbmcgd2hlZWxob3VzZS8qLndobCIKKyAgICAgIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0YXR0cmlidXRlcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0
YXR0cmlidXRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBiNTAz
MGMwZDI5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0YXR0cmlidXRlcwpA
QCAtMCwwICsxIEBACisqLmJpbiAgYmluYXJ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdp
dGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3Jr
Zmxvd3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYzBh
ZTk5YjIwZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0cy55bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5naXRpZ25vcmUKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xN2FmMDBlNzI3ZWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDEwIEBACisqLmVnZy1p
bmZvCisqLnB5YworKi5zbworLmNvdmVyYWdlCisuZWdncworLm15cHlfY2FjaGUKKy52c2NvZGUK
Ky9idWlsZAorL2Rpc3QKKy9kb2NzL19idWlsZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgwZTc5OTkwNDNkLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
NCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9NYWtlZmlsZQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9kb2NzL2FzeW5jaW8ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvY29uZi5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL2Rlc2lnbi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL3F1aWMucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9j
cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2ODIwZGYw
ZGY4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVt
cGxhdGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZiYjlkMzY0ZDdj
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYmE2ZDEyNGNiYi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9SRUFETUUu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvZG9xX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kb3Ffc2VydmVyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9odHRwM19zZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cHhfY2xpZW50
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvc2lkdWNrX2NsaWVudC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVt
ZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZTIyZTc0YmQyMS4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWly
ZW1lbnRzL2RvYy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNiYTlhOWQ0MDQ2My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvZmV0Y2gtdmVuZG9yCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NjcmlwdHMvZmV0Y2gtdmVuZG9yLmpzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2FzeW5jaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhiODM0NWUwY2U4Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9hc3luY2lvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYXN5bmNpby9wcm90b2NvbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lv
L3NlcnZlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5p
dF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5CmluZGV4IGE2
ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvaDAvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19f
aW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRo
b24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzNjFlYTQwNTUxLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2gwL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rpb24u
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1
YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gz
L19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5w
eQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNl
YXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiMzYzZTliNjA4MC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2lu
aXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9oMy9leGNlcHRpb25zLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvcXVpYy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19faW5p
dF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxl
cy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGI4
YzI2ZmE0YzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvY29uZmlndXJhdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9j
cnlwdG8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9ldmVudHMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9sb2dnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy9wYWNrZXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNr
ZXRfYnVpbGRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL3N0cmVhbS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDRiMGNlZTQ2NjEuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyNSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5jCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL19idWZmZXIucHlpCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlw
dG8uYwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9hYm91dC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9idWZmZXIu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcHkudHlwZWQKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvdGxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5l
NjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9y
IG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTBmMTNlMWIyYzMuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSw1NyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9jbGllbnQuYmluCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL2luaXRpYWxfc2VydmVyLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9weWNhY2Vy
dC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Nob3J0X2hlYWRlci5iaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnQucGVtCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3NzbF9rZXkucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfYnVmZmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2NyeXB0by5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2gwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXQu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90ZXN0X3Jhbmdlc2V0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVj
b3ZlcnkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X3N0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUuYmluCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rsc19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19j
bGllbnRfaGVsbG8uYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0
aF9hbHBuLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNr
LmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfc25pLmJpbgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnMuYmluCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG4uYmluCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vh
cmx5X2RhdGEuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4KLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3V0aWxzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3RpYXRpb24u
YmluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNGVjOTVj
OWExNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNF
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0b21pY3dyaXRlcy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvLmdpdGln
bm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJiMmQzMTI4NzUz
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzLy5naXRpZ25vcmUKQEAgLTAs
MCArMSw5IEBACisudG94CisqLnB5YworKi5weW8KK19fcHljYWNoZV9fCisqLmVnZy1pbmZvCitk
b2NzL19idWlsZAorYnVpbGQKK2Rpc3QKKy5jYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3
cml0ZXMvLnRyYXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy8udHJhdmlzLnltbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU5Nzc5MDE4YWQzMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMzUgQEAK
K3N1ZG86IGZhbHNlCitvczogbGludXgKK2xhbmd1YWdlOiBweXRob24KKworbWF0cml4OgorICAg
IGluY2x1ZGU6CisgICAgICAgIC0gb3M6IG9zeAorICAgICAgICAgIGxhbmd1YWdlOiBnZW5lcmlj
CisgICAgICAgICAgZW52OiBUT1hFTlZfU1VGRklYPXRlc3QKKworcHl0aG9uOgorICAgIC0gIjIu
NiIKKyAgICAtICIyLjciCisgICAgLSAicHlweSIKKyAgICAtICIzLjMiCisgICAgLSAiMy40Igor
CitpbnN0YWxsOgorICAgIC0gIyBUaGUgT1MgWCBWTSBkb2Vzbid0IGhhdmUgYW55IFB5dGhvbiBz
dXBwb3J0IGF0IGFsbAorICAgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RyYXZpcy1jaS90
cmF2aXMtY2kvaXNzdWVzLzIzMTIKKyAgICAgIGlmIFsgIiRUUkFWSVNfT1NfTkFNRSIgPSAib3N4
IiBdOyB0aGVuCisgICAgICAgICAgYnJldyB1cGRhdGU7CisgICAgICAgICAgYnJldyBpbnN0YWxs
IHB5dGhvbjM7CisgICAgICAgICAgdmlydHVhbGVudiAtcCBweXRob24zICRIT01FL29zeC1weTM7
CisgICAgICAgICAgLiAkSE9NRS9vc3gtcHkzL2Jpbi9hY3RpdmF0ZTsKKyAgICAgICAgICBleHBv
cnQgVFJBVklTX1BZVEhPTl9WRVJTSU9OPSIkKHB5dGhvbiAtLXZlcnNpb24gfCBjdXQgLWQgJyAn
IC1mIDIgfCBjdXQgLWQgLiAtZiAtMikiOworICAgICAgZmkKKyAgICAtIHBpcCBpbnN0YWxsIHRv
eAorCitzY3JpcHQ6CisgICAgLSBleHBvcnQgVE9YX1BZPSIkKGVjaG8gcHkkVFJBVklTX1BZVEhP
Tl9WRVJTSU9OIHwgdHIgLWQgLiB8IHNlZCAtZSAncy9weXB5cHkvcHlweS8nKSIKKyAgICAtIHRv
eCAtZSAkVE9YX1BZLXRlc3QKKyAgICAtIGlmIFsgIiRUUkFWSVNfUFlUSE9OX1ZFUlNJT04iID0g
IjIuNyIgXSB8fCBbICIkVFJBVklTX1BZVEhPTl9WRVJTSU9OIiA9ICIuMy41IiBdOyB0aGVuCisg
ICAgICAgICAgdG94IC1lICRUT1hfUFktc3R5bGVjaGVjazsKKyAgICAgIGZpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0b21pY3dyaXRlcy9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
b21pY3dyaXRlcy9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdlMzc2MmFhNTZjNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWlj
d3JpdGVzL2F0b21pY3dyaXRlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL2F0b21pY3dyaXRlcy9fX2luaXRf
Xy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXRvbWljd3JpdGVzL2RvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGZiY2NiYjJkNGRiZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWlj
d3JpdGVzL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9kb2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3
cml0ZXMvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy9pbmRleC5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0b21pY3dyaXRlcy9kb2NzL21ha2UuYmF0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dy
aXRlcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGEwZmMwNzMzNWUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0b21pY3dyaXRlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL0NPTlRSSUJVVElORy5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0b21pY3dyaXRlcy9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvTUFOSUZFU1Qu
aW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0b21pY3dyaXRlcy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL1JFQURN
RS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9hcHB2ZXlvci55bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRl
cy9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9zZXR1cC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3Jp
dGVzL3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDdhNzE4ZDg2NDcxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8u
Z2l0aHViL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy8uZ2l0aHViL0NPREVfT0ZfQ09ORFVDVC5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
Ly5naXRodWIvQ09OVFJJQlVUSU5HLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi9QVUxMX1JFUVVF
U1RfVEVNUExBVEUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGlnbm9yZSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjZjODk1ZWUxZGI3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGlnbm9yZQpA
QCAtMCwwICsxLDExIEBACisqLnB5YworKi5lZ2ctaW5mbworLmNhY2hlCisuY292ZXJhZ2UqCisu
aHlwb3RoZXNpcworLnB5dGVzdF9jYWNoZQorLnRveAorYnVpbGQKK2Rpc3QKK2RvY3MvX2J1aWxk
LworaHRtbGNvdgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8ucmVhZHRoZWRvY3MueW1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy8ucmVhZHRoZWRvY3MueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYTRiNmY0MzEwNjZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8ucmVh
ZHRoZWRvY3MueW1sCkBAIC0wLDAgKzEsNiBAQAorLS0tCitweXRob246CisgIHZlcnNpb246IDMK
KyAgcGlwX2luc3RhbGw6IHRydWUKKyAgZXh0cmFfcmVxdWlyZW1lbnRzOgorICAgIC0gZG9jcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdHRycy8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLnRyYXZpcy55
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43Yzk4YjIxYTYzN2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsNjkg
QEAKK2Rpc3Q6IHRydXN0eQorZ3JvdXA6IHRyYXZpc19sYXRlc3QKK3N1ZG86IGZhbHNlCitjYWNo
ZToKKyAgZGlyZWN0b3JpZXM6CisgICAgLSAkSE9NRS8uY2FjaGUvcGlwCisKK2xhbmd1YWdlOiBw
eXRob24KKworCittYXRyaXg6CisgIGZhc3RfZmluaXNoOiB0cnVlCisKKyAgaW5jbHVkZToKKyAg
ICAtIHB5dGhvbjogIjIuNyIKKyAgICAgIGVudjogVE9YRU5WPXB5MjcKKyAgICAtIHB5dGhvbjog
IjMuNCIKKyAgICAgIGVudjogVE9YRU5WPXB5MzQKKyAgICAtIHB5dGhvbjogIjMuNSIKKyAgICAg
IGVudjogVE9YRU5WPXB5MzUKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5W
PXB5MzYKKyAgICAtIHB5dGhvbjogInB5cHkiCisgICAgICBlbnY6IFRPWEVOVj1weXB5CisgICAg
LSBweXRob246ICJweXB5MyIKKyAgICAgIGVudjogVE9YRU5WPXB5cHkzCisKKyAgICAjIFByZXZl
bnQgYnJlYWthZ2UgYnkgYSBuZXcgcmVsZWFzZXMKKyAgICAtIHB5dGhvbjogIjMuNi1kZXYiCisg
ICAgICBlbnY6IFRPWEVOVj1weTM2CisgICAgLSBweXRob246ICIzLjctZGV2IgorICAgICAgZW52
OiBUT1hFTlY9cHkzNworCisgICAgIyBNZXRhCisgICAgLSBweXRob246ICIzLjYiCisgICAgICBl
bnY6IFRPWEVOVj1mbGFrZTgKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5W
PW1hbmlmZXN0CisgICAgLSBweXRob246ICIzLjYiCisgICAgICBlbnY6IFRPWEVOVj1kb2NzCisg
ICAgLSBweXRob246ICIzLjYiCisgICAgICBlbnY6IFRPWEVOVj1yZWFkbWUKKyAgICAtIHB5dGhv
bjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5WPWNoYW5nZWxvZworCisgIGFsbG93X2ZhaWx1cmVz
OgorICAgIC0gcHl0aG9uOiAiMy42LWRldiIKKyAgICAtIHB5dGhvbjogIjMuNy1kZXYiCisKKwor
aW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFsbCB0b3gKKworCitzY3JpcHQ6CisgIC0gdG94CisKKwor
YmVmb3JlX2luc3RhbGw6CisgIC0gcGlwIGluc3RhbGwgY29kZWNvdgorCisKK2FmdGVyX3N1Y2Nl
c3M6CisgIC0gdG94IC1lIGNvdmVyYWdlLXJlcG9ydAorICAtIGNvZGVjb3YKKworCitub3RpZmlj
YXRpb25zOgorICBlbWFpbDogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWly
ZW1lbnRzL3Byb2R1Y3Rpb24udHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8uZ2l0aWdub3Jl
CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3JlcXVpcmVt
ZW50cy9wcm9kdWN0aW9uLnR4dApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8uZ2l0
aWdub3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDlmZTE2MDFkMjY0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9jaGFuZ2Vsb2cuZC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMTc4LmNoYW5nZS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL2NoYW5nZWxvZy5kLzI5MC5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cu
ZC8zMDAuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzExLmNoYW5nZS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMyMS5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFu
Z2Vsb2cuZC8zMjIuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzIzLmNoYW5n
ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMyNi5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9jaGFuZ2Vsb2cuZC8zMzEuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzMy
LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMzNC5jaGFuZ2UucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMzYuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9n
LmQvMzM5LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzM0My5jaGFuZ2UucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNDkuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hh
bmdlbG9nLmQvMzU2LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzM2My5jaGFu
Z2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNjkuY2hhbmdlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvY2hhbmdlbG9nLmQvMzcwLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzk1
LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kL3Rvd25jcmllcl90ZW1wbGF0ZS5y
c3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9hdHRycy9kb2NzL19zdGF0aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk0YzAwMTQyMmJhZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
ZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL19zdGF0aWMvYXR0cnNfbG9nby5wbmcKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL2RvY3MvX3N0YXRpYy9hdHRyc19sb2dvLnN2ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjM0ZWM5YmU5NzIuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwz
MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L2RvY3MvYXBpLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9iYWNrd2FyZC1jb21wYXRpYmlsaXR5LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvZG9jcy9jaGFuZ2Vsb2cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2NvbmYu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL2RvY3MvY29udHJpYnV0aW5nLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9k
b2N1dGlscy5jb25mCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2V4YW1wbGVzLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
ZG9jcy9leHRlbmRpbmcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2dsb3NzYXJ5LnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvZG9jcy9oYXNoaW5nLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9ob3ctZG9lcy1pdC13b3Jr
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvZG9jcy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvaW5pdC5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL2RvY3MvbGljZW5zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3Mvb3ZlcnZp
ZXcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL3doeS5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
c3JjL2F0dHIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQxMmQxMjI0ZjUuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9zcmMvYXR0ci9fX2luaXRf
Xy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvX2NvbXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0
dHIvX2NvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvX2Z1bmNzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9zcmMvYXR0ci9fbWFrZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvY29udmVydGVycy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvc3JjL2F0dHIvZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIv
ZmlsdGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvdmFsaWRhdG9ycy5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvX19pbml0
X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy9fX2luaXRfXy5w
eQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNl
YXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDBjOGQ1M2FmMGZlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3N0cmF0ZWdpZXMucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzL3Rlc3RzL3Rlc3RfYW5ub3RhdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rl
c3RfY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X2NvbnZlcnRlcnMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL3Rlc3RzL3Rlc3RfZGFya19tYWdpYy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvdGVzdF9k
dW5kZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X2ZpbHRlcnMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
L3Rlc3RzL3Rlc3RfZnVuY3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfaW5pdF9zdWJjbGFz
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvdGVzdF9tYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90
ZXN0X3Nsb3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X3ZhbGlkYXRvcnMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL3Rlc3RzL3V0aWxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2NhYjkyMzYwNWNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvQVVUSE9SUy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL0NIQU5HRUxPRy5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL0xJ
Q0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9SRUFETUUucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9hdHRycy9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvcHlwcm9qZWN0LnRvbWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3RveC5p
bmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2M2FjMDJhMTE3Yi4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWlu
Zm8vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWluZm8vbm90LXppcC1zYWZlCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2Nl
cnRpZmkuZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2Nl
cnRpZmkvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU3ZGRhYjNjZDQyLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS9fX2luaXRf
Xy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpL19fbWFpbl9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2Nl
cnRpZmkvY2FjZXJ0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpL2NvcmUucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvY2VydGlmaS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRhMWZiZjc2YmMyLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL0xJQ0VOU0UKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRp
ZmkvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvUkVB
RE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvY2VydGlmaS9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvc2V0dXAucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvZW51bS9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9QS0ctSU5GTwppbmRl
eCA5ODkyN2M0ZDk5ZDkuLjYyMzE3MWUzOGY2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL1BLRy1J
TkZPCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZW51bS9QS0ctSU5GTwpAQCAtMSw2ICsxLDYgQEAKIE1ldGFkYXRhLVZl
cnNpb246IDEuMQogTmFtZTogZW51bTM0Ci1WZXJzaW9uOiAxLjEuNgorVmVyc2lvbjogMS4xLjEw
CiBTdW1tYXJ5OiBQeXRob24gMy40IEVudW0gYmFja3BvcnRlZCB0byAzLjMsIDMuMiwgMy4xLCAy
LjcsIDIuNiwgMi41LCBhbmQgMi40CiBIb21lLXBhZ2U6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9z
dG9uZWxlYWYvZW51bTM0CiBBdXRob3I6IEV0aGFuIEZ1cm1hbgpAQCAtNTcsNiArNTcsNCBAQCBD
bGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi41CiBDbGFzc2lm
aWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42CiBDbGFzc2lmaWVyOiBQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43CiBDbGFzc2lmaWVyOiBQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy4zCi1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMy40Ci1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogMy41CiBQcm92aWRlczogZW51bQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVt
L2VudW0vX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS9fX2luaXRfXy5weQppbmRleCBkNmZm
YjNhNDBmZWIuLjUxZjNjZjI0NzA2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vX19pbml0
X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vX19pbml0X18ucHkKQEAgLTQsNyArNCw3IEBAIGlt
cG9ydCBzeXMgYXMgX3N5cwogCiBfX2FsbF9fID0gWydFbnVtJywgJ0ludEVudW0nLCAndW5pcXVl
J10KIAotdmVyc2lvbiA9IDEsIDEsIDYKK3ZlcnNpb24gPSAxLCAxLCAxMAogCiBweXZlciA9IGZs
b2F0KCclcy4lcycgJSBfc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKQEAgLTE4Myw3ICsxODMsOCBA
QCBjbGFzcyBFbnVtTWV0YSh0eXBlKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRlbCBj
bGFzc2RpY3RbJ19vcmRlcl8nXQogICAgICAgICAgICAgaWYgcHl2ZXIgPCAzLjA6Ci0gICAgICAg
ICAgICAgICAgX29yZGVyXyA9IF9vcmRlcl8ucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQorICAg
ICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX29yZGVyXywgYmFzZXN0cmluZyk6CisgICAgICAg
ICAgICAgICAgICAgIF9vcmRlcl8gPSBfb3JkZXJfLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkK
ICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW25hbWUgZm9yIG5hbWUgaW4gbWVtYmVycyBpZiBu
YW1lIG5vdCBpbiBfb3JkZXJfXQogICAgICAgICAgICAgICAgIF9vcmRlcl8gKz0gYWxpYXNlcwog
CkBAIC00NjMsNyArNDY0LDcgQEAgY2xhc3MgRW51bU1ldGEodHlwZSk6CiAgICAgICAgICAgICBf
b3JkZXJfLmFwcGVuZChtZW1iZXJfbmFtZSkKICAgICAgICAgIyBvbmx5IHNldCBfb3JkZXJfIGlu
IGNsYXNzZGljdCBpZiBuYW1lL3ZhbHVlIHdhcyBub3QgZnJvbSBhIG1hcHBpbmcKICAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICBjbGFzc2Rp
Y3RbJ19vcmRlcl8nXSA9ICcgJy5qb2luKF9vcmRlcl8pCisgICAgICAgICAgICBjbGFzc2RpY3Rb
J19vcmRlcl8nXSA9IF9vcmRlcl8KICAgICAgICAgZW51bV9jbGFzcyA9IG1ldGFjbHMuX19uZXdf
XyhtZXRhY2xzLCBjbGFzc19uYW1lLCBiYXNlcywgY2xhc3NkaWN0KQogCiAgICAgICAgICMgVE9E
TzogcmVwbGFjZSB0aGUgZnJhbWUgaGFjayBpZiBhIGJsZXNzZWQgd2F5IHRvIGtub3cgdGhlIGNh
bGxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy9lbnVtLnBkZiBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51
bS9lbnVtL2RvYy9lbnVtLnBkZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMxMzgz
YTQ5NWU4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL2VudW0ucGRmCisr
KyAvZGV2L251bGwKQEAgLTEsNzM4ICswLDAgQEAKLSAgICAgICBlbnVtIC0tLSBzdXBwb3J0IGZv
ciBlbnVtZXJhdGlvbnMKLQotQW4gZW51bWVyYXRpb24gaXMgYSBzZXQgb2Ygc3ltYm9saWMgbmFt
ZXMgKG1lbWJlcnMpIGJvdW5kIHRvIHVuaXF1ZSwgY29uc3RhbnQgdmFsdWVzLiBXaXRoaW4gYW4K
LWVudW1lcmF0aW9uLCB0aGUgbWVtYmVycyBjYW4gYmUgY29tcGFyZWQgYnkgaWRlbnRpdHksIGFu
ZCB0aGUgZW51bWVyYXRpb24gaXRzZWxmIGNhbiBiZSBpdGVyYXRlZCBvdmVyLgotCi1Nb2R1bGUg
Q29udGVudHMKLQotVGhpcyBtb2R1bGUgZGVmaW5lcyB0d28gZW51bWVyYXRpb24gY2xhc3NlcyB0
aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUgc2V0cyBvZiBuYW1lcyBhbmQKLXZhbHVl
czogRW51bSBhbmQgSW50RW51bS4gSXQgYWxzbyBkZWZpbmVzIG9uZSBkZWNvcmF0b3IsIHVuaXF1
ZS4KLUVudW0KLUJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzLiBT
ZWUgc2VjdGlvbiBGdW5jdGlvbmFsIEFQSSBmb3IgYW4gYWx0ZXJuYXRlIGNvbnN0cnVjdGlvbgot
c3ludGF4LgotSW50RW51bQotQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25z
dGFudHMgdGhhdCBhcmUgYWxzbyBzdWJjbGFzc2VzIG9mIGludC4KLXVuaXF1ZQotRW51bSBjbGFz
cyBkZWNvcmF0b3IgdGhhdCBlbnN1cmVzIG9ubHkgb25lIG5hbWUgaXMgYm91bmQgdG8gYW55IG9u
ZSB2YWx1ZS4KLQotQ3JlYXRpbmcgYW4gRW51bQotCi1FbnVtZXJhdGlvbnMgYXJlIGNyZWF0ZWQg
dXNpbmcgdGhlIGNsYXNzIHN5bnRheCwgd2hpY2ggbWFrZXMgdGhlbSBlYXN5IHRvIHJlYWQgYW5k
IHdyaXRlLiBBbgotYWx0ZXJuYXRpdmUgY3JlYXRpb24gbWV0aG9kIGlzIGRlc2NyaWJlZCBpbiBG
dW5jdGlvbmFsIEFQSS4gVG8gZGVmaW5lIGFuIGVudW1lcmF0aW9uLCBzdWJjbGFzcyBFbnVtIGFz
Ci1mb2xsb3dzOgotCi0+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtCi0KLT4+PiBjbGFzcyBDb2xv
cihFbnVtKToKLQotLi4uICAgIHJlZCA9IDEKLQotLi4uICAgIGdyZWVuID0gMgotCi0uLi4gICAg
Ymx1ZSA9IDMKLQotTm90ZTogTm9tZW5jbGF0dXJlCi0KLSAgICAgICDigKIgVGhlIGNsYXNzIENv
bG9yIGlzIGFuIGVudW1lcmF0aW9uIChvciBlbnVtKQotCi0gICAgICAg4oCiIFRoZSBhdHRyaWJ1
dGVzIENvbG9yLnJlZCwgQ29sb3IuZ3JlZW4sIGV0Yy4sIGFyZSBlbnVtZXJhdGlvbiBtZW1iZXJz
IChvciBlbnVtCi0gICAgICAgIG1lbWJlcnMpLgotCi0gICAgICAg4oCiIFRoZSBlbnVtIG1lbWJl
cnMgaGF2ZSBuYW1lcyBhbmQgdmFsdWVzICh0aGUgbmFtZSBvZiBDb2xvci5yZWQgaXMgcmVkLCB0
aGUgdmFsdWUgb2YKLSAgICAgICAgQ29sb3IuYmx1ZSBpcyAzLCBldGMuKQotCi1Ob3RlOgotCi1F
dmVuIHRob3VnaCB3ZSB1c2UgdGhlIGNsYXNzIHN5bnRheCB0byBjcmVhdGUgRW51bXMsIEVudW1z
IGFyZSBub3Qgbm9ybWFsIFB5dGhvbiBjbGFzc2VzLiBTZWUKLUhvdyBhcmUgRW51bXMgZGlmZmVy
ZW50PyBmb3IgbW9yZSBkZXRhaWxzLgotCi1FbnVtZXJhdGlvbiBtZW1iZXJzIGhhdmUgaHVtYW4g
cmVhZGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uczoKLQotPj4+IHByaW50KENvbG9yLnJlZCkK
LUNvbG9yLnJlZAotCi0uLi53aGlsZSB0aGVpciByZXByIGhhcyBtb3JlIGluZm9ybWF0aW9uOgot
DD4+PiBwcmludChyZXByKENvbG9yLnJlZCkpCi08Q29sb3IucmVkOiAxPgotCi1UaGUgdHlwZSBv
ZiBhbiBlbnVtZXJhdGlvbiBtZW1iZXIgaXMgdGhlIGVudW1lcmF0aW9uIGl0IGJlbG9uZ3MgdG86
Ci0KLT4+PiB0eXBlKENvbG9yLnJlZCkKLTxlbnVtICdDb2xvcic+Ci0+Pj4gaXNpbnN0YW5jZShD
b2xvci5ncmVlbiwgQ29sb3IpCi1UcnVlCi0+Pj4KLQotRW51bSBtZW1iZXJzIGFsc28gaGF2ZSBh
IHByb3BlcnR5IHRoYXQgY29udGFpbnMganVzdCB0aGVpciBpdGVtIG5hbWU6Ci0KLT4+PiBwcmlu
dChDb2xvci5yZWQubmFtZSkKLXJlZAotCi1FbnVtZXJhdGlvbnMgc3VwcG9ydCBpdGVyYXRpb24u
IEluIFB5dGhvbiAzLnggZGVmaW5pdGlvbiBvcmRlciBpcyB1c2VkOyBpbiBQeXRob24gMi54IHRo
ZSBkZWZpbml0aW9uIG9yZGVyIGlzCi1ub3QgYXZhaWxhYmxlLCBidXQgY2xhc3MgYXR0cmlidXRl
IF9fb3JkZXJfXyBpcyBzdXBwb3J0ZWQ7IG90aGVyd2lzZSwgdmFsdWUgb3JkZXIgaXMgdXNlZDoK
LQotPj4+IGNsYXNzIFNoYWtlKEVudW0pOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjIG9ubHkgbmVlZGVkIGluIDIueAotLi4uIF9fb3JkZXJfXyA9ICd2
YW5pbGxhIGNob2NvbGF0ZSBjb29raWVzIG1pbnQnCi0uLi4gdmFuaWxsYSA9IDcKLS4uLiBjaG9j
b2xhdGUgPSA0Ci0uLi4gY29va2llcyA9IDkKLS4uLiBtaW50ID0gMwotLi4uCi0+Pj4gZm9yIHNo
YWtlIGluIFNoYWtlOgotLi4uIHByaW50KHNoYWtlKQotLi4uCi1TaGFrZS52YW5pbGxhCi1TaGFr
ZS5jaG9jb2xhdGUKLVNoYWtlLmNvb2tpZXMKLVNoYWtlLm1pbnQKLQotVGhlIF9fb3JkZXJfXyBh
dHRyaWJ1dGUgaXMgYWx3YXlzIHJlbW92ZWQsIGFuZCBpbiAzLnggaXQgaXMgYWxzbyBpZ25vcmVk
IChvcmRlciBpcyBkZWZpbml0aW9uIG9yZGVyKTsKLWhvd2V2ZXIsIGluIHRoZSBzdGRsaWIgdmVy
c2lvbiBpdCB3aWxsIGJlIGlnbm9yZWQgYnV0IG5vdCByZW1vdmVkLgotCi1FbnVtZXJhdGlvbiBt
ZW1iZXJzIGFyZSBoYXNoYWJsZSwgc28gdGhleSBjYW4gYmUgdXNlZCBpbiBkaWN0aW9uYXJpZXMg
YW5kIHNldHM6Ci0KLT4+PiBhcHBsZXMgPSB7fQotPj4+IGFwcGxlc1tDb2xvci5yZWRdID0gJ3Jl
ZCBkZWxpY2lvdXMnCi0+Pj4gYXBwbGVzW0NvbG9yLmdyZWVuXSA9ICdncmFubnkgc21pdGgnCi0+
Pj4gYXBwbGVzID09IHtDb2xvci5yZWQ6ICdyZWQgZGVsaWNpb3VzJywgQ29sb3IuZ3JlZW46ICdn
cmFubnkgc21pdGgnfQotVHJ1ZQotCi1Qcm9ncmFtbWF0aWMgYWNjZXNzIHRvIGVudW1lcmF0aW9u
IG1lbWJlcnMgYW5kCi10aGVpciBhdHRyaWJ1dGVzCi0KLVNvbWV0aW1lcyBpdCdzIHVzZWZ1bCB0
byBhY2Nlc3MgbWVtYmVycyBpbiBlbnVtZXJhdGlvbnMgcHJvZ3JhbW1hdGljYWxseSAoaS5lLiBz
aXR1YXRpb25zIHdoZXJlCi1Db2xvci5yZWQgd29uJ3QgZG8gYmVjYXVzZSB0aGUgZXhhY3QgY29s
b3IgaXMgbm90IGtub3duIGF0IHByb2dyYW0td3JpdGluZyB0aW1lKS4gRW51bSBhbGxvd3Mgc3Vj
aAotYWNjZXNzOgotDCA+Pj4gQ29sb3IoMSkKLSA8Q29sb3IucmVkOiAxPgotID4+PiBDb2xvcigz
KQotIDxDb2xvci5ibHVlOiAzPgotCi1JZiB5b3Ugd2FudCB0byBhY2Nlc3MgZW51bSBtZW1iZXJz
IGJ5IG5hbWUsIHVzZSBpdGVtIGFjY2VzczoKLQotID4+PiBDb2xvclsncmVkJ10KLSA8Q29sb3Iu
cmVkOiAxPgotID4+PiBDb2xvclsnZ3JlZW4nXQotIDxDb2xvci5ncmVlbjogMj4KLQotSWYgaGF2
ZSBhbiBlbnVtIG1lbWJlciBhbmQgbmVlZCBpdHMgbmFtZSBvciB2YWx1ZToKLQotID4+PiBtZW1i
ZXIgPSBDb2xvci5yZWQKLSA+Pj4gbWVtYmVyLm5hbWUKLSAncmVkJwotID4+PiBtZW1iZXIudmFs
dWUKLSAxCi0KLUR1cGxpY2F0aW5nIGVudW0gbWVtYmVycyBhbmQgdmFsdWVzCi0KLUhhdmluZyB0
d28gZW51bSBtZW1iZXJzIChvciBhbnkgb3RoZXIgYXR0cmlidXRlKSB3aXRoIHRoZSBzYW1lIG5h
bWUgaXMgaW52YWxpZDsgaW4gUHl0aG9uIDMueCB0aGlzIHdvdWxkCi1yYWlzZSBhbiBlcnJvciwg
YnV0IGluIFB5dGhvbiAyLnggdGhlIHNlY29uZCBtZW1iZXIgc2ltcGx5IG92ZXJ3cml0ZXMgdGhl
IGZpcnN0OgotCi0+Pj4gIyBweXRob24gMi54Ci0+Pj4gY2xhc3MgU2hhcGUoRW51bSk6Ci0uLi4g
c3F1YXJlID0gMgotLi4uIHNxdWFyZSA9IDMKLS4uLgotPj4+IFNoYXBlLnNxdWFyZQotPFNoYXBl
LnNxdWFyZTogMz4KLQotPj4+ICMgcHl0aG9uIDMueAotPj4+IGNsYXNzIFNoYXBlKEVudW0pOgot
Li4uIHNxdWFyZSA9IDIKLS4uLiBzcXVhcmUgPSAzCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh
bGwgbGFzdCk6Ci0uLi4KLVR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIHJldXNlIGtleTogJ3NxdWFy
ZScKLQotSG93ZXZlciwgdHdvIGVudW0gbWVtYmVycyBhcmUgYWxsb3dlZCB0byBoYXZlIHRoZSBz
YW1lIHZhbHVlLiBHaXZlbiB0d28gbWVtYmVycyBBIGFuZCBCIHdpdGggdGhlCi1zYW1lIHZhbHVl
IChhbmQgQSBkZWZpbmVkIGZpcnN0KSwgQiBpcyBhbiBhbGlhcyB0byBBLiBCeS12YWx1ZSBsb29r
dXAgb2YgdGhlIHZhbHVlIG9mIEEgYW5kIEIgd2lsbCByZXR1cm4gQS4KLUJ5LW5hbWUgbG9va3Vw
IG9mIEIgd2lsbCBhbHNvIHJldHVybiBBOgotCi0+Pj4gY2xhc3MgU2hhcGUoRW51bSk6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBuZWVkZWQgaW4gMi54Ci0u
Li4gX19vcmRlcl9fID0gJ3NxdWFyZSBkaWFtb25kIGNpcmNsZSBhbGlhc19mb3Jfc3F1YXJlJwot
Li4uIHNxdWFyZSA9IDIKLS4uLiBkaWFtb25kID0gMQotLi4uIGNpcmNsZSA9IDMKLS4uLiBhbGlh
c19mb3Jfc3F1YXJlID0gMgotLi4uCi0+Pj4gU2hhcGUuc3F1YXJlCi0MIDxTaGFwZS5zcXVhcmU6
IDI+Ci0gPj4+IFNoYXBlLmFsaWFzX2Zvcl9zcXVhcmUKLSA8U2hhcGUuc3F1YXJlOiAyPgotID4+
PiBTaGFwZSgyKQotIDxTaGFwZS5zcXVhcmU6IDI+Ci0KLUFsbG93aW5nIGFsaWFzZXMgaXMgbm90
IGFsd2F5cyBkZXNpcmFibGUuIHVuaXF1ZSBjYW4gYmUgdXNlZCB0byBlbnN1cmUgdGhhdCBub25l
IGV4aXN0IGluIGEgcGFydGljdWxhcgotZW51bWVyYXRpb246Ci0KLSA+Pj4gZnJvbSBlbnVtIGlt
cG9ydCB1bmlxdWUKLSA+Pj4gQHVuaXF1ZQotIC4uLiBjbGFzcyBNaXN0YWtlKEVudW0pOgotIC4u
LiBfX29yZGVyX18gPSAnb25lIHR3byB0aHJlZSBmb3VyJyAjIG9ubHkgbmVlZGVkIGluIDIueAot
IC4uLiBvbmUgPSAxCi0gLi4uIHR3byA9IDIKLSAuLi4gdGhyZWUgPSAzCi0gLi4uIGZvdXIgPSAz
Ci0gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotIC4uLgotIFZhbHVlRXJyb3I6
IGR1cGxpY2F0ZSBuYW1lcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVl
Ci0KLUl0ZXJhdGluZyBvdmVyIHRoZSBtZW1iZXJzIG9mIGFuIGVudW0gZG9lcyBub3QgcHJvdmlk
ZSB0aGUgYWxpYXNlczoKLQotID4+PiBsaXN0KFNoYXBlKQotIFs8U2hhcGUuc3F1YXJlOiAyPiwg
PFNoYXBlLmRpYW1vbmQ6IDE+LCA8U2hhcGUuY2lyY2xlOiAzPl0KLQotVGhlIHNwZWNpYWwgYXR0
cmlidXRlIF9fbWVtYmVyc19fIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIHRvIG1lbWJl
cnMuIEl0IGluY2x1ZGVzIGFsbCBuYW1lcwotZGVmaW5lZCBpbiB0aGUgZW51bWVyYXRpb24sIGlu
Y2x1ZGluZyB0aGUgYWxpYXNlczoKLQotID4+PiBmb3IgbmFtZSwgbWVtYmVyIGluIHNvcnRlZChT
aGFwZS5fX21lbWJlcnNfXy5pdGVtcygpKToKLSAuLi4gbmFtZSwgbWVtYmVyCi0gLi4uCi0gKCdh
bGlhc19mb3Jfc3F1YXJlJywgPFNoYXBlLnNxdWFyZTogMj4pCi0gKCdjaXJjbGUnLCA8U2hhcGUu
Y2lyY2xlOiAzPikKLSAoJ2RpYW1vbmQnLCA8U2hhcGUuZGlhbW9uZDogMT4pCi0gKCdzcXVhcmUn
LCA8U2hhcGUuc3F1YXJlOiAyPikKLQotVGhlIF9fbWVtYmVyc19fIGF0dHJpYnV0ZSBjYW4gYmUg
dXNlZCBmb3IgZGV0YWlsZWQgcHJvZ3JhbW1hdGljIGFjY2VzcyB0byB0aGUgZW51bWVyYXRpb24g
bWVtYmVycy4KLUZvciBleGFtcGxlLCBmaW5kaW5nIGFsbCB0aGUgYWxpYXNlczoKLQotID4+PiBb
bmFtZSBmb3IgbmFtZSwgbWVtYmVyIGluIFNoYXBlLl9fbWVtYmVyc19fLml0ZW1zKCkgaWYgbWVt
YmVyLm5hbWUgIT0gbmFtZV0KLSBbJ2FsaWFzX2Zvcl9zcXVhcmUnXQotCi1Db21wYXJpc29ucwot
Ci1FbnVtZXJhdGlvbiBtZW1iZXJzIGFyZSBjb21wYXJlZCBieSBpZGVudGl0eToKLQotID4+PiBD
b2xvci5yZWQgaXMgQ29sb3IucmVkCi0gVHJ1ZQotID4+PiBDb2xvci5yZWQgaXMgQ29sb3IuYmx1
ZQotIEZhbHNlCi0gPj4+IENvbG9yLnJlZCBpcyBub3QgQ29sb3IuYmx1ZQotIFRydWUKLQxPcmRl
cmVkIGNvbXBhcmlzb25zIGJldHdlZW4gZW51bWVyYXRpb24gdmFsdWVzIGFyZSBub3Qgc3VwcG9y
dGVkLiBFbnVtIG1lbWJlcnMgYXJlIG5vdCBpbnRlZ2VycwotKGJ1dCBzZWUgSW50RW51bSBiZWxv
dyk6Ci0KLSA+Pj4gQ29sb3IucmVkIDwgQ29sb3IuYmx1ZQotIFRyYWNlYmFjayAobW9zdCByZWNl
bnQgY2FsbCBsYXN0KToKLQotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxl
PgotIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IENvbG9yKCkgPCBDb2xvcigpCi0KLVdh
cm5pbmcKLQotSW4gUHl0aG9uIDIgZXZlcnl0aGluZyBpcyBvcmRlcmVkLCBldmVuIHRob3VnaCB0
aGUgb3JkZXJpbmcgbWF5IG5vdCBtYWtlIHNlbnNlLiBJZiB5b3Ugd2FudCB5b3VyCi1lbnVtZXJh
dGlvbnMgdG8gaGF2ZSBhIHNlbnNpYmxlIG9yZGVyaW5nIGNoZWNrIG91dCB0aGUgT3JkZXJlZEVu
dW0gcmVjaXBlIGJlbG93LgotCi1FcXVhbGl0eSBjb21wYXJpc29ucyBhcmUgZGVmaW5lZCB0aG91
Z2g6Ci0KLSA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5yZWQKLSBGYWxzZQotID4+PiBDb2xvci5i
bHVlICE9IENvbG9yLnJlZAotIFRydWUKLSA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5ibHVlCi0g
VHJ1ZQotCi1Db21wYXJpc29ucyBhZ2FpbnN0IG5vbi1lbnVtZXJhdGlvbiB2YWx1ZXMgd2lsbCBh
bHdheXMgY29tcGFyZSBub3QgZXF1YWwgKGFnYWluLCBJbnRFbnVtIHdhcwotZXhwbGljaXRseSBk
ZXNpZ25lZCB0byBiZWhhdmUgZGlmZmVyZW50bHksIHNlZSBiZWxvdyk6Ci0KLSA+Pj4gQ29sb3Iu
Ymx1ZSA9PSAyCi0gRmFsc2UKLQotQWxsb3dlZCBtZW1iZXJzIGFuZCBhdHRyaWJ1dGVzIG9mIGVu
dW1lcmF0aW9ucwotCi1UaGUgZXhhbXBsZXMgYWJvdmUgdXNlIGludGVnZXJzIGZvciBlbnVtZXJh
dGlvbiB2YWx1ZXMuIFVzaW5nIGludGVnZXJzIGlzIHNob3J0IGFuZCBoYW5keSAoYW5kCi1wcm92
aWRlZCBieSBkZWZhdWx0IGJ5IHRoZSBGdW5jdGlvbmFsIEFQSSksIGJ1dCBub3Qgc3RyaWN0bHkg
ZW5mb3JjZWQuIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIHVzZS1jYXNlcywgb25lCi1kb2Vzbid0
IGNhcmUgd2hhdCB0aGUgYWN0dWFsIHZhbHVlIG9mIGFuIGVudW1lcmF0aW9uIGlzLiBCdXQgaWYg
dGhlIHZhbHVlIGlzIGltcG9ydGFudCwgZW51bWVyYXRpb25zIGNhbgotaGF2ZSBhcmJpdHJhcnkg
dmFsdWVzLgotCi1FbnVtZXJhdGlvbnMgYXJlIFB5dGhvbiBjbGFzc2VzLCBhbmQgY2FuIGhhdmUg
bWV0aG9kcyBhbmQgc3BlY2lhbCBtZXRob2RzIGFzIHVzdWFsLiBJZiB3ZSBoYXZlIHRoaXMKLWVu
dW1lcmF0aW9uOgotCi0+Pj4gY2xhc3MgTW9vZChFbnVtKToKLQotLi4uIGZ1bmt5ID0gMQotCi0u
Li4gaGFwcHkgPSAzCi0KLS4uLgotCi0uLi4gZGVmIGRlc2NyaWJlKHNlbGYpOgotCi0uLi4gICMg
c2VsZiBpcyB0aGUgbWVtYmVyIGhlcmUKLQotLi4uICByZXR1cm4gc2VsZi5uYW1lLCBzZWxmLnZh
bHVlCi0KLS4uLgotCi0uLi4gZGVmIF9fc3RyX18oc2VsZik6Ci0KLS4uLiAgcmV0dXJuICdteSBj
dXN0b20gc3RyISB7MH0nLmZvcm1hdChzZWxmLnZhbHVlKQotCi0uLi4KLQotLi4uIEBjbGFzc21l
dGhvZAotCi0uLi4gZGVmIGZhdm9yaXRlX21vb2QoY2xzKToKLQwuLi4gICAgIyBjbHMgaGVyZSBp
cyB0aGUgZW51bWVyYXRpb24KLQotLi4uICAgIHJldHVybiBjbHMuaGFwcHkKLQotVGhlbjoKLQot
Pj4+IE1vb2QuZmF2b3JpdGVfbW9vZCgpCi08TW9vZC5oYXBweTogMz4KLT4+PiBNb29kLmhhcHB5
LmRlc2NyaWJlKCkKLSgnaGFwcHknLCAzKQotPj4+IHN0cihNb29kLmZ1bmt5KQotJ215IGN1c3Rv
bSBzdHIhIDEnCi0KLVRoZSBydWxlcyBmb3Igd2hhdCBpcyBhbGxvd2VkIGFyZSBhcyBmb2xsb3dz
OiBfc3VuZGVyXyBuYW1lcyAoc3RhcnRpbmcgYW5kIGVuZGluZyB3aXRoIGEgc2luZ2xlCi11bmRl
cnNjb3JlKSBhcmUgcmVzZXJ2ZWQgYnkgZW51bSBhbmQgY2Fubm90IGJlIHVzZWQ7IGFsbCBvdGhl
ciBhdHRyaWJ1dGVzIGRlZmluZWQgd2l0aGluIGFuIGVudW1lcmF0aW9uCi13aWxsIGJlY29tZSBt
ZW1iZXJzIG9mIHRoaXMgZW51bWVyYXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBfX2R1bmRl
cl9fIG5hbWVzIGFuZCBkZXNjcmlwdG9ycwotKG1ldGhvZHMgYXJlIGFsc28gZGVzY3JpcHRvcnMp
LgotCi1Ob3RlOgotCi0gICAgICBJZiB5b3VyIGVudW1lcmF0aW9uIGRlZmluZXMgX19uZXdfXyBh
bmQvb3IgX19pbml0X18gdGhlbiB3aGF0ZXZlciB2YWx1ZShzKSB3ZXJlIGdpdmVuIHRvIHRoZQot
ICAgICAgZW51bSBtZW1iZXIgd2lsbCBiZSBwYXNzZWQgaW50byB0aG9zZSBtZXRob2RzLiBTZWUg
UGxhbmV0IGZvciBhbiBleGFtcGxlLgotCi1SZXN0cmljdGVkIHN1YmNsYXNzaW5nIG9mIGVudW1l
cmF0aW9ucwotCi1TdWJjbGFzc2luZyBhbiBlbnVtZXJhdGlvbiBpcyBhbGxvd2VkIG9ubHkgaWYg
dGhlIGVudW1lcmF0aW9uIGRvZXMgbm90IGRlZmluZSBhbnkgbWVtYmVycy4gU28gdGhpcyBpcwot
Zm9yYmlkZGVuOgotCi0+Pj4gY2xhc3MgTW9yZUNvbG9yKENvbG9yKToKLS4uLiBwaW5rID0gMTcK
LVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLS4uLgotVHlwZUVycm9yOiBDYW5u
b3QgZXh0ZW5kIGVudW1lcmF0aW9ucwotCi1CdXQgdGhpcyBpcyBhbGxvd2VkOgotCi0+Pj4gY2xh
c3MgRm9vKEVudW0pOgotCi0uLi4gZGVmIHNvbWVfYmVoYXZpb3Ioc2VsZik6Ci0KLS4uLiAgICBw
YXNzCi0KLS4uLgotCi0+Pj4gY2xhc3MgQmFyKEZvbyk6Ci0KLS4uLiBoYXBweSA9IDEKLQotLi4u
IHNhZCA9IDIKLQotLi4uCi0KLUFsbG93aW5nIHN1YmNsYXNzaW5nIG9mIGVudW1zIHRoYXQgZGVm
aW5lIG1lbWJlcnMgd291bGQgbGVhZCB0byBhIHZpb2xhdGlvbiBvZiBzb21lIGltcG9ydGFudCBp
bnZhcmlhbnRzCi1vZiB0eXBlcyBhbmQgaW5zdGFuY2VzLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQg
bWFrZXMgc2Vuc2UgdG8gYWxsb3cgc2hhcmluZyBzb21lIGNvbW1vbiBiZWhhdmlvcgotYmV0d2Vl
biBhIGdyb3VwIG9mIGVudW1lcmF0aW9ucy4gKFNlZSBPcmRlcmVkRW51bSBmb3IgYW4gZXhhbXBs
ZS4pCi0KLVBpY2tsaW5nCi0KLUVudW1lcmF0aW9ucyBjYW4gYmUgcGlja2xlZCBhbmQgdW5waWNr
bGVkOgotCi0+Pj4gZnJvbSBlbnVtLnRlc3RfZW51bSBpbXBvcnQgRnJ1aXQKLT4+PiBmcm9tIHBp
Y2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCi0MID4+PiBGcnVpdC50b21hdG8gaXMgbG9hZHMoZHVt
cHMoRnJ1aXQudG9tYXRvLCAyKSkKLSBUcnVlCi0KLVRoZSB1c3VhbCByZXN0cmljdGlvbnMgZm9y
IHBpY2tsaW5nIGFwcGx5OiBwaWNrbGFibGUgZW51bXMgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSB0
b3AgbGV2ZWwgb2YgYSBtb2R1bGUsCi1zaW5jZSB1bnBpY2tsaW5nIHJlcXVpcmVzIHRoZW0gdG8g
YmUgaW1wb3J0YWJsZSBmcm9tIHRoYXQgbW9kdWxlLgotTm90ZToKLQotICAgICAgV2l0aCBwaWNr
bGUgcHJvdG9jb2wgdmVyc2lvbiA0IChpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjQpIGl0IGlzIHBv
c3NpYmxlIHRvIGVhc2lseSBwaWNrbGUgZW51bXMgbmVzdGVkIGluCi0gICAgICBvdGhlciBjbGFz
c2VzLgotCi1GdW5jdGlvbmFsIEFQSQotCi1UaGUgRW51bSBjbGFzcyBpcyBjYWxsYWJsZSwgcHJv
dmlkaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbCBBUEk6Ci0KLSA+Pj4gQW5pbWFsID0gRW51
bSgnQW5pbWFsJywgJ2FudCBiZWUgY2F0IGRvZycpCi0gPj4+IEFuaW1hbAotIDxlbnVtICdBbmlt
YWwnPgotID4+PiBBbmltYWwuYW50Ci0gPEFuaW1hbC5hbnQ6IDE+Ci0gPj4+IEFuaW1hbC5hbnQu
dmFsdWUKLSAxCi0gPj4+IGxpc3QoQW5pbWFsKQotIFs8QW5pbWFsLmFudDogMT4sIDxBbmltYWwu
YmVlOiAyPiwgPEFuaW1hbC5jYXQ6IDM+LCA8QW5pbWFsLmRvZzogND5dCi0KLVRoZSBzZW1hbnRp
Y3Mgb2YgdGhpcyBBUEkgcmVzZW1ibGUgbmFtZWR0dXBsZS4gVGhlIGZpcnN0IGFyZ3VtZW50IG9m
IHRoZSBjYWxsIHRvIEVudW0gaXMgdGhlIG5hbWUgb2YKLXRoZSBlbnVtZXJhdGlvbi4KLVRoZSBz
ZWNvbmQgYXJndW1lbnQgaXMgdGhlIHNvdXJjZSBvZiBlbnVtZXJhdGlvbiBtZW1iZXIgbmFtZXMu
IEl0IGNhbiBiZSBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkCi1zdHJpbmcgb2YgbmFtZXMsIGEgc2Vx
dWVuY2Ugb2YgbmFtZXMsIGEgc2VxdWVuY2Ugb2YgMi10dXBsZXMgd2l0aCBrZXkvdmFsdWUgcGFp
cnMsIG9yIGEgbWFwcGluZyAoZS5nLgotZGljdGlvbmFyeSkgb2YgbmFtZXMgdG8gdmFsdWVzLiBU
aGUgbGFzdCB0d28gb3B0aW9ucyBlbmFibGUgYXNzaWduaW5nIGFyYml0cmFyeSB2YWx1ZXMgdG8g
ZW51bWVyYXRpb25zOwotdGhlIG90aGVycyBhdXRvLWFzc2lnbiBpbmNyZWFzaW5nIGludGVnZXJz
IHN0YXJ0aW5nIHdpdGggMS4gQSBuZXcgY2xhc3MgZGVyaXZlZCBmcm9tIEVudW0gaXMgcmV0dXJu
ZWQuIEluCi1vdGhlciB3b3JkcywgdGhlIGFib3ZlIGFzc2lnbm1lbnQgdG8gQW5pbWFsIGlzIGVx
dWl2YWxlbnQgdG86Ci0KLSA+Pj4gY2xhc3MgQW5pbWFscyhFbnVtKToKLSAuLi4gYW50ID0gMQot
IC4uLiBiZWUgPSAyCi0gLi4uIGNhdCA9IDMKLSAuLi4gZG9nID0gNAotCi1QaWNrbGluZyBlbnVt
cyBjcmVhdGVkIHdpdGggdGhlIGZ1bmN0aW9uYWwgQVBJIGNhbiBiZSB0cmlja3kgYXMgZnJhbWUg
c3RhY2sgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUKLXVzZWQgdG8gdHJ5IGFuZCBmaWd1cmUg
b3V0IHdoaWNoIG1vZHVsZSB0aGUgZW51bWVyYXRpb24gaXMgYmVpbmcgY3JlYXRlZCBpbiAoZS5n
LiBpdCB3aWxsIGZhaWwgaWYgeW91IHVzZSBhCi11dGlsaXR5IGZ1bmN0aW9uIGluIHNlcGFyYXRl
IG1vZHVsZSwgYW5kIGFsc28gbWF5IG5vdCB3b3JrIG9uIElyb25QeXRob24gb3IgSnl0aG9uKS4g
VGhlIHNvbHV0aW9uIGlzIHRvCi1zcGVjaWZ5IHRoZSBtb2R1bGUgbmFtZSBleHBsaWNpdGx5IGFz
IGZvbGxvd3M6Ci0KLSA+Pj4gQW5pbWFscyA9IEVudW0oJ0FuaW1hbHMnLCAnYW50IGJlZSBjYXQg
ZG9nJywgbW9kdWxlPV9fbmFtZV9fKQotCi1EZXJpdmVkIEVudW1lcmF0aW9ucwotCi1JbnRFbnVt
Ci0KLUEgdmFyaWF0aW9uIG9mIEVudW0gaXMgcHJvdmlkZWQgd2hpY2ggaXMgYWxzbyBhIHN1YmNs
YXNzIG9mIGludC4gTWVtYmVycyBvZiBhbiBJbnRFbnVtIGNhbiBiZQotY29tcGFyZWQgdG8gaW50
ZWdlcnM7IGJ5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5
cGVzIGNhbiBhbHNvIGJlIGNvbXBhcmVkIHRvIGVhY2gKLW90aGVyOgotDCA+Pj4gZnJvbSBlbnVt
IGltcG9ydCBJbnRFbnVtCi0gPj4+IGNsYXNzIFNoYXBlKEludEVudW0pOgotIC4uLiBjaXJjbGUg
PSAxCi0gLi4uIHNxdWFyZSA9IDIKLSAuLi4KLSA+Pj4gY2xhc3MgUmVxdWVzdChJbnRFbnVtKToK
LSAuLi4gcG9zdCA9IDEKLSAuLi4gZ2V0ID0gMgotIC4uLgotID4+PiBTaGFwZSA9PSAxCi0gRmFs
c2UKLSA+Pj4gU2hhcGUuY2lyY2xlID09IDEKLSBUcnVlCi0gPj4+IFNoYXBlLmNpcmNsZSA9PSBS
ZXF1ZXN0LnBvc3QKLSBUcnVlCi0KLUhvd2V2ZXIsIHRoZXkgc3RpbGwgY2FuJ3QgYmUgY29tcGFy
ZWQgdG8gc3RhbmRhcmQgRW51bSBlbnVtZXJhdGlvbnM6Ci0KLSA+Pj4gY2xhc3MgU2hhcGUoSW50
RW51bSk6Ci0gLi4uIGNpcmNsZSA9IDEKLSAuLi4gc3F1YXJlID0gMgotIC4uLgotID4+PiBjbGFz
cyBDb2xvcihFbnVtKToKLSAuLi4gcmVkID0gMQotIC4uLiBncmVlbiA9IDIKLSAuLi4KLSA+Pj4g
U2hhcGUuY2lyY2xlID09IENvbG9yLnJlZAotIEZhbHNlCi0KLUludEVudW0gdmFsdWVzIGJlaGF2
ZSBsaWtlIGludGVnZXJzIGluIG90aGVyIHdheXMgeW91J2QgZXhwZWN0OgotCi0gPj4+IGludChT
aGFwZS5jaXJjbGUpCi0gMQotID4+PiBbJ2EnLCAnYicsICdjJ11bU2hhcGUuY2lyY2xlXQotICdi
JwotID4+PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5zcXVhcmUpXQotIFswLCAxXQotCi1Gb3Ig
dGhlIHZhc3QgbWFqb3JpdHkgb2YgY29kZSwgRW51bSBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCwg
c2luY2UgSW50RW51bSBicmVha3Mgc29tZSBzZW1hbnRpYwotcHJvbWlzZXMgb2YgYW4gZW51bWVy
YXRpb24gKGJ5IGJlaW5nIGNvbXBhcmFibGUgdG8gaW50ZWdlcnMsIGFuZCB0aHVzIGJ5IHRyYW5z
aXRpdml0eSB0byBvdGhlciB1bnJlbGF0ZWQKLWVudW1lcmF0aW9ucykuIEl0IHNob3VsZCBiZSB1
c2VkIG9ubHkgaW4gc3BlY2lhbCBjYXNlcyB3aGVyZSB0aGVyZSdzIG5vIG90aGVyIGNob2ljZTsg
Zm9yIGV4YW1wbGUsIHdoZW4KLWludGVnZXIgY29uc3RhbnRzIGFyZSByZXBsYWNlZCB3aXRoIGVu
dW1lcmF0aW9ucyBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQgd2l0aCBj
b2RlIHRoYXQKLXN0aWxsIGV4cGVjdHMgaW50ZWdlcnMuCi0KLU90aGVycwotCi1XaGlsZSBJbnRF
bnVtIGlzIHBhcnQgb2YgdGhlIGVudW0gbW9kdWxlLCBpdCB3b3VsZCBiZSB2ZXJ5IHNpbXBsZSB0
byBpbXBsZW1lbnQgaW5kZXBlbmRlbnRseToKLQotIGNsYXNzIEludEVudW0oaW50LCBFbnVtKToK
LSAgICAgICAgIHBhc3MKLQotVGhpcyBkZW1vbnN0cmF0ZXMgaG93IHNpbWlsYXIgZGVyaXZlZCBl
bnVtZXJhdGlvbnMgY2FuIGJlIGRlZmluZWQ7IGZvciBleGFtcGxlIGEgU3RyRW51bSB0aGF0IG1p
eGVzCi1pbiBzdHIgaW5zdGVhZCBvZiBpbnQuCi0KLVNvbWUgcnVsZXM6Ci0MICAgMS4gV2hlbiBz
dWJjbGFzc2luZyBFbnVtLCBtaXgtaW4gdHlwZXMgbXVzdCBhcHBlYXIgYmVmb3JlIEVudW0gaXRz
ZWxmIGluIHRoZSBzZXF1ZW5jZSBvZiBiYXNlcywgYXMKLSAgICAgIGluIHRoZSBJbnRFbnVtIGV4
YW1wbGUgYWJvdmUuCi0KLSAgIDIuIFdoaWxlIEVudW0gY2FuIGhhdmUgbWVtYmVycyBvZiBhbnkg
dHlwZSwgb25jZSB5b3UgbWl4IGluIGFuIGFkZGl0aW9uYWwgdHlwZSwgYWxsIHRoZSBtZW1iZXJz
Ci0gICAgICBtdXN0IGhhdmUgdmFsdWVzIG9mIHRoYXQgdHlwZSwgZS5nLiBpbnQgYWJvdmUuIFRo
aXMgcmVzdHJpY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gbWl4LWlucyB3aGljaCBvbmx5Ci0gICAg
ICBhZGQgbWV0aG9kcyBhbmQgZG9uJ3Qgc3BlY2lmeSBhbm90aGVyIGRhdGEgdHlwZSBzdWNoIGFz
IGludCBvciBzdHIuCi0KLSAgIDMuIFdoZW4gYW5vdGhlciBkYXRhIHR5cGUgaXMgbWl4ZWQgaW4s
IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBlbnVtIG1lbWJlciBp
dHNlbGYsCi0gICAgICBhbHRob3VnaCBpdCBpcyBlcXVpdmFsYW50IGFuZCB3aWxsIGNvbXBhcmUg
ZXF1YWwuCi0KLSAgIDQuICUtc3R5bGUgZm9ybWF0dGluZzogJXMgYW5kICVyIGNhbGwgRW51bSdz
IF9fc3RyX18gYW5kIF9fcmVwcl9fIHJlc3BlY3RpdmVseTsgb3RoZXIgY29kZXMKLSAgICAgIChz
dWNoIGFzICVpIG9yICVoIGZvciBJbnRFbnVtKSB0cmVhdCB0aGUgZW51bSBtZW1iZXIgYXMgaXRz
IG1peGVkLWluIHR5cGUuCi0KLSAgICAgIE5vdGU6IFByaW9yIHRvIFB5dGhvbiAzLjQgdGhlcmUg
aXMgYSBidWcgaW4gc3RyJ3MgJS1mb3JtYXR0aW5nOiBpbnQgc3ViY2xhc3NlcyBhcmUgcHJpbnRl
ZCBhcyBzdHJpbmdzCi0gICAgICBhbmQgbm90IG51bWJlcnMgd2hlbiB0aGUgJWQsICVpLCBvciAl
dSBjb2RlcyBhcmUgdXNlZC4KLQotICAgNS4gc3RyLl9fZm9ybWF0X18gKG9yIGZvcm1hdCkgd2ls
bCB1c2UgdGhlIG1peGVkLWluIHR5cGUncyBfX2Zvcm1hdF9fLiBJZiB0aGUgRW51bSdzIHN0ciBv
cgotICAgICAgcmVwciBpcyBkZXNpcmVkIHVzZSB0aGUgIXMgb3IgIXIgc3RyIGZvcm1hdCBjb2Rl
cy4KLQotRGVjb3JhdG9ycwotCi11bmlxdWUKLQotQSBjbGFzcyBkZWNvcmF0b3Igc3BlY2lmaWNh
bGx5IGZvciBlbnVtZXJhdGlvbnMuIEl0IHNlYXJjaGVzIGFuIGVudW1lcmF0aW9uJ3MgX19tZW1i
ZXJzX18gZ2F0aGVyaW5nCi1hbnkgYWxpYXNlcyBpdCBmaW5kczsgaWYgYW55IGFyZSBmb3VuZCBW
YWx1ZUVycm9yIGlzIHJhaXNlZCB3aXRoIHRoZSBkZXRhaWxzOgotCi0gPj4+IEB1bmlxdWUKLSAu
Li4gY2xhc3MgTm9EdXBlcyhFbnVtKToKLSAuLi4gZmlyc3QgPSAnb25lJwotIC4uLiBzZWNvbmQg
PSAndHdvJwotIC4uLiB0aGlyZCA9ICd0d28nCi0gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs
IGxhc3QpOgotIC4uLgotIFZhbHVlRXJyb3I6IGR1cGxpY2F0ZSBuYW1lcyBmb3VuZCBpbiA8ZW51
bSAnTm9EdXBlcyc+OiB0aGlyZCAtPiBzZWNvbmQKLQotSW50ZXJlc3RpbmcgZXhhbXBsZXMKLQot
V2hpbGUgRW51bSBhbmQgSW50RW51bSBhcmUgZXhwZWN0ZWQgdG8gY292ZXIgdGhlIG1ham9yaXR5
IG9mIHVzZS1jYXNlcywgdGhleSBjYW5ub3QgY292ZXIgdGhlbSBhbGwuCi1IZXJlIGFyZSByZWNp
cGVzIGZvciBzb21lIGRpZmZlcmVudCB0eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUg
dXNlZCBkaXJlY3RseSwgb3IgYXMgZXhhbXBsZXMgZm9yCi1jcmVhdGluZyBvbmUncyBvd24uCi0K
LUF1dG9OdW1iZXIKLQotQXZvaWRzIGhhdmluZyB0byBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgZWFj
aCBlbnVtZXJhdGlvbiBtZW1iZXI6Ci0KLT4+PiBjbGFzcyBBdXRvTnVtYmVyKEVudW0pOgotCi0u
Li4gIGRlZiBfX25ld19fKGNscyk6Ci0KLS4uLiAgdmFsdWUgPSBsZW4oY2xzLl9fbWVtYmVyc19f
KSArIDEKLQotLi4uICBvYmogPSBvYmplY3QuX19uZXdfXyhjbHMpCi0KLS4uLiAgb2JqLl92YWx1
ZV8gPSB2YWx1ZQotCi0uLi4gIHJldHVybiBvYmoKLQotLi4uCi0KLT4+PiBjbGFzcyBDb2xvcihB
dXRvTnVtYmVyKToKLQotLi4uICBfX29yZGVyX18gPSAicmVkIGdyZWVuIGJsdWUiICMgb25seSBu
ZWVkZWQgaW4gMi54Ci0KLS4uLiAgcmVkID0gKCkKLQotLi4uICBncmVlbiA9ICgpCi0KLS4uLiAg
Ymx1ZSA9ICgpCi0MLi4uCi0+Pj4gQ29sb3IuZ3JlZW4udmFsdWUgPT0gMgotVHJ1ZQotCi1Ob3Rl
OgotCi0gICAgICBUaGUgX19uZXdfXyBtZXRob2QsIGlmIGRlZmluZWQsIGlzIHVzZWQgZHVyaW5n
IGNyZWF0aW9uIG9mIHRoZSBFbnVtIG1lbWJlcnM7IGl0IGlzIHRoZW4gcmVwbGFjZWQgYnkKLSAg
ICAgIEVudW0ncyBfX25ld19fIHdoaWNoIGlzIHVzZWQgYWZ0ZXIgY2xhc3MgY3JlYXRpb24gZm9y
IGxvb2t1cCBvZiBleGlzdGluZyBtZW1iZXJzLiBEdWUgdG8gdGhlIHdheQotICAgICAgRW51bXMg
YXJlIHN1cHBvc2VkIHRvIGJlaGF2ZSwgdGhlcmUgaXMgbm8gd2F5IHRvIGN1c3RvbWl6ZSBFbnVt
J3MgX19uZXdfXy4KLQotVW5pcXVlRW51bQotCi1SYWlzZXMgYW4gZXJyb3IgaWYgYSBkdXBsaWNh
dGUgbWVtYmVyIG5hbWUgaXMgZm91bmQgaW5zdGVhZCBvZiBjcmVhdGluZyBhbiBhbGlhczoKLQot
Pj4+IGNsYXNzIFVuaXF1ZUVudW0oRW51bSk6Ci0KLS4uLiAgZGVmIF9faW5pdF9fKHNlbGYsICph
cmdzKToKLQotLi4uICBjbHMgPSBzZWxmLl9fY2xhc3NfXwotCi0uLi4gIGlmIGFueShzZWxmLnZh
bHVlID09IGUudmFsdWUgZm9yIGUgaW4gY2xzKToKLQotLi4uICAgICAgICAgICBhID0gc2VsZi5u
YW1lCi0KLS4uLiAgICAgICAgICAgZSA9IGNscyhzZWxmLnZhbHVlKS5uYW1lCi0KLS4uLiAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLQotLi4uICAgICAgICAgICAgICJhbGlhc2VzIG5vdCBh
bGxvd2VkIGluIFVuaXF1ZUVudW06ICVyIC0tPiAlciIKLQotLi4uICAgICAgICAgICAgICUgKGEs
IGUpKQotCi0uLi4KLQotPj4+IGNsYXNzIENvbG9yKFVuaXF1ZUVudW0pOgotCi0uLi4gIHJlZCA9
IDEKLQotLi4uICBncmVlbiA9IDIKLQotLi4uICBibHVlID0gMwotCi0uLi4gIGdyZW5lID0gMgot
Ci1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0KLS4uLgotCi1WYWx1ZUVycm9y
OiBhbGlhc2VzIG5vdCBhbGxvd2VkIGluIFVuaXF1ZUVudW06ICdncmVuZScgLS0+ICdncmVlbicK
LQotT3JkZXJlZEVudW0KLQotQW4gb3JkZXJlZCBlbnVtZXJhdGlvbiB0aGF0IGlzIG5vdCBiYXNl
ZCBvbiBJbnRFbnVtIGFuZCBzbyBtYWludGFpbnMgdGhlIG5vcm1hbCBFbnVtIGludmFyaWFudHMK
LShzdWNoIGFzIG5vdCBiZWluZyBjb21wYXJhYmxlIHRvIG90aGVyIGVudW1lcmF0aW9ucyk6Ci0K
LT4+PiBjbGFzcyBPcmRlcmVkRW51bShFbnVtKToKLQotLi4uICBkZWYgX19nZV9fKHNlbGYsIG90
aGVyKToKLQotLi4uICBpZiBzZWxmLl9fY2xhc3NfXyBpcyBvdGhlci5fX2NsYXNzX186Ci0KLS4u
LiAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlXyA+PSBvdGhlci5fdmFsdWVfCi0KLS4uLiAg
cmV0dXJuIE5vdEltcGxlbWVudGVkCi0KLS4uLiAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6Ci0K
LS4uLiAgaWYgc2VsZi5fX2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgotCi0uLi4gICAgICAg
ICAgIHJldHVybiBzZWxmLl92YWx1ZV8gPiBvdGhlci5fdmFsdWVfCi0KLS4uLiAgcmV0dXJuIE5v
dEltcGxlbWVudGVkCi0KLS4uLiAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6Ci0KLS4uLiAgaWYg
c2VsZi5fX2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgotCi0uLi4gICAgICAgICAgIHJldHVy
biBzZWxmLl92YWx1ZV8gPD0gb3RoZXIuX3ZhbHVlXwotCi0uLi4gIHJldHVybiBOb3RJbXBsZW1l
bnRlZAotCi0uLi4gIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgotCi0uLi4gIGlmIHNlbGYuX19j
bGFzc19fIGlzIG90aGVyLl9fY2xhc3NfXzoKLQotLi4uICAgICAgICAgICByZXR1cm4gc2VsZi5f
dmFsdWVfIDwgb3RoZXIuX3ZhbHVlXwotCi0uLi4gIHJldHVybiBOb3RJbXBsZW1lbnRlZAotDC4u
LgotCi0+Pj4gY2xhc3MgR3JhZGUoT3JkZXJlZEVudW0pOgotCi0uLi4gICBfX29yZGVyZWRfXyA9
ICdBIEIgQyBEIEYnCi0KLS4uLiAgIEE9NQotCi0uLi4gICBCPTQKLQotLi4uICAgQz0zCi0KLS4u
LiAgIEQ9MgotCi0uLi4gICBGPTEKLQotLi4uCi0KLT4+PiBHcmFkZS5DIDwgR3JhZGUuQQotCi1U
cnVlCi0KLVBsYW5ldAotCi1JZiBfX25ld19fIG9yIF9faW5pdF9fIGlzIGRlZmluZWQgdGhlIHZh
bHVlIG9mIHRoZSBlbnVtIG1lbWJlciB3aWxsIGJlIHBhc3NlZCB0byB0aG9zZSBtZXRob2RzOgot
Ci0+Pj4gY2xhc3MgUGxhbmV0KEVudW0pOgotCi0uLi4gICBNRVJDVVJZID0gKDMuMzAzZSsyMywg
Mi40Mzk3ZTYpCi0KLS4uLiAgIFZFTlVTID0gKDQuODY5ZSsyNCwgNi4wNTE4ZTYpCi0KLS4uLiAg
IEVBUlRIID0gKDUuOTc2ZSsyNCwgNi4zNzgxNGU2KQotCi0uLi4gICBNQVJTID0gKDYuNDIxZSsy
MywgMy4zOTcyZTYpCi0KLS4uLiAgIEpVUElURVIgPSAoMS45ZSsyNywgNy4xNDkyZTcpCi0KLS4u
LiAgIFNBVFVSTiA9ICg1LjY4OGUrMjYsIDYuMDI2OGU3KQotCi0uLi4gICBVUkFOVVMgPSAoOC42
ODZlKzI1LCAyLjU1NTllNykKLQotLi4uICAgTkVQVFVORSA9ICgxLjAyNGUrMjYsIDIuNDc0NmU3
KQotCi0uLi4gICBkZWYgX19pbml0X18oc2VsZiwgbWFzcywgcmFkaXVzKToKLQotLi4uICAgc2Vs
Zi5tYXNzID0gbWFzcyAgICAgICAgICAgICMgaW4ga2lsb2dyYW1zCi0KLS4uLiAgIHNlbGYucmFk
aXVzID0gcmFkaXVzICMgaW4gbWV0ZXJzCi0KLS4uLiAgIEBwcm9wZXJ0eQotCi0uLi4gICBkZWYg
c3VyZmFjZV9ncmF2aXR5KHNlbGYpOgotCi0uLi4gICAjIHVuaXZlcnNhbCBncmF2aXRhdGlvbmFs
IGNvbnN0YW50IChtMyBrZy0xIHMtMikKLQotLi4uICAgRyA9IDYuNjczMDBFLTExCi0KLS4uLiAg
IHJldHVybiBHICogc2VsZi5tYXNzIC8gKHNlbGYucmFkaXVzICogc2VsZi5yYWRpdXMpCi0KLS4u
LgotCi0+Pj4gUGxhbmV0LkVBUlRILnZhbHVlCi0KLSg1Ljk3NmUrMjQsIDYzNzgxNDAuMCkKLQot
Pj4+IFBsYW5ldC5FQVJUSC5zdXJmYWNlX2dyYXZpdHkKLQotOS44MDI2NTI3NDMzMzcxMjkKLQot
SG93IGFyZSBFbnVtcyBkaWZmZXJlbnQ/Ci0KLUVudW1zIGhhdmUgYSBjdXN0b20gbWV0YWNsYXNz
IHRoYXQgYWZmZWN0cyBtYW55IGFzcGVjdHMgb2YgYm90aCBkZXJpdmVkIEVudW0gY2xhc3NlcyBh
bmQgdGhlaXIKLWluc3RhbmNlcyAobWVtYmVycykuCi0KLUVudW0gQ2xhc3NlcwotCi1UaGUgRW51
bU1ldGEgbWV0YWNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgdGhlIF9fY29udGFp
bnNfXywgX19kaXJfXywgX19pdGVyX18gYW5kCi1vdGhlciBtZXRob2RzIHRoYXQgYWxsb3cgb25l
IHRvIGRvIHRoaW5ncyB3aXRoIGFuIEVudW0gY2xhc3MgdGhhdCBmYWlsIG9uIGEgdHlwaWNhbCBj
bGFzcywgc3VjaCBhcwotbGlzdChDb2xvcikgb3Igc29tZV92YXIgaW4gQ29sb3IuIEVudW1NZXRh
IGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IHZhcmlvdXMgb3RoZXIKLW1ldGhvZHMg
b24gdGhlIGZpbmFsIEVudW0gY2xhc3MgYXJlIGNvcnJlY3QgKHN1Y2ggYXMgX19uZXdfXywgX19n
ZXRuZXdhcmdzX18sIF9fc3RyX18gYW5kCi1fX3JlcHJfXykuCi0MICAgTm90ZQotCi0gICBfX2Rp
cl9fIGlzIG5vdCBjaGFuZ2VkIGluIHRoZSBQeXRob24gMiBsaW5lIGFzIGl0IG1lc3NlcyB1cCBz
b21lIG9mIHRoZSBkZWNvcmF0b3JzIGluY2x1ZGVkIGluCi0gICB0aGUgc3RkbGliLgotCi1FbnVt
IE1lbWJlcnMgKGFrYSBpbnN0YW5jZXMpCi0KLVRoZSBtb3N0IGludGVyZXN0aW5nIHRoaW5nIGFi
b3V0IEVudW0gbWVtYmVycyBpcyB0aGF0IHRoZXkgYXJlIHNpbmdsZXRvbnMuIEVudW1NZXRhIGNy
ZWF0ZXMgdGhlbSBhbGwKLXdoaWxlIGl0IGlzIGNyZWF0aW5nIHRoZSBFbnVtIGNsYXNzIGl0c2Vs
ZiwgYW5kIHRoZW4gcHV0cyBhIGN1c3RvbSBfX25ld19fIGluIHBsYWNlIHRvIGVuc3VyZSB0aGF0
IG5vIG5ldwotb25lcyBhcmUgZXZlciBpbnN0YW50aWF0ZWQgYnkgcmV0dXJuaW5nIG9ubHkgdGhl
IGV4aXN0aW5nIG1lbWJlciBpbnN0YW5jZXMuCi0KLUZpbmVyIFBvaW50cwotCi1FbnVtIG1lbWJl
cnMgYXJlIGluc3RhbmNlcyBvZiBhbiBFbnVtIGNsYXNzLCBhbmQgZXZlbiB0aG91Z2ggdGhleSBh
cmUgYWNjZXNzaWJsZSBhcwotRW51bUNsYXNzLm1lbWJlcjEubWVtYmVyMiwgdGhleSBzaG91bGQg
bm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gdGhlIG1lbWJlciBhcyB0aGF0IGxvb2t1cAot
bWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nIGJlc2lkZXMgdGhlIEVudW0gbWVt
YmVyIHlvdSB3ZXJlIGxvb2tpbmcgZm9yIChjaGFuZ2VkIGluIHZlcnNpb24KLTEuMS4xKToKLQot
Pj4+IGNsYXNzIEZpZWxkVHlwZXMoRW51bSk6Ci0KLS4uLiAgbmFtZSA9IDEKLQotLi4uICB2YWx1
ZSA9IDIKLQotLi4uICBzaXplID0gMwotCi0uLi4KLQotPj4+IEZpZWxkVHlwZXMudmFsdWUuc2l6
ZQotCi08RmllbGRUeXBlcy5zaXplOiAzPgotCi0+Pj4gRmllbGRUeXBlcy5zaXplLnZhbHVlCi0K
LTMKLQotVGhlIF9fbWVtYmVyc19fIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUg
Y2xhc3MuCi0KLUluIFB5dGhvbiAzLnggX19tZW1iZXJzX18gaXMgYWx3YXlzIGFuIE9yZGVyZWRE
aWN0LCB3aXRoIHRoZSBvcmRlciBiZWluZyB0aGUgZGVmaW5pdGlvbiBvcmRlci4gSW4KLVB5dGhv
biAyLjcgX19tZW1iZXJzX18gaXMgYW4gT3JkZXJlZERpY3QgaWYgX19vcmRlcl9fIHdhcyBzcGVj
aWZpZWQsIGFuZCBhIHBsYWluIGRpY3QKLW90aGVyd2lzZS4gSW4gYWxsIG90aGVyIFB5dGhvbiAy
LnggdmVyc2lvbnMgX19tZW1iZXJzX18gaXMgYSBwbGFpbiBkaWN0IGV2ZW4gaWYgX19vcmRlcl9f
IHdhcwotc3BlY2lmaWVkIGFzIHRoZSBPcmRlcmVkRGljdCB0eXBlIGRpZG4ndCBleGlzdCB5ZXQu
Ci0KLUlmIHlvdSBnaXZlIHlvdXIgRW51bSBzdWJjbGFzcyBleHRyYSBtZXRob2RzLCBsaWtlIHRo
ZSBQbGFuZXQgY2xhc3MgYWJvdmUsIHRob3NlIG1ldGhvZHMgd2lsbCBzaG93IHVwIGluCi1hIGRp
ciBvZiB0aGUgbWVtYmVyLCBidXQgbm90IG9mIHRoZSBjbGFzczoKLQotPj4+IGRpcihQbGFuZXQp
Ci1bJ0VBUlRIJywgJ0pVUElURVInLCAnTUFSUycsICdNRVJDVVJZJywgJ05FUFRVTkUnLCAnU0FU
VVJOJywgJ1VSQU5VUycsCi0nVkVOVVMnLCAnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19tZW1i
ZXJzX18nLCAnX19tb2R1bGVfXyddCi0+Pj4gZGlyKFBsYW5ldC5FQVJUSCkKLVsnX19jbGFzc19f
JywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsICduYW1lJywgJ3N1cmZhY2VfZ3Jhdml0eScsICd2
YWx1ZSddCi0KLUEgX19uZXdfXyBtZXRob2Qgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBjcmVh
dGlvbiBvZiB0aGUgRW51bSBtZW1iZXJzIC0tIGFmdGVyIHRoYXQgaXQgaXMgcmVwbGFjZWQuCi1U
aGlzIG1lYW5zIGlmIHlvdSB3aXNoIHRvIGNoYW5nZSBob3cgRW51bSBtZW1iZXJzIGFyZSBsb29r
ZWQgdXAgeW91IGVpdGhlciBoYXZlIHRvIHdyaXRlIGEgaGVscGVyCi1mdW5jdGlvbiBvciBhIGNs
YXNzbWV0aG9kLgotDApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZW51bS9lbnVtL2RvYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I4NDdmMDhkODg3Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL2Vu
dW0ucGRmCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL2VudW0ucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Vu
dW0vZW51bS90ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdGVzdC5weQppbmRleCBkOWVkZmFlZTQw
YWYuLmM4YzRiOTYyMjQyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdGVzdC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2VudW0vZW51bS90ZXN0LnB5CkBAIC00NTIsOCArNDUyLDggQEAgY2xhc3MgVGVzdEVu
dW0odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGVzW1Nl
YXNvbi5BVVRVTU5dLCAnMTAzMScpCiAKICAgICBkZWYgdGVzdF9lbnVtX2R1cGxpY2F0ZXMoc2Vs
Zik6Ci0gICAgICAgIF9vcmRlcl8gPSAiU1BSSU5HIFNVTU1FUiBBVVRVTU4gV0lOVEVSIgogICAg
ICAgICBjbGFzcyBTZWFzb24oRW51bSk6CisgICAgICAgICAgICBfb3JkZXJfID0gIlNQUklORyBT
VU1NRVIgQVVUVU1OIFdJTlRFUiIKICAgICAgICAgICAgIFNQUklORyA9IDEKICAgICAgICAgICAg
IFNVTU1FUiA9IDIKICAgICAgICAgICAgIEFVVFVNTiA9IEZBTEwgPSAzCkBAIC02NjUsNyArNjY1
LDcgQEAgY2xhc3MgVGVzdEVudW0odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAg
ICAgICBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpCiAKICAgICBkZWYgdGVzdF9leHBs
b2RpbmdfcGlja2xlKHNlbGYpOgotICAgICAgICBCYWRQaWNrbGUgPSBFbnVtKCdCYWRQaWNrbGUn
LCAnZGlsbCBzd2VldCBicmVhZC1uLWJ1dHRlcicpCisgICAgICAgIEJhZFBpY2tsZSA9IEVudW0o
J0JhZFBpY2tsZScsICdkaWxsIHN3ZWV0IGJyZWFkX25fYnV0dGVyJykKICAgICAgICAgZW51bS5f
bWFrZV9jbGFzc191bnBpY2tsYWJsZShCYWRQaWNrbGUpCiAgICAgICAgIGdsb2JhbHMoKVsnQmFk
UGlja2xlJ10gPSBCYWRQaWNrbGUKICAgICAgICAgdGVzdF9waWNrbGVfZXhjZXB0aW9uKHNlbGYu
YXNzZXJ0UmFpc2VzLCBUeXBlRXJyb3IsIEJhZFBpY2tsZS5kaWxsKQpAQCAtODEzLDYgKzgxMywy
NyBAQCBjbGFzcyBUZXN0RW51bSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoZSBpbiBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSh0eXBlKGUpIGlzIFN1bW1lck1vbnRoKQogCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVu
Y3Rpb25faXRlcmFibGVfd2l0aF93ZWlyZF9uYW1lcyhzZWxmKToKKyAgICAgICAgU3VtbWVyTW9u
dGggPSBFbnVtKAorICAgICAgICAgICAgICAgICdTdW1tZXJNb250aCcsCisgICAgICAgICAgICAg
ICAgKCgnanVuZScsIDEpLCAoJ2p1bHknLCAyKSwgKCdhdWd1c3QnLCAzKSwgKCdmYWJ1bG91cyBz
ZXB0ZW1iZXInLCA0KSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGxzdCA9IGxpc3QoU3Vt
bWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJN
b250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgNCwgU3Vt
bWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1
bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdCwgU3Vt
bWVyTW9udGhbJ2ZhYnVsb3VzIHNlcHRlbWJlciddXSwKKyAgICAgICAgICAgICAgICBsc3QsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5l
IGp1bHkgYXVndXN0Jy5zcGxpdCgpICsgWydmYWJ1bG91cyBzZXB0ZW1iZXInXSk6CisgICAgICAg
ICAgICBpICs9IDEKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dE5vdEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9u
dGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZSBpbiBTdW1tZXJNb250aCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0eXBlKGUpIGlzIFN1bW1lck1vbnRoKQorCiAgICAgZGVm
IHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fZnJvbV9kaWN0KHNlbGYpOgogICAgICAgICBTdW1t
ZXJNb250aCA9IEVudW0oCiAgICAgICAgICAgICAgICAgJ1N1bW1lck1vbnRoJywKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZW51bS9lbnVtL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzEyODJmMWJiNS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vTElDRU5TRQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZW51bS9lbnVtL1JFQURNRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL19faW5pdF9fLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9l
bnVtL2VudW0vdGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0zNC5lZ2ctaW5mby93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZmM1MzExMDJhOC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVnZy1pbmZv
L1BLRy1JTkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0zNC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
ZW51bS9lbnVtMzQuZWdnLWluZm8vZGVwZW5kZW5jeV9saW5rcy50eHQKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51
bTM0LmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5j
ZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2VudW0vc2V0dXAuY2ZnCmluZGV4IDg2MWE5ZjU1NDI2My4uOGJmZDVhMTJmODVi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vc2V0dXAuY2ZnCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5j
ZmcKQEAgLTEsNSArMSw0IEBACiBbZWdnX2luZm9dCiB0YWdfYnVpbGQgPSAKIHRhZ19kYXRlID0g
MAotdGFnX3N2bl9yZXZpc2lvbiA9IDAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3NldHVwLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9lbnVtL3NldHVwLnB5CmluZGV4IDhiMjg0MDAzNDg1Ni4uZjU0MDcxZTdmMGM0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2VudW0vc2V0dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3NldHVwLnB5CkBA
IC05LDYgKzksMTQgQEAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMiwgNyk6CiBlbHNlOg0K
ICAgICByZXF1aXJlZCA9IFtdDQogDQorIyBEb24ndCBzaGFkb3cgYnVpbHRpbiBlbnVtIHBhY2th
Z2UgaWYgd2UgYXJlIGJlaW5nIGluc3RhbGxlZCBvbiBhDQorIyByZWNlbnQgUHl0aG9uLiAgVGhp
cyBjYXVzZXMgY29uZmxpY3RzIHNpbmNlIGF0IGxlYXN0IDMuNjoNCisjIGh0dHBzOi8vYml0YnVj
a2V0Lm9yZy9zdG9uZWxlYWYvZW51bTM0L2lzc3Vlcy8xOS9lbnVtMzQtaXNudC1jb21wYXRpYmxl
LXdpdGgtcHl0aG9uLTM2DQoraWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNCk6DQorICAg
IHBhY2thZ2VzID0gWydlbnVtJ10NCitlbHNlOg0KKyAgICBwYWNrYWdlcyA9IFtdDQorDQogbG9u
Z19kZXNjID0gJycnXA0KIGVudW0gLS0tIHN1cHBvcnQgZm9yIGVudW1lcmF0aW9ucw0KID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01NCwxNSArNjIsMTUgQEAg
UmVwb3NpdG9yeSBhbmQgSXNzdWUgVHJhY2tlciBhdCBodHRwczovL2JpdGJ1Y2tldC5vcmcvc3Rv
bmVsZWFmL2VudW0zNC4KIHB5Ml9vbmx5ID0gKCkNCiBweTNfb25seSA9ICgpDQogbWFrZSA9IFsN
Ci0gICAgICAgICdyc3QycGRmIGVudW0vZG9jL2VudW0ucnN0IC0tb3V0cHV0PWVudW0vZG9jL2Vu
dW0ucGRmJywNCisgICAgICAgICMgJ3JzdDJwZGYgZW51bS9kb2MvZW51bS5yc3QgLS1vdXRwdXQ9
ZW51bS9kb2MvZW51bS5wZGYnLA0KICAgICAgICAgXQ0KIA0KIA0KIGRhdGEgPSBkaWN0KA0KICAg
ICAgICAgbmFtZT0nZW51bTM0JywNCi0gICAgICAgIHZlcnNpb249JzEuMS42JywNCisgICAgICAg
IHZlcnNpb249JzEuMS4xMCcsDQogICAgICAgICB1cmw9J2h0dHBzOi8vYml0YnVja2V0Lm9yZy9z
dG9uZWxlYWYvZW51bTM0JywNCi0gICAgICAgIHBhY2thZ2VzPVsnZW51bSddLA0KKyAgICAgICAg
cGFja2FnZXM9cGFja2FnZXMsDQogICAgICAgICBwYWNrYWdlX2RhdGE9ew0KICAgICAgICAgICAg
ICdlbnVtJyA6IFsNCiAgICAgICAgICAgICAgICAgJ0xJQ0VOU0UnLA0KQEAgLTkwLDggKzk4LDYg
QEAgZGF0YSA9IGRpY3QoCiAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0
aG9uIDo6IDIuNicsDQogICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAyLjcnLA0KICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24g
OjogMy4zJywNCi0gICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6
IDMuNCcsDQotICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAz
LjUnLA0KICAgICAgICAgICAgIF0sDQogICAgICAgICApDQogDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9l
bnVtL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2MTc5MWNhNjc4NmUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2VudW0vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2VudW0vTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vUEtHLUlORk8KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Vu
dW0vUkVBRE1FCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9lbnVtL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9mdW5jc2lncy8uY292ZXJhZ2VyYyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLmNvdmVy
YWdlcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODNiZmMyMjBi
MTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzLy5jb3ZlcmFnZXJjCkBAIC0wLDAg
KzEsNiBAQAorW3J1bl0KK3NvdXJjZT1mdW5jc2lncworb21pdD1mdW5jc2lncy9vZGljdCoKKwor
W3JlcG9ydF0KK2luY2x1ZGU9ZnVuY3NpZ3MqCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzLy5n
aXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5jOGQyYWY4NWQzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Z1bmNzaWdzLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxOSBAQAorKn4KKyouZWdnCisqLmVnZy1p
bmZvCisqLnB5YworKi5weW8KKyouc3dwCisuRFNfU3RvcmUKKy5jb3ZlcmFnZQorLnRveC8KK01B
TklGRVNUCitidWlsZC8KK2RvY3MvLmJ1aWxkLworZGlzdC8KK2VudiovCitodG1sY292LwordG1w
LworY292ZXJhZ2UueG1sCitqdW5pdC54bWwKKy5lZ2dzLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5j
c2lncy8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMWU3YWJlMGI0NGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTggQEAKK2xhbmd1YWdl
OiBweXRob24KK3B5dGhvbjoKKyAgLSAyLjYKKyAgLSAyLjcKKyAgLSAzLjMKKyAgLSAzLjQKKyAg
LSAzLjUKKyAgLSBuaWdodGx5CisgIC0gcHlweQorIyAgLSBweXB5MworaW5zdGFsbDoKKyAgLSBw
aXAgaW5zdGFsbCAtVSBwaXAgc2V0dXB0b29scyB3aGVlbAorICAtIHBpcCBpbnN0YWxsIC1yIHJl
cXVpcmVtZW50cy9kZXZlbG9wbWVudC50eHQgLgorc2NyaXB0OgorICAtIGNvdmVyYWdlIHJ1biBz
ZXR1cC5weSB0ZXN0CisgIC0gY292ZXJhZ2UgcmVwb3J0IC0tc2hvdy1taXNzaW5nCithZnRlcl9z
dWNjZXNzOgorICAtIGNvdmVyYWxscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9DSEFOR0VM
T0cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzL0NIQU5HRUxPRwppbmRleCA2MDJlZWM1ZTdjMmEuLmUxMzY2ZDI2
NjhkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9DSEFOR0VMT0cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5j
c2lncy9DSEFOR0VMT0cKQEAgLTEsNiArMSwxMSBAQAogQ2hhbmdlbG9nCiAtLS0tLS0tLS0KIAor
MC41CitgYGAKKworKiBGaXggYmluZGluZyB3aXRoIHNlbGYgYXMgYSBrd2FyZy4gKFJvYmVydCBD
b2xsaW5zICMxNCkKKwogMC40ICgyMDEzLTEyLTIwKQogYGBgYGBgYGBgYGBgYGBgYAogKiBGaXgg
dW5ib3VuZCBtZXRob2RzIGdldHRpbmcgdGhlaXIgZmlyc3QgcGFyYW1ldGVyIGN1cnJpZWQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1F
LnJzdAppbmRleCBmMDRiN2I0MjJjZjUuLjVmYmNhMjdlNmU2YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9m
dW5jc2lncy9SRUFETUUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1FLnJzdApAQCAtMSw3
NCArMSwzNDIgQEAKLWZ1bmNzaWdzCi09PT09PT09PQorLi4gZnVuY3NpZ3MgZG9jdW1lbnRhdGlv
biBtYXN0ZXIgZmlsZSwgY3JlYXRlZCBieQorICAgc3BoaW54LXF1aWNrc3RhcnQgb24gRnJpIEFw
ciAyMCAyMDoyNzo1MiAyMDEyLgorICAgWW91IGNhbiBhZGFwdCB0aGlzIGZpbGUgY29tcGxldGVs
eSB0byB5b3VyIGxpa2luZywgYnV0IGl0IHNob3VsZCBhdCBsZWFzdAorICAgY29udGFpbiB0aGUg
cm9vdCBgdG9jdHJlZWAgZGlyZWN0aXZlLgorCitJbnRyb2R1Y2luZyBmdW5jc2lncworPT09PT09
PT09PT09PT09PT09PT0KKworVGhlIEZ1bmNzaWdzIFBhY2thZ2UKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIGBgZnVuY3NpZ3NgYCBpcyBhIGJhY2twb3J0IG9mIHRoZSBgUEVQIDM2MmBfIGZ1bmN0
aW9uIHNpZ25hdHVyZSBmZWF0dXJlcyBmcm9tCiBQeXRob24gMy4zJ3MgYGluc3BlY3RgXyBtb2R1
bGUuIFRoZSBiYWNrcG9ydCBpcyBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIuNiwgMi43Ci1hcyB3
ZWxsIGFzIDMuMiBhbmQgdXAuCithcyB3ZWxsIGFzIDMuMyBhbmQgdXAuIDMuMiB3YXMgc3VwcG9y
dGVkIGJ5IHZlcnNpb24gMC40LCBidXQgd2l0aCBzZXR1cHRvb2xzIGFuZAorcGlwIG5vIGxvbmdl
ciBzdXBwb3J0aW5nIDMuMiwgd2UgY2Fubm90IG1ha2UgYW55IHN0YXRlbWVudCBhYm91dCAzLjIK
K2NvbXBhdGliaWxpdHkuCiAKLXxweXBpX3ZlcnNpb258CitDb21wYXRpYmlsaXR5CitgYGBgYGBg
YGBgYGBgCisKK1RoZSBgYGZ1bmNzaWdzYGAgYmFja3BvcnQgaGFzIGJlZW4gdGVzdGVkIGFnYWlu
c3Q6CisKKyogQ1B5dGhvbiAyLjYKKyogQ1B5dGhvbiAyLjcKKyogQ1B5dGhvbiAzLjMKKyogQ1B5
dGhvbiAzLjQKKyogQ1B5dGhvbiAzLjUKKyogQ1B5dGhvbiBuaWdodGxpZXMKKyogUHlQeSBhbmQg
UHlQeTMoY3VycmVudGx5IGZhaWxpbmcgQ0kpCisKK0NvbnRpbnVvdXMgaW50ZWdyYXRpb24gdGVz
dGluZyBpcyBwcm92aWRlZCBieSBgVHJhdmlzIENJYF8uCisKK1VuZGVyIFB5dGhvbiAyLnggdGhl
cmUgaXMgYSBjb21wYXRpYmlsaXR5IGlzc3VlIHdoZW4gYSBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0
bwordGhlIGBgX193cmFwcGVkX19gYCBwcm9wZXJ0eSBvZiBhIGNsYXNzIGFmdGVyIGl0IGhhcyBi
ZWVuIGNvbnN0cnVjdGVkLgorU2ltaWxpYXJpbHkgdGhlcmUgdW5kZXIgUHlQeSBkaXJlY3RseSBw
YXNzaW5nIHRoZSBgYF9fY2FsbF9fYGAgbWV0aG9kIG9mIGEKK2J1aWx0aW4gaXMgYWxzbyBhIGNv
bXBhdGliaWxpdHkgaXNzdWVzLiAgT3RoZXJ3aXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzCitiZWxp
ZXZlZCB0byBiZSB1bmlmb3JtIGJldHdlZW4gYm90aCBQeXRob24yIGFuZCBQeXRob24zLgogCi1E
b2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCitJc3N1ZXMKK2BgYGBgYAogCi1UaGUgcmVmZXJl
bmNlIGRvY3VtZW50YXRpb24gaXMgc3RhbmRhcmQgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvciB0
aGUKLWBpbnNwZWN0YF8gbW9kdWxlIGluIFB5dGhvbjMuIFRoaXMgZG9jdW1lbnRhdGlvbiBoYXMg
YmVlbiBpbmNsdWRlZCBpbiB0aGUKLWBgZnVuY3NpZ3NgYCBwYWNrYWdlIGRvY3VtZW50YXRpb24g
aG9zdGVkIG9uIGBSZWFkIFRoZSBEb2NzYF8uCitTb3VyY2UgY29kZSBmb3IgYGBmdW5jc2lnc2Bg
IGlzIGhvc3RlZCBvbiBgR2l0SHViYF8uIEFueSBidWcgcmVwb3J0cyBvciBmZWF0dXJlCityZXF1
ZXN0cyBjYW4gYmUgbWFkZSB1c2luZyBHaXRIdWIncyBgaXNzdWVzIHN5c3RlbWBfLiB8YnVpbGRf
c3RhdHVzfCB8Y292ZXJhZ2V8CiAKIEV4YW1wbGUKIC0tLS0tLS0KIAotVG8gb2J0YWluIGEgc2ln
bmF0dXJlIG9iamVjdCwgcGFzcyB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHRvIHRoZQotYGBmdW5jc2ln
cy5zaWduYXR1cmVgYCBmdW5jdGlvbi4gOjoKK1RvIG9idGFpbiBhIGBTaWduYXR1cmVgIG9iamVj
dCwgcGFzcyB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHRvIHRoZQorYGBmdW5jc2lncy5zaWduYXR1cmVg
YCBmdW5jdGlvbi4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgPj4+IGZyb20gZnVu
Y3NpZ3MgaW1wb3J0IHNpZ25hdHVyZQogICAgID4+PiBkZWYgZm9vKGEsIGI9Tm9uZSwgKmFyZ3Ms
ICoqa3dhcmdzKToKICAgICAuLi4gICAgIHBhc3MKLQorICAgIC4uLgogICAgID4+PiBzaWcgPSBz
aWduYXR1cmUoZm9vKQorICAgID4+PiBzaWcKKyAgICA8ZnVuY3NpZ3MuU2lnbmF0dXJlIG9iamVj
dCBhdCAweC4uLj4KKyAgICA+Pj4gc2lnLnBhcmFtZXRlcnMKKyAgICBPcmRlcmVkRGljdChbKCdh
JywgPFBhcmFtZXRlciBhdCAweC4uLiAnYSc+KSwgKCdiJywgPFBhcmFtZXRlciBhdCAweC4uLiAn
Yic+KSwgKCdhcmdzJywgPFBhcmFtZXRlciBhdCAweC4uLiAnYXJncyc+KSwgKCdrd2FyZ3MnLCA8
UGFyYW1ldGVyIGF0IDB4Li4uICdrd2FyZ3MnPildKQorICAgID4+PiBzaWcucmV0dXJuX2Fubm90
YXRpb24KKyAgICA8Y2xhc3MgJ2Z1bmNzaWdzLl9lbXB0eSc+CiAKLUZvciB0aGUgZGV0YWlscyBv
ZiB0aGUgc2lnbmF0dXJlIG9iamVjdCwgcmVmZXIgdG8gdGhlIGVpdGhlciB0aGUgcGFja2FnZSBv
Zgotc3RhbmRhcmQgbGlicmFyeSBkb2N1bWVudGF0aW9uLgorSW50cm9zcGVjdGluZyBjYWxsYWJs
ZXMgd2l0aCB0aGUgU2lnbmF0dXJlIG9iamVjdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Db21wYXRhYmlsaXR5Ci0tLS0tLS0tLS0tLS0tCisu
LiBub3RlOjoKIAotVGhlIGBgZnVuY3NpZ3NgYCBiYWNrcG9ydCBoYXMgYmVlbiB0ZXN0ZWQgYWdh
aW5zdDoKKyAgIFRoaXMgc2VjdGlvbiBvZiBkb2N1bWVudGF0aW9uIGlzIGEgZGlyZWN0IHJlcHJv
ZHVjdGlvbiBvZiB0aGUgUHl0aG9uCisgICBzdGFuZGFyZCBsaWJyYXJ5IGRvY3VtZW50YXRpb24g
Zm9yIHRoZSBpbnNwZWN0IG1vZHVsZS4KIAotKiBDUHl0aG9uIDIuNgotKiBDUHl0aG9uIDIuNwot
KiBDUHl0aG9uIDMuMgotKiBQeVB5IDEuOQorVGhlIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50
cyB0aGUgY2FsbCBzaWduYXR1cmUgb2YgYSBjYWxsYWJsZSBvYmplY3QgYW5kIGl0cworcmV0dXJu
IGFubm90YXRpb24uICBUbyByZXRyaWV2ZSBhIFNpZ25hdHVyZSBvYmplY3QsIHVzZSB0aGUgOmZ1
bmM6YHNpZ25hdHVyZWAKK2Z1bmN0aW9uLgogCi1Db250aW51b3VzIGludGVncmF0aW9uIHRlc3Rp
bmcgaXMgcHJvdmlkZWQgYnkgYFRyYXZpcyBDSWBfLgorLi4gZnVuY3Rpb246OiBzaWduYXR1cmUo
Y2FsbGFibGUpCiAKLVVuZGVyIFB5dGhvbiAyLnggdGhlcmUgaXMgYSBjb21wYXRhYmlsaXR5IGlz
c3VlIHdoZW4gYSBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0bwotdGhlIGBgX193cmFwcGVkX19gYCBw
cm9wZXJ0eSBvZiBhIGNsYXNzIGFmdGVyIGl0IGhhcyBiZWVuIGNvbnN0cnVjdGVkLgotU2ltaWxp
YXJpbHkgdGhlcmUgdW5kZXIgUHlQeSBkaXJlY3RseSBwYXNzaW5nIHRoZSBgYF9fY2FsbF9fYGAg
bWV0aG9kIG9mIGEKLWJ1aWx0aW4gaXMgYWxzbyBhIGNvbXBhdGFiaWxpdHkgaXNzdWVzLiAgT3Ro
ZXJ3aXNlIHRoZSBmdW5jdGlvbmFsaXR5IGlzCi1iZWxpZXZlZCB0byBiZSB1bmlmb3JtIGJldHdl
ZW4gYm90aCBQeXRob24yIGFuZCBQeXRob24zLgorICAgUmV0dXJuIGEgOmNsYXNzOmBTaWduYXR1
cmVgIG9iamVjdCBmb3IgdGhlIGdpdmVuIGBgY2FsbGFibGVgYDo6CiAKLUlzc3VlcwotLS0tLS0t
CisgICAgICA+Pj4gZnJvbSBmdW5jc2lncyBpbXBvcnQgc2lnbmF0dXJlCisgICAgICA+Pj4gZGVm
IGZvbyhhLCAqLCBiOmludCwgKiprd2FyZ3MpOgorICAgICAgLi4uICAgICBwYXNzCiAKLVNvdXJj
ZSBjb2RlIGZvciBgYGZ1bmNzaWdzYGAgaXMgaG9zdGVkIG9uIGBHaXRIdWJgXy4gQW55IGJ1ZyBy
ZXBvcnRzIG9yIGZlYXR1cmUKLXJlcXVlc3RzIGNhbiBiZSBtYWRlIHVzaW5nIEdpdEh1YidzIGBp
c3N1ZXMgc3lzdGVtYF8uIHxidWlsZF9zdGF0dXN8IHxjb3ZlcmFnZXwKKyAgICAgID4+PiBzaWcg
PSBzaWduYXR1cmUoZm9vKQorCisgICAgICA+Pj4gc3RyKHNpZykKKyAgICAgICcoYSwgKiwgYjpp
bnQsICoqa3dhcmdzKScKKworICAgICAgPj4+IHN0cihzaWcucGFyYW1ldGVyc1snYiddKQorICAg
ICAgJ2I6aW50JworCisgICAgICA+Pj4gc2lnLnBhcmFtZXRlcnNbJ2InXS5hbm5vdGF0aW9uCisg
ICAgICA8Y2xhc3MgJ2ludCc+CisKKyAgIEFjY2VwdHMgYSB3aWRlIHJhbmdlIG9mIHB5dGhvbiBj
YWxsYWJsZXMsIGZyb20gcGxhaW4gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRvCisgICA6ZnVuYzpg
ZnVuY3Rvb2xzLnBhcnRpYWxgIG9iamVjdHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTb21l
IGNhbGxhYmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50
YXRpb25zIG9mCisgICAgICBQeXRob24uICBGb3IgZXhhbXBsZSwgaW4gQ1B5dGhvbiwgYnVpbHQt
aW4gZnVuY3Rpb25zIGRlZmluZWQgaW4gQyBwcm92aWRlCisgICAgICBubyBtZXRhZGF0YSBhYm91
dCB0aGVpciBhcmd1bWVudHMuCisKKworLi4gY2xhc3M6OiBTaWduYXR1cmUKKworICAgQSBTaWdu
YXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24g
YW5kIGl0cyByZXR1cm4KKyAgIGFubm90YXRpb24uICBGb3IgZWFjaCBwYXJhbWV0ZXIgYWNjZXB0
ZWQgYnkgdGhlIGZ1bmN0aW9uIGl0IHN0b3JlcyBhCisgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2Jq
ZWN0IGluIGl0cyA6YXR0cjpgcGFyYW1ldGVyc2AgY29sbGVjdGlvbi4KKworICAgU2lnbmF0dXJl
IG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgVXNlIDptZXRoOmBTaWduYXR1cmUucmVwbGFjZWAg
dG8gbWFrZSBhCisgICBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1
cmUuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5
IGFic2VuY2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogU2ln
bmF0dXJlLnBhcmFtZXRlcnMKKworICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRl
cnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICA6Y2xhc3M6YFBhcmFtZXRlcmAg
b2JqZWN0cy4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnJldHVybl9hbm5vdGF0aW9u
CisKKyAgICAgIFRoZSAicmV0dXJuIiBhbm5vdGF0aW9uIGZvciB0aGUgY2FsbGFibGUuICBJZiB0
aGUgY2FsbGFibGUgaGFzIG5vICJyZXR1cm4iCisgICAgICBhbm5vdGF0aW9uLCB0aGlzIGF0dHJp
YnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgIC4uIG1ldGhvZDo6
IFNpZ25hdHVyZS5iaW5kKCphcmdzLCAqKmt3YXJncykKKworICAgICAgQ3JlYXRlIGEgbWFwcGlu
ZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMuCisg
ICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgIGlmIGBgKmFyZ3NgYCBhbmQgYGAq
Kmt3YXJnc2BgIG1hdGNoIHRoZQorICAgICAgc2lnbmF0dXJlLCBvciByYWlzZXMgYSA6ZXhjOmBU
eXBlRXJyb3JgLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUuYmluZF9wYXJ0aWFsKCphcmdz
LCAqKmt3YXJncykKKworICAgICAgV29ya3MgdGhlIHNhbWUgd2F5IGFzIDptZXRoOmBTaWduYXR1
cmUuYmluZGAsIGJ1dCBhbGxvd3MgdGhlIG9taXNzaW9uIG9mCisgICAgICBzb21lIHJlcXVpcmVk
IGFyZ3VtZW50cyAobWltaWNzIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgYmVoYXZpb3IuKQor
ICAgICAgUmV0dXJucyA6Y2xhc3M6YEJvdW5kQXJndW1lbnRzYCwgb3IgcmFpc2VzIGEgOmV4Yzpg
VHlwZUVycm9yYCBpZiB0aGUKKyAgICAgIHBhc3NlZCBhcmd1bWVudHMgZG8gbm90IG1hdGNoIHRo
ZSBzaWduYXR1cmUuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5yZXBsYWNlKCpbLCBwYXJh
bWV0ZXJzXVssIHJldHVybl9hbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFNpZ25h
dHVyZSBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZSB3YXMgaW52b2tlZAor
ICAgICAgb24uICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGRpZmZlcmVudCBgYHBhcmFtZXRlcnNg
YCBhbmQvb3IKKyAgICAgIGBgcmV0dXJuX2Fubm90YXRpb25gYCB0byBvdmVycmlkZSB0aGUgY29y
cmVzcG9uZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlCisgICAgICBzaWduYXR1cmUuICBUbyBy
ZW1vdmUgcmV0dXJuX2Fubm90YXRpb24gZnJvbSB0aGUgY29waWVkIFNpZ25hdHVyZSwgcGFzcyBp
bgorICAgICAgOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAg
ID4+PiBkZWYgdGVzdChhLCBiKToKKyAgICAgICAgIC4uLiAgICAgcGFzcworICAgICAgICAgPj4+
IHNpZyA9IHNpZ25hdHVyZSh0ZXN0KQorICAgICAgICAgPj4+IG5ld19zaWcgPSBzaWcucmVwbGFj
ZShyZXR1cm5fYW5ub3RhdGlvbj0ibmV3IHJldHVybiBhbm5vIikKKyAgICAgICAgID4+PiBzdHIo
bmV3X3NpZykKKyAgICAgICAgICIoYSwgYikgLT4gJ25ldyByZXR1cm4gYW5ubyciCisKKworLi4g
Y2xhc3M6OiBQYXJhbWV0ZXIKKworICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUq
LiAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAorICAgeW91IGNhbiB1
c2UgOm1ldGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5Lgor
CisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNs
YXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgYW5k
CisgICAgICBhbm5vdGF0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLm5hbWUK
KworICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIE11c3QgYmUg
YSB2YWxpZCBweXRob24gaWRlbnRpZmllcgorICAgICAgbmFtZSAod2l0aCB0aGUgZXhjZXB0aW9u
IG9mIGBgUE9TSVRJT05BTF9PTkxZYGAgcGFyYW1ldGVycywgd2hpY2ggY2FuIGhhdmUKKyAgICAg
IGl0IHNldCB0byBgYE5vbmVgYCkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZh
dWx0CisKKyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhl
IHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdAorICAgICAgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlz
IHNldCB0byA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgLi4gYXR0cmlidXRlOjogUGFy
YW1ldGVyLmFubm90YXRpb24KKworICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0
ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBhbm5vdGF0aW9uLAorICAgICAgdGhpcyBhdHRy
aWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAuLiBhdHRyaWJ1
dGU6OiBQYXJhbWV0ZXIua2luZAorCisgICAgICBEZXNjcmliZXMgaG93IGFyZ3VtZW50IHZhbHVl
cyBhcmUgYm91bmQgdG8gdGhlIHBhcmFtZXRlci4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgKGFj
Y2Vzc2libGUgdmlhIDpjbGFzczpgUGFyYW1ldGVyYCwgbGlrZSBgYFBhcmFtZXRlci5LRVlXT1JE
X09OTFlgYCk6CisKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgTmFtZSAgICAg
ICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT05MWSogICAg
ICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBwb3NpdGlvbmFsICAgICAgIHwKKyAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50LiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICB8IFB5dGhvbiBoYXMgbm8gZXhwbGljaXQgc3ludGF4IGZvciBkZWZp
bmluZyAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwtb25s
eSBwYXJhbWV0ZXJzLCBidXQgbWFueSBidWlsdC1pbnwKKyAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICB8IGFuZCBleHRlbnNpb24gbW9kdWxlIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSAgIHwK
KyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRob3NlIHRoYXQgYWNjZXB0IG9ubHkg
b25lIG9yIHR3byBwYXJhbWV0ZXJzKXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8
IGFjY2VwdCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT1JfS0VZV09SRCp8IFZhbHVlIG1h
eSBiZSBzdXBwbGllZCBhcyBlaXRoZXIgYSBrZXl3b3JkIG9yIHwKKyAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwgYXJndW1lbnQgKHRoaXMgaXMgdGhlIHN0YW5kYXJk
ICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJpbmRpbmcgYmVoYXZpb3Vy
IGZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICB8IGluIFB5dGhvbi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9QT1NJVElPTkFMKiAgICAgICB8IEEg
dHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmVuJ3QgIHwKKyAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICB8IGJvdW5kIHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMg
ICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGNvcnJlc3BvbmRz
IHRvIGEgYGAqYXJnc2BgIHBhcmFtZXRlciBpbiBhICAgIHwKKyAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKktFWVdPUkRfT05MWSogICAgICAg
ICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LnwKKyAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICB8IEtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGFyZSB0
aG9zZSB3aGljaCAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFwcGVh
ciBhZnRlciBhIGBgKmBgIG9yIGBgKmFyZ3NgYCBlbnRyeSBpbiBhIHwKKyAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9LRVlXT1JEKiAg
ICAgICAgICB8IEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCBib3VuZHwK
KyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRvIGFueSBvdGhlciBwYXJhbWV0ZXIu
IFRoaXMgY29ycmVzcG9uZHMgdG8gYXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8
IGBgKiprd2FyZ3NgYCBwYXJhbWV0ZXIgaW4gYSBQeXRob24gZnVuY3Rpb24gIHwKKyAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgRXhhbXBsZTog
cHJpbnQgYWxsIGtleXdvcmQtb25seSBhcmd1bWVudHMgd2l0aG91dCBkZWZhdWx0IHZhbHVlczo6
CisKKyAgICAgICAgID4+PiBkZWYgZm9vKGEsIGIsICosIGMsIGQ9MTApOgorICAgICAgICAgLi4u
ICAgICBwYXNzCisKKyAgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorICAgICAgICAg
Pj4+IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgIC4uLiAg
ICAgaWYgKHBhcmFtLmtpbmQgPT0gcGFyYW0uS0VZV09SRF9PTkxZIGFuZAorICAgICAgICAgLi4u
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSk6Cisg
ICAgICAgICAuLi4gICAgICAgICBwcmludCgnUGFyYW1ldGVyOicsIHBhcmFtKQorICAgICAgICAg
UGFyYW1ldGVyOiBjCisKKyAgIC4uIG1ldGhvZDo6IFBhcmFtZXRlci5yZXBsYWNlKCpbLCBuYW1l
XVssIGtpbmRdWywgZGVmYXVsdF1bLCBhbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3
IFBhcmFtZXRlciBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZWQgd2FzIGlu
dm9rZWQKKyAgICAgIG9uLiAgVG8gb3ZlcnJpZGUgYSA6Y2xhc3M6YFBhcmFtZXRlcmAgYXR0cmli
dXRlLCBwYXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICBhcmd1bWVudC4gIFRvIHJlbW92ZSBh
IGRlZmF1bHQgdmFsdWUgb3IvYW5kIGFuIGFubm90YXRpb24gZnJvbSBhCisgICAgICBQYXJhbWV0
ZXIsIHBhc3MgOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAg
ID4+PiBmcm9tIGZ1bmNzaWdzIGltcG9ydCBQYXJhbWV0ZXIKKyAgICAgICAgID4+PiBwYXJhbSA9
IFBhcmFtZXRlcignZm9vJywgUGFyYW1ldGVyLktFWVdPUkRfT05MWSwgZGVmYXVsdD00MikKKyAg
ICAgICAgID4+PiBzdHIocGFyYW0pCisgICAgICAgICAnZm9vPTQyJworCisgICAgICAgICA+Pj4g
c3RyKHBhcmFtLnJlcGxhY2UoKSkgIyBXaWxsIGNyZWF0ZSBhIHNoYWxsb3cgY29weSBvZiAncGFy
YW0nCisgICAgICAgICAnZm9vPTQyJworCisgICAgICAgICA+Pj4gc3RyKHBhcmFtLnJlcGxhY2Uo
ZGVmYXVsdD1QYXJhbWV0ZXIuZW1wdHksIGFubm90YXRpb249J3NwYW0nKSkKKyAgICAgICAgICJm
b286J3NwYW0nIgorCisKKy4uIGNsYXNzOjogQm91bmRBcmd1bWVudHMKKworICAgUmVzdWx0IG9m
IGEgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBvciA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlh
bGAgY2FsbC4KKyAgIEhvbGRzIHRoZSBtYXBwaW5nIG9mIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rp
b24ncyBwYXJhbWV0ZXJzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5hcmd1
bWVudHMKKworICAgICAgQW4gb3JkZXJlZCwgbXV0YWJsZSBtYXBwaW5nICg6Y2xhc3M6YGNvbGxl
Y3Rpb25zLk9yZGVyZWREaWN0YCkgb2YKKyAgICAgIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3Vt
ZW50cycgdmFsdWVzLiAgQ29udGFpbnMgb25seSBleHBsaWNpdGx5IGJvdW5kCisgICAgICBhcmd1
bWVudHMuICBDaGFuZ2VzIGluIDphdHRyOmBhcmd1bWVudHNgIHdpbGwgcmVmbGVjdCBpbiA6YXR0
cjpgYXJnc2AgYW5kCisgICAgICA6YXR0cjpga3dhcmdzYC4KKworICAgICAgU2hvdWxkIGJlIHVz
ZWQgaW4gY29uanVuY3Rpb24gd2l0aCA6YXR0cjpgU2lnbmF0dXJlLnBhcmFtZXRlcnNgIGZvciBh
bnkKKyAgICAgIGFyZ3VtZW50IHByb2Nlc3NpbmcgcHVycG9zZXMuCisKKyAgICAgIC4uIG5vdGU6
OgorCisgICAgICAgICBBcmd1bWVudHMgZm9yIHdoaWNoIDptZXRoOmBTaWduYXR1cmUuYmluZGAg
b3IKKyAgICAgICAgIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCByZWxpZWQgb24gYSBk
ZWZhdWx0IHZhbHVlIGFyZSBza2lwcGVkLgorICAgICAgICAgSG93ZXZlciwgaWYgbmVlZGVkLCBp
dCBpcyBlYXN5IHRvIGluY2x1ZGUgdGhlbS4KKworICAgICAgOjoKKworICAgICAgICA+Pj4gZGVm
IGZvbyhhLCBiPTEwKToKKyAgICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgICAgPj4+IHNpZyA9
IHNpZ25hdHVyZShmb28pCisgICAgICAgID4+PiBiYSA9IHNpZy5iaW5kKDUpCisKKyAgICAgICAg
Pj4+IGJhLmFyZ3MsIGJhLmt3YXJncworICAgICAgICAoKDUsKSwge30pCisKKyAgICAgICAgPj4+
IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgLi4uICAgICBp
ZiBwYXJhbS5uYW1lIG5vdCBpbiBiYS5hcmd1bWVudHM6CisgICAgICAgIC4uLiAgICAgICAgIGJh
LmFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHBhcmFtLmRlZmF1bHQKKworICAgICAgICA+Pj4gYmEu
YXJncywgYmEua3dhcmdzCisgICAgICAgICgoNSwgMTApLCB7fSkKKworCisgICAuLiBhdHRyaWJ1
dGU6OiBCb3VuZEFyZ3VtZW50cy5hcmdzCisKKyAgICAgIEEgdHVwbGUgb2YgcG9zaXRpb25hbCBh
cmd1bWVudHMgdmFsdWVzLiAgRHluYW1pY2FsbHkgY29tcHV0ZWQgZnJvbSB0aGUKKyAgICAgIDph
dHRyOmBhcmd1bWVudHNgIGF0dHJpYnV0ZS4KKworICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1
bWVudHMua3dhcmdzCisKKyAgICAgIEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMu
ICBEeW5hbWljYWxseSBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgOmF0dHI6YGFyZ3VtZW50c2Ag
YXR0cmlidXRlLgorCisgICBUaGUgOmF0dHI6YGFyZ3NgIGFuZCA6YXR0cjpga3dhcmdzYCBwcm9w
ZXJ0aWVzIGNhbiBiZSB1c2VkIHRvIGludm9rZQorICAgZnVuY3Rpb25zOjoKKworICAgICAgZGVm
IHRlc3QoYSwgKiwgYik6CisgICAgICAgICAuLi4KKworICAgICAgc2lnID0gc2lnbmF0dXJlKHRl
c3QpCisgICAgICBiYSA9IHNpZy5iaW5kKDEwLCBiPTIwKQorICAgICAgdGVzdCgqYmEuYXJncywg
KipiYS5rd2FyZ3MpCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM2MmAgLSBGdW5jdGlv
biBTaWduYXR1cmUgT2JqZWN0LgorICAgICAgVGhlIGRldGFpbGVkIHNwZWNpZmljYXRpb24sIGlt
cGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGV4YW1wbGVzLgogCiBDb3B5cmlnaHQKIC0tLS0tLS0t
LQogCi1UaGlzIGlzIGEgZGVyaXZlZCB3b3JrIG9mIENQeXRob24gdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBgUFNGIExpY2Vuc2UKKypmdW5jc2lncyogaXMgYSBkZXJpdmVkIHdvcmsgb2YgQ1B5dGhv
biB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGBQU0YgTGljZW5zZQogQWdyZWVtZW50YF8uIFRoZSBv
cmlnaW5hbCBDUHl0aG9uIGluc3BlY3QgbW9kdWxlLCBpdHMgdW5pdCB0ZXN0cyBhbmQKIGRvY3Vt
ZW50YXRpb24gYXJlIHRoZSBjb3B5cmlnaHQgb2YgdGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0
aW9uLiBUaGUgZGVyaXZlZAogd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgYEFwYWNoZSBM
aWNlbnNlIFZlcnNpb24gMi4wYF8uCiAKKy4uIF9QU0YgTGljZW5zZSBBZ3JlZW1lbnQ6IGh0dHA6
Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWNlbnNlLmh0bWwjdGVybXMtYW5kLWNvbmRpdGlvbnMtZm9y
LWFjY2Vzc2luZy1vci1vdGhlcndpc2UtdXNpbmctcHl0aG9uCiAuLiBfQXBhY2hlIExpY2Vuc2Ug
VmVyc2lvbiAyLjA6IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wCi0u
LiBfR2l0SHViOiBodHRwczovL2dpdGh1Yi5jb20vYWxpbGVzL2Z1bmNzaWdzCisuLiBfR2l0SHVi
OiBodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1jYWJhbC9mdW5jc2lncwogLi4gX1BTRiBMaWNl
bnNlIEFncmVlbWVudDogaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zL2xpY2Vuc2UuaHRtbCN0ZXJt
cy1hbmQtY29uZGl0aW9ucy1mb3ItYWNjZXNzaW5nLW9yLW90aGVyd2lzZS11c2luZy1weXRob24K
IC4uIF9UcmF2aXMgQ0k6IGh0dHA6Ly90cmF2aXMtY2kub3JnLwogLi4gX1JlYWQgVGhlIERvY3M6
IGh0dHA6Ly9mdW5jc2lncy5yZWFkdGhlZG9jcy5vcmcvCiAuLiBfUEVQIDM2MjogaHR0cDovL3d3
dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzYyLwogLi4gX2luc3BlY3Q6IGh0dHA6Ly9kb2Nz
LnB5dGhvbi5vcmcvMy9saWJyYXJ5L2luc3BlY3QuaHRtbCNpbnRyb3NwZWN0aW5nLWNhbGxhYmxl
cy13aXRoLXRoZS1zaWduYXR1cmUtb2JqZWN0Ci0uLiBfaXNzdWVzIHN5c3RlbTogaHR0cHM6Ly9n
aXRodWIuY29tL2FsaWVzL2Z1bmNzaWdzL2lzc3VlcworLi4gX2lzc3VlcyBzeXN0ZW06IGh0dHBz
Oi8vZ2l0aHViLmNvbS90ZXN0aW5nLWNhYmFsL2Z1bmNzaWdzL2lzc3VlcwogCiAuLiB8YnVpbGRf
c3RhdHVzfCBpbWFnZTo6IGh0dHBzOi8vc2VjdXJlLnRyYXZpcy1jaS5vcmcvYWxpbGVzL2Z1bmNz
aWdzLnBuZz9icmFuY2g9bWFzdGVyCiAgICA6dGFyZ2V0OiBodHRwOi8vdHJhdmlzLWNpLm9yZy8j
IS9hbGlsZXMvZnVuY3NpZ3MKQEAgLTgxLDMgKzM0OSw1IEBAIHdvcmsgaXMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIGBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMGBfLgogLi4gfHB5cGlfdmVyc2lv
bnwgaW1hZ2U6OiBodHRwczovL3B5cGlwLmluL3YvZnVuY3NpZ3MvYmFkZ2UucG5nCiAgICA6dGFy
Z2V0OiBodHRwczovL2NyYXRlLmlvL3BhY2thZ2VzL2Z1bmNzaWdzLwogICAgOmFsdDogTGF0ZXN0
IFB5UEkgdmVyc2lvbgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9fdGVtcGxh
dGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL190ZW1wbGF0ZXMvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMzI1MTI5NGEwZi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9fdGVtcGxhdGVzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy9kb2NzL190ZW1wbGF0ZXMvcGFnZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Rv
Y3MvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL2luZGV4LnJzdAppbmRleCA1ZDBmNDJm
OTM2OGIuLjg5YTAxMDY5NDFmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL2luZGV4
LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvaW5kZXgucnN0CkBAIC0xLDMxNSArMSBAQAot
Li4gZnVuY3NpZ3MgZG9jdW1lbnRhdGlvbiBtYXN0ZXIgZmlsZSwgY3JlYXRlZCBieQotICAgc3Bo
aW54LXF1aWNrc3RhcnQgb24gRnJpIEFwciAyMCAyMDoyNzo1MiAyMDEyLgotICAgWW91IGNhbiBh
ZGFwdCB0aGlzIGZpbGUgY29tcGxldGVseSB0byB5b3VyIGxpa2luZywgYnV0IGl0IHNob3VsZCBh
dCBsZWFzdAotICAgY29udGFpbiB0aGUgcm9vdCBgdG9jdHJlZWAgZGlyZWN0aXZlLgotCi1JbnRy
b2R1Y2luZyBmdW5jc2lncwotPT09PT09PT09PT09PT09PT09PT0KLQotVGhlIEZ1bmNzaWdzIFBh
Y2thZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSpmdW5jc2lncyogaXMgYSBiYWNrcG9ydCBv
ZiB0aGUgYFBFUCAzNjJgXyBmdW5jdGlvbiBzaWduYXR1cmUgZmVhdHVyZXMgZnJvbQotUHl0aG9u
IDMuMydzIGBpbnNwZWN0YF8gbW9kdWxlLiBUaGUgYmFja3BvcnQgaXMgY29tcGF0aWJsZSB3aXRo
IFB5dGhvbiAyLjYsIDIuNwotYXMgd2VsbCBhcyAzLjIgYW5kIHVwLgotCi0uLiBfUEVQIDM2Mjog
aHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzYyLwotLi4gX2luc3BlY3Q6IGh0
dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2luc3BlY3QuaHRtbCNpbnRyb3NwZWN0aW5n
LWNhbGxhYmxlcy13aXRoLXRoZS1zaWduYXR1cmUtb2JqZWN0Ci0KLUNvbXBhdGFiaWxpdHkKLWBg
YGBgYGBgYGBgYGAKLQotVGhlICpmdW5jc2lncyogYmFja3BvcnQgaGFzIGJlZW4gdGVzdGVkIGFn
YWluc3Q6Ci0KLSogQ1B5dGhvbiAyLjYKLSogQ1B5dGhvbiAyLjcKLSogQ1B5dGhvbiAzLjIKLSog
UHlQeSAxLjkKLQotQ29udGludW91cyBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGlzIHByb3ZpZGVkIGJ5
IGBUcmF2aXMgQ0lgXy4KLQotVW5kZXIgUHl0aG9uIDIueCB0aGVyZSBpcyBhIGNvbXBhdGFiaWxp
dHkgaXNzdWUgd2hlbiBhIGZ1bmN0aW9uIGlzIGFzc2lnbmVkIHRvCi10aGUgYGBfX3dyYXBwZWRf
X2BgIHByb3BlcnR5IG9mIGEgY2xhc3MgYWZ0ZXIgaXQgaGFzIGJlZW4gY29uc3RydWN0ZWQuCi1T
aW1pbGlhcmlseSB0aGVyZSB1bmRlciBQeVB5IGRpcmVjdGx5IHBhc3NpbmcgdGhlIGBgX19jYWxs
X19gYCBtZXRob2Qgb2YgYQotYnVpbHRpbiBpcyBhbHNvIGEgY29tcGF0YWJpbGl0eSBpc3N1ZXMu
ICBPdGhlcndpc2UgdGhlIGZ1bmN0aW9uYWxpdHkgaXMKLWJlbGlldmVkIHRvIGJlIHVuaWZvcm0g
YmV0d2VlbiBib3RoIFB5dGhvbjIgYW5kIFB5dGhvbjMuCi0KLS4uIF9UcmF2aXMgQ0k6IGh0dHA6
Ly90cmF2aXMtY2kub3JnLwotCi1Jc3N1ZXMKLWBgYGBgYAotCi1Tb3VyY2UgY29kZSBmb3IgKmZ1
bmNzaWdzKiBpcyBob3N0ZWQgb24gYEdpdEh1YmBfLiBBbnkgYnVnIHJlcG9ydHMgb3IgZmVhdHVy
ZQotcmVxdWVzdHMgY2FuIGJlIG1hZGUgdXNpbmcgR2l0SHViJ3MgYGlzc3VlcyBzeXN0ZW1gXy4K
LQotLi4gX0dpdEh1YjogaHR0cHM6Ly9naXRodWIuY29tL2FsaWxlcy9mdW5jc2lncwotLi4gX2lz
c3VlcyBzeXN0ZW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGllcy9mdW5jc2lncy9pc3N1ZXMKLQot
SW50cm9zcGVjdGluZyBjYWxsYWJsZXMgd2l0aCB0aGUgU2lnbmF0dXJlIG9iamVjdAotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBub3RlOjoK
LQotICAgVGhpcyBzZWN0aW9uIG9mIGRvY3VtZW50YXRpb24gaXMgYSBkaXJlY3QgcmVwb2R1Y3Rp
b24gb2YgdGhlIFB5dGhvbgotICAgc3RhbmRhcmQgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvciB0
aGUgaW5zcGVjdCBtb2R1bGUuCi0KLVRoZSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhl
IGNhbGwgc2lnbmF0dXJlIG9mIGEgY2FsbGFibGUgb2JqZWN0IGFuZCBpdHMKLXJldHVybiBhbm5v
dGF0aW9uLiAgVG8gcmV0cmlldmUgYSBTaWduYXR1cmUgb2JqZWN0LCB1c2UgdGhlIDpmdW5jOmBz
aWduYXR1cmVgCi1mdW5jdGlvbi4KLQotLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFibGUp
Ci0KLSAgIFJldHVybiBhIDpjbGFzczpgU2lnbmF0dXJlYCBvYmplY3QgZm9yIHRoZSBnaXZlbiBg
YGNhbGxhYmxlYGA6OgotCi0gICAgICA+Pj4gZnJvbSBpbnNwZWN0IGltcG9ydCBzaWduYXR1cmUK
LSAgICAgID4+PiBkZWYgZm9vKGEsICosIGI6aW50LCAqKmt3YXJncyk6Ci0gICAgICAuLi4gICAg
IHBhc3MKLQotICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZShmb28pCi0KLSAgICAgID4+PiBzdHIo
c2lnKQotICAgICAgJyhhLCAqLCBiOmludCwgKiprd2FyZ3MpJwotCi0gICAgICA+Pj4gc3RyKHNp
Zy5wYXJhbWV0ZXJzWydiJ10pCi0gICAgICAnYjppbnQnCi0KLSAgICAgID4+PiBzaWcucGFyYW1l
dGVyc1snYiddLmFubm90YXRpb24KLSAgICAgIDxjbGFzcyAnaW50Jz4KLQotICAgQWNjZXB0cyBh
IHdpZGUgcmFuZ2Ugb2YgcHl0aG9uIGNhbGxhYmxlcywgZnJvbSBwbGFpbiBmdW5jdGlvbnMgYW5k
IGNsYXNzZXMgdG8KLSAgIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgb2JqZWN0cy4KLQotICAg
Li4gbm90ZTo6Ci0KLSAgICAgIFNvbWUgY2FsbGFibGVzIG1heSBub3QgYmUgaW50cm9zcGVjdGFi
bGUgaW4gY2VydGFpbiBpbXBsZW1lbnRhdGlvbnMgb2YKLSAgICAgIFB5dGhvbi4gIEZvciBleGFt
cGxlLCBpbiBDUHl0aG9uLCBidWlsdC1pbiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBDIHByb3ZpZGUK
LSAgICAgIG5vIG1ldGFkYXRhIGFib3V0IHRoZWlyIGFyZ3VtZW50cy4KLQotCi0uLiBjbGFzczo6
IFNpZ25hdHVyZQotCi0gICBBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgY2FsbCBz
aWduYXR1cmUgb2YgYSBmdW5jdGlvbiBhbmQgaXRzIHJldHVybgotICAgYW5ub3RhdGlvbi4gIEZv
ciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUgZnVuY3Rpb24gaXQgc3RvcmVzIGEKLSAg
IDpjbGFzczpgUGFyYW1ldGVyYCBvYmplY3QgaW4gaXRzIDphdHRyOmBwYXJhbWV0ZXJzYCBjb2xs
ZWN0aW9uLgotCi0gICBTaWduYXR1cmUgb2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBVc2UgOm1l
dGg6YFNpZ25hdHVyZS5yZXBsYWNlYCB0byBtYWtlIGEKLSAgIG1vZGlmaWVkIGNvcHkuCi0KLSAg
IC4uIGF0dHJpYnV0ZTo6IFNpZ25hdHVyZS5lbXB0eQotCi0gICAgICBBIHNwZWNpYWwgY2xhc3Mt
bGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBhIHJldHVybiBhbm5vdGF0aW9uLgot
Ci0gICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUucGFyYW1ldGVycwotCi0gICAgICBBbiBvcmRl
cmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKLSAg
ICAgIDpjbGFzczpgUGFyYW1ldGVyYCBvYmplY3RzLgotCi0gICAuLiBhdHRyaWJ1dGU6OiBTaWdu
YXR1cmUucmV0dXJuX2Fubm90YXRpb24KLQotICAgICAgVGhlICJyZXR1cm4iIGFubm90YXRpb24g
Zm9yIHRoZSBjYWxsYWJsZS4gIElmIHRoZSBjYWxsYWJsZSBoYXMgbm8gInJldHVybiIKLSAgICAg
IGFubm90YXRpb24sIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgU2lnbmF0dXJlLmVt
cHR5YC4KLQotICAgLi4gbWV0aG9kOjogU2lnbmF0dXJlLmJpbmQoKmFyZ3MsICoqa3dhcmdzKQot
Ci0gICAgICBDcmVhdGUgYSBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1
bWVudHMgdG8gcGFyYW1ldGVycy4KLSAgICAgIFJldHVybnMgOmNsYXNzOmBCb3VuZEFyZ3VtZW50
c2AgaWYgYGAqYXJnc2BgIGFuZCBgYCoqa3dhcmdzYGAgbWF0Y2ggdGhlCi0gICAgICBzaWduYXR1
cmUsIG9yIHJhaXNlcyBhIDpleGM6YFR5cGVFcnJvcmAuCi0KLSAgIC4uIG1ldGhvZDo6IFNpZ25h
dHVyZS5iaW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgICBXb3JrcyB0aGUgc2Ft
ZSB3YXkgYXMgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCwgYnV0IGFsbG93cyB0aGUgb21pc3Npb24g
b2YKLSAgICAgIHNvbWUgcmVxdWlyZWQgYXJndW1lbnRzIChtaW1pY3MgOmZ1bmM6YGZ1bmN0b29s
cy5wYXJ0aWFsYCBiZWhhdmlvci4pCi0gICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVu
dHNgLCBvciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZQotICAgICAgcGFzc2VkIGFy
Z3VtZW50cyBkbyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZS4KLQotICAgLi4gbWV0aG9kOjogU2ln
bmF0dXJlLnJlcGxhY2UoKlssIHBhcmFtZXRlcnNdWywgcmV0dXJuX2Fubm90YXRpb25dKQotCi0g
ICAgICBDcmVhdGUgYSBuZXcgU2lnbmF0dXJlIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnN0YW5j
ZSByZXBsYWNlIHdhcyBpbnZva2VkCi0gICAgICBvbi4gIEl0IGlzIHBvc3NpYmxlIHRvIHBhc3Mg
ZGlmZmVyZW50IGBgcGFyYW1ldGVyc2BgIGFuZC9vcgotICAgICAgYGByZXR1cm5fYW5ub3RhdGlv
bmBgIHRvIG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgb2YgdGhlIGJhc2UK
LSAgICAgIHNpZ25hdHVyZS4gIFRvIHJlbW92ZSByZXR1cm5fYW5ub3RhdGlvbiBmcm9tIHRoZSBj
b3BpZWQgU2lnbmF0dXJlLCBwYXNzIGluCi0gICAgICA6YXR0cjpgU2lnbmF0dXJlLmVtcHR5YC4K
LQotICAgICAgOjoKLQotICAgICAgICAgPj4+IGRlZiB0ZXN0KGEsIGIpOgotICAgICAgICAgLi4u
ICAgICBwYXNzCi0gICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKHRlc3QpCi0gICAgICAgICA+
Pj4gbmV3X3NpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPSJuZXcgcmV0dXJuIGFu
bm8iKQotICAgICAgICAgPj4+IHN0cihuZXdfc2lnKQotICAgICAgICAgIihhLCBiKSAtPiAnbmV3
IHJldHVybiBhbm5vJyIKLQotCi0uLiBjbGFzczo6IFBhcmFtZXRlcgotCi0gICBQYXJhbWV0ZXIg
b2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBJbnN0ZWFkIG9mIG1vZGlmeWluZyBhIFBhcmFtZXRl
ciBvYmplY3QsCi0gICB5b3UgY2FuIHVzZSA6bWV0aDpgUGFyYW1ldGVyLnJlcGxhY2VgIHRvIGNy
ZWF0ZSBhIG1vZGlmaWVkIGNvcHkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5lbXB0
eQotCi0gICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5j
ZSBvZiBkZWZhdWx0IHZhbHVlcyBhbmQKLSAgICAgIGFubm90YXRpb25zLgotCi0gICAuLiBhdHRy
aWJ1dGU6OiBQYXJhbWV0ZXIubmFtZQotCi0gICAgICBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVy
IGFzIGEgc3RyaW5nLiAgTXVzdCBiZSBhIHZhbGlkIHB5dGhvbiBpZGVudGlmaWVyCi0gICAgICBu
YW1lICh3aXRoIHRoZSBleGNlcHRpb24gb2YgYGBQT1NJVElPTkFMX09OTFlgYCBwYXJhbWV0ZXJz
LCB3aGljaCBjYW4gaGF2ZQotICAgICAgaXQgc2V0IHRvIGBgTm9uZWBgKS4KLQotICAgLi4gYXR0
cmlidXRlOjogUGFyYW1ldGVyLmRlZmF1bHQKLQotICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9y
IHRoZSBwYXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBkZWZhdWx0Ci0gICAgICB2
YWx1ZSwgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgot
Ci0gICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuYW5ub3RhdGlvbgotCi0gICAgICBUaGUgYW5u
b3RhdGlvbiBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGFubm90
YXRpb24sCi0gICAgICB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFBhcmFtZXRlci5l
bXB0eWAuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5raW5kCi0KLSAgICAgIERlc2Ny
aWJlcyBob3cgYXJndW1lbnQgdmFsdWVzIGFyZSBib3VuZCB0byB0aGUgcGFyYW1ldGVyLiAgUG9z
c2libGUgdmFsdWVzCi0gICAgICAoYWNjZXNzaWJsZSB2aWEgOmNsYXNzOmBQYXJhbWV0ZXJgLCBs
aWtlIGBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWBgKToKLQotICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotICAgICAgfCAgICBOYW1lICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09
PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgICAg
fCAqUE9TSVRJT05BTF9PTkxZKiAgICAgIHwgVmFsdWUgbXVzdCBiZSBzdXBwbGllZCBhcyBhIHBv
c2l0aW9uYWwgICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1l
bnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGhhcyBubyBl
eHBsaWNpdCBzeW50YXggZm9yIGRlZmluaW5nICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgIHwgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMsIGJ1dCBtYW55IGJ1aWx0LWlufAot
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kIGV4dGVuc2lvbiBtb2R1bGUgZnVu
Y3Rpb25zIChlc3BlY2lhbGx5ICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwg
dGhvc2UgdGhhdCBhY2NlcHQgb25seSBvbmUgb3IgdHdvIHBhcmFtZXRlcnMpfAotICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgIHwgYWNjZXB0IHRoZW0uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAqUE9TSVRJT05B
TF9PUl9LRVlXT1JEKnwgVmFsdWUgbWF5IGJlIHN1cHBsaWVkIGFzIGVpdGhlciBhIGtleXdvcmQg
b3IgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgcG9zaXRpb25hbCBhcmd1bWVu
dCAodGhpcyBpcyB0aGUgc3RhbmRhcmQgICAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgIHwgYmluZGluZyBiZWhhdmlvdXIgZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCAgfAotICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgaW4gUHl0aG9uLikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAqVkFS
X1BPU0lUSU9OQUwqICAgICAgIHwgQSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGF0
IGFyZW4ndCAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgYm91bmQgdG8gYW55
IG90aGVyIHBhcmFtZXRlci4gVGhpcyAgICAgICAgICAgfAotICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgY29ycmVzcG9uZHMgdG8gYSBgYCphcmdzYGAgcGFyYW1ldGVyIGluIGEgICAg
fAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGZ1bmN0aW9uIGRlZmlu
aXRpb24uICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAg
fCAqS0VZV09SRF9PTkxZKiAgICAgICAgIHwgVmFsdWUgbXVzdCBiZSBzdXBwbGllZCBhcyBhIGtl
eXdvcmQgYXJndW1lbnQufAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgS2V5d29y
ZCBvbmx5IHBhcmFtZXRlcnMgYXJlIHRob3NlIHdoaWNoICAgICAgfAotICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgIHwgYXBwZWFyIGFmdGVyIGEgYGAqYGAgb3IgYGAqYXJnc2BgIGVudHJ5
IGluIGEgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIGZ1bmN0aW9u
IGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
ICAgICAgfCAqVkFSX0tFWVdPUkQqICAgICAgICAgIHwgQSBkaWN0IG9mIGtleXdvcmQgYXJndW1l
bnRzIHRoYXQgYXJlbid0IGJvdW5kfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwg
dG8gYW55IG90aGVyIHBhcmFtZXRlci4gVGhpcyBjb3JyZXNwb25kcyB0byBhfAotICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgIHwgYGAqKmt3YXJnc2BgIHBhcmFtZXRlciBpbiBhIFB5dGhv
biBmdW5jdGlvbiAgfAotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmaW5pdGlv
bi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotCi0gICAgICBFeGFtcGxlOiBwcmludCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3
aXRob3V0IGRlZmF1bHQgdmFsdWVzOjoKLQotICAgICAgICAgPj4+IGRlZiBmb28oYSwgYiwgKiwg
YywgZD0xMCk6Ci0gICAgICAgICAuLi4gICAgIHBhc3MKLQotICAgICAgICAgPj4+IHNpZyA9IHNp
Z25hdHVyZShmb28pCi0gICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZh
bHVlcygpOgotICAgICAgICAgLi4uICAgICBpZiAocGFyYW0ua2luZCA9PSBwYXJhbS5LRVlXT1JE
X09OTFkgYW5kCi0gICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZh
dWx0IGlzIHBhcmFtLmVtcHR5KToKLSAgICAgICAgIC4uLiAgICAgICAgIHByaW50KCdQYXJhbWV0
ZXI6JywgcGFyYW0pCi0gICAgICAgICBQYXJhbWV0ZXI6IGMKLQotICAgLi4gbWV0aG9kOjogUGFy
YW1ldGVyLnJlcGxhY2UoKlssIG5hbWVdWywga2luZF1bLCBkZWZhdWx0XVssIGFubm90YXRpb25d
KQotCi0gICAgICBDcmVhdGUgYSBuZXcgUGFyYW1ldGVyIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBp
bnN0YW5jZSByZXBsYWNlZCB3YXMgaW52b2tlZAotICAgICAgb24uICBUbyBvdmVycmlkZSBhIDpj
bGFzczpgUGFyYW1ldGVyYCBhdHRyaWJ1dGUsIHBhc3MgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAg
IGFyZ3VtZW50LiAgVG8gcmVtb3ZlIGEgZGVmYXVsdCB2YWx1ZSBvci9hbmQgYW4gYW5ub3RhdGlv
biBmcm9tIGEKLSAgICAgIFBhcmFtZXRlciwgcGFzcyA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4K
LQotICAgICAgOjoKLQotICAgICAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgUGFyYW1ldGVy
Ci0gICAgICAgICA+Pj4gcGFyYW0gPSBQYXJhbWV0ZXIoJ2ZvbycsIFBhcmFtZXRlci5LRVlXT1JE
X09OTFksIGRlZmF1bHQ9NDIpCi0gICAgICAgICA+Pj4gc3RyKHBhcmFtKQotICAgICAgICAgJ2Zv
bz00MicKLQotICAgICAgICAgPj4+IHN0cihwYXJhbS5yZXBsYWNlKCkpICMgV2lsbCBjcmVhdGUg
YSBzaGFsbG93IGNvcHkgb2YgJ3BhcmFtJwotICAgICAgICAgJ2Zvbz00MicKLQotICAgICAgICAg
Pj4+IHN0cihwYXJhbS5yZXBsYWNlKGRlZmF1bHQ9UGFyYW1ldGVyLmVtcHR5LCBhbm5vdGF0aW9u
PSdzcGFtJykpCi0gICAgICAgICAiZm9vOidzcGFtJyIKLQotCi0uLiBjbGFzczo6IEJvdW5kQXJn
dW1lbnRzCi0KLSAgIFJlc3VsdCBvZiBhIDptZXRoOmBTaWduYXR1cmUuYmluZGAgb3IgOm1ldGg6
YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIGNhbGwuCi0gICBIb2xkcyB0aGUgbWFwcGluZyBvZiBh
cmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KLQotICAgLi4gYXR0cmlidXRl
OjogQm91bmRBcmd1bWVudHMuYXJndW1lbnRzCi0KLSAgICAgIEFuIG9yZGVyZWQsIG11dGFibGUg
bWFwcGluZyAoOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGApIG9mCi0gICAgICBwYXJh
bWV0ZXJzJyBuYW1lcyB0byBhcmd1bWVudHMnIHZhbHVlcy4gIENvbnRhaW5zIG9ubHkgZXhwbGlj
aXRseSBib3VuZAotICAgICAgYXJndW1lbnRzLiAgQ2hhbmdlcyBpbiA6YXR0cjpgYXJndW1lbnRz
YCB3aWxsIHJlZmxlY3QgaW4gOmF0dHI6YGFyZ3NgIGFuZAotICAgICAgOmF0dHI6YGt3YXJnc2Au
Ci0KLSAgICAgIFNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmF0dHI6YFNpZ25h
dHVyZS5wYXJhbWV0ZXJzYCBmb3IgYW55Ci0gICAgICBhcmd1bWVudCBwcm9jZXNzaW5nIHB1cnBv
c2VzLgotCi0gICAgICAuLiBub3RlOjoKLQotICAgICAgICAgQXJndW1lbnRzIGZvciB3aGljaCA6
bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yCi0gICAgICAgICA6bWV0aDpgU2lnbmF0dXJlLmJpbmRf
cGFydGlhbGAgcmVsaWVkIG9uIGEgZGVmYXVsdCB2YWx1ZSBhcmUgc2tpcHBlZC4KLSAgICAgICAg
IEhvd2V2ZXIsIGlmIG5lZWRlZCwgaXQgaXMgZWFzeSB0byBpbmNsdWRlIHRoZW0uCi0KLSAgICAg
IDo6Ci0KLSAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0xMCk6Ci0gICAgICAgIC4uLiAgICAgcGFz
cwotCi0gICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQotICAgICAgICA+Pj4gYmEgPSBz
aWcuYmluZCg1KQotCi0gICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKLSAgICAgICAgKCg1
LCksIHt9KQotCi0gICAgICAgID4+PiBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVz
KCk6Ci0gICAgICAgIC4uLiAgICAgaWYgcGFyYW0ubmFtZSBub3QgaW4gYmEuYXJndW1lbnRzOgot
ICAgICAgICAuLi4gICAgICAgICBiYS5hcmd1bWVudHNbcGFyYW0ubmFtZV0gPSBwYXJhbS5kZWZh
dWx0Ci0KLSAgICAgICAgPj4+IGJhLmFyZ3MsIGJhLmt3YXJncwotICAgICAgICAoKDUsIDEwKSwg
e30pCi0KLQotICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMuYXJncwotCi0gICAgICBB
IHR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZhbHVlcy4gIER5bmFtaWNhbGx5IGNvbXB1
dGVkIGZyb20gdGhlCi0gICAgICA6YXR0cjpgYXJndW1lbnRzYCBhdHRyaWJ1dGUuCi0KLSAgIC4u
IGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmt3YXJncwotCi0gICAgICBBIGRpY3Qgb2Yga2V5
d29yZCBhcmd1bWVudHMgdmFsdWVzLiAgRHluYW1pY2FsbHkgY29tcHV0ZWQgZnJvbSB0aGUKLSAg
ICAgIDphdHRyOmBhcmd1bWVudHNgIGF0dHJpYnV0ZS4KLQotICAgVGhlIDphdHRyOmBhcmdzYCBh
bmQgOmF0dHI6YGt3YXJnc2AgcHJvcGVydGllcyBjYW4gYmUgdXNlZCB0byBpbnZva2UKLSAgIGZ1
bmN0aW9uczo6Ci0KLSAgICAgIGRlZiB0ZXN0KGEsICosIGIpOgotICAgICAgICAgLi4uCi0KLSAg
ICAgIHNpZyA9IHNpZ25hdHVyZSh0ZXN0KQotICAgICAgYmEgPSBzaWcuYmluZCgxMCwgYj0yMCkK
LSAgICAgIHRlc3QoKmJhLmFyZ3MsICoqYmEua3dhcmdzKQotCi0KLS4uIHNlZWFsc286OgotCi0g
ICA6cGVwOmAzNjJgIC0gRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdC4KLSAgICAgIFRoZSBkZXRh
aWxlZCBzcGVjaWZpY2F0aW9uLCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBleGFtcGxlcy4K
LQotQ29weXJpZ2h0Ci0tLS0tLS0tLS0KLQotKmZ1bmNzaWdzKiBpcyBhIGRlcml2ZWQgd29yayBv
ZiBDUHl0aG9uIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgYFBTRiBMaWNlbnNlCi1BZ3JlZW1lbnRg
Xy4gVGhlIG9yaWdpbmFsIENQeXRob24gaW5zcGVjdCBtb2R1bGUsIGl0cyB1bml0IHRlc3RzIGFu
ZAotZG9jdW1lbnRhdGlvbiBhcmUgdGhlIGNvcHlyaWdodCBvZiB0aGUgUHl0aG9uIFNvZnR3YXJl
IEZvdW5kYXRpb24uIFRoZSBkZXJpdmVkCi13b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBg
QXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjBgXy4KLQotLi4gX1BTRiBMaWNlbnNlIEFncmVlbWVu
dDogaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zL2xpY2Vuc2UuaHRtbCN0ZXJtcy1hbmQtY29uZGl0
aW9ucy1mb3ItYWNjZXNzaW5nLW9yLW90aGVyd2lzZS11c2luZy1weXRob24KLS4uIF9BcGFjaGUg
TGljZW5zZSBWZXJzaW9uIDIuMDogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0FwYWNo
ZS0yLjAKKy4uL1JFQURNRS5yc3QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Rv
Y3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNGNjODAw
ODFkMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mv
ZG9jcy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy9kb2NzL2luZGV4LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3MvX19pbml0X18ucHkKaW5kZXggZmQyZjQ3
YjFkNGRmLi41ZjUzNzhiNDJhNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3Mv
X19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy9fX2luaXRfXy5weQpAQCAt
Miw3ICsyLDcgQEAKICIiIkZ1bmN0aW9uIHNpZ25hdHVyZSBvYmplY3RzIGZvciBjYWxsYWJsZXMK
IAogQmFjayBwb3J0IG9mIFB5dGhvbiAzLjMncyBmdW5jdGlvbiBzaWduYXR1cmUgdG9vbHMgZnJv
bSB0aGUgaW5zcGVjdCBtb2R1bGUsCi1tb2RpZmllZCB0byBiZSBjb21wYXRpYmxlIHdpdGggUHl0
aG9uIDIuNiwgMi43IGFuZCAzLjIrLgorbW9kaWZpZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIFB5
dGhvbiAyLjYsIDIuNyBhbmQgMy4zKy4KICIiIgogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGl0ZXJ0b29scwpA
QCAtMTMsNyArMTMsNyBAQCBpbXBvcnQgdHlwZXMKIHRyeToKICAgICBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBPcmRlcmVkRGljdAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gZnVuY3Np
Z3Mub2RpY3QgaW1wb3J0IE9yZGVyZWREaWN0CisgICAgZnJvbSBvcmRlcmVkZGljdCBpbXBvcnQg
T3JkZXJlZERpY3QKIAogZnJvbSBmdW5jc2lncy52ZXJzaW9uIGltcG9ydCBfX3ZlcnNpb25fXwog
CkBAIC02MSwxOCArNjEsMjkgQEAgZGVmIHNpZ25hdHVyZShvYmopOgogICAgIGlmIGlzaW5zdGFu
Y2Uob2JqLCB0eXBlcy5NZXRob2RUeXBlKToKICAgICAgICAgc2lnID0gc2lnbmF0dXJlKG9iai5f
X2Z1bmNfXykKICAgICAgICAgaWYgb2JqLl9fc2VsZl9fIGlzIE5vbmU6Ci0gICAgICAgICAgICAj
IFVuYm91bmQgbWV0aG9kOiB0aGUgZmlyc3QgcGFyYW1ldGVyIGJlY29tZXMgcG9zaXRpb25hbC1v
bmx5Ci0gICAgICAgICAgICBpZiBzaWcucGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICBmaXJz
dCA9IHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpWzBdLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAg
ICAgIGtpbmQ9X1BPU0lUSU9OQUxfT05MWSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2lnLnJl
cGxhY2UoCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM9KGZpcnN0LCkgKyB0dXBsZShz
aWcucGFyYW1ldGVycy52YWx1ZXMoKSlbMTpdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2lnCisgICAgICAgICAgICAjIFVuYm91bmQgbWV0aG9kIC0gcHJlc2Vy
dmUgYXMtaXMuCisgICAgICAgICAgICByZXR1cm4gc2lnCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAjIEluIHRoaXMgY2FzZSB3ZSBza2lwIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHVu
ZGVybHlpbmcKLSAgICAgICAgICAgICMgZnVuY3Rpb24gKHVzdWFsbHkgYHNlbGZgIG9yIGBjbHNg
KS4KLSAgICAgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5w
YXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisgICAgICAgICAgICAjIEJvdW5kIG1ldGhvZC4gRWF0
IHNlbGYgLSBpZiB3ZSBjYW4uCisgICAgICAgICAgICBwYXJhbXMgPSB0dXBsZShzaWcucGFyYW1l
dGVycy52YWx1ZXMoKSkKKworICAgICAgICAgICAgaWYgbm90IHBhcmFtcyBvciBwYXJhbXNbMF0u
a2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKToKKyAgICAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIG1ldGhvZCBzaWduYXR1cmUnKQorCisgICAgICAgICAg
ICBraW5kID0gcGFyYW1zWzBdLmtpbmQKKyAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9QT1NJVElP
TkFMX09SX0tFWVdPUkQsIF9QT1NJVElPTkFMX09OTFkpOgorICAgICAgICAgICAgICAgICMgRHJv
cCBmaXJzdCBwYXJhbWV0ZXI6CisgICAgICAgICAgICAgICAgIyAnKHAxLCBwMlssIC4uLl0pJyAt
PiAnKHAyWywgLi4uXSknCisgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zWzE6XQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBraW5kIGlzIG5vdCBfVkFSX1BPU0lU
SU9OQUw6CisgICAgICAgICAgICAgICAgICAgICMgVW5sZXNzIHdlIGFkZCBhIG5ldyBwYXJhbWV0
ZXIgdHlwZSB3ZSBuZXZlcgorICAgICAgICAgICAgICAgICAgICAjIGdldCBoZXJlCisgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgYXJndW1lbnQgdHlwZScpCisg
ICAgICAgICAgICAgICAgIyBJdCdzIGEgdmFyLXBvc2l0aW9uYWwgcGFyYW1ldGVyLgorICAgICAg
ICAgICAgICAgICMgRG8gbm90aGluZy4gJygqYXJnc1ssIC4uLl0pJyAtPiAnKCphcmdzWywgLi4u
XSknCisKKyAgICAgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXBhcmFtcykK
IAogICAgIHRyeToKICAgICAgICAgc2lnID0gb2JqLl9fc2lnbmF0dXJlX18KQEAgLTc2OSwxNiAr
NzgwLDE2IEBAIGNsYXNzIFNpZ25hdHVyZShvYmplY3QpOgogICAgICAgICAgICAgICAgICMgUHJv
Y2VzcyBvdXIgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c1trd2FyZ3NfcGFyYW0ubmFtZV0gPSBrd2FyZ3MKICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycp
CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBrZXl3b3JkIGFyZ3Vt
ZW50cyAlcicgJSBrd2FyZ3MpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50
c19jbHMoc2VsZiwgYXJndW1lbnRzKQogCi0gICAgZGVmIGJpbmQoc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgICBkZWYgYmluZCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAnJydHZXQgYSBC
b3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgbWFwcyB0aGUgcGFzc2VkIGBhcmdzYAogICAgICAg
ICBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiAgUmFpc2VzIGBUeXBl
RXJyb3JgCiAgICAgICAgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQu
CiAgICAgICAgICcnJwotICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MpCisg
ICAgICAgIHJldHVybiBhcmdzWzBdLl9iaW5kKGFyZ3NbMTpdLCBrd2FyZ3MpCiAKICAgICBkZWYg
YmluZF9wYXJ0aWFsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICcnJ0dldCBhIEJv
dW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3Mvb2RpY3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdz
L29kaWN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjIxZTk3MWIzNzkuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL29kaWN0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMjYxICswLDAgQEAKLSMgQmFja3BvcnQgb2YgT3JkZXJlZERpY3QoKSBjbGFz
cyB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCwgMi41LCAyLjYsIDIuNyBhbmQgcHlweS4KLSMgUGFz
c2VzIFB5dGhvbjIuNydzIHRlc3Qgc3VpdGUgYW5kIGluY29ycG9yYXRlcyBhbGwgdGhlIGxhdGVz
dCB1cGRhdGVzLgotIyBDb3B5cmlnaHQgMjAwOSBSYXltb25kIEhldHRpbmdlcgotIyBodHRwOi8v
Y29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvCi0iT3JkZXJlZCBkaWN0aW9uYXJ5
IgotCi10cnk6Ci0gICAgZnJvbSB0aHJlYWQgaW1wb3J0IGdldF9pZGVudCBhcyBfZ2V0X2lkZW50
Ci1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSBkdW1teV90aHJlYWQgaW1wb3J0IGdldF9p
ZGVudCBhcyBfZ2V0X2lkZW50Ci0KLXRyeToKLSAgICBmcm9tIF9hYmNvbGwgaW1wb3J0IEtleXNW
aWV3LCBWYWx1ZXNWaWV3LCBJdGVtc1ZpZXcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNz
Ci0KLQotY2xhc3MgT3JkZXJlZERpY3QoZGljdCk6Ci0gICAgJ0RpY3Rpb25hcnkgdGhhdCByZW1l
bWJlcnMgaW5zZXJ0aW9uIG9yZGVyJwotICAgICMgQW4gaW5oZXJpdGVkIGRpY3QgbWFwcyBrZXlz
IHRvIHZhbHVlcy4KLSAgICAjIFRoZSBpbmhlcml0ZWQgZGljdCBwcm92aWRlcyBfX2dldGl0ZW1f
XywgX19sZW5fXywgX19jb250YWluc19fLCBhbmQgZ2V0LgotICAgICMgVGhlIHJlbWFpbmluZyBt
ZXRob2RzIGFyZSBvcmRlci1hd2FyZS4KLSAgICAjIEJpZy1PIHJ1bm5pbmcgdGltZXMgZm9yIGFs
bCBtZXRob2RzIGFyZSB0aGUgc2FtZSBhcyBmb3IgcmVndWxhciBkaWN0aW9uYXJpZXMuCi0KLSAg
ICAjIFRoZSBpbnRlcm5hbCBzZWxmLl9fbWFwIGRpY3Rpb25hcnkgbWFwcyBrZXlzIHRvIGxpbmtz
IGluIGEgZG91Ymx5IGxpbmtlZCBsaXN0LgotICAgICMgVGhlIGNpcmN1bGFyIGRvdWJseSBsaW5r
ZWQgbGlzdCBzdGFydHMgYW5kIGVuZHMgd2l0aCBhIHNlbnRpbmVsIGVsZW1lbnQuCi0gICAgIyBU
aGUgc2VudGluZWwgZWxlbWVudCBuZXZlciBnZXRzIGRlbGV0ZWQgKHRoaXMgc2ltcGxpZmllcyB0
aGUgYWxnb3JpdGhtKS4KLSAgICAjIEVhY2ggbGluayBpcyBzdG9yZWQgYXMgYSBsaXN0IG9mIGxl
bmd0aCB0aHJlZTogIFtQUkVWLCBORVhULCBLRVldLgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
ICphcmdzLCAqKmt3ZHMpOgotICAgICAgICAnJydJbml0aWFsaXplIGFuIG9yZGVyZWQgZGljdGlv
bmFyeS4gIFNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhcyBmb3IKLSAgICAgICAgcmVndWxhciBkaWN0
aW9uYXJpZXMsIGJ1dCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgbm90IHJlY29tbWVuZGVkCi0gICAg
ICAgIGJlY2F1c2UgdGhlaXIgaW5zZXJ0aW9uIG9yZGVyIGlzIGFyYml0cmFyeS4KLQotICAgICAg
ICAnJycKLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcignZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihhcmdzKSkK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fX3Jvb3QKLSAgICAgICAgZXhjZXB0IEF0
dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgc2VsZi5fX3Jvb3QgPSByb290ID0gW10gICAgICAg
ICAgICAgICAgICAgICAjIHNlbnRpbmVsIG5vZGUKLSAgICAgICAgICAgIHJvb3RbOl0gPSBbcm9v
dCwgcm9vdCwgTm9uZV0KLSAgICAgICAgICAgIHNlbGYuX19tYXAgPSB7fQotICAgICAgICBzZWxm
Ll9fdXBkYXRlKCphcmdzLCAqKmt3ZHMpCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5
LCB2YWx1ZSwgZGljdF9zZXRpdGVtPWRpY3QuX19zZXRpdGVtX18pOgotICAgICAgICAnb2QuX19z
ZXRpdGVtX18oaSwgeSkgPD09PiBvZFtpXT15JwotICAgICAgICAjIFNldHRpbmcgYSBuZXcgaXRl
bSBjcmVhdGVzIGEgbmV3IGxpbmsgd2hpY2ggZ29lcyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5rZWQK
LSAgICAgICAgIyBsaXN0LCBhbmQgdGhlIGluaGVyaXRlZCBkaWN0aW9uYXJ5IGlzIHVwZGF0ZWQg
d2l0aCB0aGUgbmV3IGtleS92YWx1ZSBwYWlyLgotICAgICAgICBpZiBrZXkgbm90IGluIHNlbGY6
Ci0gICAgICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKLSAgICAgICAgICAgIGxhc3QgPSByb290
WzBdCi0gICAgICAgICAgICBsYXN0WzFdID0gcm9vdFswXSA9IHNlbGYuX19tYXBba2V5XSA9IFts
YXN0LCByb290LCBrZXldCi0gICAgICAgIGRpY3Rfc2V0aXRlbShzZWxmLCBrZXksIHZhbHVlKQot
Ci0gICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSwgZGljdF9kZWxpdGVtPWRpY3QuX19kZWxp
dGVtX18pOgotICAgICAgICAnb2QuX19kZWxpdGVtX18oeSkgPD09PiBkZWwgb2RbeV0nCi0gICAg
ICAgICMgRGVsZXRpbmcgYW4gZXhpc3RpbmcgaXRlbSB1c2VzIHNlbGYuX19tYXAgdG8gZmluZCB0
aGUgbGluayB3aGljaCBpcwotICAgICAgICAjIHRoZW4gcmVtb3ZlZCBieSB1cGRhdGluZyB0aGUg
bGlua3MgaW4gdGhlIHByZWRlY2Vzc29yIGFuZCBzdWNjZXNzb3Igbm9kZXMuCi0gICAgICAgIGRp
Y3RfZGVsaXRlbShzZWxmLCBrZXkpCi0gICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBrZXkg
PSBzZWxmLl9fbWFwLnBvcChrZXkpCi0gICAgICAgIGxpbmtfcHJldlsxXSA9IGxpbmtfbmV4dAot
ICAgICAgICBsaW5rX25leHRbMF0gPSBsaW5rX3ByZXYKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxm
KToKLSAgICAgICAgJ29kLl9faXRlcl9fKCkgPD09PiBpdGVyKG9kKScKLSAgICAgICAgcm9vdCA9
IHNlbGYuX19yb290Ci0gICAgICAgIGN1cnIgPSByb290WzFdCi0gICAgICAgIHdoaWxlIGN1cnIg
aXMgbm90IHJvb3Q6Ci0gICAgICAgICAgICB5aWVsZCBjdXJyWzJdCi0gICAgICAgICAgICBjdXJy
ID0gY3VyclsxXQotCi0gICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKLSAgICAgICAgJ29kLl9f
cmV2ZXJzZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpJwotICAgICAgICByb290ID0gc2VsZi5fX3Jv
b3QKLSAgICAgICAgY3VyciA9IHJvb3RbMF0KLSAgICAgICAgd2hpbGUgY3VyciBpcyBub3Qgcm9v
dDoKLSAgICAgICAgICAgIHlpZWxkIGN1cnJbMl0KLSAgICAgICAgICAgIGN1cnIgPSBjdXJyWzBd
Ci0KLSAgICBkZWYgY2xlYXIoc2VsZik6Ci0gICAgICAgICdvZC5jbGVhcigpIC0+IE5vbmUuICBS
ZW1vdmUgYWxsIGl0ZW1zIGZyb20gb2QuJwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3Ig
bm9kZSBpbiBzZWxmLl9fbWFwLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBkZWwgbm9k
ZVs6XQotICAgICAgICAgICAgcm9vdCA9IHNlbGYuX19yb290Ci0gICAgICAgICAgICByb290Wzpd
ID0gW3Jvb3QsIHJvb3QsIE5vbmVdCi0gICAgICAgICAgICBzZWxmLl9fbWFwLmNsZWFyKCkKLSAg
ICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBk
aWN0LmNsZWFyKHNlbGYpCi0KLSAgICBkZWYgcG9waXRlbShzZWxmLCBsYXN0PVRydWUpOgotICAg
ICAgICAnJydvZC5wb3BpdGVtKCkgLT4gKGssIHYpLCByZXR1cm4gYW5kIHJlbW92ZSBhIChrZXks
IHZhbHVlKSBwYWlyLgotICAgICAgICBQYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBp
ZiBsYXN0IGlzIHRydWUgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KLQotICAgICAgICAnJycKLSAg
ICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcignZGljdGlvbmFy
eSBpcyBlbXB0eScpCi0gICAgICAgIHJvb3QgPSBzZWxmLl9fcm9vdAotICAgICAgICBpZiBsYXN0
OgotICAgICAgICAgICAgbGluayA9IHJvb3RbMF0KLSAgICAgICAgICAgIGxpbmtfcHJldiA9IGxp
bmtbMF0KLSAgICAgICAgICAgIGxpbmtfcHJldlsxXSA9IHJvb3QKLSAgICAgICAgICAgIHJvb3Rb
MF0gPSBsaW5rX3ByZXYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmsgPSByb290WzFd
Ci0gICAgICAgICAgICBsaW5rX25leHQgPSBsaW5rWzFdCi0gICAgICAgICAgICByb290WzFdID0g
bGlua19uZXh0Ci0gICAgICAgICAgICBsaW5rX25leHRbMF0gPSByb290Ci0gICAgICAgIGtleSA9
IGxpbmtbMl0KLSAgICAgICAgZGVsIHNlbGYuX19tYXBba2V5XQotICAgICAgICB2YWx1ZSA9IGRp
Y3QucG9wKHNlbGYsIGtleSkKLSAgICAgICAgcmV0dXJuIGtleSwgdmFsdWUKLQotICAgICMgLS0g
dGhlIGZvbGxvd2luZyBtZXRob2RzIGRvIG5vdCBkZXBlbmQgb24gdGhlIGludGVybmFsIHN0cnVj
dHVyZSAtLQotCi0gICAgZGVmIGtleXMoc2VsZik6Ci0gICAgICAgICdvZC5rZXlzKCkgLT4gbGlz
dCBvZiBrZXlzIGluIG9kJwotICAgICAgICByZXR1cm4gbGlzdChzZWxmKQotCi0gICAgZGVmIHZh
bHVlcyhzZWxmKToKLSAgICAgICAgJ29kLnZhbHVlcygpIC0+IGxpc3Qgb2YgdmFsdWVzIGluIG9k
JwotICAgICAgICByZXR1cm4gW3NlbGZba2V5XSBmb3Iga2V5IGluIHNlbGZdCi0KLSAgICBkZWYg
aXRlbXMoc2VsZik6Ci0gICAgICAgICdvZC5pdGVtcygpIC0+IGxpc3Qgb2YgKGtleSwgdmFsdWUp
IHBhaXJzIGluIG9kJwotICAgICAgICByZXR1cm4gWyhrZXksIHNlbGZba2V5XSkgZm9yIGtleSBp
biBzZWxmXQotCi0gICAgZGVmIGl0ZXJrZXlzKHNlbGYpOgotICAgICAgICAnb2QuaXRlcmtleXMo
KSAtPiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIGluIG9kJwotICAgICAgICByZXR1cm4gaXRl
cihzZWxmKQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICdvZC5pdGVydmFs
dWVzIC0+IGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHZhbHVlcyBpbiBvZCcKLSAgICAgICAgZm9yIGsg
aW4gc2VsZjoKLSAgICAgICAgICAgIHlpZWxkIHNlbGZba10KLQotICAgIGRlZiBpdGVyaXRlbXMo
c2VsZik6Ci0gICAgICAgICdvZC5pdGVyaXRlbXMgLT4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgKGtl
eSwgdmFsdWUpIGl0ZW1zIGluIG9kJwotICAgICAgICBmb3IgayBpbiBzZWxmOgotICAgICAgICAg
ICAgeWllbGQgKGssIHNlbGZba10pCi0KLSAgICBkZWYgdXBkYXRlKCphcmdzLCAqKmt3ZHMpOgot
ICAgICAgICAnJydvZC51cGRhdGUoRSwgKipGKSAtPiBOb25lLiAgVXBkYXRlIG9kIGZyb20gZGlj
dC9pdGVyYWJsZSBFIGFuZCBGLgotCi0gICAgICAgIElmIEUgaXMgYSBkaWN0IGluc3RhbmNlLCBk
b2VzOiAgICAgICAgICAgZm9yIGsgaW4gRTogb2Rba10gPSBFW2tdCi0gICAgICAgIElmIEUgaGFz
IGEgLmtleXMoKSBtZXRob2QsIGRvZXM6ICAgICAgICAgZm9yIGsgaW4gRS5rZXlzKCk6IG9kW2td
ID0gRVtrXQotICAgICAgICBPciBpZiBFIGlzIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zLCBkb2VzOiAg
IGZvciBrLCB2IGluIEU6IG9kW2tdID0gdgotICAgICAgICBJbiBlaXRoZXIgY2FzZSwgdGhpcyBp
cyBmb2xsb3dlZCBieTogICAgIGZvciBrLCB2IGluIEYuaXRlbXMoKTogb2Rba10gPSB2Ci0KLSAg
ICAgICAgJycnCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgICAgICByYWlzZSBU
eXBlRXJyb3IoJ3VwZGF0ZSgpIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzICglZCBnaXZlbiknICUgKGxlbihhcmdzKSwp
KQotICAgICAgICBlbGlmIG5vdCBhcmdzOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1
cGRhdGUoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKScpCi0gICAgICAgIHNl
bGYgPSBhcmdzWzBdCi0gICAgICAgICMgTWFrZSBwcm9ncmVzc2l2ZWx5IHdlYWtlciBhc3N1bXB0
aW9ucyBhYm91dCAib3RoZXIiCi0gICAgICAgIG90aGVyID0gKCkKLSAgICAgICAgaWYgbGVuKGFy
Z3MpID09IDI6Ci0gICAgICAgICAgICBvdGhlciA9IGFyZ3NbMV0KLSAgICAgICAgaWYgaXNpbnN0
YW5jZShvdGhlciwgZGljdCk6Ci0gICAgICAgICAgICBmb3Iga2V5IGluIG90aGVyOgotICAgICAg
ICAgICAgICAgIHNlbGZba2V5XSA9IG90aGVyW2tleV0KLSAgICAgICAgZWxpZiBoYXNhdHRyKG90
aGVyLCAna2V5cycpOgotICAgICAgICAgICAgZm9yIGtleSBpbiBvdGhlci5rZXlzKCk6Ci0gICAg
ICAgICAgICAgICAgc2VsZltrZXldID0gb3RoZXJba2V5XQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb3RoZXI6Ci0gICAgICAgICAgICAgICAgc2VsZltrZXld
ID0gdmFsdWUKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dkcy5pdGVtcygpOgotICAgICAg
ICAgICAgc2VsZltrZXldID0gdmFsdWUKLQotICAgIF9fdXBkYXRlID0gdXBkYXRlICAjIGxldCBz
dWJjbGFzc2VzIG92ZXJyaWRlIHVwZGF0ZSB3aXRob3V0IGJyZWFraW5nIF9faW5pdF9fCi0KLSAg
ICBfX21hcmtlciA9IG9iamVjdCgpCi0KLSAgICBkZWYgcG9wKHNlbGYsIGtleSwgZGVmYXVsdD1f
X21hcmtlcik6Ci0gICAgICAgICcnJ29kLnBvcChrWyxkXSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmll
ZCBrZXkgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZS4KLSAgICAgICAgSWYga2V5
IGlzIG5vdCBmb3VuZCwgZCBpcyByZXR1cm5lZCBpZiBnaXZlbiwgb3RoZXJ3aXNlIEtleUVycm9y
IGlzIHJhaXNlZC4KLQotICAgICAgICAnJycKLSAgICAgICAgaWYga2V5IGluIHNlbGY6Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzZWxmW2tleV0KLSAgICAgICAgICAgIGRlbCBzZWxmW2tleV0KLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgaWYgZGVmYXVsdCBpcyBzZWxmLl9fbWFy
a2VyOgotICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQotICAgICAgICByZXR1cm4gZGVm
YXVsdAotCi0gICAgZGVmIHNldGRlZmF1bHQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgotICAg
ICAgICAnb2Quc2V0ZGVmYXVsdChrWyxkXSkgLT4gb2QuZ2V0KGssZCksIGFsc28gc2V0IG9kW2td
PWQgaWYgayBub3QgaW4gb2QnCi0gICAgICAgIGlmIGtleSBpbiBzZWxmOgotICAgICAgICAgICAg
cmV0dXJuIHNlbGZba2V5XQotICAgICAgICBzZWxmW2tleV0gPSBkZWZhdWx0Ci0gICAgICAgIHJl
dHVybiBkZWZhdWx0Ci0KLSAgICBkZWYgX19yZXByX18oc2VsZiwgX3JlcHJfcnVubmluZz17fSk6
Ci0gICAgICAgICdvZC5fX3JlcHJfXygpIDw9PT4gcmVwcihvZCknCi0gICAgICAgIGNhbGxfa2V5
ID0gaWQoc2VsZiksIF9nZXRfaWRlbnQoKQotICAgICAgICBpZiBjYWxsX2tleSBpbiBfcmVwcl9y
dW5uaW5nOgotICAgICAgICAgICAgcmV0dXJuICcuLi4nCi0gICAgICAgIF9yZXByX3J1bm5pbmdb
Y2FsbF9rZXldID0gMQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gJyVzKCknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCkK
LSAgICAgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywg
c2VsZi5pdGVtcygpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZGVsIF9yZXByX3J1
bm5pbmdbY2FsbF9rZXldCi0KLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgJ1Jl
dHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcnCi0gICAgICAgIGl0ZW1zID0gW1tr
LCBzZWxmW2tdXSBmb3IgayBpbiBzZWxmXQotICAgICAgICBpbnN0X2RpY3QgPSB2YXJzKHNlbGYp
LmNvcHkoKQotICAgICAgICBmb3IgayBpbiB2YXJzKE9yZGVyZWREaWN0KCkpOgotICAgICAgICAg
ICAgaW5zdF9kaWN0LnBvcChrLCBOb25lKQotICAgICAgICBpZiBpbnN0X2RpY3Q6Ci0gICAgICAg
ICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCAoaXRlbXMsKSwgaW5zdF9kaWN0KQotICAgICAg
ICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChpdGVtcywpCi0KLSAgICBkZWYgY29weShzZWxmKToK
LSAgICAgICAgJ29kLmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBvZCcKLSAgICAgICAgcmV0
dXJuIHNlbGYuX19jbGFzc19fKHNlbGYpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJv
bWtleXMoY2xzLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSk6Ci0gICAgICAgICcnJ09ELmZyb21rZXlz
KFNbLCB2XSkgLT4gTmV3IG9yZGVyZWQgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSBTCi0gICAg
ICAgIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdiAod2hpY2ggZGVmYXVsdHMgdG8gTm9uZSkuCi0KLSAg
ICAgICAgJycnCi0gICAgICAgIGQgPSBjbHMoKQotICAgICAgICBmb3Iga2V5IGluIGl0ZXJhYmxl
OgotICAgICAgICAgICAgZFtrZXldID0gdmFsdWUKLSAgICAgICAgcmV0dXJuIGQKLQotICAgIGRl
ZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAnJydvZC5fX2VxX18oeSkgPD09PiBvZD09
eS4gIENvbXBhcmlzb24gdG8gYW5vdGhlciBPRCBpcyBvcmRlci1zZW5zaXRpdmUKLSAgICAgICAg
d2hpbGUgY29tcGFyaXNvbiB0byBhIHJlZ3VsYXIgbWFwcGluZyBpcyBvcmRlci1pbnNlbnNpdGl2
ZS4KLQotICAgICAgICAnJycKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgT3JkZXJlZERp
Y3QpOgotICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmKT09bGVuKG90aGVyKSBhbmQgc2VsZi5p
dGVtcygpID09IG90aGVyLml0ZW1zKCkKLSAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYs
IG90aGVyKQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBu
b3Qgc2VsZiA9PSBvdGhlcgotCi0gICAgIyAtLSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG9u
bHkgdXNlZCBpbiBQeXRob24gMi43IC0tCi0KLSAgICBkZWYgdmlld2tleXMoc2VsZik6Ci0gICAg
ICAgICJvZC52aWV3a2V5cygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcg
b24gb2QncyBrZXlzIgotICAgICAgICByZXR1cm4gS2V5c1ZpZXcoc2VsZikKLQotICAgIGRlZiB2
aWV3dmFsdWVzKHNlbGYpOgotICAgICAgICAib2Qudmlld3ZhbHVlcygpIC0+IGFuIG9iamVjdCBw
cm92aWRpbmcgYSB2aWV3IG9uIG9kJ3MgdmFsdWVzIgotICAgICAgICByZXR1cm4gVmFsdWVzVmll
dyhzZWxmKQotCi0gICAgZGVmIHZpZXdpdGVtcyhzZWxmKToKLSAgICAgICAgIm9kLnZpZXdpdGVt
cygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gb2QncyBpdGVtcyIK
LSAgICAgICAgcmV0dXJuIEl0ZW1zVmlldyhzZWxmKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy9mdW5jc2lncy92ZXJzaW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy92ZXJzaW9uLnB5
CmluZGV4IDg5NmEzNzBjYWQxNi4uNzg2MzkxNWZhNWY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNz
aWdzL2Z1bmNzaWdzL3ZlcnNpb24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy92ZXJz
aW9uLnB5CkBAIC0xICsxIEBACi1fX3ZlcnNpb25fXyA9ICIwLjQiCitfX3ZlcnNpb25fXyA9ICIx
LjAuMiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYzFhZWRlN2I0N2YuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNz
aWdzL2Z1bmNzaWdzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVu
Y3NpZ3MvZnVuY3NpZ3Mvb2RpY3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL3ZlcnNpb24u
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL2RldmVsb3BtZW50LnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL2RldmVsb3BtZW50LnR4dAppbmRleCBlY2Fm
YjBhNTI3ZDMuLjQwZGVkZDkyYmYwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJl
bWVudHMvZGV2ZWxvcG1lbnQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL2Rl
dmVsb3BtZW50LnR4dApAQCAtMSw2ICsxLDUgQEAKIGNvdmVyYWdlCiBjb3ZlcmFsbHMKLXBpcAog
Zmxha2U4CiBzcGhpbngKLXdoZWVsCit1bml0dGVzdDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJlbWVu
dHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMjVmN2Iw
NmMzOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9m
dW5jc2lncy9yZXF1aXJlbWVudHMvZGV2ZWxvcG1lbnQudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1
aXJlbWVudHMvcHJvZHVjdGlvbi50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mvc2V0dXAu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzL3NldHVwLnB5CmluZGV4IDk4YjA5MTI2MDQ1My4uZjM2OTY4ODhm
OWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3NldHVwLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3Mvc2V0dXAucHkKQEAgLTE0LDI2ICsxNCwyMiBAQCBkZWYgbG9hZF92ZXJzaW9uKGZpbGVuYW1l
PSdmdW5jc2lncy92ZXJzaW9uLnB5Jyk6CiAgICAgICAgIHZlcnNpb24gPSBtYXRjaC5ncm91cCgx
KQogICAgICAgICByZXR1cm4gdmVyc2lvbgogCi1kZWYgbG9hZF9yc3QoZmlsZW5hbWU9J2RvY3Mv
c291cmNlL2d1aWRlX2NvbnRlbnQucnN0Jyk6Ci0gICAgIlB1cmdlIHJlZnMgZGlyZWN0aXZlcyBm
cm9tIHJlc3RydWN0dXJlZCB0ZXh0IgotICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgc291cmNl
OgotICAgICAgICB0ZXh0ID0gc291cmNlLnJlYWQoKQotICAgICAgICBkb2MgPSByZS5zdWIocic6
XHcrOmB+PyhbYS16QS1aLl8oKV0rKWAnLCByJypcMSonLCB0ZXh0KQotICAgICAgICByZXR1cm4g
ZG9jCiAKIHNldHVwKAogICAgIG5hbWU9ImZ1bmNzaWdzIiwKICAgICB2ZXJzaW9uPWxvYWRfdmVy
c2lvbigpLAogICAgIHBhY2thZ2VzPVsnZnVuY3NpZ3MnXSwKICAgICB6aXBfc2FmZT1GYWxzZSwK
LSAgICBhdXRob3I9IkFhcm9uIElsZXMiLAotICAgIGF1dGhvcl9lbWFpbD0iYWFyb24uaWxlc0Bn
bWFpbC5jb20iLAorICAgIGF1dGhvcj0iVGVzdGluZyBDYWJhbCIsCisgICAgYXV0aG9yX2VtYWls
PSJ0ZXN0aW5nLWluLXB5dGhvbkBsaXN0cy5pZHlsbC5vcmciLAogICAgIHVybD0iaHR0cDovL2Z1
bmNzaWdzLnJlYWR0aGVkb2NzLm9yZyIsCiAgICAgZGVzY3JpcHRpb249IlB5dGhvbiBmdW5jdGlv
biBzaWduYXR1cmVzIGZyb20gUEVQMzYyIGZvciBQeXRob24gMi42LCAyLjcgYW5kIDMuMisiLAog
ICAgIGxvbmdfZGVzY3JpcHRpb249b3BlbignUkVBRE1FLnJzdCcpLnJlYWQoKSwKLSAgICAjIGxv
bmdfZGVzY3JpcHRpb249bG9hZF9yc3QoKSwKICAgICBsaWNlbnNlPSJBU0wiLAotICAgIGluc3Rh
bGxfcmVxdWlyZXMgPSBbXSwKKyAgICBleHRyYXNfcmVxdWlyZSA9IHsKKyAgICAgICAgJzpweXRo
b25fdmVyc2lvbjwiMi43Iic6IFsnb3JkZXJlZGRpY3QnXSwKKyAgICB9LAorICAgIHNldHVwX3Jl
cXVpcmVzID0gWyJzZXR1cHRvb2xzPj0xNy4xIl0sCiAgICAgY2xhc3NpZmllcnMgPSBbCiAgICAg
ICAgICdEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLAogICAgICAgICAnSW50ZW5kZWQg
QXVkaWVuY2UgOjogRGV2ZWxvcGVycycsCkBAIC00NCwxMiArNDAsMTMgQEAgc2V0dXAoCiAgICAg
ICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywKICAgICAgICAgJ1By
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLAogICAgICAgICAnUHJvZ3JhbW1p
bmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMnLAotICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3Vh
Z2UgOjogUHl0aG9uIDo6IDMuMicsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy4zJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6
OiAzLjQnLAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNScs
CiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRp
b24gOjogQ1B5dGhvbicsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24g
OjogSW1wbGVtZW50YXRpb24gOjogUHlQeScsCiAgICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBE
ZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMnCiAgICAgXSwKLSAgICB0
ZXN0c19yZXF1aXJlID0gW10gaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDIgZWxzZSBbJ3VuaXR0
ZXN0MiddLAotICAgIHRlc3Rfc3VpdGUgPSAidGVzdHMiIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0g
PiAyIGVsc2UgJ3VuaXR0ZXN0Mi5jb2xsZWN0b3InCisgICAgdGVzdHNfcmVxdWlyZSA9IFsndW5p
dHRlc3QyJ10sCisgICAgdGVzdF9zdWl0ZSA9ICd1bml0dGVzdDIuY29sbGVjdG9yJywKICkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdz
L3Rlc3RzL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90
ZXN0X2Zvcm1hdGFubm90YXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL3Rlc3RfZm9ybWF0
YW5ub3RhdGlvbi5weQppbmRleCBmZDdhODg3M2Y4NTUuLjRiOThlNjAzN2Q4MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90ZXN0X2Zvcm1hdGFubm90YXRpb24ucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9mdW5jc2lncy90ZXN0cy90ZXN0X2Zvcm1hdGFubm90YXRpb24ucHkKQEAgLTEsMTIgKzEsNiBA
QAotdHJ5OgotICAgICMgcHl0aG9uIDIueAotICAgIGltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRl
c3QKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIHB5dGhvbiAzLngKLSAgICBpbXBvcnQgdW5p
dHRlc3QKLQogaW1wb3J0IGZ1bmNzaWdzCiAKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QK
IAogY2xhc3MgVGVzdEZvcm1hdEFubm90YXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X3N0cmluZyAoc2VsZik6CkBAIC0yMSw3ICsxNSwzIEBAIGNsYXNzIFRlc3RGb3JtYXRB
bm5vdGF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2xhc3MgZHVtbXkgKG9iamVj
dCk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jc2lncy5mb3JtYXRhbm5vdGF0
aW9uKGR1bW15KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdHMudGVzdF9mb3JtYXRh
bm5vdGF0aW9uLmR1bW15IikKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHVu
aXR0ZXN0LmJlZ2luKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5j
c2lncy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5weQppbmRleCBlZWNj
MGE4YTcwOTEuLmE3YjljY2E3Njc5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90
ZXN0X2Z1bmNzaWdzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5w
eQpAQCAtMSw5ICsxLDQgQEAKLXRyeToKLSAgICAjIHB5dGhvbiAyLngKLSAgICBpbXBvcnQgdW5p
dHRlc3QyIGFzIHVuaXR0ZXN0Ci1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBweXRob24gMy54
Ci0gICAgaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CiAKIGlt
cG9ydCBkb2N0ZXN0CiBpbXBvcnQgc3lzCkBAIC02OSwyNSArNjQsMjggQEAgY2xhc3MgVGVzdEZ1
bmN0aW9uU2lnbmF0dXJlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShpbnNwZWN0Ll9fdmVyc2lvbl9fKQogCiAgICAgZGVmIHRlc3RfcmVhZG1lKHNlbGYpOgor
ICAgICAgICAjIFhYWDogVGhpcyBmYWlscyBidXQgZG9lc24ndCBmYWlsIHRoZSBidWlsZC4KKwkj
IChhbmQgdGhlIHN5bnRheCBpc24ndCB2YWxpZCBvbiBhbGwgcHl0aG9ucyBzbyB0aGF0IHNlZW1z
IGEgbGl0dGxlCisJIyBoYXJkIHRvIGdldCByaWdodC4KICAgICAgICAgZG9jdGVzdC50ZXN0Zmls
ZSgnLi4vUkVBRE1FLnJzdCcpCiAKICAgICBkZWYgdGVzdF91bmJvdW5kX21ldGhvZChzZWxmKToK
LSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6Ci0gICAgICAgICAgICBzZWxmX2tp
bmQgPSAicG9zaXRpb25hbF9vbmx5IgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZl9r
aW5kID0gInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIKKyAgICAgICAgc2VsZl9raW5kID0gInBvc2l0
aW9uYWxfb3Jfa2V5d29yZCIKICAgICAgICAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgICAgICAg
ICAgZGVmIG1ldGhvZChzZWxmKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBk
ZWYgbWV0aG9kX3dpdGhfYXJncyhzZWxmLCBhKToKICAgICAgICAgICAgICAgICBwYXNzCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoVGVzdC5tZXRob2QpLAotICAgICAg
ICAgICAgICAgICgoKCgnc2VsZicsIEVsbGlwc2lzLCBFbGxpcHNpcywgc2VsZl9raW5kKSksKSwg
RWxsaXBzaXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKFRlc3Qu
bWV0aG9kX3dpdGhfYXJncyksICgoCi0gICAgICAgICAgICAgICAgKCdzZWxmJywgRWxsaXBzaXMs
IEVsbGlwc2lzLCBzZWxmX2tpbmQpLAotICAgICAgICAgICAgICAgICgnYScsIEVsbGlwc2lzLCBF
bGxpcHNpcywgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgZGVmIG1ldGhv
ZF93aXRoX3ZhcmFyZ3MoKmFyZ3MpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlKFRlc3QubWV0aG9kKSwK
KyAgICAgICAgICAgICgoKCgnc2VsZicsIEVsbGlwc2lzLCBFbGxpcHNpcywgc2VsZl9raW5kKSks
KSwgRWxsaXBzaXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2Vs
Zi5zaWduYXR1cmUoVGVzdC5tZXRob2Rfd2l0aF9hcmdzKSwKKyAgICAgICAgICAgICgoKCdzZWxm
JywgRWxsaXBzaXMsIEVsbGlwc2lzLCBzZWxmX2tpbmQpLAorICAgICAgICAgICAgICAoJ2EnLCBF
bGxpcHNpcywgRWxsaXBzaXMsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKICAgICAgICAgICAg
ICAgICApLCBFbGxpcHNpcykpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB1
bml0dGVzdC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBz
ZWxmLnNpZ25hdHVyZShUZXN0Lm1ldGhvZF93aXRoX3ZhcmFyZ3MpLAorICAgICAgICAgICAgKCgo
J2FyZ3MnLCBFbGxpcHNpcywgRWxsaXBzaXMsICJ2YXJfcG9zaXRpb25hbCIpLCksIEVsbGlwc2lz
KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9mdW5jc2lncy90ZXN0cy90ZXN0X2luc3BlY3QucHkKaW5kZXggMzIzYzMyM2VhZmQ5Li45OGQ2
NTkyZmNjNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0LnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0LnB5CkBAIC0xLDEyICsxLDEw
IEBACiAjIENvcHlyaWdodCAyMDAxLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFs
bCBSaWdodHMgUmVzZXJ2ZWQKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGZ1
bmN0b29scwogaW1wb3J0IHN5cwogCi10cnk6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0
dGVzdAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVu
aXR0ZXN0MiBhcyB1bml0dGVzdAogCiBpbXBvcnQgZnVuY3NpZ3MgYXMgaW5zcGVjdAogCkBAIC0y
NCwxMSArMjIsNiBAQCBjbGFzcyBUZXN0U2lnbmF0dXJlT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgICAgICAoRWxsaXBzaXMgaWYgc2lnLnJldHVybl9hbm5vdGF0aW9uIGlz
IHNpZy5lbXB0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIHNpZy5yZXR1cm5fYW5ub3RhdGlvbikpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKLSAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnYXNzZXJ0UmFp
c2VzUmVnZXgnKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXggPSBzZWxmLmFz
c2VydFJhaXNlc1JlZ2V4cAotCiAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDI6CiAgICAg
ICAgIGV4ZWMoIiIiCiBkZWYgdGVzdF9zaWduYXR1cmVfb2JqZWN0KHNlbGYpOgpAQCAtNjU2LDEx
ICs2NDksNiBAQCBkZWYgdGVzdF9zaWduYXR1cmVfcmVwbGFjZV9hbm5vKHNlbGYpOgogCiBjbGFz
cyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5f
X2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNl
bGYsICdhc3NlcnRSYWlzZXNSZWdleCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNS
ZWdleCA9IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwCi0KICAgICBkZWYgdGVzdF9zaWduYXR1cmVf
cGFyYW1ldGVyX2tpbmRzKHNlbGYpOgogICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuUE9TSVRJT05BTF9PTkxZIDwgUC5QT1NJVElPTkFMX09S
X0tFWVdPUkQgPCBcCkBAIC03ODAsMTEgKzc2OCw2IEBAIGNsYXNzIFRlc3RTaWduYXR1cmVCaW5k
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgYmEgPSBzaWcuYmluZCgqYXJncywgKiprd2Fy
Z3MpCiAgICAgICAgIHJldHVybiBmdW5jKCpiYS5hcmdzLCAqKmJhLmt3YXJncykKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0
Q2FzZS5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNh
dHRyKHNlbGYsICdhc3NlcnRSYWlzZXNSZWdleCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXNSZWdleCA9IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwCi0KICAgICBkZWYgdGVzdF9zaWdu
YXR1cmVfYmluZF9lbXB0eShzZWxmKToKICAgICAgICAgZGVmIHRlc3QoKToKICAgICAgICAgICAg
IHJldHVybiA0MgpAQCAtOTgyLDEzICs5NjUsMTcgQEAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRf
cG9zaXRpb25hbF9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLmNhbGwodGVzdCwgYV9wbz0xLCBi
X3BvPTIpCiAiIiIpCiAKKyAgICBkZWYgdGVzdF9iaW5kX3NlbGYoc2VsZik6CisgICAgICAgIGNs
YXNzIEY6CisgICAgICAgICAgICBkZWYgZihhLCBzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1
cm4gYSwgc2VsZgorICAgICAgICBhbl9mID0gRigpCisgICAgICAgIHBhcnRpYWxfZiA9IGZ1bmN0
b29scy5wYXJ0aWFsKEYuZiwgYW5fZikKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShw
YXJ0aWFsX2YpLmJpbmQoc2VsZj0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYW5fZiwg
MTApLCBwYXJ0aWFsX2YoKmJhLmFyZ3MsICoqYmEua3dhcmdzKSkKIAotY2xhc3MgVGVzdEJvdW5k
QXJndW1lbnRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxm
LCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdhc3NlcnRS
YWlzZXNSZWdleCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCA9IHNlbGYu
YXNzZXJ0UmFpc2VzUmVnZXhwCitjbGFzcyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hh
YmxlKHNlbGYpOgogICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCkBAIC0xMDEzLDcgKzEwMDAsMyBA
QCBjbGFzcyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBk
ZWYgYmFyKGIpOiBwYXNzCiAgICAgICAgIGJhNCA9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikuYmlu
ZCgxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCi0KLQotaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKLSAgICB1bml0dGVzdC5iZWdpbigpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Z1bmNzaWdzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM5MjFhMTg1MjJmLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL3Rlc3RfZm9ybWF0YW5ub3RhdGlvbi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9mdW5jc2lncy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mv
dGVzdHMvdGVzdF9pbnNwZWN0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3RveC5pbmkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Z1bmNzaWdzL3RveC5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi4xODczYzc0NGEwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rv
eC5pbmkKQEAgLTAsMCArMSw4IEBACitbdG94XQorZW52bGlzdCA9IHB5MjYsIHB5MjcsIHB5MzMs
IHB5MzQsIHB5MzUsIHB5MzYsIHB5cHksIHB5cHkzCisKK1t0ZXN0ZW52XQorZGVwcyA9IC1ycmVx
dWlyZW1lbnRzL2RldmVsb3BtZW50LnR4dAorY29tbWFuZHMgPSAKKyAgICBjb3ZlcmFnZSBydW4g
c2V0dXAucHkgdGVzdAorICAgIGNvdmVyYWdlIHJlcG9ydCAtLXNob3ctbWlzc2luZwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9mdW5jc2lncy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZWViYjI3MzM1MC4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL0NIQU5HRUxPRwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZnVuY3NpZ3MvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvTUFOSUZFU1QuaW4KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1
bmNzaWdzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
Ly5jb3ZlcmFnZXJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi8uY292ZXJhZ2VyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjE1M2UzOGQzZTBlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvLmNvdmVyYWdlcmMKQEAgLTAsMCArMSwxOCBAQAorW3J1bl0KK2JyYW5jaCA9IFRydWUKK3Nv
dXJjZSA9IGgyCisKK1tyZXBvcnRdCitmYWlsX3VuZGVyID0gMTAwCitzaG93X21pc3NpbmcgPSBU
cnVlCitleGNsdWRlX2xpbmVzID0KKyAgICBwcmFnbWE6IG5vIGNvdmVyCisgICAgLio6LiogIyBQ
eXRob24gXGQuKgorICAgIGFzc2VydCBGYWxzZSwgIlNob3VsZCBub3QgYmUgcmVhY2hhYmxlIgor
ICAgIC4qOi4qICMgUGxhdGZvcm0tc3BlY2lmaWM6CisKK1twYXRoc10KK3NvdXJjZSA9CisgICAg
aDIvCisgICAgLnRveC8qL2xpYi9weXRob24qL3NpdGUtcGFja2FnZXMvaDIKKyAgICAudG94L3B5
cHkqL3NpdGUtcGFja2FnZXMvaDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvQ09OVFJJQlVUT1JTLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvQ09OVFJJQlVUT1JTLnJzdAppbmRleCBiZGM0ZDA2YzMxYTAuLjVjNDg0OWZl
ZjBmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9DT05UUklCVVRPUlMucnN0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
Q09OVFJJQlVUT1JTLnJzdApAQCAtMTExLDQgKzExMSw1IEBAIEluIGNocm9ub2xvZ2ljYWwgb3Jk
ZXI6CiAtIEZyZWQgVGhvbXNlbiAoQGZyZWR0aG9tc2VuKQogCiAgIC0gQWRkZWQgbG9nZ2luZy4K
LQorICAtIEVuaGFuY2UgZXF1YWxpdHkgdGVzdGluZyBvZiBgYGgyLnNldHRpbmdzLlNldHRpbmdz
YGAgb2JqZWN0cyB3aXRoCisgICAgYGBoeXBvdGhlc2lzYGAuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L0hJU1RPUlkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9ISVNUT1JZLnJzdAppbmRleCBlOWZhNzQ1ZDUxNjIuLjUy
NDRjZDhhOTQxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9ISVNUT1JZLnJzdAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L0hJU1RPUlkucnN0CkBAIC0xLDYgKzEsNjUgQEAKIFJlbGVhc2UgSGlzdG9yeQogPT09PT09PT09
PT09PT09CiAKKzMuMi4wICgyMDIwLTAyLTA4KQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0J1Z2Zp
eGVzCit+fn5+fn5+fgorCistIFJlY2VpdmluZyBEQVRBIGZyYW1lcyBvbiBjbG9zZWQgKG9yIHJl
c2V0KSBzdHJlYW1zIG5vdyBwcm9wZXJseSBlbWl0IGEKKyAgV0lORE9XX1VQREFURSB0byBrZWVw
IHRoZSBjb25uZWN0aW9uIGZsb3cgd2luZG93IHRvcHBlZCB1cC4KKworQVBJIENoYW5nZXMgKEJh
Y2t3YXJkLUluY29tcGF0aWJsZSkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
CisKKy0gYGBoMi5jb25maWcubG9nZ2VyYGAgbm93IHVzZXMgYSBgdHJhY2UoLi4uKWAgZnVuY3Rp
b24sIGluIGFkZGl0aW9uCisgIHRvIGBkZWJ1ZyguLi4pYC4gSWYgeW91IGRlZmluZWQgYSBjdXN0
b20gbG9nZ2VyIG9iamVjdCwgeW91IG5lZWQgdG8gaGFuZGxlCisgIHRoZXNlIG5ldyBmdW5jdGlv
biBjYWxscy4KKworCiszLjEuMSAoMjAxOS0wOC0wMikKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitC
dWdmaXhlcworfn5+fn5+fn4KKworLSBJZ25vcmUgV0lORE9XX1VQREFURSBhbmQgUlNUX1NUUkVB
TSBmcmFtZXMgcmVjZWl2ZWQgYWZ0ZXIgc3RyZWFtCisgIGNsb3N1cmUuCisKKworMy4xLjAgKDIw
MTktMDEtMjIpCistLS0tLS0tLS0tLS0tLS0tLS0KKworQVBJIENoYW5nZXMgKEJhY2t3YXJkLUlu
Y29tcGF0aWJsZSkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy0gYGBo
Mi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbi5kYXRhX3RvX3NlbmRgYCBmaXJzdCBhbmQgb25seSBh
cmd1bWVudCBgYGFtdGBgCisgIHdhcyByZW5hbWVkIHRvIGBgYW1vdW50YGAuCistIFN1cHBvcnQg
Zm9yIFB5dGhvbiAzLjMgaGFzIGJlZW4gcmVtb3ZlZC4KKworQVBJIENoYW5nZXMgKEJhY2t3YXJk
LUNvbXBhdGlibGUpCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLSBgYGgy
LmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uLnNlbmRfZGF0YWBgIG5vdyBzdXBwb3J0cyBgYGRhdGFg
YCBwYXJhbWV0ZXIKKyAgYmVpbmcgYSBgYG1lbW9yeXZpZXdgYCBvYmplY3QuCistIFJlZmFjdG9y
IHBpbmctcmVsYXRlZCBldmVudHM6IGEgYGBoMi5ldmVudHMuUGluZ1JlY2VpdmVkYGAgZXZlbnQg
aXMgZmlyZWQKKyAgd2hlbiBhIFBJTkcgZnJhbWUgaXMgcmVjZWl2ZWQgYW5kIGEgYGBoMi5ldmVu
dHMuUGluZ0Fja1JlY2VpdmVkYGAgZXZlbnQgaXMKKyAgZmlyZWQgd2hlbiBhIFBJTkcgZnJhbWUg
d2l0aCBhbiBBQ0sgZmxhZyBpcyByZWNlaXZlZC4KKyAgYGBoMi5ldmVudHMuUGluZ0Fja25vd2xl
ZGdlZGBgIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBpZGVudGljYWwKKyAgYGBoMi5l
dmVudHMuUGluZ0Fja1JlY2VpdmVkYGAuCistIEFkZGVkIGBgRU5BQkxFX0NPTk5FQ1RfUFJPVE9D
T0xgYCB0byBgYGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlc2BgLgorLSBTdXBwb3J0IGBgQ09OTkVD
VGBgIHJlcXVlc3RzIHdpdGggYSBgYDpwcm90b2NvbGBgIHBzZXVkbyBoZWFkZXIKKyAgdGhlcmVi
eSBzdXBwb3J0aW5nIFJGQyA4NDQxLgorLSBBIGxpbWl0IHRvIHRoZSBudW1iZXIgb2YgY2xvc2Vk
IHN0cmVhbXMga2VwdCBpbiBtZW1vcnkgYnkgdGhlCisgIGNvbm5lY3Rpb24gaXMgYXBwbGllZC4g
SXQgY2FuIGJlIGNvbmZpZ3VyZWQgYnkKKyAgYGBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbi5N
QVhfQ0xPU0VEX1NUUkVBTVNgYC4KKworQnVnZml4ZXMKK35+fn5+fn5+CisKKy0gRGVidWcgbG9n
Z2luZyB3aGVuIHN0cmVhbV9pZCBpcyBOb25lIGlzIG5vdyBmaXhlZCBhbmQgbm8gbG9uZ2VyIGVy
cm9ycy4KKwogMy4wLjEgKDIwMTctMDQtMDMpCiAtLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTUFOSUZFU1QuaW4KaW5kZXggM2M4
Yjk4ODUzM2UyLi4wNDQwMGRlNmI3ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTUFOSUZFU1QuaW4K
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9NQU5JRkVTVC5pbgpAQCAtMSw3ICsxLDggQEAKIGluY2x1ZGUgUkVBRE1F
LnJzdCBMSUNFTlNFIENPTlRSSUJVVE9SUy5yc3QgSElTVE9SWS5yc3QgdG94LmluaSB0ZXN0X3Jl
cXVpcmVtZW50cy50eHQgLmNvdmVyYWdlcmMgTWFrZWZpbGUKLXJlY3Vyc2l2ZS1pbmNsdWRlIHRl
c3QgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5ICouc2gKIGdyYWZ0IGRvY3MKIHBy
dW5lIGRvY3MvYnVpbGQKIGdyYWZ0IHZpc3VhbGl6ZXIKIHJlY3Vyc2l2ZS1pbmNsdWRlIGV4YW1w
bGVzICoucHkgKi5jcnQgKi5rZXkgKi5wZW0gKi5jc3IKIHJlY3Vyc2l2ZS1pbmNsdWRlIHV0aWxz
ICouc2gKK3JlY3Vyc2l2ZS1pbmNsdWRlIF90cmF2aXMgKi5zaApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9kb2NzL3NvdXJjZS9fc3RhdGljLy5rZWVwIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9fc3RhdGlj
Ly5rZWVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJi
MmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NjhlODU2YjZiNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy9zb3VyY2UvX3N0YXRpYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvX3N0YXRpYy9oMi5j
b25uZWN0aW9uLkgyQ29ubmVjdGlvblN0YXRlTWFjaGluZS5kb3QucG5nCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2Nz
L3NvdXJjZS9fc3RhdGljL2gyLnN0cmVhbS5IMlN0cmVhbVN0YXRlTWFjaGluZS5kb3QucG5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FwaS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291
cmNlL2FwaS5yc3QKaW5kZXggMmM3MWQzOGQxNmRkLi5hNDZmOGNjZTdkNGIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZG9jcy9zb3VyY2UvYXBpLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2Fw
aS5yc3QKQEAgLTUzLDcgKzUzLDEwIEBAIEV2ZW50cwogLi4gYXV0b2NsYXNzOjogaDIuZXZlbnRz
LlJlbW90ZVNldHRpbmdzQ2hhbmdlZAogICAgOm1lbWJlcnM6CiAKLS4uIGF1dG9jbGFzczo6IGgy
LmV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkCisuLiBhdXRvY2xhc3M6OiBoMi5ldmVudHMuUGluZ1Jl
Y2VpdmVkCisgICA6bWVtYmVyczoKKworLi4gYXV0b2NsYXNzOjogaDIuZXZlbnRzLlBpbmdBY2tS
ZWNlaXZlZAogICAgOm1lbWJlcnM6CiAKIC4uIGF1dG9jbGFzczo6IGgyLmV2ZW50cy5TdHJlYW1F
bmRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9iYXNpYy11c2FnZS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2RvY3Mvc291cmNlL2Jhc2ljLXVzYWdlLnJzdAppbmRleCAyZDU3NDNhMjg4Y2QuLmI5
YWFiNmM2Y2Y4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9iYXNpYy11c2FnZS5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9iYXNpYy11c2FnZS5yc3QKQEAgLTIyMSwxMyAr
MjIxLDExIEBAIHNob3duIGJlbG93OgogCiAuLiBjb2RlLWJsb2NrOjogY29uc29sZQogCi0gICAg
JCBoeXBlciBHRVQgaHR0cDovL2h0dHAyYmluLm9yZy9nZXQKKyAgICAkIGh5cGVyIEdFVCBodHRw
czovL25naHR0cDIub3JnL2h0dHBiaW4vZ2V0CiAgICAgeydhcmdzJzoge30sCi0gICAgICdoZWFk
ZXJzJzogeydDb25uZWN0aW9uJzogJ2tlZXAtYWxpdmUnLAotICAgICAgICAgICAgICAgICAnSG9z
dCc6ICdodHRwMmJpbi5vcmcnLAotICAgICAgICAgICAgICAgICAnVmlhJzogJzIgaHR0cDJiaW4u
b3JnJ30sCisgICAgICdoZWFkZXJzJzogeydIb3N0JzogJ25naHR0cDIub3JnJ30sCiAgICAgICdv
cmlnaW4nOiAnMTAuMC4wLjInLAotICAgICAndXJsJzogJ2h0dHA6Ly9odHRwMmJpbi5vcmcvZ2V0
J30KKyAgICAgJ3VybCc6ICdodHRwczovL25naHR0cDIub3JnL2h0dHBiaW4vZ2V0J30KIAogQXNz
dW1pbmcgaXQgd29ya3MsIHlvdSdyZSBub3cgcmVhZHkgdG8gc3RhcnQgc2VuZGluZyBIVFRQLzIg
ZGF0YS4KIApAQCAtMjUxLDkgKzI0OSwxMSBAQCBUaGUgZnVuY3Rpb24gc2hvdWxkIGxvb2sgc29t
ZXRoaW5nIGxpa2UgdGhpczoKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGltcG9ydCBo
Mi5jb25uZWN0aW9uCisgICAgaW1wb3J0IGgyLmNvbmZpZwogCiAgICAgZGVmIGhhbmRsZShzb2Nr
KToKLSAgICAgICAgY29ubiA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKGNsaWVudF9zaWRl
PUZhbHNlKQorICAgICAgICBjb25maWcgPSBoMi5jb25maWcuSDJDb25maWd1cmF0aW9uKGNsaWVu
dF9zaWRlPUZhbHNlKQorICAgICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5IMkNvbm5lY3Rpb24o
Y29uZmlnPWNvbmZpZykKIAogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgZGF0YSA9
IHNvY2sucmVjdig2NTUzNSkKQEAgLTI2Nyw5ICsyNjcsMTEgQEAgZnVuY3Rpb24uIFlvdXIgYGBo
MnNlcnZlci5weWBgIHNob3VsZCBlbmQgdXAgbG9va2luZyBhIGxpa2UgdGhpczoKICAgICBpbXBv
cnQgc29ja2V0CiAKICAgICBpbXBvcnQgaDIuY29ubmVjdGlvbgorICAgIGltcG9ydCBoMi5jb25m
aWcKIAogICAgIGRlZiBoYW5kbGUoc29jayk6Ci0gICAgICAgIGNvbm4gPSBoMi5jb25uZWN0aW9u
LkgyQ29ubmVjdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29uZmlnID0gaDIuY29u
ZmlnLkgyQ29uZmlndXJhdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29ubiA9IGgy
LmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKGNvbmZpZz1jb25maWcpCiAKICAgICAgICAgd2hpbGUg
VHJ1ZToKICAgICAgICAgICAgIGRhdGEgPSBzb2NrLnJlY3YoNjU1MzUpCkBAIC0zMzEsNyArMzMz
LDggQEAgZnVuY3Rpb24gdG8gZG8ganVzdCB0aGF0OgogLi4gY29kZS1ibG9jazo6IHB5dGhvbgog
CiAgICAgZGVmIGhhbmRsZShzb2NrKToKLSAgICAgICAgY29ubiA9IGgyLmNvbm5lY3Rpb24uSDJD
b25uZWN0aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25maWcgPSBoMi5jb25maWcu
SDJDb25maWd1cmF0aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25uID0gaDIuY29u
bmVjdGlvbi5IMkNvbm5lY3Rpb24oY29uZmlnPWNvbmZpZykKICAgICAgICAgY29ubi5pbml0aWF0
ZV9jb25uZWN0aW9uKCkKICAgICAgICAgc29jay5zZW5kYWxsKGNvbm4uZGF0YV90b19zZW5kKCkp
CiAKQEAgLTM1OSw5ICszNjIsMTEgQEAgWW91ciBgYGgyc2VydmVyLnB5YGAgc2NyaXB0IHNob3Vs
ZCBub3cgbG9vayBsaWtlIHRoaXM6CiAgICAgaW1wb3J0IHNvY2tldAogCiAgICAgaW1wb3J0IGgy
LmNvbm5lY3Rpb24KKyAgICBpbXBvcnQgaDIuY29uZmlnCiAKICAgICBkZWYgaGFuZGxlKHNvY2sp
OgotICAgICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5IMkNvbm5lY3Rpb24oY2xpZW50X3NpZGU9
RmFsc2UpCisgICAgICAgIGNvbmZpZyA9IGgyLmNvbmZpZy5IMkNvbmZpZ3VyYXRpb24oY2xpZW50
X3NpZGU9RmFsc2UpCisgICAgICAgIGNvbm4gPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbihj
b25maWc9Y29uZmlnKQogICAgICAgICBjb25uLmluaXRpYXRlX2Nvbm5lY3Rpb24oKQogICAgICAg
ICBzb2NrLnNlbmRhbGwoY29ubi5kYXRhX3RvX3NlbmQoKSkKIApAQCAtNDkzLDkgKzQ5OCwxMSBA
QCBMZXQncyBhbWVuZCBvdXIgYGBoYW5kbGVgYCBmdW5jdGlvbiBhZ2FpbjoKIC4uIGNvZGUtYmxv
Y2s6OiBweXRob24KIAogICAgIGltcG9ydCBoMi5ldmVudHMKKyAgICBpbXBvcnQgaDIuY29uZmln
CiAKICAgICBkZWYgaGFuZGxlKHNvY2spOgotICAgICAgICBjb25uID0gaDIuY29ubmVjdGlvbi5I
MkNvbm5lY3Rpb24oY2xpZW50X3NpZGU9RmFsc2UpCisgICAgICAgIGNvbmZpZyA9IGgyLmNvbmZp
Zy5IMkNvbmZpZ3VyYXRpb24oY2xpZW50X3NpZGU9RmFsc2UpCisgICAgICAgIGNvbm4gPSBoMi5j
b25uZWN0aW9uLkgyQ29ubmVjdGlvbihjb25maWc9Y29uZmlnKQogICAgICAgICBjb25uLmluaXRp
YXRlX2Nvbm5lY3Rpb24oKQogICAgICAgICBzb2NrLnNlbmRhbGwoY29ubi5kYXRhX3RvX3NlbmQo
KSkKIApAQCAtNTI4LDYgKzUzNSw3IEBAIFdpdGggdGhlc2UgY2hhbmdlcywgeW91ciBgYGgyc2Vy
dmVyLnB5YGAgZmlsZSBzaG91bGQgbG9vayBsaWtlIHRoaXM6CiAKICAgICBpbXBvcnQgaDIuY29u
bmVjdGlvbgogICAgIGltcG9ydCBoMi5ldmVudHMKKyAgICBpbXBvcnQgaDIuY29uZmlnCiAKICAg
ICBkZWYgc2VuZF9yZXNwb25zZShjb25uLCBldmVudCk6CiAgICAgICAgIHN0cmVhbV9pZCA9IGV2
ZW50LnN0cmVhbV9pZApAQCAtNTQ1LDcgKzU1Myw4IEBAIFdpdGggdGhlc2UgY2hhbmdlcywgeW91
ciBgYGgyc2VydmVyLnB5YGAgZmlsZSBzaG91bGQgbG9vayBsaWtlIHRoaXM6CiAgICAgICAgICkK
IAogICAgIGRlZiBoYW5kbGUoc29jayk6Ci0gICAgICAgIGNvbm4gPSBoMi5jb25uZWN0aW9uLkgy
Q29ubmVjdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29uZmlnID0gaDIuY29uZmln
LkgyQ29uZmlndXJhdGlvbihjbGllbnRfc2lkZT1GYWxzZSkKKyAgICAgICAgY29ubiA9IGgyLmNv
bm5lY3Rpb24uSDJDb25uZWN0aW9uKGNvbmZpZz1jb25maWcpCiAgICAgICAgIGNvbm4uaW5pdGlh
dGVfY29ubmVjdGlvbigpCiAgICAgICAgIHNvY2suc2VuZGFsbChjb25uLmRhdGFfdG9fc2VuZCgp
KQogCkBAIC02MzMsNiArNjQyLDcgQEAgZmlsZSwgd2hpY2ggc2hvdWxkIG5vdyBsb29rIGxpa2Ug
dGhpczoKIAogICAgIGltcG9ydCBoMi5jb25uZWN0aW9uCiAgICAgaW1wb3J0IGgyLmV2ZW50cwor
ICAgIGltcG9ydCBoMi5jb25maWcKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlKGNvbm4sIGV2ZW50
KToKICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCkBAIC02NTQsNyArNjY0LDgg
QEAgZmlsZSwgd2hpY2ggc2hvdWxkIG5vdyBsb29rIGxpa2UgdGhpczoKICAgICAgICAgKQogCiAg
ICAgZGVmIGhhbmRsZShzb2NrKToKLSAgICAgICAgY29ubiA9IGgyLmNvbm5lY3Rpb24uSDJDb25u
ZWN0aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25maWcgPSBoMi5jb25maWcuSDJD
b25maWd1cmF0aW9uKGNsaWVudF9zaWRlPUZhbHNlKQorICAgICAgICBjb25uID0gaDIuY29ubmVj
dGlvbi5IMkNvbm5lY3Rpb24oY29uZmlnPWNvbmZpZykKICAgICAgICAgY29ubi5pbml0aWF0ZV9j
b25uZWN0aW9uKCkKICAgICAgICAgc29jay5zZW5kYWxsKGNvbm4uZGF0YV90b19zZW5kKCkpCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvY29uZi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9z
b3VyY2UvY29uZi5weQppbmRleCBhM2IzZThhNGI5OTguLmExNWEyMTQ2MzRjNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9jb25mLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2Uv
Y29uZi5weQpAQCAtNTUsOSArNTUsOSBAQCBjb3B5cmlnaHQgPSB1JzIwMTUsIENvcnkgQmVuZmll
bGQnCiAjIGJ1aWx0IGRvY3VtZW50cy4KICMKICMgVGhlIHNob3J0IFguWSB2ZXJzaW9uLgotdmVy
c2lvbiA9ICczLjAuMScKK3ZlcnNpb24gPSAnMy4yLjAnCiAjIFRoZSBmdWxsIHZlcnNpb24sIGlu
Y2x1ZGluZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCi1yZWxlYXNlID0gJzMuMC4xJworcmVsZWFzZSA9
ICczLjIuMCcKIAogIyBUaGUgbGFuZ3VhZ2UgZm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBT
cGhpbnguIFJlZmVyIHRvIGRvY3VtZW50YXRpb24KICMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQg
bGFuZ3VhZ2VzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9uZWdvdGlhdGluZy1o
dHRwMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL25lZ290aWF0aW5nLWh0dHAyLnJzdAppbmRl
eCBkNGM3MmIyODg5ZTAuLjIwZDU4YTcxZjFiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3Nv
dXJjZS9uZWdvdGlhdGluZy1odHRwMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9uZWdv
dGlhdGluZy1odHRwMi5yc3QKQEAgLTUsMTUgKzUsMTkgQEAgTmVnb3RpYXRpbmcgSFRUUC8yCiAK
IC4uIF9zdGFydGluZy1hbHBuOgogCi1IVFRQUyBVUkxzIChBTFBOIGFuZCBOUE4pCitIVFRQUyBV
UkxzIChBTFBOKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TdGFydGluZyBIVFRQLzIg
Zm9yIEhUVFBTIFVSTHMgaXMgb3V0bGluZWQgaW4gYFJGQyA3NTQwIFNlY3Rpb24gMy4zYF8uIElu
IHRoaXMgY2FzZSwgdGhlIGNsaWVudCBhbmQgc2VydmVyIHVzZSBhIFRMUyBleHRlbnNpb24gdG8g
bmVnb3RpYXRlIEhUVFAvMjogdHlwaWNhbGx5IGVpdGhlciBvciBib3RoIG9mIGBOUE5gXyBvciBg
QUxQTmBfLiBIb3cgdG8gdXNlIE5QTiBhbmQgQUxQTiBpcyBjdXJyZW50bHkgbm90IGNvdmVyZWQg
aW4gdGhpcyBkb2N1bWVudDogcGxlYXNlIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGVp
dGhlciB0aGUgOm1vZDpgc3NsIG1vZHVsZSA8cHl0aG9uOnNzbD5gIGluIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5LCBvciB0aGUgOm1vZDpgUHlPcGVuU1NMIDxweW9wZW5zc2w6T3BlblNTTC5TU0w+YCB0
aGlyZC1wYXJ0eSBtb2R1bGVzLCBmb3IgbW9yZSBvbiB0aGlzIHRvcGljLgorU3RhcnRpbmcgSFRU
UC8yIGZvciBIVFRQUyBVUkxzIGlzIG91dGxpbmVkIGluIGBSRkMgNzU0MCBTZWN0aW9uIDMuM2Bf
LiBJbiB0aGlzIGNhc2UsIHRoZSBjbGllbnQgYW5kIHNlcnZlciB1c2UgYSBUTFMgZXh0ZW5zaW9u
IHRvIG5lZ290aWF0ZSBIVFRQLzI6IGBBTFBOYF8uIEhvdyB0byB1c2UgQUxQTiBpcyBjdXJyZW50
bHkgbm90IGNvdmVyZWQgaW4gdGhpcyBkb2N1bWVudDogcGxlYXNlIGNvbnN1bHQgdGhlIGRvY3Vt
ZW50YXRpb24gZm9yIGVpdGhlciB0aGUgOm1vZDpgc3NsIG1vZHVsZSA8cHl0aG9uOnNzbD5gIGlu
IHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBvciB0aGUgOm1vZDpgUHlPcGVuU1NMIDxweW9wZW5zc2w6
T3BlblNTTC5TU0w+YCB0aGlyZC1wYXJ0eSBtb2R1bGVzLCBmb3IgbW9yZSBvbiB0aGlzIHRvcGlj
LgogCiBUaGlzIG1ldGhvZCBpcyB0aGUgc2ltcGxlc3QgdG8gdXNlIG9uY2UgdGhlIFRMUyBjb25u
ZWN0aW9uIGlzIGVzdGFibGlzaGVkLiBUbyB1c2UgaXQgd2l0aCBIeXBlci1oMiwgYWZ0ZXIgeW91
J3ZlIGVzdGFibGlzaGVkIHRoZSBjb25uZWN0aW9uIGFuZCBjb25maXJtZWQgdGhhdCBIVFRQLzIg
aGFzIGJlZW4gbmVnb3RpYXRlZCB3aXRoIGBBTFBOYF8sIGNyZWF0ZSBhIDpjbGFzczpgSDJDb25u
ZWN0aW9uIDxoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbj5gIG9iamVjdCBhbmQgY2FsbCA6bWV0
aDpgSDJDb25uZWN0aW9uLmluaXRpYXRlX2Nvbm5lY3Rpb24gPGgyLmNvbm5lY3Rpb24uSDJDb25u
ZWN0aW9uLmluaXRpYXRlX2Nvbm5lY3Rpb24+YC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBh
cHByb3ByaWF0ZSBwcmVhbWJsZSBkYXRhIGlzIHBsYWNlZCBpbiB0aGUgZGF0YSBidWZmZXIuIFlv
dSBzaG91bGQgdGhlbiBpbW1lZGlhdGVseSBzZW5kIHRoZSBkYXRhIHJldHVybmVkIGJ5IDptZXRo
OmBIMkNvbm5lY3Rpb24uZGF0YV90b19zZW5kIDxoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbi5k
YXRhX3RvX3NlbmQ+YCBvbiB5b3VyIFRMUyBjb25uZWN0aW9uLgogCiBBdCB0aGlzIHBvaW50LCB5
b3UncmUgZnJlZSB0byB1c2UgYWxsIHRoZSBIVFRQLzIgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBi
eSBIeXBlci1oMi4KIAorLi4gbm90ZTo6CisgICBBbHRob3VnaCBIeXBlci1oMiBpcyBub3QgY29u
Y2VybmVkIHdpdGggbmVnb3RpYXRpbmcgcHJvdG9jb2wgdmVyc2lvbnMsIGl0IGlzIGltcG9ydGFu
dCB0byBub3RlIHRoYXQgc3VwcG9ydCBmb3IgYEFMUE5gXyBpcyBub3QgYXZhaWxhYmxlIGluIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5IG9mIFB5dGhvbiB2ZXJzaW9ucyA8IDIuNy45LgorICAgQXMgYSBj
b25zZXF1ZW5jZSwgY2xpZW50cyBtYXkgZW5jb3VudGVyIHZhcmlvdXMgZXJyb3JzIGR1ZSB0byBw
cm90b2NvbCB2ZXJzaW9ucyBtaXNtYXRjaC4KKwogU2VydmVyIFNldHVwIEV4YW1wbGUKIH5+fn5+
fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTkwLDExICs5NCwxMCBAQCBUaGUgY29kZSBiZWxvdyBkZW1v
bnN0cmF0ZXMgaG93IHRvIGhhbmRsZSBhIHBsYWludGV4dCB1cGdyYWRlIGZyb20gdGhlIHBlcnNw
ZWN0aQogUHJpb3IgS25vd2xlZGdlCiAtLS0tLS0tLS0tLS0tLS0KIAotSXQncyBwb3NzaWJsZSB0
aGF0IHlvdSBhcyBhIGNsaWVudCBrbm93IHRoYXQgYSBwYXJ0aWN1bGFyIHNlcnZlciBzdXBwb3J0
cyBIVFRQLzIsIGFuZCB0aGF0IHlvdSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGFueSBvZiB0aGUg
bmVnb3RpYXRpb25zIGRlc2NyaWJlZCBhYm92ZS4gSW4gdGhhdCBjYXNlLCB5b3UgbWF5IGZvbGxv
dyB0aGUgc3RlcHMgaW4gOnJlZjpgc3RhcnRpbmctYWxwbmAsIGlnbm9yaW5nIGFsbCByZWZlcmVu
Y2VzIHRvIEFMUE4gYW5kIE5QTjogdGhlcmUncyBubyBuZWVkIHRvIHBlcmZvcm0gdGhlIHVwZ3Jh
ZGUgZGFuY2UgZGVzY3JpYmVkIGluIDpyZWY6YHN0YXJ0aW5nLXVwZ3JhZGVgLgorSXQncyBwb3Nz
aWJsZSB0aGF0IHlvdSBhcyBhIGNsaWVudCBrbm93IHRoYXQgYSBwYXJ0aWN1bGFyIHNlcnZlciBz
dXBwb3J0cyBIVFRQLzIsIGFuZCB0aGF0IHlvdSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGFueSBv
ZiB0aGUgbmVnb3RpYXRpb25zIGRlc2NyaWJlZCBhYm92ZS4gSW4gdGhhdCBjYXNlLCB5b3UgbWF5
IGZvbGxvdyB0aGUgc3RlcHMgaW4gOnJlZjpgc3RhcnRpbmctYWxwbmAsIGlnbm9yaW5nIGFsbCBy
ZWZlcmVuY2VzIHRvIEFMUE46IHRoZXJlJ3Mgbm8gbmVlZCB0byBwZXJmb3JtIHRoZSB1cGdyYWRl
IGRhbmNlIGRlc2NyaWJlZCBpbiA6cmVmOmBzdGFydGluZy11cGdyYWRlYC4KIAogLi4gX1JGQyA3
NTQwOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzU0MAogLi4gX1JGQyA3NTQwIFNl
Y3Rpb24gMy4yOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzU0MCNzZWN0aW9uLTMu
MgogLi4gX1JGQyA3NTQwIFNlY3Rpb24gMy4zOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNzU0MCNzZWN0aW9uLTMuMwotLi4gX05QTjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvQXBwbGljYXRpb24tTGF5ZXJfUHJvdG9jb2xfTmVnb3RpYXRpb24KIC4uIF9BTFBOOiBodHRw
czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsaWNhdGlvbi1MYXllcl9Qcm90b2NvbF9OZWdv
dGlhdGlvbgogLi4gX1JGQyA3MjMwIFNlY3Rpb24gNi43OiBodHRwczovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNzIzMCNzZWN0aW9uLTYuNwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJj
ZS90d2lzdGVkLWhlYWQtZXhhbXBsZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3R3aXN0ZWQt
aGVhZC1leGFtcGxlLnJzdAppbmRleCAyMDc1MzUyN2NhMzYuLmRmOTNiMTQ0ZTcxNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLWhlYWQtZXhhbXBsZS5yc3QKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLWhlYWQtZXhhbXBsZS5yc3QKQEAgLTUsNyArNSw3
IEBAIFRoaXMgZXhhbXBsZSBpcyBhIGJhc2ljIEhUVFAvMiBjbGllbnQgd3JpdHRlbiBmb3IgdGhl
IGBUd2lzdGVkYF8gYXN5bmNocm9ub3VzCiBuZXR3b3JraW5nIGZyYW1ld29yay4KIAogVGhpcyBj
bGllbnQgaXMgZmFpcmx5IHNpbXBsZTogaXQgbWFrZXMgYSBoYXJkLWNvZGVkIEhFQUQgcmVxdWVz
dCB0bwotaHR0cDJiaW4ub3JnIGFuZCBwcmludHMgb3V0IHRoZSByZXNwb25zZSBkYXRhLiBJdHMg
cHVycG9zZSBpcyB0byBkZW1vbnN0cmF0ZQorbmdodHRwMi5vcmcvaHR0cGJpbi8gYW5kIHByaW50
cyBvdXQgdGhlIHJlc3BvbnNlIGRhdGEuIEl0cyBwdXJwb3NlIGlzIHRvIGRlbW9uc3RyYXRlCiBo
b3cgdG8gd3JpdGUgYSB2ZXJ5IGJhc2ljIEhUVFAvMiBjbGllbnQgaW1wbGVtZW50YXRpb24uCiAK
IC4uIGxpdGVyYWxpbmNsdWRlOjogLi4vLi4vZXhhbXBsZXMvdHdpc3RlZC9oZWFkX3JlcXVlc3Qu
cHkKQEAgLTE0LDQgKzE0LDQgQEAgaG93IHRvIHdyaXRlIGEgdmVyeSBiYXNpYyBIVFRQLzIgY2xp
ZW50IGltcGxlbWVudGF0aW9uLgogICAgOmVuY29kaW5nOiB1dGYtOAogCiAKLS4uIF9Ud2lzdGVk
OiBodHRwczovL3R3aXN0ZWRtYXRyaXguY29tLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
Ky4uIF9Ud2lzdGVkOiBodHRwczovL3R3aXN0ZWRtYXRyaXguY29tLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mv
c291cmNlL3R3aXN0ZWQtcG9zdC1leGFtcGxlLnJzdAppbmRleCAyMWJjOGFjMDlmMzQuLjdlM2Fi
YTQxYTM4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhh
bXBsZS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5y
c3QKQEAgLTUsNyArNSw3IEBAIFRoaXMgZXhhbXBsZSBpcyBhIGJhc2ljIEhUVFAvMiBjbGllbnQg
d3JpdHRlbiBmb3IgdGhlIGBUd2lzdGVkYF8gYXN5bmNocm9ub3VzCiBuZXR3b3JraW5nIGZyYW1l
d29yay4KIAogVGhpcyBjbGllbnQgaXMgZmFpcmx5IHNpbXBsZTogaXQgbWFrZXMgYSBoYXJkLWNv
ZGVkIFBPU1QgcmVxdWVzdCB0bwotaHR0cDJiaW4ub3JnIGFuZCBwcmludHMgb3V0IHRoZSByZXNw
b25zZSBkYXRhLCBzZW5kaW5nIGEgZmlsZSB0aGF0IGlzIHByb3ZpZGVkCituZ2h0dHAyLm9yZy9o
dHRwYmluL3Bvc3QgYW5kIHByaW50cyBvdXQgdGhlIHJlc3BvbnNlIGRhdGEsIHNlbmRpbmcgYSBm
aWxlIHRoYXQgaXMgcHJvdmlkZWQKIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgdGhlIHNjcmlwdCBp
dHNlbGYuIEl0cyBwdXJwb3NlIGlzIHRvIGRlbW9uc3RyYXRlIGhvdyB0bwogd3JpdGUgYSBIVFRQ
LzIgY2xpZW50IGltcGxlbWVudGF0aW9uIHRoYXQgaGFuZGxlcyBmbG93IGNvbnRyb2wuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2Rv
Y3Mvc291cmNlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
MWZiMmJkZTUyY2EuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9kb2NzL3NvdXJjZS9hZHZhbmNlZC11c2FnZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2Fw
aS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FzeW5jaW8tZXhhbXBsZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2RvY3Mvc291cmNlL2Jhc2ljLXVzYWdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvY29uZi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvY29udHJpYnV0b3JzLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9z
b3VyY2UvY3VyaW8tZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2V2ZW50bGV0LWV4
YW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9leGFtcGxlcy5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2Rv
Y3Mvc291cmNlL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvaW5zdGFsbGF0aW9uLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvbG93LWxldmVsLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3Vy
Y2UvbmVnb3RpYXRpbmctaHR0cDIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9yZWxlYXNlLW5v
dGVzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvcmVsZWFzZS1wcm9jZXNzLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZG9jcy9zb3VyY2UvdGVzdGltb25pYWxzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdG9y
bmFkby1leGFtcGxlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdHdpc3RlZC1leGFtcGxlLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdHdpc3RlZC1oZWFkLWV4YW1wbGUucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9kb2NzL3NvdXJjZS90d2lzdGVkLXBvc3QtZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291
cmNlL3dzZ2ktZXhhbXBsZS5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTRlYTUzNzc1MjRjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9kb2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL21ha2UuYmF0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2V4YW1wbGVzL2FzeW5jaW8vYXN5bmNpby1zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL2FzeW5jaW8vYXN5bmNpby1zZXJ2ZXIucHkKaW5kZXggMGU1YjkxMmUyZGZhLi4yNzg3NzQ2
NDRiYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby9hc3luY2lvLXNlcnZl
ci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2FzeW5jaW8vYXN5bmNpby1zZXJ2ZXIucHkKQEAg
LTgsMTAgKzgsNiBAQCBBIGZ1bGx5LWZ1bmN0aW9uYWwgSFRUUC8yIHNlcnZlciB1c2luZyBhc3lu
Y2lvLiBSZXF1aXJlcyBQeXRob24gMy41Ky4KIFRoaXMgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaGFu
ZGxpbmcgcmVxdWVzdHMgd2l0aCBib2RpZXMsIGFzIHdlbGwgYXMgaGFuZGxpbmcKIHRob3NlIHdp
dGhvdXQuIEluIHBhcnRpY3VsYXIsIGl0IGRlbW9uc3RyYXRlcyB0aGUgZmFjdCB0aGF0IERhdGFS
ZWNlaXZlZCBtYXkKIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgYW5kIHRoYXQgYXBwbGljYXRp
b25zIG11c3QgaGFuZGxlIHRoYXQgcG9zc2liaWxpdHkuCi0KLVBsZWFzZSBub3RlIHRoYXQgdGhp
cyBleGFtcGxlIGRvZXMgbm90IGhhbmRsZSBmbG93IGNvbnRyb2wsIGFuZCBzbyBvbmx5IHdvcmtz
Ci1wcm9wZXJseSBmb3IgcmVsYXRpdmVseSBzbWFsbCByZXF1ZXN0cy4gUGxlYXNlIHNlZSBvdGhl
ciBleGFtcGxlcyB0byB1bmRlcnN0YW5kCi1ob3cgZmxvdyBjb250cm9sIHNob3VsZCB3b3JrLgog
IiIiCiBpbXBvcnQgYXN5bmNpbwogaW1wb3J0IGlvCkBAIC0yMywxMCArMTksMTIgQEAgZnJvbSB0
eXBpbmcgaW1wb3J0IExpc3QsIFR1cGxlCiBmcm9tIGgyLmNvbmZpZyBpbXBvcnQgSDJDb25maWd1
cmF0aW9uCiBmcm9tIGgyLmNvbm5lY3Rpb24gaW1wb3J0IEgyQ29ubmVjdGlvbgogZnJvbSBoMi5l
dmVudHMgaW1wb3J0ICgKLSAgICBDb25uZWN0aW9uVGVybWluYXRlZCwgRGF0YVJlY2VpdmVkLCBS
ZXF1ZXN0UmVjZWl2ZWQsIFN0cmVhbUVuZGVkCisgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWQsIERh
dGFSZWNlaXZlZCwgUmVtb3RlU2V0dGluZ3NDaGFuZ2VkLAorICAgIFJlcXVlc3RSZWNlaXZlZCwg
U3RyZWFtRW5kZWQsIFN0cmVhbVJlc2V0LCBXaW5kb3dVcGRhdGVkCiApCiBmcm9tIGgyLmVycm9y
cyBpbXBvcnQgRXJyb3JDb2RlcwotZnJvbSBoMi5leGNlcHRpb25zIGltcG9ydCBQcm90b2NvbEVy
cm9yCitmcm9tIGgyLmV4Y2VwdGlvbnMgaW1wb3J0IFByb3RvY29sRXJyb3IsIFN0cmVhbUNsb3Nl
ZEVycm9yCitmcm9tIGgyLnNldHRpbmdzIGltcG9ydCBTZXR0aW5nQ29kZXMKIAogCiBSZXF1ZXN0
RGF0YSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ1JlcXVlc3REYXRhJywgWydoZWFkZXJzJywg
J2RhdGEnXSkKQEAgLTM4LDEyICszNiwxOCBAQCBjbGFzcyBIMlByb3RvY29sKGFzeW5jaW8uUHJv
dG9jb2wpOgogICAgICAgICBzZWxmLmNvbm4gPSBIMkNvbm5lY3Rpb24oY29uZmlnPWNvbmZpZykK
ICAgICAgICAgc2VsZi50cmFuc3BvcnQgPSBOb25lCiAgICAgICAgIHNlbGYuc3RyZWFtX2RhdGEg
PSB7fQorICAgICAgICBzZWxmLmZsb3dfY29udHJvbF9mdXR1cmVzID0ge30KIAogICAgIGRlZiBj
b25uZWN0aW9uX21hZGUoc2VsZiwgdHJhbnNwb3J0OiBhc3luY2lvLlRyYW5zcG9ydCk6CiAgICAg
ICAgIHNlbGYudHJhbnNwb3J0ID0gdHJhbnNwb3J0CiAgICAgICAgIHNlbGYuY29ubi5pbml0aWF0
ZV9jb25uZWN0aW9uKCkKICAgICAgICAgc2VsZi50cmFuc3BvcnQud3JpdGUoc2VsZi5jb25uLmRh
dGFfdG9fc2VuZCgpKQogCisgICAgZGVmIGNvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgorICAg
ICAgICBmb3IgZnV0dXJlIGluIHNlbGYuZmxvd19jb250cm9sX2Z1dHVyZXMudmFsdWVzKCk6Cisg
ICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5mbG93X2NvbnRyb2xfZnV0
dXJlcyA9IHt9CisKICAgICBkZWYgZGF0YV9yZWNlaXZlZChzZWxmLCBkYXRhOiBieXRlcyk6CiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIGV2ZW50cyA9IHNlbGYuY29ubi5yZWNlaXZlX2RhdGEo
ZGF0YSkKQEAgLTYxLDYgKzY1LDEzIEBAIGNsYXNzIEgyUHJvdG9jb2woYXN5bmNpby5Qcm90b2Nv
bCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtX2NvbXBsZXRlKGV2ZW50LnN0cmVh
bV9pZCkKICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIENvbm5lY3Rpb25U
ZXJtaW5hdGVkKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuY2xvc2UoKQor
ICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgU3RyZWFtUmVzZXQpOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbV9yZXNldChldmVudC5zdHJlYW1faWQpCisgICAg
ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBXaW5kb3dVcGRhdGVkKToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi53aW5kb3dfdXBkYXRlZChldmVudC5zdHJlYW1faWQsIGV2ZW50
LmRlbHRhKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgUmVtb3RlU2V0
dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgICAgICAgICAgICAgaWYgU2V0dGluZ0NvZGVzLklOSVRJ
QUxfV0lORE9XX1NJWkUgaW4gZXZlbnQuY2hhbmdlZF9zZXR0aW5nczoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYud2luZG93X3VwZGF0ZWQoTm9uZSwgMCkKIAogICAgICAgICAgICAgICAg
IHNlbGYudHJhbnNwb3J0LndyaXRlKHNlbGYuY29ubi5kYXRhX3RvX3NlbmQoKSkKIApAQCAtNjgs
MTEgKzc5LDYgQEAgY2xhc3MgSDJQcm90b2NvbChhc3luY2lvLlByb3RvY29sKToKICAgICAgICAg
aGVhZGVycyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KGhlYWRlcnMpCiAgICAgICAgIG1ldGhv
ZCA9IGhlYWRlcnNbJzptZXRob2QnXQogCi0gICAgICAgICMgV2Ugb25seSBzdXBwb3J0IEdFVCBh
bmQgUE9TVC4KLSAgICAgICAgaWYgbWV0aG9kIG5vdCBpbiAoJ0dFVCcsICdQT1NUJyk6Ci0gICAg
ICAgICAgICBzZWxmLnJldHVybl80MDUoaGVhZGVycywgc3RyZWFtX2lkKQotICAgICAgICAgICAg
cmV0dXJuCi0KICAgICAgICAgIyBTdG9yZSBvZmYgdGhlIHJlcXVlc3QgZGF0YS4KICAgICAgICAg
cmVxdWVzdF9kYXRhID0gUmVxdWVzdERhdGEoaGVhZGVycywgaW8uQnl0ZXNJTygpKQogICAgICAg
ICBzZWxmLnN0cmVhbV9kYXRhW3N0cmVhbV9pZF0gPSByZXF1ZXN0X2RhdGEKQEAgLTEwMSwxOCAr
MTA3LDcgQEAgY2xhc3MgSDJQcm90b2NvbChhc3luY2lvLlByb3RvY29sKToKICAgICAgICAgICAg
ICgnc2VydmVyJywgJ2FzeW5jaW8taDInKSwKICAgICAgICAgKQogICAgICAgICBzZWxmLmNvbm4u
c2VuZF9oZWFkZXJzKHN0cmVhbV9pZCwgcmVzcG9uc2VfaGVhZGVycykKLSAgICAgICAgc2VsZi5j
b25uLnNlbmRfZGF0YShzdHJlYW1faWQsIGRhdGEsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAgIGRl
ZiByZXR1cm5fNDA1KHNlbGYsIGhlYWRlcnM6IExpc3RbVHVwbGVbc3RyLCBzdHJdXSwgc3RyZWFt
X2lkOiBpbnQpOgotICAgICAgICAiIiIKLSAgICAgICAgV2UgZG9uJ3Qgc3VwcG9ydCB0aGUgZ2l2
ZW4gbWV0aG9kLCBzbyB3ZSB3YW50IHRvIHJldHVybiBhIDQwNSByZXNwb25zZS4KLSAgICAgICAg
IiIiCi0gICAgICAgIHJlc3BvbnNlX2hlYWRlcnMgPSAoCi0gICAgICAgICAgICAoJzpzdGF0dXMn
LCAnNDA1JyksCi0gICAgICAgICAgICAoJ2NvbnRlbnQtbGVuZ3RoJywgJzAnKSwKLSAgICAgICAg
ICAgICgnc2VydmVyJywgJ2FzeW5jaW8taDInKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmNv
bm4uc2VuZF9oZWFkZXJzKHN0cmVhbV9pZCwgcmVzcG9uc2VfaGVhZGVycywgZW5kX3N0cmVhbT1U
cnVlKQorICAgICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoc2VsZi5zZW5kX2RhdGEoZGF0YSwg
c3RyZWFtX2lkKSkKIAogICAgIGRlZiByZWNlaXZlX2RhdGEoc2VsZiwgZGF0YTogYnl0ZXMsIHN0
cmVhbV9pZDogaW50KToKICAgICAgICAgIiIiCkBAIC0xMjgsMTIgKzEyMyw3MiBAQCBjbGFzcyBI
MlByb3RvY29sKGFzeW5jaW8uUHJvdG9jb2wpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
c3RyZWFtX2RhdGEuZGF0YS53cml0ZShkYXRhKQogCisgICAgZGVmIHN0cmVhbV9yZXNldChzZWxm
LCBzdHJlYW1faWQpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBzdHJlYW0gcmVzZXQgd2FzIHNl
bnQuIFN0b3Agc2VuZGluZyBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc3RyZWFtX2lk
IGluIHNlbGYuZmxvd19jb250cm9sX2Z1dHVyZXM6CisgICAgICAgICAgICBmdXR1cmUgPSBzZWxm
LmZsb3dfY29udHJvbF9mdXR1cmVzLnBvcChzdHJlYW1faWQpCisgICAgICAgICAgICBmdXR1cmUu
Y2FuY2VsKCkKKworICAgIGFzeW5jIGRlZiBzZW5kX2RhdGEoc2VsZiwgZGF0YSwgc3RyZWFtX2lk
KToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGZsb3cg
Y29udHJvbCBydWxlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGRhdGE6CisgICAgICAg
ICAgICB3aGlsZSBzZWxmLmNvbm4ubG9jYWxfZmxvd19jb250cm9sX3dpbmRvdyhzdHJlYW1faWQp
IDwgMToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNl
bGYud2FpdF9mb3JfZmxvd19jb250cm9sKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICBleGNl
cHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oCisgICAgICAgICAgICAgICAgc2VsZi5jb25u
LmxvY2FsX2Zsb3dfY29udHJvbF93aW5kb3coc3RyZWFtX2lkKSwKKyAgICAgICAgICAgICAgICBs
ZW4oZGF0YSksCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLm1heF9vdXRib3VuZF9mcmFtZV9z
aXplLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
c2VsZi5jb25uLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkLAorICAg
ICAgICAgICAgICAgICAgICBkYXRhWzpjaHVua19zaXplXSwKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT0oY2h1bmtfc2l6ZSA9PSBsZW4oZGF0YSkpCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgZXhjZXB0IChTdHJlYW1DbG9zZWRFcnJvciwgUHJvdG9jb2xFcnJvcik6Cisg
ICAgICAgICAgICAgICAgIyBUaGUgc3RyZWFtIGdvdCBjbG9zZWQgYW5kIHdlIGRpZG4ndCBnZXQg
dG9sZC4gV2UncmUgZG9uZQorICAgICAgICAgICAgICAgICMgaGVyZS4KKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZShzZWxmLmNvbm4uZGF0
YV90b19zZW5kKCkpCisgICAgICAgICAgICBkYXRhID0gZGF0YVtjaHVua19zaXplOl0KKworICAg
IGFzeW5jIGRlZiB3YWl0X2Zvcl9mbG93X2NvbnRyb2woc2VsZiwgc3RyZWFtX2lkKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFdhaXRzIGZvciBhIEZ1dHVyZSB0aGF0IGZpcmVzIHdoZW4gdGhlIGZs
b3cgY29udHJvbCB3aW5kb3cgaXMgb3BlbmVkLgorICAgICAgICAiIiIKKyAgICAgICAgZiA9IGFz
eW5jaW8uRnV0dXJlKCkKKyAgICAgICAgc2VsZi5mbG93X2NvbnRyb2xfZnV0dXJlc1tzdHJlYW1f
aWRdID0gZgorICAgICAgICBhd2FpdCBmCisKKyAgICBkZWYgd2luZG93X3VwZGF0ZWQoc2VsZiwg
c3RyZWFtX2lkLCBkZWx0YSk6CisgICAgICAgICIiIgorICAgICAgICBBIHdpbmRvdyB1cGRhdGUg
ZnJhbWUgd2FzIHJlY2VpdmVkLiBVbmJsb2NrIHNvbWUgbnVtYmVyIG9mIGZsb3cgY29udHJvbAor
ICAgICAgICBGdXR1cmVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc3RyZWFtX2lkIGFuZCBz
dHJlYW1faWQgaW4gc2VsZi5mbG93X2NvbnRyb2xfZnV0dXJlczoKKyAgICAgICAgICAgIGYgPSBz
ZWxmLmZsb3dfY29udHJvbF9mdXR1cmVzLnBvcChzdHJlYW1faWQpCisgICAgICAgICAgICBmLnNl
dF9yZXN1bHQoZGVsdGEpCisgICAgICAgIGVsaWYgbm90IHN0cmVhbV9pZDoKKyAgICAgICAgICAg
IGZvciBmIGluIHNlbGYuZmxvd19jb250cm9sX2Z1dHVyZXMudmFsdWVzKCk6CisgICAgICAgICAg
ICAgICAgZi5zZXRfcmVzdWx0KGRlbHRhKQorCisgICAgICAgICAgICBzZWxmLmZsb3dfY29udHJv
bF9mdXR1cmVzID0ge30KKwogCiBzc2xfY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250
ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogc3NsX2NvbnRleHQub3B0aW9ucyB8PSAoCiAg
ICAgc3NsLk9QX05PX1RMU3YxIHwgc3NsLk9QX05PX1RMU3YxXzEgfCBzc2wuT1BfTk9fQ09NUFJF
U1NJT04KICkKLXNzbF9jb250ZXh0LnNldF9jaXBoZXJzKCJFQ0RIRStBRVNHQ00iKQogc3NsX2Nv
bnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlPSJjZXJ0LmNydCIsIGtleWZpbGU9ImNlcnQu
a2V5IikKIHNzbF9jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhbImgyIl0pCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhh
bXBsZXMvYXN5bmNpby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2U4YWU0YTI4N2U1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3lu
Y2lvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL2FzeW5jaW8tc2VydmVyLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9l
eGFtcGxlcy9hc3luY2lvL2NlcnQuY3J0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL2NlcnQu
a2V5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL3dzZ2ktc2VydmVyLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2V4YW1wbGVzL2FzeW5jaW8vd3NnaS1zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL2FzeW5jaW8vd3NnaS1zZXJ2ZXIucHkKaW5kZXggMDlhYjJjZTA1NDE3Li45ZmRiMmZhMGZj
MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby93c2dpLXNlcnZlci5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2V4YW1wbGVzL2FzeW5jaW8vd3NnaS1zZXJ2ZXIucHkKQEAgLTUsNyArNSw3
IEBAIGFzeW5jaW8tc2VydmVyLnB5CiAKIEEgZnVsbHktZnVuY3Rpb25hbCBXU0dJIHNlcnZlciwg
d3JpdHRlbiB1c2luZyBoeXBlci1oMi4gUmVxdWlyZXMgYXN5bmNpby4KIAotVG8gdGVzdCBpdCwg
dHJ5IGluc3RhbGxpbmcgaHR0cGluIGZyb20gcGlwIChgYHBpcCBpbnN0YWxsIGh0dHBiaW5gYCkg
YW5kIHRoZW4KK1RvIHRlc3QgaXQsIHRyeSBpbnN0YWxsaW5nIGh0dHBiaW4gZnJvbSBwaXAgKGBg
cGlwIGluc3RhbGwgaHR0cGJpbmBgKSBhbmQgdGhlbgogcnVubmluZyB0aGUgc2VydmVyIChgYHB5
dGhvbiBhc3luY2lvLXNlcnZlci5weSBodHRwYmluOmFwcGBgKS4KIAogVGhpcyBzZXJ2ZXIgZG9l
cyBub3Qgc3VwcG9ydCBIVFRQLzEuMTogaXQgaXMgYSBIVFRQLzItb25seSBXU0dJIHNlcnZlci4g
VGhlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlvLXNlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vY3VyaW8tc2VydmVyLnB5CmluZGV4IDAxNjA0YjQ0ZTZm
Zi4uZjkzZDRkYjlkMDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlv
LXNlcnZlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1cmlvLXNlcnZlci5weQpA
QCAtMTIsNyArMTIsNyBAQCBpbXBvcnQgbWltZXR5cGVzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMK
IAotZnJvbSBjdXJpbyBpbXBvcnQgS2VybmVsLCBFdmVudCwgc3Bhd24sIHNvY2tldCwgc3NsCitm
cm9tIGN1cmlvIGltcG9ydCBFdmVudCwgc3Bhd24sIHNvY2tldCwgc3NsLCBydW4KIAogaW1wb3J0
IGgyLmNvbmZpZwogaW1wb3J0IGgyLmNvbm5lY3Rpb24KQEAgLTIzLDcgKzIzLDcgQEAgaW1wb3J0
IGgyLmV2ZW50cwogUkVBRF9DSFVOS19TSVpFID0gODE5MgogCiAKLWRlZiBjcmVhdGVfbGlzdGVu
aW5nX3NzbF9zb2NrZXQoYWRkcmVzcywgY2VydGZpbGUsIGtleWZpbGUpOgorYXN5bmMgZGVmIGNy
ZWF0ZV9saXN0ZW5pbmdfc3NsX3NvY2tldChhZGRyZXNzLCBjZXJ0ZmlsZSwga2V5ZmlsZSk6CiAg
ICAgIiIiCiAgICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBsaXN0ZW5pbmcgVExTIHNvY2tldCBvbiBh
IGdpdmVuIGFkZHJlc3MuCiAgICAgIiIiCkBAIC0zNyw3ICszNyw3IEBAIGRlZiBjcmVhdGVfbGlz
dGVuaW5nX3NzbF9zb2NrZXQoYWRkcmVzcywgY2VydGZpbGUsIGtleWZpbGUpOgogCiAgICAgc29j
ayA9IHNvY2tldC5zb2NrZXQoKQogICAgIHNvY2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tF
VCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKLSAgICBzb2NrID0gc3NsX2NvbnRleHQud3JhcF9z
b2NrZXQoc29jaykKKyAgICBzb2NrID0gYXdhaXQgc3NsX2NvbnRleHQud3JhcF9zb2NrZXQoc29j
aykKICAgICBzb2NrLmJpbmQoYWRkcmVzcykKICAgICBzb2NrLmxpc3RlbigpCiAKQEAgLTQ4LDcg
KzQ4LDcgQEAgYXN5bmMgZGVmIGgyX3NlcnZlcihhZGRyZXNzLCByb290LCBjZXJ0ZmlsZSwga2V5
ZmlsZSk6CiAgICAgIiIiCiAgICAgQ3JlYXRlIGFuIEhUVFAvMiBzZXJ2ZXIgYXQgdGhlIGdpdmVu
IGFkZHJlc3MuCiAgICAgIiIiCi0gICAgc29jayA9IGNyZWF0ZV9saXN0ZW5pbmdfc3NsX3NvY2tl
dChhZGRyZXNzLCBjZXJ0ZmlsZSwga2V5ZmlsZSkKKyAgICBzb2NrID0gYXdhaXQgY3JlYXRlX2xp
c3RlbmluZ19zc2xfc29ja2V0KGFkZHJlc3MsIGNlcnRmaWxlLCBrZXlmaWxlKQogICAgIHByaW50
KCJOb3cgbGlzdGVuaW5nIG9uICVzOiVkIiAlIGFkZHJlc3MpCiAKICAgICBhc3luYyB3aXRoIHNv
Y2s6CkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgSDJTZXJ2ZXI6CiAgICAgICAgIFNlbmQgdGhl
IGRhdGEgcG9ydGlvbiBvZiBhIGZpbGUuIEhhbmRsZXMgZmxvdyBjb250cm9sIHJ1bGVzLgogICAg
ICAgICAiIiIKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxm
LmNvbm4ubG9jYWxfZmxvd19jb250cm9sX3dpbmRvdyhzdHJlYW1faWQpOgorICAgICAgICAgICAg
d2hpbGUgc2VsZi5jb25uLmxvY2FsX2Zsb3dfY29udHJvbF93aW5kb3coc3RyZWFtX2lkKSA8IDE6
CiAgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi53YWl0X2Zvcl9mbG93X2NvbnRyb2woc3RyZWFt
X2lkKQogCiAgICAgICAgICAgICBjaHVua19zaXplID0gbWluKApAQCAtMTk2LDEzICsxOTYsMTEg
QEAgY2xhc3MgSDJTZXJ2ZXI6CiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaG9z
dCA9IHN5cy5hcmd2WzJdIGlmIGxlbihzeXMuYXJndikgPiAyIGVsc2UgImxvY2FsaG9zdCIKLSAg
ICBrZXJuZWwgPSBLZXJuZWwod2l0aF9tb25pdG9yPVRydWUpCiAgICAgcHJpbnQoIlRyeSBHRVR0
aW5nOiIpCiAgICAgcHJpbnQoIiAgICBPbiBPU1ggYWZ0ZXIgJ2JyZXcgaW5zdGFsbCBjdXJsIC0t
d2l0aC1jLWFyZXMgLS13aXRoLWxpYmlkbiAtLXdpdGgtbmdodHRwMiAtLXdpdGgtb3BlbnNzbCc6
IikKICAgICBwcmludCgiL3Vzci9sb2NhbC9vcHQvY3VybC9iaW4vY3VybCAtLXRsc3YxLjIgLS1o
dHRwMiAtayBodHRwczovL2xvY2FsaG9zdDo1MDAwL2J1bmRsZS5qcyIpCiAgICAgcHJpbnQoIk9y
IG9wZW4gYSBicm93c2VyIHRvOiBodHRwczovL2xvY2FsaG9zdDo1MDAwLyIpCiAgICAgcHJpbnQo
IiAgIChBY2NlcHQgYWxsIHRoZSB3YXJuaW5ncykiKQotICAgIGtlcm5lbC5ydW4oaDJfc2VydmVy
KChob3N0LCA1MDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuYXJndlsxXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAie30uY3J0LnBlbSIuZm9ybWF0KGhvc3QpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICJ7fS5rZXkiLmZvcm1hdChob3N0KSkpCisgICAgcnVuKGgyX3Nl
cnZlcigoaG9zdCwgNTAwMCksIHN5cy5hcmd2WzFdLAorICAgICAgICAgICAgICAgICAgInt9LmNy
dC5wZW0iLmZvcm1hdChob3N0KSwKKyAgICAgICAgICAgICAgICAgICJ7fS5rZXkiLmZvcm1hdCho
b3N0KSksIHdpdGhfbW9uaXRvcj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9j
dXJpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOTA2YjA5MzE0Mi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2N1
cmlvLXNlcnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vbG9jYWxob3N0LmNydC5wZW0K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2V4YW1wbGVzL2N1cmlvL2xvY2FsaG9zdC5rZXkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZXhhbXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQtc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxl
cy9ldmVudGxldC9ldmVudGxldC1zZXJ2ZXIucHkKaW5kZXggZmYzNGUyZjljY2RhLi5hNDZjZmIz
ZDE1ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQtc2Vy
dmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQtc2VydmVyLnB5
CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIENvbm5lY3Rpb25NYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgIHJlc3BvbnNlX2hlYWRlcnMgPSAoCiAgICAgICAgICAgICAoJzpzdGF0dXMnLCAnMjAwJyks
CiAgICAgICAgICAgICAoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyksCi0gICAg
ICAgICAgICAoJ2NvbnRlbnQtbGVuZ3RoJywgbGVuKGRhdGEpKSwKKyAgICAgICAgICAgICgnY29u
dGVudC1sZW5ndGgnLCBzdHIobGVuKGRhdGEpKSksCiAgICAgICAgICAgICAoJ3NlcnZlcicsICdl
dmVudGxldC1oMicpLAogICAgICAgICApCiAgICAgICAgIHNlbGYuY29ubi5zZW5kX2hlYWRlcnMo
c3RyZWFtX2lkLCByZXNwb25zZV9oZWFkZXJzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxl
cy9ldmVudGxldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjgyMjQ0NTBiYi4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL2V2ZW50bGV0L2V2ZW50bGV0LXNlcnZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRs
ZXQvc2VydmVyLmNydAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvc2VydmVyLmtleQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2Zy
YWdtZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVw
X2ZyYWdtZW50LnB5CmluZGV4IDk5NThjMWJkNzI2Ny4uMjY5MTk0ZDZjNzcwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9jbGllbnRfaHR0cHNfc2V0dXBfZnJhZ21lbnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2Zy
YWdtZW50LnB5CkBAIC00OCw3ICs0OCw3IEBAIGRlZiBnZXRfaHR0cDJfc3NsX2NvbnRleHQoKToK
IAogICAgICMgUkZDIDc1NDAgU2VjdGlvbiA5LjIuMjogImRlcGxveW1lbnRzIG9mIEhUVFAvMiB0
aGF0IHVzZSBUTFMgMS4yIE1VU1QKICAgICAjIHN1cHBvcnQgVExTX0VDREhFX1JTQV9XSVRIX0FF
U18xMjhfR0NNX1NIQTI1NiIuIEluIHByYWN0aWNlLCB0aGUKLSAgICAjIGJsYWNrbGlzdCBkZWZp
bmVkIGluIHRoaXMgc2VjdGlvbiBhbGxvd3Mgb25seSB0aGUgQUVTIEdDTSBhbmQgQ2hhQ2hhMjAK
KyAgICAjIGJsb2NrbGlzdCBkZWZpbmVkIGluIHRoaXMgc2VjdGlvbiBhbGxvd3Mgb25seSB0aGUg
QUVTIEdDTSBhbmQgQ2hhQ2hhMjAKICAgICAjIGNpcGhlciBzdWl0ZXMgd2l0aCBlcGhlbWVyYWwg
a2V5IG5lZ290aWF0aW9uLgogICAgIGN0eC5zZXRfY2lwaGVycygiRUNESEUrQUVTR0NNOkVDREhF
K0NIQUNIQTIwOkRIRStBRVNHQ006REhFK0NIQUNIQTIwIikKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL2ZyYWdtZW50cy9jbGllbnRfdXBncmFkZV9mcmFnbWVudC5weQppbmRleCAzNGZm
Mjk4Y2Q5N2QuLmY0NWMwMDJkZjc0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFn
bWVudHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9m
cmFnbWVudHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkKQEAgLTM4LDcgKzM4LDcgQEAgZGVm
IHNlbmRfaW5pdGlhbF9yZXF1ZXN0KGNvbm5lY3Rpb24sIHNldHRpbmdzKToKICAgICAgICAgYiJH
RVQgLyBIVFRQLzEuMVxyXG4iICsKICAgICAgICAgYiJIb3N0OiBsb2NhbGhvc3RcclxuIiArCiAg
ICAgICAgIGIiVXBncmFkZTogaDJjXHJcbiIgKwotICAgICAgICBiIkhUVFAyLVNldHRpbmdzOiAi
ICsgc2V0dGluZ3MgKyAiXHJcbiIKKyAgICAgICAgYiJIVFRQMi1TZXR0aW5nczogIiArIHNldHRp
bmdzICsgYiJcclxuIiArCiAgICAgICAgIGIiXHJcbiIKICAgICApCiAgICAgY29ubmVjdGlvbi5z
ZW5kYWxsKHJlcXVlc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9z
ZXJ2ZXJfaHR0cHNfc2V0dXBfZnJhZ21lbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50
cy9zZXJ2ZXJfaHR0cHNfc2V0dXBfZnJhZ21lbnQucHkKaW5kZXggMTRlYzBlZjIzN2RlLi45ZmMz
NjFmMmM2MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL3NlcnZlcl9o
dHRwc19zZXR1cF9mcmFnbWVudC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9z
ZXJ2ZXJfaHR0cHNfc2V0dXBfZnJhZ21lbnQucHkKQEAgLTUxLDcgKzUxLDcgQEAgZGVmIGdldF9o
dHRwMl9zc2xfY29udGV4dCgpOgogCiAgICAgIyBSRkMgNzU0MCBTZWN0aW9uIDkuMi4yOiAiZGVw
bG95bWVudHMgb2YgSFRUUC8yIHRoYXQgdXNlIFRMUyAxLjIgTVVTVAogICAgICMgc3VwcG9ydCBU
TFNfRUNESEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2Ii4gSW4gcHJhY3RpY2UsIHRoZQot
ICAgICMgYmxhY2tsaXN0IGRlZmluZWQgaW4gdGhpcyBzZWN0aW9uIGFsbG93cyBvbmx5IHRoZSBB
RVMgR0NNIGFuZCBDaGFDaGEyMAorICAgICMgYmxvY2tsaXN0IGRlZmluZWQgaW4gdGhpcyBzZWN0
aW9uIGFsbG93cyBvbmx5IHRoZSBBRVMgR0NNIGFuZCBDaGFDaGEyMAogICAgICMgY2lwaGVyIHN1
aXRlcyB3aXRoIGVwaGVtZXJhbCBrZXkgbmVnb3RpYXRpb24uCiAgICAgY3R4LnNldF9jaXBoZXJz
KCJFQ0RIRStBRVNHQ006RUNESEUrQ0hBQ0hBMjA6REhFK0FFU0dDTTpESEUrQ0hBQ0hBMjAiKQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9m
cmFnbWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL3NlcnZlcl91cGdyYWRlX2Zy
YWdtZW50LnB5CmluZGV4IDViNzdjMDVmZTBkOC4uN2U4YjFmMGVlYTgwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVudC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVudC5weQpA
QCAtNDUsMTQgKzQ1LDE0IEBAIGRlZiByZWNlaXZlX2luaXRpYWxfcmVxdWVzdChjb25uZWN0aW9u
KToKICAgICAgICAgZGF0YSArPSBjb25uZWN0aW9uLnJlY3YoODE5MikKIAogICAgIG1hdGNoID0g
cmUuc2VhcmNoKGInVXBncmFkZTogaDJjXHJcbicsIGRhdGEpCi0gICAgaWYgbWF0Y2ggaXMgbm90
IE5vbmU6CisgICAgaWYgbWF0Y2ggaXMgTm9uZToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCJIVFRQLzIgdXBncmFkZSBub3QgcmVxdWVzdGVkISIpCiAKICAgICAjIFdlIG5lZWQgdG8gbG9v
ayBmb3IgdGhlIEhUVFAyLVNldHRpbmdzIGhlYWRlciBmaWVsZC4gQWdhaW4sIGluIHByb2R1Y3Rp
b24KICAgICAjIGNvZGUgeW91IHNob3VsZG4ndCB1c2UgcmVndWxhciBleHByZXNzaW9ucyBmb3Ig
dGhpcywgYnV0IGl0J3MgZ29vZCBlbm91Z2gKICAgICAjIGZvciB0aGUgZXhhbXBsZS4KICAgICBt
YXRjaCA9IHJlLnNlYXJjaChiJ0hUVFAyLVNldHRpbmdzOiAoXFxTKylcclxuJywgZGF0YSkKLSAg
ICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICBpZiBtYXRjaCBpcyBOb25lOgogICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoIkhUVFAyLVNldHRpbmdzIGhlYWRlciBmaWVsZCBub3QgcHJlc2Vu
dCEiKQogCiAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4
YW1wbGVzL2ZyYWdtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21l
bnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VlNmY5
NGI0MjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZXhhbXBsZXMvZnJhZ21lbnRzL2NsaWVudF9odHRwc19zZXR1cF9mcmFnbWVudC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL2NsaWVudF91cGdyYWRlX2ZyYWdtZW50LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvc2VydmVyX2h0dHBzX3NldHVwX2ZyYWdtZW50LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvc2VydmVyX3VwZ3JhZGVfZnJhZ21lbnQucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZXhhbXBsZXMvdG9ybmFkby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTFlZWRlOTgwMjllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxl
cy90b3JuYWRvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90b3JuYWRvL3NlcnZlci5jcnQKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4
YW1wbGVzL3Rvcm5hZG8vc2VydmVyLmtleQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby90b3Ju
YWRvLXNlcnZlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL2hlYWRf
cmVxdWVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9oZWFkX3JlcXVlc3QucHkKaW5k
ZXggNzJmZTVmODg5MThiLi40YTc1MzgwMjRhOTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBs
ZXMvdHdpc3RlZC9oZWFkX3JlcXVlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVk
L2hlYWRfcmVxdWVzdC5weQpAQCAtMjMsOCArMjMsOCBAQCBmcm9tIGgyLmV2ZW50cyBpbXBvcnQg
KAogKQogCiAKLUFVVEhPUklUWSA9IHUnaHR0cDJiaW4ub3JnJwotUEFUSCA9ICcvJworQVVUSE9S
SVRZID0gdSduZ2h0dHAyLm9yZycKK1BBVEggPSAnL2h0dHBiaW4vJwogU0laRSA9IDQwOTYKIAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvcG9zdF9yZXF1ZXN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3Bvc3RfcmVxdWVzdC5weQppbmRleCA3NDZmMTMyNjZh
MjguLmM4MTdiYWM0NjVmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3Bv
c3RfcmVxdWVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvcG9zdF9yZXF1ZXN0
LnB5CkBAIC0zMCw4ICszMCw4IEBAIGZyb20gaDIuZXZlbnRzIGltcG9ydCAoCiApCiAKIAotQVVU
SE9SSVRZID0gdSdodHRwMmJpbi5vcmcnCi1QQVRIID0gJy9wb3N0JworQVVUSE9SSVRZID0gdSdu
Z2h0dHAyLm9yZycKK1BBVEggPSAnL2h0dHBiaW4vcG9zdCcKIAogCiBjbGFzcyBIMlByb3RvY29s
KFByb3RvY29sKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC90d2lzdGVk
LXNlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC90d2lzdGVkLXNlcnZlci5weQpp
bmRleCA3Y2RlNjA5ZGIwY2IuLjc1YTI3MWQ5Yjc5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFt
cGxlcy90d2lzdGVkL3R3aXN0ZWQtc2VydmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdp
c3RlZC90d2lzdGVkLXNlcnZlci5weQpAQCAtMjAsNiArMjAsNyBAQCBmcm9tIGgyLmNvbm5lY3Rp
b24gaW1wb3J0IEgyQ29ubmVjdGlvbgogZnJvbSBoMi5ldmVudHMgaW1wb3J0ICgKICAgICBSZXF1
ZXN0UmVjZWl2ZWQsIERhdGFSZWNlaXZlZCwgV2luZG93VXBkYXRlZAogKQorZnJvbSBoMi5leGNl
cHRpb25zIGltcG9ydCBQcm90b2NvbEVycm9yCiAKIAogZGVmIGNsb3NlX2ZpbGUoZmlsZSwgZCk6
CkBAIC00NiwxNyArNDcsMjMgQEAgY2xhc3MgSDJQcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAg
IGlmIG5vdCBzZWxmLmtub3duX3Byb3RvOgogICAgICAgICAgICAgc2VsZi5rbm93bl9wcm90byA9
IFRydWUKIAotICAgICAgICBldmVudHMgPSBzZWxmLmNvbm4ucmVjZWl2ZV9kYXRhKGRhdGEpCi0g
ICAgICAgIGlmIHNlbGYuY29ubi5kYXRhX3RvX3NlbmQ6Ci0gICAgICAgICAgICBzZWxmLnRyYW5z
cG9ydC53cml0ZShzZWxmLmNvbm4uZGF0YV90b19zZW5kKCkpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGV2ZW50cyA9IHNlbGYuY29ubi5yZWNlaXZlX2RhdGEoZGF0YSkKKyAgICAgICAgZXhj
ZXB0IFByb3RvY29sRXJyb3I6CisgICAgICAgICAgICBpZiBzZWxmLmNvbm4uZGF0YV90b19zZW5k
OgorICAgICAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0LndyaXRlKHNlbGYuY29ubi5kYXRhX3Rv
X3NlbmQoKSkKKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0Lmxvc2VDb25uZWN0aW9uKCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBldmVudCBpbiBldmVudHM6CisgICAgICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgUmVxdWVzdFJlY2VpdmVkKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5yZXF1ZXN0UmVjZWl2ZWQoZXZlbnQuaGVhZGVycywgZXZlbnQuc3RyZWFt
X2lkKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVk
KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhRnJhbWVSZWNlaXZlZChldmVudC5zdHJl
YW1faWQpCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBXaW5kb3dVcGRh
dGVkKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53aW5kb3dVcGRhdGVkKGV2ZW50KQogCi0g
ICAgICAgIGZvciBldmVudCBpbiBldmVudHM6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2
ZW50LCBSZXF1ZXN0UmVjZWl2ZWQpOgotICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdFJlY2Vp
dmVkKGV2ZW50LmhlYWRlcnMsIGV2ZW50LnN0cmVhbV9pZCkKLSAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFG
cmFtZVJlY2VpdmVkKGV2ZW50LnN0cmVhbV9pZCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShldmVudCwgV2luZG93VXBkYXRlZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi53aW5kb3dVcGRh
dGVkKGV2ZW50KQorICAgICAgICAgICAgaWYgc2VsZi5jb25uLmRhdGFfdG9fc2VuZDoKKyAgICAg
ICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZShzZWxmLmNvbm4uZGF0YV90b19zZW5kKCkp
CiAKICAgICBkZWYgcmVxdWVzdFJlY2VpdmVkKHNlbGYsIGhlYWRlcnMsIHN0cmVhbV9pZCk6CiAg
ICAgICAgIGhlYWRlcnMgPSBkaWN0KGhlYWRlcnMpICAjIEludmFsaWQgY29udmVyc2lvbiwgZml4
IGxhdGVyLgpAQCAtODYsNyArOTMsOSBAQCBjbGFzcyBIMlByb3RvY29sKFByb3RvY29sKToKIAog
ICAgIGRlZiBzZW5kRmlsZShzZWxmLCBmaWxlX3BhdGgsIHN0cmVhbV9pZCk6CiAgICAgICAgIGZp
bGVzaXplID0gb3Muc3RhdChmaWxlX3BhdGgpLnN0X3NpemUKLSAgICAgICAgY29udGVudF90eXBl
LCBjb250ZW50X2VuY29kaW5nID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZV9wYXRoKQorICAg
ICAgICBjb250ZW50X3R5cGUsIGNvbnRlbnRfZW5jb2RpbmcgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlw
ZSgKKyAgICAgICAgICAgIGZpbGVfcGF0aC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgKQogICAg
ICAgICByZXNwb25zZV9oZWFkZXJzID0gWwogICAgICAgICAgICAgKCc6c3RhdHVzJywgJzIwMCcp
LAogICAgICAgICAgICAgKCdjb250ZW50LWxlbmd0aCcsIHN0cihmaWxlc2l6ZSkpLApAQCAtMTU5
LDEwICsxNjgsMTEgQEAgY2xhc3MgSDJGYWN0b3J5KEZhY3RvcnkpOgogICAgICAgICBzZWxmLnJv
b3QgPSByb290CiAKICAgICBkZWYgYnVpbGRQcm90b2NvbChzZWxmLCBhZGRyKToKKyAgICAgICAg
cHJpbnQoSDJQcm90b2NvbCkKICAgICAgICAgcmV0dXJuIEgyUHJvdG9jb2woc2VsZi5yb290KQog
CiAKLXJvb3QgPSBzeXMuYXJndlsxXQorcm9vdCA9IHN5cy5hcmd2WzFdLmVuY29kZSgndXRmLTgn
KQogCiB3aXRoIG9wZW4oJ3NlcnZlci5jcnQnLCAncicpIGFzIGY6CiAgICAgY2VydF9kYXRhID0g
Zi5yZWFkKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWIwZmYyZWMxZWY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9leGFtcGxlcy90d2lzdGVkL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL2hlYWRfcmVxdWVz
dC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9wb3N0X3JlcXVlc3QucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL3R3aXN0ZWQvc2VydmVyLmNydAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9z
ZXJ2ZXIuY3NyCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3NlcnZlci5rZXkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL3R3aXN0ZWQvdHdpc3RlZC1zZXJ2ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
aDIvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL19faW5pdF9fLnB5CmluZGV4IDM4ODA1ZGQ3NzBk
ZC4uNjI5MDcxMGU2MzRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL19faW5pdF9fLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvaDIvX19pbml0X18ucHkKQEAgLTUsNCArNSw0IEBAIGgyCiAKIEEgSFRUUC8yIGlt
cGxlbWVudGF0aW9uLgogIiIiCi1fX3ZlcnNpb25fXyA9ICczLjAuMScKK19fdmVyc2lvbl9fID0g
JzMuMi4wJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nv
bmZpZy5weQppbmRleCAwODEyOWE0MDY2OGUuLjFjNDM3ZWUyNGY4NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9oMi9jb25maWcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9jb25maWcucHkKQEAgLTI5LDcgKzI5
LDcgQEAgY2xhc3MgRHVtbXlMb2dnZXIob2JqZWN0KToKICAgICAiIiIKICAgICBBbiBMb2dnZXIg
b2JqZWN0IHRoYXQgZG9lcyBub3QgYWN0dWFsIGxvZ2dpbmcsIGhlbmNlIGEgRHVtbXlMb2dnZXIu
CiAKLSAgICBGb3IgdGhlIGNsYXNzIHRoZSBsb2cgb3BlcmF0aW9uIGlzIG1lcmVseSBhIG5vLW9w
LiAgVGhlIGludGVudCBpcyB0byBhdm9pZAorICAgIEZvciB0aGUgY2xhc3MgdGhlIGxvZyBvcGVy
YXRpb24gaXMgbWVyZWx5IGEgbm8tb3AuIFRoZSBpbnRlbnQgaXMgdG8gYXZvaWQKICAgICBjb25k
aXRpb25hbHMgYmVpbmcgc3ByaW5rbGVkIHRocm91Z2hvdXQgdGhlIGh5cGVyLWgyIGNvZGUgZm9y
IGNhbGxzIHRvCiAgICAgbG9nZ2luZyBmdW5jdGlvbnMgd2hlbiBubyBsb2dnZXIgaXMgcGFzc2Vk
IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgb2JqZWN0LgogICAgICIiIgpAQCAtNDIsNiArNDIsMTIg
QEAgY2xhc3MgRHVtbXlMb2dnZXIob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHBhc3MK
IAorICAgIGRlZiB0cmFjZShzZWxmLCAqdmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisg
ICAgICAgIE5vLW9wIGxvZ2dpbmcuIE9ubHkgbGV2ZWwgbmVlZGVkIGZvciBub3cuCisgICAgICAg
ICIiIgorICAgICAgICBwYXNzCisKIAogY2xhc3MgSDJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAg
ICAgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gy
L2Nvbm5lY3Rpb24ucHkKaW5kZXggNDQwNTE4M2U4NjY5Li4zNWU2ZmQ2ZGE4ODkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvaDIvY29ubmVjdGlvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5lY3Rpb24u
cHkKQEAgLTIxLDcgKzIxLDcgQEAgZnJvbSBocGFjay5leGNlcHRpb25zIGltcG9ydCBIUEFDS0Vy
cm9yLCBPdmVyc2l6ZWRIZWFkZXJMaXN0RXJyb3IKIGZyb20gLmNvbmZpZyBpbXBvcnQgSDJDb25m
aWd1cmF0aW9uCiBmcm9tIC5lcnJvcnMgaW1wb3J0IEVycm9yQ29kZXMsIF9lcnJvcl9jb2RlX2Zy
b21faW50CiBmcm9tIC5ldmVudHMgaW1wb3J0ICgKLSAgICBXaW5kb3dVcGRhdGVkLCBSZW1vdGVT
ZXR0aW5nc0NoYW5nZWQsIFBpbmdBY2tub3dsZWRnZWQsCisgICAgV2luZG93VXBkYXRlZCwgUmVt
b3RlU2V0dGluZ3NDaGFuZ2VkLCBQaW5nUmVjZWl2ZWQsIFBpbmdBY2tSZWNlaXZlZCwKICAgICBT
ZXR0aW5nc0Fja25vd2xlZGdlZCwgQ29ubmVjdGlvblRlcm1pbmF0ZWQsIFByaW9yaXR5VXBkYXRl
ZCwKICAgICBBbHRlcm5hdGl2ZVNlcnZpY2VBdmFpbGFibGUsIFVua25vd25GcmFtZVJlY2VpdmVk
CiApCkBAIC0zMyw3ICszMyw3IEBAIGZyb20gLmV4Y2VwdGlvbnMgaW1wb3J0ICgKIGZyb20gLmZy
YW1lX2J1ZmZlciBpbXBvcnQgRnJhbWVCdWZmZXIKIGZyb20gLnNldHRpbmdzIGltcG9ydCBTZXR0
aW5ncywgU2V0dGluZ0NvZGVzCiBmcm9tIC5zdHJlYW0gaW1wb3J0IEgyU3RyZWFtLCBTdHJlYW1D
bG9zZWRCeQotZnJvbSAudXRpbGl0aWVzIGltcG9ydCBndWFyZF9pbmNyZW1lbnRfd2luZG93Citm
cm9tIC51dGlsaXRpZXMgaW1wb3J0IFNpemVMaW1pdERpY3QsIGd1YXJkX2luY3JlbWVudF93aW5k
b3cKIGZyb20gLndpbmRvd3MgaW1wb3J0IFdpbmRvd01hbmFnZXIKIAogCkBAIC0yODEsNiArMjgx
LDkgQEAgY2xhc3MgSDJDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgIyBUaGUgaW5pdGlhbCBkZWZh
dWx0IHZhbHVlIG9mIFNFVFRJTkdTX01BWF9IRUFERVJfTElTVF9TSVpFLgogICAgIERFRkFVTFRf
TUFYX0hFQURFUl9MSVNUX1NJWkUgPSAyKioxNgogCisgICAgIyBLZWVwIGluIG1lbW9yeSBsaW1p
dGVkIGFtb3VudCBvZiByZXN1bHRzIGZvciBzdHJlYW1zIGNsb3NlcworICAgIE1BWF9DTE9TRURf
U1RSRUFNUyA9IDIqKjE2CisKICAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnPU5vbmUpOgog
ICAgICAgICBzZWxmLnN0YXRlX21hY2hpbmUgPSBIMkNvbm5lY3Rpb25TdGF0ZU1hY2hpbmUoKQog
ICAgICAgICBzZWxmLnN0cmVhbXMgPSB7fQpAQCAtMzI1LDcgKzMyOCw3IEBAIGNsYXNzIEgyQ29u
bmVjdGlvbihvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIHNlbGYucmVtb3RlX3NldHRpbmdz
ID0gU2V0dGluZ3MoY2xpZW50PW5vdCBzZWxmLmNvbmZpZy5jbGllbnRfc2lkZSkKIAotICAgICAg
ICAjIFRoZSBjdXJlbnQgdmFsdWUgb2YgdGhlIGNvbm5lY3Rpb24gZmxvdyBjb250cm9sIHdpbmRv
d3Mgb24gdGhlCisgICAgICAgICMgVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNvbm5lY3Rpb24g
ZmxvdyBjb250cm9sIHdpbmRvd3Mgb24gdGhlCiAgICAgICAgICMgY29ubmVjdGlvbi4KICAgICAg
ICAgc2VsZi5vdXRib3VuZF9mbG93X2NvbnRyb2xfd2luZG93ID0gKAogICAgICAgICAgICAgc2Vs
Zi5yZW1vdGVfc2V0dGluZ3MuaW5pdGlhbF93aW5kb3dfc2l6ZQpAQCAtMzQ3LDcgKzM1MCw3IEBA
IGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBzZWxmLl9oZWFkZXJfZnJhbWVz
ID0gW10KIAogICAgICAgICAjIERhdGEgdGhhdCBuZWVkcyB0byBiZSBzZW50LgotICAgICAgICBz
ZWxmLl9kYXRhX3RvX3NlbmQgPSBiJycKKyAgICAgICAgc2VsZi5fZGF0YV90b19zZW5kID0gYnl0
ZWFycmF5KCkKIAogICAgICAgICAjIEtlZXBzIHRyYWNrIG9mIGhvdyBzdHJlYW1zIGFyZSBjbG9z
ZWQuCiAgICAgICAgICMgVXNlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBibG93IHVwIGluIHRo
ZSBmYWNlIG9mIGZyYW1lcyB0aGF0IHdlcmUKQEAgLTM1NSw3ICszNTgsOSBAQCBjbGFzcyBIMkNv
bm5lY3Rpb24ob2JqZWN0KToKICAgICAgICAgIyBBbHNvIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgd2Ugc2hvdWxkIGNvbnNpZGVyIGEgZnJhbWUgcmVjZWl2ZWQKICAgICAgICAgIyB3aGlsZSBh
IHN0cmVhbSBpcyBjbG9zZWQgYXMgZWl0aGVyIGEgc3RyZWFtIGVycm9yIG9yIGEgY29ubmVjdGlv
bgogICAgICAgICAjIGVycm9yLgotICAgICAgICBzZWxmLl9jbG9zZWRfc3RyZWFtcyA9IHt9Cisg
ICAgICAgIHNlbGYuX2Nsb3NlZF9zdHJlYW1zID0gU2l6ZUxpbWl0RGljdCgKKyAgICAgICAgICAg
IHNpemVfbGltaXQ9c2VsZi5NQVhfQ0xPU0VEX1NUUkVBTVMKKyAgICAgICAgKQogCiAgICAgICAg
ICMgVGhlIGZsb3cgY29udHJvbCB3aW5kb3cgbWFuYWdlciBmb3IgdGhlIGNvbm5lY3Rpb24uCiAg
ICAgICAgIHNlbGYuX2luYm91bmRfZmxvd19jb250cm9sX3dpbmRvd19tYW5hZ2VyID0gV2luZG93
TWFuYWdlcigKQEAgLTkwOSwxNiArOTE0LDIxIEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3Qp
OgogICAgICAgICAgICAgZnJhbWVzID0gc3RyZWFtLmluY3JlYXNlX2Zsb3dfY29udHJvbF93aW5k
b3coCiAgICAgICAgICAgICAgICAgaW5jcmVtZW50CiAgICAgICAgICAgICApCisKKyAgICAgICAg
ICAgIHNlbGYuY29uZmlnLmxvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiSW5jcmVhc2Ug
c3RyZWFtIElEICVkIGZsb3cgY29udHJvbCB3aW5kb3cgYnkgJWQiLAorICAgICAgICAgICAgICAg
IHN0cmVhbV9pZCwgaW5jcmVtZW50CisgICAgICAgICAgICApCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBzZWxmLl9pbmJvdW5kX2Zsb3dfY29udHJvbF93aW5kb3dfbWFuYWdlci53aW5kb3df
b3BlbmVkKGluY3JlbWVudCkKICAgICAgICAgICAgIGYgPSBXaW5kb3dVcGRhdGVGcmFtZSgwKQog
ICAgICAgICAgICAgZi53aW5kb3dfaW5jcmVtZW50ID0gaW5jcmVtZW50CiAgICAgICAgICAgICBm
cmFtZXMgPSBbZl0KIAotICAgICAgICBzZWxmLmNvbmZpZy5sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAiSW5jcmVhc2Ugc3RyZWFtIElEICVkIGZsb3cgY29udHJvbCB3aW5kb3cgYnkgJWQiLAot
ICAgICAgICAgICAgc3RyZWFtX2lkLCBpbmNyZW1lbnQKLSAgICAgICAgKQorICAgICAgICAgICAg
c2VsZi5jb25maWcubG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJJbmNyZWFzZSBjb25u
ZWN0aW9uIGZsb3cgY29udHJvbCB3aW5kb3cgYnkgJWQiLCBpbmNyZW1lbnQKKyAgICAgICAgICAg
ICkKKwogICAgICAgICBzZWxmLl9wcmVwYXJlX2Zvcl9zZW5kaW5nKGZyYW1lcykKIAogICAgIGRl
ZiBwdXNoX3N0cmVhbShzZWxmLCBzdHJlYW1faWQsIHByb21pc2VkX3N0cmVhbV9pZCwgcmVxdWVz
dF9oZWFkZXJzKToKQEAgLTEzMjcsNyArMTMzNyw3IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmpl
Y3QpOgogCiAgICAgICAgIHNlbGYuX3ByZXBhcmVfZm9yX3NlbmRpbmcoZnJhbWVzKQogCi0gICAg
ZGVmIGRhdGFfdG9fc2VuZChzZWxmLCBhbXQ9Tm9uZSk6CisgICAgZGVmIGRhdGFfdG9fc2VuZChz
ZWxmLCBhbW91bnQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm5zIHNvbWUgZGF0
YSBmb3Igc2VuZGluZyBvdXQgb2YgdGhlIGludGVybmFsIGRhdGEgYnVmZmVyLgogCkBAIC0xMzM2
LDE5ICsxMzQ2LDE5IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBvciBs
ZXNzIGlmIHRoYXQgbXVjaCBkYXRhIGlzIG5vdCBhdmFpbGFibGUuIEl0IGRvZXMgbm90IHBlcmZv
cm0gYW55CiAgICAgICAgIEkvTywgYW5kIHNvIHVzZXMgYSBkaWZmZXJlbnQgbmFtZS4KIAotICAg
ICAgICA6cGFyYW0gYW10OiAob3B0aW9uYWwpIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRv
IHJldHVybi4gSWYgbm90CisgICAgICAgIDpwYXJhbSBhbW91bnQ6IChvcHRpb25hbCkgVGhlIG1h
eGltdW0gYW1vdW50IG9mIGRhdGEgdG8gcmV0dXJuLiBJZiBub3QKICAgICAgICAgICAgIHNldCwg
b3Igc2V0IHRvIGBgTm9uZWBgLCB3aWxsIHJldHVybiBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUu
Ci0gICAgICAgIDp0eXBlIGFtdDogYGBpbnRgYAorICAgICAgICA6dHlwZSBhbW91bnQ6IGBgaW50
YGAKICAgICAgICAgOnJldHVybnM6IEEgYnl0ZXN0cmluZyBjb250YWluaW5nIHRoZSBkYXRhIHRv
IHNlbmQgb24gdGhlIHdpcmUuCiAgICAgICAgIDpydHlwZTogYGBieXRlc2BgCiAgICAgICAgICIi
IgotICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRh
X3RvX3NlbmQKLSAgICAgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9IGInJworICAgICAgICBp
ZiBhbW91bnQgaXMgTm9uZToKKyAgICAgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9kYXRhX3Rv
X3NlbmQpCisgICAgICAgICAgICBzZWxmLl9kYXRhX3RvX3NlbmQgPSBieXRlYXJyYXkoKQogICAg
ICAgICAgICAgcmV0dXJuIGRhdGEKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSBz
ZWxmLl9kYXRhX3RvX3NlbmRbOmFtdF0KLSAgICAgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9
IHNlbGYuX2RhdGFfdG9fc2VuZFthbXQ6XQorICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKHNlbGYu
X2RhdGFfdG9fc2VuZFs6YW1vdW50XSkKKyAgICAgICAgICAgIHNlbGYuX2RhdGFfdG9fc2VuZCA9
IHNlbGYuX2RhdGFfdG9fc2VuZFthbW91bnQ6XQogICAgICAgICAgICAgcmV0dXJuIGRhdGEKIAog
ICAgIGRlZiBjbGVhcl9vdXRib3VuZF9kYXRhX2J1ZmZlcihzZWxmKToKQEAgLTEzNjEsNyArMTM3
MSw3IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICBUaGlzIG1ldGhvZCBz
aG91bGQgbm90IG5vcm1hbGx5IGJlIHVzZWQsIGJ1dCBpcyBtYWRlIGF2YWlsYWJsZSB0byBhdm9p
ZAogICAgICAgICBleHBvc2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogICAgICAgICAiIiIK
LSAgICAgICAgc2VsZi5fZGF0YV90b19zZW5kID0gYicnCisgICAgICAgIHNlbGYuX2RhdGFfdG9f
c2VuZCA9IGJ5dGVhcnJheSgpCiAKICAgICBkZWYgX2Fja25vd2xlZGdlX3NldHRpbmdzKHNlbGYp
OgogICAgICAgICAiIiIKQEAgLTE0NDAsNyArMTQ1MCw3IEBAIGNsYXNzIEgyQ29ubmVjdGlvbihv
YmplY3QpOgogICAgICAgICA6cmV0dXJuczogQSBsaXN0IG9mIGV2ZW50cyB0aGF0IHRoZSByZW1v
dGUgcGVlciB0cmlnZ2VyZWQgYnkgc2VuZGluZwogICAgICAgICAgICAgdGhpcyBkYXRhLgogICAg
ICAgICAiIiIKLSAgICAgICAgc2VsZi5jb25maWcubG9nZ2VyLmRlYnVnKAorICAgICAgICBzZWxm
LmNvbmZpZy5sb2dnZXIudHJhY2UoCiAgICAgICAgICAgICAiUHJvY2VzcyByZWNlaXZlZCBkYXRh
IG9uIGNvbm5lY3Rpb24uIFJlY2VpdmVkIGRhdGE6ICVyIiwgZGF0YQogICAgICAgICApCiAKQEAg
LTE2MjQsNiArMTYzNCwzNSBAQCBjbGFzcyBIMkNvbm5lY3Rpb24ob2JqZWN0KToKIAogICAgICAg
ICByZXR1cm4gZnJhbWVzLCBldmVudHMgKyBzdHJlYW1fZXZlbnRzCiAKKyAgICBkZWYgX2hhbmRs
ZV9kYXRhX29uX2Nsb3NlZF9zdHJlYW0oc2VsZiwgZXZlbnRzLCBleGMsIGZyYW1lKToKKyAgICAg
ICAgIyBUaGlzIHN0cmVhbSBpcyBhbHJlYWR5IGNsb3NlZCAtIGFuZCB5ZXQgd2UgcmVjZWl2ZWQg
YSBEQVRBIGZyYW1lLgorICAgICAgICAjIFRoZSByZWNlaXZlZCBEQVRBIGZyYW1lIGNvdW50cyB0
b3dhcmRzIHRoZSBjb25uZWN0aW9uIGZsb3cgd2luZG93LgorICAgICAgICAjIFdlIG5lZWQgdG8g
bWFudWFsbHkgdG8gYWNrbm93bGVkZ2UgdGhlIERBVEEgZnJhbWUgdG8gdXBkYXRlIHRoZSBmbG93
CisgICAgICAgICMgd2luZG93IG9mIHRoZSBjb25uZWN0aW9uLiBPdGhlcndpc2UgdGhlIHdob2xl
IGNvbm5lY3Rpb24gc3RhbGxzIGR1ZQorICAgICAgICAjIHRoZSBpbmJvdW5kIGZsb3cgd2luZG93
IGJlaW5nIDAuCisgICAgICAgIGZyYW1lcyA9IFtdCisgICAgICAgIGNvbm5fbWFuYWdlciA9IHNl
bGYuX2luYm91bmRfZmxvd19jb250cm9sX3dpbmRvd19tYW5hZ2VyCisgICAgICAgIGNvbm5faW5j
cmVtZW50ID0gY29ubl9tYW5hZ2VyLnByb2Nlc3NfYnl0ZXMoCisgICAgICAgICAgICBmcmFtZS5m
bG93X2NvbnRyb2xsZWRfbGVuZ3RoCisgICAgICAgICkKKyAgICAgICAgaWYgY29ubl9pbmNyZW1l
bnQ6CisgICAgICAgICAgICBmID0gV2luZG93VXBkYXRlRnJhbWUoMCkKKyAgICAgICAgICAgIGYu
d2luZG93X2luY3JlbWVudCA9IGNvbm5faW5jcmVtZW50CisgICAgICAgICAgICBmcmFtZXMuYXBw
ZW5kKGYpCisgICAgICAgICAgICBzZWxmLmNvbmZpZy5sb2dnZXIuZGVidWcoCisgICAgICAgICAg
ICAgICAgIlJlY2VpdmVkIERBVEEgZnJhbWUgb24gY2xvc2VkIHN0cmVhbSAlZCAtICIKKyAgICAg
ICAgICAgICAgICAiYXV0by1lbWl0dGVkIGEgV0lORE9XX1VQREFURSBieSAlZCIsCisgICAgICAg
ICAgICAgICAgZnJhbWUuc3RyZWFtX2lkLCBjb25uX2luY3JlbWVudAorICAgICAgICAgICAgKQor
ICAgICAgICBmID0gUnN0U3RyZWFtRnJhbWUoZXhjLnN0cmVhbV9pZCkKKyAgICAgICAgZi5lcnJv
cl9jb2RlID0gZXhjLmVycm9yX2NvZGUKKyAgICAgICAgZnJhbWVzLmFwcGVuZChmKQorICAgICAg
ICBzZWxmLmNvbmZpZy5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU3RyZWFtICVkIGFscmVh
ZHkgQ0xPU0VEIG9yIGNsZWFuZWQgdXAgLSAiCisgICAgICAgICAgICAiYXV0by1lbWl0dGVkIGEg
UlNUX0ZSQU1FIiAlIGZyYW1lLnN0cmVhbV9pZAorICAgICAgICApCisgICAgICAgIHJldHVybiBm
cmFtZXMsIGV2ZW50cyArIGV4Yy5fZXZlbnRzCisKICAgICBkZWYgX3JlY2VpdmVfZGF0YV9mcmFt
ZShzZWxmLCBmcmFtZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZWNlaXZlIGEgZGF0YSBmcmFt
ZSBvbiB0aGUgY29ubmVjdGlvbi4KQEAgLTE2MzYsMTIgKzE2NzUsMTkgQEAgY2xhc3MgSDJDb25u
ZWN0aW9uKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2luYm91bmRfZmxvd19jb250cm9sX3dpbmRv
d19tYW5hZ2VyLndpbmRvd19jb25zdW1lZCgKICAgICAgICAgICAgIGZsb3dfY29udHJvbGxlZF9s
ZW5ndGgKICAgICAgICAgKQotICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfc3RyZWFtX2J5X2lk
KGZyYW1lLnN0cmVhbV9pZCkKLSAgICAgICAgZnJhbWVzLCBzdHJlYW1fZXZlbnRzID0gc3RyZWFt
LnJlY2VpdmVfZGF0YSgKLSAgICAgICAgICAgIGZyYW1lLmRhdGEsCi0gICAgICAgICAgICAnRU5E
X1NUUkVBTScgaW4gZnJhbWUuZmxhZ3MsCi0gICAgICAgICAgICBmbG93X2NvbnRyb2xsZWRfbGVu
Z3RoCi0gICAgICAgICkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzdHJlYW0gPSBzZWxm
Ll9nZXRfc3RyZWFtX2J5X2lkKGZyYW1lLnN0cmVhbV9pZCkKKyAgICAgICAgICAgIGZyYW1lcywg
c3RyZWFtX2V2ZW50cyA9IHN0cmVhbS5yZWNlaXZlX2RhdGEoCisgICAgICAgICAgICAgICAgZnJh
bWUuZGF0YSwKKyAgICAgICAgICAgICAgICAnRU5EX1NUUkVBTScgaW4gZnJhbWUuZmxhZ3MsCisg
ICAgICAgICAgICAgICAgZmxvd19jb250cm9sbGVkX2xlbmd0aAorICAgICAgICAgICAgKQorICAg
ICAgICBleGNlcHQgU3RyZWFtQ2xvc2VkRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgVGhpcyBz
dHJlYW0gaXMgZWl0aGVyIG1hcmtlZCBhcyBDTE9TRUQgb3IgYWxyZWFkeSBnb25lIGZyb20gb3Vy
CisgICAgICAgICAgICAjIGludGVybmFsIHN0YXRlLgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2hhbmRsZV9kYXRhX29uX2Nsb3NlZF9zdHJlYW0oZXZlbnRzLCBlLCBmcmFtZSkKKwogICAgICAg
ICByZXR1cm4gZnJhbWVzLCBldmVudHMgKyBzdHJlYW1fZXZlbnRzCiAKICAgICBkZWYgX3JlY2Vp
dmVfc2V0dGluZ3NfZnJhbWUoc2VsZiwgZnJhbWUpOgpAQCAtMTcxNywxNSArMTc2MywxOSBAQCBj
bGFzcyBIMkNvbm5lY3Rpb24ob2JqZWN0KToKICAgICAgICAgZmxhZ3MgPSBbXQogCiAgICAgICAg
IGlmICdBQ0snIGluIGZyYW1lLmZsYWdzOgotICAgICAgICAgICAgZXZ0ID0gUGluZ0Fja25vd2xl
ZGdlZCgpCi0gICAgICAgICAgICBldnQucGluZ19kYXRhID0gZnJhbWUub3BhcXVlX2RhdGEKLSAg
ICAgICAgICAgIGV2ZW50cy5hcHBlbmQoZXZ0KQorICAgICAgICAgICAgZXZ0ID0gUGluZ0Fja1Jl
Y2VpdmVkKCkKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV2dCA9IFBpbmdSZWNlaXZlZCgp
CisKKyAgICAgICAgICAgICMgYXV0b21hdGljYWxseSBBQ0sgdGhlIFBJTkcgd2l0aCB0aGUgc2Ft
ZSAnb3BhcXVlIGRhdGEnCiAgICAgICAgICAgICBmID0gUGluZ0ZyYW1lKDApCiAgICAgICAgICAg
ICBmLmZsYWdzID0geydBQ0snfQogICAgICAgICAgICAgZi5vcGFxdWVfZGF0YSA9IGZyYW1lLm9w
YXF1ZV9kYXRhCiAgICAgICAgICAgICBmbGFncy5hcHBlbmQoZikKIAorICAgICAgICBldnQucGlu
Z19kYXRhID0gZnJhbWUub3BhcXVlX2RhdGEKKyAgICAgICAgZXZlbnRzLmFwcGVuZChldnQpCisK
ICAgICAgICAgcmV0dXJuIGZsYWdzLCBldmVudHMKIAogICAgIGRlZiBfcmVjZWl2ZV9yc3Rfc3Ry
ZWFtX2ZyYW1lKHNlbGYsIGZyYW1lKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9oMi9ldmVudHMucHkKaW5kZXggZmYzZWMzZGYzMTNmLi5hMDZjOTkwM2Q1YTgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRz
LnB5CkBAIC0zNTYsMjIgKzM1Niw1MSBAQCBjbGFzcyBSZW1vdGVTZXR0aW5nc0NoYW5nZWQoRXZl
bnQpOgogICAgICAgICApCiAKIAorY2xhc3MgUGluZ1JlY2VpdmVkKEV2ZW50KToKKyAgICAiIiIK
KyAgICBUaGUgUGluZ1JlY2VpdmVkIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgUElORyBpcyBy
ZWNlaXZlZC4gSXQgY29udGFpbnMKKyAgICB0aGUgJ29wYXF1ZSBkYXRhJyBvZiB0aGUgUElORyBm
cmFtZS4gQSBwaW5nIGFja25vd2xlZGdtZW50IHdpdGggdGhlIHNhbWUKKyAgICAnb3BhcXVlIGRh
dGEnIGlzIGF1dG9tYXRpY2FsbHkgZW1pdHRlZCBhZnRlciByZWNlaXZpbmcgYSBwaW5nLgorCisg
ICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xLjAKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2Vs
Zik6CisgICAgICAgICM6IFRoZSBkYXRhIGluY2x1ZGVkIG9uIHRoZSBwaW5nLgorICAgICAgICBz
ZWxmLnBpbmdfZGF0YSA9IE5vbmUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuICI8UGluZ1JlY2VpdmVkIHBpbmdfZGF0YTolcz4iICUgKAorICAgICAgICAgICAgX2J5
dGVzX3JlcHJlc2VudGF0aW9uKHNlbGYucGluZ19kYXRhKSwKKyAgICAgICAgKQorCisKIGNsYXNz
IFBpbmdBY2tub3dsZWRnZWQoRXZlbnQpOgogICAgICIiIgotICAgIFRoZSBQaW5nQWNrbm93bGVk
Z2VkIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgdXNlci1lbWl0dGVkIFBJTkcgaXMKLSAgICBh
Y2tub3dsZWRnZWQuIFRoaXMgY29udGFpbnMgdGhlIGRhdGEgaW4gdGhlIEFDSydlZCBQSU5HLCBh
bGxvd2luZyB0aGUKLSAgICB1c2VyIHRvIGNvcnJlbGF0ZSBQSU5HcyBhbmQgY2FsY3VsYXRlIFJU
VC4KKyAgICBTYW1lIGFzIFBpbmdBY2tSZWNlaXZlZC4KKworICAgIC4uIGRlcHJlY2F0ZWQ6OiAz
LjEuMAogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIzogVGhlIGRh
dGEgaW5jbHVkZWQgb24gdGhlIHBpbmcuCiAgICAgICAgIHNlbGYucGluZ19kYXRhID0gTm9uZQog
CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxQaW5nQWNrbm93bGVk
Z2VkIHBpbmdfZGF0YTolcz4iICUgKAorICAgICAgICByZXR1cm4gIjxQaW5nQWNrUmVjZWl2ZWQg
cGluZ19kYXRhOiVzPiIgJSAoCiAgICAgICAgICAgICBfYnl0ZXNfcmVwcmVzZW50YXRpb24oc2Vs
Zi5waW5nX2RhdGEpLAogICAgICAgICApCiAKIAorY2xhc3MgUGluZ0Fja1JlY2VpdmVkKFBpbmdB
Y2tub3dsZWRnZWQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrUmVjZWl2ZWQgZXZlbnQgaXMg
ZmlyZWQgd2hlbmV2ZXIgYSBQSU5HIGFja25vd2xlZGdtZW50IGlzCisgICAgcmVjZWl2ZWQuIEl0
IGNvbnRhaW5zIHRoZSAnb3BhcXVlIGRhdGEnIG9mIHRoZSBQSU5HK0FDSyBmcmFtZSwgYWxsb3dp
bmcgdGhlCisgICAgdXNlciB0byBjb3JyZWxhdGUgUElOR3MgYW5kIGNhbGN1bGF0ZSBSVFQuCisK
KyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEuMAorICAgICIiIgorICAgIHBhc3MKKworCiBjbGFz
cyBTdHJlYW1FbmRlZChFdmVudCk6CiAgICAgIiIiCiAgICAgVGhlIFN0cmVhbUVuZGVkIGV2ZW50
IGlzIGZpcmVkIHdoZW5ldmVyIGEgc3RyZWFtIGlzIGVuZGVkIGJ5IGEgcmVtb3RlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2gyL3NldHRpbmdzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zZXR0aW5ncy5weQppbmRl
eCAzZGE3MjAzMjljYjkuLmJmODdjOTRmNGU4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zZXR0
aW5ncy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3NldHRpbmdzLnB5CkBAIC0xNSw2ICsxNSwxMiBAQCBm
cm9tIGh5cGVyZnJhbWUuZnJhbWUgaW1wb3J0IFNldHRpbmdzRnJhbWUKIGZyb20gaDIuZXJyb3Jz
IGltcG9ydCBFcnJvckNvZGVzCiBmcm9tIGgyLmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRTZXR0
aW5nc1ZhbHVlRXJyb3IKIAordHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBN
dXRhYmxlTWFwcGluZworZXhjZXB0IEltcG9ydEVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisg
ICAgIyBQeXRob24gMi43IGNvbXBhdGliaWxpdHkKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBNdXRhYmxlTWFwcGluZworCiAKIGNsYXNzIFNldHRpbmdDb2RlcyhlbnVtLkludEVudW0pOgog
ICAgICIiIgpAQCAtNDksNiArNTUsMTAgQEAgY2xhc3MgU2V0dGluZ0NvZGVzKGVudW0uSW50RW51
bSk6CiAgICAgIzogYW5kIHZhbHVlIGluIG9jdGV0cyBwbHVzIGFuIG92ZXJoZWFkIG9mIDMyIG9j
dGV0cyBmb3IgZWFjaCBoZWFkZXIgZmllbGQuCiAgICAgTUFYX0hFQURFUl9MSVNUX1NJWkUgPSBT
ZXR0aW5nc0ZyYW1lLk1BWF9IRUFERVJfTElTVF9TSVpFCiAKKyAgICAjOiBUaGlzIHNldHRpbmcg
Y2FuIGJlIHVzZWQgdG8gZW5hYmxlIHRoZSBjb25uZWN0IHByb3RvY29sLiBUbyBlbmFibGUgb24g
YQorICAgICM6IGNsaWVudCBzZXQgdGhpcyB0byAxLgorICAgIEVOQUJMRV9DT05ORUNUX1BST1RP
Q09MID0gU2V0dGluZ3NGcmFtZS5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTAorCiAKIGRlZiBfc2V0
dGluZ19jb2RlX2Zyb21faW50KGNvZGUpOgogICAgICIiIgpAQCAtODgsNyArOTgsNyBAQCBjbGFz
cyBDaGFuZ2VkU2V0dGluZzoKICAgICAgICAgKQogCiAKLWNsYXNzIFNldHRpbmdzKGNvbGxlY3Rp
b25zLk11dGFibGVNYXBwaW5nKToKK2NsYXNzIFNldHRpbmdzKE11dGFibGVNYXBwaW5nKToKICAg
ICAiIiIKICAgICBBbiBvYmplY3QgdGhhdCBlbmNhcHN1bGF0ZXMgSFRUUC8yIHNldHRpbmdzIHN0
YXRlLgogCkBAIC0xMzUsNiArMTQ1LDcgQEAgY2xhc3MgU2V0dGluZ3MoY29sbGVjdGlvbnMuTXV0
YWJsZU1hcHBpbmcpOgogICAgICAgICAgICAgU2V0dGluZ0NvZGVzLkVOQUJMRV9QVVNIOiBjb2xs
ZWN0aW9ucy5kZXF1ZShbaW50KGNsaWVudCldKSwKICAgICAgICAgICAgIFNldHRpbmdDb2Rlcy5J
TklUSUFMX1dJTkRPV19TSVpFOiBjb2xsZWN0aW9ucy5kZXF1ZShbNjU1MzVdKSwKICAgICAgICAg
ICAgIFNldHRpbmdDb2Rlcy5NQVhfRlJBTUVfU0laRTogY29sbGVjdGlvbnMuZGVxdWUoWzE2Mzg0
XSksCisgICAgICAgICAgICBTZXR0aW5nQ29kZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0w6IGNv
bGxlY3Rpb25zLmRlcXVlKFswXSksCiAgICAgICAgIH0KICAgICAgICAgaWYgaW5pdGlhbF92YWx1
ZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpbml0aWFsX3Zh
bHVlcy5pdGVtcygpOgpAQCAtMjQzLDYgKzI1NCwxOCBAQCBjbGFzcyBTZXR0aW5ncyhjb2xsZWN0
aW9ucy5NdXRhYmxlTWFwcGluZyk6CiAgICAgZGVmIG1heF9oZWFkZXJfbGlzdF9zaXplKHNlbGYs
IHZhbHVlKToKICAgICAgICAgc2VsZltTZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkVd
ID0gdmFsdWUKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmFibGVfY29ubmVjdF9wcm90b2Nv
bChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSA6
ZGF0YTpgRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0wKKyAgICAgICAgPGgyLnNldHRpbmdzLlNldHRp
bmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTD5gIHNldHRpbmcuCisgICAgICAgICIiIgor
ICAgICAgICByZXR1cm4gc2VsZltTZXR0aW5nQ29kZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xd
CisKKyAgICBAZW5hYmxlX2Nvbm5lY3RfcHJvdG9jb2wuc2V0dGVyCisgICAgZGVmIGVuYWJsZV9j
b25uZWN0X3Byb3RvY29sKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZltTZXR0aW5nQ29kZXMu
RU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xdID0gdmFsdWUKKwogICAgICMgSW1wbGVtZW50IHRoZSBN
dXRhYmxlTWFwcGluZyBBUEkuCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAg
ICAgIHZhbCA9IHNlbGYuX3NldHRpbmdzW2tleV1bMF0KQEAgLTI5Miw3ICszMTUsNyBAQCBjbGFz
cyBTZXR0aW5ncyhjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CiAgICAgICAgICAgICByZXR1
cm4gTm90SW1wbGVtZW50ZWQKIAogCi1kZWYgX3ZhbGlkYXRlX3NldHRpbmcoc2V0dGluZywgdmFs
dWUpOgorZGVmIF92YWxpZGF0ZV9zZXR0aW5nKHNldHRpbmcsIHZhbHVlKTogICMgbm9xYTogQzkw
MQogICAgICIiIgogICAgIENvbmZpcm1zIHRoYXQgYSBzcGVjaWZpYyBzZXR0aW5nIGhhcyBhIHdl
bGwtZm9ybWVkIHZhbHVlLiBJZiB0aGUgc2V0dGluZyBpcwogICAgIGludmFsaWQsIHJldHVybnMg
YW4gZXJyb3IgY29kZS4gT3RoZXJ3aXNlLCByZXR1cm5zIDAgKE5PX0VSUk9SKS4KQEAgLTMwOSw1
ICszMzIsOCBAQCBkZWYgX3ZhbGlkYXRlX3NldHRpbmcoc2V0dGluZywgdmFsdWUpOgogICAgIGVs
aWYgc2V0dGluZyA9PSBTZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkU6CiAgICAgICAg
IGlmIHZhbHVlIDwgMDoKICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLlBST1RPQ09MX0VS
Uk9SCisgICAgZWxpZiBzZXR0aW5nID09IFNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9U
T0NPTDoKKyAgICAgICAgaWYgdmFsdWUgbm90IGluICgwLCAxKToKKyAgICAgICAgICAgIHJldHVy
biBFcnJvckNvZGVzLlBST1RPQ09MX0VSUk9SCiAKICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9oMi9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3N0cmVhbS5weQppbmRleCA0ODllYTRk
OGQ2ZjUuLjFjYjkxNzg2ZDQyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zdHJlYW0ucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9oMi9zdHJlYW0ucHkKQEAgLTM3OCw0MSArMzc4LDYgQEAgY2xhc3MgSDJTdHJl
YW1TdGF0ZU1hY2hpbmUob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIFByb3Rv
Y29sRXJyb3IoIkF0dGVtcHRlZCB0byBwdXNoIG9uIGNsb3NlZCBzdHJlYW0uIikKIAotICAgIGRl
ZiB3aW5kb3dfb25fY2xvc2VkX3N0cmVhbShzZWxmLCBwcmV2aW91c19zdGF0ZSk6Ci0gICAgICAg
ICIiIgotICAgICAgICBDYWxsZWQgd2hlbiBhIFdJTkRPV19VUERBVEUgZnJhbWUgaXMgcmVjZWl2
ZWQgb24gYW4gYWxyZWFkeS1jbG9zZWQKLSAgICAgICAgc3RyZWFtLgotCi0gICAgICAgIElmIHdl
IHNlbnQgYW4gRU5EX1NUUkVBTSBmcmFtZSwgd2UganVzdCBpZ25vcmUgdGhlIGZyYW1lLCBhcyBp
bnN0cnVjdGVkCi0gICAgICAgIGluIFJGQyA3NTQwIFNlY3Rpb24gNS4xLiBUZWNobmljYWxseSB3
ZSBzaG91bGQgZXZlbnR1YWxseSBjb25zaWRlcgotICAgICAgICBXSU5ET1dfVVBEQVRFIGluIHRo
aXMgc3RhdGUgYW4gZXJyb3IsIGJ1dCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhCi0gICAgICAg
IGNsb2NrIHNvIHdlIGp1c3QgYWx3YXlzIGFsbG93IGl0LiBJZiB3ZSBjbG9zZWQgdGhlIHN0cmVh
bSBmb3IgYW55IG90aGVyCi0gICAgICAgIHJlYXNvbiwgd2UgYmVoYXZlIGFzIHdlIGRvIGZvciBy
ZWNlaXZpbmcgYW55IG90aGVyIGZyYW1lIG9uIGEgY2xvc2VkCi0gICAgICAgIHN0cmVhbS4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGFzc2VydCBzZWxmLnN0cmVhbV9jbG9zZWRfYnkgaXMgbm90IE5v
bmUKLQotICAgICAgICBpZiBzZWxmLnN0cmVhbV9jbG9zZWRfYnkgPT0gU3RyZWFtQ2xvc2VkQnku
U0VORF9FTkRfU1RSRUFNOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIHJldHVybiBz
ZWxmLnJlY3Zfb25fY2xvc2VkX3N0cmVhbShwcmV2aW91c19zdGF0ZSkKLQotICAgIGRlZiByZXNl
dF9vbl9jbG9zZWRfc3RyZWFtKHNlbGYsIHByZXZpb3VzX3N0YXRlKToKLSAgICAgICAgIiIiCi0g
ICAgICAgIENhbGxlZCB3aGVuIGEgUlNUX1NUUkVBTSBmcmFtZSBpcyByZWNlaXZlZCBvbiBhbiBh
bHJlYWR5LWNsb3NlZCBzdHJlYW0uCi0KLSAgICAgICAgSWYgd2Ugc2VudCBhbiBFTkRfU1RSRUFN
IGZyYW1lLCB3ZSBqdXN0IGlnbm9yZSB0aGUgZnJhbWUsIGFzIGluc3RydWN0ZWQKLSAgICAgICAg
aW4gUkZDIDc1NDAgU2VjdGlvbiA1LjEuIFRlY2huaWNhbGx5IHdlIHNob3VsZCBldmVudHVhbGx5
IGNvbnNpZGVyCi0gICAgICAgIFJTVF9TVFJFQU0gaW4gdGhpcyBzdGF0ZSBhbiBlcnJvciwgYnV0
IHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgY2xvY2sKLSAgICAgICAgc28gd2UganVzdCBhbHdh
eXMgYWxsb3cgaXQuIElmIHdlIGNsb3NlZCB0aGUgc3RyZWFtIGZvciBhbnkgb3RoZXIKLSAgICAg
ICAgcmVhc29uLCB3ZSBiZWhhdmUgYXMgd2UgZG8gZm9yIHJlY2VpdmluZyBhbnkgb3RoZXIgZnJh
bWUgb24gYSBjbG9zZWQKLSAgICAgICAgc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgYXNz
ZXJ0IHNlbGYuc3RyZWFtX2Nsb3NlZF9ieSBpcyBub3QgTm9uZQotCi0gICAgICAgIGlmIHNlbGYu
c3RyZWFtX2Nsb3NlZF9ieSBpcyBTdHJlYW1DbG9zZWRCeS5TRU5EX0VORF9TVFJFQU06Ci0gICAg
ICAgICAgICByZXR1cm4gW10KLSAgICAgICAgcmV0dXJuIHNlbGYucmVjdl9vbl9jbG9zZWRfc3Ry
ZWFtKHByZXZpb3VzX3N0YXRlKQotCiAgICAgZGVmIHNlbmRfaW5mb3JtYXRpb25hbF9yZXNwb25z
ZShzZWxmLCBwcmV2aW91c19zdGF0ZSk6CiAgICAgICAgICIiIgogICAgICAgICBDYWxsZWQgd2hl
biBhbiBpbmZvcm1hdGlvbmFsIGhlYWRlciBibG9jayBpcyBzZW50ICh0aGF0IGlzLCBhIGJsb2Nr
CkBAIC03NDAsMTEgKzcwNSwxMiBAQCBfdHJhbnNpdGlvbnMgPSB7CiAKICAgICAjID4gV0lORE9X
X1VQREFURSBvciBSU1RfU1RSRUFNIGZyYW1lcyBjYW4gYmUgcmVjZWl2ZWQgaW4gdGhpcyBzdGF0
ZQogICAgICMgPiBmb3IgYSBzaG9ydCBwZXJpb2QgYWZ0ZXIgYSBEQVRBIG9yIEhFQURFUlMgZnJh
bWUgY29udGFpbmluZyBhCi0gICAgIyA+IEVORF9TVFJFQU0gZmxhZyBpcyBzZW50LgorICAgICMg
PiBFTkRfU1RSRUFNIGZsYWcgaXMgc2VudCwgYXMgaW5zdHJ1Y3RlZCBpbiBSRkMgNzU0MCBTZWN0
aW9uIDUuMS4gQnV0IHdlCisgICAgIyA+IGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgY2xvY2sgc28g
d2UganVzdCBhbHdheXMgYWxsb3cgaXQuCiAgICAgKFN0cmVhbVN0YXRlLkNMT1NFRCwgU3RyZWFt
SW5wdXRzLlJFQ1ZfV0lORE9XX1VQREFURSk6Ci0gICAgICAgIChIMlN0cmVhbVN0YXRlTWFjaGlu
ZS53aW5kb3dfb25fY2xvc2VkX3N0cmVhbSwgU3RyZWFtU3RhdGUuQ0xPU0VEKSwKKyAgICAgICAg
KE5vbmUsIFN0cmVhbVN0YXRlLkNMT1NFRCksCiAgICAgKFN0cmVhbVN0YXRlLkNMT1NFRCwgU3Ry
ZWFtSW5wdXRzLlJFQ1ZfUlNUX1NUUkVBTSk6Ci0gICAgICAgIChIMlN0cmVhbVN0YXRlTWFjaGlu
ZS5yZXNldF9vbl9jbG9zZWRfc3RyZWFtLCBTdHJlYW1TdGF0ZS5DTE9TRUQpLAorICAgICAgICAo
Tm9uZSwgU3RyZWFtU3RhdGUuQ0xPU0VEKSwKIAogICAgICMgPiBBIHJlY2VpdmVyIE1VU1QgdHJl
YXQgdGhlIHJlY2VpcHQgb2YgYSBQVVNIX1BST01JU0Ugb24gYSBzdHJlYW0gdGhhdCBpcwogICAg
ICMgPiBuZWl0aGVyICJvcGVuIiBub3IgImhhbGYtY2xvc2VkIChsb2NhbCkiIGFzIGEgY29ubmVj
dGlvbiBlcnJvciBvZiB0eXBlCkBAIC03ODgsNyArNzU0LDcgQEAgY2xhc3MgSDJTdHJlYW0ob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5tYXhfb3V0Ym91bmRfZnJhbWVfc2l6ZSA9IE5vbmUKICAgICAg
ICAgc2VsZi5yZXF1ZXN0X21ldGhvZCA9IE5vbmUKIAotICAgICAgICAjIFRoZSBjdXJlbnQgdmFs
dWUgb2YgdGhlIG91dGJvdW5kIHN0cmVhbSBmbG93IGNvbnRyb2wgd2luZG93CisgICAgICAgICMg
VGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG91dGJvdW5kIHN0cmVhbSBmbG93IGNvbnRyb2wgd2lu
ZG93CiAgICAgICAgIHNlbGYub3V0Ym91bmRfZmxvd19jb250cm9sX3dpbmRvdyA9IG91dGJvdW5k
X3dpbmRvd19zaXplCiAKICAgICAgICAgIyBUaGUgZmxvdyBjb250cm9sIG1hbmFnZXIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2gyL3V0aWxpdGllcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdXRpbGl0aWVzLnB5
CmluZGV4IDBjZmYwZmE2NzEwNi4uMDZjOTE2ZWVhN2I5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gy
L3V0aWxpdGllcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3V0aWxpdGllcy5weQpAQCAtMzMsNiArMzMs
NyBAQCBfQUxMT1dFRF9QU0VVRE9fSEVBREVSX0ZJRUxEUyA9IGZyb3plbnNldChbCiAgICAgYic6
YXV0aG9yaXR5JywgdSc6YXV0aG9yaXR5JywKICAgICBiJzpwYXRoJywgdSc6cGF0aCcsCiAgICAg
Yic6c3RhdHVzJywgdSc6c3RhdHVzJywKKyAgICBiJzpwcm90b2NvbCcsIHUnOnByb3RvY29sJywK
IF0pCiAKIApAQCAtNDcsMTMgKzQ4LDE5IEBAIF9SRVFVRVNUX09OTFlfSEVBREVSUyA9IGZyb3pl
bnNldChbCiAgICAgYic6c2NoZW1lJywgdSc6c2NoZW1lJywKICAgICBiJzpwYXRoJywgdSc6cGF0
aCcsCiAgICAgYic6YXV0aG9yaXR5JywgdSc6YXV0aG9yaXR5JywKLSAgICBiJzptZXRob2QnLCB1
JzptZXRob2QnCisgICAgYic6bWV0aG9kJywgdSc6bWV0aG9kJywKKyAgICBiJzpwcm90b2NvbCcs
IHUnOnByb3RvY29sJywKIF0pCiAKIAogX1JFU1BPTlNFX09OTFlfSEVBREVSUyA9IGZyb3plbnNl
dChbYic6c3RhdHVzJywgdSc6c3RhdHVzJ10pCiAKIAorIyBBIFNldCBvZiBwc2V1ZG8gaGVhZGVy
cyB0aGF0IGFyZSBvbmx5IHZhbGlkIGlmIHRoZSBtZXRob2QgaXMKKyMgQ09OTkVDVCwgc2VlIFJG
QyA4NDQxIMKnIDUKK19DT05ORUNUX1JFUVVFU1RfT05MWV9IRUFERVJTID0gZnJvemVuc2V0KFti
Jzpwcm90b2NvbCcsIHUnOnByb3RvY29sJ10pCisKKwogaWYgc3lzLnZlcnNpb25faW5mb1swXSA9
PSAyOiAgIyBQeXRob24gMi5YCiAgICAgX1dISVRFU1BBQ0UgPSBmcm96ZW5zZXQod2hpdGVzcGFj
ZSkKIGVsc2U6ICAjIFB5dGhvbiAzLjMrCkBAIC0zMjMsNiArMzMwLDcgQEAgZGVmIF9yZWplY3Rf
cHNldWRvX2hlYWRlcl9maWVsZHMoaGVhZGVycywgaGRyX3ZhbGlkYXRpb25fZmxhZ3MpOgogICAg
ICIiIgogICAgIHNlZW5fcHNldWRvX2hlYWRlcl9maWVsZHMgPSBzZXQoKQogICAgIHNlZW5fcmVn
dWxhcl9oZWFkZXIgPSBGYWxzZQorICAgIG1ldGhvZCA9IE5vbmUKIAogICAgIGZvciBoZWFkZXIg
aW4gaGVhZGVyczoKICAgICAgICAgaWYgX2N1c3RvbV9zdGFydHN3aXRoKGhlYWRlclswXSwgYic6
JywgdSc6Jyk6CkBAIC0zNDQsNiArMzUyLDEyIEBAIGRlZiBfcmVqZWN0X3BzZXVkb19oZWFkZXJf
ZmllbGRzKGhlYWRlcnMsIGhkcl92YWxpZGF0aW9uX2ZsYWdzKToKICAgICAgICAgICAgICAgICAg
ICAgIlJlY2VpdmVkIGN1c3RvbSBwc2V1ZG8taGVhZGVyIGZpZWxkICVzIiAlIGhlYWRlclswXQog
ICAgICAgICAgICAgICAgICkKIAorICAgICAgICAgICAgaWYgaGVhZGVyWzBdIGluIChiJzptZXRo
b2QnLCB1JzptZXRob2QnKToKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShoZWFk
ZXJbMV0sIGJ5dGVzKToKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gaGVhZGVyWzFdLmVu
Y29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
IG1ldGhvZCA9IGhlYWRlclsxXQorCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWVuX3Jl
Z3VsYXJfaGVhZGVyID0gVHJ1ZQogCkBAIC0zNTEsMTEgKzM2NSwxMiBAQCBkZWYgX3JlamVjdF9w
c2V1ZG9faGVhZGVyX2ZpZWxkcyhoZWFkZXJzLCBoZHJfdmFsaWRhdGlvbl9mbGFncyk6CiAKICAg
ICAjIENoZWNrIHRoZSBwc2V1ZG8taGVhZGVycyB3ZSBnb3QgdG8gY29uZmlybSB0aGV5J3JlIGFj
Y2VwdGFibGUuCiAgICAgX2NoZWNrX3BzZXVkb19oZWFkZXJfZmllbGRfYWNjZXB0YWJpbGl0eSgK
LSAgICAgICAgc2Vlbl9wc2V1ZG9faGVhZGVyX2ZpZWxkcywgaGRyX3ZhbGlkYXRpb25fZmxhZ3MK
KyAgICAgICAgc2Vlbl9wc2V1ZG9faGVhZGVyX2ZpZWxkcywgbWV0aG9kLCBoZHJfdmFsaWRhdGlv
bl9mbGFncwogICAgICkKIAogCiBkZWYgX2NoZWNrX3BzZXVkb19oZWFkZXJfZmllbGRfYWNjZXB0
YWJpbGl0eShwc2V1ZG9faGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhkcl92YWxpZGF0aW9uX2ZsYWdzKToKICAgICAiIiIKICAgICBHaXZlbiB0aGUg
c2V0IG9mIHBzZXVkby1oZWFkZXJzIHByZXNlbnQgaW4gYSBoZWFkZXIgYmxvY2sgYW5kIHRoZQpA
QCAtMzk0LDYgKzQwOSwxMyBAQCBkZWYgX2NoZWNrX3BzZXVkb19oZWFkZXJfZmllbGRfYWNjZXB0
YWJpbGl0eShwc2V1ZG9faGVhZGVycywKICAgICAgICAgICAgICAgICAiRW5jb3VudGVyZWQgcmVz
cG9uc2Utb25seSBoZWFkZXJzICVzIiAlCiAgICAgICAgICAgICAgICAgaW52YWxpZF9yZXF1ZXN0
X2hlYWRlcnMKICAgICAgICAgICAgICkKKyAgICAgICAgaWYgbWV0aG9kICE9IGInQ09OTkVDVCc6
CisgICAgICAgICAgICBpbnZhbGlkX2hlYWRlcnMgPSBwc2V1ZG9faGVhZGVycyAmIF9DT05ORUNU
X1JFUVVFU1RfT05MWV9IRUFERVJTCisgICAgICAgICAgICBpZiBpbnZhbGlkX2hlYWRlcnM6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigKKyAgICAgICAgICAgICAgICAgICAg
IkVuY291bnRlcmVkIGNvbm5lY3QtcmVxdWVzdC1vbmx5IGhlYWRlcnMgJXMiICUKKyAgICAgICAg
ICAgICAgICAgICAgaW52YWxpZF9oZWFkZXJzCisgICAgICAgICAgICAgICAgKQogCiAKIGRlZiBf
dmFsaWRhdGVfaG9zdF9hdXRob3JpdHlfaGVhZGVyKGhlYWRlcnMpOgpAQCAtNjE3LDMgKzYzOSwy
MiBAQCBkZWYgdmFsaWRhdGVfb3V0Ym91bmRfaGVhZGVycyhoZWFkZXJzLCBoZHJfdmFsaWRhdGlv
bl9mbGFncyk6CiAgICAgaGVhZGVycyA9IF9jaGVja19wYXRoX2hlYWRlcihoZWFkZXJzLCBoZHJf
dmFsaWRhdGlvbl9mbGFncykKIAogICAgIHJldHVybiBoZWFkZXJzCisKKworY2xhc3MgU2l6ZUxp
bWl0RGljdChjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCk6CisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fc2l6ZV9saW1pdCA9IGt3YXJncy5w
b3AoInNpemVfbGltaXQiLCBOb25lKQorICAgICAgICBzdXBlcihTaXplTGltaXREaWN0LCBzZWxm
KS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5fY2hlY2tfc2l6ZV9s
aW1pdCgpCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAg
IHN1cGVyKFNpemVMaW1pdERpY3QsIHNlbGYpLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCisKKyAg
ICAgICAgc2VsZi5fY2hlY2tfc2l6ZV9saW1pdCgpCisKKyAgICBkZWYgX2NoZWNrX3NpemVfbGlt
aXQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3NpemVfbGltaXQgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICB3aGlsZSBsZW4oc2VsZikgPiBzZWxmLl9zaXplX2xpbWl0OgorICAgICAgICAgICAg
ICAgIHNlbGYucG9waXRlbShsYXN0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY1Y2E0YjcwZmJmOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2gyL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9jb25maWcucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gy
L2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Vycm9ycy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9oMi9leGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9mcmFtZV9idWZmZXIu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2gyL3NldHRpbmdzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9zdHJlYW0ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2gyL3V0aWxpdGllcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvd2luZG93cy5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9zZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVwLmNmZwppbmRleCA1ZTQwOTAwMTdhOWIu
LjM2NzA1MDdmZjEyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9zZXR1cC5jZmcKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9zZXR1cC5jZmcKQEAgLTEsMiArMSwxMCBAQAorW3Rvb2w6cHl0ZXN0XQordGVzdHBhdGhzID0g
dGVzdAorCiBbd2hlZWxdCiB1bml2ZXJzYWwgPSAxCisKK1tlZ2dfaW5mb10KK3RhZ19idWlsZCA9
IAordGFnX2RhdGUgPSAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvc2V0dXAucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L3NldHVwLnB5CmluZGV4IGQzYjc3ZjlkNzkwMC4uMWNlOTVkNTc5NmRjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvc2V0dXAucHkKQEAgLTQwLDcgKzQwLDExIEBA
IHNldHVwKAogICAgIGxvbmdfZGVzY3JpcHRpb249dSdcblxuJy5qb2luKFtyZWFkbWUsIGhpc3Rv
cnldKSwKICAgICBhdXRob3I9J0NvcnkgQmVuZmllbGQnLAogICAgIGF1dGhvcl9lbWFpbD0nY29y
eUBsdWthc2EuY28udWsnLAotICAgIHVybD0naHR0cDovL2h5cGVyLnJ0ZmQub3JnJywKKyAgICB1
cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24taHlwZXIvaHlwZXItaDInLAorICAgIHByb2pl
Y3RfdXJscz17CisgICAgICAgICdEb2N1bWVudGF0aW9uJzogJ2h0dHBzOi8vcHl0aG9uLWh5cGVy
Lm9yZy9wcm9qZWN0cy9oMicsCisgICAgICAgICdTb3VyY2UnOiAnaHR0cHM6Ly9naXRodWIuY29t
L3B5dGhvbi1oeXBlci9oeXBlci1oMicsCisgICAgfSwKICAgICBwYWNrYWdlcz1wYWNrYWdlcywK
ICAgICBwYWNrYWdlX2RhdGE9eycnOiBbJ0xJQ0VOU0UnLCAnUkVBRE1FLnJzdCcsICdDT05UUklC
VVRPUlMucnN0JywgJ0hJU1RPUlkucnN0JywgJ05PVElDRVMnXX0sCiAgICAgcGFja2FnZV9kaXI9
eydoMic6ICdoMid9LApAQCAtNTQsMTggKzU4LDE5IEBAIHNldHVwKAogICAgICAgICAnUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLAogICAgICAgICAnUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDIuNycsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMycsCi0gICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24g
OjogMy4zJywKICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjQn
LAogICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNScsCiAgICAg
ICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42JywKKyAgICAgICAgJ1By
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjcnLAorICAgICAgICAnUHJvZ3JhbW1p
bmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCcsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5n
dWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbicsCiAgICAgICAgICdQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogUHlQeScs
CiAgICAgXSwKICAgICBpbnN0YWxsX3JlcXVpcmVzPVsKLSAgICAgICAgJ2h5cGVyZnJhbWU+PTUu
MCwgPDYnLAotICAgICAgICAnaHBhY2s+PTIuMywgPDQnLAorICAgICAgICAnaHlwZXJmcmFtZT49
NS4yLjAsIDw2JywKKyAgICAgICAgJ2hwYWNrPj0zLjAsPDQnLAogICAgIF0sCiAgICAgZXh0cmFz
X3JlcXVpcmU9ewotICAgICAgICAnOnB5dGhvbl92ZXJzaW9uID09ICIyLjciIG9yIHB5dGhvbl92
ZXJzaW9uID09ICIzLjMiJzogWydlbnVtMzQ+PTEuMS42LCA8MiddLAorICAgICAgICAnOnB5dGhv
bl92ZXJzaW9uID09ICIyLjciJzogWydlbnVtMzQ+PTEuMS42LCA8MiddLAogICAgIH0KICkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0
L3Rlc3RfYmFzaWNfbG9naWMucHkKaW5kZXggM2NmYzdjYzdlOGNhLi43ZGY5OWE2YTU3MWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5CkBAIC0xMTQsNiArMTE0LDIzIEBAIGNsYXNzIFRlc3RC
YXNpY0NsaWVudChvYmplY3QpOgogICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YV9mcmFtZV9wYWRf
bGVuZ3RoPTAKICAgICAgICAgKQogCisgICAgZGVmIHRlc3Rfc2VuZGluZ19kYXRhX2luX21lbW9y
eXZpZXcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdXBwb3J0IG1lbW9yeXZpZXcgZm9y
IHNlbmRpbmcgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAgIGMgPSBoMi5jb25uZWN0aW9uLkgy
Q29ubmVjdGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisgICAgICAgIGMu
c2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMpCisKKyAgICAgICAg
IyBDbGVhciB0aGUgZGF0YSwgdGhlbiBzZW5kIHNvbWUgZGF0YS4KKyAgICAgICAgYy5jbGVhcl9v
dXRib3VuZF9kYXRhX2J1ZmZlcigpCisgICAgICAgIGV2ZW50cyA9IGMuc2VuZF9kYXRhKDEsIG1l
bW9yeXZpZXcoYidzb21lIGRhdGEnKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKyAgICAg
ICAgZGF0YV90b19zZW5kID0gYy5kYXRhX3RvX3NlbmQoKQorICAgICAgICBhc3NlcnQgKAorICAg
ICAgICAgICAgZGF0YV90b19zZW5kID09IGInXHgwMFx4MDBcdFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMXNvbWUgZGF0YScKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3Rfc2VuZGluZ19kYXRhX3dp
dGhfcGFkZGluZyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFNpbmdsZSBkYXRhIGZyYW1l
cyB3aXRoIHBhZGRpbmcgYXJlIGVuY29kZWQgY29ycmVjdGx5LgpAQCAtMTA4MSw3ICsxMDk4LDEy
IEBAIGNsYXNzIFRlc3RCYXNpY1NlcnZlcihvYmplY3QpOgogICAgICAgICBjLmNsZWFyX291dGJv
dW5kX2RhdGFfYnVmZmVyKCkKICAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoc2VudF9m
cmFtZS5zZXJpYWxpemUoKSkKIAotICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAgICBh
c3NlcnQgbGVuKGV2ZW50cykgPT0gMQorICAgICAgICBldmVudCA9IGV2ZW50c1swXQorCisgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LCBoMi5ldmVudHMuUGluZ1JlY2VpdmVkKQorICAg
ICAgICBhc3NlcnQgZXZlbnQucGluZ19kYXRhID09IHBpbmdfZGF0YQorCiAgICAgICAgIGFzc2Vy
dCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkX2RhdGEKIAogICAgIGRlZiB0ZXN0X3JlY2Vp
dmluZ19zZXR0aW5nc19mcmFtZV9ldmVudChzZWxmLCBmcmFtZV9mYWN0b3J5KToKQEAgLTEzMjQs
NyArMTM0Niw3IEBAIGNsYXNzIFRlc3RCYXNpY1NlcnZlcihvYmplY3QpOgogCiAgICAgZGVmIHRl
c3RfcmVjZWl2aW5nX3BpbmdfYWNrbm93bGVkZ2VtZW50KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgog
ICAgICAgICAiIiIKLSAgICAgICAgUmVjZWl2aW5nIGEgUElORyBhY2tub2x3ZWRnZW1lbnQgZmly
ZXMgYSBQaW5nQWNrbm9sd2VkZ2VkIGV2ZW50LgorICAgICAgICBSZWNlaXZpbmcgYSBQSU5HIGFj
a25vd2xlZGdlbWVudCBmaXJlcyBhIFBpbmdBY2tSZWNlaXZlZCBldmVudC4KICAgICAgICAgIiIi
CiAgICAgICAgIGMgPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbihjb25maWc9c2VsZi5zZXJ2
ZXJfY29uZmlnKQogICAgICAgICBjLnJlY2VpdmVfZGF0YShmcmFtZV9mYWN0b3J5LnByZWFtYmxl
KCkpCkBAIC0xMzM5LDcgKzEzNjEsOCBAQCBjbGFzcyBUZXN0QmFzaWNTZXJ2ZXIob2JqZWN0KToK
ICAgICAgICAgYXNzZXJ0IGxlbihldmVudHMpID09IDEKICAgICAgICAgZXZlbnQgPSBldmVudHNb
MF0KIAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShldmVudCwgaDIuZXZlbnRzLlBpbmdBY2tu
b3dsZWRnZWQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LCBoMi5ldmVudHMuUGlu
Z0Fja1JlY2VpdmVkKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShldmVudCwgaDIuZXZlbnRz
LlBpbmdBY2tub3dsZWRnZWQpICAjIGRlcHJlY2F0ZWQKICAgICAgICAgYXNzZXJ0IGV2ZW50LnBp
bmdfZGF0YSA9PSBwaW5nX2RhdGEKIAogICAgIGRlZiB0ZXN0X3N0cmVhbV9lbmRlZF9yZW1vdGVs
eShzZWxmLCBmcmFtZV9mYWN0b3J5KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Ns
b3NlZF9zdHJlYW1zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY2xvc2VkX3N0cmVhbXMucHkKaW5k
ZXggMjM0NGY3MmQ2YTFhLi42MzFhNjY3ODdhZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90
ZXN0X2Nsb3NlZF9zdHJlYW1zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Nsb3NlZF9zdHJl
YW1zLnB5CkBAIC0xMDcsNiArMTA3LDc3IEBAIGNsYXNzIFRlc3RDbG9zZWRTdHJlYW1zKG9iamVj
dCk6CiAgICAgICAgICMgVGhlIHN0cmVhbXMgZGljdGlvbmFyeSBzaG91bGQgYmUgZW1wdHkuCiAg
ICAgICAgIGFzc2VydCBub3QgYy5zdHJlYW1zCiAKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3JzdF9z
dHJlYW1fb25fY2xvc2VkX3N0cmVhbShzZWxmLCBmcmFtZV9mYWN0b3J5KToKKyAgICAgICAgIiIi
CisgICAgICAgIFJTVF9TVFJFQU0gZnJhbWUgc2hvdWxkIGJlIGlnbm9yZWQgaWYgc3RyZWFtIGlz
IGluIGEgY2xvc2VkIHN0YXRlLgorICAgICAgICBTZWUgUkZDIDc1NDAgU2VjdGlvbiA1LjEgKGNs
b3NlZCBzdGF0ZSkKKyAgICAgICAgIiIiCisgICAgICAgIGMgPSBoMi5jb25uZWN0aW9uLkgyQ29u
bmVjdGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisKKyAgICAgICAgIyBD
bGllbnQgc2VuZHMgcmVxdWVzdAorICAgICAgICBjLnNlbmRfaGVhZGVycygxLCBzZWxmLmV4YW1w
bGVfcmVxdWVzdF9oZWFkZXJzKQorCisgICAgICAgICMgU29tZSB0aW1lIHBhc3NlcyBhbmQgY2xp
ZW50IHNlbmRzIERBVEEgZnJhbWUgYW5kIGNsb3NlcyBzdHJlYW0sCisgICAgICAgICMgc28gaXQg
aXMgaW4gYSBoYWxmLWNsb3NlZCBzdGF0ZQorICAgICAgICBjLnNlbmRfZGF0YSgxLCBiJ3NvbWUg
ZGF0YScsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIFNlcnZlciByZWNlaXZlZCBIRUFE
RVJTIGZyYW1lIGJ1dCBEQVRBIGZyYW1lIGlzIHN0aWxsIG9uIHRoZSB3YXkuCisgICAgICAgICMg
U3RyZWFtIGlzIGluIG9wZW4gc3RhdGUgb24gdGhlIHNlcnZlci1zaWRlLiBJbiB0aGlzIHN0YXRl
IHNlcnZlciBpcworICAgICAgICAjIGFsbG93ZWQgdG8gZW5kIHN0cmVhbSBhbmQgcmVzZXQgaXQg
LSB0aGlzIHRyaWNrIGhlbHBzIGltbWVkaWF0ZWx5CisgICAgICAgICMgY2xvc2Ugc3RyZWFtIG9u
IHRoZSBzZXJ2ZXItc2lkZS4KKyAgICAgICAgaGVhZGVyc19mcmFtZSA9IGZyYW1lX2ZhY3Rvcnku
YnVpbGRfaGVhZGVyc19mcmFtZSgKKyAgICAgICAgICAgIFsoJzpzdGF0dXMnLCAnMjAwJyldLAor
ICAgICAgICAgICAgZmxhZ3M9WydFTkRfU1RSRUFNJ10sCisgICAgICAgICAgICBzdHJlYW1faWQ9
MSwKKyAgICAgICAgKQorICAgICAgICBldmVudHMgPSBjLnJlY2VpdmVfZGF0YShoZWFkZXJzX2Zy
YW1lLnNlcmlhbGl6ZSgpKQorICAgICAgICBhc3NlcnQgbGVuKGV2ZW50cykgPT0gMgorICAgICAg
ICByZXNwb25zZV9yZWNlaXZlZCwgc3RyZWFtX2VuZGVkID0gZXZlbnRzCisgICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKHJlc3BvbnNlX3JlY2VpdmVkLCBoMi5ldmVudHMuUmVzcG9uc2VSZWNlaXZl
ZCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc3RyZWFtX2VuZGVkLCBoMi5ldmVudHMuU3Ry
ZWFtRW5kZWQpCisKKyAgICAgICAgcnN0X3N0cmVhbV9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVp
bGRfcnN0X3N0cmVhbV9mcmFtZShzdHJlYW1faWQ9MSkKKyAgICAgICAgZXZlbnRzID0gYy5yZWNl
aXZlX2RhdGEocnN0X3N0cmVhbV9mcmFtZS5zZXJpYWxpemUoKSkKKyAgICAgICAgYXNzZXJ0IG5v
dCBldmVudHMKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfd2luZG93X3VwZGF0ZV9vbl9jbG9zZWRf
c3RyZWFtKHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgorICAgICAgICAiIiIKKyAgICAgICAgV0lORE9X
X1VQREFURSBmcmFtZSBzaG91bGQgYmUgaWdub3JlZCBpZiBzdHJlYW0gaXMgaW4gYSBjbG9zZWQg
c3RhdGUuCisgICAgICAgIFNlZSBSRkMgNzU0MCBTZWN0aW9uIDUuMSAoY2xvc2VkIHN0YXRlKQor
ICAgICAgICAiIiIKKyAgICAgICAgYyA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKCkKKyAg
ICAgICAgYy5pbml0aWF0ZV9jb25uZWN0aW9uKCkKKworICAgICAgICAjIENsaWVudCBzZW5kcyBy
ZXF1ZXN0CisgICAgICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hl
YWRlcnMpCisKKyAgICAgICAgIyBTb21lIHRpbWUgcGFzc2VzIGFuZCBjbGllbnQgc2VuZHMgREFU
QSBmcmFtZSBhbmQgY2xvc2VzIHN0cmVhbSwKKyAgICAgICAgIyBzbyBpdCBpcyBpbiBhIGhhbGYt
Y2xvc2VkIHN0YXRlCisgICAgICAgIGMuc2VuZF9kYXRhKDEsIGInc29tZSBkYXRhJywgZW5kX3N0
cmVhbT1UcnVlKQorCisgICAgICAgICMgU2VydmVyIHJlY2VpdmVkIEhFQURFUlMgZnJhbWUgYnV0
IERBVEEgZnJhbWUgaXMgc3RpbGwgb24gdGhlIHdheS4KKyAgICAgICAgIyBTdHJlYW0gaXMgaW4g
b3BlbiBzdGF0ZSBvbiB0aGUgc2VydmVyLXNpZGUuIEluIHRoaXMgc3RhdGUgc2VydmVyIGlzCisg
ICAgICAgICMgYWxsb3dlZCB0byBlbmQgc3RyZWFtIGFuZCBhZnRlciB0aGF0IGFja25vd2xlZGdl
IHJlY2VpdmVkIGRhdGEgYnkKKyAgICAgICAgIyBzZW5kaW5nIFdJTkRPV19VUERBVEUgZnJhbWVz
LgorICAgICAgICBoZWFkZXJzX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF9oZWFkZXJzX2Zy
YW1lKAorICAgICAgICAgICAgWygnOnN0YXR1cycsICcyMDAnKV0sCisgICAgICAgICAgICBmbGFn
cz1bJ0VORF9TVFJFQU0nXSwKKyAgICAgICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICApCisg
ICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9kYXRhKGhlYWRlcnNfZnJhbWUuc2VyaWFsaXplKCkp
CisgICAgICAgIGFzc2VydCBsZW4oZXZlbnRzKSA9PSAyCisgICAgICAgIHJlc3BvbnNlX3JlY2Vp
dmVkLCBzdHJlYW1fZW5kZWQgPSBldmVudHMKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVz
cG9uc2VfcmVjZWl2ZWQsIGgyLmV2ZW50cy5SZXNwb25zZVJlY2VpdmVkKQorICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShzdHJlYW1fZW5kZWQsIGgyLmV2ZW50cy5TdHJlYW1FbmRlZCkKKworICAg
ICAgICB3aW5kb3dfdXBkYXRlX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF93aW5kb3dfdXBk
YXRlX2ZyYW1lKAorICAgICAgICAgICAgc3RyZWFtX2lkPTEsCisgICAgICAgICAgICBpbmNyZW1l
bnQ9MSwKKyAgICAgICAgKQorICAgICAgICBldmVudHMgPSBjLnJlY2VpdmVfZGF0YSh3aW5kb3df
dXBkYXRlX2ZyYW1lLnNlcmlhbGl6ZSgpKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworCiAK
IGNsYXNzIFRlc3RTdHJlYW1zQ2xvc2VkQnlFbmRTdHJlYW0ob2JqZWN0KToKICAgICBleGFtcGxl
X3JlcXVlc3RfaGVhZGVycyA9IFsKQEAgLTEyNCw3ICsxOTUsNiBAQCBjbGFzcyBUZXN0U3RyZWFt
c0Nsb3NlZEJ5RW5kU3RyZWFtKG9iamVjdCk6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KAogICAgICAgICAiZnJhbWUiLAogICAgICAgICBbCi0gICAgICAgICAgICBsYW1iZGEgc2VsZiwg
ZmY6IGZmLmJ1aWxkX2RhdGFfZnJhbWUoYidoZWxsbycpLAogICAgICAgICAgICAgbGFtYmRhIHNl
bGYsIGZmOiBmZi5idWlsZF9oZWFkZXJzX2ZyYW1lKAogICAgICAgICAgICAgICAgIHNlbGYuZXhh
bXBsZV9yZXF1ZXN0X2hlYWRlcnMsIGZsYWdzPVsnRU5EX1NUUkVBTSddKSwKICAgICAgICAgICAg
IGxhbWJkYSBzZWxmLCBmZjogZmYuYnVpbGRfaGVhZGVyc19mcmFtZSgKQEAgLTE3NCw3ICsyNDQs
NiBAQCBjbGFzcyBUZXN0U3RyZWFtc0Nsb3NlZEJ5RW5kU3RyZWFtKG9iamVjdCk6CiAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAgICAgICAiZnJhbWUiLAogICAgICAgICBbCi0gICAg
ICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX2RhdGFfZnJhbWUoYidoZWxsbycpLAog
ICAgICAgICAgICAgbGFtYmRhIHNlbGYsIGZmOiBmZi5idWlsZF9oZWFkZXJzX2ZyYW1lKAogICAg
ICAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9yZXNwb25zZV9oZWFkZXJzLCBmbGFncz1bJ0VORF9T
VFJFQU0nXSksCiAgICAgICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX2hlYWRlcnNf
ZnJhbWUoCkBAIC0yNzMsOCArMzQyLDYgQEAgY2xhc3MgVGVzdFN0cmVhbXNDbG9zZWRCeVJzdFN0
cmVhbShvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRl
cnMpLAogICAgICAgICAgICAgbGFtYmRhIHNlbGYsIGZmOiBmZi5idWlsZF9oZWFkZXJzX2ZyYW1l
KAogICAgICAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMsIGZsYWdzPVsn
RU5EX1NUUkVBTSddKSwKLSAgICAgICAgICAgIGxhbWJkYSBzZWxmLCBmZjogZmYuYnVpbGRfZGF0
YV9mcmFtZShiJ2hlbGxvJyksCi0gICAgICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxk
X3dpbmRvd191cGRhdGVfZnJhbWUoMSwgMSksCiAgICAgICAgIF0KICAgICApCiAgICAgZGVmIHRl
c3RfcmVzZXRzX2Z1cnRoZXJfZnJhbWVzX2FmdGVyX3JlY3ZfcmVzZXQoc2VsZiwKQEAgLTI4Miw3
ICszNDksOCBAQCBjbGFzcyBUZXN0U3RyZWFtc0Nsb3NlZEJ5UnN0U3RyZWFtKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUp
OgogICAgICAgICAiIiIKICAgICAgICAgQSBzdHJlYW0gdGhhdCBpcyBjbG9zZWQgYnkgcmVjZWl2
ZSBSU1RfU1RSRUFNIGNhbiByZWNlaXZlIGZ1cnRoZXIKLSAgICAgICAgZnJhbWVzOiBpdCBzaW1w
bHkgc2VuZHMgUlNUX1NUUkVBTSBmb3IgaXQuCisgICAgICAgIGZyYW1lczogaXQgc2ltcGx5IHNl
bmRzIFJTVF9TVFJFQU0gZm9yIGl0LCBhbmQgYWRkaXRpb25hbGx5CisgICAgICAgIFdJTkRPV19V
UERBVEUgZm9yIERBVEEgZnJhbWVzLgogICAgICAgICAiIiIKICAgICAgICAgYyA9IGgyLmNvbm5l
Y3Rpb24uSDJDb25uZWN0aW9uKGNvbmZpZz1zZWxmLnNlcnZlcl9jb25maWcpCiAgICAgICAgIGMu
cmVjZWl2ZV9kYXRhKGZyYW1lX2ZhY3RvcnkucHJlYW1ibGUoKSkKQEAgLTMyNiw2ICszOTQsNTkg
QEAgY2xhc3MgVGVzdFN0cmVhbXNDbG9zZWRCeVJzdFN0cmVhbShvYmplY3QpOgogICAgICAgICBh
c3NlcnQgbm90IGV2ZW50cwogICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSByc3Rf
ZnJhbWUuc2VyaWFsaXplKCkgKiAzCiAKKyAgICBkZWYgdGVzdF9yZXNldHNfZnVydGhlcl9kYXRh
X2ZyYW1lc19hZnRlcl9yZWN2X3Jlc2V0KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9mYWN0b3J5KToKKyAgICAgICAg
IiIiCisgICAgICAgIEEgc3RyZWFtIHRoYXQgaXMgY2xvc2VkIGJ5IHJlY2VpdmUgUlNUX1NUUkVB
TSBjYW4gcmVjZWl2ZSBmdXJ0aGVyCisgICAgICAgIERBVEEgZnJhbWVzOiBpdCBzaW1wbHkgc2Vu
ZHMgV0lORE9XX1VQREFURSBmb3IgdGhlIGNvbm5lY3Rpb24gZmxvdworICAgICAgICB3aW5kb3cs
IGFuZCBSU1RfU1RSRUFNIGZvciB0aGUgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgYyA9
IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKGNvbmZpZz1zZWxmLnNlcnZlcl9jb25maWcpCisg
ICAgICAgIGMucmVjZWl2ZV9kYXRhKGZyYW1lX2ZhY3RvcnkucHJlYW1ibGUoKSkKKyAgICAgICAg
Yy5pbml0aWF0ZV9jb25uZWN0aW9uKCkKKworICAgICAgICBoZWFkZXJfZnJhbWUgPSBmcmFtZV9m
YWN0b3J5LmJ1aWxkX2hlYWRlcnNfZnJhbWUoCisgICAgICAgICAgICBzZWxmLmV4YW1wbGVfcmVx
dWVzdF9oZWFkZXJzLCBmbGFncz1bJ0VORF9TVFJFQU0nXQorICAgICAgICApCisgICAgICAgIGMu
cmVjZWl2ZV9kYXRhKGhlYWRlcl9mcmFtZS5zZXJpYWxpemUoKSkKKworICAgICAgICBjLnNlbmRf
aGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgaGVhZGVycz1z
ZWxmLmV4YW1wbGVfcmVzcG9uc2VfaGVhZGVycywKKyAgICAgICAgICAgIGVuZF9zdHJlYW09RmFs
c2UKKyAgICAgICAgKQorCisgICAgICAgIHJzdF9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRf
cnN0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgIDEsIGgyLmVycm9ycy5FcnJvckNvZGVzLlNU
UkVBTV9DTE9TRUQKKyAgICAgICAgKQorICAgICAgICBjLnJlY2VpdmVfZGF0YShyc3RfZnJhbWUu
c2VyaWFsaXplKCkpCisgICAgICAgIGMuY2xlYXJfb3V0Ym91bmRfZGF0YV9idWZmZXIoKQorCisg
ICAgICAgIGYgPSBmcmFtZV9mYWN0b3J5LmJ1aWxkX2RhdGFfZnJhbWUoCisgICAgICAgICAgICBk
YXRhPWInc29tZSBkYXRhJworICAgICAgICApCisKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZl
X2RhdGEoZi5zZXJpYWxpemUoKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKworICAgICAg
ICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJy
b3JDb2Rlcy5TVFJFQU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpCisgICAgICAgIGFz
c2VydCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkCisKKyAgICAgICAgZXZlbnRzID0gYy5y
ZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSAqIDMpCisgICAgICAgIGFzc2VydCBub3QgZXZlbnRz
CisgICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkICogMworCisgICAg
ICAgICMgSXRlcmF0ZSBvdmVyIHRoZSBzdHJlYW1zIHRvIG1ha2Ugc3VyZSBpdCdzIGdvbmUsIHRo
ZW4gY29uZmlybSB0aGUKKyAgICAgICAgIyBiZWhhdmlvdXIgaXMgdW5jaGFuZ2VkLgorICAgICAg
ICBjLm9wZW5fb3V0Ym91bmRfc3RyZWFtcworCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9k
YXRhKGYuc2VyaWFsaXplKCkgKiAzKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAg
ICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZCAqIDMKKwogICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgKICAgICAgICAgImZyYW1lIiwKICAgICAgICAgWwpAQCAtMzMzLDgg
KzQ1NCw2IEBAIGNsYXNzIFRlc3RTdHJlYW1zQ2xvc2VkQnlSc3RTdHJlYW0ob2JqZWN0KToKICAg
ICAgICAgICAgICAgICBzZWxmLmV4YW1wbGVfcmVxdWVzdF9oZWFkZXJzKSwKICAgICAgICAgICAg
IGxhbWJkYSBzZWxmLCBmZjogZmYuYnVpbGRfaGVhZGVyc19mcmFtZSgKICAgICAgICAgICAgICAg
ICBzZWxmLmV4YW1wbGVfcmVxdWVzdF9oZWFkZXJzLCBmbGFncz1bJ0VORF9TVFJFQU0nXSksCi0g
ICAgICAgICAgICBsYW1iZGEgc2VsZiwgZmY6IGZmLmJ1aWxkX2RhdGFfZnJhbWUoYidoZWxsbycp
LAotICAgICAgICAgICAgbGFtYmRhIHNlbGYsIGZmOiBmZi5idWlsZF93aW5kb3dfdXBkYXRlX2Zy
YW1lKDEsIDEpLAogICAgICAgICBdCiAgICAgKQogICAgIGRlZiB0ZXN0X3Jlc2V0c19mdXJ0aGVy
X2ZyYW1lc19hZnRlcl9zZW5kX3Jlc2V0KHNlbGYsCkBAIC0zODYsMyArNTA1LDUxIEBAIGNsYXNz
IFRlc3RTdHJlYW1zQ2xvc2VkQnlSc3RTdHJlYW0ob2JqZWN0KToKICAgICAgICAgZXZlbnRzID0g
Yy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSAqIDMpCiAgICAgICAgIGFzc2VydCBub3QgZXZl
bnRzCiAgICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IHJzdF9mcmFtZS5zZXJpYWxp
emUoKSAqIDMKKworICAgIGRlZiB0ZXN0X3Jlc2V0c19mdXJ0aGVyX2RhdGFfZnJhbWVzX2FmdGVy
X3NlbmRfcmVzZXQoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYW1lX2ZhY3RvcnkpOgorICAgICAgICAiIiIKKyAgICAgICAg
QSBzdHJlYW0gdGhhdCBpcyBjbG9zZWQgYnkgc2VudCBSU1RfU1RSRUFNIGNhbiByZWNlaXZlIGZ1
cnRoZXIKKyAgICAgICAgZGF0YSBmcmFtZXM6IGl0IHNpbXBseSBzZW5kcyBXSU5ET1dfVVBEQVRF
IGFuZCBSU1RfU1RSRUFNIGZvciBpdC4KKyAgICAgICAgIiIiCisgICAgICAgIGMgPSBoMi5jb25u
ZWN0aW9uLkgyQ29ubmVjdGlvbihjb25maWc9c2VsZi5zZXJ2ZXJfY29uZmlnKQorICAgICAgICBj
LnJlY2VpdmVfZGF0YShmcmFtZV9mYWN0b3J5LnByZWFtYmxlKCkpCisgICAgICAgIGMuaW5pdGlh
dGVfY29ubmVjdGlvbigpCisKKyAgICAgICAgaGVhZGVyX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5i
dWlsZF9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgc2VsZi5leGFtcGxlX3JlcXVlc3RfaGVh
ZGVycywgZmxhZ3M9WydFTkRfU1RSRUFNJ10KKyAgICAgICAgKQorICAgICAgICBjLnJlY2VpdmVf
ZGF0YShoZWFkZXJfZnJhbWUuc2VyaWFsaXplKCkpCisKKyAgICAgICAgYy5zZW5kX2hlYWRlcnMo
CisgICAgICAgICAgICBzdHJlYW1faWQ9MSwKKyAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5leGFt
cGxlX3Jlc3BvbnNlX2hlYWRlcnMsCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlCisgICAg
ICAgICkKKworICAgICAgICBjLnJlc2V0X3N0cmVhbSgxLCBoMi5lcnJvcnMuRXJyb3JDb2Rlcy5J
TlRFUk5BTF9FUlJPUikKKworICAgICAgICBjLmNsZWFyX291dGJvdW5kX2RhdGFfYnVmZmVyKCkK
KworICAgICAgICBmID0gZnJhbWVfZmFjdG9yeS5idWlsZF9kYXRhX2ZyYW1lKAorICAgICAgICAg
ICAgZGF0YT1iJ3NvbWUgZGF0YScKKyAgICAgICAgKQorICAgICAgICBldmVudHMgPSBjLnJlY2Vp
dmVfZGF0YShmLnNlcmlhbGl6ZSgpKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAg
ICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJy
b3JDb2Rlcy5TVFJFQU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpCisgICAgICAgIGFz
c2VydCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkCisKKyAgICAgICAgZXZlbnRzID0gYy5y
ZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSAqIDMpCisgICAgICAgIGFzc2VydCBub3QgZXZlbnRz
CisgICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkICogMworCisgICAg
ICAgICMgSXRlcmF0ZSBvdmVyIHRoZSBzdHJlYW1zIHRvIG1ha2Ugc3VyZSBpdCdzIGdvbmUsIHRo
ZW4gY29uZmlybSB0aGUKKyAgICAgICAgIyBiZWhhdmlvdXIgaXMgdW5jaGFuZ2VkLgorICAgICAg
ICBjLm9wZW5fb3V0Ym91bmRfc3RyZWFtcworCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9k
YXRhKGYuc2VyaWFsaXplKCkgKiAzKQorICAgICAgICBhc3NlcnQgbm90IGV2ZW50cworICAgICAg
ICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZCAqIDMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvdGVzdC90ZXN0X2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V2ZW50cy5weQpp
bmRleCAwNmY3ZGEzOWM3YmUuLmE2ZThkODM3OTA2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0
L3Rlc3RfZXZlbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V2ZW50cy5weQpAQCAtMjEz
LDE0ICsyMTMsMjMgQEAgY2xhc3MgVGVzdEV2ZW50UmVwcnMob2JqZWN0KToKICAgICAgICAgICAg
ICJuZXdfdmFsdWU9MzI3NjgpfT4iCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3BpbmdhY2tu
b3dsZWRnZWRfcmVwcihzZWxmKToKKyAgICBkZWYgdGVzdF9waW5ncmVjZWl2ZWRfcmVwcihzZWxm
KToKICAgICAgICAgIiIiCi0gICAgICAgIFBpbmdBY2tub3dsZWRnZWQgaGFzIGEgdXNlZnVsIGRl
YnVnIHJlcHJlc2VudGF0aW9uLgorICAgICAgICBQaW5nUmVjZWl2ZWQgaGFzIGEgdXNlZnVsIGRl
YnVnIHJlcHJlc2VudGF0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAgZSA9IGgyLmV2ZW50cy5Q
aW5nQWNrbm93bGVkZ2VkKCkKKyAgICAgICAgZSA9IGgyLmV2ZW50cy5QaW5nUmVjZWl2ZWQoKQog
ICAgICAgICBlLnBpbmdfZGF0YSA9IGInYWJjZGVmZ2gnCiAKLSAgICAgICAgYXNzZXJ0IHJlcHIo
ZSkgPT0gIjxQaW5nQWNrbm93bGVkZ2VkIHBpbmdfZGF0YTo2MTYyNjM2NDY1NjY2NzY4PiIKKyAg
ICAgICAgYXNzZXJ0IHJlcHIoZSkgPT0gIjxQaW5nUmVjZWl2ZWQgcGluZ19kYXRhOjYxNjI2MzY0
NjU2NjY3Njg+IgorCisgICAgZGVmIHRlc3RfcGluZ2Fja3JlY2VpdmVkX3JlcHIoc2VsZik6Cisg
ICAgICAgICIiIgorICAgICAgICBQaW5nQWNrUmVjZWl2ZWQgaGFzIGEgdXNlZnVsIGRlYnVnIHJl
cHJlc2VudGF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgZSA9IGgyLmV2ZW50cy5QaW5nQWNr
UmVjZWl2ZWQoKQorICAgICAgICBlLnBpbmdfZGF0YSA9IGInYWJjZGVmZ2gnCisKKyAgICAgICAg
YXNzZXJ0IHJlcHIoZSkgPT0gIjxQaW5nQWNrUmVjZWl2ZWQgcGluZ19kYXRhOjYxNjI2MzY0NjU2
NjY3Njg+IgogCiAgICAgZGVmIHRlc3Rfc3RyZWFtZW5kZWRfcmVwcihzZWxmKToKICAgICAgICAg
IiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9mbG93X2NvbnRyb2xfd2luZG93LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfZmxvd19jb250cm9sX3dpbmRvdy5weQppbmRleCAzODBjZDYx
ZTNiMTkuLjI0YjM0NWFhYzNhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfZmxvd19j
b250cm9sX3dpbmRvdy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9mbG93X2NvbnRyb2xfd2lu
ZG93LnB5CkBAIC02MzgsNiArNjM4LDQyIEBAIGNsYXNzIFRlc3RGbG93Q29udHJvbChvYmplY3Qp
OgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoaDIuZXhjZXB0aW9ucy5GbG93Q29udHJvbEVy
cm9yKToKICAgICAgICAgICAgIGMuaW5jcmVtZW50X2Zsb3dfY29udHJvbF93aW5kb3coaW5jcmVt
ZW50PWluY3JlbWVudCwgc3RyZWFtX2lkPTEpCiAKKyAgICBkZWYgdGVzdF9zZW5kX3VwZGF0ZV9v
bl9jbG9zZWRfc3RyZWFtcyhzZWxmLCBmcmFtZV9mYWN0b3J5KToKKyAgICAgICAgYyA9IGgyLmNv
bm5lY3Rpb24uSDJDb25uZWN0aW9uKCkKKyAgICAgICAgYy5pbml0aWF0ZV9jb25uZWN0aW9uKCkK
KyAgICAgICAgYy5zZW5kX2hlYWRlcnMoMSwgc2VsZi5leGFtcGxlX3JlcXVlc3RfaGVhZGVycykK
KyAgICAgICAgYy5yZXNldF9zdHJlYW0oMSkKKworICAgICAgICBjLmNsZWFyX291dGJvdW5kX2Rh
dGFfYnVmZmVyKCkKKyAgICAgICAgYy5vcGVuX291dGJvdW5kX3N0cmVhbXMKKyAgICAgICAgYy5v
cGVuX2luYm91bmRfc3RyZWFtcworCisgICAgICAgIGYgPSBmcmFtZV9mYWN0b3J5LmJ1aWxkX2Rh
dGFfZnJhbWUoYidzb21lIGRhdGEnKjE1MDApCisgICAgICAgIGV2ZW50cyA9IGMucmVjZWl2ZV9k
YXRhKGYuc2VyaWFsaXplKCkqMykKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKworICAgICAg
ICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJy
b3JDb2Rlcy5TVFJFQU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpICogMiArIGZyYW1l
X2ZhY3RvcnkuYnVpbGRfd2luZG93X3VwZGF0ZV9mcmFtZSgKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD0wLAorICAgICAgICAgICAgaW5jcmVtZW50PTQwNTAwLAorICAgICAgICApLnNlcmlhbGl6ZSgp
ICsgZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgc3Ry
ZWFtX2lkPTEsCisgICAgICAgICAgICBlcnJvcl9jb2RlPWgyLmVycm9ycy5FcnJvckNvZGVzLlNU
UkVBTV9DTE9TRUQsCisgICAgICAgICkuc2VyaWFsaXplKCkKKyAgICAgICAgYXNzZXJ0IGMuZGF0
YV90b19zZW5kKCkgPT0gZXhwZWN0ZWQKKworICAgICAgICBmID0gZnJhbWVfZmFjdG9yeS5idWls
ZF9kYXRhX2ZyYW1lKGInJykKKyAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoZi5zZXJp
YWxpemUoKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBldmVudHMKKworICAgICAgICBleHBlY3RlZCA9
IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgIHN0cmVh
bV9pZD0xLAorICAgICAgICAgICAgZXJyb3JfY29kZT1oMi5lcnJvcnMuRXJyb3JDb2Rlcy5TVFJF
QU1fQ0xPU0VELAorICAgICAgICApLnNlcmlhbGl6ZSgpCisgICAgICAgIGFzc2VydCBjLmRhdGFf
dG9fc2VuZCgpID09IGV4cGVjdGVkCisKIAogY2xhc3MgVGVzdEF1dG9tYXRpY0Zsb3dDb250cm9s
KG9iamVjdCk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oMl91cGdy
YWRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaDJfdXBncmFkZS5weQppbmRleCAxZDRlYWM2N2Y2
NDcuLmQ2M2Q0NGYzZjc4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaDJfdXBncmFk
ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oMl91cGdyYWRlLnB5CkBAIC0yNjAsMTEgKzI2
MCwxMSBAQCBjbGFzcyBUZXN0U2VydmVyVXBncmFkZShvYmplY3QpOgogICAgICAgICApCiAgICAg
ICAgIGMucmVjZWl2ZV9kYXRhKGYuc2VyaWFsaXplKCkpCiAKLSAgICAgICAgZXhwZWN0ZWRfZnJh
bWUgPSBmcmFtZV9mYWN0b3J5LmJ1aWxkX3JzdF9zdHJlYW1fZnJhbWUoCisgICAgICAgIGV4cGVj
dGVkID0gZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAogICAgICAgICAgICAg
c3RyZWFtX2lkPTEsCiAgICAgICAgICAgICBlcnJvcl9jb2RlPWgyLmVycm9ycy5FcnJvckNvZGVz
LlNUUkVBTV9DTE9TRUQsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGMuZGF0YV90b19zZW5k
KCkgPT0gZXhwZWN0ZWRfZnJhbWUuc2VyaWFsaXplKCkKKyAgICAgICAgKS5zZXJpYWxpemUoKQor
ICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3RlZAogCiAgICAgZGVmIHRl
c3RfY2xpZW50X3NldHRpbmdzX2FyZV9hcHBsaWVkKHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgogICAg
ICAgICAiIiIKQEAgLTI3OCw3ICsyNzgsNyBAQCBjbGFzcyBUZXN0U2VydmVyVXBncmFkZShvYmpl
Y3QpOgogICAgICAgICAjIHN0YXJ0IG9mIHRoZSBjb25uZWN0aW9uLCBkbyBub3QgYWdyZWUgb24g
dGhlaXIgaW5pdGlhbCBzZXR0aW5ncwogICAgICAgICAjIHN0YXRlLgogICAgICAgICBhc3NlcnQg
KAotICAgICAgICAgICAgY2xpZW50LmxvY2FsX3NldHRpbmdzLl9zZXR0aW5ncyAhPSBzZXJ2ZXIu
cmVtb3RlX3NldHRpbmdzLl9zZXR0aW5ncworICAgICAgICAgICAgY2xpZW50LmxvY2FsX3NldHRp
bmdzICE9IHNlcnZlci5yZW1vdGVfc2V0dGluZ3MKICAgICAgICAgKQogCiAgICAgICAgICMgR2V0
IHRoZSBjbGllbnQgaGVhZGVyIGRhdGEgYW5kIHBhc3MgaXQgdG8gdGhlIHNlcnZlci4KQEAgLTI5
NywxMCArMjk3LDYgQEAgY2xhc3MgVGVzdFNlcnZlclVwZ3JhZGUob2JqZWN0KToKICAgICAgICAg
KQogICAgICAgICBhc3NlcnQgc2VydmVyLmRhdGFfdG9fc2VuZCgpID09IGV4cGVjdGVkX2ZyYW1l
LnNlcmlhbGl6ZSgpCiAKLSAgICAgICAgIyBXZSB2aW9sYXRlIGFic3RyYWN0aW9uIGxheWVycyBo
ZXJlLCBidXQgSSBkb24ndCB0aGluayBkZWZpbmluZyBfX2VxX18KLSAgICAgICAgIyBmb3IgdGhp
cyBpcyB3b3J0aCBpdC4gSW4gdGhpcyBjYXNlLCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBz
aG91bGQKLSAgICAgICAgIyBhZ3JlZSB0aGF0IHRoZXNlIHNldHRpbmdzIGhhdmUgYmVlbiBBQ0sn
ZCwgc28gdGhlaXIgdW5kZXJseWluZwotICAgICAgICAjIGRpY3Rpb25hcmllcyBzaG91bGQgYmUg
aWRlbnRpY2FsLgogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgY2xpZW50LmxvY2FsX3Nl
dHRpbmdzLl9zZXR0aW5ncyA9PSBzZXJ2ZXIucmVtb3RlX3NldHRpbmdzLl9zZXR0aW5ncworICAg
ICAgICAgICAgY2xpZW50LmxvY2FsX3NldHRpbmdzID09IHNlcnZlci5yZW1vdGVfc2V0dGluZ3MK
ICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5CmluZGV4IDMxM2JmMTJhN2MzMS4u
ZWY3MzAwNzI1NGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oZWFkX3JlcXVlc3Qu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5CkBAIC04LDQ5ICs4LDQ4
IEBAIGltcG9ydCBweXRlc3QKIAogCiBjbGFzcyBUZXN0SGVhZFJlcXVlc3Qob2JqZWN0KToKLQot
ICAgICAgICBleGFtcGxlX3JlcXVlc3RfaGVhZGVycyA9IFsKLSAgICAgICAgICAgIChiJzphdXRo
b3JpdHknLCBiJ2V4YW1wbGUuY29tJyksCi0gICAgICAgICAgICAoYic6cGF0aCcsIGInLycpLAot
ICAgICAgICAgICAgKGInOnNjaGVtZScsIGInaHR0cHMnKSwKLSAgICAgICAgICAgIChiJzptZXRo
b2QnLCBiJ0hFQUQnKSwKLSAgICAgICAgXQotCi0gICAgICAgIGV4YW1wbGVfcmVzcG9uc2VfaGVh
ZGVycyA9IFsKLSAgICAgICAgICAgIChiJzpzdGF0dXMnLCBiJzIwMCcpLAotICAgICAgICAgICAg
KGInc2VydmVyJywgYidmYWtlLXNlcnYvMC4xLjAnKSwKLSAgICAgICAgICAgIChiJ2NvbnRlbnRf
bGVuZ3RoJywgYicxJyksCi0gICAgICAgIF0KLQotICAgICAgICBkZWYgdGVzdF9ub25femVyb19j
b250ZW50X2FuZF9ub19ib2R5KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgotCi0gICAgICAgICAgICBj
ID0gaDIuY29ubmVjdGlvbi5IMkNvbm5lY3Rpb24oKQotICAgICAgICAgICAgYy5pbml0aWF0ZV9j
b25uZWN0aW9uKCkKLSAgICAgICAgICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9y
ZXF1ZXN0X2hlYWRlcnMsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAgICAgICAgICAgZiA9IGZyYW1l
X2ZhY3RvcnkuYnVpbGRfaGVhZGVyc19mcmFtZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4YW1w
bGVfcmVzcG9uc2VfaGVhZGVycywKLSAgICAgICAgICAgICAgICBmbGFncz1bJ0VORF9TVFJFQU0n
XQotICAgICAgICAgICAgKQotICAgICAgICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoZi5z
ZXJpYWxpemUoKSkKLQotICAgICAgICAgICAgYXNzZXJ0IGxlbihldmVudHMpID09IDIKLSAgICAg
ICAgICAgIGV2ZW50ID0gZXZlbnRzWzBdCi0KLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNl
KGV2ZW50LCBoMi5ldmVudHMuUmVzcG9uc2VSZWNlaXZlZCkKLSAgICAgICAgICAgIGFzc2VydCBl
dmVudC5zdHJlYW1faWQgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGV2ZW50LmhlYWRlcnMgPT0g
c2VsZi5leGFtcGxlX3Jlc3BvbnNlX2hlYWRlcnMKLQotICAgICAgICBkZWYgdGVzdF9yZWplY3Rf
bm9uX3plcm9fY29udGVudF9hbmRfYm9keShzZWxmLCBmcmFtZV9mYWN0b3J5KToKLSAgICAgICAg
ICAgIGMgPSBoMi5jb25uZWN0aW9uLkgyQ29ubmVjdGlvbigpCi0gICAgICAgICAgICBjLmluaXRp
YXRlX2Nvbm5lY3Rpb24oKQotICAgICAgICAgICAgYy5zZW5kX2hlYWRlcnMoMSwgc2VsZi5leGFt
cGxlX3JlcXVlc3RfaGVhZGVycykKLQotICAgICAgICAgICAgaGVhZGVycyA9IGZyYW1lX2ZhY3Rv
cnkuYnVpbGRfaGVhZGVyc19mcmFtZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4YW1wbGVfcmVz
cG9uc2VfaGVhZGVycwotICAgICAgICAgICAgKQotICAgICAgICAgICAgZGF0YSA9IGZyYW1lX2Zh
Y3RvcnkuYnVpbGRfZGF0YV9mcmFtZShkYXRhPWInXHgwMScpCi0KLSAgICAgICAgICAgIGMucmVj
ZWl2ZV9kYXRhKGhlYWRlcnMuc2VyaWFsaXplKCkpCi0gICAgICAgICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoaDIuZXhjZXB0aW9ucy5JbnZhbGlkQm9keUxlbmd0aEVycm9yKToKLSAgICAgICAgICAg
ICAgICBjLnJlY2VpdmVfZGF0YShkYXRhLnNlcmlhbGl6ZSgpKQorICAgIGV4YW1wbGVfcmVxdWVz
dF9oZWFkZXJzID0gWworICAgICAgICAoYic6YXV0aG9yaXR5JywgYidleGFtcGxlLmNvbScpLAor
ICAgICAgICAoYic6cGF0aCcsIGInLycpLAorICAgICAgICAoYic6c2NoZW1lJywgYidodHRwcycp
LAorICAgICAgICAoYic6bWV0aG9kJywgYidIRUFEJyksCisgICAgXQorCisgICAgZXhhbXBsZV9y
ZXNwb25zZV9oZWFkZXJzID0gWworICAgICAgICAoYic6c3RhdHVzJywgYicyMDAnKSwKKyAgICAg
ICAgKGInc2VydmVyJywgYidmYWtlLXNlcnYvMC4xLjAnKSwKKyAgICAgICAgKGInY29udGVudF9s
ZW5ndGgnLCBiJzEnKSwKKyAgICBdCisKKyAgICBkZWYgdGVzdF9ub25femVyb19jb250ZW50X2Fu
ZF9ub19ib2R5KHNlbGYsIGZyYW1lX2ZhY3RvcnkpOgorCisgICAgICAgIGMgPSBoMi5jb25uZWN0
aW9uLkgyQ29ubmVjdGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigpCisgICAg
ICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMsIGVuZF9z
dHJlYW09VHJ1ZSkKKworICAgICAgICBmID0gZnJhbWVfZmFjdG9yeS5idWlsZF9oZWFkZXJzX2Zy
YW1lKAorICAgICAgICAgICAgc2VsZi5leGFtcGxlX3Jlc3BvbnNlX2hlYWRlcnMsCisgICAgICAg
ICAgICBmbGFncz1bJ0VORF9TVFJFQU0nXQorICAgICAgICApCisgICAgICAgIGV2ZW50cyA9IGMu
cmVjZWl2ZV9kYXRhKGYuc2VyaWFsaXplKCkpCisKKyAgICAgICAgYXNzZXJ0IGxlbihldmVudHMp
ID09IDIKKyAgICAgICAgZXZlbnQgPSBldmVudHNbMF0KKworICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShldmVudCwgaDIuZXZlbnRzLlJlc3BvbnNlUmVjZWl2ZWQpCisgICAgICAgIGFzc2VydCBl
dmVudC5zdHJlYW1faWQgPT0gMQorICAgICAgICBhc3NlcnQgZXZlbnQuaGVhZGVycyA9PSBzZWxm
LmV4YW1wbGVfcmVzcG9uc2VfaGVhZGVycworCisgICAgZGVmIHRlc3RfcmVqZWN0X25vbl96ZXJv
X2NvbnRlbnRfYW5kX2JvZHkoc2VsZiwgZnJhbWVfZmFjdG9yeSk6CisgICAgICAgIGMgPSBoMi5j
b25uZWN0aW9uLkgyQ29ubmVjdGlvbigpCisgICAgICAgIGMuaW5pdGlhdGVfY29ubmVjdGlvbigp
CisgICAgICAgIGMuc2VuZF9oZWFkZXJzKDEsIHNlbGYuZXhhbXBsZV9yZXF1ZXN0X2hlYWRlcnMp
CisKKyAgICAgICAgaGVhZGVycyA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfaGVhZGVyc19mcmFtZSgK
KyAgICAgICAgICAgIHNlbGYuZXhhbXBsZV9yZXNwb25zZV9oZWFkZXJzCisgICAgICAgICkKKyAg
ICAgICAgZGF0YSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFtZShkYXRhPWInXHgwMScp
CisKKyAgICAgICAgYy5yZWNlaXZlX2RhdGEoaGVhZGVycy5zZXJpYWxpemUoKSkKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKGgyLmV4Y2VwdGlvbnMuSW52YWxpZEJvZHlMZW5ndGhFcnJvcik6
CisgICAgICAgICAgICBjLnJlY2VpdmVfZGF0YShkYXRhLnNlcmlhbGl6ZSgpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9mcmFtZV9zZXF1ZW5jZXMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L3Rlc3QvdGVzdF9pbnZhbGlkX2ZyYW1lX3NlcXVlbmNlcy5weQppbmRleCAxZjJmNmM3N2FhZTku
LjEyYjcwYzRhNmJjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9mcmFt
ZV9zZXF1ZW5jZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9mcmFtZV9zZXF1
ZW5jZXMucHkKQEAgLTE0OSwxNCArMTQ5LDE2IEBAIGNsYXNzIFRlc3RJbnZhbGlkRnJhbWVTZXF1
ZW5jZXMob2JqZWN0KToKICAgICAgICAgYy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSkKICAg
ICAgICAgYy5jbGVhcl9vdXRib3VuZF9kYXRhX2J1ZmZlcigpCiAKLSAgICAgICAgYmFkX2ZyYW1l
ID0gZnJhbWVfZmFjdG9yeS5idWlsZF9kYXRhX2ZyYW1lKGRhdGE9YidoZWxsbycpCisgICAgICAg
IGJhZF9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFtZSgKKyAgICAgICAgICAg
IGRhdGE9Yidzb21lIGRhdGEnCisgICAgICAgICkKICAgICAgICAgYy5yZWNlaXZlX2RhdGEoYmFk
X2ZyYW1lLnNlcmlhbGl6ZSgpKQogCi0gICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gZnJhbWVfZmFj
dG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAorICAgICAgICBleHBlY3RlZCA9IGZyYW1lX2Zh
Y3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKICAgICAgICAgICAgIHN0cmVhbV9pZD0xLAot
ICAgICAgICAgICAgZXJyb3JfY29kZT0weDUsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGMu
ZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0ZWRfZnJhbWUuc2VyaWFsaXplKCkKKyAgICAgICAgICAg
IGVycm9yX2NvZGU9aDIuZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRCwKKyAgICAgICAg
KS5zZXJpYWxpemUoKQorICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBlY3Rl
ZAogCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9jb250aW51YXRpb25fb25fY2xvc2VkX3N0cmVh
bShzZWxmLCBmcmFtZV9mYWN0b3J5KToKICAgICAgICAgIiIiCkBAIC0yOTMsMTUgKzI5NSwxNSBA
QCBjbGFzcyBUZXN0SW52YWxpZEZyYW1lU2VxdWVuY2VzKG9iamVjdCk6CiAgICAgICAgIGMuY2xl
YXJfb3V0Ym91bmRfZGF0YV9idWZmZXIoKQogCiAgICAgICAgIGJhZF9mcmFtZSA9IGZyYW1lX2Zh
Y3RvcnkuYnVpbGRfZGF0YV9mcmFtZSgKLSAgICAgICAgICAgIGRhdGE9YidoZWxsbycKKyAgICAg
ICAgICAgIGRhdGE9Yidzb21lIGRhdGEnCiAgICAgICAgICkKICAgICAgICAgZXZlbnRzID0gYy5y
ZWNlaXZlX2RhdGEoYmFkX2ZyYW1lLnNlcmlhbGl6ZSgpKQogCi0gICAgICAgIGV4cGVjdGVkX2Zy
YW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2ZyYW1lKAorICAgICAgICBleHBl
Y3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9mcmFtZSgKICAgICAgICAgICAg
IHN0cmVhbV9pZD0xLAotICAgICAgICAgICAgZXJyb3JfY29kZT0weDUsCi0gICAgICAgICkKLSAg
ICAgICAgYXNzZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0ZWRfZnJhbWUuc2VyaWFsaXpl
KCkKKyAgICAgICAgICAgIGVycm9yX2NvZGU9aDIuZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NM
T1NFRCwKKyAgICAgICAgKS5zZXJpYWxpemUoKQorICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3Nl
bmQoKSA9PSBleHBlY3RlZAogCiAgICAgICAgIGFzc2VydCBsZW4oZXZlbnRzKSA9PSAxCiAgICAg
ICAgIGV2ZW50ID0gZXZlbnRzWzBdCkBAIC0zMjcsMTYgKzMyOSwxNiBAQCBjbGFzcyBUZXN0SW52
YWxpZEZyYW1lU2VxdWVuY2VzKG9iamVjdCk6CiAgICAgICAgIGMuY2xlYXJfb3V0Ym91bmRfZGF0
YV9idWZmZXIoKQogCiAgICAgICAgIGJhZF9mcmFtZSA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0
YV9mcmFtZSgKLSAgICAgICAgICAgIGRhdGE9YidoZWxsbycKKyAgICAgICAgICAgIGRhdGE9Yidz
b21lIGRhdGEnCiAgICAgICAgICkKICAgICAgICAgIyBSZWNlaXZlIDUgZnJhbWVzLgogICAgICAg
ICBldmVudHMgPSBjLnJlY2VpdmVfZGF0YShiYWRfZnJhbWUuc2VyaWFsaXplKCkgKiA1KQogCi0g
ICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gZnJhbWVfZmFjdG9yeS5idWlsZF9yc3Rfc3RyZWFtX2Zy
YW1lKAorICAgICAgICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0X3N0cmVhbV9m
cmFtZSgKICAgICAgICAgICAgIHN0cmVhbV9pZD0xLAotICAgICAgICAgICAgZXJyb3JfY29kZT0w
eDUsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0
ZWRfZnJhbWUuc2VyaWFsaXplKCkgKiA1CisgICAgICAgICAgICBlcnJvcl9jb2RlPWgyLmVycm9y
cy5FcnJvckNvZGVzLlNUUkVBTV9DTE9TRUQsCisgICAgICAgICkuc2VyaWFsaXplKCkKKyAgICAg
ICAgYXNzZXJ0IGMuZGF0YV90b19zZW5kKCkgPT0gZXhwZWN0ZWQgKiA1CiAKICAgICAgICAgYXNz
ZXJ0IGxlbihldmVudHMpID09IDEKICAgICAgICAgZXZlbnQgPSBldmVudHNbMF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdGVzdC90ZXN0X2ludmFsaWRfaGVhZGVycy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90
ZXN0X2ludmFsaWRfaGVhZGVycy5weQppbmRleCAxYTMxNWVlMjZhY2YuLmEzNzk5NTA3MzNkOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9oZWFkZXJzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvdGVzdC90ZXN0X2ludmFsaWRfaGVhZGVycy5weQpAQCAtNTQsNiArNTQsNyBAQCBjbGFz
cyBUZXN0SW52YWxpZEZyYW1lU2VxdWVuY2VzKG9iamVjdCk6CiAgICAgICAgIGJhc2VfcmVxdWVz
dF9oZWFkZXJzICsgWygnbmFtZScsICd2YWx1ZSB3aXRoIHRyYWlsaW5nIHNwYWNlICcpXSwKICAg
ICAgICAgW2hlYWRlciBmb3IgaGVhZGVyIGluIGJhc2VfcmVxdWVzdF9oZWFkZXJzCiAgICAgICAg
ICBpZiBoZWFkZXJbMF0gIT0gJzphdXRob3JpdHknXSwKKyAgICAgICAgWygnOnByb3RvY29sJywg
J3dlYnNvY2tldCcpXSArIGJhc2VfcmVxdWVzdF9oZWFkZXJzLAogICAgIF0KICAgICBzZXJ2ZXJf
Y29uZmlnID0gaDIuY29uZmlnLkgyQ29uZmlndXJhdGlvbigKICAgICAgICAgY2xpZW50X3NpZGU9
RmFsc2UsIGhlYWRlcl9lbmNvZGluZz0ndXRmLTgnCkBAIC0yMDMsNyArMjA0LDcgQEAgY2xhc3Mg
VGVzdEludmFsaWRGcmFtZVNlcXVlbmNlcyhvYmplY3QpOgogICAgICAgICAjIFJhaXNlIGV4Y2Vw
dGlvbiBpZiBwc2V1ZG8gaGVhZGVyIGluIHRyYWlsZXIKICAgICAgICAgd2l0aCBweXRlc3QucmFp
c2VzKGgyLmV4Y2VwdGlvbnMuUHJvdG9jb2xFcnJvcikgYXMgZToKICAgICAgICAgICAgIGMucmVj
ZWl2ZV9kYXRhKHRyYWlsZXIpCi0gICAgICAgIGFzc2VydCAicHNldWRvLWhlYWRlciBpbiB0cmFp
bGVyIiBpbiBzdHIoZSkKKyAgICAgICAgYXNzZXJ0ICJwc2V1ZG8taGVhZGVyIGluIHRyYWlsZXIi
IGluIHN0cihlLnZhbHVlKQogCiAgICAgICAgICMgVGVzdCBhcHByb3ByaWF0ZSByZXNwb25zZSBm
cmFtZSBpcyBnZW5lcmF0ZWQKICAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBmcmFtZV9mYWN0b3J5
LmJ1aWxkX2dvYXdheV9mcmFtZSgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3NldHRp
bmdzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rfc2V0dGluZ3MucHkKaW5kZXggMjE2M2JiOWI4ZDQ0
Li5kMTlmOTNhN2MyZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3NldHRpbmdzLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3NldHRpbmdzLnB5CkBAIC0xMiw3ICsxMiw5IEBAIGlt
cG9ydCBoMi5leGNlcHRpb25zCiBpbXBvcnQgaDIuc2V0dGluZ3MKIAogZnJvbSBoeXBvdGhlc2lz
IGltcG9ydCBnaXZlbiwgYXNzdW1lCi1mcm9tIGh5cG90aGVzaXMuc3RyYXRlZ2llcyBpbXBvcnQg
aW50ZWdlcnMKK2Zyb20gaHlwb3RoZXNpcy5zdHJhdGVnaWVzIGltcG9ydCAoCisgICAgaW50ZWdl
cnMsIGJvb2xlYW5zLCBmaXhlZF9kaWN0aW9uYXJpZXMsIGJ1aWxkcworKQogCiAKIGNsYXNzIFRl
c3RTZXR0aW5ncyhvYmplY3QpOgpAQCAtMjksNiArMzEsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJM
RV9QVVNIXSA9PSAxCiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5J
TklUSUFMX1dJTkRPV19TSVpFXSA9PSA2NTUzNQogICAgICAgICBhc3NlcnQgc1toMi5zZXR0aW5n
cy5TZXR0aW5nQ29kZXMuTUFYX0ZSQU1FX1NJWkVdID09IDE2Mzg0CisgICAgICAgIGFzc2VydCBz
W2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTF0gPT0gMAog
CiAgICAgZGVmIHRlc3Rfc2V0dGluZ3NfZGVmYXVsdHNfc2VydmVyKHNlbGYpOgogICAgICAgICAi
IiIKQEAgLTQwLDYgKzQzLDcgQEAgY2xhc3MgVGVzdFNldHRpbmdzKG9iamVjdCk6CiAgICAgICAg
IGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfUFVTSF0gPT0gMAogICAg
ICAgICBhc3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuSU5JVElBTF9XSU5ET1dfU0la
RV0gPT0gNjU1MzUKICAgICAgICAgYXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1B
WF9GUkFNRV9TSVpFXSA9PSAxNjM4NAorICAgICAgICBhc3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0
aW5nQ29kZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xdID09IDAKIAogICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgnY2xpZW50JywgW1RydWUsIEZhbHNlXSkKICAgICBkZWYgdGVzdF9jYW5f
c2V0X2luaXRpYWxfdmFsdWVzKHNlbGYsIGNsaWVudCk6CkBAIC01Miw2ICs1Niw3IEBAIGNsYXNz
IFRlc3RTZXR0aW5ncyhvYmplY3QpOgogICAgICAgICAgICAgaDIuc2V0dGluZ3MuU2V0dGluZ0Nv
ZGVzLk1BWF9GUkFNRV9TSVpFOiAxNjM4OCwKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRp
bmdDb2Rlcy5NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOiAxMDAsCiAgICAgICAgICAgICBoMi5zZXR0
aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkU6IDIqKjE2LAorICAgICAgICAg
ICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MOiAxLAog
ICAgICAgICB9CiAgICAgICAgIHMgPSBoMi5zZXR0aW5ncy5TZXR0aW5ncyhjbGllbnQ9Y2xpZW50
LCBpbml0aWFsX3ZhbHVlcz1vdmVycmlkZXMpCiAKQEAgLTYxLDYgKzY2LDcgQEAgY2xhc3MgVGVz
dFNldHRpbmdzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdD
b2Rlcy5NQVhfRlJBTUVfU0laRV0gPT0gMTYzODgKICAgICAgICAgYXNzZXJ0IHNbaDIuc2V0dGlu
Z3MuU2V0dGluZ0NvZGVzLk1BWF9DT05DVVJSRU5UX1NUUkVBTVNdID09IDEwMAogICAgICAgICBh
c3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0hFQURFUl9MSVNUX1NJWkVdID09
IDIqKjE2CisgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVf
Q09OTkVDVF9QUk9UT0NPTF0gPT0gMQogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAog
ICAgICAgICAnc2V0dGluZyx2YWx1ZScsCkBAIC03Miw2ICs3OCw3IEBAIGNsYXNzIFRlc3RTZXR0
aW5ncyhvYmplY3QpOgogICAgICAgICAgICAgKGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5NQVhf
RlJBTUVfU0laRSwgMSksCiAgICAgICAgICAgICAoaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1B
WF9GUkFNRV9TSVpFLCAyKiozMCksCiAgICAgICAgICAgICAoaDIuc2V0dGluZ3MuU2V0dGluZ0Nv
ZGVzLk1BWF9IRUFERVJfTElTVF9TSVpFLCAtMSksCisgICAgICAgICAgICAoaDIuc2V0dGluZ3Mu
U2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MLCAtMSksCiAgICAgICAgIF0KICAg
ICApCiAgICAgZGVmIHRlc3RfY2Fubm90X3NldF9pbnZhbGlkX2luaXRpYWxfdmFsdWVzKHNlbGYs
IHNldHRpbmcsIHZhbHVlKToKQEAgLTEwNiw2ICsxMTMsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mo
b2JqZWN0KToKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfUFVT
SDogMCwKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5JTklUSUFMX1dJTkRP
V19TSVpFOiA2MCwKICAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5NQVhfRlJB
TUVfU0laRTogMTYzODUsCisgICAgICAgICAgICBoMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuRU5B
QkxFX0NPTk5FQ1RfUFJPVE9DT0w6IDEsCiAgICAgICAgIH0KICAgICAgICAgcy51cGRhdGUobmV3
X3NldHRpbmdzKQogCkBAIC0xNjksMTYgKzE3NywxNiBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mob2Jq
ZWN0KToKICAgICAgICAgTGVuZ3RoIGlzIHJlbGF0ZWQgb25seSB0byB0aGUgbnVtYmVyIG9mIGtl
eXMuCiAgICAgICAgICIiIgogICAgICAgICBzID0gaDIuc2V0dGluZ3MuU2V0dGluZ3MoY2xpZW50
PVRydWUpCi0gICAgICAgIGFzc2VydCBsZW4ocykgPT0gNAorICAgICAgICBhc3NlcnQgbGVuKHMp
ID09IDUKIAogICAgICAgICBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5IRUFERVJfVEFCTEVf
U0laRV0gPT0gODAwMAotICAgICAgICBhc3NlcnQgbGVuKHMpID09IDQKKyAgICAgICAgYXNzZXJ0
IGxlbihzKSA9PSA1CiAKICAgICAgICAgcy5hY2tub3dsZWRnZSgpCi0gICAgICAgIGFzc2VydCBs
ZW4ocykgPT0gNAorICAgICAgICBhc3NlcnQgbGVuKHMpID09IDUKIAogICAgICAgICBkZWwgc1to
Mi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuSEVBREVSX1RBQkxFX1NJWkVdCi0gICAgICAgIGFzc2Vy
dCBsZW4ocykgPT0gMworICAgICAgICBhc3NlcnQgbGVuKHMpID09IDQKIAogICAgIGRlZiB0ZXN0
X25ld192YWx1ZXNfd29yayhzZWxmKToKICAgICAgICAgIiIiCkBAIC0yMzIsNiArMjQwLDkgQEAg
Y2xhc3MgVGVzdFNldHRpbmdzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBzLm1heF9mcmFtZV9z
aXplID09IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9GUkFNRV9TSVpFXQogICAgICAg
ICBhc3NlcnQgcy5tYXhfY29uY3VycmVudF9zdHJlYW1zID09IDIqKjMyICsgMSAgIyBBIHNlbnNp
YmxlIGRlZmF1bHQuCiAgICAgICAgIGFzc2VydCBzLm1heF9oZWFkZXJfbGlzdF9zaXplIGlzIE5v
bmUKKyAgICAgICAgYXNzZXJ0IHMuZW5hYmxlX2Nvbm5lY3RfcHJvdG9jb2wgPT0gc1sKKyAgICAg
ICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTAor
ICAgICAgICBdCiAKICAgICBkZWYgdGVzdF9zZXR0aW5nc19zZXR0ZXJzKHNlbGYpOgogICAgICAg
ICAiIiIKQEAgLTI0NSw2ICsyNTYsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3Mob2JqZWN0KToKICAg
ICAgICAgcy5tYXhfZnJhbWVfc2l6ZSA9IDE2Mzg1CiAgICAgICAgIHMubWF4X2NvbmN1cnJlbnRf
c3RyZWFtcyA9IDQKICAgICAgICAgcy5tYXhfaGVhZGVyX2xpc3Rfc2l6ZSA9IDIqKjE2CisgICAg
ICAgIHMuZW5hYmxlX2Nvbm5lY3RfcHJvdG9jb2wgPSAxCiAKICAgICAgICAgcy5hY2tub3dsZWRn
ZSgpCiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5IRUFERVJfVEFC
TEVfU0laRV0gPT0gMApAQCAtMjUzLDYgKzI2NSw3IEBAIGNsYXNzIFRlc3RTZXR0aW5ncyhvYmpl
Y3QpOgogICAgICAgICBhc3NlcnQgc1toMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0ZSQU1F
X1NJWkVdID09IDE2Mzg1CiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRpbmdzLlNldHRpbmdDb2Rl
cy5NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TXSA9PSA0CiAgICAgICAgIGFzc2VydCBzW2gyLnNldHRp
bmdzLlNldHRpbmdDb2Rlcy5NQVhfSEVBREVSX0xJU1RfU0laRV0gPT0gMioqMTYKKyAgICAgICAg
YXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09M
XSA9PSAxCiAKICAgICBAZ2l2ZW4oaW50ZWdlcnMoKSkKICAgICBkZWYgdGVzdF9jYW5ub3Rfc2V0
X2ludmFsaWRfdmFsdWVzX2Zvcl9lbmFibGVfcHVzaChzZWxmLCB2YWwpOgpAQCAtMzYxLDEzMSAr
Mzc0LDk3IEBAIGNsYXNzIFRlc3RTZXR0aW5ncyhvYmplY3QpOgogICAgICAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgICAgICBzW2gyLnNldHRpbmdzLlNl
dHRpbmdDb2Rlcy5NQVhfSEVBREVSX0xJU1RfU0laRV0KIAotCi1jbGFzcyBUZXN0U2V0dGluZ3NF
cXVhbGl0eShvYmplY3QpOgotICAgICIiIgotICAgIEEgY2xhc3MgZGVmaW5pbmcgdGVzdHMgZm9y
IHRoZSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiA9PSBhbmQgIT0gLgotICAgICIiIgotCi0g
ICAgZGVmIGFuX2luc3RhbmNlKHNlbGYpOgorICAgIEBnaXZlbihpbnRlZ2VycygpKQorICAgIGRl
ZiB0ZXN0X2Nhbm5vdF9zZXRfaW52YWxpZF92YWx1ZXNfZm9yX2VuYWJsZV9jb25uZWN0X3Byb3Rv
Y29sKHNlbGYsIHZhbCk6CiAgICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYW4gaW5zdGFuY2Ug
b2YgdGhlIGNsYXNzIHVuZGVyIHRlc3QuICBFYWNoIGNhbGwgdG8gdGhpcyBtZXRob2QKLSAgICAg
ICAgbXVzdCByZXR1cm4gYSBkaWZmZXJlbnQgb2JqZWN0LiAgQWxsIG9iamVjdHMgcmV0dXJuZWQg
bXVzdCBiZSBlcXVhbCB0bwotICAgICAgICBlYWNoIG90aGVyLgorICAgICAgICBTRVRUSU5HU19F
TkFCTEVfQ09OTkVDVF9QUk9UT0NPTCBvbmx5IGFsbG93cyB0d28gdmFsdWVzOiAwLCAxLgogICAg
ICAgICAiIiIKLSAgICAgICAgb3ZlcnJpZGVzID0gewotICAgICAgICAgICAgaDIuc2V0dGluZ3Mu
U2V0dGluZ0NvZGVzLkhFQURFUl9UQUJMRV9TSVpFOiAwLAotICAgICAgICAgICAgaDIuc2V0dGlu
Z3MuU2V0dGluZ0NvZGVzLk1BWF9GUkFNRV9TSVpFOiAxNjM4NCwKLSAgICAgICAgICAgIGgyLnNl
dHRpbmdzLlNldHRpbmdDb2Rlcy5NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOiA0LAotICAgICAgICAg
ICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9IRUFERVJfTElTVF9TSVpFOiAyKioxNiwK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gaDIuc2V0dGluZ3MuU2V0dGluZ3MoY2xpZW50PVRy
dWUsIGluaXRpYWxfdmFsdWVzPW92ZXJyaWRlcykKKyAgICAgICAgYXNzdW1lKHZhbCBub3QgaW4g
KDAsIDEpKQorICAgICAgICBzID0gaDIuc2V0dGluZ3MuU2V0dGluZ3MoKQogCi0gICAgZGVmIGFu
b3RoZXJfaW5zdGFuY2Uoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYW4gaW5z
dGFuY2Ugb2YgdGhlIGNsYXNzIHVuZGVyIHRlc3QuICBFYWNoIGNhbGwgdG8gdGhpcyBtZXRob2QK
LSAgICAgICAgbXVzdCByZXR1cm4gYSBkaWZmZXJlbnQgb2JqZWN0LiAgVGhlIG9iamVjdHMgbXVz
dCBub3QgYmUgZXF1YWwgdG8gdGhlCi0gICAgICAgIG9iamVjdHMgcmV0dXJuZWQgYnkgYW5faW5z
dGFuY2UuICBUaGV5IG1heSBvciBtYXkgbm90IGJlIGVxdWFsIHRvCi0gICAgICAgIGVhY2ggb3Ro
ZXIgKHRoZXkgd2lsbCBub3QgYmUgY29tcGFyZWQgYWdhaW5zdCBlYWNoIG90aGVyKS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIG92ZXJyaWRlcyA9IHsKLSAgICAgICAgICAgIGgyLnNldHRpbmdzLlNl
dHRpbmdDb2Rlcy5IRUFERVJfVEFCTEVfU0laRTogODA4MCwKLSAgICAgICAgICAgIGgyLnNldHRp
bmdzLlNldHRpbmdDb2Rlcy5NQVhfRlJBTUVfU0laRTogMTYzODgsCi0gICAgICAgICAgICBoMi5z
ZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0NPTkNVUlJFTlRfU1RSRUFNUzogMTAwLAotICAgICAg
ICAgICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLk1BWF9IRUFERVJfTElTVF9TSVpFOiAyKiox
NiwKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaDIuc2V0dGluZ3MuU2V0dGluZ3MoY2xpZW50
PUZhbHNlLCBpbml0aWFsX3ZhbHVlcz1vdmVycmlkZXMpCisgICAgICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhoMi5leGNlcHRpb25zLkludmFsaWRTZXR0aW5nc1ZhbHVlRXJyb3IpIGFzIGU6CisgICAg
ICAgICAgICBzLmVuYWJsZV9jb25uZWN0X3Byb3RvY29sID0gdmFsCiAKLSAgICBkZWYgdGVzdF9p
ZGVudGljYWxfZXEoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBBbiBvYmplY3QgY29tcGFy
ZXMgZXF1YWwgdG8gaXRzZWxmIHVzaW5nIHRoZSA9PSBvcGVyYXRvci4KLSAgICAgICAgIiIiCi0g
ICAgICAgIG8gPSBzZWxmLmFuX2luc3RhbmNlKCkKLSAgICAgICAgYXNzZXJ0IChvID09IG8pCisg
ICAgICAgIHMuYWNrbm93bGVkZ2UoKQorICAgICAgICBhc3NlcnQgZS52YWx1ZS5lcnJvcl9jb2Rl
ID09IGgyLmVycm9ycy5FcnJvckNvZGVzLlBST1RPQ09MX0VSUk9SCisgICAgICAgIGFzc2VydCBz
LmVuYWJsZV9jb25uZWN0X3Byb3RvY29sID09IDAKIAotICAgIGRlZiB0ZXN0X2lkZW50aWNhbF9u
ZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIEFuIG9iamVjdCBkb2Vzbid0IGNvbXBhcmUg
bm90IGVxdWFsIHRvIGl0c2VsZiB1c2luZyB0aGUgIT0gb3BlcmF0b3IuCi0gICAgICAgICIiIgot
ICAgICAgICBvID0gc2VsZi5hbl9pbnN0YW5jZSgpCi0gICAgICAgIGFzc2VydCBub3QgKG8gIT0g
bykKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKGgyLmV4Y2VwdGlvbnMuSW52YWxpZFNldHRp
bmdzVmFsdWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgIHNbaDIuc2V0dGluZ3MuU2V0dGluZ0Nv
ZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09MXSA9IHZhbAogCi0gICAgZGVmIHRlc3Rfc2FtZV9l
cShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFR3byBvYmplY3RzIHRoYXQgYXJlIGVxdWFs
IHRvIGVhY2ggb3RoZXIgY29tcGFyZSBlcXVhbCB0byBlYWNoIG90aGVyCi0gICAgICAgIHVzaW5n
IHRoZSA9PSBvcGVyYXRvci4KLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBzZWxmLmFuX2luc3Rh
bmNlKCkKLSAgICAgICAgYiA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBhc3NlcnQgKGEg
PT0gYikKKyAgICAgICAgcy5hY2tub3dsZWRnZSgpCisgICAgICAgIGFzc2VydCBlLnZhbHVlLmVy
cm9yX2NvZGUgPT0gaDIuZXJyb3JzLkVycm9yQ29kZXMuUFJPVE9DT0xfRVJST1IKKyAgICAgICAg
YXNzZXJ0IHNbaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9DT05ORUNUX1BST1RPQ09M
XSA9PSAwCiAKLSAgICBkZWYgdGVzdF9zYW1lX25lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAg
ICAgVHdvIG9iamVjdHMgdGhhdCBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlciBkbyBub3QgY29tcGFy
ZSBub3QgZXF1YWwgdG8KLSAgICAgICAgZWFjaCBvdGhlciB1c2luZyB0aGUgIT0gb3BlcmF0b3Iu
Ci0gICAgICAgICIiIgotICAgICAgICBhID0gc2VsZi5hbl9pbnN0YW5jZSgpCi0gICAgICAgIGIg
PSBzZWxmLmFuX2luc3RhbmNlKCkKLSAgICAgICAgYXNzZXJ0IG5vdCAoYSAhPSBiKQogCi0gICAg
ZGVmIHRlc3RfZGlmZmVyZW50X2VxKHNlbGYpOgorY2xhc3MgVGVzdFNldHRpbmdzRXF1YWxpdHko
b2JqZWN0KToKKyAgICAiIiIKKyAgICBBIGNsYXNzIGRlZmluaW5nIHRlc3RzIGZvciB0aGUgc3Rh
bmRhcmQgaW1wbGVtZW50YXRpb24gb2YgPT0gYW5kICE9IC4KKyAgICAiIiIKKworICAgIFNldHRp
bmdzU3RyYXRlZ3kgPSBidWlsZHMoCisgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdzLAorICAg
ICAgICBjbGllbnQ9Ym9vbGVhbnMoKSwKKyAgICAgICAgaW5pdGlhbF92YWx1ZXM9Zml4ZWRfZGlj
dGlvbmFyaWVzKHsKKyAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5IRUFERVJf
VEFCTEVfU0laRToKKyAgICAgICAgICAgICAgICBpbnRlZ2VycygwLCAyKiozMiAtIDEpLAorICAg
ICAgICAgICAgaDIuc2V0dGluZ3MuU2V0dGluZ0NvZGVzLkVOQUJMRV9QVVNIOiBpbnRlZ2Vycygw
LCAxKSwKKyAgICAgICAgICAgIGgyLnNldHRpbmdzLlNldHRpbmdDb2Rlcy5JTklUSUFMX1dJTkRP
V19TSVpFOgorICAgICAgICAgICAgICAgIGludGVnZXJzKDAsIDIqKjMxIC0gMSksCisgICAgICAg
ICAgICBoMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuTUFYX0ZSQU1FX1NJWkU6CisgICAgICAgICAg
ICAgICAgaW50ZWdlcnMoMioqMTQsIDIqKjI0IC0gMSksCisgICAgICAgICAgICBoMi5zZXR0aW5n
cy5TZXR0aW5nQ29kZXMuTUFYX0NPTkNVUlJFTlRfU1RSRUFNUzoKKyAgICAgICAgICAgICAgICBp
bnRlZ2VycygwLCAyKiozMiAtIDEpLAorICAgICAgICAgICAgaDIuc2V0dGluZ3MuU2V0dGluZ0Nv
ZGVzLk1BWF9IRUFERVJfTElTVF9TSVpFOgorICAgICAgICAgICAgICAgIGludGVnZXJzKDAsIDIq
KjMyIC0gMSksCisgICAgICAgIH0pCisgICAgKQorCisgICAgQGdpdmVuKHNldHRpbmdzPVNldHRp
bmdzU3RyYXRlZ3kpCisgICAgZGVmIHRlc3RfZXF1YWxpdHlfcmVmbGV4aXZlKHNlbGYsIHNldHRp
bmdzKToKICAgICAgICAgIiIiCi0gICAgICAgIFR3byBvYmplY3RzIHRoYXQgYXJlIG5vdCBlcXVh
bCB0byBlYWNoIG90aGVyIGRvIG5vdCBjb21wYXJlIGVxdWFsIHRvCi0gICAgICAgIGVhY2ggb3Ro
ZXIgdXNpbmcgdGhlID09IG9wZXJhdG9yLgorICAgICAgICBBbiBvYmplY3QgY29tcGFyZXMgZXF1
YWwgdG8gaXRzZWxmIHVzaW5nIHRoZSA9PSBvcGVyYXRvciBhbmQgdGhlICE9CisgICAgICAgIG9w
ZXJhdG9yLgogICAgICAgICAiIiIKLSAgICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAg
ICAgICBiID0gc2VsZi5hbm90aGVyX2luc3RhbmNlKCkKLSAgICAgICAgYXNzZXJ0IG5vdCAoYSA9
PSBiKQorICAgICAgICBhc3NlcnQgKHNldHRpbmdzID09IHNldHRpbmdzKQorICAgICAgICBhc3Nl
cnQgbm90IChzZXR0aW5ncyAhPSBzZXR0aW5ncykKIAotICAgIGRlZiB0ZXN0X2RpZmZlcmVudF9u
ZShzZWxmKToKKyAgICBAZ2l2ZW4oc2V0dGluZ3M9U2V0dGluZ3NTdHJhdGVneSwgb19zZXR0aW5n
cz1TZXR0aW5nc1N0cmF0ZWd5KQorICAgIGRlZiB0ZXN0X2VxdWFsaXR5X211bHRpcGxlKHNlbGYs
IHNldHRpbmdzLCBvX3NldHRpbmdzKToKICAgICAgICAgIiIiCi0gICAgICAgIFR3byBvYmplY3Rz
IHRoYXQgYXJlIG5vdCBlcXVhbCB0byBlYWNoIG90aGVyIGNvbXBhcmUgbm90IGVxdWFsIHRvIGVh
Y2gKLSAgICAgICAgb3RoZXIgdXNpbmcgdGhlICE9IG9wZXJhdG9yLgorICAgICAgICBUd28gb2Jq
ZWN0cyBjb21wYXJlIHRoZW1zZWx2ZXMgdXNpbmcgdGhlID09IG9wZXJhdG9yIGFuZCB0aGUgIT0K
KyAgICAgICAgb3BlcmF0b3IuCiAgICAgICAgICIiIgotICAgICAgICBhID0gc2VsZi5hbl9pbnN0
YW5jZSgpCi0gICAgICAgIGIgPSBzZWxmLmFub3RoZXJfaW5zdGFuY2UoKQotICAgICAgICBhc3Nl
cnQgKGEgIT0gYikKKyAgICAgICAgaWYgc2V0dGluZ3MgPT0gb19zZXR0aW5nczoKKyAgICAgICAg
ICAgIGFzc2VydCBzZXR0aW5ncyA9PSBvX3NldHRpbmdzCisgICAgICAgICAgICBhc3NlcnQgbm90
IChzZXR0aW5ncyAhPSBvX3NldHRpbmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNz
ZXJ0IHNldHRpbmdzICE9IG9fc2V0dGluZ3MKKyAgICAgICAgICAgIGFzc2VydCBub3QgKHNldHRp
bmdzID09IG9fc2V0dGluZ3MpCiAKLSAgICBkZWYgdGVzdF9hbm90aGVyX3R5cGVfZXEoc2VsZik6
CisgICAgQGdpdmVuKHNldHRpbmdzPVNldHRpbmdzU3RyYXRlZ3kpCisgICAgZGVmIHRlc3RfYW5v
dGhlcl90eXBlX2VxdWFsaXR5KHNlbGYsIHNldHRpbmdzKToKICAgICAgICAgIiIiCiAgICAgICAg
IFRoZSBvYmplY3QgZG9lcyBub3QgY29tcGFyZSBlcXVhbCB0byBhbiBvYmplY3Qgb2YgYW4gdW5y
ZWxhdGVkIHR5cGUKICAgICAgICAgKHdoaWNoIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY29tcGFy
aXNvbikgdXNpbmcgdGhlID09IG9wZXJhdG9yLgogICAgICAgICAiIiIKLSAgICAgICAgYSA9IHNl
bGYuYW5faW5zdGFuY2UoKQotICAgICAgICBiID0gb2JqZWN0KCkKLSAgICAgICAgYXNzZXJ0IG5v
dCAoYSA9PSBiKQorICAgICAgICBvYmogPSBvYmplY3QoKQorICAgICAgICBhc3NlcnQgKHNldHRp
bmdzICE9IG9iaikKKyAgICAgICAgYXNzZXJ0IG5vdCAoc2V0dGluZ3MgPT0gb2JqKQogCi0gICAg
ZGVmIHRlc3RfYW5vdGhlcl90eXBlX25lKHNlbGYpOgorICAgIEBnaXZlbihzZXR0aW5ncz1TZXR0
aW5nc1N0cmF0ZWd5KQorICAgIGRlZiB0ZXN0X2RlbGVnYXRlZF9lcShzZWxmLCBzZXR0aW5ncyk6
CiAgICAgICAgICIiIgotICAgICAgICBUaGUgb2JqZWN0IGNvbXBhcmVzIG5vdCBlcXVhbCB0byBh
biBvYmplY3Qgb2YgYW4gdW5yZWxhdGVkIHR5cGUgKHdoaWNoCi0gICAgICAgIGRvZXMgbm90IGlt
cGxlbWVudCB0aGUgY29tcGFyaXNvbikgdXNpbmcgdGhlICE9IG9wZXJhdG9yLgotICAgICAgICAi
IiIKLSAgICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBiID0gb2JqZWN0KCkK
LSAgICAgICAgYXNzZXJ0IChhICE9IGIpCi0KLSAgICBkZWYgdGVzdF9kZWxlZ2F0ZWRfZXEoc2Vs
Zik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgcmVzdWx0IG9mIGNvbXBhcmlzb24gdXNpbmcg
PT0gaXMgZGVsZWdhdGVkIHRvIHRoZSByaWdodC1oYW5kCi0gICAgICAgIG9wZXJhbmQgaWYgaXQg
aXMgb2YgYW4gdW5yZWxhdGVkIHR5cGUuCisgICAgICAgIFRoZSByZXN1bHQgb2YgY29tcGFyaXNv
biBpcyBkZWxlZ2F0ZWQgdG8gdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpZgorICAgICAgICBpdCBp
cyBvZiBhbiB1bnJlbGF0ZWQgdHlwZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNsYXNzIERlbGVn
YXRlKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gW3NlbGZdCiAKLSAgICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2Uo
KQotICAgICAgICBiID0gRGVsZWdhdGUoKQotICAgICAgICBhc3NlcnQgKGEgPT0gYikgPT0gW2Jd
Ci0KLSAgICBkZWYgdGVzdF9kZWxlZ2F0ZV9uZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAg
IFRoZSByZXN1bHQgb2YgY29tcGFyaXNvbiB1c2luZyAhPSBpcyBkZWxlZ2F0ZWQgdG8gdGhlIHJp
Z2h0LWhhbmQKLSAgICAgICAgb3BlcmFuZCBpZiBpdCBpcyBvZiBhbiB1bnJlbGF0ZWQgdHlwZS4K
LSAgICAgICAgIiIiCi0gICAgICAgIGNsYXNzIERlbGVnYXRlKG9iamVjdCk6CiAgICAgICAgICAg
ICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGZd
CiAKLSAgICAgICAgYSA9IHNlbGYuYW5faW5zdGFuY2UoKQotICAgICAgICBiID0gRGVsZWdhdGUo
KQotICAgICAgICBhc3NlcnQgKGEgIT0gYikgPT0gW2JdCisgICAgICAgIGRlbGcgPSBEZWxlZ2F0
ZSgpCisgICAgICAgIGFzc2VydCAoc2V0dGluZ3MgPT0gZGVsZykgPT0gW2RlbGddCisgICAgICAg
IGFzc2VydCAoc2V0dGluZ3MgIT0gZGVsZykgPT0gW2RlbGddCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L3Rlc3QvdGVzdF9zdHJlYW1fcmVzZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zdHJlYW1fcmVz
ZXQucHkKaW5kZXggMDg4ODZlOGUzZWQyLi43Nzg0NDU1MTVmYTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvdGVzdC90ZXN0X3N0cmVhbV9yZXNldC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zdHJl
YW1fcmVzZXQucHkKQEAgLTcwLDggKzcwLDggQEAgY2xhc3MgVGVzdFN0cmVhbVJlc2V0KG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG90aGVyX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9mYWN0b3J5KToKICAgICAgICAgIiIiCi0gICAgICAgIEEgc3RyZWFtIHRo
YXQgaGFzIGJlZW4gcmVzZXQgc3RpbGwgYWZmZWN0cyB0aGUgY29ubmVjdGlvbiBmbG93IGNvbnRy
b2wKLSAgICAgICAgd2luZG93LgorICAgICAgICBBIHN0cmVhbSB0aGF0IGhhcyBiZWVuIHJlc2V0
IGRvZXMgbm90IGFmZmVjdCB0aGUgY29ubmVjdGlvbiBmbG93CisgICAgICAgIGNvbnRyb2wgd2lu
ZG93LgogICAgICAgICAiIiIKICAgICAgICAgYyA9IGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9u
KCkKICAgICAgICAgYy5pbml0aWF0ZV9jb25uZWN0aW9uKCkKQEAgLTg5LDE5ICs4OSwxOSBAQCBj
bGFzcyBUZXN0U3RyZWFtUmVzZXQob2JqZWN0KToKICAgICAgICAgYy5jbGVhcl9vdXRib3VuZF9k
YXRhX2J1ZmZlcigpCiAKICAgICAgICAgZiA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfZGF0YV9mcmFt
ZSgKLSAgICAgICAgICAgIGRhdGE9Yidzb21lIGRhdGEhJywKKyAgICAgICAgICAgIGRhdGE9Yidz
b21lIGRhdGEnLAogICAgICAgICAgICAgc3RyZWFtX2lkPWNsb3NlX2lkCiAgICAgICAgICkKLSAg
ICAgICAgZXZlbnRzID0gYy5yZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSkKKyAgICAgICAgYy5y
ZWNlaXZlX2RhdGEoZi5zZXJpYWxpemUoKSkKIAotICAgICAgICByc3RfZnJhbWUgPSBmcmFtZV9m
YWN0b3J5LmJ1aWxkX3JzdF9zdHJlYW1fZnJhbWUoCi0gICAgICAgICAgICBjbG9zZV9pZCwgaDIu
ZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRAotICAgICAgICApCi0gICAgICAgIGFzc2Vy
dCBub3QgZXZlbnRzCi0gICAgICAgIGFzc2VydCBjLmRhdGFfdG9fc2VuZCgpID09IHJzdF9mcmFt
ZS5zZXJpYWxpemUoKQorICAgICAgICBleHBlY3RlZCA9IGZyYW1lX2ZhY3RvcnkuYnVpbGRfcnN0
X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1jbG9zZV9pZCwKKyAgICAgICAg
ICAgIGVycm9yX2NvZGU9aDIuZXJyb3JzLkVycm9yQ29kZXMuU1RSRUFNX0NMT1NFRCwKKyAgICAg
ICAgKS5zZXJpYWxpemUoKQorICAgICAgICBhc3NlcnQgYy5kYXRhX3RvX3NlbmQoKSA9PSBleHBl
Y3RlZAogCiAgICAgICAgIG5ld193aW5kb3cgPSBjLnJlbW90ZV9mbG93X2NvbnRyb2xfd2luZG93
KHN0cmVhbV9pZD1vdGhlcl9pZCkKLSAgICAgICAgYXNzZXJ0IGluaXRpYWxfd2luZG93IC0gbGVu
KGInc29tZSBkYXRhIScpID09IG5ld193aW5kb3cKKyAgICAgICAgYXNzZXJ0IGluaXRpYWxfd2lu
ZG93IC0gbGVuKGInc29tZSBkYXRhJykgPT0gbmV3X3dpbmRvdwogCiAgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCdjbGVhcl9zdHJlYW1zJywgW1RydWUsIEZhbHNlXSkKICAgICBkZWYgdGVz
dF9yZXNldF9zdHJlYW1fYXV0b21hdGljYWxseV9yZXNldHNfcHVzaGVkX3N0cmVhbXMoc2VsZiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi90ZXN0L3Rlc3RfdXRpbGl0eV9mdW5jdGlvbnMucHkKaW5kZXggNjFkNTI3ZjY4OGJhLi40
Y2IwYjJhZTYwODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rp
b25zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5CkBAIC0x
Miw3ICsxMiw3IEBAIGltcG9ydCBoMi5jb25uZWN0aW9uCiBpbXBvcnQgaDIuZXJyb3JzCiBpbXBv
cnQgaDIuZXZlbnRzCiBpbXBvcnQgaDIuZXhjZXB0aW9ucwotZnJvbSBoMi51dGlsaXRpZXMgaW1w
b3J0IGV4dHJhY3RfbWV0aG9kX2hlYWRlcgorZnJvbSBoMi51dGlsaXRpZXMgaW1wb3J0IFNpemVM
aW1pdERpY3QsIGV4dHJhY3RfbWV0aG9kX2hlYWRlcgogCiAjIFRoZXNlIHRlc3RzIHJlcXVpcmUg
YSBub24tbGlzdC1yZXR1cm5pbmcgcmFuZ2UgZnVuY3Rpb24uCiB0cnk6CkBAIC0xNzYsMyArMTc2
LDUxIEBAIGNsYXNzIFRlc3RFeHRyYWN0SGVhZGVyKG9iamVjdCk6CiAgICAgKQogICAgIGRlZiB0
ZXN0X2V4dHJhY3RfaGVhZGVyX21ldGhvZChzZWxmLCBoZWFkZXJzKToKICAgICAgICAgYXNzZXJ0
IGV4dHJhY3RfbWV0aG9kX2hlYWRlcihoZWFkZXJzKSA9PSBiJ0dFVCcKKworCitkZWYgdGVzdF9z
aXplX2xpbWl0X2RpY3RfbGltaXQoKToKKyAgICBkY3QgPSBTaXplTGltaXREaWN0KHNpemVfbGlt
aXQ9MikKKworICAgIGRjdFsxXSA9IDEKKyAgICBkY3RbMl0gPSAyCisKKyAgICBhc3NlcnQgbGVu
KGRjdCkgPT0gMgorICAgIGFzc2VydCBkY3RbMV0gPT0gMQorICAgIGFzc2VydCBkY3RbMl0gPT0g
MgorCisgICAgZGN0WzNdID0gMworCisgICAgYXNzZXJ0IGxlbihkY3QpID09IDIKKyAgICBhc3Nl
cnQgZGN0WzJdID09IDIKKyAgICBhc3NlcnQgZGN0WzNdID09IDMKKyAgICBhc3NlcnQgMSBub3Qg
aW4gZGN0CisKKworZGVmIHRlc3Rfc2l6ZV9saW1pdF9kaWN0X2xpbWl0X2luaXQoKToKKyAgICBp
bml0aWFsX2RjdCA9IHsKKyAgICAgICAgMTogMSwKKyAgICAgICAgMjogMiwKKyAgICAgICAgMzog
MywKKyAgICB9CisKKyAgICBkY3QgPSBTaXplTGltaXREaWN0KGluaXRpYWxfZGN0LCBzaXplX2xp
bWl0PTIpCisKKyAgICBhc3NlcnQgbGVuKGRjdCkgPT0gMgorCisKK2RlZiB0ZXN0X3NpemVfbGlt
aXRfZGljdF9ub19saW1pdCgpOgorICAgIGRjdCA9IFNpemVMaW1pdERpY3Qoc2l6ZV9saW1pdD1O
b25lKQorCisgICAgZGN0WzFdID0gMQorICAgIGRjdFsyXSA9IDIKKworICAgIGFzc2VydCBsZW4o
ZGN0KSA9PSAyCisgICAgYXNzZXJ0IGRjdFsxXSA9PSAxCisgICAgYXNzZXJ0IGRjdFsyXSA9PSAy
CisKKyAgICBkY3RbM10gPSAzCisKKyAgICBhc3NlcnQgbGVuKGRjdCkgPT0gMworICAgIGFzc2Vy
dCBkY3RbMV0gPT0gMQorICAgIGFzc2VydCBkY3RbMl0gPT0gMgorICAgIGFzc2VydCBkY3RbM10g
PT0gMwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90
ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmVjZTVh
NjIyZmEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvY29uZnRl
c3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL3Rlc3QvY29yb3V0aW5lX3Rlc3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L2hl
bHBlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9iYXNpY19sb2dpYy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVz
dC90ZXN0X2Nsb3NlZF9zdHJlYW1zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY29tcGxleF9sb2dp
Yy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2NvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V2
ZW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3Qv
dGVzdF9mbG93X2NvbnRyb2xfd2luZG93LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaDJfdXBncmFk
ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2hlYWRfcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90
ZXN0X2hlYWRlcl9pbmRleGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2luZm9ybWF0aW9uYWxf
cmVzcG9uc2VzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW50ZXJhY3Rpbmdfc3RhY2tzLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi90ZXN0L3Rlc3RfaW52YWxpZF9jb250ZW50X2xlbmd0aHMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rl
c3QvdGVzdF9pbnZhbGlkX2ZyYW1lX3NlcXVlbmNlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2lu
dmFsaWRfaGVhZGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3ByaW9yaXR5LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi90ZXN0L3Rlc3RfcmVsYXRlZF9ldmVudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9yZmM3ODM4
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rfc2V0dGluZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9z
dGF0ZV9tYWNoaW5lcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3N0cmVhbV9yZXNldC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvdGVzdC90ZXN0X3V0aWxpdHlfZnVuY3Rpb25zLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L3Rlc3RfcmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdF9yZXF1aXJlbWVudHMudHh0Cmlu
ZGV4IDM1YmNiYzJmMDkxYS4uZTBlZWZhMjhhY2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3Rf
cmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3RfcmVxdWlyZW1lbnRzLnR4dApAQCAt
MSw1ICsxLDUgQEAKLXB5dGVzdD09My4wLjcKLXB5dGVzdC1jb3Y9PTIuNC4wCi1jb3ZlcmFnZT09
NC4zLjQKLXB5dGVzdC14ZGlzdD09MS4xNS4wCi1oeXBvdGhlc2lzPT0zLjcuMAorcHl0ZXN0PT00
LjYuNSAgIyBycS5maWx0ZXI6IDwgNQorcHl0ZXN0LWNvdj09Mi44LjEKK3B5dGVzdC14ZGlzdD09
MS4zMS4wCitjb3ZlcmFnZT09NC41LjQKK2h5cG90aGVzaXMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvdG94LmluaQppbmRleCBhM2Q2YzRhNzg1YjEuLjk3MWY5YTA3ZTkz
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi90b3guaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdG94LmluaQpAQCAt
MSwzNyArMSwyNCBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3LCBweTMzLCBweTM0LCBweTM1LCBw
eTM2LCBweXB5LCBsaW50LCBwYWNrYWdpbmcsIGRvY3MKK2Vudmxpc3QgPSBweTI3LCBweTM0LCBw
eTM1LCBweTM2LCBweTM3LCBweTM4LCBweXB5LCBsaW50LCBwYWNrYWdpbmcsIGRvY3MKIAogW3Rl
c3RlbnZdCiBkZXBzPSAtcnt0b3hpbmlkaXJ9L3Rlc3RfcmVxdWlyZW1lbnRzLnR4dAogY29tbWFu
ZHM9Ci0gICAgY292ZXJhZ2UgcnVuIC1tIHB5LnRlc3Qge3Bvc2FyZ3N9IHt0b3hpbmlkaXJ9L3Rl
c3QvCisgICAgY292ZXJhZ2UgcnVuIC1tIHB5LnRlc3Qge3Bvc2FyZ3N9CiAgICAgY292ZXJhZ2Ug
cmVwb3J0CiAKIFt0ZXN0ZW52OnB5cHldCiAjIHRlbXBvcmFyaWx5IGRpc2FibGUgY292ZXJhZ2Ug
dGVzdGluZyBvbiBQeVB5IGR1ZSB0byBwZXJmb3JtYW5jZSBwcm9ibGVtcwotY29tbWFuZHM9IHB5
LnRlc3Qge3Bvc2FyZ3N9IHt0b3hpbmlkaXJ9L3Rlc3QvCi0KLVt0ZXN0ZW52OnB5MjctdHdpc3Rl
ZE1hc3Rlcl0KLSMgVGhpcyBpcyBhIHZhbGlkYXRpb24gdGVzdCB0aGF0IGNvbmZpcm1zIHRoYXQg
VHdpc3RlZCdzIHRlc3QgY2FzZXMgaGF2ZW4ndAotIyBicm9rZW4uCi1kZXBzID0KLSAgICAjIFt0
bHMsaHR0cDJdIHN5bnRheCBkb2Vzbid0IHdvcmsgaGVyZSBzbyB3ZSBlbnVtZXJhdGUgYWxsIGRl
cGVuZGVuY2llcy4KLSAgICBnaXQraHR0cHM6Ly9naXRodWIuY29tL3R3aXN0ZWQvdHdpc3RlZAot
ICAgIHB5b3BlbnNzbAotICAgIHNlcnZpY2VfaWRlbnRpdHkKLSAgICBpZG5hCi0gICAgcHJpb3Jp
dHkKLSAgICBzcGhpbngKLWNvbW1hbmRzID0gcHl0aG9uIC1tIHR3aXN0ZWQudHJpYWwgLS1yZXBv
cnRlcj10ZXh0IHR3aXN0ZWQKK2NvbW1hbmRzPSBweS50ZXN0IHtwb3NhcmdzfQogCiBbdGVzdGVu
djpsaW50XQotYmFzZXB5dGhvbj1weXRob24zLjQKLWRlcHMgPSBmbGFrZTg9PTMuMy4wCitiYXNl
cHl0aG9uPXB5dGhvbjMuNworZGVwcyA9IGZsYWtlOD09My43LjgKIGNvbW1hbmRzID0gZmxha2U4
IC0tbWF4LWNvbXBsZXhpdHkgMTAgaDIgdGVzdAogCiBbdGVzdGVudjpkb2NzXQotYmFzZXB5dGhv
bj1weXRob24zLjUKLWRlcHMgPSBzcGhpbng9PTEuNC45CitiYXNlcHl0aG9uPXB5dGhvbjMuNwor
ZGVwcyA9IHNwaGlueD09Mi4yLjAKIGNoYW5nZWRpciA9IHt0b3hpbmlkaXJ9L2RvY3MKIHdoaXRl
bGlzdF9leHRlcm5hbHMgPSBybQogY29tbWFuZHMgPQpAQCAtNDAsMTUgKzI3LDIyIEBAIGNvbW1h
bmRzID0KIAogW3Rlc3RlbnY6Z3JhcGhzXQogYmFzZXB5dGhvbj1weXRob24yLjcKLWRlcHMgPSBn
cmFwaHZpej09MC42CitkZXBzID0gZ3JhcGh2aXo9PTAuMTMKIGNvbW1hbmRzID0KICAgICBweXRo
b24gdmlzdWFsaXplci92aXN1YWxpemUucHkgLWkgZG9jcy9zb3VyY2UvX3N0YXRpYwogCiBbdGVz
dGVudjpwYWNrYWdpbmddCi1iYXNlcHl0aG9uPXB5dGhvbjIuNworYmFzZXB5dGhvbj1weXRob24z
LjcKIGRlcHMgPQotICAgIGNoZWNrLW1hbmlmZXN0PT0wLjM1Ci0gICAgcmVhZG1lX3JlbmRlcmVy
PT0xNy4yCisgICAgY2hlY2stbWFuaWZlc3Q9PTAuMzkKKyAgICByZWFkbWUtcmVuZGVyZXI9PTI0
LjAKIGNvbW1hbmRzID0KICAgICBjaGVjay1tYW5pZmVzdAogICAgIHB5dGhvbiBzZXR1cC5weSBj
aGVjayAtLW1ldGFkYXRhIC0tcmVzdHJ1Y3R1cmVkdGV4dCAtLXN0cmljdAorCitbdGVzdGVudjpo
MnNwZWNdCitiYXNlcHl0aG9uPXB5dGhvbjMuNgorZGVwcyA9IHR3aXN0ZWRbdGxzXT09MTkuNy4w
Cit3aGl0ZWxpc3RfZXh0ZXJuYWxzID0ge3RveGluaWRpcn0vdGVzdC9oMnNwZWN0ZXN0LnNoCitj
b21tYW5kcyA9CisgICAge3RveGluaWRpcn0vdGVzdC9oMnNwZWN0ZXN0LnNoCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0LnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi91dGlscy9iYWNrcG9ydC5zaApp
bmRleCAzZjVkMDc2Nzk5NDcuLjI3M2MxNDc5YjI3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi91dGls
cy9iYWNrcG9ydC5zaAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0LnNoCkBAIC0xNiw2ICsx
Niw3IEBAIGZpCiBpZiAhIGdpdCBwdWxsIC0tZmYtb25seTsgdGhlbgogICAgIGVjaG8gIlVuYWJs
ZSB0byB1cGRhdGUgJFRBUkdFVF9CUkFOQ0giCiAgICAgZXhpdCAyCitmaQogCiBpZiAhIGdpdCBj
aGVja291dCAtYiAiJFBSX0JSQU5DSCI7IHRoZW4KICAgICBlY2hvICJGYWlsZWQgdG8gb3BlbiBu
ZXcgYnJhbmNoICRQUl9CUkFOQ0giCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi91dGlscy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjIzODNhN2E5OTFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi91dGls
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdXRpbHMvYmFja3BvcnQuc2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdmlzdWFsaXpl
ci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdmlzdWFsaXplci93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkM2ZmZjFiMzI5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi92aXN1YWxpemVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi92aXN1YWxpemVyL05PVElDRVMudmlzdWFsaXpl
cgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdmlzdWFsaXplci92aXN1YWxpemUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5ZGZkMmZjYWU0YTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9DT05UUklCVVRPUlMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9ISVNUT1JZLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTElD
RU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL01ha2VmaWxlCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9S
RUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVwLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi90ZXN0X3JlcXVpcmVtZW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3RveC5pbmkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHBhY2svaHBhY2suZWdnLWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNr
LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
MDdjNzRhYzJiNzcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrLmVnZy1pbmZv
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2suZWdn
LWluZm8vU09VUkNFUy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrLmVnZy1pbmZvL2RlcGVuZGVuY3lf
bGlua3MudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby90b3BfbGV2ZWwudHh0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFj
ay93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJjMGI0YmVk
NWQxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2sv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2NvbXBhdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBh
Y2svZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2svaHBhY2sucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNr
L2hwYWNrL2h1ZmZtYW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2h1ZmZtYW5fY29uc3RhbnRzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9ocGFjay9ocGFjay9odWZmbWFuX3RhYmxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay9z
dHJ1Y3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL3RhYmxlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hw
YWNrL3Rlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rlc3QvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ5MTYyNTA0OS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHBhY2svdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X2VuY29kZV9kZWNvZGUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2hwYWNrL3Rlc3QvdGVzdF9ocGFjay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0
X2hwYWNrX2ludGVncmF0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3RfaHVmZm1hbi5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHBhY2svdGVzdC90ZXN0X3N0cnVjdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X3Rh
YmxlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFj
ay93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y2NDQ5OTUw
NWFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svQ09OVFJJQlVUT1JT
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHBhY2svSElTVE9SWS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL0xJQ0VOU0UKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2hwYWNrL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9QS0ctSU5GTwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svUkVB
RE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHBhY2svc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9zZXR1cC5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uYXBwdmV5b3IueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uYXBw
dmV5b3IueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTg0ZTJi
N2ZhNWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uYXBwdmV5b3IueW1sCkBA
IC0wLDAgKzEsMzEgQEAKKyMgVG8gYWN0aXZhdGUsIGNoYW5nZSB0aGUgQXBwdmV5b3Igc2V0dGlu
Z3MgdG8gdXNlIGAuYXBwdmV5b3IueW1sYC4KK2Vudmlyb25tZW50OgorICBnbG9iYWw6CisgICAg
UEFUSDogIkM6XFxQeXRob24yN1xcU2NyaXB0c1xcOyVQQVRIJSIKKyAgICBQWVRFU1RfQ09NTUFO
RDogImNvdmVyYWdlIHJ1biAtbSBweXRlc3QiCisgIG1hdHJpeDoKKyAgICAtIFRPWEVOVjogcHky
Ny1iYXNlCisgICAgLSBUT1hFTlY6IHB5Mjctb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzMy1i
YXNlCisgICAgLSBUT1hFTlY6IHB5MzMtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNC1iYXNl
CisgICAgLSBUT1hFTlY6IHB5MzQtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNS1iYXNlCisg
ICAgLSBUT1hFTlY6IHB5MzUtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNi1iYXNlCisgICAg
LSBUT1hFTlY6IHB5MzYtb3B0aW9uYWwKKworaW5zdGFsbDoKKyAgLSBnaXQgc3VibW9kdWxlIHVw
ZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUKKyAgLSBweXRob24gLW0gcGlwIGluc3RhbGwgdG94IGNv
ZGVjb3YKKworYnVpbGQ6IG9mZgorCit0ZXN0X3NjcmlwdDoKKyAgLSB0b3gKKworYWZ0ZXJfdGVz
dDoKKyAgLSBweXRob24gZGVidWctaW5mby5weQorCitvbl9zdWNjZXNzOgorICAtIGNvZGVjb3YK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5j
b3ZlcmFnZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmZhY2Yz
NTIzOWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uY292ZXJhZ2VyYwpAQCAt
MCwwICsxLDggQEAKK1tydW5dCiticmFuY2ggPSBUcnVlCitzb3VyY2UgPSBodG1sNWxpYgorCitb
cGF0aHNdCitzb3VyY2UgPQorICAgaHRtbDVsaWIKKyAgIC50b3gvKi9saWIvcHl0aG9uKi9zaXRl
LXBhY2thZ2VzL2h0bWw1bGliCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRpZ25vcmUg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lY2Q2MmRmMzFiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
Ly5naXRpZ25vcmUKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTQgR2l0SHVi
LCBJbmMuCisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJn
ZSwgIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyMgdG8g
ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbgorIyB0aGUgcmlnaHRzIHRvICB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisjIGFuZC9vciBzZWxsIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorIyBTb2Z0
d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMg
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisj
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF
LgorCisjIEJ5dGUtY29tcGlsZWQgLyBvcHRpbWl6ZWQgLyBETEwgZmlsZXMKK19fcHljYWNoZV9f
LworKi5weVtjb2RdCisqJHB5LmNsYXNzCisKKyMgQyBleHRlbnNpb25zCisqLnNvCisKKyMgRGlz
dHJpYnV0aW9uIC8gcGFja2FnaW5nCisuUHl0aG9uCitlbnYvCitidWlsZC8KK2RldmVsb3AtZWdn
cy8KK2Rpc3QvCitkb3dubG9hZHMvCitlZ2dzLworLmVnZ3MvCitsaWIvCitsaWI2NC8KK3BhcnRz
Lworc2Rpc3QvCit2YXIvCisqLmVnZy1pbmZvLworLmluc3RhbGxlZC5jZmcKKyouZWdnCitNQU5J
RkVTVAorCisjIFB5SW5zdGFsbGVyCisjICBVc3VhbGx5IHRoZXNlIGZpbGVzIGFyZSB3cml0dGVu
IGJ5IGEgcHl0aG9uIHNjcmlwdCBmcm9tIGEgdGVtcGxhdGUKKyMgIGJlZm9yZSBQeUluc3RhbGxl
ciBidWlsZHMgdGhlIGV4ZSwgc28gYXMgdG8gaW5qZWN0IGRhdGUvb3RoZXIgaW5mb3MgaW50byBp
dC4KKyoubWFuaWZlc3QKKyouc3BlYworCisjIEluc3RhbGxlciBsb2dzCitwaXAtbG9nLnR4dAor
cGlwLWRlbGV0ZS10aGlzLWRpcmVjdG9yeS50eHQKKworIyBVbml0IHRlc3QgLyBjb3ZlcmFnZSBy
ZXBvcnRzCitodG1sY292LworLnRveC8KKy5jb3ZlcmFnZQorLmNvdmVyYWdlLioKKy5jYWNoZQor
bm9zZXRlc3RzLnhtbAorY292ZXJhZ2UueG1sCisqLGNvdmVyCisKKyMgVHJhbnNsYXRpb25zCisq
Lm1vCisqLnBvdAorCisjIERqYW5nbyBzdHVmZjoKKyoubG9nCisKKyMgU3BoaW54IGRvY3VtZW50
YXRpb24KK2RvYy9fYnVpbGQvCisKKyMgUHlCdWlsZGVyCit0YXJnZXQvCisKKyMgR2VuZXJhdGVk
IGJ5IHBhcnNlLnB5IC1wCitzdGF0cy5wcm9mCisKKyMgSURFCisuaWRlYQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi8uZ2l0bW9kdWxlcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLmdpdG1vZHVsZXMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYmNhNDcwMzI4ZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRtb2R1bGVzCkBAIC0wLDAgKzEsMyBAQAor
W3N1Ym1vZHVsZSAidGVzdGRhdGEiXQorCXBhdGggPSBodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YQor
CXVybCA9IGh0dHBzOi8vZ2l0aHViLmNvbS9odG1sNWxpYi9odG1sNWxpYi10ZXN0cy5naXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnByb3NwZWN0b3IueWFtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
LnByb3NwZWN0b3IueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjdlOGVmZTFhNjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnByb3NwZWN0
b3IueWFtbApAQCAtMCwwICsxLDIxIEBACitzdHJpY3RuZXNzOiB2ZXJ5aGlnaAorZG9jLXdhcm5p
bmdzOiBmYWxzZQordGVzdC13YXJuaW5nczogZmFsc2UKKworbWF4LWxpbmUtbGVuZ3RoOiAxMzkK
KworcmVxdWlyZW1lbnRzOgorICAtIHJlcXVpcmVtZW50cy50eHQKKyAgLSByZXF1aXJlbWVudHMt
dGVzdC50eHQKKyAgLSByZXF1aXJlbWVudHMtb3B0aW9uYWwudHh0CisKK2lnbm9yZS1wYXRoczoK
KyAgLSBwYXJzZS5weQorICAtIHV0aWxzLworCitweXRob24tdGFyZ2V0czoKKyAgLSAyCisgIC0g
MworCittY2NhYmU6CisgIHJ1bjogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnB5
bGludHJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi8ucHlsaW50cmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lYTc0ZDVkYjNmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliLy5weWxpbnRyYwpAQCAtMCwwICsxLDEwIEBACitbTUFTVEVSXQoraWdub3JlPXRlc3Rz
CisKK1tNRVNTQUdFUyBDT05UUk9MXQorIyBtZXNzYWdlcyB1cCB0byBmaXhtZSBzaG91bGQgcHJv
YmFibHkgYmUgZml4ZWQgc29tZWhvdworZGlzYWJsZSA9IHJlZGVmaW5lZC1idWlsdGluLGF0dHJp
YnV0ZS1kZWZpbmVkLW91dHNpZGUtaW5pdCxhbm9tYWxvdXMtYmFja3NsYXNoLWluLXN0cmluZyxu
by1zZWxmLXVzZSxyZWRlZmluZWQtb3V0ZXItbmFtZSxiYWQtY29udGludWF0aW9uLHdyb25nLWlt
cG9ydC1vcmRlcixzdXBlcmZsdW91cy1wYXJlbnMsbm8tbWVtYmVyLGR1cGxpY2F0ZS1jb2RlLHN1
cGVyLWluaXQtbm90LWNhbGxlZCxhYnN0cmFjdC1tZXRob2QscHJvcGVydHktb24tb2xkLWNsYXNz
LHdyb25nLWltcG9ydC1wb3NpdGlvbixuby1uYW1lLWluLW1vZHVsZSxuby1pbml0LGJhZC1tY3Mt
Y2xhc3NtZXRob2QtYXJndW1lbnQsYmFkLWNsYXNzbWV0aG9kLWFyZ3VtZW50LGZpeG1lLGludmFs
aWQtbmFtZSxpbXBvcnQtZXJyb3IsdG9vLWZldy1wdWJsaWMtbWV0aG9kcyx0b28tbWFueS1hbmNl
c3RvcnMsdG9vLW1hbnktYXJndW1lbnRzLHRvby1tYW55LWJvb2xlYW4tZXhwcmVzc2lvbnMsdG9v
LW1hbnktYnJhbmNoZXMsdG9vLW1hbnktaW5zdGFuY2UtYXR0cmlidXRlcyx0b28tbWFueS1sb2Nh
bHMsdG9vLW1hbnktbGluZXMsdG9vLW1hbnktcHVibGljLW1ldGhvZHMsdG9vLW1hbnktcmV0dXJu
LXN0YXRlbWVudHMsdG9vLW1hbnktc3RhdGVtZW50cyxtaXNzaW5nLWRvY3N0cmluZyxsaW5lLXRv
by1sb25nLGxvY2FsbHktZGlzYWJsZWQsbG9jYWxseS1lbmFibGVkLGJhZC1idWlsdGluLGRlcHJl
Y2F0ZWQtbGFtYmRhCisKK1tGT1JNQVRdCittYXgtbGluZS1sZW5ndGg9MTM5CitzaW5nbGUtbGlu
ZS1pZi1zdG10PW5vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5weXRlc3QuZXhwZWN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi8ucHl0ZXN0LmV4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjBmYTMyNmYwMzU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvLnB5dGVzdC5leHBlY3QKQEAgLTAsMCArMSwxMzIyIEBACitweXRlc3QtZXhwZWN0IGZpbGUg
djEKKygyLCA3LCAxMSwgJ2ZpbmFsJywgMCkKK2InaHRtbDVsaWIvdGVzdHMvdGVzdF9lbmNvZGlu
Zy5weTo6dGVzdF9lbmNvZGluZzo6WzExMF0nOiBGQUlMCitiJ2h0bWw1bGliL3Rlc3RzL3Rlc3Rf
ZW5jb2RpbmcucHk6OnRlc3RfZW5jb2Rpbmc6OlsxMTFdJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDIudGVzdDo6MDo6ZGF0YVN0YXRlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjI4OjpkYXRhU3Rh
dGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0
OjoyMzE6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5p
emVyL3Rlc3QzLnRlc3Q6OjIzMjo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjM0OjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0OjoyMzU6OmRhdGFTdGF0
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6
OjIzNzo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6
ZXIvdGVzdDMudGVzdDo6MjQwOjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0OjoyNDE6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjI0Mzo6ZGF0YVN0YXRl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6
MjQ0OjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXpl
ci90ZXN0My50ZXN0OjoyNDY6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjI1ODo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6NjU2OjpkYXRhU3RhdGUn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0
aW9uMDEuZGF0OjoxNzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEuZGF0OjoxNzo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9hZG9wdGlvbjAxLmRhdDo6MTc6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2Fkb3B0aW9uMDEuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2Fkb3B0aW9uMDEuZGF0OjoxNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0
aW9uMDEuZGF0OjoxNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9hZG9wdGlvbjAx
LmRhdDo6MTc6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vYWRvcHRpb24wMS5kYXQ6OjE3OjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjowOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjA6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjoxODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MTg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjE4OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
MTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE5OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoxOTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1m
cmFnbWVudC5kYXQ6OjE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
MTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50
LmRhdDo6MjI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIy
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIyOjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyMjo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIzOjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9y
ZWlnbi1mcmFnbWVudC5kYXQ6OjIzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoyMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjIzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjIzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5k
YXQ6OjIzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjoyMzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjM6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjoyNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MjY6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjI2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
Mjc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI3OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjoyNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1m
cmFnbWVudC5kYXQ6OjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MzA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50
LmRhdDo6MzA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMw
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMwOjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozMDo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMxOjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9y
ZWlnbi1mcmFnbWVudC5kYXQ6OjMxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozMTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjMxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjMxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5k
YXQ6OjMxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjozMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzE6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjozNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6MzQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjM0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
MzU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0OjozNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1m
cmFnbWVudC5kYXQ6OjM4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjM4OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozODo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozODo6bHhtbDo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzg6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0OjozOTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50
LmRhdDo6Mzk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
OjozOTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
OjozOTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojoz
OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
Mzk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM5OjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZy
YWdtZW50LmRhdDo6Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0Ojo0MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3Jl
aWduLWZyYWdtZW50LmRhdDo6NDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVu
dC5kYXQ6OjQwOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
NDE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQxOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Zv
cmVpZ24tZnJhZ21lbnQuZGF0Ojo0MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1m
cmFnbWVudC5kYXQ6OjQ3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6
OjQ3OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0Nzo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0Nzo6bHhtbDo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDc6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24t
ZnJhZ21lbnQuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50
LmRhdDo6NDg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
Ojo0ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0
ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6
NDg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ4OjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5k
ZXguZGF0OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjowOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2lzaW5kZXguZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNp
bmRleC5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6
OjA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjA6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2lzaW5kZXguZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjE6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL2lzaW5kZXguZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
aXNpbmRleC5kYXQ6OjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6
MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNp
bmRleC5kYXQ6OjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6RE9NOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
aXNpbmRleC5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRh
dDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjoyOjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjoyOjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2lzaW5kZXguZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6
Mzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjozOjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL2lzaW5kZXguZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRh
dDo6Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjozOjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRl
eC5kYXQ6OjM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojoz
OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9tZW51aXRlbS1lbGVtZW50LmRhdDo6Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9tZW51aXRlbS1lbGVtZW50LmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1l
bGVtZW50LmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5k
YXQ6OjQ6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVp
dGVtLWVsZW1lbnQuZGF0Ojo0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVt
ZW50LmRhdDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
bWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFj
ZS1zZW5zaXRpdml0eS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0
aXZpdHkuZGF0OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0
eS5kYXQ6OjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0
eS5kYXQ6OjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0
aXZpdHkuZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbmFtZXNwYWNlLXNlbnNp
dGl2aXR5LmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Ut
c2Vuc2l0aXZpdHkuZGF0OjowOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRp
dml0eS5kYXQ6OjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjowOjpET006OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6
OjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjowOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9ydWJ5LmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6
MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vcnVieS5kYXQ6OjEwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
cnVieS5kYXQ6OjEwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEw
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5
LmRhdDo6MTA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6
MTI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3J1YnkuZGF0OjoxMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRh
dDo6MTI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEyOjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9ydWJ5LmRhdDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRh
dDo6MTU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE1OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3J1YnkuZGF0OjoxNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpET006
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1Ynku
ZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1
YnkuZGF0OjoxNzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTc6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3J1YnkuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3J1YnkuZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5k
YXQ6OjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9y
dWJ5LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpET006OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0
OjoyMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vcnVieS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1Ynku
ZGF0OjoyMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MjA6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0OjoyOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3J1YnkuZGF0OjoyOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6
OjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5
LmRhdDo6Mjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjM6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9ydWJ5LmRhdDo6Mzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1
YnkuZGF0OjozOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjozOjps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjozOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9y
dWJ5LmRhdDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRh
dDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vcnVieS5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjU6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo3OjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVi
eS5kYXQ6Ojc6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6Ojc6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vcnVieS5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6bHhtbDo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYWRv
cHRpb24wMS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRh
dDo6MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYWRvcHRpb24wMS5kYXQ6OjA6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0Ojow
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpET006OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
c2NyaXB0ZWQvYXJrLmRhdDo6MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsu
ZGF0OjowOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYXJrLmRhdDo6MDo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fyay5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYXJrLmRhdDo6MDo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9zY3JpcHRlZC9hcmsuZGF0OjowOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93
ZWJraXQwMS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6
OjA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjowOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjowOjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6MDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQv
d2Via2l0MDEuZGF0OjoxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAx
LmRhdDo6MTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0
OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0
OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0Ojox
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6
MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjE6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjA6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjowOjpseG1sOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MTAwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAwOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMDo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAwOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxMDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
MDA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAxOjpET006OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMDE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAx
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDE6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMTo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjEwMTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
MDI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMjo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxMDI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjEwMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjEwMzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMDM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMDM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDM6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMDQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDQ6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA0OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDQ6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjEwNDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEw
NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDU6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjEwNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDU6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNTo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTA1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEw
Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA2OjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjEwNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTA2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTA3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDc6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDc6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxMDc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjEwNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjEwNzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNzo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjEwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MTA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTE6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjExOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MTE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTI6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMzo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTM6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEzOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNDo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE0OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxNDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE1OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxNjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE2Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxNzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTc6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTc6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTg6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjE4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTk6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjE5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjIwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoyMDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjIwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6Omx4bWw6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjIxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIxOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjIxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkRPTTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjIyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIyOjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MjI6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjM6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjM6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMzo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MjM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjQ6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNDo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MjQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MjU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjI1OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNTo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MjU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MjY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2OjpET006OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjI2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNjo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2OjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6Mjc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI3OjpET006
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjI3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoyNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI3Ojps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI4
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjI4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoyODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjI4OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjI5OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoyOTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjI5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyOjpseG1sOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjozMDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MzA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjozMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpseG1s
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpET006OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjozMTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMx
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMTo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjozMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMx
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpET006OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjozMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjMyOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMjo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjMyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMzOjpET006OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjMzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMz
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzM6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjMzOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM0OjpE
T006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjM0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzQ6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjM1OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjozNTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzU6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6bHhtbDo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjM2OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNjo6RE9NOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjozNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzY6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNjo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjM3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNzo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjozNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Mzc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNzo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpseG1sOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojoz
ODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjozODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6Mzg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjozODo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjozOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjQwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NDE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjQxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NDE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NDI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDI6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NDI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
Mjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NDM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDM6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NDo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ0OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NTo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ1OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo0Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ2OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6Omx4bWw6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo0Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDc6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NDc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ3
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDc6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDg6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NDg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjQ4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDg6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NDk6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NDk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjQ5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjUwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo1MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjUwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjUxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjUxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjUyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUyOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjUyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTI6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUzOjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTQ6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1NDo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTU6
OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1NTo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NTY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2OjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjU2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Njo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2OjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NTc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU3OjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjU3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1
Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU3OjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU4OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjU4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo1ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU4
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjU5OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo1OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjU5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo2MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo2MTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo2MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjps
eG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpET006OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo2Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjYyOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mjo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjYyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYzOjpET006OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjYzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYzOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mzo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjM6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjYzOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY0OjpET006
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjY0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjQ6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6bHhtbDo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY1
OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6RE9NOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjU6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjY2OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6RE9NOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjY6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6bHhtbDo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjY3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Nzo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo2Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
Njc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Nzo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjY4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2ODo6
RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo2ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6Njg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
ODo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo2OTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6Njk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2OTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpseG1sOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Njo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NzA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjcwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NzA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NzE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzE6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjcxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NzE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NzI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzI6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjcyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NzI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3Mjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mzo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzM6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjczOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NDo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc0OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3
NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NzU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc1OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo3Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NzY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc2Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo3Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzc6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6Nzc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojc3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzc6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo3ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzg6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6Nzg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6Ojc4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
Nzg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Nzk6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6Ojc5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6Nzk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjgwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6ODA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6ODE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
MTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODE6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6ODE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6ODI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODI6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4Mjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mzo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgzOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NDo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg0OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo4NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg1OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6Omx4bWw6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo4Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODY6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg2
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODY6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo4Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODc6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6ODc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojg3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODc6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
ODg6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6ODg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6Ojg4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6ODk6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6Ojg5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjkwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjkwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjkxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkxOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjkxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTE6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkyOjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTI6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTM6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Mzo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTQ6
OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5NDo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6OTU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1OjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojk1OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5NTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1OjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6OTY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk2OjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6Ojk2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5
Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk2OjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6OTc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk3OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6Ojk3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo5Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk3
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojk4OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo5ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojk4OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6Ojk5OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo5OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6Ojk5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6Omx4bWw6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6Ojk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5OjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3Rz
MTEuZGF0OjoyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0OjoyOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3Rlc3RzMTEuZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVz
dHMxMS5kYXQ6OjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6
OjI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjI6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3Rlc3RzMTEuZGF0Ojo0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjQ6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjQ6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVzdHMxMS5kYXQ6OjQ6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6
NDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVz
dHMxMS5kYXQ6OjU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6RE9NOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVzdHMxMS5kYXQ6OjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRh
dDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo1OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo1OjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3Rlc3RzMTEuZGF0Ojo1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6
Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo2OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3Rlc3RzMTEuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRh
dDo6Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo2OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMx
MS5kYXQ6OjY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0
czE5LmRhdDo6MTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5k
YXQ6OjE0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMx
OS5kYXQ6OjE3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6OjE3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0
OjoxNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6Ojc6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZXN0czE5LmRhdDo6Nzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRh
dDo6Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6Ojc6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6Nzo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3Rlc3RzMTkuZGF0Ojo3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3Rlc3RzMTkuZGF0Ojo3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0Ojo3OjpseG1s
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVz
dHMyLmRhdDo6Njo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3Rz
Mi5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Njo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZXN0czIuZGF0Ojo3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZXN0czIuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRh
dDo6Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMi5kYXQ6Ojc6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZXN0czIuZGF0Ojo3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czI1LmRhdDo6Nzo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMjUuZGF0Ojo3OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3Rlc3RzMjUuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czI1LmRhdDo6
Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMjUuZGF0Ojo3OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyNS5k
YXQ6Ojc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTQ6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtp
dDAyLmRhdDo6MTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTQ6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtp
dDAyLmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTU6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3dlYmtpdDAyLmRhdDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRh
dDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNTo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3dlYmtpdDAyLmRhdDo6MTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6
MTY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3dlYmtpdDAyLmRhdDo6MTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtp
dDAyLmRhdDo6MTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6
OjE2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNjo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3dlYmtpdDAyLmRhdDo6MTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU3
MjdlMDk0N2UyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnRyYXZpcy55bWwK
QEAgLTAsMCArMSwzMiBAQAorbGFuZ3VhZ2U6IHB5dGhvbgorcHl0aG9uOgorICAtICJweXB5Igor
ICAtICIzLjYiCisgIC0gIjMuNSIKKyAgLSAiMy40IgorICAtICIzLjMiCisgIC0gIjIuNyIKKwor
c3VkbzogZmFsc2UKKworY2FjaGU6IHBpcAorCitlbnY6CisgIGdsb2JhbDoKKyAgICAtIFBZVEVT
VF9DT01NQU5EPSJjb3ZlcmFnZSBydW4gLW0gcHl0ZXN0IgorICBtYXRyaXg6CisgICAgLSBUT1hF
TlY9b3B0aW9uYWwKKyAgICAtIFRPWEVOVj1iYXNlCisgICAgLSBUT1hFTlY9c2l4MTktb3B0aW9u
YWwKKworaW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFsbCB0b3ggY29kZWNvdgorCitzY3JpcHQ6Cisg
IC0gdG94CisKK2FmdGVyX3NjcmlwdDoKKyAgLSBweXRob24gZGVidWctaW5mby5weQorCithZnRl
cl9zdWNjZXNzOgorICAtIGNvZGVjb3YKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2ht
YXJrcy9kYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmJlM2VlYjNi
Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1h
cmtzL2RhdGEvaHRtbC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3Mv
ZGF0YS93cHQvcmFuZG9tL2JhY2tncm91bmQtb3JpZ2luLTAwNy1yZWYuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9yYW5kb20vYmFja2dyb3VuZC1vcmlnaW4tMDA3LXJl
Zi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDNhMWQwNTMy
ODE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0
L3JhbmRvbS9iYWNrZ3JvdW5kLW9yaWdpbi0wMDctcmVmLmh0bWwKQEAgLTAsMCArMSwxOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIEJhY2tn
cm91bmRzIGFuZCBCb3JkZXJzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIg
dGl0bGU9IkludGVsIiBocmVmPSJodHRwOi8vd3d3LmludGVsLmNvbSI+Cis8c3R5bGU+CisgIGRp
diB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgaGVpZ2h0OiA1NXB4OworICAg
IGxlZnQ6IDVweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdG9wOiA1cHg7CisgICAg
d2lkdGg6IDU1cHg7CisgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPHA+VGVzdCBwYXNzZXMgaWYg
dGhlcmUgaXMgYSBmaWxsZWQgZ3JlZW4gc3F1YXJlIGFuZCA8c3Ryb25nPm5vIHJlZDwvc3Ryb25n
Pi48L3A+CisgIDxkaXY+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQtcmVmLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBw
b3J0ZWQtcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40
ZmJjNWFjYTk3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3Mv
ZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQtcmVmLmh0bWwKQEAgLTAsMCArMSwx
MyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPmxpQHR5
cGU6IHVuc3VwcG9ydGVkIHR5cGVzPC90aXRsZT4KKzxsaT5maXJzdCBpdGVtPC9saT4KKzxsaT5z
ZWNvbmQgaXRlbTwvbGk+Cis8b2w+CisgIDxsaT5maXJzdCBvcmRlcmVkIGl0ZW08L2xpPgorICA8
bGk+c2Vjb25kIG9yZGVyZWQgaXRlbTwvbGk+Cis8L29sPgorPHVsPgorICA8bGk+Zmlyc3QgdW5v
cmRlcmVkIGl0ZW08L2xpPgorICA8bGk+c2Vjb25kIHVub3JkZXJlZCBpdGVtPC9saT4KKzwvdWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjNjY2YWUwNDI4
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3Jh
bmRvbS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9yYW5kb20vMDAxLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2JhY2tncm91bmRfc2hvcnRo
YW5kX2Nzc19yZWxhdGl2ZV91cmwuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRh
L3dwdC9yYW5kb20vYmVmb3JldW5sb2FkLW9uLWhpc3RvcnktYmFjay0xLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2V1Y2tyLWVuY29kZS1mb3JtLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2ZyYW1lLWFuY2VzdG9y
cy1zZWxmLWFsbG93Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFu
ZG9tL2dyb3VwaW5nLWRsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQv
cmFuZG9tL2hlYXZ5LXN0eWxpbmctMDA1Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3Mv
ZGF0YS93cHQvcmFuZG9tL2h0Yi1sdHItbHRyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFy
a3MvZGF0YS93cHQvcmFuZG9tL2lkYmluZGV4X2dldDguaHRtCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5j
aG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9pZGxoYXJuZXNzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Jl
bmNobWFya3MvZGF0YS93cHQvcmFuZG9tL21vei1jc3MyMS1mbG9hdC1wYWdlLWJyZWFrLWluc2lk
ZS1hdm9pZC02Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9t
L3NoYXBlLW91dHNpZGUtY29udGVudC1ib3gtMDAyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNo
bWFya3MvZGF0YS93cHQvcmFuZG9tL3dvcmtlci1jb25zdHJ1Y3Rvci5odHRwcy5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NWY1ZTgzYTk4NC4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJr
cy9kYXRhL3dwdC9MSUNFTlNFLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0
L1JFQURNRS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0
L3dlaWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFsaWQtMDAxLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZmlsdGVyLXR1cmJ1bGVuY2UtaW52YWxp
ZC0wMDEuaHRtbAppbmRleCAxMjJjYzcwZjM5NzkuLjc0MDBjOGIzNzkzOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2ZpbHRlci10dXJidWxl
bmNlLWludmFsaWQtMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEv
d3B0L3dlaWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFsaWQtMDAxLmh0bWwKQEAgLTI1LDcg
KzI1LDcgQEAKICAgICAgICAgICAgIDxmZUZ1bmNHIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVl
cz0iMCAwLjUwMiAwIi8+IDwhLS0gbWFwIFswLi4xLzNdIC0+IDA7IFsxLzMuLi4yLzNdIC0+IDAu
NTAyOyBbMi8zLi4xXSAtPiAwIC0tPgogICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3Jl
dGUiIHRhYmxlVmFsdWVzPSIwIi8+CiAgICAgICAgICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0
ZSIgdGFibGVWYWx1ZXM9IjAgMSAwIi8+Ci0gICAgICAgIDwvZmVjb21wb25lbnR0cmFuc2Zlcj4K
KyAgICAgICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgogICAgIDwvZmlsdGVyPgogCiAgICAgPGZp
bHRlciBpZD0iZm4yIiB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KQEAgLTM1LDcg
KzM1LDcgQEAKICAgICAgICAgICAgIDxmZUZ1bmNHIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVl
cz0iMCAwLjUwMiAwIi8+IDwhLS0gbWFwIFswLi4xLzNdIC0+IDA7IFsxLzMuLi4yLzNdIC0+IDAu
NTAyOyBbMi8zLi4xXSAtPiAwIC0tPgogICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3Jl
dGUiIHRhYmxlVmFsdWVzPSIwIi8+CiAgICAgICAgICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0
ZSIgdGFibGVWYWx1ZXM9IjAgMSAwIi8+Ci0gICAgICAgIDwvZmVjb21wb25lbnR0cmFuc2Zlcj4K
KyAgICAgICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgogICAgIDwvZmlsdGVyPgogCiAgICAgPCEt
LSB0eXBlPXR1cmJ1bGVuY2UgLS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFy
a3MvZGF0YS93cHQvd2VpZ2h0ZWQvaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1jb250ZW50
LWltYWdlcy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWln
aHRlZC9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLWNvbnRlbnQtaW1hZ2VzLXJlZi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzBkMjk5MDlmOTA2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdo
dGVkL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtY29udGVudC1pbWFnZXMtcmVmLmh0bWwK
QEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkNTUyBJbWFnZXMgTW9kdWxlIExldmVsIDM6IGltYWdlLW9yaWVudGF0aW9uOiBmcm9tLWltYWdl
IGZvciBjb250ZW50IGltYWdlczwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IlN0
ZXBoZW4gQ2hlbm5leSIgaHJlZj0ibWFpbHRvOnNjaGVubmV5QGNocm9taXVtLm9yZyI+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtaW1hZ2VzLTMv
I3Byb3BkZWYtaW1hZ2Utb3JpZW50YXRpb24iPgorPHN0eWxlPgorICAgIGRpdi5pbWFnZSB7Cisg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB9CisgICAgZGl2LmNvbnRhaW5lciB7
CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworICAgIH0KKyAgICBpbWcgeworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQt
cmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorICAgIGJvZHkgeworICAgICAgICBvdmVyZmxvdzog
aGlkZGVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSA+CisgICAgPHA+VGhlIGlt
YWdlcyBzaG91bGQgcm90YXRlIHJlc3BlY3RpbmcgdGhlaXIgRVhJRiBvcmllbnRhdGlvbiBiZWNh
dXNlCisgICAgICAgaW1hZ2Utb3JpZW50YXRpb246IGZyb20taW1hZ2UgaXMgc3BlY2lmaWVkLgor
ICAgIDwvcD4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24t
MS11bC1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPk5vcm1hbAorICAgIDwv
ZGl2PgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9Imlt
YWdlIiBzdHlsZT0iY29udGVudDogdXJsKC4uL3N1cHBvcnQvZXhpZi1vcmllbnRhdGlvbi0yLXVy
LXByZS1yb3RhdGVkLmpwZykiPjwvZGl2PgorICAgICAgICA8YnI+RmxpcHBlZCBob3Jpem9udGFs
bHkKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2
IGNsYXNzPSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50
YXRpb24tMy1sci1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPlJvdGF0ZWQg
MTgwJmRlZzsKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYt
b3JpZW50YXRpb24tNC1sb2wtcHJlLXJvdGF0ZWQuanBnKSI+PC9kaXY+CisgICAgICAgIDxicj5G
bGlwcGVkIHZlcnRpY2FsbHkKKyAgICA8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdiBjbGFzcz0i
Y29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0eWxlPSJjb250ZW50OiB1
cmwoLi4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTUtbHUtcHJlLXJvdGF0ZWQuanBnKSI+PC9k
aXY+CisgICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ0NXIGFuZCBmbGlwcGVkIHZlcnRpY2Fs
bHkKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2
IGNsYXNzPSJpbWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50
YXRpb24tNi1ydS1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPlJvdGF0ZWQg
OTAmZGVnOyBDVworICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImltYWdlIiBzdHlsZT0iY29udGVudDogdXJsKC4uL3N1cHBvcnQvZXhp
Zi1vcmllbnRhdGlvbi03LXJsLXByZS1yb3RhdGVkLmpwZykiPjwvZGl2PgorICAgICAgICA8YnI+
Um90YXRlZCA5MCZkZWc7IENXIGFuZCBmbGlwcGVkIHZlcnRpY2FsbHkKKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZSIgc3R5
bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tOC1sbG8tcHJlLXJv
dGF0ZWQuanBnKSI+PC9kaXY+CisgICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ0NXCisgICAg
PC9kaXY+CisgICAgPGJyPgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxp
bWcgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRp
b24tNS1sdS1wcmUtcm90YXRlZC5qcGcpIj48L2ltZz4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAm
ZGVnOyBDQ1cgYW5kIGZsaXBwZWQgdmVydGljYWxseQorICAgIDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxpbWcgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVy
bCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tNi1ydS1wcmUtcm90YXRlZC5qcGcpIj48L2lt
Zz4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBDVworICAgIDwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxpbWcgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6
IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tNy1ybC1wcmUtcm90YXRlZC5qcGcpIj48
L2ltZz4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBDVyBhbmQgZmxpcHBlZCB2ZXJ0aWNh
bGx5CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGlt
ZyBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3N1cHBvcnQvZXhpZi1vcmllbnRhdGlv
bi04LWxsby1wcmUtcm90YXRlZC5qcGcpIj48L2ltZz4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAm
ZGVnOyBDQ1cKKyAgICA8L2Rpdj4KKyAgICA8YnI+CisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVy
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0eWxlPSJjb250ZW50OiB1cmwoLi4vc3Vw
cG9ydC9leGlmLW9yaWVudGF0aW9uLTktdS1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAg
ICAgPGJyPlVuZGVmaW5lZCAoaW52YWxpZCB2YWx1ZSkKKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWln
aHRlZC9wb3NpdGlvbi1zdGlja3ktdGFibGUtdGgtYm90dG9tLXJlZi5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL3Bvc2l0aW9uLXN0aWNreS10YWJsZS10
aC1ib3R0b20tcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4yYWE1YzA4YTU1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFy
a3MvZGF0YS93cHQvd2VpZ2h0ZWQvcG9zaXRpb24tc3RpY2t5LXRhYmxlLXRoLWJvdHRvbS1yZWYu
aHRtbApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5SZWZlcmVuY2Ug
Zm9yIHBvc2l0aW9uOnN0aWNreSBib3R0b20gY29uc3RyYWludCBzaG91bGQgYmVoYXZlIGNvcnJl
Y3RseSBmb3IgJmx0O3RoJmd0OyBlbGVtZW50czwvdGl0bGU+CisKKzxzdHlsZT4KKy5ncm91cCB7
CisgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgcG9zaXRpb246IHJlbGF0aXZlOworICB3aWR0
aDogMTUwcHg7CisgIGhlaWdodDogMjAwcHg7Cit9CisKKy5zY3JvbGxlciB7CisgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDE1MHB4OworICBvdmVyZmxv
dy14OiBoaWRkZW47CisgIG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5jb250ZW50cyB7CisgIGhl
aWdodDogNTUwcHg7Cit9CisKKy5pbmRpY2F0b3IgeworICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICBsZWZ0OiAwOworICBoZWlnaHQ6IDUwcHg7Cisg
IHdpZHRoOiA1MHB4OworfQorPC9zdHlsZT4KKworPHNjcmlwdD4KK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
Y3JvbGxlcjEnKS5zY3JvbGxUb3AgPSAwOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Ny
b2xsZXIyJykuc2Nyb2xsVG9wID0gNzU7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3Jv
bGxlcjMnKS5zY3JvbGxUb3AgPSAyMDA7Cit9KTsKKzwvc2NyaXB0PgorCis8ZGl2IGNsYXNzPSJn
cm91cCI+CisgIDxkaXYgaWQ9InNjcm9sbGVyMSIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2
IGNsYXNzPSJpbmRpY2F0b3IiIHN0eWxlPSJ0b3A6IDEwMHB4OyI+PC9kaXY+CisgICAgPGRpdiBj
bGFzcz0iY29udGVudHMiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJn
cm91cCI+CisgIDxkaXYgaWQ9InNjcm9sbGVyMiIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2
IGNsYXNzPSJpbmRpY2F0b3IiIHN0eWxlPSJ0b3A6IDE1MHB4OyI+PC9kaXY+CisgICAgPGRpdiBj
bGFzcz0iY29udGVudHMiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJn
cm91cCI+CisgIDxkaXYgaWQ9InNjcm9sbGVyMyIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2
IGNsYXNzPSJpbmRpY2F0b3IiIHN0eWxlPSJ0b3A6IDI1MHB4OyI+PC9kaXY+CisgICAgPGRpdiBj
bGFzcz0iY29udGVudHMiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2PllvdSBzaG91
bGQgc2VlIHRocmVlIGdyZWVuIGJveGVzIGFib3ZlLiBObyByZWQgc2hvdWxkIGJlIHZpc2libGUu
PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2Vp
Z2h0ZWQvcmVzaXplLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0
L3dlaWdodGVkL3Jlc2l6ZS0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjNhMWY1NjE3NDkzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
YmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9yZXNpemUtMDA0Lmh0bWwKQEAgLTAsMCArMSwy
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NT
IEJhc2ljIFVzZXIgSW50ZXJmYWNlIFRlc3Q6IHJlc2l6ZSBpbml0aWFsIHZhbHVlIC0gbm9uZTwv
dGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkludGVsIiBocmVmPSJodHRwOi8vd3d3
LmludGVsLmNvbS8iPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJTaGl5b3UgVGFuIiBocmVm
PSJtYWlsdG86c2hpeW91eC50YW5AaW50ZWwuY29tIj4KKzxsaW5rIHJlbD0iaGVscCIgdGl0bGU9
IjguMS4gJ3Jlc2l6ZScgcHJvcGVydHkiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMt
dWkvI3Jlc2l6ZSI+Cis8bWV0YSBuYW1lPSJmbGFncyIgY29udGVudD0iaW50ZXJhY3QiPgorPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IGNoZWNrcyB0aGF0IHRoZSByZXNpemUgcHJv
cGVydHkgaW5pdGlhbCB2YWx1ZSBpcyBub25lIj4KKzxzdHlsZT4KKyAgI3Rlc3QgeworICAgIGJv
cmRlcjogMnB4IHNvbGlkIGJsdWU7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBvdmVyZmxvdzog
YXV0bzsKKyAgICB3aWR0aDogMTAwcHg7CisgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPHA+VGVz
dCBwYXNzZXMgaWYgPHN0cm9uZz5uZWl0aGVyPC9zdHJvbmc+IHRoZSBoZWlnaHQgPHN0cm9uZz5u
b3I8L3N0cm9uZz4gdGhlIHdpZHRoIG9mIHRoZSBibHVlIGJvcmRlciBzcXVhcmUgY2FuIGJlIGFk
anVzdGVkKGZvciBpbnN0YW5jZSBieSBkcmFnZ2luZyB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lciku
PC9wPgorICA8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90ZXN0LXBsYW4uc3JjLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdGVzdC1wbGFuLnNy
Yy5odG1sCmluZGV4IDY0NGMxMGFhMTIyMC4uYzI5ZjI2ODgzN2RkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdGVzdC1wbGFuLnNyYy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90ZXN0LXBs
YW4uc3JjLmh0bWwKQEAgLTE0OTAsNyArMTQ5MCw3IEBACiAJCQkJCQkJCVtQXSAtIHBhcmVudCBl
bGVtZW50IHdpdGggYSBwcm9wZXJ0eSB0aGF0IGNyZWF0ZXMgYSBzdGFja2luZyBjb250ZXh0IChl
LmcuIDxjb2RlPnBvc2l0aW9uOmZpeGVkPC9jb2RlPik7IHRoZSBlbGVtZW50IDxjb2RlPmJhY2tn
cm91bmQtY29sb3I8L2NvZGU+IGlzIG90aGVyIHRoYW4gPGNvZGU+dHJhbnNwYXJlbnQ8L2NvZGU+
PGJyPgogCQkJCQkJCQlbSU4tUF0gLSBJbnRlcm1lZGlhdGUgY2hpbGQgZWxlbWVudCBiZXR3ZWVu
IHRoZSBwYXJlbnQgW1BdIGFuZCB0aGUgY2hpbGQgW0JdPGJyPgogCQkJCQkJCQlUaGUgaW50ZXJt
ZWRpYXRlIGVsZW1lbnQgaGFzIHRleHQgY29udGVudCwgZGVmYXVsdCB2YWx1ZSBmb3IgPGNvZGU+
YmFja2dyb3VuZC1jb2xvcjwvY29kZT4gYW5kIDxjb2RlPmlzb2xhdGlvbjppc29sYXRlPC9jb2Rl
PiBzZXQ8YnI+Ci0JCQkJCQkJCVtCXSAtIGVsZW1lbnQgd2l0aCA8Y29kZT5taXgtYmxlbmQtbW9k
ZTwvY29kZT4gb3RoZXIgdGhhbiA8Y29kZT5ub3JtYWw8L2Q+CisJCQkJCQkJCVtCXSAtIGVsZW1l
bnQgd2l0aCA8Y29kZT5taXgtYmxlbmQtbW9kZTwvY29kZT4gb3RoZXIgdGhhbiA8Y29kZT5ub3Jt
YWw8L2QgPGJyPgogCQkJCQkJCTx0ZD4KIAkJCQkJCQkJVGhlIGNvbG9yIG9mIHRoZSBjaGlsZCBl
bGVtZW50IFtCXSBtaXhlcyB3aXRoIHRoZSBjb2xvciBvZiB0aGUgaW50ZXJtZWRpYXRlIGVsZW1l
bnQgW0lOLVBdLCB3aGVyZSB0aGV5IG92ZXJsYXAuPGJyPgogCQkJCQkJCQlUaGVyZSBpcyBubyBi
bGVuZGluZyBiZXR3ZWVuIHRoZSBjb2xvciBvZiB0aGUgcGFyZW50IGVsZW1lbnQgW1BdIGFuZCB0
aGUgY29sb3Igb2YgdGhlIGJsZW5kZWQgZWxlbWVudCBbQl0uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDNhMzE3YTdmMy4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC8yZC5jb21wb3NpdGUuaW1hZ2UuZGVzdGlu
YXRpb24tb3Zlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdo
dGVkL2FsaWduLWNvbnRlbnQtd3JhcC0wMDIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJr
cy9kYXRhL3dwdC93ZWlnaHRlZC9iaWc1X2NoYXJzX2V4dHJhLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZmV0Y2guaHR0cC5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFs
aWQtMDAxLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQv
Z3JpZC1hdXRvLWZpbGwtcm93cy0wMDEuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9k
YXRhL3dwdC93ZWlnaHRlZC9tYXNvbnJ5LWl0ZW0tcGxhY2VtZW50LTAwNi5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL21vei1jc3MyMS10YWJsZS1wYWdl
LWJyZWFrLWluc2lkZS1hdm9pZC0yLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0
YS93cHQvd2VpZ2h0ZWQvcHJlLWZsb2F0LTAwMS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1h
cmtzL2RhdGEvd3B0L3dlaWdodGVkL3Rlc3QtcGxhbi5zcmMuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
YmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90b0Jsb2IucG5nLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvd2lsbC1jaGFuZ2UtYWJzcG9zLWNiLTAw
MS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI0YmUyMmY2YzA1Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvYmVuY2htYXJrcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9iZW5jaF9odG1sLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2JlbmNoX3dwdC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9kb2MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ3MDFhYmY4ZjVmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9NYWtlZmls
ZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvZG9jL2NoYW5nZXMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvY29u
Zi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLmZpbHRlcnMucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9kb2MvaHRtbDVsaWIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvaHRtbDVsaWIudHJlZWFk
YXB0ZXJzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLnRyZWVidWlsZGVycy5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2RvYy9odG1sNWxpYi50cmVld2Fsa2Vycy5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2RvYy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9saWNlbnNlLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvZG9jL21ha2UuYmF0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvbW9kdWxlcy5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2RvYy9tb3ZpbmdwYXJ0cy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvX3RyaWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L190cmllL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDBm
MWI1NTA1MDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmll
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9odG1sNWxpYi9fdHJpZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvX3RyaWUvX2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmllL3B5
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0X18u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0X18ucHkKaW5kZXggYTY4
MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvZmlsdGVycy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRl
cnMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0
ZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGVmNTIxMzIyNzEuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L2ZpbHRlcnMvYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvZmlsdGVycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2luamVj
dF9tZXRhX2NoYXJzZXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvbGludC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9vcHRpb25hbHRhZ3MucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvc2FuaXRpemVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9maWx0ZXJzL3doaXRlc3BhY2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvdGVzdHMvc2FuaXRpemVyLXRlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NjUzZWQ2NTQ2OC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2FuaXRpemVyLXRlc3RkYXRhL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdGVzdHMxLmRhdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxpemVyLXRlc3Rk
YXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxp
emVyLXRlc3RkYXRhL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZDIyZGExOGNkNWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Nl
cmlhbGl6ZXItdGVzdGRhdGEvY29yZS50ZXN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0
cy9zZXJpYWxpemVyLXRlc3RkYXRhL2luamVjdG1ldGEudGVzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0YS9vcHRpb25hbHRhZ3MudGVzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0YS9vcHRpb25zLnRlc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvd2hpdGVz
cGFjZS50ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyY2FhNDUxNjY4Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL2NvbmZ0ZXN0
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXIucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL3Rlc3RzL3N1cHBvcnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3Rlc3RzL3Rlc3RfYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdGVzdHMvdGVzdF9lbmNvZGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVz
dHMvdGVzdF9tZXRhLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X29wdGlv
bmFsdGFnc19maWx0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfcGFy
c2VyMi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zYW5pdGl6ZXIucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL3Rlc3RzL3Rlc3RfdG9rZW5pemVyMi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dGVzdHMvdGVzdF90cmVlYWRhcHRlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3Rz
L3Rlc3RfdHJlZXdhbGtlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rf
d2hpdGVzcGFjZV9maWx0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rva2Vu
aXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdG9rZW5pemVydG90cmVlLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90cmVlX2NvbnN0cnVjdGlvbi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdXMtYXNjaWkuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvdGVzdHMvdXRmLTgtYm9tLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvdHJlZWFkYXB0ZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1s
NWxpYi90cmVlYWRhcHRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhkMGZmNzg4NTExNC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdHJlZWFkYXB0ZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy9nZW5zaGkucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy9zYXgucHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDRjNWEyODQ2Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90
cmVlYnVpbGRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVidWls
ZGVycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZG9tLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZXRyZWUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy9ldHJlZV9seG1sLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDQ2ZDA1NWIwZGQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdh
bGtlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL2Jh
c2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL2RvbS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvZXRyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL3RyZWV3YWxrZXJzL2V0cmVlX2x4bWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3RyZWV3YWxrZXJzL2dlbnNoaS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxp
Yi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTA1NjFjYzJjNy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL19faW5p
dF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9faWhhdGV4bWwucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2h0bWw1bGliL19pbnB1dHN0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3Rv
a2VuaXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3V0aWxzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi9jb25zdGFudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2h0bWw1
cGFyc2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9zZXJpYWxpemVyLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h0bWw1bGliL3V0aWxzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi91
dGlscy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMxZTAw
MzllZjQwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi91dGlscy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvdXRpbHMvZW50aXRpZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNGI4MzQzOTdjMGUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9BVVRIT1JTLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvQ0hBTkdFUy5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL0NPTlRSSUJVVElORy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL0xJQ0VOU0UKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9SRUFETUUucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9kZWJ1Zy1pbmZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9mbGFrZTgtcnVuLnNoCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9wYXJzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvcHl0ZXN0LmluaQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvcmVxdWlyZW1lbnRzLWluc3RhbGwuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3JlcXVpcmVt
ZW50cy1vcHRpb25hbC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3JlcXVpcmVtZW50cy10ZXN0LnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvc2V0dXAuY2Zn
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdG94LmluaQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
L2h5cGVyL2NvbW1vbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2VlMDgxODExNDA4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21t
b24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIv
Y29tbW9uL2J1ZnNvY2tldC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL2Nvbm5lY3Rpb24u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi9kZWNvZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9jb21tb24vZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL2hlYWRlcnMu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyL2h5cGVyL2gyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwZTI2OTRmZTM2Li4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2NvbmZpZy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvaDIvY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXJyb3JzLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oeXBlci9oeXBlci9oMi9ldmVudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2V4Y2VwdGlv
bnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2ZyYW1lX2J1ZmZlci5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIv
aHlwZXIvaDIvc2V0dGluZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3N0cmVhbS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaDIvdXRpbGl0aWVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93aW5k
b3dzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAxMS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4Y2I3Y2U3NWZkMjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyL2h5cGVyL2h0dHAxMS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oeXBlci9oeXBlci9odHRwMTEvY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0
cDExL3BhcnNlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL3Jlc3BvbnNlLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvaHR0cDIwL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2M2FmODY1NWVjNjAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0
dHAyMC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9odHRwMjAvY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL2Vycm9ycy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2h0dHAyMC9yZXNwb25zZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL3N0cmVhbS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0
dHAyMC93aW5kb3cucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBh
Y2svdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2hwYWNrL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTUwMDU0NTc2MzQuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2hwYWNrL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9wYWNrYWdlcy9ocGFjay9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFj
a2FnZXMvaHBhY2svY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9l
eGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9ocGFjay5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2svaHBhY2tfY29tcGF0LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
eXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9odWZmbWFuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9ocGFjay9odWZmbWFuX2NvbnN0YW50cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhN2YwYmZmMzk2NjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
L2h5cGVyL3BhY2thZ2VzL2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2h5cGVy
ZnJhbWUvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2h5cGVyZnJhbWUv
ZmxhZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2h5cGVyZnJhbWUvZnJhbWUucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4MmM0OGFjMGUwLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2L3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9yZmMzOTg2L0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5
ODYvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvYXBpLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2L2NvbXBhdC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni9leGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9wYWNrYWdlcy9yZmMzOTg2L21pc2MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3Jm
YzM5ODYvbm9ybWFsaXplcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYv
cGFyc2VyZXN1bHQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvdXJpLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzg3OTQxZDJhYTRlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvX19pbml0X18ucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTllNjE5
ZDNlZWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY2VydHMucGVtCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9jbGkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbXBhdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvY29udHJpYi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cGxpYl9jb21wYXQucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h5cGVyL2h5cGVyL3NzbF9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3Rscy5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJ
U1RPUlkucnN0CmluZGV4IDIyY2Q4N2ViMzQ1OC4uMTcyYjJiOTFiYWY5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyZnJhbWUvSElTVE9SWS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlku
cnN0CkBAIC00LDYgKzQsMTggQEAgUmVsZWFzZSBIaXN0b3J5CiA2LjAuMGRldjAKIC0tLS0tLS0t
LQogCis1LjIuMCAoMjAxOS0wMS0xOCkKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisqKkFQSSBDaGFu
Z2VzIChCYWNrd2FyZC1jb21wYXRpYmxlKSoqCisKKy0gQWRkIGEgbmV3IEVOQUJMRV9DT05ORUNU
X1BST1RPQ09MIHNldHRpbmdzIHBhcmFtdGVyLgorCisqKk90aGVyIENoYW5nZXMqKgorCistIEZp
eCBjb2xsZWN0aW9ucy5hYmMgZGVwcmVjYXRpb24uCistIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9u
IDMuMyBhbmQgc3VwcG9ydCAzLjcuCisKIDUuMS4wICgyMDE3LTA0LTI0KQogLS0tLS0tLS0tLS0t
LS0tLS0tCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9QS0ctSU5GTyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXJmcmFtZS9QS0ctSU5GTwppbmRleCAzOTNjMWU4ZDg2ZDAuLmNmZDUzZjdlOTM4MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL1BLRy1JTkZPCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9QS0ct
SU5GTwpAQCAtMSw4ICsxLDggQEAKIE1ldGFkYXRhLVZlcnNpb246IDEuMQogTmFtZTogaHlwZXJm
cmFtZQotVmVyc2lvbjogNS4xLjAKK1ZlcnNpb246IDUuMi4wCiBTdW1tYXJ5OiBIVFRQLzIgZnJh
bWluZyBsYXllciBmb3IgUHl0aG9uCi1Ib21lLXBhZ2U6IGh0dHA6Ly9oeXBlci5ydGZkLm9yZwor
SG9tZS1wYWdlOiBodHRwczovL3B5dGhvbi1oeXBlci5vcmcvaHlwZXJmcmFtZS9lbi9sYXRlc3Qv
CiBBdXRob3I6IENvcnkgQmVuZmllbGQKIEF1dGhvci1lbWFpbDogY29yeUBsdWthc2EuY28udWsK
IExpY2Vuc2U6IE1JVCBMaWNlbnNlCkBAIC01Myw2ICs1MywxOCBAQCBEZXNjcmlwdGlvbjogPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgNi4wLjBkZXYwCiAg
ICAgICAgIC0tLS0tLS0tLQogICAgICAgICAKKyAgICAgICAgNS4yLjAgKDIwMTktMDEtMTgpCisg
ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgKipBUEkgQ2hhbmdl
cyAoQmFja3dhcmQtY29tcGF0aWJsZSkqKgorICAgICAgICAKKyAgICAgICAgLSBBZGQgYSBuZXcg
RU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0wgc2V0dGluZ3MgcGFyYW10ZXIuCisgICAgICAgIAorICAg
ICAgICAqKk90aGVyIENoYW5nZXMqKgorICAgICAgICAKKyAgICAgICAgLSBGaXggY29sbGVjdGlv
bnMuYWJjIGRlcHJlY2F0aW9uLgorICAgICAgICAtIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMu
MyBhbmQgc3VwcG9ydCAzLjcuCisgICAgICAgIAogICAgICAgICA1LjEuMCAoMjAxNy0wNC0yNCkK
ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIApAQCAtMjIzLDggKzIzNSw4IEBA
IENsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbgogQ2xhc3NpZmllcjog
UHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKIENsYXNzaWZpZXI6IFByb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcKIENsYXNzaWZpZXI6IFByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiA6OiAzCi1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMy4zCiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMy40CiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjog
My41CiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42CitD
bGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43CiBDbGFzc2lm
aWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjog
Q1B5dGhvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8v
UEtHLUlORk8gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS5lZ2ctaW5mby9QS0ctSU5GTwpp
bmRleCAzOTNjMWU4ZDg2ZDAuLmNmZDUzZjdlOTM4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZy
YW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlORk8KKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5
cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlORk8KQEAgLTEsOCArMSw4IEBACiBNZXRhZGF0YS1WZXJz
aW9uOiAxLjEKIE5hbWU6IGh5cGVyZnJhbWUKLVZlcnNpb246IDUuMS4wCitWZXJzaW9uOiA1LjIu
MAogU3VtbWFyeTogSFRUUC8yIGZyYW1pbmcgbGF5ZXIgZm9yIFB5dGhvbgotSG9tZS1wYWdlOiBo
dHRwOi8vaHlwZXIucnRmZC5vcmcKK0hvbWUtcGFnZTogaHR0cHM6Ly9weXRob24taHlwZXIub3Jn
L2h5cGVyZnJhbWUvZW4vbGF0ZXN0LwogQXV0aG9yOiBDb3J5IEJlbmZpZWxkCiBBdXRob3ItZW1h
aWw6IGNvcnlAbHVrYXNhLmNvLnVrCiBMaWNlbnNlOiBNSVQgTGljZW5zZQpAQCAtNTMsNiArNTMs
MTggQEAgRGVzY3JpcHRpb246ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CiAgICAgICAgIDYuMC4wZGV2MAogICAgICAgICAtLS0tLS0tLS0KICAgICAgICAgCisgICAgICAg
IDUuMi4wICgyMDE5LTAxLTE4KQorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg
CisgICAgICAgICoqQVBJIENoYW5nZXMgKEJhY2t3YXJkLWNvbXBhdGlibGUpKioKKyAgICAgICAg
CisgICAgICAgIC0gQWRkIGEgbmV3IEVOQUJMRV9DT05ORUNUX1BST1RPQ09MIHNldHRpbmdzIHBh
cmFtdGVyLgorICAgICAgICAKKyAgICAgICAgKipPdGhlciBDaGFuZ2VzKioKKyAgICAgICAgCisg
ICAgICAgIC0gRml4IGNvbGxlY3Rpb25zLmFiYyBkZXByZWNhdGlvbi4KKyAgICAgICAgLSBEcm9w
IHN1cHBvcnQgZm9yIFB5dGhvbiAzLjMgYW5kIHN1cHBvcnQgMy43LgorICAgICAgICAKICAgICAg
ICAgNS4xLjAgKDIwMTctMDQtMjQpCiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAg
ICAKQEAgLTIyMyw4ICsyMzUsOCBAQCBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24KIENsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAy
CiBDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43CiBDbGFz
c2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMwotQ2xhc3NpZmllcjog
UHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuMwogQ2xhc3NpZmllcjogUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNAogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcg
TGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNQogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3Vh
Z2UgOjogUHl0aG9uIDo6IDMuNgorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDMuNwogQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9u
IDo6IEltcGxlbWVudGF0aW9uIDo6IENQeXRob24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFt
ZS9oeXBlcmZyYW1lLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5
cGVyZnJhbWUuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEwNzY5ZDUyNGY4Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9o
eXBlcmZyYW1lLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vUEtH
LUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyZnJhbWUvaHlwZXJmcmFtZS9fX2luaXRfXy5weQppbmRleCA4ZmQxY2QzMzg4YjUuLjc2MjBi
NGJkZjdmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvX19pbml0X18u
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvX19pbml0X18ucHkKQEAgLTUsNCAr
NSw0IEBAIGh5cGVyZnJhbWUKIAogQSBtb2R1bGUgZm9yIHByb3ZpZGluZyBhIHB1cmUtUHl0aG9u
IEhUVFAvMiBmcmFtaW5nIGxheWVyLgogIiIiCi1fX3ZlcnNpb25fXyA9ICc1LjEuMCcKK19fdmVy
c2lvbl9fID0gJzUuMi4wJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUv
ZmxhZ3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS9mbGFncy5weQppbmRleCAwNWIz
NTAxN2U3MDIuLjE2NjBiZDE4MDBhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVy
ZnJhbWUvZmxhZ3MucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvZmxhZ3MucHkK
QEAgLTcsMTEgKzcsMTYgQEAgRGVmaW5lcyBiYXNpYyBGbGFnIGFuZCBGbGFncyBkYXRhIHN0cnVj
dHVyZXMuCiAiIiIKIGltcG9ydCBjb2xsZWN0aW9ucwogCit0cnk6CisgICAgZnJvbSBjb2xsZWN0
aW9ucy5hYmMgaW1wb3J0IE11dGFibGVTZXQKK2V4Y2VwdCBJbXBvcnRFcnJvcjogICMgcHJhZ21h
OiBubyBjb3ZlcgorICAgICMgUHl0aG9uIDIuNyBjb21wYXRpYmlsaXR5CisgICAgZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgTXV0YWJsZVNldAogCiBGbGFnID0gY29sbGVjdGlvbnMubmFtZWR0dXBs
ZSgiRmxhZyIsIFsibmFtZSIsICJiaXQiXSkKIAogCi1jbGFzcyBGbGFncyhjb2xsZWN0aW9ucy5N
dXRhYmxlU2V0KToKK2NsYXNzIEZsYWdzKE11dGFibGVTZXQpOgogICAgICIiIgogICAgIEEgc2lt
cGxlIE11dGFibGVTZXQgaW1wbGVtZW50YXRpb24gdGhhdCB3aWxsIG9ubHkgYWNjZXB0IGtub3du
IGZsYWdzIGFzCiAgICAgZWxlbWVudHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlw
ZXJmcmFtZS9mcmFtZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL2ZyYW1lLnB5Cmlu
ZGV4IDUyOTQ3NjhhMjg4MC4uNzk1MDU3Mjc5YjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJh
bWUvaHlwZXJmcmFtZS9mcmFtZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS9m
cmFtZS5weQpAQCAtMzk1LDYgKzM5NSw4IEBAIGNsYXNzIFNldHRpbmdzRnJhbWUoRnJhbWUpOgog
ICAgIE1BWF9GUkFNRV9TSVpFID0gMHgwNQogICAgICM6IFRoZSBieXRlIHRoYXQgc2lnbmFscyB0
aGUgU0VUVElOR1NfTUFYX0hFQURFUl9MSVNUX1NJWkUgc2V0dGluZy4KICAgICBNQVhfSEVBREVS
X0xJU1RfU0laRSA9IDB4MDYKKyAgICAjOiBUaGUgYnl0ZSB0aGF0IHNpZ25hbHMgU0VUVElOR1Nf
RU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0wgc2V0dGluZy4KKyAgICBFTkFCTEVfQ09OTkVDVF9QUk9U
T0NPTCA9IDB4MDgKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW1faWQ9MCwgc2V0dGlu
Z3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzdXBlcihTZXR0aW5nc0ZyYW1lLCBzZWxmKS5f
X2luaXRfXyhzdHJlYW1faWQsICoqa3dhcmdzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1l
L2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmNWI1ZjI4NGZl
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
ZnJhbWUvaHlwZXJmcmFtZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1l
L2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS9mbGFncy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL2ZyYW1lLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
ZnJhbWUvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3NldHVwLmNmZwppbmRleCAxZTNlYjM2
N2MxMTYuLjUwMjIwZTEzNWJjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3NldHVwLmNm
ZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAuY2ZnCkBAIC0xLDYgKzEsOSBAQAogW3doZWVs
XQogdW5pdmVyc2FsID0gMQogCitbdG9vbDpweXRlc3RdCit0ZXN0cGF0aHMgPSB0ZXN0CisKIFtl
Z2dfaW5mb10KIHRhZ19idWlsZCA9IAogdGFnX2RhdGUgPSAwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyZnJhbWUvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAucHkKaW5kZXggOGYxM2My
NjM5ZjUxLi4xYWI3MjEyMTQxNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9zZXR1cC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAucHkKQEAgLTM2LDcgKzM2LDcgQEAgc2V0dXAo
CiAgICAgbG9uZ19kZXNjcmlwdGlvbj1vcGVuKCdSRUFETUUucnN0JykucmVhZCgpICsgJ1xuXG4n
ICsgb3BlbignSElTVE9SWS5yc3QnKS5yZWFkKCksCiAgICAgYXV0aG9yPSdDb3J5IEJlbmZpZWxk
JywKICAgICBhdXRob3JfZW1haWw9J2NvcnlAbHVrYXNhLmNvLnVrJywKLSAgICB1cmw9J2h0dHA6
Ly9oeXBlci5ydGZkLm9yZycsCisgICAgdXJsPSdodHRwczovL3B5dGhvbi1oeXBlci5vcmcvaHlw
ZXJmcmFtZS9lbi9sYXRlc3QvJywKICAgICBwYWNrYWdlcz1wYWNrYWdlcywKICAgICBwYWNrYWdl
X2RhdGE9eycnOiBbJ0xJQ0VOU0UnLCAnUkVBRE1FLnJzdCcsICdDT05UUklCVVRPUlMucnN0Jywg
J0hJU1RPUlkucnN0J119LAogICAgIHBhY2thZ2VfZGlyPXsnaHlwZXJmcmFtZSc6ICdoeXBlcmZy
YW1lJ30sCkBAIC01MCwxMCArNTAsMTAgQEAgc2V0dXAoCiAgICAgICAgICdQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMicsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMi43JywKICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzJywKLSAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjMn
LAogICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNCcsCiAgICAg
ICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy41JywKICAgICAgICAgJ1By
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjYnLAorICAgICAgICAnUHJvZ3JhbW1p
bmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNycsCiAgICAgICAgICdQcm9ncmFtbWluZyBMYW5n
dWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbicsCiAgICAgXSwKICkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
eXBlcmZyYW1lL3Rlc3QvdGVzdF9mcmFtZXMucHkKaW5kZXggOTQ4MzQ5YTkxZTdlLi5hYmZlY2I2
OTJkYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5CkBAIC01NiwyOSArNTYsMjkg
QEAgY2xhc3MgVGVzdEdlbmVyYWxGcmFtZUJlaGF2aW91cihvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgZi5zdHJlYW1faWQgPT0gMAogCiAgICAgZGVmIHRlc3RfcGFyc2VfZnJhbWVfaGVhZGVyX3Vu
a25vd25fdHlwZShzZWxmKToKLSAgICAgICAgZiwgbCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRl
cigKKyAgICAgICAgZnJhbWUsIGxlbmd0aCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKICAg
ICAgICAgICAgIGInXHgwMFx4MDBceDU5XHhGRlx4MDBceDAwXHgwMFx4MDBceDAxJwogICAgICAg
ICApCi0gICAgICAgIGFzc2VydCBmLnR5cGUgPT0gMHhGRgotICAgICAgICBhc3NlcnQgbCA9PSAw
eDU5Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGYsIEV4dGVuc2lvbkZyYW1lKQotICAgICAg
ICBhc3NlcnQgZi5zdHJlYW1faWQgPT0gMQorICAgICAgICBhc3NlcnQgZnJhbWUudHlwZSA9PSAw
eEZGCisgICAgICAgIGFzc2VydCBsZW5ndGggPT0gMHg1OQorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShmcmFtZSwgRXh0ZW5zaW9uRnJhbWUpCisgICAgICAgIGFzc2VydCBmcmFtZS5zdHJlYW1f
aWQgPT0gMQogCiAgICAgZGVmIHRlc3RfZmxhZ3NfYXJlX3BlcnNpc3RlZChzZWxmKToKLSAgICAg
ICAgZiwgbCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKKyAgICAgICAgZnJhbWUsIGxlbmd0
aCA9IEZyYW1lLnBhcnNlX2ZyYW1lX2hlYWRlcigKICAgICAgICAgICAgIGInXHgwMFx4MDBceDU5
XHhGRlx4MDlceDAwXHgwMFx4MDBceDAxJwogICAgICAgICApCi0gICAgICAgIGFzc2VydCBmLnR5
cGUgPT0gMHhGRgotICAgICAgICBhc3NlcnQgbCA9PSAweDU5Ci0gICAgICAgIGFzc2VydCBmLmZs
YWdfYnl0ZSA9PSAweDA5CisgICAgICAgIGFzc2VydCBmcmFtZS50eXBlID09IDB4RkYKKyAgICAg
ICAgYXNzZXJ0IGxlbmd0aCA9PSAweDU5CisgICAgICAgIGFzc2VydCBmcmFtZS5mbGFnX2J5dGUg
PT0gMHgwOQogCiAgICAgZGVmIHRlc3RfcGFyc2VfYm9keV91bmtub3duX3R5cGUoc2VsZik6Ci0g
ICAgICAgIGYgPSBkZWNvZGVfZnJhbWUoCisgICAgICAgIGZyYW1lID0gZGVjb2RlX2ZyYW1lKAog
ICAgICAgICAgICAgYidceDAwXHgwMFx4MENceEZGXHgwMFx4MDBceDAwXHgwMFx4MDFoZWxsbyB3
b3JsZCEnCiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0IGYuYm9keSA9PSBiJ2hlbGxvIHdvcmxk
IScKLSAgICAgICAgYXNzZXJ0IGYuYm9keV9sZW4gPT0gMTIKLSAgICAgICAgYXNzZXJ0IGYuc3Ry
ZWFtX2lkID09IDEKKyAgICAgICAgYXNzZXJ0IGZyYW1lLmJvZHkgPT0gYidoZWxsbyB3b3JsZCEn
CisgICAgICAgIGFzc2VydCBmcmFtZS5ib2R5X2xlbiA9PSAxMgorICAgICAgICBhc3NlcnQgZnJh
bWUuc3RyZWFtX2lkID09IDEKIAogICAgIGRlZiB0ZXN0X2Nhbl9yb3VuZF90cmlwX3Vua25vd25f
ZnJhbWVzKHNlbGYpOgogICAgICAgICBmcmFtZV9kYXRhID0gYidceDAwXHgwMFx4MENceEZGXHgw
MFx4MDBceDAwXHgwMFx4MDFoZWxsbyB3b3JsZCEnCkBAIC0zMDYsMTMgKzMwNiwxNCBAQCBjbGFz
cyBUZXN0UnN0U3RyZWFtRnJhbWUob2JqZWN0KToKIAogY2xhc3MgVGVzdFNldHRpbmdzRnJhbWUo
b2JqZWN0KToKICAgICBzZXJpYWxpemVkID0gKAotICAgICAgICBiJ1x4MDBceDAwXHgyNFx4MDRc
eDAxXHgwMFx4MDBceDAwXHgwMCcgKyAgIyBGcmFtZSBoZWFkZXIKKyAgICAgICAgYidceDAwXHgw
MFx4MkFceDA0XHgwMVx4MDBceDAwXHgwMFx4MDAnICsgICMgRnJhbWUgaGVhZGVyCiAgICAgICAg
IGInXHgwMFx4MDFceDAwXHgwMFx4MTBceDAwJyArICAgICAgICAgICAgICAjIEhFQURFUl9UQUJM
RV9TSVpFCiAgICAgICAgIGInXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwJyArICAgICAgICAgICAg
ICAjIEVOQUJMRV9QVVNICiAgICAgICAgIGInXHgwMFx4MDNceDAwXHgwMFx4MDBceDY0JyArICAg
ICAgICAgICAgICAjIE1BWF9DT05DVVJSRU5UX1NUUkVBTVMKICAgICAgICAgYidceDAwXHgwNFx4
MDBceDAwXHhGRlx4RkYnICsgICAgICAgICAgICAgICMgSU5JVElBTF9XSU5ET1dfU0laRQogICAg
ICAgICBiJ1x4MDBceDA1XHgwMFx4MDBceDQwXHgwMCcgKyAgICAgICAgICAgICAgIyBNQVhfRlJB
TUVfU0laRQotICAgICAgICBiJ1x4MDBceDA2XHgwMFx4MDBceEZGXHhGRicgICAgICAgICAgICAg
ICAgIyBNQVhfSEVBREVSX0xJU1RfU0laRQorICAgICAgICBiJ1x4MDBceDA2XHgwMFx4MDBceEZG
XHhGRicgKyAgICAgICAgICAgICAgIyBNQVhfSEVBREVSX0xJU1RfU0laRQorICAgICAgICBiJ1x4
MDBceDA4XHgwMFx4MDBceDAwXHgwMScgICAgICAgICAgICAgICAgIyBFTkFCTEVfQ09OTkVDVF9Q
Uk9UT0NPTAogICAgICkKIAogICAgIHNldHRpbmdzID0gewpAQCAtMzIyLDYgKzMyMyw3IEBAIGNs
YXNzIFRlc3RTZXR0aW5nc0ZyYW1lKG9iamVjdCk6CiAgICAgICAgIFNldHRpbmdzRnJhbWUuSU5J
VElBTF9XSU5ET1dfU0laRTogNjU1MzUsCiAgICAgICAgIFNldHRpbmdzRnJhbWUuTUFYX0ZSQU1F
X1NJWkU6IDE2Mzg0LAogICAgICAgICBTZXR0aW5nc0ZyYW1lLk1BWF9IRUFERVJfTElTVF9TSVpF
OiA2NTUzNSwKKyAgICAgICAgU2V0dGluZ3NGcmFtZS5FTkFCTEVfQ09OTkVDVF9QUk9UT0NPTDog
MSwKICAgICB9CiAKICAgICBkZWYgdGVzdF9zZXR0aW5nc19mcmFtZV9oYXNfb25seV9vbmVfZmxh
ZyhzZWxmKToKQEAgLTM1OSw3ICszNjEsNyBAQCBjbGFzcyBUZXN0U2V0dGluZ3NGcmFtZShvYmpl
Y3QpOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmLCBTZXR0aW5nc0ZyYW1lKQogICAgICAg
ICBhc3NlcnQgZi5mbGFncyA9PSBzZXQoWydBQ0snXSkKICAgICAgICAgYXNzZXJ0IGYuc2V0dGlu
Z3MgPT0gc2VsZi5zZXR0aW5ncwotICAgICAgICBhc3NlcnQgZi5ib2R5X2xlbiA9PSAzNgorICAg
ICAgICBhc3NlcnQgZi5ib2R5X2xlbiA9PSA0MgogCiAgICAgZGVmIHRlc3Rfc2V0dGluZ3NfZnJh
bWVzX25ldmVyX2hhdmVfc3RyZWFtcyhzZWxmKToKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2Vz
KFZhbHVlRXJyb3IpOgpAQCAtNTE5LDYgKzUyMSwxOSBAQCBjbGFzcyBUZXN0R29Bd2F5RnJhbWUo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGYuYWRkaXRpb25hbF9kYXRhID09IGInaGVsbG8nCiAg
ICAgICAgIGFzc2VydCBmLmJvZHlfbGVuID09IDEzCiAKKyAgICAgICAgcyA9ICgKKyAgICAgICAg
ICAgIGInXHgwMFx4MDBceDA4XHgwN1x4MDBceDAwXHgwMFx4MDBceDAwJyArICAjIEZyYW1lIGhl
YWRlcgorICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDQwJyArICAgICAgICAgICAgICAgICAg
ICAgICMgTGFzdCBTdHJlYW0gSUQKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgyMCcgKyAg
ICAgICAgICAgICAgICAgICAgICAjIEVycm9yIENvZGUKKyAgICAgICAgICAgIGInJyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZGl0aW9uYWwgZGF0YQorICAgICAg
ICApCisgICAgICAgIGYgPSBkZWNvZGVfZnJhbWUocykKKworICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShmLCBHb0F3YXlGcmFtZSkKKyAgICAgICAgYXNzZXJ0IGYuZmxhZ3MgPT0gc2V0KCkKKyAg
ICAgICAgYXNzZXJ0IGYuYWRkaXRpb25hbF9kYXRhID09IGInJworICAgICAgICBhc3NlcnQgZi5i
b2R5X2xlbiA9PSA4CisKICAgICBkZWYgdGVzdF9nb2F3YXlfZnJhbWVfbmV2ZXJfaGFzX2Ffc3Ry
ZWFtKHNlbGYpOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CiAgICAg
ICAgICAgICBHb0F3YXlGcmFtZShzdHJlYW1faWQ9MSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJm
cmFtZS90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZDY3YmY5ZjhjZC4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdGVz
dF9mbGFncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS90ZXN0L3Rlc3RfZnJhbWVzLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmM0NDA5YTUwMS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9DT05UUklC
VVRPUlMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL0hJU1RPUlkucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1l
L0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUv
UEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9z
ZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhLy5naXRodWIvd29ya2Zsb3dzL21haW4ueW1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvLmdpdGh1Yi93b3JrZmxvd3MvbWFpbi55bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNTYzMjBmZDAwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2ltcG9ydGxpYl9tZXRhZGF0YS8uZ2l0aHViL3dvcmtmbG93cy9tYWluLnltbApAQCAtMCww
ICsxLDEyNiBAQAorbmFtZTogQXV0b21hdGVkIFRlc3RzCisKK29uOiBbcHVzaCwgcHVsbF9yZXF1
ZXN0XQorCitqb2JzOgorICB0ZXN0OgorICAgIHN0cmF0ZWd5OgorICAgICAgbWF0cml4OgorICAg
ICAgICBweXRob246IFsyLjcsIDMuNSwgMy42LCAzLjcsIDMuOCwgMy45XQorICAgICAgICBwbGF0
Zm9ybTogW3VidW50dS1sYXRlc3QsIG1hY29zLWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAg
cnVucy1vbjogJHt7IG1hdHJpeC5wbGF0Zm9ybSB9fQorICAgIHN0ZXBzOgorICAgICAgLSB1c2Vz
OiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAgICAtIG5hbWU6IFNldHVwIFB5dGhvbgorICAgICAg
ICB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MgorICAgICAgICB3aXRoOgorICAgICAgICAg
IHB5dGhvbi12ZXJzaW9uOiAke3sgbWF0cml4LnB5dGhvbiB9fQorICAgICAgLSBuYW1lOiBJbnN0
YWxsIHRveAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwg
dG94CisgICAgICAtIG5hbWU6IFJ1biB0ZXN0cworICAgICAgICBydW46IHRveAorICAgICAgICBl
bnY6CisgICAgICAgICAgVE9YRU5WOiBweXRob24KKworICBxYToKKyAgICBydW5zLW9uOiB1YnVu
dHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIK
KyAgICAgIC0gbmFtZTogU2V0dXAgUHl0aG9uCisgICAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAt
cHl0aG9uQHYyCisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuOQor
ICAgICAgLSBuYW1lOiBJbnN0YWxsIHRveAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRo
b24gLW0gcGlwIGluc3RhbGwgdG94CisgICAgICAtIG5hbWU6IFJ1biBjaGVja3MKKyAgICAgICAg
cnVuOiB0b3gKKyAgICAgICAgZW52OgorICAgICAgICAgIFRPWEVOVjogcWEKKworICBjb3ZlcmFn
ZToKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6
IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gbmFtZTogU2V0dXAgUHl0aG9uCisgICAgICAg
IHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICAgIHdpdGg6CisgICAgICAgICAg
cHl0aG9uLXZlcnNpb246IDMuOQorICAgICAgLSBuYW1lOiBJbnN0YWxsIHRveAorICAgICAgICBy
dW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgdG94CisgICAgICAtIG5hbWU6
IEV2YWx1YXRlIGNvdmVyYWdlCisgICAgICAgIHJ1bjogdG94CisgICAgICAgIGVudjoKKyAgICAg
ICAgICBUT1hFTlY6IGNvdgorCisgIGJlbmNobWFyazoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0
ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAg
IC0gbmFtZTogU2V0dXAgUHl0aG9uCisgICAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9u
QHYyCisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuOQorICAgICAg
LSBuYW1lOiBJbnN0YWxsIHRveAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0g
cGlwIGluc3RhbGwgdG94CisgICAgICAtIG5hbWU6IFJ1biBiZW5jaG1hcmtzCisgICAgICAgIHJ1
bjogdG94CisgICAgICAgIGVudjoKKyAgICAgICAgICBUT1hFTlY6IHBlcmYKKworICBkaWZmY292
OgorICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczog
YWN0aW9ucy9jaGVja291dEB2MgorICAgICAgICB3aXRoOgorICAgICAgICAgIGZldGNoLWRlcHRo
OiAwCisgICAgICAtIG5hbWU6IFNldHVwIFB5dGhvbgorICAgICAgICB1c2VzOiBhY3Rpb25zL3Nl
dHVwLXB5dGhvbkB2MgorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAz
LjkKKyAgICAgIC0gbmFtZTogSW5zdGFsbCB0b3gKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAg
cHl0aG9uIC1tIHBpcCBpbnN0YWxsIHRveAorICAgICAgLSBuYW1lOiBFdmFsdWF0ZSBjb3ZlcmFn
ZQorICAgICAgICBydW46IHRveAorICAgICAgICBlbnY6CisgICAgICAgICAgVE9YRU5WOiBkaWZm
Y292CisKKyAgZG9jczoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6Cisg
ICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gbmFtZTogU2V0dXAgUHl0
aG9uCisgICAgICAgIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICAgIHdpdGg6
CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuOQorICAgICAgLSBuYW1lOiBJbnN0YWxsIHRv
eAorICAgICAgICBydW46IHwKKyAgICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgdG94Cisg
ICAgICAtIG5hbWU6IEJ1aWxkIGRvY3MKKyAgICAgICAgcnVuOiB0b3gKKyAgICAgICAgZW52Ogor
ICAgICAgICAgIFRPWEVOVjogZG9jcworCisgIHJlbGVhc2U6CisgICAgbmVlZHM6IHRlc3QKKyAg
ICBpZjogZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3B1c2gnICYmIGNvbnRhaW5zKGdpdGh1Yi5yZWYs
ICdyZWZzL3RhZ3MvJykKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisKKyAgICBzdGVwczoK
KyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSBuYW1lOiBTZXR1cCBQ
eXRob24KKyAgICAgICAgdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAgICAgICAgd2l0
aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy45CisgICAgICAtIG5hbWU6IEluc3RhbGwg
dG94CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCB0b3gK
KyAgICAgIC0gbmFtZTogUmVsZWFzZQorICAgICAgICBydW46IHRveCAtZSByZWxlYXNlCisgICAg
ICAgIGVudjoKKyAgICAgICAgICBUV0lORV9QQVNTV09SRDogJHt7IHNlY3JldHMuUFlQSV9UT0tF
TiB9fQorICAgICAgICAgIEdJVEhVQl9UT0tFTjogJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS8uZ2l0aWdub3JlIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bXBvcnRsaWJfbWV0YWRhdGEvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmFlODY0ZDYxMjU5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0
bGliX21ldGFkYXRhLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxMyBAQAorYnVpbGQKKy9jb3ZlcmFn
ZS54bWwKKy9kaWZmY292Lmh0bWwKK2h0bWxjb3YKK2ltcG9ydGxpYl9tZXRhZGF0YS5lZ2ctaW5m
bworLm15cHlfY2FjaGUKKy8uY292ZXJhZ2UKKy8uRFNfU3RvcmUKK2FydGlmYWN0cworLmVnZ3MK
Ky5kb2N0cmVlcworZGlzdAorcGlwLXdoZWVsLW1ldGFkYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS8ucmVhZHRoZWRvY3MueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRh
dGEvLnJlYWR0aGVkb2NzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjhhZTQ0Njg0MjhiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhLy5yZWFkdGhlZG9jcy55bWwKQEAgLTAsMCArMSw1IEBACitweXRob246CisgIHZlcnNpb246
IDMKKyAgZXh0cmFfcmVxdWlyZW1lbnRzOgorICAgIC0gZG9jcworICBwaXBfaW5zdGFsbDogdHJ1
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvTElDRU5TRSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5iZTdlMDkyYjBiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9t
ZXRhZGF0YS9MSUNFTlNFCkBAIC0wLDAgKzEsMTMgQEAKK0NvcHlyaWdodCAyMDE3LTIwMTkgSmFz
b24gUi4gQ29vbWJzLCBCYXJyeSBXYXJzYXcKKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvTUFOSUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9t
ZXRhZGF0YS9NQU5JRkVTVC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjNmY2Y2ZDYzM2FkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL01BTklGRVNULmluCkBAIC0wLDAgKzEsNSBAQAoraW5jbHVkZSAqLnB5IE1BTklGRVNULmlu
IExJQ0VOU0UgUkVBRE1FLnJzdAorZ2xvYmFsLWluY2x1ZGUgKi50eHQgKi5yc3QgKi5pbmkgKi5j
ZmcgKi50b21sICoud2hsICouZWdnCitleGNsdWRlIC5naXRpZ25vcmUKK3BydW5lIGJ1aWxkCitw
cnVuZSAudG94CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9SRUFETUUucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2NTVkOWFiOTg3NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL1JFQURNRS5yc3QKQEAgLTAsMCArMSw0MiBAQAorPT09PT09
PT09PT09PT09PT09PT09PT09PQorIGBgaW1wb3J0bGliX21ldGFkYXRhYGAKKz09PT09PT09PT09
PT09PT09PT09PT09PT0KKworYGBpbXBvcnRsaWJfbWV0YWRhdGFgYCBpcyBhIGxpYnJhcnkgdG8g
YWNjZXNzIHRoZSBtZXRhZGF0YSBmb3IgYQorUHl0aG9uIHBhY2thZ2UuCisKK0FzIG9mIFB5dGhv
biAzLjgsIHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBhZGRlZCB0byB0aGUKK2BQeXRob24g
c3RhbmRhcmQgbGlicmFyeQorPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9pbXBv
cnRsaWIubWV0YWRhdGEuaHRtbD5gXy4KK1RoaXMgcGFja2FnZSBzdXBwbGllcyBiYWNrcG9ydHMg
b2YgdGhhdCBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZworaW1wcm92ZW1lbnRzIGFkZGVkIHRvIHN1
YnNlcXVlbnQgUHl0aG9uIHZlcnNpb25zLgorCisKK1VzYWdlCis9PT09PQorCitTZWUgdGhlIGBv
bmxpbmUgZG9jdW1lbnRhdGlvbiA8aHR0cHM6Ly9pbXBvcnRsaWJfbWV0YWRhdGEucmVhZHRoZWRv
Y3MuaW8vPmBfCitmb3IgdXNhZ2UgZGV0YWlscy4KKworYEZpbmRlciBhdXRob3JzCis8aHR0cHM6
Ly9kb2NzLnB5dGhvbi5vcmcvMy9yZWZlcmVuY2UvaW1wb3J0Lmh0bWwjZmluZGVycy1hbmQtbG9h
ZGVycz5gXyBjYW4KK2Fsc28gYWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBwYWNrYWdlIGluc3RhbGxl
cnMuICBTZWUgdGhlIGFib3ZlIGRvY3VtZW50YXRpb24KK2ZvciBkZXRhaWxzLgorCisKK0NhdmVh
dHMKKz09PT09PT0KKworVGhpcyBwcm9qZWN0IHByaW1hcmlseSBzdXBwb3J0cyB0aGlyZC1wYXJ0
eSBwYWNrYWdlcyBpbnN0YWxsZWQgYnkgUHlQQQordG9vbHMgKG9yIG90aGVyIGNvbmZvcm1pbmcg
cGFja2FnZXMpLiBJdCBkb2VzIG5vdCBzdXBwb3J0OgorCistIFBhY2thZ2VzIGluIHRoZSBzdGRs
aWIuCistIFBhY2thZ2VzIGluc3RhbGxlZCB3aXRob3V0IG1ldGFkYXRhLgorCitQcm9qZWN0IGRl
dGFpbHMKKz09PT09PT09PT09PT09PQorCisgKiBQcm9qZWN0IGhvbWU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBSZXBvcnQgYnVncyBhdDogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGhvbi9pbXBvcnRsaWJfbWV0YWRhdGEvaXNzdWVzCisgKiBDb2RlIGhv
c3Rpbmc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBE
b2N1bWVudGF0aW9uOiBodHRwczovL2ltcG9ydGxpYl9tZXRhZGF0YS5yZWFkdGhlZG9jcy5pby8K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2NvZGVjb3YueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bXBvcnRsaWJfbWV0YWRhdGEvY29kZWNvdi55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi42NmM3ZjRiZDE5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9y
dGxpYl9tZXRhZGF0YS9jb2RlY292LnltbApAQCAtMCwwICsxLDIgQEAKK2NvZGVjb3Y6CisgIHRv
a2VuOiA1ZWIxYmM0NS0xYjdmLTQzZTYtOGJjMS1mMmIwMjgzM2RiYTkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL2NvdmVyYWdlLmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL2NvdmVyYWdlLmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmI0ZDMxMDJmNDI1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L2NvdmVyYWdlLmluaQpAQCAtMCwwICsxLDI0IEBACitbcnVuXQorYnJhbmNoID0gdHJ1ZQorcGFy
YWxsZWwgPSB0cnVlCitvbWl0ID0KKyAgICAgc2V0dXAqCisgICAgLnRveC8qL2xpYi9weXRob24q
CisgICAgKi90ZXN0cy8qLnB5CisgICAgKi90ZXN0aW5nLyoucHkKKyAgICAvdXNyL2xvY2FsLyoK
KyAgICAqL21vZC5weQorcGx1Z2lucyA9CisgICAgIGNvdmVycGx1ZworCitbcmVwb3J0XQorZXhj
bHVkZV9saW5lcyA9CisgICAgcHJhZ21hOiBub2NvdmVyCisgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisgICAgYXNzZXJ0XHMKKyAgICBub2Nv
dmVycHkke1BZVn0KKworW3BhdGhzXQorc291cmNlID0KKyAgICBpbXBvcnRsaWJfbWV0YWRhdGEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2NvdmVycGx1Zy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW1wb3J0bGliX21ldGFkYXRhL2NvdmVycGx1Zy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjBiMGM3Y2I1NDkwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL2NvdmVycGx1Zy5weQpAQCAtMCwwICsxLDIxIEBACisiIiJDb3ZlcmFn
ZSBwbHVnaW4gdG8gYWRkIGV4Y2x1ZGUgbGluZXMgYmFzZWQgb24gdGhlIFB5dGhvbiB2ZXJzaW9u
LiIiIgorCitpbXBvcnQgc3lzCisKK2Zyb20gY292ZXJhZ2UgaW1wb3J0IENvdmVyYWdlUGx1Z2lu
CisKKworY2xhc3MgTXlDb25maWdQbHVnaW4oQ292ZXJhZ2VQbHVnaW4pOgorICAgIGRlZiBjb25m
aWd1cmUoc2VsZiwgY29uZmlnKToKKyAgICAgICAgb3B0X25hbWUgPSAncmVwb3J0OmV4Y2x1ZGVf
bGluZXMnCisgICAgICAgIGV4Y2x1ZGVfbGluZXMgPSBjb25maWcuZ2V0X29wdGlvbihvcHRfbmFt
ZSkKKyAgICAgICAgIyBQeXRob24gPj0gMy42IGhhcyBvcy5QYXRoTGlrZS4KKyAgICAgICAgaWYg
c3lzLnZlcnNpb25faW5mbyA+PSAoMywgNik6CisgICAgICAgICAgICBleGNsdWRlX2xpbmVzLmFw
cGVuZCgncHJhZ21hOiA+PTM2JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4Y2x1ZGVf
bGluZXMuYXBwZW5kKCdwcmFnbWE6IDw9MzUnKQorICAgICAgICBjb25maWcuc2V0X29wdGlvbihv
cHRfbmFtZSwgZXhjbHVkZV9saW5lcykKKworCitkZWYgY292ZXJhZ2VfaW5pdChyZWcsIG9wdGlv
bnMpOgorICAgIHJlZy5hZGRfY29uZmlndXJlcihNeUNvbmZpZ1BsdWdpbigpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0
bGliX21ldGFkYXRhL2RvY3MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL2RvY3MvY2hhbmdlbG9nLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3Mv
Y2hhbmdlbG9nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM5
NjUzNTc0NGE1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2Rv
Y3MvY2hhbmdlbG9nLnJzdApAQCAtMCwwICsxLDMxNCBAQAorPT09PT09PT09PT09PT09PT09PT09
PT09PQorIGltcG9ydGxpYl9tZXRhZGF0YSBORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09
CisKK3YyLjEuMAorPT09PT09CisKKyogIzI1MzogV2hlbiBxdWVyeWluZyBmb3IgcGFja2FnZSBt
ZXRhZGF0YSwgdGhlIGxvb2t1cAorICBub3cgaG9ub3JzCisgIGBwYWNrYWdlIG5vcm1hbGl6YXRp
b24gcnVsZXMgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc3BlY2lmaWNhdGlvbnMvcmVj
b3JkaW5nLWluc3RhbGxlZC1wYWNrYWdlcy8+YF8uCisKK3YyLjAuMAorPT09PT09CisKKyogYGBp
bXBvcnRsaWJfbWV0YWRhdGFgYCBubyBsb25nZXIgcHJlc2VudHMgYQorICBgYF9fdmVyc2lvbl9f
YGAgYXR0cmlidXRlLiBDb25zdW1lcnMgd2lzaGluZyB0bworICByZXNvbHZlIHRoZSB2ZXJzaW9u
IG9mIHRoZSBwYWNrYWdlIHNob3VsZCBxdWVyeSBpdAorICBkaXJlY3RseSB3aXRoCisgIGBgaW1w
b3J0bGliX21ldGFkYXRhLnZlcnNpb24oJ2ltcG9ydGxpYi1tZXRhZGF0YScpYGAuCisgIENsb3Nl
cyAjNzEuCisKK3YxLjcuMAorPT09PT09CisKKyogYGBQYXRoTm90Rm91bmRFcnJvcmBgIG5vdyBo
YXMgYSBjdXN0b20gYGBfX3N0cl9fYGAKKyAgbWVudGlvbmluZyAicGFja2FnZSBtZXRhZGF0YSIg
YmVpbmcgbWlzc2luZyB0byBoZWxwCisgIGd1aWRlIHVzZXJzIHRvIHRoZSBjYXVzZSB3aGVuIHRo
ZSBwYWNrYWdlIGlzIGluc3RhbGxlZAorICBidXQgbm8gbWV0YWRhdGEgaXMgcHJlc2VudC4gQ2xv
c2VzICMxMjQuCisKK3YxLjYuMQorPT09PT09CisKKyogQWRkZWQgYGBEaXN0cmlidXRpb24uX2xv
Y2FsKClgYCBhcyBhIHByb3Zpc2lvbmFsCisgIGRlbW9uc3RyYXRpb24gb2YgaG93IHRvIGxvYWQg
bWV0YWRhdGEgZm9yIGEgbG9jYWwKKyAgcGFja2FnZS4gSW1wbGljaXRseSByZXF1aXJlcyB0aGF0
CisgIGBwZXA1MTcgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9wZXA1MTc+YF8gaXMKKyAgaW5z
dGFsbGVkLiBSZWYgIzQyLgorKiBFbnN1cmUgaW5wdXRzIHRvIEZhc3RQYXRoIGFyZSBVbmljb2Rl
LiBDbG9zZXMgIzEyMS4KKyogVGVzdHMgbm93IHJlbHkgb24gYGBpbXBvcnRsaWIucmVzb3VyY2Vz
LmZpbGVzYGAgKGFuZAorICBiYWNrcG9ydCkgaW5zdGVhZCBvZiB0aGUgb2xkZXIgYGBwYXRoYGAg
ZnVuY3Rpb24uCisqIFN1cHBvcnQgYW55IGl0ZXJhYmxlIGZyb20gYGBmaW5kX2Rpc3RyaWJ1dGlv
bnNgYC4KKyAgQ2xvc2VzICMxMjIuCisKK3YxLjYuMAorPT09PT09CisKKyogQWRkZWQgYGBtb2R1
bGVgYCBhbmQgYGBhdHRyYGAgYXR0cmlidXRlcyB0byBgYEVudHJ5UG9pbnRgYAorCit2MS41LjIK
Kz09PT09PQorCisqIEZpeCByZWR1bmRhbnQgZW50cmllcyBmcm9tIGBgRmFzdFBhdGguemlwX2No
aWxkcmVuYGAuCisgIENsb3NlcyAjMTE3LgorCit2MS41LjEKKz09PT09PQorCisqIEltcHJvdmUg
cmVsaWFiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGNvbXBhdGliaWxpdHkKKyAgaW1wb3J0cyBm
b3IgY29udGV4dGxpYiBhbmQgcGF0aGxpYiB3aGVuIHJ1bm5pbmcgdGVzdHMuCisgIENsb3NlcyAj
MTE2LgorCit2MS41LjAKKz09PT09PQorCisqIEFkZGl0aW9uYWwgcGVyZm9ybWFuY2Ugb3B0aW1p
emF0aW9ucyBpbiBGYXN0UGF0aCBub3cKKyAgc2F2ZXMgYW4gYWRkaXRpb25hbCAyMCUgb24gYSB0
eXBpY2FsIGNhbGwuCisqIENvcnJlY3QgZm9yIGlzc3VlIHdoZXJlIFB5T3hpZGl6ZXIgZmluZGVy
IGhhcyBubworICBgYF9fbW9kdWxlX19gYCBhdHRyaWJ1dGUuIENsb3NlcyAjMTEwLgorCit2MS40
LjAKKz09PT09PQorCisqIFRocm91Z2ggY2FyZWZ1bCBvcHRpbWl6YXRpb24sIGBgZGlzdHJpYnV0
aW9uKClgYCBpcworICAzLTR4IGZhc3Rlci4gVGhhbmtzIHRvIEFudG9ueSBMZWUgZm9yIHRoZQor
ICBjb250cmlidXRpb24uIENsb3NlcyAjOTUuCisKKyogV2hlbiBzZWFyY2hpbmcgdGhyb3VnaCBg
YHN5cy5wYXRoYGAsIGlmIGFueSBlcnJvcgorICBvY2N1cnMgYXR0ZW1wdGluZyB0byBsaXN0IGEg
cGF0aCBlbnRyeSwgdGhhdCBlbnRyeQorICBpcyBza2lwcGVkLCBtYWtpbmcgdGhlIHN5c3RlbSBt
dWNoIG1vcmUgbGVuaWVudAorICB0byBlcnJvcnMuIENsb3NlcyAjOTQuCisKK3YxLjMuMAorPT09
PT09CisKKyogSW1wcm92ZSBjdXN0b20gZmluZGVycyBkb2N1bWVudGF0aW9uLiBDbG9zZXMgIzEw
NS4KKwordjEuMi4wCis9PT09PT0KKworKiBPbmNlIGFnYWluLCBkcm9wIHN1cHBvcnQgZm9yIFB5
dGhvbiAzLjQuIFJlZiAjMTA0LgorCit2MS4xLjMKKz09PT09PQorCisqIFJlc3RvcmVkIHN1cHBv
cnQgZm9yIFB5dGhvbiAzLjQgZHVlIHRvIGltcHJvcGVyIHZlcnNpb24KKyAgY29tcGF0aWJpbGl0
eSBkZWNsYXJhdGlvbnMgaW4gdGhlIHYxLjEuMCBhbmQgdjEuMS4xCisgIHJlbGVhc2VzLiBDbG9z
ZXMgIzEwNC4KKwordjEuMS4yCis9PT09PT0KKworKiBSZXBhaXJlZCBwcm9qZWN0IG1ldGFkYXRh
IHRvIGNvcnJlY3RseSBkZWNsYXJlIHRoZQorICBgYHB5dGhvbl9yZXF1aXJlc2BgIGRpcmVjdGl2
ZS4gQ2xvc2VzICMxMDMuCisKK3YxLjEuMQorPT09PT09CisKKyogRml4ZWQgYGByZXByKEVudHJ5
UG9pbnQpYGAgb24gUHlQeSAzIGFsc28uIENsb3NlcyAjMTAyLgorCit2MS4xLjAKKz09PT09PQor
CisqIERyb3BwZWQgc3VwcG9ydCBmb3IgUHl0aG9uIDMuNC4KKyogRW50cnlQb2ludHMgYXJlIG5v
dyBwaWNrbGVhYmxlLiBDbG9zZXMgIzk2LgorKiBGaXhlZCBgYHJlcHIoRW50cnlQb2ludClgYCBv
biBQeVB5IDIuIENsb3NlcyAjOTcuCisKK3YxLjAuMAorPT09PT09CisKKyogUHJvamVjdCBhZG9w
dHMgc2VtdmVyIGZvciB2ZXJzaW9uaW5nLgorCisqIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBzaGlt
IGludHJvZHVjZWQgaW4gMC4yMy4KKworKiBGb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCB0
aGUgc3RkbGliIGltcGxlbWVudGF0aW9uIGFuZCB0bworICBhdm9pZCB0aGUgc2FtZSBkaXN0cmli
dXRpb25zIGJlaW5nIGRpc2NvdmVyZWQgYnkgdGhlIHN0ZGxpYiBhbmQKKyAgYmFja3BvcnQgaW1w
bGVtZW50YXRpb25zLCB0aGUgYmFja3BvcnQgbm93IGRpc2FibGVzIHRoZQorICBzdGRsaWIgRGlz
dHJpYnV0aW9uRmluZGVyIGR1cmluZyBpbml0aWFsaXphdGlvbiAoaW1wb3J0IHRpbWUpLgorICBD
bG9zZXMgIzkxIGFuZCBjbG9zZXMgIzEwMC4KKworMC4yMworPT09PQorKiBBZGRlZCBhIGNvbXBh
dGliaWxpdHkgc2hpbSB0byBwcmV2ZW50IGZhaWx1cmVzIG9uIGJldGEgcmVsZWFzZXMKKyAgb2Yg
UHl0aG9uIGJlZm9yZSB0aGUgc2lnbmF0dXJlIGNoYW5nZWQgdG8gYWNjZXB0IHRoZQorICAiY29u
dGV4dCIgcGFyYW1ldGVyIG9uIGZpbmRfZGlzdHJpYnV0aW9ucy4gVGhpcyB3b3JrYXJvdW5kCisg
IHdpbGwgaGF2ZSBhIGxpbWl0ZWQgbGlmZXNwYW4sIG5vdCB0byBleHRlbmQgYmV5b25kIHJlbGVh
c2Ugb2YKKyAgUHl0aG9uIDMuOCBmaW5hbC4KKworMC4yMgorPT09PQorKiBSZW5hbWVkIGBgcGFj
a2FnZWBgIHBhcmFtZXRlciB0byBgYGRpc3RyaWJ1dGlvbl9uYW1lYGAKKyAgYXMgYHJlY29tbWVu
ZGVkIDxodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0NjMyI21zZzM0OTQyMz5gXworICBp
biB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogYGBkaXN0cmlidXRpb25gYCwgYGBtZXRhZGF0YWBg
LAorICBgYHZlcnNpb25gYCwgYGBmaWxlc2BgLCBhbmQgYGByZXF1aXJlc2BgLiBUaGlzCisgIGJh
Y2t3YXJkLWluY29tcGF0aWJsZSBjaGFuZ2UgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBsaXR0bGUgaW1w
YWN0CisgIGFzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYXNzdW1lZCB0byBiZSBwcmltYXJpbHkgdXNl
ZCB3aXRoCisgIHBvc2l0aW9uYWwgcGFyYW1ldGVycy4KKworMC4yMQorPT09PQorKiBgYGltcG9y
dGxpYi5tZXRhZGF0YWBgIG5vdyBleHBvc2VzIHRoZSBgYERpc3RyaWJ1dGlvbkZpbmRlcmBgCisg
IG1ldGFjbGFzcyBhbmQgcmVmZXJlbmNlcyBpdCBpbiB0aGUgZG9jcyBmb3IgZXh0ZW5kaW5nIHRo
ZQorICBzZWFyY2ggYWxnb3JpdGhtLgorKiBBZGQgYGBEaXN0cmlidXRpb24uYXRgYCBmb3IgY29u
c3RydWN0aW5nIGEgRGlzdHJpYnV0aW9uIG9iamVjdAorICBmcm9tIGEga25vd24gbWV0YWRhdGEg
ZGlyZWN0b3J5IG9uIHRoZSBmaWxlIHN5c3RlbS4gQ2xvc2VzICM4MC4KKyogRGlzdHJpYnV0aW9u
IGZpbmRlcnMgbm93IHJlY2VpdmUgYSBjb250ZXh0IG9iamVjdCB0aGF0CisgIHN1cHBsaWVzIGBg
LnBhdGhgYCBhbmQgYGAubmFtZWBgIHByb3BlcnRpZXMuIFRoaXMgY2hhbmdlCisgIGludHJvZHVj
ZXMgYSBmdW5kYW1lbnRhbCBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHkgZm9yCisgIGFueSBwcm9q
ZWN0cyBpbXBsZW1lbnRpbmcgYSBgYGZpbmRfZGlzdHJpYnV0aW9uc2BgIG1ldGhvZAorICBvbiBh
IGBgTWV0YVBhdGhGaW5kZXJgYC4gVGhpcyBuZXcgbGF5ZXIgb2YgYWJzdHJhY3Rpb24KKyAgYWxs
b3dzIHRoaXMgY29udGV4dCB0byBiZSBzdXBwbGllZCBkaXJlY3RseSBvciBjb25zdHJ1Y3RlZAor
ICBvbiBkZW1hbmQgYW5kIG9wZW5zIHRoZSBvcHBvcnR1bml0eSBmb3IgYQorICBgYGZpbmRfZGlz
dHJpYnV0aW9uc2BgIG1ldGhvZCB0byBzb2xpY2l0IGFkZGl0aW9uYWwKKyAgY29udGV4dCBmcm9t
IHRoZSBjYWxsZXIuIENsb3NlcyAjODUuCisKKzAuMjAKKz09PT0KKyogQ2xhcmlmeSBpbiB0aGUg
ZG9jcyB0aGF0IGNhbGxzIHRvIGBgLmZpbGVzYGAgY291bGQgcmV0dXJuCisgIGBgTm9uZWBgIHdo
ZW4gdGhlIG1ldGFkYXRhIGlzIG5vdCBwcmVzZW50LiBDbG9zZXMgIzY5LgorKiBSZXR1cm4gYWxs
IHJlcXVpcmVtZW50cyBhbmQgbm90IGp1c3QgdGhlIGZpcnN0IGZvciBkaXN0LWluZm8KKyAgcGFj
a2FnZXMuIENsb3NlcyAjNjcuCisKKzAuMTkKKz09PT0KKyogUmVzdHJhaW4gb3Zlci1lYWdlciBl
Z2cgbWV0YWRhdGEgcmVzb2x1dGlvbi4KKyogQWRkIHN1cHBvcnQgZm9yIGVudHJ5IHBvaW50cyB3
aXRoIGNvbG9ucyBpbiB0aGUgbmFtZS4gQ2xvc2VzICM3NS4KKworMC4xOAorPT09PQorKiBQYXJz
ZSBlbnRyeSBwb2ludHMgY2FzZSBzZW5zaXRpdmVseS4gIENsb3NlcyAjNjgKKyogQWRkIGEgdmVy
c2lvbiBjb25zdHJhaW50IG9uIHRoZSBiYWNrcG9ydCBjb25maWdwYXJzZXIgcGFja2FnZS4gIENs
b3NlcyAjNjYKKworMC4xNworPT09PQorKiBGaXggYSBwZXJtaXNzaW9uIHByb2JsZW0gaW4gdGhl
IHRlc3RzIG9uIFdpbmRvd3MuCisKKzAuMTYKKz09PT0KKyogRG9uJ3QgY3Jhc2ggaWYgdGhlcmUg
ZXhpc3RzIGFuIEVHRy1JTkZPIGRpcmVjdG9yeSBvbiBzeXMucGF0aC4KKworMC4xNQorPT09PQor
KiBGaXggZG9jdW1lbnRhdGlvbi4KKworMC4xNAorPT09PQorKiBSZW1vdmVkIGBgbG9jYWxfZGlz
dHJpYnV0aW9uYGAgZnVuY3Rpb24gZnJvbSB0aGUgQVBJLgorICAqKlRoaXMgYmFja3dhcmQtaW5j
b21wYXRpYmxlIGNoYW5nZSByZW1vdmVzIHRoaXMKKyAgYmVoYXZpb3Igc3VtbWFyaWx5KiouIFBy
b2plY3RzIHNob3VsZCByZW1vdmUgdGhlaXIKKyAgcmVsaWFuY2Ugb24gdGhpcyBiZWhhdmlvci4g
QSByZXBsYWNlbWVudCBiZWhhdmlvciBpcworICB1bmRlciByZXZpZXcgaW4gdGhlIGBwZXA1MTcg
cHJvamVjdAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGVwNTE3PmBfLiBDbG9zZXMgIzQy
LgorCiswLjEzCis9PT09CisqIFVwZGF0ZSBkb2NzdHJpbmdzIHRvIG1hdGNoIFBFUCA4LiBDbG9z
ZXMgIzYzLgorKiBNZXJnZWQgbW9kdWxlcyBpbnRvIG9uZSBtb2R1bGUuIENsb3NlcyAjNjIuCisK
KzAuMTIKKz09PT0KKyogQWRkIHN1cHBvcnQgZm9yIGVnZ3MuICAhNjU7IENsb3NlcyAjMTkuCisK
KzAuMTEKKz09PT0KKyogU3VwcG9ydCBnZW5lcmljIHppcCBmaWxlcyAobm90IGp1c3Qgd2hlZWxz
KS4gIENsb3NlcyAjNTkKKyogU3VwcG9ydCB6aXAgZmlsZXMgd2l0aCBtdWx0aXBsZSBkaXN0cmli
dXRpb25zIGluIHRoZW0uICBDbG9zZXMgIzYwCisqIEZ1bGx5IGV4cG9zZSB0aGUgcHVibGljIEFQ
SSBpbiBgYGltcG9ydGxpYl9tZXRhZGF0YS5fX2FsbF9fYGAuCisKKzAuMTAKKz09PT0KKyogVGhl
IGBgRGlzdHJpYnV0aW9uYGAgQUJDIGlzIG5vdyBvZmZpY2lhbGx5IHBhcnQgb2YgdGhlIHB1Ymxp
YyBBUEkuCisgIENsb3NlcyAjMzcuCisqIEZpeGVkIHN1cHBvcnQgZm9yIG9sZGVyIHNpbmdsZSBm
aWxlIGVnZy1pbmZvIGZvcm1hdHMuICBDbG9zZXMgIzQzLgorKiBGaXhlZCBhIHRlc3RpbmcgYnVn
IHdoZW4gYGAkQ1dEYGAgaGFzIHNwYWNlcyBpbiB0aGUgcGF0aC4gIENsb3NlcyAjNTAuCisqIEFk
ZCBQeXRob24gMy44IHRvIHRoZSBgYHRveGBgIHRlc3RpbmcgbWF0cml4LgorCiswLjkKKz09PQor
KiBGaXhlZCBpc3N1ZSB3aGVyZSBlbnRyeSBwb2ludHMgd2l0aG91dCBhbiBhdHRyaWJ1dGUgd291
bGQgcmFpc2UgYW4KKyAgRXhjZXB0aW9uLiAgQ2xvc2VzICM0MC4KKyogUmVtb3ZlZCB1bnVzZWQg
YGBuYW1lYGAgcGFyYW1ldGVyIGZyb20gYGBlbnRyeV9wb2ludHMoKWBgLiBDbG9zZXMgIzQ0Lgor
KiBgYERpc3RyaWJ1dGlvbkZpbmRlcmBgIGNsYXNzZXMgbXVzdCBub3cgYmUgaW5zdGFudGlhdGVk
IGJlZm9yZQorICBiZWluZyBwbGFjZWQgb24gYGBzeXMubWV0YV9wYXRoYGAuCisKKzAuOAorPT09
CisqIFRoaXMgbGlicmFyeSBjYW4gbm93IGRpc2NvdmVyL2VudW1lcmF0ZSBhbGwgaW5zdGFsbGVk
IHBhY2thZ2VzLiAqKlRoaXMKKyAgYmFja3dhcmQtaW5jb21wYXRpYmxlIGNoYW5nZSBhbHRlcnMg
dGhlIHByb3RvY29sIGZpbmRlcnMgbXVzdAorICBpbXBsZW1lbnQgdG8gc3VwcG9ydCBkaXN0cmli
dXRpb24gcGFja2FnZSBkaXNjb3ZlcnkuKiogQ2xvc2VzICMyNC4KKyogVGhlIHNpZ25hdHVyZSBv
ZiBgYGZpbmRfZGlzdHJpYnV0aW9ucygpYGAgb24gY3VzdG9tIGluc3RhbGxlciBmaW5kZXJzCisg
IHNob3VsZCBub3cgYWNjZXB0IHR3byBwYXJhbWV0ZXJzLCBgYG5hbWVgYCBhbmQgYGBwYXRoYGAg
YW5kCisgIHRoZXNlIHBhcmFtZXRlcnMgbXVzdCBzdXBwbHkgZGVmYXVsdHMuCisqIFRoZSBgYGVu
dHJ5X3BvaW50cygpYGAgbWV0aG9kIG5vIGxvbmdlciBhY2NlcHRzIGEgcGFja2FnZSBuYW1lCisg
IGJ1dCBpbnN0ZWFkIHJldHVybnMgYWxsIGVudHJ5IHBvaW50cyBpbiBhIGRpY3Rpb25hcnkga2V5
ZWQgYnkgdGhlCisgIGBgRW50cnlQb2ludC5ncm91cGBgLiBUaGUgYGByZXNvbHZlYGAgbWV0aG9k
IGhhcyBiZWVuIHJlbW92ZWQuIEluc3RlYWQsCisgIGNhbGwgYGBFbnRyeVBvaW50LmxvYWQoKWBg
LCB3aGljaCBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCisgIGBgcGtnX3Jlc291cmNlc2BgIGFu
ZCBgYGVudHJ5cG9pbnRzYGAuICAqKlRoaXMgaXMgYSBiYWNrd2FyZCBpbmNvbXBhdGlibGUKKyAg
Y2hhbmdlLioqCisqIE1ldGFkYXRhIGlzIG5vdyBhbHdheXMgcmV0dXJuZWQgYXMgVW5pY29kZSB0
ZXh0IHJlZ2FyZGxlc3Mgb2YKKyAgUHl0aG9uIHZlcnNpb24uIENsb3NlcyAjMjkuCisqIFRoaXMg
bGlicmFyeSBjYW4gbm93IGRpc2NvdmVyIG1ldGFkYXRhIGZvciBhICdsb2NhbCcgcGFja2FnZSAo
Zm91bmQKKyAgaW4gdGhlIGN1cnJlbnQtd29ya2luZyBkaXJlY3RvcnkpLiBDbG9zZXMgIzI3Lgor
KiBBZGRlZCBgYGZpbGVzKClgYCBmdW5jdGlvbiBmb3IgcmVzb2x2aW5nIGZpbGVzIGZyb20gYSBk
aXN0cmlidXRpb24uCisqIEFkZGVkIGEgbmV3IGBgcmVxdWlyZXMoKWBgIGZ1bmN0aW9uLCB3aGlj
aCByZXR1cm5zIHRoZSByZXF1aXJlbWVudHMKKyAgZm9yIGEgcGFja2FnZSBzdWl0YWJsZSBmb3Ig
cGFyc2luZyBieQorICBgYHBhY2thZ2luZy5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRgYC4gQ2xv
c2VzICMxOC4KKyogVGhlIHRvcC1sZXZlbCBgYHJlYWRfdGV4dCgpYGAgZnVuY3Rpb24gaGFzIGJl
ZW4gcmVtb3ZlZC4gIFVzZQorICBgYFBhY2thZ2VQYXRoLnJlYWRfdGV4dCgpYGAgb24gaW5zdGFu
Y2VzIHJldHVybmVkIGJ5IHRoZSBgYGZpbGVzKClgYAorICBmdW5jdGlvbi4gICoqVGhpcyBpcyBh
IGJhY2t3YXJkIGluY29tcGF0aWJsZSBjaGFuZ2UuKioKKyogUmVsZWFzZSBkYXRlcyBhcmUgbm93
IGF1dG9tYXRpY2FsbHkgaW5qZWN0ZWQgaW50byB0aGUgY2hhbmdlbG9nCisgIGJhc2VkIG9uIFND
TSB0YWdzLgorCiswLjcKKz09PQorKiBGaXhlZCBpc3N1ZSB3aGVyZSBwYWNrYWdlcyB3aXRoIGRh
c2hlcyBpbiB0aGVpciBuYW1lcyB3b3VsZAorICBub3QgYmUgZGlzY292ZXJlZC4gQ2xvc2VzICMy
MS4KKyogRGlzdHJpYnV0aW9uIGxvb2t1cCBpcyBub3cgY2FzZS1pbnNlbnNpdGl2ZS4gQ2xvc2Vz
ICMyMC4KKyogV2hlZWwgZGlzdHJpYnV0aW9ucyBjYW4gbm8gbG9uZ2VyIGJlIGRpc2NvdmVyZWQg
YnkgdGhlaXIgbW9kdWxlCisgIG5hbWUuIExpa2UgUGF0aCBkaXN0cmlidXRpb25zLCB0aGV5IG11
c3QgYmUgaW5kaWNhdGVkIGJ5IHRoZWlyCisgIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIG5hbWUuCisK
KzAuNgorPT09CisqIFJlbW92ZWQgYGBpbXBvcnRsaWJfbWV0YWRhdGEuZGlzdHJpYnV0aW9uYGAg
ZnVuY3Rpb24uIE5vdworICB0aGUgcHVibGljIGludGVyZmFjZSBpcyBwcmltYXJpbHkgdGhlIHV0
aWxpdHkgZnVuY3Rpb25zIGV4cG9zZWQKKyAgaW4gYGBpbXBvcnRsaWJfbWV0YWRhdGEuX19hbGxf
X2BgLiBDbG9zZXMgIzE0LgorKiBBZGRlZCB0d28gbmV3IHV0aWxpdHkgZnVuY3Rpb25zIGBgcmVh
ZF90ZXh0YGAgYW5kCisgIGBgbWV0YWRhdGFgYC4KKworMC41Cis9PT0KKyogVXBkYXRlZCBSRUFE
TUUgYW5kIHJlbW92ZWQgZGV0YWlscyBhYm91dCBEaXN0cmlidXRpb24KKyAgY2xhc3MsIG5vdyBj
b25zaWRlcmVkIHByaXZhdGUuIENsb3NlcyAjMTUuCisqIEFkZGVkIHRlc3Qgc3VpdGUgc3VwcG9y
dCBmb3IgUHl0aG9uIDMuNCsuCisqIEZpeGVkIFN5bnRheEVycm9ycyBvbiBQeXRob24gMy40IGFu
ZCAzLjUuICExMgorKiBGaXhlZCBlcnJvcnMgb24gV2luZG93cyBqb2luaW5nIFBhdGggZWxlbWVu
dHMuICExNQorCiswLjQKKz09PQorKiBIb3VzZWtlZXBpbmcuCisKKzAuMworPT09CisqIEFkZGVk
IHVzYWdlIGRvY3VtZW50YXRpb24uICBDbG9zZXMgIzgKKyogQWRkIHN1cHBvcnQgZm9yIGdldHRp
bmcgbWV0YWRhdGEgZnJvbSB3aGVlbHMgb24gYGBzeXMucGF0aGBgLiAgQ2xvc2VzICM5CisKKzAu
MgorPT09CisqIEFkZGVkIGBgaW1wb3J0bGliX21ldGFkYXRhLmVudHJ5X3BvaW50cygpYGAuICBD
bG9zZXMgIzEKKyogQWRkZWQgYGBpbXBvcnRsaWJfbWV0YWRhdGEucmVzb2x2ZSgpYGAuICBDbG9z
ZXMgIzEyCisqIEFkZCBzdXBwb3J0IGZvciBQeXRob24gMi43LiAgQ2xvc2VzICM0CisKKzAuMQor
PT09CisqIEluaXRpYWwgcmVsZWFzZS4KKworCisuLgorICAgTG9jYWwgVmFyaWFibGVzOgorICAg
bW9kZTogY2hhbmdlLWxvZy1tb2RlCisgICBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAgIHNlbnRl
bmNlLWVuZC1kb3VibGUtc3BhY2U6IHQKKyAgIGZpbGwtY29sdW1uOiA3OAorICAgY29kaW5nOiB1
dGYtOAorICAgRW5kOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9j
b25mLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9jb25mLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTI5YTdhNGVhZWQxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9jb25mLnB5CkBAIC0wLDAgKzEsMTg1
IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIwor
IyBpbXBvcnRsaWJfbWV0YWRhdGEgZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZp
bGUsIGNyZWF0ZWQgYnkKKyMgc3BoaW54LXF1aWNrc3RhcnQgb24gVGh1IE5vdiAzMCAxMDoyMTow
MCAyMDE3LgorIworIyBUaGlzIGZpbGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBk
aXJlY3Rvcnkgc2V0IHRvIGl0cworIyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5v
dCBhbGwgcG9zc2libGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcwor
IyBhdXRvZ2VuZXJhdGVkIGZpbGUuCisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZl
IGEgZGVmYXVsdDsgdmFsdWVzIHRoYXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hv
dyB0aGUgZGVmYXVsdC4KKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50
IHdpdGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGly
ZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0
byB0aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2Ug
aXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KKyMKKyMgaW1wb3J0IG9zCisjIGltcG9ydCBz
eXMKKyMgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aCgnLicpKQorCisKKyMgLS0g
R2VuZXJhbCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjIElmIHlvdXIgZG9jdW1lbnRhdGlvbiBuZWVkcyBhIG1pbmltYWwg
U3BoaW54IHZlcnNpb24sIHN0YXRlIGl0IGhlcmUuCisjCisjIG5lZWRzX3NwaGlueCA9ICcxLjAn
CisKKyMgQWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJp
bmdzLiBUaGV5IGNhbiBiZQorIyBleHRlbnNpb25zIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQg
J3NwaGlueC5leHQuKicpIG9yIHlvdXIgY3VzdG9tCisjIG9uZXMuCitleHRlbnNpb25zID0gWwor
ICAgICdyc3QubGlua2VyJywKKyAgICAnc3BoaW54LmV4dC5hdXRvZG9jJywKKyAgICAnc3BoaW54
LmV4dC5jb3ZlcmFnZScsCisgICAgJ3NwaGlueC5leHQuZG9jdGVzdCcsCisgICAgJ3NwaGlueC5l
eHQuaW50ZXJzcGhpbngnLAorICAgICdzcGhpbnguZXh0LnZpZXdjb2RlJywKKyAgICBdCisKKyMg
QWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LgordGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBz
dWZmaXgoZXMpIG9mIHNvdXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBs
ZSBzdWZmaXggYXMgYSBsaXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJz
dCcsICcubWQnXQorc291cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJl
ZSBkb2N1bWVudC4KK21hc3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgcHJvamVjdC4KK3Byb2plY3QgPSAnaW1wb3J0bGliX21ldGFkYXRhJworY29w
eXJpZ2h0ID0gJzIwMTctMjAxOSwgSmFzb24gUi4gQ29vbWJzLCBCYXJyeSBXYXJzYXcnCithdXRo
b3IgPSAnSmFzb24gUi4gQ29vbWJzLCBCYXJyeSBXYXJzYXcnCisKKyMgVGhlIHZlcnNpb24gaW5m
byBmb3IgdGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50
IGZvcgorIyB8dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3Ro
ZXIgcGxhY2VzIHRocm91Z2hvdXQgdGhlCisjIGJ1aWx0IGRvY3VtZW50cy4KKyMKKyMgVGhlIHNo
b3J0IFguWSB2ZXJzaW9uLgordmVyc2lvbiA9ICcwLjEnCisjIFRoZSBmdWxsIHZlcnNpb24sIGlu
Y2x1ZGluZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCityZWxlYXNlID0gJzAuMScKKworIyBUaGUgbGFu
Z3VhZ2UgZm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBTcGhpbnguIFJlZmVyIHRvIGRvY3Vt
ZW50YXRpb24KKyMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgorIworIyBUaGlz
IGlzIGFsc28gdXNlZCBpZiB5b3UgZG8gY29udGVudCB0cmFuc2xhdGlvbiB2aWEgZ2V0dGV4dCBj
YXRhbG9ncy4KKyMgVXN1YWxseSB5b3Ugc2V0ICJsYW5ndWFnZSIgZnJvbSB0aGUgY29tbWFuZCBs
aW5lIGZvciB0aGVzZSBjYXNlcy4KK2xhbmd1YWdlID0gTm9uZQorCisjIExpc3Qgb2YgcGF0dGVy
bnMsIHJlbGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMgYW5kCisj
IGRpcmVjdG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcy4KKyMg
VGhpcyBwYXR0ZXJucyBhbHNvIGVmZmVjdCB0byBodG1sX3N0YXRpY19wYXRoIGFuZCBodG1sX2V4
dHJhX3BhdGgKK2V4Y2x1ZGVfcGF0dGVybnMgPSBbJ19idWlsZCcsICdUaHVtYnMuZGInLCAnLkRT
X1N0b3JlJ10KKworIyBUaGUgbmFtZSBvZiB0aGUgUHlnbWVudHMgKHN5bnRheCBoaWdobGlnaHRp
bmcpIHN0eWxlIHRvIHVzZS4KK3B5Z21lbnRzX3N0eWxlID0gJ3NwaGlueCcKKworIyBJZiB0cnVl
LCBgdG9kb2AgYW5kIGB0b2RvTGlzdGAgcHJvZHVjZSBvdXRwdXQsIGVsc2UgdGhleSBwcm9kdWNl
IG5vdGhpbmcuCit0b2RvX2luY2x1ZGVfdG9kb3MgPSBGYWxzZQorCisKKyMgLS0gT3B0aW9ucyBm
b3IgSFRNTCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjIFRoZSB0aGVtZSB0byB1c2UgZm9yIEhUTUwgYW5kIEhUTUwgSGVscCBwYWdlcy4g
IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKKyMgYSBsaXN0IG9mIGJ1aWx0aW4gdGhlbWVzLgor
IworaHRtbF90aGVtZSA9ICdkZWZhdWx0JworCisjIEN1c3RvbSBzaWRlYmFyIHRlbXBsYXRlcywg
bXVzdCBiZSBhIGRpY3Rpb25hcnkgdGhhdCBtYXBzIGRvY3VtZW50IG5hbWVzCisjIHRvIHRlbXBs
YXRlIG5hbWVzLgorIworIyBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgYWxhYmFzdGVyIHRoZW1l
CisjIHJlZnM6IGh0dHA6Ly9hbGFiYXN0ZXIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2luc3Rh
bGxhdGlvbi5odG1sI3NpZGViYXJzCitodG1sX3NpZGViYXJzID0geworICAgICcqKic6IFsKKyAg
ICAgICAgJ3JlbGF0aW9ucy5odG1sJywgICMgbmVlZHMgJ3Nob3dfcmVsYXRlZCc6IFRydWUgdGhl
bWUgb3B0aW9uIHRvIGRpc3BsYXkKKyAgICAgICAgJ3NlYXJjaGJveC5odG1sJywKKyAgICAgICAg
XQorICAgIH0KKworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUxIZWxwIG91dHB1dCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPdXRwdXQgZmlsZSBiYXNlIG5h
bWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFzZW5hbWUgPSAnaW1wb3J0bGli
X21ldGFkYXRhZG9jJworCisKKyMgLS0gT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsYXRleF9lbGVtZW50cyA9
IHsKKyAgICAjIFRoZSBwYXBlciBzaXplICgnbGV0dGVycGFwZXInIG9yICdhNHBhcGVyJykuCisg
ICAgIworICAgICMgJ3BhcGVyc2l6ZSc6ICdsZXR0ZXJwYXBlcicsCisKKyAgICAjIFRoZSBmb250
IHNpemUgKCcxMHB0JywgJzExcHQnIG9yICcxMnB0JykuCisgICAgIworICAgICMgJ3BvaW50c2l6
ZSc6ICcxMHB0JywKKworICAgICMgQWRkaXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFt
YmxlLgorICAgICMKKyAgICAjICdwcmVhbWJsZSc6ICcnLAorCisgICAgIyBMYXRleCBmaWd1cmUg
KGZsb2F0KSBhbGlnbm1lbnQKKyAgICAjCisgICAgIyAnZmlndXJlX2FsaWduJzogJ2h0YnAnLAor
ICAgIH0KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVzLiBM
aXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwK
KyMgIGF1dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwgb3Igb3duIGNsYXNzXSku
CitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdpbXBvcnRsaWJfbWV0YWRh
dGEudGV4JywKKyAgICAgJ2ltcG9ydGxpYlxcX21ldGFkYXRhIERvY3VtZW50YXRpb24nLAorICAg
ICAnQnJldHQgQ2Fubm9uLCBCYXJyeSBXYXJzYXcnLCAnbWFudWFsJyksCisgICAgXQorCisKKyMg
LS0gT3B0aW9ucyBmb3IgbWFudWFsIHBhZ2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2Yg
dHVwbGVzCisjIChzb3VyY2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMs
IG1hbnVhbCBzZWN0aW9uKS4KK21hbl9wYWdlcyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2ltcG9y
dGxpYl9tZXRhZGF0YScsICdpbXBvcnRsaWJfbWV0YWRhdGEgRG9jdW1lbnRhdGlvbicsCisgICAg
IFthdXRob3JdLCAxKQorICAgIF0KKworCisjIC0tIE9wdGlvbnMgZm9yIFRleGluZm8gb3V0cHV0
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBHcm91cGlu
ZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIFRleGluZm8gZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisj
IChzb3VyY2Ugc3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsCisjICBkaXIg
bWVudSBlbnRyeSwgZGVzY3JpcHRpb24sIGNhdGVnb3J5KQordGV4aW5mb19kb2N1bWVudHMgPSBb
CisgICAgKG1hc3Rlcl9kb2MsICdpbXBvcnRsaWJfbWV0YWRhdGEnLCAnaW1wb3J0bGliX21ldGFk
YXRhIERvY3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdpbXBvcnRsaWJfbWV0YWRhdGEnLCAn
T25lIGxpbmUgZGVzY3JpcHRpb24gb2YgcHJvamVjdC4nLAorICAgICAnTWlzY2VsbGFuZW91cycp
LAorICAgIF0KKworCisjIEV4YW1wbGUgY29uZmlndXJhdGlvbiBmb3IgaW50ZXJzcGhpbng6IHJl
ZmVyIHRvIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeS4KK2ludGVyc3BoaW54X21hcHBpbmcg
PSB7CisgICAgJ3B5dGhvbic6ICgnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMycsIE5vbmUpLAor
ICAgICdpbXBvcnRsaWJfcmVzb3VyY2VzJzogKAorICAgICAgICAnaHR0cHM6Ly9pbXBvcnRsaWIt
cmVzb3VyY2VzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8nLCBOb25lCisgICAgICAgICksCisg
ICAgfQorCisKKyMgRm9yIHJzdC5saW5rZXIsIGluamVjdCByZWxlYXNlIGRhdGVzIGludG8gY2hh
bmdlbG9nLnJzdAorbGlua19maWxlcyA9IHsKKyAgICAnY2hhbmdlbG9nLnJzdCc6IGRpY3QoCisg
ICAgICAgIHJlcGxhY2U9WworICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBwYXR0
ZXJuPXInXig/bSkoKD9QPHNjbV92ZXJzaW9uPnY/XGQrKFwuXGQrKXsxLDJ9KSlcblstPV0rXG4n
LAorICAgICAgICAgICAgICAgIHdpdGhfc2NtPSd7dGV4dH1cbntyZXZbdGltZXN0YW1wXTolWS0l
bS0lZH1cblxuJywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAg
KSwKKyAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL2luZGV4
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3MvaW5kZXgucnN0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTczMzJmNWU4ZDExCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9pbmRleC5yc3QKQEAgLTAsMCArMSw1
MiBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIFdlbGNvbWUgdG8gaW1wb3J0
bGliX21ldGFkYXRhCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2BgaW1wb3J0
bGliX21ldGFkYXRhYGAgaXMgYSBsaWJyYXJ5IHdoaWNoIHByb3ZpZGVzIGFuIEFQSSBmb3IgYWNj
ZXNzaW5nIGFuCitpbnN0YWxsZWQgcGFja2FnZSdzIG1ldGFkYXRhIChzZWUgOnBlcDpgNTY2YCks
IHN1Y2ggYXMgaXRzIGVudHJ5IHBvaW50cyBvciBpdHMgdG9wLWxldmVsCituYW1lLiAgVGhpcyBm
dW5jdGlvbmFsaXR5IGludGVuZHMgdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YgYGBwa2dfcmVzb3Vy
Y2VzYGAKK2BlbnRyeSBwb2ludCBBUElgXyBhbmQgYG1ldGFkYXRhIEFQSWBfLiAgQWxvbmcgd2l0
aCA6bW9kOmBpbXBvcnRsaWIucmVzb3VyY2VzYCBpbgorUHl0aG9uIDMuNyBhbmQgbmV3ZXIgKGJh
Y2twb3J0ZWQgYXMgOmRvYzpgaW1wb3J0bGliX3Jlc291cmNlcyA8aW1wb3J0bGliX3Jlc291cmNl
czppbmRleD5gIGZvciBvbGRlcgordmVyc2lvbnMgb2YgUHl0aG9uKSwgdGhpcyBjYW4gZWxpbWlu
YXRlIHRoZSBuZWVkIHRvIHVzZSB0aGUgb2xkZXIgYW5kIGxlc3MKK2VmZmljaWVudCBgYHBrZ19y
ZXNvdXJjZXNgYCBwYWNrYWdlLgorCitgYGltcG9ydGxpYl9tZXRhZGF0YWBgIHN1cHBsaWVzIGEg
YmFja3BvcnQgb2YKKzpkb2M6YGltcG9ydGxpYi5tZXRhZGF0YSA8bGlicmFyeS9pbXBvcnRsaWIu
bWV0YWRhdGE+YCBhcyBmb3VuZCBpbgorUHl0aG9uIDMuOCBhbmQgbGF0ZXIgZm9yIGVhcmxpZXIg
UHl0aG9uIHJlbGVhc2VzLiAgVXNlcnMgb2YKK1B5dGhvbiAzLjggYW5kIGJleW9uZCBhcmUgZW5j
b3VyYWdlZCB0byB1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlCit3aGVuIHBvc3NpYmxl
IGFuZCBmYWxsIGJhY2sgdG8gYGBpbXBvcnRsaWJfbWV0YWRhdGFgYCB3aGVuIG5lY2Vzc2FyeS4K
K1doZW4gaW1wb3J0ZWQgb24gUHl0aG9uIDMuOCBhbmQgbGF0ZXIsIGBgaW1wb3J0bGliX21ldGFk
YXRhYGAgcmVwbGFjZXMgdGhlCitEaXN0cmlidXRpb25GaW5kZXIgYmVoYXZpb3IgZnJvbSB0aGUg
c3RkbGliLCBidXQgbGVhdmVzIHRoZSBBUEkgaW4gdGFjdC4KK0RldmVsb3BlcnMgbG9va2luZyBm
b3IgZGV0YWlsZWQgQVBJIGRlc2NyaXB0aW9ucyBzaG91bGQgcmVmZXIgdG8gdGhlIFB5dGhvbgor
My44IHN0YW5kYXJkIGxpYnJhcnkgZG9jdW1lbnRhdGlvbi4KKworVGhlIGRvY3VtZW50YXRpb24g
aGVyZSBpbmNsdWRlcyBhIGdlbmVyYWwgOnJlZjpgdXNhZ2UgPHVzaW5nPmAgZ3VpZGUuCisKKwor
Li4gdG9jdHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKyAgIDpjYXB0aW9uOiBDb250ZW50czoKKwor
ICAgdXNpbmcucnN0CisgICBjaGFuZ2Vsb2cgKGxpbmtzKS5yc3QKKworCitQcm9qZWN0IGRldGFp
bHMKKz09PT09PT09PT09PT09PQorCisgKiBQcm9qZWN0IGhvbWU6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBSZXBvcnQgYnVncyBhdDogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGhvbi9pbXBvcnRsaWJfbWV0YWRhdGEvaXNzdWVzCisgKiBDb2RlIGhvc3Rp
bmc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vaW1wb3J0bGliX21ldGFkYXRhCisgKiBEb2N1
bWVudGF0aW9uOiBodHRwczovL2ltcG9ydGxpYl9tZXRhZGF0YS5yZWFkdGhlZG9jcy5pby8KKwor
CitJbmRpY2VzIGFuZCB0YWJsZXMKKz09PT09PT09PT09PT09PT09PQorCisqIDpyZWY6YGdlbmlu
ZGV4YAorKiA6cmVmOmBtb2RpbmRleGAKKyogOnJlZjpgc2VhcmNoYAorCisKKy4uIF9gZW50cnkg
cG9pbnQgQVBJYDogaHR0cHM6Ly9zZXR1cHRvb2xzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9w
a2dfcmVzb3VyY2VzLmh0bWwjZW50cnktcG9pbnRzCisuLiBfYG1ldGFkYXRhIEFQSWA6IGh0dHBz
Oi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGtnX3Jlc291cmNlcy5odG1s
I21ldGFkYXRhLWFwaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy91
c2luZy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL3VzaW5nLnJzdApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExOTY1MTQ3ZjQ1YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2RvY3MvdXNpbmcucnN0CkBAIC0wLDAg
KzEsMjYwIEBACisuLiBfdXNpbmc6CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorIFVzaW5nIDptb2Q6YCFpbXBvcnRsaWJfbWV0YWRhdGFgCis9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKworYGBpbXBvcnRsaWJfbWV0YWRhdGFgYCBpcyBhIGxpYnJhcnkgdGhh
dCBwcm92aWRlcyBmb3IgYWNjZXNzIHRvIGluc3RhbGxlZAorcGFja2FnZSBtZXRhZGF0YS4gIEJ1
aWx0IGluIHBhcnQgb24gUHl0aG9uJ3MgaW1wb3J0IHN5c3RlbSwgdGhpcyBsaWJyYXJ5CitpbnRl
bmRzIHRvIHJlcGxhY2Ugc2ltaWxhciBmdW5jdGlvbmFsaXR5IGluIHRoZSBgZW50cnkgcG9pbnQK
K0FQSWBfIGFuZCBgbWV0YWRhdGEgQVBJYF8gb2YgYGBwa2dfcmVzb3VyY2VzYGAuICBBbG9uZyB3
aXRoCis6bW9kOmBpbXBvcnRsaWIucmVzb3VyY2VzYCBpbiBQeXRob24gMy43CithbmQgbmV3ZXIg
KGJhY2twb3J0ZWQgYXMgOmRvYzpgaW1wb3J0bGliX3Jlc291cmNlcyA8aW1wb3J0bGliX3Jlc291
cmNlczppbmRleD5gIGZvciBvbGRlciB2ZXJzaW9ucyBvZgorUHl0aG9uKSwgdGhpcyBjYW4gZWxp
bWluYXRlIHRoZSBuZWVkIHRvIHVzZSB0aGUgb2xkZXIgYW5kIGxlc3MgZWZmaWNpZW50CitgYHBr
Z19yZXNvdXJjZXNgYCBwYWNrYWdlLgorCitCeSAiaW5zdGFsbGVkIHBhY2thZ2UiIHdlIGdlbmVy
YWxseSBtZWFuIGEgdGhpcmQtcGFydHkgcGFja2FnZSBpbnN0YWxsZWQgaW50bworUHl0aG9uJ3Mg
YGBzaXRlLXBhY2thZ2VzYGAgZGlyZWN0b3J5IHZpYSB0b29scyBzdWNoIGFzIGBwaXAKKzxodHRw
czovL3B5cGkub3JnL3Byb2plY3QvcGlwLz5gXy4gIFNwZWNpZmljYWxseSwKK2l0IG1lYW5zIGEg
cGFja2FnZSB3aXRoIGVpdGhlciBhIGRpc2NvdmVyYWJsZSBgYGRpc3QtaW5mb2BgIG9yIGBgZWdn
LWluZm9gYAorZGlyZWN0b3J5LCBhbmQgbWV0YWRhdGEgZGVmaW5lZCBieSA6cGVwOmA1NjZgIG9y
IGl0cyBvbGRlciBzcGVjaWZpY2F0aW9ucy4KK0J5IGRlZmF1bHQsIHBhY2thZ2UgbWV0YWRhdGEg
Y2FuIGxpdmUgb24gdGhlIGZpbGUgc3lzdGVtIG9yIGluIHppcCBhcmNoaXZlcyBvbgorOmRhdGE6
YHN5cy5wYXRoYC4gIFRocm91Z2ggYW4gZXh0ZW5zaW9uIG1lY2hhbmlzbSwgdGhlIG1ldGFkYXRh
IGNhbiBsaXZlIGFsbW9zdAorYW55d2hlcmUuCisKKworT3ZlcnZpZXcKKz09PT09PT09CisKK0xl
dCdzIHNheSB5b3Ugd2FudGVkIHRvIGdldCB0aGUgdmVyc2lvbiBzdHJpbmcgZm9yIGEgcGFja2Fn
ZSB5b3UndmUgaW5zdGFsbGVkCit1c2luZyBgYHBpcGBgLiAgV2Ugc3RhcnQgYnkgY3JlYXRpbmcg
YSB2aXJ0dWFsIGVudmlyb25tZW50IGFuZCBpbnN0YWxsaW5nCitzb21ldGhpbmcgaW50byBpdDo6
CisKKyAgICAkIHB5dGhvbjMgLW0gdmVudiBleGFtcGxlCisgICAgJCBzb3VyY2UgZXhhbXBsZS9i
aW4vYWN0aXZhdGUKKyAgICAoZXhhbXBsZSkgJCBwaXAgaW5zdGFsbCBpbXBvcnRsaWJfbWV0YWRh
dGEKKyAgICAoZXhhbXBsZSkgJCBwaXAgaW5zdGFsbCB3aGVlbAorCitZb3UgY2FuIGdldCB0aGUg
dmVyc2lvbiBzdHJpbmcgZm9yIGBgd2hlZWxgYCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmc6Ogor
CisgICAgKGV4YW1wbGUpICQgcHl0aG9uCisgICAgPj4+IGZyb20gaW1wb3J0bGliX21ldGFkYXRh
IGltcG9ydCB2ZXJzaW9uCisgICAgPj4+IHZlcnNpb24oJ3doZWVsJykKKyAgICAnMC4zMi4zJwor
CitZb3UgY2FuIGFsc28gZ2V0IHRoZSBzZXQgb2YgZW50cnkgcG9pbnRzIGtleWVkIGJ5IGdyb3Vw
LCBzdWNoIGFzCitgYGNvbnNvbGVfc2NyaXB0c2BgLCBgYGRpc3R1dGlscy5jb21tYW5kc2BgIGFu
ZCBvdGhlcnMuICBFYWNoIGdyb3VwIGNvbnRhaW5zIGEKK3NlcXVlbmNlIG9mIDpyZWY6YEVudHJ5
UG9pbnQgPGVudHJ5LXBvaW50cz5gIG9iamVjdHMuCisKK1lvdSBjYW4gZ2V0IHRoZSA6cmVmOmBt
ZXRhZGF0YSBmb3IgYSBkaXN0cmlidXRpb24gPG1ldGFkYXRhPmA6OgorCisgICAgPj4+IGxpc3Qo
bWV0YWRhdGEoJ3doZWVsJykpCisgICAgWydNZXRhZGF0YS1WZXJzaW9uJywgJ05hbWUnLCAnVmVy
c2lvbicsICdTdW1tYXJ5JywgJ0hvbWUtcGFnZScsICdBdXRob3InLCAnQXV0aG9yLWVtYWlsJywg
J01haW50YWluZXInLCAnTWFpbnRhaW5lci1lbWFpbCcsICdMaWNlbnNlJywgJ1Byb2plY3QtVVJM
JywgJ1Byb2plY3QtVVJMJywgJ1Byb2plY3QtVVJMJywgJ0tleXdvcmRzJywgJ1BsYXRmb3JtJywg
J0NsYXNzaWZpZXInLCAnQ2xhc3NpZmllcicsICdDbGFzc2lmaWVyJywgJ0NsYXNzaWZpZXInLCAn
Q2xhc3NpZmllcicsICdDbGFzc2lmaWVyJywgJ0NsYXNzaWZpZXInLCAnQ2xhc3NpZmllcicsICdD
bGFzc2lmaWVyJywgJ0NsYXNzaWZpZXInLCAnQ2xhc3NpZmllcicsICdDbGFzc2lmaWVyJywgJ1Jl
cXVpcmVzLVB5dGhvbicsICdQcm92aWRlcy1FeHRyYScsICdSZXF1aXJlcy1EaXN0JywgJ1JlcXVp
cmVzLURpc3QnXQorCitZb3UgY2FuIGFsc28gZ2V0IGEgOnJlZjpgZGlzdHJpYnV0aW9uJ3MgdmVy
c2lvbiBudW1iZXIgPHZlcnNpb24+YCwgbGlzdCBpdHMKKzpyZWY6YGNvbnN0aXR1ZW50IGZpbGVz
IDxmaWxlcz5gLCBhbmQgZ2V0IGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9uJ3MKKzpyZWY6YHJl
cXVpcmVtZW50c2AuCisKKworRnVuY3Rpb25hbCBBUEkKKz09PT09PT09PT09PT09CisKK1RoaXMg
cGFja2FnZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgdmlhIGl0cyBwdWJs
aWMgQVBJLgorCisKKy4uIF9lbnRyeS1wb2ludHM6CisKK0VudHJ5IHBvaW50cworLS0tLS0tLS0t
LS0tCisKK1RoZSBgYGVudHJ5X3BvaW50cygpYGAgZnVuY3Rpb24gcmV0dXJucyBhIGRpY3Rpb25h
cnkgb2YgYWxsIGVudHJ5IHBvaW50cywKK2tleWVkIGJ5IGdyb3VwLiAgRW50cnkgcG9pbnRzIGFy
ZSByZXByZXNlbnRlZCBieSBgYEVudHJ5UG9pbnRgYCBpbnN0YW5jZXM7CitlYWNoIGBgRW50cnlQ
b2ludGBgIGhhcyBhIGBgLm5hbWVgYCwgYGAuZ3JvdXBgYCwgYW5kIGBgLnZhbHVlYGAgYXR0cmli
dXRlcyBhbmQKK2EgYGAubG9hZCgpYGAgbWV0aG9kIHRvIHJlc29sdmUgdGhlIHZhbHVlLiAgVGhl
cmUgYXJlIGFsc28gYGAubW9kdWxlYGAsCitgYC5hdHRyYGAsIGFuZCBgYC5leHRyYXNgYCBhdHRy
aWJ1dGVzIGZvciBnZXR0aW5nIHRoZSBjb21wb25lbnRzIG9mIHRoZQorYGAudmFsdWVgYCBhdHRy
aWJ1dGU6OgorCisgICAgPj4+IGVwcyA9IGVudHJ5X3BvaW50cygpCisgICAgPj4+IGxpc3QoZXBz
KQorICAgIFsnY29uc29sZV9zY3JpcHRzJywgJ2Rpc3R1dGlscy5jb21tYW5kcycsICdkaXN0dXRp
bHMuc2V0dXBfa2V5d29yZHMnLCAnZWdnX2luZm8ud3JpdGVycycsICdzZXR1cHRvb2xzLmluc3Rh
bGxhdGlvbiddCisgICAgPj4+IHNjcmlwdHMgPSBlcHNbJ2NvbnNvbGVfc2NyaXB0cyddCisgICAg
Pj4+IHdoZWVsID0gW2VwIGZvciBlcCBpbiBzY3JpcHRzIGlmIGVwLm5hbWUgPT0gJ3doZWVsJ11b
MF0KKyAgICA+Pj4gd2hlZWwKKyAgICBFbnRyeVBvaW50KG5hbWU9J3doZWVsJywgdmFsdWU9J3do
ZWVsLmNsaTptYWluJywgZ3JvdXA9J2NvbnNvbGVfc2NyaXB0cycpCisgICAgPj4+IHdoZWVsLm1v
ZHVsZQorICAgICd3aGVlbC5jbGknCisgICAgPj4+IHdoZWVsLmF0dHIKKyAgICAnbWFpbicKKyAg
ICA+Pj4gd2hlZWwuZXh0cmFzCisgICAgW10KKyAgICA+Pj4gbWFpbiA9IHdoZWVsLmxvYWQoKQor
ICAgID4+PiBtYWluCisgICAgPGZ1bmN0aW9uIG1haW4gYXQgMHgxMDM1Mjg0ODg+CisKK1RoZSBg
YGdyb3VwYGAgYW5kIGBgbmFtZWBgIGFyZSBhcmJpdHJhcnkgdmFsdWVzIGRlZmluZWQgYnkgdGhl
IHBhY2thZ2UgYXV0aG9yCithbmQgdXN1YWxseSBhIGNsaWVudCB3aWxsIHdpc2ggdG8gcmVzb2x2
ZSBhbGwgZW50cnkgcG9pbnRzIGZvciBhIHBhcnRpY3VsYXIKK2dyb3VwLiAgUmVhZCBgdGhlIHNl
dHVwdG9vbHMgZG9jcworPGh0dHBzOi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRl
c3Qvc2V0dXB0b29scy5odG1sI2R5bmFtaWMtZGlzY292ZXJ5LW9mLXNlcnZpY2VzLWFuZC1wbHVn
aW5zPmBfCitmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBlbnRyeSBwb2ludHMsIHRoZWlyIGRlZmlu
aXRpb24sIGFuZCB1c2FnZS4KKworCisuLiBfbWV0YWRhdGE6CisKK0Rpc3RyaWJ1dGlvbiBtZXRh
ZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0V2ZXJ5IGRpc3RyaWJ1dGlvbiBpbmNsdWRl
cyBzb21lIG1ldGFkYXRhLCB3aGljaCB5b3UgY2FuIGV4dHJhY3QgdXNpbmcgdGhlCitgYG1ldGFk
YXRhKClgYCBmdW5jdGlvbjo6CisKKyAgICA+Pj4gd2hlZWxfbWV0YWRhdGEgPSBtZXRhZGF0YSgn
d2hlZWwnKQorCitUaGUga2V5cyBvZiB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUgWyNmMV1f
IG5hbWUgdGhlIG1ldGFkYXRhIGtleXdvcmRzLCBhbmQKK3RoZWlyIHZhbHVlcyBhcmUgcmV0dXJu
ZWQgdW5wYXJzZWQgZnJvbSB0aGUgZGlzdHJpYnV0aW9uIG1ldGFkYXRhOjoKKworICAgID4+PiB3
aGVlbF9tZXRhZGF0YVsnUmVxdWlyZXMtUHl0aG9uJ10KKyAgICAnPj0yLjcsICE9My4wLiosICE9
My4xLiosICE9My4yLiosICE9My4zLionCisKKworLi4gX3ZlcnNpb246CisKK0Rpc3RyaWJ1dGlv
biB2ZXJzaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBgYHZlcnNpb24oKWBgIGZ1
bmN0aW9uIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gZ2V0IGEgZGlzdHJpYnV0aW9uJ3MgdmVyc2lv
bgorbnVtYmVyLCBhcyBhIHN0cmluZzo6CisKKyAgICA+Pj4gdmVyc2lvbignd2hlZWwnKQorICAg
ICcwLjMyLjMnCisKKworLi4gX2ZpbGVzOgorCitEaXN0cmlidXRpb24gZmlsZXMKKy0tLS0tLS0t
LS0tLS0tLS0tLQorCitZb3UgY2FuIGFsc28gZ2V0IHRoZSBmdWxsIHNldCBvZiBmaWxlcyBjb250
YWluZWQgd2l0aGluIGEgZGlzdHJpYnV0aW9uLiAgVGhlCitgYGZpbGVzKClgYCBmdW5jdGlvbiB0
YWtlcyBhIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIG5hbWUgYW5kIHJldHVybnMgYWxsIG9mIHRoZQor
ZmlsZXMgaW5zdGFsbGVkIGJ5IHRoaXMgZGlzdHJpYnV0aW9uLiAgRWFjaCBmaWxlIG9iamVjdCBy
ZXR1cm5lZCBpcyBhCitgYFBhY2thZ2VQYXRoYGAsIGEgOmNsYXNzOmBwYXRobGliLlBhdGhgIGRl
cml2ZWQgb2JqZWN0IHdpdGggYWRkaXRpb25hbCBgYGRpc3RgYCwKK2Bgc2l6ZWBgLCBhbmQgYGBo
YXNoYGAgcHJvcGVydGllcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIG1ldGFkYXRhLiAgRm9yIGV4YW1w
bGU6OgorCisgICAgPj4+IHV0aWwgPSBbcCBmb3IgcCBpbiBmaWxlcygnd2hlZWwnKSBpZiAndXRp
bC5weScgaW4gc3RyKHApXVswXQorICAgID4+PiB1dGlsCisgICAgUGFja2FnZVBhdGgoJ3doZWVs
L3V0aWwucHknKQorICAgID4+PiB1dGlsLnNpemUKKyAgICA4NTkKKyAgICA+Pj4gdXRpbC5kaXN0
CisgICAgPGltcG9ydGxpYl9tZXRhZGF0YS5faG9va3MuUGF0aERpc3RyaWJ1dGlvbiBvYmplY3Qg
YXQgMHgxMDFlMGNlZjA+CisgICAgPj4+IHV0aWwuaGFzaAorICAgIDxGaWxlSGFzaCBtb2RlOiBz
aGEyNTYgdmFsdWU6IGJZa3c1b01jY2ZhelZDb1lRd0tra2Vtb1Z5TUFGb1IzNG1tS0J4OFIxTkk+
CisKK09uY2UgeW91IGhhdmUgdGhlIGZpbGUsIHlvdSBjYW4gYWxzbyByZWFkIGl0cyBjb250ZW50
czo6CisKKyAgICA+Pj4gcHJpbnQodXRpbC5yZWFkX3RleHQoKSkKKyAgICBpbXBvcnQgYmFzZTY0
CisgICAgaW1wb3J0IHN5cworICAgIC4uLgorICAgIGRlZiBhc19ieXRlcyhzKToKKyAgICAgICAg
aWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHMuZW5jb2Rl
KCd1dGYtOCcpCisgICAgICAgIHJldHVybiBzCisKK0luIHRoZSBjYXNlIHdoZXJlIHRoZSBtZXRh
ZGF0YSBmaWxlIGxpc3RpbmcgZmlsZXMKKyhSRUNPUkQgb3IgU09VUkNFUy50eHQpIGlzIG1pc3Np
bmcsIGBgZmlsZXMoKWBgIHdpbGwKK3JldHVybiBgYE5vbmVgYC4gVGhlIGNhbGxlciBtYXkgd2lz
aCB0byB3cmFwIGNhbGxzIHRvCitgYGZpbGVzKClgYCBpbiBgYWx3YXlzX2l0ZXJhYmxlCis8aHR0
cHM6Ly9tb3JlLWl0ZXJ0b29scy5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvYXBpLmh0bWwjbW9y
ZV9pdGVydG9vbHMuYWx3YXlzX2l0ZXJhYmxlPmBfCitvciBvdGhlcndpc2UgZ3VhcmQgYWdhaW5z
dCB0aGlzIGNvbmRpdGlvbiBpZiB0aGUgdGFyZ2V0CitkaXN0cmlidXRpb24gaXMgbm90IGtub3du
IHRvIGhhdmUgdGhlIG1ldGFkYXRhIHByZXNlbnQuCisKKy4uIF9yZXF1aXJlbWVudHM6CisKK0Rp
c3RyaWJ1dGlvbiByZXF1aXJlbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8g
Z2V0IHRoZSBmdWxsIHNldCBvZiByZXF1aXJlbWVudHMgZm9yIGEgZGlzdHJpYnV0aW9uLCB1c2Ug
dGhlIGBgcmVxdWlyZXMoKWBgCitmdW5jdGlvbjo6CisKKyAgICA+Pj4gcmVxdWlyZXMoJ3doZWVs
JykKKyAgICBbInB5dGVzdCAoPj0zLjAuMCkgOyBleHRyYSA9PSAndGVzdCciLCAicHl0ZXN0LWNv
diA7IGV4dHJhID09ICd0ZXN0JyJdCisKKworRGlzdHJpYnV0aW9ucworPT09PT09PT09PT09PQor
CitXaGlsZSB0aGUgYWJvdmUgQVBJIGlzIHRoZSBtb3N0IGNvbW1vbiBhbmQgY29udmVuaWVudCB1
c2FnZSwgeW91IGNhbiBnZXQgYWxsCitvZiB0aGF0IGluZm9ybWF0aW9uIGZyb20gdGhlIGBgRGlz
dHJpYnV0aW9uYGAgY2xhc3MuICBBIGBgRGlzdHJpYnV0aW9uYGAgaXMgYW4KK2Fic3RyYWN0IG9i
amVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIG1ldGFkYXRhIGZvciBhIFB5dGhvbiBwYWNrYWdlLiAg
WW91IGNhbgorZ2V0IHRoZSBgYERpc3RyaWJ1dGlvbmBgIGluc3RhbmNlOjoKKworICAgID4+PiBm
cm9tIGltcG9ydGxpYl9tZXRhZGF0YSBpbXBvcnQgZGlzdHJpYnV0aW9uCisgICAgPj4+IGRpc3Qg
PSBkaXN0cmlidXRpb24oJ3doZWVsJykKKworVGh1cywgYW4gYWx0ZXJuYXRpdmUgd2F5IHRvIGdl
dCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgdGhyb3VnaCB0aGUKK2BgRGlzdHJpYnV0aW9uYGAgaW5z
dGFuY2U6OgorCisgICAgPj4+IGRpc3QudmVyc2lvbgorICAgICcwLjMyLjMnCisKK1RoZXJlIGFy
ZSBhbGwga2luZHMgb2YgYWRkaXRpb25hbCBtZXRhZGF0YSBhdmFpbGFibGUgb24gdGhlIGBgRGlz
dHJpYnV0aW9uYGAKK2luc3RhbmNlOjoKKworICAgID4+PiBkLm1ldGFkYXRhWydSZXF1aXJlcy1Q
eXRob24nXQorICAgICc+PTIuNywgIT0zLjAuKiwgIT0zLjEuKiwgIT0zLjIuKiwgIT0zLjMuKicK
KyAgICA+Pj4gZC5tZXRhZGF0YVsnTGljZW5zZSddCisgICAgJ01JVCcKKworVGhlIGZ1bGwgc2V0
IG9mIGF2YWlsYWJsZSBtZXRhZGF0YSBpcyBub3QgZGVzY3JpYmVkIGhlcmUuICBTZWUgOnBlcDpg
NTY2YAorZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworCitFeHRlbmRpbmcgdGhlIHNlYXJjaCBh
bGdvcml0aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCZWNhdXNlIHBhY2th
Z2UgbWV0YWRhdGEgaXMgbm90IGF2YWlsYWJsZSB0aHJvdWdoIDpkYXRhOmBzeXMucGF0aGAgc2Vh
cmNoZXMsIG9yCitwYWNrYWdlIGxvYWRlcnMgZGlyZWN0bHksIHRoZSBtZXRhZGF0YSBmb3IgYSBw
YWNrYWdlIGlzIGZvdW5kIHRocm91Z2ggaW1wb3J0CitzeXN0ZW0gYGZpbmRlcnNgXy4gIFRvIGZp
bmQgYSBkaXN0cmlidXRpb24gcGFja2FnZSdzIG1ldGFkYXRhLAorYGBpbXBvcnRsaWIubWV0YWRh
dGFgYCBxdWVyaWVzIHRoZSBsaXN0IG9mIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBw
YXRoIGZpbmRlcj5gIG9uCis6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuCisKK0J5IGRlZmF1bHQgYGBp
bXBvcnRsaWJfbWV0YWRhdGFgYCBpbnN0YWxscyBhIGZpbmRlciBmb3IgZGlzdHJpYnV0aW9uIHBh
Y2thZ2VzCitmb3VuZCBvbiB0aGUgZmlsZSBzeXN0ZW0uICBUaGlzIGZpbmRlciBkb2Vzbid0IGFj
dHVhbGx5IGZpbmQgYW55ICpwYWNrYWdlcyosCitidXQgaXQgY2FuIGZpbmQgdGhlIHBhY2thZ2Vz
JyBtZXRhZGF0YS4KKworVGhlIGFic3RyYWN0IGNsYXNzIDpweTpjbGFzczpgaW1wb3J0bGliLmFi
Yy5NZXRhUGF0aEZpbmRlcmAgZGVmaW5lcyB0aGUKK2ludGVyZmFjZSBleHBlY3RlZCBvZiBmaW5k
ZXJzIGJ5IFB5dGhvbidzIGltcG9ydCBzeXN0ZW0uCitgYGltcG9ydGxpYl9tZXRhZGF0YWBgIGV4
dGVuZHMgdGhpcyBwcm90b2NvbCBieSBsb29raW5nIGZvciBhbiBvcHRpb25hbAorYGBmaW5kX2Rp
c3RyaWJ1dGlvbnNgYCBjYWxsYWJsZSBvbiB0aGUgZmluZGVycyBmcm9tCis6ZGF0YTpgc3lzLm1l
dGFfcGF0aGAgYW5kIHByZXNlbnRzIHRoaXMgZXh0ZW5kZWQgaW50ZXJmYWNlIGFzIHRoZQorYGBE
aXN0cmlidXRpb25GaW5kZXJgYCBhYnN0cmFjdCBiYXNlIGNsYXNzLCB3aGljaCBkZWZpbmVzIHRo
aXMgYWJzdHJhY3QKK21ldGhvZDo6CisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVm
IGZpbmRfZGlzdHJpYnV0aW9ucyhjb250ZXh0PURpc3RyaWJ1dGlvbkZpbmRlci5Db250ZXh0KCkp
OgorICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmFibGUgb2YgYWxsIERpc3RyaWJ1dGlvbiBpbnN0
YW5jZXMgY2FwYWJsZSBvZgorICAgICAgICBsb2FkaW5nIHRoZSBtZXRhZGF0YSBmb3IgcGFja2Fn
ZXMgZm9yIHRoZSBpbmRpY2F0ZWQgYGBjb250ZXh0YGAuCisgICAgICAgICIiIgorCitUaGUgYGBE
aXN0cmlidXRpb25GaW5kZXIuQ29udGV4dGBgIG9iamVjdCBwcm92aWRlcyBgYC5wYXRoYGAgYW5k
IGBgLm5hbWVgYAorcHJvcGVydGllcyBpbmRpY2F0aW5nIHRoZSBwYXRoIHRvIHNlYXJjaCBhbmQg
bmFtZSB0byBtYXRjaCBhbmQgbWF5CitzdXBwbHkgb3RoZXIgcmVsZXZhbnQgY29udGV4dC4KKwor
V2hhdCB0aGlzIG1lYW5zIGluIHByYWN0aWNlIGlzIHRoYXQgdG8gc3VwcG9ydCBmaW5kaW5nIGRp
c3RyaWJ1dGlvbiBwYWNrYWdlCittZXRhZGF0YSBpbiBsb2NhdGlvbnMgb3RoZXIgdGhhbiB0aGUg
ZmlsZSBzeXN0ZW0sIHN1YmNsYXNzCitgYERpc3RyaWJ1dGlvbmBgIGFuZCBpbXBsZW1lbnQgdGhl
IGFic3RyYWN0IG1ldGhvZHMuIFRoZW4gZnJvbQorYSBjdXN0b20gZmluZGVyLCByZXR1cm4gaW5z
dGFuY2VzIG9mIHRoaXMgZGVyaXZlZCBgYERpc3RyaWJ1dGlvbmBgIGluIHRoZQorYGBmaW5kX2Rp
c3RyaWJ1dGlvbnMoKWBgIG1ldGhvZC4KKworCisuLiBfYGVudHJ5IHBvaW50IEFQSWA6IGh0dHBz
Oi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGtnX3Jlc291cmNlcy5odG1s
I2VudHJ5LXBvaW50cworLi4gX2BtZXRhZGF0YSBBUElgOiBodHRwczovL3NldHVwdG9vbHMucmVh
ZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3BrZ19yZXNvdXJjZXMuaHRtbCNtZXRhZGF0YS1hcGkKKy4u
IF9gZmluZGVyc2A6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvcmVmZXJlbmNlL2ltcG9ydC5o
dG1sI2ZpbmRlcnMtYW5kLWxvYWRlcnMKKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4g
WyNmMV0gVGVjaG5pY2FsbHksIHRoZSByZXR1cm5lZCBkaXN0cmlidXRpb24gbWV0YWRhdGEgb2Jq
ZWN0IGlzIGFuCisgICAgICAgICA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAor
ICAgICAgICAgaW5zdGFuY2UsIGJ1dCB0aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwg
YW5kIG5vdCBwYXJ0IG9mIHRoZQorICAgICAgICAgc3RhYmxlIEFQSS4gIFlvdSBzaG91bGQgb25s
eSB1c2UgZGljdGlvbmFyeS1saWtlIG1ldGhvZHMgYW5kIHN5bnRheAorICAgICAgICAgdG8gYWNj
ZXNzIHRoZSBtZXRhZGF0YSBjb250ZW50cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ1Y2JjMmQwM2M0MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weQpAQCAt
MCwwICsxLDYyNyBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzLCBh
YnNvbHV0ZV9pbXBvcnQKKworaW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0
IGFiYworaW1wb3J0IGNzdgoraW1wb3J0IHN5cworaW1wb3J0IHppcHAKK2ltcG9ydCBvcGVyYXRv
cgoraW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHBvc2l4cGF0aAor
aW1wb3J0IGNvbGxlY3Rpb25zCisKK2Zyb20gLl9jb21wYXQgaW1wb3J0ICgKKyAgICBpbnN0YWxs
LAorICAgIE51bGxGaW5kZXIsCisgICAgQ29uZmlnUGFyc2VyLAorICAgIHN1cHByZXNzLAorICAg
IG1hcCwKKyAgICBGaWxlTm90Rm91bmRFcnJvciwKKyAgICBJc0FEaXJlY3RvcnlFcnJvciwKKyAg
ICBOb3RBRGlyZWN0b3J5RXJyb3IsCisgICAgUGVybWlzc2lvbkVycm9yLAorICAgIHBhdGhsaWIs
CisgICAgTW9kdWxlTm90Rm91bmRFcnJvciwKKyAgICBNZXRhUGF0aEZpbmRlciwKKyAgICBlbWFp
bF9tZXNzYWdlX2Zyb21fc3RyaW5nLAorICAgIFB5UHlfcmVwciwKKyAgICB1bmlxdWVfb3JkZXJl
ZCwKKyAgICBzdHIsCisgICAgKQorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUK
K2Zyb20gaXRlcnRvb2xzIGltcG9ydCBzdGFybWFwCisKKworX19tZXRhY2xhc3NfXyA9IHR5cGUK
KworCitfX2FsbF9fID0gWworICAgICdEaXN0cmlidXRpb24nLAorICAgICdEaXN0cmlidXRpb25G
aW5kZXInLAorICAgICdQYWNrYWdlTm90Rm91bmRFcnJvcicsCisgICAgJ2Rpc3RyaWJ1dGlvbics
CisgICAgJ2Rpc3RyaWJ1dGlvbnMnLAorICAgICdlbnRyeV9wb2ludHMnLAorICAgICdmaWxlcycs
CisgICAgJ21ldGFkYXRhJywKKyAgICAncmVxdWlyZXMnLAorICAgICd2ZXJzaW9uJywKKyAgICBd
CisKKworY2xhc3MgUGFja2FnZU5vdEZvdW5kRXJyb3IoTW9kdWxlTm90Rm91bmRFcnJvcik6Cisg
ICAgIiIiVGhlIHBhY2thZ2Ugd2FzIG5vdCBmb3VuZC4iIiIKKworICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgorICAgICAgICB0bXBsID0gIk5vIHBhY2thZ2UgbWV0YWRhdGEgd2FzIGZvdW5kIGZvciB7
c2VsZi5uYW1lfSIKKyAgICAgICAgcmV0dXJuIHRtcGwuZm9ybWF0KCoqbG9jYWxzKCkpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgbmFtZSwgPSBzZWxmLmFy
Z3MKKyAgICAgICAgcmV0dXJuIG5hbWUKKworCitjbGFzcyBFbnRyeVBvaW50KAorICAgICAgICBQ
eVB5X3JlcHIsCisgICAgICAgIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ0VudHJ5UG9pbnRCYXNl
JywgJ25hbWUgdmFsdWUgZ3JvdXAnKSk6CisgICAgIiIiQW4gZW50cnkgcG9pbnQgYXMgZGVmaW5l
ZCBieSBQeXRob24gcGFja2FnaW5nIGNvbnZlbnRpb25zLgorCisgICAgU2VlIGB0aGUgcGFja2Fn
aW5nIGRvY3Mgb24gZW50cnkgcG9pbnRzCisgICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5v
cmcvc3BlY2lmaWNhdGlvbnMvZW50cnktcG9pbnRzLz5gXworICAgIGZvciBtb3JlIGluZm9ybWF0
aW9uLgorICAgICIiIgorCisgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoCisgICAgICAgIHInKD9Q
PG1vZHVsZT5bXHcuXSspXHMqJworICAgICAgICByJyg6XHMqKD9QPGF0dHI+W1x3Ll0rKSk/XHMq
JworICAgICAgICByJyg/UDxleHRyYXM+XFsuKlxdKT9ccyokJworICAgICAgICApCisgICAgIiIi
CisgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gZGVzY3JpYmluZyB0aGUgc3ludGF4IGZvciBhbiBl
bnRyeSBwb2ludCwKKyAgICB3aGljaCBtaWdodCBsb29rIGxpa2U6CisKKyAgICAgICAgLSBtb2R1
bGUKKyAgICAgICAgLSBwYWNrYWdlLm1vZHVsZQorICAgICAgICAtIHBhY2thZ2UubW9kdWxlOmF0
dHJpYnV0ZQorICAgICAgICAtIHBhY2thZ2UubW9kdWxlOm9iamVjdC5hdHRyaWJ1dGUKKyAgICAg
ICAgLSBwYWNrYWdlLm1vZHVsZTphdHRyIFtleHRyYTEsIGV4dHJhMl0KKworICAgIE90aGVyIGNv
bWJpbmF0aW9ucyBhcmUgcG9zc2libGUgYXMgd2VsbC4KKworICAgIFRoZSBleHByZXNzaW9uIGlz
IGxlbmllbnQgYWJvdXQgd2hpdGVzcGFjZSBhcm91bmQgdGhlICc6JywKKyAgICBmb2xsb3dpbmcg
dGhlIGF0dHIsIGFuZCBmb2xsb3dpbmcgYW55IGV4dHJhcy4KKyAgICAiIiIKKworICAgIGRlZiBs
b2FkKHNlbGYpOgorICAgICAgICAiIiJMb2FkIHRoZSBlbnRyeSBwb2ludCBmcm9tIGl0cyBkZWZp
bml0aW9uLiBJZiBvbmx5IGEgbW9kdWxlCisgICAgICAgIGlzIGluZGljYXRlZCBieSB0aGUgdmFs
dWUsIHJldHVybiB0aGF0IG1vZHVsZS4gT3RoZXJ3aXNlLAorICAgICAgICByZXR1cm4gdGhlIG5h
bWVkIG9iamVjdC4KKyAgICAgICAgIiIiCisgICAgICAgIG1hdGNoID0gc2VsZi5wYXR0ZXJuLm1h
dGNoKHNlbGYudmFsdWUpCisgICAgICAgIG1vZHVsZSA9IGltcG9ydF9tb2R1bGUobWF0Y2guZ3Jv
dXAoJ21vZHVsZScpKQorICAgICAgICBhdHRycyA9IGZpbHRlcihOb25lLCAobWF0Y2guZ3JvdXAo
J2F0dHInKSBvciAnJykuc3BsaXQoJy4nKSkKKyAgICAgICAgcmV0dXJuIGZ1bmN0b29scy5yZWR1
Y2UoZ2V0YXR0ciwgYXR0cnMsIG1vZHVsZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2R1
bGUoc2VsZik6CisgICAgICAgIG1hdGNoID0gc2VsZi5wYXR0ZXJuLm1hdGNoKHNlbGYudmFsdWUp
CisgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgnbW9kdWxlJykKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBhdHRyKHNlbGYpOgorICAgICAgICBtYXRjaCA9IHNlbGYucGF0dGVybi5tYXRjaChz
ZWxmLnZhbHVlKQorICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2F0dHInKQorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGV4dHJhcyhzZWxmKToKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnBhdHRl
cm4ubWF0Y2goc2VsZi52YWx1ZSkKKyAgICAgICAgcmV0dXJuIGxpc3QocmUuZmluZGl0ZXIocidc
dysnLCBtYXRjaC5ncm91cCgnZXh0cmFzJykgb3IgJycpKQorCisgICAgQGNsYXNzbWV0aG9kCisg
ICAgZGVmIF9mcm9tX2NvbmZpZyhjbHMsIGNvbmZpZyk6CisgICAgICAgIHJldHVybiBbCisgICAg
ICAgICAgICBjbHMobmFtZSwgdmFsdWUsIGdyb3VwKQorICAgICAgICAgICAgZm9yIGdyb3VwIGlu
IGNvbmZpZy5zZWN0aW9ucygpCisgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmln
Lml0ZW1zKGdyb3VwKQorICAgICAgICAgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IF9mcm9tX3RleHQoY2xzLCB0ZXh0KToKKyAgICAgICAgY29uZmlnID0gQ29uZmlnUGFyc2VyKGRl
bGltaXRlcnM9Jz0nKQorICAgICAgICAjIGNhc2Ugc2Vuc2l0aXZlOiBodHRwczovL3N0YWNrb3Zl
cmZsb3cuY29tL3EvMTYxMTc5OS84MTIxODMKKyAgICAgICAgY29uZmlnLm9wdGlvbnhmb3JtID0g
c3RyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZpZy5yZWFkX3N0cmluZyh0ZXh0KQor
ICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIHByYWdtYTogbm9jb3ZlcgorICAgICAg
ICAgICAgIyBQeXRob24gMiBoYXMgbm8gcmVhZF9zdHJpbmcKKyAgICAgICAgICAgIGNvbmZpZy5y
ZWFkZnAoaW8uU3RyaW5nSU8odGV4dCkpCisgICAgICAgIHJldHVybiBFbnRyeVBvaW50Ll9mcm9t
X2NvbmZpZyhjb25maWcpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICBTdXBwbHkgaXRlciBzbyBvbmUgbWF5IGNvbnN0cnVjdCBkaWN0cyBvZiBFbnRyeVBv
aW50cyBlYXNpbHkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXRlcigoc2VsZi5uYW1l
LCBzZWxmKSkKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKAor
ICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18sCisgICAgICAgICAgICAoc2VsZi5uYW1lLCBzZWxm
LnZhbHVlLCBzZWxmLmdyb3VwKSwKKyAgICAgICAgICAgICkKKworCitjbGFzcyBQYWNrYWdlUGF0
aChwYXRobGliLlB1cmVQb3NpeFBhdGgpOgorICAgICIiIkEgcmVmZXJlbmNlIHRvIGEgcGF0aCBp
biBhIHBhY2thZ2UiIiIKKworICAgIGRlZiByZWFkX3RleHQoc2VsZiwgZW5jb2Rpbmc9J3V0Zi04
Jyk6CisgICAgICAgIHdpdGggc2VsZi5sb2NhdGUoKS5vcGVuKGVuY29kaW5nPWVuY29kaW5nKSBh
cyBzdHJlYW06CisgICAgICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWQoKQorCisgICAgZGVmIHJl
YWRfYmluYXJ5KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYubG9jYXRlKCkub3BlbigncmInKSBh
cyBzdHJlYW06CisgICAgICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWQoKQorCisgICAgZGVmIGxv
Y2F0ZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgcGF0aC1saWtlIG9iamVjdCBmb3IgdGhp
cyBwYXRoIiIiCisgICAgICAgIHJldHVybiBzZWxmLmRpc3QubG9jYXRlX2ZpbGUoc2VsZikKKwor
CitjbGFzcyBGaWxlSGFzaDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6CisgICAgICAg
IHNlbGYubW9kZSwgXywgc2VsZi52YWx1ZSA9IHNwZWMucGFydGl0aW9uKCc9JykKKworICAgIGRl
ZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8RmlsZUhhc2ggbW9kZToge30gdmFs
dWU6IHt9PicuZm9ybWF0KHNlbGYubW9kZSwgc2VsZi52YWx1ZSkKKworCitjbGFzcyBEaXN0cmli
dXRpb246CisgICAgIiIiQSBQeXRob24gZGlzdHJpYnV0aW9uIHBhY2thZ2UuIiIiCisKKyAgICBA
YWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRfdGV4dChzZWxmLCBmaWxlbmFtZSk6Cisg
ICAgICAgICIiIkF0dGVtcHQgdG8gbG9hZCBtZXRhZGF0YSBmaWxlIGdpdmVuIGJ5IHRoZSBuYW1l
LgorCisgICAgICAgIDpwYXJhbSBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhl
IGRpc3RyaWJ1dGlvbiBpbmZvLgorICAgICAgICA6cmV0dXJuOiBUaGUgdGV4dCBpZiBmb3VuZCwg
b3RoZXJ3aXNlIE5vbmUuCisgICAgICAgICIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAor
ICAgIGRlZiBsb2NhdGVfZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiCisgICAgICAgIEdp
dmVuIGEgcGF0aCB0byBhIGZpbGUgaW4gdGhpcyBkaXN0cmlidXRpb24sIHJldHVybiBhIHBhdGgK
KyAgICAgICAgdG8gaXQuCisgICAgICAgICIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGZyb21fbmFtZShjbHMsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIERpc3RyaWJ1dGlv
biBmb3IgdGhlIGdpdmVuIHBhY2thZ2UgbmFtZS4KKworICAgICAgICA6cGFyYW0gbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIHRvIHNlYXJjaCBmb3IuCisgICAgICAg
IDpyZXR1cm46IFRoZSBEaXN0cmlidXRpb24gaW5zdGFuY2UgKG9yIHN1YmNsYXNzIHRoZXJlb2Yp
IGZvciB0aGUgbmFtZWQKKyAgICAgICAgICAgIHBhY2thZ2UsIGlmIGZvdW5kLgorICAgICAgICA6
cmFpc2VzIFBhY2thZ2VOb3RGb3VuZEVycm9yOiBXaGVuIHRoZSBuYW1lZCBwYWNrYWdlJ3MgZGlz
dHJpYnV0aW9uCisgICAgICAgICAgICBtZXRhZGF0YSBjYW5ub3QgYmUgZm91bmQuCisgICAgICAg
ICIiIgorICAgICAgICBmb3IgcmVzb2x2ZXIgaW4gY2xzLl9kaXNjb3Zlcl9yZXNvbHZlcnMoKToK
KyAgICAgICAgICAgIGRpc3RzID0gcmVzb2x2ZXIoRGlzdHJpYnV0aW9uRmluZGVyLkNvbnRleHQo
bmFtZT1uYW1lKSkKKyAgICAgICAgICAgIGRpc3QgPSBuZXh0KGl0ZXIoZGlzdHMpLCBOb25lKQor
ICAgICAgICAgICAgaWYgZGlzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZGlzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUGFja2FnZU5vdEZvdW5kRXJy
b3IobmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaXNjb3ZlcihjbHMsICoqa3dh
cmdzKToKKyAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhYmxlIG9mIERpc3RyaWJ1dGlvbiBvYmpl
Y3RzIGZvciBhbGwgcGFja2FnZXMuCisKKyAgICAgICAgUGFzcyBhIGBgY29udGV4dGBgIG9yIHBh
c3Mga2V5d29yZCBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICBhIGNvbnRleHQu
CisKKyAgICAgICAgOmNvbnRleHQ6IEEgYGBEaXN0cmlidXRpb25GaW5kZXIuQ29udGV4dGBgIG9i
amVjdC4KKyAgICAgICAgOnJldHVybjogSXRlcmFibGUgb2YgRGlzdHJpYnV0aW9uIG9iamVjdHMg
Zm9yIGFsbCBwYWNrYWdlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbnRleHQgPSBrd2FyZ3Mu
cG9wKCdjb250ZXh0JywgTm9uZSkKKyAgICAgICAgaWYgY29udGV4dCBhbmQga3dhcmdzOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IGFjY2VwdCBjb250ZXh0IGFuZCBrd2Fy
Z3MiKQorICAgICAgICBjb250ZXh0ID0gY29udGV4dCBvciBEaXN0cmlidXRpb25GaW5kZXIuQ29u
dGV4dCgqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJh
YmxlKAorICAgICAgICAgICAgcmVzb2x2ZXIoY29udGV4dCkKKyAgICAgICAgICAgIGZvciByZXNv
bHZlciBpbiBjbHMuX2Rpc2NvdmVyX3Jlc29sdmVycygpCisgICAgICAgICAgICApCisKKyAgICBA
c3RhdGljbWV0aG9kCisgICAgZGVmIGF0KHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gYSBEaXN0
cmlidXRpb24gZm9yIHRoZSBpbmRpY2F0ZWQgbWV0YWRhdGEgcGF0aAorCisgICAgICAgIDpwYXJh
bSBwYXRoOiBhIHN0cmluZyBvciBwYXRoLWxpa2Ugb2JqZWN0CisgICAgICAgIDpyZXR1cm46IGEg
Y29uY3JldGUgRGlzdHJpYnV0aW9uIGluc3RhbmNlIGZvciB0aGUgcGF0aAorICAgICAgICAiIiIK
KyAgICAgICAgcmV0dXJuIFBhdGhEaXN0cmlidXRpb24ocGF0aGxpYi5QYXRoKHBhdGgpKQorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZGlzY292ZXJfcmVzb2x2ZXJzKCk6CisgICAgICAg
ICIiIlNlYXJjaCB0aGUgbWV0YV9wYXRoIGZvciByZXNvbHZlcnMuIiIiCisgICAgICAgIGRlY2xh
cmVkID0gKAorICAgICAgICAgICAgZ2V0YXR0cihmaW5kZXIsICdmaW5kX2Rpc3RyaWJ1dGlvbnMn
LCBOb25lKQorICAgICAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoCisgICAgICAg
ICAgICApCisgICAgICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgZGVjbGFyZWQpCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgX2xvY2FsKGNscywgcm9vdD0nLicpOgorICAgICAgICBmcm9tIHBl
cDUxNyBpbXBvcnQgYnVpbGQsIG1ldGEKKyAgICAgICAgc3lzdGVtID0gYnVpbGQuY29tcGF0X3N5
c3RlbShyb290KQorICAgICAgICBidWlsZGVyID0gZnVuY3Rvb2xzLnBhcnRpYWwoCisgICAgICAg
ICAgICBtZXRhLmJ1aWxkLAorICAgICAgICAgICAgc291cmNlX2Rpcj1yb290LAorICAgICAgICAg
ICAgc3lzdGVtPXN5c3RlbSwKKyAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIFBhdGhEaXN0
cmlidXRpb24oemlwcC5QYXRoKG1ldGEuYnVpbGRfYXNfemlwKGJ1aWxkZXIpKSkKKworICAgIEBw
cm9wZXJ0eQorICAgIGRlZiBtZXRhZGF0YShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBw
YXJzZWQgbWV0YWRhdGEgZm9yIHRoaXMgRGlzdHJpYnV0aW9uLgorCisgICAgICAgIFRoZSByZXR1
cm5lZCBvYmplY3Qgd2lsbCBoYXZlIGtleXMgdGhhdCBuYW1lIHRoZSB2YXJpb3VzIGJpdHMgb2YK
KyAgICAgICAgbWV0YWRhdGEuICBTZWUgUEVQIDU2NiBmb3IgZGV0YWlscy4KKyAgICAgICAgIiIi
CisgICAgICAgIHRleHQgPSAoCisgICAgICAgICAgICBzZWxmLnJlYWRfdGV4dCgnTUVUQURBVEEn
KQorICAgICAgICAgICAgb3Igc2VsZi5yZWFkX3RleHQoJ1BLRy1JTkZPJykKKyAgICAgICAgICAg
ICMgVGhpcyBsYXN0IGNsYXVzZSBpcyBoZXJlIHRvIHN1cHBvcnQgb2xkIGVnZy1pbmZvIGZpbGVz
LiAgSXRzCisgICAgICAgICAgICAjIGVmZmVjdCBpcyB0byBqdXN0IGVuZCB1cCB1c2luZyB0aGUg
UGF0aERpc3RyaWJ1dGlvbidzIHNlbGYuX3BhdGgKKyAgICAgICAgICAgICMgKHdoaWNoIHBvaW50
cyB0byB0aGUgZWdnLWluZm8gZmlsZSkgYXR0cmlidXRlIHVuY2hhbmdlZC4KKyAgICAgICAgICAg
IG9yIHNlbGYucmVhZF90ZXh0KCcnKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gZW1h
aWxfbWVzc2FnZV9mcm9tX3N0cmluZyh0ZXh0KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZl
cnNpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgJ1ZlcnNpb24nIG1ldGFkYXRhIGZv
ciB0aGUgZGlzdHJpYnV0aW9uIHBhY2thZ2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm1ldGFk
YXRhWydWZXJzaW9uJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbnRyeV9wb2ludHMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBFbnRyeVBvaW50Ll9mcm9tX3RleHQoc2VsZi5yZWFkX3RleHQo
J2VudHJ5X3BvaW50cy50eHQnKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmaWxlcyhzZWxm
KToKKyAgICAgICAgIiIiRmlsZXMgaW4gdGhpcyBkaXN0cmlidXRpb24uCisKKyAgICAgICAgOnJl
dHVybjogTGlzdCBvZiBQYWNrYWdlUGF0aCBmb3IgdGhpcyBkaXN0cmlidXRpb24gb3IgTm9uZQor
CisgICAgICAgIFJlc3VsdCBpcyBgTm9uZWAgaWYgdGhlIG1ldGFkYXRhIGZpbGUgdGhhdCBlbnVt
ZXJhdGVzIGZpbGVzCisgICAgICAgIChpLmUuIFJFQ09SRCBmb3IgZGlzdC1pbmZvIG9yIFNPVVJD
RVMudHh0IGZvciBlZ2ctaW5mbykgaXMKKyAgICAgICAgbWlzc2luZy4KKyAgICAgICAgUmVzdWx0
IG1heSBiZSBlbXB0eSBpZiB0aGUgbWV0YWRhdGEgZXhpc3RzIGJ1dCBpcyBlbXB0eS4KKyAgICAg
ICAgIiIiCisgICAgICAgIGZpbGVfbGluZXMgPSBzZWxmLl9yZWFkX2ZpbGVzX2Rpc3RpbmZvKCkg
b3Igc2VsZi5fcmVhZF9maWxlc19lZ2dpbmZvKCkKKworICAgICAgICBkZWYgbWFrZV9maWxlKG5h
bWUsIGhhc2g9Tm9uZSwgc2l6ZV9zdHI9Tm9uZSk6CisgICAgICAgICAgICByZXN1bHQgPSBQYWNr
YWdlUGF0aChuYW1lKQorICAgICAgICAgICAgcmVzdWx0Lmhhc2ggPSBGaWxlSGFzaChoYXNoKSBp
ZiBoYXNoIGVsc2UgTm9uZQorICAgICAgICAgICAgcmVzdWx0LnNpemUgPSBpbnQoc2l6ZV9zdHIp
IGlmIHNpemVfc3RyIGVsc2UgTm9uZQorICAgICAgICAgICAgcmVzdWx0LmRpc3QgPSBzZWxmCisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgcmV0dXJuIGZpbGVfbGluZXMgYW5k
IGxpc3Qoc3Rhcm1hcChtYWtlX2ZpbGUsIGNzdi5yZWFkZXIoZmlsZV9saW5lcykpKQorCisgICAg
ZGVmIF9yZWFkX2ZpbGVzX2Rpc3RpbmZvKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVh
ZCB0aGUgbGluZXMgb2YgUkVDT1JECisgICAgICAgICIiIgorICAgICAgICB0ZXh0ID0gc2VsZi5y
ZWFkX3RleHQoJ1JFQ09SRCcpCisgICAgICAgIHJldHVybiB0ZXh0IGFuZCB0ZXh0LnNwbGl0bGlu
ZXMoKQorCisgICAgZGVmIF9yZWFkX2ZpbGVzX2VnZ2luZm8oc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICBTT1VSQ0VTLnR4dCBtaWdodCBjb250YWluIGxpdGVyYWwgY29tbWFzLCBzbyB3cmFw
IGVhY2ggbGluZQorICAgICAgICBpbiBxdW90ZXMuCisgICAgICAgICIiIgorICAgICAgICB0ZXh0
ID0gc2VsZi5yZWFkX3RleHQoJ1NPVVJDRVMudHh0JykKKyAgICAgICAgcmV0dXJuIHRleHQgYW5k
IG1hcCgnInt9IicuZm9ybWF0LCB0ZXh0LnNwbGl0bGluZXMoKSkKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiByZXF1aXJlcyhzZWxmKToKKyAgICAgICAgIiIiR2VuZXJhdGVkIHJlcXVpcmVtZW50
cyBzcGVjaWZpZWQgZm9yIHRoaXMgRGlzdHJpYnV0aW9uIiIiCisgICAgICAgIHJlcXMgPSBzZWxm
Ll9yZWFkX2Rpc3RfaW5mb19yZXFzKCkgb3Igc2VsZi5fcmVhZF9lZ2dfaW5mb19yZXFzKCkKKyAg
ICAgICAgcmV0dXJuIHJlcXMgYW5kIGxpc3QocmVxcykKKworICAgIGRlZiBfcmVhZF9kaXN0X2lu
Zm9fcmVxcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWV0YWRhdGEuZ2V0X2FsbCgnUmVx
dWlyZXMtRGlzdCcpCisKKyAgICBkZWYgX3JlYWRfZWdnX2luZm9fcmVxcyhzZWxmKToKKyAgICAg
ICAgc291cmNlID0gc2VsZi5yZWFkX3RleHQoJ3JlcXVpcmVzLnR4dCcpCisgICAgICAgIHJldHVy
biBzb3VyY2UgYW5kIHNlbGYuX2RlcHNfZnJvbV9yZXF1aXJlc190ZXh0KHNvdXJjZSkKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBfZGVwc19mcm9tX3JlcXVpcmVzX3RleHQoY2xzLCBzb3Vy
Y2UpOgorICAgICAgICBzZWN0aW9uX3BhaXJzID0gY2xzLl9yZWFkX3NlY3Rpb25zKHNvdXJjZS5z
cGxpdGxpbmVzKCkpCisgICAgICAgIHNlY3Rpb25zID0geworICAgICAgICAgICAgc2VjdGlvbjog
bGlzdChtYXAob3BlcmF0b3IuaXRlbWdldHRlcignbGluZScpLCByZXN1bHRzKSkKKyAgICAgICAg
ICAgIGZvciBzZWN0aW9uLCByZXN1bHRzIGluCisgICAgICAgICAgICBpdGVydG9vbHMuZ3JvdXBi
eShzZWN0aW9uX3BhaXJzLCBvcGVyYXRvci5pdGVtZ2V0dGVyKCdzZWN0aW9uJykpCisgICAgICAg
ICAgICB9CisgICAgICAgIHJldHVybiBjbHMuX2NvbnZlcnRfZWdnX2luZm9fcmVxc190b19zaW1w
bGVfcmVxcyhzZWN0aW9ucykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3JlYWRfc2Vj
dGlvbnMobGluZXMpOgorICAgICAgICBzZWN0aW9uID0gTm9uZQorICAgICAgICBmb3IgbGluZSBp
biBmaWx0ZXIoTm9uZSwgbGluZXMpOgorICAgICAgICAgICAgc2VjdGlvbl9tYXRjaCA9IHJlLm1h
dGNoKHInXFsoLiopXF0kJywgbGluZSkKKyAgICAgICAgICAgIGlmIHNlY3Rpb25fbWF0Y2g6Cisg
ICAgICAgICAgICAgICAgc2VjdGlvbiA9IHNlY3Rpb25fbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgeWllbGQgbG9jYWxzKCkKKworICAgIEBzdGF0
aWNtZXRob2QKKyAgICBkZWYgX2NvbnZlcnRfZWdnX2luZm9fcmVxc190b19zaW1wbGVfcmVxcyhz
ZWN0aW9ucyk6CisgICAgICAgICIiIgorICAgICAgICBIaXN0b3JpY2FsbHksIHNldHVwdG9vbHMg
d291bGQgc29saWNpdCBhbmQgc3RvcmUgJ2V4dHJhJworICAgICAgICByZXF1aXJlbWVudHMsIGlu
Y2x1ZGluZyB0aG9zZSB3aXRoIGVudmlyb25tZW50IG1hcmtlcnMsCisgICAgICAgIGluIHNlcGFy
YXRlIHNlY3Rpb25zLiBNb3JlIG1vZGVybiB0b29scyBleHBlY3QgZWFjaAorICAgICAgICBkZXBl
bmRlbmN5IHRvIGJlIGRlZmluZWQgc2VwYXJhdGVseSwgd2l0aCBhbnkgcmVsZXZhbnQKKyAgICAg
ICAgZXh0cmFzIGFuZCBlbnZpcm9ubWVudCBtYXJrZXJzIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRo
YXQKKyAgICAgICAgcmVxdWlyZW1lbnQuIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBmb3JtZXIg
dG8gdGhlCisgICAgICAgIGxhdHRlci4gU2VlIF90ZXN0X2RlcHNfZnJvbV9yZXF1aXJlc190ZXh0
IGZvciBhbiBleGFtcGxlLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIG1ha2VfY29uZGl0aW9u
KG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgYW5kICdleHRyYSA9PSAie25hbWV9Iicu
Zm9ybWF0KG5hbWU9bmFtZSkKKworICAgICAgICBkZWYgcGFyc2VfY29uZGl0aW9uKHNlY3Rpb24p
OgorICAgICAgICAgICAgc2VjdGlvbiA9IHNlY3Rpb24gb3IgJycKKyAgICAgICAgICAgIGV4dHJh
LCBzZXAsIG1hcmtlcnMgPSBzZWN0aW9uLnBhcnRpdGlvbignOicpCisgICAgICAgICAgICBpZiBl
eHRyYSBhbmQgbWFya2VyczoKKyAgICAgICAgICAgICAgICBtYXJrZXJzID0gJyh7bWFya2Vyc30p
Jy5mb3JtYXQobWFya2Vycz1tYXJrZXJzKQorICAgICAgICAgICAgY29uZGl0aW9ucyA9IGxpc3Qo
ZmlsdGVyKE5vbmUsIFttYXJrZXJzLCBtYWtlX2NvbmRpdGlvbihleHRyYSldKSkKKyAgICAgICAg
ICAgIHJldHVybiAnOyAnICsgJyBhbmQgJy5qb2luKGNvbmRpdGlvbnMpIGlmIGNvbmRpdGlvbnMg
ZWxzZSAnJworCisgICAgICAgIGZvciBzZWN0aW9uLCBkZXBzIGluIHNlY3Rpb25zLml0ZW1zKCk6
CisgICAgICAgICAgICBmb3IgZGVwIGluIGRlcHM6CisgICAgICAgICAgICAgICAgeWllbGQgZGVw
ICsgcGFyc2VfY29uZGl0aW9uKHNlY3Rpb24pCisKKworY2xhc3MgRGlzdHJpYnV0aW9uRmluZGVy
KE1ldGFQYXRoRmluZGVyKToKKyAgICAiIiIKKyAgICBBIE1ldGFQYXRoRmluZGVyIGNhcGFibGUg
b2YgZGlzY292ZXJpbmcgaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbnMuCisgICAgIiIiCisKKyAgICBj
bGFzcyBDb250ZXh0OgorICAgICAgICAiIiIKKyAgICAgICAgS2V5d29yZCBhcmd1bWVudHMgcHJl
c2VudGVkIGJ5IHRoZSBjYWxsZXIgdG8KKyAgICAgICAgYGBkaXN0cmlidXRpb25zKClgYCBvciBg
YERpc3RyaWJ1dGlvbi5kaXNjb3ZlcigpYGAKKyAgICAgICAgdG8gbmFycm93IHRoZSBzY29wZSBv
ZiBhIHNlYXJjaCBmb3IgZGlzdHJpYnV0aW9ucworICAgICAgICBpbiBhbGwgRGlzdHJpYnV0aW9u
RmluZGVycy4KKworICAgICAgICBFYWNoIERpc3RyaWJ1dGlvbkZpbmRlciBtYXkgZXhwZWN0IGFu
eSBwYXJhbWV0ZXJzCisgICAgICAgIGFuZCBzaG91bGQgYXR0ZW1wdCB0byBob25vciB0aGUgY2Fu
b25pY2FsCisgICAgICAgIHBhcmFtZXRlcnMgZGVmaW5lZCBiZWxvdyB3aGVuIGFwcHJvcHJpYXRl
LgorICAgICAgICAiIiIKKworICAgICAgICBuYW1lID0gTm9uZQorICAgICAgICAiIiIKKyAgICAg
ICAgU3BlY2lmaWMgbmFtZSBmb3Igd2hpY2ggYSBkaXN0cmlidXRpb24gZmluZGVyIHNob3VsZCBt
YXRjaC4KKyAgICAgICAgQSBuYW1lIG9mIGBgTm9uZWBgIG1hdGNoZXMgYWxsIGRpc3RyaWJ1dGlv
bnMuCisgICAgICAgICIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6
CisgICAgICAgICAgICB2YXJzKHNlbGYpLnVwZGF0ZShrd2FyZ3MpCisKKyAgICAgICAgQHByb3Bl
cnR5CisgICAgICAgIGRlZiBwYXRoKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICBUaGUgcGF0aCB0aGF0IGEgZGlzdHJpYnV0aW9uIGZpbmRlciBzaG91bGQgc2VhcmNoLgorCisg
ICAgICAgICAgICBUeXBpY2FsbHkgcmVmZXJzIHRvIFB5dGhvbiBwYWNrYWdlIHBhdGhzIGFuZCBk
ZWZhdWx0cworICAgICAgICAgICAgdG8gYGBzeXMucGF0aGBgLgorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICByZXR1cm4gdmFycyhzZWxmKS5nZXQoJ3BhdGgnLCBzeXMucGF0aCkKKworICAg
IEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9kaXN0cmlidXRpb25zKHNlbGYsIGNv
bnRleHQ9Q29udGV4dCgpKToKKyAgICAgICAgIiIiCisgICAgICAgIEZpbmQgZGlzdHJpYnV0aW9u
cy4KKworICAgICAgICBSZXR1cm4gYW4gaXRlcmFibGUgb2YgYWxsIERpc3RyaWJ1dGlvbiBpbnN0
YW5jZXMgY2FwYWJsZSBvZgorICAgICAgICBsb2FkaW5nIHRoZSBtZXRhZGF0YSBmb3IgcGFja2Fn
ZXMgbWF0Y2hpbmcgdGhlIGBgY29udGV4dGBgLAorICAgICAgICBhIERpc3RyaWJ1dGlvbkZpbmRl
ci5Db250ZXh0IGluc3RhbmNlLgorICAgICAgICAiIiIKKworCitjbGFzcyBGYXN0UGF0aDoKKyAg
ICAiIiIKKyAgICBNaWNyby1vcHRpbWl6ZWQgY2xhc3MgZm9yIHNlYXJjaGluZyBhIHBhdGggZm9y
CisgICAgY2hpbGRyZW4uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6
CisgICAgICAgIHNlbGYucm9vdCA9IHN0cihyb290KQorICAgICAgICBzZWxmLmJhc2UgPSBvcy5w
YXRoLmJhc2VuYW1lKHNlbGYucm9vdCkubG93ZXIoKQorCisgICAgZGVmIGpvaW5wYXRoKHNlbGYs
IGNoaWxkKToKKyAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLnJvb3QsIGNoaWxkKQor
CisgICAgZGVmIGNoaWxkcmVuKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHByZXNzKEV4Y2VwdGlv
bik6CisgICAgICAgICAgICByZXR1cm4gb3MubGlzdGRpcihzZWxmLnJvb3Qgb3IgJycpCisgICAg
ICAgIHdpdGggc3VwcHJlc3MoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnpp
cF9jaGlsZHJlbigpCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIHppcF9jaGlsZHJlbihz
ZWxmKToKKyAgICAgICAgemlwX3BhdGggPSB6aXBwLlBhdGgoc2VsZi5yb290KQorICAgICAgICBu
YW1lcyA9IHppcF9wYXRoLnJvb3QubmFtZWxpc3QoKQorICAgICAgICBzZWxmLmpvaW5wYXRoID0g
emlwX3BhdGguam9pbnBhdGgKKworICAgICAgICByZXR1cm4gdW5pcXVlX29yZGVyZWQoCisgICAg
ICAgICAgICBjaGlsZC5zcGxpdChwb3NpeHBhdGguc2VwLCAxKVswXQorICAgICAgICAgICAgZm9y
IGNoaWxkIGluIG5hbWVzCisgICAgICAgICAgICApCisKKyAgICBkZWYgaXNfZWdnKHNlbGYsIHNl
YXJjaCk6CisgICAgICAgIGJhc2UgPSBzZWxmLmJhc2UKKyAgICAgICAgcmV0dXJuICgKKyAgICAg
ICAgICAgIGJhc2UgPT0gc2VhcmNoLnZlcnNpb25sZXNzX2VnZ19uYW1lCisgICAgICAgICAgICBv
ciBiYXNlLnN0YXJ0c3dpdGgoc2VhcmNoLnByZWZpeCkKKyAgICAgICAgICAgIGFuZCBiYXNlLmVu
ZHN3aXRoKCcuZWdnJykpCisKKyAgICBkZWYgc2VhcmNoKHNlbGYsIG5hbWUpOgorICAgICAgICBm
b3IgY2hpbGQgaW4gc2VsZi5jaGlsZHJlbigpOgorICAgICAgICAgICAgbl9sb3cgPSBjaGlsZC5s
b3dlcigpCisgICAgICAgICAgICBpZiAobl9sb3cgaW4gbmFtZS5leGFjdF9tYXRjaGVzCisgICAg
ICAgICAgICAgICAgICAgIG9yIG5fbG93LnJlcGxhY2UoJy4nLCAnXycpLnN0YXJ0c3dpdGgobmFt
ZS5wcmVmaXgpCisgICAgICAgICAgICAgICAgICAgIGFuZCBuX2xvdy5lbmRzd2l0aChuYW1lLnN1
ZmZpeGVzKQorICAgICAgICAgICAgICAgICAgICAjIGxlZ2FjeSBjYXNlOgorICAgICAgICAgICAg
ICAgICAgICBvciBzZWxmLmlzX2VnZyhuYW1lKSBhbmQgbl9sb3cgPT0gJ2VnZy1pbmZvJyk6Cisg
ICAgICAgICAgICAgICAgeWllbGQgc2VsZi5qb2lucGF0aChjaGlsZCkKKworCitjbGFzcyBQcmVw
YXJlZDoKKyAgICAiIiIKKyAgICBBIHByZXBhcmVkIHNlYXJjaCBmb3IgbWV0YWRhdGEgb24gYSBw
b3NzaWJseS1uYW1lZCBwYWNrYWdlLgorICAgICIiIgorICAgIG5vcm1hbGl6ZWQgPSAnJworICAg
IHByZWZpeCA9ICcnCisgICAgc3VmZml4ZXMgPSAnLmRpc3QtaW5mbycsICcuZWdnLWluZm8nCisg
ICAgZXhhY3RfbWF0Y2hlcyA9IFsnJ11bOjBdCisgICAgdmVyc2lvbmxlc3NfZWdnX25hbWUgPSAn
JworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBu
YW1lCisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBzZWxmLm5vcm1hbGl6ZWQgPSBzZWxmLm5vcm1hbGl6ZShuYW1lKQorICAgICAgICBzZWxmLnBy
ZWZpeCA9IHNlbGYubm9ybWFsaXplZCArICctJworICAgICAgICBzZWxmLmV4YWN0X21hdGNoZXMg
PSBbCisgICAgICAgICAgICBzZWxmLm5vcm1hbGl6ZWQgKyBzdWZmaXggZm9yIHN1ZmZpeCBpbiBz
ZWxmLnN1ZmZpeGVzXQorICAgICAgICBzZWxmLnZlcnNpb25sZXNzX2VnZ19uYW1lID0gc2VsZi5u
b3JtYWxpemVkICsgJy5lZ2cnCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG5vcm1hbGl6
ZShuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIFBFUCA1MDMgbm9ybWFsaXphdGlvbiBwbHVz
IGRhc2hlcyBhcyB1bmRlcnNjb3Jlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiByZS5z
dWIociJbLV8uXSsiLCAiLSIsIG5hbWUpLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJykKKworCitA
aW5zdGFsbAorY2xhc3MgTWV0YWRhdGFQYXRoRmluZGVyKE51bGxGaW5kZXIsIERpc3RyaWJ1dGlv
bkZpbmRlcik6CisgICAgIiIiQSBkZWdlbmVyYXRlIGZpbmRlciBmb3IgZGlzdHJpYnV0aW9uIHBh
Y2thZ2VzIG9uIHRoZSBmaWxlIHN5c3RlbS4KKworICAgIFRoaXMgZmluZGVyIHN1cHBsaWVzIG9u
bHkgYSBmaW5kX2Rpc3RyaWJ1dGlvbnMoKSBtZXRob2QgZm9yIHZlcnNpb25zCisgICAgb2YgUHl0
aG9uIHRoYXQgZG8gbm90IGhhdmUgYSBQYXRoRmluZGVyIGZpbmRfZGlzdHJpYnV0aW9ucygpLgor
ICAgICIiIgorCisgICAgZGVmIGZpbmRfZGlzdHJpYnV0aW9ucyhzZWxmLCBjb250ZXh0PURpc3Ry
aWJ1dGlvbkZpbmRlci5Db250ZXh0KCkpOgorICAgICAgICAiIiIKKyAgICAgICAgRmluZCBkaXN0
cmlidXRpb25zLgorCisgICAgICAgIFJldHVybiBhbiBpdGVyYWJsZSBvZiBhbGwgRGlzdHJpYnV0
aW9uIGluc3RhbmNlcyBjYXBhYmxlIG9mCisgICAgICAgIGxvYWRpbmcgdGhlIG1ldGFkYXRhIGZv
ciBwYWNrYWdlcyBtYXRjaGluZyBgYGNvbnRleHQubmFtZWBgCisgICAgICAgIChvciBhbGwgbmFt
ZXMgaWYgYGBOb25lYGAgaW5kaWNhdGVkKSBhbG9uZyB0aGUgcGF0aHMgaW4gdGhlIGxpc3QKKyAg
ICAgICAgb2YgZGlyZWN0b3JpZXMgYGBjb250ZXh0LnBhdGhgYC4KKyAgICAgICAgIiIiCisgICAg
ICAgIGZvdW5kID0gc2VsZi5fc2VhcmNoX3BhdGhzKGNvbnRleHQubmFtZSwgY29udGV4dC5wYXRo
KQorICAgICAgICByZXR1cm4gbWFwKFBhdGhEaXN0cmlidXRpb24sIGZvdW5kKQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIF9zZWFyY2hfcGF0aHMoY2xzLCBuYW1lLCBwYXRocyk6CisgICAg
ICAgICIiIkZpbmQgbWV0YWRhdGEgZGlyZWN0b3JpZXMgaW4gcGF0aHMgaGV1cmlzdGljYWxseS4i
IiIKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAorICAgICAg
ICAgICAgcGF0aC5zZWFyY2goUHJlcGFyZWQobmFtZSkpCisgICAgICAgICAgICBmb3IgcGF0aCBp
biBtYXAoRmFzdFBhdGgsIHBhdGhzKQorICAgICAgICAgICAgKQorCisKK2NsYXNzIFBhdGhEaXN0
cmlidXRpb24oRGlzdHJpYnV0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6Cisg
ICAgICAgICIiIkNvbnN0cnVjdCBhIGRpc3RyaWJ1dGlvbiBmcm9tIGEgcGF0aCB0byB0aGUgbWV0
YWRhdGEgZGlyZWN0b3J5LgorCisgICAgICAgIDpwYXJhbSBwYXRoOiBBIHBhdGhsaWIuUGF0aCBv
ciBzaW1pbGFyIG9iamVjdCBzdXBwb3J0aW5nCisgICAgICAgICAgICAgICAgICAgICAuam9pbnBh
dGgoKSwgX19kaXZfXywgLnBhcmVudCwgYW5kIC5yZWFkX3RleHQoKS4KKyAgICAgICAgIiIiCisg
ICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisKKyAgICBkZWYgcmVhZF90ZXh0KHNlbGYsIGZpbGVu
YW1lKToKKyAgICAgICAgd2l0aCBzdXBwcmVzcyhGaWxlTm90Rm91bmRFcnJvciwgSXNBRGlyZWN0
b3J5RXJyb3IsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIE5vdEFEaXJlY3RvcnlF
cnJvciwgUGVybWlzc2lvbkVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoLmpv
aW5wYXRoKGZpbGVuYW1lKS5yZWFkX3RleHQoZW5jb2Rpbmc9J3V0Zi04JykKKyAgICByZWFkX3Rl
eHQuX19kb2NfXyA9IERpc3RyaWJ1dGlvbi5yZWFkX3RleHQuX19kb2NfXworCisgICAgZGVmIGxv
Y2F0ZV9maWxlKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gc2VsZi5fcGF0aC5wYXJlbnQg
LyBwYXRoCisKKworZGVmIGRpc3RyaWJ1dGlvbihkaXN0cmlidXRpb25fbmFtZSk6CisgICAgIiIi
R2V0IHRoZSBgYERpc3RyaWJ1dGlvbmBgIGluc3RhbmNlIGZvciB0aGUgbmFtZWQgcGFja2FnZS4K
KworICAgIDpwYXJhbSBkaXN0cmlidXRpb25fbmFtZTogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1
dGlvbiBwYWNrYWdlIGFzIGEgc3RyaW5nLgorICAgIDpyZXR1cm46IEEgYGBEaXN0cmlidXRpb25g
YCBpbnN0YW5jZSAob3Igc3ViY2xhc3MgdGhlcmVvZikuCisgICAgIiIiCisgICAgcmV0dXJuIERp
c3RyaWJ1dGlvbi5mcm9tX25hbWUoZGlzdHJpYnV0aW9uX25hbWUpCisKKworZGVmIGRpc3RyaWJ1
dGlvbnMoKiprd2FyZ3MpOgorICAgICIiIkdldCBhbGwgYGBEaXN0cmlidXRpb25gYCBpbnN0YW5j
ZXMgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCisKKyAgICA6cmV0dXJuOiBBbiBpdGVyYWJs
ZSBvZiBgYERpc3RyaWJ1dGlvbmBgIGluc3RhbmNlcy4KKyAgICAiIiIKKyAgICByZXR1cm4gRGlz
dHJpYnV0aW9uLmRpc2NvdmVyKCoqa3dhcmdzKQorCisKK2RlZiBtZXRhZGF0YShkaXN0cmlidXRp
b25fbmFtZSk6CisgICAgIiIiR2V0IHRoZSBtZXRhZGF0YSBmb3IgdGhlIG5hbWVkIHBhY2thZ2Uu
CisKKyAgICA6cGFyYW0gZGlzdHJpYnV0aW9uX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBkaXN0cmli
dXRpb24gcGFja2FnZSB0byBxdWVyeS4KKyAgICA6cmV0dXJuOiBBbiBlbWFpbC5NZXNzYWdlIGNv
bnRhaW5pbmcgdGhlIHBhcnNlZCBtZXRhZGF0YS4KKyAgICAiIiIKKyAgICByZXR1cm4gRGlzdHJp
YnV0aW9uLmZyb21fbmFtZShkaXN0cmlidXRpb25fbmFtZSkubWV0YWRhdGEKKworCitkZWYgdmVy
c2lvbihkaXN0cmlidXRpb25fbmFtZSk6CisgICAgIiIiR2V0IHRoZSB2ZXJzaW9uIHN0cmluZyBm
b3IgdGhlIG5hbWVkIHBhY2thZ2UuCisKKyAgICA6cGFyYW0gZGlzdHJpYnV0aW9uX25hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZSB0byBxdWVyeS4KKyAgICA6cmV0dXJu
OiBUaGUgdmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBwYWNrYWdlIGFzIGRlZmluZWQgaW4gdGhlIHBh
Y2thZ2UncworICAgICAgICAiVmVyc2lvbiIgbWV0YWRhdGEga2V5LgorICAgICIiIgorICAgIHJl
dHVybiBkaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uX25hbWUpLnZlcnNpb24KKworCitkZWYgZW50
cnlfcG9pbnRzKCk6CisgICAgIiIiUmV0dXJuIEVudHJ5UG9pbnQgb2JqZWN0cyBmb3IgYWxsIGlu
c3RhbGxlZCBwYWNrYWdlcy4KKworICAgIDpyZXR1cm46IEVudHJ5UG9pbnQgb2JqZWN0cyBmb3Ig
YWxsIGluc3RhbGxlZCBwYWNrYWdlcy4KKyAgICAiIiIKKyAgICBlcHMgPSBpdGVydG9vbHMuY2hh
aW4uZnJvbV9pdGVyYWJsZSgKKyAgICAgICAgZGlzdC5lbnRyeV9wb2ludHMgZm9yIGRpc3QgaW4g
ZGlzdHJpYnV0aW9ucygpKQorICAgIGJ5X2dyb3VwID0gb3BlcmF0b3IuYXR0cmdldHRlcignZ3Jv
dXAnKQorICAgIG9yZGVyZWQgPSBzb3J0ZWQoZXBzLCBrZXk9YnlfZ3JvdXApCisgICAgZ3JvdXBl
ZCA9IGl0ZXJ0b29scy5ncm91cGJ5KG9yZGVyZWQsIGJ5X2dyb3VwKQorICAgIHJldHVybiB7Cisg
ICAgICAgIGdyb3VwOiB0dXBsZShlcHMpCisgICAgICAgIGZvciBncm91cCwgZXBzIGluIGdyb3Vw
ZWQKKyAgICAgICAgfQorCisKK2RlZiBmaWxlcyhkaXN0cmlidXRpb25fbmFtZSk6CisgICAgIiIi
UmV0dXJuIGEgbGlzdCBvZiBmaWxlcyBmb3IgdGhlIG5hbWVkIHBhY2thZ2UuCisKKyAgICA6cGFy
YW0gZGlzdHJpYnV0aW9uX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gcGFja2Fn
ZSB0byBxdWVyeS4KKyAgICA6cmV0dXJuOiBMaXN0IG9mIGZpbGVzIGNvbXBvc2luZyB0aGUgZGlz
dHJpYnV0aW9uLgorICAgICIiIgorICAgIHJldHVybiBkaXN0cmlidXRpb24oZGlzdHJpYnV0aW9u
X25hbWUpLmZpbGVzCisKKworZGVmIHJlcXVpcmVzKGRpc3RyaWJ1dGlvbl9uYW1lKToKKyAgICAi
IiIKKyAgICBSZXR1cm4gYSBsaXN0IG9mIHJlcXVpcmVtZW50cyBmb3IgdGhlIG5hbWVkIHBhY2th
Z2UuCisKKyAgICA6cmV0dXJuOiBBbiBpdGVyYXRvciBvZiByZXF1aXJlbWVudHMsIHN1aXRhYmxl
IGZvcgorICAgIHBhY2thZ2luZy5yZXF1aXJlbWVudC5SZXF1aXJlbWVudC4KKyAgICAiIiIKKyAg
ICByZXR1cm4gZGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbl9uYW1lKS5yZXF1aXJlcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvaW1wb3J0bGliX21ldGFkYXRhL19jb21wYXQu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9pbXBvcnRsaWJfbWV0YWRhdGEvX2NvbXBhdC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMwM2Q0YTIyZTg1MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRh
ZGF0YS9fY29tcGF0LnB5CkBAIC0wLDAgKzEsMTUyIEBACitmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworCitpbXBvcnQgaW8KK2ltcG9ydCBh
YmMKK2ltcG9ydCBzeXMKK2ltcG9ydCBlbWFpbAorCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAo
MywpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICBmcm9tIGNv
bmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCisgICAgaW1wb3J0IGNvbnRleHRsaWIKKyAg
ICBGaWxlTm90Rm91bmRFcnJvciA9IGJ1aWx0aW5zLkZpbGVOb3RGb3VuZEVycm9yCisgICAgSXNB
RGlyZWN0b3J5RXJyb3IgPSBidWlsdGlucy5Jc0FEaXJlY3RvcnlFcnJvcgorICAgIE5vdEFEaXJl
Y3RvcnlFcnJvciA9IGJ1aWx0aW5zLk5vdEFEaXJlY3RvcnlFcnJvcgorICAgIFBlcm1pc3Npb25F
cnJvciA9IGJ1aWx0aW5zLlBlcm1pc3Npb25FcnJvcgorICAgIG1hcCA9IGJ1aWx0aW5zLm1hcAor
ICAgIGZyb20gaXRlcnRvb2xzIGltcG9ydCBmaWx0ZXJmYWxzZQorZWxzZTogICMgcHJhZ21hOiBu
b2NvdmVyCisgICAgZnJvbSBiYWNrcG9ydHMuY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJz
ZXIKKyAgICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgaW1hcCBhcyBtYXAgICMgdHlwZTogaWdub3Jl
CisgICAgZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlmaWx0ZXJmYWxzZSBhcyBmaWx0ZXJmYWxzZQor
ICAgIGltcG9ydCBjb250ZXh0bGliMiBhcyBjb250ZXh0bGliCisgICAgRmlsZU5vdEZvdW5kRXJy
b3IgPSBJT0Vycm9yLCBPU0Vycm9yCisgICAgSXNBRGlyZWN0b3J5RXJyb3IgPSBJT0Vycm9yLCBP
U0Vycm9yCisgICAgTm90QURpcmVjdG9yeUVycm9yID0gSU9FcnJvciwgT1NFcnJvcgorICAgIFBl
cm1pc3Npb25FcnJvciA9IElPRXJyb3IsIE9TRXJyb3IKKworc3RyID0gdHlwZSgnJykKKworc3Vw
cHJlc3MgPSBjb250ZXh0bGliLnN1cHByZXNzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywg
NSk6ICAjIHByYWdtYTogbm9jb3ZlcgorICAgIGltcG9ydCBwYXRobGliCitlbHNlOiAgIyBwcmFn
bWE6IG5vY292ZXIKKyAgICBpbXBvcnQgcGF0aGxpYjIgYXMgcGF0aGxpYgorCit0cnk6CisgICAg
TW9kdWxlTm90Rm91bmRFcnJvciA9IGJ1aWx0aW5zLkZpbGVOb3RGb3VuZEVycm9yCitleGNlcHQg
KE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICBNb2R1
bGVOb3RGb3VuZEVycm9yID0gSW1wb3J0RXJyb3IgICMgdHlwZTogaWdub3JlCisKKworaWYgc3lz
LnZlcnNpb25faW5mbyA+PSAoMywpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICBmcm9tIGltcG9y
dGxpYi5hYmMgaW1wb3J0IE1ldGFQYXRoRmluZGVyCitlbHNlOiAgIyBwcmFnbWE6IG5vY292ZXIK
KyAgICBjbGFzcyBNZXRhUGF0aEZpbmRlcihvYmplY3QpOgorICAgICAgICBfX21ldGFjbGFzc19f
ID0gYWJjLkFCQ01ldGEKKworCitfX21ldGFjbGFzc19fID0gdHlwZQorX19hbGxfXyA9IFsKKyAg
ICAnaW5zdGFsbCcsICdOdWxsRmluZGVyJywgJ01ldGFQYXRoRmluZGVyJywgJ01vZHVsZU5vdEZv
dW5kRXJyb3InLAorICAgICdwYXRobGliJywgJ0NvbmZpZ1BhcnNlcicsICdtYXAnLCAnc3VwcHJl
c3MnLCAnRmlsZU5vdEZvdW5kRXJyb3InLAorICAgICdOb3RBRGlyZWN0b3J5RXJyb3InLCAnZW1h
aWxfbWVzc2FnZV9mcm9tX3N0cmluZycsCisgICAgXQorCisKK2RlZiBpbnN0YWxsKGNscyk6Cisg
ICAgIiIiCisgICAgQ2xhc3MgZGVjb3JhdG9yIGZvciBpbnN0YWxsYXRpb24gb24gc3lzLm1ldGFf
cGF0aC4KKworICAgIEFkZHMgdGhlIGJhY2twb3J0IERpc3RyaWJ1dGlvbkZpbmRlciB0byBzeXMu
bWV0YV9wYXRoIGFuZAorICAgIGF0dGVtcHRzIHRvIGRpc2FibGUgdGhlIGZpbmRlciBmdW5jdGlv
bmFsaXR5IG9mIHRoZSBzdGRsaWIKKyAgICBEaXN0cmlidXRpb25GaW5kZXIuCisgICAgIiIiCisg
ICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoY2xzKCkpCisgICAgZGlzYWJsZV9zdGRsaWJfZmluZGVy
KCkKKyAgICByZXR1cm4gY2xzCisKKworZGVmIGRpc2FibGVfc3RkbGliX2ZpbmRlcigpOgorICAg
ICIiIgorICAgIEdpdmUgdGhlIGJhY2twb3J0IHByaW1hY3kgZm9yIGRpc2NvdmVyaW5nIHBhdGgt
YmFzZWQgZGlzdHJpYnV0aW9ucworICAgIGJ5IG1vbmtleS1wYXRjaGluZyB0aGUgc3RkbGliIE9f
Ty4KKworICAgIFNlZSAjOTEgZm9yIG1vcmUgYmFja2dyb3VuZCBmb3IgcmF0aW9uYWxlIG9uIHRo
aXMgc2tldGNoeQorICAgIGJlaGF2aW9yLgorICAgICIiIgorICAgIGRlZiBtYXRjaGVzKGZpbmRl
cik6CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBnZXRhdHRyKGZpbmRlciwgJ19fbW9k
dWxlX18nLCBOb25lKSA9PSAnX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnCisgICAgICAgICAg
ICBhbmQgaGFzYXR0cihmaW5kZXIsICdmaW5kX2Rpc3RyaWJ1dGlvbnMnKQorICAgICAgICAgICAg
KQorICAgIGZvciBmaW5kZXIgaW4gZmlsdGVyKG1hdGNoZXMsIHN5cy5tZXRhX3BhdGgpOiAgIyBw
cmFnbWE6IG5vY292ZXIKKyAgICAgICAgZGVsIGZpbmRlci5maW5kX2Rpc3RyaWJ1dGlvbnMKKwor
CitjbGFzcyBOdWxsRmluZGVyOgorICAgICIiIgorICAgIEEgIkZpbmRlciIgKGFrYSAiTWV0YUNs
YXNzRmluZGVyIikgdGhhdCBuZXZlciBmaW5kcyBhbnkgbW9kdWxlcywKKyAgICBidXQgbWF5IGZp
bmQgZGlzdHJpYnV0aW9ucy4KKyAgICAiIiIKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZp
bmRfc3BlYygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgIyBJ
biBQeXRob24gMiwgdGhlIGltcG9ydCBzeXN0ZW0gcmVxdWlyZXMgZmluZGVycworICAgICMgdG8g
aGF2ZSBhIGZpbmRfbW9kdWxlKCkgbWV0aG9kLCBidXQgdGhpcyB1c2FnZQorICAgICMgaXMgZGVw
cmVjYXRlZCBpbiBQeXRob24gMyBpbiBmYXZvciBvZiBmaW5kX3NwZWMoKS4KKyAgICAjIEZvciB0
aGUgcHVycG9zZXMgb2YgdGhpcyBmaW5kZXIgKGkuZS4gYmVpbmcgcHJlc2VudAorICAgICMgb24g
c3lzLm1ldGFfcGF0aCBidXQgaGF2aW5nIG5vIG90aGVyIGltcG9ydAorICAgICMgc3lzdGVtIGZ1
bmN0aW9uYWxpdHkpLCB0aGUgdHdvIG1ldGhvZHMgYXJlIGlkZW50aWNhbC4KKyAgICBmaW5kX21v
ZHVsZSA9IGZpbmRfc3BlYworCisKK2RlZiBweTJfbWVzc2FnZV9mcm9tX3N0cmluZyh0ZXh0KTog
ICMgbm9jb3ZlcnB5MworICAgICMgV29yayBhcm91bmQgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcv
aXNzdWUyNTU0NSB3aGVyZQorICAgICMgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyBjYW5ub3Qg
aGFuZGxlIFVuaWNvZGUgb24gUHl0aG9uIDIuCisgICAgaW9fYnVmZmVyID0gaW8uU3RyaW5nSU8o
dGV4dCkKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoaW9fYnVmZmVyKQorCisK
K2VtYWlsX21lc3NhZ2VfZnJvbV9zdHJpbmcgPSAoCisgICAgcHkyX21lc3NhZ2VfZnJvbV9zdHJp
bmcKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKSBlbHNlCisgICAgZW1haWwubWVzc2Fn
ZV9mcm9tX3N0cmluZworICAgICkKKworCitjbGFzcyBQeVB5X3JlcHI6CisgICAgIiIiCisgICAg
T3ZlcnJpZGUgcmVwciBmb3IgRW50cnlQb2ludCBvYmplY3RzIG9uIFB5UHkgdG8gYXZvaWQgX19p
dGVyX18gYWNjZXNzLgorICAgIFJlZiAjOTcsICMxMDIuCisgICAgIiIiCisgICAgYWZmZWN0ZWQg
PSBoYXNhdHRyKHN5cywgJ3B5cHlfdmVyc2lvbl9pbmZvJykKKworICAgIGRlZiBfX2NvbXBhdF9y
ZXByX18oc2VsZik6ICAjIHByYWdtYTogbm9jb3ZlcgorICAgICAgICBkZWYgbWFrZV9wYXJhbShu
YW1lKToKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihzZWxmLCBuYW1lKQorICAgICAgICAg
ICAgcmV0dXJuICd7bmFtZX09e3ZhbHVlIXJ9Jy5mb3JtYXQoKipsb2NhbHMoKSkKKyAgICAgICAg
cGFyYW1zID0gJywgJy5qb2luKG1hcChtYWtlX3BhcmFtLCBzZWxmLl9maWVsZHMpKQorICAgICAg
ICByZXR1cm4gJ0VudHJ5UG9pbnQoe3BhcmFtc30pJy5mb3JtYXQoKipsb2NhbHMoKSkKKworICAg
IGlmIGFmZmVjdGVkOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAgICAgICAgX19yZXByX18gPSBfX2Nv
bXBhdF9yZXByX18KKyAgICBkZWwgYWZmZWN0ZWQKKworCisjIGZyb20gaXRlcnRvb2xzIHJlY2lw
ZXMKK2RlZiB1bmlxdWVfZXZlcnNlZW4oaXRlcmFibGUpOiAgIyBwcmFnbWE6IG5vY292ZXIKKyAg
ICAiTGlzdCB1bmlxdWUgZWxlbWVudHMsIHByZXNlcnZpbmcgb3JkZXIuIFJlbWVtYmVyIGFsbCBl
bGVtZW50cyBldmVyIHNlZW4uIgorICAgIHNlZW4gPSBzZXQoKQorICAgIHNlZW5fYWRkID0gc2Vl
bi5hZGQKKworICAgIGZvciBlbGVtZW50IGluIGZpbHRlcmZhbHNlKHNlZW4uX19jb250YWluc19f
LCBpdGVyYWJsZSk6CisgICAgICAgIHNlZW5fYWRkKGVsZW1lbnQpCisgICAgICAgIHlpZWxkIGVs
ZW1lbnQKKworCit1bmlxdWVfb3JkZXJlZCA9ICgKKyAgICB1bmlxdWVfZXZlcnNlZW4gaWYgc3lz
LnZlcnNpb25faW5mbyA8ICgzLCA3KSBlbHNlIGRpY3QuZnJvbWtleXMpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9wcmVwYXJlL2V4YW1wbGUvZXhhbXBsZS9fX2luaXRfXy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBhcmUvZXhhbXBsZS9leGFtcGxlL19faW5p
dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmE3M2I3NDMz
OTQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvcHJlcGFyZS9l
eGFtcGxlL2V4YW1wbGUvX19pbml0X18ucHkKQEAgLTAsMCArMSwyIEBACitkZWYgbWFpbigpOgor
ICAgIHJldHVybiAnZXhhbXBsZScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L3ByZXBhcmUvZXhhbXBsZS9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBh
cmUvZXhhbXBsZS9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjg2NjNhZDM4OWEyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL3ByZXBhcmUvZXhhbXBsZS9zZXR1cC5weQpAQCAtMCwwICsxLDEwIEBACitmcm9tIHNldHVw
dG9vbHMgaW1wb3J0IHNldHVwCitzZXR1cCgKKyAgICBuYW1lPSdleGFtcGxlJywKKyAgICB2ZXJz
aW9uPScyMS4xMicsCisgICAgbGljZW5zZT0nQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UnLAorICAg
IHBhY2thZ2VzPVsnZXhhbXBsZSddLAorICAgIGVudHJ5X3BvaW50cz17CisgICAgICAgICdjb25z
b2xlX3NjcmlwdHMnOiBbJ2V4YW1wbGUgPSBleGFtcGxlOm1haW4nLCAnRXhhbXBsZT1leGFtcGxl
Om1haW4nXSwKKyAgICAgICAgfSwKKyAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9t
ZXRhZGF0YS9weXByb2plY3QudG9tbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3B5cHJvamVj
dC50b21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTVjM2E2YTQ1
NTIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvcHlwcm9qZWN0
LnRvbWwKQEAgLTAsMCArMSwyIEBACitbYnVpbGQtc3lzdGVtXQorcmVxdWlyZXMgPSBbInNldHVw
dG9vbHM+PTMwLjMiLCAid2hlZWwiLCAic2V0dXB0b29sc19zY20iXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEv
c2V0dXAuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmExMGM4
ZDM1OGNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAu
Y2ZnCkBAIC0wLDAgKzEsNDcgQEAKK1ttZXRhZGF0YV0KK25hbWUgPSBpbXBvcnRsaWJfbWV0YWRh
dGEKK2F1dGhvciA9IEphc29uIFIuIENvb21icworYXV0aG9yX2VtYWlsID0gamFyYWNvQGphcmFj
by5jb20KK3VybCA9IGh0dHA6Ly9pbXBvcnRsaWItbWV0YWRhdGEucmVhZHRoZWRvY3MuaW8vCitk
ZXNjcmlwdGlvbiA9IFJlYWQgbWV0YWRhdGEgZnJvbSBQeXRob24gcGFja2FnZXMKK2xvbmdfZGVz
Y3JpcHRpb24gPSBmaWxlOiBSRUFETUUucnN0CitsaWNlbnNlID0gQXBhY2hlIFNvZnR3YXJlIExp
Y2Vuc2UKK2NsYXNzaWZpZXJzID0KKyAgICBEZXZlbG9wbWVudCBTdGF0dXMgOjogMyAtIEFscGhh
CisgICAgSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycworICAgIExpY2Vuc2UgOjogT1NJ
IEFwcHJvdmVkIDo6IEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlCisgICAgVG9waWMgOjogU29mdHdh
cmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCisgICAgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDMKKyAgICBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMgorCitb
b3B0aW9uc10KK3B5dGhvbl9yZXF1aXJlcyA9ID49Mi43LCE9My4wLiosIT0zLjEuKiwhPTMuMi4q
LCE9My4zLiosIT0zLjQuKgorc2V0dXBfcmVxdWlyZXMgPSBzZXR1cHRvb2xzLXNjbQoraW5zdGFs
bF9yZXF1aXJlcyA9CisgICAgemlwcD49MC41CisgICAgcGF0aGxpYjI7IHB5dGhvbl92ZXJzaW9u
IDwgJzMnCisgICAgY29udGV4dGxpYjI7IHB5dGhvbl92ZXJzaW9uIDwgJzMnCisgICAgY29uZmln
cGFyc2VyPj0zLjU7IHB5dGhvbl92ZXJzaW9uIDwgJzMnCitwYWNrYWdlcyA9IGltcG9ydGxpYl9t
ZXRhZGF0YQorCitbbXlweV0KK2lnbm9yZV9taXNzaW5nX2ltcG9ydHMgPSBUcnVlCisjIFhYWCBX
ZSByZWFsbHkgc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBgVHJ1ZWAgdmFsdWUgaGVyZSwgYnV0IGl0
IGNhdXNlcyB0b28KKyMgbWFueSB3YXJuaW5ncywgc28gZm9yIG5vdyBqdXN0IGRpc2FibGUgaXQu
ICBFLmcuIGEgcGFja2FnZSdzIF9fc3BlY19fIGlzCisjIGRlZmluZWQgYXMgT3B0aW9uYWxbTW9k
dWxlU3BlY10gc28gd2UgY2FuJ3QganVzdCBibGluZGx5IHB1bGwgYXR0cmlidXRlcyBvZmYKKyMg
b2YgdGhhdCBhdHRyaWJ1dGUuICBUaGUgcmVhbCBmaXggaXMgdG8gYWRkIGNvbmRpdGlvbmFscyBv
ciBhc3NlcnRzIHByb3ZpbmcKKyMgdGhhdCBwYWNrYWdlLl9fc3BlY19fIGlzIG5vdCBOb25lLgor
c3RyaWN0X29wdGlvbmFsID0gRmFsc2UKKworW3doZWVsXQordW5pdmVyc2FsPTEKKworW29wdGlv
bnMuZXh0cmFzX3JlcXVpcmVdCit0ZXN0aW5nID0KKyAgICBpbXBvcnRsaWJfcmVzb3VyY2VzPj0x
LjM7IHB5dGhvbl92ZXJzaW9uIDwgIjMuOSIKKyAgICBwYWNrYWdpbmcKKyAgICBwZXA1MTcKKyAg
ICB1bml0dGVzdDI7IHB5dGhvbl92ZXJzaW9uIDwgIjMiCitkb2NzID0KKyAgICBzcGhpbngKKyAg
ICByc3QubGlua2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9zZXR1cC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZDVkNDNkN2M5M2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHNldHVw
dG9vbHMgaW1wb3J0IHNldHVwCisKK3NldHVwKHVzZV9zY21fdmVyc2lvbj1UcnVlKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvdGVzdHMvZGF0YS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL3Rlc3RzL2RhdGEvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL3Rlc3RzL2RhdGEvZXhhbXBsZS0yMS4xMi1weTMtbm9uZS1hbnkud2hsIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvdGVzdHMvZGF0YS9leGFtcGxlLTIxLjEyLXB5My1ub25lLWFueS53aGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQxYWIwN2Y3YWFkZDVjM2ZmZTE5OWIxZTM5N2I4NDUwNDQ0NDk5NApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ1NQp6Y21XSVdXQFpzI1V8YF4yc0gjNWhDIzg5P0xKYE9W
VlBQT250d191KiRWdF9Za0kmNEBFUXljVEUyI0FMXmJKMVkKemQqO21MM3RKdXFGKkdmQEdVP0pI
OGBpSF54e2xtd25pRXAwI31FS0ZhU3FUI21WWCUkKWoqU1cxRi1fYUx8cjM4CnpKd3FlQ2wrNUIx
LU9Sa1NlMF5XbjVKd2xzNVhhYz1qYS1LZUx8bmdyN3lhMk5hPisyLStfQmViPCs8czx2WTBEPAp6
SiVYPzd6d1hHaDw4QyRJXkFvSipBfV9kflVwOzx3KWklUT8zT1M8b2lrYiRZc1p5N05fSUUxbVVu
NnpyLXJSTTQKeldxfWR1Y1hscXkoPUk7cUtZc0lwYn0jPEFDI2lvXlZoPnF0ZSlUdis/IT1tWFAz
SVU+eUNTb2tfQi1hSUktS3czCnpRTURNTGdGI3Bwa0hmPH5Ud1EmKiZ3S2N1eX55ald0OTk8b2BP
UUhGU0J4Sk5gSmVVSF8wbD0xemJWTVc+IWdsZQp6ciN9MTJ6ellUIWpMb2hZVXdwIUs+YihCTnVS
N093SEZVa3NwN2h4aXFAayhoYDteUG1YTTIjdzNYXk1SUG9NWGAKej5VKERPbFNmUXc7V0A9dV5g
Sko7SWdVV0FmeVleP2NfbEBhQGRmI3JjX3FicUJeNCN6ZSZeMD5wRjhpX3RNOHxHCnpOPUhNcD9g
aEZtazJBVV9KVlE1eGRiRG0+UXpVSHNjfUxKaj9xV3RYMy02fEkyNXx1YDtzOWIqSlFrTVo3c1Ro
Sgp6bVpqIV5aMWFZZ3tTQDh4SG91ZkU9ckotZFRtKWh7SmNiM2lJe09FP2wlQ21IKWExYXhhTiVB
KTxDNik+dTNRMmwKekUoWiUlVHpJcGxoLT1le2JzUk9kVHxMSGA3NGpjMEcxfWQtaWUoQmdRKU8o
KGJtdFBFQWlneGVeMyt6RF4yWlBBCno9S2pfQGxsbkhiJXBxcz49e35ie0pGQTxJRjdydGB4Pzkw
Wks8d3B4bShNYlhLbCVoRUlaZ0wlbzVycGpQLStAcgp6fE1wd2FeR1IkUjdkU2ZBQX4mcTZwSlYj
RiQqPG1OaSQ+V1UtRnNRTHBhMHooOVhMbm57SiErZDJIKW1pMzl0Rk0Keld3fko/djtEUWoyVzU8
fSpgM080eDtnaVp6NGRJPFUoKkZyN0UxLWp8OUxhaFk+QmpFX289cG9IbDhQIXh6JX1SCnpeMlBk
VWh3eDRPeWtXN04wQExwc1BYZGEyS0FoLSN0fnZZQW9uMypHRU4lOzVYfGo1SWBQY3Y0ZmB4TG9T
ZEc+bQp6PXR8Znd3dG42JiYza3RwdC0/Oy1Ke0JPRy1MITd5YCF5UD0rcklUfGVmPzVvPmtybGRa
JD41Jlg1NHVoN35FajYKenEhQzE2JD1TI1RWOVVBPz9GPFl7OGlObzk7TE9QQXJsSUYyZ2xYS3Mh
fmteO2hIMnAzZz5EcGo5elluaTIjLTxkCnpJUmYyT15ue0t1UmhTOTQxNXVKYXh7Pkl+OWNKVmYj
c29ZQExLMSZ+SCFCLVJKc1N8NzJZVHhpR2wmTk8wN0xWeQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvZGF0YS9leGFtcGxl
LTIxLjEyLXB5My42LmVnZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL2RhdGEvZXhh
bXBsZS0yMS4xMi1weTMuNi5lZ2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RiMjk4YTE5YjA5ZDM2MGQxOGY3MmE5
MWU5ZGQ3MGQ3ZDdmNTRlYwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQ5Nwp6Y21XSVdXQFpz
I1V8YF4yYzt8ZkZAM25GMGtycDhEQz1kJCp2OCVoZ3VCVkB5emtZeD5nYn5+OCRhVG0tITFjU08K
enRLTmo5VTEhIWthMCY9c3haPF48VSNgT0NtWHhsbFlTJHxicn5rfEs/e3t6R0hkckQyPzl0PCND
MyNfb209O2N+CnpWRTFBPz5jNGZAI2tDUypOKzxaMGBeJk9fWngpXkh1fGc8ajxEJEhXbiRQflBv
cDdNdHROaC0+bjdHTDQyWWZaIQp6RWs1eFlvJDQzSiozdFdZPG8pO2pRalA9M1hGXlUyMmNTNmw+
R29nIVgrV3AkMCVETHk7NyQocTQtSW01NGMwNUUKekNARFNWJGtwdD88TXdjR2Q3K0k8cGVDenMq
SzM4Wj5zJFBjOVQhX3s3Y1hhaGA+aSY9UDR8X0YrS3BmOXQ1UkhhCnphJE19c0NkdmQpRD9jJT4t
KUx7Ull3ZmdjP2BCMmN2JTNBSmhncm5QQSNTNDA+R1hhMzZ3RipOOVowSUA8TXh1JQp6eyZVYjgp
bUBYPnR7WDd9LU5PalB2ZEhkQU5pOWd0T0coWDN1OGh5ZyUqIXFZSXEpJFAxRkcmUnpOIWJjZnd+
LWwKelNRMSV4WUY8ZkVXcWQoP1c/bChjWFNkKEVeVjtYbWQtbSU0PjdDTmkoQ205IXdBU057P2dg
Sig0V1M7YjhgY3lGCno4LUx5cncyYH0qNXpVNlhEViN4RUskQUl1U1BhPlFsS2dgQm9ZYjxeOUZX
N2pBJTtDZ2NPU0N2UCFkWDJXYFM7VAp6VnA9TVNrRSghNE9HQCkjZyhBPSU1RWNnRilRWkkxZn1C
K1NgMXM3YyUjISRjeUBFPF9Qdjc3WnpHdSF7ek9keXsKejVKU19WRTBab1F2U0l5dHJSJklAcmEy
KntkVDJnU0RxZChtN2lpS21BTz9qTSFvLTVnPGl6QlIpY0FPVz5CJDleCnpCXm1qN3kyZlRlaTt8
Nj5KJDw/PT1hPVo+NjkqMV9uOEM8dHpfXmlGSz5SYTlyJTBRfkZ8anN7SGohbHNZYClKQAp6UWM4
T3EtdFl0K1g5X3liRih2KWU/eFhYZkNlRGJTRm5RT2NnJlprLU8rUWo2Z3ZePmJkQ35rU2xPa2ds
T2BrazcKekpaZlFkVnhtfW4rTUBaaD1CP3d1eD1kYnZ7PjxyLUxofGR3MTFoXiElPyp3RFFAam1A
WnxxWj07OTU2Sks8ZXhkCnpyOElAWT8hIyo0X0RmQ0Z1a3grb1VjdzNWQl9vcHZHd3dfWV5lUHhF
WCNgUjVeYlg2Uz0tU2FVMnQrZGohOzszJAp6JGw4JnozJVV1JmtxdGA5RnREVzJuLVIkWSpiKzlu
UVJ3TCFWTkByd1FSdH4wLTVCKTVpIWtPanZOMCUwOFFsekkKelV4QVZeM0BtQlhXSjI7NEVJfWh7
JENqUUUrTXxLbTVvcjtneHsoYjRtOV4tfTdoJTkhNmF4cSo8XlhTMkhqcml4Ck5BVCQ3S29lVX49
N3l6VlElMTswUQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvdGVzdHMvZml4dHVyZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS90ZXN0cy9maXh0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjBkODM0YzY1ODBjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL3Rlc3RzL2ZpeHR1cmVzLnB5CkBAIC0wLDAgKzEsMjYzIEBACitmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQg
c2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAorCitmcm9tIC5weTM5Y29t
cGF0IGltcG9ydCBGU19OT05BU0NJSQorCitmcm9tIGltcG9ydGxpYl9tZXRhZGF0YS5fY29tcGF0
IGltcG9ydCBwYXRobGliLCBjb250ZXh0bGliCisKKworX19tZXRhY2xhc3NfXyA9IHR5cGUKKwor
CitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHRlbXBkaXIoKToKKyAgICB0bXBkaXIg
PSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkIHBhdGhsaWIuUGF0
aCh0bXBkaXIpCisgICAgZmluYWxseToKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBkaXIpCisK
KworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBzYXZlX2N3ZCgpOgorICAgIG9yaWcg
PSBvcy5nZXRjd2QoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAg
ICAgICBvcy5jaGRpcihvcmlnKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYg
dGVtcGRpcl9hc19jd2QoKToKKyAgICB3aXRoIHRlbXBkaXIoKSBhcyB0bXA6CisgICAgICAgIHdp
dGggc2F2ZV9jd2QoKToKKyAgICAgICAgICAgIG9zLmNoZGlyKHN0cih0bXApKQorICAgICAgICAg
ICAgeWllbGQgdG1wCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBpbnN0YWxs
X2ZpbmRlcihmaW5kZXIpOgorICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGZpbmRlcikKKyAgICB0
cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5y
ZW1vdmUoZmluZGVyKQorCisKK2NsYXNzIEZpeHR1cmVzOgorICAgIGRlZiBzZXRVcChzZWxmKToK
KyAgICAgICAgc2VsZi5maXh0dXJlcyA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKKyAgICAgICAg
c2VsZi5hZGRDbGVhbnVwKHNlbGYuZml4dHVyZXMuY2xvc2UpCisKKworY2xhc3MgU2l0ZURpcihG
aXh0dXJlcyk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihTaXRlRGlyLCBz
ZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2l0ZV9kaXIgPSBzZWxmLmZpeHR1cmVzLmVudGVy
X2NvbnRleHQodGVtcGRpcigpKQorCisKK2NsYXNzIE9uU3lzUGF0aChGaXh0dXJlcyk6CisgICAg
QHN0YXRpY21ldGhvZAorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFk
ZF9zeXNfcGF0aChkaXIpOgorICAgICAgICBzeXMucGF0aFs6MF0gPSBbc3RyKGRpcildCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBzeXMucGF0aC5yZW1vdmUoc3RyKGRpcikpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg
ICAgIHN1cGVyKE9uU3lzUGF0aCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLmZpeHR1cmVz
LmVudGVyX2NvbnRleHQoc2VsZi5hZGRfc3lzX3BhdGgoc2VsZi5zaXRlX2RpcikpCisKKworY2xh
c3MgRGlzdEluZm9Qa2coT25TeXNQYXRoLCBTaXRlRGlyKToKKyAgICBmaWxlcyA9IHsKKyAgICAg
ICAgImRpc3RpbmZvX3BrZy0xLjAuMC5kaXN0LWluZm8iOiB7CisgICAgICAgICAgICAiTUVUQURB
VEEiOiAiIiIKKyAgICAgICAgICAgICAgICBOYW1lOiBkaXN0aW5mby1wa2cKKyAgICAgICAgICAg
ICAgICBBdXRob3I6IFN0ZXZlbiBNYQorICAgICAgICAgICAgICAgIFZlcnNpb246IDEuMC4wCisg
ICAgICAgICAgICAgICAgUmVxdWlyZXMtRGlzdDogd2hlZWwgPj0gMS4wCisgICAgICAgICAgICAg
ICAgUmVxdWlyZXMtRGlzdDogcHl0ZXN0OyBleHRyYSA9PSAndGVzdCcKKyAgICAgICAgICAgICAg
ICAiIiIsCisgICAgICAgICAgICAiUkVDT1JEIjogIm1vZC5weSxzaGEyNTY9YWJjLDIwXG4iLAor
ICAgICAgICAgICAgImVudHJ5X3BvaW50cy50eHQiOiAiIiIKKyAgICAgICAgICAgICAgICBbZW50
cmllc10KKyAgICAgICAgICAgICAgICBtYWluID0gbW9kOm1haW4KKyAgICAgICAgICAgICAgICBu
czpzdWIgPSBtb2Q6bWFpbgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICB9LAorICAgICAg
ICAibW9kLnB5IjogIiIiCisgICAgICAgICAgICBkZWYgbWFpbigpOgorICAgICAgICAgICAgICAg
IHByaW50KCJoZWxsbyB3b3JsZCIpCisgICAgICAgICAgICAiIiIsCisgICAgICAgIH0KKworICAg
IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoRGlzdEluZm9Qa2csIHNlbGYpLnNldFVw
KCkKKyAgICAgICAgYnVpbGRfZmlsZXMoRGlzdEluZm9Qa2cuZmlsZXMsIHNlbGYuc2l0ZV9kaXIp
CisKKworY2xhc3MgRGlzdEluZm9Qa2dXaXRoRG90KE9uU3lzUGF0aCwgU2l0ZURpcik6CisgICAg
ZmlsZXMgPSB7CisgICAgICAgICJwa2dfZG90LTEuMC4wLmRpc3QtaW5mbyI6IHsKKyAgICAgICAg
ICAgICJNRVRBREFUQSI6ICIiIgorICAgICAgICAgICAgICAgIE5hbWU6IHBrZy5kb3QKKyAgICAg
ICAgICAgICAgICBWZXJzaW9uOiAxLjAuMAorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgIH0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIo
RGlzdEluZm9Qa2dXaXRoRG90LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIGJ1aWxkX2ZpbGVzKERp
c3RJbmZvUGtnV2l0aERvdC5maWxlcywgc2VsZi5zaXRlX2RpcikKKworCitjbGFzcyBEaXN0SW5m
b1BrZ1dpdGhEb3RMZWdhY3koT25TeXNQYXRoLCBTaXRlRGlyKToKKyAgICBmaWxlcyA9IHsKKyAg
ICAgICAgInBrZy5kb3QtMS4wLjAuZGlzdC1pbmZvIjogeworICAgICAgICAgICAgIk1FVEFEQVRB
IjogIiIiCisgICAgICAgICAgICAgICAgTmFtZTogcGtnLmRvdAorICAgICAgICAgICAgICAgIFZl
cnNpb246IDEuMC4wCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgfQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihEaXN0SW5mb1BrZ1dp
dGhEb3RMZWdhY3ksIHNlbGYpLnNldFVwKCkKKyAgICAgICAgYnVpbGRfZmlsZXMoRGlzdEluZm9Q
a2dXaXRoRG90TGVnYWN5LmZpbGVzLCBzZWxmLnNpdGVfZGlyKQorCisKK2NsYXNzIERpc3RJbmZv
UGtnT2ZmUGF0aChTaXRlRGlyKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVy
KERpc3RJbmZvUGtnT2ZmUGF0aCwgc2VsZikuc2V0VXAoKQorICAgICAgICBidWlsZF9maWxlcyhE
aXN0SW5mb1BrZy5maWxlcywgc2VsZi5zaXRlX2RpcikKKworCitjbGFzcyBFZ2dJbmZvUGtnKE9u
U3lzUGF0aCwgU2l0ZURpcik6CisgICAgZmlsZXMgPSB7CisgICAgICAgICJlZ2dpbmZvX3BrZy5l
Z2ctaW5mbyI6IHsKKyAgICAgICAgICAgICJQS0ctSU5GTyI6ICIiIgorICAgICAgICAgICAgICAg
IE5hbWU6IGVnZ2luZm8tcGtnCisgICAgICAgICAgICAgICAgQXV0aG9yOiBTdGV2ZW4gTWEKKyAg
ICAgICAgICAgICAgICBMaWNlbnNlOiBVbmtub3duCisgICAgICAgICAgICAgICAgVmVyc2lvbjog
MS4wLjAKKyAgICAgICAgICAgICAgICBDbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBE
ZXZlbG9wZXJzCisgICAgICAgICAgICAgICAgQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUg
RGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAg
ICAgIlNPVVJDRVMudHh0IjogIiIiCisgICAgICAgICAgICAgICAgbW9kLnB5CisgICAgICAgICAg
ICAgICAgZWdnaW5mb19wa2cuZWdnLWluZm8vdG9wX2xldmVsLnR4dAorICAgICAgICAgICAgIiIi
LAorICAgICAgICAgICAgImVudHJ5X3BvaW50cy50eHQiOiAiIiIKKyAgICAgICAgICAgICAgICBb
ZW50cmllc10KKyAgICAgICAgICAgICAgICBtYWluID0gbW9kOm1haW4KKyAgICAgICAgICAgICIi
IiwKKyAgICAgICAgICAgICJyZXF1aXJlcy50eHQiOiAiIiIKKyAgICAgICAgICAgICAgICB3aGVl
bCA+PSAxLjA7IHB5dGhvbl92ZXJzaW9uID49ICIyLjciCisgICAgICAgICAgICAgICAgW3Rlc3Rd
CisgICAgICAgICAgICAgICAgcHl0ZXN0CisgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAi
dG9wX2xldmVsLnR4dCI6ICJtb2RcbiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICJtb2QucHki
OiAiIiIKKyAgICAgICAgICAgIGRlZiBtYWluKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoImhl
bGxvIHdvcmxkIikKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgfQorCisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzdXBlcihFZ2dJbmZvUGtnLCBzZWxmKS5zZXRVcCgpCisgICAgICAg
IGJ1aWxkX2ZpbGVzKEVnZ0luZm9Qa2cuZmlsZXMsIHByZWZpeD1zZWxmLnNpdGVfZGlyKQorCisK
K2NsYXNzIEVnZ0luZm9GaWxlKE9uU3lzUGF0aCwgU2l0ZURpcik6CisgICAgZmlsZXMgPSB7Cisg
ICAgICAgICJlZ2dpbmZvX2ZpbGUuZWdnLWluZm8iOiAiIiIKKyAgICAgICAgICAgIE1ldGFkYXRh
LVZlcnNpb246IDEuMAorICAgICAgICAgICAgTmFtZTogZWdnaW5mb19maWxlCisgICAgICAgICAg
ICBWZXJzaW9uOiAwLjEKKyAgICAgICAgICAgIFN1bW1hcnk6IEFuIGV4YW1wbGUgcGFja2FnZQor
ICAgICAgICAgICAgSG9tZS1wYWdlOiB3d3cuZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEF1dGhv
cjogRXJpYyBIYWZmYS1WZWUKKyAgICAgICAgICAgIEF1dGhvci1lbWFpbDogZXJpY0BleGFtcGxl
LmNvbXMKKyAgICAgICAgICAgIExpY2Vuc2U6IFVOS05PV04KKyAgICAgICAgICAgIERlc2NyaXB0
aW9uOiBVTktOT1dOCisgICAgICAgICAgICBQbGF0Zm9ybTogVU5LTk9XTgorICAgICAgICAgICAg
IiIiLAorICAgICAgICB9CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKEVn
Z0luZm9GaWxlLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIGJ1aWxkX2ZpbGVzKEVnZ0luZm9GaWxl
LmZpbGVzLCBwcmVmaXg9c2VsZi5zaXRlX2RpcikKKworCitjbGFzcyBMb2NhbFBhY2thZ2U6Cisg
ICAgZmlsZXMgPSB7CisgICAgICAgICJzZXR1cC5weSI6ICIiIgorICAgICAgICAgICAgaW1wb3J0
IHNldHVwdG9vbHMKKyAgICAgICAgICAgIHNldHVwdG9vbHMuc2V0dXAobmFtZT0ibG9jYWwtcGtn
IiwgdmVyc2lvbj0iMi4wLjEiKQorICAgICAgICAgICAgIiIiLAorICAgICAgICB9CisKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZml4dHVyZXMgPSBjb250ZXh0bGliLkV4aXRT
dGFjaygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmZpeHR1cmVzLmNsb3NlKQorICAg
ICAgICBzZWxmLmZpeHR1cmVzLmVudGVyX2NvbnRleHQodGVtcGRpcl9hc19jd2QoKSkKKyAgICAg
ICAgYnVpbGRfZmlsZXMoc2VsZi5maWxlcykKKworCitkZWYgYnVpbGRfZmlsZXMoZmlsZV9kZWZz
LCBwcmVmaXg9cGF0aGxpYi5QYXRoKCkpOgorICAgICIiIkJ1aWxkIGEgc2V0IG9mIGZpbGVzL2Rp
cmVjdG9yaWVzLCBhcyBkZXNjcmliZWQgYnkgdGhlCisKKyAgICBmaWxlX2RlZnMgZGljdGlvbmFy
eS4gIEVhY2gga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIGRpY3Rpb25hcnkgaXMKKyAgICBpbnRlcnBy
ZXRlZCBhcyBhIGZpbGVuYW1lL2NvbnRlbnRzIHBhaXIuICBJZiB0aGUgY29udGVudHMgdmFsdWUg
aXMgYQorICAgIGRpY3Rpb25hcnksIGEgZGlyZWN0b3J5IGlzIGNyZWF0ZWQsIGFuZCB0aGUgZGlj
dGlvbmFyeSBpbnRlcnByZXRlZAorICAgIGFzIHRoZSBmaWxlcyB3aXRoaW4gaXQsIHJlY3Vyc2l2
ZWx5LgorCisgICAgRm9yIGV4YW1wbGU6CisKKyAgICB7IlJFQURNRS50eHQiOiAiQSBSRUFETUUg
ZmlsZSIsCisgICAgICJmb28iOiB7CisgICAgICAgICJfX2luaXRfXy5weSI6ICIiLAorICAgICAg
ICAiYmFyIjogeworICAgICAgICAgICAgIl9faW5pdF9fLnB5IjogIiIsCisgICAgICAgIH0sCisg
ICAgICAgICJiYXoucHkiOiAiIyBTb21lIGNvZGUiLAorICAgICB9CisgICAgfQorICAgICIiIgor
ICAgIGZvciBuYW1lLCBjb250ZW50cyBpbiBmaWxlX2RlZnMuaXRlbXMoKToKKyAgICAgICAgZnVs
bF9uYW1lID0gcHJlZml4IC8gbmFtZQorICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnRlbnRzLCBk
aWN0KToKKyAgICAgICAgICAgIGZ1bGxfbmFtZS5ta2RpcigpCisgICAgICAgICAgICBidWlsZF9m
aWxlcyhjb250ZW50cywgcHJlZml4PWZ1bGxfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoY29udGVudHMsIGJ5dGVzKToKKyAgICAgICAgICAgICAgICB3aXRo
IGZ1bGxfbmFtZS5vcGVuKCd3YicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo
Y29udGVudHMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdpdGggZnVsbF9u
YW1lLm9wZW4oJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKERBTFMoY29u
dGVudHMpKQorCisKK2NsYXNzIEZpbGVCdWlsZGVyOgorICAgIGRlZiB1bmljb2RlX2ZpbGVuYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gRlNfTk9OQVNDSUkgb3IgXAorICAgICAgICAgICAgc2Vs
Zi5za2lwKCJGaWxlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IG5vbi1hc2NpaS4iKQorCisKK2Rl
ZiBEQUxTKHN0cik6CisgICAgIkRlZGVudCBhbmQgbGVmdC1zdHJpcCIKKyAgICByZXR1cm4gdGV4
dHdyYXAuZGVkZW50KHN0cikubHN0cmlwKCkKKworCitjbGFzcyBOdWxsRmluZGVyOgorICAgIGRl
ZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvcHkzOWNvbXBhdC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGli
X21ldGFkYXRhL3Rlc3RzL3B5Mzljb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hMTc1ZDRjMzU1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9y
dGxpYl9tZXRhZGF0YS90ZXN0cy9weTM5Y29tcGF0LnB5CkBAIC0wLDAgKzEsNCBAQAordHJ5Ogor
ICAgIGZyb20gdGVzdC5zdXBwb3J0Lm9zX2hlbHBlcnMgaW1wb3J0IEZTX05PTkFTQ0lJCitleGNl
cHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEZTX05PTkFTQ0lJ
ICAjIG5vcWEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3Rlc3Rf
YXBpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvdGVzdF9hcGkucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZmE5Nzk5NjQyMzEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X2FwaS5weQpAQCAt
MCwwICsxLDE5NiBAQAoraW1wb3J0IHJlCitpbXBvcnQgdGV4dHdyYXAKKwordHJ5OgorICAgIGlt
cG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBv
cnQgdW5pdHRlc3QKKworZnJvbSAuIGltcG9ydCBmaXh0dXJlcworZnJvbSBpbXBvcnRsaWJfbWV0
YWRhdGEgaW1wb3J0ICgKKyAgICBEaXN0cmlidXRpb24sIFBhY2thZ2VOb3RGb3VuZEVycm9yLCBk
aXN0cmlidXRpb24sCisgICAgZW50cnlfcG9pbnRzLCBmaWxlcywgbWV0YWRhdGEsIHJlcXVpcmVz
LCB2ZXJzaW9uLAorICAgICkKKwordHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9y
dCBJdGVyYXRvcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1w
b3J0IEl0ZXJhdG9yICAjIG5vcWE6IEY0MDEKKwordHJ5OgorICAgIGZyb20gYnVpbHRpbnMgaW1w
b3J0IHN0ciBhcyB0ZXh0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBfX2J1aWx0aW5f
XyBpbXBvcnQgdW5pY29kZSBhcyB0ZXh0CisKKworY2xhc3MgQVBJVGVzdHMoCisgICAgICAgIGZp
eHR1cmVzLkVnZ0luZm9Qa2csCisgICAgICAgIGZpeHR1cmVzLkRpc3RJbmZvUGtnLAorICAgICAg
ICBmaXh0dXJlcy5EaXN0SW5mb1BrZ1dpdGhEb3QsCisgICAgICAgIGZpeHR1cmVzLkVnZ0luZm9G
aWxlLAorICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICB2ZXJzaW9uX3BhdHRlcm4g
PSByJ1xkK1wuXGQrKFwuXGQpPycKKworICAgIGRlZiB0ZXN0X3JldHJpZXZlc192ZXJzaW9uX29m
X3NlbGYoc2VsZik6CisgICAgICAgIHBrZ192ZXJzaW9uID0gdmVyc2lvbignZWdnaW5mby1wa2cn
KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwa2dfdmVyc2lvbiwgdGV4dCkKKyAgICAgICAg
YXNzZXJ0IHJlLm1hdGNoKHNlbGYudmVyc2lvbl9wYXR0ZXJuLCBwa2dfdmVyc2lvbikKKworICAg
IGRlZiB0ZXN0X3JldHJpZXZlc192ZXJzaW9uX29mX2Rpc3RpbmZvX3BrZyhzZWxmKToKKyAgICAg
ICAgcGtnX3ZlcnNpb24gPSB2ZXJzaW9uKCdkaXN0aW5mby1wa2cnKQorICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShwa2dfdmVyc2lvbiwgdGV4dCkKKyAgICAgICAgYXNzZXJ0IHJlLm1hdGNoKHNl
bGYudmVyc2lvbl9wYXR0ZXJuLCBwa2dfdmVyc2lvbikKKworICAgIGRlZiB0ZXN0X2Zvcl9uYW1l
X2RvZXNfbm90X2V4aXN0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBh
Y2thZ2VOb3RGb3VuZEVycm9yKToKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbignZG9lcy1ub3Qt
ZXhpc3QnKQorCisgICAgZGVmIHRlc3RfbmFtZV9ub3JtYWxpemF0aW9uKHNlbGYpOgorICAgICAg
ICBuYW1lcyA9ICdwa2cuZG90JywgJ3BrZ19kb3QnLCAncGtnLWRvdCcsICdwa2cuLmRvdCcsICdQ
a2cuRG90JworICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5zdWJUZXN0KG5hbWUpOgorICAgICAgICAgICAgICAgIGFzc2VydCBkaXN0cmlidXRpb24obmFt
ZSkubWV0YWRhdGFbJ05hbWUnXSA9PSAncGtnLmRvdCcKKworICAgIGRlZiB0ZXN0X2Zvcl90b3Bf
bGV2ZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBkaXN0
cmlidXRpb24oJ2VnZ2luZm8tcGtnJykucmVhZF90ZXh0KCd0b3BfbGV2ZWwudHh0Jykuc3RyaXAo
KSwKKyAgICAgICAgICAgICdtb2QnKQorCisgICAgZGVmIHRlc3RfcmVhZF90ZXh0KHNlbGYpOgor
ICAgICAgICB0b3BfbGV2ZWwgPSBbCisgICAgICAgICAgICBwYXRoIGZvciBwYXRoIGluIGZpbGVz
KCdlZ2dpbmZvLXBrZycpCisgICAgICAgICAgICBpZiBwYXRoLm5hbWUgPT0gJ3RvcF9sZXZlbC50
eHQnCisgICAgICAgICAgICBdWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9wX2xldmVs
LnJlYWRfdGV4dCgpLCAnbW9kXG4nKQorCisgICAgZGVmIHRlc3RfZW50cnlfcG9pbnRzKHNlbGYp
OgorICAgICAgICBlbnRyaWVzID0gZGljdChlbnRyeV9wb2ludHMoKVsnZW50cmllcyddKQorICAg
ICAgICBlcCA9IGVudHJpZXNbJ21haW4nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVwLnZh
bHVlLCAnbW9kOm1haW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVwLmV4dHJhcywgW10p
CisKKyAgICBkZWYgdGVzdF9tZXRhZGF0YV9mb3JfdGhpc19wYWNrYWdlKHNlbGYpOgorICAgICAg
ICBtZCA9IG1ldGFkYXRhKCdlZ2dpbmZvLXBrZycpCisgICAgICAgIGFzc2VydCBtZFsnYXV0aG9y
J10gPT0gJ1N0ZXZlbiBNYScKKyAgICAgICAgYXNzZXJ0IG1kWydMSUNFTlNFJ10gPT0gJ1Vua25v
d24nCisgICAgICAgIGFzc2VydCBtZFsnTmFtZSddID09ICdlZ2dpbmZvLXBrZycKKyAgICAgICAg
Y2xhc3NpZmllcnMgPSBtZC5nZXRfYWxsKCdDbGFzc2lmaWVyJykKKyAgICAgICAgYXNzZXJ0ICdU
b3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMnIGluIGNsYXNzaWZpZXJz
CisKKyAgICBkZWYgdGVzdF9pbXBvcnRsaWJfbWV0YWRhdGFfdmVyc2lvbihzZWxmKToKKyAgICAg
ICAgcmVzb2x2ZWQgPSB2ZXJzaW9uKCdpbXBvcnRsaWItbWV0YWRhdGEnKQorICAgICAgICBhc3Nl
cnQgcmUubWF0Y2goc2VsZi52ZXJzaW9uX3BhdHRlcm4sIHJlc29sdmVkKQorCisgICAgQHN0YXRp
Y21ldGhvZAorICAgIGRlZiBfdGVzdF9maWxlcyhmaWxlcyk6CisgICAgICAgIHJvb3QgPSBmaWxl
c1swXS5yb290CisgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgYXNzZXJ0
IGZpbGUucm9vdCA9PSByb290CisgICAgICAgICAgICBhc3NlcnQgbm90IGZpbGUuaGFzaCBvciBm
aWxlLmhhc2gudmFsdWUKKyAgICAgICAgICAgIGFzc2VydCBub3QgZmlsZS5oYXNoIG9yIGZpbGUu
aGFzaC5tb2RlID09ICdzaGEyNTYnCisgICAgICAgICAgICBhc3NlcnQgbm90IGZpbGUuc2l6ZSBv
ciBmaWxlLnNpemUgPj0gMAorICAgICAgICAgICAgYXNzZXJ0IGZpbGUubG9jYXRlKCkuZXhpc3Rz
KCkKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpbGUucmVhZF9iaW5hcnkoKSwgYnl0
ZXMpCisgICAgICAgICAgICBpZiBmaWxlLm5hbWUuZW5kc3dpdGgoJy5weScpOgorICAgICAgICAg
ICAgICAgIGZpbGUucmVhZF90ZXh0KCkKKworICAgIGRlZiB0ZXN0X2ZpbGVfaGFzaF9yZXByKHNl
bGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnRSZWdleCA9IHNlbGYuYXNzZXJ0
UmVnZXgKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBQeXRo
b24gMgorICAgICAgICAgICAgYXNzZXJ0UmVnZXggPSBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMK
KworICAgICAgICB1dGlsID0gWworICAgICAgICAgICAgcCBmb3IgcCBpbiBmaWxlcygnZGlzdGlu
Zm8tcGtnJykKKyAgICAgICAgICAgIGlmIHAubmFtZSA9PSAnbW9kLnB5JworICAgICAgICAgICAg
XVswXQorICAgICAgICBhc3NlcnRSZWdleCgKKyAgICAgICAgICAgIHJlcHIodXRpbC5oYXNoKSwK
KyAgICAgICAgICAgICc8RmlsZUhhc2ggbW9kZTogc2hhMjU2IHZhbHVlOiAuKj4nKQorCisgICAg
ZGVmIHRlc3RfZmlsZXNfZGlzdF9pbmZvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVz
KGZpbGVzKCdkaXN0aW5mby1wa2cnKSkKKworICAgIGRlZiB0ZXN0X2ZpbGVzX2VnZ19pbmZvKHNl
bGYpOgorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzKGZpbGVzKCdlZ2dpbmZvLXBrZycpKQorCisg
ICAgZGVmIHRlc3RfdmVyc2lvbl9lZ2dfaW5mb19maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHZlcnNpb24oJ2VnZ2luZm8tZmlsZScpLCAnMC4xJykKKworICAgIGRlZiB0ZXN0
X3JlcXVpcmVzX2VnZ19pbmZvX2ZpbGUoc2VsZik6CisgICAgICAgIHJlcXVpcmVtZW50cyA9IHJl
cXVpcmVzKCdlZ2dpbmZvLWZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXF1aXJl
bWVudHMpCisKKyAgICBkZWYgdGVzdF9yZXF1aXJlc19lZ2dfaW5mbyhzZWxmKToKKyAgICAgICAg
ZGVwcyA9IHJlcXVpcmVzKCdlZ2dpbmZvLXBrZycpCisgICAgICAgIGFzc2VydCBsZW4oZGVwcykg
PT0gMgorICAgICAgICBhc3NlcnQgYW55KAorICAgICAgICAgICAgZGVwID09ICd3aGVlbCA+PSAx
LjA7IHB5dGhvbl92ZXJzaW9uID49ICIyLjciJworICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBz
CisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1aXJlc19kaXN0X2luZm8oc2VsZik6
CisgICAgICAgIGRlcHMgPSByZXF1aXJlcygnZGlzdGluZm8tcGtnJykKKyAgICAgICAgYXNzZXJ0
IGxlbihkZXBzKSA9PSAyCisgICAgICAgIGFzc2VydCBhbGwoZGVwcykKKyAgICAgICAgYXNzZXJ0
ICd3aGVlbCA+PSAxLjAnIGluIGRlcHMKKyAgICAgICAgYXNzZXJ0ICJweXRlc3Q7IGV4dHJhID09
ICd0ZXN0JyIgaW4gZGVwcworCisgICAgZGVmIHRlc3RfbW9yZV9jb21wbGV4X2RlcHNfcmVxdWly
ZXNfdGV4dChzZWxmKToKKyAgICAgICAgcmVxdWlyZXMgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisg
ICAgICAgICAgICBkZXAxCisgICAgICAgICAgICBkZXAyCisKKyAgICAgICAgICAgIFs6cHl0aG9u
X3ZlcnNpb24gPCAiMyJdCisgICAgICAgICAgICBkZXAzCisKKyAgICAgICAgICAgIFtleHRyYTFd
CisgICAgICAgICAgICBkZXA0CisKKyAgICAgICAgICAgIFtleHRyYTI6cHl0aG9uX3ZlcnNpb24g
PCAiMyJdCisgICAgICAgICAgICBkZXA1CisgICAgICAgICAgICAiIiIpCisgICAgICAgIGRlcHMg
PSBzb3J0ZWQoRGlzdHJpYnV0aW9uLl9kZXBzX2Zyb21fcmVxdWlyZXNfdGV4dChyZXF1aXJlcykp
CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgJ2RlcDEnLAorICAgICAgICAgICAg
J2RlcDInLAorICAgICAgICAgICAgJ2RlcDM7IHB5dGhvbl92ZXJzaW9uIDwgIjMiJywKKyAgICAg
ICAgICAgICdkZXA0OyBleHRyYSA9PSAiZXh0cmExIicsCisgICAgICAgICAgICAnZGVwNTsgKHB5
dGhvbl92ZXJzaW9uIDwgIjMiKSBhbmQgZXh0cmEgPT0gImV4dHJhMiInLAorICAgICAgICAgICAg
XQorICAgICAgICAjIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIGVudmlyb25tZW50IG1hcmtlciBl
eHByZXNzaW9uIGJlCisgICAgICAgICMgd3JhcHBlZCBpbiBwYXJlbnRoZXNlcyB0byBhdm9pZCB0
aGUgZm9sbG93aW5nICdhbmQnIGJpbmRpbmcgbW9yZQorICAgICAgICAjIHRpZ2h0bHkgdGhhbiBz
b21lIG90aGVyIHBhcnQgb2YgdGhlIGVudmlyb25tZW50IGV4cHJlc3Npb24uCisKKyAgICAgICAg
YXNzZXJ0IGRlcHMgPT0gZXhwZWN0ZWQKKworCitjbGFzcyBMZWdhY3lEb3RzKGZpeHR1cmVzLkRp
c3RJbmZvUGtnV2l0aERvdExlZ2FjeSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0
X25hbWVfbm9ybWFsaXphdGlvbihzZWxmKToKKyAgICAgICAgbmFtZXMgPSAncGtnLmRvdCcsICdw
a2dfZG90JywgJ3BrZy1kb3QnLCAncGtnLi5kb3QnLCAnUGtnLkRvdCcKKyAgICAgICAgZm9yIG5h
bWUgaW4gbmFtZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lKToKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgZGlzdHJpYnV0aW9uKG5hbWUpLm1ldGFkYXRhWydOYW1lJ10gPT0g
J3BrZy5kb3QnCisKKworY2xhc3MgT2ZmU3lzUGF0aFRlc3RzKGZpeHR1cmVzLkRpc3RJbmZvUGtn
T2ZmUGF0aCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbmRfZGlzdHJpYnV0
aW9uc19zcGVjaWZpZWRfcGF0aChzZWxmKToKKyAgICAgICAgZGlzdHMgPSBEaXN0cmlidXRpb24u
ZGlzY292ZXIocGF0aD1bc3RyKHNlbGYuc2l0ZV9kaXIpXSkKKyAgICAgICAgYXNzZXJ0IGFueSgK
KyAgICAgICAgICAgIGRpc3QubWV0YWRhdGFbJ05hbWUnXSA9PSAnZGlzdGluZm8tcGtnJworICAg
ICAgICAgICAgZm9yIGRpc3QgaW4gZGlzdHMKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X2Rpc3RyaWJ1dGlvbl9hdF9wYXRobGliKHNlbGYpOgorICAgICAgICAiIiJEZW1vbnN0cmF0ZSBo
b3cgdG8gbG9hZCBtZXRhZGF0YSBkaXJlY3QgZnJvbSBhIGRpcmVjdG9yeS4KKyAgICAgICAgIiIi
CisgICAgICAgIGRpc3RfaW5mb19wYXRoID0gc2VsZi5zaXRlX2RpciAvICdkaXN0aW5mb19wa2ct
MS4wLjAuZGlzdC1pbmZvJworICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uLmF0KGRpc3RfaW5m
b19wYXRoKQorICAgICAgICBhc3NlcnQgZGlzdC52ZXJzaW9uID09ICcxLjAuMCcKKworICAgIGRl
ZiB0ZXN0X2Rpc3RyaWJ1dGlvbl9hdF9zdHIoc2VsZik6CisgICAgICAgIGRpc3RfaW5mb19wYXRo
ID0gc2VsZi5zaXRlX2RpciAvICdkaXN0aW5mb19wa2ctMS4wLjAuZGlzdC1pbmZvJworICAgICAg
ICBkaXN0ID0gRGlzdHJpYnV0aW9uLmF0KHN0cihkaXN0X2luZm9fcGF0aCkpCisgICAgICAgIGFz
c2VydCBkaXN0LnZlcnNpb24gPT0gJzEuMC4wJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJf
bWV0YWRhdGEvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4zNzc1NzRjNDQ4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9y
dGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5CkBAIC0wLDAgKzEsNTQgQEAK
KyMgY29kaW5nOiB1dGYtOAorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJh
bHMKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcGFja2FnaW5nLnJlcXVpcmVtZW50cworaW1w
b3J0IHBhY2thZ2luZy52ZXJzaW9uCisKK2Zyb20gLiBpbXBvcnQgZml4dHVyZXMKK2Zyb20gaW1w
b3J0bGliX21ldGFkYXRhIGltcG9ydCAoCisgICAgRGlzdHJpYnV0aW9uLAorICAgIF9jb21wYXQs
CisgICAgdmVyc2lvbiwKKyAgICApCisKKworY2xhc3MgSW50ZWdyYXRpb25UZXN0cyhmaXh0dXJl
cy5EaXN0SW5mb1BrZywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGFja2Fn
ZV9zcGVjX2luc3RhbGxlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElsbHVzdHJhdGUg
dGhlIHJlY29tbWVuZGVkIHByb2NlZHVyZSB0byBkZXRlcm1pbmUgaWYKKyAgICAgICAgYSBzcGVj
aWZpZWQgdmVyc2lvbiBvZiBhIHBhY2thZ2UgaXMgaW5zdGFsbGVkLgorICAgICAgICAiIiIKKyAg
ICAgICAgZGVmIGlzX2luc3RhbGxlZChwYWNrYWdlX3NwZWMpOgorICAgICAgICAgICAgcmVxID0g
cGFja2FnaW5nLnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudChwYWNrYWdlX3NwZWMpCisgICAgICAg
ICAgICByZXR1cm4gdmVyc2lvbihyZXEubmFtZSkgaW4gcmVxLnNwZWNpZmllcgorCisgICAgICAg
IGFzc2VydCBpc19pbnN0YWxsZWQoJ2Rpc3RpbmZvLXBrZz09MS4wJykKKyAgICAgICAgYXNzZXJ0
IGlzX2luc3RhbGxlZCgnZGlzdGluZm8tcGtnPj0xLjAsPDIuMCcpCisgICAgICAgIGFzc2VydCBu
b3QgaXNfaW5zdGFsbGVkKCdkaXN0aW5mby1wa2c8MS4wJykKKworCitjbGFzcyBGaW5kZXJUZXN0
cyhmaXh0dXJlcy5GaXh0dXJlcywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rf
ZmluZGVyX3dpdGhvdXRfbW9kdWxlKHNlbGYpOgorICAgICAgICBjbGFzcyBNb2R1bGVGcmVlRmlu
ZGVyKGZpeHR1cmVzLk51bGxGaW5kZXIpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBB
IGZpbmRlciB3aXRob3V0IGFuIF9fbW9kdWxlX18gYXR0cmlidXRlCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgorICAgICAgICAg
ICAgICAgIGlmIG5hbWUgPT0gJ19fbW9kdWxlX18nOgorICAgICAgICAgICAgICAgICAgICByYWlz
ZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9f
Z2V0YXR0cmlidXRlX18obmFtZSkKKworICAgICAgICBzZWxmLmZpeHR1cmVzLmVudGVyX2NvbnRl
eHQoCisgICAgICAgICAgICBmaXh0dXJlcy5pbnN0YWxsX2ZpbmRlcihNb2R1bGVGcmVlRmluZGVy
KCkpKQorICAgICAgICBfY29tcGF0LmRpc2FibGVfc3RkbGliX2ZpbmRlcigpCisKKworY2xhc3Mg
TG9jYWxQcm9qZWN0VGVzdHMoZml4dHVyZXMuTG9jYWxQYWNrYWdlLCB1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgZGVmIHRlc3RfZmluZF9sb2NhbChzZWxmKToKKyAgICAgICAgZGlzdCA9IERpc3Ry
aWJ1dGlvbi5fbG9jYWwoKQorICAgICAgICBhc3NlcnQgZGlzdC5tZXRhZGF0YVsnTmFtZSddID09
ICdsb2NhbC1wa2cnCisgICAgICAgIGFzc2VydCBkaXN0LnZlcnNpb24gPT0gJzIuMC4xJwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvdGVzdF9tYWluLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvdGVzdF9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQ3NzUwYmMzMDE2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvdGVzdF9tYWluLnB5CkBAIC0wLDAgKzEsMjg1
IEBACisjIGNvZGluZzogdXRmLTgKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRl
cmFscworCitpbXBvcnQgcmUKK2ltcG9ydCBqc29uCitpbXBvcnQgcGlja2xlCitpbXBvcnQgdGV4
dHdyYXAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxp
Yl9tZXRhZGF0YQoraW1wb3J0IHB5ZmFrZWZzLmZha2VfZmlsZXN5c3RlbV91bml0dGVzdCBhcyBm
ZnMKKworZnJvbSAuIGltcG9ydCBmaXh0dXJlcworZnJvbSBpbXBvcnRsaWJfbWV0YWRhdGEgaW1w
b3J0ICgKKyAgICBEaXN0cmlidXRpb24sIEVudHJ5UG9pbnQsIE1ldGFkYXRhUGF0aEZpbmRlciwK
KyAgICBQYWNrYWdlTm90Rm91bmRFcnJvciwgZGlzdHJpYnV0aW9ucywKKyAgICBlbnRyeV9wb2lu
dHMsIG1ldGFkYXRhLCB2ZXJzaW9uLAorICAgICkKKwordHJ5OgorICAgIGZyb20gYnVpbHRpbnMg
aW1wb3J0IHN0ciBhcyB0ZXh0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBfX2J1aWx0
aW5fXyBpbXBvcnQgdW5pY29kZSBhcyB0ZXh0CisKKworY2xhc3MgQmFzaWNUZXN0cyhmaXh0dXJl
cy5EaXN0SW5mb1BrZywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHZlcnNpb25fcGF0dGVybiA9
IHInXGQrXC5cZCsoXC5cZCk/JworCisgICAgZGVmIHRlc3RfcmV0cmlldmVzX3ZlcnNpb25fb2Zf
c2VsZihzZWxmKToKKyAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbi5mcm9tX25hbWUoJ2Rpc3Rp
bmZvLXBrZycpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRpc3QudmVyc2lvbiwgdGV4dCkK
KyAgICAgICAgYXNzZXJ0IHJlLm1hdGNoKHNlbGYudmVyc2lvbl9wYXR0ZXJuLCBkaXN0LnZlcnNp
b24pCisKKyAgICBkZWYgdGVzdF9mb3JfbmFtZV9kb2VzX25vdF9leGlzdChzZWxmKToKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQYWNrYWdlTm90Rm91bmRFcnJvcik6CisgICAgICAg
ICAgICBEaXN0cmlidXRpb24uZnJvbV9uYW1lKCdkb2VzLW5vdC1leGlzdCcpCisKKyAgICBkZWYg
dGVzdF9wYWNrYWdlX25vdF9mb3VuZF9tZW50aW9uc19tZXRhZGF0YShzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFdoZW4gYSBwYWNrYWdlIGlzIG5vdCBmb3VuZCwgdGhhdCBjb3VsZCBpbmRp
Y2F0ZSB0aGF0IHRoZQorICAgICAgICBwYWNrZ2FlIGlzIG5vdCBpbnN0YWxsZWQgb3IgdGhhdCBp
dCBpcyBpbnN0YWxsZWQgd2l0aG91dAorICAgICAgICBtZXRhZGF0YS4gRW5zdXJlIHRoZSBleGNl
cHRpb24gbWVudGlvbnMgbWV0YWRhdGEgdG8gaGVscAorICAgICAgICBndWlkZSB1c2VycyB0b3dh
cmQgdGhlIGNhdXNlLiBTZWUgIzEyNC4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoUGFja2FnZU5vdEZvdW5kRXJyb3IpIGFzIGN0eDoKKyAgICAgICAgICAgIERp
c3RyaWJ1dGlvbi5mcm9tX25hbWUoJ2RvZXMtbm90LWV4aXN0JykKKworICAgICAgICBhc3NlcnQg
Im1ldGFkYXRhIiBpbiBzdHIoY3R4LmV4Y2VwdGlvbikKKworICAgIGRlZiB0ZXN0X25ld19zdHls
ZV9jbGFzc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRGlzdHJpYnV0
aW9uLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoTWV0YWRhdGFQYXRoRmlu
ZGVyLCB0eXBlKQorCisKK2NsYXNzIEltcG9ydFRlc3RzKGZpeHR1cmVzLkRpc3RJbmZvUGtnLCB1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW1wb3J0X25vbmV4aXN0ZW50X21vZHVs
ZShzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgTWV0YWRhdGFQYXRoRmluZGVyIGRv
ZXMgbm90IGNyYXNoIGFuIGltcG9ydCBvZiBhCisgICAgICAgICMgbm9uLWV4aXN0ZW50IG1vZHVs
ZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAg
ICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnZG9lc19ub3RfZXhpc3QnKQorCisgICAgZGVm
IHRlc3RfcmVzb2x2ZShzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGRpY3QoZW50cnlfcG9pbnRz
KClbJ2VudHJpZXMnXSkKKyAgICAgICAgZXAgPSBlbnRyaWVzWydtYWluJ10KKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChlcC5sb2FkKCkuX19uYW1lX18sICJtYWluIikKKworICAgIGRlZiB0ZXN0
X2VudHJ5cG9pbnRfd2l0aF9jb2xvbl9pbl9uYW1lKHNlbGYpOgorICAgICAgICBlbnRyaWVzID0g
ZGljdChlbnRyeV9wb2ludHMoKVsnZW50cmllcyddKQorICAgICAgICBlcCA9IGVudHJpZXNbJ25z
OnN1YiddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXAudmFsdWUsICdtb2Q6bWFpbicpCisK
KyAgICBkZWYgdGVzdF9yZXNvbHZlX3dpdGhvdXRfYXR0cihzZWxmKToKKyAgICAgICAgZXAgPSBF
bnRyeVBvaW50KAorICAgICAgICAgICAgbmFtZT0nZXAnLAorICAgICAgICAgICAgdmFsdWU9J2lt
cG9ydGxpYl9tZXRhZGF0YScsCisgICAgICAgICAgICBncm91cD0nZ3JwJywKKyAgICAgICAgICAg
ICkKKyAgICAgICAgYXNzZXJ0IGVwLmxvYWQoKSBpcyBpbXBvcnRsaWJfbWV0YWRhdGEKKworCitj
bGFzcyBOYW1lTm9ybWFsaXphdGlvblRlc3RzKAorICAgICAgICBmaXh0dXJlcy5PblN5c1BhdGgs
IGZpeHR1cmVzLlNpdGVEaXIsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIHBrZ193aXRoX2Rhc2hlcyhzaXRlX2Rpcik6CisgICAgICAgICIiIgorICAgICAg
ICBDcmVhdGUgbWluaW1hbCBtZXRhZGF0YSBmb3IgYSBwYWNrYWdlIHdpdGggZGFzaGVzCisgICAg
ICAgIGluIHRoZSBuYW1lIChhbmQgdGh1cyB1bmRlcnNjb3JlcyBpbiB0aGUgZmlsZW5hbWUpLgor
ICAgICAgICAiIiIKKyAgICAgICAgbWV0YWRhdGFfZGlyID0gc2l0ZV9kaXIgLyAnbXlfcGtnLmRp
c3QtaW5mbycKKyAgICAgICAgbWV0YWRhdGFfZGlyLm1rZGlyKCkKKyAgICAgICAgbWV0YWRhdGEg
PSBtZXRhZGF0YV9kaXIgLyAnTUVUQURBVEEnCisgICAgICAgIHdpdGggbWV0YWRhdGEub3Blbign
dycpIGFzIHN0cm06CisgICAgICAgICAgICBzdHJtLndyaXRlKCdWZXJzaW9uOiAxLjBcbicpCisg
ICAgICAgIHJldHVybiAnbXktcGtnJworCisgICAgZGVmIHRlc3RfZGFzaGVzX2luX2Rpc3RfbmFt
ZV9mb3VuZF9hc191bmRlcnNjb3JlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEZvciBh
IHBhY2thZ2Ugd2l0aCBhIGRhc2ggaW4gdGhlIG5hbWUsIHRoZSBkaXN0LWluZm8gbWV0YWRhdGEK
KyAgICAgICAgdXNlcyB1bmRlcnNjb3JlcyBpbiB0aGUgbmFtZS4gRW5zdXJlIHRoZSBtZXRhZGF0
YSBsb2Fkcy4KKyAgICAgICAgIiIiCisgICAgICAgIHBrZ19uYW1lID0gc2VsZi5wa2dfd2l0aF9k
YXNoZXMoc2VsZi5zaXRlX2RpcikKKyAgICAgICAgYXNzZXJ0IHZlcnNpb24ocGtnX25hbWUpID09
ICcxLjAnCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHBrZ193aXRoX21peGVkX2Nhc2Uo
c2l0ZV9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIG1pbmltYWwgbWV0YWRhdGEg
Zm9yIGEgcGFja2FnZSB3aXRoIG1peGVkIGNhc2UKKyAgICAgICAgaW4gdGhlIG5hbWUuCisgICAg
ICAgICIiIgorICAgICAgICBtZXRhZGF0YV9kaXIgPSBzaXRlX2RpciAvICdDaGVycnlQeS5kaXN0
LWluZm8nCisgICAgICAgIG1ldGFkYXRhX2Rpci5ta2RpcigpCisgICAgICAgIG1ldGFkYXRhID0g
bWV0YWRhdGFfZGlyIC8gJ01FVEFEQVRBJworICAgICAgICB3aXRoIG1ldGFkYXRhLm9wZW4oJ3cn
KSBhcyBzdHJtOgorICAgICAgICAgICAgc3RybS53cml0ZSgnVmVyc2lvbjogMS4wXG4nKQorICAg
ICAgICByZXR1cm4gJ0NoZXJyeVB5JworCisgICAgZGVmIHRlc3RfZGlzdF9uYW1lX2ZvdW5kX2Fz
X2FueV9jYXNlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRW5zdXJlIHRoZSBtZXRhZGF0
YSBsb2FkcyB3aGVuIHF1ZXJpZWQgd2l0aCBhbnkgY2FzZS4KKyAgICAgICAgIiIiCisgICAgICAg
IHBrZ19uYW1lID0gc2VsZi5wa2dfd2l0aF9taXhlZF9jYXNlKHNlbGYuc2l0ZV9kaXIpCisgICAg
ICAgIGFzc2VydCB2ZXJzaW9uKHBrZ19uYW1lKSA9PSAnMS4wJworICAgICAgICBhc3NlcnQgdmVy
c2lvbihwa2dfbmFtZS5sb3dlcigpKSA9PSAnMS4wJworICAgICAgICBhc3NlcnQgdmVyc2lvbihw
a2dfbmFtZS51cHBlcigpKSA9PSAnMS4wJworCisKK2NsYXNzIE5vbkFTQ0lJVGVzdHMoZml4dHVy
ZXMuT25TeXNQYXRoLCBmaXh0dXJlcy5TaXRlRGlyLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
QHN0YXRpY21ldGhvZAorICAgIGRlZiBwa2dfd2l0aF9ub25fYXNjaWlfZGVzY3JpcHRpb24oc2l0
ZV9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIG1pbmltYWwgbWV0YWRhdGEgZm9y
IGEgcGFja2FnZSB3aXRoIG5vbi1BU0NJSSBpbgorICAgICAgICB0aGUgZGVzY3JpcHRpb24uCisg
ICAgICAgICIiIgorICAgICAgICBtZXRhZGF0YV9kaXIgPSBzaXRlX2RpciAvICdwb3J0ZW5kLmRp
c3QtaW5mbycKKyAgICAgICAgbWV0YWRhdGFfZGlyLm1rZGlyKCkKKyAgICAgICAgbWV0YWRhdGEg
PSBtZXRhZGF0YV9kaXIgLyAnTUVUQURBVEEnCisgICAgICAgIHdpdGggbWV0YWRhdGEub3Blbign
dycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoJ0Rlc2Ny
aXB0aW9uOiBww7Ryy4h0ZW5kXG4nKQorICAgICAgICByZXR1cm4gJ3BvcnRlbmQnCisKKyAgICBA
c3RhdGljbWV0aG9kCisgICAgZGVmIHBrZ193aXRoX25vbl9hc2NpaV9kZXNjcmlwdGlvbl9lZ2df
aW5mbyhzaXRlX2Rpcik6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgbWluaW1hbCBtZXRh
ZGF0YSBmb3IgYW4gZWdnLWluZm8gcGFja2FnZSB3aXRoCisgICAgICAgIG5vbi1BU0NJSSBpbiB0
aGUgZGVzY3JpcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBtZXRhZGF0YV9kaXIgPSBzaXRl
X2RpciAvICdwb3J0ZW5kLmRpc3QtaW5mbycKKyAgICAgICAgbWV0YWRhdGFfZGlyLm1rZGlyKCkK
KyAgICAgICAgbWV0YWRhdGEgPSBtZXRhZGF0YV9kaXIgLyAnTUVUQURBVEEnCisgICAgICAgIHdp
dGggbWV0YWRhdGEub3BlbigndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZwOgorICAgICAgICAg
ICAgZnAud3JpdGUodGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgICAgIE5hbWU6IHBv
cnRlbmQKKworICAgICAgICAgICAgICAgIHDDtHLLiHRlbmQKKyAgICAgICAgICAgICAgICAiIiIp
LmxzdHJpcCgpKQorICAgICAgICByZXR1cm4gJ3BvcnRlbmQnCisKKyAgICBkZWYgdGVzdF9tZXRh
ZGF0YV9sb2FkcyhzZWxmKToKKyAgICAgICAgcGtnX25hbWUgPSBzZWxmLnBrZ193aXRoX25vbl9h
c2NpaV9kZXNjcmlwdGlvbihzZWxmLnNpdGVfZGlyKQorICAgICAgICBtZXRhID0gbWV0YWRhdGEo
cGtnX25hbWUpCisgICAgICAgIGFzc2VydCBtZXRhWydEZXNjcmlwdGlvbiddID09ICdww7Ryy4h0
ZW5kJworCisgICAgZGVmIHRlc3RfbWV0YWRhdGFfbG9hZHNfZWdnX2luZm8oc2VsZik6CisgICAg
ICAgIHBrZ19uYW1lID0gc2VsZi5wa2dfd2l0aF9ub25fYXNjaWlfZGVzY3JpcHRpb25fZWdnX2lu
Zm8oc2VsZi5zaXRlX2RpcikKKyAgICAgICAgbWV0YSA9IG1ldGFkYXRhKHBrZ19uYW1lKQorICAg
ICAgICBhc3NlcnQgbWV0YS5nZXRfcGF5bG9hZCgpID09ICdww7Ryy4h0ZW5kXG4nCisKKworY2xh
c3MgRGlzY292ZXJ5VGVzdHMoZml4dHVyZXMuRWdnSW5mb1BrZywKKyAgICAgICAgICAgICAgICAg
ICAgIGZpeHR1cmVzLkRpc3RJbmZvUGtnLAorICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3Qu
VGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGFja2FnZV9kaXNjb3Zlcnkoc2VsZik6CisgICAg
ICAgIGRpc3RzID0gbGlzdChkaXN0cmlidXRpb25zKCkpCisgICAgICAgIGFzc2VydCBhbGwoCisg
ICAgICAgICAgICBpc2luc3RhbmNlKGRpc3QsIERpc3RyaWJ1dGlvbikKKyAgICAgICAgICAgIGZv
ciBkaXN0IGluIGRpc3RzCisgICAgICAgICAgICApCisgICAgICAgIGFzc2VydCBhbnkoCisgICAg
ICAgICAgICBkaXN0Lm1ldGFkYXRhWydOYW1lJ10gPT0gJ2VnZ2luZm8tcGtnJworICAgICAgICAg
ICAgZm9yIGRpc3QgaW4gZGlzdHMKKyAgICAgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGFueSgK
KyAgICAgICAgICAgIGRpc3QubWV0YWRhdGFbJ05hbWUnXSA9PSAnZGlzdGluZm8tcGtnJworICAg
ICAgICAgICAgZm9yIGRpc3QgaW4gZGlzdHMKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X2ludmFsaWRfdXNhZ2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvcik6CisgICAgICAgICAgICBsaXN0KGRpc3RyaWJ1dGlvbnMoY29udGV4dD0nc29tZXRo
aW5nJywgbmFtZT0nZWxzZScpKQorCisKK2NsYXNzIERpcmVjdG9yeVRlc3QoZml4dHVyZXMuT25T
eXNQYXRoLCBmaXh0dXJlcy5TaXRlRGlyLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRl
c3RfZWdnX2luZm8oc2VsZik6CisgICAgICAgICMgbWFrZSBhbiBgRUdHLUlORk9gIGRpcmVjdG9y
eSB0aGF0J3MgdW5yZWxhdGVkCisgICAgICAgIHNlbGYuc2l0ZV9kaXIuam9pbnBhdGgoJ0VHRy1J
TkZPJykubWtkaXIoKQorICAgICAgICAjIHVzZWQgdG8gY3Jhc2ggd2l0aCBgSXNBRGlyZWN0b3J5
RXJyb3JgCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUGFja2FnZU5vdEZvdW5kRXJy
b3IpOgorICAgICAgICAgICAgdmVyc2lvbigndW5rbm93bi1wYWNrYWdlJykKKworICAgIGRlZiB0
ZXN0X2VnZyhzZWxmKToKKyAgICAgICAgZWdnID0gc2VsZi5zaXRlX2Rpci5qb2lucGF0aCgnZm9v
LTMuNi5lZ2cnKQorICAgICAgICBlZ2cubWtkaXIoKQorICAgICAgICB3aXRoIHNlbGYuYWRkX3N5
c19wYXRoKGVnZyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBhY2thZ2VO
b3RGb3VuZEVycm9yKToKKyAgICAgICAgICAgICAgICB2ZXJzaW9uKCdmb28nKQorCisKK2NsYXNz
IE1pc3NpbmdTeXNQYXRoKGZpeHR1cmVzLk9uU3lzUGF0aCwgdW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgIHNpdGVfZGlyID0gJy9kb2VzLW5vdC1leGlzdCcKKworICAgIGRlZiB0ZXN0X2Rpc2NvdmVy
eShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIERpc2NvdmVyaW5nIGRpc3RyaWJ1dGlvbnMg
c2hvdWxkIHN1Y2NlZWQgZXZlbiBpZgorICAgICAgICB0aGVyZSBpcyBhbiBpbnZhbGlkIHBhdGgg
b24gc3lzLnBhdGguCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnRsaWJfbWV0YWRhdGEuZGlz
dHJpYnV0aW9ucygpCisKKworY2xhc3MgSW5hY2Nlc3NpYmxlU3lzUGF0aChmaXh0dXJlcy5PblN5
c1BhdGgsIGZmcy5UZXN0Q2FzZSk6CisgICAgc2l0ZV9kaXIgPSAnL2FjY2Vzcy1kZW5pZWQnCisK
KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKEluYWNjZXNzaWJsZVN5c1BhdGgs
IHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXRVcFB5ZmFrZWZzKCkKKyAgICAgICAgc2Vs
Zi5mcy5jcmVhdGVfZGlyKHNlbGYuc2l0ZV9kaXIsIHBlcm1fYml0cz0wMDApCisKKyAgICBkZWYg
dGVzdF9kaXNjb3Zlcnkoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBEaXNjb3ZlcmluZyBk
aXN0cmlidXRpb25zIHNob3VsZCBzdWNjZWVkIGV2ZW4gaWYKKyAgICAgICAgdGhlcmUgaXMgYW4g
aW52YWxpZCBwYXRoIG9uIHN5cy5wYXRoLgorICAgICAgICAiIiIKKyAgICAgICAgbGlzdChpbXBv
cnRsaWJfbWV0YWRhdGEuZGlzdHJpYnV0aW9ucygpKQorCisKK2NsYXNzIFRlc3RFbnRyeVBvaW50
cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKKyAg
ICAgICAgc3VwZXIoVGVzdEVudHJ5UG9pbnRzLCBzZWxmKS5fX2luaXRfXygqYXJncykKKyAgICAg
ICAgc2VsZi5lcCA9IGltcG9ydGxpYl9tZXRhZGF0YS5FbnRyeVBvaW50KCduYW1lJywgJ3ZhbHVl
JywgJ2dyb3VwJykKKworICAgIGRlZiB0ZXN0X2VudHJ5X3BvaW50X3BpY2tsZWFibGUoc2VsZik6
CisgICAgICAgIHJldml2ZWQgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHNlbGYuZXApKQor
ICAgICAgICBhc3NlcnQgcmV2aXZlZCA9PSBzZWxmLmVwCisKKyAgICBkZWYgdGVzdF9pbW11dGFi
bGUoc2VsZik6CisgICAgICAgICIiIkVudHJ5UG9pbnRzIHNob3VsZCBiZSBpbW11dGFibGUiIiIK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAg
ICAgICBzZWxmLmVwLm5hbWUgPSAnYmFkYWN0b3InCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYp
OgorICAgICAgICBhc3NlcnQgJ0VudHJ5UG9pbnQnIGluIHJlcHIoc2VsZi5lcCkKKyAgICAgICAg
YXNzZXJ0ICduYW1lPScgaW4gcmVwcihzZWxmLmVwKQorICAgICAgICBhc3NlcnQgIiduYW1lJyIg
aW4gcmVwcihzZWxmLmVwKQorCisgICAgZGVmIHRlc3RfaGFzaGFibGUoc2VsZik6CisgICAgICAg
ICIiIkVudHJ5UG9pbnRzIHNob3VsZCBiZSBoYXNoYWJsZSIiIgorICAgICAgICBoYXNoKHNlbGYu
ZXApCisKKyAgICBkZWYgdGVzdF9qc29uX2R1bXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBqc29uIHNob3VsZCBub3QgZXhwZWN0IHRvIGJlIGFibGUgdG8gZHVtcCBhbiBFbnRyeVBvaW50
CisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbik6
CisgICAgICAgICAgICBqc29uLmR1bXBzKHNlbGYuZXApCisKKyAgICBkZWYgdGVzdF9tb2R1bGUo
c2VsZik6CisgICAgICAgIGFzc2VydCBzZWxmLmVwLm1vZHVsZSA9PSAndmFsdWUnCisKKyAgICBk
ZWYgdGVzdF9hdHRyKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5lcC5hdHRyIGlzIE5vbmUK
KworCitjbGFzcyBGaWxlU3lzdGVtKAorICAgICAgICBmaXh0dXJlcy5PblN5c1BhdGgsIGZpeHR1
cmVzLlNpdGVEaXIsIGZpeHR1cmVzLkZpbGVCdWlsZGVyLAorICAgICAgICB1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfdW5pY29kZV9kaXJfb25fc3lzX3BhdGgoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBFbnN1cmUgYSBVbmljb2RlIHN1YmRpcmVjdG9yeSBvZiBhIGRpcmVj
dG9yeSBvbiBzeXMucGF0aAorICAgICAgICBkb2VzIG5vdCBjcmFzaC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGZpeHR1cmVzLmJ1aWxkX2ZpbGVzKAorICAgICAgICAgICAge3NlbGYudW5pY29kZV9m
aWxlbmFtZSgpOiB7fX0sCisgICAgICAgICAgICBwcmVmaXg9c2VsZi5zaXRlX2RpciwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgbGlzdChkaXN0cmlidXRpb25zKCkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X3ppcC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL3Rlc3RzL3Rlc3RfemlwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNWNlYmNkMDJmN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJf
bWV0YWRhdGEvdGVzdHMvdGVzdF96aXAucHkKQEAgLTAsMCArMSw4MCBAQAoraW1wb3J0IHN5cwor
aW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gaW1wb3J0bGliX21ldGFkYXRhIGltcG9ydCAoCisgICAg
ZGlzdHJpYnV0aW9uLCBlbnRyeV9wb2ludHMsIGZpbGVzLCBQYWNrYWdlTm90Rm91bmRFcnJvciwK
KyAgICB2ZXJzaW9uLCBkaXN0cmlidXRpb25zLAorICAgICkKKwordHJ5OgorICAgIGZyb20gaW1w
b3J0bGliIGltcG9ydCByZXNvdXJjZXMKKyAgICBnZXRhdHRyKHJlc291cmNlcywgJ2ZpbGVzJykK
KyAgICBnZXRhdHRyKHJlc291cmNlcywgJ2FzX2ZpbGUnKQorZXhjZXB0IChJbXBvcnRFcnJvciwg
QXR0cmlidXRlRXJyb3IpOgorICAgIGltcG9ydCBpbXBvcnRsaWJfcmVzb3VyY2VzIGFzIHJlc291
cmNlcworCit0cnk6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKK2V4Y2Vw
dCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbnRleHRsaWIyIGltcG9ydCBFeGl0U3RhY2sKKwor
CitjbGFzcyBUZXN0WmlwKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb290ID0gJ3Rlc3RzLmRh
dGEnCisKKyAgICBkZWYgX2ZpeHR1cmVfb25fcGF0aChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAg
IHBrZ19maWxlID0gcmVzb3VyY2VzLmZpbGVzKHNlbGYucm9vdCkuam9pbnBhdGgoZmlsZW5hbWUp
CisgICAgICAgIGZpbGUgPSBzZWxmLnJlc291cmNlcy5lbnRlcl9jb250ZXh0KHJlc291cmNlcy5h
c19maWxlKHBrZ19maWxlKSkKKyAgICAgICAgYXNzZXJ0IGZpbGUubmFtZS5zdGFydHN3aXRoKCdl
eGFtcGxlLScpLCBmaWxlLm5hbWUKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHN0cihmaWxl
KSkKKyAgICAgICAgc2VsZi5yZXNvdXJjZXMuY2FsbGJhY2soc3lzLnBhdGgucG9wLCAwKQorCisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIEZpbmQgdGhlIHBhdGggdG8gdGhlIGV4YW1w
bGUtKi53aGwgc28gd2UgY2FuIGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKKyAgICAgICAgIyBzeXMu
cGF0aCwgd2hlcmUgd2UnbGwgdGhlbiB0cnkgdG8gZmluZCB0aGUgbWV0YWRhdGEgdGhlcmVvZi4K
KyAgICAgICAgc2VsZi5yZXNvdXJjZXMgPSBFeGl0U3RhY2soKQorICAgICAgICBzZWxmLmFkZENs
ZWFudXAoc2VsZi5yZXNvdXJjZXMuY2xvc2UpCisgICAgICAgIHNlbGYuX2ZpeHR1cmVfb25fcGF0
aCgnZXhhbXBsZS0yMS4xMi1weTMtbm9uZS1hbnkud2hsJykKKworICAgIGRlZiB0ZXN0X3ppcF92
ZXJzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb24oJ2V4YW1wbGUn
KSwgJzIxLjEyJykKKworICAgIGRlZiB0ZXN0X3ppcF92ZXJzaW9uX2RvZXNfbm90X21hdGNoKHNl
bGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBhY2thZ2VOb3RGb3VuZEVycm9y
KToKKyAgICAgICAgICAgIHZlcnNpb24oJ2RlZmluaXRlbHktbm90LWluc3RhbGxlZCcpCisKKyAg
ICBkZWYgdGVzdF96aXBfZW50cnlfcG9pbnRzKHNlbGYpOgorICAgICAgICBzY3JpcHRzID0gZGlj
dChlbnRyeV9wb2ludHMoKVsnY29uc29sZV9zY3JpcHRzJ10pCisgICAgICAgIGVudHJ5X3BvaW50
ID0gc2NyaXB0c1snZXhhbXBsZSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnlfcG9p
bnQudmFsdWUsICdleGFtcGxlOm1haW4nKQorICAgICAgICBlbnRyeV9wb2ludCA9IHNjcmlwdHNb
J0V4YW1wbGUnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5X3BvaW50LnZhbHVlLCAn
ZXhhbXBsZTptYWluJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfbWV0YWRhdGEoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGRpc3RyaWJ1dGlvbignZXhhbXBsZScpLnJlYWRfdGV4
dCgnZG9lcyBub3QgZXhpc3QnKSkKKworICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdmUoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyc2lvbignRXhhbXBsZScpLCAnMjEuMTIn
KQorCisgICAgZGVmIHRlc3RfZmlsZXMoc2VsZik6CisgICAgICAgIGZvciBmaWxlIGluIGZpbGVz
KCdleGFtcGxlJyk6CisgICAgICAgICAgICBwYXRoID0gc3RyKGZpbGUuZGlzdC5sb2NhdGVfZmls
ZShmaWxlKSkKKyAgICAgICAgICAgIGFzc2VydCAnLndobC8nIGluIHBhdGgsIHBhdGgKKworICAg
IGRlZiB0ZXN0X29uZV9kaXN0cmlidXRpb24oc2VsZik6CisgICAgICAgIGRpc3RzID0gbGlzdChk
aXN0cmlidXRpb25zKHBhdGg9c3lzLnBhdGhbOjFdKSkKKyAgICAgICAgYXNzZXJ0IGxlbihkaXN0
cykgPT0gMQorCisKK2NsYXNzIFRlc3RFZ2coVGVzdFppcCk6CisgICAgZGVmIHNldFVwKHNlbGYp
OgorICAgICAgICAjIEZpbmQgdGhlIHBhdGggdG8gdGhlIGV4YW1wbGUtKi5lZ2cgc28gd2UgY2Fu
IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKKyAgICAgICAgIyBzeXMucGF0aCwgd2hlcmUgd2UnbGwg
dGhlbiB0cnkgdG8gZmluZCB0aGUgbWV0YWRhdGEgdGhlcmVvZi4KKyAgICAgICAgc2VsZi5yZXNv
dXJjZXMgPSBFeGl0U3RhY2soKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5yZXNvdXJj
ZXMuY2xvc2UpCisgICAgICAgIHNlbGYuX2ZpeHR1cmVfb25fcGF0aCgnZXhhbXBsZS0yMS4xMi1w
eTMuNi5lZ2cnKQorCisgICAgZGVmIHRlc3RfZmlsZXMoc2VsZik6CisgICAgICAgIGZvciBmaWxl
IGluIGZpbGVzKCdleGFtcGxlJyk6CisgICAgICAgICAgICBwYXRoID0gc3RyKGZpbGUuZGlzdC5s
b2NhdGVfZmlsZShmaWxlKSkKKyAgICAgICAgICAgIGFzc2VydCAnLmVnZy8nIGluIHBhdGgsIHBh
dGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3RveC5pbmkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS90b3guaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMWYwZTk3NTc4MzczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJf
bWV0YWRhdGEvdG94LmluaQpAQCAtMCwwICsxLDk3IEBACitbdG94XQorZW52bGlzdCA9IHtweTI3
LHB5MzUscHkzNixweTM3LHB5Mzh9eywtY292LC1kaWZmY292fSxxYSxkb2NzLHBlcmYKK3NraXBf
bWlzc2luZ19pbnRlcnByZXRlcnMgPSBUcnVlCittaW52ZXJzaW9uID0gMy4yCisjIEVuc3VyZSB0
aGF0IGEgbGF0ZSB2ZXJzaW9uIG9mIHBpcCBpcyB1c2VkIGV2ZW4gb24gdG94LXZlbnYuCityZXF1
aXJlcyA9CisgICAgdG94LXBpcC12ZXJzaW9uPj0wLjAuNgorCitbdGVzdGVudl0KK3BpcF92ZXJz
aW9uID0gcGlwCitjb21tYW5kcyA9CisgICAgIWNvdiwhZGlmZmNvdjogcHl0aG9uIC1tIHVuaXR0
ZXN0IGRpc2NvdmVyIHtwb3NhcmdzfQorICAgIGNvdixkaWZmY292OiBweXRob24gLW0gY292ZXJh
Z2UgcnVuIHtbY292ZXJhZ2VdcmN9IC1tIHVuaXR0ZXN0IGRpc2NvdmVyIHtwb3NhcmdzfQorICAg
IGNvdixkaWZmY292OiBweXRob24gLW0gY292ZXJhZ2UgY29tYmluZSB7W2NvdmVyYWdlXXJjfQor
ICAgIGNvdjogcHl0aG9uIC1tIGNvdmVyYWdlIGh0bWwge1tjb3ZlcmFnZV1yY30KKyAgICBjb3Y6
IHB5dGhvbiAtbSBjb3ZlcmFnZSB4bWwge1tjb3ZlcmFnZV1yY30KKyAgICBjb3Y6IHB5dGhvbiAt
bSBjb3ZlcmFnZSByZXBvcnQgLW0ge1tjb3ZlcmFnZV1yY30gLS1mYWlsLXVuZGVyPTEwMAorICAg
IGRpZmZjb3Y6IHB5dGhvbiAtbSBjb3ZlcmFnZSB4bWwge1tjb3ZlcmFnZV1yY30KKyAgICBkaWZm
Y292OiBkaWZmLWNvdmVyIGNvdmVyYWdlLnhtbCAtLWh0bWwtcmVwb3J0IGRpZmZjb3YuaHRtbAor
ICAgIGRpZmZjb3Y6IGRpZmYtY292ZXIgY292ZXJhZ2UueG1sIC0tZmFpbC11bmRlcj0xMDAKK3Vz
ZWRldmVsb3AgPSBUcnVlCitwYXNzZW52ID0KKyAgICBQWVRIT04qCisgICAgTEFORyoKKyAgICBM
Q18qCisgICAgUFlWCitkZXBzID0KKyAgICBjb3YsZGlmZmNvdjogY292ZXJhZ2U+PTQuNQorICAg
IGRpZmZjb3Y6IGRpZmZfY292ZXIKKyAgICBweWZha2Vmcworc2V0ZW52ID0KKyAgICBjb3Y6IENP
VkVSQUdFX1BST0NFU1NfU1RBUlQ9e1tjb3ZlcmFnZV1yY2ZpbGV9CisgICAgY292OiBDT1ZFUkFH
RV9PUFRJT05TPSItcCIKKyAgICBjb3Y6IENPVkVSQUdFX0ZJTEU9e3RveGluaWRpcn0vLmNvdmVy
YWdlCisgICAgcHkyNzogUFlWPTIKKyAgICBweTM1LHB5MzYscHkzNyxweTM4OiBQWVY9MworICAg
ICMgd29ya2Fyb3VuZCBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiBwaXAncyB2ZW5kb3JlZCBwYWNr
YWdlcworICAgIFBZVEhPTldBUk5JTkdTPWlnbm9yZTpVc2luZyBvciBpbXBvcnRpbmcgdGhlIEFC
Q3M6RGVwcmVjYXRpb25XYXJuaW5nOnBpcC5fdmVuZG9yCitleHRyYXMgPQorICAgIHRlc3RpbmcK
KworCitbdGVzdGVudjpxYV0KK2Jhc2VweXRob24gPSBweXRob24zLjcKK2NvbW1hbmRzID0KKyAg
ICBweXRob24gLW0gZmxha2U4IGltcG9ydGxpYl9tZXRhZGF0YQorICAgIG15cHkgaW1wb3J0bGli
X21ldGFkYXRhCitkZXBzID0KKyAgICBteXB5CisgICAgZmxha2U4CisgICAgZmx1ZmwuZmxha2U4
CitleHRyYXMgPQorCisKK1t0ZXN0ZW52OmRvY3NdCitiYXNlcHl0aG9uID0gcHl0aG9uMworY29t
bWFuZHMgPQorICAgIHNwaGlueC1idWlsZCBkb2NzIGJ1aWxkL3NwaGlueC9odG1sCitleHRyYXMg
PQorICAgIGRvY3MKKworCitbdGVzdGVudjpwZXJmXQordXNlX2RldmVsb3AgPSBGYWxzZQorZGVw
cyA9CisgICAgaXB5dGhvbgorY29tbWFuZHMgPQorICAgIHB5dGhvbiAtbSB0aW1laXQgLXMgJ2lt
cG9ydCBpbXBvcnRsaWJfbWV0YWRhdGEnIC0tICdpbXBvcnRsaWJfbWV0YWRhdGEuZGlzdHJpYnV0
aW9uKCJpcHl0aG9uIiknCisKKworW3Rlc3RlbnY6cmVsZWFzZV0KK2Jhc2VweXRob24gPSBweXRo
b24zCitkZXBzID0KKyAgICB0d2luZQorICAgIHdoZWVsCisgICAgc2V0dXB0b29scworICAgIGtl
eXJpbmcKKyAgICBzZXR1cHRvb2xzX3NjbQorcGFzc2VudiA9CisgICAgVFdJTkVfUEFTU1dPUkQK
K3NldGVudiA9CisgICAgVFdJTkVfVVNFUk5BTUUgPSB7ZW52OlRXSU5FX1VTRVJOQU1FOl9fdG9r
ZW5fX30KK2NvbW1hbmRzID0KKyAgICBweXRob24gc2V0dXAucHkgc2Rpc3QgYmRpc3Rfd2hlZWwK
KyAgICBweXRob24gLW0gdHdpbmUge3Bvc2FyZ3N9IHVwbG9hZCBkaXN0LyoKKworCitbY292ZXJh
Z2VdCityY2ZpbGUgPSB7dG94aW5pZGlyfS9jb3ZlcmFnZS5pbmkKK3JjID0gLS1yY2ZpbGU9Intb
Y292ZXJhZ2VdcmNmaWxlfSIKKworCitbZmxha2U4XQoraGFuZy1jbG9zaW5nID0gVHJ1ZQoram9i
cyA9IDEKK21heC1saW5lLWxlbmd0aCA9IDc5CitlbmFibGUtZXh0ZW5zaW9ucyA9IFU0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2luaWNvbmZpZy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvLmdpdGln
bm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5ZTYyMzQzODBj
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy5naXRpZ25vcmUKQEAgLTAsMCAr
MSw4IEBACisqLmVnZy1pbmZvCisqLnB5YworLmNhY2hlLworLmVnZ3MvCitidWlsZC8KK2Rpc3Qv
CitfX3B5Y2FjaGVfXworLnRveC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy5oZ2lnbm9y
ZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaW5pY29uZmlnLy5oZ2lnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmU4ZTkxYWJhYjFlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29u
ZmlnLy5oZ2lnbm9yZQpAQCAtMCwwICsxLDE2IEBACisKKyMgVGhlc2UgbGluZXMgYXJlIHN1Z2dl
c3RlZCBhY2NvcmRpbmcgdG8gdGhlIHN2bjppZ25vcmUgcHJvcGVydHkKKyMgRmVlbCBmcmVlIHRv
IGVuYWJsZSB0aGVtIGJ5IHVuY29tbWVudGluZyB0aGVtCitzeW50YXg6Z2xvYgorKi5weWMKKyou
cHlvCisqLnN3cAorKi5odG1sCisqLmNsYXNzCisKKy50b3gKKworYnVpbGQKK2Rpc3QKKyouZWdn
LWluZm8KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvLmxhbmRzY2FwZS55bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2luaWNvbmZpZy8ubGFuZHNjYXBlLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjUyMTJkZGVhNDEyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmln
Ly5sYW5kc2NhcGUueW1sCkBAIC0wLDAgKzEsNSBAQAorcGVwODoKKyAgZnVsbDogdHJ1ZQorcHl0
aG9uLXRhcmdldHM6CisgIC0gMgorICAtIDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy50
cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lM2ZlZTA2YzlmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2luaWNvbmZpZy8udHJhdmlzLnltbApAQCAtMCwwICsxLDE4IEBACitsYW5ndWFnZTogcHl0
aG9uCitweXRob246CistICcyLjcnCistICczLjQnCistICczLjUnCistIG5pZ2h0bHkKKy0gcHlw
eQoraW5zdGFsbDogcGlwIGluc3RhbGwgc2V0dXB0b29sc19zY20gdG94CitzY3JpcHQ6IHRveCAt
ZSBweQorZGVwbG95OgorICBwcm92aWRlcjogcHlwaQorICB1c2VyOiByb25ueQorICBwYXNzd29y
ZDoKKyAgICBzZWN1cmU6IERzUlZYOTlIQTYrM0pvWE9WUC9uUFhlYWJKeTJQNzN3czdBZ2VyL2U0
cngzcDNqUzc0YklkMDlYc0JVNDZiQVQ5QU5tUldQUjh5NURSaTVabHEwV1EydVhvUjU1d21zZHUy
S1VlZ2s2YkRJUzRJb3A4REZ4WThLam91OXM4UlpiRFRQMjdMZnVZWEtNTzFyRFcveGE2RWhpb3RZ
Um9kZWtlWlV6M1AzTVlqSWk2ckJWMlJ6M3Z3bUlucGtLT3RpN0FGd0FzQ0dtQ0NLMTNpcm1QSkVw
NW53bDNSZ2VLdTJBR2FvbHc5ZXlwSlhlTkxVY05EVlE4OFpVVVhRQ2t3Z3E3YTFCa0s2Tk1lUUxN
cldBRTFiRDNhbUNiVlhIQ1I5VGFWeDFaSDFkbmhhNUpjZmozZ0VGdWNUbUluV1dlczV1OXJ5cHZz
Q2tTeEt0U3FkaVVBN0JNSnE3WHlrVjduR05wbEdMbTJzcTQrS1NZbGYzZ1pYZzRYTlhRa05PaTRF
QnRSdmF0aGZGemlEMlNaZ2R0amlRWDJuZWgwZE1qZjljemMvdUNZa0tZQ0ZMZW96ZHcyb1FRK0Jz
eGhRZnNtVTJJTEdDRkh5RmlrbURiQnFaT1dmUUU1VE4zaXRRcVYzVEZLOHNPSFE4aXkzTURTaHMr
bEJrOUFVd2JDQTVZYlJoOGhKS2hnWHlFc0RwaXNDNDE3UGoyMitUYnV0VGo3djNSbXBlL3N0NGhv
TDc0MGdyV2MzUFNWVUJheXBHMFJzb2FmU0RaV25ZblRDKzBhYWtkNlFFYjVTOXduTWtQOTRraWpZ
ampGNnlVSW51VDA1d2RiUXY1WGNTWHFBZEd6QnFCNWpOTmRmd2dXVkNPbHdHZmpudnpLbGxoRjNQ
bVdQVy9uZm1RcEdPUWg0PQorICBvbjoKKyAgICB0YWdzOiB0cnVlCisgICAgZGlzdHJpYnV0aW9u
czogc2Rpc3QgYmRpc3Rfd2hlZWwKKyAgICByZXBvOiBSb25ueVBmYW5uc2NobWlkdC9pbmljb25m
aWcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL0NIQU5HRUxPRyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmln
L0NIQU5HRUxPRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3OTkx
OWZjZDJlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL0NIQU5HRUxPRwpAQCAt
MCwwICsxLDMyIEBACisxLjEuMQorPT09PT09PT09CisKKyogZml4IHZlcnNpb24gZGV0ZXJtaW5h
dGlvbiAodGhhbmtzIEBmbG9yaW1vbmRtYW5jYSkKKworMS4xLjAKKz09PT09CisKKy0gdHlwaW5n
IHN0dWJzICh0aGFua3MgQGJsdWV0ZWNoKQorLSBjaSBmaXhlcworCisxLjAuMQorPT09PT09CisK
K3B5dGVzdCA1KyBzdXBwb3J0CisKKzEuMAorPT09PQorCistIHJlLXN5bmMgd2l0aCBweWxpYiBj
b2RlYmFzZQorCiswLjIKKz09PT09PT09PT09PT09PT09PQorCistIGFkZGVkIGFiaWxpdHkgdG8g
YXNrICJuYW1lIGluIGluaWNvbmZpZyIsIGkuZS4gdG8gY2hlY2sKKyAgaWYgYSBzZWN0aW9uIGlz
IGNvbnRhaW5lZC4KKworLSBmaXggYnVnIGluICJuYW1lPXZhbHVlIiBwYXJzaW5nIHdoZXJlIHZh
bHVlIHdhcyAieD0zIgorCistIGFsbG93IGZvciAnOiAnIHRvIGRlbGltaXQgbmFtZT12YWx1ZSBw
YWlycywgc28gdGhhdCBlLmcuIC5weXBpcmMgZmlsZXMKKyAgbGlrZSBodHRwOi8vZG9jcy5weXRo
b24ub3JnL2Rpc3R1dGlscy9wYWNrYWdlaW5kZXguaHRtbAorICBjYW4gYmUgc3VjY2Vzc2Z1bGx5
IHBhcnNlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvTElDRU5TRSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29u
ZmlnL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMWVj
ZGZiMWRiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9MSUNFTlNFCkBAIC0w
LDAgKzEsMTkgQEAKKworICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgIG9mIHRoaXMgc29mdHdhcmUg
YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBk
ZWFsCisgIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0
aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKyAgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKKyAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKKyAgICAgCisgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAorICBjb3BpZXMgb3Igc3Vi
c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIAorICBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKKyAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAgU09G
VFdBUkUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL01BTklGRVNULmluIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bmljb25maWcvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4wNmJlNTE0YWU1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9NQU5J
RkVTVC5pbgpAQCAtMCwwICsxLDUgQEAKK2luY2x1ZGUgTElDRU5TRQoraW5jbHVkZSBleGFtcGxl
LmluaQoraW5jbHVkZSB0b3guaW5pCitpbmNsdWRlIHNyYy9pbmljb25maWcvcHkudHlwZWQKK3Jl
Y3Vyc2l2ZS1pbmNsdWRlIHNyYyAqLnB5aQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvUkVB
RE1FLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi42YmJhZDlhOGQ5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2luaWNvbmZpZy9SRUFETUUudHh0CkBAIC0wLDAgKzEsNTEgQEAKK2luaWNvbmZpZzogYnJhaW4t
ZGVhZCBzaW1wbGUgcGFyc2luZyBvZiBpbmkgZmlsZXMKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworaW5pY29uZmlnIGlzIGEgc21hbGwg
YW5kIHNpbXBsZSBJTkktZmlsZSBwYXJzZXIgbW9kdWxlCitoYXZpbmcgYSB1bmlxdWUgc2V0IG9m
IGZlYXR1cmVzOgorCisqIHRlc3RlZCBhZ2FpbnN0IFB5dGhvbjIuNCBhY3Jvc3MgdG8gUHl0aG9u
My4yLCBKeXRob24sIFB5UHkKKyogbWFpbnRhaW5zIG9yZGVyIG9mIHNlY3Rpb25zIGFuZCBlbnRy
aWVzCisqIHN1cHBvcnRzIG11bHRpLWxpbmUgdmFsdWVzIHdpdGggb3Igd2l0aG91dCBsaW5lLWNv
bnRpbnVhdGlvbnMKKyogc3VwcG9ydHMgIiMiIGNvbW1lbnRzIGV2ZXJ5d2hlcmUKKyogcmFpc2Vz
IGVycm9ycyB3aXRoIHByb3BlciBsaW5lLW51bWJlcnMKKyogbm8gYmVsbHMgYW5kIHdoaXN0bGVz
IGxpa2UgYXV0b21hdGljIHN1YnN0aXR1dGlvbnMKKyogaW5pY29uZmlnIHJhaXNlcyBhbiBFcnJv
ciBpZiB0d28gc2VjdGlvbnMgaGF2ZSB0aGUgc2FtZSBuYW1lLgorCitJZiB5b3UgZW5jb3VudGVy
IGlzc3VlcyBvciBoYXZlIGZlYXR1cmUgd2lzaGVzIHBsZWFzZSByZXBvcnQgdGhlbSB0bzoKKwor
ICAgIGh0dHA6Ly9naXRodWIuY29tL1Jvbm55UGZhbm5zY2htaWR0L2luaWNvbmZpZy9pc3N1ZXMK
KworQmFzaWMgRXhhbXBsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor
SWYgeW91IGhhdmUgYW4gaW5pIGZpbGUgbGlrZSB0aGlzOjoKKworICAgICMgY29udGVudCBvZiBl
eGFtcGxlLmluaQorICAgIFtzZWN0aW9uMV0gIyBjb21tZW50CisgICAgbmFtZTE9dmFsdWUxICAj
IGNvbW1lbnQKKyAgICBuYW1lMWI9dmFsdWUxLHZhbHVlMiAgIyBjb21tZW50CisKKyAgICBbc2Vj
dGlvbjJdCisgICAgbmFtZTI9CisgICAgICAgIGxpbmUxCisgICAgICAgIGxpbmUyCisKK3RoZW4g
eW91IGNhbiBkbzo6CisKKyAgICA+Pj4gaW1wb3J0IGluaWNvbmZpZworICAgID4+PiBpbmkgPSBp
bmljb25maWcuSW5pQ29uZmlnKCJleGFtcGxlLmluaSIpCisgICAgPj4+IGluaVsnc2VjdGlvbjEn
XVsnbmFtZTEnXSAjIHJhaXNlcyBLZXlFcnJvciBpZiBub3QgZXhpc3RzCisgICAgJ3ZhbHVlMScK
KyAgICA+Pj4gaW5pLmdldCgnc2VjdGlvbjEnLCAnbmFtZTFiJywgW10sIGxhbWJkYSB4OiB4LnNw
bGl0KCIsIikpCisgICAgWyd2YWx1ZTEnLCAndmFsdWUyJ10KKyAgICA+Pj4gaW5pLmdldCgnc2Vj
dGlvbjEnLCAnbm90ZXhpc3QnLCBbXSwgbGFtYmRhIHg6IHguc3BsaXQoIiwiKSkKKyAgICBbXQor
ICAgID4+PiBbeC5uYW1lIGZvciB4IGluIGxpc3QoaW5pKV0KKyAgICBbJ3NlY3Rpb24xJywgJ3Nl
Y3Rpb24yJ10KKyAgICA+Pj4gbGlzdChsaXN0KGluaSlbMF0uaXRlbXMoKSkKKyAgICBbKCduYW1l
MScsICd2YWx1ZTEnKSwgKCduYW1lMWInLCAndmFsdWUxLHZhbHVlMicpXQorICAgID4+PiAnc2Vj
dGlvbjEnIGluIGluaQorICAgIFRydWUKKyAgICA+Pj4gJ2luZXhpc3RlbmRzZWN0aW9uJyBpbiBp
bmkKKyAgICBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvZXhhbXBsZS5pbmkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2luaWNvbmZpZy9leGFtcGxlLmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjY1NDgxZDIwNzRhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmln
L2V4YW1wbGUuaW5pCkBAIC0wLDAgKzEsMTAgQEAKKworIyBjb250ZW50IG9mIGV4YW1wbGUuaW5p
Citbc2VjdGlvbjFdICMgY29tbWVudAorbmFtZTE9dmFsdWUxICAjIGNvbW1lbnQKK25hbWUxYj12
YWx1ZTEsdmFsdWUyICAjIGNvbW1lbnQKKworW3NlY3Rpb24yXQorbmFtZTI9CisgICAgbGluZTEK
KyAgICBsaW5lMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvcHlwcm9qZWN0LnRvbWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2luaWNvbmZpZy9weXByb2plY3QudG9tbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmIyNzI1ZDhmNjVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29u
ZmlnL3B5cHJvamVjdC50b21sCkBAIC0wLDAgKzEsNSBAQAorW2J1aWxkLXN5c3RlbV0KK3JlcXVp
cmVzID0gWyJzZXR1cHRvb2xzPj00MS4yLjAiLCAid2hlZWwiLCAic2V0dXB0b29sc19zY20+MyJd
CisKKworW3Rvb2wuc2V0dXB0b29sc19zY21dClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc2V0
dXAuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2M2ZTc5Y2Yz
MWRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc2V0dXAuY2ZnCkBAIC0wLDAg
KzEsMiBAQAorW2JkaXN0X3doZWVsXQordW5pdmVyc2FsPTEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5p
Y29uZmlnL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNDZmMzIxNGRlOTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2luaWNvbmZpZy9zZXR1cC5weQpAQCAtMCwwICsxLDQ2IEBACisiIiIKK2luaWNvbmZp
ZzogYnJhaW4tZGVhZCBzaW1wbGUgY29uZmlnLWluaSBwYXJzaW5nLgorCitjb21wYXRpYmxlIENQ
eXRob24gMi4zIHRocm91Z2ggdG8gQ1B5dGhvbiAzLjIsIEp5dGhvbiwgUHlQeQorCisoYykgMjAx
MCBSb25ueSBQZmFubnNjaG1pZHQsIEhvbGdlciBLcmVrZWwKKyIiIgorCitmcm9tIHNldHVwdG9v
bHMgaW1wb3J0IHNldHVwCisKKworZGVmIG1haW4oKToKKyAgICB3aXRoIG9wZW4oJ1JFQURNRS50
eHQnKSBhcyBmcDoKKyAgICAgICAgcmVhZG1lID0gZnAucmVhZCgpCisgICAgc2V0dXAoCisgICAg
ICAgIG5hbWU9J2luaWNvbmZpZycsCisgICAgICAgIHBhY2thZ2VzPVsnaW5pY29uZmlnJ10sCisg
ICAgICAgIHBhY2thZ2VfZGlyPXsnJzogJ3NyYyd9LAorICAgICAgICBkZXNjcmlwdGlvbj0naW5p
Y29uZmlnOiBicmFpbi1kZWFkIHNpbXBsZSBjb25maWctaW5pIHBhcnNpbmcnLAorICAgICAgICBs
b25nX2Rlc2NyaXB0aW9uPXJlYWRtZSwKKyAgICAgICAgdXNlX3NjbV92ZXJzaW9uPVRydWUsCisg
ICAgICAgIHVybD0naHR0cDovL2dpdGh1Yi5jb20vUm9ubnlQZmFubnNjaG1pZHQvaW5pY29uZmln
JywKKyAgICAgICAgbGljZW5zZT0nTUlUIExpY2Vuc2UnLAorICAgICAgICBwbGF0Zm9ybXM9Wyd1
bml4JywgJ2xpbnV4JywgJ29zeCcsICdjeWd3aW4nLCAnd2luMzInXSwKKyAgICAgICAgYXV0aG9y
PSdSb25ueSBQZmFubnNjaG1pZHQsIEhvbGdlciBLcmVrZWwnLAorICAgICAgICBhdXRob3JfZW1h
aWw9KAorICAgICAgICAgICAgJ29wZW5zb3VyY2VAcm9ubnlwZmFubnNjaG1pZHQuZGUsIGhvbGdl
ci5rcmVrZWxAZ21haWwuY29tJyksCisgICAgICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgICAg
ICdEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLAorICAgICAgICAgICAgJ0ludGVuZGVk
IEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLAorICAgICAgICAgICAgJ0xpY2Vuc2UgOjogT1NJIEFw
cHJvdmVkIDo6IE1JVCBMaWNlbnNlJywKKyAgICAgICAgICAgICdPcGVyYXRpbmcgU3lzdGVtIDo6
IFBPU0lYJywKKyAgICAgICAgICAgICdPcGVyYXRpbmcgU3lzdGVtIDo6IE1pY3Jvc29mdCA6OiBX
aW5kb3dzJywKKyAgICAgICAgICAgICdPcGVyYXRpbmcgU3lzdGVtIDo6IE1hY09TIDo6IE1hY09T
IFgnLAorICAgICAgICAgICAgJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJh
cmllcycsCisgICAgICAgICAgICAnVG9waWMgOjogVXRpbGl0aWVzJywKKyAgICAgICAgICAgICdQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLAorICAgICAgICAgICAgJ1Byb2dyYW1taW5n
IExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyJywKKyAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5n
dWFnZSA6OiBQeXRob24gOjogMycsCisgICAgICAgIF0sCisgICAgICAgIGluY2x1ZGVfcGFja2Fn
ZV9kYXRhPVRydWUsCisgICAgICAgIHppcF9zYWZlPUZhbHNlLAorICAgICkKKworaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmln
L3NyYy9pbmljb25maWcvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9zcmMvaW5pY29uZmln
L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmFk
OWVhZjg2OGIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc3JjL2luaWNvbmZp
Zy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDE2NSBAQAorIiIiIGJyYWluLWRlYWQgc2ltcGxlIHBh
cnNlciBmb3IgaW5pLXN0eWxlIGZpbGVzLgorKEMpIFJvbm55IFBmYW5uc2NobWlkdCwgSG9sZ2Vy
IEtyZWtlbCAtLSBNSVQgbGljZW5zZWQKKyIiIgorX19hbGxfXyA9IFsnSW5pQ29uZmlnJywgJ1Bh
cnNlRXJyb3InXQorCitDT01NRU5UQ0hBUlMgPSAiIzsiCisKKworY2xhc3MgUGFyc2VFcnJvcihF
eGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBsaW5lbm8sIG1zZyk6Cisg
ICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBwYXRoLCBsaW5lbm8sIG1zZykKKyAgICAg
ICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubworICAgICAg
ICBzZWxmLm1zZyA9IG1zZworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVy
biAiJXM6JXM6ICVzIiAlIChzZWxmLnBhdGgsIHNlbGYubGluZW5vKzEsIHNlbGYubXNnKQorCisK
K2NsYXNzIFNlY3Rpb25XcmFwcGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZywgbmFtZSk6CisgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisgICAgICAgIHNlbGYu
bmFtZSA9IG5hbWUKKworICAgIGRlZiBsaW5lb2Yoc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVy
biBzZWxmLmNvbmZpZy5saW5lb2Yoc2VsZi5uYW1lLCBuYW1lKQorCisgICAgZGVmIGdldChzZWxm
LCBrZXksIGRlZmF1bHQ9Tm9uZSwgY29udmVydD1zdHIpOgorICAgICAgICByZXR1cm4gc2VsZi5j
b25maWcuZ2V0KHNlbGYubmFtZSwga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnZlcnQ9Y29udmVydCwgZGVmYXVsdD1kZWZhdWx0KQorCisgICAgZGVmIF9fZ2V0aXRlbV9f
KHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZy5zZWN0aW9uc1tzZWxmLm5h
bWVdW2tleV0KKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgc2VjdGlvbiA9IHNl
bGYuY29uZmlnLnNlY3Rpb25zLmdldChzZWxmLm5hbWUsIFtdKQorCisgICAgICAgIGRlZiBsaW5l
b2Yoa2V5KToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZy5saW5lb2Yoc2VsZi5uYW1l
LCBrZXkpCisgICAgICAgIGZvciBuYW1lIGluIHNvcnRlZChzZWN0aW9uLCBrZXk9bGluZW9mKToK
KyAgICAgICAgICAgIHlpZWxkIG5hbWUKKworICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAg
Zm9yIG5hbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIHNlbGZbbmFtZV0KKwor
CitjbGFzcyBJbmlDb25maWcob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwg
ZGF0YT1Ob25lKToKKyAgICAgICAgc2VsZi5wYXRoID0gc3RyKHBhdGgpICAjIGNvbnZlbmllbmNl
CisgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYucGF0
aCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSBzZWxmLl9wYXJz
ZShpdGVyKGYpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLmNsb3Nl
KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VucyA9IHNlbGYuX3BhcnNlKGRhdGEu
c3BsaXRsaW5lcyhUcnVlKSkKKworICAgICAgICBzZWxmLl9zb3VyY2VzID0ge30KKyAgICAgICAg
c2VsZi5zZWN0aW9ucyA9IHt9CisKKyAgICAgICAgZm9yIGxpbmVubywgc2VjdGlvbiwgbmFtZSwg
dmFsdWUgaW4gdG9rZW5zOgorICAgICAgICAgICAgaWYgc2VjdGlvbiBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3JhaXNlKGxpbmVubywgJ25vIHNlY3Rpb24gaGVhZGVyIGRlZmluZWQn
KQorICAgICAgICAgICAgc2VsZi5fc291cmNlc1tzZWN0aW9uLCBuYW1lXSA9IGxpbmVubworICAg
ICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNlY3Rpb24gaW4g
c2VsZi5zZWN0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2UobGluZW5vLCAn
ZHVwbGljYXRlIHNlY3Rpb24gJXInICUgKHNlY3Rpb24sICkpCisgICAgICAgICAgICAgICAgc2Vs
Zi5zZWN0aW9uc1tzZWN0aW9uXSA9IHt9CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGlmIG5hbWUgaW4gc2VsZi5zZWN0aW9uc1tzZWN0aW9uXToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcmFpc2UobGluZW5vLCAnZHVwbGljYXRlIG5hbWUgJXInICUgKG5hbWUsICkpCisg
ICAgICAgICAgICAgICAgc2VsZi5zZWN0aW9uc1tzZWN0aW9uXVtuYW1lXSA9IHZhbHVlCisKKyAg
ICBkZWYgX3JhaXNlKHNlbGYsIGxpbmVubywgbXNnKToKKyAgICAgICAgcmFpc2UgUGFyc2VFcnJv
cihzZWxmLnBhdGgsIGxpbmVubywgbXNnKQorCisgICAgZGVmIF9wYXJzZShzZWxmLCBsaW5lX2l0
ZXIpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBzZWN0aW9uID0gTm9uZQorICAgICAg
ICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lX2l0ZXIpOgorICAgICAgICAgICAg
bmFtZSwgZGF0YSA9IHNlbGYuX3BhcnNlbGluZShsaW5lLCBsaW5lbm8pCisgICAgICAgICAgICAj
IG5ldyB2YWx1ZQorICAgICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZSBhbmQgZGF0YSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKChsaW5lbm8sIHNlY3Rpb24s
IG5hbWUsIGRhdGEpKQorICAgICAgICAgICAgIyBuZXcgc2VjdGlvbgorICAgICAgICAgICAgZWxp
ZiBuYW1lIGlzIG5vdCBOb25lIGFuZCBkYXRhIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYg
bm90IG5hbWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlKGxpbmVubywgJ2VtcHR5
IHNlY3Rpb24gbmFtZScpCisgICAgICAgICAgICAgICAgc2VjdGlvbiA9IG5hbWUKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKChsaW5lbm8sIHNlY3Rpb24sIE5vbmUsIE5vbmUpKQorICAg
ICAgICAgICAgIyBjb250aW51YXRpb24KKyAgICAgICAgICAgIGVsaWYgbmFtZSBpcyBOb25lIGFu
ZCBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlKGxpbmVubywgJ3VuZXhwZWN0ZWQgdmFsdWUgY29u
dGludWF0aW9uJykKKyAgICAgICAgICAgICAgICBsYXN0ID0gcmVzdWx0LnBvcCgpCisgICAgICAg
ICAgICAgICAgbGFzdF9uYW1lLCBsYXN0X2RhdGEgPSBsYXN0Wy0yOl0KKyAgICAgICAgICAgICAg
ICBpZiBsYXN0X25hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2Uo
bGluZW5vLCAndW5leHBlY3RlZCB2YWx1ZSBjb250aW51YXRpb24nKQorCisgICAgICAgICAgICAg
ICAgaWYgbGFzdF9kYXRhOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gJyVzXG4lcycgJSAo
bGFzdF9kYXRhLCBkYXRhKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobGFzdFs6LTFd
ICsgKGRhdGEsKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9wYXJzZWxpbmUo
c2VsZiwgbGluZSwgbGluZW5vKToKKyAgICAgICAgIyBibGFuayBsaW5lcworICAgICAgICBpZiBp
c2NvbW1lbnRsaW5lKGxpbmUpOgorICAgICAgICAgICAgbGluZSA9ICIiCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgICAgICBpZiBub3QgbGluZToK
KyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisgICAgICAgICMgc2VjdGlvbgorICAgICAg
ICBpZiBsaW5lWzBdID09ICdbJzoKKyAgICAgICAgICAgIHJlYWxsaW5lID0gbGluZQorICAgICAg
ICAgICAgZm9yIGMgaW4gQ09NTUVOVENIQVJTOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5l
LnNwbGl0KGMpWzBdLnJzdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lWy0xXSA9PSAiXSI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVbMTotMV0sIE5vbmUKKyAgICAgICAgICAgIHJldHVy
biBOb25lLCByZWFsbGluZS5zdHJpcCgpCisgICAgICAgICMgdmFsdWUKKyAgICAgICAgZWxpZiBu
b3QgbGluZVswXS5pc3NwYWNlKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
bmFtZSwgdmFsdWUgPSBsaW5lLnNwbGl0KCc9JywgMSkKKyAgICAgICAgICAgICAgICBpZiAiOiIg
aW4gbmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgIG5hbWUsIHZhbHVlID0gbGluZS5zcGxpdCgiOiIsIDEpCisgICAgICAgICAgICAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlKGxp
bmVubywgJ3VuZXhwZWN0ZWQgbGluZTogJXInICUgbGluZSkKKyAgICAgICAgICAgIHJldHVybiBu
YW1lLnN0cmlwKCksIHZhbHVlLnN0cmlwKCkKKyAgICAgICAgIyBjb250aW51YXRpb24KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBsaW5lLnN0cmlwKCkKKworICAgIGRl
ZiBsaW5lb2Yoc2VsZiwgc2VjdGlvbiwgbmFtZT1Ob25lKToKKyAgICAgICAgbGluZW5vID0gc2Vs
Zi5fc291cmNlcy5nZXQoKHNlY3Rpb24sIG5hbWUpKQorICAgICAgICBpZiBsaW5lbm8gaXMgbm90
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gbGluZW5vICsgMQorCisgICAgZGVmIGdldChzZWxm
LCBzZWN0aW9uLCBuYW1lLCBkZWZhdWx0PU5vbmUsIGNvbnZlcnQ9c3RyKToKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnQoc2VsZi5zZWN0aW9uc1tzZWN0aW9uXVtuYW1l
XSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQK
KworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSBub3Qg
aW4gc2VsZi5zZWN0aW9uczoKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKG5hbWUpCisgICAg
ICAgIHJldHVybiBTZWN0aW9uV3JhcHBlcihzZWxmLCBuYW1lKQorCisgICAgZGVmIF9faXRlcl9f
KHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5zZWN0aW9ucywga2V5PXNl
bGYubGluZW9mKToKKyAgICAgICAgICAgIHlpZWxkIFNlY3Rpb25XcmFwcGVyKHNlbGYsIG5hbWUp
CisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGFyZyk6CisgICAgICAgIHJldHVybiBhcmcg
aW4gc2VsZi5zZWN0aW9ucworCisKK2RlZiBpc2NvbW1lbnRsaW5lKGxpbmUpOgorICAgIGMgPSBs
aW5lLmxzdHJpcCgpWzoxXQorICAgIHJldHVybiBjIGluIENPTU1FTlRDSEFSUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9pbmljb25maWcvc3JjL2luaWNvbmZpZy9fX2luaXRfXy5weWkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNv
bmZpZy9zcmMvaW5pY29uZmlnL19faW5pdF9fLnB5aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmI2Mjg0YmVjM2Y2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5p
Y29uZmlnL3NyYy9pbmljb25maWcvX19pbml0X18ucHlpCkBAIC0wLDAgKzEsMzEgQEAKK2Zyb20g
dHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgSXRlcmF0b3IsIE1hcHBpbmcsIE9wdGlvbmFsLCBUdXBs
ZSwgVHlwZVZhciwgVW5pb24KK2Zyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IEZpbmFsCisK
K19EID0gVHlwZVZhcignX0QnKQorX1QgPSBUeXBlVmFyKCdfVCcpCisKK2NsYXNzIFBhcnNlRXJy
b3IoRXhjZXB0aW9uKToKKyAgICAjIFByaXZhdGUgX19pbml0X18uCisgICAgcGF0aDogRmluYWxb
c3RyXQorICAgIGxpbmVubzogRmluYWxbaW50XQorICAgIG1zZzogRmluYWxbc3RyXQorCitjbGFz
cyBTZWN0aW9uV3JhcHBlcjoKKyAgICAjIFByaXZhdGUgX19pbml0X18uCisgICAgY29uZmlnOiBG
aW5hbFtJbmlDb25maWddCisgICAgbmFtZTogRmluYWxbc3RyXQorICAgIGRlZiBfX2dldGl0ZW1f
XyhzZWxmLCBrZXk6IHN0cikgLT4gc3RyOiAuLi4KKyAgICBkZWYgX19pdGVyX18oc2VsZikgLT4g
SXRlcmF0b3Jbc3RyXTogLi4uCisgICAgZGVmIGdldChzZWxmLCBrZXk6IHN0ciwgZGVmYXVsdDog
X0QgPSAuLi4sIGNvbnZlcnQ6IENhbGxhYmxlW1tzdHJdLCBfVF0gPSAuLi4pIC0+IFVuaW9uW19U
LCBfRF06IC4uLgorICAgIGRlZiBpdGVtcyhzZWxmKSAtPiBJdGVyYXRvcltUdXBsZVtzdHIsIHN0
cl1dOiAuLi4KKyAgICBkZWYgbGluZW9mKHNlbGYsIG5hbWU6IHN0cikgLT4gT3B0aW9uYWxbaW50
XTogLi4uCisKK2NsYXNzIEluaUNvbmZpZzoKKyAgICBwYXRoOiBGaW5hbFtzdHJdCisgICAgc2Vj
dGlvbnM6IEZpbmFsW01hcHBpbmdbc3RyLCBNYXBwaW5nW3N0ciwgc3RyXV1dCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBhdGg6IHN0ciwgZGF0YTogT3B0aW9uYWxbc3RyXSA9IE5vbmUpOiAuLi4K
KyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGFyZzogc3RyKSAtPiBib29sOiAuLi4KKyAgICBk
ZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZTogc3RyKSAtPiBTZWN0aW9uV3JhcHBlcjogLi4uCisg
ICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9yW1NlY3Rpb25XcmFwcGVyXTogLi4uCisg
ICAgZGVmIGdldChzZWxmLCBzZWN0aW9uOiBzdHIsIG5hbWU6IHN0ciwgZGVmYXVsdDogX0QgPSAu
Li4sIGNvbnZlcnQ6IENhbGxhYmxlW1tzdHJdLCBfVF0gPSAuLi4pIC0+IFVuaW9uW19ULCBfRF06
IC4uLgorICAgIGRlZiBsaW5lb2Yoc2VsZiwgc2VjdGlvbjogc3RyLCBuYW1lOiBPcHRpb25hbFtz
dHJdID0gLi4uKSAtPiBPcHRpb25hbFtpbnRdOiAuLi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29u
ZmlnL3NyYy9pbmljb25maWcvcHkudHlwZWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9zcmMvaW5pY29uZmln
L3B5LnR5cGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUy
OWJiMmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy90ZXN0aW5nL2NvbmZ0ZXN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbmljb25maWcvdGVzdGluZy9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmQyNjVhMjlmODY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW5pY29uZmlnL3Rlc3RpbmcvY29uZnRlc3QucHkKQEAgLTAsMCArMSwyIEBACisKK29wdGlvbl9k
b2N0ZXN0Z2xvYiA9ICJSRUFETUUudHh0IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvdGVz
dGluZy90ZXN0X2luaWNvbmZpZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3Rlc3RpbmcvdGVzdF9pbmlj
b25maWcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZTEyNDIx
ZTVhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy90ZXN0aW5nL3Rlc3RfaW5p
Y29uZmlnLnB5CkBAIC0wLDAgKzEsMzE0IEBACitpbXBvcnQgcHkKK2ltcG9ydCBweXRlc3QKK2Zy
b20gaW5pY29uZmlnIGltcG9ydCBJbmlDb25maWcsIFBhcnNlRXJyb3IsIF9fYWxsX18gYXMgQUxM
Citmcm9tIGluaWNvbmZpZyBpbXBvcnQgaXNjb21tZW50bGluZQorZnJvbSB0ZXh0d3JhcCBpbXBv
cnQgZGVkZW50CisKKworY2hlY2tfdG9rZW5zID0geworICAgICdzZWN0aW9uJzogKAorICAgICAg
ICAnW3NlY3Rpb25dJywKKyAgICAgICAgWygwLCAnc2VjdGlvbicsIE5vbmUsIE5vbmUpXQorICAg
ICksCisgICAgJ3ZhbHVlJzogKAorICAgICAgICAndmFsdWUgPSAxJywKKyAgICAgICAgWygwLCBO
b25lLCAndmFsdWUnLCAnMScpXQorICAgICksCisgICAgJ3ZhbHVlIGluIHNlY3Rpb24nOiAoCisg
ICAgICAgICdbc2VjdGlvbl1cbnZhbHVlPTEnLAorICAgICAgICBbKDAsICdzZWN0aW9uJywgTm9u
ZSwgTm9uZSksICgxLCAnc2VjdGlvbicsICd2YWx1ZScsICcxJyldCisgICAgKSwKKyAgICAndmFs
dWUgd2l0aCBjb250aW51YXRpb24nOiAoCisgICAgICAgICduYW1lcyA9XG4gQWxpY2VcbiBCb2In
LAorICAgICAgICBbKDAsIE5vbmUsICduYW1lcycsICdBbGljZVxuQm9iJyldCisgICAgKSwKKyAg
ICAndmFsdWUgd2l0aCBhbGlnbmVkIGNvbnRpbnVhdGlvbic6ICgKKyAgICAgICAgJ25hbWVzID0g
QWxpY2VcbicKKyAgICAgICAgJyAgICAgICAgQm9iJywKKyAgICAgICAgWygwLCBOb25lLCAnbmFt
ZXMnLCAnQWxpY2VcbkJvYicpXQorICAgICksCisgICAgJ2JsYW5rIGxpbmUnOiAoCisgICAgICAg
ICdbc2VjdGlvbl1cblxudmFsdWU9MScsCisgICAgICAgIFsoMCwgJ3NlY3Rpb24nLCBOb25lLCBO
b25lKSwgKDIsICdzZWN0aW9uJywgJ3ZhbHVlJywgJzEnKV0KKyAgICApLAorICAgICdjb21tZW50
JzogKAorICAgICAgICAnIyBjb21tZW50JywKKyAgICAgICAgW10KKyAgICApLAorICAgICdjb21t
ZW50IG9uIHZhbHVlJzogKAorICAgICAgICAndmFsdWUgPSAxJywKKyAgICAgICAgWygwLCBOb25l
LCAndmFsdWUnLCAnMScpXQorICAgICksCisKKyAgICAnY29tbWVudCBvbiBzZWN0aW9uJzogKAor
ICAgICAgICAnW3NlY3Rpb25dICNjb21tZW50JywKKyAgICAgICAgWygwLCAnc2VjdGlvbicsIE5v
bmUsIE5vbmUpXQorICAgICksCisgICAgJ2NvbW1lbnQyJzogKAorICAgICAgICAnOyBjb21tZW50
JywKKyAgICAgICAgW10KKyAgICApLAorCisgICAgJ2NvbW1lbnQyIG9uIHNlY3Rpb24nOiAoCisg
ICAgICAgICdbc2VjdGlvbl0gO2NvbW1lbnQnLAorICAgICAgICBbKDAsICdzZWN0aW9uJywgTm9u
ZSwgTm9uZSldCisgICAgKSwKKyAgICAncHNldWRvIHNlY3Rpb24gc3ludGF4IGluIHZhbHVlJzog
KAorICAgICAgICAnbmFtZSA9IHZhbHVlIFtdJywKKyAgICAgICAgWygwLCBOb25lLCAnbmFtZScs
ICd2YWx1ZSBbXScpXQorICAgICksCisgICAgJ2Fzc2lnbm1lbnQgaW4gdmFsdWUnOiAoCisgICAg
ICAgICd2YWx1ZSA9IHggPSAzJywKKyAgICAgICAgWygwLCBOb25lLCAndmFsdWUnLCAneCA9IDMn
KV0KKyAgICApLAorICAgICd1c2Ugb2YgY29sb24gZm9yIG5hbWUtdmFsdWVzJzogKAorICAgICAg
ICAnbmFtZTogeScsCisgICAgICAgIFsoMCwgTm9uZSwgJ25hbWUnLCAneScpXQorICAgICksCisg
ICAgJ3VzZSBvZiBjb2xvbiB3aXRob3V0IHNwYWNlJzogKAorICAgICAgICAndmFsdWU6eT01JywK
KyAgICAgICAgWygwLCBOb25lLCAndmFsdWUnLCAneT01JyldCisgICAgKSwKKyAgICAnZXF1YWxp
dHkgZ2V0cyBwcmVjZWRlbmNlJzogKAorICAgICAgICAndmFsdWU9eHl6OjUnLAorICAgICAgICBb
KDAsIE5vbmUsICd2YWx1ZScsICd4eXo6NScpXQorICAgICksCisKK30KKworCitAcHl0ZXN0LmZp
eHR1cmUocGFyYW1zPXNvcnRlZChjaGVja190b2tlbnMpKQorZGVmIGlucHV0X2V4cGVjdGVkKHJl
cXVlc3QpOgorICAgIHJldHVybiBjaGVja190b2tlbnNbcmVxdWVzdC5wYXJhbV0KKworCitAcHl0
ZXN0LmZpeHR1cmUKK2RlZiBpbnB1dChpbnB1dF9leHBlY3RlZCk6CisgICAgcmV0dXJuIGlucHV0
X2V4cGVjdGVkWzBdCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZXhwZWN0ZWQoaW5wdXRfZXhw
ZWN0ZWQpOgorICAgIHJldHVybiBpbnB1dF9leHBlY3RlZFsxXQorCisKK2RlZiBwYXJzZShpbnB1
dCk6CisgICAgIyBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzIC0gX3BhcnNlKCkgZG9lcyBub3Qg
dXNlIHN0YXRlIGV4Y2VwdCBwYXRoCisgICAgaW5pID0gb2JqZWN0Ll9fbmV3X18oSW5pQ29uZmln
KQorICAgIGluaS5wYXRoID0gInNhbXBsZSIKKyAgICByZXR1cm4gaW5pLl9wYXJzZShpbnB1dC5z
cGxpdGxpbmVzKFRydWUpKQorCisKK2RlZiBwYXJzZV9hX2Vycm9yKGlucHV0KToKKyAgICByZXR1
cm4gcHkudGVzdC5yYWlzZXMoUGFyc2VFcnJvciwgcGFyc2UsIGlucHV0KQorCisKK2RlZiB0ZXN0
X3Rva2VuaXplKGlucHV0LCBleHBlY3RlZCk6CisgICAgcGFyc2VkID0gcGFyc2UoaW5wdXQpCisg
ICAgYXNzZXJ0IHBhcnNlZCA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X3BhcnNlX2VtcHR5KCk6
CisgICAgcGFyc2VkID0gcGFyc2UoIiIpCisgICAgYXNzZXJ0IG5vdCBwYXJzZWQKKyAgICBpbmkg
PSBJbmlDb25maWcoInNhbXBsZSIsICIiKQorICAgIGFzc2VydCBub3QgaW5pLnNlY3Rpb25zCisK
KworZGVmIHRlc3RfUGFyc2VFcnJvcigpOgorICAgIGUgPSBQYXJzZUVycm9yKCJmaWxlbmFtZSIs
IDAsICJoZWxsbyIpCisgICAgYXNzZXJ0IHN0cihlKSA9PSAiZmlsZW5hbWU6MTogaGVsbG8iCisK
KworZGVmIHRlc3RfY29udGludWF0aW9uX25lZWRzX3BlcmNlZWRpbmdfdG9rZW4oKToKKyAgICBl
eGNpbmZvID0gcGFyc2VfYV9lcnJvcignIEZvbycpCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUu
bGluZW5vID09IDAKKworCitkZWYgdGVzdF9jb250aW51YXRpb25fY2FudF9iZV9hZnRlcl9zZWN0
aW9uKCk6CisgICAgZXhjaW5mbyA9IHBhcnNlX2FfZXJyb3IoJ1tzZWN0aW9uXVxuIEZvbycpCisg
ICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUubGluZW5vID09IDEKKworCitkZWYgdGVzdF9zZWN0aW9u
X2NhbnRfYmVfZW1wdHkoKToKKyAgICBleGNpbmZvID0gcGFyc2VfYV9lcnJvcignW10nKQorICAg
IGFzc2VydCBleGNpbmZvLnZhbHVlLmxpbmVubyA9PSAwCisKKworQHB5LnRlc3QubWFyay5wYXJh
bWV0cml6ZSgnbGluZScsIFsKKyAgICAnISEnLAorICAgIF0pCitkZWYgdGVzdF9lcnJvcl9vbl93
ZWlyZF9saW5lcyhsaW5lKToKKyAgICBwYXJzZV9hX2Vycm9yKGxpbmUpCisKKworZGVmIHRlc3Rf
aW5pY29uZmlnX2Zyb21fZmlsZSh0bXBkaXIpOgorICAgIHBhdGggPSB0bXBkaXIvJ3Rlc3QudHh0
JworICAgIHBhdGgud3JpdGUoJ1ttZXRhZGF0YV1cbm5hbWU9MScpCisKKyAgICBjb25maWcgPSBJ
bmlDb25maWcocGF0aD1wYXRoKQorICAgIGFzc2VydCBsaXN0KGNvbmZpZy5zZWN0aW9ucykgPT0g
WydtZXRhZGF0YSddCisgICAgY29uZmlnID0gSW5pQ29uZmlnKHBhdGgsICJbZGlmZl0iKQorICAg
IGFzc2VydCBsaXN0KGNvbmZpZy5zZWN0aW9ucykgPT0gWydkaWZmJ10KKyAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgSW5pQ29uZmlnKGRhdGE9cGF0aC5yZWFkKCkp
CisKKworZGVmIHRlc3RfaW5pY29uZmlnX3NlY3Rpb25fZmlyc3QodG1wZGlyKToKKyAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoUGFyc2VFcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgSW5pQ29uZmln
KCJ4IiwgZGF0YT0nbmFtZT0xJykKKyAgICBhc3NlcnQgZXhjaW5mby52YWx1ZS5tc2cgPT0gIm5v
IHNlY3Rpb24gaGVhZGVyIGRlZmluZWQiCisKKworZGVmIHRlc3RfaW5pY29uaWdfc2VjdGlvbl9k
dXBsaWNhdGVfZmFpbHMoKToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUGFyc2VFcnJvcikgYXMg
ZXhjaW5mbzoKKyAgICAgICAgSW5pQ29uZmlnKCJ4IiwgZGF0YT0nW3NlY3Rpb25dXG5bc2VjdGlv
bl0nKQorICAgIGFzc2VydCAnZHVwbGljYXRlIHNlY3Rpb24nIGluIHN0cihleGNpbmZvLnZhbHVl
KQorCisKK2RlZiB0ZXN0X2luaWNvbmZpZ19kdXBsaWNhdGVfa2V5X2ZhaWxzKCk6CisgICAgd2l0
aCBweXRlc3QucmFpc2VzKFBhcnNlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIEluaUNvbmZp
ZygieCIsIGRhdGE9J1tzZWN0aW9uXVxubmFtZSA9IEFsaWNlXG5uYW1lID0gYm9iJykKKworICAg
IGFzc2VydCAnZHVwbGljYXRlIG5hbWUnIGluIHN0cihleGNpbmZvLnZhbHVlKQorCisKK2RlZiB0
ZXN0X2luaWNvbmZpZ19saW5lb2YoKToKKyAgICBjb25maWcgPSBJbmlDb25maWcoInguaW5pIiwg
ZGF0YT0oCisgICAgICAgICdbc2VjdGlvbl1cbicKKyAgICAgICAgJ3ZhbHVlID0gMVxuJworICAg
ICAgICAnW3NlY3Rpb24yXVxuJworICAgICAgICAnIyBjb21tZW50XG4nCisgICAgICAgICd2YWx1
ZSA9MicKKyAgICApKQorCisgICAgYXNzZXJ0IGNvbmZpZy5saW5lb2YoJ21pc3NpbmcnKSBpcyBO
b25lCisgICAgYXNzZXJ0IGNvbmZpZy5saW5lb2YoJ3NlY3Rpb24nKSA9PSAxCisgICAgYXNzZXJ0
IGNvbmZpZy5saW5lb2YoJ3NlY3Rpb24yJykgPT0gMworICAgIGFzc2VydCBjb25maWcubGluZW9m
KCdzZWN0aW9uJywgJ3ZhbHVlJykgPT0gMgorICAgIGFzc2VydCBjb25maWcubGluZW9mKCdzZWN0
aW9uMicsICd2YWx1ZScpID09IDUKKworICAgIGFzc2VydCBjb25maWdbJ3NlY3Rpb24nXS5saW5l
b2YoJ3ZhbHVlJykgPT0gMgorICAgIGFzc2VydCBjb25maWdbJ3NlY3Rpb24yJ10ubGluZW9mKCd2
YWx1ZScpID09IDUKKworCitkZWYgdGVzdF9pbmljb25maWdfZ2V0X2NvbnZlcnQoKToKKyAgICBj
b25maWcgPSBJbmlDb25maWcoIngiLCBkYXRhPSdbc2VjdGlvbl1cbmludCA9IDFcbmZsb2F0ID0g
MS4xJykKKyAgICBhc3NlcnQgY29uZmlnLmdldCgnc2VjdGlvbicsICdpbnQnKSA9PSAnMScKKyAg
ICBhc3NlcnQgY29uZmlnLmdldCgnc2VjdGlvbicsICdpbnQnLCBjb252ZXJ0PWludCkgPT0gMQor
CisKK2RlZiB0ZXN0X2luaWNvbmZpZ19nZXRfbWlzc2luZygpOgorICAgIGNvbmZpZyA9IEluaUNv
bmZpZygieCIsIGRhdGE9J1tzZWN0aW9uXVxuaW50ID0gMVxuZmxvYXQgPSAxLjEnKQorICAgIGFz
c2VydCBjb25maWcuZ2V0KCdzZWN0aW9uJywgJ21pc3NpbmcnLCBkZWZhdWx0PTEpID09IDEKKyAg
ICBhc3NlcnQgY29uZmlnLmdldCgnc2VjdGlvbicsICdtaXNzaW5nJykgaXMgTm9uZQorCisKK2Rl
ZiB0ZXN0X3NlY3Rpb25fZ2V0KCk6CisgICAgY29uZmlnID0gSW5pQ29uZmlnKCJ4IiwgZGF0YT0n
W3NlY3Rpb25dXG52YWx1ZT0xJykKKyAgICBzZWN0aW9uID0gY29uZmlnWydzZWN0aW9uJ10KKyAg
ICBhc3NlcnQgc2VjdGlvbi5nZXQoJ3ZhbHVlJywgY29udmVydD1pbnQpID09IDEKKyAgICBhc3Nl
cnQgc2VjdGlvbi5nZXQoJ3ZhbHVlJywgMSkgPT0gIjEiCisgICAgYXNzZXJ0IHNlY3Rpb24uZ2V0
KCdtaXNzaW5nJywgMikgPT0gMgorCisKK2RlZiB0ZXN0X21pc3Npbmdfc2VjdGlvbigpOgorICAg
IGNvbmZpZyA9IEluaUNvbmZpZygieCIsIGRhdGE9J1tzZWN0aW9uXVxudmFsdWU9MScpCisgICAg
d2l0aCBweXRlc3QucmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGNvbmZpZ1sib3RoZXIi
XQorCisKK2RlZiB0ZXN0X3NlY3Rpb25fZ2V0aXRlbSgpOgorICAgIGNvbmZpZyA9IEluaUNvbmZp
ZygieCIsIGRhdGE9J1tzZWN0aW9uXVxudmFsdWU9MScpCisgICAgYXNzZXJ0IGNvbmZpZ1snc2Vj
dGlvbiddWyd2YWx1ZSddID09ICcxJworICAgIGFzc2VydCBjb25maWdbJ3NlY3Rpb24nXVsndmFs
dWUnXSA9PSAnMScKKworCitkZWYgdGVzdF9zZWN0aW9uX2l0ZXIoKToKKyAgICBjb25maWcgPSBJ
bmlDb25maWcoIngiLCBkYXRhPSdbc2VjdGlvbl1cbnZhbHVlPTEnKQorICAgIG5hbWVzID0gbGlz
dChjb25maWdbJ3NlY3Rpb24nXSkKKyAgICBhc3NlcnQgbmFtZXMgPT0gWyd2YWx1ZSddCisgICAg
aXRlbXMgPSBsaXN0KGNvbmZpZ1snc2VjdGlvbiddLml0ZW1zKCkpCisgICAgYXNzZXJ0IGl0ZW1z
ID09IFsoJ3ZhbHVlJywgJzEnKV0KKworCitkZWYgdGVzdF9jb25maWdfaXRlcigpOgorICAgIGNv
bmZpZyA9IEluaUNvbmZpZygieC5pbmkiLCBkYXRhPWRlZGVudCgnJycKKyAgICAgICAgICBbc2Vj
dGlvbjFdCisgICAgICAgICAgdmFsdWU9MQorICAgICAgICAgIFtzZWN0aW9uMl0KKyAgICAgICAg
ICB2YWx1ZT0yCisgICAgJycnKSkKKyAgICBsID0gbGlzdChjb25maWcpCisgICAgYXNzZXJ0IGxl
bihsKSA9PSAyCisgICAgYXNzZXJ0IGxbMF0ubmFtZSA9PSAnc2VjdGlvbjEnCisgICAgYXNzZXJ0
IGxbMF1bJ3ZhbHVlJ10gPT0gJzEnCisgICAgYXNzZXJ0IGxbMV0ubmFtZSA9PSAnc2VjdGlvbjIn
CisgICAgYXNzZXJ0IGxbMV1bJ3ZhbHVlJ10gPT0gJzInCisKKworZGVmIHRlc3RfY29uZmlnX2Nv
bnRhaW5zKCk6CisgICAgY29uZmlnID0gSW5pQ29uZmlnKCJ4LmluaSIsIGRhdGE9ZGVkZW50KCcn
JworICAgICAgICAgIFtzZWN0aW9uMV0KKyAgICAgICAgICB2YWx1ZT0xCisgICAgICAgICAgW3Nl
Y3Rpb24yXQorICAgICAgICAgIHZhbHVlPTIKKyAgICAnJycpKQorICAgIGFzc2VydCAneHl6JyBu
b3QgaW4gY29uZmlnCisgICAgYXNzZXJ0ICdzZWN0aW9uMScgaW4gY29uZmlnCisgICAgYXNzZXJ0
ICdzZWN0aW9uMicgaW4gY29uZmlnCisKKworZGVmIHRlc3RfaXRlcl9maWxlX29yZGVyKCk6Cisg
ICAgY29uZmlnID0gSW5pQ29uZmlnKCJ4LmluaSIsIGRhdGE9IiIiCitbc2VjdGlvbjJdICNjcHl0
aG9uIGRpY3Qgb3JkZXJlZCBiZWZvcmUgc2VjdGlvbgordmFsdWUgPSAxCit2YWx1ZTIgPSAyICMg
ZGljdCBvcmRlcmVkIGJlZm9yZSB2YWx1ZQorW3NlY3Rpb25dCithID0gMQorYiA9IDIKKyIiIikK
KyAgICBsID0gbGlzdChjb25maWcpCisgICAgc2VjbmFtZXMgPSBbeC5uYW1lIGZvciB4IGluIGxd
CisgICAgYXNzZXJ0IHNlY25hbWVzID09IFsnc2VjdGlvbjInLCAnc2VjdGlvbiddCisgICAgYXNz
ZXJ0IGxpc3QoY29uZmlnWydzZWN0aW9uMiddKSA9PSBbJ3ZhbHVlJywgJ3ZhbHVlMiddCisgICAg
YXNzZXJ0IGxpc3QoY29uZmlnWydzZWN0aW9uJ10pID09IFsnYScsICdiJ10KKworCitkZWYgdGVz
dF9leGFtcGxlX3B5cGlyYygpOgorICAgIGNvbmZpZyA9IEluaUNvbmZpZygicHlwaXJjIiwgZGF0
YT1kZWRlbnQoJycnCisgICAgICAgIFtkaXN0dXRpbHNdCisgICAgICAgIGluZGV4LXNlcnZlcnMg
PQorICAgICAgICAgICAgcHlwaQorICAgICAgICAgICAgb3RoZXIKKworICAgICAgICBbcHlwaV0K
KyAgICAgICAgcmVwb3NpdG9yeTogPHJlcG9zaXRvcnktdXJsPgorICAgICAgICB1c2VybmFtZTog
PHVzZXJuYW1lPgorICAgICAgICBwYXNzd29yZDogPHBhc3N3b3JkPgorCisgICAgICAgIFtvdGhl
cl0KKyAgICAgICAgcmVwb3NpdG9yeTogaHR0cDovL2V4YW1wbGUuY29tL3B5cGkKKyAgICAgICAg
dXNlcm5hbWU6IDx1c2VybmFtZT4KKyAgICAgICAgcGFzc3dvcmQ6IDxwYXNzd29yZD4KKyAgICAn
JycpKQorICAgIGRpc3R1dGlscywgcHlwaSwgb3RoZXIgPSBsaXN0KGNvbmZpZykKKyAgICBhc3Nl
cnQgZGlzdHV0aWxzWyJpbmRleC1zZXJ2ZXJzIl0gPT0gInB5cGlcbm90aGVyIgorICAgIGFzc2Vy
dCBweXBpWydyZXBvc2l0b3J5J10gPT0gJzxyZXBvc2l0b3J5LXVybD4nCisgICAgYXNzZXJ0IHB5
cGlbJ3VzZXJuYW1lJ10gPT0gJzx1c2VybmFtZT4nCisgICAgYXNzZXJ0IHB5cGlbJ3Bhc3N3b3Jk
J10gPT0gJzxwYXNzd29yZD4nCisgICAgYXNzZXJ0IFsncmVwb3NpdG9yeScsICd1c2VybmFtZScs
ICdwYXNzd29yZCddID09IGxpc3Qob3RoZXIpCisKKworZGVmIHRlc3RfYXBpX2ltcG9ydCgpOgor
ICAgIGFzc2VydCBBTEwgPT0gWydJbmlDb25maWcnLCAnUGFyc2VFcnJvciddCisKKworQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJsaW5lIiwgWworICAgICIjcXdlIiwKKyAgICAiICAjcXdlIiwK
KyAgICAiO3F3ZSIsCisgICAgIiA7cXdlIiwKK10pCitkZWYgdGVzdF9pc2NvbW1lbnRsaW5lX3Ry
dWUobGluZSk6CisgICAgYXNzZXJ0IGlzY29tbWVudGxpbmUobGluZSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW5pY29uZmlnL3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy90b3guaW5pCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjk4ODM4YmVlMDc4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbmljb25maWcvdG94LmluaQpAQCAtMCwwICsxLDE0IEBACitbdG94XQorZW52
bGlzdD1weTI3LHB5MjYscHkzMyxweTM0LHB5MzUKKworCitbdGVzdGVudl0KK2NvbW1hbmRzPQor
ICBweXRlc3Qge3Bvc2FyZ3N9CitkZXBzPQorICBweXRlc3QKKworCitbcHl0ZXN0XQordGVzdHBh
dGhzPQorICB0ZXN0aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRhdHRy
aWJ1dGVzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy8uZ2l0YXR0cmlidXRlcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlhYWJhN2E5ZmU4ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvLmdpdGF0dHJpYnV0ZXMKQEAgLTAsMCArMSwyIEBACitt
b3JlX2l0ZXJ0b29scy9tb3JlLnB5IG1lcmdlPXVuaW9uCittb3JlX2l0ZXJ0b29scy90ZXN0cy90
ZXN0X21vcmUucHkgbWVyZ2U9dW5pb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMv
LmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQyNzkxZTlkOTc4NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDM0IEBACisqLnB5
W2NvXQorCisjIFBhY2thZ2VzCisqLmVnZworKi5lZ2dzCisqLmVnZy1pbmZvCitkaXN0CitidWls
ZAorZWdncworcGFydHMKK2JpbgordmFyCitzZGlzdAorZGV2ZWxvcC1lZ2dzCisuaW5zdGFsbGVk
LmNmZworCisjIEluc3RhbGxlciBsb2dzCitwaXAtbG9nLnR4dAorCisjIFVuaXQgdGVzdCAvIGNv
dmVyYWdlIHJlcG9ydHMKKy5jb3ZlcmFnZQorLnRveAorLm5vc2VpZHMKKworIyBEb2NzIGJ5IFNw
aGlueAorX2J1aWxkCisKKyMgRW52aXJvbm1lbnQKKy5lbnYKKworIyBJREUgZmlsZXMKKy5pZGVh
CisudnNjb2RlCisuRFNfU3RvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvLnRy
YXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDA4ZmIwYzY3ZThlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy8udHJhdmlzLnltbApAQCAtMCwwICsxLDI2IEBACitzdWRv
OiBmYWxzZQorCitsYW5ndWFnZTogInB5dGhvbiIKKworcHl0aG9uOgorICAgIC0gIjIuNyIKKyAg
ICAtICIzLjQiCisgICAgLSAiMy41IgorICAgIC0gIjMuNiIKKyAgICAtICIzLjctZGV2IgorICAg
IC0gInB5cHktNS40LjEiCisgICAgLSAicHlweTMiCisKK2luc3RhbGw6CisgICAgLSAicGlwIGlu
c3RhbGwgLiIKKyAgICAtICJwaXAgaW5zdGFsbCAtVSBjb3ZlcmFsbHMgZmxha2U4IgorCitzY3Jp
cHQ6CisgICAgLSAiY292ZXJhZ2UgcnVuIC0taW5jbHVkZT0nbW9yZV9pdGVydG9vbHMvKi5weScg
LS1vbWl0PSdtb3JlX2l0ZXJ0b29scy90ZXN0cy8qJyBzZXR1cC5weSB0ZXN0IgorICAgIC0gImZs
YWtlOCAuIgorCitub3RpZmljYXRpb25zOgorICBlbWFpbDogZmFsc2UKKworYWZ0ZXJfc3VjY2Vz
czoKKyAgICAtICJjb3ZlcmFsbHMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2Rv
Y3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZGNlODg0YTgzZC4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9j
cy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9jcy9hcGkucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3Jl
LWl0ZXJ0b29scy9kb2NzL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvaW5kZXgu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL2xpY2Vuc2UucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0
ZXJ0b29scy9kb2NzL21ha2UuYmF0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL3Rlc3Rpbmcu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL3ZlcnNpb25zLnJzdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy9fX2luaXRfXy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkKaW5kZXgg
YTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9v
bHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0
b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBm
b3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMwMmE4MThiNTgwLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVy
dG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRv
b2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL3Rlc3RfbW9yZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9v
bHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvdGVzdF9yZWNpcGVzLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3Jl
LWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTdkNzliNjhhNWU0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3Jl
LWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9v
bHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL21vcmUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3JlY2lwZXMucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRl
cnRvb2xzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzY3
MzFhZWQzZTEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3Jl
LWl0ZXJ0b29scy9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9NQU5JRkVTVC5pbgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvbW9yZS1pdGVydG9vbHMvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvc2V0dXAu
Y2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMv
dG94LmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmNvdmVyYWdlcmMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy8uY292ZXJhZ2VyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmRhMjA1ZTVhMTQ5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5jb3Zl
cmFnZXJjCkBAIC0wLDAgKzEsOSBAQAorW3J1bl0KK2JyYW5jaCA9IFRydWUKK29taXQgPSBwYWNr
YWdpbmcvX2NvbXBhdC5weQorCitbcmVwb3J0XQorZXhjbHVkZV9saW5lcyA9CisgICAgcHJhZ21h
OiBubyBjb3ZlcgorICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBAYWJjLmFic3RyYWN0cHJv
cGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5mbGFrZTggYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2lu
Zy8uZmxha2U4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjVhMzVi
ZTkyYWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmZsYWtlOApAQCAtMCww
ICsxLDMgQEAKK1tmbGFrZThdCittYXgtbGluZS1sZW5ndGggPSA4OAoraWdub3JlID0gRTIwMyxX
NTAzLFc1MDQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5naXRodWIvd29ya2Zsb3dzL2Rv
Y3MueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1Yi93b3JrZmxvd3MvZG9jcy55bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYzE1NzM4Nzc5MDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy9kb2NzLnltbApAQCAt
MCwwICsxLDMwIEBACituYW1lOiBEb2N1bWVudGF0aW9uCisKK29uOgorICBwdWxsX3JlcXVlc3Q6
CisgICAgcGF0aHM6CisgICAgICAtICdkb2NzLyoqJworICBwdXNoOgorICAgIHBhdGhzOgorICAg
ICAgLSAnZG9jcy8qKicKKworam9iczoKKyAgZG9jczoKKyAgICBuYW1lOiBub3ggLXMgZG9jcwor
ICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKworICAgIHN0ZXBzOgorICAgIC0gdXNlczogYWN0
aW9ucy9jaGVja291dEB2MQorCisgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2Mgor
ICAgICAgbmFtZTogSW5zdGFsbCBQeXRob24KKyAgICAgIHdpdGg6CisgICAgICAgIHB5dGhvbi12
ZXJzaW9uOiAnMy45JworCisgICAgLSBuYW1lOiBJbnN0YWxsIGRlcGVuZGVuY2llcworICAgICAg
cnVuOiB8CisgICAgICAgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcGlwCisgICAg
ICAgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgbm94CisKKyAgICAtIG5hbWU6IEJ1
aWxkIGRvY3VtZW50YXRpb24KKyAgICAgIHJ1bjogcHl0aG9uIC1tIG5veCAtcyBkb2NzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy9saW50LnltbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nLy5naXRodWIvd29ya2Zsb3dzL2xpbnQueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZDAzZjE2ZmQ2ODFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvLmdpdGh1Yi93b3JrZmxvd3MvbGludC55bWwKQEAgLTAsMCArMSw1OSBAQAor
bmFtZTogTGludGluZworCitvbjoKKyAgcHVsbF9yZXF1ZXN0OgorICAgIHBhdGhzOgorICAgICAg
LSAiKioucHkiCisgIHB1c2g6CisgICAgcGF0aHM6CisgICAgICAtICIqKi5weSIKKworam9iczoK
KyAgbGludDoKKyAgICBuYW1lOiBub3ggLXMgbGludAorICAgIHJ1bnMtb246IHVidW50dS1sYXRl
c3QKKworICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYxCisKKyAg
ICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAgICAgICAgbmFtZTogSW5zdGFs
bCBQeXRob24KKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogIjMuOSIK
KworICAgICAgLSBuYW1lOiBJbnN0YWxsIGRlcGVuZGVuY2llcworICAgICAgICBydW46IHwKKyAg
ICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcAorICAgICAgICAgIHB5
dGhvbiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgbm94CisKKyAgICAgIC0gbmFtZTogUnVuIGBu
b3ggLXMgbGludGAKKyAgICAgICAgcnVuOiBweXRob24gLW0gbm94IC1zIGxpbnQKKworICBidWls
ZDoKKyAgICBuYW1lOiBCdWlsZCBzZGlzdCBhbmQgd2hlZWwKKyAgICBydW5zLW9uOiB1YnVudHUt
bGF0ZXN0CisgICAgIyBMaW50aW5nIHZlcmlmaWVzIHRoYXQgdGhlIHByb2plY3QgaXMgaW4gYW4g
YWNjZXB0YWJsZSBzdGF0ZSB0byBjcmVhdGUgZmlsZXMKKyAgICAjIGZvciByZWxlYXNpbmcuCisg
ICAgIyBBbmQgdGhpcyBhY3Rpb24gc2hvdWxkIGJlIHJ1biB3aGVuZXZlciBhIHJlbGVhc2UgaXMg
cmVhZHkgdG8gZ28gcHVibGljIGFzCisgICAgIyB0aGUgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBj
aGFuZ2VkIGJ5IGVkaXRpbmcgX19hYm91dF9fLnB5LgorICAgIG5lZWRzOiBsaW50CisKKyAgICBz
dGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MQorCisgICAgICAtIHVzZXM6
IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgICAgIG5hbWU6IEluc3RhbGwgUHl0aG9uCisg
ICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246ICIzLjkiCisKKyAgICAgIC0g
bmFtZTogSW5zdGFsbCBkZXBlbmRlbmNpZXMKKyAgICAgICAgcnVuOiBweXRob24gLW0gcGlwIGlu
c3RhbGwgLS11cGdyYWRlIGJ1aWxkCisKKyAgICAgIC0gbmFtZTogQnVpbGQKKyAgICAgICAgcnVu
OiBweXRob24gLW0gYnVpbGQKKworICAgICAgLSBuYW1lOiBBcmNoaXZlIGZpbGVzCisgICAgICAg
IHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHYxCisgICAgICAgIHdpdGg6CisgICAgICAg
ICAgbmFtZTogZGlzdAorICAgICAgICAgIHBhdGg6IGRpc3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nLy5naXRodWIvd29ya2Zsb3dzL3Rlc3QueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1
Yi93b3JrZmxvd3MvdGVzdC55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4xODAzMTA3MTZlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0
aHViL3dvcmtmbG93cy90ZXN0LnltbApAQCAtMCwwICsxLDc1IEBACituYW1lOiBUZXN0CisKK29u
OgorICBwdWxsX3JlcXVlc3Q6CisgICAgcGF0aHM6CisgICAgICAtICIuZ2l0aHViL3dvcmtmbG93
cy90ZXN0LnltbCIKKyAgICAgIC0gIioqLnB5IgorICBwdXNoOgorICAgIHBhdGhzOgorICAgICAg
LSAiLmdpdGh1Yi93b3JrZmxvd3MvdGVzdC55bWwiCisgICAgICAtICIqKi5weSIKKworam9iczoK
KyAgdGVzdDoKKyAgICBuYW1lOiAke3sgbWF0cml4Lm9zIH19IC8gJHt7IG1hdHJpeC5weXRob25f
dmVyc2lvbiB9fQorICAgIHJ1bnMtb246ICR7eyBtYXRyaXgub3MgfX0tbGF0ZXN0CisgICAgc3Ry
YXRlZ3k6CisgICAgICBmYWlsLWZhc3Q6IGZhbHNlCisgICAgICBtYXRyaXg6CisgICAgICAgIG9z
OiBbVWJ1bnR1LCBXaW5kb3dzLCBtYWNPU10KKyAgICAgICAgIyBQeXRob24gMy40IGlzIG5vdCBh
dmFpbGFibGUgZnJvbSBhY3Rpb25zL3NldHVwLXB5dGhvbkB2Mi4KKyAgICAgICAgcHl0aG9uX3Zl
cnNpb246CisgICAgICAgICAgWyIyLjciLCAiMy41IiwgIjMuNiIsICIzLjciLCAiMy44IiwgIjMu
OSIsICJweXB5MiIsICJweXB5MyJdCisgICAgICAgIGV4Y2x1ZGU6CisgICAgICAgICAgIyBUaGlz
IGlzIGZhaWxpbmcgZHVlIHRvIHBpcCBub3QgYmVpbmcgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1l
bnQuCisgICAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHlwYS9wYWNrYWdpbmcvcnVucy80
MjQ3ODU4NzEjc3RlcDo3OjkKKyAgICAgICAgICAtIG9zOiB3aW5kb3dzCisgICAgICAgICAgICBw
eXRob25fdmVyc2lvbjogcHlweTMKKworICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rpb25z
L2NoZWNrb3V0QHYxCisKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAg
ICAgICAgbmFtZTogSW5zdGFsbCBQeXRob24gJHt7IG1hdHJpeC5weXRob25fdmVyc2lvbiB9fQor
ICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAke3sgbWF0cml4LnB5dGhv
bl92ZXJzaW9uIH19CisKKyAgICAgICMgU2V0IGBweXRob25gIHRvIGEgcmVjZW50IDMueCB2ZXJz
aW9uIGlmIHdlJ3JlIG5vdCB0ZXN0aW5nIFB5dGhvbiAzLjYrLgorICAgICAgIyAgICBXaHk/IE5v
eCBuZWVkcyBQeXRob24gMy41KyBhbmQgZXZlcnlvbmUgbGlrZXMgZi1zdHJpbmdzLgorICAgICAg
LSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MgorICAgICAgICBuYW1lOiBJbnN0YWxsIFB5
dGhvbiAzLngKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy54Cisg
ICAgICAgIGlmOiA+CisgICAgICAgICAgKAorICAgICAgICAgICAgbWF0cml4LnB5dGhvbl92ZXJz
aW9uID09ICcyLjcnIHx8CisgICAgICAgICAgICBtYXRyaXgucHl0aG9uX3ZlcnNpb24gPT0gJ3B5
cHkyJyB8fAorICAgICAgICAgICAgbWF0cml4LnB5dGhvbl92ZXJzaW9uID09ICczLjUnCisgICAg
ICAgICAgKQorCisgICAgICAjIFdvcmthcm91bmQgaHR0cHM6Ly9naXRodWIuY29tL3RoZWFjb2Rl
cy9ub3gvaXNzdWVzLzI1MAorICAgICAgLSBuYW1lOiBXb3JrYXJvdW5kIGZvciBXaW5kb3dzIFB5
dGhvbiAyLjcKKyAgICAgICAgIyBUaGlzIGlzIGluIFBBVEgsIHNvIG5veCByZXNvbHZlcyB0byBp
dCAtIGJ1dCB0aGVuIHN1YnNlcXVlbnQgc3RlcHMgZmFpbC4KKyAgICAgICAgcnVuOiBybSBDOi9Q
cm9ncmFtRGF0YS9DaG9jb2xhdGV5L2Jpbi9weXRob24yLjcuZXhlCisgICAgICAgIHNoZWxsOiBi
YXNoCisgICAgICAgIGlmOiBydW5uZXIub3MgPT0gJ1dpbmRvd3MnICYmIG1hdHJpeC5weXRob25f
dmVyc2lvbiA9PSAnMi43JworCisgICAgICAtIG5hbWU6IEluc3RhbGwgZGVwZW5kZW5jaWVzCisg
ICAgICAgIHJ1bjogfAorICAgICAgICAgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUg
cGlwCisgICAgICAgICAgcHl0aG9uIC1tIHBpcCBpbnN0YWxsIG5veAorICAgICAgICBzaGVsbDog
YmFzaAorCisgICAgICAtIG5hbWU6IFJ1biBub3gKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAg
cHl0aG9uIC1tIG5veCAtLWVycm9yLW9uLW1pc3NpbmctaW50ZXJwcmV0ZXJzIC1zIHRlc3RzLSR7
eyBtYXRyaXgucHl0aG9uX3ZlcnNpb24gfX0KKyAgICAgICAgc2hlbGw6IGJhc2gKKyAgICAgICAg
aWY6IG1hdHJpeC5weXRob25fdmVyc2lvbiAhPSAncHlweTInCisKKyAgICAgICMgQmluYXJ5IGlz
IG5hbWVkICdweXB5JywgYnV0IHNldHVwLXB5dGhvbiBzcGVjaWZpZXMgaXQgYXMgJ3B5cHkyJy4K
KyAgICAgIC0gbmFtZTogUnVuIG5veCBmb3IgcHlweTIKKyAgICAgICAgcnVuOiB8CisgICAgICAg
ICAgcHl0aG9uIC1tIG5veCAtLWVycm9yLW9uLW1pc3NpbmctaW50ZXJwcmV0ZXJzIC1zIHRlc3Rz
LXB5cHkKKyAgICAgICAgc2hlbGw6IGJhc2gKKyAgICAgICAgaWY6IG1hdHJpeC5weXRob25fdmVy
c2lvbiA9PSAncHlweTInCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aWdub3JlIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjA1ZTU1NGE2NGMyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwxOCBAQAorKi5lZ2ctaW5mby8KKyouZWdnCisqLnB5W2Nv
XQorCisuW250XW94LworLmNhY2hlLworLmNvdmVyYWdlCisuaWRlYQorLnZlbnYqCisudnNjb2Rl
LworCisubXlweV9jYWNoZS8KKy5weXRlc3RfY2FjaGUvCitfX3B5Y2FjaGVfXy8KK19idWlsZC8K
K2J1aWxkLworZGlzdC8KK2h0bWxjb3YvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8ucHJl
LWNvbW1pdC1jb25maWcueWFtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5wcmUtY29tbWl0LWNvbmZpZy55
YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWM3NzY1ZWRkMTA4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnByZS1jb21taXQtY29uZmlnLnlh
bWwKQEAgLTAsMCArMSwzMiBAQAorcmVwb3M6CisgIC0gcmVwbzogaHR0cHM6Ly9naXRodWIuY29t
L3ByZS1jb21taXQvcHJlLWNvbW1pdC1ob29rcworICAgIHJldjogdjIuMy4wCisgICAgaG9va3M6
CisgICAgICAtIGlkOiBjaGVjay10b21sCisgICAgICAtIGlkOiBjaGVjay15YW1sCisgICAgICAt
IGlkOiBlbmQtb2YtZmlsZS1maXhlcgorICAgICAgLSBpZDogdHJhaWxpbmctd2hpdGVzcGFjZQor
CisgIC0gcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL3ByZS1jb21taXQvbWlycm9ycy1teXB5Cisg
ICAgcmV2OiB2MC43OTAKKyAgICBob29rczoKKyAgICAgIC0gaWQ6IG15cHkKKyAgICAgICAgZXhj
bHVkZTogJ14oZG9jc3x0YXNrc3x0ZXN0cyl8c2V0dXBcLnB5JworICAgICAgICBhcmdzOiBbXQor
ICAgICAgLSBpZDogbXlweQorICAgICAgICBuYW1lOiBteXB5IGZvciBQeXRob24gMgorICAgICAg
ICBleGNsdWRlOiAnXihkb2NzfHRhc2tzfHRlc3RzKXxzZXR1cFwucHl8bm94ZmlsZVwucHknCisg
ICAgICAgIGFyZ3M6IFsiLS1weTIiXQorCisgIC0gcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL3Bz
Zi9ibGFjaworICAgIHJldjogMTkuM2IwCisgICAgaG9va3M6CisgICAgICAtIGlkOiBibGFjawor
CisgIC0gcmVwbzogaHR0cHM6Ly9naXRsYWIuY29tL1B5Q1FBL2ZsYWtlOAorICAgIHJldjogIjMu
Ny44IgorICAgIGhvb2tzOgorICAgICAgLSBpZDogZmxha2U4CisgICAgICAgIGFkZGl0aW9uYWxf
ZGVwZW5kZW5jaWVzOiBbInBlcDgtbmFtaW5nIl0KKyAgICAgICAgIyBJZ25vcmUgYWxsIGZvcm1h
dC1yZWxhdGVkIGNoZWNrcyBhcyBCbGFjayB0YWtlcyBjYXJlIG9mIHRob3NlLgorICAgICAgICBh
cmdzOiBbIi0taWdub3JlIiwgIkUyLFc1IiwgIi0tc2VsZWN0IiwgIkUsVyxGLE4iXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnJlYWR0aGVkb2NzLnltbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5y
ZWFkdGhlZG9jcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
OGFjMjE2Njg3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8ucmVhZHRoZWRv
Y3MueW1sCkBAIC0wLDAgKzEsMTUgQEAKK3ZlcnNpb246IDIKKworYnVpbGQ6CisgIGltYWdlOiBs
YXRlc3QKKworZm9ybWF0czogW3BkZl0KK3NwaGlueDoKKyAgY29uZmlndXJhdGlvbjogZG9jcy9j
b25mLnB5CisKK3B5dGhvbjoKKyAgdmVyc2lvbjogMy44CisgIGluc3RhbGw6CisgICAgLSByZXF1
aXJlbWVudHM6IGRvY3MvcmVxdWlyZW1lbnRzLnR4dAorICAgIC0gbWV0aG9kOiBwaXAKKyAgICAg
IHBhdGg6IC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy50cmF2aXMueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi43ZjA5NzNhZTJjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8udHJh
dmlzLnltbApAQCAtMCwwICsxLDQyIEBACitsYW5ndWFnZTogcHl0aG9uCitjYWNoZTogcGlwCitw
eXRob246IDMuOAorCittYXRyaXg6CisgIGluY2x1ZGU6CisgICAgLSBweXRob246IDIuNworICAg
ICAgZW52OiBOT1hTRVNTSU9OPXRlc3RzLTIuNworICAgIC0gcHl0aG9uOiBweXB5CisgICAgICBl
bnY6IE5PWFNFU1NJT049dGVzdHMtcHlweQorICAgIC0gcHl0aG9uOiBweXB5MworICAgICAgZW52
OiBOT1hTRVNTSU9OPXRlc3RzLXB5cHkzCisgICAgLSBweXRob246IDMuNAorICAgICAgZW52OiBO
T1hTRVNTSU9OPXRlc3RzLTMuNAorICAgIC0gcHl0aG9uOiAzLjUKKyAgICAgIGVudjogTk9YU0VT
U0lPTj10ZXN0cy0zLjUKKyAgICAtIHB5dGhvbjogMy42CisgICAgICBlbnY6IE5PWFNFU1NJT049
dGVzdHMtMy42CisgICAgLSBweXRob246IDMuNworICAgICAgZW52OiBOT1hTRVNTSU9OPXRlc3Rz
LTMuNworICAgIC0gcHl0aG9uOiAzLjgKKyAgICAgIGVudjogTk9YU0VTU0lPTj10ZXN0cy0zLjgK
KyAgICAtIGVudjogTk9YU0VTU0lPTj1saW50CisgICAgLSBlbnY6IE5PWFNFU1NJT049ZG9jcwor
CitpbnN0YWxsOgorICAtIHB5ZW52IGdsb2JhbCAzLjcuMQorICAtIHB5dGhvbjMuNyAtbSBwaXAg
aW5zdGFsbCBub3gKKworc2NyaXB0OgorICAtIHB5dGhvbjMuNyAtbSBub3gKKworbm90aWZpY2F0
aW9uczoKKyAgaXJjOgorICAgIGNoYW5uZWxzOgorICAgICAgIyBUaGlzIGlzIHNldCB0byBhIHNl
Y3VyZSB2YXJpYWJsZSB0byBwcmV2ZW50IGZvcmtzIGZyb20gbm90aWZ5aW5nIHRoZQorICAgICAg
IyBJUkMgY2hhbm5lbCB3aGVuZXZlciB0aGV5IGZhaWwgYSBidWlsZC4gVGhpcyBjYW4gYmUgcmVt
b3ZlZCB3aGVuIHRyYXZpcworICAgICAgIyBpbXBsZW1lbnRzIGh0dHBzOi8vZ2l0aHViLmNvbS90
cmF2aXMtY2kvdHJhdmlzLWNpL2lzc3Vlcy8xMDk0LgorICAgICAgIyBUaGUgYWN0dWFsIHZhbHVl
IGhlcmUgaXM6IGlyYy5mcmVlbm9kZS5vcmcjcHlwYS1kZXYKKyAgICAgIC0gc2VjdXJlOiAiQnI2
YVlCWWtqTDE3ZkJaNitBY3pDa2FCTVdRQVk2VG84SUg0enFoSHJPUlhBV3E0emV1QzRWeUNaNE1Y
bUR6azBXYkEzaDNFYTd1OWtvZFVmMXNWSzFoMHE3SFg2NnA4cW1GeVRuY1FvTEZnbzJMRi94MWFV
MUZHV0tERFNYNUs2cUtPelVLckhVaFF5VnErdUF1UlZVbTdiSmhKTDAvdmlQd0VvaCtiT05vPSIK
KyAgICB1c2Vfbm90aWNlOiB0cnVlCisgICAgc2tpcF9qb2luOiB0cnVlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy9DSEFOR0VMT0cucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvQ0hBTkdFTE9HLnJz
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhiMjc1YjA2NDYwZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL0NIQU5HRUxPRy5yc3QKQEAgLTAsMCAr
MSwyOTUgQEAKK0NoYW5nZWxvZworLS0tLS0tLS0tCisKKzIwLjcgLSAyMDIwLTExLTI4Cit+fn5+
fn5+fn5+fn5+fn5+fgorCitObyB1bnJlbGVhc2VkIGNoYW5nZXMuCisKKzIwLjYgLSAyMDIwLTEx
LTI4Cit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEZpeCBmbGl0IGNvbmZpZ3VyYXRpb24sIHRvIGlu
Y2x1ZGUgTElDRU5TRSBmaWxlcyAoOmlzc3VlOmAzNTdgKQorCisyMC41IC0gMjAyMC0xMS0yNwor
fn5+fn5+fn5+fn5+fn5+fn4KKworKiBPZmZpY2lhbGx5IHN1cHBvcnQgUHl0aG9uIDMuOSAoOmlz
c3VlOmAzNDNgKQorKiBEZXByZWNhdGUgdGhlIGBgTGVnYWN5VmVyc2lvbmBgIGFuZCBgYExlZ2Fj
eVNwZWNpZmllcmBgIGNsYXNzZXMgKDppc3N1ZTpgMzIxYCkKKyogSGFuZGxlIGBgT1NFcnJvcmBg
IG9uIG5vbi1keW5hbWljIGV4ZWN1dGFibGVzIHdoZW4gYXR0ZW1wdGluZyB0byByZXNvbHZlCisg
IHRoZSBnbGliYyB2ZXJzaW9uIHN0cmluZy4KKworMjAuNCAtIDIwMjAtMDUtMTkKK35+fn5+fn5+
fn5+fn5+fn5+CisKKyogQ2Fub25pY2FsaXplIHZlcnNpb24gYmVmb3JlIGNvbXBhcmluZyBzcGVj
aWZpZXJzLiAoOmlzc3VlOmAyODJgKQorKiBDaGFuZ2UgdHlwZSBoaW50IGZvciBgYGNhbm9uaWNh
bGl6ZV9uYW1lYGAgdG8gcmV0dXJuCisgIGBgcGFja2FnaW5nLnV0aWxzLk5vcm1hbGl6ZWROYW1l
YGAuCisgIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIHN0YXRpYyB0eXBpbmcgdG9vbHMgKGxpa2Ug
bXlweSkgdG8gZGV0ZWN0IG1peGluZyBvZgorICBub3JtYWxpemVkIGFuZCB1bi1ub3JtYWxpemVk
IG5hbWVzLgorCisyMC4zIC0gMjAyMC0wMy0wNQorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXgg
Y2hhbmdlbG9nIGZvciAyMC4yLgorCisyMC4yIC0gMjAyMC0wMy0wNQorfn5+fn5+fn5+fn5+fn5+
fn4KKworKiBGaXggYSBidWcgdGhhdCBjYXVzZWQgYSAzMi1iaXQgT1MgdGhhdCBydW5zIG9uIGEg
NjQtYml0IEFSTSBDUFUgKGUuZy4gQVJNLXY4LAorICBhYXJjaDY0KSwgdG8gcmVwb3J0IHRoZSB3
cm9uZyBiaXRuZXNzLgorCisyMC4xIC0gMjAyMC0wMS0yNAorfn5+fn5+fn5+fn5+fn5+fn5+fgor
CisqIEZpeCBhIGJ1ZyBjYXVzZWQgYnkgcmV1c2Ugb2YgYW4gZXhoYXVzdGVkIGl0ZXJhdG9yLiAo
Omlzc3VlOmAyNTdgKQorCisyMC4wIC0gMjAyMC0wMS0wNgorfn5+fn5+fn5+fn5+fn5+fn4KKwor
KiBBZGQgdHlwZSBoaW50cyAoOmlzc3VlOmAxOTFgKQorCisqIEFkZCBwcm9wZXIgdHJvdmUgY2xh
c3NpZmllcnMgZm9yIFB5UHkgc3VwcG9ydCAoOmlzc3VlOmAxOThgKQorCisqIFNjYWxlIGJhY2sg
ZGVwZW5kaW5nIG9uIGBgY3R5cGVzYGAgZm9yIG1hbnlsaW51eCBzdXBwb3J0IGRldGVjdGlvbiAo
Omlzc3VlOmAxNzFgKQorCisqIFVzZSBgYHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lYGAgd2hlcmUg
YXBwcm9wcmlhdGUgZm9yIGBgcGFja2FnaW5nLnRhZ3NgYCAoOmlzc3VlOmAxOTNgKQorCisqIEV4
cGFuZCB1cG9uIHRoZSBBUEkgcHJvdmRlZCBieSBgYHBhY2thZ2luZy50YWdzYGA6IGBgaW50ZXJw
cmV0ZXJfbmFtZSgpYGAsIGBgbWFjX3BsYXRmb3JtcygpYGAsIGBgY29tcGF0aWJsZV90YWdzKClg
YCwgYGBjcHl0aG9uX3RhZ3MoKWBgLCBgYGdlbmVyaWNfdGFncygpYGAgKDppc3N1ZTpgMTg3YCkK
KworKiBPZmZpY2lhbGx5IHN1cHBvcnQgUHl0aG9uIDMuOCAoOmlzc3VlOmAyMzJgKQorCisqIEFk
ZCBgYG1ham9yYGAsIGBgbWlub3JgYCwgYW5kIGBgbWljcm9gYCBhbGlhc2VzIHRvIGBgcGFja2Fn
aW5nLnZlcnNpb24uVmVyc2lvbmBgICg6aXNzdWU6YDIyNmApCisKKyogUHJvcGVybHkgbWFyayBg
YHBhY2thZ2luZ2BgIGhhcyBiZWluZyBmdWxseSB0eXBlZCBieSBhZGRpbmcgYSBgcHkudHlwZWRg
IGZpbGUgKDppc3N1ZTpgMjI2YCkKKworMTkuMiAtIDIwMTktMDktMTgKK35+fn5+fn5+fn5+fn5+
fn5+CisKKyogUmVtb3ZlIGRlcGVuZGVuY3kgb24gYGBhdHRyc2BgICg6aXNzdWU6YDE3OGAsIDpp
c3N1ZTpgMTc5YCkKKworKiBVc2UgYXBwcm9wcmlhdGUgZmFsbGJhY2tzIGZvciBDUHl0aG9uIEFC
SSB0YWcgKDppc3N1ZTpgMTgxYCwgOmlzc3VlOmAxODVgKQorCisqIEFkZCBtYW55bGludXgyMDE0
IHN1cHBvcnQgKDppc3N1ZTpgMTg2YCkKKworKiBJbXByb3ZlIEFCSSBkZXRlY3Rpb24gKDppc3N1
ZTpgMTgxYCkKKworKiBQcm9wZXJseSBoYW5kbGUgZGVidWcgd2hlZWxzIGZvciBQeXRob24gMy44
ICg6aXNzdWU6YDE3MmApCisKKyogSW1wcm92ZSBkZXRlY3Rpb24gb2YgZGVidWcgYnVpbGRzIG9u
IFdpbmRvd3MgKDppc3N1ZTpgMTk0YCkKKworMTkuMSAtIDIwMTktMDctMzAKK35+fn5+fn5+fn5+
fn5+fn5+CisKKyogQWRkIHRoZSBgYHBhY2thZ2luZy50YWdzYGAgbW9kdWxlLiAoOmlzc3VlOmAx
NTZgKQorCisqIENvcnJlY3RseSBoYW5kbGUgdHdvLWRpZ2l0IHZlcnNpb25zIGluIGBgcHl0aG9u
X3ZlcnNpb25gYCAoOmlzc3VlOmAxMTlgKQorCisKKzE5LjAgLSAyMDE5LTAxLTIwCit+fn5+fn5+
fn5+fn5+fn5+fgorCisqIEZpeCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgUEVQIDUwOCBkaXJl
Y3QgVVJMIHJlcXVpcmVtZW50cyB3aXRoIG1hcmtlcnMuCisKKyogQmV0dGVyIGhhbmRsaW5nIG9m
IGZpbGUgVVJMcworCisgIFRoaXMgYWxsb3dzIGZvciB1c2luZyBgYGZpbGU6Ly8vYWJzb2x1dGUv
cGF0aGBgLCB3aGljaCB3YXMgcHJldmlvdXNseQorICBwcmV2ZW50ZWQgZHVlIHRvIHRoZSBtaXNz
aW5nIGBgbmV0bG9jYGAuCisKKyAgVGhpcyBhbGxvd3MgZm9yIGFsbCBmaWxlIFVSTHMgdGhhdCBg
YHVybHVucGFyc2VgYCB0dXJucyBiYWNrIGludG8gdGhlCisgIG9yaWdpbmFsIFVSTCB0byBiZSB2
YWxpZC4KKworCisxOC4wIC0gMjAxOC0wOS0yNgorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBJbXBy
b3ZlIGVycm9yIG1lc3NhZ2VzIHdoZW4gaW52YWxpZCByZXF1aXJlbWVudHMgYXJlIGdpdmVuLiAo
Omlzc3VlOmAxMjlgKQorCisKKzE3LjEgLSAyMDE3LTAyLTI4Cit+fn5+fn5+fn5+fn5+fn5+fgor
CisqIEZpeCBgYHV0aWxzLmNhbm9uaWNhbGl6ZV92ZXJzaW9uYGAgd2hlbiBzdXBwbHlpbmcgbm9u
IFBFUCA0NDAgdmVyc2lvbnMuCisKKworMTcuMCAtIDIwMTctMDItMjgKK35+fn5+fn5+fn5+fn5+
fn5+CisKKyogRHJvcCBzdXBwb3J0IGZvciBweXRob24gMi42LCAzLjIsIGFuZCAzLjMuCisKKyog
RGVmaW5lIG1pbmltYWwgcHlwYXJzaW5nIHZlcnNpb24gdG8gMi4wLjIgKDppc3N1ZTpgOTFgKS4K
KworKiBBZGQgYGBlcG9jaGBgLCBgYHJlbGVhc2VgYCwgYGBwcmVgYCwgYGBkZXZgYCwgYW5kIGBg
cG9zdGBgIGF0dHJpYnV0ZXMgdG8KKyAgYGBWZXJzaW9uYGAgYW5kIGBgTGVnYWN5VmVyc2lvbmBg
ICg6aXNzdWU6YDM0YCkuCisKKyogQWRkIGBgVmVyc2lvbigpLmlzX2RldnJlbGVhc2VgYCBhbmQg
YGBMZWdhY3lWZXJzaW9uKCkuaXNfZGV2cmVsZWFzZWBgIHRvCisgIG1ha2UgaXQgZWFzeSB0byBk
ZXRlcm1pbmUgaWYgYSByZWxlYXNlIGlzIGEgZGV2ZWxvcG1lbnQgcmVsZWFzZS4KKworKiBBZGQg
YGB1dGlscy5jYW5vbmljYWxpemVfdmVyc2lvbmBgIHRvIGNhbm9uaWNhbGl6ZSB2ZXJzaW9uIHN0
cmluZ3Mgb3IKKyAgYGBWZXJzaW9uYGAgaW5zdGFuY2VzICg6aXNzdWU6YDEyMWApLgorCisKKzE2
LjggLSAyMDE2LTEwLTI5Cit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEZpeCBtYXJrZXJzIHRoYXQg
dXRpbGl6ZSBgYGluYGAgc28gdGhhdCB0aGV5IHJlbmRlciBjb3JyZWN0bHkuCisKKyogRml4IGFu
IGVycm9uZW91cyB0ZXN0IG9uIFB5dGhvbiBSQyByZWxlYXNlcy4KKworCisxNi43IC0gMjAxNi0w
NC0yMworfn5+fn5+fn5+fn5+fn5+fn4KKworKiBBZGQgc3VwcG9ydCBmb3IgdGhlIGRlcHJlY2F0
ZWQgYGBweXRob25faW1wbGVtZW50YXRpb25gYCBtYXJrZXIgd2hpY2ggd2FzCisgIGFuIHVuZG9j
dW1lbnRlZCBzZXR1cHRvb2xzIG1hcmtlciBpbiBhZGRpdGlvbiB0byB0aGUgbmV3ZXIgbWFya2Vy
cy4KKworCisxNi42IC0gMjAxNi0wMy0yOQorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBBZGQgc3Vw
cG9ydCBmb3IgdGhlIGRlcHJlY2F0ZWQsIFBFUCAzNDUgZW52aXJvbm1lbnQgbWFya2VycyBpbiBh
ZGRpdGlvbiB0bworICB0aGUgbmV3ZXIgbWFya2Vycy4KKworCisxNi41IC0gMjAxNi0wMi0yNgor
fn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXggYSByZWdyZXNzaW9uIGluIHBhcnNpbmcgcmVxdWly
ZW1lbnRzIHdpdGggd2hpdGVzcGFjZXMgYmV0d2VlbiB0aGUgY29tbWEKKyAgc2VwYXJhdG9ycy4K
KworCisxNi40IC0gMjAxNi0wMi0yMgorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXggYSByZWdy
ZXNzaW9uIGluIHBhcnNpbmcgcmVxdWlyZW1lbnRzIGxpa2UgYGBmb28gKD09NClgYC4KKworCisx
Ni4zIC0gMjAxNi0wMi0yMQorfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXggYSBidWcgd2hlcmUg
YGBwYWNrYWdpbmcucmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50YGAgd2FzIG92ZXJseSBzdHJpY3Qg
d2hlbgorICBtYXRjaGluZyBsZWdhY3kgcmVxdWlyZW1lbnRzLgorCisKKzE2LjIgLSAyMDE2LTAy
LTA5Cit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEFkZCBhIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50
cyB0aGUgbmFtZSBjYW5vbmljYWxpemF0aW9uIGZyb20gUEVQIDUwMy4KKworCisxNi4xIC0gMjAx
Ni0wMi0wNworfn5+fn5+fn5+fn5+fn5+fn4KKworKiBJbXBsZW1lbnQgcmVxdWlyZW1lbnQgc3Bl
Y2lmaWVycyBmcm9tIFBFUCA1MDguCisKKworMTYuMCAtIDIwMTYtMDEtMTkKK35+fn5+fn5+fn5+
fn5+fn5+CisKKyogUmVsaWNlbnNlIHNvIHRoYXQgcGFja2FnaW5nIGlzIGF2YWlsYWJsZSB1bmRl
ciAqZWl0aGVyKiB0aGUgQXBhY2hlIExpY2Vuc2UsCisgIFZlcnNpb24gMi4wIG9yIGEgMiBDbGF1
c2UgQlNEIGxpY2Vuc2UuCisKKyogU3VwcG9ydCBpbnN0YWxsYXRpb24gb2YgcGFja2FnaW5nIHdo
ZW4gb25seSBkaXN0dXRpbHMgaXMgYXZhaWxhYmxlLgorCisqIEZpeCBgYD09YGAgY29tcGFyaXNv
biB3aGVuIHRoZXJlIGlzIGEgcHJlZml4IGFuZCBhIGxvY2FsIHZlcnNpb24gaW4gcGxheS4KKyAg
KDppc3N1ZTpgNDFgKS4KKworKiBJbXBsZW1lbnQgZW52aXJvbm1lbnQgbWFya2VycyBmcm9tIFBF
UCA1MDguCisKKworMTUuMyAtIDIwMTUtMDgtMDEKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogTm9y
bWFsaXplIHBvc3QtcmVsZWFzZSBzcGVsbGluZ3MgZm9yIHJldi9yIHByZWZpeGVzLiA6aXNzdWU6
YDM1YAorCisKKzE1LjIgLSAyMDE1LTA1LTEzCit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEZpeCBh
biBlcnJvciB3aGVyZSB0aGUgYXJiaXRhcnkgc3BlY2lmaWVyIChgYD09PWBgKSB3YXMgbm90IGNv
cnJlY3RseQorICBhbGxvd2luZyBwcmUtcmVsZWFzZXMgd2hlbiBpdCB3YXMgYmVpbmcgdXNlZC4K
KworKiBFeHBvc2UgdGhlIHNwZWNpZmllciBhbmQgdmVyc2lvbiBwYXJ0cyB0aHJvdWdoIHByb3Bl
cnRpZXMgb24gdGhlCisgIGBgU3BlY2lmaWVyYGAgY2xhc3Nlcy4KKworKiBBbGxvdyBpdGVyYXRp
bmcgb3ZlciB0aGUgYGBTcGVjaWZpZXJTZXRgYCB0byBnZXQgYWNjZXNzIHRvIGFsbCBvZiB0aGUK
KyAgYGBTcGVjaWZpZXJgYCBpbnN0YW5jZXMuCisKKyogQWxsb3cgdGVzdGluZyBpZiBhIHZlcnNp
b24gaXMgY29udGFpbmVkIHdpdGhpbiBhIHNwZWNpZmllciB2aWEgdGhlIGBgaW5gYAorICBvcGVy
YXRvci4KKworCisxNS4xIC0gMjAxNS0wNC0xMworfn5+fn5+fn5+fn5+fn5+fn4KKworKiBGaXgg
YSBsb2dpYyBlcnJvciB0aGF0IHdhcyBjYXVzaW5nIGluY29uc2lzdGVudCBhbnN3ZXJzIGFib3V0
IHdoZXRoZXIgb3Igbm90CisgIGEgcHJlLXJlbGVhc2Ugd2FzIGNvbnRhaW5lZCB3aXRoaW4gYSBg
YFNwZWNpZmllclNldGBgIG9yIG5vdC4KKworCisxNS4wIC0gMjAxNS0wMS0wMgorfn5+fn5+fn5+
fn5+fn5+fn4KKworKiBBZGQgYGBWZXJzaW9uKCkuaXNfcG9zdHJlbGVhc2VgYCBhbmQgYGBMZWdh
Y3lWZXJzaW9uKCkuaXNfcG9zdHJlbGVhc2VgYCB0bworICBtYWtlIGl0IGVhc3kgdG8gZGV0ZXJt
aW5lIGlmIGEgcmVsZWFzZSBpcyBhIHBvc3QgcmVsZWFzZS4KKworKiBBZGQgYGBWZXJzaW9uKCku
YmFzZV92ZXJzaW9uYGAgYW5kIGBgTGVnYWN5VmVyc2lvbigpLmJhc2VfdmVyc2lvbmBgIHRvIG1h
a2UKKyAgaXQgZWFzeSB0byBnZXQgdGhlIHB1YmxpYyB2ZXJzaW9uIHdpdGhvdXQgYW55IHByZSBv
ciBwb3N0IHJlbGVhc2UgbWFya2Vycy4KKworKiBTdXBwb3J0IHRoZSB1cGRhdGUgdG8gUEVQIDQ0
MCB3aGljaCByZW1vdmVkIHRoZSBpbXBsaWVkIGBgIT1WLipgYCB3aGVuIHVzaW5nCisgIGVpdGhl
ciBgYD5WYGAgb3IgYGA8VmBgIGFuZCB3aGljaCBpbnN0ZWFkIHNwZWNpYWwgY2FzZWQgdGhlIGhh
bmRsaW5nIG9mCisgIHByZS1yZWxlYXNlcywgcG9zdC1yZWxlYXNlcywgYW5kIGxvY2FsIHZlcnNp
b25zIHdoZW4gdXNpbmcgYGA+VmBgIG9yIGBgPFZgYC4KKworCisxNC41IC0gMjAxNC0xMi0xNwor
fn5+fn5+fn5+fn5+fn5+fn4KKworKiBOb3JtYWxpemUgcmVsZWFzZSBjYW5kaWRhdGVzIGFzIGBg
cmNgYCBpbnN0ZWFkIG9mIGBgY2BgLgorCisqIEV4cG9zZSB0aGUgYGBWRVJTSU9OX1BBVFRFUk5g
YCBjb25zdGFudCwgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcKKyAgYSB2YWxpZCB2ZXJz
aW9uLgorCisKKzE0LjQgLSAyMDE0LTEyLTE1Cit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEVuc3Vy
ZSB0aGF0IHZlcnNpb25zIGFyZSBub3JtYWxpemVkIGJlZm9yZSBjb21wYXJpc29uIHdoZW4gdXNl
ZCBpbiBhCisgIHNwZWNpZmllciB3aXRoIGEgbGVzcyB0aGFuIChgYDxgYCkgb3IgZ3JlYXRlciB0
aGFuIChgYD5gYCkgb3BlcmF0b3IuCisKKworMTQuMyAtIDIwMTQtMTEtMTkKK35+fn5+fn5+fn5+
fn5+fn5+CisKKyogKipCQUNLV0FSRFMgSU5DT01QQVRJQkxFKiogUmVmYWN0b3Igc3BlY2lmaWVy
IHN1cHBvcnQgc28gdGhhdCBpdCBjYW4gc2FuZWx5CisgIGhhbmRsZSBsZWdhY3kgc3BlY2lmaWVy
cyBhcyB3ZWxsIGFzIFBFUCA0NDAgc3BlY2lmaWVycy4KKworKiAqKkJBQ0tXQVJEUyBJTkNPTVBB
VElCTEUqKiBNb3ZlIHRoZSBzcGVjaWZpZXIgc3VwcG9ydCBvdXQgb2YKKyAgYGBwYWNrYWdpbmcu
dmVyc2lvbmBgIGludG8gYGBwYWNrYWdpbmcuc3BlY2lmaWVyc2BgLgorCisKKzE0LjIgLSAyMDE0
LTA5LTEwCit+fn5+fn5+fn5+fn5+fn5+fgorCisqIEFkZCBwcmVyZWxlYXNlIHN1cHBvcnQgdG8g
YGBTcGVjaWZpZXJgYC4KKyogUmVtb3ZlIHRoZSBhYmlsaXR5IHRvIGRvIGBgaXRlbSBpbiBTcGVj
aWZpZXIoKWBgIGFuZCByZXBsYWNlIGl0IHdpdGgKKyAgYGBTcGVjaWZpZXIoKS5jb250YWlucyhp
dGVtKWBgIGluIG9yZGVyIHRvIGFsbG93IGZsYWdzIHRoYXQgc2lnbmFsIGlmIGEKKyAgcHJlcmVs
ZWFzZSBzaG91bGQgYmUgYWNjZXB0ZWQgb3Igbm90LgorKiBBZGQgYSBtZXRob2QgYGBTcGVjaWZp
ZXIoKS5maWx0ZXIoKWBgIHdoaWNoIHdpbGwgdGFrZSBhbiBpdGVyYWJsZSBhbmQgcmV0dXJucwor
ICBhbiBpdGVyYWJsZSB3aXRoIGl0ZW1zIHRoYXQgZG8gbm90IG1hdGNoIHRoZSBzcGVjaWZpZXIg
ZmlsdGVyZWQgb3V0LgorCisKKzE0LjEgLSAyMDE0LTA5LTA4Cit+fn5+fn5+fn5+fn5+fn5+fgor
CisqIEFsbG93IGBgTGVnYWN5VmVyc2lvbmBgIGFuZCBgYFZlcnNpb25gYCB0byBiZSBzb3J0ZWQg
dG9nZXRoZXIuCisqIEFkZCBgYHBhY2thZ2luZy52ZXJzaW9uLnBhcnNlKClgYCB0byBlbmFibGUg
ZWFzaWx5IHBhcnNpbmcgYSB2ZXJzaW9uIHN0cmluZworICBhcyBlaXRoZXIgYSBgYFZlcnNpb25g
YCBvciBhIGBgTGVnYWN5VmVyc2lvbmBgIGRlcGVuZGluZyBvbiBpdCdzIFBFUCA0NDAKKyAgdmFs
aWRpdHkuCisKKworMTQuMCAtIDIwMTQtMDktMDUKK35+fn5+fn5+fn5+fn5+fn5+CisKKyogSW5p
dGlhbCByZWxlYXNlLgorCisKKy4uIF9gbWFzdGVyYDogaHR0cHM6Ly9naXRodWIuY29tL3B5cGEv
cGFja2FnaW5nLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvQ09OVFJJQlVUSU5HLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGFja2FnaW5nL0NPTlRSSUJVVElORy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5kOWQ3MGVjMDQ3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9DT05UUklCVVRJTkcucnN0CkBAIC0wLDAgKzEsMjMgQEAKK0NvbnRyaWJ1dGluZyB0
byBwYWNrYWdpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgYW4gb3BlbiBzb3Vy
Y2UgcHJvamVjdCwgcGFja2FnaW5nIHdlbGNvbWVzIGNvbnRyaWJ1dGlvbnMgb2YgbWFueSBmb3Jt
cy4KKworRXhhbXBsZXMgb2YgY29udHJpYnV0aW9ucyBpbmNsdWRlOgorCisqIENvZGUgcGF0Y2hl
cworKiBEb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cworKiBCdWcgcmVwb3J0cyBhbmQgcGF0Y2gg
cmV2aWV3cworCitFeHRlbnNpdmUgY29udHJpYnV0aW9uIGd1aWRlbGluZXMgYXJlIGF2YWlsYWJs
ZSBpbiB0aGUgcmVwb3NpdG9yeSBhdAorYGBkb2NzL2RldmVsb3BtZW50L2luZGV4LnJzdGBgLCBv
ciBvbmxpbmUgYXQ6CisKK2h0dHBzOi8vcGFja2FnaW5nLnB5cGEuaW8vZW4vbGF0ZXN0L2RldmVs
b3BtZW50LworCitTZWN1cml0eSBpc3N1ZXMKKy0tLS0tLS0tLS0tLS0tLQorCitUbyByZXBvcnQg
YSBzZWN1cml0eSBpc3N1ZSwgcGxlYXNlIGZvbGxvdyB0aGUgc3BlY2lhbCBgc2VjdXJpdHkgcmVw
b3J0aW5nCitndWlkZWxpbmVzYF8sIGRvIG5vdCByZXBvcnQgdGhlbSBpbiB0aGUgcHVibGljIGlz
c3VlIHRyYWNrZXIuCisKKy4uIF9gc2VjdXJpdHkgcmVwb3J0aW5nIGd1aWRlbGluZXNgOiBodHRw
czovL3BhY2thZ2luZy5weXBhLmlvL2VuL2xhdGVzdC9zZWN1cml0eS8KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9MSUNFTlNFCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmY2MmQ0NGU0ZWY3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvTElDRU5TRQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgc29mdHdh
cmUgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mICplaXRoZXIqIG9mIHRoZSBs
aWNlbnNlcworZm91bmQgaW4gTElDRU5TRS5BUEFDSEUgb3IgTElDRU5TRS5CU0QuIENvbnRyaWJ1
dGlvbnMgdG8gdGhpcyBzb2Z0d2FyZSBpcyBtYWRlCit1bmRlciB0aGUgdGVybXMgb2YgKmJvdGgq
IHRoZXNlIGxpY2Vuc2VzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvTElDRU5TRS5BUEFD
SEUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9MSUNFTlNFLkFQQUNIRQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmY0MzNiMWE1M2Y1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL0xJQ0VOU0UuQVBBQ0hFCkBAIC0wLDAgKzEsMTc3IEBACisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0CisgICAgICAgICAgICAgICAgICAgICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCisKKyAgIFRFUk1TIEFORCBDT05ESVRJ
T05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElPTgorCisgICAxLiBEZWZp
bml0aW9ucy4KKworICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25k
aXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKKyAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMg
ZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgorCisgICAg
ICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0
aG9yaXplZCBieQorICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRo
ZSBMaWNlbnNlLgorCisgICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBv
ZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNv
bnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCisgICAgICBjb250
cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9u
LAorICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVj
dCwgdG8gY2F1c2UgdGhlCisgICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVu
dGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgorICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93
bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2YgdGhlCisgICAgICBvdXRz
dGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50
aXR5LgorCisgICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwg
b3IgTGVnYWwgRW50aXR5CisgICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkg
dGhpcyBMaWNlbnNlLgorCisgICAgICAiU291cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZl
cnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKKyAgICAgIGluY2x1ZGluZyBidXQg
bm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KKyAgICAg
IHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisKKyAgICAgICJPYmplY3QiIGZvcm0g
c2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCisgICAgICB0cmFu
c2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0
CisgICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRv
Y3VtZW50YXRpb24sCisgICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMu
CisKKyAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRo
ZXIgaW4gU291cmNlIG9yCisgICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIg
dGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRo
YXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKKyAgICAgIChhbiBleGFt
cGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCisKKyAgICAgICJEZXJpdmF0
aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmpl
Y3QKKyAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdv
cmsgYW5kIGZvciB3aGljaCB0aGUKKyAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRp
b25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKKyAgICAgIHJlcHJlc2Vu
dCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1
cnBvc2VzCisgICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90
IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KKyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJl
bHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKKyAgICAgIHRo
ZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCisKKyAgICAgICJDb250cmlidXRp
b24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCisgICAgICB0
aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3Ig
YWRkaXRpb25zCisgICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9m
LCB0aGF0IGlzIGludGVudGlvbmFsbHkKKyAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3Ig
aW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKKyAgICAgIG9yIGJ5
IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJl
aGFsZiBvZgorICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0
aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCisgICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVj
dHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CisgICAgICB0byB0
aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGlt
aXRlZCB0bworICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMs
IHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKKyAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBz
eXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCisgICAgICBM
aWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBX
b3JrLCBidXQKKyAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3Vv
dXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCisgICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkg
dGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKKworICAgICAgIkNv
bnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdh
bCBFbnRpdHkKKyAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVu
IHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAorICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRl
ZCB3aXRoaW4gdGhlIFdvcmsuCisKKyAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBT
dWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNl
LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAg
ICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJy
ZXZvY2FibGUKKyAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBE
ZXJpdmF0aXZlIFdvcmtzIG9mLAorICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVy
Zm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCisgICAgICBXb3JrIGFuZCBzdWNo
IERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLgorCisgICAzLiBHcmFu
dCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg
b2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRv
IFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hh
cmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICAoZXhjZXB0IGFzIHN0YXRlZCBp
biB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKKyAgICAg
IHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVy
IHRoZSBXb3JrLAorICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9z
ZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKKyAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhh
dCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCisgICAgICBDb250cmlidXRpb24o
cykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCisgICAg
ICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0
ZWQuIElmIFlvdQorICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55
IGVudGl0eSAoaW5jbHVkaW5nIGEKKyAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBp
biBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKKyAgICAgIG9yIGEgQ29udHJpYnV0
aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CisgICAg
ICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxp
Y2Vuc2VzCisgICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQg
V29yayBzaGFsbCB0ZXJtaW5hdGUKKyAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlv
biBpcyBmaWxlZC4KKworICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFu
ZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKKyAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3Jr
cyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0
aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKKyAg
ICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgICAoYSkgWW91IG11c3Qg
Z2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgorICAgICAgICAgIERlcml2
YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCisKKyAgICAgIChiKSBZb3Ug
bXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMK
KyAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKKworICAg
ICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0
aXZlIFdvcmtzCisgICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwg
cGF0ZW50LCB0cmFkZW1hcmssIGFuZAorICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJv
bSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCisgICAgICAgICAgZXhjbHVkaW5nIHRob3Nl
IG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgorICAgICAgICAgIHRo
ZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKKworICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVz
IGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCisgICAgICAgICAgZGlzdHJpYnV0
aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAor
ICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3Rp
Y2VzIGNvbnRhaW5lZAorICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRp
bmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAorICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBh
cnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9uZQorICAgICAgICAgIG9m
IHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1
dGVkCisgICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRo
ZSBTb3VyY2UgZm9ybSBvcgorICAgICAgICAgIGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFs
b25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAorICAgICAgICAgIHdpdGhpbiBhIGRp
c3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKKyAgICAgICAg
ICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUg
Y29udGVudHMKKyAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlv
bmFsIHB1cnBvc2VzIG9ubHkgYW5kCisgICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5z
ZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KKyAgICAgICAgICBub3RpY2VzIHdp
dGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQorICAg
ICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3Jr
LCBwcm92aWRlZAorICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5v
dGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAorICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGlj
ZW5zZS4KKworICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0
byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCisgICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9y
IGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCisgICAgICBmb3IgdXNlLCBy
ZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCisg
ICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZ
b3VyIHVzZSwKKyAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29y
ayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAorICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGlu
IHRoaXMgTGljZW5zZS4KKworICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxl
c3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAorICAgICAgYW55IENvbnRyaWJ1dGlv
biBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCisgICAg
ICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u
ZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRl
cm1zIG9yIGNvbmRpdGlvbnMuCisgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3Ro
aW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5CisgICAgICB0aGUgdGVybXMgb2Yg
YW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAorICAg
ICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgorCisgICA2LiBU
cmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2Ug
dGhlIHRyYWRlCisgICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJv
ZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCisgICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9y
IHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmluZyB0aGUKKyAgICAgIG9y
aWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElD
RSBmaWxlLgorCisgICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IKKyAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNv
ciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVz
IGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICAgV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisg
ICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRp
ZXMgb3IgY29uZGl0aW9ucworICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNI
QU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQorICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZ
b3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICBhcHBy
b3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3Vt
ZSBhbnkKKyAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1p
c3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KKworICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxp
dHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCisgICAgICB3aGV0aGVy
IGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwK
KyAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVy
YXRlIGFuZCBncm9zc2x5CisgICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQorICAgICAgbGlhYmxlIHRvIFlvdSBmb3Ig
ZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAorICAgICAg
aW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJp
c2luZyBhcyBhCisgICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNl
IG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCisgICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBs
aW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCisgICAgICB3b3JrIHN0b3Bw
YWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAorICAg
ICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250
cmlidXRvcgorICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3Vj
aCBkYW1hZ2VzLgorCisgICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFi
aWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCisgICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZl
IFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAorICAgICAgYW5kIGNoYXJn
ZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwK
KyAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNp
c3RlbnQgd2l0aCB0aGlzCisgICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3Vj
aCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQorICAgICAgb24gWW91ciBvd24gYmVoYWxm
IGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBiZWhhbGYKKyAgICAgIG9m
IGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlm
eSwKKyAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3Ig
YW55IGxpYWJpbGl0eQorICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2Fp
bnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgorICAgICAgb2YgeW91ciBhY2NlcHRpbmcg
YW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCisKKyAgIEVORCBPRiBU
RVJNUyBBTkQgQ09ORElUSU9OUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvTElDRU5TRS5C
U0QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9MSUNFTlNFLkJTRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjQyY2U3Yjc1YzkyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL0xJQ0VOU0UuQlNECkBAIC0wLDAgKzEsMjMgQEAKK0NvcHlyaWdodCAoYykgRG9uYWxk
IFN0dWZmdCBhbmQgaW5kaXZpZHVhbCBjb250cmlidXRvcnMuCitBbGwgcmlnaHRzIHJlc2VydmVk
LgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LAorICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisKKyAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECitBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKK0RB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
K09SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lOGJlYmU3NGRjMWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9SRUFETUUucnN0CkBAIC0wLDAgKzEsNzMgQEAKK3BhY2thZ2lu
ZworPT09PT09PT09CisKKy4uIHN0YXJ0LWludHJvCisKK1JldXNhYmxlIGNvcmUgdXRpbGl0aWVz
IGZvciB2YXJpb3VzIFB5dGhvbiBQYWNrYWdpbmcKK2BpbnRlcm9wZXJhYmlsaXR5IHNwZWNpZmlj
YXRpb25zIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NwZWNpZmljYXRpb25zLz5gXy4K
KworVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHV0aWxpdGllcyB0aGF0IGltcGxlbWVudCB0aGUgaW50
ZXJvcGVyYWJpbGl0eQorc3BlY2lmaWNhdGlvbnMgd2hpY2ggaGF2ZSBjbGVhcmx5IG9uZSBjb3Jy
ZWN0IGJlaGF2aW91ciAoZWc6IDpwZXA6YDQ0MGApCitvciBiZW5lZml0IGdyZWF0bHkgZnJvbSBo
YXZpbmcgYSBzaW5nbGUgc2hhcmVkIGltcGxlbWVudGF0aW9uIChlZzogOnBlcDpgNDI1YCkuCisK
Ky4uIGVuZC1pbnRybworCitUaGUgYGBwYWNrYWdpbmdgYCBwcm9qZWN0IGluY2x1ZGVzIHRoZSBm
b2xsb3dpbmc6IHZlcnNpb24gaGFuZGxpbmcsIHNwZWNpZmllcnMsCittYXJrZXJzLCByZXF1aXJl
bWVudHMsIHRhZ3MsIHV0aWxpdGllcy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQor
CitUaGUgYGRvY3VtZW50YXRpb25gXyBwcm92aWRlcyBpbmZvcm1hdGlvbiBhbmQgdGhlIEFQSSBm
b3IgdGhlIGZvbGxvd2luZzoKKworLSBWZXJzaW9uIEhhbmRsaW5nCistIFNwZWNpZmllcnMKKy0g
TWFya2VycworLSBSZXF1aXJlbWVudHMKKy0gVGFncworLSBVdGlsaXRpZXMKKworSW5zdGFsbGF0
aW9uCistLS0tLS0tLS0tLS0KKworVXNlIGBgcGlwYGAgdG8gaW5zdGFsbCB0aGVzZSB1dGlsaXRp
ZXM6OgorCisgICAgcGlwIGluc3RhbGwgcGFja2FnaW5nCisKK0Rpc2N1c3Npb24KKy0tLS0tLS0t
LS0KKworSWYgeW91IHJ1biBpbnRvIGJ1Z3MsIHlvdSBjYW4gZmlsZSB0aGVtIGluIG91ciBgaXNz
dWUgdHJhY2tlcmBfLgorCitZb3UgY2FuIGFsc28gam9pbiBgYCNweXBhYGAgb24gRnJlZW5vZGUg
dG8gYXNrIHF1ZXN0aW9ucyBvciBnZXQgaW52b2x2ZWQuCisKKworLi4gX2Bkb2N1bWVudGF0aW9u
YDogaHR0cHM6Ly9wYWNrYWdpbmcucHlwYS5pby8KKy4uIF9gaXNzdWUgdHJhY2tlcmA6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXBhL3BhY2thZ2luZy9pc3N1ZXMKKworCitDb2RlIG9mIENvbmR1Y3QK
Ky0tLS0tLS0tLS0tLS0tLQorCitFdmVyeW9uZSBpbnRlcmFjdGluZyBpbiB0aGUgcGFja2FnaW5n
IHByb2plY3QncyBjb2RlYmFzZXMsIGlzc3VlIHRyYWNrZXJzLCBjaGF0Cityb29tcywgYW5kIG1h
aWxpbmcgbGlzdHMgaXMgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZSBgUFNGIENvZGUgb2YgQ29uZHVj
dGBfLgorCisuLiBfUFNGIENvZGUgb2YgQ29uZHVjdDogaHR0cHM6Ly9naXRodWIuY29tL3B5cGEv
LmdpdGh1Yi9ibG9iL21haW4vQ09ERV9PRl9DT05EVUNULm1kCisKK0NvbnRyaWJ1dGluZworLS0t
LS0tLS0tLS0tCisKK1RoZSBgYENPTlRSSUJVVElORy5yc3RgYCBmaWxlIG91dGxpbmVzIGhvdyB0
byBjb250cmlidXRlIHRvIHRoaXMgcHJvamVjdCBhcword2VsbCBhcyBob3cgdG8gcmVwb3J0IGEg
cG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlLiBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcworcHJv
amVjdCBhbHNvIGNvdmVycyBpbmZvcm1hdGlvbiBhYm91dCBgcHJvamVjdCBkZXZlbG9wbWVudGBf
IGFuZCBgc2VjdXJpdHlgXy4KKworLi4gX2Bwcm9qZWN0IGRldmVsb3BtZW50YDogaHR0cHM6Ly9w
YWNrYWdpbmcucHlwYS5pby9lbi9sYXRlc3QvZGV2ZWxvcG1lbnQvCisuLiBfYHNlY3VyaXR5YDog
aHR0cHM6Ly9wYWNrYWdpbmcucHlwYS5pby9lbi9sYXRlc3Qvc2VjdXJpdHkvCisKK1Byb2plY3Qg
SGlzdG9yeQorLS0tLS0tLS0tLS0tLS0tCisKK1BsZWFzZSByZXZpZXcgdGhlIGBgQ0hBTkdFTE9H
LnJzdGBgIGZpbGUgb3IgdGhlIGBDaGFuZ2Vsb2cgZG9jdW1lbnRhdGlvbmBfIGZvcgorcmVjZW50
IGNoYW5nZXMgYW5kIHByb2plY3QgaGlzdG9yeS4KKworLi4gX2BDaGFuZ2Vsb2cgZG9jdW1lbnRh
dGlvbmA6IGh0dHBzOi8vcGFja2FnaW5nLnB5cGEuaW8vZW4vbGF0ZXN0L2NoYW5nZWxvZy8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2l4L2RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL01ha2Vm
aWxlCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vTWFrZWZpbGUK
cmVuYW1lIHRvIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvTWFrZWZpbGUKaW5kZXggZWViYWZjZDZkNjBm
Li45ZDY4M2I0MDI0N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvZG9jcy9NYWtlZmlsZQpAQCAtMTEsOCArMTEsMTAgQEAgQlVJTERESVIgICAg
ICA9IF9idWlsZAogUEFQRVJPUFRfYTQgICAgID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1hNAogUEFQ
RVJPUFRfbGV0dGVyID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1sZXR0ZXIKIEFMTFNQSElOWE9QVFMg
ICA9IC1kICQoQlVJTERESVIpL2RvY3RyZWVzICQoUEFQRVJPUFRfJChQQVBFUikpICQoU1BISU5Y
T1BUUykgLgorIyB0aGUgaTE4biBidWlsZGVyIGNhbm5vdCBzaGFyZSB0aGUgZW52aXJvbm1lbnQg
YW5kIGRvY3RyZWVzIHdpdGggdGhlIG90aGVycworSTE4TlNQSElOWE9QVFMgID0gJChQQVBFUk9Q
VF8kKFBBUEVSKSkgJChTUEhJTlhPUFRTKSAuCiAKLS5QSE9OWTogaGVscCBjbGVhbiBodG1sIGRp
cmh0bWwgc2luZ2xlaHRtbCBwaWNrbGUganNvbiBodG1saGVscCBxdGhlbHAgZGV2aGVscCBlcHVi
IGxhdGV4IGxhdGV4cGRmIHRleHQgbWFuIGNoYW5nZXMgbGlua2NoZWNrIGRvY3Rlc3QKKy5QSE9O
WTogaGVscCBjbGVhbiBodG1sIGRpcmh0bWwgc2luZ2xlaHRtbCBwaWNrbGUganNvbiBodG1saGVs
cCBxdGhlbHAgZGV2aGVscCBlcHViIGxhdGV4IGxhdGV4cGRmIHRleHQgbWFuIGNoYW5nZXMgbGlu
a2NoZWNrIGRvY3Rlc3QgZ2V0dGV4dAogCiBoZWxwOgogCUBlY2hvICJQbGVhc2UgdXNlIFxgbWFr
ZSA8dGFyZ2V0Picgd2hlcmUgPHRhcmdldD4gaXMgb25lIG9mIgpAQCAtMjksNiArMzEsOSBAQCBo
ZWxwOgogCUBlY2hvICIgIGxhdGV4cGRmICAgdG8gbWFrZSBMYVRlWCBmaWxlcyBhbmQgcnVuIHRo
ZW0gdGhyb3VnaCBwZGZsYXRleCIKIAlAZWNobyAiICB0ZXh0ICAgICAgIHRvIG1ha2UgdGV4dCBm
aWxlcyIKIAlAZWNobyAiICBtYW4gICAgICAgIHRvIG1ha2UgbWFudWFsIHBhZ2VzIgorCUBlY2hv
ICIgIHRleGluZm8gICAgdG8gbWFrZSBUZXhpbmZvIGZpbGVzIgorCUBlY2hvICIgIGluZm8gICAg
ICAgdG8gbWFrZSBUZXhpbmZvIGZpbGVzIGFuZCBydW4gdGhlbSB0aHJvdWdoIG1ha2VpbmZvIgor
CUBlY2hvICIgIGdldHRleHQgICAgdG8gbWFrZSBQTyBtZXNzYWdlIGNhdGFsb2dzIgogCUBlY2hv
ICIgIGNoYW5nZXMgICAgdG8gbWFrZSBhbiBvdmVydmlldyBvZiBhbGwgY2hhbmdlZC9hZGRlZC9k
ZXByZWNhdGVkIGl0ZW1zIgogCUBlY2hvICIgIGxpbmtjaGVjayAgdG8gY2hlY2sgYWxsIGV4dGVy
bmFsIGxpbmtzIGZvciBpbnRlZ3JpdHkiCiAJQGVjaG8gIiAgZG9jdGVzdCAgICB0byBydW4gYWxs
IGRvY3Rlc3RzIGVtYmVkZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChpZiBlbmFibGVkKSIKQEAg
LTcyLDE3ICs3NywxNyBAQCBxdGhlbHA6CiAJQGVjaG8KIAlAZWNobyAiQnVpbGQgZmluaXNoZWQ7
IG5vdyB5b3UgY2FuIHJ1biAicWNvbGxlY3Rpb25nZW5lcmF0b3IiIHdpdGggdGhlIiBcCiAJICAg
ICAgIi5xaGNwIHByb2plY3QgZmlsZSBpbiAkKEJVSUxERElSKS9xdGhlbHAsIGxpa2UgdGhpczoi
Ci0JQGVjaG8gIiMgcWNvbGxlY3Rpb25nZW5lcmF0b3IgJChCVUlMRERJUikvcXRoZWxwL3NpeC5x
aGNwIgorCUBlY2hvICIjIHFjb2xsZWN0aW9uZ2VuZXJhdG9yICQoQlVJTERESVIpL3F0aGVscC9w
YWNrYWdpbmcucWhjcCIKIAlAZWNobyAiVG8gdmlldyB0aGUgaGVscCBmaWxlOiIKLQlAZWNobyAi
IyBhc3Npc3RhbnQgLWNvbGxlY3Rpb25GaWxlICQoQlVJTERESVIpL3F0aGVscC9zaXgucWhjIgor
CUBlY2hvICIjIGFzc2lzdGFudCAtY29sbGVjdGlvbkZpbGUgJChCVUlMRERJUikvcXRoZWxwL3Bh
Y2thZ2luZy5xaGMiCiAKIGRldmhlbHA6CiAJJChTUEhJTlhCVUlMRCkgLWIgZGV2aGVscCAkKEFM
TFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RldmhlbHAKIAlAZWNobwogCUBlY2hvICJCdWlsZCBm
aW5pc2hlZC4iCiAJQGVjaG8gIlRvIHZpZXcgdGhlIGhlbHAgZmlsZToiCi0JQGVjaG8gIiMgbWtk
aXIgLXAgJCRIT01FLy5sb2NhbC9zaGFyZS9kZXZoZWxwL3NpeCIKLQlAZWNobyAiIyBsbiAtcyAk
KEJVSUxERElSKS9kZXZoZWxwICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC9zaXgiCisJQGVj
aG8gIiMgbWtkaXIgLXAgJCRIT01FLy5sb2NhbC9zaGFyZS9kZXZoZWxwL3BhY2thZ2luZyIKKwlA
ZWNobyAiIyBsbiAtcyAkKEJVSUxERElSKS9kZXZoZWxwICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2
aGVscC9wYWNrYWdpbmciCiAJQGVjaG8gIiMgZGV2aGVscCIKIAogZXB1YjoKQEAgLTEwMCw3ICsx
MDUsNyBAQCBsYXRleDoKIGxhdGV4cGRmOgogCSQoU1BISU5YQlVJTEQpIC1iIGxhdGV4ICQoQUxM
U1BISU5YT1BUUykgJChCVUlMRERJUikvbGF0ZXgKIAlAZWNobyAiUnVubmluZyBMYVRlWCBmaWxl
cyB0aHJvdWdoIHBkZmxhdGV4Li4uIgotCW1ha2UgLUMgJChCVUlMRERJUikvbGF0ZXggYWxsLXBk
ZgorCSQoTUFLRSkgLUMgJChCVUlMRERJUikvbGF0ZXggYWxsLXBkZgogCUBlY2hvICJwZGZsYXRl
eCBmaW5pc2hlZDsgdGhlIFBERiBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvbGF0ZXguIgogCiB0
ZXh0OgpAQCAtMTEzLDYgKzExOCwyNCBAQCBtYW46CiAJQGVjaG8KIAlAZWNobyAiQnVpbGQgZmlu
aXNoZWQuIFRoZSBtYW51YWwgcGFnZXMgYXJlIGluICQoQlVJTERESVIpL21hbi4iCiAKK3RleGlu
Zm86CisJJChTUEhJTlhCVUlMRCkgLWIgdGV4aW5mbyAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERE
SVIpL3RleGluZm8KKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIFRleGluZm8g
ZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3RleGluZm8uIgorCUBlY2hvICJSdW4gXGBtYWtlJyBp
biB0aGF0IGRpcmVjdG9yeSB0byBydW4gdGhlc2UgdGhyb3VnaCBtYWtlaW5mbyIgXAorCSAgICAg
ICIodXNlIFxgbWFrZSBpbmZvJyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGljYWxseSkuIgorCitp
bmZvOgorCSQoU1BISU5YQlVJTEQpIC1iIHRleGluZm8gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxE
RElSKS90ZXhpbmZvCisJQGVjaG8gIlJ1bm5pbmcgVGV4aW5mbyBmaWxlcyB0aHJvdWdoIG1ha2Vp
bmZvLi4uIgorCW1ha2UgLUMgJChCVUlMRERJUikvdGV4aW5mbyBpbmZvCisJQGVjaG8gIm1ha2Vp
bmZvIGZpbmlzaGVkOyB0aGUgSW5mbyBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4aW5mby4i
CisKK2dldHRleHQ6CisJJChTUEhJTlhCVUlMRCkgLWIgZ2V0dGV4dCAkKEkxOE5TUEhJTlhPUFRT
KSAkKEJVSUxERElSKS9sb2NhbGUKKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhl
IG1lc3NhZ2UgY2F0YWxvZ3MgYXJlIGluICQoQlVJTERESVIpL2xvY2FsZS4iCisKIGNoYW5nZXM6
CiAJJChTUEhJTlhCVUlMRCkgLWIgY2hhbmdlcyAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIp
L2NoYW5nZXMKIAlAZWNobwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9fc3RhdGlj
Ly5lbXB0eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvX3N0YXRpYy8uZW1wdHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL2RvY3MvY2hhbmdlbG9nLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvY2hh
bmdlbG9nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2NWIw
NTIxZDBjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvY2hhbmdlbG9n
LnJzdApAQCAtMCwwICsxIEBACisuLiBpbmNsdWRlOjogLi4vQ0hBTkdFTE9HLnJzdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9jb25mLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9j
b25mLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2JkNGIxM2Fh
MzQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9jb25mLnB5CkBAIC0w
LDAgKzEsMTEzIEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBUaGlzIGZpbGUgaXMgZHVh
bCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
CisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlv
bgorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVz
IHRvIGRvY3VtZW50IHdpdGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBh
ZGQgdGhlc2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBp
cyByZWxhdGl2ZSB0byB0aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNw
YXRoIHRvIG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KK3N5cy5wYXRoLmluc2Vy
dCgwLCBvcy5wYXRoLmFic3BhdGgoIi4iKSkKKworIyAtLSBHZW5lcmFsIGNvbmZpZ3VyYXRpb24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
IEFkZCBhbnkgU3BoaW54IGV4dGVuc2lvbiBtb2R1bGUgbmFtZXMgaGVyZSwgYXMgc3RyaW5ncy4g
VGhleSBjYW4gYmUKKyMgZXh0ZW5zaW9ucyAgY29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3Bo
aW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20gb25lcy4KK2V4dGVuc2lvbnMgPSBbCisgICAgInNw
aGlueC5leHQuYXV0b2RvYyIsCisgICAgInNwaGlueC5leHQuZG9jdGVzdCIsCisgICAgInNwaGlu
eC5leHQuZXh0bGlua3MiLAorICAgICJzcGhpbnguZXh0LmludGVyc3BoaW54IiwKKyAgICAic3Bo
aW54LmV4dC52aWV3Y29kZSIsCitdCisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gdGVt
cGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LgordGVtcGxhdGVzX3BhdGgg
PSBbIl90ZW1wbGF0ZXMiXQorCisjIFRoZSBzdWZmaXggb2Ygc291cmNlIGZpbGVuYW1lcy4KK3Nv
dXJjZV9zdWZmaXggPSAiLnJzdCIKKworIyBUaGUgbWFzdGVyIHRvY3RyZWUgZG9jdW1lbnQuCitt
YXN0ZXJfZG9jID0gImluZGV4IgorCisjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBy
b2plY3QuCitwcm9qZWN0ID0gIlBhY2thZ2luZyIKKworIyBUaGUgdmVyc2lvbiBpbmZvIGZvciB0
aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9yCisj
IHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhlciBwbGFj
ZXMgdGhyb3VnaG91dCB0aGUKKyMgYnVpbHQgZG9jdW1lbnRzLgorIworCitiYXNlX2RpciA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCBvcy5wYXJkaXIpCithYm91dCA9
IHt9Cit3aXRoIG9wZW4ob3MucGF0aC5qb2luKGJhc2VfZGlyLCAicGFja2FnaW5nIiwgIl9faW5p
dF9fLnB5IikpIGFzIGY6CisgICAgZXhlYyhmLnJlYWQoKSwgYWJvdXQpCisKK3ZlcnNpb24gPSBy
ZWxlYXNlID0gYWJvdXRbIl9fdmVyc2lvbl9fIl0KK2NvcHlyaWdodCA9ICIyMDE0LTIwMTkgRG9u
YWxkIFN0dWZmdCBhbmQgaW5kaXZpZHVhbCBjb250cmlidXRvcnMiCisKKyMgTGlzdCBvZiBwYXR0
ZXJucywgcmVsYXRpdmUgdG8gc291cmNlIGRpcmVjdG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQK
KyMgZGlyZWN0b3JpZXMgdG8gaWdub3JlIHdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzLgor
ZXhjbHVkZV9wYXR0ZXJucyA9IFsiX2J1aWxkIl0KKworZXh0bGlua3MgPSB7CisgICAgImlzc3Vl
IjogKCJodHRwczovL2dpdGh1Yi5jb20vcHlwYS9wYWNrYWdpbmcvaXNzdWVzLyVzIiwgIiMiKSwK
KyAgICAicHVsbCI6ICgiaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGFja2FnaW5nL3B1bGwvJXMi
LCAiUFIgIyIpLAorfQorIyAtLSBPcHRpb25zIGZvciBIVE1MIG91dHB1dCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoZSB0aGVtZSB0byB1
c2UgZm9yIEhUTUwgYW5kIEhUTUwgSGVscCBwYWdlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBm
b3IKKyMgYSBsaXN0IG9mIGJ1aWx0aW4gdGhlbWVzLgorCitodG1sX3RoZW1lID0gImZ1cm8iCito
dG1sX3RpdGxlID0gInBhY2thZ2luZyIKKworIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBj
dXN0b20gc3RhdGljIGZpbGVzIChzdWNoIGFzIHN0eWxlIHNoZWV0cykgaGVyZSwKKyMgcmVsYXRp
dmUgdG8gdGhpcyBkaXJlY3RvcnkuIFRoZXkgYXJlIGNvcGllZCBhZnRlciB0aGUgYnVpbHRpbiBz
dGF0aWMgZmlsZXMsCisjIHNvIGEgZmlsZSBuYW1lZCAiZGVmYXVsdC5jc3MiIHdpbGwgb3Zlcndy
aXRlIHRoZSBidWlsdGluICJkZWZhdWx0LmNzcyIuCitodG1sX3N0YXRpY19wYXRoID0gWyJfc3Rh
dGljIl0KKworIyBPdXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgor
aHRtbGhlbHBfYmFzZW5hbWUgPSAicGFja2FnaW5nZG9jIgorCisKKyMgLS0gT3B0aW9ucyBmb3Ig
TGFUZVggb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbGF0ZXhfZWxlbWVudHMgPSB7fQorCisjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0
cmVlIGludG8gTGFUZVggZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ugc3RhcnQgZmls
ZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsIGRvY3VtZW50Y2xhc3MgW2hvd3RvL21hbnVh
bF0pCitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKCJpbmRleCIsICJwYWNrYWdpbmcudGV4Iiwg
IlBhY2thZ2luZyBEb2N1bWVudGF0aW9uIiwgIkRvbmFsZCBTdHVmZnQiLCAibWFudWFsIikKK10K
KworIyAtLSBPcHRpb25zIGZvciBtYW51YWwgcGFnZSBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2Uu
IExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24s
IGF1dGhvcnMsIG1hbnVhbCBzZWN0aW9uKS4KK21hbl9wYWdlcyA9IFsoImluZGV4IiwgInBhY2th
Z2luZyIsICJQYWNrYWdpbmcgRG9jdW1lbnRhdGlvbiIsIFsiRG9uYWxkIFN0dWZmdCJdLCAxKV0K
KworIyAtLSBPcHRpb25zIGZvciBUZXhpbmZvIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0cmVl
IGludG8gVGV4aW5mbyBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxl
LCB0YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKKyMgIGRpciBtZW51IGVudHJ5LCBkZXNjcmlw
dGlvbiwgY2F0ZWdvcnkpCit0ZXhpbmZvX2RvY3VtZW50cyA9IFsKKyAgICAoCisgICAgICAgICJp
bmRleCIsCisgICAgICAgICJwYWNrYWdpbmciLAorICAgICAgICAiUGFja2FnaW5nIERvY3VtZW50
YXRpb24iLAorICAgICAgICAiRG9uYWxkIFN0dWZmdCIsCisgICAgICAgICJwYWNrYWdpbmciLAor
ICAgICAgICAiQ29yZSB1dGlsaXRpZXMgZm9yIFB5dGhvbiBwYWNrYWdlcyIsCisgICAgICAgICJN
aXNjZWxsYW5lb3VzIiwKKyAgICApCitdCisKKyMgRXhhbXBsZSBjb25maWd1cmF0aW9uIGZvciBp
bnRlcnNwaGlueDogcmVmZXIgdG8gdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5LgoraW50ZXJz
cGhpbnhfbWFwcGluZyA9IHsiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvIjogTm9uZX0KKworZXB1
Yl90aGVtZSA9ICJlcHViIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9w
bWVudC9nZXR0aW5nLXN0YXJ0ZWQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVu
dC9nZXR0aW5nLXN0YXJ0ZWQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYzhlOTQ4NzgyN2IzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9j
cy9kZXZlbG9wbWVudC9nZXR0aW5nLXN0YXJ0ZWQucnN0CkBAIC0wLDAgKzEsODAgQEAKK0dldHRp
bmcgc3RhcnRlZAorPT09PT09PT09PT09PT09CisKK1dvcmtpbmcgb24gcGFja2FnaW5nIHJlcXVp
cmVzIHRoZSBpbnN0YWxsYXRpb24gb2YgYSBzbWFsbCBudW1iZXIgb2YKK2RldmVsb3BtZW50IGRl
cGVuZGVuY2llcy4gVG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSByZXF1aXJlZCB0bworcnVu
IHRoZSB0ZXN0cyBtYW51YWxseSwgcGxlYXNlIGxvb2sgYXQgdGhlIGBgbm94ZmlsZS5weWBgIGZp
bGUuCisKK1J1bm5pbmcgdGVzdHMKK35+fn5+fn5+fn5+fn4KKworVGhlIHBhY2thZ2luZyB1bml0
IHRlc3RzIGFyZSBmb3VuZCBpbiB0aGUgYGB0ZXN0cy9gYCBkaXJlY3RvcnkgYW5kIGFyZQorZGVz
aWduZWQgdG8gYmUgcnVuIHVzaW5nIGBweXRlc3RgXy4gYHB5dGVzdGBfIHdpbGwgZGlzY292ZXIg
dGhlIHRlc3RzCithdXRvbWF0aWNhbGx5LCBzbyBhbGwgeW91IGhhdmUgdG8gZG8gaXM6CisKKy4u
IGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICAkIHB5dGhvbiAtbSBweXRlc3QKKyAgICAuLi4K
KyAgICAyOTIwNCBwYXNzZWQsIDQgc2tpcHBlZCwgMSB4ZmFpbGVkIGluIDgzLjk4IHNlY29uZHMK
KworVGhpcyBydW5zIHRoZSB0ZXN0cyB3aXRoIHRoZSBkZWZhdWx0IFB5dGhvbiBpbnRlcnByZXRl
ci4gVGhpcyBhbHNvIGFsbG93cworeW91IHRvIHJ1biBzZWxlY3QgdGVzdHMgaW5zdGVhZCBvZiB0
aGUgZW50aXJlIHRlc3Qgc3VpdGUuCisKK1lvdSBjYW4gYWxzbyB2ZXJpZnkgdGhhdCB0aGUgdGVz
dHMgcGFzcyBvbiBvdGhlciBzdXBwb3J0ZWQgUHl0aG9uIGludGVycHJldGVycy4KK0ZvciB0aGlz
IHdlIHVzZSBgbm94YF8sIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSBgdmlydHVh
bGVudmBfIGZvcgorZWFjaCBzdXBwb3J0ZWQgUHl0aG9uIHZlcnNpb24gYW5kIHJ1biB0aGUgdGVz
dHMuIEZvciBleGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAgJCBub3gg
LXMgdGVzdHMKKyAgICAuLi4KKyAgICBub3ggPiBSYW4gbXVsdGlwbGUgc2Vzc2lvbnM6CisgICAg
bm94ID4gKiB0ZXN0cy0yLjc6IHN1Y2Nlc3MKKyAgICBub3ggPiAqIHRlc3RzLTMuNDogc2tpcHBl
ZAorICAgIG5veCA+ICogdGVzdHMtMy41OiBzdWNjZXNzCisgICAgbm94ID4gKiB0ZXN0cy0zLjY6
IHN1Y2Nlc3MKKyAgICBub3ggPiAqIHRlc3RzLTMuNzogc3VjY2VzcworICAgIG5veCA+ICogdGVz
dHMtMy44OiBzdWNjZXNzCisgICAgbm94ID4gKiB0ZXN0cy1weXB5OiBza2lwcGVkCisgICAgbm94
ID4gKiB0ZXN0cy1weXB5Mzogc2tpcHBlZAorCitZb3UgbWF5IG5vdCBoYXZlIGFsbCB0aGUgcmVx
dWlyZWQgUHl0aG9uIHZlcnNpb25zIGluc3RhbGxlZCwgaW4gd2hpY2ggY2FzZSB5b3UKK3dpbGwg
c2VlIG9uZSBvciBtb3JlIGBgSW50ZXJwcmV0ZXJOb3RGb3VuZGBgIGVycm9ycy4KKworUnVubmlu
ZyBsaW50ZXJzCit+fn5+fn5+fn5+fn5+fn4KKworSWYgeW91IHdpc2ggdG8gcnVuIHRoZSBsaW50
aW5nIHJ1bGVzLCB5b3UgbWF5IHVzZSBgcHJlLWNvbW1pdGBfIG9yIHJ1bgorYGBub3ggLXMgbGlu
dGBgLgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAgJCBub3ggLXMgbGludAorICAg
IC4uLgorICAgIG5veCA+IFNlc3Npb24gbGludCB3YXMgc3VjY2Vzc2Z1bC4KKworQnVpbGRpbmcg
ZG9jdW1lbnRhdGlvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitwYWNrYWdpbmcgZG9jdW1l
bnRhdGlvbiBpcyBzdG9yZWQgaW4gdGhlIGBgZG9jcy9gYCBkaXJlY3RvcnkuIEl0IGlzCit3cml0
dGVuIGluIGByZVN0cnVjdHVyZWQgVGV4dGBfIGFuZCByZW5kZXJlZCB1c2luZyBgU3BoaW54YF8u
CisKK1VzZSBgbm94YF8gdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24uIEZvciBleGFtcGxlOgor
CisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAgJCBub3ggLXMgZG9jcworICAgIC4uLgor
ICAgIG5veCA+IFNlc3Npb24gZG9jcyB3YXMgc3VjY2Vzc2Z1bC4KKworVGhlIEhUTUwgZG9jdW1l
bnRhdGlvbiBpbmRleCBjYW4gbm93IGJlIGZvdW5kIGF0CitgYGRvY3MvX2J1aWxkL2h0bWwvaW5k
ZXguaHRtbGBgLgorCisuLiBfYHB5dGVzdGA6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRl
c3QvCisuLiBfYG5veGA6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9ub3gvCisuLiBfYHZpcnR1
YWxlbnZgOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvdmlydHVhbGVudi8KKy4uIF9gcGlwYDog
aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3BpcC8KKy4uIF9gc3BoaW54YDogaHR0cHM6Ly9weXBp
Lm9yZy9wcm9qZWN0L1NwaGlueC8KKy4uIF9gcmVTdHJ1Y3R1cmVkIFRleHRgOiBodHRwOi8vc3Bo
aW54LWRvYy5vcmcvcmVzdC5odG1sCisuLiBfYHByZS1jb21taXRgOiBodHRwczovL3ByZS1jb21t
aXQuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L2luZGV4
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvaW5kZXgucnN0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzBhZWE4YWNiMzkzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9pbmRleC5yc3QKQEAgLTAs
MCArMSwxOSBAQAorRGV2ZWxvcG1lbnQKKz09PT09PT09PT09CisKK0FzIGFuIG9wZW4gc291cmNl
IHByb2plY3QsIHBhY2thZ2luZyB3ZWxjb21lcyBjb250cmlidXRpb25zIG9mIGFsbAorZm9ybXMu
IFRoZSBzZWN0aW9ucyBiZWxvdyB3aWxsIGhlbHAgeW91IGdldCBzdGFydGVkLgorCitGaWxlIGJ1
Z3MgYW5kIGZlYXR1cmUgcmVxdWVzdHMgb24gb3VyIGlzc3VlIHRyYWNrZXIgb24gYEdpdEh1YmBf
LiBJZiBpdCBpcyBhCitidWcgY2hlY2sgb3V0IGB3aGF0IHRvIHB1dCBpbiB5b3VyIGJ1ZyByZXBv
cnRgXy4KKworLi4gdG9jdHJlZTo6CisgICAgOm1heGRlcHRoOiAyCisKKyAgICBnZXR0aW5nLXN0
YXJ0ZWQKKyAgICBzdWJtaXR0aW5nLXBhdGNoZXMKKyAgICByZXZpZXdpbmctcGF0Y2hlcworICAg
IHJlbGVhc2UtcHJvY2VzcworCisuLiBfYEdpdEh1YmA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXBh
L3BhY2thZ2luZworLi4gX2B3aGF0IHRvIHB1dCBpbiB5b3VyIGJ1ZyByZXBvcnRgOiBodHRwOi8v
d3d3LmNvbnRyaWJ1dGlvbi1ndWlkZS5vcmcvI3doYXQtdG8tcHV0LWluLXlvdXItYnVnLXJlcG9y
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9yZWxlYXNlLXBy
b2Nlc3MucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9yZWxlYXNlLXByb2Nl
c3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjYzNGFjNDBi
ZGUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9y
ZWxlYXNlLXByb2Nlc3MucnN0CkBAIC0wLDAgKzEsMjEgQEAKK1JlbGVhc2UgUHJvY2VzcworPT09
PT09PT09PT09PT09CisKKyMuIENoZWNrb3V0IHRoZSBjdXJyZW50IGBgbWFzdGVyYGAgYnJhbmNo
LgorIy4gSW5zdGFsbCB0aGUgbGF0ZXN0IGBgbm94YGA6OgorCisgICAgJCBwaXAgaW5zdGFsbCBu
b3gKKworIy4gUnVuIHRoZSByZWxlYXNlIGF1dG9tYXRpb24gd2l0aCB0aGUgcmVxdWlyZWQgdmVy
c2lvbiBudW1iZXIgKFlZLk4pOjoKKworICAgICQgbm94IC1zIHJlbGVhc2UgLS0gWVkuTgorCisj
LiBOb3RpZnkgdGhlIG90aGVyIHByb2plY3Qgb3duZXJzIG9mIHRoZSByZWxlYXNlLgorCisuLiBu
b3RlOjoKKworICAgQWNjZXNzIG5lZWRlZCBmb3IgbWFraW5nIHRoZSByZWxlYXNlIGFyZToKKwor
ICAgLSBQeVBJIG1haW50YWluZXIgKG9yIG93bmVyKSBhY2Nlc3MgdG8gYHBhY2thZ2luZ2AKKyAg
IC0gcHVzaCBkaXJlY3RseSB0byB0aGUgYG1hc3RlcmAgYnJhbmNoIG9uIHRoZSBzb3VyY2UgcmVw
b3NpdG9yeQorICAgLSBwdXNoIHRhZ3MgZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSByZXBvc2l0b3J5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3Jldmlld2luZy1w
YXRjaGVzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvcmV2aWV3aW5nLXBh
dGNoZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQ3NmM3
NTEyZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVu
dC9yZXZpZXdpbmctcGF0Y2hlcy5yc3QKQEAgLTAsMCArMSwzNyBAQAorUmV2aWV3aW5nIGFuZCBt
ZXJnaW5nIHBhdGNoZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0V2ZXJ5b25l
IGlzIGVuY291cmFnZWQgdG8gcmV2aWV3IG9wZW4gcHVsbCByZXF1ZXN0cy4gV2Ugb25seSBhc2sg
dGhhdCB5b3UgdHJ5CithbmQgdGhpbmsgY2FyZWZ1bGx5LCBhc2sgcXVlc3Rpb25zIGFuZCBhcmUg
YGV4Y2VsbGVudCB0byBvbmUgYW5vdGhlcmBfLiBDb2RlCityZXZpZXcgaXMgb3VyIG9wcG9ydHVu
aXR5IHRvIHNoYXJlIGtub3dsZWRnZSwgZGVzaWduIGlkZWFzIGFuZCBtYWtlIGZyaWVuZHMuCisK
K1doZW4gcmV2aWV3aW5nIGEgcGF0Y2ggdHJ5IHRvIGtlZXAgZWFjaCBvZiB0aGVzZSBjb25jZXB0
cyBpbiBtaW5kOgorCitBcmNoaXRlY3R1cmUKKy0tLS0tLS0tLS0tLQorCisqIElzIHRoZSBwcm9w
b3NlZCBjaGFuZ2UgYmVpbmcgbWFkZSBpbiB0aGUgY29ycmVjdCBwbGFjZT8KKworSW50ZW50Cist
LS0tLS0KKworKiBXaGF0IGlzIHRoZSBjaGFuZ2UgYmVpbmcgcHJvcG9zZWQ/CisqIERvIHdlIHdh
bnQgdGhpcyBmZWF0dXJlIG9yIGlzIHRoZSBidWcgdGhleSdyZSBmaXhpbmcgcmVhbGx5IGEgYnVn
PworCitJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0KKworKiBEb2VzIHRoZSBjaGFuZ2Ug
ZG8gd2hhdCB0aGUgYXV0aG9yIGNsYWltcz8KKyogQXJlIHRoZXJlIHN1ZmZpY2llbnQgdGVzdHM/
CisqIEhhcyBpdCBiZWVuIGRvY3VtZW50ZWQ/CisqIFdpbGwgdGhpcyBjaGFuZ2UgaW50cm9kdWNl
IG5ldyBidWdzPworCitHcmFtbWFyIGFuZCBzdHlsZQorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhl
c2UgYXJlIHNtYWxsIHRoaW5ncyB0aGF0IGFyZSBub3QgY2F1Z2h0IGJ5IHRoZSBhdXRvbWF0ZWQg
c3R5bGUgY2hlY2tlcnMuCisKKyogRG9lcyBhIHZhcmlhYmxlIG5lZWQgYSBiZXR0ZXIgbmFtZT8K
KyogU2hvdWxkIHRoaXMgYmUgYSBrZXl3b3JkIGFyZ3VtZW50PworCisuLiBfYGV4Y2VsbGVudCB0
byBvbmUgYW5vdGhlcmA6IGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL29ocml0ZS9iZXR0ZXItY29k
ZS1yZXZpZXcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvc3Vi
bWl0dGluZy1wYXRjaGVzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvc3Vi
bWl0dGluZy1wYXRjaGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmNmNDMzYzQ1ZjIwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3Mv
ZGV2ZWxvcG1lbnQvc3VibWl0dGluZy1wYXRjaGVzLnJzdApAQCAtMCwwICsxLDgxIEBACitTdWJt
aXR0aW5nIHBhdGNoZXMKKz09PT09PT09PT09PT09PT09PQorCisqIEFsd2F5cyBtYWtlIGEgbmV3
IGJyYW5jaCBmb3IgeW91ciB3b3JrLgorKiBQYXRjaGVzIHNob3VsZCBiZSBzbWFsbCB0byBmYWNp
bGl0YXRlIGVhc2llciByZXZpZXcuIGBTdHVkaWVzIGhhdmUgc2hvd25gXworICB0aGF0IHJldmll
dyBxdWFsaXR5IGZhbGxzIG9mZiBhcyBwYXRjaCBzaXplIGdyb3dzLiBTb21ldGltZXMgdGhpcyB3
aWxsIHJlc3VsdAorICBpbiBtYW55IHNtYWxsIFBScyB0byBsYW5kIGEgc2luZ2xlIGxhcmdlIGZl
YXR1cmUuCisqIExhcmdlciBjaGFuZ2VzIHNob3VsZCBiZSBkaXNjdXNzZWQgaW4gYSB0aWNrZXQg
YmVmb3JlIHN1Ym1pc3Npb24uCisqIE5ldyBmZWF0dXJlcyBhbmQgc2lnbmlmaWNhbnQgYnVnIGZp
eGVzIHNob3VsZCBiZSBkb2N1bWVudGVkIGluIHRoZQorICA6ZG9jOmAvY2hhbmdlbG9nYC4KKyog
WW91IG11c3QgaGF2ZSBsZWdhbCBwZXJtaXNzaW9uIHRvIGRpc3RyaWJ1dGUgYW55IGNvZGUgeW91
IGNvbnRyaWJ1dGUgYW5kIGl0CisgIG11c3QgYmUgYXZhaWxhYmxlIHVuZGVyIGJvdGggdGhlIEJT
RCBhbmQgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgVmVyc2lvbiAyLjAKKyAgbGljZW5zZXMuCisK
K0lmIHlvdSBiZWxpZXZlIHlvdSd2ZSBpZGVudGlmaWVkIGEgc2VjdXJpdHkgaXNzdWUgaW4gcGFj
a2FnaW5nLCBwbGVhc2UKK2ZvbGxvdyB0aGUgZGlyZWN0aW9ucyBvbiB0aGUgOmRvYzpgc2VjdXJp
dHkgcGFnZSA8L3NlY3VyaXR5PmAuCisKK0NvZGUKKy0tLS0KKworVGhpcyBwcm9qZWN0J3Mgc291
cmNlIGlzIGF1dG8tZm9ybWF0dGVkIHdpdGggfGJsYWNrfC4gWW91IGNhbiBjaGVjayBpZiB5b3Vy
Citjb2RlIG1lZXRzIG91ciByZXF1aXJlbWVudHMgYnkgcnVubmluZyBvdXIgbGludGVycyBhZ2Fp
bnN0IGl0IHdpdGggYGBub3ggLXMKK2xpbnRgYCBvciBgYHByZS1jb21taXQgcnVuIC0tYWxsLWZp
bGVzYGAuCisKK2BXcml0ZSBjb21tZW50cyBhcyBjb21wbGV0ZSBzZW50ZW5jZXMuYF8KKworRXZl
cnkgY29kZSBmaWxlIG11c3Qgc3RhcnQgd2l0aCB0aGUgYm9pbGVycGxhdGUgbGljZW5zaW5nIG5v
dGljZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBUaGlzIGZpbGUgaXMgZHVh
bCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
CisgICAgIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQorICAgICMgZm9yIGNvbXBsZXRlIGRldGFpbHMu
CisKK0FkZGl0aW9uYWxseSwgZXZlcnkgUHl0aG9uIGNvZGUgZmlsZSBtdXN0IGNvbnRhaW4KKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorCisKK1Rlc3RzCistLS0tLQor
CitBbGwgY29kZSBjaGFuZ2VzIG11c3QgYmUgYWNjb21wYW5pZWQgYnkgdW5pdCB0ZXN0cyB3aXRo
IDEwMCUgY29kZSBjb3ZlcmFnZSAoYXMKK21lYXN1cmVkIGJ5IHRoZSBjb21iaW5lZCBtZXRyaWNz
IGFjcm9zcyBvdXIgYnVpbGQgbWF0cml4KS4KKworCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0t
LS0tCisKK0FsbCBmZWF0dXJlcyBzaG91bGQgYmUgZG9jdW1lbnRlZCB3aXRoIHByb3NlIGluIHRo
ZSBgYGRvY3NgYCBzZWN0aW9uLgorCitXaGVuIHJlZmVycmluZyB0byBhIGh5cG90aGV0aWNhbCBp
bmRpdmlkdWFsIChzdWNoIGFzICJhIHBlcnNvbiByZWNlaXZpbmcgYW4KK2VuY3J5cHRlZCBtZXNz
YWdlIikgdXNlIGdlbmRlciBuZXV0cmFsIHByb25vdW5zICh0aGV5L3RoZW0vdGhlaXIpLgorCitE
b2NzdHJpbmdzIGFyZSB0eXBpY2FsbHkgb25seSB1c2VkIHdoZW4gd3JpdGluZyBhYnN0cmFjdCBj
bGFzc2VzLCBidXQgc2hvdWxkCitiZSB3cml0dGVuIGxpa2UgdGhpcyBpZiByZXF1aXJlZDoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIHNvbWVfZnVuY3Rpb24oc29tZV9hcmcp
OgorICAgICAgICAiIiIKKyAgICAgICAgRG9lcyBzb21lIHRoaW5ncy4KKworICAgICAgICA6cGFy
YW0gc29tZV9hcmc6IFNvbWUgYXJndW1lbnQuCisgICAgICAgICIiIgorCitTbywgc3BlY2lmaWNh
bGx5OgorCisqIEFsd2F5cyB1c2UgdGhyZWUgZG91YmxlIHF1b3Rlcy4KKyogUHV0IHRoZSB0aHJl
ZSBkb3VibGUgcXVvdGVzIG9uIHRoZWlyIG93biBsaW5lLgorKiBObyBibGFuayBsaW5lIGF0IHRo
ZSBlbmQuCisqIFVzZSBTcGhpbnggcGFyYW1ldGVyL2F0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGBz
eW50YXhgXy4KKworCisuLiB8YmxhY2t8IHJlcGxhY2U6OiBgYGJsYWNrYGAKKy4uIF9ibGFjazog
aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2JsYWNrLworLi4gX2BXcml0ZSBjb21tZW50cyBhcyBj
b21wbGV0ZSBzZW50ZW5jZXMuYDogaHR0cHM6Ly9uZWRiYXRjaGVsZGVyLmNvbS9ibG9nLzIwMTQw
MS9jb21tZW50c19zaG91bGRfYmVfc2VudGVuY2VzLmh0bWwKKy4uIF9gc3ludGF4YDogaHR0cDov
L3NwaGlueC1kb2Mub3JnL2RvbWFpbnMuaHRtbCNpbmZvLWZpZWxkLWxpc3RzCisuLiBfYFN0dWRp
ZXMgaGF2ZSBzaG93bmA6IGh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9yYXRpb25h
bC9saWJyYXJ5LzExLXByb3Zlbi1wcmFjdGljZXMtZm9yLXBlZXItcmV2aWV3LwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2lu
ZGV4LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFhZmRhZTgz
YzQ2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvaW5kZXgucnN0CkBA
IC0wLDAgKzEsMzggQEAKK1dlbGNvbWUgdG8gcGFja2FnaW5nCis9PT09PT09PT09PT09PT09PT09
PQorCisuLiBpbmNsdWRlOjogLi4vUkVBRE1FLnJzdAorICAgOnN0YXJ0LWFmdGVyOiBzdGFydC1p
bnRybworICAgOmVuZC1iZWZvcmU6IGVuZC1pbnRybworCisKK0luc3RhbGxhdGlvbgorLS0tLS0t
LS0tLS0tCisKK1lvdSBjYW4gaW5zdGFsbCBwYWNrYWdpbmcgd2l0aCBgYHBpcGBgOgorCisuLiBj
b2RlLWJsb2NrOjogY29uc29sZQorCisgICAgJCBwaXAgaW5zdGFsbCBwYWNrYWdpbmcKKworCisu
LiB0b2N0cmVlOjoKKyAgICA6bWF4ZGVwdGg6IDEKKyAgICA6Y2FwdGlvbjogQVBJIERvY3VtZW50
YXRpb24KKyAgICA6aGlkZGVuOgorCisgICAgdmVyc2lvbgorICAgIHNwZWNpZmllcnMKKyAgICBt
YXJrZXJzCisgICAgcmVxdWlyZW1lbnRzCisgICAgdGFncworICAgIHV0aWxzCisKKy4uIHRvY3Ry
ZWU6OgorICAgIDptYXhkZXB0aDogMgorICAgIDpjYXB0aW9uOiBQcm9qZWN0CisgICAgOmhpZGRl
bjoKKworICAgIGRldmVsb3BtZW50L2luZGV4CisgICAgc2VjdXJpdHkKKyAgICBjaGFuZ2Vsb2cK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvbWFya2Vycy5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy9kb2NzL21hcmtlcnMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYWQyNTM2MTY0NzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9j
cy9tYXJrZXJzLnJzdApAQCAtMCwwICsxLDkzIEBACitNYXJrZXJzCis9PT09PT09CisKKy4uIGN1
cnJlbnRtb2R1bGU6OiBwYWNrYWdpbmcubWFya2VycworCitPbmUgZXh0cmEgcmVxdWlyZW1lbnQg
b2YgZGVhbGluZyB3aXRoIGRlcGVuZGVuY2llcyBpcyB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5Citp
ZiBpdCBpcyByZXF1aXJlZCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW0gb3IgUHl0
aG9uIHZlcnNpb24gaW4gdXNlLgorYFBFUCA1MDhgXyBkZWZpbmVzIHRoZSBzY2hlbWUgd2hpY2gg
aGFzIGJlZW4gaW1wbGVtZW50ZWQgYnkgdGhpcyBtb2R1bGUuCisKK1VzYWdlCistLS0tLQorCisu
LiBkb2N0ZXN0OjoKKworICAgID4+PiBmcm9tIHBhY2thZ2luZy5tYXJrZXJzIGltcG9ydCBNYXJr
ZXIsIFVuZGVmaW5lZEVudmlyb25tZW50TmFtZQorICAgID4+PiBtYXJrZXIgPSBNYXJrZXIoInB5
dGhvbl92ZXJzaW9uPicyJyIpCisgICAgPj4+IG1hcmtlcgorICAgIDxNYXJrZXIoJ3B5dGhvbl92
ZXJzaW9uID4gIjIiJyk+CisgICAgPj4+ICMgV2UgY2FuIGV2YWx1YXRlIHRoZSBtYXJrZXIgdG8g
c2VlIGlmIGl0IGlzIHNhdGlzZmllZAorICAgID4+PiBtYXJrZXIuZXZhbHVhdGUoKQorICAgIFRy
dWUKKyAgICA+Pj4gIyBXZSBjYW4gYWxzbyBvdmVycmlkZSB0aGUgZW52aXJvbm1lbnQKKyAgICA+
Pj4gZW52ID0geydweXRob25fdmVyc2lvbic6ICcxLjUuNCd9CisgICAgPj4+IG1hcmtlci5ldmFs
dWF0ZShlbnZpcm9ubWVudD1lbnYpCisgICAgRmFsc2UKKyAgICA+Pj4gIyBNdWx0aXBsZSBtYXJr
ZXJzIGNhbiBiZSBBTkRlZAorICAgID4+PiBhbmRfbWFya2VyID0gTWFya2VyKCJvc19uYW1lPT0n
YScgYW5kIG9zX25hbWU9PSdiJyIpCisgICAgPj4+IGFuZF9tYXJrZXIKKyAgICA8TWFya2VyKCdv
c19uYW1lID09ICJhIiBhbmQgb3NfbmFtZSA9PSAiYiInKT4KKyAgICA+Pj4gIyBNdWx0aXBsZSBt
YXJrZXJzIGNhbiBiZSBPUmVkCisgICAgPj4+IG9yX21hcmtlciA9IE1hcmtlcigib3NfbmFtZT09
J2EnIG9yIG9zX25hbWU9PSdiJyIpCisgICAgPj4+IG9yX21hcmtlcgorICAgIDxNYXJrZXIoJ29z
X25hbWUgPT0gImEiIG9yIG9zX25hbWUgPT0gImIiJyk+CisgICAgPj4+ICMgTWFya2VycyBjYW4g
YmUgYWxzbyB1c2VkIHdpdGggZXh0cmFzLCB0byBwdWxsIGluIGRlcGVuZGVuY2llcyBpZgorICAg
ID4+PiAjIGEgY2VydGFpbiBleHRyYSBpcyBiZWluZyBpbnN0YWxsZWQKKyAgICA+Pj4gZXh0cmEg
PSBNYXJrZXIoJ2V4dHJhID09ICJiYXIiJykKKyAgICA+Pj4gIyBFdmFsdWF0aW5nIGFuIGV4dHJh
IG1hcmtlciB3aXRoIG5vIGVudmlyb25tZW50IGlzIGFuIGVycm9yCisgICAgPj4+IHRyeToKKyAg
ICAuLi4gICAgIGV4dHJhLmV2YWx1YXRlKCkKKyAgICAuLi4gZXhjZXB0IFVuZGVmaW5lZEVudmly
b25tZW50TmFtZToKKyAgICAuLi4gICAgIHBhc3MKKyAgICA+Pj4gZXh0cmFfZW52aXJvbm1lbnQg
PSB7J2V4dHJhJzogJyd9CisgICAgPj4+IGV4dHJhLmV2YWx1YXRlKGVudmlyb25tZW50PWV4dHJh
X2Vudmlyb25tZW50KQorICAgIEZhbHNlCisgICAgPj4+IGV4dHJhX2Vudmlyb25tZW50WydleHRy
YSddID0gJ2JhcicKKyAgICA+Pj4gZXh0cmEuZXZhbHVhdGUoZW52aXJvbm1lbnQ9ZXh0cmFfZW52
aXJvbm1lbnQpCisgICAgVHJ1ZQorCisKK1JlZmVyZW5jZQorLS0tLS0tLS0tCisKKy4uIGNsYXNz
OjogTWFya2VyKG1hcmtlcnMpCisKKyAgICBUaGlzIGNsYXNzIGFic3RyYWN0cyBoYW5kbGluZyBt
YXJrZXJzIGZvciBkZXBlbmRlbmNpZXMgb2YgYSBwcm9qZWN0LiBJdCBjYW4KKyAgICBiZSBwYXNz
ZWQgYSBzaW5nbGUgbWFya2VyIG9yIG11bHRpcGxlIG1hcmtlcnMgdGhhdCBhcmUgQU5EZWQgb3Ig
T1JlZAorICAgIHRvZ2V0aGVyLiBFYWNoIG1hcmtlciB3aWxsIGJlIHBhcnNlZCBhY2NvcmRpbmcg
dG8gUEVQIDUwOC4KKworICAgIDpwYXJhbSBzdHIgbWFya2VyczogVGhlIHN0cmluZyByZXByZXNl
bnRhdGlvbiBvZiBhIG1hcmtlciBvciBtYXJrZXJzLgorICAgIDpyYWlzZXMgSW52YWxpZE1hcmtl
cjogSWYgdGhlIGdpdmVuIGBgbWFya2Vyc2BgIGFyZSBub3QgcGFyc2VhYmxlLCB0aGVuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4KKwor
ICAgIC4uIG1ldGhvZDo6IGV2YWx1YXRlKGVudmlyb25tZW50PU5vbmUpCisKKyAgICBFdmFsdWF0
ZSB0aGUgbWFya2VyIGdpdmVuIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IFB5dGhvbiBwcm9j
ZXNzLgorCisgICAgOnBhcmFtIGRpY3QgZW52aXJvbm1lbnQ6IEEgZGljdGlvbmFyeSBjb250YWlu
aW5nIGtleXMgYW5kIHZhbHVlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVy
cmlkZSB0aGUgZGV0ZWN0ZWQgZW52aXJvbm1lbnQuCisgICAgOnJhaXNlczogVW5kZWZpbmVkQ29t
cGFyaXNvbjogSWYgdGhlIG1hcmtlciB1c2VzIGEgUEVQIDQ0MCBjb21wYXJpc29uIG9uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5ncyB3aGljaCBhcmUgbm90IHZhbGlk
IFBFUCA0NDAgdmVyc2lvbnMuCisgICAgOnJhaXNlczogVW5kZWZpbmVkRW52aXJvbm1lbnROYW1l
OiBJZiB0aGUgbWFya2VyIGFjY2Vzc2VzIGEgdmFsdWUgdGhhdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNuJ3QgcHJlc2VudCBpbnNpZGUgb2YgdGhlIGVudmlyb25t
ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5Lgor
CisuLiBleGNlcHRpb246OiBJbnZhbGlkTWFya2VyCisKKyAgICBSYWlzZWQgd2hlbiBhdHRlbXB0
aW5nIHRvIGNyZWF0ZSBhIDpjbGFzczpgTWFya2VyYCB3aXRoIGEgc3RyaW5nIHRoYXQKKyAgICBk
b2VzIG5vdCBjb25mb3JtIHRvIFBFUCA1MDguCisKKworLi4gZXhjZXB0aW9uOjogVW5kZWZpbmVk
Q29tcGFyaXNvbgorCisgICAgUmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBldmFsdWF0ZSBhIDpj
bGFzczpgTWFya2VyYCB3aXRoIGEgUEVQIDQ0MAorICAgIGNvbXBhcmlzb24gb3BlcmF0b3IgYWdh
aW5zdCB2YWx1ZXMgdGhhdCBhcmUgbm90IHZhbGlkIFBFUCA0NDAgdmVyc2lvbnMuCisKKworLi4g
ZXhjZXB0aW9uOjogVW5kZWZpbmVkRW52aXJvbm1lbnROYW1lCisKKyAgICBSYWlzZWQgd2hlbiBh
dHRlbXB0aW5nIHRvIGV2YWx1YXRlIGEgOmNsYXNzOmBNYXJrZXJgIHdpdGggYSB2YWx1ZSB0aGF0
IGlzCisgICAgbWlzc2luZyBmcm9tIHRoZSBldmFsdWF0aW9uIGVudmlyb25tZW50LgorCisKKy4u
IF9gUEVQIDUwOGA6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1MDgvCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3JlcXVpcmVtZW50cy5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9kb2NzL3JlcXVpcmVtZW50cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lN2M1YTg1YTVlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy9kb2NzL3JlcXVpcmVtZW50cy5yc3QKQEAgLTAsMCArMSw4OSBAQAorUmVxdWlyZW1lbnRz
Cis9PT09PT09PT09PT0KKworLi4gY3VycmVudG1vZHVsZTo6IHBhY2thZ2luZy5yZXF1aXJlbWVu
dHMKKworUGFyc2UgYSBnaXZlbiByZXF1aXJlbWVudHMgbGluZSBmb3Igc3BlY2lmeWluZyBkZXBl
bmRlbmNpZXMgb2YgYSBQeXRob24KK3Byb2plY3QsIHVzaW5nIGBQRVAgNTA4YF8gd2hpY2ggZGVm
aW5lcyB0aGUgc2NoZW1lIHRoYXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQKK2J5IHRoaXMgbW9kdWxl
LgorCitVc2FnZQorLS0tLS0KKworLi4gZG9jdGVzdDo6CisKKyAgICA+Pj4gZnJvbSBwYWNrYWdp
bmcucmVxdWlyZW1lbnRzIGltcG9ydCBSZXF1aXJlbWVudAorICAgID4+PiBzaW1wbGVfcmVxID0g
UmVxdWlyZW1lbnQoIm5hbWUiKQorICAgID4+PiBzaW1wbGVfcmVxCisgICAgPFJlcXVpcmVtZW50
KCduYW1lJyk+CisgICAgPj4+IHNpbXBsZV9yZXEubmFtZQorICAgICduYW1lJworICAgID4+PiBz
aW1wbGVfcmVxLnVybCBpcyBOb25lCisgICAgVHJ1ZQorICAgID4+PiBzaW1wbGVfcmVxLmV4dHJh
cworICAgIHNldCgpCisgICAgPj4+IHNpbXBsZV9yZXEuc3BlY2lmaWVyCisgICAgPFNwZWNpZmll
clNldCgnJyk+CisgICAgPj4+IHNpbXBsZV9yZXEubWFya2VyIGlzIE5vbmUKKyAgICBUcnVlCisg
ICAgPj4+ICMgUmVxdWlyZW1lbnRzIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCBleHRyYXMsIHNwZWNp
ZmllcnMgYW5kIG1hcmtlcnMKKyAgICA+Pj4gcmVxID0gUmVxdWlyZW1lbnQoJ25hbWVbZm9vXT49
Miw8MzsgcHl0aG9uX3ZlcnNpb24+IjIuMCInKQorICAgID4+PiByZXEubmFtZQorICAgICduYW1l
JworICAgID4+PiByZXEuZXh0cmFzCisgICAgeydmb28nfQorICAgID4+PiByZXEuc3BlY2lmaWVy
CisgICAgPFNwZWNpZmllclNldCgnPDMsPj0yJyk+CisgICAgPj4+IHJlcS5tYXJrZXIKKyAgICA8
TWFya2VyKCdweXRob25fdmVyc2lvbiA+ICIyLjAiJyk+CisgICAgPj4+ICMgUmVxdWlyZW1lbnRz
IGNhbiBhbHNvIGJlIHNwZWNpZmllZCB3aXRoIGEgVVJMLCBidXQgbWF5IG5vdCBzcGVjaWZ5Cisg
ICAgPj4+ICMgYSB2ZXJzaW9uLgorICAgID4+PiB1cmxfcmVxID0gUmVxdWlyZW1lbnQoJ25hbWUg
QCBodHRwczovL2dpdGh1Yi5jb20vcHlwYSA7b3NfbmFtZT09ImEiJykKKyAgICA+Pj4gdXJsX3Jl
cS5uYW1lCisgICAgJ25hbWUnCisgICAgPj4+IHVybF9yZXEudXJsCisgICAgJ2h0dHBzOi8vZ2l0
aHViLmNvbS9weXBhJworICAgID4+PiB1cmxfcmVxLmV4dHJhcworICAgIHNldCgpCisgICAgPj4+
IHVybF9yZXEubWFya2VyCisgICAgPE1hcmtlcignb3NfbmFtZSA9PSAiYSInKT4KKworCitSZWZl
cmVuY2UKKy0tLS0tLS0tLQorCisuLiBjbGFzczo6IFJlcXVpcmVtZW50KHJlcXVpcmVtZW50KQor
CisgICAgVGhpcyBjbGFzcyBhYnN0cmFjdHMgaGFuZGxpbmcgdGhlIGRldGFpbHMgb2YgYSByZXF1
aXJlbWVudCBmb3IgYSBwcm9qZWN0LgorICAgIEVhY2ggcmVxdWlyZW1lbnQgd2lsbCBiZSBwYXJz
ZWQgYWNjb3JkaW5nIHRvIFBFUCA1MDguCisKKyAgICA6cGFyYW0gc3RyIHJlcXVpcmVtZW50OiBU
aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVxdWlyZW1lbnQuCisgICAgOnJhaXNlcyBJ
bnZhbGlkUmVxdWlyZW1lbnQ6IElmIHRoZSBnaXZlbiBgYHJlcXVpcmVtZW50YGAgaXMgbm90IHBh
cnNlYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiB0aGlzIGV4Y2Vw
dGlvbiB3aWxsIGJlIHJhaXNlZC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAg
IFRoZSBuYW1lIG9mIHRoZSByZXF1aXJlbWVudC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHVybAor
CisgICAgICBUaGUgVVJMLCBpZiBhbnkgd2hlcmUgdG8gZG93bmxvYWQgdGhlIHJlcXVpcmVtZW50
IGZyb20uIENhbiBiZSBOb25lLgorCisgICAgLi4gYXR0cmlidXRlOjogZXh0cmFzCisKKyAgICAg
IEEgc2V0IG9mIGV4dHJhcyB0aGF0IHRoZSByZXF1aXJlbWVudCBzcGVjaWZpZXMuCisKKyAgICAu
LiBhdHRyaWJ1dGU6OiBzcGVjaWZpZXIKKworICAgICAgQSA6Y2xhc3M6YH4uU3BlY2lmaWVyU2V0
YCBvZiB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIHJlcXVpcmVtZW50LgorCisgICAgLi4g
YXR0cmlidXRlOjogbWFya2VyCisKKyAgICAgIEEgOmNsYXNzOmB+Lk1hcmtlcmAgb2YgdGhlIG1h
cmtlciBmb3IgdGhlIHJlcXVpcmVtZW50LiBDYW4gYmUgTm9uZS4KKworLi4gZXhjZXB0aW9uOjog
SW52YWxpZFJlcXVpcmVtZW50CisKKyAgICBSYWlzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGNyZWF0
ZSBhIDpjbGFzczpgUmVxdWlyZW1lbnRgIHdpdGggYSBzdHJpbmcgdGhhdAorICAgIGRvZXMgbm90
IGNvbmZvcm0gdG8gUEVQIDUwOC4KKworLi4gX2BQRVAgNTA4YDogaHR0cHM6Ly93d3cucHl0aG9u
Lm9yZy9kZXYvcGVwcy9wZXAtMDUwOC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3Mv
cmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvcmVxdWlyZW1lbnRzLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE5NWFlMThiNGY5ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvcmVxdWlyZW1lbnRzLnR4dApAQCAt
MCwwICsxIEBACitmdXJvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3NlY3VyaXR5
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3Mvc2VjdXJpdHkucnN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjdmZGIwMDAyOWVlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvZG9jcy9zZWN1cml0eS5yc3QKQEAgLTAsMCArMSwxOCBAQAorU2VjdXJp
dHkKKz09PT09PT09CisKK1dlIHRha2UgdGhlIHNlY3VyaXR5IG9mIHBhY2thZ2luZyBzZXJpb3Vz
bHkuIElmIHlvdSBiZWxpZXZlIHlvdSd2ZSBpZGVudGlmaWVkIGEKK3NlY3VyaXR5IGlzc3VlIGlu
IGl0LCBETyBOT1QgcmVwb3J0IHRoZSBpc3N1ZSBpbiBhbnkgcHVibGljIGZvcnVtLCBpbmNsdWRp
bmcKKyhidXQgbm90IGxpbWl0ZWQgdG8pOgorCistIEdpdEh1YiBpc3N1ZSB0cmFja2VyCistIE9m
ZmljaWFsIG9yIHVub2ZmaWNpYWwgY2hhdCBjaGFubmVscworLSBPZmZpY2lhbCBvciB1bm9mZmlj
aWFsIG1haWxpbmcgbGlzdHMKKworUGxlYXNlIHJlcG9ydCB5b3VyIGlzc3VlIHRvIGBgc2VjdXJp
dHlAcHl0aG9uLm9yZ2BgLiBNZXNzYWdlcyBtYXkgYmUgb3B0aW9uYWxseQorZW5jcnlwdGVkIHdp
dGggR1BHIHVzaW5nIGtleSBmaW5nZXJwcmludHMgYXZhaWxhYmxlIGF0IHRoZSBgUHl0aG9uIFNl
Y3VyaXR5CitwYWdlIDxodHRwczovL3d3dy5weXRob24ub3JnL25ld3Mvc2VjdXJpdHkvPmBfLgor
CitPbmNlIHlvdSd2ZSBzdWJtaXR0ZWQgYW4gaXNzdWUgdmlhIGVtYWlsLCB5b3Ugc2hvdWxkIHJl
Y2VpdmUgYW4gYWNrbm93bGVkZ21lbnQKK3dpdGhpbiA0OCBob3VycywgYW5kIGRlcGVuZGluZyBv
biB0aGUgYWN0aW9uIHRvIGJlIHRha2VuLCB5b3UgbWF5IHJlY2VpdmUKK2Z1cnRoZXIgZm9sbG93
LXVwIGVtYWlscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3Mvc3BlY2lmaWVycy5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3NwZWNpZmllcnMucnN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTFlNDU4Yjg3ODlhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvZG9jcy9zcGVjaWZpZXJzLnJzdApAQCAtMCwwICsxLDIyMiBAQAorU3Bl
Y2lmaWVycworPT09PT09PT09PQorCisuLiBjdXJyZW50bW9kdWxlOjogcGFja2FnaW5nLnNwZWNp
ZmllcnMKKworQSBjb3JlIHJlcXVpcmVtZW50IG9mIGRlYWxpbmcgd2l0aCBkZXBlbmRlbmNpZXMg
aXMgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSB3aGF0Cit2ZXJzaW9ucyBvZiBhIGRlcGVuZGVuY3kg
YXJlIGFjY2VwdGFibGUgZm9yIHlvdS4gYFBFUCA0NDBgXyBkZWZpbmVzIHRoZQorc3RhbmRhcmQg
c3BlY2lmaWVyIHNjaGVtZSB3aGljaCBoYXMgYmVlbiBpbXBsZW1lbnRlZCBieSB0aGlzIG1vZHVs
ZS4KKworVXNhZ2UKKy0tLS0tCisKKy4uIGRvY3Rlc3Q6OgorCisgICAgPj4+IGZyb20gcGFja2Fn
aW5nLnNwZWNpZmllcnMgaW1wb3J0IFNwZWNpZmllclNldAorICAgID4+PiBmcm9tIHBhY2thZ2lu
Zy52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCisgICAgPj4+IHNwZWMxID0gU3BlY2lmaWVyU2V0KCJ+
PTEuMCIpCisgICAgPj4+IHNwZWMxCisgICAgPFNwZWNpZmllclNldCgnfj0xLjAnKT4KKyAgICA+
Pj4gc3BlYzIgPSBTcGVjaWZpZXJTZXQoIj49MS4wIikKKyAgICA+Pj4gc3BlYzIKKyAgICA8U3Bl
Y2lmaWVyU2V0KCc+PTEuMCcpPgorICAgID4+PiAjIFdlIGNhbiBjb21iaW5lIHNwZWNpZmllcnMK
KyAgICA+Pj4gY29tYmluZWRfc3BlYyA9IHNwZWMxICYgc3BlYzIKKyAgICA+Pj4gY29tYmluZWRf
c3BlYworICAgIDxTcGVjaWZpZXJTZXQoJz49MS4wLH49MS4wJyk+CisgICAgPj4+ICMgV2UgY2Fu
IGFsc28gaW1wbGljaXRseSBjb21iaW5lIGEgc3RyaW5nIHNwZWNpZmllcgorICAgID4+PiBjb21i
aW5lZF9zcGVjICY9ICIhPTEuMSIKKyAgICA+Pj4gY29tYmluZWRfc3BlYworICAgIDxTcGVjaWZp
ZXJTZXQoJyE9MS4xLD49MS4wLH49MS4wJyk+CisgICAgPj4+ICMgQ3JlYXRlIGEgZmV3IHZlcnNp
b25zIHRvIGNoZWNrIGZvciBjb250YWlucy4KKyAgICA+Pj4gdjEgPSBWZXJzaW9uKCIxLjBhNSIp
CisgICAgPj4+IHYyID0gVmVyc2lvbigiMS4wIikKKyAgICA+Pj4gIyBXZSBjYW4gY2hlY2sgYSB2
ZXJzaW9uIG9iamVjdCB0byBzZWUgaWYgaXQgZmFsbHMgd2l0aGluIGEgc3BlY2lmaWVyCisgICAg
Pj4+IHYxIGluIGNvbWJpbmVkX3NwZWMKKyAgICBGYWxzZQorICAgID4+PiB2MiBpbiBjb21iaW5l
ZF9zcGVjCisgICAgVHJ1ZQorICAgID4+PiAjIFdlIGNhbiBldmVuIGRvIHRoZSBzYW1lIHdpdGgg
YSBzdHJpbmcgYmFzZWQgdmVyc2lvbgorICAgID4+PiAiMS40IiBpbiBjb21iaW5lZF9zcGVjCisg
ICAgVHJ1ZQorICAgID4+PiAjIEZpbmFsbHkgd2UgY2FuIGZpbHRlciBhIGxpc3Qgb2YgdmVyc2lv
bnMgdG8gZ2V0IG9ubHkgdGhvc2Ugd2hpY2ggYXJlCisgICAgPj4+ICMgY29udGFpbmVkIHdpdGhp
biBvdXIgc3BlY2lmaWVyLgorICAgID4+PiBsaXN0KGNvbWJpbmVkX3NwZWMuZmlsdGVyKFt2MSwg
djIsICIxLjQiXSkpCisgICAgWzxWZXJzaW9uKCcxLjAnKT4sICcxLjQnXQorCisKK1JlZmVyZW5j
ZQorLS0tLS0tLS0tCisKKy4uIGNsYXNzOjogU3BlY2lmaWVyU2V0KHNwZWNpZmllcnMsIHByZXJl
bGVhc2VzPU5vbmUpCisKKyAgICBUaGlzIGNsYXNzIGFic3RyYWN0cyBoYW5kbGluZyBzcGVjaWZ5
aW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYSBwcm9qZWN0LiBJdAorICAgIGNhbiBiZSBwYXNzZWQg
YSBzaW5nbGUgc3BlY2lmaWVyIChgYD49My4wYGApLCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
CisgICAgc3BlY2lmaWVycyAoYGA+PTMuMCwhPTMuMWBgKSwgb3Igbm8gc3BlY2lmaWVyIGF0IGFs
bC4gRWFjaCBpbmRpdmlkdWFsCisgICAgc3BlY2lmaWVyIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJl
IHBhcnNlZCBhcyBhIFBFUCA0NDAgc3BlY2lmaWVyCisgICAgKDpjbGFzczpgU3BlY2lmaWVyYCkg
b3IgYXMgYSBsZWdhY3ksIHNldHVwdG9vbHMgc3R5bGUgc3BlY2lmaWVyCisgICAgKGRlcHJlY2F0
ZWQgOmNsYXNzOmBMZWdhY3lTcGVjaWZpZXJgKS4gWW91IG1heSBjb21iaW5lCisgICAgOmNsYXNz
OmBTcGVjaWZpZXJTZXRgIGluc3RhbmNlcyB1c2luZyB0aGUgYGAmYGAgb3BlcmF0b3IKKyAgICAo
YGBTcGVjaWZpZXJTZXQoIj4yIikgJiBTcGVjaWZpZXJTZXQoIjw0IilgYCkuCisKKyAgICBCb3Ro
IHRoZSBtZW1iZXJzaGlwIHRlc3RzIGFuZCB0aGUgY29tYmluYXRpb24gc3VwcG9ydCB1c2luZyBy
YXcgc3RyaW5ncworICAgIGluIHBsYWNlIG9mIGFscmVhZHkgaW5zdGFudGlhdGVkIG9iamVjdHMu
CisKKyAgICA6cGFyYW0gc3RyIHNwZWNpZmllcnM6IFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgYSBzcGVjaWZpZXIgb3IgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWEtc2Vw
YXJhdGVkIGxpc3Qgb2Ygc3BlY2lmaWVycyB3aGljaCB3aWxsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiZSBwYXJzZWQgYW5kIG5vcm1hbGl6ZWQgYmVmb3JlIHVzZS4KKyAgICA6cGFyYW0g
Ym9vbCBwcmVyZWxlYXNlczogVGhpcyB0ZWxscyB0aGUgU3BlY2lmaWVyU2V0IGlmIGl0IHNob3Vs
ZCBhY2NlcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlcmVsZWFzZSB2ZXJzaW9u
cyBpZiBhcHBsaWNhYmxlIG9yIG5vdC4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQgb2YgYGBOb25lYGAgd2lsbCBhdXRvZGV0ZWN0IGl0IGZyb20gdGhlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIHNwZWNpZmllcnMuCisgICAgOnJhaXNlcyBJbnZh
bGlkU3BlY2lmaWVyOiBJZiB0aGUgZ2l2ZW4gYGBzcGVjaWZpZXJzYGAgYXJlIG5vdCBwYXJzZWFi
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gdGhpcyBleGNlcHRpb24gd2ls
bCBiZSByYWlzZWQuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBwcmVyZWxlYXNlcworCisgICAgICAg
IEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyA6Y2xhc3M6YFNwZWNpZmll
clNldGAKKyAgICAgICAgcmVwcmVzZW50cyBhIHNwZWNpZmllciB0aGF0IGluY2x1ZGVzIGEgcHJl
LXJlbGVhc2UgdmVyc2lvbnMuIFRoaXMgY2FuIGJlCisgICAgICAgIHNldCB0byBlaXRoZXIgYGBU
cnVlYGAgb3IgYGBGYWxzZWBgIHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUKKyAgICAg
ICAgcHJlcmVsZWFzZXMgb3IgaXQgY2FuIGJlIHNldCB0byBgYE5vbmVgYCAodGhlIGRlZmF1bHQp
IHRvIGVuYWJsZQorICAgICAgICBhdXRvZGV0ZWN0aW9uLgorCisgICAgLi4gbWV0aG9kOjogX19j
b250YWluc19fKHZlcnNpb24pCisKKyAgICAgICAgVGhpcyBpcyB0aGUgbW9yZSBQeXRob25pYyB2
ZXJzaW9uIG9mIDptZXRoOmBjb250YWlucygpYCwgYnV0IGRvZXMKKyAgICAgICAgbm90IGFsbG93
IHlvdSB0byBvdmVycmlkZSB0aGUgYGBwcmVyZWxlYXNlc2BgIGFyZ3VtZW50LiAgSWYgeW91Cisg
ICAgICAgIG5lZWQgdGhhdCwgdXNlIDptZXRoOmBjb250YWlucygpYC4KKworICAgICAgICBTZWUg
Om1ldGg6YGNvbnRhaW5zKClgLgorCisgICAgLi4gbWV0aG9kOjogY29udGFpbnModmVyc2lvbiwg
cHJlcmVsZWFzZXM9Tm9uZSkKKworICAgICAgICBEZXRlcm1pbmVzIGlmIGBgdmVyc2lvbmBgLCB3
aGljaCBjYW4gYmUgZWl0aGVyIGEgdmVyc2lvbiBzdHJpbmcsIGEKKyAgICAgICAgOmNsYXNzOmBW
ZXJzaW9uYCwgb3IgYSBkZXByZWNhdGVkIDpjbGFzczpgTGVnYWN5VmVyc2lvbmAgb2JqZWN0LCBp
cworICAgICAgICBjb250YWluZWQgd2l0aGluIHRoaXMgc2V0IG9mIHNwZWNpZmllcnMuCisKKyAg
ICAgICAgVGhpcyB3aWxsIGVpdGhlciBtYXRjaCBvciBub3QgbWF0Y2ggcHJlcmVsZWFzZXMgYmFz
ZWQgb24gdGhlCisgICAgICAgIGBgcHJlcmVsZWFzZXNgYCBwYXJhbWV0ZXIuIFdoZW4gYGBwcmVy
ZWxlYXNlc2BgIGlzIHNldCB0byBgYE5vbmVgYAorICAgICAgICAodGhlIGRlZmF1bHQpIGl0IHdp
bGwgdXNlIHRoZSBgYFNwZWNpZmllcigpLnByZXJlbGVhc2VzYGAgYXR0cmlidXRlIHRvCisgICAg
ICAgIGRldGVybWluZSBpZiB0byBhbGxvdyB0aGVtLiBPdGhlcndpc2UgaXQgd2lsbCB1c2UgdGhl
IGJvb2xlYW4gdmFsdWUgb2YKKyAgICAgICAgdGhlIHBhc3NlZCBpbiB2YWx1ZSB0byBkZXRlcm1p
bmUgaWYgdG8gYWxsb3cgdGhlbSBvciBub3QuCisKKyAgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkK
KworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVycyBpbiB0aGlzIHNwZWNp
ZmllciBzZXQuCisKKyAgICAuLiBtZXRob2Q6OiBfX2l0ZXJfXygpCisKKyAgICAgICAgUmV0dXJu
cyBhbiBpdGVyYXRvciBvdmVyIGFsbCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFNwZWNpZmllcmAg
KG9yCisgICAgICAgIGRlcHJlY2F0ZWQgOmNsYXNzOmBMZWdhY3lTcGVjaWZpZXJgKSBpbnN0YW5j
ZXMgaW4gdGhpcyBzcGVjaWZpZXIgc2V0LgorCisgICAgLi4gbWV0aG9kOjogZmlsdGVyKGl0ZXJh
YmxlLCBwcmVyZWxlYXNlcz1Ob25lKQorCisgICAgICAgIFRha2VzIGFuIGl0ZXJhYmxlIHRoYXQg
Y2FuIGNvbnRhaW4gdmVyc2lvbiBzdHJpbmdzLCA6Y2xhc3M6YH4uVmVyc2lvbmAsCisgICAgICAg
IGFuZCBkZXByZWNhdGVkIDpjbGFzczpgfi5MZWdhY3lWZXJzaW9uYCBpbnN0YW5jZXMgYW5kIHdp
bGwgdGhlbiBmaWx0ZXIKKyAgICAgICAgaXQsIHJldHVybmluZyBhbiBpdGVyYWJsZSB0aGF0IGNv
bnRhaW5zIG9ubHkgaXRlbXMgd2hpY2ggbWF0Y2ggdGhlCisgICAgICAgIHJ1bGVzIG9mIHRoaXMg
c3BlY2lmaWVyIG9iamVjdC4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBzbWFydGVyIHRoYW4g
anVzdAorICAgICAgICBgYGZpbHRlcihTcGVjaWZpZXIoKS5jb250YWlucywgWy4uLl0pYGAgYmVj
YXVzZSBpdCBpbXBsZW1lbnRzIHRoZSBydWxlCisgICAgICAgIGZyb20gUEVQIDQ0MCB3aGVyZSBh
IHByZXJlbGVhc2UgaXRlbSBTSE9VTEQgYmUgYWNjZXB0ZWQgaWYgbm8gb3RoZXIKKyAgICAgICAg
dmVyc2lvbnMgbWF0Y2ggdGhlIGdpdmVuIHNwZWNpZmllci4KKworICAgICAgICBUaGUgYGBwcmVy
ZWxlYXNlc2BgIHBhcmFtZXRlciBmdW5jdGlvbnMgc2ltaWxhcmx5IHRvIHRoYXQgb2YgdGhlIHNh
bWUKKyAgICAgICAgcGFyYW1ldGVyIGluIGBgY29udGFpbnNgYC4gSWYgdGhlIHZhbHVlIGlzIGBg
Tm9uZWBgICh0aGUgZGVmYXVsdCkgdGhlbgorICAgICAgICBpdCB3aWxsIGludGVsbGlnZW50bHkg
ZGVjaWRlIGlmIHRvIGFsbG93IHByZXJlbGVhc2VzIGJhc2VkIG9uIHRoZQorICAgICAgICBzcGVj
aWZpZXIsIHRoZSBgYFNwZWNpZmllcigpLnByZXJlbGVhc2VzYGAgdmFsdWUsIGFuZCB0aGUgUEVQ
IDQ0MAorICAgICAgICBydWxlcy4gT3RoZXJ3aXNlIGl0IHdpbGwgYWN0IGFzIGEgYm9vbGVhbiB3
aGljaCB3aWxsIGVuYWJsZSBvciBkaXNhYmxlCisgICAgICAgIGFsbCBwcmVyZWxlYXNlIHZlcnNp
b25zIGZyb20gYmVpbmcgaW5jbHVkZWQuCisKKworLi4gY2xhc3M6OiBTcGVjaWZpZXIoc3BlY2lm
aWVyLCBwcmVyZWxlYXNlcz1Ob25lKQorCisgICAgVGhpcyBjbGFzcyBhYnN0cmFjdHMgdGhlIGhh
bmRsaW5nIG9mIGEgc2luZ2xlIGBQRVAgNDQwYF8gY29tcGF0aWJsZQorICAgIHNwZWNpZmllci4g
SXQgaXMgZ2VuZXJhbGx5IG5vdCByZXF1aXJlZCB0byBpbnN0YW50aWF0ZSB0aGlzIG1hbnVhbGx5
LAorICAgIHByZWZlcnJpbmcgaW5zdGVhZCB0byB3b3JrIHdpdGggOmNsYXNzOmBTcGVjaWZpZXJT
ZXRgLgorCisgICAgOnBhcmFtIHN0ciBzcGVjaWZpZXI6IFRoZSBzdHJpbmcgcmVwcmVzZW50YXRp
b24gb2YgYSBzcGVjaWZpZXIgd2hpY2ggd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICBi
ZSBwYXJzZWQgYW5kIG5vcm1hbGl6ZWQgYmVmb3JlIHVzZS4KKyAgICA6cGFyYW0gYm9vbCBwcmVy
ZWxlYXNlczogVGhpcyB0ZWxscyB0aGUgc3BlY2lmaWVyIGlmIGl0IHNob3VsZCBhY2NlcHQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlcmVsZWFzZSB2ZXJzaW9ucyBpZiBhcHBsaWNh
YmxlIG9yIG5vdC4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgb2Yg
YGBOb25lYGAgd2lsbCBhdXRvZGV0ZWN0IGl0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdpdmVuIHNwZWNpZmllcnMuCisgICAgOnJhaXNlcyBJbnZhbGlkU3BlY2lmaWVy
OiBJZiB0aGUgYGBzcGVjaWZpZXJgYCBkb2VzIG5vdCBjb25mb3JtIHRvIFBFUCA0NDAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIGFueSB3YXkgdGhlbiB0aGlzIGV4Y2VwdGlvbiB3
aWxsIGJlIHJhaXNlZC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG9wZXJhdG9yCisKKyAgICAgICAg
VGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgb3BlcmF0b3IgcGFydCBvZiB0aGlzIHNwZWNpZmllci4K
KworICAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKworICAgICAgICBUaGUgc3RyaW5nIHZlcnNp
b24gb2YgdGhlIHZlcnNpb24gcGFydCBvZiB0aGlzIHNwZWNpZmllci4KKworICAgIC4uIGF0dHJp
YnV0ZTo6IHByZXJlbGVhc2VzCisKKyAgICAgICAgU2VlIDphdHRyOmBTcGVjaWZpZXJTZXQucHJl
cmVsZWFzZXNgLgorCisgICAgLi4gbWV0aG9kOjogX19jb250YWluc19fKHZlcnNpb24pCisKKyAg
ICAgICAgU2VlIDptZXRoOmBTcGVjaWZpZXJTZXQuX19jb250YWluc19fKClgLgorCisgICAgLi4g
bWV0aG9kOjogY29udGFpbnModmVyc2lvbiwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgICAgICBT
ZWUgOm1ldGg6YFNwZWNpZmllclNldC5jb250YWlucygpYC4KKworICAgIC4uIG1ldGhvZDo6IGZp
bHRlcihpdGVyYWJsZSwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgICAgICBTZWUgOm1ldGg6YFNw
ZWNpZmllclNldC5maWx0ZXIoKWAuCisKKworLi4gY2xhc3M6OiBMZWdhY3lTcGVjaWZpZXIoc3Bl
Y2lmaWVyLCBwcmVyZWxlYXNlcz1Ob25lKQorCisgICAgLi4gZGVwcmVjYXRlZDo6IDIwLjUKKwor
ICAgICAgICBVc2UgOmNsYXNzOmBTcGVjaWZpZXJgIGluc3RlYWQuCisKKyAgICBUaGlzIGNsYXNz
IGFic3RyYWN0cyB0aGUgaGFuZGxpbmcgb2YgYSBzaW5nbGUgbGVnYWN5LCBzZXR1cHRvb2xzIHN0
eWxlCisgICAgc3BlY2lmaWVyLiBJdCBpcyBnZW5lcmFsbHkgbm90IHJlcXVpcmVkIHRvIGluc3Rh
bnRpYXRlIHRoaXMgbWFudWFsbHksCisgICAgcHJlZmVycmluZyBpbnN0ZWFkIHRvIHdvcmsgd2l0
aCA6Y2xhc3M6YFNwZWNpZmllclNldGAuCisKKyAgICA6cGFyYW0gc3RyIHNwZWNpZmllcjogVGhl
IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHNwZWNpZmllciB3aGljaCB3aWxsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJlIHBhcnNlZCBhbmQgbm9ybWFsaXplZCBiZWZvcmUgdXNlLgor
ICAgIDpwYXJhbSBib29sIHByZXJlbGVhc2VzOiBUaGlzIHRlbGxzIHRoZSBzcGVjaWZpZXIgaWYg
aXQgc2hvdWxkIGFjY2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVyZWxlYXNl
IHZlcnNpb25zIGlmIGFwcGxpY2FibGUgb3Igbm90LiBUaGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdCBvZiBgYE5vbmVgYCB3aWxsIGF1dG9kZXRlY3QgaXQgZnJvbSB0aGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gc3BlY2lmaWVycy4KKyAgICA6cmFp
c2VzIEludmFsaWRTcGVjaWZpZXI6IElmIHRoZSBgYHNwZWNpZmllcmBgIGlzIG5vdCBwYXJzZWFi
bGUgdGhlbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHJhaXNl
ZC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG9wZXJhdG9yCisKKyAgICAgICAgVGhlIHN0cmluZyB2
YWx1ZSBvZiB0aGUgb3BlcmF0b3IgcGFydCBvZiB0aGlzIHNwZWNpZmllci4KKworICAgIC4uIGF0
dHJpYnV0ZTo6IHZlcnNpb24KKworICAgICAgICBUaGUgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZl
cnNpb24gcGFydCBvZiB0aGlzIHNwZWNpZmllci4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHByZXJl
bGVhc2VzCisKKyAgICAgICAgU2VlIDphdHRyOmBTcGVjaWZpZXJTZXQucHJlcmVsZWFzZXNgLgor
CisgICAgLi4gbWV0aG9kOjogX19jb250YWluc19fKHZlcnNpb24pCisKKyAgICAgICAgU2VlIDpt
ZXRoOmBTcGVjaWZpZXJTZXQuX19jb250YWluc19fKClgLgorCisgICAgLi4gbWV0aG9kOjogY29u
dGFpbnModmVyc2lvbiwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgICAgICBTZWUgOm1ldGg6YFNw
ZWNpZmllclNldC5jb250YWlucygpYC4KKworICAgIC4uIG1ldGhvZDo6IGZpbHRlcihpdGVyYWJs
ZSwgcHJlcmVsZWFzZXM9Tm9uZSkKKworICAgICAgICBTZWUgOm1ldGg6YFNwZWNpZmllclNldC5m
aWx0ZXIoKWAuCisKKworLi4gZXhjZXB0aW9uOjogSW52YWxpZFNwZWNpZmllcgorCisgICAgUmFp
c2VkIHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUgYSA6Y2xhc3M6YFNwZWNpZmllcmAgd2l0aCBh
IHNwZWNpZmllcgorICAgIHN0cmluZyB0aGF0IGRvZXMgbm90IGNvbmZvcm0gdG8gYFBFUCA0NDBg
Xy4KKworCisuLiBfYFBFUCA0NDBgOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3Bl
cC0wNDQwLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy90YWdzLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL2RvY3MvdGFncy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi40ZDdlMTBhYjYzNjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9k
b2NzL3RhZ3MucnN0CkBAIC0wLDAgKzEsMjIwIEBACitUYWdzCis9PT09CisKKy4uIGN1cnJlbnRt
b2R1bGU6OiBwYWNrYWdpbmcudGFncworCitXaGVlbHMgZW5jb2RlIHRoZSBQeXRob24gaW50ZXJw
cmV0ZXIsIEFCSSwgYW5kIHBsYXRmb3JtIHRoYXQgdGhleSBzdXBwb3J0IGluCit0aGVpciBmaWxl
bmFtZXMgdXNpbmcgYHBsYXRmb3JtIGNvbXBhdGliaWxpdHkgdGFnc2BfLiBUaGlzIG1vZHVsZSBw
cm92aWRlcworc3VwcG9ydCBmb3IgYm90aCBwYXJzaW5nIHRoZXNlIHRhZ3MgYXMgd2VsbCBhcyBk
aXNjb3ZlcmluZyB3aGF0IHRhZ3MgdGhlCitydW5uaW5nIFB5dGhvbiBpbnRlcnByZXRlciBzdXBw
b3J0cy4KKworVXNhZ2UKKy0tLS0tCisKKy4uIGRvY3Rlc3Q6OgorCisgICAgPj4+IGZyb20gcGFj
a2FnaW5nLnRhZ3MgaW1wb3J0IFRhZywgc3lzX3RhZ3MKKyAgICA+Pj4gaW1wb3J0IHN5cworICAg
ID4+PiBsb29raW5nX2ZvciA9IFRhZygicHl7bWFqb3J9Ii5mb3JtYXQobWFqb3I9c3lzLnZlcnNp
b25faW5mby5tYWpvciksICJub25lIiwgImFueSIpCisgICAgPj4+IHN1cHBvcnRlZF90YWdzID0g
bGlzdChzeXNfdGFncygpKQorICAgID4+PiBsb29raW5nX2ZvciBpbiBzdXBwb3J0ZWRfdGFncwor
ICAgIFRydWUKKyAgICA+Pj4gcmVhbGx5X29sZCA9IFRhZygicHkxIiwgIm5vbmUiLCAiYW55IikK
KyAgICA+Pj4gd2hlZWxzID0ge3JlYWxseV9vbGQsIGxvb2tpbmdfZm9yfQorICAgID4+PiBiZXN0
X3doZWVsID0gTm9uZQorICAgID4+PiBmb3Igc3VwcG9ydGVkX3RhZyBpbiBzdXBwb3J0ZWRfdGFn
czoKKyAgICAuLi4gICAgIGZvciB3aGVlbF90YWcgaW4gd2hlZWxzOgorICAgIC4uLiAgICAgICAg
IGlmIHN1cHBvcnRlZF90YWcgPT0gd2hlZWxfdGFnOgorICAgIC4uLiAgICAgICAgICAgICBiZXN0
X3doZWVsID0gd2hlZWxfdGFnCisgICAgLi4uICAgICAgICAgICAgIGJyZWFrCisgICAgPj4+IGJl
c3Rfd2hlZWwgPT0gbG9va2luZ19mb3IKKyAgICBUcnVlCisKK1JlZmVyZW5jZQorLS0tLS0tLS0t
CisKK0hpZ2ggTGV2ZWwgSW50ZXJmYWNlCisnJycnJycnJycnJycnJycnJycnJworCitUaGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyBhcmUgdGhlIG1haW4gaW50ZXJmYWNlIHRvIHRoZSBsaWJyYXJ5LCBh
bmQgYXJlIHR5cGljYWxseSB0aGUgb25seQoraXRlbXMgdGhhdCBhcHBsaWNhdGlvbnMgc2hvdWxk
IG5lZWQgdG8gcmVmZXJlbmNlLCBpbiBvcmRlciB0byBwYXJzZSBhbmQgY2hlY2sgdGFncy4KKwor
Li4gY2xhc3M6OiBUYWcoaW50ZXJwcmV0ZXIsIGFiaSwgcGxhdGZvcm0pCisKKyAgICBBIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB0YWcgdHJpcGxlIGZvciBhIHdoZWVsLiBJbnN0YW5jZXMgYXJlIGNv
bnNpZGVyZWQKKyAgICBpbW11dGFibGUgYW5kIHRodXMgYXJlIGhhc2hhYmxlLiBFcXVhbGl0eSBj
aGVja2luZyBpcyBhbHNvIHN1cHBvcnRlZC4KKworICAgIDpwYXJhbSBzdHIgaW50ZXJwcmV0ZXI6
IFRoZSBpbnRlcnByZXRlciBuYW1lLCBlLmcuIGBgInB5ImBgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNlZSA6YXR0cjpgSU5URVJQUkVURVJfU0hPUlRfTkFNRVNgIGZvciBtYXBwaW5n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VsbC1rbm93biBpbnRlcnByZXRlciBuYW1l
cyB0byB0aGVpciBzaG9ydCBuYW1lcykuCisgICAgOnBhcmFtIHN0ciBhYmk6IFRoZSBBQkkgdGhh
dCBhIHdoZWVsIHN1cHBvcnRzLCBlLmcuIGBgImNwMzdtImBgLgorICAgIDpwYXJhbSBzdHIgcGxh
dGZvcm06IFRoZSBPUy9wbGF0Zm9ybSB0aGUgd2hlZWwgc3VwcG9ydHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgZS5nLiBgYCJ3aW5fYW1kNjQiYGAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBp
bnRlcnByZXRlcgorCisgICAgICAgIFRoZSBpbnRlcnByZXRlciBuYW1lLgorCisgICAgLi4gYXR0
cmlidXRlOjogYWJpCisKKyAgICAgICAgVGhlIHN1cHBvcnRlZCBBQkkuCisKKyAgICAuLiBhdHRy
aWJ1dGU6OiBwbGF0Zm9ybQorCisgICAgICAgIFRoZSBPUy9wbGF0Zm9ybS4KKworCisuLiBmdW5j
dGlvbjo6IHBhcnNlX3RhZyh0YWcpCisKKyAgICBQYXJzZXMgdGhlIHByb3ZpZGVkIGBgdGFnYGAg
aW50byBhIHNldCBvZiA6Y2xhc3M6YFRhZ2AgaW5zdGFuY2VzLgorCisgICAgUmV0dXJuaW5nIGEg
c2V0IGlzIHJlcXVpcmVkIGR1ZSB0byB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgdGFnIGlzIGEK
KyAgICBgY29tcHJlc3NlZCB0YWcgc2V0YF8sIGUuZy4gYGAicHkyLnB5My1ub25lLWFueSJgYCB3
aGljaCBzdXBwb3J0cyBib3RoCisgICAgUHl0aG9uIDIgYW5kIFB5dGhvbiAzLgorCisgICAgOnBh
cmFtIHN0ciB0YWc6IFRoZSB0YWcgdG8gcGFyc2UsIGUuZy4gYGAicHkzLW5vbmUtYW55ImBgLgor
CisKKy4uIGZ1bmN0aW9uOjogc3lzX3RhZ3MoKiwgd2Fybj1GYWxzZSkKKworICAgIFlpZWxkcyB0
aGUgdGFncyB0aGF0IHRoZSBydW5uaW5nIGludGVycHJldGVyIHN1cHBvcnRzLgorCisgICAgVGhl
IGl0ZXJhYmxlIGlzIG9yZGVyZWQgc28gdGhhdCB0aGUgYmVzdC1tYXRjaGluZyB0YWcgaXMgZmly
c3QgaW4gdGhlCisgICAgc2VxdWVuY2UuIFRoZSBleGFjdCBwcmVmZXJlbnRpYWwgb3JkZXIgdG8g
dGFncyBpcyBpbnRlcnByZXRlci1zcGVjaWZpYywgYnV0CisgICAgaW4gZ2VuZXJhbCB0aGUgdGFn
IGltcG9ydGFuY2UgaXMgaW4gdGhlIG9yZGVyIG9mOgorCisgICAgMS4gSW50ZXJwcmV0ZXIKKyAg
ICAyLiBQbGF0Zm9ybQorICAgIDMuIEFCSQorCisgICAgVGhpcyBvcmRlciBpcyBkdWUgdG8gdGhl
IGZhY3QgdGhhdCBhbiBBQkkgaXMgaW5oZXJlbnRseSB0aWVkIHRvIHRoZQorICAgIHBsYXRmb3Jt
LCBidXQgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpcyBub3QgbmVjZXNzYXJpbHkgdGllZCB0byB0
aGUgQUJJLiBUaGUKKyAgICBpbnRlcnByZXRlciBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgdGFnIGFz
IGl0IGRpY3RhdGVzIGJhc2ljIHN1cHBvcnQgZm9yIGFueQorICAgIHdoZWVsLgorCisgICAgVGhl
IGZ1bmN0aW9uIHJldHVybnMgYW4gaXRlcmFibGUgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZSBw
b3NzaWJsZQorICAgIHNob3J0LWNpcmN1aXRpbmcgb2YgdGFnIGdlbmVyYXRpb24gaWYgdGhlIGVu
dGlyZSBzZXF1ZW5jZSBpcyBub3QgbmVjZXNzYXJ5CisgICAgYW5kIHRhZyBjYWxjdWxhdGlvbiBo
YXBwZW5zIHRvIGJlIGV4cGVuc2l2ZS4KKworICAgIDpwYXJhbSBib29sIHdhcm46IFdoZXRoZXIg
d2FybmluZ3Mgc2hvdWxkIGJlIGxvZ2dlZC4gRGVmYXVsdHMgdG8gYGBGYWxzZWBgLgorCisKK0xv
dyBMZXZlbCBJbnRlcmZhY2UKKycnJycnJycnJycnJycnJycnJycKKworVGhlIGZvbGxvd2luZyBm
dW5jdGlvbnMgYXJlIGxvdy1sZXZlbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBUaGV5IHNob3Vs
ZCB0eXBpY2FsbHkgbm90CitiZSBuZWVkZWQgaW4gYXBwbGljYXRpb24gY29kZSwgdW5sZXNzIHRo
ZSBhcHBsaWNhdGlvbiBoYXMgc3BlY2lhbGlzZWQgcmVxdWlyZW1lbnRzIChmb3IKK2V4YW1wbGUs
IGNvbnN0cnVjdGluZyBzZXRzIG9mIHN1cHBvcnRlZCB0YWdzIGZvciBlbnZpcm9ubWVudHMgb3Ro
ZXIgdGhhbiB0aGUgcnVubmluZworaW50ZXJwcmV0ZXIpLgorCitUaGVzZSBmdW5jdGlvbnMgY2Fw
dHVyZSB0aGUgcHJlY2lzZSBkZXRhaWxzIG9mIHdoaWNoIGVudmlyb25tZW50cyBzdXBwb3J0IHdo
aWNoIHRhZ3MuIFRoYXQKK2luZm9ybWF0aW9uIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBjb21wYXRp
YmlsaXR5IHRhZyBzdGFuZGFyZHMgYnV0IGlzIG5vdGVkIGFzIGJlaW5nIHVwCit0byB0aGUgaW1w
bGVtZW50YXRpb24gdG8gcHJvdmlkZS4KKworCisuLiBhdHRyaWJ1dGU6OiBJTlRFUlBSRVRFUl9T
SE9SVF9OQU1FUworCisgICAgQSBkaWN0aW9uYXJ5IG1hcHBpbmcgaW50ZXJwcmV0ZXIgbmFtZXMg
dG8gdGhlaXIgYGFiYnJldmlhdGlvbiBjb2Rlc2BfCisgICAgKGUuZy4gYGAiY3B5dGhvbiJgYCBp
cyBgYCJjcCJgYCkuIEFsbCBpbnRlcnByZXRlciBuYW1lcyBhcmUgbG93ZXItY2FzZS4KKworCisu
LiBmdW5jdGlvbjo6IGludGVycHJldGVyX25hbWUoKQorCisgICAgUmV0dXJucyB0aGUgcnVubmlu
ZyBpbnRlcnByZXRlcidzIG5hbWUuCisKKyAgICBUaGlzIHR5cGljYWxseSBhY3RzIGFzIHRoZSBw
cmVmaXggdG8gdGhlIDphdHRyOmB+VGFnLmludGVycHJldGVyYCB0YWcuCisKKworLi4gZnVuY3Rp
b246OiBpbnRlcnByZXRlcl92ZXJzaW9uKCosIHdhcm49RmFsc2UpCisKKyAgICBSZXR1cm5zIHRo
ZSBydW5uaW5nIGludGVycHJldGVyJ3MgdmVyc2lvbi4KKworICAgIFRoaXMgdHlwaWNhbGx5IGFj
dHMgYXMgdGhlIHN1ZmZpeCB0byB0aGUgOmF0dHI6YH5UYWcuaW50ZXJwcmV0ZXJgIHRhZy4KKwor
CisuLiBmdW5jdGlvbjo6IG1hY19wbGF0Zm9ybXModmVyc2lvbj1Ob25lLCBhcmNoPU5vbmUpCisK
KyAgICBZaWVsZHMgdGhlIDphdHRyOmB+VGFnLnBsYXRmb3JtYCB0YWdzIGZvciBtYWNPUy4KKwor
ICAgIDpwYXJhbSB0dXBsZSB2ZXJzaW9uOiBBIHR3by1pdGVtIHR1cGxlIHByZXNlbnRpbmcgdGhl
IHZlcnNpb24gb2YgbWFjT1MuCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRv
IHRoZSBjdXJyZW50IHN5c3RlbSdzIHZlcnNpb24uCisgICAgOnBhcmFtIHN0ciBhcmNoOiBUaGUg
Q1BVIGFyY2hpdGVjdHVyZS4gRGVmYXVsdHMgdG8gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgc3lzdGVtLCBlLmcuIGBgIng4Nl82NCJgYC4KKwor
ICAgIC4uIG5vdGU6OgorICAgICAgICBFcXVpdmFsZW50IHN1cHBvcnQgZm9yIHRoZSBvdGhlciBt
YWpvciBwbGF0Zm9ybXMgaXMgcHVycG9zZWZ1bGx5IG5vdAorICAgICAgICBwcm92aWRlZDoKKwor
ICAgICAgICAtIE9uIFdpbmRvd3MsIHBsYXRmb3JtIGNvbXBhdGliaWxpdHkgaXMgc3RhdGljYWxs
eSBzcGVjaWZpZWQKKyAgICAgICAgLSBPbiBMaW51eCwgY29kZSBtdXN0IGJlIHJ1biBvbiB0aGUg
c3lzdGVtIGl0c2VsZiB0byBkZXRlcm1pbmUKKyAgICAgICAgICBjb21wYXRpYmlsaXR5CisKKwor
Li4gZnVuY3Rpb246OiBjb21wYXRpYmxlX3RhZ3MocHl0aG9uX3ZlcnNpb249Tm9uZSwgaW50ZXJw
cmV0ZXI9Tm9uZSwgcGxhdGZvcm1zPU5vbmUpCisKKyAgICBZaWVsZHMgdGhlIHRhZ3MgZm9yIGFu
IGludGVycHJldGVyIGNvbXBhdGlibGUgd2l0aCB0aGUgUHl0aG9uIHZlcnNpb24KKyAgICBzcGVj
aWZpZWQgYnkgYGBweXRob25fdmVyc2lvbmBgLgorCisgICAgVGhlIHNwZWNpZmljIHRhZ3MgZ2Vu
ZXJhdGVkIGFyZToKKworICAgIC0gYGBweSotbm9uZS08cGxhdGZvcm0+YGAKKyAgICAtIGBgPGlu
dGVycHJldGVyPi1ub25lLWFueWBgIGlmIGBgaW50ZXJwcmV0ZXJgYCBpcyBwcm92aWRlZAorICAg
IC0gYGBweSotbm9uZS1hbnlgYAorCisgICAgOnBhcmFtIFNlcXVlbmNlIHB5dGhvbl92ZXJzaW9u
OiBBIG9uZS0gb3IgdHdvLWl0ZW0gc2VxdWVuY2UgcmVwcmVzZW50aW5nIHRoZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB2ZXJzaW9uIG9mIFB5dGhvbi4gRGVm
YXVsdHMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgc3lzLnZlcnNpb25f
aW5mb1s6Ml1gYC4KKyAgICA6cGFyYW0gc3RyIGludGVycHJldGVyOiBUaGUgbmFtZSBvZiB0aGUg
aW50ZXJwcmV0ZXIgKGlmIGtub3duKSwgZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGBgImNwMzgiYGAuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGludGVycHJldGVyLgorICAgIDpw
YXJhbSBJdGVyYWJsZSBwbGF0Zm9ybXM6IEl0ZXJhYmxlIG9mIGNvbXBhdGlibGUgcGxhdGZvcm1z
LiBEZWZhdWx0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9y
bXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHN5c3RlbS4KKworLi4gZnVuY3Rpb246OiBj
cHl0aG9uX3RhZ3MocHl0aG9uX3ZlcnNpb249Tm9uZSwgYWJpcz1Ob25lLCBwbGF0Zm9ybXM9Tm9u
ZSwgKiwgd2Fybj1GYWxzZSkKKworICAgIFlpZWxkcyB0aGUgdGFncyBmb3IgdGhlIENQeXRob24g
aW50ZXJwcmV0ZXIuCisKKyAgICBUaGUgc3BlY2lmaWMgdGFncyBnZW5lcmF0ZWQgYXJlOgorCisg
ICAgLSBgYGNwPHB5dGhvbl92ZXJzaW9uPi08YWJpPi08cGxhdGZvcm0+YGAKKyAgICAtIGBgY3A8
cHl0aG9uX3ZlcnNpb24+LWFiaTMtPHBsYXRmb3JtPmBgCisgICAgLSBgYGNwPHB5dGhvbl92ZXJz
aW9uPi1ub25lLTxwbGF0Zm9ybT5gYAorICAgIC0gYGBjcDxvbGRlciB2ZXJzaW9uPi1hYmkzLTxw
bGF0Zm9ybT5gYCB3aGVyZSAib2xkZXIgdmVyc2lvbiIgaXMgYWxsIG9sZGVyCisgICAgICBtaW5v
ciB2ZXJzaW9ucyBkb3duIHRvIFB5dGhvbiAzLjIgKHdoZW4gYGBhYmkzYGAgd2FzIGludHJvZHVj
ZWQpCisKKyAgICBJZiBgYHB5dGhvbl92ZXJzaW9uYGAgb25seSBwcm92aWRlcyBhIG1ham9yLW9u
bHkgdmVyc2lvbiB0aGVuIG9ubHkKKyAgICB1c2VyLXByb3ZpZGVkIEFCSXMgdmlhIGBgYWJpc2Bg
IGFuZCB0aGUgYGBub25lYGAgQUJJIHdpbGwgYmUgdXNlZC4KKworICAgIDpwYXJhbSBTZXF1ZW5j
ZSBweXRob25fdmVyc2lvbjogQSBvbmUtIG9yIHR3by1pdGVtIHNlcXVlbmNlIHJlcHJlc2VudGlu
ZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHRlZCBQeXRob24g
dmVyc2lvbi4gRGVmYXVsdHMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBg
c3lzLnZlcnNpb25faW5mb1s6Ml1gYC4KKyAgICA6cGFyYW0gSXRlcmFibGUgYWJpczogSXRlcmFi
bGUgb2YgY29tcGF0aWJsZSBBQklzLiBEZWZhdWx0cyB0byB0aGUgQUJJcworICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgc3lzdGVtLgorICAgIDpw
YXJhbSBJdGVyYWJsZSBwbGF0Zm9ybXM6IEl0ZXJhYmxlIG9mIGNvbXBhdGlibGUgcGxhdGZvcm1z
LiBEZWZhdWx0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9y
bXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHN5c3RlbS4KKyAgICA6cGFyYW0gYm9vbCB3
YXJuOiBXaGV0aGVyIHdhcm5pbmdzIHNob3VsZCBiZSBsb2dnZWQuIERlZmF1bHRzIHRvIGBgRmFs
c2VgYC4KKworLi4gZnVuY3Rpb246OiBnZW5lcmljX3RhZ3MoaW50ZXJwcmV0ZXI9Tm9uZSwgYWJp
cz1Ob25lLCBwbGF0Zm9ybXM9Tm9uZSwgKiwgd2Fybj1GYWxzZSkKKworICAgIFlpZWxkcyB0aGUg
dGFncyBmb3IgYW4gaW50ZXJwcmV0ZXIgd2hpY2ggcmVxdWlyZXMgbm8gc3BlY2lhbGl6YXRpb24u
CisKKyAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGlmIG9uZSBvZiB0aGUgb3RoZXIg
aW50ZXJwcmV0ZXItc3BlY2lmaWMKKyAgICBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1
bGUgaXMgbm90IGFwcHJvcHJpYXRlIChpLmUuIG5vdCBjYWxjdWxhdGluZworICAgIHRhZ3MgZm9y
IGEgQ1B5dGhvbiBpbnRlcnByZXRlcikuCisKKyAgICBUaGUgc3BlY2lmaWMgdGFncyBnZW5lcmF0
ZWQgYXJlOgorCisgICAgLSBgYDxpbnRlcnByZXRlcj4tPGFiaT4tPHBsYXRmb3JtPmBgCisKKyAg
ICBUaGUgYGAibm9uZSJgYCBBQkkgd2lsbCBiZSBhZGRlZCBpZiBpdCB3YXMgbm90IGV4cGxpY2l0
bHkgcHJvdmlkZWQuCisKKyAgICA6cGFyYW0gc3RyIGludGVycHJldGVyOiBUaGUgbmFtZSBvZiB0
aGUgaW50ZXJwcmV0ZXIuIERlZmF1bHRzIHRvIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsY3VsYXRlZC4KKyAgICA6cGFyYW0gSXRlcmFibGUgYWJpczogSXRlcmFibGUgb2Yg
Y29tcGF0aWJsZSBBQklzLiBEZWZhdWx0cyB0byB0aGUgQUJJcworICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgc3lzdGVtLgorICAgIDpwYXJhbSBJ
dGVyYWJsZSBwbGF0Zm9ybXM6IEl0ZXJhYmxlIG9mIGNvbXBhdGlibGUgcGxhdGZvcm1zLiBEZWZh
dWx0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMgY29t
cGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHN5c3RlbS4KKyAgICA6cGFyYW0gYm9vbCB3YXJuOiBX
aGV0aGVyIHdhcm5pbmdzIHNob3VsZCBiZSBsb2dnZWQuIERlZmF1bHRzIHRvIGBgRmFsc2VgYC4K
KworLi4gX2BhYmJyZXZpYXRpb24gY29kZXNgOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9w
ZXBzL3BlcC0wNDI1LyNweXRob24tdGFnCisuLiBfYGNvbXByZXNzZWQgdGFnIHNldGA6IGh0dHBz
Oi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0MjUvI2NvbXByZXNzZWQtdGFnLXNldHMK
Ky4uIF9gcGxhdGZvcm0gY29tcGF0aWJpbGl0eSB0YWdzYDogaHR0cHM6Ly9wYWNrYWdpbmcucHl0
aG9uLm9yZy9zcGVjaWZpY2F0aW9ucy9wbGF0Zm9ybS1jb21wYXRpYmlsaXR5LXRhZ3MvCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3V0aWxzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2Rv
Y3MvdXRpbHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTM0
MDk0YWEzMGUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy91dGlscy5y
c3QKQEAgLTAsMCArMSw0MSBAQAorVXRpbGl0aWVzCis9PT09PT09PT0KKworLi4gY3VycmVudG1v
ZHVsZTo6IHBhY2thZ2luZy51dGlscworCisKK0Egc2V0IG9mIHNtYWxsLCBoZWxwZXIgdXRpbGl0
aWVzIGZvciBkZWFsaW5nIHdpdGggUHl0aG9uIHBhY2thZ2VzLgorCisKK1JlZmVyZW5jZQorLS0t
LS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogY2Fub25pY2FsaXplX25hbWUobmFtZSkKKworICAgIFRo
aXMgZnVuY3Rpb24gdGFrZXMgYSB2YWxpZCBQeXRob24gcGFja2FnZSBuYW1lLCBhbmQgcmV0dXJu
cyB0aGUgbm9ybWFsaXplZAorICAgIGZvcm0gb2YgaXQuCisKKyAgICA6cGFyYW0gc3RyIG5hbWU6
IFRoZSBuYW1lIHRvIG5vcm1hbGl6ZS4KKworICAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICAgID4+
PiBmcm9tIHBhY2thZ2luZy51dGlscyBpbXBvcnQgY2Fub25pY2FsaXplX25hbWUKKyAgICAgICAg
Pj4+IGNhbm9uaWNhbGl6ZV9uYW1lKCJEamFuZ28iKQorICAgICAgICAnZGphbmdvJworICAgICAg
ICA+Pj4gY2Fub25pY2FsaXplX25hbWUoIm9zbG8uY29uY3VycmVuY3kiKQorICAgICAgICAnb3Ns
by1jb25jdXJyZW5jeScKKyAgICAgICAgPj4+IGNhbm9uaWNhbGl6ZV9uYW1lKCJyZXF1ZXN0cyIp
CisgICAgICAgICdyZXF1ZXN0cycKKworLi4gZnVuY3Rpb246OiBjYW5vbmljYWxpemVfdmVyc2lv
bih2ZXJzaW9uKQorCisgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyByZXByZXNlbnRp
bmcgYSBwYWNrYWdlIHZlcnNpb24gKG9yIGEKKyAgICBgYFZlcnNpb25gYCBpbnN0YW5jZSksIGFu
ZCByZXR1cm5zIHRoZSBub3JtYWxpemVkIGZvcm0gb2YgaXQuCisKKyAgICA6cGFyYW0gc3RyIHZl
cnNpb246IFRoZSB2ZXJzaW9uIHRvIG5vcm1hbGl6ZS4KKworICAgIC4uIGRvY3Rlc3Q6OgorCisg
ICAgICAgID4+PiBmcm9tIHBhY2thZ2luZy51dGlscyBpbXBvcnQgY2Fub25pY2FsaXplX3ZlcnNp
b24KKyAgICAgICAgPj4+IGNhbm9uaWNhbGl6ZV92ZXJzaW9uKCcxLjQuMC4wLjAnKQorICAgICAg
ICAnMS40JwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy92ZXJzaW9uLnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL2RvY3MvdmVyc2lvbi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hNDNjZjc4NjhlOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy9kb2NzL3ZlcnNpb24ucnN0CkBAIC0wLDAgKzEsMjkyIEBACitWZXJzaW9uIEhhbmRsaW5n
Cis9PT09PT09PT09PT09PT09CisKKy4uIGN1cnJlbnRtb2R1bGU6OiBwYWNrYWdpbmcudmVyc2lv
bgorCitBIGNvcmUgcmVxdWlyZW1lbnQgb2YgZGVhbGluZyB3aXRoIHBhY2thZ2VzIGlzIHRoZSBh
YmlsaXR5IHRvIHdvcmsgd2l0aAordmVyc2lvbnMuIGBQRVAgNDQwYF8gZGVmaW5lcyB0aGUgc3Rh
bmRhcmQgdmVyc2lvbiBzY2hlbWUgZm9yIFB5dGhvbiBwYWNrYWdlcword2hpY2ggaGFzIGJlZW4g
aW1wbGVtZW50ZWQgYnkgdGhpcyBtb2R1bGUuCisKK1VzYWdlCistLS0tLQorCisuLiBkb2N0ZXN0
OjoKKworICAgID4+PiBmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGltcG9ydCBWZXJzaW9uLCBwYXJz
ZQorICAgID4+PiB2MSA9IHBhcnNlKCIxLjBhNSIpCisgICAgPj4+IHYyID0gVmVyc2lvbigiMS4w
IikKKyAgICA+Pj4gdjEKKyAgICA8VmVyc2lvbignMS4wYTUnKT4KKyAgICA+Pj4gdjIKKyAgICA8
VmVyc2lvbignMS4wJyk+CisgICAgPj4+IHYxIDwgdjIKKyAgICBUcnVlCisgICAgPj4+IHYxLmVw
b2NoCisgICAgMAorICAgID4+PiB2MS5yZWxlYXNlCisgICAgKDEsIDApCisgICAgPj4+IHYxLnBy
ZQorICAgICgnYScsIDUpCisgICAgPj4+IHYxLmlzX3ByZXJlbGVhc2UKKyAgICBUcnVlCisgICAg
Pj4+IHYyLmlzX3ByZXJlbGVhc2UKKyAgICBGYWxzZQorICAgID4+PiBWZXJzaW9uKCJmcmVuY2gg
dG9hc3QiKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAg
Li4uCisgICAgSW52YWxpZFZlcnNpb246IEludmFsaWQgdmVyc2lvbjogJ2ZyZW5jaCB0b2FzdCcK
KyAgICA+Pj4gVmVyc2lvbigiMS4wIikucG9zdAorICAgID4+PiBWZXJzaW9uKCIxLjAiKS5pc19w
b3N0cmVsZWFzZQorICAgIEZhbHNlCisgICAgPj4+IFZlcnNpb24oIjEuMC5wb3N0MCIpLnBvc3QK
KyAgICAwCisgICAgPj4+IFZlcnNpb24oIjEuMC5wb3N0MCIpLmlzX3Bvc3RyZWxlYXNlCisgICAg
VHJ1ZQorCisKK1JlZmVyZW5jZQorLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcGFyc2UodmVy
c2lvbikKKworICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSB2ZXJzaW9uIHN0cmluZyBhbmQgd2ls
bCBwYXJzZSBpdCBhcyBhCisgICAgOmNsYXNzOmBWZXJzaW9uYCBpZiB0aGUgdmVyc2lvbiBpcyBh
IHZhbGlkIFBFUCA0NDAgdmVyc2lvbiwgb3RoZXJ3aXNlIGl0CisgICAgd2lsbCBwYXJzZSBpdCBh
cyBhIGRlcHJlY2F0ZWQgOmNsYXNzOmBMZWdhY3lWZXJzaW9uYC4KKworCisuLiBjbGFzczo6IFZl
cnNpb24odmVyc2lvbikKKworICAgIFRoaXMgY2xhc3MgYWJzdHJhY3RzIGhhbmRsaW5nIG9mIGEg
cHJvamVjdCdzIHZlcnNpb25zLiBJdCBpbXBsZW1lbnRzIHRoZQorICAgIHNjaGVtZSBkZWZpbmVk
IGluIGBQRVAgNDQwYF8uIEEgOmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5jZSBpcyBjb21wYXJpc29u
CisgICAgYXdhcmUgYW5kIGNhbiBiZSBjb21wYXJlZCBhbmQgc29ydGVkIHVzaW5nIHRoZSBzdGFu
ZGFyZCBQeXRob24gaW50ZXJmYWNlcy4KKworICAgIDpwYXJhbSBzdHIgdmVyc2lvbjogVGhlIHN0
cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHZlcnNpb24gd2hpY2ggd2lsbCBiZQorICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkIGFuZCBub3JtYWxpemVkIGJlZm9yZSB1c2UuCisgICAgOnJh
aXNlcyBJbnZhbGlkVmVyc2lvbjogSWYgdGhlIGBgdmVyc2lvbmBgIGRvZXMgbm90IGNvbmZvcm0g
dG8gUEVQIDQ0MCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB3YXkgdGhlbiB0
aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHB1Ymxp
YworCisgICAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHVibGljIHZlcnNpb24gcG9y
dGlvbiBvZiB0aGlzIGBgVmVyc2lvbigpYGAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBiYXNlX3Zl
cnNpb24KKworICAgICAgICBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGJhc2UgdmVyc2lvbiBv
ZiB0aGlzIDpjbGFzczpgVmVyc2lvbmAKKyAgICAgICAgaW5zdGFuY2UuIFRoZSBiYXNlIHZlcnNp
b24gaXMgdGhlIHB1YmxpYyB2ZXJzaW9uIG9mIHRoZSBwcm9qZWN0IHdpdGhvdXQKKyAgICAgICAg
YW55IHByZSBvciBwb3N0IHJlbGVhc2UgbWFya2Vycy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGVw
b2NoCisKKyAgICAgICAgQW4gaW50ZWdlciBnaXZpbmcgdGhlIHZlcnNpb24gZXBvY2ggb2YgdGhp
cyA6Y2xhc3M6YFZlcnNpb25gIGluc3RhbmNlCisKKyAgICAuLiBhdHRyaWJ1dGU6OiByZWxlYXNl
CisKKyAgICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyBnaXZpbmcgdGhlIGNvbXBvbmVudHMgb2Yg
dGhlIHJlbGVhc2Ugc2VnbWVudCBvZgorICAgICAgICB0aGlzIDpjbGFzczpgVmVyc2lvbmAgaW5z
dGFuY2U7IHRoYXQgaXMsIHRoZSBgYDEuMi4zYGAgcGFydCBvZiB0aGUKKyAgICAgICAgdmVyc2lv
biBudW1iZXIsIGluY2x1ZGluZyB0cmFpbGluZyB6ZXJvZXMgYnV0IG5vdCBpbmNsdWRpbmcgdGhl
IGVwb2NoCisgICAgICAgIG9yIGFueSBwcmVyZWxlYXNlL2RldmVsb3BtZW50L3Bvc3RyZWxlYXNl
IHN1ZmZpeGVzCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtYWpvcgorCisgICAgICAgIEFuIGludGVn
ZXIgcmVwcmVzZW50aW5nIHRoZSBmaXJzdCBpdGVtIG9mIDphdHRyOmByZWxlYXNlYCBvciBgYDBg
YCBpZiB1bmF2YWlsYWJsZS4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG1pbm9yCisKKyAgICAgICAg
QW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHNlY29uZCBpdGVtIG9mIDphdHRyOmByZWxlYXNl
YCBvciBgYDBgYCBpZiB1bmF2YWlsYWJsZS4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG1pY3JvCisK
KyAgICAgICAgQW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHRoaXJkIGl0ZW0gb2YgOmF0dHI6
YHJlbGVhc2VgIG9yIGBgMGBgIGlmIHVuYXZhaWxhYmxlLgorCisgICAgLi4gYXR0cmlidXRlOjog
bG9jYWwKKworICAgICAgICBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGxvY2FsIHZlcnNpb24g
cG9ydGlvbiBvZiB0aGlzIGBgVmVyc2lvbigpYGAKKyAgICAgICAgaWYgaXQgaGFzIG9uZSwgb3Ig
YGBOb25lYGAgb3RoZXJ3aXNlLgorCisgICAgLi4gYXR0cmlidXRlOjogcHJlCisKKyAgICAgICAg
SWYgdGhpcyA6Y2xhc3M6YFZlcnNpb25gIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwcmVyZWxlYXNl
LCB0aGlzCisgICAgICAgIGF0dHJpYnV0ZSB3aWxsIGJlIGEgcGFpciBvZiB0aGUgcHJlcmVsZWFz
ZSBwaGFzZSAodGhlIHN0cmluZyBgYCJhImBgLAorICAgICAgICBgYCJiImBgLCBvciBgYCJyYyJg
YCkgYW5kIHRoZSBwcmVyZWxlYXNlIG51bWJlciAoYW4gaW50ZWdlcikuICBJZiB0aGlzCisgICAg
ICAgIGluc3RhbmNlIGlzIG5vdCBhIHByZXJlbGVhc2UsIHRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBg
Tm9uZWAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBpc19wcmVyZWxlYXNlCisKKyAgICAgICAgQSBi
b29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIDpjbGFzczpgVmVyc2lvbmAgaW5z
dGFuY2UKKyAgICAgICAgcmVwcmVzZW50cyBhIHByZXJlbGVhc2UgYW5kL29yIGRldmVsb3BtZW50
IHJlbGVhc2UuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBkZXYKKworICAgICAgICBJZiB0aGlzIDpj
bGFzczpgVmVyc2lvbmAgaW5zdGFuY2UgcmVwcmVzZW50cyBhIGRldmVsb3BtZW50IHJlbGVhc2Us
CisgICAgICAgIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgdGhlIGRldmVsb3BtZW50IHJlbGVhc2Ug
bnVtYmVyIChhbiBpbnRlZ2VyKTsKKyAgICAgICAgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGBOb25l
YC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGlzX2RldnJlbGVhc2UKKworICAgICAgICBBIGJvb2xl
YW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgOmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5j
ZQorICAgICAgICByZXByZXNlbnRzIGEgZGV2ZWxvcG1lbnQgcmVsZWFzZS4KKworICAgIC4uIGF0
dHJpYnV0ZTo6IHBvc3QKKworICAgICAgICBJZiB0aGlzIDpjbGFzczpgVmVyc2lvbmAgaW5zdGFu
Y2UgcmVwcmVzZW50cyBhIHBvc3RyZWxlYXNlLCB0aGlzCisgICAgICAgIGF0dHJpYnV0ZSB3aWxs
IGJlIHRoZSBwb3N0cmVsZWFzZSBudW1iZXIgKGFuIGludGVnZXIpOyBvdGhlcndpc2UsIGl0Cisg
ICAgICAgIHdpbGwgYmUgYE5vbmVgLgorCisgICAgLi4gYXR0cmlidXRlOjogaXNfcG9zdHJlbGVh
c2UKKworICAgICAgICBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgOmNs
YXNzOmBWZXJzaW9uYCBpbnN0YW5jZQorICAgICAgICByZXByZXNlbnRzIGEgcG9zdC1yZWxlYXNl
LgorCisKKy4uIGNsYXNzOjogTGVnYWN5VmVyc2lvbih2ZXJzaW9uKQorCisgICAgLi4gZGVwcmVj
YXRlZDo6IDIwLjUKKworICAgICAgICBVc2UgOmNsYXNzOmBWZXJzaW9uYCBpbnN0ZWFkLgorCisg
ICAgVGhpcyBjbGFzcyBhYnN0cmFjdHMgaGFuZGxpbmcgb2YgYSBwcm9qZWN0J3MgdmVyc2lvbnMg
aWYgdGhleSBhcmUgbm90CisgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBzY2hlbWUgZGVmaW5lZCBp
biBgUEVQIDQ0MGBfLiBJdCBpbXBsZW1lbnRzIGEgc2ltaWxhcgorICAgIGludGVyZmFjZSB0byB0
aGF0IG9mIDpjbGFzczpgVmVyc2lvbmAuCisKKyAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhl
IHByZXZpb3VzIGRlIGZhY3RvIHNvcnRpbmcgYWxnb3JpdGhtIHVzZWQgYnkKKyAgICBzZXR1cHRv
b2xzLCBob3dldmVyIGl0IHdpbGwgYWx3YXlzIHNvcnQgYXMgbGVzcyB0aGFuIGEgOmNsYXNzOmBW
ZXJzaW9uYAorICAgIGluc3RhbmNlLgorCisgICAgOnBhcmFtIHN0ciB2ZXJzaW9uOiBUaGUgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdmVyc2lvbiB3aGljaCB3aWxsIGJlCisgICAgICAgICAg
ICAgICAgICAgICAgICB1c2VkIGFzIGlzLgorCisgICAgLi4gbm90ZTo6CisKKyAgICAgICAgOmNs
YXNzOmBMZWdhY3lWZXJzaW9uYCBpbnN0YW5jZXMgYXJlIGFsd2F5cyBvcmRlcmVkIGxvd2VyIHRo
YW4gOmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5jZXMuCisKKyAgICAgICAgPj4+IGZyb20gcGFja2Fn
aW5nLnZlcnNpb24gaW1wb3J0IFZlcnNpb24sIExlZ2FjeVZlcnNpb24KKyAgICAgICAgPj4+IHYx
ID0gVmVyc2lvbigiMS4wIikKKyAgICAgICAgPj4+IHYyID0gTGVnYWN5VmVyc2lvbigiMS4wIikK
KyAgICAgICAgPj4+IHYxID4gdjIKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gdjMgPSBMZWdh
Y3lWZXJzaW9uKCIxLjMiKQorICAgICAgICA+Pj4gdjEgPiB2MworICAgICAgICBUcnVlCisKKyAg
ICAgICAgQWxzbyBub3RlIHRoYXQgc29tZSBzdHJpbmdzIGFyZSBzdGlsbCB2YWxpZCBQRVAgNDQw
IHN0cmluZ3MgKDpjbGFzczpgVmVyc2lvbmApLCBldmVuIGlmIHRoZXkgbG9vayB2ZXJ5IHNpbWls
YXIgdG8KKyAgICAgICAgb3RoZXIgdmVyc2lvbnMgdGhhdCBhcmUgbm90ICg6Y2xhc3M6YExlZ2Fj
eVZlcnNpb25gKS4gRXhhbXBsZXMgaW5jbHVkZSB2ZXJzaW9ucyB3aXRoIGBQcmUtcmVsZWFzZSBz
cGVsbGluZ2BfIGFuZAorICAgICAgICBgUG9zdC1yZWxlYXNlIHNwZWxsaW5nYF8uCisKKyAgICAg
ICAgPj4+IGZyb20gcGFja2FnaW5nLnZlcnNpb24gaW1wb3J0IHBhcnNlCisgICAgICAgID4+PiB2
MSA9IHBhcnNlKCcwLjkuOGEnKQorICAgICAgICA+Pj4gdjIgPSBwYXJzZSgnMC45LjhiZXRhJykK
KyAgICAgICAgPj4+IHYzID0gcGFyc2UoJzAuOS44cicpCisgICAgICAgID4+PiB2NCA9IHBhcnNl
KCcwLjkuOHJldicpCisgICAgICAgID4+PiB2NSA9IHBhcnNlKCcwLjkuOHQnKQorICAgICAgICA+
Pj4gdjEKKyAgICAgICAgPFZlcnNpb24oJzAuOS44YTAnKT4KKyAgICAgICAgPj4+IHYxLmlzX3By
ZXJlbGVhc2UKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gdjIKKyAgICAgICAgPFZlcnNpb24o
JzAuOS44YjAnKT4KKyAgICAgICAgPj4+IHYyLmlzX3ByZXJlbGVhc2UKKyAgICAgICAgVHJ1ZQor
ICAgICAgICA+Pj4gdjMKKyAgICAgICAgPFZlcnNpb24oJzAuOS44LnBvc3QwJyk+CisgICAgICAg
ID4+PiB2My5pc19wb3N0cmVsZWFzZQorICAgICAgICBUcnVlCisgICAgICAgID4+PiB2NAorICAg
ICAgICA8VmVyc2lvbignMC45LjgucG9zdDAnKT4KKyAgICAgICAgPj4+IHY0LmlzX3Bvc3RyZWxl
YXNlCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IHY1CisgICAgICAgIDxMZWdhY3lWZXJzaW9u
KCcwLjkuOHQnKT4KKyAgICAgICAgPj4+IHY1LmlzX3ByZXJlbGVhc2UKKyAgICAgICAgRmFsc2UK
KyAgICAgICAgPj4+IHY1LmlzX3Bvc3RyZWxlYXNlCisgICAgICAgIEZhbHNlCisKKyAgICAuLiBh
dHRyaWJ1dGU6OiBwdWJsaWMKKworICAgICAgICBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHB1
YmxpYyB2ZXJzaW9uIHBvcnRpb24gb2YgdGhpcworICAgICAgICA6Y2xhc3M6YExlZ2FjeVZlcnNp
b25gLiBUaGlzIHdpbGwgYWx3YXlzIGJlIHRoZSBlbnRpcmUgdmVyc2lvbiBzdHJpbmcuCisKKyAg
ICAuLiBhdHRyaWJ1dGU6OiBiYXNlX3ZlcnNpb24KKworICAgICAgICBBIHN0cmluZyByZXByZXNl
bnRpbmcgdGhlIGJhc2UgdmVyc2lvbiBwb3J0aW9uIG9mIHRoaXMKKyAgICAgICAgOmNsYXNzOmBM
ZWdhY3lWZXJzaW9uYCBpbnN0YW5jZS4gVGhpcyB3aWxsIGFsd2F5cyBiZSB0aGUgZW50aXJlIHZl
cnNpb24KKyAgICAgICAgc3RyaW5nLgorCisgICAgLi4gYXR0cmlidXRlOjogZXBvY2gKKworICAg
ICAgICBUaGlzIHdpbGwgYWx3YXlzIGJlIGBgLTFgYCBzaW5jZSB3aXRob3V0IGBQRVAgNDQwYF8g
d2UgZG8gbm90IGhhdmUgdGhlCisgICAgICAgIGNvbmNlcHQgb2YgdmVyc2lvbiBlcG9jaHMuICBU
aGUgdmFsdWUgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdAorICAgICAgICA6Y2xhc3M6YExlZ2FjeVZl
cnNpb25gIGluc3RhbmNlcyBhbHdheXMgY29tcGFyZSBsZXNzIHRoYW4KKyAgICAgICAgOmNsYXNz
OmBWZXJzaW9uYCBpbnN0YW5jZXMuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiByZWxlYXNlCisKKyAg
ICAgICAgVGhpcyB3aWxsIGFsd2F5cyBiZSBgYE5vbmVgYCBzaW5jZSB3aXRob3V0IGBQRVAgNDQw
YF8gd2UgZG8gbm90IGhhdmUKKyAgICAgICAgdGhlIGNvbmNlcHQgb2YgYSByZWxlYXNlIHNlZ21l
bnQgb3IgaXRzIGNvbXBvbmVudHMuICBJdCBleGlzdHMKKyAgICAgICAgcHJpbWFyaWx5IHRvIGFs
bG93IGEgOmNsYXNzOmBMZWdhY3lWZXJzaW9uYCB0byBiZSB1c2VkIGFzIGEgc3RhbmQgaW4KKyAg
ICAgICAgZm9yIGEgOmNsYXNzOmBWZXJzaW9uYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGxvY2Fs
CisKKyAgICAgICAgVGhpcyB3aWxsIGFsd2F5cyBiZSBgYE5vbmVgYCBzaW5jZSB3aXRob3V0IGBQ
RVAgNDQwYF8gd2UgZG8gbm90IGhhdmUKKyAgICAgICAgdGhlIGNvbmNlcHQgb2YgYSBsb2NhbCB2
ZXJzaW9uLiBJdCBleGlzdHMgcHJpbWFyaWx5IHRvIGFsbG93IGEKKyAgICAgICAgOmNsYXNzOmBM
ZWdhY3lWZXJzaW9uYCB0byBiZSB1c2VkIGFzIGEgc3RhbmQgaW4gZm9yIGEgOmNsYXNzOmBWZXJz
aW9uYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHByZQorCisgICAgICAgIFRoaXMgd2lsbCBhbHdh
eXMgYmUgYGBOb25lYGAgc2luY2Ugd2l0aG91dCBgUEVQIDQ0MGBfIHdlIGRvIG5vdCBoYXZlCisg
ICAgICAgIHRoZSBjb25jZXB0IG9mIGEgcHJlcmVsZWFzZS4gSXQgZXhpc3RzIHByaW1hcmlseSB0
byBhbGxvdyBhCisgICAgICAgIDpjbGFzczpgTGVnYWN5VmVyc2lvbmAgdG8gYmUgdXNlZCBhcyBh
IHN0YW5kIGluIGZvciBhIDpjbGFzczpgVmVyc2lvbmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBp
c19wcmVyZWxlYXNlCisKKyAgICAgICAgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhl
ciB0aGlzIDpjbGFzczpgTGVnYWN5VmVyc2lvbmAKKyAgICAgICAgcmVwcmVzZW50cyBhIHByZXJl
bGVhc2UgYW5kL29yIGRldmVsb3BtZW50IHJlbGVhc2UuICBTaW5jZSB3aXRob3V0CisgICAgICAg
IGBQRVAgNDQwYF8gdGhlcmUgaXMgbm8gY29uY2VwdCBvZiBwcmUgb3IgZGV2IHJlbGVhc2VzIHRo
aXMgd2lsbAorICAgICAgICBhbHdheXMgYmUgYEZhbHNlYCBhbmQgZXhpc3RzIGZvciBjb21wYXRp
YmlsaXR5IHdpdGggOmNsYXNzOmBWZXJzaW9uYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGRldgor
CisgICAgICAgIFRoaXMgd2lsbCBhbHdheXMgYmUgYGBOb25lYGAgc2luY2Ugd2l0aG91dCBgUEVQ
IDQ0MGBfIHdlIGRvIG5vdCBoYXZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mIGEgZGV2ZWxvcG1l
bnQgcmVsZWFzZS4gSXQgZXhpc3RzIHByaW1hcmlseSB0byBhbGxvdyBhCisgICAgICAgIDpjbGFz
czpgTGVnYWN5VmVyc2lvbmAgdG8gYmUgdXNlZCBhcyBhIHN0YW5kIGluIGZvciBhIDpjbGFzczpg
VmVyc2lvbmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBpc19kZXZyZWxlYXNlCisKKyAgICAgICAg
QSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIDpjbGFzczpgTGVnYWN5VmVy
c2lvbmAKKyAgICAgICAgcmVwcmVzZW50cyBhIGRldmVsb3BtZW50IHJlbGVhc2UuICBTaW5jZSB3
aXRob3V0IGBQRVAgNDQwYF8gdGhlcmUgaXMKKyAgICAgICAgbm8gY29uY2VwdCBvZiBkZXYgcmVs
ZWFzZXMgdGhpcyB3aWxsIGFsd2F5cyBiZSBgRmFsc2VgIGFuZCBleGlzdHMgZm9yCisgICAgICAg
IGNvbXBhdGliaWxpdHkgd2l0aCA6Y2xhc3M6YFZlcnNpb25gLgorCisgICAgLi4gYXR0cmlidXRl
OjogcG9zdAorCisgICAgICAgIFRoaXMgd2lsbCBhbHdheXMgYmUgYGBOb25lYGAgc2luY2Ugd2l0
aG91dCBgUEVQIDQ0MGBfIHdlIGRvIG5vdCBoYXZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mIGEg
cG9zdHJlbGVhc2UuIEl0IGV4aXN0cyBwcmltYXJpbHkgdG8gYWxsb3cgYQorICAgICAgICA6Y2xh
c3M6YExlZ2FjeVZlcnNpb25gIHRvIGJlIHVzZWQgYXMgYSBzdGFuZCBpbiBmb3IgYSA6Y2xhc3M6
YFZlcnNpb25gLgorCisgICAgLi4gYXR0cmlidXRlOjogaXNfcG9zdHJlbGVhc2UKKworICAgICAg
ICBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgOmNsYXNzOmBMZWdhY3lW
ZXJzaW9uYAorICAgICAgICByZXByZXNlbnRzIGEgcG9zdC1yZWxlYXNlLiBTaW5jZSB3aXRob3V0
IGBQRVAgNDQwYF8gdGhlcmUgaXMgbm8gY29uY2VwdAorICAgICAgICBvZiBwb3N0LXJlbGVhc2Vz
IHRoaXMgd2lsbCBhbHdheXMgYmUgYGBGYWxzZWBgIGFuZCBleGlzdHMgZm9yCisgICAgICAgIGNv
bXBhdGliaWxpdHkgd2l0aCA6Y2xhc3M6YFZlcnNpb25gLgorCisKKy4uIGV4Y2VwdGlvbjo6IElu
dmFsaWRWZXJzaW9uCisKKyAgICBSYWlzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIDpj
bGFzczpgVmVyc2lvbmAgd2l0aCBhIHZlcnNpb24gc3RyaW5nCisgICAgdGhhdCBkb2VzIG5vdCBj
b25mb3JtIHRvIGBQRVAgNDQwYF8uCisKKworLi4gZGF0YTo6IFZFUlNJT05fUEFUVEVSTgorCisg
ICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gbWF0
Y2ggYSB2YWxpZCB2ZXJzaW9uLgorICAgIFRoZSBwYXR0ZXJuIGlzIG5vdCBhbmNob3JlZCBhdCBl
aXRoZXIgZW5kLCBhbmQgaXMgaW50ZW5kZWQgZm9yIGVtYmVkZGluZworICAgIGluIGxhcmdlciBl
eHByZXNzaW9ucyAoZm9yIGV4YW1wbGUsIG1hdGNoaW5nIGEgdmVyc2lvbiBudW1iZXIgYXMgcGFy
dCBvZgorICAgIGEgZmlsZSBuYW1lKS4gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBzaG91bGQgYmUg
Y29tcGlsZWQgd2l0aCB0aGUKKyAgICBgYHJlLlZFUkJPU0VgYCBhbmQgYGByZS5JR05PUkVDQVNF
YGAgZmxhZ3Mgc2V0LgorCisKKy4uIF9QRVAgNDQwOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rl
di9wZXBzL3BlcC0wNDQwLworLi4gX1ByZS1yZWxlYXNlIHNwZWxsaW5nIDogaHR0cHM6Ly93d3cu
cHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ0MC8jcHJlLXJlbGVhc2Utc3BlbGxpbmcKKy4uIF9Q
b3N0LXJlbGVhc2Ugc3BlbGxpbmcgOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3Bl
cC0wNDQwLyNwb3N0LXJlbGVhc2Utc3BlbGxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
L215cHkuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvbXlweS5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lMTk3MzQ4NTUwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhY2thZ2luZy9teXB5LmluaQpAQCAtMCwwICsxLDIwIEBACitbbXlweV0KK2lnbm9yZV9taXNz
aW5nX2ltcG9ydHMgPSBUcnVlCisKKyMgVGhlIGZvbGxvd2luZyBhcmUgdGhlIGZsYWdzIGVuYWJs
ZWQgYnkgLS1zdHJpY3QKKyMKKyMgTm90ZTogd2Fybl91bnVzZWRfaWdub3JlcyBpcyBGYWxzZSBk
dWUgdG8gaW5jb3JyZWN0IHR5cGVzaGVkIGFubm90YXRpb25zIGZvcgorIyBwbGF0Zm9ybS5tYWNf
dmVyKCkKK3dhcm5fdW51c2VkX2NvbmZpZ3MgPSBUcnVlCitkaXNhbGxvd19zdWJjbGFzc2luZ19h
bnkgPSBUcnVlCitkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVlCitkaXNhbGxvd191bnR5cGVk
X2NhbGxzID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWZzID0gVHJ1ZQorZGlzYWxsb3dfaW5j
b21wbGV0ZV9kZWZzID0gVHJ1ZQorY2hlY2tfdW50eXBlZF9kZWZzID0gVHJ1ZQorZGlzYWxsb3df
dW50eXBlZF9kZWNvcmF0b3JzID0gVHJ1ZQorbm9faW1wbGljaXRfb3B0aW9uYWwgPSBUcnVlCit3
YXJuX3JlZHVuZGFudF9jYXN0cyA9IFRydWUKK3dhcm5fdW51c2VkX2lnbm9yZXMgPSBGYWxzZQor
d2Fybl9yZXR1cm5fYW55ID0gVHJ1ZQorbm9faW1wbGljaXRfcmVleHBvcnQgPSBUcnVlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy9ub3hmaWxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvbm94Zmls
ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc1ODQ1YWI4MDQ3
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL25veGZpbGUucHkKQEAgLTAsMCAr
MSwzMDkgQEAKKyMgbXlweTogZGlzYWxsb3ctdW50eXBlZC1kZWZzPUZhbHNlLCBkaXNhbGxvdy11
bnR5cGVkLWNhbGxzPUZhbHNlCisKK2ltcG9ydCB0aW1lCitpbXBvcnQgcmUKK2ltcG9ydCBvcwor
aW1wb3J0IHN5cworaW1wb3J0IGdsb2IKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBkaWZmbGliCitp
bXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQg
Y29udGV4dGxpYgoraW1wb3J0IHN1YnByb2Nlc3MKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAor
CitpbXBvcnQgbm94CisKK25veC5vcHRpb25zLnNlc3Npb25zID0gWyJsaW50Il0KK25veC5vcHRp
b25zLnJldXNlX2V4aXN0aW5nX3ZpcnR1YWxlbnZzID0gVHJ1ZQorCisKK0Bub3guc2Vzc2lvbihw
eXRob249WyIyLjciLCAiMy40IiwgIjMuNSIsICIzLjYiLCAiMy43IiwgIjMuOCIsICIzLjkiLCAi
cHlweSIsICJweXB5MyJdKQorZGVmIHRlc3RzKHNlc3Npb24pOgorICAgIGRlZiBjb3ZlcmFnZSgq
YXJncyk6CisgICAgICAgIHNlc3Npb24ucnVuKCJweXRob24iLCAiLW0iLCAiY292ZXJhZ2UiLCAq
YXJncykKKworICAgICMgT25jZSBjb3ZlcmFnZSA1IGlzIHVzZWQgdGhlbiBgLmNvdmVyYWdlYCBj
YW4gbW92ZSBpbnRvIGBweXByb2plY3QudG9tbGAuCisgICAgc2Vzc2lvbi5pbnN0YWxsKCJjb3Zl
cmFnZTw1LjAuMCIsICJwcmV0ZW5kIiwgInB5dGVzdCIsICJwaXA+PTkuMC4yIikKKworICAgIGlm
ICJweXB5IiBub3QgaW4gc2Vzc2lvbi5weXRob246CisgICAgICAgIGNvdmVyYWdlKAorICAgICAg
ICAgICAgInJ1biIsCisgICAgICAgICAgICAiLS1zb3VyY2UiLAorICAgICAgICAgICAgInBhY2th
Z2luZy8iLAorICAgICAgICAgICAgIi1tIiwKKyAgICAgICAgICAgICJweXRlc3QiLAorICAgICAg
ICAgICAgIi0tc3RyaWN0IiwKKyAgICAgICAgICAgICpzZXNzaW9uLnBvc2FyZ3MsCisgICAgICAg
ICkKKyAgICAgICAgY292ZXJhZ2UoInJlcG9ydCIsICItbSIsICItLWZhaWwtdW5kZXIiLCAiMTAw
IikKKyAgICBlbHNlOgorICAgICAgICAjIERvbid0IGRvIGNvdmVyYWdlIHRyYWNraW5nIGZvciBQ
eVB5LCBzaW5jZSBpdCdzIFNMT1cuCisgICAgICAgIHNlc3Npb24ucnVuKAorICAgICAgICAgICAg
InB5dGhvbiIsICItbSIsICJweXRlc3QiLCAiLS1jYXB0dXJlPW5vIiwgIi0tc3RyaWN0IiwgKnNl
c3Npb24ucG9zYXJncworICAgICAgICApCisKKworQG5veC5zZXNzaW9uKHB5dGhvbj0iMy45IikK
K2RlZiBsaW50KHNlc3Npb24pOgorICAgICMgUnVuIHRoZSBsaW50ZXJzICh2aWEgcHJlLWNvbW1p
dCkKKyAgICBzZXNzaW9uLmluc3RhbGwoInByZS1jb21taXQiKQorICAgIHNlc3Npb24ucnVuKCJw
cmUtY29tbWl0IiwgInJ1biIsICItLWFsbC1maWxlcyIpCisKKyAgICAjIENoZWNrIHRoZSBkaXN0
cmlidXRpb24KKyAgICBzZXNzaW9uLmluc3RhbGwoImJ1aWxkIiwgInR3aW5lIikKKyAgICBzZXNz
aW9uLnJ1bigicHl0aG9uIiwgIi1tIiwgImJ1aWxkIikKKyAgICBzZXNzaW9uLnJ1bigidHdpbmUi
LCAiY2hlY2siLCAqZ2xvYi5nbG9iKCJkaXN0LyoiKSkKKworCitAbm94LnNlc3Npb24ocHl0aG9u
PSIzLjkiKQorZGVmIGRvY3Moc2Vzc2lvbik6CisgICAgc2h1dGlsLnJtdHJlZSgiZG9jcy9fYnVp
bGQiLCBpZ25vcmVfZXJyb3JzPVRydWUpCisgICAgc2Vzc2lvbi5pbnN0YWxsKCJmdXJvIikKKwor
ICAgIHZhcmlhbnRzID0gWworICAgICAgICAjIChidWlsZGVyLCBkZXN0KQorICAgICAgICAoImh0
bWwiLCAiaHRtbCIpLAorICAgICAgICAoImxhdGV4IiwgImxhdGV4IiksCisgICAgICAgICgiZG9j
dGVzdCIsICJodG1sIiksCisgICAgXQorCisgICAgZm9yIGJ1aWxkZXIsIGRlc3QgaW4gdmFyaWFu
dHM6CisgICAgICAgIHNlc3Npb24ucnVuKAorICAgICAgICAgICAgInNwaGlueC1idWlsZCIsCisg
ICAgICAgICAgICAiLVciLAorICAgICAgICAgICAgIi1iIiwKKyAgICAgICAgICAgIGJ1aWxkZXIs
CisgICAgICAgICAgICAiLWQiLAorICAgICAgICAgICAgImRvY3MvX2J1aWxkL2RvY3RyZWVzLyIg
KyBkZXN0LAorICAgICAgICAgICAgImRvY3MiLCAgIyBzb3VyY2UgZGlyZWN0b3J5CisgICAgICAg
ICAgICAiZG9jcy9fYnVpbGQvIiArIGRlc3QsICAjIG91dHB1dCBkaXJlY3RvcnkKKyAgICAgICAg
KQorCisKK0Bub3guc2Vzc2lvbgorZGVmIHJlbGVhc2Uoc2Vzc2lvbik6CisgICAgcGFja2FnZV9u
YW1lID0gInBhY2thZ2luZyIKKyAgICB2ZXJzaW9uX2ZpbGUgPSBQYXRoKGYie3BhY2thZ2VfbmFt
ZX0vX19pbml0X18ucHkiKQorICAgIGNoYW5nZWxvZ19maWxlID0gUGF0aCgiQ0hBTkdFTE9HLnJz
dCIpCisKKyAgICB0cnk6CisgICAgICAgIHJlbGVhc2VfdmVyc2lvbiA9IF9nZXRfdmVyc2lvbl9m
cm9tX2FyZ3VtZW50cyhzZXNzaW9uLnBvc2FyZ3MpCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMg
ZToKKyAgICAgICAgc2Vzc2lvbi5lcnJvcihmIkludmFsaWQgYXJndW1lbnRzOiB7ZX0iKQorCisg
ICAgIyBDaGVjayBzdGF0ZSBvZiB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZ2l0LgorICAgIF9jaGVj
a193b3JraW5nX2RpcmVjdG9yeV9zdGF0ZShzZXNzaW9uKQorICAgIF9jaGVja19naXRfc3RhdGUo
c2Vzc2lvbiwgcmVsZWFzZV92ZXJzaW9uKQorCisgICAgIyBQcmVwYXJlIGZvciByZWxlYXNlLgor
ICAgIF9jaGFuZ2Vsb2dfdXBkYXRlX3VucmVsZWFzZWRfdGl0bGUocmVsZWFzZV92ZXJzaW9uLCBm
aWxlPWNoYW5nZWxvZ19maWxlKQorICAgIHNlc3Npb24ucnVuKCJnaXQiLCAiYWRkIiwgc3RyKGNo
YW5nZWxvZ19maWxlKSwgZXh0ZXJuYWw9VHJ1ZSkKKyAgICBfYnVtcChzZXNzaW9uLCB2ZXJzaW9u
PXJlbGVhc2VfdmVyc2lvbiwgZmlsZT12ZXJzaW9uX2ZpbGUsIGtpbmQ9InJlbGVhc2UiKQorCisg
ICAgIyBUYWcgdGhlIHJlbGVhc2UgY29tbWl0LgorICAgICMgZm10OiBvZmYKKyAgICBzZXNzaW9u
LnJ1bigKKyAgICAgICAgImdpdCIsICJ0YWciLAorICAgICAgICAiLXMiLCByZWxlYXNlX3ZlcnNp
b24sCisgICAgICAgICItbSIsIGYiUmVsZWFzZSB7cmVsZWFzZV92ZXJzaW9ufSIsCisgICAgICAg
IGV4dGVybmFsPVRydWUsCisgICAgKQorICAgICMgZm10OiBvbgorCisgICAgIyBQcmVwYXJlIGZv
ciBkZXZlbG9wbWVudC4KKyAgICBfY2hhbmdlbG9nX2FkZF91bnJlbGVhc2VkX3RpdGxlKGZpbGU9
Y2hhbmdlbG9nX2ZpbGUpCisgICAgc2Vzc2lvbi5ydW4oImdpdCIsICJhZGQiLCBzdHIoY2hhbmdl
bG9nX2ZpbGUpLCBleHRlcm5hbD1UcnVlKQorCisgICAgbWFqb3IsIG1pbm9yID0gbWFwKGludCwg
cmVsZWFzZV92ZXJzaW9uLnNwbGl0KCIuIikpCisgICAgbmV4dF92ZXJzaW9uID0gZiJ7bWFqb3J9
LnttaW5vciArIDF9LmRldjAiCisgICAgX2J1bXAoc2Vzc2lvbiwgdmVyc2lvbj1uZXh0X3ZlcnNp
b24sIGZpbGU9dmVyc2lvbl9maWxlLCBraW5kPSJkZXZlbG9wbWVudCIpCisKKyAgICAjIENoZWNr
b3V0IHRoZSBnaXQgdGFnLgorICAgIHNlc3Npb24ucnVuKCJnaXQiLCAiY2hlY2tvdXQiLCAiLXEi
LCByZWxlYXNlX3ZlcnNpb24sIGV4dGVybmFsPVRydWUpCisKKyAgICBzZXNzaW9uLmluc3RhbGwo
ImJ1aWxkIiwgInR3aW5lIikKKworICAgICMgQnVpbGQgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICBz
ZXNzaW9uLnJ1bigicHl0aG9uIiwgIi1tIiwgImJ1aWxkIikKKworICAgICMgQ2hlY2sgd2hhdCBm
aWxlcyBhcmUgaW4gZGlzdC8gZm9yIHVwbG9hZC4KKyAgICBmaWxlcyA9IHNvcnRlZChnbG9iLmds
b2IoImRpc3QvKiIpKQorICAgIGV4cGVjdGVkID0gWworICAgICAgICBmImRpc3Qve3BhY2thZ2Vf
bmFtZX0te3JlbGVhc2VfdmVyc2lvbn0tcHkyLnB5My1ub25lLWFueS53aGwiLAorICAgICAgICBm
ImRpc3Qve3BhY2thZ2VfbmFtZX0te3JlbGVhc2VfdmVyc2lvbn0udGFyLmd6IiwKKyAgICBdCisg
ICAgaWYgZmlsZXMgIT0gZXhwZWN0ZWQ6CisgICAgICAgIGRpZmZfZ2VuZXJhdG9yID0gZGlmZmxp
Yi5jb250ZXh0X2RpZmYoCisgICAgICAgICAgICBleHBlY3RlZCwgZmlsZXMsIGZyb21maWxlPSJl
eHBlY3RlZCIsIHRvZmlsZT0iZ290IiwgbGluZXRlcm09IiIKKyAgICAgICAgKQorICAgICAgICBk
aWZmID0gIlxuIi5qb2luKGRpZmZfZ2VuZXJhdG9yKQorICAgICAgICBzZXNzaW9uLmVycm9yKGYi
R290IHRoZSB3cm9uZyBmaWxlczpcbntkaWZmfSIpCisKKyAgICAjIEdldCBiYWNrIG91dCBpbnRv
IG1hc3Rlci4KKyAgICBzZXNzaW9uLnJ1bigiZ2l0IiwgImNoZWNrb3V0IiwgIi1xIiwgIm1hc3Rl
ciIsIGV4dGVybmFsPVRydWUpCisKKyAgICAjIENoZWNrIGFuZCB1cGxvYWQgZGlzdHJpYnV0aW9u
IGZpbGVzLgorICAgIHNlc3Npb24ucnVuKCJ0d2luZSIsICJjaGVjayIsICpmaWxlcykKKworICAg
ICMgVXBsb2FkIHRoZSBkaXN0cmlidXRpb24uCisgICAgc2Vzc2lvbi5ydW4oInR3aW5lIiwgInVw
bG9hZCIsICpmaWxlcykKKworICAgICMgUHVzaCB0aGUgY29tbWl0cyBhbmQgdGFnLgorICAgICMg
Tk9URTogVGhlIGZvbGxvd2luZyBmYWlscyBpZiBwdXNoaW5nIHRvIHRoZSBicmFuY2ggaXMgbm90
IGFsbG93ZWQuIFRoaXMgY2FuCisgICAgIyAgICAgICBoYXBwZW4gb24gR2l0SHViLCBpZiB0aGUg
bWFzdGVyIGJyYW5jaCBpcyBwcm90ZWN0ZWQsIHRoZXJlIGFyZSByZXF1aXJlZAorICAgICMgICAg
ICAgQ0kgY2hlY2tzIGFuZCAiSW5jbHVkZSBhZG1pbmlzdHJhdG9ycyIgaXMgZW5hYmxlZCBvbiB0
aGUgcHJvdGVjdGlvbi4KKyAgICBzZXNzaW9uLnJ1bigiZ2l0IiwgInB1c2giLCAidXBzdHJlYW0i
LCAibWFzdGVyIiwgcmVsZWFzZV92ZXJzaW9uLCBleHRlcm5hbD1UcnVlKQorCisKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgSGVscGVycworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVmIF9n
ZXRfdmVyc2lvbl9mcm9tX2FyZ3VtZW50cyhhcmd1bWVudHMpOgorICAgICIiIkNoZWNrcyB0aGUg
YXJndW1lbnRzIHBhc3NlZCB0byBgbm94IC1zIHJlbGVhc2VgLgorCisgICAgT25seSAxIGFyZ3Vt
ZW50IHRoYXQgbG9va3MgbGlrZSBhIHZlcnNpb24/IFJldHVybiB0aGUgYXJndW1lbnQuCisgICAg
T3RoZXJ3aXNlLCByYWlzZSBhIFZhbHVlRXJyb3IgZGVzY3JpYmluZyB3aGF0J3Mgd3JvbmcuCisg
ICAgIiIiCisgICAgaWYgbGVuKGFyZ3VtZW50cykgIT0gMToKKyAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiRXhwZWN0ZWQgZXhhY3RseSAxIGFyZ3VtZW50IikKKworICAgIHZlcnNpb24gPSBhcmd1
bWVudHNbMF0KKyAgICBwYXJ0cyA9IHZlcnNpb24uc3BsaXQoIi4iKQorCisgICAgaWYgbGVuKHBh
cnRzKSAhPSAyOgorICAgICAgICAjIE5vdCBvZiB0aGUgZm9ybTogWVkuTgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCJub3Qgb2YgdGhlIGZvcm06IFlZLk4iKQorCisgICAgaWYgbm90IGFsbChw
YXJ0LmlzZGlnaXQoKSBmb3IgcGFydCBpbiBwYXJ0cyk6CisgICAgICAgICMgTm90IGFsbCBzZWdt
ZW50cyBhcmUgaW50ZWdlcnMuCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1pbnRlZ2Vy
IHNlZ21lbnRzIikKKworICAgICMgQWxsIGlzIGdvb2QuCisgICAgcmV0dXJuIHZlcnNpb24KKwor
CitkZWYgX2NoZWNrX3dvcmtpbmdfZGlyZWN0b3J5X3N0YXRlKHNlc3Npb24pOgorICAgICIiIkNo
ZWNrIHN0YXRlIG9mIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgcHJpb3IgdG8gbWFraW5nIHRoZSBy
ZWxlYXNlLiIiIgorICAgIHNob3VsZF9ub3RfZXhpc3QgPSBbImJ1aWxkLyIsICJkaXN0LyJdCisK
KyAgICBiYWRfZXhpc3RpbmdfcGF0aHMgPSBsaXN0KGZpbHRlcihvcy5wYXRoLmV4aXN0cywgc2hv
dWxkX25vdF9leGlzdCkpCisgICAgaWYgYmFkX2V4aXN0aW5nX3BhdGhzOgorICAgICAgICBzZXNz
aW9uLmVycm9yKGYiUmVtb3ZlIHsnLCAnLmpvaW4oYmFkX2V4aXN0aW5nX3BhdGhzKX0gYW5kIHRy
eSBhZ2FpbiIpCisKKworZGVmIF9jaGVja19naXRfc3RhdGUoc2Vzc2lvbiwgdmVyc2lvbl90YWcp
OgorICAgICIiIkNoZWNrIHN0YXRlIG9mIHRoZSBnaXQgcmVwb3NpdG9yeSwgcHJpb3IgdG8gbWFr
aW5nIHRoZSByZWxlYXNlLiIiIgorICAgICMgRW5zdXJlIHRoZSB1cHN0cmVhbSByZW1vdGUgcHVz
aGVzIHRvIHRoZSBjb3JyZWN0IFVSTC4KKyAgICBhbGxvd2VkX3Vwc3RyZWFtcyA9IFsKKyAgICAg
ICAgImdpdEBnaXRodWIuY29tOnB5cGEvcGFja2FnaW5nLmdpdCIsCisgICAgICAgICJodHRwczov
L2dpdGh1Yi5jb20vcHlwYS9wYWNrYWdpbmcuZ2l0IiwKKyAgICBdCisgICAgcmVzdWx0ID0gc3Vi
cHJvY2Vzcy5ydW4oCisgICAgICAgIFsiZ2l0IiwgInJlbW90ZSIsICJnZXQtdXJsIiwgIi0tcHVz
aCIsICJ1cHN0cmVhbSJdLAorICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICBl
bmNvZGluZz0idXRmLTgiLAorICAgICkKKyAgICBpZiByZXN1bHQuc3Rkb3V0LnJzdHJpcCgpIG5v
dCBpbiBhbGxvd2VkX3Vwc3RyZWFtczoKKyAgICAgICAgc2Vzc2lvbi5lcnJvcihmImdpdCByZW1v
dGUgYHVwc3RyZWFtYCBpcyBub3Qgb25lIG9mIHthbGxvd2VkX3Vwc3RyZWFtc30iKQorICAgICMg
RW5zdXJlIHdlJ3JlIG9uIG1hc3RlciBicmFuY2ggZm9yIGN1dHRpbmcgYSByZWxlYXNlLgorICAg
IHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAorICAgICAgICBbImdpdCIsICJyZXYtcGFyc2UiLCAi
LS1hYmJyZXYtcmVmIiwgIkhFQUQiXSwKKyAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAg
ICAgICAgZW5jb2Rpbmc9InV0Zi04IiwKKyAgICApCisgICAgaWYgcmVzdWx0LnN0ZG91dCAhPSAi
bWFzdGVyXG4iOgorICAgICAgICBzZXNzaW9uLmVycm9yKGYiTm90IG9uIG1hc3RlciBicmFuY2g6
IHtyZXN1bHQuc3Rkb3V0IXJ9IikKKworICAgICMgRW5zdXJlIHRoZXJlIGFyZSBubyB1bmNvbW1p
dHRlZCBjaGFuZ2VzLgorICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAorICAgICAgICBbImdp
dCIsICJzdGF0dXMiLCAiLS1wb3JjZWxhaW4iXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rp
bmc9InV0Zi04IgorICAgICkKKyAgICBpZiByZXN1bHQuc3Rkb3V0OgorICAgICAgICBwcmludChy
ZXN1bHQuc3Rkb3V0LCBlbmQ9IiIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2Vzc2lvbi5l
cnJvcigiVGhlIHdvcmtpbmcgdHJlZSBoYXMgdW5jb21taXR0ZWQgY2hhbmdlcyIpCisKKyAgICAj
IEVuc3VyZSB0aGlzIHRhZyBkb2Vzbid0IGV4aXN0IGFscmVhZHkuCisgICAgcmVzdWx0ID0gc3Vi
cHJvY2Vzcy5ydW4oCisgICAgICAgIFsiZ2l0IiwgInJldi1wYXJzZSIsIHZlcnNpb25fdGFnXSwg
Y2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9InV0Zi04IgorICAgICkKKyAgICBpZiBub3Qg
cmVzdWx0LnJldHVybmNvZGU6CisgICAgICAgIHNlc3Npb24uZXJyb3IoZiJUYWcgYWxyZWFkeSBl
eGlzdHMhIHt2ZXJzaW9uX3RhZ30gLS0ge3Jlc3VsdC5zdGRvdXQhcn0iKQorCisgICAgIyBCYWNr
IHVwIHRoZSBjdXJyZW50IGdpdCByZWZlcmVuY2UsIGluIGEgdGFnIHRoYXQncyBlYXN5IHRvIGNs
ZWFuIHVwLgorICAgIF9yZWxlYXNlX2JhY2t1cF90YWcgPSAiYXV0by9yZWxlYXNlLXN0YXJ0LSIg
KyBzdHIoaW50KHRpbWUudGltZSgpKSkKKyAgICBzZXNzaW9uLnJ1bigiZ2l0IiwgInRhZyIsIF9y
ZWxlYXNlX2JhY2t1cF90YWcsIGV4dGVybmFsPVRydWUpCisKKworZGVmIF9idW1wKHNlc3Npb24s
ICosIHZlcnNpb24sIGZpbGUsIGtpbmQpOgorICAgIHNlc3Npb24ubG9nKGYiQnVtcCB2ZXJzaW9u
IHRvIHt2ZXJzaW9uIXJ9IikKKyAgICBjb250ZW50cyA9IGZpbGUucmVhZF90ZXh0KCkKKyAgICBu
ZXdfY29udGVudHMgPSByZS5zdWIoCisgICAgICAgICdfX3ZlcnNpb25fXyA9ICIoLispIicsIGYn
X192ZXJzaW9uX18gPSAie3ZlcnNpb259IicsIGNvbnRlbnRzCisgICAgKQorICAgIGZpbGUud3Jp
dGVfdGV4dChuZXdfY29udGVudHMpCisKKyAgICBzZXNzaW9uLmxvZygiZ2l0IGNvbW1pdCIpCisg
ICAgc3VicHJvY2Vzcy5ydW4oWyJnaXQiLCAiYWRkIiwgc3RyKGZpbGUpXSkKKyAgICBzdWJwcm9j
ZXNzLnJ1bihbImdpdCIsICJjb21taXQiLCAiLW0iLCBmIkJ1bXAgZm9yIHtraW5kfSJdKQorCisK
K0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgX3JlcGxhY2VfZmlsZShvcmlnaW5hbF9w
YXRoKToKKyAgICAjIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgorICAgIGZoLCByZXBsYWNlbWVu
dF9wYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3Mu
ZmRvcGVuKGZoLCAidyIpIGFzIHJlcGxhY2VtZW50OgorICAgICAgICAgICAgd2l0aCBvcGVuKG9y
aWdpbmFsX3BhdGgpIGFzIG9yaWdpbmFsOgorICAgICAgICAgICAgICAgIHlpZWxkIG9yaWdpbmFs
LCByZXBsYWNlbWVudAorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHJhaXNlCisgICAg
ZWxzZToKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKG9yaWdpbmFsX3BhdGgsIHJlcGxhY2VtZW50
X3BhdGgpCisgICAgICAgIG9zLnJlbW92ZShvcmlnaW5hbF9wYXRoKQorICAgICAgICBzaHV0aWwu
bW92ZShyZXBsYWNlbWVudF9wYXRoLCBvcmlnaW5hbF9wYXRoKQorCisKK2RlZiBfY2hhbmdlbG9n
X3VwZGF0ZV91bnJlbGVhc2VkX3RpdGxlKHZlcnNpb24sICosIGZpbGUpOgorICAgICIiIlVwZGF0
ZSBhbiAiKnVucmVsZWFzZWQqIiBoZWFkaW5nIHRvICJ7dmVyc2lvbn0gLSB7ZGF0ZX0iICIiIgor
ICAgIHl5eXlfbW1fZGQgPSBkYXRldGltZS5kYXRldGltZS50b2RheSgpLnN0cmZ0aW1lKCIlWS0l
bS0lZCIpCisgICAgdGl0bGUgPSBmInt2ZXJzaW9ufSAtIHt5eXl5X21tX2RkfSIKKworICAgIHdp
dGggX3JlcGxhY2VfZmlsZShmaWxlKSBhcyAob3JpZ2luYWwsIHJlcGxhY2VtZW50KToKKyAgICAg
ICAgZm9yIGxpbmUgaW4gb3JpZ2luYWw6CisgICAgICAgICAgICBpZiBsaW5lID09ICIqdW5yZWxl
YXNlZCpcbiI6CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQud3JpdGUoZiJ7dGl0bGV9XG4i
KQorICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LndyaXRlKGxlbih0aXRsZSkgKiAifiIgKyAi
XG4iKQorICAgICAgICAgICAgICAgICMgU2tpcCBwcm9jZXNzaW5nIHRoZSBuZXh0IGxpbmUgKHRo
ZSBoZWFkaW5nIHVuZGVybGluZSBmb3IgKnVucmVsZWFzZWQqKQorICAgICAgICAgICAgICAgICMg
c2luY2Ugd2UgYWxyZWFkeSB3cm90ZSB0aGUgaGVhZGluZyB1bmRlcmxpbmUuCisgICAgICAgICAg
ICAgICAgbmV4dChvcmlnaW5hbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnQud3JpdGUobGluZSkKKworCitkZWYgX2NoYW5nZWxvZ19hZGRfdW5yZWxlYXNl
ZF90aXRsZSgqLCBmaWxlKToKKyAgICB3aXRoIF9yZXBsYWNlX2ZpbGUoZmlsZSkgYXMgKG9yaWdp
bmFsLCByZXBsYWNlbWVudCk6CisgICAgICAgICMgRHVwbGljYXRlIGZpcnN0IDMgbGluZXMgZnJv
bSB0aGUgb3JpZ2luYWwgZmlsZS4KKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMyk6CisgICAgICAg
ICAgICBsaW5lID0gbmV4dChvcmlnaW5hbCkKKyAgICAgICAgICAgIHJlcGxhY2VtZW50LndyaXRl
KGxpbmUpCisKKyAgICAgICAgIyBXcml0ZSB0aGUgaGVhZGluZy4KKyAgICAgICAgcmVwbGFjZW1l
bnQud3JpdGUoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAg
IiIiXAorICAgICAgICAgICAgICAgICp1bnJlbGVhc2VkKgorICAgICAgICAgICAgICAgIH5+fn5+
fn5+fn5+fgorCisgICAgICAgICAgICAgICAgTm8gdW5yZWxlYXNlZCBjaGFuZ2VzLgorCisgICAg
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICAjIER1
cGxpY2F0ZSBhbGwgdGhlIHJlbWFpbmluZyBsaW5lcy4KKyAgICAgICAgZm9yIGxpbmUgaW4gb3Jp
Z2luYWw6CisgICAgICAgICAgICByZXBsYWNlbWVudC53cml0ZShsaW5lKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFj
a2FnaW5nL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMThmZWNiODY3YTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2Fn
aW5nL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNSBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNl
bnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIu
MCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorIiIiQ29yZSB1dGls
aXRpZXMgZm9yIFB5dGhvbiBwYWNrYWdlcyIiIgorX192ZXJzaW9uX18gPSAiMjAuNyIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9fY29tcGF0LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvcGFja2FnaW5nL19jb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5lNTRiZDRlZGU4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9w
YWNrYWdpbmcvX2NvbXBhdC5weQpAQCAtMCwwICsxLDM4IEBACisjIFRoaXMgZmlsZSBpcyBkdWFs
IGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24K
KyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9u
CisKK2ltcG9ydCBzeXMKKworZnJvbSAuX3R5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORworCitp
ZiBUWVBFX0NIRUNLSU5HOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgZnJvbSB0eXBpbmcgaW1w
b3J0IEFueSwgRGljdCwgVHVwbGUsIFR5cGUKKworCitQWTIgPSBzeXMudmVyc2lvbl9pbmZvWzBd
ID09IDIKK1BZMyA9IHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMworCisjIGZsYWtlODogbm9xYQor
CitpZiBQWTM6CisgICAgc3RyaW5nX3R5cGVzID0gKHN0ciwpCitlbHNlOgorICAgIHN0cmluZ190
eXBlcyA9IChiYXNlc3RyaW5nLCkKKworCitkZWYgd2l0aF9tZXRhY2xhc3MobWV0YSwgKmJhc2Vz
KToKKyAgICAjIHR5cGU6IChUeXBlW0FueV0sIFR1cGxlW1R5cGVbQW55XSwgLi4uXSkgLT4gQW55
CisgICAgIiIiCisgICAgQ3JlYXRlIGEgYmFzZSBjbGFzcyB3aXRoIGEgbWV0YWNsYXNzLgorICAg
ICIiIgorICAgICMgVGhpcyByZXF1aXJlcyBhIGJpdCBvZiBleHBsYW5hdGlvbjogdGhlIGJhc2lj
IGlkZWEgaXMgdG8gbWFrZSBhIGR1bW15CisgICAgIyBtZXRhY2xhc3MgZm9yIG9uZSBsZXZlbCBv
ZiBjbGFzcyBpbnN0YW50aWF0aW9uIHRoYXQgcmVwbGFjZXMgaXRzZWxmIHdpdGgKKyAgICAjIHRo
ZSBhY3R1YWwgbWV0YWNsYXNzLgorICAgIGNsYXNzIG1ldGFjbGFzcyhtZXRhKTogICMgdHlwZTog
aWdub3JlCisgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgdGhpc19iYXNlcywgZCk6Cisg
ICAgICAgICAgICAjIHR5cGU6IChUeXBlW0FueV0sIHN0ciwgVHVwbGVbQW55XSwgRGljdFtBbnks
IEFueV0pIC0+IEFueQorICAgICAgICAgICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIGQpCisK
KyAgICByZXR1cm4gdHlwZS5fX25ld19fKG1ldGFjbGFzcywgInRlbXBvcmFyeV9jbGFzcyIsICgp
LCB7fSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9fc3RydWN0dXJlcy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9fc3RydWN0dXJlcy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwMGQ1YzU1ODhjOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9fc3RydWN0dXJlcy5weQpAQCAtMCwwICsxLDg2
IEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUg
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNv
bXBsZXRlIGRldGFpbHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwg
ZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisKKworY2xhc3MgSW5maW5pdHlUeXBlKG9iamVjdCk6
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAg
ICAgICByZXR1cm4gIkluZmluaXR5IgorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAg
ICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICByZXR1cm4gaGFzaChyZXByKHNlbGYpKQorCisg
ICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4g
Ym9vbAorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIp
OgorICAgICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0
KSAtPiBib29sCisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3Nf
XykKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChvYmpl
Y3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9f
Y2xhc3NfXykKKworICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6
IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX2dlX18o
c2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAg
cmV0dXJuIFRydWUKKworICAgIGRlZiBfX25lZ19fKHNlbGYpOgorICAgICAgICAjIHR5cGU6IChv
YmplY3QpIC0+IE5lZ2F0aXZlSW5maW5pdHlUeXBlCisgICAgICAgIHJldHVybiBOZWdhdGl2ZUlu
ZmluaXR5CisKKworSW5maW5pdHkgPSBJbmZpbml0eVR5cGUoKQorCisKK2NsYXNzIE5lZ2F0aXZl
SW5maW5pdHlUeXBlKG9iamVjdCk6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAj
IHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gIi1JbmZpbml0eSIKKworICAgIGRlZiBf
X2hhc2hfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJu
IGhhc2gocmVwcihzZWxmKSkKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAg
ICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRl
ZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wK
KyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAg
ICAgICAjIHR5cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uo
b3RoZXIsIHNlbGYuX19jbGFzc19fKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gbm90IGlzaW5z
dGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKQorCisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhl
cik6CisgICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChvYmpl
Y3QpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19uZWdfXyhzZWxm
KToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0KSAtPiBJbmZpbml0eVR5cGUKKyAgICAgICAgcmV0
dXJuIEluZmluaXR5CisKKworTmVnYXRpdmVJbmZpbml0eSA9IE5lZ2F0aXZlSW5maW5pdHlUeXBl
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9fdHlwaW5nLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvcGFja2FnaW5nL190eXBpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43N2E4YjkxODVhMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9wYWNrYWdpbmcvX3R5cGluZy5weQpAQCAtMCwwICsxLDQ4IEBACisiIiJGb3IgbmVh
dGx5IGltcGxlbWVudGluZyBzdGF0aWMgdHlwaW5nIGluIHBhY2thZ2luZy4KKworYG15cHlgIC0g
dGhlIHN0YXRpYyB0eXBlIGFuYWx5c2lzIHRvb2wgd2UgdXNlIC0gdXNlcyB0aGUgYHR5cGluZ2Ag
bW9kdWxlLCB3aGljaAorcHJvdmlkZXMgY29yZSBmdW5jdGlvbmFsaXR5IGZ1bmRhbWVudGFsIHRv
IG15cHkncyBmdW5jdGlvbmluZy4KKworR2VuZXJhbGx5LCBgdHlwaW5nYCB3b3VsZCBiZSBpbXBv
cnRlZCBhdCBydW50aW1lIGFuZCB1c2VkIGluIHRoYXQgZmFzaGlvbiAtCitpdCBhY3RzIGFzIGEg
bm8tb3AgYXQgcnVudGltZSBhbmQgZG9lcyBub3QgaGF2ZSBhbnkgcnVuLXRpbWUgb3ZlcmhlYWQg
YnkKK2Rlc2lnbi4KKworQXMgaXQgdHVybnMgb3V0LCBgdHlwaW5nYCBpcyBub3QgdmVuZG9yYWJs
ZSAtIGl0IHVzZXMgc2VwYXJhdGUgc291cmNlcyBmb3IKK1B5dGhvbiAyL1B5dGhvbiAzLiBUaHVz
LCB0aGlzIGNvZGViYXNlIGNhbiBub3QgZXhwZWN0IGl0IHRvIGJlIHByZXNlbnQuCitUbyB3b3Jr
IGFyb3VuZCB0aGlzLCBteXB5IGFsbG93cyB0aGUgdHlwaW5nIGltcG9ydCB0byBiZSBiZWhpbmQg
YSBGYWxzZS15CitvcHRpb25hbCB0byBwcmV2ZW50IGl0IGZyb20gcnVubmluZyBhdCBydW50aW1l
IGFuZCB0eXBlLWNvbW1lbnRzIGNhbiBiZSB1c2VkCit0byByZW1vdmUgdGhlIG5lZWQgZm9yIHRo
ZSB0eXBlcyB0byBiZSBhY2Nlc3NpYmxlIGRpcmVjdGx5IGR1cmluZyBydW50aW1lLgorCitUaGlz
IG1vZHVsZSBwcm92aWRlcyB0aGUgRmFsc2UteSBndWFyZCBpbiBhIG5pY2VseSBuYW1lZCBmYXNo
aW9uIHNvIHRoYXQgYQorY3VyaW91cyBtYWludGFpbmVyIGNhbiByZWFjaCBoZXJlIHRvIHJlYWQg
dGhpcy4KKworSW4gcGFja2FnaW5nLCBhbGwgc3RhdGljLXR5cGluZyByZWxhdGVkIGltcG9ydHMg
c2hvdWxkIGJlIGd1YXJkZWQgYXMgZm9sbG93czoKKworICAgIGZyb20gcGFja2FnaW5nLl90eXBp
bmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKKworICAgIGlmIFRZUEVfQ0hFQ0tJTkc6CisgICAgICAg
IGZyb20gdHlwaW5nIGltcG9ydCAuLi4KKworUmVmOiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L215cHkvaXNzdWVzLzMyMTYKKyIiIgorCitfX2FsbF9fID0gWyJUWVBFX0NIRUNLSU5HIiwgImNh
c3QiXQorCisjIFRoZSBUWVBFX0NIRUNLSU5HIGNvbnN0YW50IGRlZmluZWQgYnkgdGhlIHR5cGlu
ZyBtb2R1bGUgaXMgRmFsc2UgYXQgcnVudGltZQorIyBidXQgVHJ1ZSB3aGlsZSB0eXBlIGNoZWNr
aW5nLgoraWYgRmFsc2U6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBmcm9tIHR5cGluZyBpbXBv
cnQgVFlQRV9DSEVDS0lORworZWxzZToKKyAgICBUWVBFX0NIRUNLSU5HID0gRmFsc2UKKworIyB0
eXBpbmcncyBjYXN0IHN5bnRheCByZXF1aXJlcyBjYWxsaW5nIHR5cGluZy5jYXN0IGF0IHJ1bnRp
bWUsIGJ1dCB3ZSBkb24ndAorIyB3YW50IHRvIGltcG9ydCB0eXBpbmcgYXQgcnVudGltZS4gSGVy
ZSwgd2UgaW5mb3JtIHRoZSB0eXBlIGNoZWNrZXJzIHRoYXQKKyMgd2UncmUgaW1wb3J0aW5nIGB0
eXBpbmcuY2FzdGAgYXMgYGNhc3RgIGFuZCByZS1pbXBsZW1lbnQgdHlwaW5nLmNhc3QncworIyBy
dW50aW1lIGJlaGF2aW9yIGluIGEgYmxvY2sgdGhhdCBpcyBpZ25vcmVkIGJ5IHR5cGUgY2hlY2tl
cnMuCitpZiBUWVBFX0NIRUNLSU5HOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgIyBub3QgZXhl
Y3V0ZWQgYXQgcnVudGltZQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBjYXN0CitlbHNlOgorICAg
ICMgZXhlY3V0ZWQgYXQgcnVudGltZQorICAgIGRlZiBjYXN0KHR5cGVfLCB2YWx1ZSk6ICAjIG5v
cWEKKyAgICAgICAgcmV0dXJuIHZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNr
YWdpbmcvbWFya2Vycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9tYXJrZXJzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODdjZDNmOTU4NTcyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL21hcmtlcnMucHkKQEAgLTAs
MCArMSwzMjggQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vu
c2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQor
IyBmb3IgY29tcGxldGUgZGV0YWlscy4KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IG9wZXJhdG9yCitpbXBv
cnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHN5cworCitmcm9tIHB5cGFyc2luZyBpbXBv
cnQgUGFyc2VFeGNlcHRpb24sIFBhcnNlUmVzdWx0cywgc3RyaW5nU3RhcnQsIHN0cmluZ0VuZAor
ZnJvbSBweXBhcnNpbmcgaW1wb3J0IFplcm9Pck1vcmUsIEdyb3VwLCBGb3J3YXJkLCBRdW90ZWRT
dHJpbmcKK2Zyb20gcHlwYXJzaW5nIGltcG9ydCBMaXRlcmFsIGFzIEwgICMgbm9xYQorCitmcm9t
IC5fY29tcGF0IGltcG9ydCBzdHJpbmdfdHlwZXMKK2Zyb20gLl90eXBpbmcgaW1wb3J0IFRZUEVf
Q0hFQ0tJTkcKK2Zyb20gLnNwZWNpZmllcnMgaW1wb3J0IFNwZWNpZmllciwgSW52YWxpZFNwZWNp
ZmllcgorCitpZiBUWVBFX0NIRUNLSU5HOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwg
VW5pb24KKworICAgIE9wZXJhdG9yID0gQ2FsbGFibGVbW3N0ciwgc3RyXSwgYm9vbF0KKworCitf
X2FsbF9fID0gWworICAgICJJbnZhbGlkTWFya2VyIiwKKyAgICAiVW5kZWZpbmVkQ29tcGFyaXNv
biIsCisgICAgIlVuZGVmaW5lZEVudmlyb25tZW50TmFtZSIsCisgICAgIk1hcmtlciIsCisgICAg
ImRlZmF1bHRfZW52aXJvbm1lbnQiLAorXQorCisKK2NsYXNzIEludmFsaWRNYXJrZXIoVmFsdWVF
cnJvcik6CisgICAgIiIiCisgICAgQW4gaW52YWxpZCBtYXJrZXIgd2FzIGZvdW5kLCB1c2VycyBz
aG91bGQgcmVmZXIgdG8gUEVQIDUwOC4KKyAgICAiIiIKKworCitjbGFzcyBVbmRlZmluZWRDb21w
YXJpc29uKFZhbHVlRXJyb3IpOgorICAgICIiIgorICAgIEFuIGludmFsaWQgb3BlcmF0aW9uIHdh
cyBhdHRlbXB0ZWQgb24gYSB2YWx1ZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKyAgICAiIiIK
KworCitjbGFzcyBVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUoVmFsdWVFcnJvcik6CisgICAgIiIi
CisgICAgQSBuYW1lIHdhcyBhdHRlbXB0ZWQgdG8gYmUgdXNlZCB0aGF0IGRvZXMgbm90IGV4aXN0
IGluc2lkZSBvZiB0aGUKKyAgICBlbnZpcm9ubWVudC4KKyAgICAiIiIKKworCitjbGFzcyBOb2Rl
KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgIyB0eXBl
OiAoQW55KSAtPiBOb25lCisgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorCisgICAgZGVmIF9f
c3RyX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBz
dHIoc2VsZi52YWx1ZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICI8ezB9KHsxIXJ9KT4iLmZvcm1hdChzZWxmLl9f
Y2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQorCisgICAgZGVmIHNlcmlhbGl6ZShzZWxmKToK
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcgorCisKK2NsYXNzIFZhcmlhYmxlKE5vZGUpOgorICAgIGRlZiBzZXJpYWxpemUoc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKwor
CitjbGFzcyBWYWx1ZShOb2RlKToKKyAgICBkZWYgc2VyaWFsaXplKHNlbGYpOgorICAgICAgICAj
IHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gJyJ7MH0iJy5mb3JtYXQoc2VsZikKKwor
CitjbGFzcyBPcChOb2RlKToKKyAgICBkZWYgc2VyaWFsaXplKHNlbGYpOgorICAgICAgICAjIHR5
cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKKworVkFSSUFCTEUgPSAo
CisgICAgTCgiaW1wbGVtZW50YXRpb25fdmVyc2lvbiIpCisgICAgfCBMKCJwbGF0Zm9ybV9weXRo
b25faW1wbGVtZW50YXRpb24iKQorICAgIHwgTCgiaW1wbGVtZW50YXRpb25fbmFtZSIpCisgICAg
fCBMKCJweXRob25fZnVsbF92ZXJzaW9uIikKKyAgICB8IEwoInBsYXRmb3JtX3JlbGVhc2UiKQor
ICAgIHwgTCgicGxhdGZvcm1fdmVyc2lvbiIpCisgICAgfCBMKCJwbGF0Zm9ybV9tYWNoaW5lIikK
KyAgICB8IEwoInBsYXRmb3JtX3N5c3RlbSIpCisgICAgfCBMKCJweXRob25fdmVyc2lvbiIpCisg
ICAgfCBMKCJzeXNfcGxhdGZvcm0iKQorICAgIHwgTCgib3NfbmFtZSIpCisgICAgfCBMKCJvcy5u
YW1lIikgICMgUEVQLTM0NQorICAgIHwgTCgic3lzLnBsYXRmb3JtIikgICMgUEVQLTM0NQorICAg
IHwgTCgicGxhdGZvcm0udmVyc2lvbiIpICAjIFBFUC0zNDUKKyAgICB8IEwoInBsYXRmb3JtLm1h
Y2hpbmUiKSAgIyBQRVAtMzQ1CisgICAgfCBMKCJwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRp
b24iKSAgIyBQRVAtMzQ1CisgICAgfCBMKCJweXRob25faW1wbGVtZW50YXRpb24iKSAgIyB1bmRv
Y3VtZW50ZWQgc2V0dXB0b29scyBsZWdhY3kKKyAgICB8IEwoImV4dHJhIikgICMgUEVQLTUwOAor
KQorQUxJQVNFUyA9IHsKKyAgICAib3MubmFtZSI6ICJvc19uYW1lIiwKKyAgICAic3lzLnBsYXRm
b3JtIjogInN5c19wbGF0Zm9ybSIsCisgICAgInBsYXRmb3JtLnZlcnNpb24iOiAicGxhdGZvcm1f
dmVyc2lvbiIsCisgICAgInBsYXRmb3JtLm1hY2hpbmUiOiAicGxhdGZvcm1fbWFjaGluZSIsCisg
ICAgInBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbiI6ICJwbGF0Zm9ybV9weXRob25faW1w
bGVtZW50YXRpb24iLAorICAgICJweXRob25faW1wbGVtZW50YXRpb24iOiAicGxhdGZvcm1fcHl0
aG9uX2ltcGxlbWVudGF0aW9uIiwKK30KK1ZBUklBQkxFLnNldFBhcnNlQWN0aW9uKGxhbWJkYSBz
LCBsLCB0OiBWYXJpYWJsZShBTElBU0VTLmdldCh0WzBdLCB0WzBdKSkpCisKK1ZFUlNJT05fQ01Q
ID0gKAorICAgIEwoIj09PSIpIHwgTCgiPT0iKSB8IEwoIj49IikgfCBMKCI8PSIpIHwgTCgiIT0i
KSB8IEwoIn49IikgfCBMKCI+IikgfCBMKCI8IikKKykKKworTUFSS0VSX09QID0gVkVSU0lPTl9D
TVAgfCBMKCJub3QgaW4iKSB8IEwoImluIikKK01BUktFUl9PUC5zZXRQYXJzZUFjdGlvbihsYW1i
ZGEgcywgbCwgdDogT3AodFswXSkpCisKK01BUktFUl9WQUxVRSA9IFF1b3RlZFN0cmluZygiJyIp
IHwgUXVvdGVkU3RyaW5nKCciJykKK01BUktFUl9WQUxVRS5zZXRQYXJzZUFjdGlvbihsYW1iZGEg
cywgbCwgdDogVmFsdWUodFswXSkpCisKK0JPT0xPUCA9IEwoImFuZCIpIHwgTCgib3IiKQorCitN
QVJLRVJfVkFSID0gVkFSSUFCTEUgfCBNQVJLRVJfVkFMVUUKKworTUFSS0VSX0lURU0gPSBHcm91
cChNQVJLRVJfVkFSICsgTUFSS0VSX09QICsgTUFSS0VSX1ZBUikKK01BUktFUl9JVEVNLnNldFBh
cnNlQWN0aW9uKGxhbWJkYSBzLCBsLCB0OiB0dXBsZSh0WzBdKSkKKworTFBBUkVOID0gTCgiKCIp
LnN1cHByZXNzKCkKK1JQQVJFTiA9IEwoIikiKS5zdXBwcmVzcygpCisKK01BUktFUl9FWFBSID0g
Rm9yd2FyZCgpCitNQVJLRVJfQVRPTSA9IE1BUktFUl9JVEVNIHwgR3JvdXAoTFBBUkVOICsgTUFS
S0VSX0VYUFIgKyBSUEFSRU4pCitNQVJLRVJfRVhQUiA8PCBNQVJLRVJfQVRPTSArIFplcm9Pck1v
cmUoQk9PTE9QICsgTUFSS0VSX0VYUFIpCisKK01BUktFUiA9IHN0cmluZ1N0YXJ0ICsgTUFSS0VS
X0VYUFIgKyBzdHJpbmdFbmQKKworCitkZWYgX2NvZXJjZV9wYXJzZV9yZXN1bHQocmVzdWx0cyk6
CisgICAgIyB0eXBlOiAoVW5pb25bUGFyc2VSZXN1bHRzLCBMaXN0W0FueV1dKSAtPiBMaXN0W0Fu
eV0KKyAgICBpZiBpc2luc3RhbmNlKHJlc3VsdHMsIFBhcnNlUmVzdWx0cyk6CisgICAgICAgIHJl
dHVybiBbX2NvZXJjZV9wYXJzZV9yZXN1bHQoaSkgZm9yIGkgaW4gcmVzdWx0c10KKyAgICBlbHNl
OgorICAgICAgICByZXR1cm4gcmVzdWx0cworCisKK2RlZiBfZm9ybWF0X21hcmtlcihtYXJrZXIs
IGZpcnN0PVRydWUpOgorICAgICMgdHlwZTogKFVuaW9uW0xpc3Rbc3RyXSwgVHVwbGVbTm9kZSwg
Li4uXSwgc3RyXSwgT3B0aW9uYWxbYm9vbF0pIC0+IHN0cgorCisgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UobWFya2VyLCAobGlzdCwgdHVwbGUsIHN0cmluZ190eXBlcykpCisKKyAgICAjIFNvbWV0aW1l
cyB3ZSBoYXZlIGEgc3RydWN0dXJlIGxpa2UgW1suLi5dXSB3aGljaCBpcyBhIHNpbmdsZSBpdGVt
IGxpc3QKKyAgICAjIHdoZXJlIHRoZSBzaW5nbGUgaXRlbSBpcyBpdHNlbGYgaXQncyBvd24gbGlz
dC4gSW4gdGhhdCBjYXNlIHdlIHdhbnQgc2tpcAorICAgICMgdGhlIHJlc3Qgb2YgdGhpcyBmdW5j
dGlvbiBzbyB0aGF0IHdlIGRvbid0IGdldCBleHRyYW5lb3VzICgpIG9uIHRoZQorICAgICMgb3V0
c2lkZS4KKyAgICBpZiAoCisgICAgICAgIGlzaW5zdGFuY2UobWFya2VyLCBsaXN0KQorICAgICAg
ICBhbmQgbGVuKG1hcmtlcikgPT0gMQorICAgICAgICBhbmQgaXNpbnN0YW5jZShtYXJrZXJbMF0s
IChsaXN0LCB0dXBsZSkpCisgICAgKToKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfbWFya2VyKG1h
cmtlclswXSkKKworICAgIGlmIGlzaW5zdGFuY2UobWFya2VyLCBsaXN0KToKKyAgICAgICAgaW5u
ZXIgPSAoX2Zvcm1hdF9tYXJrZXIobSwgZmlyc3Q9RmFsc2UpIGZvciBtIGluIG1hcmtlcikKKyAg
ICAgICAgaWYgZmlyc3Q6CisgICAgICAgICAgICByZXR1cm4gIiAiLmpvaW4oaW5uZXIpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIigiICsgIiAiLmpvaW4oaW5uZXIpICsgIiki
CisgICAgZWxpZiBpc2luc3RhbmNlKG1hcmtlciwgdHVwbGUpOgorICAgICAgICByZXR1cm4gIiAi
LmpvaW4oW20uc2VyaWFsaXplKCkgZm9yIG0gaW4gbWFya2VyXSkKKyAgICBlbHNlOgorICAgICAg
ICByZXR1cm4gbWFya2VyCisKKworX29wZXJhdG9ycyA9IHsKKyAgICAiaW4iOiBsYW1iZGEgbGhz
LCByaHM6IGxocyBpbiByaHMsCisgICAgIm5vdCBpbiI6IGxhbWJkYSBsaHMsIHJoczogbGhzIG5v
dCBpbiByaHMsCisgICAgIjwiOiBvcGVyYXRvci5sdCwKKyAgICAiPD0iOiBvcGVyYXRvci5sZSwK
KyAgICAiPT0iOiBvcGVyYXRvci5lcSwKKyAgICAiIT0iOiBvcGVyYXRvci5uZSwKKyAgICAiPj0i
OiBvcGVyYXRvci5nZSwKKyAgICAiPiI6IG9wZXJhdG9yLmd0LAorfSAgIyB0eXBlOiBEaWN0W3N0
ciwgT3BlcmF0b3JdCisKKworZGVmIF9ldmFsX29wKGxocywgb3AsIHJocyk6CisgICAgIyB0eXBl
OiAoc3RyLCBPcCwgc3RyKSAtPiBib29sCisgICAgdHJ5OgorICAgICAgICBzcGVjID0gU3BlY2lm
aWVyKCIiLmpvaW4oW29wLnNlcmlhbGl6ZSgpLCByaHNdKSkKKyAgICBleGNlcHQgSW52YWxpZFNw
ZWNpZmllcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBzcGVjLmNv
bnRhaW5zKGxocykKKworICAgIG9wZXIgPSBfb3BlcmF0b3JzLmdldChvcC5zZXJpYWxpemUoKSkg
ICMgdHlwZTogT3B0aW9uYWxbT3BlcmF0b3JdCisgICAgaWYgb3BlciBpcyBOb25lOgorICAgICAg
ICByYWlzZSBVbmRlZmluZWRDb21wYXJpc29uKAorICAgICAgICAgICAgIlVuZGVmaW5lZCB7MCFy
fSBvbiB7MSFyfSBhbmQgezIhcn0uIi5mb3JtYXQob3AsIGxocywgcmhzKQorICAgICAgICApCisK
KyAgICByZXR1cm4gb3BlcihsaHMsIHJocykKKworCitjbGFzcyBVbmRlZmluZWQob2JqZWN0KToK
KyAgICBwYXNzCisKKworX3VuZGVmaW5lZCA9IFVuZGVmaW5lZCgpCisKKworZGVmIF9nZXRfZW52
KGVudmlyb25tZW50LCBuYW1lKToKKyAgICAjIHR5cGU6IChEaWN0W3N0ciwgc3RyXSwgc3RyKSAt
PiBzdHIKKyAgICB2YWx1ZSA9IGVudmlyb25tZW50LmdldChuYW1lLCBfdW5kZWZpbmVkKSAgIyB0
eXBlOiBVbmlvbltzdHIsIFVuZGVmaW5lZF0KKworICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIFVu
ZGVmaW5lZCk6CisgICAgICAgIHJhaXNlIFVuZGVmaW5lZEVudmlyb25tZW50TmFtZSgKKyAgICAg
ICAgICAgICJ7MCFyfSBkb2VzIG5vdCBleGlzdCBpbiBldmFsdWF0aW9uIGVudmlyb25tZW50LiIu
Zm9ybWF0KG5hbWUpCisgICAgICAgICkKKworICAgIHJldHVybiB2YWx1ZQorCisKK2RlZiBfZXZh
bHVhdGVfbWFya2VycyhtYXJrZXJzLCBlbnZpcm9ubWVudCk6CisgICAgIyB0eXBlOiAoTGlzdFtB
bnldLCBEaWN0W3N0ciwgc3RyXSkgLT4gYm9vbAorICAgIGdyb3VwcyA9IFtbXV0gICMgdHlwZTog
TGlzdFtMaXN0W2Jvb2xdXQorCisgICAgZm9yIG1hcmtlciBpbiBtYXJrZXJzOgorICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShtYXJrZXIsIChsaXN0LCB0dXBsZSwgc3RyaW5nX3R5cGVzKSkKKwor
ICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmtlciwgbGlzdCk6CisgICAgICAgICAgICBncm91cHNb
LTFdLmFwcGVuZChfZXZhbHVhdGVfbWFya2VycyhtYXJrZXIsIGVudmlyb25tZW50KSkKKyAgICAg
ICAgZWxpZiBpc2luc3RhbmNlKG1hcmtlciwgdHVwbGUpOgorICAgICAgICAgICAgbGhzLCBvcCwg
cmhzID0gbWFya2VyCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGhzLCBWYXJpYWJsZSk6
CisgICAgICAgICAgICAgICAgbGhzX3ZhbHVlID0gX2dldF9lbnYoZW52aXJvbm1lbnQsIGxocy52
YWx1ZSkKKyAgICAgICAgICAgICAgICByaHNfdmFsdWUgPSByaHMudmFsdWUKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgbGhzX3ZhbHVlID0gbGhzLnZhbHVlCisgICAgICAgICAg
ICAgICAgcmhzX3ZhbHVlID0gX2dldF9lbnYoZW52aXJvbm1lbnQsIHJocy52YWx1ZSkKKworICAg
ICAgICAgICAgZ3JvdXBzWy0xXS5hcHBlbmQoX2V2YWxfb3AobGhzX3ZhbHVlLCBvcCwgcmhzX3Zh
bHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBtYXJrZXIgaW4gWyJhbmQi
LCAib3IiXQorICAgICAgICAgICAgaWYgbWFya2VyID09ICJvciI6CisgICAgICAgICAgICAgICAg
Z3JvdXBzLmFwcGVuZChbXSkKKworICAgIHJldHVybiBhbnkoYWxsKGl0ZW0pIGZvciBpdGVtIGlu
IGdyb3VwcykKKworCitkZWYgZm9ybWF0X2Z1bGxfdmVyc2lvbihpbmZvKToKKyAgICAjIHR5cGU6
IChzeXMuX3ZlcnNpb25faW5mbykgLT4gc3RyCisgICAgdmVyc2lvbiA9ICJ7MC5tYWpvcn0uezAu
bWlub3J9LnswLm1pY3JvfSIuZm9ybWF0KGluZm8pCisgICAga2luZCA9IGluZm8ucmVsZWFzZWxl
dmVsCisgICAgaWYga2luZCAhPSAiZmluYWwiOgorICAgICAgICB2ZXJzaW9uICs9IGtpbmRbMF0g
KyBzdHIoaW5mby5zZXJpYWwpCisgICAgcmV0dXJuIHZlcnNpb24KKworCitkZWYgZGVmYXVsdF9l
bnZpcm9ubWVudCgpOgorICAgICMgdHlwZTogKCkgLT4gRGljdFtzdHIsIHN0cl0KKyAgICBpZiBo
YXNhdHRyKHN5cywgImltcGxlbWVudGF0aW9uIik6CisgICAgICAgICMgSWdub3JpbmcgdGhlIGBz
eXMuaW1wbGVtZW50YXRpb25gIHJlZmVyZW5jZSBmb3IgdHlwZSBjaGVja2luZyBkdWUgdG8KKyAg
ICAgICAgIyBteXB5IG5vdCBsaWtpbmcgdGhhdCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3Qg
aW4gUHl0aG9uIDIuNyB3aGVuCisgICAgICAgICMgcnVuIHdpdGggdGhlIGAtLXB5MjdgIGZsYWcu
CisgICAgICAgIGl2ZXIgPSBmb3JtYXRfZnVsbF92ZXJzaW9uKHN5cy5pbXBsZW1lbnRhdGlvbi52
ZXJzaW9uKSAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgaW1wbGVtZW50YXRpb25fbmFtZSA9IHN5
cy5pbXBsZW1lbnRhdGlvbi5uYW1lICAjIHR5cGU6IGlnbm9yZQorICAgIGVsc2U6CisgICAgICAg
IGl2ZXIgPSAiMCIKKyAgICAgICAgaW1wbGVtZW50YXRpb25fbmFtZSA9ICIiCisKKyAgICByZXR1
cm4geworICAgICAgICAiaW1wbGVtZW50YXRpb25fbmFtZSI6IGltcGxlbWVudGF0aW9uX25hbWUs
CisgICAgICAgICJpbXBsZW1lbnRhdGlvbl92ZXJzaW9uIjogaXZlciwKKyAgICAgICAgIm9zX25h
bWUiOiBvcy5uYW1lLAorICAgICAgICAicGxhdGZvcm1fbWFjaGluZSI6IHBsYXRmb3JtLm1hY2hp
bmUoKSwKKyAgICAgICAgInBsYXRmb3JtX3JlbGVhc2UiOiBwbGF0Zm9ybS5yZWxlYXNlKCksCisg
ICAgICAgICJwbGF0Zm9ybV9zeXN0ZW0iOiBwbGF0Zm9ybS5zeXN0ZW0oKSwKKyAgICAgICAgInBs
YXRmb3JtX3ZlcnNpb24iOiBwbGF0Zm9ybS52ZXJzaW9uKCksCisgICAgICAgICJweXRob25fZnVs
bF92ZXJzaW9uIjogcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwKKyAgICAgICAgInBsYXRmb3Jt
X3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6IHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigp
LAorICAgICAgICAicHl0aG9uX3ZlcnNpb24iOiAiLiIuam9pbihwbGF0Zm9ybS5weXRob25fdmVy
c2lvbl90dXBsZSgpWzoyXSksCisgICAgICAgICJzeXNfcGxhdGZvcm0iOiBzeXMucGxhdGZvcm0s
CisgICAgfQorCisKK2NsYXNzIE1hcmtlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBtYXJrZXIpOgorICAgICAgICAjIHR5cGU6IChzdHIpIC0+IE5vbmUKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc2VsZi5fbWFya2VycyA9IF9jb2VyY2VfcGFyc2VfcmVzdWx0KE1BUktFUi5w
YXJzZVN0cmluZyhtYXJrZXIpKQorICAgICAgICBleGNlcHQgUGFyc2VFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgICAgIGVycl9zdHIgPSAiSW52YWxpZCBtYXJrZXI6IHswIXJ9LCBwYXJzZSBlcnJv
ciBhdCB7MSFyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIG1hcmtlciwgbWFya2VyW2UubG9j
IDogZS5sb2MgKyA4XQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmFpc2UgSW52YWxpZE1h
cmtlcihlcnJfc3RyKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gc3RyCisgICAgICAgIHJldHVybiBfZm9ybWF0X21hcmtlcihzZWxmLl9tYXJrZXJzKQor
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAg
ICAgICByZXR1cm4gIjxNYXJrZXIoezAhcn0pPiIuZm9ybWF0KHN0cihzZWxmKSkKKworICAgIGRl
ZiBldmFsdWF0ZShzZWxmLCBlbnZpcm9ubWVudD1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoT3B0
aW9uYWxbRGljdFtzdHIsIHN0cl1dKSAtPiBib29sCisgICAgICAgICIiIkV2YWx1YXRlIGEgbWFy
a2VyLgorCisgICAgICAgIFJldHVybiB0aGUgYm9vbGVhbiBmcm9tIGV2YWx1YXRpbmcgdGhlIGdp
dmVuIG1hcmtlciBhZ2FpbnN0IHRoZQorICAgICAgICBlbnZpcm9ubWVudC4gZW52aXJvbm1lbnQg
aXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdG8gb3ZlcnJpZGUgYWxsIG9yCisgICAgICAgIHBhcnQg
b2YgdGhlIGRldGVybWluZWQgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIGVudmlyb25tZW50
IGlzIGRldGVybWluZWQgZnJvbSB0aGUgY3VycmVudCBQeXRob24gcHJvY2Vzcy4KKyAgICAgICAg
IiIiCisgICAgICAgIGN1cnJlbnRfZW52aXJvbm1lbnQgPSBkZWZhdWx0X2Vudmlyb25tZW50KCkK
KyAgICAgICAgaWYgZW52aXJvbm1lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjdXJyZW50
X2Vudmlyb25tZW50LnVwZGF0ZShlbnZpcm9ubWVudCkKKworICAgICAgICByZXR1cm4gX2V2YWx1
YXRlX21hcmtlcnMoc2VsZi5fbWFya2VycywgY3VycmVudF9lbnZpcm9ubWVudCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9weS50eXBlZCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Bh
Y2thZ2luZy9weS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3JlcXVp
cmVtZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9yZXF1aXJlbWVudHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMjI2ZTk4NGUyNDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvcmVxdWlyZW1lbnRzLnB5CkBA
IC0wLDAgKzEsMTUxIEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBM
aWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRv
cnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisKK2ltcG9ydCBzdHJpbmcKK2lt
cG9ydCByZQoraW1wb3J0IHN5cworCitmcm9tIHB5cGFyc2luZyBpbXBvcnQgc3RyaW5nU3RhcnQs
IHN0cmluZ0VuZCwgb3JpZ2luYWxUZXh0Rm9yLCBQYXJzZUV4Y2VwdGlvbgorZnJvbSBweXBhcnNp
bmcgaW1wb3J0IFplcm9Pck1vcmUsIFdvcmQsIE9wdGlvbmFsLCBSZWdleCwgQ29tYmluZQorZnJv
bSBweXBhcnNpbmcgaW1wb3J0IExpdGVyYWwgYXMgTCAgIyBub3FhCisKK2Zyb20gLl90eXBpbmcg
aW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gLm1hcmtlcnMgaW1wb3J0IE1BUktFUl9FWFBSLCBN
YXJrZXIKK2Zyb20gLnNwZWNpZmllcnMgaW1wb3J0IExlZ2FjeVNwZWNpZmllciwgU3BlY2lmaWVy
LCBTcGVjaWZpZXJTZXQKKworaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgorICAgIGZyb20g
dXJsbGliIGltcG9ydCBwYXJzZSBhcyB1cmxwYXJzZSAgIyBwcmFnbWE6IG5vIGNvdmVyCitlbHNl
OiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgaW1wb3J0IHVybHBhcnNlCisKKworaWYgVFlQRV9D
SEVDS0lORzogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0
CisKKworY2xhc3MgSW52YWxpZFJlcXVpcmVtZW50KFZhbHVlRXJyb3IpOgorICAgICIiIgorICAg
IEFuIGludmFsaWQgcmVxdWlyZW1lbnQgd2FzIGZvdW5kLCB1c2VycyBzaG91bGQgcmVmZXIgdG8g
UEVQIDUwOC4KKyAgICAiIiIKKworCitBTFBIQU5VTSA9IFdvcmQoc3RyaW5nLmFzY2lpX2xldHRl
cnMgKyBzdHJpbmcuZGlnaXRzKQorCitMQlJBQ0tFVCA9IEwoIlsiKS5zdXBwcmVzcygpCitSQlJB
Q0tFVCA9IEwoIl0iKS5zdXBwcmVzcygpCitMUEFSRU4gPSBMKCIoIikuc3VwcHJlc3MoKQorUlBB
UkVOID0gTCgiKSIpLnN1cHByZXNzKCkKK0NPTU1BID0gTCgiLCIpLnN1cHByZXNzKCkKK1NFTUlD
T0xPTiA9IEwoIjsiKS5zdXBwcmVzcygpCitBVCA9IEwoIkAiKS5zdXBwcmVzcygpCisKK1BVTkNU
VUFUSU9OID0gV29yZCgiLV8uIikKK0lERU5USUZJRVJfRU5EID0gQUxQSEFOVU0gfCAoWmVyb09y
TW9yZShQVU5DVFVBVElPTikgKyBBTFBIQU5VTSkKK0lERU5USUZJRVIgPSBDb21iaW5lKEFMUEhB
TlVNICsgWmVyb09yTW9yZShJREVOVElGSUVSX0VORCkpCisKK05BTUUgPSBJREVOVElGSUVSKCJu
YW1lIikKK0VYVFJBID0gSURFTlRJRklFUgorCitVUkkgPSBSZWdleChyIlteIF0rIikoInVybCIp
CitVUkwgPSBBVCArIFVSSQorCitFWFRSQVNfTElTVCA9IEVYVFJBICsgWmVyb09yTW9yZShDT01N
QSArIEVYVFJBKQorRVhUUkFTID0gKExCUkFDS0VUICsgT3B0aW9uYWwoRVhUUkFTX0xJU1QpICsg
UkJSQUNLRVQpKCJleHRyYXMiKQorCitWRVJTSU9OX1BFUDQ0MCA9IFJlZ2V4KFNwZWNpZmllci5f
cmVnZXhfc3RyLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKK1ZFUlNJT05fTEVHQUNZID0g
UmVnZXgoTGVnYWN5U3BlY2lmaWVyLl9yZWdleF9zdHIsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVD
QVNFKQorCitWRVJTSU9OX09ORSA9IFZFUlNJT05fUEVQNDQwIF4gVkVSU0lPTl9MRUdBQ1kKK1ZF
UlNJT05fTUFOWSA9IENvbWJpbmUoCisgICAgVkVSU0lPTl9PTkUgKyBaZXJvT3JNb3JlKENPTU1B
ICsgVkVSU0lPTl9PTkUpLCBqb2luU3RyaW5nPSIsIiwgYWRqYWNlbnQ9RmFsc2UKKykoIl9yYXdf
c3BlYyIpCitfVkVSU0lPTl9TUEVDID0gT3B0aW9uYWwoKChMUEFSRU4gKyBWRVJTSU9OX01BTlkg
KyBSUEFSRU4pIHwgVkVSU0lPTl9NQU5ZKSkKK19WRVJTSU9OX1NQRUMuc2V0UGFyc2VBY3Rpb24o
bGFtYmRhIHMsIGwsIHQ6IHQuX3Jhd19zcGVjIG9yICIiKQorCitWRVJTSU9OX1NQRUMgPSBvcmln
aW5hbFRleHRGb3IoX1ZFUlNJT05fU1BFQykoInNwZWNpZmllciIpCitWRVJTSU9OX1NQRUMuc2V0
UGFyc2VBY3Rpb24obGFtYmRhIHMsIGwsIHQ6IHRbMV0pCisKK01BUktFUl9FWFBSID0gb3JpZ2lu
YWxUZXh0Rm9yKE1BUktFUl9FWFBSKCkpKCJtYXJrZXIiKQorTUFSS0VSX0VYUFIuc2V0UGFyc2VB
Y3Rpb24oCisgICAgbGFtYmRhIHMsIGwsIHQ6IE1hcmtlcihzW3QuX29yaWdpbmFsX3N0YXJ0IDog
dC5fb3JpZ2luYWxfZW5kXSkKKykKK01BUktFUl9TRVBBUkFUT1IgPSBTRU1JQ09MT04KK01BUktF
UiA9IE1BUktFUl9TRVBBUkFUT1IgKyBNQVJLRVJfRVhQUgorCitWRVJTSU9OX0FORF9NQVJLRVIg
PSBWRVJTSU9OX1NQRUMgKyBPcHRpb25hbChNQVJLRVIpCitVUkxfQU5EX01BUktFUiA9IFVSTCAr
IE9wdGlvbmFsKE1BUktFUikKKworTkFNRURfUkVRVUlSRU1FTlQgPSBOQU1FICsgT3B0aW9uYWwo
RVhUUkFTKSArIChVUkxfQU5EX01BUktFUiB8IFZFUlNJT05fQU5EX01BUktFUikKKworUkVRVUlS
RU1FTlQgPSBzdHJpbmdTdGFydCArIE5BTUVEX1JFUVVJUkVNRU5UICsgc3RyaW5nRW5kCisjIHB5
cGFyc2luZyBpc24ndCB0aHJlYWQgc2FmZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHNvIHdlIGRv
IGl0IGVhZ2VybHksIHNlZQorIyBpc3N1ZSAjMTA0CitSRVFVSVJFTUVOVC5wYXJzZVN0cmluZygi
eFtdIikKKworCitjbGFzcyBSZXF1aXJlbWVudChvYmplY3QpOgorICAgICIiIlBhcnNlIGEgcmVx
dWlyZW1lbnQuCisKKyAgICBQYXJzZSBhIGdpdmVuIHJlcXVpcmVtZW50IHN0cmluZyBpbnRvIGl0
cyBwYXJ0cywgc3VjaCBhcyBuYW1lLCBzcGVjaWZpZXIsCisgICAgVVJMLCBhbmQgZXh0cmFzLiBS
YWlzZXMgSW52YWxpZFJlcXVpcmVtZW50IG9uIGEgYmFkbHktZm9ybWVkIHJlcXVpcmVtZW50Cisg
ICAgc3RyaW5nLgorICAgICIiIgorCisgICAgIyBUT0RPOiBDYW4gd2UgdGVzdCB3aGV0aGVyIHNv
bWV0aGluZyBpcyBjb250YWluZWQgd2l0aGluIGEgcmVxdWlyZW1lbnQ/CisgICAgIyAgICAgICBJ
ZiBzbyBob3cgZG8gd2UgZG8gdGhhdD8gRG8gd2UgbmVlZCB0byB0ZXN0IGFnYWluc3QgdGhlIF9u
YW1lXyBvZgorICAgICMgICAgICAgdGhlIHRoaW5nIGFzIHdlbGwgYXMgdGhlIHZlcnNpb24/IFdo
YXQgYWJvdXQgdGhlIG1hcmtlcnM/CisgICAgIyBUT0RPOiBDYW4gd2Ugbm9ybWFsaXplIHRoZSBu
YW1lIGFuZCBleHRyYSBuYW1lPworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVpcmVtZW50
X3N0cmluZyk6CisgICAgICAgICMgdHlwZTogKHN0cikgLT4gTm9uZQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICByZXEgPSBSRVFVSVJFTUVOVC5wYXJzZVN0cmluZyhyZXF1aXJlbWVudF9zdHJp
bmcpCisgICAgICAgIGV4Y2VwdCBQYXJzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFp
c2UgSW52YWxpZFJlcXVpcmVtZW50KAorICAgICAgICAgICAgICAgICdQYXJzZSBlcnJvciBhdCAi
ezAhcn0iOiB7MX0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRfc3Ry
aW5nW2UubG9jIDogZS5sb2MgKyA4XSwgZS5tc2cKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5uYW1lID0gcmVxLm5hbWUKKyAgICAgICAgaWYgcmVxLnVy
bDoKKyAgICAgICAgICAgIHBhcnNlZF91cmwgPSB1cmxwYXJzZS51cmxwYXJzZShyZXEudXJsKQor
ICAgICAgICAgICAgaWYgcGFyc2VkX3VybC5zY2hlbWUgPT0gImZpbGUiOgorICAgICAgICAgICAg
ICAgIGlmIHVybHBhcnNlLnVybHVucGFyc2UocGFyc2VkX3VybCkgIT0gcmVxLnVybDoKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFJlcXVpcmVtZW50KCJJbnZhbGlkIFVSTCBnaXZl
biIpCisgICAgICAgICAgICBlbGlmIG5vdCAocGFyc2VkX3VybC5zY2hlbWUgYW5kIHBhcnNlZF91
cmwubmV0bG9jKSBvciAoCisgICAgICAgICAgICAgICAgbm90IHBhcnNlZF91cmwuc2NoZW1lIGFu
ZCBub3QgcGFyc2VkX3VybC5uZXRsb2MKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAg
cmFpc2UgSW52YWxpZFJlcXVpcmVtZW50KCJJbnZhbGlkIFVSTDogezB9Ii5mb3JtYXQocmVxLnVy
bCkpCisgICAgICAgICAgICBzZWxmLnVybCA9IHJlcS51cmwKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHNlbGYudXJsID0gTm9uZQorICAgICAgICBzZWxmLmV4dHJhcyA9IHNldChyZXEuZXh0
cmFzLmFzTGlzdCgpIGlmIHJlcS5leHRyYXMgZWxzZSBbXSkKKyAgICAgICAgc2VsZi5zcGVjaWZp
ZXIgPSBTcGVjaWZpZXJTZXQocmVxLnNwZWNpZmllcikKKyAgICAgICAgc2VsZi5tYXJrZXIgPSBy
ZXEubWFya2VyIGlmIHJlcS5tYXJrZXIgZWxzZSBOb25lCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcGFydHMgPSBbc2VsZi5uYW1l
XSAgIyB0eXBlOiBMaXN0W3N0cl0KKworICAgICAgICBpZiBzZWxmLmV4dHJhczoKKyAgICAgICAg
ICAgIHBhcnRzLmFwcGVuZCgiW3swfV0iLmZvcm1hdCgiLCIuam9pbihzb3J0ZWQoc2VsZi5leHRy
YXMpKSkpCisKKyAgICAgICAgaWYgc2VsZi5zcGVjaWZpZXI6CisgICAgICAgICAgICBwYXJ0cy5h
cHBlbmQoc3RyKHNlbGYuc3BlY2lmaWVyKSkKKworICAgICAgICBpZiBzZWxmLnVybDoKKyAgICAg
ICAgICAgIHBhcnRzLmFwcGVuZCgiQCB7MH0iLmZvcm1hdChzZWxmLnVybCkpCisgICAgICAgICAg
ICBpZiBzZWxmLm1hcmtlcjoKKyAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIiAiKQorCisg
ICAgICAgIGlmIHNlbGYubWFya2VyOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCI7IHswfSIu
Zm9ybWF0KHNlbGYubWFya2VyKSkKKworICAgICAgICByZXR1cm4gIiIuam9pbihwYXJ0cykKKwor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAg
ICAgcmV0dXJuICI8UmVxdWlyZW1lbnQoezAhcn0pPiIuZm9ybWF0KHN0cihzZWxmKSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9zcGVjaWZpZXJzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvcGFja2FnaW5nL3NwZWNpZmllcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5hNDJjYmZlZjMzMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy9wYWNrYWdpbmcvc3BlY2lmaWVycy5weQpAQCAtMCwwICsxLDg2NCBAQAorIyBUaGlzIGZp
bGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxz
LgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmlu
dF9mdW5jdGlvbgorCitpbXBvcnQgYWJjCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgaXRlcnRv
b2xzCitpbXBvcnQgcmUKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIC5fY29tcGF0IGltcG9ydCBz
dHJpbmdfdHlwZXMsIHdpdGhfbWV0YWNsYXNzCitmcm9tIC5fdHlwaW5nIGltcG9ydCBUWVBFX0NI
RUNLSU5HCitmcm9tIC51dGlscyBpbXBvcnQgY2Fub25pY2FsaXplX3ZlcnNpb24KK2Zyb20gLnZl
cnNpb24gaW1wb3J0IFZlcnNpb24sIExlZ2FjeVZlcnNpb24sIHBhcnNlCisKK2lmIFRZUEVfQ0hF
Q0tJTkc6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwg
RGljdCwgVW5pb24sIEl0ZXJhYmxlLCBJdGVyYXRvciwgT3B0aW9uYWwsIENhbGxhYmxlLCBUdXBs
ZQorCisgICAgUGFyc2VkVmVyc2lvbiA9IFVuaW9uW1ZlcnNpb24sIExlZ2FjeVZlcnNpb25dCisg
ICAgVW5wYXJzZWRWZXJzaW9uID0gVW5pb25bVmVyc2lvbiwgTGVnYWN5VmVyc2lvbiwgc3RyXQor
ICAgIENhbGxhYmxlT3BlcmF0b3IgPSBDYWxsYWJsZVtbUGFyc2VkVmVyc2lvbiwgc3RyXSwgYm9v
bF0KKworCitjbGFzcyBJbnZhbGlkU3BlY2lmaWVyKFZhbHVlRXJyb3IpOgorICAgICIiIgorICAg
IEFuIGludmFsaWQgc3BlY2lmaWVyIHdhcyBmb3VuZCwgdXNlcnMgc2hvdWxkIHJlZmVyIHRvIFBF
UCA0NDAuCisgICAgIiIiCisKKworY2xhc3MgQmFzZVNwZWNpZmllcih3aXRoX21ldGFjbGFzcyhh
YmMuQUJDTWV0YSwgb2JqZWN0KSk6ICAjIHR5cGU6IGlnbm9yZQorICAgIEBhYmMuYWJzdHJhY3Rt
ZXRob2QKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIK
KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHN0ciByZXByZXNlbnRhdGlvbiBvZiB0
aGlzIFNwZWNpZmllciBsaWtlIG9iamVjdC4gVGhpcworICAgICAgICBzaG91bGQgYmUgcmVwcmVz
ZW50YXRpdmUgb2YgdGhlIFNwZWNpZmllciBpdHNlbGYuCisgICAgICAgICIiIgorCisgICAgQGFi
Yy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBpbnQKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBoYXNoIHZhbHVlIGZv
ciB0aGlzIFNwZWNpZmllciBsaWtlIG9iamVjdC4KKyAgICAgICAgIiIiCisKKyAgICBAYWJjLmFi
c3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlw
ZTogKG9iamVjdCkgLT4gYm9vbAorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIGJvb2xl
YW4gcmVwcmVzZW50aW5nIHdoZXRoZXIgb3Igbm90IHRoZSB0d28gU3BlY2lmaWVyIGxpa2UKKyAg
ICAgICAgb2JqZWN0cyBhcmUgZXF1YWwuCisgICAgICAgICIiIgorCisgICAgQGFiYy5hYnN0cmFj
dG1ldGhvZAorICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChv
YmplY3QpIC0+IGJvb2wKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBib29sZWFuIHJl
cHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdHdvIFNwZWNpZmllciBsaWtlCisgICAgICAg
IG9iamVjdHMgYXJlIG5vdCBlcXVhbC4KKyAgICAgICAgIiIiCisKKyAgICBAYWJjLmFic3RyYWN0
cHJvcGVydHkKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkg
LT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgd2hldGhlciBv
ciBub3QgcHJlLXJlbGVhc2VzIGFzIGEgd2hvbGUgYXJlIGFsbG93ZWQgYnkgdGhpcworICAgICAg
ICBzcGVjaWZpZXIuCisgICAgICAgICIiIgorCisgICAgQHByZXJlbGVhc2VzLnNldHRlcgorICAg
IGRlZiBwcmVyZWxlYXNlcyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICMgdHlwZTogKGJvb2wpIC0+
IE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIFNldHMgd2hldGhlciBvciBub3QgcHJlLXJlbGVh
c2VzIGFzIGEgd2hvbGUgYXJlIGFsbG93ZWQgYnkgdGhpcworICAgICAgICBzcGVjaWZpZXIuCisg
ICAgICAgICIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBjb250YWlucyhz
ZWxmLCBpdGVtLCBwcmVyZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoc3RyLCBPcHRp
b25hbFtib29sXSkgLT4gYm9vbAorICAgICAgICAiIiIKKyAgICAgICAgRGV0ZXJtaW5lcyBpZiB0
aGUgZ2l2ZW4gaXRlbSBpcyBjb250YWluZWQgd2l0aGluIHRoaXMgc3BlY2lmaWVyLgorICAgICAg
ICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmlsdGVyKHNlbGYsIGl0
ZXJhYmxlLCBwcmVyZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVW5w
YXJzZWRWZXJzaW9uXSwgT3B0aW9uYWxbYm9vbF0pIC0+IEl0ZXJhYmxlW1VucGFyc2VkVmVyc2lv
bl0KKyAgICAgICAgIiIiCisgICAgICAgIFRha2VzIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zIGFuZCBm
aWx0ZXJzIHRoZW0gc28gdGhhdCBvbmx5IGl0ZW1zIHdoaWNoCisgICAgICAgIGFyZSBjb250YWlu
ZWQgd2l0aGluIHRoaXMgc3BlY2lmaWVyIGFyZSBhbGxvd2VkIGluIGl0LgorICAgICAgICAiIiIK
KworCitjbGFzcyBfSW5kaXZpZHVhbFNwZWNpZmllcihCYXNlU3BlY2lmaWVyKToKKworICAgIF9v
cGVyYXRvcnMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgc3RyXQorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHNwZWM9IiIsIHByZXJlbGVhc2VzPU5vbmUpOgorICAgICAgICAjIHR5cGU6IChzdHIs
IE9wdGlvbmFsW2Jvb2xdKSAtPiBOb25lCisgICAgICAgIG1hdGNoID0gc2VsZi5fcmVnZXguc2Vh
cmNoKHNwZWMpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgIHJhaXNlIEludmFs
aWRTcGVjaWZpZXIoIkludmFsaWQgc3BlY2lmaWVyOiAnezB9JyIuZm9ybWF0KHNwZWMpKQorCisg
ICAgICAgIHNlbGYuX3NwZWMgPSAoCisgICAgICAgICAgICBtYXRjaC5ncm91cCgib3BlcmF0b3Ii
KS5zdHJpcCgpLAorICAgICAgICAgICAgbWF0Y2guZ3JvdXAoInZlcnNpb24iKS5zdHJpcCgpLAor
ICAgICAgICApICAjIHR5cGU6IFR1cGxlW3N0ciwgc3RyXQorCisgICAgICAgICMgU3RvcmUgd2hl
dGhlciBvciBub3QgdGhpcyBTcGVjaWZpZXIgc2hvdWxkIGFjY2VwdCBwcmVyZWxlYXNlcworICAg
ICAgICBzZWxmLl9wcmVyZWxlYXNlcyA9IHByZXJlbGVhc2VzCisKKyAgICBkZWYgX19yZXByX18o
c2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHByZSA9ICgKKyAgICAg
ICAgICAgICIsIHByZXJlbGVhc2VzPXswIXJ9Ii5mb3JtYXQoc2VsZi5wcmVyZWxlYXNlcykKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3ByZXJlbGVhc2VzIGlzIG5vdCBOb25lCisgICAgICAgICAgICBl
bHNlICIiCisgICAgICAgICkKKworICAgICAgICByZXR1cm4gIjx7MH0oezEhcn17Mn0pPiIuZm9y
bWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZiksIHByZSkKKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4g
InswfXsxfSIuZm9ybWF0KCpzZWxmLl9zcGVjKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9j
YW5vbmljYWxfc3BlYyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtzdHIsIFVu
aW9uW1ZlcnNpb24sIHN0cl1dCisgICAgICAgIHJldHVybiBzZWxmLl9zcGVjWzBdLCBjYW5vbmlj
YWxpemVfdmVyc2lvbihzZWxmLl9zcGVjWzFdKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgor
ICAgICAgICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9jYW5v
bmljYWxfc3BlYykKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5
cGU6IChvYmplY3QpIC0+IGJvb2wKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyaW5n
X3R5cGVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvdGhlciA9IHNlbGYu
X19jbGFzc19fKHN0cihvdGhlcikpCisgICAgICAgICAgICBleGNlcHQgSW52YWxpZFNwZWNpZmll
cjoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgZWxpZiBu
b3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAgICAgcmV0dXJu
IE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nhbm9uaWNhbF9zcGVjID09
IG90aGVyLl9jYW5vbmljYWxfc3BlYworCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gYm9vbAorICAgICAgICBpZiBpc2luc3RhbmNlKG90
aGVyLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG90
aGVyID0gc2VsZi5fX2NsYXNzX18oc3RyKG90aGVyKSkKKyAgICAgICAgICAgIGV4Y2VwdCBJbnZh
bGlkU3BlY2lmaWVyOgorICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAg
ICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAg
ICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICByZXR1cm4gc2VsZi5fc3BlYyAh
PSBvdGhlci5fc3BlYworCisgICAgZGVmIF9nZXRfb3BlcmF0b3Ioc2VsZiwgb3ApOgorICAgICAg
ICAjIHR5cGU6IChzdHIpIC0+IENhbGxhYmxlT3BlcmF0b3IKKyAgICAgICAgb3BlcmF0b3JfY2Fs
bGFibGUgPSBnZXRhdHRyKAorICAgICAgICAgICAgc2VsZiwgIl9jb21wYXJlX3swfSIuZm9ybWF0
KHNlbGYuX29wZXJhdG9yc1tvcF0pCisgICAgICAgICkgICMgdHlwZTogQ2FsbGFibGVPcGVyYXRv
cgorICAgICAgICByZXR1cm4gb3BlcmF0b3JfY2FsbGFibGUKKworICAgIGRlZiBfY29lcmNlX3Zl
cnNpb24oc2VsZiwgdmVyc2lvbik6CisgICAgICAgICMgdHlwZTogKFVucGFyc2VkVmVyc2lvbikg
LT4gUGFyc2VkVmVyc2lvbgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2ZXJzaW9uLCAoTGVn
YWN5VmVyc2lvbiwgVmVyc2lvbikpOgorICAgICAgICAgICAgdmVyc2lvbiA9IHBhcnNlKHZlcnNp
b24pCisgICAgICAgIHJldHVybiB2ZXJzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgb3Bl
cmF0b3Ioc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBz
ZWxmLl9zcGVjWzBdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNbMV0KKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwcmVyZWxlYXNlcyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBPcHRpb25hbFtib29sXQorICAgICAgICByZXR1cm4gc2VsZi5fcHJlcmVsZWFzZXMK
KworICAgIEBwcmVyZWxlYXNlcy5zZXR0ZXIKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZiwgdmFs
dWUpOgorICAgICAgICAjIHR5cGU6IChib29sKSAtPiBOb25lCisgICAgICAgIHNlbGYuX3ByZXJl
bGVhc2VzID0gdmFsdWUKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAg
ICAgICMgdHlwZTogKHN0cikgLT4gYm9vbAorICAgICAgICByZXR1cm4gc2VsZi5jb250YWlucyhp
dGVtKQorCisgICAgZGVmIGNvbnRhaW5zKHNlbGYsIGl0ZW0sIHByZXJlbGVhc2VzPU5vbmUpOgor
ICAgICAgICAjIHR5cGU6IChVbnBhcnNlZFZlcnNpb24sIE9wdGlvbmFsW2Jvb2xdKSAtPiBib29s
CisKKyAgICAgICAgIyBEZXRlcm1pbmUgaWYgcHJlcmVsZWFzZXMgYXJlIHRvIGJlIGFsbG93ZWQg
b3Igbm90LgorICAgICAgICBpZiBwcmVyZWxlYXNlcyBpcyBOb25lOgorICAgICAgICAgICAgcHJl
cmVsZWFzZXMgPSBzZWxmLnByZXJlbGVhc2VzCisKKyAgICAgICAgIyBOb3JtYWxpemUgaXRlbSB0
byBhIFZlcnNpb24gb3IgTGVnYWN5VmVyc2lvbiwgdGhpcyBhbGxvd3MgdXMgdG8gaGF2ZQorICAg
ICAgICAjIGEgc2hvcnRjdXQgZm9yIGBgIjIuMCIgaW4gU3BlY2lmaWVyKCI+PTIiKQorICAgICAg
ICBub3JtYWxpemVkX2l0ZW0gPSBzZWxmLl9jb2VyY2VfdmVyc2lvbihpdGVtKQorCisgICAgICAg
ICMgRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBiZSBzdXBwb3J0aW5nIHByZXJlbGVhc2VzIGluIHRo
aXMgc3BlY2lmaWVyCisgICAgICAgICMgb3Igbm90LCBpZiB3ZSBkbyBub3Qgc3VwcG9ydCBwcmVy
ZWxlYXNlcyB0aGFuIHdlIGNhbiBzaG9ydCBjaXJjdWl0CisgICAgICAgICMgbG9naWMgaWYgdGhp
cyB2ZXJzaW9uIGlzIGEgcHJlcmVsZWFzZXMuCisgICAgICAgIGlmIG5vcm1hbGl6ZWRfaXRlbS5p
c19wcmVyZWxlYXNlIGFuZCBub3QgcHJlcmVsZWFzZXM6CisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgICAgICAjIEFjdHVhbGx5IGRvIHRoZSBjb21wYXJpc29uIHRvIGRldGVybWluZSBp
ZiB0aGlzIGl0ZW0gaXMgY29udGFpbmVkCisgICAgICAgICMgd2l0aGluIHRoaXMgU3BlY2lmaWVy
IG9yIG5vdC4KKyAgICAgICAgb3BlcmF0b3JfY2FsbGFibGUgPSBzZWxmLl9nZXRfb3BlcmF0b3Io
c2VsZi5vcGVyYXRvcikgICMgdHlwZTogQ2FsbGFibGVPcGVyYXRvcgorICAgICAgICByZXR1cm4g
b3BlcmF0b3JfY2FsbGFibGUobm9ybWFsaXplZF9pdGVtLCBzZWxmLnZlcnNpb24pCisKKyAgICBk
ZWYgZmlsdGVyKHNlbGYsIGl0ZXJhYmxlLCBwcmVyZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0
eXBlOiAoSXRlcmFibGVbVW5wYXJzZWRWZXJzaW9uXSwgT3B0aW9uYWxbYm9vbF0pIC0+IEl0ZXJh
YmxlW1VucGFyc2VkVmVyc2lvbl0KKworICAgICAgICB5aWVsZGVkID0gRmFsc2UKKyAgICAgICAg
Zm91bmRfcHJlcmVsZWFzZXMgPSBbXQorCisgICAgICAgIGt3ID0geyJwcmVyZWxlYXNlcyI6IHBy
ZXJlbGVhc2VzIGlmIHByZXJlbGVhc2VzIGlzIG5vdCBOb25lIGVsc2UgVHJ1ZX0KKworICAgICAg
ICAjIEF0dGVtcHQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdmFsdWVzIGluIHRoZSBpdGVyYWJs
ZSBhbmQgaWYgYW55IG9mCisgICAgICAgICMgdGhlbSBtYXRjaCwgeWllbGQgdGhlbS4KKyAgICAg
ICAgZm9yIHZlcnNpb24gaW4gaXRlcmFibGU6CisgICAgICAgICAgICBwYXJzZWRfdmVyc2lvbiA9
IHNlbGYuX2NvZXJjZV92ZXJzaW9uKHZlcnNpb24pCisKKyAgICAgICAgICAgIGlmIHNlbGYuY29u
dGFpbnMocGFyc2VkX3ZlcnNpb24sICoqa3cpOgorICAgICAgICAgICAgICAgICMgSWYgb3VyIHZl
cnNpb24gaXMgYSBwcmVyZWxlYXNlLCBhbmQgd2Ugd2VyZSBub3Qgc2V0IHRvIGFsbG93CisgICAg
ICAgICAgICAgICAgIyBwcmVyZWxlYXNlcywgdGhlbiB3ZSdsbCBzdG9yZSBpdCBmb3IgbGF0ZXIg
aW5jYXNlIG5vdGhpbmcKKyAgICAgICAgICAgICAgICAjIGVsc2UgbWF0Y2hlcyB0aGlzIHNwZWNp
Zmllci4KKyAgICAgICAgICAgICAgICBpZiBwYXJzZWRfdmVyc2lvbi5pc19wcmVyZWxlYXNlIGFu
ZCBub3QgKAorICAgICAgICAgICAgICAgICAgICBwcmVyZWxlYXNlcyBvciBzZWxmLnByZXJlbGVh
c2VzCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgZm91bmRfcHJlcmVs
ZWFzZXMuYXBwZW5kKHZlcnNpb24pCisgICAgICAgICAgICAgICAgIyBFaXRoZXIgdGhpcyBpcyBu
b3QgYSBwcmVyZWxlYXNlLCBvciB3ZSBzaG91bGQgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAg
IyBhY2NlcHRpbmcgcHJlcmVsZWFzZXMgZnJvbSB0aGUgYmVnaW5uaW5nLgorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkZWQgPSBUcnVlCisgICAgICAgICAg
ICAgICAgICAgIHlpZWxkIHZlcnNpb24KKworICAgICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGl0ZXJh
dGVkIG92ZXIgZXZlcnl0aGluZywgZGV0ZXJtaW5lIGlmIHdlJ3ZlIHlpZWxkZWQKKyAgICAgICAg
IyBhbnkgdmFsdWVzLCBhbmQgaWYgd2UgaGF2ZSBub3QgYW5kIHdlIGhhdmUgYW55IHByZXJlbGVh
c2VzIHN0b3JlZCB1cAorICAgICAgICAjIHRoZW4gd2Ugd2lsbCBnbyBhaGVhZCBhbmQgeWllbGQg
dGhlIHByZXJlbGVhc2VzLgorICAgICAgICBpZiBub3QgeWllbGRlZCBhbmQgZm91bmRfcHJlcmVs
ZWFzZXM6CisgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBmb3VuZF9wcmVyZWxlYXNlczoKKyAg
ICAgICAgICAgICAgICB5aWVsZCB2ZXJzaW9uCisKKworY2xhc3MgTGVnYWN5U3BlY2lmaWVyKF9J
bmRpdmlkdWFsU3BlY2lmaWVyKToKKworICAgIF9yZWdleF9zdHIgPSByIiIiCisgICAgICAgICg/
UDxvcGVyYXRvcj4oPT18IT18PD18Pj18PHw+KSkKKyAgICAgICAgXHMqCisgICAgICAgICg/UDx2
ZXJzaW9uPgorICAgICAgICAgICAgW14sO1xzKV0qICMgU2luY2UgdGhpcyBpcyBhICJsZWdhY3ki
IHNwZWNpZmllciwgYW5kIHRoZSB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgIyBzdHJp
bmcgY2FuIGJlIGp1c3QgYWJvdXQgYW55dGhpbmcsIHdlIG1hdGNoIGV2ZXJ5dGhpbmcKKyAgICAg
ICAgICAgICAgICAgICAgICAjIGV4Y2VwdCBmb3Igd2hpdGVzcGFjZSwgYSBzZW1pLWNvbG9uIGZv
ciBtYXJrZXIgc3VwcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAjIGEgY2xvc2luZyBwYXJl
biBzaW5jZSB2ZXJzaW9ucyBjYW4gYmUgZW5jbG9zZWQgaW4KKyAgICAgICAgICAgICAgICAgICAg
ICAjIHRoZW0sIGFuZCBhIGNvbW1hIHNpbmNlIGl0J3MgYSB2ZXJzaW9uIHNlcGFyYXRvci4KKyAg
ICAgICAgKQorICAgICAgICAiIiIKKworICAgIF9yZWdleCA9IHJlLmNvbXBpbGUociJeXHMqIiAr
IF9yZWdleF9zdHIgKyByIlxzKiQiLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKKworICAg
IF9vcGVyYXRvcnMgPSB7CisgICAgICAgICI9PSI6ICJlcXVhbCIsCisgICAgICAgICIhPSI6ICJu
b3RfZXF1YWwiLAorICAgICAgICAiPD0iOiAibGVzc190aGFuX2VxdWFsIiwKKyAgICAgICAgIj49
IjogImdyZWF0ZXJfdGhhbl9lcXVhbCIsCisgICAgICAgICI8IjogImxlc3NfdGhhbiIsCisgICAg
ICAgICI+IjogImdyZWF0ZXJfdGhhbiIsCisgICAgfQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHNwZWM9IiIsIHByZXJlbGVhc2VzPU5vbmUpOgorICAgICAgICAjIHR5cGU6IChzdHIsIE9wdGlv
bmFsW2Jvb2xdKSAtPiBOb25lCisgICAgICAgIHN1cGVyKExlZ2FjeVNwZWNpZmllciwgc2VsZiku
X19pbml0X18oc3BlYywgcHJlcmVsZWFzZXMpCisKKyAgICAgICAgd2FybmluZ3Mud2FybigKKyAg
ICAgICAgICAgICJDcmVhdGluZyBhIExlZ2FjeVZlcnNpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBh
bmQgd2lsbCBiZSAiCisgICAgICAgICAgICAicmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxl
YXNlIiwKKyAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgKQorCisgICAg
ZGVmIF9jb2VyY2VfdmVyc2lvbihzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgIyB0eXBlOiAoVW5p
b25bUGFyc2VkVmVyc2lvbiwgc3RyXSkgLT4gTGVnYWN5VmVyc2lvbgorICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZSh2ZXJzaW9uLCBMZWdhY3lWZXJzaW9uKToKKyAgICAgICAgICAgIHZlcnNpb24g
PSBMZWdhY3lWZXJzaW9uKHN0cih2ZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIHZlcnNpb24KKwor
ICAgIGRlZiBfY29tcGFyZV9lcXVhbChzZWxmLCBwcm9zcGVjdGl2ZSwgc3BlYyk6CisgICAgICAg
ICMgdHlwZTogKExlZ2FjeVZlcnNpb24sIHN0cikgLT4gYm9vbAorICAgICAgICByZXR1cm4gcHJv
c3BlY3RpdmUgPT0gc2VsZi5fY29lcmNlX3ZlcnNpb24oc3BlYykKKworICAgIGRlZiBfY29tcGFy
ZV9ub3RfZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWMpOgorICAgICAgICAjIHR5cGU6IChM
ZWdhY3lWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlICE9
IHNlbGYuX2NvZXJjZV92ZXJzaW9uKHNwZWMpCisKKyAgICBkZWYgX2NvbXBhcmVfbGVzc190aGFu
X2VxdWFsKHNlbGYsIHByb3NwZWN0aXZlLCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoTGVnYWN5
VmVyc2lvbiwgc3RyKSAtPiBib29sCisgICAgICAgIHJldHVybiBwcm9zcGVjdGl2ZSA8PSBzZWxm
Ll9jb2VyY2VfdmVyc2lvbihzcGVjKQorCisgICAgZGVmIF9jb21wYXJlX2dyZWF0ZXJfdGhhbl9l
cXVhbChzZWxmLCBwcm9zcGVjdGl2ZSwgc3BlYyk6CisgICAgICAgICMgdHlwZTogKExlZ2FjeVZl
cnNpb24sIHN0cikgLT4gYm9vbAorICAgICAgICByZXR1cm4gcHJvc3BlY3RpdmUgPj0gc2VsZi5f
Y29lcmNlX3ZlcnNpb24oc3BlYykKKworICAgIGRlZiBfY29tcGFyZV9sZXNzX3RoYW4oc2VsZiwg
cHJvc3BlY3RpdmUsIHNwZWMpOgorICAgICAgICAjIHR5cGU6IChMZWdhY3lWZXJzaW9uLCBzdHIp
IC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlIDwgc2VsZi5fY29lcmNlX3ZlcnNp
b24oc3BlYykKKworICAgIGRlZiBfY29tcGFyZV9ncmVhdGVyX3RoYW4oc2VsZiwgcHJvc3BlY3Rp
dmUsIHNwZWMpOgorICAgICAgICAjIHR5cGU6IChMZWdhY3lWZXJzaW9uLCBzdHIpIC0+IGJvb2wK
KyAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlID4gc2VsZi5fY29lcmNlX3ZlcnNpb24oc3BlYykK
KworCitkZWYgX3JlcXVpcmVfdmVyc2lvbl9jb21wYXJlKAorICAgIGZuLCAgIyB0eXBlOiAoQ2Fs
bGFibGVbW1NwZWNpZmllciwgUGFyc2VkVmVyc2lvbiwgc3RyXSwgYm9vbF0pCispOgorICAgICMg
dHlwZTogKC4uLikgLT4gQ2FsbGFibGVbW1NwZWNpZmllciwgUGFyc2VkVmVyc2lvbiwgc3RyXSwg
Ym9vbF0KKyAgICBAZnVuY3Rvb2xzLndyYXBzKGZuKQorICAgIGRlZiB3cmFwcGVkKHNlbGYsIHBy
b3NwZWN0aXZlLCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoU3BlY2lmaWVyLCBQYXJzZWRWZXJz
aW9uLCBzdHIpIC0+IGJvb2wKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocHJvc3BlY3RpdmUs
IFZlcnNpb24pOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBmbihz
ZWxmLCBwcm9zcGVjdGl2ZSwgc3BlYykKKworICAgIHJldHVybiB3cmFwcGVkCisKKworY2xhc3Mg
U3BlY2lmaWVyKF9JbmRpdmlkdWFsU3BlY2lmaWVyKToKKworICAgIF9yZWdleF9zdHIgPSByIiIi
CisgICAgICAgICg/UDxvcGVyYXRvcj4ofj18PT18IT18PD18Pj18PHw+fD09PSkpCisgICAgICAg
ICg/UDx2ZXJzaW9uPgorICAgICAgICAgICAgKD86CisgICAgICAgICAgICAgICAgIyBUaGUgaWRl
bnRpdHkgb3BlcmF0b3JzIGFsbG93IGZvciBhbiBlc2NhcGUgaGF0Y2ggdGhhdCB3aWxsCisgICAg
ICAgICAgICAgICAgIyBkbyBhbiBleGFjdCBzdHJpbmcgbWF0Y2ggb2YgdGhlIHZlcnNpb24geW91
IHdpc2ggdG8gaW5zdGFsbC4KKyAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBub3QgYmUgcGFy
c2VkIGJ5IFBFUCA0NDAgYW5kIHdlIGNhbm5vdCBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAj
IGFueSBzZW1hbnRpYyBtZWFuaW5nIGZyb20gaXQuIFRoaXMgb3BlcmF0b3IgaXMgZGlzY291cmFn
ZWQKKyAgICAgICAgICAgICAgICAjIGJ1dCBpbmNsdWRlZCBlbnRpcmVseSBhcyBhbiBlc2NhcGUg
aGF0Y2guCisgICAgICAgICAgICAgICAgKD88PT09PSkgICMgT25seSBtYXRjaCBmb3IgdGhlIGlk
ZW50aXR5IG9wZXJhdG9yCisgICAgICAgICAgICAgICAgXHMqCisgICAgICAgICAgICAgICAgW15c
c10qICAgICMgV2UganVzdCBtYXRjaCBldmVyeXRoaW5nLCBleGNlcHQgZm9yIHdoaXRlc3BhY2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBhcmUgb25seSB0ZXN0aW5nIGZv
ciBzdHJpY3QgaWRlbnRpdHkuCisgICAgICAgICAgICApCisgICAgICAgICAgICB8CisgICAgICAg
ICAgICAoPzoKKyAgICAgICAgICAgICAgICAjIFRoZSAobm9uKWVxdWFsaXR5IG9wZXJhdG9ycyBh
bGxvdyBmb3Igd2lsZCBjYXJkIGFuZCBsb2NhbAorICAgICAgICAgICAgICAgICMgdmVyc2lvbnMg
dG8gYmUgc3BlY2lmaWVkIHNvIHdlIGhhdmUgdG8gZGVmaW5lIHRoZXNlIHR3bworICAgICAgICAg
ICAgICAgICMgb3BlcmF0b3JzIHNlcGFyYXRlbHkgdG8gZW5hYmxlIHRoYXQuCisgICAgICAgICAg
ICAgICAgKD88PT09fCE9KSAgICAgICAgICAgICMgT25seSBtYXRjaCBmb3IgZXF1YWxzIGFuZCBu
b3QgZXF1YWxzCisKKyAgICAgICAgICAgICAgICBccyoKKyAgICAgICAgICAgICAgICB2PworICAg
ICAgICAgICAgICAgICg/OlswLTldKyEpPyAgICAgICAgICAjIGVwb2NoCisgICAgICAgICAgICAg
ICAgWzAtOV0rKD86XC5bMC05XSspKiAgICMgcmVsZWFzZQorICAgICAgICAgICAgICAgICg/OiAg
ICAgICAgICAgICAgICAgICAjIHByZSByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgIFstX1wu
XT8KKyAgICAgICAgICAgICAgICAgICAgKGF8YnxjfHJjfGFscGhhfGJldGF8cHJlfHByZXZpZXcp
CisgICAgICAgICAgICAgICAgICAgIFstX1wuXT8KKyAgICAgICAgICAgICAgICAgICAgWzAtOV0q
CisgICAgICAgICAgICAgICAgKT8KKyAgICAgICAgICAgICAgICAoPzogICAgICAgICAgICAgICAg
ICAgIyBwb3N0IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgKD86LVswLTldKyl8KD86Wy1f
XC5dPyhwb3N0fHJldnxyKVstX1wuXT9bMC05XSopCisgICAgICAgICAgICAgICAgKT8KKworICAg
ICAgICAgICAgICAgICMgWW91IGNhbm5vdCB1c2UgYSB3aWxkIGNhcmQgYW5kIGEgZGV2IG9yIGxv
Y2FsIHZlcnNpb24KKyAgICAgICAgICAgICAgICAjIHRvZ2V0aGVyIHNvIGdyb3VwIHRoZW0gd2l0
aCBhIHwgYW5kIG1ha2UgdGhlbSBvcHRpb25hbC4KKyAgICAgICAgICAgICAgICAoPzoKKyAgICAg
ICAgICAgICAgICAgICAgKD86Wy1fXC5dP2RldlstX1wuXT9bMC05XSopPyAgICAgICAgICMgZGV2
IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgKD86XCtbYS16MC05XSsoPzpbLV9cLl1bYS16
MC05XSspKik/ICMgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAg
ICAgICBcLlwqICAjIFdpbGQgY2FyZCBzeW50YXggb2YgLioKKyAgICAgICAgICAgICAgICApPwor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgfAorICAgICAgICAgICAgKD86CisgICAgICAgICAg
ICAgICAgIyBUaGUgY29tcGF0aWJsZSBvcGVyYXRvciByZXF1aXJlcyBhdCBsZWFzdCB0d28gZGln
aXRzIGluIHRoZQorICAgICAgICAgICAgICAgICMgcmVsZWFzZSBzZWdtZW50LgorICAgICAgICAg
ICAgICAgICg/PD1+PSkgICAgICAgICAgICAgICAjIE9ubHkgbWF0Y2ggZm9yIHRoZSBjb21wYXRp
YmxlIG9wZXJhdG9yCisKKyAgICAgICAgICAgICAgICBccyoKKyAgICAgICAgICAgICAgICB2Pwor
ICAgICAgICAgICAgICAgICg/OlswLTldKyEpPyAgICAgICAgICAjIGVwb2NoCisgICAgICAgICAg
ICAgICAgWzAtOV0rKD86XC5bMC05XSspKyAgICMgcmVsZWFzZSAgKFdlIGhhdmUgYSArIGluc3Rl
YWQgb2YgYSAqKQorICAgICAgICAgICAgICAgICg/OiAgICAgICAgICAgICAgICAgICAjIHByZSBy
ZWxlYXNlCisgICAgICAgICAgICAgICAgICAgIFstX1wuXT8KKyAgICAgICAgICAgICAgICAgICAg
KGF8YnxjfHJjfGFscGhhfGJldGF8cHJlfHByZXZpZXcpCisgICAgICAgICAgICAgICAgICAgIFst
X1wuXT8KKyAgICAgICAgICAgICAgICAgICAgWzAtOV0qCisgICAgICAgICAgICAgICAgKT8KKyAg
ICAgICAgICAgICAgICAoPzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9z
dCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICg/Oi1bMC05XSspfCg/OlstX1wuXT8ocG9z
dHxyZXZ8cilbLV9cLl0/WzAtOV0qKQorICAgICAgICAgICAgICAgICk/CisgICAgICAgICAgICAg
ICAgKD86Wy1fXC5dP2RldlstX1wuXT9bMC05XSopPyAgICAgICAgICAjIGRldiByZWxlYXNlCisg
ICAgICAgICAgICApCisgICAgICAgICAgICB8CisgICAgICAgICAgICAoPzoKKyAgICAgICAgICAg
ICAgICAjIEFsbCBvdGhlciBvcGVyYXRvcnMgb25seSBhbGxvdyBhIHN1YiBzZXQgb2Ygd2hhdCB0
aGUKKyAgICAgICAgICAgICAgICAjIChub24pZXF1YWxpdHkgb3BlcmF0b3JzIGRvLiBTcGVjaWZp
Y2FsbHkgdGhleSBkbyBub3QgYWxsb3cKKyAgICAgICAgICAgICAgICAjIGxvY2FsIHZlcnNpb25z
IHRvIGJlIHNwZWNpZmllZCBub3IgZG8gdGhleSBhbGxvdyB0aGUgcHJlZml4CisgICAgICAgICAg
ICAgICAgIyBtYXRjaGluZyB3aWxkIGNhcmRzLgorICAgICAgICAgICAgICAgICg/PCE9PXwhPXx+
PSkgICAgICAgICAjIFdlIGhhdmUgc3BlY2lhbCBjYXNlcyBmb3IgdGhlc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcGVyYXRvcnMgc28gd2Ugd2FudCB0byBtYWtl
IHN1cmUgdGhleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRvbid0
IG1hdGNoIGhlcmUuCisKKyAgICAgICAgICAgICAgICBccyoKKyAgICAgICAgICAgICAgICB2Pwor
ICAgICAgICAgICAgICAgICg/OlswLTldKyEpPyAgICAgICAgICAjIGVwb2NoCisgICAgICAgICAg
ICAgICAgWzAtOV0rKD86XC5bMC05XSspKiAgICMgcmVsZWFzZQorICAgICAgICAgICAgICAgICg/
OiAgICAgICAgICAgICAgICAgICAjIHByZSByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgIFst
X1wuXT8KKyAgICAgICAgICAgICAgICAgICAgKGF8YnxjfHJjfGFscGhhfGJldGF8cHJlfHByZXZp
ZXcpCisgICAgICAgICAgICAgICAgICAgIFstX1wuXT8KKyAgICAgICAgICAgICAgICAgICAgWzAt
OV0qCisgICAgICAgICAgICAgICAgKT8KKyAgICAgICAgICAgICAgICAoPzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgcG9zdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAg
ICg/Oi1bMC05XSspfCg/OlstX1wuXT8ocG9zdHxyZXZ8cilbLV9cLl0/WzAtOV0qKQorICAgICAg
ICAgICAgICAgICk/CisgICAgICAgICAgICAgICAgKD86Wy1fXC5dP2RldlstX1wuXT9bMC05XSop
PyAgICAgICAgICAjIGRldiByZWxlYXNlCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAg
ICAgIiIiCisKKyAgICBfcmVnZXggPSByZS5jb21waWxlKHIiXlxzKiIgKyBfcmVnZXhfc3RyICsg
ciJccyokIiwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpCisKKyAgICBfb3BlcmF0b3JzID0g
eworICAgICAgICAifj0iOiAiY29tcGF0aWJsZSIsCisgICAgICAgICI9PSI6ICJlcXVhbCIsCisg
ICAgICAgICIhPSI6ICJub3RfZXF1YWwiLAorICAgICAgICAiPD0iOiAibGVzc190aGFuX2VxdWFs
IiwKKyAgICAgICAgIj49IjogImdyZWF0ZXJfdGhhbl9lcXVhbCIsCisgICAgICAgICI8IjogImxl
c3NfdGhhbiIsCisgICAgICAgICI+IjogImdyZWF0ZXJfdGhhbiIsCisgICAgICAgICI9PT0iOiAi
YXJiaXRyYXJ5IiwKKyAgICB9CisKKyAgICBAX3JlcXVpcmVfdmVyc2lvbl9jb21wYXJlCisgICAg
ZGVmIF9jb21wYXJlX2NvbXBhdGlibGUoc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWMpOgorICAgICAg
ICAjIHR5cGU6IChQYXJzZWRWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKworICAgICAgICAjIENvbXBh
dGlibGUgcmVsZWFzZXMgaGF2ZSBhbiBlcXVpdmFsZW50IGNvbWJpbmF0aW9uIG9mID49IGFuZCA9
PS4gVGhhdAorICAgICAgICAjIGlzIHRoYXQgfj0yLjIgaXMgZXF1aXZhbGVudCB0byA+PTIuMiw9
PTIuKi4gVGhpcyBhbGxvd3MgdXMgdG8KKyAgICAgICAgIyBpbXBsZW1lbnQgdGhpcyBpbiB0ZXJt
cyBvZiB0aGUgb3RoZXIgc3BlY2lmaWVycyBpbnN0ZWFkIG9mCisgICAgICAgICMgaW1wbGVtZW50
aW5nIGl0IG91cnNlbHZlcy4gVGhlIG9ubHkgdGhpbmcgd2UgbmVlZCB0byBkbyBpcyBjb25zdHJ1
Y3QKKyAgICAgICAgIyB0aGUgb3RoZXIgc3BlY2lmaWVycy4KKworICAgICAgICAjIFdlIHdhbnQg
ZXZlcnl0aGluZyBidXQgdGhlIGxhc3QgaXRlbSBpbiB0aGUgdmVyc2lvbiwgYnV0IHdlIHdhbnQg
dG8KKyAgICAgICAgIyBpZ25vcmUgcG9zdCBhbmQgZGV2IHJlbGVhc2VzIGFuZCB3ZSB3YW50IHRv
IHRyZWF0IHRoZSBwcmUtcmVsZWFzZSBhcworICAgICAgICAjIGl0J3Mgb3duIHNlcGFyYXRlIHNl
Z21lbnQuCisgICAgICAgIHByZWZpeCA9ICIuIi5qb2luKAorICAgICAgICAgICAgbGlzdCgKKyAg
ICAgICAgICAgICAgICBpdGVydG9vbHMudGFrZXdoaWxlKAorICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgeDogKG5vdCB4LnN0YXJ0c3dpdGgoInBvc3QiKSBhbmQgbm90IHguc3RhcnRzd2l0aCgi
ZGV2IikpLAorICAgICAgICAgICAgICAgICAgICBfdmVyc2lvbl9zcGxpdChzcGVjKSwKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICApWzotMV0KKyAgICAgICAgKQorCisgICAgICAgICMg
QWRkIHRoZSBwcmVmaXggbm90YXRpb24gdG8gdGhlIGVuZCBvZiBvdXIgc3RyaW5nCisgICAgICAg
IHByZWZpeCArPSAiLioiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9vcGVyYXRvcigiPj0i
KShwcm9zcGVjdGl2ZSwgc3BlYykgYW5kIHNlbGYuX2dldF9vcGVyYXRvcigiPT0iKSgKKyAgICAg
ICAgICAgIHByb3NwZWN0aXZlLCBwcmVmaXgKKyAgICAgICAgKQorCisgICAgQF9yZXF1aXJlX3Zl
cnNpb25fY29tcGFyZQorICAgIGRlZiBfY29tcGFyZV9lcXVhbChzZWxmLCBwcm9zcGVjdGl2ZSwg
c3BlYyk6CisgICAgICAgICMgdHlwZTogKFBhcnNlZFZlcnNpb24sIHN0cikgLT4gYm9vbAorCisg
ICAgICAgICMgV2UgbmVlZCBzcGVjaWFsIGxvZ2ljIHRvIGhhbmRsZSBwcmVmaXggbWF0Y2hpbmcK
KyAgICAgICAgaWYgc3BlYy5lbmRzd2l0aCgiLioiKToKKyAgICAgICAgICAgICMgSW4gdGhlIGNh
c2Ugb2YgcHJlZml4IG1hdGNoaW5nIHdlIHdhbnQgdG8gaWdub3JlIGxvY2FsIHNlZ21lbnQuCisg
ICAgICAgICAgICBwcm9zcGVjdGl2ZSA9IFZlcnNpb24ocHJvc3BlY3RpdmUucHVibGljKQorICAg
ICAgICAgICAgIyBTcGxpdCB0aGUgc3BlYyBvdXQgYnkgZG90cywgYW5kIHByZXRlbmQgdGhhdCB0
aGVyZSBpcyBhbiBpbXBsaWNpdAorICAgICAgICAgICAgIyBkb3QgaW4gYmV0d2VlbiBhIHJlbGVh
c2Ugc2VnbWVudCBhbmQgYSBwcmUtcmVsZWFzZSBzZWdtZW50LgorICAgICAgICAgICAgc3BsaXRf
c3BlYyA9IF92ZXJzaW9uX3NwbGl0KHNwZWNbOi0yXSkgICMgUmVtb3ZlIHRoZSB0cmFpbGluZyAu
KgorCisgICAgICAgICAgICAjIFNwbGl0IHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIG91dCBieSBk
b3RzLCBhbmQgcHJldGVuZCB0aGF0IHRoZXJlCisgICAgICAgICAgICAjIGlzIGFuIGltcGxpY2l0
IGRvdCBpbiBiZXR3ZWVuIGEgcmVsZWFzZSBzZWdtZW50IGFuZCBhIHByZS1yZWxlYXNlCisgICAg
ICAgICAgICAjIHNlZ21lbnQuCisgICAgICAgICAgICBzcGxpdF9wcm9zcGVjdGl2ZSA9IF92ZXJz
aW9uX3NwbGl0KHN0cihwcm9zcGVjdGl2ZSkpCisKKyAgICAgICAgICAgICMgU2hvcnRlbiB0aGUg
cHJvc3BlY3RpdmUgdmVyc2lvbiB0byBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNwZWMKKyAg
ICAgICAgICAgICMgc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHRoZSBzcGVjaWZpZXIgaXMg
YSBwcmVmaXggb2YgdGhlCisgICAgICAgICAgICAjIHByb3NwZWN0aXZlIHZlcnNpb24gb3Igbm90
LgorICAgICAgICAgICAgc2hvcnRlbmVkX3Byb3NwZWN0aXZlID0gc3BsaXRfcHJvc3BlY3RpdmVb
OiBsZW4oc3BsaXRfc3BlYyldCisKKyAgICAgICAgICAgICMgUGFkIG91dCBvdXIgdHdvIHNpZGVz
IHdpdGggemVyb3Mgc28gdGhhdCB0aGV5IGJvdGggZXF1YWwgdGhlIHNhbWUKKyAgICAgICAgICAg
ICMgbGVuZ3RoLgorICAgICAgICAgICAgcGFkZGVkX3NwZWMsIHBhZGRlZF9wcm9zcGVjdGl2ZSA9
IF9wYWRfdmVyc2lvbigKKyAgICAgICAgICAgICAgICBzcGxpdF9zcGVjLCBzaG9ydGVuZWRfcHJv
c3BlY3RpdmUKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0dXJuIHBhZGRlZF9wcm9z
cGVjdGl2ZSA9PSBwYWRkZWRfc3BlYworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBDb252
ZXJ0IG91ciBzcGVjIHN0cmluZyBpbnRvIGEgVmVyc2lvbgorICAgICAgICAgICAgc3BlY192ZXJz
aW9uID0gVmVyc2lvbihzcGVjKQorCisgICAgICAgICAgICAjIElmIHRoZSBzcGVjaWZpZXIgZG9l
cyBub3QgaGF2ZSBhIGxvY2FsIHNlZ21lbnQsIHRoZW4gd2Ugd2FudCB0bworICAgICAgICAgICAg
IyBhY3QgYXMgaWYgdGhlIHByb3NwZWN0aXZlIHZlcnNpb24gYWxzbyBkb2VzIG5vdCBoYXZlIGEg
bG9jYWwKKyAgICAgICAgICAgICMgc2VnbWVudC4KKyAgICAgICAgICAgIGlmIG5vdCBzcGVjX3Zl
cnNpb24ubG9jYWw6CisgICAgICAgICAgICAgICAgcHJvc3BlY3RpdmUgPSBWZXJzaW9uKHByb3Nw
ZWN0aXZlLnB1YmxpYykKKworICAgICAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlID09IHNwZWNf
dmVyc2lvbgorCisgICAgQF9yZXF1aXJlX3ZlcnNpb25fY29tcGFyZQorICAgIGRlZiBfY29tcGFy
ZV9ub3RfZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWMpOgorICAgICAgICAjIHR5cGU6IChQ
YXJzZWRWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9jb21w
YXJlX2VxdWFsKHByb3NwZWN0aXZlLCBzcGVjKQorCisgICAgQF9yZXF1aXJlX3ZlcnNpb25fY29t
cGFyZQorICAgIGRlZiBfY29tcGFyZV9sZXNzX3RoYW5fZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmUs
IHNwZWMpOgorICAgICAgICAjIHR5cGU6IChQYXJzZWRWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKwor
ICAgICAgICAjIE5COiBMb2NhbCB2ZXJzaW9uIGlkZW50aWZpZXJzIGFyZSBOT1QgcGVybWl0dGVk
IGluIHRoZSB2ZXJzaW9uCisgICAgICAgICMgc3BlY2lmaWVyLCBzbyBsb2NhbCB2ZXJzaW9uIGxh
YmVscyBjYW4gYmUgdW5pdmVyc2FsbHkgcmVtb3ZlZCBmcm9tCisgICAgICAgICMgdGhlIHByb3Nw
ZWN0aXZlIHZlcnNpb24uCisgICAgICAgIHJldHVybiBWZXJzaW9uKHByb3NwZWN0aXZlLnB1Ymxp
YykgPD0gVmVyc2lvbihzcGVjKQorCisgICAgQF9yZXF1aXJlX3ZlcnNpb25fY29tcGFyZQorICAg
IGRlZiBfY29tcGFyZV9ncmVhdGVyX3RoYW5fZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWMp
OgorICAgICAgICAjIHR5cGU6IChQYXJzZWRWZXJzaW9uLCBzdHIpIC0+IGJvb2wKKworICAgICAg
ICAjIE5COiBMb2NhbCB2ZXJzaW9uIGlkZW50aWZpZXJzIGFyZSBOT1QgcGVybWl0dGVkIGluIHRo
ZSB2ZXJzaW9uCisgICAgICAgICMgc3BlY2lmaWVyLCBzbyBsb2NhbCB2ZXJzaW9uIGxhYmVscyBj
YW4gYmUgdW5pdmVyc2FsbHkgcmVtb3ZlZCBmcm9tCisgICAgICAgICMgdGhlIHByb3NwZWN0aXZl
IHZlcnNpb24uCisgICAgICAgIHJldHVybiBWZXJzaW9uKHByb3NwZWN0aXZlLnB1YmxpYykgPj0g
VmVyc2lvbihzcGVjKQorCisgICAgQF9yZXF1aXJlX3ZlcnNpb25fY29tcGFyZQorICAgIGRlZiBf
Y29tcGFyZV9sZXNzX3RoYW4oc2VsZiwgcHJvc3BlY3RpdmUsIHNwZWNfc3RyKToKKyAgICAgICAg
IyB0eXBlOiAoUGFyc2VkVmVyc2lvbiwgc3RyKSAtPiBib29sCisKKyAgICAgICAgIyBDb252ZXJ0
IG91ciBzcGVjIHRvIGEgVmVyc2lvbiBpbnN0YW5jZSwgc2luY2Ugd2UnbGwgd2FudCB0byB3b3Jr
IHdpdGgKKyAgICAgICAgIyBpdCBhcyBhIHZlcnNpb24uCisgICAgICAgIHNwZWMgPSBWZXJzaW9u
KHNwZWNfc3RyKQorCisgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9zcGVjdGl2ZSB2
ZXJzaW9uIGlzIGxlc3MgdGhhbiB0aGUgc3BlYworICAgICAgICAjIHZlcnNpb24uIElmIGl0J3Mg
bm90IHdlIGNhbiBzaG9ydCBjaXJjdWl0IGFuZCBqdXN0IHJldHVybiBGYWxzZSBub3cKKyAgICAg
ICAgIyBpbnN0ZWFkIG9mIGRvaW5nIGV4dHJhIHVubmVlZGVkIHdvcmsuCisgICAgICAgIGlmIG5v
dCBwcm9zcGVjdGl2ZSA8IHNwZWM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg
ICAjIFRoaXMgc3BlY2lhbCBjYXNlIGlzIGhlcmUgc28gdGhhdCwgdW5sZXNzIHRoZSBzcGVjaWZp
ZXIgaXRzZWxmCisgICAgICAgICMgaW5jbHVkZXMgaXMgYSBwcmUtcmVsZWFzZSB2ZXJzaW9uLCB0
aGF0IHdlIGRvIG5vdCBhY2NlcHQgcHJlLXJlbGVhc2UKKyAgICAgICAgIyB2ZXJzaW9ucyBmb3Ig
dGhlIHZlcnNpb24gbWVudGlvbmVkIGluIHRoZSBzcGVjaWZpZXIgKGUuZy4gPDMuMSBzaG91bGQK
KyAgICAgICAgIyBub3QgbWF0Y2ggMy4xLmRldjAsIGJ1dCBzaG91bGQgbWF0Y2ggMy4wLmRldjAp
LgorICAgICAgICBpZiBub3Qgc3BlYy5pc19wcmVyZWxlYXNlIGFuZCBwcm9zcGVjdGl2ZS5pc19w
cmVyZWxlYXNlOgorICAgICAgICAgICAgaWYgVmVyc2lvbihwcm9zcGVjdGl2ZS5iYXNlX3ZlcnNp
b24pID09IFZlcnNpb24oc3BlYy5iYXNlX3ZlcnNpb24pOgorICAgICAgICAgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgICAgICMgSWYgd2UndmUgZ290dGVuIHRvIGhlcmUsIGl0IG1lYW5zIHRo
YXQgcHJvc3BlY3RpdmUgdmVyc2lvbiBpcyBib3RoCisgICAgICAgICMgbGVzcyB0aGFuIHRoZSBz
cGVjIHZlcnNpb24gKmFuZCogaXQncyBub3QgYSBwcmUtcmVsZWFzZSBvZiB0aGUgc2FtZQorICAg
ICAgICAjIHZlcnNpb24gaW4gdGhlIHNwZWMuCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBA
X3JlcXVpcmVfdmVyc2lvbl9jb21wYXJlCisgICAgZGVmIF9jb21wYXJlX2dyZWF0ZXJfdGhhbihz
ZWxmLCBwcm9zcGVjdGl2ZSwgc3BlY19zdHIpOgorICAgICAgICAjIHR5cGU6IChQYXJzZWRWZXJz
aW9uLCBzdHIpIC0+IGJvb2wKKworICAgICAgICAjIENvbnZlcnQgb3VyIHNwZWMgdG8gYSBWZXJz
aW9uIGluc3RhbmNlLCBzaW5jZSB3ZSdsbCB3YW50IHRvIHdvcmsgd2l0aAorICAgICAgICAjIGl0
IGFzIGEgdmVyc2lvbi4KKyAgICAgICAgc3BlYyA9IFZlcnNpb24oc3BlY19zdHIpCisKKyAgICAg
ICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHByb3NwZWN0aXZlIHZlcnNpb24gaXMgZ3JlYXRlciB0
aGFuIHRoZSBzcGVjCisgICAgICAgICMgdmVyc2lvbi4gSWYgaXQncyBub3Qgd2UgY2FuIHNob3J0
IGNpcmN1aXQgYW5kIGp1c3QgcmV0dXJuIEZhbHNlIG5vdworICAgICAgICAjIGluc3RlYWQgb2Yg
ZG9pbmcgZXh0cmEgdW5uZWVkZWQgd29yay4KKyAgICAgICAgaWYgbm90IHByb3NwZWN0aXZlID4g
c3BlYzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgVGhpcyBzcGVjaWFs
IGNhc2UgaXMgaGVyZSBzbyB0aGF0LCB1bmxlc3MgdGhlIHNwZWNpZmllciBpdHNlbGYKKyAgICAg
ICAgIyBpbmNsdWRlcyBpcyBhIHBvc3QtcmVsZWFzZSB2ZXJzaW9uLCB0aGF0IHdlIGRvIG5vdCBh
Y2NlcHQKKyAgICAgICAgIyBwb3N0LXJlbGVhc2UgdmVyc2lvbnMgZm9yIHRoZSB2ZXJzaW9uIG1l
bnRpb25lZCBpbiB0aGUgc3BlY2lmaWVyCisgICAgICAgICMgKGUuZy4gPjMuMSBzaG91bGQgbm90
IG1hdGNoIDMuMC5wb3N0MCwgYnV0IHNob3VsZCBtYXRjaCAzLjIucG9zdDApLgorICAgICAgICBp
ZiBub3Qgc3BlYy5pc19wb3N0cmVsZWFzZSBhbmQgcHJvc3BlY3RpdmUuaXNfcG9zdHJlbGVhc2U6
CisgICAgICAgICAgICBpZiBWZXJzaW9uKHByb3NwZWN0aXZlLmJhc2VfdmVyc2lvbikgPT0gVmVy
c2lvbihzcGVjLmJhc2VfdmVyc2lvbik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkbyBub3QgYWxsb3cgYSBsb2NhbCB2ZXJzaW9uIG9m
IHRoZSB2ZXJzaW9uIG1lbnRpb25lZAorICAgICAgICAjIGluIHRoZSBzcGVjaWZpZXIsIHdoaWNo
IGlzIHRlY2huaWNhbGx5IGdyZWF0ZXIgdGhhbiwgdG8gbWF0Y2guCisgICAgICAgIGlmIHByb3Nw
ZWN0aXZlLmxvY2FsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgVmVyc2lvbihwcm9zcGVj
dGl2ZS5iYXNlX3ZlcnNpb24pID09IFZlcnNpb24oc3BlYy5iYXNlX3ZlcnNpb24pOgorICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgSWYgd2UndmUgZ290dGVuIHRvIGhl
cmUsIGl0IG1lYW5zIHRoYXQgcHJvc3BlY3RpdmUgdmVyc2lvbiBpcyBib3RoCisgICAgICAgICMg
Z3JlYXRlciB0aGFuIHRoZSBzcGVjIHZlcnNpb24gKmFuZCogaXQncyBub3QgYSBwcmUtcmVsZWFz
ZSBvZiB0aGUKKyAgICAgICAgIyBzYW1lIHZlcnNpb24gaW4gdGhlIHNwZWMuCisgICAgICAgIHJl
dHVybiBUcnVlCisKKyAgICBkZWYgX2NvbXBhcmVfYXJiaXRyYXJ5KHNlbGYsIHByb3NwZWN0aXZl
LCBzcGVjKToKKyAgICAgICAgIyB0eXBlOiAoVmVyc2lvbiwgc3RyKSAtPiBib29sCisgICAgICAg
IHJldHVybiBzdHIocHJvc3BlY3RpdmUpLmxvd2VyKCkgPT0gc3RyKHNwZWMpLmxvd2VyKCkKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwcmVyZWxlYXNlcyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBib29sCisKKyAgICAgICAgIyBJZiB0aGVyZSBpcyBhbiBleHBsaWNpdCBwcmVyZWxl
YXNlcyBzZXQgZm9yIHRoaXMsIHRoZW4gd2UnbGwganVzdAorICAgICAgICAjIGJsaW5kbHkgdXNl
IHRoYXQuCisgICAgICAgIGlmIHNlbGYuX3ByZXJlbGVhc2VzIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3ByZXJlbGVhc2VzCisKKyAgICAgICAgIyBMb29rIGF0IGFsbCBv
ZiBvdXIgc3BlY2lmaWVycyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGluY2x1c2l2ZQorICAg
ICAgICAjIG9wZXJhdG9ycywgYW5kIGlmIHRoZXkgYXJlIGlmIHRoZXkgYXJlIGluY2x1ZGluZyBh
biBleHBsaWNpdAorICAgICAgICAjIHByZXJlbGVhc2UuCisgICAgICAgIG9wZXJhdG9yLCB2ZXJz
aW9uID0gc2VsZi5fc3BlYworICAgICAgICBpZiBvcGVyYXRvciBpbiBbIj09IiwgIj49IiwgIjw9
IiwgIn49IiwgIj09PSJdOgorICAgICAgICAgICAgIyBUaGUgPT0gc3BlY2lmaWVyIGNhbiBpbmNs
dWRlIGEgdHJhaWxpbmcgLiosIGlmIGl0IGRvZXMgd2UKKyAgICAgICAgICAgICMgd2FudCB0byBy
ZW1vdmUgYmVmb3JlIHBhcnNpbmcuCisgICAgICAgICAgICBpZiBvcGVyYXRvciA9PSAiPT0iIGFu
ZCB2ZXJzaW9uLmVuZHN3aXRoKCIuKiIpOgorICAgICAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJz
aW9uWzotMl0KKworICAgICAgICAgICAgIyBQYXJzZSB0aGUgdmVyc2lvbiwgYW5kIGlmIGl0IGlz
IGEgcHJlLXJlbGVhc2UgdGhhbiB0aGlzCisgICAgICAgICAgICAjIHNwZWNpZmllciBhbGxvd3Mg
cHJlLXJlbGVhc2VzLgorICAgICAgICAgICAgaWYgcGFyc2UodmVyc2lvbikuaXNfcHJlcmVsZWFz
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgQHByZXJlbGVhc2VzLnNldHRlcgorICAgIGRlZiBwcmVyZWxlYXNlcyhzZWxmLCB2YWx1
ZSk6CisgICAgICAgICMgdHlwZTogKGJvb2wpIC0+IE5vbmUKKyAgICAgICAgc2VsZi5fcHJlcmVs
ZWFzZXMgPSB2YWx1ZQorCisKK19wcmVmaXhfcmVnZXggPSByZS5jb21waWxlKHIiXihbMC05XSsp
KCg/OmF8YnxjfHJjKVswLTldKykkIikKKworCitkZWYgX3ZlcnNpb25fc3BsaXQodmVyc2lvbik6
CisgICAgIyB0eXBlOiAoc3RyKSAtPiBMaXN0W3N0cl0KKyAgICByZXN1bHQgPSBbXSAgIyB0eXBl
OiBMaXN0W3N0cl0KKyAgICBmb3IgaXRlbSBpbiB2ZXJzaW9uLnNwbGl0KCIuIik6CisgICAgICAg
IG1hdGNoID0gX3ByZWZpeF9yZWdleC5zZWFyY2goaXRlbSkKKyAgICAgICAgaWYgbWF0Y2g6Cisg
ICAgICAgICAgICByZXN1bHQuZXh0ZW5kKG1hdGNoLmdyb3VwcygpKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKQorICAgIHJldHVybiByZXN1bHQKKworCitk
ZWYgX3BhZF92ZXJzaW9uKGxlZnQsIHJpZ2h0KToKKyAgICAjIHR5cGU6IChMaXN0W3N0cl0sIExp
c3Rbc3RyXSkgLT4gVHVwbGVbTGlzdFtzdHJdLCBMaXN0W3N0cl1dCisgICAgbGVmdF9zcGxpdCwg
cmlnaHRfc3BsaXQgPSBbXSwgW10KKworICAgICMgR2V0IHRoZSByZWxlYXNlIHNlZ21lbnQgb2Yg
b3VyIHZlcnNpb25zCisgICAgbGVmdF9zcGxpdC5hcHBlbmQobGlzdChpdGVydG9vbHMudGFrZXdo
aWxlKGxhbWJkYSB4OiB4LmlzZGlnaXQoKSwgbGVmdCkpKQorICAgIHJpZ2h0X3NwbGl0LmFwcGVu
ZChsaXN0KGl0ZXJ0b29scy50YWtld2hpbGUobGFtYmRhIHg6IHguaXNkaWdpdCgpLCByaWdodCkp
KQorCisgICAgIyBHZXQgdGhlIHJlc3Qgb2Ygb3VyIHZlcnNpb25zCisgICAgbGVmdF9zcGxpdC5h
cHBlbmQobGVmdFtsZW4obGVmdF9zcGxpdFswXSkgOl0pCisgICAgcmlnaHRfc3BsaXQuYXBwZW5k
KHJpZ2h0W2xlbihyaWdodF9zcGxpdFswXSkgOl0pCisKKyAgICAjIEluc2VydCBvdXIgcGFkZGlu
ZworICAgIGxlZnRfc3BsaXQuaW5zZXJ0KDEsIFsiMCJdICogbWF4KDAsIGxlbihyaWdodF9zcGxp
dFswXSkgLSBsZW4obGVmdF9zcGxpdFswXSkpKQorICAgIHJpZ2h0X3NwbGl0Lmluc2VydCgxLCBb
IjAiXSAqIG1heCgwLCBsZW4obGVmdF9zcGxpdFswXSkgLSBsZW4ocmlnaHRfc3BsaXRbMF0pKSkK
KworICAgIHJldHVybiAobGlzdChpdGVydG9vbHMuY2hhaW4oKmxlZnRfc3BsaXQpKSwgbGlzdChp
dGVydG9vbHMuY2hhaW4oKnJpZ2h0X3NwbGl0KSkpCisKKworY2xhc3MgU3BlY2lmaWVyU2V0KEJh
c2VTcGVjaWZpZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjaWZpZXJzPSIiLCBwcmVy
ZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoc3RyLCBPcHRpb25hbFtib29sXSkgLT4g
Tm9uZQorCisgICAgICAgICMgU3BsaXQgb24gLCB0byBicmVhayBlYWNoIGluZGl2aWR1YWwgc3Bl
Y2lmaWVyIGludG8gaXQncyBvd24gaXRlbSwgYW5kCisgICAgICAgICMgc3RyaXAgZWFjaCBpdGVt
IHRvIHJlbW92ZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgIHNwbGl0X3Nw
ZWNpZmllcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIHNwZWNpZmllcnMuc3BsaXQoIiwiKSBpZiBz
LnN0cmlwKCldCisKKyAgICAgICAgIyBQYXJzZWQgZWFjaCBpbmRpdmlkdWFsIHNwZWNpZmllciwg
YXR0ZW1wdGluZyBmaXJzdCB0byBtYWtlIGl0IGEKKyAgICAgICAgIyBTcGVjaWZpZXIgYW5kIGZh
bGxpbmcgYmFjayB0byBhIExlZ2FjeVNwZWNpZmllci4KKyAgICAgICAgcGFyc2VkID0gc2V0KCkK
KyAgICAgICAgZm9yIHNwZWNpZmllciBpbiBzcGxpdF9zcGVjaWZpZXJzOgorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHBhcnNlZC5hZGQoU3BlY2lmaWVyKHNwZWNpZmllcikpCisg
ICAgICAgICAgICBleGNlcHQgSW52YWxpZFNwZWNpZmllcjoKKyAgICAgICAgICAgICAgICBwYXJz
ZWQuYWRkKExlZ2FjeVNwZWNpZmllcihzcGVjaWZpZXIpKQorCisgICAgICAgICMgVHVybiBvdXIg
cGFyc2VkIHNwZWNpZmllcnMgaW50byBhIGZyb3plbiBzZXQgYW5kIHNhdmUgdGhlbSBmb3IgbGF0
ZXIuCisgICAgICAgIHNlbGYuX3NwZWNzID0gZnJvemVuc2V0KHBhcnNlZCkKKworICAgICAgICAj
IFN0b3JlIG91ciBwcmVyZWxlYXNlcyB2YWx1ZSBzbyB3ZSBjYW4gdXNlIGl0IGxhdGVyIHRvIGRl
dGVybWluZSBpZgorICAgICAgICAjIHdlIGFjY2VwdCBwcmVyZWxlYXNlcyBvciBub3QuCisgICAg
ICAgIHNlbGYuX3ByZXJlbGVhc2VzID0gcHJlcmVsZWFzZXMKKworICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcHJlID0gKAorICAgICAg
ICAgICAgIiwgcHJlcmVsZWFzZXM9ezAhcn0iLmZvcm1hdChzZWxmLnByZXJlbGVhc2VzKQorICAg
ICAgICAgICAgaWYgc2VsZi5fcHJlcmVsZWFzZXMgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGVs
c2UgIiIKKyAgICAgICAgKQorCisgICAgICAgIHJldHVybiAiPFNwZWNpZmllclNldCh7MCFyfXsx
fSk+Ii5mb3JtYXQoc3RyKHNlbGYpLCBwcmUpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuICIsIi5qb2luKHNvcnRlZChz
dHIocykgZm9yIHMgaW4gc2VsZi5fc3BlY3MpKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgor
ICAgICAgICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9zcGVj
cykKKworICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAoVW5p
b25bU3BlY2lmaWVyU2V0LCBzdHJdKSAtPiBTcGVjaWZpZXJTZXQKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShvdGhlciwgc3RyaW5nX3R5cGVzKToKKyAgICAgICAgICAgIG90aGVyID0gU3BlY2lmaWVy
U2V0KG90aGVyKQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTcGVjaWZpZXJT
ZXQpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgc3BlY2lm
aWVyID0gU3BlY2lmaWVyU2V0KCkKKyAgICAgICAgc3BlY2lmaWVyLl9zcGVjcyA9IGZyb3plbnNl
dChzZWxmLl9zcGVjcyB8IG90aGVyLl9zcGVjcykKKworICAgICAgICBpZiBzZWxmLl9wcmVyZWxl
YXNlcyBpcyBOb25lIGFuZCBvdGhlci5fcHJlcmVsZWFzZXMgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBzcGVjaWZpZXIuX3ByZXJlbGVhc2VzID0gb3RoZXIuX3ByZXJlbGVhc2VzCisgICAgICAg
IGVsaWYgc2VsZi5fcHJlcmVsZWFzZXMgaXMgbm90IE5vbmUgYW5kIG90aGVyLl9wcmVyZWxlYXNl
cyBpcyBOb25lOgorICAgICAgICAgICAgc3BlY2lmaWVyLl9wcmVyZWxlYXNlcyA9IHNlbGYuX3By
ZXJlbGVhc2VzCisgICAgICAgIGVsaWYgc2VsZi5fcHJlcmVsZWFzZXMgPT0gb3RoZXIuX3ByZXJl
bGVhc2VzOgorICAgICAgICAgICAgc3BlY2lmaWVyLl9wcmVyZWxlYXNlcyA9IHNlbGYuX3ByZXJl
bGVhc2VzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAg
ICAgICAgICAgICAgICJDYW5ub3QgY29tYmluZSBTcGVjaWZpZXJTZXRzIHdpdGggVHJ1ZSBhbmQg
RmFsc2UgcHJlcmVsZWFzZSAiCisgICAgICAgICAgICAgICAgIm92ZXJyaWRlcy4iCisgICAgICAg
ICAgICApCisKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcgorCisgICAgZGVmIF9fZXFfXyhzZWxm
LCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKG9iamVjdCkgLT4gYm9vbAorICAgICAgICBpZiBp
c2luc3RhbmNlKG90aGVyLCAoc3RyaW5nX3R5cGVzLCBfSW5kaXZpZHVhbFNwZWNpZmllcikpOgor
ICAgICAgICAgICAgb3RoZXIgPSBTcGVjaWZpZXJTZXQoc3RyKG90aGVyKSkKKyAgICAgICAgZWxp
ZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU3BlY2lmaWVyU2V0KToKKyAgICAgICAgICAgIHJldHVy
biBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVybiBzZWxmLl9zcGVjcyA9PSBvdGhlci5f
c3BlY3MKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5cGU6IChv
YmplY3QpIC0+IGJvb2wKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgKHN0cmluZ190eXBl
cywgX0luZGl2aWR1YWxTcGVjaWZpZXIpKToKKyAgICAgICAgICAgIG90aGVyID0gU3BlY2lmaWVy
U2V0KHN0cihvdGhlcikpCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFNwZWNp
ZmllclNldCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICBy
ZXR1cm4gc2VsZi5fc3BlY3MgIT0gb3RoZXIuX3NwZWNzCisKKyAgICBkZWYgX19sZW5fXyhzZWxm
KToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9z
cGVjcykKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJ
dGVyYXRvcltfSW5kaXZpZHVhbFNwZWNpZmllcl0KKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5f
c3BlY3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZik6CisgICAg
ICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbYm9vbF0KKworICAgICAgICAjIElmIHdlIGhhdmUg
YmVlbiBnaXZlbiBhbiBleHBsaWNpdCBwcmVyZWxlYXNlIG1vZGlmaWVyLCB0aGVuIHdlJ2xsCisg
ICAgICAgICMgcGFzcyB0aGF0IHRocm91Z2ggaGVyZS4KKyAgICAgICAgaWYgc2VsZi5fcHJlcmVs
ZWFzZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJlcmVsZWFzZXMK
KworICAgICAgICAjIElmIHdlIGRvbid0IGhhdmUgYW55IHNwZWNpZmllcnMsIGFuZCB3ZSBkb24n
dCBoYXZlIGEgZm9yY2VkIHZhbHVlLAorICAgICAgICAjIHRoZW4gd2UnbGwganVzdCByZXR1cm4g
Tm9uZSBzaW5jZSB3ZSBkb24ndCBrbm93IGlmIHRoaXMgc2hvdWxkIGhhdmUKKyAgICAgICAgIyBw
cmUtcmVsZWFzZXMgb3Igbm90LgorICAgICAgICBpZiBub3Qgc2VsZi5fc3BlY3M6CisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgT3RoZXJ3aXNlIHdlJ2xsIHNlZSBpZiBhbnkg
b2YgdGhlIGdpdmVuIHNwZWNpZmllcnMgYWNjZXB0CisgICAgICAgICMgcHJlcmVsZWFzZXMsIGlm
IGFueSBvZiB0aGVtIGRvIHdlJ2xsIHJldHVybiBUcnVlLCBvdGhlcndpc2UgRmFsc2UuCisgICAg
ICAgIHJldHVybiBhbnkocy5wcmVyZWxlYXNlcyBmb3IgcyBpbiBzZWxmLl9zcGVjcykKKworICAg
IEBwcmVyZWxlYXNlcy5zZXR0ZXIKKyAgICBkZWYgcHJlcmVsZWFzZXMoc2VsZiwgdmFsdWUpOgor
ICAgICAgICAjIHR5cGU6IChib29sKSAtPiBOb25lCisgICAgICAgIHNlbGYuX3ByZXJlbGVhc2Vz
ID0gdmFsdWUKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAgICAgICMg
dHlwZTogKFVuaW9uW1BhcnNlZFZlcnNpb24sIHN0cl0pIC0+IGJvb2wKKyAgICAgICAgcmV0dXJu
IHNlbGYuY29udGFpbnMoaXRlbSkKKworICAgIGRlZiBjb250YWlucyhzZWxmLCBpdGVtLCBwcmVy
ZWxlYXNlcz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoVW5pb25bUGFyc2VkVmVyc2lvbiwgc3Ry
XSwgT3B0aW9uYWxbYm9vbF0pIC0+IGJvb2wKKworICAgICAgICAjIEVuc3VyZSB0aGF0IG91ciBp
dGVtIGlzIGEgVmVyc2lvbiBvciBMZWdhY3lWZXJzaW9uIGluc3RhbmNlLgorICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShpdGVtLCAoTGVnYWN5VmVyc2lvbiwgVmVyc2lvbikpOgorICAgICAgICAg
ICAgaXRlbSA9IHBhcnNlKGl0ZW0pCisKKyAgICAgICAgIyBEZXRlcm1pbmUgaWYgd2UncmUgZm9y
Y2luZyBhIHByZXJlbGVhc2Ugb3Igbm90LCBpZiB3ZSdyZSBub3QgZm9yY2luZworICAgICAgICAj
IG9uZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZpbHRlciBjYWxsLCB0aGVuIHdlJ2xsIHVzZSB3aGF0
ZXZlciB0aGUKKyAgICAgICAgIyBTcGVjaWZpZXJTZXQgdGhpbmtzIGZvciB3aGV0aGVyIG9yIG5v
dCB3ZSBzaG91bGQgc3VwcG9ydCBwcmVyZWxlYXNlcy4KKyAgICAgICAgaWYgcHJlcmVsZWFzZXMg
aXMgTm9uZToKKyAgICAgICAgICAgIHByZXJlbGVhc2VzID0gc2VsZi5wcmVyZWxlYXNlcworCisg
ICAgICAgICMgV2UgY2FuIGRldGVybWluZSBpZiB3ZSdyZSBnb2luZyB0byBhbGxvdyBwcmUtcmVs
ZWFzZXMgYnkgbG9va2luZyB0bworICAgICAgICAjIHNlZSBpZiBhbnkgb2YgdGhlIHVuZGVybHlp
bmcgaXRlbXMgc3VwcG9ydHMgdGhlbS4gSWYgbm9uZSBvZiB0aGVtIGRvCisgICAgICAgICMgYW5k
IHRoaXMgaXRlbSBpcyBhIHByZS1yZWxlYXNlIHRoZW4gd2UgZG8gbm90IGFsbG93IGl0IGFuZCB3
ZSBjYW4KKyAgICAgICAgIyBzaG9ydCBjaXJjdWl0IHRoYXQgaGVyZS4KKyAgICAgICAgIyBOb3Rl
OiBUaGlzIG1lYW5zIHRoYXQgMS4wLmRldjEgd291bGQgbm90IGJlIGNvbnRhaW5lZCBpbiBzb21l
dGhpbmcKKyAgICAgICAgIyAgICAgICBsaWtlID49MS4wLmRldmFiYyBob3dldmVyIGl0IHdvdWxk
IGJlIGluID49MS4wLmRlYmFiYyw+MC4wLmRldjAKKyAgICAgICAgaWYgbm90IHByZXJlbGVhc2Vz
IGFuZCBpdGVtLmlzX3ByZXJlbGVhc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
ICAgICAjIFdlIHNpbXBseSBkaXNwYXRjaCB0byB0aGUgdW5kZXJseWluZyBzcGVjcyBoZXJlIHRv
IG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgICAgICAjIGdpdmVuIHZlcnNpb24gaXMgY29udGFpbmVk
IHdpdGhpbiBhbGwgb2YgdGhlbS4KKyAgICAgICAgIyBOb3RlOiBUaGlzIHVzZSBvZiBhbGwoKSBo
ZXJlIG1lYW5zIHRoYXQgYW4gZW1wdHkgc2V0IG9mIHNwZWNpZmllcnMKKyAgICAgICAgIyAgICAg
ICB3aWxsIGFsd2F5cyByZXR1cm4gVHJ1ZSwgdGhpcyBpcyBhbiBleHBsaWNpdCBkZXNpZ24gZGVj
aXNpb24uCisgICAgICAgIHJldHVybiBhbGwocy5jb250YWlucyhpdGVtLCBwcmVyZWxlYXNlcz1w
cmVyZWxlYXNlcykgZm9yIHMgaW4gc2VsZi5fc3BlY3MpCisKKyAgICBkZWYgZmlsdGVyKAorICAg
ICAgICBzZWxmLAorICAgICAgICBpdGVyYWJsZSwgICMgdHlwZTogSXRlcmFibGVbVW5pb25bUGFy
c2VkVmVyc2lvbiwgc3RyXV0KKyAgICAgICAgcHJlcmVsZWFzZXM9Tm9uZSwgICMgdHlwZTogT3B0
aW9uYWxbYm9vbF0KKyAgICApOgorICAgICAgICAjIHR5cGU6ICguLi4pIC0+IEl0ZXJhYmxlW1Vu
aW9uW1BhcnNlZFZlcnNpb24sIHN0cl1dCisKKyAgICAgICAgIyBEZXRlcm1pbmUgaWYgd2UncmUg
Zm9yY2luZyBhIHByZXJlbGVhc2Ugb3Igbm90LCBpZiB3ZSdyZSBub3QgZm9yY2luZworICAgICAg
ICAjIG9uZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZpbHRlciBjYWxsLCB0aGVuIHdlJ2xsIHVzZSB3
aGF0ZXZlciB0aGUKKyAgICAgICAgIyBTcGVjaWZpZXJTZXQgdGhpbmtzIGZvciB3aGV0aGVyIG9y
IG5vdCB3ZSBzaG91bGQgc3VwcG9ydCBwcmVyZWxlYXNlcy4KKyAgICAgICAgaWYgcHJlcmVsZWFz
ZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHByZXJlbGVhc2VzID0gc2VsZi5wcmVyZWxlYXNlcwor
CisgICAgICAgICMgSWYgd2UgaGF2ZSBhbnkgc3BlY2lmaWVycywgdGhlbiB3ZSB3YW50IHRvIHdy
YXAgb3VyIGl0ZXJhYmxlIGluIHRoZQorICAgICAgICAjIGZpbHRlciBtZXRob2QgZm9yIGVhY2gg
b25lLCB0aGlzIHdpbGwgYWN0IGFzIGEgbG9naWNhbCBBTkQgYW1vbmdzdAorICAgICAgICAjIGVh
Y2ggc3BlY2lmaWVyLgorICAgICAgICBpZiBzZWxmLl9zcGVjczoKKyAgICAgICAgICAgIGZvciBz
cGVjIGluIHNlbGYuX3NwZWNzOgorICAgICAgICAgICAgICAgIGl0ZXJhYmxlID0gc3BlYy5maWx0
ZXIoaXRlcmFibGUsIHByZXJlbGVhc2VzPWJvb2wocHJlcmVsZWFzZXMpKQorICAgICAgICAgICAg
cmV0dXJuIGl0ZXJhYmxlCisgICAgICAgICMgSWYgd2UgZG8gbm90IGhhdmUgYW55IHNwZWNpZmll
cnMsIHRoZW4gd2UgbmVlZCB0byBoYXZlIGEgcm91Z2ggZmlsdGVyCisgICAgICAgICMgd2hpY2gg
d2lsbCBmaWx0ZXIgb3V0IGFueSBwcmUtcmVsZWFzZXMsIHVubGVzcyB0aGVyZSBhcmUgbm8gZmlu
YWwKKyAgICAgICAgIyByZWxlYXNlcywgYW5kIHdoaWNoIHdpbGwgZmlsdGVyIG91dCBMZWdhY3lW
ZXJzaW9uIGluIGdlbmVyYWwuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWx0ZXJlZCA9
IFtdICAjIHR5cGU6IExpc3RbVW5pb25bUGFyc2VkVmVyc2lvbiwgc3RyXV0KKyAgICAgICAgICAg
IGZvdW5kX3ByZXJlbGVhc2VzID0gW10gICMgdHlwZTogTGlzdFtVbmlvbltQYXJzZWRWZXJzaW9u
LCBzdHJdXQorCisgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAg
ICAgICAjIEVuc3VyZSB0aGF0IHdlIHNvbWUga2luZCBvZiBWZXJzaW9uIGNsYXNzIGZvciB0aGlz
IGl0ZW0uCisgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKExlZ2FjeVZl
cnNpb24sIFZlcnNpb24pKToKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3ZlcnNpb24gPSBw
YXJzZShpdGVtKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBh
cnNlZF92ZXJzaW9uID0gaXRlbQorCisgICAgICAgICAgICAgICAgIyBGaWx0ZXIgb3V0IGFueSBp
dGVtIHdoaWNoIGlzIHBhcnNlZCBhcyBhIExlZ2FjeVZlcnNpb24KKyAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKHBhcnNlZF92ZXJzaW9uLCBMZWdhY3lWZXJzaW9uKToKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgU3RvcmUgYW55IGl0ZW0gd2hp
Y2ggaXMgYSBwcmUtcmVsZWFzZSBmb3IgbGF0ZXIgdW5sZXNzIHdlJ3ZlCisgICAgICAgICAgICAg
ICAgIyBhbHJlYWR5IGZvdW5kIGEgZmluYWwgdmVyc2lvbiBvciB3ZSBhcmUgYWNjZXB0aW5nIHBy
ZXJlbGVhc2VzCisgICAgICAgICAgICAgICAgaWYgcGFyc2VkX3ZlcnNpb24uaXNfcHJlcmVsZWFz
ZSBhbmQgbm90IHByZXJlbGVhc2VzOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZmlsdGVy
ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9wcmVyZWxlYXNlcy5hcHBlbmQoaXRl
bSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5h
cHBlbmQoaXRlbSkKKworICAgICAgICAgICAgIyBJZiB3ZSd2ZSBmb3VuZCBubyBpdGVtcyBleGNl
cHQgZm9yIHByZS1yZWxlYXNlcywgdGhlbiB3ZSdsbCBnbworICAgICAgICAgICAgIyBhaGVhZCBh
bmQgdXNlIHRoZSBwcmUtcmVsZWFzZXMKKyAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXJlZCBhbmQg
Zm91bmRfcHJlcmVsZWFzZXMgYW5kIHByZXJlbGVhc2VzIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZvdW5kX3ByZXJlbGVhc2VzCisKKyAgICAgICAgICAgIHJldHVybiBmaWx0ZXJl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3RhZ3MucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9wYWNrYWdpbmcvdGFncy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjg0MjQ0N2Q4NjNiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
L3BhY2thZ2luZy90YWdzLnB5CkBAIC0wLDAgKzEsODU2IEBACisjIFRoaXMgZmlsZSBpcyBkdWFs
IGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24K
KyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisKK2ltcG9ydCBkaXN0dXRpbHMudXRp
bAorCit0cnk6CisgICAgZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBFWFRFTlNJT05f
U1VGRklYRVMKK2V4Y2VwdCBJbXBvcnRFcnJvcjogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIGlt
cG9ydCBpbXAKKworICAgIEVYVEVOU0lPTl9TVUZGSVhFUyA9IFt4WzBdIGZvciB4IGluIGltcC5n
ZXRfc3VmZml4ZXMoKV0KKyAgICBkZWwgaW1wCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJlCitpbXBvcnQgc3Ry
dWN0CitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgd2FybmluZ3MKKworZnJv
bSAuX3R5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORywgY2FzdAorCitpZiBUWVBFX0NIRUNLSU5H
OiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0ICgKKyAgICAgICAg
RGljdCwKKyAgICAgICAgRnJvemVuU2V0LAorICAgICAgICBJTywKKyAgICAgICAgSXRlcmFibGUs
CisgICAgICAgIEl0ZXJhdG9yLAorICAgICAgICBMaXN0LAorICAgICAgICBPcHRpb25hbCwKKyAg
ICAgICAgU2VxdWVuY2UsCisgICAgICAgIFR1cGxlLAorICAgICAgICBVbmlvbiwKKyAgICApCisK
KyAgICBQeXRob25WZXJzaW9uID0gU2VxdWVuY2VbaW50XQorICAgIE1hY1ZlcnNpb24gPSBUdXBs
ZVtpbnQsIGludF0KKyAgICBHbGliY1ZlcnNpb24gPSBUdXBsZVtpbnQsIGludF0KKworCitsb2dn
ZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworSU5URVJQUkVURVJfU0hPUlRfTkFN
RVMgPSB7CisgICAgInB5dGhvbiI6ICJweSIsICAjIEdlbmVyaWMuCisgICAgImNweXRob24iOiAi
Y3AiLAorICAgICJweXB5IjogInBwIiwKKyAgICAiaXJvbnB5dGhvbiI6ICJpcCIsCisgICAgImp5
dGhvbiI6ICJqeSIsCit9ICAjIHR5cGU6IERpY3Rbc3RyLCBzdHJdCisKKworXzMyX0JJVF9JTlRF
UlBSRVRFUiA9IHN5cy5tYXhzaXplIDw9IDIgKiogMzIKKworCitfTEVHQUNZX01BTllMSU5VWF9N
QVAgPSB7CisgICAgIyBDZW50T1MgNyB3LyBnbGliYyAyLjE3IChQRVAgNTk5KQorICAgICgyLCAx
Nyk6ICJtYW55bGludXgyMDE0IiwKKyAgICAjIENlbnRPUyA2IHcvIGdsaWJjIDIuMTIgKFBFUCA1
NzEpCisgICAgKDIsIDEyKTogIm1hbnlsaW51eDIwMTAiLAorICAgICMgQ2VudE9TIDUgdy8gZ2xp
YmMgMi41IChQRVAgNTEzKQorICAgICgyLCA1KTogIm1hbnlsaW51eDEiLAorfQorCisjIElmIGds
aWJjIGV2ZXIgY2hhbmdlcyBpdHMgbWFqb3IgdmVyc2lvbiwgd2UgbmVlZCB0byBrbm93IHdoYXQg
dGhlIGxhc3QKKyMgbWlub3IgdmVyc2lvbiB3YXMsIHNvIHdlIGNhbiBidWlsZCB0aGUgY29tcGxl
dGUgbGlzdCBvZiBhbGwgdmVyc2lvbnMuCisjIEZvciBub3csIGd1ZXNzIHdoYXQgdGhlIGhpZ2hl
c3QgbWlub3IgdmVyc2lvbiBtaWdodCBiZSwgYXNzdW1lIGl0IHdpbGwKKyMgYmUgNTAgZm9yIHRl
c3RpbmcuIE9uY2UgdGhpcyBhY3R1YWxseSBoYXBwZW5zLCB1cGRhdGUgdGhlIGRpY3Rpb25hcnkK
KyMgd2l0aCB0aGUgYWN0dWFsIHZhbHVlLgorX0xBU1RfR0xJQkNfTUlOT1IgPSBjb2xsZWN0aW9u
cy5kZWZhdWx0ZGljdChsYW1iZGE6IDUwKSAgIyB0eXBlOiBEaWN0W2ludCwgaW50XQorZ2xpYmNW
ZXJzaW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiVmVyc2lvbiIsIFsibWFqb3IiLCAibWlu
b3IiXSkKKworCitjbGFzcyBUYWcob2JqZWN0KToKKyAgICAiIiIKKyAgICBBIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSB0YWcgdHJpcGxlIGZvciBhIHdoZWVsLgorCisgICAgSW5zdGFuY2VzIGFyZSBj
b25zaWRlcmVkIGltbXV0YWJsZSBhbmQgdGh1cyBhcmUgaGFzaGFibGUuIEVxdWFsaXR5IGNoZWNr
aW5nCisgICAgaXMgYWxzbyBzdXBwb3J0ZWQuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSBb
Il9pbnRlcnByZXRlciIsICJfYWJpIiwgIl9wbGF0Zm9ybSIsICJfaGFzaCJdCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgaW50ZXJwcmV0ZXIsIGFiaSwgcGxhdGZvcm0pOgorICAgICAgICAjIHR5
cGU6IChzdHIsIHN0ciwgc3RyKSAtPiBOb25lCisgICAgICAgIHNlbGYuX2ludGVycHJldGVyID0g
aW50ZXJwcmV0ZXIubG93ZXIoKQorICAgICAgICBzZWxmLl9hYmkgPSBhYmkubG93ZXIoKQorICAg
ICAgICBzZWxmLl9wbGF0Zm9ybSA9IHBsYXRmb3JtLmxvd2VyKCkKKyAgICAgICAgIyBUaGUgX19o
YXNoX18gb2YgZXZlcnkgc2luZ2xlIGVsZW1lbnQgaW4gYSBTZXRbVGFnXSB3aWxsIGJlIGV2YWx1
YXRlZCBlYWNoIHRpbWUKKyAgICAgICAgIyB0aGF0IGEgc2V0IGNhbGxzIGl0cyBgLmRpc2pvaW50
KClgIG1ldGhvZCwgd2hpY2ggbWF5IGJlIGNhbGxlZCBodW5kcmVkcyBvZgorICAgICAgICAjIHRp
bWVzIHdoZW4gc2Nhbm5pbmcgYSBwYWdlIG9mIGxpbmtzIGZvciBwYWNrYWdlcyB3aXRoIHRhZ3Mg
bWF0Y2hpbmcgdGhhdAorICAgICAgICAjIFNldFtUYWddLiBQcmUtY29tcHV0aW5nIHRoZSB2YWx1
ZSBoZXJlIHByb2R1Y2VzIHNpZ25pZmljYW50IHNwZWVkdXBzIGZvcgorICAgICAgICAjIGRvd25z
dHJlYW0gY29uc3VtZXJzLgorICAgICAgICBzZWxmLl9oYXNoID0gaGFzaCgoc2VsZi5faW50ZXJw
cmV0ZXIsIHNlbGYuX2FiaSwgc2VsZi5fcGxhdGZvcm0pKQorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIGludGVycHJldGVyKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAg
ICByZXR1cm4gc2VsZi5faW50ZXJwcmV0ZXIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhYmko
c2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzZWxmLl9h
YmkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwbGF0Zm9ybShzZWxmKToKKyAgICAgICAgIyB0
eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BsYXRmb3JtCisKKyAgICBkZWYg
X19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBUYWcpOgorICAgICAgICAgICAgcmV0dXJu
IE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIChzZWxmLnBs
YXRmb3JtID09IG90aGVyLnBsYXRmb3JtKQorICAgICAgICAgICAgYW5kIChzZWxmLmFiaSA9PSBv
dGhlci5hYmkpCisgICAgICAgICAgICBhbmQgKHNlbGYuaW50ZXJwcmV0ZXIgPT0gb3RoZXIuaW50
ZXJwcmV0ZXIpCisgICAgICAgICkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2gKKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4g
Int9LXt9LXt9Ii5mb3JtYXQoc2VsZi5faW50ZXJwcmV0ZXIsIHNlbGYuX2FiaSwgc2VsZi5fcGxh
dGZvcm0pCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
c3RyCisgICAgICAgIHJldHVybiAiPHtzZWxmfSBAIHtzZWxmX2lkfT4iLmZvcm1hdChzZWxmPXNl
bGYsIHNlbGZfaWQ9aWQoc2VsZikpCisKKworZGVmIHBhcnNlX3RhZyh0YWcpOgorICAgICMgdHlw
ZTogKHN0cikgLT4gRnJvemVuU2V0W1RhZ10KKyAgICAiIiIKKyAgICBQYXJzZXMgdGhlIHByb3Zp
ZGVkIHRhZyAoZS5nLiBgcHkzLW5vbmUtYW55YCkgaW50byBhIGZyb3plbnNldCBvZiBUYWcgaW5z
dGFuY2VzLgorCisgICAgUmV0dXJuaW5nIGEgc2V0IGlzIHJlcXVpcmVkIGR1ZSB0byB0aGUgcG9z
c2liaWxpdHkgdGhhdCB0aGUgdGFnIGlzIGEKKyAgICBjb21wcmVzc2VkIHRhZyBzZXQuCisgICAg
IiIiCisgICAgdGFncyA9IHNldCgpCisgICAgaW50ZXJwcmV0ZXJzLCBhYmlzLCBwbGF0Zm9ybXMg
PSB0YWcuc3BsaXQoIi0iKQorICAgIGZvciBpbnRlcnByZXRlciBpbiBpbnRlcnByZXRlcnMuc3Bs
aXQoIi4iKToKKyAgICAgICAgZm9yIGFiaSBpbiBhYmlzLnNwbGl0KCIuIik6CisgICAgICAgICAg
ICBmb3IgcGxhdGZvcm1fIGluIHBsYXRmb3Jtcy5zcGxpdCgiLiIpOgorICAgICAgICAgICAgICAg
IHRhZ3MuYWRkKFRhZyhpbnRlcnByZXRlciwgYWJpLCBwbGF0Zm9ybV8pKQorICAgIHJldHVybiBm
cm96ZW5zZXQodGFncykKKworCitkZWYgX3dhcm5fa2V5d29yZF9wYXJhbWV0ZXIoZnVuY19uYW1l
LCBrd2FyZ3MpOgorICAgICMgdHlwZTogKHN0ciwgRGljdFtzdHIsIGJvb2xdKSAtPiBib29sCisg
ICAgIiIiCisgICAgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMi43IHRvIGFs
bG93IHRyZWF0aW5nICd3YXJuJyBhcyBrZXl3b3JkLW9ubHkuCisgICAgIiIiCisgICAgaWYgbm90
IGt3YXJnczoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxpZiBsZW4oa3dhcmdzKSA+IDEg
b3IgIndhcm4iIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgIGt3YXJncy5wb3AoIndhcm4iLCBOb25l
KQorICAgICAgICBhcmcgPSBuZXh0KGl0ZXIoa3dhcmdzLmtleXMoKSkpCisgICAgICAgIHJhaXNl
IFR5cGVFcnJvcigKKyAgICAgICAgICAgICJ7fSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQg
YXJndW1lbnQgeyFyfSIuZm9ybWF0KGZ1bmNfbmFtZSwgYXJnKQorICAgICAgICApCisgICAgcmV0
dXJuIGt3YXJnc1sid2FybiJdCisKKworZGVmIF9nZXRfY29uZmlnX3ZhcihuYW1lLCB3YXJuPUZh
bHNlKToKKyAgICAjIHR5cGU6IChzdHIsIGJvb2wpIC0+IFVuaW9uW2ludCwgc3RyLCBOb25lXQor
ICAgIHZhbHVlID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKG5hbWUpCisgICAgaWYgdmFsdWUg
aXMgTm9uZSBhbmQgd2FybjoKKyAgICAgICAgbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIkNv
bmZpZyB2YXJpYWJsZSAnJXMnIGlzIHVuc2V0LCBQeXRob24gQUJJIHRhZyBtYXkgYmUgaW5jb3Jy
ZWN0IiwgbmFtZQorICAgICAgICApCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIF9ub3JtYWxp
emVfc3RyaW5nKHN0cmluZyk6CisgICAgIyB0eXBlOiAoc3RyKSAtPiBzdHIKKyAgICByZXR1cm4g
c3RyaW5nLnJlcGxhY2UoIi4iLCAiXyIpLnJlcGxhY2UoIi0iLCAiXyIpCisKKworZGVmIF9hYmkz
X2FwcGxpZXMocHl0aG9uX3ZlcnNpb24pOgorICAgICMgdHlwZTogKFB5dGhvblZlcnNpb24pIC0+
IGJvb2wKKyAgICAiIiIKKyAgICBEZXRlcm1pbmUgaWYgdGhlIFB5dGhvbiB2ZXJzaW9uIHN1cHBv
cnRzIGFiaTMuCisKKyAgICBQRVAgMzg0IHdhcyBmaXJzdCBpbXBsZW1lbnRlZCBpbiBQeXRob24g
My4yLgorICAgICIiIgorICAgIHJldHVybiBsZW4ocHl0aG9uX3ZlcnNpb24pID4gMSBhbmQgdHVw
bGUocHl0aG9uX3ZlcnNpb24pID49ICgzLCAyKQorCisKK2RlZiBfY3B5dGhvbl9hYmlzKHB5X3Zl
cnNpb24sIHdhcm49RmFsc2UpOgorICAgICMgdHlwZTogKFB5dGhvblZlcnNpb24sIGJvb2wpIC0+
IExpc3Rbc3RyXQorICAgIHB5X3ZlcnNpb24gPSB0dXBsZShweV92ZXJzaW9uKSAgIyBUbyBhbGxv
dyBmb3IgdmVyc2lvbiBjb21wYXJpc29uLgorICAgIGFiaXMgPSBbXQorICAgIHZlcnNpb24gPSBf
dmVyc2lvbl9ub2RvdChweV92ZXJzaW9uWzoyXSkKKyAgICBkZWJ1ZyA9IHB5bWFsbG9jID0gdWNz
NCA9ICIiCisgICAgd2l0aF9kZWJ1ZyA9IF9nZXRfY29uZmlnX3ZhcigiUHlfREVCVUciLCB3YXJu
KQorICAgIGhhc19yZWZjb3VudCA9IGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpCisg
ICAgIyBXaW5kb3dzIGRvZXNuJ3Qgc2V0IFB5X0RFQlVHLCBzbyBjaGVja2luZyBmb3Igc3VwcG9y
dCBvZiBkZWJ1Zy1jb21waWxlZAorICAgICMgZXh0ZW5zaW9uIG1vZHVsZXMgaXMgdGhlIGJlc3Qg
b3B0aW9uLgorICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGlwL2lzc3Vlcy8zMzgzI2lz
c3VlY29tbWVudC0xNzMyNjc2OTIKKyAgICBoYXNfZXh0ID0gIl9kLnB5ZCIgaW4gRVhURU5TSU9O
X1NVRkZJWEVTCisgICAgaWYgd2l0aF9kZWJ1ZyBvciAod2l0aF9kZWJ1ZyBpcyBOb25lIGFuZCAo
aGFzX3JlZmNvdW50IG9yIGhhc19leHQpKToKKyAgICAgICAgZGVidWcgPSAiZCIKKyAgICBpZiBw
eV92ZXJzaW9uIDwgKDMsIDgpOgorICAgICAgICB3aXRoX3B5bWFsbG9jID0gX2dldF9jb25maWdf
dmFyKCJXSVRIX1BZTUFMTE9DIiwgd2FybikKKyAgICAgICAgaWYgd2l0aF9weW1hbGxvYyBvciB3
aXRoX3B5bWFsbG9jIGlzIE5vbmU6CisgICAgICAgICAgICBweW1hbGxvYyA9ICJtIgorICAgICAg
ICBpZiBweV92ZXJzaW9uIDwgKDMsIDMpOgorICAgICAgICAgICAgdW5pY29kZV9zaXplID0gX2dl
dF9jb25maWdfdmFyKCJQeV9VTklDT0RFX1NJWkUiLCB3YXJuKQorICAgICAgICAgICAgaWYgdW5p
Y29kZV9zaXplID09IDQgb3IgKAorICAgICAgICAgICAgICAgIHVuaWNvZGVfc2l6ZSBpcyBOb25l
IGFuZCBzeXMubWF4dW5pY29kZSA9PSAweDEwRkZGRgorICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICB1Y3M0ID0gInUiCisgICAgZWxpZiBkZWJ1ZzoKKyAgICAgICAgIyBEZWJ1ZyBidWls
ZHMgY2FuIGFsc28gbG9hZCAibm9ybWFsIiBleHRlbnNpb24gbW9kdWxlcy4KKyAgICAgICAgIyBX
ZSBjYW4gYWxzbyBhc3N1bWUgbm8gVUNTLTQgb3IgcHltYWxsb2MgcmVxdWlyZW1lbnQuCisgICAg
ICAgIGFiaXMuYXBwZW5kKCJjcHt2ZXJzaW9ufSIuZm9ybWF0KHZlcnNpb249dmVyc2lvbikpCisg
ICAgYWJpcy5pbnNlcnQoCisgICAgICAgIDAsCisgICAgICAgICJjcHt2ZXJzaW9ufXtkZWJ1Z317
cHltYWxsb2N9e3VjczR9Ii5mb3JtYXQoCisgICAgICAgICAgICB2ZXJzaW9uPXZlcnNpb24sIGRl
YnVnPWRlYnVnLCBweW1hbGxvYz1weW1hbGxvYywgdWNzND11Y3M0CisgICAgICAgICksCisgICAg
KQorICAgIHJldHVybiBhYmlzCisKKworZGVmIGNweXRob25fdGFncygKKyAgICBweXRob25fdmVy
c2lvbj1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtQeXRob25WZXJzaW9uXQorICAgIGFiaXM9Tm9u
ZSwgICMgdHlwZTogT3B0aW9uYWxbSXRlcmFibGVbc3RyXV0KKyAgICBwbGF0Zm9ybXM9Tm9uZSwg
ICMgdHlwZTogT3B0aW9uYWxbSXRlcmFibGVbc3RyXV0KKyAgICAqKmt3YXJncyAgIyB0eXBlOiBi
b29sCispOgorICAgICMgdHlwZTogKC4uLikgLT4gSXRlcmF0b3JbVGFnXQorICAgICIiIgorICAg
IFlpZWxkcyB0aGUgdGFncyBmb3IgYSBDUHl0aG9uIGludGVycHJldGVyLgorCisgICAgVGhlIHRh
Z3MgY29uc2lzdCBvZjoKKyAgICAtIGNwPHB5dGhvbl92ZXJzaW9uPi08YWJpPi08cGxhdGZvcm0+
CisgICAgLSBjcDxweXRob25fdmVyc2lvbj4tYWJpMy08cGxhdGZvcm0+CisgICAgLSBjcDxweXRo
b25fdmVyc2lvbj4tbm9uZS08cGxhdGZvcm0+CisgICAgLSBjcDxsZXNzIHRoYW4gcHl0aG9uX3Zl
cnNpb24+LWFiaTMtPHBsYXRmb3JtPiAgIyBPbGRlciBQeXRob24gdmVyc2lvbnMgZG93biB0byAz
LjIuCisKKyAgICBJZiBweXRob25fdmVyc2lvbiBvbmx5IHNwZWNpZmllcyBhIG1ham9yIHZlcnNp
b24gdGhlbiB1c2VyLXByb3ZpZGVkIEFCSXMgYW5kCisgICAgdGhlICdub25lJyBBQkl0YWcgd2ls
bCBiZSB1c2VkLgorCisgICAgSWYgJ2FiaTMnIG9yICdub25lJyBhcmUgc3BlY2lmaWVkIGluICdh
YmlzJyB0aGVuIHRoZXkgd2lsbCBiZSB5aWVsZGVkIGF0CisgICAgdGhlaXIgbm9ybWFsIHBvc2l0
aW9uIGFuZCBub3QgYXQgdGhlIGJlZ2lubmluZy4KKyAgICAiIiIKKyAgICB3YXJuID0gX3dhcm5f
a2V5d29yZF9wYXJhbWV0ZXIoImNweXRob25fdGFncyIsIGt3YXJncykKKyAgICBpZiBub3QgcHl0
aG9uX3ZlcnNpb246CisgICAgICAgIHB5dGhvbl92ZXJzaW9uID0gc3lzLnZlcnNpb25faW5mb1s6
Ml0KKworICAgIGludGVycHJldGVyID0gImNwe30iLmZvcm1hdChfdmVyc2lvbl9ub2RvdChweXRo
b25fdmVyc2lvbls6Ml0pKQorCisgICAgaWYgYWJpcyBpcyBOb25lOgorICAgICAgICBpZiBsZW4o
cHl0aG9uX3ZlcnNpb24pID4gMToKKyAgICAgICAgICAgIGFiaXMgPSBfY3B5dGhvbl9hYmlzKHB5
dGhvbl92ZXJzaW9uLCB3YXJuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWJpcyA9IFtd
CisgICAgYWJpcyA9IGxpc3QoYWJpcykKKyAgICAjICdhYmkzJyBhbmQgJ25vbmUnIGFyZSBleHBs
aWNpdGx5IGhhbmRsZWQgbGF0ZXIuCisgICAgZm9yIGV4cGxpY2l0X2FiaSBpbiAoImFiaTMiLCAi
bm9uZSIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhYmlzLnJlbW92ZShleHBsaWNpdF9h
YmkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAg
cGxhdGZvcm1zID0gbGlzdChwbGF0Zm9ybXMgb3IgX3BsYXRmb3JtX3RhZ3MoKSkKKyAgICBmb3Ig
YWJpIGluIGFiaXM6CisgICAgICAgIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zOgorICAgICAg
ICAgICAgeWllbGQgVGFnKGludGVycHJldGVyLCBhYmksIHBsYXRmb3JtXykKKyAgICBpZiBfYWJp
M19hcHBsaWVzKHB5dGhvbl92ZXJzaW9uKToKKyAgICAgICAgZm9yIHRhZyBpbiAoVGFnKGludGVy
cHJldGVyLCAiYWJpMyIsIHBsYXRmb3JtXykgZm9yIHBsYXRmb3JtXyBpbiBwbGF0Zm9ybXMpOgor
ICAgICAgICAgICAgeWllbGQgdGFnCisgICAgZm9yIHRhZyBpbiAoVGFnKGludGVycHJldGVyLCAi
bm9uZSIsIHBsYXRmb3JtXykgZm9yIHBsYXRmb3JtXyBpbiBwbGF0Zm9ybXMpOgorICAgICAgICB5
aWVsZCB0YWcKKworICAgIGlmIF9hYmkzX2FwcGxpZXMocHl0aG9uX3ZlcnNpb24pOgorICAgICAg
ICBmb3IgbWlub3JfdmVyc2lvbiBpbiByYW5nZShweXRob25fdmVyc2lvblsxXSAtIDEsIDEsIC0x
KToKKyAgICAgICAgICAgIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zOgorICAgICAgICAgICAg
ICAgIGludGVycHJldGVyID0gImNwe3ZlcnNpb259Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAg
ICAgIHZlcnNpb249X3ZlcnNpb25fbm9kb3QoKHB5dGhvbl92ZXJzaW9uWzBdLCBtaW5vcl92ZXJz
aW9uKSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgeWllbGQgVGFnKGludGVy
cHJldGVyLCAiYWJpMyIsIHBsYXRmb3JtXykKKworCitkZWYgX2dlbmVyaWNfYWJpKCk6CisgICAg
IyB0eXBlOiAoKSAtPiBJdGVyYXRvcltzdHJdCisgICAgYWJpID0gc3lzY29uZmlnLmdldF9jb25m
aWdfdmFyKCJTT0FCSSIpCisgICAgaWYgYWJpOgorICAgICAgICB5aWVsZCBfbm9ybWFsaXplX3N0
cmluZyhhYmkpCisKKworZGVmIGdlbmVyaWNfdGFncygKKyAgICBpbnRlcnByZXRlcj1Ob25lLCAg
IyB0eXBlOiBPcHRpb25hbFtzdHJdCisgICAgYWJpcz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtJ
dGVyYWJsZVtzdHJdXQorICAgIHBsYXRmb3Jtcz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtJdGVy
YWJsZVtzdHJdXQorICAgICoqa3dhcmdzICAjIHR5cGU6IGJvb2wKKyk6CisgICAgIyB0eXBlOiAo
Li4uKSAtPiBJdGVyYXRvcltUYWddCisgICAgIiIiCisgICAgWWllbGRzIHRoZSB0YWdzIGZvciBh
IGdlbmVyaWMgaW50ZXJwcmV0ZXIuCisKKyAgICBUaGUgdGFncyBjb25zaXN0IG9mOgorICAgIC0g
PGludGVycHJldGVyPi08YWJpPi08cGxhdGZvcm0+CisKKyAgICBUaGUgIm5vbmUiIEFCSSB3aWxs
IGJlIGFkZGVkIGlmIGl0IHdhcyBub3QgZXhwbGljaXRseSBwcm92aWRlZC4KKyAgICAiIiIKKyAg
ICB3YXJuID0gX3dhcm5fa2V5d29yZF9wYXJhbWV0ZXIoImdlbmVyaWNfdGFncyIsIGt3YXJncykK
KyAgICBpZiBub3QgaW50ZXJwcmV0ZXI6CisgICAgICAgIGludGVycF9uYW1lID0gaW50ZXJwcmV0
ZXJfbmFtZSgpCisgICAgICAgIGludGVycF92ZXJzaW9uID0gaW50ZXJwcmV0ZXJfdmVyc2lvbih3
YXJuPXdhcm4pCisgICAgICAgIGludGVycHJldGVyID0gIiIuam9pbihbaW50ZXJwX25hbWUsIGlu
dGVycF92ZXJzaW9uXSkKKyAgICBpZiBhYmlzIGlzIE5vbmU6CisgICAgICAgIGFiaXMgPSBfZ2Vu
ZXJpY19hYmkoKQorICAgIHBsYXRmb3JtcyA9IGxpc3QocGxhdGZvcm1zIG9yIF9wbGF0Zm9ybV90
YWdzKCkpCisgICAgYWJpcyA9IGxpc3QoYWJpcykKKyAgICBpZiAibm9uZSIgbm90IGluIGFiaXM6
CisgICAgICAgIGFiaXMuYXBwZW5kKCJub25lIikKKyAgICBmb3IgYWJpIGluIGFiaXM6CisgICAg
ICAgIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zOgorICAgICAgICAgICAgeWllbGQgVGFnKGlu
dGVycHJldGVyLCBhYmksIHBsYXRmb3JtXykKKworCitkZWYgX3B5X2ludGVycHJldGVyX3Jhbmdl
KHB5X3ZlcnNpb24pOgorICAgICMgdHlwZTogKFB5dGhvblZlcnNpb24pIC0+IEl0ZXJhdG9yW3N0
cl0KKyAgICAiIiIKKyAgICBZaWVsZHMgUHl0aG9uIHZlcnNpb25zIGluIGRlc2NlbmRpbmcgb3Jk
ZXIuCisKKyAgICBBZnRlciB0aGUgbGF0ZXN0IHZlcnNpb24sIHRoZSBtYWpvci1vbmx5IHZlcnNp
b24gd2lsbCBiZSB5aWVsZGVkLCBhbmQgdGhlbgorICAgIGFsbCBwcmV2aW91cyB2ZXJzaW9ucyBv
ZiB0aGF0IG1ham9yIHZlcnNpb24uCisgICAgIiIiCisgICAgaWYgbGVuKHB5X3ZlcnNpb24pID4g
MToKKyAgICAgICAgeWllbGQgInB5e3ZlcnNpb259Ii5mb3JtYXQodmVyc2lvbj1fdmVyc2lvbl9u
b2RvdChweV92ZXJzaW9uWzoyXSkpCisgICAgeWllbGQgInB5e21ham9yfSIuZm9ybWF0KG1ham9y
PXB5X3ZlcnNpb25bMF0pCisgICAgaWYgbGVuKHB5X3ZlcnNpb24pID4gMToKKyAgICAgICAgZm9y
IG1pbm9yIGluIHJhbmdlKHB5X3ZlcnNpb25bMV0gLSAxLCAtMSwgLTEpOgorICAgICAgICAgICAg
eWllbGQgInB5e3ZlcnNpb259Ii5mb3JtYXQodmVyc2lvbj1fdmVyc2lvbl9ub2RvdCgocHlfdmVy
c2lvblswXSwgbWlub3IpKSkKKworCitkZWYgY29tcGF0aWJsZV90YWdzKAorICAgIHB5dGhvbl92
ZXJzaW9uPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW1B5dGhvblZlcnNpb25dCisgICAgaW50ZXJw
cmV0ZXI9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbc3RyXQorICAgIHBsYXRmb3Jtcz1Ob25lLCAg
IyB0eXBlOiBPcHRpb25hbFtJdGVyYWJsZVtzdHJdXQorKToKKyAgICAjIHR5cGU6ICguLi4pIC0+
IEl0ZXJhdG9yW1RhZ10KKyAgICAiIiIKKyAgICBZaWVsZHMgdGhlIHNlcXVlbmNlIG9mIHRhZ3Mg
dGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBQeXRob24uCisK
KyAgICBUaGUgdGFncyBjb25zaXN0IG9mOgorICAgIC0gcHkqLW5vbmUtPHBsYXRmb3JtPgorICAg
IC0gPGludGVycHJldGVyPi1ub25lLWFueSAgIyAuLi4gaWYgYGludGVycHJldGVyYCBpcyBwcm92
aWRlZC4KKyAgICAtIHB5Ki1ub25lLWFueQorICAgICIiIgorICAgIGlmIG5vdCBweXRob25fdmVy
c2lvbjoKKyAgICAgICAgcHl0aG9uX3ZlcnNpb24gPSBzeXMudmVyc2lvbl9pbmZvWzoyXQorICAg
IHBsYXRmb3JtcyA9IGxpc3QocGxhdGZvcm1zIG9yIF9wbGF0Zm9ybV90YWdzKCkpCisgICAgZm9y
IHZlcnNpb24gaW4gX3B5X2ludGVycHJldGVyX3JhbmdlKHB5dGhvbl92ZXJzaW9uKToKKyAgICAg
ICAgZm9yIHBsYXRmb3JtXyBpbiBwbGF0Zm9ybXM6CisgICAgICAgICAgICB5aWVsZCBUYWcodmVy
c2lvbiwgIm5vbmUiLCBwbGF0Zm9ybV8pCisgICAgaWYgaW50ZXJwcmV0ZXI6CisgICAgICAgIHlp
ZWxkIFRhZyhpbnRlcnByZXRlciwgIm5vbmUiLCAiYW55IikKKyAgICBmb3IgdmVyc2lvbiBpbiBf
cHlfaW50ZXJwcmV0ZXJfcmFuZ2UocHl0aG9uX3ZlcnNpb24pOgorICAgICAgICB5aWVsZCBUYWco
dmVyc2lvbiwgIm5vbmUiLCAiYW55IikKKworCitkZWYgX21hY19hcmNoKGFyY2gsIGlzXzMyYml0
PV8zMl9CSVRfSU5URVJQUkVURVIpOgorICAgICMgdHlwZTogKHN0ciwgYm9vbCkgLT4gc3RyCisg
ICAgaWYgbm90IGlzXzMyYml0OgorICAgICAgICByZXR1cm4gYXJjaAorCisgICAgaWYgYXJjaC5z
dGFydHN3aXRoKCJwcGMiKToKKyAgICAgICAgcmV0dXJuICJwcGMiCisKKyAgICByZXR1cm4gImkz
ODYiCisKKworZGVmIF9tYWNfYmluYXJ5X2Zvcm1hdHModmVyc2lvbiwgY3B1X2FyY2gpOgorICAg
ICMgdHlwZTogKE1hY1ZlcnNpb24sIHN0cikgLT4gTGlzdFtzdHJdCisgICAgZm9ybWF0cyA9IFtj
cHVfYXJjaF0KKyAgICBpZiBjcHVfYXJjaCA9PSAieDg2XzY0IjoKKyAgICAgICAgaWYgdmVyc2lv
biA8ICgxMCwgNCk6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZm9ybWF0cy5leHRl
bmQoWyJpbnRlbCIsICJmYXQ2NCIsICJmYXQzMiJdKQorCisgICAgZWxpZiBjcHVfYXJjaCA9PSAi
aTM4NiI6CisgICAgICAgIGlmIHZlcnNpb24gPCAoMTAsIDQpOgorICAgICAgICAgICAgcmV0dXJu
IFtdCisgICAgICAgIGZvcm1hdHMuZXh0ZW5kKFsiaW50ZWwiLCAiZmF0MzIiLCAiZmF0Il0pCisK
KyAgICBlbGlmIGNwdV9hcmNoID09ICJwcGM2NCI6CisgICAgICAgICMgVE9ETzogTmVlZCB0byBj
YXJlIGFib3V0IDMyLWJpdCBQUEMgZm9yIHBwYzY0IHRocm91Z2ggMTAuMj8KKyAgICAgICAgaWYg
dmVyc2lvbiA+ICgxMCwgNSkgb3IgdmVyc2lvbiA8ICgxMCwgNCk6CisgICAgICAgICAgICByZXR1
cm4gW10KKyAgICAgICAgZm9ybWF0cy5hcHBlbmQoImZhdDY0IikKKworICAgIGVsaWYgY3B1X2Fy
Y2ggPT0gInBwYyI6CisgICAgICAgIGlmIHZlcnNpb24gPiAoMTAsIDYpOgorICAgICAgICAgICAg
cmV0dXJuIFtdCisgICAgICAgIGZvcm1hdHMuZXh0ZW5kKFsiZmF0MzIiLCAiZmF0Il0pCisKKyAg
ICBpZiBjcHVfYXJjaCBpbiB7ImFybTY0IiwgIng4Nl82NCJ9OgorICAgICAgICBmb3JtYXRzLmFw
cGVuZCgidW5pdmVyc2FsMiIpCisKKyAgICBpZiBjcHVfYXJjaCBpbiB7Ing4Nl82NCIsICJpMzg2
IiwgInBwYzY0IiwgInBwYyJ9OgorICAgICAgICBmb3JtYXRzLmFwcGVuZCgidW5pdmVyc2FsIikK
KworICAgIHJldHVybiBmb3JtYXRzCisKKworZGVmIG1hY19wbGF0Zm9ybXModmVyc2lvbj1Ob25l
LCBhcmNoPU5vbmUpOgorICAgICMgdHlwZTogKE9wdGlvbmFsW01hY1ZlcnNpb25dLCBPcHRpb25h
bFtzdHJdKSAtPiBJdGVyYXRvcltzdHJdCisgICAgIiIiCisgICAgWWllbGRzIHRoZSBwbGF0Zm9y
bSB0YWdzIGZvciBhIG1hY09TIHN5c3RlbS4KKworICAgIFRoZSBgdmVyc2lvbmAgcGFyYW1ldGVy
IGlzIGEgdHdvLWl0ZW0gdHVwbGUgc3BlY2lmeWluZyB0aGUgbWFjT1MgdmVyc2lvbiB0bworICAg
IGdlbmVyYXRlIHBsYXRmb3JtIHRhZ3MgZm9yLiBUaGUgYGFyY2hgIHBhcmFtZXRlciBpcyB0aGUg
Q1BVIGFyY2hpdGVjdHVyZSB0bworICAgIGdlbmVyYXRlIHBsYXRmb3JtIHRhZ3MgZm9yLiBCb3Ro
IHBhcmFtZXRlcnMgZGVmYXVsdCB0byB0aGUgYXBwcm9wcmlhdGUgdmFsdWUKKyAgICBmb3IgdGhl
IGN1cnJlbnQgc3lzdGVtLgorICAgICIiIgorICAgIHZlcnNpb25fc3RyLCBfLCBjcHVfYXJjaCA9
IHBsYXRmb3JtLm1hY192ZXIoKSAgIyB0eXBlOiBpZ25vcmUKKyAgICBpZiB2ZXJzaW9uIGlzIE5v
bmU6CisgICAgICAgIHZlcnNpb24gPSBjYXN0KCJNYWNWZXJzaW9uIiwgdHVwbGUobWFwKGludCwg
dmVyc2lvbl9zdHIuc3BsaXQoIi4iKVs6Ml0pKSkKKyAgICBlbHNlOgorICAgICAgICB2ZXJzaW9u
ID0gdmVyc2lvbgorICAgIGlmIGFyY2ggaXMgTm9uZToKKyAgICAgICAgYXJjaCA9IF9tYWNfYXJj
aChjcHVfYXJjaCkKKyAgICBlbHNlOgorICAgICAgICBhcmNoID0gYXJjaAorCisgICAgaWYgKDEw
LCAwKSA8PSB2ZXJzaW9uIGFuZCB2ZXJzaW9uIDwgKDExLCAwKToKKyAgICAgICAgIyBQcmlvciB0
byBNYWMgT1MgMTEsIGVhY2ggeWVhcmx5IHJlbGVhc2Ugb2YgTWFjIE9TIGJ1bXBlZCB0aGUKKyAg
ICAgICAgIyAibWlub3IiIHZlcnNpb24gbnVtYmVyLiAgVGhlIG1ham9yIHZlcnNpb24gd2FzIGFs
d2F5cyAxMC4KKyAgICAgICAgZm9yIG1pbm9yX3ZlcnNpb24gaW4gcmFuZ2UodmVyc2lvblsxXSwg
LTEsIC0xKToKKyAgICAgICAgICAgIGNvbXBhdF92ZXJzaW9uID0gMTAsIG1pbm9yX3ZlcnNpb24K
KyAgICAgICAgICAgIGJpbmFyeV9mb3JtYXRzID0gX21hY19iaW5hcnlfZm9ybWF0cyhjb21wYXRf
dmVyc2lvbiwgYXJjaCkKKyAgICAgICAgICAgIGZvciBiaW5hcnlfZm9ybWF0IGluIGJpbmFyeV9m
b3JtYXRzOgorICAgICAgICAgICAgICAgIHlpZWxkICJtYWNvc3hfe21ham9yfV97bWlub3J9X3ti
aW5hcnlfZm9ybWF0fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBtYWpvcj0xMCwgbWlu
b3I9bWlub3JfdmVyc2lvbiwgYmluYXJ5X2Zvcm1hdD1iaW5hcnlfZm9ybWF0CisgICAgICAgICAg
ICAgICAgKQorCisgICAgaWYgdmVyc2lvbiA+PSAoMTEsIDApOgorICAgICAgICAjIFN0YXJ0aW5n
IHdpdGggTWFjIE9TIDExLCBlYWNoIHllYXJseSByZWxlYXNlIGJ1bXBzIHRoZSBtYWpvciB2ZXJz
aW9uCisgICAgICAgICMgbnVtYmVyLiAgIFRoZSBtaW5vciB2ZXJzaW9ucyBhcmUgbm93IHRoZSBt
aWR5ZWFyIHVwZGF0ZXMuCisgICAgICAgIGZvciBtYWpvcl92ZXJzaW9uIGluIHJhbmdlKHZlcnNp
b25bMF0sIDEwLCAtMSk6CisgICAgICAgICAgICBjb21wYXRfdmVyc2lvbiA9IG1ham9yX3ZlcnNp
b24sIDAKKyAgICAgICAgICAgIGJpbmFyeV9mb3JtYXRzID0gX21hY19iaW5hcnlfZm9ybWF0cyhj
b21wYXRfdmVyc2lvbiwgYXJjaCkKKyAgICAgICAgICAgIGZvciBiaW5hcnlfZm9ybWF0IGluIGJp
bmFyeV9mb3JtYXRzOgorICAgICAgICAgICAgICAgIHlpZWxkICJtYWNvc3hfe21ham9yfV97bWlu
b3J9X3tiaW5hcnlfZm9ybWF0fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBtYWpvcj1t
YWpvcl92ZXJzaW9uLCBtaW5vcj0wLCBiaW5hcnlfZm9ybWF0PWJpbmFyeV9mb3JtYXQKKyAgICAg
ICAgICAgICAgICApCisKKyAgICBpZiB2ZXJzaW9uID49ICgxMSwgMCkgYW5kIGFyY2ggPT0gIng4
Nl82NCI6CisgICAgICAgICMgTWFjIE9TIDExIG9uIHg4Nl82NCBpcyBjb21wYXRpYmxlIHdpdGgg
YmluYXJpZXMgZnJvbSBwcmV2aW91cyByZWxlYXNlcy4KKyAgICAgICAgIyBBcm02NCBzdXBwb3J0
IHdhcyBpbnRyb2R1Y2VkIGluIDExLjAsIHNvIG5vIEFybSBiaW5hcmllcyBmcm9tIHByZXZpb3Vz
CisgICAgICAgICMgcmVsZWFzZXMgZXhpc3QuCisgICAgICAgIGZvciBtaW5vcl92ZXJzaW9uIGlu
IHJhbmdlKDE2LCAzLCAtMSk6CisgICAgICAgICAgICBjb21wYXRfdmVyc2lvbiA9IDEwLCBtaW5v
cl92ZXJzaW9uCisgICAgICAgICAgICBiaW5hcnlfZm9ybWF0cyA9IF9tYWNfYmluYXJ5X2Zvcm1h
dHMoY29tcGF0X3ZlcnNpb24sIGFyY2gpCisgICAgICAgICAgICBmb3IgYmluYXJ5X2Zvcm1hdCBp
biBiaW5hcnlfZm9ybWF0czoKKyAgICAgICAgICAgICAgICB5aWVsZCAibWFjb3N4X3ttYWpvcn1f
e21pbm9yfV97YmluYXJ5X2Zvcm1hdH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgbWFq
b3I9Y29tcGF0X3ZlcnNpb25bMF0sCisgICAgICAgICAgICAgICAgICAgIG1pbm9yPWNvbXBhdF92
ZXJzaW9uWzFdLAorICAgICAgICAgICAgICAgICAgICBiaW5hcnlfZm9ybWF0PWJpbmFyeV9mb3Jt
YXQsCisgICAgICAgICAgICAgICAgKQorCisKKyMgRnJvbSBQRVAgNTEzLCBQRVAgNjAwCitkZWYg
X2lzX21hbnlsaW51eF9jb21wYXRpYmxlKG5hbWUsIGFyY2gsIGdsaWJjX3ZlcnNpb24pOgorICAg
ICMgdHlwZTogKHN0ciwgc3RyLCBHbGliY1ZlcnNpb24pIC0+IGJvb2wKKyAgICBzeXNfZ2xpYmMg
PSBfZ2V0X2dsaWJjX3ZlcnNpb24oKQorICAgIGlmIHN5c19nbGliYyA8IGdsaWJjX3ZlcnNpb246
CisgICAgICAgIHJldHVybiBGYWxzZQorICAgICMgQ2hlY2sgZm9yIHByZXNlbmNlIG9mIF9tYW55
bGludXggbW9kdWxlLgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IF9tYW55bGludXggICMgbm9x
YQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAg
ICAgIGlmIGhhc2F0dHIoX21hbnlsaW51eCwgIm1hbnlsaW51eF9jb21wYXRpYmxlIik6CisgICAg
ICAgICAgICByZXN1bHQgPSBfbWFueWxpbnV4Lm1hbnlsaW51eF9jb21wYXRpYmxlKAorICAgICAg
ICAgICAgICAgIGdsaWJjX3ZlcnNpb25bMF0sIGdsaWJjX3ZlcnNpb25bMV0sIGFyY2gKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYm9vbChyZXN1bHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBn
bGliY192ZXJzaW9uID09ICgyLCA1KToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKF9tYW55
bGludXgsICJtYW55bGludXgxX2NvbXBhdGlibGUiKToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJvb2woX21hbnlsaW51eC5tYW55bGludXgxX2NvbXBhdGlibGUpCisgICAgICAgICAgICBp
ZiBnbGliY192ZXJzaW9uID09ICgyLCAxMik6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihf
bWFueWxpbnV4LCAibWFueWxpbnV4MjAxMF9jb21wYXRpYmxlIik6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBib29sKF9tYW55bGludXgubWFueWxpbnV4MjAxMF9jb21wYXRpYmxlKQorICAg
ICAgICAgICAgaWYgZ2xpYmNfdmVyc2lvbiA9PSAoMiwgMTcpOgorICAgICAgICAgICAgICAgIGlm
IGhhc2F0dHIoX21hbnlsaW51eCwgIm1hbnlsaW51eDIwMTRfY29tcGF0aWJsZSIpOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYm9vbChfbWFueWxpbnV4Lm1hbnlsaW51eDIwMTRfY29tcGF0
aWJsZSkKKyAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBfZ2xpYmNfdmVyc2lvbl9zdHJpbmcoKToK
KyAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW3N0cl0KKyAgICAjIFJldHVybnMgZ2xpYmMgdmVy
c2lvbiBzdHJpbmcsIG9yIE5vbmUgaWYgbm90IHVzaW5nIGdsaWJjLgorICAgIHJldHVybiBfZ2xp
YmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cigpIG9yIF9nbGliY192ZXJzaW9uX3N0cmluZ19jdHlw
ZXMoKQorCisKK2RlZiBfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cigpOgorICAgICMgdHlw
ZTogKCkgLT4gT3B0aW9uYWxbc3RyXQorICAgICIiIgorICAgIFByaW1hcnkgaW1wbGVtZW50YXRp
b24gb2YgZ2xpYmNfdmVyc2lvbl9zdHJpbmcgdXNpbmcgb3MuY29uZnN0ci4KKyAgICAiIiIKKyAg
ICAjIG9zLmNvbmZzdHIgaXMgcXVpdGUgYSBiaXQgZmFzdGVyIHRoYW4gY3R5cGVzLkRMTC4gSXQn
cyBhbHNvIGxlc3MgbGlrZWx5CisgICAgIyB0byBiZSBicm9rZW4gb3IgbWlzc2luZy4gVGhpcyBz
dHJhdGVneSBpcyB1c2VkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisgICAgIyBwbGF0Zm9ybSBt
b2R1bGUuCisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vYmxvYi9mY2Yx
ZDAwM2JmNGYwMTAwYzlkMDkyMWZmM2Q3MGUxMTI3Y2ExYjcxL0xpYi9wbGF0Zm9ybS5weSNMMTc1
LUwxODMKKyAgICB0cnk6CisgICAgICAgICMgb3MuY29uZnN0cigiQ1NfR05VX0xJQkNfVkVSU0lP
TiIpIHJldHVybnMgYSBzdHJpbmcgbGlrZSAiZ2xpYmMgMi4xNyIuCisgICAgICAgIHZlcnNpb25f
c3RyaW5nID0gb3MuY29uZnN0ciggICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0gIyBub3Fh
OiBGODIxCisgICAgICAgICAgICAiQ1NfR05VX0xJQkNfVkVSU0lPTiIKKyAgICAgICAgKQorICAg
ICAgICBhc3NlcnQgdmVyc2lvbl9zdHJpbmcgaXMgbm90IE5vbmUKKyAgICAgICAgXywgdmVyc2lv
biA9IHZlcnNpb25fc3RyaW5nLnNwbGl0KCkgICMgdHlwZTogVHVwbGVbc3RyLCBzdHJdCisgICAg
ZXhjZXB0IChBc3NlcnRpb25FcnJvciwgQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IsIFZhbHVlRXJy
b3IpOgorICAgICAgICAjIG9zLmNvbmZzdHIoKSBvciBDU19HTlVfTElCQ19WRVJTSU9OIG5vdCBh
dmFpbGFibGUgKG9yIGEgYmFkIHZhbHVlKS4uLgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJl
dHVybiB2ZXJzaW9uCisKKworZGVmIF9nbGliY192ZXJzaW9uX3N0cmluZ19jdHlwZXMoKToKKyAg
ICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW3N0cl0KKyAgICAiIiIKKyAgICBGYWxsYmFjayBpbXBs
ZW1lbnRhdGlvbiBvZiBnbGliY192ZXJzaW9uX3N0cmluZyB1c2luZyBjdHlwZXMuCisgICAgIiIi
CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgY3R5cGVzCisgICAgZXhjZXB0IEltcG9ydEVycm9y
OgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgIyBjdHlwZXMuQ0RMTChOb25lKSBpbnRlcm5h
bGx5IGNhbGxzIGRsb3BlbihOVUxMKSwgYW5kIGFzIHRoZSBkbG9wZW4KKyAgICAjIG1hbnBhZ2Ug
c2F5cywgIklmIGZpbGVuYW1lIGlzIE5VTEwsIHRoZW4gdGhlIHJldHVybmVkIGhhbmRsZSBpcyBm
b3IgdGhlCisgICAgIyBtYWluIHByb2dyYW0iLiBUaGlzIHdheSB3ZSBjYW4gbGV0IHRoZSBsaW5r
ZXIgZG8gdGhlIHdvcmsgdG8gZmlndXJlIG91dAorICAgICMgd2hpY2ggbGliYyBvdXIgcHJvY2Vz
cyBpcyBhY3R1YWxseSB1c2luZy4KKyAgICAjCisgICAgIyBXZSBtdXN0IGFsc28gaGFuZGxlIHRo
ZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIGV4ZWN1dGFibGUgaXMgbm90IGEKKyAgICAjIGR5bmFt
aWNhbGx5IGxpbmtlZCBleGVjdXRhYmxlLiBUaGlzIGNhbiBvY2N1ciB3aGVuIHVzaW5nIG11c2wg
bGliYywKKyAgICAjIGZvciBleGFtcGxlLiBJbiB0aGlzIHNpdHVhdGlvbiwgZGxvcGVuKCkgd2ls
bCBlcnJvciwgbGVhZGluZyB0byBhbgorICAgICMgT1NFcnJvci4gSW50ZXJlc3RpbmdseSwgYXQg
bGVhc3QgaW4gdGhlIGNhc2Ugb2YgbXVzbCwgdGhlcmUgaXMgbm8KKyAgICAjIGVycm5vIHNldCBv
biB0aGUgT1NFcnJvci4gVGhlIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQgdXNlZCB0byBjb25zdHJ1
Y3QKKyAgICAjIE9TRXJyb3IgY29tZXMgZnJvbSBsaWJjIGl0c2VsZiBhbmQgaXMgdGhlcmVmb3Jl
IG5vdCBwb3J0YWJsZSB0bworICAgICMgaGFyZCBjb2RlIGhlcmUuIEluIGFueSBjYXNlLCBmYWls
dXJlIHRvIGNhbGwgZGxvcGVuKCkgbWVhbnMgd2UKKyAgICAjIGNhbiBwcm9jZWVkLCBzbyB3ZSBi
YWlsIG9uIG91ciBhdHRlbXB0LgorICAgIHRyeToKKyAgICAgICAgIyBOb3RlOiB0eXBlc2hlZCBp
cyB3cm9uZyBoZXJlIHNvIHdlIGFyZSBpZ25vcmluZyB0aGlzIGxpbmUuCisgICAgICAgIHByb2Nl
c3NfbmFtZXNwYWNlID0gY3R5cGVzLkNETEwoTm9uZSkgICMgdHlwZTogaWdub3JlCisgICAgZXhj
ZXB0IE9TRXJyb3I6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICB0cnk6CisgICAgICAgIGdu
dV9nZXRfbGliY192ZXJzaW9uID0gcHJvY2Vzc19uYW1lc3BhY2UuZ251X2dldF9saWJjX3ZlcnNp
b24KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgU3ltYm9sIGRvZXNuJ3Qg
ZXhpc3QgLT4gdGhlcmVmb3JlLCB3ZSBhcmUgbm90IGxpbmtlZCB0bworICAgICAgICAjIGdsaWJj
LgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgIyBDYWxsIGdudV9nZXRfbGliY192ZXJzaW9u
LCB3aGljaCByZXR1cm5zIGEgc3RyaW5nIGxpa2UgIjIuNSIKKyAgICBnbnVfZ2V0X2xpYmNfdmVy
c2lvbi5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgdmVyc2lvbl9zdHIgPSBnbnVfZ2V0
X2xpYmNfdmVyc2lvbigpICAjIHR5cGU6IHN0cgorICAgICMgcHkyIC8gcHkzIGNvbXBhdGliaWxp
dHk6CisgICAgaWYgbm90IGlzaW5zdGFuY2UodmVyc2lvbl9zdHIsIHN0cik6CisgICAgICAgIHZl
cnNpb25fc3RyID0gdmVyc2lvbl9zdHIuZGVjb2RlKCJhc2NpaSIpCisKKyAgICByZXR1cm4gdmVy
c2lvbl9zdHIKKworCitkZWYgX3BhcnNlX2dsaWJjX3ZlcnNpb24odmVyc2lvbl9zdHIpOgorICAg
ICMgdHlwZTogKHN0cikgLT4gVHVwbGVbaW50LCBpbnRdCisgICAgIyBQYXJzZSBnbGliYyB2ZXJz
aW9uLgorICAgICMKKyAgICAjIFdlIHVzZSBhIHJlZ2V4cCBpbnN0ZWFkIG9mIHN0ci5zcGxpdCBi
ZWNhdXNlIHdlIHdhbnQgdG8gZGlzY2FyZCBhbnkKKyAgICAjIHJhbmRvbSBqdW5rIHRoYXQgbWln
aHQgY29tZSBhZnRlciB0aGUgbWlub3IgdmVyc2lvbiAtLSB0aGlzIG1pZ2h0IGhhcHBlbgorICAg
ICMgaW4gcGF0Y2hlZC9mb3JrZWQgdmVyc2lvbnMgb2YgZ2xpYmMgKGUuZy4gTGluYXJvJ3MgdmVy
c2lvbiBvZiBnbGliYworICAgICMgdXNlcyB2ZXJzaW9uIHN0cmluZ3MgbGlrZSAiMi4yMC0yMDE0
LjExIikuIFNlZSBnaC0zNTg4LgorICAgIG0gPSByZS5tYXRjaChyIig/UDxtYWpvcj5bMC05XSsp
XC4oP1A8bWlub3I+WzAtOV0rKSIsIHZlcnNpb25fc3RyKQorICAgIGlmIG5vdCBtOgorICAgICAg
ICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgIkV4cGVjdGVkIGdsaWJjIHZlcnNpb24gd2l0
aCAyIGNvbXBvbmVudHMgbWFqb3IubWlub3IsIgorICAgICAgICAgICAgIiBnb3Q6ICVzIiAlIHZl
cnNpb25fc3RyLAorICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsCisgICAgICAgICkKKyAgICAg
ICAgcmV0dXJuIC0xLCAtMQorICAgIHJldHVybiAoaW50KG0uZ3JvdXAoIm1ham9yIikpLCBpbnQo
bS5ncm91cCgibWlub3IiKSkpCisKKworX2dsaWJjX3ZlcnNpb24gPSBbXSAgIyAgdHlwZTogTGlz
dFtUdXBsZVtpbnQsIGludF1dCisKKworZGVmIF9nZXRfZ2xpYmNfdmVyc2lvbigpOgorICAgICMg
dHlwZTogKCkgLT4gVHVwbGVbaW50LCBpbnRdCisgICAgaWYgX2dsaWJjX3ZlcnNpb246CisgICAg
ICAgIHJldHVybiBfZ2xpYmNfdmVyc2lvblswXQorICAgIHZlcnNpb25fc3RyID0gX2dsaWJjX3Zl
cnNpb25fc3RyaW5nKCkKKyAgICBpZiB2ZXJzaW9uX3N0ciBpcyBOb25lOgorICAgICAgICBfZ2xp
YmNfdmVyc2lvbi5hcHBlbmQoKC0xLCAtMSkpCisgICAgZWxzZToKKyAgICAgICAgX2dsaWJjX3Zl
cnNpb24uYXBwZW5kKF9wYXJzZV9nbGliY192ZXJzaW9uKHZlcnNpb25fc3RyKSkKKyAgICByZXR1
cm4gX2dsaWJjX3ZlcnNpb25bMF0KKworCisjIFB5dGhvbiBkb2VzIG5vdCBwcm92aWRlIHBsYXRm
b3JtIGluZm9ybWF0aW9uIGF0IHN1ZmZpY2llbnQgZ3JhbnVsYXJpdHkgdG8KKyMgaWRlbnRpZnkg
dGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgcnVubmluZyBleGVjdXRhYmxlIGluIHNvbWUgY2FzZXMs
IHNvIHdlCisjIGRldGVybWluZSBpdCBkeW5hbWljYWxseSBieSByZWFkaW5nIHRoZSBpbmZvcm1h
dGlvbiBmcm9tIHRoZSBydW5uaW5nCisjIHByb2Nlc3MuIFRoaXMgb25seSBhcHBsaWVzIG9uIExp
bnV4LCB3aGljaCB1c2VzIHRoZSBFTEYgZm9ybWF0LgorY2xhc3MgX0VMRkZpbGVIZWFkZXIob2Jq
ZWN0KToKKyAgICAjIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4ZWN1dGFibGVfYW5k
X0xpbmthYmxlX0Zvcm1hdCNGaWxlX2hlYWRlcgorICAgIGNsYXNzIF9JbnZhbGlkRUxGRmlsZUhl
YWRlcihWYWx1ZUVycm9yKToKKyAgICAgICAgIiIiCisgICAgICAgIEFuIGludmFsaWQgRUxGIGZp
bGUgaGVhZGVyIHdhcyBmb3VuZC4KKyAgICAgICAgIiIiCisKKyAgICBFTEZfTUFHSUNfTlVNQkVS
ID0gMHg3RjQ1NEM0NgorICAgIEVMRkNMQVNTMzIgPSAxCisgICAgRUxGQ0xBU1M2NCA9IDIKKyAg
ICBFTEZEQVRBMkxTQiA9IDEKKyAgICBFTEZEQVRBMk1TQiA9IDIKKyAgICBFTV8zODYgPSAzCisg
ICAgRU1fUzM5MCA9IDIyCisgICAgRU1fQVJNID0gNDAKKyAgICBFTV9YODZfNjQgPSA2MgorICAg
IEVGX0FSTV9BQklNQVNLID0gMHhGRjAwMDAwMAorICAgIEVGX0FSTV9BQklfVkVSNSA9IDB4MDUw
MDAwMDAKKyAgICBFRl9BUk1fQUJJX0ZMT0FUX0hBUkQgPSAweDAwMDAwNDAwCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgZmlsZSk6CisgICAgICAgICMgdHlwZTogKElPW2J5dGVzXSkgLT4gTm9u
ZQorICAgICAgICBkZWYgdW5wYWNrKGZtdCk6CisgICAgICAgICAgICAjIHR5cGU6IChzdHIpIC0+
IGludAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIChyZXN1bHQsKSA9IHN0cnVj
dC51bnBhY2soCisgICAgICAgICAgICAgICAgICAgIGZtdCwgZmlsZS5yZWFkKHN0cnVjdC5jYWxj
c2l6ZShmbXQpKQorICAgICAgICAgICAgICAgICkgICMgdHlwZTogKGludCwgKQorICAgICAgICAg
ICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBfRUxGRmlsZUhl
YWRlci5fSW52YWxpZEVMRkZpbGVIZWFkZXIoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAor
CisgICAgICAgIHNlbGYuZV9pZGVudF9tYWdpYyA9IHVucGFjaygiPkkiKQorICAgICAgICBpZiBz
ZWxmLmVfaWRlbnRfbWFnaWMgIT0gc2VsZi5FTEZfTUFHSUNfTlVNQkVSOgorICAgICAgICAgICAg
cmFpc2UgX0VMRkZpbGVIZWFkZXIuX0ludmFsaWRFTEZGaWxlSGVhZGVyKCkKKyAgICAgICAgc2Vs
Zi5lX2lkZW50X2NsYXNzID0gdW5wYWNrKCJCIikKKyAgICAgICAgaWYgc2VsZi5lX2lkZW50X2Ns
YXNzIG5vdCBpbiB7c2VsZi5FTEZDTEFTUzMyLCBzZWxmLkVMRkNMQVNTNjR9OgorICAgICAgICAg
ICAgcmFpc2UgX0VMRkZpbGVIZWFkZXIuX0ludmFsaWRFTEZGaWxlSGVhZGVyKCkKKyAgICAgICAg
c2VsZi5lX2lkZW50X2RhdGEgPSB1bnBhY2soIkIiKQorICAgICAgICBpZiBzZWxmLmVfaWRlbnRf
ZGF0YSBub3QgaW4ge3NlbGYuRUxGREFUQTJMU0IsIHNlbGYuRUxGREFUQTJNU0J9OgorICAgICAg
ICAgICAgcmFpc2UgX0VMRkZpbGVIZWFkZXIuX0ludmFsaWRFTEZGaWxlSGVhZGVyKCkKKyAgICAg
ICAgc2VsZi5lX2lkZW50X3ZlcnNpb24gPSB1bnBhY2soIkIiKQorICAgICAgICBzZWxmLmVfaWRl
bnRfb3NhYmkgPSB1bnBhY2soIkIiKQorICAgICAgICBzZWxmLmVfaWRlbnRfYWJpdmVyc2lvbiA9
IHVucGFjaygiQiIpCisgICAgICAgIHNlbGYuZV9pZGVudF9wYWQgPSBmaWxlLnJlYWQoNykKKyAg
ICAgICAgZm9ybWF0X2ggPSAiPEgiIGlmIHNlbGYuZV9pZGVudF9kYXRhID09IHNlbGYuRUxGREFU
QTJMU0IgZWxzZSAiPkgiCisgICAgICAgIGZvcm1hdF9pID0gIjxJIiBpZiBzZWxmLmVfaWRlbnRf
ZGF0YSA9PSBzZWxmLkVMRkRBVEEyTFNCIGVsc2UgIj5JIgorICAgICAgICBmb3JtYXRfcSA9ICI8
USIgaWYgc2VsZi5lX2lkZW50X2RhdGEgPT0gc2VsZi5FTEZEQVRBMkxTQiBlbHNlICI+USIKKyAg
ICAgICAgZm9ybWF0X3AgPSBmb3JtYXRfaSBpZiBzZWxmLmVfaWRlbnRfY2xhc3MgPT0gc2VsZi5F
TEZDTEFTUzMyIGVsc2UgZm9ybWF0X3EKKyAgICAgICAgc2VsZi5lX3R5cGUgPSB1bnBhY2soZm9y
bWF0X2gpCisgICAgICAgIHNlbGYuZV9tYWNoaW5lID0gdW5wYWNrKGZvcm1hdF9oKQorICAgICAg
ICBzZWxmLmVfdmVyc2lvbiA9IHVucGFjayhmb3JtYXRfaSkKKyAgICAgICAgc2VsZi5lX2VudHJ5
ID0gdW5wYWNrKGZvcm1hdF9wKQorICAgICAgICBzZWxmLmVfcGhvZmYgPSB1bnBhY2soZm9ybWF0
X3ApCisgICAgICAgIHNlbGYuZV9zaG9mZiA9IHVucGFjayhmb3JtYXRfcCkKKyAgICAgICAgc2Vs
Zi5lX2ZsYWdzID0gdW5wYWNrKGZvcm1hdF9pKQorICAgICAgICBzZWxmLmVfZWhzaXplID0gdW5w
YWNrKGZvcm1hdF9oKQorICAgICAgICBzZWxmLmVfcGhlbnRzaXplID0gdW5wYWNrKGZvcm1hdF9o
KQorICAgICAgICBzZWxmLmVfcGhudW0gPSB1bnBhY2soZm9ybWF0X2gpCisgICAgICAgIHNlbGYu
ZV9zaGVudHNpemUgPSB1bnBhY2soZm9ybWF0X2gpCisgICAgICAgIHNlbGYuZV9zaG51bSA9IHVu
cGFjayhmb3JtYXRfaCkKKyAgICAgICAgc2VsZi5lX3Noc3RybmR4ID0gdW5wYWNrKGZvcm1hdF9o
KQorCisKK2RlZiBfZ2V0X2VsZl9oZWFkZXIoKToKKyAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFs
W19FTEZGaWxlSGVhZGVyXQorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHN5cy5leGVjdXRh
YmxlLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZWxmX2hlYWRlciA9IF9FTEZGaWxlSGVhZGVy
KGYpCisgICAgZXhjZXB0IChJT0Vycm9yLCBPU0Vycm9yLCBUeXBlRXJyb3IsIF9FTEZGaWxlSGVh
ZGVyLl9JbnZhbGlkRUxGRmlsZUhlYWRlcik6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0
dXJuIGVsZl9oZWFkZXIKKworCitkZWYgX2lzX2xpbnV4X2FybWhmKCk6CisgICAgIyB0eXBlOiAo
KSAtPiBib29sCisgICAgIyBoYXJkLWZsb2F0IEFCSSBjYW4gYmUgZGV0ZWN0ZWQgZnJvbSB0aGUg
RUxGIGhlYWRlciBvZiB0aGUgcnVubmluZworICAgICMgcHJvY2VzcworICAgICMgaHR0cHM6Ly9z
dGF0aWMuZG9jcy5hcm0uY29tL2loaTAwNDQvZy9hYWVsZjMyLnBkZgorICAgIGVsZl9oZWFkZXIg
PSBfZ2V0X2VsZl9oZWFkZXIoKQorICAgIGlmIGVsZl9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgcmVzdWx0ID0gZWxmX2hlYWRlci5lX2lkZW50X2NsYXNzID09IGVs
Zl9oZWFkZXIuRUxGQ0xBU1MzMgorICAgIHJlc3VsdCAmPSBlbGZfaGVhZGVyLmVfaWRlbnRfZGF0
YSA9PSBlbGZfaGVhZGVyLkVMRkRBVEEyTFNCCisgICAgcmVzdWx0ICY9IGVsZl9oZWFkZXIuZV9t
YWNoaW5lID09IGVsZl9oZWFkZXIuRU1fQVJNCisgICAgcmVzdWx0ICY9ICgKKyAgICAgICAgZWxm
X2hlYWRlci5lX2ZsYWdzICYgZWxmX2hlYWRlci5FRl9BUk1fQUJJTUFTSworICAgICkgPT0gZWxm
X2hlYWRlci5FRl9BUk1fQUJJX1ZFUjUKKyAgICByZXN1bHQgJj0gKAorICAgICAgICBlbGZfaGVh
ZGVyLmVfZmxhZ3MgJiBlbGZfaGVhZGVyLkVGX0FSTV9BQklfRkxPQVRfSEFSRAorICAgICkgPT0g
ZWxmX2hlYWRlci5FRl9BUk1fQUJJX0ZMT0FUX0hBUkQKKyAgICByZXR1cm4gcmVzdWx0CisKKwor
ZGVmIF9pc19saW51eF9pNjg2KCk6CisgICAgIyB0eXBlOiAoKSAtPiBib29sCisgICAgZWxmX2hl
YWRlciA9IF9nZXRfZWxmX2hlYWRlcigpCisgICAgaWYgZWxmX2hlYWRlciBpcyBOb25lOgorICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICByZXN1bHQgPSBlbGZfaGVhZGVyLmVfaWRlbnRfY2xhc3Mg
PT0gZWxmX2hlYWRlci5FTEZDTEFTUzMyCisgICAgcmVzdWx0ICY9IGVsZl9oZWFkZXIuZV9pZGVu
dF9kYXRhID09IGVsZl9oZWFkZXIuRUxGREFUQTJMU0IKKyAgICByZXN1bHQgJj0gZWxmX2hlYWRl
ci5lX21hY2hpbmUgPT0gZWxmX2hlYWRlci5FTV8zODYKKyAgICByZXR1cm4gcmVzdWx0CisKKwor
ZGVmIF9oYXZlX2NvbXBhdGlibGVfbWFueWxpbnV4X2FiaShhcmNoKToKKyAgICAjIHR5cGU6IChz
dHIpIC0+IGJvb2wKKyAgICBpZiBhcmNoID09ICJhcm12N2wiOgorICAgICAgICByZXR1cm4gX2lz
X2xpbnV4X2FybWhmKCkKKyAgICBpZiBhcmNoID09ICJpNjg2IjoKKyAgICAgICAgcmV0dXJuIF9p
c19saW51eF9pNjg2KCkKKyAgICByZXR1cm4gYXJjaCBpbiB7Ing4Nl82NCIsICJhYXJjaDY0Iiwg
InBwYzY0IiwgInBwYzY0bGUiLCAiczM5MHgifQorCisKK2RlZiBfbWFueWxpbnV4X3RhZ3MobGlu
dXgsIGFyY2gpOgorICAgICMgdHlwZTogKHN0ciwgc3RyKSAtPiBJdGVyYXRvcltzdHJdCisgICAg
IyBPbGRlc3QgZ2xpYmMgdG8gYmUgc3VwcG9ydGVkIHJlZ2FyZGxlc3Mgb2YgYXJjaGl0ZWN0dXJl
IGlzICgyLCAxNykuCisgICAgdG9vX29sZF9nbGliYzIgPSBnbGliY1ZlcnNpb24oMiwgMTYpCisg
ICAgaWYgYXJjaCBpbiB7Ing4Nl82NCIsICJpNjg2In06CisgICAgICAgICMgT24geDg2L2k2ODYg
YWxzbyBvbGRlc3QgZ2xpYmMgdG8gYmUgc3VwcG9ydGVkIGlzICgyLCA1KS4KKyAgICAgICAgdG9v
X29sZF9nbGliYzIgPSBnbGliY1ZlcnNpb24oMiwgNCkKKyAgICBjdXJyZW50X2dsaWJjID0gZ2xp
YmNWZXJzaW9uKCpfZ2V0X2dsaWJjX3ZlcnNpb24oKSkKKyAgICBnbGliY19tYXhfbGlzdCA9IFtj
dXJyZW50X2dsaWJjXQorICAgICMgV2UgY2FuIGFzc3VtZSBjb21wYXRpYmlsaXR5IGFjcm9zcyBn
bGliYyBtYWpvciB2ZXJzaW9ucy4KKyAgICAjIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemls
bGEvc2hvd19idWcuY2dpP2lkPTI0NjM2CisgICAgIworICAgICMgQnVpbGQgYSBsaXN0IG9mIG1h
eGltdW0gZ2xpYmMgdmVyc2lvbnMgc28gdGhhdCB3ZSBjYW4KKyAgICAjIG91dHB1dCB0aGUgY2Fu
b25pY2FsIGxpc3Qgb2YgYWxsIGdsaWJjIGZyb20gY3VycmVudF9nbGliYworICAgICMgZG93biB0
byB0b29fb2xkX2dsaWJjMiwgaW5jbHVkaW5nIGFsbCBpbnRlcm1lZGlhcnkgdmVyc2lvbnMuCisg
ICAgZm9yIGdsaWJjX21ham9yIGluIHJhbmdlKGN1cnJlbnRfZ2xpYmMubWFqb3IgLSAxLCAxLCAt
MSk6CisgICAgICAgIGdsaWJjX21heF9saXN0LmFwcGVuZChnbGliY1ZlcnNpb24oZ2xpYmNfbWFq
b3IsIF9MQVNUX0dMSUJDX01JTk9SW2dsaWJjX21ham9yXSkpCisgICAgZm9yIGdsaWJjX21heCBp
biBnbGliY19tYXhfbGlzdDoKKyAgICAgICAgaWYgZ2xpYmNfbWF4Lm1ham9yID09IHRvb19vbGRf
Z2xpYmMyLm1ham9yOgorICAgICAgICAgICAgbWluX21pbm9yID0gdG9vX29sZF9nbGliYzIubWlu
b3IKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRm9yIG90aGVyIGdsaWJjIG1ham9yIHZl
cnNpb25zIG9sZGVzdCBzdXBwb3J0ZWQgaXMgKHgsIDApLgorICAgICAgICAgICAgbWluX21pbm9y
ID0gLTEKKyAgICAgICAgZm9yIGdsaWJjX21pbm9yIGluIHJhbmdlKGdsaWJjX21heC5taW5vciwg
bWluX21pbm9yLCAtMSk6CisgICAgICAgICAgICBnbGliY192ZXJzaW9uID0gKGdsaWJjX21heC5t
YWpvciwgZ2xpYmNfbWlub3IpCisgICAgICAgICAgICB0YWcgPSAibWFueWxpbnV4X3t9X3t9Ii5m
b3JtYXQoKmdsaWJjX3ZlcnNpb24pCisgICAgICAgICAgICBpZiBfaXNfbWFueWxpbnV4X2NvbXBh
dGlibGUodGFnLCBhcmNoLCBnbGliY192ZXJzaW9uKToKKyAgICAgICAgICAgICAgICB5aWVsZCBs
aW51eC5yZXBsYWNlKCJsaW51eCIsIHRhZykKKyAgICAgICAgICAgICMgSGFuZGxlIHRoZSBsZWdh
Y3kgbWFueWxpbnV4MSwgbWFueWxpbnV4MjAxMCwgbWFueWxpbnV4MjAxNCB0YWdzLgorICAgICAg
ICAgICAgaWYgZ2xpYmNfdmVyc2lvbiBpbiBfTEVHQUNZX01BTllMSU5VWF9NQVA6CisgICAgICAg
ICAgICAgICAgbGVnYWN5X3RhZyA9IF9MRUdBQ1lfTUFOWUxJTlVYX01BUFtnbGliY192ZXJzaW9u
XQorICAgICAgICAgICAgICAgIGlmIF9pc19tYW55bGludXhfY29tcGF0aWJsZShsZWdhY3lfdGFn
LCBhcmNoLCBnbGliY192ZXJzaW9uKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGludXgu
cmVwbGFjZSgibGludXgiLCBsZWdhY3lfdGFnKQorCisKK2RlZiBfbGludXhfcGxhdGZvcm1zKGlz
XzMyYml0PV8zMl9CSVRfSU5URVJQUkVURVIpOgorICAgICMgdHlwZTogKGJvb2wpIC0+IEl0ZXJh
dG9yW3N0cl0KKyAgICBsaW51eCA9IF9ub3JtYWxpemVfc3RyaW5nKGRpc3R1dGlscy51dGlsLmdl
dF9wbGF0Zm9ybSgpKQorICAgIGlmIGlzXzMyYml0OgorICAgICAgICBpZiBsaW51eCA9PSAibGlu
dXhfeDg2XzY0IjoKKyAgICAgICAgICAgIGxpbnV4ID0gImxpbnV4X2k2ODYiCisgICAgICAgIGVs
aWYgbGludXggPT0gImxpbnV4X2FhcmNoNjQiOgorICAgICAgICAgICAgbGludXggPSAibGludXhf
YXJtdjdsIgorICAgIF8sIGFyY2ggPSBsaW51eC5zcGxpdCgiXyIsIDEpCisgICAgaWYgX2hhdmVf
Y29tcGF0aWJsZV9tYW55bGludXhfYWJpKGFyY2gpOgorICAgICAgICBmb3IgdGFnIGluIF9tYW55
bGludXhfdGFncyhsaW51eCwgYXJjaCk6CisgICAgICAgICAgICB5aWVsZCB0YWcKKyAgICB5aWVs
ZCBsaW51eAorCisKK2RlZiBfZ2VuZXJpY19wbGF0Zm9ybXMoKToKKyAgICAjIHR5cGU6ICgpIC0+
IEl0ZXJhdG9yW3N0cl0KKyAgICB5aWVsZCBfbm9ybWFsaXplX3N0cmluZyhkaXN0dXRpbHMudXRp
bC5nZXRfcGxhdGZvcm0oKSkKKworCitkZWYgX3BsYXRmb3JtX3RhZ3MoKToKKyAgICAjIHR5cGU6
ICgpIC0+IEl0ZXJhdG9yW3N0cl0KKyAgICAiIiIKKyAgICBQcm92aWRlcyB0aGUgcGxhdGZvcm0g
dGFncyBmb3IgdGhpcyBpbnN0YWxsYXRpb24uCisgICAgIiIiCisgICAgaWYgcGxhdGZvcm0uc3lz
dGVtKCkgPT0gIkRhcndpbiI6CisgICAgICAgIHJldHVybiBtYWNfcGxhdGZvcm1zKCkKKyAgICBl
bGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJMaW51eCI6CisgICAgICAgIHJldHVybiBfbGludXhf
cGxhdGZvcm1zKCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX2dlbmVyaWNfcGxhdGZvcm1z
KCkKKworCitkZWYgaW50ZXJwcmV0ZXJfbmFtZSgpOgorICAgICMgdHlwZTogKCkgLT4gc3RyCisg
ICAgIiIiCisgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlci4K
KyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIG5hbWUgPSBzeXMuaW1wbGVtZW50YXRpb24ubmFt
ZSAgIyB0eXBlOiBpZ25vcmUKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIHByYWdtYTog
bm8gY292ZXIKKyAgICAgICAgIyBQeXRob24gMi43IGNvbXBhdGliaWxpdHkuCisgICAgICAgIG5h
bWUgPSBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKS5sb3dlcigpCisgICAgcmV0dXJu
IElOVEVSUFJFVEVSX1NIT1JUX05BTUVTLmdldChuYW1lKSBvciBuYW1lCisKKworZGVmIGludGVy
cHJldGVyX3ZlcnNpb24oKiprd2FyZ3MpOgorICAgICMgdHlwZTogKGJvb2wpIC0+IHN0cgorICAg
ICIiIgorICAgIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIu
CisgICAgIiIiCisgICAgd2FybiA9IF93YXJuX2tleXdvcmRfcGFyYW1ldGVyKCJpbnRlcnByZXRl
cl92ZXJzaW9uIiwga3dhcmdzKQorICAgIHZlcnNpb24gPSBfZ2V0X2NvbmZpZ192YXIoInB5X3Zl
cnNpb25fbm9kb3QiLCB3YXJuPXdhcm4pCisgICAgaWYgdmVyc2lvbjoKKyAgICAgICAgdmVyc2lv
biA9IHN0cih2ZXJzaW9uKQorICAgIGVsc2U6CisgICAgICAgIHZlcnNpb24gPSBfdmVyc2lvbl9u
b2RvdChzeXMudmVyc2lvbl9pbmZvWzoyXSkKKyAgICByZXR1cm4gdmVyc2lvbgorCisKK2RlZiBf
dmVyc2lvbl9ub2RvdCh2ZXJzaW9uKToKKyAgICAjIHR5cGU6IChQeXRob25WZXJzaW9uKSAtPiBz
dHIKKyAgICBpZiBhbnkodiA+PSAxMCBmb3IgdiBpbiB2ZXJzaW9uKToKKyAgICAgICAgc2VwID0g
Il8iCisgICAgZWxzZToKKyAgICAgICAgc2VwID0gIiIKKyAgICByZXR1cm4gc2VwLmpvaW4obWFw
KHN0ciwgdmVyc2lvbikpCisKKworZGVmIHN5c190YWdzKCoqa3dhcmdzKToKKyAgICAjIHR5cGU6
IChib29sKSAtPiBJdGVyYXRvcltUYWddCisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgc2VxdWVu
Y2Ugb2YgdGFnIHRyaXBsZXMgZm9yIHRoZSBydW5uaW5nIGludGVycHJldGVyLgorCisgICAgVGhl
IG9yZGVyIG9mIHRoZSBzZXF1ZW5jZSBjb3JyZXNwb25kcyB0byBwcmlvcml0eSBvcmRlciBmb3Ig
dGhlCisgICAgaW50ZXJwcmV0ZXIsIGZyb20gbW9zdCB0byBsZWFzdCBpbXBvcnRhbnQuCisgICAg
IiIiCisgICAgd2FybiA9IF93YXJuX2tleXdvcmRfcGFyYW1ldGVyKCJzeXNfdGFncyIsIGt3YXJn
cykKKworICAgIGludGVycF9uYW1lID0gaW50ZXJwcmV0ZXJfbmFtZSgpCisgICAgaWYgaW50ZXJw
X25hbWUgPT0gImNwIjoKKyAgICAgICAgZm9yIHRhZyBpbiBjcHl0aG9uX3RhZ3Mod2Fybj13YXJu
KToKKyAgICAgICAgICAgIHlpZWxkIHRhZworICAgIGVsc2U6CisgICAgICAgIGZvciB0YWcgaW4g
Z2VuZXJpY190YWdzKCk6CisgICAgICAgICAgICB5aWVsZCB0YWcKKworICAgIGZvciB0YWcgaW4g
Y29tcGF0aWJsZV90YWdzKCk6CisgICAgICAgIHlpZWxkIHRhZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvcGFja2FnaW5nL3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3V0
aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTJjN2IwMGI3
Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3V0aWxzLnB5
CkBAIC0wLDAgKzEsNjcgQEAKKyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNE
IExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3Np
dG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWlscy4KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IHJlCisKK2Zy
b20gLl90eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcsIGNhc3QKK2Zyb20gLnZlcnNpb24gaW1w
b3J0IEludmFsaWRWZXJzaW9uLCBWZXJzaW9uCisKK2lmIFRZUEVfQ0hFQ0tJTkc6ICAjIHByYWdt
YTogbm8gY292ZXIKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTmV3VHlwZSwgVW5pb24KKworICAg
IE5vcm1hbGl6ZWROYW1lID0gTmV3VHlwZSgiTm9ybWFsaXplZE5hbWUiLCBzdHIpCitlbHNlOgor
ICAgIE5vcm1hbGl6ZWROYW1lID0gc3RyCisKK19jYW5vbmljYWxpemVfcmVnZXggPSByZS5jb21w
aWxlKHIiWy1fLl0rIikKKworCitkZWYgY2Fub25pY2FsaXplX25hbWUobmFtZSk6CisgICAgIyB0
eXBlOiAoc3RyKSAtPiBOb3JtYWxpemVkTmFtZQorICAgICMgVGhpcyBpcyB0YWtlbiBmcm9tIFBF
UCA1MDMuCisgICAgdmFsdWUgPSBfY2Fub25pY2FsaXplX3JlZ2V4LnN1YigiLSIsIG5hbWUpLmxv
d2VyKCkKKyAgICByZXR1cm4gY2FzdCgiTm9ybWFsaXplZE5hbWUiLCB2YWx1ZSkKKworCitkZWYg
Y2Fub25pY2FsaXplX3ZlcnNpb24odmVyc2lvbik6CisgICAgIyB0eXBlOiAoVW5pb25bVmVyc2lv
biwgc3RyXSkgLT4gVW5pb25bVmVyc2lvbiwgc3RyXQorICAgICIiIgorICAgIFRoaXMgaXMgdmVy
eSBzaW1pbGFyIHRvIFZlcnNpb24uX19zdHJfXywgYnV0IGhhcyBvbmUgc3VidGxlIGRpZmZlcmVu
Y2UKKyAgICB3aXRoIHRoZSB3YXkgaXQgaGFuZGxlcyB0aGUgcmVsZWFzZSBzZWdtZW50LgorICAg
ICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKHZlcnNpb24sIFZlcnNpb24pOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICB2ZXJzaW9uID0gVmVyc2lvbih2ZXJzaW9uKQorICAgICAgICBleGNl
cHQgSW52YWxpZFZlcnNpb246CisgICAgICAgICAgICAjIExlZ2FjeSB2ZXJzaW9ucyBjYW5ub3Qg
YmUgbm9ybWFsaXplZAorICAgICAgICAgICAgcmV0dXJuIHZlcnNpb24KKworICAgIHBhcnRzID0g
W10KKworICAgICMgRXBvY2gKKyAgICBpZiB2ZXJzaW9uLmVwb2NoICE9IDA6CisgICAgICAgIHBh
cnRzLmFwcGVuZCgiezB9ISIuZm9ybWF0KHZlcnNpb24uZXBvY2gpKQorCisgICAgIyBSZWxlYXNl
IHNlZ21lbnQKKyAgICAjIE5COiBUaGlzIHN0cmlwcyB0cmFpbGluZyAnLjAncyB0byBub3JtYWxp
emUKKyAgICBwYXJ0cy5hcHBlbmQocmUuc3ViKHIiKFwuMCkrJCIsICIiLCAiLiIuam9pbihzdHIo
eCkgZm9yIHggaW4gdmVyc2lvbi5yZWxlYXNlKSkpCisKKyAgICAjIFByZS1yZWxlYXNlCisgICAg
aWYgdmVyc2lvbi5wcmUgaXMgbm90IE5vbmU6CisgICAgICAgIHBhcnRzLmFwcGVuZCgiIi5qb2lu
KHN0cih4KSBmb3IgeCBpbiB2ZXJzaW9uLnByZSkpCisKKyAgICAjIFBvc3QtcmVsZWFzZQorICAg
IGlmIHZlcnNpb24ucG9zdCBpcyBub3QgTm9uZToKKyAgICAgICAgcGFydHMuYXBwZW5kKCIucG9z
dHswfSIuZm9ybWF0KHZlcnNpb24ucG9zdCkpCisKKyAgICAjIERldmVsb3BtZW50IHJlbGVhc2UK
KyAgICBpZiB2ZXJzaW9uLmRldiBpcyBub3QgTm9uZToKKyAgICAgICAgcGFydHMuYXBwZW5kKCIu
ZGV2ezB9Ii5mb3JtYXQodmVyc2lvbi5kZXYpKQorCisgICAgIyBMb2NhbCB2ZXJzaW9uIHNlZ21l
bnQKKyAgICBpZiB2ZXJzaW9uLmxvY2FsIGlzIG5vdCBOb25lOgorICAgICAgICBwYXJ0cy5hcHBl
bmQoIit7MH0iLmZvcm1hdCh2ZXJzaW9uLmxvY2FsKSkKKworICAgIHJldHVybiAiIi5qb2luKHBh
cnRzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3ZlcnNpb24ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvdmVyc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjUxN2Q5MWYyNDg1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL3BhY2thZ2luZy92ZXJzaW9uLnB5CkBAIC0wLDAgKzEsNTU2IEBACisjIFRoaXMg
ZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFp
bHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCisKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGl0ZXJ0b29scworaW1w
b3J0IHJlCitpbXBvcnQgd2FybmluZ3MKKworZnJvbSAuX3N0cnVjdHVyZXMgaW1wb3J0IEluZmlu
aXR5LCBOZWdhdGl2ZUluZmluaXR5Citmcm9tIC5fdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5H
CisKK2lmIFRZUEVfQ0hFQ0tJTkc6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgQ2FsbGFibGUsIEl0ZXJhdG9yLCBMaXN0LCBPcHRpb25hbCwgU3VwcG9ydHNJbnQs
IFR1cGxlLCBVbmlvbgorCisgICAgZnJvbSAuX3N0cnVjdHVyZXMgaW1wb3J0IEluZmluaXR5VHlw
ZSwgTmVnYXRpdmVJbmZpbml0eVR5cGUKKworICAgIEluZmluaXRlVHlwZXMgPSBVbmlvbltJbmZp
bml0eVR5cGUsIE5lZ2F0aXZlSW5maW5pdHlUeXBlXQorICAgIFByZVBvc3REZXZUeXBlID0gVW5p
b25bSW5maW5pdGVUeXBlcywgVHVwbGVbc3RyLCBpbnRdXQorICAgIFN1YkxvY2FsVHlwZSA9IFVu
aW9uW0luZmluaXRlVHlwZXMsIGludCwgc3RyXQorICAgIExvY2FsVHlwZSA9IFVuaW9uWworICAg
ICAgICBOZWdhdGl2ZUluZmluaXR5VHlwZSwKKyAgICAgICAgVHVwbGVbCisgICAgICAgICAgICBV
bmlvblsKKyAgICAgICAgICAgICAgICBTdWJMb2NhbFR5cGUsCisgICAgICAgICAgICAgICAgVHVw
bGVbU3ViTG9jYWxUeXBlLCBzdHJdLAorICAgICAgICAgICAgICAgIFR1cGxlW05lZ2F0aXZlSW5m
aW5pdHlUeXBlLCBTdWJMb2NhbFR5cGVdLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIC4u
LiwKKyAgICAgICAgXSwKKyAgICBdCisgICAgQ21wS2V5ID0gVHVwbGVbCisgICAgICAgIGludCwg
VHVwbGVbaW50LCAuLi5dLCBQcmVQb3N0RGV2VHlwZSwgUHJlUG9zdERldlR5cGUsIFByZVBvc3RE
ZXZUeXBlLCBMb2NhbFR5cGUKKyAgICBdCisgICAgTGVnYWN5Q21wS2V5ID0gVHVwbGVbaW50LCBU
dXBsZVtzdHIsIC4uLl1dCisgICAgVmVyc2lvbkNvbXBhcmlzb25NZXRob2QgPSBDYWxsYWJsZVsK
KyAgICAgICAgW1VuaW9uW0NtcEtleSwgTGVnYWN5Q21wS2V5XSwgVW5pb25bQ21wS2V5LCBMZWdh
Y3lDbXBLZXldXSwgYm9vbAorICAgIF0KKworX19hbGxfXyA9IFsicGFyc2UiLCAiVmVyc2lvbiIs
ICJMZWdhY3lWZXJzaW9uIiwgIkludmFsaWRWZXJzaW9uIiwgIlZFUlNJT05fUEFUVEVSTiJdCisK
KworX1ZlcnNpb24gPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKAorICAgICJfVmVyc2lvbiIsIFsi
ZXBvY2giLCAicmVsZWFzZSIsICJkZXYiLCAicHJlIiwgInBvc3QiLCAibG9jYWwiXQorKQorCisK
K2RlZiBwYXJzZSh2ZXJzaW9uKToKKyAgICAjIHR5cGU6IChzdHIpIC0+IFVuaW9uW0xlZ2FjeVZl
cnNpb24sIFZlcnNpb25dCisgICAgIiIiCisgICAgUGFyc2UgdGhlIGdpdmVuIHZlcnNpb24gc3Ry
aW5nIGFuZCByZXR1cm4gZWl0aGVyIGEgOmNsYXNzOmBWZXJzaW9uYCBvYmplY3QKKyAgICBvciBh
IDpjbGFzczpgTGVnYWN5VmVyc2lvbmAgb2JqZWN0IGRlcGVuZGluZyBvbiBpZiB0aGUgZ2l2ZW4g
dmVyc2lvbiBpcworICAgIGEgdmFsaWQgUEVQIDQ0MCB2ZXJzaW9uIG9yIGEgbGVnYWN5IHZlcnNp
b24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gVmVyc2lvbih2ZXJzaW9uKQor
ICAgIGV4Y2VwdCBJbnZhbGlkVmVyc2lvbjoKKyAgICAgICAgcmV0dXJuIExlZ2FjeVZlcnNpb24o
dmVyc2lvbikKKworCitjbGFzcyBJbnZhbGlkVmVyc2lvbihWYWx1ZUVycm9yKToKKyAgICAiIiIK
KyAgICBBbiBpbnZhbGlkIHZlcnNpb24gd2FzIGZvdW5kLCB1c2VycyBzaG91bGQgcmVmZXIgdG8g
UEVQIDQ0MC4KKyAgICAiIiIKKworCitjbGFzcyBfQmFzZVZlcnNpb24ob2JqZWN0KToKKyAgICBf
a2V5ID0gTm9uZSAgIyB0eXBlOiBVbmlvbltDbXBLZXksIExlZ2FjeUNtcEtleV0KKworICAgIGRl
ZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0
dXJuIGhhc2goc2VsZi5fa2V5KQorCisgICAgIyBQbGVhc2Uga2VlcCB0aGUgZHVwbGljYXRlZCBg
aXNpbnN0YW5jZWAgY2hlY2sKKyAgICAjIGluIHRoZSBzaXggY29tcGFyaXNvbnMgaGVyZXVuZGVy
CisgICAgIyB1bmxlc3MgeW91IGZpbmQgYSB3YXkgdG8gYXZvaWQgYWRkaW5nIG92ZXJoZWFkIGZ1
bmN0aW9uIGNhbGxzLgorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIHR5
cGU6IChfQmFzZVZlcnNpb24pIC0+IGJvb2wKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3Ro
ZXIsIF9CYXNlVmVyc2lvbik6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKwor
ICAgICAgICByZXR1cm4gc2VsZi5fa2V5IDwgb3RoZXIuX2tleQorCisgICAgZGVmIF9fbGVfXyhz
ZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKF9CYXNlVmVyc2lvbikgLT4gYm9vbAorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VWZXJzaW9uKToKKyAgICAgICAgICAg
IHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVybiBzZWxmLl9rZXkgPD0gb3Ro
ZXIuX2tleQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTog
KG9iamVjdCkgLT4gYm9vbAorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VW
ZXJzaW9uKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJl
dHVybiBzZWxmLl9rZXkgPT0gb3RoZXIuX2tleQorCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhl
cik6CisgICAgICAgICMgdHlwZTogKF9CYXNlVmVyc2lvbikgLT4gYm9vbAorICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VWZXJzaW9uKToKKyAgICAgICAgICAgIHJldHVybiBO
b3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVybiBzZWxmLl9rZXkgPj0gb3RoZXIuX2tleQor
CisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgdHlwZTogKF9CYXNlVmVy
c2lvbikgLT4gYm9vbAorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VWZXJz
aW9uKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVy
biBzZWxmLl9rZXkgPiBvdGhlci5fa2V5CisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToK
KyAgICAgICAgIyB0eXBlOiAob2JqZWN0KSAtPiBib29sCisgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKG90aGVyLCBfQmFzZVZlcnNpb24pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVu
dGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tleSAhPSBvdGhlci5fa2V5CisKKworY2xhc3Mg
TGVnYWN5VmVyc2lvbihfQmFzZVZlcnNpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJz
aW9uKToKKyAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBOb25lCisgICAgICAgIHNlbGYuX3ZlcnNp
b24gPSBzdHIodmVyc2lvbikKKyAgICAgICAgc2VsZi5fa2V5ID0gX2xlZ2FjeV9jbXBrZXkoc2Vs
Zi5fdmVyc2lvbikKKworICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgIkNyZWF0
aW5nIGEgTGVnYWN5VmVyc2lvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlICIKKyAg
ICAgICAgICAgICJyZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UiLAorICAgICAgICAg
ICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICApCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNp
b24KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBzdHIK
KyAgICAgICAgcmV0dXJuICI8TGVnYWN5VmVyc2lvbih7MH0pPiIuZm9ybWF0KHJlcHIoc3RyKHNl
bGYpKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwdWJsaWMoc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gc3RyCisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgYmFzZV92ZXJzaW9uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+
IHN0cgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIGVwb2NoKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICByZXR1
cm4gLTEKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICAj
IHR5cGU6ICgpIC0+IE5vbmUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBwcmUoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTm9uZQorICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBvc3Qoc2VsZik6CisgICAgICAg
ICMgdHlwZTogKCkgLT4gTm9uZQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIGRldihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25lCisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWwoc2VsZik6CisgICAg
ICAgICMgdHlwZTogKCkgLT4gTm9uZQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIGlzX3ByZXJlbGVhc2Uoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
Ym9vbAorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19w
b3N0cmVsZWFzZShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2RldnJlbGVhc2Uoc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gRmFsc2UKKworCitf
bGVnYWN5X3ZlcnNpb25fY29tcG9uZW50X3JlID0gcmUuY29tcGlsZShyIihcZCsgfCBbYS16XSsg
fCBcLnwgLSkiLCByZS5WRVJCT1NFKQorCitfbGVnYWN5X3ZlcnNpb25fcmVwbGFjZW1lbnRfbWFw
ID0geworICAgICJwcmUiOiAiYyIsCisgICAgInByZXZpZXciOiAiYyIsCisgICAgIi0iOiAiZmlu
YWwtIiwKKyAgICAicmMiOiAiYyIsCisgICAgImRldiI6ICJAIiwKK30KKworCitkZWYgX3BhcnNl
X3ZlcnNpb25fcGFydHMocyk6CisgICAgIyB0eXBlOiAoc3RyKSAtPiBJdGVyYXRvcltzdHJdCisg
ICAgZm9yIHBhcnQgaW4gX2xlZ2FjeV92ZXJzaW9uX2NvbXBvbmVudF9yZS5zcGxpdChzKToKKyAg
ICAgICAgcGFydCA9IF9sZWdhY3lfdmVyc2lvbl9yZXBsYWNlbWVudF9tYXAuZ2V0KHBhcnQsIHBh
cnQpCisKKyAgICAgICAgaWYgbm90IHBhcnQgb3IgcGFydCA9PSAiLiI6CisgICAgICAgICAgICBj
b250aW51ZQorCisgICAgICAgIGlmIHBhcnRbOjFdIGluICIwMTIzNDU2Nzg5IjoKKyAgICAgICAg
ICAgICMgcGFkIGZvciBudW1lcmljIGNvbXBhcmlzb24KKyAgICAgICAgICAgIHlpZWxkIHBhcnQu
emZpbGwoOCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHlpZWxkICIqIiArIHBhcnQKKwor
ICAgICMgZW5zdXJlIHRoYXQgYWxwaGEvYmV0YS9jYW5kaWRhdGUgYXJlIGJlZm9yZSBmaW5hbAor
ICAgIHlpZWxkICIqZmluYWwiCisKKworZGVmIF9sZWdhY3lfY21wa2V5KHZlcnNpb24pOgorICAg
ICMgdHlwZTogKHN0cikgLT4gTGVnYWN5Q21wS2V5CisKKyAgICAjIFdlIGhhcmRjb2RlIGFuIGVw
b2NoIG9mIC0xIGhlcmUuIEEgUEVQIDQ0MCB2ZXJzaW9uIGNhbiBvbmx5IGhhdmUgYSBlcG9jaAor
ICAgICMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuIFRoaXMgd2lsbCBlZmZlY3RpdmVseSBw
dXQgdGhlIExlZ2FjeVZlcnNpb24sCisgICAgIyB3aGljaCB1c2VzIHRoZSBkZWZhY3RvIHN0YW5k
YXJkIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQgYnkgc2V0dXB0b29scywKKyAgICAjIGFzIGJlZm9y
ZSBhbGwgUEVQIDQ0MCB2ZXJzaW9ucy4KKyAgICBlcG9jaCA9IC0xCisKKyAgICAjIFRoaXMgc2No
ZW1lIGlzIHRha2VuIGZyb20gcGtnX3Jlc291cmNlcy5wYXJzZV92ZXJzaW9uIHNldHVwdG9vbHMg
cHJpb3IgdG8KKyAgICAjIGl0J3MgYWRvcHRpb24gb2YgdGhlIHBhY2thZ2luZyBsaWJyYXJ5Lgor
ICAgIHBhcnRzID0gW10gICMgdHlwZTogTGlzdFtzdHJdCisgICAgZm9yIHBhcnQgaW4gX3BhcnNl
X3ZlcnNpb25fcGFydHModmVyc2lvbi5sb3dlcigpKToKKyAgICAgICAgaWYgcGFydC5zdGFydHN3
aXRoKCIqIik6CisgICAgICAgICAgICAjIHJlbW92ZSAiLSIgYmVmb3JlIGEgcHJlcmVsZWFzZSB0
YWcKKyAgICAgICAgICAgIGlmIHBhcnQgPCAiKmZpbmFsIjoKKyAgICAgICAgICAgICAgICB3aGls
ZSBwYXJ0cyBhbmQgcGFydHNbLTFdID09ICIqZmluYWwtIjoKKyAgICAgICAgICAgICAgICAgICAg
cGFydHMucG9wKCkKKworICAgICAgICAgICAgIyByZW1vdmUgdHJhaWxpbmcgemVyb3MgZnJvbSBl
YWNoIHNlcmllcyBvZiBudW1lcmljIHBhcnRzCisgICAgICAgICAgICB3aGlsZSBwYXJ0cyBhbmQg
cGFydHNbLTFdID09ICIwMDAwMDAwMCI6CisgICAgICAgICAgICAgICAgcGFydHMucG9wKCkKKwor
ICAgICAgICBwYXJ0cy5hcHBlbmQocGFydCkKKworICAgIHJldHVybiBlcG9jaCwgdHVwbGUocGFy
dHMpCisKKworIyBEZWxpYmVyYXRlbHkgbm90IGFuY2hvcmVkIHRvIHRoZSBzdGFydCBhbmQgZW5k
IG9mIHRoZSBzdHJpbmcsIHRvIG1ha2UgaXQKKyMgZWFzaWVyIGZvciAzcmQgcGFydHkgY29kZSB0
byByZXVzZQorVkVSU0lPTl9QQVRURVJOID0gciIiIgorICAgIHY/CisgICAgKD86CisgICAgICAg
ICg/Oig/UDxlcG9jaD5bMC05XSspISk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlcG9j
aAorICAgICAgICAoP1A8cmVsZWFzZT5bMC05XSsoPzpcLlswLTldKykqKSAgICAgICAgICAgICAg
ICAgICMgcmVsZWFzZSBzZWdtZW50CisgICAgICAgICg/UDxwcmU+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmUtcmVsZWFzZQorICAgICAgICAgICAgWy1fXC5d
PworICAgICAgICAgICAgKD9QPHByZV9sPihhfGJ8Y3xyY3xhbHBoYXxiZXRhfHByZXxwcmV2aWV3
KSkKKyAgICAgICAgICAgIFstX1wuXT8KKyAgICAgICAgICAgICg/UDxwcmVfbj5bMC05XSspPwor
ICAgICAgICApPworICAgICAgICAoP1A8cG9zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgcG9zdCByZWxlYXNlCisgICAgICAgICAgICAoPzotKD9QPHBvc3RfbjE+
WzAtOV0rKSkKKyAgICAgICAgICAgIHwKKyAgICAgICAgICAgICg/OgorICAgICAgICAgICAgICAg
IFstX1wuXT8KKyAgICAgICAgICAgICAgICAoP1A8cG9zdF9sPnBvc3R8cmV2fHIpCisgICAgICAg
ICAgICAgICAgWy1fXC5dPworICAgICAgICAgICAgICAgICg/UDxwb3N0X24yPlswLTldKyk/Cisg
ICAgICAgICAgICApCisgICAgICAgICk/CisgICAgICAgICg/UDxkZXY+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXYgcmVsZWFzZQorICAgICAgICAgICAgWy1f
XC5dPworICAgICAgICAgICAgKD9QPGRldl9sPmRldikKKyAgICAgICAgICAgIFstX1wuXT8KKyAg
ICAgICAgICAgICg/UDxkZXZfbj5bMC05XSspPworICAgICAgICApPworICAgICkKKyAgICAoPzpc
Kyg/UDxsb2NhbD5bYS16MC05XSsoPzpbLV9cLl1bYS16MC05XSspKikpPyAgICAgICAjIGxvY2Fs
IHZlcnNpb24KKyIiIgorCisKK2NsYXNzIFZlcnNpb24oX0Jhc2VWZXJzaW9uKToKKworICAgIF9y
ZWdleCA9IHJlLmNvbXBpbGUociJeXHMqIiArIFZFUlNJT05fUEFUVEVSTiArIHIiXHMqJCIsIHJl
LlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcnNp
b24pOgorICAgICAgICAjIHR5cGU6IChzdHIpIC0+IE5vbmUKKworICAgICAgICAjIFZhbGlkYXRl
IHRoZSB2ZXJzaW9uIGFuZCBwYXJzZSBpdCBpbnRvIHBpZWNlcworICAgICAgICBtYXRjaCA9IHNl
bGYuX3JlZ2V4LnNlYXJjaCh2ZXJzaW9uKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAg
ICAgICByYWlzZSBJbnZhbGlkVmVyc2lvbigiSW52YWxpZCB2ZXJzaW9uOiAnezB9JyIuZm9ybWF0
KHZlcnNpb24pKQorCisgICAgICAgICMgU3RvcmUgdGhlIHBhcnNlZCBvdXQgcGllY2VzIG9mIHRo
ZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBfVmVyc2lvbigKKyAgICAgICAgICAg
IGVwb2NoPWludChtYXRjaC5ncm91cCgiZXBvY2giKSkgaWYgbWF0Y2guZ3JvdXAoImVwb2NoIikg
ZWxzZSAwLAorICAgICAgICAgICAgcmVsZWFzZT10dXBsZShpbnQoaSkgZm9yIGkgaW4gbWF0Y2gu
Z3JvdXAoInJlbGVhc2UiKS5zcGxpdCgiLiIpKSwKKyAgICAgICAgICAgIHByZT1fcGFyc2VfbGV0
dGVyX3ZlcnNpb24obWF0Y2guZ3JvdXAoInByZV9sIiksIG1hdGNoLmdyb3VwKCJwcmVfbiIpKSwK
KyAgICAgICAgICAgIHBvc3Q9X3BhcnNlX2xldHRlcl92ZXJzaW9uKAorICAgICAgICAgICAgICAg
IG1hdGNoLmdyb3VwKCJwb3N0X2wiKSwgbWF0Y2guZ3JvdXAoInBvc3RfbjEiKSBvciBtYXRjaC5n
cm91cCgicG9zdF9uMiIpCisgICAgICAgICAgICApLAorICAgICAgICAgICAgZGV2PV9wYXJzZV9s
ZXR0ZXJfdmVyc2lvbihtYXRjaC5ncm91cCgiZGV2X2wiKSwgbWF0Y2guZ3JvdXAoImRldl9uIikp
LAorICAgICAgICAgICAgbG9jYWw9X3BhcnNlX2xvY2FsX3ZlcnNpb24obWF0Y2guZ3JvdXAoImxv
Y2FsIikpLAorICAgICAgICApCisKKyAgICAgICAgIyBHZW5lcmF0ZSBhIGtleSB3aGljaCB3aWxs
IGJlIHVzZWQgZm9yIHNvcnRpbmcKKyAgICAgICAgc2VsZi5fa2V5ID0gX2NtcGtleSgKKyAgICAg
ICAgICAgIHNlbGYuX3ZlcnNpb24uZXBvY2gsCisgICAgICAgICAgICBzZWxmLl92ZXJzaW9uLnJl
bGVhc2UsCisgICAgICAgICAgICBzZWxmLl92ZXJzaW9uLnByZSwKKyAgICAgICAgICAgIHNlbGYu
X3ZlcnNpb24ucG9zdCwKKyAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24uZGV2LAorICAgICAgICAg
ICAgc2VsZi5fdmVyc2lvbi5sb2NhbCwKKyAgICAgICAgKQorCisgICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgorICAgICAgICByZXR1cm4gIjxWZXJzaW9u
KHswfSk+Ii5mb3JtYXQocmVwcihzdHIoc2VsZikpKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gc3RyCisgICAgICAgIHBhcnRzID0gW10KKworICAgICAg
ICAjIEVwb2NoCisgICAgICAgIGlmIHNlbGYuZXBvY2ggIT0gMDoKKyAgICAgICAgICAgIHBhcnRz
LmFwcGVuZCgiezB9ISIuZm9ybWF0KHNlbGYuZXBvY2gpKQorCisgICAgICAgICMgUmVsZWFzZSBz
ZWdtZW50CisgICAgICAgIHBhcnRzLmFwcGVuZCgiLiIuam9pbihzdHIoeCkgZm9yIHggaW4gc2Vs
Zi5yZWxlYXNlKSkKKworICAgICAgICAjIFByZS1yZWxlYXNlCisgICAgICAgIGlmIHNlbGYucHJl
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIiLmpvaW4oc3RyKHgpIGZv
ciB4IGluIHNlbGYucHJlKSkKKworICAgICAgICAjIFBvc3QtcmVsZWFzZQorICAgICAgICBpZiBz
ZWxmLnBvc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIi5wb3N0ezB9
Ii5mb3JtYXQoc2VsZi5wb3N0KSkKKworICAgICAgICAjIERldmVsb3BtZW50IHJlbGVhc2UKKyAg
ICAgICAgaWYgc2VsZi5kZXYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQo
Ii5kZXZ7MH0iLmZvcm1hdChzZWxmLmRldikpCisKKyAgICAgICAgIyBMb2NhbCB2ZXJzaW9uIHNl
Z21lbnQKKyAgICAgICAgaWYgc2VsZi5sb2NhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBh
cnRzLmFwcGVuZCgiK3swfSIuZm9ybWF0KHNlbGYubG9jYWwpKQorCisgICAgICAgIHJldHVybiAi
Ii5qb2luKHBhcnRzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVwb2NoKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICBfZXBvY2ggPSBzZWxmLl92ZXJzaW9uLmVw
b2NoICAjIHR5cGU6IGludAorICAgICAgICByZXR1cm4gX2Vwb2NoCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtpbnQs
IC4uLl0KKyAgICAgICAgX3JlbGVhc2UgPSBzZWxmLl92ZXJzaW9uLnJlbGVhc2UgICMgdHlwZTog
VHVwbGVbaW50LCAuLi5dCisgICAgICAgIHJldHVybiBfcmVsZWFzZQorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIHByZShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUdXBs
ZVtzdHIsIGludF1dCisgICAgICAgIF9wcmUgPSBzZWxmLl92ZXJzaW9uLnByZSAgIyB0eXBlOiBP
cHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgICAgIHJldHVybiBfcHJlCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgcG9zdChzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25h
bFtUdXBsZVtzdHIsIGludF1dCisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uLnBvc3RbMV0g
aWYgc2VsZi5fdmVyc2lvbi5wb3N0IGVsc2UgTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGRldihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUdXBsZVtzdHIsIGlu
dF1dCisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uLmRldlsxXSBpZiBzZWxmLl92ZXJzaW9u
LmRldiBlbHNlIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbChzZWxmKToKKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtzdHJdCisgICAgICAgIGlmIHNlbGYuX3ZlcnNp
b24ubG9jYWw6CisgICAgICAgICAgICByZXR1cm4gIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIHNl
bGYuX3ZlcnNpb24ubG9jYWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHB1YmxpYyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBzdHIKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKS5zcGxpdCgiKyIsIDEpWzBdCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgYmFzZV92ZXJzaW9uKHNlbGYpOgorICAgICAgICAjIHR5
cGU6ICgpIC0+IHN0cgorICAgICAgICBwYXJ0cyA9IFtdCisKKyAgICAgICAgIyBFcG9jaAorICAg
ICAgICBpZiBzZWxmLmVwb2NoICE9IDA6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoInswfSEi
LmZvcm1hdChzZWxmLmVwb2NoKSkKKworICAgICAgICAjIFJlbGVhc2Ugc2VnbWVudAorICAgICAg
ICBwYXJ0cy5hcHBlbmQoIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYucmVsZWFzZSkpCisK
KyAgICAgICAgcmV0dXJuICIiLmpvaW4ocGFydHMpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
aXNfcHJlcmVsZWFzZShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCisgICAgICAg
IHJldHVybiBzZWxmLmRldiBpcyBub3QgTm9uZSBvciBzZWxmLnByZSBpcyBub3QgTm9uZQorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Bvc3RyZWxlYXNlKHNlbGYpOgorICAgICAgICAjIHR5
cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIHNlbGYucG9zdCBpcyBub3QgTm9uZQorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2RldnJlbGVhc2Uoc2VsZik6CisgICAgICAgICMgdHlw
ZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gc2VsZi5kZXYgaXMgbm90IE5vbmUKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBtYWpvcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBp
bnQKKyAgICAgICAgcmV0dXJuIHNlbGYucmVsZWFzZVswXSBpZiBsZW4oc2VsZi5yZWxlYXNlKSA+
PSAxIGVsc2UgMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1pbm9yKHNlbGYpOgorICAgICAg
ICAjIHR5cGU6ICgpIC0+IGludAorICAgICAgICByZXR1cm4gc2VsZi5yZWxlYXNlWzFdIGlmIGxl
bihzZWxmLnJlbGVhc2UpID49IDIgZWxzZSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWlj
cm8oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gaW50CisgICAgICAgIHJldHVybiBzZWxm
LnJlbGVhc2VbMl0gaWYgbGVuKHNlbGYucmVsZWFzZSkgPj0gMyBlbHNlIDAKKworCitkZWYgX3Bh
cnNlX2xldHRlcl92ZXJzaW9uKAorICAgIGxldHRlciwgICMgdHlwZTogc3RyCisgICAgbnVtYmVy
LCAgIyB0eXBlOiBVbmlvbltzdHIsIGJ5dGVzLCBTdXBwb3J0c0ludF0KKyk6CisgICAgIyB0eXBl
OiAoLi4uKSAtPiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisKKyAgICBpZiBsZXR0ZXI6Cisg
ICAgICAgICMgV2UgY29uc2lkZXIgdGhlcmUgdG8gYmUgYW4gaW1wbGljaXQgMCBpbiBhIHByZS1y
ZWxlYXNlIGlmIHRoZXJlIGlzCisgICAgICAgICMgbm90IGEgbnVtZXJhbCBhc3NvY2lhdGVkIHdp
dGggaXQuCisgICAgICAgIGlmIG51bWJlciBpcyBOb25lOgorICAgICAgICAgICAgbnVtYmVyID0g
MAorCisgICAgICAgICMgV2Ugbm9ybWFsaXplIGFueSBsZXR0ZXJzIHRvIHRoZWlyIGxvd2VyIGNh
c2UgZm9ybQorICAgICAgICBsZXR0ZXIgPSBsZXR0ZXIubG93ZXIoKQorCisgICAgICAgICMgV2Ug
Y29uc2lkZXIgc29tZSB3b3JkcyB0byBiZSBhbHRlcm5hdGUgc3BlbGxpbmdzIG9mIG90aGVyIHdv
cmRzIGFuZAorICAgICAgICAjIGluIHRob3NlIGNhc2VzIHdlIHdhbnQgdG8gbm9ybWFsaXplIHRo
ZSBzcGVsbGluZ3MgdG8gb3VyIHByZWZlcnJlZAorICAgICAgICAjIHNwZWxsaW5nLgorICAgICAg
ICBpZiBsZXR0ZXIgPT0gImFscGhhIjoKKyAgICAgICAgICAgIGxldHRlciA9ICJhIgorICAgICAg
ICBlbGlmIGxldHRlciA9PSAiYmV0YSI6CisgICAgICAgICAgICBsZXR0ZXIgPSAiYiIKKyAgICAg
ICAgZWxpZiBsZXR0ZXIgaW4gWyJjIiwgInByZSIsICJwcmV2aWV3Il06CisgICAgICAgICAgICBs
ZXR0ZXIgPSAicmMiCisgICAgICAgIGVsaWYgbGV0dGVyIGluIFsicmV2IiwgInIiXToKKyAgICAg
ICAgICAgIGxldHRlciA9ICJwb3N0IgorCisgICAgICAgIHJldHVybiBsZXR0ZXIsIGludChudW1i
ZXIpCisgICAgaWYgbm90IGxldHRlciBhbmQgbnVtYmVyOgorICAgICAgICAjIFdlIGFzc3VtZSBp
ZiB3ZSBhcmUgZ2l2ZW4gYSBudW1iZXIsIGJ1dCB3ZSBhcmUgbm90IGdpdmVuIGEgbGV0dGVyCisg
ICAgICAgICMgdGhlbiB0aGlzIGlzIHVzaW5nIHRoZSBpbXBsaWNpdCBwb3N0IHJlbGVhc2Ugc3lu
dGF4IChlLmcuIDEuMC0xKQorICAgICAgICBsZXR0ZXIgPSAicG9zdCIKKworICAgICAgICByZXR1
cm4gbGV0dGVyLCBpbnQobnVtYmVyKQorCisgICAgcmV0dXJuIE5vbmUKKworCitfbG9jYWxfdmVy
c2lvbl9zZXBhcmF0b3JzID0gcmUuY29tcGlsZShyIltcLl8tXSIpCisKKworZGVmIF9wYXJzZV9s
b2NhbF92ZXJzaW9uKGxvY2FsKToKKyAgICAjIHR5cGU6IChzdHIpIC0+IE9wdGlvbmFsW0xvY2Fs
VHlwZV0KKyAgICAiIiIKKyAgICBUYWtlcyBhIHN0cmluZyBsaWtlIGFiYy4xLnR3ZWx2ZSBhbmQg
dHVybnMgaXQgaW50byAoImFiYyIsIDEsICJ0d2VsdmUiKS4KKyAgICAiIiIKKyAgICBpZiBsb2Nh
bCBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIHR1cGxlKAorICAgICAgICAgICAgcGFydC5s
b3dlcigpIGlmIG5vdCBwYXJ0LmlzZGlnaXQoKSBlbHNlIGludChwYXJ0KQorICAgICAgICAgICAg
Zm9yIHBhcnQgaW4gX2xvY2FsX3ZlcnNpb25fc2VwYXJhdG9ycy5zcGxpdChsb2NhbCkKKyAgICAg
ICAgKQorICAgIHJldHVybiBOb25lCisKKworZGVmIF9jbXBrZXkoCisgICAgZXBvY2gsICAjIHR5
cGU6IGludAorICAgIHJlbGVhc2UsICAjIHR5cGU6IFR1cGxlW2ludCwgLi4uXQorICAgIHByZSwg
ICMgdHlwZTogT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnRdXQorICAgIHBvc3QsICAjIHR5cGU6IE9w
dGlvbmFsW1R1cGxlW3N0ciwgaW50XV0KKyAgICBkZXYsICAjIHR5cGU6IE9wdGlvbmFsW1R1cGxl
W3N0ciwgaW50XV0KKyAgICBsb2NhbCwgICMgdHlwZTogT3B0aW9uYWxbVHVwbGVbU3ViTG9jYWxU
eXBlXV0KKyk6CisgICAgIyB0eXBlOiAoLi4uKSAtPiBDbXBLZXkKKworICAgICMgV2hlbiB3ZSBj
b21wYXJlIGEgcmVsZWFzZSB2ZXJzaW9uLCB3ZSB3YW50IHRvIGNvbXBhcmUgaXQgd2l0aCBhbGwg
b2YgdGhlCisgICAgIyB0cmFpbGluZyB6ZXJvcyByZW1vdmVkLiBTbyB3ZSdsbCB1c2UgYSByZXZl
cnNlIHRoZSBsaXN0LCBkcm9wIGFsbCB0aGUgbm93CisgICAgIyBsZWFkaW5nIHplcm9zIHVudGls
IHdlIGNvbWUgdG8gc29tZXRoaW5nIG5vbiB6ZXJvLCB0aGVuIHRha2UgdGhlIHJlc3QKKyAgICAj
IHJlLXJldmVyc2UgaXQgYmFjayBpbnRvIHRoZSBjb3JyZWN0IG9yZGVyIGFuZCBtYWtlIGl0IGEg
dHVwbGUgYW5kIHVzZQorICAgICMgdGhhdCBmb3Igb3VyIHNvcnRpbmcga2V5LgorICAgIF9yZWxl
YXNlID0gdHVwbGUoCisgICAgICAgIHJldmVyc2VkKGxpc3QoaXRlcnRvb2xzLmRyb3B3aGlsZShs
YW1iZGEgeDogeCA9PSAwLCByZXZlcnNlZChyZWxlYXNlKSkpKQorICAgICkKKworICAgICMgV2Ug
bmVlZCB0byAidHJpY2siIHRoZSBzb3J0aW5nIGFsZ29yaXRobSB0byBwdXQgMS4wLmRldjAgYmVm
b3JlIDEuMGEwLgorICAgICMgV2UnbGwgZG8gdGhpcyBieSBhYnVzaW5nIHRoZSBwcmUgc2VnbWVu
dCwgYnV0IHdlIF9vbmx5XyB3YW50IHRvIGRvIHRoaXMKKyAgICAjIGlmIHRoZXJlIGlzIG5vdCBh
IHByZSBvciBhIHBvc3Qgc2VnbWVudC4gSWYgd2UgaGF2ZSBvbmUgb2YgdGhvc2UgdGhlbgorICAg
ICMgdGhlIG5vcm1hbCBzb3J0aW5nIHJ1bGVzIHdpbGwgaGFuZGxlIHRoaXMgY2FzZSBjb3JyZWN0
bHkuCisgICAgaWYgcHJlIGlzIE5vbmUgYW5kIHBvc3QgaXMgTm9uZSBhbmQgZGV2IGlzIG5vdCBO
b25lOgorICAgICAgICBfcHJlID0gTmVnYXRpdmVJbmZpbml0eSAgIyB0eXBlOiBQcmVQb3N0RGV2
VHlwZQorICAgICMgVmVyc2lvbnMgd2l0aG91dCBhIHByZS1yZWxlYXNlIChleGNlcHQgYXMgbm90
ZWQgYWJvdmUpIHNob3VsZCBzb3J0IGFmdGVyCisgICAgIyB0aG9zZSB3aXRoIG9uZS4KKyAgICBl
bGlmIHByZSBpcyBOb25lOgorICAgICAgICBfcHJlID0gSW5maW5pdHkKKyAgICBlbHNlOgorICAg
ICAgICBfcHJlID0gcHJlCisKKyAgICAjIFZlcnNpb25zIHdpdGhvdXQgYSBwb3N0IHNlZ21lbnQg
c2hvdWxkIHNvcnQgYmVmb3JlIHRob3NlIHdpdGggb25lLgorICAgIGlmIHBvc3QgaXMgTm9uZToK
KyAgICAgICAgX3Bvc3QgPSBOZWdhdGl2ZUluZmluaXR5ICAjIHR5cGU6IFByZVBvc3REZXZUeXBl
CisKKyAgICBlbHNlOgorICAgICAgICBfcG9zdCA9IHBvc3QKKworICAgICMgVmVyc2lvbnMgd2l0
aG91dCBhIGRldmVsb3BtZW50IHNlZ21lbnQgc2hvdWxkIHNvcnQgYWZ0ZXIgdGhvc2Ugd2l0aCBv
bmUuCisgICAgaWYgZGV2IGlzIE5vbmU6CisgICAgICAgIF9kZXYgPSBJbmZpbml0eSAgIyB0eXBl
OiBQcmVQb3N0RGV2VHlwZQorCisgICAgZWxzZToKKyAgICAgICAgX2RldiA9IGRldgorCisgICAg
aWYgbG9jYWwgaXMgTm9uZToKKyAgICAgICAgIyBWZXJzaW9ucyB3aXRob3V0IGEgbG9jYWwgc2Vn
bWVudCBzaG91bGQgc29ydCBiZWZvcmUgdGhvc2Ugd2l0aCBvbmUuCisgICAgICAgIF9sb2NhbCA9
IE5lZ2F0aXZlSW5maW5pdHkgICMgdHlwZTogTG9jYWxUeXBlCisgICAgZWxzZToKKyAgICAgICAg
IyBWZXJzaW9ucyB3aXRoIGEgbG9jYWwgc2VnbWVudCBuZWVkIHRoYXQgc2VnbWVudCBwYXJzZWQg
dG8gaW1wbGVtZW50CisgICAgICAgICMgdGhlIHNvcnRpbmcgcnVsZXMgaW4gUEVQNDQwLgorICAg
ICAgICAjIC0gQWxwaGEgbnVtZXJpYyBzZWdtZW50cyBzb3J0IGJlZm9yZSBudW1lcmljIHNlZ21l
bnRzCisgICAgICAgICMgLSBBbHBoYSBudW1lcmljIHNlZ21lbnRzIHNvcnQgbGV4aWNvZ3JhcGhp
Y2FsbHkKKyAgICAgICAgIyAtIE51bWVyaWMgc2VnbWVudHMgc29ydCBudW1lcmljYWxseQorICAg
ICAgICAjIC0gU2hvcnRlciB2ZXJzaW9ucyBzb3J0IGJlZm9yZSBsb25nZXIgdmVyc2lvbnMgd2hl
biB0aGUgcHJlZml4ZXMKKyAgICAgICAgIyAgIG1hdGNoIGV4YWN0bHkKKyAgICAgICAgX2xvY2Fs
ID0gdHVwbGUoCisgICAgICAgICAgICAoaSwgIiIpIGlmIGlzaW5zdGFuY2UoaSwgaW50KSBlbHNl
IChOZWdhdGl2ZUluZmluaXR5LCBpKSBmb3IgaSBpbiBsb2NhbAorICAgICAgICApCisKKyAgICBy
ZXR1cm4gZXBvY2gsIF9yZWxlYXNlLCBfcHJlLCBfcG9zdCwgX2RldiwgX2xvY2FsCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9weXByb2plY3QudG9tbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3B5cHJv
amVjdC50b21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTZjZGE2
YmU1MDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcHlwcm9qZWN0LnRvbWwK
QEAgLTAsMCArMSwzNyBAQAorW2J1aWxkLXN5c3RlbV0KK3JlcXVpcmVzID0gWyJmbGl0X2NvcmUg
Pj0yLDw0Il0KK2J1aWxkLWJhY2tlbmQgPSAiZmxpdF9jb3JlLmJ1aWxkYXBpIgorCitbdG9vbC5m
bGl0Lm1ldGFkYXRhXQorbW9kdWxlID0gInBhY2thZ2luZyIKK2F1dGhvciA9ICJEb25hbGQgU3R1
ZmZ0IGFuZCBpbmRpdmlkdWFsIGNvbnRyaWJ1dG9ycyIKK2F1dGhvci1lbWFpbCA9ICJkb25hbGRA
c3R1ZmZ0LmlvIgoraG9tZS1wYWdlID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3BhY2thZ2lu
ZyIKK2Rlc2NyaXB0aW9uLWZpbGUgPSAiUkVBRE1FLnJzdCIKK2NsYXNzaWZpZXJzID0gWworICAg
ICAgICAiRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJsZSIsCisgICAg
ICAgICJJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzIiwKKyAgICAgICAgIkxpY2Vuc2Ug
OjogT1NJIEFwcHJvdmVkIDo6IEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIiwKKyAgICAgICAgIkxp
Y2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IEJTRCBMaWNlbnNlIiwKKyAgICAgICAgIlByb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24g
OjogMi43IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzIiwK
KyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjQiLAorICAgICAg
ICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNSIsCisgICAgICAgICJQcm9n
cmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42IiwKKyAgICAgICAgIlByb2dyYW1taW5n
IExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjciLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3Vh
Z2UgOjogUHl0aG9uIDo6IDMuOCIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy45IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6
OiBJbXBsZW1lbnRhdGlvbiA6OiBDUHl0aG9uIiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1
YWdlIDo6IFB5dGhvbiA6OiBJbXBsZW1lbnRhdGlvbiA6OiBQeVB5IiwKK10KK3JlcXVpcmVzLXB5
dGhvbiA9ICI+PTIuNywgIT0zLjAuKiwgIT0zLjEuKiwgIT0zLjIuKiwgIT0zLjMuKiIKK3JlcXVp
cmVzID0gWyJweXBhcnNpbmc+PTIuMC4yIl0KKworW3Rvb2wuZmxpdC5tZXRhZGF0YS51cmxzXQor
RG9jdW1lbnRhdGlvbiA9ICJodHRwczovL3BhY2thZ2luZy5weXBhLmlvLyIKK0NoYW5nZWxvZyA9
ICJodHRwczovL3BhY2thZ2luZy5weXBhLmlvL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbCIKKwor
W3Rvb2wuZmxpdC5zZGlzdF0KK2luY2x1ZGUgPSBbIkxJQ0VOU0UiLCAiTElDRU5TRS5CU0QiLCAi
TElDRU5TRS5BUEFDSEUiXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvX19pbml0
X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJhZTI0Njg4YjU5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGFja2FnaW5nL3Rhc2tzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTAgQEAKKyMgVGhp
cyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0
YWlscy4KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IGludm9rZQorCitmcm9tIC4gaW1wb3J0IGNoZWNrCisK
K25zID0gaW52b2tlLkNvbGxlY3Rpb24oY2hlY2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2lu
Zy90YXNrcy9jaGVjay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rhc2tzL2NoZWNrLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTMwYWI0OTBmM2MxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvY2hlY2sucHkKQEAgLTAsMCArMSwxNDcgQEAK
KyMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxl
dGUgZGV0YWlscy4KKworaW1wb3J0IGpzb24KK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcy5w
YXRoCisKK3RyeToKKyAgICBpbXBvcnQgeG1scnBjLmNsaWVudCBhcyB4bWxycGNfY2xpZW50Citl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IHhtbHJwY2xpYiBhcyB4bWxycGNfY2xpZW50
CisKK2ltcG9ydCBpbnZva2UKK2ltcG9ydCBwa2dfcmVzb3VyY2VzCitpbXBvcnQgcHJvZ3Jlc3Mu
YmFyCisKK2Zyb20gcGFja2FnaW5nLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KKworZnJvbSAucGF0
aHMgaW1wb3J0IENBQ0hFCisKKworZGVmIF9wYXJzZV92ZXJzaW9uKHZhbHVlKToKKyAgICB0cnk6
CisgICAgICAgIHJldHVybiBWZXJzaW9uKHZhbHVlKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgor
ICAgICAgICByZXR1cm4gTm9uZQorCisKK0BpbnZva2UudGFzaworZGVmIHBlcDQ0MChjYWNoZWQ9
RmFsc2UpOgorICAgIGNhY2hlX3BhdGggPSBvcy5wYXRoLmpvaW4oQ0FDSEUsICJwZXA0NDAuanNv
biIpCisKKyAgICAjIElmIHdlIHdlcmUgZ2l2ZW4gLS1jYWNoZWQsIHRoZW4gd2Ugd2FudCB0byBh
dHRlbXB0IHRvIHVzZSBjYWNoZWQgZGF0YSBpZgorICAgICMgcG9zc2libGUKKyAgICBpZiBjYWNo
ZWQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihjYWNoZV9wYXRoLCAiciIp
IGFzIGZwOgorICAgICAgICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWQoZnApCisgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBkYXRhID0gTm9uZQorICAgIGVsc2U6CisgICAg
ICAgIGRhdGEgPSBOb25lCisKKyAgICAjIElmIHdlIGRvbid0IGhhdmUgZGF0YSwgdGhlbiBsZXQn
cyBnbyBmZXRjaCBpdCBmcm9tIFB5UEkKKyAgICBpZiBkYXRhIGlzIE5vbmU6CisgICAgICAgIGJh
ciA9IHByb2dyZXNzLmJhci5TaGFkeUJhcigiRmV0Y2hpbmcgVmVyc2lvbnMiKQorICAgICAgICBj
bGllbnQgPSB4bWxycGNfY2xpZW50LlNlcnZlcigiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlw
aSIpCisKKyAgICAgICAgZGF0YSA9IGRpY3QoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgKHByb2plY3QsIGNsaWVudC5wYWNrYWdlX3JlbGVhc2VzKHByb2plY3QsIFRydWUpKQorICAg
ICAgICAgICAgICAgIGZvciBwcm9qZWN0IGluIGJhci5pdGVyKGNsaWVudC5saXN0X3BhY2thZ2Vz
KCkpCisgICAgICAgICAgICBdCisgICAgICAgICkKKworICAgICAgICBvcy5tYWtlZGlycyhvcy5w
YXRoLmRpcm5hbWUoY2FjaGVfcGF0aCksIGV4aXN0X29rPVRydWUpCisgICAgICAgIHdpdGggb3Bl
bihjYWNoZV9wYXRoLCAidyIpIGFzIGZwOgorICAgICAgICAgICAganNvbi5kdW1wKGRhdGEsIGZw
KQorCisgICAgIyBHZXQgYSBsaXN0IG9mIGFsbCBvZiB0aGUgdmVyc2lvbiBudW1iZXJzIG9uIFB5
UEkKKyAgICBhbGxfdmVyc2lvbnMgPSBsaXN0KGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxl
KGRhdGEudmFsdWVzKCkpKQorCisgICAgIyBEZXRlcm1pbmUgdGhlIHRvdGFsIG51bWJlciBvZiB2
ZXJzaW9ucyB3aGljaCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZQorICAgICMgY3VycmVudCByb3V0
aW5lCisgICAgcGFyc2VkX3ZlcnNpb25zID0gWworICAgICAgICBfcGFyc2VfdmVyc2lvbih2KSBm
b3IgdiBpbiBhbGxfdmVyc2lvbnMgaWYgX3BhcnNlX3ZlcnNpb24odikgaXMgbm90IE5vbmUKKyAg
ICBdCisKKyAgICAjIERldGVybWluZSBhIGxpc3Qgb2YgcHJvamVjdHMgdGhhdCBzb3J0IGV4YWN0
bHkgdGhlIHNhbWUgYmV0d2VlbgorICAgICMgcGtnX3Jlc291cmNlcyBhbmQgUEVQIDQ0MAorICAg
IGNvbXBhdGlibGVfc29ydGluZyA9IFsKKyAgICAgICAgcHJvamVjdAorICAgICAgICBmb3IgcHJv
amVjdCwgdmVyc2lvbnMgaW4gZGF0YS5pdGVtcygpCisgICAgICAgIGlmICgKKyAgICAgICAgICAg
IHNvcnRlZCh2ZXJzaW9ucywga2V5PXBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbikKKyAgICAg
ICAgICAgID09IHNvcnRlZCgoeCBmb3IgeCBpbiB2ZXJzaW9ucyBpZiBfcGFyc2VfdmVyc2lvbih4
KSksIGtleT1WZXJzaW9uKQorICAgICAgICApCisgICAgXQorCisgICAgIyBEZXRlcm1pbmUgYSBs
aXN0IG9mIHByb2plY3RzIHRoYXQgc29ydCBleGFjdGx5IHRoZSBzYW1lIGJldHdlZW4KKyAgICAj
IHBrZ19yZXNvdXJjZXMgYW5kIFBFUCA0NDAgd2hlbiBpbnZhbGlkIHZlcnNpb25zIGFyZSBmaWx0
ZXJlZCBvdXQKKyAgICBmaWx0ZXJlZF9jb21wYXRpYmxlX3NvcnRpbmcgPSBbCisgICAgICAgIHBy
b2plY3QKKyAgICAgICAgZm9yIHByb2plY3QsIHZlcnNpb25zIGluICgKKyAgICAgICAgICAgIChw
LCBbdiBmb3IgdiBpbiB2cyBpZiBfcGFyc2VfdmVyc2lvbih2KSBpcyBub3QgTm9uZV0pCisgICAg
ICAgICAgICBmb3IgcCwgdnMgaW4gZGF0YS5pdGVtcygpCisgICAgICAgICkKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc29ydGVkKHZlcnNpb25zLCBrZXk9cGtnX3Jlc291cmNlcy5wYXJzZV92
ZXJzaW9uKQorICAgICAgICAgICAgPT0gc29ydGVkKHZlcnNpb25zLCBrZXk9VmVyc2lvbikKKyAg
ICAgICAgKQorICAgIF0KKworICAgICMgRGV0ZXJtaW5lIGEgbGlzdCBvZiBwcm9qZWN0cyB3aGlj
aCBkbyBub3QgaGF2ZSBhbnkgdmVyc2lvbnMgdGhhdCBhcmUKKyAgICAjIHZhbGlkIHdpdGggUEVQ
IDQ0MCBhbmQgd2hpY2ggaGF2ZSBhbnkgdmVyc2lvbnMgcmVnaXN0ZXJlZAorICAgIG9ubHlfaW52
YWxpZF92ZXJzaW9ucyA9IFsKKyAgICAgICAgcHJvamVjdAorICAgICAgICBmb3IgcHJvamVjdCwg
dmVyc2lvbnMgaW4gZGF0YS5pdGVtcygpCisgICAgICAgIGlmICh2ZXJzaW9ucyBhbmQgbm90IFt2
IGZvciB2IGluIHZlcnNpb25zIGlmIF9wYXJzZV92ZXJzaW9uKHYpIGlzIG5vdCBOb25lXSkKKyAg
ICBdCisKKyAgICAjIERldGVybWluZSBhIGxpc3Qgb2YgcHJvamVjdHMgd2hpY2ggaGF2ZSBtYXRj
aGluZyBsYXRlc3QgdmVyc2lvbnMgYmV0d2VlbgorICAgICMgcGtnX3Jlc291cmNlcyBhbmQgUEVQ
IDQ0MAorICAgIGRpZmZlcmluZ19sYXRlc3RfdmVyc2lvbnMgPSBbCisgICAgICAgIHByb2plY3QK
KyAgICAgICAgZm9yIHByb2plY3QsIHZlcnNpb25zIGluIGRhdGEuaXRlbXMoKQorICAgICAgICBp
ZiAoCisgICAgICAgICAgICBzb3J0ZWQodmVyc2lvbnMsIGtleT1wa2dfcmVzb3VyY2VzLnBhcnNl
X3ZlcnNpb24pWy0xOl0KKyAgICAgICAgICAgICE9IHNvcnRlZCgoeCBmb3IgeCBpbiB2ZXJzaW9u
cyBpZiBfcGFyc2VfdmVyc2lvbih4KSksIGtleT1WZXJzaW9uKVstMTpdCisgICAgICAgICkKKyAg
ICBdCisKKyAgICAjIFByaW50IG91dCBvdXIgZmluZGluZ3MKKyAgICBwcmludCgKKyAgICAgICAg
IlRvdGFsIFZlcnNpb24gQ29tcGF0aWJpbGl0eTogICAgICAgICAgICAgIHt9L3t9ICh7Oi4yJX0p
Ii5mb3JtYXQoCisgICAgICAgICAgICBsZW4ocGFyc2VkX3ZlcnNpb25zKSwKKyAgICAgICAgICAg
IGxlbihhbGxfdmVyc2lvbnMpLAorICAgICAgICAgICAgbGVuKHBhcnNlZF92ZXJzaW9ucykgLyBs
ZW4oYWxsX3ZlcnNpb25zKSwKKyAgICAgICAgKQorICAgICkKKyAgICBwcmludCgKKyAgICAgICAg
IlRvdGFsIFNvcnRpbmcgQ29tcGF0aWJpbGl0eSAoVW5maWx0ZXJlZCk6IHt9L3t9ICh7Oi4yJX0p
Ii5mb3JtYXQoCisgICAgICAgICAgICBsZW4oY29tcGF0aWJsZV9zb3J0aW5nKSwgbGVuKGRhdGEp
LCBsZW4oY29tcGF0aWJsZV9zb3J0aW5nKSAvIGxlbihkYXRhKQorICAgICAgICApCisgICAgKQor
ICAgIHByaW50KAorICAgICAgICAiVG90YWwgU29ydGluZyBDb21wYXRpYmlsaXR5IChGaWx0ZXJl
ZCk6ICAge30ve30gKHs6LjIlfSkiLmZvcm1hdCgKKyAgICAgICAgICAgIGxlbihmaWx0ZXJlZF9j
b21wYXRpYmxlX3NvcnRpbmcpLAorICAgICAgICAgICAgbGVuKGRhdGEpLAorICAgICAgICAgICAg
bGVuKGZpbHRlcmVkX2NvbXBhdGlibGVfc29ydGluZykgLyBsZW4oZGF0YSksCisgICAgICAgICkK
KyAgICApCisgICAgcHJpbnQoCisgICAgICAgICJQcm9qZWN0cyB3aXRoIE5vIENvbXBhdGlibGUg
VmVyc2lvbnM6ICAgICB7fS97fSAoezouMiV9KSIuZm9ybWF0KAorICAgICAgICAgICAgbGVuKG9u
bHlfaW52YWxpZF92ZXJzaW9ucyksCisgICAgICAgICAgICBsZW4oZGF0YSksCisgICAgICAgICAg
ICBsZW4ob25seV9pbnZhbGlkX3ZlcnNpb25zKSAvIGxlbihkYXRhKSwKKyAgICAgICAgKQorICAg
ICkKKyAgICBwcmludCgKKyAgICAgICAgIlByb2plY3RzIHdpdGggRGlmZmVyaW5nIExhdGVzdCBW
ZXJzaW9uOiAgIHt9L3t9ICh7Oi4yJX0pIi5mb3JtYXQoCisgICAgICAgICAgICBsZW4oZGlmZmVy
aW5nX2xhdGVzdF92ZXJzaW9ucyksCisgICAgICAgICAgICBsZW4oZGF0YSksCisgICAgICAgICAg
ICBsZW4oZGlmZmVyaW5nX2xhdGVzdF92ZXJzaW9ucykgLyBsZW4oZGF0YSksCisgICAgICAgICkK
KyAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy9wYXRocy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL3Rhc2tzL3BhdGhzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMTNkNDk0MjNiZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcv
dGFza3MvcGF0aHMucHkKQEAgLTAsMCArMSwxMCBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNl
bnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIu
MCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorCitpbXBvcnQgb3Mu
cGF0aAorCisKK1BST0pFQ1QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXykpKQorCitDQUNIRSA9IG9zLnBhdGguam9pbihQUk9KRUNULCAi
LmNhY2hlIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rhc2tzL3JlcXVpcmVtZW50cy50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy9yZXF1aXJlbWVudHMudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTY3N2MwZTg5YmQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvcmVxdWlyZW1lbnRzLnR4dApAQCAtMCwwICsxLDMgQEAK
KyMgVGhlIHJlcXVpcmVtZW50cyByZXF1aXJlZCB0byBpbnZva2UgdGhlIHRhc2tzCitpbnZva2UK
K3Byb2dyZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGFja2FnaW5nL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMGUxMTMwMTQxM2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvdGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSw0IEBACisjIFRoaXMgZmlsZSBp
cyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCitm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1
bmN0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9idWlsZC1oZWxsby13b3Js
ZC5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2J1aWxkLWhlbGxvLXdvcmxkLnNoCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWMzZTFlMTgxOTA5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvYnVpbGQtaGVsbG8td29ybGQuc2gKQEAgLTAs
MCArMSwzOSBAQAorIyEvYmluL2Jhc2gKKworc2V0IC14CitzZXQgLWUKKworaWYgWyAkIyAtZXEg
MCBdOyB0aGVuCisJZG9ja2VyIHJ1biAtLXJtIC12ICQocHdkKTovaG9tZS9oZWxsby13b3JsZCBh
cm0zMnY1L2RlYmlhbiAvaG9tZS9oZWxsby13b3JsZC9idWlsZC1oZWxsby13b3JsZC5zaCBpbmNv
bnRhaW5lciA1MgorCWRvY2tlciBydW4gLS1ybSAtdiAkKHB3ZCk6L2hvbWUvaGVsbG8td29ybGQg
YXJtMzJ2Ny9kZWJpYW4gL2hvbWUvaGVsbG8td29ybGQvYnVpbGQtaGVsbG8td29ybGQuc2ggaW5j
b250YWluZXIgNTIKKwlkb2NrZXIgcnVuIC0tcm0gLXYgJChwd2QpOi9ob21lL2hlbGxvLXdvcmxk
IGkzODYvZGViaWFuIC9ob21lL2hlbGxvLXdvcmxkL2J1aWxkLWhlbGxvLXdvcmxkLnNoIGluY29u
dGFpbmVyIDUyCisJZG9ja2VyIHJ1biAtLXJtIC12ICQocHdkKTovaG9tZS9oZWxsby13b3JsZCBz
MzkweC9kZWJpYW4gL2hvbWUvaGVsbG8td29ybGQvYnVpbGQtaGVsbG8td29ybGQuc2ggaW5jb250
YWluZXIgNjQKKwlkb2NrZXIgcnVuIC0tcm0gLXYgJChwd2QpOi9ob21lL2hlbGxvLXdvcmxkIGRl
YmlhbiAvaG9tZS9oZWxsby13b3JsZC9idWlsZC1oZWxsby13b3JsZC5zaCBpbmNvbnRhaW5lciA2
NAorCWRvY2tlciBydW4gLS1ybSAtdiAkKHB3ZCk6L2hvbWUvaGVsbG8td29ybGQgZGViaWFuIC9o
b21lL2hlbGxvLXdvcmxkL2J1aWxkLWhlbGxvLXdvcmxkLnNoIHgzMiA1MgorCWNwIC1mIGhlbGxv
LXdvcmxkLXg4Nl82NC1pMzg2IGhlbGxvLXdvcmxkLWludmFsaWQtbWFnaWMKKwlwcmludGYgIlx4
MDAiIHwgZGQgb2Y9aGVsbG8td29ybGQtaW52YWxpZC1tYWdpYyBicz0xIHNlZWs9MHgwMCBjb3Vu
dD0xIGNvbnY9bm90cnVuYworCWNwIC1mIGhlbGxvLXdvcmxkLXg4Nl82NC1pMzg2IGhlbGxvLXdv
cmxkLWludmFsaWQtY2xhc3MKKwlwcmludGYgIlx4MDAiIHwgZGQgb2Y9aGVsbG8td29ybGQtaW52
YWxpZC1jbGFzcyBicz0xIHNlZWs9MHgwNCBjb3VudD0xIGNvbnY9bm90cnVuYworCWNwIC1mIGhl
bGxvLXdvcmxkLXg4Nl82NC1pMzg2IGhlbGxvLXdvcmxkLWludmFsaWQtZGF0YQorCXByaW50ZiAi
XHgwMCIgfCBkZCBvZj1oZWxsby13b3JsZC1pbnZhbGlkLWRhdGEgYnM9MSBzZWVrPTB4MDUgY291
bnQ9MSBjb252PW5vdHJ1bmMKKwloZWFkIC1jIDQwIGhlbGxvLXdvcmxkLXg4Nl82NC1pMzg2ID4g
aGVsbG8td29ybGQtdG9vLXNob3J0CisJZXhpdCAwCitmaQorCitleHBvcnQgREVCSUFOX0ZST05U
RU5EPW5vbmludGVyYWN0aXZlCitjZCAvaG9tZS9oZWxsby13b3JsZC8KK2FwdC1nZXQgdXBkYXRl
CithcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgZ2NjIGxpYmM2LWRl
dgoraWYgWyAiJDEiID09ICJpbmNvbnRhaW5lciIgXTsgdGhlbgorCUFSQ0g9JChkcGtnIC0tcHJp
bnQtYXJjaGl0ZWN0dXJlKQorCUNGTEFHUz0iIgorZWxzZQorCUFSQ0g9JDEKKwlkcGtnIC0tYWRk
LWFyY2hpdGVjdHVyZSAke0FSQ0h9CisJYXB0LWdldCBpbnN0YWxsIC15IC0tbm8taW5zdGFsbC1y
ZWNvbW1lbmRzIGdjYy1tdWx0aWxpYiBsaWJjNi1kZXYtJHtBUkNIfQorCUNGTEFHUz0iLW14MzIi
CitmaQorTkFNRT1oZWxsby13b3JsZC0kKHVuYW1lIC1tKS0ke0FSQ0h9CitnY2MgLU9zIC1zICR7
Q0ZMQUdTfSAtbyAke05BTUV9LWZ1bGwgaGVsbG8td29ybGQuYworaGVhZCAtYyAkMiAke05BTUV9
LWZ1bGwgPiAke05BTUV9CitybSAtZiAke05BTUV9LWZ1bGwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWFybXY3bC1hcm1lbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rl
c3RzL2hlbGxvLXdvcmxkLWFybXY3bC1hcm1lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGZkMjNmYTNjMGViOTQ0
MzU4YjFlZWUwYjdjMjQxYzc5ZGEzY2QzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1Mgp1Y21i
PC1ePkpmbFdNcUg9VyhFeGc1S24tR2Z4IWV3SHdYZD1DSShnJDFfY0lBcHF3Oz02YXhUYW9DNj5M
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy9oZWxsby13b3JsZC1hcm12N2wtYXJtaGYgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13
b3JsZC1hcm12N2wtYXJtaGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY1YWIzMDAzYWY5N2RjMzdkMzE4NzhmZWVm
ZjU3NGI1OWRhZTE3YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTIKdWNtYjwtXj5KZmxXTXFI
PVcoRXhnNUtvWVdmeCFld2NMKUxyNzZ3KW0xX2NJQXBxdzs9NmF4VGJiXnxLXwoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29y
bGQtaW52YWxpZC1jbGFzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWludmFs
aWQtY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU5ODk5ZmMwNzYwOWYzN2Y1MjUxZjBkYTVhNWFmOTdkNGQ3
OTIzNApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTIKdGNtYjwtXj5KZmhXTXFIPVcoSDtrNU8w
QTExQV9eV0haWCs5bUBwX1hhNUhFeSRTX0RWMDAzJVQxN2lSSAoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQtaW52YWxp
ZC1kYXRhIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQtaW52YWxpZC1kYXRhCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI2NTliOGVlMjU3NjhiYTM4OTMyMTc3YWU5MWQ0ZjQ0YTQ4MjkxN2EKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDUyCnNjbWI8LV4+SmZsVX1TJitXKEg8M1otRD48ZzklWDN6emB5
MSFsMXl3JjdpPmAheXdINzBCVCtYViptZ0UKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWludmFsaWQtbWFnaWMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZhbGlkLW1hZ2ljCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2MDY2YWQyZGVkMWFmN2M2OGE0ZjVkNGQzY2NjNjY5MzNiODlmNDMKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDUyCnRjbVpRQF4+SmZsV01xSD1XKEg7azVPMEExMUFfXldIWlgrOW1AcF9YYTVI
RXkkU19EVjAwMjxJMF82WXoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXMzOTB4LXMzOTB4IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvdGVzdHMvaGVsbG8td29ybGQtczM5MHgtczM5MHgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRlOTU3ODg4OWVm
YzNlZWU3M2YxMmEwZDhkZjcwZmU4OWRkZDY3ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjQK
c2NtYjwtXj5KZmpWcXx+PVcoRn1KOCFFc1MwMk96RCgxSGJFK0pWNz5mcz9fM0w1ZXtWMEQ1VHlm
ZEJ2aQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcv
dGVzdHMvaGVsbG8td29ybGQtdG9vLXNob3J0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8t
d29ybGQtdG9vLXNob3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWMwMzk2Yjk0ZDhmM2M2YjVlZjZmY2QxY2M2
NzMxN2VkZDNlODUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQwCmhjbWI8LV4+SmZsV01xSD1X
KEg7azVPMEExMUFfXldIWlgrOTAwMmNOMDtUYH0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXg4Nl82NC1hbWQ2NCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXg4Nl82NC1hbWQ2NApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jN2Y1YjBiNWU1YmI2OTU1MGQ1OTRiOGQxODFmNmY4ODEzNTZlNDA0CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCA2NAp0Y21iPC1ePkpmaldNcUg9VyhHUzM1VSlUMEJIe3AqQEd5aWpmUnFEKzFw
X3libHdwdSYwMDU3cDFKRDJmCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC14ODZfNjQtaTM4NiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2Fn
aW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXg4Nl82NC1pMzg2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMWQ1NDBhMzBj
NmRmMjQ0ZDAxM2JmNDExYWQ4ZWE2M2ViM2YxNmYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDUy
CnRjbWI8LV4+SmZsV01xSD1XKEg7azVPMEExMUFfXldIWlgrOW1AcF9YYTVIRXkkU19EVjAwMyVA
MTdyWEkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
L3Rlc3RzL2hlbGxvLXdvcmxkLXg4Nl82NC14MzIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxs
by13b3JsZC14ODZfNjQteDMyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZjg1ZDM0NzM3ZTIzN2I3ZDE0NzM5Mjkz
NjMzNDBmYjc0MDJlM2MKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDUyCnNjbWI8LV4+SmZsV01x
SD1XKEdTMzVVKVVoZnghZXcrWmFNKk9jKWR4eEVWQVVXRWk5dzBCI2NsZGpKM2MKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdv
cmxkLmMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC5jCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWU1OTFjM2VjNWRkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQuYwpAQCAtMCwwICsxLDcgQEAKKyNp
bmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQorewor
CXByaW50ZigiSGVsbG8gd29ybGQiKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL3Rlc3RzL3Rlc3RfbWFya2Vycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3Rl
c3RfbWFya2Vycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAx
ZTRhYTZiMzc0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3Rlc3Rf
bWFya2Vycy5weQpAQCAtMCwwICsxLDM4NCBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNl
ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIuMCwg
YW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorCitpbXBv
cnQgY29sbGVjdGlvbnMKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRm
b3JtCitpbXBvcnQgc3lzCisKK2ltcG9ydCBwcmV0ZW5kCitpbXBvcnQgcHl0ZXN0CisKK2Zyb20g
cGFja2FnaW5nLm1hcmtlcnMgaW1wb3J0ICgKKyAgICBOb2RlLAorICAgIEludmFsaWRNYXJrZXIs
CisgICAgVW5kZWZpbmVkQ29tcGFyaXNvbiwKKyAgICBVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUs
CisgICAgTWFya2VyLAorICAgIGRlZmF1bHRfZW52aXJvbm1lbnQsCisgICAgZm9ybWF0X2Z1bGxf
dmVyc2lvbiwKKykKKworCitWQVJJQUJMRVMgPSBbCisgICAgImV4dHJhIiwKKyAgICAiaW1wbGVt
ZW50YXRpb25fbmFtZSIsCisgICAgImltcGxlbWVudGF0aW9uX3ZlcnNpb24iLAorICAgICJvc19u
YW1lIiwKKyAgICAicGxhdGZvcm1fbWFjaGluZSIsCisgICAgInBsYXRmb3JtX3JlbGVhc2UiLAor
ICAgICJwbGF0Zm9ybV9zeXN0ZW0iLAorICAgICJwbGF0Zm9ybV92ZXJzaW9uIiwKKyAgICAicHl0
aG9uX2Z1bGxfdmVyc2lvbiIsCisgICAgInB5dGhvbl92ZXJzaW9uIiwKKyAgICAicGxhdGZvcm1f
cHl0aG9uX2ltcGxlbWVudGF0aW9uIiwKKyAgICAic3lzX3BsYXRmb3JtIiwKK10KKworUEVQXzM0
NV9WQVJJQUJMRVMgPSBbCisgICAgIm9zLm5hbWUiLAorICAgICJzeXMucGxhdGZvcm0iLAorICAg
ICJwbGF0Zm9ybS52ZXJzaW9uIiwKKyAgICAicGxhdGZvcm0ubWFjaGluZSIsCisgICAgInBsYXRm
b3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbiIsCitdCisKK1NFVFVQVE9PTFNfVkFSSUFCTEVTID0g
WyJweXRob25faW1wbGVtZW50YXRpb24iXQorCitPUEVSQVRPUlMgPSBbIj09PSIsICI9PSIsICI+
PSIsICI8PSIsICIhPSIsICJ+PSIsICI+IiwgIjwiLCAiaW4iLCAibm90IGluIl0KKworVkFMVUVT
ID0gWworICAgICIxLjAiLAorICAgICI1LjZhMCIsCisgICAgImRvZyIsCisgICAgImZyZWVic2Qi
LAorICAgICJsaXRlcmFsbHkgYW55IHN0cmluZyBjYW4gZ28gaGVyZSIsCisgICAgInRoaW5ncyBA
IzQgZHNmZCAoKCgiLAorXQorCisKK2NsYXNzIFRlc3ROb2RlOgorICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgidmFsdWUiLCBbIm9uZSIsICJ0d28iLCBOb25lLCAzLCA1LCBbXV0pCisgICAg
ZGVmIHRlc3RfYWNjZXB0c192YWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIGFzc2VydCBOb2Rl
KHZhbHVlKS52YWx1ZSA9PSB2YWx1ZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2
YWx1ZSIsIFsib25lIiwgInR3byIsIE5vbmUsIDMsIDUsIFtdXSkKKyAgICBkZWYgdGVzdF9zdHIo
c2VsZiwgdmFsdWUpOgorICAgICAgICBhc3NlcnQgc3RyKE5vZGUodmFsdWUpKSA9PSBzdHIodmFs
dWUpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZhbHVlIiwgWyJvbmUiLCAidHdv
IiwgTm9uZSwgMywgNSwgW11dKQorICAgIGRlZiB0ZXN0X3JlcHIoc2VsZiwgdmFsdWUpOgorICAg
ICAgICBhc3NlcnQgcmVwcihOb2RlKHZhbHVlKSkgPT0gIjxOb2RlKHswIXJ9KT4iLmZvcm1hdChz
dHIodmFsdWUpKQorCisgICAgZGVmIHRlc3RfYmFzZV9jbGFzcyhzZWxmKToKKyAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgTm9kZSgi
Y292ZXIgYWxsIHRoZSBjb2RlIikuc2VyaWFsaXplKCkKKworCitjbGFzcyBUZXN0T3BlcmF0b3JF
dmFsdWF0aW9uOgorICAgIGRlZiB0ZXN0X3ByZWZlcnNfcGVwNDQwKHNlbGYpOgorICAgICAgICBh
c3NlcnQgTWFya2VyKCciMi43LjkiIDwgImZvbyInKS5ldmFsdWF0ZShkaWN0KGZvbz0iMi43LjEw
IikpCisKKyAgICBkZWYgdGVzdF9mYWxsc19iYWNrX3RvX3B5dGhvbihzZWxmKToKKyAgICAgICAg
YXNzZXJ0IE1hcmtlcignImIiID4gImEiJykuZXZhbHVhdGUoZGljdChhPSJhIikpCisKKyAgICBk
ZWYgdGVzdF9mYWlsc193aGVuX3VuZGVmaW5lZChzZWxmKToKKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKFVuZGVmaW5lZENvbXBhcmlzb24pOgorICAgICAgICAgICAgTWFya2VyKCInMi43LjAn
IH49IG9zX25hbWUiKS5ldmFsdWF0ZSgpCisKKworRmFrZVZlcnNpb25JbmZvID0gY29sbGVjdGlv
bnMubmFtZWR0dXBsZSgKKyAgICAiRmFrZVZlcnNpb25JbmZvIiwgWyJtYWpvciIsICJtaW5vciIs
ICJtaWNybyIsICJyZWxlYXNlbGV2ZWwiLCAic2VyaWFsIl0KKykKKworCitjbGFzcyBUZXN0RGVm
YXVsdEVudmlyb25tZW50OgorICAgIEBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIGhhc2F0
dHIoc3lzLCAiaW1wbGVtZW50YXRpb24iKSwgcmVhc29uPSJzeXMuaW1wbGVtZW50YXRpb24gZG9l
cyBleGlzdCIKKyAgICApCisgICAgZGVmIHRlc3RfbWF0Y2hlc19leHBlY3RlZF9ub19zeXNfaW1w
bGVtZW50YXRpb24oc2VsZik6CisgICAgICAgIGVudmlyb25tZW50ID0gZGVmYXVsdF9lbnZpcm9u
bWVudCgpCisKKyAgICAgICAgYXNzZXJ0IGVudmlyb25tZW50ID09IHsKKyAgICAgICAgICAgICJp
bXBsZW1lbnRhdGlvbl9uYW1lIjogIiIsCisgICAgICAgICAgICAiaW1wbGVtZW50YXRpb25fdmVy
c2lvbiI6ICIwIiwKKyAgICAgICAgICAgICJvc19uYW1lIjogb3MubmFtZSwKKyAgICAgICAgICAg
ICJwbGF0Zm9ybV9tYWNoaW5lIjogcGxhdGZvcm0ubWFjaGluZSgpLAorICAgICAgICAgICAgInBs
YXRmb3JtX3JlbGVhc2UiOiBwbGF0Zm9ybS5yZWxlYXNlKCksCisgICAgICAgICAgICAicGxhdGZv
cm1fc3lzdGVtIjogcGxhdGZvcm0uc3lzdGVtKCksCisgICAgICAgICAgICAicGxhdGZvcm1fdmVy
c2lvbiI6IHBsYXRmb3JtLnZlcnNpb24oKSwKKyAgICAgICAgICAgICJweXRob25fZnVsbF92ZXJz
aW9uIjogcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV9w
eXRob25faW1wbGVtZW50YXRpb24iOiBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwK
KyAgICAgICAgICAgICJweXRob25fdmVyc2lvbiI6ICIuIi5qb2luKHBsYXRmb3JtLnB5dGhvbl92
ZXJzaW9uX3R1cGxlKClbOjJdKSwKKyAgICAgICAgICAgICJzeXNfcGxhdGZvcm0iOiBzeXMucGxh
dGZvcm0sCisgICAgICAgIH0KKworICAgIEBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIG5v
dCBoYXNhdHRyKHN5cywgImltcGxlbWVudGF0aW9uIiksIHJlYXNvbj0ic3lzLmltcGxlbWVudGF0
aW9uIGRvZXMgbm90IGV4aXN0IgorICAgICkKKyAgICBkZWYgdGVzdF9tYXRjaGVzX2V4cGVjdGVk
X2RlbGV0ZWRfc3lzX2ltcGxlbWVudGF0aW9uKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAg
bW9ua2V5cGF0Y2guZGVsYXR0cihzeXMsICJpbXBsZW1lbnRhdGlvbiIpCisKKyAgICAgICAgZW52
aXJvbm1lbnQgPSBkZWZhdWx0X2Vudmlyb25tZW50KCkKKworICAgICAgICBhc3NlcnQgZW52aXJv
bm1lbnQgPT0geworICAgICAgICAgICAgImltcGxlbWVudGF0aW9uX25hbWUiOiAiIiwKKyAgICAg
ICAgICAgICJpbXBsZW1lbnRhdGlvbl92ZXJzaW9uIjogIjAiLAorICAgICAgICAgICAgIm9zX25h
bWUiOiBvcy5uYW1lLAorICAgICAgICAgICAgInBsYXRmb3JtX21hY2hpbmUiOiBwbGF0Zm9ybS5t
YWNoaW5lKCksCisgICAgICAgICAgICAicGxhdGZvcm1fcmVsZWFzZSI6IHBsYXRmb3JtLnJlbGVh
c2UoKSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV9zeXN0ZW0iOiBwbGF0Zm9ybS5zeXN0ZW0oKSwK
KyAgICAgICAgICAgICJwbGF0Zm9ybV92ZXJzaW9uIjogcGxhdGZvcm0udmVyc2lvbigpLAorICAg
ICAgICAgICAgInB5dGhvbl9mdWxsX3ZlcnNpb24iOiBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigp
LAorICAgICAgICAgICAgInBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6IHBsYXRmb3Jt
LnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLAorICAgICAgICAgICAgInB5dGhvbl92ZXJzaW9uIjog
Ii4iLmpvaW4ocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb25fdHVwbGUoKVs6Ml0pLAorICAgICAgICAg
ICAgInN5c19wbGF0Zm9ybSI6IHN5cy5wbGF0Zm9ybSwKKyAgICAgICAgfQorCisgICAgQHB5dGVz
dC5tYXJrLnNraXBpZigKKyAgICAgICAgbm90IGhhc2F0dHIoc3lzLCAiaW1wbGVtZW50YXRpb24i
KSwgcmVhc29uPSJzeXMuaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZXhpc3QiCisgICAgKQorICAg
IGRlZiB0ZXN0X21hdGNoZXNfZXhwZWN0ZWQoc2VsZik6CisgICAgICAgIGVudmlyb25tZW50ID0g
ZGVmYXVsdF9lbnZpcm9ubWVudCgpCisKKyAgICAgICAgaXZlciA9ICJ7MC5tYWpvcn0uezAubWlu
b3J9LnswLm1pY3JvfSIuZm9ybWF0KHN5cy5pbXBsZW1lbnRhdGlvbi52ZXJzaW9uKQorICAgICAg
ICBpZiBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbi5yZWxlYXNlbGV2ZWwgIT0gImZpbmFsIjoK
KyAgICAgICAgICAgIGl2ZXIgPSAiezB9ezFbMF19ezJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAg
ICAgaXZlciwKKyAgICAgICAgICAgICAgICBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbi5yZWxl
YXNlbGV2ZWwsCisgICAgICAgICAgICAgICAgc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb24uc2Vy
aWFsLAorICAgICAgICAgICAgKQorCisgICAgICAgIGFzc2VydCBlbnZpcm9ubWVudCA9PSB7Cisg
ICAgICAgICAgICAiaW1wbGVtZW50YXRpb25fbmFtZSI6IHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1l
LAorICAgICAgICAgICAgImltcGxlbWVudGF0aW9uX3ZlcnNpb24iOiBpdmVyLAorICAgICAgICAg
ICAgIm9zX25hbWUiOiBvcy5uYW1lLAorICAgICAgICAgICAgInBsYXRmb3JtX21hY2hpbmUiOiBw
bGF0Zm9ybS5tYWNoaW5lKCksCisgICAgICAgICAgICAicGxhdGZvcm1fcmVsZWFzZSI6IHBsYXRm
b3JtLnJlbGVhc2UoKSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV9zeXN0ZW0iOiBwbGF0Zm9ybS5z
eXN0ZW0oKSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV92ZXJzaW9uIjogcGxhdGZvcm0udmVyc2lv
bigpLAorICAgICAgICAgICAgInB5dGhvbl9mdWxsX3ZlcnNpb24iOiBwbGF0Zm9ybS5weXRob25f
dmVyc2lvbigpLAorICAgICAgICAgICAgInBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6
IHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLAorICAgICAgICAgICAgInB5dGhvbl92
ZXJzaW9uIjogIi4iLmpvaW4ocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb25fdHVwbGUoKVs6Ml0pLAor
ICAgICAgICAgICAgInN5c19wbGF0Zm9ybSI6IHN5cy5wbGF0Zm9ybSwKKyAgICAgICAgfQorCisg
ICAgQHB5dGVzdC5tYXJrLnNraXBpZigKKyAgICAgICAgaGFzYXR0cihzeXMsICJpbXBsZW1lbnRh
dGlvbiIpLCByZWFzb249InN5cy5pbXBsZW1lbnRhdGlvbiBkb2VzIGV4aXN0IgorICAgICkKKyAg
ICBkZWYgdGVzdF9tb25rZXlwYXRjaF9zeXNfaW1wbGVtZW50YXRpb24oc2VsZiwgbW9ua2V5cGF0
Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgc3lzLAorICAg
ICAgICAgICAgImltcGxlbWVudGF0aW9uIiwKKyAgICAgICAgICAgIHByZXRlbmQuc3R1Yih2ZXJz
aW9uPUZha2VWZXJzaW9uSW5mbygzLCA0LCAyLCAiZmluYWwiLCAwKSwgbmFtZT0ibGludXgiKSwK
KyAgICAgICAgICAgIHJhaXNpbmc9RmFsc2UsCisgICAgICAgICkKKworICAgICAgICBlbnZpcm9u
bWVudCA9IGRlZmF1bHRfZW52aXJvbm1lbnQoKQorICAgICAgICBhc3NlcnQgZW52aXJvbm1lbnQg
PT0geworICAgICAgICAgICAgImltcGxlbWVudGF0aW9uX25hbWUiOiAibGludXgiLAorICAgICAg
ICAgICAgImltcGxlbWVudGF0aW9uX3ZlcnNpb24iOiAiMy40LjIiLAorICAgICAgICAgICAgIm9z
X25hbWUiOiBvcy5uYW1lLAorICAgICAgICAgICAgInBsYXRmb3JtX21hY2hpbmUiOiBwbGF0Zm9y
bS5tYWNoaW5lKCksCisgICAgICAgICAgICAicGxhdGZvcm1fcmVsZWFzZSI6IHBsYXRmb3JtLnJl
bGVhc2UoKSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV9zeXN0ZW0iOiBwbGF0Zm9ybS5zeXN0ZW0o
KSwKKyAgICAgICAgICAgICJwbGF0Zm9ybV92ZXJzaW9uIjogcGxhdGZvcm0udmVyc2lvbigpLAor
ICAgICAgICAgICAgInB5dGhvbl9mdWxsX3ZlcnNpb24iOiBwbGF0Zm9ybS5weXRob25fdmVyc2lv
bigpLAorICAgICAgICAgICAgInBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6IHBsYXRm
b3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLAorICAgICAgICAgICAgInB5dGhvbl92ZXJzaW9u
IjogIi4iLmpvaW4ocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb25fdHVwbGUoKVs6Ml0pLAorICAgICAg
ICAgICAgInN5c19wbGF0Zm9ybSI6IHN5cy5wbGF0Zm9ybSwKKyAgICAgICAgfQorCisgICAgZGVm
IHRlc3RfbXVsdGlkaWdpdF9taW5vcl92ZXJzaW9uKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAg
ICAgdmVyc2lvbl9pbmZvID0gKDMsIDEwLCAwLCAiZmluYWwiLCAwKQorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKHN5cywgInZlcnNpb25faW5mbyIsIHZlcnNpb25faW5mbywgcmFpc2luZz1G
YWxzZSkKKworICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBsYXRmb3JtLCAicHl0aG9uX3Zl
cnNpb24iLCBsYW1iZGE6ICIzLjEwLjAiLCByYWlzaW5nPUZhbHNlKQorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgcGxhdGZvcm0sICJweXRob25fdmVyc2lvbl90dXBs
ZSIsIGxhbWJkYTogKCIzIiwgIjEwIiwgIjAiKSwgcmFpc2luZz1GYWxzZQorICAgICAgICApCisK
KyAgICAgICAgZW52aXJvbm1lbnQgPSBkZWZhdWx0X2Vudmlyb25tZW50KCkKKyAgICAgICAgYXNz
ZXJ0IGVudmlyb25tZW50WyJweXRob25fdmVyc2lvbiJdID09ICIzLjEwIgorCisgICAgZGVmIHRl
c3RzX3doZW5fcmVsZWFzZWxldmVsX2ZpbmFsKHNlbGYpOgorICAgICAgICB2ID0gRmFrZVZlcnNp
b25JbmZvKDMsIDQsIDIsICJmaW5hbCIsIDApCisgICAgICAgIGFzc2VydCBmb3JtYXRfZnVsbF92
ZXJzaW9uKHYpID09ICIzLjQuMiIKKworICAgIGRlZiB0ZXN0c193aGVuX3JlbGVhc2VsZXZlbF9u
b3RfZmluYWwoc2VsZik6CisgICAgICAgIHYgPSBGYWtlVmVyc2lvbkluZm8oMywgNCwgMiwgImJl
dGEiLCA0KQorICAgICAgICBhc3NlcnQgZm9ybWF0X2Z1bGxfdmVyc2lvbih2KSA9PSAiMy40LjJi
NCIKKworCitjbGFzcyBUZXN0TWFya2VyOgorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAgICAgIm1hcmtlcl9zdHJpbmciLAorICAgICAgICBbCisgICAgICAgICAgICAiezB9IHsx
fSB7MiFyfSIuZm9ybWF0KCppKQorICAgICAgICAgICAgZm9yIGkgaW4gaXRlcnRvb2xzLnByb2R1
Y3QoVkFSSUFCTEVTLCBPUEVSQVRPUlMsIFZBTFVFUykKKyAgICAgICAgXQorICAgICAgICArIFsK
KyAgICAgICAgICAgICJ7MiFyfSB7MX0gezB9Ii5mb3JtYXQoKmkpCisgICAgICAgICAgICBmb3Ig
aSBpbiBpdGVydG9vbHMucHJvZHVjdChWQVJJQUJMRVMsIE9QRVJBVE9SUywgVkFMVUVTKQorICAg
ICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9wYXJzZXNfdmFsaWQoc2VsZiwgbWFya2VyX3N0
cmluZyk6CisgICAgICAgIE1hcmtlcihtYXJrZXJfc3RyaW5nKQorCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKAorICAgICAgICAibWFya2VyX3N0cmluZyIsCisgICAgICAgIFsKKyAgICAg
ICAgICAgICJ0aGlzX2lzbnRfYV9yZWFsX3ZhcmlhYmxlID49ICcxLjAnIiwKKyAgICAgICAgICAg
ICJweXRob25fdmVyc2lvbiIsCisgICAgICAgICAgICAiKHB5dGhvbl92ZXJzaW9uKSIsCisgICAg
ICAgICAgICAicHl0aG9uX3ZlcnNpb24gPj0gMS4wIGFuZCAocHl0aG9uX3ZlcnNpb24pIiwKKyAg
ICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfcGFyc2VzX2ludmFsaWQoc2VsZiwgbWFya2Vy
X3N0cmluZyk6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbnZhbGlkTWFya2VyKToKKyAg
ICAgICAgICAgIE1hcmtlcihtYXJrZXJfc3RyaW5nKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKAorICAgICAgICAoIm1hcmtlcl9zdHJpbmciLCAiZXhwZWN0ZWQiKSwKKyAgICAgICAg
WworICAgICAgICAgICAgIyBUZXN0IHRoZSBkaWZmZXJlbnQgcXVvdGluZyBydWxlcworICAgICAg
ICAgICAgKCJweXRob25fdmVyc2lvbiA9PSAnMi43JyIsICdweXRob25fdmVyc2lvbiA9PSAiMi43
IicpLAorICAgICAgICAgICAgKCdweXRob25fdmVyc2lvbiA9PSAiMi43IicsICdweXRob25fdmVy
c2lvbiA9PSAiMi43IicpLAorICAgICAgICAgICAgIyBUZXN0IGFuZC9vciBleHByZXNzaW9ucwor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICdweXRob25fdmVyc2lvbiA9PSAiMi43IiBh
bmQgb3NfbmFtZSA9PSAibGludXgiJywKKyAgICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24g
PT0gIjIuNyIgYW5kIG9zX25hbWUgPT0gImxpbnV4IicsCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgKAorICAgICAgICAgICAgICAgICdweXRob25fdmVyc2lvbiA9PSAiMi43IiBvciBvc19u
YW1lID09ICJsaW51eCInLAorICAgICAgICAgICAgICAgICdweXRob25fdmVyc2lvbiA9PSAiMi43
IiBvciBvc19uYW1lID09ICJsaW51eCInLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgYW5kIG9zX25hbWUgPT0g
ImxpbnV4IiBvciAnCisgICAgICAgICAgICAgICAgJ3N5c19wbGF0Zm9ybSA9PSAid2luMzIiJywK
KyAgICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgYW5kIG9zX25hbWUgPT0g
ImxpbnV4IiBvciAnCisgICAgICAgICAgICAgICAgJ3N5c19wbGF0Zm9ybSA9PSAid2luMzIiJywK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAjIFRlc3QgbmVzdGVkIGV4cHJlc3Npb25zIGFu
ZCBncm91cGluZyB3aXRoICgpCisgICAgICAgICAgICAoJyhweXRob25fdmVyc2lvbiA9PSAiMi43
IiknLCAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyInKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICAnKHB5dGhvbl92ZXJzaW9uID09ICIyLjciIGFuZCBzeXNfcGxhdGZvcm0gPT0gIndp
bjMyIiknLAorICAgICAgICAgICAgICAgICdweXRob25fdmVyc2lvbiA9PSAiMi43IiBhbmQgc3lz
X3BsYXRmb3JtID09ICJ3aW4zMiInLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAg
ICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIgYW5kIChzeXNfcGxhdGZvcm0g
PT0gIndpbjMyIiBvciAnCisgICAgICAgICAgICAgICAgJ3N5c19wbGF0Zm9ybSA9PSAibGludXgi
KScsCisgICAgICAgICAgICAgICAgJ3B5dGhvbl92ZXJzaW9uID09ICIyLjciIGFuZCAoc3lzX3Bs
YXRmb3JtID09ICJ3aW4zMiIgb3IgJworICAgICAgICAgICAgICAgICdzeXNfcGxhdGZvcm0gPT0g
ImxpbnV4IiknLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRl
c3Rfc3RyX2FuZF9yZXByKHNlbGYsIG1hcmtlcl9zdHJpbmcsIGV4cGVjdGVkKToKKyAgICAgICAg
bSA9IE1hcmtlcihtYXJrZXJfc3RyaW5nKQorICAgICAgICBhc3NlcnQgc3RyKG0pID09IGV4cGVj
dGVkCisgICAgICAgIGFzc2VydCByZXByKG0pID09ICI8TWFya2VyKHswIXJ9KT4iLmZvcm1hdChz
dHIobSkpCisKKyAgICBkZWYgdGVzdF9leHRyYV93aXRoX25vX2V4dHJhX2luX2Vudmlyb25tZW50
KHNlbGYpOgorICAgICAgICAjIFdlIGNhbid0IGV2YWx1YXRlIGFuIGV4dHJhIGlmIG5vIGV4dHJh
IGlzIHBhc3NlZCBpbnRvIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBtID0gTWFya2VyKCJleHRy
YSA9PSAnc2VjdXJpdHknIikKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFVuZGVmaW5lZEVu
dmlyb25tZW50TmFtZSk6CisgICAgICAgICAgICBtLmV2YWx1YXRlKCkKKworICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJtYXJrZXJfc3RyaW5nIiwgImVudmlyb25tZW50
IiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAgICAgICAgICAgICgib3NfbmFtZSA9PSAnezB9
JyIuZm9ybWF0KG9zLm5hbWUpLCBOb25lLCBUcnVlKSwKKyAgICAgICAgICAgICgib3NfbmFtZSA9
PSAnZm9vJyIsIHsib3NfbmFtZSI6ICJmb28ifSwgVHJ1ZSksCisgICAgICAgICAgICAoIm9zX25h
bWUgPT0gJ2ZvbyciLCB7Im9zX25hbWUiOiAiYmFyIn0sIEZhbHNlKSwKKyAgICAgICAgICAgICgi
JzIuNycgaW4gcHl0aG9uX3ZlcnNpb24iLCB7InB5dGhvbl92ZXJzaW9uIjogIjIuNy41In0sIFRy
dWUpLAorICAgICAgICAgICAgKCInMi43JyBub3QgaW4gcHl0aG9uX3ZlcnNpb24iLCB7InB5dGhv
bl92ZXJzaW9uIjogIjIuNyJ9LCBGYWxzZSksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgIm9zX25hbWUgPT0gJ2ZvbycgYW5kIHB5dGhvbl92ZXJzaW9uIH49ICcyLjcuMCciLAorICAg
ICAgICAgICAgICAgIHsib3NfbmFtZSI6ICJmb28iLCAicHl0aG9uX3ZlcnNpb24iOiAiMi43LjYi
fSwKKyAgICAgICAgICAgICAgICBUcnVlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAicHl0aG9uX3ZlcnNpb24gfj0gJzIuNy4wJyBhbmQgKG9zX25hbWUg
PT0gJ2Zvbycgb3IgIgorICAgICAgICAgICAgICAgICJvc19uYW1lID09ICdiYXInKSIsCisgICAg
ICAgICAgICAgICAgeyJvc19uYW1lIjogImZvbyIsICJweXRob25fdmVyc2lvbiI6ICIyLjcuNCJ9
LAorICAgICAgICAgICAgICAgIFRydWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgICJweXRob25fdmVyc2lvbiB+PSAnMi43LjAnIGFuZCAob3NfbmFtZSA9
PSAnZm9vJyBvciAiCisgICAgICAgICAgICAgICAgIm9zX25hbWUgPT0gJ2JhcicpIiwKKyAgICAg
ICAgICAgICAgICB7Im9zX25hbWUiOiAiYmFyIiwgInB5dGhvbl92ZXJzaW9uIjogIjIuNy40In0s
CisgICAgICAgICAgICAgICAgVHJ1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisg
ICAgICAgICAgICAgICAgInB5dGhvbl92ZXJzaW9uIH49ICcyLjcuMCcgYW5kIChvc19uYW1lID09
ICdmb28nIG9yICIKKyAgICAgICAgICAgICAgICAib3NfbmFtZSA9PSAnYmFyJykiLAorICAgICAg
ICAgICAgICAgIHsib3NfbmFtZSI6ICJvdGhlciIsICJweXRob25fdmVyc2lvbiI6ICIyLjcuNCJ9
LAorICAgICAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgi
ZXh0cmEgPT0gJ3NlY3VyaXR5JyIsIHsiZXh0cmEiOiAicXV1eCJ9LCBGYWxzZSksCisgICAgICAg
ICAgICAoImV4dHJhID09ICdzZWN1cml0eSciLCB7ImV4dHJhIjogInNlY3VyaXR5In0sIFRydWUp
LAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9ldmFsdWF0ZXMoc2VsZiwgbWFya2Vy
X3N0cmluZywgZW52aXJvbm1lbnQsIGV4cGVjdGVkKToKKyAgICAgICAgYXJncyA9IFtdIGlmIGVu
dmlyb25tZW50IGlzIE5vbmUgZWxzZSBbZW52aXJvbm1lbnRdCisgICAgICAgIGFzc2VydCBNYXJr
ZXIobWFya2VyX3N0cmluZykuZXZhbHVhdGUoKmFyZ3MpID09IGV4cGVjdGVkCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJtYXJrZXJfc3RyaW5nIiwKKyAgICAgICAg
WworICAgICAgICAgICAgInswfSB7MX0gezIhcn0iLmZvcm1hdCgqaSkKKyAgICAgICAgICAgIGZv
ciBpIGluIGl0ZXJ0b29scy5wcm9kdWN0KFBFUF8zNDVfVkFSSUFCTEVTLCBPUEVSQVRPUlMsIFZB
TFVFUykKKyAgICAgICAgXQorICAgICAgICArIFsKKyAgICAgICAgICAgICJ7MiFyfSB7MX0gezB9
Ii5mb3JtYXQoKmkpCisgICAgICAgICAgICBmb3IgaSBpbiBpdGVydG9vbHMucHJvZHVjdChQRVBf
MzQ1X1ZBUklBQkxFUywgT1BFUkFUT1JTLCBWQUxVRVMpCisgICAgICAgIF0sCisgICAgKQorICAg
IGRlZiB0ZXN0X3BhcnNlc19wZXAzNDVfdmFsaWQoc2VsZiwgbWFya2VyX3N0cmluZyk6CisgICAg
ICAgIE1hcmtlcihtYXJrZXJfc3RyaW5nKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KAorICAgICAgICAoIm1hcmtlcl9zdHJpbmciLCAiZW52aXJvbm1lbnQiLCAiZXhwZWN0ZWQiKSwK
KyAgICAgICAgWworICAgICAgICAgICAgKCJvcy5uYW1lID09ICd7MH0nIi5mb3JtYXQob3MubmFt
ZSksIE5vbmUsIFRydWUpLAorICAgICAgICAgICAgKCJzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyIs
IHsic3lzX3BsYXRmb3JtIjogImxpbnV4MiJ9LCBGYWxzZSksCisgICAgICAgICAgICAoInBsYXRm
b3JtLnZlcnNpb24gaW4gJ1VidW50dSciLCB7InBsYXRmb3JtX3ZlcnNpb24iOiAiIzM5In0sIEZh
bHNlKSwKKyAgICAgICAgICAgICgicGxhdGZvcm0ubWFjaGluZT09J3g4Nl82NCciLCB7InBsYXRm
b3JtX21hY2hpbmUiOiAieDg2XzY0In0sIFRydWUpLAorICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgICJwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb249PSdKeXRob24nIiwKKyAgICAg
ICAgICAgICAgICB7InBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6ICJDUHl0aG9uIn0s
CisgICAgICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgICJweXRob25fdmVyc2lvbiA9PSAnMi41JyBhbmQgcGxhdGZvcm0ucHl0
aG9uX2ltcGxlbWVudGF0aW9uIgorICAgICAgICAgICAgICAgICIhPSAnSnl0aG9uJyIsCisgICAg
ICAgICAgICAgICAgeyJweXRob25fdmVyc2lvbiI6ICIyLjcifSwKKyAgICAgICAgICAgICAgICBG
YWxzZSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2V2
YWx1YXRlX3BlcDM0NV9tYXJrZXJzKHNlbGYsIG1hcmtlcl9zdHJpbmcsIGVudmlyb25tZW50LCBl
eHBlY3RlZCk6CisgICAgICAgIGFyZ3MgPSBbXSBpZiBlbnZpcm9ubWVudCBpcyBOb25lIGVsc2Ug
W2Vudmlyb25tZW50XQorICAgICAgICBhc3NlcnQgTWFya2VyKG1hcmtlcl9zdHJpbmcpLmV2YWx1
YXRlKCphcmdzKSA9PSBleHBlY3RlZAorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAor
ICAgICAgICAibWFya2VyX3N0cmluZyIsCisgICAgICAgIFsKKyAgICAgICAgICAgICJ7MH0gezF9
IHsyIXJ9Ii5mb3JtYXQoKmkpCisgICAgICAgICAgICBmb3IgaSBpbiBpdGVydG9vbHMucHJvZHVj
dChTRVRVUFRPT0xTX1ZBUklBQkxFUywgT1BFUkFUT1JTLCBWQUxVRVMpCisgICAgICAgIF0KKyAg
ICAgICAgKyBbCisgICAgICAgICAgICAiezIhcn0gezF9IHswfSIuZm9ybWF0KCppKQorICAgICAg
ICAgICAgZm9yIGkgaW4gaXRlcnRvb2xzLnByb2R1Y3QoU0VUVVBUT09MU19WQVJJQUJMRVMsIE9Q
RVJBVE9SUywgVkFMVUVTKQorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9wYXJzZXNf
c2V0dXB0b29sc19sZWdhY3lfdmFsaWQoc2VsZiwgbWFya2VyX3N0cmluZyk6CisgICAgICAgIE1h
cmtlcihtYXJrZXJfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfZXZhbHVhdGVfc2V0dXB0b29sc19s
ZWdhY3lfbWFya2VycyhzZWxmKToKKyAgICAgICAgbWFya2VyX3N0cmluZyA9ICJweXRob25faW1w
bGVtZW50YXRpb249PSdKeXRob24nIgorICAgICAgICBhcmdzID0gW3sicGxhdGZvcm1fcHl0aG9u
X2ltcGxlbWVudGF0aW9uIjogIkNQeXRob24ifV0KKyAgICAgICAgYXNzZXJ0IE1hcmtlcihtYXJr
ZXJfc3RyaW5nKS5ldmFsdWF0ZSgqYXJncykgaXMgRmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL3Rlc3RzL3Rlc3RfcmVxdWlyZW1lbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMv
dGVzdF9yZXF1aXJlbWVudHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi41MGUzOGQ2YWRjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy90ZXN0X3JlcXVpcmVtZW50cy5weQpAQCAtMCwwICsxLDE5NyBAQAorIyBUaGlzIGZpbGUgaXMg
ZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgorZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5j
dGlvbgorCitpbXBvcnQgcHl0ZXN0CisKK2Zyb20gcGFja2FnaW5nLm1hcmtlcnMgaW1wb3J0IE1h
cmtlcgorZnJvbSBwYWNrYWdpbmcucmVxdWlyZW1lbnRzIGltcG9ydCBJbnZhbGlkUmVxdWlyZW1l
bnQsIFJlcXVpcmVtZW50LCBVUkwKK2Zyb20gcGFja2FnaW5nLnJlcXVpcmVtZW50cyBpbXBvcnQg
VVJMX0FORF9NQVJLRVIKK2Zyb20gcGFja2FnaW5nLnNwZWNpZmllcnMgaW1wb3J0IFNwZWNpZmll
clNldAorCisKK2NsYXNzIFRlc3RSZXF1aXJlbWVudHM6CisgICAgZGVmIHRlc3Rfc3RyaW5nX3Nw
ZWNpZmllcl9tYXJrZXIoc2VsZik6CisgICAgICAgIHJlcXVpcmVtZW50ID0gJ25hbWVbYmFyXT49
MzsgcHl0aG9uX3ZlcnNpb24gPT0gIjIuNyInCisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KHJl
cXVpcmVtZW50KQorICAgICAgICBhc3NlcnQgc3RyKHJlcSkgPT0gcmVxdWlyZW1lbnQKKworICAg
IGRlZiB0ZXN0X3N0cmluZ191cmwoc2VsZik6CisgICAgICAgIHJlcXVpcmVtZW50ID0gIm5hbWVA
IGh0dHA6Ly9mb28uY29tIgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudChyZXF1aXJlbWVudCkK
KyAgICAgICAgYXNzZXJ0IHN0cihyZXEpID09IHJlcXVpcmVtZW50CisKKyAgICBkZWYgdGVzdF9z
dHJpbmdfdXJsX3dpdGhfbWFya2VyKHNlbGYpOgorICAgICAgICByZXF1aXJlbWVudCA9ICduYW1l
QCBodHRwOi8vZm9vLmNvbSA7IGV4dHJhID09ICJmZWF0dXJlIicKKyAgICAgICAgcmVxID0gUmVx
dWlyZW1lbnQocmVxdWlyZW1lbnQpCisgICAgICAgIGFzc2VydCBzdHIocmVxKSA9PSByZXF1aXJl
bWVudAorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1l
bnQoIm5hbWUiKQorICAgICAgICBhc3NlcnQgcmVwcihyZXEpID09ICI8UmVxdWlyZW1lbnQoJ25h
bWUnKT4iCisKKyAgICBkZWYgX2Fzc2VydF9yZXF1aXJlbWVudCgKKyAgICAgICAgc2VsZiwgcmVx
LCBuYW1lLCB1cmw9Tm9uZSwgZXh0cmFzPVtdLCBzcGVjaWZpZXI9IiIsIG1hcmtlcj1Ob25lCisg
ICAgKToKKyAgICAgICAgYXNzZXJ0IHJlcS5uYW1lID09IG5hbWUKKyAgICAgICAgYXNzZXJ0IHJl
cS51cmwgPT0gdXJsCisgICAgICAgIGFzc2VydCBzb3J0ZWQocmVxLmV4dHJhcykgPT0gc29ydGVk
KGV4dHJhcykKKyAgICAgICAgYXNzZXJ0IHN0cihyZXEuc3BlY2lmaWVyKSA9PSBzcGVjaWZpZXIK
KyAgICAgICAgaWYgbWFya2VyOgorICAgICAgICAgICAgYXNzZXJ0IHN0cihyZXEubWFya2VyKSA9
PSBtYXJrZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCByZXEubWFya2VyIGlz
IE5vbmUKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9uYW1lcyhzZWxmKToKKyAgICAgICAgZm9yIG5h
bWUgaW4gKCJBIiwgImFhIiwgIm5hbWUiKToKKyAgICAgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50
KG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCBuYW1lKQor
CisgICAgZGVmIHRlc3RfbmFtZV93aXRoX290aGVyX2NoYXJhY3RlcnMoc2VsZik6CisgICAgICAg
IG5hbWUgPSAiZm9vLWJhci5xdXV4X2JheiIKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQobmFt
ZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgbmFtZSkKKworICAgIGRl
ZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKElu
dmFsaWRSZXF1aXJlbWVudCk6CisgICAgICAgICAgICBSZXF1aXJlbWVudCgiZm9vISIpCisKKyAg
ICBkZWYgdGVzdF9uYW1lX3dpdGhfdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWly
ZW1lbnQoIm5hbWU+PTMiKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAi
bmFtZSIsIHNwZWNpZmllcj0iPj0zIikKKworICAgIGRlZiB0ZXN0X3dpdGhfbGVnYWN5X3ZlcnNp
b24oc2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJuYW1lPT0xLjAub3JnMSIpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9yZXF1aXJlbWVudChyZXEsICJuYW1lIiwgc3BlY2lmaWVyPSI9
PTEuMC5vcmcxIikKKworICAgIGRlZiB0ZXN0X3dpdGhfbGVnYWN5X3ZlcnNpb25fYW5kX21hcmtl
cihzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoIm5hbWU+PTEueC55O3B5dGhvbl92
ZXJzaW9uPT0nMi42JyIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9yZXF1aXJlbWVudCgKKyAgICAg
ICAgICAgIHJlcSwgIm5hbWUiLCBzcGVjaWZpZXI9Ij49MS54LnkiLCBtYXJrZXI9J3B5dGhvbl92
ZXJzaW9uID09ICIyLjYiJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF92ZXJzaW9uX3dpdGhf
cGFyZW5zX2FuZF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgi
bmFtZSAoPT00KSIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9yZXF1aXJlbWVudChyZXEsICJuYW1l
Iiwgc3BlY2lmaWVyPSI9PTQiKQorCisgICAgZGVmIHRlc3RfbmFtZV93aXRoX211bHRpcGxlX3Zl
cnNpb25zKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgibmFtZT49Myw8MiIpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9yZXF1aXJlbWVudChyZXEsICJuYW1lIiwgc3BlY2lmaWVyPSI8
Miw+PTMiKQorCisgICAgZGVmIHRlc3RfbmFtZV93aXRoX211bHRpcGxlX3ZlcnNpb25zX2FuZF93
aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgibmFtZSA+PTIsIDwz
IikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJlcSwgIm5hbWUiLCBzcGVjaWZp
ZXI9IjwzLD49MiIpCisKKyAgICBkZWYgdGVzdF9leHRyYXMoc2VsZik6CisgICAgICAgIHJlcSA9
IFJlcXVpcmVtZW50KCJmb29iYXIgW3F1dXgsYmFyXSIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9y
ZXF1aXJlbWVudChyZXEsICJmb29iYXIiLCBleHRyYXM9WyJiYXIiLCAicXV1eCJdKQorCisgICAg
ZGVmIHRlc3RfZW1wdHlfZXh0cmFzKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgi
Zm9vW10iKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAiZm9vIikKKwor
ICAgIGRlZiB0ZXN0X3VybChzZWxmKToKKyAgICAgICAgdXJsX3NlY3Rpb24gPSAiQCBodHRwOi8v
ZXhhbXBsZS5jb20iCisgICAgICAgIHBhcnNlZCA9IFVSTC5wYXJzZVN0cmluZyh1cmxfc2VjdGlv
bikKKyAgICAgICAgYXNzZXJ0IHBhcnNlZC51cmwgPT0gImh0dHA6Ly9leGFtcGxlLmNvbSIKKwor
ICAgIGRlZiB0ZXN0X3VybF9hbmRfbWFya2VyKHNlbGYpOgorICAgICAgICBpbnN0cmluZyA9ICJA
IGh0dHA6Ly9leGFtcGxlLmNvbSA7IG9zX25hbWU9PSdhJyIKKyAgICAgICAgcGFyc2VkID0gVVJM
X0FORF9NQVJLRVIucGFyc2VTdHJpbmcoaW5zdHJpbmcpCisgICAgICAgIGFzc2VydCBwYXJzZWQu
dXJsID09ICJodHRwOi8vZXhhbXBsZS5jb20iCisgICAgICAgIGFzc2VydCBzdHIocGFyc2VkLm1h
cmtlcikgPT0gJ29zX25hbWUgPT0gImEiJworCisgICAgZGVmIHRlc3RfaW52YWxpZF91cmwoc2Vs
Zik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbnZhbGlkUmVxdWlyZW1lbnQpIGFzIGU6
CisgICAgICAgICAgICBSZXF1aXJlbWVudCgibmFtZSBAIGdvcGhlcjovZm9vL2NvbSIpCisgICAg
ICAgIGFzc2VydCAiSW52YWxpZCBVUkw6ICIgaW4gc3RyKGUudmFsdWUpCisgICAgICAgIGFzc2Vy
dCAiZ29waGVyOi9mb28vY29tIiBpbiBzdHIoZS52YWx1ZSkKKworICAgIGRlZiB0ZXN0X2ZpbGVf
dXJsKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgibmFtZSBAIGZpbGU6Ly8vYWJz
b2x1dGUvcGF0aCIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9yZXF1aXJlbWVudChyZXEsICJuYW1l
IiwgImZpbGU6Ly8vYWJzb2x1dGUvcGF0aCIpCisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJu
YW1lIEAgZmlsZTovLy4iKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAi
bmFtZSIsICJmaWxlOi8vLiIpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZpbGVfdXJscyhzZWxm
KToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEludmFsaWRSZXF1aXJlbWVudCk6CisgICAg
ICAgICAgICBSZXF1aXJlbWVudCgibmFtZSBAIGZpbGU6LiIpCisgICAgICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhJbnZhbGlkUmVxdWlyZW1lbnQpOgorICAgICAgICAgICAgUmVxdWlyZW1lbnQoIm5h
bWUgQCBmaWxlOi8uIikKKworICAgIGRlZiB0ZXN0X2V4dHJhc19hbmRfdXJsX2FuZF9tYXJrZXIo
c2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJuYW1lIFtmcmVkLGJhcl0gQCBodHRw
Oi8vZm9vLmNvbSA7IHB5dGhvbl92ZXJzaW9uPT0nMi43JyIpCisgICAgICAgIHNlbGYuX2Fzc2Vy
dF9yZXF1aXJlbWVudCgKKyAgICAgICAgICAgIHJlcSwKKyAgICAgICAgICAgICJuYW1lIiwKKyAg
ICAgICAgICAgIGV4dHJhcz1bImJhciIsICJmcmVkIl0sCisgICAgICAgICAgICB1cmw9Imh0dHA6
Ly9mb28uY29tIiwKKyAgICAgICAgICAgIG1hcmtlcj0ncHl0aG9uX3ZlcnNpb24gPT0gIjIuNyIn
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb21wbGV4X3VybF9hbmRfbWFya2VyKHNlbGYp
OgorICAgICAgICB1cmwgPSAiaHR0cHM6Ly9leGFtcGxlLmNvbS9uYW1lO3Y9MS4xLz9xdWVyeT1m
b28mYmFyPWJheiNibGFoIgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgiZm9vIEAgJXMgOyBw
eXRob25fdmVyc2lvbj09JzMuNCciICUgdXJsKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWly
ZW1lbnQocmVxLCAiZm9vIiwgdXJsPXVybCwgbWFya2VyPSdweXRob25fdmVyc2lvbiA9PSAiMy40
IicpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9tYXJrZXJzKHNlbGYpOgorICAgICAgICByZXEg
PSBSZXF1aXJlbWVudCgKKyAgICAgICAgICAgICJuYW1lW3F1dXgsIHN0cmFuZ2VdO3B5dGhvbl92
ZXJzaW9uPCcyLjcnIGFuZCAiICJwbGF0Zm9ybV92ZXJzaW9uPT0nMiciCisgICAgICAgICkKKyAg
ICAgICAgbWFya2VyID0gJ3B5dGhvbl92ZXJzaW9uIDwgIjIuNyIgYW5kIHBsYXRmb3JtX3ZlcnNp
b24gPT0gIjIiJworICAgICAgICBzZWxmLl9hc3NlcnRfcmVxdWlyZW1lbnQocmVxLCAibmFtZSIs
IGV4dHJhcz1bInN0cmFuZ2UiLCAicXV1eCJdLCBtYXJrZXI9bWFya2VyKQorCisgICAgZGVmIHRl
c3RfbXVsdGlwbGVfY29tcGFyc2lvbl9tYXJrZXJzKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1
aXJlbWVudCgibmFtZTsgb3NfbmFtZT09J2EnIGFuZCBvc19uYW1lPT0nYicgb3Igb3NfbmFtZT09
J2MnIikKKyAgICAgICAgbWFya2VyID0gJ29zX25hbWUgPT0gImEiIGFuZCBvc19uYW1lID09ICJi
IiBvciBvc19uYW1lID09ICJjIicKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlcXVpcmVtZW50KHJl
cSwgIm5hbWUiLCBtYXJrZXI9bWFya2VyKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9tYXJrZXIo
c2VsZik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbnZhbGlkUmVxdWlyZW1lbnQpOgor
ICAgICAgICAgICAgUmVxdWlyZW1lbnQoIm5hbWU7IGZvb2Jhcj09J3gnIikKKworICAgIGRlZiB0
ZXN0X3R5cGVzKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJlbWVudCgiZm9vYmFyW3F1dXhd
PDIsPj0zOyBvc19uYW1lPT0nYSciKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXEubmFt
ZSwgc3RyKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXEuZXh0cmFzLCBzZXQpCisgICAg
ICAgIGFzc2VydCByZXEudXJsIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVx
LnNwZWNpZmllciwgU3BlY2lmaWVyU2V0KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXEu
bWFya2VyLCBNYXJrZXIpCisKKyAgICBkZWYgdGVzdF90eXBlc193aXRoX25vdGhpbmcoc2VsZik6
CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KCJmb29iYXIiKQorICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShyZXEubmFtZSwgc3RyKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXEuZXh0
cmFzLCBzZXQpCisgICAgICAgIGFzc2VydCByZXEudXJsIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UocmVxLnNwZWNpZmllciwgU3BlY2lmaWVyU2V0KQorICAgICAgICBhc3NlcnQg
cmVxLm1hcmtlciBpcyBOb25lCisKKyAgICBkZWYgdGVzdF90eXBlc193aXRoX3VybChzZWxmKToK
KyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoImZvb2JhciBAIGh0dHA6Ly9mb28uY29tIikKKyAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxLm5hbWUsIHN0cikKKyAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UocmVxLmV4dHJhcywgc2V0KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXEu
dXJsLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcS5zcGVjaWZpZXIsIFNwZWNp
ZmllclNldCkKKyAgICAgICAgYXNzZXJ0IHJlcS5tYXJrZXIgaXMgTm9uZQorCisgICAgZGVmIHRl
c3Rfc3lzX3BsYXRmb3JtX2xpbnV4X2VxdWFsKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1aXJl
bWVudCgnc29tZXRoaW5nPj0xLjIuMzsgc3lzX3BsYXRmb3JtID09ICJmb28iJykKKworICAgICAg
ICBhc3NlcnQgcmVxLm5hbWUgPT0gInNvbWV0aGluZyIKKyAgICAgICAgYXNzZXJ0IHJlcS5tYXJr
ZXIgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHJlcS5tYXJrZXIuZXZhbHVhdGUoZGljdChz
eXNfcGxhdGZvcm09ImZvbyIpKSBpcyBUcnVlCisgICAgICAgIGFzc2VydCByZXEubWFya2VyLmV2
YWx1YXRlKGRpY3Qoc3lzX3BsYXRmb3JtPSJiYXIiKSkgaXMgRmFsc2UKKworICAgIGRlZiB0ZXN0
X3N5c19wbGF0Zm9ybV9saW51eF9pbihzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQo
ImF2aWF0bz49MS4yLjM7ICdmJyBpbiBzeXNfcGxhdGZvcm0iKQorCisgICAgICAgIGFzc2VydCBy
ZXEubmFtZSA9PSAiYXZpYXRvIgorICAgICAgICBhc3NlcnQgcmVxLm1hcmtlciBpcyBub3QgTm9u
ZQorICAgICAgICBhc3NlcnQgcmVxLm1hcmtlci5ldmFsdWF0ZShkaWN0KHN5c19wbGF0Zm9ybT0i
Zm9vIikpIGlzIFRydWUKKyAgICAgICAgYXNzZXJ0IHJlcS5tYXJrZXIuZXZhbHVhdGUoZGljdChz
eXNfcGxhdGZvcm09ImJhciIpKSBpcyBGYWxzZQorCisgICAgZGVmIHRlc3RfcGFyc2VleGNlcHRp
b25fZXJyb3JfbXNnKHNlbGYpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW52YWxpZFJl
cXVpcmVtZW50KSBhcyBlOgorICAgICAgICAgICAgUmVxdWlyZW1lbnQoInRvdG8gNDIiKQorICAg
ICAgICBhc3NlcnQgIkV4cGVjdGVkIHN0cmluZ0VuZCIgaW4gc3RyKGUudmFsdWUpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3NwZWNpZmllcnMucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy90ZXN0cy90ZXN0X3NwZWNpZmllcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5jOWE0NDQ2NmY3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy90ZXN0cy90ZXN0X3NwZWNpZmllcnMucHkKQEAgLTAsMCArMSw5OTkgQEAKKyMgVGhpcyBm
aWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbgorIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQorIyBmb3IgY29tcGxldGUgZGV0YWls
cy4KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KKworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9wZXJhdG9yCitpbXBvcnQg
d2FybmluZ3MKKworaW1wb3J0IHB5dGVzdAorCitmcm9tIHBhY2thZ2luZy5zcGVjaWZpZXJzIGlt
cG9ydCAoCisgICAgSW52YWxpZFNwZWNpZmllciwKKyAgICBMZWdhY3lTcGVjaWZpZXIsCisgICAg
U3BlY2lmaWVyLAorICAgIFNwZWNpZmllclNldCwKKykKK2Zyb20gcGFja2FnaW5nLnZlcnNpb24g
aW1wb3J0IExlZ2FjeVZlcnNpb24sIFZlcnNpb24sIHBhcnNlCisKK2Zyb20gLnRlc3RfdmVyc2lv
biBpbXBvcnQgVkVSU0lPTlMsIExFR0FDWV9WRVJTSU9OUworCisKK0xFR0FDWV9TUEVDSUZJRVJT
ID0gWworICAgICI9PTIuMS4wLjMiLAorICAgICIhPTIuMi4wLjUiLAorICAgICI8PTUiLAorICAg
ICI+PTcuOWExIiwKKyAgICAiPDEuMC5kZXYxIiwKKyAgICAiPjIuMC5wb3N0MSIsCitdCisKK1NQ
RUNJRklFUlMgPSBbCisgICAgIn49Mi4wIiwKKyAgICAiPT0yLjEuKiIsCisgICAgIj09Mi4xLjAu
MyIsCisgICAgIiE9Mi4yLioiLAorICAgICIhPTIuMi4wLjUiLAorICAgICI8PTUiLAorICAgICI+
PTcuOWExIiwKKyAgICAiPDEuMC5kZXYxIiwKKyAgICAiPjIuMC5wb3N0MSIsCisgICAgIj09PWxv
bHdhdCIsCitdCisKKworY2xhc3MgVGVzdFNwZWNpZmllcjoKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoInNwZWNpZmllciIsIFNQRUNJRklFUlMpCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVy
c192YWxpZChzZWxmLCBzcGVjaWZpZXIpOgorICAgICAgICBTcGVjaWZpZXIoc3BlY2lmaWVyKQor
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAic3BlY2lmaWVyIiwKKyAg
ICAgICAgWworICAgICAgICAgICAgIyBPcGVyYXRvci1sZXNzIHNwZWNpZmllcgorICAgICAgICAg
ICAgIjIuMCIsCisgICAgICAgICAgICAjIEludmFsaWQgb3BlcmF0b3IKKyAgICAgICAgICAgICI9
PjIuMCIsCisgICAgICAgICAgICAjIFZlcnNpb24tbGVzcyBzcGVjaWZpZXIKKyAgICAgICAgICAg
ICI9PSIsCisgICAgICAgICAgICAjIExvY2FsIHNlZ21lbnQgb24gb3BlcmF0b3JzIHdoaWNoIGRv
bid0IHN1cHBvcnQgdGhlbQorICAgICAgICAgICAgIn49MS4wKzUiLAorICAgICAgICAgICAgIj49
MS4wK2RlYWRiZWVmIiwKKyAgICAgICAgICAgICI8PTEuMCthYmMxMjMiLAorICAgICAgICAgICAg
Ij4xLjArd2F0d2F0IiwKKyAgICAgICAgICAgICI8MS4wKzEuMCIsCisgICAgICAgICAgICAjIFBy
ZWZpeCBtYXRjaGluZyBvbiBvcGVyYXRvcnMgd2hpY2ggZG9uJ3Qgc3VwcG9ydCB0aGVtCisgICAg
ICAgICAgICAifj0xLjAuKiIsCisgICAgICAgICAgICAiPj0xLjAuKiIsCisgICAgICAgICAgICAi
PD0xLjAuKiIsCisgICAgICAgICAgICAiPjEuMC4qIiwKKyAgICAgICAgICAgICI8MS4wLioiLAor
ICAgICAgICAgICAgIyBDb21iaW5hdGlvbiBvZiBsb2NhbCBhbmQgcHJlZml4IG1hdGNoaW5nIG9u
IG9wZXJhdG9ycyB3aGljaCBkbworICAgICAgICAgICAgIyBzdXBwb3J0IG9uZSBvciB0aGUgb3Ro
ZXIKKyAgICAgICAgICAgICI9PTEuMC4qKzUiLAorICAgICAgICAgICAgIiE9MS4wLiorZGVhZGJl
ZWYiLAorICAgICAgICAgICAgIyBQcmVmaXggbWF0Y2hpbmcgY2Fubm90IGJlIHVzZWQgaW5zaWRl
IG9mIGEgbG9jYWwgdmVyc2lvbgorICAgICAgICAgICAgIj09MS4wKzUuKiIsCisgICAgICAgICAg
ICAiIT0xLjArZGVhZGJlZWYuKiIsCisgICAgICAgICAgICAjIFByZWZpeCBtYXRjaGluZyBtdXN0
IGFwcGVhciBhdCB0aGUgZW5kCisgICAgICAgICAgICAiPT0xLjAuKi41IiwKKyAgICAgICAgICAg
ICMgQ29tcGF0aWJsZSBvcGVyYXRvciByZXF1aXJlcyAyIGRpZ2l0cyBpbiB0aGUgcmVsZWFzZSBv
cGVyYXRvcgorICAgICAgICAgICAgIn49MSIsCisgICAgICAgICAgICAjIENhbm5vdCB1c2UgYSBw
cmVmaXggbWF0Y2hpbmcgYWZ0ZXIgYSAuZGV2TiB2ZXJzaW9uCisgICAgICAgICAgICAiPT0xLjAu
ZGV2MS4qIiwKKyAgICAgICAgICAgICIhPTEuMC5kZXYxLioiLAorICAgICAgICBdLAorICAgICkK
KyAgICBkZWYgdGVzdF9zcGVjaWZpZXJzX2ludmFsaWQoc2VsZiwgc3BlY2lmaWVyKToKKyAgICAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKEludmFsaWRTcGVjaWZpZXIpOgorICAgICAgICAgICAgU3Bl
Y2lmaWVyKHNwZWNpZmllcikKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAg
ICAgInZlcnNpb24iLAorICAgICAgICBbCisgICAgICAgICAgICAjIFZhcmlvdXMgZGV2ZWxvcG1l
bnQgcmVsZWFzZSBpbmNhcm5hdGlvbnMKKyAgICAgICAgICAgICIxLjBkZXYiLAorICAgICAgICAg
ICAgIjEuMC5kZXYiLAorICAgICAgICAgICAgIjEuMGRldjEiLAorICAgICAgICAgICAgIjEuMGRl
diIsCisgICAgICAgICAgICAiMS4wLWRldiIsCisgICAgICAgICAgICAiMS4wLWRldjEiLAorICAg
ICAgICAgICAgIjEuMERFViIsCisgICAgICAgICAgICAiMS4wLkRFViIsCisgICAgICAgICAgICAi
MS4wREVWMSIsCisgICAgICAgICAgICAiMS4wREVWIiwKKyAgICAgICAgICAgICIxLjAuREVWMSIs
CisgICAgICAgICAgICAiMS4wLURFViIsCisgICAgICAgICAgICAiMS4wLURFVjEiLAorICAgICAg
ICAgICAgIyBWYXJpb3VzIGFscGhhIGluY2FybmF0aW9ucworICAgICAgICAgICAgIjEuMGEiLAor
ICAgICAgICAgICAgIjEuMC5hIiwKKyAgICAgICAgICAgICIxLjAuYTEiLAorICAgICAgICAgICAg
IjEuMC1hIiwKKyAgICAgICAgICAgICIxLjAtYTEiLAorICAgICAgICAgICAgIjEuMGFscGhhIiwK
KyAgICAgICAgICAgICIxLjAuYWxwaGEiLAorICAgICAgICAgICAgIjEuMC5hbHBoYTEiLAorICAg
ICAgICAgICAgIjEuMC1hbHBoYSIsCisgICAgICAgICAgICAiMS4wLWFscGhhMSIsCisgICAgICAg
ICAgICAiMS4wQSIsCisgICAgICAgICAgICAiMS4wLkEiLAorICAgICAgICAgICAgIjEuMC5BMSIs
CisgICAgICAgICAgICAiMS4wLUEiLAorICAgICAgICAgICAgIjEuMC1BMSIsCisgICAgICAgICAg
ICAiMS4wQUxQSEEiLAorICAgICAgICAgICAgIjEuMC5BTFBIQSIsCisgICAgICAgICAgICAiMS4w
LkFMUEhBMSIsCisgICAgICAgICAgICAiMS4wLUFMUEhBIiwKKyAgICAgICAgICAgICIxLjAtQUxQ
SEExIiwKKyAgICAgICAgICAgICMgVmFyaW91cyBiZXRhIGluY2FybmF0aW9ucworICAgICAgICAg
ICAgIjEuMGIiLAorICAgICAgICAgICAgIjEuMC5iIiwKKyAgICAgICAgICAgICIxLjAuYjEiLAor
ICAgICAgICAgICAgIjEuMC1iIiwKKyAgICAgICAgICAgICIxLjAtYjEiLAorICAgICAgICAgICAg
IjEuMGJldGEiLAorICAgICAgICAgICAgIjEuMC5iZXRhIiwKKyAgICAgICAgICAgICIxLjAuYmV0
YTEiLAorICAgICAgICAgICAgIjEuMC1iZXRhIiwKKyAgICAgICAgICAgICIxLjAtYmV0YTEiLAor
ICAgICAgICAgICAgIjEuMEIiLAorICAgICAgICAgICAgIjEuMC5CIiwKKyAgICAgICAgICAgICIx
LjAuQjEiLAorICAgICAgICAgICAgIjEuMC1CIiwKKyAgICAgICAgICAgICIxLjAtQjEiLAorICAg
ICAgICAgICAgIjEuMEJFVEEiLAorICAgICAgICAgICAgIjEuMC5CRVRBIiwKKyAgICAgICAgICAg
ICIxLjAuQkVUQTEiLAorICAgICAgICAgICAgIjEuMC1CRVRBIiwKKyAgICAgICAgICAgICIxLjAt
QkVUQTEiLAorICAgICAgICAgICAgIyBWYXJpb3VzIHJlbGVhc2UgY2FuZGlkYXRlIGluY2FybmF0
aW9ucworICAgICAgICAgICAgIjEuMGMiLAorICAgICAgICAgICAgIjEuMC5jIiwKKyAgICAgICAg
ICAgICIxLjAuYzEiLAorICAgICAgICAgICAgIjEuMC1jIiwKKyAgICAgICAgICAgICIxLjAtYzEi
LAorICAgICAgICAgICAgIjEuMHJjIiwKKyAgICAgICAgICAgICIxLjAucmMiLAorICAgICAgICAg
ICAgIjEuMC5yYzEiLAorICAgICAgICAgICAgIjEuMC1yYyIsCisgICAgICAgICAgICAiMS4wLXJj
MSIsCisgICAgICAgICAgICAiMS4wQyIsCisgICAgICAgICAgICAiMS4wLkMiLAorICAgICAgICAg
ICAgIjEuMC5DMSIsCisgICAgICAgICAgICAiMS4wLUMiLAorICAgICAgICAgICAgIjEuMC1DMSIs
CisgICAgICAgICAgICAiMS4wUkMiLAorICAgICAgICAgICAgIjEuMC5SQyIsCisgICAgICAgICAg
ICAiMS4wLlJDMSIsCisgICAgICAgICAgICAiMS4wLVJDIiwKKyAgICAgICAgICAgICIxLjAtUkMx
IiwKKyAgICAgICAgICAgICMgVmFyaW91cyBwb3N0IHJlbGVhc2UgaW5jYXJuYXRpb25zCisgICAg
ICAgICAgICAiMS4wcG9zdCIsCisgICAgICAgICAgICAiMS4wLnBvc3QiLAorICAgICAgICAgICAg
IjEuMHBvc3QxIiwKKyAgICAgICAgICAgICIxLjBwb3N0IiwKKyAgICAgICAgICAgICIxLjAtcG9z
dCIsCisgICAgICAgICAgICAiMS4wLXBvc3QxIiwKKyAgICAgICAgICAgICIxLjBQT1NUIiwKKyAg
ICAgICAgICAgICIxLjAuUE9TVCIsCisgICAgICAgICAgICAiMS4wUE9TVDEiLAorICAgICAgICAg
ICAgIjEuMFBPU1QiLAorICAgICAgICAgICAgIjEuMC5QT1NUMSIsCisgICAgICAgICAgICAiMS4w
LVBPU1QiLAorICAgICAgICAgICAgIjEuMC1QT1NUMSIsCisgICAgICAgICAgICAiMS4wLTUiLAor
ICAgICAgICAgICAgIyBMb2NhbCB2ZXJzaW9uIGNhc2UgaW5zZW5zaXRpdml0eQorICAgICAgICAg
ICAgIjEuMCtBYkMiCisgICAgICAgICAgICAjIEludGVnZXIgTm9ybWFsaXphdGlvbgorICAgICAg
ICAgICAgIjEuMDEiLAorICAgICAgICAgICAgIjEuMGEwNSIsCisgICAgICAgICAgICAiMS4wYjA3
IiwKKyAgICAgICAgICAgICIxLjBjMDU2IiwKKyAgICAgICAgICAgICIxLjByYzA5IiwKKyAgICAg
ICAgICAgICIxLjAucG9zdDAwMCIsCisgICAgICAgICAgICAiMS4xLmRldjA5MDAwIiwKKyAgICAg
ICAgICAgICIwMCExLjIiLAorICAgICAgICAgICAgIjAxMDAhMC4wIiwKKyAgICAgICAgICAgICMg
VmFyaW91cyBvdGhlciBub3JtYWxpemF0aW9ucworICAgICAgICAgICAgInYxLjAiLAorICAgICAg
ICAgICAgIiAgXHIgXGYgXHYgdjEuMFx0XG4iLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYg
dGVzdF9zcGVjaWZpZXJzX25vcm1hbGl6ZWQoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGlmICIr
IiBub3QgaW4gdmVyc2lvbjoKKyAgICAgICAgICAgIG9wcyA9IFsifj0iLCAiPT0iLCAiIT0iLCAi
PD0iLCAiPj0iLCAiPCIsICI+Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wcyA9IFsi
PT0iLCAiIT0iXQorCisgICAgICAgIGZvciBvcCBpbiBvcHM6CisgICAgICAgICAgICBTcGVjaWZp
ZXIob3AgKyB2ZXJzaW9uKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAg
ICAoInNwZWNpZmllciIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAjIFNp
bmdsZSBpdGVtIHNwZWNpZmllcnMgc2hvdWxkIGp1c3QgYmUgcmVmbGV4aXZlCisgICAgICAgICAg
ICAoIiE9Mi4wIiwgIiE9Mi4wIiksCisgICAgICAgICAgICAoIjwyLjAiLCAiPDIuMCIpLAorICAg
ICAgICAgICAgKCI8PTIuMCIsICI8PTIuMCIpLAorICAgICAgICAgICAgKCI9PTIuMCIsICI9PTIu
MCIpLAorICAgICAgICAgICAgKCI+Mi4wIiwgIj4yLjAiKSwKKyAgICAgICAgICAgICgiPj0yLjAi
LCAiPj0yLjAiKSwKKyAgICAgICAgICAgICgifj0yLjAiLCAifj0yLjAiKSwKKyAgICAgICAgICAg
ICMgU3BhY2VzIHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgICAgICAoIjwgMiIsICI8MiIpLAor
ICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJzX3N0cl9hbmRfcmVwcihz
ZWxmLCBzcGVjaWZpZXIsIGV4cGVjdGVkKToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllcihzcGVj
aWZpZXIpCisKKyAgICAgICAgYXNzZXJ0IHN0cihzcGVjKSA9PSBleHBlY3RlZAorICAgICAgICBh
c3NlcnQgcmVwcihzcGVjKSA9PSAiPFNwZWNpZmllcih7MH0pPiIuZm9ybWF0KHJlcHIoZXhwZWN0
ZWQpKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzcGVjaWZpZXIiLCBTUEVDSUZJ
RVJTKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcnNfaGFzaChzZWxmLCBzcGVjaWZpZXIpOgorICAg
ICAgICBhc3NlcnQgaGFzaChTcGVjaWZpZXIoc3BlY2lmaWVyKSkgPT0gaGFzaChTcGVjaWZpZXIo
c3BlY2lmaWVyKSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJs
ZWZ0IiwgInJpZ2h0IiwgIm9wIiksCisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAg
ICAgICoKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkgb3BlcmF0b3Ig
d29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5lcSkgZm9yIHgg
aW4gU1BFQ0lGSUVSU11dCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0
IHRoZSBub3QgZXF1YWwgKCE9KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLm5lKSBmb3IgaiwgeSBpbiBlbnVt
ZXJhdGUoU1BFQ0lGSUVSUykgaWYgaSAhPSBqXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGlu
IGVudW1lcmF0ZShTUEVDSUZJRVJTKQorICAgICAgICAgICAgXQorICAgICAgICApLAorICAgICkK
KyAgICBkZWYgdGVzdF9jb21wYXJpc29uX3RydWUoc2VsZiwgbGVmdCwgcmlnaHQsIG9wKToKKyAg
ICAgICAgYXNzZXJ0IG9wKFNwZWNpZmllcihsZWZ0KSwgU3BlY2lmaWVyKHJpZ2h0KSkKKyAgICAg
ICAgYXNzZXJ0IG9wKGxlZnQsIFNwZWNpZmllcihyaWdodCkpCisgICAgICAgIGFzc2VydCBvcChT
cGVjaWZpZXIobGVmdCksIHJpZ2h0KQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgi
bGVmdCIsICJyaWdodCIpLCBbKCI9PTIuOC4wIiwgIj09Mi44IildKQorICAgIGRlZiB0ZXN0X2Nv
bXBhcmlzb25fY2Fub25pY2FsaXplcyhzZWxmLCBsZWZ0LCByaWdodCk6CisgICAgICAgIGFzc2Vy
dCBTcGVjaWZpZXIobGVmdCkgPT0gU3BlY2lmaWVyKHJpZ2h0KQorICAgICAgICBhc3NlcnQgbGVm
dCA9PSBTcGVjaWZpZXIocmlnaHQpCisgICAgICAgIGFzc2VydCBTcGVjaWZpZXIobGVmdCkgPT0g
cmlnaHQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJsZWZ0Iiwg
InJpZ2h0IiwgIm9wIiksCisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAgICAgICoK
KyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkgb3BlcmF0b3Igd29ya3Mg
Y29ycmVjdGx5CisgICAgICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5uZSkgZm9yIHggaW4gU1BF
Q0lGSUVSU11dCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBu
b3QgZXF1YWwgKCE9KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLmVxKSBmb3IgaiwgeSBpbiBlbnVtZXJhdGUo
U1BFQ0lGSUVSUykgaWYgaSAhPSBqXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1l
cmF0ZShTUEVDSUZJRVJTKQorICAgICAgICAgICAgXQorICAgICAgICApLAorICAgICkKKyAgICBk
ZWYgdGVzdF9jb21wYXJpc29uX2ZhbHNlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAgICAg
IGFzc2VydCBub3Qgb3AoU3BlY2lmaWVyKGxlZnQpLCBTcGVjaWZpZXIocmlnaHQpKQorICAgICAg
ICBhc3NlcnQgbm90IG9wKGxlZnQsIFNwZWNpZmllcihyaWdodCkpCisgICAgICAgIGFzc2VydCBu
b3Qgb3AoU3BlY2lmaWVyKGxlZnQpLCByaWdodCkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25f
bm9uX3NwZWNpZmllcihzZWxmKToKKyAgICAgICAgYXNzZXJ0IFNwZWNpZmllcigiPT0xLjAiKSAh
PSAxMgorICAgICAgICBhc3NlcnQgbm90IFNwZWNpZmllcigiPT0xLjAiKSA9PSAxMgorICAgICAg
ICBhc3NlcnQgU3BlY2lmaWVyKCI9PTEuMCIpICE9ICIxMiIKKyAgICAgICAgYXNzZXJ0IG5vdCBT
cGVjaWZpZXIoIj09MS4wIikgPT0gIjEyIgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KAorICAgICAgICAoInZlcnNpb24iLCAic3BlYyIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisg
ICAgICAgICAgICAodiwgcywgVHJ1ZSkKKyAgICAgICAgICAgIGZvciB2LCBzIGluIFsKKyAgICAg
ICAgICAgICAgICAjIFRlc3QgdGhlIGVxdWFsaXR5IG9wZXJhdGlvbgorICAgICAgICAgICAgICAg
ICgiMi4wIiwgIj09MiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIj09Mi4wIiksCisgICAg
ICAgICAgICAgICAgKCIyLjAiLCAiPT0yLjAuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wK2Rl
YWRiZWVmIiwgIj09MiIpLAorICAgICAgICAgICAgICAgICgiMi4wK2RlYWRiZWVmIiwgIj09Mi4w
IiksCisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYiLCAiPT0yLjAuMCIpLAorICAgICAg
ICAgICAgICAgICgiMi4wK2RlYWRiZWVmIiwgIj09MitkZWFkYmVlZiIpLAorICAgICAgICAgICAg
ICAgICgiMi4wK2RlYWRiZWVmIiwgIj09Mi4wK2RlYWRiZWVmIiksCisgICAgICAgICAgICAgICAg
KCIyLjArZGVhZGJlZWYiLCAiPT0yLjAuMCtkZWFkYmVlZiIpLAorICAgICAgICAgICAgICAgICgi
Mi4wK2RlYWRiZWVmLjAiLCAiPT0yLjAuMCtkZWFkYmVlZi4wMCIpLAorICAgICAgICAgICAgICAg
ICMgVGVzdCB0aGUgZXF1YWxpdHkgb3BlcmF0aW9uIHdpdGggYSBwcmVmaXgKKyAgICAgICAgICAg
ICAgICAoIjIuZGV2MSIsICI9PTIuKiIpLAorICAgICAgICAgICAgICAgICgiMmExIiwgIj09Mi4q
IiksCisgICAgICAgICAgICAgICAgKCIyYTEucG9zdDEiLCAiPT0yLioiKSwKKyAgICAgICAgICAg
ICAgICAoIjJiMSIsICI9PTIuKiIpLAorICAgICAgICAgICAgICAgICgiMmIxLmRldjEiLCAiPT0y
LioiKSwKKyAgICAgICAgICAgICAgICAoIjJjMSIsICI9PTIuKiIpLAorICAgICAgICAgICAgICAg
ICgiMmMxLnBvc3QxLmRldjEiLCAiPT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjJyYzEiLCAi
PT0yLioiKSwKKyAgICAgICAgICAgICAgICAoIjIiLCAiPT0yLioiKSwKKyAgICAgICAgICAgICAg
ICAoIjIuMCIsICI9PTIuKiIpLAorICAgICAgICAgICAgICAgICgiMi4wLjAiLCAiPT0yLioiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0MSIsICI9PTIuMC5wb3N0MS4qIiksCisgICAgICAg
ICAgICAgICAgKCIyLjAucG9zdDEuZGV2MSIsICI9PTIuMC5wb3N0MS4qIiksCisgICAgICAgICAg
ICAgICAgKCIyLjErbG9jYWwudmVyc2lvbiIsICI9PTIuMS4qIiksCisgICAgICAgICAgICAgICAg
IyBUZXN0IHRoZSBpbi1lcXVhbGl0eSBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMSIs
ICIhPTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMSIsICIhPTIuMCIpLAorICAgICAgICAgICAg
ICAgICgiMi4wLjEiLCAiIT0yIiksCisgICAgICAgICAgICAgICAgKCIyLjAuMSIsICIhPTIuMCIp
LAorICAgICAgICAgICAgICAgICgiMi4wLjEiLCAiIT0yLjAuMCIpLAorICAgICAgICAgICAgICAg
ICgiMi4wIiwgIiE9Mi4wK2RlYWRiZWVmIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBp
bi1lcXVhbGl0eSBvcGVyYXRpb24gd2l0aCBhIHByZWZpeAorICAgICAgICAgICAgICAgICgiMi4w
IiwgIiE9My4qIiksCisgICAgICAgICAgICAgICAgKCIyLjEiLCAiIT0yLjAuKiIpLAorICAgICAg
ICAgICAgICAgICMgVGVzdCB0aGUgZ3JlYXRlciB0aGFuIGVxdWFsIG9wZXJhdGlvbgorICAgICAg
ICAgICAgICAgICgiMi4wIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIj49Mi4w
IiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPj0yLjAuMCIpLAorICAgICAgICAgICAgICAg
ICgiMi4wLnBvc3QxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wLnBvc3QxLmRldjEi
LCAiPj0yIiksCisgICAgICAgICAgICAgICAgKCIzIiwgIj49MiIpLAorICAgICAgICAgICAgICAg
ICMgVGVzdCB0aGUgbGVzcyB0aGFuIGVxdWFsIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgi
Mi4wIiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIjw9Mi4wIiksCisgICAgICAg
ICAgICAgICAgKCIyLjAiLCAiPD0yLjAuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wLmRldjEi
LCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBhMSIsICI8PTIiKSwKKyAgICAgICAgICAg
ICAgICAoIjIuMGExLmRldjEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBiMSIsICI8
PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIxLnBvc3QxIiwgIjw9MiIpLAorICAgICAgICAg
ICAgICAgICgiMi4wYzEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBjMS5wb3N0MS5k
ZXYxIiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wcmMxIiwgIjw9MiIpLAorICAgICAg
ICAgICAgICAgICgiMSIsICI8PTIiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGdyZWF0
ZXIgdGhhbiBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjMiLCAiPjIiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMSIsICI+Mi4wIiksCisgICAgICAgICAgICAgICAgKCIyLjAuMSIsICI+MiIp
LAorICAgICAgICAgICAgICAgICgiMi4xLnBvc3QxIiwgIj4yIiksCisgICAgICAgICAgICAgICAg
KCIyLjErbG9jYWwudmVyc2lvbiIsICI+MiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUg
bGVzcyB0aGFuIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMSIsICI8MiIpLAorICAgICAg
ICAgICAgICAgICgiMi4wIiwgIjwyLjEiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5kZXYwIiwg
IjwyLjEiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGNvbXBhdGliaWxpdHkgb3BlcmF0
aW9uCisgICAgICAgICAgICAgICAgKCIxIiwgIn49MS4wIiksCisgICAgICAgICAgICAgICAgKCIx
LjAuMSIsICJ+PTEuMCIpLAorICAgICAgICAgICAgICAgICgiMS4xIiwgIn49MS4wIiksCisgICAg
ICAgICAgICAgICAgKCIxLjk5OTk5OTkiLCAifj0xLjAiKSwKKyAgICAgICAgICAgICAgICAjIFRl
c3QgdGhhdCBlcG9jaHMgYXJlIGhhbmRsZWQgc2FuZWx5CisgICAgICAgICAgICAgICAgKCIyITEu
MCIsICJ+PTIhMS4wIiksCisgICAgICAgICAgICAgICAgKCIyITEuMCIsICI9PTIhMS4qIiksCisg
ICAgICAgICAgICAgICAgKCIyITEuMCIsICI9PTIhMS4wIiksCisgICAgICAgICAgICAgICAgKCIy
ITEuMCIsICIhPTEuMCIpLAorICAgICAgICAgICAgICAgICgiMS4wIiwgIiE9MiExLjAiKSwKKyAg
ICAgICAgICAgICAgICAoIjEuMCIsICI8PTIhMC4xIiksCisgICAgICAgICAgICAgICAgKCIyITEu
MCIsICI+PTIuMCIpLAorICAgICAgICAgICAgICAgICgiMS4wIiwgIjwyITAuMSIpLAorICAgICAg
ICAgICAgICAgICgiMiExLjAiLCAiPjIuMCIpLAorICAgICAgICAgICAgICAgICMgVGVzdCBzb21l
IG5vcm1hbGl6YXRpb24gcnVsZXMKKyAgICAgICAgICAgICAgICAoIjIuMC41IiwgIj4yLjBkZXYi
KSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgXQorICAgICAgICArIFsKKyAgICAgICAgICAgICh2
LCBzLCBGYWxzZSkKKyAgICAgICAgICAgIGZvciB2LCBzIGluIFsKKyAgICAgICAgICAgICAgICAj
IFRlc3QgdGhlIGVxdWFsaXR5IG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMi4xIiwgIj09
MiIpLAorICAgICAgICAgICAgICAgICgiMi4xIiwgIj09Mi4wIiksCisgICAgICAgICAgICAgICAg
KCIyLjEiLCAiPT0yLjAuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIj09Mi4wK2RlYWRi
ZWVmIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBlcXVhbGl0eSBvcGVyYXRpb24gd2l0
aCBhIHByZWZpeAorICAgICAgICAgICAgICAgICgiMi4wIiwgIj09My4qIiksCisgICAgICAgICAg
ICAgICAgKCIyLjEiLCAiPT0yLjAuKiIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgaW4t
ZXF1YWxpdHkgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiIT0yIiksCisgICAg
ICAgICAgICAgICAgKCIyLjAiLCAiIT0yLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICIh
PTIuMC4wIiksCisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYiLCAiIT0yIiksCisgICAg
ICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYiLCAiIT0yLjAiKSwKKyAgICAgICAgICAgICAgICAo
IjIuMCtkZWFkYmVlZiIsICIhPTIuMC4wIiksCisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJl
ZWYiLCAiIT0yK2RlYWRiZWVmIiksCisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYiLCAi
IT0yLjArZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCtkZWFkYmVlZiIsICIhPTIu
MC4wK2RlYWRiZWVmIiksCisgICAgICAgICAgICAgICAgKCIyLjArZGVhZGJlZWYuMCIsICIhPTIu
MC4wK2RlYWRiZWVmLjAwIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBpbi1lcXVhbGl0
eSBvcGVyYXRpb24gd2l0aCBhIHByZWZpeAorICAgICAgICAgICAgICAgICgiMi5kZXYxIiwgIiE9
Mi4qIiksCisgICAgICAgICAgICAgICAgKCIyYTEiLCAiIT0yLioiKSwKKyAgICAgICAgICAgICAg
ICAoIjJhMS5wb3N0MSIsICIhPTIuKiIpLAorICAgICAgICAgICAgICAgICgiMmIxIiwgIiE9Mi4q
IiksCisgICAgICAgICAgICAgICAgKCIyYjEuZGV2MSIsICIhPTIuKiIpLAorICAgICAgICAgICAg
ICAgICgiMmMxIiwgIiE9Mi4qIiksCisgICAgICAgICAgICAgICAgKCIyYzEucG9zdDEuZGV2MSIs
ICIhPTIuKiIpLAorICAgICAgICAgICAgICAgICgiMnJjMSIsICIhPTIuKiIpLAorICAgICAgICAg
ICAgICAgICgiMiIsICIhPTIuKiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIiE9Mi4qIiks
CisgICAgICAgICAgICAgICAgKCIyLjAuMCIsICIhPTIuKiIpLAorICAgICAgICAgICAgICAgICgi
Mi4wLnBvc3QxIiwgIiE9Mi4wLnBvc3QxLioiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0
MS5kZXYxIiwgIiE9Mi4wLnBvc3QxLioiKSwKKyAgICAgICAgICAgICAgICAjIFRlc3QgdGhlIGdy
ZWF0ZXIgdGhhbiBlcXVhbCBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIuMC5kZXYxIiwg
Ij49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEiLCAiPj0yIiksCisgICAgICAgICAgICAg
ICAgKCIyLjBhMS5kZXYxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEiLCAiPj0y
IiksCisgICAgICAgICAgICAgICAgKCIyLjBiMS5wb3N0MSIsICI+PTIiKSwKKyAgICAgICAgICAg
ICAgICAoIjIuMGMxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYzEucG9zdDEuZGV2
MSIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMHJjMSIsICI+PTIiKSwKKyAgICAgICAg
ICAgICAgICAoIjEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBsZXNzIHRo
YW4gZXF1YWwgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAucG9zdDEiLCAiPD0yIiks
CisgICAgICAgICAgICAgICAgKCIyLjAucG9zdDEuZGV2MSIsICI8PTIiKSwKKyAgICAgICAgICAg
ICAgICAoIjMiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBncmVhdGVyIHRo
YW4gb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIxIiwgIj4yIiksCisgICAgICAgICAgICAg
ICAgKCIyLjAuZGV2MSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEiLCAiPjIiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMGExLnBvc3QxIiwgIj4yIiksCisgICAgICAgICAgICAgICAg
KCIyLjBiMSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEuZGV2MSIsICI+MiIpLAor
ICAgICAgICAgICAgICAgICgiMi4wYzEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGMx
LnBvc3QxLmRldjEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMHJjMSIsICI+MiIpLAor
ICAgICAgICAgICAgICAgICgiMi4wIiwgIj4yIiksCisgICAgICAgICAgICAgICAgKCIyLjAucG9z
dDEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMC5wb3N0MS5kZXYxIiwgIj4yIiksCisg
ICAgICAgICAgICAgICAgKCIyLjArbG9jYWwudmVyc2lvbiIsICI+MiIpLAorICAgICAgICAgICAg
ICAgICMgVGVzdCB0aGUgbGVzcyB0aGFuIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMi4w
LmRldjEiLCAiPDIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGExIiwgIjwyIiksCisgICAgICAg
ICAgICAgICAgKCIyLjBhMS5wb3N0MSIsICI8MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEi
LCAiPDIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIyLmRldjEiLCAiPDIiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMGMxIiwgIjwyIiksCisgICAgICAgICAgICAgICAgKCIyLjBjMS5wb3N0MS5k
ZXYxIiwgIjwyIiksCisgICAgICAgICAgICAgICAgKCIyLjByYzEiLCAiPDIiKSwKKyAgICAgICAg
ICAgICAgICAoIjIuMCIsICI8MiIpLAorICAgICAgICAgICAgICAgICgiMi5wb3N0MSIsICI8MiIp
LAorICAgICAgICAgICAgICAgICgiMi5wb3N0MS5kZXYxIiwgIjwyIiksCisgICAgICAgICAgICAg
ICAgKCIzIiwgIjwyIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBjb21wYXRpYmlsaXR5
IG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICgiMi4wIiwgIn49MS4wIiksCisgICAgICAgICAg
ICAgICAgKCIxLjEuMCIsICJ+PTEuMC4wIiksCisgICAgICAgICAgICAgICAgKCIxLjEucG9zdDEi
LCAifj0xLjAuMCIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGF0IGVwb2NocyBhcmUgaGFu
ZGxlZCBzYW5lbHkKKyAgICAgICAgICAgICAgICAoIjEuMCIsICJ+PTIhMS4wIiksCisgICAgICAg
ICAgICAgICAgKCIyITEuMCIsICJ+PTEuMCIpLAorICAgICAgICAgICAgICAgICgiMiExLjAiLCAi
PT0xLjAiKSwKKyAgICAgICAgICAgICAgICAoIjEuMCIsICI9PTIhMS4wIiksCisgICAgICAgICAg
ICAgICAgKCIyITEuMCIsICI9PTEuKiIpLAorICAgICAgICAgICAgICAgICgiMS4wIiwgIj09MiEx
LioiKSwKKyAgICAgICAgICAgICAgICAoIjIhMS4wIiwgIiE9MiExLjAiKSwKKyAgICAgICAgICAg
IF0KKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVycyhzZWxmLCB2ZXJz
aW9uLCBzcGVjLCBleHBlY3RlZCk6CisgICAgICAgIHNwZWMgPSBTcGVjaWZpZXIoc3BlYywgcHJl
cmVsZWFzZXM9VHJ1ZSkKKworICAgICAgICBpZiBleHBlY3RlZDoKKyAgICAgICAgICAgICMgVGVz
dCB0aGF0IHRoZSBwbGFpbiBzdHJpbmcgZm9ybSB3b3JrcworICAgICAgICAgICAgYXNzZXJ0IHZl
cnNpb24gaW4gc3BlYworICAgICAgICAgICAgYXNzZXJ0IHNwZWMuY29udGFpbnModmVyc2lvbikK
KworICAgICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHZlcnNpb24gaW5zdGFuY2UgZm9ybSB3b3Jr
cworICAgICAgICAgICAgYXNzZXJ0IFZlcnNpb24odmVyc2lvbikgaW4gc3BlYworICAgICAgICAg
ICAgYXNzZXJ0IHNwZWMuY29udGFpbnMoVmVyc2lvbih2ZXJzaW9uKSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBwbGFpbiBzdHJpbmcgZm9ybSB3b3JrcworICAg
ICAgICAgICAgYXNzZXJ0IHZlcnNpb24gbm90IGluIHNwZWMKKyAgICAgICAgICAgIGFzc2VydCBu
b3Qgc3BlYy5jb250YWlucyh2ZXJzaW9uKQorCisgICAgICAgICAgICAjIFRlc3QgdGhhdCB0aGUg
dmVyc2lvbiBpbnN0YW5jZSBmb3JtIHdvcmtzCisgICAgICAgICAgICBhc3NlcnQgVmVyc2lvbih2
ZXJzaW9uKSBub3QgaW4gc3BlYworICAgICAgICAgICAgYXNzZXJ0IG5vdCBzcGVjLmNvbnRhaW5z
KFZlcnNpb24odmVyc2lvbikpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAg
ICAgICgidmVyc2lvbiIsICJzcGVjIiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAgICAgICAg
ICAgICMgVGVzdCBpZGVudGl0eSBjb21wYXJpc29uIGJ5IGl0c2VsZgorICAgICAgICAgICAgKCJs
b2x3YXQiLCAiPT09bG9sd2F0IiwgVHJ1ZSksCisgICAgICAgICAgICAoIkxvbHdhdCIsICI9PT1s
b2x3YXQiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wIiwgIj09PTEuMCIsIFRydWUpLAorICAg
ICAgICAgICAgKCJub3BlIiwgIj09PWxvbHdhdCIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMS4w
LjAiLCAiPT09MS4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjAuZGV2MCIsICI9PT0xLjAu
ZGV2MCIsIFRydWUpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJz
X2lkZW50aXR5KHNlbGYsIHZlcnNpb24sIHNwZWMsIGV4cGVjdGVkKToKKyAgICAgICAgc3BlYyA9
IFNwZWNpZmllcihzcGVjKQorCisgICAgICAgIGlmIGV4cGVjdGVkOgorICAgICAgICAgICAgIyBJ
ZGVudGl0eSBjb21wYXJpc29ucyBvbmx5IHN1cHBvcnQgdGhlIHBsYWluIHN0cmluZyBmb3JtCisg
ICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiBpbiBzcGVjCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAjIElkZW50aXR5IGNvbXBhcmlzb25zIG9ubHkgc3VwcG9ydCB0aGUgcGxhaW4gc3RyaW5n
IGZvcm0KKyAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uIG5vdCBpbiBzcGVjCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgic3BlY2lmaWVyIiwgImV4cGVjdGVkIiks
CisgICAgICAgIFsKKyAgICAgICAgICAgICgiPT0xLjAiLCBGYWxzZSksCisgICAgICAgICAgICAo
Ij49MS4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI8PTEuMCIsIEZhbHNlKSwKKyAgICAgICAg
ICAgICgifj0xLjAiLCBGYWxzZSksCisgICAgICAgICAgICAoIjwxLjAiLCBGYWxzZSksCisgICAg
ICAgICAgICAoIj4xLjAiLCBGYWxzZSksCisgICAgICAgICAgICAoIjwxLjAuZGV2MSIsIEZhbHNl
KSwKKyAgICAgICAgICAgICgiPjEuMC5kZXYxIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI9PTEu
MC4qIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI9PTEuMC5kZXYxIiwgVHJ1ZSksCisgICAgICAg
ICAgICAoIj49MS4wLmRldjEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiPD0xLjAuZGV2MSIsIFRy
dWUpLAorICAgICAgICAgICAgKCJ+PTEuMC5kZXYxIiwgVHJ1ZSksCisgICAgICAgIF0sCisgICAg
KQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9wcmVyZWxlYXNlc19kZXRlY3Rpb24oc2VsZiwgc3Bl
Y2lmaWVyLCBleHBlY3RlZCk6CisgICAgICAgIGFzc2VydCBTcGVjaWZpZXIoc3BlY2lmaWVyKS5w
cmVyZWxlYXNlcyA9PSBleHBlY3RlZAorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAor
ICAgICAgICAoInNwZWNpZmllciIsICJ2ZXJzaW9uIiwgImV4cGVjdGVkIiksCisgICAgICAgIFsK
KyAgICAgICAgICAgICgiPj0xLjAiLCAiMi4wLmRldjEiLCBGYWxzZSksCisgICAgICAgICAgICAo
Ij49Mi4wLmRldjEiLCAiMi4wYTEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiPT0yLjAuKiIsICIy
LjBhMS5kZXYxIiwgRmFsc2UpLAorICAgICAgICAgICAgKCI9PTIuMGExLioiLCAiMi4wYTEuZGV2
MSIsIFRydWUpLAorICAgICAgICAgICAgKCI8PTIuMCIsICIxLjAuZGV2MSIsIEZhbHNlKSwKKyAg
ICAgICAgICAgICgiPD0yLjAuZGV2MSIsICIxLjBhMSIsIFRydWUpLAorICAgICAgICBdLAorICAg
ICkKKyAgICBkZWYgdGVzdF9zcGVjaWZpZXJzX3ByZXJlbGVhc2VzKHNlbGYsIHNwZWNpZmllciwg
dmVyc2lvbiwgZXhwZWN0ZWQpOgorICAgICAgICBzcGVjID0gU3BlY2lmaWVyKHNwZWNpZmllcikK
KworICAgICAgICBpZiBleHBlY3RlZDoKKyAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uIGluIHNw
ZWMKKyAgICAgICAgICAgIHNwZWMucHJlcmVsZWFzZXMgPSBGYWxzZQorICAgICAgICAgICAgYXNz
ZXJ0IHZlcnNpb24gbm90IGluIHNwZWMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2Vy
dCB2ZXJzaW9uIG5vdCBpbiBzcGVjCisgICAgICAgICAgICBzcGVjLnByZXJlbGVhc2VzID0gVHJ1
ZQorICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gaW4gc3BlYworCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKAorICAgICAgICAoInNwZWNpZmllciIsICJwcmVyZWxlYXNlcyIsICJpbnB1
dCIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIj49MS4wIiwgTm9uZSwg
WyIyLjBhMSJdLCBbIjIuMGExIl0pLAorICAgICAgICAgICAgKCI+PTEuMC5kZXYxIiwgTm9uZSwg
WyIxLjAiLCAiMi4wYTEiXSwgWyIxLjAiLCAiMi4wYTEiXSksCisgICAgICAgICAgICAoIj49MS4w
LmRldjEiLCBGYWxzZSwgWyIxLjAiLCAiMi4wYTEiXSwgWyIxLjAiXSksCisgICAgICAgIF0sCisg
ICAgKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9maWx0ZXIoc2VsZiwgc3BlY2lmaWVyLCBwcmVy
ZWxlYXNlcywgaW5wdXQsIGV4cGVjdGVkKToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllcihzcGVj
aWZpZXIpCisKKyAgICAgICAga3dhcmdzID0geyJwcmVyZWxlYXNlcyI6IHByZXJlbGVhc2VzfSBp
ZiBwcmVyZWxlYXNlcyBpcyBub3QgTm9uZSBlbHNlIHt9CisKKyAgICAgICAgYXNzZXJ0IGxpc3Qo
c3BlYy5maWx0ZXIoaW5wdXQsICoqa3dhcmdzKSkgPT0gZXhwZWN0ZWQKKworICAgIEBweXRlc3Qu
bWFyay54ZmFpbAorICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9leHBsaWNpdF9sZWdhY3koc2VsZik6
CisgICAgICAgIGFzc2VydCBTcGVjaWZpZXIoIj09MS4wIikuY29udGFpbnMoTGVnYWN5VmVyc2lv
bigiMS4wIikpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgic3Bl
YyIsICJvcCIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIn49Mi4wIiwgIn49IiksCisgICAg
ICAgICAgICAoIj09Mi4xLioiLCAiPT0iKSwKKyAgICAgICAgICAgICgiPT0yLjEuMC4zIiwgIj09
IiksCisgICAgICAgICAgICAoIiE9Mi4yLioiLCAiIT0iKSwKKyAgICAgICAgICAgICgiIT0yLjIu
MC41IiwgIiE9IiksCisgICAgICAgICAgICAoIjw9NSIsICI8PSIpLAorICAgICAgICAgICAgKCI+
PTcuOWExIiwgIj49IiksCisgICAgICAgICAgICAoIjwxLjAuZGV2MSIsICI8IiksCisgICAgICAg
ICAgICAoIj4yLjAucG9zdDEiLCAiPiIpLAorICAgICAgICAgICAgKCI9PT1sb2x3YXQiLCAiPT09
IiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9vcGVyYXRvcl9w
cm9wZXJ0eShzZWxmLCBzcGVjLCBvcCk6CisgICAgICAgIGFzc2VydCBTcGVjaWZpZXIoc3BlYyku
b3BlcmF0b3IgPT0gb3AKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAg
KCJzcGVjIiwgInZlcnNpb24iKSwKKyAgICAgICAgWworICAgICAgICAgICAgKCJ+PTIuMCIsICIy
LjAiKSwKKyAgICAgICAgICAgICgiPT0yLjEuKiIsICIyLjEuKiIpLAorICAgICAgICAgICAgKCI9
PTIuMS4wLjMiLCAiMi4xLjAuMyIpLAorICAgICAgICAgICAgKCIhPTIuMi4qIiwgIjIuMi4qIiks
CisgICAgICAgICAgICAoIiE9Mi4yLjAuNSIsICIyLjIuMC41IiksCisgICAgICAgICAgICAoIjw9
NSIsICI1IiksCisgICAgICAgICAgICAoIj49Ny45YTEiLCAiNy45YTEiKSwKKyAgICAgICAgICAg
ICgiPDEuMC5kZXYxIiwgIjEuMC5kZXYxIiksCisgICAgICAgICAgICAoIj4yLjAucG9zdDEiLCAi
Mi4wLnBvc3QxIiksCisgICAgICAgICAgICAoIj09PWxvbHdhdCIsICJsb2x3YXQiKSwKKyAgICAg
ICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyX3ZlcnNpb25fcHJvcGVydHkoc2Vs
Ziwgc3BlYywgdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBTcGVjaWZpZXIoc3BlYykudmVyc2lv
biA9PSB2ZXJzaW9uCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgi
c3BlYyIsICJleHBlY3RlZF9sZW5ndGgiKSwKKyAgICAgICAgWygiIiwgMCksICgiPT0yLjAiLCAx
KSwgKCI+PTIuMCIsIDEpLCAoIj49Mi4wLDwzIiwgMiksICgiPj0yLjAsPDMsPT0yLjQiLCAzKV0s
CisgICAgKQorICAgIGRlZiB0ZXN0X2xlbmd0aChzZWxmLCBzcGVjLCBleHBlY3RlZF9sZW5ndGgp
OgorICAgICAgICBzcGVjID0gU3BlY2lmaWVyU2V0KHNwZWMpCisgICAgICAgIGFzc2VydCBsZW4o
c3BlYykgPT0gZXhwZWN0ZWRfbGVuZ3RoCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgICAgICgic3BlYyIsICJleHBlY3RlZF9pdGVtcyIpLAorICAgICAgICBbCisgICAgICAg
ICAgICAoIiIsIFtdKSwKKyAgICAgICAgICAgICgiPT0yLjAiLCBbIj09Mi4wIl0pLAorICAgICAg
ICAgICAgKCI+PTIuMCIsIFsiPj0yLjAiXSksCisgICAgICAgICAgICAoIj49Mi4wLDwzIiwgWyI+
PTIuMCIsICI8MyJdKSwKKyAgICAgICAgICAgICgiPj0yLjAsPDMsPT0yLjQiLCBbIj49Mi4wIiwg
IjwzIiwgIj09Mi40Il0pLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9pdGVyYXRp
b24oc2VsZiwgc3BlYywgZXhwZWN0ZWRfaXRlbXMpOgorICAgICAgICBzcGVjID0gU3BlY2lmaWVy
U2V0KHNwZWMpCisgICAgICAgIGl0ZW1zID0gc2V0KHN0cihpdGVtKSBmb3IgaXRlbSBpbiBzcGVj
KQorICAgICAgICBhc3NlcnQgaXRlbXMgPT0gc2V0KGV4cGVjdGVkX2l0ZW1zKQorCisKK2NsYXNz
IFRlc3RMZWdhY3lTcGVjaWZpZXI6CisgICAgZGVmIHRlc3RfbGVnYWN5X3NwZWNpZmllcl9pc19k
ZXByZWNhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJl
Y29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgTGVnYWN5U3BlY2lmaWVyKCI+PXNvbWUtbGVn
YWN5LXZlcnNpb24iKQorICAgICAgICAgICAgYXNzZXJ0IGxlbih3KSA9PSAxCisgICAgICAgICAg
ICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpCisK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIsICJzcGVj
IiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAgICAgICAgICAgICh2LCBzLCBUcnVlKQorICAg
ICAgICAgICAgZm9yIHYsIHMgaW4gWworICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgZXF1YWxp
dHkgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPT0yIiksCisgICAgICAgICAg
ICAgICAgKCIyLjAiLCAiPT0yLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICI9PTIuMC4w
IiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBpbi1lcXVhbGl0eSBvcGVyYXRpb24KKyAg
ICAgICAgICAgICAgICAoIjIuMSIsICIhPTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMSIsICIh
PTIuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wLjEiLCAiIT0yIiksCisgICAgICAgICAgICAg
ICAgKCIyLjAuMSIsICIhPTIuMCIpLAorICAgICAgICAgICAgICAgICgiMi4wLjEiLCAiIT0yLjAu
MCIpLAorICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgZ3JlYXRlciB0aGFuIGVxdWFsIG9wZXJh
dGlvbgorICAgICAgICAgICAgICAgICgiMi4wIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgi
Mi4wIiwgIj49Mi4wIiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPj0yLjAuMCIpLAorICAg
ICAgICAgICAgICAgICgiMi4wLnBvc3QxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4w
LnBvc3QxLmRldjEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgKCIzIiwgIj49MiIpLAorICAg
ICAgICAgICAgICAgICMgVGVzdCB0aGUgbGVzcyB0aGFuIGVxdWFsIG9wZXJhdGlvbgorICAgICAg
ICAgICAgICAgICgiMi4wIiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIjw9Mi4w
IiksCisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPD0yLjAuMCIpLAorICAgICAgICAgICAgICAg
ICgiMi4wLmRldjEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBhMSIsICI8PTIiKSwK
KyAgICAgICAgICAgICAgICAoIjIuMGExLmRldjEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAg
KCIyLjBiMSIsICI8PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGIxLnBvc3QxIiwgIjw9MiIp
LAorICAgICAgICAgICAgICAgICgiMi4wYzEiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIy
LjBjMS5wb3N0MS5kZXYxIiwgIjw9MiIpLAorICAgICAgICAgICAgICAgICgiMi4wcmMxIiwgIjw9
MiIpLAorICAgICAgICAgICAgICAgICgiMSIsICI8PTIiKSwKKyAgICAgICAgICAgICAgICAjIFRl
c3QgdGhlIGdyZWF0ZXIgdGhhbiBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjMiLCAiPjIi
KSwKKyAgICAgICAgICAgICAgICAoIjIuMSIsICI+Mi4wIiksCisgICAgICAgICAgICAgICAgIyBU
ZXN0IHRoZSBsZXNzIHRoYW4gb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIxIiwgIjwyIiks
CisgICAgICAgICAgICAgICAgKCIyLjAiLCAiPDIuMSIpLAorICAgICAgICAgICAgXQorICAgICAg
ICBdCisgICAgICAgICsgWworICAgICAgICAgICAgKHYsIHMsIEZhbHNlKQorICAgICAgICAgICAg
Zm9yIHYsIHMgaW4gWworICAgICAgICAgICAgICAgICMgVGVzdCB0aGUgZXF1YWxpdHkgb3BlcmF0
aW9uCisgICAgICAgICAgICAgICAgKCIyLjEiLCAiPT0yIiksCisgICAgICAgICAgICAgICAgKCIy
LjEiLCAiPT0yLjAiKSwKKyAgICAgICAgICAgICAgICAoIjIuMSIsICI9PTIuMC4wIiksCisgICAg
ICAgICAgICAgICAgIyBUZXN0IHRoZSBpbi1lcXVhbGl0eSBvcGVyYXRpb24KKyAgICAgICAgICAg
ICAgICAoIjIuMCIsICIhPTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMCIsICIhPTIuMCIpLAor
ICAgICAgICAgICAgICAgICgiMi4wIiwgIiE9Mi4wLjAiKSwKKyAgICAgICAgICAgICAgICAjIFRl
c3QgdGhlIGdyZWF0ZXIgdGhhbiBlcXVhbCBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICAoIjIu
MC5kZXYxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEiLCAiPj0yIiksCisgICAg
ICAgICAgICAgICAgKCIyLjBhMS5kZXYxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4w
YjEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgKCIyLjBiMS5wb3N0MSIsICI+PTIiKSwKKyAg
ICAgICAgICAgICAgICAoIjIuMGMxIiwgIj49MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYzEu
cG9zdDEuZGV2MSIsICI+PTIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMHJjMSIsICI+PTIiKSwK
KyAgICAgICAgICAgICAgICAoIjEiLCAiPj0yIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRo
ZSBsZXNzIHRoYW4gZXF1YWwgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIyLjAucG9zdDEi
LCAiPD0yIiksCisgICAgICAgICAgICAgICAgKCIyLjAucG9zdDEuZGV2MSIsICI8PTIiKSwKKyAg
ICAgICAgICAgICAgICAoIjMiLCAiPD0yIiksCisgICAgICAgICAgICAgICAgIyBUZXN0IHRoZSBn
cmVhdGVyIHRoYW4gb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIxIiwgIj4yIiksCisgICAg
ICAgICAgICAgICAgKCIyLjAuZGV2MSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYTEi
LCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMGExLnBvc3QxIiwgIj4yIiksCisgICAgICAg
ICAgICAgICAgKCIyLjBiMSIsICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYjEuZGV2MSIs
ICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wYzEiLCAiPjIiKSwKKyAgICAgICAgICAgICAg
ICAoIjIuMGMxLnBvc3QxLmRldjEiLCAiPjIiKSwKKyAgICAgICAgICAgICAgICAoIjIuMHJjMSIs
ICI+MiIpLAorICAgICAgICAgICAgICAgICgiMi4wIiwgIj4yIiksCisgICAgICAgICAgICAgICAg
IyBUZXN0IHRoZSBsZXNzIHRoYW4gb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgKCIzIiwgIjwy
IiksCisgICAgICAgICAgICBdCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3NwZWNp
ZmllcnMoc2VsZiwgdmVyc2lvbiwgc3BlYywgZXhwZWN0ZWQpOgorICAgICAgICBzcGVjID0gTGVn
YWN5U3BlY2lmaWVyKHNwZWMsIHByZXJlbGVhc2VzPVRydWUpCisKKyAgICAgICAgaWYgZXhwZWN0
ZWQ6CisgICAgICAgICAgICAjIFRlc3QgdGhhdCB0aGUgcGxhaW4gc3RyaW5nIGZvcm0gd29ya3MK
KyAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uIGluIHNwZWMKKyAgICAgICAgICAgIGFzc2VydCBz
cGVjLmNvbnRhaW5zKHZlcnNpb24pCisKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHRoZSB2ZXJz
aW9uIGluc3RhbmNlIGZvcm0gd29ya3MKKyAgICAgICAgICAgIGFzc2VydCBMZWdhY3lWZXJzaW9u
KHZlcnNpb24pIGluIHNwZWMKKyAgICAgICAgICAgIGFzc2VydCBzcGVjLmNvbnRhaW5zKExlZ2Fj
eVZlcnNpb24odmVyc2lvbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRlc3QgdGhh
dCB0aGUgcGxhaW4gc3RyaW5nIGZvcm0gd29ya3MKKyAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9u
IG5vdCBpbiBzcGVjCisgICAgICAgICAgICBhc3NlcnQgbm90IHNwZWMuY29udGFpbnModmVyc2lv
bikKKworICAgICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHZlcnNpb24gaW5zdGFuY2UgZm9ybSB3
b3JrcworICAgICAgICAgICAgYXNzZXJ0IExlZ2FjeVZlcnNpb24odmVyc2lvbikgbm90IGluIHNw
ZWMKKyAgICAgICAgICAgIGFzc2VydCBub3Qgc3BlYy5jb250YWlucyhMZWdhY3lWZXJzaW9uKHZl
cnNpb24pKQorCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyX2V4cGxpY2l0X3ByZXJlbGVhc2VzKHNl
bGYpOgorICAgICAgICBzcGVjID0gTGVnYWN5U3BlY2lmaWVyKCI+PTEuMCIpCisgICAgICAgIGFz
c2VydCBub3Qgc3BlYy5wcmVyZWxlYXNlcworICAgICAgICBzcGVjLnByZXJlbGVhc2VzID0gVHJ1
ZQorICAgICAgICBhc3NlcnQgc3BlYy5wcmVyZWxlYXNlcworCisgICAgICAgIHNwZWMgPSBMZWdh
Y3lTcGVjaWZpZXIoIj49MS4wIiwgcHJlcmVsZWFzZXM9RmFsc2UpCisgICAgICAgIGFzc2VydCBu
b3Qgc3BlYy5wcmVyZWxlYXNlcworICAgICAgICBzcGVjLnByZXJlbGVhc2VzID0gVHJ1ZQorICAg
ICAgICBhc3NlcnQgc3BlYy5wcmVyZWxlYXNlcworCisgICAgICAgIHNwZWMgPSBMZWdhY3lTcGVj
aWZpZXIoIj49MS4wIiwgcHJlcmVsZWFzZXM9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IHNwZWMucHJl
cmVsZWFzZXMKKyAgICAgICAgc3BlYy5wcmVyZWxlYXNlcyA9IEZhbHNlCisgICAgICAgIGFzc2Vy
dCBub3Qgc3BlYy5wcmVyZWxlYXNlcworCisgICAgICAgIHNwZWMgPSBMZWdhY3lTcGVjaWZpZXIo
Ij49MS4wIiwgcHJlcmVsZWFzZXM9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0IHNwZWMucHJlcmVsZWFz
ZXMKKyAgICAgICAgc3BlYy5wcmVyZWxlYXNlcyA9IE5vbmUKKyAgICAgICAgYXNzZXJ0IG5vdCBz
cGVjLnByZXJlbGVhc2VzCisKKworY2xhc3MgVGVzdFNwZWNpZmllclNldDoKKyAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9OUykK
KyAgICBkZWYgdGVzdF9lbXB0eV9zcGVjaWZpZXIoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIHNw
ZWMgPSBTcGVjaWZpZXJTZXQocHJlcmVsZWFzZXM9VHJ1ZSkKKworICAgICAgICBhc3NlcnQgdmVy
c2lvbiBpbiBzcGVjCisgICAgICAgIGFzc2VydCBzcGVjLmNvbnRhaW5zKHZlcnNpb24pCisgICAg
ICAgIGFzc2VydCBwYXJzZSh2ZXJzaW9uKSBpbiBzcGVjCisgICAgICAgIGFzc2VydCBzcGVjLmNv
bnRhaW5zKHBhcnNlKHZlcnNpb24pKQorCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyX3ByZXJlbGVh
c2VzX2V4cGxpY2l0KHNlbGYpOgorICAgICAgICBzcGVjID0gU3BlY2lmaWVyU2V0KCkKKyAgICAg
ICAgYXNzZXJ0IG5vdCBzcGVjLnByZXJlbGVhc2VzCisgICAgICAgIGFzc2VydCAiMS4wLmRldjEi
IG5vdCBpbiBzcGVjCisgICAgICAgIGFzc2VydCBub3Qgc3BlYy5jb250YWlucygiMS4wLmRldjEi
KQorICAgICAgICBzcGVjLnByZXJlbGVhc2VzID0gVHJ1ZQorICAgICAgICBhc3NlcnQgc3BlYy5w
cmVyZWxlYXNlcworICAgICAgICBhc3NlcnQgIjEuMC5kZXYxIiBpbiBzcGVjCisgICAgICAgIGFz
c2VydCBzcGVjLmNvbnRhaW5zKCIxLjAuZGV2MSIpCisKKyAgICAgICAgc3BlYyA9IFNwZWNpZmll
clNldChwcmVyZWxlYXNlcz1UcnVlKQorICAgICAgICBhc3NlcnQgc3BlYy5wcmVyZWxlYXNlcwor
ICAgICAgICBhc3NlcnQgIjEuMC5kZXYxIiBpbiBzcGVjCisgICAgICAgIGFzc2VydCBzcGVjLmNv
bnRhaW5zKCIxLjAuZGV2MSIpCisgICAgICAgIHNwZWMucHJlcmVsZWFzZXMgPSBGYWxzZQorICAg
ICAgICBhc3NlcnQgbm90IHNwZWMucHJlcmVsZWFzZXMKKyAgICAgICAgYXNzZXJ0ICIxLjAuZGV2
MSIgbm90IGluIHNwZWMKKyAgICAgICAgYXNzZXJ0IG5vdCBzcGVjLmNvbnRhaW5zKCIxLjAuZGV2
MSIpCisKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllclNldChwcmVyZWxlYXNlcz1UcnVlKQorICAg
ICAgICBhc3NlcnQgc3BlYy5wcmVyZWxlYXNlcworICAgICAgICBhc3NlcnQgIjEuMC5kZXYxIiBp
biBzcGVjCisgICAgICAgIGFzc2VydCBzcGVjLmNvbnRhaW5zKCIxLjAuZGV2MSIpCisgICAgICAg
IHNwZWMucHJlcmVsZWFzZXMgPSBOb25lCisgICAgICAgIGFzc2VydCBub3Qgc3BlYy5wcmVyZWxl
YXNlcworICAgICAgICBhc3NlcnQgIjEuMC5kZXYxIiBub3QgaW4gc3BlYworICAgICAgICBhc3Nl
cnQgbm90IHNwZWMuY29udGFpbnMoIjEuMC5kZXYxIikKKworICAgIGRlZiB0ZXN0X3NwZWNpZmll
cl9jb250YWluc19wcmVyZWxlYXNlcyhzZWxmKToKKyAgICAgICAgc3BlYyA9IFNwZWNpZmllclNl
dCgpCisgICAgICAgIGFzc2VydCBzcGVjLnByZXJlbGVhc2VzIGlzIE5vbmUKKyAgICAgICAgYXNz
ZXJ0IG5vdCBzcGVjLmNvbnRhaW5zKCIxLjAuZGV2MSIpCisgICAgICAgIGFzc2VydCBzcGVjLmNv
bnRhaW5zKCIxLjAuZGV2MSIsIHByZXJlbGVhc2VzPVRydWUpCisKKyAgICAgICAgc3BlYyA9IFNw
ZWNpZmllclNldChwcmVyZWxlYXNlcz1UcnVlKQorICAgICAgICBhc3NlcnQgc3BlYy5wcmVyZWxl
YXNlcworICAgICAgICBhc3NlcnQgc3BlYy5jb250YWlucygiMS4wLmRldjEiKQorICAgICAgICBh
c3NlcnQgbm90IHNwZWMuY29udGFpbnMoIjEuMC5kZXYxIiwgcHJlcmVsZWFzZXM9RmFsc2UpCisK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgic3BlY2lmaWVyIiwgInNw
ZWNpZmllcl9wcmVyZWxlYXNlcyIsICJwcmVyZWxlYXNlcyIsICJpbnB1dCIsICJleHBlY3RlZCIp
LAorICAgICAgICBbCisgICAgICAgICAgICAjIEdlbmVyYWwgdGVzdCBvZiB0aGUgZmlsdGVyIG1l
dGhvZAorICAgICAgICAgICAgKCIiLCBOb25lLCBOb25lLCBbIjEuMCIsICIyLjBhMSJdLCBbIjEu
MCJdKSwKKyAgICAgICAgICAgICgiPj0xLjAuZGV2MSIsIE5vbmUsIE5vbmUsIFsiMS4wIiwgIjIu
MGExIl0sIFsiMS4wIiwgIjIuMGExIl0pLAorICAgICAgICAgICAgKCIiLCBOb25lLCBOb25lLCBb
IjEuMGExIl0sIFsiMS4wYTEiXSksCisgICAgICAgICAgICAoIiIsIE5vbmUsIE5vbmUsIFsiMS4w
IiwgVmVyc2lvbigiMi4wIildLCBbIjEuMCIsIFZlcnNpb24oIjIuMCIpXSksCisgICAgICAgICAg
ICAoIiIsIE5vbmUsIE5vbmUsIFsiMi4wZG9nIiwgIjEuMCJdLCBbIjEuMCJdKSwKKyAgICAgICAg
ICAgICMgVGVzdCBvdmVycmlkaW5nIHdpdGggdGhlIHByZXJlbGVhc2VzIHBhcmFtZXRlciBvbiBm
aWx0ZXIKKyAgICAgICAgICAgICgiIiwgTm9uZSwgRmFsc2UsIFsiMS4wYTEiXSwgW10pLAorICAg
ICAgICAgICAgKCI+PTEuMC5kZXYxIiwgTm9uZSwgRmFsc2UsIFsiMS4wIiwgIjIuMGExIl0sIFsi
MS4wIl0pLAorICAgICAgICAgICAgKCIiLCBOb25lLCBUcnVlLCBbIjEuMCIsICIyLjBhMSJdLCBb
IjEuMCIsICIyLjBhMSJdKSwKKyAgICAgICAgICAgICMgVGVzdCBvdmVycmlkaW5nIHdpdGggdGhl
IG92ZXJhbGwgc3BlY2lmaWVyCisgICAgICAgICAgICAoIiIsIFRydWUsIE5vbmUsIFsiMS4wIiwg
IjIuMGExIl0sIFsiMS4wIiwgIjIuMGExIl0pLAorICAgICAgICAgICAgKCIiLCBGYWxzZSwgTm9u
ZSwgWyIxLjAiLCAiMi4wYTEiXSwgWyIxLjAiXSksCisgICAgICAgICAgICAoIj49MS4wLmRldjEi
LCBUcnVlLCBOb25lLCBbIjEuMCIsICIyLjBhMSJdLCBbIjEuMCIsICIyLjBhMSJdKSwKKyAgICAg
ICAgICAgICgiPj0xLjAuZGV2MSIsIEZhbHNlLCBOb25lLCBbIjEuMCIsICIyLjBhMSJdLCBbIjEu
MCJdKSwKKyAgICAgICAgICAgICgiIiwgVHJ1ZSwgTm9uZSwgWyIxLjBhMSJdLCBbIjEuMGExIl0p
LAorICAgICAgICAgICAgKCIiLCBGYWxzZSwgTm9uZSwgWyIxLjBhMSJdLCBbXSksCisgICAgICAg
IF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3NwZWNpZmllcl9maWx0ZXIoCisgICAgICAgIHNlbGYs
IHNwZWNpZmllcl9wcmVyZWxlYXNlcywgc3BlY2lmaWVyLCBwcmVyZWxlYXNlcywgaW5wdXQsIGV4
cGVjdGVkCisgICAgKToKKyAgICAgICAgaWYgc3BlY2lmaWVyX3ByZXJlbGVhc2VzIGlzIE5vbmU6
CisgICAgICAgICAgICBzcGVjID0gU3BlY2lmaWVyU2V0KHNwZWNpZmllcikKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNwZWMgPSBTcGVjaWZpZXJTZXQoc3BlY2lmaWVyLCBwcmVyZWxlYXNl
cz1zcGVjaWZpZXJfcHJlcmVsZWFzZXMpCisKKyAgICAgICAga3dhcmdzID0geyJwcmVyZWxlYXNl
cyI6IHByZXJlbGVhc2VzfSBpZiBwcmVyZWxlYXNlcyBpcyBub3QgTm9uZSBlbHNlIHt9CisKKyAg
ICAgICAgYXNzZXJ0IGxpc3Qoc3BlYy5maWx0ZXIoaW5wdXQsICoqa3dhcmdzKSkgPT0gZXhwZWN0
ZWQKKworICAgIGRlZiB0ZXN0X2xlZ2FjeV9zcGVjaWZpZXJzX2NvbWJpbmVkKHNlbGYpOgorICAg
ICAgICBzcGVjID0gU3BlY2lmaWVyU2V0KCI8Myw+MS0xLTEiKQorICAgICAgICBhc3NlcnQgIjIu
MCIgaW4gc3BlYworCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInNw
ZWNpZmllciIsICJleHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAjIFNpbmdsZSBp
dGVtIHNwZWNpZmllcnMgc2hvdWxkIGp1c3QgYmUgcmVmbGV4aXZlCisgICAgICAgICAgICAoIiE9
Mi4wIiwgIiE9Mi4wIiksCisgICAgICAgICAgICAoIjwyLjAiLCAiPDIuMCIpLAorICAgICAgICAg
ICAgKCI8PTIuMCIsICI8PTIuMCIpLAorICAgICAgICAgICAgKCI9PTIuMCIsICI9PTIuMCIpLAor
ICAgICAgICAgICAgKCI+Mi4wIiwgIj4yLjAiKSwKKyAgICAgICAgICAgICgiPj0yLjAiLCAiPj0y
LjAiKSwKKyAgICAgICAgICAgICgifj0yLjAiLCAifj0yLjAiKSwKKyAgICAgICAgICAgICMgU3Bh
Y2VzIHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgICAgICAoIjwgMiIsICI8MiIpLAorICAgICAg
ICAgICAgIyBNdWx0aXBsZSBpdGVtIHNwZWNpZmllcnMgc2hvdWxkIHdvcmsKKyAgICAgICAgICAg
ICgiIT0yLjAsPjEuMCIsICIhPTIuMCw+MS4wIiksCisgICAgICAgICAgICAoIiE9Mi4wICw+MS4w
IiwgIiE9Mi4wLD4xLjAiKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc3BlY2lm
aWVyc19zdHJfYW5kX3JlcHIoc2VsZiwgc3BlY2lmaWVyLCBleHBlY3RlZCk6CisgICAgICAgIHNw
ZWMgPSBTcGVjaWZpZXJTZXQoc3BlY2lmaWVyKQorCisgICAgICAgIGFzc2VydCBzdHIoc3BlYykg
PT0gZXhwZWN0ZWQKKyAgICAgICAgYXNzZXJ0IHJlcHIoc3BlYykgPT0gIjxTcGVjaWZpZXJTZXQo
ezB9KT4iLmZvcm1hdChyZXByKGV4cGVjdGVkKSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgic3BlY2lmaWVyIiwgU1BFQ0lGSUVSUyArIExFR0FDWV9TUEVDSUZJRVJTKQorICAgIGRl
ZiB0ZXN0X3NwZWNpZmllcnNfaGFzaChzZWxmLCBzcGVjaWZpZXIpOgorICAgICAgICBhc3NlcnQg
aGFzaChTcGVjaWZpZXJTZXQoc3BlY2lmaWVyKSkgPT0gaGFzaChTcGVjaWZpZXJTZXQoc3BlY2lm
aWVyKSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJsZWZ0Iiwg
InJpZ2h0IiwgImV4cGVjdGVkIiksIFsoIj4yLjAiLCAiPDUuMCIsICI+Mi4wLDw1LjAiKV0KKyAg
ICApCisgICAgZGVmIHRlc3Rfc3BlY2lmaWVyc19jb21iaW5lKHNlbGYsIGxlZnQsIHJpZ2h0LCBl
eHBlY3RlZCk6CisgICAgICAgIHJlc3VsdCA9IFNwZWNpZmllclNldChsZWZ0KSAmIFNwZWNpZmll
clNldChyaWdodCkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBTcGVjaWZpZXJTZXQoZXhwZWN0
ZWQpCisKKyAgICAgICAgcmVzdWx0ID0gU3BlY2lmaWVyU2V0KGxlZnQpICYgcmlnaHQKKyAgICAg
ICAgYXNzZXJ0IHJlc3VsdCA9PSBTcGVjaWZpZXJTZXQoZXhwZWN0ZWQpCisKKyAgICAgICAgcmVz
dWx0ID0gU3BlY2lmaWVyU2V0KGxlZnQsIHByZXJlbGVhc2VzPVRydWUpICYgU3BlY2lmaWVyU2V0
KHJpZ2h0KQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFNwZWNpZmllclNldChleHBlY3RlZCkK
KyAgICAgICAgYXNzZXJ0IHJlc3VsdC5wcmVyZWxlYXNlcworCisgICAgICAgIHJlc3VsdCA9IFNw
ZWNpZmllclNldChsZWZ0LCBwcmVyZWxlYXNlcz1GYWxzZSkgJiBTcGVjaWZpZXJTZXQocmlnaHQp
CisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gU3BlY2lmaWVyU2V0KGV4cGVjdGVkKQorICAgICAg
ICBhc3NlcnQgbm90IHJlc3VsdC5wcmVyZWxlYXNlcworCisgICAgICAgIHJlc3VsdCA9IFNwZWNp
ZmllclNldChsZWZ0KSAmIFNwZWNpZmllclNldChyaWdodCwgcHJlcmVsZWFzZXM9VHJ1ZSkKKyAg
ICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBTcGVjaWZpZXJTZXQoZXhwZWN0ZWQpCisgICAgICAgIGFz
c2VydCByZXN1bHQucHJlcmVsZWFzZXMKKworICAgICAgICByZXN1bHQgPSBTcGVjaWZpZXJTZXQo
bGVmdCkgJiBTcGVjaWZpZXJTZXQocmlnaHQsIHByZXJlbGVhc2VzPUZhbHNlKQorICAgICAgICBh
c3NlcnQgcmVzdWx0ID09IFNwZWNpZmllclNldChleHBlY3RlZCkKKyAgICAgICAgYXNzZXJ0IG5v
dCByZXN1bHQucHJlcmVsZWFzZXMKKworICAgICAgICByZXN1bHQgPSBTcGVjaWZpZXJTZXQobGVm
dCwgcHJlcmVsZWFzZXM9VHJ1ZSkgJiBTcGVjaWZpZXJTZXQoCisgICAgICAgICAgICByaWdodCwg
cHJlcmVsZWFzZXM9VHJ1ZQorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gU3Bl
Y2lmaWVyU2V0KGV4cGVjdGVkKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnByZXJlbGVhc2VzCisK
KyAgICAgICAgcmVzdWx0ID0gU3BlY2lmaWVyU2V0KGxlZnQsIHByZXJlbGVhc2VzPUZhbHNlKSAm
IFNwZWNpZmllclNldCgKKyAgICAgICAgICAgIHJpZ2h0LCBwcmVyZWxlYXNlcz1GYWxzZQorICAg
ICAgICApCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gU3BlY2lmaWVyU2V0KGV4cGVjdGVkKQor
ICAgICAgICBhc3NlcnQgbm90IHJlc3VsdC5wcmVyZWxlYXNlcworCisgICAgICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHJlc3VsdCA9IFNwZWNpZmllclNl
dChsZWZ0LCBwcmVyZWxlYXNlcz1UcnVlKSAmIFNwZWNpZmllclNldCgKKyAgICAgICAgICAgICAg
ICByaWdodCwgcHJlcmVsZWFzZXM9RmFsc2UKKyAgICAgICAgICAgICkKKworICAgICAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICByZXN1bHQgPSBTcGVjaWZp
ZXJTZXQobGVmdCwgcHJlcmVsZWFzZXM9RmFsc2UpICYgU3BlY2lmaWVyU2V0KAorICAgICAgICAg
ICAgICAgIHJpZ2h0LCBwcmVyZWxlYXNlcz1UcnVlCisgICAgICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9zcGVjaWZpZXJzX2NvbWJpbmVfbm90X2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFNwZWNpZmllclNldCgp
ICYgMTIKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJsZWZ0Iiwg
InJpZ2h0IiwgIm9wIiksCisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAgICAgICoK
KyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkgb3BlcmF0b3Igd29ya3Mg
Y29ycmVjdGx5CisgICAgICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5lcSkgZm9yIHggaW4gU1BF
Q0lGSUVSU11dCisgICAgICAgICAgICArCisgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBu
b3QgZXF1YWwgKCE9KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9yLm5lKSBmb3IgaiwgeSBpbiBlbnVtZXJhdGUo
U1BFQ0lGSUVSUykgaWYgaSAhPSBqXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1l
cmF0ZShTUEVDSUZJRVJTKQorICAgICAgICAgICAgXQorICAgICAgICApLAorICAgICkKKyAgICBk
ZWYgdGVzdF9jb21wYXJpc29uX3RydWUoc2VsZiwgbGVmdCwgcmlnaHQsIG9wKToKKyAgICAgICAg
YXNzZXJ0IG9wKFNwZWNpZmllclNldChsZWZ0KSwgU3BlY2lmaWVyU2V0KHJpZ2h0KSkKKyAgICAg
ICAgYXNzZXJ0IG9wKFNwZWNpZmllclNldChsZWZ0KSwgU3BlY2lmaWVyKHJpZ2h0KSkKKyAgICAg
ICAgYXNzZXJ0IG9wKFNwZWNpZmllcihsZWZ0KSwgU3BlY2lmaWVyU2V0KHJpZ2h0KSkKKyAgICAg
ICAgYXNzZXJ0IG9wKGxlZnQsIFNwZWNpZmllclNldChyaWdodCkpCisgICAgICAgIGFzc2VydCBv
cChTcGVjaWZpZXJTZXQobGVmdCksIHJpZ2h0KQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKAorICAgICAgICAoImxlZnQiLCAicmlnaHQiLCAib3AiKSwKKyAgICAgICAgaXRlcnRvb2xz
LmNoYWluKAorICAgICAgICAgICAgKgorICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZXF1
YWwgKD09KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFtbKHgsIHgsIG9w
ZXJhdG9yLm5lKSBmb3IgeCBpbiBTUEVDSUZJRVJTXV0KKyAgICAgICAgICAgICsKKyAgICAgICAg
ICAgICMgVmVyaWZ5IHRoYXQgdGhlIG5vdCBlcXVhbCAoIT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJl
Y3RseQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IuZXEp
IGZvciBqLCB5IGluIGVudW1lcmF0ZShTUEVDSUZJRVJTKSBpZiBpICE9IGpdCisgICAgICAgICAg
ICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKFNQRUNJRklFUlMpCisgICAgICAgICAgICBdCisg
ICAgICAgICksCisgICAgKQorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25fZmFsc2Uoc2VsZiwgbGVm
dCwgcmlnaHQsIG9wKToKKyAgICAgICAgYXNzZXJ0IG5vdCBvcChTcGVjaWZpZXJTZXQobGVmdCks
IFNwZWNpZmllclNldChyaWdodCkpCisgICAgICAgIGFzc2VydCBub3Qgb3AoU3BlY2lmaWVyU2V0
KGxlZnQpLCBTcGVjaWZpZXIocmlnaHQpKQorICAgICAgICBhc3NlcnQgbm90IG9wKFNwZWNpZmll
cihsZWZ0KSwgU3BlY2lmaWVyU2V0KHJpZ2h0KSkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcChsZWZ0
LCBTcGVjaWZpZXJTZXQocmlnaHQpKQorICAgICAgICBhc3NlcnQgbm90IG9wKFNwZWNpZmllclNl
dChsZWZ0KSwgcmlnaHQpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKCJsZWZ0Iiwg
InJpZ2h0IiksIFsoIj09Mi44LjAiLCAiPT0yLjgiKV0pCisgICAgZGVmIHRlc3RfY29tcGFyaXNv
bl9jYW5vbmljYWxpemVzKHNlbGYsIGxlZnQsIHJpZ2h0KToKKyAgICAgICAgYXNzZXJ0IFNwZWNp
ZmllclNldChsZWZ0KSA9PSBTcGVjaWZpZXJTZXQocmlnaHQpCisgICAgICAgIGFzc2VydCBsZWZ0
ID09IFNwZWNpZmllclNldChyaWdodCkKKyAgICAgICAgYXNzZXJ0IFNwZWNpZmllclNldChsZWZ0
KSA9PSByaWdodAorCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbl9ub25fc3BlY2lmaWVyKHNlbGYp
OgorICAgICAgICBhc3NlcnQgU3BlY2lmaWVyU2V0KCI9PTEuMCIpICE9IDEyCisgICAgICAgIGFz
c2VydCBub3QgU3BlY2lmaWVyU2V0KCI9PTEuMCIpID09IDEyCisKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIsICJzcGVjaWZpZXIiLCAiZXhwZWN0ZWQi
KSwKKyAgICAgICAgWworICAgICAgICAgICAgKCIxLjAuMCtsb2NhbCIsICI9PTEuMC4wIiwgVHJ1
ZSksCisgICAgICAgICAgICAoIjEuMC4wK2xvY2FsIiwgIiE9MS4wLjAiLCBGYWxzZSksCisgICAg
ICAgICAgICAoIjEuMC4wK2xvY2FsIiwgIjw9MS4wLjAiLCBUcnVlKSwKKyAgICAgICAgICAgICgi
MS4wLjArbG9jYWwiLCAiPj0xLjAuMCIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjAuMCtsb2Nh
bCIsICI8MS4wLjAiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMC4wK2xvY2FsIiwgIj4xLjAu
MCIsIEZhbHNlKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbl9p
Z25vcmVzX2xvY2FsKHNlbGYsIHZlcnNpb24sIHNwZWNpZmllciwgZXhwZWN0ZWQpOgorICAgICAg
ICBhc3NlcnQgKFZlcnNpb24odmVyc2lvbikgaW4gU3BlY2lmaWVyU2V0KHNwZWNpZmllcikpID09
IGV4cGVjdGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3N0cnVjdHVy
ZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3N0cnVjdHVyZXMucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zM2IxODk2Yzc5NzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3N0cnVjdHVyZXMucHkKQEAgLTAsMCAr
MSw2MCBAQAorIyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4g
U2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZv
ciBjb21wbGV0ZSBkZXRhaWxzLgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorCitpbXBvcnQgcHl0ZXN0CisKK2Zyb20gcGFj
a2FnaW5nLl9zdHJ1Y3R1cmVzIGltcG9ydCBJbmZpbml0eSwgTmVnYXRpdmVJbmZpbml0eQorCisK
K2RlZiB0ZXN0X2luZmluaXR5X3JlcHIoKToKKyAgICByZXByKEluZmluaXR5KSA9PSAiSW5maW5p
dHkiCisKKworZGVmIHRlc3RfbmVnYXRpdmVfaW5maW5pdHlfcmVwcigpOgorICAgIHJlcHIoTmVn
YXRpdmVJbmZpbml0eSkgPT0gIi1JbmZpbml0eSIKKworCitkZWYgdGVzdF9pbmZpbml0eV9oYXNo
KCk6CisgICAgYXNzZXJ0IGhhc2goSW5maW5pdHkpID09IGhhc2goSW5maW5pdHkpCisKKworZGVm
IHRlc3RfbmVnYXRpdmVfaW5maW5pdHlfaGFzaCgpOgorICAgIGFzc2VydCBoYXNoKE5lZ2F0aXZl
SW5maW5pdHkpID09IGhhc2goTmVnYXRpdmVJbmZpbml0eSkKKworCitAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImxlZnQiLCBbMSwgImEiLCAoImIiLCA0KV0pCitkZWYgdGVzdF9pbmZpbml0eV9j
b21wYXJpc29uKGxlZnQpOgorICAgIGFzc2VydCBsZWZ0IDwgSW5maW5pdHkKKyAgICBhc3NlcnQg
bGVmdCA8PSBJbmZpbml0eQorICAgIGFzc2VydCBub3QgbGVmdCA9PSBJbmZpbml0eQorICAgIGFz
c2VydCBsZWZ0ICE9IEluZmluaXR5CisgICAgYXNzZXJ0IG5vdCBsZWZ0ID4gSW5maW5pdHkKKyAg
ICBhc3NlcnQgbm90IGxlZnQgPj0gSW5maW5pdHkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoImxlZnQiLCBbMSwgImEiLCAoImIiLCA0KV0pCitkZWYgdGVzdF9uZWdhdGl2ZV9pbmZpbml0
eV9sZXNzZXIobGVmdCk6CisgICAgYXNzZXJ0IG5vdCBsZWZ0IDwgTmVnYXRpdmVJbmZpbml0eQor
ICAgIGFzc2VydCBub3QgbGVmdCA8PSBOZWdhdGl2ZUluZmluaXR5CisgICAgYXNzZXJ0IG5vdCBs
ZWZ0ID09IE5lZ2F0aXZlSW5maW5pdHkKKyAgICBhc3NlcnQgbGVmdCAhPSBOZWdhdGl2ZUluZmlu
aXR5CisgICAgYXNzZXJ0IGxlZnQgPiBOZWdhdGl2ZUluZmluaXR5CisgICAgYXNzZXJ0IGxlZnQg
Pj0gTmVnYXRpdmVJbmZpbml0eQorCisKK2RlZiB0ZXN0X2luZmludHlfZXF1YWwoKToKKyAgICBh
c3NlcnQgSW5maW5pdHkgPT0gSW5maW5pdHkKKworCitkZWYgdGVzdF9uZWdhdGl2ZV9pbmZpbml0
eV9lcXVhbCgpOgorICAgIGFzc2VydCBOZWdhdGl2ZUluZmluaXR5ID09IE5lZ2F0aXZlSW5maW5p
dHkKKworCitkZWYgdGVzdF9uZWdhdGVfaW5maW5pdHkoKToKKyAgICBhc3NlcnQgaXNpbnN0YW5j
ZSgtSW5maW5pdHksIE5lZ2F0aXZlSW5maW5pdHkuX19jbGFzc19fKQorCisKK2RlZiB0ZXN0X25l
Z2F0ZV9uZWdhdGl2ZV9pbmZpbml0eSgpOgorICAgIGFzc2VydCBpc2luc3RhbmNlKC1OZWdhdGl2
ZUluZmluaXR5LCBJbmZpbml0eS5fX2NsYXNzX18pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2lu
Zy90ZXN0cy90ZXN0X3RhZ3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3RhZ3MucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42OGIxMDlhODlmMzMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3RhZ3MucHkKQEAgLTAs
MCArMSwxMzY0IEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhlIEJTRCBMaWNl
bnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkK
KyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCisKK3RyeToKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMu
YWJjIGFzIGNvbGxlY3Rpb25zX2FiYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBj
b2xsZWN0aW9ucyBhcyBjb2xsZWN0aW9uc19hYmMKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCitpbXBvcnQgZGlzdHV0aWxz
LnV0aWwKKworaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQoraW1wb3J0IHN5
cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHR5cGVzCitpbXBvcnQgd2FybmluZ3MKKworaW1w
b3J0IHByZXRlbmQKK2ltcG9ydCBweXRlc3QKKworZnJvbSBwYWNrYWdpbmcgaW1wb3J0IHRhZ3MK
KworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBleGFtcGxlX3RhZygpOgorICAgIHJldHVybiB0YWdz
LlRhZygicHkzIiwgIm5vbmUiLCAiYW55IikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBpc194
ODYoKToKKyAgICByZXR1cm4gcmUubWF0Y2gociIoaVxkODZ8eDg2XzY0KSIsIHBsYXRmb3JtLm1h
Y2hpbmUoKSkgaXMgbm90IE5vbmUKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBtYW55bGludXhf
bW9kdWxlKG1vbmtleXBhdGNoKToKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2V0
X2dsaWJjX3ZlcnNpb24iLCBsYW1iZGEgKmFyZ3M6ICgyLCAyMCkpCisgICAgbW9kdWxlX25hbWUg
PSAiX21hbnlsaW51eCIKKyAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG1vZHVsZV9uYW1l
KQorICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oc3lzLm1vZHVsZXMsIG1vZHVsZV9uYW1lLCBtb2R1
bGUpCisgICAgcmV0dXJuIG1vZHVsZQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIG1vY2tfaW50
ZXJwcmV0ZXJfbmFtZShtb25rZXlwYXRjaCk6CisgICAgZGVmIG1vY2sobmFtZSk6CisgICAgICAg
IGlmIGhhc2F0dHIoc3lzLCAiaW1wbGVtZW50YXRpb24iKSBhbmQgc3lzLmltcGxlbWVudGF0aW9u
Lm5hbWUgIT0gbmFtZS5sb3dlcigpOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihz
eXMuaW1wbGVtZW50YXRpb24sICJuYW1lIiwgbmFtZS5sb3dlcigpKQorICAgICAgICAgICAgcmV0
dXJuIFRydWUKKyAgICAgICAgZWxpZiBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSAh
PSBuYW1lOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwbGF0Zm9ybSwgInB5dGhv
bl9pbXBsZW1lbnRhdGlvbiIsIGxhbWJkYTogbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgcmV0dXJuIG1vY2sKKworCitjbGFzcyBUZXN0
VGFnOgorICAgIGRlZiB0ZXN0X2xvd2VyY2FzaW5nKHNlbGYpOgorICAgICAgICB0YWcgPSB0YWdz
LlRhZygiUFkzIiwgIk5vbmUiLCAiQU5ZIikKKyAgICAgICAgYXNzZXJ0IHRhZy5pbnRlcnByZXRl
ciA9PSAicHkzIgorICAgICAgICBhc3NlcnQgdGFnLmFiaSA9PSAibm9uZSIKKyAgICAgICAgYXNz
ZXJ0IHRhZy5wbGF0Zm9ybSA9PSAiYW55IgorCisgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6
CisgICAgICAgIGFyZ3MgPSAicHkzIiwgIm5vbmUiLCAiYW55IgorICAgICAgICBhc3NlcnQgdGFn
cy5UYWcoKmFyZ3MpID09IHRhZ3MuVGFnKCphcmdzKQorCisgICAgZGVmIHRlc3RfZXF1YWxpdHlf
ZmFpbHNfd2l0aF9ub25fdGFnKHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90IHRhZ3MuVGFnKCJw
eTMiLCAibm9uZSIsICJhbnkiKSA9PSAibm9uLXRhZyIKKworICAgIGRlZiB0ZXN0X2hhc2hpbmco
c2VsZiwgZXhhbXBsZV90YWcpOgorICAgICAgICB0YWdzID0ge2V4YW1wbGVfdGFnfSAgIyBTaG91
bGQgbm90IHJhaXNlIFR5cGVFcnJvci4KKyAgICAgICAgYXNzZXJ0IGV4YW1wbGVfdGFnIGluIHRh
Z3MKKworICAgIGRlZiB0ZXN0X2hhc2hfZXF1YWxpdHkoc2VsZiwgZXhhbXBsZV90YWcpOgorICAg
ICAgICBlcXVhbF90YWcgPSB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAiYW55IikKKyAgICAgICAg
YXNzZXJ0IGV4YW1wbGVfdGFnID09IGVxdWFsX3RhZyAgIyBTYW5pdHkgY2hlY2suCisgICAgICAg
IGFzc2VydCBleGFtcGxlX3RhZy5fX2hhc2hfXygpID09IGVxdWFsX3RhZy5fX2hhc2hfXygpCisK
KyAgICBkZWYgdGVzdF9zdHIoc2VsZiwgZXhhbXBsZV90YWcpOgorICAgICAgICBhc3NlcnQgc3Ry
KGV4YW1wbGVfdGFnKSA9PSAicHkzLW5vbmUtYW55IgorCisgICAgZGVmIHRlc3RfcmVwcihzZWxm
LCBleGFtcGxlX3RhZyk6CisgICAgICAgIGFzc2VydCByZXByKGV4YW1wbGVfdGFnKSA9PSAiPHB5
My1ub25lLWFueSBAIHt0YWdfaWR9PiIuZm9ybWF0KAorICAgICAgICAgICAgdGFnX2lkPWlkKGV4
YW1wbGVfdGFnKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfYWNjZXNzKHNl
bGYsIGV4YW1wbGVfdGFnKToKKyAgICAgICAgYXNzZXJ0IGV4YW1wbGVfdGFnLmludGVycHJldGVy
ID09ICJweTMiCisgICAgICAgIGFzc2VydCBleGFtcGxlX3RhZy5hYmkgPT0gIm5vbmUiCisgICAg
ICAgIGFzc2VydCBleGFtcGxlX3RhZy5wbGF0Zm9ybSA9PSAiYW55IgorCisKK2NsYXNzIFRlc3RX
YXJuS2V5d29yZE9ubHlQYXJhbWV0ZXI6CisgICAgZGVmIHRlc3Rfbm9fYXJndW1lbnQoc2VsZik6
CisgICAgICAgIGFzc2VydCBub3QgdGFncy5fd2Fybl9rZXl3b3JkX3BhcmFtZXRlcigidGVzdF93
YXJuX2tleXdvcmRfcGFyYW1ldGVycyIsIHt9KQorCisgICAgZGVmIHRlc3RfZmFsc2Uoc2VsZik6
CisgICAgICAgIGFzc2VydCBub3QgdGFncy5fd2Fybl9rZXl3b3JkX3BhcmFtZXRlcigKKyAgICAg
ICAgICAgICJ0ZXN0X3dhcm5fa2V5d29yZF9wYXJhbWV0ZXJzIiwgeyJ3YXJuIjogRmFsc2V9Cisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X3RydWUoc2VsZik6CisgICAgICAgIGFzc2VydCB0YWdz
Ll93YXJuX2tleXdvcmRfcGFyYW1ldGVyKAorICAgICAgICAgICAgInRlc3Rfd2Fybl9rZXl3b3Jk
X3BhcmFtZXRlcnMiLCB7Indhcm4iOiBUcnVlfQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF90
b29fbWFueV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIG1lc3NhZ2VfcmUgPSByZS5jb21waWxl
KHIidG9vX21hbnkuK3shcn0iLmZvcm1hdCgid2hhdGV2ZXIiKSkKKyAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKFR5cGVFcnJvciwgbWF0Y2g9bWVzc2FnZV9yZSk6CisgICAgICAgICAgICB0YWdz
Ll93YXJuX2tleXdvcmRfcGFyYW1ldGVyKCJ0b29fbWFueSIsIHsid2FybiI6IFRydWUsICJ3aGF0
ZXZlciI6IFRydWV9KQorCisgICAgZGVmIHRlc3Rfd3JvbmdfYXJndW1lbnQoc2VsZik6CisgICAg
ICAgIG1lc3NhZ2VfcmUgPSByZS5jb21waWxlKHIibWlzc2luZy4reyFyfSIuZm9ybWF0KCJ1bmV4
cGVjdGVkIikpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIG1hdGNoPW1l
c3NhZ2VfcmUpOgorICAgICAgICAgICAgdGFncy5fd2Fybl9rZXl3b3JkX3BhcmFtZXRlcigibWlz
c2luZyIsIHsidW5leHBlY3RlZCI6IFRydWV9KQorCisKK2NsYXNzIFRlc3RQYXJzZVRhZzoKKyAg
ICBkZWYgdGVzdF9zaW1wbGUoc2VsZiwgZXhhbXBsZV90YWcpOgorICAgICAgICBwYXJzZWRfdGFn
cyA9IHRhZ3MucGFyc2VfdGFnKHN0cihleGFtcGxlX3RhZykpCisgICAgICAgIGFzc2VydCBwYXJz
ZWRfdGFncyA9PSB7ZXhhbXBsZV90YWd9CisKKyAgICBkZWYgdGVzdF9tdWx0aV9pbnRlcnByZXRl
cihzZWxmLCBleGFtcGxlX3RhZyk6CisgICAgICAgIGV4cGVjdGVkID0ge2V4YW1wbGVfdGFnLCB0
YWdzLlRhZygicHkyIiwgIm5vbmUiLCAiYW55Iil9CisgICAgICAgIGdpdmVuID0gdGFncy5wYXJz
ZV90YWcoInB5Mi5weTMtbm9uZS1hbnkiKQorICAgICAgICBhc3NlcnQgZ2l2ZW4gPT0gZXhwZWN0
ZWQKKworICAgIGRlZiB0ZXN0X211bHRpX3BsYXRmb3JtKHNlbGYpOgorICAgICAgICBleHBlY3Rl
ZCA9IHsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM3IiwgImNwMzdtIiwgcGxhdGZvcm0pCisg
ICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gKAorICAgICAgICAgICAgICAgICJtYWNvc3hfMTBf
Nl9pbnRlbCIsCisgICAgICAgICAgICAgICAgIm1hY29zeF8xMF85X2ludGVsIiwKKyAgICAgICAg
ICAgICAgICAibWFjb3N4XzEwXzlfeDg2XzY0IiwKKyAgICAgICAgICAgICAgICAibWFjb3N4XzEw
XzEwX2ludGVsIiwKKyAgICAgICAgICAgICAgICAibWFjb3N4XzEwXzEwX3g4Nl82NCIsCisgICAg
ICAgICAgICApCisgICAgICAgIH0KKyAgICAgICAgZ2l2ZW4gPSB0YWdzLnBhcnNlX3RhZygKKyAg
ICAgICAgICAgICJjcDM3LWNwMzdtLW1hY29zeF8xMF82X2ludGVsLm1hY29zeF8xMF85X2ludGVs
Lm1hY29zeF8xMF85X3g4Nl82NC4iCisgICAgICAgICAgICAibWFjb3N4XzEwXzEwX2ludGVsLm1h
Y29zeF8xMF8xMF94ODZfNjQiCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGdpdmVuID09IGV4
cGVjdGVkCisKKworY2xhc3MgVGVzdEludGVycHJldGVyTmFtZToKKyAgICBkZWYgdGVzdF9zeXNf
aW1wbGVtZW50YXRpb25fbmFtZShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIGNsYXNzIE1v
Y2tJbXBsZW1lbnRhdGlvbihvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1v
Y2tfaW1wbGVtZW50YXRpb24gPSBNb2NrSW1wbGVtZW50YXRpb24oKQorICAgICAgICBtb2NrX2lt
cGxlbWVudGF0aW9uLm5hbWUgPSAic2lsbHl3YWxrIgorICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKHN5cywgImltcGxlbWVudGF0aW9uIiwgbW9ja19pbXBsZW1lbnRhdGlvbiwgcmFpc2luZz1G
YWxzZSkKKyAgICAgICAgYXNzZXJ0IHRhZ3MuaW50ZXJwcmV0ZXJfbmFtZSgpID09ICJzaWxseXdh
bGsiCisKKyAgICBkZWYgdGVzdF9wbGF0Zm9ybShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAg
IG1vbmtleXBhdGNoLmRlbGF0dHIoc3lzLCAiaW1wbGVtZW50YXRpb24iLCByYWlzaW5nPUZhbHNl
KQorICAgICAgICBuYW1lID0gIlNpbGx5V2FsayIKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cihwbGF0Zm9ybSwgInB5dGhvbl9pbXBsZW1lbnRhdGlvbiIsIGxhbWJkYTogbmFtZSkKKyAgICAg
ICAgYXNzZXJ0IHRhZ3MuaW50ZXJwcmV0ZXJfbmFtZSgpID09IG5hbWUubG93ZXIoKQorCisgICAg
ZGVmIHRlc3RfaW50ZXJwcmV0ZXJfc2hvcnRfbmFtZXMoc2VsZiwgbW9ja19pbnRlcnByZXRlcl9u
YW1lLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSgiY3B5dGhv
biIpCisgICAgICAgIGFzc2VydCB0YWdzLmludGVycHJldGVyX25hbWUoKSA9PSAiY3AiCisKKwor
Y2xhc3MgVGVzdEludGVycHJldGVyVmVyc2lvbjoKKyAgICBkZWYgdGVzdF93YXJuKHNlbGYsIG1v
bmtleXBhdGNoKToKKyAgICAgICAgY2xhc3MgTW9ja0NvbmZpZ1ZhcihvYmplY3QpOgorICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldHVybl8pOgorICAgICAgICAgICAgICAgIHNlbGYu
d2FybiA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXR1cm4gPSByZXR1cm5fCisKKyAg
ICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBuYW1lLCB3YXJuKToKKyAgICAgICAgICAgICAg
ICBzZWxmLndhcm4gPSB3YXJuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JldHVybgor
CisgICAgICAgIG1vY2tfY29uZmlnX3ZhciA9IE1vY2tDb25maWdWYXIoIjM4IikKKyAgICAgICAg
bW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2dldF9jb25maWdfdmFyIiwgbW9ja19jb25maWdf
dmFyKQorICAgICAgICB0YWdzLmludGVycHJldGVyX3ZlcnNpb24od2Fybj1UcnVlKQorICAgICAg
ICBhc3NlcnQgbW9ja19jb25maWdfdmFyLndhcm4KKworICAgIGRlZiB0ZXN0X3B5dGhvbl92ZXJz
aW9uX25vZG90KHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cih0YWdzLCAiX2dldF9jb25maWdfdmFyIiwgbGFtYmRhIHZhciwgd2FybjogIk5OIikKKyAgICAg
ICAgYXNzZXJ0IHRhZ3MuaW50ZXJwcmV0ZXJfdmVyc2lvbigpID09ICJOTiIKKworICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInZlcnNpb25faW5mbyx2ZXJzaW9uX3N0ciIs
CisgICAgICAgIFsKKyAgICAgICAgICAgICgoMSwgMiwgMyksICIxMiIpLAorICAgICAgICAgICAg
KCgxLCAxMiwgMyksICIxXzEyIiksCisgICAgICAgICAgICAoKDExLCAyLCAzKSwgIjExXzIiKSwK
KyAgICAgICAgICAgICgoMTEsIDEyLCAzKSwgIjExXzEyIiksCisgICAgICAgICAgICAoKDEsIDIs
IDEzKSwgIjEyIiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3N5c192ZXJzaW9u
X2luZm8oc2VsZiwgdmVyc2lvbl9pbmZvLCB2ZXJzaW9uX3N0ciwgbW9ua2V5cGF0Y2gpOgorICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2V0X2NvbmZpZ192YXIiLCBsYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOiBOb25lKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5cywg
InZlcnNpb25faW5mbyIsIHZlcnNpb25faW5mbykKKyAgICAgICAgYXNzZXJ0IHRhZ3MuaW50ZXJw
cmV0ZXJfdmVyc2lvbigpID09IHZlcnNpb25fc3RyCisKKworY2xhc3MgVGVzdE1hY09TUGxhdGZv
cm1zOgorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImFyY2gsIGlzXzMy
Yml0LCBleHBlY3RlZCIsCisgICAgICAgIFsKKyAgICAgICAgICAgICgiaTM4NiIsIFRydWUsICJp
Mzg2IiksCisgICAgICAgICAgICAoInBwYyIsIFRydWUsICJwcGMiKSwKKyAgICAgICAgICAgICgi
eDg2XzY0IiwgRmFsc2UsICJ4ODZfNjQiKSwKKyAgICAgICAgICAgICgieDg2XzY0IiwgVHJ1ZSwg
ImkzODYiKSwKKyAgICAgICAgICAgICgicHBjNjQiLCBGYWxzZSwgInBwYzY0IiksCisgICAgICAg
ICAgICAoInBwYzY0IiwgVHJ1ZSwgInBwYyIpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYg
dGVzdF9hcmNoaXRlY3R1cmVzKHNlbGYsIGFyY2gsIGlzXzMyYml0LCBleHBlY3RlZCk6CisgICAg
ICAgIGFzc2VydCB0YWdzLl9tYWNfYXJjaChhcmNoLCBpc18zMmJpdD1pc18zMmJpdCkgPT0gZXhw
ZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInZlcnNpb24s
YXJjaCxleHBlY3RlZCIsCisgICAgICAgIFsKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAoMTAsIDE1KSwKKyAgICAgICAgICAgICAgICAieDg2XzY0IiwKKyAgICAgICAgICAgICAgICBb
Ing4Nl82NCIsICJpbnRlbCIsICJmYXQ2NCIsICJmYXQzMiIsICJ1bml2ZXJzYWwyIiwgInVuaXZl
cnNhbCJdLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAo
MTAsIDQpLAorICAgICAgICAgICAgICAgICJ4ODZfNjQiLAorICAgICAgICAgICAgICAgIFsieDg2
XzY0IiwgImludGVsIiwgImZhdDY0IiwgImZhdDMyIiwgInVuaXZlcnNhbDIiLCAidW5pdmVyc2Fs
Il0sCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKCgxMCwgMyksICJ4ODZfNjQiLCBbXSks
CisgICAgICAgICAgICAoKDEwLCAxNSksICJpMzg2IiwgWyJpMzg2IiwgImludGVsIiwgImZhdDMy
IiwgImZhdCIsICJ1bml2ZXJzYWwiXSksCisgICAgICAgICAgICAoKDEwLCA0KSwgImkzODYiLCBb
ImkzODYiLCAiaW50ZWwiLCAiZmF0MzIiLCAiZmF0IiwgInVuaXZlcnNhbCJdKSwKKyAgICAgICAg
ICAgICgoMTAsIDMpLCAiaTM4NiIsIFtdKSwKKyAgICAgICAgICAgICgoMTAsIDE1KSwgInBwYzY0
IiwgW10pLAorICAgICAgICAgICAgKCgxMCwgNiksICJwcGM2NCIsIFtdKSwKKyAgICAgICAgICAg
ICgoMTAsIDUpLCAicHBjNjQiLCBbInBwYzY0IiwgImZhdDY0IiwgInVuaXZlcnNhbCJdKSwKKyAg
ICAgICAgICAgICgoMTAsIDMpLCAicHBjNjQiLCBbXSksCisgICAgICAgICAgICAoKDEwLCAxNSks
ICJwcGMiLCBbXSksCisgICAgICAgICAgICAoKDEwLCA3KSwgInBwYyIsIFtdKSwKKyAgICAgICAg
ICAgICgoMTAsIDYpLCAicHBjIiwgWyJwcGMiLCAiZmF0MzIiLCAiZmF0IiwgInVuaXZlcnNhbCJd
KSwKKyAgICAgICAgICAgICgoMTAsIDApLCAicHBjIiwgWyJwcGMiLCAiZmF0MzIiLCAiZmF0Iiwg
InVuaXZlcnNhbCJdKSwKKyAgICAgICAgICAgICgoMTEsIDApLCAicmlzY3YiLCBbInJpc2N2Il0p
LAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICgxMSwgMCksCisgICAgICAgICAgICAg
ICAgIng4Nl82NCIsCisgICAgICAgICAgICAgICAgWyJ4ODZfNjQiLCAiaW50ZWwiLCAiZmF0NjQi
LCAiZmF0MzIiLCAidW5pdmVyc2FsMiIsICJ1bml2ZXJzYWwiXSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAoKDExLCAwKSwgImFybTY0IiwgWyJhcm02NCIsICJ1bml2ZXJzYWwyIl0pLAor
ICAgICAgICAgICAgKCgxMSwgMSksICJhcm02NCIsIFsiYXJtNjQiLCAidW5pdmVyc2FsMiJdKSwK
KyAgICAgICAgICAgICgoMTIsIDApLCAiYXJtNjQiLCBbImFybTY0IiwgInVuaXZlcnNhbDIiXSks
CisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2JpbmFyeV9mb3JtYXRzKHNlbGYsIHZl
cnNpb24sIGFyY2gsIGV4cGVjdGVkKToKKyAgICAgICAgYXNzZXJ0IHRhZ3MuX21hY19iaW5hcnlf
Zm9ybWF0cyh2ZXJzaW9uLCBhcmNoKSA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3RfdmVyc2lv
bl9kZXRlY3Rpb24oc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0
ZW0oKSAhPSAiRGFyd2luIjoKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisgICAg
ICAgICAgICAgICAgcGxhdGZvcm0sICJtYWNfdmVyIiwgbGFtYmRhOiAoIjEwLjE0IiwgKCIiLCAi
IiwgIiIpLCAieDg2XzY0IikKKyAgICAgICAgICAgICkKKyAgICAgICAgdmVyc2lvbiA9IHBsYXRm
b3JtLm1hY192ZXIoKVswXS5zcGxpdCgiLiIpCisgICAgICAgIGV4cGVjdGVkID0gIm1hY29zeF97
bWFqb3J9X3ttaW5vcn0iLmZvcm1hdChtYWpvcj12ZXJzaW9uWzBdLCBtaW5vcj12ZXJzaW9uWzFd
KQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MubWFjX3BsYXRmb3JtcyhhcmNoPSJ4ODZf
NjQiKSkKKyAgICAgICAgYXNzZXJ0IHBsYXRmb3Jtc1swXS5zdGFydHN3aXRoKGV4cGVjdGVkKQor
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhcmNoIiwgWyJ4ODZfNjQiLCAiaTM4NiJd
KQorICAgIGRlZiB0ZXN0X2FyY2hfZGV0ZWN0aW9uKHNlbGYsIGFyY2gsIG1vbmtleXBhdGNoKToK
KyAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgIT0gIkRhcndpbiIgb3IgcGxhdGZvcm0ubWFj
X3ZlcigpWzJdICE9IGFyY2g6CisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAg
ICAgICAgICAgICAgIHBsYXRmb3JtLCAibWFjX3ZlciIsIGxhbWJkYTogKCIxMC4xNCIsICgiIiwg
IiIsICIiKSwgYXJjaCkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIodGFncywgIl9tYWNfYXJjaCIsIGxhbWJkYSAqYXJnczogYXJjaCkKKyAgICAgICAgYXNz
ZXJ0IG5leHQodGFncy5tYWNfcGxhdGZvcm1zKCgxMCwgMTQpKSkuZW5kc3dpdGgoYXJjaCkKKwor
ICAgIGRlZiB0ZXN0X21hY19wbGF0Zm9ybXMoc2VsZik6CisgICAgICAgIHBsYXRmb3JtcyA9IGxp
c3QodGFncy5tYWNfcGxhdGZvcm1zKCgxMCwgNSksICJ4ODZfNjQiKSkKKyAgICAgICAgYXNzZXJ0
IHBsYXRmb3JtcyA9PSBbCisgICAgICAgICAgICAibWFjb3N4XzEwXzVfeDg2XzY0IiwKKyAgICAg
ICAgICAgICJtYWNvc3hfMTBfNV9pbnRlbCIsCisgICAgICAgICAgICAibWFjb3N4XzEwXzVfZmF0
NjQiLAorICAgICAgICAgICAgIm1hY29zeF8xMF81X2ZhdDMyIiwKKyAgICAgICAgICAgICJtYWNv
c3hfMTBfNV91bml2ZXJzYWwyIiwKKyAgICAgICAgICAgICJtYWNvc3hfMTBfNV91bml2ZXJzYWwi
LAorICAgICAgICAgICAgIm1hY29zeF8xMF80X3g4Nl82NCIsCisgICAgICAgICAgICAibWFjb3N4
XzEwXzRfaW50ZWwiLAorICAgICAgICAgICAgIm1hY29zeF8xMF80X2ZhdDY0IiwKKyAgICAgICAg
ICAgICJtYWNvc3hfMTBfNF9mYXQzMiIsCisgICAgICAgICAgICAibWFjb3N4XzEwXzRfdW5pdmVy
c2FsMiIsCisgICAgICAgICAgICAibWFjb3N4XzEwXzRfdW5pdmVyc2FsIiwKKyAgICAgICAgXQor
CisgICAgICAgIGFzc2VydCBsZW4obGlzdCh0YWdzLm1hY19wbGF0Zm9ybXMoKDEwLCAxNyksICJ4
ODZfNjQiKSkpID09IDE0ICogNgorCisgICAgICAgIGFzc2VydCBub3QgbGlzdCh0YWdzLm1hY19w
bGF0Zm9ybXMoKDEwLCAwKSwgIng4Nl82NCIpKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJtYWpvcixtaW5vciIsIFsoMTEsIDApLCAoMTEsIDMpLCAoMTIsIDApLCAoMTIsIDMpXSkK
KyAgICBkZWYgdGVzdF9tYWNvc18xMShzZWxmLCBtYWpvciwgbWlub3IpOgorICAgICAgICBwbGF0
Zm9ybXMgPSBsaXN0KHRhZ3MubWFjX3BsYXRmb3JtcygobWFqb3IsIG1pbm9yKSwgIng4Nl82NCIp
KQorICAgICAgICBhc3NlcnQgIm1hY29zeF8xMV8wX2FybTY0IiBub3QgaW4gcGxhdGZvcm1zCisg
ICAgICAgIGFzc2VydCAibWFjb3N4XzExXzBfeDg2XzY0IiBpbiBwbGF0Zm9ybXMKKyAgICAgICAg
YXNzZXJ0ICJtYWNvc3hfMTFfM194ODZfNjQiIG5vdCBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNz
ZXJ0ICJtYWNvc3hfMTFfMF91bml2ZXJzYWwiIGluIHBsYXRmb3JtcworICAgICAgICBhc3NlcnQg
Im1hY29zeF8xMV8wX3VuaXZlcnNhbDIiIGluIHBsYXRmb3JtcworICAgICAgICAjIE1hYyBPUyAi
MTAuMTYiIGlzIHRoZSB2ZXJzaW9uIG51bWJlciB0aGF0IGJpbmFyaWVzIGNvbXBpbGVkIGFnYWlu
c3QgYW4gb2xkCisgICAgICAgICMgKHByZSAxMS4wKSBTREsgd2lsbCBzZWUuICAgSXQgY2FuIGFs
c28gYmUgZW5hYmxlZCBleHBsaWNpdGx5IGZvciBhIHByb2Nlc3MKKyAgICAgICAgIyB3aXRoIHRo
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBTWVNURU1fVkVSU0lPTl9DT01QQVQ9MS4KKyAgICAgICAg
YXNzZXJ0ICJtYWNvc3hfMTBfMTZfeDg2XzY0IiBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0
ICJtYWNvc3hfMTBfMTVfeDg2XzY0IiBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNzZXJ0ICJtYWNv
c3hfMTBfNF94ODZfNjQiIGluIHBsYXRmb3JtcworICAgICAgICBhc3NlcnQgIm1hY29zeF8xMF8z
X3g4Nl82NCIgbm90IGluIHBsYXRmb3JtcworICAgICAgICBpZiBtYWpvciA+PSAxMjoKKyAgICAg
ICAgICAgIGFzc2VydCAibWFjb3N4XzEyXzBfeDg2XzY0IiBpbiBwbGF0Zm9ybXMKKyAgICAgICAg
ICAgIGFzc2VydCAibWFjb3N4XzEyXzBfdW5pdmVyc2FsIiBpbiBwbGF0Zm9ybXMKKyAgICAgICAg
ICAgIGFzc2VydCAibWFjb3N4XzEyXzBfdW5pdmVyc2FsMiIgaW4gcGxhdGZvcm1zCisKKyAgICAg
ICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLm1hY19wbGF0Zm9ybXMoKG1ham9yLCBtaW5vciksICJh
cm02NCIpKQorICAgICAgICBhc3NlcnQgIm1hY29zeF8xMV8wX2FybTY0IiBpbiBwbGF0Zm9ybXMK
KyAgICAgICAgYXNzZXJ0ICJtYWNvc3hfMTFfM19hcm02NCIgbm90IGluIHBsYXRmb3JtcworICAg
ICAgICBhc3NlcnQgIm1hY29zeF8xMV8wX3VuaXZlcnNhbCIgbm90IGluIHBsYXRmb3JtcworICAg
ICAgICBhc3NlcnQgIm1hY29zeF8xMV8wX3VuaXZlcnNhbDIiIGluIHBsYXRmb3JtcworICAgICAg
ICBhc3NlcnQgIm1hY29zeF8xMF8xNV94ODZfNjQiIG5vdCBpbiBwbGF0Zm9ybXMKKyAgICAgICAg
YXNzZXJ0ICJtYWNvc3hfMTBfNF94ODZfNjQiIG5vdCBpbiBwbGF0Zm9ybXMKKyAgICAgICAgYXNz
ZXJ0ICJtYWNvc3hfMTBfM194ODZfNjQiIG5vdCBpbiBwbGF0Zm9ybXMKKyAgICAgICAgaWYgbWFq
b3IgPj0gMTI6CisgICAgICAgICAgICBhc3NlcnQgIm1hY29zeF8xMl8wX2FybTY0IiBpbiBwbGF0
Zm9ybXMKKyAgICAgICAgICAgIGFzc2VydCAibWFjb3N4XzEyXzBfdW5pdmVyc2FsMiIgaW4gcGxh
dGZvcm1zCisKKworY2xhc3MgVGVzdE1hbnlsaW51eFBsYXRmb3JtOgorICAgIGRlZiB0ZWFyZG93
bl9tZXRob2Qoc2VsZik6CisgICAgICAgICMgQ2xlYXIgdGhlIHZlcnNpb24gY2FjaGUKKyAgICAg
ICAgdGFncy5fZ2xpYmNfdmVyc2lvbiA9IFtdCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoInRmIiwgKFRydWUsIEZhbHNlKSkKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisg
ICAgICAgICJhdHRyaWJ1dGUsZ2xpYmMiLCAoKCIxIiwgKDIsIDUpKSwgKCIyMDEwIiwgKDIsIDEy
KSksICgiMjAxNCIsICgyLCAxNykpKQorICAgICkKKyAgICBkZWYgdGVzdF9tb2R1bGVfZGVjbGFy
YXRpb24oCisgICAgICAgIHNlbGYsIG1vbmtleXBhdGNoLCBtYW55bGludXhfbW9kdWxlLCBhdHRy
aWJ1dGUsIGdsaWJjLCB0ZgorICAgICk6CisgICAgICAgIG1hbnlsaW51eCA9ICJtYW55bGludXh7
fV9jb21wYXRpYmxlIi5mb3JtYXQoYXR0cmlidXRlKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKG1hbnlsaW51eF9tb2R1bGUsIG1hbnlsaW51eCwgdGYsIHJhaXNpbmc9RmFsc2UpCisgICAg
ICAgIHJlcyA9IHRhZ3MuX2lzX21hbnlsaW51eF9jb21wYXRpYmxlKG1hbnlsaW51eCwgIng4Nl82
NCIsIGdsaWJjKQorICAgICAgICBhc3NlcnQgdGYgaXMgcmVzCisKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoCisgICAgICAgICJhdHRyaWJ1dGUsZ2xpYmMiLCAoKCIxIiwgKDIsIDUpKSwg
KCIyMDEwIiwgKDIsIDEyKSksICgiMjAxNCIsICgyLCAxNykpKQorICAgICkKKyAgICBkZWYgdGVz
dF9tb2R1bGVfZGVjbGFyYXRpb25fbWlzc2luZ19hdHRyaWJ1dGUoCisgICAgICAgIHNlbGYsIG1v
bmtleXBhdGNoLCBtYW55bGludXhfbW9kdWxlLCBhdHRyaWJ1dGUsIGdsaWJjCisgICAgKToKKyAg
ICAgICAgbWFueWxpbnV4ID0gIm1hbnlsaW51eHt9X2NvbXBhdGlibGUiLmZvcm1hdChhdHRyaWJ1
dGUpCisgICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIobWFueWxpbnV4X21vZHVsZSwgbWFueWxp
bnV4LCByYWlzaW5nPUZhbHNlKQorICAgICAgICBhc3NlcnQgdGFncy5faXNfbWFueWxpbnV4X2Nv
bXBhdGlibGUobWFueWxpbnV4LCAieDg2XzY0IiwgZ2xpYmMpCisKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoCisgICAgICAgICJ2ZXJzaW9uLGNvbXBhdGlibGUiLCAoKCgyLCAwKSwgVHJ1
ZSksICgoMiwgNSksIFRydWUpLCAoKDIsIDEwKSwgRmFsc2UpKQorICAgICkKKyAgICBkZWYgdGVz
dF9pc19tYW55bGludXhfY29tcGF0aWJsZV9nbGliY19zdXBwb3J0KAorICAgICAgICBzZWxmLCB2
ZXJzaW9uLCBjb21wYXRpYmxlLCBtb25rZXlwYXRjaAorICAgICk6CisgICAgICAgIG1vbmtleXBh
dGNoLnNldGl0ZW0oc3lzLm1vZHVsZXMsICJfbWFueWxpbnV4IiwgTm9uZSkKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2dldF9nbGliY192ZXJzaW9uIiwgbGFtYmRhOiAoMiwg
NSkpCisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICBib29sKHRhZ3MuX2lzX21hbnlsaW51
eF9jb21wYXRpYmxlKCJtYW55bGludXgxIiwgImFueSIsIHZlcnNpb24pKQorICAgICAgICAgICAg
PT0gY29tcGF0aWJsZQorICAgICAgICApCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
InZlcnNpb25fc3RyIiwgWyJnbGliYy0yLjQuNSIsICIyIl0pCisgICAgZGVmIHRlc3RfY2hlY2tf
Z2xpYmNfdmVyc2lvbl93YXJuaW5nKHNlbGYsIHZlcnNpb25fc3RyKToKKyAgICAgICAgd2l0aCB3
YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHRh
Z3MuX3BhcnNlX2dsaWJjX3ZlcnNpb24odmVyc2lvbl9zdHIpCisgICAgICAgICAgICBhc3NlcnQg
bGVuKHcpID09IDEKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnks
IFJ1bnRpbWVXYXJuaW5nKQorCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZihub3QgY3R5cGVzLCBy
ZWFzb249InJlcXVpcmVzIGN0eXBlcyIpCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAor
ICAgICAgICAidmVyc2lvbl9zdHIsZXhwZWN0ZWQiLAorICAgICAgICBbCisgICAgICAgICAgICAj
IEJlIHZlcnkgZXhwbGljaXQgYWJvdXQgYnl0ZXMgYW5kIFVuaWNvZGUgZm9yIFB5dGhvbiAyIHRl
c3RpbmcuCisgICAgICAgICAgICAoYiIyLjQiLCAiMi40IiksCisgICAgICAgICAgICAodSIyLjQi
LCAiMi40IiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2dsaWJjX3ZlcnNpb25f
c3RyaW5nKHNlbGYsIHZlcnNpb25fc3RyLCBleHBlY3RlZCwgbW9ua2V5cGF0Y2gpOgorICAgICAg
ICBjbGFzcyBMaWJjVmVyc2lvbjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJz
aW9uX3N0cik6CisgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uX3N0ciA9IHZlcnNpb25fc3Ry
CisKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmVyc2lvbl9zdHIKKworICAgICAgICBjbGFzcyBQcm9jZXNzTmFtZXNwYWNlOgorICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpYmNfdmVyc2lvbik6CisgICAgICAgICAgICAgICAg
c2VsZi5nbnVfZ2V0X2xpYmNfdmVyc2lvbiA9IGxpYmNfdmVyc2lvbgorCisgICAgICAgIHByb2Nl
c3NfbmFtZXNwYWNlID0gUHJvY2Vzc05hbWVzcGFjZShMaWJjVmVyc2lvbih2ZXJzaW9uX3N0cikp
CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoY3R5cGVzLCAiQ0RMTCIsIGxhbWJkYSBfOiBw
cm9jZXNzX25hbWVzcGFjZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2ds
aWJjX3ZlcnNpb25fc3RyaW5nX2NvbmZzdHIiLCBsYW1iZGE6IEZhbHNlKQorCisgICAgICAgIGFz
c2VydCB0YWdzLl9nbGliY192ZXJzaW9uX3N0cmluZygpID09IGV4cGVjdGVkCisKKyAgICAgICAg
ZGVsIHByb2Nlc3NfbmFtZXNwYWNlLmdudV9nZXRfbGliY192ZXJzaW9uCisgICAgICAgIGFzc2Vy
dCB0YWdzLl9nbGliY192ZXJzaW9uX3N0cmluZygpIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X2ds
aWJjX3ZlcnNpb25fc3RyaW5nX2NvbmZzdHIoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKG9zLCAiY29uZnN0ciIsIGxhbWJkYSB4OiAiZ2xpYmMgMi4yMCIs
IHJhaXNpbmc9RmFsc2UpCisgICAgICAgIGFzc2VydCB0YWdzLl9nbGliY192ZXJzaW9uX3N0cmlu
Z19jb25mc3RyKCkgPT0gIjIuMjAiCisKKyAgICBkZWYgdGVzdF9nbGliY192ZXJzaW9uX3N0cmlu
Z19mYWlsKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihv
cywgImNvbmZzdHIiLCBsYW1iZGEgeDogTm9uZSwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0aXRlbShzeXMubW9kdWxlcywgImN0eXBlcyIsIE5vbmUpCisgICAgICAgIGFz
c2VydCB0YWdzLl9nbGliY192ZXJzaW9uX3N0cmluZygpIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0
IHRhZ3MuX2dldF9nbGliY192ZXJzaW9uKCkgPT0gKC0xLCAtMSkKKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImZhaWx1cmUiLAorICAgICAgICBbcHJldGVuZC5yYWlz
ZXIoVmFsdWVFcnJvciksIHByZXRlbmQucmFpc2VyKE9TRXJyb3IpLCBsYW1iZGEgeDogIlhYWCJd
LAorICAgICkKKyAgICBkZWYgdGVzdF9nbGliY192ZXJzaW9uX3N0cmluZ19jb25mc3RyX2ZhaWwo
c2VsZiwgbW9ua2V5cGF0Y2gsIGZhaWx1cmUpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRy
KG9zLCAiY29uZnN0ciIsIGZhaWx1cmUsIHJhaXNpbmc9RmFsc2UpCisgICAgICAgIGFzc2VydCB0
YWdzLl9nbGliY192ZXJzaW9uX3N0cmluZ19jb25mc3RyKCkgaXMgTm9uZQorCisgICAgZGVmIHRl
c3RfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cl9taXNzaW5nKHNlbGYsIG1vbmtleXBhdGNo
KToKKyAgICAgICAgbW9ua2V5cGF0Y2guZGVsYXR0cihvcywgImNvbmZzdHIiLCByYWlzaW5nPUZh
bHNlKQorICAgICAgICBhc3NlcnQgdGFncy5fZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cigp
IGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X2dsaWJjX3ZlcnNpb25fc3RyaW5nX2N0eXBlc19taXNz
aW5nKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShzeXMu
bW9kdWxlcywgImN0eXBlcyIsIE5vbmUpCisgICAgICAgIGFzc2VydCB0YWdzLl9nbGliY192ZXJz
aW9uX3N0cmluZ19jdHlwZXMoKSBpcyBOb25lCisKKyAgICBkZWYgdGVzdF9nbGliY192ZXJzaW9u
X3N0cmluZ19jdHlwZXNfcmFpc2Vfb3NlcnJvcihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAg
IGRlZiBwYXRjaGVkX2NkbGwobmFtZSk6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJEeW5h
bWljIGxvYWRpbmcgbm90IHN1cHBvcnRlZCIpCisKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cihjdHlwZXMsICJDRExMIiwgcGF0Y2hlZF9jZGxsKQorICAgICAgICBhc3NlcnQgdGFncy5fZ2xp
YmNfdmVyc2lvbl9zdHJpbmdfY3R5cGVzKCkgaXMgTm9uZQorCisgICAgZGVmIHRlc3RfZ2V0X2Nv
bmZpZ192YXJfZG9lc19ub3RfbG9nKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgZGVidWcg
PSBwcmV0ZW5kLmNhbGxfcmVjb3JkZXIobGFtYmRhICphOiBOb25lKQorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKHRhZ3MubG9nZ2VyLCAiZGVidWciLCBkZWJ1ZykKKyAgICAgICAgdGFncy5f
Z2V0X2NvbmZpZ192YXIoIm1pc3NpbmciKQorICAgICAgICBhc3NlcnQgZGVidWcuY2FsbHMgPT0g
W10KKworICAgIGRlZiB0ZXN0X2dldF9jb25maWdfdmFyX2RvZXNfbG9nKHNlbGYsIG1vbmtleXBh
dGNoKToKKyAgICAgICAgZGVidWcgPSBwcmV0ZW5kLmNhbGxfcmVjb3JkZXIobGFtYmRhICphOiBO
b25lKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MubG9nZ2VyLCAiZGVidWciLCBk
ZWJ1ZykKKyAgICAgICAgdGFncy5fZ2V0X2NvbmZpZ192YXIoIm1pc3NpbmciLCB3YXJuPVRydWUp
CisgICAgICAgIGFzc2VydCBkZWJ1Zy5jYWxscyA9PSBbCisgICAgICAgICAgICBwcmV0ZW5kLmNh
bGwoCisgICAgICAgICAgICAgICAgIkNvbmZpZyB2YXJpYWJsZSAnJXMnIGlzIHVuc2V0LCBQeXRo
b24gQUJJIHRhZyBtYXkgYmUgaW5jb3JyZWN0IiwKKyAgICAgICAgICAgICAgICAibWlzc2luZyIs
CisgICAgICAgICAgICApCisgICAgICAgIF0KKworICAgIEBweXRlc3QubWFyay5za2lwaWYocGxh
dGZvcm0uc3lzdGVtKCkgIT0gIkxpbnV4IiwgcmVhc29uPSJyZXF1aXJlcyBMaW51eCIpCisgICAg
ZGVmIHRlc3RfaXNfbWFueWxpbnV4X2NvbXBhdGlibGVfb2xkKHNlbGYpOgorICAgICAgICAjIEFz
c3VtaW5nIG5vIG9uZSBpcyBydW5uaW5nIHRoaXMgdGVzdCB3aXRoIGEgdmVyc2lvbiBvZiBnbGli
YyByZWxlYXNlZCBpbgorICAgICAgICAjIDE5OTcuCisgICAgICAgIGFzc2VydCB0YWdzLl9pc19t
YW55bGludXhfY29tcGF0aWJsZSgiYW55IiwgImFueSIsICgyLCAwKSkKKworICAgIGRlZiB0ZXN0
X2lzX21hbnlsaW51eF9jb21wYXRpYmxlKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2dsaWJjX3ZlcnNpb25fc3RyaW5nIiwgbGFtYmRhOiAi
Mi40IikKKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2lzX21hbnlsaW51eF9jb21wYXRpYmxlKCIiLCAi
YW55IiwgKDIsIDQpKQorCisgICAgZGVmIHRlc3RfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfbm9uZShz
ZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9n
bGliY192ZXJzaW9uX3N0cmluZyIsIGxhbWJkYTogTm9uZSkKKyAgICAgICAgYXNzZXJ0IG5vdCB0
YWdzLl9pc19tYW55bGludXhfY29tcGF0aWJsZSgiYW55IiwgImFueSIsICgyLCA0KSkKKworICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImFyY2gsaXNfMzJiaXQsZXhwZWN0
ZWQiLAorICAgICAgICBbCisgICAgICAgICAgICAoImxpbnV4LXg4Nl82NCIsIEZhbHNlLCAibGlu
dXhfeDg2XzY0IiksCisgICAgICAgICAgICAoImxpbnV4LXg4Nl82NCIsIFRydWUsICJsaW51eF9p
Njg2IiksCisgICAgICAgICAgICAoImxpbnV4LWFhcmNoNjQiLCBGYWxzZSwgImxpbnV4X2FhcmNo
NjQiKSwKKyAgICAgICAgICAgICgibGludXgtYWFyY2g2NCIsIFRydWUsICJsaW51eF9hcm12N2wi
KSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfbGludXhfcGxhdGZvcm1zXzMyXzY0
Yml0X29uXzY0Yml0X29zKAorICAgICAgICBzZWxmLCBhcmNoLCBpc18zMmJpdCwgZXhwZWN0ZWQs
IG1vbmtleXBhdGNoCisgICAgKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihkaXN0dXRp
bHMudXRpbCwgImdldF9wbGF0Zm9ybSIsIGxhbWJkYTogYXJjaCkKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cihvcywgImNvbmZzdHIiLCBsYW1iZGEgeDogImdsaWJjIDIuMjAiLCByYWlzaW5n
PUZhbHNlKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfaXNfbWFueWxpbnV4
X2NvbXBhdGlibGUiLCBsYW1iZGEgKmFyZ3M6IEZhbHNlKQorICAgICAgICBsaW51eF9wbGF0Zm9y
bSA9IGxpc3QodGFncy5fbGludXhfcGxhdGZvcm1zKGlzXzMyYml0PWlzXzMyYml0KSlbLTFdCisg
ICAgICAgIGFzc2VydCBsaW51eF9wbGF0Zm9ybSA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3Rf
bGludXhfcGxhdGZvcm1zX21hbnlsaW51eF91bnN1cHBvcnRlZChzZWxmLCBtb25rZXlwYXRjaCk6
CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZv
cm0iLCBsYW1iZGE6ICJsaW51eF94ODZfNjQiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRy
KG9zLCAiY29uZnN0ciIsIGxhbWJkYSB4OiAiZ2xpYmMgMi4yMCIsIHJhaXNpbmc9RmFsc2UpCisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9pc19tYW55bGludXhfY29tcGF0aWJs
ZSIsIGxhbWJkYSAqYXJnczogRmFsc2UpCisgICAgICAgIGxpbnV4X3BsYXRmb3JtID0gbGlzdCh0
YWdzLl9saW51eF9wbGF0Zm9ybXMoaXNfMzJiaXQ9RmFsc2UpKQorICAgICAgICBhc3NlcnQgbGlu
dXhfcGxhdGZvcm0gPT0gWyJsaW51eF94ODZfNjQiXQorCisgICAgZGVmIHRlc3RfbGludXhfcGxh
dGZvcm1zX21hbnlsaW51eDEoc2VsZiwgaXNfeDg2LCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1v
bmtleXBhdGNoLnNldGF0dHIoCisgICAgICAgICAgICB0YWdzLCAiX2lzX21hbnlsaW51eF9jb21w
YXRpYmxlIiwgbGFtYmRhIG5hbWUsICphcmdzOiBuYW1lID09ICJtYW55bGludXgxIgorICAgICAg
ICApCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxh
dGZvcm0iLCBsYW1iZGE6ICJsaW51eF94ODZfNjQiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKHBsYXRmb3JtLCAibWFjaGluZSIsIGxhbWJkYTogIng4Nl82NCIpCisgICAgICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIob3MsICJjb25mc3RyIiwgbGFtYmRhIHg6ICJnbGliYyAyLjIwIiwgcmFp
c2luZz1GYWxzZSkKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9wbGF0Zm9y
bXMoaXNfMzJiaXQ9RmFsc2UpKQorICAgICAgICBhcmNoID0gcGxhdGZvcm0ubWFjaGluZSgpCisg
ICAgICAgIGFzc2VydCBwbGF0Zm9ybXMgPT0gWyJtYW55bGludXgxXyIgKyBhcmNoLCAibGludXhf
IiArIGFyY2hdCisKKyAgICBkZWYgdGVzdF9saW51eF9wbGF0Zm9ybXNfbWFueWxpbnV4MjAxMChz
ZWxmLCBpc194ODYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihk
aXN0dXRpbHMudXRpbCwgImdldF9wbGF0Zm9ybSIsIGxhbWJkYTogImxpbnV4X3g4Nl82NCIpCisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0sICJtYWNoaW5lIiwgbGFtYmRhOiAi
eDg2XzY0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvcywgImNvbmZzdHIiLCBsYW1i
ZGEgeDogImdsaWJjIDIuMTIiLCByYWlzaW5nPUZhbHNlKQorICAgICAgICBwbGF0Zm9ybXMgPSBs
aXN0KHRhZ3MuX2xpbnV4X3BsYXRmb3Jtcyhpc18zMmJpdD1GYWxzZSkpCisgICAgICAgIGFyY2gg
PSBwbGF0Zm9ybS5tYWNoaW5lKCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAi
bWFueWxpbnV4XzJfMTJfIiArIGFyY2gsCisgICAgICAgICAgICAibWFueWxpbnV4MjAxMF8iICsg
YXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xMV8iICsgYXJjaCwKKyAgICAgICAgICAg
ICJtYW55bGludXhfMl8xMF8iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl85XyIg
KyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzhfIiArIGFyY2gsCisgICAgICAgICAg
ICAibWFueWxpbnV4XzJfN18iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl82XyIg
KyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzVfIiArIGFyY2gsCisgICAgICAgICAg
ICAibWFueWxpbnV4MV8iICsgYXJjaCwKKyAgICAgICAgICAgICJsaW51eF8iICsgYXJjaCwKKyAg
ICAgICAgXQorICAgICAgICBhc3NlcnQgcGxhdGZvcm1zID09IGV4cGVjdGVkCisKKyAgICBkZWYg
dGVzdF9saW51eF9wbGF0Zm9ybXNfbWFueWxpbnV4MjAxNChzZWxmLCBpc194ODYsIG1vbmtleXBh
dGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihkaXN0dXRpbHMudXRpbCwgImdldF9w
bGF0Zm9ybSIsIGxhbWJkYTogImxpbnV4X3g4Nl82NCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIocGxhdGZvcm0sICJtYWNoaW5lIiwgbGFtYmRhOiAieDg2XzY0IikKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cihvcywgImNvbmZzdHIiLCBsYW1iZGEgeDogImdsaWJjIDIuMTciLCBy
YWlzaW5nPUZhbHNlKQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRm
b3Jtcyhpc18zMmJpdD1GYWxzZSkpCisgICAgICAgIGFyY2ggPSBwbGF0Zm9ybS5tYWNoaW5lKCkK
KyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAibWFueWxpbnV4XzJfMTdfIiArIGFy
Y2gsCisgICAgICAgICAgICAibWFueWxpbnV4MjAxNF8iICsgYXJjaCwKKyAgICAgICAgICAgICJt
YW55bGludXhfMl8xNl8iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xNV8iICsg
YXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xNF8iICsgYXJjaCwKKyAgICAgICAgICAg
ICJtYW55bGludXhfMl8xM18iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xMl8i
ICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXgyMDEwXyIgKyBhcmNoLAorICAgICAgICAg
ICAgIm1hbnlsaW51eF8yXzExXyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzEw
XyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzlfIiArIGFyY2gsCisgICAgICAg
ICAgICAibWFueWxpbnV4XzJfOF8iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXhfMl83
XyIgKyBhcmNoLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzZfIiArIGFyY2gsCisgICAgICAg
ICAgICAibWFueWxpbnV4XzJfNV8iICsgYXJjaCwKKyAgICAgICAgICAgICJtYW55bGludXgxXyIg
KyBhcmNoLAorICAgICAgICAgICAgImxpbnV4XyIgKyBhcmNoLAorICAgICAgICBdCisgICAgICAg
IGFzc2VydCBwbGF0Zm9ybXMgPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRm
b3Jtc19tYW55bGludXgyMDE0X2FybWhmX2FiaShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9nbGliY192ZXJzaW9uX3N0cmluZyIsIGxhbWJk
YTogIjIuMzAiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgdGFn
cywKKyAgICAgICAgICAgICJfaXNfbWFueWxpbnV4X2NvbXBhdGlibGUiLAorICAgICAgICAgICAg
bGFtYmRhIG5hbWUsICphcmdzOiBuYW1lID09ICJtYW55bGludXgyMDE0IiwKKyAgICAgICAgKQor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3Jt
IiwgbGFtYmRhOiAibGludXhfYXJtdjdsIikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigK
KyAgICAgICAgICAgIHN5cywKKyAgICAgICAgICAgICJleGVjdXRhYmxlIiwKKyAgICAgICAgICAg
IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiaGVsbG8td29ybGQtYXJt
djdsLWFybWhmIiksCisgICAgICAgICkKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9s
aW51eF9wbGF0Zm9ybXMoaXNfMzJiaXQ9VHJ1ZSkpCisgICAgICAgIGV4cGVjdGVkID0gWyJtYW55
bGludXgyMDE0X2FybXY3bCIsICJsaW51eF9hcm12N2wiXQorICAgICAgICBhc3NlcnQgcGxhdGZv
cm1zID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF9saW51eF9wbGF0Zm9ybXNfbWFueWxpbnV4
MjAxNF9pMzg2X2FiaShzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIodGFncywgIl9nbGliY192ZXJzaW9uX3N0cmluZyIsIGxhbWJkYTogIjIuMTciKQorICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGlsLCAiZ2V0X3BsYXRmb3JtIiwg
bGFtYmRhOiAibGludXhfeDg2XzY0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAg
ICAgICAgICAgIHN5cywKKyAgICAgICAgICAgICJleGVjdXRhYmxlIiwKKyAgICAgICAgICAgIG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiaGVsbG8td29ybGQteDg2XzY0
LWkzODYiKSwKKyAgICAgICAgKQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4
X3BsYXRmb3Jtcyhpc18zMmJpdD1UcnVlKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAg
ICAgICAibWFueWxpbnV4XzJfMTdfaTY4NiIsCisgICAgICAgICAgICAibWFueWxpbnV4MjAxNF9p
Njg2IiwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xNl9pNjg2IiwKKyAgICAgICAgICAgICJt
YW55bGludXhfMl8xNV9pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8xNF9pNjg2IiwK
KyAgICAgICAgICAgICJtYW55bGludXhfMl8xM19pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGlu
dXhfMl8xMl9pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGludXgyMDEwX2k2ODYiLAorICAgICAg
ICAgICAgIm1hbnlsaW51eF8yXzExX2k2ODYiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzEw
X2k2ODYiLAorICAgICAgICAgICAgIm1hbnlsaW51eF8yXzlfaTY4NiIsCisgICAgICAgICAgICAi
bWFueWxpbnV4XzJfOF9pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGludXhfMl83X2k2ODYiLAor
ICAgICAgICAgICAgIm1hbnlsaW51eF8yXzZfaTY4NiIsCisgICAgICAgICAgICAibWFueWxpbnV4
XzJfNV9pNjg2IiwKKyAgICAgICAgICAgICJtYW55bGludXgxX2k2ODYiLAorICAgICAgICAgICAg
ImxpbnV4X2k2ODYiLAorICAgICAgICBdCisgICAgICAgIGFzc2VydCBwbGF0Zm9ybXMgPT0gZXhw
ZWN0ZWQKKworICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRmb3Jtc19tYW55bGludXhfZ2xpYmMzKHNl
bGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgIyB0ZXN0IGZvciBhIGZ1dHVyZSBnbGljIDMueCB2
ZXJzaW9uCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9nbGliY192ZXJzaW9u
X3N0cmluZyIsIGxhbWJkYTogIjMuMiIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFn
cywgIl9pc19tYW55bGludXhfY29tcGF0aWJsZSIsIGxhbWJkYSBuYW1lLCAqYXJnczogVHJ1ZSkK
KyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihkaXN0dXRpbHMudXRpbCwgImdldF9wbGF0Zm9y
bSIsIGxhbWJkYTogImxpbnV4X2FhcmNoNjQiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRy
KAorICAgICAgICAgICAgc3lzLAorICAgICAgICAgICAgImV4ZWN1dGFibGUiLAorICAgICAgICAg
ICAgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJoZWxsby13b3JsZC1h
YXJjaDY0IiksCisgICAgICAgICkKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51
eF9wbGF0Zm9ybXMoaXNfMzJiaXQ9RmFsc2UpKQorICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAg
ICAgICAgIFsibWFueWxpbnV4XzNfMl9hYXJjaDY0IiwgIm1hbnlsaW51eF8zXzFfYWFyY2g2NCIs
ICJtYW55bGludXhfM18wX2FhcmNoNjQiXQorICAgICAgICAgICAgKyBbIm1hbnlsaW51eF8yX3t9
X2FhcmNoNjQiLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSg1MCwgMTYsIC0xKV0KKyAgICAgICAg
ICAgICsgWyJtYW55bGludXgyMDE0X2FhcmNoNjQiLCAibGludXhfYWFyY2g2NCJdCisgICAgICAg
ICkKKyAgICAgICAgYXNzZXJ0IHBsYXRmb3JtcyA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3Rf
bGludXhfcGxhdGZvcm1zX21hbnlsaW51eDIwMTRfYXJtdjZsKHNlbGYsIG1vbmtleXBhdGNoKToK
KyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIHRhZ3MsICJfaXNfbWFu
eWxpbnV4X2NvbXBhdGlibGUiLCBsYW1iZGEgbmFtZSwgXzogbmFtZSA9PSAibWFueWxpbnV4MjAx
NCIKKyAgICAgICAgKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGRpc3R1dGlscy51dGls
LCAiZ2V0X3BsYXRmb3JtIiwgbGFtYmRhOiAibGludXhfYXJtdjZsIikKKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cihvcywgImNvbmZzdHIiLCBsYW1iZGEgeDogImdsaWJjIDIuMjAiLCByYWlz
aW5nPUZhbHNlKQorICAgICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2xpbnV4X3BsYXRmb3Jt
cyhpc18zMmJpdD1UcnVlKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbImxpbnV4X2FybXY2bCJdCisg
ICAgICAgIGFzc2VydCBwbGF0Zm9ybXMgPT0gZXhwZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgKKyAgICAgICAgIm1hY2hpbmUsIGFiaSwgYWx0X21hY2hpbmUiLAorICAgICAg
ICBbKCJ4ODZfNjQiLCAieDMyIiwgImk2ODYiKSwgKCJhcm12N2wiLCAiYXJtZWwiLCAiYXJtdjds
IildLAorICAgICkKKyAgICBkZWYgdGVzdF9saW51eF9wbGF0Zm9ybXNfbm90X21hbnlsaW51eF9h
YmkoCisgICAgICAgIHNlbGYsIG1vbmtleXBhdGNoLCBtYWNoaW5lLCBhYmksIGFsdF9tYWNoaW5l
CisgICAgKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2lzX21hbnlsaW51
eF9jb21wYXRpYmxlIiwgbGFtYmRhIG5hbWUsIF86IEZhbHNlKQorICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKAorICAgICAgICAgICAgZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZvcm0iLCBs
YW1iZGE6ICJsaW51eF97fSIuZm9ybWF0KG1hY2hpbmUpCisgICAgICAgICkKKyAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIHN5cywKKyAgICAgICAgICAgICJleGVjdXRh
YmxlIiwKKyAgICAgICAgICAgIG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICBvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAiaGVsbG8td29ybGQte30te30iLmZvcm1hdChtYWNoaW5lLCBh
YmkpCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3Qo
dGFncy5fbGludXhfcGxhdGZvcm1zKGlzXzMyYml0PVRydWUpKQorICAgICAgICBleHBlY3RlZCA9
IFsibGludXhfe30iLmZvcm1hdChhbHRfbWFjaGluZSldCisgICAgICAgIGFzc2VydCBwbGF0Zm9y
bXMgPT0gZXhwZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAg
Im1hY2hpbmUsIGFiaSwgZWxmX2NsYXNzLCBlbGZfZGF0YSwgZWxmX21hY2hpbmUiLAorICAgICAg
ICBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgIng4Nl82NCIsCisgICAgICAgICAg
ICAgICAgIngzMiIsCisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZDTEFT
UzMyLAorICAgICAgICAgICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxGREFUQTJMU0IsCisg
ICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTV9YODZfNjQsCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICJ4ODZfNjQiLAorICAgICAgICAg
ICAgICAgICJpMzg2IiwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVMRkNM
QVNTMzIsCisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZEQVRBMkxTQiwK
KyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVNXzM4NiwKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgIng4Nl82NCIsCisgICAgICAgICAg
ICAgICAgImFtZDY0IiwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVMRkNM
QVNTNjQsCisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZEQVRBMkxTQiwK
KyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVNX1g4Nl82NCwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgImFybXY3bCIsCisgICAgICAg
ICAgICAgICAgImFybWVsIiwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVM
RkNMQVNTMzIsCisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZEQVRBMkxT
QiwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVNX0FSTSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgImFybXY3bCIsCisgICAgICAg
ICAgICAgICAgImFybWhmIiwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVM
RkNMQVNTMzIsCisgICAgICAgICAgICAgICAgdGFncy5fRUxGRmlsZUhlYWRlci5FTEZEQVRBMkxT
QiwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVNX0FSTSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgInMzOTB4IiwKKyAgICAgICAg
ICAgICAgICAiczM5MHgiLAorICAgICAgICAgICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRUxG
Q0xBU1M2NCwKKyAgICAgICAgICAgICAgICB0YWdzLl9FTEZGaWxlSGVhZGVyLkVMRkRBVEEyTVNC
LAorICAgICAgICAgICAgICAgIHRhZ3MuX0VMRkZpbGVIZWFkZXIuRU1fUzM5MCwKKyAgICAgICAg
ICAgICksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2dldF9lbGZfaGVhZGVyKAor
ICAgICAgICBzZWxmLCBtb25rZXlwYXRjaCwgbWFjaGluZSwgYWJpLCBlbGZfY2xhc3MsIGVsZl9k
YXRhLCBlbGZfbWFjaGluZQorICAgICk6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oCisg
ICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiaGVsbG8td29ybGQte30te30i
LmZvcm1hdChtYWNoaW5lLCBhYmkpCisgICAgICAgICkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cihzeXMsICJleGVjdXRhYmxlIiwgcGF0aCkKKyAgICAgICAgZWxmX2hlYWRlciA9IHRhZ3Mu
X2dldF9lbGZfaGVhZGVyKCkKKyAgICAgICAgYXNzZXJ0IGVsZl9oZWFkZXIuZV9pZGVudF9jbGFz
cyA9PSBlbGZfY2xhc3MKKyAgICAgICAgYXNzZXJ0IGVsZl9oZWFkZXIuZV9pZGVudF9kYXRhID09
IGVsZl9kYXRhCisgICAgICAgIGFzc2VydCBlbGZfaGVhZGVyLmVfbWFjaGluZSA9PSBlbGZfbWFj
aGluZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiY29udGVudCIs
IFtOb25lLCAiaW52YWxpZC1tYWdpYyIsICJpbnZhbGlkLWNsYXNzIiwgImludmFsaWQtZGF0YSIs
ICJ0b28tc2hvcnQiXQorICAgICkKKyAgICBkZWYgdGVzdF9nZXRfZWxmX2hlYWRlcl9iYWRfZXhj
dXRhYmxlKHNlbGYsIG1vbmtleXBhdGNoLCBjb250ZW50KToKKyAgICAgICAgaWYgY29udGVudDoK
KyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAgICAgb3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgImhlbGxvLXdvcmxkLXt9Ii5mb3JtYXQoY29udGVudCkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhdGggPSBOb25lCisgICAg
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAiZXhlY3V0YWJsZSIsIHBhdGgpCisgICAgICAg
IGFzc2VydCB0YWdzLl9nZXRfZWxmX2hlYWRlcigpIGlzIE5vbmUKKworICAgIGRlZiB0ZXN0X2lz
X2xpbnV4X2FybWhmX25vdF9lbGYoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2V0X2VsZl9oZWFkZXIiLCBsYW1iZGE6IE5vbmUpCisgICAg
ICAgIGFzc2VydCBub3QgdGFncy5faXNfbGludXhfYXJtaGYoKQorCisgICAgZGVmIHRlc3RfaXNf
bGludXhfaTY4Nl9ub3RfZWxmKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cih0YWdzLCAiX2dldF9lbGZfaGVhZGVyIiwgbGFtYmRhOiBOb25lKQorICAgICAg
ICBhc3NlcnQgbm90IHRhZ3MuX2lzX2xpbnV4X2k2ODYoKQorCisKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgKKyAgICAicGxhdGZvcm1fbmFtZSxkaXNwYXRjaF9mdW5jIiwKKyAgICBbCisgICAg
ICAgICgiRGFyd2luIiwgIm1hY19wbGF0Zm9ybXMiKSwKKyAgICAgICAgKCJMaW51eCIsICJfbGlu
dXhfcGxhdGZvcm1zIiksCisgICAgICAgICgiR2VuZXJpYyIsICJfZ2VuZXJpY19wbGF0Zm9ybXMi
KSwKKyAgICBdLAorKQorZGVmIHRlc3RfX3BsYXRmb3JtX3RhZ3MocGxhdGZvcm1fbmFtZSwgZGlz
cGF0Y2hfZnVuYywgbW9ua2V5cGF0Y2gpOgorICAgIGV4cGVjdGVkID0gWyJzaWxseXdhbGsiXQor
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0sICJzeXN0ZW0iLCBsYW1iZGE6IHBsYXRm
b3JtX25hbWUpCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCBkaXNwYXRjaF9mdW5jLCBs
YW1iZGE6IGV4cGVjdGVkKQorICAgIGFzc2VydCB0YWdzLl9wbGF0Zm9ybV90YWdzKCkgPT0gZXhw
ZWN0ZWQKKworCitjbGFzcyBUZXN0Q1B5dGhvbkFCSToKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoCisgICAgICAgICJweV9kZWJ1ZyxnZXR0b3RhbHJlZmNvdW50LHJlc3VsdCIsCisgICAg
ICAgIFsoMSwgRmFsc2UsIFRydWUpLCAoMCwgRmFsc2UsIEZhbHNlKSwgKE5vbmUsIFRydWUsIFRy
dWUpXSwKKyAgICApCisgICAgZGVmIHRlc3RfZGVidWcoc2VsZiwgcHlfZGVidWcsIGdldHRvdGFs
cmVmY291bnQsIHJlc3VsdCwgbW9ua2V5cGF0Y2gpOgorICAgICAgICBjb25maWcgPSB7IlB5X0RF
QlVHIjogcHlfZGVidWcsICJXSVRIX1BZTUFMTE9DIjogMCwgIlB5X1VOSUNPREVfU0laRSI6IDJ9
CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzY29uZmlnLCAiZ2V0X2NvbmZpZ192YXIi
LCBjb25maWcuX19nZXRpdGVtX18pCisgICAgICAgIGlmIGdldHRvdGFscmVmY291bnQ6CisgICAg
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiLCAxLCBy
YWlzaW5nPUZhbHNlKQorICAgICAgICBleHBlY3RlZCA9IFsiY3AzN2QiIGlmIHJlc3VsdCBlbHNl
ICJjcDM3Il0KKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2NweXRob25fYWJpcygoMywgNykpID09IGV4
cGVjdGVkCisKKyAgICBkZWYgdGVzdF9kZWJ1Z19maWxlX2V4dGVuc2lvbihzZWxmLCBtb25rZXlw
YXRjaCk6CisgICAgICAgIGNvbmZpZyA9IHsiUHlfREVCVUciOiBOb25lfQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHN5c2NvbmZpZywgImdldF9jb25maWdfdmFyIiwgY29uZmlnLl9fZ2V0
aXRlbV9fKQorICAgICAgICBtb25rZXlwYXRjaC5kZWxhdHRyKHN5cywgImdldHRvdGFscmVmY291
bnQiLCByYWlzaW5nPUZhbHNlKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJF
WFRFTlNJT05fU1VGRklYRVMiLCB7Il9kLnB5ZCJ9KQorICAgICAgICBhc3NlcnQgdGFncy5fY3B5
dGhvbl9hYmlzKCgzLCA4KSkgPT0gWyJjcDM4ZCIsICJjcDM4Il0KKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImRlYnVnLGV4cGVjdGVkIiwgWyhUcnVlLCBbImNwMzhk
IiwgImNwMzgiXSksIChGYWxzZSwgWyJjcDM4Il0pXQorICAgICkKKyAgICBkZWYgdGVzdF9fZGVi
dWdfY3AzOChzZWxmLCBkZWJ1ZywgZXhwZWN0ZWQsIG1vbmtleXBhdGNoKToKKyAgICAgICAgY29u
ZmlnID0geyJQeV9ERUJVRyI6IGRlYnVnfQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5
c2NvbmZpZywgImdldF9jb25maWdfdmFyIiwgY29uZmlnLl9fZ2V0aXRlbV9fKQorICAgICAgICBh
c3NlcnQgdGFncy5fY3B5dGhvbl9hYmlzKCgzLCA4KSkgPT0gZXhwZWN0ZWQKKworICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInB5bWFsbG9jLHZlcnNpb24scmVzdWx0IiwK
KyAgICAgICAgWworICAgICAgICAgICAgKDEsICgzLCA3KSwgVHJ1ZSksCisgICAgICAgICAgICAo
MCwgKDMsIDcpLCBGYWxzZSksCisgICAgICAgICAgICAoTm9uZSwgKDMsIDcpLCBUcnVlKSwKKyAg
ICAgICAgICAgICgxLCAoMywgOCksIEZhbHNlKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVm
IHRlc3RfcHltYWxsb2Moc2VsZiwgcHltYWxsb2MsIHZlcnNpb24sIHJlc3VsdCwgbW9ua2V5cGF0
Y2gpOgorICAgICAgICBjb25maWcgPSB7IlB5X0RFQlVHIjogMCwgIldJVEhfUFlNQUxMT0MiOiBw
eW1hbGxvYywgIlB5X1VOSUNPREVfU0laRSI6IDJ9CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0
dHIoc3lzY29uZmlnLCAiZ2V0X2NvbmZpZ192YXIiLCBjb25maWcuX19nZXRpdGVtX18pCisgICAg
ICAgIGJhc2VfYWJpID0gImNwe317fSIuZm9ybWF0KHZlcnNpb25bMF0sIHZlcnNpb25bMV0pCisg
ICAgICAgIGV4cGVjdGVkID0gW2Jhc2VfYWJpICsgIm0iIGlmIHJlc3VsdCBlbHNlIGJhc2VfYWJp
XQorICAgICAgICBhc3NlcnQgdGFncy5fY3B5dGhvbl9hYmlzKHZlcnNpb24pID09IGV4cGVjdGVk
CisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJ1bmljb2RlX3NpemUs
bWF4dW5pY29kZSx2ZXJzaW9uLHJlc3VsdCIsCisgICAgICAgIFsKKyAgICAgICAgICAgICg0LCAw
eDEwRkZGRiwgKDMsIDIpLCBUcnVlKSwKKyAgICAgICAgICAgICgyLCAweEZGRkYsICgzLCAyKSwg
RmFsc2UpLAorICAgICAgICAgICAgKE5vbmUsIDB4MTBGRkZGLCAoMywgMiksIFRydWUpLAorICAg
ICAgICAgICAgKE5vbmUsIDB4RkZGRiwgKDMsIDIpLCBGYWxzZSksCisgICAgICAgICAgICAoNCwg
MHgxMEZGRkYsICgzLCAzKSwgRmFsc2UpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVz
dF93aWRlX3VuaWNvZGUoc2VsZiwgdW5pY29kZV9zaXplLCBtYXh1bmljb2RlLCB2ZXJzaW9uLCBy
ZXN1bHQsIG1vbmtleXBhdGNoKToKKyAgICAgICAgY29uZmlnID0geyJQeV9ERUJVRyI6IDAsICJX
SVRIX1BZTUFMTE9DIjogMCwgIlB5X1VOSUNPREVfU0laRSI6IHVuaWNvZGVfc2l6ZX0KKyAgICAg
ICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXNjb25maWcsICJnZXRfY29uZmlnX3ZhciIsIGNvbmZp
Zy5fX2dldGl0ZW1fXykKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJtYXh1bmlj
b2RlIiwgbWF4dW5pY29kZSkKKyAgICAgICAgYmFzZV9hYmkgPSAiY3AiICsgdGFncy5fdmVyc2lv
bl9ub2RvdCh2ZXJzaW9uKQorICAgICAgICBleHBlY3RlZCA9IFtiYXNlX2FiaSArICJ1IiBpZiBy
ZXN1bHQgZWxzZSBiYXNlX2FiaV0KKyAgICAgICAgYXNzZXJ0IHRhZ3MuX2NweXRob25fYWJpcyh2
ZXJzaW9uKSA9PSBleHBlY3RlZAorCisKK2NsYXNzIFRlc3RDUHl0aG9uVGFnczoKKyAgICBkZWYg
dGVzdF9pdGVyYXRvcl9yZXR1cm5lZChzZWxmKToKKyAgICAgICAgcmVzdWx0X2l0ZXJhdG9yID0g
dGFncy5jcHl0aG9uX3RhZ3MoCisgICAgICAgICAgICAoMywgOCksIFsiY3AzOGQiLCAiY3AzOCJd
LCBbInBsYXQxIiwgInBsYXQyIl0KKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShyZXN1bHRfaXRlcmF0b3IsIGNvbGxlY3Rpb25zX2FiYy5JdGVyYXRvcikKKworICAgIGRlZiB0
ZXN0X2FsbF9hcmdzKHNlbGYpOgorICAgICAgICByZXN1bHRfaXRlcmF0b3IgPSB0YWdzLmNweXRo
b25fdGFncygKKyAgICAgICAgICAgICgzLCAxMSksIFsiY3AzXzExZCIsICJjcDNfMTEiXSwgWyJw
bGF0MSIsICJwbGF0MiJdCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gbGlzdChyZXN1bHRf
aXRlcmF0b3IpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAgICAgICAgICAgdGFncy5U
YWcoImNwM18xMSIsICJjcDNfMTFkIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygi
Y3AzXzExIiwgImNwM18xMWQiLCAicGxhdDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDNf
MTEiLCAiY3AzXzExIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzXzExIiwg
ImNwM18xMSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJhYmkz
IiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzXzExIiwgImFiaTMiLCAicGxh
dDIiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDNfMTEiLCAibm9uZSIsICJwbGF0MSIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJub25lIiwgInBsYXQyIiksCisgICAgICAg
ICAgICB0YWdzLlRhZygiY3AzXzEwIiwgImFiaTMiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJjcDNfMTAiLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWco
ImNwMzkiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzkiLCAi
YWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzgiLCAiYWJpMyIsICJw
bGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzgiLCAiYWJpMyIsICJwbGF0MiIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoImNwMzciLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoImNwMzciLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5U
YWcoImNwMzYiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzYi
LCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzUiLCAiYWJpMyIs
ICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzUiLCAiYWJpMyIsICJwbGF0MiIp
LAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzQiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAg
ICAgICAgdGFncy5UYWcoImNwMzQiLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoImNwMzMiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNw
MzMiLCAiYWJpMyIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzIiLCAiYWJp
MyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzIiLCAiYWJpMyIsICJwbGF0
MiIpLAorICAgICAgICBdCisgICAgICAgIHJlc3VsdF9pdGVyYXRvciA9IHRhZ3MuY3B5dGhvbl90
YWdzKAorICAgICAgICAgICAgKDMsIDgpLCBbImNwMzhkIiwgImNwMzgiXSwgWyJwbGF0MSIsICJw
bGF0MiJdCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gbGlzdChyZXN1bHRfaXRlcmF0b3Ip
CisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWworICAgICAgICAgICAgdGFncy5UYWcoImNwMzgi
LCAiY3AzOGQiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDM4IiwgImNwMzhk
IiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzOCIsICJjcDM4IiwgInBsYXQx
IiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzOCIsICJjcDM4IiwgInBsYXQyIiksCisgICAg
ICAgICAgICB0YWdzLlRhZygiY3AzOCIsICJhYmkzIiwgInBsYXQxIiksCisgICAgICAgICAgICB0
YWdzLlRhZygiY3AzOCIsICJhYmkzIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygi
Y3AzOCIsICJub25lIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzOCIsICJu
b25lIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzNyIsICJhYmkzIiwgInBs
YXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzNyIsICJhYmkzIiwgInBsYXQyIiksCisg
ICAgICAgICAgICB0YWdzLlRhZygiY3AzNiIsICJhYmkzIiwgInBsYXQxIiksCisgICAgICAgICAg
ICB0YWdzLlRhZygiY3AzNiIsICJhYmkzIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRh
ZygiY3AzNSIsICJhYmkzIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzNSIs
ICJhYmkzIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzNCIsICJhYmkzIiwg
InBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzNCIsICJhYmkzIiwgInBsYXQyIiks
CisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMyIsICJhYmkzIiwgInBsYXQxIiksCisgICAgICAg
ICAgICB0YWdzLlRhZygiY3AzMyIsICJhYmkzIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdz
LlRhZygiY3AzMiIsICJhYmkzIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3Az
MiIsICJhYmkzIiwgInBsYXQyIiksCisgICAgICAgIF0KKworICAgICAgICByZXN1bHQgPSBsaXN0
KHRhZ3MuY3B5dGhvbl90YWdzKCgzLCAzKSwgWyJjcDMzbSJdLCBbInBsYXQxIiwgInBsYXQyIl0p
KQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMz
IiwgImNwMzNtIiwgInBsYXQxIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMyIsICJjcDMz
bSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAiYWJpMyIsICJwbGF0
MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAiYWJpMyIsICJwbGF0MiIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAg
dGFncy5UYWcoImNwMzMiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWco
ImNwMzIiLCAiYWJpMyIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzIiLCAi
YWJpMyIsICJwbGF0MiIpLAorICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9weXRob25fdmVyc2lv
bl9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgdGFnID0gbmV4dCh0YWdzLmNweXRob25fdGFncyhh
YmlzPVsiYWJpMyJdLCBwbGF0Zm9ybXM9WyJhbnkiXSkpCisgICAgICAgIGludGVycHJldGVyID0g
ImNwIiArIHRhZ3MuX3ZlcnNpb25fbm9kb3Qoc3lzLnZlcnNpb25faW5mb1s6Ml0pCisgICAgICAg
IGFzc2VydCBpbnRlcnByZXRlciA9PSB0YWcuaW50ZXJwcmV0ZXIKKworICAgIGRlZiB0ZXN0X2Fi
aV9kZWZhdWx0cyhzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0
dHIodGFncywgIl9jcHl0aG9uX2FiaXMiLCBsYW1iZGEgXzEsIF8yOiBbImNwMzgiXSkKKyAgICAg
ICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNweXRob25fdGFncygoMywgOCksIHBsYXRmb3Jtcz1bImFu
eSJdKSkKKyAgICAgICAgYXNzZXJ0IHRhZ3MuVGFnKCJjcDM4IiwgImNwMzgiLCAiYW55IikgaW4g
cmVzdWx0CisgICAgICAgIGFzc2VydCB0YWdzLlRhZygiY3AzOCIsICJhYmkzIiwgImFueSIpIGlu
IHJlc3VsdAorICAgICAgICBhc3NlcnQgdGFncy5UYWcoImNwMzgiLCAibm9uZSIsICJhbnkiKSBp
biByZXN1bHQKKworICAgIGRlZiB0ZXN0X2FiaV9kZWZhdWx0c19uZWVkc191bmRlcnNjb3JlKHNl
bGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2Nw
eXRob25fYWJpcyIsIGxhbWJkYSBfMSwgXzI6IFsiY3AzXzExIl0pCisgICAgICAgIHJlc3VsdCA9
IGxpc3QodGFncy5jcHl0aG9uX3RhZ3MoKDMsIDExKSwgcGxhdGZvcm1zPVsiYW55Il0pKQorICAg
ICAgICBhc3NlcnQgdGFncy5UYWcoImNwM18xMSIsICJjcDNfMTEiLCAiYW55IikgaW4gcmVzdWx0
CisgICAgICAgIGFzc2VydCB0YWdzLlRhZygiY3AzXzExIiwgImFiaTMiLCAiYW55IikgaW4gcmVz
dWx0CisgICAgICAgIGFzc2VydCB0YWdzLlRhZygiY3AzXzExIiwgIm5vbmUiLCAiYW55IikgaW4g
cmVzdWx0CisKKyAgICBkZWYgdGVzdF9wbGF0Zm9ybXNfZGVmYXVsdHMoc2VsZiwgbW9ua2V5cGF0
Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfcGxhdGZvcm1fdGFncyIs
IGxhbWJkYTogWyJwbGF0MSJdKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY3B5dGhvbl90
YWdzKCgzLCA4KSwgYWJpcz1bIndoYXRldmVyIl0pKQorICAgICAgICBhc3NlcnQgdGFncy5UYWco
ImNwMzgiLCAid2hhdGV2ZXIiLCAicGxhdDEiKSBpbiByZXN1bHQKKworICAgIGRlZiB0ZXN0X3Bs
YXRmb3Jtc19kZWZhdWx0c19uZWVkc191bmRlcnNjb3JlKHNlbGYsIG1vbmtleXBhdGNoKToKKyAg
ICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX3BsYXRmb3JtX3RhZ3MiLCBsYW1iZGE6
IFsicGxhdDEiXSkKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNweXRob25fdGFncygoMywg
MTEpLCBhYmlzPVsid2hhdGV2ZXIiXSkpCisgICAgICAgIGFzc2VydCB0YWdzLlRhZygiY3AzXzEx
IiwgIndoYXRldmVyIiwgInBsYXQxIikgaW4gcmVzdWx0CisKKyAgICBkZWYgdGVzdF9tYWpvcl9v
bmx5X3B5dGhvbl92ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY3B5
dGhvbl90YWdzKCgzLCksIFsiYWJpIl0sIFsicGxhdCJdKSkKKyAgICAgICAgYXNzZXJ0IHJlc3Vs
dCA9PSBbCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzIiwgImFiaSIsICJwbGF0IiksCisgICAg
ICAgICAgICB0YWdzLlRhZygiY3AzIiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICBdCisKKyAg
ICBkZWYgdGVzdF9tYWpvcl9vbmx5X3B5dGhvbl92ZXJzaW9uX3dpdGhfZGVmYXVsdF9hYmlzKHNl
bGYpOgorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY3B5dGhvbl90YWdzKCgzLCksIHBsYXRm
b3Jtcz1bInBsYXQiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gW3RhZ3MuVGFnKCJjcDMi
LCAibm9uZSIsICJwbGF0IildCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFiaXMi
LCBbW10sIFsiYWJpMyJdLCBbIm5vbmUiXV0pCisgICAgZGVmIHRlc3Rfc2tpcF9yZWR1bmRhbnRf
YWJpcyhzZWxmLCBhYmlzKToKKyAgICAgICAgcmVzdWx0cyA9IGxpc3QodGFncy5jcHl0aG9uX3Rh
Z3MoKDMsIDApLCBhYmlzPWFiaXMsIHBsYXRmb3Jtcz1bImFueSJdKSkKKyAgICAgICAgYXNzZXJ0
IHJlc3VsdHMgPT0gW3RhZ3MuVGFnKCJjcDMwIiwgIm5vbmUiLCAiYW55IildCisKKyAgICBkZWYg
dGVzdF9hYmkzX3B5dGhvbjMzKHNlbGYpOgorICAgICAgICByZXN1bHRzID0gbGlzdCh0YWdzLmNw
eXRob25fdGFncygoMywgMyksIGFiaXM9WyJjcDMzIl0sIHBsYXRmb3Jtcz1bInBsYXQiXSkpCisg
ICAgICAgIGFzc2VydCByZXN1bHRzID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMzIiwg
ImNwMzMiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAiYWJpMyIsICJw
bGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMyIsICJub25lIiwgInBsYXQiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJjcDMyIiwgImFiaTMiLCAicGxhdCIpLAorICAgICAgICBdCisK
KyAgICBkZWYgdGVzdF9ub19leGNlc3NfYWJpM19weXRob24zMihzZWxmKToKKyAgICAgICAgcmVz
dWx0cyA9IGxpc3QodGFncy5jcHl0aG9uX3RhZ3MoKDMsIDIpLCBhYmlzPVsiY3AzMiJdLCBwbGF0
Zm9ybXM9WyJwbGF0Il0pKQorICAgICAgICBhc3NlcnQgcmVzdWx0cyA9PSBbCisgICAgICAgICAg
ICB0YWdzLlRhZygiY3AzMiIsICJjcDMyIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFn
KCJjcDMyIiwgImFiaTMiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzIiLCAi
bm9uZSIsICJwbGF0IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X25vX2FiaTNfcHl0aG9u
MzEoc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBsaXN0KHRhZ3MuY3B5dGhvbl90YWdzKCgzLCAx
KSwgYWJpcz1bImNwMzEiXSwgcGxhdGZvcm1zPVsicGxhdCJdKSkKKyAgICAgICAgYXNzZXJ0IHJl
c3VsdHMgPT0gWworICAgICAgICAgICAgdGFncy5UYWcoImNwMzEiLCAiY3AzMSIsICJwbGF0Iiks
CisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMSIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAg
XQorCisgICAgZGVmIHRlc3Rfbm9fYWJpM19weXRob24yNyhzZWxmKToKKyAgICAgICAgcmVzdWx0
cyA9IGxpc3QodGFncy5jcHl0aG9uX3RhZ3MoKDIsIDcpLCBhYmlzPVsiY3AyNyJdLCBwbGF0Zm9y
bXM9WyJwbGF0Il0pKQorICAgICAgICBhc3NlcnQgcmVzdWx0cyA9PSBbCisgICAgICAgICAgICB0
YWdzLlRhZygiY3AyNyIsICJjcDI3IiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJj
cDI3IiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICBdCisKKworY2xhc3MgVGVzdEdlbmVyaWNU
YWdzOgorICAgIEBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIG5vdCBzeXNjb25maWcuZ2V0
X2NvbmZpZ192YXIoIlNPQUJJIiksIHJlYXNvbj0iU09BQkkgbm90IGRlZmluZWQiCisgICAgKQor
ICAgIGRlZiB0ZXN0X19nZW5lcmljX2FiaV9zb2FiaV9wcm92aWRlZChzZWxmKToKKyAgICAgICAg
YWJpID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJTT0FCSSIpLnJlcGxhY2UoIi4iLCAiXyIp
LnJlcGxhY2UoIi0iLCAiXyIpCisgICAgICAgIGFzc2VydCBbYWJpXSA9PSBsaXN0KHRhZ3MuX2dl
bmVyaWNfYWJpKCkpCisKKyAgICBkZWYgdGVzdF9fZ2VuZXJpY19hYmkoc2VsZiwgbW9ua2V5cGF0
Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgc3lzY29uZmln
LCAiZ2V0X2NvbmZpZ192YXIiLCBsYW1iZGEga2V5OiAiY3B5dGhvbi0zN20tZGFyd2luIgorICAg
ICAgICApCisgICAgICAgIGFzc2VydCBsaXN0KHRhZ3MuX2dlbmVyaWNfYWJpKCkpID09IFsiY3B5
dGhvbl8zN21fZGFyd2luIl0KKworICAgIGRlZiB0ZXN0X19nZW5lcmljX2FiaV9ub19zb2FiaShz
ZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzY29uZmln
LCAiZ2V0X2NvbmZpZ192YXIiLCBsYW1iZGEga2V5OiBOb25lKQorICAgICAgICBhc3NlcnQgbm90
IGxpc3QodGFncy5fZ2VuZXJpY19hYmkoKSkKKworICAgIGRlZiB0ZXN0X2dlbmVyaWNfcGxhdGZv
cm1zKHNlbGYpOgorICAgICAgICBwbGF0Zm9ybSA9IGRpc3R1dGlscy51dGlsLmdldF9wbGF0Zm9y
bSgpLnJlcGxhY2UoIi0iLCAiXyIpCisgICAgICAgIHBsYXRmb3JtID0gcGxhdGZvcm0ucmVwbGFj
ZSgiLiIsICJfIikKKyAgICAgICAgYXNzZXJ0IGxpc3QodGFncy5fZ2VuZXJpY19wbGF0Zm9ybXMo
KSkgPT0gW3BsYXRmb3JtXQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcmV0dXJuZWQoc2VsZik6
CisgICAgICAgIHJlc3VsdF9pdGVyYXRvciA9IHRhZ3MuZ2VuZXJpY190YWdzKCJzaWxseXdhbGsz
MyIsIFsiYWJpIl0sIFsicGxhdDEiLCAicGxhdDIiXSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UocmVzdWx0X2l0ZXJhdG9yLCBjb2xsZWN0aW9uc19hYmMuSXRlcmF0b3IpCisKKyAgICBkZWYg
dGVzdF9hbGxfYXJncyhzZWxmKToKKyAgICAgICAgcmVzdWx0X2l0ZXJhdG9yID0gdGFncy5nZW5l
cmljX3RhZ3MoInNpbGx5d2FsazMzIiwgWyJhYmkiXSwgWyJwbGF0MSIsICJwbGF0MiJdKQorICAg
ICAgICByZXN1bHQgPSBsaXN0KHJlc3VsdF9pdGVyYXRvcikKKyAgICAgICAgYXNzZXJ0IHJlc3Vs
dCA9PSBbCisgICAgICAgICAgICB0YWdzLlRhZygic2lsbHl3YWxrMzMiLCAiYWJpIiwgInBsYXQx
IiksCisgICAgICAgICAgICB0YWdzLlRhZygic2lsbHl3YWxrMzMiLCAiYWJpIiwgInBsYXQyIiks
CisgICAgICAgICAgICB0YWdzLlRhZygic2lsbHl3YWxrMzMiLCAibm9uZSIsICJwbGF0MSIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoInNpbGx5d2FsazMzIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAg
ICAgICAgXQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhYmkiLCBbW10sIFsibm9u
ZSJdXSkKKyAgICBkZWYgdGVzdF9hYmlfdW5zcGVjaWZpZWQoc2VsZiwgYWJpKToKKyAgICAgICAg
bm9fYWJpID0gbGlzdCh0YWdzLmdlbmVyaWNfdGFncygic2lsbHl3YWxrMzQiLCBhYmksIFsicGxh
dDEiLCAicGxhdDIiXSkpCisgICAgICAgIGFzc2VydCBub19hYmkgPT0gWworICAgICAgICAgICAg
dGFncy5UYWcoInNpbGx5d2FsazM0IiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJzaWxseXdhbGszNCIsICJub25lIiwgInBsYXQyIiksCisgICAgICAgIF0KKworICAg
IGRlZiB0ZXN0X2ludGVycHJldGVyX2RlZmF1bHQoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAg
ICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJpbnRlcnByZXRlcl9uYW1lIiwgbGFtYmRhOiAi
c2lsbHl3YWxrIikKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiaW50ZXJwcmV0
ZXJfdmVyc2lvbiIsIGxhbWJkYSB3YXJuOiAiTk4iKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRh
Z3MuZ2VuZXJpY190YWdzKGFiaXM9WyJub25lIl0sIHBsYXRmb3Jtcz1bImFueSJdKSkKKyAgICAg
ICAgYXNzZXJ0IHJlc3VsdCA9PSBbdGFncy5UYWcoInNpbGx5d2Fsa05OIiwgIm5vbmUiLCAiYW55
IildCisKKyAgICBkZWYgdGVzdF9hYmlzX2RlZmF1bHQoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2VuZXJpY19hYmkiLCBsYW1iZGE6IGl0
ZXIoWyJhYmkiXSkpCisgICAgICAgIHJlc3VsdCA9IGxpc3QodGFncy5nZW5lcmljX3RhZ3MoaW50
ZXJwcmV0ZXI9InNpbGx5d2FsayIsIHBsYXRmb3Jtcz1bImFueSJdKSkKKyAgICAgICAgYXNzZXJ0
IHJlc3VsdCA9PSBbCisgICAgICAgICAgICB0YWdzLlRhZygic2lsbHl3YWxrIiwgImFiaSIsICJh
bnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJzaWxseXdhbGsiLCAibm9uZSIsICJhbnkiKSwK
KyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfcGxhdGZvcm1zX2RlZmF1bHQoc2VsZiwgbW9ua2V5
cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfcGxhdGZvcm1fdGFn
cyIsIGxhbWJkYTogWyJwbGF0Il0pCisgICAgICAgIHJlc3VsdCA9IGxpc3QodGFncy5nZW5lcmlj
X3RhZ3MoaW50ZXJwcmV0ZXI9InNpbGx5d2FsayIsIGFiaXM9WyJub25lIl0pKQorICAgICAgICBh
c3NlcnQgcmVzdWx0ID09IFt0YWdzLlRhZygic2lsbHl3YWxrIiwgIm5vbmUiLCAicGxhdCIpXQor
CisKK2NsYXNzIFRlc3RDb21wYXRpYmxlVGFnczoKKyAgICBkZWYgdGVzdF9hbGxfYXJncyhzZWxm
KToKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNvbXBhdGlibGVfdGFncygoMywgMyksICJj
cDMzIiwgWyJwbGF0MSIsICJwbGF0MiJdKSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbCisg
ICAgICAgICAgICB0YWdzLlRhZygicHkzMyIsICJub25lIiwgInBsYXQxIiksCisgICAgICAgICAg
ICB0YWdzLlRhZygicHkzMyIsICJub25lIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRh
ZygicHkzIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMiLCAi
bm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzIiLCAibm9uZSIsICJw
bGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzIiLCAibm9uZSIsICJwbGF0MiIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5U
YWcoInB5MzAiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzAi
LCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAibm9uZSIs
ICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMzIiwgIm5vbmUiLCAiYW55IiksCisg
ICAgICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0
YWdzLlRhZygicHkzMiIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5
MzEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUi
LCAiYW55IiksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2FsbF9hcmdzX25lZWRzX3VuZGVy
c2NvcmUoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGxpc3QodGFncy5jb21wYXRpYmxlX3RhZ3Mo
KDMsIDExKSwgImNwM18xMSIsIFsicGxhdDEiLCAicGxhdDIiXSkpCisgICAgICAgIGFzc2VydCBy
ZXN1bHQgPT0gWworICAgICAgICAgICAgdGFncy5UYWcoInB5M18xMSIsICJub25lIiwgInBsYXQx
IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzXzExIiwgIm5vbmUiLCAicGxhdDIiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJweTMiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAg
dGFncy5UYWcoInB5MyIsICJub25lIiwgInBsYXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygi
cHkzXzEwIiwgIm5vbmUiLCAicGxhdDEiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTNfMTAi
LCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzkiLCAibm9uZSIs
ICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzkiLCAibm9uZSIsICJwbGF0MiIp
LAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzgiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAg
ICAgICAgdGFncy5UYWcoInB5MzgiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoInB5MzciLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5
MzciLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzYiLCAibm9u
ZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzYiLCAibm9uZSIsICJwbGF0
MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzUiLCAibm9uZSIsICJwbGF0MSIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoInB5MzUiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAg
dGFncy5UYWcoInB5MzQiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWco
InB5MzQiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzMiLCAi
bm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzMiLCAibm9uZSIsICJw
bGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzIiLCAibm9uZSIsICJwbGF0MSIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoInB5MzIiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5U
YWcoInB5MzEiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzAi
LCAibm9uZSIsICJwbGF0MSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzAiLCAibm9uZSIs
ICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJub25lIiwgImFueSIp
LAorICAgICAgICAgICAgdGFncy5UYWcoInB5M18xMSIsICJub25lIiwgImFueSIpLAorICAgICAg
ICAgICAgdGFncy5UYWcoInB5MyIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5U
YWcoInB5M18xMCIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5Mzki
LCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM4IiwgIm5vbmUiLCAi
YW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzNyIsICJub25lIiwgImFueSIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoInB5MzYiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTM1IiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkz
NCIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzMiLCAibm9uZSIs
ICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMyIiwgIm5vbmUiLCAiYW55IiksCisg
ICAgICAgICAgICB0YWdzLlRhZygicHkzMSIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAg
dGFncy5UYWcoInB5MzAiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgXQorCisgICAgZGVmIHRl
c3RfbWFqb3Jfb25seV9weXRob25fdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gbGlz
dCh0YWdzLmNvbXBhdGlibGVfdGFncygoMywpLCAiY3AzMyIsIFsicGxhdCJdKSkKKyAgICAgICAg
YXNzZXJ0IHJlc3VsdCA9PSBbCisgICAgICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAi
cGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoImNwMzMiLCAibm9uZSIsICJhbnkiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJweTMiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgXQorCisg
ICAgZGVmIHRlc3RfZGVmYXVsdF9weXRob25fdmVyc2lvbihzZWxmLCBtb25rZXlwYXRjaCk6Cisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lzLCAidmVyc2lvbl9pbmZvIiwgKDMsIDEpKQor
ICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY29tcGF0aWJsZV90YWdzKGludGVycHJldGVyPSJj
cDMxIiwgcGxhdGZvcm1zPVsicGxhdCJdKSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbCisg
ICAgICAgICAgICB0YWdzLlRhZygicHkzMSIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAg
IHRhZ3MuVGFnKCJweTMiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygi
cHkzMCIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJjcDMxIiwgIm5v
bmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzMSIsICJub25lIiwgImFueSIp
LAorICAgICAgICAgICAgdGFncy5UYWcoInB5MyIsICJub25lIiwgImFueSIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoInB5MzAiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgXQorCisgICAgZGVm
IHRlc3RfZGVmYXVsdF9weXRob25fdmVyc2lvbl9uZWVkc191bmRlcnNjb3JlKHNlbGYsIG1vbmtl
eXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJ2ZXJzaW9uX2luZm8i
LCAoMywgMTEpKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRhZ3MuY29tcGF0aWJsZV90YWdzKGlu
dGVycHJldGVyPSJjcDNfMTEiLCBwbGF0Zm9ybXM9WyJwbGF0Il0pKQorICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTNfMTEiLCAibm9uZSIsICJwbGF0
IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAg
ICAgICAgdGFncy5UYWcoInB5M18xMCIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTM5IiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5
MzgiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzNyIsICJub25l
IiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM2IiwgIm5vbmUiLCAicGxhdCIp
LAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzUiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAg
ICAgICB0YWdzLlRhZygicHkzNCIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3Mu
VGFnKCJweTMzIiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzIi
LCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzMSIsICJub25lIiwg
InBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMwIiwgIm5vbmUiLCAicGxhdCIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoImNwM18xMSIsICJub25lIiwgImFueSIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoInB5M18xMSIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5U
YWcoInB5MyIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5M18xMCIs
ICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzkiLCAibm9uZSIsICJh
bnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM4IiwgIm5vbmUiLCAiYW55IiksCisgICAg
ICAgICAgICB0YWdzLlRhZygicHkzNyIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoInB5MzYiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTM1
IiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzNCIsICJub25lIiwg
ImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzMiLCAibm9uZSIsICJhbnkiKSwKKyAg
ICAgICAgICAgIHRhZ3MuVGFnKCJweTMyIiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgICAgICB0
YWdzLlRhZygicHkzMSIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5
MzAiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9p
bnRlcnByZXRlcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLmNvbXBhdGlibGVf
dGFncygoMywgMSksIHBsYXRmb3Jtcz1bInBsYXQiXSkpCisgICAgICAgIGFzc2VydCByZXN1bHQg
PT0gWworICAgICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJwbGF0IiksCisgICAg
ICAgICAgICB0YWdzLlRhZygicHkzIiwgIm5vbmUiLCAicGxhdCIpLAorICAgICAgICAgICAgdGFn
cy5UYWcoInB5MzAiLCAibm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkz
MSIsICJub25lIiwgImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MyIsICJub25lIiwg
ImFueSIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzAiLCAibm9uZSIsICJhbnkiKSwKKyAg
ICAgICAgXQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9wbGF0Zm9ybXMoc2VsZiwgbW9ua2V5cGF0
Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfcGxhdGZvcm1fdGFncyIs
IGxhbWJkYTogaXRlcihbInBsYXQiLCAicGxhdDIiXSkpCisgICAgICAgIHJlc3VsdCA9IGxpc3Qo
dGFncy5jb21wYXRpYmxlX3RhZ3MoKDMsIDEpLCAiY3AzMSIpKQorICAgICAgICBhc3NlcnQgcmVz
dWx0ID09IFsKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMxIiwgIm5vbmUiLCAicGxhdCIpLAor
ICAgICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAg
ICAgdGFncy5UYWcoInB5MyIsICJub25lIiwgInBsYXQiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFn
KCJweTMiLCAibm9uZSIsICJwbGF0MiIpLAorICAgICAgICAgICAgdGFncy5UYWcoInB5MzAiLCAi
bm9uZSIsICJwbGF0IiksCisgICAgICAgICAgICB0YWdzLlRhZygicHkzMCIsICJub25lIiwgInBs
YXQyIiksCisgICAgICAgICAgICB0YWdzLlRhZygiY3AzMSIsICJub25lIiwgImFueSIpLAorICAg
ICAgICAgICAgdGFncy5UYWcoInB5MzEiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRh
Z3MuVGFnKCJweTMiLCAibm9uZSIsICJhbnkiKSwKKyAgICAgICAgICAgIHRhZ3MuVGFnKCJweTMw
IiwgIm5vbmUiLCAiYW55IiksCisgICAgICAgIF0KKworCitjbGFzcyBUZXN0U3lzVGFnczoKKyAg
ICBkZWYgdGVhcmRvd25fbWV0aG9kKHNlbGYpOgorICAgICAgICAjIENsZWFyIHRoZSB2ZXJzaW9u
IGNhY2hlCisgICAgICAgIHRhZ3MuX2dsaWJjX3ZlcnNpb24gPSBbXQorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAibmFtZSxleHBlY3RlZCIsCisgICAgICAgIFsoIkNQ
eXRob24iLCAiY3AiKSwgKCJQeVB5IiwgInBwIiksICgiSnl0aG9uIiwgImp5IiksICgiSXJvblB5
dGhvbiIsICJpcCIpXSwKKyAgICApCisgICAgZGVmIHRlc3RfaW50ZXJwcmV0ZXJfbmFtZShzZWxm
LCBuYW1lLCBleHBlY3RlZCwgbW9ja19pbnRlcnByZXRlcl9uYW1lKToKKyAgICAgICAgbW9ja19p
bnRlcnByZXRlcl9uYW1lKG5hbWUpCisgICAgICAgIGFzc2VydCB0YWdzLmludGVycHJldGVyX25h
bWUoKSA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKHRhZ3Muc3lzX3RhZ3MoKSwgY29sbGVjdGlvbnNfYWJjLkl0ZXJh
dG9yKQorCisgICAgZGVmIHRlc3RfbWFjX2NweXRob24oc2VsZiwgbW9ja19pbnRlcnByZXRlcl9u
YW1lLCBtb25rZXlwYXRjaCk6CisgICAgICAgIGlmIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSgiQ1B5
dGhvbiIpOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2NweXRob25f
YWJpcyIsIGxhbWJkYSAqYTogWyJjcDMzbSJdKQorICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0o
KSAhPSAiRGFyd2luIjoKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGxhdGZvcm0s
ICJzeXN0ZW0iLCBsYW1iZGE6ICJEYXJ3aW4iKQorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cih0YWdzLCAibWFjX3BsYXRmb3JtcyIsIGxhbWJkYTogWyJtYWNvc3hfMTBfNV94ODZfNjQi
XSkKKyAgICAgICAgYWJpcyA9IHRhZ3MuX2NweXRob25fYWJpcyhzeXMudmVyc2lvbl9pbmZvWzoy
XSkKKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLm1hY19wbGF0Zm9ybXMoKSkKKyAgICAg
ICAgcmVzdWx0ID0gbGlzdCh0YWdzLnN5c190YWdzKCkpCisgICAgICAgIGFzc2VydCBsZW4oYWJp
cykgPT0gMQorICAgICAgICBhc3NlcnQgcmVzdWx0WzBdID09IHRhZ3MuVGFnKAorICAgICAgICAg
ICAgImNwIiArIHRhZ3MuX3ZlcnNpb25fbm9kb3Qoc3lzLnZlcnNpb25faW5mb1s6Ml0pLCBhYmlz
WzBdLCBwbGF0Zm9ybXNbMF0KKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzdWx0Wy0xXSA9
PSB0YWdzLlRhZygKKyAgICAgICAgICAgICJweSIgKyB0YWdzLl92ZXJzaW9uX25vZG90KChzeXMu
dmVyc2lvbl9pbmZvWzBdLCAwKSksICJub25lIiwgImFueSIKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3Rfd2luZG93c19jcHl0aG9uKHNlbGYsIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSwgbW9ua2V5
cGF0Y2gpOgorICAgICAgICBpZiBtb2NrX2ludGVycHJldGVyX25hbWUoIkNQeXRob24iKToKKyAg
ICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFncywgIl9jcHl0aG9uX2FiaXMiLCBsYW1i
ZGEgKmE6IFsiY3AzM20iXSkKKyAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgIT0gIldpbmRv
d3MiOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwbGF0Zm9ybSwgInN5c3RlbSIs
IGxhbWJkYTogIldpbmRvd3MiKQorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdz
LCAiX2dlbmVyaWNfcGxhdGZvcm1zIiwgbGFtYmRhOiBbIndpbl9hbWQ2NCJdKQorICAgICAgICBh
YmlzID0gbGlzdCh0YWdzLl9jcHl0aG9uX2FiaXMoc3lzLnZlcnNpb25faW5mb1s6Ml0pKQorICAg
ICAgICBwbGF0Zm9ybXMgPSBsaXN0KHRhZ3MuX2dlbmVyaWNfcGxhdGZvcm1zKCkpCisgICAgICAg
IHJlc3VsdCA9IGxpc3QodGFncy5zeXNfdGFncygpKQorICAgICAgICBpbnRlcnByZXRlciA9ICJj
cCIgKyB0YWdzLl92ZXJzaW9uX25vZG90KHN5cy52ZXJzaW9uX2luZm9bOjJdKQorICAgICAgICBh
c3NlcnQgbGVuKGFiaXMpID09IDEKKyAgICAgICAgZXhwZWN0ZWQgPSB0YWdzLlRhZyhpbnRlcnBy
ZXRlciwgYWJpc1swXSwgcGxhdGZvcm1zWzBdKQorICAgICAgICBhc3NlcnQgcmVzdWx0WzBdID09
IGV4cGVjdGVkCisgICAgICAgIGV4cGVjdGVkID0gdGFncy5UYWcoCisgICAgICAgICAgICAicHki
ICsgdGFncy5fdmVyc2lvbl9ub2RvdCgoc3lzLnZlcnNpb25faW5mb1swXSwgMCkpLCAibm9uZSIs
ICJhbnkiCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdFstMV0gPT0gZXhwZWN0ZWQK
KworICAgIGRlZiB0ZXN0X2xpbnV4X2NweXRob24oc2VsZiwgbW9ja19pbnRlcnByZXRlcl9uYW1l
LCBtb25rZXlwYXRjaCk6CisgICAgICAgIGlmIG1vY2tfaW50ZXJwcmV0ZXJfbmFtZSgiQ1B5dGhv
biIpOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0YWdzLCAiX2NweXRob25fYWJp
cyIsIGxhbWJkYSAqYTogWyJjcDMzbSJdKQorICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSAh
PSAiTGludXgiOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwbGF0Zm9ybSwgInN5
c3RlbSIsIGxhbWJkYTogIkxpbnV4IikKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
dGFncywgIl9saW51eF9wbGF0Zm9ybXMiLCBsYW1iZGE6IFsibGludXhfeDg2XzY0Il0pCisgICAg
ICAgIGFiaXMgPSBsaXN0KHRhZ3MuX2NweXRob25fYWJpcyhzeXMudmVyc2lvbl9pbmZvWzoyXSkp
CisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFncy5fbGludXhfcGxhdGZvcm1zKCkpCisgICAg
ICAgIHJlc3VsdCA9IGxpc3QodGFncy5zeXNfdGFncygpKQorICAgICAgICBleHBlY3RlZF9pbnRl
cnByZXRlciA9ICJjcCIgKyB0YWdzLl92ZXJzaW9uX25vZG90KHN5cy52ZXJzaW9uX2luZm9bOjJd
KQorICAgICAgICBhc3NlcnQgbGVuKGFiaXMpID09IDEKKyAgICAgICAgYXNzZXJ0IHJlc3VsdFsw
XSA9PSB0YWdzLlRhZyhleHBlY3RlZF9pbnRlcnByZXRlciwgYWJpc1swXSwgcGxhdGZvcm1zWzBd
KQorICAgICAgICBleHBlY3RlZCA9IHRhZ3MuVGFnKAorICAgICAgICAgICAgInB5IiArIHRhZ3Mu
X3ZlcnNpb25fbm9kb3QoKHN5cy52ZXJzaW9uX2luZm9bMF0sIDApKSwgIm5vbmUiLCAiYW55Igor
ICAgICAgICApCisgICAgICAgIGFzc2VydCByZXN1bHRbLTFdID09IGV4cGVjdGVkCisKKyAgICBk
ZWYgdGVzdF9nZW5lcmljKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cihwbGF0Zm9ybSwgInN5c3RlbSIsIGxhbWJkYTogIkdlbmVyaWMiKQorICAgICAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJpbnRlcnByZXRlcl9uYW1lIiwgbGFtYmRhOiAiZ2Vu
ZXJpYyIpCisKKyAgICAgICAgcmVzdWx0ID0gbGlzdCh0YWdzLnN5c190YWdzKCkpCisgICAgICAg
IGV4cGVjdGVkID0gdGFncy5UYWcoCisgICAgICAgICAgICAicHkiICsgdGFncy5fdmVyc2lvbl9u
b2RvdCgoc3lzLnZlcnNpb25faW5mb1swXSwgMCkpLCAibm9uZSIsICJhbnkiCisgICAgICAgICkK
KyAgICAgICAgYXNzZXJ0IHJlc3VsdFstMV0gPT0gZXhwZWN0ZWQKKworICAgIGRlZiB0ZXN0X2xp
bnV4X3BsYXRmb3Jtc19tYW55bGludXgyMDE0X2FybXY2bChzZWxmLCBtb25rZXlwYXRjaCwgbWFu
eWxpbnV4X21vZHVsZSk6CisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0
aWwsICJnZXRfcGxhdGZvcm0iLCBsYW1iZGE6ICJsaW51eF9hcm12NmwiKQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKG9zLCAiY29uZnN0ciIsIGxhbWJkYSB4OiAiZ2xpYmMgMi4yMCIsIHJh
aXNpbmc9RmFsc2UpCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFncy5fbGludXhfcGxhdGZv
cm1zKGlzXzMyYml0PVRydWUpKQorICAgICAgICBleHBlY3RlZCA9IFsibGludXhfYXJtdjZsIl0K
KyAgICAgICAgYXNzZXJ0IHBsYXRmb3JtcyA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3Rfc2tp
cF9tYW55bGludXhfMjAxNChzZWxmLCBtb25rZXlwYXRjaCwgbWFueWxpbnV4X21vZHVsZSk6Cisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZvcm0i
LCBsYW1iZGE6ICJsaW51eF9wcGM2NCIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodGFn
cywgIl9nZXRfZ2xpYmNfdmVyc2lvbiIsIGxhbWJkYTogKDIsIDIwKSkKKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIG1hbnlsaW51eF9tb2R1bGUsICJtYW55bGludXgy
MDE0X2NvbXBhdGlibGUiLCBGYWxzZSwgcmFpc2luZz1GYWxzZQorICAgICAgICApCisgICAgICAg
IGV4cGVjdGVkID0gWworICAgICAgICAgICAgIm1hbnlsaW51eF8yXzIwX3BwYzY0IiwKKyAgICAg
ICAgICAgICJtYW55bGludXhfMl8xOV9wcGM2NCIsCisgICAgICAgICAgICAibWFueWxpbnV4XzJf
MThfcHBjNjQiLAorICAgICAgICAgICAgIyAibWFueWxpbnV4MjAxNF9wcGM2NCIsICAjIHRoaXMg
b25lIGlzIHNraXBwZWQKKyAgICAgICAgICAgICMgIm1hbnlsaW51eF8yXzE3X3BwYzY0IiwgIyB0
aGlzIG9uZSBpcyBhbHNvIHNraXBwZWQKKyAgICAgICAgICAgICJsaW51eF9wcGM2NCIsCisgICAg
ICAgIF0KKyAgICAgICAgcGxhdGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9wbGF0Zm9ybXMoKSkK
KyAgICAgICAgYXNzZXJ0IHBsYXRmb3JtcyA9PSBleHBlY3RlZAorCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKAorICAgICAgICAibWFjaGluZSwgYWJpLCBhbHRfbWFjaGluZSIsCisgICAg
ICAgIFsoIng4Nl82NCIsICJ4MzIiLCAiaTY4NiIpLCAoImFybXY3bCIsICJhcm1lbCIsICJhcm12
N2wiKV0sCisgICAgKQorICAgIGRlZiB0ZXN0X2xpbnV4X3BsYXRmb3Jtc19ub3RfbWFueWxpbnV4
X2FiaSgKKyAgICAgICAgc2VsZiwgbW9ua2V5cGF0Y2gsIG1hbnlsaW51eF9tb2R1bGUsIG1hY2hp
bmUsIGFiaSwgYWx0X21hY2hpbmUKKyAgICApOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRy
KAorICAgICAgICAgICAgZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZvcm0iLCBsYW1iZGE6ICJs
aW51eF97fSIuZm9ybWF0KG1hY2hpbmUpCisgICAgICAgICkKKyAgICAgICAgbW9ua2V5cGF0Y2gu
c2V0YXR0cigKKyAgICAgICAgICAgIHN5cywKKyAgICAgICAgICAgICJleGVjdXRhYmxlIiwKKyAg
ICAgICAgICAgIG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCAiaGVsbG8td29ybGQte30te30iLmZvcm1hdChtYWNoaW5lLCBhYmkpCisgICAg
ICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFncy5fbGlu
dXhfcGxhdGZvcm1zKGlzXzMyYml0PVRydWUpKQorICAgICAgICBleHBlY3RlZCA9IFsibGludXhf
e30iLmZvcm1hdChhbHRfbWFjaGluZSldCisgICAgICAgIGFzc2VydCBwbGF0Zm9ybXMgPT0gZXhw
ZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgIm1hY2hpbmUs
IG1ham9yLCBtaW5vciwgdGYiLCBbKCJ4ODZfNjQiLCAyLCAyMCwgRmFsc2UpLCAoInMzOTB4Iiwg
MiwgMjIsIFRydWUpXQorICAgICkKKyAgICBkZWYgdGVzdF9saW51eF91c2VfbWFueWxpbnV4X2Nv
bXBhdGlibGUoCisgICAgICAgIHNlbGYsIG1vbmtleXBhdGNoLCBtYW55bGludXhfbW9kdWxlLCBt
YWNoaW5lLCBtYWpvciwgbWlub3IsIHRmCisgICAgKToKKyAgICAgICAgZGVmIG1hbnlsaW51eF9j
b21wYXRpYmxlKHRhZ19tYWpvciwgdGFnX21pbm9yLCB0YWdfYXJjaCk6CisgICAgICAgICAgICBp
ZiB0YWdfbWFqb3IgPT0gMiBhbmQgdGFnX21pbm9yID09IDIyOgorICAgICAgICAgICAgICAgIHJl
dHVybiB0YWdfYXJjaCA9PSAiczM5MHgiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2V0X2dsaWJjX3ZlcnNpb24iLCBsYW1i
ZGE6IChtYWpvciwgbWlub3IpKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAg
ICAgICAgZGlzdHV0aWxzLnV0aWwsICJnZXRfcGxhdGZvcm0iLCBsYW1iZGE6ICJsaW51eF97fSIu
Zm9ybWF0KG1hY2hpbmUpCisgICAgICAgICkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigK
KyAgICAgICAgICAgIG1hbnlsaW51eF9tb2R1bGUsCisgICAgICAgICAgICAibWFueWxpbnV4X2Nv
bXBhdGlibGUiLAorICAgICAgICAgICAgbWFueWxpbnV4X2NvbXBhdGlibGUsCisgICAgICAgICAg
ICByYWlzaW5nPUZhbHNlLAorICAgICAgICApCisgICAgICAgIHBsYXRmb3JtcyA9IGxpc3QodGFn
cy5fbGludXhfcGxhdGZvcm1zKGlzXzMyYml0PUZhbHNlKSkKKyAgICAgICAgaWYgdGY6CisgICAg
ICAgICAgICBleHBlY3RlZCA9IFsibWFueWxpbnV4XzJfMjJfe30iLmZvcm1hdChtYWNoaW5lKV0K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gW10KKyAgICAgICAgZXhwZWN0
ZWQuYXBwZW5kKCJsaW51eF97fSIuZm9ybWF0KG1hY2hpbmUpKQorICAgICAgICBhc3NlcnQgcGxh
dGZvcm1zID09IGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF9saW51eF91c2VfbWFueWxpbnV4X2Nv
bXBhdGlibGVfbm9uZShzZWxmLCBtb25rZXlwYXRjaCwgbWFueWxpbnV4X21vZHVsZSk6CisgICAg
ICAgIGRlZiBtYW55bGludXhfY29tcGF0aWJsZSh0YWdfbWFqb3IsIHRhZ19taW5vciwgdGFnX2Fy
Y2gpOgorICAgICAgICAgICAgaWYgdGFnX21ham9yID09IDIgYW5kIHRhZ19taW5vciA8IDI1Ogor
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRhZ3MsICJfZ2V0X2dsaWJjX3ZlcnNpb24iLCBs
YW1iZGE6ICgyLCAzMCkpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoZGlzdHV0aWxzLnV0
aWwsICJnZXRfcGxhdGZvcm0iLCBsYW1iZGE6ICJsaW51eF94ODZfNjQiKQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgbWFueWxpbnV4X21vZHVsZSwKKyAgICAgICAg
ICAgICJtYW55bGludXhfY29tcGF0aWJsZSIsCisgICAgICAgICAgICBtYW55bGludXhfY29tcGF0
aWJsZSwKKyAgICAgICAgICAgIHJhaXNpbmc9RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgcGxh
dGZvcm1zID0gbGlzdCh0YWdzLl9saW51eF9wbGF0Zm9ybXMoaXNfMzJiaXQ9RmFsc2UpKQorICAg
ICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICJtYW55bGludXhfMl8zMF94ODZfNjQiLAor
ICAgICAgICAgICAgIm1hbnlsaW51eF8yXzI5X3g4Nl82NCIsCisgICAgICAgICAgICAibWFueWxp
bnV4XzJfMjhfeDg2XzY0IiwKKyAgICAgICAgICAgICJtYW55bGludXhfMl8yN194ODZfNjQiLAor
ICAgICAgICAgICAgIm1hbnlsaW51eF8yXzI2X3g4Nl82NCIsCisgICAgICAgICAgICAibWFueWxp
bnV4XzJfMjVfeDg2XzY0IiwKKyAgICAgICAgICAgICJsaW51eF94ODZfNjQiLAorICAgICAgICBd
CisgICAgICAgIGFzc2VydCBwbGF0Zm9ybXMgPT0gZXhwZWN0ZWQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL3Rlc3RzL3Rlc3RfdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0
X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYThlYTZi
ZGI5MGFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF91dGls
cy5weQpAQCAtMCwwICsxLDQ5IEBACisjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KKyMgMi4wLCBhbmQgdGhl
IEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJl
cG9zaXRvcnkKKyMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisKK2ltcG9ydCBweXRl
c3QKKworZnJvbSBwYWNrYWdpbmcudXRpbHMgaW1wb3J0IGNhbm9uaWNhbGl6ZV9uYW1lLCBjYW5v
bmljYWxpemVfdmVyc2lvbgorZnJvbSBwYWNrYWdpbmcudmVyc2lvbiBpbXBvcnQgVmVyc2lvbgor
CisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAoIm5hbWUiLCAiZXhwZWN0ZWQiKSwK
KyAgICBbCisgICAgICAgICgiZm9vIiwgImZvbyIpLAorICAgICAgICAoIkZvbyIsICJmb28iKSwK
KyAgICAgICAgKCJmT28iLCAiZm9vIiksCisgICAgICAgICgiZm9vLmJhciIsICJmb28tYmFyIiks
CisgICAgICAgICgiRm9vLkJhciIsICJmb28tYmFyIiksCisgICAgICAgICgiRm9vLi4uLi5CYXIi
LCAiZm9vLWJhciIpLAorICAgICAgICAoImZvb19iYXIiLCAiZm9vLWJhciIpLAorICAgICAgICAo
ImZvb19fX2JhciIsICJmb28tYmFyIiksCisgICAgICAgICgiZm9vLWJhciIsICJmb28tYmFyIiks
CisgICAgICAgICgiZm9vLS0tLWJhciIsICJmb28tYmFyIiksCisgICAgXSwKKykKK2RlZiB0ZXN0
X2Nhbm9uaWNhbGl6ZV9uYW1lKG5hbWUsIGV4cGVjdGVkKToKKyAgICBhc3NlcnQgY2Fub25pY2Fs
aXplX25hbWUobmFtZSkgPT0gZXhwZWN0ZWQKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgKCJ2ZXJzaW9uIiwgImV4cGVjdGVkIiksCisgICAgWworICAgICAgICAoVmVyc2lvbigi
MS40LjAiKSwgIjEuNCIpLAorICAgICAgICAoIjEuNC4wIiwgIjEuNCIpLAorICAgICAgICAoIjEu
NDAuMCIsICIxLjQwIiksCisgICAgICAgICgiMS40LjAuMC4wMC4wMDAuMDAwMCIsICIxLjQiKSwK
KyAgICAgICAgKCIxLjAiLCAiMSIpLAorICAgICAgICAoIjEuMCthYmMiLCAiMSthYmMiKSwKKyAg
ICAgICAgKCIxLjAuZGV2MCIsICIxLmRldjAiKSwKKyAgICAgICAgKCIxLjAucG9zdDAiLCAiMS5w
b3N0MCIpLAorICAgICAgICAoIjEuMGEwIiwgIjFhMCIpLAorICAgICAgICAoIjEuMHJjMCIsICIx
cmMwIiksCisgICAgICAgICgiMTAwITAuMCIsICIxMDAhMCIpLAorICAgICAgICAoIjEuMC4xLXRl
c3Q3IiwgIjEuMC4xLXRlc3Q3IiksICAjIExlZ2FjeVZlcnNpb24gaXMgdW5jaGFuZ2VkCisgICAg
XSwKKykKK2RlZiB0ZXN0X2Nhbm9uaWNhbGl6ZV92ZXJzaW9uKHZlcnNpb24sIGV4cGVjdGVkKToK
KyAgICBhc3NlcnQgY2Fub25pY2FsaXplX3ZlcnNpb24odmVyc2lvbikgPT0gZXhwZWN0ZWQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3Rlc3RfdmVyc2lvbi5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL3Rlc3RzL3Rlc3RfdmVyc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjk2MWZjYTIwMWRkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2Fn
aW5nL3Rlc3RzL3Rlc3RfdmVyc2lvbi5weQpAQCAtMCwwICsxLDkwNSBAQAorIyBUaGlzIGZpbGUg
aXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uCisjIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CisjIGZvciBjb21wbGV0ZSBkZXRhaWxzLgor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9m
dW5jdGlvbgorCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCB3YXJu
aW5ncworCitpbXBvcnQgcHJldGVuZAoraW1wb3J0IHB5dGVzdAorCitmcm9tIHBhY2thZ2luZy52
ZXJzaW9uIGltcG9ydCBWZXJzaW9uLCBMZWdhY3lWZXJzaW9uLCBJbnZhbGlkVmVyc2lvbiwgcGFy
c2UKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgKCJ2ZXJzaW9uIiwgImtsYXNz
IiksIFsoIjEuMCIsIFZlcnNpb24pLCAoIjEtMS0xIiwgTGVnYWN5VmVyc2lvbildCispCitkZWYg
dGVzdF9wYXJzZSh2ZXJzaW9uLCBrbGFzcyk6CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyc2Uo
dmVyc2lvbiksIGtsYXNzKQorCisKKyMgVGhpcyBsaXN0IG11c3QgYmUgaW4gdGhlIGNvcnJlY3Qg
c29ydGluZyBvcmRlcgorVkVSU0lPTlMgPSBbCisgICAgIyBJbXBsaWNpdCBlcG9jaCBvZiAwCisg
ICAgIjEuMC5kZXY0NTYiLAorICAgICIxLjBhMSIsCisgICAgIjEuMGEyLmRldjQ1NiIsCisgICAg
IjEuMGExMi5kZXY0NTYiLAorICAgICIxLjBhMTIiLAorICAgICIxLjBiMS5kZXY0NTYiLAorICAg
ICIxLjBiMiIsCisgICAgIjEuMGIyLnBvc3QzNDUuZGV2NDU2IiwKKyAgICAiMS4wYjIucG9zdDM0
NSIsCisgICAgIjEuMGIyLTM0NiIsCisgICAgIjEuMGMxLmRldjQ1NiIsCisgICAgIjEuMGMxIiwK
KyAgICAiMS4wcmMyIiwKKyAgICAiMS4wYzMiLAorICAgICIxLjAiLAorICAgICIxLjAucG9zdDQ1
Ni5kZXYzNCIsCisgICAgIjEuMC5wb3N0NDU2IiwKKyAgICAiMS4xLmRldjEiLAorICAgICIxLjIr
MTIzYWJjIiwKKyAgICAiMS4yKzEyM2FiYzQ1NiIsCisgICAgIjEuMithYmMiLAorICAgICIxLjIr
YWJjMTIzIiwKKyAgICAiMS4yK2FiYzEyM2RlZiIsCisgICAgIjEuMisxMjM0LmFiYyIsCisgICAg
IjEuMisxMjM0NTYiLAorICAgICIxLjIucjMyKzEyMzQ1NiIsCisgICAgIjEuMi5yZXYzMysxMjM0
NTYiLAorICAgICMgRXhwbGljaXQgZXBvY2ggb2YgMQorICAgICIxITEuMC5kZXY0NTYiLAorICAg
ICIxITEuMGExIiwKKyAgICAiMSExLjBhMi5kZXY0NTYiLAorICAgICIxITEuMGExMi5kZXY0NTYi
LAorICAgICIxITEuMGExMiIsCisgICAgIjEhMS4wYjEuZGV2NDU2IiwKKyAgICAiMSExLjBiMiIs
CisgICAgIjEhMS4wYjIucG9zdDM0NS5kZXY0NTYiLAorICAgICIxITEuMGIyLnBvc3QzNDUiLAor
ICAgICIxITEuMGIyLTM0NiIsCisgICAgIjEhMS4wYzEuZGV2NDU2IiwKKyAgICAiMSExLjBjMSIs
CisgICAgIjEhMS4wcmMyIiwKKyAgICAiMSExLjBjMyIsCisgICAgIjEhMS4wIiwKKyAgICAiMSEx
LjAucG9zdDQ1Ni5kZXYzNCIsCisgICAgIjEhMS4wLnBvc3Q0NTYiLAorICAgICIxITEuMS5kZXYx
IiwKKyAgICAiMSExLjIrMTIzYWJjIiwKKyAgICAiMSExLjIrMTIzYWJjNDU2IiwKKyAgICAiMSEx
LjIrYWJjIiwKKyAgICAiMSExLjIrYWJjMTIzIiwKKyAgICAiMSExLjIrYWJjMTIzZGVmIiwKKyAg
ICAiMSExLjIrMTIzNC5hYmMiLAorICAgICIxITEuMisxMjM0NTYiLAorICAgICIxITEuMi5yMzIr
MTIzNDU2IiwKKyAgICAiMSExLjIucmV2MzMrMTIzNDU2IiwKK10KKworCitjbGFzcyBUZXN0VmVy
c2lvbjoKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUykK
KyAgICBkZWYgdGVzdF92YWxpZF92ZXJzaW9ucyhzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgVmVy
c2lvbih2ZXJzaW9uKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAi
dmVyc2lvbiIsCisgICAgICAgIFsKKyAgICAgICAgICAgICMgTm9uIHNlbnNpY2FsIHZlcnNpb25z
IHNob3VsZCBiZSBpbnZhbGlkCisgICAgICAgICAgICAiZnJlbmNoIHRvYXN0IiwKKyAgICAgICAg
ICAgICMgVmVyc2lvbnMgd2l0aCBpbnZhbGlkIGxvY2FsIHZlcnNpb25zCisgICAgICAgICAgICAi
MS4wK2ErIiwKKyAgICAgICAgICAgICIxLjArKyIsCisgICAgICAgICAgICAiMS4wK19mb29iYXIi
LAorICAgICAgICAgICAgIjEuMCtmb28mYXNkIiwKKyAgICAgICAgICAgICIxLjArMSsxIiwKKyAg
ICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfaW52YWxpZF92ZXJzaW9ucyhzZWxmLCB2ZXJz
aW9uKToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEludmFsaWRWZXJzaW9uKToKKyAgICAg
ICAgICAgIFZlcnNpb24odmVyc2lvbikKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAgICAgKCJ2ZXJzaW9uIiwgIm5vcm1hbGl6ZWQiKSwKKyAgICAgICAgWworICAgICAgICAg
ICAgIyBWYXJpb3VzIGRldmVsb3BtZW50IHJlbGVhc2UgaW5jYXJuYXRpb25zCisgICAgICAgICAg
ICAoIjEuMGRldiIsICIxLjAuZGV2MCIpLAorICAgICAgICAgICAgKCIxLjAuZGV2IiwgIjEuMC5k
ZXYwIiksCisgICAgICAgICAgICAoIjEuMGRldjEiLCAiMS4wLmRldjEiKSwKKyAgICAgICAgICAg
ICgiMS4wZGV2IiwgIjEuMC5kZXYwIiksCisgICAgICAgICAgICAoIjEuMC1kZXYiLCAiMS4wLmRl
djAiKSwKKyAgICAgICAgICAgICgiMS4wLWRldjEiLCAiMS4wLmRldjEiKSwKKyAgICAgICAgICAg
ICgiMS4wREVWIiwgIjEuMC5kZXYwIiksCisgICAgICAgICAgICAoIjEuMC5ERVYiLCAiMS4wLmRl
djAiKSwKKyAgICAgICAgICAgICgiMS4wREVWMSIsICIxLjAuZGV2MSIpLAorICAgICAgICAgICAg
KCIxLjBERVYiLCAiMS4wLmRldjAiKSwKKyAgICAgICAgICAgICgiMS4wLkRFVjEiLCAiMS4wLmRl
djEiKSwKKyAgICAgICAgICAgICgiMS4wLURFViIsICIxLjAuZGV2MCIpLAorICAgICAgICAgICAg
KCIxLjAtREVWMSIsICIxLjAuZGV2MSIpLAorICAgICAgICAgICAgIyBWYXJpb3VzIGFscGhhIGlu
Y2FybmF0aW9ucworICAgICAgICAgICAgKCIxLjBhIiwgIjEuMGEwIiksCisgICAgICAgICAgICAo
IjEuMC5hIiwgIjEuMGEwIiksCisgICAgICAgICAgICAoIjEuMC5hMSIsICIxLjBhMSIpLAorICAg
ICAgICAgICAgKCIxLjAtYSIsICIxLjBhMCIpLAorICAgICAgICAgICAgKCIxLjAtYTEiLCAiMS4w
YTEiKSwKKyAgICAgICAgICAgICgiMS4wYWxwaGEiLCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgi
MS4wLmFscGhhIiwgIjEuMGEwIiksCisgICAgICAgICAgICAoIjEuMC5hbHBoYTEiLCAiMS4wYTEi
KSwKKyAgICAgICAgICAgICgiMS4wLWFscGhhIiwgIjEuMGEwIiksCisgICAgICAgICAgICAoIjEu
MC1hbHBoYTEiLCAiMS4wYTEiKSwKKyAgICAgICAgICAgICgiMS4wQSIsICIxLjBhMCIpLAorICAg
ICAgICAgICAgKCIxLjAuQSIsICIxLjBhMCIpLAorICAgICAgICAgICAgKCIxLjAuQTEiLCAiMS4w
YTEiKSwKKyAgICAgICAgICAgICgiMS4wLUEiLCAiMS4wYTAiKSwKKyAgICAgICAgICAgICgiMS4w
LUExIiwgIjEuMGExIiksCisgICAgICAgICAgICAoIjEuMEFMUEhBIiwgIjEuMGEwIiksCisgICAg
ICAgICAgICAoIjEuMC5BTFBIQSIsICIxLjBhMCIpLAorICAgICAgICAgICAgKCIxLjAuQUxQSEEx
IiwgIjEuMGExIiksCisgICAgICAgICAgICAoIjEuMC1BTFBIQSIsICIxLjBhMCIpLAorICAgICAg
ICAgICAgKCIxLjAtQUxQSEExIiwgIjEuMGExIiksCisgICAgICAgICAgICAjIFZhcmlvdXMgYmV0
YSBpbmNhcm5hdGlvbnMKKyAgICAgICAgICAgICgiMS4wYiIsICIxLjBiMCIpLAorICAgICAgICAg
ICAgKCIxLjAuYiIsICIxLjBiMCIpLAorICAgICAgICAgICAgKCIxLjAuYjEiLCAiMS4wYjEiKSwK
KyAgICAgICAgICAgICgiMS4wLWIiLCAiMS4wYjAiKSwKKyAgICAgICAgICAgICgiMS4wLWIxIiwg
IjEuMGIxIiksCisgICAgICAgICAgICAoIjEuMGJldGEiLCAiMS4wYjAiKSwKKyAgICAgICAgICAg
ICgiMS4wLmJldGEiLCAiMS4wYjAiKSwKKyAgICAgICAgICAgICgiMS4wLmJldGExIiwgIjEuMGIx
IiksCisgICAgICAgICAgICAoIjEuMC1iZXRhIiwgIjEuMGIwIiksCisgICAgICAgICAgICAoIjEu
MC1iZXRhMSIsICIxLjBiMSIpLAorICAgICAgICAgICAgKCIxLjBCIiwgIjEuMGIwIiksCisgICAg
ICAgICAgICAoIjEuMC5CIiwgIjEuMGIwIiksCisgICAgICAgICAgICAoIjEuMC5CMSIsICIxLjBi
MSIpLAorICAgICAgICAgICAgKCIxLjAtQiIsICIxLjBiMCIpLAorICAgICAgICAgICAgKCIxLjAt
QjEiLCAiMS4wYjEiKSwKKyAgICAgICAgICAgICgiMS4wQkVUQSIsICIxLjBiMCIpLAorICAgICAg
ICAgICAgKCIxLjAuQkVUQSIsICIxLjBiMCIpLAorICAgICAgICAgICAgKCIxLjAuQkVUQTEiLCAi
MS4wYjEiKSwKKyAgICAgICAgICAgICgiMS4wLUJFVEEiLCAiMS4wYjAiKSwKKyAgICAgICAgICAg
ICgiMS4wLUJFVEExIiwgIjEuMGIxIiksCisgICAgICAgICAgICAjIFZhcmlvdXMgcmVsZWFzZSBj
YW5kaWRhdGUgaW5jYXJuYXRpb25zCisgICAgICAgICAgICAoIjEuMGMiLCAiMS4wcmMwIiksCisg
ICAgICAgICAgICAoIjEuMC5jIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAgKCIxLjAuYzEiLCAi
MS4wcmMxIiksCisgICAgICAgICAgICAoIjEuMC1jIiwgIjEuMHJjMCIpLAorICAgICAgICAgICAg
KCIxLjAtYzEiLCAiMS4wcmMxIiksCisgICAgICAgICAgICAoIjEuMHJjIiwgIjEuMHJjMCIpLAor
ICAgICAgICAgICAgKCIxLjAucmMiLCAiMS4wcmMwIiksCisgICAgICAgICAgICAoIjEuMC5yYzEi
LCAiMS4wcmMxIiksCisgICAgICAgICAgICAoIjEuMC1yYyIsICIxLjByYzAiKSwKKyAgICAgICAg
ICAgICgiMS4wLXJjMSIsICIxLjByYzEiKSwKKyAgICAgICAgICAgICgiMS4wQyIsICIxLjByYzAi
KSwKKyAgICAgICAgICAgICgiMS4wLkMiLCAiMS4wcmMwIiksCisgICAgICAgICAgICAoIjEuMC5D
MSIsICIxLjByYzEiKSwKKyAgICAgICAgICAgICgiMS4wLUMiLCAiMS4wcmMwIiksCisgICAgICAg
ICAgICAoIjEuMC1DMSIsICIxLjByYzEiKSwKKyAgICAgICAgICAgICgiMS4wUkMiLCAiMS4wcmMw
IiksCisgICAgICAgICAgICAoIjEuMC5SQyIsICIxLjByYzAiKSwKKyAgICAgICAgICAgICgiMS4w
LlJDMSIsICIxLjByYzEiKSwKKyAgICAgICAgICAgICgiMS4wLVJDIiwgIjEuMHJjMCIpLAorICAg
ICAgICAgICAgKCIxLjAtUkMxIiwgIjEuMHJjMSIpLAorICAgICAgICAgICAgIyBWYXJpb3VzIHBv
c3QgcmVsZWFzZSBpbmNhcm5hdGlvbnMKKyAgICAgICAgICAgICgiMS4wcG9zdCIsICIxLjAucG9z
dDAiKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3QiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAg
ICAoIjEuMHBvc3QxIiwgIjEuMC5wb3N0MSIpLAorICAgICAgICAgICAgKCIxLjBwb3N0IiwgIjEu
MC5wb3N0MCIpLAorICAgICAgICAgICAgKCIxLjAtcG9zdCIsICIxLjAucG9zdDAiKSwKKyAgICAg
ICAgICAgICgiMS4wLXBvc3QxIiwgIjEuMC5wb3N0MSIpLAorICAgICAgICAgICAgKCIxLjBQT1NU
IiwgIjEuMC5wb3N0MCIpLAorICAgICAgICAgICAgKCIxLjAuUE9TVCIsICIxLjAucG9zdDAiKSwK
KyAgICAgICAgICAgICgiMS4wUE9TVDEiLCAiMS4wLnBvc3QxIiksCisgICAgICAgICAgICAoIjEu
MFBPU1QiLCAiMS4wLnBvc3QwIiksCisgICAgICAgICAgICAoIjEuMHIiLCAiMS4wLnBvc3QwIiks
CisgICAgICAgICAgICAoIjEuMHJldiIsICIxLjAucG9zdDAiKSwKKyAgICAgICAgICAgICgiMS4w
LlBPU1QxIiwgIjEuMC5wb3N0MSIpLAorICAgICAgICAgICAgKCIxLjAucjEiLCAiMS4wLnBvc3Qx
IiksCisgICAgICAgICAgICAoIjEuMC5yZXYxIiwgIjEuMC5wb3N0MSIpLAorICAgICAgICAgICAg
KCIxLjAtUE9TVCIsICIxLjAucG9zdDAiKSwKKyAgICAgICAgICAgICgiMS4wLVBPU1QxIiwgIjEu
MC5wb3N0MSIpLAorICAgICAgICAgICAgKCIxLjAtNSIsICIxLjAucG9zdDUiKSwKKyAgICAgICAg
ICAgICgiMS4wLXI1IiwgIjEuMC5wb3N0NSIpLAorICAgICAgICAgICAgKCIxLjAtcmV2NSIsICIx
LjAucG9zdDUiKSwKKyAgICAgICAgICAgICMgTG9jYWwgdmVyc2lvbiBjYXNlIGluc2Vuc2l0aXZp
dHkKKyAgICAgICAgICAgICgiMS4wK0FiQyIsICIxLjArYWJjIiksCisgICAgICAgICAgICAjIElu
dGVnZXIgTm9ybWFsaXphdGlvbgorICAgICAgICAgICAgKCIxLjAxIiwgIjEuMSIpLAorICAgICAg
ICAgICAgKCIxLjBhMDUiLCAiMS4wYTUiKSwKKyAgICAgICAgICAgICgiMS4wYjA3IiwgIjEuMGI3
IiksCisgICAgICAgICAgICAoIjEuMGMwNTYiLCAiMS4wcmM1NiIpLAorICAgICAgICAgICAgKCIx
LjByYzA5IiwgIjEuMHJjOSIpLAorICAgICAgICAgICAgKCIxLjAucG9zdDAwMCIsICIxLjAucG9z
dDAiKSwKKyAgICAgICAgICAgICgiMS4xLmRldjA5MDAwIiwgIjEuMS5kZXY5MDAwIiksCisgICAg
ICAgICAgICAoIjAwITEuMiIsICIxLjIiKSwKKyAgICAgICAgICAgICgiMDEwMCEwLjAiLCAiMTAw
ITAuMCIpLAorICAgICAgICAgICAgIyBWYXJpb3VzIG90aGVyIG5vcm1hbGl6YXRpb25zCisgICAg
ICAgICAgICAoInYxLjAiLCAiMS4wIiksCisgICAgICAgICAgICAoIiAgIHYxLjBcdFxuIiwgIjEu
MCIpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF9ub3JtYWxpemVkX3ZlcnNpb25z
KHNlbGYsIHZlcnNpb24sIG5vcm1hbGl6ZWQpOgorICAgICAgICBhc3NlcnQgc3RyKFZlcnNpb24o
dmVyc2lvbikpID09IG5vcm1hbGl6ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAgICAgKCJ2ZXJzaW9uIiwgImV4cGVjdGVkIiksCisgICAgICAgIFsKKyAgICAgICAgICAg
ICgiMS4wLmRldjQ1NiIsICIxLjAuZGV2NDU2IiksCisgICAgICAgICAgICAoIjEuMGExIiwgIjEu
MGExIiksCisgICAgICAgICAgICAoIjEuMGEyLmRldjQ1NiIsICIxLjBhMi5kZXY0NTYiKSwKKyAg
ICAgICAgICAgICgiMS4wYTEyLmRldjQ1NiIsICIxLjBhMTIuZGV2NDU2IiksCisgICAgICAgICAg
ICAoIjEuMGExMiIsICIxLjBhMTIiKSwKKyAgICAgICAgICAgICgiMS4wYjEuZGV2NDU2IiwgIjEu
MGIxLmRldjQ1NiIpLAorICAgICAgICAgICAgKCIxLjBiMiIsICIxLjBiMiIpLAorICAgICAgICAg
ICAgKCIxLjBiMi5wb3N0MzQ1LmRldjQ1NiIsICIxLjBiMi5wb3N0MzQ1LmRldjQ1NiIpLAorICAg
ICAgICAgICAgKCIxLjBiMi5wb3N0MzQ1IiwgIjEuMGIyLnBvc3QzNDUiKSwKKyAgICAgICAgICAg
ICgiMS4wcmMxLmRldjQ1NiIsICIxLjByYzEuZGV2NDU2IiksCisgICAgICAgICAgICAoIjEuMHJj
MSIsICIxLjByYzEiKSwKKyAgICAgICAgICAgICgiMS4wIiwgIjEuMCIpLAorICAgICAgICAgICAg
KCIxLjAucG9zdDQ1Ni5kZXYzNCIsICIxLjAucG9zdDQ1Ni5kZXYzNCIpLAorICAgICAgICAgICAg
KCIxLjAucG9zdDQ1NiIsICIxLjAucG9zdDQ1NiIpLAorICAgICAgICAgICAgKCIxLjAuMSIsICIx
LjAuMSIpLAorICAgICAgICAgICAgKCIwITEuMC4yIiwgIjEuMC4yIiksCisgICAgICAgICAgICAo
IjEuMC4zKzciLCAiMS4wLjMrNyIpLAorICAgICAgICAgICAgKCIwITEuMC40KzguMCIsICIxLjAu
NCs4LjAiKSwKKyAgICAgICAgICAgICgiMS4wLjUrOS41IiwgIjEuMC41KzkuNSIpLAorICAgICAg
ICAgICAgKCIxLjIrMTIzNC5hYmMiLCAiMS4yKzEyMzQuYWJjIiksCisgICAgICAgICAgICAoIjEu
MisxMjM0NTYiLCAiMS4yKzEyMzQ1NiIpLAorICAgICAgICAgICAgKCIxLjIrMTIzYWJjIiwgIjEu
MisxMjNhYmMiKSwKKyAgICAgICAgICAgICgiMS4yKzEyM2FiYzQ1NiIsICIxLjIrMTIzYWJjNDU2
IiksCisgICAgICAgICAgICAoIjEuMithYmMiLCAiMS4yK2FiYyIpLAorICAgICAgICAgICAgKCIx
LjIrYWJjMTIzIiwgIjEuMithYmMxMjMiKSwKKyAgICAgICAgICAgICgiMS4yK2FiYzEyM2RlZiIs
ICIxLjIrYWJjMTIzZGVmIiksCisgICAgICAgICAgICAoIjEuMS5kZXYxIiwgIjEuMS5kZXYxIiks
CisgICAgICAgICAgICAoIjchMS4wLmRldjQ1NiIsICI3ITEuMC5kZXY0NTYiKSwKKyAgICAgICAg
ICAgICgiNyExLjBhMSIsICI3ITEuMGExIiksCisgICAgICAgICAgICAoIjchMS4wYTIuZGV2NDU2
IiwgIjchMS4wYTIuZGV2NDU2IiksCisgICAgICAgICAgICAoIjchMS4wYTEyLmRldjQ1NiIsICI3
ITEuMGExMi5kZXY0NTYiKSwKKyAgICAgICAgICAgICgiNyExLjBhMTIiLCAiNyExLjBhMTIiKSwK
KyAgICAgICAgICAgICgiNyExLjBiMS5kZXY0NTYiLCAiNyExLjBiMS5kZXY0NTYiKSwKKyAgICAg
ICAgICAgICgiNyExLjBiMiIsICI3ITEuMGIyIiksCisgICAgICAgICAgICAoIjchMS4wYjIucG9z
dDM0NS5kZXY0NTYiLCAiNyExLjBiMi5wb3N0MzQ1LmRldjQ1NiIpLAorICAgICAgICAgICAgKCI3
ITEuMGIyLnBvc3QzNDUiLCAiNyExLjBiMi5wb3N0MzQ1IiksCisgICAgICAgICAgICAoIjchMS4w
cmMxLmRldjQ1NiIsICI3ITEuMHJjMS5kZXY0NTYiKSwKKyAgICAgICAgICAgICgiNyExLjByYzEi
LCAiNyExLjByYzEiKSwKKyAgICAgICAgICAgICgiNyExLjAiLCAiNyExLjAiKSwKKyAgICAgICAg
ICAgICgiNyExLjAucG9zdDQ1Ni5kZXYzNCIsICI3ITEuMC5wb3N0NDU2LmRldjM0IiksCisgICAg
ICAgICAgICAoIjchMS4wLnBvc3Q0NTYiLCAiNyExLjAucG9zdDQ1NiIpLAorICAgICAgICAgICAg
KCI3ITEuMC4xIiwgIjchMS4wLjEiKSwKKyAgICAgICAgICAgICgiNyExLjAuMiIsICI3ITEuMC4y
IiksCisgICAgICAgICAgICAoIjchMS4wLjMrNyIsICI3ITEuMC4zKzciKSwKKyAgICAgICAgICAg
ICgiNyExLjAuNCs4LjAiLCAiNyExLjAuNCs4LjAiKSwKKyAgICAgICAgICAgICgiNyExLjAuNSs5
LjUiLCAiNyExLjAuNSs5LjUiKSwKKyAgICAgICAgICAgICgiNyExLjEuZGV2MSIsICI3ITEuMS5k
ZXYxIiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25fc3RyX3JlcHIo
c2VsZiwgdmVyc2lvbiwgZXhwZWN0ZWQpOgorICAgICAgICBhc3NlcnQgc3RyKFZlcnNpb24odmVy
c2lvbikpID09IGV4cGVjdGVkCisgICAgICAgIGFzc2VydCByZXByKFZlcnNpb24odmVyc2lvbikp
ID09ICI8VmVyc2lvbih7MH0pPiIuZm9ybWF0KHJlcHIoZXhwZWN0ZWQpKQorCisgICAgZGVmIHRl
c3RfdmVyc2lvbl9yY19hbmRfY19lcXVhbHMoc2VsZik6CisgICAgICAgIGFzc2VydCBWZXJzaW9u
KCIxLjByYzEiKSA9PSBWZXJzaW9uKCIxLjBjMSIpCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoInZlcnNpb24iLCBWRVJTSU9OUykKKyAgICBkZWYgdGVzdF92ZXJzaW9uX2hhc2goc2Vs
ZiwgdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBoYXNoKFZlcnNpb24odmVyc2lvbikpID09IGhh
c2goVmVyc2lvbih2ZXJzaW9uKSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAg
ICAgICAgKCJ2ZXJzaW9uIiwgInB1YmxpYyIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEu
MCIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMS4wLmRldjAiLCAiMS4wLmRldjAiKSwKKyAgICAg
ICAgICAgICgiMS4wLmRldjYiLCAiMS4wLmRldjYiKSwKKyAgICAgICAgICAgICgiMS4wYTEiLCAi
MS4wYTEiKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUiLCAiMS4wYTEucG9zdDUiKSwKKyAg
ICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NiIsICIxLjBhMS5wb3N0NS5kZXY2IiksCisgICAg
ICAgICAgICAoIjEuMHJjNCIsICIxLjByYzQiKSwKKyAgICAgICAgICAgICgiMS4wLnBvc3Q1Iiwg
IjEuMC5wb3N0NSIpLAorICAgICAgICAgICAgKCIxITEuMCIsICIxITEuMCIpLAorICAgICAgICAg
ICAgKCIxITEuMC5kZXY2IiwgIjEhMS4wLmRldjYiKSwKKyAgICAgICAgICAgICgiMSExLjBhMSIs
ICIxITEuMGExIiksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUiLCAiMSExLjBhMS5wb3N0
NSIpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYiLCAiMSExLjBhMS5wb3N0NS5k
ZXY2IiksCisgICAgICAgICAgICAoIjEhMS4wcmM0IiwgIjEhMS4wcmM0IiksCisgICAgICAgICAg
ICAoIjEhMS4wLnBvc3Q1IiwgIjEhMS4wLnBvc3Q1IiksCisgICAgICAgICAgICAoIjEuMCtkZWFk
YmVlZiIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMS4wLmRldjYrZGVhZGJlZWYiLCAiMS4wLmRl
djYiKSwKKyAgICAgICAgICAgICgiMS4wYTErZGVhZGJlZWYiLCAiMS4wYTEiKSwKKyAgICAgICAg
ICAgICgiMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAiMS4wYTEucG9zdDUiKSwKKyAgICAgICAgICAg
ICgiMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsICIxLjBhMS5wb3N0NS5kZXY2IiksCisgICAg
ICAgICAgICAoIjEuMHJjNCtkZWFkYmVlZiIsICIxLjByYzQiKSwKKyAgICAgICAgICAgICgiMS4w
LnBvc3Q1K2RlYWRiZWVmIiwgIjEuMC5wb3N0NSIpLAorICAgICAgICAgICAgKCIxITEuMCtkZWFk
YmVlZiIsICIxITEuMCIpLAorICAgICAgICAgICAgKCIxITEuMC5kZXY2K2RlYWRiZWVmIiwgIjEh
MS4wLmRldjYiKSwKKyAgICAgICAgICAgICgiMSExLjBhMStkZWFkYmVlZiIsICIxITEuMGExIiks
CisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAiMSExLjBhMS5wb3N0NSIp
LAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCAiMSExLjBhMS5w
b3N0NS5kZXY2IiksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwgIjEhMS4wcmM0
IiksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVmIiwgIjEhMS4wLnBvc3Q1Iiks
CisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25fcHVibGljKHNlbGYsIHZl
cnNpb24sIHB1YmxpYyk6CisgICAgICAgIGFzc2VydCBWZXJzaW9uKHZlcnNpb24pLnB1YmxpYyA9
PSBwdWJsaWMKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJ2ZXJz
aW9uIiwgImJhc2VfdmVyc2lvbiIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEuMCIsICIx
LjAiKSwKKyAgICAgICAgICAgICgiMS4wLmRldjAiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEu
MC5kZXY2IiwgIjEuMCIpLAorICAgICAgICAgICAgKCIxLjBhMSIsICIxLjAiKSwKKyAgICAgICAg
ICAgICgiMS4wYTEucG9zdDUiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1LmRl
djYiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMHJjNCIsICIxLjAiKSwKKyAgICAgICAgICAg
ICgiMS4wLnBvc3Q1IiwgIjEuMCIpLAorICAgICAgICAgICAgKCIxITEuMCIsICIxITEuMCIpLAor
ICAgICAgICAgICAgKCIxITEuMC5kZXY2IiwgIjEhMS4wIiksCisgICAgICAgICAgICAoIjEhMS4w
YTEiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NSIsICIxITEuMCIpLAor
ICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYiLCAiMSExLjAiKSwKKyAgICAgICAgICAg
ICgiMSExLjByYzQiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSExLjAucG9zdDUiLCAiMSEx
LjAiKSwKKyAgICAgICAgICAgICgiMS4wK2RlYWRiZWVmIiwgIjEuMCIpLAorICAgICAgICAgICAg
KCIxLjAuZGV2NitkZWFkYmVlZiIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMS4wYTErZGVhZGJl
ZWYiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1K2RlYWRiZWVmIiwgIjEuMCIp
LAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgIjEuMCIpLAorICAg
ICAgICAgICAgKCIxLjByYzQrZGVhZGJlZWYiLCAiMS4wIiksCisgICAgICAgICAgICAoIjEuMC5w
b3N0NStkZWFkYmVlZiIsICIxLjAiKSwKKyAgICAgICAgICAgICgiMSExLjArZGVhZGJlZWYiLCAi
MSExLjAiKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFkYmVlZiIsICIxITEuMCIpLAor
ICAgICAgICAgICAgKCIxITEuMGExK2RlYWRiZWVmIiwgIjEhMS4wIiksCisgICAgICAgICAgICAo
IjEhMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAiMSExLjAiKSwKKyAgICAgICAgICAgICgiMSExLjBh
MS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgIjEhMS4wIiksCisgICAgICAgICAgICAoIjEhMS4wcmM0
K2RlYWRiZWVmIiwgIjEhMS4wIiksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVm
IiwgIjEhMS4wIiksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25fYmFz
ZV92ZXJzaW9uKHNlbGYsIHZlcnNpb24sIGJhc2VfdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBW
ZXJzaW9uKHZlcnNpb24pLmJhc2VfdmVyc2lvbiA9PSBiYXNlX3ZlcnNpb24KKworICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJ2ZXJzaW9uIiwgImVwb2NoIiksCisgICAg
ICAgIFsKKyAgICAgICAgICAgICgiMS4wIiwgMCksCisgICAgICAgICAgICAoIjEuMC5kZXYwIiwg
MCksCisgICAgICAgICAgICAoIjEuMC5kZXY2IiwgMCksCisgICAgICAgICAgICAoIjEuMGExIiwg
MCksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1IiwgMCksCisgICAgICAgICAgICAoIjEuMGEx
LnBvc3Q1LmRldjYiLCAwKSwKKyAgICAgICAgICAgICgiMS4wcmM0IiwgMCksCisgICAgICAgICAg
ICAoIjEuMC5wb3N0NSIsIDApLAorICAgICAgICAgICAgKCIxITEuMCIsIDEpLAorICAgICAgICAg
ICAgKCIxITEuMC5kZXY2IiwgMSksCisgICAgICAgICAgICAoIjEhMS4wYTEiLCAxKSwKKyAgICAg
ICAgICAgICgiMSExLjBhMS5wb3N0NSIsIDEpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1
LmRldjYiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjByYzQiLCAxKSwKKyAgICAgICAgICAgICgi
MSExLjAucG9zdDUiLCAxKSwKKyAgICAgICAgICAgICgiMS4wK2RlYWRiZWVmIiwgMCksCisgICAg
ICAgICAgICAoIjEuMC5kZXY2K2RlYWRiZWVmIiwgMCksCisgICAgICAgICAgICAoIjEuMGExK2Rl
YWRiZWVmIiwgMCksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1K2RlYWRiZWVmIiwgMCksCisg
ICAgICAgICAgICAoIjEuMGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCAwKSwKKyAgICAgICAgICAg
ICgiMS4wcmM0K2RlYWRiZWVmIiwgMCksCisgICAgICAgICAgICAoIjEuMC5wb3N0NStkZWFkYmVl
ZiIsIDApLAorICAgICAgICAgICAgKCIxITEuMCtkZWFkYmVlZiIsIDEpLAorICAgICAgICAgICAg
KCIxITEuMC5kZXY2K2RlYWRiZWVmIiwgMSksCisgICAgICAgICAgICAoIjEhMS4wYTErZGVhZGJl
ZWYiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NStkZWFkYmVlZiIsIDEpLAorICAg
ICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCAxKSwKKyAgICAgICAgICAg
ICgiMSExLjByYzQrZGVhZGJlZWYiLCAxKSwKKyAgICAgICAgICAgICgiMSExLjAucG9zdDUrZGVh
ZGJlZWYiLCAxKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfdmVyc2lvbl9lcG9j
aChzZWxmLCB2ZXJzaW9uLCBlcG9jaCk6CisgICAgICAgIGFzc2VydCBWZXJzaW9uKHZlcnNpb24p
LmVwb2NoID09IGVwb2NoCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAg
ICgidmVyc2lvbiIsICJyZWxlYXNlIiksCisgICAgICAgIFsKKyAgICAgICAgICAgICgiMS4wIiwg
KDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wLmRldjAiLCAoMSwgMCkpLAorICAgICAgICAgICAg
KCIxLjAuZGV2NiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEuMGExIiwgKDEsIDApKSwKKyAg
ICAgICAgICAgICgiMS4wYTEucG9zdDUiLCAoMSwgMCkpLAorICAgICAgICAgICAgKCIxLjBhMS5w
b3N0NS5kZXY2IiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wcmM0IiwgKDEsIDApKSwKKyAg
ICAgICAgICAgICgiMS4wLnBvc3Q1IiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMSExLjAiLCAo
MSwgMCkpLAorICAgICAgICAgICAgKCIxITEuMC5kZXY2IiwgKDEsIDApKSwKKyAgICAgICAgICAg
ICgiMSExLjBhMSIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUiLCAoMSwg
MCkpLAorICAgICAgICAgICAgKCIxITEuMGExLnBvc3Q1LmRldjYiLCAoMSwgMCkpLAorICAgICAg
ICAgICAgKCIxITEuMHJjNCIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1Iiwg
KDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wK2RlYWRiZWVmIiwgKDEsIDApKSwKKyAgICAgICAg
ICAgICgiMS4wLmRldjYrZGVhZGJlZWYiLCAoMSwgMCkpLAorICAgICAgICAgICAgKCIxLjBhMStk
ZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1K2RlYWRiZWVmIiwg
KDEsIDApKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NitkZWFkYmVlZiIsICgxLCAw
KSksCisgICAgICAgICAgICAoIjEuMHJjNCtkZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAgICAg
ICAoIjEuMC5wb3N0NStkZWFkYmVlZiIsICgxLCAwKSksCisgICAgICAgICAgICAoIjEhMS4wK2Rl
YWRiZWVmIiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFkYmVlZiIsICgx
LCAwKSksCisgICAgICAgICAgICAoIjEhMS4wYTErZGVhZGJlZWYiLCAoMSwgMCkpLAorICAgICAg
ICAgICAgKCIxITEuMGExLnBvc3Q1K2RlYWRiZWVmIiwgKDEsIDApKSwKKyAgICAgICAgICAgICgi
MSExLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgKDEsIDApKSwKKyAgICAgICAgICAgICgiMSEx
LjByYzQrZGVhZGJlZWYiLCAoMSwgMCkpLAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NStkZWFk
YmVlZiIsICgxLCAwKSksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25f
cmVsZWFzZShzZWxmLCB2ZXJzaW9uLCByZWxlYXNlKToKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24o
dmVyc2lvbikucmVsZWFzZSA9PSByZWxlYXNlCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoCisgICAgICAgICgidmVyc2lvbiIsICJsb2NhbCIpLAorICAgICAgICBbCisgICAgICAgICAg
ICAoIjEuMCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAuZGV2MCIsIE5vbmUpLAorICAgICAg
ICAgICAgKCIxLjAuZGV2NiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMSIsIE5vbmUpLAor
ICAgICAgICAgICAgKCIxLjBhMS5wb3N0NSIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMS5w
b3N0NS5kZXY2IiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMHJjNCIsIE5vbmUpLAorICAgICAg
ICAgICAgKCIxLjAucG9zdDUiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjAiLCBOb25lKSwK
KyAgICAgICAgICAgICgiMSExLjAuZGV2NiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMGEx
IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUiLCBOb25lKSwKKyAgICAgICAg
ICAgICgiMSExLjBhMS5wb3N0NS5kZXY2IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wcmM0
IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1IiwgTm9uZSksCisgICAgICAgICAg
ICAoIjEuMCtkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAgICAgICAgKCIxLjAuZGV2Nitk
ZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAgICAgICAgKCIxLjBhMStkZWFkYmVlZiIsICJk
ZWFkYmVlZiIpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFkYmVlZiIsICJkZWFkYmVl
ZiIpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgImRlYWRiZWVm
IiksCisgICAgICAgICAgICAoIjEuMHJjNCtkZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAg
ICAgICAgKCIxLjAucG9zdDUrZGVhZGJlZWYiLCAiZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICgi
MSExLjArZGVhZGJlZWYiLCAiZGVhZGJlZWYiKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2Nitk
ZWFkYmVlZiIsICJkZWFkYmVlZiIpLAorICAgICAgICAgICAgKCIxITEuMGExK2RlYWRiZWVmIiwg
ImRlYWRiZWVmIiksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAiZGVh
ZGJlZWYiKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwgImRl
YWRiZWVmIiksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwgImRlYWRiZWVmIiks
CisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVmIiwgImRlYWRiZWVmIiksCisgICAg
ICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25fbG9jYWwoc2VsZiwgdmVyc2lvbiwg
bG9jYWwpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5sb2NhbCA9PSBsb2NhbAor
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoInZlcnNpb24iLCAicHJl
IiksCisgICAgICAgIFsKKyAgICAgICAgICAgICgiMS4wIiwgTm9uZSksCisgICAgICAgICAgICAo
IjEuMC5kZXYwIiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMC5kZXY2IiwgTm9uZSksCisgICAg
ICAgICAgICAoIjEuMGExIiwgKCJhIiwgMSkpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NSIs
ICgiYSIsIDEpKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUuZGV2NiIsICgiYSIsIDEpKSwK
KyAgICAgICAgICAgICgiMS4wcmM0IiwgKCJyYyIsIDQpKSwKKyAgICAgICAgICAgICgiMS4wLnBv
c3Q1IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wIiwgTm9uZSksCisgICAgICAgICAgICAo
IjEhMS4wLmRldjYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjBhMSIsICgiYSIsIDEpKSwK
KyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NSIsICgiYSIsIDEpKSwKKyAgICAgICAgICAgICgi
MSExLjBhMS5wb3N0NS5kZXY2IiwgKCJhIiwgMSkpLAorICAgICAgICAgICAgKCIxITEuMHJjNCIs
ICgicmMiLCA0KSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1IiwgTm9uZSksCisgICAgICAg
ICAgICAoIjEuMCtkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAuZGV2NitkZWFk
YmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMStkZWFkYmVlZiIsICgiYSIsIDEpKSwK
KyAgICAgICAgICAgICgiMS4wYTEucG9zdDUrZGVhZGJlZWYiLCAoImEiLCAxKSksCisgICAgICAg
ICAgICAoIjEuMGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCAoImEiLCAxKSksCisgICAgICAgICAg
ICAoIjEuMHJjNCtkZWFkYmVlZiIsICgicmMiLCA0KSksCisgICAgICAgICAgICAoIjEuMC5wb3N0
NStkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMCtkZWFkYmVlZiIsIE5vbmUp
LAorICAgICAgICAgICAgKCIxITEuMC5kZXY2K2RlYWRiZWVmIiwgTm9uZSksCisgICAgICAgICAg
ICAoIjEhMS4wYTErZGVhZGJlZWYiLCAoImEiLCAxKSksCisgICAgICAgICAgICAoIjEhMS4wYTEu
cG9zdDUrZGVhZGJlZWYiLCAoImEiLCAxKSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUu
ZGV2NitkZWFkYmVlZiIsICgiYSIsIDEpKSwKKyAgICAgICAgICAgICgiMSExLjByYzQrZGVhZGJl
ZWYiLCAoInJjIiwgNCkpLAorICAgICAgICAgICAgKCIxITEuMC5wb3N0NStkZWFkYmVlZiIsIE5v
bmUpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX3ByZShzZWxmLCB2
ZXJzaW9uLCBwcmUpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5wcmUgPT0gcHJl
CisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIsICJl
eHBlY3RlZCIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEuMC5kZXYwIiwgVHJ1ZSksCisg
ICAgICAgICAgICAoIjEuMC5kZXYxIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMGExLmRldjEi
LCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wYjEuZGV2MSIsIFRydWUpLAorICAgICAgICAgICAg
KCIxLjBjMS5kZXYxIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMHJjMS5kZXYxIiwgVHJ1ZSks
CisgICAgICAgICAgICAoIjEuMGExIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMGIxIiwgVHJ1
ZSksCisgICAgICAgICAgICAoIjEuMGMxIiwgVHJ1ZSksCisgICAgICAgICAgICAoIjEuMHJjMSIs
IFRydWUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0MS5kZXYxIiwgVHJ1ZSksCisgICAgICAg
ICAgICAoIjEuMGIxLnBvc3QxLmRldjEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wYzEucG9z
dDEuZGV2MSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjByYzEucG9zdDEuZGV2MSIsIFRydWUp
LAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0MSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjBi
MS5wb3N0MSIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjBjMS5wb3N0MSIsIFRydWUpLAorICAg
ICAgICAgICAgKCIxLjByYzEucG9zdDEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wIiwgRmFs
c2UpLAorICAgICAgICAgICAgKCIxLjArZGV2IiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjAu
cG9zdDEiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMC5wb3N0MStkZXYiLCBGYWxzZSksCisg
ICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25faXNfcHJlcmVsZWFzZShzZWxm
LCB2ZXJzaW9uLCBleHBlY3RlZCk6CisgICAgICAgIGFzc2VydCBWZXJzaW9uKHZlcnNpb24pLmlz
X3ByZXJlbGVhc2UgaXMgZXhwZWN0ZWQKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgK
KyAgICAgICAgKCJ2ZXJzaW9uIiwgImRldiIpLAorICAgICAgICBbCisgICAgICAgICAgICAoIjEu
MCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAuZGV2MCIsIDApLAorICAgICAgICAgICAgKCIx
LjAuZGV2NiIsIDYpLAorICAgICAgICAgICAgKCIxLjBhMSIsIE5vbmUpLAorICAgICAgICAgICAg
KCIxLjBhMS5wb3N0NSIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2Iiwg
NiksCisgICAgICAgICAgICAoIjEuMHJjNCIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjAucG9z
dDUiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjAiLCBOb25lKSwKKyAgICAgICAgICAgICgi
MSExLjAuZGV2NiIsIDYpLAorICAgICAgICAgICAgKCIxITEuMGExIiwgTm9uZSksCisgICAgICAg
ICAgICAoIjEhMS4wYTEucG9zdDUiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0
NS5kZXY2IiwgNiksCisgICAgICAgICAgICAoIjEhMS4wcmM0IiwgTm9uZSksCisgICAgICAgICAg
ICAoIjEhMS4wLnBvc3Q1IiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMCtkZWFkYmVlZiIsIE5v
bmUpLAorICAgICAgICAgICAgKCIxLjAuZGV2NitkZWFkYmVlZiIsIDYpLAorICAgICAgICAgICAg
KCIxLjBhMStkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NStkZWFk
YmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwg
NiksCisgICAgICAgICAgICAoIjEuMHJjNCtkZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAg
KCIxLjAucG9zdDUrZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjArZGVhZGJl
ZWYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFkYmVlZiIsIDYpLAorICAg
ICAgICAgICAgKCIxITEuMGExK2RlYWRiZWVmIiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4w
YTEucG9zdDUrZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NS5k
ZXY2K2RlYWRiZWVmIiwgNiksCisgICAgICAgICAgICAoIjEhMS4wcmM0K2RlYWRiZWVmIiwgTm9u
ZSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVmIiwgTm9uZSksCisgICAgICAg
IF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25fZGV2KHNlbGYsIHZlcnNpb24sIGRldik6
CisgICAgICAgIGFzc2VydCBWZXJzaW9uKHZlcnNpb24pLmRldiA9PSBkZXYKKworICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJ2ZXJzaW9uIiwgImV4cGVjdGVkIiksCisg
ICAgICAgIFsKKyAgICAgICAgICAgICgiMS4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjAu
ZGV2MCIsIFRydWUpLAorICAgICAgICAgICAgKCIxLjAuZGV2NiIsIFRydWUpLAorICAgICAgICAg
ICAgKCIxLjBhMSIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMS4wYTEucG9zdDUiLCBGYWxzZSks
CisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1LmRldjYiLCBUcnVlKSwKKyAgICAgICAgICAgICgi
MS4wcmM0IiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjAucG9zdDUiLCBGYWxzZSksCisgICAg
ICAgICAgICAoIjEhMS4wIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxITEuMC5kZXY2IiwgVHJ1
ZSksCisgICAgICAgICAgICAoIjEhMS4wYTEiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEhMS4w
YTEucG9zdDUiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEhMS4wYTEucG9zdDUuZGV2NiIsIFRy
dWUpLAorICAgICAgICAgICAgKCIxITEuMHJjNCIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMSEx
LjAucG9zdDUiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMCtkZWFkYmVlZiIsIEZhbHNlKSwK
KyAgICAgICAgICAgICgiMS4wLmRldjYrZGVhZGJlZWYiLCBUcnVlKSwKKyAgICAgICAgICAgICgi
MS4wYTErZGVhZGJlZWYiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1K2RlYWRi
ZWVmIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxLjBhMS5wb3N0NS5kZXY2K2RlYWRiZWVmIiwg
VHJ1ZSksCisgICAgICAgICAgICAoIjEuMHJjNCtkZWFkYmVlZiIsIEZhbHNlKSwKKyAgICAgICAg
ICAgICgiMS4wLnBvc3Q1K2RlYWRiZWVmIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxITEuMCtk
ZWFkYmVlZiIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMSExLjAuZGV2NitkZWFkYmVlZiIsIFRy
dWUpLAorICAgICAgICAgICAgKCIxITEuMGExK2RlYWRiZWVmIiwgRmFsc2UpLAorICAgICAgICAg
ICAgKCIxITEuMGExLnBvc3Q1K2RlYWRiZWVmIiwgRmFsc2UpLAorICAgICAgICAgICAgKCIxITEu
MGExLnBvc3Q1LmRldjYrZGVhZGJlZWYiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMSExLjByYzQr
ZGVhZGJlZWYiLCBGYWxzZSksCisgICAgICAgICAgICAoIjEhMS4wLnBvc3Q1K2RlYWRiZWVmIiwg
RmFsc2UpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF92ZXJzaW9uX2lzX2RldnJl
bGVhc2Uoc2VsZiwgdmVyc2lvbiwgZXhwZWN0ZWQpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2
ZXJzaW9uKS5pc19kZXZyZWxlYXNlIGlzIGV4cGVjdGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoCisgICAgICAgICgidmVyc2lvbiIsICJwb3N0IiksCisgICAgICAgIFsKKyAgICAg
ICAgICAgICgiMS4wIiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMC5kZXYwIiwgTm9uZSksCisg
ICAgICAgICAgICAoIjEuMC5kZXY2IiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMGExIiwgTm9u
ZSksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1IiwgNSksCisgICAgICAgICAgICAoIjEuMGEx
LnBvc3Q1LmRldjYiLCA1KSwKKyAgICAgICAgICAgICgiMS4wcmM0IiwgTm9uZSksCisgICAgICAg
ICAgICAoIjEuMC5wb3N0NSIsIDUpLAorICAgICAgICAgICAgKCIxITEuMCIsIE5vbmUpLAorICAg
ICAgICAgICAgKCIxITEuMC5kZXY2IiwgTm9uZSksCisgICAgICAgICAgICAoIjEhMS4wYTEiLCBO
b25lKSwKKyAgICAgICAgICAgICgiMSExLjBhMS5wb3N0NSIsIDUpLAorICAgICAgICAgICAgKCIx
ITEuMGExLnBvc3Q1LmRldjYiLCA1KSwKKyAgICAgICAgICAgICgiMSExLjByYzQiLCBOb25lKSwK
KyAgICAgICAgICAgICgiMSExLjAucG9zdDUiLCA1KSwKKyAgICAgICAgICAgICgiMS4wK2RlYWRi
ZWVmIiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMC5kZXY2K2RlYWRiZWVmIiwgTm9uZSksCisg
ICAgICAgICAgICAoIjEuMGExK2RlYWRiZWVmIiwgTm9uZSksCisgICAgICAgICAgICAoIjEuMGEx
LnBvc3Q1K2RlYWRiZWVmIiwgNSksCisgICAgICAgICAgICAoIjEuMGExLnBvc3Q1LmRldjYrZGVh
ZGJlZWYiLCA1KSwKKyAgICAgICAgICAgICgiMS4wcmM0K2RlYWRiZWVmIiwgTm9uZSksCisgICAg
ICAgICAgICAoIjEuMC5wb3N0NStkZWFkYmVlZiIsIDUpLAorICAgICAgICAgICAgKCIxITEuMCtk
ZWFkYmVlZiIsIE5vbmUpLAorICAgICAgICAgICAgKCIxITEuMC5kZXY2K2RlYWRiZWVmIiwgTm9u
ZSksCisgICAgICAgICAgICAoIjEhMS4wYTErZGVhZGJlZWYiLCBOb25lKSwKKyAgICAgICAgICAg
ICgiMSExLjBhMS5wb3N0NStkZWFkYmVlZiIsIDUpLAorICAgICAgICAgICAgKCIxITEuMGExLnBv
c3Q1LmRldjYrZGVhZGJlZWYiLCA1KSwKKyAgICAgICAgICAgICgiMSExLjByYzQrZGVhZGJlZWYi
LCBOb25lKSwKKyAgICAgICAgICAgICgiMSExLjAucG9zdDUrZGVhZGJlZWYiLCA1KSwKKyAgICAg
ICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfdmVyc2lvbl9wb3N0KHNlbGYsIHZlcnNpb24sIHBv
c3QpOgorICAgICAgICBhc3NlcnQgVmVyc2lvbih2ZXJzaW9uKS5wb3N0ID09IHBvc3QKKworICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJ2ZXJzaW9uIiwgImV4cGVjdGVk
IiksCisgICAgICAgIFsKKyAgICAgICAgICAgICgiMS4wLmRldjEiLCBGYWxzZSksCisgICAgICAg
ICAgICAoIjEuMCIsIEZhbHNlKSwKKyAgICAgICAgICAgICgiMS4wK2ZvbyIsIEZhbHNlKSwKKyAg
ICAgICAgICAgICgiMS4wLnBvc3QxLmRldjEiLCBUcnVlKSwKKyAgICAgICAgICAgICgiMS4wLnBv
c3QxIiwgVHJ1ZSksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3ZlcnNpb25faXNf
cG9zdHJlbGVhc2Uoc2VsZiwgdmVyc2lvbiwgZXhwZWN0ZWQpOgorICAgICAgICBhc3NlcnQgVmVy
c2lvbih2ZXJzaW9uKS5pc19wb3N0cmVsZWFzZSBpcyBleHBlY3RlZAorCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAoImxlZnQiLCAicmlnaHQiLCAib3AiKSwKKyAgICAg
ICAgIyBCZWxvdyB3ZSdsbCBnZW5lcmF0ZSBldmVyeSBwb3NzaWJsZSBjb21iaW5hdGlvbiBvZiBW
RVJTSU9OUyB0aGF0CisgICAgICAgICMgc2hvdWxkIGJlIFRydWUgZm9yIHRoZSBnaXZlbiBvcGVy
YXRvcgorICAgICAgICBpdGVydG9vbHMuY2hhaW4oCisgICAgICAgICAgICAqCisgICAgICAgICAg
ICAjIFZlcmlmeSB0aGF0IHRoZSBsZXNzIHRoYW4gKDwpIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3Rs
eQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IubHQpIGZv
ciB5IGluIFZFUlNJT05TW2kgKyAxIDpdXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVu
dW1lcmF0ZShWRVJTSU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAgICAg
ICAgICMgVmVyaWZ5IHRoYXQgdGhlIGxlc3MgdGhhbiBlcXVhbCAoPD0pIG9wZXJhdG9yIHdvcmtz
IGNvcnJlY3RseQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0
b3IubGUpIGZvciB5IGluIFZFUlNJT05TW2k6XV0KKyAgICAgICAgICAgICAgICBmb3IgaSwgeCBp
biBlbnVtZXJhdGUoVkVSU0lPTlMpCisgICAgICAgICAgICBdCisgICAgICAgICAgICArCisgICAg
ICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBlcXVhbCAoPT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJl
Y3RseQorICAgICAgICAgICAgW1soeCwgeCwgb3BlcmF0b3IuZXEpIGZvciB4IGluIFZFUlNJT05T
XV0KKyAgICAgICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIG5vdCBlcXVh
bCAoIT0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3RseQorICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgIFsoeCwgeSwgb3BlcmF0b3IubmUpIGZvciBqLCB5IGluIGVudW1lcmF0ZShWRVJTSU9O
UykgaWYgaSAhPSBqXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShWRVJT
SU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAgICAgICAgICMgVmVyaWZ5
IHRoYXQgdGhlIGdyZWF0ZXIgdGhhbiBlcXVhbCAoPj0pIG9wZXJhdG9yIHdvcmtzIGNvcnJlY3Rs
eQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFsoeCwgeSwgb3BlcmF0b3IuZ2UpIGZv
ciB5IGluIFZFUlNJT05TWzogaSArIDFdXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVu
dW1lcmF0ZShWRVJTSU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAgICAgICAg
ICAgICMgVmVyaWZ5IHRoYXQgdGhlIGdyZWF0ZXIgdGhhbiAoPikgb3BlcmF0b3Igd29ya3MgY29y
cmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4LCB5LCBvcGVyYXRvci5n
dCkgZm9yIHkgaW4gVkVSU0lPTlNbOmldXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVu
dW1lcmF0ZShWRVJTSU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgKSwKKyAgICApCisgICAg
ZGVmIHRlc3RfY29tcGFyaXNvbl90cnVlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAgICAg
IGFzc2VydCBvcChWZXJzaW9uKGxlZnQpLCBWZXJzaW9uKHJpZ2h0KSkKKworICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJsZWZ0IiwgInJpZ2h0IiwgIm9wIiksCisgICAg
ICAgICMgQmVsb3cgd2UnbGwgZ2VuZXJhdGUgZXZlcnkgcG9zc2libGUgY29tYmluYXRpb24gb2Yg
VkVSU0lPTlMgdGhhdAorICAgICAgICAjIHNob3VsZCBiZSBGYWxzZSBmb3IgdGhlIGdpdmVuIG9w
ZXJhdG9yCisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAgICAgICoKKyAgICAgICAg
ICAgICMgVmVyaWZ5IHRoYXQgdGhlIGxlc3MgdGhhbiAoPCkgb3BlcmF0b3Igd29ya3MgY29ycmVj
dGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4LCB5LCBvcGVyYXRvci5sdCkg
Zm9yIHkgaW4gVkVSU0lPTlNbOiBpICsgMV1dCisgICAgICAgICAgICAgICAgZm9yIGksIHggaW4g
ZW51bWVyYXRlKFZFUlNJT05TKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgKworICAgICAg
ICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbGVzcyB0aGFuIGVxdWFsICg8PSkgb3BlcmF0b3Igd29y
a3MgY29ycmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4LCB5LCBvcGVy
YXRvci5sZSkgZm9yIHkgaW4gVkVSU0lPTlNbOmldXQorICAgICAgICAgICAgICAgIGZvciBpLCB4
IGluIGVudW1lcmF0ZShWRVJTSU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsKKyAg
ICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkgb3BlcmF0b3Igd29ya3MgY29y
cmVjdGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4LCB5LCBvcGVyYXRvci5l
cSkgZm9yIGosIHkgaW4gZW51bWVyYXRlKFZFUlNJT05TKSBpZiBpICE9IGpdCisgICAgICAgICAg
ICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKFZFUlNJT05TKQorICAgICAgICAgICAgXQorICAg
ICAgICAgICAgKworICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbm90IGVxdWFsICghPSkg
b3BlcmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5u
ZSkgZm9yIHggaW4gVkVSU0lPTlNdXQorICAgICAgICAgICAgKworICAgICAgICAgICAgIyBWZXJp
ZnkgdGhhdCB0aGUgZ3JlYXRlciB0aGFuIGVxdWFsICg+PSkgb3BlcmF0b3Igd29ya3MgY29ycmVj
dGx5CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyh4LCB5LCBvcGVyYXRvci5nZSkg
Zm9yIHkgaW4gVkVSU0lPTlNbaSArIDEgOl1dCisgICAgICAgICAgICAgICAgZm9yIGksIHggaW4g
ZW51bWVyYXRlKFZFUlNJT05TKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgKworICAgICAg
ICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZ3JlYXRlciB0aGFuICg+KSBvcGVyYXRvciB3b3JrcyBj
b3JyZWN0bHkKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBbKHgsIHksIG9wZXJhdG9y
Lmd0KSBmb3IgeSBpbiBWRVJTSU9OU1tpOl1dCisgICAgICAgICAgICAgICAgZm9yIGksIHggaW4g
ZW51bWVyYXRlKFZFUlNJT05TKQorICAgICAgICAgICAgXQorICAgICAgICApLAorICAgICkKKyAg
ICBkZWYgdGVzdF9jb21wYXJpc29uX2ZhbHNlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAg
ICAgIGFzc2VydCBub3Qgb3AoVmVyc2lvbihsZWZ0KSwgVmVyc2lvbihyaWdodCkpCisKKyAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm9wIiwgWyJsdCIsICJsZSIsICJlcSIsICJnZSIsICJn
dCIsICJuZSJdKQorICAgIGRlZiB0ZXN0X2R1bmRlcl9vcF9yZXR1cm5zX25vdGltcGxlbWVudGVk
KHNlbGYsIG9wKToKKyAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihWZXJzaW9uLCAiX197MH1fXyIu
Zm9ybWF0KG9wKSkKKyAgICAgICAgYXNzZXJ0IG1ldGhvZChWZXJzaW9uKCIxIiksIDEpIGlzIE5v
dEltcGxlbWVudGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKCJvcCIsICJleHBl
Y3RlZCIpLCBbKCJlcSIsIEZhbHNlKSwgKCJuZSIsIFRydWUpXSkKKyAgICBkZWYgdGVzdF9jb21w
YXJlX290aGVyKHNlbGYsIG9wLCBleHBlY3RlZCk6CisgICAgICAgIG90aGVyID0gcHJldGVuZC5z
dHViKCoqeyJfX3swfV9fIi5mb3JtYXQob3ApOiBsYW1iZGEgb3RoZXI6IE5vdEltcGxlbWVudGVk
fSkKKworICAgICAgICBhc3NlcnQgZ2V0YXR0cihvcGVyYXRvciwgb3ApKFZlcnNpb24oIjEiKSwg
b3RoZXIpIGlzIGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX2xlZ2FjeXZlcnNpb25f
dmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc29ydGVkKFtWZXJzaW9uKCIwIiksIExl
Z2FjeVZlcnNpb24oIjEiKV0pCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gW0xlZ2FjeVZlcnNp
b24oIjEiKSwgVmVyc2lvbigiMCIpXQorCisgICAgZGVmIHRlc3RfbWFqb3JfdmVyc2lvbihzZWxm
KToKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24oIjIuMS4wIikubWFqb3IgPT0gMgorCisgICAgZGVm
IHRlc3RfbWlub3JfdmVyc2lvbihzZWxmKToKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24oIjIuMS4w
IikubWlub3IgPT0gMQorICAgICAgICBhc3NlcnQgVmVyc2lvbigiMiIpLm1pbm9yID09IDAKKwor
ICAgIGRlZiB0ZXN0X21pY3JvX3ZlcnNpb24oc2VsZik6CisgICAgICAgIGFzc2VydCBWZXJzaW9u
KCIyLjEuMyIpLm1pY3JvID09IDMKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24oIjIuMSIpLm1pY3Jv
ID09IDAKKyAgICAgICAgYXNzZXJ0IFZlcnNpb24oIjIiKS5taWNybyA9PSAwCisKKworTEVHQUNZ
X1ZFUlNJT05TID0gWyJmb29iYXIiLCAiYSBjYXQgaXMgZmluZSB0b28iLCAibG9sd3V0IiwgIjEt
MCIsICIyLjAtYTEiXQorCisKK2NsYXNzIFRlc3RMZWdhY3lWZXJzaW9uOgorICAgIGRlZiB0ZXN0
X2xlZ2FjeV92ZXJzaW9uX2lzX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHdpdGggd2Fybmlu
Z3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICBMZWdhY3lW
ZXJzaW9uKCJzb21lLWxlZ2FjeS12ZXJzaW9uIikKKyAgICAgICAgICAgIGFzc2VydCBsZW4odykg
PT0gMQorICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVj
YXRpb25XYXJuaW5nKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwg
VkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfdmFsaWRfbGVnYWN5X3Zl
cnNpb25zKHNlbGYsIHZlcnNpb24pOgorICAgICAgICBMZWdhY3lWZXJzaW9uKHZlcnNpb24pCisK
KyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FD
WV9WRVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9zdHJfcmVwcihzZWxmLCB2
ZXJzaW9uKToKKyAgICAgICAgYXNzZXJ0IHN0cihMZWdhY3lWZXJzaW9uKHZlcnNpb24pKSA9PSB2
ZXJzaW9uCisgICAgICAgIGFzc2VydCByZXByKExlZ2FjeVZlcnNpb24odmVyc2lvbikpID09ICI8
TGVnYWN5VmVyc2lvbih7MH0pPiIuZm9ybWF0KAorICAgICAgICAgICAgcmVwcih2ZXJzaW9uKQor
ICAgICAgICApCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJT
SU9OUyArIExFR0FDWV9WRVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9oYXNo
KHNlbGYsIHZlcnNpb24pOgorICAgICAgICBhc3NlcnQgaGFzaChMZWdhY3lWZXJzaW9uKHZlcnNp
b24pKSA9PSBoYXNoKExlZ2FjeVZlcnNpb24odmVyc2lvbikpCisKKyAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9OUykKKyAgICBk
ZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9wdWJsaWMoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFz
c2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLnB1YmxpYyA9PSB2ZXJzaW9uCisKKyAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9O
UykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9iYXNlX3ZlcnNpb24oc2VsZiwgdmVyc2lv
bik6CisgICAgICAgIGFzc2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLmJhc2VfdmVyc2lvbiA9
PSB2ZXJzaW9uCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJT
SU9OUyArIExFR0FDWV9WRVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9lcG9j
aChzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgYXNzZXJ0IExlZ2FjeVZlcnNpb24odmVyc2lvbiku
ZXBvY2ggPT0gLTEKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidmVyc2lvbiIsIFZF
UlNJT05TICsgTEVHQUNZX1ZFUlNJT05TKQorICAgIGRlZiB0ZXN0X2xlZ2FjeV92ZXJzaW9uX3Jl
bGVhc2Uoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBMZWdhY3lWZXJzaW9uKHZlcnNp
b24pLnJlbGVhc2UgaXMgTm9uZQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJz
aW9uIiwgVkVSU0lPTlMgKyBMRUdBQ1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5X3Zl
cnNpb25fbG9jYWwoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBMZWdhY3lWZXJzaW9u
KHZlcnNpb24pLmxvY2FsIGlzIE5vbmUKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
dmVyc2lvbiIsIFZFUlNJT05TICsgTEVHQUNZX1ZFUlNJT05TKQorICAgIGRlZiB0ZXN0X2xlZ2Fj
eV92ZXJzaW9uX3ByZShzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgYXNzZXJ0IExlZ2FjeVZlcnNp
b24odmVyc2lvbikucHJlIGlzIE5vbmUKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
dmVyc2lvbiIsIFZFUlNJT05TICsgTEVHQUNZX1ZFUlNJT05TKQorICAgIGRlZiB0ZXN0X2xlZ2Fj
eV92ZXJzaW9uX2lzX3ByZXJlbGVhc2Uoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFzc2VydCBu
b3QgTGVnYWN5VmVyc2lvbih2ZXJzaW9uKS5pc19wcmVyZWxlYXNlCisKKyAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9OUykKKyAg
ICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9kZXYoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFz
c2VydCBMZWdhY3lWZXJzaW9uKHZlcnNpb24pLmRldiBpcyBOb25lCisKKyAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9OUykKKyAg
ICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9pc19kZXZyZWxlYXNlKHNlbGYsIHZlcnNpb24pOgor
ICAgICAgICBhc3NlcnQgbm90IExlZ2FjeVZlcnNpb24odmVyc2lvbikuaXNfZGV2cmVsZWFzZQor
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2ZXJzaW9uIiwgVkVSU0lPTlMgKyBMRUdB
Q1lfVkVSU0lPTlMpCisgICAgZGVmIHRlc3RfbGVnYWN5X3ZlcnNpb25fcG9zdChzZWxmLCB2ZXJz
aW9uKToKKyAgICAgICAgYXNzZXJ0IExlZ2FjeVZlcnNpb24odmVyc2lvbikucG9zdCBpcyBOb25l
CisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInZlcnNpb24iLCBWRVJTSU9OUyArIExF
R0FDWV9WRVJTSU9OUykKKyAgICBkZWYgdGVzdF9sZWdhY3lfdmVyc2lvbl9pc19wb3N0cmVsZWFz
ZShzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgYXNzZXJ0IG5vdCBMZWdhY3lWZXJzaW9uKHZlcnNp
b24pLmlzX3Bvc3RyZWxlYXNlCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAg
ICAgICgibGVmdCIsICJyaWdodCIsICJvcCIpLAorICAgICAgICAjIEJlbG93IHdlJ2xsIGdlbmVy
YXRlIGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mCisgICAgICAgICMgVkVSU0lPTlMgKyBM
RUdBQ1lfVkVSU0lPTlMgdGhhdCBzaG91bGQgYmUgVHJ1ZSBmb3IgdGhlIGdpdmVuIG9wZXJhdG9y
CisgICAgICAgIGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAgICAgICoKKyAgICAgICAgICAgICMg
VmVyaWZ5IHRoYXQgdGhlIGVxdWFsICg9PSkgb3BlcmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAg
ICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5lcSkgZm9yIHggaW4gVkVSU0lPTlMgKyBMRUdBQ1lf
VkVSU0lPTlNdXQorICAgICAgICAgICAgKworICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUg
bm90IGVxdWFsICghPSkgb3BlcmF0b3Igd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAoeCwgeSwgb3BlcmF0b3IubmUp
CisgICAgICAgICAgICAgICAgICAgIGZvciBqLCB5IGluIGVudW1lcmF0ZShWRVJTSU9OUyArIExF
R0FDWV9WRVJTSU9OUykKKyAgICAgICAgICAgICAgICAgICAgaWYgaSAhPSBqCisgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZShWRVJTSU9OUyAr
IExFR0FDWV9WRVJTSU9OUykKKyAgICAgICAgICAgIF0KKyAgICAgICAgKSwKKyAgICApCisgICAg
ZGVmIHRlc3RfY29tcGFyaXNvbl90cnVlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAgICAg
IGFzc2VydCBvcChMZWdhY3lWZXJzaW9uKGxlZnQpLCBMZWdhY3lWZXJzaW9uKHJpZ2h0KSkKKwor
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgKCJsZWZ0IiwgInJpZ2h0Iiwg
Im9wIiksCisgICAgICAgICMgQmVsb3cgd2UnbGwgZ2VuZXJhdGUgZXZlcnkgcG9zc2libGUgY29t
YmluYXRpb24gb2YKKyAgICAgICAgIyBWRVJTSU9OUyArIExFR0FDWV9WRVJTSU9OUyB0aGF0IHNo
b3VsZCBiZSBGYWxzZSBmb3IgdGhlIGdpdmVuCisgICAgICAgICMgb3BlcmF0b3IKKyAgICAgICAg
aXRlcnRvb2xzLmNoYWluKAorICAgICAgICAgICAgKgorICAgICAgICAgICAgIyBWZXJpZnkgdGhh
dCB0aGUgZXF1YWwgKD09KSBvcGVyYXRvciB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICh4LCB5LCBvcGVyYXRvci5l
cSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGosIHkgaW4gZW51bWVyYXRlKFZFUlNJT05TICsg
TEVHQUNZX1ZFUlNJT05TKQorICAgICAgICAgICAgICAgICAgICBpZiBpICE9IGoKKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKFZFUlNJT05T
ICsgTEVHQUNZX1ZFUlNJT05TKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgKworICAgICAg
ICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbm90IGVxdWFsICghPSkgb3BlcmF0b3Igd29ya3MgY29y
cmVjdGx5CisgICAgICAgICAgICBbWyh4LCB4LCBvcGVyYXRvci5uZSkgZm9yIHggaW4gVkVSU0lP
TlMgKyBMRUdBQ1lfVkVSU0lPTlNdXQorICAgICAgICApLAorICAgICkKKyAgICBkZWYgdGVzdF9j
b21wYXJpc29uX2ZhbHNlKHNlbGYsIGxlZnQsIHJpZ2h0LCBvcCk6CisgICAgICAgIGFzc2VydCBu
b3Qgb3AoTGVnYWN5VmVyc2lvbihsZWZ0KSwgTGVnYWN5VmVyc2lvbihyaWdodCkpCisKKyAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm9wIiwgWyJsdCIsICJsZSIsICJlcSIsICJnZSIsICJn
dCIsICJuZSJdKQorICAgIGRlZiB0ZXN0X2R1bmRlcl9vcF9yZXR1cm5zX25vdGltcGxlbWVudGVk
KHNlbGYsIG9wKToKKyAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihMZWdhY3lWZXJzaW9uLCAiX197
MH1fXyIuZm9ybWF0KG9wKSkKKyAgICAgICAgYXNzZXJ0IG1ldGhvZChMZWdhY3lWZXJzaW9uKCIx
IiksIDEpIGlzIE5vdEltcGxlbWVudGVkCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
KCJvcCIsICJleHBlY3RlZCIpLCBbKCJlcSIsIEZhbHNlKSwgKCJuZSIsIFRydWUpXSkKKyAgICBk
ZWYgdGVzdF9jb21wYXJlX290aGVyKHNlbGYsIG9wLCBleHBlY3RlZCk6CisgICAgICAgIG90aGVy
ID0gcHJldGVuZC5zdHViKCoqeyJfX3swfV9fIi5mb3JtYXQob3ApOiBsYW1iZGEgb3RoZXI6IE5v
dEltcGxlbWVudGVkfSkKKworICAgICAgICBhc3NlcnQgZ2V0YXR0cihvcGVyYXRvciwgb3ApKExl
Z2FjeVZlcnNpb24oIjEiKSwgb3RoZXIpIGlzIGV4cGVjdGVkCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
dGhsaWIyLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjQ1NjFlYWExZDQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhdGhsaWIyLy5naXRpZ25vcmUKQEAgLTAsMCArMSw1NCBAQAorIyBCeXRlLWNv
bXBpbGVkIC8gb3B0aW1pemVkIC8gRExMIGZpbGVzCitfX3B5Y2FjaGVfXy8KKyoucHlbY29kXQor
CisjIEMgZXh0ZW5zaW9ucworKi5zbworCisjIERpc3RyaWJ1dGlvbiAvIHBhY2thZ2luZworLlB5
dGhvbgorZW52LworYnVpbGQvCitkZXZlbG9wLWVnZ3MvCitkaXN0LworZG93bmxvYWRzLworZWdn
cy8KK2xpYi8KK2xpYjY0LworcGFydHMvCitzZGlzdC8KK3Zhci8KKyouZWdnLWluZm8vCisuaW5z
dGFsbGVkLmNmZworKi5lZ2cKKworIyBQeUluc3RhbGxlcgorIyAgVXN1YWxseSB0aGVzZSBmaWxl
cyBhcmUgd3JpdHRlbiBieSBhIHB5dGhvbiBzY3JpcHQgZnJvbSBhIHRlbXBsYXRlCisjICBiZWZv
cmUgUHlJbnN0YWxsZXIgYnVpbGRzIHRoZSBleGUsIHNvIGFzIHRvIGluamVjdCBkYXRlL290aGVy
IGluZm9zIGludG8gaXQuCisqLm1hbmlmZXN0CisqLnNwZWMKKworIyBJbnN0YWxsZXIgbG9ncwor
cGlwLWxvZy50eHQKK3BpcC1kZWxldGUtdGhpcy1kaXJlY3RvcnkudHh0CisKKyMgVW5pdCB0ZXN0
IC8gY292ZXJhZ2UgcmVwb3J0cworaHRtbGNvdi8KKy50b3gvCisuY292ZXJhZ2UKKy5jYWNoZQor
bm9zZXRlc3RzLnhtbAorY292ZXJhZ2UueG1sCisKKyMgVHJhbnNsYXRpb25zCisqLm1vCisqLnBv
dAorCisjIERqYW5nbyBzdHVmZjoKKyoubG9nCisKKyMgU3BoaW54IGRvY3VtZW50YXRpb24KK2Rv
Y3MvX2J1aWxkLworCisjIFB5QnVpbGRlcgordGFyZ2V0LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRo
bGliMi8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMTY2NzQxMjIwMTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhdGhsaWIyLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsNDcgQEAKK2xhbmd1YWdl
OiBweXRob24KK3N1ZG86IGZhbHNlCittYXRyaXg6CisgIGluY2x1ZGU6CisgICAgLSBweXRob246
ICIzLjciCisgICAgICBkaXN0OiB4ZW5pYWwKKyAgICAgIGVudjogTENfQUxMPSJlbl9VUy51dGYt
OCIKKyAgICAtIHB5dGhvbjogIjMuNyIKKyAgICAgIGRpc3Q6IHhlbmlhbAorICAgICAgZW52OiBM
Q19BTEw9ImVuX1VTLmFzY2lpIgorICAgIC0gcHl0aG9uOiAiMy42IgorICAgICAgZGlzdDogeGVu
aWFsCisgICAgLSBweXRob246ICIzLjUiCisgICAgICBkaXN0OiB4ZW5pYWwKKyAgICAtIHB5dGhv
bjogIjMuNCIKKyAgICAgIGRpc3Q6IHhlbmlhbAorICAgIC0gcHl0aG9uOiAiMi43IgorICAgICAg
ZGlzdDogeGVuaWFsCisgICAgLSBweXRob246ICIyLjYiCisgICAgICBkaXN0OiB0cnVzdHkKKyAg
ICAtIHB5dGhvbjogInB5cHkiCisgICAgICBkaXN0OiB4ZW5pYWwKKyAgICAtIHB5dGhvbjogInB5
cHkzIgorICAgICAgZGlzdDogeGVuaWFsCisgIGFsbG93X2ZhaWx1cmVzOgorICAjIHB5cHkgb2Nj
YXNpb25hbGx5IGhhcyBzb21lIGJ1Z3MKKyAgLSBweXRob246ICJweXB5IgorICAtIHB5dGhvbjog
InB5cHkzIgorYnJhbmNoZXM6CisgIG9ubHk6CisgICAgLSBkZXZlbG9wCitpbnN0YWxsOgorICAt
ICJweXRob24gLWMgXCJpbXBvcnQgc3lzOyBwcmludChzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5n
KCkpXCIiCisgIC0gInBpcCBpbnN0YWxsIC0tdXBncmFkZSBzZXR1cHRvb2xzIgorICAtICJwaXAg
aW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0IgorICAtICJwaXAgaW5zdGFsbCBweXRlc3QtY292Igor
ICAtICJwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0IgorICAtICJpZiBbWyAkVFJBVklT
X1BZVEhPTl9WRVJTSU9OID09ICcyLjYnIF1dOyB0aGVuIHBpcCBpbnN0YWxsIHVuaXR0ZXN0Mjsg
ZmkiCisgIC0gImlmIFtbICRUUkFWSVNfUFlUSE9OX1ZFUlNJT04gPT0gJzMuNycgXV07IHRoZW4g
cGlwIGluc3RhbGwgY2hlY2stbWFuaWZlc3QgZmxha2U4OyBmaSIKKyAgLSAicGlwIGluc3RhbGwg
LiIKK3NjcmlwdDoKKyAgLSAiaWYgW1sgJFRSQVZJU19QWVRIT05fVkVSU0lPTiA9PSAnMy43JyBd
XTsgdGhlbiBjaGVjay1tYW5pZmVzdDsgZmkiCisgIC0gImlmIFtbICRUUkFWSVNfUFlUSE9OX1ZF
UlNJT04gPT0gJzMuNycgXV07IHRoZW4gZmxha2U4OyBmaSIKKyAgLSBjZCB0ZXN0cworICAtICJw
eXRlc3QgLS1jb3YtcmVwb3J0PXhtbCAtLWNvdj1wYXRobGliMiAuIgorYWZ0ZXJfc3VjY2VzczoK
KyAgLSBiYXNoIDwoY3VybCAtcyBodHRwczovL2NvZGVjb3YuaW8vYmFzaCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGF0aGxpYjIvQ0hBTkdFTE9HLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvQ0hBTkdFTE9HLnJz
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2N2MxYjM4ZTliYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvQ0hBTkdFTE9HLnJzdApAQCAtMCwwICsx
LDE2MyBAQAorSGlzdG9yeQorLS0tLS0tLQorCitWZXJzaW9uIDIuMy41CiteXl5eXl5eXl5eXl5e
CisKKy0gRmFsbCBiYWNrIHRvIGFzY2lpIHdoZW4gZ2V0ZmlsZXN5c3RlbWVuY29kaW5nIHJldHVy
bnMgTm9uZSAoc2VlCisgIGlzc3VlICM1OSkuCisKK1ZlcnNpb24gMi4zLjQKK15eXl5eXl5eXl5e
Xl4KKworLSBEbyBub3QgcmFpc2Ugd2luZG93cyBlcnJvciB3aGVuIGNhbGxpbmcgcmVzb2x2ZSBv
biBhIG5vbi1leGlzdGluZworICBwYXRoIGluIFB5dGhvbiAyLjcsIHRvIG1hdGNoIGJlaGF2aW91
ciBvbiBQeXRob24gMy54IChzZWUgaXNzdWUgIzU0KS4KKworLSBVc2UgdGhlIG5ldyBjb2xsZWN0
aW9ucy5hYmMgd2hlbiBwb3NzaWJsZSAoc2VlIGlzc3VlICM1MykuCisKKy0gU3luYyB3aXRoIHVw
c3RyZWFtIHBhdGhsaWIgKHNlZSBpc3N1ZXMgIzQ3IGFuZCAjNTEpLgorCitWZXJzaW9uIDIuMy4z
CiteXl5eXl5eXl5eXl5eCisKKy0gQnJpbmcgYmFjayBvbGQgZGVwcmVjYXRlZCBkZXBlbmRlbmN5
IHN5bnRheCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eQorICB3aXRoIG9sZGVyIHN5c3RlbXMgKHNl
ZSBpc3N1ZSAjNDYpLgorCistIERyb3AgUHl0aG9uIDMuMyBzdXBwb3J0LCBhcyBzY2FuZGlyIG5v
IGxvbmdlciBzdXBwb3J0cyBpdC4KKworLSBBZGQgUHl0aG9uIDMuNyBzdXBwb3J0LgorCitWZXJz
aW9uIDIuMy4yCiteXl5eXl5eXl5eXl5eCisKKy0gSG90Zml4IGZvciBicm9rZW4gc2V0dXAucHku
CisKK1ZlcnNpb24gMi4zLjEKK15eXl5eXl5eXl5eXl4KKworLSBGaXggdGVzdHMgZm9yIHN5c3Rl
bXMgd2hlcmUgZmlsZXN5c3RlbSBlbmNvZGluZyBvbmx5IHN1cHBvcnRzIGFzY2lpCisgIChyZXBv
cnRlZCBieSB5dXJpdmljdCwgZml4ZWQgd2l0aCBoZWxwIG9mIGhvbm5pYmFsLCBzZWUgaXNzdWUg
IzMwKS4KKworLSBVc2UgbW9kZXJuIHNldHVwdG9vbHMgc3ludGF4IGZvciBzcGVjaWZ5aW5nIGNv
bmRpdGlvbmFsIHNjYW5kaXIKKyAgZGVwZW5kZW5jeSAoc2VlIGlzc3VlICMzMSkuCisKKy0gUmVt
b3ZlIGxlZ2FjeSB1c2Ugb2Ygc3VwcG9ydCBtb2R1bGUgZnJvbSBvbGQgcGF0aGxpYiBtb2R1bGUg
KHNlZQorICBpc3N1ZSAjMzkpLiBUaGlzIGZpeGVzIHRoZSB0ZXN0cyBmb3IgUHl0aG9uIDMuNi4K
KworLSBEcm9wIHRoZSAiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzIiBh
bmQgLVFuZXcgdGVzdHMKKyAgYXMgaXQgaW50cm9kdWNlZCBzdWJ0bGUgYnVncyBpbiB0aGUgdGVz
dHMsIGFuZCBtYWludGFpbmluZyBzZXBhcmF0ZQorICB0ZXN0IG1vZHVsZXMgZm9yIHRoZXNlIGxl
Z2FjeSBmZWF0dXJlcyBzZWVtcyBub3Qgd29ydGggdGhlIGVmZm9ydC4KKworLSBEcm9wIFB5dGhv
biAzLjIgc3VwcG9ydCwgYXMgc2NhbmRpciBubyBsb25nZXIgc3VwcG9ydHMgaXQuCisKK1ZlcnNp
b24gMi4zLjAKK15eXl5eXl5eXl5eXl4KKworLSBTeW5jIHdpdGggdXBzdHJlYW0gcGF0aGxpYiBm
cm9tIENQeXRob24gMy42LjEgKDdkMTAxN2QpLgorCitWZXJzaW9uIDIuMi4xCiteXl5eXl5eXl5e
Xl5eCisKKy0gRml4IGNvbmRpdGlvbmFsIHNjYW5kaXIgZGVwZW5kZW5jeSBpbiB3aGVlbCAocmVw
b3J0ZWQgYnkgQXZkTiwgc2VlCisgIGlzc3VlICMyMCBhbmQgcHVsbCByZXF1ZXN0ICMyMSkuCisK
K1ZlcnNpb24gMi4yLjAKK15eXl5eXl5eXl5eXl4KKworLSBTeW5jIHdpdGggdXBzdHJlYW0gcGF0
aGxpYiBmcm9tIENQeXRob24gMy41LjIgYW5kIDMuNi4wOiBmaXggdmFyaW91cworICBleGNlcHRp
b25zLCBlbXB0eSBnbG9iIHBhdHRlcm4sIHNjYW5kaXIsIF9fZnNwYXRoX18uCisKKy0gU3VwcG9y
dCB1bmljb2RlIHN0cmluZ3MgdG8gYmUgdXNlZCB0byBjb25zdHJ1Y3QgcGF0aHMgaW4gUHl0aG9u
IDIKKyAgKHJlcG9ydGVkIGJ5IG5hdGl2ZS1hcGksIHNlZSBpc3N1ZSAjMTMgYW5kIHB1bGwgcmVx
dWVzdCAjMTUpLgorCitWZXJzaW9uIDIuMS4wCiteXl5eXl5eXl5eXl5eCisKKy0gU3luYyB3aXRo
IHVwc3RyZWFtIHBhdGhsaWIgZnJvbSBDUHl0aG9uIDMuNS4wOiBnZXRob21lZGlyLCBob21lLAor
ICBleHBhbmR1c2VyLgorCitWZXJzaW9uIDIuMC4xCiteXl5eXl5eXl5eXl5eCisKKy0gRml4IFR5
cGVFcnJvciBleGNlcHRpb25zIGluIHdyaXRlX2J5dGVzIGFuZCB3cml0ZV90ZXh0IChjb250cmli
dXRlZAorICBieSBFbWFudWVsZSBHYWlmYXMsIHNlZSBwdWxsIHJlcXVlc3QgIzIpLgorCitWZXJz
aW9uIDIuMAorXl5eXl5eXl5eXl4KKworLSBTeW5jIHdpdGggdXBzdHJlYW0gcGF0aGxpYiBmcm9t
IENQeXRob246IHJlYWRfdGV4dCwgd3JpdGVfdGV4dCwKKyAgcmVhZF9ieXRlcywgd3JpdGVfYnl0
ZXMsIF9fZW50ZXJfXywgX19leGl0X18sIHNhbWVmaWxlLgorLSBVc2UgdHJhdmlzIGFuZCBhcHB2
ZXlvciBmb3IgY29udGludW91cyBpbnRlZ3JhdGlvbi4KKy0gRml4ZWQgc29tZSBidWdzIGluIHRl
c3QgY29kZS4KKworVmVyc2lvbiAxLjAuMQorXl5eXl5eXl5eXl5eXgorCistIFB1bGwgcmVxdWVz
dCAjNDogUHl0aG9uIDIuNiBjb21wYXRpYmlsaXR5IGJ5IGVldmVlLgorCitWZXJzaW9uIDEuMAor
Xl5eXl5eXl5eXl4KKworVGhpcyB2ZXJzaW9uIGJyaW5ncyBgYHBhdGhsaWJgYCB1cCB0byBkYXRl
IHdpdGggdGhlIG9mZmljaWFsIFB5dGhvbiAzLjQKK3JlbGVhc2UsIGFuZCBhbHNvIGZpeGVzIGEg
Y291cGxlIG9mIDIuNy1zcGVjaWZpYyBpc3N1ZXMuCisKKy0gUHl0aG9uIGlzc3VlICMyMDc2NTog
QWRkIG1pc3NpbmcgZG9jdW1lbnRhdGlvbiBmb3IgUHVyZVBhdGgud2l0aF9uYW1lKCkKKyAgYW5k
IFB1cmVQYXRoLndpdGhfc3VmZml4KCkuCistIEZpeCB0ZXN0X21rZGlyX3BhcmVudHMgd2hlbiB0
aGUgd29ya2luZyBkaXJlY3RvcnkgaGFzIGFkZGl0aW9uYWwgYml0cworICBzZXQgKHN1Y2ggYXMg
dGhlIHNldGdpZCBvciBzdGlja3kgYml0cykuCistIFB5dGhvbiBpc3N1ZSAjMjAxMTE6IHBhdGhs
aWIuUGF0aC53aXRoX3N1ZmZpeCgpIG5vdyBzYW5pdHkgY2hlY2tzIHRoZQorICBnaXZlbiBzdWZm
aXguCistIFB5dGhvbiBpc3N1ZSAjMTk5MTg6IEZpeCBQdXJlUGF0aC5yZWxhdGl2ZV90bygpIHVu
ZGVyIFdpbmRvd3MuCistIFB5dGhvbiBpc3N1ZSAjMTk5MjE6IFdoZW4gUGF0aC5ta2RpcigpIGlz
IGNhbGxlZCB3aXRoIHBhcmVudHM9VHJ1ZSwgYW55CisgIG1pc3NpbmcgcGFyZW50IGlzIGNyZWF0
ZWQgd2l0aCB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucywgaWdub3JpbmcgdGhlIG1vZGUKKyAgYXJn
dW1lbnQgKG1pbWlja2luZyB0aGUgUE9TSVggIm1rZGlyIC1wIiBjb21tYW5kKS4KKy0gUHl0aG9u
IGlzc3VlICMxOTg4NzogSW1wcm92ZSB0aGUgUGF0aC5yZXNvbHZlKCkgYWxnb3JpdGhtIHRvIHN1
cHBvcnQKKyAgY2VydGFpbiBzeW1saW5rIGNoYWlucy4KKy0gTWFrZSBwYXRobGliIHVzYWJsZSB1
bmRlciBQeXRob24gMi43IHdpdGggdW5pY29kZSBwYXRobmFtZXMgKG9ubHkgcHVyZQorICBBU0NJ
SSwgdGhvdWdoKS4KKy0gSXNzdWUgIzIxOiBmaXggVHlwZUVycm9yIHVuZGVyIFB5dGhvbiAyLjcg
d2hlbiB1c2luZyBuZXcgZGl2aXNpb24uCistIEFkZCB0b3ggc3VwcG9ydCBmb3IgZWFzaWVyIHRl
c3RpbmcuCisKK1ZlcnNpb24gMC45NworXl5eXl5eXl5eXl5eCisKK1RoaXMgdmVyc2lvbiBicmlu
Z3MgYGBwYXRobGliYGAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBmaW5hbCBBUEkgc3BlY2lmaWVkCitp
biA6cGVwOmA0MjhgLiAgVGhlIGNoYW5nZXMgYXJlIHRvbyBsb25nIHRvIGxpc3QgaGVyZSwgaXQg
aXMgcmVjb21tZW5kZWQKK3RvIHJlYWQgdGhlIGBkb2N1bWVudGF0aW9uIDxodHRwczovL3BhdGhs
aWIucmVhZHRoZWRvY3Mub3JnLz5gXy4KKworLi4gd2FybmluZzo6CisgICBUaGUgQVBJIGluIHRo
aXMgdmVyc2lvbiBpcyBwYXJ0aWFsbHkgaW5jb21wYXRpYmxlIHdpdGggcGF0aGxpYiAwLjggYW5k
CisgICBlYXJsaWVyLiAgQmUgc3VyZSB0byBjaGVjayB5b3VyIGNvZGUgZm9yIHBvc3NpYmxlIGJy
ZWFrYWdlIQorCitWZXJzaW9uIDAuOAorXl5eXl5eXl5eXl4KKworLSBBZGQgUHVyZVBhdGgubmFt
ZSBhbmQgUHVyZVBhdGguYW5jaG9yLgorLSBBZGQgUGF0aC5vd25lciBhbmQgUGF0aC5ncm91cC4K
Ky0gQWRkIFBhdGgucmVwbGFjZSgpLgorLSBBZGQgUGF0aC5hc191cmkoKS4KKy0gSXNzdWUgIzEw
OiB3aGVuIGNyZWF0aW5nIGEgZmlsZSB3aXRoIFBhdGgub3BlbigpLCBkb24ndCBzZXQgdGhlIGV4
ZWN1dGFibGUKKyAgYml0LgorLSBJc3N1ZSAjMTE6IGZpeCBjb21wYXJpc29ucyB3aXRoIG5vbi1Q
YXRoIG9iamVjdHMuCisKK1ZlcnNpb24gMC43CiteXl5eXl5eXl5eXgorCistIEFkZCAnKionIChy
ZWN1cnNpdmUpIHBhdHRlcm5zIHRvIFBhdGguZ2xvYigpLgorLSBGaXggb3BlbmF0KCkgc3VwcG9y
dCBhZnRlciB0aGUgQVBJIHJlZmFjdG9yaW5nIGluIFB5dGhvbiAzLjMgYmV0YTEuCistIEFkZCBh
ICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBhcmd1bWVudCB0byBQYXRoLnN5bWxpbmtfdG8oKQorCitW
ZXJzaW9uIDAuNgorXl5eXl5eXl5eXl4KKworLSBBZGQgUGF0aC5pc19maWxlKCkgYW5kIFBhdGgu
aXNfc3ltbGluaygpCistIEFkZCBQYXRoLmdsb2IoKSBhbmQgUGF0aC5yZ2xvYigpCistIEFkZCBQ
dXJlUGF0aC5tYXRjaCgpCisKK1ZlcnNpb24gMC41CiteXl5eXl5eXl5eXgorCistIEFkZCBQYXRo
Lm1rZGlyKCkuCistIEFkZCBQeXRob24gMi43IGNvbXBhdGliaWxpdHkgYnkgTWljaGVsZSBMYWNj
aGlhLgorLSBNYWtlIHBhcmVudCgpIHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgbGV2ZWwgaXMg
Z3JlYXRlciB0aGFuIHRoZSBwYXRoCisgIGxlbmd0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxp
YjIvTElDRU5TRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL0xJQ0VOU0UucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTcxNWQzZDdhMmNkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYXRobGliMi9MSUNFTlNFLnJzdApAQCAtMCwwICsxLDIzIEBACitUaGUgTUlUIExp
Y2Vuc2UgKE1JVCkKKworQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcgTWF0dGhpYXMgQy4gTS4gVHJv
ZmZhZXMKK0NvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFudG9pbmUgUGl0cm91IGFuZCBjb250cmli
dXRvcnMKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np
YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4gYWxsCitjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg
TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTIElOIFRIRQorU09GVFdBUkUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvTUFOSUZF
U1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhdGhsaWIyL01BTklGRVNULmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMmYwMzM2OWRjNjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YXRobGliMi9NQU5JRkVTVC5pbgpAQCAtMCwwICsxLDEwIEBACitpbmNsdWRlICoucHkKK3JlY3Vy
c2l2ZS1pbmNsdWRlIHBhdGhsaWIyICoucHkKK3JlY3Vyc2l2ZS1pbmNsdWRlIHRlc3RzICoucHkK
K2luY2x1ZGUgKi5yc3QKK2luY2x1ZGUgVkVSU0lPTgoraW5jbHVkZSByZXF1aXJlbWVudHMudHh0
CitleGNsdWRlIC50cmF2aXMueW1sCitleGNsdWRlIGFwcHZleW9yLnltbAorZXhjbHVkZSBjb2Rl
Y292LnltbAorcHJ1bmUgYXBwdmV5b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvUkVBRE1F
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGF0aGxpYjIvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjYzNzhmMjg0ZGQxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0
aGxpYjIvUkVBRE1FLnJzdApAQCAtMCwwICsxLDY2IEBACitwYXRobGliMgorPT09PT09PT0KKwor
fGFwcHZleW9yfCB8dHJhdmlzfCB8Y29kZWNvdnwKKworRm9yayBvZiBwYXRobGliIGFpbWluZyB0
byBzdXBwb3J0IHRoZSBmdWxsIHN0ZGxpYiBQeXRob24gQVBJLgorCitUaGUgYG9sZCBwYXRobGli
IDxodHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91L3BhdGhsaWI+YF8KK21vZHVsZSBvbiBiaXRi
dWNrZXQgaXMgaW4gYnVnZml4LW9ubHkgbW9kZS4KK1RoZSBnb2FsIG9mIHBhdGhsaWIyIGlzIHRv
IHByb3ZpZGUgYSBiYWNrcG9ydCBvZgorYHN0YW5kYXJkIHBhdGhsaWIgPGh0dHA6Ly9kb2NzLnB5
dGhvbi5vcmcvZGV2L2xpYnJhcnkvcGF0aGxpYi5odG1sPmBfCittb2R1bGUgd2hpY2ggdHJhY2tz
IHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZSwKK3NvIGFsbCB0aGUgbmV3ZXN0IGZlYXR1cmVz
IG9mIHRoZSBzdGFuZGFyZCBwYXRobGliIGNhbiBiZQordXNlZCBhbHNvIG9uIG9sZGVyIFB5dGhv
biB2ZXJzaW9ucy4KKworRG93bmxvYWQKKy0tLS0tLS0tCisKK1N0YW5kYWxvbmUgcmVsZWFzZXMg
YXJlIGF2YWlsYWJsZSBvbiBQeVBJOgoraHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BhdGhs
aWIyLworCitEZXZlbG9wbWVudAorLS0tLS0tLS0tLS0KKworVGhlIG1haW4gZGV2ZWxvcG1lbnQg
dGFrZXMgcGxhY2UgaW4gdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5OiBzZWUKK3RoZSBgUHl0
aG9uIGRldmVsb3BlcidzIGd1aWRlIDxodHRwOi8vZG9jcy5weXRob24ub3JnL2Rldmd1aWRlLz5g
Xy4KK0luIHBhcnRpY3VsYXIsIG5ldyBmZWF0dXJlcyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIHRo
ZQorYFB5dGhvbiBidWcgdHJhY2tlciA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy8+YF8uCisKK0lz
c3VlcyB0aGF0IG9jY3VyIGluIHRoaXMgYmFja3BvcnQsIGJ1dCB0aGF0IGRvIG5vdCBvY2N1ciBu
b3QgaW4gdGhlCitzdGFuZGFyZCBQeXRob24gcGF0aGxpYiBtb2R1bGUgY2FuIGJlIHN1Ym1pdHRl
ZCBvbgordGhlIGBwYXRobGliMiBidWcgdHJhY2tlciA8aHR0cHM6Ly9naXRodWIuY29tL21jbXRy
b2ZmYWVzL3BhdGhsaWIyL2lzc3Vlcz5gXy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0t
LQorCitSZWZlciB0byB0aGUKK2BzdGFuZGFyZCBwYXRobGliIDxodHRwOi8vZG9jcy5weXRob24u
b3JnL2Rldi9saWJyYXJ5L3BhdGhsaWIuaHRtbD5gXworZG9jdW1lbnRhdGlvbi4KKworS25vd24g
SXNzdWVzCistLS0tLS0tLS0tLS0KKworRm9yIGhpc3RvcmljIHJlYXNvbnMsIHBhdGhsaWIyIHN0
aWxsIHVzZXMgYnl0ZXMgdG8gcmVwcmVzZW50IGZpbGUgcGF0aHMgaW50ZXJuYWxseS4KK1VuZm9y
dHVuYXRlbHksIG9uIFdpbmRvd3Mgd2l0aCBQeXRob24gMi43LCB0aGUgZmlsZSBzeXN0ZW0gZW5j
b2RlciAoYGBtY2JzYGApCitoYXMgb25seSBwb29yIHN1cHBvcnQgZm9yIG5vbi1hc2NpaSBjaGFy
YWN0ZXJzLAorYW5kIGNhbiBzaWxlbnRseSByZXBsYWNlIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHdp
dGhvdXQgd2FybmluZy4KK0ZvciBleGFtcGxlLCBgYHUn0YLQtdGB0YInLmVuY29kZShzeXMuZ2V0
ZmlsZXN5c3RlbWVuY29kaW5nKCkpYGAgcmVzdWx0cyBpbiBgYD8/Pz9gYAord2hpY2ggaXMgb2J2
aW91c2x5IGNvbXBsZXRlbHkgdXNlbGVzcy4KKworVGhlcmVmb3JlLCBvbiBXaW5kb3dzIHdpdGgg
UHl0aG9uIDIuNywgdW50aWwgdGhpcyBwcm9ibGVtIGlzIGZpeGVkIHVwc3RyZWFtLAordW5mb3J0
dW5hdGVseSB5b3UgY2Fubm90IHJlbHkgb24gcGF0aGxpYjIgdG8gc3VwcG9ydCB0aGUgZnVsbCB1
bmljb2RlIHJhbmdlIGZvciBmaWxlbmFtZXMuCitTZWUgYGlzc3VlICM1NiA8aHR0cHM6Ly9naXRo
dWIuY29tL21jbXRyb2ZmYWVzL3BhdGhsaWIyL2lzc3Vlcy81Nj5gXyBmb3IgbW9yZSBkZXRhaWxz
LgorCisuLiB8dHJhdmlzfCBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9tY210cm9mZmFl
cy9wYXRobGliMi5wbmc/YnJhbmNoPWRldmVsb3AKKyAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZp
cy1jaS5vcmcvbWNtdHJvZmZhZXMvcGF0aGxpYjIKKyAgICA6YWx0OiB0cmF2aXMtY2kKKworLi4g
fGFwcHZleW9yfCBpbWFnZTo6IGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL2FwaS9wcm9qZWN0cy9z
dGF0dXMvYmFkZHgzcnBldDJ3eWkyYz9zdmc9dHJ1ZQorICAgIDp0YXJnZXQ6IGh0dHBzOi8vY2ku
YXBwdmV5b3IuY29tL3Byb2plY3QvbWNtdHJvZmZhZXMvcGF0aGxpYjIKKyAgICA6YWx0OiBhcHB2
ZXlvcgorCisuLiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvbWNtdHJv
ZmZhZXMvcGF0aGxpYjIvYnJhbmNoL2RldmVsb3AvZ3JhcGgvYmFkZ2Uuc3ZnCisgICAgOnRhcmdl
dDogaHR0cHM6Ly9jb2RlY292LmlvL2doL21jbXRyb2ZmYWVzL3BhdGhsaWIyCisgICAgOmFsdDog
Y29kZWNvdgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL1ZFUlNJT04gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhs
aWIyL1ZFUlNJT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYzZj
OWE0OTFlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL1ZFUlNJT04KQEAgLTAs
MCArMSBAQAorMi4zLjUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvYXBwdmV5b3IueW1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYXRobGliMi9hcHB2ZXlvci55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5hYWU3ZjI1ZjM0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIy
L2FwcHZleW9yLnltbApAQCAtMCwwICsxLDMwIEBACitlbnZpcm9ubWVudDoKKworICBtYXRyaXg6
CisgICAgLSBQWVRIT046ICJDOlxcUHl0aG9uMjciCisKKyAgICAtIFBZVEhPTjogIkM6XFxQeXRo
b24zNCIKKworICAgIC0gUFlUSE9OOiAiQzpcXFB5dGhvbjM1IgorCisgICAgLSBQWVRIT046ICJD
OlxcUHl0aG9uMzYiCisKKyAgICAtIFBZVEhPTjogIkM6XFxQeXRob24zNyIKKworaW5pdDoKKyAg
LSAiJVBZVEhPTiUvcHl0aG9uIC0tdmVyc2lvbiIKKworaW5zdGFsbDoKKyAgLSAicG93ZXJzaGVs
bCBhcHB2ZXlvclxcaW5zdGFsbC5wczEiCisKK2J1aWxkOiBvZmYKKwordGVzdF9zY3JpcHQ6Cisg
IC0gY2QgdGVzdHMKKyAgLSAiJVBZVEhPTiUvU2NyaXB0cy9weS50ZXN0IC0tY292LXJlcG9ydD14
bWwgLS1jb3Y9cGF0aGxpYjIgLiIKKworYWZ0ZXJfdGVzdDoKKyAgLSBwczogfAorICAgICAgJGVu
djpQQVRIID0gJ0M6XG1zeXM2NFx1c3JcYmluOycgKyAkZW52OlBBVEgKKyAgICAgIEludm9rZS1X
ZWJSZXF1ZXN0IC1VcmkgJ2h0dHBzOi8vY29kZWNvdi5pby9iYXNoJyAtT3V0RmlsZSBjb2RlY292
LnNoCisgICAgICBiYXNoIGNvZGVjb3Yuc2ggLWYgImNvdmVyYWdlLnhtbCIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGF0aGxpYjIvYXBwdmV5b3IvaW5zdGFsbC5wczEgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL2FwcHZl
eW9yL2luc3RhbGwucHMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZWJmYmI4ZGI5NjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9hcHB2ZXlvci9p
bnN0YWxsLnBzMQpAQCAtMCwwICsxLDQ0IEBACisjIFNhbXBsZSBzY3JpcHQgdG8gaW5zdGFsbCBQ
eXRob24gYW5kIHBpcCB1bmRlciBXaW5kb3dzCisjIEF1dGhvcnM6IE9saXZpZXIgR3Jpc2VsIGFu
ZCBLeWxlIEthc3RuZXIKKyMgTGljZW5zZTogQ0MwIDEuMCBVbml2ZXJzYWw6IGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKworJEdFVF9QSVBfVVJMID0g
Imh0dHBzOi8vYm9vdHN0cmFwLnB5cGEuaW8vZ2V0LXBpcC5weSIKKyRHRVRfUElQX1BBVEggPSAi
QzpcZ2V0LXBpcC5weSIKKworCitmdW5jdGlvbiBJbnN0YWxsUGlwICgkcHl0aG9uX2hvbWUpIHsK
KyAgICAkcGlwX3BhdGggPSAkcHl0aG9uX2hvbWUgKyAiL1NjcmlwdHMvcGlwLmV4ZSIKKyAgICAk
cHl0aG9uX3BhdGggPSAkcHl0aG9uX2hvbWUgKyAiL3B5dGhvbi5leGUiCisgICAgaWYgKC1ub3Qo
VGVzdC1QYXRoICRwaXBfcGF0aCkpIHsKKyAgICAgICAgV3JpdGUtSG9zdCAiSW5zdGFsbGluZyBw
aXAuLi4iCisgICAgICAgICR3ZWJjbGllbnQgPSBOZXctT2JqZWN0IFN5c3RlbS5OZXQuV2ViQ2xp
ZW50CisgICAgICAgICR3ZWJjbGllbnQuRG93bmxvYWRGaWxlKCRHRVRfUElQX1VSTCwgJEdFVF9Q
SVBfUEFUSCkKKyAgICAgICAgV3JpdGUtSG9zdCAiRXhlY3V0aW5nOiIgJHB5dGhvbl9wYXRoICRH
RVRfUElQX1BBVEgKKyAgICAgICAgU3RhcnQtUHJvY2VzcyAtRmlsZVBhdGggIiRweXRob25fcGF0
aCIgLUFyZ3VtZW50TGlzdCAiJEdFVF9QSVBfUEFUSCIgLVdhaXQgLVBhc3N0aHJ1CisgICAgfSBl
bHNlIHsKKyAgICAgICAgV3JpdGUtSG9zdCAiVXBncmFkaW5nIHBpcC4uLiIKKyAgICAgICAgJiAk
cHl0aG9uX3BhdGggLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcAorICAgIH0KKyAgICBXcml0
ZS1Ib3N0ICJVcGdyYWRpbmcgc2V0dXB0b29scy4uLiIKKyAgICAmICRweXRob25fcGF0aCAtbSBw
aXAgaW5zdGFsbCAtLXVwZ3JhZGUgc2V0dXB0b29scworfQorCitmdW5jdGlvbiBJbnN0YWxsUGFj
a2FnZSAoJHB5dGhvbl9ob21lLCAkcGtnKSB7CisgICAgJHBpcF9wYXRoID0gJHB5dGhvbl9ob21l
ICsgIi9TY3JpcHRzL3BpcC5leGUiCisgICAgJiAkcGlwX3BhdGggaW5zdGFsbCAkcGtnCit9CisK
K2Z1bmN0aW9uIEluc3RhbGxSZXF1aXJlbWVudHMgKCRweXRob25faG9tZSwgJHJlcXMpIHsKKyAg
ICAkcGlwX3BhdGggPSAkcHl0aG9uX2hvbWUgKyAiL1NjcmlwdHMvcGlwLmV4ZSIKKyAgICAmICRw
aXBfcGF0aCBpbnN0YWxsIC1yICRyZXFzCit9CisKK2Z1bmN0aW9uIG1haW4gKCkgeworICAgIElu
c3RhbGxQaXAgJGVudjpQWVRIT04KKyAgICBJbnN0YWxsUmVxdWlyZW1lbnRzICRlbnY6UFlUSE9O
IC1yIHJlcXVpcmVtZW50cy50eHQKKyAgICBJbnN0YWxsUGFja2FnZSAkZW52OlBZVEhPTiBweXRl
c3QtY292CisgICAgSW5zdGFsbFBhY2thZ2UgJGVudjpQWVRIT04gdW5pdHRlc3QyCisgICAgSW5z
dGFsbFBhY2thZ2UgJGVudjpQWVRIT04gLgorfQorCittYWluCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
dGhsaWIyL2NvZGVjb3YueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9jb2RlY292LnltbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiMjQ3MjAwOWM2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGF0aGxpYjIvY29kZWNvdi55bWwKQEAgLTAsMCArMSBAQAorY29tbWVudDog
b2ZmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3BhdGhsaWIyL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYXRobGliMi9wYXRobGliMi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmQ1YTQ3YTY2YzY2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0
aGxpYjIvcGF0aGxpYjIvX19pbml0X18ucHkKQEAgLTAsMCArMSwxODA5IEBACisjIENvcHlyaWdo
dCAoYykgMjAxNC0yMDE3IE1hdHRoaWFzIEMuIE0uIFRyb2ZmYWVzCisjIENvcHlyaWdodCAoYykg
MjAxMi0yMDE0IEFudG9pbmUgUGl0cm91IGFuZCBjb250cmlidXRvcnMKKyMgRGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgTGljZW5zZS4KKworaW1wb3J0IGN0eXBlcworaW1w
b3J0IGZubWF0Y2gKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBpbworaW1wb3J0IG50cGF0aAor
aW1wb3J0IG9zCitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgcmUKK2ltcG9ydCBzaXgKK2ltcG9y
dCBzeXMKKworZnJvbSBlcnJubyBpbXBvcnQgRUlOVkFMLCBFTk9FTlQsIEVOT1RESVIsIEVCQURG
Citmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QsIEVQRVJNLCBFQUNDRVMKK2Zyb20gb3BlcmF0b3Ig
aW1wb3J0IGF0dHJnZXR0ZXIKK2Zyb20gc3RhdCBpbXBvcnQgKAorICAgIFNfSVNESVIsIFNfSVNM
TkssIFNfSVNSRUcsIFNfSVNTT0NLLCBTX0lTQkxLLCBTX0lTQ0hSLCBTX0lTRklGTykKKwordHJ5
OgorICAgIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZQorZXhjZXB0IEltcG9y
dEVycm9yOgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNlcXVlbmNlCisKK3RyeToKKyAg
ICBmcm9tIHVybGxpYiBpbXBvcnQgcXVvdGUgYXMgdXJscXVvdGVfZnJvbV9ieXRlcworZXhjZXB0
IEltcG9ydEVycm9yOgorICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZV9mcm9tX2J5
dGVzIGFzIHVybHF1b3RlX2Zyb21fYnl0ZXMKKworCit0cnk6CisgICAgaW50ZXJuID0gaW50ZXJu
CitleGNlcHQgTmFtZUVycm9yOgorICAgIGludGVybiA9IHN5cy5pbnRlcm4KKworc3VwcG9ydHNf
c3ltbGlua3MgPSBUcnVlCitpZiBvcy5uYW1lID09ICdudCc6CisgICAgaW1wb3J0IG50CisgICAg
aWYgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbOjJdID49ICg2LCAwKSBhbmQgc3lzLnZlcnNpb25f
aW5mbyA+PSAoMywgMik6CisgICAgICAgIGZyb20gbnQgaW1wb3J0IF9nZXRmaW5hbHBhdGhuYW1l
CisgICAgZWxzZToKKyAgICAgICAgc3VwcG9ydHNfc3ltbGlua3MgPSBGYWxzZQorICAgICAgICBf
Z2V0ZmluYWxwYXRobmFtZSA9IE5vbmUKK2Vsc2U6CisgICAgbnQgPSBOb25lCisKK3RyeToKKyAg
ICBmcm9tIG9zIGltcG9ydCBzY2FuZGlyIGFzIG9zX3NjYW5kaXIKK2V4Y2VwdCBJbXBvcnRFcnJv
cjoKKyAgICBmcm9tIHNjYW5kaXIgaW1wb3J0IHNjYW5kaXIgYXMgb3Nfc2NhbmRpcgorCitfX2Fs
bF9fID0gWworICAgICJQdXJlUGF0aCIsICJQdXJlUG9zaXhQYXRoIiwgIlB1cmVXaW5kb3dzUGF0
aCIsCisgICAgIlBhdGgiLCAiUG9zaXhQYXRoIiwgIldpbmRvd3NQYXRoIiwKKyAgICBdCisKKyMK
KyMgSW50ZXJuYWxzCisjCisKKyMgRUJBREYgLSBndWFyZCBhZ2FpbnMgbWFjT1MgYHN0YXRgIHRo
cm93aW5nIEVCQURGCitfSUdOT1JFRF9FUlJPUyA9IChFTk9FTlQsIEVOT1RESVIsIEVCQURGKQor
CitfSUdOT1JFRF9XSU5FUlJPUlMgPSAoCisgICAgMjEsICAjIEVSUk9SX05PVF9SRUFEWSAtIGRy
aXZlIGV4aXN0cyBidXQgaXMgbm90IGFjY2Vzc2libGUKKykKKworCitkZWYgX2lnbm9yZV9lcnJv
cihleGNlcHRpb24pOgorICAgIHJldHVybiAoZ2V0YXR0cihleGNlcHRpb24sICdlcnJubycsIE5v
bmUpIGluIF9JR05PUkVEX0VSUk9TIG9yCisgICAgICAgICAgICBnZXRhdHRyKGV4Y2VwdGlvbiwg
J3dpbmVycm9yJywgTm9uZSkgaW4gX0lHTk9SRURfV0lORVJST1JTKQorCisKK2RlZiBfcHkyX2Zz
ZW5jb2RlKHBhcnRzKToKKyAgICAjIHB5MiA9PiBtaW5pbWFsIHVuaWNvZGUgc3VwcG9ydAorICAg
IGFzc2VydCBzaXguUFkyCisgICAgcmV0dXJuIFtwYXJ0LmVuY29kZSgnYXNjaWknKSBpZiBpc2lu
c3RhbmNlKHBhcnQsIHNpeC50ZXh0X3R5cGUpCisgICAgICAgICAgICBlbHNlIHBhcnQgZm9yIHBh
cnQgaW4gcGFydHNdCisKKworZGVmIF90cnlfZXhjZXB0X2ZpbGVleGlzdHNlcnJvcih0cnlfZnVu
YywgZXhjZXB0X2Z1bmMsIGVsc2VfZnVuYz1Ob25lKToKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZv
ID49ICgzLCAzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5X2Z1bmMoKQorICAgICAg
ICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4Y2VwdF9mdW5j
KGV4YykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGVsc2VfZnVuYyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICBlbHNlX2Z1bmMoKQorICAgIGVsc2U6CisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHRyeV9mdW5jKCkKKyAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3Ig
YXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLmVycm5vICE9IEVFWElTVDoKKyAgICAgICAgICAg
ICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleGNlcHRfZnVu
YyhleGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBlbHNlX2Z1bmMgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgZWxzZV9mdW5jKCkKKworCitkZWYgX3RyeV9leGNlcHRfZmls
ZW5vdGZvdW5kZXJyb3IodHJ5X2Z1bmMsIGV4Y2VwdF9mdW5jKToKKyAgICBpZiBzeXMudmVyc2lv
bl9pbmZvID49ICgzLCAzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5X2Z1bmMoKQor
ICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgZXhj
ZXB0X2Z1bmMoZXhjKQorICAgIGVsaWYgb3MubmFtZSAhPSAnbnQnOgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICB0cnlfZnVuYygpCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFz
IGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBFTk9FTlQ6CisgICAgICAgICAgICAg
ICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhjZXB0X2Z1bmMo
ZXhjKQorICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeV9mdW5jKCkKKyAg
ICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAjIGVycm5vIGNv
bnRhaW5zIHdpbmVycm9yCisgICAgICAgICAgICAjIDIgPSBmaWxlIG5vdCBmb3VuZAorICAgICAg
ICAgICAgIyAzID0gcGF0aCBub3QgZm91bmQKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyBub3Qg
aW4gKDIsIDMpOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGV4Y2VwdF9mdW5jKGV4YykKKyAgICAgICAgZXhjZXB0IEVudmlyb25tZW50
RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLmVycm5vICE9IEVOT0VOVDoKKyAgICAg
ICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleGNl
cHRfZnVuYyhleGMpCisKKworZGVmIF90cnlfZXhjZXB0X3Blcm1pc3Npb25lcnJvcl9pdGVyKHRy
eV9pdGVyLCBleGNlcHRfaXRlcik6CisgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMyk6
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB4IGluIHRyeV9pdGVyKCk6CisgICAgICAg
ICAgICAgICAgeWllbGQgeAorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGV4YzoK
KyAgICAgICAgICAgIGZvciB4IGluIGV4Y2VwdF9pdGVyKGV4Yyk6CisgICAgICAgICAgICAgICAg
eWllbGQgeAorICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB4IGluIHRy
eV9pdGVyKCk6CisgICAgICAgICAgICAgICAgeWllbGQgeAorICAgICAgICBleGNlcHQgRW52aXJv
bm1lbnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMuZXJybm8gbm90IGluIChFUEVS
TSwgRUFDQ0VTKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBmb3IgeCBpbiBleGNlcHRfaXRlcihleGMpOgorICAgICAgICAgICAgICAg
ICAgICB5aWVsZCB4CisKKworZGVmIF93aW4zMl9nZXRfdW5pcXVlX3BhdGhfaWQocGF0aCk6Cisg
ICAgIyBnZXQgZmlsZSBpbmZvcm1hdGlvbiwgbmVlZGVkIGZvciBzYW1lZmlsZSBvbiBvbGRlciBQ
eXRob24gdmVyc2lvbnMKKyAgICAjIHNlZSBodHRwOi8vdGltZ29sZGVuLm1lLnVrL3B5dGhvbi93
aW4zMl9ob3dfZG9faS8KKyAgICAjIHNlZV9pZl90d29fZmlsZXNfYXJlX3RoZV9zYW1lX2ZpbGUu
aHRtbAorICAgIGZyb20gY3R5cGVzIGltcG9ydCBQT0lOVEVSLCBTdHJ1Y3R1cmUsIFdpbkVycm9y
CisgICAgZnJvbSBjdHlwZXMud2ludHlwZXMgaW1wb3J0IERXT1JELCBIQU5ETEUsIEJPT0wKKwor
ICAgIGNsYXNzIEZJTEVUSU1FKFN0cnVjdHVyZSk6CisgICAgICAgIF9maWVsZHNfID0gWygiZGF0
ZXRpbWVfbG8iLCBEV09SRCksCisgICAgICAgICAgICAgICAgICAgICgiZGF0ZXRpbWVfaGkiLCBE
V09SRCksCisgICAgICAgICAgICAgICAgICAgIF0KKworICAgIGNsYXNzIEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OKFN0cnVjdHVyZSk6CisgICAgICAgIF9maWVsZHNfID0gWygiYXR0cmlidXRl
cyIsIERXT1JEKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjcmVhdGVkX2F0IiwgRklMRVRJTUUp
LAorICAgICAgICAgICAgICAgICAgICAoImFjY2Vzc2VkX2F0IiwgRklMRVRJTUUpLAorICAgICAg
ICAgICAgICAgICAgICAoIndyaXR0ZW5fYXQiLCBGSUxFVElNRSksCisgICAgICAgICAgICAgICAg
ICAgICgidm9sdW1lIiwgRFdPUkQpLAorICAgICAgICAgICAgICAgICAgICAoImZpbGVfaGkiLCBE
V09SRCksCisgICAgICAgICAgICAgICAgICAgICgiZmlsZV9sbyIsIERXT1JEKSwKKyAgICAgICAg
ICAgICAgICAgICAgKCJuX2xpbmtzIiwgRFdPUkQpLAorICAgICAgICAgICAgICAgICAgICAoImlu
ZGV4X2hpIiwgRFdPUkQpLAorICAgICAgICAgICAgICAgICAgICAoImluZGV4X2xvIiwgRFdPUkQp
LAorICAgICAgICAgICAgICAgICAgICBdCisKKyAgICBDcmVhdGVGaWxlID0gY3R5cGVzLndpbmRs
bC5rZXJuZWwzMi5DcmVhdGVGaWxlVworICAgIENyZWF0ZUZpbGUuYXJndHlwZXMgPSBbY3R5cGVz
LmNfd2NoYXJfcCwgRFdPUkQsIERXT1JELCBjdHlwZXMuY192b2lkX3AsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEV09SRCwgRFdPUkQsIEhBTkRMRV0KKyAgICBDcmVhdGVGaWxlLnJlc3R5
cGUgPSBIQU5ETEUKKyAgICBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSA9ICgKKyAgICAgICAg
Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5HZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSkKKyAgICBH
ZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZS5hcmd0eXBlcyA9IFsKKyAgICAgICAgSEFORExFLCBQ
T0lOVEVSKEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OKV0KKyAgICBHZXRGaWxlSW5mb3JtYXRp
b25CeUhhbmRsZS5yZXN0eXBlID0gQk9PTAorICAgIENsb3NlSGFuZGxlID0gY3R5cGVzLndpbmRs
bC5rZXJuZWwzMi5DbG9zZUhhbmRsZQorICAgIENsb3NlSGFuZGxlLmFyZ3R5cGVzID0gW0hBTkRM
RV0KKyAgICBDbG9zZUhhbmRsZS5yZXN0eXBlID0gQk9PTAorICAgIEdFTkVSSUNfUkVBRCA9IDB4
ODAwMDAwMDAKKyAgICBGSUxFX1NIQVJFX1JFQUQgPSAweDAwMDAwMDAxCisgICAgRklMRV9GTEFH
X0JBQ0tVUF9TRU1BTlRJQ1MgPSAweDAyMDAwMDAwCisgICAgT1BFTl9FWElTVElORyA9IDMKKyAg
ICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICBmbGFncyA9IEZJTEVfRkxBR19CQUNL
VVBfU0VNQU5USUNTCisgICAgZWxzZToKKyAgICAgICAgZmxhZ3MgPSAwCisgICAgaGZpbGUgPSBD
cmVhdGVGaWxlKHBhdGgsIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELAorICAgICAgICAg
ICAgICAgICAgICAgICBOb25lLCBPUEVOX0VYSVNUSU5HLCBmbGFncywgTm9uZSkKKyAgICBpZiBo
ZmlsZSA9PSAweGZmZmZmZmZmOgorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAz
KToKKyAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKHBhdGgpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBleGMgPSBPU0Vycm9yKCJmaWxlIG5vdCBmb3VuZDogcGF0aCIpCisg
ICAgICAgICAgICBleGMuZXJybm8gPSBFTk9FTlQKKyAgICAgICAgICAgIHJhaXNlIGV4YworICAg
IGluZm8gPSBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTigpCisgICAgc3VjY2VzcyA9IEdldEZp
bGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhmaWxlLCBpbmZvKQorICAgIENsb3NlSGFuZGxlKGhmaWxl
KQorICAgIGlmIHN1Y2Nlc3MgPT0gMDoKKyAgICAgICAgcmFpc2UgV2luRXJyb3IoKQorICAgIHJl
dHVybiBpbmZvLnZvbHVtZSwgaW5mby5pbmRleF9oaSwgaW5mby5pbmRleF9sbworCisKK2RlZiBf
aXNfd2lsZGNhcmRfcGF0dGVybihwYXQpOgorICAgICMgV2hldGhlciB0aGlzIHBhdHRlcm4gbmVl
ZHMgYWN0dWFsIG1hdGNoaW5nIHVzaW5nIGZubWF0Y2gsIG9yIGNhbgorICAgICMgYmUgbG9va2Vk
IHVwIGRpcmVjdGx5IGFzIGEgZmlsZS4KKyAgICByZXR1cm4gIioiIGluIHBhdCBvciAiPyIgaW4g
cGF0IG9yICJbIiBpbiBwYXQKKworCitjbGFzcyBfRmxhdm91cihvYmplY3QpOgorCisgICAgIiIi
QSBmbGF2b3VyIGltcGxlbWVudHMgYSBwYXJ0aWN1bGFyIChwbGF0Zm9ybS1zcGVjaWZpYykgc2V0
IG9mIHBhdGgKKyAgICBzZW1hbnRpY3MuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6Cisg
ICAgICAgIHNlbGYuam9pbiA9IHNlbGYuc2VwLmpvaW4KKworICAgIGRlZiBwYXJzZV9wYXJ0cyhz
ZWxmLCBwYXJ0cyk6CisgICAgICAgIGlmIHNpeC5QWTI6CisgICAgICAgICAgICBwYXJ0cyA9IF9w
eTJfZnNlbmNvZGUocGFydHMpCisgICAgICAgIHBhcnNlZCA9IFtdCisgICAgICAgIHNlcCA9IHNl
bGYuc2VwCisgICAgICAgIGFsdHNlcCA9IHNlbGYuYWx0c2VwCisgICAgICAgIGRydiA9IHJvb3Qg
PSAnJworICAgICAgICBpdCA9IHJldmVyc2VkKHBhcnRzKQorICAgICAgICBmb3IgcGFydCBpbiBp
dDoKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICBpZiBhbHRzZXA6CisgICAgICAgICAgICAgICAgcGFydCA9IHBhcnQucmVwbGFj
ZShhbHRzZXAsIHNlcCkKKyAgICAgICAgICAgIGRydiwgcm9vdCwgcmVsID0gc2VsZi5zcGxpdHJv
b3QocGFydCkKKyAgICAgICAgICAgIGlmIHNlcCBpbiByZWw6CisgICAgICAgICAgICAgICAgZm9y
IHggaW4gcmV2ZXJzZWQocmVsLnNwbGl0KHNlcCkpOgorICAgICAgICAgICAgICAgICAgICBpZiB4
IGFuZCB4ICE9ICcuJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5hcHBlbmQoaW50
ZXJuKHgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiByZWwgYW5kIHJl
bCAhPSAnLic6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5hcHBlbmQoaW50ZXJuKHJlbCkp
CisgICAgICAgICAgICBpZiBkcnYgb3Igcm9vdDoKKyAgICAgICAgICAgICAgICBpZiBub3QgZHJ2
OgorICAgICAgICAgICAgICAgICAgICAjIElmIG5vIGRyaXZlIGlzIHByZXNlbnQsIHRyeSB0byBm
aW5kIG9uZSBpbiB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJ0cy4gVGhp
cyBtYWtlcyB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgZS5nLgorICAgICAgICAgICAgICAgICAgICAj
ICgiQzoiLCAiLyIsICJhIikgcmVhc29uYWJseSBpbnR1aXRpdmUuCisgICAgICAgICAgICAgICAg
ICAgIGZvciBwYXJ0IGluIGl0OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGFsdHNlcDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gcGFy
dC5yZXBsYWNlKGFsdHNlcCwgc2VwKQorICAgICAgICAgICAgICAgICAgICAgICAgZHJ2ID0gc2Vs
Zi5zcGxpdHJvb3QocGFydClbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRydjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgIGlmIGRydiBvciByb290OgorICAgICAgICAgICAgcGFyc2VkLmFwcGVuZChkcnYgKyBy
b290KQorICAgICAgICBwYXJzZWQucmV2ZXJzZSgpCisgICAgICAgIHJldHVybiBkcnYsIHJvb3Qs
IHBhcnNlZAorCisgICAgZGVmIGpvaW5fcGFyc2VkX3BhcnRzKHNlbGYsIGRydiwgcm9vdCwgcGFy
dHMsIGRydjIsIHJvb3QyLCBwYXJ0czIpOgorICAgICAgICAiIiIKKyAgICAgICAgSm9pbiB0aGUg
dHdvIHBhdGhzIHJlcHJlc2VudGVkIGJ5IHRoZSByZXNwZWN0aXZlCisgICAgICAgIChkcml2ZSwg
cm9vdCwgcGFydHMpIHR1cGxlcy4gIFJldHVybiBhIG5ldyAoZHJpdmUsIHJvb3QsIHBhcnRzKSB0
dXBsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHJvb3QyOgorICAgICAgICAgICAgaWYgbm90
IGRydjIgYW5kIGRydjoKKyAgICAgICAgICAgICAgICByZXR1cm4gZHJ2LCByb290MiwgW2RydiAr
IHJvb3QyXSArIHBhcnRzMlsxOl0KKyAgICAgICAgZWxpZiBkcnYyOgorICAgICAgICAgICAgaWYg
ZHJ2MiA9PSBkcnYgb3Igc2VsZi5jYXNlZm9sZChkcnYyKSA9PSBzZWxmLmNhc2Vmb2xkKGRydik6
CisgICAgICAgICAgICAgICAgIyBTYW1lIGRyaXZlID0+IHNlY29uZCBwYXRoIGlzIHJlbGF0aXZl
IHRvIHRoZSBmaXJzdAorICAgICAgICAgICAgICAgIHJldHVybiBkcnYsIHJvb3QsIHBhcnRzICsg
cGFydHMyWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBu
b24tYW5jaG9yZWQgKGNvbW1vbiBjYXNlKQorICAgICAgICAgICAgcmV0dXJuIGRydiwgcm9vdCwg
cGFydHMgKyBwYXJ0czIKKyAgICAgICAgcmV0dXJuIGRydjIsIHJvb3QyLCBwYXJ0czIKKworCitj
bGFzcyBfV2luZG93c0ZsYXZvdXIoX0ZsYXZvdXIpOgorICAgICMgUmVmZXJlbmNlIGZvciBXaW5k
b3dzIHBhdGhzIGNhbiBiZSBmb3VuZCBhdAorICAgICMgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L2FhMzY1MjQ3JTI4dj12cy44NSUyOS5hc3B4CisKKyAgICBzZXAgPSAn
XFwnCisgICAgYWx0c2VwID0gJy8nCisgICAgaGFzX2RydiA9IFRydWUKKyAgICBwYXRobW9kID0g
bnRwYXRoCisKKyAgICBpc19zdXBwb3J0ZWQgPSAob3MubmFtZSA9PSAnbnQnKQorCisgICAgZHJp
dmVfbGV0dGVycyA9IHNldCgnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWicpCisgICAgZXh0X25hbWVzcGFjZV9wcmVmaXggPSAnXFxcXD9cXCcKKwor
ICAgIHJlc2VydmVkX25hbWVzID0gKAorICAgICAgICBzZXQoWydDT04nLCAnUFJOJywgJ0FVWCcs
ICdOVUwnXSkgfAorICAgICAgICBzZXQoWydDT00lZCcgJSBpIGZvciBpIGluIHJhbmdlKDEsIDEw
KV0pIHwKKyAgICAgICAgc2V0KFsnTFBUJWQnICUgaSBmb3IgaSBpbiByYW5nZSgxLCAxMCldKQor
ICAgICAgICApCisKKyAgICAjIEludGVyZXN0aW5nIGZpbmRpbmdzIGFib3V0IGV4dGVuZGVkIHBh
dGhzOgorICAgICMgLSAnXFw/XGM6XGEnLCAnLy8/L2M6XGEnIGFuZCAnLy8/L2M6L2EnIGFyZSBh
bGwgc3VwcG9ydGVkCisgICAgIyAgIGJ1dCAnXFw/XGM6L2EnIGlzIG5vdAorICAgICMgLSBleHRl
bmRlZCBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlOyAicmVsYXRpdmUiIGV4dGVuZGVkIHBhdGhz
IHdpbGwKKyAgICAjICAgZmFpbC4KKworICAgIGRlZiBzcGxpdHJvb3Qoc2VsZiwgcGFydCwgc2Vw
PXNlcCk6CisgICAgICAgIGZpcnN0ID0gcGFydFswOjFdCisgICAgICAgIHNlY29uZCA9IHBhcnRb
MToyXQorICAgICAgICBpZiAoc2Vjb25kID09IHNlcCBhbmQgZmlyc3QgPT0gc2VwKToKKyAgICAg
ICAgICAgICMgWFhYIGV4dGVuZGVkIHBhdGhzIHNob3VsZCBhbHNvIGRpc2FibGUgdGhlIGNvbGxh
cHNpbmcgb2YgIi4iCisgICAgICAgICAgICAjIGNvbXBvbmVudHMgKGFjY29yZGluZyB0byBNU0RO
IGRvY3MpLgorICAgICAgICAgICAgcHJlZml4LCBwYXJ0ID0gc2VsZi5fc3BsaXRfZXh0ZW5kZWRf
cGF0aChwYXJ0KQorICAgICAgICAgICAgZmlyc3QgPSBwYXJ0WzA6MV0KKyAgICAgICAgICAgIHNl
Y29uZCA9IHBhcnRbMToyXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJlZml4ID0gJycK
KyAgICAgICAgdGhpcmQgPSBwYXJ0WzI6M10KKyAgICAgICAgaWYgKHNlY29uZCA9PSBzZXAgYW5k
IGZpcnN0ID09IHNlcCBhbmQgdGhpcmQgIT0gc2VwKToKKyAgICAgICAgICAgICMgaXMgYSBVTkMg
cGF0aDoKKyAgICAgICAgICAgICMgdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2IHJvb3QKKyAgICAgICAg
ICAgICMgXFxtYWNoaW5lXG1vdW50cG9pbnRcZGlyZWN0b3J5XGV0Y1wuLi4KKyAgICAgICAgICAg
ICMgICAgICAgICAgICBkaXJlY3RvcnkgXl5eXl5eXl5eXl5eXl4KKyAgICAgICAgICAgIGluZGV4
ID0gcGFydC5maW5kKHNlcCwgMikKKyAgICAgICAgICAgIGlmIGluZGV4ICE9IC0xOgorICAgICAg
ICAgICAgICAgIGluZGV4MiA9IHBhcnQuZmluZChzZXAsIGluZGV4ICsgMSkKKyAgICAgICAgICAg
ICAgICAjIGEgVU5DIHBhdGggY2FuJ3QgaGF2ZSB0d28gc2xhc2hlcyBpbiBhIHJvdworICAgICAg
ICAgICAgICAgICMgKGFmdGVyIHRoZSBpbml0aWFsIHR3bykKKyAgICAgICAgICAgICAgICBpZiBp
bmRleDIgIT0gaW5kZXggKyAxOgorICAgICAgICAgICAgICAgICAgICBpZiBpbmRleDIgPT0gLTE6
CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDIgPSBsZW4ocGFydCkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWZp
eCArIHBhcnRbMTppbmRleDJdLCBzZXAsIHBhcnRbaW5kZXgyICsgMTpdCisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydFs6aW5kZXgy
XSwgc2VwLCBwYXJ0W2luZGV4MiArIDE6XQorICAgICAgICBkcnYgPSByb290ID0gJycKKyAgICAg
ICAgaWYgc2Vjb25kID09ICc6JyBhbmQgZmlyc3QgaW4gc2VsZi5kcml2ZV9sZXR0ZXJzOgorICAg
ICAgICAgICAgZHJ2ID0gcGFydFs6Ml0KKyAgICAgICAgICAgIHBhcnQgPSBwYXJ0WzI6XQorICAg
ICAgICAgICAgZmlyc3QgPSB0aGlyZAorICAgICAgICBpZiBmaXJzdCA9PSBzZXA6CisgICAgICAg
ICAgICByb290ID0gZmlyc3QKKyAgICAgICAgICAgIHBhcnQgPSBwYXJ0LmxzdHJpcChzZXApCisg
ICAgICAgIHJldHVybiBwcmVmaXggKyBkcnYsIHJvb3QsIHBhcnQKKworICAgIGRlZiBjYXNlZm9s
ZChzZWxmLCBzKToKKyAgICAgICAgcmV0dXJuIHMubG93ZXIoKQorCisgICAgZGVmIGNhc2Vmb2xk
X3BhcnRzKHNlbGYsIHBhcnRzKToKKyAgICAgICAgcmV0dXJuIFtwLmxvd2VyKCkgZm9yIHAgaW4g
cGFydHNdCisKKyAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoLCBzdHJpY3Q9RmFsc2UpOgorICAg
ICAgICBzID0gc3RyKHBhdGgpCisgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgcmV0dXJu
IG9zLmdldGN3ZCgpCisgICAgICAgIHByZXZpb3VzX3MgPSBOb25lCisgICAgICAgIGlmIF9nZXRm
aW5hbHBhdGhuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc3RyaWN0OgorICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9leHRfdG9fbm9ybWFsKF9nZXRmaW5hbHBhdGhuYW1lKHMp
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEVuZCBvZiB0aGUgcGF0aCBh
ZnRlciB0aGUgZmlyc3Qgb25lIG5vdCBmb3VuZAorICAgICAgICAgICAgICAgIHRhaWxfcGFydHMg
PSBbXQorCisgICAgICAgICAgICAgICAgZGVmIF90cnlfZnVuYygpOgorICAgICAgICAgICAgICAg
ICAgICByZXN1bHRbMF0gPSBzZWxmLl9leHRfdG9fbm9ybWFsKF9nZXRmaW5hbHBhdGhuYW1lKHMp
KQorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBubyBleGNlcHRpb24sIHNldCBm
bGFnIHRvIDAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzFdID0gMAorCisgICAgICAgICAg
ICAgICAgZGVmIF9leGNfZnVuYyhleGMpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBb
Tm9uZSwgMV0KKyAgICAgICAgICAgICAgICAgICAgX3RyeV9leGNlcHRfZmlsZW5vdGZvdW5kZXJy
b3IoX3RyeV9mdW5jLCBfZXhjX2Z1bmMpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlc3VsdFsx
XSA9PSAxOiAgIyBmaWxlIG5vdCBmb3VuZCBleGNlcHRpb24gcmFpc2VkCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c19zID0gcworICAgICAgICAgICAgICAgICAgICAgICAgcywgdGFp
bCA9IG9zLnBhdGguc3BsaXQocykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhaWxfcGFydHMu
YXBwZW5kKHRhaWwpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcmV2aW91c19zID09IHM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGgKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByZXN1bHRbMF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ocywgKnJldmVyc2VkKHRhaWxf
cGFydHMpKQorICAgICAgICAjIE1lYW5zIGZhbGxiYWNrIG9uIGFic29sdXRlCisgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICBkZWYgX3NwbGl0X2V4dGVuZGVkX3BhdGgoc2VsZiwgcywgZXh0X3By
ZWZpeD1leHRfbmFtZXNwYWNlX3ByZWZpeCk6CisgICAgICAgIHByZWZpeCA9ICcnCisgICAgICAg
IGlmIHMuc3RhcnRzd2l0aChleHRfcHJlZml4KToKKyAgICAgICAgICAgIHByZWZpeCA9IHNbOjRd
CisgICAgICAgICAgICBzID0gc1s0Ol0KKyAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnVU5D
XFwnKToKKyAgICAgICAgICAgICAgICBwcmVmaXggKz0gc1s6M10KKyAgICAgICAgICAgICAgICBz
ID0gJ1xcJyArIHNbMzpdCisgICAgICAgIHJldHVybiBwcmVmaXgsIHMKKworICAgIGRlZiBfZXh0
X3RvX25vcm1hbChzZWxmLCBzKToKKyAgICAgICAgIyBUdXJuIGJhY2sgYW4gZXh0ZW5kZWQgcGF0
aCBpbnRvIGEgbm9ybWFsIERPUy1saWtlIHBhdGgKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NwbGl0
X2V4dGVuZGVkX3BhdGgocylbMV0KKworICAgIGRlZiBpc19yZXNlcnZlZChzZWxmLCBwYXJ0cyk6
CisgICAgICAgICMgTk9URTogdGhlIHJ1bGVzIGZvciByZXNlcnZlZCBuYW1lcyBzZWVtIHNvbWV3
aGF0IGNvbXBsaWNhdGVkCisgICAgICAgICMgKGUuZy4gciIuLlxOVUwiIGlzIHJlc2VydmVkIGJ1
dCBub3QgciJmb29cTlVMIikuCisgICAgICAgICMgV2UgZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRp
b24gYW5kIHJldHVybiBUcnVlIGZvciBwYXRocyB3aGljaCBhcmUKKyAgICAgICAgIyBub3QgY29u
c2lkZXJlZCByZXNlcnZlZCBieSBXaW5kb3dzLgorICAgICAgICBpZiBub3QgcGFydHM6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgcGFydHNbMF0uc3RhcnRzd2l0aCgnXFxc
XCcpOgorICAgICAgICAgICAgIyBVTkMgcGF0aHMgYXJlIG5ldmVyIHJlc2VydmVkCisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHBhcnRzWy0xXS5wYXJ0aXRpb24oJy4n
KVswXS51cHBlcigpIGluIHNlbGYucmVzZXJ2ZWRfbmFtZXMKKworICAgIGRlZiBtYWtlX3VyaShz
ZWxmLCBwYXRoKToKKyAgICAgICAgIyBVbmRlciBXaW5kb3dzLCBmaWxlIFVSSXMgdXNlIHRoZSBV
VEYtOCBlbmNvZGluZy4KKyAgICAgICAgZHJpdmUgPSBwYXRoLmRyaXZlCisgICAgICAgIGlmIGxl
bihkcml2ZSkgPT0gMiBhbmQgZHJpdmVbMV0gPT0gJzonOgorICAgICAgICAgICAgIyBJdCdzIGEg
cGF0aCBvbiBhIGxvY2FsIGRyaXZlID0+ICdmaWxlOi8vL2M6L2EvYicKKyAgICAgICAgICAgIHJl
c3QgPSBwYXRoLmFzX3Bvc2l4KClbMjpdLmxzdHJpcCgnLycpCisgICAgICAgICAgICByZXR1cm4g
J2ZpbGU6Ly8vJXMvJXMnICUgKAorICAgICAgICAgICAgICAgIGRyaXZlLCB1cmxxdW90ZV9mcm9t
X2J5dGVzKHJlc3QuZW5jb2RlKCd1dGYtOCcpKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgSXQncyBhIHBhdGggb24gYSBuZXR3b3JrIGRyaXZlID0+ICdmaWxlOi8vaG9zdC9zaGFyZS9h
L2InCisgICAgICAgICAgICByZXR1cm4gJ2ZpbGU6JyArIHVybHF1b3RlX2Zyb21fYnl0ZXMoCisg
ICAgICAgICAgICAgICAgcGF0aC5hc19wb3NpeCgpLmVuY29kZSgndXRmLTgnKSkKKworICAgIGRl
ZiBnZXRob21lZGlyKHNlbGYsIHVzZXJuYW1lKToKKyAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVu
dmlyb246CisgICAgICAgICAgICB1c2VyaG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAg
ICBlbGlmICdVU0VSUFJPRklMRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIHVzZXJob21l
ID0gb3MuZW52aXJvblsnVVNFUlBST0ZJTEUnXQorICAgICAgICBlbGlmICdIT01FUEFUSCcgaW4g
b3MuZW52aXJvbjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkcnYgPSBvcy5l
bnZpcm9uWydIT01FRFJJVkUnXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAg
ICAgICAgICAgIGRydiA9ICcnCisgICAgICAgICAgICB1c2VyaG9tZSA9IGRydiArIG9zLmVudmly
b25bJ0hPTUVQQVRIJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcigiQ2FuJ3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5IikKKworICAgICAgICBpZiB1c2Vy
bmFtZToKKyAgICAgICAgICAgICMgVHJ5IHRvIGd1ZXNzIHVzZXIgaG9tZSBkaXJlY3RvcnkuICBC
eSBkZWZhdWx0IGFsbCB1c2VycworICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBhcmUgbG9jYXRl
ZCBpbiB0aGUgc2FtZSBwbGFjZSBhbmQgYXJlIG5hbWVkIGJ5CisgICAgICAgICAgICAjIGNvcnJl
c3BvbmRpbmcgdXNlcm5hbWVzLiAgSWYgY3VycmVudCB1c2VyIGhvbWUgZGlyZWN0b3J5IHBvaW50
cworICAgICAgICAgICAgIyB0byBub25zdGFuZGFyZCBwbGFjZSwgdGhpcyBndWVzcyBpcyBsaWtl
bHkgd3JvbmcuCisgICAgICAgICAgICBpZiBvcy5lbnZpcm9uWydVU0VSTkFNRSddICE9IHVzZXJu
YW1lOgorICAgICAgICAgICAgICAgIGRydiwgcm9vdCwgcGFydHMgPSBzZWxmLnBhcnNlX3BhcnRz
KCh1c2VyaG9tZSwpKQorICAgICAgICAgICAgICAgIGlmIHBhcnRzWy0xXSAhPSBvcy5lbnZpcm9u
WydVU0VSTkFNRSddOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNh
bid0IGRldGVybWluZSBob21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZm9yICVyIiAlIHVzZXJuYW1lKQorICAgICAgICAgICAgICAgIHBhcnRz
Wy0xXSA9IHVzZXJuYW1lCisgICAgICAgICAgICAgICAgaWYgZHJ2IG9yIHJvb3Q6CisgICAgICAg
ICAgICAgICAgICAgIHVzZXJob21lID0gZHJ2ICsgcm9vdCArIHNlbGYuam9pbihwYXJ0c1sxOl0p
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdXNlcmhvbWUgPSBz
ZWxmLmpvaW4ocGFydHMpCisgICAgICAgIHJldHVybiB1c2VyaG9tZQorCisKK2NsYXNzIF9Qb3Np
eEZsYXZvdXIoX0ZsYXZvdXIpOgorICAgIHNlcCA9ICcvJworICAgIGFsdHNlcCA9ICcnCisgICAg
aGFzX2RydiA9IEZhbHNlCisgICAgcGF0aG1vZCA9IHBvc2l4cGF0aAorCisgICAgaXNfc3VwcG9y
dGVkID0gKG9zLm5hbWUgIT0gJ250JykKKworICAgIGRlZiBzcGxpdHJvb3Qoc2VsZiwgcGFydCwg
c2VwPXNlcCk6CisgICAgICAgIGlmIHBhcnQgYW5kIHBhcnRbMF0gPT0gc2VwOgorICAgICAgICAg
ICAgc3RyaXBwZWRfcGFydCA9IHBhcnQubHN0cmlwKHNlcCkKKyAgICAgICAgICAgICMgQWNjb3Jk
aW5nIHRvIFBPU0lYIHBhdGggcmVzb2x1dGlvbjoKKyAgICAgICAgICAgICMgaHR0cDovL3B1YnMu
b3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNlZGVmcy8KKyAgICAgICAgICAg
ICMgeGJkX2NoYXAwNC5odG1sI3RhZ18wNF8xMQorICAgICAgICAgICAgIyAiQSBwYXRobmFtZSB0
aGF0IGJlZ2lucyB3aXRoIHR3byBzdWNjZXNzaXZlIHNsYXNoZXMgbWF5IGJlCisgICAgICAgICAg
ICAjIGludGVycHJldGVkIGluIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgbWFubmVyLCBhbHRo
b3VnaCBtb3JlCisgICAgICAgICAgICAjIHRoYW4gdHdvIGxlYWRpbmcgc2xhc2hlcyBzaGFsbCBi
ZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHNsYXNoIi4KKyAgICAgICAgICAgIGlmIGxlbihwYXJ0KSAt
IGxlbihzdHJpcHBlZF9wYXJ0KSA9PSAyOgorICAgICAgICAgICAgICAgIHJldHVybiAnJywgc2Vw
ICogMiwgc3RyaXBwZWRfcGFydAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJycsIHNlcCwgc3RyaXBwZWRfcGFydAorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmV0dXJuICcnLCAnJywgcGFydAorCisgICAgZGVmIGNhc2Vmb2xkKHNlbGYsIHMpOgorICAgICAg
ICByZXR1cm4gcworCisgICAgZGVmIGNhc2Vmb2xkX3BhcnRzKHNlbGYsIHBhcnRzKToKKyAgICAg
ICAgcmV0dXJuIHBhcnRzCisKKyAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoLCBzdHJpY3Q9RmFs
c2UpOgorICAgICAgICBzZXAgPSBzZWxmLnNlcAorICAgICAgICBhY2Nlc3NvciA9IHBhdGguX2Fj
Y2Vzc29yCisgICAgICAgIHNlZW4gPSB7fQorCisgICAgICAgIGRlZiBfcmVzb2x2ZShwYXRoLCBy
ZXN0KToKKyAgICAgICAgICAgIGlmIHJlc3Quc3RhcnRzd2l0aChzZXApOgorICAgICAgICAgICAg
ICAgIHBhdGggPSAnJworCisgICAgICAgICAgICBmb3IgbmFtZSBpbiByZXN0LnNwbGl0KHNlcCk6
CisgICAgICAgICAgICAgICAgaWYgbm90IG5hbWUgb3IgbmFtZSA9PSAnLic6CisgICAgICAgICAg
ICAgICAgICAgICMgY3VycmVudCBkaXIKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgICAgICBpZiBuYW1lID09ICcuLic6CisgICAgICAgICAgICAgICAgICAgICMgcGFy
ZW50IGRpcgorICAgICAgICAgICAgICAgICAgICBwYXRoLCBfLCBfID0gcGF0aC5ycGFydGl0aW9u
KHNlcCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBuZXdw
YXRoID0gcGF0aCArIHNlcCArIG5hbWUKKyAgICAgICAgICAgICAgICBpZiBuZXdwYXRoIGluIHNl
ZW46CisgICAgICAgICAgICAgICAgICAgICMgQWxyZWFkeSBzZWVuIHRoaXMgcGF0aAorICAgICAg
ICAgICAgICAgICAgICBwYXRoID0gc2VlbltuZXdwYXRoXQorICAgICAgICAgICAgICAgICAgICBp
ZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2UgY2FjaGVk
IHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAg
ICAgICAjIFRoZSBzeW1saW5rIGlzIG5vdCByZXNvbHZlZCwgc28gd2UgbXVzdCBoYXZlIGEgc3lt
bGluaworICAgICAgICAgICAgICAgICAgICAjIGxvb3AuCisgICAgICAgICAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcigiU3ltbGluayBsb29wIGZyb20gJXIiICUgbmV3cGF0aCkKKyAgICAg
ICAgICAgICAgICAjIFJlc29sdmUgdGhlIHN5bWJvbGljIGxpbmsKKyAgICAgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGFjY2Vzc29yLnJlYWRsaW5rKG5ld3Bh
dGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAg
ICAgICAgaWYgZS5lcnJubyAhPSBFSU5WQUwgYW5kIHN0cmljdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICMgTm90IGEgc3ltbGluaywgb3Igbm9u
LXN0cmljdCBtb2RlLiBXZSBqdXN0IGxlYXZlIHRoZSBwYXRoCisgICAgICAgICAgICAgICAgICAg
ICMgdW50b3VjaGVkLgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gbmV3cGF0aAorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlZW5bbmV3cGF0aF0gPSBOb25l
ICAjIG5vdCByZXNvbHZlZCBzeW1saW5rCisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBfcmVz
b2x2ZShwYXRoLCB0YXJnZXQpCisgICAgICAgICAgICAgICAgICAgIHNlZW5bbmV3cGF0aF0gPSBw
YXRoICAjIHJlc29sdmVkIHN5bWxpbmsKKworICAgICAgICAgICAgcmV0dXJuIHBhdGgKKyAgICAg
ICAgIyBOT1RFOiBhY2NvcmRpbmcgdG8gUE9TSVgsIGdldGN3ZCgpIGNhbm5vdCBjb250YWluIHBh
dGggY29tcG9uZW50cworICAgICAgICAjIHdoaWNoIGFyZSBzeW1saW5rcy4KKyAgICAgICAgYmFz
ZSA9ICcnIGlmIHBhdGguaXNfYWJzb2x1dGUoKSBlbHNlIG9zLmdldGN3ZCgpCisgICAgICAgIHJl
dHVybiBfcmVzb2x2ZShiYXNlLCBzdHIocGF0aCkpIG9yIHNlcAorCisgICAgZGVmIGlzX3Jlc2Vy
dmVkKHNlbGYsIHBhcnRzKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgbWFrZV91
cmkoc2VsZiwgcGF0aCk6CisgICAgICAgICMgV2UgcmVwcmVzZW50IHRoZSBwYXRoIHVzaW5nIHRo
ZSBsb2NhbCBmaWxlc3lzdGVtIGVuY29kaW5nLAorICAgICAgICAjIGZvciBwb3J0YWJpbGl0eSB0
byBvdGhlciBhcHBsaWNhdGlvbnMuCisgICAgICAgIGJwYXRoID0gYnl0ZXMocGF0aCkKKyAgICAg
ICAgcmV0dXJuICdmaWxlOi8vJyArIHVybHF1b3RlX2Zyb21fYnl0ZXMoYnBhdGgpCisKKyAgICBk
ZWYgZ2V0aG9tZWRpcihzZWxmLCB1c2VybmFtZSk6CisgICAgICAgIGlmIG5vdCB1c2VybmFtZToK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuZW52aXJvblsnSE9N
RSddCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgaW1wb3J0
IHB3ZAorICAgICAgICAgICAgICAgIHJldHVybiBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpLnB3
X2RpcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1wb3J0IHB3ZAorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBwd2QuZ2V0cHduYW0odXNlcm5hbWUpLnB3X2Rp
cgorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcigiQ2FuJ3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5ICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZvciAlciIgJSB1c2VybmFtZSkKKworCitfd2luZG93
c19mbGF2b3VyID0gX1dpbmRvd3NGbGF2b3VyKCkKK19wb3NpeF9mbGF2b3VyID0gX1Bvc2l4Rmxh
dm91cigpCisKKworY2xhc3MgX0FjY2Vzc29yOgorCisgICAgIiIiQW4gYWNjZXNzb3IgaW1wbGVt
ZW50cyBhIHBhcnRpY3VsYXIgKHN5c3RlbS1zcGVjaWZpYyBvciBub3QpIHdheSBvZgorICAgIGFj
Y2Vzc2luZyBwYXRocyBvbiB0aGUgZmlsZXN5c3RlbS4iIiIKKworCitjbGFzcyBfTm9ybWFsQWNj
ZXNzb3IoX0FjY2Vzc29yKToKKworICAgIGRlZiBfd3JhcF9zdHJmdW5jKHN0cmZ1bmMpOgorICAg
ICAgICBAZnVuY3Rvb2xzLndyYXBzKHN0cmZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVkKHBhdGhv
YmosICphcmdzKToKKyAgICAgICAgICAgIHJldHVybiBzdHJmdW5jKHN0cihwYXRob2JqKSwgKmFy
Z3MpCisgICAgICAgIHJldHVybiBzdGF0aWNtZXRob2Qod3JhcHBlZCkKKworICAgIGRlZiBfd3Jh
cF9iaW5hcnlfc3RyZnVuYyhzdHJmdW5jKToKKyAgICAgICAgQGZ1bmN0b29scy53cmFwcyhzdHJm
dW5jKQorICAgICAgICBkZWYgd3JhcHBlZChwYXRob2JqQSwgcGF0aG9iakIsICphcmdzKToKKyAg
ICAgICAgICAgIHJldHVybiBzdHJmdW5jKHN0cihwYXRob2JqQSksIHN0cihwYXRob2JqQiksICph
cmdzKQorICAgICAgICByZXR1cm4gc3RhdGljbWV0aG9kKHdyYXBwZWQpCisKKyAgICBzdGF0ID0g
X3dyYXBfc3RyZnVuYyhvcy5zdGF0KQorCisgICAgbHN0YXQgPSBfd3JhcF9zdHJmdW5jKG9zLmxz
dGF0KQorCisgICAgb3BlbiA9IF93cmFwX3N0cmZ1bmMob3Mub3BlbikKKworICAgIGxpc3RkaXIg
PSBfd3JhcF9zdHJmdW5jKG9zLmxpc3RkaXIpCisKKyAgICBzY2FuZGlyID0gX3dyYXBfc3RyZnVu
Yyhvc19zY2FuZGlyKQorCisgICAgY2htb2QgPSBfd3JhcF9zdHJmdW5jKG9zLmNobW9kKQorCisg
ICAgaWYgaGFzYXR0cihvcywgImxjaG1vZCIpOgorICAgICAgICBsY2htb2QgPSBfd3JhcF9zdHJm
dW5jKG9zLmxjaG1vZCkKKyAgICBlbHNlOgorICAgICAgICBkZWYgbGNobW9kKHNlbGYsIHBhdGhv
YmosIG1vZGUpOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigibGNobW9k
KCkgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHN5c3RlbSIpCisKKyAgICBta2RpciA9IF93cmFwX3N0
cmZ1bmMob3MubWtkaXIpCisKKyAgICB1bmxpbmsgPSBfd3JhcF9zdHJmdW5jKG9zLnVubGluaykK
KworICAgIHJtZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5ybWRpcikKKworICAgIHJlbmFtZSA9IF93
cmFwX2JpbmFyeV9zdHJmdW5jKG9zLnJlbmFtZSkKKworICAgIGlmIHN5cy52ZXJzaW9uX2luZm8g
Pj0gKDMsIDMpOgorICAgICAgICByZXBsYWNlID0gX3dyYXBfYmluYXJ5X3N0cmZ1bmMob3MucmVw
bGFjZSkKKworICAgIGlmIG50OgorICAgICAgICBpZiBzdXBwb3J0c19zeW1saW5rczoKKyAgICAg
ICAgICAgIHN5bWxpbmsgPSBfd3JhcF9iaW5hcnlfc3RyZnVuYyhvcy5zeW1saW5rKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgZGVmIHN5bWxpbmsoYSwgYiwgdGFyZ2V0X2lzX2RpcmVjdG9y
eSk6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAg
ICAgICAgICAgICAgInN5bWxpbmsoKSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtIikKKyAg
ICBlbHNlOgorICAgICAgICAjIFVuZGVyIFBPU0lYLCBvcy5zeW1saW5rKCkgdGFrZXMgdHdvIGFy
Z3MKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgc3ltbGluayhhLCBiLCB0YXJn
ZXRfaXNfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHJldHVybiBvcy5zeW1saW5rKHN0cihhKSwg
c3RyKGIpKQorCisgICAgdXRpbWUgPSBfd3JhcF9zdHJmdW5jKG9zLnV0aW1lKQorCisgICAgIyBI
ZWxwZXIgZm9yIHJlc29sdmUoKQorICAgIGRlZiByZWFkbGluayhzZWxmLCBwYXRoKToKKyAgICAg
ICAgcmV0dXJuIG9zLnJlYWRsaW5rKHBhdGgpCisKKworX25vcm1hbF9hY2Nlc3NvciA9IF9Ob3Jt
YWxBY2Nlc3NvcigpCisKKworIworIyBHbG9iYmluZyBoZWxwZXJzCisjCisKK2RlZiBfbWFrZV9z
ZWxlY3RvcihwYXR0ZXJuX3BhcnRzKToKKyAgICBwYXQgPSBwYXR0ZXJuX3BhcnRzWzBdCisgICAg
Y2hpbGRfcGFydHMgPSBwYXR0ZXJuX3BhcnRzWzE6XQorICAgIGlmIHBhdCA9PSAnKionOgorICAg
ICAgICBjbHMgPSBfUmVjdXJzaXZlV2lsZGNhcmRTZWxlY3RvcgorICAgIGVsaWYgJyoqJyBpbiBw
YXQ6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAiSW52YWxpZCBwYXR0
ZXJuOiAnKionIGNhbiBvbmx5IGJlIGFuIGVudGlyZSBwYXRoIGNvbXBvbmVudCIpCisgICAgZWxp
ZiBfaXNfd2lsZGNhcmRfcGF0dGVybihwYXQpOgorICAgICAgICBjbHMgPSBfV2lsZGNhcmRTZWxl
Y3RvcgorICAgIGVsc2U6CisgICAgICAgIGNscyA9IF9QcmVjaXNlU2VsZWN0b3IKKyAgICByZXR1
cm4gY2xzKHBhdCwgY2hpbGRfcGFydHMpCisKKworaWYgaGFzYXR0cihmdW5jdG9vbHMsICJscnVf
Y2FjaGUiKToKKyAgICBfbWFrZV9zZWxlY3RvciA9IGZ1bmN0b29scy5scnVfY2FjaGUoKShfbWFr
ZV9zZWxlY3RvcikKKworCitjbGFzcyBfU2VsZWN0b3I6CisKKyAgICAiIiJBIHNlbGVjdG9yIG1h
dGNoZXMgYSBzcGVjaWZpYyBnbG9iIHBhdHRlcm4gcGFydCBhZ2FpbnN0IHRoZSBjaGlsZHJlbgor
ICAgIG9mIGEgZ2l2ZW4gcGF0aC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGlsZF9w
YXJ0cyk6CisgICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cworICAgICAgICBp
ZiBjaGlsZF9wYXJ0czoKKyAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX21ha2Vfc2VsZWN0
b3IoY2hpbGRfcGFydHMpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9UZXJtaW5hdGluZ1NlbGVjdG9y
KCkKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCisKKyAgICBkZWYgc2VsZWN0X2Zy
b20oc2VsZiwgcGFyZW50X3BhdGgpOgorICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxk
IHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCisgICAgICAgIHNlbGVjdG9y
LiAgVGhpcyBjYW4gY29udGFpbiBwYXJlbnRfcGF0aCBpdHNlbGYuIiIiCisgICAgICAgIHBhdGhf
Y2xzID0gdHlwZShwYXJlbnRfcGF0aCkKKyAgICAgICAgaXNfZGlyID0gcGF0aF9jbHMuaXNfZGly
CisgICAgICAgIGV4aXN0cyA9IHBhdGhfY2xzLmV4aXN0cworICAgICAgICBzY2FuZGlyID0gcGFy
ZW50X3BhdGguX2FjY2Vzc29yLnNjYW5kaXIKKyAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRf
cGF0aCk6CisgICAgICAgICAgICByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3NlbGVjdF9mcm9tKHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcikKKworCitj
bGFzcyBfVGVybWluYXRpbmdTZWxlY3RvcjoKKworICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwg
cGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKKyAgICAgICAgeWllbGQgcGFy
ZW50X3BhdGgKKworCitjbGFzcyBfUHJlY2lzZVNlbGVjdG9yKF9TZWxlY3Rvcik6CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgY2hpbGRfcGFydHMpOgorICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCisgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKKwor
ICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBz
Y2FuZGlyKToKKyAgICAgICAgZGVmIHRyeV9pdGVyKCk6CisgICAgICAgICAgICBwYXRoID0gcGFy
ZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChzZWxmLm5hbWUpCisgICAgICAgICAgICBpZiAo
aXNfZGlyIGlmIHNlbGYuZGlyb25seSBlbHNlIGV4aXN0cykocGF0aCk6CisgICAgICAgICAgICAg
ICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKAorICAgICAgICAgICAgICAg
ICAgICAgICAgcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAg
ICAgICB5aWVsZCBwCisKKyAgICAgICAgZGVmIGV4Y2VwdF9pdGVyKGV4Yyk6CisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgZm9yIHggaW4gX3RyeV9leGNl
cHRfcGVybWlzc2lvbmVycm9yX2l0ZXIodHJ5X2l0ZXIsIGV4Y2VwdF9pdGVyKToKKyAgICAgICAg
ICAgIHlpZWxkIHgKKworCitjbGFzcyBfV2lsZGNhcmRTZWxlY3RvcihfU2VsZWN0b3IpOgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMpOgorICAgICAgICBzZWxmLnBh
dCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFuc2xhdGUocGF0KSkKKyAgICAgICAgX1NlbGVjdG9y
Ll9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQorCisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxm
LCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICBkZWYgdHJ5
X2l0ZXIoKToKKyAgICAgICAgICAgIGNmID0gcGFyZW50X3BhdGguX2ZsYXZvdXIuY2FzZWZvbGQK
KyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAg
ICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYu
ZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGVu
dHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCisgICAg
ICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFt
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxl
Y3RfZnJvbSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgaXNfZGlyLCBl
eGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKwor
ICAgICAgICBkZWYgZXhjZXB0X2l0ZXIoZXhjKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAgICAgeWllbGQKKworICAgICAgICBmb3IgeCBpbiBfdHJ5X2V4Y2VwdF9wZXJtaXNzaW9uZXJy
b3JfaXRlcih0cnlfaXRlciwgZXhjZXB0X2l0ZXIpOgorICAgICAgICAgICAgeWllbGQgeAorCisK
K2NsYXNzIF9SZWN1cnNpdmVXaWxkY2FyZFNlbGVjdG9yKF9TZWxlY3Rvcik6CisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcGF0LCBjaGlsZF9wYXJ0cyk6CisgICAgICAgIF9TZWxlY3Rvci5fX2lu
aXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKKworICAgIGRlZiBfaXRlcmF0ZV9kaXJlY3Rvcmllcyhz
ZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgeWllbGQgcGFyZW50
X3BhdGgKKworICAgICAgICBkZWYgdHJ5X2l0ZXIoKToKKyAgICAgICAgICAgIGVudHJpZXMgPSBs
aXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJp
ZXM6CisgICAgICAgICAgICAgICAgZW50cnlfaXNfZGlyID0gRmFsc2UKKyAgICAgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVudHJ5X2lzX2RpciA9IGVudHJ5LmlzX2Rpcigp
CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAg
ICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlz
ZQorICAgICAgICAgICAgICAgIGlmIGVudHJ5X2lzX2RpciBhbmQgbm90IGVudHJ5LmlzX3N5bWxp
bmsoKToKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxk
X3JlbHBhdGgoZW50cnkubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5f
aXRlcmF0ZV9kaXJlY3RvcmllcyhwYXRoLCBpc19kaXIsIHNjYW5kaXIpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgeWllbGQgcAorCisgICAgICAgIGRlZiBleGNlcHRfaXRlcihleGMpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGZvciB4IGluIF90
cnlfZXhjZXB0X3Blcm1pc3Npb25lcnJvcl9pdGVyKHRyeV9pdGVyLCBleGNlcHRfaXRlcik6Cisg
ICAgICAgICAgICB5aWVsZCB4CisKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9w
YXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgIGRlZiB0cnlfaXRlcigpOgor
ICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgc3VjY2Vzc29yX3NlbGVjdCA9IHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbQorICAg
ICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9y
aWVzKAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3BhdGgsIGlzX2Rpciwgc2NhbmRp
cik6CisgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHN1Y2Nlc3Nvcl9zZWxlY3QoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdfcG9pbnQsIGlzX2RpciwgZXhpc3RzLCBz
Y2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHlpZWxkZWQuYWRkKHApCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAg
ICAgIHlpZWxkZWQuY2xlYXIoKQorCisgICAgICAgIGRlZiBleGNlcHRfaXRlcihleGMpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGZvciB4IGluIF90
cnlfZXhjZXB0X3Blcm1pc3Npb25lcnJvcl9pdGVyKHRyeV9pdGVyLCBleGNlcHRfaXRlcik6Cisg
ICAgICAgICAgICB5aWVsZCB4CisKKworIworIyBQdWJsaWMgQVBJCisjCisKK2NsYXNzIF9QYXRo
UGFyZW50cyhTZXF1ZW5jZSk6CisKKyAgICAiIiJUaGlzIG9iamVjdCBwcm92aWRlcyBzZXF1ZW5j
ZS1saWtlIGFjY2VzcyB0byB0aGUgbG9naWNhbCBhbmNlc3RvcnMKKyAgICBvZiBhIHBhdGguICBE
b24ndCB0cnkgdG8gY29uc3RydWN0IGl0IHlvdXJzZWxmLiIiIgorICAgIF9fc2xvdHNfXyA9ICgn
X3BhdGhjbHMnLCAnX2RydicsICdfcm9vdCcsICdfcGFydHMnKQorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBhdGgpOgorICAgICAgICAjIFdlIGRvbid0IHN0b3JlIHRoZSBpbnN0YW5jZSB0byBh
dm9pZCByZWZlcmVuY2UgY3ljbGVzCisgICAgICAgIHNlbGYuX3BhdGhjbHMgPSB0eXBlKHBhdGgp
CisgICAgICAgIHNlbGYuX2RydiA9IHBhdGguX2RydgorICAgICAgICBzZWxmLl9yb290ID0gcGF0
aC5fcm9vdAorICAgICAgICBzZWxmLl9wYXJ0cyA9IHBhdGguX3BhcnRzCisKKyAgICBkZWYgX19s
ZW5fXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fZHJ2IG9yIHNlbGYuX3Jvb3Q6CisgICAgICAg
ICAgICByZXR1cm4gbGVuKHNlbGYuX3BhcnRzKSAtIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJldHVybiBsZW4oc2VsZi5fcGFydHMpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwg
aWR4KToKKyAgICAgICAgaWYgaWR4IDwgMCBvciBpZHggPj0gbGVuKHNlbGYpOgorICAgICAgICAg
ICAgcmFpc2UgSW5kZXhFcnJvcihpZHgpCisgICAgICAgIHJldHVybiBzZWxmLl9wYXRoY2xzLl9m
cm9tX3BhcnNlZF9wYXJ0cyhzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0c1s6LWlkeCAtIDFdKQor
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjx7MH0ucGFyZW50cz4i
LmZvcm1hdChzZWxmLl9wYXRoY2xzLl9fbmFtZV9fKQorCisKK2NsYXNzIFB1cmVQYXRoKG9iamVj
dCk6CisKKyAgICAiIiJQdXJlUGF0aCByZXByZXNlbnRzIGEgZmlsZXN5c3RlbSBwYXRoIGFuZCBv
ZmZlcnMgb3BlcmF0aW9ucyB3aGljaAorICAgIGRvbid0IGltcGx5IGFueSBhY3R1YWwgZmlsZXN5
c3RlbSBJL08uICBEZXBlbmRpbmcgb24geW91ciBzeXN0ZW0sCisgICAgaW5zdGFudGlhdGluZyBh
IFB1cmVQYXRoIHdpbGwgcmV0dXJuIGVpdGhlciBhIFB1cmVQb3NpeFBhdGggb3IgYQorICAgIFB1
cmVXaW5kb3dzUGF0aCBvYmplY3QuICBZb3UgY2FuIGFsc28gaW5zdGFudGlhdGUgZWl0aGVyIG9m
IHRoZXNlIGNsYXNzZXMKKyAgICBkaXJlY3RseSwgcmVnYXJkbGVzcyBvZiB5b3VyIHN5c3RlbS4K
KyAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoCisgICAgICAgICdfZHJ2JywgJ19yb290JywgJ19w
YXJ0cycsCisgICAgICAgICdfc3RyJywgJ19oYXNoJywgJ19wcGFydHMnLCAnX2NhY2hlZF9jcGFy
dHMnLAorICAgICkKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MpOgorICAgICAgICAiIiJD
b25zdHJ1Y3QgYSBQdXJlUGF0aCBmcm9tIG9uZSBvciBzZXZlcmFsIHN0cmluZ3MgYW5kIG9yIGV4
aXN0aW5nCisgICAgICAgIFB1cmVQYXRoIG9iamVjdHMuICBUaGUgc3RyaW5ncyBhbmQgcGF0aCBv
YmplY3RzIGFyZSBjb21iaW5lZCBzbyBhcworICAgICAgICB0byB5aWVsZCBhIGNhbm9uaWNhbGl6
ZWQgcGF0aCwgd2hpY2ggaXMgaW5jb3Jwb3JhdGVkIGludG8gdGhlCisgICAgICAgIG5ldyBQdXJl
UGF0aCBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBjbHMgaXMgUHVyZVBhdGg6Cisg
ICAgICAgICAgICBjbHMgPSBQdXJlV2luZG93c1BhdGggaWYgb3MubmFtZSA9PSAnbnQnIGVsc2Ug
UHVyZVBvc2l4UGF0aAorICAgICAgICByZXR1cm4gY2xzLl9mcm9tX3BhcnRzKGFyZ3MpCisKKyAg
ICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgIyBVc2luZyB0aGUgcGFydHMgdHVwbGUg
aGVscHMgc2hhcmUgaW50ZXJuZWQgcGF0aCBwYXJ0cworICAgICAgICAjIHdoZW4gcGlja2xpbmcg
cmVsYXRlZCBwYXRocy4KKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgdHVwbGUoc2Vs
Zi5fcGFydHMpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wYXJzZV9hcmdzKGNscywg
YXJncyk6CisgICAgICAgICMgVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgZG9uJ3Qgd2FudCB0byBj
cmVhdGUgYW4gaW5zdGFuY2UsIGp1c3QKKyAgICAgICAgIyBjYW5vbmljYWxpemUgc29tZSBjb25z
dHJ1Y3RvciBhcmd1bWVudHMuCisgICAgICAgIHBhcnRzID0gW10KKyAgICAgICAgZm9yIGEgaW4g
YXJnczoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgorICAgICAgICAg
ICAgICAgIHBhcnRzICs9IGEuX3BhcnRzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDYpOgorICAgICAgICAgICAgICAgICAgICBh
ID0gb3MuZnNwYXRoKGEpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgIyBkdWNrIHR5cGluZyBmb3Igb2xkZXIgUHl0aG9uIHZlcnNpb25zCisgICAgICAgICAgICAg
ICAgICAgIGlmIGhhc2F0dHIoYSwgIl9fZnNwYXRoX18iKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGEgPSBhLl9fZnNwYXRoX18oKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwg
c3RyKToKKyAgICAgICAgICAgICAgICAgICAgIyBGb3JjZS1jYXN0IHN0ciBzdWJjbGFzc2VzIHRv
IHN0ciAoaXNzdWUgIzIxMTI3KQorICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc3Ry
KGEpKQorICAgICAgICAgICAgICAgICMgYWxzbyBoYW5kbGUgdW5pY29kZSBmb3IgUFkyIChzaXgu
dGV4dF90eXBlID0gdW5pY29kZSkKKyAgICAgICAgICAgICAgICBlbGlmIHNpeC5QWTIgYW5kIGlz
aW5zdGFuY2UoYSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICMgY2FzdCB0
byBzdHIgdXNpbmcgZmlsZXN5c3RlbSBlbmNvZGluZworICAgICAgICAgICAgICAgICAgICAjIG5v
dGU6IGluIHJhcmUgY2lyY3Vtc3RhbmNlcywgb24gUHl0aG9uIDwgMy4yLAorICAgICAgICAgICAg
ICAgICAgICAjIGdldGZpbGVzeXN0ZW1lbmNvZGluZyBjYW4gcmV0dXJuIE5vbmUsIGluIHRoYXQK
KyAgICAgICAgICAgICAgICAgICAgIyBjYXNlIGZhbGwgYmFjayB0byBhc2NpaQorICAgICAgICAg
ICAgICAgICAgICBwYXJ0cy5hcHBlbmQoYS5lbmNvZGUoCisgICAgICAgICAgICAgICAgICAgICAg
ICBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgb3IgImFzY2lpIikpCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAg
ICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0ciBvYmplY3Qgb3IgYW4gb3Mu
UGF0aExpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5pbmcgc3Ry
LCBub3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCisgICAgICAgIHJl
dHVybiBjbHMuX2ZsYXZvdXIucGFyc2VfcGFydHMocGFydHMpCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgX2Zyb21fcGFydHMoY2xzLCBhcmdzLCBpbml0PVRydWUpOgorICAgICAgICAjIFdl
IG5lZWQgdG8gY2FsbCBfcGFyc2VfYXJncyBvbiB0aGUgaW5zdGFuY2UsIHNvIGFzIHRvIGdldCB0
aGUKKyAgICAgICAgIyByaWdodCBmbGF2b3VyLgorICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3
X18oY2xzKQorICAgICAgICBkcnYsIHJvb3QsIHBhcnRzID0gc2VsZi5fcGFyc2VfYXJncyhhcmdz
KQorICAgICAgICBzZWxmLl9kcnYgPSBkcnYKKyAgICAgICAgc2VsZi5fcm9vdCA9IHJvb3QKKyAg
ICAgICAgc2VsZi5fcGFydHMgPSBwYXJ0cworICAgICAgICBpZiBpbml0OgorICAgICAgICAgICAg
c2VsZi5faW5pdCgpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgX2Zyb21fcGFyc2VkX3BhcnRzKGNscywgZHJ2LCByb290LCBwYXJ0cywgaW5pdD1UcnVl
KToKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgc2VsZi5fZHJ2
ID0gZHJ2CisgICAgICAgIHNlbGYuX3Jvb3QgPSByb290CisgICAgICAgIHNlbGYuX3BhcnRzID0g
cGFydHMKKyAgICAgICAgaWYgaW5pdDoKKyAgICAgICAgICAgIHNlbGYuX2luaXQoKQorICAgICAg
ICByZXR1cm4gc2VsZgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9mb3JtYXRfcGFyc2Vk
X3BhcnRzKGNscywgZHJ2LCByb290LCBwYXJ0cyk6CisgICAgICAgIGlmIGRydiBvciByb290Ogor
ICAgICAgICAgICAgcmV0dXJuIGRydiArIHJvb3QgKyBjbHMuX2ZsYXZvdXIuam9pbihwYXJ0c1sx
Ol0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gY2xzLl9mbGF2b3VyLmpvaW4o
cGFydHMpCisKKyAgICBkZWYgX2luaXQoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGRlbiBpbiBj
b25jcmV0ZSBQYXRoCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfbWFrZV9jaGlsZChzZWxmLCBh
cmdzKToKKyAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYuX3BhcnNlX2FyZ3MoYXJncykK
KyAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYuX2ZsYXZvdXIuam9pbl9wYXJzZWRfcGFy
dHMoCisgICAgICAgICAgICBzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsIHNlbGYuX3BhcnRzLCBkcnYs
IHJvb3QsIHBhcnRzKQorICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJzZWRfcGFydHMoZHJ2
LCByb290LCBwYXJ0cykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1
cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCwgc3VpdGFibGUgZm9yCisg
ICAgICAgIHBhc3NpbmcgdG8gc3lzdGVtIGNhbGxzLiIiIgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fc3RyCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAg
ICAgICAgICAgIHNlbGYuX3N0ciA9IHNlbGYuX2Zvcm1hdF9wYXJzZWRfcGFydHMoc2VsZi5fZHJ2
LCBzZWxmLl9yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wYXJ0cykgb3IgJy4nCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Ry
CisKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQor
CisgICAgZGVmIGFzX3Bvc2l4KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyBy
ZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCB3aXRoIGZvcndhcmQgKC8pCisgICAgICAgIHNsYXNo
ZXMuIiIiCisgICAgICAgIGYgPSBzZWxmLl9mbGF2b3VyCisgICAgICAgIHJldHVybiBzdHIoc2Vs
ZikucmVwbGFjZShmLnNlcCwgJy8nKQorCisgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBieXRlcyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aC4gIFRoaXMg
aXMgb25seQorICAgICAgICByZWNvbW1lbmRlZCB0byB1c2UgdW5kZXIgVW5peC4iIiIKKyAgICAg
ICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAyKToKKyAgICAgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IoIm5lZWRzIFB5dGhvbiAzLjIgb3IgbGF0ZXIiKQorICAgICAgICByZXR1
cm4gb3MuZnNlbmNvZGUoc3RyKHNlbGYpKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAg
ICAgICByZXR1cm4gInswfSh7MSFyfSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywg
c2VsZi5hc19wb3NpeCgpKQorCisgICAgZGVmIGFzX3VyaShzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJuIHRoZSBwYXRoIGFzIGEgJ2ZpbGUnIFVSSS4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuaXNf
YWJzb2x1dGUoKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlbGF0aXZlIHBhdGgg
Y2FuJ3QgYmUgZXhwcmVzc2VkIGFzIGEgZmlsZSBVUkkiKQorICAgICAgICByZXR1cm4gc2VsZi5f
Zmxhdm91ci5tYWtlX3VyaShzZWxmKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9jcGFydHMo
c2VsZik6CisgICAgICAgICMgQ2FjaGVkIGNhc2Vmb2xkZWQgcGFydHMsIGZvciBoYXNoaW5nIGFu
ZCBjb21wYXJpc29uCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWNo
ZWRfY3BhcnRzCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNl
bGYuX2NhY2hlZF9jcGFydHMgPSBzZWxmLl9mbGF2b3VyLmNhc2Vmb2xkX3BhcnRzKHNlbGYuX3Bh
cnRzKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9jcGFydHMKKworICAgIGRlZiBf
X2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUHVy
ZVBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVy
biAoCisgICAgICAgICAgICBzZWxmLl9jcGFydHMgPT0gb3RoZXIuX2NwYXJ0cworICAgICAgICAg
ICAgYW5kIHNlbGYuX2ZsYXZvdXIgaXMgb3RoZXIuX2ZsYXZvdXIpCisKKyAgICBkZWYgX19uZV9f
KHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmID09IG90aGVyCisKKyAgICBk
ZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9oYXNoCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYu
X2hhc2ggPSBoYXNoKHR1cGxlKHNlbGYuX2NwYXJ0cykpCisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5faGFzaAorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIChub3Qg
aXNpbnN0YW5jZShvdGhlciwgUHVyZVBhdGgpCisgICAgICAgICAgICAgICAgb3Igc2VsZi5fZmxh
dm91ciBpcyBub3Qgb3RoZXIuX2ZsYXZvdXIpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxl
bWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9jcGFydHMgPCBvdGhlci5fY3BhcnRzCisKKyAg
ICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKG90
aGVyLCBQdXJlUGF0aCkKKyAgICAgICAgICAgICAgICBvciBzZWxmLl9mbGF2b3VyIGlzIG5vdCBv
dGhlci5fZmxhdm91cik6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2NwYXJ0cyA8PSBvdGhlci5fY3BhcnRzCisKKyAgICBkZWYgX19ndF9f
KHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKG90aGVyLCBQdXJlUGF0
aCkKKyAgICAgICAgICAgICAgICBvciBzZWxmLl9mbGF2b3VyIGlzIG5vdCBvdGhlci5fZmxhdm91
cik6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2NwYXJ0cyA+IG90aGVyLl9jcGFydHMKKworICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIp
OgorICAgICAgICBpZiAobm90IGlzaW5zdGFuY2Uob3RoZXIsIFB1cmVQYXRoKQorICAgICAgICAg
ICAgICAgIG9yIHNlbGYuX2ZsYXZvdXIgaXMgbm90IG90aGVyLl9mbGF2b3VyKToKKyAgICAgICAg
ICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fY3BhcnRzID49
IG90aGVyLl9jcGFydHMKKworICAgIGRyaXZlID0gcHJvcGVydHkoYXR0cmdldHRlcignX2Rydicp
LAorICAgICAgICAgICAgICAgICAgICAgZG9jPSIiIlRoZSBkcml2ZSBwcmVmaXggKGxldHRlciBv
ciBVTkMgcGF0aCksIGlmIGFueS4iIiIpCisKKyAgICByb290ID0gcHJvcGVydHkoYXR0cmdldHRl
cignX3Jvb3QnKSwKKyAgICAgICAgICAgICAgICAgICAgZG9jPSIiIlRoZSByb290IG9mIHRoZSBw
YXRoLCBpZiBhbnkuIiIiKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFuY2hvcihzZWxmKToK
KyAgICAgICAgIiIiVGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGRyaXZlIGFuZCByb290LCBvciAn
Jy4iIiIKKyAgICAgICAgYW5jaG9yID0gc2VsZi5fZHJ2ICsgc2VsZi5fcm9vdAorICAgICAgICBy
ZXR1cm4gYW5jaG9yCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAg
ICAgIiIiVGhlIGZpbmFsIHBhdGggY29tcG9uZW50LCBpZiBhbnkuIiIiCisgICAgICAgIHBhcnRz
ID0gc2VsZi5fcGFydHMKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAoMSBpZiAoc2VsZi5fZHJ2
IG9yIHNlbGYuX3Jvb3QpIGVsc2UgMCk6CisgICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAg
cmV0dXJuIHBhcnRzWy0xXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN1ZmZpeChzZWxmKToK
KyAgICAgICAgIiIiVGhlIGZpbmFsIGNvbXBvbmVudCdzIGxhc3Qgc3VmZml4LCBpZiBhbnkuIiIi
CisgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgaSA9IG5hbWUucmZpbmQoJy4nKQor
ICAgICAgICBpZiAwIDwgaSA8IGxlbihuYW1lKSAtIDE6CisgICAgICAgICAgICByZXR1cm4gbmFt
ZVtpOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJworCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHN1ZmZpeGVzKHNlbGYpOgorICAgICAgICAiIiJBIGxpc3Qgb2YgdGhlIGZp
bmFsIGNvbXBvbmVudCdzIHN1ZmZpeGVzLCBpZiBhbnkuIiIiCisgICAgICAgIG5hbWUgPSBzZWxm
Lm5hbWUKKyAgICAgICAgaWYgbmFtZS5lbmRzd2l0aCgnLicpOgorICAgICAgICAgICAgcmV0dXJu
IFtdCisgICAgICAgIG5hbWUgPSBuYW1lLmxzdHJpcCgnLicpCisgICAgICAgIHJldHVybiBbJy4n
ICsgc3VmZml4IGZvciBzdWZmaXggaW4gbmFtZS5zcGxpdCgnLicpWzE6XV0KKworICAgIEBwcm9w
ZXJ0eQorICAgIGRlZiBzdGVtKHNlbGYpOgorICAgICAgICAiIiJUaGUgZmluYWwgcGF0aCBjb21w
b25lbnQsIG1pbnVzIGl0cyBsYXN0IHN1ZmZpeC4iIiIKKyAgICAgICAgbmFtZSA9IHNlbGYubmFt
ZQorICAgICAgICBpID0gbmFtZS5yZmluZCgnLicpCisgICAgICAgIGlmIDAgPCBpIDwgbGVuKG5h
bWUpIC0gMToKKyAgICAgICAgICAgIHJldHVybiBuYW1lWzppXQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIGRlZiB3aXRoX25hbWUoc2VsZiwgbmFtZSk6Cisg
ICAgICAgICIiIlJldHVybiBhIG5ldyBwYXRoIHdpdGggdGhlIGZpbGUgbmFtZSBjaGFuZ2VkLiIi
IgorICAgICAgICBpZiBub3Qgc2VsZi5uYW1lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigiJXIgaGFzIGFuIGVtcHR5IG5hbWUiICUgKHNlbGYsKSkKKyAgICAgICAgZHJ2LCByb290LCBw
YXJ0cyA9IHNlbGYuX2ZsYXZvdXIucGFyc2VfcGFydHMoKG5hbWUsKSkKKyAgICAgICAgaWYgKG5v
dCBuYW1lIG9yIG5hbWVbLTFdIGluIFtzZWxmLl9mbGF2b3VyLnNlcCwgc2VsZi5fZmxhdm91ci5h
bHRzZXBdCisgICAgICAgICAgICAgICAgb3IgZHJ2IG9yIHJvb3Qgb3IgbGVuKHBhcnRzKSAhPSAx
KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbmFtZSAlciIgJSAobmFt
ZSkpCisgICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3BhcnNlZF9wYXJ0cyhzZWxmLl9kcnYsIHNl
bGYuX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
YXJ0c1s6LTFdICsgW25hbWVdKQorCisgICAgZGVmIHdpdGhfc3VmZml4KHNlbGYsIHN1ZmZpeCk6
CisgICAgICAgICIiIlJldHVybiBhIG5ldyBwYXRoIHdpdGggdGhlIGZpbGUgc3VmZml4IGNoYW5n
ZWQuICBJZiB0aGUgcGF0aAorICAgICAgICBoYXMgbm8gc3VmZml4LCBhZGQgZ2l2ZW4gc3VmZml4
LiAgSWYgdGhlIGdpdmVuIHN1ZmZpeCBpcyBhbiBlbXB0eQorICAgICAgICBzdHJpbmcsIHJlbW92
ZSB0aGUgc3VmZml4IGZyb20gdGhlIHBhdGguCisgICAgICAgICIiIgorICAgICAgICAjIFhYWCBp
ZiBzdWZmaXggaXMgTm9uZSwgc2hvdWxkIHRoZSBjdXJyZW50IHN1ZmZpeCBiZSByZW1vdmVkPwor
ICAgICAgICBmID0gc2VsZi5fZmxhdm91cgorICAgICAgICBpZiBmLnNlcCBpbiBzdWZmaXggb3Ig
Zi5hbHRzZXAgYW5kIGYuYWx0c2VwIGluIHN1ZmZpeDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoIkludmFsaWQgc3VmZml4ICVyIiAlIChzdWZmaXgpKQorICAgICAgICBpZiBzdWZmaXgg
YW5kIG5vdCBzdWZmaXguc3RhcnRzd2l0aCgnLicpIG9yIHN1ZmZpeCA9PSAnLic6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHN1ZmZpeCAlciIgJSAoc3VmZml4KSkKKyAg
ICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIiVyIGhhcyBhbiBlbXB0eSBuYW1lIiAlIChzZWxmLCkpCisgICAg
ICAgIG9sZF9zdWZmaXggPSBzZWxmLnN1ZmZpeAorICAgICAgICBpZiBub3Qgb2xkX3N1ZmZpeDoK
KyAgICAgICAgICAgIG5hbWUgPSBuYW1lICsgc3VmZml4CisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBuYW1lID0gbmFtZVs6LWxlbihvbGRfc3VmZml4KV0gKyBzdWZmaXgKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKHNlbGYuX2Rydiwgc2VsZi5fcm9vdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRzWzotMV0gKyBbbmFt
ZV0pCisKKyAgICBkZWYgcmVsYXRpdmVfdG8oc2VsZiwgKm90aGVyKToKKyAgICAgICAgIiIiUmV0
dXJuIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGFub3RoZXIgcGF0aCBpZGVudGlmaWVkIGJ5IHRoZSBw
YXNzZWQKKyAgICAgICAgYXJndW1lbnRzLiAgSWYgdGhlIG9wZXJhdGlvbiBpcyBub3QgcG9zc2li
bGUgKGJlY2F1c2UgdGhpcyBpcyBub3QKKyAgICAgICAgYSBzdWJwYXRoIG9mIHRoZSBvdGhlciBw
YXRoKSwgcmFpc2UgVmFsdWVFcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgICMgRm9yIHRoZSBw
dXJwb3NlIG9mIHRoaXMgbWV0aG9kLCBkcml2ZSBhbmQgcm9vdCBhcmUgY29uc2lkZXJlZAorICAg
ICAgICAjIHNlcGFyYXRlIHBhcnRzLCBpLmUuOgorICAgICAgICAjICAgUGF0aCgnYzovJykucmVs
YXRpdmVfdG8oJ2M6JykgIGdpdmVzIFBhdGgoJy8nKQorICAgICAgICAjICAgUGF0aCgnYzovJyku
cmVsYXRpdmVfdG8oJy8nKSAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgaWYgbm90IG90aGVy
OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVu
dCIpCisgICAgICAgIHBhcnRzID0gc2VsZi5fcGFydHMKKyAgICAgICAgZHJ2ID0gc2VsZi5fZHJ2
CisgICAgICAgIHJvb3QgPSBzZWxmLl9yb290CisgICAgICAgIGlmIHJvb3Q6CisgICAgICAgICAg
ICBhYnNfcGFydHMgPSBbZHJ2LCByb290XSArIHBhcnRzWzE6XQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgYWJzX3BhcnRzID0gcGFydHMKKyAgICAgICAgdG9fZHJ2LCB0b19yb290LCB0b19w
YXJ0cyA9IHNlbGYuX3BhcnNlX2FyZ3Mob3RoZXIpCisgICAgICAgIGlmIHRvX3Jvb3Q6CisgICAg
ICAgICAgICB0b19hYnNfcGFydHMgPSBbdG9fZHJ2LCB0b19yb290XSArIHRvX3BhcnRzWzE6XQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9fYWJzX3BhcnRzID0gdG9fcGFydHMKKyAgICAg
ICAgbiA9IGxlbih0b19hYnNfcGFydHMpCisgICAgICAgIGNmID0gc2VsZi5fZmxhdm91ci5jYXNl
Zm9sZF9wYXJ0cworICAgICAgICBpZiAocm9vdCBvciBkcnYpIGlmIG4gPT0gMCBlbHNlIGNmKGFi
c19wYXJ0c1s6bl0pICE9IGNmKHRvX2Fic19wYXJ0cyk6CisgICAgICAgICAgICBmb3JtYXR0ZWQg
PSBzZWxmLl9mb3JtYXRfcGFyc2VkX3BhcnRzKHRvX2RydiwgdG9fcm9vdCwgdG9fcGFydHMpCisg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ7MCFyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHsx
IXJ9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHN0cihzZWxmKSwgc3Ry
KGZvcm1hdHRlZCkpKQorICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJzZWRfcGFydHMoJycs
IHJvb3QgaWYgbiA9PSAxIGVsc2UgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNfcGFydHNbbjpdKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRzKHNl
bGYpOgorICAgICAgICAiIiJBbiBvYmplY3QgcHJvdmlkaW5nIHNlcXVlbmNlLWxpa2UgYWNjZXNz
IHRvIHRoZQorICAgICAgICBjb21wb25lbnRzIGluIHRoZSBmaWxlc3lzdGVtIHBhdGguIiIiCisg
ICAgICAgICMgV2UgY2FjaGUgdGhlIHR1cGxlIHRvIGF2b2lkIGJ1aWxkaW5nIGEgbmV3IG9uZSBl
YWNoIHRpbWUgLnBhcnRzCisgICAgICAgICMgaXMgYWNjZXNzZWQuICBYWFggaXMgdGhpcyBuZWNl
c3Nhcnk/CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcGFydHMKKyAg
ICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5fcHBhcnRzID0g
dHVwbGUoc2VsZi5fcGFydHMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHBhcnRzCisKKyAg
ICBkZWYgam9pbnBhdGgoc2VsZiwgKmFyZ3MpOgorICAgICAgICAiIiJDb21iaW5lIHRoaXMgcGF0
aCB3aXRoIG9uZSBvciBzZXZlcmFsIGFyZ3VtZW50cywgYW5kIHJldHVybiBhCisgICAgICAgIG5l
dyBwYXRoIHJlcHJlc2VudGluZyBlaXRoZXIgYSBzdWJwYXRoIChpZiBhbGwgYXJndW1lbnRzIGFy
ZSByZWxhdGl2ZQorICAgICAgICBwYXRocykgb3IgYSB0b3RhbGx5IGRpZmZlcmVudCBwYXRoIChp
ZiBvbmUgb2YgdGhlIGFyZ3VtZW50cyBpcworICAgICAgICBhbmNob3JlZCkuCisgICAgICAgICIi
IgorICAgICAgICByZXR1cm4gc2VsZi5fbWFrZV9jaGlsZChhcmdzKQorCisgICAgZGVmIF9fdHJ1
ZWRpdl9fKHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzZWxmLl9tYWtlX2NoaWxkKChrZXks
KSkKKworICAgIGRlZiBfX3J0cnVlZGl2X18oc2VsZiwga2V5KToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2Zyb21fcGFydHMoW2tleV0gKyBzZWxmLl9wYXJ0cykKKworICAgIGlmIHNpeC5QWTI6Cisg
ICAgICAgIF9fZGl2X18gPSBfX3RydWVkaXZfXworICAgICAgICBfX3JkaXZfXyA9IF9fcnRydWVk
aXZfXworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmVudChzZWxmKToKKyAgICAgICAgIiIi
VGhlIGxvZ2ljYWwgcGFyZW50IG9mIHRoZSBwYXRoLiIiIgorICAgICAgICBkcnYgPSBzZWxmLl9k
cnYKKyAgICAgICAgcm9vdCA9IHNlbGYuX3Jvb3QKKyAgICAgICAgcGFydHMgPSBzZWxmLl9wYXJ0
cworICAgICAgICBpZiBsZW4ocGFydHMpID09IDEgYW5kIChkcnYgb3Igcm9vdCk6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZgorICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJzZWRfcGFydHMo
ZHJ2LCByb290LCBwYXJ0c1s6LTFdKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmVudHMo
c2VsZik6CisgICAgICAgICIiIkEgc2VxdWVuY2Ugb2YgdGhpcyBwYXRoJ3MgbG9naWNhbCBwYXJl
bnRzLiIiIgorICAgICAgICByZXR1cm4gX1BhdGhQYXJlbnRzKHNlbGYpCisKKyAgICBkZWYgaXNf
YWJzb2x1dGUoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUg
KGhhcyBib3RoIGEgcm9vdCBhbmQsIGlmIGFwcGxpY2FibGUsCisgICAgICAgIGEgZHJpdmUpLiIi
IgorICAgICAgICBpZiBub3Qgc2VsZi5fcm9vdDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICByZXR1cm4gbm90IHNlbGYuX2ZsYXZvdXIuaGFzX2RydiBvciBib29sKHNlbGYuX2Ry
dikKKworICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUg
aWYgdGhlIHBhdGggY29udGFpbnMgb25lIG9mIHRoZSBzcGVjaWFsIG5hbWVzIHJlc2VydmVkCisg
ICAgICAgIGJ5IHRoZSBzeXN0ZW0sIGlmIGFueS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Zs
YXZvdXIuaXNfcmVzZXJ2ZWQoc2VsZi5fcGFydHMpCisKKyAgICBkZWYgbWF0Y2goc2VsZiwgcGF0
aF9wYXR0ZXJuKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiBUcnVlIGlmIHRoaXMgcGF0
aCBtYXRjaGVzIHRoZSBnaXZlbiBwYXR0ZXJuLgorICAgICAgICAiIiIKKyAgICAgICAgY2YgPSBz
ZWxmLl9mbGF2b3VyLmNhc2Vmb2xkCisgICAgICAgIHBhdGhfcGF0dGVybiA9IGNmKHBhdGhfcGF0
dGVybikKKyAgICAgICAgZHJ2LCByb290LCBwYXRfcGFydHMgPSBzZWxmLl9mbGF2b3VyLnBhcnNl
X3BhcnRzKChwYXRoX3BhdHRlcm4sKSkKKyAgICAgICAgaWYgbm90IHBhdF9wYXJ0czoKKyAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVtcHR5IHBhdHRlcm4iKQorICAgICAgICBpZiBkcnYg
YW5kIGRydiAhPSBjZihzZWxmLl9kcnYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIGlmIHJvb3QgYW5kIHJvb3QgIT0gY2Yoc2VsZi5fcm9vdCk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgcGFydHMgPSBzZWxmLl9jcGFydHMKKyAgICAgICAgaWYgZHJ2IG9y
IHJvb3Q6CisgICAgICAgICAgICBpZiBsZW4ocGF0X3BhcnRzKSAhPSBsZW4ocGFydHMpOgorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcGF0X3BhcnRzID0gcGF0X3Bh
cnRzWzE6XQorICAgICAgICBlbGlmIGxlbihwYXRfcGFydHMpID4gbGVuKHBhcnRzKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBmb3IgcGFydCwgcGF0IGluIHppcChyZXZlcnNl
ZChwYXJ0cyksIHJldmVyc2VkKHBhdF9wYXJ0cykpOgorICAgICAgICAgICAgaWYgbm90IGZubWF0
Y2guZm5tYXRjaGNhc2UocGFydCwgcGF0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgcmV0dXJuIFRydWUKKworCisjIENhbid0IHN1YmNsYXNzIG9zLlBhdGhMaWtlIGZy
b20gUHVyZVBhdGggYW5kIGtlZXAgdGhlIGNvbnN0cnVjdG9yCisjIG9wdGltaXphdGlvbnMgaW4g
UHVyZVBhdGguX3BhcnNlX2FyZ3MoKS4KK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDYpOgor
ICAgIG9zLlBhdGhMaWtlLnJlZ2lzdGVyKFB1cmVQYXRoKQorCisKK2NsYXNzIFB1cmVQb3NpeFBh
dGgoUHVyZVBhdGgpOgorICAgIF9mbGF2b3VyID0gX3Bvc2l4X2ZsYXZvdXIKKyAgICBfX3Nsb3Rz
X18gPSAoKQorCisKK2NsYXNzIFB1cmVXaW5kb3dzUGF0aChQdXJlUGF0aCk6CisgICAgIiIiUHVy
ZVBhdGggc3ViY2xhc3MgZm9yIFdpbmRvd3Mgc3lzdGVtcy4KKworICAgIE9uIGEgV2luZG93cyBz
eXN0ZW0sIGluc3RhbnRpYXRpbmcgYSBQdXJlUGF0aCBzaG91bGQgcmV0dXJuIHRoaXMgb2JqZWN0
LgorICAgIEhvd2V2ZXIsIHlvdSBjYW4gYWxzbyBpbnN0YW50aWF0ZSBpdCBkaXJlY3RseSBvbiBh
bnkgc3lzdGVtLgorICAgICIiIgorICAgIF9mbGF2b3VyID0gX3dpbmRvd3NfZmxhdm91cgorICAg
IF9fc2xvdHNfXyA9ICgpCisKKworIyBGaWxlc3lzdGVtLWFjY2Vzc2luZyBjbGFzc2VzCisKKwor
Y2xhc3MgUGF0aChQdXJlUGF0aCk6CisgICAgIiIiUHVyZVBhdGggc3ViY2xhc3MgdGhhdCBjYW4g
bWFrZSBzeXN0ZW0gY2FsbHMuCisKKyAgICBQYXRoIHJlcHJlc2VudHMgYSBmaWxlc3lzdGVtIHBh
dGggYnV0IHVubGlrZSBQdXJlUGF0aCwgYWxzbyBvZmZlcnMKKyAgICBtZXRob2RzIHRvIGRvIHN5
c3RlbSBjYWxscyBvbiBwYXRoIG9iamVjdHMuIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSwKKyAg
ICBpbnN0YW50aWF0aW5nIGEgUGF0aCB3aWxsIHJldHVybiBlaXRoZXIgYSBQb3NpeFBhdGggb3Ig
YSBXaW5kb3dzUGF0aAorICAgIG9iamVjdC4gWW91IGNhbiBhbHNvIGluc3RhbnRpYXRlIGEgUG9z
aXhQYXRoIG9yIFdpbmRvd3NQYXRoIGRpcmVjdGx5LAorICAgIGJ1dCBjYW5ub3QgaW5zdGFudGlh
dGUgYSBXaW5kb3dzUGF0aCBvbiBhIFBPU0lYIHN5c3RlbSBvciB2aWNlIHZlcnNhLgorICAgICIi
IgorICAgIF9fc2xvdHNfXyA9ICgKKyAgICAgICAgJ19hY2Nlc3NvcicsCisgICAgICAgICdfY2xv
c2VkJywKKyAgICApCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3YXJncyk6Cisg
ICAgICAgIGlmIGNscyBpcyBQYXRoOgorICAgICAgICAgICAgY2xzID0gV2luZG93c1BhdGggaWYg
b3MubmFtZSA9PSAnbnQnIGVsc2UgUG9zaXhQYXRoCisgICAgICAgIHNlbGYgPSBjbHMuX2Zyb21f
cGFydHMoYXJncywgaW5pdD1GYWxzZSkKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZsYXZvdXIuaXNf
c3VwcG9ydGVkOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY2Fubm90
IGluc3RhbnRpYXRlICVyIG9uIHlvdXIgc3lzdGVtIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlIChjbHMuX19uYW1lX18sKSkKKyAgICAgICAgc2VsZi5faW5pdCgpCisg
ICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2luaXQoc2VsZiwKKyAgICAgICAgICAgICAg
IyBQcml2YXRlIG5vbi1jb25zdHJ1Y3RvciBhcmd1bWVudHMKKyAgICAgICAgICAgICAgdGVtcGxh
dGU9Tm9uZSwKKyAgICAgICAgICAgICAgKToKKyAgICAgICAgc2VsZi5fY2xvc2VkID0gRmFsc2UK
KyAgICAgICAgaWYgdGVtcGxhdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9hY2Nl
c3NvciA9IHRlbXBsYXRlLl9hY2Nlc3NvcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vs
Zi5fYWNjZXNzb3IgPSBfbm9ybWFsX2FjY2Vzc29yCisKKyAgICBkZWYgX21ha2VfY2hpbGRfcmVs
cGF0aChzZWxmLCBwYXJ0KToKKyAgICAgICAgIyBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB1c2Vk
IGZvciBkaXIgd2Fsa2luZy4gIGBwYXJ0YCBtdXN0IGJlCisgICAgICAgICMgYSBzaW5nbGUgcGFy
dCByZWxhdGl2ZSB0byB0aGlzIHBhdGguCisgICAgICAgIHBhcnRzID0gc2VsZi5fcGFydHMgKyBb
cGFydF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKHNlbGYuX2Rydiwg
c2VsZi5fcm9vdCwgcGFydHMpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBp
ZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQoKQorICAgICAg
ICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKKyAgICAg
ICAgc2VsZi5fY2xvc2VkID0gVHJ1ZQorCisgICAgZGVmIF9yYWlzZV9jbG9zZWQoc2VsZik6Cisg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIHBhdGgiKQor
CisgICAgZGVmIF9vcGVuZXIoc2VsZiwgbmFtZSwgZmxhZ3MsIG1vZGU9MG82NjYpOgorICAgICAg
ICAjIEEgc3R1YiBmb3IgdGhlIG9wZW5lciBhcmd1bWVudCB0byBidWlsdC1pbiBvcGVuKCkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2FjY2Vzc29yLm9wZW4oc2VsZiwgZmxhZ3MsIG1vZGUpCisKKyAg
ICBkZWYgX3Jhd19vcGVuKHNlbGYsIGZsYWdzLCBtb2RlPTBvNzc3KToKKyAgICAgICAgIiIiCisg
ICAgICAgIE9wZW4gdGhlIGZpbGUgcG9pbnRlZCBieSB0aGlzIHBhdGggYW5kIHJldHVybiBhIGZp
bGUgZGVzY3JpcHRvciwKKyAgICAgICAgYXMgb3Mub3BlbigpIGRvZXMuCisgICAgICAgICIiIgor
ICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQo
KQorICAgICAgICByZXR1cm4gc2VsZi5fYWNjZXNzb3Iub3BlbihzZWxmLCBmbGFncywgbW9kZSkK
KworICAgICMgUHVibGljIEFQSQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGN3ZChjbHMp
OgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgcGF0aCBwb2ludGluZyB0byB0aGUgY3VycmVudCB3
b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MuZ2V0Y3dkKCkpLgor
ICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNscyhvcy5nZXRjd2QoKSkKKworICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBob21lKGNscyk6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBwYXRo
IHBvaW50aW5nIHRvIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgKGFzCisgICAgICAgIHJldHVy
bmVkIGJ5IG9zLnBhdGguZXhwYW5kdXNlcignficpKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl
dHVybiBjbHMoY2xzKCkuX2ZsYXZvdXIuZ2V0aG9tZWRpcihOb25lKSkKKworICAgIGRlZiBzYW1l
ZmlsZShzZWxmLCBvdGhlcl9wYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3RoZXJf
cGF0aCBpcyB0aGUgc2FtZSBvciBub3QgYXMgdGhpcyBmaWxlCisgICAgICAgIChhcyByZXR1cm5l
ZCBieSBvcy5wYXRoLnNhbWVmaWxlKCkpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgaGFzYXR0
cihvcy5wYXRoLCAic2FtZXN0YXQiKToKKyAgICAgICAgICAgIHN0ID0gc2VsZi5zdGF0KCkKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvdGhlcl9zdCA9IG90aGVyX3BhdGguc3Rh
dCgpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAg
b3RoZXJfc3QgPSBvcy5zdGF0KG90aGVyX3BhdGgpCisgICAgICAgICAgICByZXR1cm4gb3MucGF0
aC5zYW1lc3RhdChzdCwgb3RoZXJfc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxl
bmFtZTEgPSBzaXgudGV4dF90eXBlKHNlbGYpCisgICAgICAgICAgICBmaWxlbmFtZTIgPSBzaXgu
dGV4dF90eXBlKG90aGVyX3BhdGgpCisgICAgICAgICAgICBzdDEgPSBfd2luMzJfZ2V0X3VuaXF1
ZV9wYXRoX2lkKGZpbGVuYW1lMSkKKyAgICAgICAgICAgIHN0MiA9IF93aW4zMl9nZXRfdW5pcXVl
X3BhdGhfaWQoZmlsZW5hbWUyKQorICAgICAgICAgICAgcmV0dXJuIHN0MSA9PSBzdDIKKworICAg
IGRlZiBpdGVyZGlyKHNlbGYpOgorICAgICAgICAiIiJJdGVyYXRlIG92ZXIgdGhlIGZpbGVzIGlu
IHRoaXMgZGlyZWN0b3J5LiAgRG9lcyBub3QgeWllbGQgYW55CisgICAgICAgIHJlc3VsdCBmb3Ig
dGhlIHNwZWNpYWwgcGF0aHMgJy4nIGFuZCAnLi4nLgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
c2VsZi5fY2xvc2VkOgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAg
Zm9yIG5hbWUgaW4gc2VsZi5fYWNjZXNzb3IubGlzdGRpcihzZWxmKToKKyAgICAgICAgICAgIGlm
IG5hbWUgaW4gKCcuJywgJy4uJyk6CisgICAgICAgICAgICAgICAgIyBZaWVsZGluZyBhIHBhdGgg
b2JqZWN0IGZvciB0aGVzZSBtYWtlcyBsaXR0bGUgc2Vuc2UKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgeWllbGQgc2VsZi5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCisg
ICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2Vf
Y2xvc2VkKCkKKworICAgIGRlZiBnbG9iKHNlbGYsIHBhdHRlcm4pOgorICAgICAgICAiIiJJdGVy
YXRlIG92ZXIgdGhpcyBzdWJ0cmVlIGFuZCB5aWVsZCBhbGwgZXhpc3RpbmcgZmlsZXMgKG9mIGFu
eQorICAgICAgICBraW5kLCBpbmNsdWRpbmcgZGlyZWN0b3JpZXMpIG1hdGNoaW5nIHRoZSBnaXZl
biByZWxhdGl2ZSBwYXR0ZXJuLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHBhdHRlcm46
CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmFjY2VwdGFibGUgcGF0dGVybjogezAh
cn0iLmZvcm1hdChwYXR0ZXJuKSkKKyAgICAgICAgcGF0dGVybiA9IHNlbGYuX2ZsYXZvdXIuY2Fz
ZWZvbGQocGF0dGVybikKKyAgICAgICAgZHJ2LCByb290LCBwYXR0ZXJuX3BhcnRzID0gc2VsZi5f
Zmxhdm91ci5wYXJzZV9wYXJ0cygocGF0dGVybiwpKQorICAgICAgICBpZiBkcnYgb3Igcm9vdDoK
KyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIk5vbi1yZWxhdGl2ZSBwYXR0
ZXJucyBhcmUgdW5zdXBwb3J0ZWQiKQorICAgICAgICBzZWxlY3RvciA9IF9tYWtlX3NlbGVjdG9y
KHR1cGxlKHBhdHRlcm5fcGFydHMpKQorICAgICAgICBmb3IgcCBpbiBzZWxlY3Rvci5zZWxlY3Rf
ZnJvbShzZWxmKToKKyAgICAgICAgICAgIHlpZWxkIHAKKworICAgIGRlZiByZ2xvYihzZWxmLCBw
YXR0ZXJuKToKKyAgICAgICAgIiIiUmVjdXJzaXZlbHkgeWllbGQgYWxsIGV4aXN0aW5nIGZpbGVz
IChvZiBhbnkga2luZCwgaW5jbHVkaW5nCisgICAgICAgIGRpcmVjdG9yaWVzKSBtYXRjaGluZyB0
aGUgZ2l2ZW4gcmVsYXRpdmUgcGF0dGVybiwgYW55d2hlcmUgaW4KKyAgICAgICAgdGhpcyBzdWJ0
cmVlLgorICAgICAgICAiIiIKKyAgICAgICAgcGF0dGVybiA9IHNlbGYuX2ZsYXZvdXIuY2FzZWZv
bGQocGF0dGVybikKKyAgICAgICAgZHJ2LCByb290LCBwYXR0ZXJuX3BhcnRzID0gc2VsZi5fZmxh
dm91ci5wYXJzZV9wYXJ0cygocGF0dGVybiwpKQorICAgICAgICBpZiBkcnYgb3Igcm9vdDoKKyAg
ICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIk5vbi1yZWxhdGl2ZSBwYXR0ZXJu
cyBhcmUgdW5zdXBwb3J0ZWQiKQorICAgICAgICBzZWxlY3RvciA9IF9tYWtlX3NlbGVjdG9yKCgi
KioiLCkgKyB0dXBsZShwYXR0ZXJuX3BhcnRzKSkKKyAgICAgICAgZm9yIHAgaW4gc2VsZWN0b3Iu
c2VsZWN0X2Zyb20oc2VsZik6CisgICAgICAgICAgICB5aWVsZCBwCisKKyAgICBkZWYgYWJzb2x1
dGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhbiBhYnNvbHV0ZSB2ZXJzaW9uIG9mIHRoaXMg
cGF0aC4gIFRoaXMgZnVuY3Rpb24gd29ya3MKKyAgICAgICAgZXZlbiBpZiB0aGUgcGF0aCBkb2Vz
bid0IHBvaW50IHRvIGFueXRoaW5nLgorCisgICAgICAgIE5vIG5vcm1hbGl6YXRpb24gaXMgZG9u
ZSwgaS5lLiBhbGwgJy4nIGFuZCAnLi4nIHdpbGwgYmUga2VwdCBhbG9uZy4KKyAgICAgICAgVXNl
IHJlc29sdmUoKSB0byBnZXQgdGhlIGNhbm9uaWNhbCBwYXRoIHRvIGEgZmlsZS4KKyAgICAgICAg
IiIiCisgICAgICAgICMgWFhYIHVudGVzdGVkIHlldCEKKyAgICAgICAgaWYgc2VsZi5fY2xvc2Vk
OgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAgaWYgc2VsZi5pc19h
YnNvbHV0ZSgpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgIyBGSVhNRSB0aGlz
IG11c3QgZGVmZXIgdG8gdGhlIHNwZWNpZmljIGZsYXZvdXIgKGFuZCwgdW5kZXIgV2luZG93cywK
KyAgICAgICAgIyB1c2UgbnQuX2dldGZ1bGxwYXRobmFtZSgpKQorICAgICAgICBvYmogPSBzZWxm
Ll9mcm9tX3BhcnRzKFtvcy5nZXRjd2QoKV0gKyBzZWxmLl9wYXJ0cywgaW5pdD1GYWxzZSkKKyAg
ICAgICAgb2JqLl9pbml0KHRlbXBsYXRlPXNlbGYpCisgICAgICAgIHJldHVybiBvYmoKKworICAg
IGRlZiByZXNvbHZlKHNlbGYsIHN0cmljdD1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBN
YWtlIHRoZSBwYXRoIGFic29sdXRlLCByZXNvbHZpbmcgYWxsIHN5bWxpbmtzIG9uIHRoZSB3YXkg
YW5kIGFsc28KKyAgICAgICAgbm9ybWFsaXppbmcgaXQgKGZvciBleGFtcGxlIHR1cm5pbmcgc2xh
c2hlcyBpbnRvIGJhY2tzbGFzaGVzIHVuZGVyCisgICAgICAgIFdpbmRvd3MpLgorICAgICAgICAi
IiIKKyAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xv
c2VkKCkKKyAgICAgICAgcyA9IHNlbGYuX2ZsYXZvdXIucmVzb2x2ZShzZWxmLCBzdHJpY3Q9c3Ry
aWN0KQorICAgICAgICBpZiBzIGlzIE5vbmU6CisgICAgICAgICAgICAjIE5vIHN5bWxpbmsgcmVz
b2x1dGlvbiA9PiBmb3IgY29uc2lzdGVuY3ksIHJhaXNlIGFuIGVycm9yIGlmCisgICAgICAgICAg
ICAjIHRoZSBwYXRoIGlzIGZvcmJpZGRlbgorICAgICAgICAgICAgIyBidXQgbm90IHJhaXNlIGVy
cm9yIGlmIGZpbGUgZG9lcyBub3QgZXhpc3QgKHNlZSBpc3N1ZSAjNTQpLgorCisgICAgICAgICAg
ICBkZWYgX3RyeV9mdW5jKCk6CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0KCkKKworICAgICAg
ICAgICAgZGVmIF9leGNfZnVuYyhleGMpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICAgICAgX3RyeV9leGNlcHRfZmlsZW5vdGZvdW5kZXJyb3IoX3RyeV9mdW5jLCBfZXhjX2Z1bmMp
CisgICAgICAgICAgICBzID0gc3RyKHNlbGYuYWJzb2x1dGUoKSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICMgZW5zdXJlIHMgaXMgYSBzdHJpbmcgKG5vcm1wYXRoIHJlcXVpcmVzIHRoaXMg
b24gb2xkZXIgcHl0aG9uKQorICAgICAgICAgICAgcyA9IHN0cihzKQorICAgICAgICAjIE5vdyB3
ZSBoYXZlIG5vIHN5bWxpbmtzIGluIHRoZSBwYXRoLCBpdCdzIHNhZmUgdG8gbm9ybWFsaXplIGl0
LgorICAgICAgICBub3JtZWQgPSBzZWxmLl9mbGF2b3VyLnBhdGhtb2Qubm9ybXBhdGgocykKKyAg
ICAgICAgb2JqID0gc2VsZi5fZnJvbV9wYXJ0cygobm9ybWVkLCksIGluaXQ9RmFsc2UpCisgICAg
ICAgIG9iai5faW5pdCh0ZW1wbGF0ZT1zZWxmKQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBk
ZWYgc3RhdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBzdGF0KCkgc3lzdGVtIGNhbGwgb24gdGhpcyBwYXRoLCBsaWtlCisgICAgICAgIG9zLnN0
YXQoKSBkb2VzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FjY2Vzc29yLnN0
YXQoc2VsZikKKworICAgIGRlZiBvd25lcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl
dHVybiB0aGUgbG9naW4gbmFtZSBvZiB0aGUgZmlsZSBvd25lci4KKyAgICAgICAgIiIiCisgICAg
ICAgIGltcG9ydCBwd2QKKyAgICAgICAgcmV0dXJuIHB3ZC5nZXRwd3VpZChzZWxmLnN0YXQoKS5z
dF91aWQpLnB3X25hbWUKKworICAgIGRlZiBncm91cChzZWxmKToKKyAgICAgICAgIiIiCisgICAg
ICAgIFJldHVybiB0aGUgZ3JvdXAgbmFtZSBvZiB0aGUgZmlsZSBnaWQuCisgICAgICAgICIiIgor
ICAgICAgICBpbXBvcnQgZ3JwCisgICAgICAgIHJldHVybiBncnAuZ2V0Z3JnaWQoc2VsZi5zdGF0
KCkuc3RfZ2lkKS5ncl9uYW1lCisKKyAgICBkZWYgb3BlbihzZWxmLCBtb2RlPSdyJywgYnVmZmVy
aW5nPS0xLCBlbmNvZGluZz1Ob25lLAorICAgICAgICAgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5l
PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbiB0aGUgZmlsZSBwb2ludGVkIGJ5IHRo
aXMgcGF0aCBhbmQgcmV0dXJuIGEgZmlsZSBvYmplY3QsIGFzCisgICAgICAgIHRoZSBidWlsdC1p
biBvcGVuKCkgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Ns
b3NlZDoKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAgcmV0dXJuIGlvLm9wZW4oCisgICAg
ICAgICAgICAgICAgc3RyKHNlbGYpLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMs
IG5ld2xpbmUsCisgICAgICAgICAgICAgICAgb3BlbmVyPXNlbGYuX29wZW5lcikKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJldHVybiBpby5vcGVuKHN0cihzZWxmKSwgbW9kZSwgYnVmZmVy
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIGVycm9ycywgbmV3bGlu
ZSkKKworICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgT3Bl
biB0aGUgZmlsZSBpbiBieXRlcyBtb2RlLCByZWFkIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCisg
ICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSdyYicpIGFzIGY6CisgICAg
ICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAgIGRlZiByZWFkX3RleHQoc2VsZiwgZW5jb2Rp
bmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbiB0aGUgZmls
ZSBpbiB0ZXh0IG1vZGUsIHJlYWQgaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIi
CisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3InLCBlbmNvZGluZz1lbmNvZGluZywgZXJy
b3JzPWVycm9ycykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisgICAgZGVm
IHdyaXRlX2J5dGVzKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbiB0aGUg
ZmlsZSBpbiBieXRlcyBtb2RlLCB3cml0ZSB0byBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc2l4LmJpbmFyeV90eXBl
KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAnZGF0YSBt
dXN0IGJlICVzLCBub3QgJXMnICUKKyAgICAgICAgICAgICAgICAoc2l4LmJpbmFyeV90eXBlLl9f
bmFtZV9fLCBkYXRhLl9fY2xhc3NfXy5fX25hbWVfXykpCisgICAgICAgIHdpdGggc2VsZi5vcGVu
KG1vZGU9J3diJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLndyaXRlKGRhdGEpCisKKyAg
ICBkZWYgd3JpdGVfdGV4dChzZWxmLCBkYXRhLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6
CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZSwgd3JpdGUg
dG8gaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKGRhdGEsIHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKAorICAgICAgICAgICAgICAgICdkYXRhIG11c3QgYmUgJXMsIG5vdCAlcycgJQorICAgICAg
ICAgICAgICAgIChzaXgudGV4dF90eXBlLl9fbmFtZV9fLCBkYXRhLl9fY2xhc3NfXy5fX25hbWVf
XykpCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3cnLCBlbmNvZGluZz1lbmNvZGluZywg
ZXJyb3JzPWVycm9ycykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLndyaXRlKGRhdGEpCisK
KyAgICBkZWYgdG91Y2goc2VsZiwgbW9kZT0wbzY2NiwgZXhpc3Rfb2s9VHJ1ZSk6CisgICAgICAg
ICIiIgorICAgICAgICBDcmVhdGUgdGhpcyBmaWxlIHdpdGggdGhlIGdpdmVuIGFjY2VzcyBtb2Rl
LCBpZiBpdCBkb2Vzbid0IGV4aXN0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fY2xv
c2VkOgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAgaWYgZXhpc3Rf
b2s6CisgICAgICAgICAgICAjIEZpcnN0IHRyeSB0byBidW1wIG1vZGlmaWNhdGlvbiB0aW1lCisg
ICAgICAgICAgICAjIEltcGxlbWVudGF0aW9uIG5vdGU6IEdOVSB0b3VjaCB1c2VzIHRoZSBVVElN
RV9OT1cgb3B0aW9uIG9mCisgICAgICAgICAgICAjIHRoZSB1dGltZW5zYXQoKSAvIGZ1dGltZW5z
KCkgZnVuY3Rpb25zLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2Fj
Y2Vzc29yLnV0aW1lKHNlbGYsIE5vbmUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAg
ICAgICAgICAgICAgICAjIEF2b2lkIGV4Y2VwdGlvbiBjaGFpbmluZworICAgICAgICAgICAgICAg
IHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IGZsYWdzID0gb3MuT19DUkVBVCB8IG9zLk9fV1JPTkxZCisgICAgICAgIGlmIG5vdCBleGlzdF9v
azoKKyAgICAgICAgICAgIGZsYWdzIHw9IG9zLk9fRVhDTAorICAgICAgICBmZCA9IHNlbGYuX3Jh
d19vcGVuKGZsYWdzLCBtb2RlKQorICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIGRlZiBta2Rp
cihzZWxmLCBtb2RlPTBvNzc3LCBwYXJlbnRzPUZhbHNlLCBleGlzdF9vaz1GYWxzZSk6CisgICAg
ICAgICIiIgorICAgICAgICBDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGF0IHRoaXMgZ2l2ZW4gcGF0
aC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNl
bGYuX3JhaXNlX2Nsb3NlZCgpCisKKyAgICAgICAgZGVmIF90cnlfZnVuYygpOgorICAgICAgICAg
ICAgc2VsZi5fYWNjZXNzb3IubWtkaXIoc2VsZiwgbW9kZSkKKworICAgICAgICBkZWYgX2V4Y19m
dW5jKGV4Yyk6CisgICAgICAgICAgICBpZiBub3QgcGFyZW50cyBvciBzZWxmLnBhcmVudCA9PSBz
ZWxmOgorICAgICAgICAgICAgICAgIHJhaXNlIGV4YworICAgICAgICAgICAgc2VsZi5wYXJlbnQu
bWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICAgICAgc2VsZi5ta2Rp
cihtb2RlLCBwYXJlbnRzPUZhbHNlLCBleGlzdF9vaz1leGlzdF9vaykKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBfdHJ5X2V4Y2VwdF9maWxlbm90Zm91bmRlcnJvcihfdHJ5X2Z1bmMsIF9l
eGNfZnVuYykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIENhbm5vdCBy
ZWx5IG9uIGNoZWNraW5nIGZvciBFRVhJU1QsIHNpbmNlIHRoZSBvcGVyYXRpbmcgc3lzdGVtCisg
ICAgICAgICAgICAjIGNvdWxkIGdpdmUgcHJpb3JpdHkgdG8gb3RoZXIgZXJyb3JzIGxpa2UgRUFD
Q0VTIG9yIEVST0ZTCisgICAgICAgICAgICBpZiBub3QgZXhpc3Rfb2sgb3Igbm90IHNlbGYuaXNf
ZGlyKCk6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiBjaG1vZChzZWxmLCBtb2Rl
KToKKyAgICAgICAgIiIiCisgICAgICAgIENoYW5nZSB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIHBh
dGgsIGxpa2Ugb3MuY2htb2QoKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3Nl
ZDoKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2FjY2Vz
c29yLmNobW9kKHNlbGYsIG1vZGUpCisKKyAgICBkZWYgbGNobW9kKHNlbGYsIG1vZGUpOgorICAg
ICAgICAiIiIKKyAgICAgICAgTGlrZSBjaG1vZCgpLCBleGNlcHQgaWYgdGhlIHBhdGggcG9pbnRz
IHRvIGEgc3ltbGluaywgdGhlIHN5bWxpbmsncworICAgICAgICBwZXJtaXNzaW9ucyBhcmUgY2hh
bmdlZCwgcmF0aGVyIHRoYW4gaXRzIHRhcmdldCdzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
c2VsZi5fY2xvc2VkOgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAg
c2VsZi5fYWNjZXNzb3IubGNobW9kKHNlbGYsIG1vZGUpCisKKyAgICBkZWYgdW5saW5rKHNlbGYp
OgorICAgICAgICAiIiIKKyAgICAgICAgUmVtb3ZlIHRoaXMgZmlsZSBvciBsaW5rLgorICAgICAg
ICBJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSwgdXNlIHJtZGlyKCkgaW5zdGVhZC4KKyAgICAg
ICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNlbGYuX3JhaXNl
X2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2FjY2Vzc29yLnVubGluayhzZWxmKQorCisgICAgZGVm
IHJtZGlyKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVtb3ZlIHRoaXMgZGlyZWN0b3J5
LiAgVGhlIGRpcmVjdG9yeSBtdXN0IGJlIGVtcHR5LgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
c2VsZi5fY2xvc2VkOgorICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAg
c2VsZi5fYWNjZXNzb3Iucm1kaXIoc2VsZikKKworICAgIGRlZiBsc3RhdChzZWxmKToKKyAgICAg
ICAgIiIiCisgICAgICAgIExpa2Ugc3RhdCgpLCBleGNlcHQgaWYgdGhlIHBhdGggcG9pbnRzIHRv
IGEgc3ltbGluaywgdGhlIHN5bWxpbmsncworICAgICAgICBzdGF0dXMgaW5mb3JtYXRpb24gaXMg
cmV0dXJuZWQsIHJhdGhlciB0aGFuIGl0cyB0YXJnZXQncy4KKyAgICAgICAgIiIiCisgICAgICAg
IGlmIHNlbGYuX2Nsb3NlZDoKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAg
ICAgIHJldHVybiBzZWxmLl9hY2Nlc3Nvci5sc3RhdChzZWxmKQorCisgICAgZGVmIHJlbmFtZShz
ZWxmLCB0YXJnZXQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVuYW1lIHRoaXMgcGF0aCB0byB0
aGUgZ2l2ZW4gcGF0aC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKKyAg
ICAgICAgICAgIHNlbGYuX3JhaXNlX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2FjY2Vzc29yLnJl
bmFtZShzZWxmLCB0YXJnZXQpCisKKyAgICBkZWYgcmVwbGFjZShzZWxmLCB0YXJnZXQpOgorICAg
ICAgICAiIiIKKyAgICAgICAgUmVuYW1lIHRoaXMgcGF0aCB0byB0aGUgZ2l2ZW4gcGF0aCwgY2xv
YmJlcmluZyB0aGUgZXhpc3RpbmcKKyAgICAgICAgZGVzdGluYXRpb24gaWYgaXQgZXhpc3RzLgor
ICAgICAgICAiIiIKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICAg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInJlcGxhY2UoKSBpcyBvbmx5IGF2YWls
YWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIFB5dGhv
biAzLjMgYW5kIGxhdGVyIikKKyAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgorICAgICAgICAgICAg
c2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fYWNjZXNzb3IucmVwbGFjZShzZWxm
LCB0YXJnZXQpCisKKyAgICBkZWYgc3ltbGlua190byhzZWxmLCB0YXJnZXQsIHRhcmdldF9pc19k
aXJlY3Rvcnk9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSB0aGlzIHBhdGggYSBz
eW1saW5rIHBvaW50aW5nIHRvIHRoZSBnaXZlbiBwYXRoLgorICAgICAgICBOb3RlIHRoZSBvcmRl
ciBvZiBhcmd1bWVudHMgKHNlbGYsIHRhcmdldCkgaXMgdGhlIHJldmVyc2Ugb2YKKyAgICAgICAg
b3Muc3ltbGluaydzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgorICAg
ICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fYWNjZXNzb3Iuc3lt
bGluayh0YXJnZXQsIHNlbGYsIHRhcmdldF9pc19kaXJlY3RvcnkpCisKKyAgICAjIENvbnZlbmll
bmNlIGZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIHN0YXQgcmVzdWx0cworCisgICAgZGVmIGV4
aXN0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGV4aXN0
cy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc3RhdCgpCisg
ICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9l
cnJvcihlKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxl
IHBhdGgKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisg
ICAgZGVmIGlzX2RpcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdoZXRoZXIgdGhpcyBw
YXRoIGlzIGEgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcmV0dXJuIFNfSVNESVIoc2VsZi5zdGF0KCkuc3RfbW9kZSkKKyAgICAgICAgZXhjZXB0IE9T
RXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIG5vdCBfaWdub3JlX2Vycm9yKGUpOgorICAgICAg
ICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIFBhdGggZG9lc24ndCBleGlzdCBvciBpcyBh
IGJyb2tlbiBzeW1saW5rCisgICAgICAgICAgICAjIChzZWUgaHR0cHM6Ly9iaXRidWNrZXQub3Jn
L3BpdHJvdS9wYXRobGliL2lzc3VlLzEyLykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRo
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc19maWxlKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgV2hldGhlciB0aGlzIHBhdGggaXMgYSByZWd1bGFyIGZpbGUgKGFs
c28gVHJ1ZSBmb3Igc3ltbGlua3MgcG9pbnRpbmcKKyAgICAgICAgdG8gcmVndWxhciBmaWxlcyku
CisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gU19JU1JFRyhz
ZWxmLnN0YXQoKS5zdF9tb2RlKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAg
ICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAg
ICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0IG9yIGlzIGEgYnJva2VuIHN5bWxpbmsKKyAg
ICAgICAgICAgICMgKHNlZSBodHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91L3BhdGhsaWIvaXNz
dWUvMTIvKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yOgorICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxlIHBhdGgKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGlzX21vdW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg
Q2hlY2sgaWYgdGhpcyBwYXRoIGlzIGEgUE9TSVggbW91bnQgcG9pbnQKKyAgICAgICAgIiIiCisg
ICAgICAgICMgTmVlZCB0byBleGlzdCBhbmQgYmUgYSBkaXIKKyAgICAgICAgaWYgbm90IHNlbGYu
ZXhpc3RzKCkgb3Igbm90IHNlbGYuaXNfZGlyKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICAgICBwYXJlbnQgPSBQYXRoKHNlbGYucGFyZW50KQorICAgICAgICB0cnk6CisgICAg
ICAgICAgICBwYXJlbnRfZGV2ID0gcGFyZW50LnN0YXQoKS5zdF9kZXYKKyAgICAgICAgZXhjZXB0
IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBkZXYgPSBzZWxm
LnN0YXQoKS5zdF9kZXYKKyAgICAgICAgaWYgZGV2ICE9IHBhcmVudF9kZXY6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICBpbm8gPSBzZWxmLnN0YXQoKS5zdF9pbm8KKyAgICAgICAg
cGFyZW50X2lubyA9IHBhcmVudC5zdGF0KCkuc3RfaW5vCisgICAgICAgIHJldHVybiBpbm8gPT0g
cGFyZW50X2lubworCisgICAgZGVmIGlzX3N5bWxpbmsoc2VsZik6CisgICAgICAgICIiIgorICAg
ICAgICBXaGV0aGVyIHRoaXMgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmsuCisgICAgICAgICIiIgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gU19JU0xOSyhzZWxmLmxzdGF0KCkuc3Rf
bW9kZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIG5vdCBf
aWdub3JlX2Vycm9yKGUpOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIFBh
dGggZG9lc24ndCBleGlzdAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxlIHBhdGgKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2Jsb2NrX2RldmljZShzZWxmKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgYmxvY2sgZGV2aWNlLgorICAg
ICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFNfSVNCTEsoc2VsZi5z
dGF0KCkuc3RfbW9kZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAg
IGlmIG5vdCBfaWdub3JlX2Vycm9yKGUpOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAg
ICAgICAjIFBhdGggZG9lc24ndCBleGlzdCBvciBpcyBhIGJyb2tlbiBzeW1saW5rCisgICAgICAg
ICAgICAjIChzZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3VlLzEy
LykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoK
KyAgICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRoCisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBpc19jaGFyX2RldmljZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgY2hhcmFjdGVyIGRldmljZS4KKyAgICAgICAgIiIiCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBTX0lTQ0hSKHNlbGYuc3RhdCgpLnN0X21v
ZGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgX2ln
bm9yZV9lcnJvcihlKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgIyBQYXRo
IGRvZXNuJ3QgZXhpc3Qgb3IgaXMgYSBicm9rZW4gc3ltbGluaworICAgICAgICAgICAgIyAoc2Vl
IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9pc3N1ZS8xMi8pCisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAg
ICAjIE5vbi1lbmNvZGFibGUgcGF0aAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBk
ZWYgaXNfZmlmbyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdoZXRoZXIgdGhpcyBwYXRo
IGlzIGEgRklGTy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVy
biBTX0lTRklGTyhzZWxmLnN0YXQoKS5zdF9tb2RlKQorICAgICAgICBleGNlcHQgT1NFcnJvciBh
cyBlOgorICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CisgICAgICAgICAgICAg
ICAgcmFpc2UKKyAgICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0IG9yIGlzIGEgYnJva2Vu
IHN5bWxpbmsKKyAgICAgICAgICAgICMgKHNlZSBodHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91
L3BhdGhsaWIvaXNzdWUvMTIvKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGV4
Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxlIHBhdGgKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3NvY2tldChzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgc29ja2V0LgorICAgICAgICAiIiIK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFNfSVNTT0NLKHNlbGYuc3RhdCgpLnN0
X21vZGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBub3Qg
X2lnbm9yZV9lcnJvcihlKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgIyBQ
YXRoIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgYSBicm9rZW4gc3ltbGluaworICAgICAgICAgICAgIyAo
c2VlIGh0dHBzOi8vYml0YnVja2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9pc3N1ZS8xMi8pCisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAg
ICAgICAjIE5vbi1lbmNvZGFibGUgcGF0aAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAg
ICBkZWYgZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgIiIiIFJldHVybiBhIG5ldyBwYXRoIHdp
dGggZXhwYW5kZWQgfiBhbmQgfnVzZXIgY29uc3RydWN0cworICAgICAgICAoYXMgcmV0dXJuZWQg
Ynkgb3MucGF0aC5leHBhbmR1c2VyKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgKG5vdCAoc2Vs
Zi5fZHJ2IG9yIHNlbGYuX3Jvb3QpCisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3BhcnRzIGFu
ZCBzZWxmLl9wYXJ0c1swXVs6MV0gPT0gJ34nKToKKyAgICAgICAgICAgIGhvbWVkaXIgPSBzZWxm
Ll9mbGF2b3VyLmdldGhvbWVkaXIoc2VsZi5fcGFydHNbMF1bMTpdKQorICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX2Zyb21fcGFydHMoW2hvbWVkaXJdICsgc2VsZi5fcGFydHNbMTpdKQorCisgICAg
ICAgIHJldHVybiBzZWxmCisKKworY2xhc3MgUG9zaXhQYXRoKFBhdGgsIFB1cmVQb3NpeFBhdGgp
OgorICAgICIiIlBhdGggc3ViY2xhc3MgZm9yIG5vbi1XaW5kb3dzIHN5c3RlbXMuCisKKyAgICBP
biBhIFBPU0lYIHN5c3RlbSwgaW5zdGFudGlhdGluZyBhIFBhdGggc2hvdWxkIHJldHVybiB0aGlz
IG9iamVjdC4KKyAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2NsYXNzIFdpbmRvd3NQ
YXRoKFBhdGgsIFB1cmVXaW5kb3dzUGF0aCk6CisgICAgIiIiUGF0aCBzdWJjbGFzcyBmb3IgV2lu
ZG93cyBzeXN0ZW1zLgorCisgICAgT24gYSBXaW5kb3dzIHN5c3RlbSwgaW5zdGFudGlhdGluZyBh
IFBhdGggc2hvdWxkIHJldHVybiB0aGlzIG9iamVjdC4KKyAgICAiIiIKKyAgICBfX3Nsb3RzX18g
PSAoKQorCisgICAgZGVmIG93bmVyKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCJQYXRoLm93bmVyKCkgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0iKQorCisg
ICAgZGVmIGdyb3VwKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJQ
YXRoLmdyb3VwKCkgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0iKQorCisgICAgZGVmIGlz
X21vdW50KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAgICAg
ICAgICAgIlBhdGguaXNfbW91bnQoKSBpcyB1bnN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSIpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIy
L3JlcXVpcmVtZW50cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li45ZDQzMjEyNzkwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3JlcXVpcmVt
ZW50cy50eHQKQEAgLTAsMCArMSwzIEBACitzaXgKK3NjYW5kaXI7IHB5dGhvbl92ZXJzaW9uIDwg
JzMuNScKK21vY2s7IHB5dGhvbl92ZXJzaW9uIDwgJzMuMycKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0
aGxpYjIvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9zZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMmFmYzg2MWQzMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhdGhsaWIyL3NldHVwLmNmZwpAQCAtMCwwICsxLDggQEAKK1tub3NldGVzdHNdCit3
aXRoLWNvdmVyYWdlPTEKK2NvdmVyLXBhY2thZ2U9cGF0aGxpYjIKK2NvdmVyLWJyYW5jaGVzPTEK
K2NvdmVyLWh0bWw9MQorCitbd2hlZWxdCit1bml2ZXJzYWwgPSAxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BhdGhsaWIyL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9zZXR1cC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNiYjZhYWEwZGZhZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGF0aGxpYjIvc2V0dXAucHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQg
KGMpIDIwMTQtMjAxNyBNYXR0aGlhcyBDLiBNLiBUcm9mZmFlcworIyBDb3B5cmlnaHQgKGMpIDIw
MTItMjAxNCBBbnRvaW5lIFBpdHJvdSBhbmQgY29udHJpYnV0b3JzCisjIERpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIExpY2Vuc2UuCisKK2ltcG9ydCBpbworZnJvbSBzZXR1
cHRvb2xzIGltcG9ydCBzZXR1cCwgZmluZF9wYWNrYWdlcworCisKK2RlZiByZWFkZmlsZShmaWxl
bmFtZSk6CisgICAgd2l0aCBpby5vcGVuKGZpbGVuYW1lLCBlbmNvZGluZz0idXRmLTgiKSBhcyBz
dHJlYW06CisgICAgICAgIHJldHVybiBzdHJlYW0ucmVhZCgpLnNwbGl0KCJcbiIpCisKKworcmVh
ZG1lID0gcmVhZGZpbGUoIlJFQURNRS5yc3QiKVs1Ol0gICMgc2tpcCB0aXRsZSBhbmQgYmFkZ2Vz
Cit2ZXJzaW9uID0gcmVhZGZpbGUoIlZFUlNJT04iKVswXS5zdHJpcCgpCisKK3NldHVwKAorICAg
IG5hbWU9J3BhdGhsaWIyJywKKyAgICB2ZXJzaW9uPXZlcnNpb24sCisgICAgcGFja2FnZXM9Zmlu
ZF9wYWNrYWdlcygpLAorICAgIGxpY2Vuc2U9J01JVCcsCisgICAgZGVzY3JpcHRpb249J09iamVj
dC1vcmllbnRlZCBmaWxlc3lzdGVtIHBhdGhzJywKKyAgICBsb25nX2Rlc2NyaXB0aW9uPSJcbiIu
am9pbihyZWFkbWVbMjpdKSwKKyAgICBhdXRob3I9J01hdHRoaWFzIEMuIE0uIFRyb2ZmYWVzJywK
KyAgICBhdXRob3JfZW1haWw9J21hdHRoaWFzLnRyb2ZmYWVzQGdtYWlsLmNvbScsCisgICAgY2xh
c3NpZmllcnM9WworICAgICAgICAnRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9u
L1N0YWJsZScsCisgICAgICAgICdJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywKKyAg
ICAgICAgJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywKKyAgICAgICAg
J09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLAorICAgICAgICAnUHJvZ3JhbW1p
bmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6
IFB5dGhvbiA6OiAyJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6
OiAzJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLAor
ICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNycsCisgICAgICAg
ICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy40JywKKyAgICAgICAgJ1Byb2dy
YW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjUnLAorICAgICAgICAnUHJvZ3JhbW1pbmcg
TGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNicsCisgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFn
ZSA6OiBQeXRob24gOjogMy43JywKKyAgICAgICAgJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3Bt
ZW50IDo6IExpYnJhcmllcycsCisgICAgICAgICdUb3BpYyA6OiBTeXN0ZW0gOjogRmlsZXN5c3Rl
bXMnLAorICAgICAgICBdLAorICAgIHVybD0naHR0cHM6Ly9naXRodWIuY29tL21jbXRyb2ZmYWVz
L3BhdGhsaWIyJywKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsnc2l4J10sCisgICAgZXh0cmFzX3Jl
cXVpcmU9eworICAgICAgICAnOnB5dGhvbl92ZXJzaW9uPCIzLjUiJzogWydzY2FuZGlyJ10sCisg
ICAgICAgIH0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3Rlc3RzL3Rlc3RfcGF0aGxp
YjIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhdGhsaWIyL3Rlc3RzL3Rlc3RfcGF0aGxpYjIucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NWE1MjgxYTlkNzIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhdGhsaWIyL3Rlc3RzL3Rlc3RfcGF0aGxpYjIucHkKQEAgLTAsMCArMSwyNDA2
IEBACisjIENvcHlyaWdodCAoYykgMjAxNC0yMDE3IE1hdHRoaWFzIEMuIE0uIFRyb2ZmYWVzCisj
IENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFudG9pbmUgUGl0cm91IGFuZCBjb250cmlidXRvcnMK
KyMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgTGljZW5zZS4KKworCitp
bXBvcnQgaW8KK2ltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgcGF0aGxpYjIgYXMgcGF0
aGxpYgoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHNpeAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN0
YXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorCitpZiBzeXMudmVyc2lvbl9pbmZvID49
ICgzLCAzKToKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjIGFzIGNvbGxlY3Rpb25zX2FiYwor
ZWxzZToKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMgYXMgY29sbGVjdGlvbnNfYWJjCisKK2lmIHN5
cy52ZXJzaW9uX2luZm8gPCAoMiwgNyk6CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgdW5pdHRl
c3QyIGFzIHVuaXR0ZXN0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByYWlzZSBJ
bXBvcnRFcnJvcigidW5pdHRlc3QyIGlzIHJlcXVpcmVkIGZvciB0ZXN0cyBvbiBwcmUtMi43IikK
K2Vsc2U6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywg
Myk6CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgbW9jaworICAgIGV4Y2VwdCBJbXBvcnRFcnJv
cjoKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm1vY2sgaXMgcmVxdWlyZWQgZm9yIHRlc3Rz
IG9uIHByZS0zLjMiKQorZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKKyMg
YXNzZXJ0UmFpc2VzUmVnZXggaXMgbWlzc2luZyBwcmlvciB0byBQeXRob24gMy4yCitpZiBzeXMu
dmVyc2lvbl9pbmZvIDwgKDMsIDIpOgorICAgIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFJhaXNl
c1JlZ2V4ID0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0UmFpc2VzUmVnZXhwCisKK3RyeToKKyAg
ICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9t
IHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydCBhcyBzdXBwb3J0CisKK2FuZHJvaWRfbm90X3Jvb3Qg
PSBnZXRhdHRyKHN1cHBvcnQsICJhbmRyb2lkX25vdF9yb290IiwgRmFsc2UpCisKK1RFU1RGTiA9
IHN1cHBvcnQuVEVTVEZOCisKKyMgd29yayBhcm91bmQgYnJva2VuIHN1cHBvcnQucm10cmVlIG9u
IFB5dGhvbiAzLjMgb24gV2luZG93cworaWYgKG9zLm5hbWUgPT0gJ250JworICAgICAgICBhbmQg
c3lzLnZlcnNpb25faW5mbyA+PSAoMywgMCkgYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCkp
OgorICAgIGltcG9ydCBzaHV0aWwKKyAgICBzdXBwb3J0LnJtdHJlZSA9IHNodXRpbC5ybXRyZWUK
KwordHJ5OgorICAgIGltcG9ydCBncnAKKyAgICBpbXBvcnQgcHdkCitleGNlcHQgSW1wb3J0RXJy
b3I6CisgICAgZ3JwID0gcHdkID0gTm9uZQorCisjIHN1cHBvcnQuY2FuX3N5bWxpbmsgaXMgbWlz
c2luZyBwcmlvciB0byBQeXRob24gMworaWYgc2l4LlBZMjoKKworICAgIGRlZiBzdXBwb3J0X2Nh
bl9zeW1saW5rKCk6CisgICAgICAgIHJldHVybiBwYXRobGliLnN1cHBvcnRzX3N5bWxpbmtzCisK
KyAgICBzdXBwb3J0X3NraXBfdW5sZXNzX3N5bWxpbmsgPSB1bml0dGVzdC5za2lwSWYoCisgICAg
ICAgIG5vdCBwYXRobGliLnN1cHBvcnRzX3N5bWxpbmtzLAorICAgICAgICAic3ltbGlua3Mgbm90
IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikKK2Vsc2U6CisgICAgc3VwcG9ydF9jYW5fc3lt
bGluayA9IHN1cHBvcnQuY2FuX3N5bWxpbmsKKyAgICBzdXBwb3J0X3NraXBfdW5sZXNzX3N5bWxp
bmsgPSBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKworCisjIEJhY2twb3J0ZWQgZnJvbSAz
LjQKK2RlZiBmc19pc19jYXNlX2luc2Vuc2l0aXZlKGRpcmVjdG9yeSk6CisgICAgIiIiRGV0ZWN0
cyBpZiB0aGUgZmlsZSBzeXN0ZW0gZm9yIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGlzCisgICAg
Y2FzZS1pbnNlbnNpdGl2ZS4KKyAgICAiIiIKKyAgICBiYXNlX2ZwLCBiYXNlX3BhdGggPSB0ZW1w
ZmlsZS5ta3N0ZW1wKGRpcj1kaXJlY3RvcnkpCisgICAgY2FzZV9wYXRoID0gYmFzZV9wYXRoLnVw
cGVyKCkKKyAgICBpZiBjYXNlX3BhdGggPT0gYmFzZV9wYXRoOgorICAgICAgICBjYXNlX3BhdGgg
PSBiYXNlX3BhdGgubG93ZXIoKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguc2Ft
ZWZpbGUoYmFzZV9wYXRoLCBjYXNlX3BhdGgpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAg
ICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICByYWlzZQorICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBvcy51bmxpbmsoYmFzZV9w
YXRoKQorCisKK3N1cHBvcnQuZnNfaXNfY2FzZV9pbnNlbnNpdGl2ZSA9IGZzX2lzX2Nhc2VfaW5z
ZW5zaXRpdmUKKworCitjbGFzcyBfQmFzZUZsYXZvdXJUZXN0KG9iamVjdCk6CisKKyAgICBkZWYg
X2NoZWNrX3BhcnNlX3BhcnRzKHNlbGYsIGFyZywgZXhwZWN0ZWQpOgorICAgICAgICBmID0gc2Vs
Zi5mbGF2b3VyLnBhcnNlX3BhcnRzCisgICAgICAgIHNlcCA9IHNlbGYuZmxhdm91ci5zZXAKKyAg
ICAgICAgYWx0c2VwID0gc2VsZi5mbGF2b3VyLmFsdHNlcAorICAgICAgICBhY3R1YWwgPSBmKFt4
LnJlcGxhY2UoJy8nLCBzZXApIGZvciB4IGluIGFyZ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgaWYgYWx0c2VwOgorICAgICAgICAgICAgYWN0
dWFsID0gZihbeC5yZXBsYWNlKCcvJywgYWx0c2VwKSBmb3IgeCBpbiBhcmddKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICBkcnYsIHJvb3Qs
IHBhcnRzID0gYWN0dWFsCisgICAgICAgICMgbmVpdGhlciBieXRlcyAocHkzKSBub3IgdW5pY29k
ZSAocHkyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZHJ2LCBzdHIpCisgICAgICAg
IHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyb290LCBzdHIpCisgICAgICAgIGZvciBwIGluIHBhcnRz
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIHN0cikKKworICAgIGRlZiB0
ZXN0X3BhcnNlX3BhcnRzX2NvbW1vbihzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLl9jaGVj
a19wYXJzZV9wYXJ0cworICAgICAgICBzZXAgPSBzZWxmLmZsYXZvdXIuc2VwCisgICAgICAgICMg
VW5hbmNob3JlZCBwYXJ0cworICAgICAgICBjaGVjayhbXSwgICAgICAgICAgICAgICAgICAgKCcn
LCAnJywgW10pKQorICAgICAgICBjaGVjayhbJ2EnXSwgICAgICAgICAgICAgICAgKCcnLCAnJywg
WydhJ10pKQorICAgICAgICBjaGVjayhbJ2EvJ10sICAgICAgICAgICAgICAgKCcnLCAnJywgWydh
J10pKQorICAgICAgICBjaGVjayhbJ2EnLCAnYiddLCAgICAgICAgICAgKCcnLCAnJywgWydhJywg
J2InXSkpCisgICAgICAgICMgRXhwYW5zaW9uCisgICAgICAgIGNoZWNrKFsnYS9iJ10sICAgICAg
ICAgICAgICAoJycsICcnLCBbJ2EnLCAnYiddKSkKKyAgICAgICAgY2hlY2soWydhL2IvJ10sICAg
ICAgICAgICAgICgnJywgJycsIFsnYScsICdiJ10pKQorICAgICAgICBjaGVjayhbJ2EnLCAnYi9j
JywgJ2QnXSwgICAgKCcnLCAnJywgWydhJywgJ2InLCAnYycsICdkJ10pKQorICAgICAgICAjIENv
bGxhcHNpbmcgYW5kIHN0cmlwcGluZyBleGNlc3Mgc2xhc2hlcworICAgICAgICBjaGVjayhbJ2En
LCAnYi8vYycsICdkJ10sICAgKCcnLCAnJywgWydhJywgJ2InLCAnYycsICdkJ10pKQorICAgICAg
ICBjaGVjayhbJ2EnLCAnYi9jLycsICdkJ10sICAgKCcnLCAnJywgWydhJywgJ2InLCAnYycsICdk
J10pKQorICAgICAgICAjIEVsaW1pbmF0aW5nIHN0YW5kYWxvbmUgZG90cworICAgICAgICBjaGVj
ayhbJy4nXSwgICAgICAgICAgICAgICAgKCcnLCAnJywgW10pKQorICAgICAgICBjaGVjayhbJy4n
LCAnLicsICdiJ10sICAgICAgKCcnLCAnJywgWydiJ10pKQorICAgICAgICBjaGVjayhbJ2EnLCAn
LicsICdiJ10sICAgICAgKCcnLCAnJywgWydhJywgJ2InXSkpCisgICAgICAgIGNoZWNrKFsnYScs
ICcuJywgJy4nXSwgICAgICAoJycsICcnLCBbJ2EnXSkpCisgICAgICAgICMgVGhlIGZpcnN0IHBh
cnQgaXMgYW5jaG9yZWQKKyAgICAgICAgY2hlY2soWycvYS9iJ10sICAgICAgICAgICAgICgnJywg
c2VwLCBbc2VwLCAnYScsICdiJ10pKQorICAgICAgICBjaGVjayhbJy9hJywgJ2InXSwgICAgICAg
ICAgKCcnLCBzZXAsIFtzZXAsICdhJywgJ2InXSkpCisgICAgICAgIGNoZWNrKFsnL2EvJywgJ2In
XSwgICAgICAgICAoJycsIHNlcCwgW3NlcCwgJ2EnLCAnYiddKSkKKyAgICAgICAgIyBJZ25vcmlu
ZyBwYXJ0cyBiZWZvcmUgYW4gYW5jaG9yZWQgcGFydAorICAgICAgICBjaGVjayhbJ2EnLCAnL2In
LCAnYyddLCAgICAgKCcnLCBzZXAsIFtzZXAsICdiJywgJ2MnXSkpCisgICAgICAgIGNoZWNrKFsn
YScsICcvYicsICcvYyddLCAgICAoJycsIHNlcCwgW3NlcCwgJ2MnXSkpCisKKworY2xhc3MgUG9z
aXhGbGF2b3VyVGVzdChfQmFzZUZsYXZvdXJUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
Zmxhdm91ciA9IHBhdGhsaWIuX3Bvc2l4X2ZsYXZvdXIKKworICAgIGRlZiB0ZXN0X3BhcnNlX3Bh
cnRzKHNlbGYpOgorICAgICAgICBjaGVjayA9IHNlbGYuX2NoZWNrX3BhcnNlX3BhcnRzCisgICAg
ICAgICMgQ29sbGFwc2luZyBvZiBleGNlc3MgbGVhZGluZyBzbGFzaGVzLCBleGNlcHQgZm9yIHRo
ZSBkb3VibGUtc2xhc2gKKyAgICAgICAgIyBzcGVjaWFsIGNhc2UuCisgICAgICAgIGNoZWNrKFsn
Ly9hJywgJ2InXSwgICAgICAgICAgICAgKCcnLCAnLy8nLCBbJy8vJywgJ2EnLCAnYiddKSkKKyAg
ICAgICAgY2hlY2soWycvLy9hJywgJ2InXSwgICAgICAgICAgICAoJycsICcvJywgWycvJywgJ2En
LCAnYiddKSkKKyAgICAgICAgY2hlY2soWycvLy8vYScsICdiJ10sICAgICAgICAgICAoJycsICcv
JywgWycvJywgJ2EnLCAnYiddKSkKKyAgICAgICAgIyBQYXRocyB3aGljaCBsb29rIGxpa2UgTlQg
cGF0aHMgYXJlbid0IHRyZWF0ZWQgc3BlY2lhbGx5CisgICAgICAgIGNoZWNrKFsnYzphJ10sICAg
ICAgICAgICAgICAgICAgKCcnLCAnJywgWydjOmEnXSkpCisgICAgICAgIGNoZWNrKFsnYzpcXGEn
XSwgICAgICAgICAgICAgICAgKCcnLCAnJywgWydjOlxcYSddKSkKKyAgICAgICAgY2hlY2soWydc
XGEnXSwgICAgICAgICAgICAgICAgICAoJycsICcnLCBbJ1xcYSddKSkKKworICAgIGRlZiB0ZXN0
X3NwbGl0cm9vdChzZWxmKToKKyAgICAgICAgZiA9IHNlbGYuZmxhdm91ci5zcGxpdHJvb3QKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCcnKSwgKCcnLCAnJywgJycpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGYoJ2EnKSwgKCcnLCAnJywgJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmKCdhL2InKSwgKCcnLCAnJywgJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGYoJ2EvYi8nKSwgKCcnLCAnJywgJ2EvYi8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
KCcvYScpLCAoJycsICcvJywgJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCcvYS9i
JyksICgnJywgJy8nLCAnYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignL2EvYi8n
KSwgKCcnLCAnLycsICdhL2IvJykpCisgICAgICAgICMgVGhlIHJvb3QgaXMgY29sbGFwc2VkIHdo
ZW4gdGhlcmUgYXJlIHJlZHVuZGFudCBzbGFzaGVzCisgICAgICAgICMgZXhjZXB0IHdoZW4gdGhl
cmUgYXJlIGV4YWN0bHkgdHdvIGxlYWRpbmcgc2xhc2hlcywgd2hpY2gKKyAgICAgICAgIyBpcyBh
IHNwZWNpYWwgY2FzZSBpbiBQT1NJWC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCcvL2En
KSwgKCcnLCAnLy8nLCAnYScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJy8vL2EnKSwg
KCcnLCAnLycsICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignLy8vYS9iJyksICgn
JywgJy8nLCAnYS9iJykpCisgICAgICAgICMgUGF0aHMgd2hpY2ggbG9vayBsaWtlIE5UIHBhdGhz
IGFyZW4ndCB0cmVhdGVkIHNwZWNpYWxseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2M6
L2EvYicpLCAoJycsICcnLCAnYzovYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZign
XFwvYS9iJyksICgnJywgJycsICdcXC9hL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
KCdcXGFcXGInKSwgKCcnLCAnJywgJ1xcYVxcYicpKQorCisKK2NsYXNzIE5URmxhdm91clRlc3Qo
X0Jhc2VGbGF2b3VyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZsYXZvdXIgPSBwYXRo
bGliLl93aW5kb3dzX2ZsYXZvdXIKKworICAgIGRlZiB0ZXN0X3BhcnNlX3BhcnRzKHNlbGYpOgor
ICAgICAgICBjaGVjayA9IHNlbGYuX2NoZWNrX3BhcnNlX3BhcnRzCisgICAgICAgICMgRmlyc3Qg
cGFydCBpcyBhbmNob3JlZAorICAgICAgICBjaGVjayhbJ2M6J10sICAgICAgICAgICAgICAgICgn
YzonLCAnJywgWydjOiddKSkKKyAgICAgICAgY2hlY2soWydjOi8nXSwgICAgICAgICAgICAgICAo
J2M6JywgJ1xcJywgWydjOlxcJ10pKQorICAgICAgICBjaGVjayhbJy8nXSwgICAgICAgICAgICAg
ICAgICgnJywgJ1xcJywgWydcXCddKSkKKyAgICAgICAgY2hlY2soWydjOmEnXSwgICAgICAgICAg
ICAgICAoJ2M6JywgJycsIFsnYzonLCAnYSddKSkKKyAgICAgICAgY2hlY2soWydjOi9hJ10sICAg
ICAgICAgICAgICAoJ2M6JywgJ1xcJywgWydjOlxcJywgJ2EnXSkpCisgICAgICAgIGNoZWNrKFsn
L2EnXSwgICAgICAgICAgICAgICAgKCcnLCAnXFwnLCBbJ1xcJywgJ2EnXSkpCisgICAgICAgICMg
VU5DIHBhdGhzCisgICAgICAgIGNoZWNrKFsnLy9hL2InXSwgICAgICAgICAgICAgKCdcXFxcYVxc
YicsICdcXCcsIFsnXFxcXGFcXGJcXCddKSkKKyAgICAgICAgY2hlY2soWycvL2EvYi8nXSwgICAg
ICAgICAgICAoJ1xcXFxhXFxiJywgJ1xcJywgWydcXFxcYVxcYlxcJ10pKQorICAgICAgICBjaGVj
ayhbJy8vYS9iL2MnXSwgICAgICAgICAgICgnXFxcXGFcXGInLCAnXFwnLCBbJ1xcXFxhXFxiXFwn
LCAnYyddKSkKKyAgICAgICAgIyBTZWNvbmQgcGFydCBpcyBhbmNob3JlZCwgc28gdGhhdCB0aGUg
Zmlyc3QgcGFydCBpcyBpZ25vcmVkCisgICAgICAgIGNoZWNrKFsnYScsICdaOmInLCAnYyddLCAg
ICAgKCdaOicsICcnLCBbJ1o6JywgJ2InLCAnYyddKSkKKyAgICAgICAgY2hlY2soWydhJywgJ1o6
L2InLCAnYyddLCAgICAoJ1o6JywgJ1xcJywgWydaOlxcJywgJ2InLCAnYyddKSkKKyAgICAgICAg
IyBVTkMgcGF0aHMKKyAgICAgICAgY2hlY2soWydhJywgJy8vYi9jJywgJ2QnXSwgICAoJ1xcXFxi
XFxjJywgJ1xcJywgWydcXFxcYlxcY1xcJywgJ2QnXSkpCisgICAgICAgICMgQ29sbGFwc2luZyBh
bmQgc3RyaXBwaW5nIGV4Y2VzcyBzbGFzaGVzCisgICAgICAgIGNoZWNrKFsnYScsICdaOi8vYi8v
Yy8nLCAnZC8nXSwgKCdaOicsICdcXCcsIFsnWjpcXCcsICdiJywgJ2MnLCAnZCddKSkKKyAgICAg
ICAgIyBVTkMgcGF0aHMKKyAgICAgICAgY2hlY2soWydhJywgJy8vYi9jLy8nLCAnZCddLCAoJ1xc
XFxiXFxjJywgJ1xcJywgWydcXFxcYlxcY1xcJywgJ2QnXSkpCisgICAgICAgICMgRXh0ZW5kZWQg
cGF0aHMKKyAgICAgICAgY2hlY2soWycvLz8vYzovJ10sICAgICAgICAgICAoJ1xcXFw/XFxjOics
ICdcXCcsIFsnXFxcXD9cXGM6XFwnXSkpCisgICAgICAgIGNoZWNrKFsnLy8/L2M6L2EnXSwgICAg
ICAgICAgKCdcXFxcP1xcYzonLCAnXFwnLCBbJ1xcXFw/XFxjOlxcJywgJ2EnXSkpCisgICAgICAg
IGNoZWNrKFsnLy8/L2M6L2EnLCAnL2InXSwgICAgKCdcXFxcP1xcYzonLCAnXFwnLCBbJ1xcXFw/
XFxjOlxcJywgJ2InXSkpCisgICAgICAgICMgRXh0ZW5kZWQgVU5DIHBhdGhzIChmb3JtYXQgaXMg
IlxcP1xVTkNcc2VydmVyXHNoYXJlIikKKyAgICAgICAgY2hlY2soWycvLz8vVU5DL2IvYyddLAor
ICAgICAgICAgICAgICAoJ1xcXFw/XFxVTkNcXGJcXGMnLCAnXFwnLCBbJ1xcXFw/XFxVTkNcXGJc
XGNcXCddKSkKKyAgICAgICAgY2hlY2soWycvLz8vVU5DL2IvYy9kJ10sCisgICAgICAgICAgICAg
ICgnXFxcXD9cXFVOQ1xcYlxcYycsICdcXCcsIFsnXFxcXD9cXFVOQ1xcYlxcY1xcJywgJ2QnXSkp
CisgICAgICAgICMgU2Vjb25kIHBhcnQgaGFzIGEgcm9vdCBidXQgbm90IGRyaXZlCisgICAgICAg
IGNoZWNrKFsnYScsICcvYicsICdjJ10sICAgICAgKCcnLCAnXFwnLCBbJ1xcJywgJ2InLCAnYydd
KSkKKyAgICAgICAgY2hlY2soWydaOi9hJywgJy9iJywgJ2MnXSwgICAoJ1o6JywgJ1xcJywgWyda
OlxcJywgJ2InLCAnYyddKSkKKyAgICAgICAgY2hlY2soWycvLz8vWjovYScsICcvYicsICdjJ10s
CisgICAgICAgICAgICAgICgnXFxcXD9cXFo6JywgJ1xcJywgWydcXFxcP1xcWjpcXCcsICdiJywg
J2MnXSkpCisKKyAgICBkZWYgdGVzdF9zcGxpdHJvb3Qoc2VsZik6CisgICAgICAgIGYgPSBzZWxm
LmZsYXZvdXIuc3BsaXRyb290CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignJyksICgnJywg
JycsICcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdhJyksICgnJywgJycsICdhJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignYVxcYicpLCAoJycsICcnLCAnYVxcYicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ1xcYScpLCAoJycsICdcXCcsICdhJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignXFxhXFxiJyksICgnJywgJ1xcJywgJ2FcXGInKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdjOmFcXGInKSwgKCdjOicsICcnLCAnYVxcYicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2M6XFxhXFxiJyksICgnYzonLCAnXFwnLCAnYVxc
YicpKQorICAgICAgICAjIFJlZHVuZGFudCBzbGFzaGVzIGluIHRoZSByb290IGFyZSBjb2xsYXBz
ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdcXFxcYScpLCAoJycsICdcXCcsICdhJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignXFxcXFxcYS9iJyksICgnJywgJ1xcJywgJ2Ev
YicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2M6XFxcXGEnKSwgKCdjOicsICdcXCcs
ICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignYzpcXFxcXFxhL2InKSwgKCdjOics
ICdcXCcsICdhL2InKSkKKyAgICAgICAgIyBWYWxpZCBVTkMgcGF0aHMKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmKCdcXFxcYVxcYicpLCAoJ1xcXFxhXFxiJywgJ1xcJywgJycpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGYoJ1xcXFxhXFxiXFwnKSwgKCdcXFxcYVxcYicsICdcXCcsICcn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdcXFxcYVxcYlxcY1xcZCcpLCAoJ1xcXFxh
XFxiJywgJ1xcJywgJ2NcXGQnKSkKKyAgICAgICAgIyBUaGVzZSBhcmUgbm9uLVVOQyBwYXRocyAo
YWNjb3JkaW5nIHRvIG50cGF0aC5weSBhbmQgdGVzdF9udHBhdGgpCisgICAgICAgICMgSG93ZXZl
ciwgY29tbWFuZC5jb20gc2F5cyBzdWNoIHBhdGhzIGFyZSBpbnZhbGlkLCBzbyBpdCdzCisgICAg
ICAgICMgZGlmZmljdWx0IHRvIGtub3cgd2hhdCB0aGUgcmlnaHQgc2VtYW50aWNzIGFyZQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ1xcXFxcXGFcXGInKSwgKCcnLCAnXFwnLCAnYVxcYicp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ1xcXFxhJyksICgnJywgJ1xcJywgJ2EnKSkK
KworCisjCisjIFRlc3RzIGZvciB0aGUgcHVyZSBjbGFzc2VzCisjCisKK3dpdGhfZnNlbmNvZGUg
PSB1bml0dGVzdC5za2lwSWYoCisgICAgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAyKSwKKyAgICAn
b3MuZnNlbmNvZGUgaGFzIGJlZW4gaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDMuMicpCisKKworY2xh
c3MgX0Jhc2VQdXJlUGF0aFRlc3Qob2JqZWN0KToKKworICAgICMga2V5cyBhcmUgY2Fub25pY2Fs
IHBhdGhzLCB2YWx1ZXMgYXJlIGxpc3Qgb2YgdHVwbGVzIG9mIGFyZ3VtZW50cworICAgICMgc3Vw
cG9zZWQgdG8gcHJvZHVjZSBlcXVhbCBwYXRocworICAgIGVxdWl2YWxlbmNlcyA9IHsKKyAgICAg
ICAgJ2EvYic6IFsKKyAgICAgICAgICAgICgnYScsICdiJyksICgnYS8nLCAnYicpLCAoJ2EnLCAn
Yi8nKSwgKCdhLycsICdiLycpLAorICAgICAgICAgICAgKCdhL2IvJywpLCAoJ2EvL2InLCksICgn
YS8vYi8vJywpLAorICAgICAgICAgICAgIyBlbXB0eSBjb21wb25lbnRzIGdldCByZW1vdmVkCisg
ICAgICAgICAgICAoJycsICdhJywgJ2InKSwgKCdhJywgJycsICdiJyksICgnYScsICdiJywgJycp
LAorICAgICAgICAgICAgXSwKKyAgICAgICAgJy9iL2MvZCc6IFsKKyAgICAgICAgICAgICgnYScs
ICcvYi9jJywgJ2QnKSwgKCdhJywgJy8vL2IvL2MnLCAnZC8nKSwKKyAgICAgICAgICAgICgnL2En
LCAnL2IvYycsICdkJyksCisgICAgICAgICAgICAjIGVtcHR5IGNvbXBvbmVudHMgZ2V0IHJlbW92
ZWQKKyAgICAgICAgICAgICgnLycsICdiJywgJycsICdjL2QnKSwgKCcvJywgJycsICdiL2MvZCcp
LCAoJycsICcvYi9jL2QnKSwKKyAgICAgICAgICAgIF0sCisgICAgfQorCisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoJ2EnKQorICAgICAgICBzZWxmLmZsYXZvdXIg
PSBwLl9mbGF2b3VyCisgICAgICAgIHNlbGYuc2VwID0gc2VsZi5mbGF2b3VyLnNlcAorICAgICAg
ICBzZWxmLmFsdHNlcCA9IHNlbGYuZmxhdm91ci5hbHRzZXAKKworICAgIGRlZiB0ZXN0X2NvbnN0
cnVjdG9yX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQ
KCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIFApCisKKyAgICAgICAgY2xh
c3MgUGF0aExpa2U6CisgICAgICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gImEvYi9jIgorCisgICAgICAgIFAoJ2EnLCAnYicsICdjJykKKyAgICAg
ICAgUCgnL2EnLCAnYicsICdjJykKKyAgICAgICAgUCgnYS9iL2MnKQorICAgICAgICBQKCcvYS9i
L2MnKQorICAgICAgICBQKFBhdGhMaWtlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQ
KCdhJykpLCBQKCdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksICdiJyks
IFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJykpLCBQ
KCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgUCgnYicpLCBQKCdj
JykpLCBQKFBhdGhMaWtlKCkpKQorCisgICAgZGVmIF9jaGVja19zdHJfc3ViY2xhc3Moc2VsZiwg
KmFyZ3MpOgorICAgICAgICAjIElzc3VlICMyMTEyNzogaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRv
IGNvbnN0cnVjdCBhIFB1cmVQYXRoIG9iamVjdAorICAgICAgICAjIGZyb20gYSBzdHIgc3ViY2xh
c3MgaW5zdGFuY2UsIGFuZCBpdCB0aGVuIGdldHMgY29udmVydGVkIHRvCisgICAgICAgICMgYSBw
dXJlIHN0ciBvYmplY3QuCisgICAgICAgIGNsYXNzIFN0clN1YmNsYXNzKHN0cik6CisgICAgICAg
ICAgICBwYXNzCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgqKFN0clN1YmNs
YXNzKHgpIGZvciB4IGluIGFyZ3MpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFAoKmFy
Z3MpKQorICAgICAgICBmb3IgcGFydCBpbiBwLnBhcnRzOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRJcyh0eXBlKHBhcnQpLCBzdHIpCisKKyAgICBkZWYgdGVzdF9zdHJfc3ViY2xhc3NfY29tbW9u
KHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3ViY2xhc3MoJycpCisgICAgICAgIHNl
bGYuX2NoZWNrX3N0cl9zdWJjbGFzcygnLicpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJj
bGFzcygnYScpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJjbGFzcygnYS9iLnR4dCcpCisg
ICAgICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJjbGFzcygnL2EvYi50eHQnKQorCisgICAgZGVmIHRl
c3Rfam9pbl9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0g
UCgnYS9iJykKKyAgICAgICAgcHAgPSBwLmpvaW5wYXRoKCdjJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwcCwgUCgnYS9iL2MnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHBwKSwg
dHlwZShwKSkKKyAgICAgICAgcHAgPSBwLmpvaW5wYXRoKCdjJywgJ2QnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBwLCBQKCdhL2IvYy9kJykpCisgICAgICAgIHBwID0gcC5qb2lucGF0aChQ
KCdjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAsIFAoJ2EvYi9jJykpCisgICAgICAg
IHBwID0gcC5qb2lucGF0aCgnL2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCcv
YycpKQorCisgICAgZGVmIHRlc3RfZGl2X2NvbW1vbihzZWxmKToKKyAgICAgICAgIyBCYXNpY2Fs
bHkgdGhlIHNhbWUgYXMgam9pbnBhdGgoKQorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAg
cCA9IFAoJ2EvYicpCisgICAgICAgIHBwID0gcCAvICdjJworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBwLCBQKCdhL2IvYycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocHApLCB0eXBl
KHApKQorICAgICAgICBwcCA9IHAgLyAnYy9kJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBw
LCBQKCdhL2IvYy9kJykpCisgICAgICAgIHBwID0gcCAvICdjJyAvICdkJworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBwLCBQKCdhL2IvYy9kJykpCisgICAgICAgIHBwID0gJ2MnIC8gcCAvICdk
JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCdjL2EvYi9kJykpCisgICAgICAgIHBw
ID0gcCAvIFAoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCdhL2IvYycpKQor
ICAgICAgICBwcCA9IHAgLyAnL2MnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAsIFAoJy9j
JykpCisKKyAgICBkZWYgX2NoZWNrX3N0cihzZWxmLCBleHBlY3RlZCwgYXJncyk6CisgICAgICAg
IHAgPSBzZWxmLmNscygqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksIGV4
cGVjdGVkLnJlcGxhY2UoJy8nLCBzZWxmLnNlcCkpCisKKyAgICBkZWYgdGVzdF9zdHJfY29tbW9u
KHNlbGYpOgorICAgICAgICAjIENhbm9uaWNhbGl6ZWQgcGF0aHMgcm91bmR0cmlwCisgICAgICAg
IGZvciBwYXRoc3RyIGluICgnYScsICdhL2InLCAnYS9iL2MnLCAnLycsICcvYS9iJywgJy9hL2Iv
YycpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc3RyKHBhdGhzdHIsIChwYXRoc3RyLCkpCisg
ICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB0aGUgZW1wdHkgcGF0aAorICAgICAgICBzZWxmLl9j
aGVja19zdHIoJy4nLCAoJycsKSkKKyAgICAgICAgIyBPdGhlciB0ZXN0cyBmb3Igc3RyKCkgYXJl
IGluIHRlc3RfZXF1aXZhbGVuY2VzKCkKKworICAgIGRlZiB0ZXN0X2FzX3Bvc2l4X2NvbW1vbihz
ZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIGZvciBwYXRoc3RyIGluICgnYScs
ICdhL2InLCAnYS9iL2MnLCAnLycsICcvYS9iJywgJy9hL2IvYycpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKHBhdGhzdHIpLmFzX3Bvc2l4KCksIHBhdGhzdHIpCisgICAgICAgICMg
T3RoZXIgdGVzdHMgZm9yIGFzX3Bvc2l4KCkgYXJlIGluIHRlc3RfZXF1aXZhbGVuY2VzKCkKKwor
ICAgIEB3aXRoX2ZzZW5jb2RlCisgICAgZGVmIHRlc3RfYXNfYnl0ZXNfY29tbW9uKHNlbGYpOgor
ICAgICAgICBzZXAgPSBvcy5mc2VuY29kZShzZWxmLnNlcCkKKyAgICAgICAgUCA9IHNlbGYuY2xz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoUCgnYS9iJykpLCBiJ2EnICsgc2VwICsg
YidiJykKKworICAgIGRlZiB0ZXN0X2FzX3VyaV9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBz
ZWxmLmNscworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAg
ICAgICAgICAgUCgnYScpLmFzX3VyaSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcik6CisgICAgICAgICAgICBQKCkuYXNfdXJpKCkKKworICAgIGRlZiB0ZXN0X3Jl
cHJfY29tbW9uKHNlbGYpOgorICAgICAgICBmb3IgcGF0aHN0ciBpbiAoJ2EnLCAnYS9iJywgJ2Ev
Yi9jJywgJy8nLCAnL2EvYicsICcvYS9iL2MnKToKKyAgICAgICAgICAgIHAgPSBzZWxmLmNscyhw
YXRoc3RyKQorICAgICAgICAgICAgY2xzbmFtZSA9IHAuX19jbGFzc19fLl9fbmFtZV9fCisgICAg
ICAgICAgICByID0gcmVwcihwKQorICAgICAgICAgICAgIyBUaGUgcmVwcigpIGlzIGluIHRoZSBm
b3JtIENsYXNzTmFtZSgiZm9yd2FyZC1zbGFzaGVzIHBhdGgiKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHIuc3RhcnRzd2l0aChjbHNuYW1lICsgJygnKSwgcikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyLmVuZHN3aXRoKCcpJyksIHIpCisgICAgICAgICAgICBpbm5lciA9IHJb
bGVuKGNsc25hbWUpICsgMTogLTFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwo
aW5uZXIpLCBwLmFzX3Bvc2l4KCkpCisgICAgICAgICAgICAjIFRoZSByZXByKCkgcm91bmR0cmlw
cworICAgICAgICAgICAgcSA9IGV2YWwociwgcGF0aGxpYi5fX2RpY3RfXykKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0SXMocS5fX2NsYXNzX18sIHAuX19jbGFzc19fKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChxLCBwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHEp
LCByKQorCisgICAgZGVmIHRlc3RfZXFfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5j
bHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2InKSwgUCgnYS9iJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iJyksIFAoJ2EnLCAnYicpKQorICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKFAoJ2EvYicpLCBQKCdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1
YWwoUCgnYS9iJyksIFAoJy9hL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCdh
L2InKSwgUCgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoJy9hL2InKSwgUCgnLycp
KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoKSwgUCgnLycpKQorICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKFAoKSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoUCgp
LCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCksIGludCkKKworICAgIGRlZiB0
ZXN0X21hdGNoX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2EnKS5tYXRjaCwgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2EnKS5tYXRjaCwgJy4nKQorICAgICAgICAj
IFNpbXBsZSByZWxhdGl2ZSBwYXR0ZXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCdiLnB5
JykubWF0Y2goJ2IucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJ2EvYi5weScpLm1h
dGNoKCdiLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvYS9iLnB5JykubWF0Y2go
J2IucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdhLnB5JykubWF0Y2goJ2IucHkn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdiL3B5JykubWF0Y2goJ2IucHknKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCcvYS5weScpLm1hdGNoKCdiLnB5JykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoUCgnYi5weS9jJykubWF0Y2goJ2IucHknKSkKKyAgICAgICAgIyBX
aWxjYXJkIHJlbGF0aXZlIHBhdHRlcm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJ2IucHkn
KS5tYXRjaCgnKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnYS9iLnB5JykubWF0
Y2goJyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy9hL2IucHknKS5tYXRjaCgn
Ki5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2IucHljJykubWF0Y2goJyoucHkn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCdiLi9weScpLm1hdGNoKCcqLnB5JykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnYi5weS9jJykubWF0Y2goJyoucHknKSkKKyAgICAg
ICAgIyBNdWx0aS1wYXJ0IHJlbGF0aXZlIHBhdHRlcm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KFAoJ2FiL2MucHknKS5tYXRjaCgnYSovKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
UCgnL2QvYWIvYy5weScpLm1hdGNoKCdhKi8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoUCgnYS5weScpLm1hdGNoKCdhKi8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
UCgnL2RhYi9jLnB5JykubWF0Y2goJ2EqLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShQKCdhYi9jLnB5L2QnKS5tYXRjaCgnYSovKi5weScpKQorICAgICAgICAjIEFic29sdXRlIHBh
dHRlcm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy9iLnB5JykubWF0Y2goJy8qLnB5Jykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnYi5weScpLm1hdGNoKCcvKi5weScpKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2EvYi5weScpLm1hdGNoKCcvKi5weScpKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKFAoJy9hL2IucHknKS5tYXRjaCgnLyoucHknKSkKKyAgICAgICAg
IyBNdWx0aS1wYXJ0IGFic29sdXRlIHBhdHRlcm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAo
Jy9hL2IucHknKS5tYXRjaCgnL2EvKi5weScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAo
Jy9hYi5weScpLm1hdGNoKCcvYS8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgn
L2EvYi9jLnB5JykubWF0Y2goJy9hLyoucHknKSkKKworICAgIGRlZiB0ZXN0X29yZGVyaW5nX2Nv
bW1vbihzZWxmKToKKyAgICAgICAgIyBPcmRlcmluZyBpcyB0dXBsZS1hbGlrZQorICAgICAgICBk
ZWYgYXNzZXJ0TGVzcyhhLCBiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhhLCBiKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGIsIGEpCisgICAgICAgIFAgPSBzZWxmLmNs
cworICAgICAgICBhID0gUCgnYScpCisgICAgICAgIGIgPSBQKCdhL2InKQorICAgICAgICBjID0g
UCgnYWJjJykKKyAgICAgICAgZCA9IFAoJ2InKQorICAgICAgICBhc3NlcnRMZXNzKGEsIGIpCisg
ICAgICAgIGFzc2VydExlc3MoYSwgYykKKyAgICAgICAgYXNzZXJ0TGVzcyhhLCBkKQorICAgICAg
ICBhc3NlcnRMZXNzKGIsIGMpCisgICAgICAgIGFzc2VydExlc3MoYywgZCkKKyAgICAgICAgUCA9
IHNlbGYuY2xzCisgICAgICAgIGEgPSBQKCcvYScpCisgICAgICAgIGIgPSBQKCcvYS9iJykKKyAg
ICAgICAgYyA9IFAoJy9hYmMnKQorICAgICAgICBkID0gUCgnL2InKQorICAgICAgICBhc3NlcnRM
ZXNzKGEsIGIpCisgICAgICAgIGFzc2VydExlc3MoYSwgYykKKyAgICAgICAgYXNzZXJ0TGVzcyhh
LCBkKQorICAgICAgICBhc3NlcnRMZXNzKGIsIGMpCisgICAgICAgIGFzc2VydExlc3MoYywgZCkK
KyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCk6CisgICAgICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgUCgpIDwge30KKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIFAoKSA8IHt9CisKKyAgICBkZWYgdGVzdF9wYXJ0c19j
b21tb24oc2VsZik6CisgICAgICAgICMgYHBhcnRzYCByZXR1cm5zIGEgdHVwbGUKKyAgICAgICAg
c2VwID0gc2VsZi5zZXAKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdhL2In
KQorICAgICAgICBwYXJ0cyA9IHAucGFydHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJ0
cywgKCdhJywgJ2InKSkKKyAgICAgICAgIyBUaGUgb2JqZWN0IGdldHMgcmV1c2VkCisgICAgICAg
IHNlbGYuYXNzZXJ0SXMocGFydHMsIHAucGFydHMpCisgICAgICAgICMgV2hlbiB0aGUgcGF0aCBp
cyBhYnNvbHV0ZSwgdGhlIGFuY2hvciBpcyBhIHNlcGFyYXRlIHBhcnQKKyAgICAgICAgcCA9IFAo
Jy9hL2InKQorICAgICAgICBwYXJ0cyA9IHAucGFydHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXJ0cywgKHNlcCwgJ2EnLCAnYicpKQorCisgICAgZGVmIHRlc3RfZnNwYXRoX2NvbW1vbihz
ZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdhL2InKQorICAgICAg
ICBzZWxmLl9jaGVja19zdHIocC5fX2ZzcGF0aF9fKCksICgnYS9iJywpKQorICAgICAgICBpZiBz
eXMudmVyc2lvbl9pbmZvID49ICgzLCA2KToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3N0cihv
cy5mc3BhdGgocCksICgnYS9iJywpKQorCisgICAgZGVmIHRlc3RfZXF1aXZhbGVuY2VzKHNlbGYp
OgorICAgICAgICBmb3IgaywgdHVwbGVzIGluIHNlbGYuZXF1aXZhbGVuY2VzLml0ZW1zKCk6Cisg
ICAgICAgICAgICBjYW5vbiA9IGsucmVwbGFjZSgnLycsIHNlbGYuc2VwKQorICAgICAgICAgICAg
cG9zaXggPSBrLnJlcGxhY2Uoc2VsZi5zZXAsICcvJykKKyAgICAgICAgICAgIGlmIGNhbm9uICE9
IHBvc2l4OgorICAgICAgICAgICAgICAgIHR1cGxlcyA9IHR1cGxlcyArIFsKKyAgICAgICAgICAg
ICAgICAgICAgdHVwbGUocGFydC5yZXBsYWNlKCcvJywgc2VsZi5zZXApIGZvciBwYXJ0IGluIHQp
CisgICAgICAgICAgICAgICAgICAgIGZvciB0IGluIHR1cGxlcworICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgdHVwbGVzLmFwcGVuZCgocG9zaXgsICkpCisgICAgICAgICAg
ICBwY2Fub24gPSBzZWxmLmNscyhjYW5vbikKKyAgICAgICAgICAgIGZvciB0IGluIHR1cGxlczoK
KyAgICAgICAgICAgICAgICBwID0gc2VsZi5jbHMoKnQpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwLCBwY2Fub24sICJmYWlsZWQgd2l0aCBhcmdzIHswfSIuZm9ybWF0KHQpKQor
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChwKSwgaGFzaChwY2Fub24pKQor
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCBjYW5vbikKKyAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuYXNfcG9zaXgoKSwgcG9zaXgpCisKKyAgICBkZWYg
dGVzdF9wYXJlbnRfY29tbW9uKHNlbGYpOgorICAgICAgICAjIFJlbGF0aXZlCisgICAgICAgIFAg
PSBzZWxmLmNscworICAgICAgICBwID0gUCgnYS9iL2MnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHAucGFyZW50LCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVu
dC5wYXJlbnQsIFAoJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJl
bnQucGFyZW50LCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50
LnBhcmVudC5wYXJlbnQsIFAoKSkKKyAgICAgICAgIyBBbmNob3JlZAorICAgICAgICBwID0gUCgn
L2EvYi9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudCwgUCgnL2EvYicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucGFyZW50LnBhcmVudCwgUCgnL2EnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJlbnQucGFyZW50LCBQKCcvJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQsIFAoJy8n
KSkKKworICAgIGRlZiB0ZXN0X3BhcmVudHNfY29tbW9uKHNlbGYpOgorICAgICAgICAjIFJlbGF0
aXZlCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnYS9iL2MnKQorICAgICAg
ICBwYXIgPSBwLnBhcmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyKSwgMykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJbMF0sIFAoJ2EvYicpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhclsxXSwgUCgnYScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
clsyXSwgUCgnLicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGFyKSwgW1AoJ2Ev
YicpLCBQKCdhJyksIFAoJy4nKV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5k
ZXhFcnJvcik6CisgICAgICAgICAgICBwYXJbLTFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBwYXJbM10KKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcGFyWzBdID0gcAorICAgICAg
ICAjIEFuY2hvcmVkCisgICAgICAgIHAgPSBQKCcvYS9iL2MnKQorICAgICAgICBwYXIgPSBwLnBh
cmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyKSwgMykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXJbMF0sIFAoJy9hL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXJbMV0sIFAoJy9hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyWzJdLCBQKCcv
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwYXIpLCBbUCgnL2EvYicpLCBQKCcv
YScpLCBQKCcvJyldKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3Ip
OgorICAgICAgICAgICAgcGFyWzNdCisKKyAgICBkZWYgdGVzdF9kcml2ZV9jb21tb24oc2VsZik6
CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvYicp
LmRyaXZlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykuZHJpdmUsICcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJycpLmRyaXZlLCAnJykKKworICAgIGRlZiB0
ZXN0X3Jvb3RfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2Vw
ID0gc2VsZi5zZXAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcnKS5yb290LCAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2InKS5yb290LCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCcvJykucm9vdCwgc2VwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAo
Jy9hL2InKS5yb290LCBzZXApCisKKyAgICBkZWYgdGVzdF9hbmNob3JfY29tbW9uKHNlbGYpOgor
ICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VwID0gc2VsZi5zZXAKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKCcnKS5hbmNob3IsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2EvYicpLmFuY2hvciwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLycpLmFu
Y2hvciwgc2VwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2InKS5hbmNob3IsIHNl
cCkKKworICAgIGRlZiB0ZXN0X25hbWVfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5j
bHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcnKS5uYW1lLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKCcuJykubmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
UCgnLycpLm5hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvYicpLm5hbWUs
ICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykubmFtZSwgJ2InKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IvLicpLm5hbWUsICdiJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKCdhL2IucHknKS5uYW1lLCAnYi5weScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnL2EvYi5weScpLm5hbWUsICdiLnB5JykKKworICAgIGRlZiB0ZXN0X3N1ZmZp
eF9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFAoJycpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLicp
LnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLi4nKS5zdWZmaXgsICcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8nKS5zdWZmaXgsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFAoJ2EvYicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnL2EvYicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
L2EvYi8uJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2IucHkn
KS5zdWZmaXgsICcucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IucHknKS5z
dWZmaXgsICcucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvLmhncmMnKS5zdWZm
aXgsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hLy5oZ3JjJykuc3VmZml4LCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhLy5oZy5yYycpLnN1ZmZpeCwgJy5yYycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvLmhnLnJjJykuc3VmZml4LCAnLnJjJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2IudGFyLmd6Jykuc3VmZml4LCAnLmd6JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iLnRhci5neicpLnN1ZmZpeCwgJy5neicp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9Tb21lIG5hbWUuIEVuZGluZyB3aXRoIGEg
ZG90LicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvU29tZSBu
YW1lLiBFbmRpbmcgd2l0aCBhIGRvdC4nKS5zdWZmaXgsICcnKQorCisgICAgZGVmIHRlc3Rfc3Vm
Zml4ZXNfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCcnKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
UCgnLicpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvJykuc3Vm
Zml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvYicpLnN1ZmZpeGVzLCBb
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykuc3VmZml4ZXMsIFtdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IvLicpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQKCdhL2IucHknKS5zdWZmaXhlcywgWycucHknXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iLnB5Jykuc3VmZml4ZXMsIFsnLnB5J10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS8uaGdyYycpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKCcvYS8uaGdyYycpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCdhLy5oZy5yYycpLnN1ZmZpeGVzLCBbJy5yYyddKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFAoJy9hLy5oZy5yYycpLnN1ZmZpeGVzLCBbJy5yYyddKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFAoJ2EvYi50YXIuZ3onKS5zdWZmaXhlcywgWycudGFyJywgJy5neidd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IudGFyLmd6Jykuc3VmZml4ZXMsIFsn
LnRhcicsICcuZ3onXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL1NvbWUgbmFtZS4g
RW5kaW5nIHdpdGggYSBkb3QuJykuc3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFAoJy9hL1NvbWUgbmFtZS4gRW5kaW5nIHdpdGggYSBkb3QuJykuc3VmZml4ZXMsIFtdKQor
CisgICAgZGVmIHRlc3Rfc3RlbV9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJycpLnN0ZW0sICcnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFAoJy4nKS5zdGVtLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcu
LicpLnN0ZW0sICcuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLycpLnN0ZW0sICcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvYicpLnN0ZW0sICdiJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQKCdhL2IucHknKS5zdGVtLCAnYicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnYS8uaGdyYycpLnN0ZW0sICcuaGdyYycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnYS8uaGcucmMnKS5zdGVtLCAnLmhnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdhL2IudGFyLmd6Jykuc3RlbSwgJ2IudGFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdhL1NvbWUgbmFtZS4gRW5kaW5nIHdpdGggYSBkb3QuJykuc3RlbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnU29tZSBuYW1lLiBFbmRpbmcgd2l0aCBhIGRvdC4nKQorCisgICAgZGVm
IHRlc3Rfd2l0aF9uYW1lX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iJykud2l0aF9uYW1lKCdkLnhtbCcpLCBQKCdhL2Qu
eG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYicpLndpdGhfbmFtZSgnZC54
bWwnKSwgUCgnL2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdhL2IucHkn
KS53aXRoX25hbWUoJ2QueG1sJyksIFAoJ2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCcvYS9iLnB5Jykud2l0aF9uYW1lKCdkLnhtbCcpLCBQKCcvYS9kLnhtbCcpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvRG90IGVuZGluZy4nKS53aXRoX25hbWUoJ2QueG1s
JyksIFAoJ2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9Eb3QgZW5k
aW5nLicpLndpdGhfbmFtZSgnZC54bWwnKSwgUCgnL2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnJykud2l0aF9uYW1lLCAnZC54bWwnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcuJykud2l0aF9uYW1lLCAnZC54bWwn
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcvJykud2l0aF9uYW1l
LCAnZC54bWwnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2In
KS53aXRoX25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQ
KCdhL2InKS53aXRoX25hbWUsICcvYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIFAoJ2EvYicpLndpdGhfbmFtZSwgJ2MvJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgUCgnYS9iJykud2l0aF9uYW1lLCAnYy9kJykKKworICAgIGRlZiB0ZXN0
X3dpdGhfc3VmZml4X2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iJykud2l0aF9zdWZmaXgoJy5neicpLCBQKCdhL2IuZ3on
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykud2l0aF9zdWZmaXgoJy5neicp
LCBQKCcvYS9iLmd6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYS9iLnB5Jykud2l0
aF9zdWZmaXgoJy5neicpLCBQKCdhL2IuZ3onKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQ
KCcvYS9iLnB5Jykud2l0aF9zdWZmaXgoJy5neicpLCBQKCcvYS9iLmd6JykpCisgICAgICAgICMg
U3RyaXBwaW5nIHN1ZmZpeAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2EvYi5weScpLndp
dGhfc3VmZml4KCcnKSwgUCgnYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2Ev
YicpLndpdGhfc3VmZml4KCcnKSwgUCgnL2EvYicpKQorICAgICAgICAjIFBhdGggZG9lc24ndCBo
YXZlIGEgImZpbGVuYW1lIiBjb21wb25lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgUCgnJykud2l0aF9zdWZmaXgsICcuZ3onKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBQKCcuJykud2l0aF9zdWZmaXgsICcuZ3onKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcvJykud2l0aF9zdWZmaXgsICcuZ3onKQorICAg
ICAgICAjIEludmFsaWQgc3VmZml4CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIFAoJ2EvYicpLndpdGhfc3VmZml4LCAnZ3onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRoX3N1ZmZpeCwgJy8nKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRoX3N1ZmZpeCwgJy4nKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRoX3N1ZmZpeCwgJy8u
Z3onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRo
X3N1ZmZpeCwgJ2MvZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAo
J2EvYicpLndpdGhfc3VmZml4LCAnLmMvLmQnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBQKCdhL2InKS53aXRoX3N1ZmZpeCwgJy4vLmQnKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdhL2InKS53aXRoX3N1ZmZpeCwgJy5kLy4nKQorCisg
ICAgZGVmIHRlc3RfcmVsYXRpdmVfdG9fY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5j
bHMKKyAgICAgICAgcCA9IFAoJ2EvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVF
cnJvciwgcC5yZWxhdGl2ZV90bykKKyAgICAgICAgaWYgc2l4LlBZMzoKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5yZWxhdGl2ZV90bywgYidhJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAoKSksIFAoJ2EvYicpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJycpLCBQKCdhL2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAoJ2EnKSksIFAoJ2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCdhJyksIFAoJ2InKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCdhLycpLCBQKCdiJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCdhL2InKSksIFAoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwLnJlbGF0aXZlX3RvKCdhL2InKSwgUCgpKQorICAgICAgICAjIFdpdGggc2V2ZXJh
bCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnYScsICdiJyks
IFAoKSkKKyAgICAgICAgIyBVbnJlbGF0ZWQgcGF0aHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnYycpKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdhL2IvYycpKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdhL2MnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnL2En
KSkKKyAgICAgICAgcCA9IFAoJy9hL2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVs
YXRpdmVfdG8oUCgnLycpKSwgUCgnYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5y
ZWxhdGl2ZV90bygnLycpLCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJl
bGF0aXZlX3RvKFAoJy9hJykpLCBQKCdiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5y
ZWxhdGl2ZV90bygnL2EnKSwgUCgnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVs
YXRpdmVfdG8oJy9hLycpLCBQKCdiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxh
dGl2ZV90byhQKCcvYS9iJykpLCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxh
dGl2ZV90bygnL2EvYicpLCBQKCkpCisgICAgICAgICMgVW5yZWxhdGVkIHBhdGhzCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJy9jJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJy9h
L2IvYycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZl
X3RvLCBQKCcvYS9jJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAu
cmVsYXRpdmVfdG8sIFAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
cC5yZWxhdGl2ZV90bywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
IHAucmVsYXRpdmVfdG8sIFAoJ2EnKSkKKworICAgIGRlZiB0ZXN0X3BpY2tsaW5nX2NvbW1vbihz
ZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCcvYS9iJykKKyAgICAg
ICAgZm9yIHByb3RvIGluIHJhbmdlKDAsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Cisg
ICAgICAgICAgICBkdW1wZWQgPSBwaWNrbGUuZHVtcHMocCwgcHJvdG8pCisgICAgICAgICAgICBw
cCA9IHBpY2tsZS5sb2FkcyhkdW1wZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBwLl9f
Y2xhc3NfXywgcC5fX2NsYXNzX18pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBw
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHBwKSwgaGFzaChwKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHBwKSwgc3RyKHApKQorCisgICAgIyBub3RlOiB0
aGlzIGlzIGEgbmV3IHRlc3Qgbm90IHBhcnQgb2YgdXBzdHJlYW0KKyAgICAjIHRlc3QgdGhhdCB1
bmljb2RlIHdvcmtzIG9uIFB5dGhvbiAyCisgICAgQHVuaXR0ZXN0LnNraXBJZigKKyAgICAgICAg
c2l4LnVuaWNocigweDAxMDApLmVuY29kZSgKKyAgICAgICAgICAgIHN5cy5nZXRmaWxlc3lzdGVt
ZW5jb2RpbmcoKSwgInJlcGxhY2UiKSA9PSBiIj8iLAorICAgICAgICAiZmlsZSBzeXN0ZW0gZW5j
b2Rpbmcgb25seSBzdXBwb3J0cyBhc2NpaSIpCisgICAgZGVmIHRlc3RfdW5pY29kZShzZWxmKToK
KyAgICAgICAgc2VsZi5jbHMoc2l4LnVuaWNocigweDAxMDApKQorCisKK2NsYXNzIFB1cmVQb3Np
eFBhdGhUZXN0KF9CYXNlUHVyZVBhdGhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgY2xz
ID0gcGF0aGxpYi5QdXJlUG9zaXhQYXRoCisKKyAgICBkZWYgdGVzdF9yb290KHNlbGYpOgorICAg
ICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvYS9iJykucm9v
dCwgJy8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vL2EvYicpLnJvb3QsICcvJykK
KyAgICAgICAgIyBQT1NJWCBzcGVjaWFsIGNhc2UgZm9yIHR3byBsZWFkaW5nIHNsYXNoZXMKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYicpLnJvb3QsICcvLycpCisKKyAgICBkZWYg
dGVzdF9lcShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0
Tm90RXF1YWwoUCgnYS9iJyksIFAoJ0EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAo
Jy9hJyksIFAoJy8vL2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCcvYScpLCBQ
KCcvL2EnKSkKKworICAgIGRlZiB0ZXN0X2FzX3VyaShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYu
Y2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLycpLmFzX3VyaSgpLCAnZmlsZTovLy8n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy9hL2IuYycpLmFzX3VyaSgpLCAnZmlsZTov
Ly9hL2IuYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnL2EvYiUjYycpLmFzX3VyaSgp
LCAnZmlsZTovLy9hL2IlMjUlMjNjJykKKworICAgIEB3aXRoX2ZzZW5jb2RlCisgICAgZGVmIHRl
c3RfYXNfdXJpX25vbl9hc2NpaShzZWxmKToKKyAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1w
b3J0IHF1b3RlX2Zyb21fYnl0ZXMKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIG9zLmZzZW5jb2RlKCdceGU5JykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVF
bmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlxceGU5IGNhbm5vdCBiZSBl
bmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCcvYS9iXHhlOScpLmFzX3VyaSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdm
aWxlOi8vL2EvYicgKyBxdW90ZV9mcm9tX2J5dGVzKG9zLmZzZW5jb2RlKCdceGU5JykpKQorCisg
ICAgZGVmIHRlc3RfbWF0Y2goc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKFAoJ0EucHknKS5tYXRjaCgnYS5QWScpKQorCisgICAgZGVmIHRlc3Rf
aXNfYWJzb2x1dGUoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKFAoKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAo
J2EnKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2EvYi8nKS5p
c19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnLycpLmlzX2Fic29sdXRl
KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvYScpLmlzX2Fic29sdXRlKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvYS9iLycpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShQKCcvL2EnKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoUCgnLy9hL2InKS5pc19hYnNvbHV0ZSgpKQorCisgICAgZGVmIHRlc3RfaXNfcmVzZXJ2
ZWQoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydElzKEZh
bHNlLCBQKCcnKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFzc2VydElzKEZhbHNlLCBQ
KCcvJykuaXNfcmVzZXJ2ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnL2Zv
by9iYXInKS5pc19yZXNlcnZlZCgpKQorICAgICAgICBzZWxmLmFzc2VydElzKEZhbHNlLCBQKCcv
ZGV2L2Nvbi9QUk4vTlVMJykuaXNfcmVzZXJ2ZWQoKSkKKworICAgIGRlZiB0ZXN0X2pvaW4oc2Vs
Zik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnLy9hJykKKyAgICAgICAg
cHAgPSBwLmpvaW5wYXRoKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnLy9h
L2InKSkKKyAgICAgICAgcHAgPSBQKCcvYScpLmpvaW5wYXRoKCcvL2MnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBwLCBQKCcvL2MnKSkKKyAgICAgICAgcHAgPSBQKCcvL2EnKS5qb2lucGF0
aCgnL2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCcvYycpKQorCisgICAgZGVm
IHRlc3RfZGl2KHNlbGYpOgorICAgICAgICAjIEJhc2ljYWxseSB0aGUgc2FtZSBhcyBqb2lucGF0
aCgpCisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnLy9hJykKKyAgICAgICAg
cHAgPSBwIC8gJ2InCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAsIFAoJy8vYS9iJykpCisg
ICAgICAgIHBwID0gUCgnL2EnKSAvICcvL2MnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAs
IFAoJy8vYycpKQorICAgICAgICBwcCA9IFAoJy8vYScpIC8gJy9jJworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBwLCBQKCcvYycpKQorCisKK2NsYXNzIFB1cmVXaW5kb3dzUGF0aFRlc3QoX0Jh
c2VQdXJlUGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBjbHMgPSBwYXRobGliLlB1
cmVXaW5kb3dzUGF0aAorCisgICAgZXF1aXZhbGVuY2VzID0gX0Jhc2VQdXJlUGF0aFRlc3QuZXF1
aXZhbGVuY2VzLmNvcHkoKQorICAgIGVxdWl2YWxlbmNlcy51cGRhdGUoeworICAgICAgICAnYzph
JzogWygnYzonLCAnYScpLCAoJ2M6JywgJ2EvJyksICgnLycsICdjOicsICdhJyldLAorICAgICAg
ICAnYzovYSc6IFsKKyAgICAgICAgICAgICgnYzovJywgJ2EnKSwgKCdjOicsICcvJywgJ2EnKSwg
KCdjOicsICcvYScpLAorICAgICAgICAgICAgKCcveicsICdjOi8nLCAnYScpLCAoJy8veC95Jywg
J2M6LycsICdhJyksCisgICAgICAgICAgICBdLAorICAgICAgICAnLy9hL2IvJzogWygnLy9hL2In
LCldLAorICAgICAgICAnLy9hL2IvYyc6IFsKKyAgICAgICAgICAgICgnLy9hL2InLCAnYycpLCAo
Jy8vYS9iLycsICdjJyksCisgICAgICAgICAgICBdLAorICAgIH0pCisKKyAgICBkZWYgdGVzdF9z
dHIoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscygnYS9iL2MnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihwKSwgJ2FcXGJcXGMnKQorICAgICAgICBwID0gc2VsZi5jbHMoJ2M6L2Ev
Yi9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICdjOlxcYVxcYlxcYycpCisg
ICAgICAgIHAgPSBzZWxmLmNscygnLy9hL2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihwKSwgJ1xcXFxhXFxiXFwnKQorICAgICAgICBwID0gc2VsZi5jbHMoJy8vYS9iL2MnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJ1xcXFxhXFxiXFxjJykKKyAgICAgICAgcCA9
IHNlbGYuY2xzKCcvL2EvYi9jL2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwg
J1xcXFxhXFxiXFxjXFxkJykKKworICAgIGRlZiB0ZXN0X3N0cl9zdWJjbGFzcyhzZWxmKToKKyAg
ICAgICAgc2VsZi5fY2hlY2tfc3RyX3N1YmNsYXNzKCdjOicpCisgICAgICAgIHNlbGYuX2NoZWNr
X3N0cl9zdWJjbGFzcygnYzphJykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RyX3N1YmNsYXNzKCdj
OmFcXGIudHh0JykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RyX3N1YmNsYXNzKCdjOlxcJykKKyAg
ICAgICAgc2VsZi5fY2hlY2tfc3RyX3N1YmNsYXNzKCdjOlxcYScpCisgICAgICAgIHNlbGYuX2No
ZWNrX3N0cl9zdWJjbGFzcygnYzpcXGFcXGIudHh0JykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3Ry
X3N1YmNsYXNzKCdcXFxcc29tZVxcc2hhcmUnKQorICAgICAgICBzZWxmLl9jaGVja19zdHJfc3Vi
Y2xhc3MoJ1xcXFxzb21lXFxzaGFyZVxcYScpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cl9zdWJj
bGFzcygnXFxcXHNvbWVcXHNoYXJlXFxhXFxiLnR4dCcpCisKKyAgICBkZWYgdGVzdF9lcShzZWxm
KToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzph
L2InKSwgUCgnYzphL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLCBQ
KCdjOicsICdhJywgJ2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChQKCdjOmEvYicp
LCBQKCdkOmEvYicpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoJ2M6YS9iJyksIFAo
J2M6L2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFAoJy9hL2InKSwgUCgnYzov
YS9iJykpCisgICAgICAgICMgQ2FzZS1pbnNlbnNpdGl2aXR5CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnYS9CJyksIFAoJ0EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ0M6
YS9CJyksIFAoJ2M6QS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9Tb21lL1NI
QVJFL2EvQicpLCBQKCcvL3NvbUUvc2hhcmUvQS9iJykpCisKKyAgICBAd2l0aF9mc2VuY29kZQor
ICAgIGRlZiB0ZXN0X2FzX3VyaShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBQKCcvYS9i
JykuYXNfdXJpKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToK
KyAgICAgICAgICAgIFAoJ2M6YS9iJykuYXNfdXJpKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdjOi8nKS5hc191cmkoKSwgJ2ZpbGU6Ly8vYzovJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChQKCdjOi9hL2IuYycpLmFzX3VyaSgpLCAnZmlsZTovLy9jOi9hL2IuYycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS9iJSNjJykuYXNfdXJpKCksICdmaWxlOi8vL2M6L2Ev
YiUyNSUyM2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvYlx4ZTknKS5hc191
cmkoKSwgJ2ZpbGU6Ly8vYzovYS9iJUMzJUE5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQ
KCcvL3NvbWUvc2hhcmUvJykuYXNfdXJpKCksICdmaWxlOi8vc29tZS9zaGFyZS8nKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vc29tZS9zaGFyZS9hL2IuYycpLmFzX3VyaSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vc29tZS9zaGFyZS9hL2IuYycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9zb21lL3NoYXJlL2EvYiUjY1x4ZTknKS5hc191cmkoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovL3NvbWUvc2hhcmUvYS9iJTI1JTIzYyVD
MyVBOScpCisKKyAgICBkZWYgdGVzdF9tYXRjaF9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBz
ZWxmLmNscworICAgICAgICAjIEFic29sdXRlIHBhdHRlcm5zCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShQKCdjOi9iLnB5JykubWF0Y2goJy8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShQKCdjOi9iLnB5JykubWF0Y2goJ2M6Ki5weScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
UCgnYzovYi5weScpLm1hdGNoKCdjOi8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
UCgnZDovYi5weScpLm1hdGNoKCdjOi8qLnB5JykpICAjIHdyb25nIGRyaXZlCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoUCgnYi5weScpLm1hdGNoKCcvKi5weScpKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKFAoJ2IucHknKS5tYXRjaCgnYzoqLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoUCgnYi5weScpLm1hdGNoKCdjOi8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoUCgnYzpiLnB5JykubWF0Y2goJy8qLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
UCgnYzpiLnB5JykubWF0Y2goJ2M6LyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQ
KCcvYi5weScpLm1hdGNoKCdjOioucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCcv
Yi5weScpLm1hdGNoKCdjOi8qLnB5JykpCisgICAgICAgICMgVU5DIHBhdHRlcm5zCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShQKCcvL3NvbWUvc2hhcmUvYS5weScpLm1hdGNoKCcvKi5weScpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoUCgnLy9zb21lL3NoYXJlL2EucHknKS5tYXRjaCgnLy9z
b21lL3NoYXJlLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCcvL290aGVyL3No
YXJlL2EucHknKS5tYXRjaCgnLy9zb21lL3NoYXJlLyoucHknKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShQKCcvL3NvbWUvc2hhcmUvYS9iLnB5JykubWF0Y2goJy8vc29tZS9zaGFyZS8qLnB5
JykpCisgICAgICAgICMgQ2FzZS1pbnNlbnNpdGl2aXR5CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShQKCdCLnB5JykubWF0Y2goJ2IuUFknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJ2M6
L2EvQi5QeScpLm1hdGNoKCdDOi9BLyoucFknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAo
Jy8vU29tZS9TaGFyZS9CLlB5JykubWF0Y2goJy8vc29tRS9zaGFyRS8qLnBZJykpCisKKyAgICBk
ZWYgdGVzdF9vcmRlcmluZ19jb21tb24oc2VsZik6CisgICAgICAgICMgQ2FzZS1pbnNlbnNpdGl2
aXR5CisgICAgICAgIGRlZiBhc3NlcnRPcmRlcmVkRXF1YWwoYSwgYik6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydExlc3NFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVy
RXF1YWwoYiwgYSkKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdjOkEvYicp
CisgICAgICAgIHEgPSBQKCdDOmEvQicpCisgICAgICAgIGFzc2VydE9yZGVyZWRFcXVhbChwLCBx
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAgPCBxKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHAgPiBxKQorICAgICAgICBwID0gUCgnLy9zb21lL1NoYXJlL0EvYicpCisgICAgICAgIHEg
PSBQKCcvL1NvbWUvU0hBUkUvYS9CJykKKyAgICAgICAgYXNzZXJ0T3JkZXJlZEVxdWFsKHAsIHEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocCA8IHEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocCA+IHEpCisKKyAgICBkZWYgdGVzdF9wYXJ0cyhzZWxmKToKKyAgICAgICAgUCA9IHNlbGYu
Y2xzCisgICAgICAgIHAgPSBQKCdjOmEvYicpCisgICAgICAgIHBhcnRzID0gcC5wYXJ0cworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzLCAoJ2M6JywgJ2EnLCAnYicpKQorICAgICAgICBw
ID0gUCgnYzovYS9iJykKKyAgICAgICAgcGFydHMgPSBwLnBhcnRzCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFydHMsICgnYzpcXCcsICdhJywgJ2InKSkKKyAgICAgICAgcCA9IFAoJy8vYS9i
L2MvZCcpCisgICAgICAgIHBhcnRzID0gcC5wYXJ0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhcnRzLCAoJ1xcXFxhXFxiXFwnLCAnYycsICdkJykpCisKKyAgICBkZWYgdGVzdF9wYXJlbnQo
c2VsZik6CisgICAgICAgICMgQW5jaG9yZWQKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAg
IHAgPSBQKCd6OmEvYi9jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudCwgUCgn
ejphL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJlbnQsIFAoJ3o6
YScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucGFyZW50LnBhcmVudC5wYXJlbnQsIFAo
J3o6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LnBhcmVudC5w
YXJlbnQsIFAoJ3o6JykpCisgICAgICAgIHAgPSBQKCd6Oi9hL2IvYycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocC5wYXJlbnQsIFAoJ3o6L2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHAucGFyZW50LnBhcmVudCwgUCgnejovYScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHAucGFyZW50LnBhcmVudC5wYXJlbnQsIFAoJ3o6LycpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHAucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LCBQKCd6Oi8nKSkKKyAgICAgICAgcCA9
IFAoJy8vYS9iL2MvZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQsIFAoJy8v
YS9iL2MnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBhcmVudC5wYXJlbnQsIFAoJy8v
YS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wYXJlbnQucGFyZW50LnBhcmVudCwg
UCgnLy9hL2InKSkKKworICAgIGRlZiB0ZXN0X3BhcmVudHMoc2VsZik6CisgICAgICAgICMgQW5j
aG9yZWQKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCd6OmEvYi8nKQorICAg
ICAgICBwYXIgPSBwLnBhcmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyKSwg
MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJbMF0sIFAoJ3o6YScpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhclsxXSwgUCgnejonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHBhciksIFtQKCd6OmEnKSwgUCgnejonKV0pCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBwYXJbMl0KKyAgICAgICAgcCA9IFAo
J3o6L2EvYi8nKQorICAgICAgICBwYXIgPSBwLnBhcmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocGFyKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJbMF0sIFAoJ3o6
L2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJbMV0sIFAoJ3o6LycpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGFyKSwgW1AoJ3o6L2EnKSwgUCgnejovJyldKQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgcGFy
WzJdCisgICAgICAgIHAgPSBQKCcvL2EvYi9jL2QnKQorICAgICAgICBwYXIgPSBwLnBhcmVudHMK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyKSwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXJbMF0sIFAoJy8vYS9iL2MnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJbMV0sIFAoJy8vYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwYXIpLCBb
UCgnLy9hL2IvYycpLCBQKCcvL2EvYicpXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIHBhclsyXQorCisgICAgZGVmIHRlc3RfZHJpdmUo
c2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAo
J2M6JykuZHJpdmUsICdjOicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzphL2InKS5k
cml2ZSwgJ2M6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi8nKS5kcml2ZSwgJ2M6
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2IvJykuZHJpdmUsICdjOicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9hL2InKS5kcml2ZSwgJ1xcXFxhXFxiJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYi8nKS5kcml2ZSwgJ1xcXFxhXFxiJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYi9jL2QnKS5kcml2ZSwgJ1xcXFxhXFxiJykK
KworICAgIGRlZiB0ZXN0X3Jvb3Qoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6Jykucm9vdCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnYzphL2InKS5yb290LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdj
Oi8nKS5yb290LCAnXFwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvYi8nKS5y
b290LCAnXFwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vYS9iJykucm9vdCwgJ1xc
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYi8nKS5yb290LCAnXFwnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vYS9iL2MvZCcpLnJvb3QsICdcXCcpCisKKyAgICBk
ZWYgdGVzdF9hbmNob3Ioc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFAoJ2M6JykuYW5jaG9yLCAnYzonKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFAoJ2M6YS9iJykuYW5jaG9yLCAnYzonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAo
J2M6LycpLmFuY2hvciwgJ2M6XFwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2Ev
Yi8nKS5hbmNob3IsICdjOlxcJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL2EvYicp
LmFuY2hvciwgJ1xcXFxhXFxiXFwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8vYS9i
LycpLmFuY2hvciwgJ1xcXFxhXFxiXFwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJy8v
YS9iL2MvZCcpLmFuY2hvciwgJ1xcXFxhXFxiXFwnKQorCisgICAgZGVmIHRlc3RfbmFtZShzZWxm
KToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzon
KS5uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi8nKS5uYW1lLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLm5hbWUsICdiJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2InKS5uYW1lLCAnYicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnYzphL2IucHknKS5uYW1lLCAnYi5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnYzovYS9iLnB5JykubmFtZSwgJ2IucHknKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFAoJy8vTXkucHkvU2hhcmUucGhwJykubmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUCgnLy9NeS5weS9TaGFyZS5waHAvYS9iJykubmFtZSwgJ2InKQorCisgICAgZGVmIHRl
c3Rfc3VmZml4KHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChQKCdjOicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgn
YzovJykuc3VmZml4LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLnN1
ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS9iJykuc3VmZml4LCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi5weScpLnN1ZmZpeCwgJy5weScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS9iLnB5Jykuc3VmZml4LCAnLnB5JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvLmhncmMnKS5zdWZmaXgsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvLmhncmMnKS5zdWZmaXgsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS8uaGcucmMnKS5zdWZmaXgsICcucmMnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvLmhnLnJjJykuc3VmZml4LCAnLnJjJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi50YXIuZ3onKS5zdWZmaXgsICcuZ3onKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2EvYi50YXIuZ3onKS5zdWZmaXgsICcuZ3onKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9Tb21lIG5hbWUuIEVuZGluZyB3aXRoIGEg
ZG90LicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzovYS9Tb21l
IG5hbWUuIEVuZGluZyB3aXRoIGEgZG90LicpLnN1ZmZpeCwgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnLy9NeS5weS9TaGFyZS5waHAnKS5zdWZmaXgsICcnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFAoJy8vTXkucHkvU2hhcmUucGhwL2EvYicpLnN1ZmZpeCwgJycpCisKKyAg
ICBkZWYgdGVzdF9zdWZmaXhlcyhzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzonKS5zdWZmaXhlcywgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoUCgnYzovJykuc3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2M6YS9iJykuc3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6
L2EvYicpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi5w
eScpLnN1ZmZpeGVzLCBbJy5weSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6L2Ev
Yi5weScpLnN1ZmZpeGVzLCBbJy5weSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6
YS8uaGdyYycpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9h
Ly5oZ3JjJykuc3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS8u
aGcucmMnKS5zdWZmaXhlcywgWycucmMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdj
Oi9hLy5oZy5yYycpLnN1ZmZpeGVzLCBbJy5yYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFAoJ2M6YS9iLnRhci5neicpLnN1ZmZpeGVzLCBbJy50YXInLCAnLmd6J10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoUCgnYzovYS9iLnRhci5neicpLnN1ZmZpeGVzLCBbJy50YXInLCAnLmd6
J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9NeS5weS9TaGFyZS5waHAnKS5zdWZm
aXhlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9NeS5weS9TaGFyZS5waHAv
YS9iJykuc3VmZml4ZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9Tb21l
IG5hbWUuIEVuZGluZyB3aXRoIGEgZG90LicpLnN1ZmZpeGVzLCBbXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQKCdjOi9hL1NvbWUgbmFtZS4gRW5kaW5nIHdpdGggYSBkb3QuJykuc3VmZml4
ZXMsIFtdKQorCisgICAgZGVmIHRlc3Rfc3RlbShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzonKS5zdGVtLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKCdjOi4nKS5zdGVtLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChQKCdjOi4uJykuc3RlbSwgJy4uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi8n
KS5zdGVtLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLnN0ZW0sICdi
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi5weScpLnN0ZW0sICdiJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvLmhncmMnKS5zdGVtLCAnLmhncmMnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS8uaGcucmMnKS5zdGVtLCAnLmhnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOmEvYi50YXIuZ3onKS5zdGVtLCAnYi50YXInKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9Tb21lIG5hbWUuIEVuZGluZyB3aXRoIGEgZG90
LicpLnN0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NvbWUgbmFtZS4gRW5kaW5nIHdp
dGggYSBkb3QuJykKKworICAgIGRlZiB0ZXN0X3dpdGhfbmFtZShzZWxmKToKKyAgICAgICAgUCA9
IHNlbGYuY2xzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnYzphL2InKS53aXRoX25hbWUo
J2QueG1sJyksIFAoJ2M6YS9kLnhtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6
L2EvYicpLndpdGhfbmFtZSgnZC54bWwnKSwgUCgnYzovYS9kLnhtbCcpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgUCgnYzphL0RvdCBlbmRpbmcuJykud2l0aF9uYW1l
KCdkLnhtbCcpLCBQKCdjOmEvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIFAoJ2M6L2EvRG90IGVuZGluZy4nKS53aXRoX25hbWUoJ2QueG1sJyksIFAoJ2M6
L2EvZC54bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYzon
KS53aXRoX25hbWUsICdkLnhtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIFAoJ2M6LycpLndpdGhfbmFtZSwgJ2QueG1sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgUCgnLy9NeS9TaGFyZScpLndpdGhfbmFtZSwgJ2QueG1sJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYzphL2InKS53aXRoX25hbWUsICdk
OicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0
aF9uYW1lLCAnZDplJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgn
YzphL2InKS53aXRoX25hbWUsICdkOi9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgUCgnYzphL2InKS53aXRoX25hbWUsICcvL015L1NoYXJlJykKKworICAgIGRlZiB0
ZXN0X3dpdGhfc3VmZml4KHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChQKCdjOmEvYicpLndpdGhfc3VmZml4KCcuZ3onKSwgUCgnYzphL2IuZ3on
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCdjOi9hL2InKS53aXRoX3N1ZmZpeCgnLmd6
JyksIFAoJ2M6L2EvYi5neicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoJ2M6YS9iLnB5
Jykud2l0aF9zdWZmaXgoJy5neicpLCBQKCdjOmEvYi5neicpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFAoJ2M6L2EvYi5weScpLndpdGhfc3VmZml4KCcuZ3onKSwgUCgnYzovYS9iLmd6Jykp
CisgICAgICAgICMgUGF0aCBkb2Vzbid0IGhhdmUgYSAiZmlsZW5hbWUiIGNvbXBvbmVudAorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCcnKS53aXRoX3N1ZmZpeCwgJy5n
eicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJy4nKS53aXRoX3N1
ZmZpeCwgJy5neicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJy8n
KS53aXRoX3N1ZmZpeCwgJy5neicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIFAoJy8vTXkvU2hhcmUnKS53aXRoX3N1ZmZpeCwgJy5neicpCisgICAgICAgICMgSW52YWxp
ZCBzdWZmaXgKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUCgnYzphL2In
KS53aXRoX3N1ZmZpeCwgJ2d6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgUCgnYzphL2InKS53aXRoX3N1ZmZpeCwgJy8nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3VmZml4LCAnXFwnKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3VmZml4LCAnYzonKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3Vm
Zml4LCAnLy5neicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6
YS9iJykud2l0aF9zdWZmaXgsICdcXC5neicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0aF9zdWZmaXgsICdjOi5neicpCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6YS9iJykud2l0aF9zdWZmaXgsICdjL2QnKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQKCdjOmEvYicpLndpdGhfc3Vm
Zml4LCAnY1xcZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFAoJ2M6
YS9iJykud2l0aF9zdWZmaXgsICcuYy9kJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgUCgnYzphL2InKS53aXRoX3N1ZmZpeCwgJy5jXFxkJykKKworICAgIGRlZiB0ZXN0
X3JlbGF0aXZlX3RvKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAo
J0M6Rm9vL0JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCdj
OicpKSwgUCgnRm9vL0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVf
dG8oJ2M6JyksIFAoJ0Zvby9CYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0
aXZlX3RvKFAoJ2M6Zm9PJykpLCBQKCdCYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
LnJlbGF0aXZlX3RvKCdjOmZvTycpLCBQKCdCYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwLnJlbGF0aXZlX3RvKCdjOmZvTy8nKSwgUCgnQmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocC5yZWxhdGl2ZV90byhQKCdjOmZvTy9iYVInKSksIFAoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCdjOmZvTy9iYVInKSwgUCgpKQorICAgICAgICAjIFVu
cmVsYXRlZCBwYXRocworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJl
bGF0aXZlX3RvLCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAu
cmVsYXRpdmVfdG8sICcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBw
LnJlbGF0aXZlX3RvLCBQKCdkOicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJ0ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcvRm9vJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJ0M6L0ZvbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdDOkZv
by9CYXIvQmF6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVs
YXRpdmVfdG8sIFAoJ0M6Rm9vL0JheicpKQorICAgICAgICBwID0gUCgnQzovRm9vL0JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCdjOicpKSwgUCgnL0Zvby9C
YXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCdjOicpLCBQKCcv
Rm9vL0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlbGF0aXZlX3RvKFAo
J2M6JykpKSwgJ1xcRm9vXFxCYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJl
bGF0aXZlX3RvKCdjOicpKSwgJ1xcRm9vXFxCYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHAucmVsYXRpdmVfdG8oUCgnYzovJykpLCBQKCdGb28vQmFyJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnYzovJyksIFAoJ0Zvby9CYXInKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAoJ2M6L2ZvTycpKSwgUCgnQmFyJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnYzovZm9PJyksIFAoJ0JhcicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oJ2M6L2ZvTy8nKSwgUCgnQmFy
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90byhQKCdjOi9mb08vYmFS
JykpLCBQKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnYzovZm9P
L2JhUicpLCBQKCkpCisgICAgICAgICMgVW5yZWxhdGVkIHBhdGhzCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJ0M6L0JheicpKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCdDOi9Gb28v
QmFyL0JheicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0
aXZlX3RvLCBQKCdDOi9Gb28vQmF6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJ0M6Rm9vJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJ2Q6JykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJ2Q6LycpKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcvJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAucmVsYXRpdmVfdG8sIFAoJy9Gb28n
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywg
UCgnLy9DL0ZvbycpKQorICAgICAgICAjIFVOQyBwYXRocworICAgICAgICBwID0gUCgnLy9TZXJ2
ZXIvU2hhcmUvRm9vL0JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90
byhQKCcvL3NFcnZlci9zSGFyZScpKSwgUCgnRm9vL0JhcicpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHAucmVsYXRpdmVfdG8oJy8vc0VydmVyL3NIYXJlJyksIFAoJ0Zvby9CYXInKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKCcvL3NFcnZlci9zSGFyZS8nKSwg
UCgnRm9vL0JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVsYXRpdmVfdG8oUCgn
Ly9zRXJ2ZXIvc0hhcmUvRm9vJykpLCBQKCdCYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwLnJlbGF0aXZlX3RvKCcvL3NFcnZlci9zSGFyZS9Gb28nKSwgUCgnQmFyJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocC5yZWxhdGl2ZV90bygnLy9zRXJ2ZXIvc0hhcmUvRm9vLycpLCBQ
KCdCYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlbGF0aXZlX3RvKFAoJy8vc0Vy
dmVyL3NIYXJlL0Zvby9CYXInKSksIFAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJl
bGF0aXZlX3RvKCcvL3NFcnZlci9zSGFyZS9Gb28vQmFyJyksIFAoKSkKKyAgICAgICAgIyBVbnJl
bGF0ZWQgcGF0aHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5yZWxh
dGl2ZV90bywgUCgnL1NlcnZlci9TaGFyZS9Gb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgcC5yZWxhdGl2ZV90bywgUCgnYzovU2VydmVyL1NoYXJlL0ZvbycpKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLnJlbGF0aXZlX3RvLCBQKCcv
L3ovU2hhcmUvRm9vJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAu
cmVsYXRpdmVfdG8sIFAoJy8vU2VydmVyL3ovRm9vJykpCisKKyAgICBkZWYgdGVzdF9pc19hYnNv
bHV0ZShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgICMgVW5kZXIgTlQsIG9u
bHkgcGF0aHMgd2l0aCBib3RoIGEgZHJpdmUgYW5kIGEgcm9vdCBhcmUgYWJzb2x1dGUKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShQKCkuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShQKCdhJykuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQ
KCdhL2IvJykuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCcvJyku
aXNfYWJzb2x1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQKCcvYScpLmlzX2Fic29s
dXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUCgnL2EvYi8nKS5pc19hYnNvbHV0ZSgp
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAoJ2M6JykuaXNfYWJzb2x1dGUoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShQKCdjOmEnKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKFAoJ2M6YS9iLycpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShQKCdjOi8nKS5pc19hYnNvbHV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
UCgnYzovYScpLmlzX2Fic29sdXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCdjOi9h
L2IvJykuaXNfYWJzb2x1dGUoKSkKKyAgICAgICAgIyBVTkMgcGF0aHMgYXJlIGFic29sdXRlIGJ5
IGRlZmluaXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy8vYS9iJykuaXNfYWJzb2x1
dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy8vYS9iLycpLmlzX2Fic29sdXRlKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQKCcvL2EvYi9jJykuaXNfYWJzb2x1dGUoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKFAoJy8vYS9iL2MvZCcpLmlzX2Fic29sdXRlKCkpCisKKyAg
ICBkZWYgdGVzdF9qb2luKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9
IFAoJ0M6L2EvYicpCisgICAgICAgIHBwID0gcC5qb2lucGF0aCgneC95JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwcCwgUCgnQzovYS9iL3gveScpKQorICAgICAgICBwcCA9IHAuam9pbnBh
dGgoJy94L3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCdDOi94L3knKSkKKyAg
ICAgICAgIyBKb2luaW5nIHdpdGggYSBkaWZmZXJlbnQgZHJpdmUgPT4gdGhlIGZpcnN0IHBhdGgg
aXMgaWdub3JlZCwgZXZlbgorICAgICAgICAjIGlmIHRoZSBzZWNvbmQgcGF0aCBpcyByZWxhdGl2
ZS4KKyAgICAgICAgcHAgPSBwLmpvaW5wYXRoKCdEOngveScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocHAsIFAoJ0Q6eC95JykpCisgICAgICAgIHBwID0gcC5qb2lucGF0aCgnRDoveC95JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcCwgUCgnRDoveC95JykpCisgICAgICAgIHBwID0g
cC5qb2lucGF0aCgnLy9ob3N0L3NoYXJlL3gveScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cHAsIFAoJy8vaG9zdC9zaGFyZS94L3knKSkKKyAgICAgICAgIyBKb2luaW5nIHdpdGggdGhlIHNh
bWUgZHJpdmUgPT4gdGhlIGZpcnN0IHBhdGggaXMgYXBwZW5kZWQgdG8gaWYKKyAgICAgICAgIyB0
aGUgc2Vjb25kIHBhdGggaXMgcmVsYXRpdmUuCisgICAgICAgIHBwID0gcC5qb2lucGF0aCgnYzp4
L3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwLCBQKCdDOi9hL2IveC95JykpCisgICAg
ICAgIHBwID0gcC5qb2lucGF0aCgnYzoveC95JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
cCwgUCgnQzoveC95JykpCisKKyAgICBkZWYgdGVzdF9kaXYoc2VsZik6CisgICAgICAgICMgQmFz
aWNhbGx5IHRoZSBzYW1lIGFzIGpvaW5wYXRoKCkKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAg
ICAgIHAgPSBQKCdDOi9hL2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAgLyAneC95Jywg
UCgnQzovYS9iL3gveScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAgLyAneCcgLyAneScs
IFAoJ0M6L2EvYi94L3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJy94L3knLCBQ
KCdDOi94L3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJy94JyAvICd5JywgUCgn
QzoveC95JykpCisgICAgICAgICMgSm9pbmluZyB3aXRoIGEgZGlmZmVyZW50IGRyaXZlID0+IHRo
ZSBmaXJzdCBwYXRoIGlzIGlnbm9yZWQsIGV2ZW4KKyAgICAgICAgIyBpZiB0aGUgc2Vjb25kIHBh
dGggaXMgcmVsYXRpdmUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCAvICdEOngveScsIFAo
J0Q6eC95JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCAvICdEOicgLyAneC95JywgUCgn
RDp4L3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJ0Q6L3gveScsIFAoJ0Q6L3gv
eScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAgLyAnRDonIC8gJy94L3knLCBQKCdEOi94
L3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwIC8gJy8vaG9zdC9zaGFyZS94L3knLCBQ
KCcvL2hvc3Qvc2hhcmUveC95JykpCisgICAgICAgICMgSm9pbmluZyB3aXRoIHRoZSBzYW1lIGRy
aXZlID0+IHRoZSBmaXJzdCBwYXRoIGlzIGFwcGVuZGVkIHRvIGlmCisgICAgICAgICMgdGhlIHNl
Y29uZCBwYXRoIGlzIHJlbGF0aXZlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAgLyAnYzp4
L3knLCBQKCdDOi9hL2IveC95JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCAvICdjOi94
L3knLCBQKCdDOi94L3knKSkKKworICAgIGRlZiB0ZXN0X2lzX3Jlc2VydmVkKHNlbGYpOgorICAg
ICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnJykuaXNf
cmVzZXJ2ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwgUCgnLycpLmlzX3Jlc2Vy
dmVkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRmFsc2UsIFAoJy9mb28vYmFyJykuaXNfcmVz
ZXJ2ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhUcnVlLCBQKCdjb24nKS5pc19yZXNlcnZl
ZCgpKQorICAgICAgICBzZWxmLmFzc2VydElzKFRydWUsIFAoJ05VTCcpLmlzX3Jlc2VydmVkKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgUCgnTlVMLnR4dCcpLmlzX3Jlc2VydmVkKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgUCgnY29tMScpLmlzX3Jlc2VydmVkKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgUCgnY29tOS5iYXInKS5pc19yZXNlcnZlZCgpKQor
ICAgICAgICBzZWxmLmFzc2VydElzKEZhbHNlLCBQKCdiYXIuY29tOScpLmlzX3Jlc2VydmVkKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgUCgnbHB0MScpLmlzX3Jlc2VydmVkKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgUCgnbHB0OS5iYXInKS5pc19yZXNlcnZlZCgpKQor
ICAgICAgICBzZWxmLmFzc2VydElzKEZhbHNlLCBQKCdiYXIubHB0OScpLmlzX3Jlc2VydmVkKCkp
CisgICAgICAgICMgT25seSB0aGUgbGFzdCBjb21wb25lbnQgbWF0dGVycworICAgICAgICBzZWxm
LmFzc2VydElzKEZhbHNlLCBQKCdjOi9OVUwvY29uL2JheicpLmlzX3Jlc2VydmVkKCkpCisgICAg
ICAgICMgVU5DIHBhdGhzIGFyZSBuZXZlciByZXNlcnZlZAorICAgICAgICBzZWxmLmFzc2VydElz
KEZhbHNlLCBQKCcvL215L3NoYXJlL251bC9jb24vYXV4JykuaXNfcmVzZXJ2ZWQoKSkKKworCitj
bGFzcyBQdXJlUGF0aFRlc3QoX0Jhc2VQdXJlUGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICBjbHMgPSBwYXRobGliLlB1cmVQYXRoCisKKyAgICBkZWYgdGVzdF9jb25jcmV0ZV9jbGFz
cyhzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRJ
cygKKyAgICAgICAgICAgIHR5cGUocCksCisgICAgICAgICAgICBwYXRobGliLlB1cmVXaW5kb3dz
UGF0aAorICAgICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGVsc2UgcGF0aGxpYi5QdXJlUG9z
aXhQYXRoKQorCisgICAgZGVmIHRlc3RfZGlmZmVyZW50X2ZsYXZvdXJzX3VuZXF1YWwoc2VsZik6
CisgICAgICAgIHAgPSBwYXRobGliLlB1cmVQb3NpeFBhdGgoJ2EnKQorICAgICAgICBxID0gcGF0
aGxpYi5QdXJlV2luZG93c1BhdGgoJ2EnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAs
IHEpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCksCisg
ICAgICAgICAgICAgICAgICAgICAnTW9zdCB0eXBlcyBhcmUgb3JkZXJhYmxlIGluIFB5dGhvbiAy
JykKKyAgICBkZWYgdGVzdF9kaWZmZXJlbnRfZmxhdm91cnNfdW5vcmRlcmVkKHNlbGYpOgorICAg
ICAgICBwID0gcGF0aGxpYi5QdXJlUG9zaXhQYXRoKCdhJykKKyAgICAgICAgcSA9IHBhdGhsaWIu
UHVyZVdpbmRvd3NQYXRoKCdhJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBl
RXJyb3IpOgorICAgICAgICAgICAgcCA8IHEKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcCA8PSBxCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHAgPiBxCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHAgPj0gcQorCisKKyMKKyMg
VGVzdHMgZm9yIHRoZSBjb25jcmV0ZSBjbGFzc2VzCisjCisKKyMgTWFrZSBzdXJlIGFueSBzeW1i
b2xpYyBsaW5rcyBpbiB0aGUgYmFzZSB0ZXN0IHBhdGggYXJlIHJlc29sdmVkCitCQVNFID0gb3Mu
cGF0aC5yZWFscGF0aChURVNURk4pCisKKworZGVmIGpvaW4oKngpOgorICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oQkFTRSwgKngpCisKKworZGVmIHJlbF9qb2luKCp4KToKKyAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKFRFU1RGTiwgKngpCisKKworb25seV9udCA9IHVuaXR0ZXN0LnNraXBJZihvcy5u
YW1lICE9ICdudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHJlcXVpcmVzIGEg
V2luZG93cy1jb21wYXRpYmxlIHN5c3RlbScpCitvbmx5X3Bvc2l4ID0gdW5pdHRlc3Quc2tpcElm
KG9zLm5hbWUgPT0gJ250JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgcmVx
dWlyZXMgYSBQT1NJWC1jb21wYXRpYmxlIHN5c3RlbScpCisKKworQG9ubHlfcG9zaXgKK2NsYXNz
IFBvc2l4UGF0aEFzUHVyZVRlc3QoUHVyZVBvc2l4UGF0aFRlc3QpOgorICAgIGNscyA9IHBhdGhs
aWIuUG9zaXhQYXRoCisKKworQG9ubHlfbnQKK2NsYXNzIFdpbmRvd3NQYXRoQXNQdXJlVGVzdChQ
dXJlV2luZG93c1BhdGhUZXN0KToKKyAgICBjbHMgPSBwYXRobGliLldpbmRvd3NQYXRoCisKKyAg
ICBkZWYgdGVzdF9vd25lcihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBQ
KCdjOi8nKS5vd25lcigpCisKKyAgICBkZWYgdGVzdF9ncm91cChzZWxmKToKKyAgICAgICAgUCA9
IHNlbGYuY2xzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRF
cnJvcik6CisgICAgICAgICAgICBQKCdjOi8nKS5ncm91cCgpCisKKworY2xhc3MgX0Jhc2VQYXRo
VGVzdChvYmplY3QpOgorICAgICIiIlRlc3RzIGZvciB0aGUgRlMtYWNjZXNzaW5nIGZ1bmN0aW9u
YWxpdGllcyBvZiB0aGUgUGF0aCBjbGFzc2VzLiIiIgorCisgICAgIyAoQkFTRSkKKyAgICAjICB8
CisgICAgIyAgfC0tIGJyb2tlbkxpbmsgLT4gbm9uLWV4aXN0aW5nCisgICAgIyAgfC0tIGRpckEK
KyAgICAjICB8ICAgYC0tIGxpbmtDIC0+IC4uL2RpckIKKyAgICAjICB8LS0gZGlyQgorICAgICMg
IHwgICB8LS0gZmlsZUIKKyAgICAjICB8ICAgYC0tIGxpbmtEIC0+IC4uL2RpckIKKyAgICAjICB8
LS0gZGlyQworICAgICMgIHwgICB8LS0gZGlyRAorICAgICMgIHwgICB8ICAgYC0tIGZpbGVECisg
ICAgIyAgfCAgIGAtLSBmaWxlQworICAgICMgIHwtLSBkaXJFICAjIE5vIHBlcm1pc3Npb25zCisg
ICAgIyAgfC0tIGZpbGVBCisgICAgIyAgfC0tIGxpbmtBIC0+IGZpbGVBCisgICAgIyAgYC0tIGxp
bmtCIC0+IGRpckIKKyAgICAjCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGRlZiBj
bGVhbnVwKCk6CisgICAgICAgICAgICBvcy5jaG1vZChqb2luKCdkaXJFJyksIDBvNzc3KQorICAg
ICAgICAgICAgc3VwcG9ydC5ybXRyZWUoQkFTRSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNs
ZWFudXApCisgICAgICAgIG9zLm1rZGlyKEJBU0UpCisgICAgICAgIG9zLm1rZGlyKGpvaW4oJ2Rp
ckEnKSkKKyAgICAgICAgb3MubWtkaXIoam9pbignZGlyQicpKQorICAgICAgICBvcy5ta2Rpcihq
b2luKCdkaXJDJykpCisgICAgICAgIG9zLm1rZGlyKGpvaW4oJ2RpckMnLCAnZGlyRCcpKQorICAg
ICAgICBvcy5ta2Rpcihqb2luKCdkaXJFJykpCisgICAgICAgIHdpdGggb3Blbihqb2luKCdmaWxl
QScpLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiInRoaXMgaXMgZmlsZSBBXG4i
KQorICAgICAgICB3aXRoIG9wZW4oam9pbignZGlyQicsICdmaWxlQicpLCAnd2InKSBhcyBmOgor
ICAgICAgICAgICAgZi53cml0ZShiInRoaXMgaXMgZmlsZSBCXG4iKQorICAgICAgICB3aXRoIG9w
ZW4oam9pbignZGlyQycsICdmaWxlQycpLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0
ZShiInRoaXMgaXMgZmlsZSBDXG4iKQorICAgICAgICB3aXRoIG9wZW4oam9pbignZGlyQycsICdk
aXJEJywgJ2ZpbGVEJyksICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIidGhpcyBp
cyBmaWxlIERcbiIpCisgICAgICAgIG9zLmNobW9kKGpvaW4oJ2RpckUnKSwgMCkKKyAgICAgICAg
aWYgc3VwcG9ydF9jYW5fc3ltbGluaygpOgorICAgICAgICAgICAgIyBSZWxhdGl2ZSBzeW1saW5r
cworICAgICAgICAgICAgb3Muc3ltbGluaygnZmlsZUEnLCBqb2luKCdsaW5rQScpKQorICAgICAg
ICAgICAgb3Muc3ltbGluaygnbm9uLWV4aXN0aW5nJywgam9pbignYnJva2VuTGluaycpKQorICAg
ICAgICAgICAgc2VsZi5kaXJsaW5rKCdkaXJCJywgam9pbignbGlua0InKSkKKyAgICAgICAgICAg
IHNlbGYuZGlybGluayhvcy5wYXRoLmpvaW4oJy4uJywgJ2RpckInKSwgam9pbignZGlyQScsICds
aW5rQycpKQorICAgICAgICAgICAgIyBUaGlzIG9uZSBnb2VzIHVwd2FyZHMsIGNyZWF0aW5nIGEg
bG9vcAorICAgICAgICAgICAgc2VsZi5kaXJsaW5rKG9zLnBhdGguam9pbignLi4nLCAnZGlyQicp
LCBqb2luKCdkaXJCJywgJ2xpbmtEJykpCisKKyAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAg
ICAgICMgV29ya2Fyb3VuZCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNzcyCisg
ICAgICAgIGRlZiBkaXJsaW5rKHNlbGYsIHNyYywgZGVzdCk6CisgICAgICAgICAgICBvcy5zeW1s
aW5rKHNyYywgZGVzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1UcnVlKQorICAgIGVsc2U6CisgICAg
ICAgIGRlZiBkaXJsaW5rKHNlbGYsIHNyYywgZGVzdCk6CisgICAgICAgICAgICBvcy5zeW1saW5r
KHNyYywgZGVzdCkKKworICAgIGRlZiBhc3NlcnRTYW1lKHNlbGYsIHBhdGhfYSwgcGF0aF9iKToK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc3RyKHBhdGhfYSksIHN0
cihwYXRoX2IpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlciBhbmQgJXIgZG9uJ3QgcG9p
bnQgdG8gdGhlIHNhbWUgZmlsZSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGhfYSwg
cGF0aF9iKSkKKworICAgIGRlZiBhc3NlcnRGaWxlTm90Rm91bmQoc2VsZiwgZnVuYywgKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMyk6CisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yKSBhcyBjbToK
KyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAg
ICAgICAgICAgIyBQeXRob24gMi42IGtsdWRnZSBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9p
c3N1ZTc4NTMKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMo
KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGV4Y2VwdDogICMgbm9xYTogRTcyMgor
ICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKKworICAgIGRlZiBhc3NlcnRGaWxlRXhp
c3RzKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIHN5cy52ZXJzaW9u
X2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxl
RXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdz
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vy
cm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAjIFB5dGhvbiAyLjYga2x1ZGdlIGZvciBodHRw
Oi8vYnVncy5weXRob24ub3JnL2lzc3VlNzg1MworICAgICAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgZXhj
ZXB0OiAgIyBub3FhOiBFNzIyCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCisg
ICAgZGVmIF90ZXN0X2N3ZChzZWxmLCBwKToKKyAgICAgICAgcSA9IHNlbGYuY2xzKG9zLmdldGN3
ZCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHEpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyKHApLCBzdHIocSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShwKSwgdHlw
ZShxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuaXNfYWJzb2x1dGUoKSkKKworICAgIGRl
ZiB0ZXN0X2N3ZChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzLmN3ZCgpCisgICAgICAgIHNl
bGYuX3Rlc3RfY3dkKHApCisKKyAgICBkZWYgX3Rlc3RfaG9tZShzZWxmLCBwKToKKyAgICAgICAg
cSA9IHNlbGYuY2xzKG9zLnBhdGguZXhwYW5kdXNlcignficpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHAsIHEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCBzdHIocSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShwKSwgdHlwZShxKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHAuaXNfYWJzb2x1dGUoKSkKKworICAgIGRlZiB0ZXN0X2hvbWUoc2VsZik6CisgICAg
ICAgIHAgPSBzZWxmLmNscy5ob21lKCkKKyAgICAgICAgc2VsZi5fdGVzdF9ob21lKHApCisKKyAg
ICBkZWYgdGVzdF9zYW1lZmlsZShzZWxmKToKKyAgICAgICAgZmlsZUFfcGF0aCA9IG9zLnBhdGgu
am9pbihCQVNFLCAnZmlsZUEnKQorICAgICAgICBmaWxlQl9wYXRoID0gb3MucGF0aC5qb2luKEJB
U0UsICdkaXJCJywgJ2ZpbGVCJykKKyAgICAgICAgcCA9IHNlbGYuY2xzKGZpbGVBX3BhdGgpCisg
ICAgICAgIHBwID0gc2VsZi5jbHMoZmlsZUFfcGF0aCkKKyAgICAgICAgcSA9IHNlbGYuY2xzKGZp
bGVCX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLnNhbWVmaWxlKGZpbGVBX3BhdGgp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5zYW1lZmlsZShwcCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocC5zYW1lZmlsZShmaWxlQl9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwLnNhbWVmaWxlKHEpKQorICAgICAgICAjIFRlc3QgdGhlIG5vbi1leGlzdGVudCBmaWxl
IGNhc2UKKyAgICAgICAgbm9uX2V4aXN0ZW50ID0gb3MucGF0aC5qb2luKEJBU0UsICdmb28nKQor
ICAgICAgICByID0gc2VsZi5jbHMobm9uX2V4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydEZp
bGVOb3RGb3VuZChwLnNhbWVmaWxlLCByKQorICAgICAgICBzZWxmLmFzc2VydEZpbGVOb3RGb3Vu
ZChwLnNhbWVmaWxlLCBub25fZXhpc3RlbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZv
dW5kKHIuc2FtZWZpbGUsIHApCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZvdW5kKHIuc2Ft
ZWZpbGUsIG5vbl9leGlzdGVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91bmQoci5z
YW1lZmlsZSwgcikKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91bmQoci5zYW1lZmlsZSwg
bm9uX2V4aXN0ZW50KQorCisgICAgZGVmIHRlc3RfZW1wdHlfcGF0aChzZWxmKToKKyAgICAgICAg
IyBUaGUgZW1wdHkgcGF0aCBwb2ludHMgdG8gJy4nCisgICAgICAgIHAgPSBzZWxmLmNscygnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKSwgb3Muc3RhdCgnLicpKQorCisgICAg
ZGVmIHRlc3RfZXhwYW5kdXNlcl9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscwor
ICAgICAgICBwID0gUCgnficpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2Vy
KCksIFAob3MucGF0aC5leHBhbmR1c2VyKCd+JykpKQorICAgICAgICBwID0gUCgnZm9vJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAgICAgcCA9IFAo
Jy9+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAg
ICAgcCA9IFAoJy4uL34nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigp
LCBwKQorICAgICAgICBwID0gUChQKCcnKS5hYnNvbHV0ZSgpLmFuY2hvcikgLyAnficKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKworICAgIGRlZiB0ZXN0X2V4
aXN0cyhzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKEJBU0UpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXMoVHJ1ZSwgcC5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJcyhUcnVlLCAocCAvICdkaXJBJykuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMo
VHJ1ZSwgKHAgLyAnZmlsZUEnKS5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxz
ZSwgKHAgLyAnZmlsZUEnIC8gJ2JhaCcpLmV4aXN0cygpKQorICAgICAgICBpZiBzdXBwb3J0X2Nh
bl9zeW1saW5rKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFRydWUsIChwIC8gJ2xpbmtB
JykuZXhpc3RzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFRydWUsIChwIC8gJ2xpbmtC
JykuZXhpc3RzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFRydWUsIChwIC8gJ2xpbmtC
JyAvICdmaWxlQicpLmV4aXN0cygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwg
KHAgLyAnbGlua0EnIC8gJ2JhaCcpLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydElzKEZh
bHNlLCAocCAvICdmb28nKS5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGYWxzZSwg
UCgnL3h5enp5JykuZXhpc3RzKCkpCisKKyAgICBkZWYgdGVzdF9vcGVuX2NvbW1vbihzZWxmKToK
KyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIHdpdGggKHAgLyAnZmlsZUEnKS5v
cGVuKCdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLCBpby5U
ZXh0SU9CYXNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgInRoaXMg
aXMgZmlsZSBBXG4iKQorICAgICAgICB3aXRoIChwIC8gJ2ZpbGVBJykub3BlbigncmInKSBhcyBm
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYsIGlvLkJ1ZmZlcmVkSU9CYXNl
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKS5zdHJpcCgpLCBiInRoaXMg
aXMgZmlsZSBBIikKKyAgICAgICAgd2l0aCAocCAvICdmaWxlQScpLm9wZW4oJ3JiJywgYnVmZmVy
aW5nPTApIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZiwgaW8uUmF3
SU9CYXNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKS5zdHJpcCgpLCBi
InRoaXMgaXMgZmlsZSBBIikKKworICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfYnl0ZXMoc2VsZik6
CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICAocCAvICdmaWxlQScpLndyaXRl
X2J5dGVzKGInYWJjZGVmZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEn
KS5yZWFkX2J5dGVzKCksIGInYWJjZGVmZycpCisgICAgICAgICMgY2hlY2sgdGhhdCB0cnlpbmcg
dG8gd3JpdGUgc3RyIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIChwIC8gJ2ZpbGVB
Jykud3JpdGVfYnl0ZXMoc2l4LnUoJ3NvbWVzdHInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHN0cihjbS5leGNlcHRpb24pLnN0YXJ0c3dpdGgoJ2RhdGEgbXVzdCBiZScpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF9ieXRlcygpLCBiJ2FiY2RlZmcnKQor
CisgICAgZGVmIHRlc3RfcmVhZF93cml0ZV90ZXh0KHNlbGYpOgorICAgICAgICBwID0gc2VsZi5j
bHMoQkFTRSkKKyAgICAgICAgKHAgLyAnZmlsZUEnKS53cml0ZV90ZXh0KHNpeC51KCdcdTAwZTRi
Y2RlZmcnKSwgZW5jb2Rpbmc9J2xhdGluLTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChw
IC8gJ2ZpbGVBJykucmVhZF90ZXh0KAorICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywgZXJy
b3JzPSdpZ25vcmUnKSwgc2l4LnUoJ2JjZGVmZycpKQorICAgICAgICAjIGNoZWNrIHRoYXQgdHJ5
aW5nIHRvIHdyaXRlIGJ5dGVzIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIChwIC8g
J2ZpbGVBJykud3JpdGVfdGV4dChiJ3NvbWVieXRlcycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShzdHIoY20uZXhjZXB0aW9uKS5zdGFydHN3aXRoKCdkYXRhIG11c3QgYmUnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRfdGV4dChlbmNvZGluZz0nbGF0aW4t
MScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpeC51KCdcdTAwZTRiY2RlZmcnKSkKKwor
ICAgIGRlZiB0ZXN0X2l0ZXJkaXIoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAg
ICBwID0gUChCQVNFKQorICAgICAgICBpdCA9IHAuaXRlcmRpcigpCisgICAgICAgIHBhdGhzID0g
c2V0KGl0KQorICAgICAgICBleHBlY3RlZCA9IFsnZGlyQScsICdkaXJCJywgJ2RpckMnLCAnZGly
RScsICdmaWxlQSddCisgICAgICAgIGlmIHN1cHBvcnRfY2FuX3N5bWxpbmsoKToKKyAgICAgICAg
ICAgIGV4cGVjdGVkICs9IFsnbGlua0EnLCAnbGlua0InLCAnYnJva2VuTGluayddCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGF0aHMsIHNldChQKEJBU0UsIHEpIGZvciBxIGluIGV4cGVjdGVk
KSkKKworICAgIEBzdXBwb3J0X3NraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9pdGVy
ZGlyX3N5bWxpbmsoc2VsZik6CisgICAgICAgICMgX19pdGVyX18gb24gYSBzeW1saW5rIHRvIGEg
ZGlyZWN0b3J5CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUChCQVNFLCAnbGlu
a0InKQorICAgICAgICBwYXRocyA9IHNldChwLml0ZXJkaXIoKSkKKyAgICAgICAgZXhwZWN0ZWQg
PSBzZXQoUChCQVNFLCAnbGlua0InLCBxKSBmb3IgcSBpbiBbJ2ZpbGVCJywgJ2xpbmtEJ10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aHMsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rf
aXRlcmRpcl9ub2RpcihzZWxmKToKKyAgICAgICAgIyBfX2l0ZXJfXyBvbiBzb21ldGhpbmcgdGhh
dCBpcyBub3QgYSBkaXJlY3RvcnkKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdmaWxlQScp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAg
ICAgICAjIFB5dGhvbiAyLjYga2x1ZGdlIGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3Vl
Nzg1MworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5leHQocC5pdGVyZGlyKCkp
CisgICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWE6IEU3MjJzCisgICAgICAgICAgICAgICAgcmFp
c2UKKyAgICAgICAgIyBFTk9FTlQgb3IgRUlOVkFMIHVuZGVyIFdpbmRvd3MsIEVOT1RESVIgb3Ro
ZXJ3aXNlCisgICAgICAgICMgKHNlZSBpc3N1ZSAjMTI4MDIpCisgICAgICAgIHNlbGYuYXNzZXJ0
SW4oY20uZXhjZXB0aW9uLmVycm5vLCAoZXJybm8uRU5PVERJUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJuby5FTk9FTlQsIGVycm5vLkVJTlZBTCkpCisK
KyAgICBkZWYgdGVzdF9nbG9iX2NvbW1vbihzZWxmKToKKyAgICAgICAgZGVmIF9jaGVjayhnbG9i
LCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChnbG9iKSwgc2V0
KFAoQkFTRSwgcSkgZm9yIHEgaW4gZXhwZWN0ZWQpKQorICAgICAgICBQID0gc2VsZi5jbHMKKyAg
ICAgICAgcCA9IFAoQkFTRSkKKyAgICAgICAgaXQgPSBwLmdsb2IoImZpbGVBIikKKyAgICAgICAg
c2VsZi5hc3NlcnRJc0luc3RhbmNlKGl0LCBjb2xsZWN0aW9uc19hYmMuSXRlcmF0b3IpCisgICAg
ICAgIF9jaGVjayhpdCwgWyJmaWxlQSJdKQorICAgICAgICBfY2hlY2socC5nbG9iKCJmaWxlQiIp
LCBbXSkKKyAgICAgICAgX2NoZWNrKHAuZ2xvYigiZGlyKi9maWxlKiIpLCBbImRpckIvZmlsZUIi
LCAiZGlyQy9maWxlQyJdKQorICAgICAgICBpZiBub3Qgc3VwcG9ydF9jYW5fc3ltbGluaygpOgor
ICAgICAgICAgICAgX2NoZWNrKHAuZ2xvYigiKkEiKSwgWydkaXJBJywgJ2ZpbGVBJ10pCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBfY2hlY2socC5nbG9iKCIqQSIpLCBbJ2RpckEnLCAnZmls
ZUEnLCAnbGlua0EnXSkKKyAgICAgICAgaWYgbm90IHN1cHBvcnRfY2FuX3N5bWxpbmsoKToKKyAg
ICAgICAgICAgIF9jaGVjayhwLmdsb2IoIipCLyoiKSwgWydkaXJCL2ZpbGVCJ10pCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBfY2hlY2socC5nbG9iKCIqQi8qIiksIFsnZGlyQi9maWxlQics
ICdkaXJCL2xpbmtEJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5r
Qi9maWxlQicsICdsaW5rQi9saW5rRCddKQorICAgICAgICBpZiBub3Qgc3VwcG9ydF9jYW5fc3lt
bGluaygpOgorICAgICAgICAgICAgX2NoZWNrKHAuZ2xvYigiKi9maWxlQiIpLCBbJ2RpckIvZmls
ZUInXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9jaGVjayhwLmdsb2IoIiovZmlsZUIi
KSwgWydkaXJCL2ZpbGVCJywgJ2xpbmtCL2ZpbGVCJ10pCisKKyAgICBkZWYgdGVzdF9yZ2xvYl9j
b21tb24oc2VsZik6CisgICAgICAgIGRlZiBfY2hlY2soZ2xvYiwgZXhwZWN0ZWQpOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZ2xvYiksIHNldChQKEJBU0UsIHEpIGZvciBxIGlu
IGV4cGVjdGVkKSkKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKEJBU0UpCisg
ICAgICAgIGl0ID0gcC5yZ2xvYigiZmlsZUEiKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFu
Y2UoaXQsIGNvbGxlY3Rpb25zX2FiYy5JdGVyYXRvcikKKyAgICAgICAgX2NoZWNrKGl0LCBbImZp
bGVBIl0pCisgICAgICAgIF9jaGVjayhwLnJnbG9iKCJmaWxlQiIpLCBbImRpckIvZmlsZUIiXSkK
KyAgICAgICAgX2NoZWNrKHAucmdsb2IoIiovZmlsZUEiKSwgW10pCisgICAgICAgIGlmIG5vdCBz
dXBwb3J0X2Nhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBfY2hlY2socC5yZ2xvYigiKi9maWxl
QiIpLCBbImRpckIvZmlsZUIiXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9jaGVjayhw
LnJnbG9iKCIqL2ZpbGVCIiksIFsiZGlyQi9maWxlQiIsICJkaXJCL2xpbmtEL2ZpbGVCIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlua0IvZmlsZUIiLCAiZGly
QS9saW5rQy9maWxlQiJdKQorICAgICAgICBfY2hlY2socC5yZ2xvYigiZmlsZSoiKSwgWyJmaWxl
QSIsICJkaXJCL2ZpbGVCIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGly
Qy9maWxlQyIsICJkaXJDL2RpckQvZmlsZUQiXSkKKyAgICAgICAgcCA9IFAoQkFTRSwgImRpckMi
KQorICAgICAgICBfY2hlY2socC5yZ2xvYigiZmlsZSoiKSwgWyJkaXJDL2ZpbGVDIiwgImRpckMv
ZGlyRC9maWxlRCJdKQorICAgICAgICBfY2hlY2socC5yZ2xvYigiKi8qIiksIFsiZGlyQy9kaXJE
L2ZpbGVEIl0pCisKKyAgICBAc3VwcG9ydF9za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRl
c3Rfcmdsb2Jfc3ltbGlua19sb29wKHNlbGYpOgorICAgICAgICAjIERvbid0IGdldCBmb29sZWQg
Ynkgc3ltbGluayBsb29wcyAoSXNzdWUgIzI2MDEyKQorICAgICAgICBQID0gc2VsZi5jbHMKKyAg
ICAgICAgcCA9IFAoQkFTRSkKKyAgICAgICAgZ2l2ZW4gPSBzZXQocC5yZ2xvYignKicpKQorICAg
ICAgICBleHBlY3QgPSBzZXQoWworICAgICAgICAgICAgICAgICAgJ2Jyb2tlbkxpbmsnLAorICAg
ICAgICAgICAgICAgICAgJ2RpckEnLCAnZGlyQS9saW5rQycsCisgICAgICAgICAgICAgICAgICAn
ZGlyQicsICdkaXJCL2ZpbGVCJywgJ2RpckIvbGlua0QnLAorICAgICAgICAgICAgICAgICAgJ2Rp
ckMnLCAnZGlyQy9kaXJEJywgJ2RpckMvZGlyRC9maWxlRCcsICdkaXJDL2ZpbGVDJywKKyAgICAg
ICAgICAgICAgICAgICdkaXJFJywKKyAgICAgICAgICAgICAgICAgICdmaWxlQScsCisgICAgICAg
ICAgICAgICAgICAnbGlua0EnLAorICAgICAgICAgICAgICAgICAgJ2xpbmtCJywKKyAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2l2ZW4sIHNldChbcCAvIHgg
Zm9yIHggaW4gZXhwZWN0XSkpCisKKyAgICBkZWYgdGVzdF9nbG9iX2RvdGRvdChzZWxmKToKKyAg
ICAgICAgIyAiLi4iIGlzIG5vdCBzcGVjaWFsIGluIGdsb2JzCisgICAgICAgIFAgPSBzZWxmLmNs
cworICAgICAgICBwID0gUChCQVNFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmds
b2IoIi4uIikpLCBzZXQoW1AoQkFTRSwgIi4uIildKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXQocC5nbG9iKCJkaXJBLy4uL2ZpbGUqIikpLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHNldChbUChCQVNFLCAiZGlyQS8uLi9maWxlQSIpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2V0KHAuZ2xvYigiLi4veHl6enkiKSksIHNldCgpKQorCisgICAgZGVmIF9jaGVja19yZXNv
bHZlKHNlbGYsIHAsIGV4cGVjdGVkLCBzdHJpY3Q9VHJ1ZSk6CisgICAgICAgIHEgPSBwLnJlc29s
dmUoc3RyaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIGV4cGVjdGVkKQorCisgICAg
IyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGJvdGggcmVsYXRpdmUgYW5kIGFic29sdXRlIHJl
c29sdXRpb25zCisgICAgX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUgPSBfY2hlY2tfcmVzb2x2ZV9h
YnNvbHV0ZSA9IF9jaGVja19yZXNvbHZlCisKKyAgICBAc3VwcG9ydF9za2lwX3VubGVzc19zeW1s
aW5rCisgICAgZGVmIHRlc3RfcmVzb2x2ZV9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxm
LmNscworICAgICAgICBwID0gUChCQVNFLCAnZm9vJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAucmVzb2x2ZShzdHJpY3Q9VHJ1
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVO
T0VOVCkKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KHAucmVzb2x2ZShzdHJpY3Q9RmFsc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5w
YXRoLmpvaW4oQkFTRSwgJ2ZvbycpKQorICAgICAgICBwID0gUChCQVNFLCAnZm9vJywgJ2luJywg
J3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlc29sdmUoc3RyaWN0PUZh
bHNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKEJBU0UsICdmb28n
LCAnaW4nLCAnc3BhbScpKQorICAgICAgICBwID0gUChCQVNFLCAnLi4nLCAnZm9vJywgJ2luJywg
J3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlc29sdmUoc3RyaWN0PUZh
bHNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
am9pbignZm9vJywgJ2luJywgJ3NwYW0nKSkpCisgICAgICAgICMgVGhlc2UgYXJlIGFsbCByZWxh
dGl2ZSBzeW1saW5rcworICAgICAgICBwID0gUChCQVNFLCAnZGlyQicsICdmaWxlQicpCisgICAg
ICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgcCkKKyAgICAgICAgcCA9IFAoQkFT
RSwgJ2xpbmtBJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJB
U0UsICdmaWxlQScpKQorICAgICAgICBwID0gUChCQVNFLCAnZGlyQScsICdsaW5rQycsICdmaWxl
QicpCisgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZGly
QicsICdmaWxlQicpKQorICAgICAgICBwID0gUChCQVNFLCAnZGlyQicsICdsaW5rRCcsICdmaWxl
QicpCisgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChCQVNFLCAnZGly
QicsICdmaWxlQicpKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgcCA9IFAoQkFTRSwg
J2RpckEnLCAnbGlua0MnLCAnZmlsZUInLCAnZm9vJywgJ2luJywgJ3NwYW0nKQorICAgICAgICBz
ZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInLCAn
Zm9vJywgJ2luJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz
cGFtJyksIEZhbHNlKQorICAgICAgICBwID0gUChCQVNFLCAnZGlyQScsICdsaW5rQycsICcuLics
ICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAg
ICAgICAgICMgSW4gV2luZG93cywgaWYgbGlua1kgcG9pbnRzIHRvIGRpckIsICdkaXJBXGxpbmtZ
XC4uJworICAgICAgICAgICAgIyByZXNvbHZlcyB0byAnZGlyQScgd2l0aG91dCByZXNvbHZpbmcg
bGlua1kgZmlyc3QuCisgICAgICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAs
IFAoQkFTRSwgJ2RpckEnLCAnZm9vJywgJ2luJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3BhbScpLCBGYWxzZSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICMgSW4gUG9zaXgsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQS9saW5rWS8u
LicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckIvLi4nIGZpcnN0IGJlZm9yZSByZXNv
bHZpbmcgdG8gcGFyZW50IG9mIGRpckIuCisgICAgICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZl
X3JlbGF0aXZlKAorICAgICAgICAgICAgICAgIHAsIFAoQkFTRSwgJ2ZvbycsICdpbicsICdzcGFt
JyksIEZhbHNlKQorICAgICAgICAjIE5vdyBjcmVhdGUgYWJzb2x1dGUgc3ltbGlua3MKKyAgICAg
ICAgZCA9IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PSctZGlyRCcpCisgICAgICAgIHNlbGYuYWRk
Q2xlYW51cChzdXBwb3J0LnJtdHJlZSwgZCkKKyAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmpv
aW4oZCksIGpvaW4oJ2RpckEnLCAnbGlua1gnKSkKKyAgICAgICAgb3Muc3ltbGluayhqb2luKCdk
aXJCJyksIG9zLnBhdGguam9pbihkLCAnbGlua1knKSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2Rp
ckEnLCAnbGlua1gnLCAnbGlua1knLCAnZmlsZUInKQorICAgICAgICBzZWxmLl9jaGVja19yZXNv
bHZlX2Fic29sdXRlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAgICAgICAgIyBOb24t
c3RyaWN0CisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtYJywgJ2xpbmtZJywgJ2Zv
bycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShw
LCBQKEJBU0UsICdkaXJCJywgJ2ZvbycsICdpbicsICdzcGFtJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywg
J2xpbmtYJywgJ2xpbmtZJywgJy4uJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgaWYg
b3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgIyBJbiBXaW5kb3dzLCBpZiBsaW5rWSBwb2lu
dHMgdG8gZGlyQiwgJ2RpckFcbGlua1lcLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdk
aXJBJyB3aXRob3V0IHJlc29sdmluZyBsaW5rWSBmaXJzdC4KKyAgICAgICAgICAgIHNlbGYuX2No
ZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgUChkLCAnZm9vJywgJ2luJywgJ3NwYW0nKSwgRmFsc2Up
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEluIFBvc2l4LCBpZiBsaW5rWSBwb2ludHMg
dG8gZGlyQiwgJ2RpckEvbGlua1kvLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdkaXJC
Ly4uJyBmaXJzdCBiZWZvcmUgcmVzb2x2aW5nIHRvIHBhcmVudCBvZiBkaXJCLgorICAgICAgICAg
ICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZSgKKyAgICAgICAgICAgICAgICBwLCBQKEJB
U0UsICdmb28nLCAnaW4nLCAnc3BhbScpLCBGYWxzZSkKKworICAgIEBzdXBwb3J0X3NraXBfdW5s
ZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9yZXNvbHZlX2RvdChzZWxmKToKKyAgICAgICAgIyBT
ZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3VlLzkvCisgICAgICAg
ICMgcGF0aHJlc29sdmUtZmFpbHMtb24tY29tcGxleC1zeW1saW5rcworICAgICAgICBwID0gc2Vs
Zi5jbHMoQkFTRSkKKyAgICAgICAgc2VsZi5kaXJsaW5rKCcuJywgam9pbignMCcpKQorICAgICAg
ICBzZWxmLmRpcmxpbmsob3MucGF0aC5qb2luKCcwJywgJzAnKSwgam9pbignMScpKQorICAgICAg
ICBzZWxmLmRpcmxpbmsob3MucGF0aC5qb2luKCcxJywgJzEnKSwgam9pbignMicpKQorICAgICAg
ICBxID0gcCAvICcyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEucmVzb2x2ZShzdHJpY3Q9
VHJ1ZSksIHApCisgICAgICAgIHIgPSBxIC8gJzMnIC8gJzQnCisgICAgICAgIHNlbGYuYXNzZXJ0
RmlsZU5vdEZvdW5kKHIucmVzb2x2ZSwgc3RyaWN0PVRydWUpCisgICAgICAgICMgTm9uLXN0cmlj
dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucmVzb2x2ZShzdHJpY3Q9RmFsc2UpLCBwIC8g
JzMnIC8gJzQnKQorCisgICAgZGVmIHRlc3Rfd2l0aChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYu
Y2xzKEJBU0UpCisgICAgICAgIGl0ID0gcC5pdGVyZGlyKCkKKyAgICAgICAgaXQyID0gcC5pdGVy
ZGlyKCkKKyAgICAgICAgbmV4dChpdDIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHBh
c3MKKyAgICAgICAgIyBJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBwYXRoCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIGl0KQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBpdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIHAub3BlbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
cC5yZXNvbHZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLmFic29s
dXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwLl9fZW50ZXJfXykK
KworICAgIGRlZiB0ZXN0X2NobW9kKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkg
LyAnZmlsZUEnCisgICAgICAgIG1vZGUgPSBwLnN0YXQoKS5zdF9tb2RlCisgICAgICAgICMgQ2xl
YXIgd3JpdGFibGUgYml0CisgICAgICAgIG5ld19tb2RlID0gbW9kZSAmIH4wbzIyMgorICAgICAg
ICBwLmNobW9kKG5ld19tb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RhdCgpLnN0
X21vZGUsIG5ld19tb2RlKQorICAgICAgICAjIFNldCB3cml0YWJsZSBiaXQKKyAgICAgICAgbmV3
X21vZGUgPSBtb2RlIHwgMG8yMjIKKyAgICAgICAgcC5jaG1vZChuZXdfbW9kZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKS5zdF9tb2RlLCBuZXdfbW9kZSkKKworICAgICMgWFhY
IGFsc28gbmVlZCBhIHRlc3QgZm9yIGxjaG1vZAorCisgICAgZGVmIHRlc3Rfc3RhdChzZWxmKToK
KyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpIC8gJ2ZpbGVBJworICAgICAgICBzdCA9IHAuc3Rh
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCksIHN0KQorICAgICAgICAjIENo
YW5nZSBmaWxlIG1vZGUgYnkgZmxpcHBpbmcgd3JpdGUgYml0CisgICAgICAgIHAuY2htb2Qoc3Qu
c3RfbW9kZSBeIDBvMjIyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5jaG1vZCwgc3Quc3Rf
bW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwLnN0YXQoKSwgc3QpCisKKyAgICBA
c3VwcG9ydF9za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfbHN0YXQoc2VsZik6Cisg
ICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKSAvICdsaW5rQScKKyAgICAgICAgc3QgPSBwLnN0YXQo
KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0LCBwLmxzdGF0KCkpCisKKyAgICBkZWYg
dGVzdF9sc3RhdF9ub3N5bWxpbmsoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKSAv
ICdmaWxlQScKKyAgICAgICAgc3QgPSBwLnN0YXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0LCBwLmxzdGF0KCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhwd2QsICJ0aGUgcHdk
IG1vZHVsZSBpcyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgZGVmIHRlc3Rfb3duZXIoc2Vs
Zik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKSAvICdmaWxlQScKKyAgICAgICAgdWlkID0g
cC5zdGF0KCkuc3RfdWlkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUgPSBwd2QuZ2V0
cHd1aWQodWlkKS5wd19uYW1lCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAg
IHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgInVzZXIgJWQgZG9lc24ndCBoYXZlIGFu
IGVudHJ5IGluIHRoZSBzeXN0ZW0gZGF0YWJhc2UiICUgdWlkKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG5hbWUsIHAub3duZXIoKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGdycCwg
InRoZSBncnAgbW9kdWxlIGlzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICBkZWYgdGVzdF9n
cm91cChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpIC8gJ2ZpbGVBJworICAgICAg
ICBnaWQgPSBwLnN0YXQoKS5zdF9naWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZSA9
IGdycC5nZXRncmdpZChnaWQpLmdyX25hbWUKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAg
ICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZ3JvdXAgJWQgZG9lc24n
dCBoYXZlIGFuIGVudHJ5IGluIHRoZSBzeXN0ZW0gZGF0YWJhc2UiICUgZ2lkKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5hbWUsIHAuZ3JvdXAoKSkKKworICAgIGRlZiB0ZXN0X3VubGluayhz
ZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpIC8gJ2ZpbGVBJworICAgICAgICBwLnVu
bGluaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZU5vdEZvdW5kKHAuc3RhdCkKKyAgICAgICAg
c2VsZi5hc3NlcnRGaWxlTm90Rm91bmQocC51bmxpbmspCisKKyAgICBkZWYgdGVzdF9ybWRpcihz
ZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpIC8gJ2RpckEnCisgICAgICAgIGZvciBx
IGluIHAuaXRlcmRpcigpOgorICAgICAgICAgICAgcS51bmxpbmsoKQorICAgICAgICBwLnJtZGly
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91bmQocC5zdGF0KQorICAgICAgICBzZWxm
LmFzc2VydEZpbGVOb3RGb3VuZChwLnVubGluaykKKworICAgIGRlZiB0ZXN0X3JlbmFtZShzZWxm
KToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIHAgPSBQIC8gJ2ZpbGVBJwor
ICAgICAgICBzaXplID0gcC5zdGF0KCkuc3Rfc2l6ZQorICAgICAgICAjIFJlbmFtaW5nIHRvIGFu
b3RoZXIgcGF0aAorICAgICAgICBxID0gUCAvICdkaXJBJyAvICdmaWxlQUEnCisgICAgICAgIHAu
cmVuYW1lKHEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5zdGF0KCkuc3Rfc2l6ZSwgc2l6
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91bmQocC5zdGF0KQorICAgICAgICAjIFJl
bmFtaW5nIHRvIGEgc3RyIG9mIGEgcmVsYXRpdmUgcGF0aAorICAgICAgICByID0gcmVsX2pvaW4o
J2ZpbGVBQUEnKQorICAgICAgICBxLnJlbmFtZShyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG9zLnN0YXQocikuc3Rfc2l6ZSwgc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90Rm91
bmQocS5zdGF0KQorCisgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKKyAgICAgICAgUCA9IHNl
bGYuY2xzKEJBU0UpCisgICAgICAgIHAgPSBQIC8gJ2ZpbGVBJworICAgICAgICBpZiBzeXMudmVy
c2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1w
bGVtZW50ZWRFcnJvciwgcC5yZXBsYWNlLCBwKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IHNpemUgPSBwLnN0YXQoKS5zdF9zaXplCisgICAgICAgICMgUmVwbGFjaW5nIGEgbm9uLWV4aXN0
aW5nIHBhdGgKKyAgICAgICAgcSA9IFAgLyAnZGlyQScgLyAnZmlsZUFBJworICAgICAgICBwLnJl
cGxhY2UocSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLnN0YXQoKS5zdF9zaXplLCBzaXpl
KQorICAgICAgICBzZWxmLmFzc2VydEZpbGVOb3RGb3VuZChwLnN0YXQpCisgICAgICAgICMgUmVw
bGFjaW5nIGFub3RoZXIgKGV4aXN0aW5nKSBwYXRoCisgICAgICAgIHIgPSByZWxfam9pbignZGly
QicsICdmaWxlQicpCisgICAgICAgIHEucmVwbGFjZShyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG9zLnN0YXQocikuc3Rfc2l6ZSwgc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlTm90
Rm91bmQocS5zdGF0KQorCisgICAgZGVmIHRlc3RfdG91Y2hfY29tbW9uKHNlbGYpOgorICAgICAg
ICBQID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgcCA9IFAgLyAnbmV3ZmlsZUEnCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocC5leGlzdHMoKSkKKyAgICAgICAgcC50b3VjaCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICAjIFJld2luZCB0aGUgbXRpbWUg
c3VmZmljaWVudGx5IGZhciBpbiB0aGUgcGFzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICAjIGZp
bGVzeXN0ZW0tc3BlY2lmaWMgdGltZXN0YW1wIGdyYW51bGFyaXR5LgorICAgICAgICBvbGRfbXRp
bWUgPSBwLnN0YXQoKS5zdF9tdGltZSAtIDEwCisgICAgICAgIG9zLnV0aW1lKHN0cihwKSwgKG9s
ZF9tdGltZSwgb2xkX210aW1lKSkKKyAgICAgICAgIyBUaGUgZmlsZSBtdGltZSBzaG91bGQgYmUg
cmVmcmVzaGVkIGJ5IGNhbGxpbmcgdG91Y2goKSBhZ2FpbgorICAgICAgICBwLnRvdWNoKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocC5zdGF0KCkuc3RfbXRpbWUsIG9sZF9tdGlt
ZSkKKyAgICAgICAgIyBOb3cgd2l0aCBleGlzdF9vaz1GYWxzZQorICAgICAgICBwID0gUCAvICdu
ZXdmaWxlQicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLmV4aXN0cygpKQorICAgICAgICBw
LnRvdWNoKG1vZGU9MG83MDAsIGV4aXN0X29rPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUocC5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcC50b3Vj
aCwgZXhpc3Rfb2s9RmFsc2UpCisKKyAgICBkZWYgdGVzdF90b3VjaF9ub2NoYW5nZShzZWxmKToK
KyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIHAgPSBQIC8gJ2ZpbGVBJworICAg
ICAgICBwLnRvdWNoKCkKKyAgICAgICAgd2l0aCBwLm9wZW4oJ3JiJykgYXMgZjoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCkuc3RyaXAoKSwgYiJ0aGlzIGlzIGZpbGUgQSIp
CisKKyAgICBkZWYgdGVzdF9ta2RpcihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0Up
CisgICAgICAgIHAgPSBQIC8gJ25ld2RpckEnCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5l
eGlzdHMoKSkKKyAgICAgICAgcC5ta2RpcigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4
aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5pc19kaXIoKSkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICMgUHl0aG9u
IDIuNiBrbHVkZ2UgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU3ODUzCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgcC5ta2RpcigpCisgICAgICAgICAgICBleGNlcHQ6
ICAjIG5vcWE6IEU3MjIKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCisgICAgZGVmIHRlc3Rf
bWtkaXJfcGFyZW50cyhzZWxmKToKKyAgICAgICAgIyBDcmVhdGluZyBhIGNoYWluIG9mIGRpcmVj
dG9yaWVzCisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnbmV3ZGlyQicsICduZXdkaXJDJykK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLmV4aXN0cygpKQorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcigpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCisg
ICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5l
eGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuaXNfZGlyKCkpCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGly
KHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJy
bm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgIyB0ZXN0IGBtb2RlYCBhcmcKKyAgICAgICAgbW9k
ZSA9IHN0YXQuU19JTU9ERShwLnN0YXQoKS5zdF9tb2RlKSAgIyBkZWZhdWx0IG1vZGUKKyAgICAg
ICAgcCA9IHNlbGYuY2xzKEJBU0UsICduZXdkaXJEJywgJ25ld2RpckUnKQorICAgICAgICBwLm1r
ZGlyKDBvNTU1LCBwYXJlbnRzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0
cygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5pc19kaXIoKSkKKyAgICAgICAgaWYgb3Mu
bmFtZSAhPSAnbnQnOgorICAgICAgICAgICAgIyB0aGUgZGlyZWN0b3J5J3MgcGVybWlzc2lvbnMg
Zm9sbG93IHRoZSBtb2RlIGFyZ3VtZW50CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
YXQuU19JTU9ERShwLnN0YXQoKS5zdF9tb2RlKSwgMG83NTU1ICYgbW9kZSkKKyAgICAgICAgIyB0
aGUgcGFyZW50J3MgcGVybWlzc2lvbnMgZm9sbG93IHRoZSBkZWZhdWx0IHByb2Nlc3Mgc2V0dGlu
Z3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUocC5wYXJlbnQuc3RhdCgp
LnN0X21vZGUpLCBtb2RlKQorCisgICAgZGVmIHRlc3RfbWtkaXJfZXhpc3Rfb2soc2VsZik6Cisg
ICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQicpCisgICAgICAgIHN0X2N0aW1lX2ZpcnN0
ID0gcC5zdGF0KCkuc3RfY3RpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2Vy
dEZpbGVFeGlzdHMocC5ta2RpcikKKyAgICAgICAgcC5ta2RpcihleGlzdF9vaz1UcnVlKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwLnN0YXQoKS5zdF9jdGltZSwgc3RfY3RpbWVfZmlyc3QpCisKKyAgICBkZWYgdGVzdF9ta2Rp
cl9leGlzdF9va193aXRoX3BhcmVudChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0Us
ICdkaXJDJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmlsZUV4aXN0cyhwLm1rZGlyKQorICAgICAgICBwID0gcCAvICduZXdkaXJDJwor
ICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgc3RfY3RpbWVfZmlyc3QgPSBw
LnN0YXQoKS5zdF9jdGltZQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGaWxlRXhpc3RzKHAubWtkaXIsIHBhcmVudHM9VHJ1ZSkKKyAgICAg
ICAgcC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RhdCgpLnN0
X2N0aW1lLCBzdF9jdGltZV9maXJzdCkKKworICAgIGRlZiB0ZXN0X21rZGlyX2V4aXN0X29rX3Jv
b3Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1ODAzOiBBIGRyaXZlIHJvb3QgY291bGQgcmFp
c2UgUGVybWlzc2lvbkVycm9yIG9uIFdpbmRvd3MKKyAgICAgICAgc2VsZi5jbHMoJy8nKS5yZXNv
bHZlKCkubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5jbHMoJy8nKS5yZXNvbHZl
KCkubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorCisgICAgQG9ubHlfbnQgICAg
IyBYWFg6IG5vdCBzdXJlIGhvdyB0byB0ZXN0IHRoaXMgb24gUE9TSVgKKyAgICBkZWYgdGVzdF9t
a2Rpcl93aXRoX3Vua25vd25fZHJpdmUoc2VsZik6CisgICAgICAgIGZvciBkIGluICdaWVhXVlVU
U1JRUE9OTUxLSklIR0ZFRENCQSc6CisgICAgICAgICAgICBwID0gc2VsZi5jbHMoZCArICc6XFwn
KQorICAgICAgICAgICAgaWYgbm90IHAuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBmaW5kIGEg
ZHJpdmUgdGhhdCBkb2Vzbid0IGV4aXN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhPU0Vycm9yKToKKyAgICAgICAgICAgIChwIC8gJ2NoaWxkJyAvICdwYXRoJykubWtkaXIocGFy
ZW50cz1UcnVlKQorCisgICAgZGVmIHRlc3RfbWtkaXJfd2l0aF9jaGlsZF9maWxlKHNlbGYpOgor
ICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckInLCAnZmlsZUInKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgIyBBbiBleGNlcHRpb24gaXMgcmFpc2Vk
IHdoZW4gdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgaXMgYW4gZXhpc3RpbmcKKyAgICAgICAgIyBy
ZWd1bGFyIGZpbGUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBleGlzdF9vayBpcyB0cnVlIG9yIG5v
dC4KKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlRXhpc3RzKHAubWtkaXIsIHBhcmVudHM9VHJ1ZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGaWxlRXhpc3RzKHAubWtkaXIsIHBhcmVudHM9VHJ1ZSwgZXhp
c3Rfb2s9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X21rZGlyX25vX3BhcmVudHNfZmlsZShzZWxmKToK
KyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdmaWxlQScpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiB0
aGUgbGFzdCBwYXRoIGNvbXBvbmVudCBpcyBhbiBleGlzdGluZworICAgICAgICAjIHJlZ3VsYXIg
ZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGV4aXN0X29rIGlzIHRydWUgb3Igbm90LgorICAg
ICAgICBzZWxmLmFzc2VydEZpbGVFeGlzdHMocC5ta2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRG
aWxlRXhpc3RzKHAubWtkaXIsIGV4aXN0X29rPVRydWUpCisKKyAgICBkZWYgdGVzdF9ta2Rpcl9j
b25jdXJyZW50X3BhcmVudF9jcmVhdGlvbihzZWxmKToKKyAgICAgICAgZm9yIHBhdHRlcm5fbnVt
IGluIHJhbmdlKDMyKToKKyAgICAgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQ1BDJWQn
ICUgcGF0dGVybl9udW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuZXhpc3RzKCkp
CisKKyAgICAgICAgICAgIGRlZiBteV9ta2RpcihwYXRoLCBtb2RlPTBvNzc3KToKKyAgICAgICAg
ICAgICAgICBwYXRoID0gc3RyKHBhdGgpCisgICAgICAgICAgICAgICAgIyBFbXVsYXRlIGFub3Ro
ZXIgcHJvY2VzcyB0aGF0IHdvdWxkIGNyZWF0ZSB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAg
ICAgIyBqdXN0IGJlZm9yZSB3ZSB0cnkgdG8gY3JlYXRlIGl0IG91cnNlbHZlcy4gIFdlIGRvIGl0
CisgICAgICAgICAgICAgICAgIyBpbiBhbGwgcG9zc2libGUgcGF0dGVybiBjb21iaW5hdGlvbnMs
IGFzc3VtaW5nIHRoYXQgdGhpcworICAgICAgICAgICAgICAgICMgZnVuY3Rpb24gaXMgY2FsbGVk
IGF0IG1vc3QgNSB0aW1lcyAoZGlyQ1BDL2RpcjEvZGlyMiwKKyAgICAgICAgICAgICAgICAjIGRp
ckNQQy9kaXIxLCBkaXJDUEMsIGRpckNQQy9kaXIxLCBkaXJDUEMvZGlyMS9kaXIyKS4KKyAgICAg
ICAgICAgICAgICBpZiBwYXR0ZXJuLnBvcCgpOgorICAgICAgICAgICAgICAgICAgICBvcy5ta2Rp
cihwYXRoLCBtb2RlKSAgICAgICMgZnJvbSBhbm90aGVyIHByb2Nlc3MKKyAgICAgICAgICAgICAg
ICAgICAgY29uY3VycmVudGx5X2NyZWF0ZWQuYWRkKHBhdGgpCisgICAgICAgICAgICAgICAgb3Mu
bWtkaXIocGF0aCwgbW9kZSkgICAgICAgICAgIyBvdXIgcmVhbCBjYWxsCisKKyAgICAgICAgICAg
IHBhdHRlcm4gPSBbYm9vbChwYXR0ZXJuX251bSAmICgxIDw8IG4pKSBmb3IgbiBpbiByYW5nZSg1
KV0KKyAgICAgICAgICAgIGNvbmN1cnJlbnRseV9jcmVhdGVkID0gc2V0KCkKKyAgICAgICAgICAg
IHAxMiA9IHAgLyAnZGlyMScgLyAnZGlyMicKKworICAgICAgICAgICAgZGVmIF90cnlfZnVuYygp
OgorICAgICAgICAgICAgICAgIHdpdGggbW9jay5wYXRjaCgicGF0aGxpYjIuX25vcm1hbF9hY2Nl
c3Nvci5ta2RpciIsIG15X21rZGlyKToKKyAgICAgICAgICAgICAgICAgICAgcDEyLm1rZGlyKHBh
cmVudHM9VHJ1ZSwgZXhpc3Rfb2s9RmFsc2UpCisKKyAgICAgICAgICAgIGRlZiBfZXhjX2Z1bmMo
ZXhjKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHN0cihwMTIpLCBjb25jdXJyZW50
bHlfY3JlYXRlZCkKKworICAgICAgICAgICAgZGVmIF9lbHNlX2Z1bmMoKToKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydE5vdEluKHN0cihwMTIpLCBjb25jdXJyZW50bHlfY3JlYXRlZCkKKwor
ICAgICAgICAgICAgcGF0aGxpYi5fdHJ5X2V4Y2VwdF9maWxlZXhpc3RzZXJyb3IoCisgICAgICAg
ICAgICAgICAgX3RyeV9mdW5jLCBfZXhjX2Z1bmMsIF9lbHNlX2Z1bmMpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKworICAgIEBzdXBwb3J0X3NraXBfdW5sZXNzX3N5
bWxpbmsKKyAgICBkZWYgdGVzdF9zeW1saW5rX3RvKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5j
bHMoQkFTRSkKKyAgICAgICAgdGFyZ2V0ID0gUCAvICdmaWxlQScKKyAgICAgICAgIyBTeW1saW5r
aW5nIGEgcGF0aCB0YXJnZXQKKyAgICAgICAgbGluayA9IFAgLyAnZGlyQScgLyAnbGlua0FBJwor
ICAgICAgICBsaW5rLnN5bWxpbmtfdG8odGFyZ2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpbmsuc3RhdCgpLCB0YXJnZXQuc3RhdCgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KGxpbmsubHN0YXQoKSwgdGFyZ2V0LnN0YXQoKSkKKyAgICAgICAgIyBTeW1saW5raW5nIGEgc3Ry
IHRhcmdldAorICAgICAgICBsaW5rID0gUCAvICdkaXJBJyAvICdsaW5rQUFBJworICAgICAgICBs
aW5rLnN5bWxpbmtfdG8oc3RyKHRhcmdldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlu
ay5zdGF0KCksIHRhcmdldC5zdGF0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGlu
ay5sc3RhdCgpLCB0YXJnZXQuc3RhdCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxpbmsu
aXNfZGlyKCkpCisgICAgICAgICMgU3ltbGlua2luZyB0byBhIGRpcmVjdG9yeQorICAgICAgICB0
YXJnZXQgPSBQIC8gJ2RpckInCisgICAgICAgIGxpbmsgPSBQIC8gJ2RpckEnIC8gJ2xpbmtBQUFB
JworICAgICAgICBsaW5rLnN5bWxpbmtfdG8odGFyZ2V0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PVRy
dWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluay5zdGF0KCksIHRhcmdldC5zdGF0KCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGluay5sc3RhdCgpLCB0YXJnZXQuc3RhdCgp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluay5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxpc3QobGluay5pdGVyZGlyKCkpKQorCisgICAgZGVmIHRlc3RfaXNfZGlyKHNl
bGYpOgorICAgICAgICBQID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KChQIC8gJ2RpckEnKS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdm
aWxlQScpLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ25vbi1leGlz
dGluZycpLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAv
ICdiYWgnKS5pc19kaXIoKSkKKyAgICAgICAgaWYgc3VwcG9ydF9jYW5fc3ltbGluaygpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdsaW5rQScpLmlzX2RpcigpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKChQIC8gJ2xpbmtCJykuaXNfZGlyKCkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2Jyb2tlbkxpbmsnKS5pc19kaXIoKSkKKworICAgIGRl
ZiB0ZXN0X2lzX2ZpbGUoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoKFAgLyAnZmlsZUEnKS5pc19maWxlKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoKFAgLyAnZGlyQScpLmlzX2ZpbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgoUCAvICdub24tZXhpc3RpbmcnKS5pc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoKFAgLyAnZmlsZUEnIC8gJ2JhaCcpLmlzX2ZpbGUoKSkKKyAgICAgICAgaWYgc3VwcG9y
dF9jYW5fc3ltbGluaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChQIC8gJ2xpbmtB
JykuaXNfZmlsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdsaW5rQicp
LmlzX2ZpbGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnYnJva2VuTGlu
aycpLmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2lzX3N5bWxpbmsoc2VsZik6CisgICAgICAg
IFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVB
JykuaXNfc3ltbGluaygpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2RpckEnKS5p
c19zeW1saW5rKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnbm9uLWV4aXN0aW5n
JykuaXNfc3ltbGluaygpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAv
ICdiYWgnKS5pc19zeW1saW5rKCkpCisgICAgICAgIGlmIHN1cHBvcnRfY2FuX3N5bWxpbmsoKToK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoUCAvICdsaW5rQScpLmlzX3N5bWxpbmsoKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoUCAvICdsaW5rQicpLmlzX3N5bWxpbmsoKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoUCAvICdicm9rZW5MaW5rJykuaXNfc3ltbGlu
aygpKQorCisgICAgZGVmIHRlc3RfaXNfZmlmb19mYWxzZShzZWxmKToKKyAgICAgICAgUCA9IHNl
bGYuY2xzKEJBU0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZmlsZUEnKS5pc19m
aWZvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZGlyQScpLmlzX2ZpZm8oKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdub24tZXhpc3RpbmcnKS5pc19maWZvKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZmlsZUEnIC8gJ2JhaCcpLmlzX2ZpZm8o
KSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJta2ZpZm8iKSwgIm9z
Lm1rZmlmbygpIHJlcXVpcmVkIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jv
b3QsICJta2ZpZm8gbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQorICAgIGRlZiB0ZXN0X2lz
X2ZpZm9fdHJ1ZShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UsICdteWZpZm8nKQor
ICAgICAgICBvcy5ta2ZpZm8oc3RyKFApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUC5pc19m
aWZvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUC5pc19zb2NrZXQoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShQLmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2lzX3NvY2tldF9m
YWxzZShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoKFAgLyAnZmlsZUEnKS5pc19zb2NrZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgoUCAvICdkaXJBJykuaXNfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
KFAgLyAnbm9uLWV4aXN0aW5nJykuaXNfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoKFAgLyAnZmlsZUEnIC8gJ2JhaCcpLmlzX3NvY2tldCgpKQorCisgICAgQHVuaXR0ZXN0LnNr
aXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIiksICJVbml4IHNvY2tldHMgcmVxdWly
ZWQiKQorICAgIGRlZiB0ZXN0X2lzX3NvY2tldF90cnVlKHNlbGYpOgorICAgICAgICBQID0gc2Vs
Zi5jbHMoQkFTRSwgJ215c29jaycpCisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tl
dC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChz
b2NrLmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmJpbmQoc3RyKFApKQor
ICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgIkFGX1VOSVggcGF0
aCB0b28gbG9uZyIgaW4gc3RyKGUpOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNh
bm5vdCBiaW5kIFVuaXggc29ja2V0OiAiICsgc3RyKGUpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoUC5pc19zb2NrZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQLmlzX2ZpZm8oKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQLmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2lz
X2Jsb2NrX2RldmljZV9mYWxzZShzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZmlsZUEnKS5pc19ibG9ja19kZXZpY2UoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoUCAvICdkaXJBJykuaXNfYmxvY2tfZGV2aWNlKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnbm9uLWV4aXN0aW5nJykuaXNfYmxvY2tf
ZGV2aWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKFAgLyAnZmlsZUEnIC8gJ2JhaCcp
LmlzX2Jsb2NrX2RldmljZSgpKQorCisgICAgZGVmIHRlc3RfaXNfY2hhcl9kZXZpY2VfZmFsc2Uo
c2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKChQIC8gJ2ZpbGVBJykuaXNfY2hhcl9kZXZpY2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgoUCAvICdkaXJBJykuaXNfY2hhcl9kZXZpY2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgoUCAvICdub24tZXhpc3RpbmcnKS5pc19jaGFyX2RldmljZSgpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAvICdiYWgnKS5pc19jaGFyX2RldmljZSgpKQorCisg
ICAgQG9ubHlfcG9zaXgKKyAgICBkZWYgdGVzdF9pc19jaGFyX2RldmljZV90cnVlKHNlbGYpOgor
ICAgICAgICAjIFVuZGVyIFVuaXgsIC9kZXYvbnVsbCBzaG91bGQgZ2VuZXJhbGx5IGJlIGEgY2hh
ciBkZXZpY2UKKyAgICAgICAgUCA9IHNlbGYuY2xzKCcvZGV2L251bGwnKQorICAgICAgICBpZiBu
b3QgUC5leGlzdHMoKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIi9kZXYvbnVsbCByZXF1
aXJlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQLmlzX2NoYXJfZGV2aWNlKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoUC5pc19ibG9ja19kZXZpY2UoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShQLmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X3BpY2tsaW5nX2NvbW1vbihz
ZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdmaWxlQScpCisgICAgICAgIGZvciBw
cm90byBpbiByYW5nZSgwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAg
ICAgZHVtcGVkID0gcGlja2xlLmR1bXBzKHAsIHByb3RvKQorICAgICAgICAgICAgcHAgPSBwaWNr
bGUubG9hZHMoZHVtcGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcC5zdGF0KCks
IHAuc3RhdCgpKQorCisgICAgZGVmIHRlc3RfcGFydHNfaW50ZXJuaW5nKHNlbGYpOgorICAgICAg
ICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJy91c3IvYmluL2ZvbycpCisgICAgICAgIHEg
PSBQKCcvdXNyL2xvY2FsL2JpbicpCisgICAgICAgICMgJ3VzcicKKyAgICAgICAgc2VsZi5hc3Nl
cnRJcyhwLnBhcnRzWzFdLCBxLnBhcnRzWzFdKQorICAgICAgICAjICdiaW4nCisgICAgICAgIHNl
bGYuYXNzZXJ0SXMocC5wYXJ0c1syXSwgcS5wYXJ0c1szXSkKKworICAgIGRlZiBfY2hlY2tfY29t
cGxleF9zeW1saW5rcyhzZWxmLCBsaW5rMF90YXJnZXQpOgorICAgICAgICAjIFRlc3Qgc29sdmlu
ZyBhIG5vbi1sb29waW5nIGNoYWluIG9mIHN5bWxpbmtzIChpc3N1ZSAjMTk4ODcpCisgICAgICAg
IFAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICBzZWxmLmRpcmxpbmsob3MucGF0aC5qb2luKCds
aW5rMCcsICdsaW5rMCcpLCBqb2luKCdsaW5rMScpKQorICAgICAgICBzZWxmLmRpcmxpbmsob3Mu
cGF0aC5qb2luKCdsaW5rMScsICdsaW5rMScpLCBqb2luKCdsaW5rMicpKQorICAgICAgICBzZWxm
LmRpcmxpbmsob3MucGF0aC5qb2luKCdsaW5rMicsICdsaW5rMicpLCBqb2luKCdsaW5rMycpKQor
ICAgICAgICBzZWxmLmRpcmxpbmsobGluazBfdGFyZ2V0LCBqb2luKCdsaW5rMCcpKQorCisgICAg
ICAgICMgUmVzb2x2ZSBhYnNvbHV0ZSBwYXRocworICAgICAgICBwID0gKFAgLyAnbGluazAnKS5y
ZXNvbHZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihwKSwgQkFTRSkKKyAgICAgICAgcCA9IChQIC8gJ2xpbmsxJykucmVzb2x2
ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgUCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHIocCksIEJBU0UpCisgICAgICAgIHAgPSAoUCAvICdsaW5rMicpLnJlc29sdmUoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKHApLCBCQVNFKQorICAgICAgICBwID0gKFAgLyAnbGluazMnKS5yZXNvbHZlKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihw
KSwgQkFTRSkKKworICAgICAgICAjIFJlc29sdmUgcmVsYXRpdmUgcGF0aHMKKyAgICAgICAgb2xk
X3BhdGggPSBvcy5nZXRjd2QoKQorICAgICAgICBvcy5jaGRpcihCQVNFKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBwID0gc2VsZi5jbHMoJ2xpbmswJykucmVzb2x2ZSgpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHAsIFApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihwKSwgQkFTRSkKKyAgICAgICAgICAgIHAgPSBzZWxmLmNscygnbGluazEnKS5yZXNvbHZlKCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgUCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKHApLCBCQVNFKQorICAgICAgICAgICAgcCA9IHNlbGYuY2xzKCdsaW5rMicp
LnJlc29sdmUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksIEJBU0UpCisgICAgICAgICAgICBwID0gc2VsZi5j
bHMoJ2xpbmszJykucmVzb2x2ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFAp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgQkFTRSkKKyAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKG9sZF9wYXRoKQorCisgICAgQHN1cHBvcnRfc2tp
cF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvbXBsZXhfc3ltbGlua3NfYWJzb2x1dGUo
c2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2NvbXBsZXhfc3ltbGlua3MoQkFTRSkKKworICAg
IEBzdXBwb3J0X3NraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb21wbGV4X3N5bWxp
bmtzX3JlbGF0aXZlKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19jb21wbGV4X3N5bWxpbmtz
KCcuJykKKworICAgIEBzdXBwb3J0X3NraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9j
b21wbGV4X3N5bWxpbmtzX3JlbGF0aXZlX2RvdF9kb3Qoc2VsZik6CisgICAgICAgIHNlbGYuX2No
ZWNrX2NvbXBsZXhfc3ltbGlua3Mob3MucGF0aC5qb2luKCdkaXJBJywgJy4uJykpCisKKworY2xh
c3MgUGF0aFRlc3QoX0Jhc2VQYXRoVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNscyA9
IHBhdGhsaWIuUGF0aAorCisgICAgZGVmIHRlc3RfY29uY3JldGVfY2xhc3Moc2VsZik6CisgICAg
ICAgIHAgPSBzZWxmLmNscygnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoCisgICAgICAgICAg
ICB0eXBlKHApLAorICAgICAgICAgICAgcGF0aGxpYi5XaW5kb3dzUGF0aCBpZiBvcy5uYW1lID09
ICdudCcgZWxzZSBwYXRobGliLlBvc2l4UGF0aCkKKworICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVk
X2ZsYXZvdXIoc2VsZik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHBhdGhsaWIuUG9zaXhQYXRo
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVt
ZW50ZWRFcnJvciwgcGF0aGxpYi5XaW5kb3dzUGF0aCkKKworICAgIGRlZiB0ZXN0X2dsb2JfZW1w
dHlfcGF0dGVybihzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKCkKKyAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdVbmFjY2VwdGFibGUgcGF0dGVybicp
OgorICAgICAgICAgICAgbGlzdChwLmdsb2IoJycpKQorCisKK0Bvbmx5X3Bvc2l4CitjbGFzcyBQ
b3NpeFBhdGhUZXN0KF9CYXNlUGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBjbHMg
PSBwYXRobGliLlBvc2l4UGF0aAorCisgICAgZGVmIF9jaGVja19zeW1saW5rX2xvb3Aoc2VsZiwg
KmFyZ3MpOgorICAgICAgICBwYXRoID0gc2VsZi5jbHMoKmFyZ3MpCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHByaW50KHBhdGgucmVz
b2x2ZShzdHJpY3Q9VHJ1ZSkpCisKKyAgICBkZWYgX2NoZWNrX3N5bWxpbmtfbG9vcF9ub25zdHJp
Y3Qoc2VsZiwgKmFyZ3MpOgorICAgICAgICBwYXRoID0gc2VsZi5jbHMoKmFyZ3MpCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHByaW50
KHBhdGgucmVzb2x2ZShzdHJpY3Q9RmFsc2UpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9tb2RlKHNl
bGYpOgorICAgICAgICBvbGRfbWFzayA9IG9zLnVtYXNrKDApCisgICAgICAgIHNlbGYuYWRkQ2xl
YW51cChvcy51bWFzaywgb2xkX21hc2spCisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQorICAg
ICAgICB3aXRoIChwIC8gJ25ld19maWxlJykub3Blbignd2InKToKKyAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgc3QgPSBvcy5zdGF0KGpvaW4oJ25ld19maWxlJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpLCAwbzY2NikKKyAgICAgICAgb3MudW1h
c2soMG8wMjIpCisgICAgICAgIHdpdGggKHAgLyAnb3RoZXJfbmV3X2ZpbGUnKS5vcGVuKCd3Yicp
OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzdCA9IG9zLnN0YXQoam9pbignb3RoZXJfbmV3
X2ZpbGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUoc3Quc3RfbW9k
ZSksIDBvNjQ0KQorCisgICAgZGVmIHRlc3RfdG91Y2hfbW9kZShzZWxmKToKKyAgICAgICAgb2xk
X21hc2sgPSBvcy51bWFzaygwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW1hc2ssIG9s
ZF9tYXNrKQorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgKHAgLyAnbmV3X2Zp
bGUnKS50b3VjaCgpCisgICAgICAgIHN0ID0gb3Muc3RhdChqb2luKCduZXdfZmlsZScpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSwgMG82NjYpCisg
ICAgICAgIG9zLnVtYXNrKDBvMDIyKQorICAgICAgICAocCAvICdvdGhlcl9uZXdfZmlsZScpLnRv
dWNoKCkKKyAgICAgICAgc3QgPSBvcy5zdGF0KGpvaW4oJ290aGVyX25ld19maWxlJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpLCAwbzY0NCkKKyAg
ICAgICAgKHAgLyAnbWFza2VkX25ld19maWxlJykudG91Y2gobW9kZT0wbzc1MCkKKyAgICAgICAg
c3QgPSBvcy5zdGF0KGpvaW4oJ21hc2tlZF9uZXdfZmlsZScpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSwgMG83NTApCisKKyAgICBAc3VwcG9ydF9z
a2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfcmVzb2x2ZV9sb29wKHNlbGYpOgorICAg
ICAgICAjIExvb3BzIHdpdGggcmVsYXRpdmUgc3ltbGlua3MKKyAgICAgICAgb3Muc3ltbGluaygn
bGlua1gvaW5zaWRlJywgam9pbignbGlua1gnKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlu
a19sb29wKEJBU0UsICdsaW5rWCcpCisgICAgICAgIG9zLnN5bWxpbmsoJ2xpbmtZJywgam9pbign
bGlua1knKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWScp
CisgICAgICAgIG9zLnN5bWxpbmsoJ2xpbmtaLy4uL2xpbmtaJywgam9pbignbGlua1onKSkKKyAg
ICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWicpCisgICAgICAgICMg
Tm9uLXN0cmljdAorICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3Bfbm9uc3RyaWN0KEJB
U0UsICdsaW5rWicsICdmb28nKQorICAgICAgICAjIExvb3BzIHdpdGggYWJzb2x1dGUgc3ltbGlu
a3MKKyAgICAgICAgb3Muc3ltbGluayhqb2luKCdsaW5rVS9pbnNpZGUnKSwgam9pbignbGlua1Un
KSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVScpCisgICAg
ICAgIG9zLnN5bWxpbmsoam9pbignbGlua1YnKSwgam9pbignbGlua1YnKSkKKyAgICAgICAgc2Vs
Zi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVicpCisgICAgICAgIG9zLnN5bWxpbmso
am9pbignbGlua1cvLi4vbGlua1cnKSwgam9pbignbGlua1cnKSkKKyAgICAgICAgc2VsZi5fY2hl
Y2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVycpCisgICAgICAgICMgTm9uLXN0cmljdAorICAg
ICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3Bfbm9uc3RyaWN0KEJBU0UsICdsaW5rVycsICdm
b28nKQorCisgICAgZGVmIHRlc3RfZ2xvYihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisg
ICAgICAgIHAgPSBQKEJBU0UpCisgICAgICAgIGdpdmVuID0gc2V0KHAuZ2xvYigiRklMRWEiKSkK
KyAgICAgICAgZXhwZWN0ID0gc2V0KCkgaWYgbm90IHN1cHBvcnQuZnNfaXNfY2FzZV9pbnNlbnNp
dGl2ZShCQVNFKSBlbHNlIGdpdmVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2l2ZW4sIGV4
cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5nbG9iKCJGSUxFYSoiKSksIHNl
dCgpKQorCisgICAgZGVmIHRlc3Rfcmdsb2Ioc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscwor
ICAgICAgICBwID0gUChCQVNFLCAiZGlyQyIpCisgICAgICAgIGdpdmVuID0gc2V0KHAucmdsb2Io
IkZJTEVkIikpCisgICAgICAgIGV4cGVjdCA9IHNldCgpIGlmIG5vdCBzdXBwb3J0LmZzX2lzX2Nh
c2VfaW5zZW5zaXRpdmUoQkFTRSkgZWxzZSBnaXZlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGdpdmVuLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAucmdsb2IoIkZJ
TEVkKiIpKSwgc2V0KCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHB3ZCwg
J2dldHB3YWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3B3ZCBtb2R1bGUgZG9lcyBu
b3QgZXhwb3NlIGdldHB3YWxsKCknKQorICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXIoc2VsZik6Cisg
ICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3B3ZCcp
CisgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgcHdkZW50ID0gcHdkLmdldHB3dWlkKG9zLmdl
dHVpZCgpKQorICAgICAgICB1c2VybmFtZSA9IHB3ZGVudC5wd19uYW1lCisgICAgICAgIHVzZXJo
b21lID0gcHdkZW50LnB3X2Rpci5yc3RyaXAoJy8nKSBvciAnLycKKyAgICAgICAgIyBmaW5kIGFy
Yml0cmFyeSBkaWZmZXJlbnQgdXNlciAoaWYgZXhpc3RzKQorICAgICAgICBmb3IgcHdkZW50IGlu
IHB3ZC5nZXRwd2FsbCgpOgorICAgICAgICAgICAgb3RoZXJuYW1lID0gcHdkZW50LnB3X25hbWUK
KyAgICAgICAgICAgIG90aGVyaG9tZSA9IHB3ZGVudC5wd19kaXIucnN0cmlwKCcvJykKKyAgICAg
ICAgICAgIGlmIG90aGVybmFtZSAhPSB1c2VybmFtZSBhbmQgb3RoZXJob21lOgorICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgcDEgPSBQKCd+L0RvY3VtZW50cycpCisgICAgICAgIHAy
ID0gUCgnficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDMgPSBQKCd+JyAr
IG90aGVybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDQgPSBQKCcuLi9+JyArIHVzZXJu
YW1lICsgJy9Eb2N1bWVudHMnKQorICAgICAgICBwNSA9IFAoJy9+JyArIHVzZXJuYW1lICsgJy9E
b2N1bWVudHMnKQorICAgICAgICBwNiA9IFAoJycpCisgICAgICAgIHA3ID0gUCgnfmZha2V1c2Vy
L0RvY3VtZW50cycpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQo
KSBhcyBlbnY6CisgICAgICAgICAgICBlbnYudW5zZXQoJ0hPTUUnKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHAxLmV4cGFuZHVzZXIoKSwgUCh1c2VyaG9tZSkgLyAnRG9jdW1lbnRz
JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5kdXNlcigpLCBQKHVzZXJo
b21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5leHBh
bmR1c2VyKCksIFAob3RoZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
Ni5leHBhbmR1c2VyKCksIHA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGlt
ZUVycm9yLCBwNy5leHBhbmR1c2VyKQorCisgICAgICAgICAgICBlbnYuc2V0KCdIT01FJywgJy90
bXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMS5leHBhbmR1c2VyKCksIFAoJy90
bXAvRG9jdW1lbnRzJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmV4cGFuZHVz
ZXIoKSwgUCh1c2VyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocDMuZXhwYW5kdXNlcigpLCBQKG90aGVyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBwNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDcuZXhwYW5kdXNlcikKKworCitAb25seV9udAorY2xhc3Mg
V2luZG93c1BhdGhUZXN0KF9CYXNlUGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBj
bHMgPSBwYXRobGliLldpbmRvd3NQYXRoCisKKyAgICBkZWYgdGVzdF9nbG9iKHNlbGYpOgorICAg
ICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoQkFTRSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZXQocC5nbG9iKCJGSUxFYSIpKSwgc2V0KFtQKEJBU0UsICJmaWxlQSIpXSkpCisK
KyAgICBkZWYgdGVzdF9yZ2xvYihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAg
IHAgPSBQKEJBU0UsICJkaXJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5yZ2xv
YigiRklMRWQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtQKEJBU0UsICJkaXJD
L2RpckQvZmlsZUQiKV0pKQorCisgICAgZGVmIHRlc3RfZXhwYW5kdXNlcihzZWxmKToKKyAgICAg
ICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJk
KCkgYXMgZW52OgorICAgICAgICAgICAgZW52LnVuc2V0KCdIT01FJykKKyAgICAgICAgICAgIGVu
di51bnNldCgnVVNFUlBST0ZJTEUnKQorICAgICAgICAgICAgZW52LnVuc2V0KCdIT01FUEFUSCcp
CisgICAgICAgICAgICBlbnYudW5zZXQoJ0hPTUVEUklWRScpCisgICAgICAgICAgICBlbnYuc2V0
KCdVU0VSTkFNRScsICdhbGljZScpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGF0IHRoZSBwYXRo
IHJldHVybnMgdW5jaGFuZ2VkCisgICAgICAgICAgICBwMSA9IFAoJ34vTXkgRG9jdW1lbnRzJykK
KyAgICAgICAgICAgIHAyID0gUCgnfmFsaWNlL015IERvY3VtZW50cycpCisgICAgICAgICAgICBw
MyA9IFAoJ35ib2IvTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHA0ID0gUCgnL34vTXkgRG9j
dW1lbnRzJykKKyAgICAgICAgICAgIHA1ID0gUCgnZDp+L015IERvY3VtZW50cycpCisgICAgICAg
ICAgICBwNiA9IFAoJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJy
b3IsIHAxLmV4cGFuZHVzZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1l
RXJyb3IsIHAyLmV4cGFuZHVzZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50
aW1lRXJyb3IsIHAzLmV4cGFuZHVzZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA0
LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFu
ZHVzZXIoKSwgcDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIo
KSwgcDYpCisKKyAgICAgICAgICAgIGRlZiBjaGVjaygpOgorICAgICAgICAgICAgICAgIGVudi51
bnNldCgnVVNFUk5BTUUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhw
YW5kdXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMv
YWxpY2UvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
S2V5RXJyb3IsIHAyLmV4cGFuZHVzZXIpCisgICAgICAgICAgICAgICAgZW52LnNldCgnVVNFUk5B
TUUnLCAnYWxpY2UnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5k
dXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYWxp
Y2UvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5l
eHBhbmR1c2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQKCdDOi9Vc2Vy
cy9ib2IvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
NC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUu
ZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4
cGFuZHVzZXIoKSwgcDYpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZmlyc3QgbG9va3VwIGtl
eSBpbiB0aGUgZW52IHZhcnMKKyAgICAgICAgICAgIGVudi5zZXQoJ0hPTUUnLCAnQzpcXFVzZXJz
XFxhbGljZScpCisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGF0
IEhPTUVQQVRIIGlzIGF2YWlsYWJsZSBpbnN0ZWFkCisgICAgICAgICAgICBlbnYudW5zZXQoJ0hP
TUUnKQorICAgICAgICAgICAgZW52LnNldCgnSE9NRVBBVEgnLCAnQzpcXFVzZXJzXFxhbGljZScp
CisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgIGVudi5zZXQoJ0hPTUVEUklWRScs
ICdDOlxcJykKKyAgICAgICAgICAgIGVudi5zZXQoJ0hPTUVQQVRIJywgJ1VzZXJzXFxhbGljZScp
CisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgIGVudi51bnNldCgnSE9NRURSSVZF
JykKKyAgICAgICAgICAgIGVudi51bnNldCgnSE9NRVBBVEgnKQorICAgICAgICAgICAgZW52LnNl
dCgnVVNFUlBST0ZJTEUnLCAnQzpcXFVzZXJzXFxhbGljZScpCisgICAgICAgICAgICBjaGVjaygp
CisKKworIyBleHRyYSB0ZXN0IHRvIGVuc3VyZSBjb3ZlcmFnZSBvZiBpc3N1ZSAjNTQKK2RlZiB0
ZXN0X3Jlc29sdmVfZXh0cmEoKToKKyAgICBwYXRobGliLlBhdGgoIn4vZG9lc19ub3RfZXhpc3Qi
KS5yZXNvbHZlKCkKKworCitkZWYgbWFpbigpOgorICAgIHVuaXR0ZXN0Lm1haW4oX19uYW1lX18p
CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGRmX2pzL3BkZi53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3BkZi53
b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM4MjkxMzUyOGU2Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvcGRmLndvcmtlci5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0
ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BkZl9qcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2Q0MWM3YTI4YjQ0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bk
Zl9qcy9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvcGRmLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvcGRmLndvcmtl
ci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8u
Y292ZXJhZ2VyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiMWRl
MWNkMjQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly5jb3ZlcmFnZXJjCkBAIC0w
LDAgKzEsMTQgQEAKK1tydW5dCitpbmNsdWRlID0KKyAgcGx1Z2d5LyoKKyAgdGVzdGluZy8qCisg
ICovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9wbHVnZ3kvKgorICAqL3B5cHkqL3NpdGUtcGFj
a2FnZXMvcGx1Z2d5LyoKKyAgKlxMaWJcc2l0ZS1wYWNrYWdlc1xwbHVnZ3lcKgorYnJhbmNoID0g
MQorCitbcGF0aHNdCitzb3VyY2UgPSBwbHVnZ3kvCisgICovbGliL3B5dGhvbiovc2l0ZS1wYWNr
YWdlcy9wbHVnZ3kvCisgICovcHlweSovc2l0ZS1wYWNrYWdlcy9wbHVnZ3kvCisgICpcTGliXHNp
dGUtcGFja2FnZXNccGx1Z2d5XApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLmdpdGlnbm9yZSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi40NTgwNTM2YzdhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8uZ2l0
aWdub3JlCkBAIC0wLDAgKzEsNjQgQEAKKyMgQnl0ZS1jb21waWxlZCAvIG9wdGltaXplZCAvIERM
TCBmaWxlcworX19weWNhY2hlX18vCisqLnB5W2NvZF0KKworIyBDIGV4dGVuc2lvbnMKKyouc28K
KworIyBEaXN0cmlidXRpb24gLyBwYWNrYWdpbmcKKy5QeXRob24KK2Vudi8KK2J1aWxkLworZGV2
ZWxvcC1lZ2dzLworZGlzdC8KK2Rvd25sb2Fkcy8KK2VnZ3MvCisuZWdncy8KK2xpYi8KK2xpYjY0
LworcGFydHMvCitzZGlzdC8KK3Zhci8KKyouZWdnLWluZm8vCisuaW5zdGFsbGVkLmNmZworKi5l
Z2cKKworIyBQeUluc3RhbGxlcgorIyAgVXN1YWxseSB0aGVzZSBmaWxlcyBhcmUgd3JpdHRlbiBi
eSBhIHB5dGhvbiBzY3JpcHQgZnJvbSBhIHRlbXBsYXRlCisjICBiZWZvcmUgUHlJbnN0YWxsZXIg
YnVpbGRzIHRoZSBleGUsIHNvIGFzIHRvIGluamVjdCBkYXRlL290aGVyIGluZm9zIGludG8gaXQu
CisqLm1hbmlmZXN0CisqLnNwZWMKKworIyBJbnN0YWxsZXIgbG9ncworcGlwLWxvZy50eHQKK3Bp
cC1kZWxldGUtdGhpcy1kaXJlY3RvcnkudHh0CisKKyMgVW5pdCB0ZXN0IC8gY292ZXJhZ2UgcmVw
b3J0cworaHRtbGNvdi8KKy50b3gvCisuY292ZXJhZ2UKKy5jb3ZlcmFnZS4qCisuY2FjaGUKK25v
c2V0ZXN0cy54bWwKK2NvdmVyYWdlLnhtbAorKixjb3ZlcgorCisjIFRyYW5zbGF0aW9ucworKi5t
bworKi5wb3QKKworIyBEamFuZ28gc3R1ZmY6CisqLmxvZworCisjIFNwaGlueCBkb2N1bWVudGF0
aW9uCitkb2NzL19idWlsZC8KKworIyBQeUJ1aWxkZXIKK3RhcmdldC8KKyouc3dwCisKKyMgZ2Vu
ZXJhdGVkIGJ5IHNldHVwdG9vbHNfc2NtCitzcmMvcGx1Z2d5L192ZXJzaW9uLnB5CisKKyMgZ2Vu
ZXJhdGVkIGJ5IHBpcAorcGlwLXdoZWVsLW1ldGFkYXRhLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVn
Z3kvLnByZS1jb21taXQtY29uZmlnLnlhbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8ucHJlLWNvbW1pdC1jb25m
aWcueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVjMDhkOTgz
Nzc3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly5wcmUtY29tbWl0LWNvbmZpZy55
YW1sCkBAIC0wLDAgKzEsMzIgQEAKK3JlcG9zOgorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNv
bS9hbWJ2L2JsYWNrCisgICAgcmV2OiAxOS4zYjAKKyAgICBob29rczoKKyAgICAtICAgaWQ6IGJs
YWNrCisgICAgICAgIGFyZ3M6IFstLXNhZmUsIC0tcXVpZXRdCisgICAgICAgIGxhbmd1YWdlX3Zl
cnNpb246IHB5dGhvbjMuNgorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9hc290dGlsZS9i
bGFja2VuLWRvY3MKKyAgICByZXY6IHYwLjUuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogYmxh
Y2tlbi1kb2NzCisgICAgICAgIGFkZGl0aW9uYWxfZGVwZW5kZW5jaWVzOiBbYmxhY2s9PTE5LjNi
MF0KKyAgICAgICAgbGFuZ3VhZ2VfdmVyc2lvbjogcHl0aG9uMy42CistICAgcmVwbzogaHR0cHM6
Ly9naXRodWIuY29tL3ByZS1jb21taXQvcHJlLWNvbW1pdC1ob29rcworICAgIHJldjogdjIuMS4w
CisgICAgaG9va3M6CisgICAgLSAgIGlkOiB0cmFpbGluZy13aGl0ZXNwYWNlCisgICAgLSAgIGlk
OiBlbmQtb2YtZmlsZS1maXhlcgorICAgIC0gICBpZDogZmxha2U4CistICAgcmVwbzogbG9jYWwK
KyAgICBob29rczoKKyAgICAtICAgaWQ6IHJzdAorICAgICAgICBuYW1lOiByc3QKKyAgICAgICAg
ZW50cnk6IHJzdC1saW50IC0tZW5jb2RpbmcgdXRmLTgKKyAgICAgICAgZmlsZXM6IF4oQ0hBTkdF
TE9HLnJzdHxIT1dUT1JFTEVBU0UucnN0fFJFQURNRS5yc3R8Y2hhbmdlbG9nLy4qKSQKKyAgICAg
ICAgbGFuZ3VhZ2U6IHB5dGhvbgorICAgICAgICBhZGRpdGlvbmFsX2RlcGVuZGVuY2llczogW3B5
Z21lbnRzLCByZXN0cnVjdHVyZWR0ZXh0X2xpbnRdCisgICAgICAgIGxhbmd1YWdlX3ZlcnNpb246
IHB5dGhvbjMuNgorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUtY29tbWl0L3B5Z3Jl
cC1ob29rcworICAgIHJldjogdjEuMy4wCisgICAgaG9va3M6CisgICAgLSAgIGlkOiByc3QtYmFj
a3RpY2tzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8udHJhdmlzLnltbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
Ly50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGJh
NTk2NmU1ZDVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLnRyYXZpcy55bWwKQEAg
LTAsMCArMSw4MSBAQAorZGlzdDogeGVuaWFsCitsYW5ndWFnZTogcHl0aG9uCisKK3N0YWdlczoK
Ky0gbmFtZTogdGVzdAorICBpZjogdGFnIElTIE5PVCBwcmVzZW50CistIG5hbWU6IGRlcGxveQor
ICBpZjogcmVwbyA9IHB5dGVzdC1kZXYvcGx1Z2d5IEFORCB0YWcgSVMgcHJlc2VudAorCitqb2Jz
OgorICBpbmNsdWRlOgorICAgIC0gcHl0aG9uOiAnMy42JworICAgICAgZW52OiBUT1hFTlY9bGlu
dGluZworICAgICAgY2FjaGU6CisgICAgICAgIGRpcmVjdG9yaWVzOgorICAgICAgICAgIC0gJEhP
TUUvLmNhY2hlL3ByZS1jb21taXQKKyAgICAtIHB5dGhvbjogJzMuNicKKyAgICAgIGVudjogVE9Y
RU5WPWRvY3MKKyAgICAtIHB5dGhvbjogJzIuNycKKyAgICAgIGVudjogVE9YRU5WPXB5MjctY292
ZXJhZ2UKKyAgICAtIHB5dGhvbjogJzMuNCcKKyAgICAgIGVudjogVE9YRU5WPXB5MzQtY292ZXJh
Z2UKKyAgICAtIHB5dGhvbjogJzMuNScKKyAgICAgIGVudjogVE9YRU5WPXB5MzUtY292ZXJhZ2UK
KyAgICAtIHB5dGhvbjogJzMuNicKKyAgICAgIGVudjogVE9YRU5WPXB5MzYtY292ZXJhZ2UKKyAg
ICAtIHB5dGhvbjogJ3B5cHkyLjctNi4wJworICAgICAgZW52OiBUT1hFTlY9cHlweS1jb3ZlcmFn
ZQorICAgIC0gcHl0aG9uOiAncHlweTMuNS02LjAnCisgICAgICBlbnY6IFRPWEVOVj1weXB5My1j
b3ZlcmFnZQorICAgIC0gcHl0aG9uOiAnMy43JworICAgICAgZW52OiBUT1hFTlY9cHkzNy1jb3Zl
cmFnZQorICAgIC0gcHl0aG9uOiAnMy44LWRldicKKyAgICAgIGVudjogVE9YRU5WPXB5MzgtY292
ZXJhZ2UKKyAgICAtIHB5dGhvbjogJzMuNicKKyAgICAgIGVudjogVE9YRU5WPXB5MzYtcHl0ZXN0
bWFzdGVyLWNvdmVyYWdlCisgICAgLSBweXRob246ICczLjYnCisgICAgICBlbnY6IFRPWEVOVj1w
eTM2LXB5dGVzdGZlYXR1cmVzLWNvdmVyYWdlCisgICAgLSBweXRob246ICczLjYnCisgICAgICBl
bnY6IFRPWEVOVj1iZW5jaG1hcmsKKyAgICAtIHB5dGhvbjogJzMuNycKKyAgICAgIGVudjogVE9Y
RU5WPXB5MzctcHl0ZXN0bWFzdGVyLWNvdmVyYWdlCisgICAgLSBweXRob246ICczLjcnCisgICAg
ICBlbnY6IFRPWEVOVj1weTM3LXB5dGVzdGZlYXR1cmVzLWNvdmVyYWdlCisKKyAgICAtIHN0YWdl
OiBkZXBsb3kKKyAgICAgIHB5dGhvbjogJzMuNicKKyAgICAgIGVudjoKKyAgICAgIGluc3RhbGw6
IHBpcCBpbnN0YWxsIC1VIHNldHVwdG9vbHMgc2V0dXB0b29sc19zY20KKyAgICAgIHNjcmlwdDog
c2tpcAorICAgICAgZGVwbG95OgorICAgICAgICBwcm92aWRlcjogcHlwaQorICAgICAgICB1c2Vy
OiBuaWNvZGRlbXVzCisgICAgICAgIGRpc3RyaWJ1dGlvbnM6IHNkaXN0IGJkaXN0X3doZWVsCisg
ICAgICAgIHNraXBfdXBsb2FkX2RvY3M6IHRydWUKKyAgICAgICAgcGFzc3dvcmQ6CisgICAgICAg
ICAgc2VjdXJlOiBQRHZRQ0tmWHJGMVYvdGR3RU9mZURFakRzNnZKOWdLV280eXJNVW1CeDFKTDVw
bEhaYXFmSExmdGxHTW9IZWthUVRIY2Z5WVlieGlnbkZ3NUlHc245Ny9uRktLV0RQTkJmWkErM1JK
Sm1lSmZ6Mk5RdW5Za1Nub3F0QnRmRXRXSHpGUGRrQ20wdy9DTjlDOElwUmpodkxuRlRVUXppbDZp
TXk2d1pHMjc2Z1U9CisgICAgICAgIG9uOgorICAgICAgICAgIHRhZ3M6IHRydWUKKyAgICAgICAg
ICByZXBvOiBweXRlc3QtZGV2L3BsdWdneQorCitpbnN0YWxsOgorICAtIHBpcCBpbnN0YWxsIC1V
IHBpcAorICAtIHBpcCBpbnN0YWxsIC1VIC0tZm9yY2UtcmVpbnN0YWxsIHNldHVwdG9vbHMgdG94
CisKK3NjcmlwdDoKKyAgLSB0b3gKKworYWZ0ZXJfc2NyaXB0OgorICAtIHwKKyAgICBpZiBbWyAi
JHtUT1hFTlYlLWNvdmVyYWdlfSIgIT0gIiRUT1hFTlYiIF1dOyB0aGVuCisgICAgICBiYXNoIDwo
Y3VybCAtcyBodHRwczovL2NvZGVjb3YuaW8vYmFzaCkgLVogLVggZ2NvdiAtWCBjb3ZlcmFnZXB5
IC1YIHNlYXJjaCAtWCB4Y29kZSAtWCBnY292b3V0IC1YIGZpeCAtZiBjb3ZlcmFnZS54bWwgLW4g
JFRPWEVOVgorICAgIGZpCisKK25vdGlmaWNhdGlvbnM6CisgIGlyYzoKKyAgICBjaGFubmVsczoK
KyAgICAgIC0gImNoYXQuZnJlZW5vZGUubmV0I3B5dGVzdCIKKyAgICBvbl9zdWNjZXNzOiBjaGFu
Z2UKKyAgICBvbl9mYWlsdXJlOiBjaGFuZ2UKKyAgICBza2lwX2pvaW46IHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L0NIQU5HRUxPRy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9DSEFOR0VMT0cucnN0
CmluZGV4IDkxYmY1M2ZkY2NiNS4uMDUzNmRkYTAzYTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9DSEFOR0VMT0cucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L0NIQU5HRUxPRy5yc3QKQEAgLTEsNSAr
MSwxODAgQEAKLTAuNi4wCi0tLS0tLQorPT09PT09PT09CitDaGFuZ2Vsb2cKKz09PT09PT09PQor
CisuLiB0b3duY3JpZXIgcmVsZWFzZSBub3RlcyBzdGFydAorCitwbHVnZ3kgMC4xMy4xICgyMDE5
LTExLTIxKQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVHJpdmlhbC9JbnRlcm5hbCBD
aGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzIzNiA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L3B1bGwvMjM2PmBfOiBJbXByb3ZlZCBkb2N1bWVudGF0
aW9uLCBlc3BlY2lhbGx5IHdpdGggcmVnYXJkIHRvIHJlZmVyZW5jZXMuCisKKworcGx1Z2d5IDAu
MTMuMCAoMjAxOS0wOS0xMCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RyaXZpYWwv
SW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMyMjIgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMjIyPmBfOiBSZXBsYWNl
IGBgaW1wb3J0bGliX21ldGFkYXRhYGAgYmFja3BvcnQgd2l0aCBgYGltcG9ydGxpYi5tZXRhZGF0
YWBgIGZyb20gdGhlCisgIHN0YW5kYXJkIGxpYnJhcnkgb24gUHl0aG9uIDMuOCsuCisKKworcGx1
Z2d5IDAuMTIuMCAoMjAxOS0wNS0yNykKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0Zl
YXR1cmVzCistLS0tLS0tLQorCistIGAjMjE1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9wbHVnZ3kvaXNzdWVzLzIxNT5gXzogU3dpdGNoIGZyb20gYGBwa2dfcmVzb3VyY2VzYGAgdG8g
YGBpbXBvcnRsaWItbWV0YWRhdGFgYCBmb3IgZW50cnlwb2ludCBkZXRlY3Rpb24gZm9yIGltcHJv
dmVkIHBlcmZvcm1hbmNlIGFuZCBpbXBvcnQgdGltZS4gIFRoaXMgdGltZSB3aXRoIGBgLmVnZ2Bg
IHN1cHBvcnQuCisKKworcGx1Z2d5IDAuMTEuMCAoMjAxOS0wNS0wNykKKz09PT09PT09PT09PT09
PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMyMDUgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMjA1PmBfOiBSZXZlcnQgY2hhbmdl
cyBtYWRlIGluIDAuMTAuMCByZWxlYXNlIGJyZWFraW5nIGBgLmVnZ2BgIGluc3RhbGxzLgorCisK
K3BsdWdneSAwLjEwLjAgKDIwMTktMDUtMDcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PQor
CitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzE5OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcGx1Z2d5L2lzc3Vlcy8xOTk+YF86IFN3aXRjaCBmcm9tIGBgcGtnX3Jlc291cmNlc2Bg
IHRvIGBgaW1wb3J0bGliLW1ldGFkYXRhYGAgZm9yIGVudHJ5cG9pbnQgZGV0ZWN0aW9uIGZvciBp
bXByb3ZlZCBwZXJmb3JtYW5jZSBhbmQgaW1wb3J0IHRpbWUuCisKKworcGx1Z2d5IDAuOS4wICgy
MDE5LTAyLTIxKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0t
LS0KKworLSBgIzE4OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vl
cy8xODk+YF86IGBgUGx1Z2luTWFuYWdlci5sb2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHNgYCBu
b3cgYWNjZXB0cyBhIGBgbmFtZWBgIHBhcmFtZXRlciB0aGF0IHdoZW4gZ2l2ZW4gd2lsbAorICBs
b2FkIG9ubHkgZW50cnkgcG9pbnRzIHdpdGggdGhhdCBuYW1lLgorCisgIGBgUGx1Z2luTWFuYWdl
ci5sb2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHNgYCBhbHNvIG5vdyByZXR1cm5zIHRoZSBudW1i
ZXIgb2YgcGx1Z2lucyBsb2FkZWQgYnkgdGhlCisgIGNhbGwsIGFzIG9wcG9zZWQgdG8gdGhlIG51
bWJlciBvZiBhbGwgcGx1Z2lucyBsb2FkZWQgYnkgYWxsIGNhbGxzIHRvIHRoaXMgbWV0aG9kLgor
CisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzE4NyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xODc+YF86IEZpeCBpbnRlcm5hbCBgYHZhcm5hbWVz
YGAgZnVuY3Rpb24gZm9yIFB5UHkzLgorCisKK3BsdWdneSAwLjguMSAoMjAxOC0xMS0wOSkKKz09
PT09PT09PT09PT09PT09PT09PT09PT0KKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzE2NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNjY+YF86IEFkZCBgYHN0YWNrbGV2ZWw9MmBgIHRvIGltcGxw
cmVmaXggd2FybmluZyBzbyB0aGF0IHRoZSByZXBvcnRlZCBsb2NhdGlvbiBvZiB3YXJuaW5nIGlz
IHRoZSBjYWxsZXIgb2YgUGx1Z2luTWFuYWdlci4KKworCitwbHVnZ3kgMC44LjAgKDIwMTgtMTAt
MTUpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZlYXR1cmVzCistLS0tLS0tLQorCist
IGAjMTc3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzE3Nz5g
XzogQWRkIGBgZ2V0X2hvb2tpbXBscygpYGAgbWV0aG9kIHRvIGhvb2sgY2FsbGVycy4KKworCisK
K1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0g
YCMxNjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTY1PmBf
OiBBZGQgY2hhbmdlbG9nIGluIGxvbmcgcGFja2FnZSBkZXNjcmlwdGlvbiBhbmQgZG9jdW1lbnRh
dGlvbi4KKworCistIGAjMTcyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kv
aXNzdWVzLzE3Mj5gXzogQWRkIGEgdGVzdCBleGVtcGxpZnlpbmcgdGhlIG9wdC1pbiBuYXR1cmUg
b2Ygc3BlYyBkZWZpbmVkIGFyZ3MuCisKKworLSBgIzU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzU3PmBfOiBFbmNhcHN1bGF0ZSBob29rIHNwZWNpZmljYXRp
b25zIGluIGEgdHlwZSBmb3IgZWFzaWVyIGludHJvc3BlY3Rpb24uCisKKworcGx1Z2d5IDAuNy4x
ICgyMDE4LTA3LTI4KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitEZXByZWNhdGlvbnMg
YW5kIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMxMTYgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1ZXMvMTE2PmBfOiBEZXByZWNhdGUg
dGhlIGBgaW1wbHByZWZpeGBgIGt3YXJnIHRvIGBgUGx1Z2luTWFuYWdlcmBgIGFuZCBpbnN0ZWFk
CisgIGV4cGVjdCB1c2VycyB0byBzdGFydCB1c2luZyBleHBsaWNpdCBgYEhvb2tpbXBsTWFya2Vy
YGAgZXZlcnl3aGVyZS4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjMTIyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzEyMj5gXzogQWRkIGBgLnBs
dWdpbmBgIG1lbWJlciB0byBgYFBsdWdpblZhbGlkYXRpb25FcnJvcmBgIHRvIGFjY2VzcyBmYWls
aW5nIHBsdWdpbiBkdXJpbmcgcG9zdC1tb3J0ZW0uCisKKworLSBgIzEzOCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xMzg+YF86IEFkZCBwZXIgaW1wbGVtZW50
YXRpb24gd2FybmluZ3Mgc3VwcG9ydCBmb3IgaG9va3NwZWNzIGFsbG93aW5nIGZvciBib3RoCisg
IGRlcHJlY2F0aW9uIGFuZCBmdXR1cmUgd2FybmluZ3Mgb2YgbGVnYWN5IGFuZCAoZnV0dXJlKSBl
eHBlcmltZW50YWwgaG9va3MKKyAgcmVzcGVjdGl2ZWx5LgorCisKKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzExMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lz
c3Vlcy8xMTA+YF86IEZpeCBhIGJ1ZyB3aGVyZSBgYF9Ib29rQ2FsbGVyLmNhbGxfaGlzdG9yaWMo
KWBgIHdvdWxkIGNhbGwgdGhlIGBgcHJvY2BgCisgIGFyZyBldmVuIHdoZW4gdGhlIGRlZmF1bHQg
aXMgYGBOb25lYGAgcmVzdWx0aW5nIGluIGEgYGBUeXBlRXJyb3JgYC4KKworLSBgIzE2MCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNjA+YF86IEZpeCBwcm9i
bGVtIHdoZW4gaGFuZGxpbmcgYGBWZXJzaW9uQ29uZmxpY3RgYCBlcnJvcnMgd2hlbiBsb2FkaW5n
IHNldHVwdG9vbHMgcGx1Z2lucy4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzEyMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcGx1Z2d5L2lzc3Vlcy8xMjM+YF86IERvY3VtZW50IGhvdyBleGNlcHRpb25zIGFyZSBoYW5k
bGVkIGFuZCBob3cgdGhlIGhvb2sgY2FsbCBsb29wCisgIHRlcm1pbmF0ZXMgaW1tZWRpYXRlbHkg
b24gdGhlIGZpcnN0IGVycm9yIHdoaWNoIGlzIHRoZW4gZGVsaXZlcmVkCisgIHRvIGFueSBzdXJy
b3VuZGluZyB3cmFwcGVycy4KKworCistIGAjMTM2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9wbHVnZ3kvaXNzdWVzLzEzNj5gXzogRG9jcyByZXdvcmsgaW5jbHVkaW5nIGEgbXVjaCBi
ZXR0ZXIgaW50cm9kdWN0aW9uIGFuZCBjb21wcmVoZW5zaXZlIGV4YW1wbGUKKyAgc2V0IGZvciBu
ZXcgdXNlcnMuIEEgYmlnIHRoYW5rcyBnb2VzIG91dCB0byBAb2Jlc3R3YWx0ZXIgZm9yIHRoZSBn
cmVhdCB3b3JrIQorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworLSBgIzExNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1
Z2d5L2lzc3Vlcy8xMTc+YF86IEJyZWFrIHVwIHRoZSBtYWluIG1vbm9saXRoaWMgcGFja2FnZSBt
b2R1bGVzIGludG8gc2VwYXJhdGUgbW9kdWxlcyBieSBjb25jZXJuCisKKworLSBgIzEzMSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xMzE+YF86IEF1dG9tYXRl
IGBgc2V0dXB0b29sc2BgIHdoZWVscyBidWlsZGluZyBhbmQgUHlQaSB1cGxvYWQgdXNpbmcgVHJh
dmlzQ0kuCisKKworLSBgIzE1MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5
L2lzc3Vlcy8xNTM+YF86IFJlb3JnYW5pemUgdGVzdHMgbW9yZSBhcHByb3ByaWF0ZWx5IGJ5IG1v
ZHVsZXMgcmVsYXRpbmcgdG8gZWFjaAorICBpbnRlcm5hbCBjb21wb25lbnQvZmVhdHVyZS4gVGhp
cyBpcyBpbiBhbiBlZmZvcnQgdG8gYXZvaWQgKGZ1dHVyZSkKKyAgZHVwbGljYXRpb24gYW5kIGJl
dHRlciBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zIGluIHRoZSB0ZXN0IHNldC4KKworCistIGAjMTU2
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvaXNzdWVzLzE1Nj5gXzogQWRk
IGBgSG9va0ltcGwuX19yZXByX18oKWBgIGZvciBiZXR0ZXIgZGVidWdnaW5nLgorCisKKy0gYCM2
NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy82Nj5gXzogU3Rh
cnQgdXNpbmcgYGB0b3duY3JpZXJgYCBhbmQgYSBjdXN0b20gYGB0b3hgYCBlbnZpcm9ubWVudCB0
byBwcmVwYXJlIHJlbGVhc2VzIQorCisKK3BsdWdneSAwLjcuMCAoVW5yZWxlYXNlZCkKKz09PT09
PT09PT09PT09PT09PT09PT09PT0KKworKiBgIzE2MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNjA+YF86IFdlIGRpc2NvdmVyZWQgYSBkZXBsb3ltZW50IGlz
c3VlIHNvIHRoaXMgdmVyc2lvbiB3YXMgbmV2ZXIgcmVsZWFzZWQgdG8gUHlQSSwgb25seSB0aGUg
dGFnIGV4aXN0cy4KKworcGx1Z2d5IDAuNi4wICgyMDE3LTExLTI0KQorPT09PT09PT09PT09PT09
PT09PT09PT09PQorCiAtIEFkZCBDSSB0ZXN0aW5nIGZvciB0aGUgZmVhdHVyZXMsIHJlbGVhc2Us
IGFuZCBtYXN0ZXIKICAgYnJhbmNoZXMgb2YgYGBweXRlc3RgYCAoUFIgYCM3OWBfKS4KIC0gRG9j
dW1lbnQgcHVibGljIEFQSSBmb3IgYGBfUmVzdWx0YGAgb2JqZWN0cyBwYXNzZWQgdG8gd3JhcHBl
cnMKQEAgLTI3LDggKzIwMiw5IEBACiAuLiBfIzEwMzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcGx1Z2d5L3B1bGwvMTAzCiAKIAotMC41LjIKLS0tLS0tCitwbHVnZ3kgMC41LjIgKDIw
MTctMDktMDYpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKIC0gZml4IGJ1ZyB3aGVyZSBg
YGZpcnN0cmVzdWx0YGAgd3JhcHBlcnMgd2VyZSBiZWluZyBzZW50IGFuIGluY29ycmVjdGx5IGNv
bmZpZ3VyZWQKICAgYGBfUmVzdWx0YGAgKGEgbGlzdCB3YXMgc2V0IGluc3RlYWQgb2YgYSBzaW5n
bGUgdmFsdWUpLiBBZGQgdGVzdHMgdG8gY2hlY2sgZm9yCiAgIHRoaXMgYXMgd2VsbCBhcyBgYF9S
ZXN1bHQuZm9yY2VfcmVzdWx0KClgYCBiZWhhdmlvdXIuIFRoYW5rcyB0byBgQHRnb29kbGV0YF8K
QEAgLTQ1LDE4ICsyMjEsMjAgQEAKIC4uIF8jODA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3BsdWdneS9wdWxsLzgwCiAKIAotMC41LjEKLS0tLS0tCitwbHVnZ3kgMC41LjEgKDIwMTct
MDgtMjkpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKIC0gZml4IGEgYnVnIGFuZCBhZGQg
dGVzdHMgZm9yIGNhc2Ugd2hlcmUgYGBmaXJzdHJlc3VsdGBgIGhvb2tzIHJldHVybgogICBgYE5v
bmVgYCByZXN1bHRzLiBUaGFua3MgdG8gYEBSb25ueVBmYW5uc2NobWlkdGBfIGFuZCBgQHRnb29k
bGV0YF8KICAgZm9yIHRoZSBpc3N1ZSAoYCM2OGBfKSBhbmQgUFIgKGAjNjlgXykgcmVzcGVjdGl2
ZWx5LgogCiAuLiBfIzY5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvcHVs
bC82OQotLi4gXyM2ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vz
ZXMvNjgKKy4uIF8jNjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS9pc3N1
ZXMvNjgKKwogCitwbHVnZ3kgMC41LjAgKDIwMTctMDgtMjgpCis9PT09PT09PT09PT09PT09PT09
PT09PT09CiAKLTAuNS4wCi0tLS0tLQogLSBmaXggYnVnIHdoZXJlIGNhbGxiYWNrcyBmb3IgaGlz
dG9yaWMgaG9va3Mgd291bGQgbm90IGJlIGNhbGxlZCBmb3IKICAgYWxyZWFkeSByZWdpc3RlcmVk
IHBsdWdpbnMuICBUaGFua3MgYEB2b2Rpa2BfIGZvciB0aGUgUFIKICAgYW5kIGBAaHBrNDJgXyBm
b3IgZnVydGhlciBmaXhlcy4KQEAgLTExNCw4ICsyOTIsOSBAQAogLi4gXyMxNDogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy8xNAogCiAKLTAuNC4wCi0tLS0tLQor
cGx1Z2d5IDAuNC4wICgyMDE2LTA5LTI1KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCiAt
IGFkZCBgYGhhc19wbHVnaW4obmFtZSlgYCBtZXRob2QgdG8gcGx1Z2lubWFuYWdlci4gIHRoYW5r
cyBgQG5pY29kZGVtdXNgXy4KIAogLSBmaXggYCMxMWBfOiBtYWtlIHBsdWdpbiBwYXJzaW5nIG1v
cmUgcmVzaWxpZW50IGFnYWluc3QgZXhjZXB0aW9ucwpAQCAtMTMxLDE5ICszMTAsMjEgQEAKIC4u
IF8jNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5L2lzc3Vlcy80CiAKIAot
MC4zLjEKLS0tLS0tCitwbHVnZ3kgMC4zLjEgKDIwMTUtMDktMTcpCis9PT09PT09PT09PT09PT09
PT09PT09PT09CisKIC0gYXZvaWQgdXNpbmcgZGVwcmVjYXRlZC1pbi1weXRob24zLjUgZ2V0YXJn
c3BlYyBtZXRob2QuIFRoYW5rcwogICBgQG1kYm9vbWBfLgogCiAKLTAuMy4wCi0tLS0tLQorcGx1
Z2d5IDAuMy4wICgyMDE1LTA1LTA3KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCiBpbml0
aWFsIHJlbGVhc2UKIAogLi4gY29udHJpYnV0b3JzCiAuLiBfQGhwazQyOiBodHRwczovL2dpdGh1
Yi5jb20vaHBrNDIKLS4uIF9AdGdvb2RsZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS90Z29vZGxldAor
Li4gX0B0Z29vZGxldDogaHR0cHM6Ly9naXRodWIuY29tL2dvb2Rib3kKIC4uIF9ATWljaGFsVEhF
RFVERTogaHR0cHM6Ly9naXRodWIuY29tL01pY2hhbFRIRURVREUKIC4uIF9Adm9kaWs6IGh0dHBz
Oi8vZ2l0aHViLmNvbS92b2RpawogLi4gX0BSb25ueVBmYW5uc2NobWlkdDogaHR0cHM6Ly9naXRo
dWIuY29tL1Jvbm55UGZhbm5zY2htaWR0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9IT1dUT1JF
TEVBU0UucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvSE9XVE9SRUxFQVNFLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwY2M0ZmRlZWMwZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L0hPV1RPUkVMRUFTRS5yc3QKQEAgLTAsMCArMSwyMyBAQAorUmVsZWFzZSBQ
cm9jZWR1cmUKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyMuIEZyb20gYSBjbGVhbiB3b3JrIHRyZWUs
IGV4ZWN1dGU6OgorCisgICAgdG94IC1lIHJlbGVhc2UgLS0gVkVSU0lPTgorCisgICBUaGlzIHdp
bGwgY3JlYXRlIHRoZSBicmFuY2ggcmVhZHkgdG8gYmUgcHVzaGVkLgorCisjLiBPcGVuIGEgUFIg
dGFyZ2V0aW5nIGBgbWFzdGVyYGAuCisKKyMuIEFsbCB0ZXN0cyBtdXN0IHBhc3MgYW5kIHRoZSBQ
UiBtdXN0IGJlIGFwcHJvdmVkIGJ5IGF0IGxlYXN0IGFub3RoZXIgbWFpbnRhaW5lci4KKworIy4g
UHVibGlzaCB0byBQeVBJIGJ5IHB1c2hpbmcgYSB0YWc6OgorCisgICAgIGdpdCB0YWcgWC5ZLlog
cmVsZWFzZS1YLlkuWgorICAgICBnaXQgcHVzaCBnaXRAZ2l0aHViLmNvbTpweXRlc3QtZGV2L3Bs
dWdneS5naXQgWC5ZLloKKworICAgVGhlIHRhZyB3aWxsIHRyaWdnZXIgYSBuZXcgYnVpbGQsIHdo
aWNoIHdpbGwgZGVwbG95IHRvIFB5UEkuCisKKyMuIE1ha2Ugc3VyZSBpdCBpcyBgYXZhaWxhYmxl
IG9uIFB5UEkgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9wbHVnZ3k+YF8uCisKKyMuIE1lcmdl
IHRoZSBQUiBpbnRvIGBgbWFzdGVyYGAsIGVpdGhlciBtYW51YWxseSBvciB1c2luZyBHaXRIdWIn
cyB3ZWIgaW50ZXJmYWNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvTElDRU5TRSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L0xJQ0VOU0UKaW5kZXggMTIxMDE3ZDA4NjZhLi44NWY0ZGQ2M2QyZGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L0xJQ0VOU0UKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvTElDRU5TRQpAQCAtMSw2
ICsxLDYgQEAKIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogCi1Db3B5cmlnaHQgKGMpIDIwMTUgaG9s
Z2VyIGtyZWtlbCAocmF0aGVyIHVzZXMgYml0YnVja2V0L2hwazQyKSAKK0NvcHlyaWdodCAoYykg
MjAxNSBob2xnZXIga3Jla2VsIChyYXRoZXIgdXNlcyBiaXRidWNrZXQvaHBrNDIpCiAKIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh
dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0xOSw0ICsxOSwzIEBAIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQog
U09GVFdBUkUuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L1JFQURNRS5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS9SRUFETUUucnN0CmluZGV4IDM2MzZiNmVjNjQyNS4uYjc5ZWYwMjQ2MDE4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS9SRUFETUUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L1JFQURNRS5yc3QK
QEAgLTEsMTQgKzEsMTUgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KIHBsdWdneSAtIEEgbWluaW1hbGlzdCBwcm9kdWN0aW9uIHJlYWR5IHBs
dWdpbiBzeXN0ZW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLXxweXBpfCB8YW5hY29uZGF8IHx2ZXJzaW9uc3wgfHRyYXZpc3wgfGFwcHZleW9y
fAogCit8cHlwaXwgfGNvbmRhLWZvcmdlfCB8dmVyc2lvbnN8IHx0cmF2aXN8IHxhcHB2ZXlvcnwg
fGdpdHRlcnwgfGJsYWNrfCB8Y29kZWNvdnwKIAogVGhpcyBpcyB0aGUgY29yZSBmcmFtZXdvcmsg
dXNlZCBieSB0aGUgYHB5dGVzdGBfLCBgdG94YF8sIGFuZCBgZGV2cGlgXyBwcm9qZWN0cy4KIAog
UGxlYXNlIGByZWFkIHRoZSBkb2NzYF8gdG8gbGVhcm4gbW9yZSEKIAogQSBkZWZpbml0aXZlIGV4
YW1wbGUKLSoqKioqKioqKioqKioqKioqKioqCis9PT09PT09PT09PT09PT09PT09PQogLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1wb3J0IHBsdWdneQpAQCAtMjAsNiArMjEsNyBAQCBB
IGRlZmluaXRpdmUgZXhhbXBsZQogICAgIGNsYXNzIE15U3BlYyhvYmplY3QpOgogICAgICAgICAi
IiJBIGhvb2sgc3BlY2lmaWNhdGlvbiBuYW1lc3BhY2UuCiAgICAgICAgICIiIgorCiAgICAgICAg
IEBob29rc3BlYwogICAgICAgICBkZWYgbXlob29rKHNlbGYsIGFyZzEsIGFyZzIpOgogICAgICAg
ICAgICAgIiIiTXkgc3BlY2lhbCBsaXR0bGUgaG9vayB0aGF0IHlvdSBjYW4gY3VzdG9taXplLgpA
QCAtMjksNiArMzEsNyBAQCBBIGRlZmluaXRpdmUgZXhhbXBsZQogICAgIGNsYXNzIFBsdWdpbl8x
KG9iamVjdCk6CiAgICAgICAgICIiIkEgaG9vayBpbXBsZW1lbnRhdGlvbiBuYW1lc3BhY2UuCiAg
ICAgICAgICIiIgorCiAgICAgICAgIEBob29raW1wbAogICAgICAgICBkZWYgbXlob29rKHNlbGYs
IGFyZzEsIGFyZzIpOgogICAgICAgICAgICAgcHJpbnQoImluc2lkZSBQbHVnaW5fMS5teWhvb2so
KSIpCkBAIC0zOCw2ICs0MSw3IEBAIEEgZGVmaW5pdGl2ZSBleGFtcGxlCiAgICAgY2xhc3MgUGx1
Z2luXzIob2JqZWN0KToKICAgICAgICAgIiIiQSAybmQgaG9vayBpbXBsZW1lbnRhdGlvbiBuYW1l
c3BhY2UuCiAgICAgICAgICIiIgorCiAgICAgICAgIEBob29raW1wbAogICAgICAgICBkZWYgbXlo
b29rKHNlbGYsIGFyZzEsIGFyZzIpOgogICAgICAgICAgICAgcHJpbnQoImluc2lkZSBQbHVnaW5f
Mi5teWhvb2soKSIpCkBAIC01MiwyMiArNTYsNDYgQEAgQSBkZWZpbml0aXZlIGV4YW1wbGUKICAg
ICBwbS5yZWdpc3RlcihQbHVnaW5fMSgpKQogICAgIHBtLnJlZ2lzdGVyKFBsdWdpbl8yKCkpCiAK
LSAgICAjIGNhbGwgb3VyIGBteWhvb2tgIGhvb2sKKyAgICAjIGNhbGwgb3VyIGBgbXlob29rYGAg
aG9vawogICAgIHJlc3VsdHMgPSBwbS5ob29rLm15aG9vayhhcmcxPTEsIGFyZzI9MikKICAgICBw
cmludChyZXN1bHRzKQogCiAKK1J1bm5pbmcgdGhpcyBkaXJlY3RseSBnZXRzIHVzOjoKKworICAg
ICQgcHl0aG9uIGRvY3MvZXhhbXBsZXMvdG95LWV4YW1wbGUucHkKKyAgICBpbnNpZGUgUGx1Z2lu
XzIubXlob29rKCkKKyAgICBpbnNpZGUgUGx1Z2luXzEubXlob29rKCkKKyAgICBbLTEsIDNdCisK
KwogLi4gYmFkZ2VzCisKIC4uIHxweXBpfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8v
cHlwaS92L3BsdWdneS5zdmcKLSAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9w
eXBpL3BsdWdneQorICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHlwaS9wbHVnZ3kKKwog
Li4gfHZlcnNpb25zfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNp
b25zL3BsdWdneS5zdmcKLSAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBp
L3BsdWdneQorICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHlwaS9wbHVnZ3kKKwogLi4g
fHRyYXZpc3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3RyYXZpcy9weXRlc3QtZGV2
L3BsdWdneS9tYXN0ZXIuc3ZnCiAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3B5
dGVzdC1kZXYvcGx1Z2d5CisKIC4uIHxhcHB2ZXlvcnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGll
bGRzLmlvL2FwcHZleW9yL2NpL3B5dGVzdGJvdC9wbHVnZ3kvbWFzdGVyLnN2ZwogICAgIDp0YXJn
ZXQ6IGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvcHl0ZXN0Ym90L3BsdWdneQotLi4g
fGFuYWNvbmRhfCBpbWFnZTo6IGh0dHBzOi8vYW5hY29uZGEub3JnL2NvbmRhLWZvcmdlL3BsdWdn
eS9iYWRnZXMvdmVyc2lvbi5zdmcKLSAgICA6dGFyZ2V0OiBodHRwczovL2FuYWNvbmRhLm9yZy9j
b25kYS1mb3JnZS9wbHVnZ3kKKworLi4gfGNvbmRhLWZvcmdlfCBpbWFnZTo6IGh0dHBzOi8vaW1n
LnNoaWVsZHMuaW8vY29uZGEvdm4vY29uZGEtZm9yZ2UvcGx1Z2d5LnN2ZworICAgIDp0YXJnZXQ6
IGh0dHBzOi8vYW5hY29uZGEub3JnL2NvbmRhLWZvcmdlL3B5dGVzdAorCisuLiB8Z2l0dGVyfCBp
bWFnZTo6IGh0dHBzOi8vYmFkZ2VzLmdpdHRlci5pbS9weXRlc3QtZGV2L3BsdWdneS5zdmcKKyAg
ICA6YWx0OiBKb2luIHRoZSBjaGF0IGF0IGh0dHBzOi8vZ2l0dGVyLmltL3B5dGVzdC1kZXYvcGx1
Z2d5CisgICAgOnRhcmdldDogaHR0cHM6Ly9naXR0ZXIuaW0vcHl0ZXN0LWRldi9wbHVnZ3k/dXRt
X3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1f
Y29udGVudD1iYWRnZQorCisuLiB8YmxhY2t8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5p
by9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9hbWJ2L2JsYWNrCisKKy4uIHxjb2RlY292fCBpbWFnZTo6IGh0dHBzOi8v
Y29kZWNvdi5pby9naC9weXRlc3QtZGV2L3BsdWdneS9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdl
LnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNvdi5pby9naC9weXRlc3QtZGV2L3BsdWdn
eQorICAgIDphbHQ6IENvZGUgY292ZXJhZ2UgU3RhdHVzCiAKIC4uIGxpbmtzCiAuLiBfcHl0ZXN0
OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvYXBwdmV5b3IueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvYXBw
dmV5b3IueW1sCmluZGV4IGMzOTAzZjhiZmNjNi4uMWZjMTJmZmYzOTcyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS9hcHB2ZXlvci55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvYXBwdmV5b3IueW1sCkBA
IC0xLDE1ICsxLDE0IEBACiBlbnZpcm9ubWVudDoKICAgbWF0cml4OgogICAjIG5vdGU6IHBsZWFz
ZSB1c2UgInRveCAtLWxpc3RlbnZzIiB0byBwb3B1bGF0ZSB0aGUgYnVpbGQgbWF0cml4IGJlbG93
Ci0gIC0gVE9YRU5WOiAiY2hlY2siCisgIC0gVE9YRU5WOiAibGludGluZyIKICAgLSBUT1hFTlY6
ICJkb2NzIgotICAtIFRPWEVOVjogInB5MjctcHl0ZXN0cmVsZWFzZSIKLSAgLSBUT1hFTlY6ICJw
eTM0LXB5dGVzdHJlbGVhc2UiCi0gIC0gVE9YRU5WOiAicHkzNS1weXRlc3RyZWxlYXNlIgotICAt
IFRPWEVOVjogInB5MzYtcHl0ZXN0cmVsZWFzZSIKLSAgLSBUT1hFTlY6ICJweXB5LXB5dGVzdHJl
bGVhc2UiCi0gIC0gVE9YRU5WOiAicHkyNy1weXRlc3RtYXN0ZXIiCi0gIC0gVE9YRU5WOiAicHky
Ny1weXRlc3RmZWF0dXJlcyIKKyAgLSBUT1hFTlY6ICJweTI3IgorICAtIFRPWEVOVjogInB5MzQi
CisgIC0gVE9YRU5WOiAicHkzNSIKKyAgLSBUT1hFTlY6ICJweTM2IgorICAtIFRPWEVOVjogInB5
MzciCisgIC0gVE9YRU5WOiAicHlweSIKICAgLSBUT1hFTlY6ICJweTM2LXB5dGVzdG1hc3RlciIK
ICAgLSBUT1hFTlY6ICJweTM2LXB5dGVzdGZlYXR1cmVzIgogCkBAIC0yNiw5ICsyNSwxNCBAQCBp
bnN0YWxsOgogICAtIGVjaG8gUHlQeSBpbnN0YWxsZWQKICAgLSBweXB5IC0tdmVyc2lvbgogCi0g
IC0gQzpcUHl0aG9uMzVccHl0aG9uIC1tIHBpcCBpbnN0YWxsIHRveAorICAtIEM6XFB5dGhvbjM1
XHB5dGhvbiAtbSBwaXAgaW5zdGFsbCAtVSBwaXAKKyAgLSBDOlxQeXRob24zNVxweXRob24gLW0g
cGlwIGluc3RhbGwgLVUgLS1mb3JjZS1yZWluc3RhbGwgc2V0dXB0b29scyB0b3gKIAogYnVpbGQ6
IGZhbHNlICAjIE5vdCBhIEMjIHByb2plY3QsIGJ1aWxkIHN0dWZmIGF0IHRoZSB0ZXN0IHN0ZXAg
aW5zdGVhZC4KIAogdGVzdF9zY3JpcHQ6Ci0gIC0gQzpcUHl0aG9uMzVccHl0aG9uIC1tIHRveAor
ICAtIEM6XFB5dGhvbjM1XFNjcmlwdHNcdG94CisKKyMgV2UgZG9uJ3QgZGVwbG95IGFueXRoaW5n
IG9uIHRhZ3Mgd2l0aCBBcHBWZXlvciwgd2UgdXNlIFRyYXZpcyBpbnN0ZWFkLCBzbyB3ZQorIyBt
aWdodCBhcyB3ZWxsIHNhdmUgcmVzb3VyY2VzCitza2lwX3RhZ3M6IHRydWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L2NoYW5nZWxvZy9SRUFETUUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvY2hhbmdlbG9n
L1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40N2Uy
MWZiMzNmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9jaGFuZ2Vsb2cvUkVBRE1F
LnJzdApAQCAtMCwwICsxLDMyIEBACitUaGlzIGRpcmVjdG9yeSBjb250YWlucyAibmV3c2ZyYWdt
ZW50cyIgd2hpY2ggYXJlIHNob3J0IGZpbGVzIHRoYXQgY29udGFpbiBhIHNtYWxsICoqUmVTVCoq
LWZvcm1hdHRlZAordGV4dCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG5leHQgYGBDSEFOR0VM
T0dgYC4KKworVGhlIGBgQ0hBTkdFTE9HYGAgd2lsbCBiZSByZWFkIGJ5IHVzZXJzLCBzbyB0aGlz
IGRlc2NyaXB0aW9uIHNob3VsZCBiZSBhaW1lZCB0byBweXRlc3QgdXNlcnMKK2luc3RlYWQgb2Yg
ZGVzY3JpYmluZyBpbnRlcm5hbCBjaGFuZ2VzIHdoaWNoIGFyZSBvbmx5IHJlbGV2YW50IHRvIHRo
ZSBkZXZlbG9wZXJzLgorCitNYWtlIHN1cmUgdG8gdXNlIGZ1bGwgc2VudGVuY2VzIHdpdGggY29y
cmVjdCBjYXNlIGFuZCBwdW5jdHVhdGlvbiwgZm9yIGV4YW1wbGU6OgorCisgICAgRml4IGlzc3Vl
IHdpdGggbm9uLWFzY2lpIG1lc3NhZ2VzIGZyb20gdGhlIGBgd2FybmluZ3NgYCBtb2R1bGUuCisK
K0VhY2ggZmlsZSBzaG91bGQgYmUgbmFtZWQgbGlrZSBgYDxJU1NVRT4uPFRZUEU+LnJzdGBgLCB3
aGVyZQorYGA8SVNTVUU+YGAgaXMgYW4gaXNzdWUgbnVtYmVyLCBhbmQgYGA8VFlQRT5gYCBpcyBv
bmUgb2Y6CisKKyogYGBmZWF0dXJlYGA6IG5ldyB1c2VyIGZhY2luZyBmZWF0dXJlcywgbGlrZSBu
ZXcgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIG5ldyBiZWhhdmlvci4KKyogYGBidWdmaXhgYDog
Zml4ZXMgYSByZXBvcnRlZCBidWcuCisqIGBgZG9jYGA6IGRvY3VtZW50YXRpb24gaW1wcm92ZW1l
bnQsIGxpa2UgcmV3b3JkaW5nIGFuIGVudGlyZSBzZXNzaW9uIG9yIGFkZGluZyBtaXNzaW5nIGRv
Y3MuCisqIGBgcmVtb3ZhbGBgOiBmZWF0dXJlIGRlcHJlY2F0aW9uIG9yIHJlbW92YWwuCisqIGBg
dmVuZG9yYGA6IGNoYW5nZXMgaW4gcGFja2FnZXMgdmVuZG9yZWQgaW4gcHl0ZXN0LgorKiBgYHRy
aXZpYWxgYDogZml4aW5nIGEgc21hbGwgdHlwbyBvciBpbnRlcm5hbCBjaGFuZ2UgdGhhdCBtaWdo
dCBiZSBub3Rld29ydGh5LgorCitTbyBmb3IgZXhhbXBsZTogYGAxMjMuZmVhdHVyZS5yc3RgYCwg
YGA0NTYuYnVnZml4LnJzdGBgLgorCitJZiB5b3VyIFBSIGZpeGVzIGFuIGlzc3VlLCB1c2UgdGhh
dCBudW1iZXIgaGVyZS4gSWYgdGhlcmUgaXMgbm8gaXNzdWUsCit0aGVuIGFmdGVyIHlvdSBzdWJt
aXQgdGhlIFBSIGFuZCBnZXQgdGhlIFBSIG51bWJlciB5b3UgY2FuIGFkZCBhCitjaGFuZ2Vsb2cg
dXNpbmcgdGhhdCBpbnN0ZWFkLgorCitJZiB5b3UgYXJlIG5vdCBzdXJlIHdoYXQgaXNzdWUgdHlw
ZSB0byB1c2UsIGRvbid0IGhlc2l0YXRlIHRvIGFzayBpbiB5b3VyIFBSLgorCitgYHRvd25jcmll
cmBgIHByZXNlcnZlcyBtdWx0aXBsZSBwYXJhZ3JhcGhzIGFuZCBmb3JtYXR0aW5nIChjb2RlIGJs
b2NrcywgbGlzdHMsIGFuZCBzbyBvbiksIGJ1dCBmb3IgZW50cmllcworb3RoZXIgdGhhbiBgYGZl
YXR1cmVzYGAgaXQgaXMgdXN1YWxseSBiZXR0ZXIgdG8gc3RpY2sgdG8gYSBzaW5nbGUgcGFyYWdy
YXBoIHRvIGtlZXAgaXQgY29uY2lzZS4gWW91IGNhbiBpbnN0YWxsCitgYHRvd25jcmllcmBgIGFu
ZCB0aGVuIHJ1biBgYHRvd25jcmllciAtLWRyYWZ0YGAKK2lmIHlvdSB3YW50IHRvIGdldCBhIHBy
ZXZpZXcgb2YgaG93IHlvdXIgY2hhbmdlIHdpbGwgbG9vayBpbiB0aGUgZmluYWwgcmVsZWFzZSBu
b3Rlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2NoYW5nZWxvZy9fdGVtcGxhdGUucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvY2hhbmdlbG9nL190ZW1wbGF0ZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi45NzRlNWMxYjJkZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9jaGFuZ2Vsb2cvX3RlbXBsYXRlLnJzdApAQCAtMCwwICsxLDQwIEBACit7JSBmb3Ig
c2VjdGlvbiBpbiBzZWN0aW9ucyAlfQoreyUgc2V0IHVuZGVybGluZSA9ICItIiAlfQoreyUgaWYg
c2VjdGlvbiAlfQore3tzZWN0aW9ufX0KK3t7IHVuZGVybGluZSAqIHNlY3Rpb258bGVuZ3RoIH19
eyUgc2V0IHVuZGVybGluZSA9ICJ+IiAlfQorCit7JSBlbmRpZiAlfQoreyUgaWYgc2VjdGlvbnNb
c2VjdGlvbl0gJX0KK3slIGZvciBjYXRlZ29yeSwgdmFsIGluIGRlZmluaXRpb25zLml0ZW1zKCkg
aWYgY2F0ZWdvcnkgaW4gc2VjdGlvbnNbc2VjdGlvbl0gJX0KKwore3sgZGVmaW5pdGlvbnNbY2F0
ZWdvcnldWyduYW1lJ10gfX0KK3t7IHVuZGVybGluZSAqIGRlZmluaXRpb25zW2NhdGVnb3J5XVsn
bmFtZSddfGxlbmd0aCB9fQorCit7JSBpZiBkZWZpbml0aW9uc1tjYXRlZ29yeV1bJ3Nob3djb250
ZW50J10gJX0KK3slIGZvciB0ZXh0LCB2YWx1ZXMgaW4gc2VjdGlvbnNbc2VjdGlvbl1bY2F0ZWdv
cnldfGRpY3Rzb3J0KGJ5PSd2YWx1ZScpICV9Cit7JSBzZXQgaXNzdWVfam9pbmVyID0gam9pbmVy
KCcsICcpICV9CistIHslIGZvciB2YWx1ZSBpbiB2YWx1ZXN8c29ydCAlfXt7IGlzc3VlX2pvaW5l
cigpIH19YHt7IHZhbHVlIH19IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kv
aXNzdWVzL3t7IHZhbHVlWzE6XSB9fT5gX3slIGVuZGZvciAlfToge3sgdGV4dCB9fQorCisKK3sl
IGVuZGZvciAlfQoreyUgZWxzZSAlfQorLSB7eyBzZWN0aW9uc1tzZWN0aW9uXVtjYXRlZ29yeV1b
JyddfHNvcnR8am9pbignLCAnKSB9fQorCisKK3slIGVuZGlmICV9Cit7JSBpZiBzZWN0aW9uc1tz
ZWN0aW9uXVtjYXRlZ29yeV18bGVuZ3RoID09IDAgJX0KKworTm8gc2lnbmlmaWNhbnQgY2hhbmdl
cy4KKworCit7JSBlbHNlICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbHNlICV9
CisKK05vIHNpZ25pZmljYW50IGNoYW5nZXMuCisKKworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAl
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9fc3RhdGljL2ltZy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L2RvY3MvX3N0YXRpYy9pbWcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NWM2Nzk1YmExYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L2RvY3MvX3N0YXRpYy9pbWcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL19zdGF0aWMvaW1nL3Bs
dWcucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2FwaV9yZWZlcmVuY2UucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvZG9jcy9hcGlfcmVmZXJlbmNlLnJzdAppbmRleCBhYTE1MTM1YWQzZGYuLjM5
M2QwYWViZWEwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9hcGlfcmVmZXJlbmNlLnJz
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2FwaV9yZWZlcmVuY2UucnN0CkBAIC0xLDMgKzEsNSBA
QAorOm9ycGhhbjoKKwogQXBpIFJlZmVyZW5jZQogPT09PT09PT09PT09PQogCkBAIC02LDkgKzgs
MTIgQEAgQXBpIFJlZmVyZW5jZQogICAgIDp1bmRvYy1tZW1iZXJzOgogICAgIDpzaG93LWluaGVy
aXRhbmNlOgogCisuLiBhdXRvY2xhc3M6OiBwbHVnZ3kuY2FsbGVycy5fUmVzdWx0CisuLiBhdXRv
bWV0aG9kOjogcGx1Z2d5LmNhbGxlcnMuX1Jlc3VsdC5nZXRfcmVzdWx0CisuLiBhdXRvbWV0aG9k
OjogcGx1Z2d5LmNhbGxlcnMuX1Jlc3VsdC5mb3JjZV9yZXN1bHQKIAotLi4gYXV0b21ldGhvZDo6
IHBsdWdneS5fUmVzdWx0LmdldF9yZXN1bHQKLQotLi4gYXV0b21ldGhvZDo6IHBsdWdneS5fUmVz
dWx0LmZvcmNlX3Jlc3VsdAorLi4gYXV0b2NsYXNzOjogcGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVy
CisuLiBhdXRvbWV0aG9kOjogcGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyLmNhbGxfZXh0cmEKKy4u
IGF1dG9tZXRob2Q6OiBwbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXIuY2FsbF9oaXN0b3JpYwogCi0u
LiBhdXRvbWV0aG9kOjogcGx1Z2d5Ll9Ib29rQ2FsbGVyLmNhbGxfZXh0cmEKKy4uIGF1dG9jbGFz
czo6IHBsdWdneS5ob29rcy5fSG9va1JlbGF5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2Nz
L2NoYW5nZWxvZy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2NoYW5nZWxvZy5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NjViMDUyMWQwYzIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2NoYW5nZWxvZy5yc3QKQEAgLTAsMCArMSBAQAorLi4g
aW5jbHVkZTo6IC4uL0NIQU5HRUxPRy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3Mv
Y29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvY29uZi5weQppbmRleCAwNDA2NTIxOGZkYTAuLjQy
ODI5ODUwZDg5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9jb25mLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L2RvY3MvY29uZi5weQpAQCAtMSw1OSArMSw2NSBAQAogIyAtKi0gY29kaW5nOiB1
dGYtOCAtKi0KLWltcG9ydCBwa2dfcmVzb3VyY2VzCitpbXBvcnQgc3lzCisKK2lmIHN5cy52ZXJz
aW9uX2luZm8gPj0gKDMsIDgpOgorICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtZXRhZGF0YQor
ZWxzZToKKyAgICBpbXBvcnQgaW1wb3J0bGliX21ldGFkYXRhIGFzIG1ldGFkYXRhCiAKIAogZXh0
ZW5zaW9ucyA9IFsKLSAgICAnc3BoaW54LmV4dC5hdXRvZG9jJywKLSAgICAnc3BoaW54LmV4dC5k
b2N0ZXN0JywKLSAgICAnc3BoaW54LmV4dC5pbnRlcnNwaGlueCcsCi0gICAgJ3NwaGlueC5leHQu
Y292ZXJhZ2UnLAotICAgICdzcGhpbnguZXh0LnZpZXdjb2RlJywKKyAgICAic3BoaW54LmV4dC5h
dXRvZG9jIiwKKyAgICAic3BoaW54LmV4dC5kb2N0ZXN0IiwKKyAgICAic3BoaW54LmV4dC5pbnRl
cnNwaGlueCIsCisgICAgInNwaGlueC5leHQuY292ZXJhZ2UiLAorICAgICJzcGhpbnguZXh0LnZp
ZXdjb2RlIiwKIF0KIAogIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0ZXMgaGVy
ZSwgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCi10ZW1wbGF0ZXNfcGF0aCA9IFsnX3RlbXBs
YXRlcyddCit0ZW1wbGF0ZXNfcGF0aCA9IFsiX3RlbXBsYXRlcyJdCiAKLXNvdXJjZV9zdWZmaXgg
PSAnLnJzdCcKK3NvdXJjZV9zdWZmaXggPSAiLnJzdCIKIAogIyBUaGUgbWFzdGVyIHRvY3RyZWUg
ZG9jdW1lbnQuCi1tYXN0ZXJfZG9jID0gJ2luZGV4JworbWFzdGVyX2RvYyA9ICJpbmRleCIKIAog
IyBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LgogCi1kaXN0ID0gcGtnX3Jl
c291cmNlcy5nZXRfZGlzdHJpYnV0aW9uKCdwbHVnZ3knKQotcHJvamVjdCA9IGRpc3QucHJvamVj
dF9uYW1lCi1jb3B5cmlnaHQgPSB1JzIwMTYsIEhvbGdlciBLcmVrZWwnCi1hdXRob3IgPSAnSG9s
Z2VyIEtyZWtlbCcKK3Byb2plY3QgPSAicGx1Z2d5IgorY29weXJpZ2h0ID0gdSIyMDE2LCBIb2xn
ZXIgS3Jla2VsIgorYXV0aG9yID0gIkhvbGdlciBLcmVrZWwiCiAKLXJlbGVhc2UgPSBkaXN0LnZl
cnNpb24KK3JlbGVhc2UgPSBtZXRhZGF0YS52ZXJzaW9uKHByb2plY3QpCiAjIFRoZSBzaG9ydCBY
LlkgdmVyc2lvbi4KLXZlcnNpb24gPSB1Jy4nLmpvaW4oZGlzdC52ZXJzaW9uLnNwbGl0KCcuJylb
OjJdKQordmVyc2lvbiA9IHUiLiIuam9pbihyZWxlYXNlLnNwbGl0KCIuIilbOjJdKQogCiAKIGxh
bmd1YWdlID0gTm9uZQogCi1weWdtZW50c19zdHlsZSA9ICdzcGhpbngnCi1odG1sX2xvZ28gPSAn
X3N0YXRpYy9pbWcvcGx1Zy5wbmcnCi1odG1sX3RoZW1lID0gJ2FsYWJhc3RlcicKK3B5Z21lbnRz
X3N0eWxlID0gInNwaGlueCIKKyMgaHRtbF9sb2dvID0gIl9zdGF0aWMvaW1nL3BsdWcucG5nIgor
aHRtbF90aGVtZSA9ICJhbGFiYXN0ZXIiCiBodG1sX3RoZW1lX29wdGlvbnMgPSB7Ci0gICAgIyAn
bG9nbyc6ICdpbWcvcGx1Zy5wbmcnLAotICAgICMgJ2xvZ29fbmFtZSc6ICd0cnVlJywKLSAgICAn
ZGVzY3JpcHRpb24nOiAnVGhlIGBweXRlc3RgIHBsdWdpbiBzeXN0ZW0nLAotICAgICdnaXRodWJf
dXNlcic6ICdweXRlc3QtZGV2JywKLSAgICAnZ2l0aHViX3JlcG8nOiAncGx1Z2d5JywKLSAgICAn
Z2l0aHViX2J1dHRvbic6ICd0cnVlJywKLSAgICAnZ2l0aHViX2Jhbm5lcic6ICd0cnVlJywKLSAg
ICAncGFnZV93aWR0aCc6ICcxMDgwcHgnLAotICAgICdmaXhlZF9zaWRlYmFyJzogJ2ZhbHNlJywK
KyAgICAibG9nbyI6ICJpbWcvcGx1Zy5wbmciLAorICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgcHl0
ZXN0IHBsdWdpbiBzeXN0ZW0iLAorICAgICJnaXRodWJfdXNlciI6ICJweXRlc3QtZGV2IiwKKyAg
ICAiZ2l0aHViX3JlcG8iOiAicGx1Z2d5IiwKKyAgICAiZ2l0aHViX2J1dHRvbiI6ICJ0cnVlIiwK
KyAgICAiZ2l0aHViX2Jhbm5lciI6ICJ0cnVlIiwKKyAgICAiZ2l0aHViX3R5cGUiOiAic3RhciIs
CisgICAgInRyYXZpc19idXR0b24iOiAidHJ1ZSIsCisgICAgImJhZGdlX2JyYW5jaCI6ICJtYXN0
ZXIiLAorICAgICJwYWdlX3dpZHRoIjogIjEwODBweCIsCisgICAgImZpeGVkX3NpZGViYXIiOiAi
ZmFsc2UiLAorfQoraHRtbF9zaWRlYmFycyA9IHsKKyAgICAiKioiOiBbImFib3V0Lmh0bWwiLCAi
bG9jYWx0b2MuaHRtbCIsICJyZWxhdGlvbnMuaHRtbCIsICJzZWFyY2hib3guaHRtbCJdCiB9Ci1o
dG1sX3N0YXRpY19wYXRoID0gWydfc3RhdGljJ10KK2h0bWxfc3RhdGljX3BhdGggPSBbIl9zdGF0
aWMiXQogCiAjIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2YgdHVwbGVzCiAjIChz
b3VyY2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMsIG1hbnVhbCBzZWN0
aW9uKS4KLW1hbl9wYWdlcyA9IFsKLSAgICAobWFzdGVyX2RvYywgJ3BsdWdneScsIHUncGx1Z2d5
IERvY3VtZW50YXRpb24nLAotICAgICBbYXV0aG9yXSwgMSkKLV0KK21hbl9wYWdlcyA9IFsobWFz
dGVyX2RvYywgInBsdWdneSIsIHUicGx1Z2d5IERvY3VtZW50YXRpb24iLCBbYXV0aG9yXSwgMSld
CiAKIAogIyAtLSBPcHRpb25zIGZvciBUZXhpbmZvIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MiwxMCArNjgsMjIgQEAgbWFuX3BhZ2VzID0g
WwogIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLAogIyAg
ZGlyIG1lbnUgZW50cnksIGRlc2NyaXB0aW9uLCBjYXRlZ29yeSkKIHRleGluZm9fZG9jdW1lbnRz
ID0gWwotICAgIChtYXN0ZXJfZG9jLCAncGx1Z2d5JywgdSdwbHVnZ3kgRG9jdW1lbnRhdGlvbics
Ci0gICAgIGF1dGhvciwgJ3BsdWdneScsICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0
LicsCi0gICAgICdNaXNjZWxsYW5lb3VzJyksCisgICAgKAorICAgICAgICBtYXN0ZXJfZG9jLAor
ICAgICAgICAicGx1Z2d5IiwKKyAgICAgICAgdSJwbHVnZ3kgRG9jdW1lbnRhdGlvbiIsCisgICAg
ICAgIGF1dGhvciwKKyAgICAgICAgInBsdWdneSIsCisgICAgICAgICJPbmUgbGluZSBkZXNjcmlw
dGlvbiBvZiBwcm9qZWN0LiIsCisgICAgICAgICJNaXNjZWxsYW5lb3VzIiwKKyAgICApCiBdCiAK
ICMgRXhhbXBsZSBjb25maWd1cmF0aW9uIGZvciBpbnRlcnNwaGlueDogcmVmZXIgdG8gdGhlIFB5
dGhvbiBzdGFuZGFyZCBsaWJyYXJ5LgotaW50ZXJzcGhpbnhfbWFwcGluZyA9IHsnaHR0cHM6Ly9k
b2NzLnB5dGhvbi5vcmcvJzogTm9uZX0KK2ludGVyc3BoaW54X21hcHBpbmcgPSB7CisgICAgInB5
dGhvbiI6ICgiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMyIsIE5vbmUpLAorICAgICJweXRlc3Qi
OiAoImh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdCIsIE5vbmUpLAorICAgICJzZXR1
cHRvb2xzIjogKCJodHRwczovL3NldHVwdG9vbHMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Iiwg
Tm9uZSksCisgICAgInRveCI6ICgiaHR0cHM6Ly90b3gucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0
IiwgTm9uZSksCisgICAgImRldnBpIjogKCJodHRwczovL2RldnBpLm5ldC9kb2NzL2RldnBpL2Rl
dnBpL3N0YWJsZS8rZG9jLyIsIE5vbmUpLAorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9j
cy9leGFtcGxlcy9lZ2dzYW1wbGUtc3BhbS9lZ2dzYW1wbGVfc3BhbS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlLXNwYW0vZWdnc2FtcGxlX3NwYW0ucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZDcxYjEzOGQwMGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS1zcGFtL2VnZ3NhbXBs
ZV9zcGFtLnB5CkBAIC0wLDAgKzEsMjIgQEAKK2ltcG9ydCBlZ2dzYW1wbGUKKworCitAZWdnc2Ft
cGxlLmhvb2tpbXBsCitkZWYgZWdnc2FtcGxlX2FkZF9pbmdyZWRpZW50cyhpbmdyZWRpZW50cyk6
CisgICAgIiIiSGVyZSB0aGUgY2FsbGVyIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgbGlzdC4iIiIK
KyAgICBpZiAiZWdnIiBpbiBpbmdyZWRpZW50czoKKyAgICAgICAgc3BhbSA9IFsibG92ZWx5IHNw
YW0iLCAid29uZGVyb3VzIHNwYW0iXQorICAgIGVsc2U6CisgICAgICAgIHNwYW0gPSBbInNwbGVu
ZGlmZXJvdXMgc3BhbSIsICJtYWduaWZpY2VudCBzcGFtIl0KKyAgICByZXR1cm4gc3BhbQorCisK
K0BlZ2dzYW1wbGUuaG9va2ltcGwKK2RlZiBlZ2dzYW1wbGVfcHJlcF9jb25kaW1lbnRzKGNvbmRp
bWVudHMpOgorICAgICIiIkhlcmUgdGhlIGNhbGxlciBwYXNzZXMgYSBtdXRhYmxlIG9iamVjdCwg
c28gd2UgbWVzcyB3aXRoIGl0IGRpcmVjdGx5LiIiIgorICAgIHRyeToKKyAgICAgICAgZGVsIGNv
bmRpbWVudHNbInN0ZWFrIHNhdWNlIl0KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBh
c3MKKyAgICBjb25kaW1lbnRzWyJzcGFtIHNhdWNlIl0gPSA0MgorICAgIHJldHVybiBmIk5vdyB0
aGlzIGlzIHdoYXQgSSBjYWxsIGEgY29uZGltZW50cyB0cmF5ISIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlLXNwYW0vc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS1zcGFtL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjgxYThlYjQwMzg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUtc3BhbS9zZXR1cC5weQpAQCAtMCww
ICsxLDggQEAKK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAKKworc2V0dXAoCisgICAgbmFt
ZT0iZWdnc2FtcGxlLXNwYW0iLAorICAgIGluc3RhbGxfcmVxdWlyZXM9ImVnZ3NhbXBsZSIsCisg
ICAgZW50cnlfcG9pbnRzPXsiZWdnc2FtcGxlIjogWyJzcGFtID0gZWdnc2FtcGxlX3NwYW0iXX0s
CisgICAgcHlfbW9kdWxlcz1bImVnZ3NhbXBsZV9zcGFtIl0sCispCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvX19pbml0X18ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZGM0YjM2ZGVjM2EKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dz
YW1wbGUvX19pbml0X18ucHkKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgcGx1Z2d5CisKK2hvb2tp
bXBsID0gcGx1Z2d5Lkhvb2tpbXBsTWFya2VyKCJlZ2dzYW1wbGUiKQorIiIiTWFya2VyIHRvIGJl
IGltcG9ydGVkIGFuZCB1c2VkIGluIHBsdWdpbnMgKGFuZCBmb3Igb3duIGltcGxlbWVudGF0aW9u
cykiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlL2Vn
Z3NhbXBsZS9ob29rc3BlY3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBs
ZS9lZ2dzYW1wbGUvaG9va3NwZWNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNDg4NjZiMjQ5MTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9j
cy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2hvb2tzcGVjcy5weQpAQCAtMCwwICsxLDIx
IEBACitpbXBvcnQgcGx1Z2d5CisKK2hvb2tzcGVjID0gcGx1Z2d5Lkhvb2tzcGVjTWFya2VyKCJl
Z2dzYW1wbGUiKQorCisKK0Bob29rc3BlYworZGVmIGVnZ3NhbXBsZV9hZGRfaW5ncmVkaWVudHMo
aW5ncmVkaWVudHM6IHR1cGxlKToKKyAgICAiIiJIYXZlIGEgbG9vayBhdCB0aGUgaW5ncmVkaWVu
dHMgYW5kIG9mZmVyIHlvdXIgb3duLgorCisgICAgOnBhcmFtIGluZ3JlZGllbnRzOiB0aGUgaW5n
cmVkaWVudHMsIGRvbid0IHRvdWNoIHRoZW0hCisgICAgOnJldHVybjogYSBsaXN0IG9mIGluZ3Jl
ZGllbnRzCisgICAgIiIiCisKKworQGhvb2tzcGVjCitkZWYgZWdnc2FtcGxlX3ByZXBfY29uZGlt
ZW50cyhjb25kaW1lbnRzOiBkaWN0KToKKyAgICAiIiJSZW9yZ2FuaXplIHRoZSBjb25kaW1lbnRz
IHRyYXkgdG8geW91ciBoZWFydCdzIGNvbnRlbnQuCisKKyAgICA6cGFyYW0gY29uZGltZW50czog
c29tZSBzYXVjZXMgYW5kIHN0dWZmCisgICAgOnJldHVybjogYSB3aXR0eSBjb21tZW50IGFib3V0
IHlvdXIgYWN0aXZpdHkKKyAgICAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhh
bXBsZXMvZWdnc2FtcGxlL2VnZ3NhbXBsZS9ob3N0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFt
cGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2hvc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5hYzFkMzNiNDUzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvaG9zdC5weQpAQCAtMCwwICsx
LDU3IEBACitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgcmFuZG9tCisKK2ltcG9ydCBwbHVnZ3kK
KworZnJvbSBlZ2dzYW1wbGUgaW1wb3J0IGhvb2tzcGVjcywgbGliCisKK2NvbmRpbWVudHNfdHJh
eSA9IHsicGlja2xlZCB3YWxudXRzIjogMTMsICJzdGVhayBzYXVjZSI6IDQsICJtdXNoeSBwZWFz
IjogMn0KKworCitkZWYgbWFpbigpOgorICAgIHBtID0gZ2V0X3BsdWdpbl9tYW5hZ2VyKCkKKyAg
ICBjb29rID0gRWdnc2VsbGVudENvb2socG0uaG9vaykKKyAgICBjb29rLmFkZF9pbmdyZWRpZW50
cygpCisgICAgY29vay5wcmVwYXJlX3RoZV9mb29kKCkKKyAgICBjb29rLnNlcnZlX3RoZV9mb29k
KCkKKworCitkZWYgZ2V0X3BsdWdpbl9tYW5hZ2VyKCk6CisgICAgcG0gPSBwbHVnZ3kuUGx1Z2lu
TWFuYWdlcigiZWdnc2FtcGxlIikKKyAgICBwbS5hZGRfaG9va3NwZWNzKGhvb2tzcGVjcykKKyAg
ICBwbS5sb2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHMoImVnZ3NhbXBsZSIpCisgICAgcG0ucmVn
aXN0ZXIobGliKQorICAgIHJldHVybiBwbQorCisKK2NsYXNzIEVnZ3NlbGxlbnRDb29rOgorICAg
IEZBVk9SSVRFX0lOR1JFRElFTlRTID0gKCJlZ2ciLCAiZWdnIiwgImVnZyIpCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgaG9vayk6CisgICAgICAgIHNlbGYuaG9vayA9IGhvb2sKKyAgICAgICAg
c2VsZi5pbmdyZWRpZW50cyA9IE5vbmUKKworICAgIGRlZiBhZGRfaW5ncmVkaWVudHMoc2VsZik6
CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLmhvb2suZWdnc2FtcGxlX2FkZF9pbmdyZWRpZW50cygK
KyAgICAgICAgICAgIGluZ3JlZGllbnRzPXNlbGYuRkFWT1JJVEVfSU5HUkVESUVOVFMKKyAgICAg
ICAgKQorICAgICAgICBteV9pbmdyZWRpZW50cyA9IGxpc3Qoc2VsZi5GQVZPUklURV9JTkdSRURJ
RU5UUykKKyAgICAgICAgIyBFYWNoIGhvb2sgcmV0dXJucyBhIGxpc3QgLSBzbyB3ZSBjaGFpbiB0
aGlzIGxpc3Qgb2YgbGlzdHMKKyAgICAgICAgb3RoZXJfaW5ncmVkaWVudHMgPSBsaXN0KGl0ZXJ0
b29scy5jaGFpbigqcmVzdWx0cykpCisgICAgICAgIHNlbGYuaW5ncmVkaWVudHMgPSBteV9pbmdy
ZWRpZW50cyArIG90aGVyX2luZ3JlZGllbnRzCisKKyAgICBkZWYgcHJlcGFyZV90aGVfZm9vZChz
ZWxmKToKKyAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZi5pbmdyZWRpZW50cykKKworICAgIGRl
ZiBzZXJ2ZV90aGVfZm9vZChzZWxmKToKKyAgICAgICAgY29uZGltZW50X2NvbW1lbnRzID0gc2Vs
Zi5ob29rLmVnZ3NhbXBsZV9wcmVwX2NvbmRpbWVudHMoCisgICAgICAgICAgICBjb25kaW1lbnRz
PWNvbmRpbWVudHNfdHJheQorICAgICAgICApCisgICAgICAgIHByaW50KGYiWW91ciBmb29kLiBF
bmpveSBzb21lIHsnLCAnLmpvaW4oc2VsZi5pbmdyZWRpZW50cyl9IikKKyAgICAgICAgcHJpbnQo
ZiJTb21lIGNvbmRpbWVudHM/IFdlIGhhdmUgeycsICcuam9pbihjb25kaW1lbnRzX3RyYXkua2V5
cygpKX0iKQorICAgICAgICBpZiBhbnkoY29uZGltZW50X2NvbW1lbnRzKToKKyAgICAgICAgICAg
IHByaW50KCJcbiIuam9pbihjb25kaW1lbnRfY29tbWVudHMpKQorCisKK2lmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4
YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvbGliLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFt
cGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2xpYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjYyY2VhNzQ1OGVhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlL2VnZ3NhbXBsZS9saWIucHkKQEAgLTAsMCArMSwx
NCBAQAoraW1wb3J0IGVnZ3NhbXBsZQorCisKK0BlZ2dzYW1wbGUuaG9va2ltcGwKK2RlZiBlZ2dz
YW1wbGVfYWRkX2luZ3JlZGllbnRzKCk6CisgICAgc3BpY2VzID0gWyJzYWx0IiwgInBlcHBlciJd
CisgICAgeW91X2Nhbl9uZXZlcl9oYXZlX2Vub3VnaF9lZ2dzID0gWyJlZ2ciLCAiZWdnIl0KKyAg
ICBpbmdyZWRpZW50cyA9IHNwaWNlcyArIHlvdV9jYW5fbmV2ZXJfaGF2ZV9lbm91Z2hfZWdncwor
ICAgIHJldHVybiBpbmdyZWRpZW50cworCisKK0BlZ2dzYW1wbGUuaG9va2ltcGwKK2RlZiBlZ2dz
YW1wbGVfcHJlcF9jb25kaW1lbnRzKGNvbmRpbWVudHMpOgorICAgIGNvbmRpbWVudHNbIm1pbnQg
c2F1Y2UiXSA9IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2Ft
cGxlL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvc2V0dXAu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YjNmYWNiM2I2NzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9z
ZXR1cC5weQpAQCAtMCwwICsxLDggQEAKK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAsIGZp
bmRfcGFja2FnZXMKKworc2V0dXAoCisgICAgbmFtZT0iZWdnc2FtcGxlIiwKKyAgICBpbnN0YWxs
X3JlcXVpcmVzPSJwbHVnZ3k+PTAuMyw8MS4wIiwKKyAgICBlbnRyeV9wb2ludHM9eyJjb25zb2xl
X3NjcmlwdHMiOiBbImVnZ3NhbXBsZT1lZ2dzYW1wbGUuaG9zdDptYWluIl19LAorICAgIHBhY2th
Z2VzPWZpbmRfcGFja2FnZXMoKSwKKykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhh
bXBsZXMvZmlyc3RleGFtcGxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy90b3ktZXhh
bXBsZS5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2Nz
L2V4YW1wbGVzL2ZpcnN0ZXhhbXBsZS5weQpyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFt
cGxlcy90b3ktZXhhbXBsZS5weQppbmRleCAzY2VjN2NkMjE0NDcuLmRmZGM3ZTkyMjhkYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9maXJzdGV4YW1wbGUucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy90b3ktZXhhbXBsZS5weQpAQCAtNSwxNyArNSwxNiBA
QCBob29raW1wbCA9IHBsdWdneS5Ib29raW1wbE1hcmtlcigibXlwcm9qZWN0IikKIAogCiBjbGFz
cyBNeVNwZWMob2JqZWN0KToKLSAgICAiIiJBIGhvb2sgc3BlY2lmaWNhdGlvbiBuYW1lc3BhY2Uu
Ci0gICAgIiIiCisgICAgIiIiQSBob29rIHNwZWNpZmljYXRpb24gbmFtZXNwYWNlLiIiIgorCiAg
ICAgQGhvb2tzcGVjCiAgICAgZGVmIG15aG9vayhzZWxmLCBhcmcxLCBhcmcyKToKLSAgICAgICAg
IiIiTXkgc3BlY2lhbCBsaXR0bGUgaG9vayB0aGF0IHlvdSBjYW4gY3VzdG9taXplLgotICAgICAg
ICAiIiIKKyAgICAgICAgIiIiTXkgc3BlY2lhbCBsaXR0bGUgaG9vayB0aGF0IHlvdSBjYW4gY3Vz
dG9taXplLiIiIgogCiAKIGNsYXNzIFBsdWdpbl8xKG9iamVjdCk6Ci0gICAgIiIiQSBob29rIGlt
cGxlbWVudGF0aW9uIG5hbWVzcGFjZS4KLSAgICAiIiIKKyAgICAiIiJBIGhvb2sgaW1wbGVtZW50
YXRpb24gbmFtZXNwYWNlLiIiIgorCiAgICAgQGhvb2tpbXBsCiAgICAgZGVmIG15aG9vayhzZWxm
LCBhcmcxLCBhcmcyKToKICAgICAgICAgcHJpbnQoImluc2lkZSBQbHVnaW5fMS5teWhvb2soKSIp
CkBAIC0yMyw4ICsyMiw4IEBAIGNsYXNzIFBsdWdpbl8xKG9iamVjdCk6CiAKIAogY2xhc3MgUGx1
Z2luXzIob2JqZWN0KToKLSAgICAiIiJBIDJuZCBob29rIGltcGxlbWVudGF0aW9uIG5hbWVzcGFj
ZS4KLSAgICAiIiIKKyAgICAiIiJBIDJuZCBob29rIGltcGxlbWVudGF0aW9uIG5hbWVzcGFjZS4i
IiIKKwogICAgIEBob29raW1wbAogICAgIGRlZiBteWhvb2soc2VsZiwgYXJnMSwgYXJnMik6CiAg
ICAgICAgIHByaW50KCJpbnNpZGUgUGx1Z2luXzIubXlob29rKCkiKQpAQCAtMzQsMTEgKzMzLDkg
QEAgY2xhc3MgUGx1Z2luXzIob2JqZWN0KToKICMgY3JlYXRlIGEgbWFuYWdlciBhbmQgYWRkIHRo
ZSBzcGVjCiBwbSA9IHBsdWdneS5QbHVnaW5NYW5hZ2VyKCJteXByb2plY3QiKQogcG0uYWRkX2hv
b2tzcGVjcyhNeVNwZWMpCi0KICMgcmVnaXN0ZXIgcGx1Z2lucwogcG0ucmVnaXN0ZXIoUGx1Z2lu
XzEoKSkKIHBtLnJlZ2lzdGVyKFBsdWdpbl8yKCkpCi0KICMgY2FsbCBvdXIgYG15aG9va2AgaG9v
awogcmVzdWx0cyA9IHBtLmhvb2subXlob29rKGFyZzE9MSwgYXJnMj0yKQogcHJpbnQocmVzdWx0
cykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNjhiNmExOGUxNjYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS9kb2NzL2V4YW1wbGVzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9maXJzdGV4YW1wbGUu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
ZG9jcy9pbmRleC5yc3QKaW5kZXggZGI2NWExMDIzZmRkLi43MjU0NmRjMjQzYzcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L2RvY3MvaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvaW5k
ZXgucnN0CkBAIC0xLDY3ICsxLDE4MiBAQAogYGBwbHVnZ3lgYAogPT09PT09PT09PQorKipUaGUg
cHl0ZXN0IHBsdWdpbiBzeXN0ZW0qKgogCi1UaGUgYGBweXRlc3RgYCBwbHVnaW4gc3lzdGVtCi0q
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi1gYHBsdWdneWBgIGlzIHRoZSBjcnlzdGFsbGl6
ZWQgY29yZSBvZiBgcGx1Z2luIG1hbmFnZW1lbnQgYW5kIGhvb2sKLWNhbGxpbmdgXyBmb3IgYHB5
dGVzdGBfLgotCi1JbiBmYWN0LCBgYHB5dGVzdGBgIGlzIGl0c2VsZiBjb21wb3NlZCBhcyBhIHNl
dCBvZiBgYHBsdWdneWBgIHBsdWdpbnMKK1doYXQgaXMgaXQ/CisqKioqKioqKioqKgorYGBwbHVn
Z3lgYCBpcyB0aGUgY3J5c3RhbGxpemVkIGNvcmUgb2YgOnJlZjpgcGx1Z2luIG1hbmFnZW1lbnQg
YW5kIGhvb2sKK2NhbGxpbmcgPHB5dGVzdDp3cml0aW5nLXBsdWdpbnM+YCBmb3IgOnN0ZDpkb2M6
YHB5dGVzdCA8cHl0ZXN0OmluZGV4PmAuCitJdCBlbmFibGVzIGA1MDArIHBsdWdpbnNgXyB0byBl
eHRlbmQgYW5kIGN1c3RvbWl6ZSBgYHB5dGVzdGBgJ3MgZGVmYXVsdAorYmVoYXZpb3VyLiBFdmVu
IGBgcHl0ZXN0YGAgaXRzZWxmIGlzIGNvbXBvc2VkIGFzIGEgc2V0IG9mIGBgcGx1Z2d5YGAgcGx1
Z2lucwogd2hpY2ggYXJlIGludm9rZWQgaW4gc2VxdWVuY2UgYWNjb3JkaW5nIHRvIGEgd2VsbCBk
ZWZpbmVkIHNldCBvZiBwcm90b2NvbHMuCi1Tb21lIGAyMDArIHBsdWdpbnNgXyB1c2UgYGBwbHVn
Z3lgYCB0byBleHRlbmQgYW5kIGN1c3RvbWl6ZSBgYHB5dGVzdGBgJ3MgZGVmYXVsdCBiZWhhdmlv
dXIuCiAKLUluIGVzc2VuY2UsIGBgcGx1Z2d5YGAgZW5hYmxlcyBmdW5jdGlvbiBgaG9va2luZ2Bf
IHNvIHlvdSBjYW4gYnVpbGQgInBsdWdnYWJsZSIgc3lzdGVtcy4KK0l0IGdpdmVzIHVzZXJzIHRo
ZSBhYmlsaXR5IHRvIGV4dGVuZCBvciBtb2RpZnkgdGhlIGJlaGF2aW91ciBvZiBhCitgYGhvc3Qg
cHJvZ3JhbWBgIGJ5IGluc3RhbGxpbmcgYSBgYHBsdWdpbmBgIGZvciB0aGF0IHByb2dyYW0uCitU
aGUgcGx1Z2luIGNvZGUgd2lsbCBydW4gYXMgcGFydCBvZiBub3JtYWwgcHJvZ3JhbSBleGVjdXRp
b24sIGNoYW5naW5nIG9yCitlbmhhbmNpbmcgY2VydGFpbiBhc3BlY3RzIG9mIGl0LgorCitJbiBl
c3NlbmNlLCBgYHBsdWdneWBgIGVuYWJsZXMgZnVuY3Rpb24gYGhvb2tpbmdgXyBzbyB5b3UgY2Fu
IGJ1aWxkCisicGx1Z2dhYmxlIiBzeXN0ZW1zLgorCitXaHkgaXMgaXQgdXNlZnVsPworKioqKioq
KioqKioqKioqKioKK1RoZXJlIGFyZSBzb21lIGVzdGFibGlzaGVkIG1lY2hhbmlzbXMgZm9yIG1v
ZGlmeWluZyB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIKK3Byb2dyYW1zL2xpYnJhcmllcyBpbiBQeXRo
b24gbGlrZQorYG1ldGhvZCBvdmVycmlkaW5nIDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9NZXRob2Rfb3ZlcnJpZGluZz5gXworKGUuZy4gSmluamEyKSBvcgorYG1vbmtleSBwYXRjaGlu
ZyA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9ua2V5X3BhdGNoPmBfIChlLmcuIGdl
dmVudAorb3IgZm9yIDpzdGQ6ZG9jOmB3cml0aW5nIHRlc3RzIDxweXRlc3Q6bW9ua2V5cGF0Y2g+
YCkuCitUaGVzZSBzdHJhdGVnaWVzIGJlY29tZSBwcm9ibGVtYXRpYyB0aG91Z2ggd2hlbiBzZXZl
cmFsIHBhcnRpZXMgd2FudCB0bworcGFydGljaXBhdGUgaW4gdGhlIG1vZGlmaWNhdGlvbiBvZiB0
aGUgc2FtZSBwcm9ncmFtLiBUaGVyZWZvcmUgYGBwbHVnZ3lgYAorZG9lcyBub3QgcmVseSBvbiB0
aGVzZSBtZWNoYW5pc21zIHRvIGVuYWJsZSBhIG1vcmUgc3RydWN0dXJlZCBhcHByb2FjaCBhbmQK
K2F2b2lkIHVubmVjZXNzYXJ5IGV4cG9zdXJlIG9mIHN0YXRlIGFuZCBiZWhhdmlvdXIuIFRoaXMg
bGVhZHMgdG8gYSBtb3JlCitgbG9vc2VseSBjb3VwbGVkIDxodHRwczovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9Mb29zZV9jb3VwbGluZz5gXyByZWxhdGlvbnNoaXAKK2JldHdlZW4gYGBob3N0YGAg
YW5kIGBgcGx1Z2luc2BgLgorCitUaGUgYGBwbHVnZ3lgYCBhcHByb2FjaCBwdXRzIHRoZSBidXJk
ZW4gb24gdGhlIGRlc2lnbmVyIG9mIHRoZQorYGBob3N0IHByb2dyYW1gYCB0byB0aGluayBjYXJl
ZnVsbHkgYWJvdXQgd2hpY2ggb2JqZWN0cyBhcmUgcmVhbGx5CituZWVkZWQgaW4gYSBob29rIGlt
cGxlbWVudGF0aW9uLiBUaGlzIGdpdmVzIGBgcGx1Z2luYGAgY3JlYXRvcnMgYSBjbGVhcgorZnJh
bWV3b3JrIGZvciBob3cgdG8gZXh0ZW5kIHRoZSBgYGhvc3RgYCB2aWEgYSB3ZWxsIGRlZmluZWQg
c2V0IG9mIGZ1bmN0aW9ucworYW5kIG9iamVjdHMgdG8gd29yayB3aXRoLgorCitIb3cgZG9lcyBp
dCB3b3JrPworKioqKioqKioqKioqKioqKioKK0xldCB1cyBzdGFydCB3aXRoIGEgc2hvcnQgb3Zl
cnZpZXcgb2Ygd2hhdCBpcyBpbnZvbHZlZDoKKworKiBgYGhvc3RgYCBvciBgYGhvc3QgcHJvZ3Jh
bWBgOiB0aGUgcHJvZ3JhbSBvZmZlcmluZyBleHRlbnNpYmlsaXR5CisgIGJ5IHNwZWNpZnlpbmcg
YGBob29rIGZ1bmN0aW9uc2BgIGFuZCBpbnZva2luZyB0aGVpciBpbXBsZW1lbnRhdGlvbihzKSBh
cworICBwYXJ0IG9mIHByb2dyYW0gZXhlY3V0aW9uCisqIGBgcGx1Z2luYGA6IHRoZSBwcm9ncmFt
IGltcGxlbWVudGluZyAoYSBzdWJzZXQgb2YpIHRoZSBzcGVjaWZpZWQgaG9va3MgYW5kCisgIHBh
cnRpY2lwYXRpbmcgaW4gcHJvZ3JhbSBleGVjdXRpb24gd2hlbiB0aGUgaW1wbGVtZW50YXRpb25z
IGFyZSBpbnZva2VkCisgIGJ5IHRoZSBgYGhvc3RgYAorKiBgYHBsdWdneWBgOiBjb25uZWN0cyBg
YGhvc3RgYCBhbmQgYGBwbHVnaW5zYGAgYnkgdXNpbmcgLi4uCisKKyAgICAtIHRoZSBob29rIDpy
ZWY6YHNwZWNpZmljYXRpb25zIDxzcGVjcz5gIGRlZmluaW5nIGNhbGwgc2lnbmF0dXJlcworICAg
ICAgcHJvdmlkZWQgYnkgdGhlIGBgaG9zdGBgIChhLmsuYSBgYGhvb2tzcGVjc2BgIC0gc2VlIDpy
ZWY6YG1hcmtpbmdfaG9va3NgKQorICAgIC0gdGhlIGhvb2sgOnJlZjpgaW1wbGVtZW50YXRpb25z
IDxpbXBscz5gIHByb3ZpZGVkIGJ5IHJlZ2lzdGVyZWQKKyAgICAgIGBgcGx1Z2luc2BgIChhLmsu
YSBgYGhvb2tpbXBsYGAgLSBzZWUgYGNhbGxiYWNrc2BfKQorICAgIC0gdGhlIGhvb2sgOnJlZjpg
Y2FsbGVyIDxjYWxsaW5nPmAgLSBhIGNhbGwgbG9vcCB0cmlnZ2VyZWQgYXQgYXBwcm9wcmlhdGUK
KyAgICAgIHByb2dyYW0gcG9zaXRpb25zIGluIHRoZSBgYGhvc3RgYCBpbnZva2luZyB0aGUgaW1w
bGVtZW50YXRpb25zIGFuZAorICAgICAgY29sbGVjdGluZyB0aGUgcmVzdWx0cworCisgICAgLi4u
IHdoZXJlIGZvciBlYWNoIHJlZ2lzdGVyZWQgaG9vayAqc3BlY2lmaWNhdGlvbiosIGEgaG9vayAq
Y2FsbCogd2lsbAorICAgIGludm9rZSB1cCB0byBgYE5gYCByZWdpc3RlcmVkIGhvb2sgKmltcGxl
bWVudGF0aW9ucyouCisqIGBgdXNlcmBgOiB0aGUgcGVyc29uIHdobyBpbnN0YWxsZWQgdGhlIGBg
aG9zdCBwcm9ncmFtYGAgYW5kIHdhbnRzIHRvCisgIGV4dGVuZCBpdHMgZnVuY3Rpb25hbGl0eSB3
aXRoIGBgcGx1Z2luc2BgLiBJbiB0aGUgc2ltcGxlc3QgY2FzZSB0aGV5IGluc3RhbGwKKyAgdGhl
IGBgcGx1Z2luYGAgaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQgYXMgdGhlIGBgaG9zdGBgIGFuZCB0
aGUgbWFnaWMgd2lsbAorICBoYXBwZW4gd2hlbiB0aGUgYGBob3N0IHByb2dyYW1gYCBpcyBydW4g
dGhlIG5leHQgdGltZS4gRGVwZW5kaW5nIG9uCisgIHRoZSBgYHBsdWdpbmBgLCB0aGVyZSBtaWdo
dCBiZSBvdGhlciB0aGluZ3MgdGhleSBuZWVkIHRvIGRvLiBGb3IgZXhhbXBsZSwKKyAgdGhleSBt
aWdodCBoYXZlIHRvIGNhbGwgdGhlIGhvc3Qgd2l0aCBhbiBhZGRpdGlvbmFsIGNvbW1hbmRsaW5l
IHBhcmFtZXRlcgorICB0byB0aGUgaG9zdCB0aGF0IHRoZSBgYHBsdWdpbmBgIGFkZGVkLgorCitB
IHRveSBleGFtcGxlCistLS0tLS0tLS0tLS0tCitMZXQgdXMgZGVtb25zdHJhdGUgdGhlIGNvcmUg
ZnVuY3Rpb25hbGl0eSBpbiBvbmUgbW9kdWxlIGFuZCBzaG93IGhvdyB5b3UgY2FuCitzdGFydCBl
eHBlcmltZW50aW5nIHdpdGggcGx1Z2d5IGZ1bmN0aW9uYWxpdHkuCiAKLUhvdydzIGl0IHdvcms/
Ci0tLS0tLS0tLS0tLS0tLQotQSBgcGx1Z2luYCBpcyBhIGBuYW1lc3BhY2VgXyB3aGljaCBkZWZp
bmVzIGhvb2sgZnVuY3Rpb25zLgorLi4gbGl0ZXJhbGluY2x1ZGU6OiBleGFtcGxlcy90b3ktZXhh
bXBsZS5weQogCi1gYHBsdWdneWBgIG1hbmFnZXMgKnBsdWdpbnMqIGJ5IHJlbHlpbmcgb246CitS
dW5uaW5nIHRoaXMgZGlyZWN0bHkgZ2V0cyB1czo6CiAKLS0gYSBob29rICpzcGVjaWZpY2F0aW9u
KiAtIGRlZmluZXMgYSBjYWxsIHNpZ25hdHVyZQotLSBhIHNldCBvZiBob29rICppbXBsZW1lbnRh
dGlvbnMqIC0gYWthIGBjYWxsYmFja3NgXwotLSB0aGUgaG9vayAqY2FsbGVyKiAtIGEgY2FsbCBs
b29wIHdoaWNoIGNvbGxlY3RzIHJlc3VsdHMKKyAgICAkIHB5dGhvbiBkb2NzL2V4YW1wbGVzL3Rv
eS1leGFtcGxlLnB5CiAKLXdoZXJlIGZvciBlYWNoIHJlZ2lzdGVyZWQgaG9vayAqc3BlY2lmaWNh
dGlvbiosIGEgaG9vayAqY2FsbCogd2lsbCBpbnZva2UgdXAgdG8gYGBOYGAKLXJlZ2lzdGVyZWQg
aG9vayAqaW1wbGVtZW50YXRpb25zKi4KKyAgICBpbnNpZGUgUGx1Z2luXzIubXlob29rKCkKKyAg
ICBpbnNpZGUgUGx1Z2luXzEubXlob29rKCkKKyAgICBbLTEsIDNdCiAKLWBgcGx1Z2d5YGAgYWNj
b21wbGlzaGVzIGFsbCB0aGlzIGJ5IGltcGxlbWVudGluZyBhIGByZXF1ZXN0LXJlc3BvbnNlIHBh
dHRlcm5gXyB1c2luZyAqZnVuY3Rpb24qCi1zdWJzY3JpcHRpb25zIGFuZCBjYW4gYmUgdGhvdWdo
dCBvZiBhbmQgdXNlZCBhcyBhIHJ1ZGltZW50YXJ5IGJ1c2xlc3MgYHB1Ymxpc2gtc3Vic2NyaWJl
YF8KLWV2ZW50IHN5c3RlbS4KK0EgY29tcGxldGUgZXhhbXBsZQorLS0tLS0tLS0tLS0tLS0tLS0t
CitOb3cgbGV0IHVzIGRlbW9uc3RyYXRlIGhvdyB0aGlzIHBsYXlzIHRvZ2V0aGVyIGluIGEgdmFn
dWVseSByZWFsIHdvcmxkIHNjZW5hcmlvLgogCi1gYHBsdWdneWBgJ3MgYXBwcm9hY2ggaXMgbWVh
bnQgdG8gbGV0IGEgZGVzaWduZXIgdGhpbmsgY2FyZWZ1bHkgYWJvdXQgd2hpY2ggb2JqZWN0cyBh
cmUKLWV4cGxpY2l0bHkgbmVlZGVkIGJ5IGFuIGV4dGVuc2lvbiB3cml0ZXIuIFRoaXMgaXMgaW4g
Y29udHJhc3QgdG8gc3ViY2xhc3MtYmFzZWQgZXh0ZW5zaW9uCi1zeXN0ZW1zIHdoaWNoIG1heSBl
eHBvc2UgdW5lY2Vzc2FyeSBzdGF0ZSBhbmQgYmVoYXZpb3VyIG9yIGVuY291cmFnZSBgdGlnaHQg
Y291cGxpbmdgXwotaW4gb3Zlcmx5aW5nIGZyYW1ld29ya3MuCitMZXQncyBhc3N1bWUgb3VyIGBg
aG9zdCBwcm9ncmFtYGAgaXMgY2FsbGVkICoqZWdnc2FtcGxlKiogd2hlcmUgc29tZSBlZ2dzIHdp
bGwKK2JlIHByZXBhcmVkIGFuZCBzZXJ2ZWQgd2l0aCBhIHRyYXkgY29udGFpbmluZyBjb25kaW1l
bnRzLiBBcyBldmVyeWJvZHkga25vd3M6Cit0aGUgbW9yZSBjb29rcyBhcmUgaW52b2x2ZWQgdGhl
IGJldHRlciB0aGUgZm9vZCwgc28gbGV0IHVzIG1ha2UgdGhlIHByb2Nlc3MKK3BsdWdnYWJsZSBh
bmQgd3JpdGUgYSBwbHVnaW4gdGhhdCBpbXByb3ZlcyB0aGUgbWVhbCB3aXRoIHNvbWUgc3BhbSBh
bmQgcmVwbGFjZXMKK3RoZSBzdGVhayBzYXVjZSAobm9ib2R5IGxpa2VzIHRoYXQgYW55d2F5KSB3
aXRoIHNwYW0gc2F1Y2UgKGl0J3MgYSB0aGluZyAtIHRydXN0IG1lKS4KIAorLi4gbm90ZTo6CiAK
LUEgZmlyc3QgZXhhbXBsZQotLS0tLS0tLS0tLS0tLS0tCisgICAgKipuYW1pbmcgbWFya2Vycyoq
OiBgYEhvb2tTcGVjTWFya2VyYGAgYW5kIGBgSG9va0ltcGxNYXJrZXJgYCBtdXN0IGJlCisgICAg
aW5pdGlhbGl6ZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgYGBob3N0YGAgcHJvamVjdCAodGhlIGBg
bmFtZWBgCisgICAgcGFyYW1ldGVyIGluIGBgc2V0dXAoKWBgKSAtIHNvICoqZWdnc2FtcGxlKiog
aW4gb3VyIGNhc2UuCiAKLS4uIGxpdGVyYWxpbmNsdWRlOjogZXhhbXBsZXMvZmlyc3RleGFtcGxl
LnB5CisgICAgKipuYW1pbmcgcGx1Z2luIHByb2plY3RzKio6IHRoZXkgc2hvdWxkIGJlIG5hbWVk
IGluIHRoZSBmb3JtIG9mCisgICAgYGA8aG9zdD4tPHBsdWdpbj5gYCAoZS5nLiBgYHB5dGVzdC14
ZGlzdGBgKSwgdGhlcmVmb3JlIHdlIGNhbGwgb3VyCisgICAgcGx1Z2luICplZ2dzYW1wbGUtc3Bh
bSouCiAKLVJ1bm5pbmcgdGhpcyBkaXJlY3RseSBnZXRzIHVzOjoKK1RoZSBob3N0CiteXl5eXl5e
XgorYGBlZ2dzYW1wbGUvZWdnc2FtcGxlL19faW5pdF9fLnB5YGAKIAotICAgICQgcHl0aG9uIGRv
Y3MvZXhhbXBsZXMvZmlyc3RleGFtcGxlLnB5CisuLiBsaXRlcmFsaW5jbHVkZTo6IGV4YW1wbGVz
L2VnZ3NhbXBsZS9lZ2dzYW1wbGUvX19pbml0X18ucHkKIAotICAgIGluc2lkZSBQbHVnaW5fMi5t
eWhvb2soKQotICAgIGluc2lkZSBQbHVnaW5fMS5teWhvb2soKQotICAgIFstMSwgM10KK2BgZWdn
c2FtcGxlL2VnZ3NhbXBsZS9ob29rc3BlY3MucHlgYAorCisuLiBsaXRlcmFsaW5jbHVkZTo6IGV4
YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvaG9va3NwZWNzLnB5CisKK2BgZWdnc2FtcGxlL2Vn
Z3NhbXBsZS9saWIucHlgYAorCisuLiBsaXRlcmFsaW5jbHVkZTo6IGV4YW1wbGVzL2VnZ3NhbXBs
ZS9lZ2dzYW1wbGUvbGliLnB5CisKK2BgZWdnc2FtcGxlL2VnZ3NhbXBsZS9ob3N0LnB5YGAKKwor
Li4gbGl0ZXJhbGluY2x1ZGU6OiBleGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2hvc3QucHkK
KworYGBlZ2dzYW1wbGUvc2V0dXAucHlgYAorCisuLiBsaXRlcmFsaW5jbHVkZTo6IGV4YW1wbGVz
L2VnZ3NhbXBsZS9zZXR1cC5weQorCitMZXQncyBnZXQgY29va2luZyAtIHdlIGluc3RhbGwgdGhl
IGhvc3QgYW5kIHNlZSB3aGF0IGEgcHJvZ3JhbSBydW4gbG9va3MgbGlrZTo6CisKKyAgICAkIHBp
cCBpbnN0YWxsIC0tZWRpdGFibGUgcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlCisgICAg
JCBlZ2dzYW1wbGUKKworICAgIFlvdXIgZm9vZC4gRW5qb3kgc29tZSBlZ2csIGVnZywgc2FsdCwg
ZWdnLCBlZ2csIHBlcHBlciwgZWdnCisgICAgU29tZSBjb25kaW1lbnRzPyBXZSBoYXZlIHBpY2ts
ZWQgd2FsbnV0cywgc3RlYWsgc2F1Y2UsIG11c2h5IHBlYXMsIG1pbnQgc2F1Y2UKKworVGhlIHBs
dWdpbgorXl5eXl5eXl5eXgorYGBlZ2dzYW1wbGUtc3BhbS9lZ2dzYW1wbGVfc3BhbS5weWBgCisK
Ky4uIGxpdGVyYWxpbmNsdWRlOjogZXhhbXBsZXMvZWdnc2FtcGxlLXNwYW0vZWdnc2FtcGxlX3Nw
YW0ucHkKKworYGBlZ2dzYW1wbGUtc3BhbS9zZXR1cC5weWBgCisKKy4uIGxpdGVyYWxpbmNsdWRl
OjogZXhhbXBsZXMvZWdnc2FtcGxlLXNwYW0vc2V0dXAucHkKKworTGV0J3MgZ2V0IGNvb2tpbmcg
d2l0aCBtb3JlIGNvb2tzIC0gd2UgaW5zdGFsbCB0aGUgcGx1Z2luIGFuZCBhbmQgc2VlIHdoYXQK
K3dlIGdldDo6CisKKyAgICAkIHBpcCBpbnN0YWxsIC0tZWRpdGFibGUgcGx1Z2d5L2RvY3MvZXhh
bXBsZXMvZWdnc2FtcGxlLXNwYW0KKyAgICAkIGVnZ3NhbXBsZQorCisgICAgWW91ciBmb29kLiBF
bmpveSBzb21lIGVnZywgbG92ZWx5IHNwYW0sIHNhbHQsIGVnZywgZWdnLCBlZ2csIHdvbmRlcm91
cyBzcGFtLCBlZ2csIHBlcHBlcgorICAgIFNvbWUgY29uZGltZW50cz8gV2UgaGF2ZSBwaWNrbGVk
IHdhbG51dHMsIG11c2h5IHBlYXMsIG1pbnQgc2F1Y2UsIHNwYW0gc2F1Y2UKKyAgICBOb3cgdGhp
cyBpcyB3aGF0IEkgY2FsbCBhIGNvbmRpbWVudHMgdHJheSEKKworTW9yZSByZWFsIHdvcmxkIGV4
YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RvIHNlZSBob3cgYGBwbHVnZ3lgYCBp
cyB1c2VkIGluIHRoZSByZWFsIHdvcmxkLCBoYXZlIGEgbG9vayBhdCB0aGVzZSBwcm9qZWN0cwor
ZG9jdW1lbnRhdGlvbiBhbmQgc291cmNlIGNvZGU6CisKKyogOnJlZjpgcHl0ZXN0IDxweXRlc3Q6
d3JpdGluZy1wbHVnaW5zPmAKKyogOnN0ZDpkb2M6YHRveCA8dG94OnBsdWdpbnM+YAorKiA6c3Rk
OmRvYzpgZGV2cGkgPGRldnBpOmRldmd1aWRlL2luZGV4PmAKIAogRm9yIG1vcmUgZGV0YWlscyBh
bmQgYWR2YW5jZWQgdXNhZ2UgcGxlYXNlIHJlYWQgb24uCiAKIC4uIF9kZWZpbmU6CiAKLURlZmlu
aW5nIGFuZCBDb2xsZWN0aW5nIEhvb2tzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot
QSAqcGx1Z2luKiBpcyBhIG5hbWVzcGFjZSB0eXBlIChjdXJyZW50bHkgb25lIG9mIGEgYGBjbGFz
c2BgIG9yIG1vZHVsZSkKLXdoaWNoIGRlZmluZXMgYSBzZXQgb2YgKmhvb2sqIGZ1bmN0aW9ucy4K
K0RlZmluZSBhbmQgY29sbGVjdCBob29rcworKioqKioqKioqKioqKioqKioqKioqKioqCitBICpw
bHVnaW4qIGlzIGEgOnJlZjpgbmFtZXNwYWNlIDxweXRob246dHV0LXNjb3Blcz5gIHR5cGUgKGN1
cnJlbnRseSBvbmUgb2YgYQorYGBjbGFzc2BgIG9yIG1vZHVsZSkgd2hpY2ggZGVmaW5lcyBhIHNl
dCBvZiAqaG9vayogZnVuY3Rpb25zLgogCi1BcyBtZW50aW9uZWQgaW4gOnJlZjpgbWFuYWdlYCwg
YWxsICpwbHVnaW5zKiB3aGljaCBkZWZpbmUgKmhvb2tzKgorQXMgbWVudGlvbmVkIGluIDpyZWY6
YG1hbmFnZWAsIGFsbCAqcGx1Z2lucyogd2hpY2ggc3BlY2lmeSAqaG9va3MqCiBhcmUgbWFuYWdl
ZCBieSBhbiBpbnN0YW5jZSBvZiBhIDpweTpjbGFzczpgcGx1Z2d5LlBsdWdpbk1hbmFnZXJgIHdo
aWNoCiBkZWZpbmVzIHRoZSBwcmltYXJ5IGBgcGx1Z2d5YGAgQVBJLgogCi1JbiBvcmRlciBmb3Ig
YSBgYFBsdWdpbk1hbmFnZXJgYCB0byBkZXRlY3QgZnVuY3Rpb25zIGluIGEgbmFtZXNwYWNlCitJ
biBvcmRlciBmb3IgYSA6cHk6Y2xhc3M6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlcmAgdG8gZGV0ZWN0
IGZ1bmN0aW9ucyBpbiBhIG5hbWVzcGFjZQogaW50ZW5kZWQgdG8gYmUgKmhvb2tzKiwgdGhleSBt
dXN0IGJlIGRlY29yYXRlZCB1c2luZyBzcGVjaWFsIGBgcGx1Z2d5YGAgKm1hcmtzKi4KIAogLi4g
X21hcmtpbmdfaG9va3M6CkBAIC02OSwyNCArMTg0LDI1IEBAIGludGVuZGVkIHRvIGJlICpob29r
cyosIHRoZXkgbXVzdCBiZSBkZWNvcmF0ZWQgdXNpbmcgc3BlY2lhbCBgYHBsdWdneWBgICptYXJr
cyouCiBNYXJraW5nIGhvb2tzCiAtLS0tLS0tLS0tLS0tCiBUaGUgOnB5OmNsYXNzOmB+cGx1Z2d5
Lkhvb2tzcGVjTWFya2VyYCBhbmQgOnB5OmNsYXNzOmB+cGx1Z2d5Lkhvb2tpbXBsTWFya2VyYAot
ZGVjb3JhdG9ycyBhcmUgdXNlZCB0byAqbWFyayogZnVuY3Rpb25zIGZvciBkZXRlY3Rpb24gYnkg
YSBgYFBsdWdpbk1hbmFnZXJgYDoKK2RlY29yYXRvcnMgYXJlIHVzZWQgdG8gKm1hcmsqIGZ1bmN0
aW9ucyBmb3IgZGV0ZWN0aW9uIGJ5IGEKKzpweTpjbGFzczpgfnBsdWdneS5QbHVnaW5NYW5hZ2Vy
YDoKIAogLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgZnJvbSBwbHVnZ3kgaW1wb3J0IEhv
b2tzcGVjTWFya2VyLCBIb29raW1wbE1hcmtlcgogCi0gICAgaG9va3NwZWMgPSBIb29rc3BlY01h
cmtlcigncHJvamVjdF9uYW1lJykKLSAgICBob29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCdwcm9q
ZWN0X25hbWUnKQorICAgIGhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoInByb2plY3RfbmFtZSIp
CisgICAgaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigicHJvamVjdF9uYW1lIikKIAogCiBFYWNo
IGRlY29yYXRvciB0eXBlIHRha2VzIGEgc2luZ2xlIGBgcHJvamVjdF9uYW1lYGAgc3RyaW5nIGFz
IGl0cwogbG9uZSBhcmd1bWVudCB0aGUgdmFsdWUgb2Ygd2hpY2ggaXMgdXNlZCB0byBtYXJrIGhv
b2tzIGZvciBkZXRlY3Rpb24gYnkKLWJ5IGEgc2ltaWxhcmx5IGNvbmZpZ3VyZWQgYGBQbHVnaW5N
YW5hZ2VyYGAgaW5zdGFuY2UuCithIHNpbWlsYXJseSBjb25maWd1cmVkIDpweTpjbGFzczpgfnBs
dWdneS5QbHVnaW5NYW5hZ2VyYCBpbnN0YW5jZS4KIAogVGhhdCBpcywgYSAqbWFyayogdHlwZSBj
YWxsZWQgd2l0aCBgYHByb2plY3RfbmFtZWBgIHJldHVybnMgYW4gb2JqZWN0IHdoaWNoCiBjYW4g
YmUgdXNlZCB0byBkZWNvcmF0ZSBmdW5jdGlvbnMgd2hpY2ggd2lsbCB0aGVuIGJlIGRldGVjdGVk
IGJ5IGEKLWBgUGx1Z2luTWFuYWdlcmBgIHdoaWNoIHdhcyBpbnN0YW50aWF0ZWQgd2l0aCB0aGUg
dGhlIHNhbWUgYGBwcm9qZWN0X25hbWVgYAotdmFsdWUuCis6cHk6Y2xhc3M6YH5wbHVnZ3kuUGx1
Z2luTWFuYWdlcmAgd2hpY2ggd2FzIGluc3RhbnRpYXRlZCB3aXRoIHRoZSBzYW1lCitgYHByb2pl
Y3RfbmFtZWBgIHZhbHVlLgogCiBGdXJ0aGVybW9yZSwgZWFjaCAqaG9va2ltcGwqIG9yICpob29r
c3BlYyogZGVjb3JhdG9yIGNhbiBjb25maWd1cmUgdGhlCiB1bmRlcmx5aW5nIGNhbGwtdGltZSBi
ZWhhdmlvciBvZiBlYWNoICpob29rKiBvYmplY3QgYnkgcHJvdmlkaW5nIHNwZWNpYWwKQEAgLTk1
LDggKzIxMSw4IEBAIHVuZGVybHlpbmcgY2FsbC10aW1lIGJlaGF2aW9yIG9mIGVhY2ggKmhvb2sq
IG9iamVjdCBieSBwcm92aWRpbmcgc3BlY2lhbAogCiAuLiBub3RlOjoKICAgICBUaGUgZm9sbG93
aW5nIHNlY3Rpb25zIGNvcnJlc3BvbmQgdG8gc2ltaWxhciBkb2N1bWVudGF0aW9uIGluCi0gICAg
YGBweXRlc3RgYCBmb3IgYFdyaXRpbmcgaG9vayBmdW5jdGlvbnNgXyBhbmQgY2FuIGJlIHVzZWQK
LSAgICBhcyBhIHN1cHBsZW1lbnRhcnkgcmVzb3VyY2UuCisgICAgYGBweXRlc3RgYCBmb3IgOnJl
ZjpgcHl0ZXN0OndyaXRpbmdob29rc2AgYW5kIGNhbiBiZSB1c2VkIGFzCisgICAgYSBzdXBwbGVt
ZW50YXJ5IHJlc291cmNlLgogCiAuLiBfaW1wbHM6CiAKQEAgLTExMyw3ICsyMjksOCBAQCB3aGlj
aCBoYXMgYmVlbiBhcHByb3ByaWF0ZWx5IG1hcmtlZC4KICAgICBpbXBvcnQgc3lzCiAgICAgZnJv
bSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIsIEhvb2tpbXBsTWFya2VyCiAKLSAgICBob29r
aW1wbCA9IEhvb2tpbXBsTWFya2VyKCdteXByb2plY3QnKQorICAgIGhvb2tpbXBsID0gSG9va2lt
cGxNYXJrZXIoIm15cHJvamVjdCIpCisKIAogICAgIEBob29raW1wbAogICAgIGRlZiBzZXR1cF9w
cm9qZWN0KGNvbmZpZywgYXJncyk6CkBAIC0xMjUsNyArMjQyLDggQEAgd2hpY2ggaGFzIGJlZW4g
YXBwcm9wcmlhdGVseSBtYXJrZWQuCiAKICAgICAgICAgcmV0dXJuIGNvbmZpZwogCi0gICAgcG0g
PSBQbHVnaW5NYW5hZ2VyKCdteXByb2plY3QnKQorCisgICAgcG0gPSBQbHVnaW5NYW5hZ2VyKCJt
eXByb2plY3QiKQogCiAgICAgIyBsb2FkIGFsbCBob29raW1wbHMgZnJvbSB0aGUgbG9jYWwgbW9k
dWxlJ3MgbmFtZXNwYWNlCiAgICAgcGx1Z2luX25hbWUgPSBwbS5yZWdpc3RlcihzeXMubW9kdWxl
c1tfX25hbWVfX10pCkBAIC0xMzQsNyArMjUyLDcgQEAgd2hpY2ggaGFzIGJlZW4gYXBwcm9wcmlh
dGVseSBtYXJrZWQuCiAKIE9wdGlvbmFsIHZhbGlkYXRpb24KIF5eXl5eXl5eXl5eXl5eXl5eXl4K
LU5vcm1hbGx5IGVhY2ggKmhvb2tpbXBsKiBzaG91bGQgYmUgdmFsaWRhdGVkIGEgYWdhaW5zdCBh
IGNvcnJlc3BvbmRpbmcKK05vcm1hbGx5IGVhY2ggKmhvb2tpbXBsKiBzaG91bGQgYmUgdmFsaWRh
dGVkIGFnYWluc3QgYSBjb3JyZXNwb25kaW5nCiBob29rIDpyZWY6YHNwZWNpZmljYXRpb24gPHNw
ZWNzPmAuIElmIHlvdSB3YW50IHRvIG1ha2UgYW4gZXhjZXB0aW9uCiB0aGVuIHRoZSAqaG9va2lt
cGwqIHNob3VsZCBiZSBtYXJrZWQgd2l0aCB0aGUgYGAib3B0aW9uYWxob29rImBgIG9wdGlvbjoK
IApAQCAtMTYyLDcgKzI4MCw4IEBAIHdpbGwgYmUgZXhlY3V0ZWQgKmZpcnN0KiBvciAqbGFzdCog
cmVzcGVjdGl2ZWx5IGluIHRoZSBob29rIGNhbGwgbG9vcDoKICAgICBpbXBvcnQgc3lzCiAgICAg
ZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIsIEhvb2tpbXBsTWFya2VyCiAKLSAgICBo
b29raW1wbCA9IEhvb2tpbXBsTWFya2VyKCdteXByb2plY3QnKQorICAgIGhvb2tpbXBsID0gSG9v
a2ltcGxNYXJrZXIoIm15cHJvamVjdCIpCisKIAogICAgIEBob29raW1wbCh0cnlsYXN0PVRydWUp
CiAgICAgZGVmIHNldHVwX3Byb2plY3QoY29uZmlnLCBhcmdzKToKQEAgLTE3Nyw4ICsyOTYsOSBA
QCB3aWxsIGJlIGV4ZWN1dGVkICpmaXJzdCogb3IgKmxhc3QqIHJlc3BlY3RpdmVseSBpbiB0aGUg
aG9vayBjYWxsIGxvb3A6CiAgICAgY2xhc3MgU29tZU90aGVyUGx1Z2luKG9iamVjdCk6CiAgICAg
ICAgICIiIlNvbWUgb3RoZXIgcGx1Z2luIGRlZmluaW5nIHRoZSBzYW1lIGhvb2suCiAgICAgICAg
ICIiIgorCiAgICAgICAgIEBob29raW1wbCh0cnlmaXJzdD1UcnVlKQotICAgICAgICBkZWYgc2V0
dXBfcHJvamVjdChjb25maWcsIGFyZ3MpOgorICAgICAgICBkZWYgc2V0dXBfcHJvamVjdChzZWxm
LCBjb25maWcsIGFyZ3MpOgogICAgICAgICAgICAgIiIiUmVwb3J0IHdoYXQgYXJncyB3ZXJlIHBh
c3NlZCBiZWZvcmUgY2FsbGluZwogICAgICAgICAgICAgZG93bnN0cmVhbSBob29rcy4KICAgICAg
ICAgICAgICIiIgpAQCAtMTg3LDEyICszMDcsMTMgQEAgd2lsbCBiZSBleGVjdXRlZCAqZmlyc3Qq
IG9yICpsYXN0KiByZXNwZWN0aXZlbHkgaW4gdGhlIGhvb2sgY2FsbCBsb29wOgogCiAgICAgICAg
ICAgICByZXR1cm4gY29uZmlnCiAKLSAgICBwbSA9IFBsdWdpbk1hbmFnZXIoJ215cHJvamVjdCcp
CisKKyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoIm15cHJvamVjdCIpCiAKICAgICAjIGxvYWQgZnJv
bSB0aGUgbG9jYWwgbW9kdWxlJ3MgbmFtZXNwYWNlCiAgICAgcG0ucmVnaXN0ZXIoc3lzLm1vZHVs
ZXNbX19uYW1lX19dKQogICAgICMgbG9hZCBhIHBsdWdpbiBkZWZpbmVkIG9uIGEgY2xhc3MKLSAg
ICBwbS5yZWdpc3RlcihTb21lUGx1Z2luKCkpCisgICAgcG0ucmVnaXN0ZXIoU29tZU90aGVyUGx1
Z2luKCkpCiAKIEZvciBhbm90aGVyIGV4YW1wbGUgc2VlIHRoZSBgaG9vayBmdW5jdGlvbiBvcmRl
cmluZ2BfIHNlY3Rpb24gb2YgdGhlCiBgYHB5dGVzdGBgIGRvY3MuCkBAIC0yMDEsNiArMzIyLDkg
QEAgRm9yIGFub3RoZXIgZXhhbXBsZSBzZWUgdGhlIGBob29rIGZ1bmN0aW9uIG9yZGVyaW5nYF8g
c2VjdGlvbiBvZiB0aGUKICAgICBgYHRyeWZpcnN0YGAgYW5kIGBgdHJ5bGFzdGBgIGhvb2tzIGFy
ZSBzdGlsbCBpbnZva2VkIGluIExJRk8gb3JkZXIgd2l0aGluCiAgICAgZWFjaCBjYXRlZ29yeS4K
IAorCisuLiBfaG9va3dyYXBwZXJzOgorCiBXcmFwcGVycwogXl5eXl5eXl4KIEEgKmhvb2tpbXBs
KiBjYW4gYmUgbWFya2VkIHdpdGggYSBgYCJob29rd3JhcHBlciJgYCBvcHRpb24gd2hpY2ggaW5k
aWNhdGVzIHRoYXQKQEAgLTIwOCw3ICszMzIsNyBAQCB0aGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxs
ZWQgdG8gKndyYXAqIChvciBzdXJyb3VuZCkgYWxsIG90aGVyIG5vcm1hbCAqaG9va2ltcGwqCiBj
YWxscy4gQSAqaG9va3dyYXBwZXIqIGNhbiB0aHVzIGV4ZWN1dGUgc29tZSBjb2RlIGFoZWFkIGFu
ZCBhZnRlciB0aGUgZXhlY3V0aW9uCiBvZiBhbGwgY29ycmVzcG9uZGluZyBub24td3JhcHBwZXIg
Kmhvb2tpbXBscyouCiAKLU11Y2ggaW4gdGhlIHNhbWUgd2F5IGFzIGEgYEBjb250ZXh0bGliLmNv
bnRleHRtYW5hZ2VyYF8sICpob29rd3JhcHBlcnMqIG11c3QKK011Y2ggaW4gdGhlIHNhbWUgd2F5
IGFzIGEgOnB5OmZ1bmM6YEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyIDxweXRob246Y29udGV4
dGxpYi5jb250ZXh0bWFuYWdlcj5gLCAqaG9va3dyYXBwZXJzKiBtdXN0CiBiZSBpbXBsZW1lbnRl
ZCBhcyBnZW5lcmF0b3IgZnVuY3Rpb24gd2l0aCBhIHNpbmdsZSBgYHlpZWxkYGAgaW4gaXRzIGJv
ZHk6CiAKIApAQCAtMjIwLDggKzM0NCw3IEBAIGJlIGltcGxlbWVudGVkIGFzIGdlbmVyYXRvciBm
dW5jdGlvbiB3aXRoIGEgc2luZ2xlIGBgeWllbGRgYCBpbiBpdHMgYm9keToKICAgICAgICAgc2hv
dWxkIHJldHVybiBqc29uIGVuY29kZWQgY29uZmlnIG9wdGlvbnMuCiAgICAgICAgICIiIgogICAg
ICAgICBpZiBjb25maWcuZGVidWc6Ci0gICAgICAgICAgICBwcmludCgiUHJlLWhvb2sgY29uZmln
IGlzIHt9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgY29uZmlnLnRvanNvbigpKSkKKyAgICAg
ICAgICAgIHByaW50KCJQcmUtaG9vayBjb25maWcgaXMge30iLmZvcm1hdChjb25maWcudG9qc29u
KCkpKQogCiAgICAgICAgICMgZ2V0IGluaXRpYWwgZGVmYXVsdCBjb25maWcKICAgICAgICAgZGVm
YXVsdHMgPSBjb25maWcudG9qc29uKCkKQEAgLTIzMywxNyArMzU2LDE2IEBAIGJlIGltcGxlbWVu
dGVkIGFzIGdlbmVyYXRvciBmdW5jdGlvbiB3aXRoIGEgc2luZ2xlIGBgeWllbGRgYCBpbiBpdHMg
Ym9keToKICAgICAgICAgICAgIHByaW50KCJKU09OIGNvbmZpZyBvdmVycmlkZSBpcyB7fSIuZm9y
bWF0KGl0ZW0pKQogCiAgICAgICAgIGlmIGNvbmZpZy5kZWJ1ZzoKLSAgICAgICAgICAgIHByaW50
KCJQb3N0LWhvb2sgY29uZmlnIGlzIHt9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgY29uZmln
LnRvanNvbigpKSkKKyAgICAgICAgICAgIHByaW50KCJQb3N0LWhvb2sgY29uZmlnIGlzIHt9Ii5m
b3JtYXQoY29uZmlnLnRvanNvbigpKSkKIAogICAgICAgICBpZiBjb25maWcudXNlX2RlZmF1bHRz
OgogICAgICAgICAgICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQoZGVmYXVsdHMpCiAKLVRoZSBnZW5l
cmF0b3IgaXMgYHNlbnRgXyBhIDpweTpjbGFzczpgcGx1Z2d5Ll9SZXN1bHRgIG9iamVjdCB3aGlj
aCBjYW4KK1RoZSBnZW5lcmF0b3IgaXMgOnB5Om1ldGg6YHNlbnQgPHB5dGhvbjpnZW5lcmF0b3Iu
c2VuZD5gIGEgOnB5OmNsYXNzOmBwbHVnZ3kuY2FsbGVycy5fUmVzdWx0YCBvYmplY3Qgd2hpY2gg
Y2FuCiBiZSBhc3NpZ25lZCBpbiB0aGUgYGB5aWVsZGBgIGV4cHJlc3Npb24gYW5kIHVzZWQgdG8g
b3ZlcnJpZGUgb3IgaW5zcGVjdAogdGhlIGZpbmFsIHJlc3VsdChzKSByZXR1cm5lZCBiYWNrIHRv
IHRoZSBjYWxsZXIgdXNpbmcgdGhlCi06cHk6bWV0aDpgfnBsdWdneS5fUmVzdWx0LmZvcmNlX3Jl
c3VsdGAgb3IKLTpweTptZXRoOmB+cGx1Z2d5Ll9SZXN1bHQuZ2V0X3Jlc3VsdGAgbWV0aG9kcy4K
KzpweTptZXRoOmB+cGx1Z2d5LmNhbGxlcnMuX1Jlc3VsdC5mb3JjZV9yZXN1bHRgIG9yCis6cHk6
bWV0aDpgfnBsdWdneS5jYWxsZXJzLl9SZXN1bHQuZ2V0X3Jlc3VsdGAgbWV0aG9kcy4KIAogLi4g
bm90ZTo6CiAgICAgSG9vayB3cmFwcGVycyBjYW4gKipub3QqKiByZXR1cm4gcmVzdWx0cyAoYXMg
cGVyIGdlbmVyYXRvciBmdW5jdGlvbgpAQCAtMjczLDE1ICszOTUsMTcgQEAgc2hvdWxkIGJlIGFk
ZGVkIGJlZm9yZSByZWdpc3RlcmluZyBjb3JyZXNwb25kaW5nICpob29raW1wbHMqOgogICAgIGlt
cG9ydCBzeXMKICAgICBmcm9tIHBsdWdneSBpbXBvcnQgUGx1Z2luTWFuYWdlciwgSG9va3NwZWNN
YXJrZXIKIAotICAgIGhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoJ215cHJvamVjdCcpCisgICAg
aG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigibXlwcm9qZWN0IikKKwogCiAgICAgQGhvb2tzcGVj
CiAgICAgZGVmIHNldHVwX3Byb2plY3QoY29uZmlnLCBhcmdzKToKLSAgICAgICAgIiIiVGhpcyBo
b29rIGlzIHVzZWQgdG8gcHJvY2VzcyB0aGUgaW5pdGFsIGNvbmZpZyBhbmQgaW5wdXQKKyAgICAg
ICAgIiIiVGhpcyBob29rIGlzIHVzZWQgdG8gcHJvY2VzcyB0aGUgaW5pdGlhbCBjb25maWcgYW5k
IGlucHV0CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAKLSAgICBwbSA9IFBsdWdp
bk1hbmFnZXIoJ215cHJvamVjdCcpCisKKyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoIm15cHJvamVj
dCIpCiAKICAgICAjIGxvYWQgZnJvbSB0aGUgbG9jYWwgbW9kdWxlJ3MgbmFtZXNwYWNlCiAgICAg
cG0uYWRkX2hvb2tzcGVjcyhzeXMubW9kdWxlc1tfX25hbWVfX10pCkBAIC0zMjMsNiArNDQ3LDcg
QEAgSW4gb3RoZXIgd29yZHMgdGhpcyBpcyBvazoKICAgICBkZWYgbXlob29rKGNvbmZpZywgYXJn
cyk6CiAgICAgICAgIHBhc3MKIAorCiAgICAgQGhvb2tpbXBsCiAgICAgZGVmIG15aG9vayhhcmdz
KToKICAgICAgICAgcHJpbnQoYXJncykKQEAgLTMzNiwxMCArNDYxLDE2IEBAIHdoZXJlYXMgdGhp
cyBpcyBub3Q6CiAgICAgZGVmIG15aG9vayhjb25maWcsIGFyZ3MpOgogICAgICAgICBwYXNzCiAK
KwogICAgIEBob29raW1wbAogICAgIGRlZiBteWhvb2soY29uZmlnLCBhcmdzLCBleHRyYV9hcmcp
OgogICAgICAgICBwcmludChhcmdzKQogCisuLiBub3RlOjoKKyAgICBUaGUgb25lIGV4Y2VwdGlv
biB0byB0aGlzIHJ1bGUgKHRoYXQgYSAqaG9va3NwZWMqIG11c3QgaGF2ZSBhcyBsZWFzdCBhcwor
ICAgIG1hbnkgYXJndW1lbnRzIGFzIGl0cyAqaG9va2ltcGxzKikgaXMgdGhlIGNvbnZlbnRpb25h
bCA6cmVmOmBzZWxmIDxweXRob246dHV0LXJlbWFya3M+YCBhcmc7IHRoaXMKKyAgICBpcyBhbHdh
eXMgaWdub3JlZCB3aGVuICpob29raW1wbHMqIGFyZSBkZWZpbmVkIGFzIDpyZWY6YG1ldGhvZHMg
PHB5dGhvbjp0dXQtbWV0aG9kb2JqZWN0cz5gLgorCiAuLiBfZmlyc3RyZXN1bHQ6CiAKIEZpcnN0
IHJlc3VsdCBvbmx5CkBAIC0zNTcsMTUgKzQ4OCwxNiBAQCB0aGVuIGBgTm9uZWBgLgogVGhpcyBj
YW4gYmUgdXNlZnVsIGZvciBvcHRpbWl6aW5nIGEgY2FsbCBsb29wIGZvciB3aGljaCB5b3UgYXJl
IG9ubHkKIGludGVyZXN0ZWQgaW4gYSBzaW5nbGUgY29yZSAqaG9va2ltcGwqLiBBbiBleGFtcGxl
IGlzIHRoZQogYHB5dGVzdF9jbWRsaW5lX21haW5gXyBjZW50cmFsIHJvdXRpbmUgb2YgYGBweXRl
c3RgYC4KK05vdGUgdGhhdCBhbGwgYGBob29rd3JhcHBlcnNgYCBhcmUgc3RpbGwgaW52b2tlZCB3
aXRoIHRoZSBmaXJzdCByZXN1bHQuCiAKLUFsc28gc2VlIHRoZSBgZmlyc3QgcmVzdWx0YF8gc2Vj
dGlvbiBpbiB0aGUgYGBweXRlc3RgYCBkb2NzLgorQWxzbyBzZWUgdGhlIDpyZWY6YHB5dGVzdDpm
aXJzdHJlc3VsdGAgc2VjdGlvbiBpbiB0aGUgYGBweXRlc3RgYCBkb2NzLgogCiAuLiBfaGlzdG9y
aWM6CiAKIEhpc3RvcmljIGhvb2tzCiBeXl5eXl5eXl5eXl5eXgogWW91IGNhbiBtYXJrIGEgKmhv
b2tzcGVjKiBhcyBiZWluZyAqaGlzdG9yaWMqIG1lYW5pbmcgdGhhdCB0aGUgaG9vawotY2FuIGJl
IGNhbGxlZCB3aXRoIDpweTptZXRoOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXIuY2FsbF9oaXN0b3Jp
YygpYCAqKmJlZm9yZSoqCitjYW4gYmUgY2FsbGVkIHdpdGggOnB5Om1ldGg6YH5wbHVnZ3kuaG9v
a3MuX0hvb2tDYWxsZXIuY2FsbF9oaXN0b3JpYygpYCAqKmJlZm9yZSoqCiBoYXZpbmcgYmVlbiBy
ZWdpc3RlcmVkOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCkBAIC0zNzUsNyArNTA3LDcgQEAg
aGF2aW5nIGJlZW4gcmVnaXN0ZXJlZDoKICAgICAgICAgcGFzcwogCiBUaGUgaW1wbGljYXRpb24g
aXMgdGhhdCBsYXRlIHJlZ2lzdGVyZWQgKmhvb2tpbXBscyogd2lsbCBiZSBjYWxsZWQgYmFjawot
aW1tZWRpYXRlbHkgYXQgcmVnaXN0ZXIgdGltZSBhbmQgKipjYW4gbm90KiogcmV0dXJuIGEgcmVz
dWx0IHRvIHRoZSBjYWxsZXIuKioKK2ltbWVkaWF0ZWx5IGF0IHJlZ2lzdGVyIHRpbWUgYW5kICoq
Y2FuIG5vdCoqIHJldHVybiBhIHJlc3VsdCB0byB0aGUgY2FsbGVyLgogCiBUaGlzIHR1cm5zIG91
dCB0byBiZSBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gZGVhbGluZyB3aXRoIGxhenkgb3IKIGR5
bmFtaWNhbGx5IGxvYWRlZCBwbHVnaW5zLgpAQCAtMzgzLDU3ICs1MTUsNTYgQEAgZHluYW1pY2Fs
bHkgbG9hZGVkIHBsdWdpbnMuCiBGb3IgbW9yZSBpbmZvIHNlZSA6cmVmOmBjYWxsX2hpc3Rvcmlj
YC4KIAogCi0uLiBsaW5rcwotLi4gX0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyOgotICAgIGh0
dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi9saWJyYXJ5L2NvbnRleHRsaWIuaHRtbCNjb250ZXh0
bGliLmNvbnRleHRtYW5hZ2VyCi0uLiBfcHl0ZXN0X2NtZGxpbmVfbWFpbjoKLSAgICBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvYmxvYi9tYXN0ZXIvX3B5dGVzdC9ob29rc3Bl
Yy5weSNMODAKLS4uIF9ob29rc3BlYyBtb2R1bGU6Ci0gICAgaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2Jsb2IvbWFzdGVyL19weXRlc3QvaG9va3NwZWMucHkKLS4uIF9Xcml0
aW5nIGhvb2sgZnVuY3Rpb25zOgotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qv
d3JpdGluZ19wbHVnaW5zLmh0bWwjd3JpdGluZy1ob29rLWZ1bmN0aW9ucwotLi4gX2hvb2t3cmFw
cGVyOgotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvd3JpdGluZ19wbHVnaW5z
Lmh0bWwjaG9va3dyYXBwZXItZXhlY3V0aW5nLWFyb3VuZC1vdGhlci1ob29rcwotLi4gX2hvb2sg
ZnVuY3Rpb24gb3JkZXJpbmc6Ci0gICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC93
cml0aW5nX3BsdWdpbnMuaHRtbCNob29rLWZ1bmN0aW9uLW9yZGVyaW5nLWNhbGwtZXhhbXBsZQot
Li4gX2ZpcnN0IHJlc3VsdDoKLSAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dy
aXRpbmdfcGx1Z2lucy5odG1sI2ZpcnN0cmVzdWx0LXN0b3AtYXQtZmlyc3Qtbm9uLW5vbmUtcmVz
dWx0Ci0uLiBfc2VudDoKLSAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL3JlZmVyZW5jZS9l
eHByZXNzaW9ucy5odG1sI2dlbmVyYXRvci5zZW5kCitXYXJuaW5ncyBvbiBob29rIGltcGxlbWVu
dGF0aW9uCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIHByb2plY3RzIGV2
b2x2ZSBuZXcgaG9va3MgbWF5IGJlIGludHJvZHVjZWQgYW5kL29yIGRlcHJlY2F0ZWQuCisKK2lm
IGEgaG9va3NwZWMgc3BlY2lmaWVzIGEgYGB3YXJuX29uX2ltcGxgYCwgcGx1Z2d5IHdpbGwgdHJp
Z2dlciBpdCBmb3IgYW55IHBsdWdpbiBpbXBsZW1lbnRpbmcgdGhlIGhvb2suCisKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgorCisgICAgQGhvb2tzcGVjKAorICAgICAgICB3YXJuX29uX2ltcGw9
RGVwcmVjYXRpb25XYXJuaW5nKCJvbGRob29rIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVt
b3ZlZCBzb29uIikKKyAgICApCisgICAgZGVmIG9sZGhvb2soKToKKyAgICAgICAgcGFzcwogCiAu
LiBfbWFuYWdlOgogCi1UaGUgUGx1Z2luIFJlZ2lzdHJ5CitUaGUgUGx1Z2luIHJlZ2lzdHJ5CiAq
KioqKioqKioqKioqKioqKioqCiBgYHBsdWdneWBgIG1hbmFnZXMgcGx1Z2lucyB1c2luZyBpbnN0
YW5jZXMgb2YgdGhlCiA6cHk6Y2xhc3M6YHBsdWdneS5QbHVnaW5NYW5hZ2VyYC4KIAotQSBgYFBs
dWdpbk1hbmFnZXJgYCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHNpbmdsZQorQSA6cHk6Y2xhc3M6
YH5wbHVnZ3kuUGx1Z2luTWFuYWdlcmAgaXMgaW5zdGFudGlhdGVkIHdpdGggYSBzaW5nbGUKIGBg
c3RyYGAgYXJndW1lbnQsIHRoZSBgYHByb2plY3RfbmFtZWBgOgogCiAuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKICAgICBpbXBvcnQgcGx1Z2d5Ci0gICAgcG0gPSBwbHVnZ3kuUGx1Z2luTWFuYWdl
cignbXlfcHJvamVjdF9uYW1lJykKKworICAgIHBtID0gcGx1Z2d5LlBsdWdpbk1hbmFnZXIoIm15
X3Byb2plY3RfbmFtZSIpCiAKIAotVGhlIGBgcHJvamVjdF9uYW1lYGAgdmFsdWUgaXMgdXNlZCB3
aGVuIGEgYGBQbHVnaW5NYW5hZ2VyYGAgc2NhbnMgZm9yICpob29rKgotZnVuY3Rpb25zIDpyZWY6
YGRlZmluZWQgb24gYSBwbHVnaW4gPGRlZmluZT5gLgotVGhpcyBhbGxvd3MgZm9yIG11bHRpcGxl
Ci1wbHVnaW4gbWFuYWdlcnMgZnJvbSBtdWx0aXBsZSBwcm9qZWN0cyB0byBkZWZpbmUgaG9va3Mg
YWxvbmdzaWRlIGVhY2ggb3RoZXIuCitUaGUgYGBwcm9qZWN0X25hbWVgYCB2YWx1ZSBpcyB1c2Vk
IHdoZW4gYSA6cHk6Y2xhc3M6YH5wbHVnZ3kuUGx1Z2luTWFuYWdlcmAKK3NjYW5zIGZvciAqaG9v
ayogZnVuY3Rpb25zIDpyZWY6YGRlZmluZWQgb24gYSBwbHVnaW4gPGRlZmluZT5gLgorVGhpcyBh
bGxvd3MgZm9yIG11bHRpcGxlIHBsdWdpbiBtYW5hZ2VycyBmcm9tIG11bHRpcGxlIHByb2plY3Rz
Cit0byBkZWZpbmUgaG9va3MgYWxvbmdzaWRlIGVhY2ggb3RoZXIuCiAKIAogUmVnaXN0cmF0aW9u
CiAtLS0tLS0tLS0tLS0KLUVhY2ggYGBQbHVnaW5NYW5hZ2VyYGAgbWFpbnRhaW5zIGEgKnBsdWdp
biogcmVnaXN0cnkgd2hlcmUgZWFjaCAqcGx1Z2luKgorRWFjaCA6cHk6Y2xhc3M6YH5wbHVnZ3ku
UGx1Z2luTWFuYWdlcmAgbWFpbnRhaW5zIGEgKnBsdWdpbiogcmVnaXN0cnkgd2hlcmUgZWFjaCAq
cGx1Z2luKgogY29udGFpbnMgYSBzZXQgb2YgKmhvb2tpbXBsKiBkZWZpbml0aW9ucy4gTG9hZGlu
ZyAqaG9va2ltcGwqIGFuZCAqaG9va3NwZWMqCiBkZWZpbml0aW9ucyB0byBwb3B1bGF0ZSB0aGUg
cmVnaXN0cnkgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbgogOnJlZjpg
ZGVmaW5lYC4KIAogSW4gc3VtbWFyeSwgeW91IHBhc3MgYSBwbHVnaW4gbmFtZXNwYWNlIG9iamVj
dCB0byB0aGUKIDpweTptZXRoOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXIucmVnaXN0ZXIoKWAgYW5k
Ci06cHk6bWV0aDpgfnBsdWdneS5QbHVnaW5NYW5hZ2VyLmFkZF9ob29rc3BlYygpYCBtZXRob2Rz
IHRvIGNvbGxlY3QKLWhvb2sgKmltcGxlbWVudGF0aW9ucyogYW5kICpzcGVjZmljYXRpb25zKiBm
cm9tICpwbHVnaW4qIG5hbWVzcGFjZXMgcmVzcGVjdGl2ZWx5LgorOnB5Om1ldGg6YH5wbHVnZ3ku
UGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNzKClgIG1ldGhvZHMgdG8gY29sbGVjdAoraG9vayAq
aW1wbGVtZW50YXRpb25zKiBhbmQgKnNwZWNpZmljYXRpb25zKiBmcm9tICpwbHVnaW4qIG5hbWVz
cGFjZXMgcmVzcGVjdGl2ZWx5LgogCiBZb3UgY2FuIHVucmVnaXN0ZXIgYW55ICpwbHVnaW4qJ3Mg
aG9va3MgdXNpbmcKIDpweTptZXRoOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXIudW5yZWdpc3Rlcigp
YCBhbmQgY2hlY2sgaWYgYSBwbHVnaW4gaXMKQEAgLTQ0MiwxMSArNTczLDEyIEBAIHJlZ2lzdGVy
ZWQgYnkgcGFzc2luZyBpdHMgbmFtZSB0byB0aGUKIAogTG9hZGluZyBgYHNldHVwdG9vbHNgYCBl
bnRyeSBwb2ludHMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi1Zb3UgY2Fu
IGF1dG9tYXRpY2FsbHkgbG9hZCBwbHVnaW5zIHJlZ2lzdGVyZWQgdGhyb3VnaCBgc2V0dXB0b29s
cyBlbnRyeSBwb2ludHNgXworWW91IGNhbiBhdXRvbWF0aWNhbGx5IGxvYWQgcGx1Z2lucyByZWdp
c3RlcmVkIHRocm91Z2gKKzpyZWY6YHNldHVwdG9vbHMgZW50cnkgcG9pbnRzIDxzZXR1cHRvb2xz
OmVudHJ5IHBvaW50cz5gCiB3aXRoIHRoZSA6cHk6bWV0aDpgfnBsdWdneS5QbHVnaW5NYW5hZ2Vy
LmxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cygpYAogbWV0aG9kLgogCi1BbiBleGFtcGxlIHVz
ZSBvZiB0aGlzIGlzIHRoZSBgcHl0ZXN0IGVudHJ5IHBvaW50YF8uCitBbiBleGFtcGxlIHVzZSBv
ZiB0aGlzIGlzIHRoZSA6cmVmOmBweXRlc3QgZW50cnkgcG9pbnQgPHB5dGVzdDpwaXAtaW5zdGFs
bGFibGUgcGx1Z2lucz5gLgogCiAKIEJsb2NraW5nCkBAIC00NTgsNyArNTkwLDcgQEAgWW91IGNh
biBibG9jayBhbnkgcGx1Z2luIGZyb20gYmVpbmcgcmVnaXN0ZXJlZCB1c2luZwogCiBJbnNwZWN0
aW9uCiAtLS0tLS0tLS0tCi1Zb3UgY2FuIHVzZSBhIHZhcmlldHkgb2YgbWV0aG9kcyB0byBpbnNw
ZWN0IHRoZSBib3RoIHRoZSByZWdpc3RyeQorWW91IGNhbiB1c2UgYSB2YXJpZXR5IG9mIG1ldGhv
ZHMgdG8gaW5zcGVjdCBib3RoIHRoZSByZWdpc3RyeQogYW5kIHBhcnRpY3VsYXIgcGx1Z2lucyBp
biBpdDoKIAogLSA6cHk6bWV0aDpgfnBsdWdneS5QbHVnaW5NYW5hZ2VyLmxpc3RfbmFtZV9wbHVn
aW4oKWAgLQpAQCAtNDc3LDI4ICs2MDksMjIgQEAgWW91IGNhbiByZXRyaWV2ZSB0aGUgKm9wdGlv
bnMqIGFwcGxpZWQgdG8gYSBwYXJ0aWN1bGFyCiA6cHk6bWV0aDpgfnBsdWdneS5QbHVnaW5NYW5h
Z2VyLnBhcnNlX2hvb2tzcGVjX29wdHMoKWAgYW5kCiA6cHk6bWV0aDpgfnBsdWdneS5QbHVnaW5N
YW5hZ2VyLnBhcnNlX2hvb2tpbXBsX29wdHMoKWAgcmVzcGVjdGl2ZWx5LgogCi0uLiBsaW5rcwot
Li4gX3NldHVwdG9vbHMgZW50cnkgcG9pbnRzOgotICAgIGh0dHA6Ly9zZXR1cHRvb2xzLnJlYWR0
aGVkb2NzLmlvL2VuL2xhdGVzdC9zZXR1cHRvb2xzLmh0bWwjZHluYW1pYy1kaXNjb3Zlcnktb2Yt
c2VydmljZXMtYW5kLXBsdWdpbnMKLS4uIF9weXRlc3QgZW50cnkgcG9pbnQ6Ci0gICAgaHR0cDov
L2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC93cml0aW5nX3BsdWdpbnMuaHRtbCNzZXR1cHRvb2xz
LWVudHJ5LXBvaW50cwotCiAKIC4uIF9jYWxsaW5nOgogCi1DYWxsaW5nIEhvb2tzCitDYWxsaW5n
IGhvb2tzCiAqKioqKioqKioqKioqCiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIGBgcGx1Z2d5
YGAgZW5hYmxlcyBhbiBleHRlbnNpb24gcHJvdmlkZXIKIHRvIG92ZXJyaWRlIGZ1bmN0aW9uIGNh
bGxzIG1hZGUgYXQgY2VydGFpbiBwb2ludHMgdGhyb3VnaG91dCBhIHByb2dyYW0uCiAKIEEgcGFy
dGljdWxhciAqaG9vayogaXMgaW52b2tlZCBieSBjYWxsaW5nIGFuIGluc3RhbmNlIG9mCi1hIDpw
eTpjbGFzczpgcGx1Z2d5Ll9Ib29rQ2FsbGVyYCB3aGljaCBpbiB0dXJuICpsb29wcyogdGhyb3Vn
aCB0aGUKK2EgOnB5OmNsYXNzOmBwbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXJgIHdoaWNoIGluIHR1
cm4gKmxvb3BzKiB0aHJvdWdoIHRoZQogYGAxOk5gYCByZWdpc3RlcmVkICpob29raW1wbHMqIGFu
ZCBjYWxscyB0aGVtIGluIHNlcXVlbmNlLgogCi1FdmVyeSA6cHk6Y2xhc3M6YHBsdWdneS5QbHVn
aW5NYW5hZ2VyYCBoYXMgYSBgYGhvb2tgYCBhdHRyaWJ1dGUKLXdoaWNoIGlzIGFuIGluc3RhbmNl
IG9mIHRoaXMgOnB5OmNsYXNzOmBwbHVnZ3kuX0hvb2tSZWxheWAuCi1UaGUgYGBfSG9va1JlbGF5
YGAgaXRzZWxmIGNvbnRhaW5zIHJlZmVyZW5jZXMgKGJ5IGhvb2sgbmFtZSkgdG8gZWFjaAotcmVn
aXN0ZXJlZCAqaG9va2ltcGwqJ3MgYGBfSG9va0NhbGxlcmBgIGluc3RhbmNlLgorRXZlcnkgOnB5
OmNsYXNzOmB+cGx1Z2d5LlBsdWdpbk1hbmFnZXJgIGhhcyBhIGBgaG9va2BgIGF0dHJpYnV0ZQor
d2hpY2ggaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyA6cHk6Y2xhc3M6YHBsdWdneS5ob29rcy5fSG9v
a1JlbGF5YC4KK1RoZSA6cHk6Y2xhc3M6YH5wbHVnZ3kuaG9va3MuX0hvb2tSZWxheWAgaXRzZWxm
IGNvbnRhaW5zIHJlZmVyZW5jZXMKKyhieSBob29rIG5hbWUpIHRvIGVhY2ggcmVnaXN0ZXJlZCAq
aG9va2ltcGwqJ3MgOnB5OmNsYXNzOmB+cGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyYCBpbnN0YW5j
ZS4KIAogTW9yZSBwcmFjdGljYWxseSB5b3UgY2FsbCBhICpob29rKiBsaWtlIHNvOgogCkBAIC01
MTcsNyArNjQzLDcgQEAgTW9yZSBwcmFjdGljYWxseSB5b3UgY2FsbCBhICpob29rKiBsaWtlIHNv
OgogICAgICMgd2UgaW52b2tlIHRoZSBfSG9va0NhbGxlciBhbmQgdGh1cyBhbGwgdW5kZXJseWlu
ZyBob29raW1wbHMKICAgICByZXN1bHRfbGlzdCA9IHBtLmhvb2subXlob29rKGNvbmZpZz1jb25m
aWcsIGFyZ3M9c3lzLmFyZ3YpCiAKLU5vdGUgdGhhdCB5b3UgKiptdXN0KiogY2FsbCBob29rcyB1
c2luZyBrZXl3b3JkIGBhcmd1bWVudHNgXyBzeW50YXghCitOb3RlIHRoYXQgeW91ICoqbXVzdCoq
IGNhbGwgaG9va3MgdXNpbmcga2V5d29yZCA6c3RkOnRlcm06YHB5dGhvbjphcmd1bWVudGAgc3lu
dGF4IQogCiBIb29rIGltcGxlbWVudGF0aW9ucyBhcmUgY2FsbGVkIGluIExJRk8gcmVnaXN0ZXJl
ZCBvcmRlcjogKnRoZSBsYXN0CiByZWdpc3RlcmVkIHBsdWdpbidzIGhvb2tzIGFyZSBjYWxsZWQg
Zmlyc3QqLiBBcyBhbiBleGFtcGxlLCB0aGUgYmVsb3cKQEAgLTUyNywyNyArNjUzLDM0IEBAIGFz
c2VydGlvbiBzaG91bGQgbm90IGVycm9yOgogCiAgICAgZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdp
bk1hbmFnZXIsIEhvb2tpbXBsTWFya2VyCiAKLSAgICBob29raW1wbCA9IEhvb2tpbXBsTWFya2Vy
KCdteXByb2plY3QnKQorICAgIGhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoIm15cHJvamVjdCIp
CisKIAogICAgIGNsYXNzIFBsdWdpbjEob2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCiAgICAg
ICAgIGRlZiBteWhvb2soc2VsZiwgYXJncyk6CiAgICAgICAgICAgICAiIiJEZWZhdWx0IGltcGxl
bWVudGF0aW9uLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICByZXR1cm4gMQogCisKICAg
ICBjbGFzcyBQbHVnaW4yKG9iamVjdCk6CisgICAgICAgIEBob29raW1wbAogICAgICAgICBkZWYg
bXlob29rKHNlbGYsIGFyZ3MpOgogICAgICAgICAgICAgIiIiRGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgcmV0dXJuIDIKIAorCiAgICAgY2xhc3Mg
UGx1Z2luMyhvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwKICAgICAgICAgZGVmIG15aG9vayhz
ZWxmLCBhcmdzKToKICAgICAgICAgICAgICIiIkRlZmF1bHQgaW1wbGVtZW50YXRpb24uCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIHJldHVybiAzCiAKLSAgICBwbSA9IFBsdWdpbk1hbmFn
ZXIoJ215cHJvamVjdCcpCisKKyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoIm15cHJvamVjdCIpCiAg
ICAgcG0ucmVnaXN0ZXIoUGx1Z2luMSgpKQogICAgIHBtLnJlZ2lzdGVyKFBsdWdpbjIoKSkKICAg
ICBwbS5yZWdpc3RlcihQbHVnaW4zKCkpCkBAIC01NjIsMTEgKzY5NSw2NyBAQCB3aGljaCByZXR1
cm5zIGEgdmFsdWUgb3RoZXIgdGhlbiBhIGBgTm9uZWBgIHJlc3VsdCB3aWxsIGhhdmUgdGhhdCBy
ZXN1bHQKIGFwcGVuZGVkIHRvIGEgOnB5OmNsYXNzOmBsaXN0YCB3aGljaCBpcyByZXR1cm5lZCBi
eSB0aGUgY2FsbC4KIAogVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgYmVoYXZpb3VyIGlzIGlm
IHRoZSBob29rIGhhcyBiZWVuIG1hcmtlZCB0byByZXR1cm4KLWl0cyA6cmVmOmBmaXJzdHJlc3Vs
dGAgaW4gd2hpY2ggY2FzZSBvbmx5IHRoZSBmaXJzdCBzaW5nbGUgdmFsdWUgKHdoaWNoIGlzIG5v
dAotYGBOb25lYGApIHdpbGwgYmUgcmV0dXJuZWQuCitpdHMgOnJlZjpgZmlyc3QgcmVzdWx0IG9u
bHkgPGZpcnN0cmVzdWx0PmAgaW4gd2hpY2ggY2FzZSBvbmx5IHRoZSBmaXJzdAorc2luZ2xlIHZh
bHVlICh3aGljaCBpcyBub3QgYGBOb25lYGApIHdpbGwgYmUgcmV0dXJuZWQuCiAKIC4uIF9jYWxs
X2hpc3RvcmljOgogCitFeGNlcHRpb24gaGFuZGxpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLQorSWYg
YW55ICpob29raW1wbCogZXJyb3JzIHdpdGggYW4gZXhjZXB0aW9uIG5vIGZ1cnRoZXIgY2FsbGJh
Y2tzCithcmUgaW52b2tlZCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBwYWNrYWdlZCB1cCBhbmQgZGVs
aXZlcmVkIHRvCithbnkgOnJlZjpgd3JhcHBlcnMgPGhvb2t3cmFwcGVycz5gIGJlZm9yZSBiZWlu
ZyByZS1yYWlzZWQgYXQgdGhlCitob29rIGludm9jYXRpb24gcG9pbnQ6CisKKy4uIGNvZGUtYmxv
Y2s6OiBweXRob24KKworICAgIGZyb20gcGx1Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBIb29r
aW1wbE1hcmtlcgorCisgICAgaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigibXlwcm9qZWN0IikK
KworCisgICAgY2xhc3MgUGx1Z2luMShvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwKKyAgICAg
ICAgZGVmIG15aG9vayhzZWxmLCBhcmdzKToKKyAgICAgICAgICAgIHJldHVybiAxCisKKworICAg
IGNsYXNzIFBsdWdpbjIob2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBt
eWhvb2soc2VsZiwgYXJncyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworCisg
ICAgY2xhc3MgUGx1Z2luMyhvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwKKyAgICAgICAgZGVm
IG15aG9vayhzZWxmLCBhcmdzKToKKyAgICAgICAgICAgIHJldHVybiAzCisKKworICAgIEBob29r
aW1wbChob29rd3JhcHBlcj1UcnVlKQorICAgIGRlZiBteWhvb2soc2VsZiwgYXJncyk6CisgICAg
ICAgIG91dGNvbWUgPSB5aWVsZAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dGNvbWUu
Z2V0X3Jlc3VsdCgpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAj
IGxvZyB0aGUgZXJyb3IgZGV0YWlscworICAgICAgICAgICAgcHJpbnQob3V0Y29tZS5leGNpbmZv
KQorCisKKyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoIm15cHJvamVjdCIpCisKKyAgICAjIHJlZ2lz
dGVyIHBsdWdpbnMKKyAgICBwbS5yZWdpc3RlcihQbHVnaW4xKCkpCisgICAgcG0ucmVnaXN0ZXIo
UGx1Z2luMigpKQorICAgIHBtLnJlZ2lzdGVyKFBsdWdpbjMoKSkKKworICAgICMgcmVnaXN0ZXIg
d3JhcHBlcgorICAgIHBtLnJlZ2lzdGVyKHN5cy5tb2R1bGVzW19fbmFtZV9fXSkKKworICAgICMg
dGhpcyByYWlzZXMgUnVudGltZUVycm9yIGR1ZSB0byBQbHVnaW4yCisgICAgcG0uaG9vay5teWhv
b2soYXJncz0oKSkKKwogSGlzdG9yaWMgY2FsbHMKIC0tLS0tLS0tLS0tLS0tCiBBICpoaXN0b3Jp
YyBjYWxsKiBhbGxvd3MgZm9yIGFsbCBuZXdseSByZWdpc3RlcmVkIGZ1bmN0aW9ucyB0byByZWNl
aXZlIGFsbCBob29rCkBAIC01NzUsNDYgKzc2NCw1NiBAQCBvbmx5IHVzZWZ1bCBpZiB5b3UgZXhw
ZWN0IHRoYXQgc29tZSAqaG9va2ltcGxzKiBtYXkgYmUgcmVnaXN0ZXJlZCAqKmFmdGVyKiogdGhl
CiBob29rIGlzIGluaXRpYWxseSBpbnZva2VkLgogCiBIaXN0b3JpYyBob29rcyBtdXN0IGJlIDpy
ZWY6YHNwZWNpYWxseSBtYXJrZWQgPGhpc3RvcmljPmAgYW5kIGNhbGxlZAotdXNpbmcgdGhlIDpw
eTptZXRoOmBwbHVnZ3kuX0hvb2tDYWxsZXIuY2FsbF9oaXN0b3JpYygpYCBtZXRob2Q6Cit1c2lu
ZyB0aGUgOnB5Om1ldGg6YH5wbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXIuY2FsbF9oaXN0b3JpYygp
YCBtZXRob2Q6CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRob24KIAorICAgIGRlZiBjYWxsYmFjayhy
ZXN1bHQpOgorICAgICAgICBwcmludCgiaGlzdG9yaWMgY2FsbCByZXN1bHQgaXMge3Jlc3VsdH0i
LmZvcm1hdChyZXN1bHQ9cmVzdWx0KSkKKworCiAgICAgIyBjYWxsIHdpdGggaGlzdG9yeTsgbm8g
cmVzdWx0cyByZXR1cm5lZAotICAgIHBtLmhvb2subXlob29rLmNhbGxfaGlzdG9yaWMoY29uZmln
PWNvbmZpZywgYXJncz1zeXMuYXJndikKKyAgICBwbS5ob29rLm15aG9vay5jYWxsX2hpc3Rvcmlj
KAorICAgICAgICBrd2FyZ3M9eyJjb25maWciOiBjb25maWcsICJhcmdzIjogc3lzLmFyZ3Z9LCBy
ZXN1bHRfY2FsbGJhY2s9Y2FsbGJhY2sKKyAgICApCiAKICAgICAjIC4uLiBtb3JlIG9mIG91ciBw
cm9ncmFtIC4uLgogCiAgICAgIyBsYXRlIGxvYWRpbmcgb2Ygc29tZSBwbHVnaW4KICAgICBpbXBv
cnQgbXlsYXRlcGx1Z2luCiAKLSAgICAjIGhpc3RvcmljIGNhbGwgYmFjayBpcyBkb25lIGhlcmUK
KyAgICAjIGhpc3RvcmljIGNhbGxiYWNrIGlzIGludm9rZWQgaGVyZQogICAgIHBtLnJlZ2lzdGVy
KG15bGF0ZXBsdWdpbikKIAotTm90ZSB0aGF0IGlmIHlvdSBgYGNhbGxfaGlzdG9yaWMoKWBgIHRo
ZSBgYF9Ib29rQ2FsbGVyYGAgKGFuZCB0aHVzIHlvdXIKLWNhbGxpbmcgY29kZSkgY2FuIG5vdCBy
ZWNlaXZlIHJlc3VsdHMgYmFjayBmcm9tIHRoZSB1bmRlcmx5aW5nICpob29raW1wbCoKLWZ1bmN0
aW9ucy4KK05vdGUgdGhhdCBpZiB5b3UgOnB5Om1ldGg6YH5wbHVnZ3kuaG9va3MuX0hvb2tDYWxs
ZXIuY2FsbF9oaXN0b3JpYygpYAordGhlIDpweTpjbGFzczpgfnBsdWdneS5ob29rcy5fSG9va0Nh
bGxlcmAgKGFuZCB0aHVzIHlvdXIgY2FsbGluZyBjb2RlKQorY2FuIG5vdCByZWNlaXZlIHJlc3Vs
dHMgYmFjayBmcm9tIHRoZSB1bmRlcmx5aW5nICpob29raW1wbCogZnVuY3Rpb25zLgorSW5zdGVh
ZCB5b3UgY2FuIHByb3ZpZGUgYSAqY2FsbGJhY2sqIGZvciBwcm9jZXNzaW5nIHJlc3VsdHMgKGxp
a2UgdGhlCitgYGNhbGxiYWNrYGAgZnVuY3Rpb24gYWJvdmUpIHdoaWNoIHdpbGwgYmUgY2FsbGVk
IGFzIGVhY2ggbmV3IHBsdWdpbgoraXMgcmVnaXN0ZXJlZC4KKworLi4gbm90ZTo6CisgICAgKmhp
c3RvcmljKiBjYWxscyBhcmUgaW5jb21wYXRpYmxlIHdpdGggOnJlZjpgZmlyc3RyZXN1bHRgIG1h
cmtlZAorICAgIGhvb2tzIHNpbmNlIG9ubHkgdGhlIGZpcnN0IHJlZ2lzdGVyZWQgcGx1Z2luJ3Mg
aG9vayhzKSB3b3VsZAorICAgIGV2ZXIgYmUgY2FsbGVkLgogCiBDYWxsaW5nIHdpdGggZXh0cmFz
CiAtLS0tLS0tLS0tLS0tLS0tLS0tCiBZb3UgY2FuIGNhbGwgYSBob29rIHdpdGggdGVtcG9yYXJp
bHkgcGFydGljaXBhdGluZyAqaW1wbGVtZW50YXRpb24qIGZ1bmN0aW9ucwogKHRoYXQgYXJlbid0
IGluIHRoZSByZWdpc3RyeSkgdXNpbmcgdGhlCi06cHk6bWV0aDpgcGx1Z2d5Ll9Ib29rQ2FsbGVy
LmNhbGxfZXh0cmEoKWAgbWV0aG9kLgorOnB5Om1ldGg6YHBsdWdneS5ob29rcy5fSG9va0NhbGxl
ci5jYWxsX2V4dHJhKClgIG1ldGhvZC4KIAogCiBDYWxsaW5nIHdpdGggYSBzdWJzZXQgb2YgcmVn
aXN0ZXJlZCBwbHVnaW5zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBZb3UgY2FuIG1ha2UgYSBjYWxsIHVzaW5nIGEgc3Vic2V0IG9mIHBsdWdpbnMgYnkgYXNr
aW5nIHRoZQotYGBQbHVnaW5NYW5hZ2VyYGAgZmlyc3QgZm9yIGEgYGBfSG9va0NhbGxlcmBgIHdp
dGggdGhvc2UgcGx1Z2lucyByZW1vdmVkCis6cHk6Y2xhc3M6YH5wbHVnZ3kuUGx1Z2luTWFuYWdl
cmAgZmlyc3QgZm9yIGEKKzpweTpjbGFzczpgfnBsdWdneS5ob29rcy5fSG9va0NhbGxlcmAgd2l0
aCB0aG9zZSBwbHVnaW5zIHJlbW92ZWQKIHVzaW5nIHRoZSA6cHk6bWV0aDpgcGx1Z2d5LlBsdWdp
bk1hbmFnZXIuc3Vic2V0X2hvb2tfY2FsbGVyKClgIG1ldGhvZC4KIAotWW91IHRoZW4gY2FuIHVz
ZSB0aGF0IGBgX0hvb2tDYWxsZXJgYCB0byBtYWtlIG5vcm1hbCwgYGBjYWxsX2hpc3RvcmljKClg
YCwKLW9yIGBgY2FsbF9leHRyYSgpYGAgY2FsbHMgYXMgbmVjZXNzYXJ5LgotCi0KLS4uIGxpbmtz
Ci0uLiBfYXJndW1lbnRzOgotICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvZ2xvc3Nhcnku
aHRtbCN0ZXJtLWFyZ3VtZW50Ci0KK1lvdSB0aGVuIGNhbiB1c2UgdGhhdCA6cHk6Y2xhc3M6YF9I
b29rQ2FsbGVyIDxwbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXI+YAordG8gbWFrZSBub3JtYWwsIDpw
eTptZXRoOmB+cGx1Z2d5Lmhvb2tzLl9Ib29rQ2FsbGVyLmNhbGxfaGlzdG9yaWNgLCBvcgorOnB5
Om1ldGg6YH5wbHVnZ3kuaG9va3MuX0hvb2tDYWxsZXIuY2FsbF9leHRyYWAgY2FsbHMgYXMgbmVj
ZXNzYXJ5LgogCiBCdWlsdC1pbiB0cmFjaW5nCiAqKioqKioqKioqKioqKioqCkBAIC02MzAsNyAr
ODI5LDcgQEAgdW5kbyBmdW5jdGlvbiB0byBkaXNhYmxlIHRoZSBiZWhhdmlvdXIuCiAKIC4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAotICAgIHBtID0gUGx1Z2luTWFuYWdlcignbXlwcm9qZWN0JykK
KyAgICBwbSA9IFBsdWdpbk1hbmFnZXIoIm15cHJvamVjdCIpCiAgICAgIyBtYWdpYyBsaW5lIHRv
IHNldCBhIHdyaXRlciBmdW5jdGlvbgogICAgIHBtLnRyYWNlLnJvb3Quc2V0d3JpdGVyKHByaW50
KQogICAgIHVuZG8gPSBwbS5lbmFibGVfdHJhY2luZygpCkBAIC02NDksNiArODQ4LDcgQEAgVGhl
IGV4cGVjdGVkIHNpZ25hdHVyZSBhbmQgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNl
IGZ1bmN0aW9ucyBpczoKICAgICBkZWYgYmVmb3JlKGhvb2tfbmFtZSwgbWV0aG9kcywga3dhcmdz
KToKICAgICAgICAgcGFzcwogCisKICAgICBkZWYgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lLCBt
ZXRob2RzLCBrd2FyZ3MpOgogICAgICAgICBwYXNzCiAKQEAgLTY2Myw2ICs4NjMsMTkgQEAgcHJv
amVjdHMgcmVseSBvbiBpdC4gT3VyIEdpdGh1YiBpbnRlZ3JhdGVkIENJIHByb2Nlc3MgcnVucyB0
aGUgZnVsbAogYHRveCB0ZXN0IHN1aXRlYF8gb24gZWFjaCBjb21taXQgc28gYmUgc3VyZSB5b3Vy
IGNoYW5nZXMgY2FuIHJ1biBvbgogYWxsIHJlcXVpcmVkIGBQeXRob24gaW50ZXJwcmV0ZXJzYF8g
YW5kIGBgcHl0ZXN0YGAgdmVyc2lvbnMuCiAKK0ZvciBkZXZlbG9wbWVudCwgd2Ugc3VnZ2VzdCB0
byBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGFuZCBpbnN0YWxsIGBgcGx1Z2d5YGAgaW4K
K2VkaXRhYmxlIG1vZGUgYW5kIGBgZGV2YGAgZGVwZW5kZW5jaWVzOjoKKworICAgICQgcHl0aG9u
MyAtbSB2ZW52IC5lbnYKKyAgICAkIHNvdXJjZSAuZW52L2Jpbi9hY3RpdmF0ZQorICAgICQgcGlw
IGluc3RhbGwgLWUgLltkZXZdCisKK1RvIG1ha2Ugc3VyZSB5b3UgZm9sbG93IHRoZSBjb2RlIHN0
eWxlIHVzZWQgaW4gdGhlIHByb2plY3QsIGluc3RhbGwgcHJlLWNvbW1pdF8gd2hpY2gKK3dpbGwg
cnVuIHN0eWxlIGNoZWNrcyBiZWZvcmUgZWFjaCBjb21taXQ6OgorCisgICAgJCBwcmUtY29tbWl0
IGluc3RhbGwKKworCiBSZWxlYXNlIFBvbGljeQogKioqKioqKioqKioqKioKIFBsdWdneSB1c2Vz
IGBTZW1hbnRpYyBWZXJzaW9uaW5nYF8uIEJyZWFraW5nIGNoYW5nZXMgYXJlIG9ubHkgZm9yZXNl
ZW4gZm9yCkBAIC02NzEsMzEgKzg4NCw0NCBAQCBpbiB5b3VyIHByb2plY3QgeW91IHNob3VsZCB0
aHVzIHVzZSBhIGRlcGVuZGVuY3kgcmVzdHJpY3Rpb24gbGlrZQogYGAicGx1Z2d5Pj0wLjEuMCw8
MS4wImBgIHRvIGF2b2lkIHN1cnByaXNlcy4KIAogCitUYWJsZSBvZiBjb250ZW50cworKioqKioq
KioqKioqKioqKioKKworLi4gdG9jdHJlZTo6CisgICAgOm1heGRlcHRoOiAyCisKKyAgICBhcGlf
cmVmZXJlbmNlCisgICAgY2hhbmdlbG9nCisKKworCiAuLiBoeXBlcmxpbmtzCi0uLiBfcHl0ZXN0
OgotICAgIGh0dHA6Ly9weXRlc3Qub3JnCisuLiBfcHl0ZXN0X2NtZGxpbmVfbWFpbjoKKyAgICBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvX21vZHVsZXMvX3B5dGVzdC9ob29rc3Bl
Yy5odG1sI3B5dGVzdF9jbWRsaW5lX21haW4KKy4uIF9ob29rc3BlYyBtb2R1bGU6CisgICAgaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L19tb2R1bGVzL19weXRlc3QvaG9va3NwZWMu
aHRtbAorLi4gX2hvb2t3cmFwcGVyOgorICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRl
c3Qvd3JpdGluZ19wbHVnaW5zLmh0bWwjaG9va3dyYXBwZXItZXhlY3V0aW5nLWFyb3VuZC1vdGhl
ci1ob29rcworLi4gX2hvb2sgZnVuY3Rpb24gb3JkZXJpbmc6CisgICAgaHR0cDovL2RvYy5weXRl
c3Qub3JnL2VuL2xhdGVzdC93cml0aW5nX3BsdWdpbnMuaHRtbCNob29rLWZ1bmN0aW9uLW9yZGVy
aW5nLWNhbGwtZXhhbXBsZQogLi4gX3JlcXVlc3QtcmVzcG9uc2UgcGF0dGVybjoKICAgICBodHRw
czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXF1ZXN0JUUyJTgwJTkzcmVzcG9uc2UKIC4uIF9w
dWJsaXNoLXN1YnNjcmliZToKICAgICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QdWJs
aXNoJUUyJTgwJTkzc3Vic2NyaWJlX3BhdHRlcm4KIC4uIF9ob29raW5nOgogICAgIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvb2tpbmcKLS4uIF9wbHVnaW4gbWFuYWdlbWVudCBhbmQg
aG9vayBjYWxsaW5nOgotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvd3JpdGlu
Z19wbHVnaW5zLmh0bWwKLS4uIF9uYW1lc3BhY2U6Ci0gICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5v
cmcvMy42L3R1dG9yaWFsL2NsYXNzZXMuaHRtbCNweXRob24tc2NvcGVzLWFuZC1uYW1lc3BhY2Vz
CiAuLiBfY2FsbGJhY2tzOgogICAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbGxi
YWNrXyhjb21wdXRlcl9wcm9ncmFtbWluZykKIC4uIF90b3ggdGVzdCBzdWl0ZToKICAgICBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9wbHVnZ3kvYmxvYi9tYXN0ZXIvdG94LmluaQogLi4g
X1NlbWFudGljIFZlcnNpb25pbmc6Ci0gICAgaHR0cDovL3NlbXZlci5vcmcvCi0uLiBfdGlnaHQg
Y291cGxpbmc6Ci0gICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ291cGxpbmdfJTI4
Y29tcHV0ZXJfcHJvZ3JhbW1pbmclMjkjVHlwZXNfb2ZfY291cGxpbmcKKyAgICBodHRwczovL3Nl
bXZlci5vcmcvCiAuLiBfUHl0aG9uIGludGVycHJldGVyczoKICAgICBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9wbHVnZ3kvYmxvYi9tYXN0ZXIvdG94LmluaSNMMgotLi4gXzIwMCsgcGx1
Z2luczoKKy4uIF81MDArIHBsdWdpbnM6CiAgICAgaHR0cDovL3BsdWdpbmNvbXBhdC5oZXJva3Vh
cHAuY29tLworLi4gX3ByZS1jb21taXQ6CisgICAgaHR0cHM6Ly9wcmUtY29tbWl0LmNvbS8KIAog
CiAuLiBJbmRpY2VzIGFuZCB0YWJsZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4NzViNTgxYjhjMmMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9kb2NzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9hcGlfcmVmZXJlbmNlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L2RvY3MvY29uZi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvaW5kZXgucnN0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9wbHVnZ3kvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvX19p
bml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNTE3NWQ5NTY2MS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3BsdWdneS9fX2luaXRfXy5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDY4NCArMCwwIEBACi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IHdhcm5pbmdzCi1m
cm9tIC5jYWxsZXJzIGltcG9ydCBfbXVsdGljYWxsLCBIb29rQ2FsbEVycm9yLCBfUmVzdWx0LCBf
bGVnYWN5bXVsdGljYWxsCi0KLV9fdmVyc2lvbl9fID0gJzAuNS4zLmRldicKLQotX19hbGxfXyA9
IFsiUGx1Z2luTWFuYWdlciIsICJQbHVnaW5WYWxpZGF0aW9uRXJyb3IiLCAiSG9va0NhbGxFcnJv
ciIsCi0gICAgICAgICAgICJIb29rc3BlY01hcmtlciIsICJIb29raW1wbE1hcmtlciJdCi0KLQot
Y2xhc3MgUGx1Z2luVmFsaWRhdGlvbkVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiIHBsdWdpbiBm
YWlsZWQgdmFsaWRhdGlvbi4gIiIiCi0KLQotY2xhc3MgSG9va3NwZWNNYXJrZXIob2JqZWN0KToK
LSAgICAiIiIgRGVjb3JhdG9yIGhlbHBlciBjbGFzcyBmb3IgbWFya2luZyBmdW5jdGlvbnMgYXMg
aG9vayBzcGVjaWZpY2F0aW9ucy4KLQotICAgIFlvdSBjYW4gaW5zdGFudGlhdGUgaXQgd2l0aCBh
IHByb2plY3RfbmFtZSB0byBnZXQgYSBkZWNvcmF0b3IuCi0gICAgQ2FsbGluZyBQbHVnaW5NYW5h
Z2VyLmFkZF9ob29rc3BlY3MgbGF0ZXIgd2lsbCBkaXNjb3ZlciBhbGwgbWFya2VkIGZ1bmN0aW9u
cwotICAgIGlmIHRoZSBQbHVnaW5NYW5hZ2VyIHVzZXMgdGhlIHNhbWUgcHJvamVjdF9uYW1lLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2plY3RfbmFtZSk6Ci0gICAgICAg
IHNlbGYucHJvamVjdF9uYW1lID0gcHJvamVjdF9uYW1lCi0KLSAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgZnVuY3Rpb249Tm9uZSwgZmlyc3RyZXN1bHQ9RmFsc2UsIGhpc3RvcmljPUZhbHNlKToKLSAg
ICAgICAgIiIiIGlmIHBhc3NlZCBhIGZ1bmN0aW9uLCBkaXJlY3RseSBzZXRzIGF0dHJpYnV0ZXMg
b24gdGhlIGZ1bmN0aW9uCi0gICAgICAgIHdoaWNoIHdpbGwgbWFrZSBpdCBkaXNjb3ZlcmFibGUg
dG8gYWRkX2hvb2tzcGVjcygpLiAgSWYgcGFzc2VkIG5vCi0gICAgICAgIGZ1bmN0aW9uLCByZXR1
cm5zIGEgZGVjb3JhdG9yIHdoaWNoIGNhbiBiZSBhcHBsaWVkIHRvIGEgZnVuY3Rpb24KLSAgICAg
ICAgbGF0ZXIgdXNpbmcgdGhlIGF0dHJpYnV0ZXMgc3VwcGxpZWQuCi0KLSAgICAgICAgSWYgZmly
c3RyZXN1bHQgaXMgVHJ1ZSB0aGUgMTpOIGhvb2sgY2FsbCAoTiBiZWluZyB0aGUgbnVtYmVyIG9m
IHJlZ2lzdGVyZWQKLSAgICAgICAgaG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMpIHdpbGwg
c3RvcCBhdCBJPD1OIHdoZW4gdGhlIEkndGggZnVuY3Rpb24KLSAgICAgICAgcmV0dXJucyBhIG5v
bi1Ob25lIHJlc3VsdC4KLQotICAgICAgICBJZiBoaXN0b3JpYyBpcyBUcnVlIGNhbGxzIHRvIGEg
aG9vayB3aWxsIGJlIG1lbW9yaXplZCBhbmQgcmVwbGF5ZWQKLSAgICAgICAgb24gbGF0ZXIgcmVn
aXN0ZXJlZCBwbHVnaW5zLgotCi0gICAgICAgICIiIgotICAgICAgICBkZWYgc2V0YXR0cl9ob29r
c3BlY19vcHRzKGZ1bmMpOgotICAgICAgICAgICAgaWYgaGlzdG9yaWMgYW5kIGZpcnN0cmVzdWx0
OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCBoYXZlIGEgaGlzdG9y
aWMgZmlyc3RyZXN1bHQgaG9vayIpCi0gICAgICAgICAgICBzZXRhdHRyKGZ1bmMsIHNlbGYucHJv
amVjdF9uYW1lICsgIl9zcGVjIiwKLSAgICAgICAgICAgICAgICAgICAgZGljdChmaXJzdHJlc3Vs
dD1maXJzdHJlc3VsdCwgaGlzdG9yaWM9aGlzdG9yaWMpKQotICAgICAgICAgICAgcmV0dXJuIGZ1
bmMKLQotICAgICAgICBpZiBmdW5jdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVy
biBzZXRhdHRyX2hvb2tzcGVjX29wdHMoZnVuY3Rpb24pCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICByZXR1cm4gc2V0YXR0cl9ob29rc3BlY19vcHRzCi0KLQotY2xhc3MgSG9va2ltcGxNYXJr
ZXIob2JqZWN0KToKLSAgICAiIiIgRGVjb3JhdG9yIGhlbHBlciBjbGFzcyBmb3IgbWFya2luZyBm
dW5jdGlvbnMgYXMgaG9vayBpbXBsZW1lbnRhdGlvbnMuCi0KLSAgICBZb3UgY2FuIGluc3RhbnRp
YXRlIHdpdGggYSBwcm9qZWN0X25hbWUgdG8gZ2V0IGEgZGVjb3JhdG9yLgotICAgIENhbGxpbmcg
UGx1Z2luTWFuYWdlci5yZWdpc3RlciBsYXRlciB3aWxsIGRpc2NvdmVyIGFsbCBtYXJrZWQgZnVu
Y3Rpb25zCi0gICAgaWYgdGhlIFBsdWdpbk1hbmFnZXIgdXNlcyB0aGUgc2FtZSBwcm9qZWN0X25h
bWUuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2plY3RfbmFtZSk6Ci0gICAg
ICAgIHNlbGYucHJvamVjdF9uYW1lID0gcHJvamVjdF9uYW1lCi0KLSAgICBkZWYgX19jYWxsX18o
c2VsZiwgZnVuY3Rpb249Tm9uZSwgaG9va3dyYXBwZXI9RmFsc2UsIG9wdGlvbmFsaG9vaz1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgdHJ5Zmlyc3Q9RmFsc2UsIHRyeWxhc3Q9RmFsc2UpOgotCi0g
ICAgICAgICIiIiBpZiBwYXNzZWQgYSBmdW5jdGlvbiwgZGlyZWN0bHkgc2V0cyBhdHRyaWJ1dGVz
IG9uIHRoZSBmdW5jdGlvbgotICAgICAgICB3aGljaCB3aWxsIG1ha2UgaXQgZGlzY292ZXJhYmxl
IHRvIHJlZ2lzdGVyKCkuICBJZiBwYXNzZWQgbm8gZnVuY3Rpb24sCi0gICAgICAgIHJldHVybnMg
YSBkZWNvcmF0b3Igd2hpY2ggY2FuIGJlIGFwcGxpZWQgdG8gYSBmdW5jdGlvbiBsYXRlciB1c2lu
ZwotICAgICAgICB0aGUgYXR0cmlidXRlcyBzdXBwbGllZC4KLQotICAgICAgICBJZiBvcHRpb25h
bGhvb2sgaXMgVHJ1ZSBhIG1pc3NpbmcgbWF0Y2hpbmcgaG9vayBzcGVjaWZpY2F0aW9uIHdpbGwg
bm90IHJlc3VsdAotICAgICAgICBpbiBhbiBlcnJvciAoYnkgZGVmYXVsdCBpdCBpcyBhbiBlcnJv
ciBpZiBubyBtYXRjaGluZyBzcGVjIGlzIGZvdW5kKS4KLQotICAgICAgICBJZiB0cnlmaXJzdCBp
cyBUcnVlIHRoaXMgaG9vayBpbXBsZW1lbnRhdGlvbiB3aWxsIHJ1biBhcyBlYXJseSBhcyBwb3Nz
aWJsZQotICAgICAgICBpbiB0aGUgY2hhaW4gb2YgTiBob29rIGltcGxlbWVudGF0aW9ucyBmb3Ig
YSBzcGVjZmljYXRpb24uCi0KLSAgICAgICAgSWYgdHJ5bGFzdCBpcyBUcnVlIHRoaXMgaG9vayBp
bXBsZW1lbnRhdGlvbiB3aWxsIHJ1biBhcyBsYXRlIGFzIHBvc3NpYmxlCi0gICAgICAgIGluIHRo
ZSBjaGFpbiBvZiBOIGhvb2sgaW1wbGVtZW50YXRpb25zLgotCi0gICAgICAgIElmIGhvb2t3cmFw
cGVyIGlzIFRydWUgdGhlIGhvb2sgaW1wbGVtZW50YXRpb25zIG5lZWRzIHRvIGV4ZWN1dGUgZXhh
Y3RseQotICAgICAgICBvbmUgInlpZWxkIi4gIFRoZSBjb2RlIGJlZm9yZSB0aGUgeWllbGQgaXMg
cnVuIGVhcmx5IGJlZm9yZSBhbnkgbm9uLWhvb2t3cmFwcGVyCi0gICAgICAgIGZ1bmN0aW9uIGlz
IHJ1bi4gIFRoZSBjb2RlIGFmdGVyIHRoZSB5aWVsZCBpcyBydW4gYWZ0ZXIgYWxsIG5vbi1ob29r
d3JhcHBlcgotICAgICAgICBmdW5jdGlvbiBoYXZlIHJ1bi4gIFRoZSB5aWVsZCByZWNlaXZlcyBh
IGBgX1Jlc3VsdGBgIG9iamVjdCByZXByZXNlbnRpbmcKLSAgICAgICAgdGhlIGV4Y2VwdGlvbiBv
ciByZXN1bHQgb3V0Y29tZSBvZiB0aGUgaW5uZXIgY2FsbHMgKGluY2x1ZGluZyBvdGhlciBob29r
d3JhcHBlcgotICAgICAgICBjYWxscykuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGRlZiBzZXRh
dHRyX2hvb2tpbXBsX29wdHMoZnVuYyk6Ci0gICAgICAgICAgICBzZXRhdHRyKGZ1bmMsIHNlbGYu
cHJvamVjdF9uYW1lICsgIl9pbXBsIiwKLSAgICAgICAgICAgICAgICAgICAgZGljdChob29rd3Jh
cHBlcj1ob29rd3JhcHBlciwgb3B0aW9uYWxob29rPW9wdGlvbmFsaG9vaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB0cnlmaXJzdD10cnlmaXJzdCwgdHJ5bGFzdD10cnlsYXN0KSkKLSAgICAg
ICAgICAgIHJldHVybiBmdW5jCi0KLSAgICAgICAgaWYgZnVuY3Rpb24gaXMgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybiBzZXRhdHRyX2hvb2tpbXBsX29wdHMKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJldHVybiBzZXRhdHRyX2hvb2tpbXBsX29wdHMoZnVuY3Rpb24pCi0KLQotZGVmIG5v
cm1hbGl6ZV9ob29raW1wbF9vcHRzKG9wdHMpOgotICAgIG9wdHMuc2V0ZGVmYXVsdCgidHJ5Zmly
c3QiLCBGYWxzZSkKLSAgICBvcHRzLnNldGRlZmF1bHQoInRyeWxhc3QiLCBGYWxzZSkKLSAgICBv
cHRzLnNldGRlZmF1bHQoImhvb2t3cmFwcGVyIiwgRmFsc2UpCi0gICAgb3B0cy5zZXRkZWZhdWx0
KCJvcHRpb25hbGhvb2siLCBGYWxzZSkKLQotCi1jbGFzcyBfVGFnVHJhY2VyKG9iamVjdCk6Ci0g
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl90YWcycHJvYyA9IHt9Ci0gICAg
ICAgIHNlbGYud3JpdGVyID0gTm9uZQotICAgICAgICBzZWxmLmluZGVudCA9IDAKLQotICAgIGRl
ZiBnZXQoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBfVGFnVHJhY2VyU3ViKHNlbGYsIChu
YW1lLCkpCi0KLSAgICBkZWYgZm9ybWF0X21lc3NhZ2Uoc2VsZiwgdGFncywgYXJncyk6Ci0gICAg
ICAgIGlmIGlzaW5zdGFuY2UoYXJnc1stMV0sIGRpY3QpOgotICAgICAgICAgICAgZXh0cmEgPSBh
cmdzWy0xXQotICAgICAgICAgICAgYXJncyA9IGFyZ3NbOi0xXQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgZXh0cmEgPSB7fQotCi0gICAgICAgIGNvbnRlbnQgPSAiICIuam9pbihtYXAoc3Ry
LCBhcmdzKSkKLSAgICAgICAgaW5kZW50ID0gIiAgIiAqIHNlbGYuaW5kZW50Ci0KLSAgICAgICAg
bGluZXMgPSBbCi0gICAgICAgICAgICAiJXMlcyBbJXNdXG4iICUgKGluZGVudCwgY29udGVudCwg
IjoiLmpvaW4odGFncykpCi0gICAgICAgIF0KLQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4g
ZXh0cmEuaXRlbXMoKToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJXMgICAgJXM6ICVzXG4i
ICUgKGluZGVudCwgbmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gbGluZXMKLQotICAgIGRl
ZiBwcm9jZXNzbWVzc2FnZShzZWxmLCB0YWdzLCBhcmdzKToKLSAgICAgICAgaWYgc2VsZi53cml0
ZXIgaXMgbm90IE5vbmUgYW5kIGFyZ3M6Ci0gICAgICAgICAgICBsaW5lcyA9IHNlbGYuZm9ybWF0
X21lc3NhZ2UodGFncywgYXJncykKLSAgICAgICAgICAgIHNlbGYud3JpdGVyKCcnLmpvaW4obGlu
ZXMpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl90YWcycHJvY1t0YWdzXSh0YWdz
LCBhcmdzKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgc2V0d3JpdGVyKHNlbGYsIHdyaXRlcik6Ci0gICAgICAgIHNlbGYud3JpdGVyID0gd3Jp
dGVyCi0KLSAgICBkZWYgc2V0cHJvY2Vzc29yKHNlbGYsIHRhZ3MsIHByb2Nlc3Nvcik6Ci0gICAg
ICAgIGlmIGlzaW5zdGFuY2UodGFncywgc3RyKToKLSAgICAgICAgICAgIHRhZ3MgPSB0dXBsZSh0
YWdzLnNwbGl0KCI6IikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZSh0YWdzLCB0dXBsZSkKLSAgICAgICAgc2VsZi5fdGFnMnByb2NbdGFnc10gPSBwcm9jZXNz
b3IKLQotCi1jbGFzcyBfVGFnVHJhY2VyU3ViKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJvb3QsIHRhZ3MpOgotICAgICAgICBzZWxmLnJvb3QgPSByb290Ci0gICAgICAgIHNlbGYu
dGFncyA9IHRhZ3MKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHNl
bGYucm9vdC5wcm9jZXNzbWVzc2FnZShzZWxmLnRhZ3MsIGFyZ3MpCi0KLSAgICBkZWYgc2V0bXlw
cm9jZXNzb3Ioc2VsZiwgcHJvY2Vzc29yKToKLSAgICAgICAgc2VsZi5yb290LnNldHByb2Nlc3Nv
cihzZWxmLnRhZ3MsIHByb2Nlc3NvcikKLQotICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLnJvb3QsIHNlbGYudGFncyArIChuYW1lLCkp
Ci0KLQotY2xhc3MgX1RyYWNlZEhvb2tFeGVjdXRpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgcGx1Z2lubWFuYWdlciwgYmVmb3JlLCBhZnRlcik6Ci0gICAgICAgIHNlbGYucGx1
Z2lubWFuYWdlciA9IHBsdWdpbm1hbmFnZXIKLSAgICAgICAgc2VsZi5iZWZvcmUgPSBiZWZvcmUK
LSAgICAgICAgc2VsZi5hZnRlciA9IGFmdGVyCi0gICAgICAgIHNlbGYub2xkY2FsbCA9IHBsdWdp
bm1hbmFnZXIuX2lubmVyX2hvb2tleGVjCi0gICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShz
ZWxmLm9sZGNhbGwsIF9UcmFjZWRIb29rRXhlY3V0aW9uKQotICAgICAgICBzZWxmLnBsdWdpbm1h
bmFnZXIuX2lubmVyX2hvb2tleGVjID0gc2VsZgotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGhv
b2ssIGhvb2tfaW1wbHMsIGt3YXJncyk6Ci0gICAgICAgIHNlbGYuYmVmb3JlKGhvb2submFtZSwg
aG9va19pbXBscywga3dhcmdzKQotICAgICAgICBvdXRjb21lID0gX1Jlc3VsdC5mcm9tX2NhbGwo
bGFtYmRhOiBzZWxmLm9sZGNhbGwoaG9vaywgaG9va19pbXBscywga3dhcmdzKSkKLSAgICAgICAg
c2VsZi5hZnRlcihvdXRjb21lLCBob29rLm5hbWUsIGhvb2tfaW1wbHMsIGt3YXJncykKLSAgICAg
ICAgcmV0dXJuIG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0KLSAgICBkZWYgdW5kbyhzZWxmKToKLSAg
ICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLl9pbm5lcl9ob29rZXhlYyA9IHNlbGYub2xkY2FsbAot
Ci0KLWNsYXNzIFBsdWdpbk1hbmFnZXIob2JqZWN0KToKLSAgICAiIiIgQ29yZSBQbHVnaW5tYW5h
Z2VyIGNsYXNzIHdoaWNoIG1hbmFnZXMgcmVnaXN0cmF0aW9uCi0gICAgb2YgcGx1Z2luIG9iamVj
dHMgYW5kIDE6TiBob29rIGNhbGxpbmcuCi0KLSAgICBZb3UgY2FuIHJlZ2lzdGVyIG5ldyBob29r
cyBieSBjYWxsaW5nIGBgYWRkX2hvb2tzcGVjKG1vZHVsZV9vcl9jbGFzcylgYC4KLSAgICBZb3Ug
Y2FuIHJlZ2lzdGVyIHBsdWdpbiBvYmplY3RzICh3aGljaCBjb250YWluIGhvb2tzKSBieSBjYWxs
aW5nCi0gICAgYGByZWdpc3RlcihwbHVnaW4pYGAuICBUaGUgUGx1Z2lubWFuYWdlciBpcyBpbml0
aWFsaXplZCB3aXRoIGEKLSAgICBwcmVmaXggdGhhdCBpcyBzZWFyY2hlZCBmb3IgaW4gdGhlIG5h
bWVzIG9mIHRoZSBkaWN0IG9mIHJlZ2lzdGVyZWQKLSAgICBwbHVnaW4gb2JqZWN0cy4gIEFuIG9w
dGlvbmFsIGV4Y2x1ZGVmdW5jIGFsbG93cyB0byBibGFja2xpc3QgbmFtZXMgd2hpY2gKLSAgICBh
cmUgbm90IGNvbnNpZGVyZWQgYXMgaG9va3MgZGVzcGl0ZSBhIG1hdGNoaW5nIHByZWZpeC4KLQot
ICAgIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgeW91IGNhbiBjYWxsIGBgZW5hYmxlX3RyYWNpbmco
KWBgCi0gICAgd2hpY2ggd2lsbCBzdWJzZXF1ZW50bHkgc2VuZCBkZWJ1ZyBpbmZvcm1hdGlvbiB0
byB0aGUgdHJhY2UgaGVscGVyLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBy
b2plY3RfbmFtZSwgaW1wbHByZWZpeD1Ob25lKToKLSAgICAgICAgIiIiIGlmIGltcGxwcmVmaXgg
aXMgZ2l2ZW4gaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0gICAgICAgIHdpbGwgYmUgcmVjb2du
aXplZCBpZiB0aGVpciBuYW1lIG1hdGNoZXMgdGhlIGltcGxwcmVmaXguICIiIgotICAgICAgICBz
ZWxmLnByb2plY3RfbmFtZSA9IHByb2plY3RfbmFtZQotICAgICAgICBzZWxmLl9uYW1lMnBsdWdp
biA9IHt9Ci0gICAgICAgIHNlbGYuX3BsdWdpbjJob29rY2FsbGVycyA9IHt9Ci0gICAgICAgIHNl
bGYuX3BsdWdpbl9kaXN0aW5mbyA9IFtdCi0gICAgICAgIHNlbGYudHJhY2UgPSBfVGFnVHJhY2Vy
KCkuZ2V0KCJwbHVnaW5tYW5hZ2UiKQotICAgICAgICBzZWxmLmhvb2sgPSBfSG9va1JlbGF5KHNl
bGYudHJhY2Uucm9vdC5nZXQoImhvb2siKSkKLSAgICAgICAgc2VsZi5faW1wbHByZWZpeCA9IGlt
cGxwcmVmaXgKLSAgICAgICAgc2VsZi5faW5uZXJfaG9va2V4ZWMgPSBsYW1iZGEgaG9vaywgbWV0
aG9kcywga3dhcmdzOiBcCi0gICAgICAgICAgICBob29rLm11bHRpY2FsbCgKLSAgICAgICAgICAg
ICAgICBtZXRob2RzLCBrd2FyZ3MsCi0gICAgICAgICAgICAgICAgZmlyc3RyZXN1bHQ9aG9vay5z
cGVjX29wdHMuZ2V0KCdmaXJzdHJlc3VsdCcpLAotICAgICAgICAgICAgKQotCi0gICAgZGVmIF9o
b29rZXhlYyhzZWxmLCBob29rLCBtZXRob2RzLCBrd2FyZ3MpOgotICAgICAgICAjIGNhbGxlZCBm
cm9tIGFsbCBob29rY2FsbGVyIGluc3RhbmNlcy4KLSAgICAgICAgIyBlbmFibGVfdHJhY2luZyB3
aWxsIHNldCBpdHMgb3duIHdyYXBwaW5nIGZ1bmN0aW9uIGF0IHNlbGYuX2lubmVyX2hvb2tleGVj
Ci0gICAgICAgIHJldHVybiBzZWxmLl9pbm5lcl9ob29rZXhlYyhob29rLCBtZXRob2RzLCBrd2Fy
Z3MpCi0KLSAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgotICAgICAg
ICAiIiIgUmVnaXN0ZXIgYSBwbHVnaW4gYW5kIHJldHVybiBpdHMgY2Fub25pY2FsIG5hbWUgb3Ig
Tm9uZSBpZiB0aGUgbmFtZQotICAgICAgICBpcyBibG9ja2VkIGZyb20gcmVnaXN0ZXJpbmcuICBS
YWlzZSBhIFZhbHVlRXJyb3IgaWYgdGhlIHBsdWdpbiBpcyBhbHJlYWR5Ci0gICAgICAgIHJlZ2lz
dGVyZWQuICIiIgotICAgICAgICBwbHVnaW5fbmFtZSA9IG5hbWUgb3Igc2VsZi5nZXRfY2Fub25p
Y2FsX25hbWUocGx1Z2luKQotCi0gICAgICAgIGlmIHBsdWdpbl9uYW1lIGluIHNlbGYuX25hbWUy
cGx1Z2luIG9yIHBsdWdpbiBpbiBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnM6Ci0gICAgICAgICAg
ICBpZiBzZWxmLl9uYW1lMnBsdWdpbi5nZXQocGx1Z2luX25hbWUsIC0xKSBpcyBOb25lOgotICAg
ICAgICAgICAgICAgIHJldHVybiAgIyBibG9ja2VkIHBsdWdpbiwgcmV0dXJuIE5vbmUgdG8gaW5k
aWNhdGUgbm8gcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQbHVn
aW4gYWxyZWFkeSByZWdpc3RlcmVkOiAlcz0lc1xuJXMiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHBsdWdpbl9uYW1lLCBwbHVnaW4sIHNlbGYuX25hbWUycGx1Z2luKSkKLQotICAg
ICAgICAjIFhYWCBpZiBhbiBlcnJvciBoYXBwZW5zIHdlIHNob3VsZCBtYWtlIHN1cmUgbm8gc3Rh
dGUgaGFzIGJlZW4KLSAgICAgICAgIyBjaGFuZ2VkIGF0IHBvaW50IG9mIHJldHVybgotICAgICAg
ICBzZWxmLl9uYW1lMnBsdWdpbltwbHVnaW5fbmFtZV0gPSBwbHVnaW4KLQotICAgICAgICAjIHJl
Z2lzdGVyIG1hdGNoaW5nIGhvb2sgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwbHVnaW4KLSAgICAg
ICAgc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzW3BsdWdpbl0gPSBob29rY2FsbGVycyA9IFtdCi0g
ICAgICAgIGZvciBuYW1lIGluIGRpcihwbHVnaW4pOgotICAgICAgICAgICAgaG9va2ltcGxfb3B0
cyA9IHNlbGYucGFyc2VfaG9va2ltcGxfb3B0cyhwbHVnaW4sIG5hbWUpCi0gICAgICAgICAgICBp
ZiBob29raW1wbF9vcHRzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZV9o
b29raW1wbF9vcHRzKGhvb2tpbXBsX29wdHMpCi0gICAgICAgICAgICAgICAgbWV0aG9kID0gZ2V0
YXR0cihwbHVnaW4sIG5hbWUpCi0gICAgICAgICAgICAgICAgaG9va2ltcGwgPSBIb29rSW1wbChw
bHVnaW4sIHBsdWdpbl9uYW1lLCBtZXRob2QsIGhvb2tpbXBsX29wdHMpCi0gICAgICAgICAgICAg
ICAgaG9vayA9IGdldGF0dHIoc2VsZi5ob29rLCBuYW1lLCBOb25lKQotICAgICAgICAgICAgICAg
IGlmIGhvb2sgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgaG9vayA9IF9Ib29rQ2FsbGVy
KG5hbWUsIHNlbGYuX2hvb2tleGVjKQotICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYu
aG9vaywgbmFtZSwgaG9vaykKLSAgICAgICAgICAgICAgICBlbGlmIGhvb2suaGFzX3NwZWMoKToK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2hvb2soaG9vaywgaG9va2ltcGwpCi0g
ICAgICAgICAgICAgICAgICAgIGhvb2suX21heWJlX2FwcGx5X2hpc3RvcnkoaG9va2ltcGwpCi0g
ICAgICAgICAgICAgICAgaG9vay5fYWRkX2hvb2tpbXBsKGhvb2tpbXBsKQotICAgICAgICAgICAg
ICAgIGhvb2tjYWxsZXJzLmFwcGVuZChob29rKQotICAgICAgICByZXR1cm4gcGx1Z2luX25hbWUK
LQotICAgIGRlZiBwYXJzZV9ob29raW1wbF9vcHRzKHNlbGYsIHBsdWdpbiwgbmFtZSk6Ci0gICAg
ICAgIG1ldGhvZCA9IGdldGF0dHIocGx1Z2luLCBuYW1lKQotICAgICAgICBpZiBub3QgaW5zcGVj
dC5pc3JvdXRpbmUobWV0aG9kKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICByZXMgPSBnZXRhdHRyKG1ldGhvZCwgc2VsZi5wcm9qZWN0X25hbWUgKyAiX2lt
cGwiLCBOb25lKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmVzID0g
e30KLSAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShyZXMsIGRp
Y3QpOgotICAgICAgICAgICAgIyBmYWxzZSBwb3NpdGl2ZQotICAgICAgICAgICAgcmVzID0gTm9u
ZQotICAgICAgICBlbGlmIHJlcyBpcyBOb25lIGFuZCBzZWxmLl9pbXBscHJlZml4IGFuZCBuYW1l
LnN0YXJ0c3dpdGgoc2VsZi5faW1wbHByZWZpeCk6Ci0gICAgICAgICAgICByZXMgPSB7fQotICAg
ICAgICByZXR1cm4gcmVzCi0KLSAgICBkZWYgdW5yZWdpc3RlcihzZWxmLCBwbHVnaW49Tm9uZSwg
bmFtZT1Ob25lKToKLSAgICAgICAgIiIiIHVucmVnaXN0ZXIgYSBwbHVnaW4gb2JqZWN0IGFuZCBh
bGwgaXRzIGNvbnRhaW5lZCBob29rIGltcGxlbWVudGF0aW9ucwotICAgICAgICBmcm9tIGludGVy
bmFsIGRhdGEgc3RydWN0dXJlcy4gIiIiCi0gICAgICAgIGlmIG5hbWUgaXMgTm9uZToKLSAgICAg
ICAgICAgIGFzc2VydCBwbHVnaW4gaXMgbm90IE5vbmUsICJvbmUgb2YgbmFtZSBvciBwbHVnaW4g
bmVlZHMgdG8gYmUgc3BlY2lmaWVkIgotICAgICAgICAgICAgbmFtZSA9IHNlbGYuZ2V0X25hbWUo
cGx1Z2luKQotCi0gICAgICAgIGlmIHBsdWdpbiBpcyBOb25lOgotICAgICAgICAgICAgcGx1Z2lu
ID0gc2VsZi5nZXRfcGx1Z2luKG5hbWUpCi0KLSAgICAgICAgIyBpZiBzZWxmLl9uYW1lMnBsdWdp
bltuYW1lXSA9PSBOb25lIHJlZ2lzdHJhdGlvbiB3YXMgYmxvY2tlZDogaWdub3JlCi0gICAgICAg
IGlmIHNlbGYuX25hbWUycGx1Z2luLmdldChuYW1lKToKLSAgICAgICAgICAgIGRlbCBzZWxmLl9u
YW1lMnBsdWdpbltuYW1lXQotCi0gICAgICAgIGZvciBob29rY2FsbGVyIGluIHNlbGYuX3BsdWdp
bjJob29rY2FsbGVycy5wb3AocGx1Z2luLCBbXSk6Ci0gICAgICAgICAgICBob29rY2FsbGVyLl9y
ZW1vdmVfcGx1Z2luKHBsdWdpbikKLQotICAgICAgICByZXR1cm4gcGx1Z2luCi0KLSAgICBkZWYg
c2V0X2Jsb2NrZWQoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIiBibG9jayByZWdpc3RyYXRpb25z
IG9mIHRoZSBnaXZlbiBuYW1lLCB1bnJlZ2lzdGVyIGlmIGFscmVhZHkgcmVnaXN0ZXJlZC4gIiIi
Ci0gICAgICAgIHNlbGYudW5yZWdpc3RlcihuYW1lPW5hbWUpCi0gICAgICAgIHNlbGYuX25hbWUy
cGx1Z2luW25hbWVdID0gTm9uZQotCi0gICAgZGVmIGlzX2Jsb2NrZWQoc2VsZiwgbmFtZSk6Ci0g
ICAgICAgICIiIiByZXR1cm4gVHJ1ZSBpZiB0aGUgbmFtZSBibG9ncyByZWdpc3RlcmluZyBwbHVn
aW5zIG9mIHRoYXQgbmFtZS4gIiIiCi0gICAgICAgIHJldHVybiBuYW1lIGluIHNlbGYuX25hbWUy
cGx1Z2luIGFuZCBzZWxmLl9uYW1lMnBsdWdpbltuYW1lXSBpcyBOb25lCi0KLSAgICBkZWYgYWRk
X2hvb2tzcGVjcyhzZWxmLCBtb2R1bGVfb3JfY2xhc3MpOgotICAgICAgICAiIiIgYWRkIG5ldyBo
b29rIHNwZWNpZmljYXRpb25zIGRlZmluZWQgaW4gdGhlIGdpdmVuIG1vZHVsZV9vcl9jbGFzcy4K
LSAgICAgICAgRnVuY3Rpb25zIGFyZSByZWNvZ25pemVkIGlmIHRoZXkgaGF2ZSBiZWVuIGRlY29y
YXRlZCBhY2NvcmRpbmdseS4gIiIiCi0gICAgICAgIG5hbWVzID0gW10KLSAgICAgICAgZm9yIG5h
bWUgaW4gZGlyKG1vZHVsZV9vcl9jbGFzcyk6Ci0gICAgICAgICAgICBzcGVjX29wdHMgPSBzZWxm
LnBhcnNlX2hvb2tzcGVjX29wdHMobW9kdWxlX29yX2NsYXNzLCBuYW1lKQotICAgICAgICAgICAg
aWYgc3BlY19vcHRzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGhjID0gZ2V0YXR0cihz
ZWxmLmhvb2ssIG5hbWUsIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgaGMgaXMgTm9uZToKLSAg
ICAgICAgICAgICAgICAgICAgaGMgPSBfSG9va0NhbGxlcihuYW1lLCBzZWxmLl9ob29rZXhlYywg
bW9kdWxlX29yX2NsYXNzLCBzcGVjX29wdHMpCi0gICAgICAgICAgICAgICAgICAgIHNldGF0dHIo
c2VsZi5ob29rLCBuYW1lLCBoYykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICAjIHBsdWdpbnMgcmVnaXN0ZXJlZCB0aGlzIGhvb2sgd2l0aG91dCBrbm93aW5nIHRo
ZSBzcGVjCi0gICAgICAgICAgICAgICAgICAgIGhjLnNldF9zcGVjaWZpY2F0aW9uKG1vZHVsZV9v
cl9jbGFzcywgc3BlY19vcHRzKQotICAgICAgICAgICAgICAgICAgICBmb3IgaG9va2Z1bmN0aW9u
IGluIChoYy5fd3JhcHBlcnMgKyBoYy5fbm9ud3JhcHBlcnMpOgotICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fdmVyaWZ5X2hvb2soaGMsIGhvb2tmdW5jdGlvbikKLSAgICAgICAgICAgICAg
ICBuYW1lcy5hcHBlbmQobmFtZSkKLQotICAgICAgICBpZiBub3QgbmFtZXM6Ci0gICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJkaWQgbm90IGZpbmQgYW55ICVyIGhvb2tzIGluICVyIiAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnByb2plY3RfbmFtZSwgbW9kdWxlX29y
X2NsYXNzKSkKLQotICAgIGRlZiBwYXJzZV9ob29rc3BlY19vcHRzKHNlbGYsIG1vZHVsZV9vcl9j
bGFzcywgbmFtZSk6Ci0gICAgICAgIG1ldGhvZCA9IGdldGF0dHIobW9kdWxlX29yX2NsYXNzLCBu
YW1lKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihtZXRob2QsIHNlbGYucHJvamVjdF9uYW1lICsg
Il9zcGVjIiwgTm9uZSkKLQotICAgIGRlZiBnZXRfcGx1Z2lucyhzZWxmKToKLSAgICAgICAgIiIi
IHJldHVybiB0aGUgc2V0IG9mIHJlZ2lzdGVyZWQgcGx1Z2lucy4gIiIiCi0gICAgICAgIHJldHVy
biBzZXQoc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzKQotCi0gICAgZGVmIGlzX3JlZ2lzdGVyZWQo
c2VsZiwgcGx1Z2luKToKLSAgICAgICAgIiIiIFJldHVybiBUcnVlIGlmIHRoZSBwbHVnaW4gaXMg
YWxyZWFkeSByZWdpc3RlcmVkLiAiIiIKLSAgICAgICAgcmV0dXJuIHBsdWdpbiBpbiBzZWxmLl9w
bHVnaW4yaG9va2NhbGxlcnMKLQotICAgIGRlZiBnZXRfY2Fub25pY2FsX25hbWUoc2VsZiwgcGx1
Z2luKToKLSAgICAgICAgIiIiIFJldHVybiBjYW5vbmljYWwgbmFtZSBmb3IgYSBwbHVnaW4gb2Jq
ZWN0LiBOb3RlIHRoYXQgYSBwbHVnaW4KLSAgICAgICAgbWF5IGJlIHJlZ2lzdGVyZWQgdW5kZXIg
YSBkaWZmZXJlbnQgbmFtZSB3aGljaCB3YXMgc3BlY2lmaWVkCi0gICAgICAgIGJ5IHRoZSBjYWxs
ZXIgb2YgcmVnaXN0ZXIocGx1Z2luLCBuYW1lKS4gVG8gb2J0YWluIHRoZSBuYW1lCi0gICAgICAg
IG9mIGFuIHJlZ2lzdGVyZWQgcGx1Z2luIHVzZSBgYGdldF9uYW1lKHBsdWdpbilgYCBpbnN0ZWFk
LiIiIgotICAgICAgICByZXR1cm4gZ2V0YXR0cihwbHVnaW4sICJfX25hbWVfXyIsIE5vbmUpIG9y
IHN0cihpZChwbHVnaW4pKQotCi0gICAgZGVmIGdldF9wbHVnaW4oc2VsZiwgbmFtZSk6Ci0gICAg
ICAgICIiIiBSZXR1cm4gYSBwbHVnaW4gb3IgTm9uZSBmb3IgdGhlIGdpdmVuIG5hbWUuICIiIgot
ICAgICAgICByZXR1cm4gc2VsZi5fbmFtZTJwbHVnaW4uZ2V0KG5hbWUpCi0KLSAgICBkZWYgaGFz
X3BsdWdpbihzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiIFJldHVybiBUcnVlIGlmIGEgcGx1Z2lu
IHdpdGggdGhlIGdpdmVuIG5hbWUgaXMgcmVnaXN0ZXJlZC4gIiIiCi0gICAgICAgIHJldHVybiBz
ZWxmLmdldF9wbHVnaW4obmFtZSkgaXMgbm90IE5vbmUKLQotICAgIGRlZiBnZXRfbmFtZShzZWxm
LCBwbHVnaW4pOgotICAgICAgICAiIiIgUmV0dXJuIG5hbWUgZm9yIHJlZ2lzdGVyZWQgcGx1Z2lu
IG9yIE5vbmUgaWYgbm90IHJlZ2lzdGVyZWQuICIiIgotICAgICAgICBmb3IgbmFtZSwgdmFsIGlu
IHNlbGYuX25hbWUycGx1Z2luLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBwbHVnaW4gPT0gdmFs
OgotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCi0KLSAgICBkZWYgX3ZlcmlmeV9ob29rKHNl
bGYsIGhvb2ssIGhvb2tpbXBsKToKLSAgICAgICAgaWYgaG9vay5pc19oaXN0b3JpYygpIGFuZCBo
b29raW1wbC5ob29rd3JhcHBlcjoKLSAgICAgICAgICAgIHJhaXNlIFBsdWdpblZhbGlkYXRpb25F
cnJvcigKLSAgICAgICAgICAgICAgICAiUGx1Z2luICVyXG5ob29rICVyXG5oaXN0b3JpYyBpbmNv
bXBhdGlibGUgdG8gaG9va3dyYXBwZXIiICUKLSAgICAgICAgICAgICAgICAoaG9va2ltcGwucGx1
Z2luX25hbWUsIGhvb2submFtZSkpCi0KLSAgICAgICAgIyBwb3NpdGlvbmFsIGFyZyBjaGVja2lu
ZwotICAgICAgICBub3RpbnNwZWMgPSBzZXQoaG9va2ltcGwuYXJnbmFtZXMpIC0gc2V0KGhvb2su
YXJnbmFtZXMpCi0gICAgICAgIGlmIG5vdGluc3BlYzoKLSAgICAgICAgICAgIHJhaXNlIFBsdWdp
blZhbGlkYXRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAiUGx1Z2luICVyIGZvciBob29rICVy
XG5ob29raW1wbCBkZWZpbml0aW9uOiAlc1xuIgotICAgICAgICAgICAgICAgICJBcmd1bWVudChz
KSAlcyBhcmUgZGVjbGFyZWQgaW4gdGhlIGhvb2tpbXBsIGJ1dCAiCi0gICAgICAgICAgICAgICAg
ImNhbiBub3QgYmUgZm91bmQgaW4gdGhlIGhvb2tzcGVjIiAlCi0gICAgICAgICAgICAgICAgKGhv
b2tpbXBsLnBsdWdpbl9uYW1lLCBob29rLm5hbWUsCi0gICAgICAgICAgICAgICAgIF9mb3JtYXRk
ZWYoaG9va2ltcGwuZnVuY3Rpb24pLCBub3RpbnNwZWMpCi0gICAgICAgICAgICApCi0KLSAgICBk
ZWYgY2hlY2tfcGVuZGluZyhzZWxmKToKLSAgICAgICAgIiIiIFZlcmlmeSB0aGF0IGFsbCBob29r
cyB3aGljaCBoYXZlIG5vdCBiZWVuIHZlcmlmaWVkIGFnYWluc3QKLSAgICAgICAgYSBob29rIHNw
ZWNpZmljYXRpb24gYXJlIG9wdGlvbmFsLCBvdGhlcndpc2UgcmFpc2UgUGx1Z2luVmFsaWRhdGlv
bkVycm9yIiIiCi0gICAgICAgIGZvciBuYW1lIGluIHNlbGYuaG9vay5fX2RpY3RfXzoKLSAgICAg
ICAgICAgIGlmIG5hbWVbMF0gIT0gIl8iOgotICAgICAgICAgICAgICAgIGhvb2sgPSBnZXRhdHRy
KHNlbGYuaG9vaywgbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgaG9vay5oYXNfc3BlYygp
OgotICAgICAgICAgICAgICAgICAgICBmb3IgaG9va2ltcGwgaW4gKGhvb2suX3dyYXBwZXJzICsg
aG9vay5fbm9ud3JhcHBlcnMpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhvb2tp
bXBsLm9wdGlvbmFsaG9vazoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQbHVn
aW5WYWxpZGF0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtu
b3duIGhvb2sgJXIgaW4gcGx1Z2luICVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChuYW1lLCBob29raW1wbC5wbHVnaW4pKQotCi0gICAgZGVmIGxvYWRfc2V0dXB0b29sc19l
bnRyeXBvaW50cyhzZWxmLCBlbnRyeXBvaW50X25hbWUpOgotICAgICAgICAiIiIgTG9hZCBtb2R1
bGVzIGZyb20gcXVlcnlpbmcgdGhlIHNwZWNpZmllZCBzZXR1cHRvb2xzIGVudHJ5cG9pbnQgbmFt
ZS4KLSAgICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgbG9hZGVkIHBsdWdpbnMuICIiIgotICAg
ICAgICBmcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0IChpdGVyX2VudHJ5X3BvaW50cywgRGlzdHJp
YnV0aW9uTm90Rm91bmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25Db25mbGljdCkKLSAgICAgICAgZm9yIGVwIGluIGl0ZXJfZW50cnlfcG9pbnRzKGVudHJ5cG9p
bnRfbmFtZSk6Ci0gICAgICAgICAgICAjIGlzIHRoZSBwbHVnaW4gcmVnaXN0ZXJlZCBvciBibG9j
a2VkPwotICAgICAgICAgICAgaWYgc2VsZi5nZXRfcGx1Z2luKGVwLm5hbWUpIG9yIHNlbGYuaXNf
YmxvY2tlZChlcC5uYW1lKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHBsdWdpbiA9IGVwLmxvYWQoKQotICAgICAgICAgICAgZXhj
ZXB0IERpc3RyaWJ1dGlvbk5vdEZvdW5kOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBleGNlcHQgVmVyc2lvbkNvbmZsaWN0IGFzIGU6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgUGx1Z2luVmFsaWRhdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAiUGx1Z2luICVy
IGNvdWxkIG5vdCBiZSBsb2FkZWQ6ICVzISIgJSAoZXAubmFtZSwgZSkpCi0gICAgICAgICAgICBz
ZWxmLnJlZ2lzdGVyKHBsdWdpbiwgbmFtZT1lcC5uYW1lKQotICAgICAgICAgICAgc2VsZi5fcGx1
Z2luX2Rpc3RpbmZvLmFwcGVuZCgocGx1Z2luLCBlcC5kaXN0KSkKLSAgICAgICAgcmV0dXJuIGxl
bihzZWxmLl9wbHVnaW5fZGlzdGluZm8pCi0KLSAgICBkZWYgbGlzdF9wbHVnaW5fZGlzdGluZm8o
c2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gbGlzdCBvZiBkaXN0aW5mby9wbHVnaW4gdHVwbGVz
IGZvciBhbGwgc2V0dXB0b29scyByZWdpc3RlcmVkCi0gICAgICAgIHBsdWdpbnMuICIiIgotICAg
ICAgICByZXR1cm4gbGlzdChzZWxmLl9wbHVnaW5fZGlzdGluZm8pCi0KLSAgICBkZWYgbGlzdF9u
YW1lX3BsdWdpbihzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBsaXN0IG9mIG5hbWUvcGx1Z2lu
IHBhaXJzLiAiIiIKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fbmFtZTJwbHVnaW4uaXRlbXMo
KSkKLQotICAgIGRlZiBnZXRfaG9va2NhbGxlcnMoc2VsZiwgcGx1Z2luKToKLSAgICAgICAgIiIi
IGdldCBhbGwgaG9vayBjYWxsZXJzIGZvciB0aGUgc3BlY2lmaWVkIHBsdWdpbi4gIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMuZ2V0KHBsdWdpbikKLQotICAgIGRl
ZiBhZGRfaG9va2NhbGxfbW9uaXRvcmluZyhzZWxmLCBiZWZvcmUsIGFmdGVyKToKLSAgICAgICAg
IiIiIGFkZCBiZWZvcmUvYWZ0ZXIgdHJhY2luZyBmdW5jdGlvbnMgZm9yIGFsbCBob29rcwotICAg
ICAgICBhbmQgcmV0dXJuIGFuIHVuZG8gZnVuY3Rpb24gd2hpY2gsIHdoZW4gY2FsbGVkLAotICAg
ICAgICB3aWxsIHJlbW92ZSB0aGUgYWRkZWQgdHJhY2Vycy4KLQotICAgICAgICBgYGJlZm9yZSho
b29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncylgYCB3aWxsIGJlIGNhbGxlZCBhaGVhZAotICAg
ICAgICBvZiBhbGwgaG9vayBjYWxscyBhbmQgcmVjZWl2ZSBhIGhvb2tjYWxsZXIgaW5zdGFuY2Us
IGEgbGlzdAotICAgICAgICBvZiBIb29rSW1wbCBpbnN0YW5jZXMgYW5kIHRoZSBrZXl3b3JkIGFy
Z3VtZW50cyBmb3IgdGhlIGhvb2sgY2FsbC4KLQotICAgICAgICBgYGFmdGVyKG91dGNvbWUsIGhv
b2tfbmFtZSwgaG9va19pbXBscywga3dhcmdzKWBgIHJlY2VpdmVzIHRoZQotICAgICAgICBzYW1l
IGFyZ3VtZW50cyBhcyBgYGJlZm9yZWBgIGJ1dCBhbHNvIGEgOnB5OmNsYXNzOmBfUmVzdWx0YGAg
b2JqZWN0Ci0gICAgICAgIHdoaWNoIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiB0aGUgb3ZlcmFs
bCBob29rIGNhbGwuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gX1RyYWNlZEhvb2tFeGVj
dXRpb24oc2VsZiwgYmVmb3JlLCBhZnRlcikudW5kbwotCi0gICAgZGVmIGVuYWJsZV90cmFjaW5n
KHNlbGYpOgotICAgICAgICAiIiIgZW5hYmxlIHRyYWNpbmcgb2YgaG9vayBjYWxscyBhbmQgcmV0
dXJuIGFuIHVuZG8gZnVuY3Rpb24uICIiIgotICAgICAgICBob29rdHJhY2UgPSBzZWxmLmhvb2su
X3RyYWNlCi0KLSAgICAgICAgZGVmIGJlZm9yZShob29rX25hbWUsIG1ldGhvZHMsIGt3YXJncyk6
Ci0gICAgICAgICAgICBob29rdHJhY2Uucm9vdC5pbmRlbnQgKz0gMQotICAgICAgICAgICAgaG9v
a3RyYWNlKGhvb2tfbmFtZSwga3dhcmdzKQotCi0gICAgICAgIGRlZiBhZnRlcihvdXRjb21lLCBo
b29rX25hbWUsIG1ldGhvZHMsIGt3YXJncyk6Ci0gICAgICAgICAgICBpZiBvdXRjb21lLmV4Y2lu
Zm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBob29rdHJhY2UoImZpbmlzaCIsIGhvb2tfbmFt
ZSwgIi0tPiIsIG91dGNvbWUuZ2V0X3Jlc3VsdCgpKQotICAgICAgICAgICAgaG9va3RyYWNlLnJv
b3QuaW5kZW50IC09IDEKLQotICAgICAgICByZXR1cm4gc2VsZi5hZGRfaG9va2NhbGxfbW9uaXRv
cmluZyhiZWZvcmUsIGFmdGVyKQotCi0gICAgZGVmIHN1YnNldF9ob29rX2NhbGxlcihzZWxmLCBu
YW1lLCByZW1vdmVfcGx1Z2lucyk6Ci0gICAgICAgICIiIiBSZXR1cm4gYSBuZXcgX0hvb2tDYWxs
ZXIgaW5zdGFuY2UgZm9yIHRoZSBuYW1lZCBtZXRob2QKLSAgICAgICAgd2hpY2ggbWFuYWdlcyBj
YWxscyB0byBhbGwgcmVnaXN0ZXJlZCBwbHVnaW5zIGV4Y2VwdCB0aGUKLSAgICAgICAgb25lcyBm
cm9tIHJlbW92ZV9wbHVnaW5zLiAiIiIKLSAgICAgICAgb3JpZyA9IGdldGF0dHIoc2VsZi5ob29r
LCBuYW1lKQotICAgICAgICBwbHVnaW5zX3RvX3JlbW92ZSA9IFtwbHVnIGZvciBwbHVnIGluIHJl
bW92ZV9wbHVnaW5zIGlmIGhhc2F0dHIocGx1ZywgbmFtZSldCi0gICAgICAgIGlmIHBsdWdpbnNf
dG9fcmVtb3ZlOgotICAgICAgICAgICAgaGMgPSBfSG9va0NhbGxlcihvcmlnLm5hbWUsIG9yaWcu
X2hvb2tleGVjLCBvcmlnLl9zcGVjbW9kdWxlX29yX2NsYXNzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcmlnLnNwZWNfb3B0cykKLSAgICAgICAgICAgIGZvciBob29raW1wbCBpbiAo
b3JpZy5fd3JhcHBlcnMgKyBvcmlnLl9ub253cmFwcGVycyk6Ci0gICAgICAgICAgICAgICAgcGx1
Z2luID0gaG9va2ltcGwucGx1Z2luCi0gICAgICAgICAgICAgICAgaWYgcGx1Z2luIG5vdCBpbiBw
bHVnaW5zX3RvX3JlbW92ZToKLSAgICAgICAgICAgICAgICAgICAgaGMuX2FkZF9ob29raW1wbCho
b29raW1wbCkKLSAgICAgICAgICAgICAgICAgICAgIyB3ZSBhbHNvIGtlZXAgdHJhY2sgb2YgdGhp
cyBob29rIGNhbGxlciBzbyBpdAotICAgICAgICAgICAgICAgICAgICAjIGdldHMgcHJvcGVybHkg
cmVtb3ZlZCBvbiBwbHVnaW4gdW5yZWdpc3RyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcGx1Z2luMmhvb2tjYWxsZXJzLnNldGRlZmF1bHQocGx1Z2luLCBbXSkuYXBwZW5kKGhjKQot
ICAgICAgICAgICAgcmV0dXJuIGhjCi0gICAgICAgIHJldHVybiBvcmlnCi0KLQotZGVmIHZhcm5h
bWVzKGZ1bmMpOgotICAgICIiIlJldHVybiB0dXBsZSBvZiBwb3NpdGlvbmFsIGFuZCBrZXl3cm9y
ZCBhcmd1bWVudCBuYW1lcyBmb3IgYSBmdW5jdGlvbiwKLSAgICBtZXRob2QsIGNsYXNzIG9yIGNh
bGxhYmxlLgotCi0gICAgSW4gY2FzZSBvZiBhIGNsYXNzLCBpdHMgYGBfX2luaXRfX2BgIG1ldGhv
ZCBpcyBjb25zaWRlcmVkLgotICAgIEZvciBtZXRob2RzIHRoZSBgYHNlbGZgYCBwYXJhbWV0ZXIg
aXMgbm90IGluY2x1ZGVkLgotICAgICIiIgotICAgIGNhY2hlID0gZ2V0YXR0cihmdW5jLCAiX19k
aWN0X18iLCB7fSkKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBjYWNoZVsiX3Zhcm5hbWVzIl0K
LSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLQotICAgIGlmIGluc3BlY3QuaXNj
bGFzcyhmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19pbml0
X18KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuICgp
LCAoKQotICAgIGVsaWYgbm90IGluc3BlY3QuaXNyb3V0aW5lKGZ1bmMpOiAgIyBjYWxsYWJsZSBv
YmplY3Q/Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKGZ1bmMsICdf
X2NhbGxfXycsIGZ1bmMpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBy
ZXR1cm4gKCkKLQotICAgIHRyeTogICMgZnVuYyBNVVNUIGJlIGEgZnVuY3Rpb24gb3IgbWV0aG9k
IGhlcmUgb3Igd2Ugd29uJ3QgcGFyc2UgYW55IGFyZ3MKLSAgICAgICAgc3BlYyA9IF9nZXRhcmdz
cGVjKGZ1bmMpCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgcmV0dXJuICgpLCAoKQot
Ci0gICAgYXJncywgZGVmYXVsdHMgPSB0dXBsZShzcGVjLmFyZ3MpLCBzcGVjLmRlZmF1bHRzCi0g
ICAgaWYgZGVmYXVsdHM6Ci0gICAgICAgIGluZGV4ID0gLWxlbihkZWZhdWx0cykKLSAgICAgICAg
YXJncywgZGVmYXVsdHMgPSBhcmdzWzppbmRleF0sIHR1cGxlKGFyZ3NbaW5kZXg6XSkKLSAgICBl
bHNlOgotICAgICAgICBkZWZhdWx0cyA9ICgpCi0KLSAgICAjIHN0cmlwIGFueSBpbXBsaWNpdCBp
bnN0YW5jZSBhcmcKLSAgICBpZiBhcmdzOgotICAgICAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKGZ1
bmMpIG9yICgKLSAgICAgICAgICAgICcuJyBpbiBnZXRhdHRyKGZ1bmMsICdfX3F1YWxuYW1lX18n
LCAoKSkgYW5kIGFyZ3NbMF0gPT0gJ3NlbGYnCi0gICAgICAgICk6Ci0gICAgICAgICAgICBhcmdz
ID0gYXJnc1sxOl0KLQotICAgIGFzc2VydCAic2VsZiIgbm90IGluIGFyZ3MgICMgYmVzdCBuYW1p
bmcgcHJhY3Rpc2VzIGNoZWNrPwotICAgIHRyeToKLSAgICAgICAgY2FjaGVbIl92YXJuYW1lcyJd
ID0gYXJncywgZGVmYXVsdHMKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICBwYXNzCi0g
ICAgcmV0dXJuIGFyZ3MsIGRlZmF1bHRzCi0KLQotY2xhc3MgX0hvb2tSZWxheShvYmplY3QpOgot
ICAgICIiIiBob29rIGhvbGRlciBvYmplY3QgZm9yIHBlcmZvcm1pbmcgMTpOIGhvb2sgY2FsbHMg
d2hlcmUgTiBpcyB0aGUgbnVtYmVyCi0gICAgb2YgcmVnaXN0ZXJlZCBwbHVnaW5zLgotCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdHJhY2UpOgotICAgICAgICBzZWxmLl90cmFj
ZSA9IHRyYWNlCi0KLQotY2xhc3MgX0hvb2tDYWxsZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbmFtZSwgaG9va19leGVjdXRlLCBzcGVjbW9kdWxlX29yX2NsYXNzPU5vbmUsCi0g
ICAgICAgICAgICAgICAgIHNwZWNfb3B0cz1Ob25lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFt
ZQotICAgICAgICBzZWxmLl93cmFwcGVycyA9IFtdCi0gICAgICAgIHNlbGYuX25vbndyYXBwZXJz
ID0gW10KLSAgICAgICAgc2VsZi5faG9va2V4ZWMgPSBob29rX2V4ZWN1dGUKLSAgICAgICAgc2Vs
Zi5fc3BlY21vZHVsZV9vcl9jbGFzcyA9IE5vbmUKLSAgICAgICAgc2VsZi5hcmduYW1lcyA9IE5v
bmUKLSAgICAgICAgc2VsZi5rd2FyZ25hbWVzID0gTm9uZQotICAgICAgICBzZWxmLm11bHRpY2Fs
bCA9IF9tdWx0aWNhbGwKLSAgICAgICAgc2VsZi5zcGVjX29wdHMgPSBzcGVjX29wdHMgb3Ige30K
LSAgICAgICAgaWYgc3BlY21vZHVsZV9vcl9jbGFzcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IHNlbGYuc2V0X3NwZWNpZmljYXRpb24oc3BlY21vZHVsZV9vcl9jbGFzcywgc3BlY19vcHRzKQot
Ci0gICAgZGVmIGhhc19zcGVjKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3BlY21vZHVs
ZV9vcl9jbGFzcyBpcyBub3QgTm9uZQotCi0gICAgZGVmIHNldF9zcGVjaWZpY2F0aW9uKHNlbGYs
IHNwZWNtb2R1bGVfb3JfY2xhc3MsIHNwZWNfb3B0cyk6Ci0gICAgICAgIGFzc2VydCBub3Qgc2Vs
Zi5oYXNfc3BlYygpCi0gICAgICAgIHNlbGYuX3NwZWNtb2R1bGVfb3JfY2xhc3MgPSBzcGVjbW9k
dWxlX29yX2NsYXNzCi0gICAgICAgIHNwZWNmdW5jID0gZ2V0YXR0cihzcGVjbW9kdWxlX29yX2Ns
YXNzLCBzZWxmLm5hbWUpCi0gICAgICAgICMgZ2V0IHNwZWMgYXJnIHNpZ25hdHVyZQotICAgICAg
ICBhcmduYW1lcywgc2VsZi5rd2FyZ25hbWVzID0gdmFybmFtZXMoc3BlY2Z1bmMpCi0gICAgICAg
IHNlbGYuYXJnbmFtZXMgPSBbIl9fbXVsdGljYWxsX18iXSArIGxpc3QoYXJnbmFtZXMpCi0gICAg
ICAgIHNlbGYuc3BlY19vcHRzLnVwZGF0ZShzcGVjX29wdHMpCi0gICAgICAgIGlmIHNwZWNfb3B0
cy5nZXQoImhpc3RvcmljIik6Ci0gICAgICAgICAgICBzZWxmLl9jYWxsX2hpc3RvcnkgPSBbXQot
Ci0gICAgZGVmIGlzX2hpc3RvcmljKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzYXR0cihzZWxm
LCAiX2NhbGxfaGlzdG9yeSIpCi0KLSAgICBkZWYgX3JlbW92ZV9wbHVnaW4oc2VsZiwgcGx1Z2lu
KToKLSAgICAgICAgZGVmIHJlbW92ZSh3cmFwcGVycyk6Ci0gICAgICAgICAgICBmb3IgaSwgbWV0
aG9kIGluIGVudW1lcmF0ZSh3cmFwcGVycyk6Ci0gICAgICAgICAgICAgICAgaWYgbWV0aG9kLnBs
dWdpbiA9PSBwbHVnaW46Ci0gICAgICAgICAgICAgICAgICAgIGRlbCB3cmFwcGVyc1tpXQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBpZiByZW1vdmUoc2VsZi5fd3Jh
cHBlcnMpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiByZW1vdmUoc2VsZi5fbm9ud3JhcHBlcnMp
IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicGx1Z2luICVyIG5v
dCBmb3VuZCIgJSAocGx1Z2luLCkpCi0KLSAgICBkZWYgX2FkZF9ob29raW1wbChzZWxmLCBob29r
aW1wbCk6Ci0gICAgICAgICIiIkEgYW4gaW1wbGVtZW50YXRpb24gdG8gdGhlIGNhbGxiYWNrIGNo
YWluLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaG9va2ltcGwuaG9va3dyYXBwZXI6Ci0gICAg
ICAgICAgICBtZXRob2RzID0gc2VsZi5fd3JhcHBlcnMKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIG1ldGhvZHMgPSBzZWxmLl9ub253cmFwcGVycwotCi0gICAgICAgIGlmIGhvb2tpbXBsLnRy
eWxhc3Q6Ci0gICAgICAgICAgICBtZXRob2RzLmluc2VydCgwLCBob29raW1wbCkKLSAgICAgICAg
ZWxpZiBob29raW1wbC50cnlmaXJzdDoKLSAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKGhvb2tp
bXBsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBmaW5kIGxhc3Qgbm9uLXRyeWZpcnN0
IG1ldGhvZAotICAgICAgICAgICAgaSA9IGxlbihtZXRob2RzKSAtIDEKLSAgICAgICAgICAgIHdo
aWxlIGkgPj0gMCBhbmQgbWV0aG9kc1tpXS50cnlmaXJzdDoKLSAgICAgICAgICAgICAgICBpIC09
IDEKLSAgICAgICAgICAgIG1ldGhvZHMuaW5zZXJ0KGkgKyAxLCBob29raW1wbCkKLQotICAgICAg
ICBpZiAnX19tdWx0aWNhbGxfXycgaW4gaG9va2ltcGwuYXJnbmFtZXM6Ci0gICAgICAgICAgICB3
YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICJTdXBwb3J0IGZvciBfX211bHRpY2FsbF9f
IGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIgotICAgICAgICAgICAgICAgICJyZW1vdmVk
IGluIGFuIHVwY29taW5nIHJlbGVhc2UuIiwKLSAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldh
cm5pbmcKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYubXVsdGljYWxsID0gX2xlZ2Fj
eW11bHRpY2FsbAotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxf
SG9va0NhbGxlciAlcj4iICUgKHNlbGYubmFtZSwpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcigiaG9vayBjYWxsaW5nIHN1cHBvcnRzIG9ubHkga2V5d29yZCBhcmd1bWVudHMiKQot
ICAgICAgICBhc3NlcnQgbm90IHNlbGYuaXNfaGlzdG9yaWMoKQotICAgICAgICBpZiBzZWxmLmFy
Z25hbWVzOgotICAgICAgICAgICAgbm90aW5jYWxsID0gc2V0KHNlbGYuYXJnbmFtZXMpIC0gc2V0
KFsnX19tdWx0aWNhbGxfXyddKSAtIHNldCgKLSAgICAgICAgICAgICAgICBrd2FyZ3Mua2V5cygp
KQotICAgICAgICAgICAgaWYgbm90aW5jYWxsOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndh
cm4oCi0gICAgICAgICAgICAgICAgICAgICJBcmd1bWVudChzKSB7fSB3aGljaCBhcmUgZGVjbGFy
ZWQgaW4gdGhlIGhvb2tzcGVjICIKLSAgICAgICAgICAgICAgICAgICAgImNhbiBub3QgYmUgZm91
bmQgaW4gdGhpcyBob29rIGNhbGwiCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHVwbGUo
bm90aW5jYWxsKSksCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgIHJldHVybiBzZWxmLl9ob29rZXhlYyhzZWxmLCBzZWxmLl9ub253
cmFwcGVycyArIHNlbGYuX3dyYXBwZXJzLCBrd2FyZ3MpCi0KLSAgICBkZWYgY2FsbF9oaXN0b3Jp
YyhzZWxmLCBwcm9jPU5vbmUsIGt3YXJncz1Ob25lKToKLSAgICAgICAgIiIiIGNhbGwgdGhlIGhv
b2sgd2l0aCBnaXZlbiBgYGt3YXJnc2BgIGZvciBhbGwgcmVnaXN0ZXJlZCBwbHVnaW5zIGFuZAot
ICAgICAgICBmb3IgYWxsIHBsdWdpbnMgd2hpY2ggd2lsbCBiZSByZWdpc3RlcmVkIGFmdGVyd2Fy
ZHMuCi0KLSAgICAgICAgSWYgYGBwcm9jYGAgaXMgbm90IE5vbmUgaXQgd2lsbCBiZSBjYWxsZWQg
Zm9yIGZvciBlYWNoIG5vbi1Ob25lIHJlc3VsdAotICAgICAgICBvYnRhaW5lZCBmcm9tIGEgaG9v
ayBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2NhbGxfaGlzdG9y
eS5hcHBlbmQoKGt3YXJncyBvciB7fSwgcHJvYykpCi0gICAgICAgICMgaGlzdG9yaXppbmcgaG9v
a3MgZG9uJ3QgcmV0dXJuIHJlc3VsdHMKLSAgICAgICAgcmVzID0gc2VsZi5faG9va2V4ZWMoc2Vs
Ziwgc2VsZi5fbm9ud3JhcHBlcnMgKyBzZWxmLl93cmFwcGVycywga3dhcmdzKQotICAgICAgICBm
b3IgeCBpbiByZXMgb3IgW106Ci0gICAgICAgICAgICBwcm9jKHgpCi0KLSAgICBkZWYgY2FsbF9l
eHRyYShzZWxmLCBtZXRob2RzLCBrd2FyZ3MpOgotICAgICAgICAiIiIgQ2FsbCB0aGUgaG9vayB3
aXRoIHNvbWUgYWRkaXRpb25hbCB0ZW1wb3JhcmlseSBwYXJ0aWNpcGF0aW5nCi0gICAgICAgIG1l
dGhvZHMgdXNpbmcgdGhlIHNwZWNpZmllZCBrd2FyZ3MgYXMgY2FsbCBwYXJhbWV0ZXJzLiAiIiIK
LSAgICAgICAgb2xkID0gbGlzdChzZWxmLl9ub253cmFwcGVycyksIGxpc3Qoc2VsZi5fd3JhcHBl
cnMpCi0gICAgICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoKLSAgICAgICAgICAgIG9wdHMgPSBk
aWN0KGhvb2t3cmFwcGVyPUZhbHNlLCB0cnlsYXN0PUZhbHNlLCB0cnlmaXJzdD1GYWxzZSkKLSAg
ICAgICAgICAgIGhvb2tpbXBsID0gSG9va0ltcGwoTm9uZSwgIjx0ZW1wPiIsIG1ldGhvZCwgb3B0
cykKLSAgICAgICAgICAgIHNlbGYuX2FkZF9ob29raW1wbChob29raW1wbCkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYoKiprd2FyZ3MpCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzZWxmLl9ub253cmFwcGVycywgc2VsZi5fd3JhcHBlcnMgPSBvbGQKLQotICAg
IGRlZiBfbWF5YmVfYXBwbHlfaGlzdG9yeShzZWxmLCBtZXRob2QpOgotICAgICAgICAiIiJBcHBs
eSBjYWxsIGhpc3RvcnkgdG8gYSBuZXcgaG9va2ltcGwgaWYgaXQgaXMgbWFya2VkIGFzIGhpc3Rv
cmljLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5pc19oaXN0b3JpYygpOgotICAgICAg
ICAgICAgZm9yIGt3YXJncywgcHJvYyBpbiBzZWxmLl9jYWxsX2hpc3Rvcnk6Ci0gICAgICAgICAg
ICAgICAgcmVzID0gc2VsZi5faG9va2V4ZWMoc2VsZiwgW21ldGhvZF0sIGt3YXJncykKLSAgICAg
ICAgICAgICAgICBpZiByZXMgYW5kIHByb2MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
ICAgIHByb2MocmVzWzBdKQotCi0KLWNsYXNzIEhvb2tJbXBsKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBsdWdpbiwgcGx1Z2luX25hbWUsIGZ1bmN0aW9uLCBob29rX2ltcGxfb3B0
cyk6Ci0gICAgICAgIHNlbGYuZnVuY3Rpb24gPSBmdW5jdGlvbgotICAgICAgICBzZWxmLmFyZ25h
bWVzLCBzZWxmLmt3YXJnbmFtZXMgPSB2YXJuYW1lcyhzZWxmLmZ1bmN0aW9uKQotICAgICAgICBz
ZWxmLnBsdWdpbiA9IHBsdWdpbgotICAgICAgICBzZWxmLm9wdHMgPSBob29rX2ltcGxfb3B0cwot
ICAgICAgICBzZWxmLnBsdWdpbl9uYW1lID0gcGx1Z2luX25hbWUKLSAgICAgICAgc2VsZi5fX2Rp
Y3RfXy51cGRhdGUoaG9va19pbXBsX29wdHMpCi0KLQotaWYgaGFzYXR0cihpbnNwZWN0LCAnZ2V0
ZnVsbGFyZ3NwZWMnKToKLSAgICBkZWYgX2dldGFyZ3NwZWMoZnVuYyk6Ci0gICAgICAgIHJldHVy
biBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKGZ1bmMpCi1lbHNlOgotICAgIGRlZiBfZ2V0YXJnc3Bl
YyhmdW5jKToKLSAgICAgICAgcmV0dXJuIGluc3BlY3QuZ2V0YXJnc3BlYyhmdW5jKQotCi0KLWlm
IGhhc2F0dHIoaW5zcGVjdCwgJ3NpZ25hdHVyZScpOgotICAgIGRlZiBfZm9ybWF0ZGVmKGZ1bmMp
OgotICAgICAgICByZXR1cm4gIiVzJXMiICUgKAotICAgICAgICAgICAgZnVuYy5fX25hbWVfXywK
LSAgICAgICAgICAgIHN0cihpbnNwZWN0LnNpZ25hdHVyZShmdW5jKSkKLSAgICAgICAgKQotZWxz
ZToKLSAgICBkZWYgX2Zvcm1hdGRlZihmdW5jKToKLSAgICAgICAgcmV0dXJuICIlcyVzIiAlICgK
LSAgICAgICAgICAgIGZ1bmMuX19uYW1lX18sCi0gICAgICAgICAgICBpbnNwZWN0LmZvcm1hdGFy
Z3NwZWMoKmluc3BlY3QuZ2V0YXJnc3BlYyhmdW5jKSkKLSAgICAgICAgKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvcGx1Z2d5L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDBkNWEwOTM3ZDgu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvY2FsbGVycy5weQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvcHlwcm9qZWN0LnRvbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9weXByb2plY3QudG9tbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgxMWNmNTNlZDNiZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3B5cHJvamVjdC50b21sCkBAIC0wLDAgKzEsNDQg
QEAKK1tidWlsZC1zeXN0ZW1dCityZXF1aXJlcyA9IFsKKyAgInNldHVwdG9vbHMiLAorICAic2V0
dXB0b29scy1zY20iLAorICAid2hlZWwiLAorXQorCitbdG9vbC50b3duY3JpZXJdCitwYWNrYWdl
ID0gInBsdWdneSIKK3BhY2thZ2VfZGlyID0gInNyYy9wbHVnZ3kiCitmaWxlbmFtZSA9ICJDSEFO
R0VMT0cucnN0IgorZGlyZWN0b3J5ID0gImNoYW5nZWxvZy8iCit0aXRsZV9mb3JtYXQgPSAicGx1
Z2d5IHt2ZXJzaW9ufSAoe3Byb2plY3RfZGF0ZX0pIgordGVtcGxhdGUgPSAiY2hhbmdlbG9nL190
ZW1wbGF0ZS5yc3QiCisKKyAgW1t0b29sLnRvd25jcmllci50eXBlXV0KKyAgZGlyZWN0b3J5ID0g
InJlbW92YWwiCisgIG5hbWUgPSAiRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscyIKKyAgc2hvd2Nv
bnRlbnQgPSB0cnVlCisKKyAgW1t0b29sLnRvd25jcmllci50eXBlXV0KKyAgZGlyZWN0b3J5ID0g
ImZlYXR1cmUiCisgIG5hbWUgPSAiRmVhdHVyZXMiCisgIHNob3djb250ZW50ID0gdHJ1ZQorCisg
IFtbdG9vbC50b3duY3JpZXIudHlwZV1dCisgIGRpcmVjdG9yeSA9ICJidWdmaXgiCisgIG5hbWUg
PSAiQnVnIEZpeGVzIgorICBzaG93Y29udGVudCA9IHRydWUKKworICBbW3Rvb2wudG93bmNyaWVy
LnR5cGVdXQorICBkaXJlY3RvcnkgPSAidmVuZG9yIgorICBuYW1lID0gIlZlbmRvcmVkIExpYnJh
cmllcyIKKyAgc2hvd2NvbnRlbnQgPSB0cnVlCisKKyAgW1t0b29sLnRvd25jcmllci50eXBlXV0K
KyAgZGlyZWN0b3J5ID0gImRvYyIKKyAgbmFtZSA9ICJJbXByb3ZlZCBEb2N1bWVudGF0aW9uIgor
ICBzaG93Y29udGVudCA9IHRydWUKKworICBbW3Rvb2wudG93bmNyaWVyLnR5cGVdXQorICBkaXJl
Y3RvcnkgPSAidHJpdmlhbCIKKyAgbmFtZSA9ICJUcml2aWFsL0ludGVybmFsIENoYW5nZXMiCisg
IHNob3djb250ZW50ID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc2NyaXB0cy9yZWxl
YXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvc2NyaXB0cy9yZWxlYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTRhMThhNGM3OGRlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvc2NyaXB0cy9yZWxlYXNlLnB5CkBAIC0wLDAgKzEsNjkgQEAKKyIiIgorUmVs
ZWFzZSBzY3JpcHQuCisiIiIKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IHN5cworZnJvbSBzdWJw
cm9jZXNzIGltcG9ydCBjaGVja19jYWxsCisKK2Zyb20gY29sb3JhbWEgaW1wb3J0IGluaXQsIEZv
cmUKK2Zyb20gZ2l0IGltcG9ydCBSZXBvLCBSZW1vdGUKKworCitkZWYgY3JlYXRlX2JyYW5jaCh2
ZXJzaW9uKToKKyAgICAiIiJDcmVhdGUgYSBmcmVzaCBicmFuY2ggZnJvbSB1cHN0cmVhbS9tYXN0
ZXIiIiIKKyAgICByZXBvID0gUmVwby5pbml0KCIuIikKKyAgICBpZiByZXBvLmlzX2RpcnR5KHVu
dHJhY2tlZF9maWxlcz1UcnVlKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYiUmVwb3Np
dG9yeSBpcyBkaXJ0eSwgcGxlYXNlIGNvbW1pdC9zdGFzaCB5b3VyIGNoYW5nZXMuIikKKworICAg
IGJyYW5jaF9uYW1lID0gZiJyZWxlYXNlLXt2ZXJzaW9ufSIKKyAgICBwcmludChmIntGb3JlLkNZ
QU59Q3JlYXRlIHticmFuY2hfbmFtZX0gYnJhbmNoIGZyb20gdXBzdHJlYW0gbWFzdGVyIikKKyAg
ICB1cHN0cmVhbSA9IGdldF91cHN0cmVhbShyZXBvKQorICAgIHVwc3RyZWFtLmZldGNoKCkKKyAg
ICByZWxlYXNlX2JyYW5jaCA9IHJlcG8uY3JlYXRlX2hlYWQoYnJhbmNoX25hbWUsIHVwc3RyZWFt
LnJlZnMubWFzdGVyLCBmb3JjZT1UcnVlKQorICAgIHJlbGVhc2VfYnJhbmNoLmNoZWNrb3V0KCkK
KyAgICByZXR1cm4gcmVwbworCisKK2RlZiBnZXRfdXBzdHJlYW0ocmVwbzogUmVwbykgLT4gUmVt
b3RlOgorICAgICIiIkZpbmQgdXBzdHJlYW0gcmVwb3NpdG9yeSBmb3IgcGx1Z2d5IG9uIHRoZSBy
ZW1vdGVzIiIiCisgICAgZm9yIHJlbW90ZSBpbiByZXBvLnJlbW90ZXM6CisgICAgICAgIGZvciB1
cmwgaW4gcmVtb3RlLnVybHM6CisgICAgICAgICAgICBpZiB1cmwuZW5kc3dpdGgoKCJweXRlc3Qt
ZGV2L3BsdWdneS5naXQiLCAicHl0ZXN0LWRldi9wbHVnZ3kiKSk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlbW90ZQorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY291bGQgbm90IGZpbmQgcHl0
ZXN0LWRldi9wbHVnZ3kgcmVtb3RlIikKKworCitkZWYgcHJlX3JlbGVhc2UodmVyc2lvbik6Cisg
ICAgIiIiR2VuZXJhdGVzIG5ldyBkb2NzLCByZWxlYXNlIGFubm91bmNlbWVudHMgYW5kIGNyZWF0
ZXMgYSBsb2NhbCB0YWcuIiIiCisgICAgY3JlYXRlX2JyYW5jaCh2ZXJzaW9uKQorICAgIGNoYW5n
ZWxvZyh2ZXJzaW9uLCB3cml0ZV9vdXQ9VHJ1ZSkKKworICAgIGNoZWNrX2NhbGwoWyJnaXQiLCAi
Y29tbWl0IiwgIi1hIiwgIi1tIiwgZiJQcmVwYXJpbmcgcmVsZWFzZSB7dmVyc2lvbn0iXSkKKwor
ICAgIHByaW50KCkKKyAgICBwcmludChmIntGb3JlLkdSRUVOfVBsZWFzZSBwdXNoIHlvdXIgYnJh
bmNoIHRvIHlvdXIgZm9yayBhbmQgb3BlbiBhIFBSLiIpCisKKworZGVmIGNoYW5nZWxvZyh2ZXJz
aW9uLCB3cml0ZV9vdXQ9RmFsc2UpOgorICAgIGlmIHdyaXRlX291dDoKKyAgICAgICAgYWRkb3B0
cyA9IFtdCisgICAgZWxzZToKKyAgICAgICAgYWRkb3B0cyA9IFsiLS1kcmFmdCJdCisgICAgcHJp
bnQoZiJ7Rm9yZS5DWUFOfUdlbmVyYXRpbmcgQ0hBTkdFTE9HIikKKyAgICBjaGVja19jYWxsKFsi
dG93bmNyaWVyIiwgIi0teWVzIiwgIi0tdmVyc2lvbiIsIHZlcnNpb25dICsgYWRkb3B0cykKKwor
CitkZWYgbWFpbigpOgorICAgIGluaXQoYXV0b3Jlc2V0PVRydWUpCisgICAgcGFyc2VyID0gYXJn
cGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInZlcnNpb24i
LCBoZWxwPSJSZWxlYXNlIHZlcnNpb24iKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJn
cygpCisgICAgdHJ5OgorICAgICAgICBwcmVfcmVsZWFzZShvcHRpb25zLnZlcnNpb24pCisgICAg
ZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICBwcmludChmIntGb3JlLlJFRH1FUlJP
Ujoge2V9IikKKyAgICAgICAgcmV0dXJuIDEKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NldHVwLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvc2V0dXAucHkKaW5kZXggYjdjMGY2OTcxMjBhLi5hZTJjZDg0YzExOWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NldHVw
LnB5CkBAIC0xLDUxICsxLDQ5IEBACi1pbXBvcnQgb3MKIGZyb20gc2V0dXB0b29scyBpbXBvcnQg
c2V0dXAKIAogY2xhc3NpZmllcnMgPSBbCi0gICAgJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA0IC0g
QmV0YScsCi0gICAgJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLAotICAgICdMaWNl
bnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsCi0gICAgJ09wZXJhdGluZyBTeXN0
ZW0gOjogUE9TSVgnLAotICAgICdPcGVyYXRpbmcgU3lzdGVtIDo6IE1pY3Jvc29mdCA6OiBXaW5k
b3dzJywKLSAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBNYWNPUyA6OiBNYWNPUyBYJywKLSAgICAn
VG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogVGVzdGluZycsCi0gICAgJ1RvcGljIDo6
IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsCi0gICAgJ1RvcGljIDo6IFV0aWxp
dGllcycsCi0gICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiBJbXBsZW1lbnRh
dGlvbiA6OiBDUHl0aG9uJywKLSAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6
IEltcGxlbWVudGF0aW9uIDo6IFB5UHknXSArIFsKLSAgICAoJ1Byb2dyYW1taW5nIExhbmd1YWdl
IDo6IFB5dGhvbiA6OiAlcycgJSB4KSBmb3IgeCBpbgotICAgICcyIDIuNyAzIDMuNCAzLjUgMy42
Jy5zcGxpdCgpXQotCi13aXRoIG9wZW4oJ1JFQURNRS5yc3QnKSBhcyBmZDoKLSAgICBsb25nX2Rl
c2NyaXB0aW9uID0gZmQucmVhZCgpCi0KLQotZGVmIGdldF92ZXJzaW9uKCk6Ci0gICAgcCA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoCi0gICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pKSwgInBsdWdneS9fX2luaXRfXy5weSIpCi0gICAgd2l0aCBvcGVu
KHApIGFzIGY6Ci0gICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAg
ICBpZiAiX192ZXJzaW9uX18iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUu
c3RyaXAoKS5zcGxpdCgiPSIpWy0xXS5zdHJpcCgiICciKQotICAgIHJhaXNlIFZhbHVlRXJyb3Io
ImNvdWxkIG5vdCByZWFkIHZlcnNpb24iKQorICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAt
IEJldGEiLAorICAgICJJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzIiwKKyAgICAiTGlj
ZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogTUlUIExpY2Vuc2UiLAorICAgICJPcGVyYXRpbmcgU3lz
dGVtIDo6IFBPU0lYIiwKKyAgICAiT3BlcmF0aW5nIFN5c3RlbSA6OiBNaWNyb3NvZnQgOjogV2lu
ZG93cyIsCisgICAgIk9wZXJhdGluZyBTeXN0ZW0gOjogTWFjT1MgOjogTWFjT1MgWCIsCisgICAg
IlRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IFRlc3RpbmciLAorICAgICJUb3BpYyA6
OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMiLAorICAgICJUb3BpYyA6OiBVdGls
aXRpZXMiLAorICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50
YXRpb24gOjogQ1B5dGhvbiIsCisgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6
OiBJbXBsZW1lbnRhdGlvbiA6OiBQeVB5IiwKK10gKyBbCisgICAgKCJQcm9ncmFtbWluZyBMYW5n
dWFnZSA6OiBQeXRob24gOjogJXMiICUgeCkKKyAgICBmb3IgeCBpbiAiMiAyLjcgMyAzLjQgMy41
IDMuNiAzLjcgMy44Ii5zcGxpdCgpCitdCisKK3dpdGggb3BlbigiUkVBRE1FLnJzdCIsICJyYiIp
IGFzIGZkOgorICAgIGxvbmdfZGVzY3JpcHRpb24gPSBmZC5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIp
CisKK3dpdGggb3BlbigiQ0hBTkdFTE9HLnJzdCIsICJyYiIpIGFzIGZkOgorICAgIGxvbmdfZGVz
Y3JpcHRpb24gKz0gIlxuXG4iICsgZmQucmVhZCgpLmRlY29kZSgidXRmLTgiKQogCiAKIGRlZiBt
YWluKCk6CiAgICAgc2V0dXAoCi0gICAgICAgIG5hbWU9J3BsdWdneScsCi0gICAgICAgIGRlc2Ny
aXB0aW9uPSdwbHVnaW4gYW5kIGhvb2sgY2FsbGluZyBtZWNoYW5pc21zIGZvciBweXRob24nLAor
ICAgICAgICBuYW1lPSJwbHVnZ3kiLAorICAgICAgICBkZXNjcmlwdGlvbj0icGx1Z2luIGFuZCBo
b29rIGNhbGxpbmcgbWVjaGFuaXNtcyBmb3IgcHl0aG9uIiwKICAgICAgICAgbG9uZ19kZXNjcmlw
dGlvbj1sb25nX2Rlc2NyaXB0aW9uLAotICAgICAgICB2ZXJzaW9uPWdldF92ZXJzaW9uKCksCi0g
ICAgICAgIGxpY2Vuc2U9J01JVCBsaWNlbnNlJywKLSAgICAgICAgcGxhdGZvcm1zPVsndW5peCcs
ICdsaW51eCcsICdvc3gnLCAnd2luMzInXSwKLSAgICAgICAgYXV0aG9yPSdIb2xnZXIgS3Jla2Vs
JywKLSAgICAgICAgYXV0aG9yX2VtYWlsPSdob2xnZXJAbWVybGludXguZXUnLAotICAgICAgICB1
cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneScsCi0gICAgICAgIHB5dGhv
bl9yZXF1aXJlcz0nPj0yLjcsICE9My4wLiosICE9My4xLiosICE9My4yLiosICE9My4zLionLAor
ICAgICAgICB1c2Vfc2NtX3ZlcnNpb249eyJ3cml0ZV90byI6ICJzcmMvcGx1Z2d5L192ZXJzaW9u
LnB5In0sCisgICAgICAgIHNldHVwX3JlcXVpcmVzPVsic2V0dXB0b29scy1zY20iXSwKKyAgICAg
ICAgbGljZW5zZT0iTUlUIGxpY2Vuc2UiLAorICAgICAgICBwbGF0Zm9ybXM9WyJ1bml4IiwgImxp
bnV4IiwgIm9zeCIsICJ3aW4zMiJdLAorICAgICAgICBhdXRob3I9IkhvbGdlciBLcmVrZWwiLAor
ICAgICAgICBhdXRob3JfZW1haWw9ImhvbGdlckBtZXJsaW51eC5ldSIsCisgICAgICAgIHVybD0i
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5IiwKKyAgICAgICAgcHl0aG9uX3Jl
cXVpcmVzPSI+PTIuNywgIT0zLjAuKiwgIT0zLjEuKiwgIT0zLjIuKiwgIT0zLjMuKiIsCisgICAg
ICAgIGluc3RhbGxfcmVxdWlyZXM9WydpbXBvcnRsaWItbWV0YWRhdGE+PTAuMTI7cHl0aG9uX3Zl
cnNpb248IjMuOCInXSwKKyAgICAgICAgZXh0cmFzX3JlcXVpcmU9eyJkZXYiOiBbInByZS1jb21t
aXQiLCAidG94Il19LAogICAgICAgICBjbGFzc2lmaWVycz1jbGFzc2lmaWVycywKLSAgICAgICAg
cGFja2FnZXM9WydwbHVnZ3knXSwKKyAgICAgICAgcGFja2FnZXM9WyJwbHVnZ3kiXSwKKyAgICAg
ICAgcGFja2FnZV9kaXI9eyIiOiAic3JjIn0sCiAgICAgKQogCiAKLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIG1haW4oKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Ny
Yy9wbHVnZ3kvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5mYjRmOTkxYTYxMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1
Z2d5L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTggQEAKK3RyeToKKyAgICBmcm9tIC5fdmVyc2lv
biBpbXBvcnQgdmVyc2lvbiBhcyBfX3ZlcnNpb25fXworZXhjZXB0IEltcG9ydEVycm9yOgorICAg
ICMgYnJva2VuIGluc3RhbGxhdGlvbiwgd2UgZG9uJ3QgZXZlbiB0cnkKKyAgICAjIHVua25vd24g
b25seSB3b3JrcyBiZWNhdXNlIHdlIGRvIHBvb3IgbWFucyB2ZXJzaW9uIGNvbXBhcmUKKyAgICBf
X3ZlcnNpb25fXyA9ICJ1bmtub3duIgorCitfX2FsbF9fID0gWworICAgICJQbHVnaW5NYW5hZ2Vy
IiwKKyAgICAiUGx1Z2luVmFsaWRhdGlvbkVycm9yIiwKKyAgICAiSG9va0NhbGxFcnJvciIsCisg
ICAgIkhvb2tzcGVjTWFya2VyIiwKKyAgICAiSG9va2ltcGxNYXJrZXIiLAorXQorCitmcm9tIC5t
YW5hZ2VyIGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBQbHVnaW5WYWxpZGF0aW9uRXJyb3IKK2Zyb20g
LmNhbGxlcnMgaW1wb3J0IEhvb2tDYWxsRXJyb3IKK2Zyb20gLmhvb2tzIGltcG9ydCBIb29rc3Bl
Y01hcmtlciwgSG9va2ltcGxNYXJrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NyYy9wbHVn
Z3kvX3RyYWNpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L190cmFjaW5nLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGI5NzE1ZjAyNjFhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9fdHJhY2luZy5weQpAQCAtMCwwICsx
LDYyIEBACisiIiIKK1RyYWNpbmcgdXRpbHMKKyIiIgorCisKK2NsYXNzIFRhZ1RyYWNlcihvYmpl
Y3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGFnczJwcm9jID0g
e30KKyAgICAgICAgc2VsZi5fd3JpdGVyID0gTm9uZQorICAgICAgICBzZWxmLmluZGVudCA9IDAK
KworICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBUYWdUcmFjZXJTdWIo
c2VsZiwgKG5hbWUsKSkKKworICAgIGRlZiBfZm9ybWF0X21lc3NhZ2Uoc2VsZiwgdGFncywgYXJn
cyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnc1stMV0sIGRpY3QpOgorICAgICAgICAgICAg
ZXh0cmEgPSBhcmdzWy0xXQorICAgICAgICAgICAgYXJncyA9IGFyZ3NbOi0xXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgZXh0cmEgPSB7fQorCisgICAgICAgIGNvbnRlbnQgPSAiICIuam9p
bihtYXAoc3RyLCBhcmdzKSkKKyAgICAgICAgaW5kZW50ID0gIiAgIiAqIHNlbGYuaW5kZW50CisK
KyAgICAgICAgbGluZXMgPSBbIiVzJXMgWyVzXVxuIiAlIChpbmRlbnQsIGNvbnRlbnQsICI6Ii5q
b2luKHRhZ3MpKV0KKworICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZXh0cmEuaXRlbXMoKToK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJXMgICAgJXM6ICVzXG4iICUgKGluZGVudCwgbmFt
ZSwgdmFsdWUpKQorCisgICAgICAgIHJldHVybiAiIi5qb2luKGxpbmVzKQorCisgICAgZGVmIF9w
cm9jZXNzbWVzc2FnZShzZWxmLCB0YWdzLCBhcmdzKToKKyAgICAgICAgaWYgc2VsZi5fd3JpdGVy
IGlzIG5vdCBOb25lIGFuZCBhcmdzOgorICAgICAgICAgICAgc2VsZi5fd3JpdGVyKHNlbGYuX2Zv
cm1hdF9tZXNzYWdlKHRhZ3MsIGFyZ3MpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcm9j
ZXNzb3IgPSBzZWxmLl90YWdzMnByb2NbdGFnc10KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgor
ICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJvY2Vzc29yKHRh
Z3MsIGFyZ3MpCisKKyAgICBkZWYgc2V0d3JpdGVyKHNlbGYsIHdyaXRlcik6CisgICAgICAgIHNl
bGYuX3dyaXRlciA9IHdyaXRlcgorCisgICAgZGVmIHNldHByb2Nlc3NvcihzZWxmLCB0YWdzLCBw
cm9jZXNzb3IpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHRhZ3MsIHN0cik6CisgICAgICAgICAg
ICB0YWdzID0gdHVwbGUodGFncy5zcGxpdCgiOiIpKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UodGFncywgdHVwbGUpCisgICAgICAgIHNlbGYuX3RhZ3MycHJv
Y1t0YWdzXSA9IHByb2Nlc3NvcgorCisKK2NsYXNzIFRhZ1RyYWNlclN1YihvYmplY3QpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByb290LCB0YWdzKToKKyAgICAgICAgc2VsZi5yb290ID0gcm9v
dAorICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFy
Z3MpOgorICAgICAgICBzZWxmLnJvb3QuX3Byb2Nlc3NtZXNzYWdlKHNlbGYudGFncywgYXJncykK
KworICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3Nf
XyhzZWxmLnJvb3QsIHNlbGYudGFncyArIChuYW1lLCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9wbHVnZ3kvY2FsbGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NyYy9wbHVnZ3kvY2FsbGVycy5weQpz
aW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvY2FsbGVy
cy5weQpyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9jYWxsZXJzLnB5CmluZGV4IDNm
ZjY3YmVjZmZiYy4uZTdlYTQ2NGIwZGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kv
Y2FsbGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L2NhbGxlcnMucHkKQEAgLTEs
NiArMSw2IEBACi0nJycKKyIiIgogQ2FsbCBsb29wIG1hY2hpbmVyeQotJycnCisiIiIKIGltcG9y
dCBzeXMKIGltcG9ydCB3YXJuaW5ncwogCkBAIC04LDE2ICs4LDIwIEBAIF9weTMgPSBzeXMudmVy
c2lvbl9pbmZvID4gKDMsIDApCiAKIAogaWYgbm90IF9weTM6Ci0gICAgZXhlYygiIiIKKyAgICBl
eGVjKAorICAgICAgICAiIiIKIGRlZiBfcmVyYWlzZShjbHMsIHZhbCwgdGIpOgogICAgIHJhaXNl
IGNscywgdmFsLCB0YgotIiIiKQorIiIiCisgICAgKQogCiAKIGRlZiBfcmFpc2Vfd3JhcGZhaWwo
d3JhcF9jb250cm9sbGVyLCBtc2cpOgogICAgIGNvID0gd3JhcF9jb250cm9sbGVyLmdpX2NvZGUK
LSAgICByYWlzZSBSdW50aW1lRXJyb3IoIndyYXBfY29udHJvbGxlciBhdCAlciAlczolZCAlcyIg
JQotICAgICAgICAgICAgICAgICAgICAgICAoY28uY29fbmFtZSwgY28uY29fZmlsZW5hbWUsIGNv
LmNvX2ZpcnN0bGluZW5vLCBtc2cpKQorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAg
IndyYXBfY29udHJvbGxlciBhdCAlciAlczolZCAlcyIKKyAgICAgICAgJSAoY28uY29fbmFtZSwg
Y28uY29fZmlsZW5hbWUsIGNvLmNvX2ZpcnN0bGluZW5vLCBtc2cpCisgICAgKQogCiAKIGNsYXNz
IEhvb2tDYWxsRXJyb3IoRXhjZXB0aW9uKToKQEAgLTM2LDcgKzQwLDcgQEAgY2xhc3MgX1Jlc3Vs
dChvYmplY3QpOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiByZXN1bHQoc2VsZik6CiAgICAgICAg
ICIiIkdldCB0aGUgcmVzdWx0KHMpIGZvciB0aGlzIGhvb2sgY2FsbCAoREVQUkVDQVRFRCBpbiBm
YXZvciBvZiBgYGdldF9yZXN1bHQoKWBgKS4iIiIKLSAgICAgICAgbXNnID0gJ1VzZSBnZXRfcmVz
dWx0KCkgd2hpY2ggZm9yY2VzIGNvcnJlY3QgZXhjZXB0aW9uIGhhbmRsaW5nJworICAgICAgICBt
c2cgPSAiVXNlIGdldF9yZXN1bHQoKSB3aGljaCBmb3JjZXMgY29ycmVjdCBleGNlcHRpb24gaGFu
ZGxpbmciCiAgICAgICAgIHdhcm5pbmdzLndhcm4oRGVwcmVjYXRpb25XYXJuaW5nKG1zZyksIHN0
YWNrbGV2ZWw9MikKICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdAogCkBAIC04NCw3ICs4OCw3
IEBAIGRlZiBfd3JhcHBlZF9jYWxsKHdyYXBfY29udHJvbGxlciwgZnVuYyk6CiAgICAgdG8gZmlu
aXNoIChyYWlzZSBTdG9wSXRlcmF0aW9uKSBpbiBvcmRlciBmb3IgdGhlIHdyYXBwZWQgY2FsbCB0
byBjb21wbGV0ZS4KICAgICAiIiIKICAgICB0cnk6Ci0gICAgICAgIG5leHQod3JhcF9jb250cm9s
bGVyKSAgICMgZmlyc3QgeWllbGQKKyAgICAgICAgbmV4dCh3cmFwX2NvbnRyb2xsZXIpICAjIGZp
cnN0IHlpZWxkCiAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgIF9yYWlzZV93cmFw
ZmFpbCh3cmFwX2NvbnRyb2xsZXIsICJkaWQgbm90IHlpZWxkIikKICAgICBjYWxsX291dGNvbWUg
PSBfUmVzdWx0LmZyb21fY2FsbChmdW5jKQpAQCAtMTI0LDcgKzEyOCw4IEBAIGNsYXNzIF9MZWdh
Y3lNdWx0aUNhbGwob2JqZWN0KToKICAgICAgICAgICAgICAgICBmb3IgYXJnbmFtZSBpbiBob29r
X2ltcGwuYXJnbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGNh
bGxlcl9rd2FyZ3M6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBIb29rQ2FsbEVycm9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob29rIGNhbGwgbXVzdCBwcm92aWRlIGFy
Z3VtZW50ICVyIiAlIChhcmduYW1lLCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhv
b2sgY2FsbCBtdXN0IHByb3ZpZGUgYXJndW1lbnQgJXIiICUgKGFyZ25hbWUsKQorICAgICAgICAg
ICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgaWYgaG9va19pbXBsLmhvb2t3cmFwcGVyOgog
ICAgICAgICAgICAgICAgIHJldHVybiBfd3JhcHBlZF9jYWxsKGhvb2tfaW1wbC5mdW5jdGlvbigq
YXJncyksIHNlbGYuZXhlY3V0ZSkKICAgICAgICAgICAgIHJlcyA9IGhvb2tfaW1wbC5mdW5jdGlv
bigqYXJncykKQEAgLTE0NSw3ICsxNTAsOCBAQCBjbGFzcyBfTGVnYWN5TXVsdGlDYWxsKG9iamVj
dCk6CiAKIGRlZiBfbGVnYWN5bXVsdGljYWxsKGhvb2tfaW1wbHMsIGNhbGxlcl9rd2FyZ3MsIGZp
cnN0cmVzdWx0PUZhbHNlKToKICAgICByZXR1cm4gX0xlZ2FjeU11bHRpQ2FsbCgKLSAgICAgICAg
aG9va19pbXBscywgY2FsbGVyX2t3YXJncywgZmlyc3RyZXN1bHQ9Zmlyc3RyZXN1bHQpLmV4ZWN1
dGUoKQorICAgICAgICBob29rX2ltcGxzLCBjYWxsZXJfa3dhcmdzLCBmaXJzdHJlc3VsdD1maXJz
dHJlc3VsdAorICAgICkuZXhlY3V0ZSgpCiAKIAogZGVmIF9tdWx0aWNhbGwoaG9va19pbXBscywg
Y2FsbGVyX2t3YXJncywgZmlyc3RyZXN1bHQ9RmFsc2UpOgpAQCAtMTY3LDEyICsxNzMsMTMgQEAg
ZGVmIF9tdWx0aWNhbGwoaG9va19pbXBscywgY2FsbGVyX2t3YXJncywgZmlyc3RyZXN1bHQ9RmFs
c2UpOgogICAgICAgICAgICAgICAgICAgICBmb3IgYXJnbmFtZSBpbiBob29rX2ltcGwuYXJnbmFt
ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBpbiBjYWxsZXJfa3dh
cmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhvb2tDYWxsRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob29rIGNhbGwgbXVzdCBwcm92aWRlIGFy
Z3VtZW50ICVyIiAlIChhcmduYW1lLCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJob29rIGNhbGwgbXVzdCBwcm92aWRlIGFyZ3VtZW50ICVyIiAlIChhcmduYW1lLCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgICAgICAgICBpZiBob29rX2ltcGwu
aG9va3dyYXBwZXI6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbiA9IGhvb2tfaW1wbC5mdW5jdGlvbigqYXJncykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHQoZ2VuKSAgICMgZmlyc3QgeWllbGQKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5leHQoZ2VuKSAgIyBmaXJzdCB5aWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgdGVhcmRv
d25zLmFwcGVuZChnZW4pCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9u
OgogICAgICAgICAgICAgICAgICAgICAgICAgX3JhaXNlX3dyYXBmYWlsKGdlbiwgImRpZCBub3Qg
eWllbGQiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9ob29rcy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L3NyYy9wbHVnZ3kvaG9va3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4wYTFjMjg3MTk4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9zcmMvcGx1Z2d5L2hvb2tzLnB5CkBAIC0wLDAgKzEsMzU5IEBACisiIiIKK0ludGVybmFsIGhv
b2sgYW5ub3RhdGlvbiwgcmVwcmVzZW50YXRpb24gYW5kIGNhbGxpbmcgbWFjaGluZXJ5LgorIiIi
CitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIC5jYWxs
ZXJzIGltcG9ydCBfbGVnYWN5bXVsdGljYWxsLCBfbXVsdGljYWxsCisKKworY2xhc3MgSG9va3Nw
ZWNNYXJrZXIob2JqZWN0KToKKyAgICAiIiIgRGVjb3JhdG9yIGhlbHBlciBjbGFzcyBmb3IgbWFy
a2luZyBmdW5jdGlvbnMgYXMgaG9vayBzcGVjaWZpY2F0aW9ucy4KKworICAgIFlvdSBjYW4gaW5z
dGFudGlhdGUgaXQgd2l0aCBhIHByb2plY3RfbmFtZSB0byBnZXQgYSBkZWNvcmF0b3IuCisgICAg
Q2FsbGluZyA6cHk6bWV0aDpgLlBsdWdpbk1hbmFnZXIuYWRkX2hvb2tzcGVjc2AgbGF0ZXIgd2ls
bCBkaXNjb3ZlciBhbGwgbWFya2VkIGZ1bmN0aW9ucworICAgIGlmIHRoZSA6cHk6Y2xhc3M6YC5Q
bHVnaW5NYW5hZ2VyYCB1c2VzIHRoZSBzYW1lIHByb2plY3RfbmFtZS4KKyAgICAiIiIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X25hbWUpOgorICAgICAgICBzZWxmLnByb2plY3Rf
bmFtZSA9IHByb2plY3RfbmFtZQorCisgICAgZGVmIF9fY2FsbF9fKAorICAgICAgICBzZWxmLCBm
dW5jdGlvbj1Ob25lLCBmaXJzdHJlc3VsdD1GYWxzZSwgaGlzdG9yaWM9RmFsc2UsIHdhcm5fb25f
aW1wbD1Ob25lCisgICAgKToKKyAgICAgICAgIiIiIGlmIHBhc3NlZCBhIGZ1bmN0aW9uLCBkaXJl
Y3RseSBzZXRzIGF0dHJpYnV0ZXMgb24gdGhlIGZ1bmN0aW9uCisgICAgICAgIHdoaWNoIHdpbGwg
bWFrZSBpdCBkaXNjb3ZlcmFibGUgdG8gOnB5Om1ldGg6YC5QbHVnaW5NYW5hZ2VyLmFkZF9ob29r
c3BlY3NgLgorICAgICAgICBJZiBwYXNzZWQgbm8gZnVuY3Rpb24sIHJldHVybnMgYSBkZWNvcmF0
b3Igd2hpY2ggY2FuIGJlIGFwcGxpZWQgdG8gYSBmdW5jdGlvbgorICAgICAgICBsYXRlciB1c2lu
ZyB0aGUgYXR0cmlidXRlcyBzdXBwbGllZC4KKworICAgICAgICBJZiBgYGZpcnN0cmVzdWx0YGAg
aXMgYGBUcnVlYGAgdGhlIDE6TiBob29rIGNhbGwgKE4gYmVpbmcgdGhlIG51bWJlciBvZiByZWdp
c3RlcmVkCisgICAgICAgIGhvb2sgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zKSB3aWxsIHN0b3Ag
YXQgSTw9TiB3aGVuIHRoZSBJJ3RoIGZ1bmN0aW9uCisgICAgICAgIHJldHVybnMgYSBub24tYGBO
b25lYGAgcmVzdWx0LgorCisgICAgICAgIElmIGBgaGlzdG9yaWNgYCBpcyBgYFRydWVgYCBjYWxs
cyB0byBhIGhvb2sgd2lsbCBiZSBtZW1vcml6ZWQgYW5kIHJlcGxheWVkCisgICAgICAgIG9uIGxh
dGVyIHJlZ2lzdGVyZWQgcGx1Z2lucy4KKworICAgICAgICAiIiIKKworICAgICAgICBkZWYgc2V0
YXR0cl9ob29rc3BlY19vcHRzKGZ1bmMpOgorICAgICAgICAgICAgaWYgaGlzdG9yaWMgYW5kIGZp
cnN0cmVzdWx0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCBoYXZl
IGEgaGlzdG9yaWMgZmlyc3RyZXN1bHQgaG9vayIpCisgICAgICAgICAgICBzZXRhdHRyKAorICAg
ICAgICAgICAgICAgIGZ1bmMsCisgICAgICAgICAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUgKyAi
X3NwZWMiLAorICAgICAgICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgICAgICAgIGZpcnN0
cmVzdWx0PWZpcnN0cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICBoaXN0b3JpYz1oaXN0b3Jp
YywKKyAgICAgICAgICAgICAgICAgICAgd2Fybl9vbl9pbXBsPXdhcm5fb25faW1wbCwKKyAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMKKwor
ICAgICAgICBpZiBmdW5jdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZXRh
dHRyX2hvb2tzcGVjX29wdHMoZnVuY3Rpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy
ZXR1cm4gc2V0YXR0cl9ob29rc3BlY19vcHRzCisKKworY2xhc3MgSG9va2ltcGxNYXJrZXIob2Jq
ZWN0KToKKyAgICAiIiIgRGVjb3JhdG9yIGhlbHBlciBjbGFzcyBmb3IgbWFya2luZyBmdW5jdGlv
bnMgYXMgaG9vayBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICBZb3UgY2FuIGluc3RhbnRpYXRlIHdp
dGggYSBgYHByb2plY3RfbmFtZWBgIHRvIGdldCBhIGRlY29yYXRvci4KKyAgICBDYWxsaW5nIDpw
eTptZXRoOmAuUGx1Z2luTWFuYWdlci5yZWdpc3RlcmAgbGF0ZXIgd2lsbCBkaXNjb3ZlciBhbGwg
bWFya2VkIGZ1bmN0aW9ucworICAgIGlmIHRoZSA6cHk6Y2xhc3M6YC5QbHVnaW5NYW5hZ2VyYCB1
c2VzIHRoZSBzYW1lIHByb2plY3RfbmFtZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwcm9qZWN0X25hbWUpOgorICAgICAgICBzZWxmLnByb2plY3RfbmFtZSA9IHByb2plY3Rf
bmFtZQorCisgICAgZGVmIF9fY2FsbF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBmdW5jdGlv
bj1Ob25lLAorICAgICAgICBob29rd3JhcHBlcj1GYWxzZSwKKyAgICAgICAgb3B0aW9uYWxob29r
PUZhbHNlLAorICAgICAgICB0cnlmaXJzdD1GYWxzZSwKKyAgICAgICAgdHJ5bGFzdD1GYWxzZSwK
KyAgICApOgorCisgICAgICAgICIiIiBpZiBwYXNzZWQgYSBmdW5jdGlvbiwgZGlyZWN0bHkgc2V0
cyBhdHRyaWJ1dGVzIG9uIHRoZSBmdW5jdGlvbgorICAgICAgICB3aGljaCB3aWxsIG1ha2UgaXQg
ZGlzY292ZXJhYmxlIHRvIDpweTptZXRoOmAuUGx1Z2luTWFuYWdlci5yZWdpc3RlcmAuCisgICAg
ICAgIElmIHBhc3NlZCBubyBmdW5jdGlvbiwgcmV0dXJucyBhIGRlY29yYXRvciB3aGljaCBjYW4g
YmUgYXBwbGllZCB0byBhCisgICAgICAgIGZ1bmN0aW9uIGxhdGVyIHVzaW5nIHRoZSBhdHRyaWJ1
dGVzIHN1cHBsaWVkLgorCisgICAgICAgIElmIGBgb3B0aW9uYWxob29rYGAgaXMgYGBUcnVlYGAg
YSBtaXNzaW5nIG1hdGNoaW5nIGhvb2sgc3BlY2lmaWNhdGlvbiB3aWxsIG5vdCByZXN1bHQKKyAg
ICAgICAgaW4gYW4gZXJyb3IgKGJ5IGRlZmF1bHQgaXQgaXMgYW4gZXJyb3IgaWYgbm8gbWF0Y2hp
bmcgc3BlYyBpcyBmb3VuZCkuCisKKyAgICAgICAgSWYgYGB0cnlmaXJzdGBgIGlzIGBgVHJ1ZWBg
IHRoaXMgaG9vayBpbXBsZW1lbnRhdGlvbiB3aWxsIHJ1biBhcyBlYXJseSBhcyBwb3NzaWJsZQor
ICAgICAgICBpbiB0aGUgY2hhaW4gb2YgTiBob29rIGltcGxlbWVudGF0aW9ucyBmb3IgYSBzcGVj
aWZpY2F0aW9uLgorCisgICAgICAgIElmIGBgdHJ5bGFzdGBgIGlzIGBgVHJ1ZWBgIHRoaXMgaG9v
ayBpbXBsZW1lbnRhdGlvbiB3aWxsIHJ1biBhcyBsYXRlIGFzIHBvc3NpYmxlCisgICAgICAgIGlu
IHRoZSBjaGFpbiBvZiBOIGhvb2sgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIElmIGBgaG9v
a3dyYXBwZXJgYCBpcyBgYFRydWVgYCB0aGUgaG9vayBpbXBsZW1lbnRhdGlvbnMgbmVlZHMgdG8g
ZXhlY3V0ZSBleGFjdGx5CisgICAgICAgIG9uZSBgYHlpZWxkYGAuICBUaGUgY29kZSBiZWZvcmUg
dGhlIGBgeWllbGRgYCBpcyBydW4gZWFybHkgYmVmb3JlIGFueSBub24taG9va3dyYXBwZXIKKyAg
ICAgICAgZnVuY3Rpb24gaXMgcnVuLiAgVGhlIGNvZGUgYWZ0ZXIgdGhlIGBgeWllbGRgYCBpcyBy
dW4gYWZ0ZXIgYWxsIG5vbi1ob29rd3JhcHBlcgorICAgICAgICBmdW5jdGlvbiBoYXZlIHJ1bi4g
IFRoZSBgYHlpZWxkYGAgcmVjZWl2ZXMgYSA6cHk6Y2xhc3M6YC5jYWxsZXJzLl9SZXN1bHRgIG9i
amVjdAorICAgICAgICByZXByZXNlbnRpbmcgdGhlIGV4Y2VwdGlvbiBvciByZXN1bHQgb3V0Y29t
ZSBvZiB0aGUgaW5uZXIgY2FsbHMgKGluY2x1ZGluZyBvdGhlcgorICAgICAgICBob29rd3JhcHBl
ciBjYWxscykuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIHNldGF0dHJfaG9va2ltcGxf
b3B0cyhmdW5jKToKKyAgICAgICAgICAgIHNldGF0dHIoCisgICAgICAgICAgICAgICAgZnVuYywK
KyAgICAgICAgICAgICAgICBzZWxmLnByb2plY3RfbmFtZSArICJfaW1wbCIsCisgICAgICAgICAg
ICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICAgICAgaG9va3dyYXBwZXI9aG9va3dyYXBwZXIs
CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsaG9vaz1vcHRpb25hbGhvb2ssCisgICAgICAg
ICAgICAgICAgICAgIHRyeWZpcnN0PXRyeWZpcnN0LAorICAgICAgICAgICAgICAgICAgICB0cnls
YXN0PXRyeWxhc3QsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgaWYgZnVuY3Rpb24gaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBzZXRhdHRyX2hvb2tpbXBsX29wdHMKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJldHVybiBzZXRhdHRyX2hvb2tpbXBsX29wdHMoZnVuY3Rpb24pCisKKworZGVmIG5vcm1h
bGl6ZV9ob29raW1wbF9vcHRzKG9wdHMpOgorICAgIG9wdHMuc2V0ZGVmYXVsdCgidHJ5Zmlyc3Qi
LCBGYWxzZSkKKyAgICBvcHRzLnNldGRlZmF1bHQoInRyeWxhc3QiLCBGYWxzZSkKKyAgICBvcHRz
LnNldGRlZmF1bHQoImhvb2t3cmFwcGVyIiwgRmFsc2UpCisgICAgb3B0cy5zZXRkZWZhdWx0KCJv
cHRpb25hbGhvb2siLCBGYWxzZSkKKworCitpZiBoYXNhdHRyKGluc3BlY3QsICJnZXRmdWxsYXJn
c3BlYyIpOgorCisgICAgZGVmIF9nZXRhcmdzcGVjKGZ1bmMpOgorICAgICAgICByZXR1cm4gaW5z
cGVjdC5nZXRmdWxsYXJnc3BlYyhmdW5jKQorCisKK2Vsc2U6CisKKyAgICBkZWYgX2dldGFyZ3Nw
ZWMoZnVuYyk6CisgICAgICAgIHJldHVybiBpbnNwZWN0LmdldGFyZ3NwZWMoZnVuYykKKworCitf
UFlQWTMgPSBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIikgYW5kIHN5cy52ZXJzaW9u
X2luZm8ubWFqb3IgPT0gMworCisKK2RlZiB2YXJuYW1lcyhmdW5jKToKKyAgICAiIiJSZXR1cm4g
dHVwbGUgb2YgcG9zaXRpb25hbCBhbmQga2V5d3JvcmQgYXJndW1lbnQgbmFtZXMgZm9yIGEgZnVu
Y3Rpb24sCisgICAgbWV0aG9kLCBjbGFzcyBvciBjYWxsYWJsZS4KKworICAgIEluIGNhc2Ugb2Yg
YSBjbGFzcywgaXRzIGBgX19pbml0X19gYCBtZXRob2QgaXMgY29uc2lkZXJlZC4KKyAgICBGb3Ig
bWV0aG9kcyB0aGUgYGBzZWxmYGAgcGFyYW1ldGVyIGlzIG5vdCBpbmNsdWRlZC4KKyAgICAiIiIK
KyAgICBjYWNoZSA9IGdldGF0dHIoZnVuYywgIl9fZGljdF9fIiwge30pCisgICAgdHJ5OgorICAg
ICAgICByZXR1cm4gY2FjaGVbIl92YXJuYW1lcyJdCisgICAgZXhjZXB0IEtleUVycm9yOgorICAg
ICAgICBwYXNzCisKKyAgICBpZiBpbnNwZWN0LmlzY2xhc3MoZnVuYyk6CisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9faW5pdF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1
dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiAoKSwgKCkKKyAgICBlbGlmIG5vdCBpbnNwZWN0
Lmlzcm91dGluZShmdW5jKTogICMgY2FsbGFibGUgb2JqZWN0PworICAgICAgICB0cnk6CisgICAg
ICAgICAgICBmdW5jID0gZ2V0YXR0cihmdW5jLCAiX19jYWxsX18iLCBmdW5jKQorICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcmV0dXJuICgpLCAoKQorCisgICAgdHJ5OiAg
IyBmdW5jIE1VU1QgYmUgYSBmdW5jdGlvbiBvciBtZXRob2QgaGVyZSBvciB3ZSB3b24ndCBwYXJz
ZSBhbnkgYXJncworICAgICAgICBzcGVjID0gX2dldGFyZ3NwZWMoZnVuYykKKyAgICBleGNlcHQg
VHlwZUVycm9yOgorICAgICAgICByZXR1cm4gKCksICgpCisKKyAgICBhcmdzLCBkZWZhdWx0cyA9
IHR1cGxlKHNwZWMuYXJncyksIHNwZWMuZGVmYXVsdHMKKyAgICBpZiBkZWZhdWx0czoKKyAgICAg
ICAgaW5kZXggPSAtbGVuKGRlZmF1bHRzKQorICAgICAgICBhcmdzLCBrd2FyZ3MgPSBhcmdzWzpp
bmRleF0sIHR1cGxlKGFyZ3NbaW5kZXg6XSkKKyAgICBlbHNlOgorICAgICAgICBrd2FyZ3MgPSAo
KQorCisgICAgIyBzdHJpcCBhbnkgaW1wbGljaXQgaW5zdGFuY2UgYXJnCisgICAgIyBweXB5MyB1
c2VzICJvYmoiIGluc3RlYWQgb2YgInNlbGYiIGZvciBkZWZhdWx0IGR1bmRlciBtZXRob2RzCisg
ICAgaW1wbGljaXRfbmFtZXMgPSAoInNlbGYiLCkgaWYgbm90IF9QWVBZMyBlbHNlICgic2VsZiIs
ICJvYmoiKQorICAgIGlmIGFyZ3M6CisgICAgICAgIGlmIGluc3BlY3QuaXNtZXRob2QoZnVuYykg
b3IgKAorICAgICAgICAgICAgIi4iIGluIGdldGF0dHIoZnVuYywgIl9fcXVhbG5hbWVfXyIsICgp
KSBhbmQgYXJnc1swXSBpbiBpbXBsaWNpdF9uYW1lcworICAgICAgICApOgorICAgICAgICAgICAg
YXJncyA9IGFyZ3NbMTpdCisKKyAgICB0cnk6CisgICAgICAgIGNhY2hlWyJfdmFybmFtZXMiXSA9
IGFyZ3MsIGt3YXJncworICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBy
ZXR1cm4gYXJncywga3dhcmdzCisKKworY2xhc3MgX0hvb2tSZWxheShvYmplY3QpOgorICAgICIi
IiBob29rIGhvbGRlciBvYmplY3QgZm9yIHBlcmZvcm1pbmcgMTpOIGhvb2sgY2FsbHMgd2hlcmUg
TiBpcyB0aGUgbnVtYmVyCisgICAgb2YgcmVnaXN0ZXJlZCBwbHVnaW5zLgorCisgICAgIiIiCisK
KworY2xhc3MgX0hvb2tDYWxsZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt
ZSwgaG9va19leGVjdXRlLCBzcGVjbW9kdWxlX29yX2NsYXNzPU5vbmUsIHNwZWNfb3B0cz1Ob25l
KToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl93cmFwcGVycyA9IFtd
CisgICAgICAgIHNlbGYuX25vbndyYXBwZXJzID0gW10KKyAgICAgICAgc2VsZi5faG9va2V4ZWMg
PSBob29rX2V4ZWN1dGUKKyAgICAgICAgc2VsZi5hcmduYW1lcyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5rd2FyZ25hbWVzID0gTm9uZQorICAgICAgICBzZWxmLm11bHRpY2FsbCA9IF9tdWx0aWNhbGwK
KyAgICAgICAgc2VsZi5zcGVjID0gTm9uZQorICAgICAgICBpZiBzcGVjbW9kdWxlX29yX2NsYXNz
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXNzZXJ0IHNwZWNfb3B0cyBpcyBub3QgTm9uZQor
ICAgICAgICAgICAgc2VsZi5zZXRfc3BlY2lmaWNhdGlvbihzcGVjbW9kdWxlX29yX2NsYXNzLCBz
cGVjX29wdHMpCisKKyAgICBkZWYgaGFzX3NwZWMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LnNwZWMgaXMgbm90IE5vbmUKKworICAgIGRlZiBzZXRfc3BlY2lmaWNhdGlvbihzZWxmLCBzcGVj
bW9kdWxlX29yX2NsYXNzLCBzcGVjX29wdHMpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuaGFz
X3NwZWMoKQorICAgICAgICBzZWxmLnNwZWMgPSBIb29rU3BlYyhzcGVjbW9kdWxlX29yX2NsYXNz
LCBzZWxmLm5hbWUsIHNwZWNfb3B0cykKKyAgICAgICAgaWYgc3BlY19vcHRzLmdldCgiaGlzdG9y
aWMiKToKKyAgICAgICAgICAgIHNlbGYuX2NhbGxfaGlzdG9yeSA9IFtdCisKKyAgICBkZWYgaXNf
aGlzdG9yaWMoc2VsZik6CisgICAgICAgIHJldHVybiBoYXNhdHRyKHNlbGYsICJfY2FsbF9oaXN0
b3J5IikKKworICAgIGRlZiBfcmVtb3ZlX3BsdWdpbihzZWxmLCBwbHVnaW4pOgorICAgICAgICBk
ZWYgcmVtb3ZlKHdyYXBwZXJzKToKKyAgICAgICAgICAgIGZvciBpLCBtZXRob2QgaW4gZW51bWVy
YXRlKHdyYXBwZXJzKToKKyAgICAgICAgICAgICAgICBpZiBtZXRob2QucGx1Z2luID09IHBsdWdp
bjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHdyYXBwZXJzW2ldCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgcmVtb3ZlKHNlbGYuX3dyYXBwZXJzKSBpcyBO
b25lOgorICAgICAgICAgICAgaWYgcmVtb3ZlKHNlbGYuX25vbndyYXBwZXJzKSBpcyBOb25lOgor
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBsdWdpbiAlciBub3QgZm91bmQiICUg
KHBsdWdpbiwpKQorCisgICAgZGVmIGdldF9ob29raW1wbHMoc2VsZik6CisgICAgICAgICMgT3Jk
ZXIgaXMgaW1wb3J0YW50IGZvciBfaG9va2V4ZWMKKyAgICAgICAgcmV0dXJuIHNlbGYuX25vbndy
YXBwZXJzICsgc2VsZi5fd3JhcHBlcnMKKworICAgIGRlZiBfYWRkX2hvb2tpbXBsKHNlbGYsIGhv
b2tpbXBsKToKKyAgICAgICAgIiIiQWRkIGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjYWxsYmFj
ayBjaGFpbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhvb2tpbXBsLmhvb2t3cmFwcGVyOgor
ICAgICAgICAgICAgbWV0aG9kcyA9IHNlbGYuX3dyYXBwZXJzCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBtZXRob2RzID0gc2VsZi5fbm9ud3JhcHBlcnMKKworICAgICAgICBpZiBob29raW1w
bC50cnlsYXN0OgorICAgICAgICAgICAgbWV0aG9kcy5pbnNlcnQoMCwgaG9va2ltcGwpCisgICAg
ICAgIGVsaWYgaG9va2ltcGwudHJ5Zmlyc3Q6CisgICAgICAgICAgICBtZXRob2RzLmFwcGVuZCho
b29raW1wbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgZmluZCBsYXN0IG5vbi10cnlm
aXJzdCBtZXRob2QKKyAgICAgICAgICAgIGkgPSBsZW4obWV0aG9kcykgLSAxCisgICAgICAgICAg
ICB3aGlsZSBpID49IDAgYW5kIG1ldGhvZHNbaV0udHJ5Zmlyc3Q6CisgICAgICAgICAgICAgICAg
aSAtPSAxCisgICAgICAgICAgICBtZXRob2RzLmluc2VydChpICsgMSwgaG9va2ltcGwpCisKKyAg
ICAgICAgaWYgIl9fbXVsdGljYWxsX18iIGluIGhvb2tpbXBsLmFyZ25hbWVzOgorICAgICAgICAg
ICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiU3VwcG9ydCBmb3IgX19tdWx0aWNh
bGxfXyBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSIKKyAgICAgICAgICAgICAgICAicmVt
b3ZlZCBpbiBhbiB1cGNvbWluZyByZWxlYXNlLiIsCisgICAgICAgICAgICAgICAgRGVwcmVjYXRp
b25XYXJuaW5nLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5tdWx0aWNhbGwgPSBf
bGVnYWN5bXVsdGljYWxsCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVy
biAiPF9Ib29rQ2FsbGVyICVyPiIgJSAoc2VsZi5uYW1lLCkKKworICAgIGRlZiBfX2NhbGxfXyhz
ZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKCJob29rIGNhbGxpbmcgc3VwcG9ydHMgb25seSBrZXl3b3JkIGFyZ3VtZW50
cyIpCisgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pc19oaXN0b3JpYygpCisgICAgICAgIGlmIHNl
bGYuc3BlYyBhbmQgc2VsZi5zcGVjLmFyZ25hbWVzOgorICAgICAgICAgICAgbm90aW5jYWxsID0g
KAorICAgICAgICAgICAgICAgIHNldChzZWxmLnNwZWMuYXJnbmFtZXMpIC0gc2V0KFsiX19tdWx0
aWNhbGxfXyJdKSAtIHNldChrd2FyZ3Mua2V5cygpKQorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgaWYgbm90aW5jYWxsOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAg
ICAgICAgICAgICAgICJBcmd1bWVudChzKSB7fSB3aGljaCBhcmUgZGVjbGFyZWQgaW4gdGhlIGhv
b2tzcGVjICIKKyAgICAgICAgICAgICAgICAgICAgImNhbiBub3QgYmUgZm91bmQgaW4gdGhpcyBo
b29rIGNhbGwiLmZvcm1hdCh0dXBsZShub3RpbmNhbGwpKSwKKyAgICAgICAgICAgICAgICAgICAg
c3RhY2tsZXZlbD0yLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hv
b2tleGVjKHNlbGYsIHNlbGYuZ2V0X2hvb2tpbXBscygpLCBrd2FyZ3MpCisKKyAgICBkZWYgY2Fs
bF9oaXN0b3JpYyhzZWxmLCByZXN1bHRfY2FsbGJhY2s9Tm9uZSwga3dhcmdzPU5vbmUsIHByb2M9
Tm9uZSk6CisgICAgICAgICIiIkNhbGwgdGhlIGhvb2sgd2l0aCBnaXZlbiBgYGt3YXJnc2BgIGZv
ciBhbGwgcmVnaXN0ZXJlZCBwbHVnaW5zIGFuZAorICAgICAgICBmb3IgYWxsIHBsdWdpbnMgd2hp
Y2ggd2lsbCBiZSByZWdpc3RlcmVkIGFmdGVyd2FyZHMuCisKKyAgICAgICAgSWYgYGByZXN1bHRf
Y2FsbGJhY2tgYCBpcyBub3QgYGBOb25lYGAgaXQgd2lsbCBiZSBjYWxsZWQgZm9yIGZvciBlYWNo
CisgICAgICAgIG5vbi1gYE5vbmVgYCByZXN1bHQgb2J0YWluZWQgZnJvbSBhIGhvb2sgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgLi4gbm90ZTo6CisgICAgICAgICAgICBUaGUgYGBwcm9jYGAg
YXJndW1lbnQgaXMgbm93IGRlcHJlY2F0ZWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBwcm9j
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAg
ICAiU3VwcG9ydCBmb3IgYHByb2NgIGFyZ3VtZW50IGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxs
IGJlIgorICAgICAgICAgICAgICAgICJyZW1vdmVkIGluIGFuIHVwY29taW5nIHJlbGVhc2UuIiwK
KyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICByZXN1bHRfY2FsbGJhY2sgPSBwcm9jCisKKyAgICAgICAgc2VsZi5fY2FsbF9oaXN0
b3J5LmFwcGVuZCgoa3dhcmdzIG9yIHt9LCByZXN1bHRfY2FsbGJhY2spKQorICAgICAgICAjIGhp
c3Rvcml6aW5nIGhvb2tzIGRvbid0IHJldHVybiByZXN1bHRzCisgICAgICAgIHJlcyA9IHNlbGYu
X2hvb2tleGVjKHNlbGYsIHNlbGYuZ2V0X2hvb2tpbXBscygpLCBrd2FyZ3MpCisgICAgICAgIGlm
IHJlc3VsdF9jYWxsYmFjayBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMg
WFhYOiByZW1lbWJlciBmaXJzdHJlc3VsdCBpc24ndCBjb21wYXQgd2l0aCBoaXN0b3JpYworICAg
ICAgICBmb3IgeCBpbiByZXMgb3IgW106CisgICAgICAgICAgICByZXN1bHRfY2FsbGJhY2soeCkK
KworICAgIGRlZiBjYWxsX2V4dHJhKHNlbGYsIG1ldGhvZHMsIGt3YXJncyk6CisgICAgICAgICIi
IiBDYWxsIHRoZSBob29rIHdpdGggc29tZSBhZGRpdGlvbmFsIHRlbXBvcmFyaWx5IHBhcnRpY2lw
YXRpbmcKKyAgICAgICAgbWV0aG9kcyB1c2luZyB0aGUgc3BlY2lmaWVkIGBga3dhcmdzYGAgYXMg
Y2FsbCBwYXJhbWV0ZXJzLiAiIiIKKyAgICAgICAgb2xkID0gbGlzdChzZWxmLl9ub253cmFwcGVy
cyksIGxpc3Qoc2VsZi5fd3JhcHBlcnMpCisgICAgICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoK
KyAgICAgICAgICAgIG9wdHMgPSBkaWN0KGhvb2t3cmFwcGVyPUZhbHNlLCB0cnlsYXN0PUZhbHNl
LCB0cnlmaXJzdD1GYWxzZSkKKyAgICAgICAgICAgIGhvb2tpbXBsID0gSG9va0ltcGwoTm9uZSwg
Ijx0ZW1wPiIsIG1ldGhvZCwgb3B0cykKKyAgICAgICAgICAgIHNlbGYuX2FkZF9ob29raW1wbCho
b29raW1wbCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYoKiprd2FyZ3Mp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9ub253cmFwcGVycywgc2VsZi5f
d3JhcHBlcnMgPSBvbGQKKworICAgIGRlZiBfbWF5YmVfYXBwbHlfaGlzdG9yeShzZWxmLCBtZXRo
b2QpOgorICAgICAgICAiIiJBcHBseSBjYWxsIGhpc3RvcnkgdG8gYSBuZXcgaG9va2ltcGwgaWYg
aXQgaXMgbWFya2VkIGFzIGhpc3RvcmljLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5p
c19oaXN0b3JpYygpOgorICAgICAgICAgICAgZm9yIGt3YXJncywgcmVzdWx0X2NhbGxiYWNrIGlu
IHNlbGYuX2NhbGxfaGlzdG9yeToKKyAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9ob29rZXhl
YyhzZWxmLCBbbWV0aG9kXSwga3dhcmdzKQorICAgICAgICAgICAgICAgIGlmIHJlcyBhbmQgcmVz
dWx0X2NhbGxiYWNrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRfY2Fs
bGJhY2socmVzWzBdKQorCisKK2NsYXNzIEhvb2tJbXBsKG9iamVjdCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBsdWdpbiwgcGx1Z2luX25hbWUsIGZ1bmN0aW9uLCBob29rX2ltcGxfb3B0cyk6
CisgICAgICAgIHNlbGYuZnVuY3Rpb24gPSBmdW5jdGlvbgorICAgICAgICBzZWxmLmFyZ25hbWVz
LCBzZWxmLmt3YXJnbmFtZXMgPSB2YXJuYW1lcyhzZWxmLmZ1bmN0aW9uKQorICAgICAgICBzZWxm
LnBsdWdpbiA9IHBsdWdpbgorICAgICAgICBzZWxmLm9wdHMgPSBob29rX2ltcGxfb3B0cworICAg
ICAgICBzZWxmLnBsdWdpbl9uYW1lID0gcGx1Z2luX25hbWUKKyAgICAgICAgc2VsZi5fX2RpY3Rf
Xy51cGRhdGUoaG9va19pbXBsX29wdHMpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAg
ICAgIHJldHVybiAiPEhvb2tJbXBsIHBsdWdpbl9uYW1lPSVyLCBwbHVnaW49JXI+IiAlIChzZWxm
LnBsdWdpbl9uYW1lLCBzZWxmLnBsdWdpbikKKworCitjbGFzcyBIb29rU3BlYyhvYmplY3QpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lc3BhY2UsIG5hbWUsIG9wdHMpOgorICAgICAgICBz
ZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZQorICAgICAgICBzZWxmLmZ1bmN0aW9uID0gZnVuY3Rp
b24gPSBnZXRhdHRyKG5hbWVzcGFjZSwgbmFtZSkKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQor
ICAgICAgICBzZWxmLmFyZ25hbWVzLCBzZWxmLmt3YXJnbmFtZXMgPSB2YXJuYW1lcyhmdW5jdGlv
bikKKyAgICAgICAgc2VsZi5vcHRzID0gb3B0cworICAgICAgICBzZWxmLmFyZ25hbWVzID0gWyJf
X211bHRpY2FsbF9fIl0gKyBsaXN0KHNlbGYuYXJnbmFtZXMpCisgICAgICAgIHNlbGYud2Fybl9v
bl9pbXBsID0gb3B0cy5nZXQoIndhcm5fb25faW1wbCIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9zcmMvcGx1Z2d5L21hbmFnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L21hbmFnZXIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2I0MmNiYTJkNWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L21hbmFnZXIucHkKQEAg
LTAsMCArMSwzOTQgQEAKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgc3lzCitmcm9tIC4gaW1wb3J0
IF90cmFjaW5nCitmcm9tIC5jYWxsZXJzIGltcG9ydCBfUmVzdWx0Citmcm9tIC5ob29rcyBpbXBv
cnQgSG9va0ltcGwsIF9Ib29rUmVsYXksIF9Ib29rQ2FsbGVyLCBub3JtYWxpemVfaG9va2ltcGxf
b3B0cworaW1wb3J0IHdhcm5pbmdzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpOgor
ICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtZXRhZGF0YSBhcyBpbXBvcnRsaWJfbWV0YWRhdGEK
K2Vsc2U6CisgICAgaW1wb3J0IGltcG9ydGxpYl9tZXRhZGF0YQorCisKK2RlZiBfd2Fybl9mb3Jf
ZnVuY3Rpb24od2FybmluZywgZnVuY3Rpb24pOgorICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQo
CisgICAgICAgIHdhcm5pbmcsCisgICAgICAgIHR5cGUod2FybmluZyksCisgICAgICAgIGxpbmVu
bz1mdW5jdGlvbi5fX2NvZGVfXy5jb19maXJzdGxpbmVubywKKyAgICAgICAgZmlsZW5hbWU9ZnVu
Y3Rpb24uX19jb2RlX18uY29fZmlsZW5hbWUsCisgICAgKQorCisKK2NsYXNzIFBsdWdpblZhbGlk
YXRpb25FcnJvcihFeGNlcHRpb24pOgorICAgICIiIiBwbHVnaW4gZmFpbGVkIHZhbGlkYXRpb24u
CisKKyAgICA6cGFyYW0gb2JqZWN0IHBsdWdpbjogdGhlIHBsdWdpbiB3aGljaCBmYWlsZWQgdmFs
aWRhdGlvbiwKKyAgICAgICAgbWF5IGJlIGEgbW9kdWxlIG9yIGFuIGFyYml0cmFyeSBvYmplY3Qu
CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGx1Z2luLCBtZXNzYWdlKToKKyAg
ICAgICAgc2VsZi5wbHVnaW4gPSBwbHVnaW4KKyAgICAgICAgc3VwZXIoRXhjZXB0aW9uLCBzZWxm
KS5fX2luaXRfXyhtZXNzYWdlKQorCisKK2NsYXNzIERpc3RGYWNhZGUob2JqZWN0KToKKyAgICAi
IiJFbXVsYXRlIGEgcGtnX3Jlc291cmNlcyBEaXN0cmlidXRpb24iIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkaXN0KToKKyAgICAgICAgc2VsZi5fZGlzdCA9IGRpc3QKKworICAgIEBwcm9w
ZXJ0eQorICAgIGRlZiBwcm9qZWN0X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1l
dGFkYXRhWyJuYW1lIl0KKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyLCBkZWZhdWx0
PU5vbmUpOgorICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9kaXN0LCBhdHRyLCBkZWZhdWx0
KQorCisgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzb3J0ZWQoZGlyKHNl
bGYuX2Rpc3QpICsgWyJfZGlzdCIsICJwcm9qZWN0X25hbWUiXSkKKworCitjbGFzcyBQbHVnaW5N
YW5hZ2VyKG9iamVjdCk6CisgICAgIiIiIENvcmUgOnB5OmNsYXNzOmAuUGx1Z2luTWFuYWdlcmAg
Y2xhc3Mgd2hpY2ggbWFuYWdlcyByZWdpc3RyYXRpb24KKyAgICBvZiBwbHVnaW4gb2JqZWN0cyBh
bmQgMTpOIGhvb2sgY2FsbGluZy4KKworICAgIFlvdSBjYW4gcmVnaXN0ZXIgbmV3IGhvb2tzIGJ5
IGNhbGxpbmcgOnB5Om1ldGg6YGFkZF9ob29rc3BlY3MobW9kdWxlX29yX2NsYXNzKQorICAgIDwu
UGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNzPmAuCisgICAgWW91IGNhbiByZWdpc3RlciBwbHVn
aW4gb2JqZWN0cyAod2hpY2ggY29udGFpbiBob29rcykgYnkgY2FsbGluZworICAgIDpweTptZXRo
OmByZWdpc3RlcihwbHVnaW4pIDwuUGx1Z2luTWFuYWdlci5yZWdpc3Rlcj5gLiAgVGhlIDpweTpj
bGFzczpgLlBsdWdpbk1hbmFnZXJgCisgICAgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIHByZWZpeCB0
aGF0IGlzIHNlYXJjaGVkIGZvciBpbiB0aGUgbmFtZXMgb2YgdGhlIGRpY3QKKyAgICBvZiByZWdp
c3RlcmVkIHBsdWdpbiBvYmplY3RzLgorCisgICAgRm9yIGRlYnVnZ2luZyBwdXJwb3NlcyB5b3Ug
Y2FuIGNhbGwgOnB5Om1ldGg6YC5QbHVnaW5NYW5hZ2VyLmVuYWJsZV90cmFjaW5nYAorICAgIHdo
aWNoIHdpbGwgc3Vic2VxdWVudGx5IHNlbmQgZGVidWcgaW5mb3JtYXRpb24gdG8gdGhlIHRyYWNl
IGhlbHBlci4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X25hbWUs
IGltcGxwcmVmaXg9Tm9uZSk6CisgICAgICAgICIiIklmIGBgaW1wbHByZWZpeGBgIGlzIGdpdmVu
IGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB3aWxsIGJlIHJlY29nbml6ZWQgaWYg
dGhlaXIgbmFtZSBtYXRjaGVzIHRoZSBgYGltcGxwcmVmaXhgYC4gIiIiCisgICAgICAgIHNlbGYu
cHJvamVjdF9uYW1lID0gcHJvamVjdF9uYW1lCisgICAgICAgIHNlbGYuX25hbWUycGx1Z2luID0g
e30KKyAgICAgICAgc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzID0ge30KKyAgICAgICAgc2VsZi5f
cGx1Z2luX2Rpc3RpbmZvID0gW10KKyAgICAgICAgc2VsZi50cmFjZSA9IF90cmFjaW5nLlRhZ1Ry
YWNlcigpLmdldCgicGx1Z2lubWFuYWdlIikKKyAgICAgICAgc2VsZi5ob29rID0gX0hvb2tSZWxh
eSgpCisgICAgICAgIGlmIGltcGxwcmVmaXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJTdXBwb3J0IGZvciB0aGUgYGltcGxwcmVmaXhg
IGFyZyBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCAiCisgICAgICAgICAgICAgICAgImJlIHJl
bW92ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZS4gUGxlYXNlIHVzZSBIb29raW1wbE1hcmtlci4i
LAorICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICBz
dGFja2xldmVsPTIsCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2ltcGxwcmVmaXggPSBp
bXBscHJlZml4CisgICAgICAgIHNlbGYuX2lubmVyX2hvb2tleGVjID0gbGFtYmRhIGhvb2ssIG1l
dGhvZHMsIGt3YXJnczogaG9vay5tdWx0aWNhbGwoCisgICAgICAgICAgICBtZXRob2RzLAorICAg
ICAgICAgICAga3dhcmdzLAorICAgICAgICAgICAgZmlyc3RyZXN1bHQ9aG9vay5zcGVjLm9wdHMu
Z2V0KCJmaXJzdHJlc3VsdCIpIGlmIGhvb2suc3BlYyBlbHNlIEZhbHNlLAorICAgICAgICApCisK
KyAgICBkZWYgX2hvb2tleGVjKHNlbGYsIGhvb2ssIG1ldGhvZHMsIGt3YXJncyk6CisgICAgICAg
ICMgY2FsbGVkIGZyb20gYWxsIGhvb2tjYWxsZXIgaW5zdGFuY2VzLgorICAgICAgICAjIGVuYWJs
ZV90cmFjaW5nIHdpbGwgc2V0IGl0cyBvd24gd3JhcHBpbmcgZnVuY3Rpb24gYXQgc2VsZi5faW5u
ZXJfaG9va2V4ZWMKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lubmVyX2hvb2tleGVjKGhvb2ssIG1l
dGhvZHMsIGt3YXJncykKKworICAgIGRlZiByZWdpc3RlcihzZWxmLCBwbHVnaW4sIG5hbWU9Tm9u
ZSk6CisgICAgICAgICIiIiBSZWdpc3RlciBhIHBsdWdpbiBhbmQgcmV0dXJuIGl0cyBjYW5vbmlj
YWwgbmFtZSBvciBgYE5vbmVgYCBpZiB0aGUgbmFtZQorICAgICAgICBpcyBibG9ja2VkIGZyb20g
cmVnaXN0ZXJpbmcuICBSYWlzZSBhIDpweTpjbGFzczpgVmFsdWVFcnJvcmAgaWYgdGhlIHBsdWdp
bgorICAgICAgICBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuICIiIgorICAgICAgICBwbHVnaW5fbmFt
ZSA9IG5hbWUgb3Igc2VsZi5nZXRfY2Fub25pY2FsX25hbWUocGx1Z2luKQorCisgICAgICAgIGlm
IHBsdWdpbl9uYW1lIGluIHNlbGYuX25hbWUycGx1Z2luIG9yIHBsdWdpbiBpbiBzZWxmLl9wbHVn
aW4yaG9va2NhbGxlcnM6CisgICAgICAgICAgICBpZiBzZWxmLl9uYW1lMnBsdWdpbi5nZXQocGx1
Z2luX25hbWUsIC0xKSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiAgIyBibG9ja2Vk
IHBsdWdpbiwgcmV0dXJuIE5vbmUgdG8gaW5kaWNhdGUgbm8gcmVnaXN0cmF0aW9uCisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJQbHVnaW4gYWxyZWFkeSBy
ZWdpc3RlcmVkOiAlcz0lc1xuJXMiCisgICAgICAgICAgICAgICAgJSAocGx1Z2luX25hbWUsIHBs
dWdpbiwgc2VsZi5fbmFtZTJwbHVnaW4pCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBYWFgg
aWYgYW4gZXJyb3IgaGFwcGVucyB3ZSBzaG91bGQgbWFrZSBzdXJlIG5vIHN0YXRlIGhhcyBiZWVu
CisgICAgICAgICMgY2hhbmdlZCBhdCBwb2ludCBvZiByZXR1cm4KKyAgICAgICAgc2VsZi5fbmFt
ZTJwbHVnaW5bcGx1Z2luX25hbWVdID0gcGx1Z2luCisKKyAgICAgICAgIyByZWdpc3RlciBtYXRj
aGluZyBob29rIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcGx1Z2luCisgICAgICAgIHNlbGYuX3Bs
dWdpbjJob29rY2FsbGVyc1twbHVnaW5dID0gaG9va2NhbGxlcnMgPSBbXQorICAgICAgICBmb3Ig
bmFtZSBpbiBkaXIocGx1Z2luKToKKyAgICAgICAgICAgIGhvb2tpbXBsX29wdHMgPSBzZWxmLnBh
cnNlX2hvb2tpbXBsX29wdHMocGx1Z2luLCBuYW1lKQorICAgICAgICAgICAgaWYgaG9va2ltcGxf
b3B0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBub3JtYWxpemVfaG9va2ltcGxfb3B0
cyhob29raW1wbF9vcHRzKQorICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIocGx1Z2lu
LCBuYW1lKQorICAgICAgICAgICAgICAgIGhvb2tpbXBsID0gSG9va0ltcGwocGx1Z2luLCBwbHVn
aW5fbmFtZSwgbWV0aG9kLCBob29raW1wbF9vcHRzKQorICAgICAgICAgICAgICAgIGhvb2sgPSBn
ZXRhdHRyKHNlbGYuaG9vaywgbmFtZSwgTm9uZSkKKyAgICAgICAgICAgICAgICBpZiBob29rIGlz
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGhvb2sgPSBfSG9va0NhbGxlcihuYW1lLCBzZWxm
Ll9ob29rZXhlYykKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLmhvb2ssIG5hbWUs
IGhvb2spCisgICAgICAgICAgICAgICAgZWxpZiBob29rLmhhc19zcGVjKCk6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3ZlcmlmeV9ob29rKGhvb2ssIGhvb2tpbXBsKQorICAgICAgICAgICAg
ICAgICAgICBob29rLl9tYXliZV9hcHBseV9oaXN0b3J5KGhvb2tpbXBsKQorICAgICAgICAgICAg
ICAgIGhvb2suX2FkZF9ob29raW1wbChob29raW1wbCkKKyAgICAgICAgICAgICAgICBob29rY2Fs
bGVycy5hcHBlbmQoaG9vaykKKyAgICAgICAgcmV0dXJuIHBsdWdpbl9uYW1lCisKKyAgICBkZWYg
cGFyc2VfaG9va2ltcGxfb3B0cyhzZWxmLCBwbHVnaW4sIG5hbWUpOgorICAgICAgICBtZXRob2Qg
PSBnZXRhdHRyKHBsdWdpbiwgbmFtZSkKKyAgICAgICAgaWYgbm90IGluc3BlY3QuaXNyb3V0aW5l
KG1ldGhvZCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmVzID0gZ2V0YXR0cihtZXRob2QsIHNlbGYucHJvamVjdF9uYW1lICsgIl9pbXBsIiwgTm9uZSkK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHJlcyA9IHt9CisgICAgICAg
IGlmIHJlcyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UocmVzLCBkaWN0KToKKyAgICAg
ICAgICAgICMgZmFsc2UgcG9zaXRpdmUKKyAgICAgICAgICAgIHJlcyA9IE5vbmUKKyAgICAgICAg
IyBUT0RPOiByZW1vdmUgd2hlbiB3ZSBkcm9wIGltcGxwcmVmaXggaW4gMS4wCisgICAgICAgIGVs
aWYgcmVzIGlzIE5vbmUgYW5kIHNlbGYuX2ltcGxwcmVmaXggYW5kIG5hbWUuc3RhcnRzd2l0aChz
ZWxmLl9pbXBscHJlZml4KToKKyAgICAgICAgICAgIF93YXJuX2Zvcl9mdW5jdGlvbigKKyAgICAg
ICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgICJUaGUg
YGltcGxwcmVmaXhgIHN5c3RlbSBpcyBkZXByZWNhdGVkIHBsZWFzZSBkZWNvcmF0ZSAiCisgICAg
ICAgICAgICAgICAgICAgICJ0aGlzIGZ1bmN0aW9uIHVzaW5nIGFuIGluc3RhbmNlIG9mIEhvb2tp
bXBsTWFya2VyLiIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIG1ldGhvZCwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJlcyA9IHt9CisgICAgICAgIHJldHVybiByZXMK
KworICAgIGRlZiB1bnJlZ2lzdGVyKHNlbGYsIHBsdWdpbj1Ob25lLCBuYW1lPU5vbmUpOgorICAg
ICAgICAiIiIgdW5yZWdpc3RlciBhIHBsdWdpbiBvYmplY3QgYW5kIGFsbCBpdHMgY29udGFpbmVk
IGhvb2sgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGZyb20gaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1
cmVzLiAiIiIKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgYXNzZXJ0IHBs
dWdpbiBpcyBub3QgTm9uZSwgIm9uZSBvZiBuYW1lIG9yIHBsdWdpbiBuZWVkcyB0byBiZSBzcGVj
aWZpZWQiCisgICAgICAgICAgICBuYW1lID0gc2VsZi5nZXRfbmFtZShwbHVnaW4pCisKKyAgICAg
ICAgaWYgcGx1Z2luIGlzIE5vbmU6CisgICAgICAgICAgICBwbHVnaW4gPSBzZWxmLmdldF9wbHVn
aW4obmFtZSkKKworICAgICAgICAjIGlmIHNlbGYuX25hbWUycGx1Z2luW25hbWVdID09IE5vbmUg
cmVnaXN0cmF0aW9uIHdhcyBibG9ja2VkOiBpZ25vcmUKKyAgICAgICAgaWYgc2VsZi5fbmFtZTJw
bHVnaW4uZ2V0KG5hbWUpOgorICAgICAgICAgICAgZGVsIHNlbGYuX25hbWUycGx1Z2luW25hbWVd
CisKKyAgICAgICAgZm9yIGhvb2tjYWxsZXIgaW4gc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzLnBv
cChwbHVnaW4sIFtdKToKKyAgICAgICAgICAgIGhvb2tjYWxsZXIuX3JlbW92ZV9wbHVnaW4ocGx1
Z2luKQorCisgICAgICAgIHJldHVybiBwbHVnaW4KKworICAgIGRlZiBzZXRfYmxvY2tlZChzZWxm
LCBuYW1lKToKKyAgICAgICAgIiIiIGJsb2NrIHJlZ2lzdHJhdGlvbnMgb2YgdGhlIGdpdmVuIG5h
bWUsIHVucmVnaXN0ZXIgaWYgYWxyZWFkeSByZWdpc3RlcmVkLiAiIiIKKyAgICAgICAgc2VsZi51
bnJlZ2lzdGVyKG5hbWU9bmFtZSkKKyAgICAgICAgc2VsZi5fbmFtZTJwbHVnaW5bbmFtZV0gPSBO
b25lCisKKyAgICBkZWYgaXNfYmxvY2tlZChzZWxmLCBuYW1lKToKKyAgICAgICAgIiIiIHJldHVy
biBgYFRydWVgYCBpZiB0aGUgZ2l2ZW4gcGx1Z2luIG5hbWUgaXMgYmxvY2tlZC4gIiIiCisgICAg
ICAgIHJldHVybiBuYW1lIGluIHNlbGYuX25hbWUycGx1Z2luIGFuZCBzZWxmLl9uYW1lMnBsdWdp
bltuYW1lXSBpcyBOb25lCisKKyAgICBkZWYgYWRkX2hvb2tzcGVjcyhzZWxmLCBtb2R1bGVfb3Jf
Y2xhc3MpOgorICAgICAgICAiIiIgYWRkIG5ldyBob29rIHNwZWNpZmljYXRpb25zIGRlZmluZWQg
aW4gdGhlIGdpdmVuIGBgbW9kdWxlX29yX2NsYXNzYGAuCisgICAgICAgIEZ1bmN0aW9ucyBhcmUg
cmVjb2duaXplZCBpZiB0aGV5IGhhdmUgYmVlbiBkZWNvcmF0ZWQgYWNjb3JkaW5nbHkuICIiIgor
ICAgICAgICBuYW1lcyA9IFtdCisgICAgICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGVfb3JfY2xh
c3MpOgorICAgICAgICAgICAgc3BlY19vcHRzID0gc2VsZi5wYXJzZV9ob29rc3BlY19vcHRzKG1v
ZHVsZV9vcl9jbGFzcywgbmFtZSkKKyAgICAgICAgICAgIGlmIHNwZWNfb3B0cyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICBoYyA9IGdldGF0dHIoc2VsZi5ob29rLCBuYW1lLCBOb25lKQor
ICAgICAgICAgICAgICAgIGlmIGhjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGhjID0g
X0hvb2tDYWxsZXIobmFtZSwgc2VsZi5faG9va2V4ZWMsIG1vZHVsZV9vcl9jbGFzcywgc3BlY19v
cHRzKQorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuaG9vaywgbmFtZSwgaGMpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbHVnaW5zIHJlZ2lz
dGVyZWQgdGhpcyBob29rIHdpdGhvdXQga25vd2luZyB0aGUgc3BlYworICAgICAgICAgICAgICAg
ICAgICBoYy5zZXRfc3BlY2lmaWNhdGlvbihtb2R1bGVfb3JfY2xhc3MsIHNwZWNfb3B0cykKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIGhvb2tmdW5jdGlvbiBpbiBoYy5nZXRfaG9va2ltcGxzKCk6
CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl92ZXJpZnlfaG9vayhoYywgaG9va2Z1bmN0
aW9uKQorICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChuYW1lKQorCisgICAgICAgIGlmIG5v
dCBuYW1lczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAg
ImRpZCBub3QgZmluZCBhbnkgJXIgaG9va3MgaW4gJXIiICUgKHNlbGYucHJvamVjdF9uYW1lLCBt
b2R1bGVfb3JfY2xhc3MpCisgICAgICAgICAgICApCisKKyAgICBkZWYgcGFyc2VfaG9va3NwZWNf
b3B0cyhzZWxmLCBtb2R1bGVfb3JfY2xhc3MsIG5hbWUpOgorICAgICAgICBtZXRob2QgPSBnZXRh
dHRyKG1vZHVsZV9vcl9jbGFzcywgbmFtZSkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIobWV0aG9k
LCBzZWxmLnByb2plY3RfbmFtZSArICJfc3BlYyIsIE5vbmUpCisKKyAgICBkZWYgZ2V0X3BsdWdp
bnMoc2VsZik6CisgICAgICAgICIiIiByZXR1cm4gdGhlIHNldCBvZiByZWdpc3RlcmVkIHBsdWdp
bnMuICIiIgorICAgICAgICByZXR1cm4gc2V0KHNlbGYuX3BsdWdpbjJob29rY2FsbGVycykKKwor
ICAgIGRlZiBpc19yZWdpc3RlcmVkKHNlbGYsIHBsdWdpbik6CisgICAgICAgICIiIiBSZXR1cm4g
YGBUcnVlYGAgaWYgdGhlIHBsdWdpbiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuICIiIgorICAgICAg
ICByZXR1cm4gcGx1Z2luIGluIHNlbGYuX3BsdWdpbjJob29rY2FsbGVycworCisgICAgZGVmIGdl
dF9jYW5vbmljYWxfbmFtZShzZWxmLCBwbHVnaW4pOgorICAgICAgICAiIiIgUmV0dXJuIGNhbm9u
aWNhbCBuYW1lIGZvciBhIHBsdWdpbiBvYmplY3QuIE5vdGUgdGhhdCBhIHBsdWdpbgorICAgICAg
ICBtYXkgYmUgcmVnaXN0ZXJlZCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHdoaWNoIHdhcyBzcGVj
aWZpZWQKKyAgICAgICAgYnkgdGhlIGNhbGxlciBvZiA6cHk6bWV0aDpgcmVnaXN0ZXIocGx1Z2lu
LCBuYW1lKSA8LlBsdWdpbk1hbmFnZXIucmVnaXN0ZXI+YC4KKyAgICAgICAgVG8gb2J0YWluIHRo
ZSBuYW1lIG9mIGFuIHJlZ2lzdGVyZWQgcGx1Z2luIHVzZSA6cHk6bWV0aDpgZ2V0X25hbWUocGx1
Z2luKQorICAgICAgICA8LlBsdWdpbk1hbmFnZXIuZ2V0X25hbWU+YCBpbnN0ZWFkLiIiIgorICAg
ICAgICByZXR1cm4gZ2V0YXR0cihwbHVnaW4sICJfX25hbWVfXyIsIE5vbmUpIG9yIHN0cihpZChw
bHVnaW4pKQorCisgICAgZGVmIGdldF9wbHVnaW4oc2VsZiwgbmFtZSk6CisgICAgICAgICIiIiBS
ZXR1cm4gYSBwbHVnaW4gb3IgYGBOb25lYGAgZm9yIHRoZSBnaXZlbiBuYW1lLiAiIiIKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX25hbWUycGx1Z2luLmdldChuYW1lKQorCisgICAgZGVmIGhhc19wbHVn
aW4oc2VsZiwgbmFtZSk6CisgICAgICAgICIiIiBSZXR1cm4gYGBUcnVlYGAgaWYgYSBwbHVnaW4g
d2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkLiAiIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuZ2V0X3BsdWdpbihuYW1lKSBpcyBub3QgTm9uZQorCisgICAgZGVmIGdldF9uYW1lKHNlbGYs
IHBsdWdpbik6CisgICAgICAgICIiIiBSZXR1cm4gbmFtZSBmb3IgcmVnaXN0ZXJlZCBwbHVnaW4g
b3IgYGBOb25lYGAgaWYgbm90IHJlZ2lzdGVyZWQuICIiIgorICAgICAgICBmb3IgbmFtZSwgdmFs
IGluIHNlbGYuX25hbWUycGx1Z2luLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwbHVnaW4gPT0g
dmFsOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBkZWYgX3ZlcmlmeV9ob29r
KHNlbGYsIGhvb2ssIGhvb2tpbXBsKToKKyAgICAgICAgaWYgaG9vay5pc19oaXN0b3JpYygpIGFu
ZCBob29raW1wbC5ob29rd3JhcHBlcjoKKyAgICAgICAgICAgIHJhaXNlIFBsdWdpblZhbGlkYXRp
b25FcnJvcigKKyAgICAgICAgICAgICAgICBob29raW1wbC5wbHVnaW4sCisgICAgICAgICAgICAg
ICAgIlBsdWdpbiAlclxuaG9vayAlclxuaGlzdG9yaWMgaW5jb21wYXRpYmxlIHRvIGhvb2t3cmFw
cGVyIgorICAgICAgICAgICAgICAgICUgKGhvb2tpbXBsLnBsdWdpbl9uYW1lLCBob29rLm5hbWUp
LAorICAgICAgICAgICAgKQorICAgICAgICBpZiBob29rLnNwZWMud2Fybl9vbl9pbXBsOgorICAg
ICAgICAgICAgX3dhcm5fZm9yX2Z1bmN0aW9uKGhvb2suc3BlYy53YXJuX29uX2ltcGwsIGhvb2tp
bXBsLmZ1bmN0aW9uKQorICAgICAgICAjIHBvc2l0aW9uYWwgYXJnIGNoZWNraW5nCisgICAgICAg
IG5vdGluc3BlYyA9IHNldChob29raW1wbC5hcmduYW1lcykgLSBzZXQoaG9vay5zcGVjLmFyZ25h
bWVzKQorICAgICAgICBpZiBub3RpbnNwZWM6CisgICAgICAgICAgICByYWlzZSBQbHVnaW5WYWxp
ZGF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgaG9va2ltcGwucGx1Z2luLAorICAgICAgICAg
ICAgICAgICJQbHVnaW4gJXIgZm9yIGhvb2sgJXJcbmhvb2tpbXBsIGRlZmluaXRpb246ICVzXG4i
CisgICAgICAgICAgICAgICAgIkFyZ3VtZW50KHMpICVzIGFyZSBkZWNsYXJlZCBpbiB0aGUgaG9v
a2ltcGwgYnV0ICIKKyAgICAgICAgICAgICAgICAiY2FuIG5vdCBiZSBmb3VuZCBpbiB0aGUgaG9v
a3NwZWMiCisgICAgICAgICAgICAgICAgJSAoCisgICAgICAgICAgICAgICAgICAgIGhvb2tpbXBs
LnBsdWdpbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICBob29rLm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgIF9mb3JtYXRkZWYoaG9va2ltcGwuZnVuY3Rpb24pLAorICAgICAgICAgICAgICAg
ICAgICBub3RpbnNwZWMsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAg
IGRlZiBjaGVja19wZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiIgVmVyaWZ5IHRoYXQgYWxsIGhv
b2tzIHdoaWNoIGhhdmUgbm90IGJlZW4gdmVyaWZpZWQgYWdhaW5zdAorICAgICAgICBhIGhvb2sg
c3BlY2lmaWNhdGlvbiBhcmUgb3B0aW9uYWwsIG90aGVyd2lzZSByYWlzZSA6cHk6Y2xhc3M6YC5Q
bHVnaW5WYWxpZGF0aW9uRXJyb3JgLiIiIgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmhvb2su
X19kaWN0X186CisgICAgICAgICAgICBpZiBuYW1lWzBdICE9ICJfIjoKKyAgICAgICAgICAgICAg
ICBob29rID0gZ2V0YXR0cihzZWxmLmhvb2ssIG5hbWUpCisgICAgICAgICAgICAgICAgaWYgbm90
IGhvb2suaGFzX3NwZWMoKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGhvb2tpbXBsIGluIGhv
b2suZ2V0X2hvb2tpbXBscygpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhvb2tp
bXBsLm9wdGlvbmFsaG9vazoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQbHVn
aW5WYWxpZGF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tp
bXBsLnBsdWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gaG9v
ayAlciBpbiBwbHVnaW4gJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG5h
bWUsIGhvb2tpbXBsLnBsdWdpbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisg
ICAgZGVmIGxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cyhzZWxmLCBncm91cCwgbmFtZT1Ob25l
KToKKyAgICAgICAgIiIiIExvYWQgbW9kdWxlcyBmcm9tIHF1ZXJ5aW5nIHRoZSBzcGVjaWZpZWQg
c2V0dXB0b29scyBgYGdyb3VwYGAuCisKKyAgICAgICAgOnBhcmFtIHN0ciBncm91cDogZW50cnkg
cG9pbnQgZ3JvdXAgdG8gbG9hZCBwbHVnaW5zCisgICAgICAgIDpwYXJhbSBzdHIgbmFtZTogaWYg
Z2l2ZW4sIGxvYWRzIG9ubHkgcGx1Z2lucyB3aXRoIHRoZSBnaXZlbiBgYG5hbWVgYC4KKyAgICAg
ICAgOnJ0eXBlOiBpbnQKKyAgICAgICAgOnJldHVybjogcmV0dXJuIHRoZSBudW1iZXIgb2YgbG9h
ZGVkIHBsdWdpbnMgYnkgdGhpcyBjYWxsLgorICAgICAgICAiIiIKKyAgICAgICAgY291bnQgPSAw
CisgICAgICAgIGZvciBkaXN0IGluIGltcG9ydGxpYl9tZXRhZGF0YS5kaXN0cmlidXRpb25zKCk6
CisgICAgICAgICAgICBmb3IgZXAgaW4gZGlzdC5lbnRyeV9wb2ludHM6CisgICAgICAgICAgICAg
ICAgaWYgKAorICAgICAgICAgICAgICAgICAgICBlcC5ncm91cCAhPSBncm91cAorICAgICAgICAg
ICAgICAgICAgICBvciAobmFtZSBpcyBub3QgTm9uZSBhbmQgZXAubmFtZSAhPSBuYW1lKQorICAg
ICAgICAgICAgICAgICAgICAjIGFscmVhZHkgcmVnaXN0ZXJlZAorICAgICAgICAgICAgICAgICAg
ICBvciBzZWxmLmdldF9wbHVnaW4oZXAubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgb3Igc2Vs
Zi5pc19ibG9ja2VkKGVwLm5hbWUpCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwbHVnaW4gPSBlcC5sb2FkKCkKKyAgICAg
ICAgICAgICAgICBzZWxmLnJlZ2lzdGVyKHBsdWdpbiwgbmFtZT1lcC5uYW1lKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3BsdWdpbl9kaXN0aW5mby5hcHBlbmQoKHBsdWdpbiwgRGlzdEZhY2FkZShk
aXN0KSkpCisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICByZXR1cm4gY291bnQK
KworICAgIGRlZiBsaXN0X3BsdWdpbl9kaXN0aW5mbyhzZWxmKToKKyAgICAgICAgIiIiIHJldHVy
biBsaXN0IG9mIGRpc3RpbmZvL3BsdWdpbiB0dXBsZXMgZm9yIGFsbCBzZXR1cHRvb2xzIHJlZ2lz
dGVyZWQKKyAgICAgICAgcGx1Z2lucy4gIiIiCisgICAgICAgIHJldHVybiBsaXN0KHNlbGYuX3Bs
dWdpbl9kaXN0aW5mbykKKworICAgIGRlZiBsaXN0X25hbWVfcGx1Z2luKHNlbGYpOgorICAgICAg
ICAiIiIgcmV0dXJuIGxpc3Qgb2YgbmFtZS9wbHVnaW4gcGFpcnMuICIiIgorICAgICAgICByZXR1
cm4gbGlzdChzZWxmLl9uYW1lMnBsdWdpbi5pdGVtcygpKQorCisgICAgZGVmIGdldF9ob29rY2Fs
bGVycyhzZWxmLCBwbHVnaW4pOgorICAgICAgICAiIiIgZ2V0IGFsbCBob29rIGNhbGxlcnMgZm9y
IHRoZSBzcGVjaWZpZWQgcGx1Z2luLiAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BsdWdpbjJo
b29rY2FsbGVycy5nZXQocGx1Z2luKQorCisgICAgZGVmIGFkZF9ob29rY2FsbF9tb25pdG9yaW5n
KHNlbGYsIGJlZm9yZSwgYWZ0ZXIpOgorICAgICAgICAiIiIgYWRkIGJlZm9yZS9hZnRlciB0cmFj
aW5nIGZ1bmN0aW9ucyBmb3IgYWxsIGhvb2tzCisgICAgICAgIGFuZCByZXR1cm4gYW4gdW5kbyBm
dW5jdGlvbiB3aGljaCwgd2hlbiBjYWxsZWQsCisgICAgICAgIHdpbGwgcmVtb3ZlIHRoZSBhZGRl
ZCB0cmFjZXJzLgorCisgICAgICAgIGBgYmVmb3JlKGhvb2tfbmFtZSwgaG9va19pbXBscywga3dh
cmdzKWBgIHdpbGwgYmUgY2FsbGVkIGFoZWFkCisgICAgICAgIG9mIGFsbCBob29rIGNhbGxzIGFu
ZCByZWNlaXZlIGEgaG9va2NhbGxlciBpbnN0YW5jZSwgYSBsaXN0CisgICAgICAgIG9mIEhvb2tJ
bXBsIGluc3RhbmNlcyBhbmQgdGhlIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgaG9vayBjYWxs
LgorCisgICAgICAgIGBgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lLCBob29rX2ltcGxzLCBrd2Fy
Z3MpYGAgcmVjZWl2ZXMgdGhlCisgICAgICAgIHNhbWUgYXJndW1lbnRzIGFzIGBgYmVmb3JlYGAg
YnV0IGFsc28gYSA6cHk6Y2xhc3M6YHBsdWdneS5jYWxsZXJzLl9SZXN1bHRgIG9iamVjdAorICAg
ICAgICB3aGljaCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgdGhlIG92ZXJhbGwgaG9vayBjYWxs
LgorICAgICAgICAiIiIKKyAgICAgICAgb2xkY2FsbCA9IHNlbGYuX2lubmVyX2hvb2tleGVjCisK
KyAgICAgICAgZGVmIHRyYWNlZF9ob29rZXhlYyhob29rLCBob29rX2ltcGxzLCBrd2FyZ3MpOgor
ICAgICAgICAgICAgYmVmb3JlKGhvb2submFtZSwgaG9va19pbXBscywga3dhcmdzKQorICAgICAg
ICAgICAgb3V0Y29tZSA9IF9SZXN1bHQuZnJvbV9jYWxsKGxhbWJkYTogb2xkY2FsbChob29rLCBo
b29rX2ltcGxzLCBrd2FyZ3MpKQorICAgICAgICAgICAgYWZ0ZXIob3V0Y29tZSwgaG9vay5uYW1l
LCBob29rX2ltcGxzLCBrd2FyZ3MpCisgICAgICAgICAgICByZXR1cm4gb3V0Y29tZS5nZXRfcmVz
dWx0KCkKKworICAgICAgICBzZWxmLl9pbm5lcl9ob29rZXhlYyA9IHRyYWNlZF9ob29rZXhlYwor
CisgICAgICAgIGRlZiB1bmRvKCk6CisgICAgICAgICAgICBzZWxmLl9pbm5lcl9ob29rZXhlYyA9
IG9sZGNhbGwKKworICAgICAgICByZXR1cm4gdW5kbworCisgICAgZGVmIGVuYWJsZV90cmFjaW5n
KHNlbGYpOgorICAgICAgICAiIiIgZW5hYmxlIHRyYWNpbmcgb2YgaG9vayBjYWxscyBhbmQgcmV0
dXJuIGFuIHVuZG8gZnVuY3Rpb24uICIiIgorICAgICAgICBob29rdHJhY2UgPSBzZWxmLnRyYWNl
LnJvb3QuZ2V0KCJob29rIikKKworICAgICAgICBkZWYgYmVmb3JlKGhvb2tfbmFtZSwgbWV0aG9k
cywga3dhcmdzKToKKyAgICAgICAgICAgIGhvb2t0cmFjZS5yb290LmluZGVudCArPSAxCisgICAg
ICAgICAgICBob29rdHJhY2UoaG9va19uYW1lLCBrd2FyZ3MpCisKKyAgICAgICAgZGVmIGFmdGVy
KG91dGNvbWUsIGhvb2tfbmFtZSwgbWV0aG9kcywga3dhcmdzKToKKyAgICAgICAgICAgIGlmIG91
dGNvbWUuZXhjaW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGhvb2t0cmFjZSgiZmluaXNo
IiwgaG9va19uYW1lLCAiLS0+Iiwgb3V0Y29tZS5nZXRfcmVzdWx0KCkpCisgICAgICAgICAgICBo
b29rdHJhY2Uucm9vdC5pbmRlbnQgLT0gMQorCisgICAgICAgIHJldHVybiBzZWxmLmFkZF9ob29r
Y2FsbF9tb25pdG9yaW5nKGJlZm9yZSwgYWZ0ZXIpCisKKyAgICBkZWYgc3Vic2V0X2hvb2tfY2Fs
bGVyKHNlbGYsIG5hbWUsIHJlbW92ZV9wbHVnaW5zKToKKyAgICAgICAgIiIiIFJldHVybiBhIG5l
dyA6cHk6Y2xhc3M6YC5ob29rcy5fSG9va0NhbGxlcmAgaW5zdGFuY2UgZm9yIHRoZSBuYW1lZCBt
ZXRob2QKKyAgICAgICAgd2hpY2ggbWFuYWdlcyBjYWxscyB0byBhbGwgcmVnaXN0ZXJlZCBwbHVn
aW5zIGV4Y2VwdCB0aGUKKyAgICAgICAgb25lcyBmcm9tIHJlbW92ZV9wbHVnaW5zLiAiIiIKKyAg
ICAgICAgb3JpZyA9IGdldGF0dHIoc2VsZi5ob29rLCBuYW1lKQorICAgICAgICBwbHVnaW5zX3Rv
X3JlbW92ZSA9IFtwbHVnIGZvciBwbHVnIGluIHJlbW92ZV9wbHVnaW5zIGlmIGhhc2F0dHIocGx1
ZywgbmFtZSldCisgICAgICAgIGlmIHBsdWdpbnNfdG9fcmVtb3ZlOgorICAgICAgICAgICAgaGMg
PSBfSG9va0NhbGxlcigKKyAgICAgICAgICAgICAgICBvcmlnLm5hbWUsIG9yaWcuX2hvb2tleGVj
LCBvcmlnLnNwZWMubmFtZXNwYWNlLCBvcmlnLnNwZWMub3B0cworICAgICAgICAgICAgKQorICAg
ICAgICAgICAgZm9yIGhvb2tpbXBsIGluIG9yaWcuZ2V0X2hvb2tpbXBscygpOgorICAgICAgICAg
ICAgICAgIHBsdWdpbiA9IGhvb2tpbXBsLnBsdWdpbgorICAgICAgICAgICAgICAgIGlmIHBsdWdp
biBub3QgaW4gcGx1Z2luc190b19yZW1vdmU6CisgICAgICAgICAgICAgICAgICAgIGhjLl9hZGRf
aG9va2ltcGwoaG9va2ltcGwpCisgICAgICAgICAgICAgICAgICAgICMgd2UgYWxzbyBrZWVwIHRy
YWNrIG9mIHRoaXMgaG9vayBjYWxsZXIgc28gaXQKKyAgICAgICAgICAgICAgICAgICAgIyBnZXRz
IHByb3Blcmx5IHJlbW92ZWQgb24gcGx1Z2luIHVucmVnaXN0cmF0aW9uCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BsdWdpbjJob29rY2FsbGVycy5zZXRkZWZhdWx0KHBsdWdpbiwgW10pLmFw
cGVuZChoYykKKyAgICAgICAgICAgIHJldHVybiBoYworICAgICAgICByZXR1cm4gb3JpZworCisK
K2lmIGhhc2F0dHIoaW5zcGVjdCwgInNpZ25hdHVyZSIpOgorCisgICAgZGVmIF9mb3JtYXRkZWYo
ZnVuYyk6CisgICAgICAgIHJldHVybiAiJXMlcyIgJSAoZnVuYy5fX25hbWVfXywgc3RyKGluc3Bl
Y3Quc2lnbmF0dXJlKGZ1bmMpKSkKKworCitlbHNlOgorCisgICAgZGVmIF9mb3JtYXRkZWYoZnVu
Yyk6CisgICAgICAgIHJldHVybiAiJXMlcyIgJSAoCisgICAgICAgICAgICBmdW5jLl9fbmFtZV9f
LAorICAgICAgICAgICAgaW5zcGVjdC5mb3JtYXRhcmdzcGVjKCppbnNwZWN0LmdldGFyZ3NwZWMo
ZnVuYykpLAorICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2JlbmNo
bWFyay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvYmVuY2htYXJrLnB5CmluZGV4IDVhOTEzZTlk
NDE4ZC4uYWE4ZGU5MjkxMWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2JlbmNo
bWFyay5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2JlbmNobWFyay5weQpAQCAtMiw4ICsy
LDkgQEAKIEJlbmNobWFya2luZyBhbmQgcGVyZm9ybWFuY2UgdGVzdHMuCiAiIiIKIGltcG9ydCBw
eXRlc3QKLWZyb20gcGx1Z2d5IGltcG9ydCAoX211bHRpY2FsbCwgX2xlZ2FjeW11bHRpY2FsbCwg
SG9va0ltcGwsIEhvb2tzcGVjTWFya2VyLAotICAgICAgICAgICAgICAgICAgICBIb29raW1wbE1h
cmtlcikKK2Zyb20gcGx1Z2d5IGltcG9ydCBIb29rc3BlY01hcmtlciwgSG9va2ltcGxNYXJrZXIK
K2Zyb20gcGx1Z2d5Lmhvb2tzIGltcG9ydCBIb29rSW1wbAorZnJvbSBwbHVnZ3kuY2FsbGVycyBp
bXBvcnQgX211bHRpY2FsbCwgX2xlZ2FjeW11bHRpY2FsbAogCiBob29rc3BlYyA9IEhvb2tzcGVj
TWFya2VyKCJleGFtcGxlIikKIGhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoImV4YW1wbGUiKQpA
QCAtMTQsNyArMTUsNyBAQCBkZWYgTUMobWV0aG9kcywga3dhcmdzLCBjYWxsZXJ0eXBlLCBmaXJz
dHJlc3VsdD1GYWxzZSk6CiAgICAgZm9yIG1ldGhvZCBpbiBtZXRob2RzOgogICAgICAgICBmID0g
SG9va0ltcGwoTm9uZSwgIjx0ZW1wPiIsIG1ldGhvZCwgbWV0aG9kLmV4YW1wbGVfaW1wbCkKICAg
ICAgICAgaG9va2Z1bmNzLmFwcGVuZChmKQotICAgIHJldHVybiBjYWxsZXJ0eXBlKGhvb2tmdW5j
cywga3dhcmdzLCB7ImZpcnN0cmVzdWx0IjogZmlyc3RyZXN1bHR9KQorICAgIHJldHVybiBjYWxs
ZXJ0eXBlKGhvb2tmdW5jcywga3dhcmdzLCBmaXJzdHJlc3VsdD1maXJzdHJlc3VsdCkKIAogCiBA
aG9va2ltcGwKQEAgLTI3LDMyICsyOCwyMyBAQCBkZWYgd3JhcHBlcihhcmcxLCBhcmcyLCBhcmcz
KToKICAgICB5aWVsZAogCiAKLUBweXRlc3QuZml4dHVyZSgKLSAgICBwYXJhbXM9WzEwLCAxMDBd
LAotICAgIGlkcz0iaG9va3M9e30iLmZvcm1hdCwKLSkKK0BweXRlc3QuZml4dHVyZShwYXJhbXM9
WzEwLCAxMDBdLCBpZHM9Imhvb2tzPXt9Ii5mb3JtYXQpCiBkZWYgaG9va3MocmVxdWVzdCk6CiAg
ICAgcmV0dXJuIFtob29rIGZvciBpIGluIHJhbmdlKHJlcXVlc3QucGFyYW0pXQogCiAKLUBweXRl
c3QuZml4dHVyZSgKLSAgICBwYXJhbXM9WzEwLCAxMDBdLAotICAgIGlkcz0id3JhcHBlcnM9e30i
LmZvcm1hdCwKLSkKK0BweXRlc3QuZml4dHVyZShwYXJhbXM9WzEwLCAxMDBdLCBpZHM9IndyYXBw
ZXJzPXt9Ii5mb3JtYXQpCiBkZWYgd3JhcHBlcnMocmVxdWVzdCk6CiAgICAgcmV0dXJuIFt3cmFw
cGVyIGZvciBpIGluIHJhbmdlKHJlcXVlc3QucGFyYW0pXQogCiAKLUBweXRlc3QuZml4dHVyZSgK
LSAgICBwYXJhbXM9W19tdWx0aWNhbGwsIF9sZWdhY3ltdWx0aWNhbGxdLAotICAgIGlkcz1sYW1i
ZGEgaXRlbTogaXRlbS5fX25hbWVfXwotKQorQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bX211bHRp
Y2FsbCwgX2xlZ2FjeW11bHRpY2FsbF0sIGlkcz1sYW1iZGEgaXRlbTogaXRlbS5fX25hbWVfXykK
IGRlZiBjYWxsZXJ0eXBlKHJlcXVlc3QpOgogICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCiAKIAog
ZGVmIGlubmVyX2V4ZWMobWV0aG9kcywgY2FsbGVydHlwZSk6Ci0gICAgcmV0dXJuIE1DKG1ldGhv
ZHMsIHsnYXJnMSc6IDEsICdhcmcyJzogMiwgJ2FyZzMnOiAzfSwgY2FsbGVydHlwZSkKKyAgICBy
ZXR1cm4gTUMobWV0aG9kcywgeyJhcmcxIjogMSwgImFyZzIiOiAyLCAiYXJnMyI6IDN9LCBjYWxs
ZXJ0eXBlKQogCiAKIGRlZiB0ZXN0X2hvb2tfYW5kX3dyYXBwZXJzX3NwZWVkKGJlbmNobWFyaywg
aG9va3MsIHdyYXBwZXJzLCBjYWxsZXJ0eXBlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rl
c3RpbmcvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2NvbmZ0ZXN0LnB5CmluZGV4
IDNkNjFhMzQ5Yzg4Yy4uZTQ0NjY3ZWY1ZjFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0
aW5nL2NvbmZ0ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvY29uZnRlc3QucHkKQEAg
LTIsMTcgKzIsMTIgQEAgaW1wb3J0IHB5dGVzdAogCiAKIEBweXRlc3QuZml4dHVyZSgKLSAgICBw
YXJhbXM9WwotICAgICAgICBsYW1iZGEgc3BlYzogc3BlYywKLSAgICAgICAgbGFtYmRhIHNwZWM6
IHNwZWMoKQotICAgIF0sCi0gICAgaWRzPVsKLSAgICAgICAgInNwZWMtaXMtY2xhc3MiLAotICAg
ICAgICAic3BlYy1pcy1pbnN0YW5jZSIKLSAgICBdLAorICAgIHBhcmFtcz1bbGFtYmRhIHNwZWM6
IHNwZWMsIGxhbWJkYSBzcGVjOiBzcGVjKCldLAorICAgIGlkcz1bInNwZWMtaXMtY2xhc3MiLCAi
c3BlYy1pcy1pbnN0YW5jZSJdLAogKQogZGVmIGhlX3BtKHJlcXVlc3QsIHBtKToKICAgICBmcm9t
IHBsdWdneSBpbXBvcnQgSG9va3NwZWNNYXJrZXIKKwogICAgIGhvb2tzcGVjID0gSG9va3NwZWNN
YXJrZXIoImV4YW1wbGUiKQogCiAgICAgY2xhc3MgSG9va3Mob2JqZWN0KToKQEAgLTI3LDQgKzIy
LDUgQEAgZGVmIGhlX3BtKHJlcXVlc3QsIHBtKToKIEBweXRlc3QuZml4dHVyZQogZGVmIHBtKCk6
CiAgICAgZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIKKwogICAgIHJldHVybiBQbHVn
aW5NYW5hZ2VyKCJleGFtcGxlIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVz
dF9kZXByZWNhdGlvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfZGVwcmVjYXRpb25z
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzE1MTkyMWI2Njg1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2RlcHJlY2F0aW9u
cy5weQpAQCAtMCwwICsxLDU0IEBACisiIiIKK0RlcHJlY2F0aW9uIHdhcm5pbmdzIHRlc3Rpbmcg
cm91bmR1cC4KKyIiIgoraW1wb3J0IHB5dGVzdAorZnJvbSBwbHVnZ3kuY2FsbGVycyBpbXBvcnQg
X1Jlc3VsdAorZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIsIEhvb2tpbXBsTWFya2Vy
LCBIb29rc3BlY01hcmtlcgorCitob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxlIikK
K2hvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoImV4YW1wbGUiKQorCisKK2RlZiB0ZXN0X3Jlc3Vs
dF9kZXByZWNhdGVkKCk6CisgICAgciA9IF9SZXN1bHQoMTAsIE5vbmUpCisgICAgd2l0aCBweXRl
c3QuZGVwcmVjYXRlZF9jYWxsKCk6CisgICAgICAgIGFzc2VydCByLnJlc3VsdCA9PSAxMAorCisK
K2RlZiB0ZXN0X2ltcGxwcmVmaXhfZGVwcmVjYXRlZCgpOgorICAgIHdpdGggcHl0ZXN0LmRlcHJl
Y2F0ZWRfY2FsbCgpOgorICAgICAgICBwbSA9IFBsdWdpbk1hbmFnZXIoImJsYWgiLCBpbXBscHJl
Zml4PSJibGFoXyIpCisKKyAgICBjbGFzcyBQbHVnaW46CisgICAgICAgIGRlZiBibGFoX215aG9v
ayhzZWxmLCBhcmcxKToKKyAgICAgICAgICAgIHJldHVybiBhcmcxCisKKyAgICB3aXRoIHB5dGVz
dC5kZXByZWNhdGVkX2NhbGwoKToKKyAgICAgICAgcG0ucmVnaXN0ZXIoUGx1Z2luKCkpCisKKwor
ZGVmIHRlc3RfY2FsbGhpc3RvcmljX3Byb2NfZGVwcmVjYXRlZChwbSk6CisgICAgIiIiYGBwcm9j
YGAga3dhcmcgdG8gYFBsdWdpbk1hbmFuZ2VyLmNhbGxfaGlzdG9yaWMoKWAgaXMgbm93IG9mZmlj
aWFsbHkKKyAgICBkZXByZWNhdGVkLgorICAgICIiIgorCisgICAgY2xhc3MgUDEob2JqZWN0KToK
KyAgICAgICAgQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCisgICAgICAgIEBob29raW1wbAorICAg
ICAgICBkZWYgbShzZWxmLCB4KToKKyAgICAgICAgICAgIHBhc3MKKworICAgIHAxID0gUDEoKQor
ICAgIHBtLmFkZF9ob29rc3BlY3MocDEpCisgICAgcG0ucmVnaXN0ZXIocDEpCisgICAgd2l0aCBw
eXRlc3QuZGVwcmVjYXRlZF9jYWxsKCk6CisgICAgICAgIHBtLmhvb2subS5jYWxsX2hpc3Rvcmlj
KGt3YXJncz1kaWN0KHg9MTApLCBwcm9jPWxhbWJkYSByZXM6IHJlcykKKworCitkZWYgdGVzdF9t
dWx0aWNhbGxfZGVwcmVjYXRlZChwbSk6CisgICAgY2xhc3MgUDEob2JqZWN0KToKKyAgICAgICAg
QGhvb2tpbXBsCisgICAgICAgIGRlZiBtKHNlbGYsIF9fbXVsdGljYWxsX18sIHgpOgorICAgICAg
ICAgICAgcGFzcworCisgICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChwbS5yZWdpc3RlciwgUDEo
KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9kZXRhaWxzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2RldGFpbHMucHkKaW5kZXggMmZhZDE5OGQ5NTg1Li5mYzQ5
ZmMzMDhkZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9kZXRhaWxzLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9kZXRhaWxzLnB5CkBAIC0xLDggKzEsNiBA
QAogaW1wb3J0IHdhcm5pbmdzCi0KIGltcG9ydCBweXRlc3QKLQotZnJvbSBwbHVnZ3kgaW1wb3J0
IFBsdWdpbk1hbmFnZXIsIEhvb2tpbXBsTWFya2VyLCBIb29rc3BlY01hcmtlciwgX1Jlc3VsdAor
ZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIsIEhvb2tpbXBsTWFya2VyLCBIb29rc3Bl
Y01hcmtlcgogCiBob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxlIikKIGhvb2tpbXBs
ID0gSG9va2ltcGxNYXJrZXIoImV4YW1wbGUiKQpAQCAtMTEsOCArOSw3IEBAIGhvb2tpbXBsID0g
SG9va2ltcGxNYXJrZXIoImV4YW1wbGUiKQogZGVmIHRlc3RfcGFyc2VfaG9va2ltcGxfb3ZlcnJp
ZGUoKToKICAgICBjbGFzcyBNeVBsdWdpbk1hbmFnZXIoUGx1Z2luTWFuYWdlcik6CiAgICAgICAg
IGRlZiBwYXJzZV9ob29raW1wbF9vcHRzKHNlbGYsIG1vZHVsZV9vcl9jbGFzcywgbmFtZSk6Ci0g
ICAgICAgICAgICBvcHRzID0gUGx1Z2luTWFuYWdlci5wYXJzZV9ob29raW1wbF9vcHRzKAotICAg
ICAgICAgICAgICAgIHNlbGYsIG1vZHVsZV9vcl9jbGFzcywgbmFtZSkKKyAgICAgICAgICAgIG9w
dHMgPSBQbHVnaW5NYW5hZ2VyLnBhcnNlX2hvb2tpbXBsX29wdHMoc2VsZiwgbW9kdWxlX29yX2Ns
YXNzLCBuYW1lKQogICAgICAgICAgICAgaWYgb3B0cyBpcyBOb25lOgogICAgICAgICAgICAgICAg
IGlmIG5hbWUuc3RhcnRzd2l0aCgieDEiKToKICAgICAgICAgICAgICAgICAgICAgb3B0cyA9IHt9
CkBAIC00NywxMyArNDQsMzggQEAgZGVmIHRlc3RfcGFyc2VfaG9va2ltcGxfb3ZlcnJpZGUoKToK
ICAgICBhc3NlcnQgcG0uaG9vay54MW1ldGgyLl93cmFwcGVyc1swXS5ob29rd3JhcHBlcgogCiAK
K2RlZiB0ZXN0X3dhcm5fd2hlbl9kZXByZWNhdGVkX3NwZWNpZmllZChyZWN3YXJuKToKKyAgICB3
YXJuaW5nID0gRGVwcmVjYXRpb25XYXJuaW5nKCJmb28gaXMgZGVwcmVjYXRlZCIpCisKKyAgICBj
bGFzcyBTcGVjKG9iamVjdCk6CisgICAgICAgIEBob29rc3BlYyh3YXJuX29uX2ltcGw9d2Fybmlu
ZykKKyAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGNsYXNz
IFBsdWdpbihvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwKKyAgICAgICAgZGVmIGZvbyhzZWxm
KToKKyAgICAgICAgICAgIHBhc3MKKworICAgIHBtID0gUGx1Z2luTWFuYWdlcihob29rc3BlYy5w
cm9qZWN0X25hbWUpCisgICAgcG0uYWRkX2hvb2tzcGVjcyhTcGVjKQorCisgICAgd2l0aCBweXRl
c3Qud2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyByZWNvcmRzOgorICAgICAgICBwbS5yZWdp
c3RlcihQbHVnaW4oKSkKKyAgICAocmVjb3JkLCkgPSByZWNvcmRzCisgICAgYXNzZXJ0IHJlY29y
ZC5tZXNzYWdlIGlzIHdhcm5pbmcKKyAgICBhc3NlcnQgcmVjb3JkLmZpbGVuYW1lID09IFBsdWdp
bi5mb28uX19jb2RlX18uY29fZmlsZW5hbWUKKyAgICBhc3NlcnQgcmVjb3JkLmxpbmVubyA9PSBQ
bHVnaW4uZm9vLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vCisKKwogZGVmIHRlc3RfcGx1Z2luX2dl
dGF0dHJfcmFpc2VzX2Vycm9ycygpOgogICAgICIiIlBsdWdneSBtdXN0IGJlIGFibGUgdG8gaGFu
ZGxlIHBsdWdpbnMgd2hpY2ggcmFpc2Ugd2VpcmQgZXhjZXB0aW9ucwogICAgIHdoZW4gZ2V0YXR0
cigpIGdldHMgY2FsbGVkICgjMTEpLgogICAgICIiIgorCiAgICAgY2xhc3MgRG9udFRvdWNoTWUo
b2JqZWN0KToKICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIHgpOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdjYW50IHRvdWNoIG1lJykKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigiY2FudCB0b3VjaCBtZSIpCiAKICAgICBjbGFzcyBNb2R1bGUob2JqZWN0KToKICAgICAg
ICAgcGFzcwpAQCAtNjMsMTQgKzg1LDE1IEBAIGRlZiB0ZXN0X3BsdWdpbl9nZXRhdHRyX3JhaXNl
c19lcnJvcnMoKToKIAogICAgIHBtID0gUGx1Z2luTWFuYWdlcihob29rc3BlYy5wcm9qZWN0X25h
bWUpCiAgICAgIyByZWdpc3RlcigpIHdvdWxkIHJhaXNlIGFuIGVycm9yCi0gICAgcG0ucmVnaXN0
ZXIobW9kdWxlLCAnZG9udHRvdWNoJykKLSAgICBhc3NlcnQgcG0uZ2V0X3BsdWdpbignZG9udHRv
dWNoJykgaXMgbW9kdWxlCisgICAgcG0ucmVnaXN0ZXIobW9kdWxlLCAiZG9udHRvdWNoIikKKyAg
ICBhc3NlcnQgcG0uZ2V0X3BsdWdpbigiZG9udHRvdWNoIikgaXMgbW9kdWxlCiAKIAogZGVmIHRl
c3Rfd2FybmluZ19vbl9jYWxsX3ZzX2hvb2tzcGVjX2FyZ19taXNtYXRjaCgpOgogICAgICIiIlZl
cmlmeSB0aGF0IGlzIGEgaG9vayBpcyBjYWxsZWQgd2l0aCBsZXNzIGFyZ3VtZW50cyB0aGVuIGRl
ZmluZWQgaW4gdGhlCiAgICAgc3BlYyB0aGF0IGEgd2FybmluZyBpcyBlbWl0dGVkLgogICAgICIi
IgorCiAgICAgY2xhc3MgU3BlYzoKICAgICAgICAgQGhvb2tzcGVjCiAgICAgICAgIGRlZiBteWhv
b2soc2VsZiwgYXJnMSwgYXJnMik6CkBAIC04Niw3ICsxMDksNyBAQCBkZWYgdGVzdF93YXJuaW5n
X29uX2NhbGxfdnNfaG9va3NwZWNfYXJnX21pc21hdGNoKCk6CiAgICAgcG0uYWRkX2hvb2tzcGVj
cyhTcGVjKCkpCiAKICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVl
KSBhcyB3YXJuczoKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAg
ICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAKICAgICAgICAgIyBjYWxsaW5n
IHNob3VsZCB0cmlnZ2VyIGEgd2FybmluZwogICAgICAgICBwbS5ob29rLm15aG9vayhhcmcxPTEp
CkBAIC05Nyw3ICsxMjAsMTYgQEAgZGVmIHRlc3Rfd2FybmluZ19vbl9jYWxsX3ZzX2hvb2tzcGVj
X2FyZ19taXNtYXRjaCgpOgogICAgICAgICBhc3NlcnQgIkFyZ3VtZW50KHMpICgnYXJnMicsKSIg
aW4gc3RyKHdhcm5pbmcubWVzc2FnZSkKIAogCi1kZWYgdGVzdF9yZXN1bHRfZGVwcmVjYXRlZCgp
OgotICAgIHIgPSBfUmVzdWx0KDEwLCBOb25lKQotICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRf
Y2FsbCgpOgotICAgICAgICBhc3NlcnQgci5yZXN1bHQgPT0gMTAKK2RlZiB0ZXN0X3JlcHIoKToK
KyAgICBjbGFzcyBQbHVnaW46CisgICAgICAgIEBob29raW1wbAorICAgICAgICBkZWYgbXlob29r
KCk6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIHBtID0g
UGx1Z2luTWFuYWdlcihob29rc3BlYy5wcm9qZWN0X25hbWUpCisKKyAgICBwbHVnaW4gPSBQbHVn
aW4oKQorICAgIHBuYW1lID0gcG0ucmVnaXN0ZXIocGx1Z2luKQorICAgIGFzc2VydCByZXByKHBt
Lmhvb2subXlob29rLl9ub253cmFwcGVyc1swXSkgPT0gKAorICAgICAgICAiPEhvb2tJbXBsIHBs
dWdpbl9uYW1lPSVyLCBwbHVnaW49JXI+IiAlIChwbmFtZSwgcGx1Z2luKQorICAgICkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9oZWxwZXJzLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
dGVzdGluZy90ZXN0X2hlbHBlcnMucHkKaW5kZXggYjE3ODA5Njg0NDY1Li42NGMzZWRhYTBhMWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9oZWxwZXJzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9oZWxwZXJzLnB5CkBAIC0xLDQgKzEsOCBAQAotZnJvbSBw
bHVnZ3kgaW1wb3J0IF9mb3JtYXRkZWYsIHZhcm5hbWVzCitmcm9tIHBsdWdneS5ob29rcyBpbXBv
cnQgdmFybmFtZXMKK2Zyb20gcGx1Z2d5Lm1hbmFnZXIgaW1wb3J0IF9mb3JtYXRkZWYKKworaW1w
b3J0IHN5cworaW1wb3J0IHB5dGVzdAogCiAKIGRlZiB0ZXN0X3Zhcm5hbWVzKCk6CkBAIC0xNCw4
ICsxOCw4IEBAIGRlZiB0ZXN0X3Zhcm5hbWVzKCk6CiAgICAgICAgICAgICBwYXNzCiAKICAgICBh
c3NlcnQgdmFybmFtZXMoZikgPT0gKCgieCIsKSwgKCkpCi0gICAgYXNzZXJ0IHZhcm5hbWVzKEEo
KS5mKSA9PSAoKCd5JywpLCAoKSkKLSAgICBhc3NlcnQgdmFybmFtZXMoQigpKSA9PSAoKCd6Jywp
LCAoKSkKKyAgICBhc3NlcnQgdmFybmFtZXMoQSgpLmYpID09ICgoInkiLCksICgpKQorICAgIGFz
c2VydCB2YXJuYW1lcyhCKCkpID09ICgoInoiLCksICgpKQogCiAKIGRlZiB0ZXN0X3Zhcm5hbWVz
X2RlZmF1bHQoKToKQEAgLTQ2LDExICs1MCwyOSBAQCBkZWYgdGVzdF92YXJuYW1lc19jbGFzcygp
OgogICAgIGFzc2VydCB2YXJuYW1lcyhGKSA9PSAoKCksICgpKQogCiAKK0BweXRlc3QubWFyay5z
a2lwaWYoCisgICAgc3lzLnZlcnNpb25faW5mbyA8ICgzLCksIHJlYXNvbj0iS2V5d29yZCBvbmx5
IGFyZ3VtZW50cyBhcmUgUHl0aG9uIDMgb25seSIKKykKK2RlZiB0ZXN0X3Zhcm5hbWVzX2tleXdv
cmRfb25seSgpOgorICAgICMgU3ludGF4RXJyb3Igb24gUHl0aG9uIDIsIHNvIHdlIGV4ZWMKKyAg
ICBucyA9IHt9CisgICAgZXhlYygKKyAgICAgICAgImRlZiBmMSh4LCAqLCB5KTogcGFzc1xuIgor
ICAgICAgICAiZGVmIGYyKHgsICosIHk9Myk6IHBhc3NcbiIKKyAgICAgICAgImRlZiBmMyh4PTEs
ICosIHk9Myk6IHBhc3NcbiIsCisgICAgICAgIG5zLAorICAgICkKKworICAgIGFzc2VydCB2YXJu
YW1lcyhuc1siZjEiXSkgPT0gKCgieCIsKSwgKCkpCisgICAgYXNzZXJ0IHZhcm5hbWVzKG5zWyJm
MiJdKSA9PSAoKCJ4IiwpLCAoKSkKKyAgICBhc3NlcnQgdmFybmFtZXMobnNbImYzIl0pID09ICgo
KSwgKCJ4IiwpKQorCisKIGRlZiB0ZXN0X2Zvcm1hdGRlZigpOgogICAgIGRlZiBmdW5jdGlvbjEo
KToKICAgICAgICAgcGFzcwogCi0gICAgYXNzZXJ0IF9mb3JtYXRkZWYoZnVuY3Rpb24xKSA9PSAn
ZnVuY3Rpb24xKCknCisgICAgYXNzZXJ0IF9mb3JtYXRkZWYoZnVuY3Rpb24xKSA9PSAiZnVuY3Rp
b24xKCkiCiAKICAgICBkZWYgZnVuY3Rpb24yKGFyZzEpOgogICAgICAgICBwYXNzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaG9va2NhbGxlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
L3Rlc3RpbmcvdGVzdF9ob29rY2FsbGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNTY2NGYyYmJmNjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
dGVzdGluZy90ZXN0X2hvb2tjYWxsZXIucHkKQEAgLTAsMCArMSwyMTUgQEAKK2ltcG9ydCBweXRl
c3QKKworZnJvbSBwbHVnZ3kgaW1wb3J0IEhvb2tpbXBsTWFya2VyLCBIb29rc3BlY01hcmtlcgor
ZnJvbSBwbHVnZ3kuaG9va3MgaW1wb3J0IEhvb2tJbXBsCisKK2hvb2tzcGVjID0gSG9va3NwZWNN
YXJrZXIoImV4YW1wbGUiKQoraG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigiZXhhbXBsZSIpCisK
KworQHB5dGVzdC5maXh0dXJlCitkZWYgaGMocG0pOgorICAgIGNsYXNzIEhvb2tzKG9iamVjdCk6
CisgICAgICAgIEBob29rc3BlYworICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgor
ICAgICAgICAgICAgcGFzcworCisgICAgcG0uYWRkX2hvb2tzcGVjcyhIb29rcykKKyAgICByZXR1
cm4gcG0uaG9vay5oZV9tZXRob2QxCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgYWRkbWV0aCho
Yyk6CisgICAgZGVmIGFkZG1ldGgodHJ5Zmlyc3Q9RmFsc2UsIHRyeWxhc3Q9RmFsc2UsIGhvb2t3
cmFwcGVyPUZhbHNlKToKKyAgICAgICAgZGVmIHdyYXAoZnVuYyk6CisgICAgICAgICAgICBob29r
aW1wbCh0cnlmaXJzdD10cnlmaXJzdCwgdHJ5bGFzdD10cnlsYXN0LCBob29rd3JhcHBlcj1ob29r
d3JhcHBlcikoZnVuYykKKyAgICAgICAgICAgIGhjLl9hZGRfaG9va2ltcGwoSG9va0ltcGwoTm9u
ZSwgIjx0ZW1wPiIsIGZ1bmMsIGZ1bmMuZXhhbXBsZV9pbXBsKSkKKyAgICAgICAgICAgIHJldHVy
biBmdW5jCisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIHJldHVybiBhZGRtZXRoCisKKwor
ZGVmIGZ1bmNzKGhvb2ttZXRob2RzKToKKyAgICByZXR1cm4gW2hvb2ttZXRob2QuZnVuY3Rpb24g
Zm9yIGhvb2ttZXRob2QgaW4gaG9va21ldGhvZHNdCisKKworZGVmIHRlc3RfYWRkaW5nX25vbndy
YXBwZXJzKGhjLCBhZGRtZXRoKToKKyAgICBAYWRkbWV0aCgpCisgICAgZGVmIGhlX21ldGhvZDEo
KToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1ldGgoKQorICAgIGRlZiBoZV9tZXRob2QyKCk6
CisgICAgICAgIHBhc3MKKworICAgIEBhZGRtZXRoKCkKKyAgICBkZWYgaGVfbWV0aG9kMygpOgor
ICAgICAgICBwYXNzCisKKyAgICBhc3NlcnQgZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9PSBbaGVf
bWV0aG9kMSwgaGVfbWV0aG9kMiwgaGVfbWV0aG9kM10KKworCitkZWYgdGVzdF9hZGRpbmdfbm9u
d3JhcHBlcnNfdHJ5bGFzdChoYywgYWRkbWV0aCk6CisgICAgQGFkZG1ldGgoKQorICAgIGRlZiBo
ZV9tZXRob2QxX21pZGRsZSgpOgorICAgICAgICBwYXNzCisKKyAgICBAYWRkbWV0aCh0cnlsYXN0
PVRydWUpCisgICAgZGVmIGhlX21ldGhvZDEoKToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1l
dGgoKQorICAgIGRlZiBoZV9tZXRob2QxX2IoKToKKyAgICAgICAgcGFzcworCisgICAgYXNzZXJ0
IGZ1bmNzKGhjLl9ub253cmFwcGVycykgPT0gW2hlX21ldGhvZDEsIGhlX21ldGhvZDFfbWlkZGxl
LCBoZV9tZXRob2QxX2JdCisKKworZGVmIHRlc3RfYWRkaW5nX25vbndyYXBwZXJzX3RyeWxhc3Qz
KGhjLCBhZGRtZXRoKToKKyAgICBAYWRkbWV0aCgpCisgICAgZGVmIGhlX21ldGhvZDFfYSgpOgor
ICAgICAgICBwYXNzCisKKyAgICBAYWRkbWV0aCh0cnlsYXN0PVRydWUpCisgICAgZGVmIGhlX21l
dGhvZDFfYigpOgorICAgICAgICBwYXNzCisKKyAgICBAYWRkbWV0aCgpCisgICAgZGVmIGhlX21l
dGhvZDFfYygpOgorICAgICAgICBwYXNzCisKKyAgICBAYWRkbWV0aCh0cnlsYXN0PVRydWUpCisg
ICAgZGVmIGhlX21ldGhvZDFfZCgpOgorICAgICAgICBwYXNzCisKKyAgICBhc3NlcnQgZnVuY3Mo
aGMuX25vbndyYXBwZXJzKSA9PSBbCisgICAgICAgIGhlX21ldGhvZDFfZCwKKyAgICAgICAgaGVf
bWV0aG9kMV9iLAorICAgICAgICBoZV9tZXRob2QxX2EsCisgICAgICAgIGhlX21ldGhvZDFfYywK
KyAgICBdCisKKworZGVmIHRlc3RfYWRkaW5nX25vbndyYXBwZXJzX3RyeWxhc3QyKGhjLCBhZGRt
ZXRoKToKKyAgICBAYWRkbWV0aCgpCisgICAgZGVmIGhlX21ldGhvZDFfbWlkZGxlKCk6CisgICAg
ICAgIHBhc3MKKworICAgIEBhZGRtZXRoKCkKKyAgICBkZWYgaGVfbWV0aG9kMV9iKCk6CisgICAg
ICAgIHBhc3MKKworICAgIEBhZGRtZXRoKHRyeWxhc3Q9VHJ1ZSkKKyAgICBkZWYgaGVfbWV0aG9k
MSgpOgorICAgICAgICBwYXNzCisKKyAgICBhc3NlcnQgZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9
PSBbaGVfbWV0aG9kMSwgaGVfbWV0aG9kMV9taWRkbGUsIGhlX21ldGhvZDFfYl0KKworCitkZWYg
dGVzdF9hZGRpbmdfbm9ud3JhcHBlcnNfdHJ5Zmlyc3QoaGMsIGFkZG1ldGgpOgorICAgIEBhZGRt
ZXRoKHRyeWZpcnN0PVRydWUpCisgICAgZGVmIGhlX21ldGhvZDEoKToKKyAgICAgICAgcGFzcwor
CisgICAgQGFkZG1ldGgoKQorICAgIGRlZiBoZV9tZXRob2QxX21pZGRsZSgpOgorICAgICAgICBw
YXNzCisKKyAgICBAYWRkbWV0aCgpCisgICAgZGVmIGhlX21ldGhvZDFfYigpOgorICAgICAgICBw
YXNzCisKKyAgICBhc3NlcnQgZnVuY3MoaGMuX25vbndyYXBwZXJzKSA9PSBbaGVfbWV0aG9kMV9t
aWRkbGUsIGhlX21ldGhvZDFfYiwgaGVfbWV0aG9kMV0KKworCitkZWYgdGVzdF9hZGRpbmdfd3Jh
cHBlcnNfb3JkZXJpbmcoaGMsIGFkZG1ldGgpOgorICAgIEBhZGRtZXRoKGhvb2t3cmFwcGVyPVRy
dWUpCisgICAgZGVmIGhlX21ldGhvZDEoKToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1ldGgo
KQorICAgIGRlZiBoZV9tZXRob2QxX21pZGRsZSgpOgorICAgICAgICBwYXNzCisKKyAgICBAYWRk
bWV0aChob29rd3JhcHBlcj1UcnVlKQorICAgIGRlZiBoZV9tZXRob2QzKCk6CisgICAgICAgIHBh
c3MKKworICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3JhcHBlcnMpID09IFtoZV9tZXRob2QxX21p
ZGRsZV0KKyAgICBhc3NlcnQgZnVuY3MoaGMuX3dyYXBwZXJzKSA9PSBbaGVfbWV0aG9kMSwgaGVf
bWV0aG9kM10KKworCitkZWYgdGVzdF9hZGRpbmdfd3JhcHBlcnNfb3JkZXJpbmdfdHJ5Zmlyc3Qo
aGMsIGFkZG1ldGgpOgorICAgIEBhZGRtZXRoKGhvb2t3cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRy
dWUpCisgICAgZGVmIGhlX21ldGhvZDEoKToKKyAgICAgICAgcGFzcworCisgICAgQGFkZG1ldGgo
aG9va3dyYXBwZXI9VHJ1ZSkKKyAgICBkZWYgaGVfbWV0aG9kMigpOgorICAgICAgICBwYXNzCisK
KyAgICBhc3NlcnQgaGMuX25vbndyYXBwZXJzID09IFtdCisgICAgYXNzZXJ0IGZ1bmNzKGhjLl93
cmFwcGVycykgPT0gW2hlX21ldGhvZDIsIGhlX21ldGhvZDFdCisKKworZGVmIHRlc3RfaG9va3Nw
ZWMocG0pOgorICAgIGNsYXNzIEhvb2tTcGVjKG9iamVjdCk6CisgICAgICAgIEBob29rc3BlYygp
CisgICAgICAgIGRlZiBoZV9teWhvb2sxKGFyZzEpOgorICAgICAgICAgICAgcGFzcworCisgICAg
ICAgIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQorICAgICAgICBkZWYgaGVfbXlob29rMihh
cmcxKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9
RmFsc2UpCisgICAgICAgIGRlZiBoZV9teWhvb2szKGFyZzEpOgorICAgICAgICAgICAgcGFzcwor
CisgICAgcG0uYWRkX2hvb2tzcGVjcyhIb29rU3BlYykKKyAgICBhc3NlcnQgbm90IHBtLmhvb2su
aGVfbXlob29rMS5zcGVjLm9wdHNbImZpcnN0cmVzdWx0Il0KKyAgICBhc3NlcnQgcG0uaG9vay5o
ZV9teWhvb2syLnNwZWMub3B0c1siZmlyc3RyZXN1bHQiXQorICAgIGFzc2VydCBub3QgcG0uaG9v
ay5oZV9teWhvb2szLnNwZWMub3B0c1siZmlyc3RyZXN1bHQiXQorCisKK0BweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgibmFtZSIsIFsiaG9va3dyYXBwZXIiLCAib3B0aW9uYWxob29rIiwgInRyeWZp
cnN0IiwgInRyeWxhc3QiXSkKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidmFsIiwgW1RydWUs
IEZhbHNlXSkKK2RlZiB0ZXN0X2hvb2tpbXBsKG5hbWUsIHZhbCk6CisgICAgQGhvb2tpbXBsKCoq
e25hbWU6IHZhbH0pCisgICAgZGVmIGhlX215aG9vazEoYXJnMSk6CisgICAgICAgIHBhc3MKKwor
ICAgIGlmIHZhbDoKKyAgICAgICAgYXNzZXJ0IGhlX215aG9vazEuZXhhbXBsZV9pbXBsLmdldChu
YW1lKQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihoZV9teWhvb2sxLCBu
YW1lKQorCisKK2RlZiB0ZXN0X2hvb2tyZWxheV9yZWdpc3RyeShwbSk6CisgICAgIiIiVmVyaWZ5
IGhvb2sgY2FsbGVyIGluc3RhbmNlcyBhcmUgcmVnaXN0ZXJlZCBieSBuYW1lIG9udG8gdGhlIHJl
bGF5CisgICAgYW5kIGNhbiBiZSBsaWtld2lzZSB1bnJlZ2lzdGVyZWQuIiIiCisKKyAgICBjbGFz
cyBBcGkob2JqZWN0KToKKyAgICAgICAgQGhvb2tzcGVjCisgICAgICAgIGRlZiBoZWxsbyhzZWxm
LCBhcmcpOgorICAgICAgICAgICAgImFwaSBob29rIDEiCisKKyAgICBwbS5hZGRfaG9va3NwZWNz
KEFwaSkKKyAgICBob29rID0gcG0uaG9vaworICAgIGFzc2VydCBoYXNhdHRyKGhvb2ssICJoZWxs
byIpCisgICAgYXNzZXJ0IHJlcHIoaG9vay5oZWxsbykuZmluZCgiaGVsbG8iKSAhPSAtMQorCisg
ICAgY2xhc3MgUGx1Z2luKG9iamVjdCk6CisgICAgICAgIEBob29raW1wbAorICAgICAgICBkZWYg
aGVsbG8oc2VsZiwgYXJnKToKKyAgICAgICAgICAgIHJldHVybiBhcmcgKyAxCisKKyAgICBwbHVn
aW4gPSBQbHVnaW4oKQorICAgIHBtLnJlZ2lzdGVyKHBsdWdpbikKKyAgICBvdXQgPSBob29rLmhl
bGxvKGFyZz0zKQorICAgIGFzc2VydCBvdXQgPT0gWzRdCisgICAgYXNzZXJ0IG5vdCBoYXNhdHRy
KGhvb2ssICJ3b3JsZCIpCisgICAgcG0udW5yZWdpc3RlcihwbHVnaW4pCisgICAgYXNzZXJ0IGhv
b2suaGVsbG8oYXJnPTMpID09IFtdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rl
c3RfaG9va3JlbGF5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2ludm9jYXRpb25zLnB5
CnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVz
dF9ob29rcmVsYXkucHkKcmVuYW1lIHRvIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9pbnZvY2F0
aW9ucy5weQppbmRleCA1ZTc4MjFiZWQ4ZjkuLmE2ZWM2M2NmYzdkYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2hvb2tyZWxheS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0
aW5nL3Rlc3RfaW52b2NhdGlvbnMucHkKQEAgLTYsMzEgKzYsNiBAQCBob29rc3BlYyA9IEhvb2tz
cGVjTWFya2VyKCJleGFtcGxlIikKIGhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoImV4YW1wbGUi
KQogCiAKLWRlZiB0ZXN0X2hhcHB5cGF0aChwbSk6Ci0gICAgY2xhc3MgQXBpKG9iamVjdCk6Ci0g
ICAgICAgIEBob29rc3BlYwotICAgICAgICBkZWYgaGVsbG8oc2VsZiwgYXJnKToKLSAgICAgICAg
ICAgICJhcGkgaG9vayAxIgotCi0gICAgcG0uYWRkX2hvb2tzcGVjcyhBcGkpCi0gICAgaG9vayA9
IHBtLmhvb2sKLSAgICBhc3NlcnQgaGFzYXR0cihob29rLCAnaGVsbG8nKQotICAgIGFzc2VydCBy
ZXByKGhvb2suaGVsbG8pLmZpbmQoImhlbGxvIikgIT0gLTEKLQotICAgIGNsYXNzIFBsdWdpbihv
YmplY3QpOgotICAgICAgICBAaG9va2ltcGwKLSAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZyk6
Ci0gICAgICAgICAgICByZXR1cm4gYXJnICsgMQotCi0gICAgcGx1Z2luID0gUGx1Z2luKCkKLSAg
ICBwbS5yZWdpc3RlcihwbHVnaW4pCi0gICAgb3V0ID0gaG9vay5oZWxsbyhhcmc9MykKLSAgICBh
c3NlcnQgb3V0ID09IFs0XQotICAgIGFzc2VydCBub3QgaGFzYXR0cihob29rLCAnd29ybGQnKQot
ICAgIHBtLnVucmVnaXN0ZXIocGx1Z2luKQotICAgIGFzc2VydCBob29rLmhlbGxvKGFyZz0zKSA9
PSBbXQotCi0KIGRlZiB0ZXN0X2FyZ21pc21hdGNoKHBtKToKICAgICBjbGFzcyBBcGkob2JqZWN0
KToKICAgICAgICAgQGhvb2tzcGVjCkBAIC02NCw2ICszOSwzNCBAQCBkZWYgdGVzdF9vbmx5X2t3
YXJncyhwbSk6CiAgICAgYXNzZXJ0IGNvbXByZWhlbnNpYmxlIGluIHN0cihleGMudmFsdWUpCiAK
IAorZGVmIHRlc3Rfb3B0X2luX2FyZ3MocG0pOgorICAgICIiIlZlcmZpeSB0aGF0IHR3byBob29r
aW1wbHMgd2l0aCBtdXRleCBhcmdzIGNhbiBzZXJ2ZQorICAgIHVuZGVyIHRoZSBzYW1lIHNwZWMu
CisgICAgIiIiCisKKyAgICBjbGFzcyBBcGkob2JqZWN0KToKKyAgICAgICAgQGhvb2tzcGVjCisg
ICAgICAgIGRlZiBoZWxsbyhzZWxmLCBhcmcxLCBhcmcyLCBjb21tb25fYXJnKToKKyAgICAgICAg
ICAgICJhcGkgaG9vayAxIgorCisgICAgY2xhc3MgUGx1Z2luMShvYmplY3QpOgorICAgICAgICBA
aG9va2ltcGwKKyAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZzEsIGNvbW1vbl9hcmcpOgorICAg
ICAgICAgICAgcmV0dXJuIGFyZzEgKyBjb21tb25fYXJnCisKKyAgICBjbGFzcyBQbHVnaW4yKG9i
amVjdCk6CisgICAgICAgIEBob29raW1wbAorICAgICAgICBkZWYgaGVsbG8oc2VsZiwgYXJnMiwg
Y29tbW9uX2FyZyk6CisgICAgICAgICAgICByZXR1cm4gYXJnMiArIGNvbW1vbl9hcmcKKworICAg
IHBtLmFkZF9ob29rc3BlY3MoQXBpKQorICAgIHBtLnJlZ2lzdGVyKFBsdWdpbjEoKSkKKyAgICBw
bS5yZWdpc3RlcihQbHVnaW4yKCkpCisKKyAgICByZXN1bHRzID0gcG0uaG9vay5oZWxsbyhhcmcx
PTEsIGFyZzI9MiwgY29tbW9uX2FyZz0wKQorICAgIGFzc2VydCByZXN1bHRzID09IFsyLCAxXQor
CisKIGRlZiB0ZXN0X2NhbGxfb3JkZXIocG0pOgogICAgIGNsYXNzIEFwaShvYmplY3QpOgogICAg
ICAgICBAaG9va3NwZWMKQEAgLTE0Myw2ICsxNDYsNyBAQCBkZWYgdGVzdF9maXJzdHJlc3VsdF9k
ZWZpbml0aW9uKHBtKToKIGRlZiB0ZXN0X2ZpcnN0cmVzdWx0X2ZvcmNlX3Jlc3VsdChwbSk6CiAg
ICAgIiIiVmVyaWZ5IGZvcmNpbmcgYSByZXN1bHQgaW4gYSB3cmFwcGVyLgogICAgICIiIgorCiAg
ICAgY2xhc3MgQXBpKG9iamVjdCk6CiAgICAgICAgIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVl
KQogICAgICAgICBkZWYgaGVsbG8oc2VsZiwgYXJnKToKQEAgLTE3OSw2ICsxODMsNyBAQCBkZWYg
dGVzdF9maXJzdHJlc3VsdF9yZXR1cm5zX25vbmUocG0pOgogICAgICIiIklmIE5vbmUgcmVzdWx0
cyBhcmUgcmV0dXJuZWQgYnkgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbnMgZW5zdXJlCiAgICAg
dGhlIG11bHRpLWNhbGwgbG9vcCByZXR1cm5zIGEgTm9uZSB2YWx1ZS4KICAgICAiIiIKKwogICAg
IGNsYXNzIEFwaShvYmplY3QpOgogICAgICAgICBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkK
ICAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZyk6CkBAIC0yMDAsNiArMjA1LDcgQEAgZGVmIHRl
c3RfZmlyc3RyZXN1bHRfbm9fcGx1Z2luKHBtKToKICAgICAiIiJJZiBubyBpbXBsZW1lbnRhdGlv
bnMvcGx1Z2lucyBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBmaXJzdHJlc3VsdAogICAgIGhv
b2sgdGhlIG11bHRpLWNhbGwgbG9vcCBzaG91bGQgcmV0dXJuIGEgTm9uZSB2YWx1ZS4KICAgICAi
IiIKKwogICAgIGNsYXNzIEFwaShvYmplY3QpOgogICAgICAgICBAaG9va3NwZWMoZmlyc3RyZXN1
bHQ9VHJ1ZSkKICAgICAgICAgZGVmIGhlbGxvKHNlbGYsIGFyZyk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS90ZXN0aW5nL3Rlc3RfbWV0aG9kX29yZGVyaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVz
dGluZy90ZXN0X21ldGhvZF9vcmRlcmluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTU4NGEwYWU1YTgyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90
ZXN0X21ldGhvZF9vcmRlcmluZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyMiArMCwwIEBACi1p
bXBvcnQgcHl0ZXN0Ci0KLQotaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCi0KLWZyb20gcGx1Z2d5
IGltcG9ydCBQbHVnaW5NYW5hZ2VyLCBIb29rSW1wbCwgSG9va2ltcGxNYXJrZXIsIEhvb2tzcGVj
TWFya2VyCi0KLWhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoImV4YW1wbGUiKQotaG9va2ltcGwg
PSBIb29raW1wbE1hcmtlcigiZXhhbXBsZSIpCi0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgaGMo
cG0pOgotICAgIGNsYXNzIEhvb2tzKG9iamVjdCk6Ci0gICAgICAgIEBob29rc3BlYwotICAgICAg
ICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgotICAgICAgICAgICAgcGFzcwotICAgIHBtLmFk
ZF9ob29rc3BlY3MoSG9va3MpCi0gICAgcmV0dXJuIHBtLmhvb2suaGVfbWV0aG9kMQotCi0KLUBw
eXRlc3QuZml4dHVyZQotZGVmIGFkZG1ldGgoaGMpOgotICAgIGRlZiBhZGRtZXRoKHRyeWZpcnN0
PUZhbHNlLCB0cnlsYXN0PUZhbHNlLCBob29rd3JhcHBlcj1GYWxzZSk6Ci0gICAgICAgIGRlZiB3
cmFwKGZ1bmMpOgotICAgICAgICAgICAgaG9va2ltcGwodHJ5Zmlyc3Q9dHJ5Zmlyc3QsIHRyeWxh
c3Q9dHJ5bGFzdCwKLSAgICAgICAgICAgICAgICAgICAgIGhvb2t3cmFwcGVyPWhvb2t3cmFwcGVy
KShmdW5jKQotICAgICAgICAgICAgaGMuX2FkZF9ob29raW1wbChIb29rSW1wbChOb25lLCAiPHRl
bXA+IiwgZnVuYywgZnVuYy5leGFtcGxlX2ltcGwpKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmMK
LSAgICAgICAgcmV0dXJuIHdyYXAKLSAgICByZXR1cm4gYWRkbWV0aAotCi0KLWRlZiBmdW5jcyho
b29rbWV0aG9kcyk6Ci0gICAgcmV0dXJuIFtob29rbWV0aG9kLmZ1bmN0aW9uIGZvciBob29rbWV0
aG9kIGluIGhvb2ttZXRob2RzXQotCi0KLWRlZiB0ZXN0X2FkZGluZ19ub253cmFwcGVycyhoYywg
YWRkbWV0aCk6Ci0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxKCk6Ci0gICAgICAg
IHBhc3MKLQotICAgIEBhZGRtZXRoKCkKLSAgICBkZWYgaGVfbWV0aG9kMigpOgotICAgICAgICBw
YXNzCi0KLSAgICBAYWRkbWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDMoKToKLSAgICAgICAgcGFz
cwotICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3JhcHBlcnMpID09IFtoZV9tZXRob2QxLCBoZV9t
ZXRob2QyLCBoZV9tZXRob2QzXQotCi0KLWRlZiB0ZXN0X2FkZGluZ19ub253cmFwcGVyc190cnls
YXN0KGhjLCBhZGRtZXRoKToKLSAgICBAYWRkbWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDFfbWlk
ZGxlKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIEBhZGRtZXRoKHRyeWxhc3Q9VHJ1ZSkKLSAgICBk
ZWYgaGVfbWV0aG9kMSgpOgotICAgICAgICBwYXNzCi0KLSAgICBAYWRkbWV0aCgpCi0gICAgZGVm
IGhlX21ldGhvZDFfYigpOgotICAgICAgICBwYXNzCi0gICAgYXNzZXJ0IGZ1bmNzKGhjLl9ub253
cmFwcGVycykgPT0gW2hlX21ldGhvZDEsIGhlX21ldGhvZDFfbWlkZGxlLCBoZV9tZXRob2QxX2Jd
Ci0KLQotZGVmIHRlc3RfYWRkaW5nX25vbndyYXBwZXJzX3RyeWxhc3QzKGhjLCBhZGRtZXRoKToK
LSAgICBAYWRkbWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDFfYSgpOgotICAgICAgICBwYXNzCi0K
LSAgICBAYWRkbWV0aCh0cnlsYXN0PVRydWUpCi0gICAgZGVmIGhlX21ldGhvZDFfYigpOgotICAg
ICAgICBwYXNzCi0KLSAgICBAYWRkbWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDFfYygpOgotICAg
ICAgICBwYXNzCi0KLSAgICBAYWRkbWV0aCh0cnlsYXN0PVRydWUpCi0gICAgZGVmIGhlX21ldGhv
ZDFfZCgpOgotICAgICAgICBwYXNzCi0gICAgYXNzZXJ0IGZ1bmNzKGhjLl9ub253cmFwcGVycykg
PT0gXAotICAgICAgICBbaGVfbWV0aG9kMV9kLCBoZV9tZXRob2QxX2IsIGhlX21ldGhvZDFfYSwg
aGVfbWV0aG9kMV9jXQotCi0KLWRlZiB0ZXN0X2FkZGluZ19ub253cmFwcGVyc190cnlsYXN0Miho
YywgYWRkbWV0aCk6Ci0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxX21pZGRsZSgp
OgotICAgICAgICBwYXNzCi0KLSAgICBAYWRkbWV0aCgpCi0gICAgZGVmIGhlX21ldGhvZDFfYigp
OgotICAgICAgICBwYXNzCi0KLSAgICBAYWRkbWV0aCh0cnlsYXN0PVRydWUpCi0gICAgZGVmIGhl
X21ldGhvZDEoKToKLSAgICAgICAgcGFzcwotICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3JhcHBl
cnMpID09IFwKLSAgICAgICAgW2hlX21ldGhvZDEsIGhlX21ldGhvZDFfbWlkZGxlLCBoZV9tZXRo
b2QxX2JdCi0KLQotZGVmIHRlc3RfYWRkaW5nX25vbndyYXBwZXJzX3RyeWZpcnN0KGhjLCBhZGRt
ZXRoKToKLSAgICBAYWRkbWV0aCh0cnlmaXJzdD1UcnVlKQotICAgIGRlZiBoZV9tZXRob2QxKCk6
Ci0gICAgICAgIHBhc3MKLQotICAgIEBhZGRtZXRoKCkKLSAgICBkZWYgaGVfbWV0aG9kMV9taWRk
bGUoKToKLSAgICAgICAgcGFzcwotCi0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2Qx
X2IoKToKLSAgICAgICAgcGFzcwotICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3JhcHBlcnMpID09
IFsKLSAgICAgICAgaGVfbWV0aG9kMV9taWRkbGUsIGhlX21ldGhvZDFfYiwgaGVfbWV0aG9kMV0K
LQotCi1kZWYgdGVzdF9hZGRpbmdfd3JhcHBlcnNfb3JkZXJpbmcoaGMsIGFkZG1ldGgpOgotICAg
IEBhZGRtZXRoKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIGhlX21ldGhvZDEoKToKLSAgICAg
ICAgcGFzcwotCi0gICAgQGFkZG1ldGgoKQotICAgIGRlZiBoZV9tZXRob2QxX21pZGRsZSgpOgot
ICAgICAgICBwYXNzCi0KLSAgICBAYWRkbWV0aChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBo
ZV9tZXRob2QzKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGFzc2VydCBmdW5jcyhoYy5fbm9ud3Jh
cHBlcnMpID09IFtoZV9tZXRob2QxX21pZGRsZV0KLSAgICBhc3NlcnQgZnVuY3MoaGMuX3dyYXBw
ZXJzKSA9PSBbaGVfbWV0aG9kMSwgaGVfbWV0aG9kM10KLQotCi1kZWYgdGVzdF9hZGRpbmdfd3Jh
cHBlcnNfb3JkZXJpbmdfdHJ5Zmlyc3QoaGMsIGFkZG1ldGgpOgotICAgIEBhZGRtZXRoKGhvb2t3
cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIGhlX21ldGhvZDEoKToKLSAgICAg
ICAgcGFzcwotCi0gICAgQGFkZG1ldGgoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgaGVfbWV0
aG9kMigpOgotICAgICAgICBwYXNzCi0KLSAgICBhc3NlcnQgaGMuX25vbndyYXBwZXJzID09IFtd
Ci0gICAgYXNzZXJ0IGZ1bmNzKGhjLl93cmFwcGVycykgPT0gW2hlX21ldGhvZDIsIGhlX21ldGhv
ZDFdCi0KLQotZGVmIHRlc3RfaG9va3NwZWMocG0pOgotICAgIGNsYXNzIEhvb2tTcGVjKG9iamVj
dCk6Ci0gICAgICAgIEBob29rc3BlYygpCi0gICAgICAgIGRlZiBoZV9teWhvb2sxKGFyZzEpOgot
ICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQot
ICAgICAgICBkZWYgaGVfbXlob29rMihhcmcxKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAg
ICBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9RmFsc2UpCi0gICAgICAgIGRlZiBoZV9teWhvb2szKGFy
ZzEpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgcG0uYWRkX2hvb2tzcGVjcyhIb29rU3BlYykK
LSAgICBhc3NlcnQgbm90IHBtLmhvb2suaGVfbXlob29rMS5zcGVjX29wdHNbImZpcnN0cmVzdWx0
Il0KLSAgICBhc3NlcnQgcG0uaG9vay5oZV9teWhvb2syLnNwZWNfb3B0c1siZmlyc3RyZXN1bHQi
XQotICAgIGFzc2VydCBub3QgcG0uaG9vay5oZV9teWhvb2szLnNwZWNfb3B0c1siZmlyc3RyZXN1
bHQiXQotCi0KLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgnbmFtZScsIFsiaG9va3dyYXBwZXIi
LCAib3B0aW9uYWxob29rIiwgInRyeWZpcnN0IiwgInRyeWxhc3QiXSkKLUBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgndmFsJywgW1RydWUsIEZhbHNlXSkKLWRlZiB0ZXN0X2hvb2tpbXBsKG5hbWUs
IHZhbCk6Ci0gICAgQGhvb2tpbXBsKCoqe25hbWU6IHZhbH0pCi0gICAgZGVmIGhlX215aG9vazEo
YXJnMSk6Ci0gICAgICAgIHBhc3MKLSAgICBpZiB2YWw6Ci0gICAgICAgIGFzc2VydCBoZV9teWhv
b2sxLmV4YW1wbGVfaW1wbC5nZXQobmFtZSkKLSAgICBlbHNlOgotICAgICAgICBhc3NlcnQgbm90
IGhhc2F0dHIoaGVfbXlob29rMSwgbmFtZSkKLQotCi1kZWYgdGVzdF9sb2FkX3NldHVwdG9vbHNf
aW5zdGFudGlhdGlvbihtb25rZXlwYXRjaCwgcG0pOgotICAgIHBrZ19yZXNvdXJjZXMgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJwa2dfcmVzb3VyY2VzIikKLQotICAgIGRlZiBteV9pdGVyKG5hbWUp
OgotICAgICAgICBhc3NlcnQgbmFtZSA9PSAiaGVsbG8iCi0KLSAgICAgICAgY2xhc3MgRW50cnlQ
b2ludChvYmplY3QpOgotICAgICAgICAgICAgbmFtZSA9ICJteW5hbWUiCi0gICAgICAgICAgICBk
aXN0ID0gTm9uZQotCi0gICAgICAgICAgICBkZWYgbG9hZChzZWxmKToKLSAgICAgICAgICAgICAg
ICBjbGFzcyBQc2V1ZG9QbHVnaW4ob2JqZWN0KToKLSAgICAgICAgICAgICAgICAgICAgeCA9IDQy
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFBzZXVkb1BsdWdpbigpCi0KLSAgICAgICAgcmV0dXJu
IGl0ZXIoW0VudHJ5UG9pbnQoKV0pCi0KLSAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBrZ19yZXNv
dXJjZXMsICdpdGVyX2VudHJ5X3BvaW50cycsIG15X2l0ZXIpCi0gICAgbnVtID0gcG0ubG9hZF9z
ZXR1cHRvb2xzX2VudHJ5cG9pbnRzKCJoZWxsbyIpCi0gICAgYXNzZXJ0IG51bSA9PSAxCi0gICAg
cGx1Z2luID0gcG0uZ2V0X3BsdWdpbigibXluYW1lIikKLSAgICBhc3NlcnQgcGx1Z2luLnggPT0g
NDIKLSAgICBhc3NlcnQgcG0ubGlzdF9wbHVnaW5fZGlzdGluZm8oKSA9PSBbKHBsdWdpbiwgTm9u
ZSldCi0KLQotZGVmIHRlc3RfbG9hZF9zZXR1cHRvb2xzX25vdF9pbnN0YWxsZWQobW9ua2V5cGF0
Y2gsIHBtKToKLSAgICBtb25rZXlwYXRjaC5zZXRpdGVtKAotICAgICAgICBzeXMubW9kdWxlcywg
J3BrZ19yZXNvdXJjZXMnLAotICAgICAgICB0eXBlcy5Nb2R1bGVUeXBlKCJwa2dfcmVzb3VyY2Vz
IikpCi0KLSAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IpOgotICAgICAgICBwbS5s
b2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHMoInF3ZSIpCi0KLQotZGVmIHRlc3RfYWRkX3RyYWNl
ZnVuY3MoaGVfcG0pOgotICAgIG91dCA9IFtdCi0KLSAgICBjbGFzcyBhcGkxKG9iamVjdCk6Ci0g
ICAgICAgIEBob29raW1wbAotICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxmKToKLSAgICAgICAg
ICAgIG91dC5hcHBlbmQoImhlX21ldGhvZDEtYXBpMSIpCi0KLSAgICBjbGFzcyBhcGkyKG9iamVj
dCk6Ci0gICAgICAgIEBob29raW1wbAotICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxmKToKLSAg
ICAgICAgICAgIG91dC5hcHBlbmQoImhlX21ldGhvZDEtYXBpMiIpCi0KLSAgICBoZV9wbS5yZWdp
c3RlcihhcGkxKCkpCi0gICAgaGVfcG0ucmVnaXN0ZXIoYXBpMigpKQotCi0gICAgZGVmIGJlZm9y
ZShob29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncyk6Ci0gICAgICAgIG91dC5hcHBlbmQoKGhv
b2tfbmFtZSwgbGlzdChob29rX2ltcGxzKSwga3dhcmdzKSkKLQotICAgIGRlZiBhZnRlcihvdXRj
b21lLCBob29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncyk6Ci0gICAgICAgIG91dC5hcHBlbmQo
KG91dGNvbWUsIGhvb2tfbmFtZSwgbGlzdChob29rX2ltcGxzKSwga3dhcmdzKSkKLQotICAgIHVu
ZG8gPSBoZV9wbS5hZGRfaG9va2NhbGxfbW9uaXRvcmluZyhiZWZvcmUsIGFmdGVyKQotCi0gICAg
aGVfcG0uaG9vay5oZV9tZXRob2QxKGFyZz0xKQotICAgIGFzc2VydCBsZW4ob3V0KSA9PSA0Ci0g
ICAgYXNzZXJ0IG91dFswXVswXSA9PSAiaGVfbWV0aG9kMSIKLSAgICBhc3NlcnQgbGVuKG91dFsw
XVsxXSkgPT0gMgotICAgIGFzc2VydCBpc2luc3RhbmNlKG91dFswXVsyXSwgZGljdCkKLSAgICBh
c3NlcnQgb3V0WzFdID09ICJoZV9tZXRob2QxLWFwaTIiCi0gICAgYXNzZXJ0IG91dFsyXSA9PSAi
aGVfbWV0aG9kMS1hcGkxIgotICAgIGFzc2VydCBsZW4ob3V0WzNdKSA9PSA0Ci0gICAgYXNzZXJ0
IG91dFszXVsxXSA9PSBvdXRbMF1bMF0KLQotICAgIHVuZG8oKQotICAgIGhlX3BtLmhvb2suaGVf
bWV0aG9kMShhcmc9MSkKLSAgICBhc3NlcnQgbGVuKG91dCkgPT0gNCArIDIKLQotCi1kZWYgdGVz
dF9ob29rX3RyYWNpbmcoaGVfcG0pOgotICAgIHNhdmVpbmRlbnQgPSBbXQotCi0gICAgY2xhc3Mg
YXBpMShvYmplY3QpOgotICAgICAgICBAaG9va2ltcGwKLSAgICAgICAgZGVmIGhlX21ldGhvZDEo
c2VsZik6Ci0gICAgICAgICAgICBzYXZlaW5kZW50LmFwcGVuZChoZV9wbS50cmFjZS5yb290Lmlu
ZGVudCkKLQotICAgIGNsYXNzIGFwaTIob2JqZWN0KToKLSAgICAgICAgQGhvb2tpbXBsCi0gICAg
ICAgIGRlZiBoZV9tZXRob2QxKHNlbGYpOgotICAgICAgICAgICAgc2F2ZWluZGVudC5hcHBlbmQo
aGVfcG0udHJhY2Uucm9vdC5pbmRlbnQpCi0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkK
LQotICAgIGhlX3BtLnJlZ2lzdGVyKGFwaTEoKSkKLSAgICBvdXQgPSBbXQotICAgIGhlX3BtLnRy
YWNlLnJvb3Quc2V0d3JpdGVyKG91dC5hcHBlbmQpCi0gICAgdW5kbyA9IGhlX3BtLmVuYWJsZV90
cmFjaW5nKCkKLSAgICB0cnk6Ci0gICAgICAgIGluZGVudCA9IGhlX3BtLnRyYWNlLnJvb3QuaW5k
ZW50Ci0gICAgICAgIGhlX3BtLmhvb2suaGVfbWV0aG9kMShhcmc9MSkKLSAgICAgICAgYXNzZXJ0
IGluZGVudCA9PSBoZV9wbS50cmFjZS5yb290LmluZGVudAotICAgICAgICBhc3NlcnQgbGVuKG91
dCkgPT0gMgotICAgICAgICBhc3NlcnQgJ2hlX21ldGhvZDEnIGluIG91dFswXQotICAgICAgICBh
c3NlcnQgJ2ZpbmlzaCcgaW4gb3V0WzFdCi0KLSAgICAgICAgb3V0WzpdID0gW10KLSAgICAgICAg
aGVfcG0ucmVnaXN0ZXIoYXBpMigpKQotCi0gICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1
ZUVycm9yKToKLSAgICAgICAgICAgIGhlX3BtLmhvb2suaGVfbWV0aG9kMShhcmc9MSkKLSAgICAg
ICAgYXNzZXJ0IGhlX3BtLnRyYWNlLnJvb3QuaW5kZW50ID09IGluZGVudAotICAgICAgICBhc3Nl
cnQgc2F2ZWluZGVudFswXSA+IGluZGVudAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHVuZG8oKQot
Ci0KLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgnaW5jbHVkZV9ob29rc3BlYycsIFtUcnVlLCBG
YWxzZV0pCi1kZWYgdGVzdF9wcmVmaXhfaG9va2ltcGwoaW5jbHVkZV9ob29rc3BlYyk6Ci0gICAg
cG0gPSBQbHVnaW5NYW5hZ2VyKGhvb2tzcGVjLnByb2plY3RfbmFtZSwgImhlbGxvXyIpCi0KLSAg
ICBpZiBpbmNsdWRlX2hvb2tzcGVjOgotICAgICAgICBjbGFzcyBIb29rU3BlYyhvYmplY3QpOgot
ICAgICAgICAgICAgQGhvb2tzcGVjCi0gICAgICAgICAgICBkZWYgaGVsbG9fbXlob29rKHNlbGYs
IGFyZzEpOgotICAgICAgICAgICAgICAgICIiIiBhZGQgdG8gYXJnMSAiIiIKLQotICAgICAgICBw
bS5hZGRfaG9va3NwZWNzKEhvb2tTcGVjKQotCi0gICAgY2xhc3MgUGx1Z2luKG9iamVjdCk6Ci0g
ICAgICAgIGRlZiBoZWxsb19teWhvb2soc2VsZiwgYXJnMSk6Ci0gICAgICAgICAgICByZXR1cm4g
YXJnMSArIDEKLQotICAgIHBtLnJlZ2lzdGVyKFBsdWdpbigpKQotICAgIHBtLnJlZ2lzdGVyKFBs
dWdpbigpKQotICAgIHJlc3VsdHMgPSBwbS5ob29rLmhlbGxvX215aG9vayhhcmcxPTE3KQotICAg
IGFzc2VydCByZXN1bHRzID09IFsxOCwgMThdCi0KLQotZGVmIHRlc3RfcHJlZml4X2hvb2tpbXBs
X2RvbnRtYXRjaF9tb2R1bGUoKToKLSAgICBwbSA9IFBsdWdpbk1hbmFnZXIoaG9va3NwZWMucHJv
amVjdF9uYW1lLCAiaGVsbG9fIikKLQotICAgIGNsYXNzIEJhZFBsdWdpbihvYmplY3QpOgotICAg
ICAgICBoZWxsb19tb2R1bGUgPSBfX2ltcG9ydF9fKCdlbWFpbCcpCi0KLSAgICBwbS5yZWdpc3Rl
cihCYWRQbHVnaW4oKSkKLSAgICBwbS5jaGVja19wZW5kaW5nKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L3Rlc3RpbmcvdGVzdF9tdWx0aWNhbGwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rl
c3RfbXVsdGljYWxsLnB5CmluZGV4IDg2MGEyMDliNjY5MC4uZWFmNTM0YTAxNjZhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfbXVsdGljYWxsLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3Rlc3RpbmcvdGVzdF9tdWx0aWNhbGwucHkKQEAgLTEsMzAgKzEsMjAgQEAKIGltcG9ydCBw
eXRlc3QKLQotZnJvbSBwbHVnZ3kgaW1wb3J0IF9tdWx0aWNhbGwsIF9sZWdhY3ltdWx0aWNhbGws
IEhvb2tJbXBsLCBIb29rQ2FsbEVycm9yCi1mcm9tIHBsdWdneS5jYWxsZXJzIGltcG9ydCBfTGVn
YWN5TXVsdGlDYWxsCi1mcm9tIHBsdWdneSBpbXBvcnQgSG9va3NwZWNNYXJrZXIsIEhvb2tpbXBs
TWFya2VyCitmcm9tIHBsdWdneSBpbXBvcnQgSG9va0NhbGxFcnJvciwgSG9va3NwZWNNYXJrZXIs
IEhvb2tpbXBsTWFya2VyCitmcm9tIHBsdWdneS5ob29rcyBpbXBvcnQgSG9va0ltcGwKK2Zyb20g
cGx1Z2d5LmNhbGxlcnMgaW1wb3J0IF9tdWx0aWNhbGwsIF9sZWdhY3ltdWx0aWNhbGwKIAogCiBo
b29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxlIikKIGhvb2tpbXBsID0gSG9va2ltcGxN
YXJrZXIoImV4YW1wbGUiKQogCiAKLWRlZiB0ZXN0X3VzZXNfY29weV9vZl9tZXRob2RzKCk6Ci0g
ICAgb3V0ID0gW2xhbWJkYTogNDJdCi0gICAgbWMgPSBfTGVnYWN5TXVsdGlDYWxsKG91dCwge30p
Ci0gICAgcmVwcihtYykKLSAgICBvdXRbOl0gPSBbXQotICAgIHJlcyA9IG1jLmV4ZWN1dGUoKQot
ICAgIHJldHVybiByZXMgPT0gNDIKLQotCiBkZWYgTUMobWV0aG9kcywga3dhcmdzLCBmaXJzdHJl
c3VsdD1GYWxzZSk6CiAgICAgY2FsbGVyID0gX211bHRpY2FsbAogICAgIGhvb2tmdW5jcyA9IFtd
CiAgICAgZm9yIG1ldGhvZCBpbiBtZXRob2RzOgogICAgICAgICBmID0gSG9va0ltcGwoTm9uZSwg
Ijx0ZW1wPiIsIG1ldGhvZCwgbWV0aG9kLmV4YW1wbGVfaW1wbCkKICAgICAgICAgaG9va2Z1bmNz
LmFwcGVuZChmKQotICAgICAgICBpZiAnX19tdWx0aWNhbGxfXycgaW4gZi5hcmduYW1lczoKKyAg
ICAgICAgaWYgIl9fbXVsdGljYWxsX18iIGluIGYuYXJnbmFtZXM6CiAgICAgICAgICAgICBjYWxs
ZXIgPSBfbGVnYWN5bXVsdGljYWxsCiAgICAgcmV0dXJuIGNhbGxlcihob29rZnVuY3MsIGt3YXJn
cywgZmlyc3RyZXN1bHQ9Zmlyc3RyZXN1bHQpCiAKQEAgLTcwLDYgKzYwLDcgQEAgZGVmIHRlc3Rf
a2V5d29yZF9hcmdzX3dpdGhfZGVmYXVsdGFyZ3MoKToKICAgICBAaG9va2ltcGwKICAgICBkZWYg
Zih4LCB6PTEpOgogICAgICAgICByZXR1cm4geCArIHoKKwogICAgIHJlc2xpc3QgPSBNQyhbZl0s
IGRpY3QoeD0yMywgeT0yNCkpCiAgICAgYXNzZXJ0IHJlc2xpc3QgPT0gWzI0XQogCkBAIC03OCw2
ICs2OSw3IEBAIGRlZiB0ZXN0X3RhZ3NfY2FsbF9lcnJvcigpOgogICAgIEBob29raW1wbAogICAg
IGRlZiBmKHgpOgogICAgICAgICByZXR1cm4geAorCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKEhv
b2tDYWxsRXJyb3IpOgogICAgICAgICBNQyhbZl0sIHt9KQogCkBAIC0xNzIsNyArMTY0LDcgQEAg
ZGVmIHRlc3RfaG9va3dyYXBwZXJfdG9vX21hbnlfeWllbGQoKToKICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoUnVudGltZUVycm9yKSBhcyBleDoKICAgICAgICAgTUMoW20xXSwge30pCiAgICAgYXNz
ZXJ0ICJtMSIgaW4gc3RyKGV4LnZhbHVlKQotICAgIGFzc2VydCAoX19maWxlX18gKyAnOicpIGlu
IHN0cihleC52YWx1ZSkKKyAgICBhc3NlcnQgKF9fZmlsZV9fICsgIjoiKSBpbiBzdHIoZXgudmFs
dWUpCiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleGMiLCBbVmFsdWVFcnJvciwgU3lz
dGVtRXhpdF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfcGx1Z2lubWFu
YWdlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9wbHVnaW5tYW5hZ2VyLnB5CmluZGV4
IGUyYzg2Y2M2NDQyNi4uNjcyNjFhYWE3YmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0
aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3Rf
cGx1Z2lubWFuYWdlci5weQpAQCAtMSw4ICsxLDE3IEBACisiIiIKK2BgUGx1Z2luTWFuYWdlcmBg
IHVuaXQgYW5kIHB1YmxpYyBBUEkgdGVzdGluZy4KKyIiIgogaW1wb3J0IHB5dGVzdAogaW1wb3J0
IHR5cGVzCiAKLWZyb20gcGx1Z2d5IGltcG9ydCAoUGx1Z2luVmFsaWRhdGlvbkVycm9yLAotICAg
ICAgICAgICAgICAgICAgICBIb29rQ2FsbEVycm9yLCBIb29raW1wbE1hcmtlciwgSG9va3NwZWNN
YXJrZXIpCitmcm9tIHBsdWdneSBpbXBvcnQgKAorICAgIFBsdWdpbk1hbmFnZXIsCisgICAgUGx1
Z2luVmFsaWRhdGlvbkVycm9yLAorICAgIEhvb2tDYWxsRXJyb3IsCisgICAgSG9va2ltcGxNYXJr
ZXIsCisgICAgSG9va3NwZWNNYXJrZXIsCispCitmcm9tIHBsdWdneS5tYW5hZ2VyIGltcG9ydCBp
bXBvcnRsaWJfbWV0YWRhdGEKIAogCiBob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJleGFtcGxl
IikKQEAgLTEwLDYgKzE5LDcgQEAgaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigiZXhhbXBsZSIp
CiAKIAogZGVmIHRlc3RfcGx1Z2luX2RvdWJsZV9yZWdpc3RlcihwbSk6CisgICAgIiIiUmVnaXN0
ZXJpbmcgdGhlIHNhbWUgcGx1Z2luIG1vcmUgdGhlbiBvbmNlIGlzbid0IGFsbG93ZWQiIiIKICAg
ICBwbS5yZWdpc3Rlcig0MiwgbmFtZT0iYWJjIikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFs
dWVFcnJvcik6CiAgICAgICAgIHBtLnJlZ2lzdGVyKDQyLCBuYW1lPSJhYmMiKQpAQCAtMTgsNiAr
MjgsOCBAQCBkZWYgdGVzdF9wbHVnaW5fZG91YmxlX3JlZ2lzdGVyKHBtKToKIAogCiBkZWYgdGVz
dF9wbShwbSk6CisgICAgIiIiQmFzaWMgcmVnaXN0cmF0aW9uIHdpdGggb2JqZWN0cyIiIgorCiAg
ICAgY2xhc3MgQShvYmplY3QpOgogICAgICAgICBwYXNzCiAKQEAgLTI5LDcgKzQxLDcgQEAgZGVm
IHRlc3RfcG0ocG0pOgogICAgIG91dCA9IHBtLmdldF9wbHVnaW5zKCkKICAgICBhc3NlcnQgYTEg
aW4gb3V0CiAgICAgYXNzZXJ0IGEyIGluIG91dAotICAgIGFzc2VydCBwbS5nZXRfcGx1Z2luKCdo
ZWxsbycpID09IGEyCisgICAgYXNzZXJ0IHBtLmdldF9wbHVnaW4oImhlbGxvIikgPT0gYTIKICAg
ICBhc3NlcnQgcG0udW5yZWdpc3RlcihhMSkgPT0gYTEKICAgICBhc3NlcnQgbm90IHBtLmlzX3Jl
Z2lzdGVyZWQoYTEpCiAKQEAgLTQzLDkgKzU1LDkgQEAgZGVmIHRlc3RfaGFzX3BsdWdpbihwbSk6
CiAgICAgICAgIHBhc3MKIAogICAgIGExID0gQSgpCi0gICAgcG0ucmVnaXN0ZXIoYTEsICdoZWxs
bycpCisgICAgcG0ucmVnaXN0ZXIoYTEsICJoZWxsbyIpCiAgICAgYXNzZXJ0IHBtLmlzX3JlZ2lz
dGVyZWQoYTEpCi0gICAgYXNzZXJ0IHBtLmhhc19wbHVnaW4oJ2hlbGxvJykKKyAgICBhc3NlcnQg
cG0uaGFzX3BsdWdpbigiaGVsbG8iKQogCiAKIGRlZiB0ZXN0X3JlZ2lzdGVyX2R5bmFtaWNfYXR0
cihoZV9wbSk6CkBAIC0xMDQsOSArMTE2LDEyIEBAIGRlZiB0ZXN0X3JlZ2lzdGVyX21pc21hdGNo
X21ldGhvZChoZV9wbSk6CiAgICAgICAgIGRlZiBoZV9tZXRob2Rfbm90ZXhpc3RzKHNlbGYpOgog
ICAgICAgICAgICAgcGFzcwogCi0gICAgaGVfcG0ucmVnaXN0ZXIoaGVsbG8oKSkKLSAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoUGx1Z2luVmFsaWRhdGlvbkVycm9yKToKKyAgICBwbHVnaW4gPSBoZWxs
bygpCisKKyAgICBoZV9wbS5yZWdpc3RlcihwbHVnaW4pCisgICAgd2l0aCBweXRlc3QucmFpc2Vz
KFBsdWdpblZhbGlkYXRpb25FcnJvcikgYXMgZXhjaW5mbzoKICAgICAgICAgaGVfcG0uY2hlY2tf
cGVuZGluZygpCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUucGx1Z2luIGlzIHBsdWdpbgogCiAK
IGRlZiB0ZXN0X3JlZ2lzdGVyX21pc21hdGNoX2FyZyhoZV9wbSk6CkBAIC0xMTUsMTMgKzEzMCwx
NyBAQCBkZWYgdGVzdF9yZWdpc3Rlcl9taXNtYXRjaF9hcmcoaGVfcG0pOgogICAgICAgICBkZWYg
aGVfbWV0aG9kMShzZWxmLCBxbHdramUpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgd2l0aCBw
eXRlc3QucmFpc2VzKFBsdWdpblZhbGlkYXRpb25FcnJvcik6Ci0gICAgICAgIGhlX3BtLnJlZ2lz
dGVyKGhlbGxvKCkpCisgICAgcGx1Z2luID0gaGVsbG8oKQorCisgICAgd2l0aCBweXRlc3QucmFp
c2VzKFBsdWdpblZhbGlkYXRpb25FcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgaGVfcG0ucmVn
aXN0ZXIocGx1Z2luKQorICAgIGFzc2VydCBleGNpbmZvLnZhbHVlLnBsdWdpbiBpcyBwbHVnaW4K
IAogCiBkZWYgdGVzdF9yZWdpc3RlcihwbSk6CiAgICAgY2xhc3MgTXlQbHVnaW4ob2JqZWN0KToK
ICAgICAgICAgcGFzcworCiAgICAgbXkgPSBNeVBsdWdpbigpCiAgICAgcG0ucmVnaXN0ZXIobXkp
CiAgICAgYXNzZXJ0IG15IGluIHBtLmdldF9wbHVnaW5zKCkKQEAgLTE2MCw2ICsxNzksNyBAQCBk
ZWYgdGVzdF9yZWdpc3Rlcl9oaXN0b3JpYyhwbSk6CiAgICAgICAgIEBob29rc3BlYyhoaXN0b3Jp
Yz1UcnVlKQogICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgogICAgICAgICAgICAg
cGFzcworCiAgICAgcG0uYWRkX2hvb2tzcGVjcyhIb29rcykKIAogICAgIHBtLmhvb2suaGVfbWV0
aG9kMS5jYWxsX2hpc3RvcmljKGt3YXJncz1kaWN0KGFyZz0xKSkKQEAgLTE4NCwyNCArMjA0LDQ4
IEBAIGRlZiB0ZXN0X3JlZ2lzdGVyX2hpc3RvcmljKHBtKToKICAgICBhc3NlcnQgb3V0ID09IFsx
LCAxMCwgMTIwLCAxMl0KIAogCi1kZWYgdGVzdF93aXRoX3Jlc3VsdF9tZW1vcml6ZWQocG0pOgor
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJyZXN1bHRfY2FsbGJhY2siLCBbVHJ1ZSwgRmFsc2Vd
KQorZGVmIHRlc3Rfd2l0aF9yZXN1bHRfbWVtb3JpemVkKHBtLCByZXN1bHRfY2FsbGJhY2spOgor
ICAgICIiIlZlcmlmeSB0aGF0IGBgX0hvb2tDYWxsZXIuX21heWJlX2FwcGx5X2hpc3RvcnkoKWAK
KyAgICBjb3JyZWN0bHkgYXBwbGllcyB0aGUgYGByZXN1bHRfY2FsbGJhY2tgYCBmdW5jdGlvbiwg
d2hlbiBwcm92aWRlZCwKKyAgICB0byB0aGUgcmVzdWx0IGZyb20gY2FsbGluZyBlYWNoIG5ld2x5
IHJlZ2lzdGVyZWQgaG9vay4KKyAgICAiIiIKKyAgICBvdXQgPSBbXQorICAgIGlmIHJlc3VsdF9j
YWxsYmFjazoKKworICAgICAgICBkZWYgY2FsbGJhY2socmVzKToKKyAgICAgICAgICAgIG91dC5h
cHBlbmQocmVzKQorCisgICAgZWxzZToKKyAgICAgICAgY2FsbGJhY2sgPSBOb25lCisKICAgICBj
bGFzcyBIb29rcyhvYmplY3QpOgogICAgICAgICBAaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKICAg
ICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZiwgYXJnKToKICAgICAgICAgICAgIHBhc3MKKwogICAg
IHBtLmFkZF9ob29rc3BlY3MoSG9va3MpCiAKKyAgICBjbGFzcyBQbHVnaW4xKG9iamVjdCk6Cisg
ICAgICAgIEBob29raW1wbAorICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgorICAg
ICAgICAgICAgcmV0dXJuIGFyZyAqIDEwCisKKyAgICBwbS5yZWdpc3RlcihQbHVnaW4xKCkpCisK
ICAgICBoZV9tZXRob2QxID0gcG0uaG9vay5oZV9tZXRob2QxCi0gICAgaGVfbWV0aG9kMS5jYWxs
X2hpc3RvcmljKGxhbWJkYSByZXM6IG91dC5hcHBlbmQocmVzKSwgZGljdChhcmc9MSkpCi0gICAg
b3V0ID0gW10KKyAgICBoZV9tZXRob2QxLmNhbGxfaGlzdG9yaWMocmVzdWx0X2NhbGxiYWNrPWNh
bGxiYWNrLCBrd2FyZ3M9ZGljdChhcmc9MSkpCiAKLSAgICBjbGFzcyBQbHVnaW4ob2JqZWN0KToK
KyAgICBjbGFzcyBQbHVnaW4yKG9iamVjdCk6CiAgICAgICAgIEBob29raW1wbAogICAgICAgICBk
ZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgogICAgICAgICAgICAgcmV0dXJuIGFyZyAqIDEwCiAK
LSAgICBwbS5yZWdpc3RlcihQbHVnaW4oKSkKLSAgICBhc3NlcnQgb3V0ID09IFsxMF0KKyAgICBw
bS5yZWdpc3RlcihQbHVnaW4yKCkpCisgICAgaWYgcmVzdWx0X2NhbGxiYWNrOgorICAgICAgICBh
c3NlcnQgb3V0ID09IFsxMCwgMTBdCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IG91dCA9PSBb
XQogCiAKIGRlZiB0ZXN0X3dpdGhfY2FsbGJhY2tzX2ltbWVkaWF0ZWx5X2V4ZWN1dGVkKHBtKToK
QEAgLTIwOSw2ICsyNTMsNyBAQCBkZWYgdGVzdF93aXRoX2NhbGxiYWNrc19pbW1lZGlhdGVseV9l
eGVjdXRlZChwbSk6CiAgICAgICAgIEBob29rc3BlYyhoaXN0b3JpYz1UcnVlKQogICAgICAgICBk
ZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgogICAgICAgICAgICAgcGFzcworCiAgICAgcG0uYWRk
X2hvb2tzcGVjcyhIb29rcykKIAogICAgIGNsYXNzIFBsdWdpbjEob2JqZWN0KToKQEAgLTI4Myw2
ICszMjgsNyBAQCBkZWYgdGVzdF9jYWxsX3dpdGhfdG9vX2Zld19hcmdzKHBtKToKICAgICAgICAg
QGhvb2tpbXBsCiAgICAgICAgIGRlZiBoZV9tZXRob2QxKHNlbGYsIGFyZyk6CiAgICAgICAgICAg
ICAwIC8gMAorCiAgICAgcG0ucmVnaXN0ZXIoUGx1Z2luMSgpKQogICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhIb29rQ2FsbEVycm9yKToKICAgICAgICAgd2l0aCBweXRlc3Qud2FybnMoVXNlcldhcm5p
bmcpOgpAQCAtMzM5LDEzICszODUsMzYgQEAgZGVmIHRlc3Rfc3Vic2V0X2hvb2tfY2FsbGVyKHBt
KToKICAgICBhc3NlcnQgb3V0ID09IFsxMF0KIAogCi1kZWYgdGVzdF9tdWx0aWNhbGxfZGVwcmVj
YXRlZChwbSk6Ci0gICAgY2xhc3MgUDEob2JqZWN0KToKK2RlZiB0ZXN0X2dldF9ob29raW1wbHMo
cG0pOgorICAgIGNsYXNzIEhvb2tzKG9iamVjdCk6CisgICAgICAgIEBob29rc3BlYworICAgICAg
ICBkZWYgaGVfbWV0aG9kMShzZWxmLCBhcmcpOgorICAgICAgICAgICAgcGFzcworCisgICAgcG0u
YWRkX2hvb2tzcGVjcyhIb29rcykKKyAgICBhc3NlcnQgcG0uaG9vay5oZV9tZXRob2QxLmdldF9o
b29raW1wbHMoKSA9PSBbXQorCisgICAgY2xhc3MgUGx1Z2luMShvYmplY3QpOgogICAgICAgICBA
aG9va2ltcGwKLSAgICAgICAgZGVmIG0oc2VsZiwgX19tdWx0aWNhbGxfXywgeCk6CisgICAgICAg
IGRlZiBoZV9tZXRob2QxKHNlbGYsIGFyZyk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBweXRl
c3QuZGVwcmVjYXRlZF9jYWxsKHBtLnJlZ2lzdGVyLCBQMSgpKQorICAgIGNsYXNzIFBsdWdpbjIo
b2JqZWN0KToKKyAgICAgICAgQGhvb2tpbXBsCisgICAgICAgIGRlZiBoZV9tZXRob2QxKHNlbGYs
IGFyZyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBQbHVnaW5ObyhvYmplY3QpOgor
ICAgICAgICBwYXNzCisKKyAgICBwbHVnaW4xLCBwbHVnaW4yLCBwbHVnaW4zID0gUGx1Z2luMSgp
LCBQbHVnaW4yKCksIFBsdWdpbk5vKCkKKyAgICBwbS5yZWdpc3RlcihwbHVnaW4xKQorICAgIHBt
LnJlZ2lzdGVyKHBsdWdpbjIpCisgICAgcG0ucmVnaXN0ZXIocGx1Z2luMykKKworICAgIGhvb2tp
bXBscyA9IHBtLmhvb2suaGVfbWV0aG9kMS5nZXRfaG9va2ltcGxzKCkKKyAgICBob29rX3BsdWdp
bnMgPSBbaXRlbS5wbHVnaW4gZm9yIGl0ZW0gaW4gaG9va2ltcGxzXQorICAgIGFzc2VydCBob29r
X3BsdWdpbnMgPT0gW3BsdWdpbjEsIHBsdWdpbjJdCiAKIAogZGVmIHRlc3RfYWRkX2hvb2tzcGVj
c19ub2hvb2tzKHBtKToKQEAgLTM1OCwxNyArNDI3LDE3NCBAQCBkZWYgdGVzdF9yZWplY3RfcHJl
Zml4ZWRfbW9kdWxlKHBtKToKICAgICBwcmVmaXggaW4gaXRzIG5hbWUgKGluIHRoaXMgY2FzZSBg
J2V4YW1wbGVfKidgIGlzbid0IGNvbGxlY3RlZAogICAgIHdoZW4gcmVnaXN0ZXJpbmcgYSBtb2R1
bGUgd2hpY2ggaW1wb3J0cyBpdC4KICAgICAiIiIKLSAgICBwbS5faW1wbHByZWZpeCA9ICdleGFt
cGxlJworICAgIHBtLl9pbXBscHJlZml4ID0gImV4YW1wbGUiCiAgICAgY29uZnRlc3QgPSB0eXBl
cy5Nb2R1bGVUeXBlKCJjb25mdGVzdCIpCi0gICAgc3JjID0gKCIiIgorICAgIHNyYyA9ICIiIgog
ZGVmIGV4YW1wbGVfaG9vaygpOgogICAgIHBhc3MKLSIiIikKKyIiIgogICAgIGV4ZWMoc3JjLCBj
b25mdGVzdC5fX2RpY3RfXykKICAgICBjb25mdGVzdC5leGFtcGxlX2JsYWggPSB0eXBlcy5Nb2R1
bGVUeXBlKCJleGFtcGxlX2JsYWgiKQotICAgIG5hbWUgPSBwbS5yZWdpc3Rlcihjb25mdGVzdCkK
LSAgICBhc3NlcnQgbmFtZSA9PSAnY29uZnRlc3QnCi0gICAgYXNzZXJ0IGdldGF0dHIocG0uaG9v
aywgJ2V4YW1wbGVfYmxhaCcsIE5vbmUpIGlzIE5vbmUKLSAgICBhc3NlcnQgZ2V0YXR0cihwbS5o
b29rLCAnZXhhbXBsZV9ob29rJywgTm9uZSkgICMgY29uZnRlc3QuZXhhbXBsZV9ob29rIHNob3Vs
ZCBiZSBjb2xsZWN0ZWQKLSAgICBhc3NlcnQgcG0ucGFyc2VfaG9va2ltcGxfb3B0cyhjb25mdGVz
dCwgJ2V4YW1wbGVfYmxhaCcpIGlzIE5vbmUKLSAgICBhc3NlcnQgcG0ucGFyc2VfaG9va2ltcGxf
b3B0cyhjb25mdGVzdCwgJ2V4YW1wbGVfaG9vaycpID09IHt9CisgICAgd2l0aCBweXRlc3QuZGVw
cmVjYXRlZF9jYWxsKCk6CisgICAgICAgIG5hbWUgPSBwbS5yZWdpc3Rlcihjb25mdGVzdCkKKyAg
ICBhc3NlcnQgbmFtZSA9PSAiY29uZnRlc3QiCisgICAgYXNzZXJ0IGdldGF0dHIocG0uaG9vaywg
ImV4YW1wbGVfYmxhaCIsIE5vbmUpIGlzIE5vbmUKKyAgICBhc3NlcnQgZ2V0YXR0cigKKyAgICAg
ICAgcG0uaG9vaywgImV4YW1wbGVfaG9vayIsIE5vbmUKKyAgICApICAjIGNvbmZ0ZXN0LmV4YW1w
bGVfaG9vayBzaG91bGQgYmUgY29sbGVjdGVkCisgICAgd2l0aCBweXRlc3QuZGVwcmVjYXRlZF9j
YWxsKCk6CisgICAgICAgIGFzc2VydCBwbS5wYXJzZV9ob29raW1wbF9vcHRzKGNvbmZ0ZXN0LCAi
ZXhhbXBsZV9ibGFoIikgaXMgTm9uZQorICAgICAgICBhc3NlcnQgcG0ucGFyc2VfaG9va2ltcGxf
b3B0cyhjb25mdGVzdCwgImV4YW1wbGVfaG9vayIpID09IHt9CisKKworZGVmIHRlc3RfbG9hZF9z
ZXR1cHRvb2xzX2luc3RhbnRpYXRpb24obW9ua2V5cGF0Y2gsIHBtKToKKyAgICBjbGFzcyBFbnRy
eVBvaW50KG9iamVjdCk6CisgICAgICAgIG5hbWUgPSAibXluYW1lIgorICAgICAgICBncm91cCA9
ICJoZWxsbyIKKyAgICAgICAgdmFsdWUgPSAibXluYW1lOmZvbyIKKworICAgICAgICBkZWYgbG9h
ZChzZWxmKToKKyAgICAgICAgICAgIGNsYXNzIFBzZXVkb1BsdWdpbihvYmplY3QpOgorICAgICAg
ICAgICAgICAgIHggPSA0MgorCisgICAgICAgICAgICByZXR1cm4gUHNldWRvUGx1Z2luKCkKKwor
ICAgIGNsYXNzIERpc3RyaWJ1dGlvbihvYmplY3QpOgorICAgICAgICBlbnRyeV9wb2ludHMgPSAo
RW50cnlQb2ludCgpLCkKKworICAgIGRpc3QgPSBEaXN0cmlidXRpb24oKQorCisgICAgZGVmIG15
X2Rpc3RyaWJ1dGlvbnMoKToKKyAgICAgICAgcmV0dXJuIChkaXN0LCkKKworICAgIG1vbmtleXBh
dGNoLnNldGF0dHIoaW1wb3J0bGliX21ldGFkYXRhLCAiZGlzdHJpYnV0aW9ucyIsIG15X2Rpc3Ry
aWJ1dGlvbnMpCisgICAgbnVtID0gcG0ubG9hZF9zZXR1cHRvb2xzX2VudHJ5cG9pbnRzKCJoZWxs
byIpCisgICAgYXNzZXJ0IG51bSA9PSAxCisgICAgcGx1Z2luID0gcG0uZ2V0X3BsdWdpbigibXlu
YW1lIikKKyAgICBhc3NlcnQgcGx1Z2luLnggPT0gNDIKKyAgICByZXQgPSBwbS5saXN0X3BsdWdp
bl9kaXN0aW5mbygpCisgICAgIyBwb29yIG1hbidzIGBhc3NlcnQgcmV0ID09IFsocGx1Z2luLCBt
b2NrLkFOWSldYAorICAgIGFzc2VydCBsZW4ocmV0KSA9PSAxCisgICAgYXNzZXJ0IGxlbihyZXRb
MF0pID09IDIKKyAgICBhc3NlcnQgcmV0WzBdWzBdID09IHBsdWdpbgorICAgIGFzc2VydCByZXRb
MF1bMV0uX2Rpc3QgPT0gZGlzdAorICAgIG51bSA9IHBtLmxvYWRfc2V0dXB0b29sc19lbnRyeXBv
aW50cygiaGVsbG8iKQorICAgIGFzc2VydCBudW0gPT0gMCAgIyBubyBwbHVnaW4gbG9hZGVkIGJ5
IHRoaXMgY2FsbAorCisKK2RlZiB0ZXN0X2FkZF90cmFjZWZ1bmNzKGhlX3BtKToKKyAgICBvdXQg
PSBbXQorCisgICAgY2xhc3MgYXBpMShvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwKKyAgICAg
ICAgZGVmIGhlX21ldGhvZDEoc2VsZik6CisgICAgICAgICAgICBvdXQuYXBwZW5kKCJoZV9tZXRo
b2QxLWFwaTEiKQorCisgICAgY2xhc3MgYXBpMihvYmplY3QpOgorICAgICAgICBAaG9va2ltcGwK
KyAgICAgICAgZGVmIGhlX21ldGhvZDEoc2VsZik6CisgICAgICAgICAgICBvdXQuYXBwZW5kKCJo
ZV9tZXRob2QxLWFwaTIiKQorCisgICAgaGVfcG0ucmVnaXN0ZXIoYXBpMSgpKQorICAgIGhlX3Bt
LnJlZ2lzdGVyKGFwaTIoKSkKKworICAgIGRlZiBiZWZvcmUoaG9va19uYW1lLCBob29rX2ltcGxz
LCBrd2FyZ3MpOgorICAgICAgICBvdXQuYXBwZW5kKChob29rX25hbWUsIGxpc3QoaG9va19pbXBs
cyksIGt3YXJncykpCisKKyAgICBkZWYgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lLCBob29rX2lt
cGxzLCBrd2FyZ3MpOgorICAgICAgICBvdXQuYXBwZW5kKChvdXRjb21lLCBob29rX25hbWUsIGxp
c3QoaG9va19pbXBscyksIGt3YXJncykpCisKKyAgICB1bmRvID0gaGVfcG0uYWRkX2hvb2tjYWxs
X21vbml0b3JpbmcoYmVmb3JlLCBhZnRlcikKKworICAgIGhlX3BtLmhvb2suaGVfbWV0aG9kMShh
cmc9MSkKKyAgICBhc3NlcnQgbGVuKG91dCkgPT0gNAorICAgIGFzc2VydCBvdXRbMF1bMF0gPT0g
ImhlX21ldGhvZDEiCisgICAgYXNzZXJ0IGxlbihvdXRbMF1bMV0pID09IDIKKyAgICBhc3NlcnQg
aXNpbnN0YW5jZShvdXRbMF1bMl0sIGRpY3QpCisgICAgYXNzZXJ0IG91dFsxXSA9PSAiaGVfbWV0
aG9kMS1hcGkyIgorICAgIGFzc2VydCBvdXRbMl0gPT0gImhlX21ldGhvZDEtYXBpMSIKKyAgICBh
c3NlcnQgbGVuKG91dFszXSkgPT0gNAorICAgIGFzc2VydCBvdXRbM11bMV0gPT0gb3V0WzBdWzBd
CisKKyAgICB1bmRvKCkKKyAgICBoZV9wbS5ob29rLmhlX21ldGhvZDEoYXJnPTEpCisgICAgYXNz
ZXJ0IGxlbihvdXQpID09IDQgKyAyCisKKworZGVmIHRlc3RfaG9va190cmFjaW5nKGhlX3BtKToK
KyAgICBzYXZlaW5kZW50ID0gW10KKworICAgIGNsYXNzIGFwaTEob2JqZWN0KToKKyAgICAgICAg
QGhvb2tpbXBsCisgICAgICAgIGRlZiBoZV9tZXRob2QxKHNlbGYpOgorICAgICAgICAgICAgc2F2
ZWluZGVudC5hcHBlbmQoaGVfcG0udHJhY2Uucm9vdC5pbmRlbnQpCisKKyAgICBjbGFzcyBhcGky
KG9iamVjdCk6CisgICAgICAgIEBob29raW1wbAorICAgICAgICBkZWYgaGVfbWV0aG9kMShzZWxm
KToKKyAgICAgICAgICAgIHNhdmVpbmRlbnQuYXBwZW5kKGhlX3BtLnRyYWNlLnJvb3QuaW5kZW50
KQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisKKyAgICBoZV9wbS5yZWdpc3Rlcihh
cGkxKCkpCisgICAgb3V0ID0gW10KKyAgICBoZV9wbS50cmFjZS5yb290LnNldHdyaXRlcihvdXQu
YXBwZW5kKQorICAgIHVuZG8gPSBoZV9wbS5lbmFibGVfdHJhY2luZygpCisgICAgdHJ5OgorICAg
ICAgICBpbmRlbnQgPSBoZV9wbS50cmFjZS5yb290LmluZGVudAorICAgICAgICBoZV9wbS5ob29r
LmhlX21ldGhvZDEoYXJnPTEpCisgICAgICAgIGFzc2VydCBpbmRlbnQgPT0gaGVfcG0udHJhY2Uu
cm9vdC5pbmRlbnQKKyAgICAgICAgYXNzZXJ0IGxlbihvdXQpID09IDIKKyAgICAgICAgYXNzZXJ0
ICJoZV9tZXRob2QxIiBpbiBvdXRbMF0KKyAgICAgICAgYXNzZXJ0ICJmaW5pc2giIGluIG91dFsx
XQorCisgICAgICAgIG91dFs6XSA9IFtdCisgICAgICAgIGhlX3BtLnJlZ2lzdGVyKGFwaTIoKSkK
KworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBo
ZV9wbS5ob29rLmhlX21ldGhvZDEoYXJnPTEpCisgICAgICAgIGFzc2VydCBoZV9wbS50cmFjZS5y
b290LmluZGVudCA9PSBpbmRlbnQKKyAgICAgICAgYXNzZXJ0IHNhdmVpbmRlbnRbMF0gPiBpbmRl
bnQKKyAgICBmaW5hbGx5OgorICAgICAgICB1bmRvKCkKKworCitkZWYgdGVzdF9pbXBscHJlZml4
X3dhcm5pbmcocmVjd2Fybik6CisgICAgUGx1Z2luTWFuYWdlcihob29rc3BlYy5wcm9qZWN0X25h
bWUsICJoZWxsb18iKQorICAgIHcgPSByZWN3YXJuLnBvcChEZXByZWNhdGlvbldhcm5pbmcpCisg
ICAgYXNzZXJ0ICJ0ZXN0X3BsdWdpbm1hbmFnZXIucHkiIGluIHcuZmlsZW5hbWUKKworCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoImluY2x1ZGVfaG9va3NwZWMiLCBbVHJ1ZSwgRmFsc2VdKQor
ZGVmIHRlc3RfcHJlZml4X2hvb2tpbXBsKGluY2x1ZGVfaG9va3NwZWMpOgorICAgIHdpdGggcHl0
ZXN0LmRlcHJlY2F0ZWRfY2FsbCgpOgorICAgICAgICBwbSA9IFBsdWdpbk1hbmFnZXIoaG9va3Nw
ZWMucHJvamVjdF9uYW1lLCAiaGVsbG9fIikKKworICAgIGlmIGluY2x1ZGVfaG9va3NwZWM6CisK
KyAgICAgICAgY2xhc3MgSG9va1NwZWMob2JqZWN0KToKKyAgICAgICAgICAgIEBob29rc3BlYwor
ICAgICAgICAgICAgZGVmIGhlbGxvX215aG9vayhzZWxmLCBhcmcxKToKKyAgICAgICAgICAgICAg
ICAiIiIgYWRkIHRvIGFyZzEgIiIiCisKKyAgICAgICAgcG0uYWRkX2hvb2tzcGVjcyhIb29rU3Bl
YykKKworICAgIGNsYXNzIFBsdWdpbihvYmplY3QpOgorICAgICAgICBkZWYgaGVsbG9fbXlob29r
KHNlbGYsIGFyZzEpOgorICAgICAgICAgICAgcmV0dXJuIGFyZzEgKyAxCisKKyAgICB3aXRoIHB5
dGVzdC5kZXByZWNhdGVkX2NhbGwoKToKKyAgICAgICAgcG0ucmVnaXN0ZXIoUGx1Z2luKCkpCisg
ICAgICAgIHBtLnJlZ2lzdGVyKFBsdWdpbigpKQorICAgIHJlc3VsdHMgPSBwbS5ob29rLmhlbGxv
X215aG9vayhhcmcxPTE3KQorICAgIGFzc2VydCByZXN1bHRzID09IFsxOCwgMThdCisKKworZGVm
IHRlc3RfcHJlZml4X2hvb2tpbXBsX2RvbnRtYXRjaF9tb2R1bGUoKToKKyAgICB3aXRoIHB5dGVz
dC5kZXByZWNhdGVkX2NhbGwoKToKKyAgICAgICAgcG0gPSBQbHVnaW5NYW5hZ2VyKGhvb2tzcGVj
LnByb2plY3RfbmFtZSwgImhlbGxvXyIpCisKKyAgICBjbGFzcyBCYWRQbHVnaW4ob2JqZWN0KToK
KyAgICAgICAgaGVsbG9fbW9kdWxlID0gX19pbXBvcnRfXygiZW1haWwiKQorCisgICAgcG0ucmVn
aXN0ZXIoQmFkUGx1Z2luKCkpCisgICAgcG0uY2hlY2tfcGVuZGluZygpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfdHJhY2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90
ZXN0X3RyYWNlci5weQppbmRleCA0YTNlMTZjZWM0MzYuLjk5MmVjNjc5MTQ5YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X3RyYWNlci5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90
ZXN0aW5nL3Rlc3RfdHJhY2VyLnB5CkBAIC0xLDkgKzEsMTQgQEAKK2Zyb20gcGx1Z2d5Ll90cmFj
aW5nIGltcG9ydCBUYWdUcmFjZXIKIAotZnJvbSBwbHVnZ3kgaW1wb3J0IF9UYWdUcmFjZXIKK2lt
cG9ydCBweXRlc3QKIAogCi1kZWYgdGVzdF9zaW1wbGUoKToKLSAgICByb290bG9nZ2VyID0gX1Rh
Z1RyYWNlcigpCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiByb290bG9nZ2VyKCk6CisgICAgcmV0dXJu
IFRhZ1RyYWNlcigpCisKKworZGVmIHRlc3Rfc2ltcGxlKHJvb3Rsb2dnZXIpOgogICAgIGxvZyA9
IHJvb3Rsb2dnZXIuZ2V0KCJweXRlc3QiKQogICAgIGxvZygiaGVsbG8iKQogICAgIG91dCA9IFtd
CkBAIC0xNiw4ICsyMSw3IEBAIGRlZiB0ZXN0X3NpbXBsZSgpOgogICAgIGFzc2VydCBvdXRbMV0g
PT0gImhlbGxvIFtweXRlc3Q6Y29sbGVjdGlvbl1cbiIKIAogCi1kZWYgdGVzdF9pbmRlbnQoKToK
LSAgICByb290bG9nZ2VyID0gX1RhZ1RyYWNlcigpCitkZWYgdGVzdF9pbmRlbnQocm9vdGxvZ2dl
cik6CiAgICAgbG9nID0gcm9vdGxvZ2dlci5nZXQoIjEiKQogICAgIG91dCA9IFtdCiAgICAgbG9n
LnJvb3Quc2V0d3JpdGVyKGxhbWJkYSBhcmc6IG91dC5hcHBlbmQoYXJnKSkKQEAgLTMzLDI3ICsz
NywyOCBAQCBkZWYgdGVzdF9pbmRlbnQoKToKICAgICBsb2cucm9vdC5pbmRlbnQgLT0gMQogICAg
IGxvZygibGFzdCIpCiAgICAgYXNzZXJ0IGxlbihvdXQpID09IDcKLSAgICBuYW1lcyA9IFt4Wzp4
LnJmaW5kKCcgWycpXSBmb3IgeCBpbiBvdXRdCisgICAgbmFtZXMgPSBbeFs6IHgucmZpbmQoIiBb
IildIGZvciB4IGluIG91dF0KICAgICBhc3NlcnQgbmFtZXMgPT0gWwotICAgICAgICAnaGVsbG8n
LCAnICBsaW5lMScsICcgIGxpbmUyJywKLSAgICAgICAgJyAgICBsaW5lMycsICcgICAgbGluZTQn
LCAnICBsaW5lNScsICdsYXN0J10KKyAgICAgICAgImhlbGxvIiwKKyAgICAgICAgIiAgbGluZTEi
LAorICAgICAgICAiICBsaW5lMiIsCisgICAgICAgICIgICAgbGluZTMiLAorICAgICAgICAiICAg
IGxpbmU0IiwKKyAgICAgICAgIiAgbGluZTUiLAorICAgICAgICAibGFzdCIsCisgICAgXQogCiAK
LWRlZiB0ZXN0X3JlYWRhYmxlX291dHB1dF9kaWN0YXJncygpOgotICAgIHJvb3Rsb2dnZXIgPSBf
VGFnVHJhY2VyKCkKK2RlZiB0ZXN0X3JlYWRhYmxlX291dHB1dF9kaWN0YXJncyhyb290bG9nZ2Vy
KToKIAotICAgIG91dCA9IHJvb3Rsb2dnZXIuZm9ybWF0X21lc3NhZ2UoWyd0ZXN0J10sIFsxXSkK
LSAgICBhc3NlcnQgb3V0ID09IFsnMSBbdGVzdF1cbiddCisgICAgb3V0ID0gcm9vdGxvZ2dlci5f
Zm9ybWF0X21lc3NhZ2UoWyJ0ZXN0Il0sIFsxXSkKKyAgICBhc3NlcnQgb3V0ID09ICIxIFt0ZXN0
XVxuIgogCi0gICAgb3V0MiA9IHJvb3Rsb2dnZXIuZm9ybWF0X21lc3NhZ2UoWyd0ZXN0J10sIFsn
dGVzdCcsIHsnYSc6IDF9XSkKLSAgICBhc3NlcnQgb3V0MiA9PSBbCi0gICAgICAgICd0ZXN0IFt0
ZXN0XVxuJywKLSAgICAgICAgJyAgICBhOiAxXG4nCi0gICAgXQorICAgIG91dDIgPSByb290bG9n
Z2VyLl9mb3JtYXRfbWVzc2FnZShbInRlc3QiXSwgWyJ0ZXN0IiwgeyJhIjogMX1dKQorICAgIGFz
c2VydCBvdXQyID09ICJ0ZXN0IFt0ZXN0XVxuICAgIGE6IDFcbiIKIAogCi1kZWYgdGVzdF9zZXRw
cm9jZXNzb3IoKToKLSAgICByb290bG9nZ2VyID0gX1RhZ1RyYWNlcigpCitkZWYgdGVzdF9zZXRw
cm9jZXNzb3Iocm9vdGxvZ2dlcik6CiAgICAgbG9nID0gcm9vdGxvZ2dlci5nZXQoIjEiKQogICAg
IGxvZzIgPSBsb2cuZ2V0KCIyIikKICAgICBhc3NlcnQgbG9nMi50YWdzID09IHR1cGxlKCIxMiIp
CkBAIC03MSwxOSArNzYsMyBAQCBkZWYgdGVzdF9zZXRwcm9jZXNzb3IoKToKICAgICBsb2cyKCJz
ZWVuIikKICAgICB0YWdzLCBhcmdzID0gbDJbMF0KICAgICBhc3NlcnQgYXJncyA9PSAoInNlZW4i
LCkKLQotCi1kZWYgdGVzdF9zZXRteXByb2Nlc3NvcigpOgotICAgIHJvb3Rsb2dnZXIgPSBfVGFn
VHJhY2VyKCkKLSAgICBsb2cgPSByb290bG9nZ2VyLmdldCgiMSIpCi0gICAgbG9nMiA9IGxvZy5n
ZXQoIjIiKQotICAgIG91dCA9IFtdCi0gICAgbG9nMi5zZXRteXByb2Nlc3NvcihsYW1iZGEgKmFy
Z3M6IG91dC5hcHBlbmQoYXJncykpCi0gICAgbG9nKCJub3Qgc2VlbiIpCi0gICAgYXNzZXJ0IG5v
dCBvdXQKLSAgICBsb2cyKDQyKQotICAgIGFzc2VydCBsZW4ob3V0KSA9PSAxCi0gICAgdGFncywg
YXJncyA9IG91dFswXQotICAgIGFzc2VydCAiMSIgaW4gdGFncwotICAgIGFzc2VydCAiMiIgaW4g
dGFncwotICAgIGFzc2VydCBhcmdzID09ICg0MiwpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90
ZXN0aW5nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRiZGJjMTFkOTU1Li4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvYmVuY2htYXJr
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3Rp
bmcvdGVzdF9kZXRhaWxzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2hlbHBlcnMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaG9va3JlbGF5LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVz
dGluZy90ZXN0X21ldGhvZF9vcmRlcmluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9t
dWx0aWNhbGwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF90cmFjZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90b3guaW5pCmluZGV4IDg5ZDQ0ZTM1MmRiYS4uMWE0
ZTNmNTI4ODM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90b3guaW5pCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3RveC5pbmkKQEAgLTEsNDQgKzEsNTggQEAKIFt0b3hdCi1lbnZsaXN0PWNoZWNrLGRvY3Ms
cHl7MjcsMzQsMzUsMzYscHl9LXB5dGVzdHJlbGVhc2UscHl7MjcsMzZ9LXB5dGVzdHttYXN0ZXIs
ZmVhdHVyZXN9CitlbnZsaXN0PWxpbnRpbmcsZG9jcyxweXsyNywzNCwzNSwzNiwzNywzOCxweSxw
eTN9LHB5ezM2LDM3fS1weXRlc3R7bWFzdGVyLGZlYXR1cmVzfQogCiBbdGVzdGVudl0KLWNvbW1h
bmRzPXB5LnRlc3Qge3Bvc2FyZ3M6dGVzdGluZy99Citjb21tYW5kcz0KKyAge2VudjpfUExVR0dZ
X1RPWF9DTUQ6cHl0ZXN0fSB7cG9zYXJnc30KKyAgY292ZXJhZ2U6IGNvdmVyYWdlIHJlcG9ydCAt
bQorICBjb3ZlcmFnZTogY292ZXJhZ2UgeG1sCiBzZXRlbnY9CiAgIF9QWVRFU1RfU0VUVVBfU0tJ
UF9QTFVHR1lfREVQPTEKKyAgY292ZXJhZ2U6IF9QTFVHR1lfVE9YX0NNRD1jb3ZlcmFnZSBydW4g
LW0gcHl0ZXN0CisgIHB5dGVzdG1hc3RlcjogX1BZVEVTVF9ERVA9Z2l0K2h0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC5naXRAbWFzdGVyCisgIHB5dGVzdGZlYXR1cmVzOiBfUFlU
RVNUX0RFUD1naXQraHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LmdpdEBmZWF0
dXJlcwogZGVwcz0KLSAgcHl0ZXN0cmVsZWFzZTogcHl0ZXN0Ci0gIHB5dGVzdG1hc3RlcjogZ2l0
K2h0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC5naXRAbWFzdGVyCi0gIHB5dGVz
dGZlYXR1cmVzOiBnaXQraHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LmdpdEBm
ZWF0dXJlcworICBjb3ZlcmFnZTogY292ZXJhZ2UKKyAge2VudjpfUFlURVNUX0RFUDpweXRlc3R9
CiAKIFt0ZXN0ZW52OmJlbmNobWFya10KLWNvbW1hbmRzPXB5LnRlc3Qge3Bvc2FyZ3M6dGVzdGlu
Zy9iZW5jaG1hcmsucHl9Citjb21tYW5kcz1weXRlc3Qge3Bvc2FyZ3M6dGVzdGluZy9iZW5jaG1h
cmsucHl9CiBkZXBzPQogICBweXRlc3QKICAgcHl0ZXN0LWJlbmNobWFyawogCi1bdGVzdGVudjpj
aGVja10KLWRlcHMgPQotICBmbGFrZTgKLSAgcmVzdHJ1Y3R1cmVkdGV4dF9saW50Ci0gIHB5Z21l
bnRzCi1jb21tYW5kcyA9Ci0gIGZsYWtlOCBwbHVnZ3kucHkgc2V0dXAucHkgdGVzdGluZwotICBy
c3QtbGludCBDSEFOR0VMT0cucnN0IFJFQURNRS5yc3QKK1t0ZXN0ZW52OmxpbnRpbmddCitza2lw
X2luc3RhbGwgPSB0cnVlCitiYXNlcHl0aG9uID0gcHl0aG9uMy42CitkZXBzID0gcHJlLWNvbW1p
dAorY29tbWFuZHMgPSBwcmUtY29tbWl0IHJ1biAtLWFsbC1maWxlcyAtLXNob3ctZGlmZi1vbi1m
YWlsdXJlCiAKIFt0ZXN0ZW52OmRvY3NdCiBkZXBzID0KICAgc3BoaW54CiAgIHB5Z21lbnRzCiBj
b21tYW5kcyA9Ci0gIHNwaGlueC1idWlsZCAtYiBodG1sIHt0b3hpbmlkaXJ9L2RvY3Mge3RveGlu
aWRpcn0vYnVpbGQvaHRtbC1kb2NzCisgIHNwaGlueC1idWlsZCAtVyAtYiBodG1sIHt0b3hpbmlk
aXJ9L2RvY3Mge3RveGluaWRpcn0vYnVpbGQvaHRtbC1kb2NzCiAKIFtweXRlc3RdCiBtaW52ZXJz
aW9uPTIuMAordGVzdHBhdGhzID0gdGVzdGluZwogIy0tcHlhcmdzIC0tZG9jdGVzdC1tb2R1bGVz
IC0taWdub3JlPS50b3gKLWFkZG9wdHM9LXJ4c1gKLW5vcmVjdXJzZWRpcnM9LnRveCBqYSAuaGcg
LmVudioKK2FkZG9wdHM9LXIgYQogZmlsdGVyd2FybmluZ3MgPQogICBlcnJvcgogCiBbZmxha2U4
XQogbWF4LWxpbmUtbGVuZ3RoPTk5CisKK1t0ZXN0ZW52OnJlbGVhc2VdCitkZWNyaXB0aW9uID0g
ZG8gYSByZWxlYXNlLCByZXF1aXJlZCBwb3Nhcmcgb2YgdGhlIHZlcnNpb24gbnVtYmVyCitiYXNl
cHl0aG9uID0gcHl0aG9uMworc2tpcHNkaXN0ID0gVHJ1ZQordXNlZGV2ZWxvcCA9IFRydWUKK3Bh
c3NlbnYgPSAqCitkZXBzID0KKyAgICBjb2xvcmFtYQorICAgIGdpdHB5dGhvbgorICAgIHRvd25j
cmllcgorY29tbWFuZHMgPSBweXRob24gc2NyaXB0cy9yZWxlYXNlLnB5IHtwb3NhcmdzfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MxZTU5YzFhMjVmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9DSEFOR0VMT0cucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
UkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2FwcHZleW9yLnltbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NldHVw
LmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdG94LmluaQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS8uZ2l0YXR0cmlidXRlcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmdpdGF0dHJpYnV0ZXMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMjQ2ODc5YzRkYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEgQEAKKyouZHVt
cCAgIGVvbD1sZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uZ2l0
aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWJiMGQ0NTdk
NDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMTIg
QEAKKworLmNhY2hlLworLnRveC8KK19fcHljYWNoZV9fLworCisqLnB5YworKi5weW8KKworKi5l
Z2ctaW5mbworLmVnZ3MvCisKK2Rpc3QvKgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uaGdpZ25vcmUg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5Ly5oZ2lnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjM0OTc2ZGE1ZDE1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmhnaWdub3JlCkBA
IC0wLDAgKzEsMjkgQEAKKworIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBgaGdpbXBvcnRz
dm5gCitzeW50YXg6Z2xvYgorLnN2bgorLmhnc3ZuCisKKyMgVGhlc2UgbGluZXMgYXJlIHN1Z2dl
c3RlZCBhY2NvcmRpbmcgdG8gdGhlIHN2bjppZ25vcmUgcHJvcGVydHkKKyMgRmVlbCBmcmVlIHRv
IGVuYWJsZSB0aGVtIGJ5IHVuY29tbWVudGluZyB0aGVtCitzeW50YXg6Z2xvYgorKi5weWMKKyou
cHlvCisqLnN3cAorKi5odG1sCisqLmNsYXNzCisqLm9yaWcKKyp+CisKK2RvYy9fYnVpbGQKK2J1
aWxkLworZGlzdC8KKyouZWdnLWluZm8KK2lzc3VlLworZW52LworM3JkcGFydHkvCisudG94Cits
aWIvCitiaW4vCitpbmNsdWRlLworc3JjLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uaGd0YWdzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS8uaGd0YWdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
OWQ0ODA5NWJmNjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uaGd0YWdzCkBAIC0wLDAg
KzEsNjggQEAKKzUyYzZkOWU3ODc3N2E1YTM0ZTgxMzEyMzk5N2RmYzYxNGExYTQ3NjcgMS4wLjBi
MworMWM3YWFhOGM2MWYzYjA5NDU5MjFhOWFjYzdiZWIxODQyMDFhZWQ0YiAxLjAuMGI0CisxYzdh
YWE4YzYxZjNiMDk0NTkyMWE5YWNjN2JlYjE4NDIwMWFlZDRiIDEuMC4wYjQKKzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgMS4wLjBiNAorMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAxLjAuMGI0Cis4Y2Q2ZWI5MWViYTMxM2IwMTJkNmU1Njhm
MzdkODQ0ZGMwNzUxZjJlIDEuMC4wYjQKKzhjZDZlYjkxZWJhMzEzYjAxMmQ2ZTU2OGYzN2Q4NDRk
YzA3NTFmMmUgMS4wLjBiNAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MCAxLjAuMGI0CisyY2MwNTA3ZjExN2ZmZTcyMWRmZjdlZTAyNjY0OGNmY2UwMGVjOTJmIDEuMC4w
YjYKKzg2ZjFlMWI2ZTQ5YmY1ODgyYTgwOWYxMWVkZDFkYmIwODE2MmNkYWQgMS4wLjBiOAorODZm
MWUxYjZlNDliZjU4ODJhODA5ZjExZWRkMWRiYjA4MTYyY2RhZCAxLjAuMGI4CitjNjNmMzVjMjY2
Y2JiMjZkYWQ2Yjg3YjVlMTE1ZDY1Njg1YWRmNDQ4IDEuMC4wYjgKK2M2M2YzNWMyNjZjYmIyNmRh
ZDZiODdiNWUxMTVkNjU2ODVhZGY0NDggMS4wLjBiOAorMGVhYTBmZGYyYmEwMTYzY2Y1MzRkYzJl
ZmY0YmEyZTVmYzY2YzI2MSAxLjAuMGI4CitlMmE2MDY1M2NiNDkwYWVlZDgxYmJiZDgzYzA3MGI5
OTQwMWMyMTFjIDEuMC4wYjkKKzVlYTBjZGY3ODU0YzNkNDI3OGQzNmVkYTk0YTJiNjg0ODNhMGUy
MTEgMS4wLjAKKzVlYTBjZGY3ODU0YzNkNDI3OGQzNmVkYTk0YTJiNjg0ODNhMGUyMTEgMS4wLjAK
KzdhY2RlMzYwZDk0YjZhMjY5MGNlM2QwM2ZmMzkzMDFkYTg0YzBhMmIgMS4wLjAKKzZiZDIyMTk4
MWFjOTkxMDMwMDJjMWNiOTRmZWRlNDAwZDIzYTk2YTEgMS4wLjEKKzQ4MTZlOGI4MDYwMmEzZmQz
YTBhMTIwMzMzYWQ4NWZiZTdkOGJhYjQgMS4wLjIKKzYwYzQ0YmRiZjA5MzI4NWRjNjlkNTQ2MmQ0
ZGJiNGFjYWQzMjVjYTYgMS4xLjAKKzMxOTE4N2ZjZGE2NjcxNGM1ZWIxMzUzNDkyYmFiZWVjM2Qz
YzgyNmYgMS4xLjEKKzRmYzUyMTJmNzYyNmE1NmI5ZWI2NDM3YjVjNjczZjU2ZGQ3ZWI5NDIgMS4y
LjAKK2MxNDNhOGM4ODQwYTFjNjg1NzA4OTBjOGFjNjE2NWJiZjkyZmQzYzYgMS4yLjEKK2VhZmQz
YzI1NmU4NzMyZGZiMGE0ZDQ5ZDA1MWI1YjQzMzk4NTg5MjYgMS4zLjAKK2Q1ZWFjZjM5MGFmNzQ1
NTMyMjcxMjJiODVlMjAzNDVkNDdiMmY5ZTYgMS4zLjEKK2Q1ZWFjZjM5MGFmNzQ1NTMyMjcxMjJi
ODVlMjAzNDVkNDdiMmY5ZTYgMS4zLjEKKzhiOGU3YzI1YTEzY2Y4NjNmMDFiMmRkOTU1OTc4Mjg1
YWU5ZGFmNmEgMS4zLjEKKzNiZmY0NGIxODhhN2VjMWFmMzI4ZDk3N2I5ZDM5YjY3NTdiYjM4ZGYg
MS4zLjIKK2M1OWQzZmE4NjgxYTViNTk2NmI4Mzc1YjE2ZmNjZDY0YTNhOGRiZWIgMS4zLjMKKzc5
ZWY2Mzc3NzA1MTg0YzU1NjMzZDQ1NjgzMmVlYTMxOGZlZGNmNjEgMS4zLjQKKzc5ZWY2Mzc3NzA1
MTg0YzU1NjMzZDQ1NjgzMmVlYTMxOGZlZGNmNjEgMS4zLjQKKzkwZmZmZDM1MzczZTlmMTI1YWYy
MzNmNzhiMTk0MTZmMDkzOGQ4NDEgMS4zLjQKKzUzNDZhYjQxYjA1OWM5NWE0OGNiZTFlOGE3YmFl
OTZjZTZlMGRhMjcgMS40LjAKKzFmMzEyNWNiYTc5NzY1Mzg5NTJiZTI2OGYxMDdjMWQwYzM2YzVj
ZTggMS40LjEKKzA0YWIyMmRiNGZmNzM3Y2YzMWU5MWQ3NWEwZjVkNzA3N2YzMjQxNjcgMS40LjIK
Kzk5NTBiZjlkNjg0YTk4NGQ1MTE3OTUwMTM0MjFjODljNWNmODhiZWYgMS40LjMKK2Q5OTUxZTNi
ZGJjNzY1ZTczODM1YWUxMzAxMmY2YTA3NGQxM2Q4YmYgMS40LjQKK2I4MjdkZDE1NmEzNjc1M2Uz
MmM3ZjNmMTVjZTgyZDZmZTllMzU2YzggMS40LjYKK2YxNTcyNmY5ZTVhNjdjYzYyMjFjNDk5YWZm
YTQ4NDBlOWQ1OTE3NjMgMS40LjcKK2FiZmFiZDA3YTFkMzI4ZjEzYzczMGU4YTUwZDgwZDJlNDcw
YWZkM2IgMS40LjkKKzdmMzdlZTBhZmY5YmU0YjgzOWQ2NzU5Y2ZlZTMzNmY2MGU4MzkzYTQgMS40
LjEwCitmZTQ1OTMyNjNlZmExMGVhN2JhMDE0ZGI2ZTMzNzllMGI4MjM2OGEyIDEuNC4xMQorZjA3
YWYyNWEyNjc4NmU0ODI1YjUxNzBlMTdhZDY5MzI0NWNiMzQyNiAxLjQuMTIKK2QzNzMwZDg0YmE3
ZWRhOTJmZDM0NjlhM2Y2M2ZkNmQ4Y2IyMmM5NzUgMS40LjEzCisxMmMxYWU4ZTdjNTM0NTcyMWU5
ZWM5ZjhlMjdiMWUzNmMwN2Y3NGRjIDEuNC4xNAorMTJjMWFlOGU3YzUzNDU3MjFlOWVjOWY4ZTI3
YjFlMzZjMDdmNzRkYyAxLjQuMTQKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAgMS40LjE0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDEu
NC4xNAorMTQ5N2UyZWZkMGY4YzczYTBlM2Q1MjlkZWJmMGM0ODllNGNkNmNhYiAxLjQuMTQKK2Uw
NjUwMTRjMWNlOGFkMTEwYTM4MWU5YmFhYWE1ZDY0N2JhN2FjNmIgMS40LjE1CitlOWU1YjM4ZjUz
ZGMzNWIzNWFhMWY5ZWU5YTliZTliYmQyZDJjM2IxIDEuNC4xNgorYzYwMzUwMzk0NWY1MmI3ODUy
MmQ5NmE0MjM2MDVjYmM5NTMyMzZkMyAxLjQuMTcKK2M1OTIwMTEwNWEyOTgwMWNjODU4ZWI5MTYw
YjdhMTk3OTFiOTFhMzUgMS40LjE4CisyODRjYzE3MmUyOTRkNDhlZGM4NDAwMTJlMTQ1MWMzMmMz
OTYzZDkyIDEuNC4xOQorYTNlMDYyNmFhMGM1YWVjZjI3MTM2N2RjNzdlNDc2YWIyMTZlYTNjOCAx
LjQuMjAKKzVlNDgwMTZjNGEzYWY4ZTczNThhMTI2N2QzM2QwMjFlNzE3NjViZWQgMS40LjIxCisw
MWFlMmNmY2M2MWM0ZmNiM2FhNTAzMTM0OWFkYjViNDY3YzMxMDE4IDEuNC4yMworNWZmZDk4MmY0
ZGZmNjBiNTg4ZjMwOWNkOWJkYzYxMDM2NTQ3MjgyYSAxLjQuMjQKK2RjOWZmYmNhZjFmN2Q3MmU5
NmJlM2Y2OGMxMWRlZWJiN2U3MTkzYzUgMS40LjI1Cis2ZGUxYTQ0YmY3NWRlN2FmNGZjYWU5NDdj
MjM1ZTkwNzJiYmRiYjlhIDEuNC4yNgorN2Q2NTBiYTI2NTc4OTBhMjI1M2M4YzRhODNmMTcwZmVi
ZWJkOTBmYSAxLjQuMjcKKzdkNjUwYmEyNjU3ODkwYTIyNTNjOGM0YTgzZjE3MGZlYmViZDkwZmEg
MS40LjI3CisxODEwMDAzZGVjNjNkZDFiNTA2YTIzODQ5ODYxZmZmYTViYzNiYTEzIDEuNC4yNwor
YmEwODcwNmYwOGRkZWExYjc3YTQyNmYwMGRmZTJiZGMyNDQzNDVlOCAxLjQuMjgKKzRlODA1NGFk
YTYzZjMzMjdiY2Y3NTlhZTdjZDM2YzdjODY1MmJjOWIgMS40LjI5CiszNjZhYjM0NjYxMGM2ZGU4
YWFhNzYxN2UyNDAxMTc5NGI0MDIzNmM2IDEuNC4zMAorNjU3MzgwZTQzOWY5YjdlMDQ5MThjYjE2
MmNiMmU0NjM4ODI0NGI0MiAxLjQuMzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLnRyYXZpcy55bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5Ly50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uOTE3YzU5ZDE0YjcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8udHJhdmlzLnlt
bApAQCAtMCwwICsxLDI3IEBACitzdWRvOiBmYWxzZQorbGFuZ3VhZ2U6IHB5dGhvbgorcHl0aG9u
OgorLSAnMi43JworLSAnMy40JworLSAnMy41JworLSAnMy42JworLSAncHlweS01LjQnCitlbnY6
CistIERFUFM9InB5dGVzdH49Mi45LjAiCistIERFUFM9InB5dGVzdH49My4wLjAiCisjLSBERVBT
PSJweXRlc3R+PTMuMS4wIgorCittYXRyaXg6CisKKyAgaW5jbHVkZToKKyAgLSBweXRob246ICcy
LjcnCisgICAgIyB1c2luZyBhIGRpZmZlcmVudCBvcHRpb24gZHVlIHRvIHB5dGVzdC1hZGRvcHRz
IHB5dGVzdGVyIGlzc3VlcworICAgIGVudjogUFlURVNUX1hBRERPUFRTPSItbiAzIC0tcnVuc2xv
d3Rlc3RzIiBERVBTPSJweXRlc3R+PTMuMC4wIHB5dGVzdC14ZGlzdCIKKyAgYWxsb3dfZmFpbHVy
ZXM6CisgIC0gcHl0aG9uOiAncHlweS01LjQnCitpbnN0YWxsOgorLSBwaXAgaW5zdGFsbCAtVSBz
ZXR1cHRvb2xzIHNldHVwdG9vbHNfc2NtCistIHBpcCBpbnN0YWxsICRERVBTCistIHBpcCBpbnN0
YWxsIC1VIC4gLS1mb3JjZS1yZWluc3RhbGwKK3NjcmlwdDoKKy0gcHkudGVzdCAtLWxzb2YgJFBZ
VEVTVF9YQURET1BUUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9iZW5jaC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvYmVuY2gvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY4ZmFkZjAyZjQ3Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvYmVuY2gvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L2JlbmNoL2xvY2FscGF0aC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvX3RlbXBsYXRlcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTVmYjVlMjQ5My4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvZG9jL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9fdGVtcGxhdGVzL2xheW91dC5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvZG9jL2Fubm91bmNlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlMzIyMDljNmEyOWUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5v
dW5jZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMC45LjAudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
YW5ub3VuY2UvcmVsZWFzZS0wLjkuMi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNl
LTEuMC4wLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4wLjEudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjAuMi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5j
ZS9yZWxlYXNlLTEuMS4wLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4xLjEu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjIuMC50eHQKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2Rv
Yy9hbm5vdW5jZS9yZWxlYXNlLTEuMi4xLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVh
c2UtMS4zLjAudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjMuMS50eHQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMy4yLnR4dAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91
bmNlL3JlbGVhc2UtMS4zLjMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjMu
NC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuNC4wLnR4dAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
ZG9jL2Fubm91bmNlL3JlbGVhc2UtMS40LjEudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVs
ZWFzZXMudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9leGFtcGxlL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9kb2MvZXhhbXBsZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjcxZGNmMmMyMGMzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
ZXhhbXBsZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvZG9jL2V4YW1wbGUvZ2VuaHRtbC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2V4YW1w
bGUvZ2VuaHRtbGNzcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2V4YW1wbGUvZ2VueG1sLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L2RvYy9pbWcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9pbWcvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODlhNjZlODBkNi4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2ltZy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2ltZy9weWxpYi5w
bmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYWYwNTViZjg0
YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvTWFrZWZpbGUKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L2RvYy9jaGFuZ2Vsb2cudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvY29kZS50eHQKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L2RvYy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZG93bmxvYWQuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Zh
cS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L2RvYy9pbmRleC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9pbnN0YWxsLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvZG9jL2lvLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2xpbmtzLmluYwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9j
L2xvZy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9taXNjLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3BhdGgudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9kb2Mvc3R5bGUuY3NzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MveG1sLnR4dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9fY29kZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYTFhZDJjZWE2Yi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL19faW5pdF9f
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9weS9fY29kZS9fYXNzZXJ0aW9ubmV3LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29k
ZS9fYXNzZXJ0aW9ub2xkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29kZS9fcHkydHJhY2ViYWNrLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9fY29kZS9hc3NlcnRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL2NvZGUucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3B5L19jb2RlL3NvdXJjZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9faW8v
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGU0NDM5NzM2MDk4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9weS9faW8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2lvL2Nh
cHR1cmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby9zYWZlcmVwci5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2lvL3Rl
cm1pbmFsd3JpdGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3B5L19sb2cvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY3MmIyNDJlZGQ3Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2xv
Zy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX2xvZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2xvZy9sb2cucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3B5L19sb2cvd2FybmluZy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcGF0aC93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZWMyZjkyM2ZhZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvcHkvX3BhdGgvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9f
cGF0aC9jYWNoZXV0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL2NvbW1vbi5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
cHkvX3BhdGgvbG9jYWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL3N2bnVybC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
cHkvX3BhdGgvc3Zud2MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Byb2Nlc3MvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5YTU0NTY3MGYyZTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3B5L19wcm9jZXNzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcHJvY2Vzcy9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
cHkvX3Byb2Nlc3MvY21kZXhlYy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Byb2Nlc3MvZm9ya2VkZnVuYy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX3Byb2Nlc3Mva2lsbHByb2MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
cHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRf
cGFja2FnZXMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9fLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAK
LSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0
b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZvL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtnLTEuNC5kaXN0
LWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NzZl
ZmM3ODFjOS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2Vz
L2FwaXBrZy0xLjQuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtn
LTEuNC5kaXN0LWluZm8vREVTQ1JJUFRJT04ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFj
a2FnZXMvYXBpcGtnLTEuNC5kaXN0LWluZm8vSU5TVEFMTEVSCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9y
ZWRfcGFja2FnZXMvYXBpcGtnLTEuNC5kaXN0LWluZm8vTUVUQURBVEEKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192
ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9SRUNPUkQKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9XSEVFTAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
cHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZvL21ldGFkYXRhLmpzb24K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby90b3Bf
bGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmlj
b25maWctMS4wLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9y
ZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkZmVhZGRlMGM2Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5m
by93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8v
REVTQ1JJUFRJT04ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmln
LTEuMC4wLmRpc3QtaW5mby9JTlNUQUxMRVIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdl
cy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL01FVEFEQVRBCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9y
ZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby9SRUNPUkQKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL1dIRUVMCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby9tZXRh
ZGF0YS5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4w
LmRpc3QtaW5mby90b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3Jl
ZF9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2Vz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjc3MmE3OWQw
MzEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9y
ZWRfcGFja2FnZXMvYXBpcGtnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5p
Y29uZmlnLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQyYTMw
Y2QwMGRmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3B5L19fbWV0YWluZm8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19idWlsdGluLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9fZXJyb3IucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19zdGQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L194
bWxnZW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGFza3Mv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rhc2tzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4ZThkMjQyZjU4NDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rhc2tzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS90YXNrcy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGFza3MvdmVuZG9y
aW5nLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvY29kZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvdGVzdGluZy9jb2RlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3MmMzODQ5MTlhYjEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rp
bmcvY29kZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3Rlc3RfYXNzZXJ0aW9uLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90
ZXN0aW5nL2NvZGUvdGVzdF9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdGVzdF9leGNp
bmZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2UucHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvdGVzdGluZy9pb18vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvaW9f
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2MzNmMxZjg1
ZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvaW9fL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L2lvXy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9pb18vdGVzdF9jYXB0dXJlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS90ZXN0aW5nL2lvXy90ZXN0X3NhZmVyZXByLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lv
Xy90ZXN0X3Rlcm1pbmFsd3JpdGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9n
L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy9fX2luaXRfXy5weQppbmRleCBhNjgz
NGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy9f
X2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL19faW5pdF9fLnB5CkBAIC0xICsw
LDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMg
ZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rp
bmcvbG9nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzBj
YTUyODMzOGMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90
ZXN0aW5nL2xvZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cvdGVzdF9sb2cucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3RpbmcvbG9nL3Rlc3Rfd2FybmluZy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS90ZXN0aW5nL3BhdGgvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2ZDdiMTc4MDJlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0
aC9jb21tb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC9jb25mdGVzdC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9wYXRoL3JlcG90ZXN0LmR1bXAKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC9zdm50ZXN0
YmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3Rlc3RfY2FjaGV1dGlsLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS90ZXN0aW5nL3BhdGgvdGVzdF9sb2NhbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3Rlc3Rf
c3ZuYXV0aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3Rlc3Rfc3ZudXJsLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS90ZXN0aW5nL3BhdGgvdGVzdF9zdm53Yy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L3Byb2Nlc3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMxZjg5ZTRhY2ZlLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Byb2Nlc3MvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcHJv
Y2Vzcy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wcm9jZXNzL3Rlc3RfY21kZXhlYy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvdGVzdGluZy9wcm9jZXNzL3Rlc3RfZm9ya2VkZnVuYy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9wcm9jZXNzL3Rlc3Rfa2lsbHByb2MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVz
dGluZy9yb290L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMzJlNTU0NTBiYi4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcvcm9vdC90ZXN0X2J1aWx0aW4ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3Rlc3Rpbmcvcm9vdC90ZXN0X2Vycm9yLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVzdF9w
eV9pbXBvcnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVzdF9zdGQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3Rlc3Rpbmcvcm9vdC90ZXN0X3htbGdlbi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWViOTQ0Zjc0MmMuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvY29uZnRlc3QucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2MTU3ZDI5YWI3ZjIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9BVVRIT1JTCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9DSEFOR0VMT0cKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L0xJQ0VOU0UK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9hcHB2
ZXlvci55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L2NvbmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9zZXR1cC5jZmcKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS90b3guaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1h
c3luY2lvL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL0xJQ0VOU0UKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMDZkMjA4MTg2NWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL0xJQ0VOU0UKQEAgLTAsMCArMSwyMDIgQEAKK0FwYWNo
ZSBMaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFy
eSAyMDA0CisgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvCisKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwg
QU5EIERJU1RSSUJVVElPTgorCisgICAxLiBEZWZpbml0aW9ucy4KKworICAgICAgIkxpY2Vuc2Ui
IHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlv
biwKKyAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91
Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgorCisgICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhl
IGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQorICAgICAgdGhlIGNvcHly
aWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICAiTGVnYWwg
RW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxs
CisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBv
ciBhcmUgdW5kZXIgY29tbW9uCisgICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0
aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLAorICAgICAgImNvbnRyb2wiIG1lYW5zIChp
KSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCisgICAgICBkaXJl
Y3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBv
cgorICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1
MCUpIG9yIG1vcmUgb2YgdGhlCisgICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJl
bmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgorCisgICAgICAiWW91IiAob3IgIllv
dXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBleGVy
Y2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgorCisgICAgICAiU291
cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZp
Y2F0aW9ucywKKyAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291
cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KKyAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24g
ZmlsZXMuCisKKyAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRp
bmcgZnJvbSBtZWNoYW5pY2FsCisgICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBv
ZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CisgICAgICBub3QgbGltaXRlZCB0byBjb21w
aWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCisgICAgICBhbmQgY29u
dmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCisKKyAgICAgICJXb3JrIiBzaGFsbCBtZWFu
IHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCisgICAgICBPYmpl
Y3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBi
eSBhCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNo
ZWQgdG8gdGhlIHdvcmsKKyAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBl
bmRpeCBiZWxvdykuCisKKyAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3
b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKKyAgICAgIGZvcm0sIHRoYXQgaXMgYmFz
ZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKKyAgICAg
IGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVy
IG1vZGlmaWNhdGlvbnMKKyAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwg
d29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCisgICAgICBvZiB0aGlzIExpY2Vu
c2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4K
KyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0
byB0aGUgaW50ZXJmYWNlcyBvZiwKKyAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtz
IHRoZXJlb2YuCisKKyAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2Yg
YXV0aG9yc2hpcCwgaW5jbHVkaW5nCisgICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUg
V29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCisgICAgICB0byB0aGF0IFdv
cmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKKyAg
ICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRo
ZSBjb3B5cmlnaHQgb3duZXIKKyAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50
aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgorICAgICAgdGhlIGNvcHlyaWdo
dCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQi
CisgICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4g
Y29tbXVuaWNhdGlvbiBzZW50CisgICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2Vu
dGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bworICAgICAgY29tbXVuaWNhdGlv
biBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVt
cywKKyAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnks
IG9yIG9uIGJlaGFsZiBvZiwgdGhlCisgICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2Yg
ZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKKyAgICAgIGV4Y2x1ZGluZyBj
b21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCisg
ICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90
IGEgQ29udHJpYnV0aW9uLiIKKworICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vu
c29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIG9uIGJlaGFsZiBv
ZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAor
ICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCisKKyAgIDIu
IEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29u
ZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBn
cmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZl
LCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIGNvcHlyaWdodCBs
aWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAorICAgICAg
cHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3Ry
aWJ1dGUgdGhlCisgICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNl
IG9yIE9iamVjdCBmb3JtLgorCisgICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVj
dCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFj
aCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdv
cmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2Nh
YmxlCisgICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNl
bnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKKyAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwg
aW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAorICAgICAgd2hlcmUgc3Vj
aCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUK
KyAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2Vk
IGJ5IHRoZWlyCisgICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24g
b2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCisgICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1
Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQorICAgICAgaW5zdGl0dXRl
IHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKKyAgICAg
IGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQg
dGhlIFdvcmsKKyAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhl
IFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CisgICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGlu
ZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCisgICAgICBncmFudGVkIHRvIFlv
dSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKKyAgICAg
IGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworICAgNC4gUmVkaXN0
cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUK
KyAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdp
dGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmpl
Y3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKKyAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorCisgICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBv
ZiB0aGUgV29yayBvcgorICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMg
TGljZW5zZTsgYW5kCisKKyAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmls
ZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91
IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKKworICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4g
dGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCisgICAgICAgICAgdGhhdCBZ
b3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAorICAg
ICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdv
cmssCisgICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFp
biB0byBhbnkgcGFydCBvZgorICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKKwor
ICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBh
cnQgb2YgaXRzCisgICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdv
cmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAorICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJs
ZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAorICAgICAgICAgIHdp
dGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5v
dAorICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3Ms
IGluIGF0IGxlYXN0IG9uZQorICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRo
aW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCisgICAgICAgICAgYXMgcGFydCBvZiB0
aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgorICAgICAgICAg
IGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29y
a3M7IG9yLAorICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJp
dmF0aXZlIFdvcmtzLCBpZiBhbmQKKyAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5
IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKKyAgICAgICAgICBvZiB0aGUg
Tk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCisgICAg
ICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0
cmlidXRpb24KKyAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQg
WW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQorICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRv
IHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAorICAgICAgICAgIHRoYXQg
c3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAor
ICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KKworICAgICAgWW91IG1heSBhZGQg
WW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCisg
ICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFu
ZCBjb25kaXRpb25zCisgICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlv
biBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCisgICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2
ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKKyAgICAgIHJlcHJvZHVjdGlv
biwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAor
ICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KKworICAgNS4gU3Vi
bWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3Ro
ZXJ3aXNlLAorICAgICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBm
b3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCisgICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNo
YWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNl
bnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCisgICAgICBO
b3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUg
b3IgbW9kaWZ5CisgICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVt
ZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAorICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcg
c3VjaCBDb250cmlidXRpb25zLgorCisgICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9l
cyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCisgICAgICBuYW1lcywgdHJh
ZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3Is
CisgICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1
c2UgaW4gZGVzY3JpYmluZyB0aGUKKyAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9k
dWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgorCisgICA3LiBEaXNjbGFpbWVy
IG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKKyAgICAg
IGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVh
Y2gKKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisgICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdp
dGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucworICAgICAgb2Yg
VElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1Ig
QQorICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBm
b3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVk
aXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKKyAgICAgIHJpc2tzIGFzc29jaWF0
ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4K
KworICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBu
byBsZWdhbCB0aGVvcnksCisgICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdl
bmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKKyAgICAgIHVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5CisgICAgICBuZWds
aWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRv
ciBiZQorICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJl
Y3QsIGluZGlyZWN0LCBzcGVjaWFsLAorICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlh
bCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCisgICAgICByZXN1bHQgb2Yg
dGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCisg
ICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mg
b2YgZ29vZHdpbGwsCisgICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1h
bGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAorICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2Vz
IG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgorICAgICAgaGFzIGJlZW4gYWR2
aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgorCisgICA5LiBBY2NlcHRp
bmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5n
CisgICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hv
b3NlIHRvIG9mZmVyLAorICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Yg
c3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwKKyAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBv
YmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCisgICAgICBMaWNl
bnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qg
b25seQorICAgICAgb24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2li
aWxpdHksIG5vdCBvbiBiZWhhbGYKKyAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5k
IG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKKyAgICAgIGRlZmVuZCwgYW5kIGhvbGQg
ZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQorICAgICAgaW5jdXJy
ZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJl
YXNvbgorICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRp
b25hbCBsaWFiaWxpdHkuCisKKyAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCisgICBB
UFBFTkRJWDogSG93IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCisK
KyAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0
aGUgZm9sbG93aW5nCisgICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBl
bmNsb3NlZCBieSBicmFja2V0cyAie30iCisgICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlk
ZW50aWZ5aW5nIGluZm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQorICAgICAgdGhlIGJyYWNrZXRz
ISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICAg
IGNvbW1lbnQgc3ludGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRo
YXQgYQorICAgICAgZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3Nl
IGJlIGluY2x1ZGVkIG9uIHRoZQorICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29w
eXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCisgICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhp
cmQtcGFydHkgYXJjaGl2ZXMuCisKKyAgIENvcHlyaWdodCB7eXl5eX0ge25hbWUgb2YgY29weXJp
Z2h0IG93bmVyfQorCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL1BLRy1JTkZPIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QtYXN5bmNpby9QS0ctSU5GTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmJiNzYxMWJjMWE3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5j
aW8vUEtHLUlORk8KQEAgLTAsMCArMSwzMDIgQEAKK01ldGFkYXRhLVZlcnNpb246IDIuMQorTmFt
ZTogcHl0ZXN0LWFzeW5jaW8KK1ZlcnNpb246IDAuMTQuMAorU3VtbWFyeTogUHl0ZXN0IHN1cHBv
cnQgZm9yIGFzeW5jaW8uCitIb21lLXBhZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC1hc3luY2lvCitBdXRob3I6IFRpbiBUdnJ0a292acSHCitBdXRob3ItZW1haWw6IHRp
bmNoZXN0ZXJAZ21haWwuY29tCitMaWNlbnNlOiBBcGFjaGUgMi4wCitEZXNjcmlwdGlvbjogcHl0
ZXN0LWFzeW5jaW86IHB5dGVzdCBzdXBwb3J0IGZvciBhc3luY2lvCisgICAgICAgID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAKKyAgICAgICAgLi4g
aW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9weXRlc3QtYXN5bmNpby5zdmcK
KyAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ZXN0
LWFzeW5jaW8KKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvcHl0ZXN0
LWRldi9weXRlc3QtYXN5bmNpby5zdmc/YnJhbmNoPW1hc3RlcgorICAgICAgICAgICAgOnRhcmdl
dDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8KKyAgICAg
ICAgLi4gaW1hZ2U6OiBodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9weXRlc3QtZGV2L3B5dGVz
dC1hc3luY2lvL2JhZGdlLnN2ZworICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9jb3ZlcmFs
bHMuaW8vci9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvCisgICAgICAgIC4uIGltYWdlOjogaHR0
cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvcHl0ZXN0LWFzeW5jaW8uc3ZnCisg
ICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qt
YXN5bmNpbworICAgICAgICAgICAgOmFsdDogU3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9ucworICAg
ICAgICAKKyAgICAgICAgcHl0ZXN0LWFzeW5jaW8gaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBsaWJy
YXJ5LCB3cml0dGVuIGluIFB5dGhvbiwgZm9yIHRlc3RpbmcKKyAgICAgICAgYXN5bmNpbyBjb2Rl
IHdpdGggcHl0ZXN0LgorICAgICAgICAKKyAgICAgICAgYXN5bmNpbyBjb2RlIGlzIHVzdWFsbHkg
d3JpdHRlbiBpbiB0aGUgZm9ybSBvZiBjb3JvdXRpbmVzLCB3aGljaCBtYWtlcyBpdAorICAgICAg
ICBzbGlnaHRseSBtb3JlIGRpZmZpY3VsdCB0byB0ZXN0IHVzaW5nIG5vcm1hbCB0ZXN0aW5nIHRv
b2xzLiBweXRlc3QtYXN5bmNpbworICAgICAgICBwcm92aWRlcyB1c2VmdWwgZml4dHVyZXMgYW5k
IG1hcmtlcnMgdG8gbWFrZSB0ZXN0aW5nIGVhc2llci4KKyAgICAgICAgCisgICAgICAgIC4uIGNv
ZGUtYmxvY2s6OiBweXRob24KKyAgICAgICAgCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuYXN5
bmNpbworICAgICAgICAgICAgYXN5bmMgZGVmIHRlc3Rfc29tZV9hc3luY2lvX2NvZGUoKToKKyAg
ICAgICAgICAgICAgICByZXMgPSBhd2FpdCBsaWJyYXJ5LmRvX3NvbWV0aGluZygpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGInZXhwZWN0ZWQgcmVzdWx0JyA9PSByZXMKKyAgICAgICAgCisgICAg
ICAgIHB5dGVzdC1hc3luY2lvIGhhcyBiZWVuIHN0cm9uZ2x5IGluZmx1ZW5jZWQgYnkgcHl0ZXN0
LXRvcm5hZG9fLgorICAgICAgICAKKyAgICAgICAgLi4gX3B5dGVzdC10b3JuYWRvOiBodHRwczov
L2dpdGh1Yi5jb20vZXVnZW5peS9weXRlc3QtdG9ybmFkbworICAgICAgICAKKyAgICAgICAgRmVh
dHVyZXMKKyAgICAgICAgLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC0gZml4dHVyZXMgZm9y
IGNyZWF0aW5nIGFuZCBpbmplY3RpbmcgdmVyc2lvbnMgb2YgdGhlIGFzeW5jaW8gZXZlbnQgbG9v
cAorICAgICAgICAtIGZpeHR1cmVzIGZvciBpbmplY3RpbmcgdW51c2VkIHRjcCBwb3J0cworICAg
ICAgICAtIHB5dGVzdCBtYXJrZXJzIGZvciB0cmVhdGluZyB0ZXN0cyBhcyBhc3luY2lvIGNvcm91
dGluZXMKKyAgICAgICAgLSBlYXN5IHRlc3Rpbmcgd2l0aCBub24tZGVmYXVsdCBldmVudCBsb29w
cworICAgICAgICAtIHN1cHBvcnQgZm9yIGBhc3luYyBkZWZgIGZpeHR1cmVzIGFuZCBhc3luYyBn
ZW5lcmF0b3IgZml4dHVyZXMKKyAgICAgICAgCisgICAgICAgIEluc3RhbGxhdGlvbgorICAgICAg
ICAtLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIFRvIGluc3RhbGwgcHl0ZXN0LWFzeW5j
aW8sIHNpbXBseToKKyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBiYXNoCisgICAg
ICAgIAorICAgICAgICAgICAgJCBwaXAgaW5zdGFsbCBweXRlc3QtYXN5bmNpbworICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBlbm91Z2ggZm9yIHB5dGVzdCB0byBwaWNrIHVwIHB5dGVzdC1hc3lu
Y2lvLgorICAgICAgICAKKyAgICAgICAgRml4dHVyZXMKKyAgICAgICAgLS0tLS0tLS0KKyAgICAg
ICAgCisgICAgICAgIGBgZXZlbnRfbG9vcGBgCisgICAgICAgIH5+fn5+fn5+fn5+fn5+CisgICAg
ICAgIENyZWF0ZXMgYW5kIGluamVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRlZmF1bHQgYXN5
bmNpbyBldmVudCBsb29wLiBCeQorICAgICAgICBkZWZhdWx0LCB0aGUgbG9vcCB3aWxsIGJlIGNs
b3NlZCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IChpLmUuIHRoZSBkZWZhdWx0CisgICAgICAgIGZp
eHR1cmUgc2NvcGUgaXMgYGBmdW5jdGlvbmBgKS4KKyAgICAgICAgCisgICAgICAgIE5vdGUgdGhh
dCBqdXN0IHVzaW5nIHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIHdvbid0IG1ha2UgeW91ciB0
ZXN0IGZ1bmN0aW9uCisgICAgICAgIGEgY29yb3V0aW5lLiBZb3UnbGwgbmVlZCB0byBpbnRlcmFj
dCB3aXRoIHRoZSBldmVudCBsb29wIGRpcmVjdGx5LCB1c2luZyBtZXRob2RzCisgICAgICAgIGxp
a2UgYGBldmVudF9sb29wLnJ1bl91bnRpbF9jb21wbGV0ZWBgLiBTZWUgdGhlIGBgcHl0ZXN0Lm1h
cmsuYXN5bmNpb2BgIG1hcmtlcgorICAgICAgICBmb3IgdHJlYXRpbmcgdGVzdCBmdW5jdGlvbnMg
bGlrZSBjb3JvdXRpbmVzLgorICAgICAgICAKKyAgICAgICAgU2ltcGx5IHVzaW5nIHRoaXMgZml4
dHVyZSB3aWxsIG5vdCBzZXQgdGhlIGdlbmVyYXRlZCBldmVudCBsb29wIGFzIHRoZQorICAgICAg
ICBkZWZhdWx0IGFzeW5jaW8gZXZlbnQgbG9vcCwgb3IgY2hhbmdlIHRoZSBhc3luY2lvIGV2ZW50
IGxvb3AgcG9saWN5IGluIGFueSB3YXkuCisgICAgICAgIFVzZSBgYHB5dGVzdC5tYXJrLmFzeW5j
aW9gYCBmb3IgdGhpcyBwdXJwb3NlLgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorICAgICAgICAKKyAgICAgICAgICAgIGRlZiB0ZXN0X2h0dHBfY2xpZW50KGV2ZW50
X2xvb3ApOgorICAgICAgICAgICAgICAgIHVybCA9ICdodHRwOi8vaHR0cGJpbi5vcmcvZ2V0Jwor
ICAgICAgICAgICAgICAgIHJlc3AgPSBldmVudF9sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShodHRw
X2NsaWVudCh1cmwpKQorICAgICAgICAgICAgICAgIGFzc2VydCBiJ0hUVFAvMS4xIDIwMCBPSycg
aW4gcmVzcAorICAgICAgICAKKyAgICAgICAgVGhpcyBmaXh0dXJlIGNhbiBiZSBlYXNpbHkgb3Zl
cnJpZGRlbiBpbiBhbnkgb2YgdGhlIHN0YW5kYXJkIHB5dGVzdCBsb2NhdGlvbnMKKyAgICAgICAg
KGUuZy4gZGlyZWN0bHkgaW4gdGhlIHRlc3QgZmlsZSwgb3IgaW4gYGBjb25mdGVzdC5weWBgKSB0
byB1c2UgYSBub24tZGVmYXVsdAorICAgICAgICBldmVudCBsb29wLiBUaGlzIHdpbGwgdGFrZSBl
ZmZlY3QgZXZlbiBpZiB5b3UncmUgdXNpbmcgdGhlCisgICAgICAgIGBgcHl0ZXN0Lm1hcmsuYXN5
bmNpb2BgIG1hcmtlciBhbmQgbm90IHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIGRpcmVjdGx5
LgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorICAgICAgICAKKyAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgZGVmIGV2ZW50X2xvb3AoKToK
KyAgICAgICAgICAgICAgICBsb29wID0gTXlDdXN0b21Mb29wKCkKKyAgICAgICAgICAgICAgICB5
aWVsZCBsb29wCisgICAgICAgICAgICAgICAgbG9vcC5jbG9zZSgpCisgICAgICAgIAorICAgICAg
ICBJZiB0aGUgYGBweXRlc3QubWFyay5hc3luY2lvYGAgbWFya2VyIGlzIGFwcGxpZWQsIGEgcHl0
ZXN0IGhvb2sgd2lsbAorICAgICAgICBlbnN1cmUgdGhlIHByb2R1Y2VkIGxvb3AgaXMgc2V0IGFz
IHRoZSBkZWZhdWx0IGdsb2JhbCBsb29wLgorICAgICAgICBGaXh0dXJlcyBkZXBlbmRpbmcgb24g
dGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgY2FuIGV4cGVjdCB0aGUgcG9saWN5IHRvIGJlIHBy
b3Blcmx5IG1vZGlmaWVkIHdoZW4gdGhleSBydW4uCisgICAgICAgIAorICAgICAgICBgYHVudXNl
ZF90Y3BfcG9ydGBgCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgRmluZHMg
YW5kIHlpZWxkcyBhIHNpbmdsZSB1bnVzZWQgVENQIHBvcnQgb24gdGhlIGxvY2FsaG9zdCBpbnRl
cmZhY2UuIFVzZWZ1bCBmb3IKKyAgICAgICAgYmluZGluZyB0ZW1wb3JhcnkgdGVzdCBzZXJ2ZXJz
LgorICAgICAgICAKKyAgICAgICAgYGB1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeWBgCisgICAgICAg
IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICBBIGNhbGxhYmxlIHdoaWNoIHJl
dHVybnMgYSBkaWZmZXJlbnQgdW51c2VkIFRDUCBwb3J0IGVhY2ggaW52b2NhdGlvbi4gVXNlZnVs
CisgICAgICAgIHdoZW4gc2V2ZXJhbCB1bnVzZWQgVENQIHBvcnRzIGFyZSByZXF1aXJlZCBpbiBh
IHRlc3QuCisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisgICAgICAg
IAorICAgICAgICAgICAgZGVmIGFfdGVzdCh1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeSk6CisgICAg
ICAgICAgICAgICAgcG9ydDEsIHBvcnQyID0gdW51c2VkX3RjcF9wb3J0X2ZhY3RvcnkoKSwgdW51
c2VkX3RjcF9wb3J0X2ZhY3RvcnkoKQorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAKKyAg
ICAgICAgQXN5bmMgZml4dHVyZXMKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn4KKyAgICAgICAgQXN5bmNocm9ub3VzIGZpeHR1cmVzIGFyZSBkZWZpbmVkIGp1c3QgbGlrZSBv
cmRpbmFyeSBweXRlc3QgZml4dHVyZXMsIGV4Y2VwdCB0aGV5IHNob3VsZCBiZSBjb3JvdXRpbmVz
IG9yIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzLgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1i
bG9jazo6IHB5dGhvbjMKKyAgICAgICAgCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICAgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW5fZml4dHVyZSgpOgorICAgICAgICAgICAgICAg
IGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xKQorICAgICAgICAgICAgICAgIHlpZWxkICdhIHZhbHVl
JworICAgICAgICAKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nbW9kdWxlJykK
KyAgICAgICAgICAgIGFzeW5jIGRlZiBhc3luY19maXh0dXJlKCk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xKQorICAgICAgICAKKyAgICAgICAgQWxsIHNj
b3BlcyBhcmUgc3VwcG9ydGVkLCBidXQgaWYgeW91IHVzZSBhIG5vbi1mdW5jdGlvbiBzY29wZSB5
b3Ugd2lsbCBuZWVkCisgICAgICAgIHRvIHJlZGVmaW5lIHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0
dXJlIHRvIGhhdmUgdGhlIHNhbWUgb3IgYnJvYWRlciBzY29wZS4KKyAgICAgICAgQXN5bmMgZml4
dHVyZXMgbmVlZCB0aGUgZXZlbnQgbG9vcCwgYW5kIHNvIG11c3QgaGF2ZSB0aGUgc2FtZSBvciBu
YXJyb3dlciBzY29wZQorICAgICAgICB0aGFuIHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlLgor
ICAgICAgICAKKyAgICAgICAgSWYgeW91IHdhbnQgdG8gZG8gdGhpcyB3aXRoIFB5dGhvbiAzLjUs
IHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IG11c3QgYmUgcmVwbGFjZWQgd2l0aCBgYGF3YWl0IHlp
ZWxkXygpYGAgYW5kIHRoZSBjb3JvdXRpbmUKKyAgICAgICAgZnVuY3Rpb24gbXVzdCBiZSBkZWNv
cmF0ZWQgd2l0aCBgYEBhc3luY19nZW5lcmF0b3JgYCwgbGlrZSBzbzoKKyAgICAgICAgCisgICAg
ICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24zCisgICAgICAgIAorICAgICAgICAgICAgZnJvbSBh
c3luY19nZW5lcmF0b3IgaW1wb3J0IHlpZWxkXywgYXN5bmNfZ2VuZXJhdG9yCisgICAgICAgIAor
ICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBAYXN5bmNfZ2VuZXJhdG9y
CisgICAgICAgICAgICBhc3luYyBkZWYgYXN5bmNfZ2VuX2ZpeHR1cmUoKToKKyAgICAgICAgICAg
ICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSkKKyAgICAgICAgICAgICAgICBhd2FpdCB5aWVs
ZF8oJ2EgdmFsdWUnKQorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIE1hcmtlcnMKKyAgICAg
ICAgLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgYGBweXRlc3QubWFyay5hc3luY2lvYGAKKyAg
ICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgor
ICAgICAgICBNYXJrIHlvdXIgdGVzdCBjb3JvdXRpbmUgd2l0aCB0aGlzIG1hcmtlciBhbmQgcHl0
ZXN0IHdpbGwgZXhlY3V0ZSBpdCBhcyBhbgorICAgICAgICBhc3luY2lvIHRhc2sgdXNpbmcgdGhl
IGV2ZW50IGxvb3AgcHJvdmlkZWQgYnkgdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUuIFNlZQor
ICAgICAgICB0aGUgaW50cm9kdWN0b3J5IHNlY3Rpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICAg
IAorICAgICAgICBUaGUgZXZlbnQgbG9vcCB1c2VkIGNhbiBiZSBvdmVycmlkZW4gYnkgb3ZlcnJp
ZGluZyB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZQorICAgICAgICAoc2VlIGFib3ZlKS4KKyAg
ICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIG1ha2UgeW91ciB0ZXN0IGNvZGUgYSBsaXR0bGUg
bW9yZSBjb25jaXNlLCB0aGUgcHl0ZXN0IHxweXRlc3RtYXJrfF8KKyAgICAgICAgZmVhdHVyZSBj
YW4gYmUgdXNlZCB0byBtYXJrIGVudGlyZSBtb2R1bGVzIG9yIGNsYXNzZXMgd2l0aCB0aGlzIG1h
cmtlci4KKyAgICAgICAgT25seSB0ZXN0IGNvcm91dGluZXMgd2lsbCBiZSBhZmZlY3RlZCAoYnkg
ZGVmYXVsdCwgY29yb3V0aW5lcyBwcmVmaXhlZCBieQorICAgICAgICBgYHRlc3RfYGApLCBzbywg
Zm9yIGV4YW1wbGUsIGZpeHR1cmVzIGFyZSBzYWZlIHRvIGRlZmluZS4KKyAgICAgICAgCisgICAg
ICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKyAgICAgICAgCisgICAgICAgICAgICBpbXBvcnQg
YXN5bmNpbworICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAKKyAgICAgICAgICAg
ICMgQWxsIHRlc3QgY29yb3V0aW5lcyB3aWxsIGJlIHRyZWF0ZWQgYXMgbWFya2VkLgorICAgICAg
ICAgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJrLmFzeW5jaW8KKyAgICAgICAgCisgICAgICAg
ICAgICBhc3luYyBkZWYgdGVzdF9leGFtcGxlKGV2ZW50X2xvb3ApOgorICAgICAgICAgICAgICAg
ICIiIk5vIG1hcmtlciEiIiIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAs
IGxvb3A9ZXZlbnRfbG9vcCkKKyAgICAgICAgCisgICAgICAgIC4uIHxweXRlc3RtYXJrfCByZXBs
YWNlOjogYGBweXRlc3RtYXJrYGAKKyAgICAgICAgLi4gX3B5dGVzdG1hcms6IGh0dHA6Ly9kb2Mu
cHl0ZXN0Lm9yZy9lbi9sYXRlc3QvZXhhbXBsZS9tYXJrZXJzLmh0bWwjbWFya2luZy13aG9sZS1j
bGFzc2VzLW9yLW1vZHVsZXMKKyAgICAgICAgCisgICAgICAgIENoYW5nZWxvZworICAgICAgICAt
LS0tLS0tLS0KKyAgICAgICAgMC4xMy4wICgyMDIwLTA2LTI0KQorICAgICAgICB+fn5+fn5+fn5+
fn5+fn5+fn5+CisgICAgICAgIC0gRml4IGAjMTYyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMTYyPmBfLCBhbmQgYGBldmVudF9sb29wYGAgZml4
dHVyZSBiZWhhdmlvciBub3cgaXMgY29oZXJlbnQgb24gYWxsIHNjb3Blcy4KKyAgICAgICAgICBg
IzE2NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8x
NjQ+YF8KKyAgICAgICAgCisgICAgICAgIDAuMTIuMCAoMjAyMC0wNS0wNCkKKyAgICAgICAgfn5+
fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIFJ1biB0aGUgZXZlbnQgbG9vcCBmaXh0dXJlIGFz
IHNvb24gYXMgcG9zc2libGUuIFRoaXMgaGVscHMgd2l0aCBmaXh0dXJlcyB0aGF0IGhhdmUgYW4g
aW1wbGljaXQgZGVwZW5kZW5jeSBvbiB0aGUgZXZlbnQgbG9vcC4KKyAgICAgICAgICBgIzE1NiA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xNTY+YF8K
KyAgICAgICAgCisgICAgICAgIDAuMTEuMCAoMjAyMC0wNC0yMCkKKyAgICAgICAgfn5+fn5+fn5+
fn5+fn5+fn5+fgorICAgICAgICAtIFRlc3Qgb24gMy44LCBkcm9wIDMuMyBhbmQgMy40LiBTdGlj
ayB0byAwLjEwIGZvciB0aGVzZSB2ZXJzaW9ucy4KKyAgICAgICAgICBgIzE1MiA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xNTI+YF8KKyAgICAgICAg
LSBVc2UgdGhlIG5ldyBQeXRlc3QgNS40LjAgRnVuY3Rpb24gQVBJLiBXZSB0aGVyZWZvcmUgZGVw
ZW5kIG9uIHB5dGVzdCA+PSA1LjQuMC4KKyAgICAgICAgICBgIzE0MiA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xNDI+YF8KKyAgICAgICAgLSBCZXR0
ZXIgYGBweXRlc3Quc2tpcGBgIHN1cHBvcnQuCisgICAgICAgICAgYCMxMjYgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTI2PmBfCisgICAgICAgIAor
ICAgICAgICAwLjEwLjAgKDIwMTktMDEtMDgpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+
CisgICAgICAgIC0gYGBweXRlc3QtYXN5bmNpb2BgIGludGVncmF0ZXMgd2l0aCBgSHlwb3RoZXNp
cyA8aHR0cHM6Ly9oeXBvdGhlc2lzLnJlYWR0aGVkb2NzLmlvPmBfCisgICAgICAgICAgdG8gc3Vw
cG9ydCBgYEBnaXZlbmBgIG9uIGFzeW5jIHRlc3QgZnVuY3Rpb25zIHVzaW5nIGBgYXN5bmNpb2Bg
LgorICAgICAgICAgIGAjMTAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qt
YXN5bmNpby9wdWxsLzEwMj5gXworICAgICAgICAtIFB5dGVzdCA0LjEgc3VwcG9ydC4KKyAgICAg
ICAgICBgIzEwNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8v
cHVsbC8xMDU+YF8KKyAgICAgICAgCisgICAgICAgIDAuOS4wICgyMDE4LTA3LTI4KQorICAgICAg
ICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBQeXRob24gMy43IHN1cHBvcnQuCisgICAg
ICAgIC0gUmVtb3ZlIGBgZXZlbnRfbG9vcF9wcm9jZXNzX3Bvb2xgYCBmaXh0dXJlIGFuZAorICAg
ICAgICAgIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb19wcm9jZXNzX3Bvb2xgYCBtYXJrZXIgKHNlZQor
ICAgICAgICAgIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQwNzUgZm9yIGRlcHJlY2F0
aW9uIGFuZCByZW1vdmFsIGRldGFpbHMpCisgICAgICAgIAorICAgICAgICAwLjguMCAoMjAxNy0w
OS0yMykKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0gSW1wcm92ZSBpbnRl
Z3JhdGlvbiB3aXRoIG90aGVyIHBhY2thZ2VzIChsaWtlIGFpb2h0dHApIHdpdGggbW9yZSBjYXJl
ZnVsIGV2ZW50IGxvb3AgaGFuZGxpbmcuCisgICAgICAgICAgYCM2NCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC82ND5gXworICAgICAgICAKKyAgICAg
ICAgMC43LjAgKDIwMTctMDktMDgpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAg
ICAtIFB5dGhvbiB2ZXJzaW9ucyBwcmUtMy42IGNhbiB1c2UgdGhlIGFzeW5jX2dlbmVyYXRvciBs
aWJyYXJ5IGZvciBhc3luYyBmaXh0dXJlcy4KKyAgICAgICAgICBgIzYyIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzYyPmAKKyAgICAgICAgCisgICAg
ICAgIAorICAgICAgICAwLjYuMCAoMjAxNy0wNS0yOCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+
fn5+CisgICAgICAgIC0gU3VwcG9ydCBmb3IgUHl0aG9uIHZlcnNpb25zIHByZS0zLjUgaGFzIGJl
ZW4gZHJvcHBlZC4KKyAgICAgICAgLSBgYHB5dGVzdG1hcmtgYCBub3cgd29ya3Mgb24gYm90aCBt
b2R1bGUgYW5kIGNsYXNzIGxldmVsLgorICAgICAgICAtIFRoZSBgYGZvcmJpZF9nbG9iYWxfbG9v
cGBgIHBhcmFtZXRlciBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAtIFN1cHBvcnQgZm9yIGFz
eW5jIGFuZCBhc3luYyBnZW4gZml4dHVyZXMgaGFzIGJlZW4gYWRkZWQuCisgICAgICAgICAgYCM0
NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC80NT5g
XworICAgICAgICAtIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIHJlZ2FyZGluZyBgYGFzeW5jaW8u
YXN5bmMoKWBgIGhhcyBiZWVuIGZpeGVkLgorICAgICAgICAgIGAjNTEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvNTE+YF8KKyAgICAgICAgCisgICAg
ICAgIDAuNS4wICgyMDE2LTA5LTA3KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAg
ICAgLSBJbnRyb2R1Y2VkIGEgY2hhbmdlbG9nLgorICAgICAgICAgIGAjMzEgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8zMT5gXworICAgICAgICAt
IFRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIGlzIGFnYWluIHJlc3BvbnNpYmxlIGZvciBjbG9z
aW5nIGl0c2VsZi4KKyAgICAgICAgICBUaGlzIG1ha2VzIHRoZSBmaXh0dXJlIHNsaWdodGx5IGhh
cmRlciB0byBjb3JyZWN0bHkgb3ZlcnJpZGUsIGJ1dCBlbmFibGVzCisgICAgICAgICAgb3RoZXIg
Zml4dHVyZXMgdG8gZGVwZW5kIG9uIGl0IGNvcnJlY3RseS4KKyAgICAgICAgICBgIzMwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMzA+YF8KKyAg
ICAgICAgLSBEZWFsIHdpdGggdGhlIGV2ZW50IGxvb3AgcG9saWN5IGJ5IHdyYXBwaW5nIGEgc3Bl
Y2lhbCBweXRlc3QgaG9vaywKKyAgICAgICAgICBgYHB5dGVzdF9maXh0dXJlX3NldHVwYGAuIFRo
aXMgYWxsb3dzIHNldHRpbmcgdGhlIHBvbGljeSBiZWZvcmUgZml4dHVyZXMKKyAgICAgICAgICBk
ZXBlbmRlbnQgb24gdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUgcnVuLCB0aHVzIGFsbG93aW5n
IHRoZW0gdG8gdGFrZQorICAgICAgICAgIGFkdmFudGFnZSBvZiB0aGUgYGBmb3JiaWRfZ2xvYmFs
X2xvb3BgYCBwYXJhbWV0ZXIuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcywKKyAgICAgICAgICB3
ZSBub3cgZGVwZW5kIG9uIHB5dGVzdCAzLjAuCisgICAgICAgICAgYCMyOSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzI5PmBfCisgICAgICAgIAor
ICAgICAgICAKKyAgICAgICAgMC40LjEgKDIwMTYtMDYtMDEpCisgICAgICAgIH5+fn5+fn5+fn5+
fn5+fn5+fgorICAgICAgICAtIEZpeCBhIGJ1ZyBwcmV2ZW50aW5nIHRoZSBwcm9wYWdhdGlvbiBv
ZiBleGNlcHRpb25zIGZyb20gdGhlIHBsdWdpbi4KKyAgICAgICAgICBgIzI1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMjU+YF8KKyAgICAgICAg
CisgICAgICAgIDAuNC4wICgyMDE2LTA1LTMwKQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4K
KyAgICAgICAgLSBNYWtlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmVzIHNpbXBsZXIgdG8gb3ZlcnJp
ZGUgYnkgY2xvc2luZyB0aGVtIGluIHRoZQorICAgICAgICAgIHBsdWdpbiwgaW5zdGVhZCBvZiBk
aXJlY3RseSBpbiB0aGUgZml4dHVyZS4KKyAgICAgICAgICBgIzIxIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzIxPmBfCisgICAgICAgIC0gSW50cm9k
dWNlIHRoZSBgYGZvcmJpZF9nbG9iYWxfbG9vcGBgIHBhcmFtZXRlci4KKyAgICAgICAgICBgIzIx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzIxPmBf
CisgICAgICAgIAorICAgICAgICAwLjMuMCAoMjAxNS0xMi0xOSkKKyAgICAgICAgfn5+fn5+fn5+
fn5+fn5+fn5+CisgICAgICAgIC0gU3VwcG9ydCBmb3IgUHl0aG9uIDMuNSBgYGFzeW5jYGAvYGBh
d2FpdGBgIHN5bnRheC4KKyAgICAgICAgICBgIzE3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzE3PmBfCisgICAgICAgIAorICAgICAgICAwLjIuMCAo
MjAxNS0wOC0wMSkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0gYGB1bnVz
ZWRfdGNwX3BvcnRfZmFjdG9yeWBgIGZpeHR1cmUuCisgICAgICAgICAgYCMxMCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzEwPmBfCisgICAgICAg
IAorICAgICAgICAKKyAgICAgICAgMC4xLjEgKDIwMTUtMDQtMjMpCisgICAgICAgIH5+fn5+fn5+
fn5+fn5+fn5+fgorICAgICAgICBJbml0aWFsIHJlbGVhc2UuCisgICAgICAgIAorICAgICAgICAK
KyAgICAgICAgQ29udHJpYnV0aW5nCisgICAgICAgIC0tLS0tLS0tLS0tLQorICAgICAgICBDb250
cmlidXRpb25zIGFyZSB2ZXJ5IHdlbGNvbWUuIFRlc3RzIGNhbiBiZSBydW4gd2l0aCBgYHRveGBg
LCBwbGVhc2UgZW5zdXJlCisgICAgICAgIHRoZSBjb3ZlcmFnZSBhdCBsZWFzdCBzdGF5cyB0aGUg
c2FtZSBiZWZvcmUgeW91IHN1Ym1pdCBhIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgCitQbGF0Zm9y
bTogVU5LTk9XTgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhCitD
bGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBM
aWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBBcGFjaGUgU29mdHdhcmUgTGljZW5zZQorQ2xhc3Np
ZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNQorQ2xhc3NpZmllcjog
UHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNgorQ2xhc3NpZmllcjogUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNworQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcg
TGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOAorQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUg
RGV2ZWxvcG1lbnQgOjogVGVzdGluZworQ2xhc3NpZmllcjogRnJhbWV3b3JrIDo6IFB5dGVzdAor
UmVxdWlyZXMtUHl0aG9uOiA+PSAzLjUKK1Byb3ZpZGVzLUV4dHJhOiB0ZXN0aW5nCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lv
L1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZWE2
MDE0Y2NlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL1JFQURNRS5y
c3QKQEAgLTAsMCArMSwyODEgQEAKK3B5dGVzdC1hc3luY2lvOiBweXRlc3Qgc3VwcG9ydCBmb3Ig
YXN5bmNpbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4u
IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvcHl0ZXN0LWFzeW5jaW8uc3Zn
CisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXRlc3QtYXN5bmNp
bworLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvcHl0ZXN0LWRldi9weXRlc3QtYXN5
bmNpby5zdmc/YnJhbmNoPW1hc3RlcgorICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9y
Zy9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvCisuLiBpbWFnZTo6IGh0dHBzOi8vY292ZXJhbGxz
LmlvL3JlcG9zL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vYmFkZ2Uuc3ZnCisgICAgOnRhcmdl
dDogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vci9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvCisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL3B5dGVzdC1hc3lu
Y2lvLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC1hc3luY2lvCisgICAgOmFsdDogU3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9ucworCitweXRlc3Qt
YXN5bmNpbyBpcyBhbiBBcGFjaGUyIGxpY2Vuc2VkIGxpYnJhcnksIHdyaXR0ZW4gaW4gUHl0aG9u
LCBmb3IgdGVzdGluZworYXN5bmNpbyBjb2RlIHdpdGggcHl0ZXN0LgorCithc3luY2lvIGNvZGUg
aXMgdXN1YWxseSB3cml0dGVuIGluIHRoZSBmb3JtIG9mIGNvcm91dGluZXMsIHdoaWNoIG1ha2Vz
IGl0CitzbGlnaHRseSBtb3JlIGRpZmZpY3VsdCB0byB0ZXN0IHVzaW5nIG5vcm1hbCB0ZXN0aW5n
IHRvb2xzLiBweXRlc3QtYXN5bmNpbworcHJvdmlkZXMgdXNlZnVsIGZpeHR1cmVzIGFuZCBtYXJr
ZXJzIHRvIG1ha2UgdGVzdGluZyBlYXNpZXIuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKwor
ICAgIEBweXRlc3QubWFyay5hc3luY2lvCisgICAgYXN5bmMgZGVmIHRlc3Rfc29tZV9hc3luY2lv
X2NvZGUoKToKKyAgICAgICAgcmVzID0gYXdhaXQgbGlicmFyeS5kb19zb21ldGhpbmcoKQorICAg
ICAgICBhc3NlcnQgYidleHBlY3RlZCByZXN1bHQnID09IHJlcworCitweXRlc3QtYXN5bmNpbyBo
YXMgYmVlbiBzdHJvbmdseSBpbmZsdWVuY2VkIGJ5IHB5dGVzdC10b3JuYWRvXy4KKworLi4gX3B5
dGVzdC10b3JuYWRvOiBodHRwczovL2dpdGh1Yi5jb20vZXVnZW5peS9weXRlc3QtdG9ybmFkbwor
CitGZWF0dXJlcworLS0tLS0tLS0KKworLSBmaXh0dXJlcyBmb3IgY3JlYXRpbmcgYW5kIGluamVj
dGluZyB2ZXJzaW9ucyBvZiB0aGUgYXN5bmNpbyBldmVudCBsb29wCistIGZpeHR1cmVzIGZvciBp
bmplY3RpbmcgdW51c2VkIHRjcCBwb3J0cworLSBweXRlc3QgbWFya2VycyBmb3IgdHJlYXRpbmcg
dGVzdHMgYXMgYXN5bmNpbyBjb3JvdXRpbmVzCistIGVhc3kgdGVzdGluZyB3aXRoIG5vbi1kZWZh
dWx0IGV2ZW50IGxvb3BzCistIHN1cHBvcnQgZm9yIGBhc3luYyBkZWZgIGZpeHR1cmVzIGFuZCBh
c3luYyBnZW5lcmF0b3IgZml4dHVyZXMKKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKwor
VG8gaW5zdGFsbCBweXRlc3QtYXN5bmNpbywgc2ltcGx5OgorCisuLiBjb2RlLWJsb2NrOjogYmFz
aAorCisgICAgJCBwaXAgaW5zdGFsbCBweXRlc3QtYXN5bmNpbworCitUaGlzIGlzIGVub3VnaCBm
b3IgcHl0ZXN0IHRvIHBpY2sgdXAgcHl0ZXN0LWFzeW5jaW8uCisKK0ZpeHR1cmVzCistLS0tLS0t
LQorCitgYGV2ZW50X2xvb3BgYAorfn5+fn5+fn5+fn5+fn4KK0NyZWF0ZXMgYW5kIGluamVjdHMg
YSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRlZmF1bHQgYXN5bmNpbyBldmVudCBsb29wLiBCeQorZGVm
YXVsdCwgdGhlIGxvb3Agd2lsbCBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCAoaS5l
LiB0aGUgZGVmYXVsdAorZml4dHVyZSBzY29wZSBpcyBgYGZ1bmN0aW9uYGApLgorCitOb3RlIHRo
YXQganVzdCB1c2luZyB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSB3b24ndCBtYWtlIHlvdXIg
dGVzdCBmdW5jdGlvbgorYSBjb3JvdXRpbmUuIFlvdSdsbCBuZWVkIHRvIGludGVyYWN0IHdpdGgg
dGhlIGV2ZW50IGxvb3AgZGlyZWN0bHksIHVzaW5nIG1ldGhvZHMKK2xpa2UgYGBldmVudF9sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZWBgLiBTZWUgdGhlIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb2BgIG1h
cmtlcgorZm9yIHRyZWF0aW5nIHRlc3QgZnVuY3Rpb25zIGxpa2UgY29yb3V0aW5lcy4KKworU2lt
cGx5IHVzaW5nIHRoaXMgZml4dHVyZSB3aWxsIG5vdCBzZXQgdGhlIGdlbmVyYXRlZCBldmVudCBs
b29wIGFzIHRoZQorZGVmYXVsdCBhc3luY2lvIGV2ZW50IGxvb3AsIG9yIGNoYW5nZSB0aGUgYXN5
bmNpbyBldmVudCBsb29wIHBvbGljeSBpbiBhbnkgd2F5LgorVXNlIGBgcHl0ZXN0Lm1hcmsuYXN5
bmNpb2BgIGZvciB0aGlzIHB1cnBvc2UuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAg
IGRlZiB0ZXN0X2h0dHBfY2xpZW50KGV2ZW50X2xvb3ApOgorICAgICAgICB1cmwgPSAnaHR0cDov
L2h0dHBiaW4ub3JnL2dldCcKKyAgICAgICAgcmVzcCA9IGV2ZW50X2xvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKGh0dHBfY2xpZW50KHVybCkpCisgICAgICAgIGFzc2VydCBiJ0hUVFAvMS4xIDIwMCBP
SycgaW4gcmVzcAorCitUaGlzIGZpeHR1cmUgY2FuIGJlIGVhc2lseSBvdmVycmlkZGVuIGluIGFu
eSBvZiB0aGUgc3RhbmRhcmQgcHl0ZXN0IGxvY2F0aW9ucworKGUuZy4gZGlyZWN0bHkgaW4gdGhl
IHRlc3QgZmlsZSwgb3IgaW4gYGBjb25mdGVzdC5weWBgKSB0byB1c2UgYSBub24tZGVmYXVsdAor
ZXZlbnQgbG9vcC4gVGhpcyB3aWxsIHRha2UgZWZmZWN0IGV2ZW4gaWYgeW91J3JlIHVzaW5nIHRo
ZQorYGBweXRlc3QubWFyay5hc3luY2lvYGAgbWFya2VyIGFuZCBub3QgdGhlIGBgZXZlbnRfbG9v
cGBgIGZpeHR1cmUgZGlyZWN0bHkuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIEBw
eXRlc3QuZml4dHVyZQorICAgIGRlZiBldmVudF9sb29wKCk6CisgICAgICAgIGxvb3AgPSBNeUN1
c3RvbUxvb3AoKQorICAgICAgICB5aWVsZCBsb29wCisgICAgICAgIGxvb3AuY2xvc2UoKQorCitJ
ZiB0aGUgYGBweXRlc3QubWFyay5hc3luY2lvYGAgbWFya2VyIGlzIGFwcGxpZWQsIGEgcHl0ZXN0
IGhvb2sgd2lsbAorZW5zdXJlIHRoZSBwcm9kdWNlZCBsb29wIGlzIHNldCBhcyB0aGUgZGVmYXVs
dCBnbG9iYWwgbG9vcC4KK0ZpeHR1cmVzIGRlcGVuZGluZyBvbiB0aGUgYGBldmVudF9sb29wYGAg
Zml4dHVyZSBjYW4gZXhwZWN0IHRoZSBwb2xpY3kgdG8gYmUgcHJvcGVybHkgbW9kaWZpZWQgd2hl
biB0aGV5IHJ1bi4KKworYGB1bnVzZWRfdGNwX3BvcnRgYAorfn5+fn5+fn5+fn5+fn5+fn5+fgor
RmluZHMgYW5kIHlpZWxkcyBhIHNpbmdsZSB1bnVzZWQgVENQIHBvcnQgb24gdGhlIGxvY2FsaG9z
dCBpbnRlcmZhY2UuIFVzZWZ1bCBmb3IKK2JpbmRpbmcgdGVtcG9yYXJ5IHRlc3Qgc2VydmVycy4K
KworYGB1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeWBgCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn4KK0EgY2FsbGFibGUgd2hpY2ggcmV0dXJucyBhIGRpZmZlcmVudCB1bnVzZWQgVENQIHBvcnQg
ZWFjaCBpbnZvY2F0aW9uLiBVc2VmdWwKK3doZW4gc2V2ZXJhbCB1bnVzZWQgVENQIHBvcnRzIGFy
ZSByZXF1aXJlZCBpbiBhIHRlc3QuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRl
ZiBhX3Rlc3QodW51c2VkX3RjcF9wb3J0X2ZhY3RvcnkpOgorICAgICAgICBwb3J0MSwgcG9ydDIg
PSB1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeSgpLCB1bnVzZWRfdGNwX3BvcnRfZmFjdG9yeSgpCisg
ICAgICAgIC4uLgorCitBc3luYyBmaXh0dXJlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn4KK0FzeW5jaHJvbm91cyBmaXh0dXJlcyBhcmUgZGVmaW5lZCBqdXN0IGxpa2Ugb3JkaW5hcnkg
cHl0ZXN0IGZpeHR1cmVzLCBleGNlcHQgdGhleSBzaG91bGQgYmUgY29yb3V0aW5lcyBvciBhc3lu
Y2hyb25vdXMgZ2VuZXJhdG9ycy4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbjMKKworICAgIEBw
eXRlc3QuZml4dHVyZQorICAgIGFzeW5jIGRlZiBhc3luY19nZW5fZml4dHVyZSgpOgorICAgICAg
ICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSkKKyAgICAgICAgeWllbGQgJ2EgdmFsdWUnCisKKyAg
ICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J21vZHVsZScpCisgICAgYXN5bmMgZGVmIGFzeW5jX2Zp
eHR1cmUoKToKKyAgICAgICAgcmV0dXJuIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xKQorCitBbGwg
c2NvcGVzIGFyZSBzdXBwb3J0ZWQsIGJ1dCBpZiB5b3UgdXNlIGEgbm9uLWZ1bmN0aW9uIHNjb3Bl
IHlvdSB3aWxsIG5lZWQKK3RvIHJlZGVmaW5lIHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIHRv
IGhhdmUgdGhlIHNhbWUgb3IgYnJvYWRlciBzY29wZS4KK0FzeW5jIGZpeHR1cmVzIG5lZWQgdGhl
IGV2ZW50IGxvb3AsIGFuZCBzbyBtdXN0IGhhdmUgdGhlIHNhbWUgb3IgbmFycm93ZXIgc2NvcGUK
K3RoYW4gdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUuCisKK0lmIHlvdSB3YW50IHRvIGRvIHRo
aXMgd2l0aCBQeXRob24gMy41LCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCBtdXN0IGJlIHJlcGxh
Y2VkIHdpdGggYGBhd2FpdCB5aWVsZF8oKWBgIGFuZCB0aGUgY29yb3V0aW5lCitmdW5jdGlvbiBt
dXN0IGJlIGRlY29yYXRlZCB3aXRoIGBgQGFzeW5jX2dlbmVyYXRvcmBgLCBsaWtlIHNvOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uMworCisgICAgZnJvbSBhc3luY19nZW5lcmF0b3IgaW1wb3J0
IHlpZWxkXywgYXN5bmNfZ2VuZXJhdG9yCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBAYXN5
bmNfZ2VuZXJhdG9yCisgICAgYXN5bmMgZGVmIGFzeW5jX2dlbl9maXh0dXJlKCk6CisgICAgICAg
IGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xKQorICAgICAgICBhd2FpdCB5aWVsZF8oJ2EgdmFsdWUn
KQorCisKK01hcmtlcnMKKy0tLS0tLS0KKworYGBweXRlc3QubWFyay5hc3luY2lvYGAKK35+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK01hcmsgeW91ciB0
ZXN0IGNvcm91dGluZSB3aXRoIHRoaXMgbWFya2VyIGFuZCBweXRlc3Qgd2lsbCBleGVjdXRlIGl0
IGFzIGFuCithc3luY2lvIHRhc2sgdXNpbmcgdGhlIGV2ZW50IGxvb3AgcHJvdmlkZWQgYnkgdGhl
IGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUuIFNlZQordGhlIGludHJvZHVjdG9yeSBzZWN0aW9uIGZv
ciBhbiBleGFtcGxlLgorCitUaGUgZXZlbnQgbG9vcCB1c2VkIGNhbiBiZSBvdmVycmlkZW4gYnkg
b3ZlcnJpZGluZyB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZQorKHNlZSBhYm92ZSkuCisKK0lu
IG9yZGVyIHRvIG1ha2UgeW91ciB0ZXN0IGNvZGUgYSBsaXR0bGUgbW9yZSBjb25jaXNlLCB0aGUg
cHl0ZXN0IHxweXRlc3RtYXJrfF8KK2ZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gbWFyayBlbnRpcmUg
bW9kdWxlcyBvciBjbGFzc2VzIHdpdGggdGhpcyBtYXJrZXIuCitPbmx5IHRlc3QgY29yb3V0aW5l
cyB3aWxsIGJlIGFmZmVjdGVkIChieSBkZWZhdWx0LCBjb3JvdXRpbmVzIHByZWZpeGVkIGJ5Citg
YHRlc3RfYGApLCBzbywgZm9yIGV4YW1wbGUsIGZpeHR1cmVzIGFyZSBzYWZlIHRvIGRlZmluZS4K
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgaW1wb3J0IGFzeW5jaW8KKyAgICBpbXBv
cnQgcHl0ZXN0CisKKyAgICAjIEFsbCB0ZXN0IGNvcm91dGluZXMgd2lsbCBiZSB0cmVhdGVkIGFz
IG1hcmtlZC4KKyAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsuYXN5bmNpbworCisgICAgYXN5
bmMgZGVmIHRlc3RfZXhhbXBsZShldmVudF9sb29wKToKKyAgICAgICAgIiIiTm8gbWFya2VyISIi
IgorICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAsIGxvb3A9ZXZlbnRfbG9vcCkKKworLi4g
fHB5dGVzdG1hcmt8IHJlcGxhY2U6OiBgYHB5dGVzdG1hcmtgYAorLi4gX3B5dGVzdG1hcms6IGh0
dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvZXhhbXBsZS9tYXJrZXJzLmh0bWwjbWFya2lu
Zy13aG9sZS1jbGFzc2VzLW9yLW1vZHVsZXMKKworQ2hhbmdlbG9nCistLS0tLS0tLS0KKzAuMTMu
MCAoMjAyMC0wNi0yNCkKK35+fn5+fn5+fn5+fn5+fn5+fn4KKy0gRml4IGAjMTYyIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMTYyPmBfLCBhbmQg
YGBldmVudF9sb29wYGAgZml4dHVyZSBiZWhhdmlvciBub3cgaXMgY29oZXJlbnQgb24gYWxsIHNj
b3Blcy4KKyAgYCMxNjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3lu
Y2lvL3B1bGwvMTY0PmBfCisKKzAuMTIuMCAoMjAyMC0wNS0wNCkKK35+fn5+fn5+fn5+fn5+fn5+
fn4KKy0gUnVuIHRoZSBldmVudCBsb29wIGZpeHR1cmUgYXMgc29vbiBhcyBwb3NzaWJsZS4gVGhp
cyBoZWxwcyB3aXRoIGZpeHR1cmVzIHRoYXQgaGF2ZSBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5IG9u
IHRoZSBldmVudCBsb29wLgorICBgIzE1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0LWFzeW5jaW8vcHVsbC8xNTY+YF8KKworMC4xMS4wICgyMDIwLTA0LTIwKQorfn5+fn5+
fn5+fn5+fn5+fn5+fgorLSBUZXN0IG9uIDMuOCwgZHJvcCAzLjMgYW5kIDMuNC4gU3RpY2sgdG8g
MC4xMCBmb3IgdGhlc2UgdmVyc2lvbnMuCisgIGAjMTUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzE1Mj5gXworLSBVc2UgdGhlIG5ldyBQeXRlc3Qg
NS40LjAgRnVuY3Rpb24gQVBJLiBXZSB0aGVyZWZvcmUgZGVwZW5kIG9uIHB5dGVzdCA+PSA1LjQu
MC4KKyAgYCMxNDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lv
L3B1bGwvMTQyPmBfCistIEJldHRlciBgYHB5dGVzdC5za2lwYGAgc3VwcG9ydC4KKyAgYCMxMjYg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTI2PmBf
CisKKzAuMTAuMCAoMjAxOS0wMS0wOCkKK35+fn5+fn5+fn5+fn5+fn5+fn5+CistIGBgcHl0ZXN0
LWFzeW5jaW9gYCBpbnRlZ3JhdGVzIHdpdGggYEh5cG90aGVzaXMgPGh0dHBzOi8vaHlwb3RoZXNp
cy5yZWFkdGhlZG9jcy5pbz5gXworICB0byBzdXBwb3J0IGBgQGdpdmVuYGAgb24gYXN5bmMgdGVz
dCBmdW5jdGlvbnMgdXNpbmcgYGBhc3luY2lvYGAuCisgIGAjMTAyIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzEwMj5gXworLSBQeXRlc3QgNC4xIHN1
cHBvcnQuCisgIGAjMTA1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5
bmNpby9wdWxsLzEwNT5gXworCiswLjkuMCAoMjAxOC0wNy0yOCkKK35+fn5+fn5+fn5+fn5+fn5+
fgorLSBQeXRob24gMy43IHN1cHBvcnQuCistIFJlbW92ZSBgYGV2ZW50X2xvb3BfcHJvY2Vzc19w
b29sYGAgZml4dHVyZSBhbmQKKyAgYGBweXRlc3QubWFyay5hc3luY2lvX3Byb2Nlc3NfcG9vbGBg
IG1hcmtlciAoc2VlCisgIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQwNzUgZm9yIGRl
cHJlY2F0aW9uIGFuZCByZW1vdmFsIGRldGFpbHMpCisKKzAuOC4wICgyMDE3LTA5LTIzKQorfn5+
fn5+fn5+fn5+fn5+fn5+CistIEltcHJvdmUgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBwYWNrYWdl
cyAobGlrZSBhaW9odHRwKSB3aXRoIG1vcmUgY2FyZWZ1bCBldmVudCBsb29wIGhhbmRsaW5nLgor
ICBgIzY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxs
LzY0PmBfCisKKzAuNy4wICgyMDE3LTA5LTA4KQorfn5+fn5+fn5+fn5+fn5+fn5+CistIFB5dGhv
biB2ZXJzaW9ucyBwcmUtMy42IGNhbiB1c2UgdGhlIGFzeW5jX2dlbmVyYXRvciBsaWJyYXJ5IGZv
ciBhc3luYyBmaXh0dXJlcy4KKyAgYCM2MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0LWFzeW5jaW8vcHVsbC82Mj5gCisKKworMC42LjAgKDIwMTctMDUtMjgpCit+fn5+fn5+
fn5+fn5+fn5+fn4KKy0gU3VwcG9ydCBmb3IgUHl0aG9uIHZlcnNpb25zIHByZS0zLjUgaGFzIGJl
ZW4gZHJvcHBlZC4KKy0gYGBweXRlc3RtYXJrYGAgbm93IHdvcmtzIG9uIGJvdGggbW9kdWxlIGFu
ZCBjbGFzcyBsZXZlbC4KKy0gVGhlIGBgZm9yYmlkX2dsb2JhbF9sb29wYGAgcGFyYW1ldGVyIGhh
cyBiZWVuIHJlbW92ZWQuCistIFN1cHBvcnQgZm9yIGFzeW5jIGFuZCBhc3luYyBnZW4gZml4dHVy
ZXMgaGFzIGJlZW4gYWRkZWQuCisgIGAjNDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC1hc3luY2lvL3B1bGwvNDU+YF8KKy0gVGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcgcmVn
YXJkaW5nIGBgYXN5bmNpby5hc3luYygpYGAgaGFzIGJlZW4gZml4ZWQuCisgIGAjNTEgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvNTE+YF8KKworMC41
LjAgKDIwMTYtMDktMDcpCit+fn5+fn5+fn5+fn5+fn5+fn4KKy0gSW50cm9kdWNlZCBhIGNoYW5n
ZWxvZy4KKyAgYCMzMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5j
aW8vaXNzdWVzLzMxPmBfCistIFRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIGlzIGFnYWluIHJl
c3BvbnNpYmxlIGZvciBjbG9zaW5nIGl0c2VsZi4KKyAgVGhpcyBtYWtlcyB0aGUgZml4dHVyZSBz
bGlnaHRseSBoYXJkZXIgdG8gY29ycmVjdGx5IG92ZXJyaWRlLCBidXQgZW5hYmxlcworICBvdGhl
ciBmaXh0dXJlcyB0byBkZXBlbmQgb24gaXQgY29ycmVjdGx5LgorICBgIzMwIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMzA+YF8KKy0gRGVhbCB3
aXRoIHRoZSBldmVudCBsb29wIHBvbGljeSBieSB3cmFwcGluZyBhIHNwZWNpYWwgcHl0ZXN0IGhv
b2ssCisgIGBgcHl0ZXN0X2ZpeHR1cmVfc2V0dXBgYC4gVGhpcyBhbGxvd3Mgc2V0dGluZyB0aGUg
cG9saWN5IGJlZm9yZSBmaXh0dXJlcworICBkZXBlbmRlbnQgb24gdGhlIGBgZXZlbnRfbG9vcGBg
IGZpeHR1cmUgcnVuLCB0aHVzIGFsbG93aW5nIHRoZW0gdG8gdGFrZQorICBhZHZhbnRhZ2Ugb2Yg
dGhlIGBgZm9yYmlkX2dsb2JhbF9sb29wYGAgcGFyYW1ldGVyLiBBcyBhIGNvbnNlcXVlbmNlIG9m
IHRoaXMsCisgIHdlIG5vdyBkZXBlbmQgb24gcHl0ZXN0IDMuMC4KKyAgYCMyOSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzI5PmBfCisKKworMC40
LjEgKDIwMTYtMDYtMDEpCit+fn5+fn5+fn5+fn5+fn5+fn4KKy0gRml4IGEgYnVnIHByZXZlbnRp
bmcgdGhlIHByb3BhZ2F0aW9uIG9mIGV4Y2VwdGlvbnMgZnJvbSB0aGUgcGx1Z2luLgorICBgIzI1
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMjU+
YF8KKworMC40LjAgKDIwMTYtMDUtMzApCit+fn5+fn5+fn5+fn5+fn5+fn4KKy0gTWFrZSBgYGV2
ZW50X2xvb3BgYCBmaXh0dXJlcyBzaW1wbGVyIHRvIG92ZXJyaWRlIGJ5IGNsb3NpbmcgdGhlbSBp
biB0aGUKKyAgcGx1Z2luLCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGluIHRoZSBmaXh0dXJlLgorICBg
IzIxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzIx
PmBfCistIEludHJvZHVjZSB0aGUgYGBmb3JiaWRfZ2xvYmFsX2xvb3BgYCBwYXJhbWV0ZXIuCisg
IGAjMjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwv
MjE+YF8KKworMC4zLjAgKDIwMTUtMTItMTkpCit+fn5+fn5+fn5+fn5+fn5+fn4KKy0gU3VwcG9y
dCBmb3IgUHl0aG9uIDMuNSBgYGFzeW5jYGAvYGBhd2FpdGBgIHN5bnRheC4KKyAgYCMxNyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xNz5gXworCisw
LjIuMCAoMjAxNS0wOC0wMSkKK35+fn5+fn5+fn5+fn5+fn5+fgorLSBgYHVudXNlZF90Y3BfcG9y
dF9mYWN0b3J5YGAgZml4dHVyZS4KKyAgYCMxMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzEwPmBfCisKKworMC4xLjEgKDIwMTUtMDQtMjMpCit+
fn5+fn5+fn5+fn5+fn5+fn4KK0luaXRpYWwgcmVsZWFzZS4KKworCitDb250cmlidXRpbmcKKy0t
LS0tLS0tLS0tLQorQ29udHJpYnV0aW9ucyBhcmUgdmVyeSB3ZWxjb21lLiBUZXN0cyBjYW4gYmUg
cnVuIHdpdGggYGB0b3hgYCwgcGxlYXNlIGVuc3VyZQordGhlIGNvdmVyYWdlIGF0IGxlYXN0IHN0
YXlzIHRoZSBzYW1lIGJlZm9yZSB5b3Ugc3VibWl0IGEgcHVsbCByZXF1ZXN0LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9QS0ctSU5GTyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vUEtHLUlORk8KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYjc2MTFiYzFhNzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZv
L1BLRy1JTkZPCkBAIC0wLDAgKzEsMzAyIEBACitNZXRhZGF0YS1WZXJzaW9uOiAyLjEKK05hbWU6
IHB5dGVzdC1hc3luY2lvCitWZXJzaW9uOiAwLjE0LjAKK1N1bW1hcnk6IFB5dGVzdCBzdXBwb3J0
IGZvciBhc3luY2lvLgorSG9tZS1wYWdlOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QtYXN5bmNpbworQXV0aG9yOiBUaW4gVHZydGtvdmnEhworQXV0aG9yLWVtYWlsOiB0aW5j
aGVzdGVyQGdtYWlsLmNvbQorTGljZW5zZTogQXBhY2hlIDIuMAorRGVzY3JpcHRpb246IHB5dGVz
dC1hc3luY2lvOiBweXRlc3Qgc3VwcG9ydCBmb3IgYXN5bmNpbworICAgICAgICA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgCisgICAgICAgIC4uIGlt
YWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvcHl0ZXN0LWFzeW5jaW8uc3ZnCisg
ICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dGVzdC1h
c3luY2lvCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8uc3ZnP2JyYW5jaD1tYXN0ZXIKKyAgICAgICAgICAgIDp0YXJnZXQ6
IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvCisgICAgICAg
IC4uIGltYWdlOjogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvcHl0ZXN0LWRldi9weXRlc3Qt
YXN5bmNpby9iYWRnZS5zdmcKKyAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vY292ZXJhbGxz
LmlvL3IvcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbworICAgICAgICAuLiBpbWFnZTo6IGh0dHBz
Oi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL3B5dGVzdC1hc3luY2lvLnN2ZworICAg
ICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFz
eW5jaW8KKyAgICAgICAgICAgIDphbHQ6IFN1cHBvcnRlZCBQeXRob24gdmVyc2lvbnMKKyAgICAg
ICAgCisgICAgICAgIHB5dGVzdC1hc3luY2lvIGlzIGFuIEFwYWNoZTIgbGljZW5zZWQgbGlicmFy
eSwgd3JpdHRlbiBpbiBQeXRob24sIGZvciB0ZXN0aW5nCisgICAgICAgIGFzeW5jaW8gY29kZSB3
aXRoIHB5dGVzdC4KKyAgICAgICAgCisgICAgICAgIGFzeW5jaW8gY29kZSBpcyB1c3VhbGx5IHdy
aXR0ZW4gaW4gdGhlIGZvcm0gb2YgY29yb3V0aW5lcywgd2hpY2ggbWFrZXMgaXQKKyAgICAgICAg
c2xpZ2h0bHkgbW9yZSBkaWZmaWN1bHQgdG8gdGVzdCB1c2luZyBub3JtYWwgdGVzdGluZyB0b29s
cy4gcHl0ZXN0LWFzeW5jaW8KKyAgICAgICAgcHJvdmlkZXMgdXNlZnVsIGZpeHR1cmVzIGFuZCBt
YXJrZXJzIHRvIG1ha2UgdGVzdGluZyBlYXNpZXIuCisgICAgICAgIAorICAgICAgICAuLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCisgICAgICAgIAorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmFzeW5j
aW8KKyAgICAgICAgICAgIGFzeW5jIGRlZiB0ZXN0X3NvbWVfYXN5bmNpb19jb2RlKCk6CisgICAg
ICAgICAgICAgICAgcmVzID0gYXdhaXQgbGlicmFyeS5kb19zb21ldGhpbmcoKQorICAgICAgICAg
ICAgICAgIGFzc2VydCBiJ2V4cGVjdGVkIHJlc3VsdCcgPT0gcmVzCisgICAgICAgIAorICAgICAg
ICBweXRlc3QtYXN5bmNpbyBoYXMgYmVlbiBzdHJvbmdseSBpbmZsdWVuY2VkIGJ5IHB5dGVzdC10
b3JuYWRvXy4KKyAgICAgICAgCisgICAgICAgIC4uIF9weXRlc3QtdG9ybmFkbzogaHR0cHM6Ly9n
aXRodWIuY29tL2V1Z2VuaXkvcHl0ZXN0LXRvcm5hZG8KKyAgICAgICAgCisgICAgICAgIEZlYXR1
cmVzCisgICAgICAgIC0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAtIGZpeHR1cmVzIGZvciBj
cmVhdGluZyBhbmQgaW5qZWN0aW5nIHZlcnNpb25zIG9mIHRoZSBhc3luY2lvIGV2ZW50IGxvb3AK
KyAgICAgICAgLSBmaXh0dXJlcyBmb3IgaW5qZWN0aW5nIHVudXNlZCB0Y3AgcG9ydHMKKyAgICAg
ICAgLSBweXRlc3QgbWFya2VycyBmb3IgdHJlYXRpbmcgdGVzdHMgYXMgYXN5bmNpbyBjb3JvdXRp
bmVzCisgICAgICAgIC0gZWFzeSB0ZXN0aW5nIHdpdGggbm9uLWRlZmF1bHQgZXZlbnQgbG9vcHMK
KyAgICAgICAgLSBzdXBwb3J0IGZvciBgYXN5bmMgZGVmYCBmaXh0dXJlcyBhbmQgYXN5bmMgZ2Vu
ZXJhdG9yIGZpeHR1cmVzCisgICAgICAgIAorICAgICAgICBJbnN0YWxsYXRpb24KKyAgICAgICAg
LS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICBUbyBpbnN0YWxsIHB5dGVzdC1hc3luY2lv
LCBzaW1wbHk6CisgICAgICAgIAorICAgICAgICAuLiBjb2RlLWJsb2NrOjogYmFzaAorICAgICAg
ICAKKyAgICAgICAgICAgICQgcGlwIGluc3RhbGwgcHl0ZXN0LWFzeW5jaW8KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgaXMgZW5vdWdoIGZvciBweXRlc3QgdG8gcGljayB1cCBweXRlc3QtYXN5bmNp
by4KKyAgICAgICAgCisgICAgICAgIEZpeHR1cmVzCisgICAgICAgIC0tLS0tLS0tCisgICAgICAg
IAorICAgICAgICBgYGV2ZW50X2xvb3BgYAorICAgICAgICB+fn5+fn5+fn5+fn5+fgorICAgICAg
ICBDcmVhdGVzIGFuZCBpbmplY3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGFzeW5j
aW8gZXZlbnQgbG9vcC4gQnkKKyAgICAgICAgZGVmYXVsdCwgdGhlIGxvb3Agd2lsbCBiZSBjbG9z
ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCAoaS5lLiB0aGUgZGVmYXVsdAorICAgICAgICBmaXh0
dXJlIHNjb3BlIGlzIGBgZnVuY3Rpb25gYCkuCisgICAgICAgIAorICAgICAgICBOb3RlIHRoYXQg
anVzdCB1c2luZyB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSB3b24ndCBtYWtlIHlvdXIgdGVz
dCBmdW5jdGlvbgorICAgICAgICBhIGNvcm91dGluZS4gWW91J2xsIG5lZWQgdG8gaW50ZXJhY3Qg
d2l0aCB0aGUgZXZlbnQgbG9vcCBkaXJlY3RseSwgdXNpbmcgbWV0aG9kcworICAgICAgICBsaWtl
IGBgZXZlbnRfbG9vcC5ydW5fdW50aWxfY29tcGxldGVgYC4gU2VlIHRoZSBgYHB5dGVzdC5tYXJr
LmFzeW5jaW9gYCBtYXJrZXIKKyAgICAgICAgZm9yIHRyZWF0aW5nIHRlc3QgZnVuY3Rpb25zIGxp
a2UgY29yb3V0aW5lcy4KKyAgICAgICAgCisgICAgICAgIFNpbXBseSB1c2luZyB0aGlzIGZpeHR1
cmUgd2lsbCBub3Qgc2V0IHRoZSBnZW5lcmF0ZWQgZXZlbnQgbG9vcCBhcyB0aGUKKyAgICAgICAg
ZGVmYXVsdCBhc3luY2lvIGV2ZW50IGxvb3AsIG9yIGNoYW5nZSB0aGUgYXN5bmNpbyBldmVudCBs
b29wIHBvbGljeSBpbiBhbnkgd2F5LgorICAgICAgICBVc2UgYGBweXRlc3QubWFyay5hc3luY2lv
YGAgZm9yIHRoaXMgcHVycG9zZS4KKyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBw
eXRob24KKyAgICAgICAgCisgICAgICAgICAgICBkZWYgdGVzdF9odHRwX2NsaWVudChldmVudF9s
b29wKToKKyAgICAgICAgICAgICAgICB1cmwgPSAnaHR0cDovL2h0dHBiaW4ub3JnL2dldCcKKyAg
ICAgICAgICAgICAgICByZXNwID0gZXZlbnRfbG9vcC5ydW5fdW50aWxfY29tcGxldGUoaHR0cF9j
bGllbnQodXJsKSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgYidIVFRQLzEuMSAyMDAgT0snIGlu
IHJlc3AKKyAgICAgICAgCisgICAgICAgIFRoaXMgZml4dHVyZSBjYW4gYmUgZWFzaWx5IG92ZXJy
aWRkZW4gaW4gYW55IG9mIHRoZSBzdGFuZGFyZCBweXRlc3QgbG9jYXRpb25zCisgICAgICAgIChl
LmcuIGRpcmVjdGx5IGluIHRoZSB0ZXN0IGZpbGUsIG9yIGluIGBgY29uZnRlc3QucHlgYCkgdG8g
dXNlIGEgbm9uLWRlZmF1bHQKKyAgICAgICAgZXZlbnQgbG9vcC4gVGhpcyB3aWxsIHRha2UgZWZm
ZWN0IGV2ZW4gaWYgeW91J3JlIHVzaW5nIHRoZQorICAgICAgICBgYHB5dGVzdC5tYXJrLmFzeW5j
aW9gYCBtYXJrZXIgYW5kIG5vdCB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSBkaXJlY3RseS4K
KyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKyAgICAgICAgCisgICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBldmVudF9sb29wKCk6Cisg
ICAgICAgICAgICAgICAgbG9vcCA9IE15Q3VzdG9tTG9vcCgpCisgICAgICAgICAgICAgICAgeWll
bGQgbG9vcAorICAgICAgICAgICAgICAgIGxvb3AuY2xvc2UoKQorICAgICAgICAKKyAgICAgICAg
SWYgdGhlIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb2BgIG1hcmtlciBpcyBhcHBsaWVkLCBhIHB5dGVz
dCBob29rIHdpbGwKKyAgICAgICAgZW5zdXJlIHRoZSBwcm9kdWNlZCBsb29wIGlzIHNldCBhcyB0
aGUgZGVmYXVsdCBnbG9iYWwgbG9vcC4KKyAgICAgICAgRml4dHVyZXMgZGVwZW5kaW5nIG9uIHRo
ZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIGNhbiBleHBlY3QgdGhlIHBvbGljeSB0byBiZSBwcm9w
ZXJseSBtb2RpZmllZCB3aGVuIHRoZXkgcnVuLgorICAgICAgICAKKyAgICAgICAgYGB1bnVzZWRf
dGNwX3BvcnRgYAorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIEZpbmRzIGFu
ZCB5aWVsZHMgYSBzaW5nbGUgdW51c2VkIFRDUCBwb3J0IG9uIHRoZSBsb2NhbGhvc3QgaW50ZXJm
YWNlLiBVc2VmdWwgZm9yCisgICAgICAgIGJpbmRpbmcgdGVtcG9yYXJ5IHRlc3Qgc2VydmVycy4K
KyAgICAgICAgCisgICAgICAgIGBgdW51c2VkX3RjcF9wb3J0X2ZhY3RvcnlgYAorICAgICAgICB+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgQSBjYWxsYWJsZSB3aGljaCByZXR1
cm5zIGEgZGlmZmVyZW50IHVudXNlZCBUQ1AgcG9ydCBlYWNoIGludm9jYXRpb24uIFVzZWZ1bAor
ICAgICAgICB3aGVuIHNldmVyYWwgdW51c2VkIFRDUCBwb3J0cyBhcmUgcmVxdWlyZWQgaW4gYSB0
ZXN0LgorICAgICAgICAKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorICAgICAgICAK
KyAgICAgICAgICAgIGRlZiBhX3Rlc3QodW51c2VkX3RjcF9wb3J0X2ZhY3RvcnkpOgorICAgICAg
ICAgICAgICAgIHBvcnQxLCBwb3J0MiA9IHVudXNlZF90Y3BfcG9ydF9mYWN0b3J5KCksIHVudXNl
ZF90Y3BfcG9ydF9mYWN0b3J5KCkKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgCisgICAg
ICAgIEFzeW5jIGZpeHR1cmVzCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
CisgICAgICAgIEFzeW5jaHJvbm91cyBmaXh0dXJlcyBhcmUgZGVmaW5lZCBqdXN0IGxpa2Ugb3Jk
aW5hcnkgcHl0ZXN0IGZpeHR1cmVzLCBleGNlcHQgdGhleSBzaG91bGQgYmUgY29yb3V0aW5lcyBv
ciBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycy4KKyAgICAgICAgCisgICAgICAgIC4uIGNvZGUtYmxv
Y2s6OiBweXRob24zCisgICAgICAgIAorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgICAgICBhc3luYyBkZWYgYXN5bmNfZ2VuX2ZpeHR1cmUoKToKKyAgICAgICAgICAgICAgICBh
d2FpdCBhc3luY2lvLnNsZWVwKDAuMSkKKyAgICAgICAgICAgICAgICB5aWVsZCAnYSB2YWx1ZScK
KyAgICAgICAgCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J21vZHVsZScpCisg
ICAgICAgICAgICBhc3luYyBkZWYgYXN5bmNfZml4dHVyZSgpOgorICAgICAgICAgICAgICAgIHJl
dHVybiBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSkKKyAgICAgICAgCisgICAgICAgIEFsbCBzY29w
ZXMgYXJlIHN1cHBvcnRlZCwgYnV0IGlmIHlvdSB1c2UgYSBub24tZnVuY3Rpb24gc2NvcGUgeW91
IHdpbGwgbmVlZAorICAgICAgICB0byByZWRlZmluZSB0aGUgYGBldmVudF9sb29wYGAgZml4dHVy
ZSB0byBoYXZlIHRoZSBzYW1lIG9yIGJyb2FkZXIgc2NvcGUuCisgICAgICAgIEFzeW5jIGZpeHR1
cmVzIG5lZWQgdGhlIGV2ZW50IGxvb3AsIGFuZCBzbyBtdXN0IGhhdmUgdGhlIHNhbWUgb3IgbmFy
cm93ZXIgc2NvcGUKKyAgICAgICAgdGhhbiB0aGUgYGBldmVudF9sb29wYGAgZml4dHVyZS4KKyAg
ICAgICAgCisgICAgICAgIElmIHlvdSB3YW50IHRvIGRvIHRoaXMgd2l0aCBQeXRob24gMy41LCB0
aGUgYGB5aWVsZGBgIHN0YXRlbWVudCBtdXN0IGJlIHJlcGxhY2VkIHdpdGggYGBhd2FpdCB5aWVs
ZF8oKWBgIGFuZCB0aGUgY29yb3V0aW5lCisgICAgICAgIGZ1bmN0aW9uIG11c3QgYmUgZGVjb3Jh
dGVkIHdpdGggYGBAYXN5bmNfZ2VuZXJhdG9yYGAsIGxpa2Ugc286CisgICAgICAgIAorICAgICAg
ICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uMworICAgICAgICAKKyAgICAgICAgICAgIGZyb20gYXN5
bmNfZ2VuZXJhdG9yIGltcG9ydCB5aWVsZF8sIGFzeW5jX2dlbmVyYXRvcgorICAgICAgICAKKyAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgQGFzeW5jX2dlbmVyYXRvcgor
ICAgICAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbl9maXh0dXJlKCk6CisgICAgICAgICAgICAg
ICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjEpCisgICAgICAgICAgICAgICAgYXdhaXQgeWllbGRf
KCdhIHZhbHVlJykKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBNYXJrZXJzCisgICAgICAg
IC0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIGBgcHl0ZXN0Lm1hcmsuYXN5bmNpb2BgCisgICAg
ICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAg
ICAgICAgTWFyayB5b3VyIHRlc3QgY29yb3V0aW5lIHdpdGggdGhpcyBtYXJrZXIgYW5kIHB5dGVz
dCB3aWxsIGV4ZWN1dGUgaXQgYXMgYW4KKyAgICAgICAgYXN5bmNpbyB0YXNrIHVzaW5nIHRoZSBl
dmVudCBsb29wIHByb3ZpZGVkIGJ5IHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlLiBTZWUKKyAg
ICAgICAgdGhlIGludHJvZHVjdG9yeSBzZWN0aW9uIGZvciBhbiBleGFtcGxlLgorICAgICAgICAK
KyAgICAgICAgVGhlIGV2ZW50IGxvb3AgdXNlZCBjYW4gYmUgb3ZlcnJpZGVuIGJ5IG92ZXJyaWRp
bmcgdGhlIGBgZXZlbnRfbG9vcGBgIGZpeHR1cmUKKyAgICAgICAgKHNlZSBhYm92ZSkuCisgICAg
ICAgIAorICAgICAgICBJbiBvcmRlciB0byBtYWtlIHlvdXIgdGVzdCBjb2RlIGEgbGl0dGxlIG1v
cmUgY29uY2lzZSwgdGhlIHB5dGVzdCB8cHl0ZXN0bWFya3xfCisgICAgICAgIGZlYXR1cmUgY2Fu
IGJlIHVzZWQgdG8gbWFyayBlbnRpcmUgbW9kdWxlcyBvciBjbGFzc2VzIHdpdGggdGhpcyBtYXJr
ZXIuCisgICAgICAgIE9ubHkgdGVzdCBjb3JvdXRpbmVzIHdpbGwgYmUgYWZmZWN0ZWQgKGJ5IGRl
ZmF1bHQsIGNvcm91dGluZXMgcHJlZml4ZWQgYnkKKyAgICAgICAgYGB0ZXN0X2BgKSwgc28sIGZv
ciBleGFtcGxlLCBmaXh0dXJlcyBhcmUgc2FmZSB0byBkZWZpbmUuCisgICAgICAgIAorICAgICAg
ICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisgICAgICAgIAorICAgICAgICAgICAgaW1wb3J0IGFz
eW5jaW8KKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgCisgICAgICAgICAgICAj
IEFsbCB0ZXN0IGNvcm91dGluZXMgd2lsbCBiZSB0cmVhdGVkIGFzIG1hcmtlZC4KKyAgICAgICAg
ICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay5hc3luY2lvCisgICAgICAgIAorICAgICAgICAg
ICAgYXN5bmMgZGVmIHRlc3RfZXhhbXBsZShldmVudF9sb29wKToKKyAgICAgICAgICAgICAgICAi
IiJObyBtYXJrZXIhIiIiCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLCBs
b29wPWV2ZW50X2xvb3ApCisgICAgICAgIAorICAgICAgICAuLiB8cHl0ZXN0bWFya3wgcmVwbGFj
ZTo6IGBgcHl0ZXN0bWFya2BgCisgICAgICAgIC4uIF9weXRlc3RtYXJrOiBodHRwOi8vZG9jLnB5
dGVzdC5vcmcvZW4vbGF0ZXN0L2V4YW1wbGUvbWFya2Vycy5odG1sI21hcmtpbmctd2hvbGUtY2xh
c3Nlcy1vci1tb2R1bGVzCisgICAgICAgIAorICAgICAgICBDaGFuZ2Vsb2cKKyAgICAgICAgLS0t
LS0tLS0tCisgICAgICAgIDAuMTMuMCAoMjAyMC0wNi0yNCkKKyAgICAgICAgfn5+fn5+fn5+fn5+
fn5+fn5+fgorICAgICAgICAtIEZpeCBgIzE2MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzE2Mj5gXywgYW5kIGBgZXZlbnRfbG9vcGBgIGZpeHR1
cmUgYmVoYXZpb3Igbm93IGlzIGNvaGVyZW50IG9uIGFsbCBzY29wZXMuCisgICAgICAgICAgYCMx
NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTY0
PmBfCisgICAgICAgIAorICAgICAgICAwLjEyLjAgKDIwMjAtMDUtMDQpCisgICAgICAgIH5+fn5+
fn5+fn5+fn5+fn5+fn4KKyAgICAgICAgLSBSdW4gdGhlIGV2ZW50IGxvb3AgZml4dHVyZSBhcyBz
b29uIGFzIHBvc3NpYmxlLiBUaGlzIGhlbHBzIHdpdGggZml4dHVyZXMgdGhhdCBoYXZlIGFuIGlt
cGxpY2l0IGRlcGVuZGVuY3kgb24gdGhlIGV2ZW50IGxvb3AuCisgICAgICAgICAgYCMxNTYgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTU2PmBfCisg
ICAgICAgIAorICAgICAgICAwLjExLjAgKDIwMjAtMDQtMjApCisgICAgICAgIH5+fn5+fn5+fn5+
fn5+fn5+fn4KKyAgICAgICAgLSBUZXN0IG9uIDMuOCwgZHJvcCAzLjMgYW5kIDMuNC4gU3RpY2sg
dG8gMC4xMCBmb3IgdGhlc2UgdmVyc2lvbnMuCisgICAgICAgICAgYCMxNTIgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTUyPmBfCisgICAgICAgIC0g
VXNlIHRoZSBuZXcgUHl0ZXN0IDUuNC4wIEZ1bmN0aW9uIEFQSS4gV2UgdGhlcmVmb3JlIGRlcGVu
ZCBvbiBweXRlc3QgPj0gNS40LjAuCisgICAgICAgICAgYCMxNDIgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvMTQyPmBfCisgICAgICAgIC0gQmV0dGVy
IGBgcHl0ZXN0LnNraXBgYCBzdXBwb3J0LgorICAgICAgICAgIGAjMTI2IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzEyNj5gXworICAgICAgICAKKyAg
ICAgICAgMC4xMC4wICgyMDE5LTAxLTA4KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fgor
ICAgICAgICAtIGBgcHl0ZXN0LWFzeW5jaW9gYCBpbnRlZ3JhdGVzIHdpdGggYEh5cG90aGVzaXMg
PGh0dHBzOi8vaHlwb3RoZXNpcy5yZWFkdGhlZG9jcy5pbz5gXworICAgICAgICAgIHRvIHN1cHBv
cnQgYGBAZ2l2ZW5gYCBvbiBhc3luYyB0ZXN0IGZ1bmN0aW9ucyB1c2luZyBgYGFzeW5jaW9gYC4K
KyAgICAgICAgICBgIzEwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFz
eW5jaW8vcHVsbC8xMDI+YF8KKyAgICAgICAgLSBQeXRlc3QgNC4xIHN1cHBvcnQuCisgICAgICAg
ICAgYCMxMDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1
bGwvMTA1PmBfCisgICAgICAgIAorICAgICAgICAwLjkuMCAoMjAxOC0wNy0yOCkKKyAgICAgICAg
fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAgIC0gUHl0aG9uIDMuNyBzdXBwb3J0LgorICAgICAg
ICAtIFJlbW92ZSBgYGV2ZW50X2xvb3BfcHJvY2Vzc19wb29sYGAgZml4dHVyZSBhbmQKKyAgICAg
ICAgICBgYHB5dGVzdC5tYXJrLmFzeW5jaW9fcHJvY2Vzc19wb29sYGAgbWFya2VyIChzZWUKKyAg
ICAgICAgICBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0MDc1IGZvciBkZXByZWNhdGlv
biBhbmQgcmVtb3ZhbCBkZXRhaWxzKQorICAgICAgICAKKyAgICAgICAgMC44LjAgKDIwMTctMDkt
MjMpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIEltcHJvdmUgaW50ZWdy
YXRpb24gd2l0aCBvdGhlciBwYWNrYWdlcyAobGlrZSBhaW9odHRwKSB3aXRoIG1vcmUgY2FyZWZ1
bCBldmVudCBsb29wIGhhbmRsaW5nLgorICAgICAgICAgIGAjNjQgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvNjQ+YF8KKyAgICAgICAgCisgICAgICAg
IDAuNy4wICgyMDE3LTA5LTA4KQorICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn4KKyAgICAgICAg
LSBQeXRob24gdmVyc2lvbnMgcHJlLTMuNiBjYW4gdXNlIHRoZSBhc3luY19nZW5lcmF0b3IgbGli
cmFyeSBmb3IgYXN5bmMgZml4dHVyZXMuCisgICAgICAgICAgYCM2MiA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC82Mj5gCisgICAgICAgIAorICAgICAg
ICAKKyAgICAgICAgMC42LjAgKDIwMTctMDUtMjgpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+
fgorICAgICAgICAtIFN1cHBvcnQgZm9yIFB5dGhvbiB2ZXJzaW9ucyBwcmUtMy41IGhhcyBiZWVu
IGRyb3BwZWQuCisgICAgICAgIC0gYGBweXRlc3RtYXJrYGAgbm93IHdvcmtzIG9uIGJvdGggbW9k
dWxlIGFuZCBjbGFzcyBsZXZlbC4KKyAgICAgICAgLSBUaGUgYGBmb3JiaWRfZ2xvYmFsX2xvb3Bg
YCBwYXJhbWV0ZXIgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgLSBTdXBwb3J0IGZvciBhc3lu
YyBhbmQgYXN5bmMgZ2VuIGZpeHR1cmVzIGhhcyBiZWVuIGFkZGVkLgorICAgICAgICAgIGAjNDUg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL3B1bGwvNDU+YF8K
KyAgICAgICAgLSBUaGUgZGVwcmVjYXRpb24gd2FybmluZyByZWdhcmRpbmcgYGBhc3luY2lvLmFz
eW5jKClgYCBoYXMgYmVlbiBmaXhlZC4KKyAgICAgICAgICBgIzUxIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9wdWxsLzUxPmBfCisgICAgICAgIAorICAgICAg
ICAwLjUuMCAoMjAxNi0wOS0wNykKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICAg
IC0gSW50cm9kdWNlZCBhIGNoYW5nZWxvZy4KKyAgICAgICAgICBgIzMxIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpby9pc3N1ZXMvMzE+YF8KKyAgICAgICAgLSBU
aGUgYGBldmVudF9sb29wYGAgZml4dHVyZSBpcyBhZ2FpbiByZXNwb25zaWJsZSBmb3IgY2xvc2lu
ZyBpdHNlbGYuCisgICAgICAgICAgVGhpcyBtYWtlcyB0aGUgZml4dHVyZSBzbGlnaHRseSBoYXJk
ZXIgdG8gY29ycmVjdGx5IG92ZXJyaWRlLCBidXQgZW5hYmxlcworICAgICAgICAgIG90aGVyIGZp
eHR1cmVzIHRvIGRlcGVuZCBvbiBpdCBjb3JyZWN0bHkuCisgICAgICAgICAgYCMzMCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzMwPmBfCisgICAg
ICAgIC0gRGVhbCB3aXRoIHRoZSBldmVudCBsb29wIHBvbGljeSBieSB3cmFwcGluZyBhIHNwZWNp
YWwgcHl0ZXN0IGhvb2ssCisgICAgICAgICAgYGBweXRlc3RfZml4dHVyZV9zZXR1cGBgLiBUaGlz
IGFsbG93cyBzZXR0aW5nIHRoZSBwb2xpY3kgYmVmb3JlIGZpeHR1cmVzCisgICAgICAgICAgZGVw
ZW5kZW50IG9uIHRoZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlIHJ1biwgdGh1cyBhbGxvd2luZyB0
aGVtIHRvIHRha2UKKyAgICAgICAgICBhZHZhbnRhZ2Ugb2YgdGhlIGBgZm9yYmlkX2dsb2JhbF9s
b29wYGAgcGFyYW1ldGVyLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMsCisgICAgICAgICAgd2Ug
bm93IGRlcGVuZCBvbiBweXRlc3QgMy4wLgorICAgICAgICAgIGAjMjkgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8yOT5gXworICAgICAgICAKKyAg
ICAgICAgCisgICAgICAgIDAuNC4xICgyMDE2LTA2LTAxKQorICAgICAgICB+fn5+fn5+fn5+fn5+
fn5+fn4KKyAgICAgICAgLSBGaXggYSBidWcgcHJldmVudGluZyB0aGUgcHJvcGFnYXRpb24gb2Yg
ZXhjZXB0aW9ucyBmcm9tIHRoZSBwbHVnaW4uCisgICAgICAgICAgYCMyNSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vaXNzdWVzLzI1PmBfCisgICAgICAgIAor
ICAgICAgICAwLjQuMCAoMjAxNi0wNS0zMCkKKyAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+Cisg
ICAgICAgIC0gTWFrZSBgYGV2ZW50X2xvb3BgYCBmaXh0dXJlcyBzaW1wbGVyIHRvIG92ZXJyaWRl
IGJ5IGNsb3NpbmcgdGhlbSBpbiB0aGUKKyAgICAgICAgICBwbHVnaW4sIGluc3RlYWQgb2YgZGly
ZWN0bHkgaW4gdGhlIGZpeHR1cmUuCisgICAgICAgICAgYCMyMSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8yMT5gXworICAgICAgICAtIEludHJvZHVj
ZSB0aGUgYGBmb3JiaWRfZ2xvYmFsX2xvb3BgYCBwYXJhbWV0ZXIuCisgICAgICAgICAgYCMyMSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8yMT5gXwor
ICAgICAgICAKKyAgICAgICAgMC4zLjAgKDIwMTUtMTItMTkpCisgICAgICAgIH5+fn5+fn5+fn5+
fn5+fn5+fgorICAgICAgICAtIFN1cHBvcnQgZm9yIFB5dGhvbiAzLjUgYGBhc3luY2BgL2BgYXdh
aXRgYCBzeW50YXguCisgICAgICAgICAgYCMxNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0LWFzeW5jaW8vcHVsbC8xNz5gXworICAgICAgICAKKyAgICAgICAgMC4yLjAgKDIw
MTUtMDgtMDEpCisgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAtIGBgdW51c2Vk
X3RjcF9wb3J0X2ZhY3RvcnlgYCBmaXh0dXJlLgorICAgICAgICAgIGAjMTAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8xMD5gXworICAgICAgICAK
KyAgICAgICAgCisgICAgICAgIDAuMS4xICgyMDE1LTA0LTIzKQorICAgICAgICB+fn5+fn5+fn5+
fn5+fn5+fn4KKyAgICAgICAgSW5pdGlhbCByZWxlYXNlLgorICAgICAgICAKKyAgICAgICAgCisg
ICAgICAgIENvbnRyaWJ1dGluZworICAgICAgICAtLS0tLS0tLS0tLS0KKyAgICAgICAgQ29udHJp
YnV0aW9ucyBhcmUgdmVyeSB3ZWxjb21lLiBUZXN0cyBjYW4gYmUgcnVuIHdpdGggYGB0b3hgYCwg
cGxlYXNlIGVuc3VyZQorICAgICAgICB0aGUgY292ZXJhZ2UgYXQgbGVhc3Qgc3RheXMgdGhlIHNh
bWUgYmVmb3JlIHlvdSBzdWJtaXQgYSBwdWxsIHJlcXVlc3QuCisgICAgICAgIAorUGxhdGZvcm06
IFVOS05PV04KK0NsYXNzaWZpZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA0IC0gQmV0YQorQ2xh
c3NpZmllcjogSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycworQ2xhc3NpZmllcjogTGlj
ZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UKK0NsYXNzaWZp
ZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjUKK0NsYXNzaWZpZXI6IFBy
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjYKK0NsYXNzaWZpZXI6IFByb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjcKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiA6OiAzLjgKK0NsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERl
dmVsb3BtZW50IDo6IFRlc3RpbmcKK0NsYXNzaWZpZXI6IEZyYW1ld29yayA6OiBQeXRlc3QKK1Jl
cXVpcmVzLVB5dGhvbjogPj0gMy41CitQcm92aWRlcy1FeHRyYTogdGVzdGluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9TT1VSQ0VTLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vU09VUkNFUy50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MGNkNWQ3YzdmYzQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvLmVn
Zy1pbmZvL1NPVVJDRVMudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0xJQ0VOU0UKK1JFQURNRS5yc3QK
K3NldHVwLmNmZworc2V0dXAucHkKK3B5dGVzdF9hc3luY2lvL19faW5pdF9fLnB5CitweXRlc3Rf
YXN5bmNpby9wbHVnaW4ucHkKK3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL1BLRy1JTkZPCitweXRl
c3RfYXN5bmNpby5lZ2ctaW5mby9TT1VSQ0VTLnR4dAorcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8v
ZGVwZW5kZW5jeV9saW5rcy50eHQKK3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL2VudHJ5X3BvaW50
cy50eHQKK3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL3JlcXVpcmVzLnR4dAorcHl0ZXN0X2FzeW5j
aW8uZWdnLWluZm8vdG9wX2xldmVsLnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vZGVwZW5kZW5jeV9saW5r
cy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ct
aW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dApyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9w
eXRlc3RfYXN5bmNpby5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9lbnRyeV9wb2ludHMu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9lbnRyeV9w
b2ludHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjljNTNi
ZTM4YThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5
bmNpby5lZ2ctaW5mby9lbnRyeV9wb2ludHMudHh0CkBAIC0wLDAgKzEsMyBAQAorW3B5dGVzdDEx
XQorYXN5bmNpbyA9IHB5dGVzdF9hc3luY2lvLnBsdWdpbgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvLmVnZy1pbmZvL3JlcXVpcmVzLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vcmVxdWlyZXMudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDU0NmYxMjJhZDE4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5mby9y
ZXF1aXJlcy50eHQKQEAgLTAsMCArMSw5IEBACitweXRlc3Q+PTUuNC4wCisKK1s6cHl0aG9uX3Zl
cnNpb24gPT0gIjMuNSJdCithc3luY19nZW5lcmF0b3I+PTEuMworCitbdGVzdGluZ10KK2FzeW5j
X2dlbmVyYXRvcj49MS4zCitjb3ZlcmFnZQoraHlwb3RoZXNpcz49NS43LjEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vdG9wX2xldmVsLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWluZm8vdG9wX2xldmVs
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA4ZDA1ZDFlY2Y0
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8u
ZWdnLWluZm8vdG9wX2xldmVsLnR4dApAQCAtMCwwICsxIEBACitweXRlc3RfYXN5bmNpbwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8vX19pbml0X18ucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MWM1ZjQzYjk1OTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvL19faW5pdF9fLnB5CkBA
IC0wLDAgKzEsMiBAQAorIiIiVGhlIG1haW4gcG9pbnQgZm9yIGltcG9ydGluZyBweXRlc3QtYXN5
bmNpbyBpdGVtcy4iIiIKK19fdmVyc2lvbl9fID0gIjAuMTQuMCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8vcGx1Z2luLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5
bmNpby9weXRlc3RfYXN5bmNpby9wbHVnaW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4yZmRjNWY0ZTc3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC1hc3luY2lvL3B5dGVzdF9hc3luY2lvL3BsdWdpbi5weQpAQCAtMCwwICsxLDI0MCBAQAorIiIi
cHl0ZXN0LWFzeW5jaW8gaW1wbGVtZW50YXRpb24uIiIiCitpbXBvcnQgYXN5bmNpbworaW1wb3J0
IGNvbnRleHRsaWIKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgc29j
a2V0CisKK2ltcG9ydCBweXRlc3QKK3RyeToKKyAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9y
dCB0cmFuc2Zlcl9tYXJrZXJzCitleGNlcHQgSW1wb3J0RXJyb3I6ICAjIFB5dGVzdCA0LjEuMCBy
ZW1vdmVzIHRoZSB0cmFuc2Zlcl9tYXJrZXIgYXBpICgjMTA0KQorICAgIGRlZiB0cmFuc2Zlcl9t
YXJrZXJzKCphcmdzLCAqKmt3YXJncyk6ICAjIG5vcWEKKyAgICAgICAgIiIiTm9vcCB3aGVuIG92
ZXIgcHl0ZXN0IDQuMS4wIiIiCisgICAgICAgIHBhc3MKKwordHJ5OgorICAgIGZyb20gYXN5bmNf
Z2VuZXJhdG9yIGltcG9ydCBpc2FzeW5jZ2VuZnVuY3Rpb24KK2V4Y2VwdCBJbXBvcnRFcnJvcjoK
KyAgICBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYXN5bmNnZW5mdW5jdGlvbgorCisKK2RlZiBfaXNf
Y29yb3V0aW5lKG9iaik6CisgICAgIiIiQ2hlY2sgdG8gc2VlIGlmIGFuIG9iamVjdCBpcyByZWFs
bHkgYW4gYXN5bmNpbyBjb3JvdXRpbmUuIiIiCisgICAgcmV0dXJuIGFzeW5jaW8uaXNjb3JvdXRp
bmVmdW5jdGlvbihvYmopIG9yIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbihvYmopCisKKwor
ZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKKyAgICAiIiJJbmplY3QgZG9jdW1lbnRhdGlv
bi4iIiIKKyAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgibWFya2VycyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFzeW5jaW86ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAibWFyayB0aGUgdGVzdCBhcyBhIGNvcm91dGluZSwgaXQgd2lsbCBiZSAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInJ1biB1c2luZyBhbiBhc3luY2lvIGV2ZW50IGxvb3AiKQorCisK
K0BweXRlc3QubWFyay50cnlmaXJzdAorZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29s
bGVjdG9yLCBuYW1lLCBvYmopOgorICAgICIiIkEgcHl0ZXN0IGhvb2sgdG8gY29sbGVjdCBhc3lu
Y2lvIGNvcm91dGluZXMuIiIiCisgICAgaWYgY29sbGVjdG9yLmZ1bmNuYW1lZmlsdGVyKG5hbWUp
IGFuZCBfaXNfY29yb3V0aW5lKG9iaik6CisgICAgICAgIGl0ZW0gPSBweXRlc3QuRnVuY3Rpb24u
ZnJvbV9wYXJlbnQoY29sbGVjdG9yLCBuYW1lPW5hbWUpCisKKyAgICAgICAgIyBEdWUgdG8gaG93
IHB5dGVzdCB0ZXN0IGNvbGxlY3Rpb24gd29ya3MsIG1vZHVsZS1sZXZlbCBweXRlc3RtYXJrcwor
ICAgICAgICAjIGFyZSBhcHBsaWVkIGFmdGVyIHRoZSBjb2xsZWN0aW9uIHN0ZXAuIFNpbmNlIHRo
aXMgaXMgdGhlIGNvbGxlY3Rpb24KKyAgICAgICAgIyBzdGVwLCB3ZSBsb29rIG91cnNlbHZlcy4K
KyAgICAgICAgdHJhbnNmZXJfbWFya2VycyhvYmosIGl0ZW0uY2xzLCBpdGVtLm1vZHVsZSkKKyAg
ICAgICAgaXRlbSA9IHB5dGVzdC5GdW5jdGlvbi5mcm9tX3BhcmVudChjb2xsZWN0b3IsIG5hbWU9
bmFtZSkgICMgVG8gcmVsb2FkIGtleXdvcmRzLgorCisgICAgICAgIGlmICdhc3luY2lvJyBpbiBp
dGVtLmtleXdvcmRzOgorICAgICAgICAgICAgcmV0dXJuIGxpc3QoY29sbGVjdG9yLl9nZW5mdW5j
dGlvbnMobmFtZSwgb2JqKSkKKworCitjbGFzcyBGaXh0dXJlU3RyaXBwZXI6CisgICAgIiIiSW5j
bHVkZSBhZGRpdGlvbmFsIEZpeHR1cmUsIGFuZCB0aGVuIHN0cmlwIHRoZW0iIiIKKyAgICBSRVFV
RVNUID0gInJlcXVlc3QiCisgICAgRVZFTlRfTE9PUCA9ICJldmVudF9sb29wIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGZpeHR1cmVkZWYpOgorICAgICAgICBzZWxmLmZpeHR1cmVkZWYgPSBm
aXh0dXJlZGVmCisgICAgICAgIHNlbGYudG9fc3RyaXAgPSBzZXQoKQorCisgICAgZGVmIGFkZChz
ZWxmLCBuYW1lKToKKyAgICAgICAgIiIiQWRkIGZpeHR1cmUgbmFtZSB0byBmaXh0dXJlZGVmCisg
ICAgICAgICBhbmQgcmVjb3JkIGluIHRvX3N0cmlwIGxpc3QgKElmIG5vdCBwcmV2aW91c2x5IGlu
Y2x1ZGVkKSIiIgorICAgICAgICBpZiBuYW1lIGluIHNlbGYuZml4dHVyZWRlZi5hcmduYW1lczoK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmZpeHR1cmVkZWYuYXJnbmFtZXMgKz0g
KG5hbWUsICkKKyAgICAgICAgc2VsZi50b19zdHJpcC5hZGQobmFtZSkKKworICAgIGRlZiBnZXRf
YW5kX3N0cmlwX2Zyb20oc2VsZiwgbmFtZSwgZGF0YV9kaWN0KToKKyAgICAgICAgIiIiU3RyaXAg
bmFtZSBmcm9tIGRhdGEsIGFuZCByZXR1cm4gdmFsdWUiIiIKKyAgICAgICAgcmVzdWx0ID0gZGF0
YV9kaWN0W25hbWVdCisgICAgICAgIGlmIG5hbWUgaW4gc2VsZi50b19zdHJpcDoKKyAgICAgICAg
ICAgIGRlbCBkYXRhX2RpY3RbbmFtZV0KKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCitAcHl0ZXN0
Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFsaXpl
cihmaXh0dXJlZGVmLCByZXF1ZXN0KToKKyAgICAiIiJDYWxsZWQgYWZ0ZXIgZml4dHVyZSB0ZWFy
ZG93biIiIgorICAgIGlmIGZpeHR1cmVkZWYuYXJnbmFtZSA9PSAiZXZlbnRfbG9vcCI6CisgICAg
ICAgICMgU2V0IGVtcHR5IGxvb3AgcG9saWN5LCBzbyB0aGF0IHN1YnNlcXVlbnQgZ2V0X2V2ZW50
X2xvb3AoKSBwcm92aWRlcyBhIG5ldyBsb29wCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xv
b3BfcG9saWN5KE5vbmUpCisKKworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUp
CitkZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6CisgICAgIiIi
QWRqdXN0IHRoZSBldmVudCBsb29wIHBvbGljeSB3aGVuIGFuIGV2ZW50IGxvb3AgaXMgcHJvZHVj
ZWQuIiIiCisgICAgaWYgZml4dHVyZWRlZi5hcmduYW1lID09ICJldmVudF9sb29wIjoKKyAgICAg
ICAgb3V0Y29tZSA9IHlpZWxkCisgICAgICAgIGxvb3AgPSBvdXRjb21lLmdldF9yZXN1bHQoKQor
ICAgICAgICBwb2xpY3kgPSBhc3luY2lvLmdldF9ldmVudF9sb29wX3BvbGljeSgpCisgICAgICAg
IHBvbGljeS5zZXRfZXZlbnRfbG9vcChsb29wKQorICAgICAgICByZXR1cm4KKworICAgIGlmIGlz
YXN5bmNnZW5mdW5jdGlvbihmaXh0dXJlZGVmLmZ1bmMpOgorICAgICAgICAjIFRoaXMgaXMgYW4g
YXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uLiBXcmFwIGl0IGFjY29yZGluZ2x5LgorICAgICAgICBn
ZW5lcmF0b3IgPSBmaXh0dXJlZGVmLmZ1bmMKKworICAgICAgICBmaXh0dXJlX3N0cmlwcGVyID0g
Rml4dHVyZVN0cmlwcGVyKGZpeHR1cmVkZWYpCisgICAgICAgIGZpeHR1cmVfc3RyaXBwZXIuYWRk
KEZpeHR1cmVTdHJpcHBlci5FVkVOVF9MT09QKQorICAgICAgICBmaXh0dXJlX3N0cmlwcGVyLmFk
ZChGaXh0dXJlU3RyaXBwZXIuUkVRVUVTVCkKKworCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdz
LCAqKmt3YXJncyk6CisgICAgICAgICAgICBsb29wID0gZml4dHVyZV9zdHJpcHBlci5nZXRfYW5k
X3N0cmlwX2Zyb20oRml4dHVyZVN0cmlwcGVyLkVWRU5UX0xPT1AsIGt3YXJncykKKyAgICAgICAg
ICAgIHJlcXVlc3QgPSBmaXh0dXJlX3N0cmlwcGVyLmdldF9hbmRfc3RyaXBfZnJvbShGaXh0dXJl
U3RyaXBwZXIuUkVRVUVTVCwga3dhcmdzKQorCisgICAgICAgICAgICBnZW5fb2JqID0gZ2VuZXJh
dG9yKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgYXN5bmMgZGVmIHNldHVwKCk6Cisg
ICAgICAgICAgICAgICAgcmVzID0gYXdhaXQgZ2VuX29iai5fX2FuZXh0X18oKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXMKKworICAgICAgICAgICAgZGVmIGZpbmFsaXplcigpOgorICAgICAg
ICAgICAgICAgICIiIllpZWxkIGFnYWluLCB0byBmaW5hbGl6ZS4iIiIKKyAgICAgICAgICAgICAg
ICBhc3luYyBkZWYgYXN5bmNfZmluYWxpemVyKCk6CisgICAgICAgICAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGdlbl9vYmouX19hbmV4dF9fKCkKKyAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1zZyA9ICJBc3luYyBnZW5lcmF0b3IgZml4dHVyZSBkaWRuJ3Qgc3RvcC4iCisg
ICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gIllpZWxkIG9ubHkgb25jZS4iCisgICAgICAg
ICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBs
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY19maW5hbGl6ZXIoKSkKKworICAgICAgICAgICAg
cmVxdWVzdC5hZGRmaW5hbGl6ZXIoZmluYWxpemVyKQorICAgICAgICAgICAgcmV0dXJuIGxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNldHVwKCkpCisKKyAgICAgICAgZml4dHVyZWRlZi5mdW5jID0g
d3JhcHBlcgorICAgIGVsaWYgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGZpeHR1cmVkZWYu
ZnVuYyk6CisgICAgICAgIGNvcm8gPSBmaXh0dXJlZGVmLmZ1bmMKKworICAgICAgICBmaXh0dXJl
X3N0cmlwcGVyID0gRml4dHVyZVN0cmlwcGVyKGZpeHR1cmVkZWYpCisgICAgICAgIGZpeHR1cmVf
c3RyaXBwZXIuYWRkKEZpeHR1cmVTdHJpcHBlci5FVkVOVF9MT09QKQorCisgICAgICAgIGRlZiB3
cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBsb29wID0gZml4dHVyZV9zdHJp
cHBlci5nZXRfYW5kX3N0cmlwX2Zyb20oRml4dHVyZVN0cmlwcGVyLkVWRU5UX0xPT1AsIGt3YXJn
cykKKworICAgICAgICAgICAgYXN5bmMgZGVmIHNldHVwKCk6CisgICAgICAgICAgICAgICAgcmVz
ID0gYXdhaXQgY29ybygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
cworCisgICAgICAgICAgICByZXR1cm4gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2V0dXAoKSkK
KworICAgICAgICBmaXh0dXJlZGVmLmZ1bmMgPSB3cmFwcGVyCisgICAgeWllbGQKKworCitAcHl0
ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUsIGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0
X3B5ZnVuY19jYWxsKHB5ZnVuY2l0ZW0pOgorICAgICIiIgorICAgIFJ1biBhc3luY2lvIG1hcmtl
ZCB0ZXN0IGZ1bmN0aW9ucyBpbiBhbiBldmVudCBsb29wIGluc3RlYWQgb2YgYSBub3JtYWwKKyAg
ICBmdW5jdGlvbiBjYWxsLgorICAgICIiIgorICAgIGlmICdhc3luY2lvJyBpbiBweWZ1bmNpdGVt
LmtleXdvcmRzOgorICAgICAgICBpZiBnZXRhdHRyKHB5ZnVuY2l0ZW0ub2JqLCAnaXNfaHlwb3Ro
ZXNpc190ZXN0JywgRmFsc2UpOgorICAgICAgICAgICAgcHlmdW5jaXRlbS5vYmouaHlwb3RoZXNp
cy5pbm5lcl90ZXN0ID0gd3JhcF9pbl9zeW5jKAorICAgICAgICAgICAgICAgIHB5ZnVuY2l0ZW0u
b2JqLmh5cG90aGVzaXMuaW5uZXJfdGVzdCwKKyAgICAgICAgICAgICAgICBfbG9vcD1weWZ1bmNp
dGVtLmZ1bmNhcmdzWydldmVudF9sb29wJ10KKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHB5ZnVuY2l0ZW0ub2JqID0gd3JhcF9pbl9zeW5jKAorICAgICAgICAgICAg
ICAgIHB5ZnVuY2l0ZW0ub2JqLAorICAgICAgICAgICAgICAgIF9sb29wPXB5ZnVuY2l0ZW0uZnVu
Y2FyZ3NbJ2V2ZW50X2xvb3AnXQorICAgICAgICAgICAgKQorICAgIHlpZWxkCisKKworZGVmIHdy
YXBfaW5fc3luYyhmdW5jLCBfbG9vcCk6CisgICAgIiIiUmV0dXJuIGEgc3luYyB3cmFwcGVyIGFy
b3VuZCBhbiBhc3luYyBmdW5jdGlvbiBleGVjdXRpbmcgaXQgaW4gdGhlCisgICAgY3VycmVudCBl
dmVudCBsb29wLiIiIgorCisgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgIGRlZiBpbm5l
cigqKmt3YXJncyk6CisgICAgICAgIGNvcm8gPSBmdW5jKCoqa3dhcmdzKQorICAgICAgICBpZiBj
b3JvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGFzayA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVy
ZShjb3JvLCBsb29wPV9sb29wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF9s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQorICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNl
cHRpb246CisgICAgICAgICAgICAgICAgIyBydW5fdW50aWxfY29tcGxldGUgZG9lc24ndCBnZXQg
dGhlIHJlc3VsdCBmcm9tIGV4Y2VwdGlvbnMKKyAgICAgICAgICAgICAgICAjIHRoYXQgYXJlIG5v
dCBzdWJjbGFzc2VzIG9mIGBFeGNlcHRpb25gLiBDb25zdW1lIGFsbAorICAgICAgICAgICAgICAg
ICMgZXhjZXB0aW9ucyB0byBwcmV2ZW50IGFzeW5jaW8ncyB3YXJuaW5nIGZyb20gbG9nZ2luZy4K
KyAgICAgICAgICAgICAgICBpZiB0YXNrLmRvbmUoKSBhbmQgbm90IHRhc2suY2FuY2VsbGVkKCk6
CisgICAgICAgICAgICAgICAgICAgIHRhc2suZXhjZXB0aW9uKCkKKyAgICAgICAgICAgICAgICBy
YWlzZQorICAgIHJldHVybiBpbm5lcgorCisKK2RlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVt
KToKKyAgICBpZiAnYXN5bmNpbycgaW4gaXRlbS5rZXl3b3JkczoKKyAgICAgICAgIyBpbmplY3Qg
YW4gZXZlbnQgbG9vcCBmaXh0dXJlIGZvciBhbGwgYXN5bmMgdGVzdHMKKyAgICAgICAgaWYgJ2V2
ZW50X2xvb3AnIGluIGl0ZW0uZml4dHVyZW5hbWVzOgorICAgICAgICAgICAgaXRlbS5maXh0dXJl
bmFtZXMucmVtb3ZlKCdldmVudF9sb29wJykKKyAgICAgICAgaXRlbS5maXh0dXJlbmFtZXMuaW5z
ZXJ0KDAsICdldmVudF9sb29wJykKKyAgICBpZiBpdGVtLmdldF9jbG9zZXN0X21hcmtlcigiYXN5
bmNpbyIpIGlzIG5vdCBOb25lIFwKKyAgICAgICAgYW5kIG5vdCBnZXRhdHRyKGl0ZW0ub2JqLCAn
aHlwb3RoZXNpcycsIEZhbHNlKSBcCisgICAgICAgIGFuZCBnZXRhdHRyKGl0ZW0ub2JqLCAnaXNf
aHlwb3RoZXNpc190ZXN0JywgRmFsc2UpOgorICAgICAgICAgICAgcHl0ZXN0LmZhaWwoCisgICAg
ICAgICAgICAgICAgJ3Rlc3QgZnVuY3Rpb24gYCVyYCBpcyB1c2luZyBIeXBvdGhlc2lzLCBidXQg
cHl0ZXN0LWFzeW5jaW8gJworICAgICAgICAgICAgICAgICdvbmx5IHdvcmtzIHdpdGggSHlwb3Ro
ZXNpcyAzLjY0LjAgb3IgbGF0ZXIuJyAlIGl0ZW0KKyAgICAgICAgICAgICkKKworCitAcHl0ZXN0
LmZpeHR1cmUKK2RlZiBldmVudF9sb29wKHJlcXVlc3QpOgorICAgICIiIkNyZWF0ZSBhbiBpbnN0
YW5jZSBvZiB0aGUgZGVmYXVsdCBldmVudCBsb29wIGZvciBlYWNoIHRlc3QgY2FzZS4iIiIKKyAg
ICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcF9wb2xpY3koKS5uZXdfZXZlbnRfbG9vcCgp
CisgICAgeWllbGQgbG9vcAorICAgIGxvb3AuY2xvc2UoKQorCisKK2RlZiBfdW51c2VkX3RjcF9w
b3J0KCk6CisgICAgIiIiRmluZCBhbiB1bnVzZWQgbG9jYWxob3N0IFRDUCBwb3J0IGZyb20gMTAy
NC02NTUzNSBhbmQgcmV0dXJuIGl0LiIiIgorICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHNv
Y2tldC5zb2NrZXQoKSkgYXMgc29jazoKKyAgICAgICAgc29jay5iaW5kKCgnMTI3LjAuMC4xJywg
MCkpCisgICAgICAgIHJldHVybiBzb2NrLmdldHNvY2tuYW1lKClbMV0KKworCitAcHl0ZXN0LmZp
eHR1cmUKK2RlZiB1bnVzZWRfdGNwX3BvcnQoKToKKyAgICByZXR1cm4gX3VudXNlZF90Y3BfcG9y
dCgpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgdW51c2VkX3RjcF9wb3J0X2ZhY3RvcnkoKToK
KyAgICAiIiJBIGZhY3RvcnkgZnVuY3Rpb24sIHByb2R1Y2luZyBkaWZmZXJlbnQgdW51c2VkIFRD
UCBwb3J0cy4iIiIKKyAgICBwcm9kdWNlZCA9IHNldCgpCisKKyAgICBkZWYgZmFjdG9yeSgpOgor
ICAgICAgICAiIiJSZXR1cm4gYW4gdW51c2VkIHBvcnQuIiIiCisgICAgICAgIHBvcnQgPSBfdW51
c2VkX3RjcF9wb3J0KCkKKworICAgICAgICB3aGlsZSBwb3J0IGluIHByb2R1Y2VkOgorICAgICAg
ICAgICAgcG9ydCA9IF91bnVzZWRfdGNwX3BvcnQoKQorCisgICAgICAgIHByb2R1Y2VkLmFkZChw
b3J0KQorCisgICAgICAgIHJldHVybiBwb3J0CisgICAgcmV0dXJuIGZhY3RvcnkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9z
ZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yM2E4ZWJh
MmNlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3NldHVwLmNmZwpA
QCAtMCwwICsxLDE4IEBACitbY292ZXJhZ2U6cnVuXQorc291cmNlID0gcHl0ZXN0X2FzeW5jaW8K
KworW2NvdmVyYWdlOnJlcG9ydF0KK3Nob3dfbWlzc2luZyA9IHRydWUKKworW3Rvb2w6cHl0ZXN0
XQorYWRkb3B0cyA9IC1yc3ggLS10Yj1zaG9ydAordGVzdHBhdGhzID0gdGVzdHMKK2ZpbHRlcndh
cm5pbmdzID0gZXJyb3IKKworW21ldGFkYXRhXQorbGljZW5zZV9maWxlID0gTElDRU5TRQorCitb
ZWdnX2luZm9dCit0YWdfYnVpbGQgPSAKK3RhZ19kYXRlID0gMAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC1hc3luY2lvL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9zZXR1cC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYxNzU3MTEzNTA3NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vc2V0dXAucHkKQEAgLTAsMCArMSw1
NCBAQAoraW1wb3J0IHJlCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKKworZnJvbSBzZXR1cHRv
b2xzIGltcG9ydCBzZXR1cCwgZmluZF9wYWNrYWdlcworCisKK2RlZiBmaW5kX3ZlcnNpb24oKToK
KyAgICB2ZXJzaW9uX2ZpbGUgPSAoCisgICAgICAgIFBhdGgoX19maWxlX18pCisgICAgICAgIC5w
YXJlbnQuam9pbnBhdGgoInB5dGVzdF9hc3luY2lvIiwgIl9faW5pdF9fLnB5IikKKyAgICAgICAg
LnJlYWRfdGV4dCgpCisgICAgKQorICAgIHZlcnNpb25fbWF0Y2ggPSByZS5zZWFyY2goCisgICAg
ICAgIHIiXl9fdmVyc2lvbl9fID0gWydcIl0oW14nXCJdKilbJ1wiXSIsIHZlcnNpb25fZmlsZSwg
cmUuTQorICAgICkKKyAgICBpZiB2ZXJzaW9uX21hdGNoOgorICAgICAgICByZXR1cm4gdmVyc2lv
bl9tYXRjaC5ncm91cCgxKQorCisgICAgcmFpc2UgUnVudGltZUVycm9yKCJVbmFibGUgdG8gZmlu
ZCB2ZXJzaW9uIHN0cmluZy4iKQorCisKK3NldHVwKAorICAgIG5hbWU9InB5dGVzdC1hc3luY2lv
IiwKKyAgICB2ZXJzaW9uPWZpbmRfdmVyc2lvbigpLAorICAgIHBhY2thZ2VzPWZpbmRfcGFja2Fn
ZXMoKSwKKyAgICB1cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3lu
Y2lvIiwKKyAgICBsaWNlbnNlPSJBcGFjaGUgMi4wIiwKKyAgICBhdXRob3I9IlRpbiBUdnJ0a292
acSHIiwKKyAgICBhdXRob3JfZW1haWw9InRpbmNoZXN0ZXJAZ21haWwuY29tIiwKKyAgICBkZXNj
cmlwdGlvbj0iUHl0ZXN0IHN1cHBvcnQgZm9yIGFzeW5jaW8uIiwKKyAgICBsb25nX2Rlc2NyaXB0
aW9uPVBhdGgoX19maWxlX18pLnBhcmVudC5qb2lucGF0aCgiUkVBRE1FLnJzdCIpLnJlYWRfdGV4
dCgpLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgIkRldmVsb3BtZW50IFN0YXR1cyA6OiA0
IC0gQmV0YSIsCisgICAgICAgICJJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzIiwKKyAg
ICAgICAgIkxpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNl
IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjUiLAorICAg
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNiIsCisgICAgICAgICJQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43IiwKKyAgICAgICAgIlByb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjgiLAorICAgICAgICAiVG9waWMgOjogU29mdHdh
cmUgRGV2ZWxvcG1lbnQgOjogVGVzdGluZyIsCisgICAgICAgICJGcmFtZXdvcmsgOjogUHl0ZXN0
IiwKKyAgICBdLAorICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0gMy41IiwKKyAgICBpbnN0YWxsX3Jl
cXVpcmVzPVsicHl0ZXN0ID49IDUuNC4wIl0sCisgICAgZXh0cmFzX3JlcXVpcmU9eworICAgICAg
ICAnOnB5dGhvbl92ZXJzaW9uID09ICIzLjUiJzogImFzeW5jX2dlbmVyYXRvciA+PSAxLjMiLAor
ICAgICAgICAidGVzdGluZyI6IFsKKyAgICAgICAgICAgICJjb3ZlcmFnZSIsCisgICAgICAgICAg
ICAiYXN5bmNfZ2VuZXJhdG9yID49IDEuMyIsCisgICAgICAgICAgICAiaHlwb3RoZXNpcyA+PSA1
LjcuMSIsCisgICAgICAgIF0sCisgICAgfSwKKyAgICBlbnRyeV9wb2ludHM9eyJweXRlc3QxMSI6
IFsiYXN5bmNpbyA9IHB5dGVzdF9hc3luY2lvLnBsdWdpbiJdfSwKKykKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0Ly5jb3ZlcmFnZXJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmNvdmVyYWdlcmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOWFiMzc2NDMzNzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC8uY292ZXJhZ2VyYwpAQCAtMCwwICsxLDMwIEBACitbcnVuXQor
aW5jbHVkZSA9CisgIHNyYy8qCisgIHRlc3RpbmcvKgorICAqL2xpYi9weXRob24qL3NpdGUtcGFj
a2FnZXMvX3B5dGVzdC8qCisgICovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9weXRlc3QucHkK
KyAgKi9weXB5Ki9zaXRlLXBhY2thZ2VzL19weXRlc3QvKgorICAqL3B5cHkqL3NpdGUtcGFja2Fn
ZXMvcHl0ZXN0LnB5CisgICpcTGliXHNpdGUtcGFja2FnZXNcX3B5dGVzdFwqCisgICpcTGliXHNp
dGUtcGFja2FnZXNccHl0ZXN0LnB5CitwYXJhbGxlbCA9IDEKK2JyYW5jaCA9IDEKKworW3BhdGhz
XQorc291cmNlID0gc3JjLworICAqL2xpYi9weXRob24qL3NpdGUtcGFja2FnZXMvCisgICovcHlw
eSovc2l0ZS1wYWNrYWdlcy8KKyAgKlxMaWJcc2l0ZS1wYWNrYWdlc1wKKworW3JlcG9ydF0KK3Nr
aXBfY292ZXJlZCA9IFRydWUKK3Nob3dfbWlzc2luZyA9IFRydWUKK2V4Y2x1ZGVfbGluZXMgPQor
ICAgIFwjXHMqcHJhZ21hOiBubyBjb3ZlcgorICAgIF5ccypyYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yXGIKKyAgICBeXHMqcmV0dXJuIE5vdEltcGxlbWVudGVkXGIKKyAgICBeXHMqYXNzZXJ0IEZh
bHNlKCx8JCkKKworICAgIF5ccyppZiBUWVBFX0NIRUNLSU5HOgorICAgIF5ccypAb3ZlcmxvYWQo
IHwkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGF0dHJpYnV0ZXMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC8uZ2l0YXR0cmlidXRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmVjMWM2NmRjMWU5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRhdHRyaWJ1
dGVzCkBAIC0wLDAgKzEgQEAKKyouYmF0ICB0ZXh0IGVvbD1jcmxmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC8uZ2l0YmxhbWVpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0YmxhbWVpZ25vcmUKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wY2IyOThiMDI0ZDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0YmxhbWVpZ25vcmUKQEAgLTAsMCArMSwyOCBA
QAorIyBMaXN0IG9mIHJldmlzaW9ucyB0aGF0IGNhbiBiZSBpZ25vcmVkIHdpdGggZ2l0LWJsYW1l
KDEpLgorIworIyBTZWUgYGJsYW1lLmlnbm9yZVJldnNGaWxlYCBpbiBnaXQtY29uZmlnKDEpIHRv
IGVuYWJsZSBpdCBieSBkZWZhdWx0LCBvcgorIyB1c2UgaXQgd2l0aCBgLS1pZ25vcmUtcmV2cy1m
aWxlYCBtYW51YWxseSB3aXRoIGdpdC1ibGFtZS4KKyMKKyMgVG8gImluc3RhbGwiIGl0OgorIwor
IyAgIGdpdCBjb25maWcgLS1sb2NhbCBibGFtZS5pZ25vcmVSZXZzRmlsZSAuZ2l0YmxhbWVpZ25v
cmUKKworIyBydW4gYmxhY2sKKzcwM2U0YjExYmE3NjE3MWVjY2QzZjEzZTcyM2M0N2I4MTBkZWQ3
ZWYKKyMgc3dpdGNoZWQgdG8gc3JjIGxheW91dAorZWFhODgyZjNkNTM0MDk1NmJlYjE3NmFhMTc1
M2UwN2UzZjNmMjE5MAorIyBwcmUtY29tbWl0IHJ1biBweXVwZ3JhZGUgLS1hbGwtZmlsZXMKK2E5
MWZlMWZlZGRiZGVkNTM1YTQzMjJhYjg1NDQyOWUzYTM5NjFmYjQKKyMgbW92ZSBub2RlIGJhc2Ug
Y2xhc3NlcyBmcm9tIG1haW4gdG8gbm9kZXMKK2FmYzYwN2NmZDgxNDU4ZDRlNGYzYjFmM2NmOGNj
OTMxYjkzMzkwN2UKKyMgWz9dIHNwbGl0IG1vc3QgZml4dHVyZSByZWxhdGVkIGNvZGUgaW50byBv
d24gcGx1Z2luCis4YzQ5NTYxNDcwNzA4NzYxZjczMjE1MDRmNWU4MzQzODExYmU4N2FjCisjIHJ1
biBweXVwZ3JhZGUKKzlhYWNiNDYzNWU4MWVkZDZlY2YyODFkNGY2YzBjZmM4ZTk0YWIzMDEKKyMg
cnVuIGJsYWNrZW4tZG9jcworNWY5NWRjZTk1NjAyOTIxYTcwYmZiYzdkOGRlMmY3NzEyYzVlNDUw
NQorIyByYW4gcHl1cGdyYWRlLWRvY3MgYWdhaW4KKzc1ZDBiODk5YmJiNTZkNjg0OWU5ZDY5ZDgz
YTk0MjZlZDNmNDNmOGIKKworIyBtb3ZlIGFyZ3VtZW50IHBhcnNlciB0byBvd24gZmlsZQorYzlk
Zjc3Y2JkNmEzNjVkY2I3M2MzOTYxOGU0ODQyNzExODE3ZTg3MQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvLmdpdGh1Yi9GVU5ESU5HLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvRlVORElORy55
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZjJkMWNmMDljODMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0ZVTkRJTkcueW1sCkBAIC0w
LDAgKzEsNSBAQAorIyBpbmZvOgorIyAqIGh0dHBzOi8vaGVscC5naXRodWIuY29tL2VuL2FydGlj
bGVzL2Rpc3BsYXlpbmctYS1zcG9uc29yLWJ1dHRvbi1pbi15b3VyLXJlcG9zaXRvcnkKKyMgKiBo
dHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vaG93LXRvLWNvbm5lY3QtdGlkZWxpZnQt
d2l0aC1naXRodWIKK3RpZGVsaWZ0OiBweXBpL3B5dGVzdAorb3Blbl9jb2xsZWN0aXZlOiBweXRl
c3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvSVNTVUVfVEVNUExBVEUubWQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmYmNiYjE2ZmMzNTEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8u
Z2l0aHViL0lTU1VFX1RFTVBMQVRFLm1kCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1U
aGFua3MgZm9yIHN1Ym1pdHRpbmcgYW4gaXNzdWUhCi0KLUhlcmUncyBhIHF1aWNrIGNoZWNrbGlz
dCBpbiB3aGF0IHRvIGluY2x1ZGU6Ci0KLS0gWyBdIEluY2x1ZGUgYSBkZXRhaWxlZCBkZXNjcmlw
dGlvbiBvZiB0aGUgYnVnIG9yIHN1Z2dlc3Rpb24KLS0gWyBdIGBwaXAgbGlzdGAgb2YgdGhlIHZp
cnR1YWwgZW52aXJvbm1lbnQgeW91IGFyZSB1c2luZwotLSBbIF0gcHl0ZXN0IGFuZCBvcGVyYXRp
bmcgc3lzdGVtIHZlcnNpb25zCi0tIFsgXSBNaW5pbWFsIGV4YW1wbGUgaWYgcG9zc2libGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvSVNTVUVfVEVNUExBVEUvMV9idWdfcmVwb3J0
Lm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS8xX2J1Z19yZXBvcnQubWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZmMzZTA2Y2QyYzAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLzFfYnVn
X3JlcG9ydC5tZApAQCAtMCwwICsxLDE2IEBACistLS0KK25hbWU6IPCfkJsgQnVnIFJlcG9ydAor
YWJvdXQ6IFJlcG9ydCBlcnJvcnMgYW5kIHByb2JsZW1zCisKKy0tLQorCis8IS0tCitUaGFua3Mg
Zm9yIHN1Ym1pdHRpbmcgYW4gaXNzdWUhCisKK1F1aWNrIGNoZWNrLWxpc3Qgd2hpbGUgcmVwb3J0
aW5nIGJ1Z3M6CistLT4KKworLSBbIF0gYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgYnVn
IG9yIHByb2JsZW0geW91IGFyZSBoYXZpbmcKKy0gWyBdIG91dHB1dCBvZiBgcGlwIGxpc3RgIGZy
b20gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgeW91IGFyZSB1c2luZworLSBbIF0gcHl0ZXN0IGFu
ZCBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb25zCistIFsgXSBtaW5pbWFsIGV4YW1wbGUgaWYgcG9z
c2libGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvSVNTVUVfVEVNUExBVEUvMl9m
ZWF0dXJlX3JlcXVlc3QubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLzJf
ZmVhdHVyZV9yZXF1ZXN0Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNTQ5MTJiMDUyMzM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9J
U1NVRV9URU1QTEFURS8yX2ZlYXR1cmVfcmVxdWVzdC5tZApAQCAtMCwwICsxLDUgQEAKKy0tLQor
bmFtZTog8J+agCBGZWF0dXJlIFJlcXVlc3QKK2Fib3V0OiBJZGVhcyBmb3IgbmV3IGZlYXR1cmVz
IGFuZCBpbXByb3ZlbWVudHMKKworLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHVi
L0lTU1VFX1RFTVBMQVRFL2NvbmZpZy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RF
TVBMQVRFL2NvbmZpZy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li43NDJkMmU0ZDY2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lT
U1VFX1RFTVBMQVRFL2NvbmZpZy55bWwKQEAgLTAsMCArMSw1IEBACitibGFua19pc3N1ZXNfZW5h
YmxlZDogZmFsc2UKK2NvbnRhY3RfbGlua3M6CisgIC0gbmFtZTog4p2TIFN1cHBvcnQgUXVlc3Rp
b24KKyAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9kaXNjdXNz
aW9ucworICAgIGFib3V0OiBVc2UgR2l0SHViJ3MgbmV3IERpc2N1c3Npb25zIGZlYXR1cmUgZm9y
IHF1ZXN0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9QVUxMX1JFUVVFU1Rf
VEVNUExBVEUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL1BVTExfUkVRVUVTVF9URU1QTEFURS5t
ZAppbmRleCAyM2E5ZjhjNTY4MzIuLjk0MDhmY2VhZmUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdp
dGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKQEAgLTEsMTQgKzEsMjYgQEAKKzwhLS0KIFRo
YW5rcyBmb3Igc3VibWl0dGluZyBhIFBSLCB5b3VyIGNvbnRyaWJ1dGlvbiBpcyByZWFsbHkgYXBw
cmVjaWF0ZWQhCiAKLUhlcmUncyBhIHF1aWNrIGNoZWNrbGlzdCB0aGF0IHNob3VsZCBiZSBwcmVz
ZW50IGluIFBScyAoeW91IGNhbiBkZWxldGUgdGhpcyB0ZXh0IGZyb20gdGhlIGZpbmFsIGRlc2Ny
aXB0aW9uLCB0aGlzIGlzCi1qdXN0IGEgZ3VpZGVsaW5lKToKK0hlcmUgaXMgYSBxdWljayBjaGVj
a2xpc3QgdGhhdCBzaG91bGQgYmUgcHJlc2VudCBpbiBQUnMuCiAKLS0gWyBdIENyZWF0ZSBhIG5l
dyBjaGFuZ2Vsb2cgZmlsZSBpbiB0aGUgYGNoYW5nZWxvZ2AgZm9sZGVyLCB3aXRoIGEgbmFtZSBs
aWtlIGA8SVNTVUUgTlVNQkVSPi48VFlQRT4ucnN0YC4gU2VlIFtjaGFuZ2Vsb2cvUkVBRE1FLnJz
dF0oL2NoYW5nZWxvZy9SRUFETUUucnN0KSBmb3IgZGV0YWlscy4KLS0gWyBdIFRhcmdldCB0aGUg
YG1hc3RlcmAgYnJhbmNoIGZvciBidWcgZml4ZXMsIGRvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQg
dHJpdmlhbCBjaGFuZ2VzLgotLSBbIF0gVGFyZ2V0IHRoZSBgZmVhdHVyZXNgIGJyYW5jaCBmb3Ig
bmV3IGZlYXR1cmVzIGFuZCByZW1vdmFscy9kZXByZWNhdGlvbnMuCiAtIFsgXSBJbmNsdWRlIGRv
Y3VtZW50YXRpb24gd2hlbiBhZGRpbmcgbmV3IGZlYXR1cmVzLgogLSBbIF0gSW5jbHVkZSBuZXcg
dGVzdHMgb3IgdXBkYXRlIGV4aXN0aW5nIHRlc3RzIHdoZW4gYXBwbGljYWJsZS4KKy0gW1hdIEFs
bG93IG1haW50YWluZXJzIHRvIHB1c2ggYW5kIHNxdWFzaCB3aGVuIG1lcmdpbmcgbXkgY29tbWl0
cy4gUGxlYXNlIHVuY2hlY2sgdGhpcyBpZiB5b3UgcHJlZmVyIHRvIHNxdWFzaCB0aGUgY29tbWl0
cyB5b3Vyc2VsZi4KIAotVW5sZXNzIHlvdXIgY2hhbmdlIGlzIHRyaXZpYWwgb3IgYSBzbWFsbCBk
b2N1bWVudGF0aW9uIGZpeCAoZS5nLiwgIGEgdHlwbyBvciByZXdvcmQgb2YgYSBzbWFsbCBzZWN0
aW9uKSBwbGVhc2U6CitJZiB0aGlzIGNoYW5nZSBmaXhlcyBhbiBpc3N1ZSwgcGxlYXNlOgogCi0t
IFsgXSBBZGQgeW91cnNlbGYgdG8gYEFVVEhPUlNgIGluIGFscGhhYmV0aWNhbCBvcmRlcjsKKy0g
WyBdIEFkZCB0ZXh0IGxpa2UgYGBjbG9zZXMgI1hZWldgYCB0byB0aGUgUFIgZGVzY3JpcHRpb24g
YW5kL29yIGNvbW1pdHMgKHdoZXJlIGBgWFlaV2BgIGlzIHRoZSBpc3N1ZSBudW1iZXIpLiBTZWUg
dGhlIFtnaXRodWIgZG9jc10oaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vZW4vZ2l0aHViL21hbmFn
aW5nLXlvdXItd29yay1vbi1naXRodWIvbGlua2luZy1hLXB1bGwtcmVxdWVzdC10by1hbi1pc3N1
ZSNsaW5raW5nLWEtcHVsbC1yZXF1ZXN0LXRvLWFuLWlzc3VlLXVzaW5nLWEta2V5d29yZCkgZm9y
IG1vcmUgaW5mb3JtYXRpb24uCisKK1VubGVzcyB5b3VyIGNoYW5nZSBpcyB0cml2aWFsIG9yIGEg
c21hbGwgZG9jdW1lbnRhdGlvbiBmaXggKGUuZy4sIGEgdHlwbyBvciByZXdvcmQgb2YgYSBzbWFs
bCBzZWN0aW9uKSBwbGVhc2U6CisKKy0gWyBdIENyZWF0ZSBhIG5ldyBjaGFuZ2Vsb2cgZmlsZSBp
biB0aGUgYGNoYW5nZWxvZ2AgZm9sZGVyLCB3aXRoIGEgbmFtZSBsaWtlIGA8SVNTVUUgTlVNQkVS
Pi48VFlQRT4ucnN0YC4gU2VlIFtjaGFuZ2Vsb2cvUkVBRE1FLnJzdF0oaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2Jsb2IvbWFzdGVyL2NoYW5nZWxvZy9SRUFETUUucnN0KSBm
b3IgZGV0YWlscy4KKworICBXcml0ZSBzZW50ZW5jZXMgaW4gdGhlICoqcGFzdCBvciBwcmVzZW50
IHRlbnNlKiosIGV4YW1wbGVzOgorCisgICogKkltcHJvdmVkIHZlcmJvc2UgZGlmZiBvdXRwdXQg
d2l0aCBzZXF1ZW5jZXMuKgorICAqICpUZXJtaW5hbCBzdW1tYXJ5IHN0YXRpc3RpY3Mgbm93IHVz
ZSBtdWx0aXBsZSBjb2xvcnMuKgorCisgIEFsc28gbWFrZSBzdXJlIHRvIGVuZCB0aGUgc2VudGVu
Y2Ugd2l0aCBhIGAuYC4KKworLSBbIF0gQWRkIHlvdXJzZWxmIHRvIGBBVVRIT1JTYCBpbiBhbHBo
YWJldGljYWwgb3JkZXIuCistLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvY29u
ZmlnLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvY29uZmlnLnltbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2YThhOTdlNzg1ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0Ly5naXRodWIvY29uZmlnLnltbApAQCAtMCwwICsxLDIgQEAKK3J0ZDoKKyAg
cHJvamVjdDogcHl0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL2xhYmVscy50
b21sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9sYWJlbHMudG9tbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlZjFlOTEzYWY4NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0Ly5naXRodWIvbGFiZWxzLnRvbWwKQEAgLTAsMCArMSwxNDkgQEAKK1sib3M6IGN5
Z3dpbiJdCitjb2xvciA9ICIwMDZiNzUiCitkZXNjcmlwdGlvbiA9ICJjeWd3aW4gcGxhdGZvcm0t
c3BlY2lmaWMgcHJvYmxlbSIKK25hbWUgPSAib3M6IGN5Z3dpbiIKKworWyJvczogbGludXgiXQor
Y29sb3IgPSAiMWQ3NmRiIgorZGVzY3JpcHRpb24gPSAibGludXggcGxhdGZvcm0tc3BlY2lmaWMg
cHJvYmxlbSIKK25hbWUgPSAib3M6IGxpbnV4IgorCitbIm9zOiBtYWMiXQorY29sb3IgPSAiYmZk
YWRjIgorZGVzY3JpcHRpb24gPSAibWFjIHBsYXRmb3JtLXNwZWNpZmljIHByb2JsZW0iCituYW1l
ID0gIm9zOiBtYWMiCisKK1sib3M6IHdpbmRvd3MiXQorY29sb3IgPSAiZmJjYTA0IgorZGVzY3Jp
cHRpb24gPSAid2luZG93cyBwbGF0Zm9ybS1zcGVjaWZpYyBwcm9ibGVtIgorbmFtZSA9ICJvczog
d2luZG93cyIKKworWyJwbHVnaW46IGFyZ2NvbXBsZXRlIl0KK2NvbG9yID0gImQ0YzVmOSIKK2Rl
c2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIGFyZ2NvbXBsZXRlIGJ1aWx0aW4gcGx1Z2luIgor
bmFtZSA9ICJwbHVnaW46IGFyZ2NvbXBsZXRlIgorCitbInBsdWdpbjogY2FjaGUiXQorY29sb3Ig
PSAiYzdkZWY4IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgY2FjaGUgYnVpbHRpbiBw
bHVnaW4iCituYW1lID0gInBsdWdpbjogY2FjaGUiCisKK1sicGx1Z2luOiBjYXB0dXJlIl0KK2Nv
bG9yID0gIjFkNzZkYiIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIGNhcHR1cmUgYnVp
bHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogY2FwdHVyZSIKKworWyJwbHVnaW46IGRlYnVn
Z2luZyJdCitjb2xvciA9ICJkZDUyYTgiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBk
ZWJ1Z2dpbmcgYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogZGVidWdnaW5nIgorCitb
InBsdWdpbjogZG9jdGVzdHMiXQorY29sb3IgPSAiZmFkOGM3IgorZGVzY3JpcHRpb24gPSAicmVs
YXRlZCB0byB0aGUgZG9jdGVzdHMgYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogZG9j
dGVzdHMiCisKK1sicGx1Z2luOiBqdW5pdHhtbCJdCitjb2xvciA9ICJjNWRlZjUiCitkZXNjcmlw
dGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBqdW5pdHhtbCBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAi
cGx1Z2luOiBqdW5pdHhtbCIKKworWyJwbHVnaW46IGxvZ2dpbmciXQorY29sb3IgPSAiZmY1NDMy
IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgbG9nZ2luZyBidWlsdGluIHBsdWdpbiIK
K25hbWUgPSAicGx1Z2luOiBsb2dnaW5nIgorCitbInBsdWdpbjogbW9ua2V5cGF0Y2giXQorY29s
b3IgPSAiMGU4YTE2IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgbW9ua2V5cGF0Y2gg
YnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogbW9ua2V5cGF0Y2giCisKK1sicGx1Z2lu
OiBub3NlIl0KK2NvbG9yID0gImJmZGFkYyIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhl
IG5vc2UgaW50ZWdyYXRpb24gYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogbm9zZSIK
KworWyJwbHVnaW46IHBhc3RlYmluIl0KK2NvbG9yID0gImJmZDRmMiIKK2Rlc2NyaXB0aW9uID0g
InJlbGF0ZWQgdG8gdGhlIHBhc3RlYmluIGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46
IHBhc3RlYmluIgorCitbInBsdWdpbjogcHl0ZXN0ZXIiXQorY29sb3IgPSAiYzVkZWY1IgorZGVz
Y3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgcHl0ZXN0ZXIgYnVpbHRpbiBwbHVnaW4iCituYW1l
ID0gInBsdWdpbjogcHl0ZXN0ZXIiCisKK1sicGx1Z2luOiB0bXBkaXIiXQorY29sb3IgPSAiYmZk
NGYyIgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgdG1wZGlyIGJ1aWx0aW4gcGx1Z2lu
IgorbmFtZSA9ICJwbHVnaW46IHRtcGRpciIKKworWyJwbHVnaW46IHVuaXR0ZXN0Il0KK2NvbG9y
ID0gIjAwNmI3NSIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIHVuaXR0ZXN0IGludGVn
cmF0aW9uIGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJwbHVnaW46IHVuaXR0ZXN0IgorCitbInBs
dWdpbjogd2FybmluZ3MiXQorY29sb3IgPSAiZmVmMmMwIgorZGVzY3JpcHRpb24gPSAicmVsYXRl
ZCB0byB0aGUgd2FybmluZ3MgYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogd2Fybmlu
Z3MiCisKK1sicGx1Z2luOiB4ZGlzdCJdCitjb2xvciA9ICI1MzE5ZTciCitkZXNjcmlwdGlvbiA9
ICJyZWxhdGVkIHRvIHRoZSB4ZGlzdCBleHRlcm5hbCBwbHVnaW4iCituYW1lID0gInBsdWdpbjog
eGRpc3QiCisKK1sic3RhdHVzOiBjcml0aWNhbCJdCitjb2xvciA9ICJlMTFkMjEiCitkZXNjcmlw
dGlvbiA9ICJncmF2ZSBwcm9ibGVtIG9yIHVzYWJpbGl0eSBpc3N1ZSB0aGF0IGFmZmVjdHMgbG90
cyBvZiB1c2VycyIKK25hbWUgPSAic3RhdHVzOiBjcml0aWNhbCIKKworWyJzdGF0dXM6IGVhc3ki
XQorY29sb3IgPSAiYmZlNWJmIgorZGVzY3JpcHRpb24gPSAiZWFzeSBpc3N1ZSB0aGF0IGlzIGZy
aWVuZGx5IHRvIG5ldyBjb250cmlidXRvciIKK25hbWUgPSAic3RhdHVzOiBlYXN5IgorCitbInN0
YXR1czogaGVscCB3YW50ZWQiXQorY29sb3IgPSAiMTU5ODE4IgorZGVzY3JpcHRpb24gPSAiZGV2
ZWxvcGVycyB3b3VsZCBsaWtlIGhlbHAgZnJvbSBleHBlcnRzIG9uIHRoaXMgdG9waWMiCituYW1l
ID0gInN0YXR1czogaGVscCB3YW50ZWQiCisKK1sic3RhdHVzOiBuZWVkcyBpbmZvcm1hdGlvbiJd
Citjb2xvciA9ICI1MzE5ZTciCitkZXNjcmlwdGlvbiA9ICJyZXBvcnRlciBuZWVkcyB0byBwcm92
aWRlIG1vcmUgaW5mb3JtYXRpb247IGNhbiBiZSBjbG9zZWQgYWZ0ZXIgMiBvciBtb3JlIHdlZWtz
IG9mIGluYWN0aXZpdHkiCituYW1lID0gInN0YXR1czogbmVlZHMgaW5mb3JtYXRpb24iCisKK1si
dG9waWM6IGNvbGxlY3Rpb24iXQorY29sb3IgPSAiMDA2Yjc1IgorZGVzY3JpcHRpb24gPSAicmVs
YXRlZCB0byB0aGUgY29sbGVjdGlvbiBwaGFzZSIKK25hbWUgPSAidG9waWM6IGNvbGxlY3Rpb24i
CisKK1sidG9waWM6IGNvbmZpZyJdCitjb2xvciA9ICIwMDZiNzUiCitkZXNjcmlwdGlvbiA9ICJy
ZWxhdGVkIHRvIGNvbmZpZyBoYW5kbGluZywgYXJndW1lbnQgcGFyc2luZyBhbmQgY29uZmlnIGZp
bGUiCituYW1lID0gInRvcGljOiBjb25maWciCisKK1sidG9waWM6IGZpeHR1cmVzIl0KK2NvbG9y
ID0gIjUzMTllNyIKK2Rlc2NyaXB0aW9uID0gImFueXRoaW5nIGludm9sdmluZyBmaXh0dXJlcyBk
aXJlY3RseSBvciBpbmRpcmVjdGx5IgorbmFtZSA9ICJ0b3BpYzogZml4dHVyZXMiCisKK1sidG9w
aWM6IG1hcmtzIl0KK2NvbG9yID0gImI2MDIwNSIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8g
bWFya3MsIGVpdGhlciB0aGUgZ2VuZXJhbCBtYXJrcyBvciBidWlsdGluIgorbmFtZSA9ICJ0b3Bp
YzogbWFya3MiCisKK1sidG9waWM6IHBhcmFtZXRyaXplIl0KK2NvbG9yID0gImZiY2EwNCIKK2Rl
c2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplIgorbmFtZSA9
ICJ0b3BpYzogcGFyYW1ldHJpemUiCisKK1sidG9waWM6IHJlcG9ydGluZyJdCitjb2xvciA9ICJm
ZWYyYzAiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRlcm1pbmFsIG91dHB1dCBhbmQgdXNl
ci1mYWNpbmcgbWVzc2FnZXMgYW5kIGVycm9ycyIKK25hbWUgPSAidG9waWM6IHJlcG9ydGluZyIK
KworWyJ0b3BpYzogcmV3cml0ZSJdCitjb2xvciA9ICIwZThhMTYiCitkZXNjcmlwdGlvbiA9ICJy
ZWxhdGVkIHRvIHRoZSBhc3NlcnRpb24gcmV3cml0ZSBtZWNoYW5pc20iCituYW1lID0gInRvcGlj
OiByZXdyaXRlIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGZiN2NmMjIyNTY0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
Ly5naXRodWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFLm1kCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0Ly5naXRodWIvd29ya2Zsb3dzL21haW4ueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93b3Jr
Zmxvd3MvbWFpbi55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45
ZWYxYTA4Yjk5MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL3dvcmtm
bG93cy9tYWluLnltbApAQCAtMCwwICsxLDIxOCBAQAorbmFtZTogbWFpbgorCitvbjoKKyAgcHVz
aDoKKyAgICBicmFuY2hlczoKKyAgICAgIC0gbWFzdGVyCisgICAgICAtICJbMC05XSsuWzAtOV0r
LngiCisgICAgdGFnczoKKyAgICAgIC0gIioiCisKKyAgcHVsbF9yZXF1ZXN0OgorICAgIGJyYW5j
aGVzOgorICAgICAgLSBtYXN0ZXIKKyAgICAgIC0gIlswLTldKy5bMC05XSsueCIKKworam9iczoK
KyAgYnVpbGQ6CisgICAgcnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorCisgICAgc3RyYXRlZ3k6
CisgICAgICBmYWlsLWZhc3Q6IGZhbHNlCisgICAgICBtYXRyaXg6CisgICAgICAgIG5hbWU6IFsK
KyAgICAgICAgICAid2luZG93cy1weTM1IiwKKyAgICAgICAgICAid2luZG93cy1weTM2IiwKKyAg
ICAgICAgICAid2luZG93cy1weTM3IiwKKyAgICAgICAgICAid2luZG93cy1weTM3LXBsdWdneSIs
CisgICAgICAgICAgIndpbmRvd3MtcHkzOCIsCisKKyAgICAgICAgICAidWJ1bnR1LXB5MzUiLAor
ICAgICAgICAgICJ1YnVudHUtcHkzNiIsCisgICAgICAgICAgInVidW50dS1weTM3IiwKKyAgICAg
ICAgICAidWJ1bnR1LXB5MzctcGx1Z2d5IiwKKyAgICAgICAgICAidWJ1bnR1LXB5MzctZnJlZXpl
IiwKKyAgICAgICAgICAidWJ1bnR1LXB5MzgiLAorICAgICAgICAgICJ1YnVudHUtcHkzOSIsCisg
ICAgICAgICAgInVidW50dS1weXB5MyIsCisKKyAgICAgICAgICAibWFjb3MtcHkzNyIsCisgICAg
ICAgICAgIm1hY29zLXB5MzgiLAorCisgICAgICAgICAgImRvY3MiLAorICAgICAgICAgICJkb2N0
ZXN0aW5nIiwKKyAgICAgICAgICAicGx1Z2lucyIsCisgICAgICAgIF0KKworICAgICAgICBpbmNs
dWRlOgorICAgICAgICAgIC0gbmFtZTogIndpbmRvd3MtcHkzNSIKKyAgICAgICAgICAgIHB5dGhv
bjogIjMuNSIKKyAgICAgICAgICAgIG9zOiB3aW5kb3dzLWxhdGVzdAorICAgICAgICAgICAgdG94
X2VudjogInB5MzUteGRpc3QiCisgICAgICAgICAgICB1c2VfY292ZXJhZ2U6IHRydWUKKyAgICAg
ICAgICAtIG5hbWU6ICJ3aW5kb3dzLXB5MzYiCisgICAgICAgICAgICBweXRob246ICIzLjYiCisg
ICAgICAgICAgICBvczogd2luZG93cy1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJweTM2
LXhkaXN0IgorICAgICAgICAgIC0gbmFtZTogIndpbmRvd3MtcHkzNyIKKyAgICAgICAgICAgIHB5
dGhvbjogIjMuNyIKKyAgICAgICAgICAgIG9zOiB3aW5kb3dzLWxhdGVzdAorICAgICAgICAgICAg
dG94X2VudjogInB5MzctbnVtcHkiCisgICAgICAgICAgLSBuYW1lOiAid2luZG93cy1weTM3LXBs
dWdneSIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuNyIKKyAgICAgICAgICAgIG9zOiB3aW5kb3dz
LWxhdGVzdAorICAgICAgICAgICAgdG94X2VudjogInB5MzctcGx1Z2d5bWFzdGVyLXhkaXN0Igor
ICAgICAgICAgIC0gbmFtZTogIndpbmRvd3MtcHkzOCIKKyAgICAgICAgICAgIHB5dGhvbjogIjMu
OCIKKyAgICAgICAgICAgIG9zOiB3aW5kb3dzLWxhdGVzdAorICAgICAgICAgICAgdG94X2Vudjog
InB5MzgtdW5pdHRlc3RleHRyYXMiCisgICAgICAgICAgICB1c2VfY292ZXJhZ2U6IHRydWUKKwor
ICAgICAgICAgIC0gbmFtZTogInVidW50dS1weTM1IgorICAgICAgICAgICAgcHl0aG9uOiAiMy41
IgorICAgICAgICAgICAgb3M6IHVidW50dS1sYXRlc3QKKyAgICAgICAgICAgIHRveF9lbnY6ICJw
eTM1LXhkaXN0IgorICAgICAgICAgIC0gbmFtZTogInVidW50dS1weTM2IgorICAgICAgICAgICAg
cHl0aG9uOiAiMy42IgorICAgICAgICAgICAgb3M6IHVidW50dS1sYXRlc3QKKyAgICAgICAgICAg
IHRveF9lbnY6ICJweTM2LXhkaXN0IgorICAgICAgICAgIC0gbmFtZTogInVidW50dS1weTM3Igor
ICAgICAgICAgICAgcHl0aG9uOiAiMy43IgorICAgICAgICAgICAgb3M6IHVidW50dS1sYXRlc3QK
KyAgICAgICAgICAgIHRveF9lbnY6ICJweTM3LWxzb2YtbnVtcHktb2xkYXR0cnMtcGV4cGVjdCIK
KyAgICAgICAgICAgIHVzZV9jb3ZlcmFnZTogdHJ1ZQorICAgICAgICAgIC0gbmFtZTogInVidW50
dS1weTM3LXBsdWdneSIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuNyIKKyAgICAgICAgICAgIG9z
OiB1YnVudHUtbGF0ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkzNy1wbHVnZ3ltYXN0ZXIt
eGRpc3QiCisgICAgICAgICAgLSBuYW1lOiAidWJ1bnR1LXB5MzctZnJlZXplIgorICAgICAgICAg
ICAgcHl0aG9uOiAiMy43IgorICAgICAgICAgICAgb3M6IHVidW50dS1sYXRlc3QKKyAgICAgICAg
ICAgIHRveF9lbnY6ICJweTM3LWZyZWV6ZSIKKyAgICAgICAgICAtIG5hbWU6ICJ1YnVudHUtcHkz
OCIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuOCIKKyAgICAgICAgICAgIG9zOiB1YnVudHUtbGF0
ZXN0CisgICAgICAgICAgICB0b3hfZW52OiAicHkzOC14ZGlzdCIKKyAgICAgICAgICAtIG5hbWU6
ICJ1YnVudHUtcHkzOSIKKyAgICAgICAgICAgIHB5dGhvbjogIjMuOS1kZXYiCisgICAgICAgICAg
ICBvczogdWJ1bnR1LWxhdGVzdAorICAgICAgICAgICAgdG94X2VudjogInB5MzkteGRpc3QiCisg
ICAgICAgICAgLSBuYW1lOiAidWJ1bnR1LXB5cHkzIgorICAgICAgICAgICAgcHl0aG9uOiAicHlw
eTMiCisgICAgICAgICAgICBvczogdWJ1bnR1LWxhdGVzdAorICAgICAgICAgICAgdG94X2Vudjog
InB5cHkzLXhkaXN0IgorCisgICAgICAgICAgLSBuYW1lOiAibWFjb3MtcHkzNyIKKyAgICAgICAg
ICAgIHB5dGhvbjogIjMuNyIKKyAgICAgICAgICAgIG9zOiBtYWNvcy1sYXRlc3QKKyAgICAgICAg
ICAgIHRveF9lbnY6ICJweTM3LXhkaXN0IgorICAgICAgICAgIC0gbmFtZTogIm1hY29zLXB5Mzgi
CisgICAgICAgICAgICBweXRob246ICIzLjgiCisgICAgICAgICAgICBvczogbWFjb3MtbGF0ZXN0
CisgICAgICAgICAgICB0b3hfZW52OiAicHkzOC14ZGlzdCIKKyAgICAgICAgICAgIHVzZV9jb3Zl
cmFnZTogdHJ1ZQorCisgICAgICAgICAgLSBuYW1lOiAicGx1Z2lucyIKKyAgICAgICAgICAgIHB5
dGhvbjogIjMuNyIKKyAgICAgICAgICAgIG9zOiB1YnVudHUtbGF0ZXN0CisgICAgICAgICAgICB0
b3hfZW52OiAicGx1Z2lucyIKKworICAgICAgICAgIC0gbmFtZTogImRvY3MiCisgICAgICAgICAg
ICBweXRob246ICIzLjciCisgICAgICAgICAgICBvczogdWJ1bnR1LWxhdGVzdAorICAgICAgICAg
ICAgdG94X2VudjogImRvY3MiCisgICAgICAgICAgLSBuYW1lOiAiZG9jdGVzdGluZyIKKyAgICAg
ICAgICAgIHB5dGhvbjogIjMuNyIKKyAgICAgICAgICAgIG9zOiB1YnVudHUtbGF0ZXN0CisgICAg
ICAgICAgICB0b3hfZW52OiAiZG9jdGVzdGluZyIKKyAgICAgICAgICAgIHVzZV9jb3ZlcmFnZTog
dHJ1ZQorCisgICAgc3RlcHM6CisgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAg
ICB3aXRoOgorICAgICAgICBmZXRjaC1kZXB0aDogMAorICAgIC0gbmFtZTogU2V0IHVwIFB5dGhv
biAke3sgbWF0cml4LnB5dGhvbiB9fQorICAgICAgdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25A
djIKKyAgICAgIGlmOiBtYXRyaXgucHl0aG9uICE9ICczLjktZGV2JworICAgICAgd2l0aDoKKyAg
ICAgICAgcHl0aG9uLXZlcnNpb246ICR7eyBtYXRyaXgucHl0aG9uIH19CisgICAgLSBuYW1lOiBT
ZXQgdXAgUHl0aG9uICR7eyBtYXRyaXgucHl0aG9uIH19IChkZWFkc25ha2VzKQorICAgICAgdXNl
czogZGVhZHNuYWtlcy9hY3Rpb25AdjIuMC4wCisgICAgICBpZjogbWF0cml4LnB5dGhvbiA9PSAn
My45LWRldicKKyAgICAgIHdpdGg6CisgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAke3sgbWF0cml4
LnB5dGhvbiB9fQorICAgIC0gbmFtZTogSW5zdGFsbCBkZXBlbmRlbmNpZXMKKyAgICAgIHJ1bjog
fAorICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcAorICAgICAgICBw
aXAgaW5zdGFsbCB0b3ggY292ZXJhZ2UKKworICAgIC0gbmFtZTogVGVzdCB3aXRob3V0IGNvdmVy
YWdlCisgICAgICBpZjogIiEgbWF0cml4LnVzZV9jb3ZlcmFnZSIKKyAgICAgIHJ1bjogInRveCAt
ZSAke3sgbWF0cml4LnRveF9lbnYgfX0iCisKKyAgICAtIG5hbWU6IFRlc3Qgd2l0aCBjb3ZlcmFn
ZQorICAgICAgaWY6ICJtYXRyaXgudXNlX2NvdmVyYWdlIgorICAgICAgZW52OgorICAgICAgICBf
UFlURVNUX1RPWF9DT1ZFUkFHRV9SVU46ICJjb3ZlcmFnZSBydW4gLW0iCisgICAgICAgIENPVkVS
QUdFX1BST0NFU1NfU1RBUlQ6ICIuY292ZXJhZ2VyYyIKKyAgICAgICAgX1BZVEVTVF9UT1hfRVhU
UkFfREVQOiAiY292ZXJhZ2UtZW5hYmxlLXN1YnByb2Nlc3MiCisgICAgICBydW46ICJ0b3ggLWUg
JHt7IG1hdHJpeC50b3hfZW52IH19IgorCisgICAgLSBuYW1lOiBQcmVwYXJlIGNvdmVyYWdlIHRv
a2VuCisgICAgICBpZjogKG1hdHJpeC51c2VfY292ZXJhZ2UgJiYgKCBnaXRodWIucmVwb3NpdG9y
eSA9PSAncHl0ZXN0LWRldi9weXRlc3QnIHx8IGdpdGh1Yi5ldmVudF9uYW1lID09ICdwdWxsX3Jl
cXVlc3QnICkpCisgICAgICBydW46IHwKKyAgICAgICAgcHl0aG9uIHNjcmlwdHMvYXBwZW5kX2Nv
ZGVjb3ZfdG9rZW4ucHkKKworICAgIC0gbmFtZTogUmVwb3J0IGNvdmVyYWdlCisgICAgICBpZjog
KG1hdHJpeC51c2VfY292ZXJhZ2UpCisgICAgICBlbnY6CisgICAgICAgIENPREVDT1ZfTkFNRTog
JHt7IG1hdHJpeC5uYW1lIH19CisgICAgICBydW46IGJhc2ggc2NyaXB0cy9yZXBvcnQtY292ZXJh
Z2Uuc2ggLUYgR0hBLCR7eyBydW5uZXIub3MgfX0KKworICBsaW50aW5nOgorICAgIHJ1bnMtb246
IHVidW50dS1sYXRlc3QKKyAgICBzdGVwczoKKyAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRA
djIKKyAgICAtIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYyCisgICAgLSBuYW1lOiBzZXQg
UFkKKyAgICAgIHJ1bjogZWNobyAiOjpzZXQtZW52IG5hbWU9UFk6OiQocHl0aG9uIC1jICdpbXBv
cnQgaGFzaGxpYiwgc3lzO3ByaW50KGhhc2hsaWIuc2hhMjU2KHN5cy52ZXJzaW9uLmVuY29kZSgp
K3N5cy5leGVjdXRhYmxlLmVuY29kZSgpKS5oZXhkaWdlc3QoKSknKSIKKyAgICAtIHVzZXM6IGFj
dGlvbnMvY2FjaGVAdjEKKyAgICAgIHdpdGg6CisgICAgICAgIHBhdGg6IH4vLmNhY2hlL3ByZS1j
b21taXQKKyAgICAgICAga2V5OiBwcmUtY29tbWl0fCR7eyBlbnYuUFkgfX18JHt7IGhhc2hGaWxl
cygnLnByZS1jb21taXQtY29uZmlnLnlhbWwnKSB9fQorICAgIC0gcnVuOiBwaXAgaW5zdGFsbCB0
b3gKKyAgICAtIHJ1bjogdG94IC1lIGxpbnRpbmcKKworICBkZXBsb3k6CisgICAgaWY6IGdpdGh1
Yi5ldmVudF9uYW1lID09ICdwdXNoJyAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5yZWYsICdy
ZWZzL3RhZ3MnKSAmJiBnaXRodWIucmVwb3NpdG9yeSA9PSAncHl0ZXN0LWRldi9weXRlc3QnCisK
KyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisKKyAgICBuZWVkczogW2J1aWxkXQorCisgICAg
c3RlcHM6CisgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAgICB3aXRoOgorICAg
ICAgICBmZXRjaC1kZXB0aDogMAorICAgIC0gbmFtZTogU2V0IHVwIFB5dGhvbgorICAgICAgdXNl
czogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAgICAgIHdpdGg6CisgICAgICAgIHB5dGhvbi12
ZXJzaW9uOiAiMy43IgorICAgIC0gbmFtZTogSW5zdGFsbCBkZXBlbmRlbmNpZXMKKyAgICAgIHJ1
bjogfAorICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcAorICAgICAg
ICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgd2hlZWwgc2V0dXB0b29scyB0b3gKKyAgICAtIG5hbWU6
IEJ1aWxkIHBhY2thZ2UKKyAgICAgIHJ1bjogfAorICAgICAgICBweXRob24gc2V0dXAucHkgc2Rp
c3QgYmRpc3Rfd2hlZWwKKyAgICAtIG5hbWU6IFB1Ymxpc2ggcGFja2FnZSB0byBQeVBJCisgICAg
ICB1c2VzOiBweXBhL2doLWFjdGlvbi1weXBpLXB1Ymxpc2hAbWFzdGVyCisgICAgICB3aXRoOgor
ICAgICAgICB1c2VyOiBfX3Rva2VuX18KKyAgICAgICAgcGFzc3dvcmQ6ICR7eyBzZWNyZXRzLnB5
cGlfdG9rZW4gfX0KKyAgICAtIG5hbWU6IFB1Ymxpc2ggR2l0SHViIHJlbGVhc2Ugbm90ZXMKKyAg
ICAgIGVudjoKKyAgICAgICAgR0hfUkVMRUFTRV9OT1RFU19UT0tFTjogJHt7IHNlY3JldHMucmVs
ZWFzZV9ub3RlcyB9fQorICAgICAgcnVuOiB8CisgICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxs
IHBhbmRvYworICAgICAgICB0b3ggLWUgcHVibGlzaC1naC1yZWxlYXNlLW5vdGVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLW9uLWNvbW1lbnQueW1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS1vbi1jb21tZW50LnltbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk0ODYzZDg5NmI5OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2Utb24t
Y29tbWVudC55bWwKQEAgLTAsMCArMSwzMSBAQAorIyBwYXJ0IG9mIG91ciByZWxlYXNlIHByb2Nl
c3MsIHNlZSBgcmVsZWFzZS1vbi1jb21tZW50LnB5YAorbmFtZTogcmVsZWFzZSBvbiBjb21tZW50
CisKK29uOgorICBpc3N1ZXM6CisgICAgdHlwZXM6IFtvcGVuZWQsIGVkaXRlZF0KKyAgaXNzdWVf
Y29tbWVudDoKKyAgICB0eXBlczogW2NyZWF0ZWQsIGVkaXRlZF0KKworam9iczoKKyAgYnVpbGQ6
CisgICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAorCisgICAgaWY6IChnaXRodWIuZXZlbnQuY29t
bWVudCAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5jb21tZW50LmJvZHksICdAcHl0ZXN0Ym90
IHBsZWFzZScpKSB8fCAoZ2l0aHViLmV2ZW50Lmlzc3VlICYmICFnaXRodWIuZXZlbnQuY29tbWVu
dCAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5pc3N1ZS5ib2R5LCAnQHB5dGVzdGJvdCBwbGVh
c2UnKSkKKworICAgIHN0ZXBzOgorICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAg
ICAgd2l0aDoKKyAgICAgICAgZmV0Y2gtZGVwdGg6IDAKKworICAgIC0gbmFtZTogU2V0IHVwIFB5
dGhvbgorICAgICAgdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjIKKyAgICAgIHdpdGg6Cisg
ICAgICAgIHB5dGhvbi12ZXJzaW9uOiAiMy44IgorICAgIC0gbmFtZTogSW5zdGFsbCBkZXBlbmRl
bmNpZXMKKyAgICAgIHJ1bjogfAorICAgICAgICBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdy
YWRlIHBpcAorICAgICAgICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgc2V0dXB0b29scyB0b3gKKyAg
ICAtIG5hbWU6IFByZXBhcmUgcmVsZWFzZQorICAgICAgcnVuOiB8CisgICAgICAgIHRveCAtZSBy
ZWxlYXNlLW9uLWNvbW1lbnQgLS0gJEdJVEhVQl9FVkVOVF9QQVRIICR7eyBzZWNyZXRzLmNoYXRv
cHMgfX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8u
Z2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFlYTll
YWMwM2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGlnbm9yZQpAQCAtMCww
ICsxLDU0IEBACisjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGBoZ2ltcG9ydHN2bmAKKy5z
dm4KKy5oZ3N2bgorCisjIElnbm9yZSBsb2NhbCB2aXJ0dWFsZW52cworbGliLworYmluLworaW5j
bHVkZS8KKy5QeXRob24vCisKKyMgVGhlc2UgbGluZXMgYXJlIHN1Z2dlc3RlZCBhY2NvcmRpbmcg
dG8gdGhlIHN2bjppZ25vcmUgcHJvcGVydHkKKyMgRmVlbCBmcmVlIHRvIGVuYWJsZSB0aGVtIGJ5
IHVuY29tbWVudGluZyB0aGVtCisqLnB5YworKi5weW8KKyouc3dwCisqLmNsYXNzCisqLm9yaWcK
Kyp+CisuaHlwb3RoZXNpcy8KKworIyBhdXRvZ2VuZXJhdGVkCitzcmMvX3B5dGVzdC9fdmVyc2lv
bi5weQorIyBzZXR1cHRvb2xzCisuZWdncy8KKworZG9jLyovX2J1aWxkCitkb2MvKi8uZG9jdHJl
ZXMKK2RvYy8qL19jaGFuZ2Vsb2dfdG93bmNyaWVyX2RyYWZ0LnJzdAorYnVpbGQvCitkaXN0Lwor
Ki5lZ2ctaW5mbworaHRtbGNvdi8KK2lzc3VlLworZW52LworLmVudi8KKy52ZW52LworM3JkcGFy
dHkvCisudG94CisuY2FjaGUKKy5weXRlc3RfY2FjaGUKKy5teXB5X2NhY2hlCisuY292ZXJhZ2UK
Ky5jb3ZlcmFnZS4qCitjb3ZlcmFnZS54bWwKKy5yb3BlcHJvamVjdAorLmlkZWEKKy5oeXBvdGhl
c2lzCisucHlkZXZwcm9qZWN0CisucHJvamVjdAorLnNldHRpbmdzCisudnNjb2RlCisKKyMgZ2Vu
ZXJhdGVkIGJ5IHBpcAorcGlwLXdoZWVsLW1ldGFkYXRhLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvLnByZS1jb21taXQtY29uZmlnLnlhbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8ucHJlLWNvbW1pdC1jb25m
aWcueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYwNjhhMmQz
MjRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5wcmUtY29tbWl0LWNvbmZpZy55
YW1sCkBAIC0wLDAgKzEsODIgQEAKK3JlcG9zOgorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNv
bS9wc2YvYmxhY2sKKyAgICByZXY6IDE5LjEwYjAKKyAgICBob29rczoKKyAgICAtICAgaWQ6IGJs
YWNrCisgICAgICAgIGFyZ3M6IFstLXNhZmUsIC0tcXVpZXRdCistICAgcmVwbzogaHR0cHM6Ly9n
aXRodWIuY29tL2Fzb3R0aWxlL2JsYWNrZW4tZG9jcworICAgIHJldjogdjEuNy4wCisgICAgaG9v
a3M6CisgICAgLSAgIGlkOiBibGFja2VuLWRvY3MKKyAgICAgICAgYWRkaXRpb25hbF9kZXBlbmRl
bmNpZXM6IFtibGFjaz09MTkuMTBiMF0KKy0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vcHJl
LWNvbW1pdC9wcmUtY29tbWl0LWhvb2tzCisgICAgcmV2OiB2My4xLjAKKyAgICBob29rczoKKyAg
ICAtICAgaWQ6IHRyYWlsaW5nLXdoaXRlc3BhY2UKKyAgICAtICAgaWQ6IGVuZC1vZi1maWxlLWZp
eGVyCisgICAgLSAgIGlkOiBmaXgtZW5jb2RpbmctcHJhZ21hCisgICAgICAgIGFyZ3M6IFstLXJl
bW92ZV0KKyAgICAtICAgaWQ6IGNoZWNrLXlhbWwKKyAgICAtICAgaWQ6IGRlYnVnLXN0YXRlbWVu
dHMKKyAgICAgICAgZXhjbHVkZTogX3B5dGVzdC8oZGVidWdnaW5nfGhvb2tzcGVjKS5weQorICAg
ICAgICBsYW5ndWFnZV92ZXJzaW9uOiBweXRob24zCistICAgcmVwbzogaHR0cHM6Ly9naXRsYWIu
Y29tL3B5Y3FhL2ZsYWtlOAorICAgIHJldjogMy44LjIKKyAgICBob29rczoKKyAgICAtICAgaWQ6
IGZsYWtlOAorICAgICAgICBsYW5ndWFnZV92ZXJzaW9uOiBweXRob24zCisgICAgICAgIGFkZGl0
aW9uYWxfZGVwZW5kZW5jaWVzOgorICAgICAgICAgIC0gZmxha2U4LXR5cGluZy1pbXBvcnRzPT0x
LjkuMAorICAgICAgICAgIC0gZmxha2U4LWRvY3N0cmluZ3M9PTEuNS4wCistICAgcmVwbzogaHR0
cHM6Ly9naXRodWIuY29tL2Fzb3R0aWxlL3Jlb3JkZXJfcHl0aG9uX2ltcG9ydHMKKyAgICByZXY6
IHYyLjMuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogcmVvcmRlci1weXRob24taW1wb3J0cwor
ICAgICAgICBhcmdzOiBbJy0tYXBwbGljYXRpb24tZGlyZWN0b3JpZXM9LjpzcmMnLCAtLXB5My1w
bHVzXQorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9hc290dGlsZS9weXVwZ3JhZGUKKyAg
ICByZXY6IHYyLjQuNAorICAgIGhvb2tzOgorICAgIC0gICBpZDogcHl1cGdyYWRlCisgICAgICAg
IGFyZ3M6IFstLXB5My1wbHVzXQorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9hc290dGls
ZS9zZXR1cC1jZmctZm10CisgICAgcmV2OiB2MS45LjAKKyAgICBob29rczoKKyAgICAtICAgaWQ6
IHNldHVwLWNmZy1mbXQKKyAgICAgICAgIyBUT0RPOiB3aGVuIHVwZ3JhZGluZyBzZXR1cC1jZmct
Zm10IHRoaXMgY2FuIGJlIHJlbW92ZWQKKyAgICAgICAgYXJnczogWy0tbWF4LXB5LXZlcnNpb249
My45XQorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUtY29tbWl0L21pcnJvcnMtbXlw
eQorICAgIHJldjogdjAuNzgwICAjIE5PVEU6IGtlZXAgdGhpcyBpbiBzeW5jIHdpdGggc2V0dXAu
Y2ZnLgorICAgIGhvb2tzOgorICAgIC0gICBpZDogbXlweQorICAgICAgICBmaWxlczogXihzcmMv
fHRlc3RpbmcvKQorICAgICAgICBhcmdzOiBbXQorLSAgIHJlcG86IGxvY2FsCisgICAgaG9va3M6
CisgICAgLSAgIGlkOiByc3QKKyAgICAgICAgbmFtZTogcnN0CisgICAgICAgIGVudHJ5OiByc3Qt
bGludCAtLWVuY29kaW5nIHV0Zi04CisgICAgICAgIGZpbGVzOiBeKFJFTEVBU0lORy5yc3R8UkVB
RE1FLnJzdHxUSURFTElGVC5yc3QpJAorICAgICAgICBsYW5ndWFnZTogcHl0aG9uCisgICAgICAg
IGFkZGl0aW9uYWxfZGVwZW5kZW5jaWVzOiBbcHlnbWVudHMsIHJlc3RydWN0dXJlZHRleHRfbGlu
dF0KKyAgICAtICAgaWQ6IGNoYW5nZWxvZ3MtcnN0CisgICAgICAgIG5hbWU6IGNoYW5nZWxvZyBm
aWxlbmFtZXMKKyAgICAgICAgbGFuZ3VhZ2U6IGZhaWwKKyAgICAgICAgZW50cnk6ICdjaGFuZ2Vs
b2cgZmlsZXMgbXVzdCBiZSBuYW1lZCAjIyMjLihicmVha2luZ3xidWdmaXh8ZGVwcmVjYXRpb258
ZG9jfGZlYXR1cmV8aW1wcm92ZW1lbnR8dHJpdmlhbHx2ZW5kb3IpLnJzdCcKKyAgICAgICAgZXhj
bHVkZTogY2hhbmdlbG9nLyhcZCtcLihicmVha2luZ3xidWdmaXh8ZGVwcmVjYXRpb258ZG9jfGZl
YXR1cmV8aW1wcm92ZW1lbnR8dHJpdmlhbHx2ZW5kb3IpLnJzdHxSRUFETUUucnN0fF90ZW1wbGF0
ZS5yc3QpCisgICAgICAgIGZpbGVzOiBeY2hhbmdlbG9nLworICAgIC0gICBpZDogcHktZGVwcmVj
YXRlZAorICAgICAgICBuYW1lOiBweSBsaWJyYXJ5IGlzIGRlcHJlY2F0ZWQKKyAgICAgICAgbGFu
Z3VhZ2U6IHB5Z3JlcAorICAgICAgICBlbnRyeTogPgorICAgICAgICAgICAgKD94KVxicHlcLigK
KyAgICAgICAgICAgICAgICBfY29kZVwufAorICAgICAgICAgICAgICAgIGJ1aWx0aW5cLnwKKyAg
ICAgICAgICAgICAgICBjb2RlXC58CisgICAgICAgICAgICAgICAgaW9cLnwKKyAgICAgICAgICAg
ICAgICBwYXRoXC5sb2NhbFwuc3lzZmluZHwKKyAgICAgICAgICAgICAgICBwcm9jZXNzXC58Cisg
ICAgICAgICAgICAgICAgc3RkXC58CisgICAgICAgICAgICAgICAgZXJyb3JcLnwKKyAgICAgICAg
ICAgICAgICB4bWxcLgorICAgICAgICAgICAgKQorICAgICAgICB0eXBlczogW3B5dGhvbl0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5yZWFkdGhlZG9jcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8ucmVh
ZHRoZWRvY3MueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDE3
NmMyNjQwMDE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnJlYWR0aGVkb2NzLnlt
bApAQCAtMCwwICsxLDEyIEBACit2ZXJzaW9uOiAyCisKK3B5dGhvbjoKKyAgIHZlcnNpb246IDMu
NworICAgaW5zdGFsbDoKKyAgICAgIC0gcmVxdWlyZW1lbnRzOiBkb2MvZW4vcmVxdWlyZW1lbnRz
LnR4dAorICAgICAgLSBtZXRob2Q6IHBpcAorICAgICAgICBwYXRoOiAuCisKK2Zvcm1hdHM6Cisg
IC0gZXB1YgorICAtIHBkZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnRyYXZpcy55bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjVjODVkZmUxZjU5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly50cmF2
aXMueW1sCkBAIC0wLDAgKzEsNjAgQEAKK2xhbmd1YWdlOiBweXRob24KK2Rpc3Q6IHRydXN0eQor
cHl0aG9uOiAnMy41LjEnCitjYWNoZTogZmFsc2UKKworZW52OgorICBnbG9iYWw6CisgICAgLSBQ
WVRFU1RfQURET1BUUz0tdnYKKworIyBzZXR1cHRvb2xzLXNjbSBuZWVkcyBhbGwgdGFncyBpbiBv
cmRlciB0byBvYnRhaW4gYSBwcm9wZXIgdmVyc2lvbgorZ2l0OgorICBkZXB0aDogZmFsc2UKKwor
aW5zdGFsbDoKKyAgLSBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIC0tcHJlIHRveAor
Citqb2JzOgorICBpbmNsdWRlOgorICAgICMgQ292ZXJhZ2UgZm9yIFB5dGhvbiAzLjUuezAsMX0g
c3BlY2lmaWMgY29kZSwgbW9zdGx5IHR5cGluZyByZWxhdGVkLgorICAgIC0gZW52OiBUT1hFTlY9
cHkzNSBQWVRFU1RfQ09WRVJBR0U9MSBQWVRFU1RfQURET1BUUz0iLWsgdGVzdF9yYWlzZXNfY3lj
bGljX3JlZmVyZW5jZSIKKyAgICAgIGJlZm9yZV9pbnN0YWxsOgorICAgICAgICAjIFdvcmsgYXJv
dW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vemlwcC9pc3N1ZXMvNDAuCisgICAgICAgIC0g
cHl0aG9uIC1tIHBpcCBpbnN0YWxsIC1VICdzZXR1cHRvb2xzPj0zNC40LjAnIHZpcnR1YWxlbnY9
PTE2LjcuOQorCitiZWZvcmVfc2NyaXB0OgorICAtIHwKKyAgICAjIERvIG5vdCAocmUtKXVwbG9h
ZCBjb3ZlcmFnZSB3aXRoIGNyb24gcnVucy4KKyAgICBpZiBbWyAiJFRSQVZJU19FVkVOVF9UWVBF
IiA9IGNyb24gXV07IHRoZW4KKyAgICAgIFBZVEVTVF9DT1ZFUkFHRT0wCisgICAgZmkKKyAgLSB8
CisgICAgaWYgW1sgIiRQWVRFU1RfQ09WRVJBR0UiID0gMSBdXTsgdGhlbgorICAgICAgZXhwb3J0
IENPVkVSQUdFX0ZJTEU9IiRQV0QvLmNvdmVyYWdlIgorICAgICAgZXhwb3J0IENPVkVSQUdFX1BS
T0NFU1NfU1RBUlQ9IiRQV0QvLmNvdmVyYWdlcmMiCisgICAgICBleHBvcnQgX1BZVEVTVF9UT1hf
Q09WRVJBR0VfUlVOPSJjb3ZlcmFnZSBydW4gLW0iCisgICAgICBleHBvcnQgX1BZVEVTVF9UT1hf
RVhUUkFfREVQPWNvdmVyYWdlLWVuYWJsZS1zdWJwcm9jZXNzCisgICAgZmkKKworc2NyaXB0OiB0
b3gKKworYWZ0ZXJfc3VjY2VzczoKKyAgLSB8CisgICAgaWYgW1sgIiRQWVRFU1RfQ09WRVJBR0Ui
ID0gMSBdXTsgdGhlbgorICAgICAgZW52IENPREVDT1ZfTkFNRT0iJFRPWEVOVi0kVFJBVklTX09T
X05BTUUiIHNjcmlwdHMvcmVwb3J0LWNvdmVyYWdlLnNoIC1GIFRyYXZpcworICAgIGZpCisKK25v
dGlmaWNhdGlvbnM6CisgIGlyYzoKKyAgICBjaGFubmVsczoKKyAgICAgIC0gImNoYXQuZnJlZW5v
ZGUubmV0I3B5dGVzdCIKKyAgICBvbl9zdWNjZXNzOiBjaGFuZ2UKKyAgICBvbl9mYWlsdXJlOiBj
aGFuZ2UKKyAgICBza2lwX2pvaW46IHRydWUKKyAgZW1haWw6CisgICAgLSBweXRlc3QtY29tbWl0
QHB5dGhvbi5vcmcKKworYnJhbmNoZXM6CisgIG9ubHk6CisgICAgLSBtYXN0ZXIKKyAgICAtIC9e
XGQrXC5cZCtcLngkLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQVVUSE9SUyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L0FVVEhPUlMKaW5kZXggM2VkZmRjZjg1ZWE2Li5jOGRmZWM0MDEwYTIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L0FVVEhPUlMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQVVUSE9SUwpAQCAtNiwyMCAr
NiwzMiBAQCBDb250cmlidXRvcnMgaW5jbHVkZTo6CiBBYXJvbiBDb2xlbWFuCiBBYmRlYWxpIEpL
CiBBYmhpamVldCBLYXN1cmRlCitBZGFtIEpvaG5zb24KK0FkYW0gVWhsaXIKIEFobiBLaS1Xb29r
CitBa2lvbWkgS2FtYWt1cmEKIEFsYW4gVmVsYXNjbwogQWxleGFuZGVyIEpvaG5zb24KIEFsZXhl
aSBLb3psZW5vaworQWxsYW4gRmVsZG1hbgorQWx5IFNpdmppCitBbWlyIEVsa2VzcwogQW5hdG9s
eSBCdWJlbmtvZmYKIEFuZGVycyBIb3Ztw7ZsbGVyCitBbmRyYXMgTWl0emtpCiBBbmRyYXMgVGlt
CitBbmRyZWEgQ2ltYXRvcmlidXMKIEFuZHJlYXMgWmVpZGxlcgorQW5kcmV5IFBhcmFtb25vdgor
QW5kcnplaiBLbGFqbmVydAogQW5kcnplaiBPc3Ryb3dza2kKIEFuZHkgRnJlZWxhbmQKIEFudGhv
biB2YW4gZGVyIE5ldXQKIEFudGhvbnkgU2hhdwogQW50aG9ueSBTb3R0aWxlCitBbnRvbiBMb2Rk
ZXIKIEFudG9ueSBMZWUKK0FyZWwgQ29yZGVybwogQXJtaW4gUmlnbwogQXJvbiBDb3lsZQogQXJv
biBDdXJ6b24KQEAgLTQwLDI0ICs1MiwzOCBAQCBDYXJsIEZyaWVkcmljaCBCb2x6CiBDYXJsb3Mg
SmVua2lucwogQ2VyaWR3ZW4KIENoYXJsZXMgQ2xvdWQKK0NoYXJsZXMgTWFjaGFsb3cKIENoYXJu
aml0IFNpTkdIIChDQ1NKKQogQ2hyaXMgTGFtYgogQ2hyaXN0aWFuIEJvZWxzZW4KK0NocmlzdGlh
biBGZXR6ZXIKK0NocmlzdGlhbiBOZXVtw7xsbGVyCiBDaHJpc3RpYW4gVGhldW5lcnQKIENocmlz
dGlhbiBUaXNtZXIKK0NocmlzdG9waCBCdWVsdGVyCitDaHJpc3RvcGhlciBEaWduYW0KIENocmlz
dG9waGVyIEdpbGxpbmcKK0NsYWlyZSBDZWNpbAorQ2xhdWRpbyBNYWRvdHRvCitDcmF6eU1lcmx5
bgogQ3lydXMgTWFkZW4KK0RhbWlhbiBTa3J6eXBjemFrCiBEYW5pZWwgR3JhbmEKIERhbmllbCBI
YWhsZXIKIERhbmllbCBOdXJpCiBEYW5pZWwgV2FuZHNjaG5laWRlcgogRGFuaWVsbGUgSmVua2lu
cworRGFuaWlsIEdhbGlldgogRGF2ZSBIdW50CiBEYXZpZCBEw61hei1CYXJxdWVybwogRGF2aWQg
TW9ocgorRGF2aWQgUGF1bCBSw7Z0aGxpc2JlcmdlcgorRGF2aWQgU3pvdHRlbgogRGF2aWQgVmll
cnJhCiBEYXctUmFuIExpb3UKK0RlYmkgTWlzaHJhCiBEZW5pcyBLaXJpc292CitEaGlyZW4gU2Vy
YWkKIERpZWdvIFJ1c3NvCiBEbWl0cnkgRHlnYWxvCiBEbWl0cnkgUHJpYnlzaApAQCAtNzAsMjYg
Kzk2LDQwIEBAIEVsaXphdmV0YSBTaGFzaGtvdmEKIEVuZHJlIEdhbGFjemkKIEVyaWMgSHVuc2Jl
cmdlcgogRXJpYyBTaWVnZXJtYW4KK0VyaWsgQXJvbmVzdHkKIEVyaWsgTS4gQnJheQorRXZhbiBL
ZXBuZXIKK0ZhYmllbiBaYXJpZmlhbgorRmFiaW8gWmFkcm96bnkKK0ZlbGl4IE5pZXV3ZW5odWl6
ZW4KIEZlbmcgTWEKIEZsb3JpYW4gQnJ1aGluCitGbG9yaWFuIERhaGxpdHoKIEZsb3JpcyBCcnV5
bm9vZ2hlCiBHYWJyaWVsIFJlaXMKK0dlbmUgV29vZAogR2VvcmdlIEt1c3N1bW90bwogR2Vvcmd5
IER5dWxkaW4KK0dsZWIgTmlrb25vcm92CiBHcmFoYW0gSG9ybGVyCiBHcmVnIFByaWNlCitHcmVn
b3J5IExlZQogR3JpZyBHaGVvcmdoaXUKIEdyaWdvcmlpIEVyZW1lZXYgKGJ1ZHVsaWFuaW4pCiBH
dWlkbyBXZXNkb3JwCiBHdW9xaWFuZyBaaGFuZwogSGFyYWxkIEFybWluIE1hc3NhCiBIZW5rLUph
YXAgV2FnZW5hYXIKK0hvbGdlciBLb2hyCiBIdWdvIHZhbiBLZW1lbmFkZQogSHVpIFdhbmcgKGNv
bGRuaWdodCkKIElhbiBCaWNraW5nCiBJYW4gTGVzcGVyYW5jZQorSWx5YSBLb25zdGFudGlub3YK
K0lvbnXImyBUdXJ0dXJpY8SDCitJd2FuIEJyaXF1ZW1vbnQKIEphYXAgQnJvZWtodWl6ZW4KK0ph
a3ViIE1pdG9yYWoKIEphbiBCYWxzdGVyCiBKYW5uZSBWYW5oYWxhCiBKYXNvbiBSLiBDb29tYnMK
QEAgLTk3LDYgKzEzNyw3IEBAIEphdmllciBEb21pbmdvIENhbnNpbm8KIEphdmllciBSb21lcm8K
IEplZmYgUmFja2F1Y2thcwogSmVmZiBXaWRtYW4KK0plbm5pIFJpbmtlcgogSm9obiBFZGRpZSBB
eXNvbgogSm9obiBUb3dsZXIKIEpvbiBTb25lc2VuCkBAIC0xMDQsMTggKzE0NSwyOCBAQCBKb25h
cyBPYnJpc3QKIEpvcmRhbiBHdXltb24KIEpvcmRhbiBNb2xkb3cKIEpvcmRhbiBTcGVpY2hlcgor
Sm9zZXBoIEh1bmtlbGVyCitKb3NoIEthcnBlbAogSm9zaHVhIEJyb25zb24KIEp1cmtvIEdvc3Bv
ZG5ldGnEhwogSnVzdHluYSBKYW5jenlzenluCiBLYWxlIEt1bmRlcnQKK0thbXJhbiBBaG1hZAor
S2FybCBPLiBQaW5jCiBLYXRhcnp5bmEgSmFjaGltCitLYXRhcnp5bmEgS3LDs2wKIEthdGVyaW5h
IEtvdWtpb3UKK0tlcmkgVm9sYW5zCiBLZXZpbiBDb3gKK0tldmluIEouIEZvbGV5CiBLb2RpIEIu
IEFyZmVyCiBLb3N0aXMgQW5hZ25vc3RvcG91bG9zCitLcmlzdG9mZmVyIE5vcmRzdHLDtm0KK0t5
bGUgQWx0ZW5kb3JmCiBMYXdyZW5jZSBNaXRjaGVsbAogTGVlIEthbWVudHNreQogTGV2IE1heGlt
b3YKK0xld2lzIENvd2xlcwogTGxhbmR5IFJpdmVyb24gRGVsIFJpc2NvCiBMb2ljIEVzdGV2ZQog
THVrYXMgQmVkbmFyCkBAIC0xMjYsOCArMTc3LDExIEBAIE1haWsgRmlndXJhCiBNYW5kZWVwIEJo
dXRhbmkKIE1hbnVlbCBLcmViYmVyCiBNYXJjIFNjaGxhaWNoCitNYXJjZWxvIER1YXJ0ZSBUcmV2
aXNhbmkKIE1hcmNpbiBCYWNocnkKK01hcmNvIEdvcmVsbGkKIE1hcmsgQWJyYW1vd2l0egorTWFy
ayBEaWNraW5zb24KIE1hcmt1cyBVbnRlcndhZGl0emVyCiBNYXJ0aWpuIEZhYXNzZW4KIE1hcnRp
biBBbHRtYXllcgpAQCAtMTM5LDc1ICsxOTMsMTIwIEBAIE1hdHQgRHVjawogTWF0dCBXaWxsaWFt
cwogTWF0dGhpYXMgSGFmbmVyCiBNYXhpbSBGaWxpcGVua28KK01heGltaWxpYW4gQ29zbW8gU2l0
dGVyCiBtYnl0CiBNaWNoYWVsIEFxdWlsaW5hCiBNaWNoYWVsIEJpcnR3ZWxsCiBNaWNoYWVsIERy
b2V0dGJvb20KK01pY2hhZWwgR29lcnoKK01pY2hhZWwgS3JlYnMKIE1pY2hhZWwgU2VpZmVydAog
TWljaGFsIFdhanN6Y3p1awogTWloYWkgQ2Fwb3TEgworTWlrZSBIb3lsZSAoaG95bGVtZCkKIE1p
a2UgTHVuZHkKIE1pcm8gSHJvbsSNb2sKK05hdGhhbmllbCBDb21wdG9uCiBOYXRoYW5pZWwgV2Fp
c2Jyb3QKIE5lZCBCYXRjaGVsZGVyCiBOZXZlbiBNdW5kYXIKK05pY2hvbGFzIERldmVuaXNoCitO
aWNob2xhcyBNdXJwaHkKK05pY2xhcyBPbG9mc3NvbgogTmljb2xhcyBEZWxhYnkKK05pa29sYXkg
S29uZHJhdHlldgogT2xlZyBQaWRzYWRueWkKIE9sZWcgU3VzaGNoZW5rbwogT2xpdmVyIEJlc3R3
YWx0ZXIKIE9tYXIgS29obAogT21lciBIYWRhcmkKK09uZMWZZWogU8O6a3VwCitPc2NhciBCZW5q
YW1pbgogUGF0cmljayBIYXllcworUGF1bGkgVmlydGFuZW4KK1BhdmVsIEthcmF0ZWV2CiBQYXdl
xYIgQWRhbWN6YWsKIFBlZHJvIEFsZ2FydmlvCitQaGlsaXBwIExvb3NlCiBQaWV0ZXIgTXVsZGVy
CiBQaW90ciBCYW5hc3praWV3aWN6CitQaW90ciBIZWxtCitQcmFzaGFudCBBbmFuZAorUHVsa2l0
IEdveWFsCiBQdW55YXNobG9rYSBCaXN3YWwKIFF1ZW50aW4gUHJhZGV0CiBSYWxmIFNjaG1pdHQK
K1JhbSBSYWNodW0KK1JhbHBoIEdpbGVzCiBSYW4gQmVuaXRhCiBSYXBoYWVsIENhc3RhbmVkYQog
UmFwaGFlbCBQaWVyemluYQogUmFxdWVsIEFsZWdyZQogUmF2aSBDaGFuZHJhCitSb2JlcnQgSG9s
dAogUm9iZXJ0byBQb2xsaQorUm9sYW5kIFB1bnRhaWVyCiBSb21haW4gRG9yZ3VlaWwKIFJvbWFu
IEJvbHNoYWtvdgogUm9ubnkgUGZhbm5zY2htaWR0CiBSb3NzIExhd2xleQorUnVhcmlkaCBXaWxs
aWFtc29uCiBSdXNzZWwgV2luZGVyCiBSeWFuIFdvb2RlbgogU2FtdWVsIERpb24tR2lyYXJkZWF1
CitTYW11ZWwgU2Vhcmxlcy1CcnlhbnQKIFNhbXVlbGUgUGVkcm9uaQorU2Fua3QgUGV0ZXJzYnVn
CiBTZWdldiBGaW5lcgorU2VyaGlpIE1vemdob3Z5aQorU2V0aCBKdW5vdAogU2ltb24gR29taXpl
bGoKK1NpbW9uIEtlcnIKIFNreWxhciBEb3duZXMKIFNyaW5pdmFzIFJlZGR5IFRoYXRpcGFydGh5
CiBTdGVmYW4gRmFybWJhdWVyCitTdGVmYW4gU2NoZXJma2UKIFN0ZWZhbiBaaW1tZXJtYW5uCiBT
dGVmYW5vIFRhc2NoaW5pCiBTdGVmZmVuIEFsbG5lcgogU3RlcGhhbiBPYmVybWFubgorU3Zlbi1I
ZW5kcmlrIEhhYXNlCitTeWx2YWluIE1hcmnDqQorVGFkZWsgVGVsZcW8ecWEc2tpCitUYWthZnVt
aSBBcmFrYWtpCiBUYXJjaXNpbyBGaXNjaGVyCiBUYXJlcSBBbGF5YW4KIFRlZCBYaWFvCiBUaG9t
YXMgR3JhaW5nZXIKIFRob21hcyBIaXNjaAorVGltIEhvZmZtYW5uCiBUaW0gU3RyYXpueQogVG9t
IERhbHRvbgogVG9tIFZpbmVyCitUb23DocWhIEdhdmVuxI1pYWsKK1RvbWVyIEtlcmVuCitUb3Ig
Q29sdmluCiBUcmV2b3IgQmVrb2xheQogVHlsZXIgR29vZGxldAogVHp1LXBpbmcgQ2h1bmcKIFZh
c2lseSBLdXpuZXRzb3YKK1ZpY3RvciBNYXJ5YW1hCiBWaWN0b3IgVXJpYXJ0ZQogVmlkYXIgVC4g
RmF1c2tlCitWaXJnaWwgRHVwcmFzCiBWaXRhbHkgTGFzaG1hbm92CiBWbGFkIERyYWdvcworVmxh
ZCBSYWR6aXVrCitWbGFkeXNsYXYgUmFjaGVrCitWb2xvZHlteXIgUGlza3VuCitXZWkgTGluCitX
aWwgQ29vbGV5CiBXaWxsaWFtIExlZQorV2ltIEdsZW5uCiBXb3V0ZXIgdmFuIEFja29veQorWGl4
aSBaaGFvCiBYdWFuIEx1b25nCiBYdWVjb25nIExpYW8KK1lvYXYgQ2FzcGkKK1phYyBIYXRmaWVs
ZC1Eb2RkcwogWm9sdMOhbiBNw6F0w6kKLVJvbGFuZCBQdW50YWllcgotQWxsYW4gRmVsZG1hbgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQ0hBTkdFTE9HLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NIQU5H
RUxPRy5yc3QKaW5kZXggMjFhMDkwNDE0YTBkLi4zODY1ZjI1MGMyNmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L0NIQU5HRUxPRy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQ0hBTkdFTE9HLnJzdApA
QCAtMSw0ODgzICsxLDcgQEAKLS4uCi0gICAgWW91IHNob3VsZCAqTk9UKiBiZSBhZGRpbmcgbmV3
IGNoYW5nZSBsb2cgZW50cmllcyB0byB0aGlzIGZpbGUsIHRoaXMKLSAgICBmaWxlIGlzIG1hbmFn
ZWQgYnkgdG93bmNyaWVyLiBZb3UgKm1heSogZWRpdCBwcmV2aW91cyBjaGFuZ2UgbG9ncyB0bwot
ICAgIGZpeCBwcm9ibGVtcyBsaWtlIHR5cG8gY29ycmVjdGlvbnMgb3Igc3VjaC4KLSAgICBUbyBh
ZGQgYSBuZXcgY2hhbmdlIGxvZyBlbnRyeSwgcGxlYXNlIHNlZQotICAgIGh0dHBzOi8vcGlwLnB5
cGEuaW8vZW4vbGF0ZXN0L2RldmVsb3BtZW50LyNhZGRpbmctYS1uZXdzLWVudHJ5Ci0gICAgd2Ug
bmFtZWQgdGhlIG5ld3MgZm9sZGVyIGNoYW5nZWxvZworPT09PT09PT09CitDaGFuZ2Vsb2cKKz09
PT09PT09PQogCi0uLiB0b3duY3JpZXIgcmVsZWFzZSBub3RlcyBzdGFydAorVGhlIHB5dGVzdCBD
SEFOR0VMT0cgaXMgbG9jYXRlZCBgaGVyZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3Rh
YmxlL2NoYW5nZWxvZy5odG1sPmBfXy4KIAotUHl0ZXN0IDMuNi4yICgyMDE4LTA2LTIwKQotPT09
PT09PT09PT09PT09PT09PT09PT09PQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIEZpeCBy
ZWdyZXNzaW9uIGluIGBgTm9kZS5hZGRfbWFya2VyYGAgYnkgZXh0cmFjdGluZyB0aGUgbWFyayBv
YmplY3Qgb2YgYQotICBgYE1hcmtEZWNvcmF0b3JgYC4gKGAjMzU1NQotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTU1PmBfKQotCi0tIFdhcm5pbmdzIHdp
dGhvdXQgYGBsb2NhdGlvbmBgIHdlcmUgcmVwb3J0ZWQgYXMgYGBOb25lYGAuIFRoaXMgaXMgY29y
cmVjdGVkIHRvCi0gIG5vdyByZXBvcnQgYGA8dW5kZXRlcm1pbmVkIGxvY2F0aW9uPmBgLiAoYCMz
NTYzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1NjM+
YF8pCi0KLS0gQ29udGludWUgdG8gY2FsbCBmaW5hbGl6ZXJzIGluIHRoZSBzdGFjayB3aGVuIGEg
ZmluYWxpemVyIGluIGEgZm9ybWVyIHNjb3BlCi0gIHJhaXNlcyBhbiBleGNlcHRpb24uIChgIzM1
NjkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU2OT5g
XykKLQotLSBGaXggZW5jb2RpbmcgZXJyb3Igd2l0aCBgcHJpbnRgIHN0YXRlbWVudHMgaW4gZG9j
dGVzdHMgKGAjMzU4MwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNTgzPmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotLSBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBgLS1zdHJpY3RgYCBmbGFn
LiAoYCMzNTQ5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzM1NDk+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotLSBVcGRhdGUgb2xkIHF1b3RhdGlvbiBzdHlsZSB0byBwYXJlbnMgaW4gZml4
dHVyZS5yc3QgZG9jdW1lbnRhdGlvbi4gKGAjMzUyNQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTI1PmBfKQotCi0tIEltcHJvdmUgZGlzcGxheSBvZiBo
aW50IGFib3V0IGBgLS1mdWxsdHJhY2VgYCB3aXRoIGBgS2V5Ym9hcmRJbnRlcnJ1cHRgYC4KLSAg
KGAjMzU0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTQ1
PmBfKQotCi0tIHB5dGVzdCdzIHRlc3RzdWl0ZSBpcyBubyBsb25nZXIgcnVubmFibGUgdGhyb3Vn
aCBgYHB5dGhvbiBzZXR1cC5weSB0ZXN0YGAgLS0KLSAgaW5zdGVhZCBpbnZva2UgYGBweXRlc3Rg
YCBvciBgYHRveGBgIGRpcmVjdGx5LiAoYCMzNTUyCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1NTI+YF8pCi0KLS0gRml4IHR5cG8gaW4gZG9jdW1lbnRh
dGlvbiAoYCMzNTY3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM1Njc+YF8pCi0KLQotUHl0ZXN0IDMuNi4xICgyMDE4LTA2LTA1KQotPT09PT09PT09PT09
PT09PT09PT09PT09PQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIEZpeGVkIGEgYnVnIHdo
ZXJlIHN0ZG91dCBhbmQgc3RkZXJyIHdlcmUgbG9nZ2VkIHR3aWNlIGJ5IGp1bml0eG1sIHdoZW4g
YSB0ZXN0Ci0gIHdhcyBtYXJrZWQgeGZhaWwuIChgIzM0OTEKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ5MT5gXykKLQotLSBGaXggYGB1c2VmaXh0dXJl
c2BgIG1hcmsgYXBwbHllZCB0byB1bml0dGVzdCB0ZXN0cyBieSBjb3JyZWN0bHkgaW5zdGFudGlh
dGluZwotICBgYEZpeHR1cmVJbmZvYGAuIChgIzM0OTgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ5OD5gXykKLQotLSBGaXggYXNzZXJ0aW9uIHJld3Jp
dGVyIGNvbXBhdGliaWxpdHkgd2l0aCBsaWJyYXJpZXMgdGhhdCBtb25rZXkgcGF0Y2gKLSAgYGBm
aWxlYGAgb2JqZWN0cy4gKGAjMzUwMwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zNTAzPmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotLSBBZGRlZCBhIHNlY3Rpb24gb24gaG93IHRvIHVzZSBmaXh0
dXJlcyBhcyBmYWN0b3JpZXMgdG8gdGhlIGZpeHR1cmUKLSAgZG9jdW1lbnRhdGlvbi4gKGAjMzQ2
MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDYxPmBfKQot
Ci0KLVRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LS0gRW5hYmxlIGNhY2hpbmcgZm9yIHBpcC9wcmUtY29tbWl0IGluIG9yZGVyIHRvIHJlZHVjZSBi
dWlsZCB0aW1lIG9uCi0gIHRyYXZpcy9hcHB2ZXlvci4gKGAjMzUwMgotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTAyPmBfKQotCi0tIFN3aXRjaCBweXRl
c3QgdG8gdGhlIHNyYy8gbGF5b3V0IGFzIHdlIGFscmVhZHkgc3VnZ2VzdGVkIGl0IGZvciBnb29k
IHByYWN0aWNlCi0gIC0gbm93IHdlIGltcGxlbWVudCBpdCBhcyB3ZWxsLiAoYCMzNTEzCi0gIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1MTM+YF8pCi0KLS0g
Rml4IGlmIGluIHRlc3RzIHRvIHN1cHBvcnQgMy43LjBiNSwgd2hlcmUgYSBkb2NzdHJpbmcgaGFu
ZGxpbmcgaW4gQVNUIGdvdAotICByZXZlcnRlZC4gKGAjMzUzMCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTMwPmBfKQotCi0tIFJlbW92ZSBzb21lIHB5dGhv
bjIuNSBjb21wYXRpYmlsaXR5IGNvZGUuIChgIzM1MjkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUyOT5gXykKLQotCi1QeXRlc3QgMy42LjAgKDIwMTgt
MDUtMjMpCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLUZlYXR1cmVzCi0tLS0tLS0tLQot
Ci0tIFJldmFtcCB0aGUgaW50ZXJuYWxzIG9mIHRoZSBgYHB5dGVzdC5tYXJrYGAgaW1wbGVtZW50
YXRpb24gd2l0aCBjb3JyZWN0IHBlcgotICBub2RlIGhhbmRsaW5nIHdoaWNoIGZpeGVzIGEgbnVt
YmVyIG9mIGxvbmcgc3RhbmRpbmcgYnVncyBjYXVzZWQgYnkgdGhlIG9sZAotICBkZXNpZ24uIFRo
aXMgaW50cm9kdWNlcyBuZXcgYGBOb2RlLml0ZXJfbWFya2VycyhuYW1lKWBgIGFuZAotICBgYE5v
ZGUuZ2V0X2Nsb3Nlc3RfbWFyayhuYW1lKWBgIEFQSXMuIFVzZXJzIGFyZSAqKnN0cm9uZ2x5IGVu
Y291cmFnZWQqKiB0bwotICByZWFkIHRoZSBgcmVhc29ucyBmb3IgdGhlIHJldmFtcCBpbiB0aGUg
ZG9jcwotICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L21hcmsuaHRtbCNtYXJr
ZXItcmV2YW1wLWFuZC1pdGVyYXRpb24+YF8sCi0gIG9yIGp1bXAgb3ZlciB0byBkZXRhaWxzIGFi
b3V0IGB1cGRhdGluZyBleGlzdGluZyBjb2RlIHRvIHVzZSB0aGUgbmV3IEFQSXMKLSAgPGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9tYXJrLmh0bWwjdXBkYXRpbmctY29kZT5gXy4g
KGAjMzMxNwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
MzE3PmBfKQotCi0tIE5vdyB3aGVuIGBgQHB5dGVzdC5maXh0dXJlYGAgaXMgYXBwbGllZCBtb3Jl
IHRoYW4gb25jZSB0byB0aGUgc2FtZSBmdW5jdGlvbiBhCi0gIGBgVmFsdWVFcnJvcmBgIGlzIHJh
aXNlZC4gVGhpcyBidWdneSBiZWhhdmlvciB3b3VsZCBjYXVzZSBzdXJwcmlzaW5nIHByb2JsZW1z
Ci0gIGFuZCBpZiB3YXMgd29ya2luZyBmb3IgYSB0ZXN0IHN1aXRlIGl0IHdhcyBtb3N0bHkgYnkg
YWNjaWRlbnQuIChgIzIzMzQKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjMzND5gXykKLQotLSBTdXBwb3J0IGZvciBQeXRob24gMy43J3MgYnVpbHRpbiBg
YGJyZWFrcG9pbnQoKWBgIG1ldGhvZCwgc2VlIGBVc2luZyB0aGUKLSAgYnVpbHRpbiBicmVha3Bv
aW50IGZ1bmN0aW9uCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvdXNhZ2Uu
aHRtbCNicmVha3BvaW50LWJ1aWx0aW4+YF8gZm9yCi0gIGRldGFpbHMuIChgIzMxODAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE4MD5gXykKLQotLSBgYG1v
bmtleXBhdGNoYGAgbm93IHN1cHBvcnRzIGEgYGBjb250ZXh0KClgYCBmdW5jdGlvbiB3aGljaCBh
Y3RzIGFzIGEgY29udGV4dAotICBtYW5hZ2VyIHdoaWNoIHVuZG9lcyBhbGwgcGF0Y2hpbmcgZG9u
ZSB3aXRoaW4gdGhlIGBgd2l0aGBgIGJsb2NrLiAoYCMzMjkwCi0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTA+YF8pCi0KLS0gVGhlIGBgLS1wZGJgYCBv
cHRpb24gbm93IGNhdXNlcyBLZXlib2FyZEludGVycnVwdCB0byBlbnRlciB0aGUgZGVidWdnZXIs
Ci0gIGluc3RlYWQgb2Ygc3RvcHBpbmcgdGhlIHRlc3Qgc2Vzc2lvbi4gT24gcHl0aG9uIDIuNywg
aGl0dGluZyBDVFJMK0MgYWdhaW4KLSAgZXhpdHMgdGhlIGRlYnVnZ2VyLiBPbiBweXRob24gMy4y
IGFuZCBoaWdoZXIsIHVzZSBDVFJMK0QuIChgIzMyOTkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI5OT5gXykKLQotLSBweXRlc3Qgbm90IGxvbmdlciBj
aGFuZ2VzIHRoZSBsb2cgbGV2ZWwgb2YgdGhlIHJvb3QgbG9nZ2VyIHdoZW4gdGhlCi0gIGBgbG9n
LWxldmVsYGAgcGFyYW1ldGVyIGhhcyBncmVhdGVyIG51bWVyaWMgdmFsdWUgdGhhbiB0aGF0IG9m
IHRoZSBsZXZlbCBvZgotICB0aGUgcm9vdCBsb2dnZXIsIHdoaWNoIG1ha2VzIGl0IHBsYXkgYmV0
dGVyIHdpdGggY3VzdG9tIGxvZ2dpbmcgY29uZmlndXJhdGlvbgotICBpbiB1c2VyIGNvZGUuIChg
IzMzMDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMwNz5g
XykKLQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIEEgcmFyZSByYWNlLWNvbmRpdGlvbiB3
aGljaCBtaWdodCByZXN1bHQgaW4gY29ycnVwdGVkIGBgLnB5Y2BgIGZpbGVzIG9uCi0gIFdpbmRv
d3MgaGFzIGJlZW4gaG9wZWZ1bGx5IHNvbHZlZC4gKGAjMzAwOAotICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDA4PmBfKQotCi0tIEFsc28gdXNlIGl0ZXJf
bWFya2VyIGZvciBkaXNjb3ZlcmluZyB0aGUgbWFya3MgYXBwbHlpbmcgZm9yIG1hcmtlcgotICBl
eHByZXNzaW9ucyBmcm9tIHRoZSBjbGkgdG8gYXZvaWQgdGhlIGJhZCBkYXRhIGZyb20gdGhlIGxl
Z2FjeSBtYXJrIHN0b3JhZ2UuCi0gIChgIzM0NDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzQ0MT5gXykKLQotLSBXaGVuIHNob3dpbmcgZGlmZnMgb2YgZmFp
bGVkIGFzc2VydGlvbnMgd2hlcmUgdGhlIGNvbnRlbnRzIGNvbnRhaW4gb25seQotICB3aGl0ZXNw
YWNlLCBlc2NhcGUgdGhlbSB1c2luZyBgYHJlcHIoKWBgIGZpcnN0IHRvIG1ha2UgaXQgZWFzeSB0
byBzcG90IHRoZQotICBkaWZmZXJlbmNlcy4gKGAjMzQ0MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDQzPmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRp
b24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBDaGFuZ2UgZG9jdW1lbnRhdGlvbiBjb3B5
cmlnaHQgeWVhciB0byBhIHJhbmdlIHdoaWNoIGF1dG8tdXBkYXRlcyBpdHNlbGYgZWFjaAotICB0
aW1lIGl0IGlzIHB1Ymxpc2hlZC4gKGAjMzMwMwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzAzPmBfKQotCi0KLVRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdl
cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gYGBweXRlc3RgYCBub3cgZGVwZW5kcyBv
biB0aGUgYHB5dGhvbi1hdG9taWN3cml0ZXMKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS91bnRpdGFr
ZXIvcHl0aG9uLWF0b21pY3dyaXRlcz5gXyBsaWJyYXJ5LiAoYCMzMDA4Ci0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMDg+YF8pCi0KLS0gVXBkYXRlIGFs
bCBweXBpLnB5dGhvbi5vcmcgVVJMcyB0byBweXBpLm9yZy4gKGAjMzQzMQotICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDMxPmBfKQotCi0tIERldGVjdCBg
cHl0ZXN0X2AgcHJlZml4ZWQgaG9va3MgdXNpbmcgdGhlIGludGVybmFsIHBsdWdpbiBtYW5hZ2Vy
IHNpbmNlCi0gIGBgcGx1Z2d5YGAgaXMgZGVwcmVjYXRpbmcgdGhlIGBgaW1wbHByZWZpeGBgIGFy
Z3VtZW50IHRvIGBgUGx1Z2luTWFuYWdlcmBgLgotICAoYCMzNDg3IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM0ODc+YF8pCi0KLS0gSW1wb3J0IGBgTWFwcGlu
Z2BgIGFuZCBgYFNlcXVlbmNlYGAgZnJvbSBgYF9weXRlc3QuY29tcGF0YGAgaW5zdGVhZCBvZgot
ICBkaXJlY3RseSBmcm9tIGBgY29sbGVjdGlvbnNgYCBpbiBgYHB5dGhvbl9hcGkucHk6OmFwcHJv
eGBgLiBBZGQgYGBNYXBwaW5nYGAKLSAgdG8gYGBfcHl0ZXN0LmNvbXBhdGBgLCBpbXBvcnQgaXQg
ZnJvbSBgYGNvbGxlY3Rpb25zYGAgb24gcHl0aG9uIDIsIGJ1dCBmcm9tCi0gIGBgY29sbGVjdGlv
bnMuYWJjYGAgb24gUHl0aG9uIDMgdG8gYXZvaWQgYSBgYERlcHJlY2F0aW9uV2FybmluZ2BgIG9u
IFB5dGhvbgotICAzLjcgb3IgbmV3ZXIuIChgIzM0OTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ5Nz5gXykKLQotCi1QeXRlc3QgMy41LjEgKDIwMTgtMDQt
MjMpCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotQnVnIEZpeGVzCi0tLS0tLS0tLS0K
LQotLSBSZXNldCBgYHN5cy5sYXN0X3R5cGVgYCwgYGBzeXMubGFzdF92YWx1ZWBgIGFuZCBgYHN5
cy5sYXN0X3RyYWNlYmFja2BgIGJlZm9yZQotICBlYWNoIHRlc3QgZXhlY3V0ZXMuIFRob3NlIGF0
dHJpYnV0ZXMgYXJlIGFkZGVkIGJ5IHB5dGVzdCBkdXJpbmcgdGhlIHRlc3QgcnVuCi0gIHRvIGFp
ZCBkZWJ1Z2dpbmcsIGJ1dCB3ZXJlIG5ldmVyIHJlc2V0IHNvIHRoZXkgd291bGQgY3JlYXRlIGEg
bGVha2luZwotICByZWZlcmVuY2UgdG8gdGhlIGxhc3QgZmFpbGluZyB0ZXN0J3MgZnJhbWUgd2hp
Y2ggaW4gdHVybiBjb3VsZCBuZXZlciBiZQotICByZWNsYWltZWQgYnkgdGhlIGdhcmJhZ2UgY29s
bGVjdG9yLiAoYCMyNzk4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI3OTg+YF8pCi0KLS0gYGBweXRlc3QucmFpc2VzYGAgbm93IHJhaXNlcyBgYFR5cGVF
cnJvcmBgIHdoZW4gcmVjZWl2aW5nIGFuIHVua25vd24ga2V5d29yZAotICBhcmd1bWVudC4gKGAj
MzM0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzQ4PmBf
KQotCi0tIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyB3b3JrcyB3aXRoIGV4Y2VwdGlvbiBjbGFzc2Vz
IHRoYXQgbG9vayBsaWtlIGl0ZXJhYmxlcy4KLSAgKGAjMzM3MiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzcyPmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50
YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBGaXggdHlwbyBpbiBgYGNhcGxvZ2Bg
IGZpeHR1cmUgZG9jdW1lbnRhdGlvbiwgd2hpY2ggaW5jb3JyZWN0bHkgaWRlbnRpZmllZAotICBj
ZXJ0YWluIGF0dHJpYnV0ZXMgYXMgbWV0aG9kcy4gKGAjMzQwNgotICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDA2PmBfKQotCi0KLVRyaXZpYWwvSW50ZXJu
YWwgQ2hhbmdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gQWRkZWQgYSBtb3JlIGlu
ZGljYXRpdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHBhcmFtZXRyaXppbmcgYSBmdW5jdGlvbiB3aG9z
ZQotICBhcmd1bWVudCB0YWtlcyBhIGRlZmF1bHQgdmFsdWUuIChgIzMyMjEKLSAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIyMT5gXykKLQotLSBSZW1vdmUg
aW50ZXJuYWwgYGBfcHl0ZXN0LnRlcm1pbmFsLmZsYXR0ZW5gYCBmdW5jdGlvbiBpbiBmYXZvciBv
ZgotICBgYG1vcmVfaXRlcnRvb2xzLmNvbGxhcHNlYGAuIChgIzMzMzAKLSAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMzMD5gXykKLQotLSBJbXBvcnQgc29t
ZSBtb2R1bGVzIGZyb20gYGBjb2xsZWN0aW9ucy5hYmNgYCBpbnN0ZWFkIG9mIGBgY29sbGVjdGlv
bnNgYCBhcwotICB0aGUgZm9ybWVyIG1vZHVsZXMgdHJpZ2dlciBgYERlcHJlY2F0aW9uV2Fybmlu
Z2BgIGluIFB5dGhvbiAzLjcuIChgIzMzMzkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzMzOT5gXykKLQotLSByZWNvcmRfcHJvcGVydHkgaXMgbm8gbG9u
Z2VyIGV4cGVyaW1lbnRhbCwgcmVtb3ZpbmcgdGhlIHdhcm5pbmdzIHdhcwotICBmb3Jnb3R0ZW4u
IChgIzMzNjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzM2
MD5gXykKLQotLSBNZW50aW9uIGluIGRvY3VtZW50YXRpb24gYW5kIENMSSBoZWxwIHRoYXQgZml4
dHVyZXMgd2l0aCBsZWFkaW5nIGBgX2BgIGFyZQotICBwcmludGVkIGJ5IGBgcHl0ZXN0IC0tZml4
dHVyZXNgYCBvbmx5IGlmIHRoZSBgYC12YGAgb3B0aW9uIGlzIGFkZGVkLiAoYCMzMzk4Ci0gIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzOTg+YF8pCi0KLQot
UHl0ZXN0IDMuNS4wICgyMDE4LTAzLTIxKQotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1E
ZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0g
YGByZWNvcmRfeG1sX3Byb3BlcnR5YGAgZml4dHVyZSBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZv
ciBvZiB0aGUgbW9yZQotICBnZW5lcmljIGBgcmVjb3JkX3Byb3BlcnR5YGAuIChgIzI3NzAKLSAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc3MD5gXykKLQot
LSBEZWZpbmluZyBgYHB5dGVzdF9wbHVnaW5zYGAgaXMgbm93IGRlcHJlY2F0ZWQgaW4gbm9uLXRv
cC1sZXZlbCBjb25mdGVzdC5weQotICBmaWxlcywgYmVjYXVzZSB0aGV5ICJsZWFrIiB0byB0aGUg
ZW50aXJlIGRpcmVjdG9yeSB0cmVlLiAoYCMzMDg0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwODQ+YF8pCi0KLQotRmVhdHVyZXMKLS0tLS0tLS0tCi0K
LS0gTmV3IGBgLS1zaG93LWNhcHR1cmVgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRoYXQgYWxsb3dz
IHRvIHNwZWNpZnkgaG93IHRvCi0gIGRpc3BsYXkgY2FwdHVyZWQgb3V0cHV0IHdoZW4gdGVzdHMg
ZmFpbDogYGBub2BgLCBgYHN0ZG91dGBgLCBgYHN0ZGVycmBgLAotICBgYGxvZ2BgIG9yIGBgYWxs
YGAgKHRoZSBkZWZhdWx0KS4gKGAjMTQ3OAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xNDc4PmBfKQotCi0tIE5ldyBgYC0tcm9vdGRpcmBgIGNvbW1hbmQt
bGluZSBvcHRpb24gdG8gb3ZlcnJpZGUgdGhlIHJ1bGVzIGZvciBkaXNjb3ZlcmluZwotICB0aGUg
cm9vdCBkaXJlY3RvcnkuIFNlZSBgY3VzdG9taXplCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9sYXRlc3QvY3VzdG9taXplLmh0bWw+YF8gaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yCi0g
IGRldGFpbHMuIChgIzE2NDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMTY0Mj5gXykKLQotLSBGaXh0dXJlcyBhcmUgbm93IGluc3RhbnRpYXRlZCBiYXNlZCBv
biB0aGVpciBzY29wZXMsIHdpdGggaGlnaGVyLXNjb3BlZAotICBmaXh0dXJlcyAoc3VjaCBhcyBg
YHNlc3Npb25gYCkgYmVpbmcgaW5zdGFudGlhdGVkIGZpcnN0IHRoYW4gbG93ZXItc2NvcGVkCi0g
IGZpeHR1cmVzIChzdWNoIGFzIGBgZnVuY3Rpb25gYCkuIFRoZSByZWxhdGl2ZSBvcmRlciBvZiBm
aXh0dXJlcyBvZiB0aGUgc2FtZQotICBzY29wZSBpcyBrZXB0IHVuY2hhbmdlZCwgYmFzZWQgaW4g
dGhlaXIgZGVjbGFyYXRpb24gb3JkZXIgYW5kIHRoZWlyCi0gIGRlcGVuZGVuY2llcy4gKGAjMjQw
NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDA1PmBfKQot
Ci0tIGBgcmVjb3JkX3htbF9wcm9wZXJ0eWBgIHJlbmFtZWQgdG8gYGByZWNvcmRfcHJvcGVydHlg
YCBhbmQgaXMgbm93IGNvbXBhdGlibGUKLSAgd2l0aCB4ZGlzdCwgbWFya2VycyBhbmQgYW55IHJl
cG9ydGVyLiBgYHJlY29yZF94bWxfcHJvcGVydHlgYCBuYW1lIGlzIG5vdwotICBkZXByZWNhdGVk
LiAoYCMyNzcwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3
NzA+YF8pCi0KLS0gTmV3IGBgLS1uZmBgLCBgYC0tbmV3LWZpcnN0YGAgb3B0aW9uczogcnVuIG5l
dyB0ZXN0cyBmaXJzdCBmb2xsb3dlZCBieSB0aGUKLSAgcmVzdCBvZiB0aGUgdGVzdHMsIGluIGJv
dGggY2FzZXMgdGVzdHMgYXJlIGFsc28gc29ydGVkIGJ5IHRoZSBmaWxlIG1vZGlmaWVkCi0gIHRp
bWUsIHdpdGggbW9yZSByZWNlbnQgZmlsZXMgY29taW5nIGZpcnN0LiAoYCMzMDM0Ci0gIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMzQ+YF8pCi0KLS0gTmV3
IGBgLS1sYXN0LWZhaWxlZC1uby1mYWlsdXJlc2BgIGNvbW1hbmQtbGluZSBvcHRpb24gdGhhdCBh
bGxvd3MgdG8gc3BlY2lmeQotICB0aGUgYmVoYXZpb3Igb2YgdGhlIGNhY2hlIHBsdWdpbidzIGBg
YC0tbGFzdC1mYWlsZWRgYCBmZWF0dXJlIHdoZW4gbm8gdGVzdHMKLSAgZmFpbGVkIGluIHRoZSBs
YXN0IHJ1biAob3Igbm8gY2FjaGUgd2FzIGZvdW5kKTogYGBub25lYGAgb3IgYGBhbGxgYCAodGhl
Ci0gIGRlZmF1bHQpLiAoYCMzMTM5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMxMzk+YF8pCi0KLS0gTmV3IGBgLS1kb2N0ZXN0LWNvbnRpbnVlLW9uLWZhaWx1
cmVgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIGVuYWJsZSBkb2N0ZXN0cwotICB0byBzaG93IG11
bHRpcGxlIGZhaWx1cmVzIGZvciBlYWNoIHNuaXBwZXQsIGluc3RlYWQgb2Ygc3RvcHBpbmcgYXQg
dGhlIGZpcnN0Ci0gIGZhaWx1cmUuIChgIzMxNDkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzE0OT5gXykKLQotLSBDYXB0dXJlZCBsb2cgbWVzc2FnZXMgYXJl
IGFkZGVkIHRvIHRoZSBgYDxzeXN0ZW0tb3V0PmBgIHRhZyBpbiB0aGUgZ2VuZXJhdGVkCi0gIGp1
bml0IHhtbCBmaWxlIGlmIHRoZSBgYGp1bml0X2xvZ2dpbmdgYCBpbmkgb3B0aW9uIGlzIHNldCB0
byBgYHN5c3RlbS1vdXRgYC4KLSAgSWYgdGhlIHZhbHVlIG9mIHRoaXMgaW5pIG9wdGlvbiBpcyBg
YHN5c3RlbS1lcnJgYCwgdGhlIGxvZ3MgYXJlIHdyaXR0ZW4gdG8KLSAgYGA8c3lzdGVtLWVycj5g
YC4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGBganVuaXRfbG9nZ2luZ2BgIGlzIGBgbm9gYCwgbWVh
bmluZwotICBjYXB0dXJlZCBsb2dzIGFyZSBub3Qgd3JpdHRlbiB0byB0aGUgb3V0cHV0IGZpbGUu
IChgIzMxNTYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzE1Nj5gXykKLQotLSBBbGxvdyB0aGUgbG9nZ2luZyBwbHVnaW4gdG8gaGFuZGxlIGBgcHl0ZXN0
X3J1bnRlc3RfbG9nc3RhcnRgYCBhbmQKLSAgYGBweXRlc3RfcnVudGVzdF9sb2dmaW5pc2hgYCBo
b29rcyB3aGVuIGxpdmUgbG9ncyBhcmUgZW5hYmxlZC4gKGAjMzE4OQotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTg5PmBfKQotCi0tIFBhc3NpbmcgYC0t
bG9nLWNsaS1sZXZlbGAgaW4gdGhlIGNvbW1hbmQtbGluZSBub3cgYXV0b21hdGljYWxseSBhY3Rp
dmF0ZXMKLSAgbGl2ZSBsb2dnaW5nLiAoYCMzMTkwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzMxOTA+YF8pCi0KLS0gQWRkIGNvbW1hbmQgbGluZSBvcHRpb24g
YGAtLWRlc2VsZWN0YGAgdG8gYWxsb3cgZGVzZWxlY3Rpb24gb2YgaW5kaXZpZHVhbAotICB0ZXN0
cyBhdCBjb2xsZWN0aW9uIHRpbWUuIChgIzMxOTgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE5OD5gXykKLQotLSBDYXB0dXJlZCBsb2dzIGFyZSBwcmlu
dGVkIGJlZm9yZSBlbnRlcmluZyBwZGIuIChgIzMyMDQKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIwND5gXykKLQotLSBEZXNlbGVjdGVkIGl0ZW0gY291
bnQgaXMgbm93IHNob3duIGJlZm9yZSB0ZXN0cyBhcmUgcnVuLCBlLmcuIGBgY29sbGVjdGVkIFgK
LSAgaXRlbXMgLyBZIGRlc2VsZWN0ZWRgYC4gKGAjMzIxMwotICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjEzPmBfKQotCi0tIFRoZSBidWlsdGluIG1vZHVs
ZSBgYHBsYXRmb3JtYGAgaXMgbm93IGF2YWlsYWJsZSBmb3IgdXNlIGluIGV4cHJlc3Npb25zIGlu
Ci0gIGBgcHl0ZXN0Lm1hcmtgYC4gKGAjMzIzNgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjM2PmBfKQotCi0tIFRoZSAqc2hvcnQgdGVzdCBzdW1tYXJ5
IGluZm8qIHNlY3Rpb24gbm93IGlzIGRpc3BsYXllZCBhZnRlciB0cmFjZWJhY2tzIGFuZAotICB3
YXJuaW5ncyBpbiB0aGUgdGVybWluYWwuIChgIzMyNTUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI1NT5gXykKLQotLSBOZXcgYGAtLXZlcmJvc2l0eWBg
IGZsYWcgdG8gc2V0IHZlcmJvc2l0eSBsZXZlbCBleHBsaWNpdGx5LiAoYCMzMjk2Ci0gIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTY+YF8pCi0KLS0gYGBw
eXRlc3QuYXBwcm94YGAgbm93IGFjY2VwdHMgY29tcGFyaW5nIGEgbnVtcHkgYXJyYXkgd2l0aCBh
IHNjYWxhci4gKGAjMzMxMgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMzEyPmBfKQotCi0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gU3VwcHJlc3Mg
YGBJT0Vycm9yYGAgd2hlbiBjbG9zaW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSB1c2VkIGZvciBjYXB0
dXJpbmcKLSAgc3RyZWFtcyBpbiBQeXRob24gMi43LiAoYCMyMzcwCi0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIzNzA+YF8pCi0KLS0gRml4ZWQgYGBjbGVh
cigpYGAgbWV0aG9kIG9uIGBgY2FwbG9nYGAgZml4dHVyZSB3aGljaCBjbGVhcmVkIGBgcmVjb3Jk
c2BgLCBidXQKLSAgbm90IHRoZSBgYHRleHRgYCBwcm9wZXJ0eS4gKGAjMzI5NwotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjk3PmBfKQotCi0tIER1cmlu
ZyB0ZXN0IGNvbGxlY3Rpb24sIHdoZW4gc3RkaW4gaXMgbm90IGFsbG93ZWQgdG8gYmUgcmVhZCwg
dGhlCi0gIGBgRG9udFJlYWRGcm9tU3RkaW5gYCBvYmplY3Qgc3RpbGwgYWxsb3cgaXRzZWxmIHRv
IGJlIGl0ZXJhYmxlIGFuZCByZXNvbHZlZAotICB0byBhbiBpdGVyYXRvciB3aXRob3V0IGNyYXNo
aW5nLiAoYCMzMzE0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMzMTQ+YF8pCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi0tIEFkZGVkIGEgYHJlZmVyZW5jZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vbGF0ZXN0L3JlZmVyZW5jZS5odG1sPmBfIHBhZ2UKLSAgdG8gdGhlIGRvY3MuIChgIzE3MTMg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTcxMz5gXykKLQot
Ci1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0t
IENoYW5nZSBtaW5pbXVtIHJlcXVpcmVtZW50IG9mIGBgYXR0cnNgYCB0byBgYDE3LjQuMGBgLiAo
YCMzMjI4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMy
Mjg+YF8pCi0KLS0gUmVuYW1lZCBleGFtcGxlIGRpcmVjdG9yaWVzIHNvIGFsbCB0ZXN0cyBwYXNz
IHdoZW4gcmFuIGZyb20gdGhlIGJhc2UKLSAgZGlyZWN0b3J5LiAoYCMzMjQ1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNDU+YF8pCi0KLS0gSW50ZXJuYWwg
YGBtYXJrLnB5YGAgbW9kdWxlIGhhcyBiZWVuIHR1cm5lZCBpbnRvIGEgcGFja2FnZS4gKGAjMzI1
MAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjUwPmBf
KQotCi0tIGBgcHl0ZXN0YGAgbm93IGRlcGVuZHMgb24gdGhlIGBtb3JlLWl0ZXJ0b29scwotICA8
aHR0cHM6Ly9naXRodWIuY29tL2VyaWtyb3NlL21vcmUtaXRlcnRvb2xzPmBfIHBhY2thZ2UuIChg
IzMyNjUKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI2
NT5gXykKLQotLSBBZGRlZCB3YXJuaW5nIHdoZW4gYGBbcHl0ZXN0XWBgIHNlY3Rpb24gaXMgdXNl
ZCBpbiBhIGBgLmNmZ2BgIGZpbGUgcGFzc2VkCi0gIHdpdGggYGAtY2BgIChgIzMyNjggPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI2OD5gXykKLQotLSBgYG5v
ZGVpZHNgYCBjYW4gbm93IGJlIHBhc3NlZCBleHBsaWNpdGx5IHRvIGBgRlNDb2xsZWN0b3JgYCBh
bmQgYGBOb2RlYGAKLSAgY29uc3RydWN0b3JzLiAoYCMzMjkxIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTE+YF8pCi0KLS0gSW50ZXJuYWwgcmVmYWN0b3Jp
bmcgb2YgYGBGb3JtYXR0ZWRFeGNpbmZvYGAgdG8gdXNlIGBgYXR0cnNgYCBmYWNpbGl0aWVzIGFu
ZAotICByZW1vdmUgb2xkIHN1cHBvcnQgY29kZSBmb3IgbGVnYWN5IFB5dGhvbiB2ZXJzaW9ucy4g
KGAjMzI5MgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
MjkyPmBfKQotCi0tIFJlZmFjdG9yaW5nIHRvIHVuaWZ5IGhvdyB2ZXJib3NpdHkgaXMgaGFuZGxl
ZCBpbnRlcm5hbGx5LiAoYCMzMjk2Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzMyOTY+YF8pCi0KLS0gSW50ZXJuYWwgcmVmYWN0b3JpbmcgdG8gYmV0dGVy
IGludGVncmF0ZSB3aXRoIGFyZ3BhcnNlLiAoYCMzMzA0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMDQ+YF8pCi0KLS0gRml4IGEgcHl0aG9uIGV4YW1w
bGUgd2hlbiBjYWxsaW5nIGEgZml4dHVyZSBpbiBkb2MvZW4vdXNhZ2UucnN0IChgIzMzMDgKLSAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMwOD5gXykKLQot
Ci1QeXRlc3QgMy40LjIgKDIwMTgtMDMtMDQpCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0K
LUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gUmVtb3ZlZCBwcm9ncmVzcyBpbmZvcm1hdGlvbiB3
aGVuIGNhcHR1cmUgb3B0aW9uIGlzIGBgbm9gYC4gKGAjMzIwMwotICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjAzPmBfKQotCi0tIFJlZmFjdG9yIGNoZWNr
IG9mIGJpbmRpciBmcm9tIGBgZXhpc3RzYGAgdG8gYGBpc2RpcmBgLiAoYCMzMjQxCi0gIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNDE+YF8pCi0KLS0gRml4
IGBgVHlwZUVycm9yYGAgaXNzdWUgd2hlbiB1c2luZyBgYGFwcHJveGBgIHdpdGggYSBgYERlY2lt
YWxgYCB2YWx1ZS4KLSAgKGAjMzI0NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMjQ3PmBfKQotCi0tIEZpeCByZWZlcmVuY2UgY3ljbGUgZ2VuZXJhdGVkIHdo
ZW4gdXNpbmcgdGhlIGBgcmVxdWVzdGBgIGZpeHR1cmUuIChgIzMyNDkKLSAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI0OT5gXykKLQotLSBgYFt0b29sOnB5
dGVzdF1gYCBzZWN0aW9ucyBpbiBgYCouY2ZnYGAgZmlsZXMgcGFzc2VkIGJ5IHRoZSBgYC1jYGAg
b3B0aW9uIGFyZQotICBub3cgcHJvcGVybHkgcmVjb2duaXplZC4gKGAjMzI2MAotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjYwPmBfKQotCi0KLUltcHJv
dmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBBZGQgbG9nZ2lu
ZyBwbHVnaW4gdG8gcGx1Z2lucyBsaXN0LiAoYCMzMjA5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyMDk+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBD
aGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBGaXggbWlub3IgdHlwbyBpbiBm
aXh0dXJlLnJzdCAoYCMzMjU5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMyNTk+YF8pCi0KLQotUHl0ZXN0IDMuNC4xICgyMDE4LTAyLTIwKQotPT09PT09
PT09PT09PT09PT09PT09PT09PQotCi1CdWcgRml4ZXMKLS0tLS0tLS0tLQotCi0tIE1vdmUgaW1w
b3J0IG9mIGBgZG9jdGVzdC5VbmV4cGVjdGVkRXhjZXB0aW9uYGAgdG8gdG9wLWxldmVsIHRvIGF2
b2lkIHBvc3NpYmxlCi0gIGVycm9ycyB3aGVuIHVzaW5nIGBgLS1wZGJgYC4gKGAjMTgxMAotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODEwPmBfKQotCi0t
IEFkZGVkIHByaW50aW5nIG9mIGNhcHR1cmVkIHN0ZG91dC9zdGRlcnIgYmVmb3JlIGVudGVyaW5n
IHBkYiwgYW5kIGltcHJvdmVkIGEKLSAgdGVzdCB3aGljaCB3YXMgZ2l2aW5nIGZhbHNlIG5lZ2F0
aXZlcyBhYm91dCBvdXRwdXQgY2FwdHVyaW5nLiAoYCMzMDUyCi0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNTI+YF8pCi0KLS0gRml4IG9yZGVyaW5nIG9m
IHRlc3RzIHVzaW5nIHBhcmFtZXRyaXplZCBmaXh0dXJlcyB3aGljaCBjYW4gbGVhZCB0byBmaXh0
dXJlcwotICBiZWluZyBjcmVhdGVkIG1vcmUgdGhhbiBuZWNlc3NhcnkuIChgIzMxNjEKLSAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE2MT5gXykKLQotLSBG
aXggYnVnIHdoZXJlIGxvZ2dpbmcgaGFwcGVuaW5nIGF0IGhvb2tzIG91dHNpZGUgb2YgInRlc3Qg
cnVuIiBob29rcyB3b3VsZAotICBjYXVzZSBhbiBpbnRlcm5hbCBlcnJvci4gKGAjMzE4NAotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTg0PmBfKQotCi0t
IERldGVjdCBhcmd1bWVudHMgaW5qZWN0ZWQgYnkgYGB1bml0dGVzdC5tb2NrLnBhdGNoYGAgZGVj
b3JhdG9yIGNvcnJlY3RseSB3aGVuCi0gIHB5cGkgYGBtb2NrLnBhdGNoYGAgaXMgaW5zdGFsbGVk
IGFuZCBpbXBvcnRlZC4gKGAjMzIwNgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zMjA2PmBfKQotCi0tIEVycm9ycyBzaG93biB3aGVuIGEgYGBweXRlc3Qu
cmFpc2VzKClgYCB3aXRoIGBgbWF0Y2g9YGAgZmFpbHMgYXJlIG5vdyBjbGVhbmVyCi0gIG9uIHdo
YXQgaGFwcGVuZWQ6IFdoZW4gbm8gZXhjZXB0aW9uIHdhcyByYWlzZWQsIHRoZSAibWF0Y2hpbmcg
Jy4uLiciIHBhcnQgZ290Ci0gIHJlbW92ZWQgYXMgaXQgZmFsc2VseSBpbXBsaWVzIHRoYXQgYW4g
ZXhjZXB0aW9uIHdhcyByYWlzZWQgYnV0IGl0IGRpZG4ndAotICBtYXRjaC4gV2hlbiBhIHdyb25n
IGV4Y2VwdGlvbiB3YXMgcmFpc2VkLCBpdCdzIG5vdyB0aHJvd24gKGxpa2UKLSAgYGBweXRlc3Qu
cmFpc2VkKClgYCB3aXRob3V0IGBgbWF0Y2g9YGAgd291bGQpIGluc3RlYWQgb2YgY29tcGxhaW5p
bmcgYWJvdXQKLSAgdGhlIHVubWF0Y2hlZCB0ZXh0LiAoYCMzMjIyCi0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyMjI+YF8pCi0KLS0gRml4ZWQgb3V0cHV0
IGNhcHR1cmUgaGFuZGxpbmcgaW4gZG9jdGVzdHMgb24gbWFjT1MuIChgIzk4NQotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85ODU+YF8pCi0KLQotSW1wcm92
ZWQgRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEFkZCBTcGhpbngg
cGFyYW1ldGVyIGRvY3MgZm9yIGBgbWF0Y2hgYCBhbmQgYGBtZXNzYWdlYGAgYXJncyB0bwotICBg
YHB5dGVzdC5yYWlzZXNgYC4gKGAjMzIwMgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zMjAyPmBfKQotCi0KLVRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gcHl0ZXN0IGhhcyBjaGFuZ2VkIHRoZSBwdWJs
aWNhdGlvbiBwcm9jZWR1cmUgYW5kIGlzIG5vdyBiZWluZyBwdWJsaXNoZWQgdG8KLSAgUHlQSSBk
aXJlY3RseSBmcm9tIFRyYXZpcy4gKGAjMzA2MAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDYwPmBfKQotCi0tIFJlbmFtZSBgYFBhcmFtZXRlclNldC5f
Zm9yX3BhcmFtZXRlcml6ZSgpYGAgdG8gYGBfZm9yX3BhcmFtZXRyaXplKClgYCBpbgotICBvcmRl
ciB0byBjb21wbHkgd2l0aCB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIChgIzMxNjYKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE2Nj5gXykKLQotLSBTa2lw
IGZhaWxpbmcgcGRiL2RvY3Rlc3QgdGVzdCBvbiBtYWMuIChgIzk4NQotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy85ODU+YF8pCi0KLQotUHl0ZXN0IDMuNC4w
ICgyMDE4LTAxLTMwKQotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1EZXByZWNhdGlvbnMg
YW5kIFJlbW92YWxzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gQWxsIHB5dGVzdCBj
bGFzc2VzIG5vdyBzdWJjbGFzcyBgYG9iamVjdGBgIGZvciBiZXR0ZXIgUHl0aG9uIDIvMyBjb21w
YXRpYmlsaXR5LgotICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IHVzZXIgY29kZSBleGNlcHQgaW4g
dmVyeSByYXJlIGVkZ2UgY2FzZXMuIChgIzIxNDcKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjE0Nz5gXykKLQotCi1GZWF0dXJlcwotLS0tLS0tLS0KLQot
LSBJbnRyb2R1Y2UgYGBlbXB0eV9wYXJhbWV0ZXJfc2V0X21hcmtgYCBpbmkgb3B0aW9uIHRvIHNl
bGVjdCB3aGljaCBtYXJrIHRvCi0gIGFwcGx5IHdoZW4gYGBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emVgYCBpcyBnaXZlbiBhbiBlbXB0eSBzZXQgb2YgcGFyYW1ldGVycy4KLSAgVmFsaWQgb3B0aW9u
cyBhcmUgYGBza2lwYGAgKGRlZmF1bHQpIGFuZCBgYHhmYWlsYGAuIE5vdGUgdGhhdCBpdCBpcyBw
bGFubmVkCi0gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCB0byBgYHhmYWlsYGAgaW4gZnV0dXJlIHJl
bGVhc2VzIGFzIHRoaXMgaXMgY29uc2lkZXJlZAotICBsZXNzIGVycm9yIHByb25lLiAoYCMyNTI3
Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1Mjc+YF8p
Ci0KLS0gKipJbmNvbXBhdGlibGUgY2hhbmdlKio6IGFmdGVyIGNvbW11bml0eSBmZWVkYmFjayB0
aGUgYGxvZ2dpbmcKLSAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9sb2dnaW5n
Lmh0bWw+YF8gZnVuY3Rpb25hbGl0eSBoYXMKLSAgdW5kZXJnb25lIHNvbWUgY2hhbmdlcy4gUGxl
YXNlIGNvbnN1bHQgdGhlIGBsb2dnaW5nIGRvY3VtZW50YXRpb24KLSAgPGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL2xhdGVzdC9sb2dnaW5nLmh0bWwjaW5jb21wYXRpYmxlLWNoYW5nZXMtaW4t
cHl0ZXN0LTMtND5gXwotICBmb3IgZGV0YWlscy4gKGAjMzAxMyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDEzPmBfKQotCi0tIENvbnNvbGUgb3V0cHV0IGZh
bGxzIGJhY2sgdG8gImNsYXNzaWMiIG1vZGUgd2hlbiBjYXB0dXJpbmcgaXMgZGlzYWJsZWQgKGBg
LXNgYCksCi0gIG90aGVyd2lzZSB0aGUgb3V0cHV0IGdldHMgZ2FyYmxlZCB0byB0aGUgcG9pbnQg
b2YgYmVpbmcgdXNlbGVzcy4gKGAjMzAzOAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zMDM4PmBfKQotCi0tIE5ldyBgcHl0ZXN0X3J1bnRlc3RfbG9nZmlu
aXNoCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvd3JpdGluZ19wbHVnaW5z
Lmh0bWwjX3B5dGVzdC5ob29rc3BlYy5weXRlc3RfcnVudGVzdF9sb2dmaW5pc2g+YF8KLSAgaG9v
ayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHRlc3QgaXRlbSBoYXMgZmluaXNoZWQgZXhlY3V0aW5n
LCBhbmFsb2dvdXMgdG8KLSAgYHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0Ci0gIDxodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qvd3JpdGluZ19wbHVnaW5zLmh0bWwjX3B5dGVzdC5ob29r
c3BlYy5weXRlc3RfcnVudGVzdF9zdGFydD5gXy4KLSAgKGAjMzEwMSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTAxPmBfKQotCi0tIEltcHJvdmUgcGVyZm9y
bWFuY2Ugd2hlbiBjb2xsZWN0aW5nIHRlc3RzIHVzaW5nIG1hbnkgZml4dHVyZXMuIChgIzMxMDcK
LSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEwNz5gXykK
LQotLSBOZXcgYGBjYXBsb2cuZ2V0X3JlY29yZHMod2hlbilgYCBtZXRob2Qgd2hpY2ggcHJvdmlk
ZXMgYWNjZXNzIHRvIHRoZSBjYXB0dXJlZAotICByZWNvcmRzIGZvciB0aGUgYGAic2V0dXAiYGAs
IGBgImNhbGwiYGAgYW5kIGBgInRlYXJkb3duImBgCi0gIHRlc3Rpbmcgc3RhZ2VzLiAoYCMzMTE3
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxMTc+YF8pCi0K
LS0gTmV3IGZpeHR1cmUgYGByZWNvcmRfeG1sX2F0dHJpYnV0ZWBgIHRoYXQgYWxsb3dzIG1vZGlm
eWluZyBhbmQgaW5zZXJ0aW5nCi0gIGF0dHJpYnV0ZXMgb24gdGhlIGBgPHRlc3RjYXNlPmBgIHht
bCBub2RlIGluIEpVbml0IHJlcG9ydHMuIChgIzMxMzAKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEzMD5gXykKLQotLSBUaGUgZGVmYXVsdCBjYWNoZSBk
aXJlY3RvcnkgaGFzIGJlZW4gcmVuYW1lZCBmcm9tIGBgLmNhY2hlYGAgdG8KLSAgYGAucHl0ZXN0
X2NhY2hlYGAgYWZ0ZXIgY29tbXVuaXR5IGZlZWRiYWNrIHRoYXQgdGhlIG5hbWUgYGAuY2FjaGVg
YCBkaWQgbm90Ci0gIG1ha2UgaXQgY2xlYXIgdGhhdCBpdCB3YXMgdXNlZCBieSBweXRlc3QuIChg
IzMxMzgKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEz
OD5gXykKLQotLSBDb2xvcml6ZSB0aGUgbGV2ZWxuYW1lIGNvbHVtbiBpbiB0aGUgbGl2ZS1sb2cg
b3V0cHV0LiAoYCMzMTQyCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMxNDI+YF8pCi0KLQotQnVnIEZpeGVzCi0tLS0tLS0tLS0KLQotLSBGaXggaGFuZ2lu
ZyBwZXhwZWN0IHRlc3Qgb24gTWFjT1MgYnkgdXNpbmcgZmx1c2goKSBpbnN0ZWFkIG9mIHdhaXQo
KS4KLSAgKGAjMjAyMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yMDIyPmBfKQotCi0tIEZpeCByZXN0b3JpbmcgUHl0aG9uIHN0YXRlIGFmdGVyIGluLXByb2Nl
c3MgcHl0ZXN0IHJ1bnMgd2l0aCB0aGUKLSAgYGBweXRlc3RlcmBgIHBsdWdpbjsgdGhpcyBtYXkg
YnJlYWsgdGVzdHMgdXNpbmcgbXVsdGlwbGUgaW5wcm9jZXNzCi0gIHB5dGVzdCBydW5zIGlmIGxh
dGVyIG9uZXMgZGVwZW5kIG9uIGVhcmxpZXIgb25lcyBsZWFraW5nIGdsb2JhbCBpbnRlcnByZXRl
cgotICBjaGFuZ2VzLiAoYCMzMDE2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMwMTY+YF8pCi0KLS0gRml4IHNraXBwaW5nIHBsdWdpbiByZXBvcnRpbmcgaG9v
ayB3aGVuIHRlc3QgYWJvcnRlZCBiZWZvcmUgcGx1Z2luIHNldHVwCi0gIGhvb2suIChgIzMwNzQg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA3ND5gXykKLQot
LSBGaXggcHJvZ3Jlc3MgcGVyY2VudGFnZSByZXBvcnRlZCB3aGVuIHRlc3RzIGZhaWwgZHVyaW5n
IHRlYXJkb3duLiAoYCMzMDg4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMwODg+YF8pCi0KLS0gKipJbmNvbXBhdGlibGUgY2hhbmdlKio6IGBgLW8vLS1v
dmVycmlkZWBgIG9wdGlvbiBubyBsb25nZXIgZWF0cyBhbGwgdGhlCi0gIHJlbWFpbmluZyBvcHRp
b25zLCB3aGljaCBjYW4gbGVhZCB0byBzdXJwcmlzaW5nIGJlaGF2aW9yOiBmb3IgZXhhbXBsZSwK
LSAgYGBweXRlc3QgLW8gZm9vPTEgL3BhdGgvdG8vdGVzdC5weWBgIHdvdWxkIGZhaWwgYmVjYXVz
ZSBgYC9wYXRoL3RvL3Rlc3QucHlgYAotICB3b3VsZCBiZSBjb25zaWRlcmVkIGFzIHBhcnQgb2Yg
dGhlIGBgLW9gYCBjb21tYW5kLWxpbmUgYXJndW1lbnQuIE9uZQotICBjb25zZXF1ZW5jZSBvZiB0
aGlzIGlzIHRoYXQgbm93IG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gb3ZlcnJpZGVzIG5lZWQKLSAg
bXVsdGlwbGUgYGAtb2BgIGZsYWdzOiBgYHB5dGVzdCAtbyBmb289MSAtbyBiYXI9MmBgLiAoYCMz
MTAzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxMDM+
YF8pCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci0tIERvY3VtZW50IGhvb2tzIChkZWZpbmVkIHdpdGggYGBoaXN0b3JpYz1UcnVlYGApIHdoaWNo
IGNhbm5vdCBiZSB1c2VkIHdpdGgKLSAgYGBob29rd3JhcHBlcj1UcnVlYGAuIChgIzI0MjMKLSAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQyMz5gXykKLQot
LSBDbGFyaWZ5IHRoYXQgd2FybmluZyBjYXB0dXJpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHdhcm5p
bmcgZmlsdGVyIGJ5IGRlZmF1bHQuCi0gIChgIzI0NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ1Nz5gXykKLQotLSBDbGFyaWZ5IGEgcG9zc2libGUgY29u
ZnVzaW9uIHdoZW4gdXNpbmcgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAgd2l0aCBmaXh0dXJlCi0gIGZ1
bmN0aW9ucyB0aGF0IHJldHVybiBOb25lLiAoYCMyNjk4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2OTg+YF8pCi0KLS0gRml4IHRoZSB3b3JkaW5nIG9m
IGEgc2VudGVuY2Ugb24gZG9jdGVzdCBmbGFncyB1c2VkIGluIHB5dGVzdC4gKGAjMzA3NgotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDc2PmBfKQotCi0t
IFByZWZlciBgYGh0dHBzOi8vKi5yZWFkdGhlZG9jcy5pb2BgIG92ZXIgYGBodHRwOi8vKi5ydGZk
Lm9yZ2BgIGZvciBsaW5rcyBpbgotICB0aGUgZG9jdW1lbnRhdGlvbi4gKGAjMzA5MgotICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDkyPmBfKQotCi0tIElt
cHJvdmUgcmVhZGFiaWxpdHkgKHdvcmRpbmcsIGdyYW1tYXIpIG9mIEdldHRpbmcgU3RhcnRlZCBn
dWlkZSAoYCMzMTMxCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMxMzE+YF8pCi0KLS0gQWRkZWQgbm90ZSB0aGF0IGNhbGxpbmcgcHl0ZXN0Lm1haW4gbXVs
dGlwbGUgdGltZXMgZnJvbSB0aGUgc2FtZSBwcm9jZXNzIGlzCi0gIG5vdCByZWNvbW1lbmRlZCBi
ZWNhdXNlIG9mIGltcG9ydCBjYWNoaW5nLiAoYCMzMTQzCi0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxNDM+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBD
aGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBTaG93IGEgc2ltcGxlIGFuZCBl
YXN5IGVycm9yIHdoZW4ga2V5d29yZCBleHByZXNzaW9ucyB0cmlnZ2VyIGEgc3ludGF4IGVycm9y
Ci0gIChmb3IgZXhhbXBsZSwgYGAiLWsgZm9vIGFuZCBpbXBvcnQiYGAgd2lsbCBzaG93IGFuIGVy
cm9yIHRoYXQgeW91IGNhbiBub3QgdXNlCi0gIHRoZSBgYGltcG9ydGBgIGtleXdvcmQgaW4gZXhw
cmVzc2lvbnMpLiAoYCMyOTUzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI5NTM+YF8pCi0KLS0gQ2hhbmdlIHBhcmFtZXRyaXplZCBhdXRvbWF0aWMgdGVz
dCBpZCBnZW5lcmF0aW9uIHRvIHVzZSB0aGUgYGBfX25hbWVfX2BgCi0gIGF0dHJpYnV0ZSBvZiBm
dW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgZmFsbGJhY2sgYXJndW1lbnQgbmFtZSBwbHVzIGNvdW50
ZXIuCi0gIChgIzI5NzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjk3Nj5gXykKLQotLSBSZXBsYWNlIHB5LnN0ZCB3aXRoIHN0ZGxpYiBpbXBvcnRzLiAoYCMz
MDY3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNjc+
YF8pCi0KLS0gQ29ycmVjdGVkICd5b3UnIHRvICd5b3VyJyBpbiBsb2dnaW5nIGRvY3MuIChgIzMx
MjkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEyOT5g
XykKLQotCi1QeXRlc3QgMy4zLjIgKDIwMTctMTItMjUpCi09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gcHl0ZXN0ZXI6IGlnbm9yZSBmaWxlcyB1
c2VkIHRvIG9idGFpbiBjdXJyZW50IHVzZXIgbWV0YWRhdGEgaW4gdGhlIGZkIGxlYWsKLSAgZGV0
ZWN0b3IuIChgIzI3ODQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjc4ND5gXykKLQotLSBGaXggKiptZW1vcnkgbGVhayoqIHdoZXJlIG9iamVjdHMgcmV0dXJu
ZWQgYnkgZml4dHVyZXMgd2VyZSBuZXZlciBkZXN0cnVjdGVkCi0gIGJ5IHRoZSBnYXJiYWdlIGNv
bGxlY3Rvci4gKGAjMjk4MQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yOTgxPmBfKQotCi0tIEZpeCBjb252ZXJzaW9uIG9mIHB5YXJncyB0byBmaWxlbmFt
ZSB0byBub3QgY29udmVydCBzeW1saW5rcyBvbiBQeXRob24gMi4gKGAjMjk4NQotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTg1PmBfKQotCi0tIGBgUFlU
RVNUX0RPTlRfUkVXUklURWBgIGlzIG5vdyBjaGVja2VkIGZvciBwbHVnaW5zIHRvbyByYXRoZXIg
dGhhbiBvbmx5IGZvcgotICB0ZXN0IG1vZHVsZXMuIChgIzI5OTUgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk5NT5gXykKLQotCi1JbXByb3ZlZCBEb2N1bWVu
dGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gQWRkIGNsYXJpZnlpbmcgbm90ZSBh
Ym91dCBiZWhhdmlvciBvZiBtdWx0aXBsZSBwYXJhbWV0cml6ZWQgYXJndW1lbnRzIChgIzMwMDEK
LSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAwMT5gXykK
LQotCi1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci0tIENvZGUgY2xlYW51cC4gKGAjMzAxNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zMDE1PmBfLAotICBgIzMwMjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAyMT5gXykKLQotLSBDbGVhbiB1cCBjb2RlIGJ5IHJlcGxh
Y2luZyBpbXBvcnRzIGFuZCByZWZlcmVuY2VzIG9mIGBfYXN0YCB0byBgYXN0YC4gKGAjMzAxOAot
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDE4PmBfKQot
Ci0KLVB5dGVzdCAzLjMuMSAoMjAxNy0xMi0wNSkKLT09PT09PT09PT09PT09PT09PT09PT09PT0K
LQotQnVnIEZpeGVzCi0tLS0tLS0tLS0KLQotLSBGaXggaXNzdWUgYWJvdXQgYGAtcCBubzo8cGx1
Z2luPmBgIGhhdmluZyBubyBlZmZlY3QuIChgIzI5MjAKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkyMD5gXykKLQotLSBGaXggcmVncmVzc2lvbiB3aXRo
IHdhcm5pbmdzIHRoYXQgY29udGFpbmVkIG5vbi1zdHJpbmdzIGluIHRoZWlyIGFyZ3VtZW50cyBp
bgotICBQeXRob24gMi4gKGAjMjk1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yOTU2PmBfKQotCi0tIEFsd2F5cyBlc2NhcGUgbnVsbCBieXRlcyB3aGVuIHNl
dHRpbmcgYGBQWVRFU1RfQ1VSUkVOVF9URVNUYGAuIChgIzI5NTcKLSAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk1Nz5gXykKLQotLSBGaXggYGBaZXJvRGl2
aXNpb25FcnJvcmBgIHdoZW4gdXNpbmcgdGhlIGBgdGVzdG1vbmBgIHBsdWdpbiB3aGVuIG5vIHRl
c3RzCi0gIHdlcmUgYWN0dWFsbHkgY29sbGVjdGVkLiAoYCMyOTcxCi0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5NzE+YF8pCi0KLS0gQnJpbmcgYmFjayBg
YFRlcm1pbmFsUmVwb3J0ZXIud3JpdGVyYGAgYXMgYW4gYWxpYXMgdG8KLSAgYGBUZXJtaW5hbFJl
cG9ydGVyLl90d2BgLiBUaGlzIGFsaWFzIHdhcyByZW1vdmVkIGJ5IGFjY2lkZW50IGluIHRoZSBg
YDMuMy4wYGAKLSAgcmVsZWFzZS4gKGAjMjk4NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yOTg0PmBfKQotCi0tIFRoZSBgYHB5dGVzdC1jYXB0dXJlbG9nYGAg
cGx1Z2luIGlzIG5vdyBhbHNvIGJsYWNrbGlzdGVkLCBhdm9pZGluZyBlcnJvcnMgd2hlbgotICBy
dW5uaW5nIHB5dGVzdCB3aXRoIGl0IHN0aWxsIGluc3RhbGxlZC4gKGAjMzAwNAotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDA0PmBfKQotCi0KLUltcHJv
dmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBGaXggYnJva2Vu
IGxpbmsgdG8gcGx1Z2luIGBgcHl0ZXN0LWxvY2Fsc2VydmVyYGAuIChgIzI5NjMKLSAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk2Mz5gXykKLQotCi1Ucml2
aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIFVwZGF0
ZSBnaXRodWIgImJ1Z3MiIGxpbmsgaW4gYGBDT05UUklCVVRJTkcucnN0YGAgKGAjMjk0OQotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTQ5PmBfKQotCi0K
LVB5dGVzdCAzLjMuMCAoMjAxNy0xMS0yMykKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
RGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0t
IFB5dGVzdCBubyBsb25nZXIgc3VwcG9ydHMgUHl0aG9uICoqMi42KiogYW5kICoqMy4zKiouIFRo
b3NlIFB5dGhvbiB2ZXJzaW9ucwotICBhcmUgRU9MIGZvciBzb21lIHRpbWUgbm93IGFuZCBpbmN1
ciBtYWludGVuYW5jZSBhbmQgY29tcGF0aWJpbGl0eSBjb3N0cyBvbgotICB0aGUgcHl0ZXN0IGNv
cmUgdGVhbSwgYW5kIGZvbGxvd2luZyB1cCB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb21tdW5pdHkg
d2UKLSAgZGVjaWRlZCB0aGF0IHRoZXkgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkIHN0YXJ0
aW5nIG9uIHRoaXMgdmVyc2lvbi4gVXNlcnMKLSAgd2hpY2ggc3RpbGwgcmVxdWlyZSB0aG9zZSB2
ZXJzaW9ucyBzaG91bGQgcGluIHB5dGVzdCB0byBgYDwzLjNgYC4gKGAjMjgxMgotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODEyPmBfKQotCi0tIFJlbW92
ZSBpbnRlcm5hbCBgYF9wcmVsb2FkcGx1Z2lucygpYGAgZnVuY3Rpb24uIFRoaXMgcmVtb3ZhbCBp
cyBwYXJ0IG9mIHRoZQotICBgYHB5dGVzdF9uYW1lc3BhY2UoKWBgIGhvb2sgZGVwcmVjYXRpb24u
IChgIzI2MzYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjYzNj5gXykKLQotLSBJbnRlcm5hbGx5IGNoYW5nZSBgYENhbGxTcGVjMmBgIHRvIGhhdmUgYSBs
aXN0IG9mIG1hcmtzIGluc3RlYWQgb2YgYSBicm9rZW4KLSAgbWFwcGluZyBvZiBrZXl3b3Jkcy4g
VGhpcyByZW1vdmVzIHRoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgdGhlIGludGVybmFsCi0gIGBg
Q2FsbFNwZWMyYGAgY2xhc3MuIChgIzI2NzIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjY3Mj5gXykKLQotLSBSZW1vdmUgUGFyYW1ldGVyU2V0LmRlcHJl
Y2F0ZWRfYXJnX2RpY3QgLSBpdHMgbm90IGEgcHVibGljIGFwaSBhbmQgdGhlIGxhY2sKLSAgb2Yg
dGhlIHVuZGVyc2NvcmUgd2FzIGEgbmFtaW5nIGVycm9yLiAoYCMyNjc1Ci0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2NzU+YF8pCi0KLS0gUmVtb3ZlIHRo
ZSBpbnRlcm5hbCBtdWx0aS10eXBlZCBhdHRyaWJ1dGUgYGBOb2RlLl9ldmFsc2tpcGBgIGFuZCBy
ZXBsYWNlIGl0Ci0gIHdpdGggdGhlIGJvb2xlYW4gYGBOb2RlLl9za2lwcGVkX2J5X21hcmtgYC4g
KGAjMjc2NwotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
NzY3PmBfKQotCi0tIFRoZSBgYHBhcmFtc2BgIGxpc3QgcGFzc2VkIHRvIGBgcHl0ZXN0LmZpeHR1
cmVgYCBpcyBub3cgZm9yCi0gIGFsbCBlZmZlY3RzIGNvbnNpZGVyZWQgaW1tdXRhYmxlIGFuZCBm
cm96ZW4gYXQgdGhlIG1vbWVudCBvZiB0aGUgYGBweXRlc3QuZml4dHVyZWBgCi0gIGNhbGwuIFBy
ZXZpb3VzbHkgdGhlIGxpc3QgY291bGQgYmUgY2hhbmdlZCBiZWZvcmUgdGhlIGZpcnN0IGludm9j
YXRpb24gb2YgdGhlIGZpeHR1cmUKLSAgYWxsb3dpbmcgZm9yIGEgZm9ybSBvZiBkeW5hbWljIHBh
cmFtZXRyaXphdGlvbiAoZm9yIGV4YW1wbGUsIHVwZGF0ZWQgZnJvbSBjb21tYW5kLWxpbmUgb3B0
aW9ucyksCi0gIGJ1dCB0aGlzIHdhcyBhbiB1bndhbnRlZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwg
d2hpY2ggY29tcGxpY2F0ZWQgdGhlIGludGVybmFscyBhbmQgcHJldmVudGVkCi0gIHNvbWUgaW50
ZXJuYWwgY2xlYW51cC4gU2VlIGlzc3VlIGAjMjk1OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTU5PmBfCi0gIGZvciBkZXRhaWxzIGFuZCBhIHJlY29tbWVu
ZGVkIHdvcmthcm91bmQuCi0KLUZlYXR1cmVzCi0tLS0tLS0tLQotCi0tIGBgcHl0ZXN0X2ZpeHR1
cmVfcG9zdF9maW5hbGl6ZXJgYCBob29rIGNhbiBub3cgcmVjZWl2ZSBhIGBgcmVxdWVzdGBgCi0g
IGFyZ3VtZW50LiAoYCMyMTI0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzIxMjQ+YF8pCi0KLS0gUmVwbGFjZSB0aGUgb2xkIGludHJvc3BlY3Rpb24gY29kZSBp
biBjb21wYXQucHkgdGhhdCBkZXRlcm1pbmVzIHRoZSBhdmFpbGFibGUKLSAgYXJndW1lbnRzIG9m
IGZpeHR1cmVzIHdpdGggaW5zcGVjdC5zaWduYXR1cmUgb24gUHl0aG9uIDMgYW5kCi0gIGZ1bmNz
aWdzLnNpZ25hdHVyZSBvbiBQeXRob24gMi4gVGhpcyBzaG91bGQgcmVzcGVjdCBgYF9fc2lnbmF0
dXJlX19gYAotICBkZWNsYXJhdGlvbnMgb24gZnVuY3Rpb25zLiAoYCMyMjY3Ci0gIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyNjc+YF8pCi0KLS0gUmVwb3J0
IHRlc3RzIHdpdGggZ2xvYmFsIGBgcHl0ZXN0bWFya2BgIHZhcmlhYmxlIG9ubHkgb25jZS4gKGAj
MjU0OQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTQ5
PmBfKQotCi0tIE5vdyBweXRlc3QgZGlzcGxheXMgdGhlIHRvdGFsIHByb2dyZXNzIHBlcmNlbnRh
Z2Ugd2hpbGUgcnVubmluZyB0ZXN0cy4gVGhlCi0gIHByZXZpb3VzIG91dHB1dCBzdHlsZSBjYW4g
YmUgc2V0IGJ5IGNvbmZpZ3VyaW5nIHRoZSBgYGNvbnNvbGVfb3V0cHV0X3N0eWxlYGAKLSAgc2V0
dGluZyB0byBgYGNsYXNzaWNgYC4gKGAjMjY1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNjU3PmBfKQotCi0tIE1hdGNoIGBgd2FybnNgYCBzaWduYXR1cmUg
dG8gYGByYWlzZXNgYCBieSBhZGRpbmcgYGBtYXRjaGBgIGtleXdvcmQuIChgIzI3MDgKLSAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjcwOD5gXykKLQotLSBQ
eXRlc3Qgbm93IGNhcHR1cmVzIGFuZCBkaXNwbGF5cyBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQg
YGBsb2dnaW5nYGAgbW9kdWxlLgotICBUaGUgdXNlciBjYW4gY29udHJvbCB0aGUgbG9nZ2luZyBs
ZXZlbCB0byBiZSBjYXB0dXJlZCBieSBzcGVjaWZ5aW5nIG9wdGlvbnMKLSAgaW4gYGBweXRlc3Qu
aW5pYGAsIHRoZSBjb21tYW5kIGxpbmUgYW5kIGFsc28gZHVyaW5nIGluZGl2aWR1YWwgdGVzdHMg
dXNpbmcKLSAgbWFya2Vycy4gQWxzbywgYSBgYGNhcGxvZ2BgIGZpeHR1cmUgaXMgYXZhaWxhYmxl
IHRoYXQgZW5hYmxlcyB1c2VycyB0byB0ZXN0Ci0gIHRoZSBjYXB0dXJlZCBsb2cgZHVyaW5nIHNw
ZWNpZmljIHRlc3RzIChzaW1pbGFyIHRvIGBgY2Fwc3lzYGAgZm9yIGV4YW1wbGUpLgotICBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGUgYGxvZ2dpbmcgZG9jcwotICA8aHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2xvZ2dpbmcuaHRtbD5gXy4gVGhpcyBmZWF0dXJl
IHdhcwotICBpbnRyb2R1Y2VkIGJ5IG1lcmdpbmcgdGhlIHBvcHVsYXIgYHB5dGVzdC1jYXRjaGxv
ZwotICA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1jYXRjaGxvZy8+YF8gcGx1Z2lu
LCB0aGFua3MgdG8gYFRob21hcyBIaXNjaAotICA8aHR0cHM6Ly9naXRodWIuY29tL3RoaXNjaD5g
Xy4gQmUgYWR2aXNlZCB0aGF0IGR1cmluZyB0aGUgbWVyZ2luZyB0aGUKLSAgYmFja3dhcmQgY29t
cGF0aWJpbGl0eSBpbnRlcmZhY2Ugd2l0aCB0aGUgZGVmdW5jdCBgYHB5dGVzdC1jYXB0dXJlbG9n
YGAgaGFzCi0gIGJlZW4gZHJvcHBlZC4gKGAjMjc5NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzk0PmBfKQotCi0tIEFkZCBgYGFsbG93X21vZHVsZV9sZXZl
bGBgIGt3YXJnIHRvIGBgcHl0ZXN0LnNraXAoKWBgLCBlbmFibGluZyB0byBza2lwIHRoZQotICB3
aG9sZSBtb2R1bGUuIChgIzI4MDggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjgwOD5gXykKLQotLSBBbGxvdyBzZXR0aW5nIGBgZmlsZV9vcl9kaXJgYCwgYGAt
Y2BgLCBhbmQgYGAtb2BgIGluIFBZVEVTVF9BRERPUFRTLiAoYCMyODI0Ci0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4MjQ+YF8pCi0KLS0gUmV0dXJuIHN0
ZG91dC9zdGRlcnIgY2FwdHVyZSByZXN1bHRzIGFzIGEgYGBuYW1lZHR1cGxlYGAsIHNvIGBgb3V0
YGAgYW5kCi0gIGBgZXJyYGAgY2FuIGJlIGFjY2Vzc2VkIGJ5IGF0dHJpYnV0ZS4gKGAjMjg3OQot
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODc5PmBfKQot
Ci0tIEFkZCBgYGNhcGZkYmluYXJ5YGAsIGEgdmVyc2lvbiBvZiBgYGNhcGZkYGAgd2hpY2ggcmV0
dXJucyBieXRlcyBmcm9tCi0gIGBgcmVhZG91dGVycigpYGAuIChgIzI5MjMKLSAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkyMz5gXykKLQotLSBBZGQgYGBj
YXBzeXNiaW5hcnlgYCBhIHZlcnNpb24gb2YgYGBjYXBzeXNgYCB3aGljaCByZXR1cm5zIGJ5dGVz
IGZyb20KLSAgYGByZWFkb3V0ZXJyKClgYC4gKGAjMjkzNAotICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTM0PmBfKQotCi0tIEltcGxlbWVudCBmZWF0dXJl
IHRvIHNraXAgYGBzZXR1cC5weWBgIGZpbGVzIHdoZW4gcnVuIHdpdGgKLSAgYGAtLWRvY3Rlc3Qt
bW9kdWxlc2BgLiAoYCM1MDIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNTAyPmBfKQotCi0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gUmVzdW1lIG91
dHB1dCBjYXB0dXJpbmcgYWZ0ZXIgYGBjYXBzeXMvY2FwZmQuZGlzYWJsZWQoKWBgIGNvbnRleHQg
bWFuYWdlci4KLSAgKGAjMTk5MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xOTkzPmBfKQotCi0tIGBgcHl0ZXN0X2ZpeHR1cmVfc2V0dXBgYCBhbmQgYGBweXRl
c3RfZml4dHVyZV9wb3N0X2ZpbmFsaXplcmBgIGhvb2tzIGFyZSBub3cKLSAgY2FsbGVkIGZvciBh
bGwgYGBjb25mdGVzdC5weWBgIGZpbGVzLiAoYCMyMTI0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxMjQ+YF8pCi0KLS0gSWYgYW4gZXhjZXB0aW9uIGhh
cHBlbnMgd2hpbGUgbG9hZGluZyBhIHBsdWdpbiwgcHl0ZXN0IG5vIGxvbmdlciBoaWRlcyB0aGUK
LSAgb3JpZ2luYWwgdHJhY2ViYWNrLiBJbiBQeXRob24gMiBpdCB3aWxsIHNob3cgdGhlIG9yaWdp
bmFsIHRyYWNlYmFjayB3aXRoIGEgbmV3Ci0gIG1lc3NhZ2UgdGhhdCBleHBsYWlucyBpbiB3aGlj
aCBwbHVnaW4uIEluIFB5dGhvbiAzIGl0IHdpbGwgc2hvdyAyIGNhbm9uaXplZAotICBleGNlcHRp
b25zLCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIHdoaWxlIGxvYWRpbmcgdGhlIHBsdWdpbiBpbiBh
ZGRpdGlvbiB0byBhbgotICBleGNlcHRpb24gdGhhdCBweXRlc3QgdGhyb3dzIGFib3V0IGxvYWRp
bmcgYSBwbHVnaW4uIChgIzI0OTEKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjQ5MT5gXykKLQotLSBgYGNhcHN5c2BgIGFuZCBgYGNhcGZkYGAgY2FuIG5v
dyBiZSB1c2VkIGJ5IG90aGVyIGZpeHR1cmVzLiAoYCMyNzA5Ci0gIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3MDk+YF8pCi0KLS0gSW50ZXJuYWwgYGBweXRl
c3RlcmBgIHBsdWdpbiBwcm9wZXJseSBlbmNvZGVzIGBgYnl0ZXNgYCBhcmd1bWVudHMgdG8KLSAg
YGB1dGYtOGBgLiAoYCMyNzM4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI3Mzg+YF8pCi0KLS0gYGB0ZXN0ZGlyYGAgbm93IHVzZXMgdXNlIHRoZSBzYW1lIG1l
dGhvZCB1c2VkIGJ5IGBgdG1wZGlyYGAgdG8gY3JlYXRlIGl0cwotICB0ZW1wb3JhcnkgZGlyZWN0
b3J5LiBUaGlzIGNoYW5nZXMgdGhlIGZpbmFsIHN0cnVjdHVyZSBvZiB0aGUgYGB0ZXN0ZGlyYGAK
LSAgZGlyZWN0b3J5IHNsaWdodGx5LCBidXQgc2hvdWxkIG5vdCBhZmZlY3QgdXNhZ2UgaW4gbm9y
bWFsIHNjZW5hcmlvcyBhbmQKLSAgYXZvaWRzIGEgbnVtYmVyIG9mIHBvdGVudGlhbCBwcm9ibGVt
cy4gKGAjMjc1MQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yNzUxPmBfKQotCi0tIFB5dGVzdCBubyBsb25nZXIgY29tcGxhaW5zIGFib3V0IHdhcm5pbmdz
IHdpdGggdW5pY29kZSBtZXNzYWdlcyBiZWluZwotICBub24tYXNjaWkgY29tcGF0aWJsZSBldmVu
IGZvciBhc2NpaS1jb21wYXRpYmxlIG1lc3NhZ2VzLiBBcyBhIHJlc3VsdCBvZiB0aGlzLAotICB3
YXJuaW5ncyB3aXRoIHVuaWNvZGUgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmaXJzdCB0byBhbiBh
c2NpaSByZXByZXNlbnRhdGlvbgotICBmb3Igc2FmZXR5LiAoYCMyODA5IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4MDk+YF8pCi0KLS0gQ2hhbmdlIHJldHVy
biB2YWx1ZSBvZiBweXRlc3QgY29tbWFuZCB3aGVuIGBgLS1tYXhmYWlsYGAgaXMgcmVhY2hlZCBm
cm9tCi0gIGBgMmBgIChpbnRlcnJ1cHRlZCkgdG8gYGAxYGAgKGZhaWxlZCkuIChgIzI4NDUKLSAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg0NT5gXykKLQot
LSBGaXggaXNzdWUgaW4gYXNzZXJ0aW9uIHJld3JpdGluZyB3aGljaCBjb3VsZCBsZWFkIGl0IHRv
IHJld3JpdGUgbW9kdWxlcyB3aGljaAotICBzaG91bGQgbm90IGJlIHJld3JpdHRlbi4gKGAjMjkz
OQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTM5PmBf
KQotCi0tIEhhbmRsZSBtYXJrcyB3aXRob3V0IGRlc2NyaXB0aW9uIGluIGBgcHl0ZXN0LmluaWBg
LiAoYCMyOTQyCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI5NDI+YF8pCi0KLQotVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotLSBweXRlc3Qgbm93IGRlcGVuZHMgb24gYGF0dHJzIDxodHRwczovL3B5cGku
b3JnL3Byb2plY3QvYXR0cnMvPmBfIGZvciBpbnRlcm5hbAotICBzdHJ1Y3R1cmVzIHRvIGVhc2Ug
Y29kZSBtYWludGFpbmFiaWxpdHkuIChgIzI2NDEKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY0MT5gXykKLQotLSBSZWZhY3RvcmVkIGludGVybmFsIFB5
dGhvbiAyLzMgY29tcGF0aWJpbGl0eSBjb2RlIHRvIHVzZSBgYHNpeGBgLiAoYCMyNjQyCi0gIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2NDI+YF8pCi0KLS0g
U3RvcCB2ZW5kb3JpbmcgYGBwbHVnZ3lgYCAtIHdlJ3JlIG1pc3Npbmcgb3V0IG9uIGl0cyBsYXRl
c3QgY2hhbmdlcyBmb3Igbm90Ci0gIG11Y2ggYmVuZWZpdCAoYCMyNzE5IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3MTk+YF8pCi0KLS0gSW50ZXJuYWwgcmVm
YWN0b3I6IHNpbXBsaWZ5IGFzY2lpIHN0cmluZyBlc2NhcGluZyBieSB1c2luZyB0aGUKLSAgYmFj
a3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyIGluIG5ld2VyIFB5dGhvbiAzIHZlcnNpb25zLiAo
YCMyNzM0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3
MzQ+YF8pCi0KLS0gUmVtb3ZlIHVubmVjZXNzYXJ5IG1hcmsgZXZhbHVhdG9yIGluIHVuaXR0ZXN0
IHBsdWdpbiAoYCMyNzY3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI3Njc+YF8pCi0KLS0gQ2FsbHMgdG8gYGBNZXRhZnVuYy5hZGRjYWxsYGAgbm93IGVt
aXQgYSBkZXByZWNhdGlvbiB3YXJuaW5nLiBUaGlzIGZ1bmN0aW9uCi0gIGlzIHNjaGVkdWxlZCB0
byBiZSByZW1vdmVkIGluIGBgcHl0ZXN0LTQuMGBgLiAoYCMyODc2Ci0gIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4NzY+YF8pCi0KLS0gSW50ZXJuYWwgbW92
ZSBvZiB0aGUgcGFyYW1ldGVyc2V0IGV4dHJhY3Rpb24gdG8gYSBtb3JlIG1haW50YWluYWJsZSBw
bGFjZS4KLSAgKGAjMjg3NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yODc3PmBfKQotCi0tIEludGVybmFsIHJlZmFjdG9yaW5nIHRvIHNpbXBsaWZ5IHNjb3Bl
IG5vZGUgbG9va3VwLiAoYCMyOTEwCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI5MTA+YF8pCi0KLS0gQ29uZmlndXJlIGBgcHl0ZXN0YGAgdG8gcHJldmVu
dCBwaXAgZnJvbSBpbnN0YWxsaW5nIHB5dGVzdCBpbiB1bnN1cHBvcnRlZAotICBQeXRob24gdmVy
c2lvbnMuIChgIzI5MjIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjkyMj5gXykKLQotCi1QeXRlc3QgMy4yLjUgKDIwMTctMTEtMTUpCi09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gUmVtb3ZlIGBgcHk8
MS41YGAgcmVzdHJpY3Rpb24gZnJvbSBgYHB5dGVzdGBgIGFzIHRoaXMgY2FuIGNhdXNlIHZlcnNp
b24KLSAgY29uZmxpY3RzIGluIHNvbWUgaW5zdGFsbGF0aW9ucy4gKGAjMjkyNgotICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTI2PmBfKQotCi0KLVB5dGVz
dCAzLjIuNCAoMjAxNy0xMS0xMykKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotQnVnIEZp
eGVzCi0tLS0tLS0tLS0KLQotLSBGaXggdGhlIGJ1ZyB3aGVyZSBydW5uaW5nIHdpdGggYGAtLXB5
YXJnc2BgIHdpbGwgcmVzdWx0IGluIGl0ZW1zIHdpdGgKLSAgZW1wdHkgYGBwYXJlbnQubm9kZWlk
YGAgaWYgcnVuIGZyb20gYSBkaWZmZXJlbnQgcm9vdCBkaXJlY3RvcnkuIChgIzI3NzUKLSAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc3NT5gXykKLQotLSBG
aXggaXNzdWUgd2l0aCBgYEBweXRlc3QucGFyYW1ldHJpemVgYCBpZiBhcmduYW1lcyB3YXMgc3Bl
Y2lmaWVkIGFzIGtleXdvcmQgYXJndW1lbnRzLgotICAoYCMyODE5IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4MTk+YF8pCi0KLS0gU3RyaXAgd2hpdGVzcGFj
ZSBmcm9tIG1hcmtlciBuYW1lcyB3aGVuIHJlYWRpbmcgdGhlbSBmcm9tIElOSSBjb25maWcuIChg
IzI4NTYKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg1
Nj5gXykKLQotLSBTaG93IGZ1bGwgY29udGV4dCBvZiBkb2N0ZXN0IHNvdXJjZSBpbiB0aGUgcHl0
ZXN0IG91dHB1dCwgaWYgdGhlIGxpbmUgbnVtYmVyIG9mCi0gIGZhaWxlZCBleGFtcGxlIGluIHRo
ZSBkb2NzdHJpbmcgaXMgPCA5LiAoYCMyODgyCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI4ODI+YF8pCi0KLS0gTWF0Y2ggZml4dHVyZSBwYXRocyBhZ2Fp
bnN0IGFjdHVhbCBwYXRoIHNlZ21lbnRzIGluIG9yZGVyIHRvIGF2b2lkIG1hdGNoaW5nIGZvbGRl
cnMgd2hpY2ggc2hhcmUgYSBwcmVmaXguCi0gIChgIzI4MzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjgzNj5gXykKLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlv
bgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEludHJvZHVjZSBhIGRlZGljYXRlZCBzZWN0
aW9uIGFib3V0IGNvbmZ0ZXN0LnB5LiAoYCMxNTA1Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1MDU+YF8pCi0KLS0gRXhwbGljaXRseSBtZW50aW9uIGBg
eHBhc3NgYCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgYHhmYWlsYGAuIChgIzE5OTcKLSAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk5Nz5gXykKLQotLSBB
cHBlbmQgZXhhbXBsZSBmb3IgcHl0ZXN0LnBhcmFtIGluIHRoZSBleGFtcGxlL3BhcmFtZXRyaXpl
IGRvY3VtZW50LiAoYCMyNjU4Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI2NTg+YF8pCi0KLS0gQ2xhcmlmeSBsYW5ndWFnZSBvZiBwcm9wb3NhbCBmb3Ig
Zml4dHVyZXMgcGFyYW1ldGVycyAoYCMyODkzCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI4OTM+YF8pCi0KLS0gTGlzdCBweXRob24gMy42IGluIHRoZSBk
b2N1bWVudGVkIHN1cHBvcnRlZCB2ZXJzaW9ucyBpbiB0aGUgZ2V0dGluZyBzdGFydGVkCi0gIGRv
Y3VtZW50LiAoYCMyOTAzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzI5MDM+YF8pCi0KLS0gQ2xhcmlmeSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhdmFpbGFibGUg
Zml4dHVyZSBzY29wZXMuIChgIzUzOAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81Mzg+YF8pCi0KLS0gQWRkIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIGBg
cHl0aG9uIC1tIHB5dGVzdGBgIGludm9jYXRpb24gYWRkaW5nIHRoZQotICBjdXJyZW50IGRpcmVj
dG9yeSB0byBzeXMucGF0aC4gKGAjOTExCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzkxMT5gXykKLQotCi1QeXRlc3QgMy4yLjMgKDIwMTctMTAtMDMpCi09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gRml4
IGNyYXNoIGluIHRhYiBjb21wbGV0aW9uIHdoZW4gbm8gcHJlZml4IGlzIGdpdmVuLiAoYCMyNzQ4
Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NDg+YF8p
Ci0KLS0gVGhlIGVxdWFsaXR5IGNoZWNraW5nIGZ1bmN0aW9uIChgYF9fZXFfX2BgKSBvZiBgYE1h
cmtEZWNvcmF0b3JgYCByZXR1cm5zCi0gIGBgRmFsc2VgYCBpZiBvbmUgb2JqZWN0IGlzIG5vdCBh
biBpbnN0YW5jZSBvZiBgYE1hcmtEZWNvcmF0b3JgYC4gKGAjMjc1OAotICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzU4PmBfKQotCi0tIFdoZW4gcnVubmlu
ZyBgYHB5dGVzdCAtLWZpeHR1cmVzLXBlci10ZXN0YGA6IGRvbid0IGNyYXNoIGlmIGFuIGl0ZW0g
aGFzIG5vCi0gIF9maXh0dXJlaW5mbyBhdHRyaWJ1dGUgKGUuZy4gZG9jdGVzdHMpIChgIzI3ODgK
LSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc4OD5gXykK
LQotCi1JbXByb3ZlZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0g
SW4gaGVscCB0ZXh0IG9mIGBgLWtgYCBvcHRpb24sIGFkZCBleGFtcGxlIG9mIHVzaW5nIGBgbm90
YGAgdG8gbm90IHNlbGVjdAotICBjZXJ0YWluIHRlc3RzIHdob3NlIG5hbWVzIG1hdGNoIHRoZSBw
cm92aWRlZCBleHByZXNzaW9uLiAoYCMxNDQyCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzE0NDI+YF8pCi0KLS0gQWRkIG5vdGUgaW4gYGBwYXJhbWV0cml6
ZS5yc3RgYCBhYm91dCBjYWxsaW5nIGBgbWV0YWZ1bmMucGFyYW1ldHJpemVgYAotICBtdWx0aXBs
ZSB0aW1lcy4gKGAjMTU0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNTQ4PmBfKQotCi0KLVRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLS0gU2V0IGBgeGZhaWxfc3RyaWN0PVRydWVgYCBpbiBweXRlc3QncyBv
d24gdGVzdCBzdWl0ZSB0byBjYXRjaCBleHBlY3RlZAotICBmYWlsdXJlcyBhcyBzb29uIGFzIHRo
ZXkgc3RhcnQgdG8gcGFzcy4gKGAjMjcyMgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNzIyPmBfKQotCi0tIEZpeCB0eXBvIGluIGV4YW1wbGUgb2YgcGFz
c2luZyBhIGNhbGxhYmxlIHRvIG1hcmtlcnMgKGluIGV4YW1wbGUvbWFya2Vycy5yc3QpCi0gIChg
IzI3NjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc2NT5g
XykKLQotCi1QeXRlc3QgMy4yLjIgKDIwMTctMDktMDYpCi09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gQ2FsbGluZyB0aGUgZGVwcmVjYXRlZCBg
cmVxdWVzdC5nZXRmdW5jYXJndmFsdWUoKWAgbm93IHNob3dzIHRoZSBzb3VyY2Ugb2YKLSAgdGhl
IGNhbGwuIChgIzI2ODEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjY4MT5gXykKLQotLSBBbGxvdyB0ZXN0cyBkZWNsYXJlZCBhcyBgYEBzdGF0aWNtZXRob2Rg
YCB0byB1c2UgZml4dHVyZXMuIChgIzI2OTkKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjY5OT5gXykKLQotLSBGaXhlZCBlZGdlLWNhc2UgZHVyaW5nIGNv
bGxlY3Rpb246IGF0dHJpYnV0ZXMgd2hpY2ggcmFpc2VkIGBgcHl0ZXN0LmZhaWxgYAotICB3aGVu
IGFjY2Vzc2VkIHdvdWxkIGFib3J0IHRoZSBlbnRpcmUgY29sbGVjdGlvbi4gKGAjMjcwNwotICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzA3PmBfKQotCi0t
IEZpeCBgYFJlcHJGdW5jQXJnc2BgIHdpdGggbWl4ZWQgdW5pY29kZSBhbmQgVVRGLTggYXJncy4g
KGAjMjczMQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
NzMxPmBfKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotLSBJbiBleGFtcGxlcyBvbiB3b3JraW5nIHdpdGggY3VzdG9tIG1hcmtlcnMsIGFkZCBl
eGFtcGxlcyBkZW1vbnN0cmF0aW5nIHRoZQotICB1c2FnZSBvZiBgYHB5dGVzdC5tYXJrLk1BUktF
Ul9OQU1FLndpdGhfYXJnc2BgIGluIGNvbXBhcmlzb24gd2l0aAotICBgYHB5dGVzdC5tYXJrLk1B
UktFUl9OQU1FLl9fY2FsbF9fYGAgKGAjMjYwNAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjA0PmBfKQotCi0tIEluIG9uZSBvZiB0aGUgc2ltcGxlIGV4
YW1wbGVzLCB1c2UgYHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKClgIHRvIHNraXAKLSAg
dGVzdHMgYmFzZWQgb24gYSBjb21tYW5kLWxpbmUgb3B0aW9uLCBhbGxvd2luZyBpdHMgc2hhcmlu
ZyB3aGlsZSBwcmV2ZW50aW5nIGEKLSAgdXNlciBlcnJvciB3aGVuIGFjZXNzaW5nIGBweXRlc3Qu
Y29uZmlnYCBiZWZvcmUgdGhlIGFyZ3VtZW50IHBhcnNpbmcuIChgIzI2NTMKLSAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY1Mz5gXykKLQotCi1Ucml2aWFs
L0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEZpeGVkIG1p
bm9yIGVycm9yIGluICdHb29kIFByYWN0aWNlcy9NYW51YWwgSW50ZWdyYXRpb24nIGNvZGUgc25p
cHBldC4KLSAgKGAjMjY5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yNjkxPmBfKQotCi0tIEZpeGVkIHR5cG8gaW4gZ29vZHByYWN0aWNlcy5yc3QuIChgIzI3
MjEKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjcyMT5g
XykKLQotLSBJbXByb3ZlIHVzZXIgZ3VpZGFuY2UgcmVnYXJkaW5nIGBgLS1yZXN1bHRsb2dgYCBk
ZXByZWNhdGlvbi4gKGAjMjczOQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNzM5PmBfKQotCi0KLVB5dGVzdCAzLjIuMSAoMjAxNy0wOC0wOCkKLT09PT09
PT09PT09PT09PT09PT09PT09PT0KLQotQnVnIEZpeGVzCi0tLS0tLS0tLS0KLQotLSBGaXhlZCBz
bWFsbCB0ZXJtaW5hbCBnbGl0Y2ggd2hlbiBjb2xsZWN0aW5nIGEgc2luZ2xlIHRlc3QgaXRlbS4g
KGAjMjU3OQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
NTc5PmBfKQotCi0tIENvcnJlY3RseSBjb25zaWRlciBgYC9gYCBhcyB0aGUgZmlsZSBzZXBhcmF0
b3IgdG8gYXV0b21hdGljYWxseSBtYXJrIHBsdWdpbgotICBmaWxlcyBmb3IgcmV3cml0ZSBvbiBX
aW5kb3dzLiAoYCMyNTkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYvcHl0ZXN0
L2lzc3Vlcy8yNTkxPmBfKQotCi0tIFByb3Blcmx5IGVzY2FwZSB0ZXN0IG5hbWVzIHdoZW4gc2V0
dGluZyBgYFBZVEVTVF9DVVJSRU5UX1RFU1RgYCBlbnZpcm9ubWVudAotICB2YXJpYWJsZS4gKGAj
MjY0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjQ0PmBf
KQotCi0tIEZpeCBlcnJvciBvbiBXaW5kb3dzIGFuZCBQeXRob24gMy42KyB3aGVuIGBgc3lzLnN0
ZG91dGBgIGhhcyBiZWVuIHJlcGxhY2VkCi0gIHdpdGggYSBzdHJlYW0tbGlrZSBvYmplY3Qgd2hp
Y2ggZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGBgaW9gYCBtb2R1bGUKLSAgYnVmZmVyIHBy
b3RvY29sLiBJbiBwYXJ0aWN1bGFyIHRoaXMgYWZmZWN0cyBgYHB5dGVzdC14ZGlzdGBgIHVzZXJz
IG9uIHRoZQotICBhZm9yZW1lbnRpb25lZCBwbGF0Zm9ybS4gKGAjMjY2NiA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjY2Nj5gXykKLQotCi1JbXByb3Zl
ZCBEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gRXhwbGljaXRseSBk
b2N1bWVudCB3aGljaCBweXRlc3QgZmVhdHVyZXMgd29yayB3aXRoIGBgdW5pdHRlc3RgYC4gKGAj
MjYyNgotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjI2
PmBfKQotCi0KLVB5dGVzdCAzLjIuMCAoMjAxNy0wNy0zMCkKLT09PT09PT09PT09PT09PT09PT09
PT09PT0KLQotRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0tIGBgcHl0ZXN0LmFwcHJveGBgIG5vIGxvbmdlciBzdXBwb3J0cyBgYD5gYCwgYGA+
PWBgLCBgYDxgYCBhbmQgYGA8PWBgCi0gIG9wZXJhdG9ycyB0byBhdm9pZCBzdXJwcmlzaW5nL2lu
Y29uc2lzdGVudCBiZWhhdmlvci4gU2VlIGB0aGUgYXBwcm94IGRvY3MKLSAgPGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL2xhdGVzdC9idWlsdGluLmh0bWwjcHl0ZXN0LmFwcHJveD5gXyBmb3Ig
bW9yZQotICBpbmZvcm1hdGlvbi4gKGAjMjAwMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yMDAzPmBfKQotCi0tIEFsbCBvbGQtc3R5bGUgc3BlY2lmaWMgYmVo
YXZpb3IgaW4gY3VycmVudCBjbGFzc2VzIGluIHRoZSBweXRlc3QncyBBUEkgaXMKLSAgY29uc2lk
ZXJlZCBkZXByZWNhdGVkIGF0IHRoaXMgcG9pbnQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1
dHVyZSByZWxlYXNlLgotICBUaGlzIGFmZmVjdHMgUHl0aG9uIDIgdXNlcnMgb25seSBhbmQgaW4g
cmFyZSBzaXR1YXRpb25zLiAoYCMyMTQ3Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzIxNDc+YF8pCi0KLS0gQSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIG5v
dyByYWlzZWQgd2hlbiB1c2luZyBtYXJrcyBmb3IgcGFyYW1ldGVycwotICBpbiBgYHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplYGAuIFVzZSBgYHB5dGVzdC5wYXJhbWBgIHRvIGFwcGx5IG1hcmtzIHRv
Ci0gIHBhcmFtZXRlcnMgaW5zdGVhZC4gKGAjMjQyNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDI3PmBfKQotCi0KLUZlYXR1cmVzCi0tLS0tLS0tLQotCi0t
IEFkZCBzdXBwb3J0IGZvciBudW1weSBhcnJheXMgKGFuZCBkaWN0cykgdG8gYXBwcm94LiAoYCMx
OTk0Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5OTQ+
YF8pCi0KLS0gTm93IHRlc3QgZnVuY3Rpb24gb2JqZWN0cyBoYXZlIGEgYGBweXRlc3RtYXJrYGAg
YXR0cmlidXRlIGNvbnRhaW5pbmcgYSBsaXN0Ci0gIG9mIG1hcmtzIGFwcGxpZWQgZGlyZWN0bHkg
dG8gdGhlIHRlc3QgZnVuY3Rpb24sIGFzIG9wcG9zZWQgdG8gbWFya3MgaW5oZXJpdGVkCi0gIGZy
b20gcGFyZW50IGNsYXNzZXMgb3IgbW9kdWxlcy4gKGAjMjUxNiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjUxNj5gXykKLQotLSBDb2xsZWN0aW9uIGln
bm9yZXMgbG9jYWwgdmlydHVhbGVudnMgYnkgZGVmYXVsdDsgYC0tY29sbGVjdC1pbi12aXJ0dWFs
ZW52YAotICBvdmVycmlkZXMgdGhpcyBiZWhhdmlvci4gKGAjMjUxOCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9pc3N1ZXMvMjUxOD5gXykKLQotLSBBbGxvdyBjbGFz
cyBtZXRob2RzIGRlY29yYXRlZCBhcyBgYEBzdGF0aWNtZXRob2RgYCB0byBiZSBjYW5kaWRhdGVz
IGZvcgotICBjb2xsZWN0aW9uIGFzIGEgdGVzdCBmdW5jdGlvbi4gKE9ubHkgZm9yIFB5dGhvbiAy
LjcgYW5kIGFib3ZlLiBQeXRob24gMi42Ci0gIHdpbGwgc3RpbGwgaWdub3JlIHN0YXRpYyBtZXRo
b2RzLikgKGAjMjUyOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVzdC9p
c3N1ZXMvMjUyOD5gXykKLQotLSBJbnRyb2R1Y2UgYGBtYXJrLndpdGhfYXJnc2BgIGluIG9yZGVy
IHRvIGFsbG93IHBhc3NpbmcgZnVuY3Rpb25zL2NsYXNzZXMgYXMKLSAgc29sZSBhcmd1bWVudCB0
byBtYXJrcy4gKGAjMjU0MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KLSAgZGV2L3B5dGVz
dC9pc3N1ZXMvMjU0MD5gXykKLQotLSBOZXcgYGBjYWNoZV9kaXJgYCBpbmkgb3B0aW9uOiBzZXRz
IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGNvbnRlbnRzIG9mIHRoZQotICBjYWNoZSBwbHVnaW4g
YXJlIHN0b3JlZC4gRGlyZWN0b3J5IG1heSBiZSByZWxhdGl2ZSBvciBhYnNvbHV0ZSBwYXRoOiBp
ZiByZWxhdGl2ZSBwYXRoLCB0aGVuCi0gIGRpcmVjdG9yeSBpcyBjcmVhdGVkIHJlbGF0aXZlIHRv
IGBgcm9vdGRpcmBgLCBvdGhlcndpc2UgaXQgaXMgdXNlZCBhcyBpcy4KLSAgQWRkaXRpb25hbGx5
IHBhdGggbWF5IGNvbnRhaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIGFyZSBleHBhbmRl
ZCBkdXJpbmcKLSAgcnVudGltZS4gKGAjMjU0MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNTQzPmBfKQotCi0tIEludHJvZHVjZSB0aGUgYGBQWVRFU1RfQ1VS
UkVOVF9URVNUYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBpcyBzZXQgd2l0aAotICB0aGUg
YGBub2RlaWRgYCBhbmQgc3RhZ2UgKGBgc2V0dXBgYCwgYGBjYWxsYGAgYW5kIGBgdGVhcmRvd25g
YCkgb2YgdGhlIHRlc3QKLSAgYmVpbmcgY3VycmVudGx5IGV4ZWN1dGVkLiBTZWUgdGhlIGBkb2N1
bWVudGF0aW9uCi0gIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvZXhhbXBsZS9z
aW1wbGUuaHRtbCNweXRlc3QtY3VycmVudC10ZXN0LQotICBlbnZpcm9ubWVudC12YXJpYWJsZT5g
XyBmb3IgbW9yZSBpbmZvLiAoYCMyNTgzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBk
ZXYvcHl0ZXN0L2lzc3Vlcy8yNTgzPmBfKQotCi0tIEludHJvZHVjZWQgYGBAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3NgYCBtYXJrIHdoaWNoIGFsbG93cyBvdmVyd3JpdGluZyB0aGUKLSAgd2Fy
bmluZ3MgZmlsdGVyIG9uIGEgcGVyIHRlc3QsIGNsYXNzIG9yIG1vZHVsZSBsZXZlbC4gU2VlIHRo
ZSBgZG9jcwotICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dhcm5pbmdzLmh0
bWwjcHl0ZXN0LW1hcmstCi0gIGZpbHRlcndhcm5pbmdzPmBfIGZvciBtb3JlIGluZm9ybWF0aW9u
LiAoYCMyNTk4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYvcHl0ZXN0L2lzc3Vl
cy8yNTk4PmBfKQotCi0tIGBgLS1sYXN0LWZhaWxlZGBgIG5vdyByZW1lbWJlcnMgZm9yZXZlciB3
aGVuIGEgdGVzdCBoYXMgZmFpbGVkIGFuZCBvbmx5Ci0gIGZvcmdldHMgaXQgaWYgaXQgcGFzc2Vz
IGFnYWluLiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gZml4IGEgdGVzdCBzdWl0ZSBieQotICBzZWxl
Y3RpdmVseSBydW5uaW5nIGZpbGVzIGFuZCBmaXhpbmcgdGVzdHMgaW5jcmVtZW50YWxseS4gKGAj
MjYyMQotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjIx
PmBfKQotCi0tIE5ldyBgYHB5dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZpbmlzaGBgIGhvb2sgd2hp
Y2ggYWxsb3dzIHBsdWdpbnMgdG8gYWRkCi0gIG1lc3NhZ2VzIHRvIHRoZSB0ZXJtaW5hbCByZXBv
cnRpbmcgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgYmVlbiBmaW5pc2hlZAotICBzdWNjZXNzZnVsbHku
IChgIzI2MjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYy
Mj5gXykKLQotLSBBZGRlZCBzdXBwb3J0IGZvciBgUEVQLTQxNSdzIDxodHRwczovL3d3dy5weXRo
b24ub3JnL2Rldi9wZXBzL3BlcC0wNDE1Lz5gXwotICBgYEV4Y2VwdGlvbi5fX3N1cHByZXNzX2Nv
bnRleHRfX2BgLiBOb3cgaWYgYSBgYHJhaXNlIGV4Y2VwdGlvbiBmcm9tIE5vbmVgYCBpcwotICBj
YXVnaHQgYnkgcHl0ZXN0LCBweXRlc3Qgd2lsbCBubyBsb25nZXIgY2hhaW4gdGhlIGNvbnRleHQg
aW4gdGhlIHRlc3QgcmVwb3J0LgotICBUaGUgYmVoYXZpb3Igbm93IG1hdGNoZXMgUHl0aG9uJ3Mg
dHJhY2ViYWNrIGJlaGF2aW9yLiAoYCMyNjMxCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI2MzE+YF8pCi0KLS0gRXhjZXB0aW9ucyByYWlzZWQgYnkgYGBw
eXRlc3QuZmFpbGBgLCBgYHB5dGVzdC5za2lwYGAgYW5kIGBgcHl0ZXN0LnhmYWlsYGAKLSAgbm93
IHN1YmNsYXNzIEJhc2VFeGNlcHRpb24sIG1ha2luZyB0aGVtIGhhcmRlciB0byBiZSBjYXVnaHQg
dW5pbnRlbnRpb25hbGx5Ci0gIGJ5IG5vcm1hbCBjb2RlLiAoYCM1ODAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTgwPmBfKQotCi0KLUJ1ZyBGaXhlcwotLS0t
LS0tLS0tCi0KLS0gU2V0IGBgc3RkaW5gYCB0byBhIGNsb3NlZCBgYFBJUEVgYCBpbiBgYHB5dGVz
dGVyLnB5LlRlc3RkaXIucG9wZW4oKWBgIGZvcgotICBhdm9pZCB1bndhbnRlZCBpbnRlcmFjdGl2
ZSBgYHBkYmBgIChgIzIwMjMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0gIGRldi9weXRl
c3QvaXNzdWVzLzIwMjM+YF8pCi0KLS0gQWRkIG1pc3NpbmcgYGBlbmNvZGluZ2BgIGF0dHJpYnV0
ZSB0byBgYHN5cy5zdGQqYGAgc3RyZWFtcyB3aGVuIHVzaW5nCi0gIGBgY2Fwc3lzYGAgY2FwdHVy
ZSBtb2RlLiAoYCMyMzc1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYvcHl0ZXN0
L2lzc3Vlcy8yMzc1PmBfKQotCi0tIEZpeCB0ZXJtaW5hbCBjb2xvciBjaGFuZ2luZyB0byBibGFj
ayBvbiBXaW5kb3dzIGlmIGBgY29sb3JhbWFgYCBpcyBpbXBvcnRlZAotICBpbiBhIGBgY29uZnRl
c3QucHlgYCBmaWxlLiAoYCMyNTEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYv
cHl0ZXN0L2lzc3Vlcy8yNTEwPmBfKQotCi0tIEZpeCBsaW5lIG51bWJlciB3aGVuIHJlcG9ydGlu
ZyBzdW1tYXJ5IG9mIHNraXBwZWQgdGVzdHMuIChgIzI1NDgKLSAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU0OD5gXykKLQotLSBjYXB0dXJlOiBlbnN1cmUg
dGhhdCBFbmNvZGVkRmlsZS5uYW1lIGlzIGEgc3RyaW5nLiAoYCMyNTU1Ci0gIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1NTU+YF8pCi0KLS0gVGhlIG9wdGlv
bnMgYGAtLWZpeHR1cmVzYGAgYW5kIGBgLS1maXh0dXJlcy1wZXItdGVzdGBgIHdpbGwgbm93IGtl
ZXAKLSAgaW5kZW50YXRpb24gd2l0aGluIGRvY3N0cmluZ3MuIChgIzI1NzQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtCi0gIGRldi9weXRlc3QvaXNzdWVzLzI1NzQ+YF8pCi0KLS0gZG9jdGVz
dHMgbGluZSBudW1iZXJzIGFyZSBub3cgcmVwb3J0ZWQgY29ycmVjdGx5LCBmaXhpbmcgYHB5dGVz
dC1zdWdhciMxMjIKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9Gcm96ZW5iYWxsL3B5dGVzdC1zdWdh
ci9pc3N1ZXMvMTIyPmBfLiAoYCMyNjEwCi0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI2MTA+YF8pCi0KLS0gRml4IG5vbi1kZXRlcm1pbmlzbSBpbiBvcmRl
ciBvZiBmaXh0dXJlIGNvbGxlY3Rpb24uIEFkZHMgbmV3IGRlcGVuZGVuY3kKLSAgKG9yZGVyZWRk
aWN0KSBmb3IgUHl0aG9uIDIuNi4gKGAjOTIwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQot
ICBkZXYvcHl0ZXN0L2lzc3Vlcy85MjA+YF8pCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIENsYXJpZnkgYGBweXRlc3RfY29uZmlndXJlYGAg
aG9vayBjYWxsIG9yZGVyLiAoYCMyNTM5Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI1Mzk+YF8pCi0KLS0gRXh0ZW5kIGRvY3VtZW50YXRpb24gZm9yIHRl
c3RpbmcgcGx1Z2luIGNvZGUgd2l0aCB0aGUgYGBweXRlc3RlcmBgIHBsdWdpbi4KLSAgKGAjOTcx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzk3MT5gXykKLQot
Ci1Ucml2aWFsL0ludGVybmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0t
IFVwZGF0ZSBoZWxwIG1lc3NhZ2UgZm9yIGBgLS1zdHJpY3RgYCB0byBtYWtlIGl0IGNsZWFyIGl0
IG9ubHkgZGVhbHMgd2l0aAotICB1bnJlZ2lzdGVyZWQgbWFya2Vycywgbm90IHdhcm5pbmdzLiAo
YCMyNDQ0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQotICBkZXYvcHl0ZXN0L2lzc3Vlcy8y
NDQ0PmBfKQotCi0tIEludGVybmFsIGNvZGUgbW92ZTogbW92ZSBjb2RlIGZvciBweXRlc3QuYXBw
cm94L3B5dGVzdC5yYWlzZXMgdG8gb3duIGZpbGVzIGluCi0gIG9yZGVyIHRvIGN1dCBkb3duIHRo
ZSBzaXplIG9mIHB5dGhvbi5weSAoYCMyNDg5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQot
ICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNDg5PmBfKQotCi0tIFJlbmFtZWQgdGhlIHV0aWxpdHkgZnVu
Y3Rpb24gYGBfcHl0ZXN0LmNvbXBhdC5fZXNjYXBlX3N0cmluZ3NgYCB0bwotICBgYF9hc2NpaV9l
c2NhcGVkYGAgdG8gYmV0dGVyIGNvbW11bmljYXRlIHRoZSBmdW5jdGlvbidzIHB1cnBvc2UuIChg
IzI1MzMKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjUz
Mz5gXykKLQotLSBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIENvbGxlY3RFcnJvciB3aXRoIHNr
aXAvc2tpcGlmLiAoYCMyNTQ2Ci0gIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI1NDY+YF8pCi0KLS0gRW1pdCB3YXJuaW5nIGFib3V0IGBgeWllbGRgYCB0ZXN0
cyBiZWluZyBkZXByZWNhdGVkIG9ubHkgb25jZSBwZXIgZ2VuZXJhdG9yLgotICAoYCMyNTYyIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1NjI+YF8pCi0KLS0g
RW5zdXJlIGZpbmFsIGNvbGxlY3RlZCBsaW5lIGRvZXNuJ3QgaW5jbHVkZSBhcnRpZmFjdHMgb2Yg
cHJldmlvdXMgd3JpdGUuCi0gIChgIzI1NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjU3MT5gXykKLQotLSBGaXhlZCBhbGwgZmxha2U4IGVycm9ycyBhbmQg
d2FybmluZ3MuIChgIzI1ODEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCi0gIGRldi9weXRl
c3QvaXNzdWVzLzI1ODE+YF8pCi0KLS0gQWRkZWQgYGBmaXgtbGludGBgIHRveCBlbnZpcm9ubWVu
dCB0byBydW4gYXV0b21hdGljIHBlcDggZml4ZXMgb24gdGhlIGNvZGUuCi0gIChgIzI1ODIgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU4Mj5gXykKLQotLSBU
dXJuIHdhcm5pbmdzIGludG8gZXJyb3JzIGluIHB5dGVzdCdzIG93biB0ZXN0IHN1aXRlIGluIG9y
ZGVyIHRvIGNhdGNoCi0gIHJlZ3Jlc3Npb25zIGR1ZSB0byBkZXByZWNhdGlvbnMgbW9yZSBwcm9t
cHRseS4gKGAjMjU4OAotICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yNTg4PmBfKQotCi0tIFNob3cgbXVsdGlwbGUgaXNzdWUgbGlua3MgaW4gQ0hBTkdFTE9H
IGVudHJpZXMuIChgIzI2MjAKLSAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjYyMD5gXykKLQotCi1QeXRlc3QgMy4xLjMgKDIwMTctMDctMDMpCi09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gRml4IGRlY29k
ZSBlcnJvciBpbiBQeXRob24gMiBmb3IgZG9jdGVzdHMgaW4gZG9jc3RyaW5ncy4gKGAjMjQzNAot
ICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDM0PmBfKQot
Ci0tIEV4Y2VwdGlvbnMgcmFpc2VkIGR1cmluZyB0ZWFyZG93biBieSBmaW5hbGl6ZXJzIGFyZSBu
b3cgc3VwcHJlc3NlZCB1bnRpbCBhbGwKLSAgZmluYWxpemVycyBhcmUgY2FsbGVkLCB3aXRoIHRo
ZSBpbml0aWFsIGV4Y2VwdGlvbiByZXJhaXNlZC4gKGAjMjQ0MAotICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDQwPmBfKQotCi0tIEZpeCBpbmNvcnJlY3Qg
ImNvbGxlY3RlZCBpdGVtcyIgcmVwb3J0IHdoZW4gc3BlY2lmeWluZyB0ZXN0cyBvbiB0aGUgY29t
bWFuZC0KLSAgbGluZS4gKGAjMjQ2NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNDY0PmBfKQotCi0tIGBgZGVwcmVjYXRlZF9jYWxsYGAgaW4gY29udGV4dC1t
YW5hZ2VyIGZvcm0gbm93IGNhcHR1cmVzIGRlcHJlY2F0aW9uIHdhcm5pbmdzCi0gIGV2ZW4gaWYg
dGhlIHNhbWUgd2FybmluZyBoYXMgYWxyZWFkeSBiZWVuIHJhaXNlZC4gQWxzbywgYGBkZXByZWNh
dGVkX2NhbGxgYAotICB3aWxsIGFsd2F5cyBwcm9kdWNlIHRoZSBzYW1lIGVycm9yIG1lc3NhZ2Ug
KHByZXZpb3VzbHkgaXQgd291bGQgcHJvZHVjZQotICBkaWZmZXJlbnQgbWVzc2FnZXMgaW4gY29u
dGV4dC1tYW5hZ2VyIHZzLiBmdW5jdGlvbi1jYWxsIG1vZGUpLiAoYCMyNDY5Ci0gIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0Njk+YF8pCi0KLS0gRml4IGlz
c3VlIHdoZXJlIHBhdGhzIGNvbGxlY3RlZCBieSBweXRlc3QgY291bGQgaGF2ZSB0cmlwbGUgbGVh
ZGluZyBgYC9gYAotICBjaGFyYWN0ZXJzLiAoYCMyNDc1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0NzU+YF8pCi0KLS0gRml4IGludGVybmFsIGVycm9yIHdo
ZW4gdHJ5aW5nIHRvIGRldGVjdCB0aGUgc3RhcnQgb2YgYSByZWN1cnNpdmUgdHJhY2ViYWNrLgot
ICAoYCMyNDg2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0
ODY+YF8pCi0KLQotSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0tIEV4cGxpY2l0bHkgc3RhdGUgZm9yIHdoaWNoIGhvb2tzIHRoZSBjYWxscyBzdG9wIGFm
dGVyIHRoZSBmaXJzdCBub24tTm9uZQotICByZXN1bHQuIChgIzI0OTMgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ5Mz5gXykKLQotCi1Ucml2aWFsL0ludGVy
bmFsIENoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIENyZWF0ZSBpbnZva2Ug
dGFza3MgZm9yIHVwZGF0aW5nIHRoZSB2ZW5kb3JlZCBwYWNrYWdlcy4gKGAjMjQ3NAotICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDc0PmBfKQotCi0tIFVw
ZGF0ZSBjb3B5cmlnaHQgZGF0ZXMgaW4gTElDRU5TRSwgUkVBRE1FLnJzdCBhbmQgaW4gdGhlIGRv
Y3VtZW50YXRpb24uCi0gIChgIzI0OTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjQ5OT5gXykKLQotCi1QeXRlc3QgMy4xLjIgKDIwMTctMDYtMDgpCi09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gUmVxdWly
ZWQgb3B0aW9ucyBhZGRlZCB2aWEgYGBweXRlc3RfYWRkb3B0aW9uYGAgd2lsbCBubyBsb25nZXIg
cHJldmVudCB1c2luZwotICAtLWhlbHAgd2l0aG91dCBwYXNzaW5nIHRoZW0uICgjMTk5OSkKLQot
LSBSZXNwZWN0IGBgcHl0aG9uX2ZpbGVzYGAgaW4gYXNzZXJ0aW9uIHJld3JpdGluZy4gKCMyMTIx
KQotCi0tIEZpeCByZWN1cnNpb24gZXJyb3IgZGV0ZWN0aW9uIHdoZW4gZnJhbWVzIGluIHRoZSB0
cmFjZWJhY2sgY29udGFpbiBvYmplY3RzCi0gIHRoYXQgY2FuJ3QgYmUgY29tcGFyZWQgKGxpa2Ug
YGBudW1weWBgIGFycmF5cykuICgjMjQ1OSkKLQotLSBgYFVuaWNvZGVXYXJuaW5nYGAgaXMgaXNz
dWVkIGZyb20gdGhlIGludGVybmFsIHB5dGVzdCB3YXJuaW5ncyBwbHVnaW4gb25seQotICB3aGVu
IHRoZSBtZXNzYWdlIGNvbnRhaW5zIG5vbi1hc2NpaSB1bmljb2RlIChQeXRob24gMiBvbmx5KS4g
KCMyNDYzKQotCi0tIEFkZGVkIGEgd29ya2Fyb3VuZCBmb3IgUHl0aG9uIDMuNiBgYFdpbmRvd3ND
b25zb2xlSU9gYCBicmVha2luZyBkdWUgdG8gUHl0ZXN0cydzCi0gIGBgRkRDYXB0dXJlYGAuIE90
aGVyIGNvZGUgdXNpbmcgY29uc29sZSBoYW5kbGVzIG1pZ2h0IHN0aWxsIGJlIGFmZmVjdGVkIGJ5
IHRoZQotICB2ZXJ5IHNhbWUgaXNzdWUgYW5kIG1pZ2h0IHJlcXVpcmUgZnVydGhlciB3b3JrYXJv
dW5kcy9maXhlcywgaS5lLiBgYGNvbG9yYW1hYGAuCi0gICgjMjQ2NykKLQotCi1JbXByb3ZlZCBE
b2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gRml4IGludGVybmFsIEFQ
SSBsaW5rcyB0byBgYHBsdWdneWBgIG9iamVjdHMuICgjMjMzMSkKLQotLSBNYWtlIGl0IGNsZWFy
IHRoYXQgYGBweXRlc3QueGZhaWxgYCBzdG9wcyB0ZXN0IGV4ZWN1dGlvbiBhdCB0aGUgY2FsbGlu
ZyBwb2ludAotICBhbmQgaW1wcm92ZSBvdmVyYWxsIGZsb3cgb2YgdGhlIGBgc2tpcHBpbmdgYCBk
b2NzLiAoIzgxMCkKLQotCi1QeXRlc3QgMy4xLjEgKDIwMTctMDUtMzApCi09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLS0gcHl0ZXN0IHdhcm5pbmcg
Y2FwdHVyZSBubyBsb25nZXIgb3ZlcnJpZGVzIGV4aXN0aW5nIHdhcm5pbmcgZmlsdGVycy4gVGhl
Ci0gIHByZXZpb3VzIGJlaGF2aW91ciB3b3VsZCBvdmVycmlkZSBhbGwgZmlsdGVycyBhbmQgY2F1
c2VkIHJlZ3Jlc3Npb25zIGluIHRlc3QKLSAgc3VpdGVzIHdoaWNoIGNvbmZpZ3VyZSB3YXJuaW5n
IGZpbHRlcnMgdG8gbWF0Y2ggdGhlaXIgbmVlZHMuIE5vdGUgdGhhdCBhcyBhCi0gIHNpZGUtZWZm
ZWN0IG9mIHRoaXMgaXMgdGhhdCBgYERlcHJlY2F0aW9uV2FybmluZ2BgIGFuZAotICBgYFBlbmRp
bmdEZXByZWNhdGlvbldhcm5pbmdgYCBhcmUgbm8gbG9uZ2VyIHNob3duIGJ5IGRlZmF1bHQuICgj
MjQzMCkKLQotLSBGaXggaXNzdWUgd2l0aCBub24tYXNjaWkgY29udGVudHMgaW4gZG9jdGVzdCB0
ZXh0IGZpbGVzLiAoIzI0MzQpCi0KLS0gRml4IGVuY29kaW5nIGVycm9ycyBmb3IgdW5pY29kZSB3
YXJuaW5ncyBpbiBQeXRob24gMi4gKCMyNDM2KQotCi0tIGBgcHl0ZXN0LmRlcHJlY2F0ZWRfY2Fs
bGBgIG5vdyBjYXB0dXJlcyBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYCBpbgotICBjb250
ZXh0IG1hbmFnZXIgZm9ybS4gKCMyNDQxKQotCi0KLUltcHJvdmVkIERvY3VtZW50YXRpb24KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBBZGRpdGlvbiBvZiB0b3duY3JpZXIgZm9yIGNoYW5n
ZWxvZyBtYW5hZ2VtZW50LiAoIzIzOTApCi0KLQotMy4xLjAgKDIwMTctMDUtMjIpCi09PT09PT09
PT09PT09PT09PT0KLQotCi1OZXcgRmVhdHVyZXMKLS0tLS0tLS0tLS0tLQotCi0qIFRoZSBgYHB5
dGVzdC13YXJuaW5nc2BgIHBsdWdpbiBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gdGhlIGNvcmUg
YW5kIG5vdyBgYHB5dGVzdGBgIGF1dG9tYXRpY2FsbHkKLSAgY2FwdHVyZXMgYW5kIGRpc3BsYXlz
IHdhcm5pbmdzIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3Qgc2Vzc2lvbi4KLQotICAuLiB3YXJuaW5n
OjoKLQotICAgIFRoaXMgZmVhdHVyZSBtYXkgZGlzcnVwdCB0ZXN0IHN1aXRlcyB3aGljaCBhcHBs
eSBhbmQgdHJlYXQgd2FybmluZ3MgdGhlbXNlbHZlcywgYW5kIGNhbiBiZQotICAgIGRpc2FibGVk
IGluIHlvdXIgYGBweXRlc3QuaW5pYGA6Ci0KLSAgICAuLiBjb2RlLWJsb2NrOjogaW5pCi0KLSAg
ICAgIFtweXRlc3RdCi0gICAgICBhZGRvcHRzID0gLXAgbm86d2FybmluZ3MKLQotICAgIFNlZSB0
aGUgYHdhcm5pbmdzIGRvY3VtZW50YXRpb24gcGFnZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vbGF0ZXN0L3dhcm5pbmdzLmh0bWw+YF8gZm9yIG1vcmUKLSAgICBpbmZvcm1hdGlvbi4KLQot
ICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBBZGRlZCBgYGp1bml0X3N1
aXRlX25hbWVgYCBpbmkgb3B0aW9uIHRvIHNwZWNpZnkgcm9vdCBgYDx0ZXN0c3VpdGU+YGAgbmFt
ZSBmb3IgSlVuaXQgWE1MIHJlcG9ydHMgKGAjNTMzYF8pLgotCi0qIEFkZGVkIGFuIGluaSBvcHRp
b24gYGBkb2N0ZXN0X2VuY29kaW5nYGAgdG8gc3BlY2lmeSB3aGljaCBlbmNvZGluZyB0byB1c2Ug
Zm9yIGRvY3Rlc3QgZmlsZXMuCi0gIFRoYW5rcyBgQHdoZWVyZGBfIGZvciB0aGUgUFIgKGAjMjEw
MWBfKS4KLQotKiBgYHB5dGVzdC53YXJuc2BgIG5vdyBjaGVja3MgZm9yIHN1YmNsYXNzIHJlbGF0
aW9uc2hpcCByYXRoZXIgdGhhbgotICBjbGFzcyBlcXVhbGl0eS4gVGhhbmtzIGBAbGVzdGV2ZWBf
IGZvciB0aGUgUFIgKGAjMjE2NmBfKQotCi0qIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyBhc3NlcnRz
IHRoYXQgdGhlIGVycm9yIG1lc3NhZ2UgbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXgKLSAgd2l0aCB0
aGUgYGBtYXRjaGBgIGtleXdvcmQgYXJndW1lbnQuIFRoYW5rcyBgQEtyaWVjaGlgXyBmb3IgdGhl
IFBSLgotCi0qIGBgcHl0ZXN0LnBhcmFtYGAgY2FuIGJlIHVzZWQgdG8gZGVjbGFyZSB0ZXN0IHBh
cmFtZXRlciBzZXRzIHdpdGggbWFya3MgYW5kIHRlc3QgaWRzLgotICBUaGFua3MgYEBSb25ueVBm
YW5uc2NobWlkdGBfIGZvciB0aGUgUFIuCi0KLQotQ2hhbmdlcwotLS0tLS0tLQotCi0qIHJlbW92
ZSBhbGwgaW50ZXJuYWwgdXNlcyBvZiBweXRlc3RfbmFtZXNwYWNlIGhvb2tzLAotICB0aGlzIGlz
IHRvIHByZXBhcmUgdGhlIHJlbW92YWwgb2YgcHJlbG9hZGNvbmZpZyBpbiBweXRlc3QgNC4wCi0g
IFRoYW5rcyB0byBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUi4KLQotKiBweXRlc3Qg
bm93IHdhcm5zIHdoZW4gYSBjYWxsYWJsZSBpZHMgcmFpc2VzIGluIGEgcGFyYW1ldHJpemVkIHRl
c3QuIFRoYW5rcyBgQGZvZ29gXyBmb3IgdGhlIFBSLgotCi0qIEl0IGlzIG5vdyBwb3NzaWJsZSB0
byBza2lwIHRlc3QgY2xhc3NlcyBmcm9tIGJlaW5nIGNvbGxlY3RlZCBieSBzZXR0aW5nIGEKLSAg
YGBfX3Rlc3RfX2BgIGF0dHJpYnV0ZSB0byBgYEZhbHNlYGAgaW4gdGhlIGNsYXNzIGJvZHkgKGAj
MjAwN2BfKS4gVGhhbmtzCi0gIHRvIGBAc3lyZWBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQGx3bWBf
IGZvciB0aGUgUFIuCi0KLSogQ2hhbmdlIGp1bml0eG1sLnB5IHRvIHByb2R1Y2UgcmVwb3J0cyB0
aGF0IGNvbXBseSB3aXRoIEp1bml0eG1sIHNjaGVtYS4KLSAgSWYgdGhlIHNhbWUgdGVzdCBmYWls
cyB3aXRoIGZhaWx1cmUgaW4gY2FsbCBhbmQgdGhlbiBlcnJvcnMgaW4gdGVhcmRvd24KLSAgd2Ug
c3BsaXQgdGVzdGNhc2UgZWxlbWVudCBpbnRvIHR3bywgb25lIGNvbnRhaW5pbmcgdGhlIGVycm9y
IGFuZCB0aGUgb3RoZXIKLSAgdGhlIGZhaWx1cmUuIChgIzIyMjhgXykgVGhhbmtzIHRvIGBAa2tv
dWtpb3VgXyBmb3IgdGhlIFBSLgotCi0qIFRlc3RjYXNlIHJlcG9ydHMgd2l0aCBhIGBgdXJsYGAg
YXR0cmlidXRlIHdpbGwgbm93IHByb3Blcmx5IHdyaXRlIHRoaXMgdG8ganVuaXR4bWwuCi0gIFRo
YW5rcyBgQGZ1c2hpYF8gZm9yIHRoZSBQUiAoYCMxODc0YF8pLgotCi0qIFJlbW92ZSBjb21tb24g
aXRlbXMgZnJvbSBkaWN0IGNvbXBhcmlzb24gb3V0cHV0IHdoZW4gdmVyYm9zaXR5PTEuIEFsc28g
dXBkYXRlCi0gIHRoZSB0cnVuY2F0aW9uIG1lc3NhZ2UgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQg
cHl0ZXN0IHRydW5jYXRlcyBhbGwKLSAgYXNzZXJ0aW9uIG1lc3NhZ2VzIGlmIHZlcmJvc2l0eSA8
IDIgKGAjMTUxMmBfKS4KLSAgVGhhbmtzIGBAbWF0dGR1Y2tgXyBmb3IgdGhlIFBSCi0KLSogYGAt
LXBkYmNsc2BgIG5vIGxvbmdlciBpbXBsaWVzIGBgLS1wZGJgYC4gVGhpcyBtYWtlcyBpdCBwb3Nz
aWJsZSB0byB1c2UKLSAgYGBhZGRvcHRzPS0tcGRiY2xzPW1vZHVsZS5Tb21lQ2xhc3NgYCBvbiBg
YHB5dGVzdC5pbmlgYC4gVGhhbmtzIGBAZGF2aWRzem90dGVuYF8gZm9yCi0gIHRoZSBQUiAoYCMx
OTUyYF8pLgotCi0qIGZpeCBgIzIwMTNgXzogdHVybiBSZWNvcmRlZFdhcm5pbmcgaW50byBgYG5h
bWVkdHVwbGVgYCwKLSAgdG8gZ2l2ZSBpdCBhIGNvbXByZWhlbnNpYmxlIHJlcHIgd2hpbGUgcHJl
dmVudGluZyB1bndhcnJhbnRlZCBtb2RpZmljYXRpb24uCi0KLSogZml4IGAjMjIwOGBfOiBlbnN1
cmUgYW4gaXRlcmF0aW9uIGxpbWl0IGZvciBfcHl0ZXN0LmNvbXBhdC5nZXRfcmVhbF9mdW5jLgot
ICBUaGFua3MgYEBSb25ueVBmYW5uc2NobWlkdGBfIGZvciB0aGUgcmVwb3J0IGFuZCBQUi4KLQot
KiBIb29rcyBhcmUgbm93IHZlcmlmaWVkIGFmdGVyIGNvbGxlY3Rpb24gaXMgY29tcGxldGUsIHJh
dGhlciB0aGFuIHJpZ2h0IGFmdGVyIGxvYWRpbmcgaW5zdGFsbGVkIHBsdWdpbnMuIFRoaXMKLSAg
bWFrZXMgaXQgZWFzeSB0byB3cml0ZSBob29rcyBmb3IgcGx1Z2lucyB3aGljaCB3aWxsIGJlIGxv
YWRlZCBkdXJpbmcgY29sbGVjdGlvbiwgZm9yIGV4YW1wbGUgdXNpbmcgdGhlCi0gIGBgcHl0ZXN0
X3BsdWdpbnNgYCBzcGVjaWFsIHZhcmlhYmxlIChgIzE4MjFgXykuCi0gIFRoYW5rcyBgQG5pY29k
ZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIE1vZGlmeSBgYHB5dGVzdF9tYWtlX3BhcmFtZXRyaXpl
X2lkKClgYCBob29rIHRvIGFjY2VwdCBgYGFyZ25hbWVgYCBhcyBhbgotICBhZGRpdGlvbmFsIHBh
cmFtZXRlci4KLSAgVGhhbmtzIGBAdW5zaWduZWRpbnRgXyBmb3IgdGhlIFBSLgotCi0qIEFkZCBg
YHZlbnZgYCB0byB0aGUgZGVmYXVsdCBgYG5vcmVjdXJzZWRpcnNgYCBzZXR0aW5nLgotICBUaGFu
a3MgYEBUaGUtQ29tcGlsZXJgXyBmb3IgdGhlIFBSLgotCi0qIGBgUGx1Z2luTWFuYWdlci5pbXBv
cnRfcGx1Z2luYGAgbm93IGFjY2VwdHMgdW5pY29kZSBwbHVnaW4gbmFtZXMgaW4gUHl0aG9uIDIu
Ci0gIFRoYW5rcyBgQHJldXRzaGFyYWJhbmlgXyBmb3IgdGhlIFBSLgotCi0qIGZpeCBgIzIzMDhg
XzogV2hlbiB1c2luZyBib3RoIGBgLS1sZmBgIGFuZCBgYC0tZmZgYCwgb25seSB0aGUgbGFzdCBm
YWlsZWQgdGVzdHMgYXJlIHJ1bi4KLSAgVGhhbmtzIGBAb2ppaWBfIGZvciB0aGUgUFIuCi0KLSog
UmVwbGFjZSBtaW5vci9wYXRjaCBsZXZlbCB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRvY3VtZW50
YXRpb24gd2l0aCBwbGFjZWhvbGRlcnMuCi0gIFRoaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VzIGNo
YW5nZS1ub2lzZSBhcyBkaWZmZXJlbnQgY29udHJpYnV0b3JzIHJlZ25lcmF0ZQotICB0aGUgZG9j
dW1lbnRhdGlvbiBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zLgotICBUaGFua3MgYEBSb25ueVBmYW5u
c2NobWlkdGBfIGZvciB0aGUgUFIuCi0KLSogZml4IGAjMjM5MWBfOiBjb25zaWRlciBweXRlc3Rf
cGx1Z2lucyBvbiBhbGwgcGx1Z2luIG1vZHVsZXMKLSAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1p
ZHRgXyBmb3IgdGhlIFBSLgotCi0KLUJ1ZyBGaXhlcwotLS0tLS0tLS0tCi0KLSogRml4IGBgQXR0
cmlidXRlRXJyb3JgYCBvbiBgYHN5cy5zdGRvdXQuYnVmZmVyYGAgLyBgYHN5cy5zdGRlcnIuYnVm
ZmVyYGAKLSAgd2hpbGUgdXNpbmcgYGBjYXBzeXNgYCBmaXh0dXJlIGluIHB5dGhvbiAzLiAoYCMx
NDA3YF8pLgotICBUaGFua3MgdG8gYEBhc290dGlsZWBfLgotCi0qIENoYW5nZSBjYXB0dXJlLnB5
J3MgYGBEb250UmVhZEZyb21JbnB1dGBgIGNsYXNzIHRvIHRocm93IGBgaW8uVW5zdXBwb3J0ZWRP
cGVyYXRpb25gYCBlcnJvcnMgcmF0aGVyCi0gIHRoYW4gVmFsdWVFcnJvcnMgaW4gdGhlIGBgZmls
ZW5vYGAgbWV0aG9kIChgIzIyNzZgXykuCi0gIFRoYW5rcyBgQG1ldGFzeW5gXyBhbmQgYEB2bGFk
LWRyYWdvc2BfIGZvciB0aGUgUFIuCi0KLSogRml4IGV4Y2VwdGlvbiBmb3JtYXR0aW5nIHdoaWxl
IGltcG9ydGluZyBtb2R1bGVzIHdoZW4gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCi0gIGNvbnRhaW5z
IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChgIzIzMzZgXykuCi0gIFRoYW5rcyBgQGZhYmlvemBfIGZv
ciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEFkZGVkIGRv
Y3VtZW50YXRpb24gcmVsYXRlZCB0byBpc3N1ZSAoYCMxOTM3YF8pCi0gIFRoYW5rcyBgQHNreWxh
cmpoZG93bmVzYF8gZm9yIHRoZSBQUi4KLQotKiBBbGxvdyBjb2xsZWN0aW5nIGZpbGVzIHdpdGgg
YW55IGZpbGUgZXh0ZW5zaW9uIGFzIFB5dGhvbiBtb2R1bGVzIChgIzIzNjlgXykuCi0gIFRoYW5r
cyBgQEtvZGlvbG9naXN0YF8gZm9yIHRoZSBQUi4KLQotKiBTaG93IHRoZSBjb3JyZWN0IGVycm9y
IG1lc3NhZ2Ugd2hlbiBjb2xsZWN0ICJwYXJhbWV0cml6ZSIgZnVuYyB3aXRoIHdyb25nIGFyZ3Mg
KGAjMjM4M2BfKS4KLSAgVGhhbmtzIGBAVGhlLUNvbXBpbGVyYF8gZm9yIHRoZSByZXBvcnQgYW5k
IGBAcm9iaW4wMzcxYF8gZm9yIHRoZSBQUi4KLQotCi0uLiBfQGRhdmlkc3pvdHRlbjogaHR0cHM6
Ly9naXRodWIuY29tL2Rhdmlkc3pvdHRlbgotLi4gX0BmYWJpb3o6IGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWJpb3oKLS4uIF9AZm9nbzogaHR0cHM6Ly9naXRodWIuY29tL2ZvZ28KLS4uIF9AZnVzaGk6
IGh0dHBzOi8vZ2l0aHViLmNvbS9mdXNoaQotLi4gX0BLb2Rpb2xvZ2lzdDogaHR0cHM6Ly9naXRo
dWIuY29tL0tvZGlvbG9naXN0Ci0uLiBfQEtyaWVjaGk6IGh0dHBzOi8vZ2l0aHViLmNvbS9Lcmll
Y2hpCi0uLiBfQG1hbmRlZXA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYW5kZWVwCi0uLiBfQG1hdHRk
dWNrOiBodHRwczovL2dpdGh1Yi5jb20vbWF0dGR1Y2sKLS4uIF9AbWV0YXN5bjogaHR0cHM6Ly9n
aXRodWIuY29tL21ldGFzeW4KLS4uIF9ATWljaGFsVEhFRFVERTogaHR0cHM6Ly9naXRodWIuY29t
L01pY2hhbFRIRURVREUKLS4uIF9Ab2ppaTogaHR0cHM6Ly9naXRodWIuY29tL29qaWkKLS4uIF9A
cmV1dHNoYXJhYmFuaTogaHR0cHM6Ly9naXRodWIuY29tL3JldXRzaGFyYWJhbmkKLS4uIF9Acm9i
aW4wMzcxOiBodHRwczovL2dpdGh1Yi5jb20vcm9iaW4wMzcxCi0uLiBfQHNreWxhcmpoZG93bmVz
OiBodHRwczovL2dpdGh1Yi5jb20vc2t5bGFyamhkb3duZXMKLS4uIF9AdW5zaWduZWRpbnQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS91bnNpZ25lZGludAotLi4gX0B3aGVlcmQ6IGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGVlcmQKLQotCi0uLiBfIzE0MDc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMTQwNwotLi4gXyMxNTEyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzE1MTIKLS4uIF8jMTgyMTogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODIxCi0uLiBfIzE4NzQ6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE4NzQKLS4uIF8jMTkzNzogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTM3Ci0uLiBfIzE5NTI6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE5NTIKLS4uIF8jMjAwNzogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDA3Ci0uLiBfIzIwMTM6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAxMwotLi4gXyMyMTAxOiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8yMTAxCi0uLiBfIzIxNjY6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzIxNjYKLS4uIF8jMjIw
ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjA4Ci0uLiBf
IzIyMjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIyOAot
Li4gXyMyMjc2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIy
NzYKLS4uIF8jMjMwODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yMzA4Ci0uLiBfIzIzMzY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjMzNgotLi4gXyMyMzY5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzIzNjkKLS4uIF8jMjM4MzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMzgzCi0uLiBfIzIzOTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjM5MQotLi4gXyM1MzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTMzCi0KLQotCi0zLjAuNyAoMjAxNy0wMy0xNCkKLT09PT09
PT09PT09PT09PT09PQotCi0KLSogRml4IGlzc3VlIGluIGFzc2VydGlvbiByZXdyaXRpbmcgYnJl
YWtpbmcgZHVlIHRvIG1vZHVsZXMgc2lsZW50bHkgZGlzY2FyZGluZwotICBvdGhlciBtb2R1bGVz
IHdoZW4gaW1wb3J0aW5nIGZhaWxzCi0gIE5vdGFibHksIGltcG9ydGluZyB0aGUgYGBhbnlkYm1g
YCBtb2R1bGUgaXMgZml4ZWQuIChgIzIyNDhgXykuCi0gIFRoYW5rcyBgQHBmaGF5ZXNgXyBmb3Ig
dGhlIFBSLgotCi0qIGp1bml0eG1sOiBGaXggcHJvYmxlbWF0aWMgY2FzZSB3aGVyZSBzeXN0ZW0t
b3V0IHRhZyBvY2N1cnJlZCB0d2ljZSBwZXIgdGVzdGNhc2UKLSAgZWxlbWVudCBpbiB0aGUgWE1M
IHJlcG9ydC4gVGhhbmtzIGBAa2tvdWtpb3VgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCByZWdyZXNz
aW9uLCBweXRlc3Qgbm93IHNraXBzIHVuaXR0ZXN0IGNvcnJlY3RseSBpZiBydW4gd2l0aCBgYC0t
cGRiYGAKLSAgKGAjMjEzN2BfKS4gVGhhbmtzIHRvIGBAZ3N0YF8gZm9yIHRoZSByZXBvcnQgYW5k
IGBAbWJ5dGBfIGZvciB0aGUgUFIuCi0KLSogSWdub3JlIGV4Y2VwdGlvbnMgcmFpc2VkIGZyb20g
ZGVzY3JpcHRvcnMgKGUuZy4gcHJvcGVydGllcykgZHVyaW5nIFB5dGhvbiB0ZXN0IGNvbGxlY3Rp
b24gKGAjMjIzNGBfKS4KLSAgVGhhbmtzIHRvIGBAYmx1ZXRlY2hgXy4KLQotKiBgYC0tb3ZlcnJp
ZGUtaW5pYGAgbm93IGNvcnJlY3RseSBvdmVycmlkZXMgc29tZSBmdW5kYW1lbnRhbCBvcHRpb25z
IGxpa2UgYGBweXRob25fZmlsZXNgYCAoYCMyMjM4YF8pLgotICBUaGFua3MgYEBzaXJleGBfIGZv
ciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIFJlcGxhY2Ug
YGByYWlzZSBTdG9wSXRlcmF0aW9uYGAgdXNhZ2VzIGluIHRoZSBjb2RlIGJ5IHNpbXBsZSBgYHJl
dHVybnNgYCB0byBmaW5pc2ggZ2VuZXJhdG9ycywgaW4gYWNjb3JkYW5jZSB0byBgUEVQLTQ3OWBf
IChgIzIxNjBgXykuCi0gIFRoYW5rcyBgQHRnb29kbGV0YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBA
bmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRml4IGludGVybmFsIGVycm9ycyB3aGVuIGFu
IHVucHJpbnRhYmxlIGBgQXNzZXJ0aW9uRXJyb3JgYCBpcyByYWlzZWQgaW5zaWRlIGEgdGVzdC4K
LSAgVGhhbmtzIGBAb21lcmhhZGFyaWBfIGZvciB0aGUgUFIuCi0KLSogU2tpcHBpbmcgcGx1Z2lu
IG5vdyBhbHNvIHdvcmtzIHdpdGggdGVzdCBpdGVtcyBnZW5lcmF0ZWQgYnkgY3VzdG9tIGNvbGxl
Y3RvcnMgKGAjMjIzMWBfKS4KLSAgVGhhbmtzIHRvIGBAdmlkYXJ0ZmBfLgotCi0qIEZpeCB0cmFp
bGluZyB3aGl0ZXNwYWNlIGluIGNvbnNvbGUgb3V0cHV0IGlmIG5vIC5pbmkgZmlsZSBwcmVzZW50
ZWQgKGAjMjI4MWBfKS4gVGhhbmtzIGBAZmJqb3JuYF8gZm9yIHRoZSBQUi4KLQotKiBDb25kaXRp
b25sZXNzIGBgeGZhaWxgYCBtYXJrZXJzIG5vIGxvbmdlciByZWx5IG9uIHRoZSB1bmRlcmx5aW5n
IHRlc3QgaXRlbQotICBiZWluZyBhbiBpbnN0YW5jZSBvZiBgYFB5b2JqTWl4aW5gYCwgYW5kIGNh
biB0aGVyZWZvcmUgYXBwbHkgdG8gdGVzdHMgbm90Ci0gIGNvbGxlY3RlZCBieSB0aGUgYnVpbHQt
aW4gcHl0aG9uIHRlc3QgY29sbGVjdG9yLiBUaGFua3MgYEBiYXJuZXlnYWxlYF8gZm9yIHRoZQot
ICBQUi4KLQotCi0uLiBfQHBmaGF5ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZmhheWVzCi0uLiBf
QGJsdWV0ZWNoOiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZXRlY2gKLS4uIF9AZ3N0OiBodHRwczov
L2dpdGh1Yi5jb20vZ3N0Ci0uLiBfQHNpcmV4OiBodHRwczovL2dpdGh1Yi5jb20vc2lyZXgKLS4u
IF9AdmlkYXJ0ZjogaHR0cHM6Ly9naXRodWIuY29tL3ZpZGFydGYKLS4uIF9Aa2tvdWtpb3U6IGh0
dHBzOi8vZ2l0aHViLmNvbS9LS291a2lvdQotLi4gX0BvbWVyaGFkYXJpOiBodHRwczovL2dpdGh1
Yi5jb20vb21lcmhhZGFyaQotLi4gX0BmYmpvcm46IGh0dHBzOi8vZ2l0aHViLmNvbS9mYmpvcm4K
LQotLi4gXyMyMjQ4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzIyNDgKLS4uIF8jMjEzNzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yMTM3Ci0uLiBfIzIxNjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjE2MAotLi4gXyMyMjMxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzIyMzEKLS4uIF8jMjIzNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yMjM0Ci0uLiBfIzIyMzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIzOAotLi4gXyMyMjgxOiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyODEKLQotLi4gX1BFUC00Nzk6IGh0dHBzOi8vd3d3
LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzkvCi0KLQotMy4wLjYgKDIwMTctMDEtMjIpCi09
PT09PT09PT09PT09PT09PT0KLQotKiBweXRlc3Qgbm8gbG9uZ2VyIGdlbmVyYXRlcyBgYFBlbmRp
bmdEZXByZWNhdGlvbldhcm5pbmdgYCBmcm9tIGl0cyBvd24gb3BlcmF0aW9ucywgd2hpY2ggd2Fz
IGludHJvZHVjZWQgYnkgbWlzdGFrZSBpbiB2ZXJzaW9uIGBgMy4wLjVgYCAoYCMyMTE4YF8pLgot
ICBUaGFua3MgdG8gYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAUm9ubnlQZmFu
bnNjaG1pZHRgXyBmb3IgdGhlIFBSLgotCi0KLSogcHl0ZXN0IG5vIGxvbmdlciByZWNvZ25pemVz
IGNvcm91dGluZSBmdW5jdGlvbnMgYXMgeWllbGQgdGVzdHMgKGAjMjEyOWBfKS4KLSAgVGhhbmtz
IHRvIGBAbWFsaW5vZmZgXyBmb3IgdGhlIFBSLgotCi0qIFBsdWdpbnMgbG9hZGVkIGJ5IHRoZSBg
YFBZVEVTVF9QTFVHSU5TYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgYXJlIG5vdyBhdXRvbWF0aWNh
bGx5Ci0gIGNvbnNpZGVyZWQgZm9yIGFzc2VydGlvbiByZXdyaXRpbmcgKGAjMjE4NWBfKS4KLSAg
VGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogSW1wcm92ZSBlcnJvciBtZXNz
YWdlIHdoZW4gcHl0ZXN0Lndhcm5zIGZhaWxzIChgIzIxNTBgXykuIFRoZSB0eXBlKHMpIG9mIHRo
ZQotICBleHBlY3RlZCB3YXJuaW5ncyBhbmQgdGhlIGxpc3Qgb2YgY2F1Z2h0IHdhcm5pbmdzIGlz
IGFkZGVkIHRvIHRoZQotICBlcnJvciBtZXNzYWdlLiBUaGFua3MgYEBsZXN0ZXZlYF8gZm9yIHRo
ZSBQUi4KLQotKiBGaXggYGBweXRlc3RlcmBgIGludGVybmFsIHBsdWdpbiB0byB3b3JrIGNvcnJl
Y3RseSB3aXRoIGxhdGVzdCB2ZXJzaW9ucyBvZgotICBgYHpvcGUuaW50ZXJmYWNlYGAgKGAjMTk4
OWBfKS4gVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogQXNzZXJ0IHN0YXRl
bWVudHMgb2YgdGhlIGBgcHl0ZXN0ZXJgYCBwbHVnaW4gYWdhaW4gYmVuZWZpdCBmcm9tIGFzc2Vy
dGlvbiByZXdyaXRpbmcgKGAjMTkyMGBfKS4KLSAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1pZHRg
XyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBTcGVj
aWZ5aW5nIHRlc3RzIHdpdGggY29sb25zIGxpa2UgYGB0ZXN0X2Zvby5weTo6dGVzdF9iYXJgYCBm
b3IgdGVzdHMgaW4KLSAgc3ViZGlyZWN0b3JpZXMgd2l0aCBpbmkgY29uZmlndXJhdGlvbiBmaWxl
cyBub3cgdXNlcyB0aGUgY29ycmVjdCBpbmkgZmlsZQotICAoYCMyMTQ4YF8pLiAgVGhhbmtzIGBA
cGVsbWVgXy4KLQotKiBGYWlsIGBgdGVzdGRpci5ydW5weXRlc3QoKS5hc3NlcnRfb3V0Y29tZXMo
KWBgIGV4cGxpY2l0bHkgaWYgdGhlIHB5dGVzdAotICB0ZXJtaW5hbCBvdXRwdXQgaXQgcmVsaWVz
IG9uIGlzIG1pc3NpbmcuIFRoYW5rcyB0byBgQGVsaS1iYF8gZm9yIHRoZSBQUi4KLQotCi0uLiBf
QGJhcm5leWdhbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXJuZXlnYWxlCi0uLiBfQGxlc3RldmU6
IGh0dHBzOi8vZ2l0aHViLmNvbS9sZXN0ZXZlCi0uLiBfQG1hbGlub2ZmOiBodHRwczovL2dpdGh1
Yi5jb20vbWFsaW5vZmYKLS4uIF9AcGVsbWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZWxtZQotLi4g
X0BlbGktYjogaHR0cHM6Ly9naXRodWIuY29tL2VsaS1iCi0KLS4uIF8jMjExODogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTE4Ci0KLS4uIF8jMTk4OTogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTg5Ci0uLiBfIzE5MjA6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTkyMAotLi4gXyMy
MTI5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxMjkKLS4u
IF8jMjE0ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTQ4
Ci0uLiBfIzIxNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjE1MAotLi4gXyMyMTg1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzIxODUKLQotCi0zLjAuNSAoMjAxNi0xMi0wNSkKLT09PT09PT09PT09PT09PT09PQotCi0q
IEFkZCB3YXJuaW5nIHdoZW4gbm90IHBhc3NpbmcgYGBvcHRpb249dmFsdWVgYCBjb3JyZWN0bHkg
dG8gYGAtby8tLW92ZXJyaWRlLWluaWBgIChgIzIxMDVgXykuCi0gIEFsc28gaW1wcm92ZWQgdGhl
IGhlbHAgZG9jdW1lbnRhdGlvbi4gVGhhbmtzIHRvIGBAbWJ1a2F0b3ZgXyBmb3IgdGhlIHJlcG9y
dCBhbmQKLSAgYEBsd21gXyBmb3IgdGhlIFBSLgotCi0qIE5vdyBgYC0tY29uZmN1dGRpcmBgIGFu
ZCBgYC0tanVuaXQteG1sYGAgYXJlIHByb3Blcmx5IHZhbGlkYXRlZCBpZiB0aGV5IGFyZSBkaXJl
Y3RvcmllcwotICBhbmQgZmlsZW5hbWVzLCByZXNwZWN0aXZlbHkgKGAjMjA4OWBfIGFuZCBgIzIw
NzhgXykuIFRoYW5rcyB0byBgQGx3bWBfIGZvciB0aGUgUFIuCi0KLSogQWRkIGhpbnQgdG8gZXJy
b3IgbWVzc2FnZSBoaW50aW5nIHBvc3NpYmxlIG1pc3NpbmcgYGBfX2luaXRfXy5weWBgIChgIzQ3
OGBfKS4gVGhhbmtzIGBARHVuY2FuQmV0dHNgXy4KLQotKiBNb3JlIGFjY3VyYXRlbHkgZGVzY3Jp
YmUgd2hlbiBmaXh0dXJlIGZpbmFsaXphdGlvbiBvY2N1cnMgaW4gZG9jdW1lbnRhdGlvbiAoYCM2
ODdgXykuIFRoYW5rcyBgQER1bmNhbkJldHRzYF8uCi0KLSogUHJvdmlkZSBgYDpyZWY6YGAgdGFy
Z2V0cyBmb3IgYGByZWN3YXJuLnJzdGBgIHNvIHdlIGNhbiB1c2UgaW50ZXJzcGhpbnggcmVmZXJl
bmNpbmcuCi0gIFRoYW5rcyB0byBgQGR1cHV5YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbHdtYF8g
Zm9yIHRoZSBQUi4KLQotKiBJbiBQeXRob24gMiwgdXNlIGEgc2ltcGxlIGBgKy1gYCBBU0NJSSBz
dHJpbmcgaW4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBgYHB5dGVzdC5hcHByb3hgYCAo
Zm9yIGV4YW1wbGUgYGAiNCArLSA0LjBlLTA2ImBgKQotICBiZWNhdXNlIGl0IGlzIGJyaXR0bGUg
dG8gaGFuZGxlIHRoYXQgaW4gZGlmZmVyZW50IGNvbnRleHRzIGFuZCByZXByZXNlbnRhdGlvbnMg
aW50ZXJuYWxseSBpbiBweXRlc3QKLSAgd2hpY2ggY2FuIHJlc3VsdCBpbiBidWdzIHN1Y2ggYXMg
YCMyMTExYF8uIEluIFB5dGhvbiAzLCB0aGUgcmVwcmVzZW50YXRpb24gc3RpbGwgdXNlcyBgYMKx
YGAgKGZvciBleGFtcGxlIGBgNCDCsSA0LjBlLTA2YGApLgotICBUaGFua3MgYEBrZXJyaWNrLWx5
ZnRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBV
c2luZyBgYGl0ZW0uRnVuY3Rpb25gYCwgYGBpdGVtLk1vZHVsZWBgLCBldGMuLCBpcyBub3cgaXNz
dWluZyBkZXByZWNhdGlvbiB3YXJuaW5ncywgcHJlZmVyCi0gIGBgcHl0ZXN0LkZ1bmN0aW9uYGAs
IGBgcHl0ZXN0Lk1vZHVsZWBgLCBldGMuLCBpbnN0ZWFkIChgIzIwMzRgXykuCi0gIFRoYW5rcyBg
QG5tdW5kYXJgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCBlcnJvciBtZXNzYWdlIHVzaW5nIGBgYXBw
cm94YGAgd2l0aCBjb21wbGV4IG51bWJlcnMgKGAjMjA4MmBfKS4KLSAgVGhhbmtzIGBAYWRsZXIt
amBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEZp
eGVkIGZhbHNlLXBvc2l0aXZlcyB3YXJuaW5ncyBmcm9tIGFzc2VydGlvbiByZXdyaXRlIGhvb2sg
Zm9yIG1vZHVsZXMgaW1wb3J0ZWQgbW9yZSB0aGFuCi0gIG9uY2UgYnkgdGhlIGBgcHl0ZXN0X3Bs
dWdpbnNgYCBtZWNoYW5pc20uCi0gIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgot
Ci0qIFJlbW92ZSBhbiBpbnRlcm5hbCBjYWNoZSB3aGljaCBjb3VsZCBjYXVzZSBob29rcyBmcm9t
IGBgY29uZnRlc3QucHlgYCBmaWxlcyBpbgotICBzdWItZGlyZWN0b3JpZXMgdG8gYmUgY2FsbGVk
IGluIG90aGVyIGRpcmVjdG9yaWVzIGluY29ycmVjdGx5IChgIzIwMTZgXykuCi0gIFRoYW5rcyBg
QGQtYi13YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0K
LSogUmVtb3ZlIGludGVybmFsIGNvZGUgbWVhbnQgdG8gc3VwcG9ydCBlYXJsaWVyIFB5dGhvbiAz
IHZlcnNpb25zIHRoYXQgcHJvZHVjZWQgdGhlIHNpZGUgZWZmZWN0Ci0gIG9mIGxlYXZpbmcgYGBO
b25lYGAgaW4gYGBzeXMubW9kdWxlc2BgIHdoZW4gZXhwcmVzc2lvbnMgd2VyZSBldmFsdWF0ZWQg
YnkgcHl0ZXN0IChmb3IgZXhhbXBsZSBwYXNzaW5nIGEgY29uZGl0aW9uCi0gIGFzIGEgc3RyaW5n
IHRvIGBgcHl0ZXN0Lm1hcmsuc2tpcGlmYGApKGAjMjEwM2BfKS4KLSAgVGhhbmtzIGBAamFyYWNv
YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogQ29w
ZSBncmFjZWZ1bGx5IHdpdGggYSAucHljIGZpbGUgd2l0aCBubyBtYXRjaGluZyAucHkgZmlsZSAo
YCMyMDM4YF8pLiBUaGFua3MKLSAgYEBuZWRiYXRgXy4KLQotLi4gX0BzeXJlOiBodHRwczovL2dp
dGh1Yi5jb20vc3lyZQotLi4gX0BhZGxlci1qOiBodHRwczovL2dpdGh1Yi5jb20vYWRsZXItagot
Li4gX0BkLWItdzogaHR0cHM6Ly9iaXRidWNrZXQub3JnL2QtYi13LwotLi4gX0BEdW5jYW5CZXR0
czogaHR0cHM6Ly9naXRodWIuY29tL0R1bmNhbkJldHRzCi0uLiBfQGR1cHV5OiBodHRwczovL2Jp
dGJ1Y2tldC5vcmcvZHVwdXkvCi0uLiBfQGtlcnJpY2stbHlmdDogaHR0cHM6Ly9naXRodWIuY29t
L2tlcnJpY2stbHlmdAotLi4gX0Bsd206IGh0dHBzOi8vZ2l0aHViLmNvbS9sd20KLS4uIF9AbWJ1
a2F0b3Y6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYnVrYXRvdgotLi4gX0BuZWRiYXQ6IGh0dHBzOi8v
Z2l0aHViLmNvbS9uZWRiYXQKLS4uIF9Abm11bmRhcjogaHR0cHM6Ly9naXRodWIuY29tL25tdW5k
YXIKLQotLi4gXyMyMDE2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzIwMTYKLS4uIF8jMjAzNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yMDM0Ci0uLiBfIzIwMzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjAzOAotLi4gXyMyMDc4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzIwNzgKLS4uIF8jMjA4MjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDgyCi0uLiBfIzIwODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjA4OQotLi4gXyMyMTAzOiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxMDMKLS4uIF8jMjEwNTogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTA1Ci0uLiBfIzIxMTE6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjExMQotLi4gXyM0Nzg6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDc4Ci0uLiBfIzY4NzogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82ODcKLQotCi0zLjAuNCAo
MjAxNi0xMS0wOSkKLT09PT09PT09PT09PT09PT09PQotCi0qIEltcG9ydCBlcnJvcnMgd2hlbiBj
b2xsZWN0aW5nIHRlc3QgbW9kdWxlcyBub3cgZGlzcGxheSB0aGUgZnVsbCB0cmFjZWJhY2sgKGAj
MTk3NmBfKS4KLSAgVGhhbmtzIGBAY3dpdHR5YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2Rk
ZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRml4IGNvbmZ1c2luZyBjb21tYW5kLWxpbmUgaGVscCBt
ZXNzYWdlIGZvciBjdXN0b20gb3B0aW9ucyB3aXRoIHR3byBvciBtb3JlIGBgbWV0YXZhcmBgIHBy
b3BlcnRpZXMgKGAjMjAwNGBfKS4KLSAgVGhhbmtzIGBAb2t1bHlueWFrYF8gYW5kIGBAZGF2ZWh1
bnRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBX
aGVuIGxvYWRpbmcgcGx1Z2lucywgaW1wb3J0IGVycm9ycyB3aGljaCBjb250YWluIG5vbi1hc2Np
aSBtZXNzYWdlcyBhcmUgbm93IHByb3Blcmx5IGhhbmRsZWQgaW4gUHl0aG9uIDIgKGAjMTk5OGBf
KS4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRml4ZWQgY3ljbGlj
IHJlZmVyZW5jZSB3aGVuIGBgcHl0ZXN0LnJhaXNlc2BgIGlzIHVzZWQgaW4gY29udGV4dC1tYW5h
Z2VyIGZvcm0gKGAjMTk2NWBfKS4gQWxzbyBhcyBhCi0gIHJlc3VsdCBvZiB0aGlzIGZpeCwgYGBz
eXMuZXhjX2luZm8oKWBgIGlzIGxlZnQgZW1wdHkgaW4gYm90aCBjb250ZXh0LW1hbmFnZXIgYW5k
IGZ1bmN0aW9uIGNhbGwgdXNhZ2VzLgotICBQcmV2aW91c2x5LCBgYHN5cy5leGNfaW5mb2BgIHdv
dWxkIGNvbnRhaW4gdGhlIGV4Y2VwdGlvbiBjYXVnaHQgYnkgdGhlIGNvbnRleHQgbWFuYWdlciwK
LSAgZXZlbiB3aGVuIHRoZSBleHBlY3RlZCBleGNlcHRpb24gb2NjdXJyZWQuCi0gIFRoYW5rcyBg
QE1TZWlmZXJ0MDRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgdGhlIFBSLgotCi0qIEZpeGVkIGZhbHNl
LXBvc2l0aXZlcyB3YXJuaW5ncyBmcm9tIGFzc2VydGlvbiByZXdyaXRlIGhvb2sgZm9yIG1vZHVs
ZXMgdGhhdCB3ZXJlIHJld3JpdHRlbiBidXQKLSAgd2VyZSBsYXRlciBtYXJrZWQgZXhwbGljaXRs
eSBieSBgYHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZWBgCi0gIG9yIGltcGxpY2l0bHkg
YXMgYSBwbHVnaW4gKGAjMjAwNWBfKS4KLSAgVGhhbmtzIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBm
b3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBSZXBvcnQg
dGVhcmRvd24gb3V0cHV0IG9uIHRlc3QgZmFpbHVyZSAoYCM0NDJgXykuCi0gIFRoYW5rcyBgQG1h
dGNsYWJgXyBmb3IgdGhlIFBSLgotCi0qIEZpeCB0ZWFyZG93biBlcnJvciBtZXNzYWdlIGluIGdl
bmVyYXRlZCB4VW5pdCBYTUwuCi0gIFRoYW5rcyBgQGdkeXVsZGluYF8gZm9yIHRoZSBQUi4KLQot
KiBQcm9wZXJseSBoYW5kbGUgZXhjZXB0aW9ucyBpbiBgYG11bHRpcHJvY2Vzc2luZ2BgIHRhc2tz
IChgIzE5ODRgXykuCi0gIFRoYW5rcyBgQGFkYm9yZGVuYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBA
bmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogQ2xlYW4gdXAgdW5pdHRlc3QgVGVzdENhc2Ug
b2JqZWN0cyBhZnRlciB0ZXN0cyBhcmUgY29tcGxldGUgKGAjMTY0OWBfKS4KLSAgVGhhbmtzIGBA
ZF9iX3dgXyBmb3IgdGhlIHJlcG9ydCBhbmQgUFIuCi0KLQotLi4gX0BhZGJvcmRlbjogaHR0cHM6
Ly9naXRodWIuY29tL2FkYm9yZGVuCi0uLiBfQGN3aXR0eTogaHR0cHM6Ly9naXRodWIuY29tL2N3
aXR0eQotLi4gX0BkX2JfdzogaHR0cHM6Ly9naXRodWIuY29tL2RfYl93Ci0uLiBfQGdkeXVsZGlu
OiBodHRwczovL2dpdGh1Yi5jb20vZ2R5dWxkaW4KLS4uIF9AbWF0Y2xhYjogaHR0cHM6Ly9naXRo
dWIuY29tL21hdGNsYWIKLS4uIF9ATVNlaWZlcnQwNDogaHR0cHM6Ly9naXRodWIuY29tL01TZWlm
ZXJ0MDQKLS4uIF9Ab2t1bHlueWFrOiBodHRwczovL2dpdGh1Yi5jb20vb2t1bHlueWFrCi0KLS4u
IF8jNDQyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0Mgot
Li4gXyMxOTY1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5
NjUKLS4uIF8jMTk3NjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xOTc2Ci0uLiBfIzE5ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMTk4NAotLi4gXyMxOTk4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzE5OTgKLS4uIF8jMjAwNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMDA0Ci0uLiBfIzIwMDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjAwNQotLi4gXyMxNjQ5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2NDkKLQotCi0zLjAuMyAoMjAxNi0wOS0yOCkKLT09PT09
PT09PT09PT09PT09PQotCi0qIFRoZSBgYGlkc2BgIGFyZ3VtZW50IHRvIGBgcGFyYW1ldHJpemVg
YCBhZ2FpbiBhY2NlcHRzIGBgdW5pY29kZWBgIHN0cmluZ3MKLSAgaW4gUHl0aG9uIDIgKGAjMTkw
NWBfKS4KLSAgVGhhbmtzIGBAcGhpbHBlcGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVt
dXNgXyBmb3IgdGhlIFBSLgotCi0qIEFzc2VydGlvbnMgYXJlIG5vdyBiZWluZyByZXdyaXR0ZW4g
Zm9yIHBsdWdpbnMgaW4gZGV2ZWxvcG1lbnQgbW9kZQotICAoYGBwaXAgaW5zdGFsbCAtZWBgKSAo
YCMxOTM0YF8pLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBGaXgg
cGtnX3Jlc291cmNlcyBpbXBvcnQgZXJyb3IgaW4gSnl0aG9uIHByb2plY3RzIChgIzE4NTNgXyku
Ci0gIFRoYW5rcyBgQHJhcXVlbC11Y2xgXyBmb3IgdGhlIFBSLgotCi0qIEdvdCByaWQgb2YgYGBB
dHRyaWJ1dGVFcnJvcjogJ01vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ19vYmonYGAg
ZXhjZXB0aW9uCi0gIGluIFB5dGhvbiAzIChgIzE5NDRgXykuCi0gIFRoYW5rcyBgQGF4aWxgXyBm
b3IgdGhlIFBSLgotCi0qIEV4cGxhaW4gYSBiYWQgc2NvcGUgdmFsdWUgcGFzc2VkIHRvIGBgQGZp
eHR1cmVgYCBkZWNsYXJhdGlvbnMgb3IKLSAgYSBgYE1ldGFGdW5jLnBhcmFtZXRyaXplKClgYCBj
YWxsLiBUaGFua3MgYEB0Z29vZGxldGBfIGZvciB0aGUgUFIuCi0KLSogVGhpcyB2ZXJzaW9uIGlu
Y2x1ZGVzIGBgcGx1Z2d5LTAuNC4wYGAsIHdoaWNoIGNvcnJlY3RseSBoYW5kbGVzCi0gIGBgVmVy
c2lvbkNvbmZsaWN0YGAgZXJyb3JzIGluIHBsdWdpbnMgKGAjNzA0YF8pLgotICBUaGFua3MgYEBu
aWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotCi0uLiBfQHBoaWxwZXA6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9waGlscGVwCi0uLiBfQHJhcXVlbC11Y2w6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXF1ZWwt
dWNsCi0uLiBfQGF4aWw6IGh0dHBzOi8vZ2l0aHViLmNvbS9heGlsCi0uLiBfQHRnb29kbGV0OiBo
dHRwczovL2dpdGh1Yi5jb20vdGdvb2RsZXQKLS4uIF9AdmxhZC1kcmFnb3M6IGh0dHBzOi8vZ2l0
aHViLmNvbS92bGFkLWRyYWdvcwotCi0uLiBfIzE4NTM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg1MwotLi4gXyMxOTA1OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5MDUKLS4uIF8jMTkzNDogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTM0Ci0uLiBfIzE5NDQ6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk0NAotLi4gXyM3MDQ6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzA0Ci0KLQotCi0KLTMuMC4yICgy
MDE2LTA5LTAxKQotPT09PT09PT09PT09PT09PT09Ci0KLSogSW1wcm92ZSBlcnJvciBtZXNzYWdl
IHdoZW4gcGFzc2luZyBub24tc3RyaW5nIGlkcyB0byBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
YGAgKGAjMTg1N2BfKS4KLSAgVGhhbmtzIGBAb2trZW5gXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBu
aWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBBZGQgYGBidWZmZXJgYCBhdHRyaWJ1dGUgdG8g
c3RkaW4gc3R1YiBjbGFzcyBgYHB5dGVzdC5jYXB0dXJlLkRvbnRSZWFkRnJvbUlucHV0YGAKLSAg
VGhhbmtzIGBAam9ndVNEYF8gZm9yIHRoZSBQUi4KLQotKiBGaXggYGBVbmljb2RlRW5jb2RlRXJy
b3JgYCB3aGVuIHN0cmluZyBjb21wYXJpc29uIHdpdGggdW5pY29kZSBoYXMgZmFpbGVkLiAoYCMx
ODY0YF8pCi0gIFRoYW5rcyBgQEFpT09gXyBmb3IgdGhlIFBSLgotCi0qIGBgcHl0ZXN0X3BsdWdp
bnNgYCBpcyBub3cgaGFuZGxlZCBjb3JyZWN0bHkgaWYgZGVmaW5lZCBhcyBhIHN0cmluZyAoYXMg
b3Bwb3NlZCBhcwotICBhIHNlcXVlbmNlIG9mIHN0cmluZ3MpIHdoZW4gbW9kdWxlcyBhcmUgY29u
c2lkZXJlZCBmb3IgYXNzZXJ0aW9uIHJld3JpdGluZy4KLSAgRHVlIHRvIHRoaXMgYnVnLCBtdWNo
IG1vcmUgbW9kdWxlcyB3ZXJlIGJlaW5nIHJld3JpdHRlbiB0aGFuIG5lY2Vzc2FyeQotICBpZiBh
IHRlc3Qgc3VpdGUgdXNlcyBgYHB5dGVzdF9wbHVnaW5zYGAgdG8gbG9hZCBpbnRlcm5hbCBwbHVn
aW5zIChgIzE4ODhgXykuCi0gIFRoYW5rcyBgQGphcmFjb2BfIGZvciB0aGUgcmVwb3J0IGFuZCBg
QG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSIChgIzE4OTFgXykuCi0KLSogRG8gbm90IGNhbGwgdGVh
ckRvd24gYW5kIGNsZWFudXBzIHdoZW4gcnVubmluZyB0ZXN0cyBmcm9tCi0gIGBgdW5pdHRlc3Qu
VGVzdENhc2VgYCBzdWJjbGFzc2VzIHdpdGggYGAtLXBkYmBgCi0gIGVuYWJsZWQuIFRoaXMgYWxs
b3dzIHByb3BlciBwb3N0IG1vcnRlbSBkZWJ1Z2dpbmcgZm9yIGFsbCBhcHBsaWNhdGlvbnMKLSAg
d2hpY2ggaGF2ZSBzaWduaWZpY2FudCBsb2dpYyBpbiB0aGVpciB0ZWFyRG93biBtYWNoaW5lcnkg
KGAjMTg5MGBfKS4gVGhhbmtzCi0gIGBAbWJ5dGBfIGZvciB0aGUgUFIuCi0KLSogRml4IHVzZSBv
ZiBkZXByZWNhdGVkIGBgZ2V0ZnVuY2FyZ3ZhbHVlYGAgbWV0aG9kIGluIHRoZSBpbnRlcm5hbCBk
b2N0ZXN0IHBsdWdpbi4KLSAgVGhhbmtzIGBAVml2aUNvZGVyYF8gZm9yIHRoZSByZXBvcnQgKGAj
MTg5OGBfKS4KLQotLi4gX0Bqb2d1U0Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2d1U0QKLS4uIF9A
QWlPTzogaHR0cHM6Ly9naXRodWIuY29tL0FpT08KLS4uIF9AbWJ5dDogaHR0cHM6Ly9naXRodWIu
Y29tL21ieXQKLS4uIF9AVml2aUNvZGVyOiBodHRwczovL2dpdGh1Yi5jb20vVml2aUNvZGVyCi0K
LS4uIF8jMTg1NzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8x
ODU3Ci0uLiBfIzE4NjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMTg2NAotLi4gXyMxODg4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzE4ODgKLS4uIF8jMTg5MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L3B1bGwvMTg5MQotLi4gXyMxODkwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE4OTAKLS4uIF8jMTg5ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xODk4Ci0KLQotMy4wLjEgKDIwMTYtMDgtMjMpCi09PT09PT09PT09
PT09PT09PT0KLQotKiBGaXggcmVncmVzc2lvbiB3aGVuIGBgaW1wb3J0b3Jza2lwYGAgaXMgdXNl
ZCBhdCBtb2R1bGUgbGV2ZWwgKGAjMTgyMmBfKS4KLSAgVGhhbmtzIGBAamFyYWNvYF8gYW5kIGBA
VGhlLUNvbXBpbGVyYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUg
UFIuCi0KLSogRml4IHBhcmFtZXRyaXphdGlvbiBzY29wZSB3aGVuIHNlc3Npb24gZml4dHVyZXMg
YXJlIHVzZWQgaW4gY29uanVuY3Rpb24KLSAgd2l0aCBub3JtYWwgcGFyYW1ldGVycyBpbiB0aGUg
c2FtZSBjYWxsIChgIzE4MzJgXykuCi0gIFRoYW5rcyBgQFRoZS1Db21waWxlcmBfIGZvciB0aGUg
cmVwb3J0LCBgQEtpbmdkcmVhZGBfIGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0q
IEZpeCBpbnRlcm5hbCBlcnJvciB3aGVuIHBhcmFtZXRyaXppbmcgdGVzdHMgb3IgZml4dHVyZXMg
dXNpbmcgYW4gZW1wdHkgYGBpZHNgYCBhcmd1bWVudCAoYCMxODQ5YF8pLgotICBUaGFua3MgYEBP
UHB1b2xpdGFpdmFsYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUg
UFIuCi0KLSogRml4IGxvYWRlciBlcnJvciB3aGVuIHJ1bm5pbmcgYGBweXRlc3RgYCBlbWJlZGRl
ZCBpbiBhIHppcGZpbGUuCi0gIFRoYW5rcyBgQG1iYWNocnlgXyBmb3IgdGhlIFBSLgotCi0KLS4u
IF9AS2luZ2RyZWFkOiBodHRwczovL2dpdGh1Yi5jb20vS2luZ2RyZWFkCi0uLiBfQG1iYWNocnk6
IGh0dHBzOi8vZ2l0aHViLmNvbS9tYmFjaHJ5Ci0uLiBfQE9QcHVvbGl0YWl2YWw6IGh0dHBzOi8v
Z2l0aHViLmNvbS9PUHB1b2xpdGFpdmFsCi0KLS4uIF8jMTgyMjogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODIyCi0uLiBfIzE4MzI6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTgzMgotLi4gXyMxODQ5OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4NDkKLQotCi0zLjAuMCAoMjAxNi0w
OC0xOCkKLT09PT09PT09PT09PT09PT09PQotCi0qKkluY29tcGF0aWJsZSBjaGFuZ2VzKioKLQot
Ci1BIG51bWJlciBvZiBpbmNvbXBhdGlibGUgY2hhbmdlcyB3ZXJlIG1hZGUgaW4gdGhpcyByZWxl
YXNlLCB3aXRoIHRoZSBpbnRlbnQgb2YgcmVtb3ZpbmcgZmVhdHVyZXMgZGVwcmVjYXRlZCBmb3Ig
YSBsb25nCi10aW1lIG9yIGNoYW5nZSBleGlzdGluZyBiZWhhdmlvcnMgaW4gb3JkZXIgdG8gbWFr
ZSB0aGVtIGxlc3Mgc3VycHJpc2luZy9tb3JlIHVzZWZ1bC4KLQotKiBSZWludGVycHJldGF0aW9u
IG1vZGUgaGFzIG5vdyBiZWVuIHJlbW92ZWQuICBPbmx5IHBsYWluIGFuZCByZXdyaXRlCi0gIG1v
ZGUgYXJlIGF2YWlsYWJsZSwgY29uc2VxdWVudGx5IHRoZSBgYC0tYXNzZXJ0PXJlaW50ZXJwYGAg
b3B0aW9uIGlzCi0gIG5vIGxvbmdlciBhdmFpbGFibGUuICBUaGlzIGFsc28gbWVhbnMgZmlsZXMg
aW1wb3J0ZWQgZnJvbSBwbHVnaW5zIG9yCi0gIGBgY29uZnRlc3QucHlgYCB3aWxsIG5vdCBiZW5l
Zml0IGZyb20gaW1wcm92ZWQgYXNzZXJ0aW9ucyBieQotICBkZWZhdWx0LCB5b3Ugc2hvdWxkIHVz
ZSBgYHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSgpYGAgdG8KLSAgZXhwbGljaXRseSB0
dXJuIG9uIGFzc2VydGlvbiByZXdyaXRpbmcgZm9yIHRob3NlIGZpbGVzLiAgVGhhbmtzCi0gIGBA
Zmx1YmBfIGZvciB0aGUgUFIuCi0KLSogVGhlIGZvbGxvd2luZyBkZXByZWNhdGVkIGNvbW1hbmRs
aW5lIG9wdGlvbnMgd2VyZSByZW1vdmVkOgotCi0gICogYGAtLWdlbnNjcmlwdGBgOiBubyBsb25n
ZXIgc3VwcG9ydGVkOwotICAqIGBgLS1uby1hc3NlcnRgYDogdXNlIGBgLS1hc3NlcnQ9cGxhaW5g
YCBpbnN0ZWFkOwotICAqIGBgLS1ub21hZ2ljYGA6IHVzZSBgYC0tYXNzZXJ0PXBsYWluYGAgaW5z
dGVhZDsKLSAgKiBgYC0tcmVwb3J0YGA6IHVzZSBgYC1yYGAgaW5zdGVhZDsKLQotICBUaGFua3Mg
dG8gYEBSZWRCZWFyZENvZGVgXyBmb3IgdGhlIFBSIChgIzE2NjRgXykuCi0KLSogSW1wb3J0RXJy
b3JzIGluIHBsdWdpbnMgbm93IGFyZSBhIGZhdGFsIGVycm9yIGluc3RlYWQgb2YgaXNzdWluZyBh
Ci0gIHB5dGVzdCB3YXJuaW5nIChgIzE0NzlgXykuIFRoYW5rcyB0byBgQFRoZS1Db21waWxlcmBf
IGZvciB0aGUgUFIuCi0KLSogUmVtb3ZlZCBzdXBwb3J0IGNvZGUgZm9yIFB5dGhvbiAzIHZlcnNp
b25zIDwgMy4zIChgIzE2MjdgXykuCi0KLSogUmVtb3ZlZCBhbGwgYGBweS50ZXN0LVgqYGAgZW50
cnkgcG9pbnRzLiBUaGUgdmVyc2lvbmVkLCBzdWZmaXhlZCBlbnRyeSBwb2ludHMKLSAgd2VyZSBu
ZXZlciBkb2N1bWVudGVkIGFuZCBhIGxlZnRvdmVyIGZyb20gYSBwcmUtdmlydHVhbGVudiBlcmEu
IFRoZXNlIGVudHJ5Ci0gIHBvaW50cyBhbHNvIGNyZWF0ZWQgYnJva2VuIGVudHJ5IHBvaW50cyBp
biB3aGVlbHMsIHNvIHJlbW92aW5nIHRoZW0gYWxzbwotICByZW1vdmVzIGEgc291cmNlIG9mIGNv
bmZ1c2lvbiBmb3IgdXNlcnMgKGAjMTYzMmBfKS4KLSAgVGhhbmtzIGBAb2Jlc3R3YWx0ZXJgXyBm
b3IgdGhlIFBSLgotCi0qIGBgcHl0ZXN0LnNraXAoKWBgIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hl
biB1c2VkIHRvIGRlY29yYXRlIGEgdGVzdCBmdW5jdGlvbiwKLSAgYXMgb3Bwb3NlZCB0byBpdHMg
b3JpZ2luYWwgaW50ZW50ICh0byBpbXBlcmF0aXZlbHkgc2tpcCBhIHRlc3QgaW5zaWRlIGEgdGVz
dCBmdW5jdGlvbikuIFByZXZpb3VzbHkKLSAgdGhpcyB1c2FnZSB3b3VsZCBjYXVzZSB0aGUgZW50
aXJlIG1vZHVsZSB0byBiZSBza2lwcGVkIChgIzYwN2BfKS4KLSAgVGhhbmtzIGBAb21hcmtvaGxg
XyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE1MTlgXykuCi0KLSogRXhpdCB0ZXN0cyBpZiBhIGNv
bGxlY3Rpb24gZXJyb3Igb2NjdXJzLiBBIHBvbGwgaW5kaWNhdGVkIG1vc3QgdXNlcnMgd2lsbCBo
aXQgQ1RSTC1DCi0gIGFueXdheSBhcyBzb29uIGFzIHRoZXkgc2VlIGNvbGxlY3Rpb24gZXJyb3Jz
LCBzbyBweXRlc3QgbWlnaHQgYXMgd2VsbCBtYWtlIHRoYXQgdGhlIGRlZmF1bHQgYmVoYXZpb3Ig
KGAjMTQyMWBfKS4KLSAgQSBgYC0tY29udGludWUtb24tY29sbGVjdGlvbi1lcnJvcnNgYCBvcHRp
b24gaGFzIGJlZW4gYWRkZWQgdG8gcmVzdG9yZSB0aGUgcHJldmlvdXMgYmVoYXZpb3VyLgotICBU
aGFua3MgYEBvbGVncGlkc2FkbnlpYF8gYW5kIGBAb21hcmtvaGxgXyBmb3IgdGhlIGNvbXBsZXRl
IFBSIChgIzE2MjhgXykuCi0KLSogUmVuYW1lZCB0aGUgcHl0ZXN0IGBgcGRiYGAgbW9kdWxlIChw
bHVnaW4pIGludG8gYGBkZWJ1Z2dpbmdgYCB0byBhdm9pZCBjbGFzaGVzIHdpdGggdGhlIGJ1aWx0
aW4gYGBwZGJgYCBtb2R1bGUuCi0KLSogUmFpc2UgYSBoZWxwZnVsIGZhaWx1cmUgbWVzc2FnZSB3
aGVuIHJlcXVlc3RpbmcgYSBwYXJhbWV0cml6ZWQgZml4dHVyZSBhdCBydW50aW1lLAotICBlLmcu
IHdpdGggYGByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZWBgLiBQcmV2aW91c2x5IHRoZXNlIHBhcmFt
ZXRlcnMgd2VyZSBzaW1wbHkKLSAgbmV2ZXIgZGVmaW5lZCwgc28gYSBmaXh0dXJlIGRlY29yYXRl
ZCBsaWtlIGBgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bMCwgMSwgMl0pYGAKLSAgb25seSByYW4g
b25jZSAoYCM0NjBgXykuCi0gIFRoYW5rcyB0byBgQG5pa3JhdGlvYF8gZm9yIHRoZSBidWcgcmVw
b3J0LCBgQFJlZEJlYXJkQ29kZWBfIGFuZCBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KLQotKiBg
YF9weXRlc3QubW9ua2V5cGF0Y2gubW9ua2V5cGF0Y2hgYCBjbGFzcyBoYXMgYmVlbiByZW5hbWVk
IHRvIGBgX3B5dGVzdC5tb25rZXlwYXRjaC5Nb25rZXlQYXRjaGBgCi0gIHNvIGl0IGRvZXNuJ3Qg
Y29uZmxpY3Qgd2l0aCB0aGUgYGBtb25rZXlwYXRjaGBgIGZpeHR1cmUuCi0KLSogYGAtLWV4aXRm
aXJzdCAvIC14YGAgY2FuIG5vdyBiZSBvdmVycmlkZGVuIGJ5IGEgZm9sbG93aW5nIGBgLS1tYXhm
YWlsPU5gYAotICBhbmQgaXMganVzdCBhIHN5bm9ueW0gZm9yIGBgLS1tYXhmYWlsPTFgYC4KLQot
Ci0qKk5ldyBGZWF0dXJlcyoqCi0KLSogU3VwcG9ydCBub3NlLXN0eWxlIGBgX190ZXN0X19gYCBh
dHRyaWJ1dGUgb24gbWV0aG9kcyBvZiBjbGFzc2VzLAotICBpbmNsdWRpbmcgdW5pdHRlc3Qtc3R5
bGUgQ2xhc3Nlcy4gSWYgc2V0IHRvIGBgRmFsc2VgYCwgdGhlIHRlc3Qgd2lsbCBub3QgYmUKLSAg
Y29sbGVjdGVkLgotCi0qIE5ldyBgYGRvY3Rlc3RfbmFtZXNwYWNlYGAgZml4dHVyZSBmb3IgaW5q
ZWN0aW5nIG5hbWVzIGludG8gdGhlCi0gIG5hbWVzcGFjZSBpbiB3aGljaCBkb2N0ZXN0cyBydW4u
Ci0gIFRoYW5rcyBgQG1pbGxpYW1zYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNDI4YF8pLgot
Ci0qIE5ldyBgYC0tZG9jdGVzdC1yZXBvcnRgYCBvcHRpb24gYXZhaWxhYmxlIHRvIGNoYW5nZSB0
aGUgb3V0cHV0IGZvcm1hdCBvZiBkaWZmcwotICB3aGVuIHJ1bm5pbmcgKGZhaWxpbmcpIGRvY3Rl
c3RzIChpbXBsZW1lbnRzIGAjMTc0OWBfKS4KLSAgVGhhbmtzIGBAaGFydHltYF8gZm9yIHRoZSBQ
Ui4KLQotKiBOZXcgYGBuYW1lYGAgYXJndW1lbnQgdG8gYGBweXRlc3QuZml4dHVyZWBgIGRlY29y
YXRvciB3aGljaCBhbGxvd3MgYSBjdXN0b20gbmFtZQotICBmb3IgYSBmaXh0dXJlICh0byBzb2x2
ZSB0aGUgZnVuY2FyZy1zaGFkb3dpbmctZml4dHVyZSBwcm9ibGVtKS4KLSAgVGhhbmtzIGBAbm92
YXMweDJhYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNDQ0YF8pLgotCi0qIE5ldyBgYGFwcHJv
eCgpYGAgZnVuY3Rpb24gZm9yIGVhc2lseSBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVy
cyBpbgotICB0ZXN0cy4KLSAgVGhhbmtzIGBAa2FsZWt1bmRlcnRgXyBmb3IgdGhlIGNvbXBsZXRl
IFBSIChgIzE0NDFgXykuCi0KLSogQWJpbGl0eSB0byBhZGQgZ2xvYmFsIHByb3BlcnRpZXMgaW4g
dGhlIGZpbmFsIHh1bml0IG91dHB1dCBmaWxlIGJ5IGFjY2Vzc2luZwotICB0aGUgaW50ZXJuYWwg
YGBqdW5pdHhtbGBgIHBsdWdpbiAoZXhwZXJpbWVudGFsKS4KLSAgVGhhbmtzIGBAdGFyZXFhbGF5
YW5gXyBmb3IgdGhlIGNvbXBsZXRlIFBSIGAjMTQ1NGBfKS4KLQotKiBOZXcgYGBFeGNlcHRpb25J
bmZvLm1hdGNoKClgYCBtZXRob2QgdG8gbWF0Y2ggYSByZWd1bGFyIGV4cHJlc3Npb24gb24gdGhl
Ci0gIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBleGNlcHRpb24gKGAjMzcyYF8pLgotICBU
aGFua3MgYEBvbWFya29obGBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTUwMmBfKS4KLQotKiBg
YF9fdHJhY2ViYWNraGlkZV9fYGAgY2FuIG5vdyBhbHNvIGJlIHNldCB0byBhIGNhbGxhYmxlIHdo
aWNoIHRoZW4gY2FuIGRlY2lkZQotICB3aGV0aGVyIHRvIGZpbHRlciB0aGUgdHJhY2ViYWNrIGJh
c2VkIG9uIHRoZSBgYEV4Y2VwdGlvbkluZm9gYCBvYmplY3QgcGFzc2VkCi0gIHRvIGl0LiBUaGFu
a3MgYEBUaGUtQ29tcGlsZXJgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE1MjZgXykuCi0KLSog
TmV3IGBgcHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQoY29uZmlnLCB2YWwpYGAgaG9vayB3aGlj
aCBjYW4gYmUgdXNlZCBieSBwbHVnaW5zIHRvIHByb3ZpZGUKLSAgZnJpZW5kbHkgc3RyaW5ncyBm
b3IgY3VzdG9tIHR5cGVzLgotICBUaGFua3MgYEBwYWxhdml2YF8gZm9yIHRoZSBQUi4KLQotKiBg
YGNhcHN5c2BgIGFuZCBgYGNhcGZkYGAgbm93IGhhdmUgYSBgYGRpc2FibGVkKClgYCBjb250ZXh0
LW1hbmFnZXIgbWV0aG9kLCB3aGljaAotICBjYW4gYmUgdXNlZCB0byB0ZW1wb3JhcmlseSBkaXNh
YmxlIGNhcHR1cmUgd2l0aGluIGEgdGVzdC4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0
aGUgUFIuCi0KLSogTmV3IGNsaSBmbGFnIGBgLS1maXh0dXJlcy1wZXItdGVzdGBgOiBzaG93cyB3
aGljaCBmaXh0dXJlcyBhcmUgYmVpbmcgdXNlZAotICBmb3IgZWFjaCBzZWxlY3RlZCB0ZXN0IGl0
ZW0uIEZlYXR1cmVzIGRvYyBzdHJpbmdzIG9mIGZpeHR1cmVzIGJ5IGRlZmF1bHQuCi0gIENhbiBh
bHNvIHNob3cgd2hlcmUgZml4dHVyZXMgYXJlIGRlZmluZWQgaWYgY29tYmluZWQgd2l0aCBgYC12
YGAuCi0gIFRoYW5rcyBgQGhhY2tlYnJvdGBfIGZvciB0aGUgUFIuCi0KLSogSW50cm9kdWNlIGBg
cHl0ZXN0YGAgY29tbWFuZCBhcyByZWNvbW1lbmRlZCBlbnRyeSBwb2ludC4gTm90ZSB0aGF0IGBg
cHkudGVzdGBgCi0gIHN0aWxsIHdvcmtzIGFuZCBpcyBub3Qgc2NoZWR1bGVkIGZvciByZW1vdmFs
LiBDbG9zZXMgcHJvcG9zYWwKLSAgYCMxNjI5YF8uIFRoYW5rcyBgQG9iZXN0d2FsdGVyYF8gYW5k
IGBAZGF2ZWh1bnRgXyBmb3IgdGhlIGNvbXBsZXRlIFBSCi0gIChgIzE2MzNgXykuCi0KLSogTmV3
IGNsaSBmbGFnczoKLQotICArIGBgLS1zZXR1cC1wbGFuYGA6IHBlcmZvcm1zIG5vcm1hbCBjb2xs
ZWN0aW9uIGFuZCByZXBvcnRzCi0gICAgdGhlIHBvdGVudGlhbCBzZXR1cCBhbmQgdGVhcmRvd24g
YW5kIGRvZXMgbm90IGV4ZWN1dGUgYW55IGZpeHR1cmVzIGFuZCB0ZXN0czsKLSAgKyBgYC0tc2V0
dXAtb25seWBgOiBwZXJmb3JtcyBub3JtYWwgY29sbGVjdGlvbiwgZXhlY3V0ZXMgc2V0dXAgYW5k
IHRlYXJkb3duIG9mCi0gICAgZml4dHVyZXMgYW5kIHJlcG9ydHMgdGhlbTsKLSAgKyBgYC0tc2V0
dXAtc2hvd2BgOiBwZXJmb3JtcyBub3JtYWwgdGVzdCBleGVjdXRpb24gYW5kIGFkZGl0aW9uYWxs
eSBzaG93cwotICAgIHNldHVwIGFuZCB0ZWFyZG93biBvZiBmaXh0dXJlczsKLSAgKyBgYC0ta2Vl
cC1kdXBsaWNhdGVzYGA6IHB5LnRlc3Qgbm93IGlnbm9yZXMgZHVwbGljYXRlZCBwYXRocyBnaXZl
biBpbiB0aGUgY29tbWFuZAotICAgIGxpbmUuIFRvIHJldGFpbiB0aGUgcHJldmlvdXMgYmVoYXZp
b3Igd2hlcmUgdGhlIHNhbWUgdGVzdCBjb3VsZCBiZSBydW4gbXVsdGlwbGUKLSAgICB0aW1lcyBi
eSBzcGVjaWZ5aW5nIGl0IGluIHRoZSBjb21tYW5kLWxpbmUgbXVsdGlwbGUgdGltZXMsIHBhc3Mg
dGhlIGBgLS1rZWVwLWR1cGxpY2F0ZXNgYAotICAgIGFyZ3VtZW50IChgIzE2MDlgXyk7Ci0KLSAg
VGhhbmtzIGBAZDZlYF8sIGBAa3Zhcy1pdGBfLCBgQHNhbGxuZXJgXywgYEBpb2dnc3RyZWFtYF8g
YW5kIGBAb21hcmtvaGxgXyBmb3IgdGhlIFBScy4KLQotKiBOZXcgQ0xJIGZsYWcgYGAtLW92ZXJy
aWRlLWluaWBgL2BgLW9gYDogb3ZlcnJpZGVzIHZhbHVlcyBmcm9tIHRoZSBpbmkgZmlsZS4KLSAg
Rm9yIGV4YW1wbGU6IGBgIi1vIHhmYWlsX3N0cmljdD1UcnVlImBgJy4KLSAgVGhhbmtzIGBAYmx1
ZXllZGBfIGFuZCBgQGZlbmd4eGBfIGZvciB0aGUgUFIuCi0KLSogTmV3IGhvb2tzOgotCi0gICsg
YGBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCByZXF1ZXN0KWBgOiBleGVjdXRlcyBm
aXh0dXJlIHNldHVwOwotICArIGBgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXIoZml4dHVy
ZWRlZilgYDogY2FsbGVkIGFmdGVyIHRoZSBmaXh0dXJlJ3MKLSAgICBmaW5hbGl6ZXIgYW5kIGhh
cyBhY2Nlc3MgdG8gdGhlIGZpeHR1cmUncyByZXN1bHQgY2FjaGUuCi0KLSAgVGhhbmtzIGBAZDZl
YF8sIGBAc2FsbG5lcmBfLgotCi0qIElzc3VlIHdhcm5pbmdzIGZvciBhc3NlcnRzIHdob3NlIHRl
c3QgaXMgYSB0dXBsZSBsaXRlcmFsLiBTdWNoIGFzc2VydHMgd2lsbAotICBuZXZlciBmYWlsIGJl
Y2F1c2UgdHVwbGVzIGFyZSBhbHdheXMgdHJ1dGh5IGFuZCBhcmUgdXN1YWxseSBhIG1pc3Rha2UK
LSAgKHNlZSBgIzE1NjJgXykuIFRoYW5rcyBgQGt2YXMtaXRgXywgZm9yIHRoZSBQUi4KLQotKiBB
bGxvdyBwYXNzaW5nIGEgY3VzdG9tIGRlYnVnZ2VyIGNsYXNzIChlLmcuIGBgLS1wZGJjbHM9SVB5
dGhvbi5jb3JlLmRlYnVnZ2VyOlBkYmBgKS4KLSAgVGhhbmtzIHRvIGBAYW5udHplcmBfIGZvciB0
aGUgUFIuCi0KLQotKipDaGFuZ2VzKioKLQotKiBQbHVnaW5zIG5vdyBiZW5lZml0IGZyb20gYXNz
ZXJ0aW9uIHJld3JpdGluZy4gIFRoYW5rcwotICBgQHNvYmVyN2BfLCBgQG5pY29kZGVtdXNgXyBh
bmQgYEBmbHViYF8gZm9yIHRoZSBQUi4KLQotKiBDaGFuZ2UgYGByZXBvcnQub3V0Y29tZWBgIGZv
ciBgYHhwYXNzZWRgYCB0ZXN0cyB0byBgYCJwYXNzZWQiYGAgaW4gbm9uLXN0cmljdAotICBtb2Rl
IGFuZCBgYCJmYWlsZWQiYGAgaW4gc3RyaWN0IG1vZGUuIFRoYW5rcyB0byBgQGhhY2tlYnJvdGBf
IGZvciB0aGUgUFIKLSAgKGAjMTc5NWBfKSBhbmQgYEBncHJhc2FkODRgXyBmb3IgcmVwb3J0IChg
IzE1NDZgXykuCi0KLSogVGVzdHMgbWFya2VkIHdpdGggYGB4ZmFpbChzdHJpY3Q9RmFsc2UpYGAg
KHRoZSBkZWZhdWx0KSBub3cgYXBwZWFyIGluCi0gIEpVbml0WE1MIHJlcG9ydHMgYXMgcGFzc2lu
ZyB0ZXN0cyBpbnN0ZWFkIG9mIHNraXBwZWQuCi0gIFRoYW5rcyB0byBgQGhhY2tlYnJvdGBfIGZv
ciB0aGUgUFIgKGAjMTc5NWBfKS4KLQotKiBIaWdobGlnaHQgcGF0aCBvZiB0aGUgZmlsZSBsb2Nh
dGlvbiBpbiB0aGUgZXJyb3IgcmVwb3J0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcHkvcGFzdGUu
Ci0gIFRoYW5rcyBgQHN1emFrdWBfIGZvciB0aGUgUFIgKGAjMTc3OGBfKS4KLQotKiBGaXh0dXJl
cyBtYXJrZWQgd2l0aCBgYEBweXRlc3QuZml4dHVyZWBgIGNhbiBub3cgdXNlIGBgeWllbGRgYCBz
dGF0ZW1lbnRzIGV4YWN0bHkgbGlrZQotICB0aG9zZSBtYXJrZWQgd2l0aCB0aGUgYGBAcHl0ZXN0
LnlpZWxkX2ZpeHR1cmVgYCBkZWNvcmF0b3IuIFRoaXMgY2hhbmdlIHJlbmRlcnMKLSAgYGBAcHl0
ZXN0LnlpZWxkX2ZpeHR1cmVgYCBkZXByZWNhdGVkIGFuZCBtYWtlcyBgYEBweXRlc3QuZml4dHVy
ZWBgIHdpdGggYGB5aWVsZGBgIHN0YXRlbWVudHMKLSAgdGhlIHByZWZlcnJlZCB3YXkgdG8gd3Jp
dGUgdGVhcmRvd24gY29kZSAoYCMxNDYxYF8pLgotICBUaGFua3MgYEBjc2FmdG9pdWBfIGZvciBi
cmluZ2luZyB0aGlzIHRvIGF0dGVudGlvbiBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4K
LQotKiBFeHBsaWNpdGx5IHBhc3NlZCBwYXJhbWV0cml6ZSBpZHMgZG8gbm90IGdldCBlc2NhcGVk
IHRvIGFzY2lpIChgIzEzNTFgXykuCi0gIFRoYW5rcyBgQGNlcmlkd2VuYF8gZm9yIHRoZSBQUi4K
LQotKiBGaXh0dXJlcyBhcmUgbm93IHNvcnRlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZSBkaXNwbGF5
ZWQgd2hlbiBhbiB1bmtub3duCi0gIGZpeHR1cmUgaXMgZGVjbGFyZWQgaW4gYSB0ZXN0IGZ1bmN0
aW9uLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBgYHB5dGVzdF90
ZXJtaW5hbF9zdW1tYXJ5YGAgaG9vayBub3cgcmVjZWl2ZXMgdGhlIGBgZXhpdHN0YXR1c2BgCi0g
IG9mIHRoZSB0ZXN0IHNlc3Npb24gYXMgYXJndW1lbnQuIFRoYW5rcyBgQGJsdWV5ZWRgXyBmb3Ig
dGhlIFBSIChgIzE4MDlgXykuCi0KLSogUGFyYW1ldHJpemUgaWRzIGNhbiBhY2NlcHQgYGBOb25l
YGAgYXMgc3BlY2lmaWMgdGVzdCBpZCwgaW4gd2hpY2ggY2FzZSB0aGUKLSAgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgaWQgZm9yIHRoYXQgYXJndW1lbnQgd2lsbCBiZSB1c2VkLgotICBUaGFua3Mg
YEBwYWxhdml2YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNDY4YF8pLgotCi0qIFRoZSBwYXJh
bWV0ZXIgdG8geHVuaXQtc3R5bGUgc2V0dXAvdGVhcmRvd24gbWV0aG9kcyAoYGBzZXR1cF9tZXRo
b2RgYCwKLSAgYGBzZXR1cF9tb2R1bGVgYCwgZXRjLikgaXMgbm93IG9wdGlvbmFsIGFuZCBtYXkg
YmUgb21pdHRlZC4KLSAgVGhhbmtzIGBAb2trZW5gXyBmb3IgYnJpbmdpbmcgdGhpcyB0byBhdHRl
bnRpb24gYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogSW1wcm92ZWQgYXV0b21h
dGljIGlkIGdlbmVyYXRpb24gc2VsZWN0aW9uIGluIGNhc2Ugb2YgZHVwbGljYXRlIGlkcyBpbgot
ICBwYXJhbWV0cml6ZS4KLSAgVGhhbmtzIGBAcGFsYXZpdmBfIGZvciB0aGUgY29tcGxldGUgUFIg
KGAjMTQ3NGBfKS4KLQotKiBOb3cgcHl0ZXN0IHdhcm5pbmdzIHN1bW1hcnkgaXMgc2hvd24gdXAg
YnkgZGVmYXVsdC4gQWRkZWQgYSBuZXcgZmxhZwotICBgYC0tZGlzYWJsZS1weXRlc3Qtd2Fybmlu
Z3NgYCB0byBleHBsaWNpdGx5IGRpc2FibGUgdGhlIHdhcm5pbmdzIHN1bW1hcnkgKGAjMTY2OGBf
KS4KLQotKiBNYWtlIEltcG9ydEVycm9yIGR1cmluZyBjb2xsZWN0aW9uIG1vcmUgZXhwbGljaXQg
YnkgcmVtaW5kaW5nCi0gIHRoZSB1c2VyIHRvIGNoZWNrIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IG1v
ZHVsZS9wYWNrYWdlKHMpIChgIzE0MjZgXykuCi0gIFRoYW5rcyBgQG9tYXJrb2hsYF8gZm9yIHRo
ZSBjb21wbGV0ZSBQUiAoYCMxNTIwYF8pLgotCi0qIEFkZCBgYGJ1aWxkL2BgIGFuZCBgYGRpc3Qv
YGAgdG8gdGhlIGRlZmF1bHQgYGAtLW5vcmVjdXJzZWRpcnNgYCBsaXN0LiBUaGFua3MKLSAgYEBt
aWtvZnNraWBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUiAoYCMx
NTQ0YF8pLgotCi0qIGBgcHl0ZXN0LnJhaXNlc2BgIGluIHRoZSBjb250ZXh0IG1hbmFnZXIgZm9y
bSBhY2NlcHRzIGEgY3VzdG9tCi0gIGBgbWVzc2FnZWBgIHRvIHJhaXNlIHdoZW4gbm8gZXhjZXB0
aW9uIG9jY3VycmVkLgotICBUaGFua3MgYEBwYWxhdml2YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAo
YCMxNjE2YF8pLgotCi0qIGBgY29uZnRlc3QucHlgYCBmaWxlcyBub3cgYmVuZWZpdCBmcm9tIGFz
c2VydGlvbiByZXdyaXRpbmc7IHByZXZpb3VzbHkgaXQKLSAgd2FzIG9ubHkgYXZhaWxhYmxlIGZv
ciB0ZXN0IG1vZHVsZXMuIFRoYW5rcyBgQGZsdWJgXywgYEBzb2JlcjdgXyBhbmQKLSAgYEBuaWNv
ZGRlbXVzYF8gZm9yIHRoZSBQUiAoYCMxNjE5YF8pLgotCi0qIFRleHQgZG9jdW1lbnRzIHdpdGhv
dXQgYW55IGRvY3Rlc3RzIG5vIGxvbmdlciBhcHBlYXIgYXMgInNraXBwZWQiLgotICBUaGFua3Mg
YEBncmFpbmdlcnRgXyBmb3IgcmVwb3J0aW5nIGFuZCBwcm92aWRpbmcgYSBmdWxsIFBSIChgIzE1
ODBgXykuCi0KLSogRW5zdXJlIHRoYXQgYSBtb2R1bGUgd2l0aGluIGEgbmFtZXNwYWNlIHBhY2th
Z2UgY2FuIGJlIGZvdW5kIHdoZW4gaXQKLSAgaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxp
bmUgdG9nZXRoZXIgd2l0aCB0aGUgYGAtLXB5YXJnc2BgCi0gIG9wdGlvbi4gIFRoYW5rcyB0byBg
QHRhc2NoaW5pYF8gZm9yIHRoZSBQUiAoYCMxNTk3YF8pLgotCi0qIEFsd2F5cyBpbmNsdWRlIGZ1
bGwgYXNzZXJ0aW9uIGV4cGxhbmF0aW9uIGR1cmluZyBhc3NlcnRpb24gcmV3cml0aW5nLiBUaGUg
cHJldmlvdXMgYmVoYXZpb3VyIHdhcyBoaWRpbmcKLSAgc3ViLWV4cHJlc3Npb25zIHRoYXQgaGFw
cGVuZWQgdG8gYmUgYGBGYWxzZWBgLCBhc3N1bWluZyB0aGlzIHdhcyByZWR1bmRhbnQgaW5mb3Jt
YXRpb24uCi0gIFRoYW5rcyBgQGJhZ2VyYXJkYF8gZm9yIHJlcG9ydGluZyAoYCMxNTAzYF8pLiBU
aGFua3MgdG8gYEBkYXZlaHVudGBfIGFuZAotICBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KLQot
KiBgYE9wdGlvbkdyb3VwLmFkZG9wdGlvbigpYGAgbm93IGNoZWNrcyBpZiBvcHRpb24gbmFtZXMg
d2VyZSBhbHJlYWR5Ci0gIGFkZGVkIGJlZm9yZSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdHJhY2sg
ZG93biBpc3N1ZXMgbGlrZSBgIzE2MThgXy4KLSAgQmVmb3JlLCB5b3Ugb25seSBnb3QgZXhjZXB0
aW9ucyBsYXRlciBmcm9tIGBgYXJncGFyc2VgYCBsaWJyYXJ5LAotICBnaXZpbmcgbm8gY2x1ZSBh
Ym91dCB0aGUgYWN0dWFsIHJlYXNvbiBmb3IgZG91YmxlLWFkZGVkIG9wdGlvbnMuCi0KLSogYGB5
aWVsZGBgLWJhc2VkIHRlc3RzIGFyZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUg
cmVtb3ZlZCBpbiBweXRlc3QtNC4wLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KLQotKiBgYFtweXRlc3RdYGAgc2VjdGlvbnMgaW4gYGBzZXR1cC5jZmdgYCBmaWxlcyBzaG91
bGQgbm93IGJlIG5hbWVkIGBgW3Rvb2w6cHl0ZXN0XWBgCi0gIHRvIGF2b2lkIGNvbmZsaWN0cyB3
aXRoIG90aGVyIGRpc3R1dGlscyBjb21tYW5kcyAoc2VlIGAjNTY3YF8pLiBgYFtweXRlc3RdYGAg
c2VjdGlvbnMgaW4KLSAgYGBweXRlc3QuaW5pYGAgb3IgYGB0b3guaW5pYGAgZmlsZXMgYXJlIHN1
cHBvcnRlZCBhbmQgdW5jaGFuZ2VkLgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KLQotKiBVc2luZyBgYHB5dGVzdF9mdW5jYXJnX19gYCBwcmVmaXggdG8gZGVjbGFyZSBmaXh0
dXJlcyBpcyBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKLSAgcmVtb3ZlZCBpbiBw
eXRlc3QtNC4wIChgIzE2ODRgXykuCi0gIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBS
LgotCi0qIFBhc3NpbmcgYSBjb21tYW5kLWxpbmUgc3RyaW5nIHRvIGBgcHl0ZXN0Lm1haW4oKWBg
IGlzIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkCi0gIGZvciByZW1vdmFsIGlu
IHB5dGVzdC00LjAuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHBhc3MgYSBsaXN0IG9mIGFyZ3VtZW50
cyBpbnN0ZWFkIChgIzE3MjNgXykuCi0KLSogUmVuYW1lIGBgZ2V0ZnVuY2FyZ3ZhbHVlYGAgdG8g
YGBnZXRmaXh0dXJldmFsdWVgYC4gYGBnZXRmdW5jYXJndmFsdWVgYCBpcwotICBzdGlsbCBwcmVz
ZW50IGJ1dCBpcyBub3cgY29uc2lkZXJlZCBkZXByZWNhdGVkLiBUaGFua3MgdG8gYEBSZWRCZWFy
ZENvZGVgXyBhbmQgYEB0b212aW5lcmBfCi0gIGZvciB0aGUgUFIgKGAjMTYyNmBfKS4KLQotKiBg
YG9wdHBhcnNlYGAgdHlwZSB1c2FnZSBub3cgdHJpZ2dlcnMgRGVwcmVjYXRpb25XYXJuaW5ncyAo
YCMxNzQwYF8pLgotCi0KLSogYGBvcHRwYXJzZWBgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc3Vw
cG9ydHMgZmxvYXQvY29tcGxleCB0eXBlcyAoYCM0NTdgXykuCi0KLSogUmVmaW5lZCBsb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgdGhlIGBgcm9vdGRpcmBgLCBjb25zaWRlcmluZyBvbmx5IHZhbGlkCi0g
IHBhdGhzIHdoaWNoIGZpeGVzIGEgbnVtYmVyIG9mIGlzc3VlczogYCMxNTk0YF8sIGAjMTQzNWBf
IGFuZCBgIzE0NzFgXy4KLSAgVXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhY2NvcmRpbmcgdG8g
Y3VycmVudCBiZWhhdmlvci4gVGhhbmtzIHRvCi0gIGBAYmx1ZXllZGBfLCBgQGRhdmVodW50YF8g
YW5kIGBAbWF0dGhpYXNoYWBfIGZvciB0aGUgUFIuCi0KLSogQWx3YXlzIGluY2x1ZGUgZnVsbCBh
c3NlcnRpb24gZXhwbGFuYXRpb24uIFRoZSBwcmV2aW91cyBiZWhhdmlvdXIgd2FzIGhpZGluZwot
ICBzdWItZXhwcmVzc2lvbnMgdGhhdCBoYXBwZW5lZCB0byBiZSBGYWxzZSwgYXNzdW1pbmcgdGhp
cyB3YXMgcmVkdW5kYW50IGluZm9ybWF0aW9uLgotICBUaGFua3MgYEBiYWdlcmFyZGBfIGZvciBy
ZXBvcnRpbmcgKGAjMTUwM2BfKS4gVGhhbmtzIHRvIGBAZGF2ZWh1bnRgXyBhbmQKLSAgYEB0b212
aW5lcmBfIGZvciBQUi4KLQotKiBCZXR0ZXIgbWVzc2FnZSBpbiBjYXNlIG9mIG5vdCB1c2luZyBw
YXJhbWV0cml6ZWQgdmFyaWFibGUgKHNlZSBgIzE1MzlgXykuCi0gIFRoYW5rcyB0byBgQHRyYW13
YWoyOWBfIGZvciB0aGUgUFIuCi0KLSogVXBkYXRlZCBkb2NzdHJpbmdzIHdpdGggYSBtb3JlIHVu
aWZvcm0gc3R5bGUuCi0KLSogQWRkIHN0ZGVyciB3cml0ZSBmb3IgYGBweXRlc3QuZXhpdChtc2cp
YGAgZHVyaW5nIHN0YXJ0dXAuIFByZXZpb3VzbHkgdGhlIG1lc3NhZ2Ugd2FzIG5ldmVyIHNob3du
LgotICBUaGFua3MgYEBCZXlvbmRFdmlsYF8gZm9yIHJlcG9ydGluZyBgIzEyMTBgXy4gVGhhbmtz
IHRvIGBASm9uYXRob25Tb25lc2VuYF8gYW5kCi0gIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSLgot
Ci0qIE5vIGxvbmdlciBkaXNwbGF5IHRoZSBpbmNvcnJlY3QgdGVzdCBkZXNlbGVjdGlvbiByZWFz
b24gKGAjMTM3MmBfKS4KLSAgVGhhbmtzIGBAcm9ubnlwZmFubnNjaG1pZHRgXyBmb3IgdGhlIFBS
LgotCi0qIFRoZSBgYC0tcmVzdWx0bG9nYGAgY29tbWFuZCBsaW5lIG9wdGlvbiBoYXMgYmVlbiBk
ZXByZWNhdGVkOiBpdCBpcyBsaXR0bGUgdXNlZAotICBhbmQgdGhlcmUgYXJlIG1vcmUgbW9kZXJu
IGFuZCBiZXR0ZXIgYWx0ZXJuYXRpdmVzIChzZWUgYCM4MzBgXykuCi0gIFRoYW5rcyBgQG5pY29k
ZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aXRoIGZpeHR1
cmUgbG9va3VwIGVycm9yczogYWRkIGFuICdFJyB0byB0aGUgZmlyc3QKLSAgbGluZSBhbmQgJz4n
IHRvIHRoZSByZXN0LiBGaXhlcyBgIzcxN2BfLiBUaGFua3MgYEBibHVleWVkYF8gZm9yIHJlcG9y
dGluZyBhbmQKLSAgYSBQUiwgYEBlb2xvOTk5YF8gZm9yIHRoZSBpbml0aWFsIFBSIGFuZCBgQHRv
bXZpbmVyYF8gZm9yIGhpcyBndWlkYW5jZSBkdXJpbmcKLSAgRXVyb1B5dGhvbjIwMTYgc3ByaW50
LgotCi0KLSoqQnVnIEZpeGVzKioKLQotKiBQYXJhbWV0cml6ZSBub3cgY29ycmVjdGx5IGhhbmRs
ZXMgZHVwbGljYXRlZCB0ZXN0IGlkcy4KLQotKiBGaXggaW50ZXJuYWwgZXJyb3IgaXNzdWUgd2hl
biB0aGUgYGBtZXRob2RgYCBhcmd1bWVudCBpcyBtaXNzaW5nIGZvcgotICBgYHRlYXJkb3duX21l
dGhvZCgpYGAgKGAjMTYwNWBfKS4KLQotKiBGaXggZXhjZXB0aW9uIHZpc3VhbGl6YXRpb24gaW4g
Y2FzZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAoQ1dEKSBnZXRzCi0gIGRlbGV0ZWQg
ZHVyaW5nIHRlc3RpbmcgKGAjMTIzNWBfKS4gVGhhbmtzIGBAYnVrem9yYF8gZm9yIHJlcG9ydGlu
Zy4gUFIgYnkKLSAgYEBtYXJzY2hlcmBfLgotCi0qIEltcHJvdmUgdGVzdCBvdXRwdXQgZm9yIGxv
Z2ljYWwgZXhwcmVzc2lvbiB3aXRoIGJyYWNrZXRzIChgIzkyNWBfKS4KLSAgVGhhbmtzIGBARFJN
YWNJdmVyYF8gZm9yIHJlcG9ydGluZyBhbmQgYEBSZWRCZWFyZENvZGVgXyBmb3IgdGhlIFBSLgot
Ci0qIENyZWF0ZSBjb3JyZWN0IGRpZmYgZm9yIHN0cmluZ3MgZW5kaW5nIHdpdGggbmV3bGluZXMg
KGAjMTU1M2BfKS4KLSAgVGhhbmtzIGBAVm9ndGluYXRvcmBfIGZvciByZXBvcnRpbmcgYW5kIGBA
UmVkQmVhcmRDb2RlYF8gYW5kCi0gIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSLgotCi0qIGBgQ29u
ZnRlc3RJbXBvcnRGYWlsdXJlYGAgbm93IHNob3dzIHRoZSB0cmFjZWJhY2sgbWFraW5nIGl0IGVh
c2llciB0bwotICBpZGVudGlmeSBidWdzIGluIGBgY29uZnRlc3QucHlgYCBmaWxlcyAoYCMxNTE2
YF8pLiBUaGFua3MgYEB0eG9tb25gXyBmb3IKLSAgdGhlIFBSLgotCi0qIFRleHQgZG9jdW1lbnRz
IHdpdGhvdXQgYW55IGRvY3Rlc3RzIG5vIGxvbmdlciBhcHBlYXIgYXMgInNraXBwZWQiLgotICBU
aGFua3MgYEBncmFpbmdlcnRgXyBmb3IgcmVwb3J0aW5nIGFuZCBwcm92aWRpbmcgYSBmdWxsIFBS
IChgIzE1ODBgXykuCi0KLSogRml4ZWQgY29sbGVjdGlvbiBvZiBjbGFzc2VzIHdpdGggY3VzdG9t
IGBgX19uZXdfX2BgIG1ldGhvZC4KLSAgRml4ZXMgYCMxNTc5YF8uIFRoYW5rcyB0byBgQFN0cmFu
Z2VyNjY2N2BfIGZvciB0aGUgUFIuCi0KLSogRml4ZWQgc2NvcGUgb3ZlcnJpZGluZyBpbnNpZGUg
bWV0YWZ1bmMucGFyYW1ldHJpemUgKGAjNjM0YF8pLgotICBUaGFua3MgdG8gYEBTdHJhbmdlcjY2
NjdgXyBmb3IgdGhlIFBSLgotCi0qIEZpeGVkIHRoZSB0b3RhbCB0ZXN0cyB0YWxseSBpbiBqdW5p
dCB4bWwgb3V0cHV0IChgIzE3OThgXykuCi0gIFRoYW5rcyB0byBgQGNyeXBvcmNoaWxkYF8gZm9y
IHRoZSBQUi4KLQotKiBGaXhlZCBvZmYtYnktb25lIGVycm9yIHdpdGggbGluZXMgZnJvbSBgYHJl
cXVlc3Qubm9kZS53YXJuYGAuCi0gIFRoYW5rcyB0byBgQGJsdWV5ZWRgXyBmb3IgdGhlIFBSLgot
Ci0KLS4uIF8jMTIxMDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xMjEwCi0uLiBfIzEyMzU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMTIzNQotLi4gXyMxMzUxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzEzNTEKLS4uIF8jMTM3MjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8xMzcyCi0uLiBfIzE0MjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTQyMQotLi4gXyMxNDI2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0MjYKLS4uIF8jMTQyODogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQyOAotLi4gXyMxNDM1OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0MzUKLS4uIF8jMTQ0MTogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ0MQotLi4gXyMxNDQ0OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNDQ0Ci0uLiBfIzE0NTQ6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE0NTQKLS4uIF8jMTQ2MTogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ2MQotLi4gXyMxNDY4OiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNDY4Ci0uLiBfIzE0NzE6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ3MQotLi4gXyMxNDc0
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNDc0Ci0uLiBfIzE0
Nzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ3OQotLi4g
XyMxNTAyOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTAyCi0u
LiBfIzE1MDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTUw
MwotLi4gXyMxNTE2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8x
NTE2Ci0uLiBfIzE1MTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxs
LzE1MTkKLS4uIF8jMTUyMDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1
bGwvMTUyMAotLi4gXyMxNTI2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
cHVsbC8xNTI2Ci0uLiBfIzE1Mzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMTUzOQotLi4gXyMxNTQ0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE1NDQKLS4uIF8jMTU0NjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xNTQ2Ci0uLiBfIzE1NTM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU1MwotLi4gXyMxNTYyOiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1NjIKLS4uIF8jMTU3OTogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTc5Ci0uLiBfIzE1ODA6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1ODAKLS4uIF8jMTU5NDogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTk0Ci0uLiBfIzE1OTc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1OTcKLS4uIF8jMTYwNTogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjA1Ci0uLiBfIzE2MTY6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE2MTYKLS4uIF8jMTYx
ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjE4Ci0uLiBf
IzE2MTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYxOQot
Li4gXyMxNjI2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjI2
Ci0uLiBfIzE2Mjc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE2
MjcKLS4uIF8jMTYyODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwv
MTYyOAotLi4gXyMxNjI5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE2MjkKLS4uIF8jMTYzMjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xNjMyCi0uLiBfIzE2MzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9wdWxsLzE2MzMKLS4uIF8jMTY2NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L3B1bGwvMTY2NAotLi4gXyMxNjY4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzE2NjgKLS4uIF8jMTY4NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L3B1bGwvMTY4NAotLi4gXyMxNzIzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvcHVsbC8xNzIzCi0uLiBfIzE3NDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTc0MAotLi4gXyMxNzQ5OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE3NDkKLS4uIF8jMTc3ODogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTc3OAotLi4gXyMxNzk1OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNzk1Ci0uLiBfIzE3OTg6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE3OTgKLS4uIF8jMTgwOTogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTgwOQotLi4gXyMzNzI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzcyCi0uLiBfIzQ1NzogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTcKLS4uIF8jNDYwOiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC80NjAKLS4uIF8jNTY3OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC81NjcKLS4uIF8jNjA3OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYwNwotLi4gXyM2MzQ6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjM0Ci0uLiBfIzcx
NzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTcKLS4uIF8j
ODMwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzgzMAotLi4g
XyM5MjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvOTI1Ci0K
LQotLi4gX0Bhbm50emVyOiBodHRwczovL2dpdGh1Yi5jb20vYW5udHplcgotLi4gX0BiYWdlcmFy
ZDogaHR0cHM6Ly9naXRodWIuY29tL2JhZ2VyYXJkCi0uLiBfQEJleW9uZEV2aWw6IGh0dHBzOi8v
Z2l0aHViLmNvbS9CZXlvbmRFdmlsCi0uLiBfQGJsdWV5ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9i
bHVleWVkCi0uLiBfQGNlcmlkd2VuOiBodHRwczovL2dpdGh1Yi5jb20vY2VyaWR3ZW4KLS4uIF9A
Y3J5cG9yY2hpbGQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9jcnlwb3JjaGlsZAotLi4gX0Bjc2FmdG9p
dTogaHR0cHM6Ly9naXRodWIuY29tL2NzYWZ0b2l1Ci0uLiBfQGQ2ZTogaHR0cHM6Ly9naXRodWIu
Y29tL2Q2ZQotLi4gX0BkYXZlaHVudDogaHR0cHM6Ly9naXRodWIuY29tL2RhdmVodW50Ci0uLiBf
QERSTWFjSXZlcjogaHR0cHM6Ly9naXRodWIuY29tL0RSTWFjSXZlcgotLi4gX0Blb2xvOTk5OiBo
dHRwczovL2dpdGh1Yi5jb20vZW9sbzk5OQotLi4gX0BmZW5neHg6IGh0dHBzOi8vZ2l0aHViLmNv
bS9mZW5neHgKLS4uIF9AZmx1YjogaHR0cHM6Ly9naXRodWIuY29tL2ZsdWIKLS4uIF9AZ3ByYXNh
ZDg0OiBodHRwczovL2dpdGh1Yi5jb20vZ3ByYXNhZDg0Ci0uLiBfQGdyYWluZ2VydDogaHR0cHM6
Ly9naXRodWIuY29tL2dyYWluZ2VydAotLi4gX0BoYXJ0eW06IGh0dHBzOi8vZ2l0aHViLmNvbS9o
YXJ0eW0KLS4uIF9ASm9uYXRob25Tb25lc2VuOiBodHRwczovL2dpdGh1Yi5jb20vSm9uYXRob25T
b25lc2VuCi0uLiBfQGthbGVrdW5kZXJ0OiBodHRwczovL2dpdGh1Yi5jb20va2FsZWt1bmRlcnQK
LS4uIF9Aa3Zhcy1pdDogaHR0cHM6Ly9naXRodWIuY29tL2t2YXMtaXQKLS4uIF9AbWFyc2NoZXI6
IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJzY2hlcgotLi4gX0BtaWtvZnNraTogaHR0cHM6Ly9naXRo
dWIuY29tL21pa29mc2tpCi0uLiBfQG1pbGxpYW1zOiBodHRwczovL2dpdGh1Yi5jb20vbWlsbGlh
bXMKLS4uIF9AbmlrcmF0aW86IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWtyYXRpbwotLi4gX0Bub3Zh
czB4MmE6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub3ZhczB4MmEKLS4uIF9Ab2Jlc3R3YWx0ZXI6IGh0
dHBzOi8vZ2l0aHViLmNvbS9vYmVzdHdhbHRlcgotLi4gX0Bva2tlbjogaHR0cHM6Ly9naXRodWIu
Y29tL29ra2VuCi0uLiBfQG9sZWdwaWRzYWRueWk6IGh0dHBzOi8vZ2l0aHViLmNvbS9vbGVncGlk
c2FkbnlpCi0uLiBfQG9tYXJrb2hsOiBodHRwczovL2dpdGh1Yi5jb20vb21hcmtvaGwKLS4uIF9A
cGFsYXZpdjogaHR0cHM6Ly9naXRodWIuY29tL3BhbGF2aXYKLS4uIF9AUmVkQmVhcmRDb2RlOiBo
dHRwczovL2dpdGh1Yi5jb20vUmVkQmVhcmRDb2RlCi0uLiBfQHNhbGxuZXI6IGh0dHBzOi8vZ2l0
aHViLmNvbS9zYWxsbmVyCi0uLiBfQHNvYmVyNzogaHR0cHM6Ly9naXRodWIuY29tL3NvYmVyNwot
Li4gX0BTdHJhbmdlcjY2Njc6IGh0dHBzOi8vZ2l0aHViLmNvbS9TdHJhbmdlcjY2NjcKLS4uIF9A
c3V6YWt1OiBodHRwczovL2dpdGh1Yi5jb20vc3V6YWt1Ci0uLiBfQHRhcmVxYWxheWFuOiBodHRw
czovL2dpdGh1Yi5jb20vdGFyZXFhbGF5YW4KLS4uIF9AdGFzY2hpbmk6IGh0dHBzOi8vZ2l0aHVi
LmNvbS90YXNjaGluaQotLi4gX0B0cmFtd2FqMjk6IGh0dHBzOi8vZ2l0aHViLmNvbS90cmFtd2Fq
MjkKLS4uIF9AdHhvbW9uOiBodHRwczovL2dpdGh1Yi5jb20vdHhvbW9uCi0uLiBfQFZvZ3RpbmF0
b3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9Wb2d0aW5hdG9yCi0uLiBfQG1hdHRoaWFzaGE6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9tYXR0aGlhc2hhCi0KLQotMi45LjIgKDIwMTYtMDUtMzEpCi09PT09PT09
PT09PT09PT09PT0KLQotKipCdWcgRml4ZXMqKgotCi0qIGZpeCBgIzUxMGBfOiBza2lwIHRlc3Rz
IHdoZXJlIG9uZSBwYXJhbWV0ZXJpemUgZGltZW5zaW9uIHdhcyBlbXB0eQotICB0aGFua3MgQWxl
eCBTdGFwbGV0b24gZm9yIHRoZSBSZXBvcnQgYW5kIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3Ig
dGhlIFBSCi0KLSogRml4IFhmYWlsIGRvZXMgbm90IHdvcmsgd2l0aCBjb25kaXRpb24ga2V5d29y
ZCBhcmd1bWVudC4KLSAgVGhhbmtzIGBAYXN0cmF3MzhgXyBmb3IgcmVwb3J0aW5nIHRoZSBpc3N1
ZSAoYCMxNDk2YF8pIGFuZCBgQHRvbXZpbmVyYF8KLSAgZm9yIFBSIHRoZSAoYCMxNTI0YF8pLgot
Ci0qIEZpeCB3aW4zMiBwYXRoIGlzc3VlIHdoZW4gcHV0dGluZyBjdXN0b20gY29uZmlnIGZpbGUg
d2l0aCBhYnNvbHV0ZSBwYXRoCi0gIGluIGBgcHl0ZXN0Lm1haW4oIi1jIHlvdXJfYWJzb2x1dGVf
cGF0aCIpYGAuCi0KLSogRml4IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGRldGVjdGlvbiB3aGVu
IHJhaXNlZCBlcnJvciBjbGFzcyBpcyBub3QgYXdhcmUKLSAgb2YgdW5pY29kZS9lbmNvZGVkIGJ5
dGVzLgotICBUaGFua3MgYEBwcnVzc2UtbWFydGluYF8gZm9yIHRoZSBQUiAoYCMxNTA2YF8pLgot
Ci0qIEZpeCBgYHB5dGVzdC5tYXJrLnNraXBgYCBtYXJrIHdoZW4gdXNlZCBpbiBzdHJpY3QgbW9k
ZS4KLSAgVGhhbmtzIGBAcHF1ZW50aW5gXyBmb3IgdGhlIFBSIGFuZCBgQFJvbm55UGZhbm5zY2ht
aWR0YF8gZm9yCi0gIHNob3dpbmcgaG93IHRvIGZpeCB0aGUgYnVnLgotCi0qIE1pbm9yIGltcHJv
dmVtZW50cyBhbmQgZml4ZXMgdG8gdGhlIGRvY3VtZW50YXRpb24uCi0gIFRoYW5rcyBgQG9tYXJr
b2hsYF8gZm9yIHRoZSBQUi4KLQotKiBGaXggYGAtLWZpeHR1cmVzYGAgdG8gc2hvdyBhbGwgZml4
dHVyZSBkZWZpbml0aW9ucyBhcyBvcHBvc2VkIHRvIGp1c3QKLSAgb25lIHBlciBmaXh0dXJlIG5h
bWUuCi0gIFRoYW5rcyB0byBgQGhhY2tlYnJvdGBfIGZvciB0aGUgUFIuCi0KLS4uIF8jNTEwOiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxMAotLi4gXyMxNTA2
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTA2Ci0uLiBfIzE0
OTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ5NgotLi4g
XyMxNTI0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTI0Ci0K
LS4uIF9AcHJ1c3NlLW1hcnRpbjogaHR0cHM6Ly9naXRodWIuY29tL3BydXNzZS1tYXJ0aW4KLS4u
IF9AYXN0cmF3Mzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYXczOAotCi0KLTIuOS4xICgyMDE2
LTAzLTE3KQotPT09PT09PT09PT09PT09PT09Ci0KLSoqQnVnIEZpeGVzKioKLQotKiBJbXByb3Zl
IGVycm9yIG1lc3NhZ2Ugd2hlbiBhIHBsdWdpbiBmYWlscyB0byBsb2FkLgotICBUaGFua3MgYEBu
aWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBGaXggKGAjMTE3OCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMTc4PmBfKToKLSAgYGBweXRlc3QuZmFpbGBg
IHdpdGggbm9uLWFzY2lpIGNoYXJhY3RlcnMgcmFpc2VzIGFuIGludGVybmFsIHB5dGVzdCBlcnJv
ci4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRml4IChgIzQ2OWBf
KToganVuaXQgcGFyc2VzIHJlcG9ydC5ub2RlaWQgaW5jb3JyZWN0bHksIHdoZW4gcGFyYW1zIElE
cwotICBjb250YWluIGBgOjpgYC4gVGhhbmtzIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSIChgIzE0
MzFgXykuCi0KLSogRml4IChgIzU3OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81Nzg+YF8pOiBTeW50YXhFcnJvcnMKLSAgY29udGFpbmluZyBub24tYXNjaWkg
bGluZXMgYXQgdGhlIHBvaW50IG9mIGZhaWx1cmUgZ2VuZXJhdGVkIGFuIGludGVybmFsCi0gIHB5
LnRlc3QgZXJyb3IuCi0gIFRoYW5rcyBgQGFzb3R0aWxlYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBA
bmljb2RkZW11c2BfIGZvciB0aGUgUFIuCi0KLSogRml4IChgIzE0MzdgXyk6IFdoZW4gcGFzc2lu
ZyBpbiBhIGJ5dGVzdHJpbmcgcmVnZXggcGF0dGVybiB0byBwYXJhbWV0ZXJpemUKLSAgYXR0ZW1w
dCB0byBkZWNvZGUgaXQgYXMgdXRmLTggaWdub3JpbmcgZXJyb3JzLgotCi0qIEZpeCAoYCM2NDlg
Xyk6IHBhcmFtZXRyaXplZCB0ZXN0IG5vZGVzIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG8gcnVuIG9u
IHRoZSBjb21tYW5kIGxpbmUuCi0KLSogRml4IChgIzEzOGBfKTogYmV0dGVyIHJlcG9ydGluZyBm
b3IgcHl0aG9uIDMuMysgY2hhaW5lZCBleGNlcHRpb25zCi0KLS4uIF8jMTQzNzogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDM3Ci0uLiBfIzQ2OTogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjkKLS4uIF8jMTQzMTogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQzMQotLi4gXyM2NDk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQ5Ci0uLiBfIzEzODog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzgKLQotLi4gX0Bh
c290dGlsZTogaHR0cHM6Ly9naXRodWIuY29tL2Fzb3R0aWxlCi0KLQotMi45LjAgKDIwMTYtMDIt
MjkpCi09PT09PT09PT09PT09PT09PT0KLQotKipOZXcgRmVhdHVyZXMqKgotCi0qIE5ldyBgYHB5
dGVzdC5tYXJrLnNraXBgYCBtYXJrLCB3aGljaCB1bmNvbmRpdGlvbmFsbHkgc2tpcHMgbWFya2Vk
IHRlc3RzLgotICBUaGFua3MgYEBNaWNoYWVsQXF1aWxpbmFgXyBmb3IgdGhlIGNvbXBsZXRlIFBS
IChgIzEwNDBgXykuCi0KLSogYGAtLWRvY3Rlc3QtZ2xvYmBgIG1heSBub3cgYmUgcGFzc2VkIG11
bHRpcGxlIHRpbWVzIGluIHRoZSBjb21tYW5kLWxpbmUuCi0gIFRoYW5rcyBgQGphYmBfIGFuZCBg
QG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgotCi0qIE5ldyBgYC1ycGBgIGFuZCBgYC1yUGBgIHJl
cG9ydGluZyBvcHRpb25zIGdpdmUgdGhlIHN1bW1hcnkgYW5kIGZ1bGwgb3V0cHV0Ci0gIG9mIHBh
c3NpbmcgdGVzdHMsIHJlc3BlY3RpdmVseS4gVGhhbmtzIHRvIGBAY29kZXdhcnJpb3IwYF8gZm9y
IHRoZSBQUi4KLQotKiBgYHB5dGVzdC5tYXJrLnhmYWlsYGAgbm93IGhhcyBhIGBgc3RyaWN0YGAg
b3B0aW9uLCB3aGljaCBtYWtlcyBgYFhQQVNTYGAKLSAgdGVzdHMgdG8gZmFpbCB0aGUgdGVzdCBz
dWl0ZSAoZGVmYXVsdGluZyB0byBgYEZhbHNlYGApLiBUaGVyZSdzIGFsc28gYQotICBgYHhmYWls
X3N0cmljdGBgIGluaSBvcHRpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgaXQgcHJv
amVjdC13aXNlLgotICBUaGFua3MgYEByYWJiYml0YF8gZm9yIHRoZSByZXF1ZXN0IGFuZCBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSIChgIzEzNTVgXykuCi0KLSogYGBQYXJzZXIuYWRkaW5pYGAg
bm93IHN1cHBvcnRzIG9wdGlvbnMgb2YgdHlwZSBgYGJvb2xgYC4KLSAgVGhhbmtzIGBAbmljb2Rk
ZW11c2BfIGZvciB0aGUgUFIuCi0KLSogTmV3IGBgQUxMT1dfQllURVNgYCBkb2N0ZXN0IG9wdGlv
bi4gVGhpcyBzdHJpcHMgYGBiYGAgcHJlZml4ZXMgZnJvbSBieXRlIHN0cmluZ3MKLSAgaW4gZG9j
dGVzdCBvdXRwdXQgKHNpbWlsYXIgdG8gYGBBTExPV19VTklDT0RFYGApLgotICBUaGFua3MgYEBq
YXJhY29gXyBmb3IgdGhlIHJlcXVlc3QgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIgKGAj
MTI4N2BfKS4KLQotKiBHaXZlIGEgaGludCBvbiBgYEtleWJvYXJkSW50ZXJydXB0YGAgdG8gdXNl
IHRoZSBgYC0tZnVsbHRyYWNlYGAgb3B0aW9uIHRvIHNob3cgdGhlIGVycm9ycy4KLSAgRml4ZXMg
YCMxMzY2YF8uCi0gIFRoYW5rcyB0byBgQGhwazQyYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAUm9u
bnlQZmFubnNjaG1pZHRgXyBmb3IgdGhlIFBSLgotCi0qIENhdGNoIGBgSW5kZXhFcnJvcmBgIGV4
Y2VwdGlvbnMgd2hlbiBnZXR0aW5nIGV4Y2VwdGlvbiBzb3VyY2UgbG9jYXRpb24uCi0gIEZpeGVz
IGEgcHl0ZXN0IGludGVybmFsIGVycm9yIGZvciBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSAo
Zml4dHVyZXMgYW5kIHRlc3RzKQotICB3aGVyZSBzb3VyY2UgbGluZXMgYXJlIGZha2UgYnkgaW50
ZW50aW9uLgotCi0qKkNoYW5nZXMqKgotCi0qICoqSW1wb3J0YW50Kio6IGBweS5jb2RlIDxodHRw
czovL3B5bGliLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9jb2RlLmh0bWw+YF8gaGFzIGJlZW4K
LSAgbWVyZ2VkIGludG8gdGhlIGBgcHl0ZXN0YGAgcmVwb3NpdG9yeSBhcyBgYHB5dGVzdC5fY29k
ZWBgLiBUaGlzIGRlY2lzaW9uCi0gIHdhcyBtYWRlIGJlY2F1c2UgYGBweS5jb2RlYGAgaGFkIHZl
cnkgZmV3IHVzZXMgb3V0c2lkZSBgYHB5dGVzdGBgIGFuZCB0aGUKLSAgZmFjdCB0aGF0IGl0IHdh
cyBpbiBhIGRpZmZlcmVudCByZXBvc2l0b3J5IG1hZGUgaXQgZGlmZmljdWx0IHRvIGZpeCBidWdz
IG9uCi0gIGl0cyBjb2RlIGluIGEgdGltZWx5IG1hbm5lci4gVGhlIHRlYW0gaG9wZXMgd2l0aCB0
aGlzIHRvIGJlIGFibGUgdG8gYmV0dGVyCi0gIHJlZmFjdG9yIG91dCBhbmQgaW1wcm92ZSB0aGF0
IGNvZGUuCi0gIFRoaXMgY2hhbmdlIHNob3VsZG4ndCBhZmZlY3QgdXNlcnMsIGJ1dCBpdCBpcyB1
c2VmdWwgdG8gbGV0IHVzZXJzIGF3YXJlCi0gIGlmIHRoZXkgZW5jb3VudGVyIGFueSBzdHJhbmdl
IGJlaGF2aW9yLgotCi0gIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBjb2RlIGZvciBgYHB5dGVzdC5f
Y29kZWBgIGlzICoqcHJpdmF0ZSoqIGFuZAotICAqKmV4cGVyaW1lbnRhbCoqLCBzbyB5b3UgZGVm
aW5pdGVseSBzaG91bGQgbm90IGltcG9ydCBpdCBleHBsaWNpdGx5IQotCi0gIFBsZWFzZSBub3Rl
IHRoYXQgdGhlIG9yaWdpbmFsIGBgcHkuY29kZWBgIGlzIHN0aWxsIGF2YWlsYWJsZSBpbgotICBg
cHlsaWIgPGh0dHBzOi8vcHlsaWIucmVhZHRoZWRvY3MuaW8+YF8uCi0KLSogYGBweXRlc3RfZW50
ZXJfcGRiYGAgbm93IG9wdGlvbmFsbHkgcmVjZWl2ZXMgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0
LgotICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KLQotKiBSZW1vdmVkIGNvZGUg
YW5kIGRvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAyLjUgb3IgbG93ZXIgdmVyc2lvbnMsCi0gIGlu
Y2x1ZGluZyByZW1vdmFsIG9mIHRoZSBvYnNvbGV0ZSBgYF9weXRlc3QuYXNzZXJ0aW9uLm9sZGlu
dGVycHJldGBgIG1vZHVsZS4KLSAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIgKGAj
MTIyNmBfKS4KLQotKiBDb21wYXJpc29ucyBub3cgYWx3YXlzIHNob3cgdXAgaW4gZnVsbCB3aGVu
IGBgQ0lgYCBvciBgYEJVSUxEX05VTUJFUmBgIGlzCi0gIGZvdW5kIGluIHRoZSBlbnZpcm9ubWVu
dCwgZXZlbiB3aGVuIGBgLXZ2YGAgaXNuJ3QgdXNlZC4KLSAgVGhhbmtzIGBAVGhlLUNvbXBpbGVy
YF8gZm9yIHRoZSBQUi4KLQotKiBgYC0tbGZgYCBhbmQgYGAtLWZmYGAgbm93IHN1cHBvcnQgbG9u
ZyBuYW1lczogYGAtLWxhc3QtZmFpbGVkYGAgYW5kCi0gIGBgLS1mYWlsZWQtZmlyc3RgYCByZXNw
ZWN0aXZlbHkuCi0gIFRoYW5rcyBgQE1pY2hhZWxBcXVpbGluYWBfIGZvciB0aGUgUFIuCi0KLSog
QWRkZWQgZXhwZWN0ZWQgZXhjZXB0aW9ucyB0byBgYHB5dGVzdC5yYWlzZXNgYCBmYWlsIG1lc3Nh
Z2UuCi0KLSogQ29sbGVjdGlvbiBvbmx5IGRpc3BsYXlzIHByb2dyZXNzICgiY29sbGVjdGluZyBY
IGl0ZW1zIikgd2hlbiBpbiBhIHRlcm1pbmFsLgotICBUaGlzIGF2b2lkcyBjbHV0dGVyaW5nIHRo
ZSBvdXRwdXQgd2hlbiB1c2luZyBgYC0tY29sb3I9eWVzYGAgdG8gb2J0YWluCi0gIGNvbG9ycyBp
biBDSSBpbnRlZ3JhdGlvbnMgc3lzdGVtcyAoYCMxMzk3YF8pLgotCi0qKkJ1ZyBGaXhlcyoqCi0K
LSogVGhlIGBgLXNgYCBhbmQgYGAtY2BgIG9wdGlvbnMgc2hvdWxkIG5vdyB3b3JrIHVuZGVyIGBg
eGRpc3RgYDsKLSAgYGBDb25maWcuZnJvbWRpY3RhcmdzYGAgbm93IHJlcHJlc2VudHMgaXRzIGlu
cHV0IG11Y2ggbW9yZSBmYWl0aGZ1bGx5LgotICBUaGFua3MgdG8gYEBidWt6b3JgXyBmb3IgdGhl
IGNvbXBsZXRlIFBSIChgIzY4MGBfKS4KLQotKiBGaXggKGAjMTI5MGBfKTogc3VwcG9ydCBQeXRo
b24gMy41J3MgYGBAYGAgb3BlcmF0b3IgaW4gYXNzZXJ0aW9uIHJld3JpdGluZy4KLSAgVGhhbmtz
IGBAU2hpbmtlbmpvZWBfIGZvciByZXBvcnQgd2l0aCB0ZXN0IGNhc2UgYW5kIGBAdG9tdmluZXJg
XyBmb3IgdGhlIFBSLgotCi0qIEZpeCBmb3JtYXR0aW5nIHV0Zi04IGV4cGxhbmF0aW9uIG1lc3Nh
Z2VzIChgIzEzNzlgXykuCi0gIFRoYW5rcyBgQGJpZXJuYF8gZm9yIHRoZSBQUi4KLQotKiBGaXgg
YHRyYWNlYmFjayBzdHlsZSBkb2NzYF8gdG8gZGVzY3JpYmUgYWxsIG9mIHRoZSBhdmFpbGFibGUg
b3B0aW9ucwotICAoYXV0by9sb25nL3Nob3J0L2xpbmUvbmF0aXZlL25vKSwgd2l0aCBgYGF1dG9g
YCBiZWluZyB0aGUgZGVmYXVsdCBzaW5jZSB2Mi42LgotICBUaGFua3MgYEBoYWNrZWJyb3RgXyBm
b3IgdGhlIFBSLgotCi0qIEZpeCAoYCMxNDIyYF8pOiBqdW5pdCByZWNvcmRfeG1sX3Byb3BlcnR5
IGRvZXNuJ3QgYWxsb3cgbXVsdGlwbGUgcmVjb3JkcwotICB3aXRoIHNhbWUgbmFtZS4KLQotLi4g
X2B0cmFjZWJhY2sgc3R5bGUgZG9jc2A6IGh0dHBzOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvdXNhZ2Uu
aHRtbCNtb2RpZnlpbmctcHl0aG9uLXRyYWNlYmFjay1wcmludGluZwotCi0uLiBfIzE2MDk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYwOQotLi4gXyMxNDIy
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0MjIKLS4uIF8j
MTM3OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzc5Ci0u
LiBfIzEzNjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM2
NgotLi4gXyMxMDQwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8x
MDQwCi0uLiBfIzY4MDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy82ODAKLS4uIF8jMTI4NzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1
bGwvMTI4NwotLi4gXyMxMjI2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
cHVsbC8xMjI2Ci0uLiBfIzEyOTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9wdWxsLzEyOTAKLS4uIF8jMTM1NTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L3B1bGwvMTM1NQotLi4gXyMxMzk3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzEzOTcKLS4uIF9AYmllcm46IGh0dHBzOi8vZ2l0aHViLmNvbS9iaWVybgot
Li4gX0BNaWNoYWVsQXF1aWxpbmE6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNoYWVsQXF1aWxpbmEK
LS4uIF9AYnVrem9yOiBodHRwczovL2dpdGh1Yi5jb20vYnVrem9yCi0uLiBfQGhwazQyOiBodHRw
czovL2dpdGh1Yi5jb20vaHBrNDIKLS4uIF9Abmljb2RkZW11czogaHR0cHM6Ly9naXRodWIuY29t
L25pY29kZGVtdXMKLS4uIF9AamFiOiBodHRwczovL2dpdGh1Yi5jb20vamFiCi0uLiBfQGNvZGV3
YXJyaW9yMDogaHR0cHM6Ly9naXRodWIuY29tL2NvZGV3YXJyaW9yMAotLi4gX0BqYXJhY286IGh0
dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28KLS4uIF9AVGhlLUNvbXBpbGVyOiBodHRwczovL2dpdGh1
Yi5jb20vVGhlLUNvbXBpbGVyCi0uLiBfQFNoaW5rZW5qb2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9T
aGlua2Vuam9lCi0uLiBfQHRvbXZpbmVyOiBodHRwczovL2dpdGh1Yi5jb20vdG9tdmluZXIKLS4u
IF9AUm9ubnlQZmFubnNjaG1pZHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9Sb25ueVBmYW5uc2NobWlk
dAotLi4gX0ByYWJiYml0OiBodHRwczovL2dpdGh1Yi5jb20vcmFiYmJpdAotLi4gX0BoYWNrZWJy
b3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWNrZWJyb3QKLS4uIF9AcHF1ZW50aW46IGh0dHBzOi8v
Z2l0aHViLmNvbS9wcXVlbnRpbgotLi4gX0Bpb2dnc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20v
aW9nZ3N0cmVhbQotCi0yLjguNyAoMjAxNi0wMS0yNCkKLT09PT09PT09PT09PT09PT09PQotCi0t
IGZpeCAjMTMzODogdXNlIHByZWRpY3RhYmxlIG9iamVjdCByZXNvbHV0aW9uIGZvciBtb25rZXlw
YXRjaAotCi0yLjguNiAoMjAxNi0wMS0yMSkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCAj
MTI1OTogYWxsb3cgZm9yIGRvdWJsZSBub2RlaWRzIGluIGp1bml0eG1sLAotICB0aGlzIHdhcyBh
IHJlZ3Jlc3Npb24gZmFpbGluZyBwbHVnaW5zIGNvbWJpbmF0aW9ucwotICBsaWtlIHB5dGVzdC1w
ZXA4ICsgcHl0ZXN0LWZsYWtlcwotCi0tIFdvcmthcm91bmQgZm9yIGV4Y2VwdGlvbiB0aGF0IG9j
Y3VycyBpbiBweXJlYWRsaW5lIHdoZW4gdXNpbmcKLSAgYGAtLXBkYmBgIHdpdGggc3RhbmRhcmQg
SS9PIGNhcHR1cmUgZW5hYmxlZC4KLSAgVGhhbmtzIEVyaWsgTS4gQnJheSBmb3IgdGhlIFBSLgot
Ci0tIGZpeCAjOTAwOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIHRoZSB0YXJnZXQgb2Yg
YSBgYG1vbmtleXBhdGNoYGAgY2FsbAotICByYWlzZXMgYW4gYGBJbXBvcnRFcnJvcmBgLgotCi0t
IGZpeCAjMTI5MjogbW9ua2V5cGF0Y2ggY2FsbHMgKHNldGF0dHIsIHNldGVudiwgZXRjLikgYXJl
IG5vdyBPKDEpLgotICBUaGFua3MgRGF2aWQgUi4gTWFjSXZlciBmb3IgdGhlIHJlcG9ydCBhbmQg
QnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBmaXggIzEyMjM6IGNhcHR1cmVkIHN0ZG91
dCBhbmQgc3RkZXJyIGFyZSBub3cgcHJvcGVybHkgZGlzcGxheWVkIGJlZm9yZQotICBlbnRlcmlu
ZyBwZGIgd2hlbiBgYC0tcGRiYGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGJlaW5nIHRocm93biBhd2F5
LgotICBUaGFua3MgQ2FsIExlZW1pbmcgZm9yIHRoZSBQUi4KLQotLSBmaXggIzEzMDU6IHB5dGVz
dCB3YXJuaW5ncyBlbWl0dGVkIGR1cmluZyBgYHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5YGAgYXJl
IG5vdwotICBwcm9wZXJseSBkaXNwbGF5ZWQuCi0gIFRoYW5rcyBJb25lbCBNYXJpZXMgQ3Jpc3Rp
YW4gZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4
ICM2Mjg6IGZpeGVkIGludGVybmFsIFVuaWNvZGVEZWNvZGVFcnJvciB3aGVuIGRvY3Rlc3RzIGNv
bnRhaW4gdW5pY29kZS4KLSAgVGhhbmtzIEphc29uIFIuIENvb21icyBmb3IgdGhlIHJlcG9ydCBh
bmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBmaXggIzEzMzQ6IEFkZCBjYXB0dXJl
ZCBzdGRvdXQgdG8galVuaXQgWE1MIHJlcG9ydCBvbiBzZXR1cCBlcnJvci4KLSAgVGhhbmtzIEdl
b3JneSBEeXVsZGluIGZvciB0aGUgUFIuCi0KLQotMi44LjUgKDIwMTUtMTItMTEpCi09PT09PT09
PT09PT09PT09PT0KLQotLSBmaXggIzEyNDM6IGZpeGVkIGlzc3VlIHdoZXJlIGNsYXNzIGF0dHJp
YnV0ZXMgaW5qZWN0ZWQgZHVyaW5nIGNvbGxlY3Rpb24gY291bGQgYnJlYWsgcHl0ZXN0LgotICBQ
UiBieSBBbGV4ZWkgS296bGVub2ssIHRoYW5rcyBSb25ueSBQZmFubnNjaG1pZHQgYW5kIEJydW5v
IE9saXZlaXJhIGZvciB0aGUgcmV2aWV3IGFuZCBoZWxwLgotCi0tIGZpeCAjMTA3NDogcHJlY29t
cHV0ZSBqdW5pdHhtbCBjaHVua3MgaW5zdGVhZCBvZiBzdG9yaW5nIHRoZSB3aG9sZSB0cmVlIGlu
IG9iamVjdHMKLSAgVGhhbmtzIEJydW5vIE9saXZlaXJhIGZvciB0aGUgcmVwb3J0IGFuZCBSb25u
eSBQZmFubnNjaG1pZHQgZm9yIHRoZSBQUgotCi0tIGZpeCAjMTIzODogZml4IGBgcHl0ZXN0LmRl
cHJlY2F0ZWRfY2FsbCgpYGAgcmVjZWl2aW5nIG11bHRpcGxlIGFyZ3VtZW50cwotICAoUmVncmVz
c2lvbiBpbnRyb2R1Y2VkIGluIDIuOC40KS4gVGhhbmtzIEFsZXggR2F5bm9yIGZvciB0aGUgcmVw
b3J0IGFuZAotICBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0KLTIuOC40ICgyMDE1LTEy
LTA2KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4ICMxMTkwOiBgYGRlcHJlY2F0ZWRfY2Fs
bCgpYGAgbm93IHdvcmtzIHdoZW4gdGhlIGRlcHJlY2F0ZWQKLSAgZnVuY3Rpb24gaGFzIGJlZW4g
YWxyZWFkeSBjYWxsZWQgYnkgYW5vdGhlciB0ZXN0IGluIHRoZSBzYW1lCi0gIG1vZHVsZS4gVGhh
bmtzIE1pa2hhaWwgQ2hlcm55a2ggZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZv
ciB0aGUKLSAgUFIuCi0KLS0gZml4ICMxMTk4OiBgYC0tcGFzdGViaW5gYCBvcHRpb24gbm93IHdv
cmtzIG9uIFB5dGhvbiAzLiBUaGFua3MKLSAgTWVoZHkgS2hvc2hub29keSBmb3IgdGhlIFBSLgot
Ci0tIGZpeCAjMTIxOTogYGAtLXBhc3RlYmluYGAgbm93IHdvcmtzIGNvcnJlY3RseSB3aGVuIGNh
cHR1cmVkIG91dHB1dCBjb250YWlucwotICBub24tYXNjaWkgY2hhcmFjdGVycy4gVGhhbmtzIEJy
dW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4ICMxMjA0OiBhbm90aGVyIGVycm9yIHdo
ZW4gY29sbGVjdGluZyB3aXRoIGEgbmFzdHkgX19nZXRhdHRyX18oKS4KLSAgVGhhbmtzIEZsb3Jp
YW4gQnJ1aGluIGZvciB0aGUgUFIuCi0KLS0gZml4IHRoZSBzdW1tYXJ5IHByaW50ZWQgd2hlbiBu
byB0ZXN0cyBkaWQgcnVuLgotICBUaGFua3MgRmxvcmlhbiBCcnVoaW4gZm9yIHRoZSBQUi4KLS0g
Zml4ICMxMTg1IC0gZW5zdXJlIE1BTklGRVNULmluIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHNob3Vs
ZCBnbyB0byBhIHNkaXN0Ci0KLS0gYSBudW1iZXIgb2YgZG9jdW1lbnRhdGlvbiBtb2Rlcm5pemF0
aW9ucyB3cnQgZ29vZCBwcmFjdGljZXMuCi0gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhl
IFBSLgotCi0yLjguMyAoMjAxNS0xMS0xOCkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCAj
MTE2OTogYWRkIF9fbmFtZV9fIGF0dHJpYnV0ZSB0byB0ZXN0Y2FzZXMgaW4gVGVzdENhc2VGdW5j
dGlvbiB0bwotICBzdXBwb3J0IHRoZSBAdW5pdHRlc3Quc2tpcCBkZWNvcmF0b3Igb24gZnVuY3Rp
b25zIGFuZCBtZXRob2RzLgotICBUaGFua3MgTGVlIEthbWVudHNreSBmb3IgdGhlIFBSLgotCi0t
IGZpeCAjMTAzNTogY29sbGVjdGluZyB0ZXN0cyBpZiB0ZXN0IG1vZHVsZSBsZXZlbCBvYmogaGFz
IF9fZ2V0YXR0cl9fKCkuCi0gIFRoYW5rcyBTdW9yIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBP
bGl2ZWlyYSAvIFRvbSBWaW5lciBmb3IgdGhlIFBSLgotCi0tIGZpeCAjMzMxOiBkb24ndCBjb2xs
ZWN0IHRlc3RzIGlmIHRoZWlyIGZhaWx1cmUgY2Fubm90IGJlIHJlcG9ydGVkIGNvcnJlY3RseQot
ICBlLmcuIHRoZXkgYXJlIGEgY2FsbGFibGUgaW5zdGFuY2Ugb2YgYSBjbGFzcy4KLQotLSBmaXgg
IzExMzM6IGZpeGVkIGludGVybmFsIGVycm9yIHdoZW4gZmlsdGVyaW5nIHRyYWNlYmFja3Mgd2hl
cmUgb25lIGVudHJ5Ci0gIGJlbG9uZ3MgdG8gYSBmaWxlIHdoaWNoIGlzIG5vIGxvbmdlciBhdmFp
bGFibGUuCi0gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGVuaGFuY2Vt
ZW50IG1hZGUgdG8gaGlnaGxpZ2h0IGluIHJlZCB0aGUgbmFtZSBvZiB0aGUgZmFpbGluZyB0ZXN0
cyBzbwotICB0aGV5IHN0YW5kIG91dCBpbiB0aGUgb3V0cHV0LgotICBUaGFua3MgR2FicmllbCBS
ZWlzIGZvciB0aGUgUFIuCi0KLS0gYWRkIG1vcmUgdGFsa3MgdG8gdGhlIGRvY3VtZW50YXRpb24K
LS0gZXh0ZW5kIGRvY3VtZW50YXRpb24gb24gdGhlIC0taWdub3JlIGNsaSBvcHRpb24KLS0gdXNl
IHB5dGVzdC1ydW5uZXIgZm9yIHNldHVwdG9vbHMgaW50ZWdyYXRpb24KLS0gbWlub3IgZml4ZXMg
Zm9yIGludGVyYWN0aW9uIHdpdGggT1MgWCBFbCBDYXBpdGFuCi0gIHN5c3RlbSBpbnRlZ3JpdHkg
cHJvdGVjdGlvbiAodGhhbmtzIEZsb3JpYW4pCi0KLQotMi44LjIgKDIwMTUtMTAtMDcpCi09PT09
PT09PT09PT09PT09PT0KLQotLSBmaXggIzEwODU6IHByb3BlciBoYW5kbGluZyBvZiBlbmNvZGlu
ZyBlcnJvcnMgd2hlbiBwYXNzaW5nIGVuY29kZWQgYnl0ZQotICBzdHJpbmdzIHRvIHB5dGVzdC5w
YXJhbWV0cml6ZSBpbiBQeXRob24gMi4KLSAgVGhhbmtzIFRoZW1hbndpdGhvdXRhcGxhbiBmb3Ig
dGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSBmaXggIzEwODc6
IGhhbmRsaW5nIFN5c3RlbUVycm9yIHdoZW4gcGFzc2luZyBlbXB0eSBieXRlIHN0cmluZ3MgdG8K
LSAgcHl0ZXN0LnBhcmFtZXRyaXplIGluIFB5dGhvbiAzLgotICBUaGFua3MgUGF1bCBLZWhyZXIg
Zm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4ICM5
OTU6IGZpeGVkIGludGVybmFsIGVycm9yIHdoZW4gZmlsdGVyaW5nIHRyYWNlYmFja3Mgd2hlcmUg
b25lIGVudHJ5Ci0gIHdhcyBnZW5lcmF0ZWQgYnkgYW4gZXhlYygpIHN0YXRlbWVudC4KLSAgVGhh
bmtzIERhbmllbCBIYWhsZXIsIEFzaGxleSBDIFN0cmF3LCBQaGlsaXBwZSBHYXV0aGllciBhbmQg
UGF2ZWwgU2F2Y2hlbmtvCi0gIGZvciBjb250cmlidXRpbmcgYW5kIEJydW5vIE9saXZlaXJhIGZv
ciB0aGUgUFIuCi0KLS0gZml4ICMxMTAwIGFuZCAjMTA1NzogZXJyb3JzIHdoZW4gdXNpbmcgYXV0
b3VzZSBmaXh0dXJlcyBhbmQgZG9jdGVzdCBtb2R1bGVzLgotICBUaGFua3MgU2VyZ2V5IEIgS2ly
cGljaGV2IGFuZCBWaXRhbCBLdWR6ZWxrYSBmb3IgY29udHJpYnV0aW5nIGFuZCBCcnVubwotICBP
bGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0yLjguMSAoMjAxNS0wOS0yOSkKLT09PT09PT09PT09PT09
PT09PQotCi0tIGZpeCAjMTAzNDogQWRkIG1pc3Npbmcgbm9kZWlkIG9uIHB5dGVzdF9sb2d3YXJu
aW5nIGNhbGwgaW4KLSAgYWRkaG9vay4gIFRoYW5rcyBTaW1vbiBHb21pemVsaiBmb3IgdGhlIFBS
LgotCi0tICdkZXByZWNhdGVkX2NhbGwnIGlzIG5vdyBvbmx5IHNhdGlzZmllZCB3aXRoIGEgRGVw
cmVjYXRpb25XYXJuaW5nIG9yCi0gIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuIEJlZm9yZSAy
LjguMCwgaXQgYWNjZXB0ZWQgYW55IHdhcm5pbmcsIGFuZCAyLjguMAotICBtYWRlIGl0IGFjY2Vw
dCBvbmx5IERlcHJlY2F0aW9uV2FybmluZyAoYnV0IG5vdCBQZW5kaW5nRGVwcmVjYXRpb25XYXJu
aW5nKS4KLSAgVGhhbmtzIEFsZXggR2F5bm9yIGZvciB0aGUgaXNzdWUgYW5kIEVyaWMgSHVuc2Jl
cmdlciBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZSAjMTA3MzogYXZvaWQgY2FsbGluZyBfX2dl
dGF0dHJfXyBvbiBwb3RlbnRpYWwgcGx1Z2luIG9iamVjdHMuCi0gIFRoaXMgZml4ZXMgYW4gaW5j
b21wYXRpYmlsaXR5IHdpdGggcHl0ZXN0LWRqYW5nby4gIFRoYW5rcyBBbmRyZWFzIFBlbG1lLAot
ICBCcnVubyBPbGl2ZWlyYSBhbmQgUm9ubnkgUGZhbm5zY2htaWR0IGZvciBjb250cmlidXRpbmcg
YW5kIEhvbGdlciBLcmVrZWwKLSAgZm9yIHRoZSBmaXguCi0KLS0gRml4IGlzc3VlICM3MDQ6IGhh
bmRsZSB2ZXJzaW9uY29uZmxpY3QgZHVyaW5nIHBsdWdpbiBsb2FkaW5nIG1vcmUKLSAgZ3JhY2Vm
dWxseS4gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIEZpeCBpc3N1ZSAj
MTA2NDogIiItLWp1bml0eG1sIiByZWdyZXNzaW9uIHdoZW4gdXNlZCB3aXRoIHRoZQotICAicHl0
ZXN0LXhkaXN0IiBwbHVnaW4sIHdpdGggdGVzdCByZXBvcnRzIGJlaW5nIGFzc2lnbmVkIHRvIHRo
ZSB3cm9uZyB0ZXN0cy4KLSAgVGhhbmtzIERhbmllbCBHcnVud2FsZCBmb3IgdGhlIHJlcG9ydCBh
bmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KLQotLSAoZXhwZXJpbWVudGFsKSBhZGFwdCBt
b3JlIFNFTVZFUiBzdHlsZSB2ZXJzaW9uaW5nIGFuZCBjaGFuZ2UgbWVhbmluZyBvZgotICBtYXN0
ZXIgYnJhbmNoIGluIGdpdCByZXBvOiAibWFzdGVyIiBicmFuY2ggbm93IGtlZXBzIHRoZSBidWdm
aXhlcywgY2hhbmdlcwotICBhaW1lZCBmb3IgbWljcm8gcmVsZWFzZXMuICAiZmVhdHVyZXMiIGJy
YW5jaCB3aWxsIG9ubHkgYmUgcmVsZWFzZWQKLSAgd2l0aCBtaW5vciBvciBtYWpvciBweXRlc3Qg
cmVsZWFzZXMuCi0KLS0gRml4IGlzc3VlICM3NjYgYnkgcmVtb3ZpbmcgZG9jdW1lbnRhdGlvbiBy
ZWZlcmVuY2VzIHRvIGRpc3R1dGlscy4KLSAgVGhhbmtzIFJ1c3NlbCBXaW5kZXIuCi0KLS0gRml4
IGlzc3VlICMxMDMwOiBub3cgYnl0ZS1zdHJpbmdzIGFyZSBlc2NhcGVkIHRvIHByb2R1Y2UgaXRl
bSBub2RlIGlkcwotICB0byBtYWtlIHRoZW0gYWx3YXlzIHNlcmlhbGl6YWJsZS4KLSAgVGhhbmtz
IEFuZHkgRnJlZWxhbmQgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUg
UFIuCi0KLS0gUHl0aG9uIDI6IGlmIHVuaWNvZGUgcGFyYW1ldHJpemVkIHZhbHVlcyBhcmUgY29u
dmVydGlibGUgdG8gYXNjaWksIHRoZWlyCi0gIGFzY2lpIHJlcHJlc2VudGF0aW9uIGlzIHVzZWQg
Zm9yIHRoZSBub2RlIGlkLgotCi0tIEZpeCBpc3N1ZSAjNDExOiBBZGQgX19lcV9fIG1ldGhvZCB0
byBhc3NlcnRpb24gY29tcGFyaXNvbiBleGFtcGxlLgotICBUaGFua3MgQmVuIFdlYmIuCi0tIEZp
eCBpc3N1ZSAjNjUzOiBkZXByZWNhdGVkX2NhbGwgY2FuIGJlIHVzZWQgYXMgY29udGV4dCBtYW5h
Z2VyLgotCi0tIGZpeCBpc3N1ZSA4Nzc6IHByb3Blcmx5IGhhbmRsZSBhc3NlcnRpb24gZXhwbGFu
YXRpb25zIHdpdGggbm9uLWFzY2lpIHJlcHIKLSAgVGhhbmtzIE1hdGhpZXUgQWdvcGlhbiBmb3Ig
dGhlIHJlcG9ydCBhbmQgUm9ubnkgUGZhbm5zY2htaWR0IGZvciB0aGUgUFIuCi0KLS0gZml4IGlz
c3VlIDEwMjk6IHRyYW5zZm9ybSBlcnJvcnMgd2hlbiB3cml0aW5nIGNhY2hlIHZhbHVlcyBpbnRv
IHB5dGVzdC13YXJuaW5ncwotCi0yLjguMCAoMjAxNS0wOS0xOCkKLT09PT09PT09PT09PT09PT09
PQotCi0tIG5ldyBgYC0tbGZgYCBhbmQgYGAtZmZgYCBvcHRpb25zIHRvIHJ1biBvbmx5IHRoZSBs
YXN0IGZhaWxpbmcgdGVzdHMgb3IKLSAgImZhaWxpbmcgdGVzdHMgZmlyc3QiIGZyb20gdGhlIGxh
c3QgcnVuLiAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkCi0gIHRocm91Z2ggcG9ydGlu
ZyB0aGUgZm9ybWVybHkgZXh0ZXJuYWwgcHl0ZXN0LWNhY2hlIHBsdWdpbiBpbnRvIHB5dGVzdCBj
b3JlLgotICBCQUNLV0FSRCBJTkNPTVBBVDogaWYgeW91IHVzZWQgcHl0ZXN0LWNhY2hlJ3MgZnVu
Y3Rpb25hbGl0eSB0byBwZXJzaXN0Ci0gIGRhdGEgYmV0d2VlbiB0ZXN0IHJ1bnMgYmUgYXdhcmUg
dGhhdCB3ZSBkb24ndCBzZXJpYWxpemUgc2V0cyBhbnltb3JlLgotICBUaGFua3MgUm9ubnkgUGZh
bm5zY2htaWR0IGZvciBtb3N0IG9mIHRoZSBtZXJnaW5nIHdvcmsuCi0KLS0gIi1yIiBvcHRpb24g
bm93IGFjY2VwdHMgImEiIHRvIGluY2x1ZGUgYWxsIHBvc3NpYmxlIHJlcG9ydHMsIHNpbWlsYXIK
LSAgdG8gcGFzc2luZyAiZkVzeFh3IiBleHBsaWNpdGx5IChpc3NlOTYwKS4KLSAgVGhhbmtzIEFi
aGlqZWV0IEthc3VyZGUgZm9yIHRoZSBQUi4KLQotLSBhdm9pZCBweXRob24zLjUgZGVwcmVjYXRp
b24gd2FybmluZ3MgYnkgaW50cm9kdWNpbmcgdmVyc2lvbgotICBzcGVjaWZpYyBpbnNwZWN0aW9u
IGhlbHBlcnMsIHRoYW5rcyBNaWNoYWVsIERyb2V0dGJvb20uCi0KLS0gZml4IGlzc3VlNTYyOiBA
bm9zZS50b29scy5pc3Rlc3Qgbm93IGZ1bGx5IHJlc3BlY3RlZC4KLQotLSBmaXggaXNzdWU5MzQ6
IHdoZW4gc3RyaW5nIGNvbXBhcmlzb24gZmFpbHMgYW5kIGEgZGlmZiBpcyB0b28gbGFyZ2UgdG8g
ZGlzcGxheQotICB3aXRob3V0IHBhc3NpbmcgLXZ2LCBzdGlsbCBzaG93IGEgZmV3IGxpbmVzIG9m
IHRoZSBkaWZmLgotICBUaGFua3MgRmxvcmlhbiBCcnVoaW4gZm9yIHRoZSByZXBvcnQgYW5kIEJy
dW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4IGlzc3VlNzM2OiBGaXggYSBidWcgd2hl
cmUgZml4dHVyZSBwYXJhbXMgd291bGQgYmUgZGlzY2FyZGVkIHdoZW4gY29tYmluZWQKLSAgd2l0
aCBwYXJhbWV0cml6YXRpb24gbWFya2Vycy4KLSAgVGhhbmtzIHRvIE1hcmt1cyBVbnRlcndhZGl0
emVyIGZvciB0aGUgUFIuCi0KLS0gZml4IGlzc3VlNzEwOiBpbnRyb2R1Y2UgQUxMT1dfVU5JQ09E
RSBkb2N0ZXN0IG9wdGlvbjogd2hlbiBlbmFibGVkLCB0aGUKLSAgYGB1YGAgcHJlZml4IGlzIHN0
cmlwcGVkIGZyb20gdW5pY29kZSBzdHJpbmdzIGluIGV4cGVjdGVkIGRvY3Rlc3Qgb3V0cHV0LiBU
aGlzCi0gIGFsbG93cyBkb2N0ZXN0cyB3aGljaCB1c2UgdW5pY29kZSB0byBydW4gaW4gUHl0aG9u
IDIgYW5kIDMgdW5jaGFuZ2VkLgotICBUaGFua3MgSmFzb24gUi4gQ29vbWJzIGZvciB0aGUgcmVw
b3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIHBhcmFtZXRyaXplIG5vdyBh
bHNvIGdlbmVyYXRlcyBtZWFuaW5nZnVsIHRlc3QgSURzIGZvciBlbnVtLCByZWdleCBhbmQgY2xh
c3MKLSAgb2JqZWN0cyAoYXMgb3Bwb3NlZCB0byBjbGFzcyBpbnN0YW5jZXMpLgotICBUaGFua3Mg
dG8gRmxvcmlhbiBCcnVoaW4gZm9yIHRoZSBQUi4KLQotLSBBZGQgJ3dhcm5zJyB0byBhc3NlcnQg
dGhhdCB3YXJuaW5ncyBhcmUgdGhyb3duIChsaWtlICdyYWlzZXMnKS4KLSAgVGhhbmtzIHRvIEVy
aWMgSHVuc2JlcmdlciBmb3IgdGhlIFBSLgotCi0tIEZpeCBpc3N1ZTY4MzogRG8gbm90IGFwcGx5
IGFuIGFscmVhZHkgYXBwbGllZCBtYXJrLiAgVGhhbmtzIG9qYWtlIGZvciB0aGUgUFIuCi0KLS0g
RGVhbCB3aXRoIGNhcHR1cmluZyBmYWlsdXJlcyBiZXR0ZXIgc28gZmV3ZXIgZXhjZXB0aW9ucyBn
ZXQgbG9zdCB0bwotICAvZGV2L251bGwuICBUaGFua3MgRGF2aWQgU3pvdHRlbiBmb3IgdGhlIFBS
LgotCi0tIGZpeCBpc3N1ZTczMDogZGVwcmVjYXRlIGFuZCB3YXJuIGFib3V0IHRoZSAtLWdlbnNj
cmlwdCBvcHRpb24uCi0gIFRoYW5rcyBSb25ueSBQZmFubnNjaG1pZHQgZm9yIHRoZSByZXBvcnQg
YW5kIENocmlzdGlhbiBQb21tcmFueiBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTc1MTogbXVs
dGlwbGUgcGFyYW1ldHJpemUgd2l0aCBpZHMgYnVnIGlmIGl0IHBhcmFtZXRyaXplcyBjbGFzcyB3
aXRoCi0gIHR3byBvciBtb3JlIHRlc3QgbWV0aG9kcy4gVGhhbmtzIFNlcmdleSBDaGlwaWdhIGZv
ciByZXBvcnRpbmcgYW5kIEphbgotICBCZWRuYXJpayBmb3IgUFIuCi0KLS0gZml4IGlzc3VlODI6
IGF2b2lkIGxvYWRpbmcgY29uZnRlc3QgZmlsZXMgZnJvbSBzZXR1cC5jZmcvcHl0ZXN0LmluaS90
b3guaW5pCi0gIGZpbGVzIGFuZCB1cHdhcmRzIGJ5IGRlZmF1bHQgKC0tY29uZmN1dGRpciBjYW4g
c3RpbGwgYmUgc2V0IHRvIG92ZXJyaWRlIHRoaXMpLgotICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEg
Zm9yIHRoZSBQUi4KLQotLSBmaXggaXNzdWU3Njg6IGRvY3N0cmluZ3MgZm91bmQgaW4gcHl0aG9u
IG1vZHVsZXMgd2VyZSBub3Qgc2V0dGluZyB1cCBzZXNzaW9uCi0gIGZpeHR1cmVzLiBUaGFua3Mg
SmFzb24gUi4gQ29vbWJzIGZvciByZXBvcnRpbmcgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUg
UFIuCi0KLS0gYWRkZWQgYGB0bXBkaXJfZmFjdG9yeWBgLCBhIHNlc3Npb24tc2NvcGVkIGZpeHR1
cmUgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUKLSAgZGlyZWN0b3JpZXMgdW5kZXIgdGhlIGJh
c2UgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gUHJldmlvdXNseSB0aGlzIG9iamVjdCB3YXMKLSAgaW5z
dGFsbGVkIGFzIGEgYGBfdG1wZGlyaGFuZGxlcmBgIGF0dHJpYnV0ZSBvZiB0aGUgYGBjb25maWdg
YCBvYmplY3QsIGJ1dCBub3cgaXQKLSAgaXMgcGFydCBvZiB0aGUgb2ZmaWNpYWwgQVBJIGFuZCB1
c2luZyBgYGNvbmZpZy5fdG1wZGlyaGFuZGxlcmBgIGlzCi0gIGRlcHJlY2F0ZWQuCi0gIFRoYW5r
cyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTgwODogcHl0ZXN0J3Mg
aW50ZXJuYWwgYXNzZXJ0aW9uIHJld3JpdGUgaG9vayBub3cgaW1wbGVtZW50cyB0aGUKLSAgb3B0
aW9uYWwgUEVQMzAyIGdldF9kYXRhIEFQSSBzbyB0ZXN0cyBjYW4gYWNjZXNzIGRhdGEgZmlsZXMg
bmV4dCB0byB0aGVtLgotICBUaGFua3MgeG1vLW9kb28gZm9yIHJlcXVlc3QgYW5kIGV4YW1wbGUg
YW5kIEJydW5vIE9saXZlaXJhIGZvcgotICB0aGUgUFIuCi0KLS0gcm9vdGRpciBhbmQgaW5pZmls
ZSBhcmUgbm93IGRpc3BsYXllZCBkdXJpbmcgdXNhZ2UgZXJyb3JzIHRvIGhlbHAKLSAgdXNlcnMg
ZGlhZ25vc2UgcHJvYmxlbXMgc3VjaCBhcyB1bmV4cGVjdGVkIGluaSBmaWxlcyB3aGljaCBhZGQK
LSAgdW5rbm93biBvcHRpb25zIGJlaW5nIHBpY2tlZCB1cCBieSBweXRlc3QuIFRoYW5rcyB0byBQ
YXZlbCBTYXZjaGVua28gZm9yCi0gIGJyaW5naW5nIHRoZSBwcm9ibGVtIHRvIGF0dGVudGlvbiBp
biAjODIxIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIFN1bW1hcnkgYmFyIG5v
dyBpcyBjb2xvcmVkIHllbGxvdyBmb3Igd2FybmluZwotICBzaXR1YXRpb25zIHN1Y2ggYXM6IGFs
bCB0ZXN0cyBlaXRoZXIgd2VyZSBza2lwcGVkIG9yIHhwYXNzL3hmYWlsZWQsCi0gIG9yIG5vIHRl
c3RzIHdlcmUgcnVuIGF0IGFsbCAodGhpcyBpcyBhIHBhcnRpYWwgZml4IGZvciBpc3N1ZTUwMCku
Ci0KLS0gZml4IGlzc3VlODEyOiBweXRlc3Qgbm93IGV4aXRzIHdpdGggc3RhdHVzIGNvZGUgNSBp
biBzaXR1YXRpb25zIHdoZXJlIG5vCi0gIHRlc3RzIHdlcmUgcnVuIGF0IGFsbCwgc3VjaCBhcyB0
aGUgZGlyZWN0b3J5IGdpdmVuIGluIHRoZSBjb21tYW5kIGxpbmUgZG9lcwotICBub3QgY29udGFp
biBhbnkgdGVzdHMgb3IgYXMgcmVzdWx0IG9mIGEgY29tbWFuZCBsaW5lIG9wdGlvbiBmaWx0ZXJz
Ci0gIGFsbCBvdXQgYWxsIHRlc3RzICgtayBmb3IgZXhhbXBsZSkuCi0gIFRoYW5rcyBFcmljIFNp
ZWdlcm1hbiAoaXNzdWU4MTIpIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIFN1
bW1hcnkgYmFyIG5vdyBpcyBjb2xvcmVkIHllbGxvdyBmb3Igd2FybmluZwotICBzaXR1YXRpb25z
IHN1Y2ggYXM6IGFsbCB0ZXN0cyBlaXRoZXIgd2VyZSBza2lwcGVkIG9yIHhwYXNzL3hmYWlsZWQs
Ci0gIG9yIG5vIHRlc3RzIHdlcmUgcnVuIGF0IGFsbCAocmVsYXRlZCB0byBpc3N1ZTUwMCkuCi0g
IFRoYW5rcyBFcmljIFNpZWdlcm1hbi4KLQotLSBOZXcgYGB0ZXN0cGF0aHNgYCBpbmkgb3B0aW9u
OiBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgdGVzdHMKLSAgd2hlbiBleGVjdXRp
bmcgcHl0ZXN0IGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LiBUaGlzIGNhbiBiZSB1c2VkCi0gIHRv
IHNwZWVkIHVwIHRlc3QgY29sbGVjdGlvbiB3aGVuIGEgcHJvamVjdCBoYXMgd2VsbCBzcGVjaWZp
ZWQgZGlyZWN0b3JpZXMKLSAgZm9yIHRlc3RzLCBiZWluZyB1c3VhbGx5IG1vcmUgcHJhY3RpY2Fs
IHRoYW4gY29uZmlndXJpbmcgbm9yZWN1cnNlZGlycyBmb3IKLSAgYWxsIGRpcmVjdG9yaWVzIHRo
YXQgZG8gbm90IGNvbnRhaW4gdGVzdHMuCi0gIFRoYW5rcyB0byBBZHJpYW4gZm9yIGlkZWEgKCM2
OTQpIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTcxMzogSlVu
aXQgWE1MIHJlcG9ydHMgZm9yIGRvY3Rlc3QgZmFpbHVyZXMuCi0gIFRoYW5rcyBQdW55YXNobG9r
YSBCaXN3YWwuCi0KLS0gZml4IGlzc3VlOTcwOiBpbnRlcm5hbCBweXRlc3Qgd2FybmluZ3Mgbm93
IGFwcGVhciBhcyAicHl0ZXN0LXdhcm5pbmdzIiBpbgotICB0aGUgdGVybWluYWwgaW5zdGVhZCBv
ZiAid2FybmluZ3MiLCBzbyBpdCBpcyBjbGVhciBmb3IgdXNlcnMgdGhhdCB0aG9zZQotICB3YXJu
aW5ncyBhcmUgZnJvbSBweXRlc3QgYW5kIG5vdCBmcm9tIHRoZSBidWlsdGluICJ3YXJuaW5ncyIg
bW9kdWxlLgotICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEuCi0KLS0gSW5jbHVkZSBzZXR1cCBhbmQg
dGVhcmRvd24gaW4ganVuaXR4bWwgdGVzdCBkdXJhdGlvbnMuCi0gIFRoYW5rcyBKYW5uZSBWYW5o
YWxhLgotCi0tIGZpeCBpc3N1ZTczNTogYXNzZXJ0aW9uIGZhaWx1cmVzIG9uIGRlYnVnIHZlcnNp
b25zIG9mIFB5dGhvbiAzLjQrCi0KLS0gbmV3IG9wdGlvbiBgYC0taW1wb3J0LW1vZGVgYCB0byBh
bGxvdyB0byBjaGFuZ2UgdGVzdCBtb2R1bGUgaW1wb3J0aW5nCi0gIGJlaGF2aW91ciB0byBhcHBl
bmQgdG8gc3lzLnBhdGggaW5zdGVhZCBvZiBwcmVwZW5kaW5nLiAgVGhpcyBiZXR0ZXIgYWxsb3dz
Ci0gIHRvIHJ1biB0ZXN0IG1vZHVsZXMgYWdhaW5zdCBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgYSBw
YWNrYWdlIGV2ZW4gaWYgdGhlCi0gIHBhY2thZ2UgdW5kZXIgdGVzdCBoYXMgdGhlIHNhbWUgaW1w
b3J0IHJvb3QuICBJbiB0aGlzIGV4YW1wbGU6OgotCi0gICAgICAgIHRlc3RpbmcvX19pbml0X18u
cHkKLSAgICAgICAgdGVzdGluZy90ZXN0X3BrZ191bmRlcl90ZXN0LnB5Ci0gICAgICAgIHBrZ191
bmRlcl90ZXN0LwotCi0gIHRoZSB0ZXN0cyB3aWxsIHJ1biBhZ2FpbnN0IHRoZSBpbnN0YWxsZWQg
dmVyc2lvbgotICBvZiBwa2dfdW5kZXJfdGVzdCB3aGVuIGBgLS1pbXBvcnQtbW9kZT1hcHBlbmRg
YCBpcyB1c2VkIHdoZXJlYXMKLSAgYnkgZGVmYXVsdCB0aGV5IHdvdWxkIGFsd2F5cyBwaWNrIHVw
IHRoZSBsb2NhbCB2ZXJzaW9uLiAgVGhhbmtzIEhvbGdlciBLcmVrZWwuCi0KLS0gcHl0ZXN0ZXI6
IGFkZCBtZXRob2QgYGBUbXBUZXN0ZGlyLmRlbGV0ZV9sb2FkZWRfbW9kdWxlcygpYGAsIGFuZCBj
YWxsIGl0Ci0gIGZyb20gYGBpbmxpbmVfcnVuKClgYCB0byBhbGxvdyB0ZW1wb3JhcnkgbW9kdWxl
cyB0byBiZSByZWxvYWRlZC4KLSAgVGhhbmtzIEVkdWFyZG8gU2NoZXR0aW5vLgotCi0tIGludGVy
bmFsbHkgcmVmYWN0b3IgcGx1Z2lubWFuYWdlciBBUEkgYW5kIGNvZGUgc28gdGhhdCB0aGVyZQot
ICBpcyBhIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdlZW4gYSBweXRlc3QtYWdub3N0aWMgcmF0aGVy
IHNpbXBsZQotICBwbHVnaW5tYW5hZ2VyIGFuZCB0aGUgUHl0ZXN0UGx1Z2luTWFuYWdlciB3aGlj
aCBhZGRzIGEgbG90IG9mCi0gIGJlaGF2aW91ciwgYW1vbmcgaXQgaGFuZGxpbmcgb2YgdGhlIGxv
Y2FsIGNvbmZ0ZXN0IGZpbGVzLgotICBJbiB0ZXJtcyBvZiBkb2N1bWVudGVkIG1ldGhvZHMgdGhp
cyBpcyBhIGJhY2t3YXJkIGNvbXBhdGlibGUKLSAgY2hhbmdlIGJ1dCBpdCBtaWdodCBzdGlsbCBi
cmVhayAzcmQgcGFydHkgcGx1Z2lucyB3aGljaCByZWxpZWQgb24KLSAgZGV0YWlscyBsaWtlIGVz
cGVjaWFsbHkgdGhlIHBsdWdpbm1hbmFnZXIuYWRkX3NodXRkb3duKCkgQVBJLgotICBUaGFua3Mg
SG9sZ2VyIEtyZWtlbC4KLQotLSBwbHVnaW5tYW5hZ2VtZW50OiBpbnRyb2R1Y2UgYGBweXRlc3Qu
aG9va2ltcGxgYCBhbmQKLSAgYGBweXRlc3QuaG9va3NwZWNgYCBkZWNvcmF0b3JzIGZvciBzZXR0
aW5nIGltcGwvc3BlYwotICBzcGVjaWZpYyBwYXJhbWV0ZXJzLiAgVGhpcyBzdWJzdGl0dXRlcyB0
aGUgcHJldmlvdXMKLSAgbm93IGRlcHJlY2F0ZWQgdXNlIG9mIGBgcHl0ZXN0Lm1hcmtgYCB3aGlj
aCBpcyBtZWFudCB0bwotICBjb250YWluIG1hcmtlcnMgZm9yIHRlc3QgZnVuY3Rpb25zIG9ubHku
Ci0KLS0gd3JpdGUvcmVmaW5lIGRvY3MgZm9yICJ3cml0aW5nIHBsdWdpbnMiIHdoaWNoIG5vdyBo
YXZlIHRoZWlyCi0gIG93biBwYWdlIGFuZCBhcmUgc2VwYXJhdGUgZnJvbSB0aGUgInVzaW5nL2lu
c3RhbGxpbmcgcGx1Z2luc2BgIHBhZ2UuCi0KLS0gZml4IGlzc3VlNzMyOiBwcm9wZXJseSB1bnJl
Z2lzdGVyIHBsdWdpbnMgZnJvbSBhbnkgaG9vayBjYWxsaW5nCi0gIHNpdGVzIGFsbG93aW5nIHRv
IGhhdmUgdGVtcG9yYXJ5IHBsdWdpbnMgZHVyaW5nIHRlc3QgZXhlY3V0aW9uLgotCi0tIGRlcHJl
Y2F0ZSBhbmQgd2FybiBhYm91dCBgYF9fbXVsdGljYWxsX19gYCBhcmd1bWVudCBpbiBob29rCi0g
IGltcGxlbWVudGF0aW9ucy4gIFVzZSB0aGUgYGBob29rd3JhcHBlcmBgIG1lY2hhbmlzbSBpbnN0
ZWFkIGFscmVhZHkKLSAgaW50cm9kdWNlZCB3aXRoIHB5dGVzdC0yLjcuCi0KLS0gc3BlZWQgdXAg
cHl0ZXN0J3Mgb3duIHRlc3Qgc3VpdGUgY29uc2lkZXJhYmx5IGJ5IHVzaW5nIGlucHJvY2Vzcwot
ICB0ZXN0cyBieSBkZWZhdWx0ICh0ZXN0cnVuIGNhbiBiZSBtb2RpZmllZCB3aXRoIC0tcnVucHl0
ZXN0PXN1YnByb2Nlc3MKLSAgdG8gY3JlYXRlIHN1YnByb2Nlc3NlcyBpbiBtYW55IHBsYWNlcyBp
bnN0ZWFkKS4gIFRoZSBtYWluCi0gIEFQSXMgdG8gcnVuIHB5dGVzdCBpbiBhIHRlc3QgaXMgInJ1
bnB5dGVzdCgpIiBvciAicnVucHl0ZXN0X3N1YnByb2Nlc3MiCi0gIGFuZCAicnVucHl0ZXN0X2lu
cHJvY2VzcyIgaWYgeW91IG5lZWQgYSBwYXJ0aWN1bGFyIHdheSBvZiBydW5uaW5nCi0gIHRoZSB0
ZXN0LiAgSW4gYWxsIGNhc2VzIHlvdSBnZXQgYmFjayBhIFJ1blJlc3VsdCBidXQgdGhlIGlucHJv
Y2VzcwotICBvbmUgd2lsbCBhbHNvIGhhdmUgYSAicmVwcmVjIiBhdHRyaWJ1dGUgd2l0aCB0aGUg
cmVjb3JkZWQgZXZlbnRzL3JlcG9ydHMuCi0KLS0gZml4IG1vbmtleXBhdGNoLnNldGF0dHIoIngu
eSIsIHJhaXNpbmc9RmFsc2UpIHRvIGFjdHVhbGx5IG5vdCByYWlzZQotICBpZiAieSIgaXMgbm90
IGEgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZS4gVGhhbmtzIEZsb3JpYW4gQnJ1aGluLgotCi0tIGZp
eCBpc3N1ZTc0MTogbWFrZSBydW5uaW5nIG91dHB1dCBmcm9tIHRlc3RkaXIucnVuIGNvcHkvcGFz
dGVhYmxlCi0gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYS4KLQotLSBhZGQgYSBuZXcgYGAtLW5vY29u
ZnRlc3RgYCBhcmd1bWVudCB3aGljaCBpZ25vcmVzIGFsbCBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMu
Ci0KLS0gYWRkIGBgZmlsZWBgIGFuZCBgYGxpbmVgYCBhdHRyaWJ1dGVzIHRvIEpVbml0LVhNTCBv
dXRwdXQuCi0KLS0gZml4IGlzc3VlODkwOiBjaGFuZ2VkIGV4dGVuc2lvbiBvZiBhbGwgZG9jdW1l
bnRhdGlvbiBmaWxlcyBmcm9tIGBgdHh0YGAgdG8KLSAgYGByc3RgYC4gVGhhbmtzIHRvIEFiaGlq
ZWV0IGZvciB0aGUgUFIuCi0KLS0gZml4IGlzc3VlNzE0OiBhZGQgYWJpbGl0eSB0byBhcHBseSBp
bmRpcmVjdD1UcnVlIHBhcmFtZXRlciBvbiBwYXJ0aWN1bGFyIGFyZ25hbWVzLgotICBUaGFua3Mg
RWxpemF2ZXRhMjM5LgotCi0tIGZpeCBpc3N1ZTg5MDogY2hhbmdlZCBleHRlbnNpb24gb2YgYWxs
IGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSBgYHR4dGBgIHRvCi0gIGBgcnN0YGAuIFRoYW5rcyB0
byBBYmhpamVldCBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTk1NzogIiMgZG9jdGVzdDogU0tJ
UCIgb3B0aW9uIHdpbGwgbm93IHJlZ2lzdGVyIGRvY3Rlc3RzIGFzIFNLSVBQRUQKLSAgcmF0aGVy
IHRoYW4gUEFTU0VELgotICBUaGFua3MgVGhvbWFzIEdyYWluZ2VyIGZvciB0aGUgcmVwb3J0IGFu
ZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGlzc3VlOTUxOiBhZGQgbmV3IHJlY29y
ZF94bWxfcHJvcGVydHkgZml4dHVyZSwgdGhhdCBzdXBwb3J0cyBsb2dnaW5nCi0gIGFkZGl0aW9u
YWwgaW5mb3JtYXRpb24gb24geG1sIG91dHB1dC4gVGhhbmtzIERhdmlkIERpYXogZm9yIHRoZSBQ
Ui4KLQotLSBpc3N1ZTk0OTogcGF0aHMgYWZ0ZXIgbm9ybWFsIG9wdGlvbnMgKGZvciBleGFtcGxl
IGBgLXNgYCwgYGAtdmBgLCBldGMpIGFyZSBub3cKLSAgcHJvcGVybHkgdXNlZCB0byBkaXNjb3Zl
ciBgYHJvb3RkaXJgYCBhbmQgYGBpbmlgYCBmaWxlcy4KLSAgVGhhbmtzIFBldGVyIExhdXJpIGZv
ciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0yLjcuMyAoMjAx
NS0wOS0xNSkKLT09PT09PT09PT09PT09PT09PQotCi0tIEFsbG93ICdkZXYnLCAncmMnLCBvciBv
dGhlciBub24taW50ZWdlciB2ZXJzaW9uIHN0cmluZ3MgaW4gYGBpbXBvcnRvcnNraXBgYC4KLSAg
VGhhbmtzIHRvIEVyaWMgSHVuc2JlcmdlciBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTg1Njog
Y29uc2lkZXIgLS1jb2xvciBwYXJhbWV0ZXIgaW4gYWxsIG91dHB1dHMgKGZvciBleGFtcGxlCi0g
IC0tZml4dHVyZXMpLiBUaGFua3MgQmFybmV5IEdhbGUgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5v
IE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4IGlzc3VlODU1OiBwYXNzaW5nIHN0ciBvYmpl
Y3RzIGFzIGBgcGx1Z2luc2BgIGFyZ3VtZW50IHRvIHB5dGVzdC5tYWluCi0gIGlzIG5vdyBpbnRl
cnByZXRlZCBhcyBhIG1vZHVsZSBuYW1lIHRvIGJlIGltcG9ydGVkIGFuZCByZWdpc3RlcmVkIGFz
IGEKLSAgcGx1Z2luLCBpbnN0ZWFkIG9mIHNpbGVudGx5IGhhdmluZyBubyBlZmZlY3QuCi0gIFRo
YW5rcyB4bW8tb2RvbyBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQ
Ui4KLQotLSBmaXggaXNzdWU3NDQ6IGZpeCBmb3IgYXN0LkNhbGwgY2hhbmdlcyBpbiBQeXRob24g
My41Ky4gIFRoYW5rcwotICBHdWlkbyB2YW4gUm9zc3VtLCBNYXR0aGlhcyBCdXNzb25uaWVyLCBT
dGVmYW4gWmltbWVybWFubiBhbmQKLSAgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gZml4IGlzc3VlODQy
OiBhcHBseWluZyBtYXJrZXJzIGluIGNsYXNzZXMgbm8gbG9uZ2VyIHByb3BhZ2F0ZSB0aGlzIG1h
cmtlcnMKLSAgdG8gc3VwZXJjbGFzc2VzIHdoaWNoIGFsc28gaGF2ZSBtYXJrZXJzLgotICBUaGFu
a3MgeG1vLW9kb28gZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIu
Ci0KLS0gcHJlc2VydmUgd2FybmluZyBmdW5jdGlvbnMgYWZ0ZXIgY2FsbCB0byBweXRlc3QuZGVw
cmVjYXRlZF9jYWxsLiBUaGFua3MKLSAgUGlldGVyIE11bGRlciBmb3IgUFIuCi0KLS0gZml4IGlz
c3VlODU0OiBhdXRvdXNlIHlpZWxkX2ZpeHR1cmVzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBv
ZgotICB1bml0dGVzdC5UZXN0Q2FzZSBzdWJjbGFzc2VzIG5vdyB3b3JrIGFzIGV4cGVjdGVkLgot
ICBUaGFubmtzIHhtby1vZG9vIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3Ig
dGhlIFBSLgotCi0tIGZpeCBpc3N1ZTgzMzogLS1maXh0dXJlcyBub3cgc2hvd3MgYWxsIGZpeHR1
cmVzIG9mIGNvbGxlY3RlZCB0ZXN0IGZpbGVzLCBpbnN0ZWFkIG9mIGp1c3QgdGhlCi0gIGZpeHR1
cmVzIGRlY2xhcmVkIG9uIHRoZSBmaXJzdCBvbmUuCi0gIFRoYW5rcyBGbG9yaWFuIEJydWhpbiBm
b3IgcmVwb3J0aW5nIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1
ZTg2Mzogc2tpcHBlZCB0ZXN0cyBub3cgcmVwb3J0IHRoZSBjb3JyZWN0IHJlYXNvbiB3aGVuIGEg
c2tpcC94ZmFpbAotICBjb25kaXRpb24gaXMgbWV0IHdoZW4gdXNpbmcgbXVsdGlwbGUgbWFya2Vy
cy4KLSAgVGhhbmtzIFJhcGhhZWwgUGllcnppbmEgZm9yIHJlcG9ydGluZyBhbmQgQnJ1bm8gT2xp
dmVpcmEgZm9yIHRoZSBQUi4KLQotLSBvcHRpbWl6ZWQgdG1wZGlyIGZpeHR1cmUgaW5pdGlhbGl6
YXRpb24sIHdoaWNoIHNob3VsZCBtYWtlIHRlc3Qgc2Vzc2lvbnMKLSAgZmFzdGVyIChzcGVjaWFs
bHkgd2hlbiB1c2luZyBweXRlc3QteGRpc3QpLiBUaGUgb25seSB2aXNpYmxlIGVmZmVjdAotICBp
cyB0aGF0IG5vdyBweXRlc3QgdXNlcyBhIHN1YmRpcmVjdG9yeSBpbiB0aGUgJFRFTVAgZGlyZWN0
b3J5IGZvciBhbGwKLSAgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSB0aGlzIGZpeHR1cmUgKGRlZmF1
bHRzIHRvICRURU1QL3B5dGVzdC0kVVNFUikuCi0gIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3Ig
dGhlIFBSLgotCi0yLjcuMiAoMjAxNS0wNi0yMykKLT09PT09PT09PT09PT09PT09PQotCi0tIGZp
eCBpc3N1ZTc2NzogcHl0ZXN0LnJhaXNlcyB2YWx1ZSBhdHRyaWJ1dGUgZG9lcyBub3QgY29udGFp
biB0aGUgZXhjZXB0aW9uCi0gIGluc3RhbmNlIG9uIFB5dGhvbiAyLjYuIFRoYW5rcyBFcmljIFNp
ZWdlcm1hbiBmb3IgcHJvdmlkaW5nIHRoZSB0ZXN0Ci0gIGNhc2UgYW5kIEJydW5vIE9saXZlaXJh
IGZvciBQUi4KLQotLSBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBkaXJlY3RvcnkgZm9yIGp1bml0eG1s
IGFuZCByZXN1bHRzIGxvZy4KLSAgVGhhbmtzIEFyb24gQ3Vyem9uLgotCi0tIGZpeCBpc3N1ZTcx
MzogSlVuaXQgWE1MIHJlcG9ydHMgZm9yIGRvY3Rlc3QgZmFpbHVyZXMuCi0gIFRoYW5rcyBQdW55
YXNobG9rYSBCaXN3YWwuCi0KLS0gZml4IGlzc3VlNzM1OiBhc3NlcnRpb24gZmFpbHVyZXMgb24g
ZGVidWcgdmVyc2lvbnMgb2YgUHl0aG9uIDMuNCsKLSAgVGhhbmtzIEJlbmphbWluIFBldGVyc29u
LgotCi0tIGZpeCBpc3N1ZTExNDogc2tpcGlmIG1hcmtlciByZXBvcnRzIHRvIGludGVybmFsIHNr
aXBwaW5nIHBsdWdpbjsKLSAgVGhhbmtzIEZsb3JpcyBCcnV5bm9vZ2hlIGZvciByZXBvcnRpbmcg
YW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCi0KLS0gZml4IGlzc3VlNzQ4OiB1bml0dGVz
dC5Ta2lwVGVzdCByZXBvcnRzIHRvIGludGVybmFsIHB5dGVzdCB1bml0dGVzdCBwbHVnaW4uCi0g
IFRoYW5rcyBUaG9tYXMgRGUgU2NoYW1waGVsZWlyZSBmb3IgcmVwb3J0aW5nIGFuZCBCcnVubyBP
bGl2ZWlyYSBmb3IgdGhlIFBSLgotCi0tIGZpeCBpc3N1ZTcxODogZmFpbGVkIHRvIGNyZWF0ZSBy
ZXByZXNlbnRhdGlvbiBvZiBzZXRzIGNvbnRhaW5pbmcgdW5zb3J0YWJsZQotICBlbGVtZW50cyBp
biBweXRob24gMi4gVGhhbmtzIEVkaXNvbiBHdXN0YXZvIE11ZW56LgotCi0tIGZpeCBpc3N1ZTc1
NiwgZml4IGlzc3VlNzUyIChhbmQgc2ltaWxhciBpc3N1ZXMpOiBkZXBlbmQgb24gcHktMS40LjI5
Ci0gIHdoaWNoIGhhcyBhIHJlZmluZWQgYWxnb3JpdGhtIGZvciB0cmFjZWJhY2sgZ2VuZXJhdGlv
bi4KLQotCi0yLjcuMSAoMjAxNS0wNS0xOSkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBp
c3N1ZTczMTogZG8gbm90IGdldCBjb25mdXNlZCBieSB0aGUgYnJhY2VzIHdoaWNoIG1heSBiZSBw
cmVzZW50Ci0gIGFuZCB1bmJhbGFuY2VkIGluIGFuIG9iamVjdCdzIHJlcHIgd2hpbGUgY29sbGFw
c2luZyBGYWxzZQotICBleHBsYW5hdGlvbnMuICBUaGFua3MgQ2FybCBNZXllciBmb3IgdGhlIHJl
cG9ydCBhbmQgdGVzdCBjYXNlLgotCi0tIGZpeCBpc3N1ZTU1MzogcHJvcGVybHkgaGFuZGxpbmcg
aW5zcGVjdC5nZXRzb3VyY2VsaW5lcyBmYWlsdXJlcyBpbgotICBGaXh0dXJlTG9va3VwRXJyb3Ig
d2hpY2ggd291bGQgbGVhZCB0byBhbiBpbnRlcm5hbCBlcnJvciwKLSAgb2JmdXNjYXRpbmcgdGhl
IG9yaWdpbmFsIHByb2JsZW0uIFRoYW5rcyB0YWxsam9zaCBmb3IgaW5pdGlhbAotICBkaWFnbm9z
ZS9wYXRjaCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIGZpbmFsIHBhdGNoLgotCi0tIGZpeCBpc3N1
ZTY2MDogcHJvcGVybHkgcmVwb3J0IHNjb3BlLW1pc21hdGNoLWFjY2VzcyBlcnJvcnMKLSAgaW5k
ZXBlbmRlbnRseSBmcm9tIG9yZGVyaW5nIG9mIGZpeHR1cmUgYXJndW1lbnRzLiAgQWxzbwotICBh
dm9pZCB0aGUgcHl0ZXN0IGludGVybmFsIHRyYWNlYmFjayB3aGljaCBkb2VzIG5vdCBwcm92aWRl
Ci0gIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyLiBUaGFua3MgSG9sZ2VyIEtyZWtlbC4KLQotLSBz
dHJlYW1saW5lZCBhbmQgZG9jdW1lbnRlZCByZWxlYXNlIHByb2Nlc3MuICBBbHNvIGFsbCB2ZXJz
aW9ucwotICAoaW4gc2V0dXAucHkgYW5kIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbikgYXJlIG5v
dyByZWFkCi0gIGZyb20gX3B5dGVzdC9fX2luaXRfXy5weS4gVGhhbmtzIEhvbGdlciBLcmVrZWwu
Ci0KLS0gZml4ZWQgZG9jcyB0byByZW1vdmUgdGhlIG5vdGlvbiB0aGF0IHlpZWxkLWZpeHR1cmVz
IGFyZSBleHBlcmltZW50YWwuCi0gIFRoZXkgYXJlIGhlcmUgdG8gc3RheSA6KSAgVGhhbmtzIEJy
dW5vIE9saXZlaXJhLgotCi0tIFN1cHBvcnQgYnVpbGRpbmcgd2hlZWxzIGJ5IHVzaW5nIGVudmly
b25tZW50IG1hcmtlcnMgZm9yIHRoZQotICByZXF1aXJlbWVudHMuICBUaGFua3MgSW9uZWwgTWFy
aWVzIENyaXN0aWFuLgotCi0tIGZpeGVkIHJlZ3Jlc3Npb24gdG8gMi42LjQgd2hpY2ggc3VyZmFj
ZWQgZS5nLiBpbiBsb3N0IHN0ZG91dCBjYXB0dXJlIHByaW50aW5nCi0gIHdoZW4gdGVzdHMgcmFp
c2VkIFN5c3RlbUV4aXQuIFRoYW5rcyBIb2xnZXIgS3Jla2VsLgotCi0tIHJlaW50cm9kdWNlZCBf
cHl0ZXN0IGZpeHR1cmUgb2YgdGhlIHB5dGVzdGVyIHBsdWdpbiB3aGljaCBpcyB1c2VkCi0gIGF0
IGxlYXN0IGJ5IHB5dGVzdC14ZGlzdC4KLQotMi43LjAgKDIwMTUtMDMtMjYpCi09PT09PT09PT09
PT09PT09PT0KLQotLSBmaXggaXNzdWU0MzU6IG1ha2UgcmVsb2FkKCkgd29yayB3aGVuIGFzc2Vy
dCByZXdyaXRpbmcgaXMgYWN0aXZlLgotICBUaGFua3MgRGFuaWVsIEhhaGxlci4KLQotLSBmaXgg
aXNzdWU2MTY6IGNvbmZ0ZXN0LnB5IGZpbGVzIGFuZCB0aGVpciBjb250YWluZWQgZml4dXRyZXMg
YXJlIG5vdwotICBwcm9wZXJseSBjb25zaWRlcmVkIGZvciB2aXNpYmlsaXR5LCBpbmRlcGVuZGVu
dGx5IGZyb20gdGhlIGV4YWN0Ci0gIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHRlc3Qg
YXJndW1lbnRzIHRoYXQgYXJlIHVzZWQuCi0gIE1hbnkgdGhhbmtzIHRvIEVyaWMgU2llZ2VybWFu
IGFuZCBoaXMgUFIyMzUgd2hpY2ggY29udGFpbnMKLSAgc3lzdGVtYXRpYyB0ZXN0cyBmb3IgY29u
ZnRlc3QgdmlzaWJpbGl0eSBhbmQgbm93IHBhc3Nlcy4KLSAgVGhpcyBjaGFuZ2UgYWxzbyBpbnRy
b2R1Y2VzIHRoZSBjb25jZXB0IG9mIGEgYGByb290ZGlyYGAgd2hpY2gKLSAgaXMgcHJpbnRlZCBh
cyBhIG5ldyBweXRlc3QgaGVhZGVyIGFuZCBkb2N1bWVudGVkIGluIHRoZSBweXRlc3QKLSAgY3Vz
dG9taXplIHdlYiBwYWdlLgotCi0tIGNoYW5nZSByZXBvcnRpbmcgb2YgImRpdmVydGVkIiB0ZXN0
cywgaS5lLiB0ZXN0cyB0aGF0IGFyZSBjb2xsZWN0ZWQKLSAgaW4gb25lIGZpbGUgYnV0IGFjdHVh
bGx5IGNvbWUgZnJvbSBhbm90aGVyIChlLmcuIHdoZW4gdGVzdHMgaW4gYSB0ZXN0IGNsYXNzCi0g
IGNvbWUgZnJvbSBhIGJhc2UgY2xhc3MgaW4gYSBkaWZmZXJlbnQgZmlsZSkuICBXZSBub3cgc2hv
dyB0aGUgbm9kZWlkCi0gIGFuZCBpbmRpY2F0ZSB2aWEgYSBwb3N0Zml4IHRoZSBvdGhlciBmaWxl
LgotCi0tIGFkZCBhYmlsaXR5IHRvIHNldCBjb21tYW5kIGxpbmUgb3B0aW9ucyBieSBlbnZpcm9u
bWVudCB2YXJpYWJsZSBQWVRFU1RfQURET1BUUy4KLQotLSBhZGRlZCBkb2N1bWVudGF0aW9uIG9u
IHRoZSBuZXcgcHl0ZXN0LWRldiB0ZWFtcyBvbiBiaXRidWNrZXQgYW5kCi0gIGdpdGh1Yi4gIFNl
ZSBodHRwczovL3B5dGVzdC5vcmcvbGF0ZXN0L2NvbnRyaWJ1dGluZy5odG1sIC4KLSAgVGhhbmtz
IHRvIEFuYXRvbHkgZm9yIHB1c2hpbmcgYW5kIGluaXRpYWwgd29yayBvbiB0aGlzLgotCi0tIGZp
eCBpc3N1ZTY1MDogbmV3IG9wdGlvbiBgYC0tZG9jdHRlc3QtaWdub3JlLWltcG9ydC1lcnJvcnNg
YCB3aGljaAotICB3aWxsIHR1cm4gaW1wb3J0IGVycm9ycyBpbiBkb2N0ZXN0cyBpbnRvIHNraXBz
LiAgVGhhbmtzIENoYXJsZXMgQ2xvdWQKLSAgZm9yIHRoZSBjb21wbGV0ZSBQUi4KLQotLSBmaXgg
aXNzdWU2NTU6IHdvcmsgYXJvdW5kIGRpZmZlcmVudCB3YXlzIHRoYXQgY2F1c2UgcHl0aG9uMi8z
Ci0gIHRvIGxlYWsgc3lzLmV4Y19pbmZvIGludG8gZml4dHVyZXMvdGVzdHMgY2F1c2luZyBmYWls
dXJlcyBpbiAzcmQgcGFydHkgY29kZQotCi0tIGZpeCBpc3N1ZTYxNTogYXNzZXJ0aW9uIHJld3Jp
dGluZyBkaWQgbm90IGNvcnJlY3RseSBlc2NhcGUgJSBzaWducwotICB3aGVuIGZvcm1hdHRpbmcg
Ym9vbGVhbiBvcGVyYXRpb25zLCB3aGljaCB0cmlwcGVkIG92ZXIgbWl4aW5nCi0gIGJvb2xlYW5z
IHdpdGggbW9kdWxvIG9wZXJhdG9ycy4gIFRoYW5rcyB0byBUb20gVmluZXIgZm9yIHRoZSByZXBv
cnQsCi0gIHRyaWFnaW5nIGFuZCBmaXguCi0KLS0gaW1wbGVtZW50IGlzc3VlMzUxOiBhZGQgYWJp
bGl0eSB0byBzcGVjaWZ5IHBhcmFtZXRyaXplIGlkcyBhcyBhIGNhbGxhYmxlCi0gIHRvIGdlbmVy
YXRlIGN1c3RvbSB0ZXN0IGlkcy4gIFRoYW5rcyBCcmlhbm5hIExhdWdoZXIgZm9yIHRoZSBpZGVh
IGFuZAotICBpbXBsZW1lbnRhdGlvbi4KLQotLSBpbnRyb2R1Y2UgYW5kIGRvY3VtZW50IG5ldyBo
b29rd3JhcHBlciBtZWNoYW5pc20gdXNlZnVsIGZvciBwbHVnaW5zCi0gIHdoaWNoIHdhbnQgdG8g
d3JhcCB0aGUgZXhlY3V0aW9uIG9mIGNlcnRhaW4gaG9va3MgZm9yIHRoZWlyIHB1cnBvc2VzLgot
ICBUaGlzIHN1cGVyc2VkZXMgdGhlIHVuZG9jdW1lbnRlZCBgYF9fbXVsdGljYWxsX19gYCBwcm90
b2NvbCB3aGljaAotICBweXRlc3QgaXRzZWxmIGFuZCBzb21lIGV4dGVybmFsIHBsdWdpbnMgdXNl
LiAgTm90ZSB0aGF0IHB5dGVzdC0yLjgKLSAgaXMgc2NoZWR1bGVkIHRvIGRyb3Agc3VwcG9ydGlu
ZyB0aGUgb2xkIGBgX19tdWx0aWNhbGxfX2BgCi0gIGFuZCBvbmx5IHN1cHBvcnQgdGhlIGhvb2t3
cmFwcGVyIHByb3RvY29sLgotCi0tIG1ham9ybHkgc3BlZWQgdXAgaW52b2NhdGlvbiBvZiBwbHVn
aW4gaG9va3MKLQotLSB1c2UgaG9va3dyYXBwZXIgbWVjaGFuaXNtIGluIGJ1aWx0aW4gcHl0ZXN0
IHBsdWdpbnMuCi0KLS0gYWRkIGEgZG9jdGVzdCBpbmkgb3B0aW9uIGZvciBkb2N0ZXN0IGZsYWdz
LCB0aGFua3MgSG9sZ2VyIFBldGVycy4KLQotLSBhZGQgbm90ZSB0byBkb2NzIHRoYXQgaWYgeW91
IHdhbnQgdG8gbWFyayBhIHBhcmFtZXRlciBhbmQgdGhlCi0gIHBhcmFtZXRlciBpcyBhIGNhbGxh
YmxlLCB5b3UgYWxzbyBuZWVkIHRvIHBhc3MgaW4gYSByZWFzb24gdG8gZGlzYW1iaWd1YXRlCi0g
IGl0IGZyb20gdGhlICJkZWNvcmF0b3IiIGNhc2UuICBUaGFua3MgVG9tIFZpbmVyLgotCi0tICJw
eXRob25fY2xhc3NlcyIgYW5kICJweXRob25fZnVuY3Rpb25zIiBvcHRpb25zIG5vdyBzdXBwb3J0
IGdsb2ItcGF0dGVybnMKLSAgZm9yIHRlc3QgZGlzY292ZXJ5LCBhcyBkaXNjdXNzZWQgaW4gaXNz
dWU2MDAuIFRoYW5rcyBMZGlhcnkgVHJhbnNsYXRpb25zLgotCi0tIGFsbG93IHRvIG92ZXJyaWRl
IHBhcmFtZXRyaXplZCBmaXh0dXJlcyB3aXRoIG5vbi1wYXJhbWV0cml6ZWQgb25lcyBhbmQgdmlj
ZSB2ZXJzYSAoYnViZW5rb2ZmKS4KLQotLSBmaXggaXNzdWU0NjM6IHJhaXNlIHNwZWNpZmljIGVy
cm9yIGZvciAncGFyYW1ldGVyaXplJyBtaXNzcGVsbGluZyAocGZjdGRheWVsaXNlKS4KLQotLSBP
biBmYWlsdXJlLCB0aGUgYGBzeXMubGFzdF92YWx1ZWBgLCBgYHN5cy5sYXN0X3R5cGVgYCBhbmQK
LSAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBhcmUgc2V0LCBzbyB0aGF0IGEgdXNlciBjYW4gaW5z
cGVjdCB0aGUgZXJyb3IKLSAgdmlhIHBvc3Rtb3J0ZW0gZGVidWdnaW5nIChhbG1hcmtsZWluKS4K
LQotMi42LjQgKDIwMTQtMTAtMjQpCi09PT09PT09PT09PT09PT09PT0KLQotLSBJbXByb3ZlIGFz
c2VydGlvbiBmYWlsdXJlIHJlcG9ydGluZyBvbiBpdGVyYWJsZXMsIGJ5IHVzaW5nIG5kaWZmIGFu
ZAotICBwcHJpbnQuCi0KLS0gcmVtb3ZlZCBvdXRkYXRlZCBqYXBhbmVzZSBkb2NzIGZyb20gc291
cmNlIHRyZWUuCi0KLS0gZG9jcyBmb3IgInB5dGVzdF9hZGRob29rcyIgaG9vay4gIFRoYW5rcyBC
cnVubyBPbGl2ZWlyYS4KLQotLSB1cGRhdGVkIHBsdWdpbiBpbmRleCBkb2NzLiAgVGhhbmtzIEJy
dW5vIE9saXZlaXJhLgotCi0tIGZpeCBpc3N1ZTU1Nzogd2l0aCAiLWsiIHdlIG9ubHkgYWxsb3cg
dGhlIG9sZCBzdHlsZSAiLSIgZm9yIG5lZ2F0aW9uCi0gIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc3Ry
aW5ncyBhbmQgZXZlbiB0aGF0IGlzIGRlcHJlY2F0ZWQuICBVc2UgIm5vdCIgaW5zdGVhZC4KLSAg
VGhpcyBzaG91bGQgYWxsb3cgdG8gcGljayBwYXJhbWV0cml6ZWQgdGVzdHMgd2hlcmUgIi0iIGFw
cGVhcmVkIGluIHRoZSBwYXJhbWV0ZXIuCi0KLS0gZml4IGlzc3VlNjA0OiBFc2NhcGUgJSBjaGFy
YWN0ZXIgaW4gdGhlIGFzc2VydGlvbiBtZXNzYWdlLgotCi0tIGZpeCBpc3N1ZTYyMDogYWRkIGV4
cGxhbmF0aW9uIGluIHRoZSAtLWdlbnNjcmlwdCB0YXJnZXQgYWJvdXQgd2hhdAotICB0aGUgYmlu
YXJ5IGJsb2IgbWVhbnMuIFRoYW5rcyBEaW51IEdoZXJtYW4uCi0KLS0gZml4IGlzc3VlNjE0OiBm
aXhlZCBwYXN0ZWJpbiBzdXBwb3J0LgotCi0KLS0gZml4IGlzc3VlNjIwOiBhZGQgZXhwbGFuYXRp
b24gaW4gdGhlIC0tZ2Vuc2NyaXB0IHRhcmdldCBhYm91dCB3aGF0Ci0gIHRoZSBiaW5hcnkgYmxv
YiBtZWFucy4gVGhhbmtzIERpbnUgR2hlcm1hbi4KLQotLSBmaXggaXNzdWU2MTQ6IGZpeGVkIHBh
c3RlYmluIHN1cHBvcnQuCi0KLTIuNi4zICgyMDE0LTA5LTI0KQotPT09PT09PT09PT09PT09PT09
Ci0KLS0gZml4IGlzc3VlNTc1OiB4dW5pdC14bWwgd2FzIHJlcG9ydGluZyBjb2xsZWN0aW9uIGVy
cm9ycyBhcyBmYWlsdXJlcwotICBpbnN0ZWFkIG9mIGVycm9ycywgdGhhbmtzIE9sZWcgU2lueWF2
c2tpeS4KLQotLSBmaXggaXNzdWU1ODI6IGZpeCBzZXR1cHRvb2xzIGV4YW1wbGUsIHRoYW5rcyBM
YXN6bG8gUGFwcCBhbmQgUm9ubnkKLSAgUGZhbm5zY2htaWR0LgotCi0tIEZpeCBpbmZpbml0ZSBy
ZWN1cnNpb24gYnVnIHdoZW4gcGlja2xpbmcgY2FwdHVyZS5FbmNvZGVkRmlsZSwgdGhhbmtzCi0g
IFV3ZSBTY2htaXR0LgotCi0tIGZpeCBpc3N1ZTU4OTogZml4IGJhZCBpbnRlcmFjdGlvbiB3aXRo
IG51bXB5IGFuZCBvdGhlcnMgd2hlbiBzaG93aW5nCi0gIGV4Y2VwdGlvbnMuICBDaGVjayBmb3Ig
cHJlY2lzZSAibWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkIiBleGNlcHRpb24KLSAgaW5z
dGVhZCBvZiBwcmVzdW1pbmcgYW55IFJ1bnRpbWVFcnJvciBpcyB0aGF0IG9uZSAoaW1wbGVtZW50
ZWQgaW4gcHkKLSAgZGVwKS4gIFRoYW5rcyBDaGFybGVzIENsb3VkIGZvciBhbmFseXNpbmcgdGhl
IGlzc3VlLgotCi0tIGZpeCBjb25mdGVzdCByZWxhdGVkIGZpeHR1cmUgdmlzaWJpbGl0eSBpc3N1
ZTogd2hlbiBydW5uaW5nIHdpdGggYQotICBDV0Qgb3V0c2lkZSBvZiBhIHRlc3QgcGFja2FnZSBw
eXRlc3Qgd291bGQgZ2V0IGZpeHR1cmUgZGlzY292ZXJ5IHdyb25nLgotICBUaGFua3MgdG8gV29s
ZmdhbmcgU2NobmVycmluZyBmb3IgZmlndXJpbmcgb3V0IGEgcmVwcm9kdWNpYmxlIGV4YW1wbGUu
Ci0KLS0gSW50cm9kdWNlIHB5dGVzdF9lbnRlcl9wZGIgaG9vayAobmVlZGVkIGUuZy4gYnkgcHl0
ZXN0X3RpbWVvdXQgdG8gY2FuY2VsIHRoZQotICB0aW1lb3V0IHdoZW4gaW50ZXJhY3RpdmVseSBl
bnRlcmluZyBwZGIpLiAgVGhhbmtzIFdvbGZnYW5nIFNjaG5lcnJpbmcuCi0KLS0gY2hlY2sgeGZh
aWwvc2tpcCBhbHNvIHdpdGggbm9uLXB5dGhvbiBmdW5jdGlvbiB0ZXN0IGl0ZW1zLiBUaGFua3MK
LSAgRmxvcmlzIEJydXlub29naGUuCi0KLTIuNi4yICgyMDE0LTA5LTA1KQotPT09PT09PT09PT09
PT09PT09Ci0KLS0gQWRkZWQgZnVuY3Rpb24gcHl0ZXN0LmZyZWV6ZV9pbmNsdWRlcygpLCB3aGlj
aCBtYWtlcyBpdCBlYXN5IHRvIGVtYmVkCi0gIHB5dGVzdCBpbnRvIGV4ZWN1dGFibGVzIHVzaW5n
IHRvb2xzIGxpa2UgY3hfZnJlZXplLgotICBTZWUgZG9jcyBmb3IgZXhhbXBsZXMgYW5kIHJhdGlv
bmFsZS4gVGhhbmtzIEJydW5vIE9saXZlaXJhLgotCi0tIEltcHJvdmUgYXNzZXJ0aW9uIHJld3Jp
dGluZyBjYWNoZSBpbnZhbGlkYXRpb24gcHJlY2lzaW9uLgotCi0tIGZpeGVkIGlzc3VlNTYxOiBh
ZGFwdCBhdXRvdXNlIGZpeHR1cmUgZXhhbXBsZSBmb3IgcHl0aG9uMy4KLQotLSBmaXhlZCBpc3N1
ZTQ1MzogYXNzZXJ0aW9uIHJld3JpdGluZyBpc3N1ZSB3aXRoIF9fcmVwcl9fIGNvbnRhaW5pbmcK
LSAgIlxueyIsICJcbn0iIGFuZCAiXG5+Ii4KLQotLSBmaXggaXNzdWU1NjA6IGNvcnJlY3RseSBk
aXNwbGF5IGNvZGUgaWYgYW4gImVsc2U6IiBvciAiZmluYWxseToiIGlzCi0gIGZvbGxvd2VkIGJ5
IHN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZS4KLQotLSBGaXggZXhhbXBsZSBpbiBtb25rZXlw
YXRjaCBkb2N1bWVudGF0aW9uLCB0aGFua3MgdC04Y2guCi0KLS0gZml4IGlzc3VlNTcyOiBjb3Jy
ZWN0IHRtcGRpciBkb2MgZXhhbXBsZSBmb3IgcHl0aG9uMy4KLQotLSBEbyBub3QgbWFyayBhcyB1
bml2ZXJzYWwgd2hlZWwgYmVjYXVzZSBQeXRob24gMi42IGlzIGRpZmZlcmVudCBmcm9tCi0gIG90
aGVyIGJ1aWxkcyBkdWUgdG8gdGhlIGV4dHJhIGFyZ3BhcnNlIGRlcGVuZGVuY3kuICBGaXhlcyBp
c3N1ZTU2Ni4KLSAgVGhhbmtzIHNvbnRlay4KLQotLSBJbXBsZW1lbnQgaXNzdWU1NDk6IHVzZXIt
cHJvdmlkZWQgYXNzZXJ0aW9uIG1lc3NhZ2VzIG5vdyBubyBsb25nZXIKLSAgcmVwbGFjZSB0aGUg
cHkudGVzdCBpbnRyb3NwZWN0aW9uIG1lc3NhZ2UgYnV0IGFyZSBzaG93biBpbiBhZGRpdGlvbgot
ICB0byB0aGVtLgotCi0yLjYuMSAoMjAxNC0wOC0wNykKLT09PT09PT09PT09PT09PT09PQotCi0t
IE5vIGxvbmdlciBzaG93IGxpbmUgbnVtYmVycyBpbiB0aGUgLS12ZXJib3NlIG91dHB1dCwgdGhl
IG91dHB1dCBpcyBub3cKLSAgcHVyZWx5IHRoZSBub2RlaWQuICBUaGUgbGluZSBudW1iZXIgaXMg
c3RpbGwgc2hvd24gaW4gZmFpbHVyZSByZXBvcnRzLgotICBUaGFua3MgRmxvcmlzIEJydXlub29n
aGUuCi0KLS0gZml4IGlzc3VlNDM3IHdoZXJlIGFzc2VydGlvbiByZXdyaXRpbmcgY291bGQgY2F1
c2UgcHl0ZXN0LXhkaXN0IHNsYXZlcwotICB0byBjb2xsZWN0IGRpZmZlcmVudCB0ZXN0cy4gVGhh
bmtzIEJydW5vIE9saXZlaXJhLgotCi0tIGZpeCBpc3N1ZTU1NTogYWRkICJlcnJvcnMiIGF0dHJp
YnV0ZSB0byBjYXB0dXJlLXN0cmVhbXMgdG8gc2F0aXNmeQotICBzb21lIGRpc3R1dGlscyBhbmQg
cG9zc2libHkgb3RoZXIgY29kZSBhY2Nlc3Npbmcgc3lzLnN0ZG91dC5lcnJvcnMuCi0KLS0gZml4
IGlzc3VlNTQ3IGNhcHN5cy9jYXBmZCBhbHNvIHdvcmsgd2hlbiBvdXRwdXQgY2FwdHVyaW5nICgi
LXMiKSBpcyBkaXNhYmxlZC4KLQotLSBhZGRyZXNzIGlzc3VlMTcwOiBhbGxvdyBweXRlc3QubWFy
ay54ZmFpbCguLi4pIHRvIHNwZWNpZnkgZXhwZWN0ZWQgZXhjZXB0aW9ucyB2aWEKLSAgYW4gb3B0
aW9uYWwgInJhaXNlcz1FWEMiIGFyZ3VtZW50IHdoZXJlIEVYQyBjYW4gYmUgYSBzaW5nbGUgZXhj
ZXB0aW9uCi0gIG9yIGEgdHVwbGUgb2YgZXhjZXB0aW9uIGNsYXNzZXMuICBUaGFua3MgRGF2aWQg
TW9ociBmb3IgdGhlIGNvbXBsZXRlCi0gIFBSLgotCi0tIGZpeCBpbnRlZ3JhdGlvbiBvZiBweXRl
c3Qgd2l0aCB1bml0dGVzdC5tb2NrLnBhdGNoIGRlY29yYXRvciB3aGVuCi0gIGl0IHVzZXMgdGhl
ICJuZXciIGFyZ3VtZW50LiAgVGhhbmtzIE5pY29sYXMgRGVsYWJ5IGZvciB0ZXN0IGFuZCBQUi4K
LQotLSBmaXggaXNzdWUgd2l0aCBkZXRlY3RpbmcgY29uZnRlc3QgZmlsZXMgaWYgdGhlIGFyZ3Vt
ZW50cyBjb250YWluCi0gICI6OiIgbm9kZSBpZCBzcGVjaWZpY2F0aW9ucyAoY29weSBwYXN0ZWQg
ZnJvbSAiLXYiIG91dHB1dCkKLQotLSBmaXggaXNzdWU1NDQgYnkgb25seSByZW1vdmluZyAiQE5V
TSIgYXQgdGhlIGVuZCBvZiAiOjoiIHNlcGFyYXRlZCBwYXJ0cwotICBhbmQgaWYgdGhlIHBhcnQg
aGFzIGEgIi5weSIgZXh0ZW5zaW9uCi0KLS0gZG9uJ3QgdXNlIHB5LnN0ZCBpbXBvcnQgaGVscGVy
LCByYXRoZXIgaW1wb3J0IHRoaW5ncyBkaXJlY3RseS4KLSAgVGhhbmtzIEJydW5vIE9saXZlaXJh
LgotCi0yLjYKLT09PQotCi0tIENhY2hlIGV4Y2VwdGlvbnMgZnJvbSBmaXh0dXJlcyBhY2NvcmRp
bmcgdG8gdGhlaXIgc2NvcGUgKGlzc3VlIDQ2NykuCi0KLS0gZml4IGlzc3VlNTM3OiBBdm9pZCBp
bXBvcnRpbmcgb2xkIGFzc2VydGlvbiByZWludGVycHJldGF0aW9uIGNvZGUgYnkgZGVmYXVsdC4K
LQotLSBmaXggaXNzdWUzNjQ6IHNob3J0ZW4gYW5kIGVuaGFuY2UgdHJhY2ViYWNrcyByZXByZXNl
bnRhdGlvbiBieSBkZWZhdWx0LgotICBUaGUgbmV3ICItLXRiPWF1dG8iIG9wdGlvbiAoZGVmYXVs
dCkgd2lsbCBvbmx5IGRpc3BsYXkgbG9uZyB0cmFjZWJhY2tzCi0gIGZvciB0aGUgZmlyc3QgYW5k
IGxhc3QgZW50cnkuICBZb3UgY2FuIGdldCB0aGUgb2xkIGJlaGF2aW91ciBvZiBwcmludGluZwot
ICBhbGwgZW50cmllcyBhcyBsb25nIGVudHJpZXMgd2l0aCAiLS10Yj1sb25nIi4gIEFsc28gc2hv
cnQgZW50cmllcyBieQotICBkZWZhdWx0IGFyZSBub3cgcHJpbnRlZCB2ZXJ5IHNpbWlsYXJseSB0
byAiLS10Yj1uYXRpdmUiIG9uZXMuCi0KLS0gZml4IGlzc3VlNTE0OiB0ZWFjaCBhc3NlcnRpb24g
cmVpbnRlcnByZXRhdGlvbiBhYm91dCBwcml2YXRlIGNsYXNzIGF0dHJpYnV0ZXMKLQotLSBjaGFu
Z2UgLXYgb3V0cHV0IHRvIGluY2x1ZGUgZnVsbCBub2RlIElEcyBvZiB0ZXN0cy4gIFVzZXJzIGNh
biBjb3B5Ci0gIGEgbm9kZSBJRCBmcm9tIGEgdGVzdCBydW4sIGluY2x1ZGluZyBsaW5lIG51bWJl
ciwgYW5kIHVzZSBpdCBhcyBhCi0gIHBvc2l0aW9uYWwgYXJndW1lbnQgaW4gb3JkZXIgdG8gcnVu
IG9ubHkgYSBzaW5nbGUgdGVzdC4KLQotLSBmaXggaXNzdWUgNDc1OiBmYWlsIGVhcmx5IGFuZCBj
b21wcmVoZW5zaWJsZSBpZiBjYWxsaW5nCi0gIHB5dGVzdC5yYWlzZXMgd2l0aCB3cm9uZyBleGNl
cHRpb24gdHlwZS4KLQotLSBmaXggaXNzdWU1MTY6IHRlbGwgaW4gZ2V0dGluZy1zdGFydGVkIGFi
b3V0IGN1cnJlbnQgZGVwZW5kZW5jaWVzLgotCi0tIGNsZWFudXAgc2V0dXAucHkgYSBiaXQgYW5k
IHNwZWNpZnkgc3VwcG9ydGVkIHZlcnNpb25zLiBUaGFua3MgSnVya28KLSAgR29zcG9kbmV0aWMg
Zm9yIHRoZSBQUi4KLQotLSBjaGFuZ2UgWFBBU1MgY29sb3VyIHRvIHllbGxvdyByYXRoZXIgdGhl
biByZWQgd2hlbiB0ZXN0cyBhcmUgcnVuCi0gIHdpdGggLXYuCi0KLS0gZml4IGlzc3VlNDczOiB3
b3JrIGFyb3VuZCBtb2NrIHB1dHRpbmcgYW4gdW5ib3VuZCBtZXRob2QgaW50byBhIGNsYXNzCi0g
IGRpY3Qgd2hlbiBkb3VibGUtcGF0Y2hpbmcuCi0KLS0gZml4IGlzc3VlNDk4OiBpZiBhIGZpeHR1
cmUgZmluYWxpemVyIGZhaWxzLCBtYWtlIHN1cmUgdGhhdAotICB0aGUgZml4dHVyZSBpcyBzdGls
bCBpbnZhbGlkYXRlZC4KLQotLSBmaXggaXNzdWU0NTM6IHRoZSByZXN1bHQgb2YgdGhlIHB5dGVz
dF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vayBub3cgZ2V0cwotICBpdCdzIG5ld2xpbmVzIGVzY2Fw
ZWQgc28gdGhhdCBmb3JtYXRfZXhjZXB0aW9uIGRvZXMgbm90IGJsb3cgdXAuCi0KLS0gaW50ZXJu
YWwgbmV3IHdhcm5pbmcgc3lzdGVtOiBweXRlc3Qgd2lsbCBub3cgcHJvZHVjZSB3YXJuaW5ncyB3
aGVuCi0gIGl0IGRldGVjdHMgb2RkaXRpZXMgaW4geW91ciB0ZXN0IGNvbGxlY3Rpb24gb3IgZXhl
Y3V0aW9uLgotICBXYXJuaW5ncyBhcmUgdWx0aW1hdGVseSBzZW50IHRvIGEgbmV3IHB5dGVzdF9s
b2d3YXJuaW5nIGhvb2sgd2hpY2ggaXMKLSAgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgYnkg
dGhlIHRlcm1pbmFsIHBsdWdpbiB3aGljaCBkaXNwbGF5cwotICB3YXJuaW5ncyBpbiB0aGUgc3Vt
bWFyeSBsaW5lIGFuZCBzaG93cyBtb3JlIGRldGFpbHMgd2hlbiAtcncgKHJlcG9ydCBvbgotICB3
YXJuaW5ncykgaXMgc3BlY2lmaWVkLgotCi0tIGNoYW5nZSBza2lwcyBpbnRvIHdhcm5pbmdzIGZv
ciB0ZXN0IGNsYXNzZXMgd2l0aCBhbiBfX2luaXRfXyBhbmQKLSAgY2FsbGFibGVzIGluIHRlc3Qg
bW9kdWxlcyB3aGljaCBsb29rIGxpa2UgYSB0ZXN0IGJ1dCBhcmUgbm90IGZ1bmN0aW9ucy4KLQot
LSBmaXggaXNzdWU0MzY6IGltcHJvdmVkIGZpbmRpbmcgb2YgaW5pdGlhbCBjb25mdGVzdCBmaWxl
cyBmcm9tIGNvbW1hbmQKLSAgbGluZSBhcmd1bWVudHMgYnkgdXNpbmcgdGhlIHJlc3VsdCBvZiBw
YXJzZV9rbm93bl9hcmdzIHJhdGhlciB0aGFuCi0gIHRoZSBwcmV2aW91cyBmbGFreSBoZXVyaXN0
aWNzLiAgVGhhbmtzIE1hcmMgQWJyYW1vd2l0eiBmb3IgdGVzdHMKLSAgYW5kIGluaXRpYWwgZml4
aW5nIGFwcHJvYWNoZXMgaW4gdGhpcyBhcmVhLgotCi0tIGZpeCBpc3N1ZSAjNDc5OiBwcm9wZXJs
eSBoYW5kbGUgbm9zZS91bml0dGVzdCgyKSBTa2lwVGVzdCBleGNlcHRpb25zCi0gIGR1cmluZyBj
b2xsZWN0aW9uL2xvYWRpbmcgb2YgdGVzdCBtb2R1bGVzLiAgVGhhbmtzIHRvIE1hcmMgU2NobGFp
Y2gKLSAgZm9yIHRoZSBjb21wbGV0ZSBQUi4KLQotLSBmaXggaXNzdWU0OTA6IGluY2x1ZGUgcHl0
ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMgaW4gZG9jdW1lbnRhdGlvbgotICBhbmQgaW1wcm92
ZSBkb2NzdHJpbmcuCi0KLS0gZml4IGlzc3VlNDcyOiBjbGFyaWZ5IHRoYXQgYGBweXRlc3QuY29u
ZmlnLmdldHZhbHVlKClgYCBjYW5ub3Qgd29yawotICBpZiBpdCdzIHRyaWdnZXJlZCBhaGVhZCBv
ZiBjb21tYW5kIGxpbmUgcGFyc2luZy4KLQotLSBtZXJnZSBQUjEyMzogaW1wcm92ZWQgaW50ZWdy
YXRpb24gd2l0aCBtb2NrLnBhdGNoIGRlY29yYXRvciBvbiB0ZXN0cy4KLQotLSBmaXggaXNzdWU0
MTI6IG1lc3Npbmcgd2l0aCBzdGRvdXQvc3RkZXJyIEZELWxldmVsIHN0cmVhbXMgaXMgbm93Ci0g
IGNhcHR1cmVkIHdpdGhvdXQgY3Jhc2hlcy4KLQotLSBmaXggaXNzdWU0ODM6IHRyaWFsL3B5MzMg
d29ya3Mgbm93IHByb3Blcmx5LiAgVGhhbmtzIERhbmllbCBHcmFuYSBmb3IgUFIuCi0KLS0gaW1w
cm92ZSBleGFtcGxlIGZvciBweXRlc3QgaW50ZWdyYXRpb24gd2l0aCAicHl0aG9uIHNldHVwLnB5
IHRlc3QiCi0gIHdoaWNoIG5vdyBoYXMgYSBnZW5lcmljICItYSIgb3IgIi0tcHl0ZXN0LWFyZ3Mi
IG9wdGlvbiB3aGVyZSB5b3UKLSAgY2FuIHBhc3MgYWRkaXRpb25hbCBvcHRpb25zIGFzIGEgcXVv
dGVkIHN0cmluZy4gIFRoYW5rcyBUcmV2b3IgQmVrb2xheS4KLQotLSBzaW1wbGlmaWVkIGludGVy
bmFsIGNhcHR1cmluZyBtZWNoYW5pc20gYW5kIG1hZGUgaXQgbW9yZSByb2J1c3QKLSAgYWdhaW5z
dCB0ZXN0cyBvciBzZXR1cHMgY2hhbmdpbmcgRkQxL0ZEMiwgYWxzbyBiZXR0ZXIgaW50ZWdyYXRl
ZAotICBub3cgd2l0aCBweXRlc3QucGRiKCkgaW4gc2luZ2xlIHRlc3RzLgotCi0tIGltcHJvdmVt
ZW50cyB0byBweXRlc3QncyBvd24gdGVzdC1zdWl0ZSBsZWFrYWdlIGRldGVjdGlvbiwgY291cnRl
c3kgb2YgUFJzCi0gIGZyb20gTWFyYyBBYnJhbW93aXR6Ci0KLS0gZml4IGlzc3VlNDkyOiBhdm9p
ZCBsZWFrIGluIHRlc3Rfd3JpdGVvcmcuICBUaGFua3MgTWFyYyBBYnJhbW93aXR6LgotCi0tIGZp
eCBpc3N1ZTQ5MzogZG9uJ3QgcnVuIHRlc3RzIGluIGRvYyBkaXJlY3Rvcnkgd2l0aCBgYHB5dGhv
biBzZXR1cC5weSB0ZXN0YGAKLSAgKHVzZSB0b3ggLWUgZG9jdGVzdGluZyBmb3IgdGhhdCkKLQot
LSBmaXggaXNzdWU0ODY6IGJldHRlciByZXBvcnRpbmcgYW5kIGhhbmRsaW5nIG9mIGVhcmx5IGNv
bmZ0ZXN0IGxvYWRpbmcgZmFpbHVyZXMKLQotLSBzb21lIGNsZWFudXAgYW5kIHNpbXBsaWZpY2F0
aW9uIG9mIGludGVybmFsIGNvbmZ0ZXN0IGhhbmRsaW5nLgotCi0tIHdvcmsgYSBiaXQgaGFyZGVy
IHRvIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgd2hlbiBjYXRjaGluZyBleGNlcHRpb25zLgotICBU
aGFua3MgSnVya28gR29zcG9kbmV0aWMuCi0KLS0gZml4IGlzc3VlNDQzOiBmaXggc2tpcCBleGFt
cGxlcyB0byB1c2UgcHJvcGVyIGNvbXBhcmlzb24uICBUaGFua3MgQWxleAotICBHcm9lbmhvbG0u
Ci0KLS0gc3VwcG9ydCBub3NlLXN0eWxlIGBgX190ZXN0X19gYCBhdHRyaWJ1dGUgb24gbW9kdWxl
cywgY2xhc3NlcyBhbmQKLSAgZnVuY3Rpb25zLCBpbmNsdWRpbmcgdW5pdHRlc3Qtc3R5bGUgQ2xh
c3Nlcy4gIElmIHNldCB0byBGYWxzZSwgdGhlCi0gIHRlc3Qgd2lsbCBub3QgYmUgY29sbGVjdGVk
LgotCi0tIGZpeCBpc3N1ZTUxMjogc2hvdyAiPG5vdHNldD4iIGZvciBhcmd1bWVudHMgd2hpY2gg
bWlnaHQgbm90IGJlIHNldAotICBpbiBtb25rZXlwYXRjaCBwbHVnaW4uICBJbXByb3ZlcyBvdXRw
dXQgaW4gZG9jdW1lbnRhdGlvbi4KLQotCi0yLjUuMiAoMjAxNC0wMS0yOSkKLT09PT09PT09PT09
PT09PT09PQotCi0tIGZpeCBpc3N1ZTQwOSAtLSBiZXR0ZXIgaW50ZXJvcGVyYXRlIHdpdGggY3hf
ZnJlZXplIGJ5IG5vdAotICB0cnlpbmcgdG8gaW1wb3J0IGZyb20gY29sbGVjdGlvbnMuYWJjIHdo
aWNoIGNhdXNlcyBwcm9ibGVtcwotICBmb3IgcHkyNy9jeF9mcmVlemUuICBUaGFua3MgV29sZmdh
bmcgTC4gZm9yIHJlcG9ydGluZyBhbmQgdHJhY2tpbmcgaXQgZG93bi4KLQotLSBmaXhlZCBkb2Nz
IGFuZCBjb2RlIHRvIHVzZSAicHl0ZXN0IiBpbnN0ZWFkIG9mICJweS50ZXN0IiBhbG1vc3QgZXZl
cnl3aGVyZS4KLSAgVGhhbmtzIEp1cmtvIEdvc3BvZG5ldGljIGZvciB0aGUgY29tcGxldGUgUFIu
Ci0KLS0gZml4IGlzc3VlNDI1OiBtZW50aW9uIGF0IGVuZCBvZiAicHkudGVzdCAtaCIgdGhhdCAt
LW1hcmtlcnMKLSAgYW5kIC0tZml4dHVyZXMgd29yayBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIHRl
c3QgcGF0aCAob3IgY3VycmVudCBkaXIpCi0KLS0gZml4IGlzc3VlNDEzOiBleGNlcHRpb25zIHdp
dGggdW5pY29kZSBhdHRyaWJ1dGVzIGFyZSBub3cgcHJpbnRlZAotICBjb3JyZWN0bHkgYWxzbyBv
biBweXRob24yIGFuZCB3aXRoIHB5dGVzdC14ZGlzdCBydW5zLiAodGhlIGZpeAotICByZXF1aXJl
cyBweS0xLjQuMjApCi0KLS0gY29weSwgY2xlYW51cCBhbmQgaW50ZWdyYXRlIHB5LmlvIGNhcHR1
cmUKLSAgZnJvbSBweWxpYiAxLjQuMjAuZGV2MiAocmV2IDEzZDlhZjk1NTQ3ZSkKLQotLSBhZGRy
ZXNzIGlzc3VlNDE2OiBjbGFyaWZ5IGRvY3MgYXMgdG8gY29uZnRlc3QucHkgbG9hZGluZyBzZW1h
bnRpY3MKLQotLSBmaXggaXNzdWU0Mjk6IGNvbXBhcmluZyBieXRlIHN0cmluZ3Mgd2l0aCBub24t
YXNjaWkgY2hhcnMgaW4gYXNzZXJ0Ci0gIGV4cHJlc3Npb25zIG5vdyB3b3JrIGJldHRlci4gIFRo
YW5rcyBGbG9yaXMgQnJ1eW5vb2doZS4KLQotLSBtYWtlIGNhcGZkL2NhcHN5cy5jYXB0dXJlIHBy
aXZhdGUsIGl0cyB1bnVzZWQgYW5kIHNob3VsZG4ndCBiZSBleHBvc2VkCi0KLQotMi41LjEgKDIw
MTMtMTItMTcpCi09PT09PT09PT09PT09PT09PT0KLQotLSBtZXJnZSBuZXcgZG9jdW1lbnRhdGlv
biBzdHlsaW5nIFBSIGZyb20gVG9iaWFzIEJpZW5pZWsuCi0KLS0gZml4IGlzc3VlNDAzOiBhbGxv
dyBwYXJhbWV0cml6ZSBvZiBtdWx0aXBsZSBzYW1lLW5hbWUgZnVuY3Rpb25zIHdpdGhpbgotICBh
IGNvbGxlY3Rpb24gbm9kZS4gIFRoYW5rcyBBbmRyZWFzIEtsb2Vja25lciBhbmQgQWxleCBHYXlu
b3IgZm9yIHJlcG9ydGluZwotICBhbmQgYW5hbHlzaXMuCi0KLS0gQWxsb3cgcGFyYW1ldGVyaXpl
ZCBmaXh0dXJlcyB0byBzcGVjaWZ5IHRoZSBJRCBvZiB0aGUgcGFyYW1ldGVycyBieQotICBhZGRp
bmcgYW4gaWRzIGFyZ3VtZW50IHRvIHB5dGVzdC5maXh0dXJlKCkgYW5kIHB5dGVzdC55aWVsZF9m
aXh0dXJlKCkuCi0gIFRoYW5rcyBGbG9yaXMgQnJ1eW5vb2doZS4KLQotLSBmaXggaXNzdWU0MDQg
YnkgYWx3YXlzIHVzaW5nIHRoZSBiaW5hcnkgeG1sIGVzY2FwZSBpbiB0aGUganVuaXR4bWwKLSAg
cGx1Z2luLiAgVGhhbmtzIFJvbm55IFBmYW5uc2NobWlkdC4KLQotLSBmaXggaXNzdWU0MDc6IGZp
eCBhZGRvcHRpb24gZG9jc3RyaW5nIHRvIHBvaW50IHRvIGFyZ3BhcnNlIGluc3RlYWQgb2YKLSAg
b3B0cGFyc2UuIFRoYW5rcyBEYW5pZWwgRC4gV3JpZ2h0LgotCi0KLQotMi41LjAgKDIwMTMtMTIt
MTIpCi09PT09PT09PT09PT09PT09PT0KLQotLSBkcm9wcGVkIHB5dGhvbjIuNSBmcm9tIGF1dG9t
YXRlZCByZWxlYXNlIHRlc3Rpbmcgb2YgcHl0ZXN0IGl0c2VsZgotICB3aGljaCBtZWFucyBpdCdz
IHByb2JhYmx5IGdvaW5nIHRvIGJyZWFrIHNvb24gKGJ1dCBzdGlsbCB3b3JrcwotICB3aXRoIHRo
aXMgcmVsZWFzZSB3ZSBiZWxpZXZlKS4KLQotLSBzaW1wbGlmaWVkIGFuZCBmaXhlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgY2FsbGluZyBmaW5hbGl6ZXJzIHdoZW4KLSAgcGFyYW1ldHJpemVkIGZpeHR1
cmVzIG9yIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgaW52b2x2ZWQuICBmaW5hbGl6YXRpb24KLSAg
aXMgbm93IHBlcmZvcm1lZCBsYXppbHkgYXQgc2V0dXAgdGltZSBpbnN0ZWFkIG9mIGluIHRoZSAi
dGVhcmRvd24gcGhhc2UiLgotICBXaGlsZSB0aGlzIG1pZ2h0IHNvdW5kIG9kZCBhdCBmaXJzdCwg
aXQgaGVscHMgdG8gZW5zdXJlIHRoYXQgd2UgYXJlCi0gIGNvcnJlY3RseSBoYW5kbGluZyBzZXR1
cC90ZWFyZG93biBldmVuIGluIGNvbXBsZXggY29kZS4gIFVzZXItbGV2ZWwgY29kZQotICBzaG91
bGQgbm90IGJlIGFmZmVjdGVkIHVubGVzcyBpdCdzIGltcGxlbWVudGluZyB0aGUgcHl0ZXN0X3J1
bnRlc3RfdGVhcmRvd24KLSAgaG9vayBhbmQgZXhwZWN0aW5nIGNlcnRhaW4gZml4dHVyZSBpbnN0
YW5jZXMgYXJlIHRvcm4gZG93biB3aXRoaW4gKHZlcnkKLSAgdW5saWtlbHkgYW5kIHdvdWxkIGhh
dmUgYmVlbiB1bnJlbGlhYmxlIGFueXdheSkuCi0KLS0gUFI5MDogYWRkIC0tY29sb3I9eWVzfG5v
fGF1dG8gb3B0aW9uIHRvIGZvcmNlIHRlcm1pbmFsIGNvbG9yaW5nCi0gIG1vZGUgKCJhdXRvIiBp
cyBkZWZhdWx0KS4gIFRoYW5rcyBNYXJjIEFicmFtb3dpdHouCi0KLS0gZml4IGlzc3VlMzE5IC0g
Y29ycmVjdGx5IHNob3cgdW5pY29kZSBpbiBhc3NlcnRpb24gZXJyb3JzLiAgTWFueQotICB0aGFu
a3MgdG8gRmxvcmlzIEJydXlub29naGUgZm9yIHRoZSBjb21wbGV0ZSBQUi4gIEFsc28gbWVhbnMK
LSAgd2UgZGVwZW5kIG9uIHB5Pj0xLjQuMTkgbm93LgotCi0tIGZpeCBpc3N1ZTM5NiAtIGNvcnJl
Y3RseSBzb3J0IGFuZCBmaW5hbGl6ZSBjbGFzcy1zY29wZWQgcGFyYW1ldHJpemVkCi0gIHRlc3Rz
IGluZGVwZW5kZW50bHkgZnJvbSBudW1iZXIgb2YgbWV0aG9kcyBvbiB0aGUgY2xhc3MuCi0KLS0g
cmVmaXggaXNzdWUzMjMgaW4gYSBiZXR0ZXIgd2F5IC0tIHBhcmFtZXRyaXphdGlvbiBzaG91bGQg
bm93IG5ldmVyCi0gIGNhdXNlIFJ1bnRpbWUgUmVjdXJzaW9uIGVycm9ycyBiZWNhdXNlIHRoZSB1
bmRlcmx5aW5nIGFsZ29yaXRobQotICBmb3IgcmUtb3JkZXJpbmcgdGVzdHMgcGVyLXNjb3BlL3Bl
ci1maXh0dXJlIGlzIG5vdCByZWN1cnNpdmUKLSAgYW55bW9yZSAoaXQgd2FzIHRhaWwtY2FsbCBy
ZWN1cnNpdmUgYmVmb3JlIHdoaWNoIGNvdWxkIGxlYWQKLSAgdG8gcHJvYmxlbXMgZm9yIG1vcmUg
dGhhbiA+OTY2IG5vbi1mdW5jdGlvbiBzY29wZWQgcGFyYW1ldGVycykuCi0KLS0gZml4IGlzc3Vl
MjkwIC0gdGhlcmUgaXMgcHJlbGltaW5hcnkgc3VwcG9ydCBub3cgZm9yIHBhcmFtZXRyaXppbmcK
LSAgd2l0aCByZXBlYXRlZCBzYW1lIHZhbHVlcyAoc29tZXRpbWVzIHVzZWZ1bCB0byB0ZXN0IGlm
IGNhbGxpbmcKLSAgYSBzZWNvbmQgdGltZSB3b3JrcyBhcyB3aXRoIHRoZSBmaXJzdCB0aW1lKS4K
LQotLSBjbG9zZSBpc3N1ZTI0MCAtIGRvY3VtZW50IHByZWNpc2VseSBob3cgcHl0ZXN0IG1vZHVs
ZSBpbXBvcnRpbmcKLSAgd29ya3MsIGRpc2N1c3MgdGhlIHR3byBjb21tb24gdGVzdCBkaXJlY3Rv
cnkgbGF5b3V0cywgYW5kIGhvdyBpdAotICBpbnRlcmFjdHMgd2l0aCBQRVA0MjAtbmFtZXNwYWNl
IHBhY2thZ2VzLgotCi0tIGZpeCBpc3N1ZTI0NiBmaXggZmluYWxpemVyIG9yZGVyIHRvIGJlIExJ
Rk8gb24gaW5kZXBlbmRlbnQgZml4dHVyZXMKLSAgZGVwZW5kaW5nIG9uIGEgcGFyYW1ldHJpemVk
IGhpZ2hlci10aGFuLWZ1bmN0aW9uIHNjb3BlZCBmaXh0dXJlLgotICAod2FzIHF1aXRlIHNvbWUg
ZWZmb3J0IHNvIHBsZWFzZSBiZWFyIHdpdGggdGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBzZW50ZW5j
ZSA6KQotICBUaGFua3MgUmFscGggU2NobWl0dCBmb3IgdGhlIHByZWNpc2UgZmFpbHVyZSBleGFt
cGxlLgotCi0tIGZpeCBpc3N1ZTI0NCBieSBpbXBsZW1lbnRpbmcgc3BlY2lhbCBpbmRleCBmb3Ig
cGFyYW1ldGVycyB0byBvbmx5IHVzZQotICBpbmRpY2VzIGZvciBwYXJhbWVudHJpemVkIHRlc3Qg
aWRzCi0KLS0gZml4IGlzc3VlMjg3IGJ5IHJ1bm5pbmcgYWxsIGZpbmFsaXplcnMgYnV0IHNhdmlu
ZyB0aGUgZXhjZXB0aW9uCi0gIGZyb20gdGhlIGZpcnN0IGZhaWxpbmcgZmluYWxpemVyIGFuZCBy
ZS1yYWlzaW5nIGl0IHNvIHRlYXJkb3duIHdpbGwKLSAgc3RpbGwgaGF2ZSBmYWlsZWQuICBXZSBy
ZXJhaXNlIHRoZSBmaXJzdCBmYWlsaW5nIGV4Y2VwdGlvbiBiZWNhdXNlCi0gIGl0IG1pZ2h0IGJl
IHRoZSBjYXVzZSBmb3Igb3RoZXIgZmluYWxpemVycyB0byBmYWlsLgotCi0tIGZpeCBvcmRlcmlu
ZyB3aGVuIG1vY2sucGF0Y2ggb3Igb3RoZXIgc3RhbmRhcmQgZGVjb3JhdG9yLXdyYXBwaW5ncwot
ICBhcmUgdXNlZCB3aXRoIHRlc3QgbWV0aG9kcy4gIFRoaXMgZml4dWVzIGlzc3VlMzQ2IGFuZCBz
aG91bGQKLSAgaGVscCB3aXRoIHJhbmRvbSAieGRpc3QiIGNvbGxlY3Rpb24gZmFpbHVyZXMuICBU
aGFua3MgdG8KLSAgUm9ubnkgUGZhbm5zY2htaWR0IGFuZCBEb25hbGQgU3R1ZmZ0IGZvciBoZWxw
aW5nIHRvIGlzb2xhdGUgaXQuCi0KLS0gZml4IGlzc3VlMzU3IC0gc3BlY2lhbCBjYXNlICItayIg
ZXhwcmVzc2lvbnMgdG8gYWxsb3cgZm9yCi0gIGZpbHRlcmluZyB3aXRoIHNpbXBsZSBzdHJpbmdz
IHRoYXQgYXJlIG5vdCB2YWxpZCBweXRob24gZXhwcmVzc2lvbnMuCi0gIEV4YW1wbGVzOiAiLWsg
MS4zIiBtYXRjaGVzIGFsbCB0ZXN0cyBwYXJhbWV0cml6ZWQgd2l0aCAxLjMuCi0gICItayBOb25l
IiBmaWx0ZXJzIGFsbCB0ZXN0cyB0aGF0IGhhdmUgIk5vbmUiIGluIHRoZWlyIG5hbWUKLSAgYW5k
IGNvbnZlcnNlbHkgIi1rICdub3QgTm9uZSciLgotICBQcmV2aW91c2x5IHRoZXNlIGV4YW1wbGVz
IHdvdWxkIHJhaXNlIHN5bnRheCBlcnJvcnMuCi0KLS0gZml4IGlzc3VlMzg0IGJ5IHJlbW92aW5n
IHRoZSB0cmlhbCBzdXBwb3J0IGNvZGUKLSAgc2luY2UgdGhlIHVuaXR0ZXN0IGNvbXBhdCBlbmhh
bmNlbWVudHMgYWxsb3cKLSAgdHJpYWwgdG8gaGFuZGxlIGl0IG9uIGl0cyBvd24KLQotLSBkb24n
dCBoaWRlIGFuIEltcG9ydEVycm9yIHdoZW4gaW1wb3J0aW5nIGEgcGx1Z2luIHByb2R1Y2VzIG9u
ZS4KLSAgZml4ZXMgaXNzdWUzNzUuCi0KLS0gZml4IGlzc3VlMjc1IC0gYWxsb3cgdXNlZml4dHVy
ZXMgYW5kIGF1dG91c2UgZml4dHVyZXMKLSAgZm9yIHJ1bm5pbmcgZG9jdGVzdCB0ZXh0IGZpbGVz
LgotCi0tIGZpeCBpc3N1ZTM4MCBieSBtYWtpbmcgLS1yZXN1bHRsb2cgb25seSByZWx5IG9uIGxv
bmdyZXByIGluc3RlYWQKLSAgb2YgdGhlICJyZXByY3Jhc2giIGF0dHJpYnV0ZSB3aGljaCBvbmx5
IGV4aXN0cyBzb21ldGltZXMuCi0KLS0gYWRkcmVzcyBpc3N1ZTEyMjogYWxsb3cgQHB5dGVzdC5m
aXh0dXJlKHBhcmFtcz1pdGVyYXRvcikgYnkgZXhwbG9kaW5nCi0gIGludG8gYSBsaXN0IGVhcmx5
IG9uLgotCi0tIGZpeCBwZXhwZWN0LTMuMCBjb21wYXRpYmlsaXR5IGZvciBweXRlc3QncyBvd24g
dGVzdHMuCi0gIChmaXhlcyBpc3N1ZTM4NikKLQotLSBhbGxvdyBuZXN0ZWQgcGFyYW1ldHJpemUt
dmFsdWUgbWFya2VycywgdGhhbmtzIEphbWVzIExhbiBmb3IgdGhlIFBSLgotCi0tIGZpeCB1bmlj
b2RlIGhhbmRsaW5nIHdpdGggbmV3IG1vbmtleXBhdGNoLnNldGF0dHIoaW1wb3J0X3BhdGgsIHZh
bHVlKQotICBBUEkuICBUaGFua3MgUm9iIERlbm5pcy4gIEZpeGVzIGlzc3VlMzcxLgotCi0tIGZp
eCB1bmljb2RlIGhhbmRsaW5nIHdpdGgganVuaXR4bWwsIGZpeGVzIGlzc3VlMzY4LgotCi0tIElu
IGFzc2VydGlvbiByZXdyaXRpbmcgbW9kZSBvbiBQeXRob24gMiwgZml4IHRoZSBkZXRlY3Rpb24g
b2YgY29kaW5nCi0gIGNvb2tpZXMuIFNlZSBpc3N1ZSAjMzMwLgotCi0tIG1ha2UgIi0tcnVueGZh
aWwiIHR1cm4gaW1wZXJhdGl2ZSBweXRlc3QueGZhaWwgY2FsbHMgaW50byBubyBvcHMKLSAgKGl0
IGFscmVhZHkgZGlkIG5ldXRyYWxpemUgcHl0ZXN0Lm1hcmsueGZhaWwgbWFya2VycykKLQotLSBy
ZWZpbmUgcHl0ZXN0IC8gcGtnX3Jlc291cmNlcyBpbnRlcmFjdGlvbnM6IFRoZSBBc3NlcnRpb25S
ZXdyaXRpbmdIb29rCi0gIFBFUDMwMiBjb21wbGlhbnQgbG9hZGVyIG5vdyByZWdpc3RlcnMgaXRz
ZWxmIHdpdGggc2V0dXB0b29scy9wa2dfcmVzb3VyY2VzCi0gIHByb3Blcmx5IHNvIHRoYXQgdGhl
IHBrZ19yZXNvdXJjZXMucmVzb3VyY2Vfc3RyZWFtIG1ldGhvZCB3b3JrcyBwcm9wZXJseS4KLSAg
Rml4ZXMgaXNzdWUzNjYuICBUaGFua3MgZm9yIHRoZSBpbnZlc3RpZ2F0aW9ucyBhbmQgZnVsbCBQ
UiB0byBKYXNvbiBSLiBDb29tYnMuCi0KLS0gcHl0ZXN0Y29uZmlnIGZpeHR1cmUgaXMgbm93IHNl
c3Npb24tc2NvcGVkIGFzIGl0IGlzIHRoZSBzYW1lIG9iamVjdCBkdXJpbmcgdGhlCi0gIHdob2xl
IHRlc3QgcnVuLiAgRml4ZXMgaXNzdWUzNzAuCi0KLS0gYXZvaWQgb25lIHN1cnByaXNpbmcgY2Fz
ZSBvZiBtYXJrZXIgbWFsZnVuY3Rpb24vY29uZnVzaW9uOjoKLQotICAgICAgQHB5dGVzdC5tYXJr
LnNvbWUobGFtYmRhIGFyZzogLi4uKQotICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKLQotICB3
b3VsZCBub3Qgd29yayBjb3JyZWN0bHkgYmVjYXVzZSBweXRlc3QgYXNzdW1lcyBAcHl0ZXN0Lm1h
cmsuc29tZQotICBnZXRzIGEgZnVuY3Rpb24gdG8gYmUgZGVjb3JhdGVkIGFscmVhZHkuICBXZSBu
b3cgYXQgbGVhc3QgZGV0ZWN0IGlmIHRoaXMKLSAgYXJnIGlzIGEgbGFtYmRhIGFuZCB0aHVzIHRo
ZSBleGFtcGxlIHdpbGwgd29yay4gIFRoYW5rcyBBbGV4IEdheW5vcgotICBmb3IgYnJpbmdpbmcg
aXQgdXAuCi0KLS0geGZhaWwgYSB0ZXN0IG9uIHB5cHkgdGhhdCBjaGVja3Mgd3JvbmcgZW5jb2Rp
bmcvYXNjaWkgKHB5cHkgZG9lcwotICBub3QgZXJyb3Igb3V0KS4gZml4ZXMgaXNzdWUzODUuCi0K
LS0gaW50ZXJuYWxseSBtYWtlIHZhcm5hbWVzKCkgZGVhbCB3aXRoIGNsYXNzZXMncyBfX2luaXRf
XywKLSAgYWx0aG91Z2ggaXQncyBub3QgbmVlZGVkIGJ5IHB5dGVzdCBpdHNlbGYgYXRtLiAgQWxz
bwotICBmaXggY2FjaGluZy4gIEZpeGVzIGlzc3VlMzc2LgotCi0tIGZpeCBpc3N1ZTIyMSAtIGhh
bmRsZSBpbXBvcnRpbmcgb2YgbmFtZXNwYWNlLXBhY2thZ2Ugd2l0aCBubwotICBfX2luaXRfXy5w
eSBwcm9wZXJseS4KLQotLSByZWZhY3RvciBpbnRlcm5hbCBGaXh0dXJlUmVxdWVzdCBoYW5kbGlu
ZyB0byBhdm9pZCBtb25rZXlwYXRjaGluZy4KLSAgT25lIG9mIHRoZSBwb3NpdGl2ZSB1c2VyLWZh
Y2luZyBlZmZlY3RzIGlzIHRoYXQgdGhlICJyZXF1ZXN0IiBvYmplY3QKLSAgY2FuIG5vdyBiZSB1
c2VkIGluIGNsb3N1cmVzLgotCi0tIGZpeGVkIHZlcnNpb24gY29tcGFyaXNvbiBpbiBweXRlc3Qu
aW1wb3J0c2tpcChtb2RuYW1lLCBtaW52ZXJzdHJpbmcpCi0KLS0gZml4IGlzc3VlMzc3IGJ5IGNs
YXJpZnlpbmcgaW4gdGhlIG5vc2UtY29tcGF0IGRvY3MgdGhhdCBweXRlc3QKLSAgZG9lcyBub3Qg
ZHVwbGljYXRlIHRoZSB1bml0dGVzdC1BUEkgaW50byB0aGUgInBsYWluIiBuYW1lc3BhY2UuCi0K
LS0gZml4IHZlcmJvc2UgcmVwb3J0aW5nIGZvciBAbW9jaydkIHRlc3QgZnVuY3Rpb25zCi0KLTIu
NC4yICgyMDEzLTEwLTA0KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gb24gV2luZG93cyByZXF1
aXJlIGNvbG9yYW1hIGFuZCBhIG5ld2VyIHB5IGxpYiBzbyB0aGF0IHB5LmlvLlRlcm1pbmFsV3Jp
dGVyKCkKLSAgbm93IHVzZXMgY29sb3JhbWEgaW5zdGVhZCBvZiBpdHMgb3duIGN0eXBlcyBoYWNr
cy4gKGZpeGVzIGlzc3VlMzY1KQotICB0aGFua3MgUGF1bCBNb29yZSBmb3IgYnJpbmdpbmcgaXQg
dXAuCi0KLS0gZml4ICItayIgbWF0Y2hpbmcgb2YgdGVzdHMgd2hlcmUgInJlcHIiIGFuZCAiYXR0
ciIgYW5kIG90aGVyIG5hbWVzIHdvdWxkCi0gIGNhdXNlIHdyb25nIG1hdGNoZXMgYmVjYXVzZSBv
ZiBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBxdWlyawotICAoZG9uJ3QgYXNrKSB3aGljaCBp
cyBub3cgcHJvcGVybHkgaW1wbGVtZW50ZWQuIGZpeGVzIGlzc3VlMzQ1LgotCi0tIGF2b2lkIHRt
cGRpciBmaXh0dXJlIHRvIGNyZWF0ZSB0b28gbG9uZyBmaWxlbmFtZXMgZXNwZWNpYWxseQotICB3
aGVuIHBhcmFtZXRyaXphdGlvbiBpcyB1c2VkIChpc3N1ZTM1NCkKLQotLSBmaXggcHl0ZXN0LXBl
cDggYW5kIHB5dGVzdC1mbGFrZXMgLyBweXRlc3QgaW50ZXJhY3Rpb25zCi0gIChjb2xsZWN0aW9u
IG5hbWVzIGluIG1hcmsgcGx1Z2luIHdhcyBhc3N1bWluZyBhbiBpdGVtIGFsd2F5cwotICBoYXMg
YSBmdW5jdGlvbiB3aGljaCBpcyBub3QgdHJ1ZSBmb3IgdGhvc2UgcGx1Z2lucyBldGMuKQotICBU
aGFua3MgQW5kaSBaZWlkbGVyLgotCi0tIGludHJvZHVjZSBub2RlLmdldF9tYXJrZXIvbm9kZS5h
ZGRfbWFya2VyIEFQSSBmb3IgcGx1Z2lucwotICBsaWtlIHB5dGVzdC1wZXA4IGFuZCBweXRlc3Qt
Zmxha2VzIHRvIGF2b2lkIHRoZSBtZXNzeQotICBkZXRhaWxzIG9mIHRoZSBub2RlLmtleXdvcmRz
ICBwc2V1ZG8tZGljdHMuICBBZGFwdGVkCi0gIGRvY3MuCi0KLS0gcmVtb3ZlIGF0dGVtcHQgdG8g
ImR1cCIgc3Rkb3V0IGF0IHN0YXJ0dXAgYXMgaXQncyBpY2t5LgotICB0aGUgbm9ybWFsIGNhcHR1
cmluZyBzaG91bGQgY2F0Y2ggZW5vdWdoIHBvc3NpYmlsaXRpZXMKLSAgb2YgdGVzdHMgbWVzc2lu
ZyB1cCBzdGFuZGFyZCBGRHMuCi0KLS0gYWRkIHBsdWdpbm1hbmFnZXIuZG9fY29uZmlndXJlKGNv
bmZpZykgYXMgYSBsaW5rIHRvCi0gIGNvbmZpZy5kb19jb25maWd1cmUoKSBmb3IgcGx1Z2luLWNv
bXBhdGliaWxpdHkKLQotMi40LjEgKDIwMTMtMTAtMDIpCi09PT09PT09PT09PT09PT09PT0KLQot
LSBXaGVuIHVzaW5nIHBhcnNlci5hZGRvcHRpb24oKSB1bmljb2RlIGFyZ3VtZW50cyB0byB0aGUK
LSAgInR5cGUiIGtleXdvcmQgc2hvdWxkIGFsc28gYmUgY29udmVydGVkIHRvIHRoZSByZXNwZWN0
aXZlIHR5cGVzLgotICB0aGFua3MgRmxvcmlzIEJydXlub29naGUsIEBkbm96YXkuIChmaXhlcyBp
c3N1ZTM2MCBhbmQgaXNzdWUzNjIpCi0KLS0gZml4IGRvdHRlZCBmaWxlbmFtZSBjb21wbGV0aW9u
IHdoZW4gdXNpbmcgYXJnY29tcGxldGUKLSAgdGhhbmtzIEFudGhvbiB2YW4gZGVyIE5ldXRoLiAo
Zml4ZXMgaXNzdWUzNjEpCi0KLS0gZml4IHJlZ3Jlc3Npb24gd2hlbiBhIDEtdHVwbGUgKCJhcmci
LCkgaXMgdXNlZCBmb3Igc3BlY2lmeWluZwotICBwYXJhbWV0cml6YXRpb24gKHRoZSB2YWx1ZXMg
b2YgdGhlIHBhcmFtZXRyaXphdGlvbiB3ZXJlIHBhc3NlZAotICBuZXN0ZWQgaW4gYSB0dXBsZSku
ICBUaGFua3MgRG9uYWxkIFN0dWZmdC4KLQotLSBtZXJnZSBkb2MgdHlwbyBmaXhlcywgdGhhbmtz
IEFuZHkgRGlybmJlcmdlcgotCi0yLjQKLT09PQotCi1rbm93biBpbmNvbXBhdGliaWxpdGllczoK
LQotLSBpZiBjYWxsaW5nIC0tZ2Vuc2NyaXB0IGZyb20gcHl0aG9uMi43IG9yIGFib3ZlLCB5b3Ug
b25seSBnZXQgYQotICBzdGFuZGFsb25lIHNjcmlwdCB3aGljaCB3b3JrcyBvbiBweXRob24yLjcg
b3IgYWJvdmUuICBVc2UgUHl0aG9uMi42Ci0gIHRvIGFsc28gZ2V0IGEgcHl0aG9uMi41IGNvbXBh
dGlibGUgdmVyc2lvbi4KLQotLSBhbGwgeHVuaXQtc3R5bGUgdGVhcmRvd24gbWV0aG9kcyAobm9z
ZS1zdHlsZSwgcHl0ZXN0LXN0eWxlLAotICB1bml0dGVzdC1zdHlsZSkgd2lsbCBub3QgYmUgY2Fs
bGVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIHNldHVwIG1ldGhvZCBmYWlsZWQsCi0gIHNlZSBpc3N1
ZTMyMiBiZWxvdy4KLQotLSB0aGUgcHl0ZXN0X3BsdWdpbl91bnJlZ2lzdGVyIGhvb2sgd2Fzbid0
IGV2ZXIgcHJvcGVybHkgY2FsbGVkCi0gIGFuZCB0aGVyZSBpcyBubyBrbm93biBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgaG9vayAtIHNvIGl0IGdvdCByZW1vdmVkLgotCi0tIHB5dGVzdC5maXh0dXJl
LWRlY29yYXRlZCBmdW5jdGlvbnMgY2Fubm90IGJlIGdlbmVyYXRvcnMgKGkuZS4gdXNlCi0gIHlp
ZWxkKSBhbnltb3JlLiAgVGhpcyBjaGFuZ2UgbWlnaHQgYmUgcmV2ZXJzZWQgaW4gMi40LjEgaWYg
aXQgY2F1c2VzCi0gIHVuZm9yZXNlZW4gcmVhbC1saWZlIGlzc3Vlcy4gIEhvd2V2ZXIsIHlvdSBj
YW4gYWx3YXlzIHdyaXRlIGFuZCByZXR1cm4KLSAgYW4gaW5uZXIgZnVuY3Rpb24vZ2VuZXJhdG9y
IGFuZCBjaGFuZ2UgdGhlIGZpeHR1cmUgY29uc3VtZXIgdG8gaXRlcmF0ZQotICBvdmVyIHRoZSBy
ZXR1cm5lZCBnZW5lcmF0b3IuICBUaGlzIGNoYW5nZSB3YXMgZG9uZSBpbiBsaWV1IG9mIHRoZSBu
ZXcKLSAgYGBweXRlc3QueWllbGRfZml4dHVyZWBgIGRlY29yYXRvciwgc2VlIGJlbG93LgotCi1u
ZXcgZmVhdHVyZXM6Ci0KLS0gZXhwZXJpbWVudGFsbHkgaW50cm9kdWNlIGEgbmV3IGBgcHl0ZXN0
LnlpZWxkX2ZpeHR1cmVgYCBkZWNvcmF0b3IKLSAgd2hpY2ggYWNjZXB0cyBleGFjdGx5IHRoZSBz
YW1lIHBhcmFtZXRlcnMgYXMgcHl0ZXN0LmZpeHR1cmUgYnV0Ci0gIG1hbmRhdGVzIGEgYGB5aWVs
ZGBgIHN0YXRlbWVudCBpbnN0ZWFkIG9mIGEgYGByZXR1cm4gc3RhdGVtZW50YGAgZnJvbQotICBm
aXh0dXJlIGZ1bmN0aW9ucy4gIFRoaXMgYWxsb3dzIGRpcmVjdCBpbnRlZ3JhdGlvbiB3aXRoICJ3
aXRoLXN0eWxlIgotICBjb250ZXh0IG1hbmFnZXJzIGluIGZpeHR1cmUgZnVuY3Rpb25zIGFuZCBn
ZW5lcmFsbHkgYXZvaWRzIHJlZ2lzdGVyaW5nCi0gIG9mIGZpbmFsaXphdGlvbiBjYWxsYmFja3Mg
aW4gZmF2b3VyIG9mIHRyZWF0aW5nIHRoZSAiYWZ0ZXIteWllbGQiIGFzCi0gIHRlYXJkb3duIGNv
ZGUuICBUaGFua3MgQW5kcmVhcyBQZWxtZSwgVmxhZGltaXIgS2VsZXNoZXYsIEZsb3JpcwotICBC
cnV5bm9vZ2hlLCBSb25ueSBQZmFubnNjaG1pZHQgYW5kIG1hbnkgb3RoZXJzIGZvciBkaXNjdXNz
aW9ucy4KLQotLSBhbGxvdyBib29sZWFuIGV4cHJlc3Npb24gZGlyZWN0bHkgd2l0aCBza2lwaWYv
eGZhaWwKLSAgaWYgYSAicmVhc29uIiBpcyBhbHNvIHNwZWNpZmllZC4gIFJld29yayBza2lwcGlu
ZyBkb2N1bWVudGF0aW9uCi0gIHRvIHJlY29tbWVuZCAiY29uZGl0aW9uIGFzIGJvb2xlYW5zIiBi
ZWNhdXNlIGl0IHByZXZlbnRzIHN1cnByaXNlcwotICB3aGVuIGltcG9ydGluZyBtYXJrZXJzIGJl
dHdlZW4gbW9kdWxlcy4gIFNwZWNpZnlpbmcgY29uZGl0aW9ucwotICBhcyBzdHJpbmdzIHdpbGwg
cmVtYWluIGZ1bGx5IHN1cHBvcnRlZC4KLQotLSByZXBvcnRpbmc6IGNvbG9yIHRoZSBsYXN0IGxp
bmUgcmVkIG9yIGdyZWVuIGRlcGVuZGluZyBpZgotICBmYWlsdXJlcy9lcnJvcnMgb2NjdXJyZWQg
b3IgZXZlcnl0aGluZyBwYXNzZWQuICB0aGFua3MgQ2hyaXN0aWFuCi0gIFRoZXVuZXJ0LgotCi0t
IG1ha2UgImltcG9ydCBwZGIgOyBwZGIuc2V0X3RyYWNlKCkiIHdvcmsgbmF0aXZlbHkgd3J0IGNh
cHR1cmluZyAobm8KLSAgIi1zIiBuZWVkZWQgYW55bW9yZSksIG1ha2luZyBgYHB5dGVzdC5zZXRf
dHJhY2UoKWBgIGEgbWVyZSBzaG9ydGN1dC4KLQotLSBmaXggaXNzdWUxODE6IC0tcGRiIG5vdyBh
bHNvIHdvcmtzIG9uIGNvbGxlY3QgZXJyb3JzIChhbmQKLSAgb24gaW50ZXJuYWwgZXJyb3JzKSAu
ICBUaGlzIHdhcyBpbXBsZW1lbnRlZCBieSBhIHNsaWdodCBpbnRlcm5hbAotICByZWZhY3Rvcmlu
ZyBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBhIG5ldyBob29rCi0gIGBgcHl0ZXN0X2V4Y2VwdGlv
bl9pbnRlcmFjdGBgIGhvb2sgKHNlZSBuZXh0IGl0ZW0pLgotCi0tIGZpeCBpc3N1ZTM0MTogaW50
cm9kdWNlIG5ldyBleHBlcmltZW50YWwgaG9vayBmb3IgSURFcy90ZXJtaW5hbHMgdG8KLSAgaW50
ZXJjZXB0IGRlYnVnZ2luZzogYGBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KG5vZGUsIGNhbGws
IHJlcG9ydClgYC4KLQotLSBuZXcgbW9ua2V5cGF0Y2guc2V0YXR0cigpIHZhcmlhbnQgdG8gcHJv
dmlkZSBhIHNob3J0ZXIKLSAgaW52b2NhdGlvbiBmb3IgcGF0Y2hpbmcgb3V0IGNsYXNzZXMvZnVu
Y3Rpb25zIGZyb20gbW9kdWxlczoKLQotICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJyZXF1ZXN0
cy5nZXQiLCBteWZ1bmMpCi0KLSAgd2lsbCByZXBsYWNlIHRoZSAiZ2V0IiBmdW5jdGlvbiBvZiB0
aGUgInJlcXVlc3RzIiBtb2R1bGUgd2l0aCBgYG15ZnVuY2BgLgotCi0tIGZpeCBpc3N1ZTMyMjog
dGVhckRvd25DbGFzcyBpcyBub3QgcnVuIGlmIHNldFVwQ2xhc3MgZmFpbGVkLiBUaGFua3MKLSAg
TWF0aGlldSBBZ29waWFuIGZvciB0aGUgaW5pdGlhbCBmaXguICBBbHNvIG1ha2UgYWxsIG9mIHB5
dGVzdC9ub3NlCi0gIGZpbmFsaXplciBtaW1pYyB0aGUgc2FtZSBnZW5lcmljIGJlaGF2aW91cjog
aWYgYSBzZXR1cFggZXhpc3RzIGFuZAotICBmYWlscywgZG9uJ3QgcnVuIHRlYXJkb3duWC4gIFRo
aXMgaW50ZXJuYWxseSBpbnRyb2R1Y2VzIGEgbmV3IG1ldGhvZAotICAibm9kZS5hZGRmaW5hbGl6
ZXIoKSIgaGVscGVyIHdoaWNoIGNhbiBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgdGhlIHNldHVwCi0g
IHBoYXNlIG9mIGEgbm9kZS4KLQotLSBzaW1wbGlmeSBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgp
IHNpZ25hdHVyZTogYWxsb3cgdG8gcGFzcyBhCi0gIENTVi1zZXBhcmF0ZWQgc3RyaW5nIHRvIHNw
ZWNpZnkgYXJnbmFtZXMuICBGb3IgZXhhbXBsZToKLSAgYGBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgiaW5wdXQsZXhwZWN0ZWQiLCAgWygxLDIpLCAoMiwzKV0pYGAKLSAgd29ya3MgYXMgd2VsbCBh
cyB0aGUgcHJldmlvdXM6Ci0gIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKCJpbnB1dCIsICJl
eHBlY3RlZCIpLCAuLi4pYGAuCi0KLS0gYWRkIHN1cHBvcnQgZm9yIHNldFVwTW9kdWxlL3RlYXJE
b3duTW9kdWxlIGRldGVjdGlvbiwgdGhhbmtzIEJyaWFuIE9ra2VuLgotCi0tIGludGVncmF0ZSB0
YWItY29tcGxldGlvbiBvbiBvcHRpb25zIHRocm91Z2ggdXNlIG9mICJhcmdjb21wbGV0ZSIuCi0g
IFRoYW5rcyBBbnRob24gdmFuIGRlciBOZXV0IGZvciB0aGUgUFIuCi0KLS0gY2hhbmdlIG9wdGlv
biBuYW1lcyB0byBiZSBoeXBoZW4tc2VwYXJhdGVkIGxvbmcgb3B0aW9ucyBidXQga2VlcCB0aGUK
LSAgb2xkIHNwZWxsaW5nIGJhY2t3YXJkIGNvbXBhdGlibGUuICBweS50ZXN0IC1oIHdpbGwgb25s
eSBzaG93IHRoZQotICBoeXBoZW5hdGVkIHZlcnNpb24sIGZvciBleGFtcGxlICItLWNvbGxlY3Qt
b25seSIgYnV0ICItLWNvbGxlY3Rvbmx5IgotICB3aWxsIHJlbWFpbiB2YWxpZCBhcyB3ZWxsIChm
b3IgYmFja3dhcmQtY29tcGF0IHJlYXNvbnMpLiAgTWFueSB0aGFua3MgdG8KLSAgQW50aG9uIHZh
biBkZXIgTmV1dCBmb3IgdGhlIGltcGxlbWVudGF0aW9uIGFuZCB0byBIeW5layBTY2hsYXdhY2sg
Zm9yCi0gIHB1c2hpbmcgdXMuCi0KLS0gZml4IGlzc3VlIDMwOCAtIGFsbG93IHRvIG1hcmsveGZh
aWwvc2tpcCBpbmRpdmlkdWFsIHBhcmFtZXRlciBzZXRzCi0gIHdoZW4gcGFyYW1ldHJpemluZy4g
IFRoYW5rcyBCcmlhbm5hIExhdWdoZXIuCi0KLS0gY2FsbCBuZXcgZXhwZXJpbWVudGFsIHB5dGVz
dF9sb2FkX2luaXRpYWxfY29uZnRlc3RzIGhvb2sgdG8gYWxsb3cKLSAgM3JkIHBhcnR5IHBsdWdp
bnMgdG8gZG8gc29tZXRoaW5nIGJlZm9yZSBhIGNvbmZ0ZXN0IGlzIGxvYWRlZC4KLQotQnVnIGZp
eGVzOgotCi0tIGZpeCBpc3N1ZTM1OCAtIGNhcHR1cmluZyBvcHRpb25zIGFyZSBub3cgcGFyc2Vk
IG1vcmUgcHJvcGVybHkKLSAgYnkgdXNpbmcgYSBuZXcgcGFyc2VyLnBhcnNlX2tub3duX2FyZ3Mg
bWV0aG9kLgotCi0tIHB5dGVzdCBub3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIG9wdHBhcnNl
ICh0aGFua3MgQW50aG9uKSB3aGljaAotICBtZWFucyB0aGF0ICJhcmdwYXJzZSIgaXMgYWRkZWQg
YXMgYSBkZXBlbmRlbmN5IGlmIGluc3RhbGxpbmcgaW50byBweXRob24yLjYKLSAgZW52aXJvbm1l
bnRzIG9yIGJlbG93LgotCi0tIGZpeCBpc3N1ZTMzMzogZml4IGEgY2FzZSBvZiBiYWQgdW5pdHRl
c3QvcHl0ZXN0IGhvb2sgaW50ZXJhY3Rpb24uCi0KLS0gUFIyNzogY29ycmVjdGx5IGhhbmRsZSBu
b3NlLlNraXBUZXN0IGR1cmluZyBjb2xsZWN0aW9uLiAgVGhhbmtzCi0gIEFudG9uaW8gQ3VuaSwg
Um9ubnkgUGZhbm5zY2htaWR0LgotCi0tIGZpeCBpc3N1ZTM1NToganVuaXR4bWwgcHV0cyBuYW1l
PSJweXRlc3QiIGF0dHJpYnV0ZSB0byB0ZXN0c3VpdGUgdGFnLgotCi0tIGZpeCBpc3N1ZTMzNjog
YXV0b3VzZSBmaXh0dXJlIGluIHBsdWdpbnMgc2hvdWxkIHdvcmsgYWdhaW4uCi0KLS0gZml4IGlz
c3VlMjc5OiBpbXByb3ZlIG9iamVjdCBjb21wYXJpc29ucyBvbiBhc3NlcnRpb24gZmFpbHVyZQot
ICBmb3Igc3RhbmRhcmQgZGF0YXR5cGVzIGFuZCByZWNvZ25pc2UgY29sbGVjdGlvbnMuYWJjLiAg
VGhhbmtzIHRvCi0gIEJyaWFubmEgTGF1Z2hlciBhbmQgTWF0aGlldSBBZ29waWFuLgotCi0tIGZp
eCBpc3N1ZTMxNzogYXNzZXJ0aW9uIHJld3JpdGVyIHN1cHBvcnQgZm9yIHRoZSBpc19wYWNrYWdl
IG1ldGhvZAotCi0tIGZpeCBpc3N1ZTMzNTogZG9jdW1lbnQgcHkuY29kZS5FeGNlcHRpb25JbmZv
KCkgb2JqZWN0IHJldHVybmVkCi0gIGZyb20gcHl0ZXN0LnJhaXNlcygpLCB0aGFua3MgTWF0aGll
dSBBZ29waWFuLgotCi0tIHJlbW92ZSBpbXBsaWNpdCBkaXN0cmlidXRlX3NldHVwIHN1cHBvcnQg
ZnJvbSBzZXR1cC5weS4KLQotLSBmaXggaXNzdWUzMDU6IGlnbm9yZSBhbnkgcHJvYmxlbXMgd2hl
biB3cml0aW5nIHB5YyBmaWxlcy4KLQotLSBTTy0xNzY2NDcwMjogY2FsbCBmaXh0dXJlIGZpbmFs
aXplcnMgZXZlbiBpZiB0aGUgZml4dHVyZSBmdW5jdGlvbgotICBwYXJ0aWFsbHkgZmFpbGVkIChm
aW5hbGl6ZXJzIHdvdWxkIG5vdCBhbHdheXMgYmUgY2FsbGVkIGJlZm9yZSkKLQotLSBmaXggaXNz
dWUzMjAgLSBmaXggY2xhc3Mgc2NvcGUgZm9yIGZpeHR1cmVzIHdoZW4gbWl4ZWQgd2l0aAotICBt
b2R1bGUtbGV2ZWwgZnVuY3Rpb25zLiAgVGhhbmtzIEFuYXRsb3kgQnViZW5rb2ZmLgotCi0tIHlv
dSBjYW4gc3BlY2lmeSAiLXEiIG9yICItcXEiIHRvIGdldCBkaWZmZXJlbnQgbGV2ZWxzIG9mICJx
dWlldGVyIgotICByZXBvcnRpbmcgKHRoYW5rcyBLYXRhcnp5bmEgSmFjaGltKQotCi0tIGZpeCBp
c3N1ZTMwMCAtIEZpeCBvcmRlciBvZiBjb25mdGVzdCBsb2FkaW5nIHdoZW4gc3RhcnRpbmcgcHku
dGVzdAotICBpbiBhIHN1YmRpcmVjdG9yeS4KLQotLSBmaXggaXNzdWUzMjMgLSBzb3J0aW5nIG9m
IG1hbnkgbW9kdWxlLXNjb3BlZCBhcmcgcGFyYW1ldHJpemF0aW9ucwotCi0tIG1ha2Ugc2Vzc2lv
bmZpbmlzaCBob29rcyBleGVjdXRlIHdpdGggdGhlIHNhbWUgY3dkLWNvbnRleHQgYXMgYXQKLSAg
c2Vzc2lvbiBzdGFydCAoaGVscHMgZml4IHBsdWdpbiBiZWhhdmlvdXIgd2hpY2ggd3JpdGUgb3V0
cHV0IGZpbGVzCi0gIHdpdGggcmVsYXRpdmUgcGF0aCBzdWNoIGFzIHB5dGVzdC1jb3YpCi0KLS0g
Zml4IGlzc3VlMzE2IC0gcHJvcGVybHkgcmVmZXJlbmNlIGNvbGxlY3Rpb24gaG9va3MgaW4gZG9j
cwotCi0tIGZpeCBpc3N1ZSAzMDYgLSBjbGVhbnVwIG9mIC1rLy1tIG9wdGlvbnMgdG8gb25seSBt
YXRjaCBtYXJrZXJzL3Rlc3QKLSAgbmFtZXMva2V5d29yZHMgcmVzcGVjdGl2ZWx5LiAgVGhhbmtz
IFdvdXRlciB2YW4gQWNrb295LgotCi0tIGltcHJvdmVkIGRvY3Rlc3QgY291bnRpbmcgZm9yIGRv
Y3Rlc3RzIGluIHB5dGhvbiBtb2R1bGVzIC0tCi0gIGZpbGVzIHdpdGhvdXQgYW55IGRvY3Rlc3Qg
aXRlbXMgd2lsbCBub3Qgc2hvdyB1cCBhbnltb3JlCi0gIGFuZCBkb2N0ZXN0IGV4YW1wbGVzIGFy
ZSBjb3VudGVkIGFzIHNlcGFyYXRlIHRlc3QgaXRlbXMuCi0gIHRoYW5rcyBEYW5pbG8gQmVsbGlu
aS4KLQotLSBmaXggaXNzdWUyNDUgYnkgZGVwZW5kaW5nIG9uIHRoZSByZWxlYXNlZCBweS0xLjQu
MTQKLSAgd2hpY2ggZml4ZXMgcHkuaW8uZHVwZmlsZSB0byB3b3JrIHdpdGggZmlsZXMgd2l0aCBu
bwotICBtb2RlLiBUaGFua3MgSmFzb24gUi4gQ29vbWJzLgotCi0tIGZpeCBqdW5pdHhtbCBnZW5l
cmF0aW9uIHdoZW4gdGVzdCBvdXRwdXQgY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXJzLAotICBh
ZGRyZXNzaW5nIGlzc3VlMjY3LCB0aGFua3MgSmFhcCBCcm9la2h1aXplbgotCi0tIGZpeCBpc3N1
ZTMzODogaG9ub3IgLS10YiBzdHlsZSBmb3Igc2V0dXAvdGVhcmRvd24gZXJyb3JzIGFzIHdlbGwu
ICBUaGFua3MgTWFoby4KLQotLSBmaXggaXNzdWUzMDcgLSB1c2UgeWFtbC5zYWZlX2xvYWQgaW4g
ZXhhbXBsZSwgdGhhbmtzIE1hcmsgRWljaGluLgotCi0tIGJldHRlciBwYXJhbWV0cml6ZSBlcnJv
ciBtZXNzYWdlcywgdGhhbmtzIEJyaWFubmEgTGF1Z2hlcgotCi0tIHB5dGVzdF90ZXJtaW5hbF9z
dW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXIpIGhvb2tzIGNhbiBub3cgdXNlCi0gICIuc2VjdGlvbih0
aXRsZSkiIGFuZCAiLmxpbmUobXNnKSIgbWV0aG9kcyB0byBwcmludCBleHRyYQotICBpbmZvcm1h
dGlvbiBhdCB0aGUgZW5kIG9mIGEgdGVzdCBydW4uCi0KLTIuMy41ICgyMDEzLTA0LTMwKQotPT09
PT09PT09PT09PT09PT09Ci0KLS0gZml4IGlzc3VlMTY5OiByZXNwZWN0IC0tdGI9c3R5bGUgd2l0
aCBzZXR1cC90ZWFyZG93biBlcnJvcnMgYXMgd2VsbC4KLQotLSBuZXZlciBjb25zaWRlciBhIGZp
eHR1cmUgZnVuY3Rpb24gZm9yIHRlc3QgZnVuY3Rpb24gY29sbGVjdGlvbgotCi0tIGFsbG93IHJl
LXJ1bm5pbmcgb2YgdGVzdCBpdGVtcyAvIGhlbHBzIHRvIGZpeCBweXRlc3QtcmVydW50ZXN0cyBw
bHVnaW4KLSAgYW5kIGFsc28gaGVscCB0byBrZWVwIGxlc3MgZml4dHVyZS9yZXNvdXJjZSByZWZl
cmVuY2VzIGFsaXZlCi0KLS0gcHV0IGNhcHR1cmVkIHN0ZG91dC9zdGRlcnIgaW50byBqdW5pdHht
bCBvdXRwdXQgZXZlbiBmb3IgcGFzc2luZyB0ZXN0cwotICAodGhhbmtzIEFkYW0gR291Y2hlcikK
LQotLSBJc3N1ZSAyNjUgLSBpbnRlZ3JhdGUgbm9zZSBzZXR1cC90ZWFyZG93biB3aXRoIHNldHVw
c3RhdGUKLSAgc28gaXQgZG9lc24ndCB0cnkgdG8gdGVhcmRvd24gaWYgaXQgZGlkIG5vdCBzZXR1
cAotCi0tIGlzc3VlIDI3MSAtIGRvbid0IHdyaXRlIGp1bml0eG1sIG9uIHNsYXZlIG5vZGVzCi0K
LS0gSXNzdWUgMjc0IC0gZG9uJ3QgdHJ5IHRvIHNob3cgZnVsbCBkb2N0ZXN0IGV4YW1wbGUKLSAg
d2hlbiBkb2N0ZXN0IGRvZXMgbm90IGtub3cgdGhlIGV4YW1wbGUgbG9jYXRpb24KLQotLSBpc3N1
ZSAyODAgLSBkaXNhYmxlIGFzc2VydGlvbiByZXdyaXRpbmcgb24gYnVnZ3kgQ1B5dGhvbiAyLjYu
MAotCi0tIGluamVjdCAiZ2V0Zml4dHVyZSgpIiBoZWxwZXIgdG8gcmV0cmlldmUgZml4dHVyZXMg
ZnJvbSBkb2N0ZXN0cywKLSAgdGhhbmtzIEFuZHJlYXMgWmVpZGxlcgotCi0tIGlzc3VlIDI1OSAt
IHdoZW4gYXNzZXJ0aW9uIHJld3JpdGluZywgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBkZWZhdWx0
Ci0gIHNvdXJjZSBlbmNvZGluZyBvZiBBU0NJSSBvbiBQeXRob24gMgotCi0tIGlzc3VlIDI1MSAt
IHJlcG9ydCBhIHNraXAgaW5zdGVhZCBvZiBpZ25vcmluZyBjbGFzc2VzIHdpdGggaW5pdAotCi0t
IGlzc3VlMjUwIHVuaWNvZGUvc3RyIG1peGVzIGluIHBhcmFtZXRyaXphdGlvbiBuYW1lcyBhbmQg
dmFsdWVzIG5vdyB3b3JrcwotCi0tIGlzc3VlMjU3LCBhc3NlcnRpb24tdHJpZ2dlcmVkIGNvbXBp
bGF0aW9uIG9mIHNvdXJjZSBlbmRpbmcgaW4gYQotICBjb21tZW50IGxpbmUgZG9lc24ndCBibG93
IHVwIGluIHB5dGhvbjIuNSAoZml4ZWQgdGhyb3VnaCBweT49MS40LjEzLmRldjYpCi0KLS0gZml4
IC0tZ2Vuc2NyaXB0IG9wdGlvbiB0byBnZW5lcmF0ZSBzdGFuZGFsb25lIHNjcmlwdHMgdGhhdCBh
bHNvCi0gIHdvcmsgd2l0aCBweXRob24zLjMgKGltcG9ydGVyIG9yZGVyaW5nKQotCi0tIGlzc3Vl
MTcxIC0gaW4gYXNzZXJ0aW9uIHJld3JpdGluZywgc2hvdyB0aGUgcmVwciBvZiBzb21lCi0gIGds
b2JhbCB2YXJpYWJsZXMKLQotLSBmaXggb3B0aW9uIGhlbHAgZm9yICItayIKLQotLSBtb3ZlIGxv
bmcgZGVzY3JpcHRpb24gb2YgZGlzdHJpYnV0aW9uIGludG8gUkVBRE1FLnJzdAotCi0tIGltcHJv
dmUgZG9jc3RyaW5nIGZvciBtZXRhZnVuYy5wYXJhbWV0cml6ZSgpCi0KLS0gZml4IGJ1ZyB3aGVy
ZSB1c2luZyBjYXBzeXMgd2l0aCBweXRlc3Quc2V0X3RyYWNlKCkgaW4gYSB0ZXN0Ci0gIGZ1bmN0
aW9uIHdvdWxkIGJyZWFrIHdoZW4gbG9va2luZyBhdCBjYXBzeXMucmVhZG91dGVycigpCi0KLS0g
YWxsb3cgdG8gc3BlY2lmeSBwcmVmaXhlcyBzdGFydGluZyB3aXRoICJfIiB3aGVuCi0gIGN1c3Rv
bWl6aW5nIHB5dGhvbl9mdW5jdGlvbnMgdGVzdCBkaXNjb3ZlcnkuICh0aGFua3MgR3JhaGFtIEhv
cmxlcikKLQotLSBpbXByb3ZlIFBZVEVTVF9ERUJVRyB0cmFjaW5nIG91dHB1dCBieSBwdXR0aW5n
Ci0gIGV4dHJhIGRhdGEgb24gYSBuZXcgbGluZXMgd2l0aCBhZGRpdGlvbmFsIGluZGVudAotCi0t
IGVuc3VyZSBPdXRjb21lRXhjZXB0aW9ucyBsaWtlIHNraXAvZmFpbCBoYXZlIGluaXRpYWxpemVk
IGV4Y2VwdGlvbiBhdHRyaWJ1dGVzCi0KLS0gaXNzdWUgMjYwIC0gZG9uJ3QgdXNlIG5vc2Ugc3Bl
Y2lhbCBzZXR1cCBvbiBwbGFpbiB1bml0dGVzdCBjYXNlcwotCi0tIGZpeCBpc3N1ZTEzNCAtIHBy
aW50IHRoZSBjb2xsZWN0IGVycm9ycyB0aGF0IHByZXZlbnQgcnVubmluZyBzcGVjaWZpZWQgdGVz
dCBpdGVtcwotCi0tIGZpeCBpc3N1ZTI2NiAtIGFjY2VwdCB1bmljb2RlIGluIE1hcmtFdmFsdWF0
b3IgZXhwcmVzc2lvbnMKLQotMi4zLjQgKDIwMTItMTEtMjApCi09PT09PT09PT09PT09PT09PT0K
LQotLSB5aWVsZGVkIHRlc3QgZnVuY3Rpb25zIHdpbGwgbm93IGhhdmUgYXV0b3VzZS1maXh0dXJl
cyBhY3RpdmUgYnV0Ci0gIGNhbm5vdCBhY2NlcHQgZml4dHVyZXMgYXMgZnVuY2FyZ3MgLSBpdCdz
IGFueXdheSByZWNvbW1lbmRlZCB0bwotICByYXRoZXIgdXNlIHRoZSBwb3N0LTIuMCBwYXJhbWV0
cml6ZSBmZWF0dXJlcyBpbnN0ZWFkIG9mIHlpZWxkLCBzZWU6Ci0gIGh0dHA6Ly9weXRlc3Qub3Jn
L2xhdGVzdC9leGFtcGxlL3BhcmFtZXRyaXplLmh0bWwKLS0gZml4IGF1dG91c2UtaXNzdWUgd2hl
cmUgYXV0b3VzZS1maXh0dXJlcyB3b3VsZCBub3QgYmUgZGlzY292ZXJlZAotICBpZiBkZWZpbmVk
IGluIGFuIGEvY29uZnRlc3QucHkgZmlsZSBhbmQgdGVzdHMgaW4gYS90ZXN0cy90ZXN0X3NvbWUu
cHkKLS0gZml4IGlzc3VlMjI2IC0gTElGTyBvcmRlcmluZyBmb3IgZml4dHVyZSB0ZWFyZG93bnMK
LS0gZml4IGlzc3VlMjI0IC0gaW52b2NhdGlvbnMgd2l0aCA+MjU2IGNoYXIgYXJndW1lbnRzIG5v
dyB3b3JrCi0tIGZpeCBpc3N1ZTkxIC0gYWRkL2Rpc2N1c3MgcGFja2FnZS9kaXJlY3RvcnkgbGV2
ZWwgc2V0dXBzIGluIGV4YW1wbGUKLS0gYWxsb3cgdG8gZHluYW1pY2FsbHkgZGVmaW5lIG1hcmtl
cnMgdmlhCi0gIGl0ZW0ua2V5d29yZHNbLi4uXT1hc3NpZ25tZW50IGludGVncmF0aW5nIHdpdGgg
Ii1tIiBvcHRpb24KLS0gbWFrZSAiLWsiIGFjY2VwdCBhbiBleHByZXNzaW9ucyB0aGUgc2FtZSBh
cyB3aXRoICItbSIgc28gdGhhdCBvbmUKLSAgY2FuIHdyaXRlOiAtayAibmFtZTEgb3IgbmFtZTIi
IGV0Yy4gIFRoaXMgaXMgYSBzbGlnaHQgaW5jb21wYXRpYmlsaXR5Ci0gIGlmIHlvdSB1c2VkIHNw
ZWNpYWwgc3ludGF4IGxpa2UgIlRlc3RDbGFzcy50ZXN0X21ldGhvZCIgd2hpY2ggeW91IG5vdwot
ICBuZWVkIHRvIHdyaXRlIGFzIC1rICJUZXN0Q2xhc3MgYW5kIHRlc3RfbWV0aG9kIiB0byBtYXRj
aCBhIGNlcnRhaW4KLSAgbWV0aG9kIGluIGEgY2VydGFpbiB0ZXN0IGNsYXNzLgotCi0yLjMuMyAo
MjAxMi0xMS0wNikKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTIxNCAtIHBhcnNl
IG1vZHVsZXMgdGhhdCBjb250YWluIHNwZWNpYWwgb2JqZWN0cyBsaWtlIGUuIGcuCi0gIGZsYXNr
J3MgcmVxdWVzdCBvYmplY3Qgd2hpY2ggYmxvd3MgdXAgb24gZ2V0YXR0ciBhY2Nlc3MgaWYgbm8g
cmVxdWVzdAotICBpcyBhY3RpdmUuIHRoYW5rcyBUaG9tYXMgV2FsZG1hbm4uCi0KLS0gZml4IGlz
c3VlMjEzIC0gYWxsb3cgdG8gcGFyYW1ldHJpemUgd2l0aCB2YWx1ZXMgbGlrZSBudW1weSBhcnJh
eXMgdGhhdAotICBkbyBub3Qgc3VwcG9ydCBhbiBfX2VxX18gb3BlcmF0b3IKLQotLSBmaXggaXNz
dWUyMTUgLSBzcGxpdCB0ZXN0X3B5dGhvbi5vcmcgaW50byBtdWx0aXBsZSBmaWxlcwotCi0tIGZp
eCBpc3N1ZTE0OCAtIEB1bml0dGVzdC5za2lwIG9uIGNsYXNzZXMgaXMgbm93IHJlY29nbml6ZWQg
YW5kIGF2b2lkcwotICBjYWxsaW5nIHNldFVwQ2xhc3MvdGVhckRvd25DbGFzcywgdGhhbmtzIFBh
dmVsIFJlcGluCi0KLS0gZml4IGlzc3VlMjA5IC0gcmVpbnRyb2R1Y2UgcHl0aG9uMi40IHN1cHBv
cnQgYnkgZGVwZW5kaW5nIG9uIG5ld2VyCi0gIHB5bGliIHdoaWNoIHJlLWludHJvZHVjZWQgc3Rh
dGVtZW50LWZpbmRpbmcgZm9yIHByZS1BU1QgaW50ZXJwcmV0ZXJzCi0KLS0gbm9zZSBzdXBwb3J0
OiBvbmx5IGNhbGwgc2V0dXAgaWYgaXQncyBhIGNhbGxhYmxlLCB0aGFua3MgQW5kcmV3Ci0gIFRh
dW1vZWZvbGF1Ci0KLS0gZml4IGlzc3VlMjE5IC0gYWRkIHB5Mi40LTMuMyBjbGFzc2lmaWVycyB0
byBUUk9WRSBsaXN0Ci0KLS0gaW4gdHJhY2ViYWNrcyAqLCoqIGFyZyB2YWx1ZXMgYXJlIG5vdyBz
aG93biBuZXh0IHRvIG5vcm1hbCBhcmd1bWVudHMKLSAgKHRoYW5rcyBNYW51ZWwgSmFjb2IpCi0K
LS0gZml4IGlzc3VlMjE3IC0gc3VwcG9ydCBtb2NrLnBhdGNoIHdpdGggcHl0ZXN0J3MgZml4dHVy
ZXMgLSBub3RlIHRoYXQKLSAgeW91IG5lZWQgZWl0aGVyIG1vY2stMS4wLjEgb3IgdGhlIHB5dGhv
bjMuMyBidWlsdGluIHVuaXR0ZXN0Lm1vY2suCi0KLS0gZml4IGlzc3VlMTI3IC0gaW1wcm92ZSBk
b2N1bWVudGF0aW9uIGZvciBweXRlc3RfYWRkb3B0aW9uKCkgYW5kCi0gIGFkZCBhIGBgY29uZmln
LmdldG9wdGlvbihuYW1lKWBgIGhlbHBlciBmdW5jdGlvbiBmb3IgY29uc2lzdGVuY3kuCi0KLTIu
My4yICgyMDEyLTEwLTI1KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4IGlzc3VlMjA4IGFu
ZCBmaXggaXNzdWUyOSB1c2UgbmV3IHB5IHZlcnNpb24gdG8gYXZvaWQgbG9uZyBwYXVzZXMKLSAg
d2hlbiBwcmludGluZyB0cmFjZWJhY2tzIGluIGxvbmcgbW9kdWxlcwotCi0tIGZpeCBpc3N1ZTIw
NSAtIGNvbmZ0ZXN0cyBpbiBzdWJkaXJzIGN1c3RvbWl6aW5nCi0gIHB5dGVzdF9weWNvbGxlY3Rf
bWFrZW1vZHVsZSBhbmQgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbQotICBub3cgd29yayBwcm9w
ZXJseQotCi0tIGZpeCB0ZWFyZG93bi1vcmRlcmluZyBmb3IgcGFyYW1ldHJpemVkIHNldHVwcwot
Ci0tIGZpeCBpc3N1ZTEyNyAtIGJldHRlciBkb2N1bWVudGF0aW9uIGZvciBweXRlc3RfYWRkb3B0
aW9uCi0gIGFuZCByZWxhdGVkIG9iamVjdHMuCi0KLS0gZml4IHVuaXR0ZXN0IGJlaGF2aW91cjog
VGVzdENhc2UucnVudGVzdCBvbmx5IGNhbGxlZCBpZiB0aGVyZSBhcmUKLSAgdGVzdCBtZXRob2Rz
IGRlZmluZWQKLQotLSBpbXByb3ZlIHRyaWFsIHN1cHBvcnQ6IGRvbid0IGNvbGxlY3QgaXRzIGVt
cHR5Ci0gIHVuaXR0ZXN0LlRlc3RDYXNlLnJ1blRlc3QoKSBtZXRob2QKLQotLSAicHl0aG9uIHNl
dHVwLnB5IHRlc3QiIG5vdyB3b3JrcyB3aXRoIHB5dGVzdCBpdHNlbGYKLQotLSBmaXgvaW1wcm92
ZSBpbnRlcm5hbC9wYWNrYWdpbmcgcmVsYXRlZCBiaXRzOgotCi0gIC0gZXhjZXB0aW9uIG1lc3Nh
Z2UgY2hlY2sgb2YgdGVzdF9ub3NlLnB5IG5vdyBwYXNzZXMgb24gcHl0aG9uMzMgYXMgd2VsbAot
Ci0gIC0gaXNzdWUyMDYgLSBmaXggdGVzdF9hc3NlcnRyZXdyaXRlLnB5IHRvIHdvcmsgd2hlbiBh
IGdsb2JhbAotICAgIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEgaXMgcHJlc2VudAotCi0gIC0g
YWRkIHRveC5pbmkgdG8gcHl0ZXN0IGRpc3RyaWJ1dGlvbiBzbyB0aGF0IGlnbm9yZS1kaXJzIGFu
ZCBvdGhlcnMgY29uZmlnCi0gICAgYml0cyBhcmUgcHJvcGVybHkgZGlzdHJpYnV0ZWQgZm9yIG1h
aW50YWluZXJzIHdobyBydW4gcHl0ZXN0LW93biB0ZXN0cwotCi0yLjMuMSAoMjAxMi0xMC0yMCkK
LT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTIwMiAtIGZpeCByZWdyZXNzaW9uOiB1
c2luZyAic2VsZiIgZnJvbSBmaXh0dXJlIGZ1bmN0aW9ucyBub3cKLSAgd29ya3MgYXMgZXhwZWN0
ZWQgKGl0J3MgdGhlIHNhbWUgInNlbGYiIGluc3RhbmNlIHRoYXQgYSB0ZXN0IG1ldGhvZAotICB3
aGljaCB1c2VzIHRoZSBmaXh0dXJlIHNlZXMpCi0KLS0gc2tpcCBwZXhwZWN0IHVzaW5nIHRlc3Rz
ICh0ZXN0X3BkYi5weSBtb3N0bHkpIG9uIGZyZWVic2QqIHN5c3RlbXMKLSAgZHVlIHRvIHBleHBl
Y3Qgbm90IHN1cHBvcnRpbmcgaXQgcHJvcGVybHkgKGhhbmdpbmcpCi0KLS0gbGluayB0byB3ZWIg
cGFnZXMgZnJvbSAtLW1hcmtlcnMgb3V0cHV0IHdoaWNoIHByb3ZpZGVzIGhlbHAgZm9yCi0gIHB5
dGVzdC5tYXJrLiogdXNhZ2UuCi0KLTIuMy4wICgyMDEyLTEwLTE5KQotPT09PT09PT09PT09PT09
PT09Ci0KLS0gZml4IGlzc3VlMjAyIC0gYmV0dGVyIGF1dG9tYXRpYyBuYW1lcyBmb3IgcGFyYW1l
dHJpemVkIHRlc3QgZnVuY3Rpb25zCi0tIGZpeCBpc3N1ZTEzOSAtIGludHJvZHVjZSBAcHl0ZXN0
LmZpeHR1cmUgd2hpY2ggYWxsb3dzIGRpcmVjdCBzY29waW5nCi0gIGFuZCBwYXJhbWV0cml6YXRp
b24gb2YgZnVuY2FyZyBmYWN0b3JpZXMuCi0tIGZpeCBpc3N1ZTE5OCAtIGNvbmZ0ZXN0IGZpeHR1
cmVzIHdlcmUgbm90IGZvdW5kIG9uIHdpbmRvd3MzMiBpbiBzb21lCi0gIGNpcmN1bXN0YW5jZXMg
d2l0aCBuZXN0ZWQgZGlyZWN0b3J5IHN0cnVjdHVyZXMgZHVlIHRvIHBhdGggbWFuaXB1bGF0aW9u
IGlzc3VlcwotLSBmaXggaXNzdWUxOTMgc2tpcCB0ZXN0IGZ1bmN0aW9ucyB3aXRoIHdlcmUgcGFy
YW1ldHJpemVkIHdpdGggZW1wdHkKLSAgcGFyYW1ldGVyIHNldHMKLS0gZml4IHB5dGhvbjMuMyBj
b21wYXQsIG1vc3RseSByZXBvcnRpbmcgYml0cyB0aGF0IHByZXZpb3VzbHkgZGVwZW5kZWQKLSAg
b24gZGljdCBvcmRlcmluZwotLSBpbnRyb2R1Y2UgcmUtb3JkZXJpbmcgb2YgdGVzdHMgYnkgcmVz
b3VyY2UgYW5kIHBhcmFtZXRyaXphdGlvbiBzZXR1cAotICB3aGljaCB0YWtlcyBwcmVjZWRlbmNl
IHRvIHRoZSB1c3VhbCBmaWxlLW9yZGVyaW5nCi0tIGZpeCBpc3N1ZTE4NSBtb25rZXlwYXRjaGlu
ZyB0aW1lLnRpbWUgZG9lcyBub3QgY2F1c2UgcHl0ZXN0IHRvIGZhaWwKLS0gZml4IGlzc3VlMTcy
IGR1cGxpY2F0ZSBjYWxsIG9mIHB5dGVzdC5maXh0dXJlIGRlY29yYXRvcmVkIHNldHVwX21vZHVs
ZQotICBmdW5jdGlvbnMKLS0gZml4IGp1bml0eG1sPXBhdGggY29uc3RydWN0aW9uIHNvIHRoYXQg
aWYgdGVzdHMgY2hhbmdlIHRoZQotICBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCB0aGUg
cGF0aCBpcyBhIHJlbGF0aXZlIHBhdGgKLSAgaXQgaXMgY29uc3RydWN0ZWQgY29ycmVjdGx5IGZy
b20gdGhlIG9yaWdpbmFsIGN1cnJlbnQgd29ya2luZyBkaXIuCi0tIGZpeCAicHl0aG9uIHNldHVw
LnB5IHRlc3QiIGV4YW1wbGUgdG8gY2F1c2UgYSBwcm9wZXIgImVycm5vIiByZXR1cm4KLS0gZml4
IGlzc3VlMTY1IC0gZml4IGJyb2tlbiBkb2MgbGlua3MgYW5kIG1lbnRpb24gc3RhY2tvdmVyZmxv
dyBmb3IgRkFRCi0tIGNhdGNoIHVuaWNvZGUtaXNzdWVzIHdoZW4gd3JpdGluZyBmYWlsdXJlIHJl
cHJlc2VudGF0aW9ucwotICB0byB0ZXJtaW5hbCB0byBwcmV2ZW50IHRoZSB3aG9sZSBzZXNzaW9u
IGZyb20gY3Jhc2hpbmcKLS0gZml4IHhmYWlsL3NraXAgY29uZnVzaW9uOiBhIHNraXAtbWFyayBv
ciBhbiBpbXBlcmF0aXZlIHB5dGVzdC5za2lwCi0gIHdpbGwgbm93IHRha2UgcHJlY2VkZW5jZSBi
ZWZvcmUgeGZhaWwtbWFya2VycyBiZWNhdXNlIHdlCi0gIGNhbid0IGRldGVybWluZSB4ZmFpbC94
cGFzcyBzdGF0dXMgaW4gY2FzZSBvZiBhIHNraXAuIHNlZSBhbHNvOgotICBodHRwOi8vc3RhY2tv
dmVyZmxvdy5jb20vcXVlc3Rpb25zLzExMTA1ODI4L2luLXB5LXRlc3Qtd2hlbi1pLWV4cGxpY2l0
bHktc2tpcC1hLXRlc3QtdGhhdC1pcy1tYXJrZWQtYXMteGZhaWwtaG93LWNhbi1pLWdldAotCi0t
IGFsd2F5cyByZXBvcnQgaW5zdGFsbGVkIDNyZCBwYXJ0eSBwbHVnaW5zIGluIHRoZSBoZWFkZXIg
b2YgYSB0ZXN0IHJ1bgotCi0tIGZpeCBpc3N1ZTE2MDogYSBmYWlsaW5nIHNldHVwIG9mIGFuIHhm
YWlsLW1hcmtlZCB0ZXN0cyBzaG91bGQKLSAgYmUgcmVwb3J0ZWQgYXMgeGZhaWwgKG5vdCB4cGFz
cykKLQotLSBmaXggaXNzdWUxMjg6IHNob3cgY2FwdHVyZWQgb3V0cHV0IHdoZW4gY2Fwc3lzL2Nh
cGZkIGFyZSB1c2VkCi0KLS0gZml4IGlzc3VlMTc5OiBwcm9wZXJseSBzaG93IHRoZSBkZXBlbmRl
bmN5IGNoYWluIG9mIGZhY3RvcmllcwotCi0tIHBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoLi4uKSBu
b3cgcmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlCi0gIHBsdWdpbiBoYXMgYmVlbiBhbHJlYWR5IHJl
Z2lzdGVyZWQgb3IgdGhlIG5hbWUgaXMgdGFrZW4KLQotLSBmaXggaXNzdWUxNTk6IGltcHJvdmUg
aHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L2ZhcS5odG1sCi0gIGVzcGVjaWFsbHkgd2l0aCByZXNw
ZWN0IHRvIHRoZSAibWFnaWMiIGhpc3RvcnksIGFsc28gbWVudGlvbgotICBweXRlc3QtZGphbmdv
LCB0cmlhbCBhbmQgdW5pdHRlc3QgaW50ZWdyYXRpb24uCi0KLS0gbWFrZSByZXF1ZXN0LmtleXdv
cmRzIGFuZCBub2RlLmtleXdvcmRzIHdyaXRhYmxlLiAgQWxsIGRlc2NlbmRhbnQKLSAgY29sbGVj
dGlvbiBub2RlcyB3aWxsIHNlZSBrZXl3b3JkIHZhbHVlcy4gIEtleXdvcmRzIGFyZSBkaWN0aW9u
YXJpZXMKLSAgY29udGFpbmluZyBtYXJrZXJzIGFuZCBvdGhlciBpbmZvLgotCi0tIGZpeCBpc3N1
ZSAxNzg6IHhtbCBiaW5hcnkgZXNjYXBlcyBhcmUgbm93IHdyYXBwZWQgaW4gcHkueG1sLnJhdwot
Ci0tIGZpeCBpc3N1ZSAxNzY6IGNvcnJlY3RseSBjYXRjaCB0aGUgYnVpbHRpbiBBc3NlcnRpb25F
cnJvcgotICBldmVuIHdoZW4gd2UgcmVwbGFjZWQgQXNzZXJ0aW9uRXJyb3Igd2l0aCBhIHN1YmNs
YXNzIG9uIHRoZQotICBweXRob24gbGV2ZWwKLQotLSBmYWN0b3J5IGRpc2NvdmVyeSBubyBsb25n
ZXIgZmFpbHMgd2l0aCBtYWdpYyBnbG9iYWwgY2FsbGFibGVzCi0gIHRoYXQgcHJvdmlkZSBubyBz
YW5lIF9fY29kZV9fIG9iamVjdCAobW9jay5jYWxsIGZvciBleGFtcGxlKQotCi0tIGZpeCBpc3N1
ZSAxODI6IHRlc3RkaXIuaW5wcm9jZXNzX3J1biBub3cgY29uc2lkZXJzIHBhc3NlZCBwbHVnaW5z
Ci0KLS0gZml4IGlzc3VlIDE4ODogZW5zdXJlIHN5cy5leGNfaW5mbyBpcyBjbGVhciBvbiBweXRo
b24yCi0gICAgICAgICAgICAgICAgIGJlZm9yZSBjYWxsaW5nIGludG8gYSB0ZXN0Ci0KLS0gZml4
IGlzc3VlIDE5MTogYWRkIHVuaXR0ZXN0IFRlc3RDYXNlIHJ1blRlc3QgbWV0aG9kIHN1cHBvcnQK
LS0gZml4IGlzc3VlIDE1NjogbW9ua2V5cGF0Y2ggY29ycmVjdGx5IGhhbmRsZXMgY2xhc3MgbGV2
ZWwgZGVzY3JpcHRvcnMKLQotLSByZXBvcnRpbmcgcmVmaW5lbWVudHM6Ci0KLSAgLSBweXRlc3Rf
cmVwb3J0X2hlYWRlciBub3cgcmVjZWl2ZXMgYSAic3RhcnRkaXIiIHNvIHRoYXQKLSAgICB5b3Ug
Y2FuIHVzZSBzdGFydGRpci5iZXN0cmVscGF0aCh5b3VycGF0aCkgdG8gc2hvdwotICAgIG5pY2Ug
cmVsYXRpdmUgcGF0aAotCi0gIC0gYWxsb3cgcGx1Z2lucyB0byBpbXBsZW1lbnQgYm90aCBweXRl
c3RfcmVwb3J0X2hlYWRlciBhbmQKLSAgICBweXRlc3Rfc2Vzc2lvbnN0YXJ0IChzZXNzaW9uc3Rh
cnQgaXMgaW52b2tlZCBmaXJzdCkuCi0KLSAgLSBkb24ndCBzaG93IGRlc2VsZWN0ZWQgcmVhc29u
IGxpbmUgaWYgdGhlcmUgaXMgbm9uZQotCi0gIC0gcHkudGVzdCAtdnYgd2lsbCBzaG93IGFsbCBv
ZiBhc3NlcnQgY29tcGFyaXNvbnMgaW5zdGVhZCBvZiB0cnVuY2F0aW5nCi0KLTIuMi40ICgyMDEy
LTA1LTIyKQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4IGVycm9yIG1lc3NhZ2UgZm9yIHJl
d3JpdHRlbiBhc3NlcnRpb25zIGludm9sdmluZyB0aGUgJSBvcGVyYXRvcgotLSBmaXggaXNzdWUg
MTI2OiBjb3JyZWN0bHkgbWF0Y2ggYWxsIGludmFsaWQgeG1sIGNoYXJhY3RlcnMgZm9yIGp1bml0
eG1sCi0gIGJpbmFyeSBlc2NhcGUKLS0gZml4IGlzc3VlIHdpdGggdW5pdHRlc3Q6IG5vdyBAdW5p
dHRlc3QuZXhwZWN0ZWRGYWlsdXJlIG1hcmtlcnMgc2hvdWxkCi0gIGJlIHByb2Nlc3NlZCBjb3Jy
ZWN0bHkgKHlvdSBjYW4gYWxzbyB1c2UgQHB5dGVzdC5tYXJrIG1hcmtlcnMpCi0tIGRvY3VtZW50
IGludGVncmF0aW9uIHdpdGggdGhlIGV4dGVuZGVkIGRpc3RyaWJ1dGUvc2V0dXB0b29scyB0ZXN0
IGNvbW1hbmRzCi0tIGZpeCBpc3N1ZSAxNDA6IHByb3Blcmx5IGdldCB0aGUgcmVhbCBmdW5jdGlv
bnMKLSAgb2YgYm91bmQgY2xhc3NtZXRob2RzIGZvciBzZXR1cC90ZWFyZG93bl9jbGFzcwotLSBm
aXggaXNzdWUgIzE0MTogc3dpdGNoIGZyb20gdGhlIGRlY2Vhc2VkIHBhc3RlLnBvY29vLm9yZyB0
byBicGFzdGUubmV0Ci0tIGZpeCBpc3N1ZSAjMTQzOiBjYWxsIHVuY29uZmlndXJlL3Nlc3Npb25m
aW5pc2ggYWx3YXlzIHdoZW4KLSAgY29uZmlndXJlL3Nlc3Npb25zdGFydCB3aGVyZSBjYWxsZWQK
LS0gZml4IGlzc3VlICMxNDQ6IGJldHRlciBtYW5nbGUgdGVzdCBpZHMgdG8ganVuaXR4bWwgY2xh
c3NuYW1lcwotLSB1cGdyYWRlIGRpc3RyaWJ1dGVfc2V0dXAucHkgdG8gMC42LjI3Ci0KLTIuMi4z
ICgyMDEyLTAyLTA1KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4IHVwbG9hZGVkIHBhY2th
Z2UgdG8gb25seSBpbmNsdWRlIG5lY2Vzc2FyeSBmaWxlcwotCi0yLjIuMiAoMjAxMi0wMi0wNSkK
LT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTEwMTogd3JvbmcgYXJncyB0byB1bml0
dGVzdC5UZXN0Q2FzZSB0ZXN0IGZ1bmN0aW9uIG5vdwotICBwcm9kdWNlIGJldHRlciBvdXRwdXQK
LS0gZml4IGlzc3VlMTAyOiByZXBvcnQgbW9yZSB1c2VmdWwgZXJyb3JzIGFuZCBoaW50cyBmb3Ig
d2hlbiBhCi0gIHRlc3QgZGlyZWN0b3J5IHdhcyByZW5hbWVkIGFuZCBzb21lIHB5Yy9fX3B5Y2Fj
aGVfXyByZW1haW4KLS0gZml4IGlzc3VlMTA2OiBhbGxvdyBwYXJhbWV0cml6ZSB0byBiZSBhcHBs
aWVkIG11bHRpcGxlIHRpbWVzCi0gIGUuZy4gZnJvbSBtb2R1bGUsIGNsYXNzIGFuZCBhdCBmdW5j
dGlvbiBsZXZlbC4KLS0gZml4IGlzc3VlMTA3OiBhY3R1YWxseSBwZXJmb3JtIHNlc3Npb24gc2Nv
cGUgZmluYWxpemF0aW9uCi0tIGRvbid0IGNoZWNrIGluIHBhcmFtZXRyaXplIGlmIGluZGlyZWN0
IHBhcmFtZXRlcnMgYXJlIGZ1bmNhcmcgbmFtZXMKLS0gYWRkIGNoZGlyIG1ldGhvZCB0byBtb25r
ZXlwYXRjaCBmdW5jYXJnCi0tIGZpeCBjcmFzaCByZXN1bHRpbmcgZnJvbSBjYWxsaW5nIG1vbmtl
eXBhdGNoIHVuZG8gYSBzZWNvbmQgdGltZQotLSBmaXggaXNzdWUxMTU6IG1ha2UgLS1jb2xsZWN0
b25seSByb2J1c3QgYWdhaW5zdCBlYXJseSBmYWlsdXJlCi0gIChtaXNzaW5nIGZpbGVzL2RpcmVj
dG9yaWVzKQotLSAiLXFxIC0tY29sbGVjdG9ubHkiIG5vdyBzaG93cyBvbmx5IGZpbGVzIGFuZCB0
aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoZW0KLS0gIi1xIC0tY29sbGVjdG9ubHkiIG5vdyBzaG93
cyB0ZXN0IGlkcwotLSBhbGxvdyBhZGRpbmcgb2YgYXR0cmlidXRlcyB0byB0ZXN0IHJlcG9ydHMg
c3VjaCB0aGF0IGl0IGFsc28gd29ya3MKLSAgd2l0aCBkaXN0cmlidXRlZCB0ZXN0aW5nIChubyB1
cGdyYWRlIG9mIHB5dGVzdC14ZGlzdCBuZWVkZWQpCi0KLTIuMi4xICgyMDExLTEyLTE2KQotPT09
PT09PT09PT09PT09PT09Ci0KLS0gZml4IGlzc3VlOTkgKGluIHB5dGVzdCBhbmQgcHkpIGludGVy
bmFsbGVycm9ycyB3aXRoIHJlc3VsdGxvZyBub3cKLSAgcHJvZHVjZSBiZXR0ZXIgb3V0cHV0IC0g
Zml4ZWQgYnkgbm9ybWFsaXppbmcgcHl0ZXN0X2ludGVybmFsZXJyb3IKLSAgaW5wdXQgYXJndW1l
bnRzLgotLSBmaXggaXNzdWU5NyAvIHRyYWNlYmFjayBpc3N1ZXMgKGluIHB5dGVzdCBhbmQgcHkp
IGltcHJvdmUgdHJhY2ViYWNrIG91dHB1dAotICBpbiBjb25qdW5jdGlvbiB3aXRoIGppbmphMiBh
bmQgY3l0aG9uIHdoaWNoIGhhY2sgdHJhY2ViYWNrcwotLSBmaXggaXNzdWU5MyAoaW4gcHl0ZXN0
IGFuZCBweXRlc3QteGRpc3QpIGF2b2lkICJkZWxheWVkIHRlYXJkb3ducyI6Ci0gIHRoZSBmaW5h
bCB0ZXN0IGluIGEgdGVzdCBub2RlIHdpbGwgbm93IHJ1biBpdHMgdGVhcmRvd24gZGlyZWN0bHkK
LSAgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzZXNzaW9uLiBUaGFua3Mg
RGF2ZSBIdW50IGZvcgotICB0aGUgZ29vZCByZXBvcnRpbmcgYW5kIGZlZWRiYWNrLiAgVGhlIHB5
dGVzdF9ydW50ZXN0X3Byb3RvY29sIGFzIHdlbGwKLSAgYXMgdGhlIHB5dGVzdF9ydW50ZXN0X3Rl
YXJkb3duIGhvb2tzIG5vdyBoYXZlICJuZXh0aXRlbSIgYXZhaWxhYmxlCi0gIHdoaWNoIHdpbGwg
YmUgTm9uZSBpbmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIHRlc3QgcnVuLgotLSBmaXggY29sbGVj
dGlvbiBjcmFzaCBkdWUgdG8gdW5rbm93bi1zb3VyY2UgY29sbGVjdGVkIGl0ZW1zLCB0aGFua3MK
LSAgdG8gUmFsZiBTY2htaXR0IChmaXhlZCBieSBkZXBlbmRpbmcgb24gYSBtb3JlIHJlY2VudCBw
eWxpYikKLQotMi4yLjAgKDIwMTEtMTEtMTgpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXgg
aXNzdWU5MDogaW50cm9kdWNlIGVhZ2VyIHRlYXJpbmcgZG93biBvZiB0ZXN0IGl0ZW1zIHNvIHRo
YXQKLSAgdGVhcmRvd24gZnVuY3Rpb24gYXJlIGNhbGxlZCBlYXJsaWVyLgotLSBhZGQgYW4gYWxs
LXBvd2VyZnVsIG1ldGFmdW5jLnBhcmFtZXRyaXplIGZ1bmN0aW9uIHdoaWNoIGFsbG93cyB0bwot
ICBwYXJhbWV0cml6ZSB0ZXN0IGZ1bmN0aW9uIGFyZ3VtZW50cyBpbiBtdWx0aXBsZSBzdGVwcyBh
bmQgdGhlcmVmb3JlCi0gIGZyb20gaW5kZXBlbmRlbnQgcGx1Z2lucyBhbmQgcGxhY2VzLgotLSBh
ZGQgYSBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUgaGVscGVyIHdoaWNoIGFsbG93cyB0byBlYXNp
bHkKLSAgY2FsbCBhIHRlc3QgZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdmFsdWVz
Ci0tIEFkZCBleGFtcGxlcyB0byB0aGUgInBhcmFtZXRyaXplIiBleGFtcGxlIHBhZ2UsIGluY2x1
ZGluZyBhIHF1aWNrIHBvcnQKLSAgb2YgVGVzdCBzY2VuYXJpb3MgYW5kIHRoZSBuZXcgcGFyYW1l
dHJpemUgZnVuY3Rpb24gYW5kIGRlY29yYXRvci4KLS0gaW50cm9kdWNlIHJlZ2lzdHJhdGlvbiBm
b3IgInB5dGVzdC5tYXJrLioiIGhlbHBlcnMgdmlhIGluaS1maWxlcwotICBvciB0aHJvdWdoIHBs
dWdpbiBob29rcy4gIEFsc28gaW50cm9kdWNlIGEgIi0tc3RyaWN0IiBvcHRpb24gd2hpY2gKLSAg
d2lsbCB0cmVhdCB1bnJlZ2lzdGVyZWQgbWFya2VycyBhcyBlcnJvcnMKLSAgYWxsb3dpbmcgdG8g
YXZvaWQgdHlwb3MgYW5kIG1haW50YWluIGEgd2VsbCBkZXNjcmliZWQgc2V0IG9mIG1hcmtlcnMK
LSAgZm9yIHlvdXIgdGVzdCBzdWl0ZS4gIFNlZSBleGFwbGVzIGF0IGh0dHA6Ly9weXRlc3Qub3Jn
L2xhdGVzdC9tYXJrLmh0bWwKLSAgYW5kIGl0cyBsaW5rcy4KLS0gaXNzdWU1MDogaW50cm9kdWNl
ICItbSBtYXJrZXIiIG9wdGlvbiB0byBzZWxlY3QgdGVzdHMgYmFzZWQgb24gbWFya2VycwotICAo
dGhpcyBpcyBhIHN0cmljdGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlIHZlcnNpb24gb2YgJy1rJyBp
biB0aGF0ICItbSIKLSAgb25seSBtYXRjaGVzIGNvbXBsZXRlIG1hcmtlcnMgYW5kIGhhcyBtb3Jl
IG9idmlvdXMgcnVsZXMgZm9yIGFuZC9vcgotICBzZW1hbnRpY3MuCi0tIG5ldyBmZWF0dXJlIHRv
IGhlbHAgb3B0aW1pemluZyB0aGUgc3BlZWQgb2YgeW91ciB0ZXN0czoKLSAgLS1kdXJhdGlvbnM9
TiBvcHRpb24gZm9yIGRpc3BsYXlpbmcgTiBzbG93ZXN0IHRlc3QgY2FsbHMKLSAgYW5kIHNldHVw
L3RlYXJkb3duIG1ldGhvZHMuCi0tIGZpeCBpc3N1ZTg3OiAtLXBhc3RlYmluIG5vdyB3b3JrcyB3
aXRoIHB5dGhvbjMKLS0gZml4IGlzc3VlODk6IC0tcGRiIHdpdGggdW5leHBlY3RlZCBleGNlcHRp
b25zIGluIGRvY3Rlc3Qgd29yayBtb3JlIHNlbnNpYmx5Ci0tIGZpeCBhbmQgY2xlYW51cCBweXRl
c3QncyBvd24gdGVzdCBzdWl0ZSB0byBub3QgbGVhayBGRHMKLS0gZml4IGlzc3VlODM6IGxpbmsg
dG8gZ2VuZXJhdGVkIGZ1bmNhcmcgbGlzdAotLSBmaXggaXNzdWU3NDogcHlhcmcgbW9kdWxlIG5h
bWVzIGFyZSBub3cgY2hlY2tlZCBhZ2FpbnN0IGltcC5maW5kX21vZHVsZSBmYWxzZSBwb3NpdGl2
ZXMKLS0gZml4IGNvbXBhdGliaWxpdHkgd2l0aCB0d2lzdGVkL3RyaWFsLTExLjEuMCB1c2UgY2Fz
ZXMKLS0gc2ltcGxpZnkgTm9kZS5saXN0Y2hhaW4KLS0gc2ltcGxpZnkganVuaXR4bWwgb3V0cHV0
IGNvZGUgYnkgcmVseWluZyBvbiBweS54bWwKLS0gYWRkIHN1cHBvcnQgZm9yIHNraXAgcHJvcGVy
dGllcyBvbiB1bml0dGVzdCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKLQotMi4xLjMgKDIwMTEtMTAt
MTgpCi09PT09PT09PT09PT09PT09PT0KLQotLSBmaXggaXNzdWU3OTogYXNzZXJ0aW9uIHJld3Jp
dGluZyBmYWlsZWQgb24gc29tZSBjb21wYXJpc29ucyBpbiBib29sb3BzCi0tIGNvcnJlY3RseSBo
YW5kbGUgemVybyBsZW5ndGggYXJndW1lbnRzIChhIGxhIHB5dGVzdCAnJykKLS0gZml4IGlzc3Vl
NjcgLyBqdW5pdHhtbCBub3cgY29udGFpbnMgY29ycmVjdCB0ZXN0IGR1cmF0aW9ucywgdGhhbmtz
IHJvbm55Ci0tIGZpeCBpc3N1ZTc1IC8gc2tpcHBpbmcgdGVzdCBmYWlsdXJlIG9uIGp5dGhvbgot
LSBmaXggaXNzdWU3NyAvIEFsbG93IGFzc2VydHJlcHJfY29tcGFyZSBob29rIHRvIGFwcGx5IHRv
IGEgc3Vic2V0IG9mIHRlc3RzCi0KLTIuMS4yICgyMDExLTA5LTI0KQotPT09PT09PT09PT09PT09
PT09Ci0KLS0gZml4IGFzc2VydGlvbiByZXdyaXRpbmcgb24gZmlsZXMgd2l0aCB3aW5kb3dzIG5l
d2xpbmVzIG9uIHNvbWUgUHl0aG9uIHZlcnNpb25zCi0tIHJlZmluZSB0ZXN0IGRpc2NvdmVyeSBi
eSBwYWNrYWdlL21vZHVsZSBuYW1lICgtLXB5YXJncyksIHRoYW5rcyBGbG9yaWFuIE1heWVyCi0t
IGZpeCBpc3N1ZTY5IC8gYXNzZXJ0aW9uIHJld3JpdGluZyBmaXhlZCBvbiBzb21lIGJvb2xlYW4g
b3BlcmF0aW9ucwotLSBmaXggaXNzdWU2OCAvIHBhY2thZ2VzIG5vdyB3b3JrIHdpdGggYXNzZXJ0
aW9uIHJld3JpdGluZwotLSBmaXggaXNzdWU2NjogdXNlIGRpZmZlcmVudCBhc3NlcnRpb24gcmV3
cml0aW5nIGNhY2hlcyB3aGVuIHRoZSAtTyBvcHRpb24gaXMgcGFzc2VkCi0tIGRvbid0IHRyeSBh
c3NlcnRpb24gcmV3cml0aW5nIG9uIEp5dGhvbiwgdXNlIHJlaW50ZXJwCi0KLTIuMS4xCi09PT09
PQotCi0tIGZpeCBpc3N1ZTY0IC8gcHl0ZXN0LnNldF90cmFjZSBub3cgd29ya3Mgd2l0aGluIHB5
dGVzdF9nZW5lcmF0ZV90ZXN0cyBob29rcwotLSBmaXggaXNzdWU2MCAvIGZpeCBlcnJvciBjb25k
aXRpb25zIGludm9sdmluZyB0aGUgY3JlYXRpb24gb2YgX19weWNhY2hlX18KLS0gZml4IGlzc3Vl
NjMgLyBhc3NlcnRpb24gcmV3cml0aW5nIG9uIGluc2VydHMgaW52b2x2aW5nIHN0cmluZ3MgY29u
dGFpbmluZyAnJScKLS0gZml4IGFzc2VydGlvbiByZXdyaXRpbmcgb24gY2FsbHMgd2l0aCBhICoq
IGFyZwotLSBkb24ndCBjYWNoZSByZXdyaXR0ZW4gbW9kdWxlcyBpZiBieXRlY29kZSBnZW5lcmF0
aW9uIGlzIGRpc2FibGVkCi0tIGZpeCBhc3NlcnRpb24gcmV3cml0aW5nIGluIHJlYWQtb25seSBk
aXJlY3RvcmllcwotLSBmaXggaXNzdWU1OTogcHJvdmlkZSBzeXN0ZW0tb3V0L2VyciB0YWdzIGZv
ciBqdW5pdHhtbCBvdXRwdXQKLS0gZml4IGlzc3VlNjE6IGFzc2VydGlvbiByZXdyaXRpbmcgb24g
Ym9vbGVhbiBvcGVyYXRpb25zIHdpdGggMyBvciBtb3JlIG9wZXJhbmRzCi0tIHlvdSBjYW4gbm93
IGJ1aWxkIGEgbWFuIHBhZ2Ugd2l0aCAiY2QgZG9jIDsgbWFrZSBtYW4iCi0KLTIuMS4wICgyMDEx
LTA3LTA5KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gZml4IGlzc3VlNTMgY2FsbCBub3Nlc3R5
bGUgc2V0dXAgZnVuY3Rpb25zIHdpdGggY29ycmVjdCBvcmRlcmluZwotLSBmaXggaXNzdWU1OCBh
bmQgaXNzdWU1OTogbmV3IGFzc2VydGlvbiBjb2RlIGZpeGVzCi0tIG1lcmdlIEJlbmphbWluJ3Mg
YXNzZXJ0aW9ucmV3cml0ZSBicmFuY2g6IG5vdyBhc3NlcnRpb25zCi0gIGZvciB0ZXN0IG1vZHVs
ZXMgb24gcHl0aG9uIDIuNiBhbmQgYWJvdmUgYXJlIGRvbmUgYnkgcmV3cml0aW5nCi0gIHRoZSBB
U1QgYW5kIHNhdmluZyB0aGUgcHljIGZpbGUgYmVmb3JlIHRoZSB0ZXN0IG1vZHVsZSBpcyBpbXBv
cnRlZC4KLSAgc2VlIGRvYy9hc3NlcnQudHh0IGZvciBtb3JlIGluZm8uCi0tIGZpeCBpc3N1ZTQz
OiBpbXByb3ZlIGRvY3Rlc3RzIHdpdGggYmV0dGVyIHRyYWNlYmFjayByZXBvcnRpbmcgb24KLSAg
dW5leHBlY3RlZCBleGNlcHRpb25zCi0tIGZpeCBpc3N1ZTQ3OiB0aW1pbmcgb3V0cHV0IGluIGp1
bml0eG1sIGZvciB0ZXN0IGNhc2VzIGlzIG5vdyBjb3JyZWN0Ci0tIGZpeCBpc3N1ZTQ4OiB0eXBv
IGluIE1hcmtJbmZvIHJlcHIgbGVhZGluZyB0byBleGNlcHRpb24KLS0gZml4IGlzc3VlNDk6IGF2
b2lkIGNvbmZ1c2luZyBlcnJvciB3aGVuIGluaXRpemFsaWF0aW9uIHBhcnRpYWxseSBmYWlscwot
LSBmaXggaXNzdWU0NDogZW52L3VzZXJuYW1lIGV4cGFuc2lvbiBmb3IganVuaXR4bWwgZmlsZSBw
YXRoCi0tIHNob3cgcmVsZWFzZWxldmVsIGluZm9ybWF0aW9uIGluIHRlc3QgcnVucyBmb3IgcHlw
eQotLSByZXdvcmtlZCBkb2MgcGFnZXMgZm9yIGJldHRlciBuYXZpZ2F0aW9uIGFuZCBQREYgZ2Vu
ZXJhdGlvbgotLSByZXBvcnQgS2V5Ym9hcmRJbnRlcnJ1cHQgZXZlbiBpZiBpbnRlcnJ1cHRlZCBk
dXJpbmcgc2Vzc2lvbiBzdGFydHVwCi0tIGZpeCBpc3N1ZSAzNSAtIHByb3ZpZGUgUERGIGRvYyB2
ZXJzaW9uIGFuZCBkb3dubG9hZCBsaW5rIGZyb20gaW5kZXggcGFnZQotCi0yLjAuMyAoMjAxMS0w
NS0xMSkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBpc3N1ZTM4OiBuaWNlciB0cmFjZWJh
Y2tzIG9uIGNhbGxzIHRvIGhvb2tzLCBwYXJ0aWN1bGFybHkgZWFybHkKLSAgY29uZmlndXJlL3Nl
c3Npb25zdGFydCBvbmVzCi0KLS0gZml4IG1pc3Npbmcgc2tpcCByZWFzb24vbWV0YSBpbmZvcm1h
dGlvbiBpbiBqdW5pdHhtbCBmaWxlcywgcmVwb3J0ZWQKLSAgdmlhIGh0dHA6Ly9saXN0cy5pZHls
bC5vcmcvcGlwZXJtYWlsL3Rlc3RpbmctaW4tcHl0aG9uLzIwMTEtTWFyY2gvMDAzOTI4Lmh0bWwK
LQotLSBmaXggaXNzdWUzNDogYXZvaWQgY29sbGVjdGlvbiBmYWlsdXJlIHdpdGggInRlc3QiIHBy
ZWZpeGVkIGNsYXNzZXMKLSAgZGVyaXZpbmcgZnJvbSBvYmplY3QuCi0KLS0gZG9uJ3QgcmVxdWly
ZSB6bGliIChhbmQgb3RoZXIgbGlicykgZm9yIGdlbnNjcmlwdCBwbHVnaW4gd2l0aG91dAotICAt
LWdlbnNjcmlwdCBhY3R1YWxseSBiZWluZyB1c2VkLgotCi0tIHNwZWVkIHVwIHNraXBzIChieSBu
b3QgZG9pbmcgYSBmdWxsIHRyYWNlYmFjayByZXByZXNlbnRhdGlvbgotICBpbnRlcm5hbGx5KQot
Ci0tIGZpeCBpc3N1ZTM3OiBhdm9pZCBpbnZhbGlkIGNoYXJhY3RlcnMgaW4ganVuaXR4bWwncyBv
dXRwdXQKLQotMi4wLjIgKDIwMTEtMDMtMDkpCi09PT09PT09PT09PT09PT09PT0KLQotLSB0YWNr
bGUgaXNzdWUzMiAtIHNwZWVkIHVwIHRlc3QgcnVucyBvZiB2ZXJ5IHF1aWNrIHRlc3QgZnVuY3Rp
b25zCi0gIGJ5IHJlZHVjaW5nIHRoZSByZWxhdGl2ZSBvdmVyaGVhZAotCi0tIGZpeCBpc3N1ZTMw
IC0gZXh0ZW5kZWQgeGZhaWwvc2tpcGlmIGhhbmRsaW5nIGFuZCBpbXByb3ZlZCByZXBvcnRpbmcu
Ci0gIElmIHlvdSBoYXZlIGEgc3ludGF4IGVycm9yIGluIHlvdXIgc2tpcC94ZmFpbAotICBleHBy
ZXNzaW9ucyB5b3Ugbm93IGdldCBuaWNlIGVycm9yIHJlcG9ydHMuCi0KLSAgQWxzbyB5b3UgY2Fu
IG5vdyBhY2Nlc3MgbW9kdWxlIGdsb2JhbHMgZnJvbSB4ZmFpbC9za2lwaWYKLSAgZXhwcmVzc2lv
bnMgc28gdGhhdCB0aGlzIGZvciBleGFtcGxlIHdvcmtzIG5vdzo6Ci0KLSAgICBpbXBvcnQgcHl0
ZXN0Ci0gICAgaW1wb3J0IG15bW9kdWxlCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigibXltb2R1
bGUuX192ZXJzaW9uX19bMF0gPT0gIjEiKQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAg
ICAgIHBhc3MKLQotICBUaGlzIHdpbGwgbm90IHJ1biB0aGUgdGVzdCBmdW5jdGlvbiBpZiB0aGUg
bW9kdWxlJ3MgdmVyc2lvbiBzdHJpbmcKLSAgZG9lcyBub3Qgc3RhcnQgd2l0aCBhICIxIi4gIE5v
dGUgdGhhdCBzcGVjaWZ5aW5nIGEgc3RyaW5nIGluc3RlYWQKLSAgb2YgYSBib29sZWFuIGV4cHJl
c3Npb25zIGFsbG93cyBweS50ZXN0IHRvIHJlcG9ydCBtZWFuaW5nZnVsIGluZm9ybWF0aW9uCi0g
IHdoZW4gc3VtbWFyaXppbmcgYSB0ZXN0IHJ1biBhcyB0byB3aGF0IGNvbmRpdGlvbnMgbGVhZCB0
byBza2lwcGluZwotICAob3IgeGZhaWwtaW5nKSB0ZXN0cy4KLQotLSBmaXggaXNzdWUyOCAtIHNl
dHVwX21ldGhvZCBhbmQgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIHdvcmsgdG9nZXRoZXIKLSAgVGhl
IHNldHVwX21ldGhvZCBmaXh0dXJlIG1ldGhvZCBub3cgZ2V0cyBjYWxsZWQgYWxzbyBmb3IKLSAg
dGVzdCBmdW5jdGlvbiBpbnZvY2F0aW9ucyBnZW5lcmF0ZWQgZnJvbSB0aGUgcHl0ZXN0X2dlbmVy
YXRlX3Rlc3RzCi0gIGhvb2suCi0KLS0gZml4IGlzc3VlMjcgLSBjb2xsZWN0b25seSBhbmQga2V5
d29yZC1zZWxlY3Rpb24gKC1rKSBub3cgd29yayB0b2dldGhlcgotICBBbHNvLCBpZiB5b3UgZG8g
InB5LnRlc3QgLS1jb2xsZWN0b25seSAtcSIgeW91IG5vdyBnZXQgYSBmbGF0IGxpc3QKLSAgb2Yg
dGVzdCBpZHMgdGhhdCB5b3UgY2FuIHVzZSB0byBwYXN0ZSB0byB0aGUgcHkudGVzdCBjb21tYW5k
bGluZQotICBpbiBvcmRlciB0byBleGVjdXRlIGEgcGFydGljdWxhciB0ZXN0LgotCi0tIGZpeCBp
c3N1ZTI1IGF2b2lkIHJlcG9ydGVkIHByb2JsZW1zIHdpdGggLS1wZGIgYW5kIHB5dGhvbjMuMi9l
bmNvZGluZ3Mgb3V0cHV0Ci0KLS0gZml4IGlzc3VlMjMgLSB0bXBkaXIgYXJndW1lbnQgbm93IHdv
cmtzIG9uIFB5dGhvbjMuMiBhbmQgV2luZG93c1hQCi0gIFN0YXJ0aW5nIHdpdGggUHl0aG9uMy4y
IG9zLnN5bWxpbmsgbWF5IGJlIHN1cHBvcnRlZC4gQnkgcmVxdWlyaW5nCi0gIGEgbmV3ZXIgcHkg
bGliIHZlcnNpb24gdGhlIHB5LnBhdGgubG9jYWwoKSBpbXBsZW1lbnRhdGlvbiBhY2tub3dsZWRn
ZXMKLSAgdGhpcy4KLQotLSBmaXhlZCB0eXBvcyBpbiB0aGUgZG9jcyAodGhhbmtzIFZpY3RvciBH
YXJjaWEsIEJyaWFubmEgTGF1Z2hlcikgYW5kIHBhcnRpY3VsYXIKLSAgdGhhbmtzIHRvIExhdXJh
IENyZWlnaHRvbiB3aG8gYWxzbyByZXZpZXdlZCBwYXJ0cyBvZiB0aGUgZG9jdW1lbnRhdGlvbi4K
LQotLSBmaXggc2xpZ2h0bHkgd3Jvbmcgb3V0cHV0IG9mIHZlcmJvc2UgcHJvZ3Jlc3MgcmVwb3J0
aW5nIGZvciBjbGFzc2VzCi0gICh0aGFua3MgQW1hdXJ5KQotCi0tIG1vcmUgcHJlY2lzZSAoYXZv
aWRpbmcgb2YpIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBub2RlLkNsYXNzfEZ1bmN0aW9uIGFj
Y2Vzc2VzCi0KLS0gYXZvaWQgc3RkIHVuaXR0ZXN0IGFzc2VydGlvbiBoZWxwZXIgY29kZSBpbiB0
cmFjZWJhY2tzICh0aGFua3MgUm9ubnkpCi0KLTIuMC4xICgyMDExLTAyLTA3KQotPT09PT09PT09
PT09PT09PT09Ci0KLS0gcmVmaW5lIGFuZCB1bmlmeSBpbml0aWFsIGNhcHR1cmluZyBzbyB0aGF0
IGl0IHdvcmtzIG5pY2VseQotICBldmVuIGlmIHRoZSBsb2dnaW5nIG1vZHVsZSBpcyB1c2VkIG9u
IGFuIGVhcmx5LWxvYWRlZCBjb25mdGVzdC5weQotICBmaWxlIG9yIHBsdWdpbi4KLS0gYWxsb3cg
dG8gb21pdCAiKCkiIGluIHRlc3QgaWRzIHRvIGFsbG93IGZvciB1bmlmb3JtIHRlc3QgaWRzCi0g
IGFzIHByb2R1Y2VkIGJ5IEFsZnJlZG8ncyBuaWNlIHB5dGVzdC52aW0gcGx1Z2luLgotLSBmaXgg
aXNzdWUxMiAtIHNob3cgcGx1Z2luIHZlcnNpb25zIHdpdGggIi0tdmVyc2lvbiIgYW5kCi0gICIt
LXRyYWNlY29uZmlnIiBhbmQgYWxzbyBkb2N1bWVudCBob3cgdG8gYWRkIGV4dHJhIGluZm9ybWF0
aW9uCi0gIHRvIHJlcG9ydGluZyB0ZXN0IGhlYWRlcgotLSBmaXggaXNzdWUxNyAoaW1wb3J0LSog
cmVwb3J0aW5nIGlzc3VlIG9uIHB5dGhvbjMpIGJ5Ci0gIHJlcXVpcmluZyBweT4xLjQuMCAoMS40
LjEgaXMgZ29pbmcgdG8gaW5jbHVkZSBpdCkKLS0gZml4IGlzc3VlMTAgKG51bXB5IGFycmF5cyB0
cnV0aCBjaGVja2luZykgYnkgcmVmaW5pbmcKLSAgYXNzZXJ0aW9uIGludGVycHJldGF0aW9uIGlu
IHB5IGxpYgotLSBmaXggaXNzdWUxNTogbWFrZSBub3NlIGNvbXBhdGliaWxpdHkgdGVzdHMgY29t
cGF0aWJsZQotICB3aXRoIHB5dGhvbjMgKG5vdyB0aGF0IG5vc2UtMS4wIHN1cHBvcnRzIHB5dGhv
bjMpCi0tIHJlbW92ZSBzb21ld2hhdCBzdXJwcmlzaW5nICJzYW1lLWNvbmZ0ZXN0IiBkZXRlY3Rp
b24gYmVjYXVzZQotICBpdCBpZ25vcmVzIGNvbmZ0ZXN0LnB5IHdoZW4gdGhleSBhcHBlYXIgaW4g
c2V2ZXJhbCBzdWJkaXJzLgotLSBpbXByb3ZlIGFzc2VydGlvbnMgKCJub3QgaW4iKSwgdGhhbmtz
IEZsb3JpcyBCcnV5bm9vZ2hlCi0tIGltcHJvdmUgYmVoYXZpb3VyL3dhcm5pbmdzIHdoZW4gcnVu
bmluZyBvbiB0b3Agb2YgInB5dGhvbiAtT08iCi0gIChhc3NlcnRpb25zIGFuZCBkb2NzdHJpbmdz
IGFyZSB0dXJuZWQgb2ZmLCBsZWFkaW5nIHRvIHBvdGVudGlhbAotICBmYWxzZSBwb3NpdGl2ZXMp
Ci0tIGludHJvZHVjZSBhIHB5dGVzdF9jbWRsaW5lX3Byb2Nlc3NhcmdzKGFyZ3MpIGhvb2sKLSAg
dG8gYWxsb3cgZHluYW1pYyBjb21wdXRhdGlvbiBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgot
ICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiBiZWNhdXNlIHB5LnRlc3QgcHJpb3IgdG8gMi4wCi0g
IGFsbG93ZWQgdG8gc2V0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZyb20gY29uZnRlc3QucHkKLSAg
ZmlsZXMgd2hpY2ggc28gZmFyIHB5dGVzdC0yLjAgb25seSBhbGxvd2VkIGZyb20gaW5pLWZpbGVz
IG5vdy4KLS0gZml4IGlzc3VlNzogYXNzZXJ0IGZhaWx1cmVzIGluIGRvY3Rlc3QgbW9kdWxlcy4K
LSAgdW5leHBlY3RlZCBmYWlsdXJlcyBpbiBkb2N0ZXN0cyB3aWxsIG5vdCBnZW5lcmFsbHkKLSAg
c2hvdyBuaWNlciwgaS5lLiB3aXRoaW4gdGhlIGRvY3Rlc3QgZmFpbGluZyBjb250ZXh0LgotLSBm
aXggaXNzdWU5OiBzZXR1cC90ZWFyZG93biBmdW5jdGlvbnMgZm9yIGFuIHhmYWlsLW1hcmtlZAot
ICB0ZXN0IHdpbGwgcmVwb3J0IGFzIHhmYWlsIGlmIHRoZXkgZmFpbCBidXQgcmVwb3J0IGFzIG5v
cm1hbGx5Ci0gIHBhc3NpbmcgKG5vdCB4cGFzc2luZykgaWYgdGhleSBzdWNjZWVkLiAgVGhpcyBv
bmx5IGlzIHRydWUKLSAgZm9yICJkaXJlY3QiIHNldHVwL3RlYXJkb3duIGludm9jYXRpb25zIGJl
Y2F1c2UgdGVhcmRvd25fY2xhc3MvCi0gIHRlYXJkb3duX21vZHVsZSBjYW5ub3QgY2xvc2VseSBy
ZWxhdGUgdG8gYSBzaW5nbGUgdGVzdC4KLS0gZml4IGlzc3VlMTQ6IG5vIGxvZ2dpbmcgZXJyb3Jz
IGF0IHByb2Nlc3MgZXhpdAotLSByZWZpbmVtZW50cyB0byAiY29sbGVjdGluZyIgb3V0cHV0IG9u
IG5vbi10dHlzCi0tIHJlZmluZSBpbnRlcm5hbCBwbHVnaW4gcmVnaXN0cmF0aW9uIGFuZCAtLXRy
YWNlY29uZmlnIG91dHB1dAotLSBpbnRyb2R1Y2UgYSBtZWNoYW5pc20gdG8gcHJldmVudC91bnJl
Z2lzdGVyIHBsdWdpbnMgZnJvbSB0aGUKLSAgY29tbWFuZCBsaW5lLCBzZWUgaHR0cDovL3B5dGVz
dC5vcmcvcGx1Z2lucy5odG1sI2NtZHVucmVnaXN0ZXIKLS0gYWN0aXZhdGUgcmVzdWx0bG9nIHBs
dWdpbiBieSBkZWZhdWx0Ci0tIGZpeCByZWdyZXNzaW9uIHdydCB5aWVsZGVkIHRlc3RzIHdoaWNo
IGR1ZSB0byB0aGUKLSAgY29sbGVjdGlvbi1iZWZvcmUtcnVubmluZyBzZW1hbnRpY3Mgd2VyZSBu
b3QKLSAgc2V0dXAgYXMgd2l0aCBweXRlc3QgMS4zLjQuICBOb3RlLCBob3dldmVyLCB0aGF0Ci0g
IHRoZSByZWNvbW1lbmRlZCBhbmQgbXVjaCBjbGVhbmVyIHdheSB0byBkbyB0ZXN0Ci0gIHBhcmFt
ZXRyYWl6YXRpb24gcmVtYWlucyB0aGUgInB5dGVzdF9nZW5lcmF0ZV90ZXN0cyIKLSAgbWVjaGFu
aXNtLCBzZWUgdGhlIGRvY3MuCi0KLTIuMC4wICgyMDEwLTExLTI1KQotPT09PT09PT09PT09PT09
PT09Ci0KLS0gcHl0ZXN0LTIuMCBpcyBub3cgaXRzIG93biBwYWNrYWdlIGFuZCBkZXBlbmRzIG9u
IHB5bGliLTIuMAotLSBuZXcgYWJpbGl0eTogcHl0aG9uIC1tIHB5dGVzdCAvIHB5dGhvbiAtbSBw
eXRlc3QubWFpbiBhYmlsaXR5Ci0tIG5ldyBweXRob24gaW52b2NhdGlvbjogcHl0ZXN0Lm1haW4o
YXJncywgcGx1Z2lucykgdG8gbG9hZAotICBzb21lIGN1c3RvbSBwbHVnaW5zIGVhcmx5LgotLSB0
cnkgaGFyZGVyIHRvIHJ1biB1bml0dGVzdCB0ZXN0IHN1aXRlcyBpbiBhIG1vcmUgY29tcGF0aWJs
ZSBtYW5uZXIKLSAgYnkgZGVmZXJyaW5nIHNldHVwL3RlYXJkb3duIHNlbWFudGljcyB0byB0aGUg
dW5pdHRlc3QgcGFja2FnZS4KLSAgYWxzbyB3b3JrIGhhcmRlciB0byBydW4gdHdpc3RlZC90cmlh
bCBhbmQgRGphbmdvIHRlc3RzIHdoaWNoCi0gIHNob3VsZCBub3cgYmFzaWNhbGx5IHdvcmsgYnkg
ZGVmYXVsdC4KLS0gaW50cm9kdWNlIGEgbmV3IHdheSB0byBzZXQgY29uZmlnIG9wdGlvbnMgdmlh
IGluaS1zdHlsZSBmaWxlcywKLSAgYnkgZGVmYXVsdCBzZXR1cC5jZmcgYW5kIHRveC5pbmkgZmls
ZXMgYXJlIHNlYXJjaGVkLiAgVGhlIG9sZAotICB3YXlzIChjZXJ0YWluIGVudmlyb25tZW50IHZh
cmlhYmxlcywgZHluYW1pYyBjb25mdGVzdC5weSByZWFkaW5nCi0gIGlzIHJlbW92ZWQpLgotLSBh
ZGQgYSBuZXcgIi1xIiBvcHRpb24gd2hpY2ggZGVjcmVhc2VzIHZlcmJvc2l0eSBhbmQgcHJpbnRz
IGEgbW9yZQotICBub3NlL3VuaXR0ZXN0LXN0eWxlICJkb3QiIG91dHB1dC4KLS0gZml4IGlzc3Vl
MTM1IC0gbWFya3Mgbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGNhc2VzIGFzIHdlbGwKLS0g
Zml4IGlzc3VlMTI2IC0gaW50cm9kdWNlIHB5LnRlc3Quc2V0X3RyYWNlKCkgdG8gdHJhY2UgZXhl
Y3V0aW9uIHZpYQotICBQREIgZHVyaW5nIHRoZSBydW5uaW5nIG9mIHRlc3RzIGV2ZW4gaWYgY2Fw
dHVyaW5nIGlzIG9uZ29pbmcuCi0tIGZpeCBpc3N1ZTEyMyAtIG5ldyAicHl0aG9uIC1tIHB5LnRl
c3QiIGludm9jYXRpb24gZm9yIHB5LnRlc3QKLSAgKHJlcXVpcmVzIFB5dGhvbiAyLjUgb3IgYWJv
dmUpCi0tIGZpeCBpc3N1ZTEyNCAtIG1ha2UgcmVwb3J0aW5nIG1vcmUgcmVzaWxpZW50IGFnYWlu
c3QgdGVzdHMgb3BlbmluZwotICBmaWxlcyBvbiBmaWxlZGVzY3JpcHRvciAxIChzdGRvdXQpLgot
LSBmaXggaXNzdWUxMDkgLSBzaWJsaW5nIGNvbmZ0ZXN0LnB5IGZpbGVzIHdpbGwgbm90IGJlIGxv
YWRlZC4KLSAgKGFuZCBEaXJlY3RvcnkgY29sbGVjdG9ycyBjYW5ub3QgYmUgY3VzdG9taXplZCBh
bnltb3JlIGZyb20gYSBEaXJlY3RvcnkncwotICBjb25mdGVzdC5weSAtIHRoaXMgbmVlZHMgdG8g
aGFwcGVuIGF0IGxlYXN0IG9uZSBsZXZlbCB1cCkuCi0tIGludHJvZHVjZSAoY3VzdG9taXphYmxl
KSBhc3NlcnRpb24gZmFpbHVyZSByZXByZXNlbnRhdGlvbnMgYW5kIGVuaGFuY2UKLSAgb3V0cHV0
IG9uIGFzc2VydGlvbiBmYWlsdXJlcyBmb3IgY29tcGFyaXNvbnMgYW5kIG90aGVyIGNhc2VzIChG
bG9yaXMgQnJ1eW5vb2doZSkKLS0gbm9zZS1wbHVnaW46IHBhc3MgdGhyb3VnaCB0eXBlLXNpZ25h
dHVyZSBmYWlsdXJlcyBpbiBzZXR1cC90ZWFyZG93bgotICBmdW5jdGlvbnMgaW5zdGVhZCBvZiBu
b3QgY2FsbGluZyB0aGVtIChFZCBTaW5nbGV0b24pCi0tIHJlbW92ZSBweS50ZXN0LmNvbGxlY3Qu
RGlyZWN0b3J5IChmb2xsb3dzIGZyb20gYSBtYWpvciByZWZhY3RvcmluZwotICBhbmQgc2ltcGxp
ZmljYXRpb24gb2YgdGhlIGNvbGxlY3Rpb24gcHJvY2VzcykKLS0gbWFqb3JseSByZWR1Y2UgcHku
dGVzdCBjb3JlIGNvZGUsIHNoaWZ0IGZ1bmN0aW9uL3B5dGhvbiB0ZXN0aW5nIHRvIG93biBwbHVn
aW4KLS0gZml4IGlzc3VlODggKGZpbmRpbmcgY3VzdG9tIHRlc3Qgbm9kZXMgZnJvbSBjb21tYW5k
IGxpbmUgYXJnKQotLSByZWZpbmUgJ3RtcGRpcicgY3JlYXRpb24sIHdpbGwgbm93IGNyZWF0ZSBi
YXNlbmFtZXMgYmV0dGVyIGFzc29jaWF0ZWQKLSAgd2l0aCB0ZXN0IG5hbWVzICh0aGFua3MgUm9u
bnkpCi0tICJ4cGFzcyIgKHVuZXhwZWN0ZWQgcGFzcykgdGVzdHMgZG9uJ3QgY2F1c2UgZXhpdGNv
ZGUhPTAKLS0gZml4IGlzc3VlMTMxIC8gaXNzdWU2MCAtIGltcG9ydGluZyBkb2N0ZXN0cyBpbiBf
X2luaXRfXyBmaWxlcyB1c2VkIGFzIG5hbWVzcGFjZSBwYWNrYWdlcwotLSBmaXggaXNzdWU5MyBz
dGRvdXQvc3RkZXJyIGlzIGNhcHR1cmVkIHdoaWxlIGltcG9ydGluZyBjb25mdGVzdC5weQotLSBm
aXggYnVnOiB1bml0dGVzdCBjb2xsZWN0ZWQgZnVuY3Rpb25zIG5vdyBhbHNvIGNhbiBoYXZlICJw
eXRlc3RtYXJrIgotICBhcHBsaWVkIGF0IGNsYXNzL21vZHVsZSBsZXZlbAotLSBhZGQgYWJpbGl0
eSB0byB1c2UgImNsYXNzIiBsZXZlbCBmb3IgY2FjaGVkX3NldHVwIGhlbHBlcgotLSBmaXggc3Ry
YW5nZW5lc3M6IG1hcmsuKiBvYmplY3RzIGFyZSBub3cgaW1tdXRhYmxlLCBjcmVhdGUgbmV3IGlu
c3RhbmNlcwotCi0xLjMuNCAoMjAxMC0wOS0xNCkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZp
eCBpc3N1ZTExMTogaW1wcm92ZSBpbnN0YWxsIGRvY3VtZW50YXRpb24gZm9yIHdpbmRvd3MKLS0g
Zml4IGlzc3VlMTE5OiBmaXggY3VzdG9tIGNvbGxlY3RhYmlsaXR5IG9mIF9faW5pdF9fLnB5IGFz
IGEgbW9kdWxlCi0tIGZpeCBpc3N1ZTExNjogLS1kb2N0ZXN0bW9kdWxlcyB3b3JrIHdpdGggX19p
bml0X18ucHkgZmlsZXMgYXMgd2VsbAotLSBmaXggaXNzdWUxMTU6IHVuaWZ5IGludGVybmFsIGV4
Y2VwdGlvbiBwYXNzdGhyb3VnaC9jYXRjaGluZy9HZW5lcmF0b3JFeGl0Ci0tIGZpeCBpc3N1ZTEx
ODogbmV3IC0tdGI9bmF0aXZlIGZvciBwcmVzZW50aW5nIGNweXRob24tc3RhbmRhcmQgZXhjZXB0
aW9ucwotCi0xLjMuMyAoMjAxMC0wNy0zMCkKLT09PT09PT09PT09PT09PT09PQotCi0tIGZpeCBp
c3N1ZTExMzogYXNzZXJ0aW9uIHJlcHJlc2VudGF0aW9uIHByb2JsZW0gd2l0aCB0cmlwbGUtcXVv
dGVkIHN0cmluZ3MKLSAgKGFuZCBwb3NzaWJseSBvdGhlciBjYXNlcykKLS0gbWFrZSBjb25mdGVz
dCBsb2FkaW5nIGRldGVjdCB0aGF0IGEgY29uZnRlc3QgZmlsZSB3aXRoIHRoZSBzYW1lCi0gIGNv
bnRlbnQgd2FzIGFscmVhZHkgbG9hZGVkLCBhdm9pZHMgc3VycHJpc2VzIGluIG5lc3RlZCBkaXJl
Y3Rvcnkgc3RydWN0dXJlcwotICB3aGljaCBjYW4gYmUgcHJvZHVjZWQgZS5nLiBieSBIdWRzb24u
IEl0IHByb2JhYmx5IHJlbW92ZXMgdGhlIG5lZWQgdG8gdXNlCi0gIC0tY29uZmN1dGRpciBpbiBt
b3N0IGNhc2VzLgotLSBmaXggdGVybWluYWwgY29sb3JpbmcgZm9yIHdpbjMyCi0gICh0aGFua3Mg
TWljaGFlbCBGb29yZCBmb3IgcmVwb3J0aW5nKQotLSBmaXggd2VpcmRuZXNzOiBtYWtlIHRlcm1p
bmFsIHdpZHRoIGRldGVjdGlvbiB3b3JrIG9uIHN0ZG91dCBpbnN0ZWFkIG9mIHN0ZGluCi0gICh0
aGFua3MgQXJtaW4gUm9uYWNoZXIgZm9yIHJlcG9ydGluZykKLS0gcmVtb3ZlIHRyYWlsaW5nIHdo
aXRlc3BhY2UgaW4gYWxsIHB5L3RleHQgZGlzdHJpYnV0aW9uIGZpbGVzCi0KLTEuMy4yICgyMDEw
LTA3LTA4KQotPT09PT09PT09PT09PT09PT09Ci0KLSoqTmV3IGZlYXR1cmVzKioKLQotLSBmaXgg
aXNzdWUxMDM6ICBpbnRyb2R1Y2UgcHkudGVzdC5yYWlzZXMgYXMgY29udGV4dCBtYW5hZ2VyLCBl
eGFtcGxlczo6Ci0KLSAgICB3aXRoIHB5LnRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToK
LSAgICAgICAgeCA9IDAKLSAgICAgICAgMSAvIHgKLQotICAgIHdpdGggcHkudGVzdC5yYWlzZXMo
UnVudGltZUVycm9yKSBhcyBleGNpbmZvOgotICAgICAgICBjYWxsX3NvbWV0aGluZygpCi0KLSAg
ICAjIHlvdSBtYXkgZG8gZXh0cmEgY2hlY2tzIG9uIGV4Y2luZm8udmFsdWV8dHlwZXx0cmFjZWJh
Y2sgaGVyZQotCi0gICh0aGFua3MgUm9ubnkgUGZhbm5zY2htaWR0KQotCi0tIEZ1bmNhcmcgZmFj
dG9yaWVzIGNhbiBub3cgZHluYW1pY2FsbHkgYXBwbHkgYSBtYXJrZXIgdG8gYQotICB0ZXN0IGlu
dm9jYXRpb24uICBUaGlzIGlzIGZvciBleGFtcGxlIHVzZWZ1bCBpZiBhIGZhY3RvcnkKLSAgcHJv
dmlkZXMgcGFyYW1ldGVycyB0byBhIHRlc3Qgd2hpY2ggYXJlIGV4cGVjdGVkLXRvLWZhaWw6Ogot
Ci0gICAgZGVmIHB5dGVzdF9mdW5jYXJnX19hcmcocmVxdWVzdCk6Ci0gICAgICAgIHJlcXVlc3Qu
YXBwbHltYXJrZXIocHkudGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0iZmxha3kgY29uZmlnIikpCi0g
ICAgICAgIC4uLgotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb24oYXJnKToKLSAgICAgICAgLi4uCi0K
LS0gaW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIG9uIGNvbGxlY3Rpb24gYW5kIGltcG9ydCBlcnJv
cnMuIFRoaXMgbWFrZXMKLSAgdXNlIG9mIGEgbW9yZSBnZW5lcmFsIG1lY2hhbmlzbSwgbmFtZWx5
IHRoYXQgZm9yIGN1c3RvbSB0ZXN0IGl0ZW0vY29sbGVjdAotICBub2RlcyBgYG5vZGUucmVwcl9m
YWlsdXJlKGV4Y2luZm8pYGAgaXMgbm93IHVuaWZvcm1seSBjYWxsZWQgc28gdGhhdCB5b3UgY2Fu
Ci0gIG92ZXJyaWRlIGl0IHRvIHJldHVybiBhIHN0cmluZyBlcnJvciByZXByZXNlbnRhdGlvbiBv
ZiB5b3VyIGNob2ljZQotICB3aGljaCBpcyBnb2luZyB0byBiZSByZXBvcnRlZCBhcyBhIChyZWQp
IHN0cmluZy4KLQotLSBpbnRyb2R1Y2UgJy0tanVuaXRwcmVmaXg9U1RSJyBvcHRpb24gdG8gcHJl
cGVuZCBhIHByZWZpeAotICB0byBhbGwgcmVwb3J0cyBpbiB0aGUganVuaXR4bWwgZmlsZS4KLQot
KipCdWcgZml4ZXMqKgotCi0tIG1ha2UgdGVzdHMgYW5kIHRoZSBgYHB5dGVzdF9yZWN3YXJuYGAg
cGx1Z2luIGluIHBhcnRpY3VsYXIgZnVsbHkgY29tcGF0aWJsZQotICB0byBQeXRob24yLjcgKGlm
IHlvdSB1c2UgdGhlIGBgcmVjd2FybmBgIGZ1bmNhcmcgd2FybmluZ3Mgd2lsbCBiZSBlbmFibGVk
IHNvIHRoYXQKLSAgeW91IGNhbiBwcm9wZXJseSBjaGVjayBmb3IgdGhlaXIgZXhpc3RlbmNlIGlu
IGEgY3Jvc3MtcHl0aG9uIG1hbm5lcikuCi0tIHJlZmluZSAtLXBkYjogaWdub3JlIHhmYWlsZWQg
dGVzdHMsIHVuaWZ5IGl0cyBUQi1yZXBvcnRpbmcgYW5kCi0gIGRvbid0IGRpc3BsYXkgZmFpbHVy
ZXMgYWdhaW4gYXQgdGhlIGVuZC4KLS0gZml4IGFzc2VydGlvbiBpbnRlcnByZXRhdGlvbiB3aXRo
IHRoZSAqKiBvcGVyYXRvciAodGhhbmtzIEJlbmphbWluIFBldGVyc29uKQotLSBmaXggaXNzdWUx
MDUgYXNzaWdubWVudCBvbiB0aGUgc2FtZSBsaW5lIGFzIGEgZmFpbGluZyBhc3NlcnRpb24gKHRo
YW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKLS0gZml4IGlzc3VlMTA0IHByb3BlciBlc2NhcGluZyBm
b3IgdGVzdCBuYW1lcyBpbiBqdW5pdHhtbCBwbHVnaW4gKHRoYW5rcyBhbm9ueW1vdXMpCi0tIGZp
eCBpc3N1ZTU3IC1mfC0tbG9vcG9uZmFpbCB0byB3b3JrIHdpdGggeHBhc3NpbmcgdGVzdHMgKHRo
YW5rcyBSb25ueSkKLS0gZml4IGlzc3VlOTIgY29sbGVjdG9ubHkgcmVwb3J0ZXIgYW5kIC0tcGFz
dGViaW4gKHRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKLS0gZml4IHB5LmNvZGUuY29tcGlsZShz
b3VyY2UpIHRvIGdlbmVyYXRlIHVuaXF1ZSBmaWxlbmFtZXMKLS0gZml4IGFzc2VydGlvbiByZS1p
bnRlcnAgcHJvYmxlbXMgb24gUHlQeSwgYnkgZGVmZXJpbmcgY29kZQotICBjb21waWxhdGlvbiB0
byB0aGUgKG92ZXJyaWRhYmxlKSBGcmFtZS5ldmFsIGNsYXNzLiAodGhhbmtzIEFtYXVyeSBGb3Jn
ZW90KQotLSBmaXggcHkucGF0aC5sb2NhbC5weWltcG9ydCgpIHRvIHdvcmsgd2l0aCBkaXJlY3Rv
cmllcwotLSBzdHJlYW1saW5lIHB5LnBhdGgubG9jYWwubWtkdGVtcCBpbXBsZW1lbnRhdGlvbiBh
bmQgdXNhZ2UKLS0gZG9uJ3QgcHJpbnQgZW1wdHkgbGluZXMgd2hlbiBzaG93aW5nIGp1bml0eG1s
LWZpbGVuYW1lCi0tIGFkZCBvcHRpb25hbCBib29sZWFuIGlnbm9yZV9lcnJvcnMgcGFyYW1ldGVy
IHRvIHB5LnBhdGgubG9jYWwucmVtb3ZlCi0tIGZpeCB0ZXJtaW5hbCB3cml0aW5nIG9uIHdpbjMy
L3B5dGhvbjIuNAotLSBweS5wcm9jZXNzLmNtZGV4ZWMoKSBub3cgdHJpZXMgaGFyZGVyIHRvIHJl
dHVybiBwcm9wZXJseSBlbmNvZGVkIHVuaWNvZGUgb2JqZWN0cwotICBvbiBhbGwgcHl0aG9uIHZl
cnNpb25zCi0tIGluc3RhbGwgcGxhaW4gcHkudGVzdC9weS53aGljaCBzY3JpcHRzIGFsc28gZm9y
IEp5dGhvbiwgdGhpcyBoZWxwcyB0bwotICBnZXQgY2Fub25pY2FsIHNjcmlwdCBwYXRocyBpbiB2
aXJ0dWFsZW52IHNpdHVhdGlvbnMKLS0gbWFrZSBwYXRoLmJlc3RyZWxwYXRoKHBhdGgpIHJldHVy
biAiLiIsIG5vdGUgdGhhdCB3aGVuIGNhbGxpbmcKLSAgWC5iZXN0cmVscGF0aCB0aGUgYXNzdW1w
dGlvbiBpcyB0aGF0IFggaXMgYSBkaXJlY3RvcnkuCi0tIG1ha2UgaW5pdGlhbCBjb25mdGVzdCBk
aXNjb3ZlcnkgaWdub3JlICItLSIgcHJlZml4ZWQgYXJndW1lbnRzCi0tIGZpeCByZXN1bHRsb2cg
cGx1Z2luIHdoZW4gdXNlZCBpbiBhIG11bHRpY3B1L211bHRpaG9zdCB4ZGlzdCBzaXR1YXRpb24K
LSAgKHRoYW5rcyBKYWt1YiBHdXN0YWspCi0tIHBlcmZvcm0gZGlzdHJpYnV0ZWQgdGVzdGluZyBy
ZWxhdGVkIHJlcG9ydGluZyBpbiB0aGUgeGRpc3QtcGx1Z2luCi0gIHJhdGhlciB0aGFuIGhhdmlu
ZyBkaXN0LXJlbGF0ZWQgY29kZSBpbiB0aGUgZ2VuZXJpYyBweS50ZXN0Ci0gIGRpc3RyaWJ1dGlv
bgotLSBmaXggaG9tZWRpciBkZXRlY3Rpb24gb24gV2luZG93cwotLSBzaGlwIGRpc3RyaWJ1dGVf
c2V0dXAucHkgdmVyc2lvbiAwLjYuMTMKLQotMS4zLjEgKDIwMTAtMDUtMjUpCi09PT09PT09PT09
PT09PT09PT0KLQotKipOZXcgZmVhdHVyZXMqKgotCi0tIGlzc3VlOTE6IGludHJvZHVjZSBuZXcg
cHkudGVzdC54ZmFpbChyZWFzb24pIGhlbHBlcgotICB0byBpbXBlcmF0aXZlbHkgbWFyayBhIHRl
c3QgYXMgZXhwZWN0ZWQgdG8gZmFpbC4gQ2FuCi0gIGJlIHVzZWQgZnJvbSB3aXRoaW4gc2V0dXAg
YW5kIHRlc3QgZnVuY3Rpb25zLiBUaGlzIGlzCi0gIHVzZWZ1bCBlc3BlY2lhbGx5IGZvciBwYXJh
bWV0cml6ZWQgdGVzdHMgd2hlbiBjZXJ0YWluCi0gIGNvbmZpZ3VyYXRpb25zIGFyZSBleHBlY3Rl
ZC10by1mYWlsLiAgSW4gdGhpcyBjYXNlIHRoZQotICBkZWNsYXJhdGl2ZSBhcHByb2FjaCB3aXRo
IHRoZSBAcHkudGVzdC5tYXJrLnhmYWlsIGNhbm5vdAotICBiZSB1c2VkIGFzIGl0IHdvdWxkIG1h
cmsgYWxsIGNvbmZpZ3VyYXRpb25zIGFzIHhmYWlsLgotCi0tIGlzc3VlMTAyOiBpbnRyb2R1Y2Ug
bmV3IC0tbWF4ZmFpbD1OVU0gb3B0aW9uIHRvIHN0b3AKLSAgdGVzdCBydW5zIGFmdGVyIE5VTSBm
YWlsdXJlcy4gIFRoaXMgaXMgYSBnZW5lcmFsaXphdGlvbgotICBvZiB0aGUgJy14JyBvciAnLS1l
eGl0Zmlyc3QnIG9wdGlvbiB3aGljaCBpcyBub3cgZXF1aXZhbGVudAotICB0byAnLS1tYXhmYWls
PTEnLiAgQm90aCAnLXgnIGFuZCAnLS1tYXhmYWlsJyB3aWxsCi0gIG5vdyBhbHNvIHByaW50IGEg
bGluZSBuZWFyIHRoZSBlbmQgaW5kaWNhdGluZyB0aGUgSW50ZXJydXB0aW9uLgotCi0tIGlzc3Vl
ODk6IGFsbG93IHB5LnRlc3QubWFyayBkZWNvcmF0b3JzIHRvIGJlIHVzZWQgb24gY2xhc3Nlcwot
ICAoY2xhc3MgZGVjb3JhdG9ycyB3ZXJlIGludHJvZHVjZWQgd2l0aCBweXRob24yLjYpIGFuZAot
ICBhbHNvIGFsbG93IHRvIGhhdmUgbXVsdGlwbGUgbWFya2VycyBhcHBsaWVkIGF0IGNsYXNzL21v
ZHVsZSBsZXZlbAotICBieSBzcGVjaWZ5aW5nIGEgbGlzdC4KLQotLSBpbXByb3ZlIGFuZCByZWZp
bmUgbGV0dGVyIHJlcG9ydGluZyBpbiB0aGUgcHJvZ3Jlc3MgYmFyOgotICAuICBwYXNzCi0gIGYg
IGZhaWxlZCB0ZXN0Ci0gIHMgIHNraXBwZWQgdGVzdHMgKHJlbWluZGVyOiB1c2UgZm9yIGRlcGVu
ZGVuY3kvcGxhdGZvcm0gbWlzbWF0Y2ggb25seSkKLSAgeCAgeGZhaWxlZCB0ZXN0ICh0ZXN0IHRo
YXQgd2FzIGV4cGVjdGVkIHRvIGZhaWwpCi0gIFggIHhwYXNzZWQgdGVzdCAodGVzdCB0aGF0IHdh
cyBleHBlY3RlZCB0byBmYWlsIGJ1dCBwYXNzZWQpCi0KLSAgWW91IGNhbiB1c2UgYW55IGNvbWJp
bmF0aW9uIG9mICdmc3hYJyB3aXRoIHRoZSAnLXInIGV4dGVuZGVkCi0gIHJlcG9ydGluZyBvcHRp
b24uIFRoZSB4ZmFpbC94cGFzcyByZXN1bHRzIHdpbGwgc2hvdyB1cCBhcwotICBza2lwcGVkIHRl
c3RzIGluIHRoZSBqdW5pdHhtbCBvdXRwdXQgLSB3aGljaCBhbHNvIGZpeGVzCi0gIGlzc3VlOTku
Ci0KLS0gbWFrZSBweS50ZXN0LmNtZGxpbmUubWFpbigpIHJldHVybiB0aGUgZXhpdHN0YXR1cyBp
bnN0ZWFkIG9mIHJhaXNpbmcKLSAgU3lzdGVtRXhpdCBhbmQgYWxzbyBhbGxvdyBpdCB0byBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMuICBUaGlzIG9mCi0gIGNvdXJzZSByZXF1aXJlcyB0aGF0IHlv
dXIgYXBwbGljYXRpb24gYW5kIHRlc3RzIGFyZSBwcm9wZXJseSB0ZWFyZWQKLSAgZG93biBhbmQg
ZG9uJ3QgaGF2ZSBnbG9iYWwgc3RhdGUuCi0KLSoqQnVnIEZpeGVzKioKLQotLSBpbXByb3ZlZCB0
cmFjZWJhY2sgcHJlc2VudGF0aW9uOgotICAtIGltcHJvdmVkIGFuZCB1bmlmaWVkIHJlcG9ydGlu
ZyBmb3IgIi0tdGI9c2hvcnQiIG9wdGlvbgotICAtIEVycm9ycyBkdXJpbmcgdGVzdCBtb2R1bGUg
aW1wb3J0cyBhcmUgbXVjaCBzaG9ydGVyLCAodXNpbmcgLS10Yj1zaG9ydCBzdHlsZSkKLSAgLSBy
YWlzZXMgc2hvd3Mgc2hvcnRlciBtb3JlIHJlbGV2YW50IHRyYWNlYmFja3MKLSAgLSAtLWZ1bGx0
cmFjZSBub3cgbW9yZSBzeXN0ZW1hdGljYWxseSBtYWtlcyB0cmFjZXMgbG9uZ2VyIC8gaW5oaWJp
dHMgY3V0dGluZwotCi0tIGltcHJvdmUgc3VwcG9ydCBmb3IgcmFpc2VzIGFuZCBvdGhlciBkeW5h
bWljYWxseSBjb21waWxlZCBjb2RlIGJ5Ci0gIG1hbmlwdWxhdGluZyBweXRob24ncyBsaW5lY2Fj
aGUuY2FjaGUgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMKLSAgcmF0aGVyIGhhY2t5IHdheSBvZiBj
cmVhdGluZyBjdXN0b20gY29kZSBvYmplY3RzLiAgVGhpcyBtYWtlcwotICBpdCBzZWVtbGVzc2x5
IHdvcmsgb24gSnl0aG9uIGFuZCBQeVB5IHdoZXJlIGl0IHByZXZpb3VzbHkgZGlkbid0LgotCi0t
IGZpeCBpc3N1ZTk2OiBtYWtlIGNhcHR1cmluZyBtb3JlIHJlc2lsaWVudCBhZ2FpbnN0IENvbnRy
b2wtQwotICBpbnRlcnJ1cHRpb25zIChpbnZvbHZlZCBzb21ld2hhdCBzdWJzdGFudGlhbCByZWZh
Y3RvcmluZwotICB0byB0aGUgdW5kZXJseWluZyBjYXB0dXJpbmcgZnVuY3Rpb25hbGl0eSB0byBh
dm9pZCByYWNlCi0gIGNvbmRpdGlvbnMpLgotCi0tIGZpeCBjaGFpbmluZyBvZiBjb25kaXRpb25h
bCBza2lwaWYveGZhaWwgZGVjb3JhdG9ycyAtIHNvIGl0IHdvcmtzIG5vdwotICBhcyBleHBlY3Rl
ZCB0byB1c2UgbXVsdGlwbGUgQHB5LnRlc3QubWFyay5za2lwaWYoY29uZGl0aW9uKSBkZWNvcmF0
b3JzLAotICBpbmNsdWRpbmcgc3BlY2lmaWMgcmVwb3J0aW5nIHdoaWNoIG9mIHRoZSBjb25kaXRp
b25zIGxlYWQgdG8gc2tpcHBpbmcuCi0KLS0gZml4IGlzc3VlOTU6IGxhdGUtaW1wb3J0IHpsaWIg
c28gdGhhdCBpdCdzIG5vdCByZXF1aXJlZAotICBmb3IgZ2VuZXJhbCBweS50ZXN0IHN0YXJ0dXAu
Ci0KLS0gZml4IGlzc3VlOTQ6IG1ha2UgcmVwb3J0aW5nIG1vcmUgcm9idXN0IGFnYWluc3QgYm9n
dXMgc291cmNlIGNvZGUKLSAgKGFuZCBpbnRlcm5hbGx5IGJlIG1vcmUgY2FyZWZ1bCB3aGVuIHBy
ZXNlbnRpbmcgdW5leHBlY3RlZCBieXRlIHNlcXVlbmNlcykKLQotCi0xLjMuMCAoMjAxMC0wNS0w
NSkKLT09PT09PT09PT09PT09PT09PQotCi0tIGRlcHJlY2F0ZSAtLXJlcG9ydCBvcHRpb24gaW4g
ZmF2b3VyIG9mIGEgbmV3IHNob3J0ZXIgYW5kIGVhc2llciB0bwotICByZW1lbWJlciAtciBvcHRp
b246IGl0IHRha2VzIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnNpc3Rpbmcgb2YgYW55Ci0gIGNvbWJp
bmF0aW9uIG9mICd4ZnNYJyBjaGFyYWN0ZXJzLiAgVGhleSByZWxhdGUgdG8gdGhlIHNpbmdsZSBj
aGFycwotICB5b3Ugc2VlIGR1cmluZyB0aGUgZG90dGVkIHByb2dyZXNzIHByaW50aW5nIGFuZCB3
aWxsIHByaW50IGFuIGV4dHJhIGxpbmUKLSAgcGVyIHRlc3QgYXQgdGhlIGVuZCBvZiB0aGUgdGVz
dCBydW4uICBUaGlzIGV4dHJhIGxpbmUgaW5kaWNhdGVzIHRoZSBleGFjdAotICBwb3NpdGlvbiBv
ciB0ZXN0IElEIHRoYXQgeW91IGRpcmVjdGx5IHBhc3RlIHRvIHRoZSBweS50ZXN0IGNtZGxpbmUg
aW4gb3JkZXIKLSAgdG8gcmUtcnVuIGEgcGFydGljdWxhciB0ZXN0LgotCi0tIGFsbG93IGV4dGVy
bmFsIHBsdWdpbnMgdG8gcmVnaXN0ZXIgbmV3IGhvb2tzIHZpYSB0aGUgbmV3Ci0gIHB5dGVzdF9h
ZGRob29rcyhwbHVnaW5tYW5hZ2VyKSBob29rLiAgVGhlIG5ldyByZWxlYXNlIG9mCi0gIHRoZSBw
eXRlc3QteGRpc3QgcGx1Z2luIGZvciBkaXN0cmlidXRlZCBhbmQgbG9vcG9uZmFpbGluZwotICB0
ZXN0aW5nIHJlcXVpcmVzIHRoaXMgZmVhdHVyZS4KLQotLSBhZGQgYSBuZXcgcHl0ZXN0X2lnbm9y
ZV9jb2xsZWN0KHBhdGgsIGNvbmZpZykgaG9vayB0byBhbGxvdyBwcm9qZWN0cyBhbmQKLSAgcGx1
Z2lucyB0byBkZWZpbmUgZXhjbHVzaW9uIGJlaGF2aW91ciBmb3IgdGhlaXIgZGlyZWN0b3J5IHN0
cnVjdHVyZSAtCi0gIGZvciBleGFtcGxlIHlvdSBtYXkgZGVmaW5lIGluIGEgY29uZnRlc3QucHkg
dGhpcyBtZXRob2Q6OgotCi0gICAgICAgIGRlZiBweXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aCk6
Ci0gICAgICAgICAgICByZXR1cm4gcGF0aC5jaGVjayhsaW5rPTEpCi0KLSAgdG8gcHJldmVudCBl
dmVuIGEgY29sbGVjdGlvbiB0cnkgb2YgYW55IHRlc3RzIGluIHN5bWxpbmtlZCBkaXJzLgotCi0t
IG5ldyBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aCwgcGFyZW50KSBob29rIGZvcgot
ICBhbGxvd2luZyBjdXN0b21pemF0aW9uIG9mIHRoZSBNb2R1bGUgY29sbGVjdGlvbiBvYmplY3Qg
Zm9yIGEKLSAgbWF0Y2hpbmcgdGVzdCBtb2R1bGUuCi0KLS0gZXh0ZW5kIGFuZCByZWZpbmUgeGZh
aWwgbWVjaGFuaXNtOgotICBgYEBweS50ZXN0Lm1hcmsueGZhaWwocnVuPUZhbHNlKWBgIGRvIG5v
dCBydW4gdGhlIGRlY29yYXRlZCB0ZXN0Ci0gIGBgQHB5LnRlc3QubWFyay54ZmFpbChyZWFzb249
Ii4uLiIpYGAgcHJpbnRzIHRoZSByZWFzb24gc3RyaW5nIGluIHhmYWlsIHN1bW1hcmllcwotICBz
cGVjaWZ5aW5nIGBgLS1ydW54ZmFpbGBgIG9uIGNvbW1hbmQgbGluZSB2aXJ0dWFsbHkgaWdub3Jl
cyB4ZmFpbCBtYXJrZXJzCi0KLS0gZXhwb3NlIChwcmV2aW91c2x5IGludGVybmFsKSBjb21tb25s
eSB1c2VmdWwgbWV0aG9kczoKLSAgcHkuaW8uZ2V0X3Rlcm1pbmFsX3dpdGgoKSAtPiByZXR1cm4g
dGVybWluYWwgd2lkdGgKLSAgcHkuaW8uYW5zaV9wcmludCguLi4pIC0+IHByaW50IGNvbG9yZWQv
Ym9sZCB0ZXh0IG9uIGxpbnV4L3dpbjMyCi0gIHB5LmlvLnNhZmVyZXByKG9iaikgLT4gcmV0dXJu
IGxpbWl0ZWQgcmVwcmVzZW50YXRpb24gc3RyaW5nCi0KLS0gZXhwb3NlIHRlc3Qgb3V0Y29tZSBy
ZWxhdGVkIGV4Y2VwdGlvbnMgYXMgcHkudGVzdC5za2lwLkV4Y2VwdGlvbiwKLSAgcHkudGVzdC5y
YWlzZXMuRXhjZXB0aW9uIGV0Yy4sIHVzZWZ1bCBtb3N0bHkgZm9yIHBsdWdpbnMKLSAgZG9pbmcg
c3BlY2lhbCBvdXRjb21lIGludGVycHJldGF0aW9uL3R3ZWFraW5nCi0KLS0gKGlzc3VlODUpIGZp
eCBqdW5pdHhtbCBwbHVnaW4gdG8gaGFuZGxlIHRlc3RzIHdpdGggbm9uLWFzY2lpIG91dHB1dAot
Ci0tIGZpeC9yZWZpbmUgcHl0aG9uMyBjb21wYXRpYmlsaXR5ICh0aGFua3MgQmVuamFtaW4gUGV0
ZXJzb24pCi0KLS0gZml4ZXMgZm9yIG1ha2luZyB0aGUganl0aG9uL3dpbjMyIGNvbWJpbmF0aW9u
IHdvcmssIG5vdGUgaG93ZXZlcjoKLSAganl0aG9uMi41LjEvd2luMzIgZG9lcyBub3QgcHJvdmlk
ZSBhIGNvbW1hbmQgbGluZSBsYXVuY2hlciwgc2VlCi0gIGh0dHA6Ly9idWdzLmp5dGhvbi5vcmcv
aXNzdWUxNDkxIC4gU2VlIHB5bGliIGluc3RhbGwgZG9jdW1lbnRhdGlvbgotICBmb3IgaG93IHRv
IHdvcmsgYXJvdW5kLgotCi0tIGZpeGVzIGZvciBoYW5kbGluZyBvZiB1bmljb2RlIGV4Y2VwdGlv
biB2YWx1ZXMgYW5kIHVucHJpbnRhYmxlIG9iamVjdHMKLQotLSAoaXNzdWU4NykgZml4IHVuYm91
bmRsb2NhbCBlcnJvciBpbiBhc3NlcnRpb25vbGQgY29kZQotCi0tIChpc3N1ZTg2KSBpbXByb3Zl
IGRvY3VtZW50YXRpb24gZm9yIGxvb3BvbmZhaWxpbmcKLQotLSByZWZpbmUgSU8gY2FwdHVyaW5n
OiBzdGRpbi1yZWRpcmVjdCBwc2V1ZG8tZmlsZSBub3cgaGFzIGEgTk9QIGNsb3NlKCkgbWV0aG9k
Ci0KLS0gc2hpcCBkaXN0cmlidXRlX3NldHVwLnB5IHZlcnNpb24gMC42LjEwCi0KLS0gYWRkZWQg
bGlua3MgdG8gdGhlIG5ldyBjYXB0dXJlbG9nIGFuZCBjb3ZlcmFnZSBwbHVnaW5zCi0KLQotMS4y
LjAgKDIwMTAtMDEtMTgpCi09PT09PT09PT09PT09PT09PT0KLQotLSByZWZpbmVkIHVzYWdlIGFu
ZCBvcHRpb25zIGZvciAicHkuY2xlYW51cCI6OgotCi0gICAgcHkuY2xlYW51cCAgICAgIyByZW1v
dmUgIioucHljIiBhbmQgIiokcHkuY2xhc3MiIChqeXRob24pIGZpbGVzCi0gICAgcHkuY2xlYW51
cCAtZSAuc3dwIC1lIC5jYWNoZSAjIGFsc28gcmVtb3ZlIGZpbGVzIHdpdGggdGhlc2UgZXh0ZW5z
aW9ucwotICAgIHB5LmNsZWFudXAgLXMgICMgcmVtb3ZlICJidWlsZCIgYW5kICJkaXN0IiBkaXJl
Y3RvcnkgbmV4dCB0byBzZXR1cC5weSBmaWxlcwotICAgIHB5LmNsZWFudXAgLWQgICMgYWxzbyBy
ZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMKLSAgICBweS5jbGVhbnVwIC1hICAjIHN5bm9ueW0gZm9y
ICItcyAtZCAtZSAncGlwLWxvZy50eHQnIgotICAgIHB5LmNsZWFudXAgLW4gICMgZHJ5IHJ1biwg
b25seSBzaG93IHdoYXQgd291bGQgYmUgcmVtb3ZlZAotCi0tIGFkZCBhIG5ldyBvcHRpb24gInB5
LnRlc3QgLS1mdW5jYXJncyIgd2hpY2ggc2hvd3MgYXZhaWxhYmxlIGZ1bmNhcmdzCi0gIGFuZCB0
aGVpciBoZWxwIHN0cmluZ3MgKGRvY3N0cmluZ3Mgb24gdGhlaXIgcmVzcGVjdGl2ZSBmYWN0b3J5
IGZ1bmN0aW9uKQotICBmb3IgYSBnaXZlbiB0ZXN0IHBhdGgKLQotLSBkaXNwbGF5IGEgc2hvcnQg
YW5kIGNvbmNpc2UgdHJhY2ViYWNrIGlmIGEgZnVuY2FyZyBsb29rdXAgZmFpbHMKLQotLSBlYXJs
eS1sb2FkICJjb25mdGVzdC5weSIgZmlsZXMgaW4gbm9uLWRvdCBmaXJzdC1sZXZlbCBzdWIgZGly
ZWN0b3JpZXMuCi0gIGFsbG93cyB0byBjb252ZW5pZW50bHkga2VlcCBhbmQgYWNjZXNzIHRlc3Qt
cmVsYXRlZCBvcHRpb25zIGluIGEgYGB0ZXN0YGAKLSAgc3ViZGlyIGFuZCBzdGlsbCBhZGQgY29t
bWFuZCBsaW5lIG9wdGlvbnMuCi0KLS0gZml4IGlzc3VlNjc6IG5ldyBzdXBlci1zaG9ydCB0cmFj
ZWJhY2stcHJpbnRpbmcgb3B0aW9uOiAiLS10Yj1saW5lIiB3aWxsIHByaW50IGEgc2luZ2xlIGxp
bmUgZm9yIGVhY2ggZmFpbGluZyAocHl0aG9uKSB0ZXN0IGluZGljYXRpbmcgaXRzIGZpbGVuYW1l
LCBsaW5lbm8gYW5kIHRoZSBmYWlsdXJlIHZhbHVlCi0KLS0gZml4IGlzc3VlNzg6IGFsd2F5cyBj
YWxsIHB5dGhvbi1sZXZlbCB0ZWFyZG93biBmdW5jdGlvbnMgZXZlbiBpZiB0aGUKLSAgYWNjb3Jk
aW5nIHNldHVwIGZhaWxlZC4gIFRoaXMgaW5jbHVkZXMgcmVmaW5lbWVudHMgZm9yIGNhbGxpbmcg
c2V0dXBfbW9kdWxlL2NsYXNzIGZ1bmN0aW9ucwotICB3aGljaCB3aWxsIG5vdyBvbmx5IGJlIGNh
bGxlZCBvbmNlIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIGJlaGF2aW91ciB3aGVyZSB0aGV5J2Qg
YmUgY2FsbGVkCi0gIG11bHRpcGxlIHRpbWVzIGlmIHRoZXkgcmFpc2UgYW4gZXhjZXB0aW9uIChp
bmNsdWRpbmcgYSBTa2lwcGVkIGV4Y2VwdGlvbikuICBBbnkgZXhjZXB0aW9uCi0gIHdpbGwgYmUg
cmUtY29yZGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggYWxsIHRlc3RzIGluIHRoZSBhY2NvcmRpbmcg
bW9kdWxlL2NsYXNzIHNjb3BlLgotCi0tIGZpeCBpc3N1ZTYzOiBhc3N1bWUgPDQwIGNvbHVtbnMg
dG8gYmUgYSBib2d1cyB0ZXJtaW5hbCB3aWR0aCwgZGVmYXVsdCB0byA4MAotCi0tIGZpeCBwZGIg
ZGVidWdnaW5nIHRvIGJlIGluIHRoZSBjb3JyZWN0IGZyYW1lIG9uIHJhaXNlcy1yZWxhdGVkIGVy
cm9ycwotCi0tIHVwZGF0ZSBhcGlwa2cucHkgdG8gZml4IGFuIGlzc3VlIHdoZXJlIHJlY3Vyc2l2
ZSBpbXBvcnRzIG1pZ2h0Ci0gIHVubmVjZXNzYXJpbHkgYnJlYWsgaW1wb3J0aW5nCi0KLS0gZml4
IHBsdWdpbiBsaW5rcwotCi0xLjEuMSAoMjAwOS0xMS0yNCkKLT09PT09PT09PT09PT09PT09PQot
Ci0tIG1vdmVkIGRpc3QvbG9vcG9uZmFpbGluZyBmcm9tIHB5LnRlc3QgY29yZSBpbnRvIGEgbmV3
Ci0gIHNlcGFyYXRlbHkgcmVsZWFzZWQgcHl0ZXN0LXhkaXN0IHBsdWdpbi4KLQotLSBuZXcganVu
aXR4bWwgcGx1Z2luOiAtLWp1bml0eG1sPXBhdGggd2lsbCBnZW5lcmF0ZSBhIGp1bml0IHN0eWxl
IHhtbCBmaWxlCi0gIHdoaWNoIGlzIHByb2Nlc3NhYmxlIGUuZy4gYnkgdGhlIEh1ZHNvbiBDSSBz
eXN0ZW0uCi0KLS0gbmV3IG9wdGlvbjogLS1nZW5zY3JpcHQ9cGF0aCB3aWxsIGdlbmVyYXRlIGEg
c3RhbmRhbG9uZSBweS50ZXN0IHNjcmlwdAotICB3aGljaCB3aWxsIG5vdCBuZWVkIGFueSBsaWJy
YXJpZXMgaW5zdGFsbGVkLiAgdGhhbmtzIHRvIFJhbGYgU2NobWl0dC4KLQotLSBuZXcgb3B0aW9u
OiAtLWlnbm9yZSB3aWxsIHByZXZlbnQgc3BlY2lmaWVkIHBhdGggZnJvbSBjb2xsZWN0aW9uLgot
ICBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLgotCi0tIG5ldyBvcHRpb246IC0tY29u
ZmN1dGRpcj1kaXIgd2lsbCBtYWtlIHB5LnRlc3Qgb25seSBjb25zaWRlciBjb25mdGVzdAotICBm
aWxlcyB0aGF0IGFyZSByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIGRpci4KLQotLSBuZXcgZnVu
Y2FyZzogInB5dGVzdGNvbmZpZyIgaXMgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0IGZvciBhY2Nl
c3MKLSAgdG8gY29tbWFuZCBsaW5lIGFyZ3MgYW5kIGNhbiBub3cgYmUgZWFzaWx5IHVzZWQgaW4g
YSB0ZXN0LgotCi0tIGluc3RhbGwgYGBweS50ZXN0YGAgYW5kIGBgcHkud2hpY2hgYCB3aXRoIGEg
YGAtJFZFUlNJT05gYCBzdWZmaXggdG8KLSAgZGlzYW1iaWd1YXRlIGJldHdlZW4gUHl0aG9uMywg
cHl0aG9uMi5YLCBKeXRob24gYW5kIFB5UHkgaW5zdGFsbGVkIHZlcnNpb25zLgotCi0tIG5ldyAi
cHl0ZXN0Y29uZmlnIiBmdW5jYXJnIGFsbG93cyBhY2Nlc3MgdG8gdGVzdCBjb25maWcgb2JqZWN0
Ci0KLS0gbmV3ICJweXRlc3RfcmVwb3J0X2hlYWRlciIgaG9vayBjYW4gcmV0dXJuIGFkZGl0aW9u
YWwgbGluZXMKLSAgdG8gYmUgZGlzcGxheWVkIGF0IHRoZSBoZWFkZXIgb2YgYSB0ZXN0IHJ1bi4K
LQotLSAoZXhwZXJpbWVudGFsKSBhbGxvdyAicHkudGVzdCBwYXRoOjpuYW1lMTo6bmFtZTI6Oi4u
LiIgZm9yIHBvaW50aW5nCi0gIHRvIGEgdGVzdCB3aXRoaW4gYSB0ZXN0IGNvbGxlY3Rpb24gZGly
ZWN0bHkuICBUaGlzIG1pZ2h0IGV2ZW50dWFsbHkKLSAgZXZvbHZlIGFzIGEgZnVsbCBzdWJzdGl0
dXRlIHRvICItayIgc3BlY2lmaWNhdGlvbnMuCi0KLS0gc3RyZWFtbGluZWQgcGx1Z2luIGxvYWRp
bmc6IG9yZGVyIGlzIG5vdyBhcyBkb2N1bWVudGVkIGluCi0gIGN1c3RvbWl6ZS5odG1sOiBzZXR1
cHRvb2xzLCBFTlYsIGNvbW1hbmRsaW5lLCBjb25mdGVzdC4KLSAgYWxzbyBzZXR1cHRvb2xzIGVu
dHJ5IHBvaW50IG5hbWVzIGFyZSB0dXJuZWQgdG8gY2Fub25pY2FsIG5hbWVlcyAoInB5dGVzdF8q
IikKLQotLSBhdXRvbWF0aWNhbGx5IHNraXAgdGVzdHMgdGhhdCBuZWVkICdjYXBmZCcgYnV0IGhh
dmUgbm8gb3MuZHVwCi0KLS0gYWxsb3cgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIHRvIGJlIGRlZmlu
ZWQgaW4gY2xhc3NlcyBhcyB3ZWxsCi0KLS0gZGVwcmVjYXRlIHVzYWdlIG9mICdkaXNhYmxlZCcg
YXR0cmlidXRlIGluIGZhdm91ciBvZiBweXRlc3RtYXJrCi0tIGRlcHJlY2F0ZSBkZWZpbml0aW9u
IG9mIERpcmVjdG9yeSwgTW9kdWxlLCBDbGFzcyBhbmQgRnVuY3Rpb24gbm9kZXMKLSAgaW4gY29u
ZnRlc3QucHkgZmlsZXMuICBVc2UgcHl0ZXN0IGNvbGxlY3QgaG9va3MgaW5zdGVhZC4KLQotLSBj
b2xsZWN0aW9uL2l0ZW0gbm9kZSBzcGVjaWZpYyBydW50ZXN0L2NvbGxlY3QgaG9va3MgYXJlIG9u
bHkgY2FsbGVkIGV4YWN0bHkKLSAgb24gbWF0Y2hpbmcgY29uZnRlc3QucHkgZmlsZXMsIGkuZS4g
b25lcyB3aGljaCBhcmUgZXhhY3RseSBiZWxvdwotICB0aGUgZmlsZXN5c3RlbSBwYXRoIG9mIGFu
IGl0ZW0KLQotLSBjaGFuZ2U6IHRoZSBmaXJzdCBweXRlc3RfY29sbGVjdF9kaXJlY3RvcnkgaG9v
ayB0byByZXR1cm4gc29tZXRoaW5nCi0gIHdpbGwgbm93IHByZXZlbnQgZnVydGhlciBob29rcyB0
byBiZSBjYWxsZWQuCi0KLS0gY2hhbmdlOiBmaWdsZWFmIHBsdWdpbiBub3cgcmVxdWlyZXMgLS1m
aWdsZWFmIHRvIHJ1bi4gIEFsc28KLSAgY2hhbmdlIGl0cyBsb25nIGNvbW1hbmQgbGluZSBvcHRp
b25zIHRvIGJlIGEgYml0IHNob3J0ZXIgKHNlZSBweS50ZXN0IC1oKS4KLQotLSBjaGFuZ2U6IHB5
dGVzdCBkb2N0ZXN0IHBsdWdpbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0IGFuZCBoYXMgYQot
ICBuZXcgb3B0aW9uIC0tZG9jdGVzdC1nbG9iIHRvIHNldCBhIHBhdHRlcm4gZm9yIGZpbGUgbWF0
Y2hlcy4KLQotLSBjaGFuZ2U6IHJlbW92ZSBpbnRlcm5hbCBweS5fKiBoZWxwZXIgdmFycywgb25s
eSBrZWVwIHB5Ll9weWRpcgotCi0tIHJvYnVzdGlmeSBjYXB0dXJpbmcgdG8gc3Vydml2ZSBpZiBj
dXN0b20gcHl0ZXN0X3J1bnRlc3Rfc2V0dXAKLSAgY29kZSBmYWlsZWQgYW5kIHByZXZlbnRlZCB0
aGUgY2FwdHVyaW5nIHNldHVwIGNvZGUgZnJvbSBydW5uaW5nLgotCi0tIG1ha2UgcHkudGVzdC4q
IGhlbHBlcnMgcHJvdmlkZWQgYnkgZGVmYXVsdCBwbHVnaW5zIHZpc2libGUgZWFybHkgLQotICB3
b3JrcyB0cmFuc3BhcmVudGx5IGJvdGggZm9yIHB5ZG9jIGFuZCBmb3IgaW50ZXJhY3RpdmUgc2Vz
c2lvbnMKLSAgd2hpY2ggd2lsbCByZWd1bGFybHkgc2VlIGUuZy4gcHkudGVzdC5tYXJrIGFuZCBw
eS50ZXN0LmltcG9ydG9yc2tpcC4KLQotLSBzaW1wbGlmeSBpbnRlcm5hbCBwbHVnaW4gbWFuYWdl
ciBtYWNoaW5lcnkKLS0gc2ltcGxpZnkgaW50ZXJuYWwgY29sbGVjdGlvbiB0cmVlIGJ5IGludHJv
ZHVjaW5nIGEgUm9vdENvbGxlY3RvciBub2RlCi0KLS0gZml4IGFzc2VydCByZWludGVycHJlYXRp
b24gdGhhdCBzZWVzIGEgY2FsbCBjb250YWluaW5nICJrZXl3b3JkPS4uLiIKLQotLSBmaXggaXNz
dWU2NjogaW52b2tlIHB5dGVzdF9zZXNzaW9uc3RhcnQgYW5kIHB5dGVzdF9zZXNzaW9uZmluaXNo
Ci0gIGhvb2tzIG9uIHNsYXZlcyBkdXJpbmcgZGlzdC10ZXN0aW5nLCByZXBvcnQgbW9kdWxlL3Nl
c3Npb24gdGVhcmRvd24KLSAgaG9va3MgY29ycmVjdGx5LgotCi0tIGZpeCBpc3N1ZTY1OiBwcm9w
ZXJseSBoYW5kbGUgZGlzdC10ZXN0aW5nIGlmIG5vCi0gIGV4ZWNuZXQvcHkgbGliIGluc3RhbGxl
ZCByZW1vdGVseS4KLQotLSBza2lwIHNvbWUgaW5zdGFsbC10ZXN0cyBpZiBubyBleGVjbmV0IGlz
IGF2YWlsYWJsZQotCi0tIGZpeCBkb2NzLCBmaXggaW50ZXJuYWwgYmluLyBzY3JpcHQgZ2VuZXJh
dGlvbgotCi0KLTEuMS4wICgyMDA5LTExLTA1KQotPT09PT09PT09PT09PT09PT09Ci0KLS0gaW50
cm9kdWNlIGF1dG9tYXRpYyBwbHVnaW4gcmVnaXN0cmF0aW9uIHZpYSAncHl0ZXN0MTEnCi0gIGVu
dHJ5cG9pbnRzIHZpYSBzZXR1cHRvb2xzJyBwa2dfcmVzb3VyY2VzLml0ZXJfZW50cnlfcG9pbnRz
Ci0KLS0gZml4IHB5LnRlc3QgZGlzdC10ZXN0aW5nIHRvIHdvcmsgd2l0aCBleGVjbmV0ID49IDEu
MC4wYjQKLQotLSByZS1pbnRyb2R1Y2UgcHkudGVzdC5jbWRsaW5lLm1haW4oKSBmb3IgYmV0dGVy
IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLQotLSBzdm4gcGF0aHM6IGZpeCBhIGJ1ZyB3aXRoIHBh
dGguY2hlY2sodmVyc2lvbmVkPVRydWUpIGZvciBzdm4gcGF0aHMsCi0gIGFsbG93ICclJyBpbiBz
dm4gcGF0aHMsIG1ha2Ugc3Zud2MudXBkYXRlKCkgZGVmYXVsdCB0byBpbnRlcmFjdGl2ZSBtb2Rl
Ci0gIGxpa2UgaW4gMS4wLnggYW5kIGFkZCBzdm53Yy51cGRhdGUoaW50ZXJhY3RpdmU9RmFsc2Up
IHRvIGluaGliaXQgaW50ZXJhY3Rpb24uCi0KLS0gcmVmaW5lIGRpc3RyaWJ1dGVkIHRhcmJhbGwg
dG8gY29udGFpbiB0ZXN0IGFuZCBubyBweWMgZmlsZXMKLQotLSB0cnkgaGFyZGVyIHRvIGhhdmUg
ZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIHB5LmNvbXBhdC4qIGFjY2Vzc2VzCi0gIHJlcG9ydCBh
IGNvcnJlY3QgbG9jYXRpb24KLQotMS4wLjMKLT09PT09Ci0KLSogYWRqdXN0IGFuZCBpbXByb3Zl
IGRvY3MKLQotKiByZW1vdmUgcHkucmVzdCB0b29sIGFuZCBpbnRlcm5hbCBuYW1lc3BhY2UgLSBp
dCB3YXMKLSAgbmV2ZXIgcmVhbGx5IGFkdmVydGlzZWQgYW5kIGNhbiBzdGlsbCBiZSB1c2VkIHdp
dGgKLSAgdGhlIG9sZCByZWxlYXNlIGlmIG5lZWRlZC4gIElmIHRoZXJlIGlzIGludGVyZXN0Ci0g
IGl0IGNvdWxkIGJlIHJldml2ZWQgaW50byBpdHMgb3duIHRvb2wgaSBndWVzcy4KLQotKiBmaXgg
aXNzdWU0OCBhbmQgaXNzdWU1OTogcmFpc2UgYW4gRXJyb3IgaWYgdGhlIG1vZHVsZQotICBmcm9t
IGFuIGltcG9ydGVkIHRlc3QgZmlsZSBkb2VzIG5vdCBzZWVtIHRvIGNvbWUgZnJvbQotICB0aGUg
ZmlsZXBhdGggLSBhdm9pZHMgInNhbWUtbmFtZSIgY29uZnVzaW9uIHRoYXQgaGFzCi0gIGJlZW4g
cmVwb3J0ZWQgcmVwZWF0ZWRseQotCi0qIG1lcmdlZCBSb25ueSdzIG5vc2UtY29tcGF0aWJpbGl0
eSBoYWNrczogbm93Ci0gIG5vc2Utc3R5bGUgc2V0dXBfbW9kdWxlKCkgYW5kIHNldHVwKCkgZnVu
Y3Rpb25zIGFyZQotICBzdXBwb3J0ZWQKLQotKiBpbnRyb2R1Y2UgZ2VuZXJhbGl6ZWQgcHkudGVz
dC5tYXJrIGZ1bmN0aW9uIG1hcmtpbmcKLQotKiByZXNodWZmbGUgLyByZWZpbmUgY29tbWFuZCBs
aW5lIGdyb3VwaW5nCi0KLSogZGVwcmVjYXRlIHBhcnNlci5hZGRncm91cCBpbiBmYXZvdXIgb2Yg
Z2V0Z3JvdXAgd2hpY2ggY3JlYXRlcyBvcHRpb24gZ3JvdXAKLQotKiBhZGQgLS1yZXBvcnQgY29t
bWFuZCBsaW5lIG9wdGlvbiB0aGF0IGFsbG93cyB0byBjb250cm9sIHNob3dpbmcgb2Ygc2tpcHBl
ZC94ZmFpbGVkIHNlY3Rpb25zCi0KLSogZ2VuZXJhbGl6ZWQgc2tpcHBpbmc6IGEgbmV3IHdheSB0
byBtYXJrIHB5dGhvbiBmdW5jdGlvbnMgd2l0aCBza2lwaWYgb3IgeGZhaWwKLSAgYXQgZnVuY3Rp
b24sIGNsYXNzIGFuZCBtb2R1bGVzIGxldmVsIGJhc2VkIG9uIHBsYXRmb3JtIG9yIHN5cy1tb2R1
bGUgYXR0cmlidXRlcy4KLQotKiBleHRlbmQgcHkudGVzdC5tYXJrIGRlY29yYXRvciB0byBhbGxv
dyBmb3IgcG9zaXRpb25hbCBhcmdzCi0KLSogaW50cm9kdWNlIGFuZCB0ZXN0ICJweS5jbGVhbnVw
IC1kIiB0byByZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMKLQotKiBmaXggaXNzdWUgIzU5IC0gcm9i
dXN0aWZ5IHVuaXR0ZXN0IHRlc3QgY29sbGVjdGlvbgotCi0qIG1ha2UgYnB5dGhvbi9oZWxwIGlu
dGVyYWN0aW9uIHdvcmsgYnkgYWRkaW5nIGFuIF9fYWxsX18gYXR0cmlidXRlCi0gIHRvIEFwaU1v
ZHVsZSwgY2xlYW51cCBpbml0cGtnCi0KLSogdXNlIE1JVCBsaWNlbnNlIGZvciBweWxpYiwgYWRk
IHNvbWUgY29udHJpYnV0b3JzCi0KLSogcmVtb3ZlIHB5LmV4ZWNuZXQgY29kZSBhbmQgc3Vic3Rp
dHV0ZSBhbGwgdXNhZ2VzIHdpdGggJ2V4ZWNuZXQnIHByb3BlcgotCi0qIGZpeCBpc3N1ZTUwIC0g
Y2FjaGVkX3NldHVwIG5vdyBjYWNoZXMgbW9yZSB0byBleHBlY3RhdGlvbnMKLSAgZm9yIHRlc3Qg
ZnVuY3Rpb25zIHdpdGggbXVsdGlwbGUgYXJndW1lbnRzLgotCi0qIG1lcmdlIEphcmtvJ3MgZml4
ZXMsIGlzc3VlICM0NSBhbmQgIzQ2Ci0KLSogYWRkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSBw
YXRoIGZvciBweS5sb29rdXAgdG8gc2VhcmNoIGluCi0KLSogZml4IGEgZnVuY2FyZyBjYWNoZWRf
c2V0dXAgYnVnIHByb2JhYmx5IG9ubHkgb2NjdXJyaW5nCi0gIGluIGRpc3RyaWJ1dGVkIHRlc3Rp
bmcgYW5kICJtb2R1bGUiIHNjb3BlIHdpdGggdGVhcmRvd24uCi0KLSogbWFueSBmaXhlcyBhbmQg
Y2hhbmdlcyBmb3IgbWFraW5nIHRoZSBjb2RlIGJhc2UgcHl0aG9uMyBjb21wYXRpYmxlLAotICBt
YW55IHRoYW5rcyB0byBCZW5qYW1pbiBQZXRlcnNvbiBmb3IgaGVscGluZyB3aXRoIHRoaXMuCi0K
LSogY29uc29saWRhdGUgYnVpbHRpbnMgaW1wbGVtZW50YXRpb24gdG8gYmUgY29tcGF0aWJsZSB3
aXRoID49Mi4zLAotICBhZGQgaGVscGVycyB0byBlYXNlIGtlZXBpbmcgMiBhbmQgM2sgY29tcGF0
aWJsZSBjb2RlCi0KLSogZGVwcmVjYXRlIHB5LmNvbXBhdC5kb2N0ZXN0fHN1YnByb2Nlc3N8dGV4
dHdyYXB8b3B0cGFyc2UKLQotKiBkZXByZWNhdGUgcHkubWFnaWMuYXV0b3BhdGgsIHJlbW92ZSBw
eS9tYWdpYyBkaXJlY3RvcnkKLQotKiBtb3ZlIHB5dGVzdCBhc3NlcnRpb24gaGFuZGxpbmcgdG8g
cHkvY29kZSBhbmQgYSBweXRlc3RfYXNzZXJ0aW9uCi0gIHBsdWdpbiwgYWRkICItLW5vLWFzc2Vy
dCIgb3B0aW9uLCBkZXByZWNhdGUgcHkubWFnaWMgbmFtZXNwYWNlcwotICBpbiBmYXZvdXIgb2Yg
KGxlc3MpIHB5LmNvZGUgb25lcy4KLQotKiBjb25zb2xpZGF0ZSBhbmQgY2xlYW51cCBweS9jb2Rl
IGNsYXNzZXMgYW5kIGZpbGVzCi0KLSogY2xlYW51cCBweS9taXNjLCBtb3ZlIHRlc3RzIHRvIGJp
bi1mb3ItZGlzdAotCi0qIGludHJvZHVjZSBkZWxhdHRyL2RlbGl0ZW0vZGVsZW52IG1ldGhvZHMg
dG8gcHkudGVzdCdzIG1vbmtleXBhdGNoIGZ1bmNhcmcKLQotKiBjb25zb2xpZGF0ZSBweS5sb2cg
aW1wbGVtZW50YXRpb24sIHJlbW92ZSBvbGQgYXBwcm9hY2guCi0KLSogaW50cm9kdWNlIHB5Lmlv
LlRleHRJTyBhbmQgcHkuaW8uQnl0ZXNJTyBmb3IgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbgotICB0
ZXh0L3VuaWNvZGUgYW5kIGJ5dGUtc3RyZWFtcyAodXNlcyB1bmRlcmx5aW5nIHN0YW5kYXJkIGxp
YiBpby4qCi0gIGlmIGF2YWlsYWJsZSkKLQotKiBtYWtlIHB5LnVuaXR0ZXN0X2NvbnZlcnQgaGVs
cGVyIHNjcmlwdCBhdmFpbGFibGUgd2hpY2ggY29udmVydHMgInVuaXR0ZXN0LnB5IgotICBzdHls
ZSBmaWxlcyBpbnRvIHRoZSBzaW1wbGVyIGFzc2VydC9kaXJlY3QtdGVzdC1jbGFzc2VzIHB5LnRl
c3Qvbm9zZXRlc3RzCi0gIHN0eWxlLiAgVGhlIHNjcmlwdCB3YXMgd3JpdHRlbiBieSBMYXVyYSBD
cmVpZ2h0b24uCi0KLSogc2ltcGxpZmllZCBpbnRlcm5hbCBsb2NhbHBhdGggaW1wbGVtZW50YXRp
b24KLQotMS4wLjIgKDIwMDktMDgtMjcpCi09PT09PT09PT09PT09PT09PT0KLQotKiBmaXhpbmcg
cGFja2FnaW5nIGlzc3VlcywgdHJpZ2dlcmVkIGJ5IGZlZG9yYSByZWRoYXQgcGFja2FnaW5nLAot
ICBhbHNvIGFkZGVkIGRvYywgZXhhbXBsZXMgYW5kIGNvbnRyaWIgZGlycyB0byB0aGUgdGFyYmFs
bC4KLQotKiBhZGRlZCBhIGRvY3VtZW50YXRpb24gbGluayB0byB0aGUgbmV3IGRqYW5nbyBwbHVn
aW4uCi0KLTEuMC4xICgyMDA5LTA4LTE5KQotPT09PT09PT09PT09PT09PT09Ci0KLSogYWRkZWQg
YSAncHl0ZXN0X25vc2UnIHBsdWdpbiB3aGljaCBoYW5kbGVzIG5vc2UuU2tpcFRlc3QsCi0gIG5v
c2Utc3R5bGUgZnVuY3Rpb24vbWV0aG9kL2dlbmVyYXRvciBzZXR1cC90ZWFyZG93biBhbmQKLSAg
dHJpZXMgdG8gcmVwb3J0IGZ1bmN0aW9ucyBjb3JyZWN0bHkuCi0KLSogY2FwdHVyaW5nIG9mIHVu
aWNvZGUgd3JpdGVzIG9yIGVuY29kZWQgc3RyaW5ncyB0byBzeXMuc3Rkb3V0L2VycgotICB3b3Jr
IGJldHRlciwgYWxzbyB0ZXJtaW5hbHdyaXRpbmcgd2FzIGFkYXB0ZWQgYW5kIHNvbWV3aGF0Ci0g
IHVuaWZpZWQgYmV0d2VlbiB3aW5kb3dzIGFuZCBsaW51eC4KLQotKiBpbXByb3ZlZCBkb2N1bWVu
dGF0aW9uIGxheW91dCBhbmQgY29udGVudCBhIGxvdAotCi0qIGFkZGVkIGEgIi0taGVscC1jb25m
aWciIG9wdGlvbiB0byBzaG93IGNvbmZ0ZXN0LnB5IC8gRU5WLXZhciBuYW1lcyBmb3IKLSAgYWxs
IGxvbmdvcHQgY21kbGluZSBvcHRpb25zLCBhbmQgc29tZSBzcGVjaWFsIGNvbmZ0ZXN0LnB5IHZh
cmlhYmxlcy4KLSAgcmVuYW1lZCAnY29uZl9jYXB0dXJlJyBjb25mdGVzdCBzZXR0aW5nIHRvICdv
cHRpb25fY2FwdHVyZScgYWNjb3JkaW5nbHkuCi0KLSogZml4IGlzc3VlICMyNzogYmV0dGVyIHJl
cG9ydGluZyBvbiBub24tY29sbGVjdGFibGUgaXRlbXMgZ2l2ZW4gb24gY29tbWFuZGxpbmUKLSAg
KGUuZy4gcHljIGZpbGVzKQotCi0qIGZpeCBpc3N1ZSAjMzM6IGFkZGVkIC0tdmVyc2lvbiBmbGFn
ICh0aGFua3MgQmVuamFtaW4gUGV0ZXJzb24pCi0KLSogZml4IGlzc3VlICMzMjogYWRkaW5nIHN1
cHBvcnQgZm9yICJpbmNvbXBsZXRlIiBwYXRocyB0byB3Y3BhdGguc3RhdHVzKCkKLQotKiAiVGVz
dCIgcHJlZml4ZWQgY2xhc3NlcyBhcmUgKm5vdCogY29sbGVjdGVkIGJ5IGRlZmF1bHQgYW55bW9y
ZSBpZiB0aGV5Ci0gIGhhdmUgYW4gX19pbml0X18gbWV0aG9kCi0KLSogbW9ua2V5cGF0Y2ggc2V0
ZW52KCkgbm93IGFjY2VwdHMgYSAicHJlcGVuZCIgcGFyYW1ldGVyCi0KLSogaW1wcm92ZWQgcmVw
b3J0aW5nIG9mIGNvbGxlY3Rpb24gZXJyb3IgdHJhY2ViYWNrcwotCi0qIHNpbXBsaWZpZWQgbXVs
dGljYWxsIG1lY2hhbmlzbSBhbmQgcGx1Z2luIGFyY2hpdGVjdHVyZSwKLSAgcmVuYW1lZCBzb21l
IGludGVybmFsIG1ldGhvZHMgYW5kIGFyZ25hbWVzCi0KLTEuMC4wICgyMDA5LTA4LTA0KQotPT09
PT09PT09PT09PT09PT09Ci0KLSogbW9yZSB0ZXJzZSByZXBvcnRpbmcgdHJ5IHRvIHNob3cgZmls
ZXN5c3RlbSBwYXRoIHJlbGF0aXZlbHkgdG8gY3VycmVudCBkaXIKLSogaW1wcm92ZSB4ZmFpbCBv
dXRwdXQgYSBiaXQKLQotMS4wLjBiOSAoMjAwOS0wNy0zMSkKLT09PT09PT09PT09PT09PT09PT09
Ci0KLSogY2xlYW5seSBoYW5kbGUgYW5kIHJlcG9ydCBmaW5hbCB0ZWFyZG93biBvZiB0ZXN0IHNl
dHVwCi0KLSogZml4IHN2bi0xLjYgY29tcGF0IGlzc3VlIHdpdGggcHkucGF0aC5zdm53YygpLnZl
cnNpb25lZCgpCi0gICh0aGFua3MgV291dGVyIFZhbmRlbiBIb3ZlKQotCi0qIHNldHVwL3RlYXJk
b3duIG9yIGNvbGxlY3Rpb24gcHJvYmxlbXMgbm93IHNob3cgYXMgRVJST1JzCi0gIG9yIHdpdGgg
YmlnICJFIidzIGluIHRoZSBwcm9ncmVzcyBsaW5lcy4gIHRoZXkgYXJlIHJlcG9ydGVkCi0gIGFu
ZCBjb3VudGVkIHNlcGFyYXRlbHkuCi0KLSogZGlzdC10ZXN0aW5nOiBwcm9wZXJseSBoYW5kbGUg
dGVzdCBpdGVtcyB0aGF0IGdldCBsb2NhbGx5Ci0gIGNvbGxlY3RlZCBidXQgY2Fubm90IGJlIGNv
bGxlY3RlZCBvbiB0aGUgcmVtb3RlIHNpZGUgLSBvZnRlbgotICBkdWUgdG8gcGxhdGZvcm0vZGVw
ZW5kZW5jeSByZWFzb25zCi0KLSogc2ltcGxpZmllZCBweS50ZXN0Lm1hcmsgQVBJIC0gc2VlIGtl
eXdvcmQgcGx1Z2luIGRvY3VtZW50YXRpb24KLQotKiBpbnRlZ3JhdGUgYmV0dGVyIHdpdGggbG9n
Z2luZzogY2FwdHVyaW5nIG5vdyBieSBkZWZhdWx0IGNhcHR1cmVzCi0gIHRlc3QgZnVuY3Rpb25z
IGFuZCB0aGVpciBpbW1lZGlhdGUgc2V0dXAvdGVhcmRvd24gaW4gYSBzaW5nbGUgc3RyZWFtCi0K
LSogY2Fwc3lzIGFuZCBjYXBmZCBmdW5jYXJncyBub3cgaGF2ZSBhIHJlYWRvdXRlcnIoKSBhbmQg
YSBjbG9zZSgpIG1ldGhvZAotICAodW5kZXJseWluZ2x5IHB5LmlvLlN0ZENhcHR1cmUvRkQgb2Jq
ZWN0cyBhcmUgdXNlZCB3aGljaCBncmV3IGEKLSAgcmVhZG91dGVycigpIG1ldGhvZCBhcyB3ZWxs
IHRvIHJldHVybiBzbmFwc2hvdHMgb2YgY2FwdHVyZWQgb3V0L2VycikKLQotKiBtYWtlIGFzc2Vy
dC1yZWludGVycHJldGF0aW9uIHdvcmsgYmV0dGVyIHdpdGggY29tcGFyaXNvbnMgbm90Ci0gIHJl
dHVybmluZyBib29scyAocmVwb3J0ZWQgd2l0aCBudW1weSBmcm9tIHRoYW5rcyBtYWNpZWogZmlq
YWxrb3dza2kpCi0KLSogcmV3b3JrZWQgcGVyLXRlc3Qgb3V0cHV0IGNhcHR1cmluZyBpbnRvIHRo
ZSBweXRlc3RfaW9jYXB0dXJlLnB5IHBsdWdpbgotICBhbmQgdGh1cyByZW1vdmVkIGNhcHR1cmlu
ZyBjb2RlIGZyb20gY29uZmlnIG9iamVjdAotCi0qIGl0ZW0ucmVwcl9mYWlsdXJlKGV4Y2luZm8p
IGluc3RlYWQgb2YgaXRlbS5yZXByX2ZhaWx1cmUoZXhjaW5mbywgb3V0ZXJyKQotCi0KLTEuMC4w
YjggKDIwMDktMDctMjIpCi09PT09PT09PT09PT09PT09PT09PQotCi0qIHB5dGVzdF91bml0dGVz
dC1wbHVnaW4gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdAotCi0qIGludHJvZHVjZWQgcHl0ZXN0
X2tleWJvYXJkaW50ZXJydXB0IGhvb2sgYW5kCi0gIHJlZmluZWQgcHl0ZXN0X3Nlc3Npb25maW5p
c2ggaG9va2VkLCBhZGRlZCB0ZXN0cy4KLQotKiB3b3JrYXJvdW5kIGEgYnVnZ3kgbG9nZ2luZyBt
b2R1bGUgaW50ZXJhY3Rpb24gKCJjbG9zaW5nIGFscmVhZHkgY2xvc2VkCi0gIGZpbGVzIikuICBU
aGFua3MgdG8gU3JpZGhhciBSYXRuYWt1bWFyIGZvciB0cmlnZ2VyaW5nLgotCi0qIGlmIHBsdWdp
bnMgdXNlICJweS50ZXN0LmltcG9ydG9yc2tpcCIgZm9yIGltcG9ydGluZwotICBhIGRlcGVuZGVu
Y3kgb25seSBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZAotICBvZiBleGl0aW5nIHRo
ZSB0ZXN0aW5nIHByb2Nlc3MuCi0KLSogbWFueSBpbXByb3ZlbWVudHMgdG8gZG9jczoKLSAgLSBy
ZWZpbmVkIGZ1bmNhcmdzIGRvYyAsIHVzZSB0aGUgdGVybSAiZmFjdG9yeSIgaW5zdGVhZCBvZiAi
cHJvdmlkZXIiCi0gIC0gYWRkZWQgYSBuZXcgdGFsay90dXRvcmlhbCBkb2MgcGFnZQotICAtIGJl
dHRlciBkb3dubG9hZCBwYWdlCi0gIC0gYmV0dGVyIHBsdWdpbiBkb2NzdHJpbmdzCi0gIC0gYWRk
ZWQgbmV3IHBsdWdpbnMgcGFnZSBhbmQgYXV0b21hdGljIGRvYyBnZW5lcmF0aW9uIHNjcmlwdAot
Ci0qIGZpeGVkIHRlYXJkb3duIHByb2JsZW0gcmVsYXRlZCB0byBwYXJ0aWFsbHkgZmFpbGluZyBm
dW5jYXJnIHNldHVwcwotICAodGhhbmtzIE1yVG9wZiBmb3IgcmVwb3J0aW5nKSwgInB5dGVzdF9y
dW50ZXN0X3RlYXJkb3duIiBpcyBub3cKLSAgYWx3YXlzIGludm9rZWQgZXZlbiBpZiB0aGUgInB5
dGVzdF9ydW50ZXN0X3NldHVwIiBmYWlsZWQuCi0KLSogdHdlYWtlZCBkb2N0ZXN0IG91dHB1dCBm
b3IgZG9jc3RyaW5ncyBpbiBweSBtb2R1bGVzLAotICB0aGFua3MgUmFkb21pci4KLQotMS4wLjBi
NwotPT09PT09PQotCi0qIHJlbmFtZWQgcHkudGVzdC54ZmFpbCBiYWNrIHRvIHB5LnRlc3QubWFy
ay54ZmFpbCB0byBhdm9pZAotICB0d28gd2F5cyB0byBkZWNvcmF0ZSBmb3IgeGZhaWwKLQotKiBy
ZS1hZGRlZCBweS50ZXN0Lm1hcmsgZGVjb3JhdG9yIGZvciBzZXR0aW5nIGtleXdvcmRzIG9uIGZ1
bmN0aW9ucwotICAoaXQgd2FzIGFjdHVhbGx5IGRvY3VtZW50ZWQgc28gcmVtb3ZpbmcgaXQgd2Fz
IG5vdCBuaWNlKQotCi0qIHJlbW92ZSBzY29wZS1hcmd1bWVudCBmcm9tIHJlcXVlc3QuYWRkZmlu
YWxpemVyKCkgYmVjYXVzZQotICByZXF1ZXN0LmNhY2hlZF9zZXR1cCBoYXMgdGhlIHNjb3BlIGFy
Zy4gVE9PV1RESS4KLQotKiBwZXJmb3JtIHNldHVwIGZpbmFsaXphdGlvbiBiZWZvcmUgcmVwb3J0
aW5nIGZhaWx1cmVzCi0KLSogYXBwbHkgbW9kaWZpZWQgcGF0Y2hlcyBmcm9tIEFuZHJlYXMgS2xv
ZWNrbmVyIHRvIGFsbG93Ci0gIHRlc3QgZnVuY3Rpb25zIHRvIGhhdmUgbm8gZnVuY19jb2RlICgj
MjIpIGFuZCB0byBtYWtlCi0gICItayIgYW5kIGZ1bmN0aW9uIGtleXdvcmRzIHdvcmsgICgjMjAp
Ci0KLSogYXBwbHkgcGF0Y2ggZnJvbSBEYW5pZWwgUGVvbHpsZWl0aG5lciAoaXNzdWUgIzIzKQot
Ci0qIHJlc29sdmUgaXNzdWUgIzE4LCBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigpIGFuZAotICBy
ZWRpcmVjdGlvbiBjbGFzaAotCi0qIG1ha2UgX19uYW1lX18gPT0gIl9fY2hhbm5lbGV4ZWNfXyIg
Zm9yIHJlbW90ZV9leGVjIGNvZGUKLQotMS4wLjBiMyAoMjAwOS0wNi0xOSkKLT09PT09PT09PT09
PT09PT09PT09Ci0KLSogcGx1Z2luIGNsYXNzZXMgYXJlIHJlbW92ZWQ6IG9uZSBub3cgZGVmaW5l
cwotICBob29rcyBkaXJlY3RseSBpbiBjb25mdGVzdC5weSBvciBnbG9iYWwgcHl0ZXN0XyoucHkK
LSAgZmlsZXMuCi0KLSogYWRkZWQgbmV3IHB5dGVzdF9uYW1lc3BhY2UoY29uZmlnKSBob29rIHRo
YXQgYWxsb3dzCi0gIHRvIGluamVjdCBoZWxwZXJzIGRpcmVjdGx5IHRvIHRoZSBweS50ZXN0Liog
bmFtZXNwYWNlLgotCi0qIGRvY3VtZW50ZWQgYW5kIHJlZmluZWQgbWFueSBob29rcwotCi0qIGFk
ZGVkIG5ldyBzdHlsZSBvZiBnZW5lcmF0aXZlIHRlc3RzIHZpYQotICBweXRlc3RfZ2VuZXJhdGVf
dGVzdHMgaG9vayB0aGF0IGludGVncmF0ZXMKLSAgd2VsbCB3aXRoIGZ1bmN0aW9uIGFyZ3VtZW50
cy4KLQotCi0xLjAuMGIxCi09PT09PT09Ci0KLSogaW50cm9kdWNlZCBuZXcgImZ1bmNhcmciIHNl
dHVwIG1ldGhvZCwKLSAgc2VlIGRvYy90ZXN0L2Z1bmNhcmcudHh0Ci0KLSogaW50cm9kdWNlZCBw
bHVnaW4gYXJjaGl0ZWN0dXJlIGFuZCBtYW55Ci0gIG5ldyBweS50ZXN0IHBsdWdpbnMsIHNlZQot
ICBkb2MvdGVzdC9wbHVnaW5zLnR4dAotCi0qIHRlYXJkb3duX21ldGhvZCBpcyBub3cgZ3VhcmFu
dGVlZCB0byBnZXQKLSAgY2FsbGVkIGFmdGVyIGEgdGVzdCBtZXRob2QgaGFzIHJ1bi4KLQotKiBu
ZXcgbWV0aG9kOiBweS50ZXN0LmltcG9ydG9yc2tpcChtb2QsbWludmVyc2lvbikKLSAgd2lsbCBl
aXRoZXIgaW1wb3J0IG9yIGNhbGwgcHkudGVzdC5za2lwKCkKLQotKiBjb21wbGV0ZWx5IHJldmlz
ZWQgaW50ZXJuYWwgcHkudGVzdCBhcmNoaXRlY3R1cmUKLQotKiBuZXcgcHkucHJvY2Vzcy5Gb3Jr
ZWRGdW5jIG9iamVjdCBhbGxvd2luZyB0bwotICBmb3JrIGV4ZWN1dGlvbiBvZiBhIGZ1bmN0aW9u
IHRvIGEgc3ViIHByb2Nlc3MKLSAgYW5kIGdldHRpbmcgYSByZXN1bHQgYmFjay4KLQotWFhYIGxv
dHMgb2YgdGhpbmdzIG1pc3NpbmcgaGVyZSBYWFgKLQotMC45LjIKLT09PT09Ci0KLSogcmVmaW5l
ZCBpbnN0YWxsYXRpb24gYW5kIG1ldGFkYXRhLCBjcmVhdGVkIG5ldyBzZXR1cC5weSwKLSAgbm93
IGJhc2VkIG9uIHNldHVwdG9vbHMvZXpfc2V0dXAgKHRoYW5rcyB0byBSYWxmIFNjaG1pdHQKLSAg
Zm9yIGhpcyBzdXBwb3J0KS4KLQotKiBpbXByb3ZlZCB0aGUgd2F5IG9mIG1ha2luZyBweS4qIHNj
cmlwdHMgYXZhaWxhYmxlIGluCi0gIHdpbmRvd3MgZW52aXJvbm1lbnRzLCB0aGV5IGFyZSBub3cg
YWRkZWQgdG8gdGhlCi0gIFNjcmlwdHMgZGlyZWN0b3J5IGFzICIuY21kIiBmaWxlcy4KLQotKiBw
eS5wYXRoLnN2bndjLnN0YXR1cygpIG5vdyBpcyBtb3JlIGNvbXBsZXRlIGFuZAotICB1c2VzIHht
bCBvdXRwdXQgZnJvbSB0aGUgJ3N2bicgY29tbWFuZCBpZiBhdmFpbGFibGUKLSAgKEd1aWRvIFdl
c2RvcnApCi0KLSogZml4IGZvciBweS5wYXRoLnN2biogdG8gd29yayB3aXRoIHN2biAxLjUKLSAg
KENocmlzIExhbWIpCi0KLSogZml4IHBhdGgucmVsdG8ob3RoZXJwYXRoKSBtZXRob2Qgb24gd2lu
ZG93cyB0bwotICB1c2Ugbm9ybWNhc2UgZm9yIGNoZWNraW5nIGlmIGEgcGF0aCBpcyByZWxhdGl2
ZS4KLQotKiBweS50ZXN0J3MgdHJhY2ViYWNrIGlzIGJldHRlciBwYXJzZWFibGUgZnJvbSBlZGl0
b3JzCi0gIChmb2xsb3dzIHRoZSBmaWxlbmFtZXM6TElORU5POiBNU0cgY29udmVudGlvbikKLSAg
KHRoYW5rcyB0byBPc21vIFNhbG9tYWEpCi0KLSogZml4IHRvIGphdmFzY3JpcHQtZ2VuZXJhdGlv
biwgInB5LnRlc3QgLS1ydW5icm93c2VyIgotICBzaG91bGQgd29yayBtb3JlIHJlbGlhYmx5IG5v
dwotCi0qIHJlbW92ZWQgcHJldmlvdXNseSBhY2NpZGVudGFsbHkgYWRkZWQKLSAgcHkudGVzdC5i
cm9rZW4gYW5kIHB5LnRlc3Qubm90aW1wbGVtZW50ZWQgaGVscGVycy4KLQotKiB0aGVyZSBub3cg
aXMgYSBweS5fX3ZlcnNpb25fXyBhdHRyaWJ1dGUKLQotMC45LjEKLT09PT09Ci0KLVRoaXMgaXMg
YSBmYWlybHkgY29tcGxldGUgbGlzdCBvZiB2MC45LjEsIHdoaWNoIGNhbgotc2VydmUgYXMgYSBy
ZWZlcmVuY2UgZm9yIGRldmVsb3BlcnMuCi0KLSogYWxsb3dpbmcgKyBzaWducyBpbiBweS5wYXRo
LnN2biB1cmxzIFszOTEwNl0KLSogZml4ZWQgc3VwcG9ydCBmb3IgRmFpbGVkIGV4Y2VwdGlvbnMg
d2l0aG91dCBleGNpbmZvIGluIHB5LnRlc3QgWzM5MzQwXQotKiBhZGRlZCBzdXBwb3J0IGZvciBr
aWxsaW5nIHByb2Nlc3NlcyBmb3IgV2luZG93cyAoYXMgd2VsbCBhcyBwbGF0Zm9ybXMgdGhhdAot
ICBzdXBwb3J0IG9zLmtpbGwpIGluIHB5Lm1pc2Mua2lsbHByb2MgWzM5NjU1XQotKiBhZGRlZCBz
ZXR1cC90ZWFyZG93biBmb3IgZ2VuZXJhdGl2ZSB0ZXN0cyB0byBweS50ZXN0IFs0MDcwMl0KLSog
YWRkZWQgZGV0ZWN0aW9uIG9mIEZBSUxFRCBUTyBMT0FEIE1PRFVMRSB0byBweS50ZXN0IFs0MDcw
MywgNDA3MzgsIDQwNzM5XQotKiBmaXhlZCBwcm9ibGVtIHdpdGggY2FsbGluZyAucmVtb3ZlKCkg
b24gd2NwYXRocyBvZiBub24tdmVyc2lvbmVkIGZpbGVzIGluCi0gIHB5LnBhdGggWzQ0MjQ4XQot
KiBmaXhlZCBzb21lIGltcG9ydCBhbmQgaW5oZXJpdGFuY2UgaXNzdWVzIGluIHB5LnRlc3QgWzQx
NDgwLCA0NDY0OCwgNDQ2NTVdCi0qIGZhaWwgdG8gcnVuIGdyZWVubGV0IHRlc3RzIHdoZW4gcHlw
eSBpcyBhdmFpbGFibGUsIGJ1dCB3aXRob3V0IHN0YWNrbGVzcwotICBbNDUyOTRdCi0qIHNtYWxs
IGZpeGVzIGluIHJzZXNzaW9uIHRlc3RzIFs0NTI5NV0KLSogZml4ZWQgaXNzdWUgd2l0aCAyLjUg
dHlwZSByZXByZXNlbnRhdGlvbnMgaW4gcHkudGVzdCBbNDU0ODMsIDQ1NDg0XQotKiBtYWRlIHRo
YXQgaW50ZXJuYWwgcmVwb3J0aW5nIGlzc3VlcyBkaXNwbGF5aW5nIGlzIGRvbmUgYXRvbWljYWxs
eSBpbiBweS50ZXN0Ci0gIFs0NTUxOF0KLSogbWFkZSB0aGF0IG5vbi1leGlzdGluZyBmaWxlcyBh
cmUgaWdub3JlZCBieSB0aGUgcHkubG9va3VwIHNjcmlwdCBbNDU1MTldCi0qIGltcHJvdmVkIGV4
Y2VwdGlvbiBuYW1lIGNyZWF0aW9uIGluIHB5LnRlc3QgWzQ1NTM1XQotKiBtYWRlIHRoYXQgbGVz
cyB0aHJlYWRzIGFyZSB1c2VkIGluIGV4ZWNuZXQgW21lcmdlIGluIDQ1NTM5XQotKiByZW1vdmVk
IGxvY2sgcmVxdWlyZWQgZm9yIGF0b21pYyByZXBvcnRpbmcgaXNzdWUgZGlzcGxheWluZyBpbiBw
eS50ZXN0Ci0gIFs0NTU0NV0KLSogcmVtb3ZlZCBnbG9iYWxzIGZyb20gZXhlY25ldCBbNDU1NDEs
IDQ1NTQ3XQotKiByZWZhY3RvcmVkIGNsZWFudXAgbWVjaGFuaWNzLCBtYWRlIHRoYXQgc2V0RGFl
bW9uIGlzIHNldCB0byAxIHRvIG1ha2UgYXRleGl0Ci0gIGdldCBjYWxsZWQgaW4gMi41IChweS5l
eGVjbmV0KSBbNDU1NDhdCi0qIGZpeGVkIGJ1ZyBpbiBqb2luaW5nIHRocmVhZHMgaW4gcHkuZXhl
Y25ldCdzIHNlcnZlbWFpbiBbNDU1NDldCi0qIHJlZmFjdG9yZWQgcHkudGVzdC5yc2Vzc2lvbiB0
ZXN0cyB0byBub3QgcmVseSBvbiBleGFjdCBvdXRwdXQgZm9ybWF0IGFueW1vcmUKLSAgWzQ1NjQ2
XQotKiB1c2luZyByZXByKCkgb24gdGVzdCBvdXRjb21lIFs0NTY0N10KLSogYWRkZWQgJ1JlYXNv
bicgY2xhc3NlcyBmb3IgcHkudGVzdC5za2lwKCkgWzQ1NjQ4LCA0NTY0OV0KLSoga2lsbGVkIHNv
bWUgdW5uZWNlc3Nhcnkgc2FuaXR5IGNoZWNrIGluIHB5LnRlc3QuY29sbGVjdCBbNDU2NTVdCi0q
IGF2b2lkIHVzaW5nIG9zLnRtcGZpbGUoKSBpbiBweS5pby5mZGNhcHR1cmUgYmVjYXVzZSBvbiBX
aW5kb3dzIGl0J3Mgb25seQotICB1c2FibGUgYnkgQWRtaW5pc3RyYXRvcnMgWzQ1OTAxXQotKiBh
ZGRlZCBzdXBwb3J0IGZvciBsb2NraW5nIGFuZCBub24tcmVjdXJzaXZlIGNvbW1pdHMgdG8gcHku
cGF0aC5zdm53YyBbNDU5OTRdCi0qIGxvY2tpbmcgZmlsZXMgaW4gcHkuZXhlY25ldCB0byBwcmV2
ZW50IENQeXRob24gZnJvbSBzZWdmYXVsdGluZyBbNDYwMTBdCi0qIGFkZGVkIGV4cG9ydCgpIG1l
dGhvZCB0byBweS5wYXRoLnN2bnVybAotKiBmaXhlZCAtZCAteCBpbiBweS50ZXN0IFs0NzI3N10K
LSogZml4ZWQgYXJndW1lbnQgY29uY2F0ZW5hdGlvbiBwcm9ibGVtIGluIHB5LnBhdGguc3Zud2Mg
WzQ5NDIzXQotKiByZXN0b3JlIHB5LnRlc3QgYmVoYXZpb3VyIHRoYXQgaXQgZXhpdHMgd2l0aCBj
b2RlIDEgd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMKLSAgWzQ5OTc0XQotKiBkb24ndCBmYWlsIG9u
IGh0bWwgZmlsZXMgdGhhdCBkb24ndCBoYXZlIGFuIGFjY29tcGFueWluZyAudHh0IGZpbGUgWzUw
NjA2XQotKiBmaXhlZCAndXRlc3Rjb252ZXJ0LnB5IDwgaW5wdXQnIFs1MDY0NV0KLSogc21hbGwg
Zml4IGZvciBjb2RlIGluZGVudGF0aW9uIGluIHB5LmNvZGUuc291cmNlIFs1MDc1NV0KLSogZml4
IF9kb2NnZW4ucHkgZG9jdW1lbnRhdGlvbiBidWlsZGluZyBbNTEyODVdCi0qIGltcHJvdmVkIGNo
ZWNrcyBmb3Igc291cmNlIHJlcHJlc2VudGF0aW9uIG9mIGNvZGUgYmxvY2tzIGluIHB5LnRlc3Qg
WzUxMjkyXQotKiBhZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGF1dGhlbnRpY2F0aW9uIHRvIHB5
LnBhdGguc3ZuKiBvYmplY3RzIFs1MjAwMCwKLSAgNTIwMDFdCi0qIHJlbW92ZWQgc29ydGVkKCkg
Y2FsbCBmb3IgcHkuYXBpZ2VuIHRlc3RzIGluIGZhdm91ciBvZiBbXS5zb3J0KCkgdG8gc3VwcG9y
dAotICBQeXRob24gMi4zIFs1MjQ4MV0KK1RoZSBzb3VyY2UgZG9jdW1lbnQgY2FuIGJlIGZvdW5k
IGF0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvYmxvYi9tYXN0ZXIvZG9j
L2VuL2NoYW5nZWxvZy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NJVEFUSU9OIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvQ0lUQVRJT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kNGU5ZDhlYzdhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DSVRBVElPTgpA
QCAtMCwwICsxLDE2IEBACitOT1RFOiBDaGFuZ2UgIngueSIgYnkgdGhlIHZlcnNpb24geW91IHVz
ZS4gSWYgeW91IGFyZSB1bnN1cmUgYWJvdXQgd2hpY2ggdmVyc2lvbgoreW91IGFyZSB1c2luZyBy
dW46IGBwaXAgc2hvdyBweXRlc3RgLgorCitUZXh0OgorCitbcHl0ZXN0XSBweXRlc3QgeC55LCAy
MDA0CitLcmVrZWwgZXQgYWwuLCBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QK
KworQmliVGVYOgorCitAbWlzY3tweXRlc3R4LnksCisgIHRpdGxlID0gICAgICAgIHtweXRlc3Qg
eC55fSwKKyAgYXV0aG9yID0ge0tyZWtlbCwgSG9sZ2VyIGFuZCBPbGl2ZWlyYSwgQnJ1bm8gYW5k
IFBmYW5uc2NobWlkdCwgUm9ubnkgYW5kIEJydXlub29naGUsIEZsb3JpcyBhbmQgTGF1Z2hlciwg
QnJpYW5uYSBhbmQgQnJ1aGluLCBGbG9yaWFufSwKKyAgeWVhciA9ICAgICAgICAgezIwMDR9LAor
ICB1cmwgPSB7aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0fSwKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L0NPREVfT0ZfQ09ORFVDVC5tZCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NPREVf
T0ZfQ09ORFVDVC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYw
Y2EzMDRiZTRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NPREVfT0ZfQ09ORFVD
VC5tZApAQCAtMCwwICsxLDgzIEBACisjIENvbnRyaWJ1dG9yIENvdmVuYW50IENvZGUgb2YgQ29u
ZHVjdAorCisjIyBPdXIgUGxlZGdlCisKK0luIHRoZSBpbnRlcmVzdCBvZiBmb3N0ZXJpbmcgYW4g
b3BlbiBhbmQgd2VsY29taW5nIGVudmlyb25tZW50LCB3ZSBhcworY29udHJpYnV0b3JzIGFuZCBt
YWludGFpbmVycyBwbGVkZ2UgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gb3VyIHByb2plY3Qg
YW5kCitvdXIgY29tbXVuaXR5IGEgaGFyYXNzbWVudC1mcmVlIGV4cGVyaWVuY2UgZm9yIGV2ZXJ5
b25lLCByZWdhcmRsZXNzIG9mIGFnZSwgYm9keQorc2l6ZSwgZGlzYWJpbGl0eSwgZXRobmljaXR5
LCBzZXggY2hhcmFjdGVyaXN0aWNzLCBnZW5kZXIgaWRlbnRpdHkgYW5kIGV4cHJlc3Npb24sCits
ZXZlbCBvZiBleHBlcmllbmNlLCBlZHVjYXRpb24sIHNvY2lvLWVjb25vbWljIHN0YXR1cywgbmF0
aW9uYWxpdHksIHBlcnNvbmFsCithcHBlYXJhbmNlLCByYWNlLCByZWxpZ2lvbiwgb3Igc2V4dWFs
IGlkZW50aXR5IGFuZCBvcmllbnRhdGlvbi4KKworIyMgT3VyIFN0YW5kYXJkcworCitFeGFtcGxl
cyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNyZWF0aW5nIGEgcG9zaXRpdmUgZW52
aXJvbm1lbnQKK2luY2x1ZGU6CisKKyogVXNpbmcgd2VsY29taW5nIGFuZCBpbmNsdXNpdmUgbGFu
Z3VhZ2UKKyogQmVpbmcgcmVzcGVjdGZ1bCBvZiBkaWZmZXJpbmcgdmlld3BvaW50cyBhbmQgZXhw
ZXJpZW5jZXMKKyogR3JhY2VmdWxseSBhY2NlcHRpbmcgY29uc3RydWN0aXZlIGNyaXRpY2lzbQor
KiBGb2N1c2luZyBvbiB3aGF0IGlzIGJlc3QgZm9yIHRoZSBjb21tdW5pdHkKKyogU2hvd2luZyBl
bXBhdGh5IHRvd2FyZHMgb3RoZXIgY29tbXVuaXR5IG1lbWJlcnMKKworRXhhbXBsZXMgb2YgdW5h
Y2NlcHRhYmxlIGJlaGF2aW9yIGJ5IHBhcnRpY2lwYW50cyBpbmNsdWRlOgorCisqIFRoZSB1c2Ug
b2Ygc2V4dWFsaXplZCBsYW5ndWFnZSBvciBpbWFnZXJ5IGFuZCB1bndlbGNvbWUgc2V4dWFsIGF0
dGVudGlvbiBvcgorIGFkdmFuY2VzCisqIFRyb2xsaW5nLCBpbnN1bHRpbmcvZGVyb2dhdG9yeSBj
b21tZW50cywgYW5kIHBlcnNvbmFsIG9yIHBvbGl0aWNhbCBhdHRhY2tzCisqIFB1YmxpYyBvciBw
cml2YXRlIGhhcmFzc21lbnQKKyogUHVibGlzaGluZyBvdGhlcnMnIHByaXZhdGUgaW5mb3JtYXRp
b24sIHN1Y2ggYXMgYSBwaHlzaWNhbCBvciBlbGVjdHJvbmljCisgYWRkcmVzcywgd2l0aG91dCBl
eHBsaWNpdCBwZXJtaXNzaW9uCisqIE90aGVyIGNvbmR1Y3Qgd2hpY2ggY291bGQgcmVhc29uYWJs
eSBiZSBjb25zaWRlcmVkIGluYXBwcm9wcmlhdGUgaW4gYQorIHByb2Zlc3Npb25hbCBzZXR0aW5n
CisKKyMjIE91ciBSZXNwb25zaWJpbGl0aWVzCisKK1Byb2plY3QgbWFpbnRhaW5lcnMgYXJlIHJl
c3BvbnNpYmxlIGZvciBjbGFyaWZ5aW5nIHRoZSBzdGFuZGFyZHMgb2YgYWNjZXB0YWJsZQorYmVo
YXZpb3IgYW5kIGFyZSBleHBlY3RlZCB0byB0YWtlIGFwcHJvcHJpYXRlIGFuZCBmYWlyIGNvcnJl
Y3RpdmUgYWN0aW9uIGluCityZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9mIHVuYWNjZXB0YWJs
ZSBiZWhhdmlvci4KKworUHJvamVjdCBtYWludGFpbmVycyBoYXZlIHRoZSByaWdodCBhbmQgcmVz
cG9uc2liaWxpdHkgdG8gcmVtb3ZlLCBlZGl0LCBvcgorcmVqZWN0IGNvbW1lbnRzLCBjb21taXRz
LCBjb2RlLCB3aWtpIGVkaXRzLCBpc3N1ZXMsIGFuZCBvdGhlciBjb250cmlidXRpb25zCit0aGF0
IGFyZSBub3QgYWxpZ25lZCB0byB0aGlzIENvZGUgb2YgQ29uZHVjdCwgb3IgdG8gYmFuIHRlbXBv
cmFyaWx5IG9yCitwZXJtYW5lbnRseSBhbnkgY29udHJpYnV0b3IgZm9yIG90aGVyIGJlaGF2aW9y
cyB0aGF0IHRoZXkgZGVlbSBpbmFwcHJvcHJpYXRlLAordGhyZWF0ZW5pbmcsIG9mZmVuc2l2ZSwg
b3IgaGFybWZ1bC4KKworIyMgU2NvcGUKKworVGhpcyBDb2RlIG9mIENvbmR1Y3QgYXBwbGllcyBi
b3RoIHdpdGhpbiBwcm9qZWN0IHNwYWNlcyBhbmQgaW4gcHVibGljIHNwYWNlcword2hlbiBhbiBp
bmRpdmlkdWFsIGlzIHJlcHJlc2VudGluZyB0aGUgcHJvamVjdCBvciBpdHMgY29tbXVuaXR5LiBF
eGFtcGxlcyBvZgorcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5jbHVkZSB1
c2luZyBhbiBvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbAorYWRkcmVzcywgcG9zdGluZyB2aWEgYW4g
b2ZmaWNpYWwgc29jaWFsIG1lZGlhIGFjY291bnQsIG9yIGFjdGluZyBhcyBhbiBhcHBvaW50ZWQK
K3JlcHJlc2VudGF0aXZlIGF0IGFuIG9ubGluZSBvciBvZmZsaW5lIGV2ZW50LiBSZXByZXNlbnRh
dGlvbiBvZiBhIHByb2plY3QgbWF5IGJlCitmdXJ0aGVyIGRlZmluZWQgYW5kIGNsYXJpZmllZCBi
eSBwcm9qZWN0IG1haW50YWluZXJzLgorCisjIyBFbmZvcmNlbWVudAorCitJbnN0YW5jZXMgb2Yg
YWJ1c2l2ZSwgaGFyYXNzaW5nLCBvciBvdGhlcndpc2UgdW5hY2NlcHRhYmxlIGJlaGF2aW9yIG1h
eSBiZQorcmVwb3J0ZWQgYnkgY29udGFjdGluZyB0aGUgcHJvamVjdCB0ZWFtIGF0IGNvY0BweXRl
c3Qub3JnLiBBbGwKK2NvbXBsYWludHMgd2lsbCBiZSByZXZpZXdlZCBhbmQgaW52ZXN0aWdhdGVk
IGFuZCB3aWxsIHJlc3VsdCBpbiBhIHJlc3BvbnNlIHRoYXQKK2lzIGRlZW1lZCBuZWNlc3Nhcnkg
YW5kIGFwcHJvcHJpYXRlIHRvIHRoZSBjaXJjdW1zdGFuY2VzLiBUaGUgcHJvamVjdCB0ZWFtIGlz
CitvYmxpZ2F0ZWQgdG8gbWFpbnRhaW4gY29uZmlkZW50aWFsaXR5IHdpdGggcmVnYXJkIHRvIHRo
ZSByZXBvcnRlciBvZiBhbiBpbmNpZGVudC4KK0Z1cnRoZXIgZGV0YWlscyBvZiBzcGVjaWZpYyBl
bmZvcmNlbWVudCBwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNlcGFyYXRlbHkuCisKK1Byb2plY3Qg
bWFpbnRhaW5lcnMgd2hvIGRvIG5vdCBmb2xsb3cgb3IgZW5mb3JjZSB0aGUgQ29kZSBvZiBDb25k
dWN0IGluIGdvb2QKK2ZhaXRoIG1heSBmYWNlIHRlbXBvcmFyeSBvciBwZXJtYW5lbnQgcmVwZXJj
dXNzaW9ucyBhcyBkZXRlcm1pbmVkIGJ5IG90aGVyCittZW1iZXJzIG9mIHRoZSBwcm9qZWN0J3Mg
bGVhZGVyc2hpcC4KKworVGhlIGNvY0BweXRlc3Qub3JnIGFkZHJlc3MgaXMgcm91dGVkIHRvIHRo
ZSBmb2xsb3dpbmcgcGVvcGxlIHdobyBjYW4gYWxzbyBiZQorY29udGFjdGVkIGluZGl2aWR1YWxs
eToKKworLSBCcmlhbm5hIExhdWdoZXIgKFtAcGZjdGRheWVsaXNlXShodHRwczovL2dpdGh1Yi5j
b20vcGZjdGRheWVsaXNlKSk6IGJyaWFubmFAbGF1Z2hlci5pZC5hdQorLSBCcnVubyBPbGl2ZWly
YSAoW0BuaWNvZGRlbXVzXShodHRwczovL2dpdGh1Yi5jb20vbmljb2RkZW11cykpOiBuaWNvZGRl
bXVzQGdtYWlsLmNvbQorLSBGbG9yaWFuIEJydWhpbiAoW0B0aGUtY29tcGlsZXJdKGh0dHBzOi8v
Z2l0aHViLmNvbS90aGUtY29tcGlsZXIpKTogcHl0ZXN0QHRoZS1jb21waWxlci5vcmcKKworIyMg
QXR0cmlidXRpb24KKworVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBb
Q29udHJpYnV0b3IgQ292ZW5hbnRdW2hvbWVwYWdlXSwgdmVyc2lvbiAxLjQsCithdmFpbGFibGUg
YXQgaHR0cHM6Ly93d3cuY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS80L2NvZGUt
b2YtY29uZHVjdC5odG1sCisKK1tob21lcGFnZV06IGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNv
dmVuYW50Lm9yZworCitGb3IgYW5zd2VycyB0byBjb21tb24gcXVlc3Rpb25zIGFib3V0IHRoaXMg
Y29kZSBvZiBjb25kdWN0LCBzZWUKK2h0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9y
Zy9mYXEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0NPTlRSSUJVVElORy5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9DT05UUklCVVRJTkcucnN0CmluZGV4IGMwMDVjMmZiMjU0NS4uNDhiYTE0N2I3ZGI4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DT05UUklCVVRJTkcucnN0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L0NPTlRSSUJVVElORy5yc3QKQEAgLTIsMTEgKzIsMTIgQEAKIENvbnRyaWJ1dGlvbiBnZXR0aW5n
IHN0YXJ0ZWQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQ29udHJpYnV0aW9ucyBh
cmUgaGlnaGx5IHdlbGNvbWVkIGFuZCBhcHByZWNpYXRlZC4gIEV2ZXJ5IGxpdHRsZSBoZWxwIGNv
dW50cywKK0NvbnRyaWJ1dGlvbnMgYXJlIGhpZ2hseSB3ZWxjb21lZCBhbmQgYXBwcmVjaWF0ZWQu
ICBFdmVyeSBsaXR0bGUgYml0IG9mIGhlbHAgY291bnRzLAogc28gZG8gbm90IGhlc2l0YXRlIQog
Ci0uLiBjb250ZW50czo6IENvbnRyaWJ1dGlvbiBsaW5rcworLi4gY29udGVudHM6OgogICAgOmRl
cHRoOiAyCisgICA6YmFja2xpbmtzOiBub25lCiAKIAogLi4gX3N1Ym1pdGZlZWRiYWNrOgpAQCAt
NTAsNyArNTEsOCBAQCBGaXggYnVncwogCiBMb29rIHRocm91Z2ggdGhlIGBHaXRIdWIgaXNzdWVz
IGZvciBidWdzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvbGFiZWxzL3R5
cGU6JTIwYnVnPmBfLgogCi06cmVmOmBUYWxrIDxjb250YWN0PmAgdG8gZGV2ZWxvcGVycyB0byBm
aW5kIG91dCBob3cgeW91IGNhbiBmaXggc3BlY2lmaWMgYnVncy4KKzpyZWY6YFRhbGsgPGNvbnRh
Y3Q+YCB0byBkZXZlbG9wZXJzIHRvIGZpbmQgb3V0IGhvdyB5b3UgY2FuIGZpeCBzcGVjaWZpYyBi
dWdzLiBUbyBpbmRpY2F0ZSB0aGF0IHlvdSBhcmUgZ29pbmcKK3RvIHdvcmsgb24gYSBwYXJ0aWN1
bGFyIGlzc3VlLCBhZGQgYSBjb21tZW50IHRvIHRoYXQgZWZmZWN0IG9uIHRoZSBzcGVjaWZpYyBp
c3N1ZS4KIAogRG9uJ3QgZm9yZ2V0IHRvIGNoZWNrIHRoZSBpc3N1ZSB0cmFja2VycyBvZiB5b3Vy
IGZhdm91cml0ZSBwbHVnaW5zLCB0b28hCiAKQEAgLTg0LDkgKzg2LDQwIEBAIHdpdGhvdXQgdXNp
bmcgYSBsb2NhbCBjb3B5LiAgVGhpcyBjYW4gYmUgY29udmVuaWVudCBmb3Igc21hbGwgZml4ZXMu
CiAKICAgICAgICAgJCB0b3ggLWUgZG9jcwogCi0gICAgVGhlIGJ1aWx0IGRvY3VtZW50YXRpb24g
c2hvdWxkIGJlIGF2YWlsYWJsZSBpbiB0aGUgYGBkb2MvZW4vX2J1aWxkL2BgLgorICAgIFRoZSBi
dWlsdCBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSBhdmFpbGFibGUgaW4gYGBkb2MvZW4vX2J1aWxk
L2h0bWxgYCwKKyAgICB3aGVyZSAnZW4nIHJlZmVycyB0byB0aGUgZG9jdW1lbnRhdGlvbiBsYW5n
dWFnZS4KKworUHl0ZXN0IGhhcyBhbiBBUEkgcmVmZXJlbmNlIHdoaWNoIGluIGxhcmdlIHBhcnQg
aXMKK2BnZW5lcmF0ZWQgYXV0b21hdGljYWxseSA8aHR0cHM6Ly93d3cuc3BoaW54LWRvYy5vcmcv
ZW4vbWFzdGVyL3VzYWdlL2V4dGVuc2lvbnMvYXV0b2RvYy5odG1sPmBfCitmcm9tIHRoZSBkb2Nz
dHJpbmdzIG9mIHRoZSBkb2N1bWVudGVkIGl0ZW1zLiBQeXRlc3QgdXNlcyB0aGUKK2BTcGhpbngg
ZG9jc3RyaW5nIGZvcm1hdCA8aHR0cHM6Ly9zcGhpbngtcnRkLXR1dG9yaWFsLnJlYWR0aGVkb2Nz
LmlvL2VuL2xhdGVzdC9kb2NzdHJpbmdzLmh0bWw+YF8uCitGb3IgZXhhbXBsZToKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIG15X2Z1bmN0aW9uKGFyZzogQXJnVHlwZSkgLT4g
Rm9vOgorICAgICAgICAiIiJEbyBpbXBvcnRhbnQgc3R1ZmYuCisKKyAgICAgICAgTW9yZSBkZXRh
aWxlZCBpbmZvIGhlcmUsIGluIHNlcGFyYXRlIHBhcmFncmFwaHMgZnJvbSB0aGUgc3ViamVjdCBs
aW5lLgorICAgICAgICBVc2UgcHJvcGVyIHNlbnRlbmNlcyAtLSBzdGFydCBzZW50ZW5jZXMgd2l0
aCBjYXBpdGFsIGxldHRlcnMgYW5kIGVuZAorICAgICAgICB3aXRoIHBlcmlvZHMuCisKKyAgICAg
ICAgQ2FuIGluY2x1ZGUgYW5ub3RhdGVkIGRvY3VtZW50YXRpb246CisKKyAgICAgICAgOnBhcmFt
IHNob3J0X2FyZzogQW4gYXJndW1lbnQgd2hpY2ggZGV0ZXJtaW5lcyBzdHVmZi4KKyAgICAgICAg
OnBhcmFtIGxvbmdfYXJnOgorICAgICAgICAgICAgQSBsb25nIGV4cGxhbmF0aW9uIHdoaWNoIHNw
YW5zIG11bHRpcGxlIGxpbmVzLCBvdmVyZmxvd3MKKyAgICAgICAgICAgIGxpa2UgdGhpcy4KKyAg
ICAgICAgOnJldHVybnM6IFRoZSByZXN1bHQuCisgICAgICAgIDpyYWlzZXMgVmFsdWVFcnJvcjoK
KyAgICAgICAgICAgIERldGFpbGVkIGluZm9ybWF0aW9uIHdoZW4gdGhpcyBjYW4gaGFwcGVuLgor
CisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDYuMAorCisgICAgICAgIEluY2x1ZGluZyB0eXBl
cyBpbnRvIHRoZSBhbm5vdGF0aW9ucyBhYm92ZSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4KKyAgICAg
ICAgdHlwZS1oaW50aW5nIGlzIGJlaW5nIHVzZWQgKGFzIGluIHRoaXMgZXhhbXBsZSkuCisgICAg
ICAgICIiIgogCi0gICAgV2hlcmUgJ2VuJyByZWZlcnMgdG8gdGhlIGRvY3VtZW50YXRpb24gbGFu
Z3VhZ2UuCiAKIC4uIF9zdWJtaXRwbHVnaW46CiAKQEAgLTk4LDggKzEzMSw2IEBAIGluIHJlcG9z
aXRvcmllcyBsaXZpbmcgdW5kZXIgdGhlIGBgcHl0ZXN0LWRldmBgIG9yZ2FuaXNhdGlvbnM6CiAK
IC0gYHB5dGVzdC1kZXYgb24gR2l0SHViIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldj5g
XwogCi0tIGBweXRlc3QtZGV2IG9uIEJpdGJ1Y2tldCA8aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5
dGVzdC1kZXY+YF8KLQogQWxsIHB5dGVzdC1kZXYgQ29udHJpYnV0b3JzIHRlYW0gbWVtYmVycyBo
YXZlIHdyaXRlIGFjY2VzcyB0byBhbGwgY29udGFpbmVkCiByZXBvc2l0b3JpZXMuICBQeXRlc3Qg
Y29yZSBhbmQgcGx1Z2lucyBhcmUgZ2VuZXJhbGx5IGRldmVsb3BlZAogdXNpbmcgYHB1bGwgcmVx
dWVzdHNgXyB0byByZXNwZWN0aXZlIHJlcG9zaXRvcmllcy4KQEAgLTExNSwyMCArMTQ2LDIxIEBA
IFlvdSBjYW4gc3VibWl0IHlvdXIgcGx1Z2luIGJ5IHN1YnNjcmliaW5nIHRvIHRoZSBgcHl0ZXN0
LWRldiBtYWlsIGxpc3QKIG1haWwgcG9pbnRpbmcgdG8geW91ciBleGlzdGluZyBweXRlc3QgcGx1
Z2luIHJlcG9zaXRvcnkgd2hpY2ggbXVzdCBoYXZlCiB0aGUgZm9sbG93aW5nOgogCi0tIFB5UEkg
cHJlc2VuY2Ugd2l0aCBhIGBgc2V0dXAucHlgYCB0aGF0IGNvbnRhaW5zIGEgbGljZW5zZSwgYGBw
eXRlc3QtYGAKKy0gUHlQSSBwcmVzZW5jZSB3aXRoIHBhY2thZ2luZyBtZXRhZGF0YSB0aGF0IGNv
bnRhaW5zIGEgYGBweXRlc3QtYGAKICAgcHJlZml4ZWQgbmFtZSwgdmVyc2lvbiBudW1iZXIsIGF1
dGhvcnMsIHNob3J0IGFuZCBsb25nIGRlc2NyaXB0aW9uLgogCi0tIGEgYGB0b3guaW5pYGAgZm9y
IHJ1bm5pbmcgdGVzdHMgdXNpbmcgYHRveCA8aHR0cHM6Ly90b3gucmVhZHRoZWRvY3MuaW8+YF8u
CistIGEgIGB0b3ggY29uZmlndXJhdGlvbiA8aHR0cHM6Ly90b3gucmVhZHRoZWRvY3MuaW8vZW4v
bGF0ZXN0L2NvbmZpZy5odG1sI2NvbmZpZ3VyYXRpb24tZGlzY292ZXJ5PmBfCisgIGZvciBydW5u
aW5nIHRlc3RzIHVzaW5nIGB0b3ggPGh0dHBzOi8vdG94LnJlYWR0aGVkb2NzLmlvPmBfLgogCi0t
IGEgYGBSRUFETUUudHh0YGAgZGVzY3JpYmluZyBob3cgdG8gdXNlIHRoZSBwbHVnaW4gYW5kIG9u
IHdoaWNoCistIGEgYGBSRUFETUVgYCBkZXNjcmliaW5nIGhvdyB0byB1c2UgdGhlIHBsdWdpbiBh
bmQgb24gd2hpY2gKICAgcGxhdGZvcm1zIGl0IHJ1bnMuCiAKLS0gYSBgYExJQ0VOU0UudHh0YGAg
ZmlsZSBvciBlcXVpdmFsZW50IGNvbnRhaW5pbmcgdGhlIGxpY2Vuc2luZwotICBpbmZvcm1hdGlv
biwgd2l0aCBtYXRjaGluZyBpbmZvIGluIGBgc2V0dXAucHlgYC4KKy0gYSBgYExJQ0VOU0VgYCBm
aWxlIGNvbnRhaW5pbmcgdGhlIGxpY2Vuc2luZyBpbmZvcm1hdGlvbiwgd2l0aAorICBtYXRjaGlu
ZyBpbmZvIGluIGl0cyBwYWNrYWdpbmcgbWV0YWRhdGEuCiAKIC0gYW4gaXNzdWUgdHJhY2tlciBm
b3IgYnVnIHJlcG9ydHMgYW5kIGVuaGFuY2VtZW50IHJlcXVlc3RzLgogCi0tIGEgYGNoYW5nZWxv
ZyA8aHR0cDovL2tlZXBhY2hhbmdlbG9nLmNvbS8+YF8KKy0gYSBgY2hhbmdlbG9nIDxodHRwOi8v
a2VlcGFjaGFuZ2Vsb2cuY29tLz5gXy4KIAogSWYgbm8gY29udHJpYnV0b3Igc3Ryb25nbHkgb2Jq
ZWN0cyBhbmQgdHdvIGFncmVlLCB0aGUgcmVwb3NpdG9yeSBjYW4gdGhlbiBiZQogdHJhbnNmZXJy
ZWQgdG8gdGhlIGBgcHl0ZXN0LWRldmBgIG9yZ2FuaXNhdGlvbi4KQEAgLTE2NCwxOCArMTk2LDE4
IEBAIFNob3J0IHZlcnNpb24KIAogIy4gRm9yayB0aGUgcmVwb3NpdG9yeS4KICMuIEVuYWJsZSBh
bmQgaW5zdGFsbCBgcHJlLWNvbW1pdCA8aHR0cHM6Ly9wcmUtY29tbWl0LmNvbT5gXyB0byBlbnN1
cmUgc3R5bGUtZ3VpZGVzIGFuZCBjb2RlIGNoZWNrcyBhcmUgZm9sbG93ZWQuCi0jLiBUYXJnZXQg
YGBtYXN0ZXJgYCBmb3IgYnVnZml4ZXMgYW5kIGRvYyBjaGFuZ2VzLgotIy4gVGFyZ2V0IGBgZmVh
dHVyZXNgYCBmb3IgbmV3IGZlYXR1cmVzIG9yIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KLSMuIEZv
bGxvdyAqKlBFUC04KiogZm9yIG5hbWluZyBhbmQgYGJsYWNrIDxodHRwczovL2dpdGh1Yi5jb20v
YW1idi9ibGFjaz5gXyBmb3IgZm9ybWF0dGluZy4KKyMuIEZvbGxvdyAqKlBFUC04KiogZm9yIG5h
bWluZyBhbmQgYGJsYWNrIDxodHRwczovL2dpdGh1Yi5jb20vcHNmL2JsYWNrPmBfIGZvciBmb3Jt
YXR0aW5nLgogIy4gVGVzdHMgYXJlIHJ1biB1c2luZyBgYHRveGBgOjoKIAotICAgIHRveCAtZSBs
aW50aW5nLHB5MjcscHkzNgorICAgIHRveCAtZSBsaW50aW5nLHB5MzcKIAogICAgVGhlIHRlc3Qg
ZW52aXJvbm1lbnRzIGFib3ZlIGFyZSB1c3VhbGx5IGVub3VnaCB0byBjb3ZlciBtb3N0IGNhc2Vz
IGxvY2FsbHkuCiAKLSMuIFdyaXRlIGEgYGBjaGFuZ2Vsb2dgYCBlbnRyeTogYGBjaGFuZ2Vsb2cv
MjU3NC5idWdmaXhgYCwgdXNlIGlzc3VlIGlkIG51bWJlcgotICAgYW5kIG9uZSBvZiBgYGJ1Z2Zp
eGBgLCBgYHJlbW92YWxgYCwgYGBmZWF0dXJlYGAsIGBgdmVuZG9yYGAsIGBgZG9jYGAgb3IKLSAg
IGBgdHJpdmlhbGBgIGZvciB0aGUgaXNzdWUgdHlwZS4KKyMuIFdyaXRlIGEgYGBjaGFuZ2Vsb2dg
YCBlbnRyeTogYGBjaGFuZ2Vsb2cvMjU3NC5idWdmaXgucnN0YGAsIHVzZSBpc3N1ZSBpZCBudW1i
ZXIKKyAgIGFuZCBvbmUgb2YgYGBmZWF0dXJlYGAsIGBgaW1wcm92ZW1lbnRgYCwgYGBidWdmaXhg
YCwgYGBkb2NgYCwgYGBkZXByZWNhdGlvbmBgLAorICAgYGBicmVha2luZ2BgLCBgYHZlbmRvcmBg
IG9yIGBgdHJpdmlhbGBgIGZvciB0aGUgaXNzdWUgdHlwZS4KKworCiAjLiBVbmxlc3MgeW91ciBj
aGFuZ2UgaXMgYSB0cml2aWFsIG9yIGEgZG9jdW1lbnRhdGlvbiBmaXggKGUuZy4sIGEgdHlwbyBv
ciByZXdvcmQgb2YgYSBzbWFsbCBzZWN0aW9uKSBwbGVhc2UKICAgIGFkZCB5b3Vyc2VsZiB0byB0
aGUgYGBBVVRIT1JTYGAgZmlsZSwgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgogCkBAIC0yMDIsMTUg
KzIzNCwxMSBAQCBIZXJlIGlzIGEgc2ltcGxlIG92ZXJ2aWV3LCB3aXRoIHB5dGVzdC1zcGVjaWZp
YyBiaXRzOgogCiAgICAgJCBnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206WU9VUl9HSVRIVUJfVVNF
Uk5BTUUvcHl0ZXN0LmdpdAogICAgICQgY2QgcHl0ZXN0Ci0gICAgIyBub3csIHRvIGZpeCBhIGJ1
ZyBjcmVhdGUgeW91ciBvd24gYnJhbmNoIG9mZiAibWFzdGVyIjoKKyAgICAjIG5vdywgY3JlYXRl
IHlvdXIgb3duIGJyYW5jaCBvZmYgIm1hc3RlciI6CiAKICAgICAgICAgJCBnaXQgY2hlY2tvdXQg
LWIgeW91ci1idWdmaXgtYnJhbmNoLW5hbWUgbWFzdGVyCiAKLSAgICAjIG9yIHRvIGluc3RlYWQg
YWRkIGEgZmVhdHVyZSBjcmVhdGUgeW91ciBvd24gYnJhbmNoIG9mZiAiZmVhdHVyZXMiOgotCi0g
ICAgICAgICQgZ2l0IGNoZWNrb3V0IC1iIHlvdXItZmVhdHVyZS1icmFuY2gtbmFtZSBmZWF0dXJl
cwotCi0gICBHaXZlbiB3ZSBoYXZlICJtYWpvci5taW5vci5taWNybyIgdmVyc2lvbiBudW1iZXJz
LCBidWdmaXhlcyB3aWxsIHVzdWFsbHkKKyAgIEdpdmVuIHdlIGhhdmUgIm1ham9yLm1pbm9yLm1p
Y3JvIiB2ZXJzaW9uIG51bWJlcnMsIGJ1ZyBmaXhlcyB3aWxsIHVzdWFsbHkKICAgIGJlIHJlbGVh
c2VkIGluIG1pY3JvIHJlbGVhc2VzIHdoZXJlYXMgZmVhdHVyZXMgd2lsbCBiZSByZWxlYXNlZCBp
bgogICAgbWlub3IgcmVsZWFzZXMgYW5kIGluY29tcGF0aWJsZSBjaGFuZ2VzIGluIG1ham9yIHJl
bGVhc2VzLgogCkBAIC0yMzcsMzYgKzI2NSw1MSBAQCBIZXJlIGlzIGEgc2ltcGxlIG92ZXJ2aWV3
LCB3aXRoIHB5dGVzdC1zcGVjaWZpYyBiaXRzOgogCiAjLiBSdW4gYWxsIHRoZSB0ZXN0cwogCi0g
ICBZb3UgbmVlZCB0byBoYXZlIFB5dGhvbiAyLjcgYW5kIDMuNiBhdmFpbGFibGUgaW4geW91ciBz
eXN0ZW0uICBOb3cKKyAgIFlvdSBuZWVkIHRvIGhhdmUgUHl0aG9uIDMuNyBhdmFpbGFibGUgaW4g
eW91ciBzeXN0ZW0uICBOb3cKICAgIHJ1bm5pbmcgdGVzdHMgaXMgYXMgc2ltcGxlIGFzIGlzc3Vp
bmcgdGhpcyBjb21tYW5kOjoKIAotICAgICQgdG94IC1lIGxpbnRpbmcscHkyNyxweTM2CisgICAg
JCB0b3ggLWUgbGludGluZyxweTM3CiAKLSAgIFRoaXMgY29tbWFuZCB3aWxsIHJ1biB0ZXN0cyB2
aWEgdGhlICJ0b3giIHRvb2wgYWdhaW5zdCBQeXRob24gMi43IGFuZCAzLjYKKyAgIFRoaXMgY29t
bWFuZCB3aWxsIHJ1biB0ZXN0cyB2aWEgdGhlICJ0b3giIHRvb2wgYWdhaW5zdCBQeXRob24gMy43
CiAgICBhbmQgYWxzbyBwZXJmb3JtICJsaW50IiBjb2Rpbmctc3R5bGUgY2hlY2tzLgogCiAjLiBZ
b3UgY2FuIG5vdyBlZGl0IHlvdXIgbG9jYWwgd29ya2luZyBjb3B5IGFuZCBydW4gdGhlIHRlc3Rz
IGFnYWluIGFzIG5lY2Vzc2FyeS4gUGxlYXNlIGZvbGxvdyBQRVAtOCBmb3IgbmFtaW5nLgogCi0g
ICBZb3UgY2FuIHBhc3MgZGlmZmVyZW50IG9wdGlvbnMgdG8gYGB0b3hgYC4gRm9yIGV4YW1wbGUs
IHRvIHJ1biB0ZXN0cyBvbiBQeXRob24gMi43IGFuZCBwYXNzIG9wdGlvbnMgdG8gcHl0ZXN0Cisg
ICBZb3UgY2FuIHBhc3MgZGlmZmVyZW50IG9wdGlvbnMgdG8gYGB0b3hgYC4gRm9yIGV4YW1wbGUs
IHRvIHJ1biB0ZXN0cyBvbiBQeXRob24gMy43IGFuZCBwYXNzIG9wdGlvbnMgdG8gcHl0ZXN0CiAg
ICAoZS5nLiBlbnRlciBwZGIgb24gZmFpbHVyZSkgdG8gcHl0ZXN0IHlvdSBjYW4gZG86OgogCi0g
ICAgJCB0b3ggLWUgcHkyNyAtLSAtLXBkYgorICAgICQgdG94IC1lIHB5MzcgLS0gLS1wZGIKIAot
ICAgT3IgdG8gb25seSBydW4gdGVzdHMgaW4gYSBwYXJ0aWN1bGFyIHRlc3QgbW9kdWxlIG9uIFB5
dGhvbiAzLjY6OgorICAgT3IgdG8gb25seSBydW4gdGVzdHMgaW4gYSBwYXJ0aWN1bGFyIHRlc3Qg
bW9kdWxlIG9uIFB5dGhvbiAzLjc6OgogCi0gICAgJCB0b3ggLWUgcHkzNiAtLSB0ZXN0aW5nL3Rl
c3RfY29uZmlnLnB5CisgICAgJCB0b3ggLWUgcHkzNyAtLSB0ZXN0aW5nL3Rlc3RfY29uZmlnLnB5
CiAKIAogICAgV2hlbiBjb21taXR0aW5nLCBgYHByZS1jb21taXRgYCB3aWxsIHJlLWZvcm1hdCB0
aGUgZmlsZXMgaWYgbmVjZXNzYXJ5LgogCisjLiBJZiBpbnN0ZWFkIG9mIHVzaW5nIGBgdG94YGAg
eW91IHByZWZlciB0byBydW4gdGhlIHRlc3RzIGRpcmVjdGx5LCB0aGVuIHdlIHN1Z2dlc3QgdG8g
Y3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhbmQgdXNlCisgICBhbiBlZGl0YWJsZSBpbnN0
YWxsIHdpdGggdGhlIGBgdGVzdGluZ2BgIGV4dHJhOjoKKworICAgICAgICQgcHl0aG9uMyAtbSB2
ZW52IC52ZW52CisgICAgICAgJCBzb3VyY2UgLnZlbnYvYmluL2FjdGl2YXRlICAjIExpbnV4Cisg
ICAgICAgJCAudmVudi9TY3JpcHRzL2FjdGl2YXRlLmJhdCAgIyBXaW5kb3dzCisgICAgICAgJCBw
aXAgaW5zdGFsbCAtZSAiLlt0ZXN0aW5nXSIKKworICAgQWZ0ZXJ3YXJkcywgeW91IGNhbiBlZGl0
IHRoZSBmaWxlcyBhbmQgcnVuIHB5dGVzdCBub3JtYWxseTo6CisKKyAgICAgICAkIHB5dGVzdCB0
ZXN0aW5nL3Rlc3RfY29uZmlnLnB5CisKKwogIy4gQ29tbWl0IGFuZCBwdXNoIG9uY2UgeW91ciB0
ZXN0cyBwYXNzIGFuZCB5b3UgYXJlIGhhcHB5IHdpdGggeW91ciBjaGFuZ2Uocyk6OgogCiAgICAg
JCBnaXQgY29tbWl0IC1hIC1tICI8Y29tbWl0IG1lc3NhZ2U+IgogICAgICQgZ2l0IHB1c2ggLXUK
IAotIy4gQ3JlYXRlIGEgbmV3IGNoYW5nZWxvZyBlbnRyeSBpbiBgYGNoYW5nZWxvZ2BgLiBUaGUg
ZmlsZSBzaG91bGQgYmUgbmFtZWQgYGA8aXNzdWVpZD4uPHR5cGU+YGAsCisjLiBDcmVhdGUgYSBu
ZXcgY2hhbmdlbG9nIGVudHJ5IGluIGBgY2hhbmdlbG9nYGAuIFRoZSBmaWxlIHNob3VsZCBiZSBu
YW1lZCBgYDxpc3N1ZWlkPi48dHlwZT4ucnN0YGAsCiAgICB3aGVyZSAqaXNzdWVpZCogaXMgdGhl
IG51bWJlciBvZiB0aGUgaXNzdWUgcmVsYXRlZCB0byB0aGUgY2hhbmdlIGFuZCAqdHlwZSogaXMg
b25lIG9mCi0gICBgYGJ1Z2ZpeGBgLCBgYHJlbW92YWxgYCwgYGBmZWF0dXJlYGAsIGBgdmVuZG9y
YGAsIGBgZG9jYGAgb3IgYGB0cml2aWFsYGAuCisgICBgYGZlYXR1cmVgYCwgYGBpbXByb3ZlbWVu
dGBgLCBgYGJ1Z2ZpeGBgLCBgYGRvY2BgLCBgYGRlcHJlY2F0aW9uYGAsIGBgYnJlYWtpbmdgYCwg
YGB2ZW5kb3JgYAorICAgb3IgYGB0cml2aWFsYGAuIFlvdSBtYXkgc2tpcCBjcmVhdGluZyB0aGUg
Y2hhbmdlbG9nIGVudHJ5IGlmIHRoZSBjaGFuZ2UgZG9lc24ndCBhZmZlY3QgdGhlCisgICBkb2N1
bWVudGVkIGJlaGF2aW91ciBvZiBweXRlc3QuCiAKICMuIEFkZCB5b3Vyc2VsZiB0byBgYEFVVEhP
UlNgYCBmaWxlIGlmIG5vdCB0aGVyZSB5ZXQsIGluIGFscGhhYmV0aWNhbCBvcmRlci4KIApAQCAt
Mjc2LDE5ICszMTksMTY0IEBAIEhlcmUgaXMgYSBzaW1wbGUgb3ZlcnZpZXcsIHdpdGggcHl0ZXN0
LXNwZWNpZmljIGJpdHM6CiAgICAgY29tcGFyZTogeW91ci1icmFuY2gtbmFtZQogCiAgICAgYmFz
ZS1mb3JrOiBweXRlc3QtZGV2L3B5dGVzdAotICAgIGJhc2U6IG1hc3RlciAgICAgICAgICAjIGlm
IGl0J3MgYSBidWdmaXgKLSAgICBiYXNlOiBmZWF0dXJlcyAgICAgICAgIyBpZiBpdCdzIGEgZmVh
dHVyZQorICAgIGJhc2U6IG1hc3RlcgorCisKK1dyaXRpbmcgVGVzdHMKK35+fn5+fn5+fn5+fn4K
KworV3JpdGluZyB0ZXN0cyBmb3IgcGx1Z2lucyBvciBmb3IgcHl0ZXN0IGl0c2VsZiBpcyBvZnRl
biBkb25lIHVzaW5nIHRoZSBgdGVzdGRpciBmaXh0dXJlIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvcmVmZXJlbmNlLmh0bWwjdGVzdGRpcj5gXywgYXMgYSAiYmxhY2stYm94IiB0
ZXN0LgorCitGb3IgZXhhbXBsZSwgdG8gZW5zdXJlIGEgc2ltcGxlIHRlc3QgcGFzc2VzIHlvdSBj
YW4gd3JpdGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiB0ZXN0X3RydWVf
YXNzZXJ0aW9uKHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgICAgIGFz
c2VydCBUcnVlCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhmYWlsZWQ9MCwg
cGFzc2VkPTEpCiAKIAorQWx0ZXJuYXRpdmVseSwgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBjaGVj
a3MgYmFzZWQgb24gdGhlIGFjdHVhbCBvdXRwdXQgb2YgdGhlIHRlcm1hbCB1c2luZworKmdsb2It
bGlrZSogZXhwcmVzc2lvbnM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiB0
ZXN0X3RydWVfYXNzZXJ0aW9uKHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiphc3NlcnQgRmFsc2UqIiwgIioxIGZhaWxlZCoiXSkKKworV2hlbiBjaG9vc2luZyBh
IGZpbGUgd2hlcmUgdG8gd3JpdGUgYSBuZXcgdGVzdCwgdGFrZSBhIGxvb2sgYXQgdGhlIGV4aXN0
aW5nIGZpbGVzIGFuZCBzZWUgaWYgdGhlcmUncworb25lIGZpbGUgd2hpY2ggbG9va3MgbGlrZSBh
IGdvb2QgZml0LiBGb3IgZXhhbXBsZSwgYSByZWdyZXNzaW9uIHRlc3QgYWJvdXQgYSBidWcgaW4g
dGhlIGBgLS1sZmBgIG9wdGlvbgorc2hvdWxkIGdvIGludG8gYGB0ZXN0X2NhY2hlcHJvdmlkZXIu
cHlgYCwgZ2l2ZW4gdGhhdCB0aGlzIG9wdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiBgYGNhY2hlcHJv
dmlkZXIucHlgYC4KK0lmIGluIGRvdWJ0LCBnbyBhaGVhZCBhbmQgb3BlbiBhIFBSIHdpdGggeW91
ciBiZXN0IGd1ZXNzIGFuZCB3ZSBjYW4gZGlzY3VzcyB0aGlzIG92ZXIgdGhlIGNvZGUuCisKIEpv
aW5pbmcgdGhlIERldmVsb3BtZW50IFRlYW0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogQW55b25lIHdobyBoYXMgc3VjY2Vzc2Z1bGx5IHNlZW4gdGhyb3VnaCBhIHB1bGwgcmVxdWVz
dCB3aGljaCBkaWQgbm90CiByZXF1aXJlIGFueSBleHRyYSB3b3JrIGZyb20gdGhlIGRldmVsb3Bt
ZW50IHRlYW0gdG8gbWVyZ2Ugd2lsbAogdGhlbXNlbHZlcyBnYWluIGNvbW1pdCBhY2Nlc3MgaWYg
dGhleSBzbyB3aXNoIChpZiB3ZSBmb3JnZXQgdG8gYXNrIHBsZWFzZSBzZW5kIGEgZnJpZW5kbHkK
LXJlbWluZGVyKS4gIFRoaXMgZG9lcyBub3QgbWVhbiB5b3VyIHdvcmtmbG93IHRvIGNvbnRyaWJ1
dGUgY2hhbmdlcywKK3JlbWluZGVyKS4gIFRoaXMgZG9lcyBub3QgbWVhbiB0aGVyZSBpcyBhbnkg
Y2hhbmdlIGluIHlvdXIgY29udHJpYnV0aW9uIHdvcmtmbG93OgogZXZlcnlvbmUgZ29lcyB0aHJv
dWdoIHRoZSBzYW1lIHB1bGwtcmVxdWVzdC1hbmQtcmV2aWV3IHByb2Nlc3MgYW5kCiBuby1vbmUg
bWVyZ2VzIHRoZWlyIG93biBwdWxsIHJlcXVlc3RzIHVubGVzcyBhbHJlYWR5IGFwcHJvdmVkLiAg
SXQgZG9lcyBob3dldmVyIG1lYW4geW91IGNhbgogcGFydGljaXBhdGUgaW4gdGhlIGRldmVsb3Bt
ZW50IHByb2Nlc3MgbW9yZSBmdWxseSBzaW5jZSB5b3UgY2FuIG1lcmdlCiBwdWxsIHJlcXVlc3Rz
IGZyb20gb3RoZXIgY29udHJpYnV0b3JzIHlvdXJzZWxmIGFmdGVyIGhhdmluZyByZXZpZXdlZAog
dGhlbS4KKworCitCYWNrcG9ydGluZyBidWcgZml4ZXMgZm9yIHRoZSBuZXh0IHBhdGNoIHJlbGVh
c2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQ
eXRlc3QgbWFrZXMgZmVhdHVyZSByZWxlYXNlIGV2ZXJ5IGZldyB3ZWVrcyBvciBtb250aHMuIElu
IGJldHdlZW4sIHBhdGNoIHJlbGVhc2VzCithcmUgbWFkZSB0byB0aGUgcHJldmlvdXMgZmVhdHVy
ZSByZWxlYXNlLCBjb250YWluaW5nIGJ1ZyBmaXhlcyBvbmx5LiBUaGUgYnVnIGZpeGVzCit1c3Vh
bGx5IGZpeCByZWdyZXNzaW9ucywgYnV0IG1heSBiZSBhbnkgY2hhbmdlIHRoYXQgc2hvdWxkIHJl
YWNoIHVzZXJzIGJlZm9yZSB0aGUKK25leHQgZmVhdHVyZSByZWxlYXNlLgorCitTdXBwb3NlIGZv
ciBleGFtcGxlIHRoYXQgdGhlIGxhdGVzdCByZWxlYXNlIHdhcyAxLjIuMywgYW5kIHlvdSB3YW50
IHRvIGluY2x1ZGUKK2EgYnVnIGZpeCBpbiAxLjIuNCAoY2hlY2sgaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L3JlbGVhc2VzIGZvciB0aGUKK2FjdHVhbCBsYXRlc3QgcmVsZWFz
ZSkuIFRoZSBwcm9jZWR1cmUgZm9yIHRoaXMgaXM6CisKKyMuIEZpcnN0LCBtYWtlIHN1cmUgdGhl
IGJ1ZyBpcyBmaXhlZCB0aGUgYGBtYXN0ZXJgYCBicmFuY2gsIHdpdGggYSByZWd1bGFyIHB1bGwK
KyAgIHJlcXVlc3QsIGFzIGRlc2NyaWJlZCBhYm92ZS4gQW4gZXhjZXB0aW9uIHRvIHRoaXMgaXMg
aWYgdGhlIGJ1ZyBmaXggaXMgbm90CisgICBhcHBsaWNhYmxlIHRvIGBgbWFzdGVyYGAgYW55bW9y
ZS4KKworIy4gYGBnaXQgY2hlY2tvdXQgb3JpZ2luLzEuMi54IC1iIGJhY2twb3J0LVhYWFhgYCAj
IHVzZSB0aGUgbWFzdGVyIFBSIG51bWJlciBoZXJlCisKKyMuIExvY2F0ZSB0aGUgbWVyZ2UgY29t
bWl0IG9uIHRoZSBQUiwgaW4gdGhlICptZXJnZWQqIG1lc3NhZ2UsIGZvciBleGFtcGxlOgorCisg
ICAgbmljb2RkZW11cyBtZXJnZWQgY29tbWl0IDBmOGI0NjIgaW50byBweXRlc3QtZGV2Om1hc3Rl
cgorCisjLiBgYGdpdCBjaGVycnktcGljayAteCAtbTEgUkVWSVNJT05gYCAjIHVzZSB0aGUgcmV2
aXNpb24geW91IGZvdW5kIGFib3ZlIChgYDBmOGI0NjJgYCkuCisKKyMuIE9wZW4gYSBQUiB0YXJn
ZXRpbmcgYGAxLjIueGBgOgorCisgICAqIFByZWZpeCB0aGUgbWVzc2FnZSB3aXRoIGBgWzEuMi54
XWBgLgorICAgKiBEZWxldGUgdGhlIFBSIGJvZHksIGl0IHVzdWFsbHkgY29udGFpbnMgYSBkdXBs
aWNhdGUgY29tbWl0IG1lc3NhZ2UuCisKKworV2hvIGRvZXMgdGhlIGJhY2twb3J0aW5nCit+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQXMgbWVudGlvbmVkIGFib3ZlLCBidWdzIHNob3VsZCBm
aXJzdCBiZSBmaXhlZCBvbiBgYG1hc3RlcmBgIChleGNlcHQgaW4gcmFyZSBvY2Nhc2lvbnMKK3Ro
YXQgYSBidWcgb25seSBoYXBwZW5zIGluIGEgcHJldmlvdXMgcmVsZWFzZSkuIFNvIHdobyBzaG91
bGQgZG8gdGhlIGJhY2twb3J0IHByb2NlZHVyZSBkZXNjcmliZWQKK2Fib3ZlPworCisxLiBJZiB0
aGUgYnVnIHdhcyBmaXhlZCBieSBhIGNvcmUgZGV2ZWxvcGVyLCBpdCBpcyB0aGUgbWFpbiByZXNw
b25zaWJpbGl0eSBvZiB0aGF0IGNvcmUgZGV2ZWxvcGVyCisgICB0byBkbyB0aGUgYmFja3BvcnQu
CisyLiBIb3dldmVyLCBvZnRlbiB0aGUgbWVyZ2UgaXMgZG9uZSBieSBhbm90aGVyIG1haW50YWlu
ZXIsIGluIHdoaWNoIGNhc2UgaXQgaXMgbmljZSBvZiB0aGVtIHRvCisgICBkbyB0aGUgYmFja3Bv
cnQgcHJvY2VkdXJlIGlmIHRoZXkgaGF2ZSB0aGUgdGltZS4KKzMuIEZvciBidWdzIHN1Ym1pdHRl
ZCBieSBub24tbWFpbnRhaW5lcnMsIGl0IGlzIGV4cGVjdGVkIHRoYXQgYSBjb3JlIGRldmVsb3Bl
ciB3aWxsIHRvIGRvCisgICB0aGUgYmFja3BvcnQsIG5vcm1hbGx5IHRoZSBvbmUgdGhhdCBtZXJn
ZWQgdGhlIFBSIG9uIGBgbWFzdGVyYGAuCis0LiBJZiBhIG5vbi1tYWludGFpbmVycyBub3RpY2Vz
IGEgYnVnIHdoaWNoIGlzIGZpeGVkIG9uIGBgbWFzdGVyYGAgYnV0IGhhcyBub3QgYmVlbiBiYWNr
cG9ydGVkCisgICAoZHVlIHRvIG1haW50YWluZXJzIGZvcmdldHRpbmcgdG8gYXBwbHkgdGhlICpu
ZWVkcyBiYWNrcG9ydCogbGFiZWwsIG9yIGp1c3QgcGxhaW4gbWlzc2luZyBpdCksCisgICB0aGV5
IGFyZSBhbHNvIHdlbGNvbWUgdG8gb3BlbiBhIFBSIHdpdGggdGhlIGJhY2twb3J0LiBUaGUgcHJv
Y2VkdXJlIGlzIHNpbXBsZSBhbmQgcmVhbGx5CisgICBoZWxwcyB3aXRoIHRoZSBtYWludGVuYW5j
ZSBvZiB0aGUgcHJvamVjdC4KKworQWxsIHRoZSBhYm92ZSBhcmUgbm90IHJ1bGVzLCBidXQgbWVy
ZWx5IHNvbWUgZ3VpZGVsaW5lcy9zdWdnZXN0aW9ucyBvbiB3aGF0IHdlIHNob3VsZCBleHBlY3QK
K2Fib3V0IGJhY2twb3J0cy4KKworSGFuZGxpbmcgc3RhbGUgaXNzdWVzL1BScworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitTdGFsZSBpc3N1ZXMvUFJzIGFyZSB0aG9zZSB3aGVyZSBweXRl
c3QgY29udHJpYnV0b3JzIGhhdmUgYXNrZWQgZm9yIHF1ZXN0aW9ucy9jaGFuZ2VzCithbmQgdGhl
IGF1dGhvcnMgZGlkbid0IGdldCBhcm91bmQgdG8gYW5zd2VyL2ltcGxlbWVudCB0aGVtIHlldCBh
ZnRlciBhIHNvbWV3aGF0IGxvbmcgdGltZSwgb3IKK3RoZSBkaXNjdXNzaW9uIHNpbXBseSBkaWVk
IGJlY2F1c2UgcGVvcGxlIHNlZW1lZCB0byBsb3NlIGludGVyZXN0LgorCitUaGVyZSBhcmUgbWFu
eSByZWFzb25zIHdoeSBwZW9wbGUgZG9uJ3QgYW5zd2VyIHF1ZXN0aW9ucyBvciBpbXBsZW1lbnQg
cmVxdWVzdGVkIGNoYW5nZXM6Cit0aGV5IG1pZ2h0IGdldCBidXN5LCBsb3NlIGludGVyZXN0LCBv
ciBqdXN0IGZvcmdldCBhYm91dCBpdCwKK2J1dCB0aGUgZmFjdCBpcyB0aGF0IHRoaXMgaXMgdmVy
eSBjb21tb24gaW4gb3BlbiBzb3VyY2Ugc29mdHdhcmUuCisKK1RoZSBweXRlc3QgdGVhbSByZWFs
bHkgYXBwcmVjaWF0ZXMgZXZlcnkgaXNzdWUgYW5kIHB1bGwgcmVxdWVzdCwgYnV0IGJlaW5nIGEg
aGlnaC12b2x1bWUgcHJvamVjdAord2l0aCBtYW55IGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBi
ZWluZyBzdWJtaXR0ZWQgZGFpbHksIHdlIHRyeSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzdGFs
ZQoraXNzdWVzIGFuZCBQUnMgYnkgcmVndWxhcmx5IGNsb3NpbmcgdGhlbS4gV2hlbiBhbiBpc3N1
ZS9wdWxsIHJlcXVlc3QgaXMgY2xvc2VkIGluIHRoaXMgbWFubmVyLAoraXQgaXMgYnkgbm8gbWVh
bnMgYSBkaXNtaXNzYWwgb2YgdGhlIHRvcGljIGJlaW5nIHRhY2tsZWQgYnkgdGhlIGlzc3VlL3B1
bGwgcmVxdWVzdCwgYnV0IGl0CitpcyBqdXN0IGEgd2F5IGZvciB1cyB0byBjbGVhciB1cCB0aGUg
cXVldWUgYW5kIG1ha2UgdGhlIG1haW50YWluZXJzJyB3b3JrIG1vcmUgbWFuYWdlYWJsZS4gU3Vi
bWl0dGVycworY2FuIGFsd2F5cyByZW9wZW4gdGhlIGlzc3VlL3B1bGwgcmVxdWVzdCBpbiB0aGVp
ciBvd24gdGltZSBsYXRlciBpZiBpdCBtYWtlcyBzZW5zZS4KKworV2hlbiB0byBjbG9zZQorfn5+
fn5+fn5+fn5+fgorCitIZXJlIGFyZSBhIGZldyBnZW5lcmFsIHJ1bGVzIHRoZSBtYWludGFpbmVy
cyB1c2UgdG8gZGVjaWRlIHdoZW4gdG8gY2xvc2UgaXNzdWVzL1BScyBiZWNhdXNlCitvZiBsYWNr
IG9mIGluYWN0aXZpdHk6CisKKyogSXNzdWVzIGxhYmVsZWQgYGBxdWVzdGlvbmBgIG9yIGBgbmVl
ZHMgaW5mb3JtYXRpb25gYDogY2xvc2VkIGFmdGVyIDE0IGRheXMgaW5hY3RpdmUuCisqIElzc3Vl
cyBsYWJlbGVkIGBgcHJvcG9zYWxgYDogY2xvc2VkIGFmdGVyIHNpeCBtb250aHMgaW5hY3RpdmUu
CisqIFB1bGwgcmVxdWVzdHM6IGFmdGVyIG9uZSBtb250aCwgY29uc2lkZXIgcGluZ2luZyB0aGUg
YXV0aG9yLCB1cGRhdGUgbGlua2VkIGlzc3VlLCBvciBjb25zaWRlciBjbG9zaW5nLiBGb3IgcHVs
bCByZXF1ZXN0cyB3aGljaCBhcmUgbmVhcmx5IGZpbmlzaGVkLCB0aGUgdGVhbSBzaG91bGQgY29u
c2lkZXIgZmluaXNoaW5nIGl0IHVwIGFuZCBtZXJnaW5nIGl0LgorCitUaGUgYWJvdmUgYXJlICoq
bm90IGhhcmQgcnVsZXMqKiwgYnV0IG1lcmVseSAqKmd1aWRlbGluZXMqKiwgYW5kIGNhbiBiZSAo
YW5kIG9mdGVuIGFyZSEpIHJldmlld2VkIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLgorCitDbG9z
aW5nIHB1bGwgcmVxdWVzdHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitXaGVuIGNsb3Npbmcg
YSBQdWxsIFJlcXVlc3QsIGl0IG5lZWRzIHRvIGJlIGFja25vd2xlZGdlIHRoZSB0aW1lLCBlZmZv
cnQsIGFuZCBpbnRlcmVzdCBkZW1vbnN0cmF0ZWQgYnkgdGhlIHBlcnNvbiB3aGljaCBzdWJtaXR0
ZWQgaXQuIEFzIG1lbnRpb25lZCBwcmV2aW91c2x5LCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0
aGUgdGVhbSB0byBkaXNtaXNzIHN0YWxsZWQgcHVsbCByZXF1ZXN0IGVudGlyZWx5IGJ1dCB0byBt
ZXJlbHkgdG8gY2xlYXIgdXAgb3VyIHF1ZXVlLCBzbyBhIG1lc3NhZ2UgbGlrZSB0aGUgb25lIGJl
bG93IGlzIHdhcnJhbnRlZCB3aGVuIGNsb3NpbmcgYSBwdWxsIHJlcXVlc3QgdGhhdCB3ZW50IHN0
YWxlOgorCisgICAgSGkgPGNvbnRyaWJ1dG9yPiwKKworICAgIEZpcnN0IG9mIGFsbCB3ZSB3b3Vs
ZCBsaWtlIHRvIHRoYW5rIHlvdSBmb3IgeW91ciB0aW1lIGFuZCBlZmZvcnQgb24gd29ya2luZyBv
biB0aGlzLCB0aGUgcHl0ZXN0IHRlYW0gZGVlcGx5IGFwcHJlY2lhdGVzIGl0LgorCisgICAgV2Ug
bm90aWNlZCBpdCBoYXMgYmVlbiBhd2hpbGUgc2luY2UgeW91IGhhdmUgdXBkYXRlZCB0aGlzIFBS
LCBob3dldmVyLiBweXRlc3QgaXMgYSBoaWdoIGFjdGl2aXR5IHByb2plY3QsIHdpdGggbWFueSBp
c3N1ZXMvUFJzIGJlaW5nIG9wZW5lZCBkYWlseSwgc28gaXQgaXMgaGFyZCBmb3IgdXMgbWFpbnRh
aW5lcnMgdG8gdHJhY2sgd2hpY2ggUFJzIGFyZSByZWFkeSBmb3IgbWVyZ2luZywgZm9yIHJldmll
dywgb3IgbmVlZCBtb3JlIGF0dGVudGlvbi4KKworICAgIFNvIGZvciB0aG9zZSByZWFzb25zIHdl
IHRoaW5rIGl0IGlzIGJlc3QgdG8gY2xvc2UgdGhlIFBSIGZvciBub3csIGJ1dCB3aXRoIHRoZSBv
bmx5IGludGVudGlvbiB0byBjbGVhbnVwIG91ciBxdWV1ZSwgaXQgaXMgYnkgbm8gbWVhbnMgYSBy
ZWplY3Rpb24gb2YgeW91ciBjaGFuZ2VzLiBXZSBzdGlsbCBlbmNvdXJhZ2UgeW91IHRvIHJlLW9w
ZW4gdGhpcyBQUiAoaXQgaXMganVzdCBhIGNsaWNrIG9mIGEgYnV0dG9uIGF3YXkpIHdoZW4geW91
IGFyZSByZWFkeSB0byBnZXQgYmFjayB0byBpdC4KKworICAgIEFnYWluIHdlIGFwcHJlY2lhdGUg
eW91ciB0aW1lIGZvciB3b3JraW5nIG9uIHRoaXMsIGFuZCBob3BlIHlvdSBtaWdodCBnZXQgYmFj
ayB0byB0aGlzIGF0IGEgbGF0ZXIgdGltZSEKKworICAgIDxieWU+CisKK0Nsb3NpbmcgSXNzdWVz
CistLS0tLS0tLS0tLS0tLQorCitXaGVuIGEgcHVsbCByZXF1ZXN0IGlzIHN1Ym1pdHRlZCB0byBm
aXggYW4gaXNzdWUsIGFkZCB0ZXh0IGxpa2UgYGBjbG9zZXMgI1hZWldgYCB0byB0aGUgUFIgZGVz
Y3JpcHRpb24gYW5kL29yIGNvbW1pdHMgKHdoZXJlIGBgWFlaV2BgIGlzIHRoZSBpc3N1ZSBudW1i
ZXIpLiBTZWUgdGhlIGBHaXRIdWIgZG9jcyA8aHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vZW4vZ2l0
aHViL21hbmFnaW5nLXlvdXItd29yay1vbi1naXRodWIvbGlua2luZy1hLXB1bGwtcmVxdWVzdC10
by1hbi1pc3N1ZSNsaW5raW5nLWEtcHVsbC1yZXF1ZXN0LXRvLWFuLWlzc3VlLXVzaW5nLWEta2V5
d29yZD5gXyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworV2hlbiBhbiBpc3N1ZSBpcyBkdWUgdG8g
dXNlciBlcnJvciAoZS5nLiBtaXN1bmRlcnN0YW5kaW5nIG9mIGEgZnVuY3Rpb25hbGl0eSksIHBs
ZWFzZSBwb2xpdGVseSBleHBsYWluIHRvIHRoZSB1c2VyIHdoeSB0aGUgaXNzdWUgcmFpc2VkIGlz
IHJlYWxseSBhIG5vbi1pc3N1ZSBhbmQgYXNrIHRoZW0gdG8gY2xvc2UgdGhlIGlzc3VlIGlmIHRo
ZXkgaGF2ZSBubyBmdXJ0aGVyIHF1ZXN0aW9ucy4gSWYgdGhlIG9yaWdpbmFsIHJlcXVlc3RvciBp
cyB1bnJlc3BvbnNpdmUsIHRoZSBpc3N1ZSB3aWxsIGJlIGhhbmRsZWQgYXMgZGVzY3JpYmVkIGlu
IHRoZSBzZWN0aW9uIGBIYW5kbGluZyBzdGFsZSBpc3N1ZXMvUFJzYF8gYWJvdmUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9IT1dUT1JFTEVBU0UucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvSE9XVE9SRUxF
QVNFLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdiZGRmNzIwMmIxLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvSE9XVE9SRUxFQVNFLnJzdAorKysgL2Rldi9udWxs
CkBAIC0xLDQ5ICswLDAgQEAKLVJlbGVhc2UgUHJvY2VkdXJlCi0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1PdXIgY3VycmVudCBwb2xpY3kgZm9yIHJlbGVhc2luZyBpcyB0byBhaW0gZm9yIGEgYnVnZml4
IGV2ZXJ5IGZldyB3ZWVrcyBhbmQgYSBtaW5vciByZWxlYXNlIGV2ZXJ5IDItMyBtb250aHMuIFRo
ZSBpZGVhCi1pcyB0byBnZXQgZml4ZXMgYW5kIG5ldyBmZWF0dXJlcyBvdXQgaW5zdGVhZCBvZiB0
cnlpbmcgdG8gY3JhbSBhIHRvbiBvZiBmZWF0dXJlcyBpbnRvIGEgcmVsZWFzZSBhbmQgYnkgY29u
c2VxdWVuY2UKLXRha2luZyBhIGxvdCBvZiB0aW1lIHRvIG1ha2UgYSBuZXcgb25lLgotCi0uLiBp
bXBvcnRhbnQ6OgotCi0gICAgcHl0ZXN0IHJlbGVhc2VzIG11c3QgYmUgcHJlcGFyZWQgb24gKipM
aW51eCoqIGJlY2F1c2UgdGhlIGRvY3MgYW5kIGV4YW1wbGVzIGV4cGVjdAotICAgIHRvIGJlIGV4
ZWN1dGVkIGluIHRoYXQgcGxhdGZvcm0uCi0KLSMuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZGVwZW5k
ZW5jaWVzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoOjoKLQotICAgIHBpcDMgaW5zdGFs
bCAtVSAtciB0YXNrcy9yZXF1aXJlbWVudHMudHh0Ci0KLSMuIENyZWF0ZSBhIGJyYW5jaCBgYHJl
bGVhc2UtWC5ZLlpgYCB3aXRoIHRoZSB2ZXJzaW9uIGZvciB0aGUgcmVsZWFzZS4KLQotICAgKiAq
KnBhdGNoIHJlbGVhc2VzKio6IGZyb20gdGhlIGxhdGVzdCBgYG1hc3RlcmBgOwotCi0gICAqICoq
bWlub3IgcmVsZWFzZXMqKjogZnJvbSB0aGUgbGF0ZXN0IGBgZmVhdHVyZXNgYDsgdGhlbiBtZXJn
ZSB3aXRoIHRoZSBsYXRlc3QgYGBtYXN0ZXJgYDsKLQotICAgRW5zdXJlIHlvdXIgYXJlIGluIGEg
Y2xlYW4gd29yayB0cmVlLgotCi0jLiBHZW5lcmF0ZSBkb2NzLCBjaGFuZ2Vsb2csIGFubm91bmNl
bWVudHMgYW5kIGEgKipsb2NhbCoqIHRhZzo6Ci0KLSAgICAgaW52b2tlIGdlbmVyYXRlLnByZS1y
ZWxlYXNlIDxWRVJTSU9OPgotCi0jLiBPcGVuIGEgUFIgZm9yIHRoaXMgYnJhbmNoIHRhcmdldGlu
ZyBgYG1hc3RlcmBgLgotCi0jLiBBZnRlciBhbGwgdGVzdHMgcGFzcyBhbmQgdGhlIFBSIGhhcyBi
ZWVuIGFwcHJvdmVkLCBwdWJsaXNoIHRvIFB5UEkgYnkgcHVzaGluZyB0aGUgdGFnOjoKLQotICAg
ICBnaXQgcHVzaCBnaXRAZ2l0aHViLmNvbTpweXRlc3QtZGV2L3B5dGVzdC5naXQgPFZFUlNJT04+
Ci0KLSAgIFdhaXQgZm9yIHRoZSBkZXBsb3kgdG8gY29tcGxldGUsIHRoZW4gbWFrZSBzdXJlIGl0
IGlzIGBhdmFpbGFibGUgb24gUHlQSSA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdD5g
Xy4KLQotIy4gU2VuZCBhbiBlbWFpbCBhbm5vdW5jZW1lbnQgd2l0aCB0aGUgY29udGVudHMgZnJv
bTo6Ci0KLSAgICAgZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtPFZFUlNJT04+LnJzdAotCi0gICBU
byB0aGUgZm9sbG93aW5nIG1haWxpbmcgbGlzdHM6Ci0KLSAgICogcHl0ZXN0LWRldkBweXRob24u
b3JnIChhbGwgcmVsZWFzZXMpCi0gICAqIHB5dGhvbi1hbm5vdW5jZS1saXN0QHB5dGhvbi5vcmcg
KGFsbCByZWxlYXNlcykKLSAgICogdGVzdGluZy1pbi1weXRob25AbGlzdHMuaWR5bGwub3JnIChv
bmx5IG1ham9yL21pbm9yIHJlbGVhc2VzKQotCi0gICBBbmQgYW5ub3VuY2UgaXQgb24gYFR3aXR0
ZXIgPGh0dHBzOi8vdHdpdHRlci5jb20vPmBfIHdpdGggdGhlIGBgI3B5dGVzdGBgIGhhc2h0YWcu
Ci0KLSMuIEFmdGVyIGEgbWlub3IvbWFqb3IgcmVsZWFzZSwgbWVyZ2UgYGByZWxlYXNlLVguWS5a
YGAgaW50byBgYG1hc3RlcmBgIGFuZCBwdXNoIChvciBvcGVuIGEgUFIpLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0xJQ0VOU0UKaW5kZXggNjI5ZGY0NWFj
NDA1Li5kMTRmYjdmZjRiMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0xJQ0VOU0UKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvTElDRU5TRQpAQCAtMSw2ICsxLDYgQEAKIFRoZSBNSVQgTGljZW5zZSAoTUlU
KQogCi1Db3B5cmlnaHQgKGMpIDIwMDQtMjAxNyBIb2xnZXIgS3Jla2VsIGFuZCBvdGhlcnMKK0Nv
cHlyaWdodCAoYykgMjAwNC0yMDIwIEhvbGdlciBLcmVrZWwgYW5kIG90aGVycwogCiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5IG9mCiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvT1BFTkNPTExFQ1RJVkUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvT1BFTkNPTExFQ1RJVkUucnN0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGMxYzkwMjgxZTQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvT1BFTkNPTExFQ1RJVkUucnN0CkBAIC0wLDAg
KzEsNDQgQEAKKz09PT09PT09PT09PT09CitPcGVuQ29sbGVjdGl2ZQorPT09PT09PT09PT09PT0K
KworcHl0ZXN0IGhhcyBhIGNvbGxlY3RpdmUgc2V0dXAgYXQgYE9wZW5Db2xsZWN0aXZlYF8uIFRo
aXMgZG9jdW1lbnQgZGVzY3JpYmVzIGhvdyB0aGUgY29yZSB0ZWFtIG1hbmFnZXMKK09wZW5Db2xs
ZWN0aXZlLXJlbGF0ZWQgYWN0aXZpdGllcy4KKworV2hhdCBpcyBpdAorPT09PT09PT09PQorCitP
cGVuIENvbGxlY3RpdmUgaXMgYW4gb25saW5lIGZ1bmRpbmcgcGxhdGZvcm0gZm9yIG9wZW4gYW5k
IHRyYW5zcGFyZW50IGNvbW11bml0aWVzLgorSXQgcHJvdmlkZXMgdG9vbHMgdG8gcmFpc2UgbW9u
ZXkgYW5kIHNoYXJlIHlvdXIgZmluYW5jZXMgaW4gZnVsbCB0cmFuc3BhcmVuY3kuCisKK0l0IGlz
IHRoZSBwbGF0Zm9ybSBvZiBjaG9pY2UgZm9yIGluZGl2aWR1YWxzIGFuZCBjb21wYW5pZXMgdGhh
dCB3YW50IHRvIG1ha2Ugb25lLXRpbWUgb3IKK21vbnRobHkgZG9uYXRpb25zIGRpcmVjdGx5IHRv
IHRoZSBwcm9qZWN0LgorCitGdW5kcworPT09PT0KKworVGhlIE9wZW5Db2xsZWN0aXZlIGZ1bmRz
IGRvbmF0ZWQgdG8gcHl0ZXN0IHdpbGwgYmUgdXNlZCB0byBmdW5kIG92ZXJhbGwgbWFpbnRlbmFu
Y2UsCitsb2NhbCBzcHJpbnRzLCBtZXJjaGFuZGlzaW5nIChzdGlja2VycyB0byBkaXN0cmlidXRl
IGluIGNvbmZlcmVuY2VzIGZvciBleGFtcGxlKSwgYW5kIGZ1dHVyZQorZ2F0aGVyaW5ncyBvZiBw
eXRlc3QgZGV2ZWxvcGVycyAoc3ByaW50cykuCisKK2BDb3JlIGNvbnRyaWJ1dG9yc2BfIHdoaWNo
IGFyZSBjb250cmlidXRpbmcgb24gYSBjb250aW51b3VzIGJhc2lzIGFyZSBmcmVlIHRvIHN1Ym1p
dCBpbnZvaWNlcwordG8gYmlsbCBtYWludGVuYW5jZSBob3VycyB1c2luZyB0aGUgcGxhdGZvcm0u
IEhvdyBtdWNoIGVhY2ggY29udHJpYnV0b3Igc2hvdWxkIHJlcXVlc3QgaXMgc3RpbGwgYW4KK29w
ZW4gcXVlc3Rpb24sIGJ1dCB3ZSBzaG91bGQgdXNlIGNvbW1vbiBzZW5zZSBhbmQgdHJ1c3QgaW4g
dGhlIGNvbnRyaWJ1dG9ycywgbW9zdCBvZiB3aGljaCBrbm93Cit0aGVtc2VsdmVzIGluLXBlcnNv
bi4gQSBnb29kIHJ1bGUgb2YgdGh1bWIgaXMgdG8gYmlsbCB0aGUgc2FtZSBhbW91bnQgYXMgbW9u
dGhseSBwYXltZW50cworY29udHJpYnV0b3JzIHdoaWNoIHBhcnRpY2lwYXRlIGluIHRoZSBgVGlk
ZWxpZnRgXyBzdWJzY3JpcHRpb24uIElmIGluIGRvdWJ0LCBqdXN0IGFzay4KKworQWRtaW5zCis9
PT09PT0KKworQSBmZXcgcGVvcGxlIGhhdmUgYWRtaW4gYWNjZXNzIHRvIHRoZSBPcGVuQ29sbGVj
dGl2ZSBkYXNoYm9hcmQgdG8gbWFrZSBjaGFuZ2VzLiBUaG9zZSBwZW9wbGUKK2FyZSBwYXJ0IG9m
IHRoZSBgQHB5dGVzdC1kZXYvb3BlbmNvbGxlY3RpdmUtYWRtaW5zYF8gdGVhbS4KKworYENvcmUg
Y29udHJpYnV0b3JzYF8gaW50ZXJlc3RlZCBpbiBoZWxwaW5nIG91dCB3aXRoIE9wZW5Db2xsZWN0
aXZlIG1haW50ZW5hbmNlIGFyZSB3ZWxjb21lISBXZSBkb24ndAorZXhwZWN0IG11Y2ggd29yayBo
ZXJlIG90aGVyIHRoYW4gdGhlIG9jY2FzaW9uYWwgYXBwcm92YWwgb2YgZXhwZW5zZXMgZnJvbSBv
dGhlciBjb3JlIGNvbnRyaWJ1dG9ycy4KK0p1c3QgZHJvcCBhIGxpbmUgdG8gb25lIG9mIHRoZSBg
QHB5dGVzdC1kZXYvb3BlbmNvbGxlY3RpdmUtYWRtaW5zYF8gb3IgdXNlIHRoZSBtYWlsaW5nIGxp
c3QuCisKKworLi4gX2BPcGVuQ29sbGVjdGl2ZWA6IGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29t
L3B5dGVzdAorLi4gX2BUaWRlbGlmdGA6IGh0dHBzOi8vdGlkZWxpZnQuY29tCisuLiBfYGNvcmUg
Y29udHJpYnV0b3JzYDogaHR0cHM6Ly9naXRodWIuY29tL29yZ3MvcHl0ZXN0LWRldi90ZWFtcy9j
b3JlL21lbWJlcnMKKy4uIF9gQHB5dGVzdC1kZXYvb3BlbmNvbGxlY3RpdmUtYWRtaW5zYDogaHR0
cHM6Ly9naXRodWIuY29tL29yZ3MvcHl0ZXN0LWRldi90ZWFtcy9vcGVuY29sbGVjdGl2ZS1hZG1p
bnMvbWVtYmVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvUEtHLUlORk8gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9QS0ctSU5GTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlhMzg3
YmZhZjJjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L1BLRy1JTkZPCkBAIC0wLDAg
KzEsMTkyIEBACitNZXRhZGF0YS1WZXJzaW9uOiAyLjEKK05hbWU6IHB5dGVzdAorVmVyc2lvbjog
Ni4xLjEKK1N1bW1hcnk6IHB5dGVzdDogc2ltcGxlIHBvd2VyZnVsIHRlc3Rpbmcgd2l0aCBQeXRo
b24KK0hvbWUtcGFnZTogaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0LworQXV0aG9y
OiBIb2xnZXIgS3Jla2VsLCBCcnVubyBPbGl2ZWlyYSwgUm9ubnkgUGZhbm5zY2htaWR0LCBGbG9y
aXMgQnJ1eW5vb2doZSwgQnJpYW5uYSBMYXVnaGVyLCBGbG9yaWFuIEJydWhpbiBhbmQgb3RoZXJz
CitMaWNlbnNlOiBNSVQKK1Byb2plY3QtVVJMOiBTb3VyY2UsIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdAorUHJvamVjdC1VUkw6IFRyYWNrZXIsIGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMKK0Rlc2NyaXB0aW9uOiAuLiBpbWFnZTo6IGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9fc3RhdGljL3B5dGVzdDEucG5nCisgICAgICAg
ICAgIDp0YXJnZXQ6IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKyAgICAgICAg
ICAgOmFsaWduOiBjZW50ZXIKKyAgICAgICAgICAgOmFsdDogcHl0ZXN0CisgICAgICAgIAorICAg
ICAgICAKKyAgICAgICAgLS0tLS0tCisgICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBz
Oi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3B5dGVzdC5zdmcKKyAgICAgICAgICAgIDp0YXJnZXQ6
IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QvCisgICAgICAgIAorICAgICAgICAuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29uZGEvdm4vY29uZGEtZm9yZ2UvcHl0ZXN0
LnN2ZworICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9hbmFjb25kYS5vcmcvY29uZGEtZm9y
Z2UvcHl0ZXN0CisgICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVs
ZHMuaW8vcHlwaS9weXZlcnNpb25zL3B5dGVzdC5zdmcKKyAgICAgICAgICAgIDp0YXJnZXQ6IGh0
dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QvCisgICAgICAgIAorICAgICAgICAuLiBpbWFn
ZTo6IGh0dHBzOi8vY29kZWNvdi5pby9naC9weXRlc3QtZGV2L3B5dGVzdC9icmFuY2gvbWFzdGVy
L2dyYXBoL2JhZGdlLnN2ZworICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292Lmlv
L2doL3B5dGVzdC1kZXYvcHl0ZXN0CisgICAgICAgICAgICA6YWx0OiBDb2RlIGNvdmVyYWdlIFN0
YXR1cworICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcv
cHl0ZXN0LWRldi9weXRlc3Quc3ZnP2JyYW5jaD1tYXN0ZXIKKyAgICAgICAgICAgIDp0YXJnZXQ6
IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRlc3QtZGV2L3B5dGVzdAorICAgICAgICAKKyAgICAg
ICAgLi4gaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qvd29ya2Zs
b3dzL21haW4vYmFkZ2Uuc3ZnCisgICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQW1haW4KKyAgICAg
ICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2Rl
JTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZworICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9n
aXRodWIuY29tL3BzZi9ibGFjaworICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczov
L3d3dy5jb2RldHJpYWdlLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9iYWRnZXMvdXNlcnMuc3ZnCisg
ICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3d3dy5jb2RldHJpYWdlLmNvbS9weXRlc3QtZGV2
L3B5dGVzdAorICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2Nz
Lm9yZy9wcm9qZWN0cy9weXRlc3QvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0CisgICAgICAgICAgICA6
dGFyZ2V0OiBodHRwczovL3B5dGVzdC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvP2JhZGdlPWxh
dGVzdAorICAgICAgICAgICAgOmFsdDogRG9jdW1lbnRhdGlvbiBTdGF0dXMKKyAgICAgICAgCisg
ICAgICAgIFRoZSBgYHB5dGVzdGBgIGZyYW1ld29yayBtYWtlcyBpdCBlYXN5IHRvIHdyaXRlIHNt
YWxsIHRlc3RzLCB5ZXQKKyAgICAgICAgc2NhbGVzIHRvIHN1cHBvcnQgY29tcGxleCBmdW5jdGlv
bmFsIHRlc3RpbmcgZm9yIGFwcGxpY2F0aW9ucyBhbmQgbGlicmFyaWVzLgorICAgICAgICAKKyAg
ICAgICAgQW4gZXhhbXBsZSBvZiBhIHNpbXBsZSB0ZXN0OgorICAgICAgICAKKyAgICAgICAgLi4g
Y29kZS1ibG9jazo6IHB5dGhvbgorICAgICAgICAKKyAgICAgICAgICAgICMgY29udGVudCBvZiB0
ZXN0X3NhbXBsZS5weQorICAgICAgICAgICAgZGVmIGluYyh4KToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geCArIDEKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICAgICAgZGVmIHRlc3RfYW5z
d2VyKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGluYygzKSA9PSA1CisgICAgICAgIAorICAg
ICAgICAKKyAgICAgICAgVG8gZXhlY3V0ZSBpdDo6CisgICAgICAgIAorICAgICAgICAgICAgJCBw
eXRlc3QKKyAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vz
c2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgIGNv
bGxlY3RlZCAxIGl0ZW1zCisgICAgICAgIAorICAgICAgICAgICAgdGVzdF9zYW1wbGUucHkgRgor
ICAgICAgICAKKyAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
RkFJTFVSRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAg
IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2Fuc3dlciBfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KKyAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmIHRl
c3RfYW5zd2VyKCk6CisgICAgICAgICAgICA+ICAgICAgIGFzc2VydCBpbmMoMykgPT0gNQorICAg
ICAgICAgICAgRSAgICAgICBhc3NlcnQgNCA9PSA1CisgICAgICAgICAgICBFICAgICAgICArICB3
aGVyZSA0ID0gaW5jKDMpCisgICAgICAgIAorICAgICAgICAgICAgdGVzdF9zYW1wbGUucHk6NTog
QXNzZXJ0aW9uRXJyb3IKKyAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09IDEg
ZmFpbGVkIGluIDAuMDQgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAg
ICAgCisgICAgICAgIAorICAgICAgICBEdWUgdG8gYGBweXRlc3RgYCdzIGRldGFpbGVkIGFzc2Vy
dGlvbiBpbnRyb3NwZWN0aW9uLCBvbmx5IHBsYWluIGBgYXNzZXJ0YGAgc3RhdGVtZW50cyBhcmUg
dXNlZC4gU2VlIGBnZXR0aW5nLXN0YXJ0ZWQgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCNvdXItZmlyc3QtdGVzdC1ydW4+YF8gZm9yIG1vcmUg
ZXhhbXBsZXMuCisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgRmVhdHVyZXMKKyAgICAgICAg
LS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC0gRGV0YWlsZWQgaW5mbyBvbiBmYWlsaW5nIGBh
c3NlcnQgc3RhdGVtZW50cyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2Fzc2Vy
dC5odG1sPmBfIChubyBuZWVkIHRvIHJlbWVtYmVyIGBgc2VsZi5hc3NlcnQqYGAgbmFtZXMpCisg
ICAgICAgIAorICAgICAgICAtIGBBdXRvLWRpc2NvdmVyeQorICAgICAgICAgIDxodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZ29vZHByYWN0aWNlcy5odG1sI3B5dGhvbi10ZXN0LWRp
c2NvdmVyeT5gXworICAgICAgICAgIG9mIHRlc3QgbW9kdWxlcyBhbmQgZnVuY3Rpb25zCisgICAg
ICAgIAorICAgICAgICAtIGBNb2R1bGFyIGZpeHR1cmVzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvZml4dHVyZS5odG1sPmBfIGZvcgorICAgICAgICAgIG1hbmFnaW5nIHNtYWxs
IG9yIHBhcmFtZXRyaXplZCBsb25nLWxpdmVkIHRlc3QgcmVzb3VyY2VzCisgICAgICAgIAorICAg
ICAgICAtIENhbiBydW4gYHVuaXR0ZXN0IDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvdW5pdHRlc3QuaHRtbD5gXyAob3IgdHJpYWwpLAorICAgICAgICAgIGBub3NlIDxodHRwczov
L2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvbm9zZS5odG1sPmBfIHRlc3Qgc3VpdGVzIG91dCBv
ZiB0aGUgYm94CisgICAgICAgIAorICAgICAgICAtIFB5dGhvbiAzLjUrIGFuZCBQeVB5MworICAg
ICAgICAKKyAgICAgICAgLSBSaWNoIHBsdWdpbiBhcmNoaXRlY3R1cmUsIHdpdGggb3ZlciA4NTAr
IGBleHRlcm5hbCBwbHVnaW5zIDxodHRwOi8vcGx1Z2luY29tcGF0Lmhlcm9rdWFwcC5jb20+YF8g
YW5kIHRocml2aW5nIGNvbW11bml0eQorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIERvY3Vt
ZW50YXRpb24KKyAgICAgICAgLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgRm9yIGZ1
bGwgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGluc3RhbGxhdGlvbiwgdHV0b3JpYWxzIGFuZCBQ
REYgZG9jdW1lbnRzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS8uCisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQnVncy9SZXF1ZXN0cworICAgICAgICAt
LS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICBQbGVhc2UgdXNlIHRoZSBgR2l0SHViIGlz
c3VlIHRyYWNrZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXM+
YF8gdG8gc3VibWl0IGJ1Z3Mgb3IgcmVxdWVzdCBmZWF0dXJlcy4KKyAgICAgICAgCisgICAgICAg
IAorICAgICAgICBDaGFuZ2Vsb2cKKyAgICAgICAgLS0tLS0tLS0tCisgICAgICAgIAorICAgICAg
ICBDb25zdWx0IHRoZSBgQ2hhbmdlbG9nIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvY2hhbmdlbG9nLmh0bWw+YF9fIHBhZ2UgZm9yIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgb2Yg
ZWFjaCB2ZXJzaW9uLgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIFN1cHBvcnQgcHl0ZXN0
CisgICAgICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICBgT3BlbiBDb2xsZWN0
aXZlYF8gaXMgYW4gb25saW5lIGZ1bmRpbmcgcGxhdGZvcm0gZm9yIG9wZW4gYW5kIHRyYW5zcGFy
ZW50IGNvbW11bml0aWVzLgorICAgICAgICBJdCBwcm92aWRlcyB0b29scyB0byByYWlzZSBtb25l
eSBhbmQgc2hhcmUgeW91ciBmaW5hbmNlcyBpbiBmdWxsIHRyYW5zcGFyZW5jeS4KKyAgICAgICAg
CisgICAgICAgIEl0IGlzIHRoZSBwbGF0Zm9ybSBvZiBjaG9pY2UgZm9yIGluZGl2aWR1YWxzIGFu
ZCBjb21wYW5pZXMgdGhhdCB3YW50IHRvIG1ha2Ugb25lLXRpbWUgb3IKKyAgICAgICAgbW9udGhs
eSBkb25hdGlvbnMgZGlyZWN0bHkgdG8gdGhlIHByb2plY3QuCisgICAgICAgIAorICAgICAgICBT
ZWUgbW9yZSBkZXRhaWxzIGluIHRoZSBgcHl0ZXN0IGNvbGxlY3RpdmVgXy4KKyAgICAgICAgCisg
ICAgICAgIC4uIF9PcGVuIENvbGxlY3RpdmU6IGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tCisg
ICAgICAgIC4uIF9weXRlc3QgY29sbGVjdGl2ZTogaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20v
cHl0ZXN0CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgcHl0ZXN0IGZvciBlbnRlcnByaXNl
CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgQXZhaWxh
YmxlIGFzIHBhcnQgb2YgdGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIFRoZSBtYWludGFpbmVycyBvZiBweXRlc3QgYW5kIHRob3VzYW5kcyBvZiBvdGhlciBwYWNr
YWdlcyBhcmUgd29ya2luZyB3aXRoIFRpZGVsaWZ0IHRvIGRlbGl2ZXIgY29tbWVyY2lhbCBzdXBw
b3J0IGFuZAorICAgICAgICBtYWludGVuYW5jZSBmb3IgdGhlIG9wZW4gc291cmNlIGRlcGVuZGVu
Y2llcyB5b3UgdXNlIHRvIGJ1aWxkIHlvdXIgYXBwbGljYXRpb25zLgorICAgICAgICBTYXZlIHRp
bWUsIHJlZHVjZSByaXNrLCBhbmQgaW1wcm92ZSBjb2RlIGhlYWx0aCwgd2hpbGUgcGF5aW5nIHRo
ZSBtYWludGFpbmVycyBvZiB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzIHlvdSB1c2UuCisgICAgICAg
IAorICAgICAgICBgTGVhcm4gbW9yZS4gPGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlv
bi9wa2cvcHlwaS1weXRlc3Q/dXRtX3NvdXJjZT1weXBpLXB5dGVzdCZ1dG1fbWVkaXVtPXJlZmVy
cmFsJnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlJnV0bV90ZXJtPXJlcG8+YF8KKyAgICAgICAgCisg
ICAgICAgIFNlY3VyaXR5CisgICAgICAgIF5eXl5eXl5eCisgICAgICAgIAorICAgICAgICBweXRl
c3QgaGFzIG5ldmVyIGJlZW4gYXNzb2NpYXRlZCB3aXRoIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0
eSwgYnV0IGluIGFueSBjYXNlLCB0byByZXBvcnQgYQorICAgICAgICBzZWN1cml0eSB2dWxuZXJh
YmlsaXR5IHBsZWFzZSB1c2UgdGhlIGBUaWRlbGlmdCBzZWN1cml0eSBjb250YWN0IDxodHRwczov
L3RpZGVsaWZ0LmNvbS9zZWN1cml0eT5gXy4KKyAgICAgICAgVGlkZWxpZnQgd2lsbCBjb29yZGlu
YXRlIHRoZSBmaXggYW5kIGRpc2Nsb3N1cmUuCisgICAgICAgIAorICAgICAgICAKKyAgICAgICAg
TGljZW5zZQorICAgICAgICAtLS0tLS0tCisgICAgICAgIAorICAgICAgICBDb3B5cmlnaHQgSG9s
Z2VyIEtyZWtlbCBhbmQgb3RoZXJzLCAyMDA0LTIwMjAuCisgICAgICAgIAorICAgICAgICBEaXN0
cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGBNSVRgXyBsaWNlbnNlLCBweXRlc3QgaXMg
ZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUuCisgICAgICAgIAorICAgICAgICAuLiBfYE1J
VGA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9ibG9iL21hc3Rlci9MSUNF
TlNFCisgICAgICAgIAorS2V5d29yZHM6IHRlc3QsdW5pdHRlc3QKK1BsYXRmb3JtOiB1bml4CitQ
bGF0Zm9ybTogbGludXgKK1BsYXRmb3JtOiBvc3gKK1BsYXRmb3JtOiBjeWd3aW4KK1BsYXRmb3Jt
OiB3aW4zMgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDYgLSBNYXR1cmUKK0Ns
YXNzaWZpZXI6IEludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMKK0NsYXNzaWZpZXI6IExp
Y2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlCitDbGFzc2lmaWVyOiBPcGVyYXRp
bmcgU3lzdGVtIDo6IE1hY09TIDo6IE1hY09TIFgKK0NsYXNzaWZpZXI6IE9wZXJhdGluZyBTeXN0
ZW0gOjogTWljcm9zb2Z0IDo6IFdpbmRvd3MKK0NsYXNzaWZpZXI6IE9wZXJhdGluZyBTeXN0ZW0g
OjogUE9TSVgKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAz
CitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyA6OiBPbmx5
CitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy41CitDbGFz
c2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42CitDbGFzc2lmaWVy
OiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43CitDbGFzc2lmaWVyOiBQcm9n
cmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy44CitDbGFzc2lmaWVyOiBQcm9ncmFtbWlu
ZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy45CitDbGFzc2lmaWVyOiBUb3BpYyA6OiBTb2Z0d2Fy
ZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMKK0NsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJl
IERldmVsb3BtZW50IDo6IFRlc3RpbmcKK0NsYXNzaWZpZXI6IFRvcGljIDo6IFV0aWxpdGllcwor
UmVxdWlyZXMtUHl0aG9uOiA+PTMuNQorRGVzY3JpcHRpb24tQ29udGVudC1UeXBlOiB0ZXh0L3gt
cnN0CitQcm92aWRlcy1FeHRyYTogY2hlY2txYV9teXB5CitQcm92aWRlcy1FeHRyYTogdGVzdGlu
ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L1JFQURN
RS5yc3QKaW5kZXggNTY0ZmZmZjZjOTFlLi4wNTcyNzhhOTI2YjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvUkVBRE1FLnJzdApAQCAtMSw4ICsx
LDkgQEAKLS4uIGltYWdlOjogaHR0cDovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvX3N0YXRp
Yy9weXRlc3QxLnBuZwotICAgOnRhcmdldDogaHR0cDovL2RvY3MucHl0ZXN0Lm9yZworLi4gaW1h
Z2U6OiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvX3N0YXRpYy9weXRlc3QxLnBu
ZworICAgOnRhcmdldDogaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLwogICAgOmFs
aWduOiBjZW50ZXIKICAgIDphbHQ6IHB5dGVzdAogCisKIC0tLS0tLQogCiAuLiBpbWFnZTo6IGh0
dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3B5dGVzdC5zdmcKQEAgLTE0LDIxICsxNSwyNiBA
QAogLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9weXRl
c3Quc3ZnCiAgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC8KIAot
Li4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvdmVyYWxscy9weXRlc3QtZGV2L3B5
dGVzdC9tYXN0ZXIuc3ZnCi0gICAgOnRhcmdldDogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vci9weXRl
c3QtZGV2L3B5dGVzdAorLi4gaW1hZ2U6OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvcHl0ZXN0LWRl
di9weXRlc3QvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcKKyAgICA6dGFyZ2V0OiBodHRw
czovL2NvZGVjb3YuaW8vZ2gvcHl0ZXN0LWRldi9weXRlc3QKKyAgICA6YWx0OiBDb2RlIGNvdmVy
YWdlIFN0YXR1cwogCiAuLiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRlc3QtZGV2
L3B5dGVzdC5zdmc/YnJhbmNoPW1hc3RlcgogICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNp
Lm9yZy9weXRlc3QtZGV2L3B5dGVzdAogCi0uLiBpbWFnZTo6IGh0dHBzOi8vY2kuYXBwdmV5b3Iu
Y29tL2FwaS9wcm9qZWN0cy9zdGF0dXMvbXJnYmphdWE3dDMzcGc2Yj9zdmc9dHJ1ZQotICAgIDp0
YXJnZXQ6IGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvcHl0ZXN0Ym90L3B5dGVzdAor
Li4gaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qvd29ya2Zsb3dz
L21haW4vYmFkZ2Uuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FtYWluCiAKIC4uIGltYWdlOjogaHR0
cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2Zwot
ICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW1idi9ibGFjaworICAgIDp0YXJnZXQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2sKIAogLi4gaW1hZ2U6OiBodHRwczovL3d3dy5jb2Rl
dHJpYWdlLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9iYWRnZXMvdXNlcnMuc3ZnCiAgICAgOnRhcmdl
dDogaHR0cHM6Ly93d3cuY29kZXRyaWFnZS5jb20vcHl0ZXN0LWRldi9weXRlc3QKIAorLi4gaW1h
Z2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9weXRlc3QvYmFkZ2UvP3ZlcnNp
b249bGF0ZXN0CisgICAgOnRhcmdldDogaHR0cHM6Ly9weXRlc3QucmVhZHRoZWRvY3MuaW8vZW4v
bGF0ZXN0Lz9iYWRnZT1sYXRlc3QKKyAgICA6YWx0OiBEb2N1bWVudGF0aW9uIFN0YXR1cworCiBU
aGUgYGBweXRlc3RgYCBmcmFtZXdvcmsgbWFrZXMgaXQgZWFzeSB0byB3cml0ZSBzbWFsbCB0ZXN0
cywgeWV0CiBzY2FsZXMgdG8gc3VwcG9ydCBjb21wbGV4IGZ1bmN0aW9uYWwgdGVzdGluZyBmb3Ig
YXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMuCiAKQEAgLTY1LDMzICs3MSwzMyBAQCBUbyBleGVj
dXRlIGl0OjoKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAwLjA0
IHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIAotRHVlIHRvIGBgcHl0ZXN0
YGAncyBkZXRhaWxlZCBhc3NlcnRpb24gaW50cm9zcGVjdGlvbiwgb25seSBwbGFpbiBgYGFzc2Vy
dGBgIHN0YXRlbWVudHMgYXJlIHVzZWQuIFNlZSBgZ2V0dGluZy1zdGFydGVkIDxodHRwOi8vZG9j
cy5weXRlc3Qub3JnL2VuL2xhdGVzdC9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCNvdXItZmlyc3QtdGVz
dC1ydW4+YF8gZm9yIG1vcmUgZXhhbXBsZXMuCitEdWUgdG8gYGBweXRlc3RgYCdzIGRldGFpbGVk
IGFzc2VydGlvbiBpbnRyb3NwZWN0aW9uLCBvbmx5IHBsYWluIGBgYXNzZXJ0YGAgc3RhdGVtZW50
cyBhcmUgdXNlZC4gU2VlIGBnZXR0aW5nLXN0YXJ0ZWQgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCNvdXItZmlyc3QtdGVzdC1ydW4+YF8gZm9y
IG1vcmUgZXhhbXBsZXMuCiAKIAogRmVhdHVyZXMKIC0tLS0tLS0tCiAKLS0gRGV0YWlsZWQgaW5m
byBvbiBmYWlsaW5nIGBhc3NlcnQgc3RhdGVtZW50cyA8aHR0cDovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9sYXRlc3QvYXNzZXJ0Lmh0bWw+YF8gKG5vIG5lZWQgdG8gcmVtZW1iZXIgYGBzZWxmLmFzc2Vy
dCpgYCBuYW1lcyk7CistIERldGFpbGVkIGluZm8gb24gZmFpbGluZyBgYXNzZXJ0IHN0YXRlbWVu
dHMgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9hc3NlcnQuaHRtbD5gXyAobm8g
bmVlZCB0byByZW1lbWJlciBgYHNlbGYuYXNzZXJ0KmBgIG5hbWVzKQogCiAtIGBBdXRvLWRpc2Nv
dmVyeQotICA8aHR0cDovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvZ29vZHByYWN0aWNlcy5o
dG1sI3B5dGhvbi10ZXN0LWRpc2NvdmVyeT5gXwotICBvZiB0ZXN0IG1vZHVsZXMgYW5kIGZ1bmN0
aW9uczsKKyAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9nb29kcHJhY3RpY2Vz
Lmh0bWwjcHl0aG9uLXRlc3QtZGlzY292ZXJ5PmBfCisgIG9mIHRlc3QgbW9kdWxlcyBhbmQgZnVu
Y3Rpb25zCiAKLS0gYE1vZHVsYXIgZml4dHVyZXMgPGh0dHA6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
bGF0ZXN0L2ZpeHR1cmUuaHRtbD5gXyBmb3IKLSAgbWFuYWdpbmcgc21hbGwgb3IgcGFyYW1ldHJp
emVkIGxvbmctbGl2ZWQgdGVzdCByZXNvdXJjZXM7CistIGBNb2R1bGFyIGZpeHR1cmVzIDxodHRw
czovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZml4dHVyZS5odG1sPmBfIGZvcgorICBtYW5h
Z2luZyBzbWFsbCBvciBwYXJhbWV0cml6ZWQgbG9uZy1saXZlZCB0ZXN0IHJlc291cmNlcwogCi0t
IENhbiBydW4gYHVuaXR0ZXN0IDxodHRwOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC91bml0
dGVzdC5odG1sPmBfIChvciB0cmlhbCksCi0gIGBub3NlIDxodHRwOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL2xhdGVzdC9ub3NlLmh0bWw+YF8gdGVzdCBzdWl0ZXMgb3V0IG9mIHRoZSBib3g7CistIENh
biBydW4gYHVuaXR0ZXN0IDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvdW5pdHRl
c3QuaHRtbD5gXyAob3IgdHJpYWwpLAorICBgbm9zZSA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL25vc2UuaHRtbD5gXyB0ZXN0IHN1aXRlcyBvdXQgb2YgdGhlIGJveAogCi0tIFB5
dGhvbiAyLjcsIFB5dGhvbiAzLjQrLCBQeVB5IDIuMywgSnl0aG9uIDIuNSAodW50ZXN0ZWQpOwor
LSBQeXRob24gMy41KyBhbmQgUHlQeTMKIAotLSBSaWNoIHBsdWdpbiBhcmNoaXRlY3R1cmUsIHdp
dGggb3ZlciAzMTUrIGBleHRlcm5hbCBwbHVnaW5zIDxodHRwOi8vcGx1Z2luY29tcGF0Lmhlcm9r
dWFwcC5jb20+YF8gYW5kIHRocml2aW5nIGNvbW11bml0eTsKKy0gUmljaCBwbHVnaW4gYXJjaGl0
ZWN0dXJlLCB3aXRoIG92ZXIgODUwKyBgZXh0ZXJuYWwgcGx1Z2lucyA8aHR0cDovL3BsdWdpbmNv
bXBhdC5oZXJva3VhcHAuY29tPmBfIGFuZCB0aHJpdmluZyBjb21tdW5pdHkKIAogCiBEb2N1bWVu
dGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLUZvciBmdWxsIGRvY3VtZW50YXRpb24sIGluY2x1ZGlu
ZyBpbnN0YWxsYXRpb24sIHR1dG9yaWFscyBhbmQgUERGIGRvY3VtZW50cywgcGxlYXNlIHNlZSBo
dHRwOi8vZG9jcy5weXRlc3Qub3JnLgorRm9yIGZ1bGwgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5n
IGluc3RhbGxhdGlvbiwgdHV0b3JpYWxzIGFuZCBQREYgZG9jdW1lbnRzLCBwbGVhc2Ugc2VlIGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8uCiAKIAogQnVncy9SZXF1ZXN0cwpAQCAt
MTAzLDEzICsxMDksNDcgQEAgUGxlYXNlIHVzZSB0aGUgYEdpdEh1YiBpc3N1ZSB0cmFja2VyIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWUKIENoYW5nZWxvZwogLS0t
LS0tLS0tCiAKLUNvbnN1bHQgdGhlIGBDaGFuZ2Vsb2cgPGh0dHA6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sPmBfXyBwYWdlIGZvciBmaXhlcyBhbmQgZW5oYW5jZW1l
bnRzIG9mIGVhY2ggdmVyc2lvbi4KK0NvbnN1bHQgdGhlIGBDaGFuZ2Vsb2cgPGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbD5gX18gcGFnZSBmb3IgZml4ZXMg
YW5kIGVuaGFuY2VtZW50cyBvZiBlYWNoIHZlcnNpb24uCisKKworU3VwcG9ydCBweXRlc3QKKy0t
LS0tLS0tLS0tLS0tCisKK2BPcGVuIENvbGxlY3RpdmVgXyBpcyBhbiBvbmxpbmUgZnVuZGluZyBw
bGF0Zm9ybSBmb3Igb3BlbiBhbmQgdHJhbnNwYXJlbnQgY29tbXVuaXRpZXMuCitJdCBwcm92aWRl
cyB0b29scyB0byByYWlzZSBtb25leSBhbmQgc2hhcmUgeW91ciBmaW5hbmNlcyBpbiBmdWxsIHRy
YW5zcGFyZW5jeS4KKworSXQgaXMgdGhlIHBsYXRmb3JtIG9mIGNob2ljZSBmb3IgaW5kaXZpZHVh
bHMgYW5kIGNvbXBhbmllcyB0aGF0IHdhbnQgdG8gbWFrZSBvbmUtdGltZSBvcgorbW9udGhseSBk
b25hdGlvbnMgZGlyZWN0bHkgdG8gdGhlIHByb2plY3QuCisKK1NlZSBtb3JlIGRldGFpbHMgaW4g
dGhlIGBweXRlc3QgY29sbGVjdGl2ZWBfLgorCisuLiBfT3BlbiBDb2xsZWN0aXZlOiBodHRwczov
L29wZW5jb2xsZWN0aXZlLmNvbQorLi4gX3B5dGVzdCBjb2xsZWN0aXZlOiBodHRwczovL29wZW5j
b2xsZWN0aXZlLmNvbS9weXRlc3QKKworCitweXRlc3QgZm9yIGVudGVycHJpc2UKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitBdmFpbGFibGUgYXMgcGFydCBvZiB0aGUgVGlkZWxpZnQgU3Vic2Ny
aXB0aW9uLgorCitUaGUgbWFpbnRhaW5lcnMgb2YgcHl0ZXN0IGFuZCB0aG91c2FuZHMgb2Ygb3Ro
ZXIgcGFja2FnZXMgYXJlIHdvcmtpbmcgd2l0aCBUaWRlbGlmdCB0byBkZWxpdmVyIGNvbW1lcmNp
YWwgc3VwcG9ydCBhbmQKK21haW50ZW5hbmNlIGZvciB0aGUgb3BlbiBzb3VyY2UgZGVwZW5kZW5j
aWVzIHlvdSB1c2UgdG8gYnVpbGQgeW91ciBhcHBsaWNhdGlvbnMuCitTYXZlIHRpbWUsIHJlZHVj
ZSByaXNrLCBhbmQgaW1wcm92ZSBjb2RlIGhlYWx0aCwgd2hpbGUgcGF5aW5nIHRoZSBtYWludGFp
bmVycyBvZiB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzIHlvdSB1c2UuCisKK2BMZWFybiBtb3JlLiA8
aHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9weXBpLXB5dGVzdD91dG1fc291
cmNlPXB5cGktcHl0ZXN0JnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWVudGVycHJp
c2UmdXRtX3Rlcm09cmVwbz5gXworCitTZWN1cml0eQorXl5eXl5eXl4KKworcHl0ZXN0IGhhcyBu
ZXZlciBiZWVuIGFzc29jaWF0ZWQgd2l0aCBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIGJ1dCBp
biBhbnkgY2FzZSwgdG8gcmVwb3J0IGEKK3NlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgcGxlYXNlIHVz
ZSB0aGUgYFRpZGVsaWZ0IHNlY3VyaXR5IGNvbnRhY3QgPGh0dHBzOi8vdGlkZWxpZnQuY29tL3Nl
Y3VyaXR5PmBfLgorVGlkZWxpZnQgd2lsbCBjb29yZGluYXRlIHRoZSBmaXggYW5kIGRpc2Nsb3N1
cmUuCiAKIAogTGljZW5zZQogLS0tLS0tLQogCi1Db3B5cmlnaHQgSG9sZ2VyIEtyZWtlbCBhbmQg
b3RoZXJzLCAyMDA0LTIwMTcuCitDb3B5cmlnaHQgSG9sZ2VyIEtyZWtlbCBhbmQgb3RoZXJzLCAy
MDA0LTIwMjAuCiAKIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgYE1JVGBfIGxp
Y2Vuc2UsIHB5dGVzdCBpcyBmcmVlIGFuZCBvcGVuIHNvdXJjZSBzb2Z0d2FyZS4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvUkVMRUFTSU5HLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L1JFTEVBU0lORy5y
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZmY5NWJlOTJlZGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9SRUxFQVNJTkcucnN0CkBAIC0wLDAgKzEs
MTM1IEBACitSZWxlYXNlIFByb2NlZHVyZQorLS0tLS0tLS0tLS0tLS0tLS0KKworT3VyIGN1cnJl
bnQgcG9saWN5IGZvciByZWxlYXNpbmcgaXMgdG8gYWltIGZvciBhIGJ1Zy1maXggcmVsZWFzZSBl
dmVyeSBmZXcgd2Vla3MgYW5kIGEgbWlub3IgcmVsZWFzZSBldmVyeSAyLTMgbW9udGhzLiBUaGUg
aWRlYQoraXMgdG8gZ2V0IGZpeGVzIGFuZCBuZXcgZmVhdHVyZXMgb3V0IGluc3RlYWQgb2YgdHJ5
aW5nIHRvIGNyYW0gYSB0b24gb2YgZmVhdHVyZXMgaW50byBhIHJlbGVhc2UgYW5kIGJ5IGNvbnNl
cXVlbmNlCit0YWtpbmcgYSBsb3Qgb2YgdGltZSB0byBtYWtlIGEgbmV3IG9uZS4KKworVGhlIGdp
dCBjb21tYW5kcyBhc3N1bWUgdGhlIGZvbGxvd2luZyByZW1vdGVzIGFyZSBzZXR1cDoKKworKiBg
YG9yaWdpbmBgOiB5b3VyIG93biBmb3JrIG9mIHRoZSByZXBvc2l0b3J5LgorKiBgYHVwc3RyZWFt
YGA6IHRoZSBgYHB5dGVzdC1kZXYvcHl0ZXN0YGAgb2ZmaWNpYWwgcmVwb3NpdG9yeS4KKworUHJl
cGFyaW5nOiBBdXRvbWF0aWMgTWV0aG9kCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwor
V2UgaGF2ZSBkZXZlbG9wZWQgYW4gYXV0b21hdGVkIHdvcmtmbG93IGZvciByZWxlYXNlcywgdGhh
dCB1c2VzIEdpdEh1YiB3b3JrZmxvd3MgYW5kIGlzIHRyaWdnZXJlZAorYnkgb3BlbmluZyBhbiBp
c3N1ZS4KKworQnVnLWZpeCByZWxlYXNlcworXl5eXl5eXl5eXl5eXl5eXgorCitBIGJ1Zy1maXgg
cmVsZWFzZSBpcyBhbHdheXMgZG9uZSBmcm9tIGEgbWFpbnRlbmFuY2UgYnJhbmNoLCBzbyBmb3Ig
ZXhhbXBsZSB0byByZWxlYXNlIGJ1Zy1maXgKK2BgNS4xLjJgYCwgb3BlbiBhIG5ldyBpc3N1ZSBh
bmQgYWRkIHRoaXMgY29tbWVudCB0byB0aGUgYm9keTo6CisKKyAgICBAcHl0ZXN0Ym90IHBsZWFz
ZSBwcmVwYXJlIHJlbGVhc2UgZnJvbSA1LjEueAorCitXaGVyZSBgYDUuMS54YGAgaXMgdGhlIG1h
aW50ZW5hbmNlIGJyYW5jaCBmb3IgdGhlIGBgNS4xYGAgc2VyaWVzLgorCitUaGUgYXV0b21hdGVk
IHdvcmtmbG93IHdpbGwgcHVibGlzaCBhIFBSIGZvciBhIGJyYW5jaCBgYHJlbGVhc2UtNS4xLjJg
YAorYW5kIG5vdGlmeSBpdCBhcyBhIGNvbW1lbnQgaW4gdGhlIGlzc3VlLgorCitNaW5vciByZWxl
YXNlcworXl5eXl5eXl5eXl5eXl4KKworMS4gQ3JlYXRlIGEgbmV3IG1haW50ZW5hbmNlIGJyYW5j
aCBmcm9tIGBgbWFzdGVyYGA6OgorCisgICAgICAgIGdpdCBmZXRjaCAtLWFsbAorICAgICAgICBn
aXQgYnJhbmNoIDUuMi54IHVwc3RyZWFtL21hc3RlcgorICAgICAgICBnaXQgcHVzaCB1cHN0cmVh
bSA1LjIueAorCisyLiBPcGVuIGEgbmV3IGlzc3VlIGFuZCBhZGQgdGhpcyBjb21tZW50IHRvIHRo
ZSBib2R5OjoKKworICAgIEBweXRlc3Rib3QgcGxlYXNlIHByZXBhcmUgcmVsZWFzZSBmcm9tIDUu
Mi54CisKK1RoZSBhdXRvbWF0ZWQgd29ya2Zsb3cgd2lsbCBwdWJsaXNoIGEgUFIgZm9yIGEgYnJh
bmNoIGBgcmVsZWFzZS01LjIuMGBgIGFuZAorbm90aWZ5IGl0IGFzIGEgY29tbWVudCBpbiB0aGUg
aXNzdWUuCisKK01ham9yIGFuZCByZWxlYXNlIGNhbmRpZGF0ZXMKK15eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl4KKworMS4gQ3JlYXRlIGEgbmV3IG1haW50ZW5hbmNlIGJyYW5jaCBmcm9tIGBg
bWFzdGVyYGA6OgorCisgICAgICAgIGdpdCBmZXRjaCAtLWFsbAorICAgICAgICBnaXQgYnJhbmNo
IDYuMC54IHVwc3RyZWFtL21hc3RlcgorICAgICAgICBnaXQgcHVzaCB1cHN0cmVhbSA2LjAueAor
CisyLiBGb3IgYSAqKm1ham9yIHJlbGVhc2UqKiwgb3BlbiBhIG5ldyBpc3N1ZSBhbmQgYWRkIHRo
aXMgY29tbWVudCBpbiB0aGUgYm9keTo6CisKKyAgICAgICAgQHB5dGVzdGJvdCBwbGVhc2UgcHJl
cGFyZSBtYWpvciByZWxlYXNlIGZyb20gNi4wLngKKworICAgRm9yIGEgKipyZWxlYXNlIGNhbmRp
ZGF0ZSoqLCB0aGUgY29tbWVudCBtdXN0IGJlIChUT0RPOiBgIzc1NTEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzU1MT5gX18pOjoKKworICAgICAgICBAcHl0
ZXN0Ym90IHBsZWFzZSBwcmVwYXJlIHJlbGVhc2UgY2FuZGlkYXRlIGZyb20gNi4wLngKKworVGhl
IGF1dG9tYXRlZCB3b3JrZmxvdyB3aWxsIHB1Ymxpc2ggYSBQUiBmb3IgYSBicmFuY2ggYGByZWxl
YXNlLTYuMC4wYGAgYW5kCitub3RpZnkgaXQgYXMgYSBjb21tZW50IGluIHRoZSBpc3N1ZS4KKwor
QXQgdGhpcyBwb2ludCBvbiwgdGhpcyBmb2xsb3dzIHRoZSBzYW1lIHdvcmtmbG93IGFzIG90aGVy
IG1haW50ZW5hbmNlIGJyYW5jaGVzOiBidWctZml4ZXMgYXJlIG1lcmdlZAoraW50byBgYG1hc3Rl
cmBgIGFuZCBwb3J0ZWQgYmFjayB0byB0aGUgbWFpbnRlbmFuY2UgYnJhbmNoLCBldmVuIGZvciBy
ZWxlYXNlIGNhbmRpZGF0ZXMuCisKKyoqQSBub3RlIGFib3V0IHJlbGVhc2UgY2FuZGlkYXRlcyoq
CisKK0R1cmluZyByZWxlYXNlIGNhbmRpZGF0ZXMgd2UgY2FuIG1lcmdlIHNtYWxsIGltcHJvdmVt
ZW50cyBpbnRvCit0aGUgbWFpbnRlbmFuY2UgYnJhbmNoIGJlZm9yZSByZWxlYXNpbmcgdGhlIGZp
bmFsIG1ham9yIHZlcnNpb24sIGhvd2V2ZXIgd2UgbXVzdCB0YWtlIGNhcmUKK3RvIGF2b2lkIGlu
dHJvZHVjaW5nIGJpZyBjaGFuZ2VzIGF0IHRoaXMgc3RhZ2UuCisKK1ByZXBhcmluZzogTWFudWFs
IE1ldGhvZAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyoqSW1wb3J0YW50Kio6IHB5dGVz
dCByZWxlYXNlcyBtdXN0IGJlIHByZXBhcmVkIG9uICoqTGludXgqKiBiZWNhdXNlIHRoZSBkb2Nz
IGFuZCBleGFtcGxlcyBleHBlY3QKK3RvIGJlIGV4ZWN1dGVkIG9uIHRoYXQgcGxhdGZvcm0uCisK
K1RvIHJlbGVhc2UgYSB2ZXJzaW9uIGBgTUFKT1IuTUlOT1IuUEFUQ0hgYCwgZm9sbG93IHRoZXNl
IHN0ZXBzOgorCisjLiBGb3IgbWFqb3IgYW5kIG1pbm9yIHJlbGVhc2VzLCBjcmVhdGUgYSBuZXcg
YnJhbmNoIGBgTUFKT1IuTUlOT1IueGBgIGZyb20KKyAgIGBgdXBzdHJlYW0vbWFzdGVyYGAgYW5k
IHB1c2ggaXQgdG8gYGB1cHN0cmVhbWBgLgorCisjLiBDcmVhdGUgYSBicmFuY2ggYGByZWxlYXNl
LU1BSk9SLk1JTk9SLlBBVENIYGAgZnJvbSB0aGUgYGBNQUpPUi5NSU5PUi54YGAgYnJhbmNoLgor
CisgICBFbnN1cmUgeW91ciBhcmUgdXBkYXRlZCBhbmQgaW4gYSBjbGVhbiB3b3JraW5nIHRyZWUu
CisKKyMuIFVzaW5nIGBgdG94YGAsIGdlbmVyYXRlIGRvY3MsIGNoYW5nZWxvZywgYW5ub3VuY2Vt
ZW50czo6CisKKyAgICAkIHRveCAtZSByZWxlYXNlIC0tIE1BSk9SLk1JTk9SLlBBVENICisKKyAg
IFRoaXMgd2lsbCBnZW5lcmF0ZSBhIGNvbW1pdCB3aXRoIGFsbCB0aGUgY2hhbmdlcyByZWFkeSBm
b3IgcHVzaGluZy4KKworIy4gT3BlbiBhIFBSIGZvciB0aGUgYGByZWxlYXNlLU1BSk9SLk1JTk9S
LlBBVENIYGAgYnJhbmNoIHRhcmdldGluZyBgYE1BSk9SLk1JTk9SLnhgYC4KKworCitSZWxlYXNp
bmcKK35+fn5+fn5+fgorCitCb3RoIGF1dG9tYXRpYyBhbmQgbWFudWFsIHByb2Nlc3NlcyBkZXNj
cmliZWQgYWJvdmUgZm9sbG93IHRoZSBzYW1lIHN0ZXBzIGZyb20gdGhpcyBwb2ludCBvbndhcmQu
CisKKyMuIEFmdGVyIGFsbCB0ZXN0cyBwYXNzIGFuZCB0aGUgUFIgaGFzIGJlZW4gYXBwcm92ZWQs
IHRhZyB0aGUgcmVsZWFzZSBjb21taXQKKyAgIGluIHRoZSBgYHJlbGVhc2UtTUFKT1IuTUlOT1Iu
UEFUQ0hgYCBicmFuY2ggYW5kIHB1c2ggaXQuIFRoaXMgd2lsbCBwdWJsaXNoIHRvIFB5UEk6Ogor
CisgICAgIGdpdCBmZXRjaCAtLWFsbAorICAgICBnaXQgdGFnIE1BSk9SLk1JTk9SLlBBVENIIHVw
c3RyZWFtL3JlbGVhc2UtTUFKT1IuTUlOT1IuUEFUQ0gKKyAgICAgZ2l0IHB1c2ggZ2l0QGdpdGh1
Yi5jb206cHl0ZXN0LWRldi9weXRlc3QuZ2l0IE1BSk9SLk1JTk9SLlBBVENICisKKyAgIFdhaXQg
Zm9yIHRoZSBkZXBsb3kgdG8gY29tcGxldGUsIHRoZW4gbWFrZSBzdXJlIGl0IGlzIGBhdmFpbGFi
bGUgb24gUHlQSSA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdD5gXy4KKworIy4gTWVy
Z2UgdGhlIFBSLgorCisjLiBDaGVycnktcGljayB0aGUgQ0hBTkdFTE9HIC8gYW5ub3VuY2UgZmls
ZXMgdG8gdGhlIGBgbWFzdGVyYGAgYnJhbmNoOjoKKworICAgICAgIGdpdCBmZXRjaCAtLWFsbCAt
LXBydW5lCisgICAgICAgZ2l0IGNoZWNrb3V0IG9yaWdpbi9tYXN0ZXIgLWIgY2hlcnJ5LXBpY2st
cmVsZWFzZQorICAgICAgIGdpdCBjaGVycnktcGljayAteCAtbTEgdXBzdHJlYW0vTUFKT1IuTUlO
T1IueAorCisjLiBPcGVuIGEgUFIgZm9yIGBgY2hlcnJ5LXBpY2stcmVsZWFzZWBgIGFuZCBtZXJn
ZSBpdCBvbmNlIENJIHBhc3Nlcy4gTm8gbmVlZCB0byB3YWl0IGZvciBhcHByb3ZhbHMgaWYgdGhl
cmUgd2VyZSBubyBjb25mbGljdHMgb24gdGhlIHByZXZpb3VzIHN0ZXAuCisKKyMuIFNlbmQgYW4g
ZW1haWwgYW5ub3VuY2VtZW50IHdpdGggdGhlIGNvbnRlbnRzIGZyb206OgorCisgICAgIGRvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTxWRVJTSU9OPi5yc3QKKworICAgVG8gdGhlIGZvbGxvd2luZyBt
YWlsaW5nIGxpc3RzOgorCisgICAqIHB5dGVzdC1kZXZAcHl0aG9uLm9yZyAoYWxsIHJlbGVhc2Vz
KQorICAgKiBweXRob24tYW5ub3VuY2UtbGlzdEBweXRob24ub3JnIChhbGwgcmVsZWFzZXMpCisg
ICAqIHRlc3RpbmctaW4tcHl0aG9uQGxpc3RzLmlkeWxsLm9yZyAob25seSBtYWpvci9taW5vciBy
ZWxlYXNlcykKKworICAgQW5kIGFubm91bmNlIGl0IG9uIGBUd2l0dGVyIDxodHRwczovL3R3aXR0
ZXIuY29tLz5gXyB3aXRoIHRoZSBgYCNweXRlc3RgYCBoYXNodGFnLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvVElERUxJRlQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvVElERUxJRlQucnN0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjE4ZjQ3OTNmODE1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvVElERUxJRlQucnN0CkBAIC0wLDAgKzEsNTggQEAKKz09PT09
PT09CitUaWRlbGlmdAorPT09PT09PT0KKworcHl0ZXN0IGlzIGEgbWVtYmVyIG9mIGBUaWRlbGlm
dGBfLiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdGhlIGNvcmUgdGVhbSBtYW5hZ2VzCitU
aWRlbGlmdC1yZWxhdGVkIGFjdGl2aXRpZXMuCisKK1doYXQgaXMgaXQKKz09PT09PT09PT0KKwor
VGlkZWxpZnQgYWltcyB0byBtYWtlIE9wZW4gU291cmNlIHN1c3RhaW5hYmxlIGJ5IG9mZmVyaW5n
IHN1YnNjcmlwdGlvbnMgdG8gY29tcGFuaWVzIHdoaWNoIHJlbHkKK29uIE9wZW4gU291cmNlIHBh
Y2thZ2VzLiBUaGlzIHN1YnNjcmlwdGlvbiBhbGxvd3MgaXQgdG8gcGF5IG1haW50YWluZXJzIG9m
IHRob3NlIE9wZW4gU291cmNlCitwYWNrYWdlcyB0byBhaWQgc3VzdGFpbmFiaWxpdHkgb2YgdGhl
IHdvcmsuCisKK0l0IGlzIHRoZSBwZXJmZWN0IHBsYXRmb3JtIGZvciBjb21wYW5pZXMgdGhhdCB3
YW50IHRvIHN1cHBvcnQgT3BlbiBTb3VyY2UgcGFja2FnZXMgYW5kIGF0IHRoZSBzYW1lCit0aW1l
IG9idGFpbiBhc3N1cmFuY2VzIHJlZ2FyZGluZyBtYWludGVuYW5jZSwgcXVhbGl0eSBhbmQgc2Vj
dXJpdHkuCisKK0Z1bmRzCis9PT09PQorCitJdCB3YXMgZGVjaWRlZCBpbiB0aGUgYG1haWxpbmcg
bGlzdGBfIHRoYXQgdGhlIFRpZGVsaWZ0IGNvbnRyaWJ1dGlvbiB3aWxsIGJlIHNwbGl0IGV2ZW5s
eSBiZXR3ZWVuCittZW1iZXJzIG9mIHRoZSBgY29udHJpYnV0b3JzIHRlYW1gXyBpbnRlcmVzdGVk
IGluIHJlY2VpdmluZyBmdW5kaW5nLgorCitUaGUgY3VycmVudCBsaXN0IG9mIGNvbnRyaWJ1dG9y
cyByZWNlaXZpbmcgZnVuZGluZyBhcmU6CisKKyogYEBhc290dGlsZWBfCisqIGBAbmljb2RkZW11
c2BfCisKK0NvbnRyaWJ1dG9ycyBpbnRlcmVzdGVkIGluIHJlY2VpdmluZyBhIHBhcnQgb2YgdGhl
IGZ1bmRzIGp1c3QgbmVlZCB0byBzdWJtaXQgYSBQUiBhZGRpbmcgdGhlaXIKK25hbWUgdG8gdGhl
IGxpc3QuIENvbnRyaWJ1dG9ycyB0aGF0IHdhbnQgdG8gc3RvcCByZWNlaXZpbmcgdGhlIGZ1bmRz
IHNob3VsZCBhbHNvIHN1Ym1pdCBhIFBSCitpbiB0aGUgc2FtZSB3YXkuCisKK1RoZSBQUiBzaG91
bGQgbWVudGlvbiBgQHB5dGVzdC1kZXYvdGlkZWxpZnQtYWRtaW5zYF8gc28gYXBwcm9wcmlhdGUg
Y2hhbmdlcworY2FuIGJlIG1hZGUgaW4gdGhlIFRpZGVsaWZ0IHBsYXRmb3JtLgorCitBZnRlciB0
aGUgUFIgaGFzIGJlZW4gYWNjZXB0ZWQgYW5kIG1lcmdlZCwgdGhlIGNvbnRyaWJ1dG9yIHNob3Vs
ZCByZWdpc3RlciBpbiB0aGUgYFRpZGVsaWZ0YF8KK3BsYXRmb3JtIGFuZCBmb2xsb3cgdGhlIGlu
c3RydWN0aW9ucyB0aGVyZSwgaW5jbHVkaW5nIHNpZ25pbmcgYW4gYGFncmVlbWVudGBfLgorCitB
ZG1pbnMKKz09PT09PQorCitBIGZldyBwZW9wbGUgaGF2ZSBhZG1pbiBhY2Nlc3MgdG8gdGhlIFRp
ZGVsaWZ0IGRhc2hib2FyZCB0byBtYWtlIGNoYW5nZXMuIFRob3NlIHBlb3BsZQorYXJlIHBhcnQg
b2YgdGhlIGBAcHl0ZXN0LWRldi90aWRlbGlmdC1hZG1pbnNgXyB0ZWFtLgorCitgQ29yZSBjb250
cmlidXRvcnNgXyBpbnRlcmVzdGVkIGluIGhlbHBpbmcgb3V0IHdpdGggVGlkZWxpZnQgbWFpbnRl
bmFuY2UgYXJlIHdlbGNvbWUhIFdlIGRvbid0CitleHBlY3QgbXVjaCB3b3JrIGhlcmUgb3RoZXIg
dGhhbiB0aGUgb2NjYXNpb25hbCBhZGRpbmcvcmVtb3ZhbCBvZiBhIGNvbnRyaWJ1dG9yIGZyb20g
cmVjZWl2aW5nCitmdW5kcy4gSnVzdCBkcm9wIGEgbGluZSB0byBvbmUgb2YgdGhlIGBAcHl0ZXN0
LWRldi90aWRlbGlmdC1hZG1pbnNgXyBvciB1c2UgdGhlIG1haWxpbmcgbGlzdC4KKworCisuLiBf
YFRpZGVsaWZ0YDogaHR0cHM6Ly90aWRlbGlmdC5jb20KKy4uIF9gbWFpbGluZyBsaXN0YDogaHR0
cHM6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGVzdC1kZXYvMjAxOS1NYXkvMDA0NzE2
Lmh0bWwKKy4uIF9gY29udHJpYnV0b3JzIHRlYW1gOiBodHRwczovL2dpdGh1Yi5jb20vb3Jncy9w
eXRlc3QtZGV2L3RlYW1zL2NvbnRyaWJ1dG9ycworLi4gX2Bjb3JlIGNvbnRyaWJ1dG9yc2A6IGh0
dHBzOi8vZ2l0aHViLmNvbS9vcmdzL3B5dGVzdC1kZXYvdGVhbXMvY29yZS9tZW1iZXJzCisuLiBf
YEBweXRlc3QtZGV2L3RpZGVsaWZ0LWFkbWluc2A6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL3B5
dGVzdC1kZXYvdGVhbXMvdGlkZWxpZnQtYWRtaW5zL21lbWJlcnMKKy4uIF9gYWdyZWVtZW50YDog
aHR0cHM6Ly90aWRlbGlmdC5jb20vZG9jcy9saWZ0aW5nL2FncmVlbWVudAorCisuLiBfYEBhc290
dGlsZWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc290dGlsZQorLi4gX2BAbmljb2RkZW11c2A6IGh0
dHBzOi8vZ2l0aHViLmNvbS9uaWNvZGRlbXVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MWYwNTA0ZTQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAs
MCBAQAotX19hbGxfXyA9IFsnX192ZXJzaW9uX18nXQotCi10cnk6Ci0gICAgZnJvbSAuX3ZlcnNp
b24gaW1wb3J0IHZlcnNpb24gYXMgX192ZXJzaW9uX18KLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAg
ICAjIGJyb2tlbiBpbnN0YWxsYXRpb24sIHdlIGRvbid0IGV2ZW4gdHJ5Ci0gICAgIyB1bmtub3du
IG9ubHkgd29ya3MgYmVjYXVzZSB3ZSBkbyBwb29yIG1hbnMgdmVyc2lvbiBjb21wYXJlCi0gICAg
X192ZXJzaW9uX18gPSAndW5rbm93bicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
X2FyZ2NvbXBsZXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MjVhNzVmOWYxYi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMTAzICswLDAgQEAKLQotIiIiYWxsb3cgYmFzaC1jb21wbGV0aW9uIGZvciBhcmdwYXJzZSB3
aXRoIGFyZ2NvbXBsZXRlIGlmIGluc3RhbGxlZAotbmVlZHMgYXJnY29tcGxldGU+PTAuNS42IGZv
ciBweXRob24gMy4yLzMuMyAob2xkZXIgdmVyc2lvbnMgZmFpbAotdG8gZmluZCB0aGUgbWFnaWMg
c3RyaW5nLCBzbyBfQVJHQ09NUExFVEUgZW52LiB2YXIgaXMgbmV2ZXIgc2V0LCBhbmQKLXRoaXMg
ZG9lcyBub3QgbmVlZCBzcGVjaWFsIGNvZGUuCi0KLUZ1bmN0aW9uIHRyeV9hcmdjb21wbGV0ZShw
YXJzZXIpIHNob3VsZCBiZSBjYWxsZWQgZGlyZWN0bHkgYmVmb3JlCi10aGUgY2FsbCB0byBBcmd1
bWVudFBhcnNlci5wYXJzZV9hcmdzKCkuCi0KLVRoZSBmaWxlc2NvbXBsZXRlciBpcyB3aGF0IHlv
dSBub3JtYWxseSB3b3VsZCB1c2Ugb24gdGhlIHBvc2l0aW9uYWwKLWFyZ3VtZW50cyBzcGVjaWZp
Y2F0aW9uLCBpbiBvcmRlciB0byBnZXQgImRpcm5hbWUvIiBhZnRlciAiZGlybjxUQUI+IgotaW5z
dGVhZCBvZiB0aGUgZGVmYXVsdCAiZGlybmFtZSAiOgotCi0gICBvcHRwYXJzZXIuYWRkX2FyZ3Vt
ZW50KENvbmZpZy5fZmlsZV9vcl9kaXIsIG5hcmdzPScqJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkuY29tcGxldGVyPWZpbGVzY29tcGxldGVyCi0KLU90aGVyLCBhcHBsaWNhdGlv
biBzcGVjaWZpYywgY29tcGxldGVycyBzaG91bGQgZ28gaW4gdGhlIGZpbGUKLWRvaW5nIHRoZSBh
ZGRfYXJndW1lbnQgY2FsbHMgYXMgdGhleSBuZWVkIHRvIGJlIHNwZWNpZmllZCBhcyAuY29tcGxl
dGVyCi1hdHRyaWJ1dGVzIGFzIHdlbGwuIChJZiBhcmdjb21wbGV0ZSBpcyBub3QgaW5zdGFsbGVk
LCB0aGUgZnVuY3Rpb24gdGhlCi1hdHRyaWJ1dGUgcG9pbnRzIHRvIHdpbGwgbm90IGJlIHVzZWQp
LgotCi1TUEVFRFVQCi09PT09PT09Ci1UaGUgZ2VuZXJpYyBhcmdjb21wbGV0ZSBzY3JpcHQgZm9y
IGJhc2gtY29tcGxldGlvbgotKC9ldGMvYmFzaF9jb21wbGV0aW9uLmQvcHl0aG9uLWFyZ2NvbXBs
ZXRlLnNoICkKLXVzZXMgYSBweXRob24gcHJvZ3JhbSB0byBkZXRlcm1pbmUgc3RhcnR1cCBzY3Jp
cHQgZ2VuZXJhdGVkIGJ5IHBpcC4KLVlvdSBjYW4gc3BlZWQgdXAgY29tcGxldGlvbiBzb21ld2hh
dCBieSBjaGFuZ2luZyB0aGlzIHNjcmlwdCB0byBpbmNsdWRlCi0gICMgUFlUSE9OX0FSR0NPTVBM
RVRFX09LCi1zbyB0aGUgdGhlIHB5dGhvbi1hcmdjb21wbGV0ZS1jaGVjay1lYXN5LWluc3RhbGwt
c2NyaXB0IGRvZXMgbm90Ci1uZWVkIHRvIGJlIGNhbGxlZCB0byBmaW5kIHRoZSBlbnRyeSBwb2lu
dCBvZiB0aGUgY29kZSBhbmQgc2VlIGlmIHRoYXQgaXMKLW1hcmtlZCAgd2l0aCBQWVRIT05fQVJH
Q09NUExFVEVfT0sKLQotSU5TVEFMTC9ERUJVR0dJTkcKLT09PT09PT09PT09PT09PT09Ci1UbyBp
bmNsdWRlIHRoaXMgc3VwcG9ydCBpbiBhbm90aGVyIGFwcGxpY2F0aW9uIHRoYXQgaGFzIHNldHVw
LnB5IGdlbmVyYXRlZAotc2NyaXB0czoKLS0gYWRkIHRoZSBsaW5lOgotICAgICMgUFlUSE9OX0FS
R0NPTVBMRVRFX09LCi0gIG5lYXIgdGhlIHRvcCBvZiB0aGUgbWFpbiBweXRob24gZW50cnkgcG9p
bnQKLS0gaW5jbHVkZSBpbiB0aGUgZmlsZSBjYWxsaW5nIHBhcnNlX2FyZ3MoKToKLSAgICBmcm9t
IF9hcmdjb21wbGV0ZSBpbXBvcnQgdHJ5X2FyZ2NvbXBsZXRlLCBmaWxlc2NvbXBsZXRlcgotICAg
LCBjYWxsIHRyeV9hcmdjb21wbGV0ZSBqdXN0IGJlZm9yZSBwYXJzZV9hcmdzKCksIGFuZCBvcHRp
b25hbGx5IGFkZAotICAgZmlsZXNjb21wbGV0ZXIgdG8gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRz
JyBhZGRfYXJndW1lbnQoKQotSWYgdGhpbmdzIGRvIG5vdCB3b3JrIHJpZ2h0IGF3YXk6Ci0tIHN3
aXRjaCBvbiBhcmdjb21wbGV0ZSBkZWJ1Z2dpbmcgd2l0aCAoYWxzbyBoZWxwZnVsIHdoZW4gZG9p
bmcgY3VzdG9tCi0gIGNvbXBsZXRlcnMpOgotICAgIGV4cG9ydCBfQVJDX0RFQlVHPTEKLS0gcnVu
OgotICAgIHB5dGhvbi1hcmdjb21wbGV0ZS1jaGVjay1lYXN5LWluc3RhbGwtc2NyaXB0ICQod2hp
Y2ggYXBwbmFtZSkKLSAgICBlY2hvICQ/Ci0gIHdpbGwgZWNobyAwIGlmIHRoZSBtYWdpYyBsaW5l
IGhhcyBiZWVuIGZvdW5kLCAxIGlmIG5vdAotLSBzb21ldGltZXMgaXQgaGVscHMgdG8gZmluZCBl
YXJseSBvbiBlcnJvcnMgdXNpbmc6Ci0gICAgX0FSR0NPTVBMRVRFPTEgX0FSQ19ERUJVRz0xIGFw
cG5hbWUKLSAgd2hpY2ggc2hvdWxkIHRocm93IGEgS2V5RXJyb3I6ICdDT01QTElORScgKHdoaWNo
IGlzIHByb3Blcmx5IHNldCBieSB0aGUKLSAgZ2xvYmFsIGFyZ2NvbXBsZXRlIHNjcmlwdCkuCi0i
IiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKLWltcG9ydCBvcwotZnJvbSBnbG9iIGltcG9ydCBnbG9i
Ci0KLQotY2xhc3MgRmFzdEZpbGVzQ29tcGxldGVyOgotICAgICdGYXN0IGZpbGUgY29tcGxldGVy
IGNsYXNzJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpcmVjdG9yaWVzPVRydWUpOgotICAg
ICAgICBzZWxmLmRpcmVjdG9yaWVzID0gZGlyZWN0b3JpZXMKLQotICAgIGRlZiBfX2NhbGxfXyhz
ZWxmLCBwcmVmaXgsICoqa3dhcmdzKToKLSAgICAgICAgIiIib25seSBjYWxsZWQgb24gbm9uIG9w
dGlvbiBjb21wbGV0aW9ucyIiIgotICAgICAgICBpZiBvcy5wYXRoLnNlcCBpbiBwcmVmaXhbMTpd
OgotICAgICAgICAgICAgcHJlZml4X2RpciA9IGxlbihvcy5wYXRoLmRpcm5hbWUocHJlZml4KSAr
IG9zLnBhdGguc2VwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJlZml4X2RpciA9IDAK
LSAgICAgICAgY29tcGxldGlvbiA9IFtdCi0gICAgICAgIGdsb2JiZWQgPSBbXQotICAgICAgICBp
ZiAnKicgbm90IGluIHByZWZpeCBhbmQgJz8nIG5vdCBpbiBwcmVmaXg6Ci0gICAgICAgICAgICAj
IHdlIGFyZSBvbiB1bml4LCBvdGhlcndpc2Ugbm8gYmFzaAotICAgICAgICAgICAgaWYgbm90IHBy
ZWZpeCBvciBwcmVmaXhbLTFdID09IG9zLnBhdGguc2VwOgotICAgICAgICAgICAgICAgIGdsb2Ji
ZWQuZXh0ZW5kKGdsb2IocHJlZml4ICsgJy4qJykpCi0gICAgICAgICAgICBwcmVmaXggKz0gJyon
Ci0gICAgICAgIGdsb2JiZWQuZXh0ZW5kKGdsb2IocHJlZml4KSkKLSAgICAgICAgZm9yIHggaW4g
c29ydGVkKGdsb2JiZWQpOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcih4KToKLSAgICAg
ICAgICAgICAgICB4ICs9ICcvJwotICAgICAgICAgICAgIyBhcHBlbmQgc3RyaXBwaW5nIHRoZSBw
cmVmaXggKGxpa2UgYmFzaCwgbm90IGxpa2UgY29tcGdlbikKLSAgICAgICAgICAgIGNvbXBsZXRp
b24uYXBwZW5kKHhbcHJlZml4X2RpcjpdKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbgotCi0K
LWlmIG9zLmVudmlyb24uZ2V0KCdfQVJHQ09NUExFVEUnKToKLSAgICB0cnk6Ci0gICAgICAgIGlt
cG9ydCBhcmdjb21wbGV0ZS5jb21wbGV0ZXJzCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAg
ICAgICBzeXMuZXhpdCgtMSkKLSAgICBmaWxlc2NvbXBsZXRlciA9IEZhc3RGaWxlc0NvbXBsZXRl
cigpCi0KLSAgICBkZWYgdHJ5X2FyZ2NvbXBsZXRlKHBhcnNlcik6Ci0gICAgICAgIGFyZ2NvbXBs
ZXRlLmF1dG9jb21wbGV0ZShwYXJzZXIsIGFsd2F5c19jb21wbGV0ZV9vcHRpb25zPUZhbHNlKQot
ZWxzZToKLSAgICBkZWYgdHJ5X2FyZ2NvbXBsZXRlKHBhcnNlcik6Ci0gICAgICAgIHBhc3MKLSAg
ICBmaWxlc2NvbXBsZXRlciA9IE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
X2NvZGUvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19faW5pdF9fLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTVjMTNiNDJjMjUuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19faW5pdF9fLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTAgKzAsMCBAQAotIiIiIHB5dGhvbiBpbnNwZWN0aW9uL2NvZGUgZ2VuZXJhdGlv
biBBUEkgIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNp
b24sIHByaW50X2Z1bmN0aW9uCi1mcm9tIC5jb2RlIGltcG9ydCBDb2RlICAjIG5vcWEKLWZyb20g
LmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8gICMgbm9xYQotZnJvbSAuY29kZSBpbXBvcnQgRnJh
bWUgICMgbm9xYQotZnJvbSAuY29kZSBpbXBvcnQgVHJhY2ViYWNrICAjIG5vcWEKLWZyb20gLmNv
ZGUgaW1wb3J0IGdldHJhd2NvZGUgICMgbm9xYQotZnJvbSAuc291cmNlIGltcG9ydCBTb3VyY2Ug
ICMgbm9xYQotZnJvbSAuc291cmNlIGltcG9ydCBjb21waWxlXyBhcyBjb21waWxlICAjIG5vcWEK
LWZyb20gLnNvdXJjZSBpbXBvcnQgZ2V0ZnNsaW5lbm8gICMgbm9xYQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvX3B5dGVzdC9fY29kZS9fcHkydHJhY2ViYWNrLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9fY29kZS9fcHkydHJhY2ViYWNrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YWFjZjBhNDI4ZDguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19j
b2RlL19weTJ0cmFjZWJhY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0jIGNv
cGllZCBmcm9tIHB5dGhvbi0yLjcuMydzIHRyYWNlYmFjay5weQotIyBDSEFOR0VTOgotIyAtIHNv
bWVfc3RyIGlzIHJlcGxhY2VkLCB0cnlpbmcgdG8gY3JlYXRlIHVuaWNvZGUgc3RyaW5ncwotIwot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9m
dW5jdGlvbgotaW1wb3J0IHR5cGVzCi0KLQotZGVmIGZvcm1hdF9leGNlcHRpb25fb25seShldHlw
ZSwgdmFsdWUpOgotICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgYSB0cmFjZWJh
Y2suCi0KLSAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgZXhjZXB0aW9uIHR5cGUgYW5kIHZhbHVl
IHN1Y2ggYXMgZ2l2ZW4gYnkKLSAgICBzeXMubGFzdF90eXBlIGFuZCBzeXMubGFzdF92YWx1ZS4g
VGhlIHJldHVybiB2YWx1ZSBpcyBhIGxpc3Qgb2YKLSAgICBzdHJpbmdzLCBlYWNoIGVuZGluZyBp
biBhIG5ld2xpbmUuCi0KLSAgICBOb3JtYWxseSwgdGhlIGxpc3QgY29udGFpbnMgYSBzaW5nbGUg
c3RyaW5nOyBob3dldmVyLCBmb3IKLSAgICBTeW50YXhFcnJvciBleGNlcHRpb25zLCBpdCBjb250
YWlucyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdoZW4KLSAgICBwcmludGVkKSBkaXNwbGF5IGRldGFp
bGVkIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZSBzeW50YXgKLSAgICBlcnJvciBvY2N1cnJl
ZC4KLQotICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVk
IGlzIGFsd2F5cyB0aGUgbGFzdAotICAgIHN0cmluZyBpbiB0aGUgbGlzdC4KLQotICAgICIiIgot
Ci0gICAgIyBBbiBpbnN0YW5jZSBzaG91bGQgbm90IGhhdmUgYSBtZWFuaW5nZnVsIHZhbHVlIHBh
cmFtZXRlciwgYnV0Ci0gICAgIyBzb21ldGltZXMgZG9lcywgcGFydGljdWxhcmx5IGZvciBzdHJp
bmcgZXhjZXB0aW9ucywgc3VjaCBhcwotICAgICMgPj4+IHJhaXNlIHN0cmluZzEsIHN0cmluZzIg
ICMgZGVwcmVjYXRlZAotICAgICMKLSAgICAjIENsZWFyIHRoZXNlIG91dCBmaXJzdCBiZWNhdXNl
IGlzc3VidHlwZShzdHJpbmcxLCBTeW50YXhFcnJvcikKLSAgICAjIHdvdWxkIHRocm93IGFub3Ro
ZXIgZXhjZXB0aW9uIGFuZCBtYXNrIHRoZSBvcmlnaW5hbCBwcm9ibGVtLgotICAgIGlmIChpc2lu
c3RhbmNlKGV0eXBlLCBCYXNlRXhjZXB0aW9uKSBvcgotICAgICAgICBpc2luc3RhbmNlKGV0eXBl
LCB0eXBlcy5JbnN0YW5jZVR5cGUpIG9yCi0gICAgICAgICAgICBldHlwZSBpcyBOb25lIG9yIHR5
cGUoZXR5cGUpIGlzIHN0cik6Ci0gICAgICAgIHJldHVybiBbX2Zvcm1hdF9maW5hbF9leGNfbGlu
ZShldHlwZSwgdmFsdWUpXQotCi0gICAgc3R5cGUgPSBldHlwZS5fX25hbWVfXwotCi0gICAgaWYg
bm90IGlzc3ViY2xhc3MoZXR5cGUsIFN5bnRheEVycm9yKToKLSAgICAgICAgcmV0dXJuIFtfZm9y
bWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2YWx1ZSldCi0KLSAgICAjIEl0IHdhcyBhIHN5bnRh
eCBlcnJvcjsgc2hvdyBleGFjdGx5IHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZC4KLSAgICBs
aW5lcyA9IFtdCi0gICAgdHJ5OgotICAgICAgICBtc2csIChmaWxlbmFtZSwgbGluZW5vLCBvZmZz
ZXQsIGJhZGxpbmUpID0gdmFsdWUuYXJncwotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAg
IHBhc3MKLSAgICBlbHNlOgotICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lIG9yICI8c3RyaW5n
PiIKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgIEZpbGUgIiVzIiwgbGluZSAlZFxuJyAlIChmaWxl
bmFtZSwgbGluZW5vKSkKLSAgICAgICAgaWYgYmFkbGluZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoYmFkbGluZSwgYnl0ZXMpOiAgIyBweXRob24gMiBvbmx5Ci0gICAg
ICAgICAgICAgICAgYmFkbGluZSA9IGJhZGxpbmUuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykK
LSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCh1JyAgICAlc1xuJyAlIGJhZGxpbmUuc3RyaXAoKSkK
LSAgICAgICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBjYXJl
dHNwYWNlID0gYmFkbGluZS5yc3RyaXAoJ1xuJylbOm9mZnNldF0ubHN0cmlwKCkKLSAgICAgICAg
ICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQg
Zm9yIGFsaWdubWVudAotICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSAoKGMuaXNzcGFjZSgp
IGFuZCBjIG9yICcgJykgZm9yIGMgaW4gY2FyZXRzcGFjZSkKLSAgICAgICAgICAgICAgICAjIG9u
bHkgdGhyZWUgc3BhY2VzIHRvIGFjY291bnQgZm9yIG9mZnNldDEgPT0gcG9zIDAKLSAgICAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICVzXlxuJyAlICcnLmpvaW4oY2FyZXRzcGFjZSkpCi0g
ICAgICAgIHZhbHVlID0gbXNnCi0KLSAgICBsaW5lcy5hcHBlbmQoX2Zvcm1hdF9maW5hbF9leGNf
bGluZShzdHlwZSwgdmFsdWUpKQotICAgIHJldHVybiBsaW5lcwotCi0KLWRlZiBfZm9ybWF0X2Zp
bmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSk6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhIHNp
bmdsZSBsaW5lIC0tIG5vcm1hbCBjYXNlIGZvciBmb3JtYXRfZXhjZXB0aW9uX29ubHkiIiIKLSAg
ICB2YWx1ZXN0ciA9IF9zb21lX3N0cih2YWx1ZSkKLSAgICBpZiB2YWx1ZSBpcyBOb25lIG9yIG5v
dCB2YWx1ZXN0cjoKLSAgICAgICAgbGluZSA9ICIlc1xuIiAlIGV0eXBlCi0gICAgZWxzZToKLSAg
ICAgICAgbGluZSA9ICIlczogJXNcbiIgJSAoZXR5cGUsIHZhbHVlc3RyKQotICAgIHJldHVybiBs
aW5lCi0KLQotZGVmIF9zb21lX3N0cih2YWx1ZSk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4g
dW5pY29kZSh2YWx1ZSkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAg
ICAgICAgICAgcGFzcwotICAgIHJldHVybiAnPHVucHJpbnRhYmxlICVzIG9iamVjdD4nICUgdHlw
ZSh2YWx1ZSkuX19uYW1lX18KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUv
Y29kZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvY29kZS5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2ZiMjMyYmQ0MzBlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9fY29kZS9jb2RlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTA2ICswLDAg
QEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKLWZyb20gaW5zcGVjdCBpbXBvcnQgQ09fVkFSQVJHUywg
Q09fVkFSS0VZV09SRFMKLWltcG9ydCByZQotZnJvbSB3ZWFrcmVmIGltcG9ydCByZWYKLWZyb20g
X3B5dGVzdC5jb21wYXQgaW1wb3J0IF9QWTIsIF9QWTMsIFBZMzUsIHNhZmVfc3RyCi0KLWltcG9y
dCBweQotYnVpbHRpbl9yZXByID0gcmVwcgotCi1pZiBfUFkzOgotICAgIGZyb20gdHJhY2ViYWNr
IGltcG9ydCBmb3JtYXRfZXhjZXB0aW9uX29ubHkKLWVsc2U6Ci0gICAgZnJvbSAuX3B5MnRyYWNl
YmFjayBpbXBvcnQgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5Ci0KLQotY2xhc3MgQ29kZShvYmplY3Qp
OgotICAgICIiIiB3cmFwcGVyIGFyb3VuZCBQeXRob24gY29kZSBvYmplY3RzICIiIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJhd2NvZGUpOgotICAgICAgICBpZiBub3QgaGFzYXR0cihyYXdj
b2RlLCAiY29fZmlsZW5hbWUiKToKLSAgICAgICAgICAgIHJhd2NvZGUgPSBnZXRyYXdjb2RlKHJh
d2NvZGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSByYXdjb2Rl
LmNvX2ZpbGVuYW1lCi0gICAgICAgICAgICBzZWxmLmZpcnN0bGluZW5vID0gcmF3Y29kZS5jb19m
aXJzdGxpbmVubyAtIDEKLSAgICAgICAgICAgIHNlbGYubmFtZSA9IHJhd2NvZGUuY29fbmFtZQot
ICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoIm5vdCBhIGNvZGUgb2JqZWN0OiAlciIgJSAocmF3Y29kZSwpKQotICAgICAgICBzZWxmLnJh
dyA9IHJhd2NvZGUKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1
cm4gc2VsZi5yYXcgPT0gb3RoZXIucmF3Ci0KLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIGRl
ZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYgPT0gb3RoZXIK
LQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBwYXRoKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJu
IGEgcGF0aCBvYmplY3QgcG9pbnRpbmcgdG8gc291cmNlIGNvZGUgKG5vdGUgdGhhdCBpdAotICAg
ICAgICBtaWdodCBub3QgcG9pbnQgdG8gYW4gYWN0dWFsbHkgZXhpc3RpbmcgZmlsZSkuICIiIgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwID0gcHkucGF0aC5sb2NhbChzZWxmLnJhdy5jb19m
aWxlbmFtZSkKLSAgICAgICAgICAgICMgbWF5YmUgZG9uJ3QgdHJ5IHRoaXMgY2hlY2tpbmcKLSAg
ICAgICAgICAgIGlmIG5vdCBwLmNoZWNrKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJv
cigicHkucGF0aCBjaGVjayBmYWlsZWQuIikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAg
ICAgICAgICAjIFhYWCBtYXliZSB0cnkgaGFyZGVyIGxpa2UgdGhlIHdlaXJkIGxvZ2ljCi0gICAg
ICAgICAgICAjIGluIHRoZSBzdGFuZGFyZCBsaWIgW2xpbmVjYWNoZS51cGRhdGVjYWNoZV0gZG9l
cz8KLSAgICAgICAgICAgIHAgPSBzZWxmLnJhdy5jb19maWxlbmFtZQotCi0gICAgICAgIHJldHVy
biBwCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZnVsbHNvdXJjZShzZWxmKToKLSAgICAgICAg
IiIiIHJldHVybiBhIF9weXRlc3QuX2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhlIGZ1bGwgc291
cmNlIGZpbGUgb2YgdGhlIGNvZGUKLSAgICAgICAgIiIiCi0gICAgICAgIGZyb20gX3B5dGVzdC5f
Y29kZSBpbXBvcnQgc291cmNlCi0gICAgICAgIGZ1bGwsIF8gPSBzb3VyY2UuZmluZHNvdXJjZShz
ZWxmLnJhdykKLSAgICAgICAgcmV0dXJuIGZ1bGwKLQotICAgIGRlZiBzb3VyY2Uoc2VsZik6Ci0g
ICAgICAgICIiIiByZXR1cm4gYSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9yIHRoZSBj
b2RlIG9iamVjdCdzIHNvdXJjZSBvbmx5Ci0gICAgICAgICIiIgotICAgICAgICAjIHJldHVybiBz
b3VyY2Ugb25seSBmb3IgdGhhdCBwYXJ0IG9mIGNvZGUKLSAgICAgICAgaW1wb3J0IF9weXRlc3Qu
X2NvZGUKLSAgICAgICAgcmV0dXJuIF9weXRlc3QuX2NvZGUuU291cmNlKHNlbGYucmF3KQotCi0g
ICAgZGVmIGdldGFyZ3Moc2VsZiwgdmFyPUZhbHNlKToKLSAgICAgICAgIiIiIHJldHVybiBhIHR1
cGxlIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzIGZvciB0aGUgY29kZSBvYmplY3QKLQotICAgICAg
ICAgICAgaWYgJ3ZhcicgaXMgc2V0IFRydWUgYWxzbyByZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSB2
YXJpYWJsZSBhbmQKLSAgICAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIHdoZW4gcHJlc2VudAot
ICAgICAgICAiIiIKLSAgICAgICAgIyBoYW5kZnVsbCBzaG9ydGN1dCBmb3IgZ2V0dGluZyBhcmdz
Ci0gICAgICAgIHJhdyA9IHNlbGYucmF3Ci0gICAgICAgIGFyZ2NvdW50ID0gcmF3LmNvX2FyZ2Nv
dW50Ci0gICAgICAgIGlmIHZhcjoKLSAgICAgICAgICAgIGFyZ2NvdW50ICs9IHJhdy5jb19mbGFn
cyAmIENPX1ZBUkFSR1MKLSAgICAgICAgICAgIGFyZ2NvdW50ICs9IHJhdy5jb19mbGFncyAmIENP
X1ZBUktFWVdPUkRTCi0gICAgICAgIHJldHVybiByYXcuY29fdmFybmFtZXNbOmFyZ2NvdW50XQot
Ci0KLWNsYXNzIEZyYW1lKG9iamVjdCk6Ci0gICAgIiIiV3JhcHBlciBhcm91bmQgYSBQeXRob24g
ZnJhbWUgaG9sZGluZyBmX2xvY2FscyBhbmQgZl9nbG9iYWxzCi0gICAgaW4gd2hpY2ggZXhwcmVz
c2lvbnMgY2FuIGJlIGV2YWx1YXRlZC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcmFt
ZSk6Ci0gICAgICAgIHNlbGYubGluZW5vID0gZnJhbWUuZl9saW5lbm8gLSAxCi0gICAgICAgIHNl
bGYuZl9nbG9iYWxzID0gZnJhbWUuZl9nbG9iYWxzCi0gICAgICAgIHNlbGYuZl9sb2NhbHMgPSBm
cmFtZS5mX2xvY2FscwotICAgICAgICBzZWxmLnJhdyA9IGZyYW1lCi0gICAgICAgIHNlbGYuY29k
ZSA9IENvZGUoZnJhbWUuZl9jb2RlKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHN0YXRlbWVu
dChzZWxmKToKLSAgICAgICAgIiIiIHN0YXRlbWVudCB0aGlzIGZyYW1lIGlzIGF0ICIiIgotICAg
ICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgICAgICBpZiBzZWxmLmNvZGUuZnVsbHNvdXJj
ZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIF9weXRlc3QuX2NvZGUuU291cmNlKCIiKQot
ICAgICAgICByZXR1cm4gc2VsZi5jb2RlLmZ1bGxzb3VyY2UuZ2V0c3RhdGVtZW50KHNlbGYubGlu
ZW5vKQotCi0gICAgZGVmIGV2YWwoc2VsZiwgY29kZSwgKip2YXJzKToKLSAgICAgICAgIiIiIGV2
YWx1YXRlICdjb2RlJyBpbiB0aGUgZnJhbWUKLQotICAgICAgICAgICAgJ3ZhcnMnIGFyZSBvcHRp
b25hbCBhZGRpdGlvbmFsIGxvY2FsIHZhcmlhYmxlcwotCi0gICAgICAgICAgICByZXR1cm5zIHRo
ZSByZXN1bHQgb2YgdGhlIGV2YWx1YXRpb24KLSAgICAgICAgIiIiCi0gICAgICAgIGZfbG9jYWxz
ID0gc2VsZi5mX2xvY2Fscy5jb3B5KCkKLSAgICAgICAgZl9sb2NhbHMudXBkYXRlKHZhcnMpCi0g
ICAgICAgIHJldHVybiBldmFsKGNvZGUsIHNlbGYuZl9nbG9iYWxzLCBmX2xvY2FscykKLQotICAg
IGRlZiBleGVjXyhzZWxmLCBjb2RlLCAqKnZhcnMpOgotICAgICAgICAiIiIgZXhlYyAnY29kZScg
aW4gdGhlIGZyYW1lCi0KLSAgICAgICAgICAgICd2YXJzJyBhcmUgb3B0aW9uYTsgYWRkaXRpb25h
bCBsb2NhbCB2YXJpYWJsZXMKLSAgICAgICAgIiIiCi0gICAgICAgIGZfbG9jYWxzID0gc2VsZi5m
X2xvY2Fscy5jb3B5KCkKLSAgICAgICAgZl9sb2NhbHMudXBkYXRlKHZhcnMpCi0gICAgICAgIHB5
LmJ1aWx0aW4uZXhlY18oY29kZSwgc2VsZi5mX2dsb2JhbHMsIGZfbG9jYWxzKQotCi0gICAgZGVm
IHJlcHIoc2VsZiwgb2JqZWN0KToKLSAgICAgICAgIiIiIHJldHVybiBhICdzYWZlJyAobm9uLXJl
Y3Vyc2l2ZSwgb25lLWxpbmUpIHN0cmluZyByZXByIGZvciAnb2JqZWN0JwotICAgICAgICAiIiIK
LSAgICAgICAgcmV0dXJuIHB5LmlvLnNhZmVyZXByKG9iamVjdCkKLQotICAgIGRlZiBpc190cnVl
KHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIHJldHVybiBvYmplY3QKLQotICAgIGRlZiBnZXRhcmdz
KHNlbGYsIHZhcj1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gYSBsaXN0IG9mIHR1cGxlcyAo
bmFtZSwgdmFsdWUpIGZvciBhbGwgYXJndW1lbnRzCi0KLSAgICAgICAgICAgIGlmICd2YXInIGlz
IHNldCBUcnVlIGFsc28gaW5jbHVkZSB0aGUgdmFyaWFibGUgYW5kIGtleXdvcmQKLSAgICAgICAg
ICAgIGFyZ3VtZW50cyB3aGVuIHByZXNlbnQKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHZhbCA9
IFtdCi0gICAgICAgIGZvciBhcmcgaW4gc2VsZi5jb2RlLmdldGFyZ3ModmFyKToKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR2YWwuYXBwZW5kKChhcmcsIHNlbGYuZl9sb2Nh
bHNbYXJnXSkpCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAg
cGFzcyAgICAgIyB0aGlzIGNhbiBvY2N1ciB3aGVuIHVzaW5nIFBzeWNvCi0gICAgICAgIHJldHVy
biByZXR2YWwKLQotCi1jbGFzcyBUcmFjZWJhY2tFbnRyeShvYmplY3QpOgotICAgICIiIiBhIHNp
bmdsZSBlbnRyeSBpbiBhIHRyYWNlYmFjayAiIiIKLQotICAgIF9yZXByX3N0eWxlID0gTm9uZQot
ICAgIGV4cHJpbmZvID0gTm9uZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhd2VudHJ5LCBl
eGNpbmZvPU5vbmUpOgotICAgICAgICBzZWxmLl9leGNpbmZvID0gZXhjaW5mbwotICAgICAgICBz
ZWxmLl9yYXdlbnRyeSA9IHJhd2VudHJ5Ci0gICAgICAgIHNlbGYubGluZW5vID0gcmF3ZW50cnku
dGJfbGluZW5vIC0gMQotCi0gICAgZGVmIHNldF9yZXByX3N0eWxlKHNlbGYsIG1vZGUpOgotICAg
ICAgICBhc3NlcnQgbW9kZSBpbiAoInNob3J0IiwgImxvbmciKQotICAgICAgICBzZWxmLl9yZXBy
X3N0eWxlID0gbW9kZQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGZyYW1lKHNlbGYpOgotICAg
ICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5G
cmFtZShzZWxmLl9yYXdlbnRyeS50Yl9mcmFtZSkKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBy
ZWxsaW5lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5saW5lbm8gLSBzZWxmLmZyYW1lLmNv
ZGUuZmlyc3RsaW5lbm8KLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICI8VHJhY2ViYWNrRW50cnkgJXM6JWQ+IiAlIChzZWxmLmZyYW1lLmNvZGUucGF0aCwgc2VsZi5s
aW5lbm8gKyAxKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHN0YXRlbWVudChzZWxmKToKLSAg
ICAgICAgIiIiIF9weXRlc3QuX2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc3Rh
dGVtZW50ICIiIgotICAgICAgICBzb3VyY2UgPSBzZWxmLmZyYW1lLmNvZGUuZnVsbHNvdXJjZQot
ICAgICAgICByZXR1cm4gc291cmNlLmdldHN0YXRlbWVudChzZWxmLmxpbmVubykKLQotICAgIEBw
cm9wZXJ0eQotICAgIGRlZiBwYXRoKHNlbGYpOgotICAgICAgICAiIiIgcGF0aCB0byB0aGUgc291
cmNlIGNvZGUgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmZyYW1lLmNvZGUucGF0aAotCi0gICAg
ZGVmIGdldGxvY2FscyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZnJhbWUuZl9sb2NhbHMK
LSAgICBsb2NhbHMgPSBwcm9wZXJ0eShnZXRsb2NhbHMsIE5vbmUsIE5vbmUsICJsb2NhbHMgb2Yg
dW5kZXJsYXlpbmcgZnJhbWUiKQotCi0gICAgZGVmIGdldGZpcnN0bGluZXNvdXJjZShzZWxmKToK
LSAgICAgICAgIyBvbiBKeXRob24gdGhpcyBmaXJzdGxpbmVubyBjYW4gYmUgLTEgYXBwYXJlbnRs
eQotICAgICAgICByZXR1cm4gbWF4KHNlbGYuZnJhbWUuY29kZS5maXJzdGxpbmVubywgMCkKLQot
ICAgIGRlZiBnZXRzb3VyY2Uoc2VsZiwgYXN0Y2FjaGU9Tm9uZSk6Ci0gICAgICAgICIiIiByZXR1
cm4gZmFpbGluZyBzb3VyY2UgY29kZS4gIiIiCi0gICAgICAgICMgd2UgdXNlIHRoZSBwYXNzZWQg
aW4gYXN0Y2FjaGUgdG8gbm90IHJlcGFyc2UgYXN0dHJlZXMKLSAgICAgICAgIyB3aXRoaW4gZXhj
ZXB0aW9uIGluZm8gcHJpbnRpbmcKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBp
bXBvcnQgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0Ci0gICAgICAgIHNvdXJjZSA9IHNlbGYuZnJhbWUu
Y29kZS5mdWxsc291cmNlCi0gICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLSAgICAgICAga2V5ID0gYXN0bm9kZSA9IE5vbmUKLSAgICAgICAgaWYgYXN0
Y2FjaGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBrZXkgPSBzZWxmLmZyYW1lLmNvZGUucGF0
aAotICAgICAgICAgICAgaWYga2V5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGFzdG5v
ZGUgPSBhc3RjYWNoZS5nZXQoa2V5LCBOb25lKQotICAgICAgICBzdGFydCA9IHNlbGYuZ2V0Zmly
c3RsaW5lc291cmNlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYXN0bm9kZSwgXywgZW5k
ID0gZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KHNlbGYubGluZW5vLCBzb3VyY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0bm9kZT1hc3Rub2Rl
KQotICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6Ci0gICAgICAgICAgICBlbmQgPSBzZWxmLmxp
bmVubyArIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGtleSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgICAgICBhc3RjYWNoZVtrZXldID0gYXN0bm9kZQotICAgICAgICByZXR1cm4g
c291cmNlW3N0YXJ0OmVuZF0KLQotICAgIHNvdXJjZSA9IHByb3BlcnR5KGdldHNvdXJjZSkKLQot
ICAgIGRlZiBpc2hpZGRlbihzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBUcnVlIGlmIHRoZSBj
dXJyZW50IGZyYW1lIGhhcyBhIHZhciBfX3RyYWNlYmFja2hpZGVfXwotICAgICAgICAgICAgcmVz
b2x2aW5nIHRvIFRydWUKLQotICAgICAgICAgICAgSWYgX190cmFjZWJhY2toaWRlX18gaXMgYSBj
YWxsYWJsZSwgaXQgZ2V0cyBjYWxsZWQgd2l0aCB0aGUKLSAgICAgICAgICAgIEV4Y2VwdGlvbklu
Zm8gaW5zdGFuY2UgYW5kIGNhbiBkZWNpZGUgd2hldGhlciB0byBoaWRlIHRoZSB0cmFjZWJhY2su
Ci0KLSAgICAgICAgICAgIG1vc3RseSBmb3IgaW50ZXJuYWwgdXNlCi0gICAgICAgICIiIgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB0YmggPSBzZWxmLmZyYW1lLmZfbG9jYWxzWydfX3RyYWNl
YmFja2hpZGVfXyddCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICB0YmggPSBzZWxmLmZyYW1lLmZfZ2xvYmFsc1snX190cmFjZWJhY2to
aWRlX18nXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCi0gICAgICAgIGlmIGNhbGxhYmxlKHRiaCk6Ci0gICAgICAgICAgICByZXR1
cm4gdGJoKE5vbmUgaWYgc2VsZi5fZXhjaW5mbyBpcyBOb25lIGVsc2Ugc2VsZi5fZXhjaW5mbygp
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHRiaAotCi0gICAgZGVmIF9fc3Ry
X18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZuID0gc3RyKHNlbGYucGF0aCkK
LSAgICAgICAgZXhjZXB0IHB5LmVycm9yLkVycm9yOgotICAgICAgICAgICAgZm4gPSAnPz8/Jwot
ICAgICAgICBuYW1lID0gc2VsZi5mcmFtZS5jb2RlLm5hbWUKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgbGluZSA9IHN0cihzZWxmLnN0YXRlbWVudCkubHN0cmlwKCkKLSAgICAgICAgZXhjZXB0
IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0OiAg
IyBub3FhCi0gICAgICAgICAgICBsaW5lID0gIj8/PyIKLSAgICAgICAgcmV0dXJuICIgIEZpbGUg
JXI6JWQgaW4gJXNcbiAgJXNcbiIgJSAoZm4sIHNlbGYubGluZW5vICsgMSwgbmFtZSwgbGluZSkK
LQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5mcmFtZS5jb2RlLnJh
dy5jb19uYW1lCi0gICAgbmFtZSA9IHByb3BlcnR5KG5hbWUsIE5vbmUsIE5vbmUsICJjb19uYW1l
IG9mIHVuZGVybGF5aW5nIGNvZGUiKQotCi0KLWNsYXNzIFRyYWNlYmFjayhsaXN0KToKLSAgICAi
IiIgVHJhY2ViYWNrIG9iamVjdHMgZW5jYXBzdWxhdGUgYW5kIG9mZmVyIGhpZ2hlciBsZXZlbAot
ICAgICAgICBhY2Nlc3MgdG8gVHJhY2ViYWNrIGVudHJpZXMuCi0gICAgIiIiCi0gICAgRW50cnkg
PSBUcmFjZWJhY2tFbnRyeQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRiLCBleGNpbmZvPU5v
bmUpOgotICAgICAgICAiIiIgaW5pdGlhbGl6ZSBmcm9tIGdpdmVuIHB5dGhvbiB0cmFjZWJhY2sg
b2JqZWN0IGFuZCBFeGNlcHRpb25JbmZvICIiIgotICAgICAgICBzZWxmLl9leGNpbmZvID0gZXhj
aW5mbwotICAgICAgICBpZiBoYXNhdHRyKHRiLCAndGJfbmV4dCcpOgotICAgICAgICAgICAgZGVm
IGYoY3VyKToKLSAgICAgICAgICAgICAgICB3aGlsZSBjdXIgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgICAgIHlpZWxkIHNlbGYuRW50cnkoY3VyLCBleGNpbmZvPWV4Y2luZm8pCi0gICAg
ICAgICAgICAgICAgICAgIGN1ciA9IGN1ci50Yl9uZXh0Ci0gICAgICAgICAgICBsaXN0Ll9faW5p
dF9fKHNlbGYsIGYodGIpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGlzdC5fX2luaXRf
XyhzZWxmLCB0YikKLQotICAgIGRlZiBjdXQoc2VsZiwgcGF0aD1Ob25lLCBsaW5lbm89Tm9uZSwg
Zmlyc3RsaW5lbm89Tm9uZSwgZXhjbHVkZXBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIiByZXR1cm4g
YSBUcmFjZWJhY2sgaW5zdGFuY2Ugd3JhcHBpbmcgcGFydCBvZiB0aGlzIFRyYWNlYmFjawotCi0g
ICAgICAgICAgICBieSBwcm92ZGluZyBhbnkgY29tYmluYXRpb24gb2YgcGF0aCwgbGluZW5vIGFu
ZCBmaXJzdGxpbmVubywgdGhlCi0gICAgICAgICAgICBmaXJzdCBmcmFtZSB0byBzdGFydCB0aGUg
dG8tYmUtcmV0dXJuZWQgdHJhY2ViYWNrIGlzIGRldGVybWluZWQKLQotICAgICAgICAgICAgdGhp
cyBhbGxvd3MgY3V0dGluZyB0aGUgZmlyc3QgcGFydCBvZiBhIFRyYWNlYmFjayBpbnN0YW5jZSBl
LmcuCi0gICAgICAgICAgICBmb3IgZm9ybWF0dGluZyByZWFzb25zIChyZW1vdmluZyBzb21lIHVu
aW50ZXJlc3RpbmcgYml0cyB0aGF0IGRlYWwKLSAgICAgICAgICAgIHdpdGggaGFuZGxpbmcgb2Yg
dGhlIGV4Y2VwdGlvbi90cmFjZWJhY2spCi0gICAgICAgICIiIgotICAgICAgICBmb3IgeCBpbiBz
ZWxmOgotICAgICAgICAgICAgY29kZSA9IHguZnJhbWUuY29kZQotICAgICAgICAgICAgY29kZXBh
dGggPSBjb2RlLnBhdGgKLSAgICAgICAgICAgIGlmICgocGF0aCBpcyBOb25lIG9yIGNvZGVwYXRo
ID09IHBhdGgpIGFuZAotICAgICAgICAgICAgICAgIChleGNsdWRlcGF0aCBpcyBOb25lIG9yIG5v
dCBoYXNhdHRyKGNvZGVwYXRoLCAncmVsdG8nKSBvcgotICAgICAgICAgICAgICAgICBub3QgY29k
ZXBhdGgucmVsdG8oZXhjbHVkZXBhdGgpKSBhbmQKLSAgICAgICAgICAgICAgICAobGluZW5vIGlz
IE5vbmUgb3IgeC5saW5lbm8gPT0gbGluZW5vKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgKGZp
cnN0bGluZW5vIGlzIE5vbmUgb3IgeC5mcmFtZS5jb2RlLmZpcnN0bGluZW5vID09IGZpcnN0bGlu
ZW5vKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRyYWNlYmFjayh4Ll9yYXdlbnRyeSwgc2Vs
Zi5fZXhjaW5mbykKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhz
ZWxmLCBrZXkpOgotICAgICAgICB2YWwgPSBzdXBlcihUcmFjZWJhY2ssIHNlbGYpLl9fZ2V0aXRl
bV9fKGtleSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHR5cGUoc2xpY2UoMCkpKToKLSAg
ICAgICAgICAgIHZhbCA9IHNlbGYuX19jbGFzc19fKHZhbCkKLSAgICAgICAgcmV0dXJuIHZhbAot
Ci0gICAgZGVmIGZpbHRlcihzZWxmLCBmbj1sYW1iZGEgeDogbm90IHguaXNoaWRkZW4oKSk6Ci0g
ICAgICAgICIiIiByZXR1cm4gYSBUcmFjZWJhY2sgaW5zdGFuY2Ugd2l0aCBjZXJ0YWluIGl0ZW1z
IHJlbW92ZWQKLQotICAgICAgICAgICAgZm4gaXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgYSBzaW5n
bGUgYXJndW1lbnQsIGEgVHJhY2ViYWNrRW50cnkKLSAgICAgICAgICAgIGluc3RhbmNlLCBhbmQg
c2hvdWxkIHJldHVybiBUcnVlIHdoZW4gdGhlIGl0ZW0gc2hvdWxkIGJlIGFkZGVkCi0gICAgICAg
ICAgICB0byB0aGUgVHJhY2ViYWNrLCBGYWxzZSB3aGVuIG5vdAotCi0gICAgICAgICAgICBieSBk
ZWZhdWx0IHRoaXMgcmVtb3ZlcyBhbGwgdGhlIFRyYWNlYmFja0VudHJpZXMgd2hpY2ggYXJlIGhp
ZGRlbgotICAgICAgICAgICAgKHNlZSBpc2hpZGRlbigpIGFib3ZlKQotICAgICAgICAiIiIKLSAg
ICAgICAgcmV0dXJuIFRyYWNlYmFjayhmaWx0ZXIoZm4sIHNlbGYpLCBzZWxmLl9leGNpbmZvKQot
Ci0gICAgZGVmIGdldGNyYXNoZW50cnkoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gbGFzdCBu
b24taGlkZGVuIHRyYWNlYmFjayBlbnRyeSB0aGF0IGxlYWQKLSAgICAgICAgdG8gdGhlIGV4Y2Vw
dGlvbiBvZiBhIHRyYWNlYmFjay4KLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBpIGluIHJhbmdl
KC0xLCAtbGVuKHNlbGYpIC0gMSwgLTEpOgotICAgICAgICAgICAgZW50cnkgPSBzZWxmW2ldCi0g
ICAgICAgICAgICBpZiBub3QgZW50cnkuaXNoaWRkZW4oKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gZW50cnkKLSAgICAgICAgcmV0dXJuIHNlbGZbLTFdCi0KLSAgICBkZWYgcmVjdXJzaW9uaW5k
ZXgoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmcmFtZS9UcmFj
ZWJhY2tFbnRyeSB3aGVyZSByZWN1cnNpb24KLSAgICAgICAgICAgIG9yaWdpbmF0ZXMgaWYgYXBw
cm9wcmlhdGUsIE5vbmUgaWYgbm8gcmVjdXJzaW9uIG9jY3VycmVkCi0gICAgICAgICIiIgotICAg
ICAgICBjYWNoZSA9IHt9Ci0gICAgICAgIGZvciBpLCBlbnRyeSBpbiBlbnVtZXJhdGUoc2VsZik6
Ci0gICAgICAgICAgICAjIGlkIGZvciB0aGUgY29kZS5yYXcgaXMgbmVlZGVkIHRvIHdvcmsgYXJv
dW5kCi0gICAgICAgICAgICAjIHRoZSBzdHJhbmdlIG1ldGFwcm9ncmFtbWluZyBpbiB0aGUgZGVj
b3JhdG9yIGxpYiBmcm9tIHB5cGkKLSAgICAgICAgICAgICMgd2hpY2ggZ2VuZXJhdGVzIGNvZGUg
b2JqZWN0cyB0aGF0IGhhdmUgaGFzaC92YWx1ZSBlcXVhbGl0eQotICAgICAgICAgICAgIyBYWFgg
bmVlZHMgYSB0ZXN0Ci0gICAgICAgICAgICBrZXkgPSBlbnRyeS5mcmFtZS5jb2RlLnBhdGgsIGlk
KGVudHJ5LmZyYW1lLmNvZGUucmF3KSwgZW50cnkubGluZW5vCi0gICAgICAgICAgICAjIHByaW50
ICJjaGVja2luZyBmb3IgcmVjdXJzaW9uIGF0Iiwga2V5Ci0gICAgICAgICAgICB2YWx1ZXMgPSBj
YWNoZS5zZXRkZWZhdWx0KGtleSwgW10pCi0gICAgICAgICAgICBpZiB2YWx1ZXM6Ci0gICAgICAg
ICAgICAgICAgZiA9IGVudHJ5LmZyYW1lCi0gICAgICAgICAgICAgICAgbG9jID0gZi5mX2xvY2Fs
cwotICAgICAgICAgICAgICAgIGZvciBvdGhlcmxvYyBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIGYuaXNfdHJ1ZShmLmV2YWwoY29fZXF1YWwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZWN1cnNpb25jYWNoZV9sb2NhbHNfMT1sb2MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZWN1cnNpb25jYWNoZV9sb2Nh
bHNfMj1vdGhlcmxvYykpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmQoZW50cnkuZnJhbWUuZl9sb2NhbHMpCi0gICAgICAgIHJldHVy
biBOb25lCi0KLQotY29fZXF1YWwgPSBjb21waWxlKCdfX3JlY3Vyc2lvbmNhY2hlX2xvY2Fsc18x
ID09IF9fcmVjdXJzaW9uY2FjaGVfbG9jYWxzXzInLAotICAgICAgICAgICAgICAgICAgICc/Jywg
J2V2YWwnKQotCi0KLWNsYXNzIEV4Y2VwdGlvbkluZm8ob2JqZWN0KToKLSAgICAiIiIgd3JhcHMg
c3lzLmV4Y19pbmZvKCkgb2JqZWN0cyBhbmQgb2ZmZXJzCi0gICAgICAgIGhlbHAgZm9yIG5hdmln
YXRpbmcgdGhlIHRyYWNlYmFjay4KLSAgICAiIiIKLSAgICBfc3RyaXB0ZXh0ID0gJycKLSAgICBf
YXNzZXJ0X3N0YXJ0X3JlcHIgPSAiQXNzZXJ0aW9uRXJyb3IodVwnYXNzZXJ0ICIgaWYgX1BZMiBl
bHNlICJBc3NlcnRpb25FcnJvcihcJ2Fzc2VydCAiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
dHVwPU5vbmUsIGV4cHJpbmZvPU5vbmUpOgotICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQot
ICAgICAgICBpZiB0dXAgaXMgTm9uZToKLSAgICAgICAgICAgIHR1cCA9IHN5cy5leGNfaW5mbygp
Ci0gICAgICAgICAgICBpZiBleHByaW5mbyBpcyBOb25lIGFuZCBpc2luc3RhbmNlKHR1cFsxXSwg
QXNzZXJ0aW9uRXJyb3IpOgotICAgICAgICAgICAgICAgIGV4cHJpbmZvID0gZ2V0YXR0cih0dXBb
MV0sICdtc2cnLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIGV4cHJpbmZvIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgICAgIGV4cHJpbmZvID0gcHkuaW8uc2FmZXJlcHIodHVwWzFdKQotICAg
ICAgICAgICAgICAgIGlmIGV4cHJpbmZvIGFuZCBleHByaW5mby5zdGFydHN3aXRoKHNlbGYuX2Fz
c2VydF9zdGFydF9yZXByKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyaXB0ZXh0ID0g
J0Fzc2VydGlvbkVycm9yOiAnCi0gICAgICAgIHNlbGYuX2V4Y2luZm8gPSB0dXAKLSAgICAgICAg
IzogdGhlIGV4Y2VwdGlvbiBjbGFzcwotICAgICAgICBzZWxmLnR5cGUgPSB0dXBbMF0KLSAgICAg
ICAgIzogdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZQotICAgICAgICBzZWxmLnZhbHVlID0gdHVwWzFd
Ci0gICAgICAgICM6IHRoZSBleGNlcHRpb24gcmF3IHRyYWNlYmFjawotICAgICAgICBzZWxmLnRi
ID0gdHVwWzJdCi0gICAgICAgICM6IHRoZSBleGNlcHRpb24gdHlwZSBuYW1lCi0gICAgICAgIHNl
bGYudHlwZW5hbWUgPSBzZWxmLnR5cGUuX19uYW1lX18KLSAgICAgICAgIzogdGhlIGV4Y2VwdGlv
biB0cmFjZWJhY2sgKF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrIGluc3RhbmNlKQotICAgICAgICBz
ZWxmLnRyYWNlYmFjayA9IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKHNlbGYudGIsIGV4Y2luZm89
cmVmKHNlbGYpKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxF
eGNlcHRpb25JbmZvICVzIHRibGVuPSVkPiIgJSAoc2VsZi50eXBlbmFtZSwgbGVuKHNlbGYudHJh
Y2ViYWNrKSkKLQotICAgIGRlZiBleGNvbmx5KHNlbGYsIHRyeXNob3J0PUZhbHNlKToKLSAgICAg
ICAgIiIiIHJldHVybiB0aGUgZXhjZXB0aW9uIGFzIGEgc3RyaW5nCi0KLSAgICAgICAgICAgIHdo
ZW4gJ3RyeXNob3J0JyByZXNvbHZlcyB0byBUcnVlLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBhCi0g
ICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLl9Bc3NlcnRpb25FcnJvciwgb25seSB0aGUgYWN0dWFs
IGV4Y2VwdGlvbiBwYXJ0IG9mCi0gICAgICAgICAgICB0aGUgZXhjZXB0aW9uIHJlcHJlc2VudGF0
aW9uIGlzIHJldHVybmVkIChzbyAnQXNzZXJ0aW9uRXJyb3I6ICcgaXMKLSAgICAgICAgICAgIHJl
bW92ZWQgZnJvbSB0aGUgYmVnaW5uaW5nKQotICAgICAgICAiIiIKLSAgICAgICAgbGluZXMgPSBm
b3JtYXRfZXhjZXB0aW9uX29ubHkoc2VsZi50eXBlLCBzZWxmLnZhbHVlKQotICAgICAgICB0ZXh0
ID0gJycuam9pbihsaW5lcykKLSAgICAgICAgdGV4dCA9IHRleHQucnN0cmlwKCkKLSAgICAgICAg
aWYgdHJ5c2hvcnQ6Ci0gICAgICAgICAgICBpZiB0ZXh0LnN0YXJ0c3dpdGgoc2VsZi5fc3RyaXB0
ZXh0KToKLSAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dFtsZW4oc2VsZi5fc3RyaXB0ZXh0KTpd
Ci0gICAgICAgIHJldHVybiB0ZXh0Ci0KLSAgICBkZWYgZXJyaXNpbnN0YW5jZShzZWxmLCBleGMp
OgotICAgICAgICAiIiIgcmV0dXJuIFRydWUgaWYgdGhlIGV4Y2VwdGlvbiBpcyBhbiBpbnN0YW5j
ZSBvZiBleGMgIiIiCi0gICAgICAgIHJldHVybiBpc2luc3RhbmNlKHNlbGYudmFsdWUsIGV4YykK
LQotICAgIGRlZiBfZ2V0cmVwcmNyYXNoKHNlbGYpOgotICAgICAgICBleGNvbmx5ID0gc2VsZi5l
eGNvbmx5KHRyeXNob3J0PVRydWUpCi0gICAgICAgIGVudHJ5ID0gc2VsZi50cmFjZWJhY2suZ2V0
Y3Jhc2hlbnRyeSgpCi0gICAgICAgIHBhdGgsIGxpbmVubyA9IGVudHJ5LmZyYW1lLmNvZGUucmF3
LmNvX2ZpbGVuYW1lLCBlbnRyeS5saW5lbm8KLSAgICAgICAgcmV0dXJuIFJlcHJGaWxlTG9jYXRp
b24ocGF0aCwgbGluZW5vICsgMSwgZXhjb25seSkKLQotICAgIGRlZiBnZXRyZXByKHNlbGYsIHNo
b3dsb2NhbHM9RmFsc2UsIHN0eWxlPSJsb25nIiwKLSAgICAgICAgICAgICAgICBhYnNwYXRoPUZh
bHNlLCB0YmZpbHRlcj1UcnVlLCBmdW5jYXJncz1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4g
c3RyKClhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZXhjZXB0aW9uIGluZm8uCi0gICAgICAg
ICAgICBzaG93bG9jYWxzOiBzaG93IGxvY2FscyBwZXIgdHJhY2ViYWNrIGVudHJ5Ci0gICAgICAg
ICAgICBzdHlsZTogbG9uZ3xzaG9ydHxub3xuYXRpdmUgdHJhY2ViYWNrIHN0eWxlCi0gICAgICAg
ICAgICB0YmZpbHRlcjogaGlkZSBlbnRyaWVzICh3aGVyZSBfX3RyYWNlYmFja2hpZGVfXyBpcyB0
cnVlKQotCi0gICAgICAgICAgICBpbiBjYXNlIG9mIHN0eWxlPT1uYXRpdmUsIHRiZmlsdGVyIGFu
ZCBzaG93bG9jYWxzIGlzIGlnbm9yZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzdHlsZSA9
PSAnbmF0aXZlJzoKLSAgICAgICAgICAgIHJldHVybiBSZXByRXhjZXB0aW9uSW5mbyhSZXByVHJh
Y2ViYWNrTmF0aXZlKAotICAgICAgICAgICAgICAgIHB5LnN0ZC50cmFjZWJhY2suZm9ybWF0X2V4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlLAotICAgICAgICAgICAgICAg
ICAgICBzZWxmLnZhbHVlLAotICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYWNlYmFja1swXS5f
cmF3ZW50cnksCi0gICAgICAgICAgICAgICAgKSksIHNlbGYuX2dldHJlcHJjcmFzaCgpKQotCi0g
ICAgICAgIGZtdCA9IEZvcm1hdHRlZEV4Y2luZm8oc2hvd2xvY2Fscz1zaG93bG9jYWxzLCBzdHls
ZT1zdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNwYXRoPWFic3BhdGgs
IHRiZmlsdGVyPXRiZmlsdGVyLCBmdW5jYXJncz1mdW5jYXJncykKLSAgICAgICAgcmV0dXJuIGZt
dC5yZXByX2V4Y2luZm8oc2VsZikKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBl
bnRyeSA9IHNlbGYudHJhY2ViYWNrWy0xXQotICAgICAgICBsb2MgPSBSZXByRmlsZUxvY2F0aW9u
KGVudHJ5LnBhdGgsIGVudHJ5LmxpbmVubyArIDEsIHNlbGYuZXhjb25seSgpKQotICAgICAgICBy
ZXR1cm4gc3RyKGxvYykKLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgZW50
cnkgPSBzZWxmLnRyYWNlYmFja1stMV0KLSAgICAgICAgbG9jID0gUmVwckZpbGVMb2NhdGlvbihl
bnRyeS5wYXRoLCBlbnRyeS5saW5lbm8gKyAxLCBzZWxmLmV4Y29ubHkoKSkKLSAgICAgICAgcmV0
dXJuIHVuaWNvZGUobG9jKQotCi0gICAgZGVmIG1hdGNoKHNlbGYsIHJlZ2V4cCk6Ci0gICAgICAg
ICIiIgotICAgICAgICBNYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICdyZWdleHAnIG9uIHRo
ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YKLSAgICAgICAgdGhlIGV4Y2VwdGlvbi4gSWYgaXQg
bWF0Y2hlcyB0aGVuIFRydWUgaXMgcmV0dXJuZWQgKHNvIHRoYXQgaXQgaXMKLSAgICAgICAgcG9z
c2libGUgdG8gd3JpdGUgJ2Fzc2VydCBleGNpbmZvLm1hdGNoKCknKS4gSWYgaXQgZG9lc24ndCBt
YXRjaCBhbgotICAgICAgICBBc3NlcnRpb25FcnJvciBpcyByYWlzZWQuCi0gICAgICAgICIiIgot
ICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgaWYgbm90IHJlLnNlYXJj
aChyZWdleHAsIHN0cihzZWxmLnZhbHVlKSk6Ci0gICAgICAgICAgICBhc3NlcnQgMCwgIlBhdHRl
cm4gJ3swIXN9JyBub3QgZm91bmQgaW4gJ3sxIXN9JyIuZm9ybWF0KAotICAgICAgICAgICAgICAg
IHJlZ2V4cCwgc2VsZi52YWx1ZSkKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1jbGFzcyBGb3Jt
YXR0ZWRFeGNpbmZvKG9iamVjdCk6Ci0gICAgIiIiIHByZXNlbnRpbmcgaW5mb3JtYXRpb24gYWJv
dXQgZmFpbGluZyBGdW5jdGlvbnMgYW5kIEdlbmVyYXRvcnMuICIiIgotICAgICMgZm9yIHRyYWNl
YmFjayBlbnRyaWVzCi0gICAgZmxvd19tYXJrZXIgPSAiPiIKLSAgICBmYWlsX21hcmtlciA9ICJF
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNob3dsb2NhbHM9RmFsc2UsIHN0eWxlPSJsb25n
IiwgYWJzcGF0aD1UcnVlLCB0YmZpbHRlcj1UcnVlLCBmdW5jYXJncz1GYWxzZSk6Ci0gICAgICAg
IHNlbGYuc2hvd2xvY2FscyA9IHNob3dsb2NhbHMKLSAgICAgICAgc2VsZi5zdHlsZSA9IHN0eWxl
Ci0gICAgICAgIHNlbGYudGJmaWx0ZXIgPSB0YmZpbHRlcgotICAgICAgICBzZWxmLmZ1bmNhcmdz
ID0gZnVuY2FyZ3MKLSAgICAgICAgc2VsZi5hYnNwYXRoID0gYWJzcGF0aAotICAgICAgICBzZWxm
LmFzdGNhY2hlID0ge30KLQotICAgIGRlZiBfZ2V0aW5kZW50KHNlbGYsIHNvdXJjZSk6Ci0gICAg
ICAgICMgZmlndXJlIG91dCBpbmRlbnQgZm9yIGdpdmVuIHNvdXJjZQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBzID0gc3RyKHNvdXJjZS5nZXRzdGF0ZW1lbnQobGVuKHNvdXJjZSkgLSAxKSkK
LSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmFpc2UKLSAg
ICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
cyA9IHN0cihzb3VyY2VbLTFdKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0
OgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAg
ICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICByZXR1cm4gNCArIChsZW4ocykgLSBsZW4o
cy5sc3RyaXAoKSkpCi0KLSAgICBkZWYgX2dldGVudHJ5c291cmNlKHNlbGYsIGVudHJ5KToKLSAg
ICAgICAgc291cmNlID0gZW50cnkuZ2V0c291cmNlKHNlbGYuYXN0Y2FjaGUpCi0gICAgICAgIGlm
IHNvdXJjZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5kZWluZGVu
dCgpCi0gICAgICAgIHJldHVybiBzb3VyY2UKLQotICAgIGRlZiBfc2FmZXJlcHIoc2VsZiwgb2Jq
KToKLSAgICAgICAgcmV0dXJuIHB5LmlvLnNhZmVyZXByKG9iaikKLQotICAgIGRlZiByZXByX2Fy
Z3Moc2VsZiwgZW50cnkpOgotICAgICAgICBpZiBzZWxmLmZ1bmNhcmdzOgotICAgICAgICAgICAg
YXJncyA9IFtdCi0gICAgICAgICAgICBmb3IgYXJnbmFtZSwgYXJndmFsdWUgaW4gZW50cnkuZnJh
bWUuZ2V0YXJncyh2YXI9VHJ1ZSk6Ci0gICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoKGFyZ25h
bWUsIHNlbGYuX3NhZmVyZXByKGFyZ3ZhbHVlKSkpCi0gICAgICAgICAgICByZXR1cm4gUmVwckZ1
bmNBcmdzKGFyZ3MpCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBzb3VyY2UsIGxpbmVfaW5k
ZXg9LTEsIGV4Y2luZm89Tm9uZSwgc2hvcnQ9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIGZv
cm1hdHRlZCBhbmQgbWFya2VkIHVwIHNvdXJjZSBsaW5lcy4gIiIiCi0gICAgICAgIGltcG9ydCBf
cHl0ZXN0Ll9jb2RlCi0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgaWYgc291cmNlIGlzIE5v
bmUgb3IgbGluZV9pbmRleCA+PSBsZW4oc291cmNlLmxpbmVzKToKLSAgICAgICAgICAgIHNvdXJj
ZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKCI/Pz8iKQotICAgICAgICAgICAgbGluZV9pbmRleCA9
IDAKLSAgICAgICAgaWYgbGluZV9pbmRleCA8IDA6Ci0gICAgICAgICAgICBsaW5lX2luZGV4ICs9
IGxlbihzb3VyY2UpCi0gICAgICAgIHNwYWNlX3ByZWZpeCA9ICIgICAgIgotICAgICAgICBpZiBz
aG9ydDoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzcGFjZV9wcmVmaXggKyBzb3VyY2UubGlu
ZXNbbGluZV9pbmRleF0uc3RyaXAoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBs
aW5lIGluIHNvdXJjZS5saW5lc1s6bGluZV9pbmRleF06Ci0gICAgICAgICAgICAgICAgbGluZXMu
YXBwZW5kKHNwYWNlX3ByZWZpeCArIGxpbmUpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2Vs
Zi5mbG93X21hcmtlciArICIgICAiICsgc291cmNlLmxpbmVzW2xpbmVfaW5kZXhdKQotICAgICAg
ICAgICAgZm9yIGxpbmUgaW4gc291cmNlLmxpbmVzW2xpbmVfaW5kZXggKyAxOl06Ci0gICAgICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKHNwYWNlX3ByZWZpeCArIGxpbmUpCi0gICAgICAgIGlmIGV4
Y2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpbmRlbnQgPSA0IGlmIHNob3J0IGVsc2Ug
c2VsZi5fZ2V0aW5kZW50KHNvdXJjZSkKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdl
dF9leGNvbmx5KGV4Y2luZm8sIGluZGVudD1pbmRlbnQsIG1hcmthbGw9VHJ1ZSkpCi0gICAgICAg
IHJldHVybiBsaW5lcwotCi0gICAgZGVmIGdldF9leGNvbmx5KHNlbGYsIGV4Y2luZm8sIGluZGVu
dD00LCBtYXJrYWxsPUZhbHNlKToKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBpbmRlbnQg
PSAiICIgKiBpbmRlbnQKLSAgICAgICAgIyBnZXQgdGhlIHJlYWwgZXhjZXB0aW9uIGluZm9ybWF0
aW9uIG91dAotICAgICAgICBleGxpbmVzID0gZXhjaW5mby5leGNvbmx5KHRyeXNob3J0PVRydWUp
LnNwbGl0KCdcbicpCi0gICAgICAgIGZhaWxpbmRlbnQgPSBzZWxmLmZhaWxfbWFya2VyICsgaW5k
ZW50WzE6XQotICAgICAgICBmb3IgbGluZSBpbiBleGxpbmVzOgotICAgICAgICAgICAgbGluZXMu
YXBwZW5kKGZhaWxpbmRlbnQgKyBsaW5lKQotICAgICAgICAgICAgaWYgbm90IG1hcmthbGw6Ci0g
ICAgICAgICAgICAgICAgZmFpbGluZGVudCA9IGluZGVudAotICAgICAgICByZXR1cm4gbGluZXMK
LQotICAgIGRlZiByZXByX2xvY2FscyhzZWxmLCBsb2NhbHMpOgotICAgICAgICBpZiBzZWxmLnNo
b3dsb2NhbHM6Ci0gICAgICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgICAgICBrZXlzID0gW2xv
YyBmb3IgbG9jIGluIGxvY2FscyBpZiBsb2NbMF0gIT0gIkAiXQotICAgICAgICAgICAga2V5cy5z
b3J0KCkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGtleXM6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBsb2NhbHNbbmFtZV0KLSAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdfX2J1aWx0aW5z
X18nOgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIl9fYnVpbHRpbnNfXyA9IDxi
dWlsdGlucz4iKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMg
VGhpcyBmb3JtYXR0aW5nIGNvdWxkIGFsbCBiZSBoYW5kbGVkIGJ5IHRoZQotICAgICAgICAgICAg
ICAgICAgICAjIF9yZXByKCkgZnVuY3Rpb24sIHdoaWNoIGlzIG9ubHkgcmVwcmxpYi5SZXByIGlu
Ci0gICAgICAgICAgICAgICAgICAgICMgZGlzZ3Vpc2UsIHNvIGlzIHZlcnkgY29uZmlndXJhYmxl
LgotICAgICAgICAgICAgICAgICAgICBzdHJfcmVwciA9IHNlbGYuX3NhZmVyZXByKHZhbHVlKQot
ICAgICAgICAgICAgICAgICAgICAjIGlmIGxlbihzdHJfcmVwcikgPCA3MCBvciBub3QgaXNpbnN0
YW5jZSh2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobGlzdCwgdHVwbGUsIGRpY3QpKToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCIlLTEwcyA9ICVzIiAlIChuYW1lLCBzdHJfcmVwcikpCi0gICAgICAgICAgICAgICAgICAg
ICMgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyAgICBzZWxmLl9saW5lKCIlLTEwcyA9XFwi
ICUgKG5hbWUsKSkKLSAgICAgICAgICAgICAgICAgICAgIyAgICAjIFhYWAotICAgICAgICAgICAg
ICAgICAgICAjICAgIHB5LnN0ZC5wcHJpbnQucHByaW50KHZhbHVlLCBzdHJlYW09c2VsZi5leGNp
bmZvd3JpdGVyKQotICAgICAgICAgICAgcmV0dXJuIFJlcHJMb2NhbHMobGluZXMpCi0KLSAgICBk
ZWYgcmVwcl90cmFjZWJhY2tfZW50cnkoc2VsZiwgZW50cnksIGV4Y2luZm89Tm9uZSk6Ci0gICAg
ICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0gICAgICAgIHNvdXJjZSA9IHNlbGYuX2dldGVudHJ5
c291cmNlKGVudHJ5KQotICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKLSAgICAgICAgICAgIHNv
dXJjZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKCI/Pz8iKQotICAgICAgICAgICAgbGluZV9pbmRl
eCA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZW50cnkuZ2V0Zmlyc3RsaW5lc291
cmNlKCkgY2FuIGJlIC0xLCBzaG91bGQgYmUgMCBvbiBqeXRob24KLSAgICAgICAgICAgIGxpbmVf
aW5kZXggPSBlbnRyeS5saW5lbm8gLSBtYXgoZW50cnkuZ2V0Zmlyc3RsaW5lc291cmNlKCksIDAp
Ci0KLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBzdHlsZSA9IGVudHJ5Ll9yZXByX3N0eWxl
Ci0gICAgICAgIGlmIHN0eWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdHlsZSA9IHNlbGYuc3R5
bGUKLSAgICAgICAgaWYgc3R5bGUgaW4gKCJzaG9ydCIsICJsb25nIik6Ci0gICAgICAgICAgICBz
aG9ydCA9IHN0eWxlID09ICJzaG9ydCIKLSAgICAgICAgICAgIHJlcHJhcmdzID0gc2VsZi5yZXBy
X2FyZ3MoZW50cnkpIGlmIG5vdCBzaG9ydCBlbHNlIE5vbmUKLSAgICAgICAgICAgIHMgPSBzZWxm
LmdldF9zb3VyY2Uoc291cmNlLCBsaW5lX2luZGV4LCBleGNpbmZvLCBzaG9ydD1zaG9ydCkKLSAg
ICAgICAgICAgIGxpbmVzLmV4dGVuZChzKQotICAgICAgICAgICAgaWYgc2hvcnQ6Ci0gICAgICAg
ICAgICAgICAgbWVzc2FnZSA9ICJpbiAlcyIgJSAoZW50cnkubmFtZSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGV4Y2luZm8gYW5kIGV4Y2luZm8udHlwZW5h
bWUgb3IgIiIKLSAgICAgICAgICAgIHBhdGggPSBzZWxmLl9tYWtlcGF0aChlbnRyeS5wYXRoKQot
ICAgICAgICAgICAgZmlsZWxvY3JlcHIgPSBSZXByRmlsZUxvY2F0aW9uKHBhdGgsIGVudHJ5Lmxp
bmVubyArIDEsIG1lc3NhZ2UpCi0gICAgICAgICAgICBsb2NhbHNyZXByID0gTm9uZQotICAgICAg
ICAgICAgaWYgbm90IHNob3J0OgotICAgICAgICAgICAgICAgIGxvY2Fsc3JlcHIgPSBzZWxmLnJl
cHJfbG9jYWxzKGVudHJ5LmxvY2FscykKLSAgICAgICAgICAgIHJldHVybiBSZXByRW50cnkobGlu
ZXMsIHJlcHJhcmdzLCBsb2NhbHNyZXByLCBmaWxlbG9jcmVwciwgc3R5bGUpCi0gICAgICAgIGlm
IGV4Y2luZm86Ci0gICAgICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZXRfZXhjb25seShleGNp
bmZvLCBpbmRlbnQ9NCkpCi0gICAgICAgIHJldHVybiBSZXByRW50cnkobGluZXMsIE5vbmUsIE5v
bmUsIE5vbmUsIHN0eWxlKQotCi0gICAgZGVmIF9tYWtlcGF0aChzZWxmLCBwYXRoKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuYWJzcGF0aDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBucCA9IHB5LnBhdGgubG9jYWwoKS5iZXN0cmVscGF0aChwYXRoKQotICAgICAgICAgICAgZXhj
ZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhdGgKLSAgICAgICAgICAgIGlm
IGxlbihucCkgPCBsZW4oc3RyKHBhdGgpKToKLSAgICAgICAgICAgICAgICBwYXRoID0gbnAKLSAg
ICAgICAgcmV0dXJuIHBhdGgKLQotICAgIGRlZiByZXByX3RyYWNlYmFjayhzZWxmLCBleGNpbmZv
KToKLSAgICAgICAgdHJhY2ViYWNrID0gZXhjaW5mby50cmFjZWJhY2sKLSAgICAgICAgaWYgc2Vs
Zi50YmZpbHRlcjoKLSAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFjay5maWx0ZXIoKQot
Ci0gICAgICAgIGlmIGlzX3JlY3Vyc2lvbl9lcnJvcihleGNpbmZvKToKLSAgICAgICAgICAgIHRy
YWNlYmFjaywgZXh0cmFsaW5lID0gc2VsZi5fdHJ1bmNhdGVfcmVjdXJzaXZlX3RyYWNlYmFjayh0
cmFjZWJhY2spCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleHRyYWxpbmUgPSBOb25lCi0K
LSAgICAgICAgbGFzdCA9IHRyYWNlYmFja1stMV0KLSAgICAgICAgZW50cmllcyA9IFtdCi0gICAg
ICAgIGZvciBpbmRleCwgZW50cnkgaW4gZW51bWVyYXRlKHRyYWNlYmFjayk6Ci0gICAgICAgICAg
ICBlaW5mbyA9IChsYXN0ID09IGVudHJ5KSBhbmQgZXhjaW5mbyBvciBOb25lCi0gICAgICAgICAg
ICByZXByZW50cnkgPSBzZWxmLnJlcHJfdHJhY2ViYWNrX2VudHJ5KGVudHJ5LCBlaW5mbykKLSAg
ICAgICAgICAgIGVudHJpZXMuYXBwZW5kKHJlcHJlbnRyeSkKLSAgICAgICAgcmV0dXJuIFJlcHJU
cmFjZWJhY2soZW50cmllcywgZXh0cmFsaW5lLCBzdHlsZT1zZWxmLnN0eWxlKQotCi0gICAgZGVm
IF90cnVuY2F0ZV9yZWN1cnNpdmVfdHJhY2ViYWNrKHNlbGYsIHRyYWNlYmFjayk6Ci0gICAgICAg
ICIiIgotICAgICAgICBUcnVuY2F0ZSB0aGUgZ2l2ZW4gcmVjdXJzaXZlIHRyYWNlYmFjayB0cnlp
bmcgdG8gZmluZCB0aGUgc3RhcnRpbmcgcG9pbnQKLSAgICAgICAgb2YgdGhlIHJlY3Vyc2lvbi4K
LQotICAgICAgICBUaGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgZ29pbmcgdGhyb3VnaCBlYWNoIHRy
YWNlYmFjayBlbnRyeSBhbmQgZmluZGluZyB0aGUKLSAgICAgICAgcG9pbnQgaW4gd2hpY2ggdGhl
IGxvY2FscyBvZiB0aGUgZnJhbWUgYXJlIGVxdWFsIHRvIHRoZSBsb2NhbHMgb2YgYSBwcmV2aW91
cyBmcmFtZSAoc2VlIGBgcmVjdXJzaW9uaW5kZXgoKWBgLgotCi0gICAgICAgIEhhbmRsZSB0aGUg
c2l0dWF0aW9uIHdoZXJlIHRoZSByZWN1cnNpb24gcHJvY2VzcyBtaWdodCByYWlzZSBhbiBleGNl
cHRpb24gKGZvciBleGFtcGxlCi0gICAgICAgIGNvbXBhcmluZyBudW1weSBhcnJheXMgdXNpbmcg
ZXF1YWxpdHkgcmFpc2VzIGEgVHlwZUVycm9yKSwgaW4gd2hpY2ggY2FzZSB3ZSBkbyBvdXIgYmVz
dCB0bwotICAgICAgICB3YXJuIHRoZSB1c2VyIG9mIHRoZSBlcnJvciBhbmQgc2hvdyBhIGxpbWl0
ZWQgdHJhY2ViYWNrLgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVj
dXJzaW9uaW5kZXggPSB0cmFjZWJhY2sucmVjdXJzaW9uaW5kZXgoKQotICAgICAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBtYXhfZnJhbWVzID0gMTAKLSAgICAgICAgICAg
IGV4dHJhbGluZSA9ICgKLSAgICAgICAgICAgICAgICAnISEhIFJlY3Vyc2lvbiBlcnJvciBkZXRl
Y3RlZCwgYnV0IGFuIGVycm9yIG9jY3VycmVkIGxvY2F0aW5nIHRoZSBvcmlnaW4gb2YgcmVjdXJz
aW9uLlxuJwotICAgICAgICAgICAgICAgICcgIFRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uIGhhcHBl
bmVkIHdoZW4gY29tcGFyaW5nIGxvY2FscyBpbiB0aGUgc3RhY2sgZnJhbWU6XG4nCi0gICAgICAg
ICAgICAgICAgJyAgICB7ZXhjX3R5cGV9OiB7ZXhjX21zZ31cbicKLSAgICAgICAgICAgICAgICAn
ICBEaXNwbGF5aW5nIGZpcnN0IGFuZCBsYXN0IHttYXhfZnJhbWVzfSBzdGFjayBmcmFtZXMgb3V0
IG9mIHt0b3RhbH0uJwotICAgICAgICAgICAgKS5mb3JtYXQoZXhjX3R5cGU9dHlwZShlKS5fX25h
bWVfXywgZXhjX21zZz1zYWZlX3N0cihlKSwgbWF4X2ZyYW1lcz1tYXhfZnJhbWVzLCB0b3RhbD1s
ZW4odHJhY2ViYWNrKSkKLSAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja1s6bWF4X2Zy
YW1lc10gKyB0cmFjZWJhY2tbLW1heF9mcmFtZXM6XQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgaWYgcmVjdXJzaW9uaW5kZXggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZXh0cmFs
aW5lID0gIiEhISBSZWN1cnNpb24gZGV0ZWN0ZWQgKHNhbWUgbG9jYWxzICYgcG9zaXRpb24pIgot
ICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja1s6cmVjdXJzaW9uaW5kZXggKyAx
XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleHRyYWxpbmUgPSBOb25lCi0K
LSAgICAgICAgcmV0dXJuIHRyYWNlYmFjaywgZXh0cmFsaW5lCi0KLSAgICBkZWYgcmVwcl9leGNp
bmZvKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBpZiBfUFkyOgotICAgICAgICAgICAgcmVwcnRy
YWNlYmFjayA9IHNlbGYucmVwcl90cmFjZWJhY2soZXhjaW5mbykKLSAgICAgICAgICAgIHJlcHJj
cmFzaCA9IGV4Y2luZm8uX2dldHJlcHJjcmFzaCgpCi0KLSAgICAgICAgICAgIHJldHVybiBSZXBy
RXhjZXB0aW9uSW5mbyhyZXBydHJhY2ViYWNrLCByZXByY3Jhc2gpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByZXByX2NoYWluID0gW10KLSAgICAgICAgICAgIGUgPSBleGNpbmZvLnZhbHVl
Ci0gICAgICAgICAgICBkZXNjciA9IE5vbmUKLSAgICAgICAgICAgIHdoaWxlIGUgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgaWYgZXhjaW5mbzoKLSAgICAgICAgICAgICAgICAgICAgcmVw
cnRyYWNlYmFjayA9IHNlbGYucmVwcl90cmFjZWJhY2soZXhjaW5mbykKLSAgICAgICAgICAgICAg
ICAgICAgcmVwcmNyYXNoID0gZXhjaW5mby5fZ2V0cmVwcmNyYXNoKCkKLSAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIGZhbGxiYWNrIHRvIG5hdGl2ZSByZXByIGlm
IHRoZSBleGNlcHRpb24gZG9lc24ndCBoYXZlIGEgdHJhY2ViYWNrOgotICAgICAgICAgICAgICAg
ICAgICAjIEV4Y2VwdGlvbkluZm8gb2JqZWN0cyByZXF1aXJlIGEgZnVsbCB0cmFjZWJhY2sgdG8g
d29yawotICAgICAgICAgICAgICAgICAgICByZXBydHJhY2ViYWNrID0gUmVwclRyYWNlYmFja05h
dGl2ZShweS5zdGQudHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShlKSwgZSwgTm9uZSkp
Ci0gICAgICAgICAgICAgICAgICAgIHJlcHJjcmFzaCA9IE5vbmUKLQotICAgICAgICAgICAgICAg
IHJlcHJfY2hhaW4gKz0gWyhyZXBydHJhY2ViYWNrLCByZXByY3Jhc2gsIGRlc2NyKV0KLSAgICAg
ICAgICAgICAgICBpZiBlLl9fY2F1c2VfXyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAg
ICAgZSA9IGUuX19jYXVzZV9fCi0gICAgICAgICAgICAgICAgICAgIGV4Y2luZm8gPSBFeGNlcHRp
b25JbmZvKCh0eXBlKGUpLCBlLCBlLl9fdHJhY2ViYWNrX18pKSBpZiBlLl9fdHJhY2ViYWNrX18g
ZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyID0gJ1RoZSBhYm92ZSBleGNlcHRp
b24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246JwotICAg
ICAgICAgICAgICAgIGVsaWYgKGUuX19jb250ZXh0X18gaXMgbm90IE5vbmUgYW5kIG5vdCBlLl9f
c3VwcHJlc3NfY29udGV4dF9fKToKLSAgICAgICAgICAgICAgICAgICAgZSA9IGUuX19jb250ZXh0
X18KLSAgICAgICAgICAgICAgICAgICAgZXhjaW5mbyA9IEV4Y2VwdGlvbkluZm8oKHR5cGUoZSks
IGUsIGUuX190cmFjZWJhY2tfXykpIGlmIGUuX190cmFjZWJhY2tfXyBlbHNlIE5vbmUKLSAgICAg
ICAgICAgICAgICAgICAgZGVzY3IgPSAnRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNl
cHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOicKLSAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICBlID0gTm9uZQotICAgICAgICAgICAgcmVwcl9jaGFpbi5y
ZXZlcnNlKCkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb25DaGFpblJlcHIocmVwcl9jaGFp
bikKLQotCi1jbGFzcyBUZXJtaW5hbFJlcHIob2JqZWN0KToKLSAgICBkZWYgX19zdHJfXyhzZWxm
KToKLSAgICAgICAgcyA9IHNlbGYuX191bmljb2RlX18oKQotICAgICAgICBpZiBfUFkyOgotICAg
ICAgICAgICAgcyA9IHMuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIHJldHVybiBzCi0KLSAgICBk
ZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgICMgRllJIHRoaXMgaXMgY2FsbGVkIGZyb20g
cHl0ZXN0LXhkaXN0J3Mgc2VyaWFsaXphdGlvbiBvZiBleGNlcHRpb24KLSAgICAgICAgIyBpbmZv
cm1hdGlvbi4KLSAgICAgICAgaW8gPSBweS5pby5UZXh0SU8oKQotICAgICAgICB0dyA9IHB5Lmlv
LlRlcm1pbmFsV3JpdGVyKGZpbGU9aW8pCi0gICAgICAgIHNlbGYudG90ZXJtaW5hbCh0dykKLSAg
ICAgICAgcmV0dXJuIGlvLmdldHZhbHVlKCkuc3RyaXAoKQotCi0gICAgZGVmIF9fcmVwcl9fKHNl
bGYpOgotICAgICAgICByZXR1cm4gIjwlcyBpbnN0YW5jZSBhdCAlMHg+IiAlIChzZWxmLl9fY2xh
c3NfXywgaWQoc2VsZikpCi0KLQotY2xhc3MgRXhjZXB0aW9uUmVwcihUZXJtaW5hbFJlcHIpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zZWN0aW9ucyA9IFtdCi0KLSAg
ICBkZWYgYWRkc2VjdGlvbihzZWxmLCBuYW1lLCBjb250ZW50LCBzZXA9Ii0iKToKLSAgICAgICAg
c2VsZi5zZWN0aW9ucy5hcHBlbmQoKG5hbWUsIGNvbnRlbnQsIHNlcCkpCi0KLSAgICBkZWYgdG90
ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIGZvciBuYW1lLCBjb250ZW50LCBzZXAgaW4gc2Vs
Zi5zZWN0aW9uczoKLSAgICAgICAgICAgIHR3LnNlcChzZXAsIG5hbWUpCi0gICAgICAgICAgICB0
dy5saW5lKGNvbnRlbnQpCi0KLQotY2xhc3MgRXhjZXB0aW9uQ2hhaW5SZXByKEV4Y2VwdGlvblJl
cHIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGFpbik6Ci0gICAgICAgIHN1cGVyKEV4Y2Vw
dGlvbkNoYWluUmVwciwgc2VsZikuX19pbml0X18oKQotICAgICAgICBzZWxmLmNoYWluID0gY2hh
aW4KLSAgICAgICAgIyByZXByY3Jhc2ggYW5kIHJlcHJ0cmFjZWJhY2sgb2YgdGhlIG91dGVybW9z
dCAodGhlIG5ld2VzdCkgZXhjZXB0aW9uCi0gICAgICAgICMgaW4gdGhlIGNoYWluCi0gICAgICAg
IHNlbGYucmVwcnRyYWNlYmFjayA9IGNoYWluWy0xXVswXQotICAgICAgICBzZWxmLnJlcHJjcmFz
aCA9IGNoYWluWy0xXVsxXQotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAg
ICBmb3IgZWxlbWVudCBpbiBzZWxmLmNoYWluOgotICAgICAgICAgICAgZWxlbWVudFswXS50b3Rl
cm1pbmFsKHR3KQotICAgICAgICAgICAgaWYgZWxlbWVudFsyXSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICB0dy5saW5lKCIiKQotICAgICAgICAgICAgICAgIHR3LmxpbmUoZWxlbWVudFsy
XSwgeWVsbG93PVRydWUpCi0gICAgICAgIHN1cGVyKEV4Y2VwdGlvbkNoYWluUmVwciwgc2VsZiku
dG90ZXJtaW5hbCh0dykKLQotCi1jbGFzcyBSZXByRXhjZXB0aW9uSW5mbyhFeGNlcHRpb25SZXBy
KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwcnRyYWNlYmFjaywgcmVwcmNyYXNoKToKLSAg
ICAgICAgc3VwZXIoUmVwckV4Y2VwdGlvbkluZm8sIHNlbGYpLl9faW5pdF9fKCkKLSAgICAgICAg
c2VsZi5yZXBydHJhY2ViYWNrID0gcmVwcnRyYWNlYmFjawotICAgICAgICBzZWxmLnJlcHJjcmFz
aCA9IHJlcHJjcmFzaAotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICBz
ZWxmLnJlcHJ0cmFjZWJhY2sudG90ZXJtaW5hbCh0dykKLSAgICAgICAgc3VwZXIoUmVwckV4Y2Vw
dGlvbkluZm8sIHNlbGYpLnRvdGVybWluYWwodHcpCi0KLQotY2xhc3MgUmVwclRyYWNlYmFjayhU
ZXJtaW5hbFJlcHIpOgotICAgIGVudHJ5c2VwID0gIl8gIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlcHJlbnRyaWVzLCBleHRyYWxpbmUsIHN0eWxlKToKLSAgICAgICAgc2VsZi5yZXByZW50
cmllcyA9IHJlcHJlbnRyaWVzCi0gICAgICAgIHNlbGYuZXh0cmFsaW5lID0gZXh0cmFsaW5lCi0g
ICAgICAgIHNlbGYuc3R5bGUgPSBzdHlsZQotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcp
OgotICAgICAgICAjIHRoZSBlbnRyaWVzIG1pZ2h0IGhhdmUgZGlmZmVyZW50IHN0eWxlcwotICAg
ICAgICBmb3IgaSwgZW50cnkgaW4gZW51bWVyYXRlKHNlbGYucmVwcmVudHJpZXMpOgotICAgICAg
ICAgICAgaWYgZW50cnkuc3R5bGUgPT0gImxvbmciOgotICAgICAgICAgICAgICAgIHR3LmxpbmUo
IiIpCi0gICAgICAgICAgICBlbnRyeS50b3Rlcm1pbmFsKHR3KQotICAgICAgICAgICAgaWYgaSA8
IGxlbihzZWxmLnJlcHJlbnRyaWVzKSAtIDE6Ci0gICAgICAgICAgICAgICAgbmV4dF9lbnRyeSA9
IHNlbGYucmVwcmVudHJpZXNbaSArIDFdCi0gICAgICAgICAgICAgICAgaWYgZW50cnkuc3R5bGUg
PT0gImxvbmciIG9yIFwKLSAgICAgICAgICAgICAgICAgICBlbnRyeS5zdHlsZSA9PSAic2hvcnQi
IGFuZCBuZXh0X2VudHJ5LnN0eWxlID09ICJsb25nIjoKLSAgICAgICAgICAgICAgICAgICAgdHcu
c2VwKHNlbGYuZW50cnlzZXApCi0KLSAgICAgICAgaWYgc2VsZi5leHRyYWxpbmU6Ci0gICAgICAg
ICAgICB0dy5saW5lKHNlbGYuZXh0cmFsaW5lKQotCi0KLWNsYXNzIFJlcHJUcmFjZWJhY2tOYXRp
dmUoUmVwclRyYWNlYmFjayk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRibGluZXMpOgotICAg
ICAgICBzZWxmLnN0eWxlID0gIm5hdGl2ZSIKLSAgICAgICAgc2VsZi5yZXByZW50cmllcyA9IFtS
ZXByRW50cnlOYXRpdmUodGJsaW5lcyldCi0gICAgICAgIHNlbGYuZXh0cmFsaW5lID0gTm9uZQot
Ci0KLWNsYXNzIFJlcHJFbnRyeU5hdGl2ZShUZXJtaW5hbFJlcHIpOgotICAgIHN0eWxlID0gIm5h
dGl2ZSIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YmxpbmVzKToKLSAgICAgICAgc2VsZi5s
aW5lcyA9IHRibGluZXMKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAg
dHcud3JpdGUoIiIuam9pbihzZWxmLmxpbmVzKSkKLQotCi1jbGFzcyBSZXByRW50cnkoVGVybWlu
YWxSZXByKToKLSAgICBsb2NhbHNzZXAgPSAiXyAiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
bGluZXMsIHJlcHJmdW5jYXJncywgcmVwcmxvY2FscywgZmlsZWxvY3JlcHIsIHN0eWxlKToKLSAg
ICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCi0gICAgICAgIHNlbGYucmVwcmZ1bmNhcmdzID0gcmVw
cmZ1bmNhcmdzCi0gICAgICAgIHNlbGYucmVwcmxvY2FscyA9IHJlcHJsb2NhbHMKLSAgICAgICAg
c2VsZi5yZXByZmlsZWxvYyA9IGZpbGVsb2NyZXByCi0gICAgICAgIHNlbGYuc3R5bGUgPSBzdHls
ZQotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICBpZiBzZWxmLnN0eWxl
ID09ICJzaG9ydCI6Ci0gICAgICAgICAgICBzZWxmLnJlcHJmaWxlbG9jLnRvdGVybWluYWwodHcp
Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVzOgotICAgICAgICAgICAgICAgIHJl
ZCA9IGxpbmUuc3RhcnRzd2l0aCgiRSAgICIpCi0gICAgICAgICAgICAgICAgdHcubGluZShsaW5l
LCBib2xkPVRydWUsIHJlZD1yZWQpCi0gICAgICAgICAgICAjIHR3LmxpbmUoIiIpCi0gICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgaWYgc2VsZi5yZXByZnVuY2FyZ3M6Ci0gICAgICAgICAgICBz
ZWxmLnJlcHJmdW5jYXJncy50b3Rlcm1pbmFsKHR3KQotICAgICAgICBmb3IgbGluZSBpbiBzZWxm
LmxpbmVzOgotICAgICAgICAgICAgcmVkID0gbGluZS5zdGFydHN3aXRoKCJFICAgIikKLSAgICAg
ICAgICAgIHR3LmxpbmUobGluZSwgYm9sZD1UcnVlLCByZWQ9cmVkKQotICAgICAgICBpZiBzZWxm
LnJlcHJsb2NhbHM6Ci0gICAgICAgICAgICAjIHR3LnNlcChzZWxmLmxvY2Fsc3NlcCwgIkxvY2Fs
cyIpCi0gICAgICAgICAgICB0dy5saW5lKCIiKQotICAgICAgICAgICAgc2VsZi5yZXBybG9jYWxz
LnRvdGVybWluYWwodHcpCi0gICAgICAgIGlmIHNlbGYucmVwcmZpbGVsb2M6Ci0gICAgICAgICAg
ICBpZiBzZWxmLmxpbmVzOgotICAgICAgICAgICAgICAgIHR3LmxpbmUoIiIpCi0gICAgICAgICAg
ICBzZWxmLnJlcHJmaWxlbG9jLnRvdGVybWluYWwodHcpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICIlc1xuJXNcbiVzIiAlICgiXG4iLmpvaW4oc2VsZi5saW5lcyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXBybG9jYWxzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVwcmZpbGVsb2MpCi0KLQotY2xhc3MgUmVw
ckZpbGVMb2NhdGlvbihUZXJtaW5hbFJlcHIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRo
LCBsaW5lbm8sIG1lc3NhZ2UpOgotICAgICAgICBzZWxmLnBhdGggPSBzdHIocGF0aCkKLSAgICAg
ICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQot
Ci0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICAjIGZpbGVuYW1lIGFuZCBs
aW5lbm8gb3V0cHV0IGZvciBlYWNoIGVudHJ5LAotICAgICAgICAjIHVzaW5nIGFuIG91dHB1dCBm
b3JtYXQgdGhhdCBtb3N0IGVkaXRvcnMgdW50ZXJzdGFuZAotICAgICAgICBtc2cgPSBzZWxmLm1l
c3NhZ2UKLSAgICAgICAgaSA9IG1zZy5maW5kKCJcbiIpCi0gICAgICAgIGlmIGkgIT0gLTE6Ci0g
ICAgICAgICAgICBtc2cgPSBtc2dbOmldCi0gICAgICAgIHR3LndyaXRlKHNlbGYucGF0aCwgYm9s
ZD1UcnVlLCByZWQ9VHJ1ZSkKLSAgICAgICAgdHcubGluZSgiOiVzOiAlcyIgJSAoc2VsZi5saW5l
bm8sIG1zZykpCi0KLQotY2xhc3MgUmVwckxvY2FscyhUZXJtaW5hbFJlcHIpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsaW5lcyk6Ci0gICAgICAgIHNlbGYubGluZXMgPSBsaW5lcwotCi0gICAg
ZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVz
OgotICAgICAgICAgICAgdHcubGluZShsaW5lKQotCi0KLWNsYXNzIFJlcHJGdW5jQXJncyhUZXJt
aW5hbFJlcHIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKLSAgICAgICAgc2VsZi5h
cmdzID0gYXJncwotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICBpZiBz
ZWxmLmFyZ3M6Ci0gICAgICAgICAgICBsaW5lc29mYXIgPSAiIgotICAgICAgICAgICAgZm9yIG5h
bWUsIHZhbHVlIGluIHNlbGYuYXJnczoKLSAgICAgICAgICAgICAgICBucyA9ICIlcyA9ICVzIiAl
IChzYWZlX3N0cihuYW1lKSwgc2FmZV9zdHIodmFsdWUpKQotICAgICAgICAgICAgICAgIGlmIGxl
bihucykgKyBsZW4obGluZXNvZmFyKSArIDIgPiB0dy5mdWxsd2lkdGg6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIGxpbmVzb2ZhcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHR3LmxpbmUobGlu
ZXNvZmFyKQotICAgICAgICAgICAgICAgICAgICBsaW5lc29mYXIgPSBucwotICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmVzb2ZhcjoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmVzb2ZhciArPSAiLCAiICsgbnMKLSAgICAgICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzb2ZhciA9IG5zCi0gICAgICAgICAg
ICBpZiBsaW5lc29mYXI6Ci0gICAgICAgICAgICAgICAgdHcubGluZShsaW5lc29mYXIpCi0gICAg
ICAgICAgICB0dy5saW5lKCIiKQotCi0KLWRlZiBnZXRyYXdjb2RlKG9iaiwgdHJ5Y2FsbD1UcnVl
KToKLSAgICAiIiIgcmV0dXJuIGNvZGUgb2JqZWN0IGZvciBnaXZlbiBmdW5jdGlvbi4gIiIiCi0g
ICAgdHJ5OgotICAgICAgICByZXR1cm4gb2JqLl9fY29kZV9fCi0gICAgZXhjZXB0IEF0dHJpYnV0
ZUVycm9yOgotICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgJ2ltX2Z1bmMnLCBvYmopCi0gICAg
ICAgIG9iaiA9IGdldGF0dHIob2JqLCAnZnVuY19jb2RlJywgb2JqKQotICAgICAgICBvYmogPSBn
ZXRhdHRyKG9iaiwgJ2ZfY29kZScsIG9iaikKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICdf
X2NvZGVfXycsIG9iaikKLSAgICAgICAgaWYgdHJ5Y2FsbCBhbmQgbm90IGhhc2F0dHIob2JqLCAn
Y29fZmlyc3RsaW5lbm8nKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIob2JqLCAnX19jYWxsX18n
KSBhbmQgbm90IHB5LnN0ZC5pbnNwZWN0LmlzY2xhc3Mob2JqKToKLSAgICAgICAgICAgICAgICB4
ID0gZ2V0cmF3Y29kZShvYmouX19jYWxsX18sIHRyeWNhbGw9RmFsc2UpCi0gICAgICAgICAgICAg
ICAgaWYgaGFzYXR0cih4LCAnY29fZmlyc3RsaW5lbm8nKToKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHgKLSAgICAgICAgcmV0dXJuIG9iagotCi0KLWlmIFBZMzU6ICAjIFJlY3Vyc2lvbkVy
cm9yIGludHJvZHVjZWQgaW4gMy41Ci0gICAgZGVmIGlzX3JlY3Vyc2lvbl9lcnJvcihleGNpbmZv
KToKLSAgICAgICAgcmV0dXJuIGV4Y2luZm8uZXJyaXNpbnN0YW5jZShSZWN1cnNpb25FcnJvcikg
ICMgbm9xYQotZWxzZToKLSAgICBkZWYgaXNfcmVjdXJzaW9uX2Vycm9yKGV4Y2luZm8pOgotICAg
ICAgICBpZiBub3QgZXhjaW5mby5lcnJpc2luc3RhbmNlKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuICJtYXhp
bXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIgaW4gc3RyKGV4Y2luZm8udmFsdWUpCi0gICAg
ICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvc291cmNlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9fY29kZS9zb3VyY2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2
MzhjNTk4Yjc0OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUv
c291cmNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDE1ICswLDAgQEAKLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgZ2VuZXJhdG9ycywgcHJpbnRfZnVu
Y3Rpb24KLQotZnJvbSBiaXNlY3QgaW1wb3J0IGJpc2VjdF9yaWdodAotaW1wb3J0IHN5cwotaW1w
b3J0IHNpeAotaW1wb3J0IGluc3BlY3QKLWltcG9ydCB0b2tlbml6ZQotaW1wb3J0IHB5Ci1jcHlf
Y29tcGlsZSA9IGNvbXBpbGUKLQotdHJ5OgotICAgIGltcG9ydCBfYXN0Ci0gICAgZnJvbSBfYXN0
IGltcG9ydCBQeUNGX09OTFlfQVNUIGFzIF9BU1RfRkxBRwotZXhjZXB0IEltcG9ydEVycm9yOgot
ICAgIF9BU1RfRkxBRyA9IDAKLSAgICBfYXN0ID0gTm9uZQotCi0KLWNsYXNzIFNvdXJjZShvYmpl
Y3QpOgotICAgICIiIiBhIGltbXV0YWJsZSBvYmplY3QgaG9sZGluZyBhIHNvdXJjZSBjb2RlIGZy
YWdtZW50LAotICAgICAgICBwb3NzaWJseSBkZWluZGVudGluZyBpdC4KLSAgICAiIiIKLSAgICBf
Y29tcGlsZWNvdW50ZXIgPSAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKnBhcnRzLCAqKmt3
YXJncyk6Ci0gICAgICAgIHNlbGYubGluZXMgPSBsaW5lcyA9IFtdCi0gICAgICAgIGRlID0ga3dh
cmdzLmdldCgnZGVpbmRlbnQnLCBUcnVlKQotICAgICAgICByc3RyaXAgPSBrd2FyZ3MuZ2V0KCdy
c3RyaXAnLCBUcnVlKQotICAgICAgICBmb3IgcGFydCBpbiBwYXJ0czoKLSAgICAgICAgICAgIGlm
IG5vdCBwYXJ0OgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IFtdCi0gICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKHBhcnQsIFNvdXJjZSk6Ci0gICAgICAgICAgICAgICAgcGFydGxpbmVzID0g
cGFydC5saW5lcwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcnQsICh0dXBsZSwgbGlz
dCkpOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IFt4LnJzdHJpcCgiXG4iKSBmb3IgeCBp
biBwYXJ0XQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcnQsIHNpeC5zdHJpbmdfdHlw
ZXMpOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IHBhcnQuc3BsaXQoJ1xuJykKLSAgICAg
ICAgICAgICAgICBpZiByc3RyaXA6Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHBhcnRsaW5l
czoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRsaW5lc1stMV0uc3RyaXAoKToKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAg
cGFydGxpbmVzLnBvcCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBhcnRs
aW5lcyA9IGdldHNvdXJjZShwYXJ0LCBkZWluZGVudD1kZSkubGluZXMKLSAgICAgICAgICAgIGlm
IGRlOgotICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IGRlaW5kZW50KHBhcnRsaW5lcykKLSAg
ICAgICAgICAgIGxpbmVzLmV4dGVuZChwYXJ0bGluZXMpCi0KLSAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubGluZXMgPT0g
b3RoZXIubGluZXMKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHNl
bGYpID09IG90aGVyCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIF9faGFzaF9fID0g
Tm9uZQotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIGlmIGlzaW5z
dGFuY2Uoa2V5LCBpbnQpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubGluZXNba2V5XQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgaWYga2V5LnN0ZXAgbm90IGluIChOb25lLCAxKToKLSAg
ICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCJjYW5ub3Qgc2xpY2UgYSBTb3VyY2Ugd2l0
aCBhIHN0ZXAiKQotICAgICAgICAgICAgbmV3c291cmNlID0gU291cmNlKCkKLSAgICAgICAgICAg
IG5ld3NvdXJjZS5saW5lcyA9IHNlbGYubGluZXNba2V5LnN0YXJ0OmtleS5zdG9wXQotICAgICAg
ICAgICAgcmV0dXJuIG5ld3NvdXJjZQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAg
IHJldHVybiBsZW4oc2VsZi5saW5lcykKLQotICAgIGRlZiBzdHJpcChzZWxmKToKLSAgICAgICAg
IiIiIHJldHVybiBuZXcgc291cmNlIG9iamVjdCB3aXRoIHRyYWlsaW5nCi0gICAgICAgICAgICBh
bmQgbGVhZGluZyBibGFuayBsaW5lcyByZW1vdmVkLgotICAgICAgICAiIiIKLSAgICAgICAgc3Rh
cnQsIGVuZCA9IDAsIGxlbihzZWxmKQotICAgICAgICB3aGlsZSBzdGFydCA8IGVuZCBhbmQgbm90
IHNlbGYubGluZXNbc3RhcnRdLnN0cmlwKCk6Ci0gICAgICAgICAgICBzdGFydCArPSAxCi0gICAg
ICAgIHdoaWxlIGVuZCA+IHN0YXJ0IGFuZCBub3Qgc2VsZi5saW5lc1tlbmQgLSAxXS5zdHJpcCgp
OgotICAgICAgICAgICAgZW5kIC09IDEKLSAgICAgICAgc291cmNlID0gU291cmNlKCkKLSAgICAg
ICAgc291cmNlLmxpbmVzWzpdID0gc2VsZi5saW5lc1tzdGFydDplbmRdCi0gICAgICAgIHJldHVy
biBzb3VyY2UKLQotICAgIGRlZiBwdXRhcm91bmQoc2VsZiwgYmVmb3JlPScnLCBhZnRlcj0nJywg
aW5kZW50PScgJyAqIDQpOgotICAgICAgICAiIiIgcmV0dXJuIGEgY29weSBvZiB0aGUgc291cmNl
IG9iamVjdCB3aXRoCi0gICAgICAgICAgICAnYmVmb3JlJyBhbmQgJ2FmdGVyJyB3cmFwcGVkIGFy
b3VuZCBpdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGJlZm9yZSA9IFNvdXJjZShiZWZvcmUpCi0g
ICAgICAgIGFmdGVyID0gU291cmNlKGFmdGVyKQotICAgICAgICBuZXdzb3VyY2UgPSBTb3VyY2Uo
KQotICAgICAgICBsaW5lcyA9IFsoaW5kZW50ICsgbGluZSkgZm9yIGxpbmUgaW4gc2VsZi5saW5l
c10KLSAgICAgICAgbmV3c291cmNlLmxpbmVzID0gYmVmb3JlLmxpbmVzICsgbGluZXMgKyBhZnRl
ci5saW5lcwotICAgICAgICByZXR1cm4gbmV3c291cmNlCi0KLSAgICBkZWYgaW5kZW50KHNlbGYs
IGluZGVudD0nICcgKiA0KToKLSAgICAgICAgIiIiIHJldHVybiBhIGNvcHkgb2YgdGhlIHNvdXJj
ZSBvYmplY3Qgd2l0aAotICAgICAgICAgICAgYWxsIGxpbmVzIGluZGVudGVkIGJ5IHRoZSBnaXZl
biBpbmRlbnQtc3RyaW5nLgotICAgICAgICAiIiIKLSAgICAgICAgbmV3c291cmNlID0gU291cmNl
KCkKLSAgICAgICAgbmV3c291cmNlLmxpbmVzID0gWyhpbmRlbnQgKyBsaW5lKSBmb3IgbGluZSBp
biBzZWxmLmxpbmVzXQotICAgICAgICByZXR1cm4gbmV3c291cmNlCi0KLSAgICBkZWYgZ2V0c3Rh
dGVtZW50KHNlbGYsIGxpbmVubywgYXNzZXJ0aW9uPUZhbHNlKToKLSAgICAgICAgIiIiIHJldHVy
biBTb3VyY2Ugc3RhdGVtZW50IHdoaWNoIGNvbnRhaW5zIHRoZQotICAgICAgICAgICAgZ2l2ZW4g
bGluZW51bWJlciAoY291bnRlZCBmcm9tIDApLgotICAgICAgICAiIiIKLSAgICAgICAgc3RhcnQs
IGVuZCA9IHNlbGYuZ2V0c3RhdGVtZW50cmFuZ2UobGluZW5vLCBhc3NlcnRpb24pCi0gICAgICAg
IHJldHVybiBzZWxmW3N0YXJ0OmVuZF0KLQotICAgIGRlZiBnZXRzdGF0ZW1lbnRyYW5nZShzZWxm
LCBsaW5lbm8sIGFzc2VydGlvbj1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gKHN0YXJ0LCBl
bmQpIHR1cGxlIHdoaWNoIHNwYW5zIHRoZSBtaW5pbWFsCi0gICAgICAgICAgICBzdGF0ZW1lbnQg
cmVnaW9uIHdoaWNoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGxpbmVuby4KLSAgICAgICAgIiIiCi0g
ICAgICAgIGlmIG5vdCAoMCA8PSBsaW5lbm8gPCBsZW4oc2VsZikpOgotICAgICAgICAgICAgcmFp
c2UgSW5kZXhFcnJvcigibGluZW5vIG91dCBvZiByYW5nZSIpCi0gICAgICAgIGFzdCwgc3RhcnQs
IGVuZCA9IGdldHN0YXRlbWVudHJhbmdlX2FzdChsaW5lbm8sIHNlbGYpCi0gICAgICAgIHJldHVy
biBzdGFydCwgZW5kCi0KLSAgICBkZWYgZGVpbmRlbnQoc2VsZiwgb2Zmc2V0PU5vbmUpOgotICAg
ICAgICAiIiIgcmV0dXJuIGEgbmV3IHNvdXJjZSBvYmplY3QgZGVpbmRlbnRlZCBieSBvZmZzZXQu
Ci0gICAgICAgICAgICBJZiBvZmZzZXQgaXMgTm9uZSB0aGVuIGd1ZXNzIGFuIGluZGVudGF0aW9u
IG9mZnNldCBmcm9tCi0gICAgICAgICAgICB0aGUgZmlyc3Qgbm9uLWJsYW5rIGxpbmUuICBTdWJz
ZXF1ZW50IGxpbmVzIHdoaWNoIGhhdmUgYQotICAgICAgICAgICAgbG93ZXIgaW5kZW50YXRpb24g
b2Zmc2V0IHdpbGwgYmUgY29waWVkIHZlcmJhdGltIGFzCi0gICAgICAgICAgICB0aGV5IGFyZSBh
c3N1bWVkIHRvIGJlIHBhcnQgb2YgbXVsdGlsaW5lcy4KLSAgICAgICAgIiIiCi0gICAgICAgICMg
WFhYIG1heWJlIHVzZSB0aGUgdG9rZW5pemVyIHRvIHByb3Blcmx5IGhhbmRsZSBtdWx0aWxpbmUK
LSAgICAgICAgIyAgICAgc3RyaW5ncyBldGMucHA/Ci0gICAgICAgIG5ld3NvdXJjZSA9IFNvdXJj
ZSgpCi0gICAgICAgIG5ld3NvdXJjZS5saW5lc1s6XSA9IGRlaW5kZW50KHNlbGYubGluZXMsIG9m
ZnNldCkKLSAgICAgICAgcmV0dXJuIG5ld3NvdXJjZQotCi0gICAgZGVmIGlzcGFyc2VhYmxlKHNl
bGYsIGRlaW5kZW50PVRydWUpOgotICAgICAgICAiIiIgcmV0dXJuIFRydWUgaWYgc291cmNlIGlz
IHBhcnNlYWJsZSwgaGV1cmlzdGljYWxseQotICAgICAgICAgICAgZGVpbmRlbnRpbmcgaXQgYnkg
ZGVmYXVsdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBw
YXJzZXIKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgZGVmIHN5bnRh
eF9jaGVja2VyKHgpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlKHgsICdhc2QnLCAn
ZXhlYycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeW50YXhfY2hlY2tlciA9IHBhcnNl
ci5zdWl0ZQotCi0gICAgICAgIGlmIGRlaW5kZW50OgotICAgICAgICAgICAgc291cmNlID0gc3Ry
KHNlbGYuZGVpbmRlbnQoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0
cihzZWxmKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGNvbXBpbGUoc291cmNlKydcbics
ICJ4IiwgImV4ZWMiKQotICAgICAgICAgICAgc3ludGF4X2NoZWNrZXIoc291cmNlICsgJ1xuJykK
LSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmFpc2UKLSAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgotICAgICAgICByZXR1cm4gIlxuIi5qb2luKHNlbGYubGluZXMpCi0KLSAgICBkZWYgY29tcGls
ZShzZWxmLCBmaWxlbmFtZT1Ob25lLCBtb2RlPSdleGVjJywKLSAgICAgICAgICAgICAgICBmbGFn
PWdlbmVyYXRvcnMuY29tcGlsZXJfZmxhZywKLSAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9
MCwgX2dlbmZyYW1lPU5vbmUpOgotICAgICAgICAiIiIgcmV0dXJuIGNvbXBpbGVkIGNvZGUgb2Jq
ZWN0LiBpZiBmaWxlbmFtZSBpcyBOb25lCi0gICAgICAgICAgICBpbnZlbnQgYW4gYXJ0aWZpY2lh
bCBmaWxlbmFtZSB3aGljaCBkaXNwbGF5cwotICAgICAgICAgICAgdGhlIHNvdXJjZS9saW5lIHBv
c2l0aW9uIG9mIHRoZSBjYWxsZXIgZnJhbWUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qg
ZmlsZW5hbWUgb3IgcHkucGF0aC5sb2NhbChmaWxlbmFtZSkuY2hlY2soZmlsZT0wKToKLSAgICAg
ICAgICAgIGlmIF9nZW5mcmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIF9nZW5mcmFtZSA9
IHN5cy5fZ2V0ZnJhbWUoMSkgICMgdGhlIGNhbGxlcgotICAgICAgICAgICAgZm4sIGxpbmVubyA9
IF9nZW5mcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUsIF9nZW5mcmFtZS5mX2xpbmVubwotICAgICAg
ICAgICAgYmFzZSA9ICI8JWQtY29kZWdlbiAiICUgc2VsZi5fY29tcGlsZWNvdW50ZXIKLSAgICAg
ICAgICAgIHNlbGYuX19jbGFzc19fLl9jb21waWxlY291bnRlciArPSAxCi0gICAgICAgICAgICBp
ZiBub3QgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBiYXNlICsgJyVzOiVk
PicgJSAoZm4sIGxpbmVubykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmls
ZW5hbWUgPSBiYXNlICsgJyVyICVzOiVkPicgJSAoZmlsZW5hbWUsIGZuLCBsaW5lbm8pCi0gICAg
ICAgIHNvdXJjZSA9ICJcbiIuam9pbihzZWxmLmxpbmVzKSArICdcbicKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgY28gPSBjcHlfY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFn
KQotICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6Ci0gICAgICAgICAgICBleCA9IHN5cy5leGNf
aW5mbygpWzFdCi0gICAgICAgICAgICAjIHJlLXJlcHJlc2VudCBzeW50YXggZXJyb3JzIGZyb20g
cGFyc2luZyBweXRob24gc3RyaW5ncwotICAgICAgICAgICAgbXNnbGluZXMgPSBzZWxmLmxpbmVz
WzpleC5saW5lbm9dCi0gICAgICAgICAgICBpZiBleC5vZmZzZXQ6Ci0gICAgICAgICAgICAgICAg
bXNnbGluZXMuYXBwZW5kKCIgIiAqIGV4Lm9mZnNldCArICdeJykKLSAgICAgICAgICAgIG1zZ2xp
bmVzLmFwcGVuZCgiKGNvZGUgd2FzIGNvbXBpbGVkIHByb2JhYmx5IGZyb20gaGVyZTogJXMpIiAl
IGZpbGVuYW1lKQotICAgICAgICAgICAgbmV3ZXggPSBTeW50YXhFcnJvcignXG4nLmpvaW4obXNn
bGluZXMpKQotICAgICAgICAgICAgbmV3ZXgub2Zmc2V0ID0gZXgub2Zmc2V0Ci0gICAgICAgICAg
ICBuZXdleC5saW5lbm8gPSBleC5saW5lbm8KLSAgICAgICAgICAgIG5ld2V4LnRleHQgPSBleC50
ZXh0Ci0gICAgICAgICAgICByYWlzZSBuZXdleAotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
aWYgZmxhZyAmIF9BU1RfRkxBRzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY28KLSAgICAgICAg
ICAgIGxpbmVzID0gWyh4ICsgIlxuIikgZm9yIHggaW4gc2VsZi5saW5lc10KLSAgICAgICAgICAg
IHB5LnN0ZC5saW5lY2FjaGUuY2FjaGVbZmlsZW5hbWVdID0gKDEsIE5vbmUsIGxpbmVzLCBmaWxl
bmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjbwotCi0jCi0jIHB1YmxpYyBBUEkgc2hvcnRjdXQg
ZnVuY3Rpb25zCi0jCi0KLQotZGVmIGNvbXBpbGVfKHNvdXJjZSwgZmlsZW5hbWU9Tm9uZSwgbW9k
ZT0nZXhlYycsIGZsYWdzPWdlbmVyYXRvcnMuY29tcGlsZXJfZmxhZywgZG9udF9pbmhlcml0PTAp
OgotICAgICIiIiBjb21waWxlIHRoZSBnaXZlbiBzb3VyY2UgdG8gYSByYXcgY29kZSBvYmplY3Qs
Ci0gICAgICAgIGFuZCBtYWludGFpbiBhbiBpbnRlcm5hbCBjYWNoZSB3aGljaCBhbGxvd3MgbGF0
ZXIKLSAgICAgICAgcmV0cmlldmFsIG9mIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGNvZGUgb2Jq
ZWN0Ci0gICAgICAgIGFuZCBhbnkgcmVjdXJzaXZlbHkgY3JlYXRlZCBjb2RlIG9iamVjdHMuCi0g
ICAgIiIiCi0gICAgaWYgX2FzdCBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShzb3VyY2UsIF9h
c3QuQVNUKToKLSAgICAgICAgIyBYWFggc2hvdWxkIFNvdXJjZSBzdXBwb3J0IGhhdmluZyBBU1Q/
Ci0gICAgICAgIHJldHVybiBjcHlfY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFn
cywgZG9udF9pbmhlcml0KQotICAgIF9nZW5mcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkgICMgdGhl
IGNhbGxlcgotICAgIHMgPSBTb3VyY2Uoc291cmNlKQotICAgIGNvID0gcy5jb21waWxlKGZpbGVu
YW1lLCBtb2RlLCBmbGFncywgX2dlbmZyYW1lPV9nZW5mcmFtZSkKLSAgICByZXR1cm4gY28KLQot
Ci1kZWYgZ2V0ZnNsaW5lbm8ob2JqKToKLSAgICAiIiIgUmV0dXJuIHNvdXJjZSBsb2NhdGlvbiAo
cGF0aCwgbGluZW5vKSBmb3IgdGhlIGdpdmVuIG9iamVjdC4KLSAgICBJZiB0aGUgc291cmNlIGNh
bm5vdCBiZSBkZXRlcm1pbmVkIHJldHVybiAoIiIsIC0xKQotICAgICIiIgotICAgIGltcG9ydCBf
cHl0ZXN0Ll9jb2RlCi0gICAgdHJ5OgotICAgICAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5Db2Rl
KG9iaikKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBm
biA9IChweS5zdGQuaW5zcGVjdC5nZXRzb3VyY2VmaWxlKG9iaikgb3IKLSAgICAgICAgICAgICAg
ICAgIHB5LnN0ZC5pbnNwZWN0LmdldGZpbGUob2JqKSkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJv
cjoKLSAgICAgICAgICAgIHJldHVybiAiIiwgLTEKLQotICAgICAgICBmc3BhdGggPSBmbiBhbmQg
cHkucGF0aC5sb2NhbChmbikgb3IgTm9uZQotICAgICAgICBsaW5lbm8gPSAtMQotICAgICAgICBp
ZiBmc3BhdGg6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgXywgbGluZW5vID0g
ZmluZHNvdXJjZShvYmopCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAg
ICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZnNwYXRoID0gY29kZS5wYXRoCi0gICAgICAg
IGxpbmVubyA9IGNvZGUuZmlyc3RsaW5lbm8KLSAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lbm8s
IGludCkKLSAgICByZXR1cm4gZnNwYXRoLCBsaW5lbm8KLQotIwotIyBoZWxwZXIgZnVuY3Rpb25z
Ci0jCi0KLQotZGVmIGZpbmRzb3VyY2Uob2JqKToKLSAgICB0cnk6Ci0gICAgICAgIHNvdXJjZWxp
bmVzLCBsaW5lbm8gPSBweS5zdGQuaW5zcGVjdC5maW5kc291cmNlKG9iaikKLSAgICBleGNlcHQg
cHkuYnVpbHRpbi5fc3lzZXg6Ci0gICAgICAgIHJhaXNlCi0gICAgZXhjZXB0OiAgIyBub3FhCi0g
ICAgICAgIHJldHVybiBOb25lLCAtMQotICAgIHNvdXJjZSA9IFNvdXJjZSgpCi0gICAgc291cmNl
LmxpbmVzID0gW2xpbmUucnN0cmlwKCkgZm9yIGxpbmUgaW4gc291cmNlbGluZXNdCi0gICAgcmV0
dXJuIHNvdXJjZSwgbGluZW5vCi0KLQotZGVmIGdldHNvdXJjZShvYmosICoqa3dhcmdzKToKLSAg
ICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgIG9iaiA9IF9weXRlc3QuX2NvZGUuZ2V0cmF3Y29k
ZShvYmopCi0gICAgdHJ5OgotICAgICAgICBzdHJzcmMgPSBpbnNwZWN0LmdldHNvdXJjZShvYmop
Ci0gICAgZXhjZXB0IEluZGVudGF0aW9uRXJyb3I6Ci0gICAgICAgIHN0cnNyYyA9ICJcIkJ1Z2d5
IHB5dGhvbiB2ZXJzaW9uIGNvbnNpZGVyIHVwZ3JhZGluZywgY2Fubm90IGdldCBzb3VyY2VcIiIK
LSAgICBhc3NlcnQgaXNpbnN0YW5jZShzdHJzcmMsIHN0cikKLSAgICByZXR1cm4gU291cmNlKHN0
cnNyYywgKiprd2FyZ3MpCi0KLQotZGVmIGRlaW5kZW50KGxpbmVzLCBvZmZzZXQ9Tm9uZSk6Ci0g
ICAgaWYgb2Zmc2V0IGlzIE5vbmU6Ci0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAg
ICAgICAgbGluZSA9IGxpbmUuZXhwYW5kdGFicygpCi0gICAgICAgICAgICBzID0gbGluZS5sc3Ry
aXAoKQotICAgICAgICAgICAgaWYgczoKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBsZW4obGlu
ZSkgLSBsZW4ocykKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgb2Zmc2V0ID0gMAotICAgIGlmIG9mZnNldCA9PSAwOgotICAgICAgICByZXR1cm4gbGlz
dChsaW5lcykKLSAgICBuZXdsaW5lcyA9IFtdCi0KLSAgICBkZWYgcmVhZGxpbmVfZ2VuZXJhdG9y
KGxpbmVzKToKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICB5aWVsZCBs
aW5lICsgJ1xuJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgeWllbGQgJycKLQot
ICAgIGl0ID0gcmVhZGxpbmVfZ2VuZXJhdG9yKGxpbmVzKQotCi0gICAgdHJ5OgotICAgICAgICBm
b3IgXywgXywgKHNsaW5lLCBfKSwgKGVsaW5lLCBfKSwgXyBpbiB0b2tlbml6ZS5nZW5lcmF0ZV90
b2tlbnMobGFtYmRhOiBuZXh0KGl0KSk6Ci0gICAgICAgICAgICBpZiBzbGluZSA+IGxlbihsaW5l
cyk6Ci0gICAgICAgICAgICAgICAgYnJlYWsgICMgRW5kIG9mIGlucHV0IHJlYWNoZWQKLSAgICAg
ICAgICAgIGlmIHNsaW5lID4gbGVuKG5ld2xpbmVzKToKLSAgICAgICAgICAgICAgICBsaW5lID0g
bGluZXNbc2xpbmUgLSAxXS5leHBhbmR0YWJzKCkKLSAgICAgICAgICAgICAgICBpZiBsaW5lLmxz
dHJpcCgpIGFuZCBsaW5lWzpvZmZzZXRdLmlzc3BhY2UoKToKLSAgICAgICAgICAgICAgICAgICAg
bGluZSA9IGxpbmVbb2Zmc2V0Ol0gICMgRGVpbmRlbnQKLSAgICAgICAgICAgICAgICBuZXdsaW5l
cy5hcHBlbmQobGluZSkKLQotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2xpbmUsIGVsaW5l
KToKLSAgICAgICAgICAgICAgICAjIERvbid0IGRlaW5kZW50IGNvbnRpbnVpbmcgbGluZXMgb2YK
LSAgICAgICAgICAgICAgICAjIG11bHRpbGluZSB0b2tlbnMgKGkuZS4gbXVsdGlsaW5lIHN0cmlu
Z3MpCi0gICAgICAgICAgICAgICAgbmV3bGluZXMuYXBwZW5kKGxpbmVzW2ldKQotICAgIGV4Y2Vw
dCAoSW5kZW50YXRpb25FcnJvciwgdG9rZW5pemUuVG9rZW5FcnJvcik6Ci0gICAgICAgIHBhc3MK
LSAgICAjIEFkZCBhbnkgbGluZXMgd2UgZGlkbid0IHNlZS4gRS5nLiBpZiBhbiBleGNlcHRpb24g
d2FzIHJhaXNlZC4KLSAgICBuZXdsaW5lcy5leHRlbmQobGluZXNbbGVuKG5ld2xpbmVzKTpdKQot
ICAgIHJldHVybiBuZXdsaW5lcwotCi0KLWRlZiBnZXRfc3RhdGVtZW50X3N0YXJ0ZW5kMihsaW5l
bm8sIG5vZGUpOgotICAgIGltcG9ydCBhc3QKLSAgICAjIGZsYXR0ZW4gYWxsIHN0YXRlbWVudHMg
YW5kIGV4Y2VwdCBoYW5kbGVycyBpbnRvIG9uZSBsaW5lbm8tbGlzdAotICAgICMgQVNUJ3MgbGlu
ZSBudW1iZXJzIHN0YXJ0IGluZGV4aW5nIGF0IDEKLSAgICB2YWx1ZXMgPSBbXQotICAgIGZvciB4
IGluIGFzdC53YWxrKG5vZGUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHgsIF9hc3Quc3RtdCkg
b3IgaXNpbnN0YW5jZSh4LCBfYXN0LkV4Y2VwdEhhbmRsZXIpOgotICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZCh4LmxpbmVubyAtIDEpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiAiZmluYWxib2R5
IiwgIm9yZWxzZSI6Ci0gICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cih4LCBuYW1lLCBOb25l
KQotICAgICAgICAgICAgICAgIGlmIHZhbDoKLSAgICAgICAgICAgICAgICAgICAgIyB0cmVhdCB0
aGUgZmluYWxseS9vcmVsc2UgcGFydCBhcyBpdHMgb3duIHN0YXRlbWVudAotICAgICAgICAgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKHZhbFswXS5saW5lbm8gLSAxIC0gMSkKLSAgICB2YWx1ZXMu
c29ydCgpCi0gICAgaW5zZXJ0X2luZGV4ID0gYmlzZWN0X3JpZ2h0KHZhbHVlcywgbGluZW5vKQot
ICAgIHN0YXJ0ID0gdmFsdWVzW2luc2VydF9pbmRleCAtIDFdCi0gICAgaWYgaW5zZXJ0X2luZGV4
ID49IGxlbih2YWx1ZXMpOgotICAgICAgICBlbmQgPSBOb25lCi0gICAgZWxzZToKLSAgICAgICAg
ZW5kID0gdmFsdWVzW2luc2VydF9pbmRleF0KLSAgICByZXR1cm4gc3RhcnQsIGVuZAotCi0KLWRl
ZiBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QobGluZW5vLCBzb3VyY2UsIGFzc2VydGlvbj1GYWxzZSwg
YXN0bm9kZT1Ob25lKToKLSAgICBpZiBhc3Rub2RlIGlzIE5vbmU6Ci0gICAgICAgIGNvbnRlbnQg
PSBzdHIoc291cmNlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhc3Rub2RlID0gY29tcGls
ZShjb250ZW50LCAic291cmNlIiwgImV4ZWMiLCAxMDI0KSAgIyAxMDI0IGZvciBBU1QKLSAgICAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzdGFydCwgZW5kID0gZ2V0c3RhdGVt
ZW50cmFuZ2Vfb2xkKGxpbmVubywgc291cmNlLCBhc3NlcnRpb24pCi0gICAgICAgICAgICByZXR1
cm4gTm9uZSwgc3RhcnQsIGVuZAotICAgIHN0YXJ0LCBlbmQgPSBnZXRfc3RhdGVtZW50X3N0YXJ0
ZW5kMihsaW5lbm8sIGFzdG5vZGUpCi0gICAgIyB3ZSBuZWVkIHRvIGNvcnJlY3QgdGhlIGVuZDoK
LSAgICAjIC0gYXN0LXBhcnNpbmcgc3RyaXBzIGNvbW1lbnRzCi0gICAgIyAtIHRoZXJlIG1pZ2h0
IGJlIGVtcHR5IGxpbmVzCi0gICAgIyAtIHdlIG1pZ2h0IGhhdmUgbGVzc2VyIGluZGVudGVkIGNv
ZGUgYmxvY2tzIGF0IHRoZSBlbmQKLSAgICBpZiBlbmQgaXMgTm9uZToKLSAgICAgICAgZW5kID0g
bGVuKHNvdXJjZS5saW5lcykKLQotICAgIGlmIGVuZCA+IHN0YXJ0ICsgMToKLSAgICAgICAgIyBt
YWtlIHN1cmUgd2UgZG9uJ3Qgc3BhbiBkaWZmZXJlbnRseSBpbmRlbnRlZCBjb2RlIGJsb2Nrcwot
ICAgICAgICAjIGJ5IHVzaW5nIHRoZSBCbG9ja0ZpbmRlciBoZWxwZXIgdXNlZCB3aGljaCBpbnNw
ZWN0LmdldHNvdXJjZSgpIHVzZXMgaXRzZWxmCi0gICAgICAgIGJsb2NrX2ZpbmRlciA9IGluc3Bl
Y3QuQmxvY2tGaW5kZXIoKQotICAgICAgICAjIGlmIHdlIHN0YXJ0IHdpdGggYW4gaW5kZW50ZWQg
bGluZSwgcHV0IGJsb2NrZmluZGVyIHRvICJzdGFydGVkIiBtb2RlCi0gICAgICAgIGJsb2NrX2Zp
bmRlci5zdGFydGVkID0gc291cmNlLmxpbmVzW3N0YXJ0XVswXS5pc3NwYWNlKCkKLSAgICAgICAg
aXQgPSAoKHggKyAiXG4iKSBmb3IgeCBpbiBzb3VyY2UubGluZXNbc3RhcnQ6ZW5kXSkKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgZm9yIHRvayBpbiB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMo
bGFtYmRhOiBuZXh0KGl0KSk6Ci0gICAgICAgICAgICAgICAgYmxvY2tfZmluZGVyLnRva2VuZWF0
ZXIoKnRvaykKLSAgICAgICAgZXhjZXB0IChpbnNwZWN0LkVuZE9mQmxvY2ssIEluZGVudGF0aW9u
RXJyb3IpOgotICAgICAgICAgICAgZW5kID0gYmxvY2tfZmluZGVyLmxhc3QgKyBzdGFydAotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcGFzcwotCi0gICAgIyB0aGUgZW5k
IG1pZ2h0IHN0aWxsIHBvaW50IHRvIGEgY29tbWVudCBvciBlbXB0eSBsaW5lLCBjb3JyZWN0IGl0
Ci0gICAgd2hpbGUgZW5kOgotICAgICAgICBsaW5lID0gc291cmNlLmxpbmVzW2VuZCAtIDFdLmxz
dHJpcCgpCi0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiIyIpIG9yIG5vdCBsaW5lOgotICAg
ICAgICAgICAgZW5kIC09IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAg
cmV0dXJuIGFzdG5vZGUsIHN0YXJ0LCBlbmQKLQotCi1kZWYgZ2V0c3RhdGVtZW50cmFuZ2Vfb2xk
KGxpbmVubywgc291cmNlLCBhc3NlcnRpb249RmFsc2UpOgotICAgICIiIiByZXR1cm4gKHN0YXJ0
LCBlbmQpIHR1cGxlIHdoaWNoIHNwYW5zIHRoZSBtaW5pbWFsCi0gICAgICAgIHN0YXRlbWVudCBy
ZWdpb24gd2hpY2ggY29udGFpbmluZyB0aGUgZ2l2ZW4gbGluZW5vLgotICAgICAgICByYWlzZSBh
biBJbmRleEVycm9yIGlmIG5vIHN1Y2ggc3RhdGVtZW50cmFuZ2UgY2FuIGJlIGZvdW5kLgotICAg
ICIiIgotICAgICMgWFhYIHRoaXMgbG9naWMgaXMgb25seSB1c2VkIG9uIHB5dGhvbjIuNCBhbmQg
YmVsb3cKLSAgICAjIDEuIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBzdGF0ZW1lbnQKLSAgICBmcm9t
IGNvZGVvcCBpbXBvcnQgY29tcGlsZV9jb21tYW5kCi0gICAgZm9yIHN0YXJ0IGluIHJhbmdlKGxp
bmVubywgLTEsIC0xKToKLSAgICAgICAgaWYgYXNzZXJ0aW9uOgotICAgICAgICAgICAgbGluZSA9
IHNvdXJjZS5saW5lc1tzdGFydF0KLSAgICAgICAgICAgICMgdGhlIGZvbGxvd2luZyBsaW5lcyBh
cmUgbm90IGZ1bGx5IHRlc3RlZCwgY2hhbmdlIHdpdGggY2FyZQotICAgICAgICAgICAgaWYgJ3N1
cGVyJyBpbiBsaW5lIGFuZCAnc2VsZicgaW4gbGluZSBhbmQgJ19faW5pdF9fJyBpbiBsaW5lOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoImxpa2VseSBhIHN1YmNsYXNzIikKLSAg
ICAgICAgICAgIGlmICJhc3NlcnQiIG5vdCBpbiBsaW5lIGFuZCAicmFpc2UiIG5vdCBpbiBsaW5l
OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHRyeWxpbmVzID0gc291cmNlLmxp
bmVzW3N0YXJ0OmxpbmVubyArIDFdCi0gICAgICAgICMgcXVpY2sgaGFjayB0byBwcmVwYXJlIHBh
cnNpbmcgYW4gaW5kZW50ZWQgbGluZSB3aXRoCi0gICAgICAgICMgY29tcGlsZV9jb21tYW5kKCkg
KHdoaWNoIGVycm9ycyBvbiAicmV0dXJuIiBvdXRzaWRlIGRlZnMpCi0gICAgICAgIHRyeWxpbmVz
Lmluc2VydCgwLCAnZGVmIHh4eCgpOicpCi0gICAgICAgIHRyeXNvdXJjZSA9ICdcbiAnLmpvaW4o
dHJ5bGluZXMpCi0gICAgICAgICMgICAgICAgICAgICAgIF4gc3BhY2UgaGVyZQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBjb21waWxlX2NvbW1hbmQodHJ5c291cmNlKQotICAgICAgICBleGNl
cHQgKFN5bnRheEVycm9yLCBPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgIyAyLiBmaW5kIHRoZSBlbmQgb2YgdGhlIHN0YXRlbWVudAot
ICAgICAgICBmb3IgZW5kIGluIHJhbmdlKGxpbmVubyArIDEsIGxlbihzb3VyY2UpICsgMSk6Ci0g
ICAgICAgICAgICB0cnlzb3VyY2UgPSBzb3VyY2Vbc3RhcnQ6ZW5kXQotICAgICAgICAgICAgaWYg
dHJ5c291cmNlLmlzcGFyc2VhYmxlKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0LCBl
bmQKLSAgICByYWlzZSBTeW50YXhFcnJvcigibm8gdmFsaWQgc291cmNlIHJhbmdlIGFyb3VuZCBs
aW5lICVkICIgJSAobGluZW5vLCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19j
b2RlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIyMzM0ZjNmOGVkLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
X2NvZGUvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19weTJ0cmFjZWJh
Y2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL2NvZGUucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L19jb2RlL3NvdXJjZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9h
c3NlcnRpb24vX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9fX2lu
aXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4ZTk4Yzg1YWEyLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotIiIiCi1zdXBwb3J0IGZvciBwcmVzZW50
aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uIGluIGZhaWxpbmcgYXNzZXJ0aW9ucy4KLSIiIgotZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5j
dGlvbgotaW1wb3J0IHN5cwotaW1wb3J0IHNpeAotCi1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGlt
cG9ydCB1dGlsCi1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGltcG9ydCByZXdyaXRlCi1mcm9tIF9w
eXRlc3QuYXNzZXJ0aW9uIGltcG9ydCB0cnVuY2F0ZQotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImRlYnVnY29uZmlnIikKLSAg
ICBncm91cC5hZGRvcHRpb24oJy0tYXNzZXJ0JywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9ImFzc2VydG1vZGUiLAotICAgICAg
ICAgICAgICAgICAgICBjaG9pY2VzPSgicmV3cml0ZSIsICJwbGFpbiIsKSwKLSAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0icmV3cml0ZSIsCi0gICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9
Ik1PREUiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSIiIkNvbnRyb2wgYXNzZXJ0aW9uIGRl
YnVnZ2luZyB0b29scy4gICdwbGFpbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJm
b3JtcyBubyBhc3NlcnRpb24gZGVidWdnaW5nLiAgJ3Jld3JpdGUnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHRoZSBkZWZhdWx0KSByZXdyaXRlcyBhc3NlcnQgc3RhdGVtZW50cyBpbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgbW9kdWxlcyBvbiBpbXBvcnQgdG8gcHJv
dmlkZSBhc3NlcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIGluZm9y
bWF0aW9uLiIiIikKLQotCi1kZWYgcmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoKm5hbWVzKToKLSAg
ICAiIiJSZWdpc3RlciBvbmUgb3IgbW9yZSBtb2R1bGUgbmFtZXMgdG8gYmUgcmV3cml0dGVuIG9u
IGltcG9ydC4KLQotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBtYWtlIHN1cmUgdGhhdCB0aGlzIG1v
ZHVsZSBvciBhbGwgbW9kdWxlcyBpbnNpZGUKLSAgICB0aGUgcGFja2FnZSB3aWxsIGdldCB0aGVp
ciBhc3NlcnQgc3RhdGVtZW50cyByZXdyaXR0ZW4uCi0gICAgVGh1cyB5b3Ugc2hvdWxkIG1ha2Ug
c3VyZSB0byBjYWxsIHRoaXMgYmVmb3JlIHRoZSBtb2R1bGUgaXMKLSAgICBhY3R1YWxseSBpbXBv
cnRlZCwgdXN1YWxseSBpbiB5b3VyIF9faW5pdF9fLnB5IGlmIHlvdSBhcmUgYSBwbHVnaW4KLSAg
ICB1c2luZyBhIHBhY2thZ2UuCi0KLSAgICA6cmFpc2UgVHlwZUVycm9yOiBpZiB0aGUgZ2l2ZW4g
bW9kdWxlIG5hbWVzIGFyZSBub3Qgc3RyaW5ncy4KLSAgICAiIiIKLSAgICBmb3IgbmFtZSBpbiBu
YW1lczoKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKLSAgICAgICAgICAg
IG1zZyA9ICdleHBlY3RlZCBtb2R1bGUgbmFtZXMgYXMgKmFyZ3MsIGdvdCB7MH0gaW5zdGVhZCcK
LSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cuZm9ybWF0KHJlcHIobmFtZXMpKSkKLSAg
ICBmb3IgaG9vayBpbiBzeXMubWV0YV9wYXRoOgotICAgICAgICBpZiBpc2luc3RhbmNlKGhvb2ss
IHJld3JpdGUuQXNzZXJ0aW9uUmV3cml0aW5nSG9vayk6Ci0gICAgICAgICAgICBpbXBvcnRob29r
ID0gaG9vawotICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBpbXBvcnRob29r
ID0gRHVtbXlSZXdyaXRlSG9vaygpCi0gICAgaW1wb3J0aG9vay5tYXJrX3Jld3JpdGUoKm5hbWVz
KQotCi0KLWNsYXNzIER1bW15UmV3cml0ZUhvb2sob2JqZWN0KToKLSAgICAiIiJBIG5vLW9wIGlt
cG9ydCBob29rIGZvciB3aGVuIHJld3JpdGluZyBpcyBkaXNhYmxlZC4iIiIKLQotICAgIGRlZiBt
YXJrX3Jld3JpdGUoc2VsZiwgKm5hbWVzKToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIEFzc2Vy
dGlvblN0YXRlOgotICAgICIiIlN0YXRlIGZvciB0aGUgYXNzZXJ0aW9uIHBsdWdpbi4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcsIG1vZGUpOgotICAgICAgICBzZWxmLm1vZGUg
PSBtb2RlCi0gICAgICAgIHNlbGYudHJhY2UgPSBjb25maWcudHJhY2Uucm9vdC5nZXQoImFzc2Vy
dGlvbiIpCi0gICAgICAgIHNlbGYuaG9vayA9IE5vbmUKLQotCi1kZWYgaW5zdGFsbF9pbXBvcnRo
b29rKGNvbmZpZyk6Ci0gICAgIiIiVHJ5IHRvIGluc3RhbGwgdGhlIHJld3JpdGUgaG9vaywgcmFp
c2UgU3lzdGVtRXJyb3IgaWYgaXQgZmFpbHMuIiIiCi0gICAgIyBKeXRob24gaGFzIGFuIEFTVCBi
dWcgdGhhdCBtYWtlIHRoZSBhc3NlcnRpb24gcmV3cml0aW5nIGhvb2sgbWFsZnVuY3Rpb24uCi0g
ICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykpOgotICAgICAgICByYWlzZSBT
eXN0ZW1FcnJvcigncmV3cml0ZSBub3Qgc3VwcG9ydGVkJykKLQotICAgIGNvbmZpZy5fYXNzZXJ0
c3RhdGUgPSBBc3NlcnRpb25TdGF0ZShjb25maWcsICdyZXdyaXRlJykKLSAgICBjb25maWcuX2Fz
c2VydHN0YXRlLmhvb2sgPSBob29rID0gcmV3cml0ZS5Bc3NlcnRpb25SZXdyaXRpbmdIb29rKGNv
bmZpZykKLSAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBob29rKQotICAgIGNvbmZpZy5fYXNz
ZXJ0c3RhdGUudHJhY2UoJ2luc3RhbGxlZCByZXdyaXRlIGltcG9ydCBob29rJykKLQotICAgIGRl
ZiB1bmRvKCk6Ci0gICAgICAgIGhvb2sgPSBjb25maWcuX2Fzc2VydHN0YXRlLmhvb2sKLSAgICAg
ICAgaWYgaG9vayBpcyBub3QgTm9uZSBhbmQgaG9vayBpbiBzeXMubWV0YV9wYXRoOgotICAgICAg
ICAgICAgc3lzLm1ldGFfcGF0aC5yZW1vdmUoaG9vaykKLQotICAgIGNvbmZpZy5hZGRfY2xlYW51
cCh1bmRvKQotICAgIHJldHVybiBob29rCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0aW9uKHNlc3Np
b24pOgotICAgICMgdGhpcyBob29rIGlzIG9ubHkgY2FsbGVkIHdoZW4gdGVzdCBtb2R1bGVzIGFy
ZSBjb2xsZWN0ZWQKLSAgICAjIHNvIGZvciBleGFtcGxlIG5vdCBpbiB0aGUgbWFzdGVyIHByb2Nl
c3Mgb2YgcHl0ZXN0LXhkaXN0Ci0gICAgIyAod2hpY2ggZG9lcyBub3QgY29sbGVjdCB0ZXN0IG1v
ZHVsZXMpCi0gICAgYXNzZXJ0c3RhdGUgPSBnZXRhdHRyKHNlc3Npb24uY29uZmlnLCAnX2Fzc2Vy
dHN0YXRlJywgTm9uZSkKLSAgICBpZiBhc3NlcnRzdGF0ZToKLSAgICAgICAgaWYgYXNzZXJ0c3Rh
dGUuaG9vayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGFzc2VydHN0YXRlLmhvb2suc2V0X3Nl
c3Npb24oc2Vzc2lvbikKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6Ci0gICAg
IiIiU2V0dXAgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vawotCi0gICAgVGhlIG5l
d2ludGVycHJldCBhbmQgcmV3cml0ZSBtb2R1bGVzIHdpbGwgdXNlIHV0aWwuX3JlcHJjb21wYXJl
IGlmCi0gICAgaXQgZXhpc3RzIHRvIHVzZSBjdXN0b20gcmVwb3J0aW5nIHZpYSB0aGUKLSAgICBw
eXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2suICBUaGlzIHNldHMgdXAgdGhpcyBjdXN0b20K
LSAgICBjb21wYXJpc29uIGZvciB0aGUgdGVzdC4KLSAgICAiIiIKLSAgICBkZWYgY2FsbGJpbnJl
cHIob3AsIGxlZnQsIHJpZ2h0KToKLSAgICAgICAgIiIiQ2FsbCB0aGUgcHl0ZXN0X2Fzc2VydHJl
cHJfY29tcGFyZSBob29rIGFuZCBwcmVwYXJlIHRoZSByZXN1bHQKLQotICAgICAgICBUaGlzIHVz
ZXMgdGhlIGZpcnN0IHJlc3VsdCBmcm9tIHRoZSBob29rIGFuZCB0aGVuIGVuc3VyZXMgdGhlCi0g
ICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgKiBPdmVybHkgdmVyYm9zZSBleHBsYW5hdGlvbnMg
YXJlIHRydW5jYXRlZCB1bmxlc3MgY29uZmlndXJlZCBvdGhlcndpc2UKLSAgICAgICAgICAoZWcu
IGlmIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlKS4KLSAgICAgICAgKiBFbWJlZGRlZCBuZXdsaW5l
cyBhcmUgZXNjYXBlZCB0byBoZWxwIHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkKLSAgICAgICAg
ICBsYXRlci4KLSAgICAgICAgKiBJZiB0aGUgcmV3cml0ZSBtb2RlIGlzIHVzZWQgZW1iZWRkZWQg
JS1jaGFyYWN0ZXJzIGFyZSByZXBsYWNlZAotICAgICAgICAgIHRvIHByb3RlY3QgbGF0ZXIgJSBm
b3JtYXR0aW5nLgotCi0gICAgICAgIFRoZSByZXN1bHQgY2FuIGJlIGZvcm1hdHRlZCBieSB1dGls
LmZvcm1hdF9leHBsYW5hdGlvbigpIGZvcgotICAgICAgICBwcmV0dHkgcHJpbnRpbmcuCi0gICAg
ICAgICIiIgotICAgICAgICBob29rX3Jlc3VsdCA9IGl0ZW0uaWhvb2sucHl0ZXN0X2Fzc2VydHJl
cHJfY29tcGFyZSgKLSAgICAgICAgICAgIGNvbmZpZz1pdGVtLmNvbmZpZywgb3A9b3AsIGxlZnQ9
bGVmdCwgcmlnaHQ9cmlnaHQpCi0gICAgICAgIGZvciBuZXdfZXhwbCBpbiBob29rX3Jlc3VsdDoK
LSAgICAgICAgICAgIGlmIG5ld19leHBsOgotICAgICAgICAgICAgICAgIG5ld19leHBsID0gdHJ1
bmNhdGUudHJ1bmNhdGVfaWZfcmVxdWlyZWQobmV3X2V4cGwsIGl0ZW0pCi0gICAgICAgICAgICAg
ICAgbmV3X2V4cGwgPSBbbGluZS5yZXBsYWNlKCJcbiIsICJcXG4iKSBmb3IgbGluZSBpbiBuZXdf
ZXhwbF0KLSAgICAgICAgICAgICAgICByZXMgPSBzaXgudGV4dF90eXBlKCJcbn4iKS5qb2luKG5l
d19leHBsKQotICAgICAgICAgICAgICAgIGlmIGl0ZW0uY29uZmlnLmdldHZhbHVlKCJhc3NlcnRt
b2RlIikgPT0gInJld3JpdGUiOgotICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMucmVwbGFj
ZSgiJSIsICIlJSIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcwotICAgIHV0aWwuX3JlcHJj
b21wYXJlID0gY2FsbGJpbnJlcHIKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRl
bSk6Ci0gICAgdXRpbC5fcmVwcmNvbXBhcmUgPSBOb25lCi0KLQotZGVmIHB5dGVzdF9zZXNzaW9u
ZmluaXNoKHNlc3Npb24pOgotICAgIGFzc2VydHN0YXRlID0gZ2V0YXR0cihzZXNzaW9uLmNvbmZp
ZywgJ19hc3NlcnRzdGF0ZScsIE5vbmUpCi0gICAgaWYgYXNzZXJ0c3RhdGU6Ci0gICAgICAgIGlm
IGFzc2VydHN0YXRlLmhvb2sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBhc3NlcnRzdGF0ZS5o
b29rLnNldF9zZXNzaW9uKE5vbmUpCi0KLQotIyBFeHBvc2UgdGhpcyBwbHVnaW4ncyBpbXBsZW1l
bnRhdGlvbiBmb3IgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vawotcHl0ZXN0X2Fz
c2VydHJlcHJfY29tcGFyZSA9IHV0aWwuYXNzZXJ0cmVwcl9jb21wYXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9yZXdyaXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9hc3NlcnRpb24vcmV3cml0ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjY0MzU4ZjQ5MGJjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3Nl
cnRpb24vcmV3cml0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDk0OCArMCwwIEBACi0iIiJSZXdy
aXRlIGFzc2VydGlvbiBBU1QgdG8gcHJvZHVjZSBuaWNlIGVycm9yIG1lc3NhZ2VzIiIiCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCi1pbXBvcnQgYXN0Ci1pbXBvcnQgX2FzdAotaW1wb3J0IGVycm5vCi1pbXBvcnQgaXRlcnRv
b2xzCi1pbXBvcnQgaW1wCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWlt
cG9ydCBzaXgKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLWltcG9ydCB0eXBlcwotCi1pbXBv
cnQgcHkKLWZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHV0aWwKLQotCi0jIHB5dGVzdCBj
YWNoZXMgcmV3cml0dGVuIHB5Y3MgaW4gX19weWNhY2hlX18uCi1pZiBoYXNhdHRyKGltcCwgImdl
dF90YWciKToKLSAgICBQWVRFU1RfVEFHID0gaW1wLmdldF90YWcoKSArICItUFlURVNUIgotZWxz
ZToKLSAgICBpZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6Ci0gICAgICAgIGlt
cGwgPSAicHlweSIKLSAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAiamF2YSI6Ci0gICAgICAgIGlt
cGwgPSAianl0aG9uIgotICAgIGVsc2U6Ci0gICAgICAgIGltcGwgPSAiY3B5dGhvbiIKLSAgICB2
ZXIgPSBzeXMudmVyc2lvbl9pbmZvCi0gICAgUFlURVNUX1RBRyA9ICIlcy0lcyVzLVBZVEVTVCIg
JSAoaW1wbCwgdmVyWzBdLCB2ZXJbMV0pCi0gICAgZGVsIHZlciwgaW1wbAotCi1QWUNfRVhUID0g
Ii5weSIgKyAoX19kZWJ1Z19fIGFuZCAiYyIgb3IgIm8iKQotUFlDX1RBSUwgPSAiLiIgKyBQWVRF
U1RfVEFHICsgUFlDX0VYVAotCi1BU0NJSV9JU19ERUZBVUxUX0VOQ09ESU5HID0gc3lzLnZlcnNp
b25faW5mb1swXSA8IDMKLQotaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNSk6Ci0gICAgYXN0
X0NhbGwgPSBhc3QuQ2FsbAotZWxzZToKLSAgICBkZWYgYXN0X0NhbGwoYSwgYiwgYyk6Ci0gICAg
ICAgIHJldHVybiBhc3QuQ2FsbChhLCBiLCBjLCBOb25lLCBOb25lKQotCi0KLWNsYXNzIEFzc2Vy
dGlvblJld3JpdGluZ0hvb2sob2JqZWN0KToKLSAgICAiIiJQRVAzMDIgSW1wb3J0IGhvb2sgd2hp
Y2ggcmV3cml0ZXMgYXNzZXJ0cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcp
OgotICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwotICAgICAgICBzZWxmLmZucGF0cyA9IGNv
bmZpZy5nZXRpbmkoInB5dGhvbl9maWxlcyIpCi0gICAgICAgIHNlbGYuc2Vzc2lvbiA9IE5vbmUK
LSAgICAgICAgc2VsZi5tb2R1bGVzID0ge30KLSAgICAgICAgc2VsZi5fcmV3cml0dGVuX25hbWVz
ID0gc2V0KCkKLSAgICAgICAgc2VsZi5fcmVnaXN0ZXJfd2l0aF9wa2dfcmVzb3VyY2VzKCkKLSAg
ICAgICAgc2VsZi5fbXVzdF9yZXdyaXRlID0gc2V0KCkKLQotICAgIGRlZiBzZXRfc2Vzc2lvbihz
ZWxmLCBzZXNzaW9uKToKLSAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgotCi0gICAgZGVm
IGZpbmRfbW9kdWxlKHNlbGYsIG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgIHN0YXRlID0gc2Vs
Zi5jb25maWcuX2Fzc2VydHN0YXRlCi0gICAgICAgIHN0YXRlLnRyYWNlKCJmaW5kX21vZHVsZSBj
YWxsZWQgZm9yOiAlcyIgJSBuYW1lKQotICAgICAgICBuYW1lcyA9IG5hbWUucnNwbGl0KCIuIiwg
MSkKLSAgICAgICAgbGFzdG5hbWUgPSBuYW1lc1stMV0KLSAgICAgICAgcHRoID0gTm9uZQotICAg
ICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBTdGFydGluZyB3aXRoIFB5
dGhvbiAzLjMsIHBhdGggaXMgYSBfTmFtZXNwYWNlUGF0aCgpLCB3aGljaAotICAgICAgICAgICAg
IyBjYXVzZXMgcHJvYmxlbXMgaWYgbm90IGNvbnZlcnRlZCB0byBsaXN0LgotICAgICAgICAgICAg
cGF0aCA9IGxpc3QocGF0aCkKLSAgICAgICAgICAgIGlmIGxlbihwYXRoKSA9PSAxOgotICAgICAg
ICAgICAgICAgIHB0aCA9IHBhdGhbMF0KLSAgICAgICAgaWYgcHRoIGlzIE5vbmU6Ci0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmQsIGZuLCBkZXNjID0gaW1wLmZpbmRfbW9kdWxl
KGxhc3RuYW1lLCBwYXRoKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBpZiBmZCBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgICAgICBmZC5jbG9zZSgpCi0gICAgICAgICAgICB0cCA9IGRlc2NbMl0KLSAgICAg
ICAgICAgIGlmIHRwID09IGltcC5QWV9DT01QSUxFRDoKLSAgICAgICAgICAgICAgICBpZiBoYXNh
dHRyKGltcCwgInNvdXJjZV9mcm9tX2NhY2hlIik6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gaW1wLnNvdXJjZV9mcm9tX2NhY2hlKGZuKQot
ICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICMgUHl0aG9uIDMgZG9lc24ndCBsaWtlIG9ycGhhbmVkIGJ1dCBzdGlsbC1pbXBvcnRh
YmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIC5weWMgZmlsZXMuCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmbiA9IGZuWzotMV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICBmbiA9IGZuWzotMV0KLSAgICAgICAgICAgIGVsaWYgdHAgIT0gaW1wLlBZX1NP
VVJDRToKLSAgICAgICAgICAgICAgICAjIERvbid0IGtub3cgd2hhdCB0aGlzIGlzLgotICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmbiA9IG9z
LnBhdGguam9pbihwdGgsIG5hbWUucnBhcnRpdGlvbigiLiIpWzJdICsgIi5weSIpCi0KLSAgICAg
ICAgZm5fcHlwYXRoID0gcHkucGF0aC5sb2NhbChmbikKLSAgICAgICAgaWYgbm90IHNlbGYuX3No
b3VsZF9yZXdyaXRlKG5hbWUsIGZuX3B5cGF0aCwgc3RhdGUpOgotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLQotICAgICAgICBzZWxmLl9yZXdyaXR0ZW5fbmFtZXMuYWRkKG5hbWUpCi0KLSAgICAg
ICAgIyBUaGUgcmVxdWVzdGVkIG1vZHVsZSBsb29rcyBsaWtlIGEgdGVzdCBmaWxlLCBzbyByZXdy
aXRlIGl0LiBUaGlzIGlzCi0gICAgICAgICMgdGhlIG1vc3QgbWFnaWNhbCBwYXJ0IG9mIHRoZSBw
cm9jZXNzOiBsb2FkIHRoZSBzb3VyY2UsIHJld3JpdGUgdGhlCi0gICAgICAgICMgYXNzZXJ0cywg
YW5kIGxvYWQgdGhlIHJld3JpdHRlbiBzb3VyY2UuIFdlIGFsc28gY2FjaGUgdGhlIHJld3JpdHRl
bgotICAgICAgICAjIG1vZHVsZSBjb2RlIGluIGEgc3BlY2lhbCBweWMuIFdlIG11c3QgYmUgYXdh
cmUgb2YgdGhlIHBvc3NpYmlsaXR5IG9mCi0gICAgICAgICMgY29uY3VycmVudCBweXRlc3QgcHJv
Y2Vzc2VzIHJld3JpdGluZyBhbmQgbG9hZGluZyBweWNzLiBUbyBhdm9pZAotICAgICAgICAjIHRy
aWNreSByYWNlIGNvbmRpdGlvbnMsIHdlIG1haW50YWluIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50
OiBUaGUKLSAgICAgICAgIyBjYWNoZWQgcHljIGlzIGFsd2F5cyBhIGNvbXBsZXRlLCB2YWxpZCBw
eWMuIE9wZXJhdGlvbnMgb24gaXQgbXVzdCBiZQotICAgICAgICAjIGF0b21pYy4gUE9TSVgncyBh
dG9taWMgcmVuYW1lIGNvbWVzIGluIGhhbmR5LgotICAgICAgICB3cml0ZSA9IG5vdCBzeXMuZG9u
dF93cml0ZV9ieXRlY29kZQotICAgICAgICBjYWNoZV9kaXIgPSBvcy5wYXRoLmpvaW4oZm5fcHlw
YXRoLmRpcm5hbWUsICJfX3B5Y2FjaGVfXyIpCi0gICAgICAgIGlmIHdyaXRlOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKGNhY2hlX2RpcikKLSAgICAgICAgICAg
IGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXS5l
cnJubwotICAgICAgICAgICAgICAgIGlmIGUgPT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAg
ICAgICAgICAjIEVpdGhlciB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGFscmVhZHkgZXhpc3Rz
ICh0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBjb21tb24gY2FzZSkgb3IgaXQncyBibG9ja2Vk
IGJ5IGEgbm9uLWRpciBub2RlLiBJbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBsYXR0ZXIg
Y2FzZSwgd2UnbGwgaWdub3JlIGl0IGluIF93cml0ZV9weWMuCi0gICAgICAgICAgICAgICAgICAg
IHBhc3MKLSAgICAgICAgICAgICAgICBlbGlmIGUgaW4gW2Vycm5vLkVOT0VOVCwgZXJybm8uRU5P
VERJUl06Ci0gICAgICAgICAgICAgICAgICAgICMgT25lIG9mIHRoZSBwYXRoIGNvbXBvbmVudHMg
d2FzIG5vdCBhIGRpcmVjdG9yeSwgbGlrZWx5Ci0gICAgICAgICAgICAgICAgICAgICMgYmVjYXVz
ZSB3ZSdyZSBpbiBhIHppcCBmaWxlLgotICAgICAgICAgICAgICAgICAgICB3cml0ZSA9IEZhbHNl
Ci0gICAgICAgICAgICAgICAgZWxpZiBlIGluIFtlcnJuby5FQUNDRVMsIGVycm5vLkVST0ZTLCBl
cnJuby5FUEVSTV06Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJyZWFkIG9ubHkg
ZGlyZWN0b3J5OiAlciIgJSBmbl9weXBhdGguZGlybmFtZSkKLSAgICAgICAgICAgICAgICAgICAg
d3JpdGUgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlCi0gICAgICAgIGNhY2hlX25hbWUgPSBmbl9weXBhdGguYmFzZW5hbWVbOi0zXSArIFBZ
Q19UQUlMCi0gICAgICAgIHB5YyA9IG9zLnBhdGguam9pbihjYWNoZV9kaXIsIGNhY2hlX25hbWUp
Ci0gICAgICAgICMgTm90aWNlIHRoYXQgZXZlbiBpZiB3ZSdyZSBpbiBhIHJlYWQtb25seSBkaXJl
Y3RvcnksIEknbSBnb2luZwotICAgICAgICAjIHRvIGNoZWNrIGZvciBhIGNhY2hlZCBweWMuIFRo
aXMgbWF5IG5vdCBiZSBvcHRpbWFsLi4uCi0gICAgICAgIGNvID0gX3JlYWRfcHljKGZuX3B5cGF0
aCwgcHljLCBzdGF0ZS50cmFjZSkKLSAgICAgICAgaWYgY28gaXMgTm9uZToKLSAgICAgICAgICAg
IHN0YXRlLnRyYWNlKCJyZXdyaXRpbmcgJXIiICUgKGZuLCkpCi0gICAgICAgICAgICBzb3VyY2Vf
c3RhdCwgY28gPSBfcmV3cml0ZV90ZXN0KHNlbGYuY29uZmlnLCBmbl9weXBhdGgpCi0gICAgICAg
ICAgICBpZiBjbyBpcyBOb25lOgotICAgICAgICAgICAgICAgICMgUHJvYmFibHkgYSBTeW50YXhF
cnJvciBpbiB0aGUgdGVzdC4KLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAg
ICAgaWYgd3JpdGU6Ci0gICAgICAgICAgICAgICAgX21ha2VfcmV3cml0dGVuX3B5YyhzdGF0ZSwg
c291cmNlX3N0YXQsIHB5YywgY28pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdGF0ZS50
cmFjZSgiZm91bmQgY2FjaGVkIHJld3JpdHRlbiBweWMgZm9yICVyIiAlIChmbiwpKQotICAgICAg
ICBzZWxmLm1vZHVsZXNbbmFtZV0gPSBjbywgcHljCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAg
ICBkZWYgX3Nob3VsZF9yZXdyaXRlKHNlbGYsIG5hbWUsIGZuX3B5cGF0aCwgc3RhdGUpOgotICAg
ICAgICAjIGFsd2F5cyByZXdyaXRlIGNvbmZ0ZXN0IGZpbGVzCi0gICAgICAgIGZuID0gc3RyKGZu
X3B5cGF0aCkKLSAgICAgICAgaWYgZm5fcHlwYXRoLmJhc2VuYW1lID09ICdjb25mdGVzdC5weSc6
Ci0gICAgICAgICAgICBzdGF0ZS50cmFjZSgicmV3cml0aW5nIGNvbmZ0ZXN0IGZpbGU6ICVyIiAl
IChmbiwpKQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBpZiBzZWxmLnNlc3Np
b24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLnNlc3Npb24uaXNpbml0cGF0aChm
bik6Ci0gICAgICAgICAgICAgICAgc3RhdGUudHJhY2UoIm1hdGNoZWQgdGVzdCBmaWxlICh3YXMg
c3BlY2lmaWVkIG9uIGNtZGxpbmUpOiAlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChmbiwpKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgIyBtb2R1bGVz
IG5vdCBwYXNzZWQgZXhwbGljaXRseSBvbiB0aGUgY29tbWFuZCBsaW5lIGFyZSBvbmx5Ci0gICAg
ICAgICMgcmV3cml0dGVuIGlmIHRoZXkgbWF0Y2ggdGhlIG5hbWluZyBjb252ZW50aW9uIGZvciB0
ZXN0IGZpbGVzCi0gICAgICAgIGZvciBwYXQgaW4gc2VsZi5mbnBhdHM6Ci0gICAgICAgICAgICBp
ZiBmbl9weXBhdGguZm5tYXRjaChwYXQpOgotICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJt
YXRjaGVkIHRlc3QgZmlsZSAlciIgJSAoZm4sKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQotCi0gICAgICAgIGZvciBtYXJrZWQgaW4gc2VsZi5fbXVzdF9yZXdyaXRlOgotICAgICAgICAg
ICAgaWYgbmFtZSA9PSBtYXJrZWQgb3IgbmFtZS5zdGFydHN3aXRoKG1hcmtlZCArICcuJyk6Ci0g
ICAgICAgICAgICAgICAgc3RhdGUudHJhY2UoIm1hdGNoZWQgbWFya2VkIGZpbGUgJXIgKGZyb20g
JXIpIiAlIChuYW1lLCBtYXJrZWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgbWFya19yZXdyaXRlKHNlbGYsICpuYW1lcyk6
Ci0gICAgICAgICIiIk1hcmsgaW1wb3J0IG5hbWVzIGFzIG5lZWRpbmcgdG8gYmUgcmV3cml0dGVu
LgotCi0gICAgICAgIFRoZSBuYW1lZCBtb2R1bGUgb3IgcGFja2FnZSBhcyB3ZWxsIGFzIGFueSBu
ZXN0ZWQgbW9kdWxlcyB3aWxsCi0gICAgICAgIGJlIHJld3JpdHRlbiBvbiBpbXBvcnQuCi0gICAg
ICAgICIiIgotICAgICAgICBhbHJlYWR5X2ltcG9ydGVkID0gc2V0KG5hbWVzKS5pbnRlcnNlY3Rp
b24oc2V0KHN5cy5tb2R1bGVzKSkKLSAgICAgICAgaWYgYWxyZWFkeV9pbXBvcnRlZDoKLSAgICAg
ICAgICAgIGZvciBuYW1lIGluIGFscmVhZHlfaW1wb3J0ZWQ6Ci0gICAgICAgICAgICAgICAgaWYg
bmFtZSBub3QgaW4gc2VsZi5fcmV3cml0dGVuX25hbWVzOgotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93YXJuX2FscmVhZHlfaW1wb3J0ZWQobmFtZSkKLSAgICAgICAgc2VsZi5fbXVzdF9yZXdy
aXRlLnVwZGF0ZShuYW1lcykKLQotICAgIGRlZiBfd2Fybl9hbHJlYWR5X2ltcG9ydGVkKHNlbGYs
IG5hbWUpOgotICAgICAgICBzZWxmLmNvbmZpZy53YXJuKAotICAgICAgICAgICAgJ1AxJywKLSAg
ICAgICAgICAgICdNb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBzbyBjYW5ub3QgYmUgcmV3cml0dGVu
OiAlcycgJSBuYW1lKQotCi0gICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG5hbWUpOgotICAgICAg
ICAjIElmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIG1vZHVsZSBvYmplY3QgbmFtZWQgJ2Z1bGxuYW1l
JyBpbgotICAgICAgICAjIHN5cy5tb2R1bGVzLCB0aGUgbG9hZGVyIG11c3QgdXNlIHRoYXQgZXhp
c3RpbmcgbW9kdWxlLiAoT3RoZXJ3aXNlLAotICAgICAgICAjIHRoZSByZWxvYWQoKSBidWlsdGlu
IHdpbGwgbm90IHdvcmsgY29ycmVjdGx5LikKLSAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxl
czoKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQotCi0gICAgICAgIGNvLCBw
eWMgPSBzZWxmLm1vZHVsZXMucG9wKG5hbWUpCi0gICAgICAgICMgSSB3aXNoIEkgY291bGQganVz
dCBjYWxsIGltcC5sb2FkX2NvbXBpbGVkIGhlcmUsIGJ1dCBfX2ZpbGVfXyBoYXMgdG8KLSAgICAg
ICAgIyBiZSBzZXQgcHJvcGVybHkuIEluIFB5dGhvbiAzLjIrLCB0aGlzIGFsbCB3b3VsZCBiZSBo
YW5kbGVkIGNvcnJlY3RseQotICAgICAgICAjIGJ5IGxvYWRfY29tcGlsZWQuCi0gICAgICAgIG1v
ZCA9IHN5cy5tb2R1bGVzW25hbWVdID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgbW9kLl9fZmlsZV9fID0gY28uY29fZmlsZW5hbWUKLSAgICAgICAgICAg
ICMgTm9ybWFsbHksIHRoaXMgYXR0cmlidXRlIGlzIDMuMisuCi0gICAgICAgICAgICBtb2QuX19j
YWNoZWRfXyA9IHB5YwotICAgICAgICAgICAgbW9kLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAg
ICAgICBweS5idWlsdGluLmV4ZWNfKGNvLCBtb2QuX19kaWN0X18pCi0gICAgICAgIGV4Y2VwdDog
ICMgbm9xYQotICAgICAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAg
ICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHJl
dHVybiBzeXMubW9kdWxlc1tuYW1lXQotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgbmFtZSk6
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZkLCBmbiwgZGVzYyA9IGltcC5maW5kX21vZHVs
ZShuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmZC5jbG9zZSgp
Ci0gICAgICAgIHRwID0gZGVzY1syXQotICAgICAgICByZXR1cm4gdHAgPT0gaW1wLlBLR19ESVJF
Q1RPUlkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcmVnaXN0ZXJfd2l0aF9wa2dfcmVz
b3VyY2VzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBFbnN1cmUgcGFja2FnZSByZXNvdXJj
ZXMgY2FuIGJlIGxvYWRlZCBmcm9tIHRoaXMgbG9hZGVyLiBNYXkgYmUgY2FsbGVkCi0gICAgICAg
IG11bHRpcGxlIHRpbWVzLCBhcyB0aGUgb3BlcmF0aW9uIGlzIGlkZW1wb3RlbnQuCi0gICAgICAg
ICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgcGtnX3Jlc291cmNlcwotICAg
ICAgICAgICAgIyBhY2Nlc3MgYW4gYXR0cmlidXRlIGluIGNhc2UgYSBkZWZlcnJlZCBpbXBvcnRl
ciBpcyBwcmVzZW50Ci0gICAgICAgICAgICBwa2dfcmVzb3VyY2VzLl9fbmFtZV9fCi0gICAgICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgU2lu
Y2UgcHl0ZXN0IHRlc3RzIGFyZSBhbHdheXMgbG9jYXRlZCBpbiB0aGUgZmlsZSBzeXN0ZW0sIHRo
ZQotICAgICAgICAjICBEZWZhdWx0UHJvdmlkZXIgaXMgYXBwcm9wcmlhdGUuCi0gICAgICAgIHBr
Z19yZXNvdXJjZXMucmVnaXN0ZXJfbG9hZGVyX3R5cGUoY2xzLCBwa2dfcmVzb3VyY2VzLkRlZmF1
bHRQcm92aWRlcikKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRobmFtZSk6Ci0gICAgICAg
ICIiIk9wdGlvbmFsIFBFUDMwMiBnZXRfZGF0YSBBUEkuCi0gICAgICAgICIiIgotICAgICAgICB3
aXRoIG9wZW4ocGF0aG5hbWUsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICByZXR1cm4gZi5yZWFk
KCkKLQotCi1kZWYgX3dyaXRlX3B5YyhzdGF0ZSwgY28sIHNvdXJjZV9zdGF0LCBweWMpOgotICAg
ICMgVGVjaG5pY2FsbHksIHdlIGRvbid0IGhhdmUgdG8gaGF2ZSB0aGUgc2FtZSBweWMgZm9ybWF0
IGFzCi0gICAgIyAoQylQeXRob24sIHNpbmNlIHRoZXNlICJweWNzIiBzaG91bGQgbmV2ZXIgYmUg
c2VlbiBieSBidWlsdGluCi0gICAgIyBpbXBvcnQuIEhvd2V2ZXIsIHRoZXJlJ3MgbGl0dGxlIHJl
YXNvbiBkZXZpYXRlLCBhbmQgSSBob3BlCi0gICAgIyBzb21ldGltZSB0byBiZSBhYmxlIHRvIHVz
ZSBpbXAubG9hZF9jb21waWxlZCB0byBsb2FkIHRoZW0uIChTZWUKLSAgICAjIHRoZSBjb21tZW50
IGluIGxvYWRfbW9kdWxlIGFib3ZlLikKLSAgICB0cnk6Ci0gICAgICAgIGZwID0gb3BlbihweWMs
ICJ3YiIpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIGVyciA9IHN5cy5leGNfaW5mbygp
WzFdLmVycm5vCi0gICAgICAgIHN0YXRlLnRyYWNlKCJlcnJvciB3cml0aW5nIHB5YyBmaWxlIGF0
ICVzOiBlcnJubz0lcyIgJSAocHljLCBlcnIpKQotICAgICAgICAjIHdlIGlnbm9yZSBhbnkgZmFp
bHVyZSB0byB3cml0ZSB0aGUgY2FjaGUgZmlsZQotICAgICAgICAjIHRoZXJlIGFyZSBtYW55IHJl
YXNvbnMsIHBlcm1pc3Npb24tZGVuaWVkLCBfX3B5Y2FjaGVfXyBiZWluZyBhCi0gICAgICAgICMg
ZmlsZSBldGMuCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHRyeToKLSAgICAgICAgZnAud3Jp
dGUoaW1wLmdldF9tYWdpYygpKQotICAgICAgICBtdGltZSA9IGludChzb3VyY2Vfc3RhdC5tdGlt
ZSkKLSAgICAgICAgc2l6ZSA9IHNvdXJjZV9zdGF0LnNpemUgJiAweEZGRkZGRkZGCi0gICAgICAg
IGZwLndyaXRlKHN0cnVjdC5wYWNrKCI8bGwiLCBtdGltZSwgc2l6ZSkpCi0gICAgICAgIG1hcnNo
YWwuZHVtcChjbywgZnApCi0gICAgZmluYWxseToKLSAgICAgICAgZnAuY2xvc2UoKQotICAgIHJl
dHVybiBUcnVlCi0KLQotUk4gPSAiXHJcbiIuZW5jb2RlKCJ1dGYtOCIpCi1OID0gIlxuIi5lbmNv
ZGUoInV0Zi04IikKLQotY29va2llX3JlID0gcmUuY29tcGlsZShyIl5bIFx0XGZdKiMuKmNvZGlu
Z1s6PV1bIFx0XSpbLVx3Ll0rIikKLUJPTV9VVEY4ID0gJ1x4ZWZceGJiXHhiZicKLQotCi1kZWYg
X3Jld3JpdGVfdGVzdChjb25maWcsIGZuKToKLSAgICAiIiJUcnkgdG8gcmVhZCBhbmQgcmV3cml0
ZSAqZm4qIGFuZCByZXR1cm4gdGhlIGNvZGUgb2JqZWN0LiIiIgotICAgIHN0YXRlID0gY29uZmln
Ll9hc3NlcnRzdGF0ZQotICAgIHRyeToKLSAgICAgICAgc3RhdCA9IGZuLnN0YXQoKQotICAgICAg
ICBzb3VyY2UgPSBmbi5yZWFkKCJyYiIpCi0gICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6Ci0g
ICAgICAgIHJldHVybiBOb25lLCBOb25lCi0gICAgaWYgQVNDSUlfSVNfREVGQVVMVF9FTkNPRElO
RzoKLSAgICAgICAgIyBBU0NJSSBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZyBpbiBQeXRob24gMi4g
V2l0aG91dCBhIGNvZGluZwotICAgICAgICAjIGRlY2xhcmF0aW9uLCBQeXRob24gMiB3aWxsIGNv
bXBsYWluIGFib3V0IGFueSBieXRlcyBpbiB0aGUgZmlsZQotICAgICAgICAjIG91dHNpZGUgdGhl
IEFTQ0lJIHJhbmdlLiBTYWRseSwgdGhpcyBiZWhhdmlvciBkb2VzIG5vdCBleHRlbmQgdG8KLSAg
ICAgICAgIyBjb21waWxlKCkgb3IgYXN0LnBhcnNlKCksIHdoaWNoIHByZWZlciB0byBpbnRlcnBy
ZXQgdGhlIGJ5dGVzIGFzCi0gICAgICAgICMgbGF0aW4tMS4gKEF0IGxlYXN0IHRoZXkgcHJvcGVy
bHkgaGFuZGxlIGV4cGxpY2l0IGNvZGluZyBjb29raWVzLikgVG8KLSAgICAgICAgIyBwcmVzZXJ2
ZSB0aGlzIGVycm9yIGJlaGF2aW9yLCB3ZSBjb3VsZCBmb3JjZSBhc3QucGFyc2UoKSB0byB1c2Ug
QVNDSUkKLSAgICAgICAgIyBhcyB0aGUgZW5jb2RpbmcgYnkgaW5zZXJ0aW5nIGEgY29kaW5nIGNv
b2tpZS4gVW5mb3J0dW5hdGVseSwgdGhhdAotICAgICAgICAjIG1lc3NlcyB1cCBsaW5lIG51bWJl
cnMuIFRodXMsIHdlIGhhdmUgdG8gY2hlY2sgb3Vyc2VsdmVzIGlmIGFueXRoaW5nCi0gICAgICAg
ICMgaXMgb3V0c2lkZSB0aGUgQVNDSUkgcmFuZ2UgaW4gdGhlIGNhc2Ugbm8gZW5jb2RpbmcgaXMg
ZXhwbGljaXRseQotICAgICAgICAjIGRlY2xhcmVkLiBGb3IgbW9yZSBjb250ZXh0LCBzZWUgaXNz
dWUgIzI2OS4gWWF5IGZvciBQeXRob24gMyB3aGljaAotICAgICAgICAjIGdldHMgdGhpcyByaWdo
dC4KLSAgICAgICAgZW5kMSA9IHNvdXJjZS5maW5kKCJcbiIpCi0gICAgICAgIGVuZDIgPSBzb3Vy
Y2UuZmluZCgiXG4iLCBlbmQxICsgMSkKLSAgICAgICAgaWYgKG5vdCBzb3VyY2Uuc3RhcnRzd2l0
aChCT01fVVRGOCkgYW5kCi0gICAgICAgICAgICBjb29raWVfcmUubWF0Y2goc291cmNlWzA6ZW5k
MV0pIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgY29va2llX3JlLm1hdGNoKHNvdXJjZVtl
bmQxICsgMTplbmQyXSkgaXMgTm9uZSk6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHN0YXRlLCAi
X2luZGVjb2RlIik6Ci0gICAgICAgICAgICAgICAgIyBlbmNvZGluZ3MgaW1wb3J0ZWQgdXMgYWdh
aW4sIHNvIGRvbid0IHJld3JpdGUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUK
LSAgICAgICAgICAgIHN0YXRlLl9pbmRlY29kZSA9IFRydWUKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZS5kZWNvZGUoImFz
Y2lpIikKLSAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAg
ICAgICAgICAgICAgICAjIExldCBpdCBmYWlsIGluIHJlYWwgaW1wb3J0LgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgICAgICBkZWwgc3RhdGUuX2luZGVjb2RlCi0gICAgdHJ5OgotICAgICAgICB0cmVlID0gYXN0
LnBhcnNlKHNvdXJjZSkKLSAgICBleGNlcHQgU3ludGF4RXJyb3I6Ci0gICAgICAgICMgTGV0IHRo
aXMgcG9wIHVwIGFnYWluIGluIHRoZSByZWFsIGltcG9ydC4KLSAgICAgICAgc3RhdGUudHJhY2Uo
ImZhaWxlZCB0byBwYXJzZTogJXIiICUgKGZuLCkpCi0gICAgICAgIHJldHVybiBOb25lLCBOb25l
Ci0gICAgcmV3cml0ZV9hc3NlcnRzKHRyZWUsIGZuLCBjb25maWcpCi0gICAgdHJ5OgotICAgICAg
ICBjbyA9IGNvbXBpbGUodHJlZSwgZm4uc3RycGF0aCwgImV4ZWMiLCBkb250X2luaGVyaXQ9VHJ1
ZSkKLSAgICBleGNlcHQgU3ludGF4RXJyb3I6Ci0gICAgICAgICMgSXQncyBwb3NzaWJsZSB0aGF0
IHRoaXMgZXJyb3IgaXMgZnJvbSBzb21lIGJ1ZyBpbiB0aGUKLSAgICAgICAgIyBhc3NlcnRpb24g
cmV3cml0aW5nLCBidXQgSSBkb24ndCBrbm93IG9mIGEgZmFzdCB3YXkgdG8gdGVsbC4KLSAgICAg
ICAgc3RhdGUudHJhY2UoImZhaWxlZCB0byBjb21waWxlOiAlciIgJSAoZm4sKSkKLSAgICAgICAg
cmV0dXJuIE5vbmUsIE5vbmUKLSAgICByZXR1cm4gc3RhdCwgY28KLQotCi1kZWYgX21ha2VfcmV3
cml0dGVuX3B5YyhzdGF0ZSwgc291cmNlX3N0YXQsIHB5YywgY28pOgotICAgICIiIlRyeSB0byBk
dW1wIHJld3JpdHRlbiBjb2RlIHRvICpweWMqLiIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCJ3aW4iKToKLSAgICAgICAgIyBXaW5kb3dzIGdyYW50cyBleGNsdXNpdmUgYWNjZXNz
IHRvIG9wZW4gZmlsZXMgYW5kIGRvZXNuJ3QgaGF2ZSBhdG9taWMKLSAgICAgICAgIyByZW5hbWUs
IHNvIGp1c3Qgd3JpdGUgaW50byB0aGUgZmluYWwgZmlsZS4KLSAgICAgICAgX3dyaXRlX3B5Yyhz
dGF0ZSwgY28sIHNvdXJjZV9zdGF0LCBweWMpCi0gICAgZWxzZToKLSAgICAgICAgIyBXaGVuIG5v
dCBvbiB3aW5kb3dzLCBhc3N1bWUgcmVuYW1lIGlzIGF0b21pYy4gRHVtcCB0aGUgY29kZSBvYmpl
Y3QKLSAgICAgICAgIyBpbnRvIGEgZmlsZSBzcGVjaWZpYyB0byB0aGlzIHByb2Nlc3MgYW5kIGF0
b21pY2FsbHkgcmVwbGFjZSBpdC4KLSAgICAgICAgcHJvY19weWMgPSBweWMgKyAiLiIgKyBzdHIo
b3MuZ2V0cGlkKCkpCi0gICAgICAgIGlmIF93cml0ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3Rh
dCwgcHJvY19weWMpOgotICAgICAgICAgICAgb3MucmVuYW1lKHByb2NfcHljLCBweWMpCi0KLQot
ZGVmIF9yZWFkX3B5Yyhzb3VyY2UsIHB5YywgdHJhY2U9bGFtYmRhIHg6IE5vbmUpOgotICAgICIi
IlBvc3NpYmx5IHJlYWQgYSBweXRlc3QgcHljIGNvbnRhaW5pbmcgcmV3cml0dGVuIGNvZGUuCi0K
LSAgICBSZXR1cm4gcmV3cml0dGVuIGNvZGUgaWYgc3VjY2Vzc2Z1bCBvciBOb25lIGlmIG5vdC4K
LSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGZwID0gb3BlbihweWMsICJyYiIpCi0gICAgZXhj
ZXB0IElPRXJyb3I6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgd2l0aCBmcDoKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgbXRpbWUgPSBpbnQoc291cmNlLm10aW1lKCkpCi0gICAgICAgICAg
ICBzaXplID0gc291cmNlLnNpemUoKQotICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoMTIpCi0g
ICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6Ci0gICAgICAgICAgICB0cmFjZSgn
X3JlYWRfcHljKCVzKTogRW52aXJvbm1lbnRFcnJvciAlcycgJSAoc291cmNlLCBlKSkKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgQ2hlY2sgZm9yIGludmFsaWQgb3Igb3V0IG9m
IGRhdGUgcHljIGZpbGUuCi0gICAgICAgIGlmIChsZW4oZGF0YSkgIT0gMTIgb3IgZGF0YVs6NF0g
IT0gaW1wLmdldF9tYWdpYygpIG9yCi0gICAgICAgICAgICAgICAgc3RydWN0LnVucGFjaygiPGxs
IiwgZGF0YVs0Ol0pICE9IChtdGltZSwgc2l6ZSkpOgotICAgICAgICAgICAgdHJhY2UoJ19yZWFk
X3B5Yyglcyk6IGludmFsaWQgb3Igb3V0IG9mIGRhdGUgcHljJyAlIHNvdXJjZSkKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvID0gbWFyc2hhbC5s
b2FkKGZwKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICB0cmFj
ZSgnX3JlYWRfcHljKCVzKTogbWFyc2hhbC5sb2FkIGVycm9yICVzJyAlIChzb3VyY2UsIGUpKQot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY28sIHR5
cGVzLkNvZGVUeXBlKToKLSAgICAgICAgICAgIHRyYWNlKCdfcmVhZF9weWMoJXMpOiBub3QgYSBj
b2RlIG9iamVjdCcgJSBzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBy
ZXR1cm4gY28KLQotCi1kZWYgcmV3cml0ZV9hc3NlcnRzKG1vZCwgbW9kdWxlX3BhdGg9Tm9uZSwg
Y29uZmlnPU5vbmUpOgotICAgICIiIlJld3JpdGUgdGhlIGFzc2VydCBzdGF0ZW1lbnRzIGluIG1v
ZC4iIiIKLSAgICBBc3NlcnRpb25SZXdyaXRlcihtb2R1bGVfcGF0aCwgY29uZmlnKS5ydW4obW9k
KQotCi0KLWRlZiBfc2FmZXJlcHIob2JqKToKLSAgICAiIiJHZXQgYSBzYWZlIHJlcHIgb2YgYW4g
b2JqZWN0IGZvciBhc3NlcnRpb24gZXJyb3IgbWVzc2FnZXMuCi0KLSAgICBUaGUgYXNzZXJ0aW9u
IGZvcm1hdHRpbmcgKHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkpIHJlcXVpcmVzCi0gICAgbmV3
bGluZXMgdG8gYmUgZXNjYXBlZCBzaW5jZSB0aGV5IGFyZSBhIHNwZWNpYWwgY2hhcmFjdGVyIGZv
ciBpdC4KLSAgICBOb3JtYWxseSBhc3NlcnRpb24udXRpbC5mb3JtYXRfZXhwbGFuYXRpb24oKSBk
b2VzIHRoaXMgYnV0IGZvciBhCi0gICAgY3VzdG9tIHJlcHIgaXQgaXMgcG9zc2libGUgdG8gY29u
dGFpbiBvbmUgb2YgdGhlIHNwZWNpYWwgZXNjYXBlCi0gICAgc2VxdWVuY2VzLCBlc3BlY2lhbGx5
ICdcbnsnIGFuZCAnXG59JyBhcmUgbGlrZWx5IHRvIGJlIHByZXNlbnQgaW4KLSAgICBKU09OIHJl
cHJzLgotCi0gICAgIiIiCi0gICAgcmVwciA9IHB5LmlvLnNhZmVyZXByKG9iaikKLSAgICBpZiBp
c2luc3RhbmNlKHJlcHIsIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICB0ID0gc2l4LnRleHRfdHlw
ZQotICAgIGVsc2U6Ci0gICAgICAgIHQgPSBzaXguYmluYXJ5X3R5cGUKLSAgICByZXR1cm4gcmVw
ci5yZXBsYWNlKHQoIlxuIiksIHQoIlxcbiIpKQotCi0KLWZyb20gX3B5dGVzdC5hc3NlcnRpb24u
dXRpbCBpbXBvcnQgZm9ybWF0X2V4cGxhbmF0aW9uIGFzIF9mb3JtYXRfZXhwbGFuYXRpb24gICMg
bm9xYQotCi0KLWRlZiBfZm9ybWF0X2Fzc2VydG1zZyhvYmopOgotICAgICIiIkZvcm1hdCB0aGUg
Y3VzdG9tIGFzc2VydGlvbiBtZXNzYWdlIGdpdmVuLgotCi0gICAgRm9yIHN0cmluZ3MgdGhpcyBz
aW1wbHkgcmVwbGFjZXMgbmV3bGluZXMgd2l0aCAnXG5+JyBzbyB0aGF0Ci0gICAgdXRpbC5mb3Jt
YXRfZXhwbGFuYXRpb24oKSB3aWxsIHByZXNlcnZlIHRoZW0gaW5zdGVhZCBvZiBlc2NhcGluZwot
ICAgIG5ld2xpbmVzLiAgRm9yIG90aGVyIG9iamVjdHMgcHkuaW8uc2FmZXJlcHIoKSBpcyB1c2Vk
IGZpcnN0LgotCi0gICAgIiIiCi0gICAgIyByZXBybGliIGFwcGVhcnMgdG8gaGF2ZSBhIGJ1ZyB3
aGljaCBtZWFucyB0aGF0IGlmIGEgc3RyaW5nCi0gICAgIyBjb250YWlucyBhIG5ld2xpbmUgaXQg
Z2V0cyBlc2NhcGVkLCBob3dldmVyIGlmIGFuIG9iamVjdCBoYXMgYQotICAgICMgLl9fcmVwcl9f
KCkgd2hpY2ggY29udGFpbnMgbmV3bGluZXMgaXQgZG9lcyBub3QgZ2V0IGVzY2FwZWQuCi0gICAg
IyBIb3dldmVyIGluIGVpdGhlciBjYXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgdGhlIG5ld2xpbmUu
Ci0gICAgaWYgaXNpbnN0YW5jZShvYmosIHNpeC50ZXh0X3R5cGUpIG9yIGlzaW5zdGFuY2Uob2Jq
LCBzaXguYmluYXJ5X3R5cGUpOgotICAgICAgICBzID0gb2JqCi0gICAgICAgIGlzX3JlcHIgPSBG
YWxzZQotICAgIGVsc2U6Ci0gICAgICAgIHMgPSBweS5pby5zYWZlcmVwcihvYmopCi0gICAgICAg
IGlzX3JlcHIgPSBUcnVlCi0gICAgaWYgaXNpbnN0YW5jZShzLCBzaXgudGV4dF90eXBlKToKLSAg
ICAgICAgdCA9IHNpeC50ZXh0X3R5cGUKLSAgICBlbHNlOgotICAgICAgICB0ID0gc2l4LmJpbmFy
eV90eXBlCi0gICAgcyA9IHMucmVwbGFjZSh0KCJcbiIpLCB0KCJcbn4iKSkucmVwbGFjZSh0KCIl
IiksIHQoIiUlIikpCi0gICAgaWYgaXNfcmVwcjoKLSAgICAgICAgcyA9IHMucmVwbGFjZSh0KCJc
XG4iKSwgdCgiXG5+IikpCi0gICAgcmV0dXJuIHMKLQotCi1kZWYgX3Nob3VsZF9yZXByX2dsb2Jh
bF9uYW1lKG9iaik6Ci0gICAgcmV0dXJuIG5vdCBoYXNhdHRyKG9iaiwgIl9fbmFtZV9fIikgYW5k
IG5vdCBjYWxsYWJsZShvYmopCi0KLQotZGVmIF9mb3JtYXRfYm9vbG9wKGV4cGxhbmF0aW9ucywg
aXNfb3IpOgotICAgIGV4cGxhbmF0aW9uID0gIigiICsgKGlzX29yIGFuZCAiIG9yICIgb3IgIiBh
bmQgIikuam9pbihleHBsYW5hdGlvbnMpICsgIikiCi0gICAgaWYgaXNpbnN0YW5jZShleHBsYW5h
dGlvbiwgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgIHQgPSBzaXgudGV4dF90eXBlCi0gICAgZWxz
ZToKLSAgICAgICAgdCA9IHNpeC5iaW5hcnlfdHlwZQotICAgIHJldHVybiBleHBsYW5hdGlvbi5y
ZXBsYWNlKHQoJyUnKSwgdCgnJSUnKSkKLQotCi1kZWYgX2NhbGxfcmVwcmNvbXBhcmUob3BzLCBy
ZXN1bHRzLCBleHBscywgZWFjaF9vYmopOgotICAgIGZvciBpLCByZXMsIGV4cGwgaW4gemlwKHJh
bmdlKGxlbihvcHMpKSwgcmVzdWx0cywgZXhwbHMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBkb25lID0gbm90IHJlcwotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAg
ZG9uZSA9IFRydWUKLSAgICAgICAgaWYgZG9uZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYg
dXRpbC5fcmVwcmNvbXBhcmUgaXMgbm90IE5vbmU6Ci0gICAgICAgIGN1c3RvbSA9IHV0aWwuX3Jl
cHJjb21wYXJlKG9wc1tpXSwgZWFjaF9vYmpbaV0sIGVhY2hfb2JqW2kgKyAxXSkKLSAgICAgICAg
aWYgY3VzdG9tIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGN1c3RvbQotICAgIHJl
dHVybiBleHBsCi0KLQotdW5hcnlfbWFwID0gewotICAgIGFzdC5Ob3Q6ICJub3QgJXMiLAotICAg
IGFzdC5JbnZlcnQ6ICJ+JXMiLAotICAgIGFzdC5VU3ViOiAiLSVzIiwKLSAgICBhc3QuVUFkZDog
IislcyIKLX0KLQotYmlub3BfbWFwID0gewotICAgIGFzdC5CaXRPcjogInwiLAotICAgIGFzdC5C
aXRYb3I6ICJeIiwKLSAgICBhc3QuQml0QW5kOiAiJiIsCi0gICAgYXN0LkxTaGlmdDogIjw8IiwK
LSAgICBhc3QuUlNoaWZ0OiAiPj4iLAotICAgIGFzdC5BZGQ6ICIrIiwKLSAgICBhc3QuU3ViOiAi
LSIsCi0gICAgYXN0Lk11bHQ6ICIqIiwKLSAgICBhc3QuRGl2OiAiLyIsCi0gICAgYXN0LkZsb29y
RGl2OiAiLy8iLAotICAgIGFzdC5Nb2Q6ICIlJSIsICAjIGVzY2FwZWQgZm9yIHN0cmluZyBmb3Jt
YXR0aW5nCi0gICAgYXN0LkVxOiAiPT0iLAotICAgIGFzdC5Ob3RFcTogIiE9IiwKLSAgICBhc3Qu
THQ6ICI8IiwKLSAgICBhc3QuTHRFOiAiPD0iLAotICAgIGFzdC5HdDogIj4iLAotICAgIGFzdC5H
dEU6ICI+PSIsCi0gICAgYXN0LlBvdzogIioqIiwKLSAgICBhc3QuSXM6ICJpcyIsCi0gICAgYXN0
LklzTm90OiAiaXMgbm90IiwKLSAgICBhc3QuSW46ICJpbiIsCi0gICAgYXN0Lk5vdEluOiAibm90
IGluIgotfQotIyBQeXRob24gMy41KyBjb21wYXRpYmlsaXR5Ci10cnk6Ci0gICAgYmlub3BfbWFw
W2FzdC5NYXRNdWx0XSA9ICJAIgotZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgIHBhc3MKLQot
IyBQeXRob24gMy40KyBjb21wYXRpYmlsaXR5Ci1pZiBoYXNhdHRyKGFzdCwgIk5hbWVDb25zdGFu
dCIpOgotICAgIF9OYW1lQ29uc3RhbnQgPSBhc3QuTmFtZUNvbnN0YW50Ci1lbHNlOgotICAgIGRl
ZiBfTmFtZUNvbnN0YW50KGMpOgotICAgICAgICByZXR1cm4gYXN0Lk5hbWUoc3RyKGMpLCBhc3Qu
TG9hZCgpKQotCi0KLWRlZiBzZXRfbG9jYXRpb24obm9kZSwgbGluZW5vLCBjb2xfb2Zmc2V0KToK
LSAgICAiIiJTZXQgbm9kZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiByZWN1cnNpdmVseS4iIiIKLSAg
ICBkZWYgX2ZpeChub2RlLCBsaW5lbm8sIGNvbF9vZmZzZXQpOgotICAgICAgICBpZiAibGluZW5v
IiBpbiBub2RlLl9hdHRyaWJ1dGVzOgotICAgICAgICAgICAgbm9kZS5saW5lbm8gPSBsaW5lbm8K
LSAgICAgICAgaWYgImNvbF9vZmZzZXQiIGluIG5vZGUuX2F0dHJpYnV0ZXM6Ci0gICAgICAgICAg
ICBub2RlLmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0Ci0gICAgICAgIGZvciBjaGlsZCBpbiBhc3Qu
aXRlcl9jaGlsZF9ub2Rlcyhub2RlKToKLSAgICAgICAgICAgIF9maXgoY2hpbGQsIGxpbmVubywg
Y29sX29mZnNldCkKLSAgICBfZml4KG5vZGUsIGxpbmVubywgY29sX29mZnNldCkKLSAgICByZXR1
cm4gbm9kZQotCi0KLWNsYXNzIEFzc2VydGlvblJld3JpdGVyKGFzdC5Ob2RlVmlzaXRvcik6Ci0g
ICAgIiIiQXNzZXJ0aW9uIHJld3JpdGluZyBpbXBsZW1lbnRhdGlvbi4KLQotICAgIFRoZSBtYWlu
IGVudHJ5cG9pbnQgaXMgdG8gY2FsbCAucnVuKCkgd2l0aCBhbiBhc3QuTW9kdWxlIGluc3RhbmNl
LAotICAgIHRoaXMgd2lsbCB0aGVuIGZpbmQgYWxsIHRoZSBhc3NlcnQgc3RhdGVtZW50cyBhbmQg
cmV3cml0ZSB0aGVtIHRvCi0gICAgcHJvdmlkZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGFuZCBhIGRl
dGFpbGVkIGFzc2VydGlvbiBlcnJvci4gIFNlZQotICAgIGh0dHA6Ly9weWJpdGVzLmJsb2dzcG90
LmJlLzIwMTEvMDcvYmVoaW5kLXNjZW5lcy1vZi1weXRlc3RzLW5ldy1hc3NlcnRpb24uaHRtbAot
ICAgIGZvciBhbiBvdmVydmlldyBvZiBob3cgdGhpcyB3b3Jrcy4KLQotICAgIFRoZSBlbnRyeSBw
b2ludCBoZXJlIGlzIC5ydW4oKSB3aGljaCB3aWxsIGl0ZXJhdGUgb3ZlciBhbGwgdGhlCi0gICAg
c3RhdGVtZW50cyBpbiBhbiBhc3QuTW9kdWxlIGFuZCBmb3IgZWFjaCBhc3QuQXNzZXJ0IHN0YXRl
bWVudCBpdAotICAgIGZpbmRzIGNhbGwgLnZpc2l0KCkgd2l0aCBpdC4gIFRoZW4gLnZpc2l0X0Fz
c2VydCgpIHRha2VzIG92ZXIgYW5kCi0gICAgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIG5l
dyBhc3Qgc3RhdGVtZW50cyB0byByZXBsYWNlIHRoZQotICAgIG9yaWdpbmFsIGFzc2VydCBzdGF0
ZW1lbnQ6IGl0IHJld3JpdGVzIHRoZSB0ZXN0IG9mIGFuIGFzc2VydGlvbgotICAgIHRvIHByb3Zp
ZGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBhbmQgcmVwbGFjZSBpdCB3aXRoIGFuIGlmIHN0YXRlbWVu
dAotICAgIHdoaWNoIHJhaXNlcyBhbiBhc3NlcnRpb24gZXJyb3Igd2l0aCBhIGRldGFpbGVkIGV4
cGxhbmF0aW9uIGluCi0gICAgY2FzZSB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KLQotICAgIEZv
ciB0aGlzIC52aXNpdF9Bc3NlcnQoKSB1c2VzIHRoZSB2aXNpdG9yIHBhdHRlcm4gdG8gdmlzaXQg
YWxsIHRoZQotICAgIEFTVCBub2RlcyBvZiB0aGUgYXN0LkFzc2VydC50ZXN0IGZpZWxkLCBlYWNo
IHZpc2l0IGNhbGwgcmV0dXJuaW5nCi0gICAgYW4gQVNUIG5vZGUgYW5kIHRoZSBjb3JyZXNwb25k
aW5nIGV4cGxhbmF0aW9uIHN0cmluZy4gIER1cmluZyB0aGlzCi0gICAgc3RhdGUgaXMga2VwdCBp
biBzZXZlcmFsIGluc3RhbmNlIGF0dHJpYnV0ZXM6Ci0KLSAgICA6c3RhdGVtZW50czogQWxsIHRo
ZSBBU1Qgc3RhdGVtZW50cyB3aGljaCB3aWxsIHJlcGxhY2UgdGhlIGFzc2VydAotICAgICAgIHN0
YXRlbWVudC4KLQotICAgIDp2YXJpYWJsZXM6IFRoaXMgaXMgcG9wdWxhdGVkIGJ5IC52YXJpYWJs
ZSgpIHdpdGggZWFjaCB2YXJpYWJsZQotICAgICAgIHVzZWQgYnkgdGhlIHN0YXRlbWVudHMgc28g
dGhhdCB0aGV5IGNhbiBhbGwgYmUgc2V0IHRvIE5vbmUgYXQKLSAgICAgICB0aGUgZW5kIG9mIHRo
ZSBzdGF0ZW1lbnRzLgotCi0gICAgOnZhcmlhYmxlX2NvdW50ZXI6IENvdW50ZXIgdG8gY3JlYXRl
IG5ldyB1bmlxdWUgdmFyaWFibGVzIG5lZWRlZAotICAgICAgIGJ5IHN0YXRlbWVudHMuICBWYXJp
YWJsZXMgYXJlIGNyZWF0ZWQgdXNpbmcgLnZhcmlhYmxlKCkgYW5kCi0gICAgICAgaGF2ZSB0aGUg
Zm9ybSBvZiAiQHB5X2Fzc2VydDAiLgotCi0gICAgOm9uX2ZhaWx1cmU6IFRoZSBBU1Qgc3RhdGVt
ZW50cyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIGlmIHRoZQotICAgICAgIGFzc2VydGlvbiB0ZXN0
IGZhaWxzLiAgVGhpcyBpcyB0aGUgY29kZSB3aGljaCB3aWxsIGNvbnN0cnVjdAotICAgICAgIHRo
ZSBmYWlsdXJlIG1lc3NhZ2UgYW5kIHJhaXNlcyB0aGUgQXNzZXJ0aW9uRXJyb3IuCi0KLSAgICA6
ZXhwbGFuYXRpb25fc3BlY2lmaWVyczogQSBkaWN0IGZpbGxlZCBieSAuZXhwbGFuYXRpb25fcGFy
YW0oKQotICAgICAgIHdpdGggJS1mb3JtYXR0aW5nIHBsYWNlaG9sZGVycyBhbmQgdGhlaXIgY29y
cmVzcG9uZGluZwotICAgICAgIGV4cHJlc3Npb25zIHRvIHVzZSBpbiB0aGUgYnVpbGRpbmcgb2Yg
YW4gYXNzZXJ0aW9uIG1lc3NhZ2UuCi0gICAgICAgVGhpcyBpcyB1c2VkIGJ5IC5wb3BfZm9ybWF0
X2NvbnRleHQoKSB0byBidWlsZCBhIG1lc3NhZ2UuCi0KLSAgICA6c3RhY2s6IEEgc3RhY2sgb2Yg
dGhlIGV4cGxhbmF0aW9uX3NwZWNpZmllcnMgZGljdHMgbWFpbnRhaW5lZCBieQotICAgICAgIC5w
dXNoX2Zvcm1hdF9jb250ZXh0KCkgYW5kIC5wb3BfZm9ybWF0X2NvbnRleHQoKSB3aGljaCBhbGxv
d3MKLSAgICAgICB0byBidWlsZCBhbm90aGVyICUtZm9ybWF0dGVkIHN0cmluZyB3aGlsZSBhbHJl
YWR5IGJ1aWxkaW5nIG9uZS4KLQotICAgIFRoaXMgc3RhdGUgaXMgcmVzZXQgb24gZXZlcnkgbmV3
IGFzc2VydCBzdGF0ZW1lbnQgdmlzaXRlZCBhbmQgdXNlZAotICAgIGJ5IHRoZSBvdGhlciB2aXNp
dG9ycy4KLQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZV9wYXRoLCBj
b25maWcpOgotICAgICAgICBzdXBlcihBc3NlcnRpb25SZXdyaXRlciwgc2VsZikuX19pbml0X18o
KQotICAgICAgICBzZWxmLm1vZHVsZV9wYXRoID0gbW9kdWxlX3BhdGgKLSAgICAgICAgc2VsZi5j
b25maWcgPSBjb25maWcKLQotICAgIGRlZiBydW4oc2VsZiwgbW9kKToKLSAgICAgICAgIiIiRmlu
ZCBhbGwgYXNzZXJ0IHN0YXRlbWVudHMgaW4gKm1vZCogYW5kIHJld3JpdGUgdGhlbS4iIiIKLSAg
ICAgICAgaWYgbm90IG1vZC5ib2R5OgotICAgICAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgotICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgSW5zZXJ0IHNvbWUgc3BlY2lhbCBpbXBvcnRzIGF0
IHRoZSB0b3Agb2YgdGhlIG1vZHVsZSBidXQgYWZ0ZXIgYW55Ci0gICAgICAgICMgZG9jc3RyaW5n
cyBhbmQgX19mdXR1cmVfXyBpbXBvcnRzLgotICAgICAgICBhbGlhc2VzID0gW2FzdC5hbGlhcyhw
eS5idWlsdGluLmJ1aWx0aW5zLl9fbmFtZV9fLCAiQHB5X2J1aWx0aW5zIiksCi0gICAgICAgICAg
ICAgICAgICAgYXN0LmFsaWFzKCJfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlIiwgIkBweXRlc3Rf
YXIiKV0KLSAgICAgICAgZG9jID0gZ2V0YXR0cihtb2QsICJkb2NzdHJpbmciLCBOb25lKQotICAg
ICAgICBleHBlY3RfZG9jc3RyaW5nID0gZG9jIGlzIE5vbmUKLSAgICAgICAgaWYgZG9jIGlzIG5v
dCBOb25lIGFuZCBzZWxmLmlzX3Jld3JpdGVfZGlzYWJsZWQoZG9jKToKLSAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBwb3MgPSAwCi0gICAgICAgIGxpbmVubyA9IDEKLSAgICAgICAgZm9yIGl0
ZW0gaW4gbW9kLmJvZHk6Ci0gICAgICAgICAgICBpZiAoZXhwZWN0X2RvY3N0cmluZyBhbmQgaXNp
bnN0YW5jZShpdGVtLCBhc3QuRXhwcikgYW5kCi0gICAgICAgICAgICAgICAgICAgIGlzaW5zdGFu
Y2UoaXRlbS52YWx1ZSwgYXN0LlN0cikpOgotICAgICAgICAgICAgICAgIGRvYyA9IGl0ZW0udmFs
dWUucwotICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfcmV3cml0ZV9kaXNhYmxlZChkb2MpOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBleHBlY3RfZG9jc3Ry
aW5nID0gRmFsc2UKLSAgICAgICAgICAgIGVsaWYgKG5vdCBpc2luc3RhbmNlKGl0ZW0sIGFzdC5J
bXBvcnRGcm9tKSBvciBpdGVtLmxldmVsID4gMCBvcgotICAgICAgICAgICAgICAgICAgaXRlbS5t
b2R1bGUgIT0gIl9fZnV0dXJlX18iKToKLSAgICAgICAgICAgICAgICBsaW5lbm8gPSBpdGVtLmxp
bmVubwotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgKz0gMQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgbGluZW5vID0gaXRlbS5saW5lbm8KLSAgICAgICAgaW1wb3J0
cyA9IFthc3QuSW1wb3J0KFthbGlhc10sIGxpbmVubz1saW5lbm8sIGNvbF9vZmZzZXQ9MCkKLSAg
ICAgICAgICAgICAgICAgICBmb3IgYWxpYXMgaW4gYWxpYXNlc10KLSAgICAgICAgbW9kLmJvZHlb
cG9zOnBvc10gPSBpbXBvcnRzCi0gICAgICAgICMgQ29sbGVjdCBhc3NlcnRzLgotICAgICAgICBu
b2RlcyA9IFttb2RdCi0gICAgICAgIHdoaWxlIG5vZGVzOgotICAgICAgICAgICAgbm9kZSA9IG5v
ZGVzLnBvcCgpCi0gICAgICAgICAgICBmb3IgbmFtZSwgZmllbGQgaW4gYXN0Lml0ZXJfZmllbGRz
KG5vZGUpOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmllbGQsIGxpc3QpOgotICAg
ICAgICAgICAgICAgICAgICBuZXcgPSBbXQotICAgICAgICAgICAgICAgICAgICBmb3IgaSwgY2hp
bGQgaW4gZW51bWVyYXRlKGZpZWxkKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoY2hpbGQsIGFzdC5Bc3NlcnQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
VHJhbnNmb3JtIGFzc2VydC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcuZXh0ZW5k
KHNlbGYudmlzaXQoY2hpbGQpKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXcuYXBwZW5kKGNoaWxkKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIGFzdC5BU1QpOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQoY2hpbGQpCi0gICAgICAgICAgICAgICAg
ICAgIHNldGF0dHIobm9kZSwgbmFtZSwgbmV3KQotICAgICAgICAgICAgICAgIGVsaWYgKGlzaW5z
dGFuY2UoZmllbGQsIGFzdC5BU1QpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qg
cmVjdXJzZSBpbnRvIGV4cHJlc3Npb25zIGFzIHRoZXkgY2FuJ3QgY29udGFpbgotICAgICAgICAg
ICAgICAgICAgICAgICMgYXNzZXJ0cy4KLSAgICAgICAgICAgICAgICAgICAgICBub3QgaXNpbnN0
YW5jZShmaWVsZCwgYXN0LmV4cHIpKToKLSAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KGZpZWxkKQotCi0gICAgZGVmIGlzX3Jld3JpdGVfZGlzYWJsZWQoc2VsZiwgZG9jc3RyaW5nKToK
LSAgICAgICAgcmV0dXJuICJQWVRFU1RfRE9OVF9SRVdSSVRFIiBpbiBkb2NzdHJpbmcKLQotICAg
IGRlZiB2YXJpYWJsZShzZWxmKToKLSAgICAgICAgIiIiR2V0IGEgbmV3IHZhcmlhYmxlLiIiIgot
ICAgICAgICAjIFVzZSBhIGNoYXJhY3RlciBpbnZhbGlkIGluIHB5dGhvbiBpZGVudGlmaWVycyB0
byBhdm9pZCBjbGFzaGluZy4KLSAgICAgICAgbmFtZSA9ICJAcHlfYXNzZXJ0IiArIHN0cihuZXh0
KHNlbGYudmFyaWFibGVfY291bnRlcikpCi0gICAgICAgIHNlbGYudmFyaWFibGVzLmFwcGVuZChu
YW1lKQotICAgICAgICByZXR1cm4gbmFtZQotCi0gICAgZGVmIGFzc2lnbihzZWxmLCBleHByKToK
LSAgICAgICAgIiIiR2l2ZSAqZXhwciogYSBuYW1lLiIiIgotICAgICAgICBuYW1lID0gc2VsZi52
YXJpYWJsZSgpCi0gICAgICAgIHNlbGYuc3RhdGVtZW50cy5hcHBlbmQoYXN0LkFzc2lnbihbYXN0
Lk5hbWUobmFtZSwgYXN0LlN0b3JlKCkpXSwgZXhwcikpCi0gICAgICAgIHJldHVybiBhc3QuTmFt
ZShuYW1lLCBhc3QuTG9hZCgpKQotCi0gICAgZGVmIGRpc3BsYXkoc2VsZiwgZXhwcik6Ci0gICAg
ICAgICIiIkNhbGwgcHkuaW8uc2FmZXJlcHIgb24gdGhlIGV4cHJlc3Npb24uIiIiCi0gICAgICAg
IHJldHVybiBzZWxmLmhlbHBlcigic2FmZXJlcHIiLCBleHByKQotCi0gICAgZGVmIGhlbHBlcihz
ZWxmLCBuYW1lLCAqYXJncyk6Ci0gICAgICAgICIiIkNhbGwgYSBoZWxwZXIgaW4gdGhpcyBtb2R1
bGUuIiIiCi0gICAgICAgIHB5X25hbWUgPSBhc3QuTmFtZSgiQHB5dGVzdF9hciIsIGFzdC5Mb2Fk
KCkpCi0gICAgICAgIGF0dHIgPSBhc3QuQXR0cmlidXRlKHB5X25hbWUsICJfIiArIG5hbWUsIGFz
dC5Mb2FkKCkpCi0gICAgICAgIHJldHVybiBhc3RfQ2FsbChhdHRyLCBsaXN0KGFyZ3MpLCBbXSkK
LQotICAgIGRlZiBidWlsdGluKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGJ1
aWx0aW4gY2FsbGVkICpuYW1lKi4iIiIKLSAgICAgICAgYnVpbHRpbl9uYW1lID0gYXN0Lk5hbWUo
IkBweV9idWlsdGlucyIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIHJldHVybiBhc3QuQXR0cmlidXRl
KGJ1aWx0aW5fbmFtZSwgbmFtZSwgYXN0LkxvYWQoKSkKLQotICAgIGRlZiBleHBsYW5hdGlvbl9w
YXJhbShzZWxmLCBleHByKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbmV3IG5hbWVkICUtZm9ybWF0
dGluZyBwbGFjZWhvbGRlciBmb3IgZXhwci4KLQotICAgICAgICBUaGlzIGNyZWF0ZXMgYSAlLWZv
cm1hdHRpbmcgcGxhY2Vob2xkZXIgZm9yIGV4cHIgaW4gdGhlCi0gICAgICAgIGN1cnJlbnQgZm9y
bWF0dGluZyBjb250ZXh0LCBlLmcuIGBgJShweTApc2BgLiAgVGhlIHBsYWNlaG9sZGVyCi0gICAg
ICAgIGFuZCBleHByIGFyZSBwbGFjZWQgaW4gdGhlIGN1cnJlbnQgZm9ybWF0IGNvbnRleHQgc28g
dGhhdCBpdAotICAgICAgICBjYW4gYmUgdXNlZCBvbiB0aGUgbmV4dCBjYWxsIHRvIC5wb3BfZm9y
bWF0X2NvbnRleHQoKS4KLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlY2lmaWVyID0gInB5IiAr
IHN0cihuZXh0KHNlbGYudmFyaWFibGVfY291bnRlcikpCi0gICAgICAgIHNlbGYuZXhwbGFuYXRp
b25fc3BlY2lmaWVyc1tzcGVjaWZpZXJdID0gZXhwcgotICAgICAgICByZXR1cm4gIiUoIiArIHNw
ZWNpZmllciArICIpcyIKLQotICAgIGRlZiBwdXNoX2Zvcm1hdF9jb250ZXh0KHNlbGYpOgotICAg
ICAgICAiIiJDcmVhdGUgYSBuZXcgZm9ybWF0dGluZyBjb250ZXh0LgotCi0gICAgICAgIFRoZSBm
b3JtYXQgY29udGV4dCBpcyB1c2VkIGZvciB3aGVuIGFuIGV4cGxhbmF0aW9uIHdhbnRzIHRvCi0g
ICAgICAgIGhhdmUgYSB2YXJpYWJsZSB2YWx1ZSBmb3JtYXR0ZWQgaW4gdGhlIGFzc2VydGlvbiBt
ZXNzYWdlLiAgSW4KLSAgICAgICAgdGhpcyBjYXNlIHRoZSB2YWx1ZSByZXF1aXJlZCBjYW4gYmUg
YWRkZWQgdXNpbmcKLSAgICAgICAgLmV4cGxhbmF0aW9uX3BhcmFtKCkuICBGaW5hbGx5IC5wb3Bf
Zm9ybWF0X2NvbnRleHQoKSBpcyB1c2VkCi0gICAgICAgIHRvIGZvcm1hdCBhIHN0cmluZyBvZiAl
LWZvcm1hdHRlZCB2YWx1ZXMgYXMgYWRkZWQgYnkKLSAgICAgICAgLmV4cGxhbmF0aW9uX3BhcmFt
KCkuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVycyA9
IHt9Ci0gICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVy
cykKLQotICAgIGRlZiBwb3BfZm9ybWF0X2NvbnRleHQoc2VsZiwgZXhwbF9leHByKToKLSAgICAg
ICAgIiIiRm9ybWF0IHRoZSAlLWZvcm1hdHRlZCBzdHJpbmcgd2l0aCBjdXJyZW50IGZvcm1hdCBj
b250ZXh0LgotCi0gICAgICAgIFRoZSBleHBsX2V4cHIgc2hvdWxkIGJlIGFuIGFzdC5TdHIgaW5z
dGFuY2UgY29uc3RydWN0ZWQgZnJvbQotICAgICAgICB0aGUgJS1wbGFjZWhvbGRlcnMgY3JlYXRl
ZCBieSAuZXhwbGFuYXRpb25fcGFyYW0oKS4gIFRoaXMgd2lsbAotICAgICAgICBhZGQgdGhlIHJl
cXVpcmVkIGNvZGUgdG8gZm9ybWF0IHNhaWQgc3RyaW5nIHRvIC5vbl9mYWlsdXJlIGFuZAotICAg
ICAgICByZXR1cm4gdGhlIGFzdC5OYW1lIGluc3RhbmNlIG9mIHRoZSBmb3JtYXR0ZWQgc3RyaW5n
LgotCi0gICAgICAgICIiIgotICAgICAgICBjdXJyZW50ID0gc2VsZi5zdGFjay5wb3AoKQotICAg
ICAgICBpZiBzZWxmLnN0YWNrOgotICAgICAgICAgICAgc2VsZi5leHBsYW5hdGlvbl9zcGVjaWZp
ZXJzID0gc2VsZi5zdGFja1stMV0KLSAgICAgICAga2V5cyA9IFthc3QuU3RyKGtleSkgZm9yIGtl
eSBpbiBjdXJyZW50LmtleXMoKV0KLSAgICAgICAgZm9ybWF0X2RpY3QgPSBhc3QuRGljdChrZXlz
LCBsaXN0KGN1cnJlbnQudmFsdWVzKCkpKQotICAgICAgICBmb3JtID0gYXN0LkJpbk9wKGV4cGxf
ZXhwciwgYXN0Lk1vZCgpLCBmb3JtYXRfZGljdCkKLSAgICAgICAgbmFtZSA9ICJAcHlfZm9ybWF0
IiArIHN0cihuZXh0KHNlbGYudmFyaWFibGVfY291bnRlcikpCi0gICAgICAgIHNlbGYub25fZmFp
bHVyZS5hcHBlbmQoYXN0LkFzc2lnbihbYXN0Lk5hbWUobmFtZSwgYXN0LlN0b3JlKCkpXSwgZm9y
bSkpCi0gICAgICAgIHJldHVybiBhc3QuTmFtZShuYW1lLCBhc3QuTG9hZCgpKQotCi0gICAgZGVm
IGdlbmVyaWNfdmlzaXQoc2VsZiwgbm9kZSk6Ci0gICAgICAgICIiIkhhbmRsZSBleHByZXNzaW9u
cyB3ZSBkb24ndCBoYXZlIGN1c3RvbSBjb2RlIGZvci4iIiIKLSAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2Uobm9kZSwgYXN0LmV4cHIpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKG5vZGUpCi0g
ICAgICAgIHJldHVybiByZXMsIHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oc2VsZi5kaXNwbGF5KHJl
cykpCi0KLSAgICBkZWYgdmlzaXRfQXNzZXJ0KHNlbGYsIGFzc2VydF8pOgotICAgICAgICAiIiJS
ZXR1cm4gdGhlIEFTVCBzdGF0ZW1lbnRzIHRvIHJlcGxhY2UgdGhlIGFzdC5Bc3NlcnQgaW5zdGFu
Y2UuCi0KLSAgICAgICAgVGhpcyByZXdyaXRlcyB0aGUgdGVzdCBvZiBhbiBhc3NlcnRpb24gdG8g
cHJvdmlkZQotICAgICAgICBpbnRlcm1lZGlhdGUgdmFsdWVzIGFuZCByZXBsYWNlIGl0IHdpdGgg
YW4gaWYgc3RhdGVtZW50IHdoaWNoCi0gICAgICAgIHJhaXNlcyBhbiBhc3NlcnRpb24gZXJyb3Ig
d2l0aCBhIGRldGFpbGVkIGV4cGxhbmF0aW9uIGluIGNhc2UKLSAgICAgICAgdGhlIGV4cHJlc3Np
b24gaXMgZmFsc2UuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYXNzZXJ0
Xy50ZXN0LCBhc3QuVHVwbGUpIGFuZCBzZWxmLmNvbmZpZyBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGZzbG9jYXRpb24gPSAoc2VsZi5tb2R1bGVfcGF0aCwgYXNzZXJ0Xy5saW5lbm8pCi0gICAg
ICAgICAgICBzZWxmLmNvbmZpZy53YXJuKCdSMScsICdhc3NlcnRpb24gaXMgYWx3YXlzIHRydWUs
IHBlcmhhcHMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtb3ZlIHBhcmVudGhl
c2VzPycsIGZzbG9jYXRpb249ZnNsb2NhdGlvbikKLSAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0g
W10KLSAgICAgICAgc2VsZi52YXJpYWJsZXMgPSBbXQotICAgICAgICBzZWxmLnZhcmlhYmxlX2Nv
dW50ZXIgPSBpdGVydG9vbHMuY291bnQoKQotICAgICAgICBzZWxmLnN0YWNrID0gW10KLSAgICAg
ICAgc2VsZi5vbl9mYWlsdXJlID0gW10KLSAgICAgICAgc2VsZi5wdXNoX2Zvcm1hdF9jb250ZXh0
KCkKLSAgICAgICAgIyBSZXdyaXRlIGFzc2VydCBpbnRvIGEgYnVuY2ggb2Ygc3RhdGVtZW50cy4K
LSAgICAgICAgdG9wX2NvbmRpdGlvbiwgZXhwbGFuYXRpb24gPSBzZWxmLnZpc2l0KGFzc2VydF8u
dGVzdCkKLSAgICAgICAgIyBDcmVhdGUgZmFpbHVyZSBtZXNzYWdlLgotICAgICAgICBib2R5ID0g
c2VsZi5vbl9mYWlsdXJlCi0gICAgICAgIG5lZ2F0aW9uID0gYXN0LlVuYXJ5T3AoYXN0Lk5vdCgp
LCB0b3BfY29uZGl0aW9uKQotICAgICAgICBzZWxmLnN0YXRlbWVudHMuYXBwZW5kKGFzdC5JZihu
ZWdhdGlvbiwgYm9keSwgW10pKQotICAgICAgICBpZiBhc3NlcnRfLm1zZzoKLSAgICAgICAgICAg
IGFzc2VydG1zZyA9IHNlbGYuaGVscGVyKCdmb3JtYXRfYXNzZXJ0bXNnJywgYXNzZXJ0Xy5tc2cp
Ci0gICAgICAgICAgICBleHBsYW5hdGlvbiA9ICJcbj5hc3NlcnQgIiArIGV4cGxhbmF0aW9uCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnRtc2cgPSBhc3QuU3RyKCIiKQotICAgICAg
ICAgICAgZXhwbGFuYXRpb24gPSAiYXNzZXJ0ICIgKyBleHBsYW5hdGlvbgotICAgICAgICB0ZW1w
bGF0ZSA9IGFzdC5CaW5PcChhc3NlcnRtc2csIGFzdC5BZGQoKSwgYXN0LlN0cihleHBsYW5hdGlv
bikpCi0gICAgICAgIG1zZyA9IHNlbGYucG9wX2Zvcm1hdF9jb250ZXh0KHRlbXBsYXRlKQotICAg
ICAgICBmbXQgPSBzZWxmLmhlbHBlcigiZm9ybWF0X2V4cGxhbmF0aW9uIiwgbXNnKQotICAgICAg
ICBlcnJfbmFtZSA9IGFzdC5OYW1lKCJBc3NlcnRpb25FcnJvciIsIGFzdC5Mb2FkKCkpCi0gICAg
ICAgIGV4YyA9IGFzdF9DYWxsKGVycl9uYW1lLCBbZm10XSwgW10pCi0gICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm9bMF0gPj0gMzoKLSAgICAgICAgICAgIHJhaXNlXyA9IGFzdC5SYWlzZShleGMs
IE5vbmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZV8gPSBhc3QuUmFpc2UoZXhj
LCBOb25lLCBOb25lKQotICAgICAgICBib2R5LmFwcGVuZChyYWlzZV8pCi0gICAgICAgICMgQ2xl
YXIgdGVtcG9yYXJ5IHZhcmlhYmxlcyBieSBzZXR0aW5nIHRoZW0gdG8gTm9uZS4KLSAgICAgICAg
aWYgc2VsZi52YXJpYWJsZXM6Ci0gICAgICAgICAgICB2YXJpYWJsZXMgPSBbYXN0Lk5hbWUobmFt
ZSwgYXN0LlN0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2Vs
Zi52YXJpYWJsZXNdCi0gICAgICAgICAgICBjbGVhciA9IGFzdC5Bc3NpZ24odmFyaWFibGVzLCBf
TmFtZUNvbnN0YW50KE5vbmUpKQotICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChj
bGVhcikKLSAgICAgICAgIyBGaXggbGluZSBudW1iZXJzLgotICAgICAgICBmb3Igc3RtdCBpbiBz
ZWxmLnN0YXRlbWVudHM6Ci0gICAgICAgICAgICBzZXRfbG9jYXRpb24oc3RtdCwgYXNzZXJ0Xy5s
aW5lbm8sIGFzc2VydF8uY29sX29mZnNldCkKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RhdGVtZW50
cwotCi0gICAgZGVmIHZpc2l0X05hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgICMgRGlzcGxheSB0
aGUgcmVwciBvZiB0aGUgbmFtZSBpZiBpdCdzIGEgbG9jYWwgdmFyaWFibGUgb3IKLSAgICAgICAg
IyBfc2hvdWxkX3JlcHJfZ2xvYmFsX25hbWUoKSB0aGlua3MgaXQncyBhY2NlcHRhYmxlLgotICAg
ICAgICBsb2NzID0gYXN0X0NhbGwoc2VsZi5idWlsdGluKCJsb2NhbHMiKSwgW10sIFtdKQotICAg
ICAgICBpbmxvY3MgPSBhc3QuQ29tcGFyZShhc3QuU3RyKG5hbWUuaWQpLCBbYXN0LkluKCldLCBb
bG9jc10pCi0gICAgICAgIGRvcmVwciA9IHNlbGYuaGVscGVyKCJzaG91bGRfcmVwcl9nbG9iYWxf
bmFtZSIsIG5hbWUpCi0gICAgICAgIHRlc3QgPSBhc3QuQm9vbE9wKGFzdC5PcigpLCBbaW5sb2Nz
LCBkb3JlcHJdKQotICAgICAgICBleHByID0gYXN0LklmRXhwKHRlc3QsIHNlbGYuZGlzcGxheShu
YW1lKSwgYXN0LlN0cihuYW1lLmlkKSkKLSAgICAgICAgcmV0dXJuIG5hbWUsIHNlbGYuZXhwbGFu
YXRpb25fcGFyYW0oZXhwcikKLQotICAgIGRlZiB2aXNpdF9Cb29sT3Aoc2VsZiwgYm9vbG9wKToK
LSAgICAgICAgcmVzX3ZhciA9IHNlbGYudmFyaWFibGUoKQotICAgICAgICBleHBsX2xpc3QgPSBz
ZWxmLmFzc2lnbihhc3QuTGlzdChbXSwgYXN0LkxvYWQoKSkpCi0gICAgICAgIGFwcCA9IGFzdC5B
dHRyaWJ1dGUoZXhwbF9saXN0LCAiYXBwZW5kIiwgYXN0LkxvYWQoKSkKLSAgICAgICAgaXNfb3Ig
PSBpbnQoaXNpbnN0YW5jZShib29sb3Aub3AsIGFzdC5PcikpCi0gICAgICAgIGJvZHkgPSBzYXZl
ID0gc2VsZi5zdGF0ZW1lbnRzCi0gICAgICAgIGZhaWxfc2F2ZSA9IHNlbGYub25fZmFpbHVyZQot
ICAgICAgICBsZXZlbHMgPSBsZW4oYm9vbG9wLnZhbHVlcykgLSAxCi0gICAgICAgIHNlbGYucHVz
aF9mb3JtYXRfY29udGV4dCgpCi0gICAgICAgICMgUHJvY2VzcyBlYWNoIG9wZXJhbmQsIHNob3J0
LWNpcmN1dGluZyBpZiBuZWVkZWQuCi0gICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShib29s
b3AudmFsdWVzKToKLSAgICAgICAgICAgIGlmIGk6Ci0gICAgICAgICAgICAgICAgZmFpbF9pbm5l
ciA9IFtdCi0gICAgICAgICAgICAgICAgIyBjb25kIGlzIHNldCBpbiBhIHByaW9yIGxvb3AgaXRl
cmF0aW9uIGJlbG93Ci0gICAgICAgICAgICAgICAgc2VsZi5vbl9mYWlsdXJlLmFwcGVuZChhc3Qu
SWYoY29uZCwgZmFpbF9pbm5lciwgW10pKSAgIyBub3FhCi0gICAgICAgICAgICAgICAgc2VsZi5v
bl9mYWlsdXJlID0gZmFpbF9pbm5lcgotICAgICAgICAgICAgc2VsZi5wdXNoX2Zvcm1hdF9jb250
ZXh0KCkKLSAgICAgICAgICAgIHJlcywgZXhwbCA9IHNlbGYudmlzaXQodikKLSAgICAgICAgICAg
IGJvZHkuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5OYW1lKHJlc192YXIsIGFzdC5TdG9yZSgpKV0s
IHJlcykpCi0gICAgICAgICAgICBleHBsX2Zvcm1hdCA9IHNlbGYucG9wX2Zvcm1hdF9jb250ZXh0
KGFzdC5TdHIoZXhwbCkpCi0gICAgICAgICAgICBjYWxsID0gYXN0X0NhbGwoYXBwLCBbZXhwbF9m
b3JtYXRdLCBbXSkKLSAgICAgICAgICAgIHNlbGYub25fZmFpbHVyZS5hcHBlbmQoYXN0LkV4cHIo
Y2FsbCkpCi0gICAgICAgICAgICBpZiBpIDwgbGV2ZWxzOgotICAgICAgICAgICAgICAgIGNvbmQg
PSByZXMKLSAgICAgICAgICAgICAgICBpZiBpc19vcjoKLSAgICAgICAgICAgICAgICAgICAgY29u
ZCA9IGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgY29uZCkKLSAgICAgICAgICAgICAgICBpbm5lciA9
IFtdCi0gICAgICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuSWYoY29uZCwg
aW5uZXIsIFtdKSkKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXRlbWVudHMgPSBib2R5ID0gaW5u
ZXIKLSAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0gc2F2ZQotICAgICAgICBzZWxmLm9uX2ZhaWx1
cmUgPSBmYWlsX3NhdmUKLSAgICAgICAgZXhwbF90ZW1wbGF0ZSA9IHNlbGYuaGVscGVyKCJmb3Jt
YXRfYm9vbG9wIiwgZXhwbF9saXN0LCBhc3QuTnVtKGlzX29yKSkKLSAgICAgICAgZXhwbCA9IHNl
bGYucG9wX2Zvcm1hdF9jb250ZXh0KGV4cGxfdGVtcGxhdGUpCi0gICAgICAgIHJldHVybiBhc3Qu
TmFtZShyZXNfdmFyLCBhc3QuTG9hZCgpKSwgc2VsZi5leHBsYW5hdGlvbl9wYXJhbShleHBsKQot
Ci0gICAgZGVmIHZpc2l0X1VuYXJ5T3Aoc2VsZiwgdW5hcnkpOgotICAgICAgICBwYXR0ZXJuID0g
dW5hcnlfbWFwW3VuYXJ5Lm9wLl9fY2xhc3NfX10KLSAgICAgICAgb3BlcmFuZF9yZXMsIG9wZXJh
bmRfZXhwbCA9IHNlbGYudmlzaXQodW5hcnkub3BlcmFuZCkKLSAgICAgICAgcmVzID0gc2VsZi5h
c3NpZ24oYXN0LlVuYXJ5T3AodW5hcnkub3AsIG9wZXJhbmRfcmVzKSkKLSAgICAgICAgcmV0dXJu
IHJlcywgcGF0dGVybiAlIChvcGVyYW5kX2V4cGwsKQotCi0gICAgZGVmIHZpc2l0X0Jpbk9wKHNl
bGYsIGJpbm9wKToKLSAgICAgICAgc3ltYm9sID0gYmlub3BfbWFwW2Jpbm9wLm9wLl9fY2xhc3Nf
X10KLSAgICAgICAgbGVmdF9leHByLCBsZWZ0X2V4cGwgPSBzZWxmLnZpc2l0KGJpbm9wLmxlZnQp
Ci0gICAgICAgIHJpZ2h0X2V4cHIsIHJpZ2h0X2V4cGwgPSBzZWxmLnZpc2l0KGJpbm9wLnJpZ2h0
KQotICAgICAgICBleHBsYW5hdGlvbiA9ICIoJXMgJXMgJXMpIiAlIChsZWZ0X2V4cGwsIHN5bWJv
bCwgcmlnaHRfZXhwbCkKLSAgICAgICAgcmVzID0gc2VsZi5hc3NpZ24oYXN0LkJpbk9wKGxlZnRf
ZXhwciwgYmlub3Aub3AsIHJpZ2h0X2V4cHIpKQotICAgICAgICByZXR1cm4gcmVzLCBleHBsYW5h
dGlvbgotCi0gICAgZGVmIHZpc2l0X0NhbGxfMzUoc2VsZiwgY2FsbCk6Ci0gICAgICAgICIiIgot
ICAgICAgICB2aXNpdCBgYXN0LkNhbGxgIG5vZGVzIG9uIFB5dGhvbjMuNSBhbmQgYWZ0ZXIKLSAg
ICAgICAgIiIiCi0gICAgICAgIG5ld19mdW5jLCBmdW5jX2V4cGwgPSBzZWxmLnZpc2l0KGNhbGwu
ZnVuYykKLSAgICAgICAgYXJnX2V4cGxzID0gW10KLSAgICAgICAgbmV3X2FyZ3MgPSBbXQotICAg
ICAgICBuZXdfa3dhcmdzID0gW10KLSAgICAgICAgZm9yIGFyZyBpbiBjYWxsLmFyZ3M6Ci0gICAg
ICAgICAgICByZXMsIGV4cGwgPSBzZWxmLnZpc2l0KGFyZykKLSAgICAgICAgICAgIGFyZ19leHBs
cy5hcHBlbmQoZXhwbCkKLSAgICAgICAgICAgIG5ld19hcmdzLmFwcGVuZChyZXMpCi0gICAgICAg
IGZvciBrZXl3b3JkIGluIGNhbGwua2V5d29yZHM6Ci0gICAgICAgICAgICByZXMsIGV4cGwgPSBz
ZWxmLnZpc2l0KGtleXdvcmQudmFsdWUpCi0gICAgICAgICAgICBuZXdfa3dhcmdzLmFwcGVuZChh
c3Qua2V5d29yZChrZXl3b3JkLmFyZywgcmVzKSkKLSAgICAgICAgICAgIGlmIGtleXdvcmQuYXJn
OgotICAgICAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQoa2V5d29yZC5hcmcgKyAiPSIgKyBl
eHBsKQotICAgICAgICAgICAgZWxzZTogICMgKiphcmdzIGhhdmUgYGFyZ2Aga2V5d29yZHMgd2l0
aCBhbiAuYXJnIG9mIE5vbmUKLSAgICAgICAgICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKCIqKiIg
KyBleHBsKQotCi0gICAgICAgIGV4cGwgPSAiJXMoJXMpIiAlIChmdW5jX2V4cGwsICcsICcuam9p
bihhcmdfZXhwbHMpKQotICAgICAgICBuZXdfY2FsbCA9IGFzdC5DYWxsKG5ld19mdW5jLCBuZXdf
YXJncywgbmV3X2t3YXJncykKLSAgICAgICAgcmVzID0gc2VsZi5hc3NpZ24obmV3X2NhbGwpCi0g
ICAgICAgIHJlc19leHBsID0gc2VsZi5leHBsYW5hdGlvbl9wYXJhbShzZWxmLmRpc3BsYXkocmVz
KSkKLSAgICAgICAgb3V0ZXJfZXhwbCA9ICIlc1xueyVzID0gJXNcbn0iICUgKHJlc19leHBsLCBy
ZXNfZXhwbCwgZXhwbCkKLSAgICAgICAgcmV0dXJuIHJlcywgb3V0ZXJfZXhwbAotCi0gICAgZGVm
IHZpc2l0X1N0YXJyZWQoc2VsZiwgc3RhcnJlZCk6Ci0gICAgICAgICMgRnJvbSBQeXRob24gMy41
LCBhIFN0YXJyZWQgbm9kZSBjYW4gYXBwZWFyIGluIGEgZnVuY3Rpb24gY2FsbAotICAgICAgICBy
ZXMsIGV4cGwgPSBzZWxmLnZpc2l0KHN0YXJyZWQudmFsdWUpCi0gICAgICAgIHJldHVybiBzdGFy
cmVkLCAnKicgKyBleHBsCi0KLSAgICBkZWYgdmlzaXRfQ2FsbF9sZWdhY3koc2VsZiwgY2FsbCk6
Ci0gICAgICAgICIiIgotICAgICAgICB2aXNpdCBgYXN0LkNhbGwgbm9kZXMgb24gMy40IGFuZCBi
ZWxvd2AKLSAgICAgICAgIiIiCi0gICAgICAgIG5ld19mdW5jLCBmdW5jX2V4cGwgPSBzZWxmLnZp
c2l0KGNhbGwuZnVuYykKLSAgICAgICAgYXJnX2V4cGxzID0gW10KLSAgICAgICAgbmV3X2FyZ3Mg
PSBbXQotICAgICAgICBuZXdfa3dhcmdzID0gW10KLSAgICAgICAgbmV3X3N0YXIgPSBuZXdfa3dh
cmcgPSBOb25lCi0gICAgICAgIGZvciBhcmcgaW4gY2FsbC5hcmdzOgotICAgICAgICAgICAgcmVz
LCBleHBsID0gc2VsZi52aXNpdChhcmcpCi0gICAgICAgICAgICBuZXdfYXJncy5hcHBlbmQocmVz
KQotICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZChleHBsKQotICAgICAgICBmb3Iga2V5d29y
ZCBpbiBjYWxsLmtleXdvcmRzOgotICAgICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChr
ZXl3b3JkLnZhbHVlKQotICAgICAgICAgICAgbmV3X2t3YXJncy5hcHBlbmQoYXN0LmtleXdvcmQo
a2V5d29yZC5hcmcsIHJlcykpCi0gICAgICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKGtleXdvcmQu
YXJnICsgIj0iICsgZXhwbCkKLSAgICAgICAgaWYgY2FsbC5zdGFyYXJnczoKLSAgICAgICAgICAg
IG5ld19zdGFyLCBleHBsID0gc2VsZi52aXNpdChjYWxsLnN0YXJhcmdzKQotICAgICAgICAgICAg
YXJnX2V4cGxzLmFwcGVuZCgiKiIgKyBleHBsKQotICAgICAgICBpZiBjYWxsLmt3YXJnczoKLSAg
ICAgICAgICAgIG5ld19rd2FyZywgZXhwbCA9IHNlbGYudmlzaXQoY2FsbC5rd2FyZ3MpCi0gICAg
ICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKCIqKiIgKyBleHBsKQotICAgICAgICBleHBsID0gIiVz
KCVzKSIgJSAoZnVuY19leHBsLCAnLCAnLmpvaW4oYXJnX2V4cGxzKSkKLSAgICAgICAgbmV3X2Nh
bGwgPSBhc3QuQ2FsbChuZXdfZnVuYywgbmV3X2FyZ3MsIG5ld19rd2FyZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3X3N0YXIsIG5ld19rd2FyZykKLSAgICAgICAgcmVzID0gc2Vs
Zi5hc3NpZ24obmV3X2NhbGwpCi0gICAgICAgIHJlc19leHBsID0gc2VsZi5leHBsYW5hdGlvbl9w
YXJhbShzZWxmLmRpc3BsYXkocmVzKSkKLSAgICAgICAgb3V0ZXJfZXhwbCA9ICIlc1xueyVzID0g
JXNcbn0iICUgKHJlc19leHBsLCByZXNfZXhwbCwgZXhwbCkKLSAgICAgICAgcmV0dXJuIHJlcywg
b3V0ZXJfZXhwbAotCi0gICAgIyBhc3QuQ2FsbCBzaWduYXR1cmUgY2hhbmdlZCBvbiAzLjUsCi0g
ICAgIyBjb25kaXRpb25hbGx5IGNoYW5nZSAgd2hpY2ggbWV0aG9kcyBpcyBuYW1lZAotICAgICMg
dmlzaXRfQ2FsbCBkZXBlbmRpbmcgb24gUHl0aG9uIHZlcnNpb24KLSAgICBpZiBzeXMudmVyc2lv
bl9pbmZvID49ICgzLCA1KToKLSAgICAgICAgdmlzaXRfQ2FsbCA9IHZpc2l0X0NhbGxfMzUKLSAg
ICBlbHNlOgotICAgICAgICB2aXNpdF9DYWxsID0gdmlzaXRfQ2FsbF9sZWdhY3kKLQotICAgIGRl
ZiB2aXNpdF9BdHRyaWJ1dGUoc2VsZiwgYXR0cik6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGF0dHIuY3R4LCBhc3QuTG9hZCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5nZW5lcmljX3Zp
c2l0KGF0dHIpCi0gICAgICAgIHZhbHVlLCB2YWx1ZV9leHBsID0gc2VsZi52aXNpdChhdHRyLnZh
bHVlKQotICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihhc3QuQXR0cmlidXRlKHZhbHVlLCBhdHRy
LmF0dHIsIGFzdC5Mb2FkKCkpKQotICAgICAgICByZXNfZXhwbCA9IHNlbGYuZXhwbGFuYXRpb25f
cGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAgIHBhdCA9ICIlc1xueyVzID0gJXMuJXNc
bn0iCi0gICAgICAgIGV4cGwgPSBwYXQgJSAocmVzX2V4cGwsIHJlc19leHBsLCB2YWx1ZV9leHBs
LCBhdHRyLmF0dHIpCi0gICAgICAgIHJldHVybiByZXMsIGV4cGwKLQotICAgIGRlZiB2aXNpdF9D
b21wYXJlKHNlbGYsIGNvbXApOgotICAgICAgICBzZWxmLnB1c2hfZm9ybWF0X2NvbnRleHQoKQot
ICAgICAgICBsZWZ0X3JlcywgbGVmdF9leHBsID0gc2VsZi52aXNpdChjb21wLmxlZnQpCi0gICAg
ICAgIGlmIGlzaW5zdGFuY2UoY29tcC5sZWZ0LCAoX2FzdC5Db21wYXJlLCBfYXN0LkJvb2xPcCkp
OgotICAgICAgICAgICAgbGVmdF9leHBsID0gIih7MH0pIi5mb3JtYXQobGVmdF9leHBsKQotICAg
ICAgICByZXNfdmFyaWFibGVzID0gW3NlbGYudmFyaWFibGUoKSBmb3IgaSBpbiByYW5nZShsZW4o
Y29tcC5vcHMpKV0KLSAgICAgICAgbG9hZF9uYW1lcyA9IFthc3QuTmFtZSh2LCBhc3QuTG9hZCgp
KSBmb3IgdiBpbiByZXNfdmFyaWFibGVzXQotICAgICAgICBzdG9yZV9uYW1lcyA9IFthc3QuTmFt
ZSh2LCBhc3QuU3RvcmUoKSkgZm9yIHYgaW4gcmVzX3ZhcmlhYmxlc10KLSAgICAgICAgaXQgPSB6
aXAocmFuZ2UobGVuKGNvbXAub3BzKSksIGNvbXAub3BzLCBjb21wLmNvbXBhcmF0b3JzKQotICAg
ICAgICBleHBscyA9IFtdCi0gICAgICAgIHN5bXMgPSBbXQotICAgICAgICByZXN1bHRzID0gW2xl
ZnRfcmVzXQotICAgICAgICBmb3IgaSwgb3AsIG5leHRfb3BlcmFuZCBpbiBpdDoKLSAgICAgICAg
ICAgIG5leHRfcmVzLCBuZXh0X2V4cGwgPSBzZWxmLnZpc2l0KG5leHRfb3BlcmFuZCkKLSAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UobmV4dF9vcGVyYW5kLCAoX2FzdC5Db21wYXJlLCBfYXN0LkJv
b2xPcCkpOgotICAgICAgICAgICAgICAgIG5leHRfZXhwbCA9ICIoezB9KSIuZm9ybWF0KG5leHRf
ZXhwbCkKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG5leHRfcmVzKQotICAgICAgICAgICAg
c3ltID0gYmlub3BfbWFwW29wLl9fY2xhc3NfX10KLSAgICAgICAgICAgIHN5bXMuYXBwZW5kKGFz
dC5TdHIoc3ltKSkKLSAgICAgICAgICAgIGV4cGwgPSAiJXMgJXMgJXMiICUgKGxlZnRfZXhwbCwg
c3ltLCBuZXh0X2V4cGwpCi0gICAgICAgICAgICBleHBscy5hcHBlbmQoYXN0LlN0cihleHBsKSkK
LSAgICAgICAgICAgIHJlc19leHByID0gYXN0LkNvbXBhcmUobGVmdF9yZXMsIFtvcF0sIFtuZXh0
X3Jlc10pCi0gICAgICAgICAgICBzZWxmLnN0YXRlbWVudHMuYXBwZW5kKGFzdC5Bc3NpZ24oW3N0
b3JlX25hbWVzW2ldXSwgcmVzX2V4cHIpKQotICAgICAgICAgICAgbGVmdF9yZXMsIGxlZnRfZXhw
bCA9IG5leHRfcmVzLCBuZXh0X2V4cGwKLSAgICAgICAgIyBVc2UgcHl0ZXN0LmFzc2VydGlvbi51
dGlsLl9yZXByY29tcGFyZSBpZiB0aGF0J3MgYXZhaWxhYmxlLgotICAgICAgICBleHBsX2NhbGwg
PSBzZWxmLmhlbHBlcigiY2FsbF9yZXByY29tcGFyZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFzdC5UdXBsZShzeW1zLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXN0LlR1cGxlKGxvYWRfbmFtZXMsIGFzdC5Mb2FkKCkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuVHVwbGUoZXhwbHMsIGFzdC5Mb2FkKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuVHVwbGUocmVzdWx0cywgYXN0Lkxv
YWQoKSkpCi0gICAgICAgIGlmIGxlbihjb21wLm9wcykgPiAxOgotICAgICAgICAgICAgcmVzID0g
YXN0LkJvb2xPcChhc3QuQW5kKCksIGxvYWRfbmFtZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICByZXMgPSBsb2FkX25hbWVzWzBdCi0gICAgICAgIHJldHVybiByZXMsIHNlbGYuZXhwbGFu
YXRpb25fcGFyYW0oc2VsZi5wb3BfZm9ybWF0X2NvbnRleHQoZXhwbF9jYWxsKSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJlZDEyZTJlNWE5Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAK
LSIiIgotVXRpbGl0aWVzIGZvciB0cnVuY2F0aW5nIGFzc2VydGlvbiBvdXRwdXQuCi0KLUN1cnJl
bnQgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gdHJ1bmNhdGUgYXNzZXJ0aW9uIGV4cGxhbmF0aW9u
cyBhdAotfjggdGVybWluYWwgbGluZXMsIHVubGVzcyBydW5uaW5nIGluICItdnYiIG1vZGUgb3Ig
cnVubmluZyBvbiBDSS4KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IG9zCi0KLWltcG9ydCBzaXgKLQot
Ci1ERUZBVUxUX01BWF9MSU5FUyA9IDgKLURFRkFVTFRfTUFYX0NIQVJTID0gOCAqIDgwCi1VU0FH
RV9NU0cgPSAidXNlICctdnYnIHRvIHNob3ciCi0KLQotZGVmIHRydW5jYXRlX2lmX3JlcXVpcmVk
KGV4cGxhbmF0aW9uLCBpdGVtLCBtYXhfbGVuZ3RoPU5vbmUpOgotICAgICIiIgotICAgIFRydW5j
YXRlIHRoaXMgYXNzZXJ0aW9uIGV4cGxhbmF0aW9uIGlmIHRoZSBnaXZlbiB0ZXN0IGl0ZW0gaXMg
ZWxpZ2libGUuCi0gICAgIiIiCi0gICAgaWYgX3Nob3VsZF90cnVuY2F0ZV9pdGVtKGl0ZW0pOgot
ICAgICAgICByZXR1cm4gX3RydW5jYXRlX2V4cGxhbmF0aW9uKGV4cGxhbmF0aW9uKQotICAgIHJl
dHVybiBleHBsYW5hdGlvbgotCi0KLWRlZiBfc2hvdWxkX3RydW5jYXRlX2l0ZW0oaXRlbSk6Ci0g
ICAgIiIiCi0gICAgV2hldGhlciBvciBub3QgdGhpcyB0ZXN0IGl0ZW0gaXMgZWxpZ2libGUgZm9y
IHRydW5jYXRpb24uCi0gICAgIiIiCi0gICAgdmVyYm9zZSA9IGl0ZW0uY29uZmlnLm9wdGlvbi52
ZXJib3NlCi0gICAgcmV0dXJuIHZlcmJvc2UgPCAyIGFuZCBub3QgX3J1bm5pbmdfb25fY2koKQot
Ci0KLWRlZiBfcnVubmluZ19vbl9jaSgpOgotICAgICIiIkNoZWNrIGlmIHdlJ3JlIGN1cnJlbnRs
eSBydW5uaW5nIG9uIGEgQ0kgc3lzdGVtLiIiIgotICAgIGVudl92YXJzID0gWydDSScsICdCVUlM
RF9OVU1CRVInXQotICAgIHJldHVybiBhbnkodmFyIGluIG9zLmVudmlyb24gZm9yIHZhciBpbiBl
bnZfdmFycykKLQotCi1kZWYgX3RydW5jYXRlX2V4cGxhbmF0aW9uKGlucHV0X2xpbmVzLCBtYXhf
bGluZXM9Tm9uZSwgbWF4X2NoYXJzPU5vbmUpOgotICAgICIiIgotICAgIFRydW5jYXRlIGdpdmVu
IGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IG1ha2VzIHVwIHRoZSBhc3NlcnRpb24gZXhwbGFuYXRpb24u
Ci0KLSAgICBUcnVuY2F0ZXMgdG8gZWl0aGVyIDggbGluZXMsIG9yIDY0MCBjaGFyYWN0ZXJzIC0g
d2hpY2hldmVyIHRoZSBpbnB1dCByZWFjaGVzCi0gICAgZmlyc3QuIFRoZSByZW1haW5pbmcgbGlu
ZXMgd2lsbCBiZSByZXBsYWNlZCBieSBhIHVzYWdlIG1lc3NhZ2UuCi0gICAgIiIiCi0KLSAgICBp
ZiBtYXhfbGluZXMgaXMgTm9uZToKLSAgICAgICAgbWF4X2xpbmVzID0gREVGQVVMVF9NQVhfTElO
RVMKLSAgICBpZiBtYXhfY2hhcnMgaXMgTm9uZToKLSAgICAgICAgbWF4X2NoYXJzID0gREVGQVVM
VF9NQVhfQ0hBUlMKLQotICAgICMgQ2hlY2sgaWYgdHJ1bmNhdGlvbiByZXF1aXJlZAotICAgIGlu
cHV0X2NoYXJfY291bnQgPSBsZW4oIiIuam9pbihpbnB1dF9saW5lcykpCi0gICAgaWYgbGVuKGlu
cHV0X2xpbmVzKSA8PSBtYXhfbGluZXMgYW5kIGlucHV0X2NoYXJfY291bnQgPD0gbWF4X2NoYXJz
OgotICAgICAgICByZXR1cm4gaW5wdXRfbGluZXMKLQotICAgICMgVHJ1bmNhdGUgZmlyc3QgdG8g
bWF4X2xpbmVzLCBhbmQgdGhlbiB0cnVuY2F0ZSB0byBtYXhfY2hhcnMgaWYgbWF4X2NoYXJzCi0g
ICAgIyBpcyBleGNlZWRlZC4KLSAgICB0cnVuY2F0ZWRfZXhwbGFuYXRpb24gPSBpbnB1dF9saW5l
c1s6bWF4X2xpbmVzXQotICAgIHRydW5jYXRlZF9leHBsYW5hdGlvbiA9IF90cnVuY2F0ZV9ieV9j
aGFyX2NvdW50KHRydW5jYXRlZF9leHBsYW5hdGlvbiwgbWF4X2NoYXJzKQotCi0gICAgIyBBZGQg
ZWxsaXBzaXMgdG8gZmluYWwgbGluZQotICAgIHRydW5jYXRlZF9leHBsYW5hdGlvblstMV0gPSB0
cnVuY2F0ZWRfZXhwbGFuYXRpb25bLTFdICsgIi4uLiIKLQotICAgICMgQXBwZW5kIHVzZWZ1bCBt
ZXNzYWdlIHRvIGV4cGxhbmF0aW9uCi0gICAgdHJ1bmNhdGVkX2xpbmVfY291bnQgPSBsZW4oaW5w
dXRfbGluZXMpIC0gbGVuKHRydW5jYXRlZF9leHBsYW5hdGlvbikKLSAgICB0cnVuY2F0ZWRfbGlu
ZV9jb3VudCArPSAxICAjIEFjY291bnQgZm9yIHRoZSBwYXJ0LXRydW5jYXRlZCBmaW5hbCBsaW5l
Ci0gICAgbXNnID0gJy4uLkZ1bGwgb3V0cHV0IHRydW5jYXRlZCcKLSAgICBpZiB0cnVuY2F0ZWRf
bGluZV9jb3VudCA9PSAxOgotICAgICAgICBtc2cgKz0gJyAoezB9IGxpbmUgaGlkZGVuKScuZm9y
bWF0KHRydW5jYXRlZF9saW5lX2NvdW50KQotICAgIGVsc2U6Ci0gICAgICAgIG1zZyArPSAnICh7
MH0gbGluZXMgaGlkZGVuKScuZm9ybWF0KHRydW5jYXRlZF9saW5lX2NvdW50KQotICAgIG1zZyAr
PSAiLCB7MH0iIC5mb3JtYXQoVVNBR0VfTVNHKQotICAgIHRydW5jYXRlZF9leHBsYW5hdGlvbi5l
eHRlbmQoWwotICAgICAgICBzaXgudGV4dF90eXBlKCIiKSwKLSAgICAgICAgc2l4LnRleHRfdHlw
ZShtc2cpLAotICAgIF0pCi0gICAgcmV0dXJuIHRydW5jYXRlZF9leHBsYW5hdGlvbgotCi0KLWRl
ZiBfdHJ1bmNhdGVfYnlfY2hhcl9jb3VudChpbnB1dF9saW5lcywgbWF4X2NoYXJzKToKLSAgICAj
IENoZWNrIGlmIHRydW5jYXRpb24gcmVxdWlyZWQKLSAgICBpZiBsZW4oIiIuam9pbihpbnB1dF9s
aW5lcykpIDw9IG1heF9jaGFyczoKLSAgICAgICAgcmV0dXJuIGlucHV0X2xpbmVzCi0KLSAgICAj
IEZpbmQgcG9pbnQgYXQgd2hpY2ggaW5wdXQgbGVuZ3RoIGV4Y2VlZHMgdG90YWwgYWxsb3dlZCBs
ZW5ndGgKLSAgICBpdGVyYXRlZF9jaGFyX2NvdW50ID0gMAotICAgIGZvciBpdGVyYXRlZF9pbmRl
eCwgaW5wdXRfbGluZSBpbiBlbnVtZXJhdGUoaW5wdXRfbGluZXMpOgotICAgICAgICBpZiBpdGVy
YXRlZF9jaGFyX2NvdW50ICsgbGVuKGlucHV0X2xpbmUpID4gbWF4X2NoYXJzOgotICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgaXRlcmF0ZWRfY2hhcl9jb3VudCArPSBsZW4oaW5wdXRfbGluZSkK
LQotICAgICMgQ3JlYXRlIHRydW5jYXRlZCBleHBsYW5hdGlvbiB3aXRoIG1vZGlmaWVkIGZpbmFs
IGxpbmUKLSAgICB0cnVuY2F0ZWRfcmVzdWx0ID0gaW5wdXRfbGluZXNbOml0ZXJhdGVkX2luZGV4
XQotICAgIGZpbmFsX2xpbmUgPSBpbnB1dF9saW5lc1tpdGVyYXRlZF9pbmRleF0KLSAgICBpZiBm
aW5hbF9saW5lOgotICAgICAgICBmaW5hbF9saW5lX3RydW5jYXRlX3BvaW50ID0gbWF4X2NoYXJz
IC0gaXRlcmF0ZWRfY2hhcl9jb3VudAotICAgICAgICBmaW5hbF9saW5lID0gZmluYWxfbGluZVs6
ZmluYWxfbGluZV90cnVuY2F0ZV9wb2ludF0KLSAgICB0cnVuY2F0ZWRfcmVzdWx0LmFwcGVuZChm
aW5hbF9saW5lKQotICAgIHJldHVybiB0cnVuY2F0ZWRfcmVzdWx0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9h
c3NlcnRpb24vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTExZDk4ZWYx
ZmRmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vdXRp
bC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMwOCArMCwwIEBACi0iIiJVdGlsaXRpZXMgZm9yIGFz
c2VydGlvbiBkZWJ1Z2dpbmciIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBwcHJpbnQKLQotaW1wb3J0IF9w
eXRlc3QuX2NvZGUKLWltcG9ydCBweQotaW1wb3J0IHNpeAotdHJ5OgotICAgIGZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IFNlcXVlbmNlCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgU2VxdWVuY2Ug
PSBsaXN0Ci0KLQotdSA9IHNpeC50ZXh0X3R5cGUKLQotIyBUaGUgX3JlcHJjb21wYXJlIGF0dHJp
YnV0ZSBvbiB0aGUgdXRpbCBtb2R1bGUgaXMgdXNlZCBieSB0aGUgbmV3IGFzc2VydGlvbgotIyBp
bnRlcnByZXRhdGlvbiBjb2RlIGFuZCBhc3NlcnRpb24gcmV3cml0ZXIgdG8gZGV0ZWN0IHRoaXMg
cGx1Z2luIHdhcwotIyBsb2FkZWQgYW5kIGluIHR1cm4gY2FsbCB0aGUgaG9va3MgZGVmaW5lZCBo
ZXJlIGFzIHBhcnQgb2YgdGhlCi0jIERlYnVnSW50ZXJwcmV0ZXIuCi1fcmVwcmNvbXBhcmUgPSBO
b25lCi0KLQotIyB0aGUgcmUtZW5jb2RpbmcgaXMgbmVlZGVkIGZvciBweXRob24yIHJlcHIKLSMg
d2l0aCBub24tYXNjaWkgY2hhcmFjdGVycyAoc2VlIGlzc3VlIDg3NyBhbmQgMTM3OSkKLWRlZiBl
Y3Uocyk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gdShzLCAndXRmLTgnLCAncmVwbGFjZScp
Ci0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgcmV0dXJuIHMKLQotCi1kZWYgZm9ybWF0
X2V4cGxhbmF0aW9uKGV4cGxhbmF0aW9uKToKLSAgICAiIiJUaGlzIGZvcm1hdHMgYW4gZXhwbGFu
YXRpb24KLQotICAgIE5vcm1hbGx5IGFsbCBlbWJlZGRlZCBuZXdsaW5lcyBhcmUgZXNjYXBlZCwg
aG93ZXZlciB0aGVyZSBhcmUKLSAgICB0aHJlZSBleGNlcHRpb25zOiBcbnssIFxufSBhbmQgXG5+
LiAgVGhlIGZpcnN0IHR3byBhcmUgaW50ZW5kZWQKLSAgICBjb3ZlciBuZXN0ZWQgZXhwbGFuYXRp
b25zLCBzZWUgZnVuY3Rpb24gYW5kIGF0dHJpYnV0ZSBleHBsYW5hdGlvbnMKLSAgICBmb3IgZXhh
bXBsZXMgKC52aXNpdF9DYWxsKCksIHZpc2l0X0F0dHJpYnV0ZSgpKS4gIFRoZSBsYXN0IG9uZSBp
cwotICAgIGZvciB3aGVuIG9uZSBleHBsYW5hdGlvbiBuZWVkcyB0byBzcGFuIG11bHRpcGxlIGxp
bmVzLCBlLmcuIHdoZW4KLSAgICBkaXNwbGF5aW5nIGRpZmZzLgotICAgICIiIgotICAgIGV4cGxh
bmF0aW9uID0gZWN1KGV4cGxhbmF0aW9uKQotICAgIGxpbmVzID0gX3NwbGl0X2V4cGxhbmF0aW9u
KGV4cGxhbmF0aW9uKQotICAgIHJlc3VsdCA9IF9mb3JtYXRfbGluZXMobGluZXMpCi0gICAgcmV0
dXJuIHUoJ1xuJykuam9pbihyZXN1bHQpCi0KLQotZGVmIF9zcGxpdF9leHBsYW5hdGlvbihleHBs
YW5hdGlvbik6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBpbmRpdmlkdWFsIGxpbmVzIGluIHRo
ZSBleHBsYW5hdGlvbgotCi0gICAgVGhpcyB3aWxsIHJldHVybiBhIGxpc3Qgb2YgbGluZXMgc3Bs
aXQgb24gJ1xueycsICdcbn0nIGFuZCAnXG5+Jy4KLSAgICBBbnkgb3RoZXIgbmV3bGluZXMgd2ls
bCBiZSBlc2NhcGVkIGFuZCBhcHBlYXIgaW4gdGhlIGxpbmUgYXMgdGhlCi0gICAgbGl0ZXJhbCAn
XG4nIGNoYXJhY3RlcnMuCi0gICAgIiIiCi0gICAgcmF3X2xpbmVzID0gKGV4cGxhbmF0aW9uIG9y
IHUoJycpKS5zcGxpdCgnXG4nKQotICAgIGxpbmVzID0gW3Jhd19saW5lc1swXV0KLSAgICBmb3Ig
dmFsdWVzIGluIHJhd19saW5lc1sxOl06Ci0gICAgICAgIGlmIHZhbHVlcyBhbmQgdmFsdWVzWzBd
IGluIFsneycsICd9JywgJ34nLCAnPiddOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHZhbHVl
cykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzWy0xXSArPSAnXFxuJyArIHZhbHVl
cwotICAgIHJldHVybiBsaW5lcwotCi0KLWRlZiBfZm9ybWF0X2xpbmVzKGxpbmVzKToKLSAgICAi
IiJGb3JtYXQgdGhlIGluZGl2aWR1YWwgbGluZXMKLQotICAgIFRoaXMgd2lsbCByZXBsYWNlIHRo
ZSAneycsICd9JyBhbmQgJ34nIGNoYXJhY3RlcnMgb2Ygb3VyIG1pbmkKLSAgICBmb3JtYXR0aW5n
IGxhbmd1YWdlIHdpdGggdGhlIHByb3BlciAnd2hlcmUgLi4uJywgJ2FuZCAuLi4nIGFuZCAnICsK
LSAgICAuLi4nIHRleHQsIHRha2luZyBjYXJlIG9mIGluZGVudGF0aW9uIGFsb25nIHRoZSB3YXku
Ci0KLSAgICBSZXR1cm4gYSBsaXN0IG9mIGZvcm1hdHRlZCBsaW5lcy4KLSAgICAiIiIKLSAgICBy
ZXN1bHQgPSBsaW5lc1s6MV0KLSAgICBzdGFjayA9IFswXQotICAgIHN0YWNrY250ID0gWzBdCi0g
ICAgZm9yIGxpbmUgaW4gbGluZXNbMTpdOgotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3sn
KToKLSAgICAgICAgICAgIGlmIHN0YWNrY250Wy0xXToKLSAgICAgICAgICAgICAgICBzID0gdSgn
YW5kICAgJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcyA9IHUoJ3doZXJl
ICcpCi0gICAgICAgICAgICBzdGFjay5hcHBlbmQobGVuKHJlc3VsdCkpCi0gICAgICAgICAgICBz
dGFja2NudFstMV0gKz0gMQotICAgICAgICAgICAgc3RhY2tjbnQuYXBwZW5kKDApCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHUoJyArJykgKyB1KCcgICcpICogKGxlbihzdGFjaykgLSAxKSAr
IHMgKyBsaW5lWzE6XSkKLSAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ30nKToKLSAgICAg
ICAgICAgIHN0YWNrLnBvcCgpCi0gICAgICAgICAgICBzdGFja2NudC5wb3AoKQotICAgICAgICAg
ICAgcmVzdWx0W3N0YWNrWy0xXV0gKz0gbGluZVsxOl0KLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGFzc2VydCBsaW5lWzBdIGluIFsnficsICc+J10KLSAgICAgICAgICAgIHN0YWNrWy0xXSAr
PSAxCi0gICAgICAgICAgICBpbmRlbnQgPSBsZW4oc3RhY2spIGlmIGxpbmUuc3RhcnRzd2l0aCgn
ficpIGVsc2UgbGVuKHN0YWNrKSAtIDEKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodSgnICAn
KSAqIGluZGVudCArIGxpbmVbMTpdKQotICAgIGFzc2VydCBsZW4oc3RhY2spID09IDEKLSAgICBy
ZXR1cm4gcmVzdWx0Ci0KLQotIyBQcm92aWRlIGJhc2VzdHJpbmcgaW4gcHl0aG9uMwotdHJ5Ogot
ICAgIGJhc2VzdHJpbmcgPSBiYXNlc3RyaW5nCi1leGNlcHQgTmFtZUVycm9yOgotICAgIGJhc2Vz
dHJpbmcgPSBzdHIKLQotCi1kZWYgYXNzZXJ0cmVwcl9jb21wYXJlKGNvbmZpZywgb3AsIGxlZnQs
IHJpZ2h0KToKLSAgICAiIiJSZXR1cm4gc3BlY2lhbGlzZWQgZXhwbGFuYXRpb25zIGZvciBzb21l
IG9wZXJhdG9ycy9vcGVyYW5kcyIiIgotICAgIHdpZHRoID0gODAgLSAxNSAtIGxlbihvcCkgLSAy
ICAjIDE1IGNoYXJzIGluZGVudGF0aW9uLCAxIHNwYWNlIGFyb3VuZCBvcAotICAgIGxlZnRfcmVw
ciA9IHB5LmlvLnNhZmVyZXByKGxlZnQsIG1heHNpemU9aW50KHdpZHRoIC8vIDIpKQotICAgIHJp
Z2h0X3JlcHIgPSBweS5pby5zYWZlcmVwcihyaWdodCwgbWF4c2l6ZT13aWR0aCAtIGxlbihsZWZ0
X3JlcHIpKQotCi0gICAgc3VtbWFyeSA9IHUoJyVzICVzICVzJykgJSAoZWN1KGxlZnRfcmVwciks
IG9wLCBlY3UocmlnaHRfcmVwcikpCi0KLSAgICBkZWYgaXNzZXF1ZW5jZSh4KToKLSAgICAgICAg
cmV0dXJuIChpc2luc3RhbmNlKHgsIChsaXN0LCB0dXBsZSwgU2VxdWVuY2UpKSBhbmQgbm90IGlz
aW5zdGFuY2UoeCwgYmFzZXN0cmluZykpCi0KLSAgICBkZWYgaXN0ZXh0KHgpOgotICAgICAgICBy
ZXR1cm4gaXNpbnN0YW5jZSh4LCBiYXNlc3RyaW5nKQotCi0gICAgZGVmIGlzZGljdCh4KToKLSAg
ICAgICAgcmV0dXJuIGlzaW5zdGFuY2UoeCwgZGljdCkKLQotICAgIGRlZiBpc3NldCh4KToKLSAg
ICAgICAgcmV0dXJuIGlzaW5zdGFuY2UoeCwgKHNldCwgZnJvemVuc2V0KSkKLQotICAgIGRlZiBp
c2l0ZXJhYmxlKG9iaik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGl0ZXIob2JqKQotICAg
ICAgICAgICAgcmV0dXJuIG5vdCBpc3RleHQob2JqKQotICAgICAgICBleGNlcHQgVHlwZUVycm9y
OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICB2ZXJib3NlID0gY29uZmlnLmdldG9w
dGlvbigndmVyYm9zZScpCi0gICAgZXhwbGFuYXRpb24gPSBOb25lCi0gICAgdHJ5OgotICAgICAg
ICBpZiBvcCA9PSAnPT0nOgotICAgICAgICAgICAgaWYgaXN0ZXh0KGxlZnQpIGFuZCBpc3RleHQo
cmlnaHQpOgotICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2RpZmZfdGV4dChsZWZ0LCBy
aWdodCwgdmVyYm9zZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNz
ZXF1ZW5jZShsZWZ0KSBhbmQgaXNzZXF1ZW5jZShyaWdodCk6Ci0gICAgICAgICAgICAgICAgICAg
IGV4cGxhbmF0aW9uID0gX2NvbXBhcmVfZXFfc2VxdWVuY2UobGVmdCwgcmlnaHQsIHZlcmJvc2Up
Ci0gICAgICAgICAgICAgICAgZWxpZiBpc3NldChsZWZ0KSBhbmQgaXNzZXQocmlnaHQpOgotICAg
ICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IF9jb21wYXJlX2VxX3NldChsZWZ0LCByaWdo
dCwgdmVyYm9zZSkKLSAgICAgICAgICAgICAgICBlbGlmIGlzZGljdChsZWZ0KSBhbmQgaXNkaWN0
KHJpZ2h0KToKLSAgICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9k
aWN0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAgIGlmIGlzaXRlcmFibGUo
bGVmdCkgYW5kIGlzaXRlcmFibGUocmlnaHQpOgotICAgICAgICAgICAgICAgICAgICBleHBsID0g
X2NvbXBhcmVfZXFfaXRlcmFibGUobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0gICAgICAgICAgICAg
ICAgICAgIGlmIGV4cGxhbmF0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwbGFuYXRpb24uZXh0ZW5kKGV4cGwpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IGV4cGwKLSAgICAgICAgZWxpZiBv
cCA9PSAnbm90IGluJzoKLSAgICAgICAgICAgIGlmIGlzdGV4dChsZWZ0KSBhbmQgaXN0ZXh0KHJp
Z2h0KToKLSAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IF9ub3Rpbl90ZXh0KGxlZnQsIHJp
Z2h0LCB2ZXJib3NlKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIGV4cGxhbmF0aW9u
ID0gWwotICAgICAgICAgICAgdSgnKHB5dGVzdF9hc3NlcnRpb24gcGx1Z2luOiByZXByZXNlbnRh
dGlvbiBvZiBkZXRhaWxzIGZhaWxlZC4gICcKLSAgICAgICAgICAgICAgJ1Byb2JhYmx5IGFuIG9i
amVjdCBoYXMgYSBmYXVsdHkgX19yZXByX18uKScpLAotICAgICAgICAgICAgdShfcHl0ZXN0Ll9j
b2RlLkV4Y2VwdGlvbkluZm8oKSldCi0KLSAgICBpZiBub3QgZXhwbGFuYXRpb246Ci0gICAgICAg
IHJldHVybiBOb25lCi0KLSAgICByZXR1cm4gW3N1bW1hcnldICsgZXhwbGFuYXRpb24KLQotCi1k
ZWYgX2RpZmZfdGV4dChsZWZ0LCByaWdodCwgdmVyYm9zZT1GYWxzZSk6Ci0gICAgIiIiUmV0dXJu
IHRoZSBleHBsYW5hdGlvbiBmb3IgdGhlIGRpZmYgYmV0d2VlbiB0ZXh0IG9yIGJ5dGVzCi0KLSAg
ICBVbmxlc3MgLS12ZXJib3NlIGlzIHVzZWQgdGhpcyB3aWxsIHNraXAgbGVhZGluZyBhbmQgdHJh
aWxpbmcKLSAgICBjaGFyYWN0ZXJzIHdoaWNoIGFyZSBpZGVudGljYWwgdG8ga2VlcCB0aGUgZGlm
ZiBtaW5pbWFsLgotCi0gICAgSWYgdGhlIGlucHV0IGFyZSBieXRlcyB0aGV5IHdpbGwgYmUgc2Fm
ZWx5IGNvbnZlcnRlZCB0byB0ZXh0LgotICAgICIiIgotICAgIGZyb20gZGlmZmxpYiBpbXBvcnQg
bmRpZmYKLSAgICBleHBsYW5hdGlvbiA9IFtdCi0gICAgaWYgaXNpbnN0YW5jZShsZWZ0LCBzaXgu
YmluYXJ5X3R5cGUpOgotICAgICAgICBsZWZ0ID0gdShyZXByKGxlZnQpWzE6LTFdKS5yZXBsYWNl
KHInXG4nLCAnXG4nKQotICAgIGlmIGlzaW5zdGFuY2UocmlnaHQsIHNpeC5iaW5hcnlfdHlwZSk6
Ci0gICAgICAgIHJpZ2h0ID0gdShyZXByKHJpZ2h0KVsxOi0xXSkucmVwbGFjZShyJ1xuJywgJ1xu
JykKLSAgICBpZiBub3QgdmVyYm9zZToKLSAgICAgICAgaSA9IDAgICMganVzdCBpbiBjYXNlIGxl
ZnQgb3IgcmlnaHQgaGFzIHplcm8gbGVuZ3RoCi0gICAgICAgIGZvciBpIGluIHJhbmdlKG1pbihs
ZW4obGVmdCksIGxlbihyaWdodCkpKToKLSAgICAgICAgICAgIGlmIGxlZnRbaV0gIT0gcmlnaHRb
aV06Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgaSA+IDQyOgotICAgICAgICAg
ICAgaSAtPSAxMCAgICAgICAgICAgICAgICAgIyBQcm92aWRlIHNvbWUgY29udGV4dAotICAgICAg
ICAgICAgZXhwbGFuYXRpb24gPSBbdSgnU2tpcHBpbmcgJXMgaWRlbnRpY2FsIGxlYWRpbmcgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiBkaWZmLCB1c2UgLXYg
dG8gc2hvdycpICUgaV0KLSAgICAgICAgICAgIGxlZnQgPSBsZWZ0W2k6XQotICAgICAgICAgICAg
cmlnaHQgPSByaWdodFtpOl0KLSAgICAgICAgaWYgbGVuKGxlZnQpID09IGxlbihyaWdodCk6Ci0g
ICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4obGVmdCkpOgotICAgICAgICAgICAgICAgIGlm
IGxlZnRbLWldICE9IHJpZ2h0Wy1pXToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgICAgIGlmIGkgPiA0MjoKLSAgICAgICAgICAgICAgICBpIC09IDEwICAgICAjIFByb3ZpZGUg
c29tZSBjb250ZXh0Ci0gICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gKz0gW3UoJ1NraXBwaW5n
ICVzIGlkZW50aWNhbCB0cmFpbGluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2NoYXJhY3RlcnMgaW4gZGlmZiwgdXNlIC12IHRvIHNob3cnKSAlIGldCi0gICAgICAgICAg
ICAgICAgbGVmdCA9IGxlZnRbOi1pXQotICAgICAgICAgICAgICAgIHJpZ2h0ID0gcmlnaHRbOi1p
XQotICAgIGtlZXBlbmRzID0gVHJ1ZQotICAgIGV4cGxhbmF0aW9uICs9IFtsaW5lLnN0cmlwKCdc
bicpCi0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIG5kaWZmKGxlZnQuc3BsaXRsaW5l
cyhrZWVwZW5kcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0
LnNwbGl0bGluZXMoa2VlcGVuZHMpKV0KLSAgICByZXR1cm4gZXhwbGFuYXRpb24KLQotCi1kZWYg
X2NvbXBhcmVfZXFfaXRlcmFibGUobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgotICAgIGlm
IG5vdCB2ZXJib3NlOgotICAgICAgICByZXR1cm4gW3UoJ1VzZSAtdiB0byBnZXQgdGhlIGZ1bGwg
ZGlmZicpXQotICAgICMgZHluYW1pYyBpbXBvcnQgdG8gc3BlZWR1cCBweXRlc3QKLSAgICBpbXBv
cnQgZGlmZmxpYgotCi0gICAgdHJ5OgotICAgICAgICBsZWZ0X2Zvcm1hdHRpbmcgPSBwcHJpbnQu
cGZvcm1hdChsZWZ0KS5zcGxpdGxpbmVzKCkKLSAgICAgICAgcmlnaHRfZm9ybWF0dGluZyA9IHBw
cmludC5wZm9ybWF0KHJpZ2h0KS5zcGxpdGxpbmVzKCkKLSAgICAgICAgZXhwbGFuYXRpb24gPSBb
dSgnRnVsbCBkaWZmOicpXQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICMgaGFjazog
UHJldHR5UHJpbnRlci5wZm9ybWF0KCkgaW4gcHl0aG9uIDIgZmFpbHMgd2hlbiBmb3JtYXR0aW5n
IGl0ZW1zIHRoYXQgY2FuJ3QgYmUgc29ydGVkKCksIGllLCBjYWxsaW5nCi0gICAgICAgICMgc29y
dGVkKCkgb24gYSBsaXN0IHdvdWxkIHJhaXNlLiBTZWUgaXNzdWUgIzcxOC4KLSAgICAgICAgIyBB
cyBhIHdvcmthcm91bmQsIHRoZSBmdWxsIGRpZmYgaXMgZ2VuZXJhdGVkIGJ5IHVzaW5nIHRoZSBy
ZXByKCkgc3RyaW5nIG9mIGVhY2ggaXRlbSBvZiBlYWNoIGNvbnRhaW5lci4KLSAgICAgICAgbGVm
dF9mb3JtYXR0aW5nID0gc29ydGVkKHJlcHIoeCkgZm9yIHggaW4gbGVmdCkKLSAgICAgICAgcmln
aHRfZm9ybWF0dGluZyA9IHNvcnRlZChyZXByKHgpIGZvciB4IGluIHJpZ2h0KQotICAgICAgICBl
eHBsYW5hdGlvbiA9IFt1KCdGdWxsIGRpZmYgKGZhbGxiYWNrIHRvIGNhbGxpbmcgcmVwciBvbiBl
YWNoIGl0ZW0pOicpXQotICAgIGV4cGxhbmF0aW9uLmV4dGVuZChsaW5lLnN0cmlwKCkgZm9yIGxp
bmUgaW4gZGlmZmxpYi5uZGlmZihsZWZ0X2Zvcm1hdHRpbmcsIHJpZ2h0X2Zvcm1hdHRpbmcpKQot
ICAgIHJldHVybiBleHBsYW5hdGlvbgotCi0KLWRlZiBfY29tcGFyZV9lcV9zZXF1ZW5jZShsZWZ0
LCByaWdodCwgdmVyYm9zZT1GYWxzZSk6Ci0gICAgZXhwbGFuYXRpb24gPSBbXQotICAgIGZvciBp
IGluIHJhbmdlKG1pbihsZW4obGVmdCksIGxlbihyaWdodCkpKToKLSAgICAgICAgaWYgbGVmdFtp
XSAhPSByaWdodFtpXToKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFt1KCdBdCBpbmRleCAl
cyBkaWZmOiAlciAhPSAlcicpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaSwgbGVm
dFtpXSwgcmlnaHRbaV0pXQotICAgICAgICAgICAgYnJlYWsKLSAgICBpZiBsZW4obGVmdCkgPiBs
ZW4ocmlnaHQpOgotICAgICAgICBleHBsYW5hdGlvbiArPSBbdSgnTGVmdCBjb250YWlucyBtb3Jl
IGl0ZW1zLCBmaXJzdCBleHRyYSBpdGVtOiAlcycpCi0gICAgICAgICAgICAgICAgICAgICAgICAl
IHB5LmlvLnNhZmVyZXByKGxlZnRbbGVuKHJpZ2h0KV0sKV0KLSAgICBlbGlmIGxlbihsZWZ0KSA8
IGxlbihyaWdodCk6Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9IFsKLSAgICAgICAgICAgIHUoJ1Jp
Z2h0IGNvbnRhaW5zIG1vcmUgaXRlbXMsIGZpcnN0IGV4dHJhIGl0ZW06ICVzJykgJQotICAgICAg
ICAgICAgcHkuaW8uc2FmZXJlcHIocmlnaHRbbGVuKGxlZnQpXSwpXQotICAgIHJldHVybiBleHBs
YW5hdGlvbgotCi0KLWRlZiBfY29tcGFyZV9lcV9zZXQobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFs
c2UpOgotICAgIGV4cGxhbmF0aW9uID0gW10KLSAgICBkaWZmX2xlZnQgPSBsZWZ0IC0gcmlnaHQK
LSAgICBkaWZmX3JpZ2h0ID0gcmlnaHQgLSBsZWZ0Ci0gICAgaWYgZGlmZl9sZWZ0OgotICAgICAg
ICBleHBsYW5hdGlvbi5hcHBlbmQodSgnRXh0cmEgaXRlbXMgaW4gdGhlIGxlZnQgc2V0OicpKQot
ICAgICAgICBmb3IgaXRlbSBpbiBkaWZmX2xlZnQ6Ci0gICAgICAgICAgICBleHBsYW5hdGlvbi5h
cHBlbmQocHkuaW8uc2FmZXJlcHIoaXRlbSkpCi0gICAgaWYgZGlmZl9yaWdodDoKLSAgICAgICAg
ZXhwbGFuYXRpb24uYXBwZW5kKHUoJ0V4dHJhIGl0ZW1zIGluIHRoZSByaWdodCBzZXQ6JykpCi0g
ICAgICAgIGZvciBpdGVtIGluIGRpZmZfcmlnaHQ6Ci0gICAgICAgICAgICBleHBsYW5hdGlvbi5h
cHBlbmQocHkuaW8uc2FmZXJlcHIoaXRlbSkpCi0gICAgcmV0dXJuIGV4cGxhbmF0aW9uCi0KLQot
ZGVmIF9jb21wYXJlX2VxX2RpY3QobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgotICAgIGV4
cGxhbmF0aW9uID0gW10KLSAgICBjb21tb24gPSBzZXQobGVmdCkuaW50ZXJzZWN0aW9uKHNldChy
aWdodCkpCi0gICAgc2FtZSA9IGRpY3QoKGssIGxlZnRba10pIGZvciBrIGluIGNvbW1vbiBpZiBs
ZWZ0W2tdID09IHJpZ2h0W2tdKQotICAgIGlmIHNhbWUgYW5kIHZlcmJvc2UgPCAyOgotICAgICAg
ICBleHBsYW5hdGlvbiArPSBbdSgnT21pdHRpbmcgJXMgaWRlbnRpY2FsIGl0ZW1zLCB1c2UgLXZ2
IHRvIHNob3cnKSAlCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW4oc2FtZSldCi0gICAgZWxp
ZiBzYW1lOgotICAgICAgICBleHBsYW5hdGlvbiArPSBbdSgnQ29tbW9uIGl0ZW1zOicpXQotICAg
ICAgICBleHBsYW5hdGlvbiArPSBwcHJpbnQucGZvcm1hdChzYW1lKS5zcGxpdGxpbmVzKCkKLSAg
ICBkaWZmID0gc2V0KGsgZm9yIGsgaW4gY29tbW9uIGlmIGxlZnRba10gIT0gcmlnaHRba10pCi0g
ICAgaWYgZGlmZjoKLSAgICAgICAgZXhwbGFuYXRpb24gKz0gW3UoJ0RpZmZlcmluZyBpdGVtczon
KV0KLSAgICAgICAgZm9yIGsgaW4gZGlmZjoKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFtw
eS5pby5zYWZlcmVwcih7azogbGVmdFtrXX0pICsgJyAhPSAnICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBweS5pby5zYWZlcmVwcih7azogcmlnaHRba119KV0KLSAgICBleHRyYV9sZWZ0
ID0gc2V0KGxlZnQpIC0gc2V0KHJpZ2h0KQotICAgIGlmIGV4dHJhX2xlZnQ6Ci0gICAgICAgIGV4
cGxhbmF0aW9uLmFwcGVuZCh1KCdMZWZ0IGNvbnRhaW5zIG1vcmUgaXRlbXM6JykpCi0gICAgICAg
IGV4cGxhbmF0aW9uLmV4dGVuZChwcHJpbnQucGZvcm1hdCgKLSAgICAgICAgICAgIGRpY3QoKGss
IGxlZnRba10pIGZvciBrIGluIGV4dHJhX2xlZnQpKS5zcGxpdGxpbmVzKCkpCi0gICAgZXh0cmFf
cmlnaHQgPSBzZXQocmlnaHQpIC0gc2V0KGxlZnQpCi0gICAgaWYgZXh0cmFfcmlnaHQ6Ci0gICAg
ICAgIGV4cGxhbmF0aW9uLmFwcGVuZCh1KCdSaWdodCBjb250YWlucyBtb3JlIGl0ZW1zOicpKQot
ICAgICAgICBleHBsYW5hdGlvbi5leHRlbmQocHByaW50LnBmb3JtYXQoCi0gICAgICAgICAgICBk
aWN0KChrLCByaWdodFtrXSkgZm9yIGsgaW4gZXh0cmFfcmlnaHQpKS5zcGxpdGxpbmVzKCkpCi0g
ICAgcmV0dXJuIGV4cGxhbmF0aW9uCi0KLQotZGVmIF9ub3Rpbl90ZXh0KHRlcm0sIHRleHQsIHZl
cmJvc2U9RmFsc2UpOgotICAgIGluZGV4ID0gdGV4dC5maW5kKHRlcm0pCi0gICAgaGVhZCA9IHRl
eHRbOmluZGV4XQotICAgIHRhaWwgPSB0ZXh0W2luZGV4ICsgbGVuKHRlcm0pOl0KLSAgICBjb3Jy
ZWN0X3RleHQgPSBoZWFkICsgdGFpbAotICAgIGRpZmYgPSBfZGlmZl90ZXh0KGNvcnJlY3RfdGV4
dCwgdGV4dCwgdmVyYm9zZSkKLSAgICBuZXdkaWZmID0gW3UoJyVzIGlzIGNvbnRhaW5lZCBoZXJl
OicpICUgcHkuaW8uc2FmZXJlcHIodGVybSwgbWF4c2l6ZT00MildCi0gICAgZm9yIGxpbmUgaW4g
ZGlmZjoKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKHUoJ1NraXBwaW5nJykpOgotICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKHUoJy0gJykpOgotICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKHUoJysgJykpOgot
ICAgICAgICAgICAgbmV3ZGlmZi5hcHBlbmQodSgnICAnKSArIGxpbmVbMjpdKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgbmV3ZGlmZi5hcHBlbmQobGluZSkKLSAgICByZXR1cm4gbmV3ZGlm
ZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEzMDdkM2FiYzcyLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlv
bi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi90cnVuY2F0ZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvYXNzZXJ0aW9uL3V0aWwucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvY2FjaGVwcm92aWRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY2FjaGVwcm92aWRlci5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUzN2MxNDQ3MmIxLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYWNoZXByb3ZpZGVyLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMjYwICswLDAgQEAKLSIiIgotbWVyZ2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBj
YWNoZSBwcm92aWRlcgotCi10aGUgbmFtZSBjYWNoZSB3YXMgbm90IGNob3NlbiB0byBlbnN1cmUg
cGx1Z2d5IGF1dG9tYXRpY2FsbHkKLWlnbm9yZXMgdGhlIGV4dGVybmFsIHB5dGVzdC1jYWNoZQot
IiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCi1pbXBvcnQgcHkKLWltcG9ydCBweXRlc3QKLWltcG9ydCBqc29uCi1pbXBv
cnQgb3MKLWZyb20gb3MucGF0aCBpbXBvcnQgc2VwIGFzIF9zZXAsIGFsdHNlcCBhcyBfYWx0c2Vw
Ci0KLQotY2xhc3MgQ2FjaGUob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmln
KToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5fY2FjaGVkaXIg
PSBDYWNoZS5jYWNoZV9kaXJfZnJvbV9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLnRyYWNl
ID0gY29uZmlnLnRyYWNlLnJvb3QuZ2V0KCJjYWNoZSIpCi0gICAgICAgIGlmIGNvbmZpZy5nZXR2
YWx1ZSgiY2FjaGVjbGVhciIpOgotICAgICAgICAgICAgc2VsZi50cmFjZSgiY2xlYXJpbmcgY2Fj
aGVkaXIiKQotICAgICAgICAgICAgaWYgc2VsZi5fY2FjaGVkaXIuY2hlY2soKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9jYWNoZWRpci5yZW1vdmUoKQotICAgICAgICAgICAgc2VsZi5fY2FjaGVk
aXIubWtkaXIoKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjYWNoZV9kaXJfZnJvbV9j
b25maWcoY29uZmlnKToKLSAgICAgICAgY2FjaGVfZGlyID0gY29uZmlnLmdldGluaSgiY2FjaGVf
ZGlyIikKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5leHBhbmR1c2VyKGNhY2hlX2RpcikK
LSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5leHBhbmR2YXJzKGNhY2hlX2RpcikKLSAgICAg
ICAgaWYgb3MucGF0aC5pc2FicyhjYWNoZV9kaXIpOgotICAgICAgICAgICAgcmV0dXJuIHB5LnBh
dGgubG9jYWwoY2FjaGVfZGlyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNv
bmZpZy5yb290ZGlyLmpvaW4oY2FjaGVfZGlyKQotCi0gICAgZGVmIG1ha2VkaXIoc2VsZiwgbmFt
ZSk6Ci0gICAgICAgICIiIiByZXR1cm4gYSBkaXJlY3RvcnkgcGF0aCBvYmplY3Qgd2l0aCB0aGUg
Z2l2ZW4gbmFtZS4gIElmIHRoZQotICAgICAgICBkaXJlY3RvcnkgZG9lcyBub3QgeWV0IGV4aXN0
LCBpdCB3aWxsIGJlIGNyZWF0ZWQuICBZb3UgY2FuIHVzZSBpdAotICAgICAgICB0byBtYW5hZ2Ug
ZmlsZXMgbGlrZXMgZS4gZy4gc3RvcmUvcmV0cmlldmUgZGF0YWJhc2UKLSAgICAgICAgZHVtcHMg
YWNyb3NzIHRlc3Qgc2Vzc2lvbnMuCi0KLSAgICAgICAgOnBhcmFtIG5hbWU6IG11c3QgYmUgYSBz
dHJpbmcgbm90IGNvbnRhaW5pbmcgYSBgYC9gYCBzZXBhcmF0b3IuCi0gICAgICAgICAgICAgTWFr
ZSBzdXJlIHRoZSBuYW1lIGNvbnRhaW5zIHlvdXIgcGx1Z2luIG9yIGFwcGxpY2F0aW9uCi0gICAg
ICAgICAgICAgaWRlbnRpZmllcnMgdG8gcHJldmVudCBjbGFzaGVzIHdpdGggb3RoZXIgY2FjaGUg
dXNlcnMuCi0gICAgICAgICIiIgotICAgICAgICBpZiBfc2VwIGluIG5hbWUgb3IgX2FsdHNlcCBp
cyBub3QgTm9uZSBhbmQgX2FsdHNlcCBpbiBuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigibmFtZSBpcyBub3QgYWxsb3dlZCB0byBjb250YWluIHBhdGggc2VwYXJhdG9ycyIpCi0g
ICAgICAgIHJldHVybiBzZWxmLl9jYWNoZWRpci5lbnN1cmVfZGlyKCJkIiwgbmFtZSkKLQotICAg
IGRlZiBfZ2V0dmFsdWVwYXRoKHNlbGYsIGtleSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYWNo
ZWRpci5qb2luKCd2JywgKmtleS5zcGxpdCgnLycpKQotCi0gICAgZGVmIGdldChzZWxmLCBrZXks
IGRlZmF1bHQpOgotICAgICAgICAiIiIgcmV0dXJuIGNhY2hlZCB2YWx1ZSBmb3IgdGhlIGdpdmVu
IGtleS4gIElmIG5vIHZhbHVlCi0gICAgICAgIHdhcyB5ZXQgY2FjaGVkIG9yIHRoZSB2YWx1ZSBj
YW5ub3QgYmUgcmVhZCwgdGhlIHNwZWNpZmllZAotICAgICAgICBkZWZhdWx0IGlzIHJldHVybmVk
LgotCi0gICAgICAgIDpwYXJhbSBrZXk6IG11c3QgYmUgYSBgYC9gYCBzZXBhcmF0ZWQgdmFsdWUu
IFVzdWFsbHkgdGhlIGZpcnN0Ci0gICAgICAgICAgICAgbmFtZSBpcyB0aGUgbmFtZSBvZiB5b3Vy
IHBsdWdpbiBvciB5b3VyIGFwcGxpY2F0aW9uLgotICAgICAgICA6cGFyYW0gZGVmYXVsdDogbXVz
dCBiZSBwcm92aWRlZCBpbiBjYXNlIG9mIGEgY2FjaGUtbWlzcyBvcgotICAgICAgICAgICAgIGlu
dmFsaWQgY2FjaGUgdmFsdWVzLgotCi0gICAgICAgICIiIgotICAgICAgICBwYXRoID0gc2VsZi5f
Z2V0dmFsdWVwYXRoKGtleSkKLSAgICAgICAgaWYgcGF0aC5jaGVjaygpOgotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHdpdGggcGF0aC5vcGVuKCJyIikgYXMgZjoKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZChmKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi50cmFjZSgiY2FjaGUtaW52YWxpZCBhdCAlcyIg
JSAocGF0aCwpKQotICAgICAgICByZXR1cm4gZGVmYXVsdAotCi0gICAgZGVmIHNldChzZWxmLCBr
ZXksIHZhbHVlKToKLSAgICAgICAgIiIiIHNhdmUgdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkuCi0K
LSAgICAgICAgOnBhcmFtIGtleTogbXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZS4gVXN1
YWxseSB0aGUgZmlyc3QKLSAgICAgICAgICAgICBuYW1lIGlzIHRoZSBuYW1lIG9mIHlvdXIgcGx1
Z2luIG9yIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgIDpwYXJhbSB2YWx1ZTogbXVzdCBiZSBv
ZiBhbnkgY29tYmluYXRpb24gb2YgYmFzaWMKLSAgICAgICAgICAgICAgIHB5dGhvbiB0eXBlcywg
aW5jbHVkaW5nIG5lc3RlZCB0eXBlcwotICAgICAgICAgICAgICAgbGlrZSBlLiBnLiBsaXN0cyBv
ZiBkaWN0aW9uYXJpZXMuCi0gICAgICAgICIiIgotICAgICAgICBwYXRoID0gc2VsZi5fZ2V0dmFs
dWVwYXRoKGtleSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0aC5kaXJwYXRoKCkuZW5z
dXJlX2RpcigpCi0gICAgICAgIGV4Y2VwdCAocHkuZXJyb3IuRUVYSVNULCBweS5lcnJvci5FQUND
RVMpOgotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICAgICBjb2Rl
PSdJOScsIG1lc3NhZ2U9J2NvdWxkIG5vdCBjcmVhdGUgY2FjaGUgcGF0aCAlcycgJSAocGF0aCwp
Ci0gICAgICAgICAgICApCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgZiA9IHBhdGgub3BlbigndycpCi0gICAgICAgIGV4Y2VwdCBweS5lcnJvci5FTk9URElS
OgotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICAgICBjb2RlPSdJ
OScsIG1lc3NhZ2U9J2NhY2hlIGNvdWxkIG5vdCB3cml0ZSBwYXRoICVzJyAlIChwYXRoLCkpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi50
cmFjZSgiY2FjaGUtd3JpdGUgJXM6ICVyIiAlIChrZXksIHZhbHVlLCkpCi0gICAgICAgICAgICAg
ICAganNvbi5kdW1wKHZhbHVlLCBmLCBpbmRlbnQ9Miwgc29ydF9rZXlzPVRydWUpCi0KLQotY2xh
c3MgTEZQbHVnaW46Ci0gICAgIiIiIFBsdWdpbiB3aGljaCBpbXBsZW1lbnRzIHRoZSAtLWxmIChy
dW4gbGFzdC1mYWlsaW5nKSBvcHRpb24gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29u
ZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgYWN0aXZlX2tleXMg
PSAnbGYnLCAnZmFpbGVkZmlyc3QnCi0gICAgICAgIHNlbGYuYWN0aXZlID0gYW55KGNvbmZpZy5n
ZXR2YWx1ZShrZXkpIGZvciBrZXkgaW4gYWN0aXZlX2tleXMpCi0gICAgICAgIHNlbGYubGFzdGZh
aWxlZCA9IGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL2xhc3RmYWlsZWQiLCB7fSkKLSAgICAgICAg
c2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQgPSBOb25lCi0KLSAgICBkZWYgcHl0ZXN0X3Jl
cG9ydF9jb2xsZWN0aW9uZmluaXNoKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmFjdGl2ZToKLSAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudDoKLSAgICAgICAg
ICAgICAgICBtb2RlID0gInJ1biBhbGwgKG5vIHJlY29yZGVkIGZhaWx1cmVzKSIKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbm91biA9ICdmYWlsdXJlJyBpZiBzZWxmLl9wcmV2
aW91c2x5X2ZhaWxlZF9jb3VudCA9PSAxIGVsc2UgJ2ZhaWx1cmVzJwotICAgICAgICAgICAgICAg
IHN1ZmZpeCA9ICIgZmlyc3QiIGlmIHNlbGYuY29uZmlnLmdldHZhbHVlKCJmYWlsZWRmaXJzdCIp
IGVsc2UgIiIKLSAgICAgICAgICAgICAgICBtb2RlID0gInJlcnVuIHByZXZpb3VzIHtjb3VudH0g
e25vdW59e3N1ZmZpeH0iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgY291bnQ9c2VsZi5f
cHJldmlvdXNseV9mYWlsZWRfY291bnQsIHN1ZmZpeD1zdWZmaXgsIG5vdW49bm91bgotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIHJldHVybiAicnVuLWxhc3QtZmFpbHVyZTogJXMiICUg
bW9kZQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQpOgot
ICAgICAgICBpZiAocmVwb3J0LndoZW4gPT0gJ2NhbGwnIGFuZCByZXBvcnQucGFzc2VkKSBvciBy
ZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAgIHNlbGYubGFzdGZhaWxlZC5wb3AocmVwb3J0Lm5v
ZGVpZCwgTm9uZSkKLSAgICAgICAgZWxpZiByZXBvcnQuZmFpbGVkOgotICAgICAgICAgICAgc2Vs
Zi5sYXN0ZmFpbGVkW3JlcG9ydC5ub2RlaWRdID0gVHJ1ZQotCi0gICAgZGVmIHB5dGVzdF9jb2xs
ZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIHBhc3NlZCA9IHJlcG9ydC5vdXRjb21l
IGluICgncGFzc2VkJywgJ3NraXBwZWQnKQotICAgICAgICBpZiBwYXNzZWQ6Ci0gICAgICAgICAg
ICBpZiByZXBvcnQubm9kZWlkIGluIHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgICAgICBz
ZWxmLmxhc3RmYWlsZWQucG9wKHJlcG9ydC5ub2RlaWQpCi0gICAgICAgICAgICAgICAgc2VsZi5s
YXN0ZmFpbGVkLnVwZGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgKGl0ZW0ubm9kZWlkLCBUcnVl
KQotICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiByZXBvcnQucmVzdWx0KQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkW3JlcG9ydC5ub2RlaWRdID0gVHJ1
ZQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYsIHNlc3Npb24s
IGNvbmZpZywgaXRlbXMpOgotICAgICAgICBpZiBzZWxmLmFjdGl2ZSBhbmQgc2VsZi5sYXN0ZmFp
bGVkOgotICAgICAgICAgICAgcHJldmlvdXNseV9mYWlsZWQgPSBbXQotICAgICAgICAgICAgcHJl
dmlvdXNseV9wYXNzZWQgPSBbXQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAg
ICAgICAgICAgICAgaWYgaXRlbS5ub2RlaWQgaW4gc2VsZi5sYXN0ZmFpbGVkOgotICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c2x5X2ZhaWxlZC5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5X3Bhc3NlZC5hcHBlbmQoaXRl
bSkKLSAgICAgICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50ID0gbGVuKHByZXZp
b3VzbHlfZmFpbGVkKQotICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzbHlfZmFpbGVkOgotICAg
ICAgICAgICAgICAgICMgcnVubmluZyBhIHN1YnNldCBvZiBhbGwgdGVzdHMgd2l0aCByZWNvcmRl
ZCBmYWlsdXJlcyBvdXRzaWRlCi0gICAgICAgICAgICAgICAgIyBvZiB0aGUgc2V0IG9mIHRlc3Rz
IGN1cnJlbnRseSBleGVjdXRpbmcKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAg
IGlmIHNlbGYuY29uZmlnLmdldHZhbHVlKCJsZiIpOgotICAgICAgICAgICAgICAgIGl0ZW1zWzpd
ID0gcHJldmlvdXNseV9mYWlsZWQKLSAgICAgICAgICAgICAgICBjb25maWcuaG9vay5weXRlc3Rf
ZGVzZWxlY3RlZChpdGVtcz1wcmV2aW91c2x5X3Bhc3NlZCkKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgaXRlbXNbOl0gPSBwcmV2aW91c2x5X2ZhaWxlZCArIHByZXZpb3VzbHlf
cGFzc2VkCi0KLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2VsZiwgc2Vzc2lvbik6Ci0g
ICAgICAgIGNvbmZpZyA9IHNlbGYuY29uZmlnCi0gICAgICAgIGlmIGNvbmZpZy5nZXR2YWx1ZSgi
Y2FjaGVzaG93Iikgb3IgaGFzYXR0cihjb25maWcsICJzbGF2ZWlucHV0Iik6Ci0gICAgICAgICAg
ICByZXR1cm4KLQotICAgICAgICBzYXZlZF9sYXN0ZmFpbGVkID0gY29uZmlnLmNhY2hlLmdldCgi
Y2FjaGUvbGFzdGZhaWxlZCIsIHt9KQotICAgICAgICBpZiBzYXZlZF9sYXN0ZmFpbGVkICE9IHNl
bGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgIGNvbmZpZy5jYWNoZS5zZXQoImNhY2hlL2xhc3Rm
YWlsZWQiLCBzZWxmLmxhc3RmYWlsZWQpCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2Vy
KToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAuYWRk
b3B0aW9uKAotICAgICAgICAnLS1sZicsICctLWxhc3QtZmFpbGVkJywgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVzdD0ibGYiLAotICAgICAgICBoZWxwPSJyZXJ1biBvbmx5IHRoZSB0ZXN0cyB0aGF0
IGZhaWxlZCAiCi0gICAgICAgICAgICAgImF0IHRoZSBsYXN0IHJ1biAob3IgYWxsIGlmIG5vbmUg
ZmFpbGVkKSIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1mZicsICctLWZhaWxl
ZC1maXJzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9ImZhaWxlZGZpcnN0IiwKLSAgICAg
ICAgaGVscD0icnVuIGFsbCB0ZXN0cyBidXQgcnVuIHRoZSBsYXN0IGZhaWx1cmVzIGZpcnN0LiAg
IgotICAgICAgICAgICAgICJUaGlzIG1heSByZS1vcmRlciB0ZXN0cyBhbmQgdGh1cyBsZWFkIHRv
ICIKLSAgICAgICAgICAgICAicmVwZWF0ZWQgZml4dHVyZSBzZXR1cC90ZWFyZG93biIpCi0gICAg
Z3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1jYWNoZS1zaG93JywgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVzdD0iY2FjaGVzaG93IiwKLSAgICAgICAgaGVscD0ic2hvdyBjYWNoZSBjb250ZW50
cywgZG9uJ3QgcGVyZm9ybSBjb2xsZWN0aW9uIG9yIHRlc3RzIikKLSAgICBncm91cC5hZGRvcHRp
b24oCi0gICAgICAgICctLWNhY2hlLWNsZWFyJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0i
Y2FjaGVjbGVhciIsCi0gICAgICAgIGhlbHA9InJlbW92ZSBhbGwgY2FjaGUgY29udGVudHMgYXQg
c3RhcnQgb2YgdGVzdCBydW4uIikKLSAgICBwYXJzZXIuYWRkaW5pKAotICAgICAgICAiY2FjaGVf
ZGlyIiwgZGVmYXVsdD0nLmNhY2hlJywKLSAgICAgICAgaGVscD0iY2FjaGUgZGlyZWN0b3J5IHBh
dGguIikKLQotCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgotICAgIGlmIGNvbmZp
Zy5vcHRpb24uY2FjaGVzaG93OgotICAgICAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgd3Jh
cF9zZXNzaW9uCi0gICAgICAgIHJldHVybiB3cmFwX3Nlc3Npb24oY29uZmlnLCBjYWNoZXNob3cp
Ci0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9jb25maWd1
cmUoY29uZmlnKToKLSAgICBjb25maWcuY2FjaGUgPSBDYWNoZShjb25maWcpCi0gICAgY29uZmln
LnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoTEZQbHVnaW4oY29uZmlnKSwgImxmcGx1Z2luIikKLQot
Ci1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYWNoZShyZXF1ZXN0KToKLSAgICAiIiIKLSAgICBSZXR1
cm4gYSBjYWNoZSBvYmplY3QgdGhhdCBjYW4gcGVyc2lzdCBzdGF0ZSBiZXR3ZWVuIHRlc3Rpbmcg
c2Vzc2lvbnMuCi0KLSAgICBjYWNoZS5nZXQoa2V5LCBkZWZhdWx0KQotICAgIGNhY2hlLnNldChr
ZXksIHZhbHVlKQotCi0gICAgS2V5cyBtdXN0IGJlIGEgYGAvYGAgc2VwYXJhdGVkIHZhbHVlLCB3
aGVyZSB0aGUgZmlyc3QgcGFydCBpcyB1c3VhbGx5IHRoZQotICAgIG5hbWUgb2YgeW91ciBwbHVn
aW4gb3IgYXBwbGljYXRpb24gdG8gYXZvaWQgY2xhc2hlcyB3aXRoIG90aGVyIGNhY2hlIHVzZXJz
LgotCi0gICAgVmFsdWVzIGNhbiBiZSBhbnkgb2JqZWN0IGhhbmRsZWQgYnkgdGhlIGpzb24gc3Rk
bGliIG1vZHVsZS4KLSAgICAiIiIKLSAgICByZXR1cm4gcmVxdWVzdC5jb25maWcuY2FjaGUKLQot
Ci1kZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0aW9u
LnZlcmJvc2U6Ci0gICAgICAgIHJlbHBhdGggPSBweS5wYXRoLmxvY2FsKCkuYmVzdHJlbHBhdGgo
Y29uZmlnLmNhY2hlLl9jYWNoZWRpcikKLSAgICAgICAgcmV0dXJuICJjYWNoZWRpcjogJXMiICUg
cmVscGF0aAotCi0KLWRlZiBjYWNoZXNob3coY29uZmlnLCBzZXNzaW9uKToKLSAgICBmcm9tIHBw
cmludCBpbXBvcnQgcHByaW50Ci0gICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcigpCi0gICAg
dHcubGluZSgiY2FjaGVkaXI6ICIgKyBzdHIoY29uZmlnLmNhY2hlLl9jYWNoZWRpcikpCi0gICAg
aWYgbm90IGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIuY2hlY2soKToKLSAgICAgICAgdHcubGluZSgi
Y2FjaGUgaXMgZW1wdHkiKQotICAgICAgICByZXR1cm4gMAotICAgIGR1bW15ID0gb2JqZWN0KCkK
LSAgICBiYXNlZGlyID0gY29uZmlnLmNhY2hlLl9jYWNoZWRpcgotICAgIHZkaXIgPSBiYXNlZGly
LmpvaW4oInYiKQotICAgIHR3LnNlcCgiLSIsICJjYWNoZSB2YWx1ZXMiKQotICAgIGZvciB2YWxw
YXRoIGluIHNvcnRlZCh2ZGlyLnZpc2l0KGxhbWJkYSB4OiB4LmlzZmlsZSgpKSk6Ci0gICAgICAg
IGtleSA9IHZhbHBhdGgucmVsdG8odmRpcikucmVwbGFjZSh2YWxwYXRoLnNlcCwgIi8iKQotICAg
ICAgICB2YWwgPSBjb25maWcuY2FjaGUuZ2V0KGtleSwgZHVtbXkpCi0gICAgICAgIGlmIHZhbCBp
cyBkdW1teToKLSAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zIHVucmVhZGFibGUgY29u
dGVudCwgIgotICAgICAgICAgICAgICAgICAgICAid2lsbCBiZSBpZ25vcmVkIiAlIGtleSkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zOiIgJSBrZXkpCi0g
ICAgICAgICAgICBzdHJlYW0gPSBweS5pby5UZXh0SU8oKQotICAgICAgICAgICAgcHByaW50KHZh
bCwgc3RyZWFtPXN0cmVhbSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHN0cmVhbS5nZXR2YWx1
ZSgpLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICB0dy5saW5lKCIgICIgKyBsaW5lKQot
Ci0gICAgZGRpciA9IGJhc2VkaXIuam9pbigiZCIpCi0gICAgaWYgZGRpci5pc2RpcigpIGFuZCBk
ZGlyLmxpc3RkaXIoKToKLSAgICAgICAgdHcuc2VwKCItIiwgImNhY2hlIGRpcmVjdG9yaWVzIikK
LSAgICAgICAgZm9yIHAgaW4gc29ydGVkKGJhc2VkaXIuam9pbigiZCIpLnZpc2l0KCkpOgotICAg
ICAgICAgICAgIyBpZiBwLmNoZWNrKGRpcj0xKToKLSAgICAgICAgICAgICMgICAgcHJpbnQoIiVz
LyIgJSBwLnJlbHRvKGJhc2VkaXIpKQotICAgICAgICAgICAgaWYgcC5pc2ZpbGUoKToKLSAgICAg
ICAgICAgICAgICBrZXkgPSBwLnJlbHRvKGJhc2VkaXIpCi0gICAgICAgICAgICAgICAgdHcubGlu
ZSgiJXMgaXMgYSBmaWxlIG9mIGxlbmd0aCAlZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBrZXksIHAuc2l6ZSgpKSkKLSAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9jYXB0dXJlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYXB0dXJlLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmViZTM4YzhjMDkuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NhcHR1cmUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ODMg
KzAsMCBAQAotIiIiCi1wZXItdGVzdCBzdGRvdXQvc3RkZXJyIGNhcHR1cmluZyBtZWNoYW5pc20u
Ci0KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9u
LCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBjb250ZXh0bGli
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBpbwotZnJvbSBpbyBpbXBvcnQgVW5zdXBw
b3J0ZWRPcGVyYXRpb24KLWZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKLQotaW1w
b3J0IHNpeAotaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgQ2FwdHVy
ZUlPCi0KLQotcGF0Y2hzeXNkaWN0ID0gezA6ICdzdGRpbicsIDE6ICdzdGRvdXQnLCAyOiAnc3Rk
ZXJyJ30KLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFy
c2VyLmdldGdyb3VwKCJnZW5lcmFsIikKLSAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAgICAn
LS1jYXB0dXJlJywgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgIGRlZmF1bHQ9ImZkIiBpZiBoYXNh
dHRyKG9zLCAiZHVwIikgZWxzZSAic3lzIiwKLSAgICAgICAgbWV0YXZhcj0ibWV0aG9kIiwgY2hv
aWNlcz1bJ2ZkJywgJ3N5cycsICdubyddLAotICAgICAgICBoZWxwPSJwZXItdGVzdCBjYXB0dXJp
bmcgbWV0aG9kOiBvbmUgb2YgZmR8c3lzfG5vLiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigKLSAg
ICAgICAgJy1zJywgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJubyIsIGRlc3Q9ImNhcHR1
cmUiLAotICAgICAgICBoZWxwPSJzaG9ydGN1dCBmb3IgLS1jYXB0dXJlPW5vLiIpCi0KLQotQHB5
dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxf
Y29uZnRlc3RzKGVhcmx5X2NvbmZpZywgcGFyc2VyLCBhcmdzKToKLSAgICBucyA9IGVhcmx5X2Nv
bmZpZy5rbm93bl9hcmdzX25hbWVzcGFjZQotICAgIGlmIG5zLmNhcHR1cmUgPT0gImZkIjoKLSAg
ICAgICAgX3B5MzZfd2luZG93c2NvbnNvbGVpb193b3JrYXJvdW5kKHN5cy5zdGRvdXQpCi0gICAg
X2NvbG9yYW1hX3dvcmthcm91bmQoKQotICAgIF9yZWFkbGluZV93b3JrYXJvdW5kKCkKLSAgICBw
bHVnaW5tYW5hZ2VyID0gZWFybHlfY29uZmlnLnBsdWdpbm1hbmFnZXIKLSAgICBjYXBtYW4gPSBD
YXB0dXJlTWFuYWdlcihucy5jYXB0dXJlKQotICAgIHBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoY2Fw
bWFuLCAiY2FwdHVyZW1hbmFnZXIiKQotCi0gICAgIyBtYWtlIHN1cmUgdGhhdCBjYXB0dXJlbWFu
YWdlciBpcyBwcm9wZXJseSByZXNldCBhdCBmaW5hbCBzaHV0ZG93bgotICAgIGVhcmx5X2NvbmZp
Zy5hZGRfY2xlYW51cChjYXBtYW4uc3RvcF9nbG9iYWxfY2FwdHVyaW5nKQotCi0gICAgIyBtYWtl
IHN1cmUgbG9nZ2luZyBkb2VzIG5vdCByYWlzZSBleGNlcHRpb25zIGF0IHRoZSBlbmQKLSAgICBk
ZWYgc2lsZW5jZV9sb2dnaW5nX2F0X3NodXRkb3duKCk6Ci0gICAgICAgIGlmICJsb2dnaW5nIiBp
biBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzWyJsb2dnaW5nIl0ucmFpc2VF
eGNlcHRpb25zID0gRmFsc2UKLSAgICBlYXJseV9jb25maWcuYWRkX2NsZWFudXAoc2lsZW5jZV9s
b2dnaW5nX2F0X3NodXRkb3duKQotCi0gICAgIyBmaW5hbGx5IHRyaWdnZXIgY29uZnRlc3QgbG9h
ZGluZyBidXQgd2hpbGUgY2FwdHVyaW5nIChpc3N1ZTkzKQotICAgIGNhcG1hbi5zdGFydF9nbG9i
YWxfY2FwdHVyaW5nKCkKLSAgICBvdXRjb21lID0geWllbGQKLSAgICBvdXQsIGVyciA9IGNhcG1h
bi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKLSAgICBpZiBvdXRjb21lLmV4Y2luZm8gaXMgbm90
IE5vbmU6Ci0gICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3V0KQotICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKGVycikKLQotCi1jbGFzcyBDYXB0dXJlTWFuYWdlcjoKLSAgICAiIiIKLSAgICBDYXB0
dXJlIHBsdWdpbiwgbWFuYWdlcyB0aGF0IHRoZSBhcHByb3ByaWF0ZSBjYXB0dXJlIG1ldGhvZCBp
cyBlbmFibGVkL2Rpc2FibGVkIGR1cmluZyBjb2xsZWN0aW9uIGFuZCBlYWNoCi0gICAgdGVzdCBw
aGFzZSAoc2V0dXAsIGNhbGwsIHRlYXJkb3duKS4gQWZ0ZXIgZWFjaCBvZiB0aG9zZSBwb2ludHMs
IHRoZSBjYXB0dXJlZCBvdXRwdXQgaXMgb2J0YWluZWQgYW5kCi0gICAgYXR0YWNoZWQgdG8gdGhl
IGNvbGxlY3Rpb24vcnVudGVzdCByZXBvcnQuCi0KLSAgICBUaGVyZSBhcmUgdHdvIGxldmVscyBv
ZiBjYXB0dXJlOgotICAgICogZ2xvYmFsOiB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgYW5k
IGNhbiBiZSBzdXBwcmVzc2VkIGJ5IHRoZSBgYC1zYGAgb3B0aW9uLiBUaGlzIGlzIGFsd2F5cyBl
bmFibGVkL2Rpc2FibGVkCi0gICAgICBkdXJpbmcgY29sbGVjdGlvbiBhbmQgZWFjaCB0ZXN0IHBo
YXNlLgotICAgICogZml4dHVyZTogd2hlbiBhIHRlc3QgZnVuY3Rpb24gb3Igb25lIG9mIGl0cyBm
aXh0dXJlIGRlcGVuZCBvbiB0aGUgYGBjYXBzeXNgYCBvciBgYGNhcGZkYGAgZml4dHVyZXMuIElu
IHRoaXMKLSAgICAgIGNhc2Ugc3BlY2lhbCBoYW5kbGluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRo
ZSBmaXh0dXJlcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgZ2xvYmFsIGNhcHR1cmUuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kKToKLSAgICAgICAgc2VsZi5fbWV0
aG9kID0gbWV0aG9kCi0gICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcgPSBOb25lCi0KLSAg
ICBkZWYgX2dldGNhcHR1cmUoc2VsZiwgbWV0aG9kKToKLSAgICAgICAgaWYgbWV0aG9kID09ICJm
ZCI6Ci0gICAgICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJlKG91dD1UcnVlLCBlcnI9VHJ1ZSwg
Q2FwdHVyZT1GRENhcHR1cmUpCi0gICAgICAgIGVsaWYgbWV0aG9kID09ICJzeXMiOgotICAgICAg
ICAgICAgcmV0dXJuIE11bHRpQ2FwdHVyZShvdXQ9VHJ1ZSwgZXJyPVRydWUsIENhcHR1cmU9U3lz
Q2FwdHVyZSkKLSAgICAgICAgZWxpZiBtZXRob2QgPT0gIm5vIjoKLSAgICAgICAgICAgIHJldHVy
biBNdWx0aUNhcHR1cmUob3V0PUZhbHNlLCBlcnI9RmFsc2UsIGluXz1GYWxzZSkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gY2FwdHVyaW5nIG1l
dGhvZDogJXIiICUgbWV0aG9kKQotCi0gICAgZGVmIHN0YXJ0X2dsb2JhbF9jYXB0dXJpbmcoc2Vs
Zik6Ci0gICAgICAgIGFzc2VydCBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nIGlzIE5vbmUKLSAgICAg
ICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyA9IHNlbGYuX2dldGNhcHR1cmUoc2VsZi5fbWV0aG9k
KQotICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnN0YXJ0X2NhcHR1cmluZygpCi0KLSAg
ICBkZWYgc3RvcF9nbG9iYWxfY2FwdHVyaW5nKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9nbG9i
YWxfY2FwdHVyaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1
cmluZy5wb3Bfb3V0ZXJyX3RvX29yaWcoKQotICAgICAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1
cmluZy5zdG9wX2NhcHR1cmluZygpCi0gICAgICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5n
ID0gTm9uZQotCi0gICAgZGVmIHJlc3VtZV9nbG9iYWxfY2FwdHVyZShzZWxmKToKLSAgICAgICAg
c2VsZi5fZ2xvYmFsX2NhcHR1cmluZy5yZXN1bWVfY2FwdHVyaW5nKCkKLQotICAgIGRlZiBzdXNw
ZW5kX2dsb2JhbF9jYXB0dXJlKHNlbGYsIGl0ZW09Tm9uZSwgaW5fPUZhbHNlKToKLSAgICAgICAg
aWYgaXRlbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuZGVhY3RpdmF0ZV9maXh0dXJl
KGl0ZW0pCi0gICAgICAgIGNhcCA9IGdldGF0dHIoc2VsZiwgIl9nbG9iYWxfY2FwdHVyaW5nIiwg
Tm9uZSkKLSAgICAgICAgaWYgY2FwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIG91dGVyciA9IGNhcC5yZWFkb3V0ZXJyKCkKLSAgICAgICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICAgICAgY2FwLnN1c3BlbmRfY2FwdHVyaW5nKGluXz1pbl8pCi0gICAg
ICAgICAgICByZXR1cm4gb3V0ZXJyCi0KLSAgICBkZWYgYWN0aXZhdGVfZml4dHVyZShzZWxmLCBp
dGVtKToKLSAgICAgICAgIiIiSWYgdGhlIGN1cnJlbnQgaXRlbSBpcyB1c2luZyBgYGNhcHN5c2Bg
IG9yIGBgY2FwZmRgYCwgYWN0aXZhdGUgdGhlbSBzbyB0aGV5IHRha2UgcHJlY2VkZW5jZSBvdmVy
Ci0gICAgICAgIHRoZSBnbG9iYWwgY2FwdHVyZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGZpeHR1
cmUgPSBnZXRhdHRyKGl0ZW0sICJfY2FwdHVyZV9maXh0dXJlIiwgTm9uZSkKLSAgICAgICAgaWYg
Zml4dHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZpeHR1cmUuX3N0YXJ0KCkKLQotICAg
IGRlZiBkZWFjdGl2YXRlX2ZpeHR1cmUoc2VsZiwgaXRlbSk6Ci0gICAgICAgICIiIkRlYWN0aXZh
dGVzIHRoZSBgYGNhcHN5c2BgIG9yIGBgY2FwZmRgYCBmaXh0dXJlIG9mIHRoaXMgaXRlbSwgaWYg
YW55LiIiIgotICAgICAgICBmaXh0dXJlID0gZ2V0YXR0cihpdGVtLCAiX2NhcHR1cmVfZml4dHVy
ZSIsIE5vbmUpCi0gICAgICAgIGlmIGZpeHR1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBm
aXh0dXJlLmNsb3NlKCkKLQotICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkK
LSAgICBkZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoc2VsZiwgY29sbGVjdG9yKToKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShjb2xsZWN0b3IsIHB5dGVzdC5GaWxlKToKLSAgICAgICAgICAg
IHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgICAgIG91dGNvbWUgPSB5aWVs
ZAotICAgICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQot
ICAgICAgICAgICAgcmVwID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICAgICAgICAgIGlmIG91
dDoKLSAgICAgICAgICAgICAgICByZXAuc2VjdGlvbnMuYXBwZW5kKCgiQ2FwdHVyZWQgc3Rkb3V0
Iiwgb3V0KSkKLSAgICAgICAgICAgIGlmIGVycjoKLSAgICAgICAgICAgICAgICByZXAuc2VjdGlv
bnMuYXBwZW5kKCgiQ2FwdHVyZWQgc3RkZXJyIiwgZXJyKSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHlpZWxkCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0g
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKHNlbGYsIGl0ZW0pOgotICAgICAgICBzZWxmLnJl
c3VtZV9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAgICMgbm8gbmVlZCB0byBhY3RpdmF0ZSBhIGNh
cHR1cmUgZml4dHVyZSBiZWNhdXNlIHRoZXkgYWN0aXZhdGUgdGhlbXNlbHZlcyBkdXJpbmcgY3Jl
YXRpb247IHRoaXMKLSAgICAgICAgIyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4gYSBmaXh0dXJlIHVz
ZXMgYSBjYXB0dXJlIGZpeHR1cmUsIG90aGVyd2lzZSB0aGUgY2FwdHVyZSBmaXh0dXJlIHdpbGwK
LSAgICAgICAgIyBiZSBhY3RpdmF0ZWQgZHVyaW5nIHB5dGVzdF9ydW50ZXN0X2NhbGwKLSAgICAg
ICAgeWllbGQKLSAgICAgICAgc2VsZi5zdXNwZW5kX2NhcHR1cmVfaXRlbShpdGVtLCAic2V0dXAi
KQotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRl
c3RfcnVudGVzdF9jYWxsKHNlbGYsIGl0ZW0pOgotICAgICAgICBzZWxmLnJlc3VtZV9nbG9iYWxf
Y2FwdHVyZSgpCi0gICAgICAgICMgaXQgaXMgaW1wb3J0YW50IHRvIGFjdGl2YXRlIHRoaXMgZml4
dHVyZSBkdXJpbmcgdGhlIGNhbGwgcGhhc2Ugc28gaXQgb3ZlcndyaXRlcyB0aGUgImdsb2JhbCIK
LSAgICAgICAgIyBjYXB0dXJlCi0gICAgICAgIHNlbGYuYWN0aXZhdGVfZml4dHVyZShpdGVtKQot
ICAgICAgICB5aWVsZAotICAgICAgICBzZWxmLnN1c3BlbmRfY2FwdHVyZV9pdGVtKGl0ZW0sICJj
YWxsIikKLQotICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYg
cHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oc2VsZiwgaXRlbSk6Ci0gICAgICAgIHNlbGYucmVzdW1l
X2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgc2VsZi5hY3RpdmF0ZV9maXh0dXJlKGl0ZW0pCi0g
ICAgICAgIHlpZWxkCi0gICAgICAgIHNlbGYuc3VzcGVuZF9jYXB0dXJlX2l0ZW0oaXRlbSwgInRl
YXJkb3duIikKLQotICAgIEBweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYg
cHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdChzZWxmLCBleGNpbmZvKToKLSAgICAgICAgc2VsZi5z
dG9wX2dsb2JhbF9jYXB0dXJpbmcoKQotCi0gICAgQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1U
cnVlKQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCBleGNpbmZvKToKLSAgICAg
ICAgc2VsZi5zdG9wX2dsb2JhbF9jYXB0dXJpbmcoKQotCi0gICAgZGVmIHN1c3BlbmRfY2FwdHVy
ZV9pdGVtKHNlbGYsIGl0ZW0sIHdoZW4sIGluXz1GYWxzZSk6Ci0gICAgICAgIG91dCwgZXJyID0g
c2VsZi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGl0ZW0sIGluXz1pbl8pCi0gICAgICAgIGl0ZW0u
YWRkX3JlcG9ydF9zZWN0aW9uKHdoZW4sICJzdGRvdXQiLCBvdXQpCi0gICAgICAgIGl0ZW0uYWRk
X3JlcG9ydF9zZWN0aW9uKHdoZW4sICJzdGRlcnIiLCBlcnIpCi0KLQotY2FwdHVyZV9maXh0dXJl
cyA9IHsnY2FwZmQnLCAnY2FwZmRiaW5hcnknLCAnY2Fwc3lzJywgJ2NhcHN5c2JpbmFyeSd9Ci0K
LQotZGVmIF9lbnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJlKHJlcXVlc3QsIG5hbWUpOgot
ICAgIGZpeHR1cmVzID0gc2V0KHJlcXVlc3QuZml4dHVyZW5hbWVzKSAmIGNhcHR1cmVfZml4dHVy
ZXMgLSBzZXQoKG5hbWUsKSkKLSAgICBpZiBmaXh0dXJlczoKLSAgICAgICAgZml4dHVyZXMgPSBz
b3J0ZWQoZml4dHVyZXMpCi0gICAgICAgIGZpeHR1cmVzID0gZml4dHVyZXNbMF0gaWYgbGVuKGZp
eHR1cmVzKSA9PSAxIGVsc2UgZml4dHVyZXMKLSAgICAgICAgcmFpc2UgcmVxdWVzdC5yYWlzZWVy
cm9yKAotICAgICAgICAgICAgImNhbm5vdCB1c2UgezB9IGFuZCB7MX0gYXQgdGhlIHNhbWUgdGlt
ZSIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGZpeHR1cmVzLCBuYW1lLAotICAgICAgICAgICAg
KSwKLSAgICAgICAgKQotCi0KLUBweXRlc3QuZml4dHVyZQotZGVmIGNhcHN5cyhyZXF1ZXN0KToK
LSAgICAiIiJFbmFibGUgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBzeXMuc3Rkb3V0L3N5cy5zdGRl
cnIgYW5kIG1ha2UKLSAgICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcHN5cy5y
ZWFkb3V0ZXJyKClgYCBtZXRob2QgY2FsbHMKLSAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVy
cilgYCB0dXBsZS4gIGBgb3V0YGAgYW5kIGBgZXJyYGAgd2lsbCBiZSBgYHRleHRgYAotICAgIG9i
amVjdHMuCi0gICAgIiIiCi0gICAgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVx
dWVzdCwgJ2NhcHN5cycpCi0gICAgd2l0aCBfaW5zdGFsbF9jYXB0dXJlX2ZpeHR1cmVfb25faXRl
bShyZXF1ZXN0LCBTeXNDYXB0dXJlKSBhcyBmaXh0dXJlOgotICAgICAgICB5aWVsZCBmaXh0dXJl
Ci0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgY2Fwc3lzYmluYXJ5KHJlcXVlc3QpOgotICAgICIi
IkVuYWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRvIHN5cy5zdGRvdXQvc3lzLnN0ZGVyciBhbmQg
bWFrZQotICAgIGNhcHR1cmVkIG91dHB1dCBhdmFpbGFibGUgdmlhIGBgY2Fwc3lzLnJlYWRvdXRl
cnIoKWBgIG1ldGhvZCBjYWxscwotICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIHR1
cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgYnl0ZXNgYAotICAgIG9iamVjdHMu
Ci0gICAgIiIiCi0gICAgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVxdWVzdCwg
J2NhcHN5c2JpbmFyeScpCi0gICAgIyBDdXJyZW50bHksIHRoZSBpbXBsZW1lbnRhdGlvbiB1c2Vz
IHRoZSBweXRob24zIHNwZWNpZmljIGAuYnVmZmVyYAotICAgICMgcHJvcGVydHkgb2YgQ2FwdHVy
ZUlPLgotICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywpOgotICAgICAgICByYWlzZSByZXF1
ZXN0LnJhaXNlZXJyb3IoJ2NhcHN5c2JpbmFyeSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBweXRob24g
MycpCi0gICAgd2l0aCBfaW5zdGFsbF9jYXB0dXJlX2ZpeHR1cmVfb25faXRlbShyZXF1ZXN0LCBT
eXNDYXB0dXJlQmluYXJ5KSBhcyBmaXh0dXJlOgotICAgICAgICB5aWVsZCBmaXh0dXJlCi0KLQot
QHB5dGVzdC5maXh0dXJlCi1kZWYgY2FwZmQocmVxdWVzdCk6Ci0gICAgIiIiRW5hYmxlIGNhcHR1
cmluZyBvZiB3cml0ZXMgdG8gZmlsZSBkZXNjcmlwdG9ycyAxIGFuZCAyIGFuZCBtYWtlCi0gICAg
Y2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBmZC5yZWFkb3V0ZXJyKClgYCBtZXRo
b2QgY2FsbHMKLSAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0
YGAgYW5kIGBgZXJyYGAgd2lsbCBiZSBgYHRleHRgYAotICAgIG9iamVjdHMuCi0gICAgIiIiCi0g
ICAgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVxdWVzdCwgJ2NhcGZkJykKLSAg
ICBpZiBub3QgaGFzYXR0cihvcywgJ2R1cCcpOgotICAgICAgICBweXRlc3Quc2tpcCgiY2FwZmQg
Zml4dHVyZSBuZWVkcyBvcy5kdXAgZnVuY3Rpb24gd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiB0
aGlzIHN5c3RlbSIpCi0gICAgd2l0aCBfaW5zdGFsbF9jYXB0dXJlX2ZpeHR1cmVfb25faXRlbShy
ZXF1ZXN0LCBGRENhcHR1cmUpIGFzIGZpeHR1cmU6Ci0gICAgICAgIHlpZWxkIGZpeHR1cmUKLQot
Ci1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBmZGJpbmFyeShyZXF1ZXN0KToKLSAgICAiIiJFbmFi
bGUgY2FwdHVyaW5nIG9mIHdyaXRlIHRvIGZpbGUgZGVzY3JpcHRvcnMgMSBhbmQgMiBhbmQgbWFr
ZQotICAgIGNhcHR1cmVkIG91dHB1dCBhdmFpbGFibGUgdmlhIGBgY2FwZmRiaW5hcnkucmVhZG91
dGVycmBgIG1ldGhvZCBjYWxscwotICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIHR1
cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlCi0gICAgYGBieXRlc2BgIG9iamVjdHMu
Ci0gICAgIiIiCi0gICAgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVxdWVzdCwg
J2NhcGZkYmluYXJ5JykKLSAgICBpZiBub3QgaGFzYXR0cihvcywgJ2R1cCcpOgotICAgICAgICBw
eXRlc3Quc2tpcCgiY2FwZmRiaW5hcnkgZml4dHVyZSBuZWVkcyBvcy5kdXAgZnVuY3Rpb24gd2hp
Y2ggaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIHN5c3RlbSIpCi0gICAgd2l0aCBfaW5zdGFsbF9j
YXB0dXJlX2ZpeHR1cmVfb25faXRlbShyZXF1ZXN0LCBGRENhcHR1cmVCaW5hcnkpIGFzIGZpeHR1
cmU6Ci0gICAgICAgIHlpZWxkIGZpeHR1cmUKLQotCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdl
cgotZGVmIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIGNhcHR1cmVf
Y2xhc3MpOgotICAgICIiIgotICAgIENvbnRleHQgbWFuYWdlciB3aGljaCBjcmVhdGVzIGEgYGBD
YXB0dXJlRml4dHVyZWBgIGluc3RhbmNlIGFuZCAiaW5zdGFsbHMiIGl0IG9uCi0gICAgdGhlIGl0
ZW0vbm9kZSBvZiB0aGUgZ2l2ZW4gcmVxdWVzdC4gVXNlZCBieSBgYGNhcHN5c2BgIGFuZCBgYGNh
cGZkYGAuCi0KLSAgICBUaGUgQ2FwdHVyZUZpeHR1cmUgaXMgYWRkZWQgYXMgYXR0cmlidXRlIG9m
IHRoZSBpdGVtIGJlY2F1c2UgaXQgbmVlZHMgdG8gYWNjZXNzZWQKLSAgICBieSBgYENhcHR1cmVN
YW5hZ2VyYGAgZHVyaW5nIGl0cyBgYHB5dGVzdF9ydW50ZXN0XypgYCBob29rcy4KLSAgICAiIiIK
LSAgICByZXF1ZXN0Lm5vZGUuX2NhcHR1cmVfZml4dHVyZSA9IGZpeHR1cmUgPSBDYXB0dXJlRml4
dHVyZShjYXB0dXJlX2NsYXNzLCByZXF1ZXN0KQotICAgIGNhcG1hbmFnZXIgPSByZXF1ZXN0LmNv
bmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbignY2FwdHVyZW1hbmFnZXInKQotICAgICMgbmVl
ZCB0byBhY3RpdmUgdGhpcyBmaXh0dXJlIHJpZ2h0IGF3YXkgaW4gY2FzZSBpdCBpcyBiZWluZyB1
c2VkIGJ5IGFub3RoZXIgZml4dHVyZSAoc2V0dXAgcGhhc2UpCi0gICAgIyBpZiB0aGlzIGZpeHR1
cmUgaXMgYmVpbmcgdXNlZCBvbmx5IGJ5IGEgdGVzdCBmdW5jdGlvbiAoY2FsbCBwaGFzZSksIHRo
ZW4gd2Ugd291bGRuJ3QgbmVlZCB0aGlzCi0gICAgIyBhY3RpdmF0aW9uLCBidXQgaXQgZG9lc24n
dCBodXJ0Ci0gICAgY2FwbWFuYWdlci5hY3RpdmF0ZV9maXh0dXJlKHJlcXVlc3Qubm9kZSkKLSAg
ICB5aWVsZCBmaXh0dXJlCi0gICAgZml4dHVyZS5jbG9zZSgpCi0gICAgZGVsIHJlcXVlc3Qubm9k
ZS5fY2FwdHVyZV9maXh0dXJlCi0KLQotY2xhc3MgQ2FwdHVyZUZpeHR1cmU6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNhcHR1cmVjbGFzcywgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYuY2FwdHVy
ZWNsYXNzID0gY2FwdHVyZWNsYXNzCi0gICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLQot
ICAgIGRlZiBfc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmUgPSBNdWx0aUNhcHR1
cmUob3V0PVRydWUsIGVycj1UcnVlLCBpbl89RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FwdHVyZT1zZWxmLmNhcHR1cmVjbGFzcykKLSAgICAgICAgc2VsZi5f
Y2FwdHVyZS5zdGFydF9jYXB0dXJpbmcoKQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAg
ICBjYXAgPSBzZWxmLl9fZGljdF9fLnBvcCgiX2NhcHR1cmUiLCBOb25lKQotICAgICAgICBpZiBj
YXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9vdXRlcnIgPSBjYXAucG9wX291dGVy
cl90b19vcmlnKCkKLSAgICAgICAgICAgIGNhcC5zdG9wX2NhcHR1cmluZygpCi0KLSAgICBkZWYg
cmVhZG91dGVycihzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2NhcHR1cmUucmVhZG91dGVycigpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9vdXRlcnIKLQotICAgIEBjb250ZXh0bGliLmNvbnRleHRt
YW5hZ2VyCi0gICAgZGVmIGRpc2FibGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9jYXB0dXJlLnN1
c3BlbmRfY2FwdHVyaW5nKCkKLSAgICAgICAgY2FwbWFuYWdlciA9IHNlbGYucmVxdWVzdC5jb25m
aWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oJ2NhcHR1cmVtYW5hZ2VyJykKLSAgICAgICAgY2Fw
bWFuYWdlci5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGl0ZW09Tm9uZSwgaW5fPUZhbHNlKQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgY2FwbWFuYWdlci5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAgICAgICAgc2VsZi5f
Y2FwdHVyZS5yZXN1bWVfY2FwdHVyaW5nKCkKLQotCi1kZWYgc2FmZV90ZXh0X2R1cGZpbGUoZiwg
bW9kZSwgZGVmYXVsdF9lbmNvZGluZz0iVVRGOCIpOgotICAgICIiIiByZXR1cm4gYSBvcGVuIHRl
eHQgZmlsZSBvYmplY3QgdGhhdCdzIGEgZHVwbGljYXRlIG9mIGYgb24gdGhlCi0gICAgICAgIEZE
LWxldmVsIGlmIHBvc3NpYmxlLgotICAgICIiIgotICAgIGVuY29kaW5nID0gZ2V0YXR0cihmLCAi
ZW5jb2RpbmciLCBOb25lKQotICAgIHRyeToKLSAgICAgICAgZmQgPSBmLmZpbGVubygpCi0gICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgaWYgImIiIG5vdCBpbiBnZXRhdHRyKGYsICJtb2Rl
IiwgIiIpIGFuZCBoYXNhdHRyKGYsICJlbmNvZGluZyIpOgotICAgICAgICAgICAgIyB3ZSBzZWVt
IHRvIGhhdmUgYSB0ZXh0IHN0cmVhbSwgbGV0J3MganVzdCB1c2UgaXQKLSAgICAgICAgICAgIHJl
dHVybiBmCi0gICAgZWxzZToKLSAgICAgICAgbmV3ZmQgPSBvcy5kdXAoZmQpCi0gICAgICAgIGlm
ICJiIiBub3QgaW4gbW9kZToKLSAgICAgICAgICAgIG1vZGUgKz0gImIiCi0gICAgICAgIGYgPSBv
cy5mZG9wZW4obmV3ZmQsIG1vZGUsIDApICAjIG5vIGJ1ZmZlcmluZwotICAgIHJldHVybiBFbmNv
ZGVkRmlsZShmLCBlbmNvZGluZyBvciBkZWZhdWx0X2VuY29kaW5nKQotCi0KLWNsYXNzIEVuY29k
ZWRGaWxlKG9iamVjdCk6Ci0gICAgZXJyb3JzID0gInN0cmljdCIgICMgcG9zc2libHkgbmVlZGVk
IGJ5IHB5MyBjb2RlIChpc3N1ZTU1NSkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWZmZXIs
IGVuY29kaW5nKToKLSAgICAgICAgc2VsZi5idWZmZXIgPSBidWZmZXIKLSAgICAgICAgc2VsZi5l
bmNvZGluZyA9IGVuY29kaW5nCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgb2JqKToKLSAgICAgICAg
aWYgaXNpbnN0YW5jZShvYmosIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICAgICAgb2JqID0gb2Jq
LmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpCi0gICAgICAgIHNlbGYuYnVmZmVyLndy
aXRlKG9iaikKLQotICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIGxpbmVsaXN0KToKLSAgICAgICAg
ZGF0YSA9ICcnLmpvaW4obGluZWxpc3QpCi0gICAgICAgIHNlbGYud3JpdGUoZGF0YSkKLQotICAg
IEBwcm9wZXJ0eQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICAiIiJFbnN1cmUgdGhhdCBm
aWxlLm5hbWUgaXMgYSBzdHJpbmcuIiIiCi0gICAgICAgIHJldHVybiByZXByKHNlbGYuYnVmZmVy
KQotCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gZ2V0
YXR0cihvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCAiYnVmZmVyIiksIG5hbWUpCi0KLQot
Q2FwdHVyZVJlc3VsdCA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoIkNhcHR1cmVSZXN1bHQiLCBb
Im91dCIsICJlcnIiXSkKLQotCi1jbGFzcyBNdWx0aUNhcHR1cmUob2JqZWN0KToKLSAgICBvdXQg
PSBlcnIgPSBpbl8gPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0PVRydWUsIGVy
cj1UcnVlLCBpbl89VHJ1ZSwgQ2FwdHVyZT1Ob25lKToKLSAgICAgICAgaWYgaW5fOgotICAgICAg
ICAgICAgc2VsZi5pbl8gPSBDYXB0dXJlKDApCi0gICAgICAgIGlmIG91dDoKLSAgICAgICAgICAg
IHNlbGYub3V0ID0gQ2FwdHVyZSgxKQotICAgICAgICBpZiBlcnI6Ci0gICAgICAgICAgICBzZWxm
LmVyciA9IENhcHR1cmUoMikKLQotICAgIGRlZiBzdGFydF9jYXB0dXJpbmcoc2VsZik6Ci0gICAg
ICAgIGlmIHNlbGYuaW5fOgotICAgICAgICAgICAgc2VsZi5pbl8uc3RhcnQoKQotICAgICAgICBp
ZiBzZWxmLm91dDoKLSAgICAgICAgICAgIHNlbGYub3V0LnN0YXJ0KCkKLSAgICAgICAgaWYgc2Vs
Zi5lcnI6Ci0gICAgICAgICAgICBzZWxmLmVyci5zdGFydCgpCi0KLSAgICBkZWYgcG9wX291dGVy
cl90b19vcmlnKHNlbGYpOgotICAgICAgICAiIiIgcG9wIGN1cnJlbnQgc25hcHNob3Qgb3V0L2Vy
ciBjYXB0dXJlIGFuZCBmbHVzaCB0byBvcmlnIHN0cmVhbXMuICIiIgotICAgICAgICBvdXQsIGVy
ciA9IHNlbGYucmVhZG91dGVycigpCi0gICAgICAgIGlmIG91dDoKLSAgICAgICAgICAgIHNlbGYu
b3V0LndyaXRlb3JnKG91dCkKLSAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIu
d3JpdGVvcmcoZXJyKQotICAgICAgICByZXR1cm4gb3V0LCBlcnIKLQotICAgIGRlZiBzdXNwZW5k
X2NhcHR1cmluZyhzZWxmLCBpbl89RmFsc2UpOgotICAgICAgICBpZiBzZWxmLm91dDoKLSAgICAg
ICAgICAgIHNlbGYub3V0LnN1c3BlbmQoKQotICAgICAgICBpZiBzZWxmLmVycjoKLSAgICAgICAg
ICAgIHNlbGYuZXJyLnN1c3BlbmQoKQotICAgICAgICBpZiBpbl8gYW5kIHNlbGYuaW5fOgotICAg
ICAgICAgICAgc2VsZi5pbl8uc3VzcGVuZCgpCi0gICAgICAgICAgICBzZWxmLl9pbl9zdXNwZW5k
ZWQgPSBUcnVlCi0KLSAgICBkZWYgcmVzdW1lX2NhcHR1cmluZyhzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5vdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dC5yZXN1bWUoKQotICAgICAgICBpZiBzZWxm
LmVycjoKLSAgICAgICAgICAgIHNlbGYuZXJyLnJlc3VtZSgpCi0gICAgICAgIGlmIGhhc2F0dHIo
c2VsZiwgIl9pbl9zdXNwZW5kZWQiKToKLSAgICAgICAgICAgIHNlbGYuaW5fLnJlc3VtZSgpCi0g
ICAgICAgICAgICBkZWwgc2VsZi5faW5fc3VzcGVuZGVkCi0KLSAgICBkZWYgc3RvcF9jYXB0dXJp
bmcoc2VsZik6Ci0gICAgICAgICIiIiBzdG9wIGNhcHR1cmluZyBhbmQgcmVzZXQgY2FwdHVyaW5n
IHN0cmVhbXMgIiIiCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19yZXNldCcpOgotICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigid2FzIGFscmVhZHkgc3RvcHBlZCIpCi0gICAgICAgIHNl
bGYuX3Jlc2V0ID0gVHJ1ZQotICAgICAgICBpZiBzZWxmLm91dDoKLSAgICAgICAgICAgIHNlbGYu
b3V0LmRvbmUoKQotICAgICAgICBpZiBzZWxmLmVycjoKLSAgICAgICAgICAgIHNlbGYuZXJyLmRv
bmUoKQotICAgICAgICBpZiBzZWxmLmluXzoKLSAgICAgICAgICAgIHNlbGYuaW5fLmRvbmUoKQot
Ci0gICAgZGVmIHJlYWRvdXRlcnIoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gc25hcHNob3Qg
dW5pY29kZSB2YWx1ZSBvZiBzdGRvdXQvc3RkZXJyIGNhcHR1cmluZ3MuICIiIgotICAgICAgICBy
ZXR1cm4gQ2FwdHVyZVJlc3VsdChzZWxmLm91dC5zbmFwKCkgaWYgc2VsZi5vdXQgaXMgbm90IE5v
bmUgZWxzZSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnIuc25hcCgp
IGlmIHNlbGYuZXJyIGlzIG5vdCBOb25lIGVsc2UgIiIpCi0KLQotY2xhc3MgTm9DYXB0dXJlOgot
ICAgIF9faW5pdF9fID0gc3RhcnQgPSBkb25lID0gc3VzcGVuZCA9IHJlc3VtZSA9IGxhbWJkYSAq
YXJnczogTm9uZQotCi0KLWNsYXNzIEZEQ2FwdHVyZUJpbmFyeToKLSAgICAiIiJDYXB0dXJlIElP
IHRvL2Zyb20gYSBnaXZlbiBvcy1sZXZlbCBmaWxlZGVzY3JpcHRvci4KLQotICAgIHNuYXAoKSBw
cm9kdWNlcyBgYnl0ZXNgCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0
ZmQsIHRtcGZpbGU9Tm9uZSk6Ci0gICAgICAgIHNlbGYudGFyZ2V0ZmQgPSB0YXJnZXRmZAotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRhcmdldGZkX3NhdmUgPSBvcy5kdXAoc2VsZi50
YXJnZXRmZCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLnN0YXJ0
ID0gbGFtYmRhOiBOb25lCi0gICAgICAgICAgICBzZWxmLmRvbmUgPSBsYW1iZGE6IE5vbmUKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHRhcmdldGZkID09IDA6Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0IG5vdCB0bXBmaWxlLCAiY2Fubm90IHNldCB0bXBmaWxlIHdpdGggc3RkaW4iCi0g
ICAgICAgICAgICAgICAgdG1wZmlsZSA9IG9wZW4ob3MuZGV2bnVsbCwgInIiKQotICAgICAgICAg
ICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9IFN5c0NhcHR1cmUodGFyZ2V0ZmQpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHRtcGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICAgICAgZiA9IFRlbXBvcmFyeUZpbGUoKQotICAgICAgICAgICAgICAgICAgICB3aXRoIGY6
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXBmaWxlID0gc2FmZV90ZXh0X2R1cGZpbGUoZiwg
bW9kZT0id2IrIikKLSAgICAgICAgICAgICAgICBpZiB0YXJnZXRmZCBpbiBwYXRjaHN5c2RpY3Q6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9IFN5c0NhcHR1cmUodGFyZ2V0
ZmQsIHRtcGZpbGUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5zeXNjYXB0dXJlID0gTm9DYXB0dXJlKCkKLSAgICAgICAgICAgIHNlbGYudG1wZmlsZSA9
IHRtcGZpbGUKLSAgICAgICAgICAgIHNlbGYudG1wZmlsZV9mZCA9IHRtcGZpbGUuZmlsZW5vKCkK
LQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RkRDYXB0dXJlICVz
IG9sZGZkPSVzPiIgJSAoc2VsZi50YXJnZXRmZCwgc2VsZi50YXJnZXRmZF9zYXZlKQotCi0gICAg
ZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICAiIiIgU3RhcnQgY2FwdHVyaW5nIG9uIHRhcmdldGZk
IHVzaW5nIG1lbW9yaXplZCB0bXBmaWxlLiAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
b3MuZnN0YXQoc2VsZi50YXJnZXRmZF9zYXZlKQotICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVy
cm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNhdmVkIGZpbGVk
ZXNjcmlwdG9yIG5vdCB2YWxpZCBhbnltb3JlIikKLSAgICAgICAgb3MuZHVwMihzZWxmLnRtcGZp
bGVfZmQsIHNlbGYudGFyZ2V0ZmQpCi0gICAgICAgIHNlbGYuc3lzY2FwdHVyZS5zdGFydCgpCi0K
LSAgICBkZWYgc25hcChzZWxmKToKLSAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKLSAgICAg
ICAgcmVzID0gc2VsZi50bXBmaWxlLnJlYWQoKQotICAgICAgICBzZWxmLnRtcGZpbGUuc2Vlaygw
KQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQotICAgICAgICByZXR1cm4gcmVzCi0K
LSAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgIiIiIHN0b3AgY2FwdHVyaW5nLCByZXN0b3Jl
IHN0cmVhbXMsIHJldHVybiBvcmlnaW5hbCBjYXB0dXJlIGZpbGUsCi0gICAgICAgIHNlZWtlZCB0
byBwb3NpdGlvbiB6ZXJvLiAiIiIKLSAgICAgICAgdGFyZ2V0ZmRfc2F2ZSA9IHNlbGYuX19kaWN0
X18ucG9wKCJ0YXJnZXRmZF9zYXZlIikKLSAgICAgICAgb3MuZHVwMih0YXJnZXRmZF9zYXZlLCBz
ZWxmLnRhcmdldGZkKQotICAgICAgICBvcy5jbG9zZSh0YXJnZXRmZF9zYXZlKQotICAgICAgICBz
ZWxmLnN5c2NhcHR1cmUuZG9uZSgpCi0gICAgICAgIHNlbGYudG1wZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgc3VzcGVuZChzZWxmKToKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLnN1c3BlbmQoKQot
ICAgICAgICBvcy5kdXAyKHNlbGYudGFyZ2V0ZmRfc2F2ZSwgc2VsZi50YXJnZXRmZCkKLQotICAg
IGRlZiByZXN1bWUoc2VsZik6Ci0gICAgICAgIHNlbGYuc3lzY2FwdHVyZS5yZXN1bWUoKQotICAg
ICAgICBvcy5kdXAyKHNlbGYudG1wZmlsZV9mZCwgc2VsZi50YXJnZXRmZCkKLQotICAgIGRlZiB3
cml0ZW9yZyhzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiIHdyaXRlIHRvIG9yaWdpbmFsIGZpbGUg
ZGVzY3JpcHRvci4gIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc2l4LnRleHRfdHlw
ZSk6Ci0gICAgICAgICAgICBkYXRhID0gZGF0YS5lbmNvZGUoInV0ZjgiKSAgIyBYWFggdXNlIGVu
Y29kaW5nIG9mIG9yaWdpbmFsIHN0cmVhbQotICAgICAgICBvcy53cml0ZShzZWxmLnRhcmdldGZk
X3NhdmUsIGRhdGEpCi0KLQotY2xhc3MgRkRDYXB0dXJlKEZEQ2FwdHVyZUJpbmFyeSk6Ci0gICAg
IiIiQ2FwdHVyZSBJTyB0by9mcm9tIGEgZ2l2ZW4gb3MtbGV2ZWwgZmlsZWRlc2NyaXB0b3IuCi0K
LSAgICBzbmFwKCkgcHJvZHVjZXMgdGV4dAotICAgICIiIgotICAgIGRlZiBzbmFwKHNlbGYpOgot
ICAgICAgICByZXMgPSBGRENhcHR1cmVCaW5hcnkuc25hcChzZWxmKQotICAgICAgICBlbmMgPSBn
ZXRhdHRyKHNlbGYudG1wZmlsZSwgImVuY29kaW5nIiwgTm9uZSkKLSAgICAgICAgaWYgZW5jIGFu
ZCBpc2luc3RhbmNlKHJlcywgYnl0ZXMpOgotICAgICAgICAgICAgcmVzID0gc2l4LnRleHRfdHlw
ZShyZXMsIGVuYywgInJlcGxhY2UiKQotICAgICAgICByZXR1cm4gcmVzCi0KLQotY2xhc3MgU3lz
Q2FwdHVyZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmQsIHRtcGZpbGU9Tm9uZSk6Ci0gICAg
ICAgIG5hbWUgPSBwYXRjaHN5c2RpY3RbZmRdCi0gICAgICAgIHNlbGYuX29sZCA9IGdldGF0dHIo
c3lzLCBuYW1lKQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIGlmIHRtcGZpbGUg
aXMgTm9uZToKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gInN0ZGluIjoKLSAgICAgICAgICAgICAg
ICB0bXBmaWxlID0gRG9udFJlYWRGcm9tSW5wdXQoKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICB0bXBmaWxlID0gQ2FwdHVyZUlPKCkKLSAgICAgICAgc2VsZi50bXBmaWxlID0g
dG1wZmlsZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZXRhdHRyKHN5cywgc2Vs
Zi5uYW1lLCBzZWxmLnRtcGZpbGUpCi0KLSAgICBkZWYgc25hcChzZWxmKToKLSAgICAgICAgcmVz
ID0gc2VsZi50bXBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkK
LSAgICAgICAgc2VsZi50bXBmaWxlLnRydW5jYXRlKCkKLSAgICAgICAgcmV0dXJuIHJlcwotCi0g
ICAgZGVmIGRvbmUoc2VsZik6Ci0gICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLm5hbWUsIHNlbGYu
X29sZCkKLSAgICAgICAgZGVsIHNlbGYuX29sZAotICAgICAgICBzZWxmLnRtcGZpbGUuY2xvc2Uo
KQotCi0gICAgZGVmIHN1c3BlbmQoc2VsZik6Ci0gICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLm5h
bWUsIHNlbGYuX29sZCkKLQotICAgIGRlZiByZXN1bWUoc2VsZik6Ci0gICAgICAgIHNldGF0dHIo
c3lzLCBzZWxmLm5hbWUsIHNlbGYudG1wZmlsZSkKLQotICAgIGRlZiB3cml0ZW9yZyhzZWxmLCBk
YXRhKToKLSAgICAgICAgc2VsZi5fb2xkLndyaXRlKGRhdGEpCi0gICAgICAgIHNlbGYuX29sZC5m
bHVzaCgpCi0KLQotY2xhc3MgU3lzQ2FwdHVyZUJpbmFyeShTeXNDYXB0dXJlKToKLSAgICBkZWYg
c25hcChzZWxmKToKLSAgICAgICAgcmVzID0gc2VsZi50bXBmaWxlLmJ1ZmZlci5nZXR2YWx1ZSgp
Ci0gICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCi0gICAgICAgIHNlbGYudG1wZmlsZS50cnVu
Y2F0ZSgpCi0gICAgICAgIHJldHVybiByZXMKLQotCi1jbGFzcyBEb250UmVhZEZyb21JbnB1dDoK
LSAgICAiIiJUZW1wb3Jhcnkgc3R1YiBjbGFzcy4gIElkZWFsbHkgd2hlbiBzdGRpbiBpcyBhY2Nl
c3NlZCwgdGhlCi0gICAgY2FwdHVyaW5nIHNob3VsZCBiZSB0dXJuZWQgb2ZmLCB3aXRoIHBvc3Np
Ymx5IGFsbCBkYXRhIGNhcHR1cmVkCi0gICAgc28gZmFyIHNlbnQgdG8gdGhlIHNjcmVlbi4gIFRo
aXMgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSwgdGhvdWdoLAotICAgIGJlY2F1c2UgaW4gYXV0b21h
dGVkIHRlc3QgcnVucyBpdCBpcyBiZXR0ZXIgdG8gY3Jhc2ggdGhhbgotICAgIGhhbmcgaW5kZWZp
bml0ZWx5LgotICAgICIiIgotCi0gICAgZW5jb2RpbmcgPSBOb25lCi0KLSAgICBkZWYgcmVhZChz
ZWxmLCAqYXJncyk6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IoInJlYWRpbmcgZnJvbSBzdGRpbiB3
aGlsZSBvdXRwdXQgaXMgY2FwdHVyZWQiKQotICAgIHJlYWRsaW5lID0gcmVhZAotICAgIHJlYWRs
aW5lcyA9IHJlYWQKLSAgICBfX2l0ZXJfXyA9IHJlYWQKLQotICAgIGRlZiBmaWxlbm8oc2VsZik6
Ci0gICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCJyZWRpcmVjdGVkIHN0ZGluIGlz
IHBzZXVkb2ZpbGUsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhcyBu
byBmaWxlbm8oKSIpCi0KLSAgICBkZWYgaXNhdHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgQHByb3BlcnR5
Ci0gICAgZGVmIGJ1ZmZlcihzZWxmKToKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAo
MywgMCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ3JlZGlyZWN0ZWQgc3RkaW4gaGFzIG5vIGF0dHJpYnV0
ZSBidWZmZXInKQotCi0KLWRlZiBfY29sb3JhbWFfd29ya2Fyb3VuZCgpOgotICAgICIiIgotICAg
IEVuc3VyZSBjb2xvcmFtYSBpcyBpbXBvcnRlZCBzbyB0aGF0IGl0IGF0dGFjaGVzIHRvIHRoZSBj
b3JyZWN0IHN0ZGlvCi0gICAgaGFuZGxlcyBvbiBXaW5kb3dzLgotCi0gICAgY29sb3JhbWEgdXNl
cyB0aGUgdGVybWluYWwgb24gaW1wb3J0IHRpbWUuIFNvIGlmIHNvbWV0aGluZyBkb2VzIHRoZQot
ICAgIGZpcnN0IGltcG9ydCBvZiBjb2xvcmFtYSB3aGlsZSBJL08gY2FwdHVyZSBpcyBhY3RpdmUs
IGNvbG9yYW1hIHdpbGwKLSAgICBmYWlsIGluIHZhcmlvdXMgd2F5cy4KLSAgICAiIiIKLQotICAg
IGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luMzInKToKLSAgICAgICAgcmV0dXJu
Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgY29sb3JhbWEgICMgbm9xYQotICAgIGV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotCi0KLWRlZiBfcmVhZGxpbmVfd29ya2Fyb3VuZCgp
OgotICAgICIiIgotICAgIEVuc3VyZSByZWFkbGluZSBpcyBpbXBvcnRlZCBzbyB0aGF0IGl0IGF0
dGFjaGVzIHRvIHRoZSBjb3JyZWN0IHN0ZGlvCi0gICAgaGFuZGxlcyBvbiBXaW5kb3dzLgotCi0g
ICAgUGRiIHVzZXMgcmVhZGxpbmUgc3VwcG9ydCB3aGVyZSBhdmFpbGFibGUtLXdoZW4gbm90IHJ1
bm5pbmcgZnJvbSB0aGUgUHl0aG9uCi0gICAgcHJvbXB0LCB0aGUgcmVhZGxpbmUgbW9kdWxlIGlz
IG5vdCBpbXBvcnRlZCB1bnRpbCBydW5uaW5nIHRoZSBwZGIgUkVQTC4gIElmCi0gICAgcnVubmlu
ZyBweXRlc3Qgd2l0aCB0aGUgLS1wZGIgb3B0aW9uIHRoaXMgbWVhbnMgdGhlIHJlYWRsaW5lIG1v
ZHVsZSBpcyBub3QKLSAgICBpbXBvcnRlZCB1bnRpbCBhZnRlciBJL08gY2FwdHVyZSBoYXMgYmVl
biBzdGFydGVkLgotCi0gICAgVGhpcyBpcyBhIHByb2JsZW0gZm9yIHB5cmVhZGxpbmUsIHdoaWNo
IGlzIG9mdGVuIHVzZWQgdG8gaW1wbGVtZW50IHJlYWRsaW5lCi0gICAgc3VwcG9ydCBvbiBXaW5k
b3dzLCBhcyBpdCBkb2VzIG5vdCBhdHRhY2ggdG8gdGhlIGNvcnJlY3QgaGFuZGxlcyBmb3Igc3Rk
b3V0Ci0gICAgYW5kL29yIHN0ZGluIGlmIHRoZXkgaGF2ZSBiZWVuIHJlZGlyZWN0ZWQgYnkgdGhl
IEZEQ2FwdHVyZSBtZWNoYW5pc20uICBUaGlzCi0gICAgd29ya2Fyb3VuZCBlbnN1cmVzIHRoYXQg
cmVhZGxpbmUgaXMgaW1wb3J0ZWQgYmVmb3JlIEkvTyBjYXB0dXJlIGlzIHNldHVwIHNvCi0gICAg
dGhhdCBpdCBjYW4gYXR0YWNoIHRvIHRoZSBhY3R1YWwgc3RkaW4vb3V0IGZvciB0aGUgY29uc29s
ZS4KLQotICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8x
MjgxCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbjMy
Jyk6Ci0gICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHJlYWRsaW5lICAj
IG5vcWEKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLQotCi1kZWYgX3B5
MzZfd2luZG93c2NvbnNvbGVpb193b3JrYXJvdW5kKHN0cmVhbSk6Ci0gICAgIiIiCi0gICAgUHl0
aG9uIDMuNiBpbXBsZW1lbnRlZCB1bmljb2RlIGNvbnNvbGUgaGFuZGxpbmcgZm9yIFdpbmRvd3Mu
IFRoaXMgd29ya3MKLSAgICBieSByZWFkaW5nL3dyaXRpbmcgdG8gdGhlIHJhdyBjb25zb2xlIGhh
bmRsZSB1c2luZwotICAgIGBge1JlYWQsV3JpdGV9Q29uc29sZVdgYC4KLQotICAgIFRoZSBwcm9i
bGVtIGlzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGBgZHVwMmBgIG92ZXIgdGhlIHN0ZGlvIGZpbGUK
LSAgICBkZXNjcmlwdG9ycyB3aGVuIGRvaW5nIGBgRkRDYXB0dXJlYGAgYW5kIHRoaXMgd2lsbCBg
YENsb3NlSGFuZGxlYGAgdGhlCi0gICAgaGFuZGxlcyB1c2VkIGJ5IFB5dGhvbiB0byB3cml0ZSB0
byB0aGUgY29uc29sZS4gVGhvdWdoIHRoZXJlIGlzIHN0aWxsIHNvbWUKLSAgICB3ZWlyZG5lc3Mg
YW5kIHRoZSBjb25zb2xlIGhhbmRsZSBzZWVtcyB0byBvbmx5IGJlIGNsb3NlZCByYW5kb21seSBh
bmQgbm90Ci0gICAgb24gdGhlIGZpcnN0IGNhbGwgdG8gYGBDbG9zZUhhbmRsZWBgLCBvciBtYXli
ZSBpdCBnZXRzIHJlb3BlbmVkIHdpdGggdGhlCi0gICAgc2FtZSBoYW5kbGUgdmFsdWUgd2hlbiB3
ZSBzdXNwZW5kIGNhcHR1cmluZy4KLQotICAgIFRoZSB3b3JrYXJvdW5kIGluIHRoaXMgY2FzZSB3
aWxsIHJlb3BlbiBzdGRpbyB3aXRoIGEgZGlmZmVyZW50IGZkIHdoaWNoCi0gICAgYWxzbyBtZWFu
cyBhIGRpZmZlcmVudCBoYW5kbGUgYnkgcmVwbGljYXRpbmcgdGhlIGxvZ2ljIGluCi0gICAgIlB5
X2xpZmVjeWNsZS5jOmluaXRzdGRpby9jcmVhdGVfc3RkaW8iLgotCi0gICAgOnBhcmFtIHN0cmVh
bTogaW4gcHJhY3RpY2UgYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAsIGJ1dCBnaXZl
bgotICAgICAgICBoZXJlIGFzIHBhcmFtZXRlciBmb3IgdW5pdHRlc3RpbmcgcHVycG9zZXMuCi0K
LSAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHkvaXNzdWVzLzEwMwotICAg
ICIiIgotICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luMzInKSBvciBzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA2KToKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIGJhaWwg
b3V0IGlmIGBgc3RyZWFtYGAgZG9lc24ndCBzZWVtIGxpa2UgYSBwcm9wZXIgYGBpb2BgIHN0cmVh
bSAoIzI2NjYpCi0gICAgaWYgbm90IGhhc2F0dHIoc3RyZWFtLCAnYnVmZmVyJyk6Ci0gICAgICAg
IHJldHVybgotCi0gICAgYnVmZmVyZWQgPSBoYXNhdHRyKHN0cmVhbS5idWZmZXIsICdyYXcnKQot
ICAgIHJhd19zdGRvdXQgPSBzdHJlYW0uYnVmZmVyLnJhdyBpZiBidWZmZXJlZCBlbHNlIHN0cmVh
bS5idWZmZXIKLQotICAgIGlmIG5vdCBpc2luc3RhbmNlKHJhd19zdGRvdXQsIGlvLl9XaW5kb3dz
Q29uc29sZUlPKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBkZWYgX3Jlb3Blbl9zdGRpbyhmLCBt
b2RlKToKLSAgICAgICAgaWYgbm90IGJ1ZmZlcmVkIGFuZCBtb2RlWzBdID09ICd3JzoKLSAgICAg
ICAgICAgIGJ1ZmZlcmluZyA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1ZmZlcmlu
ZyA9IC0xCi0KLSAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoCi0gICAgICAgICAgICBv
cGVuKG9zLmR1cChmLmZpbGVubygpKSwgbW9kZSwgYnVmZmVyaW5nKSwKLSAgICAgICAgICAgIGYu
ZW5jb2RpbmcsCi0gICAgICAgICAgICBmLmVycm9ycywKLSAgICAgICAgICAgIGYubmV3bGluZXMs
Ci0gICAgICAgICAgICBmLmxpbmVfYnVmZmVyaW5nKQotCi0gICAgc3lzLl9fc3RkaW5fXyA9IHN5
cy5zdGRpbiA9IF9yZW9wZW5fc3RkaW8oc3lzLnN0ZGluLCAncmInKQotICAgIHN5cy5fX3N0ZG91
dF9fID0gc3lzLnN0ZG91dCA9IF9yZW9wZW5fc3RkaW8oc3lzLnN0ZG91dCwgJ3diJykKLSAgICBz
eXMuX19zdGRlcnJfXyA9IHN5cy5zdGRlcnIgPSBfcmVvcGVuX3N0ZGlvKHN5cy5zdGRlcnIsICd3
YicpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbXBhdC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvY29tcGF0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTYw
ZmJlYzM5NzUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbXBhdC5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDMyMiArMCwwIEBACi0iIiIKLXB5dGhvbiB2ZXJzaW9uIGNv
bXBhdGliaWxpdHkgY29kZQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBjb2RlY3MKLWltcG9ydCBm
dW5jdG9vbHMKLWltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotaW1wb3J0
IHB5Ci0KLWltcG9ydCBfcHl0ZXN0Ci1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IFRFU1Rf
T1VUQ09NRQotCi10cnk6Ci0gICAgaW1wb3J0IGVudW0KLWV4Y2VwdCBJbXBvcnRFcnJvcjogICMg
cHJhZ21hOiBubyBjb3ZlcgotICAgICMgT25seSBhdmFpbGFibGUgaW4gUHl0aG9uIDMuNCsgb3Ig
YXMgYSBiYWNrcG9ydAotICAgIGVudW0gPSBOb25lCi0KLQotX1BZMyA9IHN5cy52ZXJzaW9uX2lu
Zm8gPiAoMywgMCkKLV9QWTIgPSBub3QgX1BZMwotCi0KLWlmIF9QWTM6Ci0gICAgZnJvbSBpbnNw
ZWN0IGltcG9ydCBzaWduYXR1cmUsIFBhcmFtZXRlciBhcyBQYXJhbWV0ZXIKLWVsc2U6Ci0gICAg
ZnJvbSBmdW5jc2lncyBpbXBvcnQgc2lnbmF0dXJlLCBQYXJhbWV0ZXIgYXMgUGFyYW1ldGVyCi0K
LQotTm9uZVR5cGUgPSB0eXBlKE5vbmUpCi1OT1RTRVQgPSBvYmplY3QoKQotCi1QWTM1ID0gc3lz
LnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDUpCi1QWTM2ID0gc3lzLnZlcnNpb25faW5mb1s6Ml0g
Pj0gKDMsIDYpCi1NT0RVTEVfTk9UX0ZPVU5EX0VSUk9SID0gJ01vZHVsZU5vdEZvdW5kRXJyb3In
IGlmIFBZMzYgZWxzZSAnSW1wb3J0RXJyb3InCi0KLQotZGVmIF9mb3JtYXRfYXJncyhmdW5jKToK
LSAgICByZXR1cm4gc3RyKHNpZ25hdHVyZShmdW5jKSkKLQotCi1pc2Z1bmN0aW9uID0gaW5zcGVj
dC5pc2Z1bmN0aW9uCi1pc2NsYXNzID0gaW5zcGVjdC5pc2NsYXNzCi0jIHVzZWQgdG8gd29yayBh
cm91bmQgYSBweXRob24yIGV4Y2VwdGlvbiBpbmZvIGxlYWsKLWV4Y19jbGVhciA9IGdldGF0dHIo
c3lzLCAnZXhjX2NsZWFyJywgbGFtYmRhOiBOb25lKQotIyBUaGUgdHlwZSBvZiByZS5jb21waWxl
IG9iamVjdHMgaXMgbm90IGV4cG9zZWQgaW4gUHl0aG9uLgotUkVHRVhfVFlQRSA9IHR5cGUocmUu
Y29tcGlsZSgnJykpCi0KLQotZGVmIGlzX2dlbmVyYXRvcihmdW5jKToKLSAgICBnZW5mdW5jID0g
aW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGZ1bmMpCi0gICAgcmV0dXJuIGdlbmZ1bmMgYW5k
IG5vdCBpc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpCi0KLQotZGVmIGlzY29yb3V0aW5lZnVuY3Rp
b24oZnVuYyk6Ci0gICAgIiIiUmV0dXJuIFRydWUgaWYgZnVuYyBpcyBhIGRlY29yYXRlZCBjb3Jv
dXRpbmUgZnVuY3Rpb24uCi0KLSAgICBOb3RlOiBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gUHl0
aG9uIDMuNSdzIGJ1aWx0aW4gY291cm91dGluZXMucHkgdG8gYXZvaWQgaW1wb3J0IGFzeW5jaW8g
ZGlyZWN0bHksCi0gICAgd2hpY2ggaW4gdHVybnMgYWxzbyBpbml0aWFsaXplcyB0aGUgImxvZ2dp
bmciIG1vZHVsZSBhcyBzaWRlLWVmZmVjdCAoc2VlIGlzc3VlICM4KS4KLSAgICAiIiIKLSAgICBy
ZXR1cm4gKGdldGF0dHIoZnVuYywgJ19pc19jb3JvdXRpbmUnLCBGYWxzZSkgb3IKLSAgICAgICAg
ICAgIChoYXNhdHRyKGluc3BlY3QsICdpc2Nvcm91dGluZWZ1bmN0aW9uJykgYW5kIGluc3BlY3Qu
aXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKSkpCi0KLQotZGVmIGdldGxvY2F0aW9uKGZ1bmN0aW9u
LCBjdXJkaXIpOgotICAgIGZuID0gcHkucGF0aC5sb2NhbChpbnNwZWN0LmdldGZpbGUoZnVuY3Rp
b24pKQotICAgIGxpbmVubyA9IHB5LmJ1aWx0aW4uX2dldGNvZGUoZnVuY3Rpb24pLmNvX2ZpcnN0
bGluZW5vCi0gICAgaWYgZm4ucmVsdG8oY3VyZGlyKToKLSAgICAgICAgZm4gPSBmbi5yZWx0byhj
dXJkaXIpCi0gICAgcmV0dXJuICIlczolZCIgJSAoZm4sIGxpbmVubyArIDEpCi0KLQotZGVmIG51
bV9tb2NrX3BhdGNoX2FyZ3MoZnVuY3Rpb24pOgotICAgICIiIiByZXR1cm4gbnVtYmVyIG9mIGFy
Z3VtZW50cyB1c2VkIHVwIGJ5IG1vY2sgYXJndW1lbnRzIChpZiBhbnkpICIiIgotICAgIHBhdGNo
aW5ncyA9IGdldGF0dHIoZnVuY3Rpb24sICJwYXRjaGluZ3MiLCBOb25lKQotICAgIGlmIG5vdCBw
YXRjaGluZ3M6Ci0gICAgICAgIHJldHVybiAwCi0gICAgbW9jayA9IHN5cy5tb2R1bGVzLmdldCgi
bW9jayIsIHN5cy5tb2R1bGVzLmdldCgidW5pdHRlc3QubW9jayIsIE5vbmUpKQotICAgIGlmIG1v
Y2sgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJldHVybiBsZW4oW3AgZm9yIHAgaW4gcGF0Y2hpbmdz
Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwLmF0dHJpYnV0ZV9uYW1lIGFuZCBwLm5ldyBp
cyBtb2NrLkRFRkFVTFRdKQotICAgIHJldHVybiBsZW4ocGF0Y2hpbmdzKQotCi0KLWRlZiBnZXRm
dW5jYXJnbmFtZXMoZnVuY3Rpb24sIGlzX21ldGhvZD1GYWxzZSwgY2xzPU5vbmUpOgotICAgICIi
IlJldHVybnMgdGhlIG5hbWVzIG9mIGEgZnVuY3Rpb24ncyBtYW5kYXRvcnkgYXJndW1lbnRzLgot
Ci0gICAgVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBuYW1lcyBvZiBhbGwgZnVuY3Rpb24gYXJndW1l
bnRzIHRoYXQ6Ci0gICAgICAgICogQXJlbid0IGJvdW5kIHRvIGFuIGluc3RhbmNlIG9yIHR5cGUg
YXMgaW4gaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcy4KLSAgICAgICAgKiBEb24ndCBoYXZlIGRl
ZmF1bHQgdmFsdWVzLgotICAgICAgICAqIEFyZW4ndCBib3VuZCB3aXRoIGZ1bmN0b29scy5wYXJ0
aWFsLgotICAgICAgICAqIEFyZW4ndCByZXBsYWNlZCB3aXRoIG1vY2tzLgotCi0gICAgVGhlIGlz
X21ldGhvZCBhbmQgY2xzIGFyZ3VtZW50cyBpbmRpY2F0ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaG91
bGQKLSAgICBiZSB0cmVhdGVkIGFzIGEgYm91bmQgbWV0aG9kIGV2ZW4gdGhvdWdoIGl0J3Mgbm90
IHVubGVzcywgb25seSBpbgotICAgIHRoZSBjYXNlIG9mIGNscywgdGhlIGZ1bmN0aW9uIGlzIGEg
c3RhdGljIG1ldGhvZC4KLQotICAgIEBSb25ueVBmYW5uc2NobWlkdDogVGhpcyBmdW5jdGlvbiBz
aG91bGQgYmUgcmVmYWN0b3JlZCB3aGVuIHdlCi0gICAgcmV2aXNpdCBmaXh0dXJlcy4gVGhlIGZp
eHR1cmUgbWVjaGFuaXNtIHNob3VsZCBhc2sgdGhlIG5vZGUgZm9yCi0gICAgdGhlIGZpeHR1cmUg
bmFtZXMsIGFuZCBub3QgdHJ5IHRvIG9idGFpbiBkaXJlY3RseSBmcm9tIHRoZQotICAgIGZ1bmN0
aW9uIG9iamVjdCB3ZWxsIGFmdGVyIGNvbGxlY3Rpb24gaGFzIG9jY3VycmVkLgotCi0gICAgIiIi
Ci0gICAgIyBUaGUgcGFyYW1ldGVycyBhdHRyaWJ1dGUgb2YgYSBTaWduYXR1cmUgb2JqZWN0IGNv
bnRhaW5zIGFuCi0gICAgIyBvcmRlcmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVyIG5hbWVzIHRvIFBh
cmFtZXRlciBpbnN0YW5jZXMuICBUaGlzCi0gICAgIyBjcmVhdGVzIGEgdHVwbGUgb2YgdGhlIG5h
bWVzIG9mIHRoZSBwYXJhbWV0ZXJzIHRoYXQgZG9uJ3QgaGF2ZQotICAgICMgZGVmYXVsdHMuCi0g
ICAgYXJnX25hbWVzID0gdHVwbGUocC5uYW1lIGZvciBwIGluIHNpZ25hdHVyZShmdW5jdGlvbiku
cGFyYW1ldGVycy52YWx1ZXMoKQotICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmtpbmQgaXMg
UGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCBvcgotICAgICAgICAgICAgICAgICAgICAg
ICAgICBwLmtpbmQgaXMgUGFyYW1ldGVyLktFWVdPUkRfT05MWSkgYW5kCi0gICAgICAgICAgICAg
ICAgICAgICAgcC5kZWZhdWx0IGlzIFBhcmFtZXRlci5lbXB0eSkKLSAgICAjIElmIHRoaXMgZnVu
Y3Rpb24gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBib3VuZCBtZXRob2QgZXZlbiB0aG91Z2gKLSAg
ICAjIGl0J3MgcGFzc2VkIGFzIGFuIHVuYm91bmQgbWV0aG9kIG9yIGZ1bmN0aW9uLCByZW1vdmUg
dGhlIGZpcnN0Ci0gICAgIyBwYXJhbWV0ZXIgbmFtZS4KLSAgICBpZiAoaXNfbWV0aG9kIG9yCi0g
ICAgICAgIChjbHMgYW5kIG5vdCBpc2luc3RhbmNlKGNscy5fX2RpY3RfXy5nZXQoZnVuY3Rpb24u
X19uYW1lX18sIE5vbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNt
ZXRob2QpKSk6Ci0gICAgICAgIGFyZ19uYW1lcyA9IGFyZ19uYW1lc1sxOl0KLSAgICAjIFJlbW92
ZSBhbnkgbmFtZXMgdGhhdCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbW9ja3MuCi0gICAgaWYgaGFz
YXR0cihmdW5jdGlvbiwgIl9fd3JhcHBlZF9fIik6Ci0gICAgICAgIGFyZ19uYW1lcyA9IGFyZ19u
YW1lc1tudW1fbW9ja19wYXRjaF9hcmdzKGZ1bmN0aW9uKTpdCi0gICAgcmV0dXJuIGFyZ19uYW1l
cwotCi0KLWlmIF9QWTM6Ci0gICAgU1RSSU5HX1RZUEVTID0gYnl0ZXMsIHN0cgotICAgIFVOSUNP
REVfVFlQRVMgPSBzdHIsCi0KLSAgICBpZiBQWTM1OgotICAgICAgICBkZWYgX2J5dGVzX3RvX2Fz
Y2lpKHZhbCk6Ci0gICAgICAgICAgICByZXR1cm4gdmFsLmRlY29kZSgnYXNjaWknLCAnYmFja3Ns
YXNocmVwbGFjZScpCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9ieXRlc190b19hc2NpaSh2YWwp
OgotICAgICAgICAgICAgaWYgdmFsOgotICAgICAgICAgICAgICAgICMgc291cmNlOiBodHRwOi8v
Z29vLmdsL2JHc253QwotICAgICAgICAgICAgICAgIGVuY29kZWRfYnl0ZXMsIF8gPSBjb2RlY3Mu
ZXNjYXBlX2VuY29kZSh2YWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRfYnl0ZXMu
ZGVjb2RlKCdhc2NpaScpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgZW1w
dHkgYnl0ZXMgY3Jhc2hlcyBjb2RlY3MuZXNjYXBlX2VuY29kZSAoIzEwODcpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgYXNjaWlfZXNjYXBlZCh2YWwpOgotICAgICAgICAi
IiJJZiB2YWwgaXMgcHVyZSBhc2NpaSwgcmV0dXJucyBpdCBhcyBhIHN0cigpLiAgT3RoZXJ3aXNl
LCBlc2NhcGVzCi0gICAgICAgIGJ5dGVzIG9iamVjdHMgaW50byBhIHNlcXVlbmNlIG9mIGVzY2Fw
ZWQgYnl0ZXM6Ci0KLSAgICAgICAgYidceGMzXHhiNFx4YzVceGQ2JyAtPiB1J1xceGMzXFx4YjRc
XHhjNVxceGQ2JwotCi0gICAgICAgIGFuZCBlc2NhcGVzIHVuaWNvZGUgb2JqZWN0cyBpbnRvIGEg
c2VxdWVuY2Ugb2YgZXNjYXBlZCB1bmljb2RlCi0gICAgICAgIGlkcywgZS5nLjoKLQotICAgICAg
ICAnNFxcblZcXFUwMDA0M2VmYVxceDBlTVhXQlxceDFlXFx1MzAyOFxcdTE1ZmRcXHhjZFxcVTAw
MDdkOTQ0JwotCi0gICAgICAgIG5vdGU6Ci0gICAgICAgICAgIHRoZSBvYnZpb3VzICJ2LmRlY29k
ZSgndW5pY29kZS1lc2NhcGUnKSIgd2lsbCByZXR1cm4KLSAgICAgICAgICAgdmFsaWQgdXRmLTgg
dW5pY29kZSBpZiBpdCBmaW5kcyB0aGVtIGluIGJ5dGVzLCBidXQgd2UKLSAgICAgICAgICAgd2Fu
dCB0byByZXR1cm4gZXNjYXBlZCBieXRlcyBmb3IgYW55IGJ5dGUsIGV2ZW4gaWYgdGhleSBtYXRj
aAotICAgICAgICAgICBhIHV0Zi04IHN0cmluZy4KLQotICAgICAgICAiIiIKLSAgICAgICAgaWYg
aXNpbnN0YW5jZSh2YWwsIGJ5dGVzKToKLSAgICAgICAgICAgIHJldHVybiBfYnl0ZXNfdG9fYXNj
aWkodmFsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHZhbC5lbmNvZGUoJ3Vu
aWNvZGVfZXNjYXBlJykuZGVjb2RlKCdhc2NpaScpCi1lbHNlOgotICAgIFNUUklOR19UWVBFUyA9
IGJ5dGVzLCBzdHIsIHVuaWNvZGUKLSAgICBVTklDT0RFX1RZUEVTID0gdW5pY29kZSwKLQotICAg
IGRlZiBhc2NpaV9lc2NhcGVkKHZhbCk6Ci0gICAgICAgICIiIkluIHB5MiBieXRlcyBhbmQgc3Ry
IGFyZSB0aGUgc2FtZSB0eXBlLCBzbyByZXR1cm4gaWYgaXQncyBhIGJ5dGVzCi0gICAgICAgIG9i
amVjdCwgcmV0dXJuIGl0IHVuY2hhbmdlZCBpZiBpdCBpcyBhIGZ1bGwgYXNjaWkgc3RyaW5nLAot
ICAgICAgICBvdGhlcndpc2UgZXNjYXBlIGl0IGludG8gaXRzIGJpbmFyeSBmb3JtLgotCi0gICAg
ICAgIElmIGl0J3MgYSB1bmljb2RlIHN0cmluZywgY2hhbmdlIHRoZSB1bmljb2RlIGNoYXJhY3Rl
cnMgaW50bwotICAgICAgICB1bmljb2RlIGVzY2FwZXMuCi0KLSAgICAgICAgIiIiCi0gICAgICAg
IGlmIGlzaW5zdGFuY2UodmFsLCBieXRlcyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbC5lbmNvZGUoJ2FzY2lpJykKLSAgICAgICAgICAgIGV4Y2VwdCBVbmlj
b2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbC5lbmNvZGUoJ3N0cmlu
Zy1lc2NhcGUnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHZhbC5lbmNvZGUo
J3VuaWNvZGUtZXNjYXBlJykKLQotCi1kZWYgZ2V0X3JlYWxfZnVuYyhvYmopOgotICAgICIiIiBn
ZXRzIHRoZSByZWFsIGZ1bmN0aW9uIG9iamVjdCBvZiB0aGUgKHBvc3NpYmx5KSB3cmFwcGVkIG9i
amVjdCBieQotICAgIGZ1bmN0b29scy53cmFwcyBvciBmdW5jdG9vbHMucGFydGlhbC4KLSAgICAi
IiIKLSAgICBzdGFydF9vYmogPSBvYmoKLSAgICBmb3IgaSBpbiByYW5nZSgxMDApOgotICAgICAg
ICBuZXdfb2JqID0gZ2V0YXR0cihvYmosICdfX3dyYXBwZWRfXycsIE5vbmUpCi0gICAgICAgIGlm
IG5ld19vYmogaXMgTm9uZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIG9iaiA9IG5ld19v
YmoKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgKCJj
b3VsZCBub3QgZmluZCByZWFsIGZ1bmN0aW9uIG9mIHtzdGFydH0iCi0gICAgICAgICAgICAgIlxu
c3RvcHBlZCBhdCB7Y3VycmVudH0iKS5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc3RhcnQ9cHku
aW8uc2FmZXJlcHIoc3RhcnRfb2JqKSwKLSAgICAgICAgICAgICAgICBjdXJyZW50PXB5LmlvLnNh
ZmVyZXByKG9iaikpKQotICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBmdW5jdG9vbHMucGFydGlhbCk6
Ci0gICAgICAgIG9iaiA9IG9iai5mdW5jCi0gICAgcmV0dXJuIG9iagotCi0KLWRlZiBnZXRmc2xp
bmVubyhvYmopOgotICAgICMgeHh4IGxldCBkZWNvcmF0b3JzIGV0YyBzcGVjaWZ5IGEgc2FuZSBv
cmRlcmluZwotICAgIG9iaiA9IGdldF9yZWFsX2Z1bmMob2JqKQotICAgIGlmIGhhc2F0dHIob2Jq
LCAncGxhY2VfYXMnKToKLSAgICAgICAgb2JqID0gb2JqLnBsYWNlX2FzCi0gICAgZnNsaW5lbm8g
PSBfcHl0ZXN0Ll9jb2RlLmdldGZzbGluZW5vKG9iaikKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShm
c2xpbmVub1sxXSwgaW50KSwgb2JqCi0gICAgcmV0dXJuIGZzbGluZW5vCi0KLQotZGVmIGdldGlt
ZnVuYyhmdW5jKToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBmdW5jLl9fZnVuY19fCi0gICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICByZXR1cm4gZnVuYwotCi0KLWRlZiBzYWZl
X2dldGF0dHIob2JqZWN0LCBuYW1lLCBkZWZhdWx0KToKLSAgICAiIiIgTGlrZSBnZXRhdHRyIGJ1
dCByZXR1cm4gZGVmYXVsdCB1cG9uIGFueSBFeGNlcHRpb24gb3IgYW55IE91dGNvbWVFeGNlcHRp
b24uCi0KLSAgICBBdHRyaWJ1dGUgYWNjZXNzIGNhbiBwb3RlbnRpYWxseSBmYWlsIGZvciAnZXZp
bCcgUHl0aG9uIG9iamVjdHMuCi0gICAgU2VlIGlzc3VlICMyMTQuCi0gICAgSXQgY2F0Y2hlcyBP
dXRjb21lRXhjZXB0aW9uIGJlY2F1c2Ugb2YgIzI0OTAgKGlzc3VlICM1ODApLCBuZXcgb3V0Y29t
ZXMgYXJlIGRlcml2ZWQgZnJvbSBCYXNlRXhjZXB0aW9uCi0gICAgaW5zdGVhZCBvZiBFeGNlcHRp
b24gKGZvciBtb3JlIGRldGFpbHMgY2hlY2sgIzI3MDcpCi0gICAgIiIiCi0gICAgdHJ5OgotICAg
ICAgICByZXR1cm4gZ2V0YXR0cihvYmplY3QsIG5hbWUsIGRlZmF1bHQpCi0gICAgZXhjZXB0IFRF
U1RfT1VUQ09NRToKLSAgICAgICAgcmV0dXJuIGRlZmF1bHQKLQotCi1kZWYgX2lzX3VuaXR0ZXN0
X3VuZXhwZWN0ZWRfc3VjY2Vzc19hX2ZhaWx1cmUoKToKLSAgICAiIiJSZXR1cm4gaWYgdGhlIHRl
c3Qgc3VpdGUgc2hvdWxkIGZhaWwgaWYgYSBAZXhwZWN0ZWRGYWlsdXJlIHVuaXR0ZXN0IHRlc3Qg
UEFTU0VTLgotCi0gICAgRnJvbSBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5p
dHRlc3QuaHRtbD9oaWdobGlnaHQ9dW5pdHRlc3QjdW5pdHRlc3QuVGVzdFJlc3VsdC53YXNTdWNj
ZXNzZnVsOgotICAgICAgICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBSZXR1cm5zIEZhbHNlIGlm
IHRoZXJlIHdlcmUgYW55Ci0gICAgICAgIHVuZXhwZWN0ZWRTdWNjZXNzZXMgZnJvbSB0ZXN0cyBt
YXJrZWQgd2l0aCB0aGUgZXhwZWN0ZWRGYWlsdXJlKCkgZGVjb3JhdG9yLgotICAgICIiIgotICAg
IHJldHVybiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA0KQotCi0KLWlmIF9QWTM6Ci0gICAgZGVm
IHNhZmVfc3RyKHYpOgotICAgICAgICAiIiJyZXR1cm5zIHYgYXMgc3RyaW5nIiIiCi0gICAgICAg
IHJldHVybiBzdHIodikKLWVsc2U6Ci0gICAgZGVmIHNhZmVfc3RyKHYpOgotICAgICAgICAiIiJy
ZXR1cm5zIHYgYXMgc3RyaW5nLCBjb252ZXJ0aW5nIHRvIGFzY2lpIGlmIG5lY2Vzc2FyeSIiIgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RyKHYpCi0gICAgICAgIGV4Y2VwdCBV
bmljb2RlRXJyb3I6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2LCB1bmljb2RlKToK
LSAgICAgICAgICAgICAgICB2ID0gdW5pY29kZSh2KQotICAgICAgICAgICAgZXJyb3JzID0gJ3Jl
cGxhY2UnCi0gICAgICAgICAgICByZXR1cm4gdi5lbmNvZGUoJ3V0Zi04JywgZXJyb3JzKQotCi0K
LUNPTExFQ1RfRkFLRU1PRFVMRV9BVFRSSUJVVEVTID0gKAotICAgICdDb2xsZWN0b3InLAotICAg
ICdNb2R1bGUnLAotICAgICdHZW5lcmF0b3InLAotICAgICdGdW5jdGlvbicsCi0gICAgJ0luc3Rh
bmNlJywKLSAgICAnU2Vzc2lvbicsCi0gICAgJ0l0ZW0nLAotICAgICdDbGFzcycsCi0gICAgJ0Zp
bGUnLAotICAgICdfZmlsbGZ1bmNhcmdzJywKLSkKLQotCi1kZWYgX3NldHVwX2NvbGxlY3RfZmFr
ZW1vZHVsZSgpOgotICAgIGZyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKLSAgICBpbXBvcnQg
cHl0ZXN0Ci0gICAgcHl0ZXN0LmNvbGxlY3QgPSBNb2R1bGVUeXBlKCdweXRlc3QuY29sbGVjdCcp
Ci0gICAgcHl0ZXN0LmNvbGxlY3QuX19hbGxfXyA9IFtdICAjIHVzZWQgZm9yIHNldG5zCi0gICAg
Zm9yIGF0dHIgaW4gQ09MTEVDVF9GQUtFTU9EVUxFX0FUVFJJQlVURVM6Ci0gICAgICAgIHNldGF0
dHIocHl0ZXN0LmNvbGxlY3QsIGF0dHIsIGdldGF0dHIocHl0ZXN0LCBhdHRyKSkKLQotCi1pZiBf
UFkyOgotICAgICMgV2l0aG91dCB0aGlzIHRoZSB0ZXN0X2R1cGZpbGVfb25fdGV4dGlvIHdpbGwg
ZmFpbCwgb3RoZXJ3aXNlIENhcHR1cmVJTyBjb3VsZCBkaXJlY3RseSBpbmhlcml0IGZyb20gU3Ry
aW5nSU8uCi0gICAgZnJvbSBweS5pbyBpbXBvcnQgVGV4dElPCi0KLSAgICBjbGFzcyBDYXB0dXJl
SU8oVGV4dElPKToKLQotICAgICAgICBAcHJvcGVydHkKLSAgICAgICAgZGVmIGVuY29kaW5nKHNl
bGYpOgotICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgJ19lbmNvZGluZycsICdVVEYt
OCcpCi0KLWVsc2U6Ci0gICAgaW1wb3J0IGlvCi0KLSAgICBjbGFzcyBDYXB0dXJlSU8oaW8uVGV4
dElPV3JhcHBlcik6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgIHN1
cGVyKENhcHR1cmVJTywgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAgICAgaW8uQnl0ZXNJ
TygpLAotICAgICAgICAgICAgICAgIGVuY29kaW5nPSdVVEYtOCcsIG5ld2xpbmU9JycsIHdyaXRl
X3Rocm91Z2g9VHJ1ZSwKLSAgICAgICAgICAgICkKLQotICAgICAgICBkZWYgZ2V0dmFsdWUoc2Vs
Zik6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIuZ2V0dmFsdWUoKS5kZWNvZGUoJ1VU
Ri04JykKLQotCi1jbGFzcyBGdW5jYXJnbmFtZXNDb21wYXRBdHRyKG9iamVjdCk6Ci0gICAgIiIi
IGhlbHBlciBjbGFzcyBzbyB0aGF0IE1ldGFmdW5jLCBGdW5jdGlvbiBhbmQgRml4dHVyZVJlcXVl
c3QKLSAgICBkb24ndCBuZWVkIHRvIGVhY2ggZGVmaW5lIHRoZSAiZnVuY2FyZ25hbWVzIiBjb21w
YXRpYmlsaXR5IGF0dHJpYnV0ZS4KLSAgICAiIiIKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZnVu
Y2FyZ25hbWVzKHNlbGYpOgotICAgICAgICAiIiIgYWxpYXMgYXR0cmlidXRlIGZvciBgYGZpeHR1
cmVuYW1lc2BgIGZvciBwcmUtMi4zIGNvbXBhdGliaWxpdHkiIiIKLSAgICAgICAgcmV0dXJuIHNl
bGYuZml4dHVyZW5hbWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbmZpZy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0OTljODA3OWQ0MTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L2NvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDAgKzAsMCBAQAotIiIiIGNvbW1h
bmQgbGluZSBvcHRpb25zLCBpbmktZmlsZSBhbmQgY29uZnRlc3QucHkgcHJvY2Vzc2luZy4gIiIi
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50
X2Z1bmN0aW9uCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBzaGxleAotaW1wb3J0IHRyYWNlYmFj
awotaW1wb3J0IHR5cGVzCi1pbXBvcnQgd2FybmluZ3MKLQotaW1wb3J0IHNpeAotaW1wb3J0IHB5
Ci0jIERPTid0IGltcG9ydCBweXRlc3QgaGVyZSBiZWNhdXNlIGl0IGNhdXNlcyBpbXBvcnQgY3lj
bGUgdHJvdWJsZXMKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IF9weXRlc3QuX2NvZGUK
LWltcG9ydCBfcHl0ZXN0Lmhvb2tzcGVjICAjIHRoZSBleHRlbnNpb24gcG9pbnQgZGVmaW5pdGlv
bnMKLWltcG9ydCBfcHl0ZXN0LmFzc2VydGlvbgotZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1h
bmFnZXIsIEhvb2tpbXBsTWFya2VyLCBIb29rc3BlY01hcmtlcgotZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgc2FmZV9zdHIKLQotaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigicHl0ZXN0IikK
LWhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoInB5dGVzdCIpCi0KLSMgcHl0ZXN0IHN0YXJ0dXAK
LSMKLQotCi1jbGFzcyBDb25mdGVzdEltcG9ydEZhaWx1cmUoRXhjZXB0aW9uKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcGF0aCwgZXhjaW5mbyk6Ci0gICAgICAgIEV4Y2VwdGlvbi5fX2luaXRf
XyhzZWxmLCBwYXRoLCBleGNpbmZvKQotICAgICAgICBzZWxmLnBhdGggPSBwYXRoCi0gICAgICAg
IHNlbGYuZXhjaW5mbyA9IGV4Y2luZm8KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAg
ICBldHlwZSwgZXZhbHVlLCBldGIgPSBzZWxmLmV4Y2luZm8KLSAgICAgICAgZm9ybWF0dGVkID0g
dHJhY2ViYWNrLmZvcm1hdF90YihldGIpCi0gICAgICAgICMgVGhlIGxldmVsIG9mIHRoZSB0cmFj
ZWJhY2tzIHdlIHdhbnQgdG8gcHJpbnQgaXMgaGFuZCBjcmFmdGVkIDooCi0gICAgICAgIHJldHVy
biByZXByKGV2YWx1ZSkgKyAnXG4nICsgJycuam9pbihmb3JtYXR0ZWRbMjpdKQotCi0KLWRlZiBt
YWluKGFyZ3M9Tm9uZSwgcGx1Z2lucz1Ob25lKToKLSAgICAiIiIgcmV0dXJuIGV4aXQgY29kZSwg
YWZ0ZXIgcGVyZm9ybWluZyBhbiBpbi1wcm9jZXNzIHRlc3QgcnVuLgotCi0gICAgOmFyZyBhcmdz
OiBsaXN0IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0KLSAgICA6YXJnIHBsdWdpbnM6IGxp
c3Qgb2YgcGx1Z2luIG9iamVjdHMgdG8gYmUgYXV0by1yZWdpc3RlcmVkIGR1cmluZwotICAgICAg
ICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24uCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBjb25maWcgPSBfcHJlcGFyZWNvbmZpZyhhcmdzLCBwbHVnaW5zKQot
ICAgICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlIGFzIGU6Ci0gICAgICAgICAgICB0
dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKHN5cy5zdGRlcnIpCi0gICAgICAgICAgICBmb3IgbGlu
ZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqZS5leGNpbmZvKToKLSAgICAgICAgICAg
ICAgICB0dy5saW5lKGxpbmUucnN0cmlwKCksIHJlZD1UcnVlKQotICAgICAgICAgICAgdHcubGlu
ZSgiRVJST1I6IGNvdWxkIG5vdCBsb2FkICVzXG4iICUgKGUucGF0aCksIHJlZD1UcnVlKQotICAg
ICAgICAgICAgcmV0dXJuIDQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY29uZmlnLmhvb2sucHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWc9
Y29uZmlnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25maWcuX2Vu
c3VyZV91bmNvbmZpZ3VyZSgpCi0gICAgZXhjZXB0IFVzYWdlRXJyb3IgYXMgZToKLSAgICAgICAg
Zm9yIG1zZyBpbiBlLmFyZ3M6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFUlJPUjog
JXNcbiIgJSAobXNnLCkpCi0gICAgICAgIHJldHVybiA0Ci0KLQotY2xhc3MgY21kbGluZTogICMg
Y29tcGF0aWJpbGl0eSBuYW1lc3BhY2UKLSAgICBtYWluID0gc3RhdGljbWV0aG9kKG1haW4pCi0K
LQotY2xhc3MgVXNhZ2VFcnJvcihFeGNlcHRpb24pOgotICAgICIiIiBlcnJvciBpbiBweXRlc3Qg
dXNhZ2Ugb3IgaW52b2NhdGlvbiIiIgotCi0KLWNsYXNzIFByaW50SGVscChFeGNlcHRpb24pOgot
ICAgICIiIlJhaXNlZCB3aGVuIHB5dGVzdCBzaG91bGQgcHJpbnQgaXQncyBoZWxwIHRvIHNraXAg
dGhlIHJlc3Qgb2YgdGhlCi0gICAgYXJndW1lbnQgcGFyc2luZyBhbmQgdmFsaWRhdGlvbi4iIiIK
LSAgICBwYXNzCi0KLQotZGVmIGZpbGVuYW1lX2FyZyhwYXRoLCBvcHRuYW1lKToKLSAgICAiIiIg
QXJncGFyc2UgdHlwZSB2YWxpZGF0b3IgZm9yIGZpbGVuYW1lIGFyZ3VtZW50cy4KLQotICAgIDpw
YXRoOiBwYXRoIG9mIGZpbGVuYW1lCi0gICAgOm9wdG5hbWU6IG5hbWUgb2YgdGhlIG9wdGlvbgot
ICAgICIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgIHJhaXNlIFVzYWdl
RXJyb3IoInswfSBtdXN0IGJlIGEgZmlsZW5hbWUsIGdpdmVuOiB7MX0iLmZvcm1hdChvcHRuYW1l
LCBwYXRoKSkKLSAgICByZXR1cm4gcGF0aAotCi0KLWRlZiBkaXJlY3RvcnlfYXJnKHBhdGgsIG9w
dG5hbWUpOgotICAgICIiIkFyZ3BhcnNlIHR5cGUgdmFsaWRhdG9yIGZvciBkaXJlY3RvcnkgYXJn
dW1lbnRzLgotCi0gICAgOnBhdGg6IHBhdGggb2YgZGlyZWN0b3J5Ci0gICAgOm9wdG5hbWU6IG5h
bWUgb2YgdGhlIG9wdGlvbgotICAgICIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhdGgp
OgotICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJ7MH0gbXVzdCBiZSBhIGRpcmVjdG9yeSwgZ2l2
ZW46IHsxfSIuZm9ybWF0KG9wdG5hbWUsIHBhdGgpKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVm
YXVsdF9wbHVnaW5zID0gKAotICAgICJtYXJrIG1haW4gdGVybWluYWwgcnVubmVyIHB5dGhvbiBm
aXh0dXJlcyBkZWJ1Z2dpbmcgdW5pdHRlc3QgY2FwdHVyZSBza2lwcGluZyAiCi0gICAgInRtcGRp
ciBtb25rZXlwYXRjaCByZWN3YXJuIHBhc3RlYmluIGhlbHBjb25maWcgbm9zZSBhc3NlcnRpb24g
IgotICAgICJqdW5pdHhtbCByZXN1bHRsb2cgZG9jdGVzdCBjYWNoZXByb3ZpZGVyIGZyZWV6ZV9z
dXBwb3J0ICIKLSAgICAic2V0dXBvbmx5IHNldHVwcGxhbiB3YXJuaW5ncyBsb2dnaW5nIikuc3Bs
aXQoKQotCi0KLWJ1aWx0aW5fcGx1Z2lucyA9IHNldChkZWZhdWx0X3BsdWdpbnMpCi1idWlsdGlu
X3BsdWdpbnMuYWRkKCJweXRlc3RlciIpCi0KLQotZGVmIGdldF9jb25maWcoKToKLSAgICAjIHN1
YnNlcXVlbnQgY2FsbHMgdG8gbWFpbiB3aWxsIGNyZWF0ZSBhIGZyZXNoIGluc3RhbmNlCi0gICAg
cGx1Z2lubWFuYWdlciA9IFB5dGVzdFBsdWdpbk1hbmFnZXIoKQotICAgIGNvbmZpZyA9IENvbmZp
ZyhwbHVnaW5tYW5hZ2VyKQotICAgIGZvciBzcGVjIGluIGRlZmF1bHRfcGx1Z2luczoKLSAgICAg
ICAgcGx1Z2lubWFuYWdlci5pbXBvcnRfcGx1Z2luKHNwZWMpCi0gICAgcmV0dXJuIGNvbmZpZwot
Ci0KLWRlZiBnZXRfcGx1Z2luX21hbmFnZXIoKToKLSAgICAiIiIKLSAgICBPYnRhaW4gYSBuZXcg
aW5zdGFuY2Ugb2YgdGhlCi0gICAgOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5QeXRlc3RQbHVn
aW5NYW5hZ2VyYCwgd2l0aCBkZWZhdWx0IHBsdWdpbnMKLSAgICBhbHJlYWR5IGxvYWRlZC4KLQot
ICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYnkgaW50ZWdyYXRpb24gd2l0aCBvdGhlciB0
b29scywgbGlrZSBob29raW5nCi0gICAgaW50byBweXRlc3QgdG8gcnVuIHRlc3RzIGludG8gYW4g
SURFLgotICAgICIiIgotICAgIHJldHVybiBnZXRfY29uZmlnKCkucGx1Z2lubWFuYWdlcgotCi0K
LWRlZiBfcHJlcGFyZWNvbmZpZyhhcmdzPU5vbmUsIHBsdWdpbnM9Tm9uZSk6Ci0gICAgd2Fybmlu
ZyA9IE5vbmUKLSAgICBpZiBhcmdzIGlzIE5vbmU6Ci0gICAgICAgIGFyZ3MgPSBzeXMuYXJndlsx
Ol0KLSAgICBlbGlmIGlzaW5zdGFuY2UoYXJncywgcHkucGF0aC5sb2NhbCk6Ci0gICAgICAgIGFy
Z3MgPSBbc3RyKGFyZ3MpXQotICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoYXJncywgKHR1cGxlLCBs
aXN0KSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIHN0cik6Ci0gICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSBzdHJpbmcgb3IgYXJndW1lbnQgbGlzdDogJXIiICUg
KGFyZ3MsKSkKLSAgICAgICAgYXJncyA9IHNobGV4LnNwbGl0KGFyZ3MsIHBvc2l4PXN5cy5wbGF0
Zm9ybSAhPSAid2luMzIiKQotICAgICAgICBmcm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQK
LSAgICAgICAgd2FybmluZyA9IGRlcHJlY2F0ZWQuTUFJTl9TVFJfQVJHUwotICAgIGNvbmZpZyA9
IGdldF9jb25maWcoKQotICAgIHBsdWdpbm1hbmFnZXIgPSBjb25maWcucGx1Z2lubWFuYWdlcgot
ICAgIHRyeToKLSAgICAgICAgaWYgcGx1Z2luczoKLSAgICAgICAgICAgIGZvciBwbHVnaW4gaW4g
cGx1Z2luczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBsdWdpbiwgc2l4LnN0cmlu
Z190eXBlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXIuY29uc2lkZXJfcGx1
Z2luYXJnKHBsdWdpbikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICBwbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHBsdWdpbikKLSAgICAgICAgaWYgd2FybmluZzoKLSAg
ICAgICAgICAgIGNvbmZpZy53YXJuKCdDMScsIHdhcm5pbmcpCi0gICAgICAgIHJldHVybiBwbHVn
aW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2NtZGxpbmVfcGFyc2UoCi0gICAgICAgICAgICBwbHVnaW5t
YW5hZ2VyPXBsdWdpbm1hbmFnZXIsIGFyZ3M9YXJncykKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlv
bjoKLSAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUoKQotICAgICAgICByYWlzZQot
Ci0KLWNsYXNzIFB5dGVzdFBsdWdpbk1hbmFnZXIoUGx1Z2luTWFuYWdlcik6Ci0gICAgIiIiCi0g
ICAgT3ZlcndyaXRlcyA6cHk6Y2xhc3M6YHBsdWdneS5QbHVnaW5NYW5hZ2VyIDxwbHVnZ3kuUGx1
Z2luTWFuYWdlcj5gIHRvIGFkZCBweXRlc3Qtc3BlY2lmaWMKLSAgICBmdW5jdGlvbmFsaXR5Ogot
Ci0gICAgKiBsb2FkaW5nIHBsdWdpbnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBgYFBZVEVTVF9Q
TFVHSU5gYCBlbnYgdmFyaWFibGUgYW5kCi0gICAgICBgYHB5dGVzdF9wbHVnaW5zYGAgZ2xvYmFs
IHZhcmlhYmxlcyBmb3VuZCBpbiBwbHVnaW5zIGJlaW5nIGxvYWRlZDsKLSAgICAqIGBgY29uZnRl
c3QucHlgYCBsb2FkaW5nIGR1cmluZyBzdGFydC11cDsKLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUHl0ZXN0UGx1Z2luTWFuYWdlciwgc2VsZikuX19p
bml0X18oInB5dGVzdCIsIGltcGxwcmVmaXg9InB5dGVzdF8iKQotICAgICAgICBzZWxmLl9jb25m
dGVzdF9wbHVnaW5zID0gc2V0KCkKLQotICAgICAgICAjIHN0YXRlIHJlbGF0ZWQgdG8gbG9jYWwg
Y29uZnRlc3QgcGx1Z2lucwotICAgICAgICBzZWxmLl9wYXRoMmNvbmZtb2RzID0ge30KLSAgICAg
ICAgc2VsZi5fY29uZnRlc3RwYXRoMm1vZCA9IHt9Ci0gICAgICAgIHNlbGYuX2NvbmZjdXRkaXIg
PSBOb25lCi0gICAgICAgIHNlbGYuX25vY29uZnRlc3QgPSBGYWxzZQotICAgICAgICBzZWxmLl9k
dXBsaWNhdGVwYXRocyA9IHNldCgpCi0KLSAgICAgICAgc2VsZi5hZGRfaG9va3NwZWNzKF9weXRl
c3QuaG9va3NwZWMpCi0gICAgICAgIHNlbGYucmVnaXN0ZXIoc2VsZikKLSAgICAgICAgaWYgb3Mu
ZW52aXJvbi5nZXQoJ1BZVEVTVF9ERUJVRycpOgotICAgICAgICAgICAgZXJyID0gc3lzLnN0ZGVy
cgotICAgICAgICAgICAgZW5jb2RpbmcgPSBnZXRhdHRyKGVyciwgJ2VuY29kaW5nJywgJ3V0Zjgn
KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVyciA9IHB5LmlvLmR1cGZpbGUo
ZXJyLCBlbmNvZGluZz1lbmNvZGluZykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0g
ICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LnNldHdyaXRl
cihlcnIud3JpdGUpCi0gICAgICAgICAgICBzZWxmLmVuYWJsZV90cmFjaW5nKCkKLQotICAgICAg
ICAjIENvbmZpZy5fY29uc2lkZXJfaW1wb3J0aG9vayB3aWxsIHNldCBhIHJlYWwgb2JqZWN0IGlm
IHJlcXVpcmVkLgotICAgICAgICBzZWxmLnJld3JpdGVfaG9vayA9IF9weXRlc3QuYXNzZXJ0aW9u
LkR1bW15UmV3cml0ZUhvb2soKQotCi0gICAgZGVmIGFkZGhvb2tzKHNlbGYsIG1vZHVsZV9vcl9j
bGFzcyk6Ci0gICAgICAgICIiIgotICAgICAgICAuLiBkZXByZWNhdGVkOjogMi44Ci0KLSAgICAg
ICAgVXNlIDpweTptZXRoOmBwbHVnZ3kuUGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNzIDxQbHVn
aW5NYW5hZ2VyLmFkZF9ob29rc3BlY3M+YAotICAgICAgICBpbnN0ZWFkLgotICAgICAgICAiIiIK
LSAgICAgICAgd2FybmluZyA9IGRpY3QoY29kZT0iSTIiLAotICAgICAgICAgICAgICAgICAgICAg
ICBmc2xvY2F0aW9uPV9weXRlc3QuX2NvZGUuZ2V0ZnNsaW5lbm8oc3lzLl9nZXRmcmFtZSgxKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgIG5vZGVpZD1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlPSJ1c2UgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzIGluc3RlYWQgb2Yg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkIGFkZGhvb2tzKCkg
bWV0aG9kLiIpCi0gICAgICAgIHNlbGYuX3dhcm4od2FybmluZykKLSAgICAgICAgcmV0dXJuIHNl
bGYuYWRkX2hvb2tzcGVjcyhtb2R1bGVfb3JfY2xhc3MpCi0KLSAgICBkZWYgcGFyc2VfaG9va2lt
cGxfb3B0cyhzZWxmLCBwbHVnaW4sIG5hbWUpOgotICAgICAgICAjIHB5dGVzdCBob29rcyBhcmUg
YWx3YXlzIHByZWZpeGVkIHdpdGggcHl0ZXN0XwotICAgICAgICAjIHNvIHdlIGF2b2lkIGFjY2Vz
c2luZyBwb3NzaWJseSBub24tcmVhZGFibGUgYXR0cmlidXRlcwotICAgICAgICAjIChzZWUgaXNz
dWUgIzEwNzMpCi0gICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoInB5dGVzdF8iKToKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICAjIGlnbm9yZSBzb21lIGhpc3RvcmljIHNwZWNpYWwg
bmFtZXMgd2hpY2ggY2FuIG5vdCBiZSBob29rcyBhbnl3YXkKLSAgICAgICAgaWYgbmFtZSA9PSAi
cHl0ZXN0X3BsdWdpbnMiIG9yIG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0X2Z1bmNhcmdfXyIpOgot
ICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihwbHVnaW4sIG5h
bWUpCi0gICAgICAgIG9wdHMgPSBzdXBlcihQeXRlc3RQbHVnaW5NYW5hZ2VyLCBzZWxmKS5wYXJz
ZV9ob29raW1wbF9vcHRzKHBsdWdpbiwgbmFtZSkKLSAgICAgICAgaWYgb3B0cyBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIGZvciBuYW1lIGluICgidHJ5Zmlyc3QiLCAidHJ5bGFzdCIsICJvcHRp
b25hbGhvb2siLCAiaG9va3dyYXBwZXIiKToKLSAgICAgICAgICAgICAgICBvcHRzLnNldGRlZmF1
bHQobmFtZSwgaGFzYXR0cihtZXRob2QsIG5hbWUpKQotICAgICAgICByZXR1cm4gb3B0cwotCi0g
ICAgZGVmIHBhcnNlX2hvb2tzcGVjX29wdHMoc2VsZiwgbW9kdWxlX29yX2NsYXNzLCBuYW1lKToK
LSAgICAgICAgb3B0cyA9IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLnBhcnNlX2hv
b2tzcGVjX29wdHMoCi0gICAgICAgICAgICBtb2R1bGVfb3JfY2xhc3MsIG5hbWUpCi0gICAgICAg
IGlmIG9wdHMgaXMgTm9uZToKLSAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIobW9kdWxlX29y
X2NsYXNzLCBuYW1lKQotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJweXRlc3RfIik6
Ci0gICAgICAgICAgICAgICAgb3B0cyA9IHsiZmlyc3RyZXN1bHQiOiBoYXNhdHRyKG1ldGhvZCwg
ImZpcnN0cmVzdWx0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaGlzdG9yaWMiOiBoYXNh
dHRyKG1ldGhvZCwgImhpc3RvcmljIil9Ci0gICAgICAgIHJldHVybiBvcHRzCi0KLSAgICBkZWYg
cmVnaXN0ZXIoc2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgotICAgICAgICBpZiBuYW1lID09ICdw
eXRlc3RfY2F0Y2hsb2cnOgotICAgICAgICAgICAgc2VsZi5fd2FybigncHl0ZXN0LWNhdGNobG9n
IHBsdWdpbiBoYXMgYmVlbiBtZXJnZWQgaW50byB0aGUgY29yZSwgJwotICAgICAgICAgICAgICAg
ICAgICAgICAncGxlYXNlIHJlbW92ZSBpdCBmcm9tIHlvdXIgcmVxdWlyZW1lbnRzLicpCi0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgcmV0ID0gc3VwZXIoUHl0ZXN0UGx1Z2luTWFuYWdlciwg
c2VsZikucmVnaXN0ZXIocGx1Z2luLCBuYW1lKQotICAgICAgICBpZiByZXQ6Ci0gICAgICAgICAg
ICBzZWxmLmhvb2sucHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkLmNhbGxfaGlzdG9yaWMoCi0gICAg
ICAgICAgICAgICAga3dhcmdzPWRpY3QocGx1Z2luPXBsdWdpbiwgbWFuYWdlcj1zZWxmKSkKLQot
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwbHVnaW4sIHR5cGVzLk1vZHVsZVR5cGUpOgotICAg
ICAgICAgICAgICAgIHNlbGYuY29uc2lkZXJfbW9kdWxlKHBsdWdpbikKLSAgICAgICAgcmV0dXJu
IHJldAotCi0gICAgZGVmIGdldHBsdWdpbihzZWxmLCBuYW1lKToKLSAgICAgICAgIyBzdXBwb3J0
IGRlcHJlY2F0ZWQgbmFtaW5nIGJlY2F1c2UgcGx1Z2lucyAoeGRpc3QgZS5nLikgdXNlIGl0Ci0g
ICAgICAgIHJldHVybiBzZWxmLmdldF9wbHVnaW4obmFtZSkKLQotICAgIGRlZiBoYXNwbHVnaW4o
c2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBwbHVnaW4gd2l0aCB0
aGUgZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkLiIiIgotICAgICAgICByZXR1cm4gYm9vbChzZWxm
LmdldF9wbHVnaW4obmFtZSkpCi0KLSAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShzZWxmLCBjb25m
aWcpOgotICAgICAgICAjIFhYWCBub3cgdGhhdCB0aGUgcGx1Z2lubWFuYWdlciBleHBvc2VzIGhv
b2tpbXBsKHRyeWZpcnN0Li4uKQotICAgICAgICAjIHdlIHNob3VsZCByZW1vdmUgdHJ5Zmlyc3Qv
dHJ5bGFzdCBhcyBtYXJrZXJzCi0gICAgICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKCJtYXJr
ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyeWZpcnN0OiBtYXJrIGEg
aG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBzdWNoIHRoYXQgdGhlICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBsdWdpbiBtYWNoaW5lcnkgd2lsbCB0cnkgdG8gY2FsbCBp
dCBmaXJzdC9hcyBlYXJseSBhcyBwb3NzaWJsZS4iKQotICAgICAgICBjb25maWcuYWRkaW5pdmFs
dWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cnls
YXN0OiBtYXJrIGEgaG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBzdWNoIHRoYXQgdGhlICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdWdpbiBtYWNoaW5lcnkgd2lsbCB0
cnkgdG8gY2FsbCBpdCBsYXN0L2FzIGxhdGUgYXMgcG9zc2libGUuIikKLQotICAgIGRlZiBfd2Fy
bihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAga3dhcmdzID0gbWVzc2FnZSBpZiBpc2luc3RhbmNl
KG1lc3NhZ2UsIGRpY3QpIGVsc2UgewotICAgICAgICAgICAgJ2NvZGUnOiAnSTEnLAotICAgICAg
ICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAotICAgICAgICAgICAgJ2ZzbG9jYXRpb24nOiBOb25l
LAotICAgICAgICAgICAgJ25vZGVpZCc6IE5vbmUsCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5o
b29rLnB5dGVzdF9sb2d3YXJuaW5nLmNhbGxfaGlzdG9yaWMoa3dhcmdzPWt3YXJncykKLQotICAg
ICMKLSAgICAjIGludGVybmFsIEFQSSBmb3IgbG9jYWwgY29uZnRlc3QgcGx1Z2luIGhhbmRsaW5n
Ci0gICAgIwotICAgIGRlZiBfc2V0X2luaXRpYWxfY29uZnRlc3RzKHNlbGYsIG5hbWVzcGFjZSk6
Ci0gICAgICAgICIiIiBsb2FkIGluaXRpYWwgY29uZnRlc3QgZmlsZXMgZ2l2ZW4gYSBwcmVwYXJz
ZWQgIm5hbWVzcGFjZSIuCi0gICAgICAgICAgICBBcyBjb25mdGVzdCBmaWxlcyBtYXkgYWRkIHRo
ZWlyIG93biBjb21tYW5kIGxpbmUgb3B0aW9ucwotICAgICAgICAgICAgd2hpY2ggaGF2ZSBhcmd1
bWVudHMgKCctLW15LW9wdCBzb21lcGF0aCcpIHdlIG1pZ2h0IGdldCBzb21lCi0gICAgICAgICAg
ICBmYWxzZSBwb3NpdGl2ZXMuICBBbGwgYnVpbHRpbiBhbmQgM3JkIHBhcnR5IHBsdWdpbnMgd2ls
bCBoYXZlCi0gICAgICAgICAgICBiZWVuIGxvYWRlZCwgaG93ZXZlciwgc28gY29tbW9uIG9wdGlv
bnMgd2lsbCBub3QgY29uZnVzZSBvdXIgbG9naWMKLSAgICAgICAgICAgIGhlcmUuCi0gICAgICAg
ICIiIgotICAgICAgICBjdXJyZW50ID0gcHkucGF0aC5sb2NhbCgpCi0gICAgICAgIHNlbGYuX2Nv
bmZjdXRkaXIgPSBjdXJyZW50LmpvaW4obmFtZXNwYWNlLmNvbmZjdXRkaXIsIGFicz1UcnVlKSBc
Ci0gICAgICAgICAgICBpZiBuYW1lc3BhY2UuY29uZmN1dGRpciBlbHNlIE5vbmUKLSAgICAgICAg
c2VsZi5fbm9jb25mdGVzdCA9IG5hbWVzcGFjZS5ub2NvbmZ0ZXN0Ci0gICAgICAgIHRlc3RwYXRo
cyA9IG5hbWVzcGFjZS5maWxlX29yX2RpcgotICAgICAgICBmb3VuZGFuY2hvciA9IEZhbHNlCi0g
ICAgICAgIGZvciBwYXRoIGluIHRlc3RwYXRoczoKLSAgICAgICAgICAgIHBhdGggPSBzdHIocGF0
aCkKLSAgICAgICAgICAgICMgcmVtb3ZlIG5vZGUtaWQgc3ludGF4Ci0gICAgICAgICAgICBpID0g
cGF0aC5maW5kKCI6OiIpCi0gICAgICAgICAgICBpZiBpICE9IC0xOgotICAgICAgICAgICAgICAg
IHBhdGggPSBwYXRoWzppXQotICAgICAgICAgICAgYW5jaG9yID0gY3VycmVudC5qb2luKHBhdGgs
IGFicz0xKQotICAgICAgICAgICAgaWYgZXhpc3RzKGFuY2hvcik6ICAjIHdlIGZvdW5kIHNvbWUg
ZmlsZSBvYmplY3QKLSAgICAgICAgICAgICAgICBzZWxmLl90cnlfbG9hZF9jb25mdGVzdChhbmNo
b3IpCi0gICAgICAgICAgICAgICAgZm91bmRhbmNob3IgPSBUcnVlCi0gICAgICAgIGlmIG5vdCBm
b3VuZGFuY2hvcjoKLSAgICAgICAgICAgIHNlbGYuX3RyeV9sb2FkX2NvbmZ0ZXN0KGN1cnJlbnQp
Ci0KLSAgICBkZWYgX3RyeV9sb2FkX2NvbmZ0ZXN0KHNlbGYsIGFuY2hvcik6Ci0gICAgICAgIHNl
bGYuX2dldGNvbmZ0ZXN0bW9kdWxlcyhhbmNob3IpCi0gICAgICAgICMgbGV0J3MgYWxzbyBjb25z
aWRlciB0ZXN0KiBzdWJkaXJzCi0gICAgICAgIGlmIGFuY2hvci5jaGVjayhkaXI9MSk6Ci0gICAg
ICAgICAgICBmb3IgeCBpbiBhbmNob3IubGlzdGRpcigidGVzdCoiKToKLSAgICAgICAgICAgICAg
ICBpZiB4LmNoZWNrKGRpcj0xKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0Y29uZnRl
c3Rtb2R1bGVzKHgpCi0KLSAgICBkZWYgX2dldGNvbmZ0ZXN0bW9kdWxlcyhzZWxmLCBwYXRoKToK
LSAgICAgICAgaWYgc2VsZi5fbm9jb25mdGVzdDoKLSAgICAgICAgICAgIHJldHVybiBbXQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aDJjb25mbW9kc1twYXRoXQot
ICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBwYXRoLmlzZmlsZSgpOgot
ICAgICAgICAgICAgICAgIGNsaXN0ID0gc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHBhdGguZGly
cGF0aCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFhYWCB0aGVzZSBk
YXlzIHdlIG1heSByYXRoZXIgd2FudCB0byB1c2UgY29uZmlnLnJvb3RkaXIKLSAgICAgICAgICAg
ICAgICAjIGFuZCBhbGxvdyB1c2VycyB0byBvcHQgaW50byBsb29raW5nIGludG8gdGhlIHJvb3Rk
aXIgcGFyZW50Ci0gICAgICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIHJlcXVp
cmluZyB0byBzcGVjaWZ5IGNvbmZjdXRkaXIKLSAgICAgICAgICAgICAgICBjbGlzdCA9IFtdCi0g
ICAgICAgICAgICAgICAgZm9yIHBhcmVudCBpbiBwYXRoLnBhcnRzKCk6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX2NvbmZjdXRkaXIgYW5kIHNlbGYuX2NvbmZjdXRkaXIucmVsdG8ocGFy
ZW50KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAg
ICAgIGNvbmZ0ZXN0cGF0aCA9IHBhcmVudC5qb2luKCJjb25mdGVzdC5weSIpCi0gICAgICAgICAg
ICAgICAgICAgIGlmIGNvbmZ0ZXN0cGF0aC5pc2ZpbGUoKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZCA9IHNlbGYuX2ltcG9ydGNvbmZ0ZXN0KGNvbmZ0ZXN0cGF0aCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNsaXN0LmFwcGVuZChtb2QpCi0KLSAgICAgICAgICAgIHNlbGYuX3BhdGgy
Y29uZm1vZHNbcGF0aF0gPSBjbGlzdAotICAgICAgICAgICAgcmV0dXJuIGNsaXN0Ci0KLSAgICBk
ZWYgX3JnZXRfd2l0aF9jb25mbW9kKHNlbGYsIG5hbWUsIHBhdGgpOgotICAgICAgICBtb2R1bGVz
ID0gc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHBhdGgpCi0gICAgICAgIGZvciBtb2QgaW4gcmV2
ZXJzZWQobW9kdWxlcyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG1vZCwgZ2V0YXR0cihtb2QsIG5hbWUpCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJy
b3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFt
ZSkKLQotICAgIGRlZiBfaW1wb3J0Y29uZnRlc3Qoc2VsZiwgY29uZnRlc3RwYXRoKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZ0ZXN0cGF0aDJtb2RbY29uZnRl
c3RwYXRoXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwa2dwYXRoID0g
Y29uZnRlc3RwYXRoLnB5cGtncGF0aCgpCi0gICAgICAgICAgICBpZiBwa2dwYXRoIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgX2Vuc3VyZV9yZW1vdmVkX3N5c21vZHVsZShjb25mdGVzdHBhdGgu
cHVyZWJhc2VuYW1lKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZCA9IGNv
bmZ0ZXN0cGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAg
ICAgICAgICAgICAgIHJhaXNlIENvbmZ0ZXN0SW1wb3J0RmFpbHVyZShjb25mdGVzdHBhdGgsIHN5
cy5leGNfaW5mbygpKQotCi0gICAgICAgICAgICBzZWxmLl9jb25mdGVzdF9wbHVnaW5zLmFkZCht
b2QpCi0gICAgICAgICAgICBzZWxmLl9jb25mdGVzdHBhdGgybW9kW2NvbmZ0ZXN0cGF0aF0gPSBt
b2QKLSAgICAgICAgICAgIGRpcnBhdGggPSBjb25mdGVzdHBhdGguZGlycGF0aCgpCi0gICAgICAg
ICAgICBpZiBkaXJwYXRoIGluIHNlbGYuX3BhdGgyY29uZm1vZHM6Ci0gICAgICAgICAgICAgICAg
Zm9yIHBhdGgsIG1vZHMgaW4gc2VsZi5fcGF0aDJjb25mbW9kcy5pdGVtcygpOgotICAgICAgICAg
ICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoLnJlbHRvKGRpcnBhdGgpIG9yIHBhdGggPT0gZGly
cGF0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBtb2Qgbm90IGluIG1vZHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZCkKLSAgICAgICAgICAgIHNlbGYu
dHJhY2UoImxvYWRlZCBjb25mdGVzdG1vZHVsZSAlciIgJSAobW9kKSkKLSAgICAgICAgICAgIHNl
bGYuY29uc2lkZXJfY29uZnRlc3QobW9kKQotICAgICAgICAgICAgcmV0dXJuIG1vZAotCi0gICAg
IwotICAgICMgQVBJIGZvciBib290c3RyYXBwaW5nIHBsdWdpbiBsb2FkaW5nCi0gICAgIwotICAg
ICMKLQotICAgIGRlZiBjb25zaWRlcl9wcmVwYXJzZShzZWxmLCBhcmdzKToKLSAgICAgICAgZm9y
IG9wdDEsIG9wdDIgaW4gemlwKGFyZ3MsIGFyZ3NbMTpdKToKLSAgICAgICAgICAgIGlmIG9wdDEg
PT0gIi1wIjoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnNpZGVyX3BsdWdpbmFyZyhvcHQyKQot
Ci0gICAgZGVmIGNvbnNpZGVyX3BsdWdpbmFyZyhzZWxmLCBhcmcpOgotICAgICAgICBpZiBhcmcu
c3RhcnRzd2l0aCgibm86Iik6Ci0gICAgICAgICAgICBuYW1lID0gYXJnWzM6XQotICAgICAgICAg
ICAgc2VsZi5zZXRfYmxvY2tlZChuYW1lKQotICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRz
d2l0aCgicHl0ZXN0XyIpOgotICAgICAgICAgICAgICAgIHNlbGYuc2V0X2Jsb2NrZWQoInB5dGVz
dF8iICsgbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW1wb3J0X3BsdWdp
bihhcmcpCi0KLSAgICBkZWYgY29uc2lkZXJfY29uZnRlc3Qoc2VsZiwgY29uZnRlc3Rtb2R1bGUp
OgotICAgICAgICBzZWxmLnJlZ2lzdGVyKGNvbmZ0ZXN0bW9kdWxlLCBuYW1lPWNvbmZ0ZXN0bW9k
dWxlLl9fZmlsZV9fKQotCi0gICAgZGVmIGNvbnNpZGVyX2VudihzZWxmKToKLSAgICAgICAgc2Vs
Zi5faW1wb3J0X3BsdWdpbl9zcGVjcyhvcy5lbnZpcm9uLmdldCgiUFlURVNUX1BMVUdJTlMiKSkK
LQotICAgIGRlZiBjb25zaWRlcl9tb2R1bGUoc2VsZiwgbW9kKToKLSAgICAgICAgc2VsZi5faW1w
b3J0X3BsdWdpbl9zcGVjcyhnZXRhdHRyKG1vZCwgJ3B5dGVzdF9wbHVnaW5zJywgW10pKQotCi0g
ICAgZGVmIF9pbXBvcnRfcGx1Z2luX3NwZWNzKHNlbGYsIHNwZWMpOgotICAgICAgICBwbHVnaW5z
ID0gX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdChzcGVjKQotICAgICAgICBmb3IgaW1wb3J0X3Nw
ZWMgaW4gcGx1Z2luczoKLSAgICAgICAgICAgIHNlbGYuaW1wb3J0X3BsdWdpbihpbXBvcnRfc3Bl
YykKLQotICAgIGRlZiBpbXBvcnRfcGx1Z2luKHNlbGYsIG1vZG5hbWUpOgotICAgICAgICAjIG1v
c3Qgb2Z0ZW4gbW9kbmFtZSByZWZlcnMgdG8gYnVpbHRpbiBtb2R1bGVzLCBlLmcuICJweXRlc3Rl
ciIsCi0gICAgICAgICMgInRlcm1pbmFsIiBvciAiY2FwdHVyZSIuICBUaG9zZSBwbHVnaW5zIGFy
ZSByZWdpc3RlcmVkIHVuZGVyIHRoZWlyCi0gICAgICAgICMgYmFzZW5hbWUgZm9yIGhpc3Rvcmlj
IHB1cnBvc2VzIGJ1dCBtdXN0IGJlIGltcG9ydGVkIHdpdGggdGhlCi0gICAgICAgICMgX3B5dGVz
dCBwcmVmaXguCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1vZG5hbWUsIChzaXgudGV4dF90
eXBlLCBzdHIpKSwgIm1vZHVsZSBuYW1lIGFzIHRleHQgcmVxdWlyZWQsIGdvdCAlciIgJSBtb2Ru
YW1lCi0gICAgICAgIG1vZG5hbWUgPSBzdHIobW9kbmFtZSkKLSAgICAgICAgaWYgc2VsZi5pc19i
bG9ja2VkKG1vZG5hbWUpIG9yIHNlbGYuZ2V0X3BsdWdpbihtb2RuYW1lKSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBtb2RuYW1lIGluIGJ1aWx0aW5fcGx1Z2lu
czoKLSAgICAgICAgICAgIGltcG9ydHNwZWMgPSAiX3B5dGVzdC4iICsgbW9kbmFtZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgaW1wb3J0c3BlYyA9IG1vZG5hbWUKLSAgICAgICAgc2VsZi5y
ZXdyaXRlX2hvb2subWFya19yZXdyaXRlKGltcG9ydHNwZWMpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIF9faW1wb3J0X18oaW1wb3J0c3BlYykKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9y
IGFzIGU6Ci0gICAgICAgICAgICBuZXdfZXhjX3R5cGUgPSBJbXBvcnRFcnJvcgotICAgICAgICAg
ICAgbmV3X2V4Y19tZXNzYWdlID0gJ0Vycm9yIGltcG9ydGluZyBwbHVnaW4gIiVzIjogJXMnICUg
KG1vZG5hbWUsIHNhZmVfc3RyKGUuYXJnc1swXSkpCi0gICAgICAgICAgICBuZXdfZXhjID0gbmV3
X2V4Y190eXBlKG5ld19leGNfbWVzc2FnZSkKLQotICAgICAgICAgICAgc2l4LnJlcmFpc2UobmV3
X2V4Y190eXBlLCBuZXdfZXhjLCBzeXMuZXhjX2luZm8oKVsyXSkKLQotICAgICAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBp
ZiBub3QgaGFzYXR0cihweXRlc3QsICdza2lwJykgb3Igbm90IGlzaW5zdGFuY2UoZSwgcHl0ZXN0
LnNraXAuRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgc2Vs
Zi5fd2Fybigic2tpcHBlZCBwbHVnaW4gJXI6ICVzIiAlICgobW9kbmFtZSwgZS5tc2cpKSkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzW2ltcG9ydHNwZWNdCi0g
ICAgICAgICAgICBzZWxmLnJlZ2lzdGVyKG1vZCwgbW9kbmFtZSkKLQotCi1kZWYgX2dldF9wbHVn
aW5fc3BlY3NfYXNfbGlzdChzcGVjcyk6Ci0gICAgIiIiCi0gICAgUGFyc2VzIGEgbGlzdCBvZiAi
cGx1Z2luIHNwZWNzIiBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgcGx1Z2luIG5hbWVzLgotCi0gICAg
UGx1Z2luIHNwZWNzIGNhbiBiZSBnaXZlbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQg
YnkgIiwiIG9yIGFscmVhZHkgYXMgYSBsaXN0L3R1cGxlIGluCi0gICAgd2hpY2ggY2FzZSBpdCBp
cyByZXR1cm5lZCBhcyBhIGxpc3QuIFNwZWNzIGNhbiBhbHNvIGJlIGBOb25lYCBpbiB3aGljaCBj
YXNlIGFuCi0gICAgZW1wdHkgbGlzdCBpcyByZXR1cm5lZC4KLSAgICAiIiIKLSAgICBpZiBzcGVj
cyBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjcywgc3RyKToKLSAgICAg
ICAgICAgIHNwZWNzID0gc3BlY3Muc3BsaXQoJywnKSBpZiBzcGVjcyBlbHNlIFtdCi0gICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKHNwZWNzLCAobGlzdCwgdHVwbGUpKToKLSAgICAgICAgICAgIHJh
aXNlIFVzYWdlRXJyb3IoIlBsdWdpbiBzcGVjcyBtdXN0IGJlIGEgJywnLXNlcGFyYXRlZCBzdHJp
bmcgb3IgYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0L3R1cGxlIG9mIHN0
cmluZ3MgZm9yIHBsdWdpbiBuYW1lcy4gR2l2ZW46ICVyIiAlIHNwZWNzKQotICAgICAgICByZXR1
cm4gbGlzdChzcGVjcykKLSAgICByZXR1cm4gW10KLQotCi1jbGFzcyBQYXJzZXI6Ci0gICAgIiIi
IFBhcnNlciBmb3IgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgaW5pLWZpbGUgdmFsdWVzLgot
Ci0gICAgOml2YXIgZXh0cmFfaW5mbzogZGljdCBvZiBnZW5lcmljIHBhcmFtIC0+IHZhbHVlIHRv
IGRpc3BsYXkgaW4gY2FzZQotICAgICAgICB0aGVyZSdzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhl
IGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdXNhZ2U9Tm9uZSwgcHJvY2Vzc29wdD1Ob25lKToKLSAgICAgICAgc2VsZi5fYW5vbnltb3Vz
ID0gT3B0aW9uR3JvdXAoImN1c3RvbSBvcHRpb25zIiwgcGFyc2VyPXNlbGYpCi0gICAgICAgIHNl
bGYuX2dyb3VwcyA9IFtdCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NvcHQgPSBwcm9jZXNzb3B0Ci0g
ICAgICAgIHNlbGYuX3VzYWdlID0gdXNhZ2UKLSAgICAgICAgc2VsZi5faW5pZGljdCA9IHt9Ci0g
ICAgICAgIHNlbGYuX2luaW5hbWVzID0gW10KLSAgICAgICAgc2VsZi5leHRyYV9pbmZvID0ge30K
LQotICAgIGRlZiBwcm9jZXNzb3B0aW9uKHNlbGYsIG9wdGlvbik6Ci0gICAgICAgIGlmIHNlbGYu
X3Byb2Nlc3NvcHQ6Ci0gICAgICAgICAgICBpZiBvcHRpb24uZGVzdDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wcm9jZXNzb3B0KG9wdGlvbikKLQotICAgIGRlZiBnZXRncm91cChzZWxmLCBuYW1l
LCBkZXNjcmlwdGlvbj0iIiwgYWZ0ZXI9Tm9uZSk6Ci0gICAgICAgICIiIiBnZXQgKG9yIGNyZWF0
ZSkgYSBuYW1lZCBvcHRpb24gR3JvdXAuCi0KLSAgICAgICAgOm5hbWU6IG5hbWUgb2YgdGhlIG9w
dGlvbiBncm91cC4KLSAgICAgICAgOmRlc2NyaXB0aW9uOiBsb25nIGRlc2NyaXB0aW9uIGZvciAt
LWhlbHAgb3V0cHV0LgotICAgICAgICA6YWZ0ZXI6IG5hbWUgb2Ygb3RoZXIgZ3JvdXAsIHVzZWQg
Zm9yIG9yZGVyaW5nIC0taGVscCBvdXRwdXQuCi0KLSAgICAgICAgVGhlIHJldHVybmVkIGdyb3Vw
IG9iamVjdCBoYXMgYW4gYGBhZGRvcHRpb25gYCBtZXRob2Qgd2l0aCB0aGUgc2FtZQotICAgICAg
ICBzaWduYXR1cmUgYXMgOnB5OmZ1bmM6YHBhcnNlci5hZGRvcHRpb24KLSAgICAgICAgPF9weXRl
c3QuY29uZmlnLlBhcnNlci5hZGRvcHRpb24+YCBidXQgd2lsbCBiZSBzaG93biBpbiB0aGUKLSAg
ICAgICAgcmVzcGVjdGl2ZSBncm91cCBpbiB0aGUgb3V0cHV0IG9mIGBgcHl0ZXN0LiAtLWhlbHBg
YC4KLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9ncm91cHM6Ci0gICAg
ICAgICAgICBpZiBncm91cC5uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdy
b3VwCi0gICAgICAgIGdyb3VwID0gT3B0aW9uR3JvdXAobmFtZSwgZGVzY3JpcHRpb24sIHBhcnNl
cj1zZWxmKQotICAgICAgICBpID0gMAotICAgICAgICBmb3IgaSwgZ3JwIGluIGVudW1lcmF0ZShz
ZWxmLl9ncm91cHMpOgotICAgICAgICAgICAgaWYgZ3JwLm5hbWUgPT0gYWZ0ZXI6Ci0gICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgc2VsZi5fZ3JvdXBzLmluc2VydChpICsgMSwgZ3JvdXAp
Ci0gICAgICAgIHJldHVybiBncm91cAotCi0gICAgZGVmIGFkZG9wdGlvbihzZWxmLCAqb3B0cywg
KiphdHRycyk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhIGNvbW1hbmQgbGluZSBvcHRpb24uCi0K
LSAgICAgICAgOm9wdHM6IG9wdGlvbiBuYW1lcywgY2FuIGJlIHNob3J0IG9yIGxvbmcgb3B0aW9u
cy4KLSAgICAgICAgOmF0dHJzOiBzYW1lIGF0dHJpYnV0ZXMgd2hpY2ggdGhlIGBgYWRkX29wdGlv
bigpYGAgZnVuY3Rpb24gb2YgdGhlCi0gICAgICAgICAgIGBhcmdwYXJzZSBsaWJyYXJ5Ci0gICAg
ICAgICAgIDxodHRwOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFyeS9hcmdwYXJzZS5odG1sPmBf
Ci0gICAgICAgICAgIGFjY2VwdHMuCi0KLSAgICAgICAgQWZ0ZXIgY29tbWFuZCBsaW5lIHBhcnNp
bmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBweXRlc3QgY29uZmlnCi0gICAgICAgIG9i
amVjdCB2aWEgYGBjb25maWcub3B0aW9uLk5BTUVgYCB3aGVyZSBgYE5BTUVgYCBpcyB1c3VhbGx5
IHNldAotICAgICAgICBieSBwYXNzaW5nIGEgYGBkZXN0YGAgYXR0cmlidXRlLCBmb3IgZXhhbXBs
ZQotICAgICAgICBgYGFkZG9wdGlvbigiLS1sb25nIiwgZGVzdD0iTkFNRSIsIC4uLilgYC4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2Fub255bW91cy5hZGRvcHRpb24oKm9wdHMsICoqYXR0
cnMpCi0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgYXJncywgbmFtZXNwYWNlPU5vbmUpOgotICAgICAg
ICBmcm9tIF9weXRlc3QuX2FyZ2NvbXBsZXRlIGltcG9ydCB0cnlfYXJnY29tcGxldGUKLSAgICAg
ICAgc2VsZi5vcHRwYXJzZXIgPSBzZWxmLl9nZXRwYXJzZXIoKQotICAgICAgICB0cnlfYXJnY29t
cGxldGUoc2VsZi5vcHRwYXJzZXIpCi0gICAgICAgIHJldHVybiBzZWxmLm9wdHBhcnNlci5wYXJz
ZV9hcmdzKFtzdHIoeCkgZm9yIHggaW4gYXJnc10sIG5hbWVzcGFjZT1uYW1lc3BhY2UpCi0KLSAg
ICBkZWYgX2dldHBhcnNlcihzZWxmKToKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9hcmdjb21wbGV0
ZSBpbXBvcnQgZmlsZXNjb21wbGV0ZXIKLSAgICAgICAgb3B0cGFyc2VyID0gTXlPcHRpb25QYXJz
ZXIoc2VsZiwgc2VsZi5leHRyYV9pbmZvKQotICAgICAgICBncm91cHMgPSBzZWxmLl9ncm91cHMg
KyBbc2VsZi5fYW5vbnltb3VzXQotICAgICAgICBmb3IgZ3JvdXAgaW4gZ3JvdXBzOgotICAgICAg
ICAgICAgaWYgZ3JvdXAub3B0aW9uczoKLSAgICAgICAgICAgICAgICBkZXNjID0gZ3JvdXAuZGVz
Y3JpcHRpb24gb3IgZ3JvdXAubmFtZQotICAgICAgICAgICAgICAgIGFyZ2dyb3VwID0gb3B0cGFy
c2VyLmFkZF9hcmd1bWVudF9ncm91cChkZXNjKQotICAgICAgICAgICAgICAgIGZvciBvcHRpb24g
aW4gZ3JvdXAub3B0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgbiA9IG9wdGlvbi5uYW1lcygp
Ci0gICAgICAgICAgICAgICAgICAgIGEgPSBvcHRpb24uYXR0cnMoKQotICAgICAgICAgICAgICAg
ICAgICBhcmdncm91cC5hZGRfYXJndW1lbnQoKm4sICoqYSkKLSAgICAgICAgIyBiYXNoIGxpa2Ug
YXV0b2NvbXBsZXRpb24gZm9yIGRpcnMgKGFwcGVuZGluZyAnLycpCi0gICAgICAgIG9wdHBhcnNl
ci5hZGRfYXJndW1lbnQoRklMRV9PUl9ESVIsIG5hcmdzPScqJykuY29tcGxldGVyID0gZmlsZXNj
b21wbGV0ZXIKLSAgICAgICAgcmV0dXJuIG9wdHBhcnNlcgotCi0gICAgZGVmIHBhcnNlX3NldG9w
dGlvbihzZWxmLCBhcmdzLCBvcHRpb24sIG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgcGFyc2Vk
b3B0aW9uID0gc2VsZi5wYXJzZShhcmdzLCBuYW1lc3BhY2U9bmFtZXNwYWNlKQotICAgICAgICBm
b3IgbmFtZSwgdmFsdWUgaW4gcGFyc2Vkb3B0aW9uLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAg
ICAgICBzZXRhdHRyKG9wdGlvbiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybiBnZXRhdHRy
KHBhcnNlZG9wdGlvbiwgRklMRV9PUl9ESVIpCi0KLSAgICBkZWYgcGFyc2Vfa25vd25fYXJncyhz
ZWxmLCBhcmdzLCBuYW1lc3BhY2U9Tm9uZSk6Ci0gICAgICAgICIiInBhcnNlcyBhbmQgcmV0dXJu
cyBhIG5hbWVzcGFjZSBvYmplY3Qgd2l0aCBrbm93biBhcmd1bWVudHMgYXQgdGhpcwotICAgICAg
ICBwb2ludC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2tub3duX2Fu
ZF91bmtub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSlbMF0KLQotICAgIGRlZiBw
YXJzZV9rbm93bl9hbmRfdW5rbm93bl9hcmdzKHNlbGYsIGFyZ3MsIG5hbWVzcGFjZT1Ob25lKToK
LSAgICAgICAgIiIicGFyc2VzIGFuZCByZXR1cm5zIGEgbmFtZXNwYWNlIG9iamVjdCB3aXRoIGtu
b3duIGFyZ3VtZW50cywgYW5kCi0gICAgICAgIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHVua25v
d24gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgIiIiCi0gICAgICAgIG9wdHBhcnNlciA9IHNlbGYu
X2dldHBhcnNlcigpCi0gICAgICAgIGFyZ3MgPSBbc3RyKHgpIGZvciB4IGluIGFyZ3NdCi0gICAg
ICAgIHJldHVybiBvcHRwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzLCBuYW1lc3BhY2U9bmFt
ZXNwYWNlKQotCi0gICAgZGVmIGFkZGluaShzZWxmLCBuYW1lLCBoZWxwLCB0eXBlPU5vbmUsIGRl
ZmF1bHQ9Tm9uZSk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhbiBpbmktZmlsZSBvcHRpb24uCi0K
LSAgICAgICAgOm5hbWU6IG5hbWUgb2YgdGhlIGluaS12YXJpYWJsZQotICAgICAgICA6dHlwZTog
dHlwZSBvZiB0aGUgdmFyaWFibGUsIGNhbiBiZSBgYHBhdGhsaXN0YGAsIGBgYXJnc2BgLCBgYGxp
bmVsaXN0YGAKLSAgICAgICAgICAgICAgIG9yIGBgYm9vbGBgLgotICAgICAgICA6ZGVmYXVsdDog
ZGVmYXVsdCB2YWx1ZSBpZiBubyBpbmktZmlsZSBvcHRpb24gZXhpc3RzIGJ1dCBpcyBxdWVyaWVk
LgotCi0gICAgICAgIFRoZSB2YWx1ZSBvZiBpbmktdmFyaWFibGVzIGNhbiBiZSByZXRyaWV2ZWQg
dmlhIGEgY2FsbCB0bwotICAgICAgICA6cHk6ZnVuYzpgY29uZmlnLmdldGluaShuYW1lKSA8X3B5
dGVzdC5jb25maWcuQ29uZmlnLmdldGluaT5gLgotICAgICAgICAiIiIKLSAgICAgICAgYXNzZXJ0
IHR5cGUgaW4gKE5vbmUsICJwYXRobGlzdCIsICJhcmdzIiwgImxpbmVsaXN0IiwgImJvb2wiKQot
ICAgICAgICBzZWxmLl9pbmlkaWN0W25hbWVdID0gKGhlbHAsIHR5cGUsIGRlZmF1bHQpCi0gICAg
ICAgIHNlbGYuX2luaW5hbWVzLmFwcGVuZChuYW1lKQotCi0KLWNsYXNzIEFyZ3VtZW50RXJyb3Io
RXhjZXB0aW9uKToKLSAgICAiIiIKLSAgICBSYWlzZWQgaWYgYW4gQXJndW1lbnQgaW5zdGFuY2Ug
aXMgY3JlYXRlZCB3aXRoIGludmFsaWQgb3IKLSAgICBpbmNvbnNpc3RlbnQgYXJndW1lbnRzLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgb3B0aW9uKToKLSAgICAgICAg
c2VsZi5tc2cgPSBtc2cKLSAgICAgICAgc2VsZi5vcHRpb25faWQgPSBzdHIob3B0aW9uKQotCi0g
ICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYub3B0aW9uX2lkOgotICAgICAg
ICAgICAgcmV0dXJuICJvcHRpb24gJXM6ICVzIiAlIChzZWxmLm9wdGlvbl9pZCwgc2VsZi5tc2cp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5tc2cKLQotCi1jbGFzcyBB
cmd1bWVudDoKLSAgICAiIiJjbGFzcyB0aGF0IG1pbWljcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW91
ciBvZiBvcHRwYXJzZS5PcHRpb24KLQotICAgIGl0cyBjdXJyZW50bHkgYSBsZWFzdCBlZmZvcnQg
aW1wbGVtZW50YXRpb24KLSAgICBhbmQgaWdub3JpbmcgY2hvaWNlcyBhbmQgaW50ZWdlciBwcmVm
aXhlcwotICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9vcHRwYXJzZS5odG1s
I29wdHBhcnNlLXN0YW5kYXJkLW9wdGlvbi10eXBlcwotICAgICIiIgotICAgIF90eXBfbWFwID0g
ewotICAgICAgICAnaW50JzogaW50LAotICAgICAgICAnc3RyaW5nJzogc3RyLAotICAgICAgICAn
ZmxvYXQnOiBmbG9hdCwKLSAgICAgICAgJ2NvbXBsZXgnOiBjb21wbGV4LAotICAgIH0KLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCAqbmFtZXMsICoqYXR0cnMpOgotICAgICAgICAiIiJzdG9yZSBw
YXJtcyBpbiBwcml2YXRlIHZhcnMgZm9yIHVzZSBpbiBhZGRfYXJndW1lbnQiIiIKLSAgICAgICAg
c2VsZi5fYXR0cnMgPSBhdHRycwotICAgICAgICBzZWxmLl9zaG9ydF9vcHRzID0gW10KLSAgICAg
ICAgc2VsZi5fbG9uZ19vcHRzID0gW10KLSAgICAgICAgc2VsZi5kZXN0ID0gYXR0cnMuZ2V0KCdk
ZXN0JykKLSAgICAgICAgaWYgJyVkZWZhdWx0JyBpbiAoYXR0cnMuZ2V0KCdoZWxwJykgb3IgJycp
OgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAncHl0ZXN0IG5v
dyB1c2VzIGFyZ3BhcnNlLiAiJWRlZmF1bHQiIHNob3VsZCBiZScKLSAgICAgICAgICAgICAgICAn
IGNoYW5nZWQgdG8gIiUoZGVmYXVsdClzIiAnLAotICAgICAgICAgICAgICAgIERlcHJlY2F0aW9u
V2FybmluZywKLSAgICAgICAgICAgICAgICBzdGFja2xldmVsPTMpCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHR5cCA9IGF0dHJzWyd0eXBlJ10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgot
ICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyB0aGlzIG1pZ2h0
IHJhaXNlIGEga2V5ZXJyb3IgYXMgd2VsbCwgZG9uJ3Qgd2FudCB0byBjYXRjaCB0aGF0Ci0gICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKHR5cCwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAg
ICAgICAgaWYgdHlwID09ICdjaG9pY2UnOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53
YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUgYXJndW1lbnQgdG8gYWRkb3B0aW9u
KCkgaXMgYSBzdHJpbmcgJXIuJwotICAgICAgICAgICAgICAgICAgICAgICAgJyBGb3IgcGFyc2Vh
cmcgdGhpcyBpcyBvcHRpb25hbCBhbmQgd2hlbiBzdXBwbGllZCcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICcgc2hvdWxkIGJlIGEgdHlwZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAnIChv
cHRpb25zOiAlcyknICUgKHR5cCwgbmFtZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVw
cmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0zKQot
ICAgICAgICAgICAgICAgICAgICAjIGFyZ3BhcnNlIGV4cGVjdHMgYSB0eXBlIGhlcmUgdGFrZSBp
dCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGVsZW1l
bnQKLSAgICAgICAgICAgICAgICAgICAgYXR0cnNbJ3R5cGUnXSA9IHR5cGUoYXR0cnNbJ2Nob2lj
ZXMnXVswXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUgYXJndW1lbnQgdG8gYWRk
b3B0aW9uKCkgaXMgYSBzdHJpbmcgJXIuJwotICAgICAgICAgICAgICAgICAgICAgICAgJyBGb3Ig
cGFyc2VhcmcgdGhpcyBzaG91bGQgYmUgYSB0eXBlLicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICcgKG9wdGlvbnM6ICVzKScgJSAodHlwLCBuYW1lcyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVs
PTMpCi0gICAgICAgICAgICAgICAgICAgIGF0dHJzWyd0eXBlJ10gPSBBcmd1bWVudC5fdHlwX21h
cFt0eXBdCi0gICAgICAgICAgICAgICAgIyB1c2VkIGluIHRlc3RfcGFyc2VvcHQgLT4gdGVzdF9w
YXJzZV9kZWZhdWx0Z2V0dGVyCi0gICAgICAgICAgICAgICAgc2VsZi50eXBlID0gYXR0cnNbJ3R5
cGUnXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnR5cGUgPSB0eXAK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBhdHRyaWJ1dGUgZXhpc3RlbmNlIGlzIHRlc3Rl
ZCBpbiBDb25maWcuX3Byb2Nlc3NvcHQKLSAgICAgICAgICAgIHNlbGYuZGVmYXVsdCA9IGF0dHJz
WydkZWZhdWx0J10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwot
ICAgICAgICBzZWxmLl9zZXRfb3B0X3N0cmluZ3MobmFtZXMpCi0gICAgICAgIGlmIG5vdCBzZWxm
LmRlc3Q6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sb25nX29wdHM6Ci0gICAgICAgICAgICAgICAg
c2VsZi5kZXN0ID0gc2VsZi5fbG9uZ19vcHRzWzBdWzI6XS5yZXBsYWNlKCctJywgJ18nKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuZGVzdCA9IHNlbGYuX3Nob3J0X29wdHNbMF1bMTpdCi0gICAgICAgICAgICAgICAgZXhj
ZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3Io
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBhIGxvbmcgb3Igc2hvcnQgb3B0aW9uJywg
c2VsZikKLQotICAgIGRlZiBuYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0
X29wdHMgKyBzZWxmLl9sb25nX29wdHMKLQotICAgIGRlZiBhdHRycyhzZWxmKToKLSAgICAgICAg
IyB1cGRhdGUgYW55IGF0dHJpYnV0ZXMgc2V0IGJ5IHByb2Nlc3NvcHQKLSAgICAgICAgYXR0cnMg
PSAnZGVmYXVsdCBkZXN0IGhlbHAnLnNwbGl0KCkKLSAgICAgICAgaWYgc2VsZi5kZXN0OgotICAg
ICAgICAgICAgYXR0cnMuYXBwZW5kKHNlbGYuZGVzdCkKLSAgICAgICAgZm9yIGF0dHIgaW4gYXR0
cnM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYXR0cnNbYXR0cl0g
PSBnZXRhdHRyKHNlbGYsIGF0dHIpCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBzZWxmLl9hdHRycy5nZXQoJ2hlbHAn
KToKLSAgICAgICAgICAgIGEgPSBzZWxmLl9hdHRyc1snaGVscCddCi0gICAgICAgICAgICBhID0g
YS5yZXBsYWNlKCclZGVmYXVsdCcsICclKGRlZmF1bHQpcycpCi0gICAgICAgICAgICAjIGEgPSBh
LnJlcGxhY2UoJyVwcm9nJywgJyUocHJvZylzJykKLSAgICAgICAgICAgIHNlbGYuX2F0dHJzWydo
ZWxwJ10gPSBhCi0gICAgICAgIHJldHVybiBzZWxmLl9hdHRycwotCi0gICAgZGVmIF9zZXRfb3B0
X3N0cmluZ3Moc2VsZiwgb3B0cyk6Ci0gICAgICAgICIiImRpcmVjdGx5IGZyb20gb3B0cGFyc2UK
LQotICAgICAgICBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IGFzIHRoaXMgaXMgcGFzc2VkIHRvIGFy
Z3BhcnNlIGxhdGVyIG9uIiIiCi0gICAgICAgIGZvciBvcHQgaW4gb3B0czoKLSAgICAgICAgICAg
IGlmIGxlbihvcHQpIDwgMjoKLSAgICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKAot
ICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAg
ICAgICAgICAgICAgICJtdXN0IGJlIGF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGxvbmciICUgb3B0
LCBzZWxmKQotICAgICAgICAgICAgZWxpZiBsZW4ob3B0KSA9PSAyOgotICAgICAgICAgICAgICAg
IGlmIG5vdCAob3B0WzBdID09ICItIiBhbmQgb3B0WzFdICE9ICItIik6Ci0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBzaG9ydCBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAi
bXVzdCBiZSBvZiB0aGUgZm9ybSAteCwgKHggYW55IG5vbi1kYXNoIGNoYXIpIiAlIG9wdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5fc2hvcnRf
b3B0cy5hcHBlbmQob3B0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBu
b3QgKG9wdFswOjJdID09ICItLSIgYW5kIG9wdFsyXSAhPSAiLSIpOgotICAgICAgICAgICAgICAg
ICAgICByYWlzZSBBcmd1bWVudEVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFs
aWQgbG9uZyBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVz
dCBzdGFydCB3aXRoIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIgJSBvcHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvbmdfb3B0cy5hcHBl
bmQob3B0KQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBhcmdzID0gW10KLSAg
ICAgICAgaWYgc2VsZi5fc2hvcnRfb3B0czoKLSAgICAgICAgICAgIGFyZ3MgKz0gWydfc2hvcnRf
b3B0czogJyArIHJlcHIoc2VsZi5fc2hvcnRfb3B0cyldCi0gICAgICAgIGlmIHNlbGYuX2xvbmdf
b3B0czoKLSAgICAgICAgICAgIGFyZ3MgKz0gWydfbG9uZ19vcHRzOiAnICsgcmVwcihzZWxmLl9s
b25nX29wdHMpXQotICAgICAgICBhcmdzICs9IFsnZGVzdDogJyArIHJlcHIoc2VsZi5kZXN0KV0K
LSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAndHlwZScpOgotICAgICAgICAgICAgYXJncyArPSBb
J3R5cGU6ICcgKyByZXByKHNlbGYudHlwZSldCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2Rl
ZmF1bHQnKToKLSAgICAgICAgICAgIGFyZ3MgKz0gWydkZWZhdWx0OiAnICsgcmVwcihzZWxmLmRl
ZmF1bHQpXQotICAgICAgICByZXR1cm4gJ0FyZ3VtZW50KHswfSknLmZvcm1hdCgnLCAnLmpvaW4o
YXJncykpCi0KLQotY2xhc3MgT3B0aW9uR3JvdXA6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIGRlc2NyaXB0aW9uPSIiLCBwYXJzZXI9Tm9uZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5h
bWUKLSAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCi0gICAgICAgIHNlbGYu
b3B0aW9ucyA9IFtdCi0gICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyCi0KLSAgICBkZWYgYWRk
b3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiphdHRycyk6Ci0gICAgICAgICIiIiBhZGQgYW4gb3B0
aW9uIHRvIHRoaXMgZ3JvdXAuCi0KLSAgICAgICAgaWYgYSBzaG9ydGVuZWQgdmVyc2lvbiBvZiBh
IGxvbmcgb3B0aW9uIGlzIHNwZWNpZmllZCBpdCB3aWxsCi0gICAgICAgIGJlIHN1cHByZXNzZWQg
aW4gdGhlIGhlbHAuIGFkZG9wdGlvbignLS10d293b3JkcycsICctLXR3by13b3JkcycpCi0gICAg
ICAgIHJlc3VsdHMgaW4gaGVscCBzaG93aW5nICctLXR3by13b3Jkcycgb25seSwgYnV0IC0tdHdv
d29yZHMgZ2V0cwotICAgICAgICBhY2NlcHRlZCAqKmFuZCoqIHRoZSBhdXRvbWF0aWMgZGVzdGlu
YXRpb24gaXMgaW4gYXJncy50d293b3JkcwotICAgICAgICAiIiIKLSAgICAgICAgY29uZmxpY3Qg
PSBzZXQob3B0bmFtZXMpLmludGVyc2VjdGlvbigKLSAgICAgICAgICAgIG5hbWUgZm9yIG9wdCBp
biBzZWxmLm9wdGlvbnMgZm9yIG5hbWUgaW4gb3B0Lm5hbWVzKCkpCi0gICAgICAgIGlmIGNvbmZs
aWN0OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib3B0aW9uIG5hbWVzICVzIGFscmVh
ZHkgYWRkZWQiICUgY29uZmxpY3QpCi0gICAgICAgIG9wdGlvbiA9IEFyZ3VtZW50KCpvcHRuYW1l
cywgKiphdHRycykKLSAgICAgICAgc2VsZi5fYWRkb3B0aW9uX2luc3RhbmNlKG9wdGlvbiwgc2hv
cnR1cHBlcj1GYWxzZSkKLQotICAgIGRlZiBfYWRkb3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiph
dHRycyk6Ci0gICAgICAgIG9wdGlvbiA9IEFyZ3VtZW50KCpvcHRuYW1lcywgKiphdHRycykKLSAg
ICAgICAgc2VsZi5fYWRkb3B0aW9uX2luc3RhbmNlKG9wdGlvbiwgc2hvcnR1cHBlcj1UcnVlKQot
Ci0gICAgZGVmIF9hZGRvcHRpb25faW5zdGFuY2Uoc2VsZiwgb3B0aW9uLCBzaG9ydHVwcGVyPUZh
bHNlKToKLSAgICAgICAgaWYgbm90IHNob3J0dXBwZXI6Ci0gICAgICAgICAgICBmb3Igb3B0IGlu
IG9wdGlvbi5fc2hvcnRfb3B0czoKLSAgICAgICAgICAgICAgICBpZiBvcHRbMF0gPT0gJy0nIGFu
ZCBvcHRbMV0uaXNsb3dlcigpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJsb3dlcmNhc2Ugc2hvcnRvcHRpb25zIHJlc2VydmVkIikKLSAgICAgICAgaWYgc2VsZi5wYXJz
ZXI6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlci5wcm9jZXNzb3B0aW9uKG9wdGlvbikKLSAgICAg
ICAgc2VsZi5vcHRpb25zLmFwcGVuZChvcHRpb24pCi0KLQotY2xhc3MgTXlPcHRpb25QYXJzZXIo
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs
IGV4dHJhX2luZm89Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBleHRyYV9pbmZvOgotICAgICAgICAg
ICAgZXh0cmFfaW5mbyA9IHt9Ci0gICAgICAgIHNlbGYuX3BhcnNlciA9IHBhcnNlcgotICAgICAg
ICBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci5fX2luaXRfXyhzZWxmLCB1c2FnZT1wYXJzZXIuX3Vz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1G
YWxzZSwgZm9ybWF0dGVyX2NsYXNzPURyb3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIpCi0gICAg
ICAgICMgZXh0cmFfaW5mbyBpcyBhIGRpY3Qgb2YgKHBhcmFtIC0+IHZhbHVlKSB0byBkaXNwbGF5
IGlmIHRoZXJlJ3MKLSAgICAgICAgIyBhbiB1c2FnZSBlcnJvciB0byBwcm92aWRlIG1vcmUgY29u
dGV4dHVhbCBpbmZvcm1hdGlvbiB0byB0aGUgdXNlcgotICAgICAgICBzZWxmLmV4dHJhX2luZm8g
PSBleHRyYV9pbmZvCi0KLSAgICBkZWYgcGFyc2VfYXJncyhzZWxmLCBhcmdzPU5vbmUsIG5hbWVz
cGFjZT1Ob25lKToKLSAgICAgICAgIiIiYWxsb3cgc3BsaXR0aW5nIG9mIHBvc2l0aW9uYWwgYXJn
dW1lbnRzIiIiCi0gICAgICAgIGFyZ3MsIGFyZ3YgPSBzZWxmLnBhcnNlX2tub3duX2FyZ3MoYXJn
cywgbmFtZXNwYWNlKQotICAgICAgICBpZiBhcmd2OgotICAgICAgICAgICAgZm9yIGFyZyBpbiBh
cmd2OgotICAgICAgICAgICAgICAgIGlmIGFyZyBhbmQgYXJnWzBdID09ICctJzoKLSAgICAgICAg
ICAgICAgICAgICAgbGluZXMgPSBbJ3VucmVjb2duaXplZCBhcmd1bWVudHM6ICVzJyAlICgnICcu
am9pbihhcmd2KSldCi0gICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNvcnRlZChzZWxm
LmV4dHJhX2luZm8uaXRlbXMoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgJXM6ICVzJyAlIChrLCB2KSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcign
XG4nLmpvaW4obGluZXMpKQotICAgICAgICAgICAgZ2V0YXR0cihhcmdzLCBGSUxFX09SX0RJUiku
ZXh0ZW5kKGFyZ3YpCi0gICAgICAgIHJldHVybiBhcmdzCi0KLQotY2xhc3MgRHJvcFNob3J0ZXJM
b25nSGVscEZvcm1hdHRlcihhcmdwYXJzZS5IZWxwRm9ybWF0dGVyKToKLSAgICAiIiJzaG9ydGVu
IGhlbHAgZm9yIGxvbmcgb3B0aW9ucyB0aGF0IGRpZmZlciBvbmx5IGluIGV4dHJhIGh5cGhlbnMK
LQotICAgIC0gY29sbGFwc2UgKipsb25nKiogb3B0aW9ucyB0aGF0IGFyZSB0aGUgc2FtZSBleGNl
cHQgZm9yIGV4dHJhIGh5cGhlbnMKLSAgICAtIHNwZWNpYWwgYWN0aW9uIGF0dHJpYnV0ZSBtYXBf
bG9uZ19vcHRpb24gYWxsb3dzIHN1cnByZXNzaW5nIGFkZGl0aW9uYWwKLSAgICAgIGxvbmcgb3B0
aW9ucwotICAgIC0gc2hvcnRjdXQgaWYgdGhlcmUgYXJlIG9ubHkgdHdvIG9wdGlvbnMgYW5kIG9u
ZSBvZiB0aGVtIGlzIGEgc2hvcnQgb25lCi0gICAgLSBjYWNoZSByZXN1bHQgb24gYWN0aW9uIG9i
amVjdCBhcyB0aGlzIGlzIGNhbGxlZCBhdCBsZWFzdCAyIHRpbWVzCi0gICAgIiIiCi0KLSAgICBk
ZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rpb24pOgotICAgICAgICBvcmdz
dHIgPSBhcmdwYXJzZS5IZWxwRm9ybWF0dGVyLl9mb3JtYXRfYWN0aW9uX2ludm9jYXRpb24oc2Vs
ZiwgYWN0aW9uKQotICAgICAgICBpZiBvcmdzdHIgYW5kIG9yZ3N0clswXSAhPSAnLSc6ICAjIG9u
bHkgb3B0aW9uYWwgYXJndW1lbnRzCi0gICAgICAgICAgICByZXR1cm4gb3Jnc3RyCi0gICAgICAg
IHJlcyA9IGdldGF0dHIoYWN0aW9uLCAnX2Zvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbicsIE5v
bmUpCi0gICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgIHJldHVybiByZXMKLSAgICAgICAgb3B0
aW9ucyA9IG9yZ3N0ci5zcGxpdCgnLCAnKQotICAgICAgICBpZiBsZW4ob3B0aW9ucykgPT0gMiBh
bmQgKGxlbihvcHRpb25zWzBdKSA9PSAyIG9yIGxlbihvcHRpb25zWzFdKSA9PSAyKToKLSAgICAg
ICAgICAgICMgYSBzaG9ydGN1dCBmb3IgJy1oLCAtLWhlbHAnIG9yICctLWFiYycsICctYScKLSAg
ICAgICAgICAgIGFjdGlvbi5fZm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uID0gb3Jnc3RyCi0g
ICAgICAgICAgICByZXR1cm4gb3Jnc3RyCi0gICAgICAgIHJldHVybl9saXN0ID0gW10KLSAgICAg
ICAgb3B0aW9uX21hcCA9IGdldGF0dHIoYWN0aW9uLCAnbWFwX2xvbmdfb3B0aW9uJywge30pCi0g
ICAgICAgIGlmIG9wdGlvbl9tYXAgaXMgTm9uZToKLSAgICAgICAgICAgIG9wdGlvbl9tYXAgPSB7
fQotICAgICAgICBzaG9ydF9sb25nID0ge30KLSAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25z
OgotICAgICAgICAgICAgaWYgbGVuKG9wdGlvbikgPT0gMiBvciBvcHRpb25bMl0gPT0gJyAnOgot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBub3Qgb3B0aW9uLnN0YXJ0
c3dpdGgoJy0tJyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRFcnJvcignbG9uZyBv
cHRpb25hbCBhcmd1bWVudCB3aXRob3V0ICItLSI6IFslc10nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAlIChvcHRpb24pLCBzZWxmKQotICAgICAgICAgICAgeHhvcHRpb24g
PSBvcHRpb25bMjpdCi0gICAgICAgICAgICBpZiB4eG9wdGlvbi5zcGxpdCgpWzBdIG5vdCBpbiBv
cHRpb25fbWFwOgotICAgICAgICAgICAgICAgIHNob3J0ZW5lZCA9IHh4b3B0aW9uLnJlcGxhY2Uo
Jy0nLCAnJykKLSAgICAgICAgICAgICAgICBpZiBzaG9ydGVuZWQgbm90IGluIHNob3J0X2xvbmcg
b3IgXAotICAgICAgICAgICAgICAgICAgIGxlbihzaG9ydF9sb25nW3Nob3J0ZW5lZF0pIDwgbGVu
KHh4b3B0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgc2hvcnRfbG9uZ1tzaG9ydGVuZWRdID0g
eHhvcHRpb24KLSAgICAgICAgIyBub3cgc2hvcnRfbG9uZyBoYXMgYmVlbiBmaWxsZWQgb3V0IHRv
IHRoZSBsb25nZXN0IHdpdGggZGFzaGVzCi0gICAgICAgICMgKiphbmQqKiB3ZSBrZWVwIHRoZSBy
aWdodCBvcHRpb24gb3JkZXJpbmcgZnJvbSBhZGRfYXJndW1lbnQKLSAgICAgICAgZm9yIG9wdGlv
biBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgbGVuKG9wdGlvbikgPT0gMiBvciBvcHRpb25b
Ml0gPT0gJyAnOgotICAgICAgICAgICAgICAgIHJldHVybl9saXN0LmFwcGVuZChvcHRpb24pCi0g
ICAgICAgICAgICBpZiBvcHRpb25bMjpdID09IHNob3J0X2xvbmcuZ2V0KG9wdGlvbi5yZXBsYWNl
KCctJywgJycpKToKLSAgICAgICAgICAgICAgICByZXR1cm5fbGlzdC5hcHBlbmQob3B0aW9uLnJl
cGxhY2UoJyAnLCAnPScsIDEpKQotICAgICAgICBhY3Rpb24uX2Zvcm1hdHRlZF9hY3Rpb25faW52
b2NhdGlvbiA9ICcsICcuam9pbihyZXR1cm5fbGlzdCkKLSAgICAgICAgcmV0dXJuIGFjdGlvbi5f
Zm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uCi0KLQotZGVmIF9lbnN1cmVfcmVtb3ZlZF9zeXNt
b2R1bGUobW9kbmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kbmFt
ZV0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBDbWRPcHRp
b25zKG9iamVjdCk6Ci0gICAgIiIiIGhvbGRzIGNtZGxpbmUgb3B0aW9ucyBhcyBhdHRyaWJ1dGVz
LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlcz0oKSk6Ci0gICAgICAgIHNlbGYu
X19kaWN0X18udXBkYXRlKHZhbHVlcykKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuICI8Q21kT3B0aW9ucyAlcj4iICUgKHNlbGYuX19kaWN0X18sKQotCi0gICAgZGVm
IGNvcHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBDbWRPcHRpb25zKHNlbGYuX19kaWN0X18pCi0K
LQotY2xhc3MgTm90c2V0OgotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICI8Tk9UU0VUPiIKLQotCi1ub3RzZXQgPSBOb3RzZXQoKQotRklMRV9PUl9ESVIgPSAnZmlsZV9v
cl9kaXInCi0KLQotZGVmIF9pdGVyX3Jld3JpdGFibGVfbW9kdWxlcyhwYWNrYWdlX2ZpbGVzKToK
LSAgICBmb3IgZm4gaW4gcGFja2FnZV9maWxlczoKLSAgICAgICAgaXNfc2ltcGxlX21vZHVsZSA9
ICcvJyBub3QgaW4gZm4gYW5kIGZuLmVuZHN3aXRoKCcucHknKQotICAgICAgICBpc19wYWNrYWdl
ID0gZm4uY291bnQoJy8nKSA9PSAxIGFuZCBmbi5lbmRzd2l0aCgnX19pbml0X18ucHknKQotICAg
ICAgICBpZiBpc19zaW1wbGVfbW9kdWxlOgotICAgICAgICAgICAgbW9kdWxlX25hbWUsIF8gPSBv
cy5wYXRoLnNwbGl0ZXh0KGZuKQotICAgICAgICAgICAgeWllbGQgbW9kdWxlX25hbWUKLSAgICAg
ICAgZWxpZiBpc19wYWNrYWdlOgotICAgICAgICAgICAgcGFja2FnZV9uYW1lID0gb3MucGF0aC5k
aXJuYW1lKGZuKQotICAgICAgICAgICAgeWllbGQgcGFja2FnZV9uYW1lCi0KLQotY2xhc3MgQ29u
ZmlnKG9iamVjdCk6Ci0gICAgIiIiIGFjY2VzcyB0byBjb25maWd1cmF0aW9uIHZhbHVlcywgcGx1
Z2lubWFuYWdlciBhbmQgcGx1Z2luIGhvb2tzLiAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGx1Z2lubWFuYWdlcik6Ci0gICAgICAgICM6IGFjY2VzcyB0byBjb21tYW5kIGxpbmUgb3B0
aW9uIGFzIGF0dHJpYnV0ZXMuCi0gICAgICAgICM6IChkZXByZWNhdGVkKSwgdXNlIDpweTpmdW5j
OmBnZXRvcHRpb24oKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldG9wdGlvbj5gIGluc3RlYWQK
LSAgICAgICAgc2VsZi5vcHRpb24gPSBDbWRPcHRpb25zKCkKLSAgICAgICAgX2EgPSBGSUxFX09S
X0RJUgotICAgICAgICBzZWxmLl9wYXJzZXIgPSBQYXJzZXIoCi0gICAgICAgICAgICB1c2FnZT0i
JSUocHJvZylzIFtvcHRpb25zXSBbJXNdIFslc10gWy4uLl0iICUgKF9hLCBfYSksCi0gICAgICAg
ICAgICBwcm9jZXNzb3B0PXNlbGYuX3Byb2Nlc3NvcHQsCi0gICAgICAgICkKLSAgICAgICAgIzog
YSBwbHVnaW5tYW5hZ2VyIGluc3RhbmNlCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlciA9IHBs
dWdpbm1hbmFnZXIKLSAgICAgICAgc2VsZi50cmFjZSA9IHNlbGYucGx1Z2lubWFuYWdlci50cmFj
ZS5yb290LmdldCgiY29uZmlnIikKLSAgICAgICAgc2VsZi5ob29rID0gc2VsZi5wbHVnaW5tYW5h
Z2VyLmhvb2sKLSAgICAgICAgc2VsZi5faW5pY2FjaGUgPSB7fQotICAgICAgICBzZWxmLl9vdmVy
cmlkZV9pbmkgPSAoKQotICAgICAgICBzZWxmLl9vcHQyZGVzdCA9IHt9Ci0gICAgICAgIHNlbGYu
X2NsZWFudXAgPSBbXQotICAgICAgICBzZWxmLl93YXJuID0gc2VsZi5wbHVnaW5tYW5hZ2VyLl93
YXJuCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5yZWdpc3RlcihzZWxmLCAicHl0ZXN0Y29u
ZmlnIikKLSAgICAgICAgc2VsZi5fY29uZmlndXJlZCA9IEZhbHNlCi0KLSAgICAgICAgZGVmIGRv
X3NldG5zKGRpYyk6Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBzZXRu
cyhweXRlc3QsIGRpYykKLQotICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X25hbWVzcGFjZS5jYWxs
X2hpc3RvcmljKGRvX3NldG5zLCB7fSkKLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9hZGRvcHRp
b24uY2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdChwYXJzZXI9c2VsZi5fcGFyc2VyKSkKLQotICAg
IGRlZiBhZGRfY2xlYW51cChzZWxmLCBmdW5jKToKLSAgICAgICAgIiIiIEFkZCBhIGZ1bmN0aW9u
IHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb25maWcgb2JqZWN0IGdldHMgb3V0IG9mCi0gICAgICAg
IHVzZSAodXN1YWxseSBjb25pbmNpZGluZyB3aXRoIHB5dGVzdF91bmNvbmZpZ3VyZSkuIiIiCi0g
ICAgICAgIHNlbGYuX2NsZWFudXAuYXBwZW5kKGZ1bmMpCi0KLSAgICBkZWYgX2RvX2NvbmZpZ3Vy
ZShzZWxmKToKLSAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9jb25maWd1cmVkCi0gICAgICAgIHNl
bGYuX2NvbmZpZ3VyZWQgPSBUcnVlCi0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfY29uZmlndXJl
LmNhbGxfaGlzdG9yaWMoa3dhcmdzPWRpY3QoY29uZmlnPXNlbGYpKQotCi0gICAgZGVmIF9lbnN1
cmVfdW5jb25maWd1cmUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2NvbmZpZ3VyZWQ6Ci0gICAg
ICAgICAgICBzZWxmLl9jb25maWd1cmVkID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuaG9vay5w
eXRlc3RfdW5jb25maWd1cmUoY29uZmlnPXNlbGYpCi0gICAgICAgICAgICBzZWxmLmhvb2sucHl0
ZXN0X2NvbmZpZ3VyZS5fY2FsbF9oaXN0b3J5ID0gW10KLSAgICAgICAgd2hpbGUgc2VsZi5fY2xl
YW51cDoKLSAgICAgICAgICAgIGZpbiA9IHNlbGYuX2NsZWFudXAucG9wKCkKLSAgICAgICAgICAg
IGZpbigpCi0KLSAgICBkZWYgd2FybihzZWxmLCBjb2RlLCBtZXNzYWdlLCBmc2xvY2F0aW9uPU5v
bmUsIG5vZGVpZD1Ob25lKToKLSAgICAgICAgIiIiIGdlbmVyYXRlIGEgd2FybmluZyBmb3IgdGhp
cyB0ZXN0IHNlc3Npb24uICIiIgotICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2xvZ3dhcm5pbmcu
Y2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdCgKLSAgICAgICAgICAgIGNvZGU9Y29kZSwgbWVzc2Fn
ZT1tZXNzYWdlLAotICAgICAgICAgICAgZnNsb2NhdGlvbj1mc2xvY2F0aW9uLCBub2RlaWQ9bm9k
ZWlkKSkKLQotICAgIGRlZiBnZXRfdGVybWluYWxfd3JpdGVyKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKS5fdHcK
LQotICAgIGRlZiBweXRlc3RfY21kbGluZV9wYXJzZShzZWxmLCBwbHVnaW5tYW5hZ2VyLCBhcmdz
KToKLSAgICAgICAgIyBSRUYxIGFzc2VydCBzZWxmID09IHBsdWdpbm1hbmFnZXIuY29uZmlnLCAo
c2VsZiwgcGx1Z2lubWFuYWdlci5jb25maWcpCi0gICAgICAgIHNlbGYucGFyc2UoYXJncykKLSAg
ICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBub3RpZnlfZXhjZXB0aW9uKHNlbGYsIGV4Y2lu
Zm8sIG9wdGlvbj1Ob25lKToKLSAgICAgICAgaWYgb3B0aW9uIGFuZCBvcHRpb24uZnVsbHRyYWNl
OgotICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHN0eWxlID0gIm5hdGl2ZSIKLSAgICAgICAgZXhjcmVwciA9IGV4Y2luZm8uZ2V0cmVwcihmdW5j
YXJncz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dsb2NhbHM9
Z2V0YXR0cihvcHRpb24sICdzaG93bG9jYWxzJywgRmFsc2UpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgcmVzID0gc2VsZi5ob29rLnB5dGVzdF9pbnRlcm5hbGVycm9yKGV4
Y3JlcHI9ZXhjcmVwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2luZm89ZXhjaW5mbykKLSAgICAgICAgaWYgbm90IGFueShyZXMpOgotICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gc3RyKGV4Y3JlcHIpLnNwbGl0KCJcbiIpOgotICAgICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIklOVEVSTkFMRVJST1I+ICVzXG4iICUgbGluZSkKLSAgICAgICAg
ICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLQotICAgIGRlZiBjd2RfcmVsYXRpdmVfbm9kZWlk
KHNlbGYsIG5vZGVpZCk6Ci0gICAgICAgICMgbm9kZWlkJ3MgYXJlIHJlbGF0aXZlIHRvIHRoZSBy
b290cGF0aCwgY29tcHV0ZSByZWxhdGl2ZSB0byBjd2QKLSAgICAgICAgaWYgc2VsZi5pbnZvY2F0
aW9uX2RpciAhPSBzZWxmLnJvb3RkaXI6Ci0gICAgICAgICAgICBmdWxscGF0aCA9IHNlbGYucm9v
dGRpci5qb2luKG5vZGVpZCkKLSAgICAgICAgICAgIG5vZGVpZCA9IHNlbGYuaW52b2NhdGlvbl9k
aXIuYmVzdHJlbHBhdGgoZnVsbHBhdGgpCi0gICAgICAgIHJldHVybiBub2RlaWQKLQotICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBmcm9tZGljdGFyZ3MoY2xzLCBvcHRpb25fZGljdCwgYXJncyk6
Ci0gICAgICAgICIiIiBjb25zdHJ1Y3RvciB1c2VhYmxlIGZvciBzdWJwcm9jZXNzZXMuICIiIgot
ICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKCkKLSAgICAgICAgY29uZmlnLm9wdGlvbi5fX2Rp
Y3RfXy51cGRhdGUob3B0aW9uX2RpY3QpCi0gICAgICAgIGNvbmZpZy5wYXJzZShhcmdzLCBhZGRv
cHRzPUZhbHNlKQotICAgICAgICBmb3IgeCBpbiBjb25maWcub3B0aW9uLnBsdWdpbnM6Ci0gICAg
ICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5jb25zaWRlcl9wbHVnaW5hcmcoeCkKLSAgICAg
ICAgcmV0dXJuIGNvbmZpZwotCi0gICAgZGVmIF9wcm9jZXNzb3B0KHNlbGYsIG9wdCk6Ci0gICAg
ICAgIGZvciBuYW1lIGluIG9wdC5fc2hvcnRfb3B0cyArIG9wdC5fbG9uZ19vcHRzOgotICAgICAg
ICAgICAgc2VsZi5fb3B0MmRlc3RbbmFtZV0gPSBvcHQuZGVzdAotCi0gICAgICAgIGlmIGhhc2F0
dHIob3B0LCAnZGVmYXVsdCcpIGFuZCBvcHQuZGVzdDoKLSAgICAgICAgICAgIGlmIG5vdCBoYXNh
dHRyKHNlbGYub3B0aW9uLCBvcHQuZGVzdCk6Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihzZWxm
Lm9wdGlvbiwgb3B0LmRlc3QsIG9wdC5kZWZhdWx0KQotCi0gICAgQGhvb2tpbXBsKHRyeWxhc3Q9
VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoc2VsZiwgZWFybHlf
Y29uZmlnKToKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLl9zZXRfaW5pdGlhbF9jb25mdGVz
dHMoZWFybHlfY29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlKQotCi0gICAgZGVmIF9pbml0aW5p
KHNlbGYsIGFyZ3MpOgotICAgICAgICBucywgdW5rbm93bl9hcmdzID0gc2VsZi5fcGFyc2VyLnBh
cnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlPXNlbGYub3B0aW9uLmNv
cHkoKSkKLSAgICAgICAgciA9IGRldGVybWluZV9zZXR1cChucy5pbmlmaWxlbmFtZSwgbnMuZmls
ZV9vcl9kaXIgKyB1bmtub3duX2FyZ3MsIHdhcm5mdW5jPXNlbGYud2FybikKLSAgICAgICAgc2Vs
Zi5yb290ZGlyLCBzZWxmLmluaWZpbGUsIHNlbGYuaW5pY2ZnID0gcgotICAgICAgICBzZWxmLl9w
YXJzZXIuZXh0cmFfaW5mb1sncm9vdGRpciddID0gc2VsZi5yb290ZGlyCi0gICAgICAgIHNlbGYu
X3BhcnNlci5leHRyYV9pbmZvWydpbmlmaWxlJ10gPSBzZWxmLmluaWZpbGUKLSAgICAgICAgc2Vs
Zi5pbnZvY2F0aW9uX2RpciA9IHB5LnBhdGgubG9jYWwoKQotICAgICAgICBzZWxmLl9wYXJzZXIu
YWRkaW5pKCdhZGRvcHRzJywgJ2V4dHJhIGNvbW1hbmQgbGluZSBvcHRpb25zJywgJ2FyZ3MnKQot
ICAgICAgICBzZWxmLl9wYXJzZXIuYWRkaW5pKCdtaW52ZXJzaW9uJywgJ21pbmltYWxseSByZXF1
aXJlZCBweXRlc3QgdmVyc2lvbicpCi0gICAgICAgIHNlbGYuX292ZXJyaWRlX2luaSA9IG5zLm92
ZXJyaWRlX2luaSBvciAoKQotCi0gICAgZGVmIF9jb25zaWRlcl9pbXBvcnRob29rKHNlbGYsIGFy
Z3MpOgotICAgICAgICAiIiJJbnN0YWxsIHRoZSBQRVAgMzAyIGltcG9ydCBob29rIGlmIHVzaW5n
IGFzc2VydGlvbiByZXdyaXRpbmcuCi0KLSAgICAgICAgTmVlZHMgdG8gcGFyc2UgdGhlIC0tYXNz
ZXJ0PTxtb2RlPiBvcHRpb24gZnJvbSB0aGUgY29tbWFuZGxpbmUKLSAgICAgICAgYW5kIGZpbmQg
YWxsIHRoZSBpbnN0YWxsZWQgcGx1Z2lucyB0byBtYXJrIHRoZW0gZm9yIHJld3JpdGluZwotICAg
ICAgICBieSB0aGUgaW1wb3J0aG9vay4KLSAgICAgICAgIiIiCi0gICAgICAgIG5zLCB1bmtub3du
X2FyZ3MgPSBzZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYW5kX3Vua25vd25fYXJncyhhcmdzKQot
ICAgICAgICBtb2RlID0gbnMuYXNzZXJ0bW9kZQotICAgICAgICBpZiBtb2RlID09ICdyZXdyaXRl
JzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBob29rID0gX3B5dGVzdC5hc3Nl
cnRpb24uaW5zdGFsbF9pbXBvcnRob29rKHNlbGYpCi0gICAgICAgICAgICBleGNlcHQgU3lzdGVt
RXJyb3I6Ci0gICAgICAgICAgICAgICAgbW9kZSA9ICdwbGFpbicKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbWFya19wbHVnaW5zX2Zvcl9yZXdyaXRlKGhvb2spCi0g
ICAgICAgIHNlbGYuX3dhcm5fYWJvdXRfbWlzc2luZ19hc3NlcnRpb24obW9kZSkKLQotICAgIGRl
ZiBfbWFya19wbHVnaW5zX2Zvcl9yZXdyaXRlKHNlbGYsIGhvb2spOgotICAgICAgICAiIiIKLSAg
ICAgICAgR2l2ZW4gYW4gaW1wb3J0aG9vaywgbWFyayBmb3IgcmV3cml0ZSBhbnkgdG9wLWxldmVs
Ci0gICAgICAgIG1vZHVsZXMgb3IgcGFja2FnZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdl
IGZvcgotICAgICAgICBhbGwgcHl0ZXN0IHBsdWdpbnMuCi0gICAgICAgICIiIgotICAgICAgICBp
bXBvcnQgcGtnX3Jlc291cmNlcwotICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIucmV3cml0ZV9o
b29rID0gaG9vawotCi0gICAgICAgICMgJ1JFQ09SRCcgYXZhaWxhYmxlIGZvciBwbHVnaW5zIGlu
c3RhbGxlZCBub3JtYWxseSAocGlwIGluc3RhbGwpCi0gICAgICAgICMgJ1NPVVJDRVMudHh0JyBh
dmFpbGFibGUgZm9yIHBsdWdpbnMgaW5zdGFsbGVkIGluIGRldiBtb2RlIChwaXAgaW5zdGFsbCAt
ZSkKLSAgICAgICAgIyBmb3IgaW5zdGFsbGVkIHBsdWdpbnMgJ1NPVVJDRVMudHh0JyByZXR1cm5z
IGFuIGVtcHR5IGxpc3QsIGFuZCB2aWNlLXZlcnNhCi0gICAgICAgICMgc28gaXQgc2hvdWxkbid0
IGJlIGFuIGlzc3VlCi0gICAgICAgIG1ldGFkYXRhX2ZpbGVzID0gJ1JFQ09SRCcsICdTT1VSQ0VT
LnR4dCcKLQotICAgICAgICBwYWNrYWdlX2ZpbGVzID0gKAotICAgICAgICAgICAgZW50cnkuc3Bs
aXQoJywnKVswXQotICAgICAgICAgICAgZm9yIGVudHJ5cG9pbnQgaW4gcGtnX3Jlc291cmNlcy5p
dGVyX2VudHJ5X3BvaW50cygncHl0ZXN0MTEnKQotICAgICAgICAgICAgZm9yIG1ldGFkYXRhIGlu
IG1ldGFkYXRhX2ZpbGVzCi0gICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cnlwb2ludC5kaXN0
Ll9nZXRfbWV0YWRhdGEobWV0YWRhdGEpCi0gICAgICAgICkKLQotICAgICAgICBmb3IgbmFtZSBp
biBfaXRlcl9yZXdyaXRhYmxlX21vZHVsZXMocGFja2FnZV9maWxlcyk6Ci0gICAgICAgICAgICBo
b29rLm1hcmtfcmV3cml0ZShuYW1lKQotCi0gICAgZGVmIF93YXJuX2Fib3V0X21pc3NpbmdfYXNz
ZXJ0aW9uKHNlbGYsIG1vZGUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhc3NlcnQgRmFs
c2UKLSAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcGFzcwotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbW9kZSA9PSAncGxhaW4nOgotICAgICAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoIldBUk5JTkc6IEFTU0VSVElPTlMgQVJFIE5PVCBFWEVDVVRF
RCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYW5kIEZBSUxJTkcgVEVTVFMg
V0lMTCBQQVNTLiAgQXJlIHlvdSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
dXNpbmcgcHl0aG9uIC1PPyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoIldBUk5JTkc6IGFzc2VydGlvbnMgbm90IGluIHRlc3QgbW9kdWxlcyBv
ciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGx1Z2lucyB3aWxsIGJlIGln
bm9yZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlY2F1c2UgYXNzZXJ0
IHN0YXRlbWVudHMgYXJlIG5vdCBleGVjdXRlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYnkgdGhlIHVuZGVybHlpbmcgUHl0aG9uIGludGVycHJldGVyICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIoYXJlIHlvdSB1c2luZyBweXRob24gLU8/KVxuIikK
LQotICAgIGRlZiBfcHJlcGFyc2Uoc2VsZiwgYXJncywgYWRkb3B0cz1UcnVlKToKLSAgICAgICAg
aWYgYWRkb3B0czoKLSAgICAgICAgICAgIGFyZ3NbOl0gPSBzaGxleC5zcGxpdChvcy5lbnZpcm9u
LmdldCgnUFlURVNUX0FERE9QVFMnLCAnJykpICsgYXJncwotICAgICAgICBzZWxmLl9pbml0aW5p
KGFyZ3MpCi0gICAgICAgIGlmIGFkZG9wdHM6Ci0gICAgICAgICAgICBhcmdzWzpdID0gc2VsZi5n
ZXRpbmkoImFkZG9wdHMiKSArIGFyZ3MKLSAgICAgICAgc2VsZi5fY2hlY2t2ZXJzaW9uKCkKLSAg
ICAgICAgc2VsZi5fY29uc2lkZXJfaW1wb3J0aG9vayhhcmdzKQotICAgICAgICBzZWxmLnBsdWdp
bm1hbmFnZXIuY29uc2lkZXJfcHJlcGFyc2UoYXJncykKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5h
Z2VyLmxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cygncHl0ZXN0MTEnKQotICAgICAgICBzZWxm
LnBsdWdpbm1hbmFnZXIuY29uc2lkZXJfZW52KCkKLSAgICAgICAgc2VsZi5rbm93bl9hcmdzX25h
bWVzcGFjZSA9IG5zID0gc2VsZi5fcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNw
YWNlPXNlbGYub3B0aW9uLmNvcHkoKSkKLSAgICAgICAgaWYgc2VsZi5rbm93bl9hcmdzX25hbWVz
cGFjZS5jb25mY3V0ZGlyIGlzIE5vbmUgYW5kIHNlbGYuaW5pZmlsZToKLSAgICAgICAgICAgIGNv
bmZjdXRkaXIgPSBweS5wYXRoLmxvY2FsKHNlbGYuaW5pZmlsZSkuZGlybmFtZQotICAgICAgICAg
ICAgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5jb25mY3V0ZGlyID0gY29uZmN1dGRpcgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25m
dGVzdHMoZWFybHlfY29uZmlnPXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLCBwYXJzZXI9c2VsZi5fcGFyc2VyKQotICAg
ICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlOgotICAgICAgICAgICAgZSA9IHN5cy5l
eGNfaW5mbygpWzFdCi0gICAgICAgICAgICBpZiBucy5oZWxwIG9yIG5zLnZlcnNpb246Ci0gICAg
ICAgICAgICAgICAgIyB3ZSBkb24ndCB3YW50IHRvIHByZXZlbnQgLS1oZWxwLy0tdmVyc2lvbiB0
byB3b3JrCi0gICAgICAgICAgICAgICAgIyBzbyBqdXN0IGxldCBpcyBwYXNzIGFuZCBwcmludCBh
IHdhcm5pbmcgYXQgdGhlIGVuZAotICAgICAgICAgICAgICAgIHNlbGYuX3dhcm4oImNvdWxkIG5v
dCBsb2FkIGluaXRpYWwgY29uZnRlc3RzICglcylcbiIgJSBlLnBhdGgpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgX2NoZWNrdmVyc2lvbihzZWxm
KToKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBtaW52ZXIgPSBzZWxmLmluaWNmZy5n
ZXQoJ21pbnZlcnNpb24nLCBOb25lKQotICAgICAgICBpZiBtaW52ZXI6Ci0gICAgICAgICAgICB2
ZXIgPSBtaW52ZXIuc3BsaXQoIi4iKQotICAgICAgICAgICAgbXl2ZXIgPSBweXRlc3QuX192ZXJz
aW9uX18uc3BsaXQoIi4iKQotICAgICAgICAgICAgaWYgbXl2ZXIgPCB2ZXI6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgcHl0ZXN0LlVzYWdlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICIlczol
ZDogcmVxdWlyZXMgcHl0ZXN0LSVzLCBhY3R1YWwgcHl0ZXN0LSVzJyIgJSAoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluaWNmZy5jb25maWcucGF0aCwgc2VsZi5pbmljZmcubGluZW9m
KCdtaW52ZXJzaW9uJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBtaW52ZXIsIHB5dGVzdC5f
X3ZlcnNpb25fXykpCi0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgYXJncywgYWRkb3B0cz1UcnVlKToK
LSAgICAgICAgIyBwYXJzZSBnaXZlbiBjbWRsaW5lIGFyZ3VtZW50cyBpbnRvIHRoaXMgY29uZmln
IG9iamVjdC4KLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHNlbGYsICdhcmdzJyksICgKLSAg
ICAgICAgICAgICJjYW4gb25seSBwYXJzZSBjbWRsaW5lIGFyZ3MgYXQgbW9zdCBvbmNlIHBlciBD
b25maWcgb2JqZWN0IikKLSAgICAgICAgc2VsZi5fb3JpZ2FyZ3MgPSBhcmdzCi0gICAgICAgIHNl
bGYuaG9vay5weXRlc3RfYWRkaG9va3MuY2FsbF9oaXN0b3JpYygKLSAgICAgICAgICAgIGt3YXJn
cz1kaWN0KHBsdWdpbm1hbmFnZXI9c2VsZi5wbHVnaW5tYW5hZ2VyKSkKLSAgICAgICAgc2VsZi5f
cHJlcGFyc2UoYXJncywgYWRkb3B0cz1hZGRvcHRzKQotICAgICAgICAjIFhYWCBkZXByZWNhdGVk
IGhvb2s6Ci0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfY21kbGluZV9wcmVwYXJzZShjb25maWc9
c2VsZiwgYXJncz1hcmdzKQotICAgICAgICBzZWxmLl9wYXJzZXIuYWZ0ZXJfcHJlcGFyc2UgPSBU
cnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFyZ3MgPSBzZWxmLl9wYXJzZXIucGFyc2Vf
c2V0b3B0aW9uKGFyZ3MsIHNlbGYub3B0aW9uLCBuYW1lc3BhY2U9c2VsZi5vcHRpb24pCi0gICAg
ICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQot
ICAgICAgICAgICAgICAgIGlmIGN3ZCA9PSBzZWxmLnJvb3RkaXI6Ci0gICAgICAgICAgICAgICAg
ICAgIGFyZ3MgPSBzZWxmLmdldGluaSgndGVzdHBhdGhzJykKLSAgICAgICAgICAgICAgICBpZiBu
b3QgYXJnczoKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IFtjd2RdCi0gICAgICAgICAgICBz
ZWxmLmFyZ3MgPSBhcmdzCi0gICAgICAgIGV4Y2VwdCBQcmludEhlbHA6Ci0gICAgICAgICAgICBw
YXNzCi0KLSAgICBkZWYgYWRkaW5pdmFsdWVfbGluZShzZWxmLCBuYW1lLCBsaW5lKToKLSAgICAg
ICAgIiIiIGFkZCBhIGxpbmUgdG8gYW4gaW5pLWZpbGUgb3B0aW9uLiBUaGUgb3B0aW9uIG11c3Qg
aGF2ZSBiZWVuCi0gICAgICAgIGRlY2xhcmVkIGJ1dCBtaWdodCBub3QgeWV0IGJlIHNldCBpbiB3
aGljaCBjYXNlIHRoZSBsaW5lIGJlY29tZXMgdGhlCi0gICAgICAgIHRoZSBmaXJzdCBsaW5lIGlu
IGl0cyB2YWx1ZS4gIiIiCi0gICAgICAgIHggPSBzZWxmLmdldGluaShuYW1lKQotICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZSh4LCBsaXN0KQotICAgICAgICB4LmFwcGVuZChsaW5lKSAgIyBtb2Rp
ZmllcyB0aGUgY2FjaGVkIGxpc3QgaW5saW5lCi0KLSAgICBkZWYgZ2V0aW5pKHNlbGYsIG5hbWUp
OgotICAgICAgICAiIiIgcmV0dXJuIGNvbmZpZ3VyYXRpb24gdmFsdWUgZnJvbSBhbiA6cmVmOmBp
bmkgZmlsZSA8aW5pZmlsZXM+YC4gSWYgdGhlCi0gICAgICAgIHNwZWNpZmllZCBuYW1lIGhhc24n
dCBiZWVuIHJlZ2lzdGVyZWQgdGhyb3VnaCBhIHByaW9yCi0gICAgICAgIDpweTpmdW5jOmBwYXJz
ZXIuYWRkaW5pIDxfcHl0ZXN0LmNvbmZpZy5QYXJzZXIuYWRkaW5pPmAKLSAgICAgICAgY2FsbCAo
dXN1YWxseSBmcm9tIGEgcGx1Z2luKSwgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIiIiCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbmljYWNoZVtuYW1lXQotICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9pbmljYWNoZVtuYW1lXSA9IHZh
bCA9IHNlbGYuX2dldGluaShuYW1lKQotICAgICAgICAgICAgcmV0dXJuIHZhbAotCi0gICAgZGVm
IF9nZXRpbmkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlc2NyaXB0
aW9uLCB0eXBlLCBkZWZhdWx0ID0gc2VsZi5fcGFyc2VyLl9pbmlkaWN0W25hbWVdCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24g
Y29uZmlndXJhdGlvbiB2YWx1ZTogJXIiICUgKG5hbWUsKSkKLSAgICAgICAgdmFsdWUgPSBzZWxm
Ll9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKG5hbWUpCi0gICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmluaWNmZ1tu
YW1lXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIGlmIGRl
ZmF1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0g
ICAgICAgICAgICAgICAgaWYgdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJycKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgaWYgdHlwZSA9PSAicGF0
aGxpc3QiOgotICAgICAgICAgICAgZHAgPSBweS5wYXRoLmxvY2FsKHNlbGYuaW5pY2ZnLmNvbmZp
Zy5wYXRoKS5kaXJwYXRoKCkKLSAgICAgICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgICAgICBm
b3IgcmVscGF0aCBpbiBzaGxleC5zcGxpdCh2YWx1ZSk6Ci0gICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZChkcC5qb2luKHJlbHBhdGgsIGFicz1UcnVlKSkKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZXMKLSAgICAgICAgZWxpZiB0eXBlID09ICJhcmdzIjoKLSAgICAgICAgICAgIHJldHVybiBz
aGxleC5zcGxpdCh2YWx1ZSkKLSAgICAgICAgZWxpZiB0eXBlID09ICJsaW5lbGlzdCI6Ci0gICAg
ICAgICAgICByZXR1cm4gW3QgZm9yIHQgaW4gbWFwKGxhbWJkYSB4OiB4LnN0cmlwKCksIHZhbHVl
LnNwbGl0KCJcbiIpKSBpZiB0XQotICAgICAgICBlbGlmIHR5cGUgPT0gImJvb2wiOgotICAgICAg
ICAgICAgcmV0dXJuIGJvb2woX3N0cnRvYm9vbCh2YWx1ZS5zdHJpcCgpKSkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGFzc2VydCB0eXBlIGlzIE5vbmUKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZQotCi0gICAgZGVmIF9nZXRjb25mdGVzdF9wYXRobGlzdChzZWxmLCBuYW1lLCBwYXRoKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kLCByZWxyb290cyA9IHNlbGYucGx1Z2lubWFu
YWdlci5fcmdldF93aXRoX2NvbmZtb2QobmFtZSwgcGF0aCkKLSAgICAgICAgZXhjZXB0IEtleUVy
cm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgbW9kcGF0aCA9IHB5LnBhdGgu
bG9jYWwobW9kLl9fZmlsZV9fKS5kaXJwYXRoKCkKLSAgICAgICAgdmFsdWVzID0gW10KLSAgICAg
ICAgZm9yIHJlbHJvb3QgaW4gcmVscm9vdHM6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShyZWxyb290LCBweS5wYXRoLmxvY2FsKToKLSAgICAgICAgICAgICAgICByZWxyb290ID0gcmVs
cm9vdC5yZXBsYWNlKCIvIiwgcHkucGF0aC5sb2NhbC5zZXApCi0gICAgICAgICAgICAgICAgcmVs
cm9vdCA9IG1vZHBhdGguam9pbihyZWxyb290LCBhYnM9VHJ1ZSkKLSAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQocmVscm9vdCkKLSAgICAgICAgcmV0dXJuIHZhbHVlcwotCi0gICAgZGVmIF9nZXRf
b3ZlcnJpZGVfaW5pX3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAgICB2YWx1ZSA9IE5vbmUKLSAg
ICAgICAgIyBvdmVycmlkZV9pbmkgaXMgYSBsaXN0IG9mIGxpc3QsIHRvIHN1cHBvcnQgYm90aCAt
byBmb28xPWJhcjEgZm9vMj1iYXIyIGFuZAotICAgICAgICAjIGFuZCAtbyBmb28xPWJhcjEgLW8g
Zm9vMj1iYXIyIG9wdGlvbnMKLSAgICAgICAgIyBhbHdheXMgdXNlIHRoZSBsYXN0IGl0ZW0gaWYg
bXVsdGlwbGUgdmFsdWUgc2V0IGZvciBzYW1lIGluaS1uYW1lLAotICAgICAgICAjIGUuZy4gLW8g
Zm9vPWJhcjEgLW8gZm9vPWJhcjIgd2lsbCBzZXQgZm9vIHRvIGJhcjIKLSAgICAgICAgZm9yIGlu
aV9jb25maWdfbGlzdCBpbiBzZWxmLl9vdmVycmlkZV9pbmk6Ci0gICAgICAgICAgICBmb3IgaW5p
X2NvbmZpZyBpbiBpbmlfY29uZmlnX2xpc3Q6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgICAgICAoa2V5LCB1c2VyX2luaV92YWx1ZSkgPSBpbmlfY29uZmlnLnNwbGl0KCI9
IiwgMSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgVXNhZ2VFcnJvcigiLW8vLS1vdmVycmlkZS1pbmkgZXhwZWN0cyBvcHRpb249
dmFsdWUgc3R5bGUuIikKLSAgICAgICAgICAgICAgICBpZiBrZXkgPT0gbmFtZToKLSAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSB1c2VyX2luaV92YWx1ZQotICAgICAgICByZXR1cm4gdmFsdWUK
LQotICAgIGRlZiBnZXRvcHRpb24oc2VsZiwgbmFtZSwgZGVmYXVsdD1ub3RzZXQsIHNraXA9RmFs
c2UpOgotICAgICAgICAiIiIgcmV0dXJuIGNvbW1hbmQgbGluZSBvcHRpb24gdmFsdWUuCi0KLSAg
ICAgICAgOmFyZyBuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24uICBZb3UgbWF5IGFsc28gc3BlY2lm
eQotICAgICAgICAgICAgdGhlIGxpdGVyYWwgYGAtLU9QVGBgIG9wdGlvbiBpbnN0ZWFkIG9mIHRo
ZSAiZGVzdCIgb3B0aW9uIG5hbWUuCi0gICAgICAgIDphcmcgZGVmYXVsdDogZGVmYXVsdCB2YWx1
ZSBpZiBubyBvcHRpb24gb2YgdGhhdCBuYW1lIGV4aXN0cy4KLSAgICAgICAgOmFyZyBza2lwOiBp
ZiBUcnVlIHJhaXNlIHB5dGVzdC5za2lwIGlmIG9wdGlvbiBkb2VzIG5vdCBleGlzdHMKLSAgICAg
ICAgICAgIG9yIGhhcyBhIE5vbmUgdmFsdWUuCi0gICAgICAgICIiIgotICAgICAgICBuYW1lID0g
c2VsZi5fb3B0MmRlc3QuZ2V0KG5hbWUsIG5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHZhbCA9IGdldGF0dHIoc2VsZi5vcHRpb24sIG5hbWUpCi0gICAgICAgICAgICBpZiB2YWwgaXMg
Tm9uZSBhbmQgc2tpcDoKLSAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1l
KQotICAgICAgICAgICAgcmV0dXJuIHZhbAotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
Ci0gICAgICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBub3RzZXQ6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGRlZmF1bHQKLSAgICAgICAgICAgIGlmIHNraXA6Ci0gICAgICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAotICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJubyAlciBvcHRpb24gZm91
bmQiICUgKG5hbWUsKSkKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIG9wdGlvbiBu
YW1lZCAlciIgJSAobmFtZSwpKQotCi0gICAgZGVmIGdldHZhbHVlKHNlbGYsIG5hbWUsIHBhdGg9
Tm9uZSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCwgdXNlIGdldG9wdGlvbigpKSAiIiIKLSAg
ICAgICAgcmV0dXJuIHNlbGYuZ2V0b3B0aW9uKG5hbWUpCi0KLSAgICBkZWYgZ2V0dmFsdWVvcnNr
aXAoc2VsZiwgbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiIChkZXByZWNhdGVkLCB1c2Ug
Z2V0b3B0aW9uKHNraXA9VHJ1ZSkpICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXRvcHRpb24o
bmFtZSwgc2tpcD1UcnVlKQotCi0KLWRlZiBleGlzdHMocGF0aCwgaWdub3JlPUVudmlyb25tZW50
RXJyb3IpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHBhdGguY2hlY2soKQotICAgIGV4Y2Vw
dCBpZ25vcmU6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBnZXRjZmcoYXJncywgd2Fy
bmZ1bmM9Tm9uZSk6Ci0gICAgIiIiCi0gICAgU2VhcmNoIHRoZSBsaXN0IG9mIGFyZ3VtZW50cyBm
b3IgYSB2YWxpZCBpbmktZmlsZSBmb3IgcHl0ZXN0LAotICAgIGFuZCByZXR1cm4gYSB0dXBsZSBv
ZiAocm9vdGRpciwgaW5pZmlsZSwgY2ZnLWRpY3QpLgotCi0gICAgbm90ZTogd2FybmZ1bmMgaXMg
YW4gb3B0aW9uYWwgZnVuY3Rpb24gdXNlZCB0byB3YXJuCi0gICAgICAgIGFib3V0IGluaS1maWxl
cyB0aGF0IHVzZSBkZXByZWNhdGVkIGZlYXR1cmVzLgotICAgICAgICBUaGlzIHBhcmFtZXRlciBz
aG91bGQgYmUgcmVtb3ZlZCB3aGVuIHB5dGVzdAotICAgICAgICBhZG9wdHMgc3RhbmRhcmQgZGVw
cmVjYXRpb24gd2FybmluZ3MgKCMxODA0KS4KLSAgICAiIiIKLSAgICBmcm9tIF9weXRlc3QuZGVw
cmVjYXRlZCBpbXBvcnQgU0VUVVBfQ0ZHX1BZVEVTVAotICAgIGluaWJhc2VuYW1lcyA9IFsicHl0
ZXN0LmluaSIsICJ0b3guaW5pIiwgInNldHVwLmNmZyJdCi0gICAgYXJncyA9IFt4IGZvciB4IGlu
IGFyZ3MgaWYgbm90IHN0cih4KS5zdGFydHN3aXRoKCItIildCi0gICAgaWYgbm90IGFyZ3M6Ci0g
ICAgICAgIGFyZ3MgPSBbcHkucGF0aC5sb2NhbCgpXQotICAgIGZvciBhcmcgaW4gYXJnczoKLSAg
ICAgICAgYXJnID0gcHkucGF0aC5sb2NhbChhcmcpCi0gICAgICAgIGZvciBiYXNlIGluIGFyZy5w
YXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgZm9yIGluaWJhc2VuYW1lIGluIGluaWJh
c2VuYW1lczoKLSAgICAgICAgICAgICAgICBwID0gYmFzZS5qb2luKGluaWJhc2VuYW1lKQotICAg
ICAgICAgICAgICAgIGlmIGV4aXN0cyhwKToKLSAgICAgICAgICAgICAgICAgICAgaW5pY29uZmln
ID0gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhwKQotICAgICAgICAgICAgICAgICAgICBpZiAncHl0
ZXN0JyBpbiBpbmljb25maWcuc2VjdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBp
bmliYXNlbmFtZSA9PSAnc2V0dXAuY2ZnJyBhbmQgd2FybmZ1bmM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2FybmZ1bmMoJ0MxJywgU0VUVVBfQ0ZHX1BZVEVTVCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBiYXNlLCBwLCBpbmljb25maWdbJ3B5dGVzdCddCi0gICAgICAg
ICAgICAgICAgICAgIGlmIGluaWJhc2VuYW1lID09ICdzZXR1cC5jZmcnIGFuZCAndG9vbDpweXRl
c3QnIGluIGluaWNvbmZpZy5zZWN0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBiYXNlLCBwLCBpbmljb25maWdbJ3Rvb2w6cHl0ZXN0J10KLSAgICAgICAgICAgICAgICAgICAg
ZWxpZiBpbmliYXNlbmFtZSA9PSAicHl0ZXN0LmluaSI6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAjIGFsbG93ZWQgdG8gYmUgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBi
YXNlLCBwLCB7fQotICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCi0KLQotZGVmIGdldF9jb21t
b25fYW5jZXN0b3IocGF0aHMpOgotICAgIGNvbW1vbl9hbmNlc3RvciA9IE5vbmUKLSAgICBmb3Ig
cGF0aCBpbiBwYXRoczoKLSAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKCk6Ci0gICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICBpZiBjb21tb25fYW5jZXN0b3IgaXMgTm9uZToKLSAgICAgICAg
ICAgIGNvbW1vbl9hbmNlc3RvciA9IHBhdGgKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlm
IHBhdGgucmVsdG8oY29tbW9uX2FuY2VzdG9yKSBvciBwYXRoID09IGNvbW1vbl9hbmNlc3RvcjoK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBjb21tb25fYW5jZXN0
b3IucmVsdG8ocGF0aCk6Ci0gICAgICAgICAgICAgICAgY29tbW9uX2FuY2VzdG9yID0gcGF0aAot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzaGFyZWQgPSBwYXRoLmNvbW1vbihj
b21tb25fYW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgaWYgc2hhcmVkIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBzaGFyZWQKLSAgICBpZiBjb21t
b25fYW5jZXN0b3IgaXMgTm9uZToKLSAgICAgICAgY29tbW9uX2FuY2VzdG9yID0gcHkucGF0aC5s
b2NhbCgpCi0gICAgZWxpZiBjb21tb25fYW5jZXN0b3IuaXNmaWxlKCk6Ci0gICAgICAgIGNvbW1v
bl9hbmNlc3RvciA9IGNvbW1vbl9hbmNlc3Rvci5kaXJwYXRoKCkKLSAgICByZXR1cm4gY29tbW9u
X2FuY2VzdG9yCi0KLQotZGVmIGdldF9kaXJzX2Zyb21fYXJncyhhcmdzKToKLSAgICBkZWYgaXNf
b3B0aW9uKHgpOgotICAgICAgICByZXR1cm4gc3RyKHgpLnN0YXJ0c3dpdGgoJy0nKQotCi0gICAg
ZGVmIGdldF9maWxlX3BhcnRfZnJvbV9ub2RlX2lkKHgpOgotICAgICAgICByZXR1cm4gc3RyKHgp
LnNwbGl0KCc6OicpWzBdCi0KLSAgICBkZWYgZ2V0X2Rpcl9mcm9tX3BhdGgocGF0aCk6Ci0gICAg
ICAgIGlmIHBhdGguaXNkaXIoKToKLSAgICAgICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgIHJl
dHVybiBweS5wYXRoLmxvY2FsKHBhdGguZGlybmFtZSkKLQotICAgICMgVGhlc2UgbG9vayBsaWtl
IHBhdGhzIGJ1dCBtYXkgbm90IGV4aXN0Ci0gICAgcG9zc2libGVfcGF0aHMgPSAoCi0gICAgICAg
IHB5LnBhdGgubG9jYWwoZ2V0X2ZpbGVfcGFydF9mcm9tX25vZGVfaWQoYXJnKSkKLSAgICAgICAg
Zm9yIGFyZyBpbiBhcmdzCi0gICAgICAgIGlmIG5vdCBpc19vcHRpb24oYXJnKQotICAgICkKLQot
ICAgIHJldHVybiBbCi0gICAgICAgIGdldF9kaXJfZnJvbV9wYXRoKHBhdGgpCi0gICAgICAgIGZv
ciBwYXRoIGluIHBvc3NpYmxlX3BhdGhzCi0gICAgICAgIGlmIHBhdGguZXhpc3RzKCkKLSAgICBd
Ci0KLQotZGVmIGRldGVybWluZV9zZXR1cChpbmlmaWxlLCBhcmdzLCB3YXJuZnVuYz1Ob25lKToK
LSAgICBkaXJzID0gZ2V0X2RpcnNfZnJvbV9hcmdzKGFyZ3MpCi0gICAgaWYgaW5pZmlsZToKLSAg
ICAgICAgaW5pY29uZmlnID0gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhpbmlmaWxlKQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBpbmljZmcgPSBpbmljb25maWdbInB5dGVzdCJdCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGluaWNmZyA9IE5vbmUKLSAgICAgICAgcm9v
dGRpciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICBlbHNlOgotICAgICAgICBhbmNl
c3RvciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICAgICAgcm9vdGRpciwgaW5pZmls
ZSwgaW5pY2ZnID0gZ2V0Y2ZnKFthbmNlc3Rvcl0sIHdhcm5mdW5jPXdhcm5mdW5jKQotICAgICAg
ICBpZiByb290ZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBmb3Igcm9vdGRpciBpbiBhbmNlc3Rv
ci5wYXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgICAgIGlmIHJvb3RkaXIuam9pbigi
c2V0dXAucHkiKS5leGlzdHMoKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZ2V0
Y2ZnKGRpcnMsIHdhcm5mdW5jPXdhcm5mdW5jKQotICAgICAgICAgICAgICAgIGlmIHJvb3RkaXIg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcm9vdGRpciA9IGdldF9jb21tb25fYW5jZXN0
b3IoW3B5LnBhdGgubG9jYWwoKSwgYW5jZXN0b3JdKQotICAgICAgICAgICAgICAgICAgICBpc19m
c19yb290ID0gb3MucGF0aC5zcGxpdGRyaXZlKHN0cihyb290ZGlyKSlbMV0gPT0gJy8nCi0gICAg
ICAgICAgICAgICAgICAgIGlmIGlzX2ZzX3Jvb3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
b290ZGlyID0gYW5jZXN0b3IKLSAgICByZXR1cm4gcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnIG9y
IHt9Ci0KLQotZGVmIHNldG5zKG9iaiwgZGljKToKLSAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgZm9y
IG5hbWUsIHZhbHVlIGluIGRpYy5pdGVtcygpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVl
LCBkaWN0KToKLSAgICAgICAgICAgIG1vZCA9IGdldGF0dHIob2JqLCBuYW1lLCBOb25lKQotICAg
ICAgICAgICAgaWYgbW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9ICJweXRl
c3QuJXMiICUgbmFtZQotICAgICAgICAgICAgICAgIG1vZCA9IHR5cGVzLk1vZHVsZVR5cGUobW9k
bmFtZSkKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttb2RuYW1lXSA9IG1vZAotICAgICAg
ICAgICAgICAgIG1vZC5fX2FsbF9fID0gW10KLSAgICAgICAgICAgICAgICBzZXRhdHRyKG9iaiwg
bmFtZSwgbW9kKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBwZW5kKG5hbWUpCi0gICAgICAg
ICAgICBzZXRucyhtb2QsIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2V0YXR0
cihvYmosIG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBwZW5kKG5hbWUp
Ci0gICAgICAgICAgICAjIGlmIG9iaiAhPSBweXRlc3Q6Ci0gICAgICAgICAgICAjICAgIHB5dGVz
dC5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2V0YXR0cihweXRlc3QsIG5hbWUs
IHZhbHVlKQotCi0KLWRlZiBjcmVhdGVfdGVybWluYWxfd3JpdGVyKGNvbmZpZywgKmFyZ3MsICoq
a3dhcmdzKToKLSAgICAiIiJDcmVhdGUgYSBUZXJtaW5hbFdyaXRlciBpbnN0YW5jZSBjb25maWd1
cmVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9ucwotICAgIGluIHRoZSBjb25maWcgb2JqZWN0LiBF
dmVyeSBjb2RlIHdoaWNoIHJlcXVpcmVzIGEgVGVybWluYWxXcml0ZXIgb2JqZWN0Ci0gICAgYW5k
IGhhcyBhY2Nlc3MgdG8gYSBjb25maWcgb2JqZWN0IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbi4K
LSAgICAiIiIKLSAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKCphcmdzLCAqKmt3YXJncykK
LSAgICBpZiBjb25maWcub3B0aW9uLmNvbG9yID09ICd5ZXMnOgotICAgICAgICB0dy5oYXNtYXJr
dXAgPSBUcnVlCi0gICAgaWYgY29uZmlnLm9wdGlvbi5jb2xvciA9PSAnbm8nOgotICAgICAgICB0
dy5oYXNtYXJrdXAgPSBGYWxzZQotICAgIHJldHVybiB0dwotCi0KLWRlZiBfc3RydG9ib29sKHZh
bCk6Ci0gICAgIiIiQ29udmVydCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0cnV0aCB0byB0
cnVlICgxKSBvciBmYWxzZSAoMCkuCi0KLSAgICBUcnVlIHZhbHVlcyBhcmUgJ3knLCAneWVzJywg
J3QnLCAndHJ1ZScsICdvbicsIGFuZCAnMSc7IGZhbHNlIHZhbHVlcwotICAgIGFyZSAnbicsICdu
bycsICdmJywgJ2ZhbHNlJywgJ29mZicsIGFuZCAnMCcuICBSYWlzZXMgVmFsdWVFcnJvciBpZgot
ICAgICd2YWwnIGlzIGFueXRoaW5nIGVsc2UuCi0KLSAgICAuLiBub3RlOjogY29waWVkIGZyb20g
ZGlzdHV0aWxzLnV0aWwKLSAgICAiIiIKLSAgICB2YWwgPSB2YWwubG93ZXIoKQotICAgIGlmIHZh
bCBpbiAoJ3knLCAneWVzJywgJ3QnLCAndHJ1ZScsICdvbicsICcxJyk6Ci0gICAgICAgIHJldHVy
biAxCi0gICAgZWxpZiB2YWwgaW4gKCduJywgJ25vJywgJ2YnLCAnZmFsc2UnLCAnb2ZmJywgJzAn
KToKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJpbnZhbGlkIHRydXRoIHZhbHVlICVyIiAlICh2YWwsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZWJ1Z2dpbmcu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZGNhNzgwOTU2ZS4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTIzICswLDAgQEAKLSIiIiBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcgd2l0aCBQREIsIHRo
ZSBQeXRob24gRGVidWdnZXIuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHBkYgotaW1wb3J0IHN5cwot
Ci0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0
Z3JvdXAoImdlbmVyYWwiKQotICAgIGdyb3VwLl9hZGRvcHRpb24oCi0gICAgICAgICctLXBkYics
IGRlc3Q9InVzZXBkYiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgIGhlbHA9InN0YXJ0
IHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gZGVidWdnZXIgb24gZXJyb3JzLiIpCi0gICAgZ3JvdXAu
X2FkZG9wdGlvbigKLSAgICAgICAgJy0tcGRiY2xzJywgZGVzdD0idXNlcGRiX2NscyIsIG1ldGF2
YXI9Im1vZHVsZW5hbWU6Y2xhc3NuYW1lIiwKLSAgICAgICAgaGVscD0ic3RhcnQgYSBjdXN0b20g
aW50ZXJhY3RpdmUgUHl0aG9uIGRlYnVnZ2VyIG9uIGVycm9ycy4gIgotICAgICAgICAgICAgICJG
b3IgZXhhbXBsZTogLS1wZGJjbHM9SVB5dGhvbi50ZXJtaW5hbC5kZWJ1Z2dlcjpUZXJtaW5hbFBk
YiIpCi0KLQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBpZiBjb25maWcuZ2V0
dmFsdWUoInVzZXBkYl9jbHMiKToKLSAgICAgICAgbW9kbmFtZSwgY2xhc3NuYW1lID0gY29uZmln
LmdldHZhbHVlKCJ1c2VwZGJfY2xzIikuc3BsaXQoIjoiKQotICAgICAgICBfX2ltcG9ydF9fKG1v
ZG5hbWUpCi0gICAgICAgIHBkYl9jbHMgPSBnZXRhdHRyKHN5cy5tb2R1bGVzW21vZG5hbWVdLCBj
bGFzc25hbWUpCi0gICAgZWxzZToKLSAgICAgICAgcGRiX2NscyA9IHBkYi5QZGIKLQotICAgIGlm
IGNvbmZpZy5nZXR2YWx1ZSgidXNlcGRiIik6Ci0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2Vy
LnJlZ2lzdGVyKFBkYkludm9rZSgpLCAncGRiaW52b2tlJykKLQotICAgIG9sZCA9IChwZGIuc2V0
X3RyYWNlLCBweXRlc3RQREIuX3BsdWdpbm1hbmFnZXIpCi0KLSAgICBkZWYgZmluKCk6Ci0gICAg
ICAgIHBkYi5zZXRfdHJhY2UsIHB5dGVzdFBEQi5fcGx1Z2lubWFuYWdlciA9IG9sZAotICAgICAg
ICBweXRlc3RQREIuX2NvbmZpZyA9IE5vbmUKLSAgICAgICAgcHl0ZXN0UERCLl9wZGJfY2xzID0g
cGRiLlBkYgotCi0gICAgcGRiLnNldF90cmFjZSA9IHB5dGVzdFBEQi5zZXRfdHJhY2UKLSAgICBw
eXRlc3RQREIuX3BsdWdpbm1hbmFnZXIgPSBjb25maWcucGx1Z2lubWFuYWdlcgotICAgIHB5dGVz
dFBEQi5fY29uZmlnID0gY29uZmlnCi0gICAgcHl0ZXN0UERCLl9wZGJfY2xzID0gcGRiX2Nscwot
ICAgIGNvbmZpZy5fY2xlYW51cC5hcHBlbmQoZmluKQotCi0KLWNsYXNzIHB5dGVzdFBEQjoKLSAg
ICAiIiIgUHNldWRvIFBEQiB0aGF0IGRlZmVycyB0byB0aGUgcmVhbCBwZGIuICIiIgotICAgIF9w
bHVnaW5tYW5hZ2VyID0gTm9uZQotICAgIF9jb25maWcgPSBOb25lCi0gICAgX3BkYl9jbHMgPSBw
ZGIuUGRiCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0X3RyYWNlKGNscyk6Ci0gICAg
ICAgICIiIiBpbnZva2UgUERCIHNldF90cmFjZSBkZWJ1Z2dpbmcsIGRyb3BwaW5nIGFueSBJTyBj
YXB0dXJpbmcuICIiIgotICAgICAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcKLSAgICAgICAgZnJh
bWUgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrCi0gICAgICAgIGlmIGNscy5fcGx1Z2lubWFuYWdl
ciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNhcG1hbiA9IGNscy5fcGx1Z2lubWFuYWdlci5n
ZXRwbHVnaW4oImNhcHR1cmVtYW5hZ2VyIikKLSAgICAgICAgICAgIGlmIGNhcG1hbjoKLSAgICAg
ICAgICAgICAgICBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKLSAgICAg
ICAgICAgIHR3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihjbHMuX2Nv
bmZpZykKLSAgICAgICAgICAgIHR3LmxpbmUoKQotICAgICAgICAgICAgdHcuc2VwKCI+IiwgIlBE
QiBzZXRfdHJhY2UgKElPLWNhcHR1cmluZyB0dXJuZWQgb2ZmKSIpCi0gICAgICAgICAgICBjbHMu
X3BsdWdpbm1hbmFnZXIuaG9vay5weXRlc3RfZW50ZXJfcGRiKGNvbmZpZz1jbHMuX2NvbmZpZykK
LSAgICAgICAgY2xzLl9wZGJfY2xzKCkuc2V0X3RyYWNlKGZyYW1lKQotCi0KLWNsYXNzIFBkYklu
dm9rZToKLSAgICBkZWYgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChzZWxmLCBub2RlLCBjYWxs
LCByZXBvcnQpOgotICAgICAgICBjYXBtYW4gPSBub2RlLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdl
dHBsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQotICAgICAgICBpZiBjYXBtYW46Ci0gICAgICAgICAg
ICBvdXQsIGVyciA9IGNhcG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGluXz1UcnVlKQotICAg
ICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvdXQpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0Lndy
aXRlKGVycikKLSAgICAgICAgX2VudGVyX3BkYihub2RlLCBjYWxsLmV4Y2luZm8sIHJlcG9ydCkK
LQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCBleGNyZXByLCBleGNpbmZvKToK
LSAgICAgICAgZm9yIGxpbmUgaW4gc3RyKGV4Y3JlcHIpLnNwbGl0KCJcbiIpOgotICAgICAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgiSU5URVJOQUxFUlJPUj4gJXNcbiIgJSBsaW5lKQotICAgICAg
ICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHRiID0gX3Bvc3Rtb3J0ZW1fdHJhY2Vi
YWNrKGV4Y2luZm8pCi0gICAgICAgIHBvc3RfbW9ydGVtKHRiKQotCi0KLWRlZiBfZW50ZXJfcGRi
KG5vZGUsIGV4Y2luZm8sIHJlcCk6Ci0gICAgIyBYWFggd2UgcmUtdXNlIHRoZSBUZXJtaW5hbFJl
cG9ydGVyJ3MgdGVybWluYWx3cml0ZXIKLSAgICAjIGJlY2F1c2UgdGhpcyBzZWVtcyB0byBhdm9p
ZCBzb21lIGVuY29kaW5nIHJlbGF0ZWQgdHJvdWJsZXMKLSAgICAjIGZvciBub3QgY29tcGxldGVs
eSBjbGVhciByZWFzb25zLgotICAgIHR3ID0gbm9kZS5jb25maWcucGx1Z2lubWFuYWdlci5nZXRw
bHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKS5fdHcKLSAgICB0dy5saW5lKCkKLSAgICB0dy5zZXAo
Ij4iLCAidHJhY2ViYWNrIikKLSAgICByZXAudG90ZXJtaW5hbCh0dykKLSAgICB0dy5zZXAoIj4i
LCAiZW50ZXJpbmcgUERCIikKLSAgICB0YiA9IF9wb3N0bW9ydGVtX3RyYWNlYmFjayhleGNpbmZv
KQotICAgIHBvc3RfbW9ydGVtKHRiKQotICAgIHJlcC5fcGRic2hvd24gPSBUcnVlCi0gICAgcmV0
dXJuIHJlcAotCi0KLWRlZiBfcG9zdG1vcnRlbV90cmFjZWJhY2soZXhjaW5mbyk6Ci0gICAgIyBB
IGRvY3Rlc3QuVW5leHBlY3RlZEV4Y2VwdGlvbiBpcyBub3QgdXNlZnVsIGZvciBwb3N0X21vcnRl
bS4KLSAgICAjIFVzZSB0aGUgdW5kZXJseWluZyBleGNlcHRpb24gaW5zdGVhZDoKLSAgICBmcm9t
IGRvY3Rlc3QgaW1wb3J0IFVuZXhwZWN0ZWRFeGNlcHRpb24KLSAgICBpZiBpc2luc3RhbmNlKGV4
Y2luZm8udmFsdWUsIFVuZXhwZWN0ZWRFeGNlcHRpb24pOgotICAgICAgICByZXR1cm4gZXhjaW5m
by52YWx1ZS5leGNfaW5mb1syXQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBleGNpbmZvLl9l
eGNpbmZvWzJdCi0KLQotZGVmIF9maW5kX2xhc3Rfbm9uX2hpZGRlbl9mcmFtZShzdGFjayk6Ci0g
ICAgaSA9IG1heCgwLCBsZW4oc3RhY2spIC0gMSkKLSAgICB3aGlsZSBpIGFuZCBzdGFja1tpXVsw
XS5mX2xvY2Fscy5nZXQoIl9fdHJhY2ViYWNraGlkZV9fIiwgRmFsc2UpOgotICAgICAgICBpIC09
IDEKLSAgICByZXR1cm4gaQotCi0KLWRlZiBwb3N0X21vcnRlbSh0KToKLSAgICBjbGFzcyBQZGIo
cHl0ZXN0UERCLl9wZGJfY2xzKToKLSAgICAgICAgZGVmIGdldF9zdGFjayhzZWxmLCBmLCB0KToK
LSAgICAgICAgICAgIHN0YWNrLCBpID0gcGRiLlBkYi5nZXRfc3RhY2soc2VsZiwgZiwgdCkKLSAg
ICAgICAgICAgIGlmIGYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpID0gX2ZpbmRfbGFzdF9u
b25faGlkZGVuX2ZyYW1lKHN0YWNrKQotICAgICAgICAgICAgcmV0dXJuIHN0YWNrLCBpCi0gICAg
cCA9IFBkYigpCi0gICAgcC5yZXNldCgpCi0gICAgcC5pbnRlcmFjdGlvbihOb25lLCB0KQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZXByZWNhdGVkLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9kZXByZWNhdGVkLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzBm
YmVjYTdiYzkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RlcHJlY2F0
ZWQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0iIiIKLVRoaXMgbW9kdWxlIGNv
bnRhaW5zIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFuZCBiaXRzIG9mIGNvZGUgdXNlZCBlbHNld2hl
cmUgaW4gdGhlIGNvZGViYXNlCi10aGF0IGlzIHBsYW5uZWQgdG8gYmUgcmVtb3ZlZCBpbiB0aGUg
bmV4dCBweXRlc3QgcmVsZWFzZS4KLQotS2VlcGluZyBpdCBpbiBhIGNlbnRyYWwgbG9jYXRpb24g
bWFrZXMgaXQgZWFzeSB0byB0cmFjayB3aGF0IGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZAotYmUg
cmVtb3ZlZCB3aGVuIHRoZSB0aW1lIGNvbWVzLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLQotY2xhc3MgUmVt
b3ZlZEluUHl0ZXN0NFdhcm5pbmcoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAiIiJ3YXJuaW5n
IGNsYXNzIGZvciBmZWF0dXJlcyByZW1vdmVkIGluIHB5dGVzdCA0LjAiIiIKLQotCi1NQUlOX1NU
Ul9BUkdTID0gJ3Bhc3NpbmcgYSBzdHJpbmcgdG8gcHl0ZXN0Lm1haW4oKSBpcyBkZXByZWNhdGVk
LCAnIFwKLSAgICAncGFzcyBhIGxpc3Qgb2YgYXJndW1lbnRzIGluc3RlYWQuJwotCi1ZSUVMRF9U
RVNUUyA9ICd5aWVsZCB0ZXN0cyBhcmUgZGVwcmVjYXRlZCwgYW5kIHNjaGVkdWxlZCB0byBiZSBy
ZW1vdmVkIGluIHB5dGVzdCA0LjAnCi0KLUZVTkNBUkdfUFJFRklYID0gKAotICAgICd7bmFtZX06
IGRlY2xhcmluZyBmaXh0dXJlcyB1c2luZyAicHl0ZXN0X2Z1bmNhcmdfXyIgcHJlZml4IGlzIGRl
cHJlY2F0ZWQgJwotICAgICdhbmQgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gcHl0ZXN0IDQu
MC4gICcKLSAgICAnUGxlYXNlIHJlbW92ZSB0aGUgcHJlZml4IGFuZCB1c2UgdGhlIEBweXRlc3Qu
Zml4dHVyZSBkZWNvcmF0b3IgaW5zdGVhZC4nKQotCi1TRVRVUF9DRkdfUFlURVNUID0gJ1tweXRl
c3RdIHNlY3Rpb24gaW4gc2V0dXAuY2ZnIGZpbGVzIGlzIGRlcHJlY2F0ZWQsIHVzZSBbdG9vbDpw
eXRlc3RdIGluc3RlYWQuJwotCi1HRVRGVU5DQVJHVkFMVUUgPSAidXNlIG9mIGdldGZ1bmNhcmd2
YWx1ZSBpcyBkZXByZWNhdGVkLCB1c2UgZ2V0Zml4dHVyZXZhbHVlIgotCi1SRVNVTFRfTE9HID0g
KAotICAgICctLXJlc3VsdC1sb2cgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1v
dmFsIGluIHB5dGVzdCA0LjAuXG4nCi0gICAgJ1NlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9sYXRlc3QvdXNhZ2UuaHRtbCNjcmVhdGluZy1yZXN1bHRsb2ctZm9ybWF0LWZpbGVzIGZvciBt
b3JlIGluZm9ybWF0aW9uLicKLSkKLQotTUFSS19JTkZPX0FUVFJJQlVURSA9IFJlbW92ZWRJblB5
dGVzdDRXYXJuaW5nKAotICAgICJNYXJrSW5mbyBvYmplY3RzIGFyZSBkZXByZWNhdGVkIGFzIHRo
ZXkgY29udGFpbiB0aGUgbWVyZ2VkIG1hcmtzIgotKQotCi1NQVJLX1BBUkFNRVRFUlNFVF9VTlBB
Q0tJTkcgPSBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZygKLSAgICAiQXBwbHlpbmcgbWFya3MgZGly
ZWN0bHkgdG8gcGFyYW1ldGVycyBpcyBkZXByZWNhdGVkLCIKLSAgICAiIHBsZWFzZSB1c2UgcHl0
ZXN0LnBhcmFtKC4uLiwgbWFya3M9Li4uKSBpbnN0ZWFkLlxuIgotICAgICJGb3IgbW9yZSBkZXRh
aWxzLCBzZWU6IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9wYXJhbWV0cml6ZS5o
dG1sIgotKQotCi1DT0xMRUNUT1JfTUFLRUlURU0gPSBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZygK
LSAgICAicHljb2xsZWN0b3IgbWFrZWl0ZW0gd2FzIHJlbW92ZWQgIgotICAgICJhcyBpdCBpcyBh
biBhY2NpZGVudGlhbGx5IGxlYWtlZCBpbnRlcm5hbCBhcGkiCi0pCi0KLU1FVEFGVU5DX0FERF9D
QUxMID0gKAotICAgICJNZXRhZnVuYy5hZGRjYWxsIGlzIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxl
ZCB0byBiZSByZW1vdmVkIGluIHB5dGVzdCA0LjAuXG4iCi0gICAgIlBsZWFzZSB1c2UgTWV0YWZ1
bmMucGFyYW1ldHJpemUgaW5zdGVhZC4iCi0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L2RvY3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RvY3Rlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYTkwZTU1MWM1MC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvZG9jdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM2OSArMCww
IEBACi0iIiIgZGlzY292ZXIgYW5kIHJ1biBkb2N0ZXN0cyBpbiBtb2R1bGVzIGFuZCB0ZXN0IGZp
bGVzLiIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9u
LCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWltcG9ydCBweXRlc3QKLWZy
b20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvLCBSZXByRmlsZUxvY2F0
aW9uLCBUZXJtaW5hbFJlcHIKLWZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZVJl
cXVlc3QKLQotCi1ET0NURVNUX1JFUE9SVF9DSE9JQ0VfTk9ORSA9ICdub25lJwotRE9DVEVTVF9S
RVBPUlRfQ0hPSUNFX0NESUZGID0gJ2NkaWZmJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX05ESUZG
ID0gJ25kaWZmJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX1VESUZGID0gJ3VkaWZmJwotRE9DVEVT
VF9SRVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRSA9ICdvbmx5X2ZpcnN0X2ZhaWx1cmUn
Ci0KLURPQ1RFU1RfUkVQT1JUX0NIT0lDRVMgPSAoCi0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNF
X05PTkUsCi0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX0NESUZGLAotICAgIERPQ1RFU1RfUkVQ
T1JUX0NIT0lDRV9ORElGRiwKLSAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfVURJRkYsCi0gICAg
RE9DVEVTVF9SRVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRSwKLSkKLQotCi1kZWYgcHl0
ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIHBhcnNlci5hZGRpbmkoJ2RvY3Rlc3Rfb3B0aW9u
ZmxhZ3MnLCAnb3B0aW9uIGZsYWdzIGZvciBkb2N0ZXN0cycsCi0gICAgICAgICAgICAgICAgICB0
eXBlPSJhcmdzIiwgZGVmYXVsdD1bIkVMTElQU0lTIl0pCi0gICAgcGFyc2VyLmFkZGluaSgiZG9j
dGVzdF9lbmNvZGluZyIsICdlbmNvZGluZyB1c2VkIGZvciBkb2N0ZXN0IGZpbGVzJywgZGVmYXVs
dD0idXRmLTgiKQotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJjb2xsZWN0IikKLSAgICBn
cm91cC5hZGRvcHRpb24oIi0tZG9jdGVzdC1tb2R1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
aGVscD0icnVuIGRvY3Rlc3RzIGluIGFsbCAucHkgbW9kdWxlcyIsCi0gICAgICAgICAgICAgICAg
ICAgIGRlc3Q9ImRvY3Rlc3Rtb2R1bGVzIikKLSAgICBncm91cC5hZGRvcHRpb24oIi0tZG9jdGVz
dC1yZXBvcnQiLAotICAgICAgICAgICAgICAgICAgICB0eXBlPXN0ci5sb3dlciwgZGVmYXVsdD0i
dWRpZmYiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJjaG9vc2UgYW5vdGhlciBvdXRwdXQg
Zm9ybWF0IGZvciBkaWZmcyBvbiBkb2N0ZXN0IGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAg
ICBjaG9pY2VzPURPQ1RFU1RfUkVQT1JUX0NIT0lDRVMsCi0gICAgICAgICAgICAgICAgICAgIGRl
c3Q9ImRvY3Rlc3RyZXBvcnQiKQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1kb2N0ZXN0LWdsb2Ii
LAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlZmF1bHQ9W10sIG1ldGF2
YXI9InBhdCIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9ImRvY3Rlc3RzIGZpbGUgbWF0Y2hp
bmcgcGF0dGVybiwgZGVmYXVsdDogdGVzdCoudHh0IiwKLSAgICAgICAgICAgICAgICAgICAgZGVz
dD0iZG9jdGVzdGdsb2IiKQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1kb2N0ZXN0LWlnbm9yZS1p
bXBvcnQtZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iaWdub3JlIGRvY3Rlc3Qg
SW1wb3J0RXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0iZG9jdGVzdF9pZ25vcmVf
aW1wb3J0X2Vycm9ycyIpCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50
KToKLSAgICBjb25maWcgPSBwYXJlbnQuY29uZmlnCi0gICAgaWYgcGF0aC5leHQgPT0gIi5weSI6
Ci0gICAgICAgIGlmIGNvbmZpZy5vcHRpb24uZG9jdGVzdG1vZHVsZXMgYW5kIG5vdCBfaXNfc2V0
dXBfcHkoY29uZmlnLCBwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgcmV0dXJuIERvY3Rlc3RN
b2R1bGUocGF0aCwgcGFyZW50KQotICAgIGVsaWYgX2lzX2RvY3Rlc3QoY29uZmlnLCBwYXRoLCBw
YXJlbnQpOgotICAgICAgICByZXR1cm4gRG9jdGVzdFRleHRmaWxlKHBhdGgsIHBhcmVudCkKLQot
Ci1kZWYgX2lzX3NldHVwX3B5KGNvbmZpZywgcGF0aCwgcGFyZW50KToKLSAgICBpZiBwYXRoLmJh
c2VuYW1lICE9ICJzZXR1cC5weSI6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGNvbnRlbnRz
ID0gcGF0aC5yZWFkKCkKLSAgICByZXR1cm4gJ3NldHVwdG9vbHMnIGluIGNvbnRlbnRzIG9yICdk
aXN0dXRpbHMnIGluIGNvbnRlbnRzCi0KLQotZGVmIF9pc19kb2N0ZXN0KGNvbmZpZywgcGF0aCwg
cGFyZW50KToKLSAgICBpZiBwYXRoLmV4dCBpbiAoJy50eHQnLCAnLnJzdCcpIGFuZCBwYXJlbnQu
c2Vzc2lvbi5pc2luaXRwYXRoKHBhdGgpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGdsb2Jz
ID0gY29uZmlnLmdldG9wdGlvbigiZG9jdGVzdGdsb2IiKSBvciBbJ3Rlc3QqLnR4dCddCi0gICAg
Zm9yIGdsb2IgaW4gZ2xvYnM6Ci0gICAgICAgIGlmIHBhdGguY2hlY2soZm5tYXRjaD1nbG9iKToK
LSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgUmVw
ckZhaWxEb2N0ZXN0KFRlcm1pbmFsUmVwcik6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVw
cmxvY2F0aW9uLCBsaW5lcyk6Ci0gICAgICAgIHNlbGYucmVwcmxvY2F0aW9uID0gcmVwcmxvY2F0
aW9uCi0gICAgICAgIHNlbGYubGluZXMgPSBsaW5lcwotCi0gICAgZGVmIHRvdGVybWluYWwoc2Vs
ZiwgdHcpOgotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVzOgotICAgICAgICAgICAgdHcu
bGluZShsaW5lKQotICAgICAgICBzZWxmLnJlcHJsb2NhdGlvbi50b3Rlcm1pbmFsKHR3KQotCi0K
LWNsYXNzIERvY3Rlc3RJdGVtKHB5dGVzdC5JdGVtKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
bmFtZSwgcGFyZW50LCBydW5uZXI9Tm9uZSwgZHRlc3Q9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKERv
Y3Rlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQpCi0gICAgICAgIHNlbGYucnVu
bmVyID0gcnVubmVyCi0gICAgICAgIHNlbGYuZHRlc3QgPSBkdGVzdAotICAgICAgICBzZWxmLm9i
aiA9IE5vbmUKLSAgICAgICAgc2VsZi5maXh0dXJlX3JlcXVlc3QgPSBOb25lCi0KLSAgICBkZWYg
c2V0dXAoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZHRlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICBzZWxmLmZpeHR1cmVfcmVxdWVzdCA9IF9zZXR1cF9maXh0dXJlcyhzZWxmKQotICAgICAg
ICAgICAgZ2xvYnMgPSBkaWN0KGdldGZpeHR1cmU9c2VsZi5maXh0dXJlX3JlcXVlc3QuZ2V0Zml4
dHVyZXZhbHVlKQotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuZml4dHVyZV9y
ZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgnZG9jdGVzdF9uYW1lc3BhY2UnKS5pdGVtcygpOgotICAg
ICAgICAgICAgICAgIGdsb2JzW25hbWVdID0gdmFsdWUKLSAgICAgICAgICAgIHNlbGYuZHRlc3Qu
Z2xvYnMudXBkYXRlKGdsb2JzKQotCi0gICAgZGVmIHJ1bnRlc3Qoc2VsZik6Ci0gICAgICAgIF9j
aGVja19hbGxfc2tpcHBlZChzZWxmLmR0ZXN0KQotICAgICAgICBzZWxmLnJ1bm5lci5ydW4oc2Vs
Zi5kdGVzdCkKLQotICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAg
IGltcG9ydCBkb2N0ZXN0Ci0gICAgICAgIGlmIGV4Y2luZm8uZXJyaXNpbnN0YW5jZSgoZG9jdGVz
dC5Eb2NUZXN0RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0
ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb24pKToKLSAgICAgICAgICAgIGRvY3Rlc3RmYWlsdXJlID0g
ZXhjaW5mby52YWx1ZQotICAgICAgICAgICAgZXhhbXBsZSA9IGRvY3Rlc3RmYWlsdXJlLmV4YW1w
bGUKLSAgICAgICAgICAgIHRlc3QgPSBkb2N0ZXN0ZmFpbHVyZS50ZXN0Ci0gICAgICAgICAgICBm
aWxlbmFtZSA9IHRlc3QuZmlsZW5hbWUKLSAgICAgICAgICAgIGlmIHRlc3QubGluZW5vIGlzIE5v
bmU6Ci0gICAgICAgICAgICAgICAgbGluZW5vID0gTm9uZQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBsaW5lbm8gPSB0ZXN0LmxpbmVubyArIGV4YW1wbGUubGluZW5vICsgMQot
ICAgICAgICAgICAgbWVzc2FnZSA9IGV4Y2luZm8udHlwZS5fX25hbWVfXwotICAgICAgICAgICAg
cmVwcmxvY2F0aW9uID0gUmVwckZpbGVMb2NhdGlvbihmaWxlbmFtZSwgbGluZW5vLCBtZXNzYWdl
KQotICAgICAgICAgICAgY2hlY2tlciA9IF9nZXRfY2hlY2tlcigpCi0gICAgICAgICAgICByZXBv
cnRfY2hvaWNlID0gX2dldF9yZXBvcnRfY2hvaWNlKHNlbGYuY29uZmlnLmdldG9wdGlvbigiZG9j
dGVzdHJlcG9ydCIpKQotICAgICAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIGxpbmVzID0gZG9jdGVzdGZhaWx1cmUudGVzdC5kb2NzdHJpbmcuc3BsaXRsaW5l
cyhGYWxzZSkKLSAgICAgICAgICAgICAgICAjIGFkZCBsaW5lIG51bWJlcnMgdG8gdGhlIGxlZnQg
b2YgdGhlIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICBsaW5lcyA9IFsiJTAzZCAlcyIg
JSAoaSArIHRlc3QubGluZW5vICsgMSwgeCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KGksIHgpIGluIGVudW1lcmF0ZShsaW5lcyldCi0gICAgICAgICAgICAgICAgIyB0cmltIGRvY3N0
cmluZyBlcnJvciBsaW5lcyB0byAxMAotICAgICAgICAgICAgICAgIGxpbmVzID0gbGluZXNbbWF4
KGV4YW1wbGUubGluZW5vIC0gOSwgMCk6ZXhhbXBsZS5saW5lbm8gKyAxXQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lcyA9IFsnRVhBTVBMRSBMT0NBVElPTiBVTktOT1dO
LCBub3Qgc2hvd2luZyBhbGwgdGVzdHMgb2YgdGhhdCBleGFtcGxlJ10KLSAgICAgICAgICAgICAg
ICBpbmRlbnQgPSAnPj4+JwotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGV4YW1wbGUuc291
cmNlLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCc/Pz8g
JXMgJXMnICUgKGluZGVudCwgbGluZSkpCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCA9ICcu
Li4nCi0gICAgICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoZG9jdGVzdC5Eb2NUZXN0
RmFpbHVyZSk6Ci0gICAgICAgICAgICAgICAgbGluZXMgKz0gY2hlY2tlci5vdXRwdXRfZGlmZmVy
ZW5jZShleGFtcGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdGVzdGZhaWx1cmUuZ290LCByZXBvcnRfY2hvaWNlKS5zcGxpdCgiXG4iKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbm5lcl9leGNpbmZvID0gRXhjZXB0
aW9uSW5mbyhleGNpbmZvLnZhbHVlLmV4Y19pbmZvKQotICAgICAgICAgICAgICAgIGxpbmVzICs9
IFsiVU5FWFBFQ1RFRCBFWENFUFRJT046ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcHIoaW5uZXJfZXhjaW5mby52YWx1ZSldCi0gICAgICAgICAgICAgICAgbGluZXMgKz0gdHJh
Y2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKmV4Y2luZm8udmFsdWUuZXhjX2luZm8pCi0gICAgICAg
ICAgICByZXR1cm4gUmVwckZhaWxEb2N0ZXN0KHJlcHJsb2NhdGlvbiwgbGluZXMpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoRG9jdGVzdEl0ZW0sIHNlbGYpLnJlcHJf
ZmFpbHVyZShleGNpbmZvKQotCi0gICAgZGVmIHJlcG9ydGluZm8oc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLmZzcGF0aCwgc2VsZi5kdGVzdC5saW5lbm8sICJbZG9jdGVzdF0gJXMiICUgc2Vs
Zi5uYW1lCi0KLQotZGVmIF9nZXRfZmxhZ19sb29rdXAoKToKLSAgICBpbXBvcnQgZG9jdGVzdAot
ICAgIHJldHVybiBkaWN0KERPTlRfQUNDRVBUX1RSVUVfRk9SXzE9ZG9jdGVzdC5ET05UX0FDQ0VQ
VF9UUlVFX0ZPUl8xLAotICAgICAgICAgICAgICAgIERPTlRfQUNDRVBUX0JMQU5LTElORT1kb2N0
ZXN0LkRPTlRfQUNDRVBUX0JMQU5LTElORSwKLSAgICAgICAgICAgICAgICBOT1JNQUxJWkVfV0hJ
VEVTUEFDRT1kb2N0ZXN0Lk5PUk1BTElaRV9XSElURVNQQUNFLAotICAgICAgICAgICAgICAgIEVM
TElQU0lTPWRvY3Rlc3QuRUxMSVBTSVMsCi0gICAgICAgICAgICAgICAgSUdOT1JFX0VYQ0VQVElP
Tl9ERVRBSUw9ZG9jdGVzdC5JR05PUkVfRVhDRVBUSU9OX0RFVEFJTCwKLSAgICAgICAgICAgICAg
ICBDT01QQVJJU09OX0ZMQUdTPWRvY3Rlc3QuQ09NUEFSSVNPTl9GTEFHUywKLSAgICAgICAgICAg
ICAgICBBTExPV19VTklDT0RFPV9nZXRfYWxsb3dfdW5pY29kZV9mbGFnKCksCi0gICAgICAgICAg
ICAgICAgQUxMT1dfQllURVM9X2dldF9hbGxvd19ieXRlc19mbGFnKCksCi0gICAgICAgICAgICAg
ICAgKQotCi0KLWRlZiBnZXRfb3B0aW9uZmxhZ3MocGFyZW50KToKLSAgICBvcHRpb25mbGFnc19z
dHIgPSBwYXJlbnQuY29uZmlnLmdldGluaSgiZG9jdGVzdF9vcHRpb25mbGFncyIpCi0gICAgZmxh
Z19sb29rdXBfdGFibGUgPSBfZ2V0X2ZsYWdfbG9va3VwKCkKLSAgICBmbGFnX2FjYyA9IDAKLSAg
ICBmb3IgZmxhZyBpbiBvcHRpb25mbGFnc19zdHI6Ci0gICAgICAgIGZsYWdfYWNjIHw9IGZsYWdf
bG9va3VwX3RhYmxlW2ZsYWddCi0gICAgcmV0dXJuIGZsYWdfYWNjCi0KLQotY2xhc3MgRG9jdGVz
dFRleHRmaWxlKHB5dGVzdC5Nb2R1bGUpOgotICAgIG9iaiA9IE5vbmUKLQotICAgIGRlZiBjb2xs
ZWN0KHNlbGYpOgotICAgICAgICBpbXBvcnQgZG9jdGVzdAotCi0gICAgICAgICMgaW5zcGlyZWQg
YnkgZG9jdGVzdC50ZXN0ZmlsZTsgaWRlYWxseSB3ZSB3b3VsZCB1c2UgaXQgZGlyZWN0bHksCi0g
ICAgICAgICMgYnV0IGl0IGRvZXNuJ3Qgc3VwcG9ydCBwYXNzaW5nIGEgY3VzdG9tIGNoZWNrZXIK
LSAgICAgICAgZW5jb2RpbmcgPSBzZWxmLmNvbmZpZy5nZXRpbmkoImRvY3Rlc3RfZW5jb2Rpbmci
KQotICAgICAgICB0ZXh0ID0gc2VsZi5mc3BhdGgucmVhZF90ZXh0KGVuY29kaW5nKQotICAgICAg
ICBmaWxlbmFtZSA9IHN0cihzZWxmLmZzcGF0aCkKLSAgICAgICAgbmFtZSA9IHNlbGYuZnNwYXRo
LmJhc2VuYW1lCi0gICAgICAgIGdsb2JzID0geydfX25hbWVfXyc6ICdfX21haW5fXyd9Ci0KLSAg
ICAgICAgb3B0aW9uZmxhZ3MgPSBnZXRfb3B0aW9uZmxhZ3Moc2VsZikKLSAgICAgICAgcnVubmVy
ID0gZG9jdGVzdC5EZWJ1Z1J1bm5lcih2ZXJib3NlPTAsIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZXI9X2dldF9jaGVj
a2VyKCkpCi0gICAgICAgIF9maXhfc3Bvb2ZfcHl0aG9uMihydW5uZXIsIGVuY29kaW5nKQotCi0g
ICAgICAgIHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgICAgIHRlc3QgPSBw
YXJzZXIuZ2V0X2RvY3Rlc3QodGV4dCwgZ2xvYnMsIG5hbWUsIGZpbGVuYW1lLCAwKQotICAgICAg
ICBpZiB0ZXN0LmV4YW1wbGVzOgotICAgICAgICAgICAgeWllbGQgRG9jdGVzdEl0ZW0odGVzdC5u
YW1lLCBzZWxmLCBydW5uZXIsIHRlc3QpCi0KLQotZGVmIF9jaGVja19hbGxfc2tpcHBlZCh0ZXN0
KToKLSAgICAiIiJyYWlzZXMgcHl0ZXN0LnNraXAoKSBpZiBhbGwgZXhhbXBsZXMgaW4gdGhlIGdp
dmVuIERvY1Rlc3QgaGF2ZSB0aGUgU0tJUAotICAgIG9wdGlvbiBzZXQuCi0gICAgIiIiCi0gICAg
aW1wb3J0IGRvY3Rlc3QKLSAgICBhbGxfc2tpcHBlZCA9IGFsbCh4Lm9wdGlvbnMuZ2V0KGRvY3Rl
c3QuU0tJUCwgRmFsc2UpIGZvciB4IGluIHRlc3QuZXhhbXBsZXMpCi0gICAgaWYgYWxsX3NraXBw
ZWQ6Ci0gICAgICAgIHB5dGVzdC5za2lwKCdhbGwgdGVzdHMgc2tpcHBlZCBieSArU0tJUCBvcHRp
b24nKQotCi0KLWNsYXNzIERvY3Rlc3RNb2R1bGUocHl0ZXN0Lk1vZHVsZSk6Ci0gICAgZGVmIGNv
bGxlY3Qoc2VsZik6Ci0gICAgICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgICAgIGlmIHNlbGYuZnNw
YXRoLmJhc2VuYW1lID09ICJjb25mdGVzdC5weSI6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxm
LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChzZWxmLmZzcGF0aCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxm
LmZzcGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAg
ICAgICAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0dmFsdWUoJ2RvY3Rlc3RfaWdub3JlX2ltcG9y
dF9lcnJvcnMnKToKLSAgICAgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoJ3VuYWJsZSB0byBp
bXBvcnQgbW9kdWxlICVyJyAlIHNlbGYuZnNwYXRoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICMgdXNlcyBpbnRlcm5hbCBkb2N0ZXN0
IG1vZHVsZSBwYXJzaW5nIG1lY2hhbmlzbQotICAgICAgICBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rl
c3RGaW5kZXIoKQotICAgICAgICBvcHRpb25mbGFncyA9IGdldF9vcHRpb25mbGFncyhzZWxmKQot
ICAgICAgICBydW5uZXIgPSBkb2N0ZXN0LkRlYnVnUnVubmVyKHZlcmJvc2U9MCwgb3B0aW9uZmxh
Z3M9b3B0aW9uZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tlcj1fZ2V0X2NoZWNrZXIoKSkKLQotICAgICAgICBmb3IgdGVzdCBpbiBmaW5kZXIuZmluZCht
b2R1bGUsIG1vZHVsZS5fX25hbWVfXyk6Ci0gICAgICAgICAgICBpZiB0ZXN0LmV4YW1wbGVzOiAg
IyBza2lwIGVtcHR5IGRvY3Rlc3RzCi0gICAgICAgICAgICAgICAgeWllbGQgRG9jdGVzdEl0ZW0o
dGVzdC5uYW1lLCBzZWxmLCBydW5uZXIsIHRlc3QpCi0KLQotZGVmIF9zZXR1cF9maXh0dXJlcyhk
b2N0ZXN0X2l0ZW0pOgotICAgICIiIgotICAgIFVzZWQgYnkgRG9jdGVzdFRleHRmaWxlIGFuZCBE
b2N0ZXN0SXRlbSB0byBzZXR1cCBmaXh0dXJlIGluZm9ybWF0aW9uLgotICAgICIiIgotICAgIGRl
ZiBmdW5jKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRvY3Rlc3RfaXRlbS5mdW5jYXJncyA9IHt9
Ci0gICAgZm0gPSBkb2N0ZXN0X2l0ZW0uc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAgICBkb2N0
ZXN0X2l0ZW0uX2ZpeHR1cmVpbmZvID0gZm0uZ2V0Zml4dHVyZWluZm8obm9kZT1kb2N0ZXN0X2l0
ZW0sIGZ1bmM9ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xzPU5vbmUsIGZ1bmNhcmdzPUZhbHNlKQotICAgIGZpeHR1cmVfcmVxdWVzdCA9
IEZpeHR1cmVSZXF1ZXN0KGRvY3Rlc3RfaXRlbSkKLSAgICBmaXh0dXJlX3JlcXVlc3QuX2ZpbGxm
aXh0dXJlcygpCi0gICAgcmV0dXJuIGZpeHR1cmVfcmVxdWVzdAotCi0KLWRlZiBfZ2V0X2NoZWNr
ZXIoKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZG9jdGVzdC5PdXRwdXRDaGVja2VyIHN1YmNs
YXNzIHRoYXQgdGFrZXMgaW4gYWNjb3VudCB0aGUKLSAgICBBTExPV19VTklDT0RFIG9wdGlvbiB0
byBpZ25vcmUgdScnIHByZWZpeGVzIGluIHN0cmluZ3MgYW5kIEFMTE9XX0JZVEVTCi0gICAgdG8g
c3RyaXAgYicnIHByZWZpeGVzLgotICAgIFVzZWZ1bCB3aGVuIHRoZSBzYW1lIGRvY3Rlc3Qgc2hv
dWxkIHJ1biBpbiBQeXRob24gMiBhbmQgUHl0aG9uIDMuCi0KLSAgICBBbiBpbm5lciBjbGFzcyBp
cyB1c2VkIHRvIGF2b2lkIGltcG9ydGluZyAiZG9jdGVzdCIgYXQgdGhlIG1vZHVsZQotICAgIGxl
dmVsLgotICAgICIiIgotICAgIGlmIGhhc2F0dHIoX2dldF9jaGVja2VyLCAnTGl0ZXJhbHNPdXRw
dXRDaGVja2VyJyk6Ci0gICAgICAgIHJldHVybiBfZ2V0X2NoZWNrZXIuTGl0ZXJhbHNPdXRwdXRD
aGVja2VyKCkKLQotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgaW1wb3J0IHJlCi0KLSAgICBjbGFz
cyBMaXRlcmFsc091dHB1dENoZWNrZXIoZG9jdGVzdC5PdXRwdXRDaGVja2VyKToKLSAgICAgICAg
IiIiCi0gICAgICAgIENvcGllZCBmcm9tIGRvY3Rlc3Rfbm9zZV9wbHVnaW4ucHkgZnJvbSB0aGUg
bmx0ayBwcm9qZWN0OgotICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL25sdGsvbmx0awot
Ci0gICAgICAgIEZ1cnRoZXIgZXh0ZW5kZWQgdG8gYWxzbyBzdXBwb3J0IGJ5dGUgbGl0ZXJhbHMu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIF91bmljb2RlX2xpdGVyYWxfcmUgPSByZS5jb21waWxl
KHIiKFxXfF4pW3VVXShbclJdP1tcJ1wiXSkiLCByZS5VTklDT0RFKQotICAgICAgICBfYnl0ZXNf
bGl0ZXJhbF9yZSA9IHJlLmNvbXBpbGUociIoXFd8XilbYkJdKFtyUl0/W1wnXCJdKSIsIHJlLlVO
SUNPREUpCi0KLSAgICAgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsIG9wdGlv
bmZsYWdzKToKLSAgICAgICAgICAgIHJlcyA9IGRvY3Rlc3QuT3V0cHV0Q2hlY2tlci5jaGVja19v
dXRwdXQoc2VsZiwgd2FudCwgZ290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25mbGFncykKLSAgICAgICAgICAgIGlmIHJlczoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICAgICBhbGxvd191bmljb2RlID0g
b3B0aW9uZmxhZ3MgJiBfZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpCi0gICAgICAgICAgICBhbGxv
d19ieXRlcyA9IG9wdGlvbmZsYWdzICYgX2dldF9hbGxvd19ieXRlc19mbGFnKCkKLSAgICAgICAg
ICAgIGlmIG5vdCBhbGxvd191bmljb2RlIGFuZCBub3QgYWxsb3dfYnl0ZXM6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIGVsc2U6ICAjIHByYWdtYTogbm8gY292
ZXIKLSAgICAgICAgICAgICAgICBkZWYgcmVtb3ZlX3ByZWZpeGVzKHJlZ2V4LCB0eHQpOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmUuc3ViKHJlZ2V4LCByJ1wxXDInLCB0eHQpCi0KLSAg
ICAgICAgICAgICAgICBpZiBhbGxvd191bmljb2RlOgotICAgICAgICAgICAgICAgICAgICB3YW50
ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJhbF9yZSwgd2FudCkKLSAgICAg
ICAgICAgICAgICAgICAgZ290ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJh
bF9yZSwgZ290KQotICAgICAgICAgICAgICAgIGlmIGFsbG93X2J5dGVzOgotICAgICAgICAgICAg
ICAgICAgICB3YW50ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX2J5dGVzX2xpdGVyYWxfcmUsIHdh
bnQpCi0gICAgICAgICAgICAgICAgICAgIGdvdCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl9ieXRl
c19saXRlcmFsX3JlLCBnb3QpCi0gICAgICAgICAgICAgICAgcmVzID0gZG9jdGVzdC5PdXRwdXRD
aGVja2VyLmNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25mbGFncykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzCi0KLSAgICBfZ2V0X2NoZWNrZXIuTGl0ZXJhbHNPdXRwdXRD
aGVja2VyID0gTGl0ZXJhbHNPdXRwdXRDaGVja2VyCi0gICAgcmV0dXJuIF9nZXRfY2hlY2tlci5M
aXRlcmFsc091dHB1dENoZWNrZXIoKQotCi0KLWRlZiBfZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygp
OgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0dXJucyB0aGUgQUxMT1dfVU5JQ09ERSBm
bGFnLgotICAgICIiIgotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgcmV0dXJuIGRvY3Rlc3QucmVn
aXN0ZXJfb3B0aW9uZmxhZygnQUxMT1dfVU5JQ09ERScpCi0KLQotZGVmIF9nZXRfYWxsb3dfYnl0
ZXNfZmxhZygpOgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0dXJucyB0aGUgQUxMT1df
QllURVMgZmxhZy4KLSAgICAiIiIKLSAgICBpbXBvcnQgZG9jdGVzdAotICAgIHJldHVybiBkb2N0
ZXN0LnJlZ2lzdGVyX29wdGlvbmZsYWcoJ0FMTE9XX0JZVEVTJykKLQotCi1kZWYgX2dldF9yZXBv
cnRfY2hvaWNlKGtleSk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBh
Y3R1YWwgYGRvY3Rlc3RgIG1vZHVsZSBmbGFnIHZhbHVlLCB3ZSB3YW50IHRvIGRvIGl0IGFzIGxh
dGUgYXMgcG9zc2libGUgdG8gYXZvaWQKLSAgICBpbXBvcnRpbmcgYGRvY3Rlc3RgIGFuZCBhbGwg
aXRzIGRlcGVuZGVuY2llcyB3aGVuIHBhcnNpbmcgb3B0aW9ucywgYXMgaXQgYWRkcyBvdmVyaGVh
ZCBhbmQgYnJlYWtzIHRlc3RzLgotICAgICIiIgotICAgIGltcG9ydCBkb2N0ZXN0Ci0KLSAgICBy
ZXR1cm4gewotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfVURJRkY6IGRvY3Rlc3QuUkVQ
T1JUX1VESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfQ0RJRkY6IGRvY3Rlc3Qu
UkVQT1JUX0NESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfTkRJRkY6IGRvY3Rl
c3QuUkVQT1JUX05ESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfT05MWV9GSVJT
VF9GQUlMVVJFOiBkb2N0ZXN0LlJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUsCi0gICAgICAgIERP
Q1RFU1RfUkVQT1JUX0NIT0lDRV9OT05FOiAwLAotICAgIH1ba2V5XQotCi0KLWRlZiBfZml4X3Nw
b29mX3B5dGhvbjIocnVubmVyLCBlbmNvZGluZyk6Ci0gICAgIiIiCi0gICAgSW5zdGFsbHMgYSAi
U3Bvb2ZPdXQiIGludG8gdGhlIGdpdmVuIERlYnVnUnVubmVyIHNvIGl0IHByb3Blcmx5IGRlYWxz
IHdpdGggdW5pY29kZSBvdXRwdXQuIFRoaXMKLSAgICBzaG91bGQgcGF0Y2ggb25seSBkb2N0ZXN0
cyBmb3IgdGV4dCBmaWxlcyBiZWNhdXNlIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0byBkZWNsYXJl
IHRoZWlyCi0gICAgZW5jb2RpbmcuIERvY3Rlc3RzIGluIGRvY3N0cmluZ3MgZnJvbSBQeXRob24g
bW9kdWxlcyBkb24ndCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gZ2l2ZW4gdGhhdAotICAgIFB5dGhv
biBhbHJlYWR5IGRlY29kZWQgdGhlIHN0cmluZ3MuCi0KLSAgICBUaGlzIGZpeGVzIHRoZSBwcm9i
bGVtIHJlbGF0ZWQgaW4gaXNzdWUgIzI0MzQuCi0gICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmNv
bXBhdCBpbXBvcnQgX1BZMgotICAgIGlmIG5vdCBfUFkyOgotICAgICAgICByZXR1cm4KLQotICAg
IGZyb20gZG9jdGVzdCBpbXBvcnQgX1Nwb29mT3V0Ci0KLSAgICBjbGFzcyBVbmljb2RlU3Bvb2Yo
X1Nwb29mT3V0KToKLQotICAgICAgICBkZWYgZ2V0dmFsdWUoc2VsZik6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBfU3Bvb2ZPdXQuZ2V0dmFsdWUoc2VsZikKLSAgICAgICAgICAgIGlmIGVuY29kaW5n
OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5kZWNvZGUoZW5jb2RpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBydW5uZXIuX2Zha2VvdXQgPSBVbmljb2RlU3Bv
b2YoKQotCi0KLUBweXRlc3QuZml4dHVyZShzY29wZT0nc2Vzc2lvbicpCi1kZWYgZG9jdGVzdF9u
YW1lc3BhY2UoKToKLSAgICAiIiIKLSAgICBJbmplY3QgbmFtZXMgaW50byB0aGUgZG9jdGVzdCBu
YW1lc3BhY2UuCi0gICAgIiIiCi0gICAgcmV0dXJuIGRpY3QoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9maXh0dXJlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZml4dHVyZXMu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwOWZmYWRkYmE3My4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZml4dHVyZXMucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTQ3ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IGlu
c3BlY3QKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotZnJvbSBjb2xsZWN0aW9ucyBpbXBv
cnQgT3JkZXJlZERpY3QKLQotaW1wb3J0IGF0dHIKLWltcG9ydCBweQotZnJvbSBweS5fY29kZS5j
b2RlIGltcG9ydCBGb3JtYXR0ZWRFeGNpbmZvCi0KLWltcG9ydCBfcHl0ZXN0Ci1mcm9tIF9weXRl
c3QgaW1wb3J0IG5vZGVzCi1mcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgVGVybWluYWxS
ZXByCi1mcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCAoCi0gICAgTk9UU0VULCBleGNfY2xlYXIs
IF9mb3JtYXRfYXJncywKLSAgICBnZXRmc2xpbmVubywgZ2V0X3JlYWxfZnVuYywKLSAgICBpc19n
ZW5lcmF0b3IsIGlzY2xhc3MsIGdldGltZnVuYywKLSAgICBnZXRsb2NhdGlvbiwgZ2V0ZnVuY2Fy
Z25hbWVzLAotICAgIHNhZmVfZ2V0YXR0ciwKLSAgICBGdW5jYXJnbmFtZXNDb21wYXRBdHRyLAot
KQotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsLCBURVNUX09VVENPTUUKLQotCi1k
ZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKLSAgICBpbXBvcnQgX3B5dGVzdC5weXRo
b24KLQotICAgIHNjb3BlbmFtZTJjbGFzcy51cGRhdGUoewotICAgICAgICAnY2xhc3MnOiBfcHl0
ZXN0LnB5dGhvbi5DbGFzcywKLSAgICAgICAgJ21vZHVsZSc6IF9weXRlc3QucHl0aG9uLk1vZHVs
ZSwKLSAgICAgICAgJ2Z1bmN0aW9uJzogX3B5dGVzdC5tYWluLkl0ZW0sCi0gICAgICAgICdzZXNz
aW9uJzogX3B5dGVzdC5tYWluLlNlc3Npb24sCi0gICAgfSkKLSAgICBzZXNzaW9uLl9maXh0dXJl
bWFuYWdlciA9IEZpeHR1cmVNYW5hZ2VyKHNlc3Npb24pCi0KLQotc2NvcGVuYW1lMmNsYXNzID0g
e30KLQotCi1zY29wZTJwcm9wcyA9IGRpY3Qoc2Vzc2lvbj0oKSkKLXNjb3BlMnByb3BzWyJtb2R1
bGUiXSA9ICgiZnNwYXRoIiwgIm1vZHVsZSIpCi1zY29wZTJwcm9wc1siY2xhc3MiXSA9IHNjb3Bl
MnByb3BzWyJtb2R1bGUiXSArICgiY2xzIiwpCi1zY29wZTJwcm9wc1siaW5zdGFuY2UiXSA9IHNj
b3BlMnByb3BzWyJjbGFzcyJdICsgKCJpbnN0YW5jZSIsICkKLXNjb3BlMnByb3BzWyJmdW5jdGlv
biJdID0gc2NvcGUycHJvcHNbImluc3RhbmNlIl0gKyAoImZ1bmN0aW9uIiwgImtleXdvcmRzIikK
LQotCi1kZWYgc2NvcGVwcm9wZXJ0eShuYW1lPU5vbmUsIGRvYz1Ob25lKToKLSAgICBkZWYgZGVj
b3JhdGVzY29wZShmdW5jKToKLSAgICAgICAgc2NvcGVuYW1lID0gbmFtZSBvciBmdW5jLl9fbmFt
ZV9fCi0KLSAgICAgICAgZGVmIHByb3ZpZGUoc2VsZik6Ci0gICAgICAgICAgICBpZiBmdW5jLl9f
bmFtZV9fIGluIHNjb3BlMnByb3BzW3NlbGYuc2NvcGVdOgotICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jKHNlbGYpCi0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXMgbm90IGF2
YWlsYWJsZSBpbiAlcy1zY29wZWQgY29udGV4dCIgJSAoCi0gICAgICAgICAgICAgICAgc2NvcGVu
YW1lLCBzZWxmLnNjb3BlKSkKLQotICAgICAgICByZXR1cm4gcHJvcGVydHkocHJvdmlkZSwgTm9u
ZSwgTm9uZSwgZnVuYy5fX2RvY19fKQotICAgIHJldHVybiBkZWNvcmF0ZXNjb3BlCi0KLQotZGVm
IGdldF9zY29wZV9ub2RlKG5vZGUsIHNjb3BlKToKLSAgICBjbHMgPSBzY29wZW5hbWUyY2xhc3Mu
Z2V0KHNjb3BlKQotICAgIGlmIGNscyBpcyBOb25lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJ1bmtub3duIHNjb3BlIikKLSAgICByZXR1cm4gbm9kZS5nZXRwYXJlbnQoY2xzKQotCi0KLWRl
ZiBhZGRfZnVuY2FyZ19wc2V1ZG9fZml4dHVyZV9kZWYoY29sbGVjdG9yLCBtZXRhZnVuYywgZml4
dHVyZW1hbmFnZXIpOgotICAgICMgdGhpcyBmdW5jdGlvbiB3aWxsIHRyYW5zZm9ybSBhbGwgY29s
bGVjdGVkIGNhbGxzIHRvIGEgZnVuY3Rpb25zCi0gICAgIyBpZiB0aGV5IHVzZSBkaXJlY3QgZnVu
Y2FyZ3MgKGkuZS4gZGlyZWN0IHBhcmFtZXRyaXphdGlvbikKLSAgICAjIGJlY2F1c2Ugd2Ugd2Fu
dCBsYXRlciB0ZXN0IGV4ZWN1dGlvbiB0byBiZSBhYmxlIHRvIHJlbHkgb24KLSAgICAjIGFuIGV4
aXN0aW5nIEZpeHR1cmVEZWYgc3RydWN0dXJlIGZvciBhbGwgYXJndW1lbnRzLgotICAgICMgWFhY
IHdlIGNhbiBwcm9iYWJseSBhdm9pZCB0aGlzIGFsZ29yaXRobSAgaWYgd2UgbW9kaWZ5IENhbGxT
cGVjMgotICAgICMgdG8gZGlyZWN0bHkgY2FyZSBmb3IgY3JlYXRpbmcgdGhlIGZpeHR1cmVkZWZz
IHdpdGhpbiBpdHMgbWV0aG9kcy4KLSAgICBpZiBub3QgbWV0YWZ1bmMuX2NhbGxzWzBdLmZ1bmNh
cmdzOgotICAgICAgICByZXR1cm4gICMgdGhpcyBmdW5jdGlvbiBjYWxsIGRvZXMgbm90IGhhdmUg
ZGlyZWN0IHBhcmFtZXRyaXphdGlvbgotICAgICMgY29sbGVjdCBmdW5jYXJncyBvZiBhbGwgY2Fs
bHNwZWNzIGludG8gYSBsaXN0IG9mIHZhbHVlcwotICAgIGFyZzJwYXJhbXMgPSB7fQotICAgIGFy
ZzJzY29wZSA9IHt9Ci0gICAgZm9yIGNhbGxzcGVjIGluIG1ldGFmdW5jLl9jYWxsczoKLSAgICAg
ICAgZm9yIGFyZ25hbWUsIGFyZ3ZhbHVlIGluIGNhbGxzcGVjLmZ1bmNhcmdzLml0ZW1zKCk6Ci0g
ICAgICAgICAgICBhc3NlcnQgYXJnbmFtZSBub3QgaW4gY2FsbHNwZWMucGFyYW1zCi0gICAgICAg
ICAgICBjYWxsc3BlYy5wYXJhbXNbYXJnbmFtZV0gPSBhcmd2YWx1ZQotICAgICAgICAgICAgYXJn
MnBhcmFtc19saXN0ID0gYXJnMnBhcmFtcy5zZXRkZWZhdWx0KGFyZ25hbWUsIFtdKQotICAgICAg
ICAgICAgY2FsbHNwZWMuaW5kaWNlc1thcmduYW1lXSA9IGxlbihhcmcycGFyYW1zX2xpc3QpCi0g
ICAgICAgICAgICBhcmcycGFyYW1zX2xpc3QuYXBwZW5kKGFyZ3ZhbHVlKQotICAgICAgICAgICAg
aWYgYXJnbmFtZSBub3QgaW4gYXJnMnNjb3BlOgotICAgICAgICAgICAgICAgIHNjb3BlbnVtID0g
Y2FsbHNwZWMuX2FyZzJzY29wZW51bS5nZXQoYXJnbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlbnVtX2Z1bmN0aW9uKQotICAg
ICAgICAgICAgICAgIGFyZzJzY29wZVthcmduYW1lXSA9IHNjb3Blc1tzY29wZW51bV0KLSAgICAg
ICAgY2FsbHNwZWMuZnVuY2FyZ3MuY2xlYXIoKQotCi0gICAgIyByZWdpc3RlciBhcnRpZmljaWFs
IEZpeHR1cmVEZWYncyBzbyB0aGF0IGxhdGVyIGF0IHRlc3QgZXhlY3V0aW9uCi0gICAgIyB0aW1l
IHdlIGNhbiByZWx5IG9uIGEgcHJvcGVyIEZpeHR1cmVEZWYgdG8gZXhpc3QgZm9yIGZpeHR1cmUg
c2V0dXAuCi0gICAgYXJnMmZpeHR1cmVkZWZzID0gbWV0YWZ1bmMuX2FyZzJmaXh0dXJlZGVmcwot
ICAgIGZvciBhcmduYW1lLCB2YWx1ZWxpc3QgaW4gYXJnMnBhcmFtcy5pdGVtcygpOgotICAgICAg
ICAjIGlmIHdlIGhhdmUgYSBzY29wZSB0aGF0IGlzIGhpZ2hlciB0aGFuIGZ1bmN0aW9uIHdlIG5l
ZWQKLSAgICAgICAgIyB0byBtYWtlIHN1cmUgd2Ugb25seSBldmVyIGNyZWF0ZSBhbiBhY2NvcmRp
bmcgZml4dHVyZWRlZiBvbgotICAgICAgICAjIGEgcGVyLXNjb3BlIGJhc2lzLiBXZSB0aHVzIHN0
b3JlIGFuZCBjYWNoZSB0aGUgZml4dHVyZWRlZiBvbiB0aGUKLSAgICAgICAgIyBub2RlIHJlbGF0
ZWQgdG8gdGhlIHNjb3BlLgotICAgICAgICBzY29wZSA9IGFyZzJzY29wZVthcmduYW1lXQotICAg
ICAgICBub2RlID0gTm9uZQotICAgICAgICBpZiBzY29wZSAhPSAiZnVuY3Rpb24iOgotICAgICAg
ICAgICAgbm9kZSA9IGdldF9zY29wZV9ub2RlKGNvbGxlY3Rvciwgc2NvcGUpCi0gICAgICAgICAg
ICBpZiBub2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNjb3BlID09ICJjbGFz
cyIgYW5kIGlzaW5zdGFuY2UoY29sbGVjdG9yLCBfcHl0ZXN0LnB5dGhvbi5Nb2R1bGUpCi0gICAg
ICAgICAgICAgICAgIyB1c2UgbW9kdWxlLWxldmVsIGNvbGxlY3RvciBmb3IgY2xhc3Mtc2NvcGUg
KGZvciBub3cpCi0gICAgICAgICAgICAgICAgbm9kZSA9IGNvbGxlY3RvcgotICAgICAgICBpZiBu
b2RlIGFuZCBhcmduYW1lIGluIG5vZGUuX25hbWUycHNldWRvZml4dHVyZWRlZjoKLSAgICAgICAg
ICAgIGFyZzJmaXh0dXJlZGVmc1thcmduYW1lXSA9IFtub2RlLl9uYW1lMnBzZXVkb2ZpeHR1cmVk
ZWZbYXJnbmFtZV1dCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaXh0dXJlZGVmID0gRml4
dHVyZURlZihmaXh0dXJlbWFuYWdlciwgJycsIGFyZ25hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRfZGlyZWN0X3BhcmFtX2ZpeHR1cmVfZnVuYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJzY29wZVthcmduYW1lXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlbGlzdCwgRmFsc2UsIEZhbHNlKQotICAg
ICAgICAgICAgYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gW2ZpeHR1cmVkZWZdCi0gICAgICAg
ICAgICBpZiBub2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG5vZGUuX25hbWUycHNl
dWRvZml4dHVyZWRlZlthcmduYW1lXSA9IGZpeHR1cmVkZWYKLQotCi1kZWYgZ2V0Zml4dHVyZW1h
cmtlcihvYmopOgotICAgICIiIiByZXR1cm4gZml4dHVyZW1hcmtlciBvciBOb25lIGlmIGl0IGRv
ZXNuJ3QgZXhpc3Qgb3IgcmFpc2VkCi0gICAgZXhjZXB0aW9ucy4iIiIKLSAgICB0cnk6Ci0gICAg
ICAgIHJldHVybiBnZXRhdHRyKG9iaiwgIl9weXRlc3RmaXh0dXJlZnVuY3Rpb24iLCBOb25lKQot
ICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgICMgc29tZSBvYmplY3RzIHJhaXNlIGVy
cm9ycyBsaWtlIHJlcXVlc3QgKGZyb20gZmxhc2sgaW1wb3J0IHJlcXVlc3QpCi0gICAgICAgICMg
d2UgZG9uJ3QgZXhwZWN0IHRoZW0gdG8gYmUgZml4dHVyZSBmdW5jdGlvbnMKLSAgICAgICAgcmV0
dXJuIE5vbmUKLQotCi1kZWYgZ2V0X3BhcmFtZXRyaXplZF9maXh0dXJlX2tleXMoaXRlbSwgc2Nv
cGVudW0pOgotICAgICIiIiByZXR1cm4gbGlzdCBvZiBrZXlzIGZvciBhbGwgcGFyYW1ldHJpemVk
IGFyZ3VtZW50cyB3aGljaCBtYXRjaAotICAgIHRoZSBzcGVjaWZpZWQgc2NvcGUuICIiIgotICAg
IGFzc2VydCBzY29wZW51bSA8IHNjb3BlbnVtX2Z1bmN0aW9uICAjIGZ1bmN0aW9uCi0gICAgdHJ5
OgotICAgICAgICBjcyA9IGl0ZW0uY2FsbHNwZWMKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICAjIGNzLmluZGljZXMuaXRlbXMoKSBp
cyByYW5kb20gb3JkZXIgb2YgYXJnbmFtZXMuICBOZWVkIHRvCi0gICAgICAgICMgc29ydCB0aGlz
IHNvIHRoYXQgZGlmZmVyZW50IGNhbGxzIHRvCi0gICAgICAgICMgZ2V0X3BhcmFtZXRyaXplZF9m
aXh0dXJlX2tleXMgd2lsbCBiZSBkZXRlcm1pbmlzdGljLgotICAgICAgICBmb3IgYXJnbmFtZSwg
cGFyYW1faW5kZXggaW4gc29ydGVkKGNzLmluZGljZXMuaXRlbXMoKSk6Ci0gICAgICAgICAgICBp
ZiBjcy5fYXJnMnNjb3BlbnVtW2FyZ25hbWVdICE9IHNjb3BlbnVtOgotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBzY29wZW51bSA9PSAwOiAgICAjIHNlc3Npb24KLSAg
ICAgICAgICAgICAgICBrZXkgPSAoYXJnbmFtZSwgcGFyYW1faW5kZXgpCi0gICAgICAgICAgICBl
bGlmIHNjb3BlbnVtID09IDE6ICAjIG1vZHVsZQotICAgICAgICAgICAgICAgIGtleSA9IChhcmdu
YW1lLCBwYXJhbV9pbmRleCwgaXRlbS5mc3BhdGgpCi0gICAgICAgICAgICBlbGlmIHNjb3BlbnVt
ID09IDI6ICAjIGNsYXNzCi0gICAgICAgICAgICAgICAga2V5ID0gKGFyZ25hbWUsIHBhcmFtX2lu
ZGV4LCBpdGVtLmZzcGF0aCwgaXRlbS5jbHMpCi0gICAgICAgICAgICB5aWVsZCBrZXkKLQotCi0j
IGFsZ29yaXRobSBmb3Igc29ydGluZyBvbiBhIHBlci1wYXJhbWV0cml6ZWQgcmVzb3VyY2Ugc2V0
dXAgYmFzaXMKLSMgaXQgaXMgY2FsbGVkIGZvciBzY29wZW51bT09MCAoc2Vzc2lvbikgZmlyc3Qg
YW5kIHBlcmZvcm1zIHNvcnRpbmcKLSMgZG93biB0byB0aGUgbG93ZXIgc2NvcGVzIHN1Y2ggYXMg
dG8gbWluaW1pemUgbnVtYmVyIG9mICJoaWdoIHNjb3BlIgotIyBzZXR1cHMgYW5kIHRlYXJkb3du
cwotCi1kZWYgcmVvcmRlcl9pdGVtcyhpdGVtcyk6Ci0gICAgYXJna2V5c19jYWNoZSA9IHt9Ci0g
ICAgZm9yIHNjb3BlbnVtIGluIHJhbmdlKDAsIHNjb3BlbnVtX2Z1bmN0aW9uKToKLSAgICAgICAg
YXJna2V5c19jYWNoZVtzY29wZW51bV0gPSBkID0ge30KLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRl
bXM6Ci0gICAgICAgICAgICBrZXlzID0gT3JkZXJlZERpY3QuZnJvbWtleXMoZ2V0X3BhcmFtZXRy
aXplZF9maXh0dXJlX2tleXMoaXRlbSwgc2NvcGVudW0pKQotICAgICAgICAgICAgaWYga2V5czoK
LSAgICAgICAgICAgICAgICBkW2l0ZW1dID0ga2V5cwotICAgIHJldHVybiByZW9yZGVyX2l0ZW1z
X2F0c2NvcGUoaXRlbXMsIHNldCgpLCBhcmdrZXlzX2NhY2hlLCAwKQotCi0KLWRlZiByZW9yZGVy
X2l0ZW1zX2F0c2NvcGUoaXRlbXMsIGlnbm9yZSwgYXJna2V5c19jYWNoZSwgc2NvcGVudW0pOgot
ICAgIGlmIHNjb3BlbnVtID49IHNjb3BlbnVtX2Z1bmN0aW9uIG9yIGxlbihpdGVtcykgPCAzOgot
ICAgICAgICByZXR1cm4gaXRlbXMKLSAgICBpdGVtc19kb25lID0gW10KLSAgICB3aGlsZSAxOgot
ICAgICAgICBpdGVtc19iZWZvcmUsIGl0ZW1zX3NhbWUsIGl0ZW1zX290aGVyLCBuZXdpZ25vcmUg
PSBcCi0gICAgICAgICAgICBzbGljZV9pdGVtcyhpdGVtcywgaWdub3JlLCBhcmdrZXlzX2NhY2hl
W3Njb3BlbnVtXSkKLSAgICAgICAgaXRlbXNfYmVmb3JlID0gcmVvcmRlcl9pdGVtc19hdHNjb3Bl
KAotICAgICAgICAgICAgaXRlbXNfYmVmb3JlLCBpZ25vcmUsIGFyZ2tleXNfY2FjaGUsIHNjb3Bl
bnVtICsgMSkKLSAgICAgICAgaWYgaXRlbXNfc2FtZSBpcyBOb25lOgotICAgICAgICAgICAgIyBu
b3RoaW5nIHRvIHJlb3JkZXIgaW4gdGhpcyBzY29wZQotICAgICAgICAgICAgYXNzZXJ0IGl0ZW1z
X290aGVyIGlzIE5vbmUKLSAgICAgICAgICAgIHJldHVybiBpdGVtc19kb25lICsgaXRlbXNfYmVm
b3JlCi0gICAgICAgIGl0ZW1zX2RvbmUuZXh0ZW5kKGl0ZW1zX2JlZm9yZSkKLSAgICAgICAgaXRl
bXMgPSBpdGVtc19zYW1lICsgaXRlbXNfb3RoZXIKLSAgICAgICAgaWdub3JlID0gbmV3aWdub3Jl
Ci0KLQotZGVmIHNsaWNlX2l0ZW1zKGl0ZW1zLCBpZ25vcmUsIHNjb3BlZF9hcmdrZXlzX2NhY2hl
KToKLSAgICAjIHdlIHBpY2sgdGhlIGZpcnN0IGl0ZW0gd2hpY2ggdXNlcyBhIGZpeHR1cmUgaW5z
dGFuY2UgaW4gdGhlCi0gICAgIyByZXF1ZXN0ZWQgc2NvcGUgYW5kIHdoaWNoIHdlIGhhdmVuJ3Qg
c2VlbiB5ZXQuICBXZSBzbGljZSB0aGUgaW5wdXQKLSAgICAjIGl0ZW1zIGxpc3QgaW50byBhIGxp
c3Qgb2YgaXRlbXNfbm9tYXRjaCwgaXRlbXNfc2FtZSBhbmQKLSAgICAjIGl0ZW1zX290aGVyCi0g
ICAgaWYgc2NvcGVkX2FyZ2tleXNfY2FjaGU6ICAjIGRvIHdlIG5lZWQgdG8gZG8gd29yayBhdCBh
bGw/Ci0gICAgICAgIGl0ID0gaXRlcihpdGVtcykKLSAgICAgICAgIyBmaXJzdCBmaW5kIGEgc2xp
Y2luZyBrZXkKLSAgICAgICAgZm9yIGksIGl0ZW0gaW4gZW51bWVyYXRlKGl0KToKLSAgICAgICAg
ICAgIGFyZ2tleXMgPSBzY29wZWRfYXJna2V5c19jYWNoZS5nZXQoaXRlbSkKLSAgICAgICAgICAg
IGlmIGFyZ2tleXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbmV3YXJna2V5cyA9IE9y
ZGVyZWREaWN0LmZyb21rZXlzKGsgZm9yIGsgaW4gYXJna2V5cyBpZiBrIG5vdCBpbiBpZ25vcmUp
Ci0gICAgICAgICAgICAgICAgaWYgbmV3YXJna2V5czogICMgZm91bmQgYSBzbGljaW5nIGtleQot
ICAgICAgICAgICAgICAgICAgICBzbGljaW5nX2FyZ2tleSwgXyA9IG5ld2FyZ2tleXMucG9waXRl
bSgpCi0gICAgICAgICAgICAgICAgICAgIGl0ZW1zX2JlZm9yZSA9IGl0ZW1zWzppXQotICAgICAg
ICAgICAgICAgICAgICBpdGVtc19zYW1lID0gW2l0ZW1dCi0gICAgICAgICAgICAgICAgICAgIGl0
ZW1zX290aGVyID0gW10KLSAgICAgICAgICAgICAgICAgICAgIyBub3cgc2xpY2UgdGhlIHJlbWFp
bmRlciBvZiB0aGUgbGlzdAotICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ2tleXMgPSBzY29wZWRfYXJna2V5c19jYWNoZS5nZXQo
aXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFyZ2tleXMgYW5kIHNsaWNpbmdfYXJn
a2V5IGluIGFyZ2tleXMgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xp
Y2luZ19hcmdrZXkgbm90IGluIGlnbm9yZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
dGVtc19zYW1lLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc19vdGhlci5hcHBlbmQoaXRlbSkKLSAgICAg
ICAgICAgICAgICAgICAgbmV3aWdub3JlID0gaWdub3JlLmNvcHkoKQotICAgICAgICAgICAgICAg
ICAgICBuZXdpZ25vcmUuYWRkKHNsaWNpbmdfYXJna2V5KQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKGl0ZW1zX2JlZm9yZSwgaXRlbXNfc2FtZSwgaXRlbXNfb3RoZXIsIG5ld2lnbm9yZSkK
LSAgICByZXR1cm4gaXRlbXMsIE5vbmUsIE5vbmUsIE5vbmUKLQotCi1kZWYgZmlsbGZpeHR1cmVz
KGZ1bmN0aW9uKToKLSAgICAiIiIgZmlsbCBtaXNzaW5nIGZ1bmNhcmdzIGZvciBhIHRlc3QgZnVu
Y3Rpb24uICIiIgotICAgIHRyeToKLSAgICAgICAgcmVxdWVzdCA9IGZ1bmN0aW9uLl9yZXF1ZXN0
Ci0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAjIFhYWCB0aGlzIHNwZWNpYWwg
Y29kZSBwYXRoIGlzIG9ubHkgZXhwZWN0ZWQgdG8gZXhlY3V0ZQotICAgICAgICAjIHdpdGggdGhl
IG9lanNraXQgcGx1Z2luLiAgSXQgdXNlcyBjbGFzc2VzIHdpdGggZnVuY2FyZ3MKLSAgICAgICAg
IyBhbmQgd2UgdGh1cyBoYXZlIHRvIHdvcmsgYSBiaXQgdG8gYWxsb3cgdGhpcy4KLSAgICAgICAg
Zm0gPSBmdW5jdGlvbi5zZXNzaW9uLl9maXh0dXJlbWFuYWdlcgotICAgICAgICBmaSA9IGZtLmdl
dGZpeHR1cmVpbmZvKGZ1bmN0aW9uLnBhcmVudCwgZnVuY3Rpb24ub2JqLCBOb25lKQotICAgICAg
ICBmdW5jdGlvbi5fZml4dHVyZWluZm8gPSBmaQotICAgICAgICByZXF1ZXN0ID0gZnVuY3Rpb24u
X3JlcXVlc3QgPSBGaXh0dXJlUmVxdWVzdChmdW5jdGlvbikKLSAgICAgICAgcmVxdWVzdC5fZmls
bGZpeHR1cmVzKCkKLSAgICAgICAgIyBwcnVuZSBvdXQgZnVuY2FyZ3MgZm9yIGpzdGVzdHMKLSAg
ICAgICAgbmV3ZnVuY2FyZ3MgPSB7fQotICAgICAgICBmb3IgbmFtZSBpbiBmaS5hcmduYW1lczoK
LSAgICAgICAgICAgIG5ld2Z1bmNhcmdzW25hbWVdID0gZnVuY3Rpb24uZnVuY2FyZ3NbbmFtZV0K
LSAgICAgICAgZnVuY3Rpb24uZnVuY2FyZ3MgPSBuZXdmdW5jYXJncwotICAgIGVsc2U6Ci0gICAg
ICAgIHJlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCi0KLQotZGVmIGdldF9kaXJlY3RfcGFyYW1fZml4
dHVyZV9mdW5jKHJlcXVlc3QpOgotICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCi0KLQotY2xhc3Mg
RnVuY0ZpeHR1cmVJbmZvOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmduYW1lcywgbmFtZXNf
Y2xvc3VyZSwgbmFtZTJmaXh0dXJlZGVmcyk6Ci0gICAgICAgIHNlbGYuYXJnbmFtZXMgPSBhcmdu
YW1lcwotICAgICAgICBzZWxmLm5hbWVzX2Nsb3N1cmUgPSBuYW1lc19jbG9zdXJlCi0gICAgICAg
IHNlbGYubmFtZTJmaXh0dXJlZGVmcyA9IG5hbWUyZml4dHVyZWRlZnMKLQotCi1jbGFzcyBGaXh0
dXJlUmVxdWVzdChGdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKLSAgICAiIiIgQSByZXF1ZXN0IGZv
ciBhIGZpeHR1cmUgZnJvbSBhIHRlc3Qgb3IgZml4dHVyZSBmdW5jdGlvbi4KLQotICAgIEEgcmVx
dWVzdCBvYmplY3QgZ2l2ZXMgYWNjZXNzIHRvIHRoZSByZXF1ZXN0aW5nIHRlc3QgY29udGV4dAot
ICAgIGFuZCBoYXMgYW4gb3B0aW9uYWwgYGBwYXJhbWBgIGF0dHJpYnV0ZSBpbiBjYXNlCi0gICAg
dGhlIGZpeHR1cmUgaXMgcGFyYW1ldHJpemVkIGluZGlyZWN0bHkuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcHlmdW5jaXRlbSk6Ci0gICAgICAgIHNlbGYuX3B5ZnVuY2l0ZW0g
PSBweWZ1bmNpdGVtCi0gICAgICAgICM6IGZpeHR1cmUgZm9yIHdoaWNoIHRoaXMgcmVxdWVzdCBp
cyBiZWluZyBwZXJmb3JtZWQKLSAgICAgICAgc2VsZi5maXh0dXJlbmFtZSA9IE5vbmUKLSAgICAg
ICAgIzogU2NvcGUgc3RyaW5nLCBvbmUgb2YgImZ1bmN0aW9uIiwgImNsYXNzIiwgIm1vZHVsZSIs
ICJzZXNzaW9uIgotICAgICAgICBzZWxmLnNjb3BlID0gImZ1bmN0aW9uIgotICAgICAgICBzZWxm
Ll9maXh0dXJlX3ZhbHVlcyA9IHt9ICAjIGFyZ25hbWUgLT4gZml4dHVyZSB2YWx1ZQotICAgICAg
ICBzZWxmLl9maXh0dXJlX2RlZnMgPSB7fSAgIyBhcmduYW1lIC0+IEZpeHR1cmVEZWYKLSAgICAg
ICAgZml4dHVyZWluZm8gPSBweWZ1bmNpdGVtLl9maXh0dXJlaW5mbwotICAgICAgICBzZWxmLl9h
cmcyZml4dHVyZWRlZnMgPSBmaXh0dXJlaW5mby5uYW1lMmZpeHR1cmVkZWZzLmNvcHkoKQotICAg
ICAgICBzZWxmLl9hcmcyaW5kZXggPSB7fQotICAgICAgICBzZWxmLl9maXh0dXJlbWFuYWdlciA9
IHB5ZnVuY2l0ZW0uc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLQotICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBmaXh0dXJlbmFtZXMoc2VsZik6Ci0gICAgICAgICMgYmFja3dhcmQgaW5jb21wYXRpYmxl
IG5vdGU6IG5vdyBhIHJlYWRvbmx5IHByb3BlcnR5Ci0gICAgICAgIHJldHVybiBsaXN0KHNlbGYu
X3B5ZnVuY2l0ZW0uX2ZpeHR1cmVpbmZvLm5hbWVzX2Nsb3N1cmUpCi0KLSAgICBAcHJvcGVydHkK
LSAgICBkZWYgbm9kZShzZWxmKToKLSAgICAgICAgIiIiIHVuZGVybHlpbmcgY29sbGVjdGlvbiBu
b2RlIChkZXBlbmRzIG9uIGN1cnJlbnQgcmVxdWVzdCBzY29wZSkiIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2dldHNjb3BlaXRlbShzZWxmLnNjb3BlKQotCi0gICAgZGVmIF9nZXRuZXh0Zml4dHVy
ZWRlZihzZWxmLCBhcmduYW1lKToKLSAgICAgICAgZml4dHVyZWRlZnMgPSBzZWxmLl9hcmcyZml4
dHVyZWRlZnMuZ2V0KGFyZ25hbWUsIE5vbmUpCi0gICAgICAgIGlmIGZpeHR1cmVkZWZzIGlzIE5v
bmU6Ci0gICAgICAgICAgICAjIHdlIGFycml2ZSBoZXJlIGJlY2F1c2Ugb2YgYSAgYSBkeW5hbWlj
IGNhbGwgdG8KLSAgICAgICAgICAgICMgZ2V0Zml4dHVyZXZhbHVlKGFyZ25hbWUpIHVzYWdlIHdo
aWNoIHdhcyBuYXR1cmFsbHkKLSAgICAgICAgICAgICMgbm90IGtub3duIGF0IHBhcnNpbmcvY29s
bGVjdGlvbiB0aW1lCi0gICAgICAgICAgICBwYXJlbnRpZCA9IHNlbGYuX3B5ZnVuY2l0ZW0ucGFy
ZW50Lm5vZGVpZAotICAgICAgICAgICAgZml4dHVyZWRlZnMgPSBzZWxmLl9maXh0dXJlbWFuYWdl
ci5nZXRmaXh0dXJlZGVmcyhhcmduYW1lLCBwYXJlbnRpZCkKLSAgICAgICAgICAgIHNlbGYuX2Fy
ZzJmaXh0dXJlZGVmc1thcmduYW1lXSA9IGZpeHR1cmVkZWZzCi0gICAgICAgICMgZml4dHVyZWRl
ZnMgbGlzdCBpcyBpbW11dGFibGUgc28gd2UgbWFpbnRhaW4gYSBkZWNyZWFzaW5nIGluZGV4Ci0g
ICAgICAgIGluZGV4ID0gc2VsZi5fYXJnMmluZGV4LmdldChhcmduYW1lLCAwKSAtIDEKLSAgICAg
ICAgaWYgZml4dHVyZWRlZnMgaXMgTm9uZSBvciAoLWluZGV4ID4gbGVuKGZpeHR1cmVkZWZzKSk6
Ci0gICAgICAgICAgICByYWlzZSBGaXh0dXJlTG9va3VwRXJyb3IoYXJnbmFtZSwgc2VsZikKLSAg
ICAgICAgc2VsZi5fYXJnMmluZGV4W2FyZ25hbWVdID0gaW5kZXgKLSAgICAgICAgcmV0dXJuIGZp
eHR1cmVkZWZzW2luZGV4XQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGNvbmZpZyhzZWxmKToK
LSAgICAgICAgIiIiIHRoZSBweXRlc3QgY29uZmlnIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhp
cyByZXF1ZXN0LiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uY29uZmlnCi0K
LSAgICBAc2NvcGVwcm9wZXJ0eSgpCi0gICAgZGVmIGZ1bmN0aW9uKHNlbGYpOgotICAgICAgICAi
IiIgdGVzdCBmdW5jdGlvbiBvYmplY3QgaWYgdGhlIHJlcXVlc3QgaGFzIGEgcGVyLWZ1bmN0aW9u
IHNjb3BlLiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0ub2JqCi0KLSAgICBA
c2NvcGVwcm9wZXJ0eSgiY2xhc3MiKQotICAgIGRlZiBjbHMoc2VsZik6Ci0gICAgICAgICIiIiBj
bGFzcyAoY2FuIGJlIE5vbmUpIHdoZXJlIHRoZSB0ZXN0IGZ1bmN0aW9uIHdhcyBjb2xsZWN0ZWQu
ICIiIgotICAgICAgICBjbHNjb2wgPSBzZWxmLl9weWZ1bmNpdGVtLmdldHBhcmVudChfcHl0ZXN0
LnB5dGhvbi5DbGFzcykKLSAgICAgICAgaWYgY2xzY29sOgotICAgICAgICAgICAgcmV0dXJuIGNs
c2NvbC5vYmoKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBpbnN0YW5jZShzZWxmKToKLSAgICAg
ICAgIiIiIGluc3RhbmNlIChjYW4gYmUgTm9uZSkgb24gd2hpY2ggdGVzdCBmdW5jdGlvbiB3YXMg
Y29sbGVjdGVkLiAiIiIKLSAgICAgICAgIyB1bml0dGVzdCBzdXBwb3J0IGhhY2ssIHNlZSBfcHl0
ZXN0LnVuaXR0ZXN0LlRlc3RDYXNlRnVuY3Rpb24KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uX3Rlc3RjYXNlCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1
dGVFcnJvcjoKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2V0YXR0cihzZWxmLCAiZnVuY3Rpb24i
LCBOb25lKQotICAgICAgICAgICAgaWYgZnVuY3Rpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHB5LmJ1aWx0aW4uX2dldGltc2VsZihmdW5jdGlvbikKLQotICAgIEBzY29w
ZXByb3BlcnR5KCkKLSAgICBkZWYgbW9kdWxlKHNlbGYpOgotICAgICAgICAiIiIgcHl0aG9uIG1v
ZHVsZSBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4gIiIiCi0g
ICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVtLmdldHBhcmVudChfcHl0ZXN0LnB5dGhvbi5N
b2R1bGUpLm9iagotCi0gICAgQHNjb3BlcHJvcGVydHkoKQotICAgIGRlZiBmc3BhdGgoc2VsZik6
Ci0gICAgICAgICIiIiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCBvZiB0aGUgdGVzdCBtb2R1bGUgd2hp
Y2ggY29sbGVjdGVkIHRoaXMgdGVzdC4gIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNp
dGVtLmZzcGF0aAotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGtleXdvcmRzKHNlbGYpOgotICAg
ICAgICAiIiIga2V5d29yZHMvbWFya2VycyBkaWN0aW9uYXJ5IGZvciB0aGUgdW5kZXJseWluZyBu
b2RlLiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYubm9kZS5rZXl3b3JkcwotCi0gICAgQHByb3Bl
cnR5Ci0gICAgZGVmIHNlc3Npb24oc2VsZik6Ci0gICAgICAgICIiIiBweXRlc3Qgc2Vzc2lvbiBv
YmplY3QuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5zZXNzaW9uCi0KLSAg
ICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplcik6Ci0gICAgICAgICIiIiBhZGQgZmlu
YWxpemVyL3RlYXJkb3duIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUKLSAgICAgICAg
bGFzdCB0ZXN0IHdpdGhpbiB0aGUgcmVxdWVzdGluZyB0ZXN0IGNvbnRleHQgZmluaXNoZWQKLSAg
ICAgICAgZXhlY3V0aW9uLiAiIiIKLSAgICAgICAgIyBYWFggdXN1YWxseSB0aGlzIG1ldGhvZCBp
cyBzaGFkb3dlZCBieSBmaXh0dXJlZGVmIHNwZWNpZmljIG9uZXMKLSAgICAgICAgc2VsZi5fYWRk
ZmluYWxpemVyKGZpbmFsaXplciwgc2NvcGU9c2VsZi5zY29wZSkKLQotICAgIGRlZiBfYWRkZmlu
YWxpemVyKHNlbGYsIGZpbmFsaXplciwgc2NvcGUpOgotICAgICAgICBjb2xpdGVtID0gc2VsZi5f
Z2V0c2NvcGVpdGVtKHNjb3BlKQotICAgICAgICBzZWxmLl9weWZ1bmNpdGVtLnNlc3Npb24uX3Nl
dHVwc3RhdGUuYWRkZmluYWxpemVyKAotICAgICAgICAgICAgZmluYWxpemVyPWZpbmFsaXplciwg
Y29saXRlbT1jb2xpdGVtKQotCi0gICAgZGVmIGFwcGx5bWFya2VyKHNlbGYsIG1hcmtlcik6Ci0g
ICAgICAgICIiIiBBcHBseSBhIG1hcmtlciB0byBhIHNpbmdsZSB0ZXN0IGZ1bmN0aW9uIGludm9j
YXRpb24uCi0gICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3UgZG9uJ3Qgd2FudCB0
byBoYXZlIGEga2V5d29yZC9tYXJrZXIKLSAgICAgICAgb24gYWxsIGZ1bmN0aW9uIGludm9jYXRp
b25zLgotCi0gICAgICAgIDphcmcgbWFya2VyOiBhIDpweTpjbGFzczpgX3B5dGVzdC5tYXJrLk1h
cmtEZWNvcmF0b3JgIG9iamVjdAotICAgICAgICAgICAgY3JlYXRlZCBieSBhIGNhbGwgdG8gYGBw
eXRlc3QubWFyay5OQU1FKC4uLilgYC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYubm9kZS5rZXl3b3Jkc1ttYXJrZXIubWFya25hbWVdID0gbWFya2VyCi0gICAg
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
bWFya2VyKQotCi0gICAgZGVmIHJhaXNlZXJyb3Ioc2VsZiwgbXNnKToKLSAgICAgICAgIiIiIHJh
aXNlIGEgRml4dHVyZUxvb2t1cEVycm9yIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuICIiIgotICAg
ICAgICByYWlzZSBzZWxmLl9maXh0dXJlbWFuYWdlci5GaXh0dXJlTG9va3VwRXJyb3IoTm9uZSwg
c2VsZiwgbXNnKQotCi0gICAgZGVmIF9maWxsZml4dHVyZXMoc2VsZik6Ci0gICAgICAgIGl0ZW0g
PSBzZWxmLl9weWZ1bmNpdGVtCi0gICAgICAgIGZpeHR1cmVuYW1lcyA9IGdldGF0dHIoaXRlbSwg
ImZpeHR1cmVuYW1lcyIsIHNlbGYuZml4dHVyZW5hbWVzKQotICAgICAgICBmb3IgYXJnbmFtZSBp
biBmaXh0dXJlbmFtZXM6Ci0gICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBpbiBpdGVtLmZ1bmNh
cmdzOgotICAgICAgICAgICAgICAgIGl0ZW0uZnVuY2FyZ3NbYXJnbmFtZV0gPSBzZWxmLmdldGZp
eHR1cmV2YWx1ZShhcmduYW1lKQotCi0gICAgZGVmIGNhY2hlZF9zZXR1cChzZWxmLCBzZXR1cCwg
dGVhcmRvd249Tm9uZSwgc2NvcGU9Im1vZHVsZSIsIGV4dHJha2V5PU5vbmUpOgotICAgICAgICAi
IiIgKGRlcHJlY2F0ZWQpIFJldHVybiBhIHRlc3RpbmcgcmVzb3VyY2UgbWFuYWdlZCBieSBgYHNl
dHVwYGAgJgotICAgICAgICBgYHRlYXJkb3duYGAgY2FsbHMuICBgYHNjb3BlYGAgYW5kIGBgZXh0
cmFrZXlgYCBkZXRlcm1pbmUgd2hlbiB0aGUKLSAgICAgICAgYGB0ZWFyZG93bmBgIGZ1bmN0aW9u
IHdpbGwgYmUgY2FsbGVkIHNvIHRoYXQgc3Vic2VxdWVudCBjYWxscyB0bwotICAgICAgICBgYHNl
dHVwYGAgd291bGQgcmVjcmVhdGUgdGhlIHJlc291cmNlLiAgV2l0aCBweXRlc3QtMi4zIHlvdSBv
ZnRlbgotICAgICAgICBkbyBub3QgbmVlZCBgYGNhY2hlZF9zZXR1cCgpYGAgYXMgeW91IGNhbiBk
aXJlY3RseSBkZWNsYXJlIGEgc2NvcGUKLSAgICAgICAgb24gYSBmaXh0dXJlIGZ1bmN0aW9uIGFu
ZCByZWdpc3RlciBhIGZpbmFsaXplciB0aHJvdWdoCi0gICAgICAgIGBgcmVxdWVzdC5hZGRmaW5h
bGl6ZXIoKWBgLgotCi0gICAgICAgIDphcmcgdGVhcmRvd246IGZ1bmN0aW9uIHJlY2VpdmluZyBh
IHByZXZpb3VzbHkgc2V0dXAgcmVzb3VyY2UuCi0gICAgICAgIDphcmcgc2V0dXA6IGEgbm8tYXJn
dW1lbnQgZnVuY3Rpb24gY3JlYXRpbmcgYSByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBzY29wZTog
YSBzdHJpbmcgdmFsdWUgb3V0IG9mIGBgZnVuY3Rpb25gYCwgYGBjbGFzc2BgLCBgYG1vZHVsZWBg
Ci0gICAgICAgICAgICBvciBgYHNlc3Npb25gYCBpbmRpY2F0aW5nIHRoZSBjYWNoaW5nIGxpZmVj
eWNsZSBvZiB0aGUgcmVzb3VyY2UuCi0gICAgICAgIDphcmcgZXh0cmFrZXk6IGFkZGVkIHRvIGlu
dGVybmFsIGNhY2hpbmcga2V5IG9mIChmdW5jYXJnbmFtZSwgc2NvcGUpLgotICAgICAgICAiIiIK
LSAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5jb25maWcsICdfc2V0dXBjYWNoZScpOgotICAg
ICAgICAgICAgc2VsZi5jb25maWcuX3NldHVwY2FjaGUgPSB7fSAgIyBYWFggd2Vha3JlZj8KLSAg
ICAgICAgY2FjaGVrZXkgPSAoc2VsZi5maXh0dXJlbmFtZSwgc2VsZi5fZ2V0c2NvcGVpdGVtKHNj
b3BlKSwgZXh0cmFrZXkpCi0gICAgICAgIGNhY2hlID0gc2VsZi5jb25maWcuX3NldHVwY2FjaGUK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdmFsID0gY2FjaGVbY2FjaGVrZXldCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3Njb3BlKHNlbGYuZml4
dHVyZW5hbWUsIHNlbGYuc2NvcGUsIHNjb3BlKQotICAgICAgICAgICAgdmFsID0gc2V0dXAoKQot
ICAgICAgICAgICAgY2FjaGVbY2FjaGVrZXldID0gdmFsCi0gICAgICAgICAgICBpZiB0ZWFyZG93
biBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkZWYgZmluYWxpemVyKCk6Ci0gICAgICAg
ICAgICAgICAgICAgIGRlbCBjYWNoZVtjYWNoZWtleV0KLSAgICAgICAgICAgICAgICAgICAgdGVh
cmRvd24odmFsKQotICAgICAgICAgICAgICAgIHNlbGYuX2FkZGZpbmFsaXplcihmaW5hbGl6ZXIs
IHNjb3BlPXNjb3BlKQotICAgICAgICByZXR1cm4gdmFsCi0KLSAgICBkZWYgZ2V0Zml4dHVyZXZh
bHVlKHNlbGYsIGFyZ25hbWUpOgotICAgICAgICAiIiIgRHluYW1pY2FsbHkgcnVuIGEgbmFtZWQg
Zml4dHVyZSBmdW5jdGlvbi4KLQotICAgICAgICBEZWNsYXJpbmcgZml4dHVyZXMgdmlhIGZ1bmN0
aW9uIGFyZ3VtZW50IGlzIHJlY29tbWVuZGVkIHdoZXJlIHBvc3NpYmxlLgotICAgICAgICBCdXQg
aWYgeW91IGNhbiBvbmx5IGRlY2lkZSB3aGV0aGVyIHRvIHVzZSBhbm90aGVyIGZpeHR1cmUgYXQg
dGVzdAotICAgICAgICBzZXR1cCB0aW1lLCB5b3UgbWF5IHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJl
dHJpZXZlIGl0IGluc2lkZSBhIGZpeHR1cmUKLSAgICAgICAgb3IgdGVzdCBmdW5jdGlvbiBib2R5
LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9hY3RpdmVfZml4dHVyZWRl
ZihhcmduYW1lKS5jYWNoZWRfcmVzdWx0WzBdCi0KLSAgICBkZWYgZ2V0ZnVuY2FyZ3ZhbHVlKHNl
bGYsIGFyZ25hbWUpOgotICAgICAgICAiIiIgRGVwcmVjYXRlZCwgdXNlIGdldGZpeHR1cmV2YWx1
ZS4gIiIiCi0gICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRlZAotICAgICAgICB3
YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgZGVwcmVjYXRlZC5HRVRGVU5DQVJHVkFMVUUsCi0g
ICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICBzdGFja2xldmVsPTIp
Ci0gICAgICAgIHJldHVybiBzZWxmLmdldGZpeHR1cmV2YWx1ZShhcmduYW1lKQotCi0gICAgZGVm
IF9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoc2VsZiwgYXJnbmFtZSk6Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9maXh0dXJlX2RlZnNbYXJnbmFtZV0KLSAgICAgICAgZXhj
ZXB0IEtleUVycm9yOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZpeHR1cmVk
ZWYgPSBzZWxmLl9nZXRuZXh0Zml4dHVyZWRlZihhcmduYW1lKQotICAgICAgICAgICAgZXhjZXB0
IEZpeHR1cmVMb29rdXBFcnJvcjoKLSAgICAgICAgICAgICAgICBpZiBhcmduYW1lID09ICJyZXF1
ZXN0IjoKLSAgICAgICAgICAgICAgICAgICAgY2xhc3MgUHNldWRvRml4dHVyZURlZjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNhY2hlZF9yZXN1bHQgPSAoc2VsZiwgWzBdLCBOb25lKQotICAg
ICAgICAgICAgICAgICAgICAgICAgc2NvcGUgPSAiZnVuY3Rpb24iCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBQc2V1ZG9GaXh0dXJlRGVmCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAg
ICAgIyByZW1vdmUgaW5kZW50IHRvIHByZXZlbnQgdGhlIHB5dGhvbjMgZXhjZXB0aW9uCi0gICAg
ICAgICMgZnJvbSBsZWFraW5nIGludG8gdGhlIGNhbGwKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5f
Z2V0Zml4dHVyZXZhbHVlKGZpeHR1cmVkZWYpCi0gICAgICAgIHNlbGYuX2ZpeHR1cmVfdmFsdWVz
W2FyZ25hbWVdID0gcmVzdWx0Ci0gICAgICAgIHNlbGYuX2ZpeHR1cmVfZGVmc1thcmduYW1lXSA9
IGZpeHR1cmVkZWYKLSAgICAgICAgcmV0dXJuIGZpeHR1cmVkZWYKLQotICAgIGRlZiBfZ2V0X2Zp
eHR1cmVzdGFjayhzZWxmKToKLSAgICAgICAgY3VycmVudCA9IHNlbGYKLSAgICAgICAgdmFsdWVz
ID0gW10KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIGZpeHR1cmVkZWYgPSBnZXRhdHRy
KGN1cnJlbnQsICJfZml4dHVyZWRlZiIsIE5vbmUpCi0gICAgICAgICAgICBpZiBmaXh0dXJlZGVm
IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLnJldmVyc2UoKQotICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZXMKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZml4dHVyZWRlZikK
LSAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Ll9wYXJlbnRfcmVxdWVzdAotCi0gICAgZGVm
IF9nZXRmaXh0dXJldmFsdWUoc2VsZiwgZml4dHVyZWRlZik6Ci0gICAgICAgICMgcHJlcGFyZSBh
IHN1YnJlcXVlc3Qgb2JqZWN0IGJlZm9yZSBjYWxsaW5nIGZpeHR1cmUgZnVuY3Rpb24KLSAgICAg
ICAgIyAobGF0dGVyIG1hbmFnZWQgYnkgZml4dHVyZWRlZikKLSAgICAgICAgYXJnbmFtZSA9IGZp
eHR1cmVkZWYuYXJnbmFtZQotICAgICAgICBmdW5jaXRlbSA9IHNlbGYuX3B5ZnVuY2l0ZW0KLSAg
ICAgICAgc2NvcGUgPSBmaXh0dXJlZGVmLnNjb3BlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHBhcmFtID0gZnVuY2l0ZW0uY2FsbHNwZWMuZ2V0cGFyYW0oYXJnbmFtZSkKLSAgICAgICAgZXhj
ZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBwYXJhbSA9IE5P
VFNFVAotICAgICAgICAgICAgcGFyYW1faW5kZXggPSAwCi0gICAgICAgICAgICBpZiBmaXh0dXJl
ZGVmLnBhcmFtcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBmcmFtZSA9IGluc3BlY3Qu
c3RhY2soKVszXQotICAgICAgICAgICAgICAgIGZyYW1laW5mbyA9IGluc3BlY3QuZ2V0ZnJhbWVp
bmZvKGZyYW1lWzBdKQotICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gZnJhbWVpbmZvLmZp
bGVuYW1lCi0gICAgICAgICAgICAgICAgc291cmNlX2xpbmVubyA9IGZyYW1laW5mby5saW5lbm8K
LSAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCA9IHB5LnBhdGgubG9jYWwoc291cmNlX3BhdGgp
Ci0gICAgICAgICAgICAgICAgaWYgc291cmNlX3BhdGgucmVsdG8oZnVuY2l0ZW0uY29uZmlnLnJv
b3RkaXIpOgotICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9wYXRoLnJl
bHRvKGZ1bmNpdGVtLmNvbmZpZy5yb290ZGlyKQotICAgICAgICAgICAgICAgIG1zZyA9ICgKLSAg
ICAgICAgICAgICAgICAgICAgIlRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1ldGVy
IGRlZmluZWQgZm9yIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICJjdXJyZW50IHRlc3QuXG5c
blJlcXVlc3RlZCBmaXh0dXJlICd7MH0nIGRlZmluZWQgaW46XG57MX0iCi0gICAgICAgICAgICAg
ICAgICAgICJcblxuUmVxdWVzdGVkIGhlcmU6XG57Mn06ezN9Ii5mb3JtYXQoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmaXh0dXJlZGVmLmFyZ25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBnZXRsb2NhdGlvbihmaXh0dXJlZGVmLmZ1bmMsIGZ1bmNpdGVtLmNvbmZpZy5yb290ZGlyKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlX2xpbmVubywKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
ICAgICkKLSAgICAgICAgICAgICAgICBmYWlsKG1zZykKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICMgaW5kaWNlcyBtaWdodCBub3QgYmUgc2V0IGlmIG9sZC1zdHlsZSBtZXRhZnVuYy5hZGRj
YWxsKCkgd2FzIHVzZWQKLSAgICAgICAgICAgIHBhcmFtX2luZGV4ID0gZnVuY2l0ZW0uY2FsbHNw
ZWMuaW5kaWNlcy5nZXQoYXJnbmFtZSwgMCkKLSAgICAgICAgICAgICMgaWYgYSBwYXJhbWV0cml6
ZSBpbnZvY2F0aW9uIHNldCBhIHNjb3BlIGl0IHdpbGwgb3ZlcnJpZGUKLSAgICAgICAgICAgICMg
dGhlIHN0YXRpYyBzY29wZSBkZWZpbmVkIHdpdGggdGhlIGZpeHR1cmUgZnVuY3Rpb24KLSAgICAg
ICAgICAgIHBhcmFtc2NvcGVudW0gPSBmdW5jaXRlbS5jYWxsc3BlYy5fYXJnMnNjb3BlbnVtLmdl
dChhcmduYW1lKQotICAgICAgICAgICAgaWYgcGFyYW1zY29wZW51bSBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgICAgICBzY29wZSA9IHNjb3Blc1twYXJhbXNjb3BlbnVtXQotCi0gICAgICAgIHN1
YnJlcXVlc3QgPSBTdWJSZXF1ZXN0KHNlbGYsIHNjb3BlLCBwYXJhbSwgcGFyYW1faW5kZXgsIGZp
eHR1cmVkZWYpCi0KLSAgICAgICAgIyBjaGVjayBpZiBhIGhpZ2hlci1sZXZlbCBzY29wZWQgZml4
dHVyZSBhY2Nlc3NlcyBhIGxvd2VyIGxldmVsIG9uZQotICAgICAgICBzdWJyZXF1ZXN0Ll9jaGVj
a19zY29wZShhcmduYW1lLCBzZWxmLnNjb3BlLCBzY29wZSkKLQotICAgICAgICAjIGNsZWFyIHN5
cy5leGNfaW5mbyBiZWZvcmUgaW52b2tpbmcgdGhlIGZpeHR1cmUgKHB5dGhvbiBidWc/KQotICAg
ICAgICAjIGlmIGl0cyBub3QgZXhwbGljaXRseSBjbGVhcmVkIGl0IHdpbGwgbGVhayBpbnRvIHRo
ZSBjYWxsCi0gICAgICAgIGV4Y19jbGVhcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
Y2FsbCB0aGUgZml4dHVyZSBmdW5jdGlvbgotICAgICAgICAgICAgdmFsID0gZml4dHVyZWRlZi5l
eGVjdXRlKHJlcXVlc3Q9c3VicmVxdWVzdCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
ICMgaWYgZml4dHVyZSBmdW5jdGlvbiBmYWlsZWQgaXQgbWlnaHQgaGF2ZSByZWdpc3RlcmVkIGZp
bmFsaXplcnMKLSAgICAgICAgICAgIHNlbGYuc2Vzc2lvbi5fc2V0dXBzdGF0ZS5hZGRmaW5hbGl6
ZXIoZnVuY3Rvb2xzLnBhcnRpYWwoZml4dHVyZWRlZi5maW5pc2gsIHJlcXVlc3Q9c3VicmVxdWVz
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
YnJlcXVlc3Qubm9kZSkKLSAgICAgICAgcmV0dXJuIHZhbAotCi0gICAgZGVmIF9jaGVja19zY29w
ZShzZWxmLCBhcmduYW1lLCBpbnZva2luZ19zY29wZSwgcmVxdWVzdGVkX3Njb3BlKToKLSAgICAg
ICAgaWYgYXJnbmFtZSA9PSAicmVxdWVzdCI6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
aWYgc2NvcGVtaXNtYXRjaChpbnZva2luZ19zY29wZSwgcmVxdWVzdGVkX3Njb3BlKToKLSAgICAg
ICAgICAgICMgdHJ5IHRvIHJlcG9ydCBzb21ldGhpbmcgaGVscGZ1bAotICAgICAgICAgICAgbGlu
ZXMgPSBzZWxmLl9mYWN0b3J5dHJhY2ViYWNrKCkKLSAgICAgICAgICAgIGZhaWwoIlNjb3BlTWlz
bWF0Y2g6IFlvdSB0cmllZCB0byBhY2Nlc3MgdGhlICVyIHNjb3BlZCAiCi0gICAgICAgICAgICAg
ICAgICJmaXh0dXJlICVyIHdpdGggYSAlciBzY29wZWQgcmVxdWVzdCBvYmplY3QsICIKLSAgICAg
ICAgICAgICAgICAgImludm9sdmVkIGZhY3Rvcmllc1xuJXMiICUgKAotICAgICAgICAgICAgICAg
ICAgICAgKHJlcXVlc3RlZF9zY29wZSwgYXJnbmFtZSwgaW52b2tpbmdfc2NvcGUsICJcbiIuam9p
bihsaW5lcykpKSwKLSAgICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSkKLQotICAgIGRlZiBf
ZmFjdG9yeXRyYWNlYmFjayhzZWxmKToKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBmb3Ig
Zml4dHVyZWRlZiBpbiBzZWxmLl9nZXRfZml4dHVyZXN0YWNrKCk6Ci0gICAgICAgICAgICBmYWN0
b3J5ID0gZml4dHVyZWRlZi5mdW5jCi0gICAgICAgICAgICBmcywgbGluZW5vID0gZ2V0ZnNsaW5l
bm8oZmFjdG9yeSkKLSAgICAgICAgICAgIHAgPSBzZWxmLl9weWZ1bmNpdGVtLnNlc3Npb24uZnNw
YXRoLmJlc3RyZWxwYXRoKGZzKQotICAgICAgICAgICAgYXJncyA9IF9mb3JtYXRfYXJncyhmYWN0
b3J5KQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIlczolZDogIGRlZiAlcyVzIiAlICgKLSAg
ICAgICAgICAgICAgICBwLCBsaW5lbm8sIGZhY3RvcnkuX19uYW1lX18sIGFyZ3MpKQotICAgICAg
ICByZXR1cm4gbGluZXMKLQotICAgIGRlZiBfZ2V0c2NvcGVpdGVtKHNlbGYsIHNjb3BlKToKLSAg
ICAgICAgaWYgc2NvcGUgPT0gImZ1bmN0aW9uIjoKLSAgICAgICAgICAgICMgdGhpcyBtaWdodCBh
bHNvIGJlIGEgbm9uLWZ1bmN0aW9uIEl0ZW0gZGVzcGl0ZSBpdHMgYXR0cmlidXRlIG5hbWUKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVtCi0gICAgICAgIG5vZGUgPSBnZXRfc2Nv
cGVfbm9kZShzZWxmLl9weWZ1bmNpdGVtLCBzY29wZSkKLSAgICAgICAgaWYgbm9kZSBpcyBOb25l
IGFuZCBzY29wZSA9PSAiY2xhc3MiOgotICAgICAgICAgICAgIyBmYWxsYmFjayB0byBmdW5jdGlv
biBpdGVtIGl0c2VsZgotICAgICAgICAgICAgbm9kZSA9IHNlbGYuX3B5ZnVuY2l0ZW0KLSAgICAg
ICAgYXNzZXJ0IG5vZGUsICdDb3VsZCBub3Qgb2J0YWluIGEgbm9kZSBmb3Igc2NvcGUgInt9IiBm
b3IgZnVuY3Rpb24geyFyfScuZm9ybWF0KHNjb3BlLCBzZWxmLl9weWZ1bmNpdGVtKQotICAgICAg
ICByZXR1cm4gbm9kZQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4g
IjxGaXh0dXJlUmVxdWVzdCBmb3IgJXI+IiAlIChzZWxmLm5vZGUpCi0KLQotY2xhc3MgU3ViUmVx
dWVzdChGaXh0dXJlUmVxdWVzdCk6Ci0gICAgIiIiIGEgc3ViIHJlcXVlc3QgZm9yIGhhbmRsaW5n
IGdldHRpbmcgYSBmaXh0dXJlIGZyb20gYQotICAgIHRlc3QgZnVuY3Rpb24vZml4dHVyZS4gIiIi
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgc2NvcGUsIHBhcmFtLCBwYXJhbV9p
bmRleCwgZml4dHVyZWRlZik6Ci0gICAgICAgIHNlbGYuX3BhcmVudF9yZXF1ZXN0ID0gcmVxdWVz
dAotICAgICAgICBzZWxmLmZpeHR1cmVuYW1lID0gZml4dHVyZWRlZi5hcmduYW1lCi0gICAgICAg
IGlmIHBhcmFtIGlzIG5vdCBOT1RTRVQ6Ci0gICAgICAgICAgICBzZWxmLnBhcmFtID0gcGFyYW0K
LSAgICAgICAgc2VsZi5wYXJhbV9pbmRleCA9IHBhcmFtX2luZGV4Ci0gICAgICAgIHNlbGYuc2Nv
cGUgPSBzY29wZQotICAgICAgICBzZWxmLl9maXh0dXJlZGVmID0gZml4dHVyZWRlZgotICAgICAg
ICBzZWxmLl9weWZ1bmNpdGVtID0gcmVxdWVzdC5fcHlmdW5jaXRlbQotICAgICAgICBzZWxmLl9m
aXh0dXJlX3ZhbHVlcyA9IHJlcXVlc3QuX2ZpeHR1cmVfdmFsdWVzCi0gICAgICAgIHNlbGYuX2Zp
eHR1cmVfZGVmcyA9IHJlcXVlc3QuX2ZpeHR1cmVfZGVmcwotICAgICAgICBzZWxmLl9hcmcyZml4
dHVyZWRlZnMgPSByZXF1ZXN0Ll9hcmcyZml4dHVyZWRlZnMKLSAgICAgICAgc2VsZi5fYXJnMmlu
ZGV4ID0gcmVxdWVzdC5fYXJnMmluZGV4Ci0gICAgICAgIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyID0g
cmVxdWVzdC5fZml4dHVyZW1hbmFnZXIKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuICI8U3ViUmVxdWVzdCAlciBmb3IgJXI+IiAlIChzZWxmLmZpeHR1cmVuYW1lLCBz
ZWxmLl9weWZ1bmNpdGVtKQotCi0gICAgZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXIp
OgotICAgICAgICBzZWxmLl9maXh0dXJlZGVmLmFkZGZpbmFsaXplcihmaW5hbGl6ZXIpCi0KLQot
Y2xhc3MgU2NvcGVNaXNtYXRjaEVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiIEEgZml4dHVyZSBm
dW5jdGlvbiB0cmllcyB0byB1c2UgYSBkaWZmZXJlbnQgZml4dHVyZSBmdW5jdGlvbiB3aGljaAot
ICAgIHdoaWNoIGhhcyBhIGxvd2VyIHNjb3BlIChlLmcuIGEgU2Vzc2lvbiBvbmUgY2FsbHMgYSBm
dW5jdGlvbiBvbmUpCi0gICAgIiIiCi0KLQotc2NvcGVzID0gInNlc3Npb24gbW9kdWxlIGNsYXNz
IGZ1bmN0aW9uIi5zcGxpdCgpCi1zY29wZW51bV9mdW5jdGlvbiA9IHNjb3Blcy5pbmRleCgiZnVu
Y3Rpb24iKQotCi0KLWRlZiBzY29wZW1pc21hdGNoKGN1cnJlbnRzY29wZSwgbmV3c2NvcGUpOgot
ICAgIHJldHVybiBzY29wZXMuaW5kZXgobmV3c2NvcGUpID4gc2NvcGVzLmluZGV4KGN1cnJlbnRz
Y29wZSkKLQotCi1kZWYgc2NvcGUyaW5kZXgoc2NvcGUsIGRlc2NyLCB3aGVyZT1Ob25lKToKLSAg
ICAiIiJMb29rIHVwIHRoZSBpbmRleCBvZiBgYHNjb3BlYGAgYW5kIHJhaXNlIGEgZGVzY3JpcHRp
dmUgdmFsdWUgZXJyb3IKLSAgICBpZiBub3QgZGVmaW5lZC4KLSAgICAiIiIKLSAgICB0cnk6Ci0g
ICAgICAgIHJldHVybiBzY29wZXMuaW5kZXgoc2NvcGUpCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6
Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAiezB9IHsxfWhhcyBhbiB1
bnN1cHBvcnRlZCBzY29wZSB2YWx1ZSAnezJ9JyIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGRl
c2NyLCAnZnJvbSB7MH0gJy5mb3JtYXQod2hlcmUpIGlmIHdoZXJlIGVsc2UgJycsCi0gICAgICAg
ICAgICAgICAgc2NvcGUpCi0gICAgICAgICkKLQotCi1jbGFzcyBGaXh0dXJlTG9va3VwRXJyb3Io
TG9va3VwRXJyb3IpOgotICAgICIiIiBjb3VsZCBub3QgcmV0dXJuIGEgcmVxdWVzdGVkIEZpeHR1
cmUgKG1pc3Npbmcgb3IgaW52YWxpZCkuICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFy
Z25hbWUsIHJlcXVlc3QsIG1zZz1Ob25lKToKLSAgICAgICAgc2VsZi5hcmduYW1lID0gYXJnbmFt
ZQotICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuZml4dHVyZXN0
YWNrID0gcmVxdWVzdC5fZ2V0X2ZpeHR1cmVzdGFjaygpCi0gICAgICAgIHNlbGYubXNnID0gbXNn
Ci0KLSAgICBkZWYgZm9ybWF0cmVwcihzZWxmKToKLSAgICAgICAgdGJsaW5lcyA9IFtdCi0gICAg
ICAgIGFkZGxpbmUgPSB0YmxpbmVzLmFwcGVuZAotICAgICAgICBzdGFjayA9IFtzZWxmLnJlcXVl
c3QuX3B5ZnVuY2l0ZW0ub2JqXQotICAgICAgICBzdGFjay5leHRlbmQobWFwKGxhbWJkYSB4OiB4
LmZ1bmMsIHNlbGYuZml4dHVyZXN0YWNrKSkKLSAgICAgICAgbXNnID0gc2VsZi5tc2cKLSAgICAg
ICAgaWYgbXNnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyB0aGUgbGFzdCBmaXh0dXJlIHJh
aXNlIGFuIGVycm9yLCBsZXQncyBwcmVzZW50Ci0gICAgICAgICAgICAjIGl0IGF0IHRoZSByZXF1
ZXN0aW5nIHNpZGUKLSAgICAgICAgICAgIHN0YWNrID0gc3RhY2tbOi0xXQotICAgICAgICBmb3Ig
ZnVuY3Rpb24gaW4gc3RhY2s6Ci0gICAgICAgICAgICBmc3BhdGgsIGxpbmVubyA9IGdldGZzbGlu
ZW5vKGZ1bmN0aW9uKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxpbmVzLCBf
ID0gaW5zcGVjdC5nZXRzb3VyY2VsaW5lcyhnZXRfcmVhbF9mdW5jKGZ1bmN0aW9uKSkKLSAgICAg
ICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgSW5kZXhFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAg
ICAgICAgICBlcnJvcl9tc2cgPSAiZmlsZSAlcywgbGluZSAlczogc291cmNlIGNvZGUgbm90IGF2
YWlsYWJsZSIKLSAgICAgICAgICAgICAgICBhZGRsaW5lKGVycm9yX21zZyAlIChmc3BhdGgsIGxp
bmVubyArIDEpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhZGRsaW5lKCJm
aWxlICVzLCBsaW5lICVzIiAlIChmc3BhdGgsIGxpbmVubyArIDEpKQotICAgICAgICAgICAgICAg
IGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIGxp
bmUgPSBsaW5lLnJzdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgIGFkZGxpbmUoIiAgIiArIGxp
bmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnZGVm
Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG1zZyBpcyBO
b25lOgotICAgICAgICAgICAgZm0gPSBzZWxmLnJlcXVlc3QuX2ZpeHR1cmVtYW5hZ2VyCi0gICAg
ICAgICAgICBhdmFpbGFibGUgPSBbXQotICAgICAgICAgICAgcGFyZW50aWQgPSBzZWxmLnJlcXVl
c3QuX3B5ZnVuY2l0ZW0ucGFyZW50Lm5vZGVpZAotICAgICAgICAgICAgZm9yIG5hbWUsIGZpeHR1
cmVkZWZzIGluIGZtLl9hcmcyZml4dHVyZWRlZnMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBm
YWNsaXN0ID0gbGlzdChmbS5fbWF0Y2hmYWN0b3JpZXMoZml4dHVyZWRlZnMsIHBhcmVudGlkKSkK
LSAgICAgICAgICAgICAgICBpZiBmYWNsaXN0IGFuZCBuYW1lIG5vdCBpbiBhdmFpbGFibGU6Ci0g
ICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZS5hcHBlbmQobmFtZSkKLSAgICAgICAgICAgIG1z
ZyA9ICJmaXh0dXJlICVyIG5vdCBmb3VuZCIgJSAoc2VsZi5hcmduYW1lLCkKLSAgICAgICAgICAg
IG1zZyArPSAiXG4gYXZhaWxhYmxlIGZpeHR1cmVzOiAlcyIgJSAoIiwgIi5qb2luKHNvcnRlZChh
dmFpbGFibGUpKSwpCi0gICAgICAgICAgICBtc2cgKz0gIlxuIHVzZSAncHl0ZXN0IC0tZml4dHVy
ZXMgW3Rlc3RwYXRoXScgZm9yIGhlbHAgb24gdGhlbS4iCi0KLSAgICAgICAgcmV0dXJuIEZpeHR1
cmVMb29rdXBFcnJvclJlcHIoZnNwYXRoLCBsaW5lbm8sIHRibGluZXMsIG1zZywgc2VsZi5hcmdu
YW1lKQotCi0KLWNsYXNzIEZpeHR1cmVMb29rdXBFcnJvclJlcHIoVGVybWluYWxSZXByKToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIGZpcnN0bGluZW5vLCB0YmxpbmVzLCBlcnJv
cnN0cmluZywgYXJnbmFtZSk6Ci0gICAgICAgIHNlbGYudGJsaW5lcyA9IHRibGluZXMKLSAgICAg
ICAgc2VsZi5lcnJvcnN0cmluZyA9IGVycm9yc3RyaW5nCi0gICAgICAgIHNlbGYuZmlsZW5hbWUg
PSBmaWxlbmFtZQotICAgICAgICBzZWxmLmZpcnN0bGluZW5vID0gZmlyc3RsaW5lbm8KLSAgICAg
ICAgc2VsZi5hcmduYW1lID0gYXJnbmFtZQotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcp
OgotICAgICAgICAjIHR3LmxpbmUoIkZpeHR1cmVMb29rdXBFcnJvcjogJXMiICUoc2VsZi5hcmdu
YW1lKSwgcmVkPVRydWUpCi0gICAgICAgIGZvciB0YmxpbmUgaW4gc2VsZi50YmxpbmVzOgotICAg
ICAgICAgICAgdHcubGluZSh0YmxpbmUucnN0cmlwKCkpCi0gICAgICAgIGxpbmVzID0gc2VsZi5l
cnJvcnN0cmluZy5zcGxpdCgiXG4iKQotICAgICAgICBpZiBsaW5lczoKLSAgICAgICAgICAgIHR3
LmxpbmUoJ3swfSAgICAgICB7MX0nLmZvcm1hdChGb3JtYXR0ZWRFeGNpbmZvLmZhaWxfbWFya2Vy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzWzBdLnN0
cmlwKCkpLCByZWQ9VHJ1ZSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzWzE6XToKLSAg
ICAgICAgICAgICAgICB0dy5saW5lKCd7MH0gICAgICAgezF9Jy5mb3JtYXQoRm9ybWF0dGVkRXhj
aW5mby5mbG93X21hcmtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGluZS5zdHJpcCgpKSwgcmVkPVRydWUpCi0gICAgICAgIHR3LmxpbmUoKQotICAg
ICAgICB0dy5saW5lKCIlczolZCIgJSAoc2VsZi5maWxlbmFtZSwgc2VsZi5maXJzdGxpbmVubyAr
IDEpKQotCi0KLWRlZiBmYWlsX2ZpeHR1cmVmdW5jKGZpeHR1cmVmdW5jLCBtc2cpOgotICAgIGZz
LCBsaW5lbm8gPSBnZXRmc2xpbmVubyhmaXh0dXJlZnVuYykKLSAgICBsb2NhdGlvbiA9ICIlczol
cyIgJSAoZnMsIGxpbmVubyArIDEpCi0gICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
Zml4dHVyZWZ1bmMpCi0gICAgZmFpbChtc2cgKyAiOlxuXG4iICsgc3RyKHNvdXJjZS5pbmRlbnQo
KSkgKyAiXG4iICsgbG9jYXRpb24sCi0gICAgICAgICBweXRyYWNlPUZhbHNlKQotCi0KLWRlZiBj
YWxsX2ZpeHR1cmVfZnVuYyhmaXh0dXJlZnVuYywgcmVxdWVzdCwga3dhcmdzKToKLSAgICB5aWVs
ZGN0eCA9IGlzX2dlbmVyYXRvcihmaXh0dXJlZnVuYykKLSAgICBpZiB5aWVsZGN0eDoKLSAgICAg
ICAgaXQgPSBmaXh0dXJlZnVuYygqKmt3YXJncykKLSAgICAgICAgcmVzID0gbmV4dChpdCkKLQot
ICAgICAgICBkZWYgdGVhcmRvd24oKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBuZXh0KGl0KQotICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmYWlsX2ZpeHR1
cmVmdW5jKGZpeHR1cmVmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInlp
ZWxkX2ZpeHR1cmUgZnVuY3Rpb24gaGFzIG1vcmUgdGhhbiBvbmUgJ3lpZWxkJyIpCi0KLSAgICAg
ICAgcmVxdWVzdC5hZGRmaW5hbGl6ZXIodGVhcmRvd24pCi0gICAgZWxzZToKLSAgICAgICAgcmVz
ID0gZml4dHVyZWZ1bmMoKiprd2FyZ3MpCi0gICAgcmV0dXJuIHJlcwotCi0KLWNsYXNzIEZpeHR1
cmVEZWY6Ci0gICAgIiIiIEEgY29udGFpbmVyIGZvciBhIGZhY3RvcnkgZGVmaW5pdGlvbi4gIiIi
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZml4dHVyZW1hbmFnZXIsIGJhc2VpZCwgYXJnbmFt
ZSwgZnVuYywgc2NvcGUsIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgdW5pdHRlc3Q9RmFsc2Us
IGlkcz1Ob25lKToKLSAgICAgICAgc2VsZi5fZml4dHVyZW1hbmFnZXIgPSBmaXh0dXJlbWFuYWdl
cgotICAgICAgICBzZWxmLmJhc2VpZCA9IGJhc2VpZCBvciAnJwotICAgICAgICBzZWxmLmhhc19s
b2NhdGlvbiA9IGJhc2VpZCBpcyBub3QgTm9uZQotICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCi0g
ICAgICAgIHNlbGYuYXJnbmFtZSA9IGFyZ25hbWUKLSAgICAgICAgc2VsZi5zY29wZSA9IHNjb3Bl
Ci0gICAgICAgIHNlbGYuc2NvcGVudW0gPSBzY29wZTJpbmRleCgKLSAgICAgICAgICAgIHNjb3Bl
IG9yICJmdW5jdGlvbiIsCi0gICAgICAgICAgICBkZXNjcj0nZml4dHVyZSB7MH0nLmZvcm1hdChm
dW5jLl9fbmFtZV9fKSwKLSAgICAgICAgICAgIHdoZXJlPWJhc2VpZAotICAgICAgICApCi0gICAg
ICAgIHNlbGYucGFyYW1zID0gcGFyYW1zCi0gICAgICAgIHNlbGYuYXJnbmFtZXMgPSBnZXRmdW5j
YXJnbmFtZXMoZnVuYywgaXNfbWV0aG9kPXVuaXR0ZXN0KQotICAgICAgICBzZWxmLnVuaXR0ZXN0
ID0gdW5pdHRlc3QKLSAgICAgICAgc2VsZi5pZHMgPSBpZHMKLSAgICAgICAgc2VsZi5fZmluYWxp
emVycyA9IFtdCi0KLSAgICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplcik6Ci0gICAg
ICAgIHNlbGYuX2ZpbmFsaXplcnMuYXBwZW5kKGZpbmFsaXplcikKLQotICAgIGRlZiBmaW5pc2go
c2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIGV4Y2VwdGlvbnMgPSBbXQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB3aGlsZSBzZWxmLl9maW5hbGl6ZXJzOgotICAgICAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IHNlbGYuX2ZpbmFsaXplcnMucG9wKCkKLSAgICAg
ICAgICAgICAgICAgICAgZnVuYygpCi0gICAgICAgICAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0g
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuYXBwZW5kKHN5cy5leGNfaW5mbygpKQotICAg
ICAgICAgICAgaWYgZXhjZXB0aW9uczoKLSAgICAgICAgICAgICAgICBlID0gZXhjZXB0aW9uc1sw
XQotICAgICAgICAgICAgICAgIGRlbCBleGNlcHRpb25zICAjIGVuc3VyZSB3ZSBkb24ndCBrZWVw
IGFsbCBmcmFtZXMgYWxpdmUgYmVjYXVzZSBvZiB0aGUgdHJhY2ViYWNrCi0gICAgICAgICAgICAg
ICAgcHkuYnVpbHRpbi5fcmVyYWlzZSgqZSkKLQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgaG9vayA9IHNlbGYuX2ZpeHR1cmVtYW5hZ2VyLnNlc3Npb24uZ2V0aG9va3Byb3h5KHJlcXVl
c3Qubm9kZS5mc3BhdGgpCi0gICAgICAgICAgICBob29rLnB5dGVzdF9maXh0dXJlX3Bvc3RfZmlu
YWxpemVyKGZpeHR1cmVkZWY9c2VsZiwgcmVxdWVzdD1yZXF1ZXN0KQotICAgICAgICAgICAgIyBl
dmVuIGlmIGZpbmFsaXphdGlvbiBmYWlscywgd2UgaW52YWxpZGF0ZQotICAgICAgICAgICAgIyB0
aGUgY2FjaGVkIGZpeHR1cmUgdmFsdWUgYW5kIHJlbW92ZQotICAgICAgICAgICAgIyBhbGwgZmlu
YWxpemVycyBiZWNhdXNlIHRoZXkgbWF5IGJlIGJvdW5kIG1ldGhvZHMgd2hpY2ggd2lsbAotICAg
ICAgICAgICAgIyBrZWVwIGluc3RhbmNlcyBhbGl2ZQotICAgICAgICAgICAgaWYgaGFzYXR0cihz
ZWxmLCAiY2FjaGVkX3Jlc3VsdCIpOgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNhY2hlZF9y
ZXN1bHQKLSAgICAgICAgICAgIHNlbGYuX2ZpbmFsaXplcnMgPSBbXQotCi0gICAgZGVmIGV4ZWN1
dGUoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICMgZ2V0IHJlcXVpcmVkIGFyZ3VtZW50cyBhbmQg
cmVnaXN0ZXIgb3VyIG93biBmaW5pc2goKQotICAgICAgICAjIHdpdGggdGhlaXIgZmluYWxpemF0
aW9uCi0gICAgICAgIGZvciBhcmduYW1lIGluIHNlbGYuYXJnbmFtZXM6Ci0gICAgICAgICAgICBm
aXh0dXJlZGVmID0gcmVxdWVzdC5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVmKGFyZ25hbWUpCi0gICAg
ICAgICAgICBpZiBhcmduYW1lICE9ICJyZXF1ZXN0IjoKLSAgICAgICAgICAgICAgICBmaXh0dXJl
ZGVmLmFkZGZpbmFsaXplcihmdW5jdG9vbHMucGFydGlhbChzZWxmLmZpbmlzaCwgcmVxdWVzdD1y
ZXF1ZXN0KSkKLQotICAgICAgICBteV9jYWNoZV9rZXkgPSByZXF1ZXN0LnBhcmFtX2luZGV4Ci0g
ICAgICAgIGNhY2hlZF9yZXN1bHQgPSBnZXRhdHRyKHNlbGYsICJjYWNoZWRfcmVzdWx0IiwgTm9u
ZSkKLSAgICAgICAgaWYgY2FjaGVkX3Jlc3VsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJl
c3VsdCwgY2FjaGVfa2V5LCBlcnIgPSBjYWNoZWRfcmVzdWx0Ci0gICAgICAgICAgICBpZiBteV9j
YWNoZV9rZXkgPT0gY2FjaGVfa2V5OgotICAgICAgICAgICAgICAgIGlmIGVyciBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICAgICAgcHkuYnVpbHRpbi5fcmVyYWlzZSgqZXJyKQotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAg
ICAgICAgICMgd2UgaGF2ZSBhIHByZXZpb3VzIGJ1dCBkaWZmZXJlbnRseSBwYXJhbWV0cml6ZWQg
Zml4dHVyZSBpbnN0YW5jZQotICAgICAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHRlYXIgaXQgZG93
biBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgb25lCi0gICAgICAgICAgICBzZWxmLmZpbmlzaChyZXF1
ZXN0KQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHNlbGYsICJjYWNoZWRfcmVzdWx0
IikKLQotICAgICAgICBob29rID0gc2VsZi5fZml4dHVyZW1hbmFnZXIuc2Vzc2lvbi5nZXRob29r
cHJveHkocmVxdWVzdC5ub2RlLmZzcGF0aCkKLSAgICAgICAgcmV0dXJuIGhvb2sucHl0ZXN0X2Zp
eHR1cmVfc2V0dXAoZml4dHVyZWRlZj1zZWxmLCByZXF1ZXN0PXJlcXVlc3QpCi0KLSAgICBkZWYg
X19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoIjxGaXh0dXJlRGVmIG5hbWU9JXIgc2Nv
cGU9JXIgYmFzZWlkPSVyID4iICUKLSAgICAgICAgICAgICAgICAoc2VsZi5hcmduYW1lLCBzZWxm
LnNjb3BlLCBzZWxmLmJhc2VpZCkpCi0KLQotZGVmIHB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1
cmVkZWYsIHJlcXVlc3QpOgotICAgICIiIiBFeGVjdXRpb24gb2YgZml4dHVyZSBzZXR1cC4gIiIi
Ci0gICAga3dhcmdzID0ge30KLSAgICBmb3IgYXJnbmFtZSBpbiBmaXh0dXJlZGVmLmFyZ25hbWVz
OgotICAgICAgICBmaXhkZWYgPSByZXF1ZXN0Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFt
ZSkKLSAgICAgICAgcmVzdWx0LCBhcmdfY2FjaGVfa2V5LCBleGMgPSBmaXhkZWYuY2FjaGVkX3Jl
c3VsdAotICAgICAgICByZXF1ZXN0Ll9jaGVja19zY29wZShhcmduYW1lLCByZXF1ZXN0LnNjb3Bl
LCBmaXhkZWYuc2NvcGUpCi0gICAgICAgIGt3YXJnc1thcmduYW1lXSA9IHJlc3VsdAotCi0gICAg
Zml4dHVyZWZ1bmMgPSBmaXh0dXJlZGVmLmZ1bmMKLSAgICBpZiBmaXh0dXJlZGVmLnVuaXR0ZXN0
OgotICAgICAgICBpZiByZXF1ZXN0Lmluc3RhbmNlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
IyBiaW5kIHRoZSB1bmJvdW5kIG1ldGhvZCB0byB0aGUgVGVzdENhc2UgaW5zdGFuY2UKLSAgICAg
ICAgICAgIGZpeHR1cmVmdW5jID0gZml4dHVyZWRlZi5mdW5jLl9fZ2V0X18ocmVxdWVzdC5pbnN0
YW5jZSkKLSAgICBlbHNlOgotICAgICAgICAjIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIG5lZWRzIHRv
IGJlIGJvdW5kIHRvIHRoZSBhY3R1YWwKLSAgICAgICAgIyByZXF1ZXN0Lmluc3RhbmNlIHNvIHRo
YXQgY29kZSB3b3JraW5nIHdpdGggImZpeHR1cmVkZWYiIGJlaGF2ZXMKLSAgICAgICAgIyBhcyBl
eHBlY3RlZC4KLSAgICAgICAgaWYgcmVxdWVzdC5pbnN0YW5jZSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIGZpeHR1cmVmdW5jID0gZ2V0aW1mdW5jKGZpeHR1cmVkZWYuZnVuYykKLSAgICAgICAg
ICAgIGlmIGZpeHR1cmVmdW5jICE9IGZpeHR1cmVkZWYuZnVuYzoKLSAgICAgICAgICAgICAgICBm
aXh0dXJlZnVuYyA9IGZpeHR1cmVmdW5jLl9fZ2V0X18ocmVxdWVzdC5pbnN0YW5jZSkKLSAgICBt
eV9jYWNoZV9rZXkgPSByZXF1ZXN0LnBhcmFtX2luZGV4Ci0gICAgdHJ5OgotICAgICAgICByZXN1
bHQgPSBjYWxsX2ZpeHR1cmVfZnVuYyhmaXh0dXJlZnVuYywgcmVxdWVzdCwga3dhcmdzKQotICAg
IGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgIGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdCA9
IChOb25lLCBteV9jYWNoZV9rZXksIHN5cy5leGNfaW5mbygpKQotICAgICAgICByYWlzZQotICAg
IGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdCA9IChyZXN1bHQsIG15X2NhY2hlX2tleSwgTm9uZSkK
LSAgICByZXR1cm4gcmVzdWx0Ci0KLQotZGVmIF9lbnN1cmVfaW1tdXRhYmxlX2lkcyhpZHMpOgot
ICAgIGlmIGlkcyBpcyBOb25lOgotICAgICAgICByZXR1cm4KLSAgICBpZiBjYWxsYWJsZShpZHMp
OgotICAgICAgICByZXR1cm4gaWRzCi0gICAgcmV0dXJuIHR1cGxlKGlkcykKLQotCi1AYXR0ci5z
KGZyb3plbj1UcnVlKQotY2xhc3MgRml4dHVyZUZ1bmN0aW9uTWFya2VyKG9iamVjdCk6Ci0gICAg
c2NvcGUgPSBhdHRyLmliKCkKLSAgICBwYXJhbXMgPSBhdHRyLmliKGNvbnZlcnQ9YXR0ci5jb252
ZXJ0ZXJzLm9wdGlvbmFsKHR1cGxlKSkKLSAgICBhdXRvdXNlID0gYXR0ci5pYihkZWZhdWx0PUZh
bHNlKQotICAgIGlkcyA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lLCBjb252ZXJ0PV9lbnN1cmVfaW1t
dXRhYmxlX2lkcykKLSAgICBuYW1lID0gYXR0ci5pYihkZWZhdWx0PU5vbmUpCi0KLSAgICBkZWYg
X19jYWxsX18oc2VsZiwgZnVuY3Rpb24pOgotICAgICAgICBpZiBpc2NsYXNzKGZ1bmN0aW9uKToK
LSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgImNsYXNzIGZp
eHR1cmVzIG5vdCBzdXBwb3J0ZWQgKG1heSBiZSBpbiB0aGUgZnV0dXJlKSIpCi0gICAgICAgIGZ1
bmN0aW9uLl9weXRlc3RmaXh0dXJlZnVuY3Rpb24gPSBzZWxmCi0gICAgICAgIHJldHVybiBmdW5j
dGlvbgotCi0KLWRlZiBmaXh0dXJlKHNjb3BlPSJmdW5jdGlvbiIsIHBhcmFtcz1Ob25lLCBhdXRv
dXNlPUZhbHNlLCBpZHM9Tm9uZSwgbmFtZT1Ob25lKToKLSAgICAiIiIgKHJldHVybiBhKSBkZWNv
cmF0b3IgdG8gbWFyayBhIGZpeHR1cmUgZmFjdG9yeSBmdW5jdGlvbi4KLQotICAgIFRoaXMgZGVj
b3JhdG9yIGNhbiBiZSB1c2VkICh3aXRoIG9yIHdpdGhvdXQgcGFyYW1ldGVycykgdG8gZGVmaW5l
IGEKLSAgICBmaXh0dXJlIGZ1bmN0aW9uLiAgVGhlIG5hbWUgb2YgdGhlIGZpeHR1cmUgZnVuY3Rp
b24gY2FuIGxhdGVyIGJlCi0gICAgcmVmZXJlbmNlZCB0byBjYXVzZSBpdHMgaW52b2NhdGlvbiBh
aGVhZCBvZiBydW5uaW5nIHRlc3RzOiB0ZXN0Ci0gICAgbW9kdWxlcyBvciBjbGFzc2VzIGNhbiB1
c2UgdGhlIHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lKQotICAgIG1hcmtlci4g
IFRlc3QgZnVuY3Rpb25zIGNhbiBkaXJlY3RseSB1c2UgZml4dHVyZSBuYW1lcyBhcyBpbnB1dAot
ICAgIGFyZ3VtZW50cyBpbiB3aGljaCBjYXNlIHRoZSBmaXh0dXJlIGluc3RhbmNlIHJldHVybmVk
IGZyb20gdGhlIGZpeHR1cmUKLSAgICBmdW5jdGlvbiB3aWxsIGJlIGluamVjdGVkLgotCi0gICAg
OmFyZyBzY29wZTogdGhlIHNjb3BlIGZvciB3aGljaCB0aGlzIGZpeHR1cmUgaXMgc2hhcmVkLCBv
bmUgb2YKLSAgICAgICAgICAgICAgICAiZnVuY3Rpb24iIChkZWZhdWx0KSwgImNsYXNzIiwgIm1v
ZHVsZSIgb3IgInNlc3Npb24iLgotCi0gICAgOmFyZyBwYXJhbXM6IGFuIG9wdGlvbmFsIGxpc3Qg
b2YgcGFyYW1ldGVycyB3aGljaCB3aWxsIGNhdXNlIG11bHRpcGxlCi0gICAgICAgICAgICAgICAg
aW52b2NhdGlvbnMgb2YgdGhlIGZpeHR1cmUgZnVuY3Rpb24gYW5kIGFsbCBvZiB0aGUgdGVzdHMK
LSAgICAgICAgICAgICAgICB1c2luZyBpdC4KLQotICAgIDphcmcgYXV0b3VzZTogaWYgVHJ1ZSwg
dGhlIGZpeHR1cmUgZnVuYyBpcyBhY3RpdmF0ZWQgZm9yIGFsbCB0ZXN0cyB0aGF0Ci0gICAgICAg
ICAgICAgICAgY2FuIHNlZSBpdC4gIElmIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiBhbiBleHBs
aWNpdAotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBpcyBuZWVkZWQgdG8gYWN0aXZhdGUgdGhl
IGZpeHR1cmUuCi0KLSAgICA6YXJnIGlkczogbGlzdCBvZiBzdHJpbmcgaWRzIGVhY2ggY29ycmVz
cG9uZGluZyB0byB0aGUgcGFyYW1zCi0gICAgICAgICAgICAgICAgc28gdGhhdCB0aGV5IGFyZSBw
YXJ0IG9mIHRoZSB0ZXN0IGlkLiBJZiBubyBpZHMgYXJlIHByb3ZpZGVkCi0gICAgICAgICAgICAg
ICAgdGhleSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHBhcmFtcy4K
LQotICAgIDphcmcgbmFtZTogdGhlIG5hbWUgb2YgdGhlIGZpeHR1cmUuIFRoaXMgZGVmYXVsdHMg
dG8gdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgZGVjb3JhdGVkIGZ1bmN0aW9uLiBJ
ZiBhIGZpeHR1cmUgaXMgdXNlZCBpbiB0aGUgc2FtZSBtb2R1bGUgaW4KLSAgICAgICAgICAgICAg
ICB3aGljaCBpdCBpcyBkZWZpbmVkLCB0aGUgZnVuY3Rpb24gbmFtZSBvZiB0aGUgZml4dHVyZSB3
aWxsIGJlCi0gICAgICAgICAgICAgICAgc2hhZG93ZWQgYnkgdGhlIGZ1bmN0aW9uIGFyZyB0aGF0
IHJlcXVlc3RzIHRoZSBmaXh0dXJlOyBvbmUgd2F5Ci0gICAgICAgICAgICAgICAgdG8gcmVzb2x2
ZSB0aGlzIGlzIHRvIG5hbWUgdGhlIGRlY29yYXRlZCBmdW5jdGlvbgotICAgICAgICAgICAgICAg
IGBgZml4dHVyZV88Zml4dHVyZW5hbWU+YGAgYW5kIHRoZW4gdXNlCi0gICAgICAgICAgICAgICAg
YGBAcHl0ZXN0LmZpeHR1cmUobmFtZT0nPGZpeHR1cmVuYW1lPicpYGAuCi0KLSAgICBGaXh0dXJl
cyBjYW4gb3B0aW9uYWxseSBwcm92aWRlIHRoZWlyIHZhbHVlcyB0byB0ZXN0IGZ1bmN0aW9ucyB1
c2luZyBhIGBgeWllbGRgYCBzdGF0ZW1lbnQsCi0gICAgaW5zdGVhZCBvZiBgYHJldHVybmBgLiBJ
biB0aGlzIGNhc2UsIHRoZSBjb2RlIGJsb2NrIGFmdGVyIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50
IGlzIGV4ZWN1dGVkCi0gICAgYXMgdGVhcmRvd24gY29kZSByZWdhcmRsZXNzIG9mIHRoZSB0ZXN0
IG91dGNvbWUuIEEgZml4dHVyZSBmdW5jdGlvbiBtdXN0IHlpZWxkIGV4YWN0bHkgb25jZS4KLSAg
ICAiIiIKLSAgICBpZiBjYWxsYWJsZShzY29wZSkgYW5kIHBhcmFtcyBpcyBOb25lIGFuZCBhdXRv
dXNlIGlzIEZhbHNlOgotICAgICAgICAjIGRpcmVjdCBkZWNvcmF0aW9uCi0gICAgICAgIHJldHVy
biBGaXh0dXJlRnVuY3Rpb25NYXJrZXIoCi0gICAgICAgICAgICAiZnVuY3Rpb24iLCBwYXJhbXMs
IGF1dG91c2UsIG5hbWU9bmFtZSkoc2NvcGUpCi0gICAgaWYgcGFyYW1zIGlzIG5vdCBOb25lIGFu
ZCBub3QgaXNpbnN0YW5jZShwYXJhbXMsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICBwYXJhbXMg
PSBsaXN0KHBhcmFtcykKLSAgICByZXR1cm4gRml4dHVyZUZ1bmN0aW9uTWFya2VyKHNjb3BlLCBw
YXJhbXMsIGF1dG91c2UsIGlkcz1pZHMsIG5hbWU9bmFtZSkKLQotCi1kZWYgeWllbGRfZml4dHVy
ZShzY29wZT0iZnVuY3Rpb24iLCBwYXJhbXM9Tm9uZSwgYXV0b3VzZT1GYWxzZSwgaWRzPU5vbmUs
IG5hbWU9Tm9uZSk6Ci0gICAgIiIiIChyZXR1cm4gYSkgZGVjb3JhdG9yIHRvIG1hcmsgYSB5aWVs
ZC1maXh0dXJlIGZhY3RvcnkgZnVuY3Rpb24uCi0KLSAgICAuLiBkZXByZWNhdGVkOjogMy4wCi0g
ICAgICAgIFVzZSA6cHk6ZnVuYzpgcHl0ZXN0LmZpeHR1cmVgIGRpcmVjdGx5IGluc3RlYWQuCi0g
ICAgIiIiCi0gICAgaWYgY2FsbGFibGUoc2NvcGUpIGFuZCBwYXJhbXMgaXMgTm9uZSBhbmQgbm90
IGF1dG91c2U6Ci0gICAgICAgICMgZGlyZWN0IGRlY29yYXRpb24KLSAgICAgICAgcmV0dXJuIEZp
eHR1cmVGdW5jdGlvbk1hcmtlcigKLSAgICAgICAgICAgICJmdW5jdGlvbiIsIHBhcmFtcywgYXV0
b3VzZSwgaWRzPWlkcywgbmFtZT1uYW1lKShzY29wZSkKLSAgICBlbHNlOgotICAgICAgICByZXR1
cm4gRml4dHVyZUZ1bmN0aW9uTWFya2VyKHNjb3BlLCBwYXJhbXMsIGF1dG91c2UsIGlkcz1pZHMs
IG5hbWU9bmFtZSkKLQotCi1kZWZhdWx0ZnVuY2FyZ3ByZWZpeG1hcmtlciA9IGZpeHR1cmUoKQot
Ci0KLUBmaXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKLWRlZiBweXRlc3Rjb25maWcocmVxdWVzdCk6
Ci0gICAgIiIiIHRoZSBweXRlc3QgY29uZmlnIG9iamVjdCB3aXRoIGFjY2VzcyB0byBjb21tYW5k
IGxpbmUgb3B0cy4iIiIKLSAgICByZXR1cm4gcmVxdWVzdC5jb25maWcKLQotCi1jbGFzcyBGaXh0
dXJlTWFuYWdlcjoKLSAgICAiIiIKLSAgICBweXRlc3QgZml4dHVyZXMgZGVmaW5pdGlvbnMgYW5k
IGluZm9ybWF0aW9uIGlzIHN0b3JlZCBhbmQgbWFuYWdlZAotICAgIGZyb20gdGhpcyBjbGFzcy4K
LQotICAgIER1cmluZyBjb2xsZWN0aW9uIGZtLnBhcnNlZmFjdG9yaWVzKCkgaXMgY2FsbGVkIG11
bHRpcGxlIHRpbWVzIHRvIHBhcnNlCi0gICAgZml4dHVyZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBp
bnRvIEZpeHR1cmVEZWYgb2JqZWN0cyBhbmQgaW50ZXJuYWwKLSAgICBkYXRhIHN0cnVjdHVyZXMu
Ci0KLSAgICBEdXJpbmcgY29sbGVjdGlvbiBvZiB0ZXN0IGZ1bmN0aW9ucywgbWV0YWZ1bmMtbWVj
aGFuaWNzIGluc3RhbnRpYXRlCi0gICAgYSBGdW5jRml4dHVyZUluZm8gb2JqZWN0IHdoaWNoIGlz
IGNhY2hlZCBwZXIgbm9kZS9mdW5jLW5hbWUuCi0gICAgVGhpcyBGdW5jRml4dHVyZUluZm8gb2Jq
ZWN0IGlzIGxhdGVyIHJldHJpZXZlZCBieSBGdW5jdGlvbiBub2RlcwotICAgIHdoaWNoIHRoZW1z
ZWx2ZXMgb2ZmZXIgYSBmaXh0dXJlbmFtZXMgYXR0cmlidXRlLgotCi0gICAgVGhlIEZ1bmNGaXh0
dXJlSW5mbyBvYmplY3QgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgZml4dHVyZXMgYW5kIEZpeHR1
cmVEZWZzCi0gICAgcmVsZXZhbnQgZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbi4gIEFuIGluaXRp
YWwgbGlzdCBvZiBmaXh0dXJlcyBpcwotICAgIGFzc2VtYmxlZCBsaWtlIHRoaXM6Ci0KLSAgICAt
IGluaS1kZWZpbmVkIHVzZWZpeHR1cmVzCi0gICAgLSBhdXRvdXNlLW1hcmtlZCBmaXh0dXJlcyBh
bG9uZyB0aGUgY29sbGVjdGlvbiBjaGFpbiB1cCBmcm9tIHRoZSBmdW5jdGlvbgotICAgIC0gdXNl
Zml4dHVyZXMgbWFya2VycyBhdCBtb2R1bGUvY2xhc3MvZnVuY3Rpb24gbGV2ZWwKLSAgICAtIHRl
c3QgZnVuY3Rpb24gZnVuY2FyZ3MKLQotICAgIFN1YnNlcXVlbnRseSB0aGUgZnVuY2ZpeHR1cmVp
bmZvLmZpeHR1cmVuYW1lcyBhdHRyaWJ1dGUgaXMgY29tcHV0ZWQKLSAgICBhcyB0aGUgY2xvc3Vy
ZSBvZiB0aGUgZml4dHVyZXMgbmVlZGVkIHRvIHNldHVwIHRoZSBpbml0aWFsIGZpeHR1cmVzLAot
ICAgIGkuIGUuIGZpeHR1cmVzIG5lZWRlZCBieSBmaXh0dXJlIGZ1bmN0aW9ucyB0aGVtc2VsdmVz
IGFyZSBhcHBlbmRlZAotICAgIHRvIHRoZSBmaXh0dXJlbmFtZXMgbGlzdC4KLQotICAgIFVwb24g
dGhlIHRlc3Qtc2V0dXAgcGhhc2VzIGFsbCBmaXh0dXJlbmFtZXMgYXJlIGluc3RhbnRpYXRlZCwg
cmV0cmlldmVkCi0gICAgYnkgYSBsb29rdXAgb2YgdGhlaXIgRnVuY0ZpeHR1cmVJbmZvLgotICAg
ICIiIgotCi0gICAgX2FyZ3ByZWZpeCA9ICJweXRlc3RfZnVuY2FyZ19fIgotICAgIEZpeHR1cmVM
b29rdXBFcnJvciA9IEZpeHR1cmVMb29rdXBFcnJvcgotICAgIEZpeHR1cmVMb29rdXBFcnJvclJl
cHIgPSBGaXh0dXJlTG9va3VwRXJyb3JSZXByCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2Vz
c2lvbik6Ci0gICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24KLSAgICAgICAgc2VsZi5jb25m
aWcgPSBzZXNzaW9uLmNvbmZpZwotICAgICAgICBzZWxmLl9hcmcyZml4dHVyZWRlZnMgPSB7fQot
ICAgICAgICBzZWxmLl9ob2xkZXJvYmpzZWVuID0gc2V0KCkKLSAgICAgICAgc2VsZi5fYXJnMmZp
bmlzaCA9IHt9Ci0gICAgICAgIHNlbGYuX25vZGVpZF9hbmRfYXV0b3VzZW5hbWVzID0gWygiIiwg
c2VsZi5jb25maWcuZ2V0aW5pKCJ1c2VmaXh0dXJlcyIpKV0KLSAgICAgICAgc2Vzc2lvbi5jb25m
aWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihzZWxmLCAiZnVuY21hbmFnZSIpCi0KLSAgICBkZWYg
Z2V0Zml4dHVyZWluZm8oc2VsZiwgbm9kZSwgZnVuYywgY2xzLCBmdW5jYXJncz1UcnVlKToKLSAg
ICAgICAgaWYgZnVuY2FyZ3MgYW5kIG5vdCBoYXNhdHRyKG5vZGUsICJub2Z1bmNhcmdzIik6Ci0g
ICAgICAgICAgICBhcmduYW1lcyA9IGdldGZ1bmNhcmduYW1lcyhmdW5jLCBjbHM9Y2xzKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgYXJnbmFtZXMgPSAoKQotICAgICAgICB1c2VmaXh0dXJl
cyA9IGdldGF0dHIoZnVuYywgInVzZWZpeHR1cmVzIiwgTm9uZSkKLSAgICAgICAgaW5pdGlhbG5h
bWVzID0gYXJnbmFtZXMKLSAgICAgICAgaWYgdXNlZml4dHVyZXMgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBpbml0aWFsbmFtZXMgPSB1c2VmaXh0dXJlcy5hcmdzICsgaW5pdGlhbG5hbWVzCi0g
ICAgICAgIGZtID0gbm9kZS5zZXNzaW9uLl9maXh0dXJlbWFuYWdlcgotICAgICAgICBuYW1lc19j
bG9zdXJlLCBhcmcyZml4dHVyZWRlZnMgPSBmbS5nZXRmaXh0dXJlY2xvc3VyZShpbml0aWFsbmFt
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUpCi0gICAgICAgIHJldHVybiBGdW5jRml4dHVyZUluZm8oYXJnbmFtZXMs
IG5hbWVzX2Nsb3N1cmUsIGFyZzJmaXh0dXJlZGVmcykKLQotICAgIGRlZiBweXRlc3RfcGx1Z2lu
X3JlZ2lzdGVyZWQoc2VsZiwgcGx1Z2luKToKLSAgICAgICAgbm9kZWlkID0gTm9uZQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBwID0gcHkucGF0aC5sb2NhbChwbHVnaW4uX19maWxlX18pCi0g
ICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICMgY29uc3RydWN0IHRoZSBiYXNlIG5vZGVpZCB3aGljaCBpcyBs
YXRlciB1c2VkIHRvIGNoZWNrCi0gICAgICAgICAgICAjIHdoYXQgZml4dHVyZXMgYXJlIHZpc2li
bGUgZm9yIHBhcnRpY3VsYXIgdGVzdHMgKGFzIGRlbm90ZWQKLSAgICAgICAgICAgICMgYnkgdGhl
aXIgdGVzdCBpZCkKLSAgICAgICAgICAgIGlmIHAuYmFzZW5hbWUuc3RhcnRzd2l0aCgiY29uZnRl
c3QucHkiKToKLSAgICAgICAgICAgICAgICBub2RlaWQgPSBwLmRpcnBhdGgoKS5yZWx0byhzZWxm
LmNvbmZpZy5yb290ZGlyKQotICAgICAgICAgICAgICAgIGlmIHAuc2VwICE9IG5vZGVzLlNFUDoK
LSAgICAgICAgICAgICAgICAgICAgbm9kZWlkID0gbm9kZWlkLnJlcGxhY2UocC5zZXAsIG5vZGVz
LlNFUCkKLSAgICAgICAgc2VsZi5wYXJzZWZhY3RvcmllcyhwbHVnaW4sIG5vZGVpZCkKLQotICAg
IGRlZiBfZ2V0YXV0b3VzZW5hbWVzKHNlbGYsIG5vZGVpZCk6Ci0gICAgICAgICIiIiByZXR1cm4g
YSB0dXBsZSBvZiBmaXh0dXJlIG5hbWVzIHRvIGJlIHVzZWQuICIiIgotICAgICAgICBhdXRvdXNl
bmFtZXMgPSBbXQotICAgICAgICBmb3IgYmFzZWlkLCBiYXNlbmFtZXMgaW4gc2VsZi5fbm9kZWlk
X2FuZF9hdXRvdXNlbmFtZXM6Ci0gICAgICAgICAgICBpZiBub2RlaWQuc3RhcnRzd2l0aChiYXNl
aWQpOgotICAgICAgICAgICAgICAgIGlmIGJhc2VpZDoKLSAgICAgICAgICAgICAgICAgICAgaSA9
IGxlbihiYXNlaWQpCi0gICAgICAgICAgICAgICAgICAgIG5leHRjaGFyID0gbm9kZWlkW2k6aSAr
IDFdCi0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIGFuZCBuZXh0Y2hhciBub3QgaW4g
IjovIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAg
YXV0b3VzZW5hbWVzLmV4dGVuZChiYXNlbmFtZXMpCi0gICAgICAgICMgbWFrZSBzdXJlIGF1dG91
c2VuYW1lcyBhcmUgc29ydGVkIGJ5IHNjb3BlLCBzY29wZW51bSAwIGlzIHNlc3Npb24KLSAgICAg
ICAgYXV0b3VzZW5hbWVzLnNvcnQoCi0gICAgICAgICAgICBrZXk9bGFtYmRhIHg6IHNlbGYuX2Fy
ZzJmaXh0dXJlZGVmc1t4XVstMV0uc2NvcGVudW0pCi0gICAgICAgIHJldHVybiBhdXRvdXNlbmFt
ZXMKLQotICAgIGRlZiBnZXRmaXh0dXJlY2xvc3VyZShzZWxmLCBmaXh0dXJlbmFtZXMsIHBhcmVu
dG5vZGUpOgotICAgICAgICAjIGNvbGxlY3QgdGhlIGNsb3N1cmUgb2YgYWxsIGZpeHR1cmVzICwg
c3RhcnRpbmcgd2l0aCB0aGUgZ2l2ZW4KLSAgICAgICAgIyBmaXh0dXJlbmFtZXMgYXMgdGhlIGlu
aXRpYWwgc2V0LiAgQXMgd2UgaGF2ZSB0byB2aXNpdCBhbGwKLSAgICAgICAgIyBmYWN0b3J5IGRl
ZmluaXRpb25zIGFueXdheSwgd2UgYWxzbyByZXR1cm4gYSBhcmcyZml4dHVyZWRlZnMKLSAgICAg
ICAgIyBtYXBwaW5nIHNvIHRoYXQgdGhlIGNhbGxlciBjYW4gcmV1c2UgaXQgYW5kIGRvZXMgbm90
IGhhdmUKLSAgICAgICAgIyB0byByZS1kaXNjb3ZlciBmaXh0dXJlZGVmcyBhZ2FpbiBmb3IgZWFj
aCBmaXh0dXJlbmFtZQotICAgICAgICAjIChkaXNjb3ZlcmluZyBtYXRjaGluZyBmaXh0dXJlcyBm
b3IgYSBnaXZlbiBuYW1lL25vZGUgaXMgZXhwZW5zaXZlKQotCi0gICAgICAgIHBhcmVudGlkID0g
cGFyZW50bm9kZS5ub2RlaWQKLSAgICAgICAgZml4dHVyZW5hbWVzX2Nsb3N1cmUgPSBzZWxmLl9n
ZXRhdXRvdXNlbmFtZXMocGFyZW50aWQpCi0KLSAgICAgICAgZGVmIG1lcmdlKG90aGVybGlzdCk6
Ci0gICAgICAgICAgICBmb3IgYXJnIGluIG90aGVybGlzdDoKLSAgICAgICAgICAgICAgICBpZiBh
cmcgbm90IGluIGZpeHR1cmVuYW1lc19jbG9zdXJlOgotICAgICAgICAgICAgICAgICAgICBmaXh0
dXJlbmFtZXNfY2xvc3VyZS5hcHBlbmQoYXJnKQotCi0gICAgICAgIG1lcmdlKGZpeHR1cmVuYW1l
cykKLSAgICAgICAgYXJnMmZpeHR1cmVkZWZzID0ge30KLSAgICAgICAgbGFzdGxlbiA9IC0xCi0g
ICAgICAgIHdoaWxlIGxhc3RsZW4gIT0gbGVuKGZpeHR1cmVuYW1lc19jbG9zdXJlKToKLSAgICAg
ICAgICAgIGxhc3RsZW4gPSBsZW4oZml4dHVyZW5hbWVzX2Nsb3N1cmUpCi0gICAgICAgICAgICBm
b3IgYXJnbmFtZSBpbiBmaXh0dXJlbmFtZXNfY2xvc3VyZToKLSAgICAgICAgICAgICAgICBpZiBh
cmduYW1lIGluIGFyZzJmaXh0dXJlZGVmczoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgICAgICBmaXh0dXJlZGVmcyA9IHNlbGYuZ2V0Zml4dHVyZWRlZnMoYXJnbmFt
ZSwgcGFyZW50aWQpCi0gICAgICAgICAgICAgICAgaWYgZml4dHVyZWRlZnM6Ci0gICAgICAgICAg
ICAgICAgICAgIGFyZzJmaXh0dXJlZGVmc1thcmduYW1lXSA9IGZpeHR1cmVkZWZzCi0gICAgICAg
ICAgICAgICAgICAgIG1lcmdlKGZpeHR1cmVkZWZzWy0xXS5hcmduYW1lcykKLSAgICAgICAgcmV0
dXJuIGZpeHR1cmVuYW1lc19jbG9zdXJlLCBhcmcyZml4dHVyZWRlZnMKLQotICAgIGRlZiBweXRl
c3RfZ2VuZXJhdGVfdGVzdHMoc2VsZiwgbWV0YWZ1bmMpOgotICAgICAgICBmb3IgYXJnbmFtZSBp
biBtZXRhZnVuYy5maXh0dXJlbmFtZXM6Ci0gICAgICAgICAgICBmYWNsaXN0ID0gbWV0YWZ1bmMu
X2FyZzJmaXh0dXJlZGVmcy5nZXQoYXJnbmFtZSkKLSAgICAgICAgICAgIGlmIGZhY2xpc3Q6Ci0g
ICAgICAgICAgICAgICAgZml4dHVyZWRlZiA9IGZhY2xpc3RbLTFdCi0gICAgICAgICAgICAgICAg
aWYgZml4dHVyZWRlZi5wYXJhbXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHBh
cmFtZXRyaXplX2Z1bmMgPSBnZXRhdHRyKG1ldGFmdW5jLmZ1bmN0aW9uLCAncGFyYW1ldHJpemUn
LCBOb25lKQotICAgICAgICAgICAgICAgICAgICBmdW5jX3BhcmFtcyA9IGdldGF0dHIocGFyYW1l
dHJpemVfZnVuYywgJ2FyZ3MnLCBbW05vbmVdXSkKLSAgICAgICAgICAgICAgICAgICAgZnVuY19r
d2FyZ3MgPSBnZXRhdHRyKHBhcmFtZXRyaXplX2Z1bmMsICdrd2FyZ3MnLCB7fSkKLSAgICAgICAg
ICAgICAgICAgICAgIyBza2lwIGRpcmVjdGx5IHBhcmFtZXRyaXplZCBhcmd1bWVudHMKLSAgICAg
ICAgICAgICAgICAgICAgaWYgImFyZ25hbWVzIiBpbiBmdW5jX2t3YXJnczoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ25hbWVzID0gcGFyYW1ldHJpemVfZnVuYy5rd2FyZ3NbImFyZ25hbWVz
Il0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z25hbWVzID0gZnVuY19wYXJhbXNbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UoYXJnbmFtZXMsICh0dXBsZSwgbGlzdCkpOgotICAgICAgICAgICAgICAgICAgICAgICAg
YXJnbmFtZXMgPSBbeC5zdHJpcCgpIGZvciB4IGluIGFyZ25hbWVzLnNwbGl0KCIsIikgaWYgeC5z
dHJpcCgpXQotICAgICAgICAgICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBpbiBmdW5jX3BhcmFt
cyBhbmQgYXJnbmFtZSBub3QgaW4gYXJnbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZnVuYy5wYXJhbWV0cml6ZShhcmduYW1lLCBmaXh0dXJlZGVmLnBhcmFtcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGlyZWN0PVRydWUsIHNjb3Bl
PWZpeHR1cmVkZWYuc2NvcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZHM9Zml4dHVyZWRlZi5pZHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlICAjIHdpbGwgcmFpc2UgRml4dHVyZUxvb2t1cEVycm9yIGF0IHNldHVw
IHRpbWUKLQotICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhzZWxmLCBpdGVt
cyk6Ci0gICAgICAgICMgc2VwYXJhdGUgcGFyYW1ldHJpemVkIHNldHVwcwotICAgICAgICBpdGVt
c1s6XSA9IHJlb3JkZXJfaXRlbXMoaXRlbXMpCi0KLSAgICBkZWYgcGFyc2VmYWN0b3JpZXMoc2Vs
Ziwgbm9kZV9vcl9vYmosIG5vZGVpZD1OT1RTRVQsIHVuaXR0ZXN0PUZhbHNlKToKLSAgICAgICAg
aWYgbm9kZWlkIGlzIG5vdCBOT1RTRVQ6Ci0gICAgICAgICAgICBob2xkZXJvYmogPSBub2RlX29y
X29iagotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaG9sZGVyb2JqID0gbm9kZV9vcl9vYmou
b2JqCi0gICAgICAgICAgICBub2RlaWQgPSBub2RlX29yX29iai5ub2RlaWQKLSAgICAgICAgaWYg
aG9sZGVyb2JqIGluIHNlbGYuX2hvbGRlcm9ianNlZW46Ci0gICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgc2VsZi5faG9sZGVyb2Jqc2Vlbi5hZGQoaG9sZGVyb2JqKQotICAgICAgICBhdXRvdXNl
bmFtZXMgPSBbXQotICAgICAgICBmb3IgbmFtZSBpbiBkaXIoaG9sZGVyb2JqKToKLSAgICAgICAg
ICAgICMgVGhlIGF0dHJpYnV0ZSBjYW4gYmUgYW4gYXJiaXRyYXJ5IGRlc2NyaXB0b3IsIHNvIHRo
ZSBhdHRyaWJ1dGUKLSAgICAgICAgICAgICMgYWNjZXNzIGJlbG93IGNhbiByYWlzZS4gc2FmZV9n
ZXRhdHQoKSBpZ25vcmVzIHN1Y2ggZXhjZXB0aW9ucy4KLSAgICAgICAgICAgIG9iaiA9IHNhZmVf
Z2V0YXR0cihob2xkZXJvYmosIG5hbWUsIE5vbmUpCi0gICAgICAgICAgICAjIGZpeHR1cmUgZnVu
Y3Rpb25zIGhhdmUgYSBweXRlc3RfZnVuY2FyZ19fIHByZWZpeCAocHJlLTIuMyBzdHlsZSkKLSAg
ICAgICAgICAgICMgb3IgYXJlICJAcHl0ZXN0LmZpeHR1cmUiIG1hcmtlZAotICAgICAgICAgICAg
bWFya2VyID0gZ2V0Zml4dHVyZW1hcmtlcihvYmopCi0gICAgICAgICAgICBpZiBtYXJrZXIgaXMg
Tm9uZToKLSAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKHNlbGYuX2FyZ3By
ZWZpeCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYg
bm90IGNhbGxhYmxlKG9iaik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICAgICAgbWFya2VyID0gZGVmYXVsdGZ1bmNhcmdwcmVmaXhtYXJrZXIKLSAgICAgICAgICAg
ICAgICBmcm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKLSAgICAgICAgICAgICAgICBzZWxm
LmNvbmZpZy53YXJuKCdDMScsIGRlcHJlY2F0ZWQuRlVOQ0FSR19QUkVGSVguZm9ybWF0KG5hbWU9
bmFtZSksIG5vZGVpZD1ub2RlaWQpCi0gICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbbGVuKHNl
bGYuX2FyZ3ByZWZpeCk6XQotICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShtYXJrZXIs
IEZpeHR1cmVGdW5jdGlvbk1hcmtlcik6Ci0gICAgICAgICAgICAgICAgIyBtYWdpYyBnbG9iYWxz
ICB3aXRoIF9fZ2V0YXR0cl9fIG1pZ2h0IGhhdmUgZ290IHVzIGEgd3JvbmcKLSAgICAgICAgICAg
ICAgICAjIGZpeHR1cmUgYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbWFya2VyLm5hbWU6Ci0gICAgICAgICAg
ICAgICAgICAgIG5hbWUgPSBtYXJrZXIubmFtZQotICAgICAgICAgICAgICAgIG1zZyA9ICdmaXh0
dXJlcyBjYW5ub3QgaGF2ZSAicHl0ZXN0X2Z1bmNhcmdfXyIgcHJlZml4ICcgXAotICAgICAgICAg
ICAgICAgICAgICAgICdhbmQgYmUgZGVjb3JhdGVkIHdpdGggQHB5dGVzdC5maXh0dXJlOlxuJXMn
ICUgbmFtZQotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgbmFtZS5zdGFydHN3aXRoKHNlbGYu
X2FyZ3ByZWZpeCksIG1zZwotCi0gICAgICAgICAgICBmaXh0dXJlX2RlZiA9IEZpeHR1cmVEZWYo
c2VsZiwgbm9kZWlkLCBuYW1lLCBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWFya2VyLnNjb3BlLCBtYXJrZXIucGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaXR0ZXN0PXVuaXR0ZXN0LCBpZHM9bWFya2VyLmlkcykKLQotICAg
ICAgICAgICAgZmFjbGlzdCA9IHNlbGYuX2FyZzJmaXh0dXJlZGVmcy5zZXRkZWZhdWx0KG5hbWUs
IFtdKQotICAgICAgICAgICAgaWYgZml4dHVyZV9kZWYuaGFzX2xvY2F0aW9uOgotICAgICAgICAg
ICAgICAgIGZhY2xpc3QuYXBwZW5kKGZpeHR1cmVfZGVmKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAjIGZpeHR1cmVkZWZzIHdpdGggbm8gbG9jYXRpb24gYXJlIGF0IHRoZSBm
cm9udAotICAgICAgICAgICAgICAgICMgc28gdGhpcyBpbnNlcnRzIHRoZSBjdXJyZW50IGZpeHR1
cmVkZWYgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAgICAgIyBleGlzdGluZyBmaXh0dXJlZGVmcyBm
cm9tIGV4dGVybmFsIHBsdWdpbnMgYnV0Ci0gICAgICAgICAgICAgICAgIyBiZWZvcmUgdGhlIGZp
eHR1cmVkZWZzIHByb3ZpZGVkIGluIGNvbmZ0ZXN0cy4KLSAgICAgICAgICAgICAgICBpID0gbGVu
KFtmIGZvciBmIGluIGZhY2xpc3QgaWYgbm90IGYuaGFzX2xvY2F0aW9uXSkKLSAgICAgICAgICAg
ICAgICBmYWNsaXN0Lmluc2VydChpLCBmaXh0dXJlX2RlZikKLSAgICAgICAgICAgIGlmIG1hcmtl
ci5hdXRvdXNlOgotICAgICAgICAgICAgICAgIGF1dG91c2VuYW1lcy5hcHBlbmQobmFtZSkKLQot
ICAgICAgICBpZiBhdXRvdXNlbmFtZXM6Ci0gICAgICAgICAgICBzZWxmLl9ub2RlaWRfYW5kX2F1
dG91c2VuYW1lcy5hcHBlbmQoKG5vZGVpZCBvciAnJywgYXV0b3VzZW5hbWVzKSkKLQotICAgIGRl
ZiBnZXRmaXh0dXJlZGVmcyhzZWxmLCBhcmduYW1lLCBub2RlaWQpOgotICAgICAgICAiIiIKLSAg
ICAgICAgR2V0cyBhIGxpc3Qgb2YgZml4dHVyZXMgd2hpY2ggYXJlIGFwcGxpY2FibGUgdG8gdGhl
IGdpdmVuIG5vZGUgaWQuCi0KLSAgICAgICAgOnBhcmFtIHN0ciBhcmduYW1lOiBuYW1lIG9mIHRo
ZSBmaXh0dXJlIHRvIHNlYXJjaCBmb3IKLSAgICAgICAgOnBhcmFtIHN0ciBub2RlaWQ6IGZ1bGwg
bm9kZSBpZCBvZiB0aGUgcmVxdWVzdGluZyB0ZXN0LgotICAgICAgICA6cmV0dXJuOiBsaXN0W0Zp
eHR1cmVEZWZdCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaXh0dXJl
ZGVmcyA9IHNlbGYuX2FyZzJmaXh0dXJlZGVmc1thcmduYW1lXQotICAgICAgICBleGNlcHQgS2V5
RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmV0dXJuIHR1cGxlKHNlbGYuX21hdGNoZmFjdG9yaWVzKGZpeHR1cmVkZWZzLCBub2RlaWQp
KQotCi0gICAgZGVmIF9tYXRjaGZhY3RvcmllcyhzZWxmLCBmaXh0dXJlZGVmcywgbm9kZWlkKToK
LSAgICAgICAgZm9yIGZpeHR1cmVkZWYgaW4gZml4dHVyZWRlZnM6Ci0gICAgICAgICAgICBpZiBu
b2Rlcy5pc2NoaWxkbm9kZShmaXh0dXJlZGVmLmJhc2VpZCwgbm9kZWlkKToKLSAgICAgICAgICAg
ICAgICB5aWVsZCBmaXh0dXJlZGVmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Zy
ZWV6ZV9zdXBwb3J0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9mcmVlemVfc3VwcG9ydC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcxNDdhODgyNTBhLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9mcmVlemVfc3VwcG9ydC5weQorKysgL2Rldi9udWxs
CkBAIC0xLDQzICswLDAgQEAKLSIiIgotUHJvdmlkZXMgYSBmdW5jdGlvbiB0byByZXBvcnQgYWxs
IGludGVybmFsIG1vZHVsZXMgZm9yIHVzaW5nIGZyZWV6aW5nIHRvb2xzCi1weXRlc3QKLSIiIgot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9m
dW5jdGlvbgotCi0KLWRlZiBmcmVlemVfaW5jbHVkZXMoKToKLSAgICAiIiIKLSAgICBSZXR1cm5z
IGEgbGlzdCBvZiBtb2R1bGUgbmFtZXMgdXNlZCBieSBweS50ZXN0IHRoYXQgc2hvdWxkIGJlCi0g
ICAgaW5jbHVkZWQgYnkgY3hfZnJlZXplLgotICAgICIiIgotICAgIGltcG9ydCBweQotICAgIGlt
cG9ydCBfcHl0ZXN0Ci0gICAgcmVzdWx0ID0gbGlzdChfaXRlcl9hbGxfbW9kdWxlcyhweSkpCi0g
ICAgcmVzdWx0ICs9IGxpc3QoX2l0ZXJfYWxsX21vZHVsZXMoX3B5dGVzdCkpCi0gICAgcmV0dXJu
IHJlc3VsdAotCi0KLWRlZiBfaXRlcl9hbGxfbW9kdWxlcyhwYWNrYWdlLCBwcmVmaXg9JycpOgot
ICAgICIiIgotICAgIEl0ZXJhdGVzIG92ZXIgdGhlIG5hbWVzIG9mIGFsbCBtb2R1bGVzIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBnaXZlbgotICAgIHBhY2thZ2UsIHJlY3Vyc2l2ZWx5LgotICAg
IEV4YW1wbGU6Ci0gICAgICAgIF9pdGVyX2FsbF9tb2R1bGVzKF9weXRlc3QpIC0+Ci0gICAgICAg
ICAgICBbJ19weXRlc3QuYXNzZXJ0aW9uLm5ld2ludGVycHJldCcsCi0gICAgICAgICAgICAgJ19w
eXRlc3QuY2FwdHVyZScsCi0gICAgICAgICAgICAgJ19weXRlc3QuY29yZScsCi0gICAgICAgICAg
ICAgLi4uCi0gICAgICAgICAgICBdCi0gICAgIiIiCi0gICAgaW1wb3J0IG9zCi0gICAgaW1wb3J0
IHBrZ3V0aWwKLSAgICBpZiB0eXBlKHBhY2thZ2UpIGlzIG5vdCBzdHI6Ci0gICAgICAgIHBhdGgs
IHByZWZpeCA9IHBhY2thZ2UuX19wYXRoX19bMF0sIHBhY2thZ2UuX19uYW1lX18gKyAnLicKLSAg
ICBlbHNlOgotICAgICAgICBwYXRoID0gcGFja2FnZQotICAgIGZvciBfLCBuYW1lLCBpc19wYWNr
YWdlIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFtwYXRoXSk6Ci0gICAgICAgIGlmIGlzX3BhY2th
Z2U6Ci0gICAgICAgICAgICBmb3IgbSBpbiBfaXRlcl9hbGxfbW9kdWxlcyhvcy5wYXRoLmpvaW4o
cGF0aCwgbmFtZSksIHByZWZpeD1uYW1lICsgJy4nKToKLSAgICAgICAgICAgICAgICB5aWVsZCBw
cmVmaXggKyBtCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB5aWVsZCBwcmVmaXggKyBuYW1l
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2hlbHBjb25maWcucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2hlbHBjb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU3NDQ2MzdmODY2MC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvaGVs
cGNvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0iIiIgdmVyc2lvbiBp
bmZvLCBoZWxwIG1lc3NhZ2VzLCB0cmFjaW5nIGNvbmZpZ3VyYXRpb24uICAiIiIKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBQ
cmludEhlbHAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotZnJvbSBhcmdwYXJzZSBpbXBvcnQgQWN0
aW9uCi0KLQotY2xhc3MgSGVscEFjdGlvbihBY3Rpb24pOgotICAgICIiIlRoaXMgaXMgYW4gYXJn
cGFyc2UgQWN0aW9uIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4KLSAgICBvcmRlciB0
byBza2lwIHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudCBwYXJzaW5nIHdoZW4gLS1oZWxwIGlzIHBh
c3NlZC4KLSAgICBUaGlzIHByZXZlbnRzIGFyZ3BhcnNlIGZyb20gcXVpdHRpbmcgZHVlIHRvIG1p
c3NpbmcgcmVxdWlyZWQgYXJndW1lbnRzCi0gICAgd2hlbiBhbnkgYXJlIGRlZmluZWQsIGZvciBl
eGFtcGxlIGJ5IGBgcHl0ZXN0X2FkZG9wdGlvbmBgLgotICAgIFRoaXMgaXMgc2ltaWxhciB0byB0
aGUgd2F5IHRoYXQgdGhlIGJ1aWx0aW4gYXJncGFyc2UgLS1oZWxwIG9wdGlvbiBpcwotICAgIGlt
cGxlbWVudGVkIGJ5IHJhaXNpbmcgU3lzdGVtRXhpdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLAotICAgICAgICAgICAgICAgICBvcHRpb25fc3RyaW5ncywKLSAgICAgICAgICAg
ICAgICAgZGVzdD1Ob25lLAotICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAg
ICAgICAgICAgICBoZWxwPU5vbmUpOgotICAgICAgICBzdXBlcihIZWxwQWN0aW9uLCBzZWxmKS5f
X2luaXRfXygKLSAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAotICAg
ICAgICAgICAgZGVzdD1kZXN0LAotICAgICAgICAgICAgY29uc3Q9VHJ1ZSwKLSAgICAgICAgICAg
IGRlZmF1bHQ9ZGVmYXVsdCwKLSAgICAgICAgICAgIG5hcmdzPTAsCi0gICAgICAgICAgICBoZWxw
PWhlbHApCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVl
cywgb3B0aW9uX3N0cmluZz1Ob25lKToKLSAgICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIHNlbGYu
ZGVzdCwgc2VsZi5jb25zdCkKLQotICAgICAgICAjIFdlIHNob3VsZCBvbmx5IHNraXAgdGhlIHJl
c3Qgb2YgdGhlIHBhcnNpbmcgYWZ0ZXIgcHJlcGFyc2UgaXMgZG9uZQotICAgICAgICBpZiBnZXRh
dHRyKHBhcnNlci5fcGFyc2VyLCAnYWZ0ZXJfcHJlcGFyc2UnLCBGYWxzZSk6Ci0gICAgICAgICAg
ICByYWlzZSBQcmludEhlbHAKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAg
IGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCdkZWJ1Z2NvbmZpZycpCi0gICAgZ3JvdXAuYWRkb3B0
aW9uKCctLXZlcnNpb24nLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJkaXNwbGF5IHB5dGVzdCBsaWIgdmVyc2lvbiBhbmQgaW1wb3J0IGluZm9ybWF0aW9u
LiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigiLWgiLCAiLS1oZWxwIiwgYWN0aW9uPUhlbHBBY3Rp
b24sIGRlc3Q9ImhlbHAiLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0ic2hvdyBoZWxwIG1l
c3NhZ2UgYW5kIGNvbmZpZ3VyYXRpb24gaW5mbyIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLXAn
LCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InBsdWdpbnMiLCBkZWZhdWx0PVtdLAotICAgICAgICAg
ICAgICAgICAgICAgbWV0YXZhcj0ibmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJl
YXJseS1sb2FkIGdpdmVuIHBsdWdpbiAobXVsdGktYWxsb3dlZCkuICIKLSAgICAgICAgICAgICAg
ICAgICAgICJUbyBhdm9pZCBsb2FkaW5nIG9mIHBsdWdpbnMsIHVzZSB0aGUgYG5vOmAgcHJlZml4
LCBlLmcuICIKLSAgICAgICAgICAgICAgICAgICAgICJgbm86ZG9jdGVzdGAuIikKLSAgICBncm91
cC5hZGRvcHRpb24oJy0tdHJhY2Vjb25maWcnLCAnLS10cmFjZS1jb25maWcnLAotICAgICAgICAg
ICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJ0cmFjZSBjb25zaWRlcmF0aW9ucyBvZiBjb25mdGVzdC5weSBmaWxl
cy4iKSwKLSAgICBncm91cC5hZGRvcHRpb24oJy0tZGVidWcnLAotICAgICAgICAgICAgICAgICAg
ICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJkZWJ1ZyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgIGhlbHA9InN0b3JlIGludGVybmFsIHRyYWNpbmcgZGVidWcgaW5mb3Jt
YXRpb24gaW4gJ3B5dGVzdGRlYnVnLmxvZycuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKAotICAg
ICAgICAnLW8nLCAnLS1vdmVycmlkZS1pbmknLCBuYXJncz0nKicsIGRlc3Q9Im92ZXJyaWRlX2lu
aSIsCi0gICAgICAgIGFjdGlvbj0iYXBwZW5kIiwKLSAgICAgICAgaGVscD0ib3ZlcnJpZGUgY29u
ZmlnIG9wdGlvbiB3aXRoIG9wdGlvbj12YWx1ZSBzdHlsZSwgZS5nLiBgLW8geGZhaWxfc3RyaWN0
PVRydWVgLiIpCi0KLQotQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5
dGVzdF9jbWRsaW5lX3BhcnNlKCk6Ci0gICAgb3V0Y29tZSA9IHlpZWxkCi0gICAgY29uZmlnID0g
b3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICBpZiBjb25maWcub3B0aW9uLmRlYnVnOgotICAgICAg
ICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKCJweXRlc3RkZWJ1Zy5sb2ciKQotICAgICAgICBkZWJ1
Z2ZpbGUgPSBvcGVuKHBhdGgsICd3JykKLSAgICAgICAgZGVidWdmaWxlLndyaXRlKCJ2ZXJzaW9u
cyBweXRlc3QtJXMsIHB5LSVzLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uLSVz
XG5jd2Q9JXNcbmFyZ3M9JXNcblxuIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
eXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIuIi5qb2luKG1hcChzdHIsIHN5cy52ZXJzaW9uX2luZm8pKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcy5nZXRjd2QoKSwgY29uZmlnLl9vcmlnYXJncykpCi0gICAgICAg
IGNvbmZpZy50cmFjZS5yb290LnNldHdyaXRlcihkZWJ1Z2ZpbGUud3JpdGUpCi0gICAgICAgIHVu
ZG9fdHJhY2luZyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmVuYWJsZV90cmFjaW5nKCkKLSAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgid3JpdGluZyBweXRlc3RkZWJ1ZyBpbmZvcm1hdGlvbiB0byAl
c1xuIiAlIHBhdGgpCi0KLSAgICAgICAgZGVmIHVuc2V0X3RyYWNpbmcoKToKLSAgICAgICAgICAg
IGRlYnVnZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJ3cm90ZSBw
eXRlc3RkZWJ1ZyBpbmZvcm1hdGlvbiB0byAlc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlYnVnZmlsZS5uYW1lKQotICAgICAgICAgICAgY29uZmlnLnRyYWNlLnJvb3Quc2V0
d3JpdGVyKE5vbmUpCi0gICAgICAgICAgICB1bmRvX3RyYWNpbmcoKQotCi0gICAgICAgIGNvbmZp
Zy5hZGRfY2xlYW51cCh1bnNldF90cmFjaW5nKQotCi0KLWRlZiBweXRlc3RfY21kbGluZV9tYWlu
KGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi52ZXJzaW9uOgotICAgICAgICBwID0gcHku
cGF0aC5sb2NhbChweXRlc3QuX19maWxlX18pCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlRo
aXMgaXMgcHl0ZXN0IHZlcnNpb24gJXMsIGltcG9ydGVkIGZyb20gJXNcbiIgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgIChweXRlc3QuX192ZXJzaW9uX18sIHApKQotICAgICAgICBwbHVnaW5p
bmZvID0gZ2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKQotICAgICAgICBpZiBwbHVnaW5pbmZv
OgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gcGx1Z2luaW5mbzoKLSAgICAgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKGxpbmUgKyAiXG4iKQotICAgICAgICByZXR1cm4gMAotICAgIGVsaWYg
Y29uZmlnLm9wdGlvbi5oZWxwOgotICAgICAgICBjb25maWcuX2RvX2NvbmZpZ3VyZSgpCi0gICAg
ICAgIHNob3doZWxwKGNvbmZpZykKLSAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUo
KQotICAgICAgICByZXR1cm4gMAotCi0KLWRlZiBzaG93aGVscChjb25maWcpOgotICAgIHJlcG9y
dGVyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigndGVybWluYWxyZXBvcnRlcicp
Ci0gICAgdHcgPSByZXBvcnRlci5fdHcKLSAgICB0dy53cml0ZShjb25maWcuX3BhcnNlci5vcHRw
YXJzZXIuZm9ybWF0X2hlbHAoKSkKLSAgICB0dy5saW5lKCkKLSAgICB0dy5saW5lKCkKLSAgICB0
dy5saW5lKCJbcHl0ZXN0XSBpbmktb3B0aW9ucyBpbiB0aGUgZmlyc3QgIgotICAgICAgICAgICAg
InB5dGVzdC5pbml8dG94LmluaXxzZXR1cC5jZmcgZmlsZSBmb3VuZDoiKQotICAgIHR3LmxpbmUo
KQotCi0gICAgZm9yIG5hbWUgaW4gY29uZmlnLl9wYXJzZXIuX2luaW5hbWVzOgotICAgICAgICBo
ZWxwLCB0eXBlLCBkZWZhdWx0ID0gY29uZmlnLl9wYXJzZXIuX2luaWRpY3RbbmFtZV0KLSAgICAg
ICAgaWYgdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgdHlwZSA9ICJzdHJpbmciCi0gICAgICAg
IHNwZWMgPSAiJXMgKCVzKSIgJSAobmFtZSwgdHlwZSkKLSAgICAgICAgbGluZSA9ICIgICUtMjRz
ICVzIiAlIChzcGVjLCBoZWxwKQotICAgICAgICB0dy5saW5lKGxpbmVbOnR3LmZ1bGx3aWR0aF0p
Ci0KLSAgICB0dy5saW5lKCkKLSAgICB0dy5saW5lKCJlbnZpcm9ubWVudCB2YXJpYWJsZXM6IikK
LSAgICB2YXJzID0gWwotICAgICAgICAoIlBZVEVTVF9BRERPUFRTIiwgImV4dHJhIGNvbW1hbmQg
bGluZSBvcHRpb25zIiksCi0gICAgICAgICgiUFlURVNUX1BMVUdJTlMiLCAiY29tbWEtc2VwYXJh
dGVkIHBsdWdpbnMgdG8gbG9hZCBkdXJpbmcgc3RhcnR1cCIpLAotICAgICAgICAoIlBZVEVTVF9E
RUJVRyIsICJzZXQgdG8gZW5hYmxlIGRlYnVnIHRyYWNpbmcgb2YgcHl0ZXN0J3MgaW50ZXJuYWxz
IikKLSAgICBdCi0gICAgZm9yIG5hbWUsIGhlbHAgaW4gdmFyczoKLSAgICAgICAgdHcubGluZSgi
ICAlLTI0cyAlcyIgJSAobmFtZSwgaGVscCkpCi0gICAgdHcubGluZSgpCi0gICAgdHcubGluZSgp
Ci0KLSAgICB0dy5saW5lKCJ0byBzZWUgYXZhaWxhYmxlIG1hcmtlcnMgdHlwZTogcHl0ZXN0IC0t
bWFya2VycyIpCi0gICAgdHcubGluZSgidG8gc2VlIGF2YWlsYWJsZSBmaXh0dXJlcyB0eXBlOiBw
eXRlc3QgLS1maXh0dXJlcyIpCi0gICAgdHcubGluZSgiKHNob3duIGFjY29yZGluZyB0byBzcGVj
aWZpZWQgZmlsZV9vcl9kaXIgb3IgY3VycmVudCBkaXIgIgotICAgICAgICAgICAgImlmIG5vdCBz
cGVjaWZpZWQpIikKLQotICAgIGZvciB3YXJuaW5ncmVwb3J0IGluIHJlcG9ydGVyLnN0YXRzLmdl
dCgnd2FybmluZ3MnLCBbXSk6Ci0gICAgICAgIHR3LmxpbmUoIndhcm5pbmcgOiAiICsgd2Fybmlu
Z3JlcG9ydC5tZXNzYWdlLCByZWQ9VHJ1ZSkKLSAgICByZXR1cm4KLQotCi1jb25mdGVzdF9vcHRp
b25zID0gWwotICAgICgncHl0ZXN0X3BsdWdpbnMnLCAnbGlzdCBvZiBwbHVnaW4gbmFtZXMgdG8g
bG9hZCcpLAotXQotCi0KLWRlZiBnZXRwbHVnaW52ZXJzaW9uaW5mbyhjb25maWcpOgotICAgIGxp
bmVzID0gW10KLSAgICBwbHVnaW5pbmZvID0gY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9wbHVn
aW5fZGlzdGluZm8oKQotICAgIGlmIHBsdWdpbmluZm86Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgi
c2V0dXB0b29scyByZWdpc3RlcmVkIHBsdWdpbnM6IikKLSAgICAgICAgZm9yIHBsdWdpbiwgZGlz
dCBpbiBwbHVnaW5pbmZvOgotICAgICAgICAgICAgbG9jID0gZ2V0YXR0cihwbHVnaW4sICdfX2Zp
bGVfXycsIHJlcHIocGx1Z2luKSkKLSAgICAgICAgICAgIGNvbnRlbnQgPSAiJXMtJXMgYXQgJXMi
ICUgKGRpc3QucHJvamVjdF9uYW1lLCBkaXN0LnZlcnNpb24sIGxvYykKLSAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgiICAiICsgY29udGVudCkKLSAgICByZXR1cm4gbGluZXMKLQotCi1kZWYgcHl0
ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnKToKLSAgICBsaW5lcyA9IFtdCi0gICAgaWYgY29uZmln
Lm9wdGlvbi5kZWJ1ZyBvciBjb25maWcub3B0aW9uLnRyYWNlY29uZmlnOgotICAgICAgICBsaW5l
cy5hcHBlbmQoInVzaW5nOiBweXRlc3QtJXMgcHlsaWItJXMiICUKLSAgICAgICAgICAgICAgICAg
ICAgIChweXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fKSkKLQotICAgICAgICB2ZXJp
bmZvID0gZ2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKQotICAgICAgICBpZiB2ZXJpbmZvOgot
ICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHZlcmluZm8pCi0KLSAgICBpZiBjb25maWcub3B0aW9u
LnRyYWNlY29uZmlnOgotICAgICAgICBsaW5lcy5hcHBlbmQoImFjdGl2ZSBwbHVnaW5zOiIpCi0g
ICAgICAgIGl0ZW1zID0gY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9uYW1lX3BsdWdpbigpCi0g
ICAgICAgIGZvciBuYW1lLCBwbHVnaW4gaW4gaXRlbXM6Ci0gICAgICAgICAgICBpZiBoYXNhdHRy
KHBsdWdpbiwgJ19fZmlsZV9fJyk6Ci0gICAgICAgICAgICAgICAgciA9IHBsdWdpbi5fX2ZpbGVf
XwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByID0gcmVwcihwbHVnaW4pCi0g
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICAlLTIwczogJXMiICUgKG5hbWUsIHIpKQotICAg
IHJldHVybiBsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ob29rc3BlYy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvaG9va3NwZWMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ0MGJmOTlkMzc1YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19w
eXRlc3QvaG9va3NwZWMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotIiIiIGhv
b2sgc3BlY2lmaWNhdGlvbnMgZm9yIHB5dGVzdCBwbHVnaW5zLCBpbnZva2VkIGZyb20gbWFpbi5w
eSBhbmQgYnVpbHRpbiBwbHVnaW5zLiAgIiIiCi0KLWZyb20gcGx1Z2d5IGltcG9ydCBIb29rc3Bl
Y01hcmtlcgotCi1ob29rc3BlYyA9IEhvb2tzcGVjTWFya2VyKCJweXRlc3QiKQotCi0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMgSW5pdGlhbGl6YXRpb24gaG9va3MgY2FsbGVkIGZvciBldmVyeSBwbHVn
aW4KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhoaXN0b3JpYz1UcnVlKQotZGVm
IHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKToKLSAgICAiIiJjYWxsZWQgYXQgcGx1Z2lu
IHJlZ2lzdHJhdGlvbiB0aW1lIHRvIGFsbG93IGFkZGluZyBuZXcgaG9va3MgdmlhIGEgY2FsbCB0
bwotICAgIHBsdWdpbm1hbmFnZXIuYWRkX2hvb2tzcGVjcyhtb2R1bGVfb3JfY2xhc3MsIHByZWZp
eCkuIiIiCi0KLQotQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCi1kZWYgcHl0ZXN0X25hbWVzcGFj
ZSgpOgotICAgICIiIgotICAgIERFUFJFQ0FURUQ6IHRoaXMgaG9vayBjYXVzZXMgZGlyZWN0IG1v
bmtleXBhdGNoaW5nIG9uIHB5dGVzdCwgaXRzIHVzZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZAot
ICAgIHJldHVybiBkaWN0IG9mIG5hbWUtPm9iamVjdCB0byBiZSBtYWRlIGdsb2JhbGx5IGF2YWls
YWJsZSBpbgotICAgIHRoZSBweXRlc3QgbmFtZXNwYWNlLiAgVGhpcyBob29rIGlzIGNhbGxlZCBh
dCBwbHVnaW4gcmVnaXN0cmF0aW9uCi0gICAgdGltZS4KLSAgICAiIiIKLQotCi1AaG9va3NwZWMo
aGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQocGx1Z2luLCBtYW5h
Z2VyKToKLSAgICAiIiIgYSBuZXcgcHl0ZXN0IHBsdWdpbiBnb3QgcmVnaXN0ZXJlZC4gIiIiCi0K
LQotQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIp
OgotICAgICIiInJlZ2lzdGVyIGFyZ3BhcnNlLXN0eWxlIG9wdGlvbnMgYW5kIGluaS1zdHlsZSBj
b25maWcgdmFsdWVzLAotICAgIGNhbGxlZCBvbmNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB0ZXN0
IHJ1bi4KLQotICAgIC4uIG5vdGU6OgotCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJl
IGltcGxlbWVudGVkIG9ubHkgaW4gcGx1Z2lucyBvciBgYGNvbmZ0ZXN0LnB5YGAKLSAgICAgICAg
ZmlsZXMgc2l0dWF0ZWQgYXQgdGhlIHRlc3RzIHJvb3QgZGlyZWN0b3J5IGR1ZSB0byBob3cgcHl0
ZXN0Ci0gICAgICAgIDpyZWY6YGRpc2NvdmVycyBwbHVnaW5zIGR1cmluZyBzdGFydHVwIDxwbHVn
aW5vcmRlcj5gLgotCi0gICAgOmFyZyBwYXJzZXI6IFRvIGFkZCBjb21tYW5kIGxpbmUgb3B0aW9u
cywgY2FsbAotICAgICAgICA6cHk6ZnVuYzpgcGFyc2VyLmFkZG9wdGlvbiguLi4pIDxfcHl0ZXN0
LmNvbmZpZy5QYXJzZXIuYWRkb3B0aW9uPmAuCi0gICAgICAgIFRvIGFkZCBpbmktZmlsZSB2YWx1
ZXMgY2FsbCA6cHk6ZnVuYzpgcGFyc2VyLmFkZGluaSguLi4pCi0gICAgICAgIDxfcHl0ZXN0LmNv
bmZpZy5QYXJzZXIuYWRkaW5pPmAuCi0KLSAgICBPcHRpb25zIGNhbiBsYXRlciBiZSBhY2Nlc3Nl
ZCB0aHJvdWdoIHRoZQotICAgIDpweTpjbGFzczpgY29uZmlnIDxfcHl0ZXN0LmNvbmZpZy5Db25m
aWc+YCBvYmplY3QsIHJlc3BlY3RpdmVseToKLQotICAgIC0gOnB5OmZ1bmM6YGNvbmZpZy5nZXRv
cHRpb24obmFtZSkgPF9weXRlc3QuY29uZmlnLkNvbmZpZy5nZXRvcHRpb24+YCB0bwotICAgICAg
cmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgY29tbWFuZCBsaW5lIG9wdGlvbi4KLQotICAgIC0gOnB5
OmZ1bmM6YGNvbmZpZy5nZXRpbmkobmFtZSkgPF9weXRlc3QuY29uZmlnLkNvbmZpZy5nZXRpbmk+
YCB0byByZXRyaWV2ZQotICAgICAgYSB2YWx1ZSByZWFkIGZyb20gYW4gaW5pLXN0eWxlIGZpbGUu
Ci0KLSAgICBUaGUgY29uZmlnIG9iamVjdCBpcyBwYXNzZWQgYXJvdW5kIG9uIG1hbnkgaW50ZXJu
YWwgb2JqZWN0cyB2aWEgdGhlIGBgLmNvbmZpZ2BgCi0gICAgYXR0cmlidXRlIG9yIGNhbiBiZSBy
ZXRyaWV2ZWQgYXMgdGhlIGBgcHl0ZXN0Y29uZmlnYGAgZml4dHVyZSBvciBhY2Nlc3NlZAotICAg
IHZpYSAoZGVwcmVjYXRlZCkgYGBweXRlc3QuY29uZmlnYGAuCi0gICAgIiIiCi0KLQotQGhvb2tz
cGVjKGhpc3RvcmljPVRydWUpCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgICIi
IgotICAgIEFsbG93cyBwbHVnaW5zIGFuZCBjb25mdGVzdCBmaWxlcyB0byBwZXJmb3JtIGluaXRp
YWwgY29uZmlndXJhdGlvbi4KLQotICAgIFRoaXMgaG9vayBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHBs
dWdpbiBhbmQgaW5pdGlhbCBjb25mdGVzdCBmaWxlCi0gICAgYWZ0ZXIgY29tbWFuZCBsaW5lIG9w
dGlvbnMgaGF2ZSBiZWVuIHBhcnNlZC4KLQotICAgIEFmdGVyIHRoYXQsIHRoZSBob29rIGlzIGNh
bGxlZCBmb3Igb3RoZXIgY29uZnRlc3QgZmlsZXMgYXMgdGhleSBhcmUKLSAgICBpbXBvcnRlZC4K
LQotICAgIDphcmcgY29uZmlnOiBweXRlc3QgY29uZmlnIG9iamVjdAotICAgIDp0eXBlIGNvbmZp
ZzogX3B5dGVzdC5jb25maWcuQ29uZmlnCi0gICAgIiIiCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
IyBCb290c3RyYXBwaW5nIGhvb2tzIGNhbGxlZCBmb3IgcGx1Z2lucyByZWdpc3RlcmVkIGVhcmx5
IGVub3VnaDoKLSMgaW50ZXJuYWwgYW5kIDNyZCBwYXJ0eSBwbHVnaW5zIGFzIHdlbGwgYXMgZGly
ZWN0bHkKLSMgZGlzY292ZXJhYmxlIGNvbmZ0ZXN0LnB5IGxvY2FsIHBsdWdpbnMuCi0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3Rf
Y21kbGluZV9wYXJzZShwbHVnaW5tYW5hZ2VyLCBhcmdzKToKLSAgICAiIiJyZXR1cm4gaW5pdGlh
bGl6ZWQgY29uZmlnIG9iamVjdCwgcGFyc2luZyB0aGUgc3BlY2lmaWVkIGFyZ3MuCi0KLSAgICBT
dG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIi
Ci0KLQotZGVmIHB5dGVzdF9jbWRsaW5lX3ByZXBhcnNlKGNvbmZpZywgYXJncyk6Ci0gICAgIiIi
KGRlcHJlY2F0ZWQpIG1vZGlmeSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGJlZm9yZSBvcHRpb24g
cGFyc2luZy4gIiIiCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0
X2NtZGxpbmVfbWFpbihjb25maWcpOgotICAgICIiIiBjYWxsZWQgZm9yIHBlcmZvcm1pbmcgdGhl
IG1haW4gY29tbWFuZCBsaW5lIGFjdGlvbi4gVGhlIGRlZmF1bHQKLSAgICBpbXBsZW1lbnRhdGlv
biB3aWxsIGludm9rZSB0aGUgY29uZmlndXJlIGhvb2tzIGFuZCBydW50ZXN0X21haW5sb29wLgot
Ci0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1
bHRgICIiIgotCi0KLWRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhlYXJseV9jb25m
aWcsIHBhcnNlciwgYXJncyk6Ci0gICAgIiIiIGltcGxlbWVudHMgdGhlIGxvYWRpbmcgb2YgaW5p
dGlhbCBjb25mdGVzdCBmaWxlcyBhaGVhZAotICAgIG9mIGNvbW1hbmQgbGluZSBvcHRpb24gcGFy
c2luZy4gIiIiCi0KLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGNvbGxlY3Rpb24gaG9va3MKLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRl
c3RfY29sbGVjdGlvbihzZXNzaW9uKToKLSAgICAiIiIgcGVyZm9ybSB0aGUgY29sbGVjdGlvbiBw
cm90b2NvbCBmb3IgdGhlIGdpdmVuIHNlc3Npb24uCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBub24t
Tm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5dGVzdF9j
b2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlc3Npb24sIGNvbmZpZywgaXRlbXMpOgotICAgICIiIiBj
YWxsZWQgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQsIG1heSBmaWx0ZXIgb3Ig
cmUtb3JkZXIKLSAgICB0aGUgaXRlbXMgaW4tcGxhY2UuIiIiCi0KLQotZGVmIHB5dGVzdF9jb2xs
ZWN0aW9uX2ZpbmlzaChzZXNzaW9uKToKLSAgICAiIiIgY2FsbGVkIGFmdGVyIGNvbGxlY3Rpb24g
aGFzIGJlZW4gcGVyZm9ybWVkIGFuZCBtb2RpZmllZC4gIiIiCi0KLQotQGhvb2tzcGVjKGZpcnN0
cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGgsIGNvbmZpZyk6Ci0g
ICAgIiIiIHJldHVybiBUcnVlIHRvIHByZXZlbnQgY29uc2lkZXJpbmcgdGhpcyBwYXRoIGZvciBj
b2xsZWN0aW9uLgotICAgIFRoaXMgaG9vayBpcyBjb25zdWx0ZWQgZm9yIGFsbCBmaWxlcyBhbmQg
ZGlyZWN0b3JpZXMgcHJpb3IgdG8gY2FsbGluZwotICAgIG1vcmUgc3BlY2lmaWMgaG9va3MuCi0K
LSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3Vs
dGAKLSAgICAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3Rf
Y29sbGVjdF9kaXJlY3RvcnkocGF0aCwgcGFyZW50KToKLSAgICAiIiIgY2FsbGVkIGJlZm9yZSB0
cmF2ZXJzaW5nIGEgZGlyZWN0b3J5IGZvciBjb2xsZWN0aW9uIGZpbGVzLgotCi0gICAgU3RvcHMg
YXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0K
LWRlZiBweXRlc3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgIiIiIHJldHVybiBj
b2xsZWN0aW9uIE5vZGUgb3IgTm9uZSBmb3IgdGhlIGdpdmVuIHBhdGguIEFueSBuZXcgbm9kZQot
ICAgIG5lZWRzIHRvIGhhdmUgdGhlIHNwZWNpZmllZCBgYHBhcmVudGBgIGFzIGEgcGFyZW50LiIi
IgotCi0jIGxvZ2dpbmcgaG9va3MgZm9yIGNvbGxlY3Rpb24KLQotCi1kZWYgcHl0ZXN0X2NvbGxl
Y3RzdGFydChjb2xsZWN0b3IpOgotICAgICIiIiBjb2xsZWN0b3Igc3RhcnRzIGNvbGxlY3Rpbmcu
ICIiIgotCi0KLWRlZiBweXRlc3RfaXRlbWNvbGxlY3RlZChpdGVtKToKLSAgICAiIiIgd2UganVz
dCBjb2xsZWN0ZWQgYSB0ZXN0IGl0ZW0uICIiIgotCi0KLWRlZiBweXRlc3RfY29sbGVjdHJlcG9y
dChyZXBvcnQpOgotICAgICIiIiBjb2xsZWN0b3IgZmluaXNoZWQgY29sbGVjdGluZy4gIiIiCi0K
LQotZGVmIHB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1zKToKLSAgICAiIiIgY2FsbGVkIGZvciB0ZXN0
IGl0ZW1zIGRlc2VsZWN0ZWQgYnkga2V5d29yZC4gIiIiCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVz
dWx0PVRydWUpCi1kZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVjdG9yKToKLSAg
ICAiIiIgcGVyZm9ybSBgYGNvbGxlY3Rvci5jb2xsZWN0KClgYCBhbmQgcmV0dXJuIGEgQ29sbGVj
dFJlcG9ydC4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6
YGZpcnN0cmVzdWx0YCAiIiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFB5dGhvbiB0ZXN0IGZ1
bmN0aW9uIHJlbGF0ZWQgaG9va3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhm
aXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZShwYXRoLCBw
YXJlbnQpOgotICAgICIiIiByZXR1cm4gYSBNb2R1bGUgY29sbGVjdG9yIG9yIE5vbmUgZm9yIHRo
ZSBnaXZlbiBwYXRoLgotICAgIFRoaXMgaG9vayB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBtYXRj
aGluZyB0ZXN0IG1vZHVsZSBwYXRoLgotICAgIFRoZSBweXRlc3RfY29sbGVjdF9maWxlIGhvb2sg
bmVlZHMgdG8gYmUgdXNlZCBpZiB5b3Ugd2FudCB0bwotICAgIGNyZWF0ZSB0ZXN0IG1vZHVsZXMg
Zm9yIGZpbGVzIHRoYXQgZG8gbm90IG1hdGNoIGFzIGEgdGVzdCBtb2R1bGUuCi0KLSAgICBTdG9w
cyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0K
LQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtl
aXRlbShjb2xsZWN0b3IsIG5hbWUsIG9iaik6Ci0gICAgIiIiIHJldHVybiBjdXN0b20gaXRlbS9j
b2xsZWN0b3IgZm9yIGEgcHl0aG9uIG9iamVjdCBpbiBhIG1vZHVsZSwgb3IgTm9uZS4KLQotICAg
IFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAi
IiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcHlmdW5jX2Nh
bGwocHlmdW5jaXRlbSk6Ci0gICAgIiIiIGNhbGwgdW5kZXJseWluZyB0ZXN0IGZ1bmN0aW9uLgot
Ci0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1
bHRgICIiIgotCi0KLWRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgotICAgICIi
IiBnZW5lcmF0ZSAobXVsdGlwbGUpIHBhcmFtZXRyaXplZCBjYWxscyB0byBhIHRlc3QgZnVuY3Rp
b24uIiIiCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X21ha2Vf
cGFyYW1ldHJpemVfaWQoY29uZmlnLCB2YWwsIGFyZ25hbWUpOgotICAgICIiIlJldHVybiBhIHVz
ZXItZnJpZW5kbHkgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBgYHZhbGBgIHRo
YXQgd2lsbCBiZSB1c2VkCi0gICAgYnkgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplIGNhbGxzLiBS
ZXR1cm4gTm9uZSBpZiB0aGUgaG9vayBkb2Vzbid0IGtub3cgYWJvdXQgYGB2YWxgYC4KLSAgICBU
aGUgcGFyYW1ldGVyIG5hbWUgaXMgYXZhaWxhYmxlIGFzIGBgYXJnbmFtZWBgLCBpZiByZXF1aXJl
ZC4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0
cmVzdWx0YCAiIiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGdlbmVyaWMgcnVudGVzdCByZWxh
dGVkIGhvb2tzCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9
VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdGxvb3Aoc2Vzc2lvbik6Ci0gICAgIiIiIGNhbGxlZCBm
b3IgcGVyZm9ybWluZyB0aGUgbWFpbiBydW50ZXN0IGxvb3AKLSAgICAoYWZ0ZXIgY29sbGVjdGlv
biBmaW5pc2hlZCkuCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6
cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5dGVzdF9pdGVtc3RhcnQoaXRlbSwgbm9k
ZSk6Ci0gICAgIiIiIChkZXByZWNhdGVkLCB1c2UgcHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQpLiAi
IiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9w
cm90b2NvbChpdGVtLCBuZXh0aXRlbSk6Ci0gICAgIiIiIGltcGxlbWVudHMgdGhlIHJ1bnRlc3Rf
c2V0dXAvY2FsbC90ZWFyZG93biBwcm90b2NvbCBmb3IKLSAgICB0aGUgZ2l2ZW4gdGVzdCBpdGVt
LCBpbmNsdWRpbmcgY2FwdHVyaW5nIGV4Y2VwdGlvbnMgYW5kIGNhbGxpbmcKLSAgICByZXBvcnRp
bmcgaG9va3MuCi0KLSAgICA6YXJnIGl0ZW06IHRlc3QgaXRlbSBmb3Igd2hpY2ggdGhlIHJ1bnRl
c3QgcHJvdG9jb2wgaXMgcGVyZm9ybWVkLgotCi0gICAgOmFyZyBuZXh0aXRlbTogdGhlIHNjaGVk
dWxlZC10by1iZS1uZXh0IHRlc3QgaXRlbSAob3IgTm9uZSBpZiB0aGlzCi0gICAgICAgICAgICAg
ICAgICAgaXMgdGhlIGVuZCBteSBmcmllbmQpLiAgVGhpcyBhcmd1bWVudCBpcyBwYXNzZWQgb24g
dG8KLSAgICAgICAgICAgICAgICAgICA6cHk6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd25g
LgotCi0gICAgOnJldHVybiBib29sZWFuOiBUcnVlIGlmIG5vIGZ1cnRoZXIgaG9vayBpbXBsZW1l
bnRhdGlvbnMgc2hvdWxkIGJlIGludm9rZWQuCi0KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1O
b25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X3J1
bnRlc3RfbG9nc3RhcnQobm9kZWlkLCBsb2NhdGlvbik6Ci0gICAgIiIiIHNpZ25hbCB0aGUgc3Rh
cnQgb2YgcnVubmluZyBhIHNpbmdsZSB0ZXN0IGl0ZW0uICIiIgotCi0KLWRlZiBweXRlc3RfcnVu
dGVzdF9zZXR1cChpdGVtKToKLSAgICAiIiIgY2FsbGVkIGJlZm9yZSBgYHB5dGVzdF9ydW50ZXN0
X2NhbGwoaXRlbSlgYC4gIiIiCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoaXRlbSk6Ci0g
ICAgIiIiIGNhbGxlZCB0byBleGVjdXRlIHRoZSB0ZXN0IGBgaXRlbWBgLiAiIiIKLQotCi1kZWYg
cHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSwgbmV4dGl0ZW0pOgotICAgICIiIiBjYWxsZWQg
YWZ0ZXIgYGBweXRlc3RfcnVudGVzdF9jYWxsYGAuCi0KLSAgICA6YXJnIG5leHRpdGVtOiB0aGUg
c2NoZWR1bGVkLXRvLWJlLW5leHQgdGVzdCBpdGVtIChOb25lIGlmIG5vIGZ1cnRoZXIKLSAgICAg
ICAgICAgICAgICAgICB0ZXN0IGl0ZW0gaXMgc2NoZWR1bGVkKS4gIFRoaXMgYXJndW1lbnQgY2Fu
IGJlIHVzZWQgdG8KLSAgICAgICAgICAgICAgICAgICBwZXJmb3JtIGV4YWN0IHRlYXJkb3ducywg
aS5lLiBjYWxsaW5nIGp1c3QgZW5vdWdoIGZpbmFsaXplcnMKLSAgICAgICAgICAgICAgICAgICBz
byB0aGF0IG5leHRpdGVtIG9ubHkgbmVlZHMgdG8gY2FsbCBzZXR1cC1mdW5jdGlvbnMuCi0gICAg
IiIiCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3Rf
bWFrZXJlcG9ydChpdGVtLCBjYWxsKToKLSAgICAiIiIgcmV0dXJuIGEgOnB5OmNsYXNzOmBfcHl0
ZXN0LnJ1bm5lci5UZXN0UmVwb3J0YCBvYmplY3QKLSAgICBmb3IgdGhlIGdpdmVuIDpweTpjbGFz
czpgcHl0ZXN0Lkl0ZW0gPF9weXRlc3QubWFpbi5JdGVtPmAgYW5kCi0gICAgOnB5OmNsYXNzOmBf
cHl0ZXN0LnJ1bm5lci5DYWxsSW5mb2AuCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSBy
ZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0
X2xvZ3JlcG9ydChyZXBvcnQpOgotICAgICIiIiBwcm9jZXNzIGEgdGVzdCBzZXR1cC9jYWxsL3Rl
YXJkb3duIHJlcG9ydCByZWxhdGluZyB0bwotICAgIHRoZSByZXNwZWN0aXZlIHBoYXNlIG9mIGV4
ZWN1dGluZyBhIHRlc3QuICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRml4dHVyZSByZWxh
dGVkIGhvb2tzCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9
VHJ1ZSkKLWRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCByZXF1ZXN0KToKLSAg
ICAiIiIgcGVyZm9ybXMgZml4dHVyZSBzZXR1cCBleGVjdXRpb24uCi0KLSAgICBTdG9wcyBhdCBm
aXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVm
IHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgotICAg
ICIiIiBjYWxsZWQgYWZ0ZXIgZml4dHVyZSB0ZWFyZG93biwgYnV0IGJlZm9yZSB0aGUgY2FjaGUg
aXMgY2xlYXJlZCBzbwotICAgIHRoZSBmaXh0dXJlIHJlc3VsdCBjYWNoZSBgYGZpeHR1cmVkZWYu
Y2FjaGVkX3Jlc3VsdGBgIGNhbgotICAgIHN0aWxsIGJlIGFjY2Vzc2VkLiIiIgotCi0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMgdGVzdCBzZXNzaW9uIHJlbGF0ZWQgaG9va3MKLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0KLWRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb24pOgotICAgICIiIiBiZWZv
cmUgc2Vzc2lvbi5tYWluKCkgaXMgY2FsbGVkLiAiIiIKLQotCi1kZWYgcHl0ZXN0X3Nlc3Npb25m
aW5pc2goc2Vzc2lvbiwgZXhpdHN0YXR1cyk6Ci0gICAgIiIiIHdob2xlIHRlc3QgcnVuIGZpbmlz
aGVzLiAiIiIKLQotCi1kZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgIiIiIGNh
bGxlZCBiZWZvcmUgdGVzdCBwcm9jZXNzIGlzIGV4aXRlZC4gICIiIgotCi0KLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotIyBob29rcyBmb3IgY3VzdG9taXppbmcgdGhlIGFzc2VydCBtZXRob2RzCi0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotZGVmIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUoY29uZmlnLCBv
cCwgbGVmdCwgcmlnaHQpOgotICAgICIiInJldHVybiBleHBsYW5hdGlvbiBmb3IgY29tcGFyaXNv
bnMgaW4gZmFpbGluZyBhc3NlcnQgZXhwcmVzc2lvbnMuCi0KLSAgICBSZXR1cm4gTm9uZSBmb3Ig
bm8gY3VzdG9tIGV4cGxhbmF0aW9uLCBvdGhlcndpc2UgcmV0dXJuIGEgbGlzdAotICAgIG9mIHN0
cmluZ3MuICBUaGUgc3RyaW5ncyB3aWxsIGJlIGpvaW5lZCBieSBuZXdsaW5lcyBidXQgYW55IG5l
d2xpbmVzCi0gICAgKmluKiBhIHN0cmluZyB3aWxsIGJlIGVzY2FwZWQuICBOb3RlIHRoYXQgYWxs
IGJ1dCB0aGUgZmlyc3QgbGluZSB3aWxsCi0gICAgYmUgaW5kZW50ZWQgc2xpZ2h0bHksIHRoZSBp
bnRlbnRpb24gaXMgZm9yIHRoZSBmaXJzdCBsaW5lIHRvIGJlIGEgc3VtbWFyeS4KLSAgICAiIiIK
LQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGhvb2tzIGZvciBpbmZsdWVuY2luZyByZXBvcnRpbmcg
KGludm9rZWQgZnJvbSBfcHl0ZXN0X3Rlcm1pbmFsKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQot
ZGVmIHB5dGVzdF9yZXBvcnRfaGVhZGVyKGNvbmZpZywgc3RhcnRkaXIpOgotICAgICIiIiByZXR1
cm4gYSBzdHJpbmcgb3IgbGlzdCBvZiBzdHJpbmdzIHRvIGJlIGRpc3BsYXllZCBhcyBoZWFkZXIg
aW5mbyBmb3IgdGVybWluYWwgcmVwb3J0aW5nLgotCi0gICAgOnBhcmFtIGNvbmZpZzogdGhlIHB5
dGVzdCBjb25maWcgb2JqZWN0LgotICAgIDpwYXJhbSBzdGFydGRpcjogcHkucGF0aCBvYmplY3Qg
d2l0aCB0aGUgc3RhcnRpbmcgZGlyCi0KLSAgICAuLiBub3RlOjoKLQotICAgICAgICBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBvbmx5IGluIHBsdWdpbnMgb3IgYGBjb25mdGVz
dC5weWBgCi0gICAgICAgIGZpbGVzIHNpdHVhdGVkIGF0IHRoZSB0ZXN0cyByb290IGRpcmVjdG9y
eSBkdWUgdG8gaG93IHB5dGVzdAotICAgICAgICA6cmVmOmBkaXNjb3ZlcnMgcGx1Z2lucyBkdXJp
bmcgc3RhcnR1cCA8cGx1Z2lub3JkZXI+YC4KLSAgICAiIiIKLQotCi1kZWYgcHl0ZXN0X3JlcG9y
dF9jb2xsZWN0aW9uZmluaXNoKGNvbmZpZywgc3RhcnRkaXIsIGl0ZW1zKToKLSAgICAiIiIKLSAg
ICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQotICAgIHJldHVybiBhIHN0cmluZyBvciBsaXN0IG9m
IHN0cmluZ3MgdG8gYmUgZGlzcGxheWVkIGFmdGVyIGNvbGxlY3Rpb24gaGFzIGZpbmlzaGVkIHN1
Y2Nlc3NmdWxseS4KLQotICAgIFRoaXMgc3RyaW5ncyB3aWxsIGJlIGRpc3BsYXllZCBhZnRlciB0
aGUgc3RhbmRhcmQgImNvbGxlY3RlZCBYIGl0ZW1zIiBtZXNzYWdlLgotCi0gICAgOnBhcmFtIGNv
bmZpZzogdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgotICAgIDpwYXJhbSBzdGFydGRpcjogcHku
cGF0aCBvYmplY3Qgd2l0aCB0aGUgc3RhcnRpbmcgZGlyCi0gICAgOnBhcmFtIGl0ZW1zOiBsaXN0
IG9mIHB5dGVzdCBpdGVtcyB0aGF0IGFyZSBnb2luZyB0byBiZSBleGVjdXRlZDsgdGhpcyBsaXN0
IHNob3VsZCBub3QgYmUgbW9kaWZpZWQuCi0gICAgIiIiCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVz
dWx0PVRydWUpCi1kZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6Ci0gICAgIiIi
IHJldHVybiByZXN1bHQtY2F0ZWdvcnksIHNob3J0bGV0dGVyIGFuZCB2ZXJib3NlIHdvcmQgZm9y
IHJlcG9ydGluZy4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpy
ZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVy
bWluYWxyZXBvcnRlciwgZXhpdHN0YXR1cyk6Ci0gICAgIiIiIGFkZCBhZGRpdGlvbmFsIHNlY3Rp
b24gaW4gdGVybWluYWwgc3VtbWFyeSByZXBvcnRpbmcuICAiIiIKLQotCi1AaG9va3NwZWMoaGlz
dG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfbG9nd2FybmluZyhtZXNzYWdlLCBjb2RlLCBub2RlaWQs
IGZzbG9jYXRpb24pOgotICAgICIiIiBwcm9jZXNzIGEgd2FybmluZyBzcGVjaWZpZWQgYnkgYSBt
ZXNzYWdlLCBhIGNvZGUgc3RyaW5nLAotICAgIGEgbm9kZWlkIGFuZCBmc2xvY2F0aW9uIChib3Ro
IG9mIHdoaWNoIG1heSBiZSBOb25lCi0gICAgaWYgdGhlIHdhcm5pbmcgaXMgbm90IHRpZWQgdG8g
YSBwYXJ0aWxhciBub2RlL2xvY2F0aW9uKS4iIiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGRv
Y3Rlc3QgaG9va3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhmaXJzdHJlc3Vs
dD1UcnVlKQotZGVmIHB5dGVzdF9kb2N0ZXN0X3ByZXBhcmVfY29udGVudChjb250ZW50KToKLSAg
ICAiIiIgcmV0dXJuIHByb2Nlc3NlZCBjb250ZW50IGZvciBhIGdpdmVuIGRvY3Rlc3QKLQotICAg
IFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAi
IiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGVycm9yIGhhbmRsaW5nIGFuZCBpbnRlcm5hbCBk
ZWJ1Z2dpbmcgaG9va3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLWRlZiBweXRlc3RfaW50ZXJu
YWxlcnJvcihleGNyZXByLCBleGNpbmZvKToKLSAgICAiIiIgY2FsbGVkIGZvciBpbnRlcm5hbCBl
cnJvcnMuICIiIgotCi0KLWRlZiBweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KGV4Y2luZm8pOgot
ICAgICIiIiBjYWxsZWQgZm9yIGtleWJvYXJkIGludGVycnVwdC4gIiIiCi0KLQotZGVmIHB5dGVz
dF9leGNlcHRpb25faW50ZXJhY3Qobm9kZSwgY2FsbCwgcmVwb3J0KToKLSAgICAiIiJjYWxsZWQg
d2hlbiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCB3aGljaCBjYW4gcG90ZW50aWFsbHkgYmUKLSAg
ICBpbnRlcmFjdGl2ZWx5IGhhbmRsZWQuCi0KLSAgICBUaGlzIGhvb2sgaXMgb25seSBjYWxsZWQg
aWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQKLSAgICB0aGF0IGlzIG5vdCBhbiBpbnRlcm5hbCBl
eGNlcHRpb24gbGlrZSBgYHNraXAuRXhjZXB0aW9uYGAuCi0gICAgIiIiCi0KLQotZGVmIHB5dGVz
dF9lbnRlcl9wZGIoY29uZmlnKToKLSAgICAiIiIgY2FsbGVkIHVwb24gcGRiLnNldF90cmFjZSgp
LCBjYW4gYmUgdXNlZCBieSBwbHVnaW5zIHRvIHRha2Ugc3BlY2lhbAotICAgIGFjdGlvbiBqdXN0
IGJlZm9yZSB0aGUgcHl0aG9uIGRlYnVnZ2VyIGVudGVycyBpbiBpbnRlcmFjdGl2ZSBtb2RlLgot
Ci0gICAgOmFyZyBjb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0Ci0gICAgOnR5cGUgY29uZmln
OiBfcHl0ZXN0LmNvbmZpZy5Db25maWcKLSAgICAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvanVuaXR4bWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2p1bml0eG1sLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmI0MGRjMzU0ODcuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2p1bml0eG1sLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDUzICswLDAgQEAKLSIiIgotICAgIHJlcG9ydCB0ZXN0IHJlc3VsdHMgaW4gSlVuaXQtWE1MIGZv
cm1hdCwKLSAgICBmb3IgdXNlIHdpdGggSmVua2lucyBhbmQgYnVpbGQgaW50ZWdyYXRpb24gc2Vy
dmVycy4KLQotCi1CYXNlZCBvbiBpbml0aWFsIGNvZGUgZnJvbSBSb3NzIExhd2xleS4KLQotT3V0
cHV0IGNvbmZvcm1zIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9qZW5raW5zY2kveHVuaXQtcGx1Z2lu
L2Jsb2IvbWFzdGVyLwotc3JjL21haW4vcmVzb3VyY2VzL29yZy9qZW5raW5zY2kvcGx1Z2lucy94
dW5pdC90eXBlcy9tb2RlbC94c2QvanVuaXQtMTAueHNkCi0iIiIKLWZyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0
IGZ1bmN0b29scwotaW1wb3J0IHB5Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwot
aW1wb3J0IHRpbWUKLWltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKLWZy
b20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGZpbGVuYW1lX2FyZwotCi0jIFB5dGhvbiAyLlggYW5k
IDMuWCBjb21wYXRpYmlsaXR5Ci1pZiBzeXMudmVyc2lvbl9pbmZvWzBdIDwgMzoKLSAgICBmcm9t
IGNvZGVjcyBpbXBvcnQgb3BlbgotZWxzZToKLSAgICB1bmljaHIgPSBjaHIKLSAgICB1bmljb2Rl
ID0gc3RyCi0gICAgbG9uZyA9IGludAotCi0KLWNsYXNzIEp1bml0KHB5LnhtbC5OYW1lc3BhY2Up
OgotICAgIHBhc3MKLQotCi0jIFdlIG5lZWQgdG8gZ2V0IHRoZSBzdWJzZXQgb2YgdGhlIGludmFs
aWQgdW5pY29kZSByYW5nZXMgYWNjb3JkaW5nIHRvCi0jIFhNTCAxLjAgd2hpY2ggYXJlIHZhbGlk
IGluIHRoaXMgcHl0aG9uIGJ1aWxkLiAgSGVuY2Ugd2UgY2FsY3VsYXRlCi0jIHRoaXMgZHluYW1p
Y2FsbHkgaW5zdGVhZCBvZiBoYXJkY29kaW5nIGl0LiAgVGhlIHNwZWMgcmFuZ2Ugb2YgdmFsaWQK
LSMgY2hhcnMgaXM6IENoYXIgOjo9ICN4OSB8ICN4QSB8ICN4RCB8IFsjeDIwLSN4RDdGRl0gfCBb
I3hFMDAwLSN4RkZGRF0KLSMgICAgICAgICAgICAgICAgICAgIHwgWyN4MTAwMDAtI3gxMEZGRkZd
Ci1fbGVnYWxfY2hhcnMgPSAoMHgwOSwgMHgwQSwgMHgwZCkKLV9sZWdhbF9yYW5nZXMgPSAoCi0g
ICAgKDB4MjAsIDB4N0UpLCAoMHg4MCwgMHhEN0ZGKSwgKDB4RTAwMCwgMHhGRkZEKSwgKDB4MTAw
MDAsIDB4MTBGRkZGKSwKLSkKLV9sZWdhbF94bWxfcmUgPSBbCi0gICAgdW5pY29kZSgiJXMtJXMi
KSAlICh1bmljaHIobG93KSwgdW5pY2hyKGhpZ2gpKQotICAgIGZvciAobG93LCBoaWdoKSBpbiBf
bGVnYWxfcmFuZ2VzIGlmIGxvdyA8IHN5cy5tYXh1bmljb2RlCi1dCi1fbGVnYWxfeG1sX3JlID0g
W3VuaWNocih4KSBmb3IgeCBpbiBfbGVnYWxfY2hhcnNdICsgX2xlZ2FsX3htbF9yZQotaWxsZWdh
bF94bWxfcmUgPSByZS5jb21waWxlKHVuaWNvZGUoJ1teJXNdJykgJSB1bmljb2RlKCcnKS5qb2lu
KF9sZWdhbF94bWxfcmUpKQotZGVsIF9sZWdhbF9jaGFycwotZGVsIF9sZWdhbF9yYW5nZXMKLWRl
bCBfbGVnYWxfeG1sX3JlCi0KLV9weV9leHRfcmUgPSByZS5jb21waWxlKHIiXC5weSQiKQotCi0K
LWRlZiBiaW5feG1sX2VzY2FwZShhcmcpOgotICAgIGRlZiByZXBsKG1hdGNob2JqKToKLSAgICAg
ICAgaSA9IG9yZChtYXRjaG9iai5ncm91cCgpKQotICAgICAgICBpZiBpIDw9IDB4RkY6Ci0gICAg
ICAgICAgICByZXR1cm4gdW5pY29kZSgnI3glMDJYJykgJSBpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICByZXR1cm4gdW5pY29kZSgnI3glMDRYJykgJSBpCi0KLSAgICByZXR1cm4gcHkueG1s
LnJhdyhpbGxlZ2FsX3htbF9yZS5zdWIocmVwbCwgcHkueG1sLmVzY2FwZShhcmcpKSkKLQotCi1j
bGFzcyBfTm9kZVJlcG9ydGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGVp
ZCwgeG1sKToKLQotICAgICAgICBzZWxmLmlkID0gbm9kZWlkCi0gICAgICAgIHNlbGYueG1sID0g
eG1sCi0gICAgICAgIHNlbGYuYWRkX3N0YXRzID0gc2VsZi54bWwuYWRkX3N0YXRzCi0gICAgICAg
IHNlbGYuZHVyYXRpb24gPSAwCi0gICAgICAgIHNlbGYucHJvcGVydGllcyA9IFtdCi0gICAgICAg
IHNlbGYubm9kZXMgPSBbXQotICAgICAgICBzZWxmLnRlc3RjYXNlID0gTm9uZQotICAgICAgICBz
ZWxmLmF0dHJzID0ge30KLQotICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHNl
bGYueG1sLmFkZF9zdGF0cyh0eXBlKG5vZGUpLl9fbmFtZV9fKQotICAgICAgICBzZWxmLm5vZGVz
LmFwcGVuZChub2RlKQotCi0gICAgZGVmIGFkZF9wcm9wZXJ0eShzZWxmLCBuYW1lLCB2YWx1ZSk6
Ci0gICAgICAgIHNlbGYucHJvcGVydGllcy5hcHBlbmQoKHN0cihuYW1lKSwgYmluX3htbF9lc2Nh
cGUodmFsdWUpKSkKLQotICAgIGRlZiBtYWtlX3Byb3BlcnRpZXNfbm9kZShzZWxmKToKLSAgICAg
ICAgIiIiUmV0dXJuIGEgSnVuaXQgbm9kZSBjb250YWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzLCBp
ZiBhbnkuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLnByb3BlcnRpZXM6Ci0gICAgICAg
ICAgICByZXR1cm4gSnVuaXQucHJvcGVydGllcyhbCi0gICAgICAgICAgICAgICAgSnVuaXQucHJv
cGVydHkobmFtZT1uYW1lLCB2YWx1ZT12YWx1ZSkKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSwg
dmFsdWUgaW4gc2VsZi5wcm9wZXJ0aWVzCi0gICAgICAgICAgICBdKQotICAgICAgICByZXR1cm4g
JycKLQotICAgIGRlZiByZWNvcmRfdGVzdHJlcG9ydChzZWxmLCB0ZXN0cmVwb3J0KToKLSAgICAg
ICAgYXNzZXJ0IG5vdCBzZWxmLnRlc3RjYXNlCi0gICAgICAgIG5hbWVzID0gbWFuZ2xlX3Rlc3Rf
YWRkcmVzcyh0ZXN0cmVwb3J0Lm5vZGVpZCkKLSAgICAgICAgY2xhc3NuYW1lcyA9IG5hbWVzWzot
MV0KLSAgICAgICAgaWYgc2VsZi54bWwucHJlZml4OgotICAgICAgICAgICAgY2xhc3NuYW1lcy5p
bnNlcnQoMCwgc2VsZi54bWwucHJlZml4KQotICAgICAgICBhdHRycyA9IHsKLSAgICAgICAgICAg
ICJjbGFzc25hbWUiOiAiLiIuam9pbihjbGFzc25hbWVzKSwKLSAgICAgICAgICAgICJuYW1lIjog
YmluX3htbF9lc2NhcGUobmFtZXNbLTFdKSwKLSAgICAgICAgICAgICJmaWxlIjogdGVzdHJlcG9y
dC5sb2NhdGlvblswXSwKLSAgICAgICAgfQotICAgICAgICBpZiB0ZXN0cmVwb3J0LmxvY2F0aW9u
WzFdIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXR0cnNbImxpbmUiXSA9IHRlc3RyZXBvcnQu
bG9jYXRpb25bMV0KLSAgICAgICAgaWYgaGFzYXR0cih0ZXN0cmVwb3J0LCAidXJsIik6Ci0gICAg
ICAgICAgICBhdHRyc1sidXJsIl0gPSB0ZXN0cmVwb3J0LnVybAotICAgICAgICBzZWxmLmF0dHJz
ID0gYXR0cnMKLQotICAgIGRlZiB0b194bWwoc2VsZik6Ci0gICAgICAgIHRlc3RjYXNlID0gSnVu
aXQudGVzdGNhc2UodGltZT1zZWxmLmR1cmF0aW9uLCAqKnNlbGYuYXR0cnMpCi0gICAgICAgIHRl
c3RjYXNlLmFwcGVuZChzZWxmLm1ha2VfcHJvcGVydGllc19ub2RlKCkpCi0gICAgICAgIGZvciBu
b2RlIGluIHNlbGYubm9kZXM6Ci0gICAgICAgICAgICB0ZXN0Y2FzZS5hcHBlbmQobm9kZSkKLSAg
ICAgICAgcmV0dXJuIHRlc3RjYXNlCi0KLSAgICBkZWYgX2FkZF9zaW1wbGUoc2VsZiwga2luZCwg
bWVzc2FnZSwgZGF0YT1Ob25lKToKLSAgICAgICAgZGF0YSA9IGJpbl94bWxfZXNjYXBlKGRhdGEp
Ci0gICAgICAgIG5vZGUgPSBraW5kKGRhdGEsIG1lc3NhZ2U9bWVzc2FnZSkKLSAgICAgICAgc2Vs
Zi5hcHBlbmQobm9kZSkKLQotICAgIGRlZiB3cml0ZV9jYXB0dXJlZF9vdXRwdXQoc2VsZiwgcmVw
b3J0KToKLSAgICAgICAgZm9yIGNhcG5hbWUgaW4gKCdvdXQnLCAnZXJyJyk6Ci0gICAgICAgICAg
ICBjb250ZW50ID0gZ2V0YXR0cihyZXBvcnQsICdjYXBzdGQnICsgY2FwbmFtZSkKLSAgICAgICAg
ICAgIGlmIGNvbnRlbnQ6Ci0gICAgICAgICAgICAgICAgdGFnID0gZ2V0YXR0cihKdW5pdCwgJ3N5
c3RlbS0nICsgY2FwbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCh0YWcoYmluX3ht
bF9lc2NhcGUoY29udGVudCkpKQotCi0gICAgZGVmIGFwcGVuZF9wYXNzKHNlbGYsIHJlcG9ydCk6
Ci0gICAgICAgIHNlbGYuYWRkX3N0YXRzKCdwYXNzZWQnKQotCi0gICAgZGVmIGFwcGVuZF9mYWls
dXJlKHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgICMgbXNnID0gc3RyKHJlcG9ydC5sb25ncmVwci5y
ZXBydHJhY2ViYWNrLmV4dHJhbGluZSkKLSAgICAgICAgaWYgaGFzYXR0cihyZXBvcnQsICJ3YXN4
ZmFpbCIpOgotICAgICAgICAgICAgc2VsZi5fYWRkX3NpbXBsZSgKLSAgICAgICAgICAgICAgICBK
dW5pdC5za2lwcGVkLAotICAgICAgICAgICAgICAgICJ4ZmFpbC1tYXJrZWQgdGVzdCBwYXNzZXMg
dW5leHBlY3RlZGx5IikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIocmVw
b3J0LmxvbmdyZXByLCAicmVwcmNyYXNoIik6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJl
cG9ydC5sb25ncmVwci5yZXByY3Jhc2gubWVzc2FnZQotICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKHJlcG9ydC5sb25ncmVwciwgKHVuaWNvZGUsIHN0cikpOgotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSByZXBvcnQubG9uZ3JlcHIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgbWVzc2FnZSA9IHN0cihyZXBvcnQubG9uZ3JlcHIpCi0gICAgICAgICAgICBtZXNzYWdlID0g
YmluX3htbF9lc2NhcGUobWVzc2FnZSkKLSAgICAgICAgICAgIGZhaWwgPSBKdW5pdC5mYWlsdXJl
KG1lc3NhZ2U9bWVzc2FnZSkKLSAgICAgICAgICAgIGZhaWwuYXBwZW5kKGJpbl94bWxfZXNjYXBl
KHJlcG9ydC5sb25ncmVwcikpCi0gICAgICAgICAgICBzZWxmLmFwcGVuZChmYWlsKQotCi0gICAg
ZGVmIGFwcGVuZF9jb2xsZWN0X2Vycm9yKHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgICMgbXNnID0g
c3RyKHJlcG9ydC5sb25ncmVwci5yZXBydHJhY2ViYWNrLmV4dHJhbGluZSkKLSAgICAgICAgc2Vs
Zi5hcHBlbmQoSnVuaXQuZXJyb3IoYmluX3htbF9lc2NhcGUocmVwb3J0LmxvbmdyZXByKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0iY29sbGVjdGlvbiBmYWlsdXJl
IikpCi0KLSAgICBkZWYgYXBwZW5kX2NvbGxlY3Rfc2tpcHBlZChzZWxmLCByZXBvcnQpOgotICAg
ICAgICBzZWxmLl9hZGRfc2ltcGxlKAotICAgICAgICAgICAgSnVuaXQuc2tpcHBlZCwgImNvbGxl
Y3Rpb24gc2tpcHBlZCIsIHJlcG9ydC5sb25ncmVwcikKLQotICAgIGRlZiBhcHBlbmRfZXJyb3Io
c2VsZiwgcmVwb3J0KToKLSAgICAgICAgaWYgZ2V0YXR0cihyZXBvcnQsICd3aGVuJywgTm9uZSkg
PT0gJ3RlYXJkb3duJzoKLSAgICAgICAgICAgIG1zZyA9ICJ0ZXN0IHRlYXJkb3duIGZhaWx1cmUi
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2cgPSAidGVzdCBzZXR1cCBmYWlsdXJlIgot
ICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKAotICAgICAgICAgICAgSnVuaXQuZXJyb3IsIG1zZywg
cmVwb3J0LmxvbmdyZXByKQotCi0gICAgZGVmIGFwcGVuZF9za2lwcGVkKHNlbGYsIHJlcG9ydCk6
Ci0gICAgICAgIGlmIGhhc2F0dHIocmVwb3J0LCAid2FzeGZhaWwiKToKLSAgICAgICAgICAgIHNl
bGYuX2FkZF9zaW1wbGUoCi0gICAgICAgICAgICAgICAgSnVuaXQuc2tpcHBlZCwgImV4cGVjdGVk
IHRlc3QgZmFpbHVyZSIsIHJlcG9ydC53YXN4ZmFpbAotICAgICAgICAgICAgKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgc2tpcHJlYXNvbiA9IHJlcG9ydC5s
b25ncmVwcgotICAgICAgICAgICAgaWYgc2tpcHJlYXNvbi5zdGFydHN3aXRoKCJTa2lwcGVkOiAi
KToKLSAgICAgICAgICAgICAgICBza2lwcmVhc29uID0gYmluX3htbF9lc2NhcGUoc2tpcHJlYXNv
bls5Ol0pCi0gICAgICAgICAgICBzZWxmLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBKdW5pdC5z
a2lwcGVkKCIlczolczogJXMiICUgKGZpbGVuYW1lLCBsaW5lbm8sIHNraXByZWFzb24pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0icHl0ZXN0LnNraXAiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1za2lwcmVhc29uKSkKLSAgICAgICAgc2VsZi53
cml0ZV9jYXB0dXJlZF9vdXRwdXQocmVwb3J0KQotCi0gICAgZGVmIGZpbmFsaXplKHNlbGYpOgot
ICAgICAgICBkYXRhID0gc2VsZi50b194bWwoKS51bmljb2RlKGluZGVudD0wKQotICAgICAgICBz
ZWxmLl9fZGljdF9fLmNsZWFyKCkKLSAgICAgICAgc2VsZi50b194bWwgPSBsYW1iZGE6IHB5Lnht
bC5yYXcoZGF0YSkKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiByZWNvcmRfeG1sX3Byb3BlcnR5
KHJlcXVlc3QpOgotICAgICIiIkFkZCBleHRyYSB4bWwgcHJvcGVydGllcyB0byB0aGUgdGFnIGZv
ciB0aGUgY2FsbGluZyB0ZXN0LgotICAgIFRoZSBmaXh0dXJlIGlzIGNhbGxhYmxlIHdpdGggYGAo
bmFtZSwgdmFsdWUpYGAsIHdpdGggdmFsdWUgYmVpbmcgYXV0b21hdGljYWxseQotICAgIHhtbC1l
bmNvZGVkLgotICAgICIiIgotICAgIHJlcXVlc3Qubm9kZS53YXJuKAotICAgICAgICBjb2RlPSdD
MycsCi0gICAgICAgIG1lc3NhZ2U9J3JlY29yZF94bWxfcHJvcGVydHkgaXMgYW4gZXhwZXJpbWVu
dGFsIGZlYXR1cmUnLAotICAgICkKLSAgICB4bWwgPSBnZXRhdHRyKHJlcXVlc3QuY29uZmlnLCAi
X3htbCIsIE5vbmUpCi0gICAgaWYgeG1sIGlzIG5vdCBOb25lOgotICAgICAgICBub2RlX3JlcG9y
dGVyID0geG1sLm5vZGVfcmVwb3J0ZXIocmVxdWVzdC5ub2RlLm5vZGVpZCkKLSAgICAgICAgcmV0
dXJuIG5vZGVfcmVwb3J0ZXIuYWRkX3Byb3BlcnR5Ci0gICAgZWxzZToKLSAgICAgICAgZGVmIGFk
ZF9wcm9wZXJ0eV9ub29wKG5hbWUsIHZhbHVlKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAg
ICByZXR1cm4gYWRkX3Byb3BlcnR5X25vb3AKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJz
ZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmciKQot
ICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgJy0tanVuaXR4bWwnLCAnLS1qdW5pdC14bWwn
LAotICAgICAgICBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgZGVzdD0ieG1scGF0aCIsCi0gICAg
ICAgIG1ldGF2YXI9InBhdGgiLAotICAgICAgICB0eXBlPWZ1bmN0b29scy5wYXJ0aWFsKGZpbGVu
YW1lX2FyZywgb3B0bmFtZT0iLS1qdW5pdHhtbCIpLAotICAgICAgICBkZWZhdWx0PU5vbmUsCi0g
ICAgICAgIGhlbHA9ImNyZWF0ZSBqdW5pdC14bWwgc3R5bGUgcmVwb3J0IGZpbGUgYXQgZ2l2ZW4g
cGF0aC4iKQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgJy0tanVuaXRwcmVmaXgnLCAn
LS1qdW5pdC1wcmVmaXgnLAotICAgICAgICBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgbWV0YXZh
cj0ic3RyIiwKLSAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICBoZWxwPSJwcmVwZW5kIHBy
ZWZpeCB0byBjbGFzc25hbWVzIGluIGp1bml0LXhtbCBvdXRwdXQiKQotICAgIHBhcnNlci5hZGRp
bmkoImp1bml0X3N1aXRlX25hbWUiLCAiVGVzdCBzdWl0ZSBuYW1lIGZvciBKVW5pdCByZXBvcnQi
LCBkZWZhdWx0PSJweXRlc3QiKQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0g
ICAgeG1scGF0aCA9IGNvbmZpZy5vcHRpb24ueG1scGF0aAotICAgICMgcHJldmVudCBvcGVuaW5n
IHhtbGxvZyBvbiBzbGF2ZSBub2RlcyAoeGRpc3QpCi0gICAgaWYgeG1scGF0aCBhbmQgbm90IGhh
c2F0dHIoY29uZmlnLCAnc2xhdmVpbnB1dCcpOgotICAgICAgICBjb25maWcuX3htbCA9IExvZ1hN
TCh4bWxwYXRoLCBjb25maWcub3B0aW9uLmp1bml0cHJlZml4LCBjb25maWcuZ2V0aW5pKCJqdW5p
dF9zdWl0ZV9uYW1lIikpCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKGNv
bmZpZy5feG1sKQotCi0KLWRlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKToKLSAgICB4bWwg
PSBnZXRhdHRyKGNvbmZpZywgJ194bWwnLCBOb25lKQotICAgIGlmIHhtbDoKLSAgICAgICAgZGVs
IGNvbmZpZy5feG1sCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnVucmVnaXN0ZXIoeG1s
KQotCi0KLWRlZiBtYW5nbGVfdGVzdF9hZGRyZXNzKGFkZHJlc3MpOgotICAgIHBhdGgsIHBvc3Np
YmxlX29wZW5fYnJhY2tldCwgcGFyYW1zID0gYWRkcmVzcy5wYXJ0aXRpb24oJ1snKQotICAgIG5h
bWVzID0gcGF0aC5zcGxpdCgiOjoiKQotICAgIHRyeToKLSAgICAgICAgbmFtZXMucmVtb3ZlKCco
KScpCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICAjIGNvbnZlcnQg
ZmlsZSBwYXRoIHRvIGRvdHRlZCBwYXRoCi0gICAgbmFtZXNbMF0gPSBuYW1lc1swXS5yZXBsYWNl
KG5vZGVzLlNFUCwgJy4nKQotICAgIG5hbWVzWzBdID0gX3B5X2V4dF9yZS5zdWIoIiIsIG5hbWVz
WzBdKQotICAgICMgcHV0IGFueSBwYXJhbXMgYmFjawotICAgIG5hbWVzWy0xXSArPSBwb3NzaWJs
ZV9vcGVuX2JyYWNrZXQgKyBwYXJhbXMKLSAgICByZXR1cm4gbmFtZXMKLQotCi1jbGFzcyBMb2dY
TUwob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZmlsZSwgcHJlZml4LCBzdWl0
ZV9uYW1lPSJweXRlc3QiKToKLSAgICAgICAgbG9nZmlsZSA9IG9zLnBhdGguZXhwYW5kdXNlcihv
cy5wYXRoLmV4cGFuZHZhcnMobG9nZmlsZSkpCi0gICAgICAgIHNlbGYubG9nZmlsZSA9IG9zLnBh
dGgubm9ybXBhdGgob3MucGF0aC5hYnNwYXRoKGxvZ2ZpbGUpKQotICAgICAgICBzZWxmLnByZWZp
eCA9IHByZWZpeAotICAgICAgICBzZWxmLnN1aXRlX25hbWUgPSBzdWl0ZV9uYW1lCi0gICAgICAg
IHNlbGYuc3RhdHMgPSBkaWN0LmZyb21rZXlzKFsKLSAgICAgICAgICAgICdlcnJvcicsCi0gICAg
ICAgICAgICAncGFzc2VkJywKLSAgICAgICAgICAgICdmYWlsdXJlJywKLSAgICAgICAgICAgICdz
a2lwcGVkJywKLSAgICAgICAgXSwgMCkKLSAgICAgICAgc2VsZi5ub2RlX3JlcG9ydGVycyA9IHt9
ICAjIG5vZGVpZCAtPiBfTm9kZVJlcG9ydGVyCi0gICAgICAgIHNlbGYubm9kZV9yZXBvcnRlcnNf
b3JkZXJlZCA9IFtdCi0gICAgICAgIHNlbGYuZ2xvYmFsX3Byb3BlcnRpZXMgPSBbXQotICAgICAg
ICAjIExpc3Qgb2YgcmVwb3J0cyB0aGF0IGZhaWxlZCBvbiBjYWxsIGJ1dCB0ZWFyZG93biBpcyBw
ZW5kaW5nLgotICAgICAgICBzZWxmLm9wZW5fcmVwb3J0cyA9IFtdCi0gICAgICAgIHNlbGYuY250
X2RvdWJsZV9mYWlsX3Rlc3RzID0gMAotCi0gICAgZGVmIGZpbmFsaXplKHNlbGYsIHJlcG9ydCk6
Ci0gICAgICAgIG5vZGVpZCA9IGdldGF0dHIocmVwb3J0LCAnbm9kZWlkJywgcmVwb3J0KQotICAg
ICAgICAjIGxvY2FsIGhhY2sgdG8gaGFuZGxlIHhkaXN0IHJlcG9ydCBvcmRlcgotICAgICAgICBz
bGF2ZW5vZGUgPSBnZXRhdHRyKHJlcG9ydCwgJ25vZGUnLCBOb25lKQotICAgICAgICByZXBvcnRl
ciA9IHNlbGYubm9kZV9yZXBvcnRlcnMucG9wKChub2RlaWQsIHNsYXZlbm9kZSkpCi0gICAgICAg
IGlmIHJlcG9ydGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVwb3J0ZXIuZmluYWxpemUo
KQotCi0gICAgZGVmIG5vZGVfcmVwb3J0ZXIoc2VsZiwgcmVwb3J0KToKLSAgICAgICAgbm9kZWlk
ID0gZ2V0YXR0cihyZXBvcnQsICdub2RlaWQnLCByZXBvcnQpCi0gICAgICAgICMgbG9jYWwgaGFj
ayB0byBoYW5kbGUgeGRpc3QgcmVwb3J0IG9yZGVyCi0gICAgICAgIHNsYXZlbm9kZSA9IGdldGF0
dHIocmVwb3J0LCAnbm9kZScsIE5vbmUpCi0KLSAgICAgICAga2V5ID0gbm9kZWlkLCBzbGF2ZW5v
ZGUKLQotICAgICAgICBpZiBrZXkgaW4gc2VsZi5ub2RlX3JlcG9ydGVyczoKLSAgICAgICAgICAg
ICMgVE9ETzogYnJlYXNrcyBmb3IgLS1kaXN0PWVhY2gKLSAgICAgICAgICAgIHJldHVybiBzZWxm
Lm5vZGVfcmVwb3J0ZXJzW2tleV0KLQotICAgICAgICByZXBvcnRlciA9IF9Ob2RlUmVwb3J0ZXIo
bm9kZWlkLCBzZWxmKQotCi0gICAgICAgIHNlbGYubm9kZV9yZXBvcnRlcnNba2V5XSA9IHJlcG9y
dGVyCi0gICAgICAgIHNlbGYubm9kZV9yZXBvcnRlcnNfb3JkZXJlZC5hcHBlbmQocmVwb3J0ZXIp
Ci0KLSAgICAgICAgcmV0dXJuIHJlcG9ydGVyCi0KLSAgICBkZWYgYWRkX3N0YXRzKHNlbGYsIGtl
eSk6Ci0gICAgICAgIGlmIGtleSBpbiBzZWxmLnN0YXRzOgotICAgICAgICAgICAgc2VsZi5zdGF0
c1trZXldICs9IDEKLQotICAgIGRlZiBfb3BlbnRlc3RjYXNlKHNlbGYsIHJlcG9ydCk6Ci0gICAg
ICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3JlcG9ydGVyKHJlcG9ydCkKLSAgICAgICAgcmVwb3J0
ZXIucmVjb3JkX3Rlc3RyZXBvcnQocmVwb3J0KQotICAgICAgICByZXR1cm4gcmVwb3J0ZXIKLQot
ICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQoc2VsZiwgcmVwb3J0KToKLSAgICAgICAg
IiIiaGFuZGxlIGEgc2V0dXAvY2FsbC90ZWFyZG93biByZXBvcnQsIGdlbmVyYXRpbmcgdGhlIGFw
cHJvcHJpYXRlCi0gICAgICAgIHhtbCB0YWdzIGFzIG5lY2Vzc2FyeS4KLQotICAgICAgICBub3Rl
OiBkdWUgdG8gcGx1Z2lucyBsaWtlIHhkaXN0LCB0aGlzIGhvb2sgbWF5IGJlIGNhbGxlZCBpbiBp
bnRlcmxhY2VkCi0gICAgICAgIG9yZGVyIHdpdGggcmVwb3J0cyBmcm9tIG90aGVyIG5vZGVzLiBm
b3IgZXhhbXBsZToKLQotICAgICAgICB1c3VhbCBjYWxsIG9yZGVyOgotICAgICAgICAgICAgLT4g
c2V0dXAgbm9kZTEKLSAgICAgICAgICAgIC0+IGNhbGwgbm9kZTEKLSAgICAgICAgICAgIC0+IHRl
YXJkb3duIG5vZGUxCi0gICAgICAgICAgICAtPiBzZXR1cCBub2RlMgotICAgICAgICAgICAgLT4g
Y2FsbCBub2RlMgotICAgICAgICAgICAgLT4gdGVhcmRvd24gbm9kZTIKLQotICAgICAgICBwb3Nz
aWJsZSBjYWxsIG9yZGVyIGluIHhkaXN0OgotICAgICAgICAgICAgLT4gc2V0dXAgbm9kZTEKLSAg
ICAgICAgICAgIC0+IGNhbGwgbm9kZTEKLSAgICAgICAgICAgIC0+IHNldHVwIG5vZGUyCi0gICAg
ICAgICAgICAtPiBjYWxsIG5vZGUyCi0gICAgICAgICAgICAtPiB0ZWFyZG93biBub2RlMgotICAg
ICAgICAgICAgLT4gdGVhcmRvd24gbm9kZTEKLSAgICAgICAgIiIiCi0gICAgICAgIGNsb3NlX3Jl
cG9ydCA9IE5vbmUKLSAgICAgICAgaWYgcmVwb3J0LnBhc3NlZDoKLSAgICAgICAgICAgIGlmIHJl
cG9ydC53aGVuID09ICJjYWxsIjogICMgaWdub3JlIHNldHVwL3RlYXJkb3duCi0gICAgICAgICAg
ICAgICAgcmVwb3J0ZXIgPSBzZWxmLl9vcGVudGVzdGNhc2UocmVwb3J0KQotICAgICAgICAgICAg
ICAgIHJlcG9ydGVyLmFwcGVuZF9wYXNzKHJlcG9ydCkKLSAgICAgICAgZWxpZiByZXBvcnQuZmFp
bGVkOgotICAgICAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gInRlYXJkb3duIjoKLSAgICAgICAg
ICAgICAgICAjIFRoZSBmb2xsb3dpbmcgdmFycyBhcmUgbmVlZGVkIHdoZW4geGRpc3QgcGx1Z2lu
IGlzIHVzZWQKLSAgICAgICAgICAgICAgICByZXBvcnRfd2lkID0gZ2V0YXR0cihyZXBvcnQsICJ3
b3JrZXJfaWQiLCBOb25lKQotICAgICAgICAgICAgICAgIHJlcG9ydF9paSA9IGdldGF0dHIocmVw
b3J0LCAiaXRlbV9pbmRleCIsIE5vbmUpCi0gICAgICAgICAgICAgICAgY2xvc2VfcmVwb3J0ID0g
bmV4dCgKLSAgICAgICAgICAgICAgICAgICAgKHJlcCBmb3IgcmVwIGluIHNlbGYub3Blbl9yZXBv
cnRzCi0gICAgICAgICAgICAgICAgICAgICBpZiAocmVwLm5vZGVpZCA9PSByZXBvcnQubm9kZWlk
IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIocmVwLCAiaXRlbV9pbmRleCIs
IE5vbmUpID09IHJlcG9ydF9paSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRy
KHJlcCwgIndvcmtlcl9pZCIsIE5vbmUpID09IHJlcG9ydF93aWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICApLCBOb25lKQotICAgICAgICAgICAgICAg
IGlmIGNsb3NlX3JlcG9ydDoKLSAgICAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIG9wZW4g
bmV3IHRlc3RjYXNlIGluIGNhc2Ugd2UgaGF2ZSBmYWlsdXJlIGluCi0gICAgICAgICAgICAgICAg
ICAgICMgY2FsbCBhbmQgZXJyb3IgaW4gdGVhcmRvd24gaW4gb3JkZXIgdG8gZm9sbG93IGp1bml0
Ci0gICAgICAgICAgICAgICAgICAgICMgc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
ZmluYWxpemUoY2xvc2VfcmVwb3J0KQotICAgICAgICAgICAgICAgICAgICBzZWxmLmNudF9kb3Vi
bGVfZmFpbF90ZXN0cyArPSAxCi0gICAgICAgICAgICByZXBvcnRlciA9IHNlbGYuX29wZW50ZXN0
Y2FzZShyZXBvcnQpCi0gICAgICAgICAgICBpZiByZXBvcnQud2hlbiA9PSAiY2FsbCI6Ci0gICAg
ICAgICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX2ZhaWx1cmUocmVwb3J0KQotICAgICAgICAgICAg
ICAgIHNlbGYub3Blbl9yZXBvcnRzLmFwcGVuZChyZXBvcnQpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJlcG9ydGVyLmFwcGVuZF9lcnJvcihyZXBvcnQpCi0gICAgICAgIGVs
aWYgcmVwb3J0LnNraXBwZWQ6Ci0gICAgICAgICAgICByZXBvcnRlciA9IHNlbGYuX29wZW50ZXN0
Y2FzZShyZXBvcnQpCi0gICAgICAgICAgICByZXBvcnRlci5hcHBlbmRfc2tpcHBlZChyZXBvcnQp
Ci0gICAgICAgIHNlbGYudXBkYXRlX3Rlc3RjYXNlX2R1cmF0aW9uKHJlcG9ydCkKLSAgICAgICAg
aWYgcmVwb3J0LndoZW4gPT0gInRlYXJkb3duIjoKLSAgICAgICAgICAgIHJlcG9ydGVyID0gc2Vs
Zi5fb3BlbnRlc3RjYXNlKHJlcG9ydCkKLSAgICAgICAgICAgIHJlcG9ydGVyLndyaXRlX2NhcHR1
cmVkX291dHB1dChyZXBvcnQpCi0gICAgICAgICAgICBzZWxmLmZpbmFsaXplKHJlcG9ydCkKLSAg
ICAgICAgICAgIHJlcG9ydF93aWQgPSBnZXRhdHRyKHJlcG9ydCwgIndvcmtlcl9pZCIsIE5vbmUp
Ci0gICAgICAgICAgICByZXBvcnRfaWkgPSBnZXRhdHRyKHJlcG9ydCwgIml0ZW1faW5kZXgiLCBO
b25lKQotICAgICAgICAgICAgY2xvc2VfcmVwb3J0ID0gbmV4dCgKLSAgICAgICAgICAgICAgICAo
cmVwIGZvciByZXAgaW4gc2VsZi5vcGVuX3JlcG9ydHMKLSAgICAgICAgICAgICAgICAgaWYgKHJl
cC5ub2RlaWQgPT0gcmVwb3J0Lm5vZGVpZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgIGdldGF0
dHIocmVwLCAiaXRlbV9pbmRleCIsIE5vbmUpID09IHJlcG9ydF9paSBhbmQKLSAgICAgICAgICAg
ICAgICAgICAgIGdldGF0dHIocmVwLCAid29ya2VyX2lkIiwgTm9uZSkgPT0gcmVwb3J0X3dpZAot
ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICApLCBOb25lKQotICAgICAg
ICAgICAgaWYgY2xvc2VfcmVwb3J0OgotICAgICAgICAgICAgICAgIHNlbGYub3Blbl9yZXBvcnRz
LnJlbW92ZShjbG9zZV9yZXBvcnQpCi0KLSAgICBkZWYgdXBkYXRlX3Rlc3RjYXNlX2R1cmF0aW9u
KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgICIiImFjY3VtdWxhdGVzIHRvdGFsIGR1cmF0aW9uIGZv
ciBub2RlaWQgZnJvbSBnaXZlbiByZXBvcnQgYW5kIHVwZGF0ZXMKLSAgICAgICAgdGhlIEp1bml0
LnRlc3RjYXNlIHdpdGggdGhlIG5ldyB0b3RhbCBpZiBhbHJlYWR5IGNyZWF0ZWQuCi0gICAgICAg
ICIiIgotICAgICAgICByZXBvcnRlciA9IHNlbGYubm9kZV9yZXBvcnRlcihyZXBvcnQpCi0gICAg
ICAgIHJlcG9ydGVyLmR1cmF0aW9uICs9IGdldGF0dHIocmVwb3J0LCAnZHVyYXRpb24nLCAwLjAp
Ci0KLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQoc2VsZiwgcmVwb3J0KToKLSAgICAgICAg
aWYgbm90IHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAgICAgICByZXBvcnRlciA9IHNlbGYuX29wZW50
ZXN0Y2FzZShyZXBvcnQpCi0gICAgICAgICAgICBpZiByZXBvcnQuZmFpbGVkOgotICAgICAgICAg
ICAgICAgIHJlcG9ydGVyLmFwcGVuZF9jb2xsZWN0X2Vycm9yKHJlcG9ydCkKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX2NvbGxlY3Rfc2tpcHBlZChy
ZXBvcnQpCi0KLSAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjcmVwcik6Ci0g
ICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3JlcG9ydGVyKCdpbnRlcm5hbCcpCi0gICAgICAg
IHJlcG9ydGVyLmF0dHJzLnVwZGF0ZShjbGFzc25hbWU9InB5dGVzdCIsIG5hbWU9J2ludGVybmFs
JykKLSAgICAgICAgcmVwb3J0ZXIuX2FkZF9zaW1wbGUoSnVuaXQuZXJyb3IsICdpbnRlcm5hbCBl
cnJvcicsIGV4Y3JlcHIpCi0KLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxmKToKLSAg
ICAgICAgc2VsZi5zdWl0ZV9zdGFydF90aW1lID0gdGltZS50aW1lKCkKLQotICAgIGRlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaChzZWxmKToKLSAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmFic3BhdGgoc2VsZi5sb2dmaWxlKSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGgu
aXNkaXIoZGlybmFtZSk6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQotICAgICAg
ICBsb2dmaWxlID0gb3BlbihzZWxmLmxvZ2ZpbGUsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykKLSAg
ICAgICAgc3VpdGVfc3RvcF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgc3VpdGVfdGltZV9k
ZWx0YSA9IHN1aXRlX3N0b3BfdGltZSAtIHNlbGYuc3VpdGVfc3RhcnRfdGltZQotCi0gICAgICAg
IG51bXRlc3RzID0gKHNlbGYuc3RhdHNbJ3Bhc3NlZCddICsgc2VsZi5zdGF0c1snZmFpbHVyZSdd
ICsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0c1snc2tpcHBlZCddICsgc2VsZi5zdGF0
c1snZXJyb3InXSAtCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuY250X2RvdWJsZV9mYWlsX3Rl
c3RzKQotICAgICAgICBsb2dmaWxlLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PicpCi0KLSAgICAgICAgbG9nZmlsZS53cml0ZShKdW5pdC50ZXN0c3VpdGUoCi0g
ICAgICAgICAgICBzZWxmLl9nZXRfZ2xvYmFsX3Byb3BlcnRpZXNfbm9kZSgpLAotICAgICAgICAg
ICAgW3gudG9feG1sKCkgZm9yIHggaW4gc2VsZi5ub2RlX3JlcG9ydGVyc19vcmRlcmVkXSwKLSAg
ICAgICAgICAgIG5hbWU9c2VsZi5zdWl0ZV9uYW1lLAotICAgICAgICAgICAgZXJyb3JzPXNlbGYu
c3RhdHNbJ2Vycm9yJ10sCi0gICAgICAgICAgICBmYWlsdXJlcz1zZWxmLnN0YXRzWydmYWlsdXJl
J10sCi0gICAgICAgICAgICBza2lwcz1zZWxmLnN0YXRzWydza2lwcGVkJ10sCi0gICAgICAgICAg
ICB0ZXN0cz1udW10ZXN0cywKLSAgICAgICAgICAgIHRpbWU9IiUuM2YiICUgc3VpdGVfdGltZV9k
ZWx0YSwgKS51bmljb2RlKGluZGVudD0wKSkKLSAgICAgICAgbG9nZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkoc2VsZiwgdGVybWluYWxyZXBvcnRlcik6Ci0g
ICAgICAgIHRlcm1pbmFscmVwb3J0ZXIud3JpdGVfc2VwKCItIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImdlbmVyYXRlZCB4bWwgZmlsZTogJXMiICUgKHNlbGYubG9nZmls
ZSkpCi0KLSAgICBkZWYgYWRkX2dsb2JhbF9wcm9wZXJ0eShzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0g
ICAgICAgIHNlbGYuZ2xvYmFsX3Byb3BlcnRpZXMuYXBwZW5kKChzdHIobmFtZSksIGJpbl94bWxf
ZXNjYXBlKHZhbHVlKSkpCi0KLSAgICBkZWYgX2dldF9nbG9iYWxfcHJvcGVydGllc19ub2RlKHNl
bGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBKdW5pdCBub2RlIGNvbnRhaW5pbmcgY3VzdG9tIHBy
b3BlcnRpZXMsIGlmIGFueS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuZ2xvYmFsX3By
b3BlcnRpZXM6Ci0gICAgICAgICAgICByZXR1cm4gSnVuaXQucHJvcGVydGllcygKLSAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIEp1bml0LnByb3BlcnR5KG5hbWU9bmFtZSwg
dmFsdWU9dmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxm
Lmdsb2JhbF9wcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgKQotICAg
ICAgICByZXR1cm4gJycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbG9nZ2luZy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbG9nZ2luZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWQ0ZGIyNWFkNDQzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9sb2dnaW5nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IGxvZ2dpbmcKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZywgY29udGV4
dG1hbmFnZXIKLWltcG9ydCBzeXMKLWltcG9ydCBzaXgKLQotaW1wb3J0IHB5dGVzdAotaW1wb3J0
IHB5Ci0KLQotREVGQVVMVF9MT0dfRk9STUFUID0gJyUoZmlsZW5hbWUpLTI1cyAlKGxpbmVubyk0
ZCAlKGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMnCi1ERUZBVUxUX0xPR19EQVRFX0ZPUk1BVCA9
ICclSDolTTolUycKLQotCi1kZWYgZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAqbmFtZXMpOgotICAg
IGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICByZXQgPSBjb25maWcuZ2V0b3B0aW9uKG5hbWUp
ICAjICdkZWZhdWx0JyBhcmcgd29uJ3Qgd29yayBhcyBleHBlY3RlZAotICAgICAgICBpZiByZXQg
aXMgTm9uZToKLSAgICAgICAgICAgIHJldCA9IGNvbmZpZy5nZXRpbmkobmFtZSkKLSAgICAgICAg
aWYgcmV0OgotICAgICAgICAgICAgcmV0dXJuIHJldAotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcik6Ci0gICAgIiIiQWRkIG9wdGlvbnMgdG8gY29udHJvbCBsb2cgY2FwdHVyaW5nLiIi
IgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCdsb2dnaW5nJykKLQotICAgIGRlZiBhZGRf
b3B0aW9uX2luaShvcHRpb24sIGRlc3QsIGRlZmF1bHQ9Tm9uZSwgdHlwZT1Ob25lLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHBhcnNlci5hZGRpbmkoZGVzdCwgZGVmYXVsdD1kZWZhdWx0LCB0eXBlPXR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGVmYXVsdCB2YWx1ZSBmb3IgJyArIG9w
dGlvbikKLSAgICAgICAgZ3JvdXAuYWRkb3B0aW9uKG9wdGlvbiwgZGVzdD1kZXN0LCAqKmt3YXJn
cykKLQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1uby1wcmludC1sb2dzJywKLSAg
ICAgICAgZGVzdD0nbG9nX3ByaW50JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PUZhbHNl
LCBkZWZhdWx0PVRydWUsCi0gICAgICAgIHR5cGU9J2Jvb2wnLAotICAgICAgICBoZWxwPSdkaXNh
YmxlIHByaW50aW5nIGNhdWdodCBsb2dzIG9uIGZhaWxlZCB0ZXN0cy4nKQotICAgIGFkZF9vcHRp
b25faW5pKAotICAgICAgICAnLS1sb2ctbGV2ZWwnLAotICAgICAgICBkZXN0PSdsb2dfbGV2ZWwn
LCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9J2xvZ2dpbmcgbGV2ZWwgdXNlZCBieSB0aGUg
bG9nZ2luZyBtb2R1bGUnKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctZm9y
bWF0JywKLSAgICAgICAgZGVzdD0nbG9nX2Zvcm1hdCcsIGRlZmF1bHQ9REVGQVVMVF9MT0dfRk9S
TUFULAotICAgICAgICBoZWxwPSdsb2cgZm9ybWF0IGFzIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9k
dWxlLicpCi0gICAgYWRkX29wdGlvbl9pbmkoCi0gICAgICAgICctLWxvZy1kYXRlLWZvcm1hdCcs
Ci0gICAgICAgIGRlc3Q9J2xvZ19kYXRlX2Zvcm1hdCcsIGRlZmF1bHQ9REVGQVVMVF9MT0dfREFU
RV9GT1JNQVQsCi0gICAgICAgIGhlbHA9J2xvZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBs
b2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctY2xp
LWxldmVsJywKLSAgICAgICAgZGVzdD0nbG9nX2NsaV9sZXZlbCcsIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgaGVscD0nY2xpIGxvZ2dpbmcgbGV2ZWwuJykKLSAgICBhZGRfb3B0aW9uX2luaSgKLSAg
ICAgICAgJy0tbG9nLWNsaS1mb3JtYXQnLAotICAgICAgICBkZXN0PSdsb2dfY2xpX2Zvcm1hdCcs
IGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0nbG9nIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBs
b2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctY2xp
LWRhdGUtZm9ybWF0JywKLSAgICAgICAgZGVzdD0nbG9nX2NsaV9kYXRlX2Zvcm1hdCcsIGRlZmF1
bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0nbG9nIGRhdGUgZm9ybWF0IGFzIHVzZWQgYnkgdGhlIGxv
Z2dpbmcgbW9kdWxlLicpCi0gICAgYWRkX29wdGlvbl9pbmkoCi0gICAgICAgICctLWxvZy1maWxl
JywKLSAgICAgICAgZGVzdD0nbG9nX2ZpbGUnLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9
J3BhdGggdG8gYSBmaWxlIHdoZW4gbG9nZ2luZyB3aWxsIGJlIHdyaXR0ZW4gdG8uJykKLSAgICBh
ZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWZpbGUtbGV2ZWwnLAotICAgICAgICBkZXN0
PSdsb2dfZmlsZV9sZXZlbCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0nbG9nIGZpbGUg
bG9nZ2luZyBsZXZlbC4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctZmls
ZS1mb3JtYXQnLAotICAgICAgICBkZXN0PSdsb2dfZmlsZV9mb3JtYXQnLCBkZWZhdWx0PURFRkFV
TFRfTE9HX0ZPUk1BVCwKLSAgICAgICAgaGVscD0nbG9nIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBs
b2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctZmls
ZS1kYXRlLWZvcm1hdCcsCi0gICAgICAgIGRlc3Q9J2xvZ19maWxlX2RhdGVfZm9ybWF0JywgZGVm
YXVsdD1ERUZBVUxUX0xPR19EQVRFX0ZPUk1BVCwKLSAgICAgICAgaGVscD0nbG9nIGRhdGUgZm9y
bWF0IGFzIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlLicpCi0KLQotQGNvbnRleHRtYW5hZ2Vy
Ci1kZWYgbG9nZ2luZ191c2luZ19oYW5kbGVyKGhhbmRsZXIsIGxvZ2dlcj1Ob25lKToKLSAgICAi
IiJDb250ZXh0IG1hbmFnZXIgdGhhdCBzYWZlbHkgcmVnaXN0ZXJzIGEgZ2l2ZW4gaGFuZGxlci4i
IiIKLSAgICBsb2dnZXIgPSBsb2dnZXIgb3IgbG9nZ2luZy5nZXRMb2dnZXIobG9nZ2VyKQotCi0g
ICAgaWYgaGFuZGxlciBpbiBsb2dnZXIuaGFuZGxlcnM6ICAjIHJlZW50cmFuY3kKLSAgICAgICAg
IyBBZGRpbmcgdGhlIHNhbWUgaGFuZGxlciB0d2ljZSB3b3VsZCBjb25mdXNlIGxvZ2dpbmcgc3lz
dGVtLgotICAgICAgICAjIEp1c3QgZG9uJ3QgZG8gdGhhdC4KLSAgICAgICAgeWllbGQKLSAgICBl
bHNlOgotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB5aWVsZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgbG9nZ2VyLnJl
bW92ZUhhbmRsZXIoaGFuZGxlcikKLQotCi1AY29udGV4dG1hbmFnZXIKLWRlZiBjYXRjaGluZ19s
b2dzKGhhbmRsZXIsIGZvcm1hdHRlcj1Ob25lLAotICAgICAgICAgICAgICAgICAgbGV2ZWw9bG9n
Z2luZy5OT1RTRVQsIGxvZ2dlcj1Ob25lKToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCBw
cmVwYXJlcyB0aGUgd2hvbGUgbG9nZ2luZyBtYWNoaW5lcnkgcHJvcGVybHkuIiIiCi0gICAgbG9n
Z2VyID0gbG9nZ2VyIG9yIGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcikKLQotICAgIGlmIGZvcm1h
dHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVy
KQotICAgIGhhbmRsZXIuc2V0TGV2ZWwobGV2ZWwpCi0KLSAgICB3aXRoIGxvZ2dpbmdfdXNpbmdf
aGFuZGxlcihoYW5kbGVyLCBsb2dnZXIpOgotICAgICAgICBvcmlnX2xldmVsID0gbG9nZ2VyLmxl
dmVsCi0gICAgICAgIGxvZ2dlci5zZXRMZXZlbChtaW4ob3JpZ19sZXZlbCwgbGV2ZWwpKQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZCBoYW5kbGVyCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBsb2dnZXIuc2V0TGV2ZWwob3JpZ19sZXZlbCkKLQotCi1jbGFzcyBMb2dDYXB0
dXJlSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgotICAgICIiIkEgbG9nZ2luZyBoYW5k
bGVyIHRoYXQgc3RvcmVzIGxvZyByZWNvcmRzIGFuZCB0aGUgbG9nIHRleHQuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgbG9nIGhhbmRsZXIu
IiIiCi0gICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlci5fX2luaXRfXyhzZWxmLCBweS5pby5U
ZXh0SU8oKSkKLSAgICAgICAgc2VsZi5yZWNvcmRzID0gW10KLQotICAgIGRlZiBlbWl0KHNlbGYs
IHJlY29yZCk6Ci0gICAgICAgICIiIktlZXAgdGhlIGxvZyByZWNvcmRzIGluIGEgbGlzdCBpbiBh
ZGRpdGlvbiB0byB0aGUgbG9nIHRleHQuIiIiCi0gICAgICAgIHNlbGYucmVjb3Jkcy5hcHBlbmQo
cmVjb3JkKQotICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQp
Ci0KLQotY2xhc3MgTG9nQ2FwdHVyZUZpeHR1cmUob2JqZWN0KToKLSAgICAiIiJQcm92aWRlcyBh
Y2Nlc3MgYW5kIGNvbnRyb2wgb2YgbG9nIGNhcHR1cmluZy4iIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBpdGVtKToKLSAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBmdW5jYXJnLiIiIgotICAg
ICAgICBzZWxmLl9pdGVtID0gaXRlbQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGhhbmRsZXIo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9pdGVtLmNhdGNoX2xvZ19oYW5kbGVyCi0KLSAg
ICBAcHJvcGVydHkKLSAgICBkZWYgdGV4dChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUg
bG9nIHRleHQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmhhbmRsZXIuc3RyZWFtLmdldHZhbHVl
KCkKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiByZWNvcmRzKHNlbGYpOgotICAgICAgICAiIiJS
ZXR1cm5zIHRoZSBsaXN0IG9mIGxvZyByZWNvcmRzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5o
YW5kbGVyLnJlY29yZHMKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiByZWNvcmRfdHVwbGVzKHNl
bGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhIHN0cmlwZWQgZG93biB2ZXJzaW9u
IG9mIGxvZyByZWNvcmRzIGludGVuZGVkCi0gICAgICAgIGZvciB1c2UgaW4gYXNzZXJ0aW9uIGNv
bXBhcmlzb24uCi0KLSAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgdHVwbGUgaXM6Ci0KLSAgICAg
ICAgICAgIChsb2dnZXJfbmFtZSwgbG9nX2xldmVsLCBtZXNzYWdlKQotICAgICAgICAiIiIKLSAg
ICAgICAgcmV0dXJuIFsoci5uYW1lLCByLmxldmVsbm8sIHIuZ2V0TWVzc2FnZSgpKSBmb3IgciBp
biBzZWxmLnJlY29yZHNdCi0KLSAgICBkZWYgY2xlYXIoc2VsZik6Ci0gICAgICAgICIiIlJlc2V0
IHRoZSBsaXN0IG9mIGxvZyByZWNvcmRzLiIiIgotICAgICAgICBzZWxmLmhhbmRsZXIucmVjb3Jk
cyA9IFtdCi0KLSAgICBkZWYgc2V0X2xldmVsKHNlbGYsIGxldmVsLCBsb2dnZXI9Tm9uZSk6Ci0g
ICAgICAgICIiIlNldHMgdGhlIGxldmVsIGZvciBjYXB0dXJpbmcgb2YgbG9ncy4KLQotICAgICAg
ICBCeSBkZWZhdWx0LCB0aGUgbGV2ZWwgaXMgc2V0IG9uIHRoZSBoYW5kbGVyIHVzZWQgdG8gY2Fw
dHVyZQotICAgICAgICBsb2dzLiBTcGVjaWZ5IGEgbG9nZ2VyIG5hbWUgdG8gaW5zdGVhZCBzZXQg
dGhlIGxldmVsIG9mIGFueQotICAgICAgICBsb2dnZXIuCi0gICAgICAgICIiIgotICAgICAgICBp
ZiBsb2dnZXIgaXMgTm9uZToKLSAgICAgICAgICAgIGxvZ2dlciA9IHNlbGYuaGFuZGxlcgotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIobG9nZ2Vy
KQotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCi0KLSAgICBAY29udGV4dG1hbmFnZXIK
LSAgICBkZWYgYXRfbGV2ZWwoc2VsZiwgbGV2ZWwsIGxvZ2dlcj1Ob25lKToKLSAgICAgICAgIiIi
Q29udGV4dCBtYW5hZ2VyIHRoYXQgc2V0cyB0aGUgbGV2ZWwgZm9yIGNhcHR1cmluZyBvZiBsb2dz
LgotCi0gICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsZXZlbCBpcyBzZXQgb24gdGhlIGhhbmRsZXIg
dXNlZCB0byBjYXB0dXJlCi0gICAgICAgIGxvZ3MuIFNwZWNpZnkgYSBsb2dnZXIgbmFtZSB0byBp
bnN0ZWFkIHNldCB0aGUgbGV2ZWwgb2YgYW55Ci0gICAgICAgIGxvZ2dlci4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGlmIGxvZ2dlciBpcyBOb25lOgotICAgICAgICAgICAgbG9nZ2VyID0gc2VsZi5o
YW5kbGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExv
Z2dlcihsb2dnZXIpCi0KLSAgICAgICAgb3JpZ19sZXZlbCA9IGxvZ2dlci5sZXZlbAotICAgICAg
ICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxk
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBsb2dnZXIuc2V0TGV2ZWwob3JpZ19sZXZl
bCkKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBsb2cocmVxdWVzdCk6Ci0gICAgIiIiQWNj
ZXNzIGFuZCBjb250cm9sIGxvZyBjYXB0dXJpbmcuCi0KLSAgICBDYXB0dXJlZCBsb2dzIGFyZSBh
dmFpbGFibGUgdGhyb3VnaCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6OgotCi0gICAgKiBjYXBsb2cu
dGV4dCgpICAgICAgICAgIC0+IHN0cmluZyBjb250YWluaW5nIGZvcm1hdHRlZCBsb2cgb3V0cHV0
Ci0gICAgKiBjYXBsb2cucmVjb3JkcygpICAgICAgIC0+IGxpc3Qgb2YgbG9nZ2luZy5Mb2dSZWNv
cmQgaW5zdGFuY2VzCi0gICAgKiBjYXBsb2cucmVjb3JkX3R1cGxlcygpIC0+IGxpc3Qgb2YgKGxv
Z2dlcl9uYW1lLCBsZXZlbCwgbWVzc2FnZSkgdHVwbGVzCi0gICAgIiIiCi0gICAgcmV0dXJuIExv
Z0NhcHR1cmVGaXh0dXJlKHJlcXVlc3Qubm9kZSkKLQotCi1kZWYgZ2V0X2FjdHVhbF9sb2dfbGV2
ZWwoY29uZmlnLCAqc2V0dGluZ19uYW1lcyk6Ci0gICAgIiIiUmV0dXJuIHRoZSBhY3R1YWwgbG9n
Z2luZyBsZXZlbC4iIiIKLQotICAgIGZvciBzZXR0aW5nX25hbWUgaW4gc2V0dGluZ19uYW1lczoK
LSAgICAgICAgbG9nX2xldmVsID0gY29uZmlnLmdldG9wdGlvbihzZXR0aW5nX25hbWUpCi0gICAg
ICAgIGlmIGxvZ19sZXZlbCBpcyBOb25lOgotICAgICAgICAgICAgbG9nX2xldmVsID0gY29uZmln
LmdldGluaShzZXR0aW5nX25hbWUpCi0gICAgICAgIGlmIGxvZ19sZXZlbDoKLSAgICAgICAgICAg
IGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBpc2luc3RhbmNlKGxv
Z19sZXZlbCwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgIGxvZ19sZXZlbCA9IGxvZ19sZXZl
bC51cHBlcigpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gaW50KGdldGF0dHIobG9nZ2luZywg
bG9nX2xldmVsLCBsb2dfbGV2ZWwpKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAj
IFB5dGhvbiBsb2dnaW5nIGRvZXMgbm90IHJlY29nbmlzZSB0aGlzIGFzIGEgbG9nZ2luZyBsZXZl
bAotICAgICAgICByYWlzZSBweXRlc3QuVXNhZ2VFcnJvcigKLSAgICAgICAgICAgICInezB9JyBp
cyBub3QgcmVjb2duaXplZCBhcyBhIGxvZ2dpbmcgbGV2ZWwgbmFtZSBmb3IgIgotICAgICAgICAg
ICAgIid7MX0nLiBQbGVhc2UgY29uc2lkZXIgcGFzc2luZyB0aGUgIgotICAgICAgICAgICAgImxv
Z2dpbmcgbGV2ZWwgbnVtIGluc3RlYWQuIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgbG9nX2xl
dmVsLAotICAgICAgICAgICAgICAgIHNldHRpbmdfbmFtZSkpCi0KLQotZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKToKLSAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihMb2dnaW5n
UGx1Z2luKGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2dp
bmctcGx1Z2luJykKLQotCi1jbGFzcyBMb2dnaW5nUGx1Z2luKG9iamVjdCk6Ci0gICAgIiIiQXR0
YWNoZXMgdG8gdGhlIGxvZ2dpbmcgbW9kdWxlIGFuZCBjYXB0dXJlcyBsb2cgbWVzc2FnZXMgZm9y
IGVhY2ggdGVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgot
ICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IHBsdWdpbiB0byBjYXB0dXJlIGxvZyBtZXNzYWdlcy4K
LQotICAgICAgICBUaGUgZm9ybWF0dGVyIGNhbiBiZSBzYWZlbHkgc2hhcmVkIGFjcm9zcyBhbGwg
aGFuZGxlcnMgc28KLSAgICAgICAgY3JlYXRlIGEgc2luZ2xlIG9uZSBmb3IgdGhlIGVudGlyZSB0
ZXN0IHNlc3Npb24gaGVyZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubG9nX2NsaV9sZXZl
bCA9IGdldF9hY3R1YWxfbG9nX2xldmVsKAotICAgICAgICAgICAgY29uZmlnLCAnbG9nX2NsaV9s
ZXZlbCcsICdsb2dfbGV2ZWwnKSBvciBsb2dnaW5nLldBUk5JTkcKLQotICAgICAgICBzZWxmLnBy
aW50X2xvZ3MgPSBnZXRfb3B0aW9uX2luaShjb25maWcsICdsb2dfcHJpbnQnKQotICAgICAgICBz
ZWxmLmZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAgICAgICAgICAgZ2V0X29wdGlv
bl9pbmkoY29uZmlnLCAnbG9nX2Zvcm1hdCcpLAotICAgICAgICAgICAgZ2V0X29wdGlvbl9pbmko
Y29uZmlnLCAnbG9nX2RhdGVfZm9ybWF0JykpCi0KLSAgICAgICAgbG9nX2NsaV9oYW5kbGVyID0g
bG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCi0gICAgICAgIGxvZ19jbGlfZm9ybWF0
ID0gZ2V0X29wdGlvbl9pbmkoCi0gICAgICAgICAgICBjb25maWcsICdsb2dfY2xpX2Zvcm1hdCcs
ICdsb2dfZm9ybWF0JykKLSAgICAgICAgbG9nX2NsaV9kYXRlX2Zvcm1hdCA9IGdldF9vcHRpb25f
aW5pKAotICAgICAgICAgICAgY29uZmlnLCAnbG9nX2NsaV9kYXRlX2Zvcm1hdCcsICdsb2dfZGF0
ZV9mb3JtYXQnKQotICAgICAgICBsb2dfY2xpX2Zvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVy
KAotICAgICAgICAgICAgbG9nX2NsaV9mb3JtYXQsCi0gICAgICAgICAgICBkYXRlZm10PWxvZ19j
bGlfZGF0ZV9mb3JtYXQpCi0gICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyID0gbG9nX2NsaV9o
YW5kbGVyICAjIG5lZWRlZCBmb3IgYSBzaW5nbGUgdW5pdHRlc3QKLSAgICAgICAgc2VsZi5saXZl
X2xvZ3MgPSBjYXRjaGluZ19sb2dzKGxvZ19jbGlfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcj1sb2dfY2xpX2Zvcm1hdHRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPXNlbGYubG9nX2NsaV9sZXZl
bCkKLQotICAgICAgICBsb2dfZmlsZSA9IGdldF9vcHRpb25faW5pKGNvbmZpZywgJ2xvZ19maWxl
JykKLSAgICAgICAgaWYgbG9nX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ19maWxlX2xldmVs
ID0gZ2V0X2FjdHVhbF9sb2dfbGV2ZWwoCi0gICAgICAgICAgICAgICAgY29uZmlnLCAnbG9nX2Zp
bGVfbGV2ZWwnKSBvciBsb2dnaW5nLldBUk5JTkcKLQotICAgICAgICAgICAgbG9nX2ZpbGVfZm9y
bWF0ID0gZ2V0X29wdGlvbl9pbmkoCi0gICAgICAgICAgICAgICAgY29uZmlnLCAnbG9nX2ZpbGVf
Zm9ybWF0JywgJ2xvZ19mb3JtYXQnKQotICAgICAgICAgICAgbG9nX2ZpbGVfZGF0ZV9mb3JtYXQg
PSBnZXRfb3B0aW9uX2luaSgKLSAgICAgICAgICAgICAgICBjb25maWcsICdsb2dfZmlsZV9kYXRl
X2Zvcm1hdCcsICdsb2dfZGF0ZV9mb3JtYXQnKQotICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9o
YW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcigKLSAgICAgICAgICAgICAgICBsb2dfZmlsZSwK
LSAgICAgICAgICAgICAgICAjIEVhY2ggcHl0ZXN0IHJ1bnRlc3RzIHNlc3Npb24gd2lsbCB3cml0
ZSB0byBhIGNsZWFuIGxvZ2ZpbGUKLSAgICAgICAgICAgICAgICBtb2RlPSd3JykKLSAgICAgICAg
ICAgIGxvZ19maWxlX2Zvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAgICAgICAgICAg
ICAgIGxvZ19maWxlX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICBkYXRlZm10PWxvZ19maWxlX2Rh
dGVfZm9ybWF0KQotICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyLnNldEZvcm1hdHRl
cihsb2dfZmlsZV9mb3JtYXR0ZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxv
Z19maWxlX2hhbmRsZXIgPSBOb25lCi0KLSAgICBAY29udGV4dG1hbmFnZXIKLSAgICBkZWYgX3J1
bnRlc3RfZm9yKHNlbGYsIGl0ZW0sIHdoZW4pOgotICAgICAgICAiIiJJbXBsZW1lbnRzIHRoZSBp
bnRlcm5hbHMgb2YgcHl0ZXN0X3J1bnRlc3RfeHh4KCkgaG9vay4iIiIKLSAgICAgICAgd2l0aCBj
YXRjaGluZ19sb2dzKExvZ0NhcHR1cmVIYW5kbGVyKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JtYXR0ZXI9c2VsZi5mb3JtYXR0ZXIpIGFzIGxvZ19oYW5kbGVyOgotICAgICAgICAg
ICAgaXRlbS5jYXRjaF9sb2dfaGFuZGxlciA9IGxvZ19oYW5kbGVyCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgeWllbGQgICMgcnVuIHRlc3QKLSAgICAgICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICAgICAgZGVsIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXIKLQotICAgICAgICAg
ICAgaWYgc2VsZi5wcmludF9sb2dzOgotICAgICAgICAgICAgICAgICMgQWRkIGEgY2FwdHVyZWQg
bG9nIHNlY3Rpb24gdG8gdGhlIHJlcG9ydC4KLSAgICAgICAgICAgICAgICBsb2cgPSBsb2dfaGFu
ZGxlci5zdHJlYW0uZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgaXRlbS5hZGRf
cmVwb3J0X3NlY3Rpb24od2hlbiwgJ2xvZycsIGxvZykKLQotICAgIEBweXRlc3QuaG9va2ltcGwo
aG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoc2VsZiwgaXRl
bSk6Ci0gICAgICAgIHdpdGggc2VsZi5fcnVudGVzdF9mb3IoaXRlbSwgJ3NldHVwJyk6Ci0gICAg
ICAgICAgICB5aWVsZAotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQot
ICAgIGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKHNlbGYsIGl0ZW0pOgotICAgICAgICB3aXRoIHNl
bGYuX3J1bnRlc3RfZm9yKGl0ZW0sICdjYWxsJyk6Ci0gICAgICAgICAgICB5aWVsZAotCi0gICAg
QHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVz
dF90ZWFyZG93bihzZWxmLCBpdGVtKToKLSAgICAgICAgd2l0aCBzZWxmLl9ydW50ZXN0X2Zvcihp
dGVtLCAndGVhcmRvd24nKToKLSAgICAgICAgICAgIHlpZWxkCi0KLSAgICBAcHl0ZXN0Lmhvb2tp
bXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZWxmLCBz
ZXNzaW9uKToKLSAgICAgICAgIiIiUnVucyBhbGwgY29sbGVjdGVkIHRlc3QgaXRlbXMuIiIiCi0g
ICAgICAgIHdpdGggc2VsZi5saXZlX2xvZ3M6Ci0gICAgICAgICAgICBpZiBzZWxmLmxvZ19maWxl
X2hhbmRsZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2l0aCBjbG9zaW5nKHNlbGYu
bG9nX2ZpbGVfaGFuZGxlcik6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggY2F0Y2hpbmdfbG9n
cyhzZWxmLmxvZ19maWxlX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZXZlbD1zZWxmLmxvZ19maWxlX2xldmVsKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHlpZWxkICAjIHJ1biBhbGwgdGhlIHRlc3RzCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHlpZWxkICAjIHJ1biBhbGwgdGhlIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L21haW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L21haW4ucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NTU0MDk4ZGFjMi4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvbWFpbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDgyMSArMCww
IEBACi0iIiIgY29yZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0aW5nIHByb2Nlc3M6IGluaXQsIHNl
c3Npb24sIHJ1bnRlc3QgbG9vcC4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBmdW5jdG9vbHMKLWlt
cG9ydCBvcwotaW1wb3J0IHNpeAotaW1wb3J0IHN5cwotCi1pbXBvcnQgX3B5dGVzdAotZnJvbSBf
cHl0ZXN0IGltcG9ydCBub2RlcwotaW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQotdHJ5
OgotICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nIGFzIE1hcHBpbmdN
aXhpbgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gVXNlckRpY3QgaW1wb3J0IERpY3RN
aXhpbiBhcyBNYXBwaW5nTWl4aW4KLQotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgZGlyZWN0
b3J5X2FyZywgVXNhZ2VFcnJvciwgaG9va2ltcGwKLWZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBv
cnQgZXhpdAotZnJvbSBfcHl0ZXN0LnJ1bm5lciBpbXBvcnQgY29sbGVjdF9vbmVfbm9kZQotCi10
cmFjZWJhY2tjdXRkaXIgPSBweS5wYXRoLmxvY2FsKF9weXRlc3QuX19maWxlX18pLmRpcnBhdGgo
KQotCi0jIGV4aXRjb2RlcyBmb3IgdGhlIGNvbW1hbmQgbGluZQotRVhJVF9PSyA9IDAKLUVYSVRf
VEVTVFNGQUlMRUQgPSAxCi1FWElUX0lOVEVSUlVQVEVEID0gMgotRVhJVF9JTlRFUk5BTEVSUk9S
ID0gMwotRVhJVF9VU0FHRUVSUk9SID0gNAotRVhJVF9OT1RFU1RTQ09MTEVDVEVEID0gNQotCi0K
LWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgcGFyc2VyLmFkZGluaSgibm9yZWN1
cnNlZGlycyIsICJkaXJlY3RvcnkgcGF0dGVybnMgdG8gYXZvaWQgZm9yIHJlY3Vyc2lvbiIsCi0g
ICAgICAgICAgICAgICAgICB0eXBlPSJhcmdzIiwgZGVmYXVsdD1bJy4qJywgJ2J1aWxkJywgJ2Rp
c3QnLCAnQ1ZTJywgJ19kYXJjcycsICd7YXJjaH0nLCAnKi5lZ2cnLCAndmVudiddKQotICAgIHBh
cnNlci5hZGRpbmkoInRlc3RwYXRocyIsICJkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIHRlc3Rz
IHdoZW4gbm8gZmlsZXMgb3IgZGlyZWN0b3JpZXMgYXJlIGdpdmVuIGluIHRoZSAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQgbGluZS4iLAotICAgICAgICAgICAgICAg
ICAgdHlwZT0iYXJncyIsIGRlZmF1bHQ9W10pCi0gICAgIyBwYXJzZXIuYWRkaW5pKCJkaXJwYXR0
ZXJucyIsCi0gICAgIyAgICAicGF0dGVybnMgc3BlY2lmeWluZyBwb3NzaWJsZSBsb2NhdGlvbnMg
b2YgdGVzdCBmaWxlcyIsCi0gICAgIyAgICB0eXBlPSJsaW5lbGlzdCIsIGRlZmF1bHQ9WyIqKi90
ZXN0XyoudHh0IiwKLSAgICAjICAgICAgICAgICAgIioqL3Rlc3RfKi5weSIsICIqKi8qX3Rlc3Qu
cHkiXQotICAgICMgKQotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIiwgInJ1
bm5pbmcgYW5kIHNlbGVjdGlvbiBvcHRpb25zIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCcteCcs
ICctLWV4aXRmaXJzdCcsIGFjdGlvbj0ic3RvcmVfY29uc3QiLAotICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ibWF4ZmFpbCIsIGNvbnN0PTEsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJl
eGl0IGluc3RhbnRseSBvbiBmaXJzdCBlcnJvciBvciBmYWlsZWQgdGVzdC4iKSwKLSAgICBncm91
cC5fYWRkb3B0aW9uKCctLW1heGZhaWwnLCBtZXRhdmFyPSJudW0iLAotICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSJzdG9yZSIsIHR5cGU9aW50LCBkZXN0PSJtYXhmYWlsIiwgZGVmYXVsdD0w
LAotICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXhpdCBhZnRlciBmaXJzdCBudW0gZmFpbHVy
ZXMgb3IgZXJyb3JzLiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLS1zdHJpY3QnLCBhY3Rpb249
InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0ibWFya3Mgbm90IHJlZ2lz
dGVyZWQgaW4gY29uZmlndXJhdGlvbiBmaWxlIHJhaXNlIGVycm9ycy4iKQotICAgIGdyb3VwLl9h
ZGRvcHRpb24oIi1jIiwgbWV0YXZhcj0iZmlsZSIsIHR5cGU9c3RyLCBkZXN0PSJpbmlmaWxlbmFt
ZSIsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJsb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBg
ZmlsZWAgaW5zdGVhZCBvZiB0cnlpbmcgdG8gbG9jYXRlIG9uZSBvZiB0aGUgaW1wbGljaXQgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uZmlndXJhdGlvbiBmaWxlcy4iKQotICAgIGdy
b3VwLl9hZGRvcHRpb24oIi0tY29udGludWUtb24tY29sbGVjdGlvbi1lcnJvcnMiLCBhY3Rpb249
InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0i
Y29udGludWVfb25fY29sbGVjdGlvbl9lcnJvcnMiLAotICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iRm9yY2UgdGVzdCBleGVjdXRpb24gZXZlbiBpZiBjb2xsZWN0aW9uIGVycm9ycyBvY2N1ci4i
KQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImNvbGxlY3QiLCAiY29sbGVjdGlvbiIp
Ci0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLWNvbGxlY3Rvbmx5JywgJy0tY29sbGVjdC1vbmx5Jywg
YWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBjb2xs
ZWN0IHRlc3RzLCBkb24ndCBleGVjdXRlIHRoZW0uIiksCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCct
LXB5YXJncycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9
InRyeSB0byBpbnRlcnByZXQgYWxsIGFyZ3VtZW50cyBhcyBweXRob24gcGFja2FnZXMuIikKLSAg
ICBncm91cC5hZGRvcHRpb24oIi0taWdub3JlIiwgYWN0aW9uPSJhcHBlbmQiLCBtZXRhdmFyPSJw
YXRoIiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iaWdub3JlIHBhdGggZHVyaW5nIGNvbGxl
Y3Rpb24gKG11bHRpLWFsbG93ZWQpLiIpCi0gICAgIyB3aGVuIGNoYW5naW5nIHRoaXMgdG8gLS1j
b25mLWN1dC1kaXIsIGNvbmZpZy5weSBDb25mdGVzdC5zZXRpbml0aWFsCi0gICAgIyBuZWVkcyB1
cGdyYWRpbmcgYXMgd2VsbAotICAgIGdyb3VwLmFkZG9wdGlvbignLS1jb25mY3V0ZGlyJywgZGVz
dD0iY29uZmN1dGRpciIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgbWV0YXZh
cj0iZGlyIiwgdHlwZT1mdW5jdG9vbHMucGFydGlhbChkaXJlY3RvcnlfYXJnLCBvcHRuYW1lPSIt
LWNvbmZjdXRkaXIiKSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBsb2FkIGNvbmZ0
ZXN0LnB5J3MgcmVsYXRpdmUgdG8gc3BlY2lmaWVkIGRpci4iKQotICAgIGdyb3VwLmFkZG9wdGlv
bignLS1ub2NvbmZ0ZXN0JywgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ibm9jb25mdGVzdCIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
IGhlbHA9IkRvbid0IGxvYWQgYW55IGNvbmZ0ZXN0LnB5IGZpbGVzLiIpCi0gICAgZ3JvdXAuYWRk
b3B0aW9uKCctLWtlZXBkdXBsaWNhdGVzJywgJy0ta2VlcC1kdXBsaWNhdGVzJywgYWN0aW9uPSJz
dG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0ia2VlcGR1cGxpY2F0ZXMiLCBk
ZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJLZWVwIGR1cGxpY2F0ZSB0
ZXN0cy4iKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1jb2xsZWN0LWluLXZpcnR1YWxlbnYnLCBh
Y3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb2xsZWN0X2lu
X3ZpcnR1YWxlbnYnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJE
b24ndCBpZ25vcmUgdGVzdHMgaW4gYSBsb2NhbCB2aXJ0dWFsZW52IGRpcmVjdG9yeSIpCi0KLSAg
ICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZGVidWdjb25maWciLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXN0IHNlc3Npb24gZGVidWdnaW5nIGFuZCBjb25maWd1cmF0aW9uIikK
LSAgICBncm91cC5hZGRvcHRpb24oJy0tYmFzZXRlbXAnLCBkZXN0PSJiYXNldGVtcCIsIGRlZmF1
bHQ9Tm9uZSwgbWV0YXZhcj0iZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iYmFzZSB0
ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciB0aGlzIHRlc3QgcnVuLiIpCi0KLQotZGVmIHB5dGVzdF9j
b25maWd1cmUoY29uZmlnKToKLSAgICBfX2ltcG9ydF9fKCdweXRlc3QnKS5jb25maWcgPSBjb25m
aWcgICMgY29tcGF0aWJpbHRpeQotCi0KLWRlZiB3cmFwX3Nlc3Npb24oY29uZmlnLCBkb2l0KToK
LSAgICAiIiJTa2VsZXRvbiBjb21tYW5kIGxpbmUgcHJvZ3JhbSIiIgotICAgIHNlc3Npb24gPSBT
ZXNzaW9uKGNvbmZpZykKLSAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFWElUX09LCi0gICAgaW5p
dHN0YXRlID0gMAotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29uZmlnLl9k
b19jb25maWd1cmUoKQotICAgICAgICAgICAgaW5pdHN0YXRlID0gMQotICAgICAgICAgICAgY29u
ZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uPXNlc3Npb24pCi0gICAgICAgICAg
ICBpbml0c3RhdGUgPSAyCi0gICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBkb2l0KGNv
bmZpZywgc2Vzc2lvbikgb3IgMAotICAgICAgICBleGNlcHQgVXNhZ2VFcnJvcjoKLSAgICAgICAg
ICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBGYWlsZWQ6Ci0gICAgICAgICAgICBzZXNzaW9uLmV4
aXRzdGF0dXMgPSBFWElUX1RFU1RTRkFJTEVECi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKLSAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8o
KQotICAgICAgICAgICAgaWYgaW5pdHN0YXRlIDwgMiBhbmQgaXNpbnN0YW5jZShleGNpbmZvLnZh
bHVlLCBleGl0LkV4Y2VwdGlvbik6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgn
ezB9OiB7MX1cbicuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBleGNpbmZvLnR5cGVuYW1l
LCBleGNpbmZvLnZhbHVlLm1zZykpCi0gICAgICAgICAgICBjb25maWcuaG9vay5weXRlc3Rfa2V5
Ym9hcmRfaW50ZXJydXB0KGV4Y2luZm89ZXhjaW5mbykKLSAgICAgICAgICAgIHNlc3Npb24uZXhp
dHN0YXR1cyA9IEVYSVRfSU5URVJSVVBURUQKLSAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAg
ICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKLSAgICAgICAg
ICAgIGNvbmZpZy5ub3RpZnlfZXhjZXB0aW9uKGV4Y2luZm8sIGNvbmZpZy5vcHRpb24pCi0gICAg
ICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFWElUX0lOVEVSTkFMRVJST1IKLSAgICAgICAg
ICAgIGlmIGV4Y2luZm8uZXJyaXNpbnN0YW5jZShTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCJtYWlubG9vcDogY2F1Z2h0IFNwdXJpb3VzIFN5c3RlbUV4aXQh
XG4iKQotCi0gICAgZmluYWxseToKLSAgICAgICAgZXhjaW5mbyA9IE5vbmUgICMgRXhwbGljaXRs
eSBicmVhayByZWZlcmVuY2UgY3ljbGUuCi0gICAgICAgIHNlc3Npb24uc3RhcnRkaXIuY2hkaXIo
KQotICAgICAgICBpZiBpbml0c3RhdGUgPj0gMjoKLSAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5
dGVzdF9zZXNzaW9uZmluaXNoKAotICAgICAgICAgICAgICAgIHNlc3Npb249c2Vzc2lvbiwKLSAg
ICAgICAgICAgICAgICBleGl0c3RhdHVzPXNlc3Npb24uZXhpdHN0YXR1cykKLSAgICAgICAgY29u
ZmlnLl9lbnN1cmVfdW5jb25maWd1cmUoKQotICAgIHJldHVybiBzZXNzaW9uLmV4aXRzdGF0dXMK
LQotCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgotICAgIHJldHVybiB3cmFwX3Nl
c3Npb24oY29uZmlnLCBfbWFpbikKLQotCi1kZWYgX21haW4oY29uZmlnLCBzZXNzaW9uKToKLSAg
ICAiIiIgZGVmYXVsdCBjb21tYW5kIGxpbmUgcHJvdG9jb2wgZm9yIGluaXRpYWxpemF0aW9uLCBz
ZXNzaW9uLAotICAgIHJ1bm5pbmcgdGVzdHMgYW5kIHJlcG9ydGluZy4gIiIiCi0gICAgY29uZmln
Lmhvb2sucHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbj1zZXNzaW9uKQotICAgIGNvbmZpZy5ob29r
LnB5dGVzdF9ydW50ZXN0bG9vcChzZXNzaW9uPXNlc3Npb24pCi0KLSAgICBpZiBzZXNzaW9uLnRl
c3RzZmFpbGVkOgotICAgICAgICByZXR1cm4gRVhJVF9URVNUU0ZBSUxFRAotICAgIGVsaWYgc2Vz
c2lvbi50ZXN0c2NvbGxlY3RlZCA9PSAwOgotICAgICAgICByZXR1cm4gRVhJVF9OT1RFU1RTQ09M
TEVDVEVECi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0aW9uKHNlc3Npb24pOgotICAgIHJldHVybiBz
ZXNzaW9uLnBlcmZvcm1fY29sbGVjdCgpCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZXNz
aW9uKToKLSAgICBpZiAoc2Vzc2lvbi50ZXN0c2ZhaWxlZCBhbmQKLSAgICAgICAgICAgIG5vdCBz
ZXNzaW9uLmNvbmZpZy5vcHRpb24uY29udGludWVfb25fY29sbGVjdGlvbl9lcnJvcnMpOgotICAg
ICAgICByYWlzZSBzZXNzaW9uLkludGVycnVwdGVkKAotICAgICAgICAgICAgIiVkIGVycm9ycyBk
dXJpbmcgY29sbGVjdGlvbiIgJSBzZXNzaW9uLnRlc3RzZmFpbGVkKQotCi0gICAgaWYgc2Vzc2lv
bi5jb25maWcub3B0aW9uLmNvbGxlY3Rvbmx5OgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAg
Zm9yIGksIGl0ZW0gaW4gZW51bWVyYXRlKHNlc3Npb24uaXRlbXMpOgotICAgICAgICBuZXh0aXRl
bSA9IHNlc3Npb24uaXRlbXNbaSArIDFdIGlmIGkgKyAxIDwgbGVuKHNlc3Npb24uaXRlbXMpIGVs
c2UgTm9uZQotICAgICAgICBpdGVtLmNvbmZpZy5ob29rLnB5dGVzdF9ydW50ZXN0X3Byb3RvY29s
KGl0ZW09aXRlbSwgbmV4dGl0ZW09bmV4dGl0ZW0pCi0gICAgICAgIGlmIHNlc3Npb24uc2hvdWxk
ZmFpbDoKLSAgICAgICAgICAgIHJhaXNlIHNlc3Npb24uRmFpbGVkKHNlc3Npb24uc2hvdWxkZmFp
bCkKLSAgICAgICAgaWYgc2Vzc2lvbi5zaG91bGRzdG9wOgotICAgICAgICAgICAgcmFpc2Ugc2Vz
c2lvbi5JbnRlcnJ1cHRlZChzZXNzaW9uLnNob3VsZHN0b3ApCi0gICAgcmV0dXJuIFRydWUKLQot
Ci1kZWYgX2luX3ZlbnYocGF0aCk6Ci0gICAgIiIiQXR0ZW1wdHMgdG8gZGV0ZWN0IGlmIGBgcGF0
aGBgIGlzIHRoZSByb290IG9mIGEgVmlydHVhbCBFbnZpcm9ubWVudCBieQotICAgIGNoZWNraW5n
IGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhY3RpdmF0ZSBzY3JpcHQiIiIK
LSAgICBiaW5kaXIgPSBwYXRoLmpvaW4oJ1NjcmlwdHMnIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCd3aW4nKSBlbHNlICdiaW4nKQotICAgIGlmIG5vdCBiaW5kaXIuZXhpc3RzKCk6Ci0gICAg
ICAgIHJldHVybiBGYWxzZQotICAgIGFjdGl2YXRlcyA9ICgnYWN0aXZhdGUnLCAnYWN0aXZhdGUu
Y3NoJywgJ2FjdGl2YXRlLmZpc2gnLAotICAgICAgICAgICAgICAgICAnQWN0aXZhdGUnLCAnQWN0
aXZhdGUuYmF0JywgJ0FjdGl2YXRlLnBzMScpCi0gICAgcmV0dXJuIGFueShbZm5hbWUuYmFzZW5h
bWUgaW4gYWN0aXZhdGVzIGZvciBmbmFtZSBpbiBiaW5kaXIubGlzdGRpcigpXSkKLQotCi1kZWYg
cHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGgsIGNvbmZpZyk6Ci0gICAgaWdub3JlX3BhdGhzID0g
Y29uZmlnLl9nZXRjb25mdGVzdF9wYXRobGlzdCgiY29sbGVjdF9pZ25vcmUiLCBwYXRoPXBhdGgu
ZGlycGF0aCgpKQotICAgIGlnbm9yZV9wYXRocyA9IGlnbm9yZV9wYXRocyBvciBbXQotICAgIGV4
Y2x1ZGVvcHQgPSBjb25maWcuZ2V0b3B0aW9uKCJpZ25vcmUiKQotICAgIGlmIGV4Y2x1ZGVvcHQ6
Ci0gICAgICAgIGlnbm9yZV9wYXRocy5leHRlbmQoW3B5LnBhdGgubG9jYWwoeCkgZm9yIHggaW4g
ZXhjbHVkZW9wdF0pCi0KLSAgICBpZiBweS5wYXRoLmxvY2FsKHBhdGgpIGluIGlnbm9yZV9wYXRo
czoKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGFsbG93X2luX3ZlbnYgPSBjb25maWcuZ2V0
b3B0aW9uKCJjb2xsZWN0X2luX3ZpcnR1YWxlbnYiKQotICAgIGlmIF9pbl92ZW52KHBhdGgpIGFu
ZCBub3QgYWxsb3dfaW5fdmVudjoKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgU2tpcCBk
dXBsaWNhdGUgcGF0aHMuCi0gICAga2VlcGR1cGxpY2F0ZXMgPSBjb25maWcuZ2V0b3B0aW9uKCJr
ZWVwZHVwbGljYXRlcyIpCi0gICAgZHVwbGljYXRlX3BhdGhzID0gY29uZmlnLnBsdWdpbm1hbmFn
ZXIuX2R1cGxpY2F0ZXBhdGhzCi0gICAgaWYgbm90IGtlZXBkdXBsaWNhdGVzOgotICAgICAgICBp
ZiBwYXRoIGluIGR1cGxpY2F0ZV9wYXRoczoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBkdXBsaWNhdGVfcGF0aHMuYWRkKHBhdGgpCi0KLSAgICBy
ZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBGU0hvb2tQcm94eToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZnNwYXRoLCBwbSwgcmVtb3ZlX21vZHMpOgotICAgICAgICBzZWxmLmZzcGF0aCA9IGZzcGF0
aAotICAgICAgICBzZWxmLnBtID0gcG0KLSAgICAgICAgc2VsZi5yZW1vdmVfbW9kcyA9IHJlbW92
ZV9tb2RzCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHggPSBz
ZWxmLnBtLnN1YnNldF9ob29rX2NhbGxlcihuYW1lLCByZW1vdmVfcGx1Z2lucz1zZWxmLnJlbW92
ZV9tb2RzKQotICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0geAotICAgICAgICByZXR1cm4g
eAotCi0KLWNsYXNzIF9Db21wYXRQcm9wZXJ0eShvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotCi0gICAgZGVmIF9fZ2V0X18o
c2VsZiwgb2JqLCBvd25lcik6Ci0gICAgICAgIGlmIG9iaiBpcyBOb25lOgotICAgICAgICAgICAg
cmV0dXJuIHNlbGYKLQotICAgICAgICAjIFRPRE86IHJlZW5hYmxlIGluIHRoZSBmZWF0dXJlcyBi
cmFuY2gKLSAgICAgICAgIyB3YXJuaW5ncy53YXJuKAotICAgICAgICAjICAgICAidXNhZ2Ugb2Yg
e293bmVyIXJ9LntuYW1lfSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHB5dGVzdC57bmFtZX0g
aW5zdGVhZCIuZm9ybWF0KAotICAgICAgICAjICAgICAgICAgbmFtZT1zZWxmLm5hbWUsIG93bmVy
PXR5cGUob3duZXIpLl9fbmFtZV9fKSwKLSAgICAgICAgIyAgICAgUGVuZGluZ0RlcHJlY2F0aW9u
V2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihfX2ltcG9ydF9f
KCdweXRlc3QnKSwgc2VsZi5uYW1lKQotCi0KLWNsYXNzIE5vZGVLZXl3b3JkcyhNYXBwaW5nTWl4
aW4pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlKToKLSAgICAgICAgc2VsZi5ub2RlID0g
bm9kZQotICAgICAgICBzZWxmLnBhcmVudCA9IG5vZGUucGFyZW50Ci0gICAgICAgIHNlbGYuX21h
cmtlcnMgPSB7bm9kZS5uYW1lOiBUcnVlfQotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtl
eSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYXJrZXJzW2tleV0K
LSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMg
Tm9uZToKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFy
ZW50LmtleXdvcmRzW2tleV0KLQotICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVl
KToKLSAgICAgICAgc2VsZi5fbWFya2Vyc1trZXldID0gdmFsdWUKLQotICAgIGRlZiBfX2RlbGl0
ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgZGVsZXRl
IGtleSBpbiBrZXl3b3JkcyBkaWN0IikKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAg
ICAgc2VlbiA9IHNldChzZWxmLl9tYXJrZXJzKQotICAgICAgICBpZiBzZWxmLnBhcmVudCBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlZW4udXBkYXRlKHNlbGYucGFyZW50LmtleXdvcmRzKQot
ICAgICAgICByZXR1cm4gaXRlcihzZWVuKQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBsZW4oc2VsZi5fX2l0ZXJfXygpKQotCi0gICAgZGVmIGtleXMoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBsaXN0KHNlbGYpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAg
ICAgIHJldHVybiAiPE5vZGVLZXl3b3JkcyBmb3Igbm9kZSAlcz4iICUgKHNlbGYubm9kZSwgKQot
Ci0KLWNsYXNzIE5vZGUob2JqZWN0KToKLSAgICAiIiIgYmFzZSBjbGFzcyBmb3IgQ29sbGVjdG9y
IGFuZCBJdGVtIHRoZSB0ZXN0IGNvbGxlY3Rpb24gdHJlZS4KLSAgICBDb2xsZWN0b3Igc3ViY2xh
c3NlcyBoYXZlIGNoaWxkcmVuLCBJdGVtcyBhcmUgdGVybWluYWwgbm9kZXMuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50PU5vbmUsIGNvbmZpZz1Ob25lLCBzZXNzaW9u
PU5vbmUpOgotICAgICAgICAjOiBhIHVuaXF1ZSBuYW1lIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhl
IHBhcmVudCBub2RlCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLQotICAgICAgICAjOiB0aGUg
cGFyZW50IGNvbGxlY3RvciBub2RlLgotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotCi0g
ICAgICAgICM6IHRoZSBweXRlc3QgY29uZmlnIG9iamVjdAotICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZyBvciBwYXJlbnQuY29uZmlnCi0KLSAgICAgICAgIzogdGhlIHNlc3Npb24gdGhpcyBu
b2RlIGlzIHBhcnQgb2YKLSAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbiBvciBwYXJlbnQu
c2Vzc2lvbgotCi0gICAgICAgICM6IGZpbGVzeXN0ZW0gcGF0aCB3aGVyZSB0aGlzIG5vZGUgd2Fz
IGNvbGxlY3RlZCBmcm9tIChjYW4gYmUgTm9uZSkKLSAgICAgICAgc2VsZi5mc3BhdGggPSBnZXRh
dHRyKHBhcmVudCwgJ2ZzcGF0aCcsIE5vbmUpCi0KLSAgICAgICAgIzoga2V5d29yZHMvbWFya2Vy
cyBjb2xsZWN0ZWQgZnJvbSBhbGwgc2NvcGVzCi0gICAgICAgIHNlbGYua2V5d29yZHMgPSBOb2Rl
S2V5d29yZHMoc2VsZikKLQotICAgICAgICAjOiBhbGxvdyBhZGRpbmcgb2YgZXh0cmEga2V5d29y
ZHMgdG8gdXNlIGZvciBtYXRjaGluZwotICAgICAgICBzZWxmLmV4dHJhX2tleXdvcmRfbWF0Y2hl
cyA9IHNldCgpCi0KLSAgICAgICAgIyB1c2VkIGZvciBzdG9yaW5nIGFydGlmaWNpYWwgZml4dHVy
ZWRlZnMgZm9yIGRpcmVjdCBwYXJhbWV0cml6YXRpb24KLSAgICAgICAgc2VsZi5fbmFtZTJwc2V1
ZG9maXh0dXJlZGVmID0ge30KLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBpaG9vayhzZWxmKToK
LSAgICAgICAgIiIiIGZzcGF0aCBzZW5zaXRpdmUgaG9vayBwcm94eSB1c2VkIHRvIGNhbGwgcHl0
ZXN0IGhvb2tzIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnNlc3Npb24uZ2V0aG9va3Byb3h5KHNl
bGYuZnNwYXRoKQotCi0gICAgTW9kdWxlID0gX0NvbXBhdFByb3BlcnR5KCJNb2R1bGUiKQotICAg
IENsYXNzID0gX0NvbXBhdFByb3BlcnR5KCJDbGFzcyIpCi0gICAgSW5zdGFuY2UgPSBfQ29tcGF0
UHJvcGVydHkoIkluc3RhbmNlIikKLSAgICBGdW5jdGlvbiA9IF9Db21wYXRQcm9wZXJ0eSgiRnVu
Y3Rpb24iKQotICAgIEZpbGUgPSBfQ29tcGF0UHJvcGVydHkoIkZpbGUiKQotICAgIEl0ZW0gPSBf
Q29tcGF0UHJvcGVydHkoIkl0ZW0iKQotCi0gICAgZGVmIF9nZXRjdXN0b21jbGFzcyhzZWxmLCBu
YW1lKToKLSAgICAgICAgbWF5YmVfY29tcGF0cHJvcCA9IGdldGF0dHIodHlwZShzZWxmKSwgbmFt
ZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShtYXliZV9jb21wYXRwcm9wLCBfQ29tcGF0UHJvcGVy
dHkpOgotICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoX19pbXBvcnRfXygncHl0ZXN0JyksIG5h
bWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjbHMgPSBnZXRhdHRyKHNlbGYsIG5hbWUp
Ci0gICAgICAgICAgICAjIFRPRE86IHJlZW5hYmxlIGluIHRoZSBmZWF0dXJlcyBicmFuY2gKLSAg
ICAgICAgICAgICMgd2FybmluZ3Mud2FybigidXNlIG9mIG5vZGUuJXMgaXMgZGVwcmVjYXRlZCwg
IgotICAgICAgICAgICAgIyAgICAidXNlIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oLi4uKSB0
byBjcmVhdGUgY3VzdG9tICIKLSAgICAgICAgICAgICMgICAgImNvbGxlY3Rpb24gbm9kZXMiICUg
bmFtZSwgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICByZXR1cm4gY2xzCi0K
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzICVyPiIgJSAoc2Vs
Zi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0
cihzZWxmLCAnbmFtZScsIE5vbmUpKQotCi0gICAgZGVmIHdhcm4oc2VsZiwgY29kZSwgbWVzc2Fn
ZSk6Ci0gICAgICAgICIiIiBnZW5lcmF0ZSBhIHdhcm5pbmcgd2l0aCB0aGUgZ2l2ZW4gY29kZSBh
bmQgbWVzc2FnZSBmb3IgdGhpcwotICAgICAgICBpdGVtLiAiIiIKLSAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UoY29kZSwgc3RyKQotICAgICAgICBmc2xvY2F0aW9uID0gZ2V0YXR0cihzZWxmLCAi
bG9jYXRpb24iLCBOb25lKQotICAgICAgICBpZiBmc2xvY2F0aW9uIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBmc2xvY2F0aW9uID0gZ2V0YXR0cihzZWxmLCAiZnNwYXRoIiwgTm9uZSkKLSAgICAgICAg
c2VsZi5paG9vay5weXRlc3RfbG9nd2FybmluZy5jYWxsX2hpc3RvcmljKGt3YXJncz1kaWN0KAot
ICAgICAgICAgICAgY29kZT1jb2RlLCBtZXNzYWdlPW1lc3NhZ2UsCi0gICAgICAgICAgICBub2Rl
aWQ9c2VsZi5ub2RlaWQsIGZzbG9jYXRpb249ZnNsb2NhdGlvbikpCi0KLSAgICAjIG1ldGhvZHMg
Zm9yIG9yZGVyaW5nIG5vZGVzCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5vZGVpZChzZWxmKToK
LSAgICAgICAgIiIiIGEgOjotc2VwYXJhdGVkIHN0cmluZyBkZW5vdGluZyBpdHMgY29sbGVjdGlv
biB0cmVlIGFkZHJlc3MuICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fbm9kZWlkCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHNl
bGYuX25vZGVpZCA9IHggPSBzZWxmLl9tYWtlaWQoKQotICAgICAgICAgICAgcmV0dXJuIHgKLQot
ICAgIGRlZiBfbWFrZWlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wYXJlbnQubm9kZWlk
ICsgIjo6IiArIHNlbGYubmFtZQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gaGFzaChzZWxmLm5vZGVpZCkKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAg
cGFzcwotCi0gICAgZGVmIHRlYXJkb3duKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYg
bGlzdGNoYWluKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIGxpc3Qgb2YgYWxsIHBhcmVudCBj
b2xsZWN0b3JzIHVwIHRvIHNlbGYsCi0gICAgICAgICAgICBzdGFydGluZyBmcm9tIHJvb3Qgb2Yg
Y29sbGVjdGlvbiB0cmVlLiAiIiIKLSAgICAgICAgY2hhaW4gPSBbXQotICAgICAgICBpdGVtID0g
c2VsZgotICAgICAgICB3aGlsZSBpdGVtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY2hhaW4u
YXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICBpdGVtID0gaXRlbS5wYXJlbnQKLSAgICAgICAgY2hh
aW4ucmV2ZXJzZSgpCi0gICAgICAgIHJldHVybiBjaGFpbgotCi0gICAgZGVmIGFkZF9tYXJrZXIo
c2VsZiwgbWFya2VyKToKLSAgICAgICAgIiIiIGR5bmFtaWNhbGx5IGFkZCBhIG1hcmtlciBvYmpl
Y3QgdG8gdGhlIG5vZGUuCi0KLSAgICAgICAgYGBtYXJrZXJgYCBjYW4gYmUgYSBzdHJpbmcgb3Ig
cHl0ZXN0Lm1hcmsuKiBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGZyb20gX3B5dGVz
dC5tYXJrIGltcG9ydCBNYXJrRGVjb3JhdG9yLCBNQVJLX0dFTgotICAgICAgICBpZiBpc2luc3Rh
bmNlKG1hcmtlciwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBtYXJrZXIgPSBnZXRh
dHRyKE1BUktfR0VOLCBtYXJrZXIpCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UobWFya2Vy
LCBNYXJrRGVjb3JhdG9yKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImlzIG5vdCBh
IHN0cmluZyBvciBweXRlc3QubWFyay4qIE1hcmtlciIpCi0gICAgICAgIHNlbGYua2V5d29yZHNb
bWFya2VyLm5hbWVdID0gbWFya2VyCi0KLSAgICBkZWYgZ2V0X21hcmtlcihzZWxmLCBuYW1lKToK
LSAgICAgICAgIiIiIGdldCBhIG1hcmtlciBvYmplY3QgZnJvbSB0aGlzIG5vZGUgb3IgTm9uZSBp
ZgotICAgICAgICB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYSBtYXJrZXIgd2l0aCB0aGF0IG5hbWUu
ICIiIgotICAgICAgICB2YWwgPSBzZWxmLmtleXdvcmRzLmdldChuYW1lLCBOb25lKQotICAgICAg
ICBpZiB2YWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBv
cnQgTWFya0luZm8sIE1hcmtEZWNvcmF0b3IKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFs
LCAoTWFya0RlY29yYXRvciwgTWFya0luZm8pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFs
Ci0KLSAgICBkZWYgbGlzdGV4dHJha2V5d29yZHMoc2VsZik6Ci0gICAgICAgICIiIiBSZXR1cm4g
YSBzZXQgb2YgYWxsIGV4dHJhIGtleXdvcmRzIGluIHNlbGYgYW5kIGFueSBwYXJlbnRzLiIiIgot
ICAgICAgICBleHRyYV9rZXl3b3JkcyA9IHNldCgpCi0gICAgICAgIGl0ZW0gPSBzZWxmCi0gICAg
ICAgIGZvciBpdGVtIGluIHNlbGYubGlzdGNoYWluKCk6Ci0gICAgICAgICAgICBleHRyYV9rZXl3
b3Jkcy51cGRhdGUoaXRlbS5leHRyYV9rZXl3b3JkX21hdGNoZXMpCi0gICAgICAgIHJldHVybiBl
eHRyYV9rZXl3b3JkcwotCi0gICAgZGVmIGxpc3RuYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IFt4Lm5hbWUgZm9yIHggaW4gc2VsZi5saXN0Y2hhaW4oKV0KLQotICAgIGRlZiBhZGRmaW5hbGl6
ZXIoc2VsZiwgZmluKToKLSAgICAgICAgIiIiIHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgY2Fs
bGVkIHdoZW4gdGhpcyBub2RlIGlzIGZpbmFsaXplZC4KLQotICAgICAgICBUaGlzIG1ldGhvZCBj
YW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGlzIG5vZGUgaXMgYWN0aXZlCi0gICAgICAgIGluIGEg
c2V0dXAgY2hhaW4sIGZvciBleGFtcGxlIGR1cmluZyBzZWxmLnNldHVwKCkuCi0gICAgICAgICIi
IgotICAgICAgICBzZWxmLnNlc3Npb24uX3NldHVwc3RhdGUuYWRkZmluYWxpemVyKGZpbiwgc2Vs
ZikKLQotICAgIGRlZiBnZXRwYXJlbnQoc2VsZiwgY2xzKToKLSAgICAgICAgIiIiIGdldCB0aGUg
bmV4dCBwYXJlbnQgbm9kZSAoaW5jbHVkaW5nIG91cnNlbGYpCi0gICAgICAgIHdoaWNoIGlzIGFu
IGluc3RhbmNlIG9mIHRoZSBnaXZlbiBjbGFzcyIiIgotICAgICAgICBjdXJyZW50ID0gc2VsZgot
ICAgICAgICB3aGlsZSBjdXJyZW50IGFuZCBub3QgaXNpbnN0YW5jZShjdXJyZW50LCBjbHMpOgot
ICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Ci0gICAgICAgIHJldHVybiBjdXJy
ZW50Ci0KLSAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBw
YXNzCi0KLSAgICBkZWYgX3JlcHJfZmFpbHVyZV9weShzZWxmLCBleGNpbmZvLCBzdHlsZT1Ob25l
KToKLSAgICAgICAgZm0gPSBzZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0gICAgICAgIGlm
IGV4Y2luZm8uZXJyaXNpbnN0YW5jZShmbS5GaXh0dXJlTG9va3VwRXJyb3IpOgotICAgICAgICAg
ICAgcmV0dXJuIGV4Y2luZm8udmFsdWUuZm9ybWF0cmVwcigpCi0gICAgICAgIHRiZmlsdGVyID0g
VHJ1ZQotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24uZnVsbHRyYWNlOgotICAgICAgICAg
ICAgc3R5bGUgPSAibG9uZyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRiID0gX3B5dGVz
dC5fY29kZS5UcmFjZWJhY2soW2V4Y2luZm8udHJhY2ViYWNrWy0xXV0pCi0gICAgICAgICAgICBz
ZWxmLl9wcnVuZXRyYWNlYmFjayhleGNpbmZvKQotICAgICAgICAgICAgaWYgbGVuKGV4Y2luZm8u
dHJhY2ViYWNrKSA9PSAwOgotICAgICAgICAgICAgICAgIGV4Y2luZm8udHJhY2ViYWNrID0gdGIK
LSAgICAgICAgICAgIHRiZmlsdGVyID0gRmFsc2UgICMgcHJ1bmV0cmFjZWJhY2sgYWxyZWFkeSBk
b2VzIGl0Ci0gICAgICAgICAgICBpZiBzdHlsZSA9PSAiYXV0byI6Ci0gICAgICAgICAgICAgICAg
c3R5bGUgPSAibG9uZyIKLSAgICAgICAgIyBYWFggc2hvdWxkIGV4Y2luZm8uZ2V0cmVwciByZWNv
cmQgYWxsIGRhdGEgYW5kIHRvdGVybWluYWwoKSBwcm9jZXNzIGl0PwotICAgICAgICBpZiBzdHls
ZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgPT0g
InNob3J0IjoKLSAgICAgICAgICAgICAgICBzdHlsZSA9ICJzaG9ydCIKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBvcy5nZXRjd2QoKQotICAgICAgICAgICAgYWJzcGF0aCA9IEZhbHNlCi0gICAgICAg
IGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgYWJzcGF0aCA9IFRydWUKLQotICAgICAgICBy
ZXR1cm4gZXhjaW5mby5nZXRyZXByKGZ1bmNhcmdzPVRydWUsIGFic3BhdGg9YWJzcGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93bG9jYWxzPXNlbGYuY29uZmlnLm9wdGlv
bi5zaG93bG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxl
LCB0YmZpbHRlcj10YmZpbHRlcikKLQotICAgIHJlcHJfZmFpbHVyZSA9IF9yZXByX2ZhaWx1cmVf
cHkKLQotCi1jbGFzcyBDb2xsZWN0b3IoTm9kZSk6Ci0gICAgIiIiIENvbGxlY3RvciBpbnN0YW5j
ZXMgY3JlYXRlIGNoaWxkcmVuIHRocm91Z2ggY29sbGVjdCgpCi0gICAgICAgIGFuZCB0aHVzIGl0
ZXJhdGl2ZWx5IGJ1aWxkIGEgdHJlZS4KLSAgICAiIiIKLQotICAgIGNsYXNzIENvbGxlY3RFcnJv
cihFeGNlcHRpb24pOgotICAgICAgICAiIiIgYW4gZXJyb3IgZHVyaW5nIGNvbGxlY3Rpb24sIGNv
bnRhaW5zIGEgY3VzdG9tIG1lc3NhZ2UuICIiIgotCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0g
ICAgICAgICIiIiByZXR1cm5zIGEgbGlzdCBvZiBjaGlsZHJlbiAoaXRlbXMgYW5kIGNvbGxlY3Rv
cnMpCi0gICAgICAgICAgICBmb3IgdGhpcyBjb2xsZWN0aW9uIG5vZGUuCi0gICAgICAgICIiIgot
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJhYnN0cmFjdCIpCi0KLSAgICBkZWYg
cmVwcl9mYWlsdXJlKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICAiIiIgcmVwcmVzZW50IGEgY29s
bGVjdGlvbiBmYWlsdXJlLiAiIiIKLSAgICAgICAgaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKHNl
bGYuQ29sbGVjdEVycm9yKToKLSAgICAgICAgICAgIGV4YyA9IGV4Y2luZm8udmFsdWUKLSAgICAg
ICAgICAgIHJldHVybiBzdHIoZXhjLmFyZ3NbMF0pCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXBy
X2ZhaWx1cmVfcHkoZXhjaW5mbywgc3R5bGU9InNob3J0IikKLQotICAgIGRlZiBfcHJ1bmV0cmFj
ZWJhY2soc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2ZzcGF0aCcp
OgotICAgICAgICAgICAgdHJhY2ViYWNrID0gZXhjaW5mby50cmFjZWJhY2sKLSAgICAgICAgICAg
IG50cmFjZWJhY2sgPSB0cmFjZWJhY2suY3V0KHBhdGg9c2VsZi5mc3BhdGgpCi0gICAgICAgICAg
ICBpZiBudHJhY2ViYWNrID09IHRyYWNlYmFjazoKLSAgICAgICAgICAgICAgICBudHJhY2ViYWNr
ID0gbnRyYWNlYmFjay5jdXQoZXhjbHVkZXBhdGg9dHJhY2ViYWNrY3V0ZGlyKQotICAgICAgICAg
ICAgZXhjaW5mby50cmFjZWJhY2sgPSBudHJhY2ViYWNrLmZpbHRlcigpCi0KLQotY2xhc3MgRlND
b2xsZWN0b3IoQ29sbGVjdG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnNwYXRoLCBwYXJl
bnQ9Tm9uZSwgY29uZmlnPU5vbmUsIHNlc3Npb249Tm9uZSk6Ci0gICAgICAgIGZzcGF0aCA9IHB5
LnBhdGgubG9jYWwoZnNwYXRoKSAgIyB4eHggb25seSBmb3IgdGVzdF9yZXN1bHRsb2cucHk/Ci0g
ICAgICAgIG5hbWUgPSBmc3BhdGguYmFzZW5hbWUKLSAgICAgICAgaWYgcGFyZW50IGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgcmVsID0gZnNwYXRoLnJlbHRvKHBhcmVudC5mc3BhdGgpCi0gICAg
ICAgICAgICBpZiByZWw6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IHJlbAotICAgICAgICAgICAg
bmFtZSA9IG5hbWUucmVwbGFjZShvcy5zZXAsIG5vZGVzLlNFUCkKLSAgICAgICAgc3VwZXIoRlND
b2xsZWN0b3IsIHNlbGYpLl9faW5pdF9fKG5hbWUsIHBhcmVudCwgY29uZmlnLCBzZXNzaW9uKQot
ICAgICAgICBzZWxmLmZzcGF0aCA9IGZzcGF0aAotCi0gICAgZGVmIF9jaGVja19pbml0aWFscGF0
aHNfZm9yX3JlbHBhdGgoc2VsZik6Ci0gICAgICAgIGZvciBpbml0aWFscGF0aCBpbiBzZWxmLnNl
c3Npb24uX2luaXRpYWxwYXRoczoKLSAgICAgICAgICAgIGlmIHNlbGYuZnNwYXRoLmNvbW1vbihp
bml0aWFscGF0aCkgPT0gaW5pdGlhbHBhdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
ZnNwYXRoLnJlbHRvKGluaXRpYWxwYXRoLmRpcm5hbWUpCi0KLSAgICBkZWYgX21ha2VpZChzZWxm
KToKLSAgICAgICAgcmVscGF0aCA9IHNlbGYuZnNwYXRoLnJlbHRvKHNlbGYuY29uZmlnLnJvb3Rk
aXIpCi0KLSAgICAgICAgaWYgbm90IHJlbHBhdGg6Ci0gICAgICAgICAgICByZWxwYXRoID0gc2Vs
Zi5fY2hlY2tfaW5pdGlhbHBhdGhzX2Zvcl9yZWxwYXRoKCkKLSAgICAgICAgaWYgb3Muc2VwICE9
IG5vZGVzLlNFUDoKLSAgICAgICAgICAgIHJlbHBhdGggPSByZWxwYXRoLnJlcGxhY2Uob3Muc2Vw
LCBub2Rlcy5TRVApCi0gICAgICAgIHJldHVybiByZWxwYXRoCi0KLQotY2xhc3MgRmlsZShGU0Nv
bGxlY3Rvcik6Ci0gICAgIiIiIGJhc2UgY2xhc3MgZm9yIGNvbGxlY3RpbmcgdGVzdHMgZnJvbSBh
IGZpbGUuICIiIgotCi0KLWNsYXNzIEl0ZW0oTm9kZSk6Ci0gICAgIiIiIGEgYmFzaWMgdGVzdCBp
bnZvY2F0aW9uIGl0ZW0uIE5vdGUgdGhhdCBmb3IgYSBzaW5nbGUgZnVuY3Rpb24KLSAgICB0aGVy
ZSBtaWdodCBiZSBtdWx0aXBsZSB0ZXN0IGludm9jYXRpb24gaXRlbXMuCi0gICAgIiIiCi0gICAg
bmV4dGl0ZW0gPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50PU5v
bmUsIGNvbmZpZz1Ob25lLCBzZXNzaW9uPU5vbmUpOgotICAgICAgICBzdXBlcihJdGVtLCBzZWxm
KS5fX2luaXRfXyhuYW1lLCBwYXJlbnQsIGNvbmZpZywgc2Vzc2lvbikKLSAgICAgICAgc2VsZi5f
cmVwb3J0X3NlY3Rpb25zID0gW10KLQotICAgIGRlZiBhZGRfcmVwb3J0X3NlY3Rpb24oc2VsZiwg
d2hlbiwga2V5LCBjb250ZW50KToKLSAgICAgICAgIiIiCi0gICAgICAgIEFkZHMgYSBuZXcgcmVw
b3J0IHNlY3Rpb24sIHNpbWlsYXIgdG8gd2hhdCdzIGRvbmUgaW50ZXJuYWxseSB0byBhZGQgc3Rk
b3V0IGFuZAotICAgICAgICBzdGRlcnIgY2FwdHVyZWQgb3V0cHV0OjoKLQotICAgICAgICAgICAg
aXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24oImNhbGwiLCAic3Rkb3V0IiwgInJlcG9ydCBzZWN0aW9u
IGNvbnRlbnRzIikKLQotICAgICAgICA6cGFyYW0gc3RyIHdoZW46Ci0gICAgICAgICAgICBPbmUg
b2YgdGhlIHBvc3NpYmxlIGNhcHR1cmUgc3RhdGVzLCBgYCJzZXR1cCJgYCwgYGAiY2FsbCJgYCwg
YGAidGVhcmRvd24iYGAuCi0gICAgICAgIDpwYXJhbSBzdHIga2V5OgotICAgICAgICAgICAgTmFt
ZSBvZiB0aGUgc2VjdGlvbiwgY2FuIGJlIGN1c3RvbWl6ZWQgYXQgd2lsbC4gUHl0ZXN0IHVzZXMg
YGAic3Rkb3V0ImBgIGFuZAotICAgICAgICAgICAgYGAic3RkZXJyImBgIGludGVybmFsbHkuCi0K
LSAgICAgICAgOnBhcmFtIHN0ciBjb250ZW50OgotICAgICAgICAgICAgVGhlIGZ1bGwgY29udGVu
dHMgYXMgYSBzdHJpbmcuCi0gICAgICAgICIiIgotICAgICAgICBpZiBjb250ZW50OgotICAgICAg
ICAgICAgc2VsZi5fcmVwb3J0X3NlY3Rpb25zLmFwcGVuZCgod2hlbiwga2V5LCBjb250ZW50KSkK
LQotICAgIGRlZiByZXBvcnRpbmZvKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5mc3BhdGgs
IE5vbmUsICIiCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbG9jYXRpb24oc2VsZik6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhdGlvbgotICAgICAgICBleGNl
cHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBsb2NhdGlvbiA9IHNlbGYucmVwb3J0aW5m
bygpCi0gICAgICAgICAgICAjIGJlc3RyZWxwYXRoIGlzIGEgcXVpdGUgc2xvdyBmdW5jdGlvbgot
ICAgICAgICAgICAgY2FjaGUgPSBzZWxmLmNvbmZpZy5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfYmVz
dHJlbHBhdGhjYWNoZSIsIHt9KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZz
cGF0aCA9IGNhY2hlW2xvY2F0aW9uWzBdXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgot
ICAgICAgICAgICAgICAgIGZzcGF0aCA9IHNlbGYuc2Vzc2lvbi5mc3BhdGguYmVzdHJlbHBhdGgo
bG9jYXRpb25bMF0pCi0gICAgICAgICAgICAgICAgY2FjaGVbbG9jYXRpb25bMF1dID0gZnNwYXRo
Ci0gICAgICAgICAgICBsb2NhdGlvbiA9IChmc3BhdGgsIGxvY2F0aW9uWzFdLCBzdHIobG9jYXRp
b25bMl0pKQotICAgICAgICAgICAgc2VsZi5fbG9jYXRpb24gPSBsb2NhdGlvbgotICAgICAgICAg
ICAgcmV0dXJuIGxvY2F0aW9uCi0KLQotY2xhc3MgTm9NYXRjaChFeGNlcHRpb24pOgotICAgICIi
IiByYWlzZWQgaWYgbWF0Y2hpbmcgY2Fubm90IGxvY2F0ZSBhIG1hdGNoaW5nIG5hbWVzLiAiIiIK
LQotCi1jbGFzcyBJbnRlcnJ1cHRlZChLZXlib2FyZEludGVycnVwdCk6Ci0gICAgIiIiIHNpZ25h
bHMgYW4gaW50ZXJydXB0ZWQgdGVzdCBydW4uICIiIgotICAgIF9fbW9kdWxlX18gPSAnYnVpbHRp
bnMnICAjIGZvciBweTMKLQotCi1jbGFzcyBGYWlsZWQoRXhjZXB0aW9uKToKLSAgICAiIiIgc2ln
bmFscyBhbiBzdG9wIGFzIGZhaWxlZCB0ZXN0IHJ1bi4gIiIiCi0KLQotY2xhc3MgU2Vzc2lvbihG
U0NvbGxlY3Rvcik6Ci0gICAgSW50ZXJydXB0ZWQgPSBJbnRlcnJ1cHRlZAotICAgIEZhaWxlZCA9
IEZhaWxlZAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZyk6Ci0gICAgICAgIEZTQ29s
bGVjdG9yLl9faW5pdF9fKHNlbGYsIGNvbmZpZy5yb290ZGlyLCBwYXJlbnQ9Tm9uZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPWNvbmZpZywgc2Vzc2lvbj1zZWxmKQotICAg
ICAgICBzZWxmLnRlc3RzZmFpbGVkID0gMAotICAgICAgICBzZWxmLnRlc3RzY29sbGVjdGVkID0g
MAotICAgICAgICBzZWxmLnNob3VsZHN0b3AgPSBGYWxzZQotICAgICAgICBzZWxmLnNob3VsZGZh
aWwgPSBGYWxzZQotICAgICAgICBzZWxmLnRyYWNlID0gY29uZmlnLnRyYWNlLnJvb3QuZ2V0KCJj
b2xsZWN0aW9uIikKLSAgICAgICAgc2VsZi5fbm9yZWN1cnNlcGF0dGVybnMgPSBjb25maWcuZ2V0
aW5pKCJub3JlY3Vyc2VkaXJzIikKLSAgICAgICAgc2VsZi5zdGFydGRpciA9IHB5LnBhdGgubG9j
YWwoKQotICAgICAgICBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHNlbGYsIG5h
bWU9InNlc3Npb24iKQotCi0gICAgZGVmIF9tYWtlaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiAi
IgotCi0gICAgQGhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0
c3RhcnQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2hvdWxkZmFpbDoKLSAgICAgICAgICAgIHJh
aXNlIHNlbGYuRmFpbGVkKHNlbGYuc2hvdWxkZmFpbCkKLSAgICAgICAgaWYgc2VsZi5zaG91bGRz
dG9wOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5JbnRlcnJ1cHRlZChzZWxmLnNob3VsZHN0b3Ap
Ci0KLSAgICBAaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rf
bG9ncmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIHJlcG9ydC5mYWlsZWQgYW5kIG5v
dCBoYXNhdHRyKHJlcG9ydCwgJ3dhc3hmYWlsJyk6Ci0gICAgICAgICAgICBzZWxmLnRlc3RzZmFp
bGVkICs9IDEKLSAgICAgICAgICAgIG1heGZhaWwgPSBzZWxmLmNvbmZpZy5nZXR2YWx1ZSgibWF4
ZmFpbCIpCi0gICAgICAgICAgICBpZiBtYXhmYWlsIGFuZCBzZWxmLnRlc3RzZmFpbGVkID49IG1h
eGZhaWw6Ci0gICAgICAgICAgICAgICAgc2VsZi5zaG91bGRmYWlsID0gInN0b3BwaW5nIGFmdGVy
ICVkIGZhaWx1cmVzIiAlICgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0c2ZhaWxlZCkK
LSAgICBweXRlc3RfY29sbGVjdHJlcG9ydCA9IHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydAotCi0g
ICAgZGVmIGlzaW5pdHBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgIHJldHVybiBwYXRoIGluIHNl
bGYuX2luaXRpYWxwYXRocwotCi0gICAgZGVmIGdldGhvb2twcm94eShzZWxmLCBmc3BhdGgpOgot
ICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgdGhlIGNvbW1vbiBjYXNlIG9mIHJ1bm5pbmcKLSAg
ICAgICAgIyBob29rcyB3aXRoIGFsbCBjb25mdGVzdC5weSBmaWxlc2FsbCBjb25mdGVzdC5weQot
ICAgICAgICBwbSA9IHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIKLSAgICAgICAgbXlfY29uZnRl
c3Rtb2R1bGVzID0gcG0uX2dldGNvbmZ0ZXN0bW9kdWxlcyhmc3BhdGgpCi0gICAgICAgIHJlbW92
ZV9tb2RzID0gcG0uX2NvbmZ0ZXN0X3BsdWdpbnMuZGlmZmVyZW5jZShteV9jb25mdGVzdG1vZHVs
ZXMpCi0gICAgICAgIGlmIHJlbW92ZV9tb2RzOgotICAgICAgICAgICAgIyBvbmUgb3IgbW9yZSBj
b25mdGVzdHMgYXJlIG5vdCBpbiB1c2UgYXQgdGhpcyBmc3BhdGgKLSAgICAgICAgICAgIHByb3h5
ID0gRlNIb29rUHJveHkoZnNwYXRoLCBwbSwgcmVtb3ZlX21vZHMpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAjIGFsbCBwbHVnaXMgYXJlIGFjdGl2ZSBmb3IgdGhpcyBmc3BhdGgKLSAgICAg
ICAgICAgIHByb3h5ID0gc2VsZi5jb25maWcuaG9vawotICAgICAgICByZXR1cm4gcHJveHkKLQot
ICAgIGRlZiBwZXJmb3JtX2NvbGxlY3Qoc2VsZiwgYXJncz1Ob25lLCBnZW5pdGVtcz1UcnVlKToK
LSAgICAgICAgaG9vayA9IHNlbGYuY29uZmlnLmhvb2sKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgaXRlbXMgPSBzZWxmLl9wZXJmb3JtX2NvbGxlY3QoYXJncywgZ2VuaXRlbXMpCi0gICAgICAg
ICAgICBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmNoZWNrX3BlbmRpbmcoKQotICAgICAgICAg
ICAgaG9vay5weXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhzZXNzaW9uPXNlbGYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1zZWxmLmNv
bmZpZywgaXRlbXM9aXRlbXMpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBob29rLnB5
dGVzdF9jb2xsZWN0aW9uX2ZpbmlzaChzZXNzaW9uPXNlbGYpCi0gICAgICAgIHNlbGYudGVzdHNj
b2xsZWN0ZWQgPSBsZW4oaXRlbXMpCi0gICAgICAgIHJldHVybiBpdGVtcwotCi0gICAgZGVmIF9w
ZXJmb3JtX2NvbGxlY3Qoc2VsZiwgYXJncywgZ2VuaXRlbXMpOgotICAgICAgICBpZiBhcmdzIGlz
IE5vbmU6Ci0gICAgICAgICAgICBhcmdzID0gc2VsZi5jb25maWcuYXJncwotICAgICAgICBzZWxm
LnRyYWNlKCJwZXJmb3JtX2NvbGxlY3QiLCBzZWxmLCBhcmdzKQotICAgICAgICBzZWxmLnRyYWNl
LnJvb3QuaW5kZW50ICs9IDEKLSAgICAgICAgc2VsZi5fbm90Zm91bmQgPSBbXQotICAgICAgICBz
ZWxmLl9pbml0aWFscGF0aHMgPSBzZXQoKQotICAgICAgICBzZWxmLl9pbml0aWFscGFydHMgPSBb
XQotICAgICAgICBzZWxmLml0ZW1zID0gaXRlbXMgPSBbXQotICAgICAgICBmb3IgYXJnIGluIGFy
Z3M6Ci0gICAgICAgICAgICBwYXJ0cyA9IHNlbGYuX3BhcnNlYXJnKGFyZykKLSAgICAgICAgICAg
IHNlbGYuX2luaXRpYWxwYXJ0cy5hcHBlbmQocGFydHMpCi0gICAgICAgICAgICBzZWxmLl9pbml0
aWFscGF0aHMuYWRkKHBhcnRzWzBdKQotICAgICAgICByZXAgPSBjb2xsZWN0X29uZV9ub2RlKHNl
bGYpCi0gICAgICAgIHNlbGYuaWhvb2sucHl0ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcCkK
LSAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCAtPSAxCi0gICAgICAgIGlmIHNlbGYuX25v
dGZvdW5kOgotICAgICAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgICAgIGZvciBhcmcsIGV4
YyBpbiBzZWxmLl9ub3Rmb3VuZDoKLSAgICAgICAgICAgICAgICBsaW5lID0gIihubyBuYW1lICVy
IGluIGFueSBvZiAlcikiICUgKGFyZywgZXhjLmFyZ3NbMF0pCi0gICAgICAgICAgICAgICAgZXJy
b3JzLmFwcGVuZCgibm90IGZvdW5kOiAlc1xuJXMiICUgKGFyZywgbGluZSkpCi0gICAgICAgICAg
ICAgICAgIyBYWFg6IHRlc3QgdGhpcwotICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigqZXJy
b3JzKQotICAgICAgICBpZiBub3QgZ2VuaXRlbXM6Ci0gICAgICAgICAgICByZXR1cm4gcmVwLnJl
c3VsdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgcmVwLnBhc3NlZDoKLSAgICAgICAg
ICAgICAgICBmb3Igbm9kZSBpbiByZXAucmVzdWx0OgotICAgICAgICAgICAgICAgICAgICBzZWxm
Lml0ZW1zLmV4dGVuZChzZWxmLmdlbml0ZW1zKG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGl0
ZW1zCi0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgZm9yIHBhcnRzIGluIHNlbGYu
X2luaXRpYWxwYXJ0czoKLSAgICAgICAgICAgIGFyZyA9ICI6OiIuam9pbihtYXAoc3RyLCBwYXJ0
cykpCi0gICAgICAgICAgICBzZWxmLnRyYWNlKCJwcm9jZXNzaW5nIGFyZ3VtZW50IiwgYXJnKQot
ICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCArPSAxCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5fY29sbGVjdChhcmcpOgotICAgICAgICAg
ICAgICAgICAgICB5aWVsZCB4Ci0gICAgICAgICAgICBleGNlcHQgTm9NYXRjaDoKLSAgICAgICAg
ICAgICAgICAjIHdlIGFyZSBpbnNpZGUgYSBtYWtlX3JlcG9ydCBob29rIHNvCi0gICAgICAgICAg
ICAgICAgIyB3ZSBjYW5ub3QgZGlyZWN0bHkgcGFzcyB0aHJvdWdoIHRoZSBleGNlcHRpb24KLSAg
ICAgICAgICAgICAgICBzZWxmLl9ub3Rmb3VuZC5hcHBlbmQoKGFyZywgc3lzLmV4Y19pbmZvKClb
MV0pKQotCi0gICAgICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50IC09IDEKLQotICAgIGRl
ZiBfY29sbGVjdChzZWxmLCBhcmcpOgotICAgICAgICBuYW1lcyA9IHNlbGYuX3BhcnNlYXJnKGFy
ZykKLSAgICAgICAgcGF0aCA9IG5hbWVzLnBvcCgwKQotICAgICAgICBpZiBwYXRoLmNoZWNrKGRp
cj0xKToKLSAgICAgICAgICAgIGFzc2VydCBub3QgbmFtZXMsICJpbnZhbGlkIGFyZyAlciIgJSAo
YXJnLCkKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHBhdGgudmlzaXQoZmlsPWxhbWJkYSB4OiB4
LmNoZWNrKGZpbGU9MSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYz1z
ZWxmLl9yZWN1cnNlLCBiZj1UcnVlLCBzb3J0PVRydWUpOgotICAgICAgICAgICAgICAgIGZvciB4
IGluIHNlbGYuX2NvbGxlY3RmaWxlKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB4
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgcGF0aC5jaGVjayhmaWxlPTEpCi0g
ICAgICAgICAgICBmb3IgeCBpbiBzZWxmLm1hdGNobm9kZXMoc2VsZi5fY29sbGVjdGZpbGUocGF0
aCksIG5hbWVzKToKLSAgICAgICAgICAgICAgICB5aWVsZCB4Ci0KLSAgICBkZWYgX2NvbGxlY3Rm
aWxlKHNlbGYsIHBhdGgpOgotICAgICAgICBpaG9vayA9IHNlbGYuZ2V0aG9va3Byb3h5KHBhdGgp
Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzaW5pdHBhdGgocGF0aCk6Ci0gICAgICAgICAgICBpZiBp
aG9vay5weXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aD1wYXRoLCBjb25maWc9c2VsZi5jb25maWcp
OgotICAgICAgICAgICAgICAgIHJldHVybiAoKQotICAgICAgICByZXR1cm4gaWhvb2sucHl0ZXN0
X2NvbGxlY3RfZmlsZShwYXRoPXBhdGgsIHBhcmVudD1zZWxmKQotCi0gICAgZGVmIF9yZWN1cnNl
KHNlbGYsIHBhdGgpOgotICAgICAgICBpaG9vayA9IHNlbGYuZ2V0aG9va3Byb3h5KHBhdGguZGly
cGF0aCgpKQotICAgICAgICBpZiBpaG9vay5weXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aD1wYXRo
LCBjb25maWc9c2VsZi5jb25maWcpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZvciBw
YXQgaW4gc2VsZi5fbm9yZWN1cnNlcGF0dGVybnM6Ci0gICAgICAgICAgICBpZiBwYXRoLmNoZWNr
KGZubWF0Y2g9cGF0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWhv
b2sgPSBzZWxmLmdldGhvb2twcm94eShwYXRoKQotICAgICAgICBpaG9vay5weXRlc3RfY29sbGVj
dF9kaXJlY3RvcnkocGF0aD1wYXRoLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgcmV0dXJuIFRydWUK
LQotICAgIGRlZiBfdHJ5Y29udmVydHB5YXJnKHNlbGYsIHgpOgotICAgICAgICAiIiJDb252ZXJ0
IGEgZG90dGVkIG1vZHVsZSBuYW1lIHRvIHBhdGguCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlt
cG9ydCBwa2d1dGlsCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlciA9IHBrZ3V0aWwu
ZmluZF9sb2FkZXIoeCkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAg
cmV0dXJuIHgKLSAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4g
eAotICAgICAgICAjIFRoaXMgbWV0aG9kIGlzIHNvbWV0aW1lcyBpbnZva2VkIHdoZW4gQXNzZXJ0
aW9uUmV3cml0aW5nSG9vaywgd2hpY2gKLSAgICAgICAgIyBkb2VzIG5vdCBkZWZpbmUgYSBnZXRf
ZmlsZW5hbWUgbWV0aG9kLCBpcyBhbHJlYWR5IGluIHBsYWNlOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBwYXRoID0gbG9hZGVyLmdldF9maWxlbmFtZSh4KQotICAgICAgICBleGNlcHQgQXR0
cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIFJldHJpZXZlIHBhdGggZnJvbSBBc3NlcnRpb25S
ZXdyaXRpbmdIb29rOgotICAgICAgICAgICAgcGF0aCA9IGxvYWRlci5tb2R1bGVzW3hdWzBdLmNv
X2ZpbGVuYW1lCi0gICAgICAgIGlmIGxvYWRlci5pc19wYWNrYWdlKHgpOgotICAgICAgICAgICAg
cGF0aCA9IG9zLnBhdGguZGlybmFtZShwYXRoKQotICAgICAgICByZXR1cm4gcGF0aAotCi0gICAg
ZGVmIF9wYXJzZWFyZyhzZWxmLCBhcmcpOgotICAgICAgICAiIiIgcmV0dXJuIChmc3BhdGgsIG5h
bWVzKSB0dXBsZSBhZnRlciBjaGVja2luZyB0aGUgZmlsZSBleGlzdHMuICIiIgotICAgICAgICBw
YXJ0cyA9IHN0cihhcmcpLnNwbGl0KCI6OiIpCi0gICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlv
bi5weWFyZ3M6Ci0gICAgICAgICAgICBwYXJ0c1swXSA9IHNlbGYuX3RyeWNvbnZlcnRweWFyZyhw
YXJ0c1swXSkKLSAgICAgICAgcmVscGF0aCA9IHBhcnRzWzBdLnJlcGxhY2UoIi8iLCBvcy5zZXAp
Ci0gICAgICAgIHBhdGggPSBzZWxmLmNvbmZpZy5pbnZvY2F0aW9uX2Rpci5qb2luKHJlbHBhdGgs
IGFicz1UcnVlKQotICAgICAgICBpZiBub3QgcGF0aC5jaGVjaygpOgotICAgICAgICAgICAgaWYg
c2VsZi5jb25maWcub3B0aW9uLnB5YXJnczoKLSAgICAgICAgICAgICAgICByYWlzZSBVc2FnZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAiZmlsZSBvciBwYWNrYWdlIG5vdCBmb3VuZDogIiAr
IGFyZyArCi0gICAgICAgICAgICAgICAgICAgICIgKG1pc3NpbmcgX19pbml0X18ucHk/KSIpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoImZpbGUg
bm90IGZvdW5kOiAiICsgYXJnKQotICAgICAgICBwYXJ0c1swXSA9IHBhdGgKLSAgICAgICAgcmV0
dXJuIHBhcnRzCi0KLSAgICBkZWYgbWF0Y2hub2RlcyhzZWxmLCBtYXRjaGluZywgbmFtZXMpOgot
ICAgICAgICBzZWxmLnRyYWNlKCJtYXRjaG5vZGVzIiwgbWF0Y2hpbmcsIG5hbWVzKQotICAgICAg
ICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50ICs9IDEKLSAgICAgICAgbm9kZXMgPSBzZWxmLl9tYXRj
aG5vZGVzKG1hdGNoaW5nLCBuYW1lcykKLSAgICAgICAgbnVtID0gbGVuKG5vZGVzKQotICAgICAg
ICBzZWxmLnRyYWNlKCJtYXRjaG5vZGVzIGZpbmlzaGVkIC0+ICIsIG51bSwgIm5vZGVzIikKLSAg
ICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCAtPSAxCi0gICAgICAgIGlmIG51bSA9PSAwOgot
ICAgICAgICAgICAgcmFpc2UgTm9NYXRjaChtYXRjaGluZywgbmFtZXNbOjFdKQotICAgICAgICBy
ZXR1cm4gbm9kZXMKLQotICAgIGRlZiBfbWF0Y2hub2RlcyhzZWxmLCBtYXRjaGluZywgbmFtZXMp
OgotICAgICAgICBpZiBub3QgbWF0Y2hpbmcgb3Igbm90IG5hbWVzOgotICAgICAgICAgICAgcmV0
dXJuIG1hdGNoaW5nCi0gICAgICAgIG5hbWUgPSBuYW1lc1swXQotICAgICAgICBhc3NlcnQgbmFt
ZQotICAgICAgICBuZXh0bmFtZXMgPSBuYW1lc1sxOl0KLSAgICAgICAgcmVzdWx0bm9kZXMgPSBb
XQotICAgICAgICBmb3Igbm9kZSBpbiBtYXRjaGluZzoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uobm9kZSwgSXRlbSk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG5hbWVzOgotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRub2Rlcy5hcHBlbmQobm9kZSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uobm9kZSwgQ29sbGVjdG9yKQotICAg
ICAgICAgICAgcmVwID0gY29sbGVjdF9vbmVfbm9kZShub2RlKQotICAgICAgICAgICAgaWYgcmVw
LnBhc3NlZDoKLSAgICAgICAgICAgICAgICBoYXNfbWF0Y2hlZCA9IEZhbHNlCi0gICAgICAgICAg
ICAgICAgZm9yIHggaW4gcmVwLnJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBy
ZW1vdmUgcGFyYW1ldHJpemVkIHdvcmthcm91bmQgb25jZSBjb2xsZWN0aW9uIHN0cnVjdHVyZSBj
b250YWlucyBwYXJhbWV0cml6YXRpb24KLSAgICAgICAgICAgICAgICAgICAgaWYgeC5uYW1lID09
IG5hbWUgb3IgeC5uYW1lLnNwbGl0KCJbIilbMF0gPT0gbmFtZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdG5vZGVzLmV4dGVuZChzZWxmLm1hdGNobm9kZXMoW3hdLCBuZXh0bmFtZXMp
KQotICAgICAgICAgICAgICAgICAgICAgICAgaGFzX21hdGNoZWQgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgIyBYWFggYWNjZXB0IElEcyB0aGF0IGRvbid0IGhhdmUgIigpIiBmb3IgY2xhc3MgaW5z
dGFuY2VzCi0gICAgICAgICAgICAgICAgaWYgbm90IGhhc19tYXRjaGVkIGFuZCBsZW4ocmVwLnJl
c3VsdCkgPT0gMSBhbmQgeC5uYW1lID09ICIoKSI6Ci0gICAgICAgICAgICAgICAgICAgIG5leHRu
YW1lcy5pbnNlcnQoMCwgbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0bm9kZXMuZXh0
ZW5kKHNlbGYubWF0Y2hub2RlcyhbeF0sIG5leHRuYW1lcykpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICMgcmVwb3J0IGNvbGxlY3Rpb24gZmFpbHVyZXMgaGVyZSB0byBhdm9p
ZCBmYWlsaW5nIHRvIHJ1biBzb21lIHRlc3QKLSAgICAgICAgICAgICAgICAjIHNwZWNpZmllZCBp
biB0aGUgY29tbWFuZCBsaW5lIGJlY2F1c2UgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUKLSAgICAg
ICAgICAgICAgICAjIGltcG9ydGVkICgjMTM0KQotICAgICAgICAgICAgICAgIG5vZGUuaWhvb2su
cHl0ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdG5v
ZGVzCi0KLSAgICBkZWYgZ2VuaXRlbXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHNlbGYudHJhY2Uo
Imdlbml0ZW1zIiwgbm9kZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBJdGVtKToKLSAg
ICAgICAgICAgIG5vZGUuaWhvb2sucHl0ZXN0X2l0ZW1jb2xsZWN0ZWQoaXRlbT1ub2RlKQotICAg
ICAgICAgICAgeWllbGQgbm9kZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uobm9kZSwgQ29sbGVjdG9yKQotICAgICAgICAgICAgcmVwID0gY29sbGVjdF9vbmVf
bm9kZShub2RlKQotICAgICAgICAgICAgaWYgcmVwLnBhc3NlZDoKLSAgICAgICAgICAgICAgICBm
b3Igc3Vibm9kZSBpbiByZXAucmVzdWx0OgotICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBz
ZWxmLmdlbml0ZW1zKHN1Ym5vZGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgeAot
ICAgICAgICAgICAgbm9kZS5paG9vay5weXRlc3RfY29sbGVjdHJlcG9ydChyZXBvcnQ9cmVwKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYXJrLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9tYXJrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjFmMDFiMWEyZTMu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L21hcmsucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw0OTYgKzAsMCBAQAotIiIiIGdlbmVyaWMgbWVjaGFuaXNtIGZvciBtYXJraW5n
IGFuZCBzZWxlY3RpbmcgcHl0aG9uIGZ1bmN0aW9ucy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBp
bnNwZWN0Ci1pbXBvcnQgd2FybmluZ3MKLWltcG9ydCBhdHRyCi1mcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBuYW1lZHR1cGxlCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBhdHRyZ2V0dGVyCi1mcm9tIHNp
eC5tb3ZlcyBpbXBvcnQgbWFwCi1mcm9tIC5kZXByZWNhdGVkIGltcG9ydCBNQVJLX1BBUkFNRVRF
UlNFVF9VTlBBQ0tJTkcKLWZyb20gLmNvbXBhdCBpbXBvcnQgTk9UU0VULCBnZXRmc2xpbmVubwot
Ci0KLWRlZiBhbGlhcyhuYW1lLCB3YXJuaW5nPU5vbmUpOgotICAgIGdldHRlciA9IGF0dHJnZXR0
ZXIobmFtZSkKLQotICAgIGRlZiB3YXJuZWQoc2VsZik6Ci0gICAgICAgIHdhcm5pbmdzLndhcm4o
d2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByZXR1cm4gZ2V0dGVyKHNlbGYpCi0KLSAg
ICByZXR1cm4gcHJvcGVydHkoZ2V0dGVyIGlmIHdhcm5pbmcgaXMgTm9uZSBlbHNlIHdhcm5lZCwg
ZG9jPSdhbGlhcyBmb3IgJyArIG5hbWUpCi0KLQotY2xhc3MgUGFyYW1ldGVyU2V0KG5hbWVkdHVw
bGUoJ1BhcmFtZXRlclNldCcsICd2YWx1ZXMsIG1hcmtzLCBpZCcpKToKLSAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgcGFyYW0oY2xzLCAqdmFsdWVzLCAqKmt3KToKLSAgICAgICAgbWFya3MgPSBr
dy5wb3AoJ21hcmtzJywgKCkpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobWFya3MsIE1hcmtEZWNv
cmF0b3IpOgotICAgICAgICAgICAgbWFya3MgPSBtYXJrcywKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1hcmtzLCAodHVwbGUsIGxpc3QsIHNldCkpCi0KLSAg
ICAgICAgZGVmIHBhcmFtX2V4dHJhY3RfaWQoaWQ9Tm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4g
aWQKLQotICAgICAgICBpZCA9IHBhcmFtX2V4dHJhY3RfaWQoKiprdykKLSAgICAgICAgcmV0dXJu
IGNscyh2YWx1ZXMsIG1hcmtzLCBpZCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBleHRy
YWN0X2Zyb20oY2xzLCBwYXJhbWV0ZXJzZXQsIGxlZ2FjeV9mb3JjZV90dXBsZT1GYWxzZSk6Ci0g
ICAgICAgICIiIgotICAgICAgICA6cGFyYW0gcGFyYW1ldGVyc2V0OgotICAgICAgICAgICAgYSBs
ZWdhY3kgc3R5bGUgcGFyYW1ldGVyc2V0IHRoYXQgbWF5IG9yIG1heSBub3QgYmUgYSB0dXBsZSwK
LSAgICAgICAgICAgIGFuZCBtYXkgb3IgbWF5IG5vdCBiZSB3cmFwcGVkIGludG8gYSBtZXNzIG9m
IG1hcmsgb2JqZWN0cwotCi0gICAgICAgIDpwYXJhbSBsZWdhY3lfZm9yY2VfdHVwbGU6Ci0gICAg
ICAgICAgICBlbmZvcmNlIHR1cGxlIHdyYXBwaW5nIHNvIHNpbmdsZSBhcmd1bWVudCB0dXBsZSB2
YWx1ZXMKLSAgICAgICAgICAgIGRvbid0IGdldCBkZWNvbXBvc2VkIGFuZCBicmVhayB0ZXN0cwot
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1ldGVyc2V0LCBjbHMp
OgotICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNldAotICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShwYXJhbWV0ZXJzZXQsIE1hcmtEZWNvcmF0b3IpIGFuZCBsZWdhY3lfZm9yY2VfdHVwbGU6
Ci0gICAgICAgICAgICByZXR1cm4gY2xzLnBhcmFtKHBhcmFtZXRlcnNldCkKLQotICAgICAgICBu
ZXdtYXJrcyA9IFtdCi0gICAgICAgIGFyZ3ZhbCA9IHBhcmFtZXRlcnNldAotICAgICAgICB3aGls
ZSBpc2luc3RhbmNlKGFyZ3ZhbCwgTWFya0RlY29yYXRvcik6Ci0gICAgICAgICAgICBuZXdtYXJr
cy5hcHBlbmQoTWFya0RlY29yYXRvcihNYXJrKAotICAgICAgICAgICAgICAgIGFyZ3ZhbC5tYXJr
bmFtZSwgYXJndmFsLmFyZ3NbOi0xXSwgYXJndmFsLmt3YXJncykpKQotICAgICAgICAgICAgYXJn
dmFsID0gYXJndmFsLmFyZ3NbLTFdCi0gICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShhcmd2
YWwsIFBhcmFtZXRlclNldCkKLSAgICAgICAgaWYgbGVnYWN5X2ZvcmNlX3R1cGxlOgotICAgICAg
ICAgICAgYXJndmFsID0gYXJndmFsLAotCi0gICAgICAgIGlmIG5ld21hcmtzOgotICAgICAgICAg
ICAgd2FybmluZ3Mud2FybihNQVJLX1BBUkFNRVRFUlNFVF9VTlBBQ0tJTkcpCi0KLSAgICAgICAg
cmV0dXJuIGNscyhhcmd2YWwsIG1hcmtzPW5ld21hcmtzLCBpZD1Ob25lKQotCi0gICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIF9mb3JfcGFyYW1ldGVyaXplKGNscywgYXJnbmFtZXMsIGFyZ3ZhbHVl
cywgZnVuY3Rpb24pOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmduYW1lcywgKHR1cGxl
LCBsaXN0KSk6Ci0gICAgICAgICAgICBhcmduYW1lcyA9IFt4LnN0cmlwKCkgZm9yIHggaW4gYXJn
bmFtZXMuc3BsaXQoIiwiKSBpZiB4LnN0cmlwKCldCi0gICAgICAgICAgICBmb3JjZV90dXBsZSA9
IGxlbihhcmduYW1lcykgPT0gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yY2VfdHVw
bGUgPSBGYWxzZQotICAgICAgICBwYXJhbWV0ZXJzID0gWwotICAgICAgICAgICAgUGFyYW1ldGVy
U2V0LmV4dHJhY3RfZnJvbSh4LCBsZWdhY3lfZm9yY2VfdHVwbGU9Zm9yY2VfdHVwbGUpCi0gICAg
ICAgICAgICBmb3IgeCBpbiBhcmd2YWx1ZXNdCi0gICAgICAgIGRlbCBhcmd2YWx1ZXMKLQotICAg
ICAgICBpZiBub3QgcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGZzLCBsaW5lbm8gPSBnZXRmc2xp
bmVubyhmdW5jdGlvbikKLSAgICAgICAgICAgIHJlYXNvbiA9ICJnb3QgZW1wdHkgcGFyYW1ldGVy
IHNldCAlciwgZnVuY3Rpb24gJXMgYXQgJXM6JWQiICUgKAotICAgICAgICAgICAgICAgIGFyZ25h
bWVzLCBmdW5jdGlvbi5fX25hbWVfXywgZnMsIGxpbmVubykKLSAgICAgICAgICAgIG1hcmsgPSBN
QVJLX0dFTi5za2lwKHJlYXNvbj1yZWFzb24pCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVu
ZChQYXJhbWV0ZXJTZXQoCi0gICAgICAgICAgICAgICAgdmFsdWVzPShOT1RTRVQsKSAqIGxlbihh
cmduYW1lcyksCi0gICAgICAgICAgICAgICAgbWFya3M9W21hcmtdLAotICAgICAgICAgICAgICAg
IGlkPU5vbmUsCi0gICAgICAgICAgICApKQotICAgICAgICByZXR1cm4gYXJnbmFtZXMsIHBhcmFt
ZXRlcnMKLQotCi1jbGFzcyBNYXJrZXJFcnJvcihFeGNlcHRpb24pOgotCi0gICAgIiIiRXJyb3Ig
aW4gdXNlIG9mIGEgcHl0ZXN0IG1hcmtlci9hdHRyaWJ1dGUuIiIiCi0KLQotZGVmIHBhcmFtKCp2
YWx1ZXMsICoqa3cpOgotICAgIHJldHVybiBQYXJhbWV0ZXJTZXQucGFyYW0oKnZhbHVlcywgKipr
dykKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2Vy
LmdldGdyb3VwKCJnZW5lcmFsIikKLSAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAgICAnLWsn
LAotICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ia2V5d29yZCIsIGRlZmF1bHQ9JycsIG1l
dGF2YXI9IkVYUFJFU1NJT04iLAotICAgICAgICBoZWxwPSJvbmx5IHJ1biB0ZXN0cyB3aGljaCBt
YXRjaCB0aGUgZ2l2ZW4gc3Vic3RyaW5nIGV4cHJlc3Npb24uICIKLSAgICAgICAgICAgICAiQW4g
ZXhwcmVzc2lvbiBpcyBhIHB5dGhvbiBldmFsdWF0YWJsZSBleHByZXNzaW9uICIKLSAgICAgICAg
ICAgICAid2hlcmUgYWxsIG5hbWVzIGFyZSBzdWJzdHJpbmctbWF0Y2hlZCBhZ2FpbnN0IHRlc3Qg
bmFtZXMgIgotICAgICAgICAgICAgICJhbmQgdGhlaXIgcGFyZW50IGNsYXNzZXMuIEV4YW1wbGU6
IC1rICd0ZXN0X21ldGhvZCBvciB0ZXN0XyIKLSAgICAgICAgICAgICAib3RoZXInIG1hdGNoZXMg
YWxsIHRlc3QgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHdob3NlIG5hbWUgIgotICAgICAgICAgICAg
ICJjb250YWlucyAndGVzdF9tZXRob2QnIG9yICd0ZXN0X290aGVyJywgd2hpbGUgLWsgJ25vdCB0
ZXN0X21ldGhvZCcgIgotICAgICAgICAgICAgICJtYXRjaGVzIHRob3NlIHRoYXQgZG9uJ3QgY29u
dGFpbiAndGVzdF9tZXRob2QnIGluIHRoZWlyIG5hbWVzLiAiCi0gICAgICAgICAgICAgIkFkZGl0
aW9uYWxseSBrZXl3b3JkcyBhcmUgbWF0Y2hlZCB0byBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgIgot
ICAgICAgICAgICAgICJjb250YWluaW5nIGV4dHJhIG5hbWVzIGluIHRoZWlyICdleHRyYV9rZXl3
b3JkX21hdGNoZXMnIHNldCwgIgotICAgICAgICAgICAgICJhcyB3ZWxsIGFzIGZ1bmN0aW9ucyB3
aGljaCBoYXZlIG5hbWVzIGFzc2lnbmVkIGRpcmVjdGx5IHRvIHRoZW0uIgotICAgICkKLQotICAg
IGdyb3VwLl9hZGRvcHRpb24oCi0gICAgICAgICItbSIsCi0gICAgICAgIGFjdGlvbj0ic3RvcmUi
LCBkZXN0PSJtYXJrZXhwciIsIGRlZmF1bHQ9IiIsIG1ldGF2YXI9Ik1BUktFWFBSIiwKLSAgICAg
ICAgaGVscD0ib25seSBydW4gdGVzdHMgbWF0Y2hpbmcgZ2l2ZW4gbWFyayBleHByZXNzaW9uLiAg
IgotICAgICAgICAgICAgICJleGFtcGxlOiAtbSAnbWFyazEgYW5kIG5vdCBtYXJrMicuIgotICAg
ICkKLQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgIi0tbWFya2VycyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCi0gICAgICAgIGhlbHA9InNob3cgbWFya2VycyAoYnVpbHRpbiwgcGx1Z2lu
IGFuZCBwZXItcHJvamVjdCBvbmVzKS4iCi0gICAgKQotCi0gICAgcGFyc2VyLmFkZGluaSgibWFy
a2VycyIsICJtYXJrZXJzIGZvciB0ZXN0IGZ1bmN0aW9ucyIsICdsaW5lbGlzdCcpCi0KLQotZGVm
IHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKLSAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcK
LSAgICBpZiBjb25maWcub3B0aW9uLm1hcmtlcnM6Ci0gICAgICAgIGNvbmZpZy5fZG9fY29uZmln
dXJlKCkKLSAgICAgICAgdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWluYWxfd3JpdGVy
KGNvbmZpZykKLSAgICAgICAgZm9yIGxpbmUgaW4gY29uZmlnLmdldGluaSgibWFya2VycyIpOgot
ICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCI6IiwgMSkKLSAgICAgICAgICAgIG5hbWUg
PSBwYXJ0c1swXQotICAgICAgICAgICAgcmVzdCA9IHBhcnRzWzFdIGlmIGxlbihwYXJ0cykgPT0g
MiBlbHNlICcnCi0gICAgICAgICAgICB0dy53cml0ZSgiQHB5dGVzdC5tYXJrLiVzOiIgJSBuYW1l
LCBib2xkPVRydWUpCi0gICAgICAgICAgICB0dy5saW5lKHJlc3QpCi0gICAgICAgICAgICB0dy5s
aW5lKCkKLSAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUoKQotICAgICAgICByZXR1
cm4gMAotCi0KLXB5dGVzdF9jbWRsaW5lX21haW4udHJ5Zmlyc3QgPSBUcnVlCi0KLQotZGVmIHB5
dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKGl0ZW1zLCBjb25maWcpOgotICAgIGtleXdvcmRl
eHByID0gY29uZmlnLm9wdGlvbi5rZXl3b3JkLmxzdHJpcCgpCi0gICAgbWF0Y2hleHByID0gY29u
ZmlnLm9wdGlvbi5tYXJrZXhwcgotICAgIGlmIG5vdCBrZXl3b3JkZXhwciBhbmQgbm90IG1hdGNo
ZXhwcjoKLSAgICAgICAgcmV0dXJuCi0gICAgIyBweXRlc3QgdXNlZCB0byBhbGxvdyAiLSIgZm9y
IG5lZ2F0aW5nCi0gICAgIyBidXQgdG9kYXkgd2UganVzdCBhbGxvdyAiLSIgYXQgdGhlIGJlZ2lu
bmluZywgdXNlICJub3QiIGluc3RlYWQKLSAgICAjIHdlIHByb2JhYmx5IHJlbW92ZSAiLSIgYWx0
b2dldGhlciBzb29uCi0gICAgaWYga2V5d29yZGV4cHIuc3RhcnRzd2l0aCgiLSIpOgotICAgICAg
ICBrZXl3b3JkZXhwciA9ICJub3QgIiArIGtleXdvcmRleHByWzE6XQotICAgIHNlbGVjdHVudGls
ID0gRmFsc2UKLSAgICBpZiBrZXl3b3JkZXhwclstMTpdID09ICI6IjoKLSAgICAgICAgc2VsZWN0
dW50aWwgPSBUcnVlCi0gICAgICAgIGtleXdvcmRleHByID0ga2V5d29yZGV4cHJbOi0xXQotCi0g
ICAgcmVtYWluaW5nID0gW10KLSAgICBkZXNlbGVjdGVkID0gW10KLSAgICBmb3IgY29saXRlbSBp
biBpdGVtczoKLSAgICAgICAgaWYga2V5d29yZGV4cHIgYW5kIG5vdCBtYXRjaGtleXdvcmQoY29s
aXRlbSwga2V5d29yZGV4cHIpOgotICAgICAgICAgICAgZGVzZWxlY3RlZC5hcHBlbmQoY29saXRl
bSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNlbGVjdHVudGlsOgotICAgICAgICAg
ICAgICAgIGtleXdvcmRleHByID0gTm9uZQotICAgICAgICAgICAgaWYgbWF0Y2hleHByOgotICAg
ICAgICAgICAgICAgIGlmIG5vdCBtYXRjaG1hcmsoY29saXRlbSwgbWF0Y2hleHByKToKLSAgICAg
ICAgICAgICAgICAgICAgZGVzZWxlY3RlZC5hcHBlbmQoY29saXRlbSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlbWFpbmluZy5hcHBlbmQoY29saXRlbSkKLQot
ICAgIGlmIGRlc2VsZWN0ZWQ6Ci0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9kZXNlbGVjdGVk
KGl0ZW1zPWRlc2VsZWN0ZWQpCi0gICAgICAgIGl0ZW1zWzpdID0gcmVtYWluaW5nCi0KLQotQGF0
dHIucwotY2xhc3MgTWFya01hcHBpbmcob2JqZWN0KToKLSAgICAiIiJQcm92aWRlcyBhIGxvY2Fs
IG1hcHBpbmcgZm9yIG1hcmtlcnMgd2hlcmUgaXRlbSBhY2Nlc3MKLSAgICByZXNvbHZlcyB0byBU
cnVlIGlmIHRoZSBtYXJrZXIgaXMgcHJlc2VudC4gIiIiCi0KLSAgICBvd25fbWFya19uYW1lcyA9
IGF0dHIuaWIoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fa2V5d29yZHMoY2xz
LCBrZXl3b3Jkcyk6Ci0gICAgICAgIG1hcmtfbmFtZXMgPSBzZXQoKQotICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBrZXl3b3Jkcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2
YWx1ZSwgTWFya0luZm8pIG9yIGlzaW5zdGFuY2UodmFsdWUsIE1hcmtEZWNvcmF0b3IpOgotICAg
ICAgICAgICAgICAgIG1hcmtfbmFtZXMuYWRkKGtleSkKLSAgICAgICAgcmV0dXJuIGNscyhtYXJr
X25hbWVzKQotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1
cm4gbmFtZSBpbiBzZWxmLm93bl9tYXJrX25hbWVzCi0KLQotY2xhc3MgS2V5d29yZE1hcHBpbmco
b2JqZWN0KToKLSAgICAiIiJQcm92aWRlcyBhIGxvY2FsIG1hcHBpbmcgZm9yIGtleXdvcmRzLgot
ICAgIEdpdmVuIGEgbGlzdCBvZiBuYW1lcywgbWFwIGFueSBzdWJzdHJpbmcgb2Ygb25lIG9mIHRo
ZXNlIG5hbWVzIHRvIFRydWUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt
ZXMpOgotICAgICAgICBzZWxmLl9uYW1lcyA9IG5hbWVzCi0KLSAgICBkZWYgX19nZXRpdGVtX18o
c2VsZiwgc3VibmFtZSk6Ci0gICAgICAgIGZvciBuYW1lIGluIHNlbGYuX25hbWVzOgotICAgICAg
ICAgICAgaWYgc3VibmFtZSBpbiBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0g
ICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBtYXRjaG1hcmsoY29saXRlbSwgbWFya2V4cHIp
OgotICAgICIiIlRyaWVzIHRvIG1hdGNoIG9uIGFueSBtYXJrZXIgbmFtZXMsIGF0dGFjaGVkIHRv
IHRoZSBnaXZlbiBjb2xpdGVtLiIiIgotICAgIHJldHVybiBldmFsKG1hcmtleHByLCB7fSwgTWFy
a01hcHBpbmcuZnJvbV9rZXl3b3Jkcyhjb2xpdGVtLmtleXdvcmRzKSkKLQotCi1kZWYgbWF0Y2hr
ZXl3b3JkKGNvbGl0ZW0sIGtleXdvcmRleHByKToKLSAgICAiIiJUcmllcyB0byBtYXRjaCBnaXZl
biBrZXl3b3JkIGV4cHJlc3Npb24gdG8gZ2l2ZW4gY29sbGVjdG9yIGl0ZW0uCi0KLSAgICBXaWxs
IG1hdGNoIG9uIHRoZSBuYW1lIG9mIGNvbGl0ZW0sIGluY2x1ZGluZyB0aGUgbmFtZXMgb2YgaXRz
IHBhcmVudHMuCi0gICAgT25seSBtYXRjaGVzIG5hbWVzIG9mIGl0ZW1zIHdoaWNoIGFyZSBlaXRo
ZXIgYSA6Y2xhc3M6YENsYXNzYCBvciBhCi0gICAgOmNsYXNzOmBGdW5jdGlvbmAuCi0gICAgQWRk
aXRpb25hbGx5LCBtYXRjaGVzIG9uIG5hbWVzIGluIHRoZSAnZXh0cmFfa2V5d29yZF9tYXRjaGVz
JyBzZXQgb2YKLSAgICBhbnkgaXRlbSwgYXMgd2VsbCBhcyBuYW1lcyBkaXJlY3RseSBhc3NpZ25l
ZCB0byB0ZXN0IGZ1bmN0aW9ucy4KLSAgICAiIiIKLSAgICBtYXBwZWRfbmFtZXMgPSBzZXQoKQot
Ci0gICAgIyBBZGQgdGhlIG5hbWVzIG9mIHRoZSBjdXJyZW50IGl0ZW0gYW5kIGFueSBwYXJlbnQg
aXRlbXMKLSAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgZm9yIGl0ZW0gaW4gY29saXRlbS5saXN0Y2hh
aW4oKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgcHl0ZXN0Lkluc3RhbmNlKToK
LSAgICAgICAgICAgIG1hcHBlZF9uYW1lcy5hZGQoaXRlbS5uYW1lKQotCi0gICAgIyBBZGQgdGhl
IG5hbWVzIGFkZGVkIGFzIGV4dHJhIGtleXdvcmRzIHRvIGN1cnJlbnQgb3IgcGFyZW50IGl0ZW1z
Ci0gICAgZm9yIG5hbWUgaW4gY29saXRlbS5saXN0ZXh0cmFrZXl3b3JkcygpOgotICAgICAgICBt
YXBwZWRfbmFtZXMuYWRkKG5hbWUpCi0KLSAgICAjIEFkZCB0aGUgbmFtZXMgYXR0YWNoZWQgdG8g
dGhlIGN1cnJlbnQgZnVuY3Rpb24gdGhyb3VnaCBkaXJlY3QgYXNzaWdubWVudAotICAgIGlmIGhh
c2F0dHIoY29saXRlbSwgJ2Z1bmN0aW9uJyk6Ci0gICAgICAgIGZvciBuYW1lIGluIGNvbGl0ZW0u
ZnVuY3Rpb24uX19kaWN0X186Ci0gICAgICAgICAgICBtYXBwZWRfbmFtZXMuYWRkKG5hbWUpCi0K
LSAgICBtYXBwaW5nID0gS2V5d29yZE1hcHBpbmcobWFwcGVkX25hbWVzKQotICAgIGlmICIgIiBu
b3QgaW4ga2V5d29yZGV4cHI6Ci0gICAgICAgICMgc3BlY2lhbCBjYXNlIHRvIGFsbG93IGZvciBz
aW1wbGUgIi1rIHBhc3MiIGFuZCAiLWsgMS4zIgotICAgICAgICByZXR1cm4gbWFwcGluZ1trZXl3
b3JkZXhwcl0KLSAgICBlbGlmIGtleXdvcmRleHByLnN0YXJ0c3dpdGgoIm5vdCAiKSBhbmQgIiAi
IG5vdCBpbiBrZXl3b3JkZXhwcls0Ol06Ci0gICAgICAgIHJldHVybiBub3QgbWFwcGluZ1trZXl3
b3JkZXhwcls0Ol1dCi0gICAgcmV0dXJuIGV2YWwoa2V5d29yZGV4cHIsIHt9LCBtYXBwaW5nKQot
Ci0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgY29uZmlnLl9vbGRfbWFya19j
b25maWcgPSBNQVJLX0dFTi5fY29uZmlnCi0gICAgaWYgY29uZmlnLm9wdGlvbi5zdHJpY3Q6Ci0g
ICAgICAgIE1BUktfR0VOLl9jb25maWcgPSBjb25maWcKLQotCi1kZWYgcHl0ZXN0X3VuY29uZmln
dXJlKGNvbmZpZyk6Ci0gICAgTUFSS19HRU4uX2NvbmZpZyA9IGdldGF0dHIoY29uZmlnLCAnX29s
ZF9tYXJrX2NvbmZpZycsIE5vbmUpCi0KLQotY2xhc3MgTWFya0dlbmVyYXRvcjoKLSAgICAiIiIg
RmFjdG9yeSBmb3IgOmNsYXNzOmBNYXJrRGVjb3JhdG9yYCBvYmplY3RzIC0gZXhwb3NlZCBhcwot
ICAgIGEgYGBweXRlc3QubWFya2BgIHNpbmdsZXRvbiBpbnN0YW5jZS4gIEV4YW1wbGU6OgotCi0g
ICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICBAcHl0ZXN0Lm1hcmsuc2xvd3Rlc3QKLSAg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICB3aWxs
IHNldCBhICdzbG93dGVzdCcgOmNsYXNzOmBNYXJrSW5mb2Agb2JqZWN0Ci0gICAgb24gdGhlIGBg
dGVzdF9mdW5jdGlvbmBgIG9iamVjdC4gIiIiCi0gICAgX2NvbmZpZyA9IE5vbmUKLQotICAgIGRl
ZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgaWYgbmFtZVswXSA9PSAiXyI6Ci0g
ICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTWFya2VyIG5hbWUgbXVzdCBOT1Qgc3Rh
cnQgd2l0aCB1bmRlcnNjb3JlIikKLSAgICAgICAgaWYgc2VsZi5fY29uZmlnIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5fY2hlY2sobmFtZSkKLSAgICAgICAgcmV0dXJuIE1hcmtEZWNv
cmF0b3IoTWFyayhuYW1lLCAoKSwge30pKQotCi0gICAgZGVmIF9jaGVjayhzZWxmLCBuYW1lKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWxmLl9tYXJrZXJzOgotICAg
ICAgICAgICAgICAgIHJldHVybgotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAg
ICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuX21hcmtlcnMgPSB2YWx1ZXMgPSBzZXQoKQotICAg
ICAgICBmb3IgbGluZSBpbiBzZWxmLl9jb25maWcuZ2V0aW5pKCJtYXJrZXJzIik6Ci0gICAgICAg
ICAgICBtYXJrZXIgPSBsaW5lLnNwbGl0KCI6IiwgMSlbMF0KLSAgICAgICAgICAgIG1hcmtlciA9
IG1hcmtlci5yc3RyaXAoKQotICAgICAgICAgICAgeCA9IG1hcmtlci5zcGxpdCgiKCIsIDEpWzBd
Ci0gICAgICAgICAgICB2YWx1ZXMuYWRkKHgpCi0gICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYu
X21hcmtlcnM6Ci0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgbm90IGEgcmVn
aXN0ZXJlZCBtYXJrZXIiICUgKG5hbWUsKSkKLQotCi1kZWYgaXN0ZXN0ZnVuYyhmdW5jKToKLSAg
ICByZXR1cm4gaGFzYXR0cihmdW5jLCAiX19jYWxsX18iKSBhbmQgXAotICAgICAgICBnZXRhdHRy
KGZ1bmMsICJfX25hbWVfXyIsICI8bGFtYmRhPiIpICE9ICI8bGFtYmRhPiIKLQotCi1AYXR0ci5z
KGZyb3plbj1UcnVlKQotY2xhc3MgTWFyayhvYmplY3QpOgotICAgIG5hbWUgPSBhdHRyLmliKCkK
LSAgICBhcmdzID0gYXR0ci5pYigpCi0gICAga3dhcmdzID0gYXR0ci5pYigpCi0KLSAgICBkZWYg
Y29tYmluZWRfd2l0aChzZWxmLCBvdGhlcik6Ci0gICAgICAgIGFzc2VydCBzZWxmLm5hbWUgPT0g
b3RoZXIubmFtZQotICAgICAgICByZXR1cm4gTWFyaygKLSAgICAgICAgICAgIHNlbGYubmFtZSwg
c2VsZi5hcmdzICsgb3RoZXIuYXJncywKLSAgICAgICAgICAgIGRpY3Qoc2VsZi5rd2FyZ3MsICoq
b3RoZXIua3dhcmdzKSkKLQotCi1AYXR0ci5zCi1jbGFzcyBNYXJrRGVjb3JhdG9yKG9iamVjdCk6
Ci0gICAgIiIiIEEgZGVjb3JhdG9yIGZvciB0ZXN0IGZ1bmN0aW9ucyBhbmQgdGVzdCBjbGFzc2Vz
LiAgV2hlbiBhcHBsaWVkCi0gICAgaXQgd2lsbCBjcmVhdGUgOmNsYXNzOmBNYXJrSW5mb2Agb2Jq
ZWN0cyB3aGljaCBtYXkgYmUKLSAgICA6cmVmOmByZXRyaWV2ZWQgYnkgaG9va3MgYXMgaXRlbSBr
ZXl3b3JkcyA8ZXhjb250cm9sc2tpcD5gLgotICAgIE1hcmtEZWNvcmF0b3IgaW5zdGFuY2VzIGFy
ZSBvZnRlbiBjcmVhdGVkIGxpa2UgdGhpczo6Ci0KLSAgICAgICAgbWFyazEgPSBweXRlc3QubWFy
ay5OQU1FICAgICAgICAgICAgICAjIHNpbXBsZSBNYXJrRGVjb3JhdG9yCi0gICAgICAgIG1hcmsy
ID0gcHl0ZXN0Lm1hcmsuTkFNRShuYW1lMT12YWx1ZSkgIyBwYXJhbWV0cml6ZWQgTWFya0RlY29y
YXRvcgotCi0gICAgYW5kIGNhbiB0aGVuIGJlIGFwcGxpZWQgYXMgZGVjb3JhdG9ycyB0byB0ZXN0
IGZ1bmN0aW9uczo6Ci0KLSAgICAgICAgQG1hcmsyCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
KCk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBXaGVuIGEgTWFya0RlY29yYXRvciBpbnN0YW5j
ZSBpcyBjYWxsZWQgaXQgZG9lcyB0aGUgZm9sbG93aW5nOgotICAgICAgMS4gSWYgY2FsbGVkIHdp
dGggYSBzaW5nbGUgY2xhc3MgYXMgaXRzIG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgbm8K
LSAgICAgICAgIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGl0IGF0dGFjaGVzIGl0c2Vs
ZiB0byB0aGUgY2xhc3Mgc28gaXQKLSAgICAgICAgIGdldHMgYXBwbGllZCBhdXRvbWF0aWNhbGx5
IHRvIGFsbCB0ZXN0IGNhc2VzIGZvdW5kIGluIHRoYXQgY2xhc3MuCi0gICAgICAyLiBJZiBjYWxs
ZWQgd2l0aCBhIHNpbmdsZSBmdW5jdGlvbiBhcyBpdHMgb25seSBwb3NpdGlvbmFsIGFyZ3VtZW50
IGFuZAotICAgICAgICAgbm8gYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgYXR0YWNo
ZXMgYSBNYXJrSW5mbyBvYmplY3QgdG8gdGhlCi0gICAgICAgICBmdW5jdGlvbiwgY29udGFpbmlu
ZyBhbGwgdGhlIGFyZ3VtZW50cyBhbHJlYWR5IHN0b3JlZCBpbnRlcm5hbGx5IGluCi0gICAgICAg
ICB0aGUgTWFya0RlY29yYXRvci4KLSAgICAgIDMuIFdoZW4gY2FsbGVkIGluIGFueSBvdGhlciBj
YXNlLCBpdCBwZXJmb3JtcyBhICdmYWtlIGNvbnN0cnVjdGlvbicgY2FsbCwKLSAgICAgICAgIGku
ZS4gaXQgcmV0dXJucyBhIG5ldyBNYXJrRGVjb3JhdG9yIGluc3RhbmNlIHdpdGggdGhlIG9yaWdp
bmFsCi0gICAgICAgICBNYXJrRGVjb3JhdG9yJ3MgY29udGVudCB1cGRhdGVkIHdpdGggdGhlIGFy
Z3VtZW50cyBwYXNzZWQgdG8gdGhpcwotICAgICAgICAgY2FsbC4KLQotICAgIE5vdGU6IFRoZSBy
dWxlcyBhYm92ZSBwcmV2ZW50IE1hcmtEZWNvcmF0b3Igb2JqZWN0cyBmcm9tIHN0b3Jpbmcgb25s
eSBhCi0gICAgc2luZ2xlIGZ1bmN0aW9uIG9yIGNsYXNzIHJlZmVyZW5jZSBhcyB0aGVpciBwb3Np
dGlvbmFsIGFyZ3VtZW50IHdpdGggbm8KLSAgICBhZGRpdGlvbmFsIGtleXdvcmQgb3IgcG9zaXRp
b25hbCBhcmd1bWVudHMuCi0KLSAgICAiIiIKLQotICAgIG1hcmsgPSBhdHRyLmliKHZhbGlkYXRv
cj1hdHRyLnZhbGlkYXRvcnMuaW5zdGFuY2Vfb2YoTWFyaykpCi0KLSAgICBuYW1lID0gYWxpYXMo
J21hcmsubmFtZScpCi0gICAgYXJncyA9IGFsaWFzKCdtYXJrLmFyZ3MnKQotICAgIGt3YXJncyA9
IGFsaWFzKCdtYXJrLmt3YXJncycpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbWFya25hbWUo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm5hbWUgICMgZm9yIGJhY2t3YXJkLWNvbXBhdCAo
Mi40LjEgaGFkIHRoaXMgYXR0cikKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAg
ICAgICByZXR1cm4gc2VsZi5tYXJrID09IG90aGVyLm1hcmsgaWYgaXNpbnN0YW5jZShvdGhlciwg
TWFya0RlY29yYXRvcikgZWxzZSBGYWxzZQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAg
ICAgICByZXR1cm4gIjxNYXJrRGVjb3JhdG9yICVyPiIgJSAoc2VsZi5tYXJrLCkKLQotICAgIGRl
ZiB3aXRoX2FyZ3Moc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIiIHJldHVybiBh
IE1hcmtEZWNvcmF0b3Igd2l0aCBleHRyYSBhcmd1bWVudHMgYWRkZWQKLQotICAgICAgICB1bmxp
a2UgY2FsbCB0aGlzIGNhbiBiZSB1c2VkIGV2ZW4gaWYgdGhlIHNvbGUgYXJndW1lbnQgaXMgYSBj
YWxsYWJsZS9jbGFzcwotCi0gICAgICAgIDpyZXR1cm46IE1hcmtEZWNvcmF0b3IKLSAgICAgICAg
IiIiCi0KLSAgICAgICAgbWFyayA9IE1hcmsoc2VsZi5uYW1lLCBhcmdzLCBrd2FyZ3MpCi0gICAg
ICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLm1hcmsuY29tYmluZWRfd2l0aChtYXJrKSkK
LQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAiIiIg
aWYgcGFzc2VkIGEgc2luZ2xlIGNhbGxhYmxlIGFyZ3VtZW50OiBkZWNvcmF0ZSBpdCB3aXRoIG1h
cmsgaW5mby4KLSAgICAgICAgICAgIG90aGVyd2lzZSBhZGQgKmFyZ3MvKiprd2FyZ3MgaW4tcGxh
Y2UgdG8gbWFyayBpbmZvcm1hdGlvbi4gIiIiCi0gICAgICAgIGlmIGFyZ3MgYW5kIG5vdCBrd2Fy
Z3M6Ci0gICAgICAgICAgICBmdW5jID0gYXJnc1swXQotICAgICAgICAgICAgaXNfY2xhc3MgPSBp
bnNwZWN0LmlzY2xhc3MoZnVuYykKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxIGFuZCAo
aXN0ZXN0ZnVuYyhmdW5jKSBvciBpc19jbGFzcyk6Ci0gICAgICAgICAgICAgICAgaWYgaXNfY2xh
c3M6Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlX21hcmsoZnVuYywgc2VsZi5tYXJrKQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlX2xlZ2FjeV9tYXJr
aW5mbyhmdW5jLCBzZWxmLm1hcmspCi0gICAgICAgICAgICAgICAgICAgIHN0b3JlX21hcmsoZnVu
Yywgc2VsZi5tYXJrKQotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jCi0gICAgICAgIHJldHVy
biBzZWxmLndpdGhfYXJncygqYXJncywgKiprd2FyZ3MpCi0KLQotZGVmIGdldF91bnBhY2tlZF9t
YXJrcyhvYmopOgotICAgICIiIgotICAgIG9idGFpbiB0aGUgdW5wYWNrZWQgbWFya3MgdGhhdCBh
cmUgc3RvcmVkIG9uIGEgb2JqZWN0Ci0gICAgIiIiCi0gICAgbWFya19saXN0ID0gZ2V0YXR0cihv
YmosICdweXRlc3RtYXJrJywgW10pCi0KLSAgICBpZiBub3QgaXNpbnN0YW5jZShtYXJrX2xpc3Qs
IGxpc3QpOgotICAgICAgICBtYXJrX2xpc3QgPSBbbWFya19saXN0XQotICAgIHJldHVybiBbCi0g
ICAgICAgIGdldGF0dHIobWFyaywgJ21hcmsnLCBtYXJrKSAgIyB1bnBhY2sgTWFya0RlY29yYXRv
cgotICAgICAgICBmb3IgbWFyayBpbiBtYXJrX2xpc3QKLSAgICBdCi0KLQotZGVmIHN0b3JlX21h
cmsob2JqLCBtYXJrKToKLSAgICAiIiJzdG9yZSBhIE1hcmsgb24gYSBvYmplY3QKLSAgICB0aGlz
IGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBNYXJrIGRlY2xhcmF0aW9ucy9kZWNvcmF0b3JzIGNv
cnJlY3RseQotICAgICIiIgotICAgIGFzc2VydCBpc2luc3RhbmNlKG1hcmssIE1hcmspLCBtYXJr
Ci0gICAgIyBhbHdheXMgcmVhc3NpZ24gbmFtZSB0byBhdm9pZCB1cGRhdGluZyBweXRlc3RtYXJr
Ci0gICAgIyBpbiBhIHJlZmVyZW5jZSB0aGF0IHdhcyBvbmx5IGJvcnJvd2VkCi0gICAgb2JqLnB5
dGVzdG1hcmsgPSBnZXRfdW5wYWNrZWRfbWFya3Mob2JqKSArIFttYXJrXQotCi0KLWRlZiBzdG9y
ZV9sZWdhY3lfbWFya2luZm8oZnVuYywgbWFyayk6Ci0gICAgIiIiY3JlYXRlIHRoZSBsZWdhY3kg
TWFya0luZm8gb2JqZWN0cyBhbmQgcHV0IHRoZW0gb250byB0aGUgZnVuY3Rpb24KLSAgICAiIiIK
LSAgICBpZiBub3QgaXNpbnN0YW5jZShtYXJrLCBNYXJrKToKLSAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKCJnb3Qge21hcmshcn0gaW5zdGVhZCBvZiBhIE1hcmsiLmZvcm1hdChtYXJrPW1hcmspKQot
ICAgIGhvbGRlciA9IGdldGF0dHIoZnVuYywgbWFyay5uYW1lLCBOb25lKQotICAgIGlmIGhvbGRl
ciBpcyBOb25lOgotICAgICAgICBob2xkZXIgPSBNYXJrSW5mbyhtYXJrKQotICAgICAgICBzZXRh
dHRyKGZ1bmMsIG1hcmsubmFtZSwgaG9sZGVyKQotICAgIGVsc2U6Ci0gICAgICAgIGhvbGRlci5h
ZGRfbWFyayhtYXJrKQotCi0KLWNsYXNzIE1hcmtJbmZvKG9iamVjdCk6Ci0gICAgIiIiIE1hcmtp
bmcgb2JqZWN0IGNyZWF0ZWQgYnkgOmNsYXNzOmBNYXJrRGVjb3JhdG9yYCBpbnN0YW5jZXMuICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hcmspOgotICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShtYXJrLCBNYXJrKSwgcmVwcihtYXJrKQotICAgICAgICBzZWxmLmNvbWJpbmVkID0gbWFy
awotICAgICAgICBzZWxmLl9tYXJrcyA9IFttYXJrXQotCi0gICAgbmFtZSA9IGFsaWFzKCdjb21i
aW5lZC5uYW1lJykKLSAgICBhcmdzID0gYWxpYXMoJ2NvbWJpbmVkLmFyZ3MnKQotICAgIGt3YXJn
cyA9IGFsaWFzKCdjb21iaW5lZC5rd2FyZ3MnKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgot
ICAgICAgICByZXR1cm4gIjxNYXJrSW5mbyB7MCFyfT4iLmZvcm1hdChzZWxmLmNvbWJpbmVkKQot
Ci0gICAgZGVmIGFkZF9tYXJrKHNlbGYsIG1hcmspOgotICAgICAgICAiIiIgYWRkIGEgTWFya0lu
Zm8gd2l0aCB0aGUgZ2l2ZW4gYXJncyBhbmQga3dhcmdzLiAiIiIKLSAgICAgICAgc2VsZi5fbWFy
a3MuYXBwZW5kKG1hcmspCi0gICAgICAgIHNlbGYuY29tYmluZWQgPSBzZWxmLmNvbWJpbmVkLmNv
bWJpbmVkX3dpdGgobWFyaykKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIiIi
IHlpZWxkIE1hcmtJbmZvIG9iamVjdHMgZWFjaCByZWxhdGluZyB0byBhIG1hcmtpbmctY2FsbC4g
IiIiCi0gICAgICAgIHJldHVybiBtYXAoTWFya0luZm8sIHNlbGYuX21hcmtzKQotCi0KLU1BUktf
R0VOID0gTWFya0dlbmVyYXRvcigpCi0KLQotZGVmIF9tYXJrZWQoZnVuYywgbWFyayk6Ci0gICAg
IiIiIFJldHVybnMgVHJ1ZSBpZiA6ZnVuYzogaXMgYWxyZWFkeSBtYXJrZWQgd2l0aCA6bWFyazos
IEZhbHNlIG90aGVyd2lzZS4KLSAgICBUaGlzIGNhbiBoYXBwZW4gaWYgbWFya2VyIGlzIGFwcGxp
ZWQgdG8gY2xhc3MgYW5kIHRoZSB0ZXN0IGZpbGUgaXMKLSAgICBpbnZva2VkIG1vcmUgdGhhbiBv
bmNlLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgZnVuY19tYXJrID0gZ2V0YXR0cihmdW5j
LCBtYXJrLm5hbWUpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICByZXR1cm4gbWFyay5hcmdzID09IGZ1bmNfbWFyay5hcmdzIGFuZCBtYXJrLmt3
YXJncyA9PSBmdW5jX21hcmsua3dhcmdzCi0KLQotZGVmIHRyYW5zZmVyX21hcmtlcnMoZnVuY29i
aiwgY2xzLCBtb2QpOgotICAgICIiIgotICAgIHRoaXMgZnVuY3Rpb24gdHJhbnNmZXJzIGNsYXNz
IGxldmVsIG1hcmtlcnMgYW5kIG1vZHVsZSBsZXZlbCBtYXJrZXJzCi0gICAgaW50byBmdW5jdGlv
biBsZXZlbCBtYXJraW5mbyBvYmplY3RzCi0KLSAgICB0aGlzIGlzIHRoZSBtYWluIHJlYXNvbiB3
aHkgbWFya3MgYXJlIHNvIGJyb2tlbgotICAgIHRoZSByZXNvbHV0aW9uIHdpbGwgaW52b2x2ZSBw
aGFzaW5nIG91dCBmdW5jdGlvbiBsZXZlbCBNYXJrSW5mbyBvYmplY3RzCi0KLSAgICAiIiIKLSAg
ICBmb3Igb2JqIGluIChjbHMsIG1vZCk6Ci0gICAgICAgIGZvciBtYXJrIGluIGdldF91bnBhY2tl
ZF9tYXJrcyhvYmopOgotICAgICAgICAgICAgaWYgbm90IF9tYXJrZWQoZnVuY29iaiwgbWFyayk6
Ci0gICAgICAgICAgICAgICAgc3RvcmVfbGVnYWN5X21hcmtpbmZvKGZ1bmNvYmosIG1hcmspCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L21vbmtleXBhdGNoLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9tb25rZXlwYXRjaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDBhZTU2MGYwNzAyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tb25r
ZXlwYXRjaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0iIiIgbW9ua2V5cGF0
Y2hpbmcgYW5kIG1vY2tpbmcgZnVuY3Rpb25hbGl0eS4gICIiIgotZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQg
b3MKLWltcG9ydCBzeXMKLWltcG9ydCByZQotaW1wb3J0IHNpeAotZnJvbSBfcHl0ZXN0LmZpeHR1
cmVzIGltcG9ydCBmaXh0dXJlCi0KLVJFX0lNUE9SVF9FUlJPUl9OQU1FID0gcmUuY29tcGlsZSgi
Xk5vIG1vZHVsZSBuYW1lZCAoLiopJCIpCi0KLQotQGZpeHR1cmUKLWRlZiBtb25rZXlwYXRjaCgp
OgotICAgICIiIlRoZSByZXR1cm5lZCBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBwcm92aWRlcyB0
aGVzZQotICAgIGhlbHBlciBtZXRob2RzIHRvIG1vZGlmeSBvYmplY3RzLCBkaWN0aW9uYXJpZXMg
b3Igb3MuZW52aXJvbjo6Ci0KLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvYmosIG5hbWUs
IHZhbHVlLCByYWlzaW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIob2JqLCBu
YW1lLCByYWlzaW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0obWFwcGluZywg
bmFtZSwgdmFsdWUpCi0gICAgICAgIG1vbmtleXBhdGNoLmRlbGl0ZW0ob2JqLCBuYW1lLCByYWlz
aW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGVudihuYW1lLCB2YWx1ZSwgcHJlcGVu
ZD1GYWxzZSkKLSAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KG5hbWUsIHZhbHVlLCByYWlzaW5n
PVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZChwYXRoKQotICAgICAg
ICBtb25rZXlwYXRjaC5jaGRpcihwYXRoKQotCi0gICAgQWxsIG1vZGlmaWNhdGlvbnMgd2lsbCBi
ZSB1bmRvbmUgYWZ0ZXIgdGhlIHJlcXVlc3RpbmcKLSAgICB0ZXN0IGZ1bmN0aW9uIG9yIGZpeHR1
cmUgaGFzIGZpbmlzaGVkLiBUaGUgYGByYWlzaW5nYGAKLSAgICBwYXJhbWV0ZXIgZGV0ZXJtaW5l
cyBpZiBhIEtleUVycm9yIG9yIEF0dHJpYnV0ZUVycm9yCi0gICAgd2lsbCBiZSByYWlzZWQgaWYg
dGhlIHNldC9kZWxldGlvbiBvcGVyYXRpb24gaGFzIG5vIHRhcmdldC4KLSAgICAiIiIKLSAgICBt
cGF0Y2ggPSBNb25rZXlQYXRjaCgpCi0gICAgeWllbGQgbXBhdGNoCi0gICAgbXBhdGNoLnVuZG8o
KQotCi0KLWRlZiByZXNvbHZlKG5hbWUpOgotICAgICMgc2ltcGxpZmllZCBmcm9tIHpvcGUuZG90
dGVkbmFtZQotICAgIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpCi0KLSAgICB1c2VkID0gcGFydHMu
cG9wKDApCi0gICAgZm91bmQgPSBfX2ltcG9ydF9fKHVzZWQpCi0gICAgZm9yIHBhcnQgaW4gcGFy
dHM6Ci0gICAgICAgIHVzZWQgKz0gJy4nICsgcGFydAotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBmb3VuZCA9IGdldGF0dHIoZm91bmQsIHBhcnQpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVF
cnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICMgd2UgdXNlIGV4cGxpY2l0IHVuLW5lc3Rpbmcgb2YgdGhlIGhhbmRsaW5n
IGJsb2NrIGluIG9yZGVyCi0gICAgICAgICMgdG8gYXZvaWQgbmVzdGVkIGV4Y2VwdGlvbnMgb24g
cHl0aG9uIDMKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX19pbXBvcnRfXyh1c2VkKQotICAg
ICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAjIHN0ciBpcyB1c2Vk
IGZvciBweTIgdnMgcHkzCi0gICAgICAgICAgICBleHBlY3RlZCA9IHN0cihleCkuc3BsaXQoKVst
MV0KLSAgICAgICAgICAgIGlmIGV4cGVjdGVkID09IHVzZWQ6Ci0gICAgICAgICAgICAgICAgcmFp
c2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3Io
Ci0gICAgICAgICAgICAgICAgICAgICdpbXBvcnQgZXJyb3IgaW4gJXM6ICVzJyAlICh1c2VkLCBl
eCkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgIGZvdW5kID0gYW5ub3RhdGVkX2dldGF0dHIo
Zm91bmQsIHBhcnQsIHVzZWQpCi0gICAgcmV0dXJuIGZvdW5kCi0KLQotZGVmIGFubm90YXRlZF9n
ZXRhdHRyKG9iaiwgbmFtZSwgYW5uKToKLSAgICB0cnk6Ci0gICAgICAgIG9iaiA9IGdldGF0dHIo
b2JqLCBuYW1lKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgQXR0
cmlidXRlRXJyb3IoCi0gICAgICAgICAgICAnJXIgb2JqZWN0IGF0ICVzIGhhcyBubyBhdHRyaWJ1
dGUgJXInICUgKAotICAgICAgICAgICAgICAgIHR5cGUob2JqKS5fX25hbWVfXywgYW5uLCBuYW1l
Ci0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICByZXR1cm4gb2JqCi0KLQotZGVmIGRlcml2
ZV9pbXBvcnRwYXRoKGltcG9ydF9wYXRoLCByYWlzaW5nKToKLSAgICBpZiBub3QgaXNpbnN0YW5j
ZShpbXBvcnRfcGF0aCwgc2l4LnN0cmluZ190eXBlcykgb3IgIi4iIG5vdCBpbiBpbXBvcnRfcGF0
aDoKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtdXN0IGJlIGFic29sdXRlIGltcG9ydCBwYXRo
IHN0cmluZywgbm90ICVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoaW1wb3J0X3BhdGgs
KSkKLSAgICBtb2R1bGUsIGF0dHIgPSBpbXBvcnRfcGF0aC5yc3BsaXQoJy4nLCAxKQotICAgIHRh
cmdldCA9IHJlc29sdmUobW9kdWxlKQotICAgIGlmIHJhaXNpbmc6Ci0gICAgICAgIGFubm90YXRl
ZF9nZXRhdHRyKHRhcmdldCwgYXR0ciwgYW5uPW1vZHVsZSkKLSAgICByZXR1cm4gYXR0ciwgdGFy
Z2V0Ci0KLQotY2xhc3MgTm90c2V0OgotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAg
cmV0dXJuICI8bm90c2V0PiIKLQotCi1ub3RzZXQgPSBOb3RzZXQoKQotCi0KLWNsYXNzIE1vbmtl
eVBhdGNoOgotICAgICIiIiBPYmplY3QgcmV0dXJuZWQgYnkgdGhlIGBgbW9ua2V5cGF0Y2hgYCBm
aXh0dXJlIGtlZXBpbmcgYSByZWNvcmQgb2Ygc2V0YXR0ci9pdGVtL2Vudi9zeXNwYXRoIGNoYW5n
ZXMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX3Nl
dGF0dHIgPSBbXQotICAgICAgICBzZWxmLl9zZXRpdGVtID0gW10KLSAgICAgICAgc2VsZi5fY3dk
ID0gTm9uZQotICAgICAgICBzZWxmLl9zYXZlc3lzcGF0aCA9IE5vbmUKLQotICAgIGRlZiBzZXRh
dHRyKHNlbGYsIHRhcmdldCwgbmFtZSwgdmFsdWU9bm90c2V0LCByYWlzaW5nPVRydWUpOgotICAg
ICAgICAiIiIgU2V0IGF0dHJpYnV0ZSB2YWx1ZSBvbiB0YXJnZXQsIG1lbW9yaXppbmcgdGhlIG9s
ZCB2YWx1ZS4KLSAgICAgICAgQnkgZGVmYXVsdCByYWlzZSBBdHRyaWJ1dGVFcnJvciBpZiB0aGUg
YXR0cmlidXRlIGRpZCBub3QgZXhpc3QuCi0KLSAgICAgICAgRm9yIGNvbnZlbmllbmNlIHlvdSBj
YW4gc3BlY2lmeSBhIHN0cmluZyBhcyBgYHRhcmdldGBgIHdoaWNoCi0gICAgICAgIHdpbGwgYmUg
aW50ZXJwcmV0ZWQgYXMgYSBkb3R0ZWQgaW1wb3J0IHBhdGgsIHdpdGggdGhlIGxhc3QgcGFydAot
ICAgICAgICBiZWluZyB0aGUgYXR0cmlidXRlIG5hbWUuICBFeGFtcGxlOgotICAgICAgICBgYG1v
bmtleXBhdGNoLnNldGF0dHIoIm9zLmdldGN3ZCIsIGxhbWJkYSB4OiAiLyIpYGAKLSAgICAgICAg
d291bGQgc2V0IHRoZSBgYGdldGN3ZGBgIGZ1bmN0aW9uIG9mIHRoZSBgYG9zYGAgbW9kdWxlLgot
Ci0gICAgICAgIFRoZSBgYHJhaXNpbmdgYCB2YWx1ZSBkZXRlcm1pbmVzIGlmIHRoZSBzZXRhdHRy
IHNob3VsZCBmYWlsCi0gICAgICAgIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGFscmVhZHkgcHJl
c2VudCAoZGVmYXVsdHMgdG8gVHJ1ZQotICAgICAgICB3aGljaCBtZWFucyBpdCB3aWxsIHJhaXNl
KS4KLSAgICAgICAgIiIiCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAg
ICBpbXBvcnQgaW5zcGVjdAotCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdHNldDoKLSAgICAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ1c2Ugc2V0YXR0cih0YXJnZXQsIG5hbWUsIHZhbHVl
KSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRhdHRyKHRhcmdldCwg
dmFsdWUpIHdpdGggdGFyZ2V0IGJlaW5nIGEgZG90dGVkICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImltcG9ydCBzdHJpbmciKQotICAgICAgICAgICAgdmFsdWUgPSBuYW1lCi0g
ICAgICAgICAgICBuYW1lLCB0YXJnZXQgPSBkZXJpdmVfaW1wb3J0cGF0aCh0YXJnZXQsIHJhaXNp
bmcpCi0KLSAgICAgICAgb2xkdmFsID0gZ2V0YXR0cih0YXJnZXQsIG5hbWUsIG5vdHNldCkKLSAg
ICAgICAgaWYgcmFpc2luZyBhbmQgb2xkdmFsIGlzIG5vdHNldDoKLSAgICAgICAgICAgIHJhaXNl
IEF0dHJpYnV0ZUVycm9yKCIlciBoYXMgbm8gYXR0cmlidXRlICVyIiAlICh0YXJnZXQsIG5hbWUp
KQotCi0gICAgICAgICMgYXZvaWQgY2xhc3MgZGVzY3JpcHRvcnMgbGlrZSBzdGF0aWNtZXRob2Qv
Y2xhc3NtZXRob2QKLSAgICAgICAgaWYgaW5zcGVjdC5pc2NsYXNzKHRhcmdldCk6Ci0gICAgICAg
ICAgICBvbGR2YWwgPSB0YXJnZXQuX19kaWN0X18uZ2V0KG5hbWUsIG5vdHNldCkKLSAgICAgICAg
c2VsZi5fc2V0YXR0ci5hcHBlbmQoKHRhcmdldCwgbmFtZSwgb2xkdmFsKSkKLSAgICAgICAgc2V0
YXR0cih0YXJnZXQsIG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIGRlbGF0dHIoc2VsZiwgdGFyZ2V0
LCBuYW1lPW5vdHNldCwgcmFpc2luZz1UcnVlKToKLSAgICAgICAgIiIiIERlbGV0ZSBhdHRyaWJ1
dGUgYGBuYW1lYGAgZnJvbSBgYHRhcmdldGBgLCBieSBkZWZhdWx0IHJhaXNlCi0gICAgICAgIEF0
dHJpYnV0ZUVycm9yIGl0IHRoZSBhdHRyaWJ1dGUgZGlkIG5vdCBwcmV2aW91c2x5IGV4aXN0Lgot
Ci0gICAgICAgIElmIG5vIGBgbmFtZWBgIGlzIHNwZWNpZmllZCBhbmQgYGB0YXJnZXRgYCBpcyBh
IHN0cmluZwotICAgICAgICBpdCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgZG90dGVkIGltcG9y
dCBwYXRoIHdpdGggdGhlCi0gICAgICAgIGxhc3QgcGFydCBiZWluZyB0aGUgYXR0cmlidXRlIG5h
bWUuCi0KLSAgICAgICAgSWYgYGByYWlzaW5nYGAgaXMgc2V0IHRvIEZhbHNlLCBubyBleGNlcHRp
b24gd2lsbCBiZSByYWlzZWQgaWYgdGhlCi0gICAgICAgIGF0dHJpYnV0ZSBpcyBtaXNzaW5nLgot
ICAgICAgICAiIiIKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIGlm
IG5hbWUgaXMgbm90c2V0OgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBz
aXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInVzZSBk
ZWxhdHRyKHRhcmdldCwgbmFtZSkgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVsYXR0cih0YXJnZXQpIHdpdGggdGFyZ2V0IGJlaW5nIGEgZG90dGVkICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzdHJpbmciKQotICAgICAgICAgICAgbmFt
ZSwgdGFyZ2V0ID0gZGVyaXZlX2ltcG9ydHBhdGgodGFyZ2V0LCByYWlzaW5nKQotCi0gICAgICAg
IGlmIG5vdCBoYXNhdHRyKHRhcmdldCwgbmFtZSk6Ci0gICAgICAgICAgICBpZiByYWlzaW5nOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLl9zZXRhdHRyLmFwcGVuZCgodGFyZ2V0LCBuYW1lLCBnZXRhdHRy
KHRhcmdldCwgbmFtZSwgbm90c2V0KSkpCi0gICAgICAgICAgICBkZWxhdHRyKHRhcmdldCwgbmFt
ZSkKLQotICAgIGRlZiBzZXRpdGVtKHNlbGYsIGRpYywgbmFtZSwgdmFsdWUpOgotICAgICAgICAi
IiIgU2V0IGRpY3Rpb25hcnkgZW50cnkgYGBuYW1lYGAgdG8gdmFsdWUuICIiIgotICAgICAgICBz
ZWxmLl9zZXRpdGVtLmFwcGVuZCgoZGljLCBuYW1lLCBkaWMuZ2V0KG5hbWUsIG5vdHNldCkpKQot
ICAgICAgICBkaWNbbmFtZV0gPSB2YWx1ZQotCi0gICAgZGVmIGRlbGl0ZW0oc2VsZiwgZGljLCBu
YW1lLCByYWlzaW5nPVRydWUpOgotICAgICAgICAiIiIgRGVsZXRlIGBgbmFtZWBgIGZyb20gZGlj
dC4gUmFpc2UgS2V5RXJyb3IgaWYgaXQgZG9lc24ndCBleGlzdC4KLQotICAgICAgICBJZiBgYHJh
aXNpbmdgYCBpcyBzZXQgdG8gRmFsc2UsIG5vIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0
aGUKLSAgICAgICAga2V5IGlzIG1pc3NpbmcuCi0gICAgICAgICIiIgotICAgICAgICBpZiBuYW1l
IG5vdCBpbiBkaWM6Ci0gICAgICAgICAgICBpZiByYWlzaW5nOgotICAgICAgICAgICAgICAgIHJh
aXNlIEtleUVycm9yKG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zZXRp
dGVtLmFwcGVuZCgoZGljLCBuYW1lLCBkaWMuZ2V0KG5hbWUsIG5vdHNldCkpKQotICAgICAgICAg
ICAgZGVsIGRpY1tuYW1lXQotCi0gICAgZGVmIHNldGVudihzZWxmLCBuYW1lLCB2YWx1ZSwgcHJl
cGVuZD1Ob25lKToKLSAgICAgICAgIiIiIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYG5hbWVg
YCB0byBgYHZhbHVlYGAuICBJZiBgYHByZXBlbmRgYAotICAgICAgICBpcyBhIGNoYXJhY3Rlciwg
cmVhZCB0aGUgY3VycmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZQotICAgICAgICBhbmQg
cHJlcGVuZCB0aGUgYGB2YWx1ZWBgIGFkam9pbmVkIHdpdGggdGhlIGBgcHJlcGVuZGBgIGNoYXJh
Y3Rlci4iIiIKLSAgICAgICAgdmFsdWUgPSBzdHIodmFsdWUpCi0gICAgICAgIGlmIHByZXBlbmQg
YW5kIG5hbWUgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKyBwcmVw
ZW5kICsgb3MuZW52aXJvbltuYW1lXQotICAgICAgICBzZWxmLnNldGl0ZW0ob3MuZW52aXJvbiwg
bmFtZSwgdmFsdWUpCi0KLSAgICBkZWYgZGVsZW52KHNlbGYsIG5hbWUsIHJhaXNpbmc9VHJ1ZSk6
Ci0gICAgICAgICIiIiBEZWxldGUgYGBuYW1lYGAgZnJvbSB0aGUgZW52aXJvbm1lbnQuIFJhaXNl
IEtleUVycm9yIGl0IGRvZXMgbm90Ci0gICAgICAgIGV4aXN0LgotCi0gICAgICAgIElmIGBgcmFp
c2luZ2BgIGlzIHNldCB0byBGYWxzZSwgbm8gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGlmIHRo
ZQotICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBtaXNzaW5nLgotICAgICAgICAiIiIK
LSAgICAgICAgc2VsZi5kZWxpdGVtKG9zLmVudmlyb24sIG5hbWUsIHJhaXNpbmc9cmFpc2luZykK
LQotICAgIGRlZiBzeXNwYXRoX3ByZXBlbmQoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIiBQcmVw
ZW5kIGBgcGF0aGBgIHRvIGBgc3lzLnBhdGhgYCBsaXN0IG9mIGltcG9ydCBsb2NhdGlvbnMuICIi
IgotICAgICAgICBpZiBzZWxmLl9zYXZlc3lzcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgc2Vs
Zi5fc2F2ZXN5c3BhdGggPSBzeXMucGF0aFs6XQotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwg
c3RyKHBhdGgpKQotCi0gICAgZGVmIGNoZGlyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiIgQ2hh
bmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4K
LSAgICAgICAgUGF0aCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBweS5wYXRoLmxvY2FsIG9iamVjdC4K
LSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2N3ZCBpcyBOb25lOgotICAgICAgICAgICAg
c2VsZi5fY3dkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgaWYgaGFzYXR0cihwYXRoLCAiY2hkaXIi
KToKLSAgICAgICAgICAgIHBhdGguY2hkaXIoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
b3MuY2hkaXIocGF0aCkKLQotICAgIGRlZiB1bmRvKHNlbGYpOgotICAgICAgICAiIiIgVW5kbyBw
cmV2aW91cyBjaGFuZ2VzLiAgVGhpcyBjYWxsIGNvbnN1bWVzIHRoZQotICAgICAgICB1bmRvIHN0
YWNrLiBDYWxsaW5nIGl0IGEgc2Vjb25kIHRpbWUgaGFzIG5vIGVmZmVjdCB1bmxlc3MKLSAgICAg
ICAgeW91IGRvIG1vcmUgbW9ua2V5cGF0Y2hpbmcgYWZ0ZXIgdGhlIHVuZG8gY2FsbC4KLQotICAg
ICAgICBUaGVyZSBpcyBnZW5lcmFsbHkgbm8gbmVlZCB0byBjYWxsIGB1bmRvKClgLCBzaW5jZSBp
dCBpcwotICAgICAgICBjYWxsZWQgYXV0b21hdGljYWxseSBkdXJpbmcgdGVhci1kb3duLgotCi0g
ICAgICAgIE5vdGUgdGhhdCB0aGUgc2FtZSBgbW9ua2V5cGF0Y2hgIGZpeHR1cmUgaXMgdXNlZCBh
Y3Jvc3MgYQotICAgICAgICBzaW5nbGUgdGVzdCBmdW5jdGlvbiBpbnZvY2F0aW9uLiBJZiBgbW9u
a2V5cGF0Y2hgIGlzIHVzZWQgYm90aCBieQotICAgICAgICB0aGUgdGVzdCBmdW5jdGlvbiBpdHNl
bGYgYW5kIG9uZSBvZiB0aGUgdGVzdCBmaXh0dXJlcywKLSAgICAgICAgY2FsbGluZyBgdW5kbygp
YCB3aWxsIHVuZG8gYWxsIG9mIHRoZSBjaGFuZ2VzIG1hZGUgaW4KLSAgICAgICAgYm90aCBmdW5j
dGlvbnMuCi0gICAgICAgICIiIgotICAgICAgICBmb3Igb2JqLCBuYW1lLCB2YWx1ZSBpbiByZXZl
cnNlZChzZWxmLl9zZXRhdHRyKToKLSAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBub3RzZXQ6
Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBkZWxhdHRyKG9iaiwgbmFtZSkKLSAgICAgICAgc2VsZi5f
c2V0YXR0cls6XSA9IFtdCi0gICAgICAgIGZvciBkaWN0aW9uYXJ5LCBuYW1lLCB2YWx1ZSBpbiBy
ZXZlcnNlZChzZWxmLl9zZXRpdGVtKToKLSAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdHNldDoK
LSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBkaWN0aW9uYXJ5
W25hbWVdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAg
ICAgICBwYXNzICAjIHdhcyBhbHJlYWR5IGRlbGV0ZWQsIHNvIHdlIGhhdmUgdGhlIGRlc2lyZWQg
c3RhdGUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGljdGlvbmFyeVtuYW1l
XSA9IHZhbHVlCi0gICAgICAgIHNlbGYuX3NldGl0ZW1bOl0gPSBbXQotICAgICAgICBpZiBzZWxm
Ll9zYXZlc3lzcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN5cy5wYXRoWzpdID0gc2Vs
Zi5fc2F2ZXN5c3BhdGgKLSAgICAgICAgICAgIHNlbGYuX3NhdmVzeXNwYXRoID0gTm9uZQotCi0g
ICAgICAgIGlmIHNlbGYuX2N3ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG9zLmNoZGlyKHNl
bGYuX2N3ZCkKLSAgICAgICAgICAgIHNlbGYuX2N3ZCA9IE5vbmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3Qvbm9kZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vZGVzLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDNhZjJjZTY3YzguLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vZGVzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotU0VQID0gIi8iCi0KLQotZGVmIF9zcGxpdG5vZGUobm9kZWlkKToKLSAgICAiIiJT
cGxpdCBhIG5vZGVpZCBpbnRvIGNvbnN0aXR1ZW50ICdwYXJ0cycuCi0KLSAgICBOb2RlIElEcyBh
cmUgc3RyaW5ncywgYW5kIGNhbiBiZSB0aGluZ3MgbGlrZToKLSAgICAgICAgJycKLSAgICAgICAg
J3Rlc3RpbmcvY29kZScKLSAgICAgICAgJ3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2luZm8ucHknCi0g
ICAgICAgICd0ZXN0aW5nL2NvZGUvdGVzdF9leGNpbmZvLnB5OjpUZXN0Rm9ybWF0dGVkRXhjaW5m
bzo6KCknCi0KLSAgICBSZXR1cm4gdmFsdWVzIGFyZSBsaXN0cyBlLmcuCi0gICAgICAgIFtdCi0g
ICAgICAgIFsndGVzdGluZycsICdjb2RlJ10KLSAgICAgICAgWyd0ZXN0aW5nJywgJ2NvZGUnLCAn
dGVzdF9leGNpbmZvLnB5J10KLSAgICAgICAgWyd0ZXN0aW5nJywgJ2NvZGUnLCAndGVzdF9leGNp
bmZvLnB5JywgJ1Rlc3RGb3JtYXR0ZWRFeGNpbmZvJywgJygpJ10KLSAgICAiIiIKLSAgICBpZiBu
b2RlaWQgPT0gJyc6Ci0gICAgICAgICMgSWYgdGhlcmUgaXMgbm8gcm9vdCBub2RlIGF0IGFsbCwg
cmV0dXJuIGFuIGVtcHR5IGxpc3Qgc28gdGhlIGNhbGxlcidzIGxvZ2ljIGNhbiByZW1haW4gc2Fu
ZQotICAgICAgICByZXR1cm4gW10KLSAgICBwYXJ0cyA9IG5vZGVpZC5zcGxpdChTRVApCi0gICAg
IyBSZXBsYWNlIHNpbmdsZSBsYXN0IGVsZW1lbnQgJ3Rlc3RfZm9vLnB5OjpCYXI6OigpJyB3aXRo
IG11bHRpcGxlIGVsZW1lbnRzICd0ZXN0X2Zvby5weScsICdCYXInLCAnKCknCi0gICAgcGFydHNb
LTE6XSA9IHBhcnRzWy0xXS5zcGxpdCgiOjoiKQotICAgIHJldHVybiBwYXJ0cwotCi0KLWRlZiBp
c2NoaWxkbm9kZShiYXNlaWQsIG5vZGVpZCk6Ci0gICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG5v
ZGVpZCBpcyBhIGNoaWxkIG5vZGUgb2YgdGhlIGJhc2VpZC4KLQotICAgIEUuZy4gJ2Zvby9iYXI6
OkJhejo6KCknIGlzIGEgY2hpbGQgb2YgJ2ZvbycsICdmb28vYmFyJyBhbmQgJ2Zvby9iYXI6OkJh
eicsIGJ1dCBub3Qgb2YgJ2Zvby9ibG9ycCcKLSAgICAiIiIKLSAgICBiYXNlX3BhcnRzID0gX3Nw
bGl0bm9kZShiYXNlaWQpCi0gICAgbm9kZV9wYXJ0cyA9IF9zcGxpdG5vZGUobm9kZWlkKQotICAg
IGlmIGxlbihub2RlX3BhcnRzKSA8IGxlbihiYXNlX3BhcnRzKToKLSAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgcmV0dXJuIG5vZGVfcGFydHNbOmxlbihiYXNlX3BhcnRzKV0gPT0gYmFzZV9wYXJ0
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ub3NlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9ub3NlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODE1NDJlYWRm
MzcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vc2UucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0iIiIgcnVuIHRlc3Qgc3VpdGVzIHdyaXR0ZW4gZm9y
IG5vc2UuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlz
aW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgc3lzCi0KLWZyb20gX3B5dGVzdCBpbXBvcnQg
dW5pdHRlc3QsIHJ1bm5lciwgcHl0aG9uCi1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBob29r
aW1wbAotCi0KLWRlZiBnZXRfc2tpcF9leGNlcHRpb25zKCk6Ci0gICAgc2tpcF9jbGFzc2VzID0g
c2V0KCkKLSAgICBmb3IgbW9kdWxlX25hbWUgaW4gKCd1bml0dGVzdCcsICd1bml0dGVzdDInLCAn
bm9zZScpOgotICAgICAgICBtb2QgPSBzeXMubW9kdWxlcy5nZXQobW9kdWxlX25hbWUpCi0gICAg
ICAgIGlmIGhhc2F0dHIobW9kLCAnU2tpcFRlc3QnKToKLSAgICAgICAgICAgIHNraXBfY2xhc3Nl
cy5hZGQobW9kLlNraXBUZXN0KQotICAgIHJldHVybiB0dXBsZShza2lwX2NsYXNzZXMpCi0KLQot
ZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6Ci0gICAgaWYgY2FsbC5l
eGNpbmZvIGFuZCBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZShnZXRfc2tpcF9leGNlcHRpb25z
KCkpOgotICAgICAgICAjIGxldCdzIHN1YnN0aXR1dGUgdGhlIGV4Y2luZm8gd2l0aCBhIHB5dGVz
dC5za2lwIG9uZQotICAgICAgICBjYWxsMiA9IGNhbGwuX19jbGFzc19fKAotICAgICAgICAgICAg
bGFtYmRhOiBydW5uZXIuc2tpcChzdHIoY2FsbC5leGNpbmZvLnZhbHVlKSksIGNhbGwud2hlbikK
LSAgICAgICAgY2FsbC5leGNpbmZvID0gY2FsbDIuZXhjaW5mbwotCi0KLUBob29raW1wbCh0cnls
YXN0PVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6Ci0gICAgaWYgaXNfcG90
ZW50aWFsX25vc2V0ZXN0KGl0ZW0pOgotICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0ucGFyZW50
LCBweXRob24uR2VuZXJhdG9yKToKLSAgICAgICAgICAgIGdlbiA9IGl0ZW0ucGFyZW50Ci0gICAg
ICAgICAgICBpZiBub3QgaGFzYXR0cihnZW4sICdfbm9zZWdlbnNldHVwJyk6Ci0gICAgICAgICAg
ICAgICAgY2FsbF9vcHRpb25hbChnZW4ub2JqLCAnc2V0dXAnKQotICAgICAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoZ2VuLnBhcmVudCwgcHl0aG9uLkluc3RhbmNlKToKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbF9vcHRpb25hbChnZW4ucGFyZW50Lm9iaiwgJ3NldHVwJykKLSAgICAgICAgICAg
ICAgICBnZW4uX25vc2VnZW5zZXR1cCA9IFRydWUKLSAgICAgICAgaWYgbm90IGNhbGxfb3B0aW9u
YWwoaXRlbS5vYmosICdzZXR1cCcpOgotICAgICAgICAgICAgIyBjYWxsIG1vZHVsZSBsZXZlbCBz
ZXR1cCBpZiB0aGVyZSBpcyBubyBvYmplY3QgbGV2ZWwgb25lCi0gICAgICAgICAgICBjYWxsX29w
dGlvbmFsKGl0ZW0ucGFyZW50Lm9iaiwgJ3NldHVwJykKLSAgICAgICAgIyBYWFggdGhpcyBpbXBs
aWVzIHdlIG9ubHkgY2FsbCB0ZWFyZG93biB3aGVuIHNldHVwIHdvcmtlZAotICAgICAgICBpdGVt
LnNlc3Npb24uX3NldHVwc3RhdGUuYWRkZmluYWxpemVyKChsYW1iZGE6IHRlYXJkb3duX25vc2Uo
aXRlbSkpLCBpdGVtKQotCi0KLWRlZiB0ZWFyZG93bl9ub3NlKGl0ZW0pOgotICAgIGlmIGlzX3Bv
dGVudGlhbF9ub3NldGVzdChpdGVtKToKLSAgICAgICAgaWYgbm90IGNhbGxfb3B0aW9uYWwoaXRl
bS5vYmosICd0ZWFyZG93bicpOgotICAgICAgICAgICAgY2FsbF9vcHRpb25hbChpdGVtLnBhcmVu
dC5vYmosICd0ZWFyZG93bicpCi0gICAgICAgICMgaWYgaGFzYXR0cihpdGVtLnBhcmVudCwgJ19u
b3NlZ2Vuc2V0dXAnKToKLSAgICAgICAgIyAgICAjY2FsbF9vcHRpb25hbChpdGVtLl9ub3NlZ2Vu
c2V0dXAsICd0ZWFyZG93bicpCi0gICAgICAgICMgICAgZGVsIGl0ZW0ucGFyZW50Ll9ub3NlZ2Vu
c2V0dXAKLQotCi1kZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVjdG9yKToKLSAg
ICBpZiBpc2luc3RhbmNlKGNvbGxlY3RvciwgcHl0aG9uLkdlbmVyYXRvcik6Ci0gICAgICAgIGNh
bGxfb3B0aW9uYWwoY29sbGVjdG9yLm9iaiwgJ3NldHVwJykKLQotCi1kZWYgaXNfcG90ZW50aWFs
X25vc2V0ZXN0KGl0ZW0pOgotICAgICMgZXh0cmEgY2hlY2sgbmVlZGVkIHNpbmNlIHdlIGRvIG5v
dCBkbyBub3NlIHN0eWxlIHNldHVwL3RlYXJkb3duCi0gICAgIyBvbiBkaXJlY3QgdW5pdHRlc3Qg
c3R5bGUgY2xhc3NlcwotICAgIHJldHVybiBpc2luc3RhbmNlKGl0ZW0sIHB5dGhvbi5GdW5jdGlv
bikgYW5kIFwKLSAgICAgICAgbm90IGlzaW5zdGFuY2UoaXRlbSwgdW5pdHRlc3QuVGVzdENhc2VG
dW5jdGlvbikKLQotCi1kZWYgY2FsbF9vcHRpb25hbChvYmosIG5hbWUpOgotICAgIG1ldGhvZCA9
IGdldGF0dHIob2JqLCBuYW1lLCBOb25lKQotICAgIGlzZml4dHVyZSA9IGhhc2F0dHIobWV0aG9k
LCAiX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiIpCi0gICAgaWYgbWV0aG9kIGlzIG5vdCBOb25lIGFu
ZCBub3QgaXNmaXh0dXJlIGFuZCBjYWxsYWJsZShtZXRob2QpOgotICAgICAgICAjIElmIHRoZXJl
J3MgYW55IHByb2JsZW1zIGFsbG93IHRoZSBleGNlcHRpb24gdG8gcmFpc2UgcmF0aGVyIHRoYW4K
LSAgICAgICAgIyBzaWxlbnRseSBpZ25vcmluZyB0aGVtCi0gICAgICAgIG1ldGhvZCgpCi0gICAg
ICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L291dGNvbWVz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9vdXRjb21lcy5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2YwYzE4ZmE2YzFiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9vdXRjb21lcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0iIiIK
LWV4Y2VwdGlvbiBjbGFzc2VzIGFuZCBjb25zdGFudHMgaGFuZGxpbmcgdGVzdCBvdXRjb21lcwot
YXMgd2VsbCBhcyBmdW5jdGlvbnMgY3JlYXRpbmcgdGhlbQotIiIiCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQg
cHkKLWltcG9ydCBzeXMKLQotCi1jbGFzcyBPdXRjb21lRXhjZXB0aW9uKEJhc2VFeGNlcHRpb24p
OgotICAgICIiIiBPdXRjb21lRXhjZXB0aW9uIGFuZCBpdHMgc3ViY2xhc3MgaW5zdGFuY2VzIGlu
ZGljYXRlIGFuZAotICAgICAgICBjb250YWluIGluZm8gYWJvdXQgdGVzdCBhbmQgY29sbGVjdGlv
biBvdXRjb21lcy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnPU5vbmUsIHB5
dHJhY2U9VHJ1ZSk6Ci0gICAgICAgIEJhc2VFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQot
ICAgICAgICBzZWxmLm1zZyA9IG1zZwotICAgICAgICBzZWxmLnB5dHJhY2UgPSBweXRyYWNlCi0K
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubXNnOgotICAgICAgICAg
ICAgdmFsID0gc2VsZi5tc2cKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBieXRlcyk6
Ci0gICAgICAgICAgICAgICAgdmFsID0gcHkuX2J1aWx0aW4uX3RvdGV4dCh2YWwsIGVycm9ycz0n
cmVwbGFjZScpCi0gICAgICAgICAgICByZXR1cm4gdmFsCi0gICAgICAgIHJldHVybiAiPCVzIGlu
c3RhbmNlPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sKQotICAgIF9fc3RyX18gPSBfX3Jl
cHJfXwotCi0KLVRFU1RfT1VUQ09NRSA9IChPdXRjb21lRXhjZXB0aW9uLCBFeGNlcHRpb24pCi0K
LQotY2xhc3MgU2tpcHBlZChPdXRjb21lRXhjZXB0aW9uKToKLSAgICAjIFhYWCBoYWNraXNoOiBv
biAzayB3ZSBmYWtlIHRvIGxpdmUgaW4gdGhlIGJ1aWx0aW5zCi0gICAgIyBpbiBvcmRlciB0byBo
YXZlIFNraXBwZWQgZXhjZXB0aW9uIHByaW50aW5nIHNob3J0ZXIvbmljZXIKLSAgICBfX21vZHVs
ZV9fID0gJ2J1aWx0aW5zJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZz1Ob25lLCBweXRy
YWNlPVRydWUsIGFsbG93X21vZHVsZV9sZXZlbD1GYWxzZSk6Ci0gICAgICAgIE91dGNvbWVFeGNl
cHRpb24uX19pbml0X18oc2VsZiwgbXNnPW1zZywgcHl0cmFjZT1weXRyYWNlKQotICAgICAgICBz
ZWxmLmFsbG93X21vZHVsZV9sZXZlbCA9IGFsbG93X21vZHVsZV9sZXZlbAotCi0KLWNsYXNzIEZh
aWxlZChPdXRjb21lRXhjZXB0aW9uKToKLSAgICAiIiIgcmFpc2VkIGZyb20gYW4gZXhwbGljaXQg
Y2FsbCB0byBweXRlc3QuZmFpbCgpICIiIgotICAgIF9fbW9kdWxlX18gPSAnYnVpbHRpbnMnCi0K
LQotY2xhc3MgRXhpdChLZXlib2FyZEludGVycnVwdCk6Ci0gICAgIiIiIHJhaXNlZCBmb3IgaW1t
ZWRpYXRlIHByb2dyYW0gZXhpdHMgKG5vIHRyYWNlYmFja3Mvc3VtbWFyaWVzKSIiIgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtc2c9InVua25vd24gcmVhc29uIik6Ci0gICAgICAgIHNlbGYubXNn
ID0gbXNnCi0gICAgICAgIEtleWJvYXJkSW50ZXJydXB0Ll9faW5pdF9fKHNlbGYsIG1zZykKLQot
IyBleHBvc2VkIGhlbHBlciBtZXRob2RzCi0KLQotZGVmIGV4aXQobXNnKToKLSAgICAiIiIgZXhp
dCB0ZXN0aW5nIHByb2Nlc3MgYXMgaWYgS2V5Ym9hcmRJbnRlcnJ1cHQgd2FzIHRyaWdnZXJlZC4g
IiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgcmFpc2UgRXhpdChtc2cpCi0K
LQotZXhpdC5FeGNlcHRpb24gPSBFeGl0Ci0KLQotZGVmIHNraXAobXNnPSIiLCAqKmt3YXJncyk6
Ci0gICAgIiIiIHNraXAgYW4gZXhlY3V0aW5nIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS4g
IE5vdGU6IGl0J3MgdXN1YWxseQotICAgIGJldHRlciB0byB1c2UgdGhlIHB5dGVzdC5tYXJrLnNr
aXBpZiBtYXJrZXIgdG8gZGVjbGFyZSBhIHRlc3QgdG8gYmUKLSAgICBza2lwcGVkIHVuZGVyIGNl
cnRhaW4gY29uZGl0aW9ucyBsaWtlIG1pc21hdGNoaW5nIHBsYXRmb3JtcyBvcgotICAgIGRlcGVu
ZGVuY2llcy4gIFNlZSB0aGUgcHl0ZXN0X3NraXBwaW5nIHBsdWdpbiBmb3IgZGV0YWlscy4KLQot
ICAgIDprd2FyZyBib29sIGFsbG93X21vZHVsZV9sZXZlbDogYWxsb3dzIHRoaXMgZnVuY3Rpb24g
dG8gYmUgY2FsbGVkIGF0Ci0gICAgICAgIG1vZHVsZSBsZXZlbCwgc2tpcHBpbmcgdGhlIHJlc3Qg
b2YgdGhlIG1vZHVsZS4gRGVmYXVsdCB0byBGYWxzZS4KLSAgICAiIiIKLSAgICBfX3RyYWNlYmFj
a2hpZGVfXyA9IFRydWUKLSAgICBhbGxvd19tb2R1bGVfbGV2ZWwgPSBrd2FyZ3MucG9wKCdhbGxv
d19tb2R1bGVfbGV2ZWwnLCBGYWxzZSkKLSAgICBpZiBrd2FyZ3M6Ci0gICAgICAgIGtleXMgPSBb
ayBmb3IgayBpbiBrd2FyZ3Mua2V5cygpXQotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3VuZXhw
ZWN0ZWQga2V5d29yZCBhcmd1bWVudHM6IHswfScuZm9ybWF0KGtleXMpKQotICAgIHJhaXNlIFNr
aXBwZWQobXNnPW1zZywgYWxsb3dfbW9kdWxlX2xldmVsPWFsbG93X21vZHVsZV9sZXZlbCkKLQot
Ci1za2lwLkV4Y2VwdGlvbiA9IFNraXBwZWQKLQotCi1kZWYgZmFpbChtc2c9IiIsIHB5dHJhY2U9
VHJ1ZSk6Ci0gICAgIiIiIGV4cGxpY2l0bHkgZmFpbCBhbiBjdXJyZW50bHktZXhlY3V0aW5nIHRl
c3Qgd2l0aCB0aGUgZ2l2ZW4gTWVzc2FnZS4KLQotICAgIDphcmcgcHl0cmFjZTogaWYgZmFsc2Ug
dGhlIG1zZyByZXByZXNlbnRzIHRoZSBmdWxsIGZhaWx1cmUgaW5mb3JtYXRpb24KLSAgICAgICAg
ICAgICAgICAgIGFuZCBubyBweXRob24gdHJhY2ViYWNrIHdpbGwgYmUgcmVwb3J0ZWQuCi0gICAg
IiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgcmFpc2UgRmFpbGVkKG1zZz1t
c2csIHB5dHJhY2U9cHl0cmFjZSkKLQotCi1mYWlsLkV4Y2VwdGlvbiA9IEZhaWxlZAotCi0KLWNs
YXNzIFhGYWlsZWQoZmFpbC5FeGNlcHRpb24pOgotICAgICIiIiByYWlzZWQgZnJvbSBhbiBleHBs
aWNpdCBjYWxsIHRvIHB5dGVzdC54ZmFpbCgpICIiIgotCi0KLWRlZiB4ZmFpbChyZWFzb249IiIp
OgotICAgICIiIiB4ZmFpbCBhbiBleGVjdXRpbmcgdGVzdCBvciBzZXR1cCBmdW5jdGlvbnMgd2l0
aCB0aGUgZ2l2ZW4gcmVhc29uLiIiIgotICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAg
IHJhaXNlIFhGYWlsZWQocmVhc29uKQotCi0KLXhmYWlsLkV4Y2VwdGlvbiA9IFhGYWlsZWQKLQot
Ci1kZWYgaW1wb3J0b3Jza2lwKG1vZG5hbWUsIG1pbnZlcnNpb249Tm9uZSk6Ci0gICAgIiIiIHJl
dHVybiBpbXBvcnRlZCBtb2R1bGUgaWYgaXQgaGFzIGF0IGxlYXN0ICJtaW52ZXJzaW9uIiBhcyBp
dHMKLSAgICBfX3ZlcnNpb25fXyBhdHRyaWJ1dGUuICBJZiBubyBtaW52ZXJzaW9uIGlzIHNwZWNp
ZmllZCB0aGUgYSBza2lwCi0gICAgaXMgb25seSB0cmlnZ2VyZWQgaWYgdGhlIG1vZHVsZSBjYW4g
bm90IGJlIGltcG9ydGVkLgotICAgICIiIgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIF9fdHJh
Y2ViYWNraGlkZV9fID0gVHJ1ZQotICAgIGNvbXBpbGUobW9kbmFtZSwgJycsICdldmFsJykgICMg
dG8gY2F0Y2ggc3ludGF4ZXJyb3JzCi0gICAgc2hvdWxkX3NraXAgPSBGYWxzZQotCi0gICAgd2l0
aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAjIG1ha2Ugc3VyZSB0byBpZ25v
cmUgSW1wb3J0V2FybmluZ3MgdGhhdCBtaWdodCBoYXBwZW4gYmVjYXVzZQotICAgICAgICAjIG9m
IGV4aXN0aW5nIGRpcmVjdG9yaWVzIHdpdGggdGhlIHNhbWUgbmFtZSB3ZSdyZSB0cnlpbmcgdG8K
LSAgICAgICAgIyBpbXBvcnQgYnV0IHdpdGhvdXQgYSBfX2luaXRfXy5weSBmaWxlCi0gICAgICAg
IHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgX19pbXBvcnRfXyhtb2RuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAg
ICAgICAgICAjIERvIG5vdCByYWlzZSBjaGFpbmVkIGV4Y2VwdGlvbiBoZXJlKCMxNDg1KQotICAg
ICAgICAgICAgc2hvdWxkX3NraXAgPSBUcnVlCi0gICAgaWYgc2hvdWxkX3NraXA6Ci0gICAgICAg
IHJhaXNlIFNraXBwZWQoImNvdWxkIG5vdCBpbXBvcnQgJXIiICUgKG1vZG5hbWUsKSwgYWxsb3df
bW9kdWxlX2xldmVsPVRydWUpCi0gICAgbW9kID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KLSAgICBp
ZiBtaW52ZXJzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBtb2QKLSAgICB2ZXJhdHRyID0g
Z2V0YXR0cihtb2QsICdfX3ZlcnNpb25fXycsIE5vbmUpCi0gICAgaWYgbWludmVyc2lvbiBpcyBu
b3QgTm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnJvbSBwa2dfcmVzb3VyY2VzIGlt
cG9ydCBwYXJzZV92ZXJzaW9uIGFzIHB2Ci0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAg
ICAgICAgICAgIHJhaXNlIFNraXBwZWQoIndlIGhhdmUgYSByZXF1aXJlZCB2ZXJzaW9uIGZvciAl
ciBidXQgY2FuIG5vdCBpbXBvcnQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAicGtnX3Jl
c291cmNlcyB0byBwYXJzZSB2ZXJzaW9uIHN0cmluZ3MuIiAlIChtb2RuYW1lLCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKQotICAgICAgICBpZiB2
ZXJhdHRyIGlzIE5vbmUgb3IgcHYodmVyYXR0cikgPCBwdihtaW52ZXJzaW9uKToKLSAgICAgICAg
ICAgIHJhaXNlIFNraXBwZWQoIm1vZHVsZSAlciBoYXMgX192ZXJzaW9uX18gJXIsIHJlcXVpcmVk
IGlzOiAlciIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsIHZlcmF0dHIs
IG1pbnZlcnNpb24pLCBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSkKLSAgICByZXR1cm4gbW9kCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Bhc3RlYmluLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9wYXN0ZWJpbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU4OGIw
MjFiMTI0Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9wYXN0ZWJpbi5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0iIiIgc3VibWl0IGZhaWx1cmUgb3Ig
dGVzdCBzZXNzaW9uIGluZm9ybWF0aW9uIHRvIGEgcGFzdGViaW4gc2VydmljZS4gIiIiCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCi0KLWltcG9ydCBweXRlc3QKLWltcG9ydCBzaXgKLWltcG9ydCBzeXMKLWltcG9ydCB0ZW1w
ZmlsZQotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJz
ZXIuZ2V0Z3JvdXAoInRlcm1pbmFsIHJlcG9ydGluZyIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbign
LS1wYXN0ZWJpbicsIG1ldGF2YXI9Im1vZGUiLAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSdzdG9yZScsIGRlc3Q9InBhc3RlYmluIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAg
ICAgICAgY2hvaWNlcz1bJ2ZhaWxlZCcsICdhbGwnXSwKLSAgICAgICAgICAgICAgICAgICAgIGhl
bHA9InNlbmQgZmFpbGVkfGFsbCBpbmZvIHRvIGJwYXN0ZS5uZXQgcGFzdGViaW4gc2VydmljZS4i
KQotCi0KLUBweXRlc3QuaG9va2ltcGwodHJ5bGFzdD1UcnVlKQotZGVmIHB5dGVzdF9jb25maWd1
cmUoY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0aW9uLnBhc3RlYmluID09ICJhbGwiOgotICAg
ICAgICB0ciA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigndGVybWluYWxyZXBvcnRl
cicpCi0gICAgICAgICMgaWYgbm8gdGVybWluYWwgcmVwb3J0ZXIgcGx1Z2luIGlzIHByZXNlbnQs
IG5vdGhpbmcgd2UgY2FuIGRvIGhlcmU7Ci0gICAgICAgICMgdGhpcyBjYW4gaGFwcGVuIHdoZW4g
dGhpcyBmdW5jdGlvbiBleGVjdXRlcyBpbiBhIHNsYXZlIG5vZGUKLSAgICAgICAgIyB3aGVuIHVz
aW5nIHB5dGVzdC14ZGlzdCwgZm9yIGV4YW1wbGUKLSAgICAgICAgaWYgdHIgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICAjIHBhc3RlYmluIGZpbGUgd2lsbCBiZSB1dGYtOCBlbmNvZGVkIGJpbmFy
eSBmaWxlCi0gICAgICAgICAgICBjb25maWcuX3Bhc3RlYmluZmlsZSA9IHRlbXBmaWxlLlRlbXBv
cmFyeUZpbGUoJ3crYicpCi0gICAgICAgICAgICBvbGR3cml0ZSA9IHRyLl90dy53cml0ZQotCi0g
ICAgICAgICAgICBkZWYgdGVlX3dyaXRlKHMsICoqa3dhcmdzKToKLSAgICAgICAgICAgICAgICBv
bGR3cml0ZShzLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHNp
eC50ZXh0X3R5cGUpOgotICAgICAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoJ3V0Zi04JykK
LSAgICAgICAgICAgICAgICBjb25maWcuX3Bhc3RlYmluZmlsZS53cml0ZShzKQotCi0gICAgICAg
ICAgICB0ci5fdHcud3JpdGUgPSB0ZWVfd3JpdGUKLQotCi1kZWYgcHl0ZXN0X3VuY29uZmlndXJl
KGNvbmZpZyk6Ci0gICAgaWYgaGFzYXR0cihjb25maWcsICdfcGFzdGViaW5maWxlJyk6Ci0gICAg
ICAgICMgZ2V0IHRlcm1pbmFsIGNvbnRlbnRzIGFuZCBkZWxldGUgZmlsZQotICAgICAgICBjb25m
aWcuX3Bhc3RlYmluZmlsZS5zZWVrKDApCi0gICAgICAgIHNlc3Npb25sb2cgPSBjb25maWcuX3Bh
c3RlYmluZmlsZS5yZWFkKCkKLSAgICAgICAgY29uZmlnLl9wYXN0ZWJpbmZpbGUuY2xvc2UoKQot
ICAgICAgICBkZWwgY29uZmlnLl9wYXN0ZWJpbmZpbGUKLSAgICAgICAgIyB1bmRvIG91ciBwYXRj
aGluZyBpbiB0aGUgdGVybWluYWwgcmVwb3J0ZXIKLSAgICAgICAgdHIgPSBjb25maWcucGx1Z2lu
bWFuYWdlci5nZXRwbHVnaW4oJ3Rlcm1pbmFscmVwb3J0ZXInKQotICAgICAgICBkZWwgdHIuX3R3
Ll9fZGljdF9fWyd3cml0ZSddCi0gICAgICAgICMgd3JpdGUgc3VtbWFyeQotICAgICAgICB0ci53
cml0ZV9zZXAoIj0iLCAiU2VuZGluZyBpbmZvcm1hdGlvbiB0byBQYXN0ZSBTZXJ2aWNlIikKLSAg
ICAgICAgcGFzdGViaW51cmwgPSBjcmVhdGVfbmV3X3Bhc3RlKHNlc3Npb25sb2cpCi0gICAgICAg
IHRyLndyaXRlX2xpbmUoInBhc3RlYmluIHNlc3Npb24tbG9nOiAlc1xuIiAlIHBhc3RlYmludXJs
KQotCi0KLWRlZiBjcmVhdGVfbmV3X3Bhc3RlKGNvbnRlbnRzKToKLSAgICAiIiIKLSAgICBDcmVh
dGVzIGEgbmV3IHBhc3RlIHVzaW5nIGJwYXN0ZS5uZXQgc2VydmljZS4KLQotICAgIDpjb250ZW50
czogcGFzdGUgY29udGVudHMgYXMgdXRmLTggZW5jb2RlZCBieXRlcwotICAgIDpyZXR1cm5zOiB1
cmwgdG8gdGhlIHBhc3RlZCBjb250ZW50cwotICAgICIiIgotICAgIGltcG9ydCByZQotICAgIGlm
IHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCk6Ci0gICAgICAgIGZyb20gdXJsbGliIGltcG9ydCB1
cmxvcGVuLCB1cmxlbmNvZGUKLSAgICBlbHNlOgotICAgICAgICBmcm9tIHVybGxpYi5yZXF1ZXN0
IGltcG9ydCB1cmxvcGVuCi0gICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxlbmNv
ZGUKLQotICAgIHBhcmFtcyA9IHsKLSAgICAgICAgJ2NvZGUnOiBjb250ZW50cywKLSAgICAgICAg
J2xleGVyJzogJ3B5dGhvbjMnIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMyBlbHNlICdweXRo
b24nLAotICAgICAgICAnZXhwaXJ5JzogJzF3ZWVrJywKLSAgICB9Ci0gICAgdXJsID0gJ2h0dHBz
Oi8vYnBhc3RlLm5ldCcKLSAgICByZXNwb25zZSA9IHVybG9wZW4odXJsLCBkYXRhPXVybGVuY29k
ZShwYXJhbXMpLmVuY29kZSgnYXNjaWknKSkucmVhZCgpCi0gICAgbSA9IHJlLnNlYXJjaChyJ2hy
ZWY9Ii9yYXcvKFx3KykiJywgcmVzcG9uc2UuZGVjb2RlKCd1dGYtOCcpKQotICAgIGlmIG06Ci0g
ICAgICAgIHJldHVybiAnJXMvc2hvdy8lcycgJSAodXJsLCBtLmdyb3VwKDEpKQotICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiAnYmFkIHJlc3BvbnNlOiAnICsgcmVzcG9uc2UKLQotCi1kZWYgcHl0
ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVybWluYWxyZXBvcnRlcik6Ci0gICAgaW1wb3J0IF9weXRl
c3QuY29uZmlnCi0gICAgaWYgdGVybWluYWxyZXBvcnRlci5jb25maWcub3B0aW9uLnBhc3RlYmlu
ICE9ICJmYWlsZWQiOgotICAgICAgICByZXR1cm4KLSAgICB0ciA9IHRlcm1pbmFscmVwb3J0ZXIK
LSAgICBpZiAnZmFpbGVkJyBpbiB0ci5zdGF0czoKLSAgICAgICAgdGVybWluYWxyZXBvcnRlci53
cml0ZV9zZXAoIj0iLCAiU2VuZGluZyBpbmZvcm1hdGlvbiB0byBQYXN0ZSBTZXJ2aWNlIikKLSAg
ICAgICAgZm9yIHJlcCBpbiB0ZXJtaW5hbHJlcG9ydGVyLnN0YXRzLmdldCgnZmFpbGVkJyk6Ci0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbXNnID0gcmVwLmxvbmdyZXByLnJlcHJ0
cmFjZWJhY2sucmVwcmVudHJpZXNbLTFdLnJlcHJmaWxlbG9jCi0gICAgICAgICAgICBleGNlcHQg
QXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gdHIuX2dldGZhaWx1cmVoZWFk
bGluZShyZXApCi0gICAgICAgICAgICB0dyA9IF9weXRlc3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5h
bF93cml0ZXIodGVybWluYWxyZXBvcnRlci5jb25maWcsIHN0cmluZ2lvPVRydWUpCi0gICAgICAg
ICAgICByZXAudG90ZXJtaW5hbCh0dykKLSAgICAgICAgICAgIHMgPSB0dy5zdHJpbmdpby5nZXR2
YWx1ZSgpCi0gICAgICAgICAgICBhc3NlcnQgbGVuKHMpCi0gICAgICAgICAgICBwYXN0ZWJpbnVy
bCA9IGNyZWF0ZV9uZXdfcGFzdGUocykKLSAgICAgICAgICAgIHRyLndyaXRlX2xpbmUoIiVzIC0t
PiAlcyIgJSAobXNnLCBwYXN0ZWJpbnVybCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3B5dGVzdGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRlc3Rlci5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJkZDU5OTRmMWJiLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9weXRlc3Rlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDExODcg
KzAsMCBAQAotIiIiIChkaXNhYmxlZCBieSBkZWZhdWx0KSBzdXBwb3J0IGZvciB0ZXN0aW5nIHB5
dGVzdCBhbmQgcHl0ZXN0IHBsdWdpbnMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgY29kZWNzCi1p
bXBvcnQgZ2MKLWltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmUKLWltcG9ydCBz
dWJwcm9jZXNzCi1pbXBvcnQgc2l4Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHRy
YWNlYmFjawotZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCi0KLWZyb20gd2Vha3JlZiBpbXBv
cnQgV2Vha0tleURpY3Rpb25hcnkKLQotZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IE11bHRp
Q2FwdHVyZSwgU3lzQ2FwdHVyZQotZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBTb3VyY2UKLWlt
cG9ydCBweQotaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24s
IEVYSVRfT0sKLWZyb20gX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQgQXNzZXJ0aW9u
UmV3cml0aW5nSG9vawotCi0KLVBZVEVTVF9GVUxMUEFUSCA9IG9zLnBhdGguYWJzcGF0aChweXRl
c3QuX19maWxlX18ucnN0cmlwKCJvYyIpKS5yZXBsYWNlKCIkcHkuY2xhc3MiLCAiLnB5IikKLQot
Ci1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgICMgZ3JvdXAgPSBwYXJzZXIuZ2V0
Z3JvdXAoInB5dGVzdGVyIiwgInB5dGVzdGVyIChzZWxmLXRlc3RzKSBvcHRpb25zIikKLSAgICBw
YXJzZXIuYWRkb3B0aW9uKCctLWxzb2YnLAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJz
dG9yZV90cnVlIiwgZGVzdD0ibHNvZiIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICBoZWxwPSgicnVuIEZEIGNoZWNrcyBpZiBsc29mIGlzIGF2YWlsYWJsZSIpKQotCi0gICAg
cGFyc2VyLmFkZG9wdGlvbignLS1ydW5weXRlc3QnLCBkZWZhdWx0PSJpbnByb2Nlc3MiLCBkZXN0
PSJydW5weXRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz0oImlucHJvY2VzcyIs
ICJzdWJwcm9jZXNzIiwgKSwKLSAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJydW4gcHl0ZXN0
IHN1YiBydW5zIGluIHRlc3RzIHVzaW5nIGFuICdpbnByb2Nlc3MnICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJvciAnc3VicHJvY2VzcycgKHB5dGhvbiAtbSBtYWluKSBtZXRob2QiKSkK
LQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGlmIGNvbmZpZy5nZXR2YWx1
ZSgibHNvZiIpOgotICAgICAgICBjaGVja2VyID0gTHNvZkZkTGVha0NoZWNrZXIoKQotICAgICAg
ICBpZiBjaGVja2VyLm1hdGNoaW5nX3BsYXRmb3JtKCk6Ci0gICAgICAgICAgICBjb25maWcucGx1
Z2lubWFuYWdlci5yZWdpc3RlcihjaGVja2VyKQotCi0KLWNsYXNzIExzb2ZGZExlYWtDaGVja2Vy
KG9iamVjdCk6Ci0gICAgZGVmIGdldF9vcGVuX2ZpbGVzKHNlbGYpOgotICAgICAgICBvdXQgPSBz
ZWxmLl9leGVjX2xzb2YoKQotICAgICAgICBvcGVuX2ZpbGVzID0gc2VsZi5fcGFyc2VfbHNvZl9v
dXRwdXQob3V0KQotICAgICAgICByZXR1cm4gb3Blbl9maWxlcwotCi0gICAgZGVmIF9leGVjX2xz
b2Yoc2VsZik6Ci0gICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCi0gICAgICAgIHJldHVybiBweS5w
cm9jZXNzLmNtZGV4ZWMoImxzb2YgLUZmbjAgLXAgJWQiICUgcGlkKQotCi0gICAgZGVmIF9wYXJz
ZV9sc29mX291dHB1dChzZWxmLCBvdXQpOgotICAgICAgICBkZWYgaXNvcGVuKGxpbmUpOgotICAg
ICAgICAgICAgcmV0dXJuIGxpbmUuc3RhcnRzd2l0aCgnZicpIGFuZCAoImRlbGV0ZWQiIG5vdCBp
biBsaW5lIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J21lbScgbm90IGluIGxpbmUgYW5kICJ0eHQiIG5vdCBpbiBsaW5lIGFuZCAnY3dkJyBub3QgaW4g
bGluZSkKLQotICAgICAgICBvcGVuX2ZpbGVzID0gW10KLQotICAgICAgICBmb3IgbGluZSBpbiBv
dXQuc3BsaXQoIlxuIik6Ci0gICAgICAgICAgICBpZiBpc29wZW4obGluZSk6Ci0gICAgICAgICAg
ICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgnXDAnKQotICAgICAgICAgICAgICAgIGZkID0gZmll
bGRzWzBdWzE6XQotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmllbGRzWzFdWzE6XQotICAg
ICAgICAgICAgICAgIGlmIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJy8nKToKLSAgICAgICAgICAgICAg
ICAgICAgb3Blbl9maWxlcy5hcHBlbmQoKGZkLCBmaWxlbmFtZSkpCi0KLSAgICAgICAgcmV0dXJu
IG9wZW5fZmlsZXMKLQotICAgIGRlZiBtYXRjaGluZ19wbGF0Zm9ybShzZWxmKToKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgcHkucHJvY2Vzcy5jbWRleGVjKCJsc29mIC12IikKLSAgICAgICAg
ZXhjZXB0IChweS5wcm9jZXNzLmNtZGV4ZWMuRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0g
ICAgICAgICAgICAjIGNtZGV4ZWMgbWF5IHJhaXNlIFVuaWNvZGVEZWNvZGVFcnJvciBvbiBXaW5k
b3dzIHN5c3RlbXMKLSAgICAgICAgICAgICMgd2l0aCBsb2NhbGUgb3RoZXIgdGhhbiBlbmdsaXNo
OgotICAgICAgICAgICAgIyBodHRwczovL2JpdGJ1Y2tldC5vcmcvcHl0ZXN0LWRldi9weS9pc3N1
ZXMvNjYKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmV0dXJuIFRydWUKLQotICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwg
dHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woc2VsZiwgaXRl
bSk6Ci0gICAgICAgIGxpbmVzMSA9IHNlbGYuZ2V0X29wZW5fZmlsZXMoKQotICAgICAgICB5aWVs
ZAotICAgICAgICBpZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6Ci0gICAgICAg
ICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgbGluZXMyID0gc2VsZi5nZXRfb3Blbl9maWxlcygp
Ci0KLSAgICAgICAgbmV3X2ZkcyA9IHNldChbdFswXSBmb3IgdCBpbiBsaW5lczJdKSAtIHNldChb
dFswXSBmb3IgdCBpbiBsaW5lczFdKQotICAgICAgICBsZWFrZWRfZmlsZXMgPSBbdCBmb3IgdCBp
biBsaW5lczIgaWYgdFswXSBpbiBuZXdfZmRzXQotICAgICAgICBpZiBsZWFrZWRfZmlsZXM6Ci0g
ICAgICAgICAgICBlcnJvciA9IFtdCi0gICAgICAgICAgICBlcnJvci5hcHBlbmQoIioqKioqICVz
IEZEIGxlYWthZ2UgZGV0ZWN0ZWQiICUgbGVuKGxlYWtlZF9maWxlcykpCi0gICAgICAgICAgICBl
cnJvci5leHRlbmQoW3N0cihmKSBmb3IgZiBpbiBsZWFrZWRfZmlsZXNdKQotICAgICAgICAgICAg
ZXJyb3IuYXBwZW5kKCIqKiogQmVmb3JlOiIpCi0gICAgICAgICAgICBlcnJvci5leHRlbmQoW3N0
cihmKSBmb3IgZiBpbiBsaW5lczFdKQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKiogQWZ0
ZXI6IikKLSAgICAgICAgICAgIGVycm9yLmV4dGVuZChbc3RyKGYpIGZvciBmIGluIGxpbmVzMl0p
Ci0gICAgICAgICAgICBlcnJvci5hcHBlbmQoZXJyb3JbMF0pCi0gICAgICAgICAgICBlcnJvci5h
cHBlbmQoIioqKiBmdW5jdGlvbiAlczolczogJXMgIiAlIGl0ZW0ubG9jYXRpb24pCi0gICAgICAg
ICAgICBlcnJvci5hcHBlbmQoIlNlZSBpc3N1ZSAjMjM2NiIpCi0gICAgICAgICAgICBpdGVtLndh
cm4oJycsICJcbiIuam9pbihlcnJvcikpCi0KLQotIyBYWFggY29waWVkIGZyb20gZXhlY25ldCdz
IGNvbmZ0ZXN0LnB5IC0gbmVlZHMgdG8gYmUgbWVyZ2VkCi13aW5weW1hcCA9IHsKLSAgICAncHl0
aG9uMi43JzogcidDOlxQeXRob24yN1xweXRob24uZXhlJywKLSAgICAncHl0aG9uMy40JzogcidD
OlxQeXRob24zNFxweXRob24uZXhlJywKLSAgICAncHl0aG9uMy41JzogcidDOlxQeXRob24zNVxw
eXRob24uZXhlJywKLSAgICAncHl0aG9uMy42JzogcidDOlxQeXRob24zNlxweXRob24uZXhlJywK
LX0KLQotCi1kZWYgZ2V0ZXhlY3V0YWJsZShuYW1lLCBjYWNoZT17fSk6Ci0gICAgdHJ5OgotICAg
ICAgICByZXR1cm4gY2FjaGVbbmFtZV0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIGV4
ZWN1dGFibGUgPSBweS5wYXRoLmxvY2FsLnN5c2ZpbmQobmFtZSkKLSAgICAgICAgaWYgZXhlY3V0
YWJsZToKLSAgICAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgICAgICAgICBwb3BlbiA9
IHN1YnByb2Nlc3MuUG9wZW4oW3N0cihleGVjdXRhYmxlKSwgIi0tdmVyc2lvbiJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLCBz
dGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgb3V0LCBlcnIgPSBwb3Blbi5jb21t
dW5pY2F0ZSgpCi0gICAgICAgICAgICBpZiBuYW1lID09ICJqeXRob24iOgotICAgICAgICAgICAg
ICAgIGlmIG5vdCBlcnIgb3IgIjIuNSIgbm90IGluIGVycjoKLSAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0YWJsZSA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiAiMi41LjIiIGluIGVycjoKLSAg
ICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IE5vbmUgICMgaHR0cDovL2J1Z3Muanl0aG9u
Lm9yZy9pc3N1ZTE3OTAKLSAgICAgICAgICAgIGVsaWYgcG9wZW4ucmV0dXJuY29kZSAhPSAwOgot
ICAgICAgICAgICAgICAgICMgSGFuZGxlIHB5ZW52J3MgMTI3LgotICAgICAgICAgICAgICAgIGV4
ZWN1dGFibGUgPSBOb25lCi0gICAgICAgIGNhY2hlW25hbWVdID0gZXhlY3V0YWJsZQotICAgICAg
ICByZXR1cm4gZXhlY3V0YWJsZQotCi0KLUBweXRlc3QuZml4dHVyZShwYXJhbXM9WydweXRob24y
LjcnLCAncHl0aG9uMy40JywgJ3B5cHknLCAncHlweTMnXSkKLWRlZiBhbnlweXRob24ocmVxdWVz
dCk6Ci0gICAgbmFtZSA9IHJlcXVlc3QucGFyYW0KLSAgICBleGVjdXRhYmxlID0gZ2V0ZXhlY3V0
YWJsZShuYW1lKQotICAgIGlmIGV4ZWN1dGFibGUgaXMgTm9uZToKLSAgICAgICAgaWYgc3lzLnBs
YXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBleGVjdXRhYmxlID0gd2lucHltYXAuZ2V0
KG5hbWUsIE5vbmUpCi0gICAgICAgICAgICBpZiBleGVjdXRhYmxlOgotICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUgPSBweS5wYXRoLmxvY2FsKGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAg
aWYgZXhlY3V0YWJsZS5jaGVjaygpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0
YWJsZQotICAgICAgICBweXRlc3Quc2tpcCgibm8gc3VpdGFibGUgJXMgZm91bmQiICUgKG5hbWUs
KSkKLSAgICByZXR1cm4gZXhlY3V0YWJsZQotCi0jIHVzZWQgYXQgbGVhc3QgYnkgcHl0ZXN0LXhk
aXN0IHBsdWdpbgotCi0KLUBweXRlc3QuZml4dHVyZQotZGVmIF9weXRlc3QocmVxdWVzdCk6Ci0g
ICAgIiIiIFJldHVybiBhIGhlbHBlciB3aGljaCBvZmZlcnMgYSBnZXRob29rcmVjb3JkZXIoaG9v
aykKLSAgICBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIEhvb2tSZWNvcmRlciBpbnN0YW5jZSB3aGlj
aCBoZWxwcwotICAgIHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBjYWxsZWQgaG9va3MuCi0gICAg
IiIiCi0gICAgcmV0dXJuIFB5dGVzdEFyZyhyZXF1ZXN0KQotCi0KLWNsYXNzIFB5dGVzdEFyZzoK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYucmVxdWVzdCA9
IHJlcXVlc3QKLQotICAgIGRlZiBnZXRob29rcmVjb3JkZXIoc2VsZiwgaG9vayk6Ci0gICAgICAg
IGhvb2tyZWNvcmRlciA9IEhvb2tSZWNvcmRlcihob29rLl9wbSkKLSAgICAgICAgc2VsZi5yZXF1
ZXN0LmFkZGZpbmFsaXplcihob29rcmVjb3JkZXIuZmluaXNoX3JlY29yZGluZykKLSAgICAgICAg
cmV0dXJuIGhvb2tyZWNvcmRlcgotCi0KLWRlZiBnZXRfcHVibGljX25hbWVzKHZhbHVlcyk6Ci0g
ICAgIiIiT25seSByZXR1cm4gbmFtZXMgZnJvbSBpdGVyYXRvciB2YWx1ZXMgd2l0aG91dCBhIGxl
YWRpbmcgdW5kZXJzY29yZS4iIiIKLSAgICByZXR1cm4gW3ggZm9yIHggaW4gdmFsdWVzIGlmIHhb
MF0gIT0gIl8iXQotCi0KLWNsYXNzIFBhcnNlZENhbGw6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIGt3YXJncyk6Ci0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3YXJncykKLSAg
ICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAg
ICAgZCA9IHNlbGYuX19kaWN0X18uY29weSgpCi0gICAgICAgIGRlbCBkWydfbmFtZSddCi0gICAg
ICAgIHJldHVybiAiPFBhcnNlZENhbGwgJXIoKiolcik+IiAlIChzZWxmLl9uYW1lLCBkKQotCi0K
LWNsYXNzIEhvb2tSZWNvcmRlcjoKLSAgICAiIiJSZWNvcmQgYWxsIGhvb2tzIGNhbGxlZCBpbiBh
IHBsdWdpbiBtYW5hZ2VyLgotCi0gICAgVGhpcyB3cmFwcyBhbGwgdGhlIGhvb2sgY2FsbHMgaW4g
dGhlIHBsdWdpbiBtYW5hZ2VyLCByZWNvcmRpbmcKLSAgICBlYWNoIGNhbGwgYmVmb3JlIHByb3Bh
Z2F0aW5nIHRoZSBub3JtYWwgY2FsbHMuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwbHVnaW5tYW5hZ2VyKToKLSAgICAgICAgc2VsZi5fcGx1Z2lubWFuYWdlciA9IHBsdWdp
bm1hbmFnZXIKLSAgICAgICAgc2VsZi5jYWxscyA9IFtdCi0KLSAgICAgICAgZGVmIGJlZm9yZSho
b29rX25hbWUsIGhvb2tfaW1wbHMsIGt3YXJncyk6Ci0gICAgICAgICAgICBzZWxmLmNhbGxzLmFw
cGVuZChQYXJzZWRDYWxsKGhvb2tfbmFtZSwga3dhcmdzKSkKLQotICAgICAgICBkZWYgYWZ0ZXIo
b3V0Y29tZSwgaG9va19uYW1lLCBob29rX2ltcGxzLCBrd2FyZ3MpOgotICAgICAgICAgICAgcGFz
cwotCi0gICAgICAgIHNlbGYuX3VuZG9fd3JhcHBpbmcgPSBwbHVnaW5tYW5hZ2VyLmFkZF9ob29r
Y2FsbF9tb25pdG9yaW5nKGJlZm9yZSwgYWZ0ZXIpCi0KLSAgICBkZWYgZmluaXNoX3JlY29yZGlu
ZyhzZWxmKToKLSAgICAgICAgc2VsZi5fdW5kb193cmFwcGluZygpCi0KLSAgICBkZWYgZ2V0Y2Fs
bHMoc2VsZiwgbmFtZXMpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCBzdHIpOgotICAg
ICAgICAgICAgbmFtZXMgPSBuYW1lcy5zcGxpdCgpCi0gICAgICAgIHJldHVybiBbY2FsbCBmb3Ig
Y2FsbCBpbiBzZWxmLmNhbGxzIGlmIGNhbGwuX25hbWUgaW4gbmFtZXNdCi0KLSAgICBkZWYgYXNz
ZXJ0X2NvbnRhaW5zKHNlbGYsIGVudHJpZXMpOgotICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9
IFRydWUKLSAgICAgICAgaSA9IDAKLSAgICAgICAgZW50cmllcyA9IGxpc3QoZW50cmllcykKLSAg
ICAgICAgYmFja2xvY2FscyA9IHN5cy5fZ2V0ZnJhbWUoMSkuZl9sb2NhbHMKLSAgICAgICAgd2hp
bGUgZW50cmllczoKLSAgICAgICAgICAgIG5hbWUsIGNoZWNrID0gZW50cmllcy5wb3AoMCkKLSAg
ICAgICAgICAgIGZvciBpbmQsIGNhbGwgaW4gZW51bWVyYXRlKHNlbGYuY2FsbHNbaTpdKToKLSAg
ICAgICAgICAgICAgICBpZiBjYWxsLl9uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50KCJOQU1FTUFUQ0giLCBuYW1lLCBjYWxsKQotICAgICAgICAgICAgICAgICAgICBpZiBl
dmFsKGNoZWNrLCBiYWNrbG9jYWxzLCBjYWxsLl9fZGljdF9fKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50KCJDSEVDS0VSTUFUQ0giLCByZXByKGNoZWNrKSwgIi0+IiwgY2FsbCkKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJO
T0NIRUNLRVJNQVRDSCIsIHJlcHIoY2hlY2spLCAiLSIsIGNhbGwpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpICs9IGluZCArIDEKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBwcmludCgiTk9OQU1FTUFUQ0gi
LCBuYW1lLCAid2l0aCIsIGNhbGwpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHB5dGVzdC5mYWlsKCJjb3VsZCBub3QgZmluZCAlciBjaGVjayAlciIgJSAobmFtZSwgY2hlY2sp
KQotCi0gICAgZGVmIHBvcGNhbGwoc2VsZiwgbmFtZSk6Ci0gICAgICAgIF9fdHJhY2ViYWNraGlk
ZV9fID0gVHJ1ZQotICAgICAgICBmb3IgaSwgY2FsbCBpbiBlbnVtZXJhdGUoc2VsZi5jYWxscyk6
Ci0gICAgICAgICAgICBpZiBjYWxsLl9uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgZGVs
IHNlbGYuY2FsbHNbaV0KLSAgICAgICAgICAgICAgICByZXR1cm4gY2FsbAotICAgICAgICBsaW5l
cyA9IFsiY291bGQgbm90IGZpbmQgY2FsbCAlciwgaW46IiAlIChuYW1lLCldCi0gICAgICAgIGxp
bmVzLmV4dGVuZChbIiAgJXMiICUgc3RyKHgpIGZvciB4IGluIHNlbGYuY2FsbHNdKQotICAgICAg
ICBweXRlc3QuZmFpbCgiXG4iLmpvaW4obGluZXMpKQotCi0gICAgZGVmIGdldGNhbGwoc2VsZiwg
bmFtZSk6Ci0gICAgICAgIHZhbHVlcyA9IHNlbGYuZ2V0Y2FsbHMobmFtZSkKLSAgICAgICAgYXNz
ZXJ0IGxlbih2YWx1ZXMpID09IDEsIChuYW1lLCB2YWx1ZXMpCi0gICAgICAgIHJldHVybiB2YWx1
ZXNbMF0KLQotICAgICMgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdCByZXBvcnRzCi0KLSAgICBkZWYg
Z2V0cmVwb3J0cyhzZWxmLAotICAgICAgICAgICAgICAgICAgIG5hbWVzPSJweXRlc3RfcnVudGVz
dF9sb2dyZXBvcnQgcHl0ZXN0X2NvbGxlY3RyZXBvcnQiKToKLSAgICAgICAgcmV0dXJuIFt4LnJl
cG9ydCBmb3IgeCBpbiBzZWxmLmdldGNhbGxzKG5hbWVzKV0KLQotICAgIGRlZiBtYXRjaHJlcG9y
dChzZWxmLCBpbmFtZXBhcnQ9IiIsCi0gICAgICAgICAgICAgICAgICAgIG5hbWVzPSJweXRlc3Rf
cnVudGVzdF9sb2dyZXBvcnQgcHl0ZXN0X2NvbGxlY3RyZXBvcnQiLCB3aGVuPU5vbmUpOgotICAg
ICAgICAiIiIgcmV0dXJuIGEgdGVzdHJlcG9ydCB3aG9zZSBkb3R0ZWQgaW1wb3J0IHBhdGggbWF0
Y2hlcyAiIiIKLSAgICAgICAgdmFsdWVzID0gW10KLSAgICAgICAgZm9yIHJlcCBpbiBzZWxmLmdl
dHJlcG9ydHMobmFtZXM9bmFtZXMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IGlmIG5vdCB3aGVuIGFuZCByZXAud2hlbiAhPSAiY2FsbCIgYW5kIHJlcC5wYXNzZWQ6Ci0gICAg
ICAgICAgICAgICAgICAgICMgc2V0dXAvdGVhcmRvd24gcGFzc2luZyByZXBvcnRzIC0gbGV0J3Mg
aWdub3JlIHRob3NlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAg
aWYgd2hlbiBhbmQgZ2V0YXR0cihyZXAsICd3aGVuJywgTm9uZSkgIT0gd2hlbjoKLSAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbm90IGluYW1lcGFydCBvciBpbmFtZXBh
cnQgaW4gcmVwLm5vZGVpZC5zcGxpdCgiOjoiKToKLSAgICAgICAgICAgICAgICB2YWx1ZXMuYXBw
ZW5kKHJlcCkKLSAgICAgICAgaWYgbm90IHZhbHVlczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoImNvdWxkIG5vdCBmaW5kIHRlc3QgcmVwb3J0IG1hdGNoaW5nICVyOiAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJubyB0ZXN0IHJlcG9ydHMgYXQgYWxsISIgJSAoaW5hbWVw
YXJ0LCkpCi0gICAgICAgIGlmIGxlbih2YWx1ZXMpID4gMToKLSAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgImZvdW5kIDIgb3IgbW9yZSB0ZXN0cmVwb3J0cyBt
YXRjaGluZyAlcjogJXMiICUgKGluYW1lcGFydCwgdmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIHZh
bHVlc1swXQotCi0gICAgZGVmIGdldGZhaWx1cmVzKHNlbGYsCi0gICAgICAgICAgICAgICAgICAg
IG5hbWVzPSdweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQgcHl0ZXN0X2NvbGxlY3RyZXBvcnQnKToK
LSAgICAgICAgcmV0dXJuIFtyZXAgZm9yIHJlcCBpbiBzZWxmLmdldHJlcG9ydHMobmFtZXMpIGlm
IHJlcC5mYWlsZWRdCi0KLSAgICBkZWYgZ2V0ZmFpbGVkY29sbGVjdGlvbnMoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLmdldGZhaWx1cmVzKCdweXRlc3RfY29sbGVjdHJlcG9ydCcpCi0KLSAg
ICBkZWYgbGlzdG91dGNvbWVzKHNlbGYpOgotICAgICAgICBwYXNzZWQgPSBbXQotICAgICAgICBz
a2lwcGVkID0gW10KLSAgICAgICAgZmFpbGVkID0gW10KLSAgICAgICAgZm9yIHJlcCBpbiBzZWxm
LmdldHJlcG9ydHMoCi0gICAgICAgICAgICAgICAgInB5dGVzdF9jb2xsZWN0cmVwb3J0IHB5dGVz
dF9ydW50ZXN0X2xvZ3JlcG9ydCIpOgotICAgICAgICAgICAgaWYgcmVwLnBhc3NlZDoKLSAgICAg
ICAgICAgICAgICBpZiBnZXRhdHRyKHJlcCwgIndoZW4iLCBOb25lKSA9PSAiY2FsbCI6Ci0gICAg
ICAgICAgICAgICAgICAgIHBhc3NlZC5hcHBlbmQocmVwKQotICAgICAgICAgICAgZWxpZiByZXAu
c2tpcHBlZDoKLSAgICAgICAgICAgICAgICBza2lwcGVkLmFwcGVuZChyZXApCi0gICAgICAgICAg
ICBlbGlmIHJlcC5mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgZmFpbGVkLmFwcGVuZChyZXApCi0g
ICAgICAgIHJldHVybiBwYXNzZWQsIHNraXBwZWQsIGZhaWxlZAotCi0gICAgZGVmIGNvdW50b3V0
Y29tZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbbGVuKHgpIGZvciB4IGluIHNlbGYubGlzdG91
dGNvbWVzKCldCi0KLSAgICBkZWYgYXNzZXJ0b3V0Y29tZShzZWxmLCBwYXNzZWQ9MCwgc2tpcHBl
ZD0wLCBmYWlsZWQ9MCk6Ci0gICAgICAgIHJlYWxwYXNzZWQsIHJlYWxza2lwcGVkLCByZWFsZmFp
bGVkID0gc2VsZi5saXN0b3V0Y29tZXMoKQotICAgICAgICBhc3NlcnQgcGFzc2VkID09IGxlbihy
ZWFscGFzc2VkKQotICAgICAgICBhc3NlcnQgc2tpcHBlZCA9PSBsZW4ocmVhbHNraXBwZWQpCi0g
ICAgICAgIGFzc2VydCBmYWlsZWQgPT0gbGVuKHJlYWxmYWlsZWQpCi0KLSAgICBkZWYgY2xlYXIo
c2VsZik6Ci0gICAgICAgIHNlbGYuY2FsbHNbOl0gPSBbXQotCi0KLUBweXRlc3QuZml4dHVyZQot
ZGVmIGxpbmVjb21wKHJlcXVlc3QpOgotICAgIHJldHVybiBMaW5lQ29tcCgpCi0KLQotQHB5dGVz
dC5maXh0dXJlKG5hbWU9J0xpbmVNYXRjaGVyJykKLWRlZiBMaW5lTWF0Y2hlcl9maXh0dXJlKHJl
cXVlc3QpOgotICAgIHJldHVybiBMaW5lTWF0Y2hlcgotCi0KLUBweXRlc3QuZml4dHVyZQotZGVm
IHRlc3RkaXIocmVxdWVzdCwgdG1wZGlyX2ZhY3RvcnkpOgotICAgIHJldHVybiBUZXN0ZGlyKHJl
cXVlc3QsIHRtcGRpcl9mYWN0b3J5KQotCi0KLXJleF9vdXRjb21lID0gcmUuY29tcGlsZShyIihc
ZCspIChbXHctXSspIikKLQotCi1jbGFzcyBSdW5SZXN1bHQ6Ci0gICAgIiIiVGhlIHJlc3VsdCBv
ZiBydW5uaW5nIGEgY29tbWFuZC4KLQotICAgIEF0dHJpYnV0ZXM6Ci0KLSAgICA6cmV0OiBUaGUg
cmV0dXJuIHZhbHVlLgotICAgIDpvdXRsaW5lczogTGlzdCBvZiBsaW5lcyBjYXB0dXJlZCBmcm9t
IHN0ZG91dC4KLSAgICA6ZXJybGluZXM6IExpc3Qgb2YgbGluZXMgY2FwdHVyZXMgZnJvbSBzdGRl
cnIuCi0gICAgOnN0ZG91dDogOnB5OmNsYXNzOmBMaW5lTWF0Y2hlcmAgb2Ygc3Rkb3V0LCB1c2Ug
YGBzdGRvdXQuc3RyKClgYCB0bwotICAgICAgIHJlY29uc3RydWN0IHN0ZG91dCBvciB0aGUgY29t
bW9ubHkgdXNlZAotICAgICAgIGBgc3Rkb3V0LmZubWF0Y2hfbGluZXMoKWBgIG1ldGhvZC4KLSAg
ICA6c3RkZXJycjogOnB5OmNsYXNzOmBMaW5lTWF0Y2hlcmAgb2Ygc3RkZXJyLgotICAgIDpkdXJh
dGlvbjogRHVyYXRpb24gaW4gc2Vjb25kcy4KLQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJldCwgb3V0bGluZXMsIGVycmxpbmVzLCBkdXJhdGlvbik6Ci0gICAgICAgIHNlbGYu
cmV0ID0gcmV0Ci0gICAgICAgIHNlbGYub3V0bGluZXMgPSBvdXRsaW5lcwotICAgICAgICBzZWxm
LmVycmxpbmVzID0gZXJybGluZXMKLSAgICAgICAgc2VsZi5zdGRvdXQgPSBMaW5lTWF0Y2hlcihv
dXRsaW5lcykKLSAgICAgICAgc2VsZi5zdGRlcnIgPSBMaW5lTWF0Y2hlcihlcnJsaW5lcykKLSAg
ICAgICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0KLSAgICBkZWYgcGFyc2VvdXRjb21lcyhz
ZWxmKToKLSAgICAgICAgIiIiIFJldHVybiBhIGRpY3Rpb25hcnkgb2Ygb3V0Y29tZXN0cmluZy0+
bnVtIGZyb20gcGFyc2luZwotICAgICAgICB0aGUgdGVybWluYWwgb3V0cHV0IHRoYXQgdGhlIHRl
c3QgcHJvY2VzcyBwcm9kdWNlZC4iIiIKLSAgICAgICAgZm9yIGxpbmUgaW4gcmV2ZXJzZWQoc2Vs
Zi5vdXRsaW5lcyk6Ci0gICAgICAgICAgICBpZiAnc2Vjb25kcycgaW4gbGluZToKLSAgICAgICAg
ICAgICAgICBvdXRjb21lcyA9IHJleF9vdXRjb21lLmZpbmRhbGwobGluZSkKLSAgICAgICAgICAg
ICAgICBpZiBvdXRjb21lczoKLSAgICAgICAgICAgICAgICAgICAgZCA9IHt9Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciBudW0sIGNhdCBpbiBvdXRjb21lczoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRbY2F0XSA9IGludChudW0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkCi0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoIlB5dGVzdCB0ZXJtaW5hbCByZXBvcnQgbm90IGZvdW5kIikK
LQotICAgIGRlZiBhc3NlcnRfb3V0Y29tZXMoc2VsZiwgcGFzc2VkPTAsIHNraXBwZWQ9MCwgZmFp
bGVkPTAsIGVycm9yPTApOgotICAgICAgICAiIiIgYXNzZXJ0IHRoYXQgdGhlIHNwZWNpZmllZCBv
dXRjb21lcyBhcHBlYXIgd2l0aCB0aGUgcmVzcGVjdGl2ZQotICAgICAgICBudW1iZXJzICgwIG1l
YW5zIGl0IGRpZG4ndCBvY2N1cikgaW4gdGhlIHRleHQgb3V0cHV0IGZyb20gYSB0ZXN0IHJ1bi4i
IiIKLSAgICAgICAgZCA9IHNlbGYucGFyc2VvdXRjb21lcygpCi0gICAgICAgIG9idGFpbmVkID0g
ewotICAgICAgICAgICAgJ3Bhc3NlZCc6IGQuZ2V0KCdwYXNzZWQnLCAwKSwKLSAgICAgICAgICAg
ICdza2lwcGVkJzogZC5nZXQoJ3NraXBwZWQnLCAwKSwKLSAgICAgICAgICAgICdmYWlsZWQnOiBk
LmdldCgnZmFpbGVkJywgMCksCi0gICAgICAgICAgICAnZXJyb3InOiBkLmdldCgnZXJyb3InLCAw
KSwKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQgb2J0YWluZWQgPT0gZGljdChwYXNzZWQ9cGFz
c2VkLCBza2lwcGVkPXNraXBwZWQsIGZhaWxlZD1mYWlsZWQsIGVycm9yPWVycm9yKQotCi0KLWNs
YXNzIFRlc3RkaXI6Ci0gICAgIiIiVGVtcG9yYXJ5IHRlc3QgZGlyZWN0b3J5IHdpdGggdG9vbHMg
dG8gdGVzdC9ydW4gcHl0ZXN0IGl0c2VsZi4KLQotICAgIFRoaXMgaXMgYmFzZWQgb24gdGhlIGBg
dG1wZGlyYGAgZml4dHVyZSBidXQgcHJvdmlkZXMgYSBudW1iZXIgb2YKLSAgICBtZXRob2RzIHdo
aWNoIGFpZCB3aXRoIHRlc3RpbmcgcHl0ZXN0IGl0c2VsZi4gIFVubGVzcwotICAgIDpweTptZXRo
OmBjaGRpcmAgaXMgdXNlZCBhbGwgbWV0aG9kcyB3aWxsIHVzZSA6cHk6YXR0cjpgdG1wZGlyYCBh
cwotICAgIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0KLSAgICBBdHRyaWJ1dGVzOgotCi0g
ICAgOnRtcGRpcjogVGhlIDpweTpjbGFzczpgcHkucGF0aC5sb2NhbGAgaW5zdGFuY2Ugb2YgdGhl
IHRlbXBvcmFyeQotICAgICAgIGRpcmVjdG9yeS4KLQotICAgIDpwbHVnaW5zOiBBIGxpc3Qgb2Yg
cGx1Z2lucyB0byB1c2Ugd2l0aCA6cHk6bWV0aDpgcGFyc2Vjb25maWdgIGFuZAotICAgICAgIDpw
eTptZXRoOmBydW5weXRlc3RgLiAgSW5pdGlhbGx5IHRoaXMgaXMgYW4gZW1wdHkgbGlzdCBidXQK
LSAgICAgICBwbHVnaW5zIGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdC4gIFRoZSB0eXBlIG9mIGl0
ZW1zIHRvIGFkZCB0bwotICAgICAgIHRoZSBsaXN0IGRlcGVuZCBvbiB0aGUgbWV0aG9kIHdoaWNo
IHVzZXMgdGhlbSBzbyByZWZlciB0byB0aGVtCi0gICAgICAgZm9yIGRldGFpbHMuCi0KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSk6Ci0g
ICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fbW9kX2NvbGxlY3Rp
b25zID0gV2Vha0tleURpY3Rpb25hcnkoKQotICAgICAgICBuYW1lID0gcmVxdWVzdC5mdW5jdGlv
bi5fX25hbWVfXwotICAgICAgICBzZWxmLnRtcGRpciA9IHRtcGRpcl9mYWN0b3J5Lm1rdGVtcChu
YW1lLCBudW1iZXJlZD1UcnVlKQotICAgICAgICBzZWxmLnBsdWdpbnMgPSBbXQotICAgICAgICBz
ZWxmLl9zYXZlc3lzcGF0aCA9IChsaXN0KHN5cy5wYXRoKSwgbGlzdChzeXMubWV0YV9wYXRoKSkK
LSAgICAgICAgc2VsZi5fc2F2ZW1vZHVsZWtleXMgPSBzZXQoc3lzLm1vZHVsZXMpCi0gICAgICAg
IHNlbGYuY2hkaXIoKSAgIyBhbHdheXMgY2hkaXIKLSAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZp
bmFsaXplcihzZWxmLmZpbmFsaXplKQotICAgICAgICBtZXRob2QgPSBzZWxmLnJlcXVlc3QuY29u
ZmlnLmdldG9wdGlvbigiLS1ydW5weXRlc3QiKQotICAgICAgICBpZiBtZXRob2QgPT0gImlucHJv
Y2VzcyI6Ci0gICAgICAgICAgICBzZWxmLl9ydW5weXRlc3RfbWV0aG9kID0gc2VsZi5ydW5weXRl
c3RfaW5wcm9jZXNzCi0gICAgICAgIGVsaWYgbWV0aG9kID09ICJzdWJwcm9jZXNzIjoKLSAgICAg
ICAgICAgIHNlbGYuX3J1bnB5dGVzdF9tZXRob2QgPSBzZWxmLnJ1bnB5dGVzdF9zdWJwcm9jZXNz
Ci0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFRlc3RkaXIgJXI+
IiAlIChzZWxmLnRtcGRpciwpCi0KLSAgICBkZWYgZmluYWxpemUoc2VsZik6Ci0gICAgICAgICIi
IkNsZWFuIHVwIGdsb2JhbCBzdGF0ZSBhcnRpZmFjdHMuCi0KLSAgICAgICAgU29tZSBtZXRob2Rz
IG1vZGlmeSB0aGUgZ2xvYmFsIGludGVycHJldGVyIHN0YXRlIGFuZCB0aGlzCi0gICAgICAgIHRy
aWVzIHRvIGNsZWFuIHRoaXMgdXAuICBJdCBkb2VzIG5vdCByZW1vdmUgdGhlIHRlbXBvcmFyeQot
ICAgICAgICBkaXJlY3RvcnkgaG93ZXZlciBzbyBpdCBjYW4gYmUgbG9va2VkIGF0IGFmdGVyIHRo
ZSB0ZXN0IHJ1bgotICAgICAgICBoYXMgZmluaXNoZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAg
IHN5cy5wYXRoWzpdLCBzeXMubWV0YV9wYXRoWzpdID0gc2VsZi5fc2F2ZXN5c3BhdGgKLSAgICAg
ICAgaWYgaGFzYXR0cihzZWxmLCAnX29sZGRpcicpOgotICAgICAgICAgICAgc2VsZi5fb2xkZGly
LmNoZGlyKCkKLSAgICAgICAgc2VsZi5kZWxldGVfbG9hZGVkX21vZHVsZXMoKQotCi0gICAgZGVm
IGRlbGV0ZV9sb2FkZWRfbW9kdWxlcyhzZWxmKToKLSAgICAgICAgIiIiRGVsZXRlIG1vZHVsZXMg
dGhhdCBoYXZlIGJlZW4gbG9hZGVkIGR1cmluZyBhIHRlc3QuCi0KLSAgICAgICAgVGhpcyBhbGxv
d3MgdGhlIGludGVycHJldGVyIHRvIGNhdGNoIG1vZHVsZSBjaGFuZ2VzIGluIGNhc2UKLSAgICAg
ICAgdGhlIG1vZHVsZSBpcyByZS1pbXBvcnRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBu
YW1lIGluIHNldChzeXMubW9kdWxlcykuZGlmZmVyZW5jZShzZWxmLl9zYXZlbW9kdWxla2V5cyk6
Ci0gICAgICAgICAgICAjIHNvbWUgem9wZSBtb2R1bGVzIHVzZWQgYnkgdHdpc3RlZC1yZWxhdGVk
IHRlc3RzIGtlZXBzIGludGVybmFsCi0gICAgICAgICAgICAjIHN0YXRlIGFuZCBjYW4ndCBiZSBk
ZWxldGVkOyB3ZSBoYWQgc29tZSB0cm91YmxlIGluIHRoZSBwYXN0Ci0gICAgICAgICAgICAjIHdp
dGggem9wZS5pbnRlcmZhY2UgZm9yIGV4YW1wbGUKLSAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0
YXJ0c3dpdGgoInpvcGUiKToKLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0K
LQotICAgIGRlZiBtYWtlX2hvb2tfcmVjb3JkZXIoc2VsZiwgcGx1Z2lubWFuYWdlcik6Ci0gICAg
ICAgICIiIkNyZWF0ZSBhIG5ldyA6cHk6Y2xhc3M6YEhvb2tSZWNvcmRlcmAgZm9yIGEgUGx1Z2lu
TWFuYWdlci4iIiIKLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHBsdWdpbm1hbmFnZXIsICJy
ZXByZWMiKQotICAgICAgICBwbHVnaW5tYW5hZ2VyLnJlcHJlYyA9IHJlcHJlYyA9IEhvb2tSZWNv
cmRlcihwbHVnaW5tYW5hZ2VyKQotICAgICAgICBzZWxmLnJlcXVlc3QuYWRkZmluYWxpemVyKHJl
cHJlYy5maW5pc2hfcmVjb3JkaW5nKQotICAgICAgICByZXR1cm4gcmVwcmVjCi0KLSAgICBkZWYg
Y2hkaXIoc2VsZik6Ci0gICAgICAgICIiIkNkIGludG8gdGhlIHRlbXBvcmFyeSBkaXJlY3Rvcnku
Ci0KLSAgICAgICAgVGhpcyBpcyBkb25lIGF1dG9tYXRpY2FsbHkgdXBvbiBpbnN0YW50aWF0aW9u
LgotCi0gICAgICAgICIiIgotICAgICAgICBvbGQgPSBzZWxmLnRtcGRpci5jaGRpcigpCi0gICAg
ICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfb2xkZGlyJyk6Ci0gICAgICAgICAgICBzZWxmLl9v
bGRkaXIgPSBvbGQKLQotICAgIGRlZiBfbWFrZWZpbGUoc2VsZiwgZXh0LCBhcmdzLCBrd2FyZ3Ms
IGVuY29kaW5nPSd1dGYtOCcpOgotICAgICAgICBpdGVtcyA9IGxpc3Qoa3dhcmdzLml0ZW1zKCkp
Ci0KLSAgICAgICAgZGVmIHRvX3RleHQocyk6Ci0gICAgICAgICAgICByZXR1cm4gcy5kZWNvZGUo
ZW5jb2RpbmcpIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpIGVsc2Ugc2l4LnRleHRfdHlwZShzKQot
Ci0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICBzb3VyY2UgPSB1IlxuIi5qb2luKHRvX3Rl
eHQoeCkgZm9yIHggaW4gYXJncykKLSAgICAgICAgICAgIGJhc2VuYW1lID0gc2VsZi5yZXF1ZXN0
LmZ1bmN0aW9uLl9fbmFtZV9fCi0gICAgICAgICAgICBpdGVtcy5pbnNlcnQoMCwgKGJhc2VuYW1l
LCBzb3VyY2UpKQotCi0gICAgICAgIHJldCA9IE5vbmUKLSAgICAgICAgZm9yIGJhc2VuYW1lLCB2
YWx1ZSBpbiBpdGVtczoKLSAgICAgICAgICAgIHAgPSBzZWxmLnRtcGRpci5qb2luKGJhc2VuYW1l
KS5uZXcoZXh0PWV4dCkKLSAgICAgICAgICAgIHAuZGlycGF0aCgpLmVuc3VyZV9kaXIoKQotICAg
ICAgICAgICAgc291cmNlID0gU291cmNlKHZhbHVlKQotICAgICAgICAgICAgc291cmNlID0gdSJc
biIuam9pbih0b190ZXh0KGxpbmUpIGZvciBsaW5lIGluIHNvdXJjZS5saW5lcykKLSAgICAgICAg
ICAgIHAud3JpdGUoc291cmNlLnN0cmlwKCkuZW5jb2RlKGVuY29kaW5nKSwgIndiIikKLSAgICAg
ICAgICAgIGlmIHJldCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJldCA9IHAKLSAgICAgICAg
cmV0dXJuIHJldAotCi0gICAgZGVmIG1ha2VmaWxlKHNlbGYsIGV4dCwgKmFyZ3MsICoqa3dhcmdz
KToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGZpbGUgaW4gdGhlIHRlc3RkaXIuCi0KLSAgICAg
ICAgZXh0OiBUaGUgZXh0ZW5zaW9uIHRoZSBmaWxlIHNob3VsZCB1c2UsIGluY2x1ZGluZyB0aGUg
ZG90LgotICAgICAgICAgICBFLmcuICIucHkiLgotCi0gICAgICAgIGFyZ3M6IEFsbCBhcmdzIHdp
bGwgYmUgdHJlYXRlZCBhcyBzdHJpbmdzIGFuZCBqb2luZWQgdXNpbmcKLSAgICAgICAgICAgbmV3
bGluZXMuICBUaGUgcmVzdWx0IHdpbGwgYmUgd3JpdHRlbiBhcyBjb250ZW50cyB0byB0aGUKLSAg
ICAgICAgICAgZmlsZS4gIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHdpbGwgYmUgYmFzZWQgb24gdGhl
IHRlc3QKLSAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdGluZyB0aGlzIGZpeHR1cmUuCi0gICAg
ICAgICAgIEUuZy4gInRlc3RkaXIubWFrZWZpbGUoJy50eHQnLCAnbGluZTEnLCAnbGluZTInKSIK
LQotICAgICAgICBrd2FyZ3M6IEVhY2gga2V5d29yZCBpcyB0aGUgbmFtZSBvZiBhIGZpbGUsIHdo
aWxlIHRoZSB2YWx1ZSBvZgotICAgICAgICAgICBpdCB3aWxsIGJlIHdyaXR0ZW4gYXMgY29udGVu
dHMgb2YgdGhlIGZpbGUuCi0gICAgICAgICAgIEUuZy4gInRlc3RkaXIubWFrZWZpbGUoJy5pbmkn
LCBweXRlc3Q9J1tweXRlc3RdXG5hZGRvcHRzPS1yc1xuJykiCi0KLSAgICAgICAgIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9tYWtlZmlsZShleHQsIGFyZ3MsIGt3YXJncykKLQotICAgIGRlZiBt
YWtlY29uZnRlc3Qoc2VsZiwgc291cmNlKToKLSAgICAgICAgIiIiV3JpdGUgYSBjb250ZXN0LnB5
IGZpbGUgd2l0aCAnc291cmNlJyBhcyBjb250ZW50cy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYu
bWFrZXB5ZmlsZShjb25mdGVzdD1zb3VyY2UpCi0KLSAgICBkZWYgbWFrZWluaShzZWxmLCBzb3Vy
Y2UpOgotICAgICAgICAiIiJXcml0ZSBhIHRveC5pbmkgZmlsZSB3aXRoICdzb3VyY2UnIGFzIGNv
bnRlbnRzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5tYWtlZmlsZSgnLmluaScsIHRveD1zb3Vy
Y2UpCi0KLSAgICBkZWYgZ2V0aW5pY2ZnKHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgICIiIlJldHVy
biB0aGUgcHl0ZXN0IHNlY3Rpb24gZnJvbSB0aGUgdG94LmluaSBjb25maWcgZmlsZS4iIiIKLSAg
ICAgICAgcCA9IHNlbGYubWFrZWluaShzb3VyY2UpCi0gICAgICAgIHJldHVybiBweS5pbmljb25m
aWcuSW5pQ29uZmlnKHApWydweXRlc3QnXQotCi0gICAgZGVmIG1ha2VweWZpbGUoc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIiU2hvcnRjdXQgZm9yIC5tYWtlZmlsZSgpIHdpdGgg
YSAucHkgZXh0ZW5zaW9uLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbWFrZWZpbGUoJy5weScs
IGFyZ3MsIGt3YXJncykKLQotICAgIGRlZiBtYWtldHh0ZmlsZShzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgotICAgICAgICAiIiJTaG9ydGN1dCBmb3IgLm1ha2VmaWxlKCkgd2l0aCBhIC50eHQgZXh0
ZW5zaW9uLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbWFrZWZpbGUoJy50eHQnLCBhcmdzLCBr
d2FyZ3MpCi0KLSAgICBkZWYgc3lzcGF0aGluc2VydChzZWxmLCBwYXRoPU5vbmUpOgotICAgICAg
ICAiIiJQcmVwZW5kIGEgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLCBkZWZhdWx0cyB0byA6cHk6YXR0
cjpgdG1wZGlyYC4KLQotICAgICAgICBUaGlzIGlzIHVuZG9uZSBhdXRvbWF0aWNhbGx5IGFmdGVy
IHRoZSB0ZXN0LgotICAgICAgICAiIiIKLSAgICAgICAgaWYgcGF0aCBpcyBOb25lOgotICAgICAg
ICAgICAgcGF0aCA9IHNlbGYudG1wZGlyCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBzdHIo
cGF0aCkpCi0gICAgICAgICMgYSBjYWxsIHRvIHN5c3BhdGhpbnNlcnQoKSB1c3VhbGx5IG1lYW5z
IHRoYXQgdGhlIGNhbGxlcgotICAgICAgICAjIHdhbnRzIHRvIGltcG9ydCBzb21lIGR5bmFtaWNh
bGx5IGNyZWF0ZWQgZmlsZXMuCi0gICAgICAgICMgd2l0aCBweXRob24zIHdlIHRodXMgaW52YWxp
ZGF0ZSBpbXBvcnQgY2FjaGVzLgotICAgICAgICBzZWxmLl9wb3NzaWJseV9pbnZhbGlkYXRlX2lt
cG9ydF9jYWNoZXMoKQotCi0gICAgZGVmIF9wb3NzaWJseV9pbnZhbGlkYXRlX2ltcG9ydF9jYWNo
ZXMoc2VsZik6Ci0gICAgICAgICMgaW52YWxpZGF0ZSBjYWNoZXMgaWYgd2UgY2FuIChweTMzIGFu
ZCBhYm92ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IGltcG9ydGxpYgotICAg
ICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKGltcG9ydGxpYiwgImludmFsaWRhdGVfY2FjaGVzIik6
Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKLQotICAgIGRl
ZiBta2RpcihzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IChzdWIpZGlyZWN0
b3J5LiIiIgotICAgICAgICByZXR1cm4gc2VsZi50bXBkaXIubWtkaXIobmFtZSkKLQotICAgIGRl
ZiBta3B5ZGlyKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJDcmVhdGUgYSBuZXcgcHl0aG9uIHBh
Y2thZ2UuCi0KLSAgICAgICAgVGhpcyBjcmVhdGVzIGEgKHN1YilkaXJlY3Rvcnkgd2l0aCBhbiBl
bXB0eSBgYF9faW5pdF9fLnB5YGAKLSAgICAgICAgZmlsZSBzbyB0aGF0IGlzIHJlY29nbmlzZWQg
YXMgYSBweXRob24gcGFja2FnZS4KLQotICAgICAgICAiIiIKLSAgICAgICAgcCA9IHNlbGYubWtk
aXIobmFtZSkKLSAgICAgICAgcC5lbnN1cmUoIl9faW5pdF9fLnB5IikKLSAgICAgICAgcmV0dXJu
IHAKLQotICAgIFNlc3Npb24gPSBTZXNzaW9uCi0KLSAgICBkZWYgZ2V0bm9kZShzZWxmLCBjb25m
aWcsIGFyZyk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29sbGVjdGlvbiBub2RlIG9mIGEgZmls
ZS4KLQotICAgICAgICA6cGFyYW0gY29uZmlnOiA6cHk6Y2xhc3M6YF9weXRlc3QuY29uZmlnLkNv
bmZpZ2AgaW5zdGFuY2UsIHNlZQotICAgICAgICAgICA6cHk6bWV0aDpgcGFyc2Vjb25maWdgIGFu
ZCA6cHk6bWV0aDpgcGFyc2Vjb25maWd1cmVgIHRvCi0gICAgICAgICAgIGNyZWF0ZSB0aGUgY29u
ZmlndXJhdGlvbi4KLQotICAgICAgICA6cGFyYW0gYXJnOiBBIDpweTpjbGFzczpgcHkucGF0aC5s
b2NhbGAgaW5zdGFuY2Ugb2YgdGhlIGZpbGUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlc3Np
b24gPSBTZXNzaW9uKGNvbmZpZykKLSAgICAgICAgYXNzZXJ0ICc6Oicgbm90IGluIHN0cihhcmcp
Ci0gICAgICAgIHAgPSBweS5wYXRoLmxvY2FsKGFyZykKLSAgICAgICAgY29uZmlnLmhvb2sucHl0
ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uPXNlc3Npb24pCi0gICAgICAgIHJlcyA9IHNlc3Npb24u
cGVyZm9ybV9jb2xsZWN0KFtzdHIocCldLCBnZW5pdGVtcz1GYWxzZSlbMF0KLSAgICAgICAgY29u
ZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbj1zZXNzaW9uLCBleGl0c3RhdHVz
PUVYSVRfT0spCi0gICAgICAgIHJldHVybiByZXMKLQotICAgIGRlZiBnZXRwYXRobm9kZShzZWxm
LCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2xsZWN0aW9uIG5vZGUgb2YgYSBmaWxl
LgotCi0gICAgICAgIFRoaXMgaXMgbGlrZSA6cHk6bWV0aDpgZ2V0bm9kZWAgYnV0IHVzZXMKLSAg
ICAgICAgOnB5Om1ldGg6YHBhcnNlY29uZmlndXJlYCB0byBjcmVhdGUgdGhlIChjb25maWd1cmVk
KSBweXRlc3QKLSAgICAgICAgQ29uZmlnIGluc3RhbmNlLgotCi0gICAgICAgIDpwYXJhbSBwYXRo
OiBBIDpweTpjbGFzczpgcHkucGF0aC5sb2NhbGAgaW5zdGFuY2Ugb2YgdGhlIGZpbGUuCi0KLSAg
ICAgICAgIiIiCi0gICAgICAgIGNvbmZpZyA9IHNlbGYucGFyc2Vjb25maWd1cmUocGF0aCkKLSAg
ICAgICAgc2Vzc2lvbiA9IFNlc3Npb24oY29uZmlnKQotICAgICAgICB4ID0gc2Vzc2lvbi5mc3Bh
dGguYmVzdHJlbHBhdGgocGF0aCkKLSAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25z
dGFydChzZXNzaW9uPXNlc3Npb24pCi0gICAgICAgIHJlcyA9IHNlc3Npb24ucGVyZm9ybV9jb2xs
ZWN0KFt4XSwgZ2VuaXRlbXM9RmFsc2UpWzBdCi0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9z
ZXNzaW9uZmluaXNoKHNlc3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1cz1FWElUX09LKQotICAgICAg
ICByZXR1cm4gcmVzCi0KLSAgICBkZWYgZ2VuaXRlbXMoc2VsZiwgY29saXRlbXMpOgotICAgICAg
ICAiIiJHZW5lcmF0ZSBhbGwgdGVzdCBpdGVtcyBmcm9tIGEgY29sbGVjdGlvbiBub2RlLgotCi0g
ICAgICAgIFRoaXMgcmVjdXJzZXMgaW50byB0aGUgY29sbGVjdGlvbiBub2RlIGFuZCByZXR1cm5z
IGEgbGlzdCBvZgotICAgICAgICBhbGwgdGhlIHRlc3QgaXRlbXMgY29udGFpbmVkIHdpdGhpbi4K
LQotICAgICAgICAiIiIKLSAgICAgICAgc2Vzc2lvbiA9IGNvbGl0ZW1zWzBdLnNlc3Npb24KLSAg
ICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIGNvbGl0ZW0gaW4gY29saXRlbXM6Ci0gICAg
ICAgICAgICByZXN1bHQuZXh0ZW5kKHNlc3Npb24uZ2VuaXRlbXMoY29saXRlbSkpCi0gICAgICAg
IHJldHVybiByZXN1bHQKLQotICAgIGRlZiBydW5pdGVtKHNlbGYsIHNvdXJjZSk6Ci0gICAgICAg
ICIiIlJ1biB0aGUgInRlc3RfZnVuYyIgSXRlbS4KLQotICAgICAgICBUaGUgY2FsbGluZyB0ZXN0
IGluc3RhbmNlICh0aGUgY2xhc3Mgd2hpY2ggY29udGFpbnMgdGhlIHRlc3QKLSAgICAgICAgbWV0
aG9kKSBtdXN0IHByb3ZpZGUgYSBgYC5nZXRydW5uZXIoKWBgIG1ldGhvZCB3aGljaCBzaG91bGQK
LSAgICAgICAgcmV0dXJuIGEgcnVubmVyIHdoaWNoIGNhbiBydW4gdGhlIHRlc3QgcHJvdG9jb2wg
Zm9yIGEgc2luZ2xlCi0gICAgICAgIGl0ZW0sIGxpa2UgZS5nLiA6cHk6ZnVuYzpgX3B5dGVzdC5y
dW5uZXIucnVudGVzdHByb3RvY29sYC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyB1c2VkIGZy
b20gcnVubmVyIGZ1bmN0aW9uYWwgdGVzdHMKLSAgICAgICAgaXRlbSA9IHNlbGYuZ2V0aXRlbShz
b3VyY2UpCi0gICAgICAgICMgdGhlIHRlc3QgY2xhc3Mgd2hlcmUgd2UgYXJlIGNhbGxlZCBmcm9t
IHdhbnRzIHRvIHByb3ZpZGUgdGhlIHJ1bm5lcgotICAgICAgICB0ZXN0Y2xhc3NpbnN0YW5jZSA9
IHNlbGYucmVxdWVzdC5pbnN0YW5jZQotICAgICAgICBydW5uZXIgPSB0ZXN0Y2xhc3NpbnN0YW5j
ZS5nZXRydW5uZXIoKQotICAgICAgICByZXR1cm4gcnVubmVyKGl0ZW0pCi0KLSAgICBkZWYgaW5s
aW5lX3J1bnNvdXJjZShzZWxmLCBzb3VyY2UsICpjbWRsaW5lYXJncyk6Ci0gICAgICAgICIiIlJ1
biBhIHRlc3QgbW9kdWxlIGluIHByb2Nlc3MgdXNpbmcgYGBweXRlc3QubWFpbigpYGAuCi0KLSAg
ICAgICAgVGhpcyBydW4gd3JpdGVzICJzb3VyY2UiIGludG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQg
cnVucwotICAgICAgICBgYHB5dGVzdC5tYWluKClgYCBvbiBpdCwgcmV0dXJuaW5nIGEgOnB5OmNs
YXNzOmBIb29rUmVjb3JkZXJgCi0gICAgICAgIGluc3RhbmNlIGZvciB0aGUgcmVzdWx0LgotCi0g
ICAgICAgIDpwYXJhbSBzb3VyY2U6IFRoZSBzb3VyY2UgY29kZSBvZiB0aGUgdGVzdCBtb2R1bGUu
Ci0KLSAgICAgICAgOnBhcmFtIGNtZGxpbmVhcmdzOiBBbnkgZXh0cmEgY29tbWFuZCBsaW5lIGFy
Z3VtZW50cyB0byB1c2UuCi0KLSAgICAgICAgOnJldHVybjogOnB5OmNsYXNzOmBIb29rUmVjb3Jk
ZXJgIGluc3RhbmNlIG9mIHRoZSByZXN1bHQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHAgPSBz
ZWxmLm1ha2VweWZpbGUoc291cmNlKQotICAgICAgICB2YWx1ZXMgPSBsaXN0KGNtZGxpbmVhcmdz
KSArIFtwXQotICAgICAgICByZXR1cm4gc2VsZi5pbmxpbmVfcnVuKCp2YWx1ZXMpCi0KLSAgICBk
ZWYgaW5saW5lX2dlbml0ZW1zKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiUnVuIGBgcHl0ZXN0
Lm1haW4oWyctLWNvbGxlY3Rvbmx5J10pYGAgaW4tcHJvY2Vzcy4KLQotICAgICAgICBSZXR1cm5z
IGEgdHVwbGUgb2YgdGhlIGNvbGxlY3RlZCBpdGVtcyBhbmQgYQotICAgICAgICA6cHk6Y2xhc3M6
YEhvb2tSZWNvcmRlcmAgaW5zdGFuY2UuCi0KLSAgICAgICAgVGhpcyBydW5zIHRoZSA6cHk6ZnVu
YzpgcHl0ZXN0Lm1haW5gIGZ1bmN0aW9uIHRvIHJ1biBhbGwgb2YKLSAgICAgICAgcHl0ZXN0IGlu
c2lkZSB0aGUgdGVzdCBwcm9jZXNzIGl0c2VsZiBsaWtlCi0gICAgICAgIDpweTptZXRoOmBpbmxp
bmVfcnVuYC4gIEhvd2V2ZXIgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mCi0gICAgICAg
IHRoZSBjb2xsZWN0aW9uIGl0ZW1zIGFuZCBhIDpweTpjbGFzczpgSG9va1JlY29yZGVyYCBpbnN0
YW5jZS4KLQotICAgICAgICAiIiIKLSAgICAgICAgcmVjID0gc2VsZi5pbmxpbmVfcnVuKCItLWNv
bGxlY3Qtb25seSIsICphcmdzKQotICAgICAgICBpdGVtcyA9IFt4Lml0ZW0gZm9yIHggaW4gcmVj
LmdldGNhbGxzKCJweXRlc3RfaXRlbWNvbGxlY3RlZCIpXQotICAgICAgICByZXR1cm4gaXRlbXMs
IHJlYwotCi0gICAgZGVmIGlubGluZV9ydW4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAg
ICAgIiIiUnVuIGBgcHl0ZXN0Lm1haW4oKWBgIGluLXByb2Nlc3MsIHJldHVybmluZyBhIEhvb2tS
ZWNvcmRlci4KLQotICAgICAgICBUaGlzIHJ1bnMgdGhlIDpweTpmdW5jOmBweXRlc3QubWFpbmAg
ZnVuY3Rpb24gdG8gcnVuIGFsbCBvZgotICAgICAgICBweXRlc3QgaW5zaWRlIHRoZSB0ZXN0IHBy
b2Nlc3MgaXRzZWxmLiAgVGhpcyBtZWFucyBpdCBjYW4KLSAgICAgICAgcmV0dXJuIGEgOnB5OmNs
YXNzOmBIb29rUmVjb3JkZXJgIGluc3RhbmNlIHdoaWNoIGdpdmVzIG1vcmUKLSAgICAgICAgZGV0
YWlsZWQgcmVzdWx0cyBmcm9tIHRoZW4gcnVuIHRoZW4gY2FuIGJlIGRvbmUgYnkgbWF0Y2hpbmcK
LSAgICAgICAgc3Rkb3V0L3N0ZGVyciBmcm9tIDpweTptZXRoOmBydW5weXRlc3RgLgotCi0gICAg
ICAgIDpwYXJhbSBhcmdzOiBBbnkgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBwYXNzIHRvCi0g
ICAgICAgICAgIDpweTpmdW5jOmBweXRlc3QubWFpbmAuCi0KLSAgICAgICAgOnBhcmFtIHBsdWdp
bjogKGtleXdvcmQtb25seSkgRXh0cmEgcGx1Z2luIGluc3RhbmNlcyB0aGUKLSAgICAgICAgICAg
YGBweXRlc3QubWFpbigpYGAgaW5zdGFuY2Ugc2hvdWxkIHVzZS4KLQotICAgICAgICA6cmV0dXJu
OiBBIDpweTpjbGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0gICAg
ICAgICMgV2hlbiBydW5uaW5nIHB5LnRlc3QgaW5saW5lIGFueSBwbHVnaW5zIGFjdGl2ZSBpbiB0
aGUgbWFpbgotICAgICAgICAjIHRlc3QgcHJvY2VzcyBhcmUgYWxyZWFkeSBpbXBvcnRlZC4gIFNv
IHRoaXMgZGlzYWJsZXMgdGhlCi0gICAgICAgICMgd2FybmluZyB3aGljaCB3aWxsIHRyaWdnZXIg
dG8gc2F5IHRoZXkgY2FuIG5vIGxvbmdlciBiZQotICAgICAgICAjIHJld3JpdHRlbiwgd2hpY2gg
aXMgZmluZSBhcyB0aGV5IGFyZSBhbHJlYWR5IHJld3JpdHRlbi4KLSAgICAgICAgb3JpZ193YXJu
ID0gQXNzZXJ0aW9uUmV3cml0aW5nSG9vay5fd2Fybl9hbHJlYWR5X2ltcG9ydGVkCi0KLSAgICAg
ICAgZGVmIHJldmVydCgpOgotICAgICAgICAgICAgQXNzZXJ0aW9uUmV3cml0aW5nSG9vay5fd2Fy
bl9hbHJlYWR5X2ltcG9ydGVkID0gb3JpZ193YXJuCi0KLSAgICAgICAgc2VsZi5yZXF1ZXN0LmFk
ZGZpbmFsaXplcihyZXZlcnQpCi0gICAgICAgIEFzc2VydGlvblJld3JpdGluZ0hvb2suX3dhcm5f
YWxyZWFkeV9pbXBvcnRlZCA9IGxhbWJkYSAqYTogTm9uZQotCi0gICAgICAgIHJlYyA9IFtdCi0K
LSAgICAgICAgY2xhc3MgQ29sbGVjdDoKLSAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJl
KHgsIGNvbmZpZyk6Ci0gICAgICAgICAgICAgICAgcmVjLmFwcGVuZChzZWxmLm1ha2VfaG9va19y
ZWNvcmRlcihjb25maWcucGx1Z2lubWFuYWdlcikpCi0KLSAgICAgICAgcGx1Z2lucyA9IGt3YXJn
cy5nZXQoInBsdWdpbnMiKSBvciBbXQotICAgICAgICBwbHVnaW5zLmFwcGVuZChDb2xsZWN0KCkp
Ci0gICAgICAgIHJldCA9IHB5dGVzdC5tYWluKGxpc3QoYXJncyksIHBsdWdpbnM9cGx1Z2lucykK
LSAgICAgICAgc2VsZi5kZWxldGVfbG9hZGVkX21vZHVsZXMoKQotICAgICAgICBpZiBsZW4ocmVj
KSA9PSAxOgotICAgICAgICAgICAgcmVwcmVjID0gcmVjLnBvcCgpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBjbGFzcyByZXByZWM6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBy
ZXByZWMucmV0ID0gcmV0Ci0KLSAgICAgICAgIyB0eXBpY2FsbHkgd2UgcmVyYWlzZSBrZXlib2Fy
ZCBpbnRlcnJ1cHRzIGZyb20gdGhlIGNoaWxkIHJ1bgotICAgICAgICAjIGJlY2F1c2UgaXQncyBv
dXIgdXNlciByZXF1ZXN0aW5nIGludGVycnVwdGlvbiBvZiB0aGUgdGVzdGluZwotICAgICAgICBp
ZiByZXQgPT0gMiBhbmQgbm90IGt3YXJncy5nZXQoIm5vX3JlcmFpc2VfY3RybGMiKToKLSAgICAg
ICAgICAgIGNhbGxzID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0
IikKLSAgICAgICAgICAgIGlmIGNhbGxzIGFuZCBjYWxsc1stMV0uZXhjaW5mby50eXBlID09IEtl
eWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0
KCkKLSAgICAgICAgcmV0dXJuIHJlcHJlYwotCi0gICAgZGVmIHJ1bnB5dGVzdF9pbnByb2Nlc3Mo
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIiIFJldHVybiByZXN1bHQgb2YgcnVu
bmluZyBweXRlc3QgaW4tcHJvY2VzcywgcHJvdmlkaW5nIGEgc2ltaWxhcgotICAgICAgICBpbnRl
cmZhY2UgdG8gd2hhdCBzZWxmLnJ1bnB5dGVzdCgpIHByb3ZpZGVzLiAiIiIKLSAgICAgICAgaWYg
a3dhcmdzLmdldCgic3lzcGF0aGluc2VydCIpOgotICAgICAgICAgICAgc2VsZi5zeXNwYXRoaW5z
ZXJ0KCkKLSAgICAgICAgbm93ID0gdGltZS50aW1lKCkKLSAgICAgICAgY2FwdHVyZSA9IE11bHRp
Q2FwdHVyZShDYXB0dXJlPVN5c0NhcHR1cmUpCi0gICAgICAgIGNhcHR1cmUuc3RhcnRfY2FwdHVy
aW5nKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJl
cHJlYyA9IHNlbGYuaW5saW5lX3J1bigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgICAgICBleGNl
cHQgU3lzdGVtRXhpdCBhcyBlOgotCi0gICAgICAgICAgICAgICAgY2xhc3MgcmVwcmVjOgotICAg
ICAgICAgICAgICAgICAgICByZXQgPSBlLmFyZ3NbMF0KLQotICAgICAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotICAgICAg
ICAgICAgICAgIGNsYXNzIHJlcHJlYzoKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gMwotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXB0dXJlLnJlYWRvdXRlcnIo
KQotICAgICAgICAgICAgY2FwdHVyZS5zdG9wX2NhcHR1cmluZygpCi0gICAgICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlKG91dCkKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQotCi0g
ICAgICAgIHJlcyA9IFJ1blJlc3VsdChyZXByZWMucmV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnNwbGl0KCJcbiIpLCBlcnIuc3BsaXQoIlxuIiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lLnRpbWUoKSAtIG5vdykKLSAgICAgICAgcmVzLnJlcHJlYyA9IHJlcHJlYwotICAg
ICAgICByZXR1cm4gcmVzCi0KLSAgICBkZWYgcnVucHl0ZXN0KHNlbGYsICphcmdzLCAqKmt3YXJn
cyk6Ci0gICAgICAgICIiIiBSdW4gcHl0ZXN0IGlubGluZSBvciBpbiBhIHN1YnByb2Nlc3MsIGRl
cGVuZGluZyBvbiB0aGUgY29tbWFuZCBsaW5lCi0gICAgICAgIG9wdGlvbiAiLS1ydW5weXRlc3Qi
IGFuZCByZXR1cm4gYSA6cHk6Y2xhc3M6YFJ1blJlc3VsdGAuCi0KLSAgICAgICAgIiIiCi0gICAg
ICAgIGFyZ3MgPSBzZWxmLl9lbnN1cmVfYmFzZXRlbXAoYXJncykKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3J1bnB5dGVzdF9tZXRob2QoKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIF9lbnN1cmVf
YmFzZXRlbXAoc2VsZiwgYXJncyk6Ci0gICAgICAgIGFyZ3MgPSBbc3RyKHgpIGZvciB4IGluIGFy
Z3NdCi0gICAgICAgIGZvciB4IGluIGFyZ3M6Ci0gICAgICAgICAgICBpZiBzdHIoeCkuc3RhcnRz
d2l0aCgnLS1iYXNldGVtcCcpOgotICAgICAgICAgICAgICAgICMgcHJpbnQoImJhc2VkdGVtcCBl
eGlzdHM6ICVzIiAlKGFyZ3MsKSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tYmFzZXRlbXA9JXMiICUgc2VsZi50bXBkaXIu
ZGlycGF0aCgnYmFzZXRlbXAnKSkKLSAgICAgICAgICAgICMgcHJpbnQoImFkZGVkIGJhc2V0ZW1w
OiAlcyIgJShhcmdzLCkpCi0gICAgICAgIHJldHVybiBhcmdzCi0KLSAgICBkZWYgcGFyc2Vjb25m
aWcoc2VsZiwgKmFyZ3MpOgotICAgICAgICAiIiJSZXR1cm4gYSBuZXcgcHl0ZXN0IENvbmZpZyBp
bnN0YW5jZSBmcm9tIGdpdmVuIGNvbW1hbmRsaW5lIGFyZ3MuCi0KLSAgICAgICAgVGhpcyBpbnZv
a2VzIHRoZSBweXRlc3QgYm9vdHN0cmFwcGluZyBjb2RlIGluIF9weXRlc3QuY29uZmlnCi0gICAg
ICAgIHRvIGNyZWF0ZSBhIG5ldyA6cHk6Y2xhc3M6YF9weXRlc3QuY29yZS5QbHVnaW5NYW5hZ2Vy
YCBhbmQKLSAgICAgICAgY2FsbCB0aGUgcHl0ZXN0X2NtZGxpbmVfcGFyc2UgaG9vayB0byBjcmVh
dGUgbmV3Ci0gICAgICAgIDpweTpjbGFzczpgX3B5dGVzdC5jb25maWcuQ29uZmlnYCBpbnN0YW5j
ZS4KLQotICAgICAgICBJZiA6cHk6YXR0cjpgcGx1Z2luc2AgaGFzIGJlZW4gcG9wdWxhdGVkIHRo
ZXkgc2hvdWxkIGJlIHBsdWdpbgotICAgICAgICBtb2R1bGVzIHdoaWNoIHdpbGwgYmUgcmVnaXN0
ZXJlZCB3aXRoIHRoZSBQbHVnaW5NYW5hZ2VyLgotCi0gICAgICAgICIiIgotICAgICAgICBhcmdz
ID0gc2VsZi5fZW5zdXJlX2Jhc2V0ZW1wKGFyZ3MpCi0KLSAgICAgICAgaW1wb3J0IF9weXRlc3Qu
Y29uZmlnCi0gICAgICAgIGNvbmZpZyA9IF9weXRlc3QuY29uZmlnLl9wcmVwYXJlY29uZmlnKGFy
Z3MsIHNlbGYucGx1Z2lucykKLSAgICAgICAgIyB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHRlc3Qg
d2lsbCBkbyB3aXRoIHRoaXMgaGFsZi1zZXR1cCBjb25maWcKLSAgICAgICAgIyBvYmplY3QgYW5k
IHRodXMgd2UgbWFrZSBzdXJlIGl0IGdldHMgdW5jb25maWd1cmVkIHByb3Blcmx5IGluIGFueQot
ICAgICAgICAjIGNhc2UgKG90aGVyd2lzZSBjYXB0dXJpbmcgY291bGQgc3RpbGwgYmUgYWN0aXZl
LCBmb3IgZXhhbXBsZSkKLSAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihjb25maWcu
X2Vuc3VyZV91bmNvbmZpZ3VyZSkKLSAgICAgICAgcmV0dXJuIGNvbmZpZwotCi0gICAgZGVmIHBh
cnNlY29uZmlndXJlKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHB5dGVz
dCBjb25maWd1cmVkIENvbmZpZyBpbnN0YW5jZS4KLQotICAgICAgICBUaGlzIHJldHVybnMgYSBu
ZXcgOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5Db25maWdgIGluc3RhbmNlCi0gICAgICAgIGxp
a2UgOnB5Om1ldGg6YHBhcnNlY29uZmlnYCwgYnV0IGFsc28gY2FsbHMgdGhlCi0gICAgICAgIHB5
dGVzdF9jb25maWd1cmUgaG9vay4KLQotICAgICAgICAiIiIKLSAgICAgICAgY29uZmlnID0gc2Vs
Zi5wYXJzZWNvbmZpZygqYXJncykKLSAgICAgICAgY29uZmlnLl9kb19jb25maWd1cmUoKQotICAg
ICAgICBzZWxmLnJlcXVlc3QuYWRkZmluYWxpemVyKGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJl
KQotICAgICAgICByZXR1cm4gY29uZmlnCi0KLSAgICBkZWYgZ2V0aXRlbShzZWxmLCBzb3VyY2Us
IGZ1bmNuYW1lPSJ0ZXN0X2Z1bmMiKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0ZXN0IGl0ZW0g
Zm9yIGEgdGVzdCBmdW5jdGlvbi4KLQotICAgICAgICBUaGlzIHdyaXRlcyB0aGUgc291cmNlIHRv
IGEgcHl0aG9uIGZpbGUgYW5kIHJ1bnMgcHl0ZXN0J3MKLSAgICAgICAgY29sbGVjdGlvbiBvbiB0
aGUgcmVzdWx0aW5nIG1vZHVsZSwgcmV0dXJuaW5nIHRoZSB0ZXN0IGl0ZW0KLSAgICAgICAgZm9y
IHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24gbmFtZS4KLQotICAgICAgICA6cGFyYW0gc291cmNlOiBU
aGUgbW9kdWxlIHNvdXJjZS4KLQotICAgICAgICA6cGFyYW0gZnVuY25hbWU6IFRoZSBuYW1lIG9m
IHRoZSB0ZXN0IGZ1bmN0aW9uIGZvciB3aGljaCB0aGUKLSAgICAgICAgICAgSXRlbSBtdXN0IGJl
IHJldHVybmVkLgotCi0gICAgICAgICIiIgotICAgICAgICBpdGVtcyA9IHNlbGYuZ2V0aXRlbXMo
c291cmNlKQotICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgICAgIGlmIGl0ZW0u
bmFtZSA9PSBmdW5jbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gaXRlbQotICAgICAgICBh
c3NlcnQgMCwgIiVyIGl0ZW0gbm90IGZvdW5kIGluIG1vZHVsZTpcbiVzXG5pdGVtczogJXMiICUg
KAotICAgICAgICAgICAgICAgICAgZnVuY25hbWUsIHNvdXJjZSwgaXRlbXMpCi0KLSAgICBkZWYg
Z2V0aXRlbXMoc2VsZiwgc291cmNlKToKLSAgICAgICAgIiIiUmV0dXJuIGFsbCB0ZXN0IGl0ZW1z
IGNvbGxlY3RlZCBmcm9tIHRoZSBtb2R1bGUuCi0KLSAgICAgICAgVGhpcyB3cml0ZXMgdGhlIHNv
dXJjZSB0byBhIHB5dGhvbiBmaWxlIGFuZCBydW5zIHB5dGVzdCdzCi0gICAgICAgIGNvbGxlY3Rp
b24gb24gdGhlIHJlc3VsdGluZyBtb2R1bGUsIHJldHVybmluZyBhbGwgdGVzdCBpdGVtcwotICAg
ICAgICBjb250YWluZWQgd2l0aGluLgotCi0gICAgICAgICIiIgotICAgICAgICBtb2Rjb2wgPSBz
ZWxmLmdldG1vZHVsZWNvbChzb3VyY2UpCi0gICAgICAgIHJldHVybiBzZWxmLmdlbml0ZW1zKFtt
b2Rjb2xdKQotCi0gICAgZGVmIGdldG1vZHVsZWNvbChzZWxmLCBzb3VyY2UsIGNvbmZpZ2FyZ3M9
KCksIHdpdGhpbml0PUZhbHNlKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBtb2R1bGUgY29sbGVj
dGlvbiBub2RlIGZvciBgYHNvdXJjZWBgLgotCi0gICAgICAgIFRoaXMgd3JpdGVzIGBgc291cmNl
YGAgdG8gYSBmaWxlIHVzaW5nIDpweTptZXRoOmBtYWtlcHlmaWxlYAotICAgICAgICBhbmQgdGhl
biBydW5zIHRoZSBweXRlc3QgY29sbGVjdGlvbiBvbiBpdCwgcmV0dXJuaW5nIHRoZQotICAgICAg
ICBjb2xsZWN0aW9uIG5vZGUgZm9yIHRoZSB0ZXN0IG1vZHVsZS4KLQotICAgICAgICA6cGFyYW0g
c291cmNlOiBUaGUgc291cmNlIGNvZGUgb2YgdGhlIG1vZHVsZSB0byBjb2xsZWN0LgotCi0gICAg
ICAgIDpwYXJhbSBjb25maWdhcmdzOiBBbnkgZXh0cmEgYXJndW1lbnRzIHRvIHBhc3MgdG8KLSAg
ICAgICAgICAgOnB5Om1ldGg6YHBhcnNlY29uZmlndXJlYC4KLQotICAgICAgICA6cGFyYW0gd2l0
aGluaXQ6IFdoZXRoZXIgdG8gYWxzbyB3cml0ZSBhIGBgX19pbml0X18ucHlgYCBmaWxlCi0gICAg
ICAgICAgIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIGVuc3VyZSBpdCBpcyBhIHBhY2th
Z2UuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGt3ID0ge3NlbGYucmVxdWVzdC5mdW5jdGlvbi5f
X25hbWVfXzogU291cmNlKHNvdXJjZSkuc3RyaXAoKX0KLSAgICAgICAgcGF0aCA9IHNlbGYubWFr
ZXB5ZmlsZSgqKmt3KQotICAgICAgICBpZiB3aXRoaW5pdDoKLSAgICAgICAgICAgIHNlbGYubWFr
ZXB5ZmlsZShfX2luaXRfXz0iIyIpCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnID0gc2Vs
Zi5wYXJzZWNvbmZpZ3VyZShwYXRoLCAqY29uZmlnYXJncykKLSAgICAgICAgbm9kZSA9IHNlbGYu
Z2V0bm9kZShjb25maWcsIHBhdGgpCi0KLSAgICAgICAgcmV0dXJuIG5vZGUKLQotICAgIGRlZiBj
b2xsZWN0X2J5X25hbWUoc2VsZiwgbW9kY29sLCBuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIHRo
ZSBjb2xsZWN0aW9uIG5vZGUgZm9yIG5hbWUgZnJvbSB0aGUgbW9kdWxlIGNvbGxlY3Rpb24uCi0K
LSAgICAgICAgVGhpcyB3aWxsIHNlYXJjaCBhIG1vZHVsZSBjb2xsZWN0aW9uIG5vZGUgZm9yIGEg
Y29sbGVjdGlvbgotICAgICAgICBub2RlIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lLgotCi0gICAg
ICAgIDpwYXJhbSBtb2Rjb2w6IEEgbW9kdWxlIGNvbGxlY3Rpb24gbm9kZSwgc2VlCi0gICAgICAg
ICAgIDpweTptZXRoOmBnZXRtb2R1bGVjb2xgLgotCi0gICAgICAgIDpwYXJhbSBuYW1lOiBUaGUg
bmFtZSBvZiB0aGUgbm9kZSB0byByZXR1cm4uCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG1v
ZGNvbCBub3QgaW4gc2VsZi5fbW9kX2NvbGxlY3Rpb25zOgotICAgICAgICAgICAgc2VsZi5fbW9k
X2NvbGxlY3Rpb25zW21vZGNvbF0gPSBsaXN0KG1vZGNvbC5jb2xsZWN0KCkpCi0gICAgICAgIGZv
ciBjb2xpdGVtIGluIHNlbGYuX21vZF9jb2xsZWN0aW9uc1ttb2Rjb2xdOgotICAgICAgICAgICAg
aWYgY29saXRlbS5uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGl0ZW0K
LQotICAgIGRlZiBwb3BlbihzZWxmLCBjbWRhcmdzLCBzdGRvdXQsIHN0ZGVyciwgKiprdyk6Ci0g
ICAgICAgICIiIkludm9rZSBzdWJwcm9jZXNzLlBvcGVuLgotCi0gICAgICAgIFRoaXMgY2FsbHMg
c3VicHJvY2Vzcy5Qb3BlbiBtYWtpbmcgc3VyZSB0aGUgY3VycmVudCB3b3JraW5nCi0gICAgICAg
IGRpcmVjdG9yeSBpcyB0aGUgUFlUSE9OUEFUSC4KLQotICAgICAgICBZb3UgcHJvYmFibHkgd2Fu
dCB0byB1c2UgOnB5Om1ldGg6YHJ1bmAgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAg
ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgICAgICAgZW52WydQWVRIT05QQVRIJ10gPSBvcy5w
YXRoc2VwLmpvaW4oZmlsdGVyKE5vbmUsIFsKLSAgICAgICAgICAgIHN0cihvcy5nZXRjd2QoKSks
IGVudi5nZXQoJ1BZVEhPTlBBVEgnLCAnJyldKSkKLSAgICAgICAga3dbJ2VudiddID0gZW52Ci0K
LSAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGNtZGFyZ3MsIHN0ZGluPXN1YnByb2Nl
c3MuUElQRSwgc3Rkb3V0PXN0ZG91dCwgc3RkZXJyPXN0ZGVyciwgKiprdykKLSAgICAgICAgcG9w
ZW4uc3RkaW4uY2xvc2UoKQotCi0gICAgICAgIHJldHVybiBwb3BlbgotCi0gICAgZGVmIHJ1bihz
ZWxmLCAqY21kYXJncyk6Ci0gICAgICAgICIiIlJ1biBhIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMu
Ci0KLSAgICAgICAgUnVuIGEgcHJvY2VzcyB1c2luZyBzdWJwcm9jZXNzLlBvcGVuIHNhdmluZyB0
aGUgc3Rkb3V0IGFuZAotICAgICAgICBzdGRlcnIuCi0KLSAgICAgICAgUmV0dXJucyBhIDpweTpj
bGFzczpgUnVuUmVzdWx0YC4KLQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1
bigqY21kYXJncykKLQotICAgIGRlZiBfcnVuKHNlbGYsICpjbWRhcmdzKToKLSAgICAgICAgY21k
YXJncyA9IFtzdHIoeCkgZm9yIHggaW4gY21kYXJnc10KLSAgICAgICAgcDEgPSBzZWxmLnRtcGRp
ci5qb2luKCJzdGRvdXQiKQotICAgICAgICBwMiA9IHNlbGYudG1wZGlyLmpvaW4oInN0ZGVyciIp
Ci0gICAgICAgIHByaW50KCJydW5uaW5nOiIsICcgJy5qb2luKGNtZGFyZ3MpKQotICAgICAgICBw
cmludCgiICAgICBpbjoiLCBzdHIocHkucGF0aC5sb2NhbCgpKSkKLSAgICAgICAgZjEgPSBjb2Rl
Y3Mub3BlbihzdHIocDEpLCAidyIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgZjIgPSBjb2Rl
Y3Mub3BlbihzdHIocDIpLCAidyIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIHBvcGVuID0gc2VsZi5wb3Bl
bihjbWRhcmdzLCBzdGRvdXQ9ZjEsIHN0ZGVycj1mMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbG9zZV9mZHM9KHN5cy5wbGF0Zm9ybSAhPSAid2luMzIiKSkKLSAgICAgICAgICAg
IHJldCA9IHBvcGVuLndhaXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZjEuY2xv
c2UoKQotICAgICAgICAgICAgZjIuY2xvc2UoKQotICAgICAgICBmMSA9IGNvZGVjcy5vcGVuKHN0
cihwMSksICJyIiwgZW5jb2Rpbmc9InV0ZjgiKQotICAgICAgICBmMiA9IGNvZGVjcy5vcGVuKHN0
cihwMiksICJyIiwgZW5jb2Rpbmc9InV0ZjgiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBv
dXQgPSBmMS5yZWFkKCkuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICBlcnIgPSBmMi5yZWFkKCku
c3BsaXRsaW5lcygpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmMS5jbG9zZSgpCi0g
ICAgICAgICAgICBmMi5jbG9zZSgpCi0gICAgICAgIHNlbGYuX2R1bXBfbGluZXMob3V0LCBzeXMu
c3Rkb3V0KQotICAgICAgICBzZWxmLl9kdW1wX2xpbmVzKGVyciwgc3lzLnN0ZGVycikKLSAgICAg
ICAgcmV0dXJuIFJ1blJlc3VsdChyZXQsIG91dCwgZXJyLCB0aW1lLnRpbWUoKSAtIG5vdykKLQot
ICAgIGRlZiBfZHVtcF9saW5lcyhzZWxmLCBsaW5lcywgZnApOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgICAgICBwcmludChsaW5lLCBm
aWxlPWZwKQotICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgotICAgICAgICAgICAg
cHJpbnQoImNvdWxkbid0IHByaW50IHRvICVzIGJlY2F1c2Ugb2YgZW5jb2RpbmciICUgKGZwLCkp
Ci0KLSAgICBkZWYgX2dldHB5dGVzdGFyZ3Moc2VsZik6Ci0gICAgICAgICMgd2UgY2Fubm90IHVz
ZSAiKHN5cy5leGVjdXRhYmxlLHNjcmlwdCkiCi0gICAgICAgICMgYmVjYXVzZSBvbiB3aW5kb3dz
IHRoZSBzY3JpcHQgaXMgZS5nLiBhIHB5dGVzdC5leGUKLSAgICAgICAgcmV0dXJuIChzeXMuZXhl
Y3V0YWJsZSwgUFlURVNUX0ZVTExQQVRIKSAjIG5vcWEKLQotICAgIGRlZiBydW5weXRob24oc2Vs
Ziwgc2NyaXB0KToKLSAgICAgICAgIiIiUnVuIGEgcHl0aG9uIHNjcmlwdCB1c2luZyBzeXMuZXhl
Y3V0YWJsZSBhcyBpbnRlcnByZXRlci4KLQotICAgICAgICBSZXR1cm5zIGEgOnB5OmNsYXNzOmBS
dW5SZXN1bHRgLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuKHN5cy5leGVj
dXRhYmxlLCBzY3JpcHQpCi0KLSAgICBkZWYgcnVucHl0aG9uX2Moc2VsZiwgY29tbWFuZCk6Ci0g
ICAgICAgICIiIlJ1biBweXRob24gLWMgImNvbW1hbmQiLCByZXR1cm4gYSA6cHk6Y2xhc3M6YFJ1
blJlc3VsdGAuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bihzeXMuZXhlY3V0YWJsZSwgIi1j
IiwgY29tbWFuZCkKLQotICAgIGRlZiBydW5weXRlc3Rfc3VicHJvY2VzcyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICAiIiJSdW4gcHl0ZXN0IGFzIGEgc3VicHJvY2VzcyB3aXRoIGdp
dmVuIGFyZ3VtZW50cy4KLQotICAgICAgICBBbnkgcGx1Z2lucyBhZGRlZCB0byB0aGUgOnB5OmF0
dHI6YHBsdWdpbnNgIGxpc3Qgd2lsbCBhZGRlZAotICAgICAgICB1c2luZyB0aGUgYGAtcGBgIGNv
bW1hbmQgbGluZSBvcHRpb24uICBBZGR0aW9uYWxseQotICAgICAgICBgYC0tYmFzZXRlbXBgYCBp
cyB1c2VkIHB1dCBhbnkgdGVtcG9yYXJ5IGZpbGVzIGFuZCBkaXJlY3RvcmllcwotICAgICAgICBp
biBhIG51bWJlcmVkIGRpcmVjdG9yeSBwcmVmaXhlZCB3aXRoICJydW5weXRlc3QtIiBzbyB0aGV5
IGRvCi0gICAgICAgIG5vdCBjb25mbGljdCB3aXRoIHRoZSBub3JtYWwgbnVtYmVyZCBweXRlc3Qg
bG9jYXRpb24gZm9yCi0gICAgICAgIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCi0K
LSAgICAgICAgUmV0dXJucyBhIDpweTpjbGFzczpgUnVuUmVzdWx0YC4KLQotICAgICAgICAiIiIK
LSAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwubWFrZV9udW1iZXJlZF9kaXIocHJlZml4PSJydW5w
eXRlc3QtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2Vl
cD1Ob25lLCByb290ZGlyPXNlbGYudG1wZGlyKQotICAgICAgICBhcmdzID0gKCctLWJhc2V0ZW1w
PSVzJyAlIHAsICkgKyBhcmdzCi0gICAgICAgICMgZm9yIHggaW4gYXJnczoKLSAgICAgICAgIyAg
ICBpZiAnLS1jb25mY3V0ZGlyJyBpbiBzdHIoeCk6Ci0gICAgICAgICMgICAgICAgIGJyZWFrCi0g
ICAgICAgICMgZWxzZToKLSAgICAgICAgIyAgICBwYXNzCi0gICAgICAgICMgICAgYXJncyA9ICgn
LS1jb25mY3V0ZGlyPS4nLCkgKyBhcmdzCi0gICAgICAgIHBsdWdpbnMgPSBbeCBmb3IgeCBpbiBz
ZWxmLnBsdWdpbnMgaWYgaXNpbnN0YW5jZSh4LCBzdHIpXQotICAgICAgICBpZiBwbHVnaW5zOgot
ICAgICAgICAgICAgYXJncyA9ICgnLXAnLCBwbHVnaW5zWzBdKSArIGFyZ3MKLSAgICAgICAgYXJn
cyA9IHNlbGYuX2dldHB5dGVzdGFyZ3MoKSArIGFyZ3MKLSAgICAgICAgcmV0dXJuIHNlbGYucnVu
KCphcmdzKQotCi0gICAgZGVmIHNwYXduX3B5dGVzdChzZWxmLCBzdHJpbmcsIGV4cGVjdF90aW1l
b3V0PTEwLjApOgotICAgICAgICAiIiJSdW4gcHl0ZXN0IHVzaW5nIHBleHBlY3QuCi0KLSAgICAg
ICAgVGhpcyBtYWtlcyBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgcHl0ZXN0IGFuZCBzZXRzIHVwIHRo
ZQotICAgICAgICB0ZW1wb3JhcnkgZGlyZWN0b3J5IGxvY2F0aW9ucy4KLQotICAgICAgICBUaGUg
cGV4cGVjdCBjaGlsZCBpcyByZXR1cm5lZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgYmFzZXRl
bXAgPSBzZWxmLnRtcGRpci5ta2RpcigidGVtcC1wZXhwZWN0IikKLSAgICAgICAgaW52b2tlID0g
IiAiLmpvaW4obWFwKHN0ciwgc2VsZi5fZ2V0cHl0ZXN0YXJncygpKSkKLSAgICAgICAgY21kID0g
IiVzIC0tYmFzZXRlbXA9JXMgJXMiICUgKGludm9rZSwgYmFzZXRlbXAsIHN0cmluZykKLSAgICAg
ICAgcmV0dXJuIHNlbGYuc3Bhd24oY21kLCBleHBlY3RfdGltZW91dD1leHBlY3RfdGltZW91dCkK
LQotICAgIGRlZiBzcGF3bihzZWxmLCBjbWQsIGV4cGVjdF90aW1lb3V0PTEwLjApOgotICAgICAg
ICAiIiJSdW4gYSBjb21tYW5kIHVzaW5nIHBleHBlY3QuCi0KLSAgICAgICAgVGhlIHBleHBlY3Qg
Y2hpbGQgaXMgcmV0dXJuZWQuCi0gICAgICAgICIiIgotICAgICAgICBwZXhwZWN0ID0gcHl0ZXN0
LmltcG9ydG9yc2tpcCgicGV4cGVjdCIsICIzLjAiKQotICAgICAgICBpZiBoYXNhdHRyKHN5cywg
J3B5cHlfdmVyc2lvbl9pbmZvJykgYW5kICc2NCcgaW4gcGxhdGZvcm0ubWFjaGluZSgpOgotICAg
ICAgICAgICAgcHl0ZXN0LnNraXAoInB5cHktNjQgYml0IG5vdCBzdXBwb3J0ZWQiKQotICAgICAg
ICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZnJlZWJzZCIpOgotICAgICAgICAgICAgcHl0
ZXN0LnhmYWlsKCJwZXhwZWN0IGRvZXMgbm90IHdvcmsgcmVsaWFibHkgb24gZnJlZWJzZCIpCi0g
ICAgICAgIGxvZ2ZpbGUgPSBzZWxmLnRtcGRpci5qb2luKCJzcGF3bi5vdXQiKS5vcGVuKCJ3YiIp
Ci0gICAgICAgIGNoaWxkID0gcGV4cGVjdC5zcGF3bihjbWQsIGxvZ2ZpbGU9bG9nZmlsZSkKLSAg
ICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihsb2dmaWxlLmNsb3NlKQotICAgICAgICBj
aGlsZC50aW1lb3V0ID0gZXhwZWN0X3RpbWVvdXQKLSAgICAgICAgcmV0dXJuIGNoaWxkCi0KLQot
ZGVmIGdldGRlY29kZWQob3V0KToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBvdXQuZGVjb2Rl
KCJ1dGYtOCIpCi0gICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgcmV0dXJu
ICJJTlRFUk5BTCBub3QtdXRmOC1kZWNvZGVhYmxlLCB0cnVuY2F0ZWQgc3RyaW5nOlxuJXMiICUg
KAotICAgICAgICAgICAgcHkuaW8uc2FmZXJlcHIob3V0KSwpCi0KLQotY2xhc3MgTGluZUNvbXA6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0cmluZ2lvID0gcHkuaW8u
VGV4dElPKCkKLQotICAgIGRlZiBhc3NlcnRfY29udGFpbnNfbGluZXMoc2VsZiwgbGluZXMyKToK
LSAgICAgICAgIiIiIGFzc2VydCB0aGF0IGxpbmVzMiBhcmUgY29udGFpbmVkIChsaW5lYXJseSkg
aW4gbGluZXMxLgotICAgICAgICAgICAgcmV0dXJuIGEgbGlzdCBvZiBleHRyYWxpbmVzIGZvdW5k
LgotICAgICAgICAiIiIKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAg
IHZhbCA9IHNlbGYuc3RyaW5naW8uZ2V0dmFsdWUoKQotICAgICAgICBzZWxmLnN0cmluZ2lvLnRy
dW5jYXRlKDApCi0gICAgICAgIHNlbGYuc3RyaW5naW8uc2VlaygwKQotICAgICAgICBsaW5lczEg
PSB2YWwuc3BsaXQoIlxuIikKLSAgICAgICAgcmV0dXJuIExpbmVNYXRjaGVyKGxpbmVzMSkuZm5t
YXRjaF9saW5lcyhsaW5lczIpCi0KLQotY2xhc3MgTGluZU1hdGNoZXI6Ci0gICAgIiIiRmxleGli
bGUgbWF0Y2hpbmcgb2YgdGV4dC4KLQotICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBjbGFzcyB0
byB0ZXN0IGxhcmdlIHRleHRzIGxpa2UgdGhlIG91dHB1dCBvZgotICAgIGNvbW1hbmRzLgotCi0g
ICAgVGhlIGNvbnN0cnVjdG9yIHRha2VzIGEgbGlzdCBvZiBsaW5lcyB3aXRob3V0IHRoZWlyIHRy
YWlsaW5nCi0gICAgbmV3bGluZXMsIGkuZS4gYGB0ZXh0LnNwbGl0bGluZXMoKWBgLgotCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZXMpOgotICAgICAgICBzZWxmLmxpbmVz
ID0gbGluZXMKLSAgICAgICAgc2VsZi5fbG9nX291dHB1dCA9IFtdCi0KLSAgICBkZWYgc3RyKHNl
bGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGVudGlyZSBvcmlnaW5hbCB0ZXh0LiIiIgotICAg
ICAgICByZXR1cm4gIlxuIi5qb2luKHNlbGYubGluZXMpCi0KLSAgICBkZWYgX2dldGxpbmVzKHNl
bGYsIGxpbmVzMik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZXMyLCBzdHIpOgotICAgICAg
ICAgICAgbGluZXMyID0gU291cmNlKGxpbmVzMikKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5l
czIsIFNvdXJjZSk6Ci0gICAgICAgICAgICBsaW5lczIgPSBsaW5lczIuc3RyaXAoKS5saW5lcwot
ICAgICAgICByZXR1cm4gbGluZXMyCi0KLSAgICBkZWYgZm5tYXRjaF9saW5lc19yYW5kb20oc2Vs
ZiwgbGluZXMyKToKLSAgICAgICAgIiIiQ2hlY2sgbGluZXMgZXhpc3QgaW4gdGhlIG91dHB1dCB1
c2luZyBgYGZubWF0Y2guZm5tYXRjaGBgLCBpbiBhbnkgb3JkZXIuCi0KLSAgICAgICAgVGhlIGFy
Z3VtZW50IGlzIGEgbGlzdCBvZiBsaW5lcyB3aGljaCBoYXZlIHRvIG9jY3VyIGluIHRoZQotICAg
ICAgICBvdXRwdXQsIGluIGFueSBvcmRlci4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21h
dGNoX2xpbmVzX3JhbmRvbShsaW5lczIsIGZubWF0Y2gpCi0KLSAgICBkZWYgcmVfbWF0Y2hfbGlu
ZXNfcmFuZG9tKHNlbGYsIGxpbmVzMik6Ci0gICAgICAgICIiIkNoZWNrIGxpbmVzIGV4aXN0IGlu
IHRoZSBvdXRwdXQgdXNpbmcgYGByZS5tYXRjaGBgLCBpbiBhbnkgb3JkZXIuCi0KLSAgICAgICAg
VGhlIGFyZ3VtZW50IGlzIGEgbGlzdCBvZiBsaW5lcyB3aGljaCBoYXZlIHRvIG9jY3VyIGluIHRo
ZQotICAgICAgICBvdXRwdXQsIGluIGFueSBvcmRlci4KLQotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5fbWF0Y2hfbGluZXNfcmFuZG9tKGxpbmVzMiwgbGFtYmRhIG5hbWUsIHBhdDogcmUubWF0
Y2gocGF0LCBuYW1lKSkKLQotICAgIGRlZiBfbWF0Y2hfbGluZXNfcmFuZG9tKHNlbGYsIGxpbmVz
MiwgbWF0Y2hfZnVuYyk6Ci0gICAgICAgICIiIkNoZWNrIGxpbmVzIGV4aXN0IGluIHRoZSBvdXRw
dXQuCi0KLSAgICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgbGlzdCBvZiBsaW5lcyB3aGljaCBoYXZl
IHRvIG9jY3VyIGluIHRoZQotICAgICAgICBvdXRwdXQsIGluIGFueSBvcmRlci4gIEVhY2ggbGlu
ZSBjYW4gY29udGFpbiBnbG9iIHdoaWxkY2FyZHMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGxp
bmVzMiA9IHNlbGYuX2dldGxpbmVzKGxpbmVzMikKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXMy
OgotICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5saW5lczoKLSAgICAgICAgICAgICAgICBpZiBs
aW5lID09IHggb3IgbWF0Y2hfZnVuYyh4LCBsaW5lKToKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nKCJtYXRjaGVkOiAiLCByZXByKGxpbmUpKQotICAgICAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2coImxpbmUgJXIg
bm90IGZvdW5kIGluIG91dHB1dCIgJSBsaW5lKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3Ioc2VsZi5fbG9nX3RleHQpCi0KLSAgICBkZWYgZ2V0X2xpbmVzX2FmdGVyKHNlbGYsIGZu
bGluZSk6Ci0gICAgICAgICIiIlJldHVybiBhbGwgbGluZXMgZm9sbG93aW5nIHRoZSBnaXZlbiBs
aW5lIGluIHRoZSB0ZXh0LgotCi0gICAgICAgIFRoZSBnaXZlbiBsaW5lIGNhbiBjb250YWluIGds
b2Igd2lsZGNhcmRzLgotICAgICAgICAiIiIKLSAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVy
YXRlKHNlbGYubGluZXMpOgotICAgICAgICAgICAgaWYgZm5saW5lID09IGxpbmUgb3IgZm5tYXRj
aChsaW5lLCBmbmxpbmUpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxpbmVzW2kgKyAx
Ol0KLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibGluZSAlciBub3QgZm91bmQgaW4gb3V0cHV0
IiAlIGZubGluZSkKLQotICAgIGRlZiBfbG9nKHNlbGYsICphcmdzKToKLSAgICAgICAgc2VsZi5f
bG9nX291dHB1dC5hcHBlbmQoJyAnLmpvaW4oKHN0cih4KSBmb3IgeCBpbiBhcmdzKSkpCi0KLSAg
ICBAcHJvcGVydHkKLSAgICBkZWYgX2xvZ190ZXh0KHNlbGYpOgotICAgICAgICByZXR1cm4gJ1xu
Jy5qb2luKHNlbGYuX2xvZ19vdXRwdXQpCi0KLSAgICBkZWYgZm5tYXRjaF9saW5lcyhzZWxmLCBs
aW5lczIpOgotICAgICAgICAiIiJTZWFyY2ggY2FwdHVyZWQgdGV4dCBmb3IgbWF0Y2hpbmcgbGlu
ZXMgdXNpbmcgYGBmbm1hdGNoLmZubWF0Y2hgYC4KLQotICAgICAgICBUaGUgYXJndW1lbnQgaXMg
YSBsaXN0IG9mIGxpbmVzIHdoaWNoIGhhdmUgdG8gbWF0Y2ggYW5kIGNhbgotICAgICAgICB1c2Ug
Z2xvYiB3aWxkY2FyZHMuICBJZiB0aGV5IGRvIG5vdCBtYXRjaCBhIHB5dGVzdC5mYWlsKCkgaXMK
LSAgICAgICAgY2FsbGVkLiAgVGhlIG1hdGNoZXMgYW5kIG5vbi1tYXRjaGVzIGFyZSBhbHNvIHBy
aW50ZWQgb24KLSAgICAgICAgc3Rkb3V0LgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9t
YXRjaF9saW5lcyhsaW5lczIsIGZubWF0Y2gsICdmbm1hdGNoJykKLQotICAgIGRlZiByZV9tYXRj
aF9saW5lcyhzZWxmLCBsaW5lczIpOgotICAgICAgICAiIiJTZWFyY2ggY2FwdHVyZWQgdGV4dCBm
b3IgbWF0Y2hpbmcgbGluZXMgdXNpbmcgYGByZS5tYXRjaGBgLgotCi0gICAgICAgIFRoZSBhcmd1
bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBtYXRjaCB1c2luZyBgYHJlLm1h
dGNoYGAuCi0gICAgICAgIElmIHRoZXkgZG8gbm90IG1hdGNoIGEgcHl0ZXN0LmZhaWwoKSBpcyBj
YWxsZWQuCi0KLSAgICAgICAgVGhlIG1hdGNoZXMgYW5kIG5vbi1tYXRjaGVzIGFyZSBhbHNvIHBy
aW50ZWQgb24KLSAgICAgICAgc3Rkb3V0LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWF0
Y2hfbGluZXMobGluZXMyLCBsYW1iZGEgbmFtZSwgcGF0OiByZS5tYXRjaChwYXQsIG5hbWUpLCAn
cmUubWF0Y2gnKQotCi0gICAgZGVmIF9tYXRjaF9saW5lcyhzZWxmLCBsaW5lczIsIG1hdGNoX2Z1
bmMsIG1hdGNoX25pY2tuYW1lKToKLSAgICAgICAgIiIiVW5kZXJseWluZyBpbXBsZW1lbnRhdGlv
biBvZiBgYGZubWF0Y2hfbGluZXNgYCBhbmQgYGByZV9tYXRjaF9saW5lc2BgLgotCi0gICAgICAg
IDpwYXJhbSBsaXN0W3N0cl0gbGluZXMyOiBsaXN0IG9mIHN0cmluZyBwYXR0ZXJucyB0byBtYXRj
aC4gVGhlIGFjdHVhbCBmb3JtYXQgZGVwZW5kcyBvbgotICAgICAgICAgICAgYGBtYXRjaF9mdW5j
YGAuCi0gICAgICAgIDpwYXJhbSBtYXRjaF9mdW5jOiBhIGNhbGxhYmxlIGBgbWF0Y2hfZnVuYyhs
aW5lLCBwYXR0ZXJuKWBgIHdoZXJlIGxpbmUgaXMgdGhlIGNhcHR1cmVkCi0gICAgICAgICAgICBs
aW5lIGZyb20gc3Rkb3V0L3N0ZGVyciBhbmQgcGF0dGVybiBpcyB0aGUgbWF0Y2hpbmcgcGF0dGVy
bi4KLQotICAgICAgICA6cGFyYW0gc3RyIG1hdGNoX25pY2tuYW1lOiB0aGUgbmlja25hbWUgZm9y
IHRoZSBtYXRjaCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgbG9nZ2VkCi0gICAgICAgICAgICB0byBz
dGRvdXQgd2hlbiBhIG1hdGNoIG9jY3Vycy4KLSAgICAgICAgIiIiCi0gICAgICAgIGxpbmVzMiA9
IHNlbGYuX2dldGxpbmVzKGxpbmVzMikKLSAgICAgICAgbGluZXMxID0gc2VsZi5saW5lc1s6XQot
ICAgICAgICBuZXh0bGluZSA9IE5vbmUKLSAgICAgICAgZXh0cmFsaW5lcyA9IFtdCi0gICAgICAg
IF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczI6Ci0g
ICAgICAgICAgICBub21hdGNocHJpbnRlZCA9IEZhbHNlCi0gICAgICAgICAgICB3aGlsZSBsaW5l
czE6Ci0gICAgICAgICAgICAgICAgbmV4dGxpbmUgPSBsaW5lczEucG9wKDApCi0gICAgICAgICAg
ICAgICAgaWYgbGluZSA9PSBuZXh0bGluZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
KCJleGFjdCBtYXRjaDoiLCByZXByKGxpbmUpKQotICAgICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgICAgIGVsaWYgbWF0Y2hfZnVuYyhuZXh0bGluZSwgbGluZSk6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZygiJXM6IiAlIG1hdGNoX25pY2tuYW1lLCByZXByKGxpbmUp
KQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2coIiAgIHdpdGg6IiwgcmVwcihuZXh0bGlu
ZSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IG5vbWF0Y2hwcmludGVkOgotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nKCJub21hdGNoOiIsIHJlcHIobGluZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub21hdGNocHJpbnRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nKCIgICAgYW5kOiIsIHJlcHIobmV4dGxpbmUpKQotICAgICAgICAgICAgICAgIGV4dHJh
bGluZXMuYXBwZW5kKG5leHRsaW5lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2coInJlbWFpbnMgdW5tYXRjaGVkOiAlciIgJSAobGluZSwpKQotICAgICAgICAg
ICAgICAgIHB5dGVzdC5mYWlsKHNlbGYuX2xvZ190ZXh0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9weXRob24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5dGhvbi5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUwMTcxYTllOWM5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRob24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTc1
ICswLDAgQEAKLSIiIiBQeXRob24gdGVzdCBkaXNjb3ZlcnksIHNldHVwIGFuZCBydW4gb2YgdGVz
dCBmdW5jdGlvbnMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgZm5tYXRjaAotaW1wb3J0IGluc3Bl
Y3QKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgd2Fy
bmluZ3MKLWZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAotZnJvbSBpdGVydG9vbHMgaW1wb3J0
IGNvdW50Ci0KLQotaW1wb3J0IHB5Ci1pbXBvcnQgc2l4Ci1mcm9tIF9weXRlc3QubWFyayBpbXBv
cnQgTWFya2VyRXJyb3IKLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCi0KLWlt
cG9ydCBfcHl0ZXN0Ci1pbXBvcnQgcGx1Z2d5Ci1mcm9tIF9weXRlc3QgaW1wb3J0IGZpeHR1cmVz
Ci1mcm9tIF9weXRlc3QgaW1wb3J0IG1haW4KLWZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRl
ZAotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgKAotICAgIGlzY2xhc3MsIGlzZnVuY3Rpb24s
IGlzX2dlbmVyYXRvciwgYXNjaWlfZXNjYXBlZCwKLSAgICBSRUdFWF9UWVBFLCBTVFJJTkdfVFlQ
RVMsIE5vbmVUeXBlLCBOT1RTRVQsCi0gICAgZ2V0X3JlYWxfZnVuYywgZ2V0ZnNsaW5lbm8sIHNh
ZmVfZ2V0YXR0ciwKLSAgICBzYWZlX3N0ciwgZ2V0bG9jYXRpb24sIGVudW0sCi0pCi1mcm9tIF9w
eXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwKLWZyb20gX3B5dGVzdC5tYXJrIGltcG9ydCB0cmFu
c2Zlcl9tYXJrZXJzCi0KLWN1dGRpcjEgPSBweS5wYXRoLmxvY2FsKHBsdWdneS5fX2ZpbGVfXy5y
c3RyaXAoIm9jIikpCi1jdXRkaXIyID0gcHkucGF0aC5sb2NhbChfcHl0ZXN0Ll9fZmlsZV9fKS5k
aXJwYXRoKCkKLWN1dGRpcjMgPSBweS5wYXRoLmxvY2FsKHB5Ll9fZmlsZV9fKS5kaXJwYXRoKCkK
LQotCi1kZWYgZmlsdGVyX3RyYWNlYmFjayhlbnRyeSk6Ci0gICAgIiIiUmV0dXJuIFRydWUgaWYg
YSBUcmFjZWJhY2tFbnRyeSBpbnN0YW5jZSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRyYWNlYmFj
a3M6Ci0gICAgKiBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSAobm8gY29kZSB0byBzaG93IHVw
IGZvciBpdCk7Ci0gICAgKiBpbnRlcm5hbCB0cmFjZWJhY2sgZnJvbSBweXRlc3Qgb3IgaXRzIGlu
dGVybmFsIGxpYnJhcmllcywgcHkgYW5kIHBsdWdneS4KLSAgICAiIiIKLSAgICAjIGVudHJ5LnBh
dGggbWlnaHQgc29tZXRpbWVzIHJldHVybiBhIHN0ciBvYmplY3Qgd2hlbiB0aGUgZW50cnkKLSAg
ICAjIHBvaW50cyB0byBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZQotICAgICMgc2VlIGh0dHBz
Oi8vYml0YnVja2V0Lm9yZy9weXRlc3QtZGV2L3B5L2lzc3Vlcy83MQotICAgIHJhd19maWxlbmFt
ZSA9IGVudHJ5LmZyYW1lLmNvZGUucmF3LmNvX2ZpbGVuYW1lCi0gICAgaXNfZ2VuZXJhdGVkID0g
JzwnIGluIHJhd19maWxlbmFtZSBhbmQgJz4nIGluIHJhd19maWxlbmFtZQotICAgIGlmIGlzX2dl
bmVyYXRlZDoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgIyBlbnRyeS5wYXRoIG1pZ2h0IHBv
aW50IHRvIGFuIGluZXhpc3RpbmcgZmlsZSwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsCi0gICAgIyBh
bHNzbyByZXR1cm4gYSBzdHIgb2JqZWN0LiBzZWUgIzExMzMKLSAgICBwID0gcHkucGF0aC5sb2Nh
bChlbnRyeS5wYXRoKQotICAgIHJldHVybiBwICE9IGN1dGRpcjEgYW5kIG5vdCBwLnJlbHRvKGN1
dGRpcjIpIGFuZCBub3QgcC5yZWx0byhjdXRkaXIzKQotCi0KLWRlZiBweW9ial9wcm9wZXJ0eShu
YW1lKToKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICBub2RlID0gc2VsZi5nZXRwYXJlbnQo
Z2V0YXR0cihfX2ltcG9ydF9fKCdweXRlc3QnKSwgbmFtZSkpCi0gICAgICAgIGlmIG5vZGUgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS5vYmoKLSAgICBkb2MgPSAicHl0aG9u
ICVzIG9iamVjdCB0aGlzIG5vZGUgd2FzIGNvbGxlY3RlZCBmcm9tIChjYW4gYmUgTm9uZSkuIiAl
ICgKLSAgICAgICAgICBuYW1lLmxvd2VyKCksKQotICAgIHJldHVybiBwcm9wZXJ0eShnZXQsIE5v
bmUsIE5vbmUsIGRvYykKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdy
b3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0t
Zml4dHVyZXMnLCAnLS1mdW5jYXJncycsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlc3Q9InNob3dmaXh0dXJlcyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgIGhlbHA9InNob3cgYXZhaWxhYmxlIGZpeHR1cmVzLCBzb3J0ZWQgYnkgcGx1Z2lu
IGFwcGVhcmFuY2UiKQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgJy0tZml4dHVyZXMt
cGVyLXRlc3QnLAotICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICBkZXN0PSJz
aG93X2ZpeHR1cmVzX3Blcl90ZXN0IiwKLSAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
aGVscD0ic2hvdyBmaXh0dXJlcyBwZXIgdGVzdCIsCi0gICAgKQotICAgIHBhcnNlci5hZGRpbmko
InVzZWZpeHR1cmVzIiwgdHlwZT0iYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAg
ICBoZWxwPSJsaXN0IG9mIGRlZmF1bHQgZml4dHVyZXMgdG8gYmUgdXNlZCB3aXRoIHRoaXMgcHJv
amVjdCIpCi0gICAgcGFyc2VyLmFkZGluaSgicHl0aG9uX2ZpbGVzIiwgdHlwZT0iYXJncyIsCi0g
ICAgICAgICAgICAgICAgICBkZWZhdWx0PVsndGVzdF8qLnB5JywgJypfdGVzdC5weSddLAotICAg
ICAgICAgICAgICAgICAgaGVscD0iZ2xvYi1zdHlsZSBmaWxlIHBhdHRlcm5zIGZvciBQeXRob24g
dGVzdCBtb2R1bGUgZGlzY292ZXJ5IikKLSAgICBwYXJzZXIuYWRkaW5pKCJweXRob25fY2xhc3Nl
cyIsIHR5cGU9ImFyZ3MiLCBkZWZhdWx0PVsiVGVzdCIsIF0sCi0gICAgICAgICAgICAgICAgICBo
ZWxwPSJwcmVmaXhlcyBvciBnbG9iIG5hbWVzIGZvciBQeXRob24gdGVzdCBjbGFzcyBkaXNjb3Zl
cnkiKQotICAgIHBhcnNlci5hZGRpbmkoInB5dGhvbl9mdW5jdGlvbnMiLCB0eXBlPSJhcmdzIiwg
ZGVmYXVsdD1bInRlc3QiLCBdLAotICAgICAgICAgICAgICAgICAgaGVscD0icHJlZml4ZXMgb3Ig
Z2xvYiBuYW1lcyBmb3IgUHl0aG9uIHRlc3QgZnVuY3Rpb24gYW5kICIKLSAgICAgICAgICAgICAg
ICAgICJtZXRob2QgZGlzY292ZXJ5IikKLQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1pbXBvcnQt
bW9kZSIsIGRlZmF1bHQ9InByZXBlbmQiLAotICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsi
cHJlcGVuZCIsICJhcHBlbmQiXSwgZGVzdD0iaW1wb3J0bW9kZSIsCi0gICAgICAgICAgICAgICAg
ICAgIGhlbHA9InByZXBlbmQvYXBwZW5kIHRvIHN5cy5wYXRoIHdoZW4gaW1wb3J0aW5nIHRlc3Qg
bW9kdWxlcywgIgotICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCBpcyB0byBwcmVwZW5kLiIp
Ci0KLQotZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0
aW9uLnNob3dmaXh0dXJlczoKLSAgICAgICAgc2hvd2ZpeHR1cmVzKGNvbmZpZykKLSAgICAgICAg
cmV0dXJuIDAKLSAgICBpZiBjb25maWcub3B0aW9uLnNob3dfZml4dHVyZXNfcGVyX3Rlc3Q6Ci0g
ICAgICAgIHNob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29uZmlnKQotICAgICAgICByZXR1cm4gMAot
Ci0KLWRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgotICAgICMgdGhvc2UgYWx0
ZXJuYXRpdmUgc3BlbGxpbmdzIGFyZSBjb21tb24gLSByYWlzZSBhIHNwZWNpZmljIGVycm9yIHRv
IGFsZXJ0Ci0gICAgIyB0aGUgdXNlcgotICAgIGFsdF9zcGVsbGluZ3MgPSBbJ3BhcmFtZXRlcml6
ZScsICdwYXJhbWV0cmlzZScsICdwYXJhbWV0ZXJpc2UnXQotICAgIGZvciBhdHRyIGluIGFsdF9z
cGVsbGluZ3M6Ci0gICAgICAgIGlmIGhhc2F0dHIobWV0YWZ1bmMuZnVuY3Rpb24sIGF0dHIpOgot
ICAgICAgICAgICAgbXNnID0gInswfSBoYXMgJ3sxfScsIHNwZWxsaW5nIHNob3VsZCBiZSAncGFy
YW1ldHJpemUnIgotICAgICAgICAgICAgcmFpc2UgTWFya2VyRXJyb3IobXNnLmZvcm1hdChtZXRh
ZnVuYy5mdW5jdGlvbi5fX25hbWVfXywgYXR0cikpCi0gICAgdHJ5OgotICAgICAgICBtYXJrZXJz
ID0gbWV0YWZ1bmMuZnVuY3Rpb24ucGFyYW1ldHJpemUKLSAgICBleGNlcHQgQXR0cmlidXRlRXJy
b3I6Ci0gICAgICAgIHJldHVybgotICAgIGZvciBtYXJrZXIgaW4gbWFya2VyczoKLSAgICAgICAg
bWV0YWZ1bmMucGFyYW1ldHJpemUoKm1hcmtlci5hcmdzLCAqKm1hcmtlci5rd2FyZ3MpCi0KLQot
ZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBjb25maWcuYWRkaW5pdmFsdWVfbGlu
ZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRyaXplKGFy
Z25hbWVzLCBhcmd2YWx1ZXMpOiBjYWxsIGEgdGVzdCBmdW5jdGlvbiBtdWx0aXBsZSAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzIHBhc3NpbmcgaW4gZGlmZmVyZW50IGFyZ3Vt
ZW50cyBpbiB0dXJuLiBhcmd2YWx1ZXMgZ2VuZXJhbGx5ICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibmVlZHMgdG8gYmUgYSBsaXN0IG9mIHZhbHVlcyBpZiBhcmduYW1lcyBzcGVjaWZp
ZXMgb25seSBvbmUgbmFtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgbGlz
dCBvZiB0dXBsZXMgb2YgdmFsdWVzIGlmIGFyZ25hbWVzIHNwZWNpZmllcyBtdWx0aXBsZSBuYW1l
cy4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlOiBAcGFyYW1ldHJpemUo
J2FyZzEnLCBbMSwyXSkgd291bGQgbGVhZCB0byB0d28gY2FsbHMgb2YgdGhlICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVjb3JhdGVkIHRlc3QgZnVuY3Rpb24sIG9uZSB3aXRoIGFy
ZzE9MSBhbmQgYW5vdGhlciB3aXRoIGFyZzE9Mi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvcGFyYW1ldHJpemUuaHRtbCBmb3IgbW9y
ZSBpbmZvIGFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4YW1wbGVzLiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUo
Im1hcmtlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VmaXh0dXJlcyhmaXh0
dXJlbmFtZTEsIGZpeHR1cmVuYW1lMiwgLi4uKTogbWFyayB0ZXN0cyBhcyBuZWVkaW5nICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIG9mIHRoZSBzcGVjaWZpZWQgZml4dHVyZXMu
IHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZml4dHVyZS5odG1sI3VzZWZpeHR1cmVzICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KLQotQGhvb2tpbXBsKHRyeWxhc3Q9VHJ1
ZSkKLWRlZiBweXRlc3RfcHlmdW5jX2NhbGwocHlmdW5jaXRlbSk6Ci0gICAgdGVzdGZ1bmN0aW9u
ID0gcHlmdW5jaXRlbS5vYmoKLSAgICBpZiBweWZ1bmNpdGVtLl9pc3lpZWxkZWRmdW5jdGlvbigp
OgotICAgICAgICB0ZXN0ZnVuY3Rpb24oKnB5ZnVuY2l0ZW0uX2FyZ3MpCi0gICAgZWxzZToKLSAg
ICAgICAgZnVuY2FyZ3MgPSBweWZ1bmNpdGVtLmZ1bmNhcmdzCi0gICAgICAgIHRlc3RhcmdzID0g
e30KLSAgICAgICAgZm9yIGFyZyBpbiBweWZ1bmNpdGVtLl9maXh0dXJlaW5mby5hcmduYW1lczoK
LSAgICAgICAgICAgIHRlc3RhcmdzW2FyZ10gPSBmdW5jYXJnc1thcmddCi0gICAgICAgIHRlc3Rm
dW5jdGlvbigqKnRlc3RhcmdzKQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHB5dGVzdF9jb2xs
ZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKLSAgICBleHQgPSBwYXRoLmV4dAotICAgIGlmIGV4dCA9
PSAiLnB5IjoKLSAgICAgICAgaWYgbm90IHBhcmVudC5zZXNzaW9uLmlzaW5pdHBhdGgocGF0aCk6
Ci0gICAgICAgICAgICBmb3IgcGF0IGluIHBhcmVudC5jb25maWcuZ2V0aW5pKCdweXRob25fZmls
ZXMnKToKLSAgICAgICAgICAgICAgICBpZiBwYXRoLmZubWF0Y2gocGF0KToKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgIGlob29rID0gcGFyZW50LnNlc3Npb24uZ2V0aG9va3Byb3h5KHBhdGgpCi0gICAg
ICAgIHJldHVybiBpaG9vay5weXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aD1wYXRoLCBw
YXJlbnQ9cGFyZW50KQotCi0KLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aCwg
cGFyZW50KToKLSAgICByZXR1cm4gTW9kdWxlKHBhdGgsIHBhcmVudCkKLQotCi1AaG9va2ltcGwo
aG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3Rv
ciwgbmFtZSwgb2JqKToKLSAgICBvdXRjb21lID0geWllbGQKLSAgICByZXMgPSBvdXRjb21lLmdl
dF9yZXN1bHQoKQotICAgIGlmIHJlcyBpcyBub3QgTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAg
IyBub3RoaW5nIHdhcyBjb2xsZWN0ZWQgZWxzZXdoZXJlLCBsZXQncyBkbyBpdCBoZXJlCi0gICAg
aWYgaXNjbGFzcyhvYmopOgotICAgICAgICBpZiBjb2xsZWN0b3IuaXN0ZXN0Y2xhc3Mob2JqLCBu
YW1lKToKLSAgICAgICAgICAgIENsYXNzID0gY29sbGVjdG9yLl9nZXRjdXN0b21jbGFzcygiQ2xh
c3MiKQotICAgICAgICAgICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQoQ2xhc3MobmFtZSwgcGFyZW50
PWNvbGxlY3RvcikpCi0gICAgZWxpZiBjb2xsZWN0b3IuaXN0ZXN0ZnVuY3Rpb24ob2JqLCBuYW1l
KToKLSAgICAgICAgIyBtb2NrIHNlZW1zIHRvIHN0b3JlIHVuYm91bmQgbWV0aG9kcyAoaXNzdWU0
NzMpLCBub3JtYWxpemUgaXQKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICJfX2Z1bmNfXyIs
IG9iaikKLSAgICAgICAgIyBXZSBuZWVkIHRvIHRyeSBhbmQgdW53cmFwIHRoZSBmdW5jdGlvbiBp
ZiBpdCdzIGEgZnVuY3Rvb2xzLnBhcnRpYWwKLSAgICAgICAgIyBvciBhIGZ1bnRvb2xzLndyYXBw
ZWQuCi0gICAgICAgICMgV2UgbXVzbid0IGlmIGl0J3MgYmVlbiB3cmFwcGVkIHdpdGggbW9jay5w
YXRjaCAocHl0aG9uIDIgb25seSkKLSAgICAgICAgaWYgbm90IChpc2Z1bmN0aW9uKG9iaikgb3Ig
aXNmdW5jdGlvbihnZXRfcmVhbF9mdW5jKG9iaikpKToKLSAgICAgICAgICAgIGNvbGxlY3Rvci53
YXJuKGNvZGU9IkMyIiwgbWVzc2FnZT0iY2Fubm90IGNvbGxlY3QgJXIgYmVjYXVzZSBpdCBpcyBu
b3QgYSBmdW5jdGlvbi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAlIG5hbWUsICkKLSAg
ICAgICAgZWxpZiBnZXRhdHRyKG9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICBp
ZiBpc19nZW5lcmF0b3Iob2JqKToKLSAgICAgICAgICAgICAgICByZXMgPSBHZW5lcmF0b3IobmFt
ZSwgcGFyZW50PWNvbGxlY3RvcikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cmVzID0gbGlzdChjb2xsZWN0b3IuX2dlbmZ1bmN0aW9ucyhuYW1lLCBvYmopKQotICAgICAgICAg
ICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQocmVzKQotCi0KLWRlZiBweXRlc3RfbWFrZV9wYXJhbWV0
cml6ZV9pZChjb25maWcsIHZhbCwgYXJnbmFtZT1Ob25lKToKLSAgICByZXR1cm4gTm9uZQotCi0K
LWNsYXNzIFB5b2JqQ29udGV4dChvYmplY3QpOgotICAgIG1vZHVsZSA9IHB5b2JqX3Byb3BlcnR5
KCJNb2R1bGUiKQotICAgIGNscyA9IHB5b2JqX3Byb3BlcnR5KCJDbGFzcyIpCi0gICAgaW5zdGFu
Y2UgPSBweW9ial9wcm9wZXJ0eSgiSW5zdGFuY2UiKQotCi0KLWNsYXNzIFB5b2JqTWl4aW4oUHlv
YmpDb250ZXh0KToKLSAgICBkZWYgb2JqKCk6Ci0gICAgICAgIGRlZiBmZ2V0KHNlbGYpOgotICAg
ICAgICAgICAgb2JqID0gZ2V0YXR0cihzZWxmLCAnX29iaicsIE5vbmUpCi0gICAgICAgICAgICBp
ZiBvYmogaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9vYmogPSBvYmogPSBzZWxmLl9n
ZXRvYmooKQotICAgICAgICAgICAgcmV0dXJuIG9iagotCi0gICAgICAgIGRlZiBmc2V0KHNlbGYs
IHZhbHVlKToKLSAgICAgICAgICAgIHNlbGYuX29iaiA9IHZhbHVlCi0KLSAgICAgICAgcmV0dXJu
IHByb3BlcnR5KGZnZXQsIGZzZXQsIE5vbmUsICJ1bmRlcmx5aW5nIHB5dGhvbiBvYmplY3QiKQot
Ci0gICAgb2JqID0gb2JqKCkKLQotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAgICByZXR1
cm4gZ2V0YXR0cihzZWxmLnBhcmVudC5vYmosIHNlbGYubmFtZSkKLQotICAgIGRlZiBnZXRtb2Rw
YXRoKHNlbGYsIHN0b3BhdG1vZHVsZT1UcnVlLCBpbmNsdWRlbW9kdWxlPUZhbHNlKToKLSAgICAg
ICAgIiIiIHJldHVybiBweXRob24gcGF0aCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmluZyBtb2R1
bGUuICIiIgotICAgICAgICBjaGFpbiA9IHNlbGYubGlzdGNoYWluKCkKLSAgICAgICAgY2hhaW4u
cmV2ZXJzZSgpCi0gICAgICAgIHBhcnRzID0gW10KLSAgICAgICAgZm9yIG5vZGUgaW4gY2hhaW46
Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIEluc3RhbmNlKToKLSAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgbmFtZSA9IG5vZGUubmFtZQotICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShub2RlLCBNb2R1bGUpOgotICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5w
YXRoLnNwbGl0ZXh0KG5hbWUpWzBdCi0gICAgICAgICAgICAgICAgaWYgc3RvcGF0bW9kdWxlOgot
ICAgICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlbW9kdWxlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFydHMuYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICBwYXJ0cy5hcHBlbmQobmFtZSkKLSAgICAgICAgcGFydHMucmV2ZXJzZSgpCi0gICAg
ICAgIHMgPSAiLiIuam9pbihwYXJ0cykKLSAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgiLlsiLCAi
WyIpCi0KLSAgICBkZWYgX2dldGZzbGluZW5vKHNlbGYpOgotICAgICAgICByZXR1cm4gZ2V0ZnNs
aW5lbm8oc2VsZi5vYmopCi0KLSAgICBkZWYgcmVwb3J0aW5mbyhzZWxmKToKLSAgICAgICAgIyBY
WFggY2FjaGluZz8KLSAgICAgICAgb2JqID0gc2VsZi5vYmoKLSAgICAgICAgY29tcGF0X2NvX2Zp
cnN0bGluZW5vID0gZ2V0YXR0cihvYmosICdjb21wYXRfY29fZmlyc3RsaW5lbm8nLCBOb25lKQot
ICAgICAgICBpZiBpc2luc3RhbmNlKGNvbXBhdF9jb19maXJzdGxpbmVubywgaW50KToKLSAgICAg
ICAgICAgICMgbm9zZSBjb21wYXRpYmlsaXR5Ci0gICAgICAgICAgICBmc3BhdGggPSBzeXMubW9k
dWxlc1tvYmouX19tb2R1bGVfX10uX19maWxlX18KLSAgICAgICAgICAgIGlmIGZzcGF0aC5lbmRz
d2l0aCgiLnB5YyIpOgotICAgICAgICAgICAgICAgIGZzcGF0aCA9IGZzcGF0aFs6LTFdCi0gICAg
ICAgICAgICBsaW5lbm8gPSBjb21wYXRfY29fZmlyc3RsaW5lbm8KLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGZzcGF0aCwgbGluZW5vID0gZ2V0ZnNsaW5lbm8ob2JqKQotICAgICAgICBtb2Rw
YXRoID0gc2VsZi5nZXRtb2RwYXRoKCkKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZW5v
LCBpbnQpCi0gICAgICAgIHJldHVybiBmc3BhdGgsIGxpbmVubywgbW9kcGF0aAotCi0KLWNsYXNz
IFB5Q29sbGVjdG9yKFB5b2JqTWl4aW4sIG1haW4uQ29sbGVjdG9yKToKLQotICAgIGRlZiBmdW5j
bmFtZWZpbHRlcihzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoZXNfcHJl
Zml4X29yX2dsb2Jfb3B0aW9uKCdweXRob25fZnVuY3Rpb25zJywgbmFtZSkKLQotICAgIGRlZiBp
c25vc2V0ZXN0KHNlbGYsIG9iaik6Ci0gICAgICAgICIiIiBMb29rIGZvciB0aGUgX190ZXN0X18g
YXR0cmlidXRlLCB3aGljaCBpcyBhcHBsaWVkIGJ5IHRoZQotICAgICAgICBAbm9zZS50b29scy5p
c3Rlc3QgZGVjb3JhdG9yCi0gICAgICAgICIiIgotICAgICAgICAjIFdlIGV4cGxpY2l0bHkgY2hl
Y2sgZm9yICJpcyBUcnVlIiBoZXJlIHRvIG5vdCBtaXN0YWtlbmx5IHRyZWF0Ci0gICAgICAgICMg
Y2xhc3NlcyB3aXRoIGEgY3VzdG9tIF9fZ2V0YXR0cl9fIHJldHVybmluZyBzb21ldGhpbmcgdHJ1
dGh5IChsaWtlIGEKLSAgICAgICAgIyBmdW5jdGlvbikgYXMgdGVzdCBjbGFzc2VzLgotICAgICAg
ICByZXR1cm4gc2FmZV9nZXRhdHRyKG9iaiwgJ19fdGVzdF9fJywgRmFsc2UpIGlzIFRydWUKLQot
ICAgIGRlZiBjbGFzc25hbWVmaWx0ZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9tYXRjaGVzX3ByZWZpeF9vcl9nbG9iX29wdGlvbigncHl0aG9uX2NsYXNzZXMnLCBuYW1lKQot
Ci0gICAgZGVmIGlzdGVzdGZ1bmN0aW9uKHNlbGYsIG9iaiwgbmFtZSk6Ci0gICAgICAgIGlmIHNl
bGYuZnVuY25hbWVmaWx0ZXIobmFtZSkgb3Igc2VsZi5pc25vc2V0ZXN0KG9iaik6Ci0gICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc3RhdGljbWV0aG9kKToKLSAgICAgICAgICAgICAgICAj
IHN0YXRpYyBtZXRob2RzIG5lZWQgdG8gYmUgdW53cmFwcGVkCi0gICAgICAgICAgICAgICAgb2Jq
ID0gc2FmZV9nZXRhdHRyKG9iaiwgJ19fZnVuY19fJywgRmFsc2UpCi0gICAgICAgICAgICAgICAg
aWYgb2JqIGlzIEZhbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiAyLjYgd3JhcHMg
aW4gYSBkaWZmZXJlbnQgd2F5IHRoYXQgd2Ugd29uJ3QgdHJ5IHRvIGhhbmRsZQotICAgICAgICAg
ICAgICAgICAgICBtc2cgPSAiY2Fubm90IGNvbGxlY3Qgc3RhdGljIG1ldGhvZCAlciBiZWNhdXNl
ICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaXQgaXMgbm90IGEgZnVuY3Rpb24gKGFs
d2F5cyB0aGUgY2FzZSBpbiBQeXRob24gMi42KSIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53
YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgY29kZT0iQzIiLCBtZXNzYWdlPW1zZyAlIG5h
bWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJu
ICgKLSAgICAgICAgICAgICAgICBzYWZlX2dldGF0dHIob2JqLCAiX19jYWxsX18iLCBGYWxzZSkg
YW5kIGZpeHR1cmVzLmdldGZpeHR1cmVtYXJrZXIob2JqKSBpcyBOb25lCi0gICAgICAgICAgICAp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBpc3Rl
c3RjbGFzcyhzZWxmLCBvYmosIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5jbGFzc25hbWVm
aWx0ZXIobmFtZSkgb3Igc2VsZi5pc25vc2V0ZXN0KG9iaikKLQotICAgIGRlZiBfbWF0Y2hlc19w
cmVmaXhfb3JfZ2xvYl9vcHRpb24oc2VsZiwgb3B0aW9uX25hbWUsIG5hbWUpOgotICAgICAgICAi
IiIKLSAgICAgICAgY2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1lIG1hdGNoZXMgdGhlIHByZWZpeCBv
ciBnbG9iLXBhdHRlcm4gZGVmaW5lZAotICAgICAgICBpbiBpbmkgY29uZmlndXJhdGlvbi4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5jb25maWcuZ2V0aW5pKG9wdGlv
bl9uYW1lKToKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aChvcHRpb24pOgotICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAjIGNoZWNrIHRoYXQgbmFtZSBsb29r
cyBsaWtlIGEgZ2xvYi1zdHJpbmcgYmVmb3JlIGNhbGxpbmcgZm5tYXRjaAotICAgICAgICAgICAg
IyBiZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZvciBldmVyeSBuYW1lIGluIGVhY2ggY29sbGVjdGVk
IG1vZHVsZSwKLSAgICAgICAgICAgICMgYW5kIGZubWF0Y2ggaXMgc29tZXdoYXQgZXhwZW5zaXZl
IHRvIGNhbGwKLSAgICAgICAgICAgIGVsaWYgKCcqJyBpbiBvcHRpb24gb3IgJz8nIGluIG9wdGlv
biBvciAnWycgaW4gb3B0aW9uKSBhbmQgXAotICAgICAgICAgICAgICAgICAgICBmbm1hdGNoLmZu
bWF0Y2gobmFtZSwgb3B0aW9uKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAg
ICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBpZiBub3Qg
Z2V0YXR0cihzZWxmLm9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4g
W10KLQotICAgICAgICAjIE5CLiB3ZSBhdm9pZCByYW5kb20gZ2V0YXR0cnMgYW5kIHBlZWsgaW4g
dGhlIF9fZGljdF9fIGluc3RlYWQKLSAgICAgICAgIyAoWFhYIG9yaWdpbmFsbHkgaW50cm9kdWNl
ZCBmcm9tIGEgUHlQeSBuZWVkLCBzdGlsbCB0cnVlPykKLSAgICAgICAgZGljdHMgPSBbZ2V0YXR0
cihzZWxmLm9iaiwgJ19fZGljdF9fJywge30pXQotICAgICAgICBmb3IgYmFzZWNscyBpbiBpbnNw
ZWN0LmdldG1ybyhzZWxmLm9iai5fX2NsYXNzX18pOgotICAgICAgICAgICAgZGljdHMuYXBwZW5k
KGJhc2VjbHMuX19kaWN0X18pCi0gICAgICAgIHNlZW4gPSB7fQotICAgICAgICB2YWx1ZXMgPSBb
XQotICAgICAgICBmb3IgZGljIGluIGRpY3RzOgotICAgICAgICAgICAgZm9yIG5hbWUsIG9iaiBp
biBsaXN0KGRpYy5pdGVtcygpKToKLSAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHNlZW46Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VlbltuYW1lXSA9
IFRydWUKLSAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9tYWtlaXRlbShuYW1lLCBvYmopCi0g
ICAgICAgICAgICAgICAgaWYgcmVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVzLCBsaXN0KToKLSAgICAg
ICAgICAgICAgICAgICAgcmVzID0gW3Jlc10KLSAgICAgICAgICAgICAgICB2YWx1ZXMuZXh0ZW5k
KHJlcykKLSAgICAgICAgdmFsdWVzLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnJlcG9ydGlu
Zm8oKVs6Ml0pCi0gICAgICAgIHJldHVybiB2YWx1ZXMKLQotICAgIGRlZiBtYWtlaXRlbShzZWxm
LCBuYW1lLCBvYmopOgotICAgICAgICB3YXJuaW5ncy53YXJuKGRlcHJlY2F0ZWQuQ09MTEVDVE9S
X01BS0VJVEVNLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHNlbGYuX21ha2VpdGVtKG5hbWUsIG9i
aikKLQotICAgIGRlZiBfbWFrZWl0ZW0oc2VsZiwgbmFtZSwgb2JqKToKLSAgICAgICAgIyBhc3Nl
cnQgc2VsZi5paG9vay5mc3BhdGggPT0gc2VsZi5mc3BhdGgsIHNlbGYKLSAgICAgICAgcmV0dXJu
IHNlbGYuaWhvb2sucHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbSgKLSAgICAgICAgICAgIGNvbGxl
Y3Rvcj1zZWxmLCBuYW1lPW5hbWUsIG9iaj1vYmopCi0KLSAgICBkZWYgX2dlbmZ1bmN0aW9ucyhz
ZWxmLCBuYW1lLCBmdW5jb2JqKToKLSAgICAgICAgbW9kdWxlID0gc2VsZi5nZXRwYXJlbnQoTW9k
dWxlKS5vYmoKLSAgICAgICAgY2xzY29sID0gc2VsZi5nZXRwYXJlbnQoQ2xhc3MpCi0gICAgICAg
IGNscyA9IGNsc2NvbCBhbmQgY2xzY29sLm9iaiBvciBOb25lCi0gICAgICAgIHRyYW5zZmVyX21h
cmtlcnMoZnVuY29iaiwgY2xzLCBtb2R1bGUpCi0gICAgICAgIGZtID0gc2VsZi5zZXNzaW9uLl9m
aXh0dXJlbWFuYWdlcgotICAgICAgICBmaXh0dXJlaW5mbyA9IGZtLmdldGZpeHR1cmVpbmZvKHNl
bGYsIGZ1bmNvYmosIGNscykKLSAgICAgICAgbWV0YWZ1bmMgPSBNZXRhZnVuYyhmdW5jb2JqLCBm
aXh0dXJlaW5mbywgc2VsZi5jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz
PWNscywgbW9kdWxlPW1vZHVsZSkKLSAgICAgICAgbWV0aG9kcyA9IFtdCi0gICAgICAgIGlmIGhh
c2F0dHIobW9kdWxlLCAicHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIik6Ci0gICAgICAgICAgICBtZXRo
b2RzLmFwcGVuZChtb2R1bGUucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKQotICAgICAgICBpZiBoYXNh
dHRyKGNscywgInB5dGVzdF9nZW5lcmF0ZV90ZXN0cyIpOgotICAgICAgICAgICAgbWV0aG9kcy5h
cHBlbmQoY2xzKCkucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKQotICAgICAgICBpZiBtZXRob2RzOgot
ICAgICAgICAgICAgc2VsZi5paG9vay5weXRlc3RfZ2VuZXJhdGVfdGVzdHMuY2FsbF9leHRyYSht
ZXRob2RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWN0KG1ldGFmdW5jPW1ldGFmdW5jKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuaWhvb2sucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jPW1ldGFmdW5jKQot
Ci0gICAgICAgIEZ1bmN0aW9uID0gc2VsZi5fZ2V0Y3VzdG9tY2xhc3MoIkZ1bmN0aW9uIikKLSAg
ICAgICAgaWYgbm90IG1ldGFmdW5jLl9jYWxsczoKLSAgICAgICAgICAgIHlpZWxkIEZ1bmN0aW9u
KG5hbWUsIHBhcmVudD1zZWxmLCBmaXh0dXJlaW5mbz1maXh0dXJlaW5mbykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICMgYWRkIGZ1bmNhcmdzKCkgYXMgZml4dHVyZWRlZnMgdG8gZml4dHVy
ZWluZm8uYXJnMmZpeHR1cmVkZWZzCi0gICAgICAgICAgICBmaXh0dXJlcy5hZGRfZnVuY2FyZ19w
c2V1ZG9fZml4dHVyZV9kZWYoc2VsZiwgbWV0YWZ1bmMsIGZtKQotCi0gICAgICAgICAgICBmb3Ig
Y2FsbHNwZWMgaW4gbWV0YWZ1bmMuX2NhbGxzOgotICAgICAgICAgICAgICAgIHN1Ym5hbWUgPSAi
JXNbJXNdIiAlIChuYW1lLCBjYWxsc3BlYy5pZCkKLSAgICAgICAgICAgICAgICB5aWVsZCBGdW5j
dGlvbihuYW1lPXN1Ym5hbWUsIHBhcmVudD1zZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxzcGVjPWNhbGxzcGVjLCBjYWxsb2JqPWZ1bmNvYmosCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZml4dHVyZWluZm89Zml4dHVyZWluZm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V5d29yZHM9e2NhbGxzcGVjLmlkOiBUcnVlfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbG5hbWU9bmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCi0KLQotY2xhc3MgTW9kdWxlKG1haW4uRmlsZSwgUHlDb2xsZWN0
b3IpOgotICAgICIiIiBDb2xsZWN0b3IgZm9yIHRlc3QgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAi
IiIKLQotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5faW1wb3J0
dGVzdG1vZHVsZSgpCi0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgc2VsZi5zZXNz
aW9uLl9maXh0dXJlbWFuYWdlci5wYXJzZWZhY3RvcmllcyhzZWxmKQotICAgICAgICByZXR1cm4g
c3VwZXIoTW9kdWxlLCBzZWxmKS5jb2xsZWN0KCkKLQotICAgIGRlZiBfaW1wb3J0dGVzdG1vZHVs
ZShzZWxmKToKLSAgICAgICAgIyB3ZSBhc3N1bWUgd2UgYXJlIG9ubHkgY2FsbGVkIG9uY2UgcGVy
IG1vZHVsZQotICAgICAgICBpbXBvcnRtb2RlID0gc2VsZi5jb25maWcuZ2V0b3B0aW9uKCItLWlt
cG9ydC1tb2RlIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kID0gc2VsZi5mc3BhdGgu
cHlpbXBvcnQoZW5zdXJlc3lzcGF0aD1pbXBvcnRtb2RlKQotICAgICAgICBleGNlcHQgU3ludGF4
RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkNvbGxlY3RFcnJvcigKLSAgICAgICAgICAg
ICAgICBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKS5nZXRyZXByKHN0eWxlPSJzaG9ydCIp
KQotICAgICAgICBleGNlcHQgc2VsZi5mc3BhdGguSW1wb3J0TWlzbWF0Y2hFcnJvcjoKLSAgICAg
ICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgcmFpc2Ugc2VsZi5Db2xs
ZWN0RXJyb3IoCi0gICAgICAgICAgICAgICAgImltcG9ydCBmaWxlIG1pc21hdGNoOlxuIgotICAg
ICAgICAgICAgICAgICJpbXBvcnRlZCBtb2R1bGUgJXIgaGFzIHRoaXMgX19maWxlX18gYXR0cmli
dXRlOlxuIgotICAgICAgICAgICAgICAgICIgICVzXG4iCi0gICAgICAgICAgICAgICAgIndoaWNo
IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgdGVzdCBmaWxlIHdlIHdhbnQgdG8gY29sbGVjdDpcbiIK
LSAgICAgICAgICAgICAgICAiICAlc1xuIgotICAgICAgICAgICAgICAgICJISU5UOiByZW1vdmUg
X19weWNhY2hlX18gLyAucHljIGZpbGVzIGFuZC9vciB1c2UgYSAiCi0gICAgICAgICAgICAgICAg
InVuaXF1ZSBiYXNlbmFtZSBmb3IgeW91ciB0ZXN0IGZpbGUgbW9kdWxlcyIKLSAgICAgICAgICAg
ICAgICAlIGUuYXJncwotICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5m
bwotICAgICAgICAgICAgZXhjX2luZm8gPSBFeGNlcHRpb25JbmZvKCkKLSAgICAgICAgICAgIGlm
IHNlbGYuY29uZmlnLmdldG9wdGlvbigndmVyYm9zZScpIDwgMjoKLSAgICAgICAgICAgICAgICBl
eGNfaW5mby50cmFjZWJhY2sgPSBleGNfaW5mby50cmFjZWJhY2suZmlsdGVyKGZpbHRlcl90cmFj
ZWJhY2spCi0gICAgICAgICAgICBleGNfcmVwciA9IGV4Y19pbmZvLmdldHJlcHIoc3R5bGU9J3No
b3J0JykgaWYgZXhjX2luZm8udHJhY2ViYWNrIGVsc2UgZXhjX2luZm8uZXhjb25seSgpCi0gICAg
ICAgICAgICBmb3JtYXR0ZWRfdGIgPSBzYWZlX3N0cihleGNfcmVwcikKLSAgICAgICAgICAgIHJh
aXNlIHNlbGYuQ29sbGVjdEVycm9yKAotICAgICAgICAgICAgICAgICJJbXBvcnRFcnJvciB3aGls
ZSBpbXBvcnRpbmcgdGVzdCBtb2R1bGUgJ3tmc3BhdGh9Jy5cbiIKLSAgICAgICAgICAgICAgICAi
SGludDogbWFrZSBzdXJlIHlvdXIgdGVzdCBtb2R1bGVzL3BhY2thZ2VzIGhhdmUgdmFsaWQgUHl0
aG9uIG5hbWVzLlxuIgotICAgICAgICAgICAgICAgICJUcmFjZWJhY2s6XG4iCi0gICAgICAgICAg
ICAgICAgInt0cmFjZWJhY2t9Ii5mb3JtYXQoZnNwYXRoPXNlbGYuZnNwYXRoLCB0cmFjZWJhY2s9
Zm9ybWF0dGVkX3RiKQotICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgX3B5dGVzdC5ydW5u
ZXIuU2tpcHBlZCBhcyBlOgotICAgICAgICAgICAgaWYgZS5hbGxvd19tb2R1bGVfbGV2ZWw6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuQ29sbGVjdEVycm9y
KAotICAgICAgICAgICAgICAgICJVc2luZyBweXRlc3Quc2tpcCBvdXRzaWRlIG9mIGEgdGVzdCBp
cyBub3QgYWxsb3dlZC4gIgotICAgICAgICAgICAgICAgICJUbyBkZWNvcmF0ZSBhIHRlc3QgZnVu
Y3Rpb24sIHVzZSB0aGUgQHB5dGVzdC5tYXJrLnNraXAgIgotICAgICAgICAgICAgICAgICJvciBA
cHl0ZXN0Lm1hcmsuc2tpcGlmIGRlY29yYXRvcnMgaW5zdGVhZCwgYW5kIHRvIHNraXAgYSAiCi0g
ICAgICAgICAgICAgICAgIm1vZHVsZSB1c2UgYHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay57c2tp
cCxza2lwaWZ9LiIKLSAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5jb25maWcucGx1Z2lubWFu
YWdlci5jb25zaWRlcl9tb2R1bGUobW9kKQotICAgICAgICByZXR1cm4gbW9kCi0KLSAgICBkZWYg
c2V0dXAoc2VsZik6Ci0gICAgICAgIHNldHVwX21vZHVsZSA9IF9nZXRfeHVuaXRfc2V0dXBfdGVh
cmRvd24oc2VsZi5vYmosICJzZXRVcE1vZHVsZSIpCi0gICAgICAgIGlmIHNldHVwX21vZHVsZSBp
cyBOb25lOgotICAgICAgICAgICAgc2V0dXBfbW9kdWxlID0gX2dldF94dW5pdF9zZXR1cF90ZWFy
ZG93bihzZWxmLm9iaiwgInNldHVwX21vZHVsZSIpCi0gICAgICAgIGlmIHNldHVwX21vZHVsZSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHNldHVwX21vZHVsZSgpCi0KLSAgICAgICAgdGVhcmRv
d25fbW9kdWxlID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihzZWxmLm9iaiwgJ3RlYXJEb3du
TW9kdWxlJykKLSAgICAgICAgaWYgdGVhcmRvd25fbW9kdWxlIGlzIE5vbmU6Ci0gICAgICAgICAg
ICB0ZWFyZG93bl9tb2R1bGUgPSBfZ2V0X3h1bml0X3NldHVwX3RlYXJkb3duKHNlbGYub2JqLCAn
dGVhcmRvd25fbW9kdWxlJykKLSAgICAgICAgaWYgdGVhcmRvd25fbW9kdWxlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5hZGRmaW5hbGl6ZXIodGVhcmRvd25fbW9kdWxlKQotCi0KLWRl
ZiBfZ2V0X3h1bml0X3NldHVwX3RlYXJkb3duKGhvbGRlciwgYXR0cl9uYW1lLCBwYXJhbV9vYmo9
Tm9uZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgY2FsbGFibGUgdG8gcGVyZm9ybSB4dW5pdC1z
dHlsZSBzZXR1cCBvciB0ZWFyZG93biBpZgotICAgIHRoZSBmdW5jdGlvbiBleGlzdHMgaW4gdGhl
IGBgaG9sZGVyYGAgb2JqZWN0LgotICAgIFRoZSBgYHBhcmFtX29iamBgIHBhcmFtZXRlciBpcyB0
aGUgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbgotICAgIHdo
ZW4gdGhlIGNhbGxhYmxlIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgZGVmYXVsdHMgdG8g
dGhlIGBgaG9sZGVyYGAgb2JqZWN0LgotICAgIFJldHVybiBgYE5vbmVgYCBpZiBhIHN1aXRhYmxl
IGNhbGxhYmxlIGlzIG5vdCBmb3VuZC4KLSAgICAiIiIKLSAgICBwYXJhbV9vYmogPSBwYXJhbV9v
YmogaWYgcGFyYW1fb2JqIGlzIG5vdCBOb25lIGVsc2UgaG9sZGVyCi0gICAgcmVzdWx0ID0gX2dl
dF94dW5pdF9mdW5jKGhvbGRlciwgYXR0cl9uYW1lKQotICAgIGlmIHJlc3VsdCBpcyBub3QgTm9u
ZToKLSAgICAgICAgYXJnX2NvdW50ID0gcmVzdWx0Ll9fY29kZV9fLmNvX2FyZ2NvdW50Ci0gICAg
ICAgIGlmIGluc3BlY3QuaXNtZXRob2QocmVzdWx0KToKLSAgICAgICAgICAgIGFyZ19jb3VudCAt
PSAxCi0gICAgICAgIGlmIGFyZ19jb3VudDoKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGE6IHJl
c3VsdChwYXJhbV9vYmopCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
Ci0KLQotZGVmIF9nZXRfeHVuaXRfZnVuYyhvYmosIG5hbWUpOgotICAgICIiIlJldHVybiB0aGUg
YXR0cmlidXRlIGZyb20gdGhlIGdpdmVuIG9iamVjdCB0byBiZSB1c2VkIGFzIGEgc2V0dXAvdGVh
cmRvd24KLSAgICB4dW5pdC1zdHlsZSBmdW5jdGlvbiwgYnV0IG9ubHkgaWYgbm90IG1hcmtlZCBh
cyBhIGZpeHR1cmUgdG8KLSAgICBhdm9pZCBjYWxsaW5nIGl0IHR3aWNlLgotICAgICIiIgotICAg
IG1ldGggPSBnZXRhdHRyKG9iaiwgbmFtZSwgTm9uZSkKLSAgICBpZiBmaXh0dXJlcy5nZXRmaXh0
dXJlbWFya2VyKG1ldGgpIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBtZXRoCi0KLQotY2xhc3Mg
Q2xhc3MoUHlDb2xsZWN0b3IpOgotICAgICIiIiBDb2xsZWN0b3IgZm9yIHRlc3QgbWV0aG9kcy4g
IiIiCi0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgaWYgbm90IHNhZmVfZ2V0YXR0
cihzZWxmLm9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAg
ICAgICAgaWYgaGFzaW5pdChzZWxmLm9iaik6Ci0gICAgICAgICAgICBzZWxmLndhcm4oIkMxIiwg
ImNhbm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJXIgYmVjYXVzZSBpdCBoYXMgYSAiCi0gICAgICAg
ICAgICAgICAgICAgICAgIl9faW5pdF9fIGNvbnN0cnVjdG9yIiAlIHNlbGYub2JqLl9fbmFtZV9f
KQotICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIGVsaWYgaGFzbmV3KHNlbGYub2JqKToK
LSAgICAgICAgICAgIHNlbGYud2FybigiQzEiLCAiY2Fubm90IGNvbGxlY3QgdGVzdCBjbGFzcyAl
ciBiZWNhdXNlIGl0IGhhcyBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uZXdf
XyBjb25zdHJ1Y3RvciIgJSBzZWxmLm9iai5fX25hbWVfXykKLSAgICAgICAgICAgIHJldHVybiBb
XQotICAgICAgICByZXR1cm4gW3NlbGYuX2dldGN1c3RvbWNsYXNzKCJJbnN0YW5jZSIpKG5hbWU9
IigpIiwgcGFyZW50PXNlbGYpXQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBzZXR1
cF9jbGFzcyA9IF9nZXRfeHVuaXRfZnVuYyhzZWxmLm9iaiwgJ3NldHVwX2NsYXNzJykKLSAgICAg
ICAgaWYgc2V0dXBfY2xhc3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cF9jbGFzcyA9
IGdldGF0dHIoc2V0dXBfY2xhc3MsICdpbV9mdW5jJywgc2V0dXBfY2xhc3MpCi0gICAgICAgICAg
ICBzZXR1cF9jbGFzcyA9IGdldGF0dHIoc2V0dXBfY2xhc3MsICdfX2Z1bmNfXycsIHNldHVwX2Ns
YXNzKQotICAgICAgICAgICAgc2V0dXBfY2xhc3Moc2VsZi5vYmopCi0KLSAgICAgICAgZmluX2Ns
YXNzID0gZ2V0YXR0cihzZWxmLm9iaiwgJ3RlYXJkb3duX2NsYXNzJywgTm9uZSkKLSAgICAgICAg
aWYgZmluX2NsYXNzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmluX2NsYXNzID0gZ2V0YXR0
cihmaW5fY2xhc3MsICdpbV9mdW5jJywgZmluX2NsYXNzKQotICAgICAgICAgICAgZmluX2NsYXNz
ID0gZ2V0YXR0cihmaW5fY2xhc3MsICdfX2Z1bmNfXycsIGZpbl9jbGFzcykKLSAgICAgICAgICAg
IHNlbGYuYWRkZmluYWxpemVyKGxhbWJkYTogZmluX2NsYXNzKHNlbGYub2JqKSkKLQotCi1jbGFz
cyBJbnN0YW5jZShQeUNvbGxlY3Rvcik6Ci0gICAgZGVmIF9nZXRvYmooc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLnBhcmVudC5vYmooKQotCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIucGFyc2VmYWN0b3JpZXMoc2VsZikKLSAg
ICAgICAgcmV0dXJuIHN1cGVyKEluc3RhbmNlLCBzZWxmKS5jb2xsZWN0KCkKLQotICAgIGRlZiBu
ZXdpbnN0YW5jZShzZWxmKToKLSAgICAgICAgc2VsZi5vYmogPSBzZWxmLl9nZXRvYmooKQotICAg
ICAgICByZXR1cm4gc2VsZi5vYmoKLQotCi1jbGFzcyBGdW5jdGlvbk1peGluKFB5b2JqTWl4aW4p
OgotICAgICIiIiBtaXhpbiBmb3IgdGhlIGNvZGUgY29tbW9uIHRvIEZ1bmN0aW9uIGFuZCBHZW5l
cmF0b3IuCi0gICAgIiIiCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgICIiIiBwZXJm
b3JtIHNldHVwIGZvciB0aGlzIHRlc3QgZnVuY3Rpb24uICIiIgotICAgICAgICBpZiBoYXNhdHRy
KHNlbGYsICdfcHJlc2VydmVkcGFyZW50Jyk6Ci0gICAgICAgICAgICBvYmogPSBzZWxmLl9wcmVz
ZXJ2ZWRwYXJlbnQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYucGFyZW50LCBJbnN0YW5j
ZSk6Ci0gICAgICAgICAgICBvYmogPSBzZWxmLnBhcmVudC5uZXdpbnN0YW5jZSgpCi0gICAgICAg
ICAgICBzZWxmLm9iaiA9IHNlbGYuX2dldG9iaigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBvYmogPSBzZWxmLnBhcmVudC5vYmoKLSAgICAgICAgaWYgaW5zcGVjdC5pc21ldGhvZChzZWxm
Lm9iaik6Ci0gICAgICAgICAgICBzZXR1cF9uYW1lID0gJ3NldHVwX21ldGhvZCcKLSAgICAgICAg
ICAgIHRlYXJkb3duX25hbWUgPSAndGVhcmRvd25fbWV0aG9kJwotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgc2V0dXBfbmFtZSA9ICdzZXR1cF9mdW5jdGlvbicKLSAgICAgICAgICAgIHRlYXJk
b3duX25hbWUgPSAndGVhcmRvd25fZnVuY3Rpb24nCi0gICAgICAgIHNldHVwX2Z1bmNfb3JfbWV0
aG9kID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihvYmosIHNldHVwX25hbWUsIHBhcmFtX29i
aj1zZWxmLm9iaikKLSAgICAgICAgaWYgc2V0dXBfZnVuY19vcl9tZXRob2QgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBzZXR1cF9mdW5jX29yX21ldGhvZCgpCi0gICAgICAgIHRlYXJkb3duX2Z1
bmNfb3JfbWV0aG9kID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihvYmosIHRlYXJkb3duX25h
bWUsIHBhcmFtX29iaj1zZWxmLm9iaikKLSAgICAgICAgaWYgdGVhcmRvd25fZnVuY19vcl9tZXRo
b2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFkZGZpbmFsaXplcih0ZWFyZG93bl9m
dW5jX29yX21ldGhvZCkKLQotICAgIGRlZiBfcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbyk6
Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19vYmonKSBhbmQgbm90IHNlbGYuY29uZmlnLm9w
dGlvbi5mdWxsdHJhY2U6Ci0gICAgICAgICAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5Db2RlKGdl
dF9yZWFsX2Z1bmMoc2VsZi5vYmopKQotICAgICAgICAgICAgcGF0aCwgZmlyc3RsaW5lbm8gPSBj
b2RlLnBhdGgsIGNvZGUuZmlyc3RsaW5lbm8KLSAgICAgICAgICAgIHRyYWNlYmFjayA9IGV4Y2lu
Zm8udHJhY2ViYWNrCi0gICAgICAgICAgICBudHJhY2ViYWNrID0gdHJhY2ViYWNrLmN1dChwYXRo
PXBhdGgsIGZpcnN0bGluZW5vPWZpcnN0bGluZW5vKQotICAgICAgICAgICAgaWYgbnRyYWNlYmFj
ayA9PSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IG50cmFjZWJhY2su
Y3V0KHBhdGg9cGF0aCkKLSAgICAgICAgICAgICAgICBpZiBudHJhY2ViYWNrID09IHRyYWNlYmFj
azoKLSAgICAgICAgICAgICAgICAgICAgIyBudHJhY2ViYWNrID0gbnRyYWNlYmFjay5jdXQoZXhj
bHVkZXBhdGg9Y3V0ZGlyMikKLSAgICAgICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IG50cmFj
ZWJhY2suZmlsdGVyKGZpbHRlcl90cmFjZWJhY2spCi0gICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBudHJhY2ViYWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IHRyYWNl
YmFjawotCi0gICAgICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IG50cmFjZWJhY2suZmlsdGVy
KCkKLSAgICAgICAgICAgICMgaXNzdWUzNjQ6IG1hcmsgYWxsIGJ1dCBmaXJzdCBhbmQgbGFzdCBm
cmFtZXMgdG8KLSAgICAgICAgICAgICMgb25seSBzaG93IGEgc2luZ2xlLWxpbmUgbWVzc2FnZSBm
b3IgZWFjaCBmcmFtZQotICAgICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUg
PT0gImF1dG8iOgotICAgICAgICAgICAgICAgIGlmIGxlbihleGNpbmZvLnRyYWNlYmFjaykgPiAy
OgotICAgICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gZXhjaW5mby50cmFjZWJhY2tbMTot
MV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zZXRfcmVwcl9zdHlsZSgnc2hvcnQn
KQotCi0gICAgZGVmIF9yZXByX2ZhaWx1cmVfcHkoc2VsZiwgZXhjaW5mbywgc3R5bGU9Imxvbmci
KToKLSAgICAgICAgaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKGZhaWwuRXhjZXB0aW9uKToKLSAg
ICAgICAgICAgIGlmIG5vdCBleGNpbmZvLnZhbHVlLnB5dHJhY2U6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHB5Ll9idWlsdGluLl90b3RleHQoZXhjaW5mby52YWx1ZSkKLSAgICAgICAgcmV0dXJu
IHN1cGVyKEZ1bmN0aW9uTWl4aW4sIHNlbGYpLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGU9c3R5bGUpCi0KLSAgICBkZWYgcmVwcl9mYWlsdXJlKHNlbGYsIGV4Y2luZm8sIG91dGVy
cj1Ob25lKToKLSAgICAgICAgYXNzZXJ0IG91dGVyciBpcyBOb25lLCAiWFhYIG91dGVyciB1c2Fn
ZSBpcyBkZXByZWNhdGVkIgotICAgICAgICBzdHlsZSA9IHNlbGYuY29uZmlnLm9wdGlvbi50YnN0
eWxlCi0gICAgICAgIGlmIHN0eWxlID09ICJhdXRvIjoKLSAgICAgICAgICAgIHN0eWxlID0gImxv
bmciCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywgc3R5bGU9
c3R5bGUpCi0KLQotY2xhc3MgR2VuZXJhdG9yKEZ1bmN0aW9uTWl4aW4sIFB5Q29sbGVjdG9yKToK
LSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgIyB0ZXN0IGdlbmVyYXRvcnMgYXJlIHNl
ZW4gYXMgY29sbGVjdG9ycyBidXQgdGhleSBhbHNvCi0gICAgICAgICMgaW52b2tlIHNldHVwL3Rl
YXJkb3duIG9uIHBvcHVsYXIgcmVxdWVzdAotICAgICAgICAjIChpbmR1Y2VkIGJ5IHRoZSBjb21t
b24gInRlc3RfKiIgbmFtaW5nIHNoYXJlZCB3aXRoIG5vcm1hbCB0ZXN0cykKLSAgICAgICAgZnJv
bSBfcHl0ZXN0IGltcG9ydCBkZXByZWNhdGVkCi0gICAgICAgIHNlbGYuc2Vzc2lvbi5fc2V0dXBz
dGF0ZS5wcmVwYXJlKHNlbGYpCi0gICAgICAgICMgc2VlIEZ1bmN0aW9uTWl4aW4uc2V0dXAgYW5k
IHRlc3Rfc2V0dXBzdGF0ZV9pc19wcmVzZXJ2ZWRfMTM0Ci0gICAgICAgIHNlbGYuX3ByZXNlcnZl
ZHBhcmVudCA9IHNlbGYucGFyZW50Lm9iagotICAgICAgICB2YWx1ZXMgPSBbXQotICAgICAgICBz
ZWVuID0ge30KLSAgICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKHNlbGYub2JqKCkpOgotICAg
ICAgICAgICAgbmFtZSwgY2FsbCwgYXJncyA9IHNlbGYuZ2V0Y2FsbGFyZ3MoeCkKLSAgICAgICAg
ICAgIGlmIG5vdCBjYWxsYWJsZShjYWxsKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoIiVyIHlpZWxkZWQgbm9uIGNhbGxhYmxlIHRlc3QgJXIiICUgKHNlbGYub2JqLCBjYWxsLCkp
Ci0gICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICJb
JWRdIiAlIGkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICJbJyVz
J10iICUgbmFtZQotICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgotICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIiVyIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIG5vbi11bmlxdWUgbmFt
ZSAlciIgJSAoc2VsZiwgbmFtZSkpCi0gICAgICAgICAgICBzZWVuW25hbWVdID0gVHJ1ZQotICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChzZWxmLkZ1bmN0aW9uKG5hbWUsIHNlbGYsIGFyZ3M9YXJn
cywgY2FsbG9iaj1jYWxsKSkKLSAgICAgICAgc2VsZi53YXJuKCdDMScsIGRlcHJlY2F0ZWQuWUlF
TERfVEVTVFMpCi0gICAgICAgIHJldHVybiB2YWx1ZXMKLQotICAgIGRlZiBnZXRjYWxsYXJncyhz
ZWxmLCBvYmopOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosICh0dXBsZSwgbGlzdCkp
OgotICAgICAgICAgICAgb2JqID0gKG9iaiwpCi0gICAgICAgICMgZXhwbGljaXQgbmFtaW5nCi0g
ICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqWzBdLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAg
ICAgIG5hbWUgPSBvYmpbMF0KLSAgICAgICAgICAgIG9iaiA9IG9ialsxOl0KLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIG5hbWUgPSBOb25lCi0gICAgICAgIGNhbGwsIGFyZ3MgPSBvYmpbMF0s
IG9ialsxOl0KLSAgICAgICAgcmV0dXJuIG5hbWUsIGNhbGwsIGFyZ3MKLQotCi1kZWYgaGFzaW5p
dChvYmopOgotICAgIGluaXQgPSBnZXRhdHRyKG9iaiwgJ19faW5pdF9fJywgTm9uZSkKLSAgICBp
ZiBpbml0OgotICAgICAgICByZXR1cm4gaW5pdCAhPSBvYmplY3QuX19pbml0X18KLQotCi1kZWYg
aGFzbmV3KG9iaik6Ci0gICAgbmV3ID0gZ2V0YXR0cihvYmosICdfX25ld19fJywgTm9uZSkKLSAg
ICBpZiBuZXc6Ci0gICAgICAgIHJldHVybiBuZXcgIT0gb2JqZWN0Ll9fbmV3X18KLQotCi1jbGFz
cyBDYWxsU3BlYzIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0YWZ1bmMpOgot
ICAgICAgICBzZWxmLm1ldGFmdW5jID0gbWV0YWZ1bmMKLSAgICAgICAgc2VsZi5mdW5jYXJncyA9
IHt9Ci0gICAgICAgIHNlbGYuX2lkbGlzdCA9IFtdCi0gICAgICAgIHNlbGYucGFyYW1zID0ge30K
LSAgICAgICAgc2VsZi5fZ2xvYmFsaWQgPSBOT1RTRVQKLSAgICAgICAgc2VsZi5fZ2xvYmFsaWRf
YXJncyA9IHNldCgpCi0gICAgICAgIHNlbGYuX2dsb2JhbHBhcmFtID0gTk9UU0VUCi0gICAgICAg
IHNlbGYuX2FyZzJzY29wZW51bSA9IHt9ICAjIHVzZWQgZm9yIHNvcnRpbmcgcGFyYW1ldHJpemVk
IHJlc291cmNlcwotICAgICAgICBzZWxmLm1hcmtzID0gW10KLSAgICAgICAgc2VsZi5pbmRpY2Vz
ID0ge30KLQotICAgIGRlZiBjb3B5KHNlbGYsIG1ldGFmdW5jKToKLSAgICAgICAgY3MgPSBDYWxs
U3BlYzIoc2VsZi5tZXRhZnVuYykKLSAgICAgICAgY3MuZnVuY2FyZ3MudXBkYXRlKHNlbGYuZnVu
Y2FyZ3MpCi0gICAgICAgIGNzLnBhcmFtcy51cGRhdGUoc2VsZi5wYXJhbXMpCi0gICAgICAgIGNz
Lm1hcmtzLmV4dGVuZChzZWxmLm1hcmtzKQotICAgICAgICBjcy5pbmRpY2VzLnVwZGF0ZShzZWxm
LmluZGljZXMpCi0gICAgICAgIGNzLl9hcmcyc2NvcGVudW0udXBkYXRlKHNlbGYuX2FyZzJzY29w
ZW51bSkKLSAgICAgICAgY3MuX2lkbGlzdCA9IGxpc3Qoc2VsZi5faWRsaXN0KQotICAgICAgICBj
cy5fZ2xvYmFsaWQgPSBzZWxmLl9nbG9iYWxpZAotICAgICAgICBjcy5fZ2xvYmFsaWRfYXJncyA9
IHNlbGYuX2dsb2JhbGlkX2FyZ3MKLSAgICAgICAgY3MuX2dsb2JhbHBhcmFtID0gc2VsZi5fZ2xv
YmFscGFyYW0KLSAgICAgICAgcmV0dXJuIGNzCi0KLSAgICBkZWYgX2NoZWNrYXJnbm90Y29udGFp
bmVkKHNlbGYsIGFyZyk6Ci0gICAgICAgIGlmIGFyZyBpbiBzZWxmLnBhcmFtcyBvciBhcmcgaW4g
c2VsZi5mdW5jYXJnczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSAl
ciIgJSAoYXJnLCkpCi0KLSAgICBkZWYgZ2V0cGFyYW0oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcmFtc1tuYW1lXQotICAgICAgICBleGNlcHQg
S2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBzZWxmLl9nbG9iYWxwYXJhbSBpcyBOT1RTRVQ6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihuYW1lKQotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX2dsb2JhbHBhcmFtCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgaWQoc2VsZik6Ci0g
ICAgICAgIHJldHVybiAiLSIuam9pbihtYXAoc3RyLCBmaWx0ZXIoTm9uZSwgc2VsZi5faWRsaXN0
KSkpCi0KLSAgICBkZWYgc2V0bXVsdGkyKHNlbGYsIHZhbHR5cGVzLCBhcmduYW1lcywgdmFsc2V0
LCBpZCwgbWFya3MsIHNjb3BlbnVtLAotICAgICAgICAgICAgICAgICAgcGFyYW1faW5kZXgpOgot
ICAgICAgICBmb3IgYXJnLCB2YWwgaW4gemlwKGFyZ25hbWVzLCB2YWxzZXQpOgotICAgICAgICAg
ICAgc2VsZi5fY2hlY2thcmdub3Rjb250YWluZWQoYXJnKQotICAgICAgICAgICAgdmFsdHlwZV9m
b3JfYXJnID0gdmFsdHlwZXNbYXJnXQotICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCB2YWx0eXBl
X2Zvcl9hcmcpW2FyZ10gPSB2YWwKLSAgICAgICAgICAgIHNlbGYuaW5kaWNlc1thcmddID0gcGFy
YW1faW5kZXgKLSAgICAgICAgICAgIHNlbGYuX2FyZzJzY29wZW51bVthcmddID0gc2NvcGVudW0K
LSAgICAgICAgc2VsZi5faWRsaXN0LmFwcGVuZChpZCkKLSAgICAgICAgc2VsZi5tYXJrcy5leHRl
bmQobWFya3MpCi0KLSAgICBkZWYgc2V0YWxsKHNlbGYsIGZ1bmNhcmdzLCBpZCwgcGFyYW0pOgot
ICAgICAgICBmb3IgeCBpbiBmdW5jYXJnczoKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrYXJnbm90
Y29udGFpbmVkKHgpCi0gICAgICAgIHNlbGYuZnVuY2FyZ3MudXBkYXRlKGZ1bmNhcmdzKQotICAg
ICAgICBpZiBpZCBpcyBub3QgTk9UU0VUOgotICAgICAgICAgICAgc2VsZi5faWRsaXN0LmFwcGVu
ZChpZCkKLSAgICAgICAgaWYgcGFyYW0gaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIGFzc2Vy
dCBzZWxmLl9nbG9iYWxwYXJhbSBpcyBOT1RTRVQKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbHBh
cmFtID0gcGFyYW0KLSAgICAgICAgZm9yIGFyZyBpbiBmdW5jYXJnczoKLSAgICAgICAgICAgIHNl
bGYuX2FyZzJzY29wZW51bVthcmddID0gZml4dHVyZXMuc2NvcGVudW1fZnVuY3Rpb24KLQotCi1j
bGFzcyBNZXRhZnVuYyhmaXh0dXJlcy5GdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKLSAgICAiIiIK
LSAgICBNZXRhZnVuYyBvYmplY3RzIGFyZSBwYXNzZWQgdG8gdGhlIGBgcHl0ZXN0X2dlbmVyYXRl
X3Rlc3RzYGAgaG9vay4KLSAgICBUaGV5IGhlbHAgdG8gaW5zcGVjdCBhIHRlc3QgZnVuY3Rpb24g
YW5kIHRvIGdlbmVyYXRlIHRlc3RzIGFjY29yZGluZyB0bwotICAgIHRlc3QgY29uZmlndXJhdGlv
biBvciB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBvciBtb2R1bGUgd2hlcmUgYQotICAg
IHRlc3QgZnVuY3Rpb24gaXMgZGVmaW5lZC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmdW5jdGlvbiwgZml4dHVyZWluZm8sIGNvbmZpZywgY2xzPU5vbmUsIG1vZHVsZT1Ob25l
KToKLSAgICAgICAgIzogYWNjZXNzIHRvIHRoZSA6Y2xhc3M6YF9weXRlc3QuY29uZmlnLkNvbmZp
Z2Agb2JqZWN0IGZvciB0aGUgdGVzdCBzZXNzaW9uCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29u
ZmlnCi0KLSAgICAgICAgIzogdGhlIG1vZHVsZSBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVuY3Rp
b24gaXMgZGVmaW5lZCBpbi4KLSAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKLQotICAgICAg
ICAjOiB1bmRlcmx5aW5nIHB5dGhvbiB0ZXN0IGZ1bmN0aW9uCi0gICAgICAgIHNlbGYuZnVuY3Rp
b24gPSBmdW5jdGlvbgotCi0gICAgICAgICM6IHNldCBvZiBmaXh0dXJlIG5hbWVzIHJlcXVpcmVk
IGJ5IHRoZSB0ZXN0IGZ1bmN0aW9uCi0gICAgICAgIHNlbGYuZml4dHVyZW5hbWVzID0gZml4dHVy
ZWluZm8ubmFtZXNfY2xvc3VyZQotCi0gICAgICAgICM6IGNsYXNzIG9iamVjdCB3aGVyZSB0aGUg
dGVzdCBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIG9yIGBgTm9uZWBgLgotICAgICAgICBzZWxmLmNs
cyA9IGNscwotCi0gICAgICAgIHNlbGYuX2NhbGxzID0gW10KLSAgICAgICAgc2VsZi5faWRzID0g
c2V0KCkKLSAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0gZml4dHVyZWluZm8ubmFtZTJm
aXh0dXJlZGVmcwotCi0gICAgZGVmIHBhcmFtZXRyaXplKHNlbGYsIGFyZ25hbWVzLCBhcmd2YWx1
ZXMsIGluZGlyZWN0PUZhbHNlLCBpZHM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgc2NvcGU9
Tm9uZSk6Ci0gICAgICAgICIiIiBBZGQgbmV3IGludm9jYXRpb25zIHRvIHRoZSB1bmRlcmx5aW5n
IHRlc3QgZnVuY3Rpb24gdXNpbmcgdGhlIGxpc3QKLSAgICAgICAgb2YgYXJndmFsdWVzIGZvciB0
aGUgZ2l2ZW4gYXJnbmFtZXMuICBQYXJhbWV0cml6YXRpb24gaXMgcGVyZm9ybWVkCi0gICAgICAg
IGR1cmluZyB0aGUgY29sbGVjdGlvbiBwaGFzZS4gIElmIHlvdSBuZWVkIHRvIHNldHVwIGV4cGVu
c2l2ZSByZXNvdXJjZXMKLSAgICAgICAgc2VlIGFib3V0IHNldHRpbmcgaW5kaXJlY3QgdG8gZG8g
aXQgcmF0aGVyIGF0IHRlc3Qgc2V0dXAgdGltZS4KLQotICAgICAgICA6YXJnIGFyZ25hbWVzOiBh
IGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgZGVub3Rpbmcgb25lIG9yIG1vcmUgYXJndW1lbnQKLSAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZXMsIG9yIGEgbGlzdC90dXBsZSBvZiBhcmd1bWVudCBz
dHJpbmdzLgotCi0gICAgICAgIDphcmcgYXJndmFsdWVzOiBUaGUgbGlzdCBvZiBhcmd2YWx1ZXMg
ZGV0ZXJtaW5lcyBob3cgb2Z0ZW4gYQotICAgICAgICAgICAgdGVzdCBpcyBpbnZva2VkIHdpdGgg
ZGlmZmVyZW50IGFyZ3VtZW50IHZhbHVlcy4gIElmIG9ubHkgb25lCi0gICAgICAgICAgICBhcmdu
YW1lIHdhcyBzcGVjaWZpZWQgYXJndmFsdWVzIGlzIGEgbGlzdCBvZiB2YWx1ZXMuICBJZiBOCi0g
ICAgICAgICAgICBhcmduYW1lcyB3ZXJlIHNwZWNpZmllZCwgYXJndmFsdWVzIG11c3QgYmUgYSBs
aXN0IG9mIE4tdHVwbGVzLAotICAgICAgICAgICAgd2hlcmUgZWFjaCB0dXBsZS1lbGVtZW50IHNw
ZWNpZmllcyBhIHZhbHVlIGZvciBpdHMgcmVzcGVjdGl2ZQotICAgICAgICAgICAgYXJnbmFtZS4K
LQotICAgICAgICA6YXJnIGluZGlyZWN0OiBUaGUgbGlzdCBvZiBhcmduYW1lcyBvciBib29sZWFu
LiBBIGxpc3Qgb2YgYXJndW1lbnRzJwotICAgICAgICAgICAgbmFtZXMgKHN1YnNldCBvZiBhcmdu
YW1lcykuIElmIFRydWUgdGhlIGxpc3QgY29udGFpbnMgYWxsIG5hbWVzIGZyb20KLSAgICAgICAg
ICAgIHRoZSBhcmduYW1lcy4gRWFjaCBhcmd2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGFyZ25h
bWUgaW4gdGhpcyBsaXN0IHdpbGwKLSAgICAgICAgICAgIGJlIHBhc3NlZCBhcyByZXF1ZXN0LnBh
cmFtIHRvIGl0cyByZXNwZWN0aXZlIGFyZ25hbWUgZml4dHVyZQotICAgICAgICAgICAgZnVuY3Rp
b24gc28gdGhhdCBpdCBjYW4gcGVyZm9ybSBtb3JlIGV4cGVuc2l2ZSBzZXR1cHMgZHVyaW5nIHRo
ZQotICAgICAgICAgICAgc2V0dXAgcGhhc2Ugb2YgYSB0ZXN0IHJhdGhlciB0aGFuIGF0IGNvbGxl
Y3Rpb24gdGltZS4KLQotICAgICAgICA6YXJnIGlkczogbGlzdCBvZiBzdHJpbmcgaWRzLCBvciBh
IGNhbGxhYmxlLgotICAgICAgICAgICAgSWYgc3RyaW5ncywgZWFjaCBpcyBjb3JyZXNwb25kaW5n
IHRvIHRoZSBhcmd2YWx1ZXMgc28gdGhhdCB0aGV5IGFyZQotICAgICAgICAgICAgcGFydCBvZiB0
aGUgdGVzdCBpZC4gSWYgTm9uZSBpcyBnaXZlbiBhcyBpZCBvZiBzcGVjaWZpYyB0ZXN0LCB0aGUK
LSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlkIGZvciB0aGF0IGFyZ3VtZW50
IHdpbGwgYmUgdXNlZC4KLSAgICAgICAgICAgIElmIGNhbGxhYmxlLCBpdCBzaG91bGQgdGFrZSBv
bmUgYXJndW1lbnQgKGEgc2luZ2xlIGFyZ3ZhbHVlKSBhbmQgcmV0dXJuCi0gICAgICAgICAgICBh
IHN0cmluZyBvciByZXR1cm4gTm9uZS4gSWYgTm9uZSwgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGlkIGZvciB0aGF0Ci0gICAgICAgICAgICBhcmd1bWVudCB3aWxsIGJlIHVzZWQuCi0gICAg
ICAgICAgICBJZiBubyBpZHMgYXJlIHByb3ZpZGVkIHRoZXkgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0
b21hdGljYWxseSBmcm9tCi0gICAgICAgICAgICB0aGUgYXJndmFsdWVzLgotCi0gICAgICAgIDph
cmcgc2NvcGU6IGlmIHNwZWNpZmllZCBpdCBkZW5vdGVzIHRoZSBzY29wZSBvZiB0aGUgcGFyYW1l
dGVycy4KLSAgICAgICAgICAgIFRoZSBzY29wZSBpcyB1c2VkIGZvciBncm91cGluZyB0ZXN0cyBi
eSBwYXJhbWV0ZXIgaW5zdGFuY2VzLgotICAgICAgICAgICAgSXQgd2lsbCBhbHNvIG92ZXJyaWRl
IGFueSBmaXh0dXJlLWZ1bmN0aW9uIGRlZmluZWQgc2NvcGUsIGFsbG93aW5nCi0gICAgICAgICAg
ICB0byBzZXQgYSBkeW5hbWljIHNjb3BlIHVzaW5nIHRlc3QgY29udGV4dCBvciBjb25maWd1cmF0
aW9uLgotICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBz
Y29wZTJpbmRleAotICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgUGFyYW1ldGVyU2V0
Ci0gICAgICAgIGZyb20gcHkuaW8gaW1wb3J0IHNhZmVyZXByCi0gICAgICAgIGFyZ25hbWVzLCBw
YXJhbWV0ZXJzID0gUGFyYW1ldGVyU2V0Ll9mb3JfcGFyYW1ldGVyaXplKAotICAgICAgICAgICAg
YXJnbmFtZXMsIGFyZ3ZhbHVlcywgc2VsZi5mdW5jdGlvbikKLSAgICAgICAgZGVsIGFyZ3ZhbHVl
cwotCi0gICAgICAgIGlmIHNjb3BlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzY29wZSA9IF9maW5k
X3BhcmFtZXRyaXplZF9zY29wZShhcmduYW1lcywgc2VsZi5fYXJnMmZpeHR1cmVkZWZzLCBpbmRp
cmVjdCkKLQotICAgICAgICBzY29wZW51bSA9IHNjb3BlMmluZGV4KHNjb3BlLCBkZXNjcj0nY2Fs
bCB0byB7MH0nLmZvcm1hdChzZWxmLnBhcmFtZXRyaXplKSkKLSAgICAgICAgdmFsdHlwZXMgPSB7
fQotICAgICAgICBmb3IgYXJnIGluIGFyZ25hbWVzOgotICAgICAgICAgICAgaWYgYXJnIG5vdCBp
biBzZWxmLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGluZGly
ZWN0LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdmaXh0dXJl
JyBpZiBhcmcgaW4gaW5kaXJlY3QgZWxzZSAnYXJndW1lbnQnCi0gICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdmaXh0dXJlJyBpZiBpbmRpcmVjdCBlbHNl
ICdhcmd1bWVudCcKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAg
ICAgICAgICAgICAiJXIgdXNlcyBubyAlcyAlciIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmZ1bmN0aW9uLCBuYW1lLCBhcmcpKQotCi0gICAgICAgIGlmIGluZGlyZWN0IGlzIFRy
dWU6Ci0gICAgICAgICAgICB2YWx0eXBlcyA9IGRpY3QuZnJvbWtleXMoYXJnbmFtZXMsICJwYXJh
bXMiKQotICAgICAgICBlbGlmIGluZGlyZWN0IGlzIEZhbHNlOgotICAgICAgICAgICAgdmFsdHlw
ZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVuY2FyZ3MiKQotICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoaW5kaXJlY3QsICh0dXBsZSwgbGlzdCkpOgotICAgICAgICAgICAgdmFsdHlwZXMg
PSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVuY2FyZ3MiKQotICAgICAgICAgICAgZm9yIGFy
ZyBpbiBpbmRpcmVjdDoKLSAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZ25hbWVzOgot
ICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbmRpcmVjdCBnaXZlbiB0byAl
cjogZml4dHVyZSAlciBkb2Vzbid0IGV4aXN0IiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmZ1bmN0aW9uLCBhcmcpKQotICAgICAgICAgICAgICAgIHZhbHR5
cGVzW2FyZ10gPSAicGFyYW1zIgotICAgICAgICBpZGZuID0gTm9uZQotICAgICAgICBpZiBjYWxs
YWJsZShpZHMpOgotICAgICAgICAgICAgaWRmbiA9IGlkcwotICAgICAgICAgICAgaWRzID0gTm9u
ZQotICAgICAgICBpZiBpZHM6Ci0gICAgICAgICAgICBpZiBsZW4oaWRzKSAhPSBsZW4ocGFyYW1l
dGVycyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJWQgdGVzdHMgc3BlY2lm
aWVkIHdpdGggJWQgaWRzJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
bihwYXJhbWV0ZXJzKSwgbGVuKGlkcykpKQotICAgICAgICAgICAgZm9yIGlkX3ZhbHVlIGluIGlk
czoKLSAgICAgICAgICAgICAgICBpZiBpZF92YWx1ZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5z
dGFuY2UoaWRfdmFsdWUsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgICAgICAgICBt
c2cgPSAnaWRzIG11c3QgYmUgbGlzdCBvZiBzdHJpbmdzLCBmb3VuZDogJXMgKHR5cGU6ICVzKScK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSAoc2FmZXJlcHIoaWRf
dmFsdWUpLCB0eXBlKGlkX3ZhbHVlKS5fX25hbWVfXykpCi0gICAgICAgIGlkcyA9IGlkbWFrZXIo
YXJnbmFtZXMsIHBhcmFtZXRlcnMsIGlkZm4sIGlkcywgc2VsZi5jb25maWcpCi0gICAgICAgIG5l
d2NhbGxzID0gW10KLSAgICAgICAgZm9yIGNhbGxzcGVjIGluIHNlbGYuX2NhbGxzIG9yIFtDYWxs
U3BlYzIoc2VsZildOgotICAgICAgICAgICAgZWxlbWVudHMgPSB6aXAoaWRzLCBwYXJhbWV0ZXJz
LCBjb3VudCgpKQotICAgICAgICAgICAgZm9yIGFfaWQsIHBhcmFtLCBwYXJhbV9pbmRleCBpbiBl
bGVtZW50czoKLSAgICAgICAgICAgICAgICBpZiBsZW4ocGFyYW0udmFsdWVzKSAhPSBsZW4oYXJn
bmFtZXMpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ0luICJwYXJhbWV0cml6ZSIgdGhlIG51bWJlciBvZiB2YWx1ZXMgKHsw
fSkgbXVzdCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXF1YWwgdG8gdGhlIG51bWJl
ciBvZiBuYW1lcyAoezF9KScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtLnZhbHVlcywgYXJnbmFtZXMpKQotICAgICAgICAgICAgICAgIG5ld2NhbGxzcGVjID0gY2Fs
bHNwZWMuY29weShzZWxmKQotICAgICAgICAgICAgICAgIG5ld2NhbGxzcGVjLnNldG11bHRpMih2
YWx0eXBlcywgYXJnbmFtZXMsIHBhcmFtLnZhbHVlcywgYV9pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW0ubWFya3MsIHNjb3BlbnVtLCBwYXJhbV9pbmRleCkK
LSAgICAgICAgICAgICAgICBuZXdjYWxscy5hcHBlbmQobmV3Y2FsbHNwZWMpCi0gICAgICAgIHNl
bGYuX2NhbGxzID0gbmV3Y2FsbHMKLQotICAgIGRlZiBhZGRjYWxsKHNlbGYsIGZ1bmNhcmdzPU5v
bmUsIGlkPU5PVFNFVCwgcGFyYW09Tk9UU0VUKToKLSAgICAgICAgIiIiIEFkZCBhIG5ldyBjYWxs
IHRvIHRoZSB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24gZHVyaW5nIHRoZSBjb2xsZWN0aW9uIHBo
YXNlIG9mIGEgdGVzdCBydW4uCi0KLSAgICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotCi0gICAg
ICAgICAgICBVc2UgOm1ldGg6YHBhcmFtZXRyaXplYCBpbnN0ZWFkLgotCi0gICAgICAgIE5vdGUg
dGhhdCByZXF1ZXN0LmFkZGNhbGwoKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSB0ZXN0IGNvbGxlY3Rp
b24gcGhhc2UgcHJpb3IgYW5kCi0gICAgICAgIGluZGVwZW5kZW50bHkgdG8gYWN0dWFsIHRlc3Qg
ZXhlY3V0aW9uLiAgWW91IHNob3VsZCBvbmx5IHVzZSBhZGRjYWxsKCkKLSAgICAgICAgaWYgeW91
IG5lZWQgdG8gc3BlY2lmeSBtdWx0aXBsZSBhcmd1bWVudHMgb2YgYSB0ZXN0IGZ1bmN0aW9uLgot
Ci0gICAgICAgIDphcmcgZnVuY2FyZ3M6IGFyZ3VtZW50IGtleXdvcmQgZGljdGlvbmFyeSB1c2Vk
IHdoZW4gaW52b2tpbmcKLSAgICAgICAgICAgIHRoZSB0ZXN0IGZ1bmN0aW9uLgotCi0gICAgICAg
IDphcmcgaWQ6IHVzZWQgZm9yIHJlcG9ydGluZyBhbmQgaWRlbnRpZmljYXRpb24gcHVycG9zZXMu
ICBJZiB5b3UKLSAgICAgICAgICAgIGRvbid0IHN1cHBseSBhbiBgaWRgIGFuIGF1dG9tYXRpYyB1
bmlxdWUgaWQgd2lsbCBiZSBnZW5lcmF0ZWQuCi0KLSAgICAgICAgOmFyZyBwYXJhbTogYSBwYXJh
bWV0ZXIgd2hpY2ggd2lsbCBiZSBleHBvc2VkIHRvIGEgbGF0ZXIgZml4dHVyZSBmdW5jdGlvbgot
ICAgICAgICAgICAgaW52b2NhdGlvbiB0aHJvdWdoIHRoZSBgYHJlcXVlc3QucGFyYW1gYCBhdHRy
aWJ1dGUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNvbmZpZzoKLSAgICAgICAgICAg
IHNlbGYuY29uZmlnLndhcm4oJ0MxJywgbWVzc2FnZT1kZXByZWNhdGVkLk1FVEFGVU5DX0FERF9D
QUxMLCBmc2xvY2F0aW9uPU5vbmUpCi0gICAgICAgIGFzc2VydCBmdW5jYXJncyBpcyBOb25lIG9y
IGlzaW5zdGFuY2UoZnVuY2FyZ3MsIGRpY3QpCi0gICAgICAgIGlmIGZ1bmNhcmdzIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZnVuY2FyZ3M6Ci0gICAgICAgICAgICAgICAg
aWYgbmFtZSBub3QgaW4gc2VsZi5maXh0dXJlbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIGZh
aWwoImZ1bmNhcmcgJXIgbm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbi4iICUgbmFtZSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmNhcmdzID0ge30KLSAgICAgICAgaWYgaWQgaXMgTm9u
ZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImlkPU5vbmUgbm90IGFsbG93ZWQiKQot
ICAgICAgICBpZiBpZCBpcyBOT1RTRVQ6Ci0gICAgICAgICAgICBpZCA9IGxlbihzZWxmLl9jYWxs
cykKLSAgICAgICAgaWQgPSBzdHIoaWQpCi0gICAgICAgIGlmIGlkIGluIHNlbGYuX2lkczoKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSBpZCAlciIgJSBpZCkKLSAgICAg
ICAgc2VsZi5faWRzLmFkZChpZCkKLQotICAgICAgICBjcyA9IENhbGxTcGVjMihzZWxmKQotICAg
ICAgICBjcy5zZXRhbGwoZnVuY2FyZ3MsIGlkLCBwYXJhbSkKLSAgICAgICAgc2VsZi5fY2FsbHMu
YXBwZW5kKGNzKQotCi0KLWRlZiBfZmluZF9wYXJhbWV0cml6ZWRfc2NvcGUoYXJnbmFtZXMsIGFy
ZzJmaXh0dXJlZGVmcywgaW5kaXJlY3QpOgotICAgICIiIkZpbmQgdGhlIG1vc3QgYXBwcm9wcmlh
dGUgc2NvcGUgZm9yIGEgcGFyYW1ldHJpemVkIGNhbGwgYmFzZWQgb24gaXRzIGFyZ3VtZW50cy4K
LQotICAgIFdoZW4gdGhlcmUncyBhdCBsZWFzdCBvbmUgZGlyZWN0IGFyZ3VtZW50LCBhbHdheXMg
dXNlICJmdW5jdGlvbiIgc2NvcGUuCi0KLSAgICBXaGVuIGEgdGVzdCBmdW5jdGlvbiBpcyBwYXJh
bWV0cml6ZWQgYW5kIGFsbCBpdHMgYXJndW1lbnRzIGFyZSBpbmRpcmVjdAotICAgIChlLmcuIGZp
eHR1cmVzKSwgcmV0dXJuIHRoZSBtb3N0IG5hcnJvdyBzY29wZSBiYXNlZCBvbiB0aGUgZml4dHVy
ZXMgdXNlZC4KLQotICAgIFJlbGF0ZWQgdG8gaXNzdWUgIzE4MzIsIGJhc2VkIG9uIGNvZGUgcG9z
dGVkIGJ5IEBLaW5nZHJlYWQuCi0gICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGlt
cG9ydCBzY29wZXMKLSAgICBpbmRpcmVjdF9hc19saXN0ID0gaXNpbnN0YW5jZShpbmRpcmVjdCwg
KGxpc3QsIHR1cGxlKSkKLSAgICBhbGxfYXJndW1lbnRzX2FyZV9maXh0dXJlcyA9IGluZGlyZWN0
IGlzIFRydWUgb3IgXAotICAgICAgICBpbmRpcmVjdF9hc19saXN0IGFuZCBsZW4oaW5kaXJlY3Qp
ID09IGFyZ25hbWVzCi0gICAgaWYgYWxsX2FyZ3VtZW50c19hcmVfZml4dHVyZXM6Ci0gICAgICAg
IGZpeHR1cmVkZWZzID0gYXJnMmZpeHR1cmVkZWZzIG9yIHt9Ci0gICAgICAgIHVzZWRfc2NvcGVz
ID0gW2ZpeHR1cmVkZWZbMF0uc2NvcGUgZm9yIG5hbWUsIGZpeHR1cmVkZWYgaW4gZml4dHVyZWRl
ZnMuaXRlbXMoKV0KLSAgICAgICAgaWYgdXNlZF9zY29wZXM6Ci0gICAgICAgICAgICAjIFRha2Vz
IHRoZSBtb3N0IG5hcnJvdyBzY29wZSBmcm9tIHVzZWQgZml4dHVyZXMKLSAgICAgICAgICAgIGZv
ciBzY29wZSBpbiByZXZlcnNlZChzY29wZXMpOgotICAgICAgICAgICAgICAgIGlmIHNjb3BlIGlu
IHVzZWRfc2NvcGVzOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUKLQotICAgIHJl
dHVybiAnZnVuY3Rpb24nCi0KLQotZGVmIF9pZHZhbCh2YWwsIGFyZ25hbWUsIGlkeCwgaWRmbiwg
Y29uZmlnPU5vbmUpOgotICAgIGlmIGlkZm46Ci0gICAgICAgIHMgPSBOb25lCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHMgPSBpZGZuKHZhbCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
LSAgICAgICAgICAgICMgU2VlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjE2OQotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAg
ICBtc2cgPSAiUmFpc2VkIHdoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaWQgb2YgcGFyYW1ldGVy
ICVzIGF0IHBvc2l0aW9uICVkLiIgJSAoYXJnbmFtZSwgaWR4KQotICAgICAgICAgICAgbXNnICs9
ICdcblVwZGF0ZSB5b3VyIGNvZGUgYXMgdGhpcyB3aWxsIHJhaXNlIGFuIGVycm9yIGluIHB5dGVz
dC00LjAuJwotICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2Fybmlu
ZykKLSAgICAgICAgaWYgczoKLSAgICAgICAgICAgIHJldHVybiBhc2NpaV9lc2NhcGVkKHMpCi0K
LSAgICBpZiBjb25maWc6Ci0gICAgICAgIGhvb2tfaWQgPSBjb25maWcuaG9vay5weXRlc3RfbWFr
ZV9wYXJhbWV0cml6ZV9pZCgKLSAgICAgICAgICAgIGNvbmZpZz1jb25maWcsIHZhbD12YWwsIGFy
Z25hbWU9YXJnbmFtZSkKLSAgICAgICAgaWYgaG9va19pZDoKLSAgICAgICAgICAgIHJldHVybiBo
b29rX2lkCi0KLSAgICBpZiBpc2luc3RhbmNlKHZhbCwgU1RSSU5HX1RZUEVTKToKLSAgICAgICAg
cmV0dXJuIGFzY2lpX2VzY2FwZWQodmFsKQotICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIChmbG9h
dCwgaW50LCBib29sLCBOb25lVHlwZSkpOgotICAgICAgICByZXR1cm4gc3RyKHZhbCkKLSAgICBl
bGlmIGlzaW5zdGFuY2UodmFsLCBSRUdFWF9UWVBFKToKLSAgICAgICAgcmV0dXJuIGFzY2lpX2Vz
Y2FwZWQodmFsLnBhdHRlcm4pCi0gICAgZWxpZiBlbnVtIGlzIG5vdCBOb25lIGFuZCBpc2luc3Rh
bmNlKHZhbCwgZW51bS5FbnVtKToKLSAgICAgICAgcmV0dXJuIHN0cih2YWwpCi0gICAgZWxpZiBp
c2NsYXNzKHZhbCkgYW5kIGhhc2F0dHIodmFsLCAnX19uYW1lX18nKToKLSAgICAgICAgcmV0dXJu
IHZhbC5fX25hbWVfXwotICAgIHJldHVybiBzdHIoYXJnbmFtZSkgKyBzdHIoaWR4KQotCi0KLWRl
ZiBfaWR2YWxzZXQoaWR4LCBwYXJhbWV0ZXJzZXQsIGFyZ25hbWVzLCBpZGZuLCBpZHMsIGNvbmZp
Zz1Ob25lKToKLSAgICBpZiBwYXJhbWV0ZXJzZXQuaWQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJl
dHVybiBwYXJhbWV0ZXJzZXQuaWQKLSAgICBpZiBpZHMgaXMgTm9uZSBvciAoaWR4ID49IGxlbihp
ZHMpIG9yIGlkc1tpZHhdIGlzIE5vbmUpOgotICAgICAgICB0aGlzX2lkID0gW19pZHZhbCh2YWws
IGFyZ25hbWUsIGlkeCwgaWRmbiwgY29uZmlnKQotICAgICAgICAgICAgICAgICAgIGZvciB2YWws
IGFyZ25hbWUgaW4gemlwKHBhcmFtZXRlcnNldC52YWx1ZXMsIGFyZ25hbWVzKV0KLSAgICAgICAg
cmV0dXJuICItIi5qb2luKHRoaXNfaWQpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGFzY2lp
X2VzY2FwZWQoaWRzW2lkeF0pCi0KLQotZGVmIGlkbWFrZXIoYXJnbmFtZXMsIHBhcmFtZXRlcnNl
dHMsIGlkZm49Tm9uZSwgaWRzPU5vbmUsIGNvbmZpZz1Ob25lKToKLSAgICBpZHMgPSBbX2lkdmFs
c2V0KHZhbGluZGV4LCBwYXJhbWV0ZXJzZXQsIGFyZ25hbWVzLCBpZGZuLCBpZHMsIGNvbmZpZykK
LSAgICAgICAgICAgZm9yIHZhbGluZGV4LCBwYXJhbWV0ZXJzZXQgaW4gZW51bWVyYXRlKHBhcmFt
ZXRlcnNldHMpXQotICAgIGlmIGxlbihzZXQoaWRzKSkgIT0gbGVuKGlkcyk6Ci0gICAgICAgICMg
VGhlIGlkcyBhcmUgbm90IHVuaXF1ZQotICAgICAgICBkdXBsaWNhdGVzID0gW3Rlc3RpZCBmb3Ig
dGVzdGlkIGluIGlkcyBpZiBpZHMuY291bnQodGVzdGlkKSA+IDFdCi0gICAgICAgIGNvdW50ZXJz
ID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhOiAwKQotICAgICAgICBmb3IgaW5kZXgs
IHRlc3RpZCBpbiBlbnVtZXJhdGUoaWRzKToKLSAgICAgICAgICAgIGlmIHRlc3RpZCBpbiBkdXBs
aWNhdGVzOgotICAgICAgICAgICAgICAgIGlkc1tpbmRleF0gPSB0ZXN0aWQgKyBzdHIoY291bnRl
cnNbdGVzdGlkXSkKLSAgICAgICAgICAgICAgICBjb3VudGVyc1t0ZXN0aWRdICs9IDEKLSAgICBy
ZXR1cm4gaWRzCi0KLQotZGVmIHNob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29uZmlnKToKLSAgICBm
cm9tIF9weXRlc3QubWFpbiBpbXBvcnQgd3JhcF9zZXNzaW9uCi0gICAgcmV0dXJuIHdyYXBfc2Vz
c2lvbihjb25maWcsIF9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0KQotCi0KLWRlZiBfc2hvd19maXh0
dXJlc19wZXJfdGVzdChjb25maWcsIHNlc3Npb24pOgotICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZp
ZwotICAgIHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KCkKLSAgICBjdXJkaXIgPSBweS5wYXRoLmxv
Y2FsKCkKLSAgICB0dyA9IF9weXRlc3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5hbF93cml0ZXIoY29u
ZmlnKQotICAgIHZlcmJvc2UgPSBjb25maWcuZ2V0dmFsdWUoInZlcmJvc2UiKQotCi0gICAgZGVm
IGdldF9iZXN0X3JlbHBhdGgoZnVuYyk6Ci0gICAgICAgIGxvYyA9IGdldGxvY2F0aW9uKGZ1bmMs
IGN1cmRpcikKLSAgICAgICAgcmV0dXJuIGN1cmRpci5iZXN0cmVscGF0aChsb2MpCi0KLSAgICBk
ZWYgd3JpdGVfZml4dHVyZShmaXh0dXJlX2RlZik6Ci0gICAgICAgIGFyZ25hbWUgPSBmaXh0dXJl
X2RlZi5hcmduYW1lCi0gICAgICAgIGlmIHZlcmJvc2UgPD0gMCBhbmQgYXJnbmFtZS5zdGFydHN3
aXRoKCJfIik6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgdmVyYm9zZSA+IDA6Ci0g
ICAgICAgICAgICBiZXN0cmVsID0gZ2V0X2Jlc3RfcmVscGF0aChmaXh0dXJlX2RlZi5mdW5jKQot
ICAgICAgICAgICAgZnVuY2FyZ3NwZWMgPSAiezB9IC0tIHsxfSIuZm9ybWF0KGFyZ25hbWUsIGJl
c3RyZWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmdW5jYXJnc3BlYyA9IGFyZ25hbWUK
LSAgICAgICAgdHcubGluZShmdW5jYXJnc3BlYywgZ3JlZW49VHJ1ZSkKLSAgICAgICAgZml4dHVy
ZV9kb2MgPSBmaXh0dXJlX2RlZi5mdW5jLl9fZG9jX18KLSAgICAgICAgaWYgZml4dHVyZV9kb2M6
Ci0gICAgICAgICAgICB3cml0ZV9kb2NzdHJpbmcodHcsIGZpeHR1cmVfZG9jKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgdHcubGluZSgnICAgIG5vIGRvY3N0cmluZyBhdmFpbGFibGUnLCBy
ZWQ9VHJ1ZSkKLQotICAgIGRlZiB3cml0ZV9pdGVtKGl0ZW0pOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBpbmZvID0gaXRlbS5fZml4dHVyZWluZm8KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0
ZUVycm9yOgotICAgICAgICAgICAgIyBkb2N0ZXN0cyBpdGVtcyBoYXZlIG5vIF9maXh0dXJlaW5m
byBhdHRyaWJ1dGUKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaW5mby5uYW1l
MmZpeHR1cmVkZWZzOgotICAgICAgICAgICAgIyB0aGlzIHRlc3QgaXRlbSBkb2VzIG5vdCB1c2Ug
YW55IGZpeHR1cmVzCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHcubGluZSgpCi0gICAg
ICAgIHR3LnNlcCgnLScsICdmaXh0dXJlcyB1c2VkIGJ5IHswfScuZm9ybWF0KGl0ZW0ubmFtZSkp
Ci0gICAgICAgIHR3LnNlcCgnLScsICcoezB9KScuZm9ybWF0KGdldF9iZXN0X3JlbHBhdGgoaXRl
bS5mdW5jdGlvbikpKQotICAgICAgICAjIGRpY3Qga2V5IG5vdCB1c2VkIGluIGxvb3AgYnV0IG5l
ZWRlZCBmb3Igc29ydGluZwotICAgICAgICBmb3IgXywgZml4dHVyZWRlZnMgaW4gc29ydGVkKGlu
Zm8ubmFtZTJmaXh0dXJlZGVmcy5pdGVtcygpKToKLSAgICAgICAgICAgIGFzc2VydCBmaXh0dXJl
ZGVmcyBpcyBub3QgTm9uZQotICAgICAgICAgICAgaWYgbm90IGZpeHR1cmVkZWZzOgotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAjIGxhc3QgaXRlbSBpcyBleHBlY3RlZCB0
byBiZSB0aGUgb25lIHVzZWQgYnkgdGhlIHRlc3QgaXRlbQotICAgICAgICAgICAgd3JpdGVfZml4
dHVyZShmaXh0dXJlZGVmc1stMV0pCi0KLSAgICBmb3Igc2Vzc2lvbl9pdGVtIGluIHNlc3Npb24u
aXRlbXM6Ci0gICAgICAgIHdyaXRlX2l0ZW0oc2Vzc2lvbl9pdGVtKQotCi0KLWRlZiBzaG93Zml4
dHVyZXMoY29uZmlnKToKLSAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgd3JhcF9zZXNzaW9u
Ci0gICAgcmV0dXJuIHdyYXBfc2Vzc2lvbihjb25maWcsIF9zaG93Zml4dHVyZXNfbWFpbikKLQot
Ci1kZWYgX3Nob3dmaXh0dXJlc19tYWluKGNvbmZpZywgc2Vzc2lvbik6Ci0gICAgaW1wb3J0IF9w
eXRlc3QuY29uZmlnCi0gICAgc2Vzc2lvbi5wZXJmb3JtX2NvbGxlY3QoKQotICAgIGN1cmRpciA9
IHB5LnBhdGgubG9jYWwoKQotICAgIHR3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFs
X3dyaXRlcihjb25maWcpCi0gICAgdmVyYm9zZSA9IGNvbmZpZy5nZXR2YWx1ZSgidmVyYm9zZSIp
Ci0KLSAgICBmbSA9IHNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0KLSAgICBhdmFpbGFibGUgPSBb
XQotICAgIHNlZW4gPSBzZXQoKQotCi0gICAgZm9yIGFyZ25hbWUsIGZpeHR1cmVkZWZzIGluIGZt
Ll9hcmcyZml4dHVyZWRlZnMuaXRlbXMoKToKLSAgICAgICAgYXNzZXJ0IGZpeHR1cmVkZWZzIGlz
IG5vdCBOb25lCi0gICAgICAgIGlmIG5vdCBmaXh0dXJlZGVmczoKLSAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgIGZvciBmaXh0dXJlZGVmIGluIGZpeHR1cmVkZWZzOgotICAgICAgICAgICAg
bG9jID0gZ2V0bG9jYXRpb24oZml4dHVyZWRlZi5mdW5jLCBjdXJkaXIpCi0gICAgICAgICAgICBp
ZiAoZml4dHVyZWRlZi5hcmduYW1lLCBsb2MpIGluIHNlZW46Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIHNlZW4uYWRkKChmaXh0dXJlZGVmLmFyZ25hbWUsIGxvYykpCi0g
ICAgICAgICAgICBhdmFpbGFibGUuYXBwZW5kKChsZW4oZml4dHVyZWRlZi5iYXNlaWQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dHVyZWRlZi5mdW5jLl9fbW9kdWxlX18sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJkaXIuYmVzdHJlbHBhdGgobG9jKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuYXJnbmFtZSwgZml4dHVyZWRl
ZikpCi0KLSAgICBhdmFpbGFibGUuc29ydCgpCi0gICAgY3VycmVudG1vZHVsZSA9IE5vbmUKLSAg
ICBmb3IgYmFzZWlkLCBtb2R1bGUsIGJlc3RyZWwsIGFyZ25hbWUsIGZpeHR1cmVkZWYgaW4gYXZh
aWxhYmxlOgotICAgICAgICBpZiBjdXJyZW50bW9kdWxlICE9IG1vZHVsZToKLSAgICAgICAgICAg
IGlmIG5vdCBtb2R1bGUuc3RhcnRzd2l0aCgiX3B5dGVzdC4iKToKLSAgICAgICAgICAgICAgICB0
dy5saW5lKCkKLSAgICAgICAgICAgICAgICB0dy5zZXAoIi0iLCAiZml4dHVyZXMgZGVmaW5lZCBm
cm9tICVzIiAlIChtb2R1bGUsKSkKLSAgICAgICAgICAgICAgICBjdXJyZW50bW9kdWxlID0gbW9k
dWxlCi0gICAgICAgIGlmIHZlcmJvc2UgPD0gMCBhbmQgYXJnbmFtZVswXSA9PSAiXyI6Ci0gICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICBpZiB2ZXJib3NlID4gMDoKLSAgICAgICAgICAgIGZ1
bmNhcmdzcGVjID0gIiVzIC0tICVzIiAlIChhcmduYW1lLCBiZXN0cmVsLCkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGZ1bmNhcmdzcGVjID0gYXJnbmFtZQotICAgICAgICB0dy5saW5lKGZ1
bmNhcmdzcGVjLCBncmVlbj1UcnVlKQotICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihmaXh0dXJl
ZGVmLmZ1bmMsIGN1cmRpcikKLSAgICAgICAgZG9jID0gZml4dHVyZWRlZi5mdW5jLl9fZG9jX18g
b3IgIiIKLSAgICAgICAgaWYgZG9jOgotICAgICAgICAgICAgd3JpdGVfZG9jc3RyaW5nKHR3LCBk
b2MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0dy5saW5lKCIgICAgJXM6IG5vIGRvY3N0
cmluZyBhdmFpbGFibGUiICUgKGxvYywpLAotICAgICAgICAgICAgICAgICAgICByZWQ9VHJ1ZSkK
LQotCi1kZWYgd3JpdGVfZG9jc3RyaW5nKHR3LCBkb2MpOgotICAgIElOREVOVCA9ICIgICAgIgot
ICAgIGRvYyA9IGRvYy5yc3RyaXAoKQotICAgIGlmICJcbiIgaW4gZG9jOgotICAgICAgICBmaXJz
dGxpbmUsIHJlc3QgPSBkb2Muc3BsaXQoIlxuIiwgMSkKLSAgICBlbHNlOgotICAgICAgICBmaXJz
dGxpbmUsIHJlc3QgPSBkb2MsICIiCi0KLSAgICBpZiBmaXJzdGxpbmUuc3RyaXAoKToKLSAgICAg
ICAgdHcubGluZShJTkRFTlQgKyBmaXJzdGxpbmUuc3RyaXAoKSkKLQotICAgIGlmIHJlc3Q6Ci0g
ICAgICAgIGZvciBsaW5lIGluIGRlZGVudChyZXN0KS5zcGxpdCgiXG4iKToKLSAgICAgICAgICAg
IHR3LndyaXRlKElOREVOVCArIGxpbmUgKyAiXG4iKQotCi0KLWNsYXNzIEZ1bmN0aW9uKEZ1bmN0
aW9uTWl4aW4sIG1haW4uSXRlbSwgZml4dHVyZXMuRnVuY2FyZ25hbWVzQ29tcGF0QXR0cik6Ci0g
ICAgIiIiIGEgRnVuY3Rpb24gSXRlbSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCBhbmQg
ZXhlY3V0aW5nIGEKLSAgICBQeXRob24gdGVzdCBmdW5jdGlvbi4KLSAgICAiIiIKLSAgICBfZ2Vu
aWQgPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50LCBhcmdzPU5v
bmUsIGNvbmZpZz1Ob25lLAotICAgICAgICAgICAgICAgICBjYWxsc3BlYz1Ob25lLCBjYWxsb2Jq
PU5PVFNFVCwga2V5d29yZHM9Tm9uZSwgc2Vzc2lvbj1Ob25lLAotICAgICAgICAgICAgICAgICBm
aXh0dXJlaW5mbz1Ob25lLCBvcmlnaW5hbG5hbWU9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEZ1bmN0
aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQsIGNvbmZpZz1jb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlc3Npb24pCi0gICAgICAg
IHNlbGYuX2FyZ3MgPSBhcmdzCi0gICAgICAgIGlmIGNhbGxvYmogaXMgbm90IE5PVFNFVDoKLSAg
ICAgICAgICAgIHNlbGYub2JqID0gY2FsbG9iagotCi0gICAgICAgIHNlbGYua2V5d29yZHMudXBk
YXRlKHNlbGYub2JqLl9fZGljdF9fKQotICAgICAgICBpZiBjYWxsc3BlYzoKLSAgICAgICAgICAg
IHNlbGYuY2FsbHNwZWMgPSBjYWxsc3BlYwotICAgICAgICAgICAgIyB0aGlzIGlzIHRvdGFsIGhv
c3RpbGUgYW5kIGEgbWVzcwotICAgICAgICAgICAgIyBrZXl3b3JkcyBhcmUgYnJva2VuIGJ5IGRl
c2lnbiBieSBub3cKLSAgICAgICAgICAgICMgdGhpcyB3aWxsIGJlIHJlZGVlbWVkIGxhdGVyCi0g
ICAgICAgICAgICBmb3IgbWFyayBpbiBjYWxsc3BlYy5tYXJrczoKLSAgICAgICAgICAgICAgICAj
IGZlZWwgZnJlZSB0byBjcnksIHRoaXMgd2FzIGJyb2tlbiBmb3IgeWVhcnMgYmVmb3JlCi0gICAg
ICAgICAgICAgICAgIyBhbmQga2V5d29yZHMgY2FudCBmaXggaXQgcGVyIGRlc2lnbgotICAgICAg
ICAgICAgICAgIHNlbGYua2V5d29yZHNbbWFyay5uYW1lXSA9IG1hcmsKLSAgICAgICAgaWYga2V5
d29yZHM6Ci0gICAgICAgICAgICBzZWxmLmtleXdvcmRzLnVwZGF0ZShrZXl3b3JkcykKLQotICAg
ICAgICBpZiBmaXh0dXJlaW5mbyBpcyBOb25lOgotICAgICAgICAgICAgZml4dHVyZWluZm8gPSBz
ZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLmdldGZpeHR1cmVpbmZvKAotICAgICAgICAgICAg
ICAgIHNlbGYucGFyZW50LCBzZWxmLm9iaiwgc2VsZi5jbHMsCi0gICAgICAgICAgICAgICAgZnVu
Y2FyZ3M9bm90IHNlbGYuX2lzeWllbGRlZGZ1bmN0aW9uKCkpCi0gICAgICAgIHNlbGYuX2ZpeHR1
cmVpbmZvID0gZml4dHVyZWluZm8KLSAgICAgICAgc2VsZi5maXh0dXJlbmFtZXMgPSBmaXh0dXJl
aW5mby5uYW1lc19jbG9zdXJlCi0gICAgICAgIHNlbGYuX2luaXRyZXF1ZXN0KCkKLQotICAgICAg
ICAjOiBvcmlnaW5hbCBmdW5jdGlvbiBuYW1lLCB3aXRob3V0IGFueSBkZWNvcmF0aW9ucyAoZm9y
IGV4YW1wbGUKLSAgICAgICAgIzogcGFyYW1ldHJpemF0aW9uIGFkZHMgYSBgYCJbLi4uXSJgYCBz
dWZmaXggdG8gZnVuY3Rpb24gbmFtZXMpLgotICAgICAgICAjOgotICAgICAgICAjOiAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjAKLSAgICAgICAgc2VsZi5vcmlnaW5hbG5hbWUgPSBvcmlnaW5hbG5hbWUK
LQotICAgIGRlZiBfaW5pdHJlcXVlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuZnVuY2FyZ3MgPSB7
fQotICAgICAgICBpZiBzZWxmLl9pc3lpZWxkZWRmdW5jdGlvbigpOgotICAgICAgICAgICAgYXNz
ZXJ0IG5vdCBoYXNhdHRyKHNlbGYsICJjYWxsc3BlYyIpLCAoCi0gICAgICAgICAgICAgICAgInlp
ZWxkZWQgZnVuY3Rpb25zIChkZXByZWNhdGVkKSBjYW5ub3QgaGF2ZSBmdW5jYXJncyIpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJjYWxsc3BlYyIpOgotICAg
ICAgICAgICAgICAgIGNhbGxzcGVjID0gc2VsZi5jYWxsc3BlYwotICAgICAgICAgICAgICAgIGFz
c2VydCBub3QgY2FsbHNwZWMuZnVuY2FyZ3MKLSAgICAgICAgICAgICAgICBzZWxmLl9nZW5pZCA9
IGNhbGxzcGVjLmlkCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihjYWxsc3BlYywgInBhcmFt
Iik6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucGFyYW0gPSBjYWxsc3BlYy5wYXJhbQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0ID0gZml4dHVyZXMuRml4dHVyZVJlcXVlc3Qoc2VsZikKLQotICAg
IEBwcm9wZXJ0eQotICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSAgICAgICAgInVuZGVybHlpbmcg
cHl0aG9uICdmdW5jdGlvbicgb2JqZWN0IgotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLm9i
aiwgJ2ltX2Z1bmMnLCBzZWxmLm9iaikKLQotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAg
ICBuYW1lID0gc2VsZi5uYW1lCi0gICAgICAgIGkgPSBuYW1lLmZpbmQoIlsiKSAgIyBwYXJhbWV0
cml6YXRpb24KLSAgICAgICAgaWYgaSAhPSAtMToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lWzpp
XQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnBhcmVudC5vYmosIG5hbWUpCi0KLSAgICBA
cHJvcGVydHkKLSAgICBkZWYgX3B5ZnVuY2l0ZW0oc2VsZik6Ci0gICAgICAgICIoY29tcGF0b25s
eSkgZm9yIGNvZGUgZXhwZWN0aW5nIHB5dGVzdC0yLjIgc3R5bGUgcmVxdWVzdCBvYmplY3RzIgot
ICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9pc3lpZWxkZWRmdW5jdGlvbihzZWxmKToK
LSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgIl9hcmdzIiwgTm9uZSkgaXMgbm90IE5vbmUK
LQotICAgIGRlZiBydW50ZXN0KHNlbGYpOgotICAgICAgICAiIiIgZXhlY3V0ZSB0aGUgdW5kZXJs
eWluZyB0ZXN0IGZ1bmN0aW9uLiAiIiIKLSAgICAgICAgc2VsZi5paG9vay5weXRlc3RfcHlmdW5j
X2NhbGwocHlmdW5jaXRlbT1zZWxmKQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBz
dXBlcihGdW5jdGlvbiwgc2VsZikuc2V0dXAoKQotICAgICAgICBmaXh0dXJlcy5maWxsZml4dHVy
ZXMoc2VsZikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcHl0aG9uX2FwaS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvcHl0aG9uX2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODE5NjAyOTViMzgxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9weXRob25fYXBpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjE5ICswLDAgQEAKLWltcG9y
dCBtYXRoCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBweQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHpp
cAotCi1mcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBpc2NsYXNzCi1mcm9tIF9weXRlc3Qub3V0
Y29tZXMgaW1wb3J0IGZhaWwKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0KLQotZGVmIF9jbXBfcmFp
c2VzX3R5cGVfZXJyb3Ioc2VsZiwgb3RoZXIpOgotICAgICIiIl9fY21wX18gaW1wbGVtZW50YXRp
b24gd2hpY2ggcmFpc2VzIFR5cGVFcnJvci4gVXNlZAotICAgIGJ5IEFwcHJveCBiYXNlIGNsYXNz
ZXMgdG8gaW1wbGVtZW50IG9ubHkgPT0gYW5kICE9IGFuZCByYWlzZSBhCi0gICAgVHlwZUVycm9y
IGZvciBvdGhlciBjb21wYXJpc29ucy4KLQotICAgIE5lZWRlZCBpbiBQeXRob24gMiBvbmx5LCBQ
eXRob24gMyBhbGwgaXQgdGFrZXMgaXMgbm90IGltcGxlbWVudGluZyB0aGUKLSAgICBvdGhlciBv
cGVyYXRvcnMgYXQgYWxsLgotICAgICIiIgotICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQot
ICAgIHJhaXNlIFR5cGVFcnJvcignQ29tcGFyaXNvbiBvcGVyYXRvcnMgb3RoZXIgdGhhbiA9PSBh
bmQgIT0gbm90IHN1cHBvcnRlZCBieSBhcHByb3ggb2JqZWN0cycpCi0KLQotIyBidWlsdGluIHB5
dGVzdC5hcHByb3ggaGVscGVyCi0KLQotY2xhc3MgQXBwcm94QmFzZShvYmplY3QpOgotICAgICIi
IgotICAgIFByb3ZpZGUgc2hhcmVkIHV0aWxpdGllcyBmb3IgbWFraW5nIGFwcHJveGltYXRlIGNv
bXBhcmlzb25zIGJldHdlZW4gbnVtYmVycwotICAgIG9yIHNlcXVlbmNlcyBvZiBudW1iZXJzLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCByZWw9Tm9uZSwgYWJz
PU5vbmUsIG5hbl9vaz1GYWxzZSk6Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAot
ICAgICAgICBzZWxmLmFicyA9IGFicwotICAgICAgICBzZWxmLnJlbCA9IHJlbAotICAgICAgICBz
ZWxmLm5hbl9vayA9IG5hbl9vawotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCk6
Ci0gICAgICAgIHJldHVybiBhbGwoCi0gICAgICAgICAgICBhID09IHNlbGYuX2FwcHJveF9zY2Fs
YXIoeCkKLSAgICAgICAgICAgIGZvciBhLCB4IGluIHNlbGYuX3lpZWxkX2NvbXBhcmlzb25zKGFj
dHVhbCkpCi0KLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIGRlZiBfX25lX18oc2VsZiwgYWN0
dWFsKToKLSAgICAgICAgcmV0dXJuIG5vdCAoYWN0dWFsID09IHNlbGYpCi0KLSAgICBpZiBzeXMu
dmVyc2lvbl9pbmZvWzBdID09IDI6Ci0gICAgICAgIF9fY21wX18gPSBfY21wX3JhaXNlc190eXBl
X2Vycm9yCi0KLSAgICBkZWYgX2FwcHJveF9zY2FsYXIoc2VsZiwgeCk6Ci0gICAgICAgIHJldHVy
biBBcHByb3hTY2FsYXIoeCwgcmVsPXNlbGYucmVsLCBhYnM9c2VsZi5hYnMsIG5hbl9vaz1zZWxm
Lm5hbl9vaykKLQotICAgIGRlZiBfeWllbGRfY29tcGFyaXNvbnMoc2VsZiwgYWN0dWFsKToKLSAg
ICAgICAgIiIiCi0gICAgICAgIFlpZWxkIGFsbCB0aGUgcGFpcnMgb2YgbnVtYmVycyB0byBiZSBj
b21wYXJlZC4gIFRoaXMgaXMgdXNlZCB0bwotICAgICAgICBpbXBsZW1lbnQgdGhlIGBfX2VxX19g
IG1ldGhvZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IK
LQotCi1jbGFzcyBBcHByb3hOdW1weShBcHByb3hCYXNlKToKLSAgICAiIiIKLSAgICBQZXJmb3Jt
IGFwcHJveGltYXRlIGNvbXBhcmlzb25zIGZvciBudW1weSBhcnJheXMuCi0gICAgIiIiCi0KLSAg
ICAjIFRlbGwgbnVtcHkgdG8gdXNlIG91ciBgX19lcV9fYCBvcGVyYXRvciBpbnN0ZWFkIG9mIGl0
cy4KLSAgICBfX2FycmF5X3ByaW9yaXR5X18gPSAxMDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgIyBJdCBtaWdodCBiZSBuaWNlIHRvIHJld3JpdGUgdGhpcyBmdW5jdGlvbiB0
byBhY2NvdW50IGZvciB0aGUKLSAgICAgICAgIyBzaGFwZSBvZiB0aGUgYXJyYXkuLi4KLSAgICAg
ICAgcmV0dXJuICJhcHByb3goezAhcn0pIi5mb3JtYXQobGlzdCgKLSAgICAgICAgICAgIHNlbGYu
X2FwcHJveF9zY2FsYXIoeCkgZm9yIHggaW4gc2VsZi5leHBlY3RlZCkpCi0KLSAgICBpZiBzeXMu
dmVyc2lvbl9pbmZvWzBdID09IDI6Ci0gICAgICAgIF9fY21wX18gPSBfY21wX3JhaXNlc190eXBl
X2Vycm9yCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgIGltcG9ydCBu
dW1weSBhcyBucAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFjdHVhbCA9IG5wLmFzYXJy
YXkoYWN0dWFsKQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgJ3swfScgdG8gbnVtcHkubmRhcnJheSIuZm9ybWF0KGFj
dHVhbCkpCi0KLSAgICAgICAgaWYgYWN0dWFsLnNoYXBlICE9IHNlbGYuZXhwZWN0ZWQuc2hhcGU6
Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICByZXR1cm4gQXBwcm94QmFzZS5f
X2VxX18oc2VsZiwgYWN0dWFsKQotCi0gICAgZGVmIF95aWVsZF9jb21wYXJpc29ucyhzZWxmLCBh
Y3R1YWwpOgotICAgICAgICBpbXBvcnQgbnVtcHkgYXMgbnAKLQotICAgICAgICAjIFdlIGNhbiBi
ZSBzdXJlIHRoYXQgYGFjdHVhbGAgaXMgYSBudW1weSBhcnJheSwgYmVjYXVzZSBpdCdzCi0gICAg
ICAgICMgY2FzdGVkIGluIGBfX2VxX19gIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gYEFwcHJveEJh
c2UuX19lcV9fYCwKLSAgICAgICAgIyB3aGljaCBpcyB0aGUgb25seSBtZXRob2QgdGhhdCBjYWxs
cyB0aGlzIG9uZS4KLSAgICAgICAgZm9yIGkgaW4gbnAubmRpbmRleChzZWxmLmV4cGVjdGVkLnNo
YXBlKToKLSAgICAgICAgICAgIHlpZWxkIGFjdHVhbFtpXSwgc2VsZi5leHBlY3RlZFtpXQotCi0K
LWNsYXNzIEFwcHJveE1hcHBpbmcoQXBwcm94QmFzZSk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBh
cHByb3hpbWF0ZSBjb21wYXJpc29ucyBmb3IgbWFwcGluZ3Mgd2hlcmUgdGhlIHZhbHVlcyBhcmUg
bnVtYmVycwotICAgICh0aGUga2V5cyBjYW4gYmUgYW55dGhpbmcpLgotICAgICIiIgotCi0gICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gImFwcHJveCh7MCFyfSkiLmZvcm1h
dChkaWN0KAotICAgICAgICAgICAgKGssIHNlbGYuX2FwcHJveF9zY2FsYXIodikpCi0gICAgICAg
ICAgICBmb3IgaywgdiBpbiBzZWxmLmV4cGVjdGVkLml0ZW1zKCkpKQotCi0gICAgZGVmIF9fZXFf
XyhzZWxmLCBhY3R1YWwpOgotICAgICAgICBpZiBzZXQoYWN0dWFsLmtleXMoKSkgIT0gc2V0KHNl
bGYuZXhwZWN0ZWQua2V5cygpKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAg
IHJldHVybiBBcHByb3hCYXNlLl9fZXFfXyhzZWxmLCBhY3R1YWwpCi0KLSAgICBkZWYgX3lpZWxk
X2NvbXBhcmlzb25zKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgIGZvciBrIGluIHNlbGYuZXhwZWN0
ZWQua2V5cygpOgotICAgICAgICAgICAgeWllbGQgYWN0dWFsW2tdLCBzZWxmLmV4cGVjdGVkW2td
Ci0KLQotY2xhc3MgQXBwcm94U2VxdWVuY2UoQXBwcm94QmFzZSk6Ci0gICAgIiIiCi0gICAgUGVy
Zm9ybSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyBmb3Igc2VxdWVuY2VzIG9mIG51bWJlcnMuCi0g
ICAgIiIiCi0KLSAgICAjIFRlbGwgbnVtcHkgdG8gdXNlIG91ciBgX19lcV9fYCBvcGVyYXRvciBp
bnN0ZWFkIG9mIGl0cy4KLSAgICBfX2FycmF5X3ByaW9yaXR5X18gPSAxMDAKLQotICAgIGRlZiBf
X3JlcHJfXyhzZWxmKToKLSAgICAgICAgc2VxX3R5cGUgPSB0eXBlKHNlbGYuZXhwZWN0ZWQpCi0g
ICAgICAgIGlmIHNlcV90eXBlIG5vdCBpbiAodHVwbGUsIGxpc3QsIHNldCk6Ci0gICAgICAgICAg
ICBzZXFfdHlwZSA9IGxpc3QKLSAgICAgICAgcmV0dXJuICJhcHByb3goezAhcn0pIi5mb3JtYXQo
c2VxX3R5cGUoCi0gICAgICAgICAgICBzZWxmLl9hcHByb3hfc2NhbGFyKHgpIGZvciB4IGluIHNl
bGYuZXhwZWN0ZWQpKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBhY3R1YWwpOgotICAgICAgICBp
ZiBsZW4oYWN0dWFsKSAhPSBsZW4oc2VsZi5leHBlY3RlZCk6Ci0gICAgICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICAgICAgcmV0dXJuIEFwcHJveEJhc2UuX19lcV9fKHNlbGYsIGFjdHVhbCkKLQot
ICAgIGRlZiBfeWllbGRfY29tcGFyaXNvbnMoc2VsZiwgYWN0dWFsKToKLSAgICAgICAgcmV0dXJu
IHppcChhY3R1YWwsIHNlbGYuZXhwZWN0ZWQpCi0KLQotY2xhc3MgQXBwcm94U2NhbGFyKEFwcHJv
eEJhc2UpOgotICAgICIiIgotICAgIFBlcmZvcm0gYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgZm9y
IHNpbmdsZSBudW1iZXJzIG9ubHkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6
Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYSBzdHJpbmcgY29tbXVuaWNhdGluZyBib3Ro
IHRoZSBleHBlY3RlZCB2YWx1ZSBhbmQgdGhlIHRvbGVyYW5jZQotICAgICAgICBmb3IgdGhlIGNv
bXBhcmlzb24gYmVpbmcgbWFkZSwgZS5nLiAnMS4wICstIDFlLTYnLiAgVXNlIHRoZSB1bmljb2Rl
Ci0gICAgICAgIHBsdXMvbWludXMgc3ltYm9sIGlmIHRoaXMgaXMgcHl0aG9uMyAoaXQncyB0b28g
aGFyZCB0byBnZXQgcmlnaHQgZm9yCi0gICAgICAgIHB5dGhvbjIpLgotICAgICAgICAiIiIKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmV4cGVjdGVkLCBjb21wbGV4KToKLSAgICAgICAgICAg
IHJldHVybiBzdHIoc2VsZi5leHBlY3RlZCkKLQotICAgICAgICAjIEluZmluaXRpZXMgYXJlbid0
IGNvbXBhcmVkIHVzaW5nIHRvbGVyYW5jZXMsIHNvIGRvbid0IHNob3cgYQotICAgICAgICAjIHRv
bGVyYW5jZS4KLSAgICAgICAgaWYgbWF0aC5pc2luZihzZWxmLmV4cGVjdGVkKToKLSAgICAgICAg
ICAgIHJldHVybiBzdHIoc2VsZi5leHBlY3RlZCkKLQotICAgICAgICAjIElmIGEgc2Vuc2libGUg
dG9sZXJhbmNlIGNhbid0IGJlIGNhbGN1bGF0ZWQsIHNlbGYudG9sZXJhbmNlIHdpbGwKLSAgICAg
ICAgIyByYWlzZSBhIFZhbHVlRXJyb3IuICBJbiB0aGlzIGNhc2UsIGRpc3BsYXkgJz8/PycuCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHZldHRlZF90b2xlcmFuY2UgPSAnezouMWV9Jy5mb3Jt
YXQoc2VsZi50b2xlcmFuY2UpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAg
ICAgdmV0dGVkX3RvbGVyYW5jZSA9ICc/Pz8nCi0KLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5m
b1swXSA9PSAyOgotICAgICAgICAgICAgcmV0dXJuICd7MH0gKy0gezF9Jy5mb3JtYXQoc2VsZi5l
eHBlY3RlZCwgdmV0dGVkX3RvbGVyYW5jZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJl
dHVybiB1J3swfSBcdTAwYjEgezF9Jy5mb3JtYXQoc2VsZi5leHBlY3RlZCwgdmV0dGVkX3RvbGVy
YW5jZSkKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToKLSAgICAgICAgIiIiCi0gICAg
ICAgIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZXhwZWN0
ZWQgdmFsdWUgd2l0aGluCi0gICAgICAgIHRoZSBwcmUtc3BlY2lmaWVkIHRvbGVyYW5jZS4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgIyBTaG9ydC1jaXJjdWl0IGV4YWN0IGVxdWFsaXR5LgotICAg
ICAgICBpZiBhY3R1YWwgPT0gc2VsZi5leHBlY3RlZDoKLSAgICAgICAgICAgIHJldHVybiBUcnVl
Ci0KLSAgICAgICAgIyBBbGxvdyB0aGUgdXNlciB0byBjb250cm9sIHdoZXRoZXIgTmFOcyBhcmUg
Y29uc2lkZXJlZCBlcXVhbCB0byBlYWNoCi0gICAgICAgICMgb3RoZXIgb3Igbm90LiAgVGhlIGFi
cygpIGNhbGxzIGFyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGNvbXBsZXgKLSAgICAgICAgIyBu
dW1iZXJzLgotICAgICAgICBpZiBtYXRoLmlzbmFuKGFicyhzZWxmLmV4cGVjdGVkKSk6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5uYW5fb2sgYW5kIG1hdGguaXNuYW4oYWJzKGFjdHVhbCkpCi0K
LSAgICAgICAgIyBJbmZpbml0eSBzaG91bGRuJ3QgYmUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBh
bnl0aGluZyBidXQgaXRzZWxmLCBidXQKLSAgICAgICAgIyBpZiB0aGVyZSdzIGEgcmVsYXRpdmUg
dG9sZXJhbmNlLCBpdCB3aWxsIGJlIGluZmluaXRlIGFuZCBpbmZpbml0eQotICAgICAgICAjIHdp
bGwgc2VlbSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGV2ZXJ5dGhpbmcuICBUaGUgZXF1YWwtdG8t
aXRzZWxmCi0gICAgICAgICMgY2FzZSB3b3VsZCBoYXZlIGJlZW4gc2hvcnQgY2lyY3VpdGVkIGFi
b3ZlLCBzbyBoZXJlIHdlIGNhbiBqdXN0Ci0gICAgICAgICMgcmV0dXJuIGZhbHNlIGlmIHRoZSBl
eHBlY3RlZCB2YWx1ZSBpcyBpbmZpbml0ZS4gIFRoZSBhYnMoKSBjYWxsIGlzCi0gICAgICAgICMg
Zm9yIGNvbXBhdGliaWxpdHkgd2l0aCBjb21wbGV4IG51bWJlcnMuCi0gICAgICAgIGlmIG1hdGgu
aXNpbmYoYWJzKHNlbGYuZXhwZWN0ZWQpKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgICAgICMgUmV0dXJuIHRydWUgaWYgdGhlIHR3byBudW1iZXJzIGFyZSB3aXRoaW4gdGhlIHRv
bGVyYW5jZS4KLSAgICAgICAgcmV0dXJuIGFicyhzZWxmLmV4cGVjdGVkIC0gYWN0dWFsKSA8PSBz
ZWxmLnRvbGVyYW5jZQotCi0gICAgX19oYXNoX18gPSBOb25lCi0KLSAgICBAcHJvcGVydHkKLSAg
ICBkZWYgdG9sZXJhbmNlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSB0
b2xlcmFuY2UgZm9yIHRoZSBjb21wYXJpc29uLiAgVGhpcyBjb3VsZCBiZSBlaXRoZXIgYW4KLSAg
ICAgICAgYWJzb2x1dGUgdG9sZXJhbmNlIG9yIGEgcmVsYXRpdmUgdG9sZXJhbmNlLCBkZXBlbmRp
bmcgb24gd2hhdCB0aGUgdXNlcgotICAgICAgICBzcGVjaWZpZWQgb3Igd2hpY2ggd291bGQgYmUg
bGFyZ2VyLgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHNldF9kZWZhdWx0KHgsIGRlZmF1bHQp
OgotICAgICAgICAgICAgcmV0dXJuIHggaWYgeCBpcyBub3QgTm9uZSBlbHNlIGRlZmF1bHQKLQot
ICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCB0aGUgYWJzb2x1dGUgdG9sZXJhbmNlIHNob3VsZCBi
ZS4gIGBgc2VsZi5hYnNgYCBpcwotICAgICAgICAjIGVpdGhlciBOb25lIG9yIGEgdmFsdWUgc3Bl
Y2lmaWVkIGJ5IHRoZSB1c2VyLgotICAgICAgICBhYnNvbHV0ZV90b2xlcmFuY2UgPSBzZXRfZGVm
YXVsdChzZWxmLmFicywgMWUtMTIpCi0KLSAgICAgICAgaWYgYWJzb2x1dGVfdG9sZXJhbmNlIDwg
MDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFic29sdXRlIHRvbGVyYW5jZSBjYW4n
dCBiZSBuZWdhdGl2ZToge30iLmZvcm1hdChhYnNvbHV0ZV90b2xlcmFuY2UpKQotICAgICAgICBp
ZiBtYXRoLmlzbmFuKGFic29sdXRlX3RvbGVyYW5jZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJhYnNvbHV0ZSB0b2xlcmFuY2UgY2FuJ3QgYmUgTmFOLiIpCi0KLSAgICAgICAgIyBJ
ZiB0aGUgdXNlciBzcGVjaWZpZWQgYW4gYWJzb2x1dGUgdG9sZXJhbmNlIGJ1dCBub3QgYSByZWxh
dGl2ZSBvbmUsCi0gICAgICAgICMganVzdCByZXR1cm4gdGhlIGFic29sdXRlIHRvbGVyYW5jZS4K
LSAgICAgICAgaWYgc2VsZi5yZWwgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYuYWJzIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBhYnNvbHV0ZV90b2xlcmFuY2UKLQot
ICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIHNob3VsZCBi
ZS4gIGBgc2VsZi5yZWxgYCBpcwotICAgICAgICAjIGVpdGhlciBOb25lIG9yIGEgdmFsdWUgc3Bl
Y2lmaWVkIGJ5IHRoZSB1c2VyLiAgVGhpcyBpcyBkb25lIGFmdGVyCi0gICAgICAgICMgd2UndmUg
bWFkZSBzdXJlIHRoZSB1c2VyIGRpZG4ndCBhc2sgZm9yIGFuIGFic29sdXRlIHRvbGVyYW5jZSBv
bmx5LAotICAgICAgICAjIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByYWlzZSBlcnJvcnMgYWJv
dXQgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZSBpZgotICAgICAgICAjIHdlIGFyZW4ndCBldmVuIGdv
aW5nIHRvIHVzZSBpdC4KLSAgICAgICAgcmVsYXRpdmVfdG9sZXJhbmNlID0gc2V0X2RlZmF1bHQo
c2VsZi5yZWwsIDFlLTYpICogYWJzKHNlbGYuZXhwZWN0ZWQpCi0KLSAgICAgICAgaWYgcmVsYXRp
dmVfdG9sZXJhbmNlIDwgMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlbGF0aXZl
IHRvbGVyYW5jZSBjYW4ndCBiZSBuZWdhdGl2ZToge30iLmZvcm1hdChhYnNvbHV0ZV90b2xlcmFu
Y2UpKQotICAgICAgICBpZiBtYXRoLmlzbmFuKHJlbGF0aXZlX3RvbGVyYW5jZSk6Ci0gICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWxhdGl2ZSB0b2xlcmFuY2UgY2FuJ3QgYmUgTmFOLiIp
Ci0KLSAgICAgICAgIyBSZXR1cm4gdGhlIGxhcmdlciBvZiB0aGUgcmVsYXRpdmUgYW5kIGFic29s
dXRlIHRvbGVyYW5jZXMuCi0gICAgICAgIHJldHVybiBtYXgocmVsYXRpdmVfdG9sZXJhbmNlLCBh
YnNvbHV0ZV90b2xlcmFuY2UpCi0KLQotZGVmIGFwcHJveChleHBlY3RlZCwgcmVsPU5vbmUsIGFi
cz1Ob25lLCBuYW5fb2s9RmFsc2UpOgotICAgICIiIgotICAgIEFzc2VydCB0aGF0IHR3byBudW1i
ZXJzIChvciB0d28gc2V0cyBvZiBudW1iZXJzKSBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlcgotICAg
IHdpdGhpbiBzb21lIHRvbGVyYW5jZS4KLQotICAgIER1ZSB0byB0aGUgYGludHJpY2FjaWVzIG9m
IGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWNgX18sIG51bWJlcnMgdGhhdCB3ZQotICAgIHdvdWxk
IGludHVpdGl2ZWx5IGV4cGVjdCB0byBiZSBlcXVhbCBhcmUgbm90IGFsd2F5cyBzbzo6Ci0KLSAg
ICAgICAgPj4+IDAuMSArIDAuMiA9PSAwLjMKLSAgICAgICAgRmFsc2UKLQotICAgIF9fIGh0dHBz
Oi8vZG9jcy5weXRob24ub3JnLzMvdHV0b3JpYWwvZmxvYXRpbmdwb2ludC5odG1sCi0KLSAgICBU
aGlzIHByb2JsZW0gaXMgY29tbW9ubHkgZW5jb3VudGVyZWQgd2hlbiB3cml0aW5nIHRlc3RzLCBl
LmcuIHdoZW4gbWFraW5nCi0gICAgc3VyZSB0aGF0IGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhcmUg
d2hhdCB5b3UgZXhwZWN0IHRoZW0gdG8gYmUuICBPbmUgd2F5IHRvCi0gICAgZGVhbCB3aXRoIHRo
aXMgcHJvYmxlbSBpcyB0byBhc3NlcnQgdGhhdCB0d28gZmxvYXRpbmctcG9pbnQgbnVtYmVycyBh
cmUKLSAgICBlcXVhbCB0byB3aXRoaW4gc29tZSBhcHByb3ByaWF0ZSB0b2xlcmFuY2U6OgotCi0g
ICAgICAgID4+PiBhYnMoKDAuMSArIDAuMikgLSAwLjMpIDwgMWUtNgotICAgICAgICBUcnVlCi0K
LSAgICBIb3dldmVyLCBjb21wYXJpc29ucyBsaWtlIHRoaXMgYXJlIHRlZGlvdXMgdG8gd3JpdGUg
YW5kIGRpZmZpY3VsdCB0bwotICAgIHVuZGVyc3RhbmQuICBGdXJ0aGVybW9yZSwgYWJzb2x1dGUg
Y29tcGFyaXNvbnMgbGlrZSB0aGUgb25lIGFib3ZlIGFyZQotICAgIHVzdWFsbHkgZGlzY291cmFn
ZWQgYmVjYXVzZSB0aGVyZSdzIG5vIHRvbGVyYW5jZSB0aGF0IHdvcmtzIHdlbGwgZm9yIGFsbAot
ICAgIHNpdHVhdGlvbnMuICBgYDFlLTZgYCBpcyBnb29kIGZvciBudW1iZXJzIGFyb3VuZCBgYDFg
YCwgYnV0IHRvbyBzbWFsbCBmb3IKLSAgICB2ZXJ5IGJpZyBudW1iZXJzIGFuZCB0b28gYmlnIGZv
ciB2ZXJ5IHNtYWxsIG9uZXMuICBJdCdzIGJldHRlciB0byBleHByZXNzCi0gICAgdGhlIHRvbGVy
YW5jZSBhcyBhIGZyYWN0aW9uIG9mIHRoZSBleHBlY3RlZCB2YWx1ZSwgYnV0IHJlbGF0aXZlIGNv
bXBhcmlzb25zCi0gICAgbGlrZSB0aGF0IGFyZSBldmVuIG1vcmUgZGlmZmljdWx0IHRvIHdyaXRl
IGNvcnJlY3RseSBhbmQgY29uY2lzZWx5LgotCi0gICAgVGhlIGBgYXBwcm94YGAgY2xhc3MgcGVy
Zm9ybXMgZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbnMgdXNpbmcgYSBzeW50YXgKLSAgICB0aGF0
J3MgYXMgaW50dWl0aXZlIGFzIHBvc3NpYmxlOjoKLQotICAgICAgICA+Pj4gZnJvbSBweXRlc3Qg
aW1wb3J0IGFwcHJveAotICAgICAgICA+Pj4gMC4xICsgMC4yID09IGFwcHJveCgwLjMpCi0gICAg
ICAgIFRydWUKLQotICAgIFRoZSBzYW1lIHN5bnRheCBhbHNvIHdvcmtzIGZvciBzZXF1ZW5jZXMg
b2YgbnVtYmVyczo6Ci0KLSAgICAgICAgPj4+ICgwLjEgKyAwLjIsIDAuMiArIDAuNCkgPT0gYXBw
cm94KCgwLjMsIDAuNikpCi0gICAgICAgIFRydWUKLQotICAgIERpY3Rpb25hcnkgKnZhbHVlcyo6
OgotCi0gICAgICAgID4+PiB7J2EnOiAwLjEgKyAwLjIsICdiJzogMC4yICsgMC40fSA9PSBhcHBy
b3goeydhJzogMC4zLCAnYic6IDAuNn0pCi0gICAgICAgIFRydWUKLQotICAgIEFuZCBgYG51bXB5
YGAgYXJyYXlzOjoKLQotICAgICAgICA+Pj4gaW1wb3J0IG51bXB5IGFzIG5wICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9jdGVzdDog
K1NLSVAKLSAgICAgICAgPj4+IG5wLmFycmF5KFswLjEsIDAuMl0pICsgbnAuYXJyYXkoWzAuMiwg
MC40XSkgPT0gYXBwcm94KG5wLmFycmF5KFswLjMsIDAuNl0pKSAjIGRvY3Rlc3Q6ICtTS0lQCi0g
ICAgICAgIFRydWUKLQotICAgIEJ5IGRlZmF1bHQsIGBgYXBwcm94YGAgY29uc2lkZXJzIG51bWJl
cnMgd2l0aGluIGEgcmVsYXRpdmUgdG9sZXJhbmNlIG9mCi0gICAgYGAxZS02YGAgKGkuZS4gb25l
IHBhcnQgaW4gYSBtaWxsaW9uKSBvZiBpdHMgZXhwZWN0ZWQgdmFsdWUgdG8gYmUgZXF1YWwuCi0g
ICAgVGhpcyB0cmVhdG1lbnQgd291bGQgbGVhZCB0byBzdXJwcmlzaW5nIHJlc3VsdHMgaWYgdGhl
IGV4cGVjdGVkIHZhbHVlIHdhcwotICAgIGBgMC4wYGAsIGJlY2F1c2Ugbm90aGluZyBidXQgYGAw
LjBgYCBpdHNlbGYgaXMgcmVsYXRpdmVseSBjbG9zZSB0byBgYDAuMGBgLgotICAgIFRvIGhhbmRs
ZSB0aGlzIGNhc2UgbGVzcyBzdXJwcmlzaW5nbHksIGBgYXBwcm94YGAgYWxzbyBjb25zaWRlcnMg
bnVtYmVycwotICAgIHdpdGhpbiBhbiBhYnNvbHV0ZSB0b2xlcmFuY2Ugb2YgYGAxZS0xMmBgIG9m
IGl0cyBleHBlY3RlZCB2YWx1ZSB0byBiZQotICAgIGVxdWFsLiAgSW5maW5pdHkgYW5kIE5hTiBh
cmUgc3BlY2lhbCBjYXNlcy4gIEluZmluaXR5IGlzIG9ubHkgY29uc2lkZXJlZAotICAgIGVxdWFs
IHRvIGl0c2VsZiwgcmVnYXJkbGVzcyBvZiB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlLiAgTmFOIGlz
IG5vdAotICAgIGNvbnNpZGVyZWQgZXF1YWwgdG8gYW55dGhpbmcgYnkgZGVmYXVsdCwgYnV0IHlv
dSBjYW4gbWFrZSBpdCBiZSBlcXVhbCB0bwotICAgIGl0c2VsZiBieSBzZXR0aW5nIHRoZSBgYG5h
bl9va2BgIGFyZ3VtZW50IHRvIFRydWUuICAoVGhpcyBpcyBtZWFudCB0bwotICAgIGZhY2lsaXRh
dGUgY29tcGFyaW5nIGFycmF5cyB0aGF0IHVzZSBOYU4gdG8gbWVhbiAibm8gZGF0YSIuKQotCi0g
ICAgQm90aCB0aGUgcmVsYXRpdmUgYW5kIGFic29sdXRlIHRvbGVyYW5jZXMgY2FuIGJlIGNoYW5n
ZWQgYnkgcGFzc2luZwotICAgIGFyZ3VtZW50cyB0byB0aGUgYGBhcHByb3hgYCBjb25zdHJ1Y3Rv
cjo6Ci0KLSAgICAgICAgPj4+IDEuMDAwMSA9PSBhcHByb3goMSkKLSAgICAgICAgRmFsc2UKLSAg
ICAgICAgPj4+IDEuMDAwMSA9PSBhcHByb3goMSwgcmVsPTFlLTMpCi0gICAgICAgIFRydWUKLSAg
ICAgICAgPj4+IDEuMDAwMSA9PSBhcHByb3goMSwgYWJzPTFlLTMpCi0gICAgICAgIFRydWUKLQot
ICAgIElmIHlvdSBzcGVjaWZ5IGBgYWJzYGAgYnV0IG5vdCBgYHJlbGBgLCB0aGUgY29tcGFyaXNv
biB3aWxsIG5vdCBjb25zaWRlcgotICAgIHRoZSByZWxhdGl2ZSB0b2xlcmFuY2UgYXQgYWxsLiAg
SW4gb3RoZXIgd29yZHMsIHR3byBudW1iZXJzIHRoYXQgYXJlIHdpdGhpbgotICAgIHRoZSBkZWZh
dWx0IHJlbGF0aXZlIHRvbGVyYW5jZSBvZiBgYDFlLTZgYCB3aWxsIHN0aWxsIGJlIGNvbnNpZGVy
ZWQgdW5lcXVhbAotICAgIGlmIHRoZXkgZXhjZWVkIHRoZSBzcGVjaWZpZWQgYWJzb2x1dGUgdG9s
ZXJhbmNlLiAgSWYgeW91IHNwZWNpZnkgYm90aAotICAgIGBgYWJzYGAgYW5kIGBgcmVsYGAsIHRo
ZSBudW1iZXJzIHdpbGwgYmUgY29uc2lkZXJlZCBlcXVhbCBpZiBlaXRoZXIKLSAgICB0b2xlcmFu
Y2UgaXMgbWV0OjoKLQotICAgICAgICA+Pj4gMSArIDFlLTggPT0gYXBwcm94KDEpCi0gICAgICAg
IFRydWUKLSAgICAgICAgPj4+IDEgKyAxZS04ID09IGFwcHJveCgxLCBhYnM9MWUtMTIpCi0gICAg
ICAgIEZhbHNlCi0gICAgICAgID4+PiAxICsgMWUtOCA9PSBhcHByb3goMSwgcmVsPTFlLTYsIGFi
cz0xZS0xMikKLSAgICAgICAgVHJ1ZQotCi0gICAgSWYgeW91J3JlIHRoaW5raW5nIGFib3V0IHVz
aW5nIGBgYXBwcm94YGAsIHRoZW4geW91IG1pZ2h0IHdhbnQgdG8ga25vdyBob3cKLSAgICBpdCBj
b21wYXJlcyB0byBvdGhlciBnb29kIHdheXMgb2YgY29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMuICBBbGwgb2YKLSAgICB0aGVzZSBhbGdvcml0aG1zIGFyZSBiYXNlZCBvbiByZWxhdGl2
ZSBhbmQgYWJzb2x1dGUgdG9sZXJhbmNlcyBhbmQgc2hvdWxkCi0gICAgYWdyZWUgZm9yIHRoZSBt
b3N0IHBhcnQsIGJ1dCB0aGV5IGRvIGhhdmUgbWVhbmluZ2Z1bCBkaWZmZXJlbmNlczoKLQotICAg
IC0gYGBtYXRoLmlzY2xvc2UoYSwgYiwgcmVsX3RvbD0xZS05LCBhYnNfdG9sPTAuMClgYDogIFRy
dWUgaWYgdGhlIHJlbGF0aXZlCi0gICAgICB0b2xlcmFuY2UgaXMgbWV0IHcuci50LiBlaXRoZXIg
YGBhYGAgb3IgYGBiYGAgb3IgaWYgdGhlIGFic29sdXRlCi0gICAgICB0b2xlcmFuY2UgaXMgbWV0
LiAgQmVjYXVzZSB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIGlzIGNhbGN1bGF0ZWQgdy5yLnQuCi0g
ICAgICBib3RoIGBgYWBgIGFuZCBgYGJgYCwgdGhpcyB0ZXN0IGlzIHN5bW1ldHJpYyAoaS5lLiAg
bmVpdGhlciBgYGFgYCBub3IKLSAgICAgIGBgYmBgIGlzIGEgInJlZmVyZW5jZSB2YWx1ZSIpLiAg
WW91IGhhdmUgdG8gc3BlY2lmeSBhbiBhYnNvbHV0ZSB0b2xlcmFuY2UKLSAgICAgIGlmIHlvdSB3
YW50IHRvIGNvbXBhcmUgdG8gYGAwLjBgYCBiZWNhdXNlIHRoZXJlIGlzIG5vIHRvbGVyYW5jZSBi
eQotICAgICAgZGVmYXVsdC4gIE9ubHkgYXZhaWxhYmxlIGluIHB5dGhvbj49My41LiAgYE1vcmUg
aW5mb3JtYXRpb24uLi5gX18KLQotICAgICAgX18gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9s
aWJyYXJ5L21hdGguaHRtbCNtYXRoLmlzY2xvc2UKLQotICAgIC0gYGBudW1weS5pc2Nsb3NlKGEs
IGIsIHJ0b2w9MWUtNSwgYXRvbD0xZS04KWBgOiBUcnVlIGlmIHRoZSBkaWZmZXJlbmNlCi0gICAg
ICBiZXR3ZWVuIGBgYWBgIGFuZCBgYGJgYCBpcyBsZXNzIHRoYXQgdGhlIHN1bSBvZiB0aGUgcmVs
YXRpdmUgdG9sZXJhbmNlCi0gICAgICB3LnIudC4gYGBiYGAgYW5kIHRoZSBhYnNvbHV0ZSB0b2xl
cmFuY2UuICBCZWNhdXNlIHRoZSByZWxhdGl2ZSB0b2xlcmFuY2UKLSAgICAgIGlzIG9ubHkgY2Fs
Y3VsYXRlZCB3LnIudC4gYGBiYGAsIHRoaXMgdGVzdCBpcyBhc3ltbWV0cmljIGFuZCB5b3UgY2Fu
Ci0gICAgICB0aGluayBvZiBgYGJgYCBhcyB0aGUgcmVmZXJlbmNlIHZhbHVlLiAgU3VwcG9ydCBm
b3IgY29tcGFyaW5nIHNlcXVlbmNlcwotICAgICAgaXMgcHJvdmlkZWQgYnkgYGBudW1weS5hbGxj
bG9zZWBgLiAgYE1vcmUgaW5mb3JtYXRpb24uLi5gX18KLQotICAgICAgX18gaHR0cDovL2RvY3Mu
c2NpcHkub3JnL2RvYy9udW1weS0xLjEwLjAvcmVmZXJlbmNlL2dlbmVyYXRlZC9udW1weS5pc2Ns
b3NlLmh0bWwKLQotICAgIC0gYGB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRBbG1vc3RFcXVhbChh
LCBiKWBgOiBUcnVlIGlmIGBgYWBgIGFuZCBgYGJgYAotICAgICAgYXJlIHdpdGhpbiBhbiBhYnNv
bHV0ZSB0b2xlcmFuY2Ugb2YgYGAxZS03YGAuICBObyByZWxhdGl2ZSB0b2xlcmFuY2UgaXMKLSAg
ICAgIGNvbnNpZGVyZWQgYW5kIHRoZSBhYnNvbHV0ZSB0b2xlcmFuY2UgY2Fubm90IGJlIGNoYW5n
ZWQsIHNvIHRoaXMgZnVuY3Rpb24KLSAgICAgIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgdmVyeSBs
YXJnZSBvciB2ZXJ5IHNtYWxsIG51bWJlcnMuICBBbHNvLCBpdCdzIG9ubHkKLSAgICAgIGF2YWls
YWJsZSBpbiBzdWJjbGFzc2VzIG9mIGBgdW5pdHRlc3QuVGVzdENhc2VgYCBhbmQgaXQncyB1Z2x5
IGJlY2F1c2UgaXQKLSAgICAgIGRvZXNuJ3QgZm9sbG93IFBFUDguICBgTW9yZSBpbmZvcm1hdGlv
bi4uLmBfXwotCi0gICAgICBfXyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5p
dHRlc3QuaHRtbCN1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRBbG1vc3RFcXVhbAotCi0gICAgLSBg
YGEgPT0gcHl0ZXN0LmFwcHJveChiLCByZWw9MWUtNiwgYWJzPTFlLTEyKWBgOiBUcnVlIGlmIHRo
ZSByZWxhdGl2ZQotICAgICAgdG9sZXJhbmNlIGlzIG1ldCB3LnIudC4gYGBiYGAgb3IgaWYgdGhl
IGFic29sdXRlIHRvbGVyYW5jZSBpcyBtZXQuCi0gICAgICBCZWNhdXNlIHRoZSByZWxhdGl2ZSB0
b2xlcmFuY2UgaXMgb25seSBjYWxjdWxhdGVkIHcuci50LiBgYGJgYCwgdGhpcyB0ZXN0Ci0gICAg
ICBpcyBhc3ltbWV0cmljIGFuZCB5b3UgY2FuIHRoaW5rIG9mIGBgYmBgIGFzIHRoZSByZWZlcmVu
Y2UgdmFsdWUuICBJbiB0aGUKLSAgICAgIHNwZWNpYWwgY2FzZSB0aGF0IHlvdSBleHBsaWNpdGx5
IHNwZWNpZnkgYW4gYWJzb2x1dGUgdG9sZXJhbmNlIGJ1dCBub3QgYQotICAgICAgcmVsYXRpdmUg
dG9sZXJhbmNlLCBvbmx5IHRoZSBhYnNvbHV0ZSB0b2xlcmFuY2UgaXMgY29uc2lkZXJlZC4KLQot
ICAgIC4uIHdhcm5pbmc6OgotCi0gICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLQotICAg
ICAgIEluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVudCBiZWhhdmlvciwgYGBUeXBlRXJyb3Jg
YCBpcwotICAgICAgIHJhaXNlZCBmb3IgYGA+YGAsIGBgPj1gYCwgYGA8YGAgYW5kIGBgPD1gYCBj
b21wYXJpc29ucy4KLSAgICAgICBUaGUgZXhhbXBsZSBiZWxvdyBpbGx1c3RyYXRlcyB0aGUgcHJv
YmxlbTo6Ci0KLSAgICAgICAgICAgYXNzZXJ0IGFwcHJveCgwLjEpID4gMC4xICsgMWUtMTAgICMg
Y2FsbHMgYXBwcm94KDAuMSkuX19ndF9fKDAuMSArIDFlLTEwKQotICAgICAgICAgICBhc3NlcnQg
MC4xICsgMWUtMTAgPiBhcHByb3goMC4xKSAgIyBjYWxscyBhcHByb3goMC4xKS5fX2x0X18oMC4x
ICsgMWUtMTApCi0KLSAgICAgICBJbiB0aGUgc2Vjb25kIGV4YW1wbGUgb25lIGV4cGVjdHMgYGBh
cHByb3goMC4xKS5fX2xlX18oMC4xICsgMWUtMTApYGAKLSAgICAgICB0byBiZSBjYWxsZWQuIEJ1
dCBpbnN0ZWFkLCBgYGFwcHJveCgwLjEpLl9fbHRfXygwLjEgKyAxZS0xMClgYCBpcyB1c2VkIHRv
Ci0gICAgICAgY29tcGFyaXNvbi4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjYWxsIGhpZXJhcmNoeSBv
ZiByaWNoIGNvbXBhcmlzb25zCi0gICAgICAgZm9sbG93cyBhIGZpeGVkIGJlaGF2aW9yLiBgTW9y
ZSBpbmZvcm1hdGlvbi4uLmBfXwotCi0gICAgICAgX18gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcv
My9yZWZlcmVuY2UvZGF0YW1vZGVsLmh0bWwjb2JqZWN0Ll9fZ2VfXwotICAgICIiIgotCi0gICAg
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTWFwcGluZywgU2VxdWVuY2UKLSAgICBmcm9tIF9weXRl
c3QuY29tcGF0IGltcG9ydCBTVFJJTkdfVFlQRVMgYXMgU3RyaW5nCi0KLSAgICAjIERlbGVnYXRl
IHRoZSBjb21wYXJpc29uIHRvIGEgY2xhc3MgdGhhdCBrbm93cyBob3cgdG8gZGVhbCB3aXRoIHRo
ZSB0eXBlCi0gICAgIyBvZiB0aGUgZXhwZWN0ZWQgdmFsdWUgKGUuZy4gaW50LCBmbG9hdCwgbGlz
dCwgZGljdCwgbnVtcHkuYXJyYXksIGV0YykuCi0gICAgIwotICAgICMgVGhpcyBhcmNoaXRlY3R1
cmUgaXMgcmVhbGx5IGRyaXZlbiBieSB0aGUgbmVlZCB0byBzdXBwb3J0IG51bXB5IGFycmF5cy4K
LSAgICAjIFRoZSBvbmx5IHdheSB0byBvdmVycmlkZSBgPT1gIGZvciBhcnJheXMgd2l0aG91dCBy
ZXF1aXJpbmcgdGhhdCBhcHByb3ggYmUKLSAgICAjIHRoZSBsZWZ0IG9wZXJhbmQgaXMgdG8gaW5o
ZXJpdCB0aGUgYXBwcm94IG9iamVjdCBmcm9tIGBudW1weS5uZGFycmF5YC4KLSAgICAjIEJ1dCB0
aGF0IGNhbid0IGJlIGEgZ2VuZXJhbCBzb2x1dGlvbiwgYmVjYXVzZSBpdCByZXF1aXJlcyAoMSkg
bnVtcHkgdG8gYmUKLSAgICAjIGluc3RhbGxlZCBhbmQgKDIpIHRoZSBleHBlY3RlZCB2YWx1ZSB0
byBiZSBhIG51bXB5IGFycmF5LiAgU28gdGhlIGdlbmVyYWwKLSAgICAjIHNvbHV0aW9uIGlzIHRv
IGRlbGVnYXRlIGVhY2ggdHlwZSBvZiBleHBlY3RlZCB2YWx1ZSB0byBhIGRpZmZlcmVudCBjbGFz
cy4KLSAgICAjCi0gICAgIyBUaGlzIGhhcyB0aGUgYWR2YW50YWdlIHRoYXQgaXQgbWFkZSBpdCBl
YXN5IHRvIHN1cHBvcnQgbWFwcGluZyB0eXBlcwotICAgICMgKGkuZS4gZGljdCkuICBUaGUgb2xk
IGNvZGUgYWNjZXB0ZWQgbWFwcGluZyB0eXBlcywgYnV0IHdvdWxkIG9ubHkgY29tcGFyZQotICAg
ICMgdGhlaXIga2V5cywgd2hpY2ggaXMgcHJvYmFibHkgbm90IHdoYXQgbW9zdCBwZW9wbGUgd291
bGQgZXhwZWN0LgotCi0gICAgaWYgX2lzX251bXB5X2FycmF5KGV4cGVjdGVkKToKLSAgICAgICAg
Y2xzID0gQXBwcm94TnVtcHkKLSAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIE1hcHBpbmcp
OgotICAgICAgICBjbHMgPSBBcHByb3hNYXBwaW5nCi0gICAgZWxpZiBpc2luc3RhbmNlKGV4cGVj
dGVkLCBTZXF1ZW5jZSkgYW5kIG5vdCBpc2luc3RhbmNlKGV4cGVjdGVkLCBTdHJpbmcpOgotICAg
ICAgICBjbHMgPSBBcHByb3hTZXF1ZW5jZQotICAgIGVsc2U6Ci0gICAgICAgIGNscyA9IEFwcHJv
eFNjYWxhcgotCi0gICAgcmV0dXJuIGNscyhleHBlY3RlZCwgcmVsLCBhYnMsIG5hbl9vaykKLQot
Ci1kZWYgX2lzX251bXB5X2FycmF5KG9iaik6Ci0gICAgIiIiCi0gICAgUmV0dXJuIHRydWUgaWYg
dGhlIGdpdmVuIG9iamVjdCBpcyBhIG51bXB5IGFycmF5LiAgTWFrZSBhIHNwZWNpYWwgZWZmb3J0
IHRvCi0gICAgYXZvaWQgaW1wb3J0aW5nIG51bXB5IHVubGVzcyBpdCdzIHJlYWxseSBuZWNlc3Nh
cnkuCi0gICAgIiIiCi0gICAgaW1wb3J0IGluc3BlY3QKLQotICAgIGZvciBjbHMgaW4gaW5zcGVj
dC5nZXRtcm8odHlwZShvYmopKToKLSAgICAgICAgaWYgY2xzLl9fbW9kdWxlX18gPT0gJ251bXB5
JzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbXBvcnQgbnVtcHkgYXMgbnAK
LSAgICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIG5wLm5kYXJyYXkpCi0gICAg
ICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAg
cmV0dXJuIEZhbHNlCi0KLQotIyBidWlsdGluIHB5dGVzdC5yYWlzZXMgaGVscGVyCi0KLWRlZiBy
YWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgotICAgICIiIgotICAg
IEFzc2VydCB0aGF0IGEgY29kZSBibG9jay9mdW5jdGlvbiBjYWxsIHJhaXNlcyBgYGV4cGVjdGVk
X2V4Y2VwdGlvbmBgCi0gICAgYW5kIHJhaXNlIGEgZmFpbHVyZSBleGNlcHRpb24gb3RoZXJ3aXNl
LgotCi0gICAgVGhpcyBoZWxwZXIgcHJvZHVjZXMgYSBgYEV4Y2VwdGlvbkluZm8oKWBgIG9iamVj
dCAoc2VlIGJlbG93KS4KLQotICAgIFlvdSBtYXkgdXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBjb250
ZXh0IG1hbmFnZXI6OgotCi0gICAgICAgID4+PiB3aXRoIHJhaXNlcyhaZXJvRGl2aXNpb25FcnJv
cik6Ci0gICAgICAgIC4uLiAgICAxLzAKLQotICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi4xMAot
Ci0gICAgSW4gdGhlIGNvbnRleHQgbWFuYWdlciBmb3JtIHlvdSBtYXkgdXNlIHRoZSBrZXl3b3Jk
IGFyZ3VtZW50Ci0gICAgYGBtZXNzYWdlYGAgdG8gc3BlY2lmeSBhIGN1c3RvbSBmYWlsdXJlIG1l
c3NhZ2U6OgotCi0gICAgICAgID4+PiB3aXRoIHJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgbWVz
c2FnZT0iRXhwZWN0aW5nIFplcm9EaXZpc2lvbkVycm9yIik6Ci0gICAgICAgIC4uLiAgICBwYXNz
Ci0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAu
Li4KLSAgICAgICAgRmFpbGVkOiBFeHBlY3RpbmcgWmVyb0RpdmlzaW9uRXJyb3IKLQotICAgIC4u
IG5vdGU6OgotCi0gICAgICAgV2hlbiB1c2luZyBgYHB5dGVzdC5yYWlzZXNgYCBhcyBhIGNvbnRl
eHQgbWFuYWdlciwgaXQncyB3b3J0aHdoaWxlIHRvCi0gICAgICAgbm90ZSB0aGF0IG5vcm1hbCBj
b250ZXh0IG1hbmFnZXIgcnVsZXMgYXBwbHkgYW5kIHRoYXQgdGhlIGV4Y2VwdGlvbgotICAgICAg
IHJhaXNlZCAqbXVzdCogYmUgdGhlIGZpbmFsIGxpbmUgaW4gdGhlIHNjb3BlIG9mIHRoZSBjb250
ZXh0IG1hbmFnZXIuCi0gICAgICAgTGluZXMgb2YgY29kZSBhZnRlciB0aGF0LCB3aXRoaW4gdGhl
IHNjb3BlIG9mIHRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbAotICAgICAgIG5vdCBiZSBleGVjdXRl
ZC4gRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICAgID4+PiB2YWx1ZSA9IDE1Ci0gICAgICAgICAg
ID4+PiB3aXRoIHJhaXNlcyhWYWx1ZUVycm9yKSBhcyBleGNfaW5mbzoKLSAgICAgICAgICAgLi4u
ICAgICBpZiB2YWx1ZSA+IDEwOgotICAgICAgICAgICAuLi4gICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJ2YWx1ZSBtdXN0IGJlIDw9IDEwIikKLSAgICAgICAgICAgLi4uICAgICBhc3NlcnQgZXhj
X2luZm8udHlwZSA9PSBWYWx1ZUVycm9yICAjIHRoaXMgd2lsbCBub3QgZXhlY3V0ZQotCi0gICAg
ICAgSW5zdGVhZCwgdGhlIGZvbGxvd2luZyBhcHByb2FjaCBtdXN0IGJlIHRha2VuIChub3RlIHRo
ZSBkaWZmZXJlbmNlIGluCi0gICAgICAgc2NvcGUpOjoKLQotICAgICAgICAgICA+Pj4gd2l0aCBy
YWlzZXMoVmFsdWVFcnJvcikgYXMgZXhjX2luZm86Ci0gICAgICAgICAgIC4uLiAgICAgaWYgdmFs
dWUgPiAxMDoKLSAgICAgICAgICAgLi4uICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidmFsdWUg
bXVzdCBiZSA8PSAxMCIpCi0gICAgICAgICAgIC4uLgotICAgICAgICAgICA+Pj4gYXNzZXJ0IGV4
Y19pbmZvLnR5cGUgPT0gVmFsdWVFcnJvcgotCi0KLSAgICBTaW5jZSB2ZXJzaW9uIGBgMy4xYGAg
eW91IGNhbiB1c2UgdGhlIGtleXdvcmQgYXJndW1lbnQgYGBtYXRjaGBgIHRvIGFzc2VydCB0aGF0
IHRoZQotICAgIGV4Y2VwdGlvbiBtYXRjaGVzIGEgdGV4dCBvciByZWdleDo6Ci0KLSAgICAgICAg
Pj4+IHdpdGggcmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNoPSdtdXN0IGJlIDAgb3IgTm9uZScpOgot
ICAgICAgICAuLi4gICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgMCBvciBOb25l
IikKLQotICAgICAgICA+Pj4gd2l0aCByYWlzZXMoVmFsdWVFcnJvciwgbWF0Y2g9cidtdXN0IGJl
IFxkKyQnKToKLSAgICAgICAgLi4uICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBtdXN0IGJl
IDQyIikKLQotICAgICoqTGVnYWN5IGZvcm1zKioKLQotICAgIFRoZSBmb3JtcyBiZWxvdyBhcmUg
ZnVsbHkgc3VwcG9ydGVkIGJ1dCBhcmUgZGlzY291cmFnZWQgZm9yIG5ldyBjb2RlIGJlY2F1c2Ug
dGhlCi0gICAgY29udGV4dCBtYW5hZ2VyIGZvcm0gaXMgcmVnYXJkZWQgYXMgbW9yZSByZWFkYWJs
ZSBhbmQgbGVzcyBlcnJvci1wcm9uZS4KLQotICAgIEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkg
YSBjYWxsYWJsZSBieSBwYXNzaW5nIGEgdG8tYmUtY2FsbGVkIGxhbWJkYTo6Ci0KLSAgICAgICAg
Pj4+IHJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgbGFtYmRhOiAxLzApCi0gICAgICAgIDxFeGNl
cHRpb25JbmZvIC4uLj4KLQotICAgIG9yIHlvdSBjYW4gc3BlY2lmeSBhbiBhcmJpdHJhcnkgY2Fs
bGFibGUgd2l0aCBhcmd1bWVudHM6OgotCi0gICAgICAgID4+PiBkZWYgZih4KTogcmV0dXJuIDEv
eAotICAgICAgICAuLi4KLSAgICAgICAgPj4+IHJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgZiwg
MCkKLSAgICAgICAgPEV4Y2VwdGlvbkluZm8gLi4uPgotICAgICAgICA+Pj4gcmFpc2VzKFplcm9E
aXZpc2lvbkVycm9yLCBmLCB4PTApCi0gICAgICAgIDxFeGNlcHRpb25JbmZvIC4uLj4KLQotICAg
IEl0IGlzIGFsc28gcG9zc2libGUgdG8gcGFzcyBhIHN0cmluZyB0byBiZSBldmFsdWF0ZWQgYXQg
cnVudGltZTo6Ci0KLSAgICAgICAgPj4+IHJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgImYoMCki
KQotICAgICAgICA8RXhjZXB0aW9uSW5mbyAuLi4+Ci0KLSAgICBUaGUgc3RyaW5nIHdpbGwgYmUg
ZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIGBgbG9jYWxzKClgYCBhbmQgYGBnbG9iYWxzKClgYAot
ICAgIGF0IHRoZSBtb21lbnQgb2YgdGhlIGBgcmFpc2VzYGAgY2FsbC4KLQotICAgIC4uIGF1dG9j
bGFzczo6IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbwotICAgICAgICA6bWVtYmVyczoKLQot
ICAgIC4uIG5vdGU6OgotICAgICAgICBTaW1pbGFyIHRvIGNhdWdodCBleGNlcHRpb24gb2JqZWN0
cyBpbiBQeXRob24sIGV4cGxpY2l0bHkgY2xlYXJpbmcKLSAgICAgICAgbG9jYWwgcmVmZXJlbmNl
cyB0byByZXR1cm5lZCBgYEV4Y2VwdGlvbkluZm9gYCBvYmplY3RzIGNhbgotICAgICAgICBoZWxw
IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgc3BlZWQgdXAgaXRzIGdhcmJhZ2UgY29sbGVjdGlvbi4K
LQotICAgICAgICBDbGVhcmluZyB0aG9zZSByZWZlcmVuY2VzIGJyZWFrcyBhIHJlZmVyZW5jZSBj
eWNsZQotICAgICAgICAoYGBFeGNlcHRpb25JbmZvYGAgLS0+IGNhdWdodCBleGNlcHRpb24gLS0+
IGZyYW1lIHN0YWNrIHJhaXNpbmcKLSAgICAgICAgdGhlIGV4Y2VwdGlvbiAtLT4gY3VycmVudCBm
cmFtZSBzdGFjayAtLT4gbG9jYWwgdmFyaWFibGVzIC0tPgotICAgICAgICBgYEV4Y2VwdGlvbklu
Zm9gYCkgd2hpY2ggbWFrZXMgUHl0aG9uIGtlZXAgYWxsIG9iamVjdHMgcmVmZXJlbmNlZAotICAg
ICAgICBmcm9tIHRoYXQgY3ljbGUgKGluY2x1ZGluZyBhbGwgbG9jYWwgdmFyaWFibGVzIGluIHRo
ZSBjdXJyZW50Ci0gICAgICAgIGZyYW1lKSBhbGl2ZSB1bnRpbCB0aGUgbmV4dCBjeWNsaWMgZ2Fy
YmFnZSBjb2xsZWN0aW9uIHJ1bi4gU2VlIHRoZQotICAgICAgICBvZmZpY2lhbCBQeXRob24gYGB0
cnlgYCBzdGF0ZW1lbnQgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxlZAotICAgICAgICBp
bmZvcm1hdGlvbi4KLQotICAgICIiIgotICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAg
IG1zZyA9ICgiZXhjZXB0aW9ucyBtdXN0IGJlIG9sZC1zdHlsZSBjbGFzc2VzIG9yIgotICAgICAg
ICAgICAiIGRlcml2ZWQgZnJvbSBCYXNlRXhjZXB0aW9uLCBub3QgJXMiKQotICAgIGlmIGlzaW5z
dGFuY2UoZXhwZWN0ZWRfZXhjZXB0aW9uLCB0dXBsZSk6Ci0gICAgICAgIGZvciBleGMgaW4gZXhw
ZWN0ZWRfZXhjZXB0aW9uOgotICAgICAgICAgICAgaWYgbm90IGlzY2xhc3MoZXhjKToKLSAgICAg
ICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnICUgdHlwZShleGMpKQotICAgIGVsaWYgbm90
IGlzY2xhc3MoZXhwZWN0ZWRfZXhjZXB0aW9uKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1z
ZyAlIHR5cGUoZXhwZWN0ZWRfZXhjZXB0aW9uKSkKLQotICAgIG1lc3NhZ2UgPSAiRElEIE5PVCBS
QUlTRSB7MH0iLmZvcm1hdChleHBlY3RlZF9leGNlcHRpb24pCi0gICAgbWF0Y2hfZXhwciA9IE5v
bmUKLQotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBpZiAibWVzc2FnZSIgaW4ga3dhcmdzOgot
ICAgICAgICAgICAgbWVzc2FnZSA9IGt3YXJncy5wb3AoIm1lc3NhZ2UiKQotICAgICAgICBpZiAi
bWF0Y2giIGluIGt3YXJnczoKLSAgICAgICAgICAgIG1hdGNoX2V4cHIgPSBrd2FyZ3MucG9wKCJt
YXRjaCIpCi0gICAgICAgICAgICBtZXNzYWdlICs9ICIgbWF0Y2hpbmcgJ3swfSciLmZvcm1hdCht
YXRjaF9leHByKQotICAgICAgICByZXR1cm4gUmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRp
b24sIG1lc3NhZ2UsIG1hdGNoX2V4cHIpCi0gICAgZWxpZiBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0
cik6Ci0gICAgICAgIGNvZGUsID0gYXJncwotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2Rl
LCBzdHIpCi0gICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQotICAgICAgICBsb2MgPSBm
cmFtZS5mX2xvY2Fscy5jb3B5KCkKLSAgICAgICAgbG9jLnVwZGF0ZShrd2FyZ3MpCi0gICAgICAg
ICMgcHJpbnQgInJhaXNlcyBmcmFtZSBzY29wZTogJXIiICUgZnJhbWUuZl9sb2NhbHMKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgY29kZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKGNvZGUpLmNv
bXBpbGUoKQotICAgICAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjb2RlLCBmcmFtZS5mX2dsb2Jh
bHMsIGxvYykKLSAgICAgICAgICAgICMgWFhYIGRpZG4nVCBtZWFuIGZfZ2xvYmFscyA9PSBmX2xv
Y2FscyBzb21ldGhpbmcgc3BlY2lhbD8KLSAgICAgICAgICAgICMgICAgIHRoaXMgaXMgZGVzdHJv
eWVkIGhlcmUgLi4uCi0gICAgICAgIGV4Y2VwdCBleHBlY3RlZF9leGNlcHRpb246Ci0gICAgICAg
ICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKLSAgICBlbHNlOgotICAg
ICAgICBmdW5jID0gYXJnc1swXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmdW5jKCphcmdz
WzE6XSwgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBleHBlY3RlZF9leGNlcHRpb246Ci0gICAg
ICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKLSAgICBmYWlsKG1l
c3NhZ2UpCi0KLQotcmFpc2VzLkV4Y2VwdGlvbiA9IGZhaWwuRXhjZXB0aW9uCi0KLQotY2xhc3Mg
UmFpc2VzQ29udGV4dChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZF9l
eGNlcHRpb24sIG1lc3NhZ2UsIG1hdGNoX2V4cHIpOgotICAgICAgICBzZWxmLmV4cGVjdGVkX2V4
Y2VwdGlvbiA9IGV4cGVjdGVkX2V4Y2VwdGlvbgotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNz
YWdlCi0gICAgICAgIHNlbGYubWF0Y2hfZXhwciA9IG1hdGNoX2V4cHIKLSAgICAgICAgc2VsZi5l
eGNpbmZvID0gTm9uZQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5l
eGNpbmZvID0gb2JqZWN0Ll9fbmV3X18oX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKQotICAg
ICAgICByZXR1cm4gc2VsZi5leGNpbmZvCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKnRwKToK
LSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIGlmIHRwWzBdIGlzIE5v
bmU6Ci0gICAgICAgICAgICBmYWlsKHNlbGYubWVzc2FnZSkKLSAgICAgICAgc2VsZi5leGNpbmZv
Ll9faW5pdF9fKHRwKQotICAgICAgICBzdXBwcmVzc19leGNlcHRpb24gPSBpc3N1YmNsYXNzKHNl
bGYuZXhjaW5mby50eXBlLCBzZWxmLmV4cGVjdGVkX2V4Y2VwdGlvbikKLSAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mb1swXSA9PSAyIGFuZCBzdXBwcmVzc19leGNlcHRpb246Ci0gICAgICAgICAg
ICBzeXMuZXhjX2NsZWFyKCkKLSAgICAgICAgaWYgc2VsZi5tYXRjaF9leHByOgotICAgICAgICAg
ICAgc2VsZi5leGNpbmZvLm1hdGNoKHNlbGYubWF0Y2hfZXhwcikKLSAgICAgICAgcmV0dXJuIHN1
cHByZXNzX2V4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9yZWN3YXJu
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9yZWN3YXJuLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0ZmNlYjEwYTdmMzQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L3JlY3dhcm4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotIiIiIHJl
Y29yZGluZyB3YXJuaW5ncyBkdXJpbmcgdGVzdCBmdW5jdGlvbiBleGVjdXRpb24uICIiIgotZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5j
dGlvbgotCi1pbXBvcnQgaW5zcGVjdAotCi1pbXBvcnQgX3B5dGVzdC5fY29kZQotaW1wb3J0IHB5
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKLQotaW1wb3J0IHJlCi0KLWZyb20gX3B5dGVz
dC5maXh0dXJlcyBpbXBvcnQgeWllbGRfZml4dHVyZQotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGlt
cG9ydCBmYWlsCi0KLQotQHlpZWxkX2ZpeHR1cmUKLWRlZiByZWN3YXJuKCk6Ci0gICAgIiIiUmV0
dXJuIGEgV2FybmluZ3NSZWNvcmRlciBpbnN0YW5jZSB0aGF0IHByb3ZpZGVzIHRoZXNlIG1ldGhv
ZHM6Ci0KLSAgICAqIGBgcG9wKGNhdGVnb3J5PU5vbmUpYGA6IHJldHVybiBsYXN0IHdhcm5pbmcg
bWF0Y2hpbmcgdGhlIGNhdGVnb3J5LgotICAgICogYGBjbGVhcigpYGA6IGNsZWFyIGxpc3Qgb2Yg
d2FybmluZ3MKLQotICAgIFNlZSBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvd2Fybmlu
Z3MuaHRtbCBmb3IgaW5mb3JtYXRpb24KLSAgICBvbiB3YXJuaW5nIGNhdGVnb3JpZXMuCi0gICAg
IiIiCi0gICAgd3JlYyA9IFdhcm5pbmdzUmVjb3JkZXIoKQotICAgIHdpdGggd3JlYzoKLSAgICAg
ICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdkZWZhdWx0JykKLSAgICAgICAgeWllbGQgd3JlYwot
Ci0KLWRlZiBkZXByZWNhdGVkX2NhbGwoZnVuYz1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAg
ICIiImNvbnRleHQgbWFuYWdlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuc3VyZSBhIGJsb2NrIG9m
IGNvZGUgdHJpZ2dlcnMgYQotICAgIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgb3IgYGBQZW5kaW5n
RGVwcmVjYXRpb25XYXJuaW5nYGA6OgotCi0gICAgICAgID4+PiBpbXBvcnQgd2FybmluZ3MKLSAg
ICAgICAgPj4+IGRlZiBhcGlfY2FsbF92MigpOgotICAgICAgICAuLi4gICAgIHdhcm5pbmdzLndh
cm4oJ3VzZSB2MyBvZiB0aGlzIGFwaScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgLi4u
ICAgICByZXR1cm4gMjAwCi0KLSAgICAgICAgPj4+IHdpdGggZGVwcmVjYXRlZF9jYWxsKCk6Ci0g
ICAgICAgIC4uLiAgICBhc3NlcnQgYXBpX2NhbGxfdjIoKSA9PSAyMDAKLQotICAgIGBgZGVwcmVj
YXRlZF9jYWxsYGAgY2FuIGFsc28gYmUgdXNlZCBieSBwYXNzaW5nIGEgZnVuY3Rpb24gYW5kIGBg
KmFyZ3NgYCBhbmQgYGAqa3dhcmdzYGAsCi0gICAgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGVuc3Vy
ZSBjYWxsaW5nIGBgZnVuYygqYXJncywgKiprd2FyZ3MpYGAgcHJvZHVjZXMgb25lIG9mIHRoZSB3
YXJuaW5ncwotICAgIHR5cGVzIGFib3ZlLgotICAgICIiIgotICAgIGlmIG5vdCBmdW5jOgotICAg
ICAgICByZXR1cm4gX0RlcHJlY2F0ZWRDYWxsQ29udGV4dCgpCi0gICAgZWxzZToKLSAgICAgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIHdpdGggX0RlcHJlY2F0ZWRDYWxsQ29u
dGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQotCi0KLWNs
YXNzIF9EZXByZWNhdGVkQ2FsbENvbnRleHQob2JqZWN0KToKLSAgICAiIiJJbXBsZW1lbnRzIHRo
ZSBsb2dpYyB0byBjYXB0dXJlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGFzIGEgY29udGV4dCBtYW5h
Z2VyLiIiIgotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fY2FwdHVy
ZWRfY2F0ZWdvcmllcyA9IFtdCi0gICAgICAgIHNlbGYuX29sZF93YXJuID0gd2FybmluZ3Mud2Fy
bgotICAgICAgICBzZWxmLl9vbGRfd2Fybl9leHBsaWNpdCA9IHdhcm5pbmdzLndhcm5fZXhwbGlj
aXQKLSAgICAgICAgd2FybmluZ3Mud2Fybl9leHBsaWNpdCA9IHNlbGYuX3dhcm5fZXhwbGljaXQK
LSAgICAgICAgd2FybmluZ3Mud2FybiA9IHNlbGYuX3dhcm4KLQotICAgIGRlZiBfd2Fybl9leHBs
aWNpdChzZWxmLCBtZXNzYWdlLCBjYXRlZ29yeSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAg
c2VsZi5fY2FwdHVyZWRfY2F0ZWdvcmllcy5hcHBlbmQoY2F0ZWdvcnkpCi0KLSAgICBkZWYgX3dh
cm4oc2VsZiwgbWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAg
ICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBXYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuX2Nh
cHR1cmVkX2NhdGVnb3JpZXMuYXBwZW5kKG1lc3NhZ2UuX19jbGFzc19fKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgc2VsZi5fY2FwdHVyZWRfY2F0ZWdvcmllcy5hcHBlbmQoY2F0ZWdvcnkp
Ci0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6Ci0g
ICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgPSBzZWxmLl9vbGRfd2Fybl9leHBsaWNpdAot
ICAgICAgICB3YXJuaW5ncy53YXJuID0gc2VsZi5fb2xkX3dhcm4KLQotICAgICAgICBpZiBleGNf
dHlwZSBpcyBOb25lOgotICAgICAgICAgICAgZGVwcmVjYXRpb25fY2F0ZWdvcmllcyA9IChEZXBy
ZWNhdGlvbldhcm5pbmcsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBp
ZiBub3QgYW55KGlzc3ViY2xhc3MoYywgZGVwcmVjYXRpb25fY2F0ZWdvcmllcykgZm9yIGMgaW4g
c2VsZi5fY2FwdHVyZWRfY2F0ZWdvcmllcyk6Ci0gICAgICAgICAgICAgICAgX190cmFjZWJhY2to
aWRlX18gPSBUcnVlCi0gICAgICAgICAgICAgICAgbXNnID0gIkRpZCBub3QgcHJvZHVjZSBEZXBy
ZWNhdGlvbldhcm5pbmcgb3IgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyIKLSAgICAgICAgICAg
ICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCi0KLQotZGVmIHdhcm5zKGV4cGVjdGVkX3dh
cm5pbmcsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgIiIiQXNzZXJ0IHRoYXQgY29kZSByYWlzZXMg
YSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHdhcm5pbmcuCi0KLSAgICBTcGVjaWZpY2FsbHksIHRoZSBp
bnB1dCBAZXhwZWN0ZWRfd2FybmluZyBjYW4gYmUgYSB3YXJuaW5nIGNsYXNzIG9yCi0gICAgdHVw
bGUgb2Ygd2FybmluZyBjbGFzc2VzLCBhbmQgdGhlIGNvZGUgbXVzdCByZXR1cm4gdGhhdCB3YXJu
aW5nCi0gICAgKGlmIGEgc2luZ2xlIGNsYXNzKSBvciBvbmUgb2YgdGhvc2Ugd2FybmluZ3MgKGlm
IGEgdHVwbGUpLgotCi0gICAgVGhpcyBoZWxwZXIgcHJvZHVjZXMgYSBsaXN0IG9mIGBgd2Fybmlu
Z3MuV2FybmluZ01lc3NhZ2VgYCBvYmplY3RzLAotICAgIG9uZSBmb3IgZWFjaCB3YXJuaW5nIHJh
aXNlZC4KLQotICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFn
ZXIsIG9yIGFueSBvZiB0aGUgb3RoZXIgd2F5cwotICAgIGBgcHl0ZXN0LnJhaXNlc2BgIGNhbiBi
ZSB1c2VkOjoKLQotICAgICAgICA+Pj4gd2l0aCB3YXJucyhSdW50aW1lV2FybmluZyk6Ci0gICAg
ICAgIC4uLiAgICB3YXJuaW5ncy53YXJuKCJteSB3YXJuaW5nIiwgUnVudGltZVdhcm5pbmcpCi0K
LSAgICBJbiB0aGUgY29udGV4dCBtYW5hZ2VyIGZvcm0geW91IG1heSB1c2UgdGhlIGtleXdvcmQg
YXJndW1lbnQgYGBtYXRjaGBgIHRvIGFzc2VydAotICAgIHRoYXQgdGhlIGV4Y2VwdGlvbiBtYXRj
aGVzIGEgdGV4dCBvciByZWdleDo6Ci0KLSAgICAgICAgPj4+IHdpdGggd2FybnMoVXNlcldhcm5p
bmcsIG1hdGNoPSdtdXN0IGJlIDAgb3IgTm9uZScpOgotICAgICAgICAuLi4gICAgIHdhcm5pbmdz
Lndhcm4oInZhbHVlIG11c3QgYmUgMCBvciBOb25lIiwgVXNlcldhcm5pbmcpCi0KLSAgICAgICAg
Pj4+IHdpdGggd2FybnMoVXNlcldhcm5pbmcsIG1hdGNoPXInbXVzdCBiZSBcZCskJyk6Ci0gICAg
ICAgIC4uLiAgICAgd2FybmluZ3Mud2FybigidmFsdWUgbXVzdCBiZSA0MiIsIFVzZXJXYXJuaW5n
KQotCi0gICAgICAgID4+PiB3aXRoIHdhcm5zKFVzZXJXYXJuaW5nLCBtYXRjaD1yJ211c3QgYmUg
XGQrJCcpOgotICAgICAgICAuLi4gICAgIHdhcm5pbmdzLndhcm4oInRoaXMgaXMgbm90IGhlcmUi
LCBVc2VyV2FybmluZykKLSAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp
OgotICAgICAgICAgIC4uLgotICAgICAgICBGYWlsZWQ6IERJRCBOT1QgV0FSTi4gTm8gd2Fybmlu
Z3Mgb2YgdHlwZSAuLi5Vc2VyV2FybmluZy4uLiB3YXMgZW1pdHRlZC4uLgotCi0gICAgIiIiCi0g
ICAgbWF0Y2hfZXhwciA9IE5vbmUKLSAgICBpZiBub3QgYXJnczoKLSAgICAgICAgaWYgIm1hdGNo
IiBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBtYXRjaF9leHByID0ga3dhcmdzLnBvcCgibWF0Y2gi
KQotICAgICAgICByZXR1cm4gV2FybmluZ3NDaGVja2VyKGV4cGVjdGVkX3dhcm5pbmcsIG1hdGNo
X2V4cHI9bWF0Y2hfZXhwcikKLSAgICBlbGlmIGlzaW5zdGFuY2UoYXJnc1swXSwgc3RyKToKLSAg
ICAgICAgY29kZSwgPSBhcmdzCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNvZGUsIHN0cikK
LSAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCi0gICAgICAgIGxvYyA9IGZyYW1lLmZf
bG9jYWxzLmNvcHkoKQotICAgICAgICBsb2MudXBkYXRlKGt3YXJncykKLQotICAgICAgICB3aXRo
IFdhcm5pbmdzQ2hlY2tlcihleHBlY3RlZF93YXJuaW5nLCBtYXRjaF9leHByPW1hdGNoX2V4cHIp
OgotICAgICAgICAgICAgY29kZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKGNvZGUpLmNvbXBpbGUo
KQotICAgICAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjb2RlLCBmcmFtZS5mX2dsb2JhbHMsIGxv
YykKLSAgICBlbHNlOgotICAgICAgICBmdW5jID0gYXJnc1swXQotICAgICAgICB3aXRoIFdhcm5p
bmdzQ2hlY2tlcihleHBlY3RlZF93YXJuaW5nLCBtYXRjaF9leHByPW1hdGNoX2V4cHIpOgotICAg
ICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3NbMTpdLCAqKmt3YXJncykKLQotCi1jbGFzcyBXYXJu
aW5nc1JlY29yZGVyKHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKToKLSAgICAiIiJBIGNvbnRleHQg
bWFuYWdlciB0byByZWNvcmQgcmFpc2VkIHdhcm5pbmdzLgotCi0gICAgQWRhcHRlZCBmcm9tIGB3
YXJuaW5ncy5jYXRjaF93YXJuaW5nc2AuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgIHN1cGVyKFdhcm5pbmdzUmVjb3JkZXIsIHNlbGYpLl9faW5pdF9fKHJlY29y
ZD1UcnVlKQotICAgICAgICBzZWxmLl9lbnRlcmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fbGlz
dCA9IFtdCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbGlzdChzZWxmKToKLSAgICAgICAgIiIi
VGhlIGxpc3Qgb2YgcmVjb3JkZWQgd2FybmluZ3MuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9s
aXN0Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6Ci0gICAgICAgICIiIkdldCBhIHJl
Y29yZGVkIHdhcm5pbmcgYnkgaW5kZXguIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9saXN0W2ld
Ci0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIkl0ZXJhdGUgdGhyb3VnaCB0
aGUgcmVjb3JkZWQgd2FybmluZ3MuIiIiCi0gICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2xpc3Qp
Ci0KLSAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgIiIiVGhlIG51bWJlciBvZiByZWNv
cmRlZCB3YXJuaW5ncy4iIiIKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9saXN0KQotCi0gICAg
ZGVmIHBvcChzZWxmLCBjbHM9V2FybmluZyk6Ci0gICAgICAgICIiIlBvcCB0aGUgZmlyc3QgcmVj
b3JkZWQgd2FybmluZywgcmFpc2UgZXhjZXB0aW9uIGlmIG5vdCBleGlzdHMuIiIiCi0gICAgICAg
IGZvciBpLCB3IGluIGVudW1lcmF0ZShzZWxmLl9saXN0KToKLSAgICAgICAgICAgIGlmIGlzc3Vi
Y2xhc3Mody5jYXRlZ29yeSwgY2xzKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbGlz
dC5wb3AoaSkKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIHJhaXNl
IEFzc2VydGlvbkVycm9yKCIlciBub3QgZm91bmQgaW4gd2FybmluZyBsaXN0IiAlIGNscykKLQot
ICAgIGRlZiBjbGVhcihzZWxmKToKLSAgICAgICAgIiIiQ2xlYXIgdGhlIGxpc3Qgb2YgcmVjb3Jk
ZWQgd2FybmluZ3MuIiIiCi0gICAgICAgIHNlbGYuX2xpc3RbOl0gPSBbXQotCi0gICAgZGVmIF9f
ZW50ZXJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZW50ZXJlZDoKLSAgICAgICAgICAgIF9f
dHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJD
YW5ub3QgZW50ZXIgJXIgdHdpY2UiICUgc2VsZikKLSAgICAgICAgc2VsZi5fbGlzdCA9IHN1cGVy
KFdhcm5pbmdzUmVjb3JkZXIsIHNlbGYpLl9fZW50ZXJfXygpCi0gICAgICAgIHdhcm5pbmdzLnNp
bXBsZWZpbHRlcignYWx3YXlzJykKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4
aXRfXyhzZWxmLCAqZXhjX2luZm8pOgotICAgICAgICBpZiBub3Qgc2VsZi5fZW50ZXJlZDoKLSAg
ICAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCJDYW5ub3QgZXhpdCAlciB3aXRob3V0IGVudGVyaW5nIGZpcnN0IiAlIHNlbGYp
Ci0gICAgICAgIHN1cGVyKFdhcm5pbmdzUmVjb3JkZXIsIHNlbGYpLl9fZXhpdF9fKCpleGNfaW5m
bykKLQotCi1jbGFzcyBXYXJuaW5nc0NoZWNrZXIoV2FybmluZ3NSZWNvcmRlcik6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmc9Tm9uZSwgbWF0Y2hfZXhwcj1Ob25lKToK
LSAgICAgICAgc3VwZXIoV2FybmluZ3NDaGVja2VyLCBzZWxmKS5fX2luaXRfXygpCi0KLSAgICAg
ICAgbXNnID0gKCJleGNlcHRpb25zIG11c3QgYmUgb2xkLXN0eWxlIGNsYXNzZXMgb3IgIgotICAg
ICAgICAgICAgICAgImRlcml2ZWQgZnJvbSBXYXJuaW5nLCBub3QgJXMiKQotICAgICAgICBpZiBp
c2luc3RhbmNlKGV4cGVjdGVkX3dhcm5pbmcsIHR1cGxlKToKLSAgICAgICAgICAgIGZvciBleGMg
aW4gZXhwZWN0ZWRfd2FybmluZzoKLSAgICAgICAgICAgICAgICBpZiBub3QgaW5zcGVjdC5pc2Ns
YXNzKGV4Yyk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cgJSB0eXBl
KGV4YykpCi0gICAgICAgIGVsaWYgaW5zcGVjdC5pc2NsYXNzKGV4cGVjdGVkX3dhcm5pbmcpOgot
ICAgICAgICAgICAgZXhwZWN0ZWRfd2FybmluZyA9IChleHBlY3RlZF93YXJuaW5nLCkKLSAgICAg
ICAgZWxpZiBleHBlY3RlZF93YXJuaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKG1zZyAlIHR5cGUoZXhwZWN0ZWRfd2FybmluZykpCi0KLSAgICAgICAgc2VsZi5l
eHBlY3RlZF93YXJuaW5nID0gZXhwZWN0ZWRfd2FybmluZwotICAgICAgICBzZWxmLm1hdGNoX2V4
cHIgPSBtYXRjaF9leHByCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKLSAg
ICAgICAgc3VwZXIoV2FybmluZ3NDaGVja2VyLCBzZWxmKS5fX2V4aXRfXygqZXhjX2luZm8pCi0K
LSAgICAgICAgIyBvbmx5IGNoZWNrIGlmIHdlJ3JlIG5vdCBjdXJyZW50bHkgaGFuZGxpbmcgYW4g
ZXhjZXB0aW9uCi0gICAgICAgIGlmIGFsbChhIGlzIE5vbmUgZm9yIGEgaW4gZXhjX2luZm8pOgot
ICAgICAgICAgICAgaWYgc2VsZi5leHBlY3RlZF93YXJuaW5nIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIGlmIG5vdCBhbnkoaXNzdWJjbGFzcyhyLmNhdGVnb3J5LCBzZWxmLmV4cGVjdGVk
X3dhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgciBpbiBzZWxmKToKLSAg
ICAgICAgICAgICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgICAgICAg
ICAgICAgIGZhaWwoIkRJRCBOT1QgV0FSTi4gTm8gd2FybmluZ3Mgb2YgdHlwZSB7MH0gd2FzIGVt
aXR0ZWQuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGxpc3Qgb2YgZW1pdHRlZCB3
YXJuaW5ncyBpczogezF9LiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLmV4cGVjdGVkX3dhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlYWNo
Lm1lc3NhZ2UgZm9yIGVhY2ggaW4gc2VsZl0pKQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5t
YXRjaF9leHByIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBmb3IgciBpbiBzZWxm
OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhyLmNhdGVnb3J5LCBzZWxm
LmV4cGVjdGVkX3dhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlLmNv
bXBpbGUoc2VsZi5tYXRjaF9leHByKS5zZWFyY2goc3RyKHIubWVzc2FnZSkpOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRElEIE5PVCBXQVJOLiBObyB3YXJuaW5ncyBv
ZiB0eXBlIHswfSBtYXRjaGluZyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoJ3sx
fScpIHdhcyBlbWl0dGVkLiBUaGUgbGlzdCBvZiBlbWl0dGVkIHdhcm5pbmdzIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIGlzOiB7Mn0uIi5mb3JtYXQoc2VsZi5leHBlY3RlZF93YXJu
aW5nLCBzZWxmLm1hdGNoX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbZWFjaC5tZXNzYWdlIGZvciBlYWNoIGluIHNlbGZdKSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVzdWx0bG9nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9yZXN1bHRsb2cucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmOWMyZDFmNjUz
Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVzdWx0bG9nLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLSIiIiBsb2cgbWFjaGluZS1wYXJzZWFibGUg
dGVzdCBzZXNzaW9uIHJlc3VsdCBpbmZvcm1hdGlvbiBpbiBhIHBsYWluCi10ZXh0IGZpbGUuCi0i
IiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLQotaW1wb3J0IHB5Ci1pbXBvcnQgb3MKLQotCi1kZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBv
cnRpbmciLCAicmVzdWx0bG9nIHBsdWdpbiBvcHRpb25zIikKLSAgICBncm91cC5hZGRvcHRpb24o
Jy0tcmVzdWx0bG9nJywgJy0tcmVzdWx0LWxvZycsIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAg
ICAgICAgICAgICBtZXRhdmFyPSJwYXRoIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJERVBSRUNBVEVEIHBhdGggZm9yIG1hY2hpbmUtcmVhZGFibGUgcmVzdWx0IGxv
Zy4iKQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgcmVzdWx0bG9nID0g
Y29uZmlnLm9wdGlvbi5yZXN1bHRsb2cKLSAgICAjIHByZXZlbnQgb3BlbmluZyByZXN1bHRsb2cg
b24gc2xhdmUgbm9kZXMgKHhkaXN0KQotICAgIGlmIHJlc3VsdGxvZyBhbmQgbm90IGhhc2F0dHIo
Y29uZmlnLCAnc2xhdmVpbnB1dCcpOgotICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1l
KG9zLnBhdGguYWJzcGF0aChyZXN1bHRsb2cpKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rp
cihkaXJuYW1lKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCi0gICAgICAgIGxv
Z2ZpbGUgPSBvcGVuKHJlc3VsdGxvZywgJ3cnLCAxKSAgIyBsaW5lIGJ1ZmZlcmVkCi0gICAgICAg
IGNvbmZpZy5fcmVzdWx0bG9nID0gUmVzdWx0TG9nKGNvbmZpZywgbG9nZmlsZSkKLSAgICAgICAg
Y29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoY29uZmlnLl9yZXN1bHRsb2cpCi0KLSAgICAg
ICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IFJFU1VMVF9MT0cKLSAgICAgICAgY29u
ZmlnLndhcm4oJ0MxJywgUkVTVUxUX0xPRykKLQotCi1kZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNv
bmZpZyk6Ci0gICAgcmVzdWx0bG9nID0gZ2V0YXR0cihjb25maWcsICdfcmVzdWx0bG9nJywgTm9u
ZSkKLSAgICBpZiByZXN1bHRsb2c6Ci0gICAgICAgIHJlc3VsdGxvZy5sb2dmaWxlLmNsb3NlKCkK
LSAgICAgICAgZGVsIGNvbmZpZy5fcmVzdWx0bG9nCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5h
Z2VyLnVucmVnaXN0ZXIocmVzdWx0bG9nKQotCi0KLWRlZiBnZW5lcmljX3BhdGgoaXRlbSk6Ci0g
ICAgY2hhaW4gPSBpdGVtLmxpc3RjaGFpbigpCi0gICAgZ3BhdGggPSBbY2hhaW5bMF0ubmFtZV0K
LSAgICBmc3BhdGggPSBjaGFpblswXS5mc3BhdGgKLSAgICBmc3BhcnQgPSBGYWxzZQotICAgIGZv
ciBub2RlIGluIGNoYWluWzE6XToKLSAgICAgICAgbmV3ZnNwYXRoID0gbm9kZS5mc3BhdGgKLSAg
ICAgICAgaWYgbmV3ZnNwYXRoID09IGZzcGF0aDoKLSAgICAgICAgICAgIGlmIGZzcGFydDoKLSAg
ICAgICAgICAgICAgICBncGF0aC5hcHBlbmQoJzonKQotICAgICAgICAgICAgICAgIGZzcGFydCA9
IEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGdwYXRoLmFwcGVuZCgn
LicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBncGF0aC5hcHBlbmQoJy8nKQotICAgICAg
ICAgICAgZnNwYXJ0ID0gVHJ1ZQotICAgICAgICBuYW1lID0gbm9kZS5uYW1lCi0gICAgICAgIGlm
IG5hbWVbMF0gaW4gJyhbJzoKLSAgICAgICAgICAgIGdwYXRoLnBvcCgpCi0gICAgICAgIGdwYXRo
LmFwcGVuZChuYW1lKQotICAgICAgICBmc3BhdGggPSBuZXdmc3BhdGgKLSAgICByZXR1cm4gJycu
am9pbihncGF0aCkKLQotCi1jbGFzcyBSZXN1bHRMb2cob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgY29uZmlnLCBsb2dmaWxlKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcK
LSAgICAgICAgc2VsZi5sb2dmaWxlID0gbG9nZmlsZSAgIyBwcmVmZXJhYmx5IGxpbmUgYnVmZmVy
ZWQKLQotICAgIGRlZiB3cml0ZV9sb2dfZW50cnkoc2VsZiwgdGVzdHBhdGgsIGxldHRlcmNvZGUs
IGxvbmdyZXByKToKLSAgICAgICAgcHJpbnQoIiVzICVzIiAlIChsZXR0ZXJjb2RlLCB0ZXN0cGF0
aCksIGZpbGU9c2VsZi5sb2dmaWxlKQotICAgICAgICBmb3IgbGluZSBpbiBsb25ncmVwci5zcGxp
dGxpbmVzKCk6Ci0gICAgICAgICAgICBwcmludCgiICVzIiAlIGxpbmUsIGZpbGU9c2VsZi5sb2dm
aWxlKQotCi0gICAgZGVmIGxvZ19vdXRjb21lKHNlbGYsIHJlcG9ydCwgbGV0dGVyY29kZSwgbG9u
Z3JlcHIpOgotICAgICAgICB0ZXN0cGF0aCA9IGdldGF0dHIocmVwb3J0LCAnbm9kZWlkJywgTm9u
ZSkKLSAgICAgICAgaWYgdGVzdHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHRlc3RwYXRoID0g
cmVwb3J0LmZzcGF0aAotICAgICAgICBzZWxmLndyaXRlX2xvZ19lbnRyeSh0ZXN0cGF0aCwgbGV0
dGVyY29kZSwgbG9uZ3JlcHIpCi0KLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNl
bGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIHJlcG9ydC53aGVuICE9ICJjYWxsIiBhbmQgcmVwb3J0
LnBhc3NlZDoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXMgPSBzZWxmLmNvbmZpZy5o
b29rLnB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQ9cmVwb3J0KQotICAgICAgICBjb2Rl
ID0gcmVzWzFdCi0gICAgICAgIGlmIGNvZGUgPT0gJ3gnOgotICAgICAgICAgICAgbG9uZ3JlcHIg
PSBzdHIocmVwb3J0LmxvbmdyZXByKQotICAgICAgICBlbGlmIGNvZGUgPT0gJ1gnOgotICAgICAg
ICAgICAgbG9uZ3JlcHIgPSAnJwotICAgICAgICBlbGlmIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAg
ICAgICBsb25ncmVwciA9ICIiCi0gICAgICAgIGVsaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAg
ICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwcikKLSAgICAgICAgZWxpZiByZXBvcnQu
c2tpcHBlZDoKLSAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwclsyXSkK
LSAgICAgICAgc2VsZi5sb2dfb3V0Y29tZShyZXBvcnQsIGNvZGUsIGxvbmdyZXByKQotCi0gICAg
ZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIG5vdCBy
ZXBvcnQucGFzc2VkOgotICAgICAgICAgICAgaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAg
ICAgICBjb2RlID0gIkYiCi0gICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBzdHIocmVwb3J0Lmxv
bmdyZXByKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVwb3J0
LnNraXBwZWQKLSAgICAgICAgICAgICAgICBjb2RlID0gIlMiCi0gICAgICAgICAgICAgICAgbG9u
Z3JlcHIgPSAiJXM6JWQ6ICVzIiAlIHJlcG9ydC5sb25ncmVwcgotICAgICAgICAgICAgc2VsZi5s
b2dfb3V0Y29tZShyZXBvcnQsIGNvZGUsIGxvbmdyZXByKQotCi0gICAgZGVmIHB5dGVzdF9pbnRl
cm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIpOgotICAgICAgICByZXByY3Jhc2ggPSBnZXRhdHRyKGV4
Y3JlcHIsICdyZXByY3Jhc2gnLCBOb25lKQotICAgICAgICBwYXRoID0gZ2V0YXR0cihyZXByY3Jh
c2gsICJwYXRoIiwgTm9uZSkKLSAgICAgICAgaWYgcGF0aCBpcyBOb25lOgotICAgICAgICAgICAg
cGF0aCA9ICJjd2Q6JXMiICUgcHkucGF0aC5sb2NhbCgpCi0gICAgICAgIHNlbGYud3JpdGVfbG9n
X2VudHJ5KHBhdGgsICchJywgc3RyKGV4Y3JlcHIpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9ydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3J1bm5lci5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA3ZWQyYTI0OGIzLi4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9ydW5uZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MDYgKzAs
MCBAQAotIiIiIGJhc2ljIGNvbGxlY3QgYW5kIHJ1bnRlc3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b25zICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9u
LCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgYmRiCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWZy
b20gdGltZSBpbXBvcnQgdGltZQotCi1pbXBvcnQgcHkKLWZyb20gX3B5dGVzdC5fY29kZS5jb2Rl
IGltcG9ydCBUZXJtaW5hbFJlcHIsIEV4Y2VwdGlvbkluZm8KLWZyb20gX3B5dGVzdC5vdXRjb21l
cyBpbXBvcnQgc2tpcCwgU2tpcHBlZCwgVEVTVF9PVVRDT01FCi0KLSMKLSMgcHl0ZXN0IHBsdWdp
biBob29rcwotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBw
YXJzZXIuZ2V0Z3JvdXAoInRlcm1pbmFsIHJlcG9ydGluZyIsICJyZXBvcnRpbmciLCBhZnRlcj0i
Z2VuZXJhbCIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLWR1cmF0aW9ucycsCi0gICAgICAgICAg
ICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCB0eXBlPWludCwgZGVmYXVsdD1Ob25lLCBtZXRhdmFy
PSJOIiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0ic2hvdyBOIHNsb3dlc3Qgc2V0dXAvdGVz
dCBkdXJhdGlvbnMgKE49MCBmb3IgYWxsKS4iKSwKLQotCi1kZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1
bW1hcnkodGVybWluYWxyZXBvcnRlcik6Ci0gICAgZHVyYXRpb25zID0gdGVybWluYWxyZXBvcnRl
ci5jb25maWcub3B0aW9uLmR1cmF0aW9ucwotICAgIGlmIGR1cmF0aW9ucyBpcyBOb25lOgotICAg
ICAgICByZXR1cm4KLSAgICB0ciA9IHRlcm1pbmFscmVwb3J0ZXIKLSAgICBkbGlzdCA9IFtdCi0g
ICAgZm9yIHJlcGxpc3QgaW4gdHIuc3RhdHMudmFsdWVzKCk6Ci0gICAgICAgIGZvciByZXAgaW4g
cmVwbGlzdDoKLSAgICAgICAgICAgIGlmIGhhc2F0dHIocmVwLCAnZHVyYXRpb24nKToKLSAgICAg
ICAgICAgICAgICBkbGlzdC5hcHBlbmQocmVwKQotICAgIGlmIG5vdCBkbGlzdDoKLSAgICAgICAg
cmV0dXJuCi0gICAgZGxpc3Quc29ydChrZXk9bGFtYmRhIHg6IHguZHVyYXRpb24pCi0gICAgZGxp
c3QucmV2ZXJzZSgpCi0gICAgaWYgbm90IGR1cmF0aW9uczoKLSAgICAgICAgdHIud3JpdGVfc2Vw
KCI9IiwgInNsb3dlc3QgdGVzdCBkdXJhdGlvbnMiKQotICAgIGVsc2U6Ci0gICAgICAgIHRyLndy
aXRlX3NlcCgiPSIsICJzbG93ZXN0ICVzIHRlc3QgZHVyYXRpb25zIiAlIGR1cmF0aW9ucykKLSAg
ICAgICAgZGxpc3QgPSBkbGlzdFs6ZHVyYXRpb25zXQotCi0gICAgZm9yIHJlcCBpbiBkbGlzdDoK
LSAgICAgICAgbm9kZWlkID0gcmVwLm5vZGVpZC5yZXBsYWNlKCI6OigpOjoiLCAiOjoiKQotICAg
ICAgICB0ci53cml0ZV9saW5lKCIlMDIuMmZzICUtOHMgJXMiICUKLSAgICAgICAgICAgICAgICAg
ICAgICAocmVwLmR1cmF0aW9uLCByZXAud2hlbiwgbm9kZWlkKSkKLQotCi1kZWYgcHl0ZXN0X3Nl
c3Npb25zdGFydChzZXNzaW9uKToKLSAgICBzZXNzaW9uLl9zZXR1cHN0YXRlID0gU2V0dXBTdGF0
ZSgpCi0KLQotZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb24pOgotICAgIHNlc3Npb24u
X3NldHVwc3RhdGUudGVhcmRvd25fYWxsKCkKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9j
b2woaXRlbSwgbmV4dGl0ZW0pOgotICAgIGl0ZW0uaWhvb2sucHl0ZXN0X3J1bnRlc3RfbG9nc3Rh
cnQoCi0gICAgICAgIG5vZGVpZD1pdGVtLm5vZGVpZCwgbG9jYXRpb249aXRlbS5sb2NhdGlvbiwK
LSAgICApCi0gICAgcnVudGVzdHByb3RvY29sKGl0ZW0sIG5leHRpdGVtPW5leHRpdGVtKQotICAg
IHJldHVybiBUcnVlCi0KLQotZGVmIHJ1bnRlc3Rwcm90b2NvbChpdGVtLCBsb2c9VHJ1ZSwgbmV4
dGl0ZW09Tm9uZSk6Ci0gICAgaGFzcmVxdWVzdCA9IGhhc2F0dHIoaXRlbSwgIl9yZXF1ZXN0IikK
LSAgICBpZiBoYXNyZXF1ZXN0IGFuZCBub3QgaXRlbS5fcmVxdWVzdDoKLSAgICAgICAgaXRlbS5f
aW5pdHJlcXVlc3QoKQotICAgIHJlcCA9IGNhbGxfYW5kX3JlcG9ydChpdGVtLCAic2V0dXAiLCBs
b2cpCi0gICAgcmVwb3J0cyA9IFtyZXBdCi0gICAgaWYgcmVwLnBhc3NlZDoKLSAgICAgICAgaWYg
aXRlbS5jb25maWcub3B0aW9uLnNldHVwc2hvdzoKLSAgICAgICAgICAgIHNob3dfdGVzdF9pdGVt
KGl0ZW0pCi0gICAgICAgIGlmIG5vdCBpdGVtLmNvbmZpZy5vcHRpb24uc2V0dXBvbmx5OgotICAg
ICAgICAgICAgcmVwb3J0cy5hcHBlbmQoY2FsbF9hbmRfcmVwb3J0KGl0ZW0sICJjYWxsIiwgbG9n
KSkKLSAgICByZXBvcnRzLmFwcGVuZChjYWxsX2FuZF9yZXBvcnQoaXRlbSwgInRlYXJkb3duIiwg
bG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0aXRlbT1uZXh0aXRl
bSkpCi0gICAgIyBhZnRlciBhbGwgdGVhcmRvd24gaG9va3MgaGF2ZSBiZWVuIGNhbGxlZAotICAg
ICMgd2FudCBmdW5jYXJncyBhbmQgcmVxdWVzdCBpbmZvIHRvIGdvIGF3YXkKLSAgICBpZiBoYXNy
ZXF1ZXN0OgotICAgICAgICBpdGVtLl9yZXF1ZXN0ID0gRmFsc2UKLSAgICAgICAgaXRlbS5mdW5j
YXJncyA9IE5vbmUKLSAgICByZXR1cm4gcmVwb3J0cwotCi0KLWRlZiBzaG93X3Rlc3RfaXRlbShp
dGVtKToKLSAgICAiIiJTaG93IHRlc3QgZnVuY3Rpb24sIHBhcmFtZXRlcnMgYW5kIHRoZSBmaXh0
dXJlcyBvZiB0aGUgdGVzdCBpdGVtLiIiIgotICAgIHR3ID0gaXRlbS5jb25maWcuZ2V0X3Rlcm1p
bmFsX3dyaXRlcigpCi0gICAgdHcubGluZSgpCi0gICAgdHcud3JpdGUoJyAnICogOCkKLSAgICB0
dy53cml0ZShpdGVtLl9ub2RlaWQpCi0gICAgdXNlZF9maXh0dXJlcyA9IHNvcnRlZChpdGVtLl9m
aXh0dXJlaW5mby5uYW1lMmZpeHR1cmVkZWZzLmtleXMoKSkKLSAgICBpZiB1c2VkX2ZpeHR1cmVz
OgotICAgICAgICB0dy53cml0ZSgnIChmaXh0dXJlcyB1c2VkOiB7MH0pJy5mb3JtYXQoJywgJy5q
b2luKHVzZWRfZml4dHVyZXMpKSkKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6
Ci0gICAgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sICdzZXR1cCcpCi0gICAgaXRlbS5z
ZXNzaW9uLl9zZXR1cHN0YXRlLnByZXBhcmUoaXRlbSkKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3Rf
Y2FsbChpdGVtKToKLSAgICBfdXBkYXRlX2N1cnJlbnRfdGVzdF92YXIoaXRlbSwgJ2NhbGwnKQot
ICAgIHRyeToKLSAgICAgICAgaXRlbS5ydW50ZXN0KCkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgot
ICAgICAgICAjIFN0b3JlIHRyYWNlIGluZm8gdG8gYWxsb3cgcG9zdG1vcnRlbSBkZWJ1Z2dpbmcK
LSAgICAgICAgdHlwZSwgdmFsdWUsIHRiID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgdGIgPSB0
Yi50Yl9uZXh0ICAjIFNraXAgKnRoaXMqIGZyYW1lCi0gICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0
eXBlCi0gICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsdWUKLSAgICAgICAgc3lzLmxhc3RfdHJh
Y2ViYWNrID0gdGIKLSAgICAgICAgZGVsIHRiICAjIEdldCByaWQgb2YgaXQgaW4gdGhpcyBuYW1l
c3BhY2UKLSAgICAgICAgcmFpc2UKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRl
bSwgbmV4dGl0ZW0pOgotICAgIF91cGRhdGVfY3VycmVudF90ZXN0X3ZhcihpdGVtLCAndGVhcmRv
d24nKQotICAgIGl0ZW0uc2Vzc2lvbi5fc2V0dXBzdGF0ZS50ZWFyZG93bl9leGFjdChpdGVtLCBu
ZXh0aXRlbSkKLSAgICBfdXBkYXRlX2N1cnJlbnRfdGVzdF92YXIoaXRlbSwgTm9uZSkKLQotCi1k
ZWYgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sIHdoZW4pOgotICAgICIiIgotICAgIFVw
ZGF0ZSBQWVRFU1RfQ1VSUkVOVF9URVNUIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQgaXRlbSBhbmQg
c3RhZ2UuCi0KLSAgICBJZiBgYHdoZW5gYCBpcyBOb25lLCBkZWxldGUgUFlURVNUX0NVUlJFTlRf
VEVTVCBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLSAgICAiIiIKLSAgICB2YXJfbmFtZSA9ICdQWVRF
U1RfQ1VSUkVOVF9URVNUJwotICAgIGlmIHdoZW46Ci0gICAgICAgIHZhbHVlID0gJ3swfSAoezF9
KScuZm9ybWF0KGl0ZW0ubm9kZWlkLCB3aGVuKQotICAgICAgICAjIGRvbid0IGFsbG93IG51bGwg
Ynl0ZXMgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChzZWUgIzI2NDQsICMyOTU3KQotICAgICAg
ICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ1x4MDAnLCAnKG51bGwpJykKLSAgICAgICAgb3MuZW52
aXJvblt2YXJfbmFtZV0gPSB2YWx1ZQotICAgIGVsc2U6Ci0gICAgICAgIG9zLmVudmlyb24ucG9w
KHZhcl9uYW1lKQotCi0KLWRlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0KToKLSAg
ICBpZiByZXBvcnQud2hlbiBpbiAoInNldHVwIiwgInRlYXJkb3duIik6Ci0gICAgICAgIGlmIHJl
cG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICAjICAgICAgY2F0ZWdvcnksIHNob3J0bGV0dGVyLCB2
ZXJib3NlLXdvcmQKLSAgICAgICAgICAgIHJldHVybiAiZXJyb3IiLCAiRSIsICJFUlJPUiIKLSAg
ICAgICAgZWxpZiByZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAgIHJldHVybiAic2tpcHBlZCIs
ICJzIiwgIlNLSVBQRUQiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIiIsICIi
LCAiIgotCi0KLSMKLSMgSW1wbGVtZW50YXRpb24KLQotZGVmIGNhbGxfYW5kX3JlcG9ydChpdGVt
LCB3aGVuLCBsb2c9VHJ1ZSwgKiprd2RzKToKLSAgICBjYWxsID0gY2FsbF9ydW50ZXN0X2hvb2so
aXRlbSwgd2hlbiwgKiprd2RzKQotICAgIGhvb2sgPSBpdGVtLmlob29rCi0gICAgcmVwb3J0ID0g
aG9vay5weXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW09aXRlbSwgY2FsbD1jYWxsKQotICAg
IGlmIGxvZzoKLSAgICAgICAgaG9vay5weXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0PXJl
cG9ydCkKLSAgICBpZiBjaGVja19pbnRlcmFjdGl2ZV9leGNlcHRpb24oY2FsbCwgcmVwb3J0KToK
LSAgICAgICAgaG9vay5weXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KG5vZGU9aXRlbSwgY2FsbD1j
YWxsLCByZXBvcnQ9cmVwb3J0KQotICAgIHJldHVybiByZXBvcnQKLQotCi1kZWYgY2hlY2tfaW50
ZXJhY3RpdmVfZXhjZXB0aW9uKGNhbGwsIHJlcG9ydCk6Ci0gICAgcmV0dXJuIGNhbGwuZXhjaW5m
byBhbmQgbm90ICgKLSAgICAgICAgaGFzYXR0cihyZXBvcnQsICJ3YXN4ZmFpbCIpIG9yCi0gICAg
ICAgIGNhbGwuZXhjaW5mby5lcnJpc2luc3RhbmNlKHNraXAuRXhjZXB0aW9uKSBvcgotICAgICAg
ICBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZShiZGIuQmRiUXVpdCkpCi0KLQotZGVmIGNhbGxf
cnVudGVzdF9ob29rKGl0ZW0sIHdoZW4sICoqa3dkcyk6Ci0gICAgaG9va25hbWUgPSAicHl0ZXN0
X3J1bnRlc3RfIiArIHdoZW4KLSAgICBpaG9vayA9IGdldGF0dHIoaXRlbS5paG9vaywgaG9va25h
bWUpCi0gICAgcmV0dXJuIENhbGxJbmZvKGxhbWJkYTogaWhvb2soaXRlbT1pdGVtLCAqKmt3ZHMp
LCB3aGVuPXdoZW4pCi0KLQotY2xhc3MgQ2FsbEluZm86Ci0gICAgIiIiIFJlc3VsdC9FeGNlcHRp
b24gaW5mbyBhIGZ1bmN0aW9uIGludm9jYXRpb24uICIiIgotICAgICM6IE5vbmUgb3IgRXhjZXB0
aW9uSW5mbyBvYmplY3QuCi0gICAgZXhjaW5mbyA9IE5vbmUKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmdW5jLCB3aGVuKToKLSAgICAgICAgIzogY29udGV4dCBvZiBpbnZvY2F0aW9uOiBvbmUg
b2YgInNldHVwIiwgImNhbGwiLAotICAgICAgICAjOiAidGVhcmRvd24iLCAibWVtb2NvbGxlY3Qi
Ci0gICAgICAgIHNlbGYud2hlbiA9IHdoZW4KLSAgICAgICAgc2VsZi5zdGFydCA9IHRpbWUoKQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGZ1bmMoKQotICAgICAgICBl
eGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBzZWxmLnN0b3AgPSB0aW1lKCkK
LSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAgICAg
c2VsZi5leGNpbmZvID0gRXhjZXB0aW9uSW5mbygpCi0gICAgICAgIHNlbGYuc3RvcCA9IHRpbWUo
KQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmV4Y2luZm86Ci0g
ICAgICAgICAgICBzdGF0dXMgPSAiZXhjZXB0aW9uOiAlcyIgJSBzdHIoc2VsZi5leGNpbmZvLnZh
bHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RhdHVzID0gInJlc3VsdDogJXIiICUg
KHNlbGYucmVzdWx0LCkKLSAgICAgICAgcmV0dXJuICI8Q2FsbEluZm8gd2hlbj0lciAlcz4iICUg
KHNlbGYud2hlbiwgc3RhdHVzKQotCi0KLWRlZiBnZXRzbGF2ZWluZm9saW5lKG5vZGUpOgotICAg
IHRyeToKLSAgICAgICAgcmV0dXJuIG5vZGUuX3NsYXZlaW5mb2NhY2hlCi0gICAgZXhjZXB0IEF0
dHJpYnV0ZUVycm9yOgotICAgICAgICBkID0gbm9kZS5zbGF2ZWluZm8KLSAgICAgICAgdmVyID0g
IiVzLiVzLiVzIiAlIGRbJ3ZlcnNpb25faW5mbyddWzozXQotICAgICAgICBub2RlLl9zbGF2ZWlu
Zm9jYWNoZSA9IHMgPSAiWyVzXSAlcyAtLSBQeXRob24gJXMgJXMiICUgKAotICAgICAgICAgICAg
ZFsnaWQnXSwgZFsnc3lzcGxhdGZvcm0nXSwgdmVyLCBkWydleGVjdXRhYmxlJ10pCi0gICAgICAg
IHJldHVybiBzCi0KLQotY2xhc3MgQmFzZVJlcG9ydChvYmplY3QpOgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsICoqa3cpOgotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrdykKLQotICAg
IGRlZiB0b3Rlcm1pbmFsKHNlbGYsIG91dCk6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ25v
ZGUnKToKLSAgICAgICAgICAgIG91dC5saW5lKGdldHNsYXZlaW5mb2xpbmUoc2VsZi5ub2RlKSkK
LQotICAgICAgICBsb25ncmVwciA9IHNlbGYubG9uZ3JlcHIKLSAgICAgICAgaWYgbG9uZ3JlcHIg
aXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIGhhc2F0dHIobG9uZ3Jl
cHIsICd0b3Rlcm1pbmFsJyk6Ci0gICAgICAgICAgICBsb25ncmVwci50b3Rlcm1pbmFsKG91dCkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXQubGlu
ZShsb25ncmVwcikKLSAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6Ci0gICAg
ICAgICAgICAgICAgb3V0LmxpbmUoIjx1bnByaW50YWJsZSBsb25ncmVwcj4iKQotCi0gICAgZGVm
IGdldF9zZWN0aW9ucyhzZWxmLCBwcmVmaXgpOgotICAgICAgICBmb3IgbmFtZSwgY29udGVudCBp
biBzZWxmLnNlY3Rpb25zOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKHByZWZpeCk6
Ci0gICAgICAgICAgICAgICAgeWllbGQgcHJlZml4LCBjb250ZW50Ci0KLSAgICBAcHJvcGVydHkK
LSAgICBkZWYgbG9uZ3JlcHJ0ZXh0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmVhZC1v
bmx5IHByb3BlcnR5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzdHJpbmcgcmVwcmVzZW50YXRpb24K
LSAgICAgICAgb2YgYGBsb25ncmVwcmBgLgotCi0gICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMu
MAotICAgICAgICAiIiIKLSAgICAgICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcihzdHJpbmdp
bz1UcnVlKQotICAgICAgICB0dy5oYXNtYXJrdXAgPSBGYWxzZQotICAgICAgICBzZWxmLnRvdGVy
bWluYWwodHcpCi0gICAgICAgIGV4YyA9IHR3LnN0cmluZ2lvLmdldHZhbHVlKCkKLSAgICAgICAg
cmV0dXJuIGV4Yy5zdHJpcCgpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgY2Fwc3Rkb3V0KHNl
bGYpOgotICAgICAgICAiIiJSZXR1cm4gY2FwdHVyZWQgdGV4dCBmcm9tIHN0ZG91dCwgaWYgY2Fw
dHVyaW5nIGlzIGVuYWJsZWQKLQotICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjAKLSAgICAg
ICAgIiIiCi0gICAgICAgIHJldHVybiAnJy5qb2luKGNvbnRlbnQgZm9yIChwcmVmaXgsIGNvbnRl
bnQpIGluIHNlbGYuZ2V0X3NlY3Rpb25zKCdDYXB0dXJlZCBzdGRvdXQnKSkKLQotICAgIEBwcm9w
ZXJ0eQotICAgIGRlZiBjYXBzdGRlcnIoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBjYXB0dXJl
ZCB0ZXh0IGZyb20gc3RkZXJyLCBpZiBjYXB0dXJpbmcgaXMgZW5hYmxlZAotCi0gICAgICAgIC4u
IHZlcnNpb25hZGRlZDo6IDMuMAotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICcnLmpvaW4o
Y29udGVudCBmb3IgKHByZWZpeCwgY29udGVudCkgaW4gc2VsZi5nZXRfc2VjdGlvbnMoJ0NhcHR1
cmVkIHN0ZGVycicpKQotCi0gICAgcGFzc2VkID0gcHJvcGVydHkobGFtYmRhIHg6IHgub3V0Y29t
ZSA9PSAicGFzc2VkIikKLSAgICBmYWlsZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21l
ID09ICJmYWlsZWQiKQotICAgIHNraXBwZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21l
ID09ICJza2lwcGVkIikKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBmc3BhdGgoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLm5vZGVpZC5zcGxpdCgiOjoiKVswXQotCi0KLWRlZiBweXRlc3Rf
cnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgotICAgIHdoZW4gPSBjYWxsLndoZW4KLSAg
ICBkdXJhdGlvbiA9IGNhbGwuc3RvcCAtIGNhbGwuc3RhcnQKLSAgICBrZXl3b3JkcyA9IGRpY3Qo
Wyh4LCAxKSBmb3IgeCBpbiBpdGVtLmtleXdvcmRzXSkKLSAgICBleGNpbmZvID0gY2FsbC5leGNp
bmZvCi0gICAgc2VjdGlvbnMgPSBbXQotICAgIGlmIG5vdCBjYWxsLmV4Y2luZm86Ci0gICAgICAg
IG91dGNvbWUgPSAicGFzc2VkIgotICAgICAgICBsb25ncmVwciA9IE5vbmUKLSAgICBlbHNlOgot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGNpbmZvLCBFeGNlcHRpb25JbmZvKToKLSAgICAg
ICAgICAgIG91dGNvbWUgPSAiZmFpbGVkIgotICAgICAgICAgICAgbG9uZ3JlcHIgPSBleGNpbmZv
Ci0gICAgICAgIGVsaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKHNraXAuRXhjZXB0aW9uKToKLSAg
ICAgICAgICAgIG91dGNvbWUgPSAic2tpcHBlZCIKLSAgICAgICAgICAgIHIgPSBleGNpbmZvLl9n
ZXRyZXByY3Jhc2goKQotICAgICAgICAgICAgbG9uZ3JlcHIgPSAoc3RyKHIucGF0aCksIHIubGlu
ZW5vLCByLm1lc3NhZ2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRjb21lID0gImZh
aWxlZCIKLSAgICAgICAgICAgIGlmIGNhbGwud2hlbiA9PSAiY2FsbCI6Ci0gICAgICAgICAgICAg
ICAgbG9uZ3JlcHIgPSBpdGVtLnJlcHJfZmFpbHVyZShleGNpbmZvKQotICAgICAgICAgICAgZWxz
ZTogICMgZXhjZXB0aW9uIGluIHNldHVwIG9yIHRlYXJkb3duCi0gICAgICAgICAgICAgICAgbG9u
Z3JlcHIgPSBpdGVtLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1pdGVtLmNvbmZpZy5vcHRpb24u
dGJzdHlsZSkKLSAgICBmb3IgcndoZW4sIGtleSwgY29udGVudCBpbiBpdGVtLl9yZXBvcnRfc2Vj
dGlvbnM6Ci0gICAgICAgIHNlY3Rpb25zLmFwcGVuZCgoIkNhcHR1cmVkICVzICVzIiAlIChrZXks
IHJ3aGVuKSwgY29udGVudCkpCi0gICAgcmV0dXJuIFRlc3RSZXBvcnQoaXRlbS5ub2RlaWQsIGl0
ZW0ubG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsIG91dGNvbWUsIGxv
bmdyZXByLCB3aGVuLAotICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLCBkdXJhdGlvbikK
LQotCi1jbGFzcyBUZXN0UmVwb3J0KEJhc2VSZXBvcnQpOgotICAgICIiIiBCYXNpYyB0ZXN0IHJl
cG9ydCBvYmplY3QgKGFsc28gdXNlZCBmb3Igc2V0dXAgYW5kIHRlYXJkb3duIGNhbGxzIGlmCi0g
ICAgdGhleSBmYWlsKS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlaWQs
IGxvY2F0aW9uLCBrZXl3b3Jkcywgb3V0Y29tZSwKLSAgICAgICAgICAgICAgICAgbG9uZ3JlcHIs
IHdoZW4sIHNlY3Rpb25zPSgpLCBkdXJhdGlvbj0wLCAqKmV4dHJhKToKLSAgICAgICAgIzogbm9y
bWFsaXplZCBjb2xsZWN0aW9uIG5vZGUgaWQKLSAgICAgICAgc2VsZi5ub2RlaWQgPSBub2RlaWQK
LQotICAgICAgICAjOiBhIChmaWxlc3lzdGVtcGF0aCwgbGluZW5vLCBkb21haW5pbmZvKSB0dXBs
ZSBpbmRpY2F0aW5nIHRoZQotICAgICAgICAjOiBhY3R1YWwgbG9jYXRpb24gb2YgYSB0ZXN0IGl0
ZW0gLSBpdCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUKLSAgICAgICAgIzogY29sbGVjdGVk
IG9uZSBlLmcuIGlmIGEgbWV0aG9kIGlzIGluaGVyaXRlZCBmcm9tIGEgZGlmZmVyZW50IG1vZHVs
ZS4KLSAgICAgICAgc2VsZi5sb2NhdGlvbiA9IGxvY2F0aW9uCi0KLSAgICAgICAgIzogYSBuYW1l
IC0+IHZhbHVlIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwga2V5d29yZHMgYW5kCi0gICAgICAg
ICM6IG1hcmtlcnMgYXNzb2NpYXRlZCB3aXRoIGEgdGVzdCBpbnZvY2F0aW9uLgotICAgICAgICBz
ZWxmLmtleXdvcmRzID0ga2V5d29yZHMKLQotICAgICAgICAjOiB0ZXN0IG91dGNvbWUsIGFsd2F5
cyBvbmUgb2YgInBhc3NlZCIsICJmYWlsZWQiLCAic2tpcHBlZCIuCi0gICAgICAgIHNlbGYub3V0
Y29tZSA9IG91dGNvbWUKLQotICAgICAgICAjOiBOb25lIG9yIGEgZmFpbHVyZSByZXByZXNlbnRh
dGlvbi4KLSAgICAgICAgc2VsZi5sb25ncmVwciA9IGxvbmdyZXByCi0KLSAgICAgICAgIzogb25l
IG9mICdzZXR1cCcsICdjYWxsJywgJ3RlYXJkb3duJyB0byBpbmRpY2F0ZSBydW50ZXN0IHBoYXNl
LgotICAgICAgICBzZWxmLndoZW4gPSB3aGVuCi0KLSAgICAgICAgIzogbGlzdCBvZiBwYWlycyBg
YChzdHIsIHN0cilgYCBvZiBleHRyYSBpbmZvcm1hdGlvbiB3aGljaCBuZWVkcyB0bwotICAgICAg
ICAjOiBtYXJzaGFsbGFibGUuIFVzZWQgYnkgcHl0ZXN0IHRvIGFkZCBjYXB0dXJlZCB0ZXh0Ci0g
ICAgICAgICM6IGZyb20gYGBzdGRvdXRgYCBhbmQgYGBzdGRlcnJgYCwgYnV0IG1heSBiZSB1c2Vk
IGJ5IG90aGVyIHBsdWdpbnMKLSAgICAgICAgIzogdG8gYWRkIGFyYml0cmFyeSBpbmZvcm1hdGlv
biB0byByZXBvcnRzLgotICAgICAgICBzZWxmLnNlY3Rpb25zID0gbGlzdChzZWN0aW9ucykKLQot
ICAgICAgICAjOiB0aW1lIGl0IHRvb2sgdG8gcnVuIGp1c3QgdGhlIHRlc3QKLSAgICAgICAgc2Vs
Zi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0KLSAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZXh0
cmEpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFRlc3RSZXBv
cnQgJXIgd2hlbj0lciBvdXRjb21lPSVyPiIgJSAoCi0gICAgICAgICAgICBzZWxmLm5vZGVpZCwg
c2VsZi53aGVuLCBzZWxmLm91dGNvbWUpCi0KLQotY2xhc3MgVGVhcmRvd25FcnJvclJlcG9ydChC
YXNlUmVwb3J0KToKLSAgICBvdXRjb21lID0gImZhaWxlZCIKLSAgICB3aGVuID0gInRlYXJkb3du
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvbmdyZXByLCAqKmV4dHJhKToKLSAgICAgICAg
c2VsZi5sb25ncmVwciA9IGxvbmdyZXByCi0gICAgICAgIHNlbGYuc2VjdGlvbnMgPSBbXQotICAg
ICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShleHRyYSkKLQotCi1kZWYgcHl0ZXN0X21ha2VfY29s
bGVjdF9yZXBvcnQoY29sbGVjdG9yKToKLSAgICBjYWxsID0gQ2FsbEluZm8oCi0gICAgICAgIGxh
bWJkYTogbGlzdChjb2xsZWN0b3IuY29sbGVjdCgpKSwKLSAgICAgICAgJ2NvbGxlY3QnKQotICAg
IGxvbmdyZXByID0gTm9uZQotICAgIGlmIG5vdCBjYWxsLmV4Y2luZm86Ci0gICAgICAgIG91dGNv
bWUgPSAicGFzc2VkIgotICAgIGVsc2U6Ci0gICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgbm9z
ZQotICAgICAgICBza2lwX2V4Y2VwdGlvbnMgPSAoU2tpcHBlZCwpICsgbm9zZS5nZXRfc2tpcF9l
eGNlcHRpb25zKCkKLSAgICAgICAgaWYgY2FsbC5leGNpbmZvLmVycmlzaW5zdGFuY2Uoc2tpcF9l
eGNlcHRpb25zKToKLSAgICAgICAgICAgIG91dGNvbWUgPSAic2tpcHBlZCIKLSAgICAgICAgICAg
IHIgPSBjb2xsZWN0b3IuX3JlcHJfZmFpbHVyZV9weShjYWxsLmV4Y2luZm8sICJsaW5lIikucmVw
cmNyYXNoCi0gICAgICAgICAgICBsb25ncmVwciA9IChzdHIoci5wYXRoKSwgci5saW5lbm8sIHIu
bWVzc2FnZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dGNvbWUgPSAiZmFpbGVkIgot
ICAgICAgICAgICAgZXJyb3JpbmZvID0gY29sbGVjdG9yLnJlcHJfZmFpbHVyZShjYWxsLmV4Y2lu
Zm8pCi0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihlcnJvcmluZm8sICJ0b3Rlcm1pbmFsIik6
Ci0gICAgICAgICAgICAgICAgZXJyb3JpbmZvID0gQ29sbGVjdEVycm9yUmVwcihlcnJvcmluZm8p
Ci0gICAgICAgICAgICBsb25ncmVwciA9IGVycm9yaW5mbwotICAgIHJlcCA9IENvbGxlY3RSZXBv
cnQoY29sbGVjdG9yLm5vZGVpZCwgb3V0Y29tZSwgbG9uZ3JlcHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnZXRhdHRyKGNhbGwsICdyZXN1bHQnLCBOb25lKSkKLSAgICByZXAuY2FsbCA9IGNh
bGwgICMgc2VlIGNvbGxlY3Rfb25lX25vZGUKLSAgICByZXR1cm4gcmVwCi0KLQotY2xhc3MgQ29s
bGVjdFJlcG9ydChCYXNlUmVwb3J0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZWlkLCBv
dXRjb21lLCBsb25ncmVwciwgcmVzdWx0LAotICAgICAgICAgICAgICAgICBzZWN0aW9ucz0oKSwg
KipleHRyYSk6Ci0gICAgICAgIHNlbGYubm9kZWlkID0gbm9kZWlkCi0gICAgICAgIHNlbGYub3V0
Y29tZSA9IG91dGNvbWUKLSAgICAgICAgc2VsZi5sb25ncmVwciA9IGxvbmdyZXByCi0gICAgICAg
IHNlbGYucmVzdWx0ID0gcmVzdWx0IG9yIFtdCi0gICAgICAgIHNlbGYuc2VjdGlvbnMgPSBsaXN0
KHNlY3Rpb25zKQotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShleHRyYSkKLQotICAgIEBw
cm9wZXJ0eQotICAgIGRlZiBsb2NhdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLmZz
cGF0aCwgTm9uZSwgc2VsZi5mc3BhdGgpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAg
ICAgIHJldHVybiAiPENvbGxlY3RSZXBvcnQgJXIgbGVucmVzdWx0PSVzIG91dGNvbWU9JXI+IiAl
ICgKLSAgICAgICAgICAgIHNlbGYubm9kZWlkLCBsZW4oc2VsZi5yZXN1bHQpLCBzZWxmLm91dGNv
bWUpCi0KLQotY2xhc3MgQ29sbGVjdEVycm9yUmVwcihUZXJtaW5hbFJlcHIpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtc2cpOgotICAgICAgICBzZWxmLmxvbmdyZXByID0gbXNnCi0KLSAgICBk
ZWYgdG90ZXJtaW5hbChzZWxmLCBvdXQpOgotICAgICAgICBvdXQubGluZShzZWxmLmxvbmdyZXBy
LCByZWQ9VHJ1ZSkKLQotCi1jbGFzcyBTZXR1cFN0YXRlKG9iamVjdCk6Ci0gICAgIiIiIHNoYXJl
ZCBzdGF0ZSBmb3Igc2V0dGluZyB1cC90ZWFyaW5nIGRvd24gdGVzdCBpdGVtcyBvciBjb2xsZWN0
b3JzLiAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdGFjayA9
IFtdCi0gICAgICAgIHNlbGYuX2ZpbmFsaXplcnMgPSB7fQotCi0gICAgZGVmIGFkZGZpbmFsaXpl
cihzZWxmLCBmaW5hbGl6ZXIsIGNvbGl0ZW0pOgotICAgICAgICAiIiIgYXR0YWNoIGEgZmluYWxp
emVyIHRvIHRoZSBnaXZlbiBjb2xpdGVtLgotICAgICAgICBpZiBjb2xpdGVtIGlzIE5vbmUsIHRo
aXMgd2lsbCBhZGQgYSBmaW5hbGl6ZXIgdGhhdAotICAgICAgICBpcyBjYWxsZWQgYXQgdGhlIGVu
ZCBvZiB0ZWFyZG93bl9hbGwoKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGFzc2VydCBjb2xpdGVt
IGFuZCBub3QgaXNpbnN0YW5jZShjb2xpdGVtLCB0dXBsZSkKLSAgICAgICAgYXNzZXJ0IGNhbGxh
YmxlKGZpbmFsaXplcikKLSAgICAgICAgIyBhc3NlcnQgY29saXRlbSBpbiBzZWxmLnN0YWNrICAj
IHNvbWUgdW5pdCB0ZXN0cyBkb24ndCBzZXR1cCBzdGFjayA6LwotICAgICAgICBzZWxmLl9maW5h
bGl6ZXJzLnNldGRlZmF1bHQoY29saXRlbSwgW10pLmFwcGVuZChmaW5hbGl6ZXIpCi0KLSAgICBk
ZWYgX3BvcF9hbmRfdGVhcmRvd24oc2VsZik6Ci0gICAgICAgIGNvbGl0ZW0gPSBzZWxmLnN0YWNr
LnBvcCgpCi0gICAgICAgIHNlbGYuX3RlYXJkb3duX3dpdGhfZmluYWxpemF0aW9uKGNvbGl0ZW0p
Ci0KLSAgICBkZWYgX2NhbGxmaW5hbGl6ZXJzKHNlbGYsIGNvbGl0ZW0pOgotICAgICAgICBmaW5h
bGl6ZXJzID0gc2VsZi5fZmluYWxpemVycy5wb3AoY29saXRlbSwgTm9uZSkKLSAgICAgICAgZXhj
ID0gTm9uZQotICAgICAgICB3aGlsZSBmaW5hbGl6ZXJzOgotICAgICAgICAgICAgZmluID0gZmlu
YWxpemVycy5wb3AoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZpbigpCi0g
ICAgICAgICAgICBleGNlcHQgVEVTVF9PVVRDT01FOgotICAgICAgICAgICAgICAgICMgWFhYIE9u
bHkgZmlyc3QgZXhjZXB0aW9uIHdpbGwgYmUgc2VlbiBieSB1c2VyLAotICAgICAgICAgICAgICAg
ICMgICAgIGlkZWFsbHkgYWxsIHNob3VsZCBiZSByZXBvcnRlZC4KLSAgICAgICAgICAgICAgICBp
ZiBleGMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZXhjID0gc3lzLmV4Y19pbmZvKCkK
LSAgICAgICAgaWYgZXhjOgotICAgICAgICAgICAgcHkuYnVpbHRpbi5fcmVyYWlzZSgqZXhjKQot
Ci0gICAgZGVmIF90ZWFyZG93bl93aXRoX2ZpbmFsaXphdGlvbihzZWxmLCBjb2xpdGVtKToKLSAg
ICAgICAgc2VsZi5fY2FsbGZpbmFsaXplcnMoY29saXRlbSkKLSAgICAgICAgaWYgaGFzYXR0cihj
b2xpdGVtLCAidGVhcmRvd24iKToKLSAgICAgICAgICAgIGNvbGl0ZW0udGVhcmRvd24oKQotICAg
ICAgICBmb3IgY29saXRlbSBpbiBzZWxmLl9maW5hbGl6ZXJzOgotICAgICAgICAgICAgYXNzZXJ0
IGNvbGl0ZW0gaXMgTm9uZSBvciBjb2xpdGVtIGluIHNlbGYuc3RhY2sgXAotICAgICAgICAgICAg
ICAgIG9yIGlzaW5zdGFuY2UoY29saXRlbSwgdHVwbGUpCi0KLSAgICBkZWYgdGVhcmRvd25fYWxs
KHNlbGYpOgotICAgICAgICB3aGlsZSBzZWxmLnN0YWNrOgotICAgICAgICAgICAgc2VsZi5fcG9w
X2FuZF90ZWFyZG93bigpCi0gICAgICAgIGZvciBrZXkgaW4gbGlzdChzZWxmLl9maW5hbGl6ZXJz
KToKLSAgICAgICAgICAgIHNlbGYuX3RlYXJkb3duX3dpdGhfZmluYWxpemF0aW9uKGtleSkKLSAg
ICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9maW5hbGl6ZXJzCi0KLSAgICBkZWYgdGVhcmRvd25fZXhh
Y3Qoc2VsZiwgaXRlbSwgbmV4dGl0ZW0pOgotICAgICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IG5l
eHRpdGVtIGFuZCBuZXh0aXRlbS5saXN0Y2hhaW4oKSBvciBbXQotICAgICAgICBzZWxmLl90ZWFy
ZG93bl90b3dhcmRzKG5lZWRlZF9jb2xsZWN0b3JzKQotCi0gICAgZGVmIF90ZWFyZG93bl90b3dh
cmRzKHNlbGYsIG5lZWRlZF9jb2xsZWN0b3JzKToKLSAgICAgICAgd2hpbGUgc2VsZi5zdGFjazoK
LSAgICAgICAgICAgIGlmIHNlbGYuc3RhY2sgPT0gbmVlZGVkX2NvbGxlY3RvcnNbOmxlbihzZWxm
LnN0YWNrKV06Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHNlbGYuX3BvcF9h
bmRfdGVhcmRvd24oKQotCi0gICAgZGVmIHByZXBhcmUoc2VsZiwgY29saXRlbSk6Ci0gICAgICAg
ICIiIiBzZXR1cCBvYmplY3RzIGFsb25nIHRoZSBjb2xsZWN0b3IgY2hhaW4gdG8gdGhlIHRlc3Qt
bWV0aG9kCi0gICAgICAgICAgICBhbmQgdGVhcmRvd24gcHJldmlvdXNseSBzZXR1cCBvYmplY3Rz
LiIiIgotICAgICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IGNvbGl0ZW0ubGlzdGNoYWluKCkKLSAg
ICAgICAgc2VsZi5fdGVhcmRvd25fdG93YXJkcyhuZWVkZWRfY29sbGVjdG9ycykKLQotICAgICAg
ICAjIGNoZWNrIGlmIHRoZSBsYXN0IGNvbGxlY3Rpb24gbm9kZSBoYXMgcmFpc2VkIGFuIGVycm9y
Ci0gICAgICAgIGZvciBjb2wgaW4gc2VsZi5zdGFjazoKLSAgICAgICAgICAgIGlmIGhhc2F0dHIo
Y29sLCAnX3ByZXBhcmVfZXhjJyk6Ci0gICAgICAgICAgICAgICAgcHkuYnVpbHRpbi5fcmVyYWlz
ZSgqY29sLl9wcmVwYXJlX2V4YykKLSAgICAgICAgZm9yIGNvbCBpbiBuZWVkZWRfY29sbGVjdG9y
c1tsZW4oc2VsZi5zdGFjayk6XToKLSAgICAgICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKGNvbCkK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb2wuc2V0dXAoKQotICAgICAgICAg
ICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgICAgICAgICBjb2wuX3ByZXBhcmVfZXhj
ID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgICAgICByYWlzZQotCi0KLWRlZiBjb2xsZWN0
X29uZV9ub2RlKGNvbGxlY3Rvcik6Ci0gICAgaWhvb2sgPSBjb2xsZWN0b3IuaWhvb2sKLSAgICBp
aG9vay5weXRlc3RfY29sbGVjdHN0YXJ0KGNvbGxlY3Rvcj1jb2xsZWN0b3IpCi0gICAgcmVwID0g
aWhvb2sucHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVjdG9yPWNvbGxlY3RvcikKLSAg
ICBjYWxsID0gcmVwLl9fZGljdF9fLnBvcCgiY2FsbCIsIE5vbmUpCi0gICAgaWYgY2FsbCBhbmQg
Y2hlY2tfaW50ZXJhY3RpdmVfZXhjZXB0aW9uKGNhbGwsIHJlcCk6Ci0gICAgICAgIGlob29rLnB5
dGVzdF9leGNlcHRpb25faW50ZXJhY3Qobm9kZT1jb2xsZWN0b3IsIGNhbGw9Y2FsbCwgcmVwb3J0
PXJlcCkKLSAgICByZXR1cm4gcmVwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Nl
dHVwb25seS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2V0dXBvbmx5LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhMWM3NDU3ZDdlNTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L3NldHVwb25seS5weQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAg
QEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLQotaW1wb3J0IHB5dGVzdAotaW1wb3J0IHN5cwotCi0KLWRlZiBweXRlc3Rf
YWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImRlYnVnY29u
ZmlnIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tc2V0dXBvbmx5JywgJy0tc2V0dXAtb25seScs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgc2V0
dXAgZml4dHVyZXMsIGRvIG5vdCBleGVjdXRlIHRlc3RzLiIpCi0gICAgZ3JvdXAuYWRkb3B0aW9u
KCctLXNldHVwc2hvdycsICctLXNldHVwLXNob3cnLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IHNldHVwIG9mIGZpeHR1cmVzIHdoaWxlIGV4ZWN1
dGluZyB0ZXN0cy4iKQotCi0KLUBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRl
ZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmLCByZXF1ZXN0KToKLSAgICB5aWVsZAot
ICAgIGNvbmZpZyA9IHJlcXVlc3QuY29uZmlnCi0gICAgaWYgY29uZmlnLm9wdGlvbi5zZXR1cHNo
b3c6Ci0gICAgICAgIGlmIGhhc2F0dHIocmVxdWVzdCwgJ3BhcmFtJyk6Ci0gICAgICAgICAgICAj
IFNhdmUgdGhlIGZpeHR1cmUgcGFyYW1ldGVyIHNvIC5fc2hvd19maXh0dXJlX2FjdGlvbigpIGNh
bgotICAgICAgICAgICAgIyBkaXNwbGF5IGl0IG5vdyBhbmQgZHVyaW5nIHRoZSB0ZWFyZG93biAo
aW4gLmZpbmlzaCgpKS4KLSAgICAgICAgICAgIGlmIGZpeHR1cmVkZWYuaWRzOgotICAgICAgICAg
ICAgICAgIGlmIGNhbGxhYmxlKGZpeHR1cmVkZWYuaWRzKToKLSAgICAgICAgICAgICAgICAgICAg
Zml4dHVyZWRlZi5jYWNoZWRfcGFyYW0gPSBmaXh0dXJlZGVmLmlkcyhyZXF1ZXN0LnBhcmFtKQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuY2Fj
aGVkX3BhcmFtID0gZml4dHVyZWRlZi5pZHNbCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LnBhcmFtX2luZGV4XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaXh0
dXJlZGVmLmNhY2hlZF9wYXJhbSA9IHJlcXVlc3QucGFyYW0KLSAgICAgICAgX3Nob3dfZml4dHVy
ZV9hY3Rpb24oZml4dHVyZWRlZiwgJ1NFVFVQJykKLQotCi1kZWYgcHl0ZXN0X2ZpeHR1cmVfcG9z
dF9maW5hbGl6ZXIoZml4dHVyZWRlZik6Ci0gICAgaWYgaGFzYXR0cihmaXh0dXJlZGVmLCAiY2Fj
aGVkX3Jlc3VsdCIpOgotICAgICAgICBjb25maWcgPSBmaXh0dXJlZGVmLl9maXh0dXJlbWFuYWdl
ci5jb25maWcKLSAgICAgICAgaWYgY29uZmlnLm9wdGlvbi5zZXR1cHNob3c6Ci0gICAgICAgICAg
ICBfc2hvd19maXh0dXJlX2FjdGlvbihmaXh0dXJlZGVmLCAnVEVBUkRPV04nKQotICAgICAgICAg
ICAgaWYgaGFzYXR0cihmaXh0dXJlZGVmLCAiY2FjaGVkX3BhcmFtIik6Ci0gICAgICAgICAgICAg
ICAgZGVsIGZpeHR1cmVkZWYuY2FjaGVkX3BhcmFtCi0KLQotZGVmIF9zaG93X2ZpeHR1cmVfYWN0
aW9uKGZpeHR1cmVkZWYsIG1zZyk6Ci0gICAgY29uZmlnID0gZml4dHVyZWRlZi5fZml4dHVyZW1h
bmFnZXIuY29uZmlnCi0gICAgY2FwbWFuID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2lu
KCdjYXB0dXJlbWFuYWdlcicpCi0gICAgaWYgY2FwbWFuOgotICAgICAgICBvdXQsIGVyciA9IGNh
cG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKLQotICAgIHR3ID0gY29uZmlnLmdldF90ZXJt
aW5hbF93cml0ZXIoKQotICAgIHR3LmxpbmUoKQotICAgIHR3LndyaXRlKCcgJyAqIDIgKiBmaXh0
dXJlZGVmLnNjb3BlbnVtKQotICAgIHR3LndyaXRlKCd7c3RlcH0ge3Njb3BlfSB7Zml4dHVyZX0n
LmZvcm1hdCgKLSAgICAgICAgc3RlcD1tc2cubGp1c3QoOCksICAjIGFsaWduIHRoZSBvdXRwdXQg
dG8gVEVBUkRPV04KLSAgICAgICAgc2NvcGU9Zml4dHVyZWRlZi5zY29wZVswXS51cHBlcigpLAot
ICAgICAgICBmaXh0dXJlPWZpeHR1cmVkZWYuYXJnbmFtZSkpCi0KLSAgICBpZiBtc2cgPT0gJ1NF
VFVQJzoKLSAgICAgICAgZGVwcyA9IHNvcnRlZChhcmcgZm9yIGFyZyBpbiBmaXh0dXJlZGVmLmFy
Z25hbWVzIGlmIGFyZyAhPSAncmVxdWVzdCcpCi0gICAgICAgIGlmIGRlcHM6Ci0gICAgICAgICAg
ICB0dy53cml0ZSgnIChmaXh0dXJlcyB1c2VkOiB7MH0pJy5mb3JtYXQoJywgJy5qb2luKGRlcHMp
KSkKLQotICAgIGlmIGhhc2F0dHIoZml4dHVyZWRlZiwgJ2NhY2hlZF9wYXJhbScpOgotICAgICAg
ICB0dy53cml0ZSgnW3swfV0nLmZvcm1hdChmaXh0dXJlZGVmLmNhY2hlZF9wYXJhbSkpCi0KLSAg
ICBpZiBjYXBtYW46Ci0gICAgICAgIGNhcG1hbi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKG91dCkKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZShlcnIp
Ci0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9jbWRsaW5l
X21haW4oY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0aW9uLnNldHVwb25seToKLSAgICAgICAg
Y29uZmlnLm9wdGlvbi5zZXR1cHNob3cgPSBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L3NldHVwcGxhbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2V0dXBwbGFuLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTFiZDQwNjk4YjcuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NldHVwcGxhbi5weQorKysgL2Rldi9udWxsCkBAIC0x
LDI1ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZp
c2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHB5dGVzdAotCi0KLWRlZiBweXRlc3RfYWRk
b3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImRlYnVnY29uZmln
IikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tc2V0dXBwbGFuJywgJy0tc2V0dXAtcGxhbicsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9InNob3cgd2hhdCBm
aXh0dXJlcyBhbmQgdGVzdHMgd291bGQgYmUgZXhlY3V0ZWQgYnV0ICIKLSAgICAgICAgICAgICAg
ICAgICAgImRvbid0IGV4ZWN1dGUgYW55dGhpbmcuIikKLQotCi1AcHl0ZXN0Lmhvb2tpbXBsKHRy
eWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVz
dCk6Ci0gICAgIyBXaWxsIHJldHVybiBhIGR1bW15IGZpeHR1cmUgaWYgdGhlIHNldHVwb25seSBv
cHRpb24gaXMgcHJvdmlkZWQuCi0gICAgaWYgcmVxdWVzdC5jb25maWcub3B0aW9uLnNldHVwcGxh
bjoKLSAgICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKE5vbmUsIE5vbmUsIE5vbmUp
Ci0gICAgICAgIHJldHVybiBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQKLQotCi1AcHl0ZXN0Lmhv
b2tpbXBsKHRyeWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgot
ICAgIGlmIGNvbmZpZy5vcHRpb24uc2V0dXBwbGFuOgotICAgICAgICBjb25maWcub3B0aW9uLnNl
dHVwb25seSA9IFRydWUKLSAgICAgICAgY29uZmlnLm9wdGlvbi5zZXR1cHNob3cgPSBUcnVlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NraXBwaW5nLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9za2lwcGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlNWI0
MzgwMGI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9za2lwcGluZy5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBACi0iIiIgc3VwcG9ydCBmb3Igc2tpcC94
ZmFpbCBmdW5jdGlvbnMgYW5kIG1hcmtlcnMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgb3MKLWlt
cG9ydCBzaXgKLWltcG9ydCBzeXMKLWltcG9ydCB0cmFjZWJhY2sKLQotZnJvbSBfcHl0ZXN0LmNv
bmZpZyBpbXBvcnQgaG9va2ltcGwKLWZyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBNYXJrSW5mbywg
TWFya0RlY29yYXRvcgotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsLCBza2lwLCB4
ZmFpbCwgVEVTVF9PVVRDT01FCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAg
ICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAuYWRkb3B0aW9u
KCctLXJ1bnhmYWlsJywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVzdD0icnVueGZhaWwiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSJydW4gdGVzdHMgZXZlbiBpZiB0aGV5IGFyZSBtYXJrZWQgeGZhaWwiKQotCi0gICAgcGFyc2Vy
LmFkZGluaSgieGZhaWxfc3RyaWN0IiwgImRlZmF1bHQgZm9yIHRoZSBzdHJpY3QgcGFyYW1ldGVy
IG9mIHhmYWlsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFya2VycyB3
aGVuIG5vdCBnaXZlbiBleHBsaWNpdGx5IChkZWZhdWx0OiAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkZhbHNlKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
PSJib29sIikKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGlmIGNvbmZp
Zy5vcHRpb24ucnVueGZhaWw6Ci0gICAgICAgICMgeWF5IGEgaGFjawotICAgICAgICBpbXBvcnQg
cHl0ZXN0Ci0gICAgICAgIG9sZCA9IHB5dGVzdC54ZmFpbAotICAgICAgICBjb25maWcuX2NsZWFu
dXAuYXBwZW5kKGxhbWJkYTogc2V0YXR0cihweXRlc3QsICJ4ZmFpbCIsIG9sZCkpCi0KLSAgICAg
ICAgZGVmIG5vcCgqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAg
IG5vcC5FeGNlcHRpb24gPSB4ZmFpbC5FeGNlcHRpb24KLSAgICAgICAgc2V0YXR0cihweXRlc3Qs
ICJ4ZmFpbCIsIG5vcCkKLQotICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKCJtYXJrZXJzIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2tpcChyZWFzb249Tm9uZSk6IHNraXAgdGhl
IGdpdmVuIHRlc3QgZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCByZWFzb24uICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhhbXBsZTogc2tpcChyZWFzb249XCJubyB3YXkgb2YgY3Vy
cmVudGx5IHRlc3RpbmcgdGhpc1wiKSBza2lwcyB0aGUgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0ZXN0LiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgY29uZmln
LmFkZGluaXZhbHVlX2xpbmUoIm1hcmtlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJza2lwaWYoY29uZGl0aW9uKTogc2tpcCB0aGUgZ2l2ZW4gdGVzdCBmdW5jdGlvbiBpZiBldmFs
KGNvbmRpdGlvbikgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHRzIGluIGEg
VHJ1ZSB2YWx1ZS4gIEV2YWx1YXRpb24gaGFwcGVucyB3aXRoaW4gdGhlICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibW9kdWxlIGdsb2JhbCBjb250ZXh0LiBFeGFtcGxlOiBza2lwaWYo
J3N5cy5wbGF0Zm9ybSA9PSBcIndpbjMyXCInKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInNraXBzIHRoZSB0ZXN0IGlmIHdlIGFyZSBvbiB0aGUgd2luMzIgcGxhdGZvcm0uIHNlZSAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9z
a2lwcGluZy5odG1sIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICBjb25maWcu
YWRkaW5pdmFsdWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
InhmYWlsKGNvbmRpdGlvbiwgcmVhc29uPU5vbmUsIHJ1bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3Ry
aWN0PUZhbHNlKTogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXJrIHRoZSB0ZXN0
IGZ1bmN0aW9uIGFzIGFuIGV4cGVjdGVkIGZhaWx1cmUgaWYgZXZhbChjb25kaXRpb24pICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzIGEgVHJ1ZSB2YWx1ZS4gT3B0aW9uYWxseSBz
cGVjaWZ5IGEgcmVhc29uIGZvciBiZXR0ZXIgcmVwb3J0aW5nICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYW5kIHJ1bj1GYWxzZSBpZiB5b3UgZG9uJ3QgZXZlbiB3YW50IHRvIGV4ZWN1
dGUgdGhlIHRlc3QgZnVuY3Rpb24uICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWYg
b25seSBzcGVjaWZpYyBleGNlcHRpb24ocykgYXJlIGV4cGVjdGVkLCB5b3UgY2FuIGxpc3QgdGhl
bSBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhaXNlcywgYW5kIGlmIHRoZSB0
ZXN0IGZhaWxzIGluIG90aGVyIHdheXMsIGl0IHdpbGwgYmUgcmVwb3J0ZWQgYXMgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJhIHRydWUgZmFpbHVyZS4gU2VlIGh0dHA6Ly9weXRlc3Qu
b3JnL2xhdGVzdC9za2lwcGluZy5odG1sIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK
LQotCi1jbGFzcyBNYXJrRXZhbHVhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGl0ZW0sIG5hbWUpOgotICAgICAgICBzZWxmLml0ZW0gPSBpdGVtCi0gICAgICAgIHNlbGYuX21h
cmtzID0gTm9uZQotICAgICAgICBzZWxmLl9tYXJrID0gTm9uZQotICAgICAgICBzZWxmLl9tYXJr
X25hbWUgPSBuYW1lCi0KLSAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX21h
cmtzID0gc2VsZi5fZ2V0X21hcmtzKCkKLSAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fbWFya3Mp
Ci0gICAgX19ub256ZXJvX18gPSBfX2Jvb2xfXwotCi0gICAgZGVmIHdhc3ZhbGlkKHNlbGYpOgot
ICAgICAgICByZXR1cm4gbm90IGhhc2F0dHIoc2VsZiwgJ2V4YycpCi0KLSAgICBkZWYgX2dldF9t
YXJrcyhzZWxmKToKLQotICAgICAgICBrZXl3b3JkID0gc2VsZi5pdGVtLmtleXdvcmRzLmdldChz
ZWxmLl9tYXJrX25hbWUpCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5d29yZCwgTWFya0RlY29y
YXRvcik6Ci0gICAgICAgICAgICByZXR1cm4gW2tleXdvcmQubWFya10KLSAgICAgICAgZWxpZiBp
c2luc3RhbmNlKGtleXdvcmQsIE1hcmtJbmZvKToKLSAgICAgICAgICAgIHJldHVybiBbeC5jb21i
aW5lZCBmb3IgeCBpbiBrZXl3b3JkXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IFtdCi0KLSAgICBkZWYgaW52YWxpZHJhaXNlKHNlbGYsIGV4Yyk6Ci0gICAgICAgIHJhaXNlcyA9
IHNlbGYuZ2V0KCdyYWlzZXMnKQotICAgICAgICBpZiBub3QgcmFpc2VzOgotICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIHJldHVybiBub3QgaXNpbnN0YW5jZShleGMsIHJhaXNlcykKLQotICAg
IGRlZiBpc3RydWUoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9pc3RydWUoKQotICAgICAgICBleGNlcHQgVEVTVF9PVVRDT01FOgotICAgICAgICAgICAgc2Vs
Zi5leGMgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmV4
Y1sxXSwgU3ludGF4RXJyb3IpOgotICAgICAgICAgICAgICAgIG1zZyA9IFsiICIgKiAoc2VsZi5l
eGNbMV0ub2Zmc2V0ICsgNCkgKyAiXiIsIF0KLSAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKCJT
eW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCpzZWxmLmV4Y1s6
Ml0pCi0gICAgICAgICAgICBmYWlsKCJFcnJvciBldmFsdWF0aW5nICVyIGV4cHJlc3Npb25cbiIK
LSAgICAgICAgICAgICAgICAgIiAgICAlc1xuIgotICAgICAgICAgICAgICAgICAiJXMiCi0gICAg
ICAgICAgICAgICAgICUgKHNlbGYuX21hcmtfbmFtZSwgc2VsZi5leHByLCAiXG4iLmpvaW4obXNn
KSksCi0gICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UpCi0KLSAgICBkZWYgX2dldGdsb2Jh
bHMoc2VsZik6Ci0gICAgICAgIGQgPSB7J29zJzogb3MsICdzeXMnOiBzeXMsICdjb25maWcnOiBz
ZWxmLml0ZW0uY29uZmlnfQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYuaXRlbSwgJ29iaicpOgot
ICAgICAgICAgICAgZC51cGRhdGUoc2VsZi5pdGVtLm9iai5fX2dsb2JhbHNfXykKLSAgICAgICAg
cmV0dXJuIGQKLQotICAgIGRlZiBfaXN0cnVlKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHNl
bGYsICdyZXN1bHQnKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdAotICAgICAgICBz
ZWxmLl9tYXJrcyA9IHNlbGYuX2dldF9tYXJrcygpCi0KLSAgICAgICAgaWYgc2VsZi5fbWFya3M6
Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlCi0gICAgICAgICAgICBmb3IgbWFyayBp
biBzZWxmLl9tYXJrczoKLSAgICAgICAgICAgICAgICBzZWxmLl9tYXJrID0gbWFyawotICAgICAg
ICAgICAgICAgIGlmICdjb25kaXRpb24nIGluIG1hcmsua3dhcmdzOgotICAgICAgICAgICAgICAg
ICAgICBhcmdzID0gKG1hcmsua3dhcmdzWydjb25kaXRpb24nXSwpCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IG1hcmsuYXJncwotCi0gICAgICAgICAg
ICAgICAgZm9yIGV4cHIgaW4gYXJnczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leHByID0g
ZXhwcgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cHIsIHNpeC5zdHJpbmdf
dHlwZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHNlbGYuX2dldGdsb2JhbHMoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVkX2V2YWwoc2VsZi5pdGVtLmNv
bmZpZywgZXhwciwgZCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICJyZWFzb24iIG5vdCBpbiBtYXJrLmt3YXJnczoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIFhYWCBiZXR0ZXIgYmUgY2hlY2tlZCBhdCBjb2xsZWN0aW9uIHRpbWUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAieW91IG5lZWQgdG8gc3BlY2lmeSBy
ZWFzb249U1RSSU5HICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVu
IHVzaW5nIGJvb2xlYW5zIGFzIGNvbmRpdGlvbnMuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhaWwobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYm9vbChleHBy
KQotICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnJlc3VsdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVhc29u
ID0gbWFyay5rd2FyZ3MuZ2V0KCdyZWFzb24nLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5leHByID0gZXhwcgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmVzdWx0Ci0KLSAgICAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZXN1bHQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVhc29uID0g
bWFyay5rd2FyZ3MuZ2V0KCdyZWFzb24nLCBOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5yZXN1bHQKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgZ2V0KHNlbGYs
IGF0dHIsIGRlZmF1bHQ9Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYuX21hcmsgaXMgTm9uZToKLSAg
ICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYXJrLmt3YXJn
cy5nZXQoYXR0ciwgZGVmYXVsdCkKLQotICAgIGRlZiBnZXRleHBsYW5hdGlvbihzZWxmKToKLSAg
ICAgICAgZXhwbCA9IGdldGF0dHIoc2VsZiwgJ3JlYXNvbicsIE5vbmUpIG9yIHNlbGYuZ2V0KCdy
ZWFzb24nLCBOb25lKQotICAgICAgICBpZiBub3QgZXhwbDoKLSAgICAgICAgICAgIGlmIG5vdCBo
YXNhdHRyKHNlbGYsICdleHByJyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAiY29uZGl0aW9uOiAiICsgc3RyKHNl
bGYuZXhwcikKLSAgICAgICAgcmV0dXJuIGV4cGwKLQotCi1AaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1
ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKLSAgICAjIENoZWNrIGlmIHNraXAg
b3Igc2tpcGlmIGFyZSBzcGVjaWZpZWQgYXMgcHl0ZXN0IG1hcmtzCi0gICAgaXRlbS5fc2tpcHBl
ZF9ieV9tYXJrID0gRmFsc2UKLSAgICBza2lwaWZfaW5mbyA9IGl0ZW0ua2V5d29yZHMuZ2V0KCdz
a2lwaWYnKQotICAgIGlmIGlzaW5zdGFuY2Uoc2tpcGlmX2luZm8sIChNYXJrSW5mbywgTWFya0Rl
Y29yYXRvcikpOgotICAgICAgICBldmFsX3NraXBpZiA9IE1hcmtFdmFsdWF0b3IoaXRlbSwgJ3Nr
aXBpZicpCi0gICAgICAgIGlmIGV2YWxfc2tpcGlmLmlzdHJ1ZSgpOgotICAgICAgICAgICAgaXRl
bS5fc2tpcHBlZF9ieV9tYXJrID0gVHJ1ZQotICAgICAgICAgICAgc2tpcChldmFsX3NraXBpZi5n
ZXRleHBsYW5hdGlvbigpKQotCi0gICAgc2tpcF9pbmZvID0gaXRlbS5rZXl3b3Jkcy5nZXQoJ3Nr
aXAnKQotICAgIGlmIGlzaW5zdGFuY2Uoc2tpcF9pbmZvLCAoTWFya0luZm8sIE1hcmtEZWNvcmF0
b3IpKToKLSAgICAgICAgaXRlbS5fc2tpcHBlZF9ieV9tYXJrID0gVHJ1ZQotICAgICAgICBpZiAn
cmVhc29uJyBpbiBza2lwX2luZm8ua3dhcmdzOgotICAgICAgICAgICAgc2tpcChza2lwX2luZm8u
a3dhcmdzWydyZWFzb24nXSkKLSAgICAgICAgZWxpZiBza2lwX2luZm8uYXJnczoKLSAgICAgICAg
ICAgIHNraXAoc2tpcF9pbmZvLmFyZ3NbMF0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
a2lwKCJ1bmNvbmRpdGlvbmFsIHNraXAiKQotCi0gICAgaXRlbS5fZXZhbHhmYWlsID0gTWFya0V2
YWx1YXRvcihpdGVtLCAneGZhaWwnKQotICAgIGNoZWNrX3hmYWlsX25vX3J1bihpdGVtKQotCi0K
LUBob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChweWZ1
bmNpdGVtKToKLSAgICBjaGVja194ZmFpbF9ub19ydW4ocHlmdW5jaXRlbSkKLSAgICBvdXRjb21l
ID0geWllbGQKLSAgICBwYXNzZWQgPSBvdXRjb21lLmV4Y2luZm8gaXMgTm9uZQotICAgIGlmIHBh
c3NlZDoKLSAgICAgICAgY2hlY2tfc3RyaWN0X3hmYWlsKHB5ZnVuY2l0ZW0pCi0KLQotZGVmIGNo
ZWNrX3hmYWlsX25vX3J1bihpdGVtKToKLSAgICAiIiJjaGVjayB4ZmFpbChydW49RmFsc2UpIiIi
Ci0gICAgaWYgbm90IGl0ZW0uY29uZmlnLm9wdGlvbi5ydW54ZmFpbDoKLSAgICAgICAgZXZhbHhm
YWlsID0gaXRlbS5fZXZhbHhmYWlsCi0gICAgICAgIGlmIGV2YWx4ZmFpbC5pc3RydWUoKToKLSAg
ICAgICAgICAgIGlmIG5vdCBldmFseGZhaWwuZ2V0KCdydW4nLCBUcnVlKToKLSAgICAgICAgICAg
ICAgICB4ZmFpbCgiW05PVFJVTl0gIiArIGV2YWx4ZmFpbC5nZXRleHBsYW5hdGlvbigpKQotCi0K
LWRlZiBjaGVja19zdHJpY3RfeGZhaWwocHlmdW5jaXRlbSk6Ci0gICAgIiIiY2hlY2sgeGZhaWwo
c3RyaWN0PVRydWUpIGZvciB0aGUgZ2l2ZW4gUEFTU0lORyB0ZXN0IiIiCi0gICAgZXZhbHhmYWls
ID0gcHlmdW5jaXRlbS5fZXZhbHhmYWlsCi0gICAgaWYgZXZhbHhmYWlsLmlzdHJ1ZSgpOgotICAg
ICAgICBzdHJpY3RfZGVmYXVsdCA9IHB5ZnVuY2l0ZW0uY29uZmlnLmdldGluaSgneGZhaWxfc3Ry
aWN0JykKLSAgICAgICAgaXNfc3RyaWN0X3hmYWlsID0gZXZhbHhmYWlsLmdldCgnc3RyaWN0Jywg
c3RyaWN0X2RlZmF1bHQpCi0gICAgICAgIGlmIGlzX3N0cmljdF94ZmFpbDoKLSAgICAgICAgICAg
IGRlbCBweWZ1bmNpdGVtLl9ldmFseGZhaWwKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gZXZh
bHhmYWlsLmdldGV4cGxhbmF0aW9uKCkKLSAgICAgICAgICAgIGZhaWwoJ1tYUEFTUyhzdHJpY3Qp
XSAnICsgZXhwbGFuYXRpb24sIHB5dHJhY2U9RmFsc2UpCi0KLQotQGhvb2tpbXBsKGhvb2t3cmFw
cGVyPVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxsKToKLSAg
ICBvdXRjb21lID0geWllbGQKLSAgICByZXAgPSBvdXRjb21lLmdldF9yZXN1bHQoKQotICAgIGV2
YWx4ZmFpbCA9IGdldGF0dHIoaXRlbSwgJ19ldmFseGZhaWwnLCBOb25lKQotICAgICMgdW5pdHR0
ZXN0IHNwZWNpYWwgY2FzZSwgc2VlIHNldHRpbmcgb2YgX3VuZXhwZWN0ZWRzdWNjZXNzCi0gICAg
aWYgaGFzYXR0cihpdGVtLCAnX3VuZXhwZWN0ZWRzdWNjZXNzJykgYW5kIHJlcC53aGVuID09ICJj
YWxsIjoKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX2lzX3VuaXR0ZXN0X3Vu
ZXhwZWN0ZWRfc3VjY2Vzc19hX2ZhaWx1cmUKLSAgICAgICAgaWYgaXRlbS5fdW5leHBlY3RlZHN1
Y2Nlc3M6Ci0gICAgICAgICAgICByZXAubG9uZ3JlcHIgPSAiVW5leHBlY3RlZCBzdWNjZXNzOiB7
MH0iLmZvcm1hdChpdGVtLl91bmV4cGVjdGVkc3VjY2VzcykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJlcC5sb25ncmVwciA9ICJVbmV4cGVjdGVkIHN1Y2Nlc3MiCi0gICAgICAgIGlmIF9p
c191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWlsdXJlKCk6Ci0gICAgICAgICAgICBy
ZXAub3V0Y29tZSA9ICJmYWlsZWQiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXAub3V0
Y29tZSA9ICJwYXNzZWQiCi0gICAgICAgICAgICByZXAud2FzeGZhaWwgPSByZXAubG9uZ3JlcHIK
LSAgICBlbGlmIGl0ZW0uY29uZmlnLm9wdGlvbi5ydW54ZmFpbDoKLSAgICAgICAgcGFzcyAgICMg
ZG9uJ3QgaW50ZXJlZmVyZQotICAgIGVsaWYgY2FsbC5leGNpbmZvIGFuZCBjYWxsLmV4Y2luZm8u
ZXJyaXNpbnN0YW5jZSh4ZmFpbC5FeGNlcHRpb24pOgotICAgICAgICByZXAud2FzeGZhaWwgPSAi
cmVhc29uOiAiICsgY2FsbC5leGNpbmZvLnZhbHVlLm1zZwotICAgICAgICByZXAub3V0Y29tZSA9
ICJza2lwcGVkIgotICAgIGVsaWYgZXZhbHhmYWlsIGFuZCBub3QgcmVwLnNraXBwZWQgYW5kIGV2
YWx4ZmFpbC53YXN2YWxpZCgpIGFuZCBcCi0gICAgICAgICAgICBldmFseGZhaWwuaXN0cnVlKCk6
Ci0gICAgICAgIGlmIGNhbGwuZXhjaW5mbzoKLSAgICAgICAgICAgIGlmIGV2YWx4ZmFpbC5pbnZh
bGlkcmFpc2UoY2FsbC5leGNpbmZvLnZhbHVlKToKLSAgICAgICAgICAgICAgICByZXAub3V0Y29t
ZSA9ICJmYWlsZWQiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlcC5vdXRj
b21lID0gInNraXBwZWQiCi0gICAgICAgICAgICAgICAgcmVwLndhc3hmYWlsID0gZXZhbHhmYWls
LmdldGV4cGxhbmF0aW9uKCkKLSAgICAgICAgZWxpZiBjYWxsLndoZW4gPT0gImNhbGwiOgotICAg
ICAgICAgICAgc3RyaWN0X2RlZmF1bHQgPSBpdGVtLmNvbmZpZy5nZXRpbmkoJ3hmYWlsX3N0cmlj
dCcpCi0gICAgICAgICAgICBpc19zdHJpY3RfeGZhaWwgPSBldmFseGZhaWwuZ2V0KCdzdHJpY3Qn
LCBzdHJpY3RfZGVmYXVsdCkKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gZXZhbHhmYWlsLmdl
dGV4cGxhbmF0aW9uKCkKLSAgICAgICAgICAgIGlmIGlzX3N0cmljdF94ZmFpbDoKLSAgICAgICAg
ICAgICAgICByZXAub3V0Y29tZSA9ICJmYWlsZWQiCi0gICAgICAgICAgICAgICAgcmVwLmxvbmdy
ZXByID0gIltYUEFTUyhzdHJpY3QpXSB7MH0iLmZvcm1hdChleHBsYW5hdGlvbikKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAicGFzc2VkIgotICAgICAg
ICAgICAgICAgIHJlcC53YXN4ZmFpbCA9IGV4cGxhbmF0aW9uCi0gICAgZWxpZiBpdGVtLl9za2lw
cGVkX2J5X21hcmsgYW5kIHJlcC5za2lwcGVkIGFuZCB0eXBlKHJlcC5sb25ncmVwcikgaXMgdHVw
bGU6Ci0gICAgICAgICMgc2tpcHBlZCBieSBtYXJrLnNraXBpZjsgY2hhbmdlIHRoZSBsb2NhdGlv
biBvZiB0aGUgZmFpbHVyZQotICAgICAgICAjIHRvIHBvaW50IHRvIHRoZSBpdGVtIGRlZmluaXRp
b24sIG90aGVyd2lzZSBpdCB3aWxsIGRpc3BsYXkKLSAgICAgICAgIyB0aGUgbG9jYXRpb24gb2Yg
d2hlcmUgdGhlIHNraXAgZXhjZXB0aW9uIHdhcyByYWlzZWQgd2l0aGluIHB5dGVzdAotICAgICAg
ICBmaWxlbmFtZSwgbGluZSwgcmVhc29uID0gcmVwLmxvbmdyZXByCi0gICAgICAgIGZpbGVuYW1l
LCBsaW5lID0gaXRlbS5sb2NhdGlvbls6Ml0KLSAgICAgICAgcmVwLmxvbmdyZXByID0gZmlsZW5h
bWUsIGxpbmUsIHJlYXNvbgotCi0jIGNhbGxlZCBieSB0ZXJtaW5hbHJlcG9ydGVyIHByb2dyZXNz
IHJlcG9ydGluZwotCi0KLWRlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0KToKLSAg
ICBpZiBoYXNhdHRyKHJlcG9ydCwgIndhc3hmYWlsIik6Ci0gICAgICAgIGlmIHJlcG9ydC5za2lw
cGVkOgotICAgICAgICAgICAgcmV0dXJuICJ4ZmFpbGVkIiwgIngiLCAieGZhaWwiCi0gICAgICAg
IGVsaWYgcmVwb3J0LnBhc3NlZDoKLSAgICAgICAgICAgIHJldHVybiAieHBhc3NlZCIsICJYIiwg
KCJYUEFTUyIsIHsneWVsbG93JzogVHJ1ZX0pCi0KLSMgY2FsbGVkIGJ5IHRoZSB0ZXJtaW5hbHJl
cG9ydGVyIGluc3RhbmNlL3BsdWdpbgotCi0KLWRlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0
ZXJtaW5hbHJlcG9ydGVyKToKLSAgICB0ciA9IHRlcm1pbmFscmVwb3J0ZXIKLSAgICBpZiBub3Qg
dHIucmVwb3J0Y2hhcnM6Ci0gICAgICAgICMgZm9yIG5hbWUgaW4gInhmYWlsZWQgc2tpcHBlZCBm
YWlsZWQgeHBhc3NlZCI6Ci0gICAgICAgICMgICAgaWYgbm90IHRyLnN0YXRzLmdldChuYW1lLCAw
KToKLSAgICAgICAgIyAgICAgICAgdHIud3JpdGVfbGluZSgiSElOVDogdXNlICctcicgb3B0aW9u
IHRvIHNlZSBleHRyYSAiCi0gICAgICAgICMgICAgICAgICAgICAgICJzdW1tYXJ5IGluZm8gYWJv
dXQgdGVzdHMiKQotICAgICAgICAjICAgICAgICBicmVhawotICAgICAgICByZXR1cm4KLQotICAg
IGxpbmVzID0gW10KLSAgICBmb3IgY2hhciBpbiB0ci5yZXBvcnRjaGFyczoKLSAgICAgICAgaWYg
Y2hhciA9PSAieCI6Ci0gICAgICAgICAgICBzaG93X3hmYWlsZWQodGVybWluYWxyZXBvcnRlciwg
bGluZXMpCi0gICAgICAgIGVsaWYgY2hhciA9PSAiWCI6Ci0gICAgICAgICAgICBzaG93X3hwYXNz
ZWQodGVybWluYWxyZXBvcnRlciwgbGluZXMpCi0gICAgICAgIGVsaWYgY2hhciBpbiAiZkYiOgot
ICAgICAgICAgICAgc2hvd19zaW1wbGUodGVybWluYWxyZXBvcnRlciwgbGluZXMsICdmYWlsZWQn
LCAiRkFJTCAlcyIpCi0gICAgICAgIGVsaWYgY2hhciBpbiAic1MiOgotICAgICAgICAgICAgc2hv
d19za2lwcGVkKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzKQotICAgICAgICBlbGlmIGNoYXIgPT0g
IkUiOgotICAgICAgICAgICAgc2hvd19zaW1wbGUodGVybWluYWxyZXBvcnRlciwgbGluZXMsICdl
cnJvcicsICJFUlJPUiAlcyIpCi0gICAgICAgIGVsaWYgY2hhciA9PSAncCc6Ci0gICAgICAgICAg
ICBzaG93X3NpbXBsZSh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcywgJ3Bhc3NlZCcsICJQQVNTRUQg
JXMiKQotCi0gICAgaWYgbGluZXM6Ci0gICAgICAgIHRyLl90dy5zZXAoIj0iLCAic2hvcnQgdGVz
dCBzdW1tYXJ5IGluZm8iKQotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAg
IHRyLl90dy5saW5lKGxpbmUpCi0KLQotZGVmIHNob3dfc2ltcGxlKHRlcm1pbmFscmVwb3J0ZXIs
IGxpbmVzLCBzdGF0LCBmb3JtYXQpOgotICAgIGZhaWxlZCA9IHRlcm1pbmFscmVwb3J0ZXIuc3Rh
dHMuZ2V0KHN0YXQpCi0gICAgaWYgZmFpbGVkOgotICAgICAgICBmb3IgcmVwIGluIGZhaWxlZDoK
LSAgICAgICAgICAgIHBvcyA9IHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLmN3ZF9yZWxhdGl2ZV9u
b2RlaWQocmVwLm5vZGVpZCkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZChmb3JtYXQgJSAocG9z
LCkpCi0KLQotZGVmIHNob3dfeGZhaWxlZCh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcyk6Ci0gICAg
eGZhaWxlZCA9IHRlcm1pbmFscmVwb3J0ZXIuc3RhdHMuZ2V0KCJ4ZmFpbGVkIikKLSAgICBpZiB4
ZmFpbGVkOgotICAgICAgICBmb3IgcmVwIGluIHhmYWlsZWQ6Ci0gICAgICAgICAgICBwb3MgPSB0
ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZy5jd2RfcmVsYXRpdmVfbm9kZWlkKHJlcC5ub2RlaWQpCi0g
ICAgICAgICAgICByZWFzb24gPSByZXAud2FzeGZhaWwKLSAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgiWEZBSUwgJXMiICUgKHBvcywpKQotICAgICAgICAgICAgaWYgcmVhc29uOgotICAgICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgiICAiICsgc3RyKHJlYXNvbikpCi0KLQotZGVmIHNob3dfeHBh
c3NlZCh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcyk6Ci0gICAgeHBhc3NlZCA9IHRlcm1pbmFscmVw
b3J0ZXIuc3RhdHMuZ2V0KCJ4cGFzc2VkIikKLSAgICBpZiB4cGFzc2VkOgotICAgICAgICBmb3Ig
cmVwIGluIHhwYXNzZWQ6Ci0gICAgICAgICAgICBwb3MgPSB0ZXJtaW5hbHJlcG9ydGVyLmNvbmZp
Zy5jd2RfcmVsYXRpdmVfbm9kZWlkKHJlcC5ub2RlaWQpCi0gICAgICAgICAgICByZWFzb24gPSBy
ZXAud2FzeGZhaWwKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiWFBBU1MgJXMgJXMiICUgKHBv
cywgcmVhc29uKSkKLQotCi1kZWYgY2FjaGVkX2V2YWwoY29uZmlnLCBleHByLCBkKToKLSAgICBp
ZiBub3QgaGFzYXR0cihjb25maWcsICdfZXZhbGNhY2hlJyk6Ci0gICAgICAgIGNvbmZpZy5fZXZh
bGNhY2hlID0ge30KLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBjb25maWcuX2V2YWxjYWNoZVtl
eHByXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUK
LSAgICAgICAgZXhwcmNvZGUgPSBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUoZXhwciwgbW9kZT0iZXZh
bCIpCi0gICAgICAgIGNvbmZpZy5fZXZhbGNhY2hlW2V4cHJdID0geCA9IGV2YWwoZXhwcmNvZGUs
IGQpCi0gICAgICAgIHJldHVybiB4Ci0KLQotZGVmIGZvbGRlZF9za2lwcyhza2lwcGVkKToKLSAg
ICBkID0ge30KLSAgICBmb3IgZXZlbnQgaW4gc2tpcHBlZDoKLSAgICAgICAga2V5ID0gZXZlbnQu
bG9uZ3JlcHIKLSAgICAgICAgYXNzZXJ0IGxlbihrZXkpID09IDMsIChldmVudCwga2V5KQotICAg
ICAgICBrZXl3b3JkcyA9IGdldGF0dHIoZXZlbnQsICdrZXl3b3JkcycsIHt9KQotICAgICAgICAj
IGZvbGRpbmcgcmVwb3J0cyB3aXRoIGdsb2JhbCBweXRlc3RtYXJrIHZhcmlhYmxlCi0gICAgICAg
ICMgdGhpcyBpcyB3b3JrYXJvdW5kLCBiZWNhdXNlIGZvciBub3cgd2UgY2Fubm90IGlkZW50aWZ5
IHRoZSBzY29wZSBvZiBhIHNraXAgbWFya2VyCi0gICAgICAgICMgVE9ETzogcmV2aXNpdCBhZnRl
ciBtYXJrcyBzY29wZSB3b3VsZCBiZSBmaXhlZAotICAgICAgICB3aGVuID0gZ2V0YXR0cihldmVu
dCwgJ3doZW4nLCBOb25lKQotICAgICAgICBpZiB3aGVuID09ICdzZXR1cCcgYW5kICdza2lwJyBp
biBrZXl3b3JkcyBhbmQgJ3B5dGVzdG1hcmsnIG5vdCBpbiBrZXl3b3JkczoKLSAgICAgICAgICAg
IGtleSA9IChrZXlbMF0sIE5vbmUsIGtleVsyXSwgKQotICAgICAgICBkLnNldGRlZmF1bHQoa2V5
LCBbXSkuYXBwZW5kKGV2ZW50KQotICAgIHZhbHVlcyA9IFtdCi0gICAgZm9yIGtleSwgZXZlbnRz
IGluIGQuaXRlbXMoKToKLSAgICAgICAgdmFsdWVzLmFwcGVuZCgobGVuKGV2ZW50cyksKSArIGtl
eSkKLSAgICByZXR1cm4gdmFsdWVzCi0KLQotZGVmIHNob3dfc2tpcHBlZCh0ZXJtaW5hbHJlcG9y
dGVyLCBsaW5lcyk6Ci0gICAgdHIgPSB0ZXJtaW5hbHJlcG9ydGVyCi0gICAgc2tpcHBlZCA9IHRy
LnN0YXRzLmdldCgnc2tpcHBlZCcsIFtdKQotICAgIGlmIHNraXBwZWQ6Ci0gICAgICAgICMgaWYg
bm90IHRyLmhhc29wdCgnc2tpcHBlZCcpOgotICAgICAgICAjICAgIHRyLndyaXRlX2xpbmUoCi0g
ICAgICAgICMgICAgICAgICIlZCBza2lwcGVkIHRlc3RzLCBzcGVjaWZ5IC1ycyBmb3IgbW9yZSBp
bmZvIiAlCi0gICAgICAgICMgICAgICAgIGxlbihza2lwcGVkKSkKLSAgICAgICAgIyAgICByZXR1
cm4KLSAgICAgICAgZnNraXBzID0gZm9sZGVkX3NraXBzKHNraXBwZWQpCi0gICAgICAgIGlmIGZz
a2lwczoKLSAgICAgICAgICAgICMgdHIud3JpdGVfc2VwKCJfIiwgInNraXBwZWQgdGVzdCBzdW1t
YXJ5IikKLSAgICAgICAgICAgIGZvciBudW0sIGZzcGF0aCwgbGluZW5vLCByZWFzb24gaW4gZnNr
aXBzOgotICAgICAgICAgICAgICAgIGlmIHJlYXNvbi5zdGFydHN3aXRoKCJTa2lwcGVkOiAiKToK
LSAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gcmVhc29uWzk6XQotICAgICAgICAgICAgICAg
IGlmIGxpbmVubyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5k
KAotICAgICAgICAgICAgICAgICAgICAgICAgIlNLSVAgWyVkXSAlczolZDogJXMiICUKLSAgICAg
ICAgICAgICAgICAgICAgICAgIChudW0sIGZzcGF0aCwgbGluZW5vICsgMSwgcmVhc29uKSkKLSAg
ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAiU0tJUCBbJWRdICVzOiAlcyIgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgKG51bSwgZnNwYXRoLCByZWFzb24pKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC90ZXJtaW5hbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdGVybWluYWwucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYmE1ZTg0NWU1MS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdGVybWluYWwucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw3MDMgKzAsMCBAQAotIiIiIHRlcm1pbmFsIHJlcG9ydGluZyBvZiB0aGUgZnVsbCB0ZXN0aW5n
IHByb2Nlc3MuCi0KLVRoaXMgaXMgYSBnb29kIHNvdXJjZSBmb3IgbG9va2luZyBhdCB0aGUgdmFy
aW91cyByZXBvcnRpbmcgaG9va3MuCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1
dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGl0ZXJ0b29scwot
aW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotCi1pbXBvcnQgcGx1Z2d5
Ci1pbXBvcnQgcHkKLWltcG9ydCBzaXgKLQotaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0IGlt
cG9ydCBub2RlcwotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IEVYSVRfT0ssIEVYSVRfVEVTVFNG
QUlMRUQsIEVYSVRfSU5URVJSVVBURUQsIFwKLSAgICBFWElUX1VTQUdFRVJST1IsIEVYSVRfTk9U
RVNUU0NPTExFQ1RFRAotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3Jv
dXAgPSBwYXJzZXIuZ2V0Z3JvdXAoInRlcm1pbmFsIHJlcG9ydGluZyIsICJyZXBvcnRpbmciLCBh
ZnRlcj0iZ2VuZXJhbCIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLXYnLCAnLS12ZXJib3NlJywg
YWN0aW9uPSJjb3VudCIsCi0gICAgICAgICAgICAgICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgZGVm
YXVsdD0wLCBoZWxwPSJpbmNyZWFzZSB2ZXJib3NpdHkuIiksCi0gICAgZ3JvdXAuX2FkZG9wdGlv
bignLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0iY291bnQiLAotICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0icXVpZXQiLCBkZWZhdWx0PTAsIGhlbHA9ImRlY3JlYXNlIHZlcmJvc2l0eS4iKSwKLSAg
ICBncm91cC5fYWRkb3B0aW9uKCctcicsCi0gICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0
b3JlIiwgZGVzdD0icmVwb3J0Y2hhcnMiLCBkZWZhdWx0PScnLCBtZXRhdmFyPSJjaGFycyIsCi0g
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IGV4dHJhIHRlc3Qgc3VtbWFyeSBpbmZvIGFz
IHNwZWNpZmllZCBieSBjaGFycyAoZilhaWxlZCwgIgotICAgICAgICAgICAgICAgICAgICAgIihF
KWVycm9yLCAocylza2lwcGVkLCAoeClmYWlsZWQsIChYKXBhc3NlZCwgIgotICAgICAgICAgICAg
ICAgICAgICAgIihwKXBhc3NlZCwgKFApcGFzc2VkIHdpdGggb3V0cHV0LCAoYSlhbGwgZXhjZXB0
IHBQLiAiCi0gICAgICAgICAgICAgICAgICAgICAiV2FybmluZ3MgYXJlIGRpc3BsYXllZCBhdCBh
bGwgdGltZXMgZXhjZXB0IHdoZW4gIgotICAgICAgICAgICAgICAgICAgICAgIi0tZGlzYWJsZS13
YXJuaW5ncyBpcyBzZXQiKQotICAgIGdyb3VwLl9hZGRvcHRpb24oJy0tZGlzYWJsZS13YXJuaW5n
cycsICctLWRpc2FibGUtcHl0ZXN0LXdhcm5pbmdzJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J2Rpc2FibGVfd2FybmluZ3MnLCBhY3Rpb249J3N0b3JlX3RydWUn
LAotICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSB3YXJuaW5ncyBzdW1tYXJ5JykK
LSAgICBncm91cC5fYWRkb3B0aW9uKCctbCcsICctLXNob3dsb2NhbHMnLAotICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic2hvd2xvY2FscyIsIGRlZmF1bHQ9
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IGxvY2FscyBpbiB0cmFjZWJh
Y2tzIChkaXNhYmxlZCBieSBkZWZhdWx0KS4iKQotICAgIGdyb3VwLl9hZGRvcHRpb24oJy0tdGIn
LCBtZXRhdmFyPSJzdHlsZSIsCi0gICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwg
ZGVzdD0idGJzdHlsZSIsIGRlZmF1bHQ9J2F1dG8nLAotICAgICAgICAgICAgICAgICAgICAgY2hv
aWNlcz1bJ2F1dG8nLCAnbG9uZycsICdzaG9ydCcsICdubycsICdsaW5lJywgJ25hdGl2ZSddLAot
ICAgICAgICAgICAgICAgICAgICAgaGVscD0idHJhY2ViYWNrIHByaW50IG1vZGUgKGF1dG8vbG9u
Zy9zaG9ydC9saW5lL25hdGl2ZS9ubykuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCctLWZ1bGx0
cmFjZScsICctLWZ1bGwtdHJhY2UnLAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImRvbid0
IGN1dCBhbnkgdHJhY2ViYWNrcyAoZGVmYXVsdCBpcyB0byBjdXQpLiIpCi0gICAgZ3JvdXAuX2Fk
ZG9wdGlvbignLS1jb2xvcicsIG1ldGF2YXI9ImNvbG9yIiwKLSAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJjb2xvciIsIGRlZmF1bHQ9J2F1dG8nLAotICAgICAgICAg
ICAgICAgICAgICAgY2hvaWNlcz1bJ3llcycsICdubycsICdhdXRvJ10sCi0gICAgICAgICAgICAg
ICAgICAgICBoZWxwPSJjb2xvciB0ZXJtaW5hbCBvdXRwdXQgKHllcy9uby9hdXRvKS4iKQotCi0g
ICAgcGFyc2VyLmFkZGluaSgiY29uc29sZV9vdXRwdXRfc3R5bGUiLAotICAgICAgICAgICAgICAg
ICAgaGVscD0iY29uc29sZSBvdXRwdXQ6IGNsYXNzaWMgb3Igd2l0aCBhZGRpdGlvbmFsIHByb2dy
ZXNzIGluZm9ybWF0aW9uIChjbGFzc2ljfHByb2dyZXNzKS4iLAotICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD0ncHJvZ3Jlc3MnKQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0g
ICAgY29uZmlnLm9wdGlvbi52ZXJib3NlIC09IGNvbmZpZy5vcHRpb24ucXVpZXQKLSAgICByZXBv
cnRlciA9IFRlcm1pbmFsUmVwb3J0ZXIoY29uZmlnLCBzeXMuc3Rkb3V0KQotICAgIGNvbmZpZy5w
bHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHJlcG9ydGVyLCAndGVybWluYWxyZXBvcnRlcicpCi0gICAg
aWYgY29uZmlnLm9wdGlvbi5kZWJ1ZyBvciBjb25maWcub3B0aW9uLnRyYWNlY29uZmlnOgotICAg
ICAgICBkZWYgbXl3cml0ZXIodGFncywgYXJncyk6Ci0gICAgICAgICAgICBtc2cgPSAiICIuam9p
bihtYXAoc3RyLCBhcmdzKSkKLSAgICAgICAgICAgIHJlcG9ydGVyLndyaXRlX2xpbmUoIlt0cmFj
ZWNvbmZpZ10gIiArIG1zZykKLSAgICAgICAgY29uZmlnLnRyYWNlLnJvb3Quc2V0cHJvY2Vzc29y
KCJweXRlc3Q6Y29uZmlnIiwgbXl3cml0ZXIpCi0KLQotZGVmIGdldHJlcG9ydG9wdChjb25maWcp
OgotICAgIHJlcG9ydG9wdHMgPSAiIgotICAgIHJlcG9ydGNoYXJzID0gY29uZmlnLm9wdGlvbi5y
ZXBvcnRjaGFycwotICAgIGlmIG5vdCBjb25maWcub3B0aW9uLmRpc2FibGVfd2FybmluZ3MgYW5k
ICd3JyBub3QgaW4gcmVwb3J0Y2hhcnM6Ci0gICAgICAgIHJlcG9ydGNoYXJzICs9ICd3JwotICAg
IGVsaWYgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdzIGFuZCAndycgaW4gcmVwb3J0Y2hh
cnM6Ci0gICAgICAgIHJlcG9ydGNoYXJzID0gcmVwb3J0Y2hhcnMucmVwbGFjZSgndycsICcnKQot
ICAgIGlmIHJlcG9ydGNoYXJzOgotICAgICAgICBmb3IgY2hhciBpbiByZXBvcnRjaGFyczoKLSAg
ICAgICAgICAgIGlmIGNoYXIgbm90IGluIHJlcG9ydG9wdHMgYW5kIGNoYXIgIT0gJ2EnOgotICAg
ICAgICAgICAgICAgIHJlcG9ydG9wdHMgKz0gY2hhcgotICAgICAgICAgICAgZWxpZiBjaGFyID09
ICdhJzoKLSAgICAgICAgICAgICAgICByZXBvcnRvcHRzID0gJ2ZFc3hYdycKLSAgICByZXR1cm4g
cmVwb3J0b3B0cwotCi0KLWRlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0KToKLSAg
ICBpZiByZXBvcnQucGFzc2VkOgotICAgICAgICBsZXR0ZXIgPSAiLiIKLSAgICBlbGlmIHJlcG9y
dC5za2lwcGVkOgotICAgICAgICBsZXR0ZXIgPSAicyIKLSAgICBlbGlmIHJlcG9ydC5mYWlsZWQ6
Ci0gICAgICAgIGxldHRlciA9ICJGIgotICAgICAgICBpZiByZXBvcnQud2hlbiAhPSAiY2FsbCI6
Ci0gICAgICAgICAgICBsZXR0ZXIgPSAiZiIKLSAgICByZXR1cm4gcmVwb3J0Lm91dGNvbWUsIGxl
dHRlciwgcmVwb3J0Lm91dGNvbWUudXBwZXIoKQotCi0KLWNsYXNzIFdhcm5pbmdSZXBvcnQ6Ci0g
ICAgIiIiCi0gICAgU2ltcGxlIHN0cnVjdHVyZSB0byBob2xkIHdhcm5pbmdzIGluZm9ybWF0aW9u
IGNhcHR1cmVkIGJ5IGBgcHl0ZXN0X2xvZ3dhcm5pbmdgYC4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjb2RlLCBtZXNzYWdlLCBub2RlaWQ9Tm9uZSwgZnNsb2NhdGlvbj1Ob25l
KToKLSAgICAgICAgIiIiCi0gICAgICAgIDpwYXJhbSBjb2RlOiB1bnVzZWQKLSAgICAgICAgOnBh
cmFtIHN0ciBtZXNzYWdlOiB1c2VyIGZyaWVuZGx5IG1lc3NhZ2UgYWJvdXQgdGhlIHdhcm5pbmcK
LSAgICAgICAgOnBhcmFtIHN0cnxOb25lIG5vZGVpZDogbm9kZSBpZCB0aGF0IGdlbmVyYXRlZCB0
aGUgd2FybmluZyAoc2VlIGBgZ2V0X2xvY2F0aW9uYGApLgotICAgICAgICA6cGFyYW0gdHVwbGV8
cHkucGF0aC5sb2NhbCBmc2xvY2F0aW9uOgotICAgICAgICAgICAgZmlsZSBzeXN0ZW0gbG9jYXRp
b24gb2YgdGhlIHNvdXJjZSBvZiB0aGUgd2FybmluZyAoc2VlIGBgZ2V0X2xvY2F0aW9uYGApLgot
ICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jb2RlID0gY29kZQotICAgICAgICBzZWxmLm1lc3Nh
Z2UgPSBtZXNzYWdlCi0gICAgICAgIHNlbGYubm9kZWlkID0gbm9kZWlkCi0gICAgICAgIHNlbGYu
ZnNsb2NhdGlvbiA9IGZzbG9jYXRpb24KLQotICAgIGRlZiBnZXRfbG9jYXRpb24oc2VsZiwgY29u
ZmlnKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgdGhlIG1vcmUgdXNlci1mcmllbmRs
eSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24KLSAgICAgICAgb2YgYSB3YXJuaW5nLCBv
ciBOb25lLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5ub2RlaWQ6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5ub2RlaWQKLSAgICAgICAgaWYgc2VsZi5mc2xvY2F0aW9uOgotICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmZzbG9jYXRpb24sIHR1cGxlKSBhbmQgbGVuKHNlbGYu
ZnNsb2NhdGlvbikgPj0gMjoKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW51bSA9IHNl
bGYuZnNsb2NhdGlvbls6Ml0KLSAgICAgICAgICAgICAgICByZWxwYXRoID0gcHkucGF0aC5sb2Nh
bChmaWxlbmFtZSkucmVsdG8oY29uZmlnLmludm9jYXRpb25fZGlyKQotICAgICAgICAgICAgICAg
IHJldHVybiAnJXM6JXMnICUgKHJlbHBhdGgsIGxpbmVudW0pCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5mc2xvY2F0aW9uKQotICAgICAgICByZXR1
cm4gTm9uZQotCi0KLWNsYXNzIFRlcm1pbmFsUmVwb3J0ZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNvbmZpZywgZmlsZT1Ob25lKToKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuY29uZmlnCi0g
ICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0gICAgICAgIHNlbGYudmVyYm9zaXR5ID0gc2Vs
Zi5jb25maWcub3B0aW9uLnZlcmJvc2UKLSAgICAgICAgc2VsZi5zaG93aGVhZGVyID0gc2VsZi52
ZXJib3NpdHkgPj0gMAotICAgICAgICBzZWxmLnNob3dmc3BhdGggPSBzZWxmLnZlcmJvc2l0eSA+
PSAwCi0gICAgICAgIHNlbGYuc2hvd2xvbmd0ZXN0aW5mbyA9IHNlbGYudmVyYm9zaXR5ID4gMAot
ICAgICAgICBzZWxmLl9udW1jb2xsZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYuX3Nlc3Npb24gPSBO
b25lCi0KLSAgICAgICAgc2VsZi5zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuc3RhcnRkaXIgPSBw
eS5wYXRoLmxvY2FsKCkKLSAgICAgICAgaWYgZmlsZSBpcyBOb25lOgotICAgICAgICAgICAgZmls
ZSA9IHN5cy5zdGRvdXQKLSAgICAgICAgc2VsZi5fdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVf
dGVybWluYWxfd3JpdGVyKGNvbmZpZywgZmlsZSkKLSAgICAgICAgIyBzZWxmLndyaXRlciB3aWxs
IGJlIGRlcHJlY2F0ZWQgaW4gcHl0ZXN0LTMuNAotICAgICAgICBzZWxmLndyaXRlciA9IHNlbGYu
X3R3Ci0gICAgICAgIHNlbGYuX3NjcmVlbl93aWR0aCA9IHNlbGYuX3R3LmZ1bGx3aWR0aAotICAg
ICAgICBzZWxmLmN1cnJlbnRmc3BhdGggPSBOb25lCi0gICAgICAgIHNlbGYucmVwb3J0Y2hhcnMg
PSBnZXRyZXBvcnRvcHQoY29uZmlnKQotICAgICAgICBzZWxmLmhhc21hcmt1cCA9IHNlbGYuX3R3
Lmhhc21hcmt1cAotICAgICAgICBzZWxmLmlzYXR0eSA9IGZpbGUuaXNhdHR5KCkKLSAgICAgICAg
c2VsZi5fcHJvZ3Jlc3NfaXRlbXNfcmVwb3J0ZWQgPSAwCi0gICAgICAgIHNlbGYuX3Nob3dfcHJv
Z3Jlc3NfaW5mbyA9IHNlbGYuY29uZmlnLmdldGluaSgnY29uc29sZV9vdXRwdXRfc3R5bGUnKSA9
PSAncHJvZ3Jlc3MnCi0KLSAgICBkZWYgaGFzb3B0KHNlbGYsIGNoYXIpOgotICAgICAgICBjaGFy
ID0geyd4ZmFpbGVkJzogJ3gnLCAnc2tpcHBlZCc6ICdzJ30uZ2V0KGNoYXIsIGNoYXIpCi0gICAg
ICAgIHJldHVybiBjaGFyIGluIHNlbGYucmVwb3J0Y2hhcnMKLQotICAgIGRlZiB3cml0ZV9mc3Bh
dGhfcmVzdWx0KHNlbGYsIG5vZGVpZCwgcmVzKToKLSAgICAgICAgZnNwYXRoID0gc2VsZi5jb25m
aWcucm9vdGRpci5qb2luKG5vZGVpZC5zcGxpdCgiOjoiKVswXSkKLSAgICAgICAgaWYgZnNwYXRo
ICE9IHNlbGYuY3VycmVudGZzcGF0aDoKLSAgICAgICAgICAgIGlmIHNlbGYuY3VycmVudGZzcGF0
aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9wcm9ncmVzc19pbmZv
cm1hdGlvbl9maWxsaW5nX3NwYWNlKCkKLSAgICAgICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9
IGZzcGF0aAotICAgICAgICAgICAgZnNwYXRoID0gc2VsZi5zdGFydGRpci5iZXN0cmVscGF0aChm
c3BhdGgpCi0gICAgICAgICAgICBzZWxmLl90dy5saW5lKCkKLSAgICAgICAgICAgIHNlbGYuX3R3
LndyaXRlKGZzcGF0aCArICIgIikKLSAgICAgICAgc2VsZi5fdHcud3JpdGUocmVzKQotCi0gICAg
ZGVmIHdyaXRlX2Vuc3VyZV9wcmVmaXgoc2VsZiwgcHJlZml4LCBleHRyYT0iIiwgKiprd2FyZ3Mp
OgotICAgICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGggIT0gcHJlZml4OgotICAgICAgICAgICAg
c2VsZi5fdHcubGluZSgpCi0gICAgICAgICAgICBzZWxmLmN1cnJlbnRmc3BhdGggPSBwcmVmaXgK
LSAgICAgICAgICAgIHNlbGYuX3R3LndyaXRlKHByZWZpeCkKLSAgICAgICAgaWYgZXh0cmE6Ci0g
ICAgICAgICAgICBzZWxmLl90dy53cml0ZShleHRyYSwgKiprd2FyZ3MpCi0gICAgICAgICAgICBz
ZWxmLmN1cnJlbnRmc3BhdGggPSAtMgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfcHJvZ3Jlc3Nf
aW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZSgpCi0KLSAgICBkZWYgZW5zdXJlX25ld2xpbmUoc2Vs
Zik6Ci0gICAgICAgIGlmIHNlbGYuY3VycmVudGZzcGF0aDoKLSAgICAgICAgICAgIHNlbGYuX3R3
LmxpbmUoKQotICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0gTm9uZQotCi0gICAgZGVm
IHdyaXRlKHNlbGYsIGNvbnRlbnQsICoqbWFya3VwKToKLSAgICAgICAgc2VsZi5fdHcud3JpdGUo
Y29udGVudCwgKiptYXJrdXApCi0KLSAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lLCAqKm1h
cmt1cCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGxpbmUsIHNpeC50ZXh0X3R5cGUpOgot
ICAgICAgICAgICAgbGluZSA9IHNpeC50ZXh0X3R5cGUobGluZSwgZXJyb3JzPSJyZXBsYWNlIikK
LSAgICAgICAgc2VsZi5lbnN1cmVfbmV3bGluZSgpCi0gICAgICAgIHNlbGYuX3R3LmxpbmUobGlu
ZSwgKiptYXJrdXApCi0KLSAgICBkZWYgcmV3cml0ZShzZWxmLCBsaW5lLCAqKm1hcmt1cCk6Ci0g
ICAgICAgICIiIgotICAgICAgICBSZXdpbmRzIHRoZSB0ZXJtaW5hbCBjdXJzb3IgdG8gdGhlIGJl
Z2lubmluZyBhbmQgd3JpdGVzIHRoZSBnaXZlbiBsaW5lLgotCi0gICAgICAgIDprd2FyZyBlcmFz
ZTogaWYgVHJ1ZSwgd2lsbCBhbHNvIGFkZCBzcGFjZXMgdW50aWwgdGhlIGZ1bGwgdGVybWluYWwg
d2lkdGggdG8gZW5zdXJlCi0gICAgICAgICAgICBwcmV2aW91cyBsaW5lcyBhcmUgcHJvcGVybHkg
ZXJhc2VkLgotCi0gICAgICAgIFRoZSByZXN0IG9mIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUg
bWFya3VwIGluc3RydWN0aW9ucy4KLSAgICAgICAgIiIiCi0gICAgICAgIGVyYXNlID0gbWFya3Vw
LnBvcCgnZXJhc2UnLCBGYWxzZSkKLSAgICAgICAgaWYgZXJhc2U6Ci0gICAgICAgICAgICBmaWxs
X2NvdW50ID0gc2VsZi5fdHcuZnVsbHdpZHRoIC0gbGVuKGxpbmUpIC0gMQotICAgICAgICAgICAg
ZmlsbCA9ICcgJyAqIGZpbGxfY291bnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGwg
PSAnJwotICAgICAgICBsaW5lID0gc3RyKGxpbmUpCi0gICAgICAgIHNlbGYuX3R3LndyaXRlKCJc
ciIgKyBsaW5lICsgZmlsbCwgKiptYXJrdXApCi0KLSAgICBkZWYgd3JpdGVfc2VwKHNlbGYsIHNl
cCwgdGl0bGU9Tm9uZSwgKiptYXJrdXApOgotICAgICAgICBzZWxmLmVuc3VyZV9uZXdsaW5lKCkK
LSAgICAgICAgc2VsZi5fdHcuc2VwKHNlcCwgdGl0bGUsICoqbWFya3VwKQotCi0gICAgZGVmIHNl
Y3Rpb24oc2VsZiwgdGl0bGUsIHNlcD0iPSIsICoqa3cpOgotICAgICAgICBzZWxmLl90dy5zZXAo
c2VwLCB0aXRsZSwgKiprdykKLQotICAgIGRlZiBsaW5lKHNlbGYsIG1zZywgKiprdyk6Ci0gICAg
ICAgIHNlbGYuX3R3LmxpbmUobXNnLCAqKmt3KQotCi0gICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVy
cm9yKHNlbGYsIGV4Y3JlcHIpOgotICAgICAgICBmb3IgbGluZSBpbiBzaXgudGV4dF90eXBlKGV4
Y3JlcHIpLnNwbGl0KCJcbiIpOgotICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKCJJTlRFUk5B
TEVSUk9SPiAiICsgbGluZSkKLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBweXRlc3RfbG9n
d2FybmluZyhzZWxmLCBjb2RlLCBmc2xvY2F0aW9uLCBtZXNzYWdlLCBub2RlaWQpOgotICAgICAg
ICB3YXJuaW5ncyA9IHNlbGYuc3RhdHMuc2V0ZGVmYXVsdCgid2FybmluZ3MiLCBbXSkKLSAgICAg
ICAgd2FybmluZyA9IFdhcm5pbmdSZXBvcnQoY29kZT1jb2RlLCBmc2xvY2F0aW9uPWZzbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZSwgbm9k
ZWlkPW5vZGVpZCkKLSAgICAgICAgd2FybmluZ3MuYXBwZW5kKHdhcm5pbmcpCi0KLSAgICBkZWYg
cHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkKHNlbGYsIHBsdWdpbik6Ci0gICAgICAgIGlmIHNlbGYu
Y29uZmlnLm9wdGlvbi50cmFjZWNvbmZpZzoKLSAgICAgICAgICAgIG1zZyA9ICJQTFVHSU4gcmVn
aXN0ZXJlZDogJXMiICUgKHBsdWdpbiwpCi0gICAgICAgICAgICAjIFhYWCB0aGlzIGV2ZW50IG1h
eSBoYXBwZW4gZHVyaW5nIHNldHVwL3RlYXJkb3duIHRpbWUKLSAgICAgICAgICAgICMgICAgIHdo
aWNoIHVuZm9ydHVuYXRlbHkgY2FwdHVyZXMgb3VyIG91dHB1dCBoZXJlCi0gICAgICAgICAgICAj
ICAgICB3aGljaCBnYXJibGVzIG91ciBvdXRwdXQgaWYgd2UgdXNlIHNlbGYud3JpdGVfbGluZQot
ICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKG1zZykKLQotICAgIGRlZiBweXRlc3RfZGVzZWxl
Y3RlZChzZWxmLCBpdGVtcyk6Ci0gICAgICAgIHNlbGYuc3RhdHMuc2V0ZGVmYXVsdCgnZGVzZWxl
Y3RlZCcsIFtdKS5leHRlbmQoaXRlbXMpCi0KLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9nc3Rh
cnQoc2VsZiwgbm9kZWlkLCBsb2NhdGlvbik6Ci0gICAgICAgICMgZW5zdXJlIHRoYXQgdGhlIHBh
dGggaXMgcHJpbnRlZCBiZWZvcmUgdGhlCi0gICAgICAgICMgMXN0IHRlc3Qgb2YgYSBtb2R1bGUg
c3RhcnRzIHJ1bm5pbmcKLSAgICAgICAgaWYgc2VsZi5zaG93bG9uZ3Rlc3RpbmZvOgotICAgICAg
ICAgICAgbGluZSA9IHNlbGYuX2xvY2F0aW9ubGluZShub2RlaWQsICpsb2NhdGlvbikKLSAgICAg
ICAgICAgIHNlbGYud3JpdGVfZW5zdXJlX3ByZWZpeChsaW5lLCAiIikKLSAgICAgICAgZWxpZiBz
ZWxmLnNob3dmc3BhdGg6Ci0gICAgICAgICAgICBmc2lkID0gbm9kZWlkLnNwbGl0KCI6OiIpWzBd
Ci0gICAgICAgICAgICBzZWxmLndyaXRlX2ZzcGF0aF9yZXN1bHQoZnNpZCwgIiIpCi0KLSAgICBk
ZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIHJlcCA9
IHJlcG9ydAotICAgICAgICByZXMgPSBzZWxmLmNvbmZpZy5ob29rLnB5dGVzdF9yZXBvcnRfdGVz
dHN0YXR1cyhyZXBvcnQ9cmVwKQotICAgICAgICBjYXQsIGxldHRlciwgd29yZCA9IHJlcwotICAg
ICAgICBpZiBpc2luc3RhbmNlKHdvcmQsIHR1cGxlKToKLSAgICAgICAgICAgIHdvcmQsIG1hcmt1
cCA9IHdvcmQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hcmt1cCA9IE5vbmUKLSAgICAg
ICAgc2VsZi5zdGF0cy5zZXRkZWZhdWx0KGNhdCwgW10pLmFwcGVuZChyZXApCi0gICAgICAgIHNl
bGYuX3Rlc3RzX3JhbiA9IFRydWUKLSAgICAgICAgaWYgbm90IGxldHRlciBhbmQgbm90IHdvcmQ6
Ci0gICAgICAgICAgICAjIHByb2JhYmx5IHBhc3NlZCBzZXR1cC90ZWFyZG93bgotICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgIHJ1bm5pbmdfeGRpc3QgPSBoYXNhdHRyKHJlcCwgJ25vZGUnKQot
ICAgICAgICBzZWxmLl9wcm9ncmVzc19pdGVtc19yZXBvcnRlZCArPSAxCi0gICAgICAgIGlmIHNl
bGYudmVyYm9zaXR5IDw9IDA6Ci0gICAgICAgICAgICBpZiBub3QgcnVubmluZ194ZGlzdCBhbmQg
c2VsZi5zaG93ZnNwYXRoOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZnNwYXRoX3Jlc3Vs
dChyZXAubm9kZWlkLCBsZXR0ZXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHNlbGYuX3R3LndyaXRlKGxldHRlcikKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Byb2dyZXNz
X2lmX3Bhc3RfZWRnZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBtYXJrdXAgaXMg
Tm9uZToKLSAgICAgICAgICAgICAgICBpZiByZXAucGFzc2VkOgotICAgICAgICAgICAgICAgICAg
ICBtYXJrdXAgPSB7J2dyZWVuJzogVHJ1ZX0KLSAgICAgICAgICAgICAgICBlbGlmIHJlcC5mYWls
ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIG1hcmt1cCA9IHsncmVkJzogVHJ1ZX0KLSAgICAgICAg
ICAgICAgICBlbGlmIHJlcC5za2lwcGVkOgotICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7
J3llbGxvdyc6IFRydWV9Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgbWFya3VwID0ge30KLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9sb2NhdGlvbmxpbmUocmVw
Lm5vZGVpZCwgKnJlcC5sb2NhdGlvbikKLSAgICAgICAgICAgIGlmIG5vdCBydW5uaW5nX3hkaXN0
OgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZW5zdXJlX3ByZWZpeChsaW5lLCB3b3JkLCAq
Km1hcmt1cCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5lbnN1cmVf
bmV3bGluZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUoIlslc10iICUgcmVwLm5v
ZGUuZ2F0ZXdheS5pZCkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaG93X3Byb2dyZXNzX2lu
Zm86Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3R3LndyaXRlKHNlbGYuX2dldF9wcm9ncmVz
c19pbmZvcm1hdGlvbl9tZXNzYWdlKCkgKyAiICIsIGN5YW49VHJ1ZSkKLSAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy53cml0ZSgnICcpCi0gICAgICAg
ICAgICAgICAgc2VsZi5fdHcud3JpdGUod29yZCwgKiptYXJrdXApCi0gICAgICAgICAgICAgICAg
c2VsZi5fdHcud3JpdGUoIiAiICsgbGluZSkKLSAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRm
c3BhdGggPSAtMgotCi0gICAgZGVmIF93cml0ZV9wcm9ncmVzc19pZl9wYXN0X2VkZ2Uoc2VsZik6
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9zaG93X3Byb2dyZXNzX2luZm86Ci0gICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgbGFzdF9pdGVtID0gc2VsZi5fcHJvZ3Jlc3NfaXRlbXNfcmVwb3J0ZWQg
PT0gc2VsZi5fc2Vzc2lvbi50ZXN0c2NvbGxlY3RlZAotICAgICAgICBpZiBsYXN0X2l0ZW06Ci0g
ICAgICAgICAgICBzZWxmLl93cml0ZV9wcm9ncmVzc19pbmZvcm1hdGlvbl9maWxsaW5nX3NwYWNl
KCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHBhc3RfZWRnZSA9IHNlbGYuX3R3LmNo
YXJzX29uX2N1cnJlbnRfbGluZSArIHNlbGYuX1BST0dSRVNTX0xFTkdUSCArIDEgPj0gc2VsZi5f
c2NyZWVuX3dpZHRoCi0gICAgICAgIGlmIHBhc3RfZWRnZToKLSAgICAgICAgICAgIG1zZyA9IHNl
bGYuX2dldF9wcm9ncmVzc19pbmZvcm1hdGlvbl9tZXNzYWdlKCkKLSAgICAgICAgICAgIHNlbGYu
X3R3LndyaXRlKG1zZyArICdcbicsIGN5YW49VHJ1ZSkKLQotICAgIF9QUk9HUkVTU19MRU5HVEgg
PSBsZW4oJyBbMTAwJV0nKQotCi0gICAgZGVmIF9nZXRfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fbWVz
c2FnZShzZWxmKToKLSAgICAgICAgY29sbGVjdGVkID0gc2VsZi5fc2Vzc2lvbi50ZXN0c2NvbGxl
Y3RlZAotICAgICAgICBpZiBjb2xsZWN0ZWQ6Ci0gICAgICAgICAgICBwcm9ncmVzcyA9IHNlbGYu
X3Byb2dyZXNzX2l0ZW1zX3JlcG9ydGVkICogMTAwIC8vIGNvbGxlY3RlZAotICAgICAgICAgICAg
cmV0dXJuICcgW3s6M2R9JV0nLmZvcm1hdChwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICcgWzEw
MCVdJwotCi0gICAgZGVmIF93cml0ZV9wcm9ncmVzc19pbmZvcm1hdGlvbl9maWxsaW5nX3NwYWNl
KHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fc2hvd19wcm9ncmVzc19pbmZvOgotICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgIG1zZyA9IHNlbGYuX2dldF9wcm9ncmVzc19pbmZvcm1hdGlv
bl9tZXNzYWdlKCkKLSAgICAgICAgZmlsbCA9ICcgJyAqIChzZWxmLl90dy5mdWxsd2lkdGggLSBz
ZWxmLl90dy5jaGFyc19vbl9jdXJyZW50X2xpbmUgLSBsZW4obXNnKSAtIDEpCi0gICAgICAgIHNl
bGYud3JpdGUoZmlsbCArIG1zZywgY3lhbj1UcnVlKQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0
aW9uKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc2F0dHkgYW5kIHNlbGYuY29uZmlnLm9w
dGlvbi52ZXJib3NlID49IDE6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCJjb2xsZWN0aW5nIC4u
LiAiLCBib2xkPVRydWUpCi0KLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQoc2VsZiwgcmVw
b3J0KToKLSAgICAgICAgaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAgIHNlbGYuc3RhdHMu
c2V0ZGVmYXVsdCgiZXJyb3IiLCBbXSkuYXBwZW5kKHJlcG9ydCkKLSAgICAgICAgZWxpZiByZXBv
cnQuc2tpcHBlZDoKLSAgICAgICAgICAgIHNlbGYuc3RhdHMuc2V0ZGVmYXVsdCgic2tpcHBlZCIs
IFtdKS5hcHBlbmQocmVwb3J0KQotICAgICAgICBpdGVtcyA9IFt4IGZvciB4IGluIHJlcG9ydC5y
ZXN1bHQgaWYgaXNpbnN0YW5jZSh4LCBweXRlc3QuSXRlbSldCi0gICAgICAgIHNlbGYuX251bWNv
bGxlY3RlZCArPSBsZW4oaXRlbXMpCi0gICAgICAgIGlmIHNlbGYuaXNhdHR5OgotICAgICAgICAg
ICAgIyBzZWxmLndyaXRlX2ZzcGF0aF9yZXN1bHQocmVwb3J0Lm5vZGVpZCwgJ0UnKQotICAgICAg
ICAgICAgc2VsZi5yZXBvcnRfY29sbGVjdCgpCi0KLSAgICBkZWYgcmVwb3J0X2NvbGxlY3Qoc2Vs
ZiwgZmluYWw9RmFsc2UpOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udmVyYm9zZSA8
IDA6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBlcnJvcnMgPSBsZW4oc2VsZi5zdGF0
cy5nZXQoJ2Vycm9yJywgW10pKQotICAgICAgICBza2lwcGVkID0gbGVuKHNlbGYuc3RhdHMuZ2V0
KCdza2lwcGVkJywgW10pKQotICAgICAgICBpZiBmaW5hbDoKLSAgICAgICAgICAgIGxpbmUgPSAi
Y29sbGVjdGVkICIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmUgPSAiY29sbGVjdGlu
ZyAiCi0gICAgICAgIGxpbmUgKz0gc3RyKHNlbGYuX251bWNvbGxlY3RlZCkgKyAiIGl0ZW0iICsg
KCcnIGlmIHNlbGYuX251bWNvbGxlY3RlZCA9PSAxIGVsc2UgJ3MnKQotICAgICAgICBpZiBlcnJv
cnM6Ci0gICAgICAgICAgICBsaW5lICs9ICIgLyAlZCBlcnJvcnMiICUgZXJyb3JzCi0gICAgICAg
IGlmIHNraXBwZWQ6Ci0gICAgICAgICAgICBsaW5lICs9ICIgLyAlZCBza2lwcGVkIiAlIHNraXBw
ZWQKLSAgICAgICAgaWYgc2VsZi5pc2F0dHk6Ci0gICAgICAgICAgICBzZWxmLnJld3JpdGUobGlu
ZSwgYm9sZD1UcnVlLCBlcmFzZT1UcnVlKQotICAgICAgICAgICAgaWYgZmluYWw6Ci0gICAgICAg
ICAgICAgICAgc2VsZi53cml0ZSgnXG4nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2Vs
Zi53cml0ZV9saW5lKGxpbmUpCi0KLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRl
bXMoc2VsZik6Ci0gICAgICAgIHNlbGYucmVwb3J0X2NvbGxlY3QoVHJ1ZSkKLQotICAgIEBweXRl
c3QuaG9va2ltcGwodHJ5bGFzdD1UcnVlKQotICAgIGRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNl
bGYsIHNlc3Npb24pOgotICAgICAgICBzZWxmLl9zZXNzaW9uID0gc2Vzc2lvbgotICAgICAgICBz
ZWxmLl9zZXNzaW9uc3RhcnR0aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgaWYgbm90IHNlbGYu
c2hvd2hlYWRlcjoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLndyaXRlX3NlcCgi
PSIsICJ0ZXN0IHNlc3Npb24gc3RhcnRzIiwgYm9sZD1UcnVlKQotICAgICAgICB2ZXJpbmZvID0g
cGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKQotICAgICAgICBtc2cgPSAicGxhdGZvcm0gJXMgLS0g
UHl0aG9uICVzIiAlIChzeXMucGxhdGZvcm0sIHZlcmluZm8pCi0gICAgICAgIGlmIGhhc2F0dHIo
c3lzLCAncHlweV92ZXJzaW9uX2luZm8nKToKLSAgICAgICAgICAgIHZlcmluZm8gPSAiLiIuam9p
bihtYXAoc3RyLCBzeXMucHlweV92ZXJzaW9uX2luZm9bOjNdKSkKLSAgICAgICAgICAgIG1zZyAr
PSAiW3B5cHktJXMtJXNdIiAlICh2ZXJpbmZvLCBzeXMucHlweV92ZXJzaW9uX2luZm9bM10pCi0g
ICAgICAgIG1zZyArPSAiLCBweXRlc3QtJXMsIHB5LSVzLCBwbHVnZ3ktJXMiICUgKAotICAgICAg
ICAgICAgICAgcHl0ZXN0Ll9fdmVyc2lvbl9fLCBweS5fX3ZlcnNpb25fXywgcGx1Z2d5Ll9fdmVy
c2lvbl9fKQotICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+IDAgb3Igc2VsZi5jb25maWcub3B0
aW9uLmRlYnVnIG9yIFwKLSAgICAgICAgICAgZ2V0YXR0cihzZWxmLmNvbmZpZy5vcHRpb24sICdw
YXN0ZWJpbicsIE5vbmUpOgotICAgICAgICAgICAgbXNnICs9ICIgLS0gIiArIHN0cihzeXMuZXhl
Y3V0YWJsZSkKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKG1zZykKLSAgICAgICAgbGluZXMgPSBz
ZWxmLmNvbmZpZy5ob29rLnB5dGVzdF9yZXBvcnRfaGVhZGVyKAotICAgICAgICAgICAgY29uZmln
PXNlbGYuY29uZmlnLCBzdGFydGRpcj1zZWxmLnN0YXJ0ZGlyKQotICAgICAgICBzZWxmLl93cml0
ZV9yZXBvcnRfbGluZXNfZnJvbV9ob29rcyhsaW5lcykKLQotICAgIGRlZiBfd3JpdGVfcmVwb3J0
X2xpbmVzX2Zyb21faG9va3Moc2VsZiwgbGluZXMpOgotICAgICAgICBsaW5lcy5yZXZlcnNlKCkK
LSAgICAgICAgZm9yIGxpbmUgaW4gZmxhdHRlbihsaW5lcyk6Ci0gICAgICAgICAgICBzZWxmLndy
aXRlX2xpbmUobGluZSkKLQotICAgIGRlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihzZWxmLCBjb25m
aWcpOgotICAgICAgICBpbmlmaWxlID0gIiIKLSAgICAgICAgaWYgY29uZmlnLmluaWZpbGU6Ci0g
ICAgICAgICAgICBpbmlmaWxlID0gIiAiICsgY29uZmlnLnJvb3RkaXIuYmVzdHJlbHBhdGgoY29u
ZmlnLmluaWZpbGUpCi0gICAgICAgIGxpbmVzID0gWyJyb290ZGlyOiAlcywgaW5pZmlsZTolcyIg
JSAoY29uZmlnLnJvb3RkaXIsIGluaWZpbGUpXQotCi0gICAgICAgIHBsdWdpbmluZm8gPSBjb25m
aWcucGx1Z2lubWFuYWdlci5saXN0X3BsdWdpbl9kaXN0aW5mbygpCi0gICAgICAgIGlmIHBsdWdp
bmluZm86Ci0KLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAicGx1
Z2luczogJXMiICUgIiwgIi5qb2luKF9wbHVnaW5fbmFtZXZlcnNpb25zKHBsdWdpbmluZm8pKSkK
LSAgICAgICAgcmV0dXJuIGxpbmVzCi0KLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNo
KHNlbGYsIHNlc3Npb24pOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24uY29sbGVjdG9u
bHk6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGNvbGxlY3RlZGl0ZW1zKHNlc3Npb24uaXRlbXMp
Ci0gICAgICAgICAgICBpZiBzZWxmLnN0YXRzLmdldCgnZmFpbGVkJyk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fdHcuc2VwKCIhIiwgImNvbGxlY3Rpb24gZmFpbHVyZXMiKQotICAgICAgICAgICAg
ICAgIGZvciByZXAgaW4gc2VsZi5zdGF0cy5nZXQoJ2ZhaWxlZCcpOgotICAgICAgICAgICAgICAg
ICAgICByZXAudG90ZXJtaW5hbChzZWxmLl90dykKLSAgICAgICAgICAgICAgICByZXR1cm4gMQot
ICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgbGluZXMgPSBzZWxmLmNvbmZpZy5ob29rLnB5
dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZpbmlzaCgKLSAgICAgICAgICAgIGNvbmZpZz1zZWxmLmNv
bmZpZywgc3RhcnRkaXI9c2VsZi5zdGFydGRpciwgaXRlbXM9c2Vzc2lvbi5pdGVtcykKLSAgICAg
ICAgc2VsZi5fd3JpdGVfcmVwb3J0X2xpbmVzX2Zyb21faG9va3MobGluZXMpCi0KLSAgICBkZWYg
X3ByaW50Y29sbGVjdGVkaXRlbXMoc2VsZiwgaXRlbXMpOgotICAgICAgICAjIHRvIHByaW50IG91
dCBpdGVtcyBhbmQgdGhlaXIgcGFyZW50IGNvbGxlY3RvcnMKLSAgICAgICAgIyB3ZSB0YWtlIGNh
cmUgdG8gbGVhdmUgb3V0IEluc3RhbmNlcyBha2EgKCkKLSAgICAgICAgIyBiZWNhdXNlIGxhdGVy
IHZlcnNpb25zIGFyZSBnb2luZyB0byBnZXQgcmlkIG9mIHRoZW0gYW55d2F5Ci0gICAgICAgIGlm
IHNlbGYuY29uZmlnLm9wdGlvbi52ZXJib3NlIDwgMDoKLSAgICAgICAgICAgIGlmIHNlbGYuY29u
ZmlnLm9wdGlvbi52ZXJib3NlIDwgLTE6Ci0gICAgICAgICAgICAgICAgY291bnRzID0ge30KLSAg
ICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgICAgICAgICAgICAgbmFt
ZSA9IGl0ZW0ubm9kZWlkLnNwbGl0KCc6OicsIDEpWzBdCi0gICAgICAgICAgICAgICAgICAgIGNv
dW50c1tuYW1lXSA9IGNvdW50cy5nZXQobmFtZSwgMCkgKyAxCi0gICAgICAgICAgICAgICAgZm9y
IG5hbWUsIGNvdW50IGluIHNvcnRlZChjb3VudHMuaXRlbXMoKSk6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3R3LmxpbmUoIiVzOiAlZCIgJSAobmFtZSwgY291bnQpKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZWlkID0gaXRlbS5ub2RlaWQKLSAgICAgICAgICAgICAgICAgICAgbm9kZWlkID0g
bm9kZWlkLnJlcGxhY2UoIjo6KCk6OiIsICI6OiIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3R3LmxpbmUobm9kZWlkKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHN0YWNrID0gW10K
LSAgICAgICAgaW5kZW50ID0gIiIKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAg
ICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IGl0ZW0ubGlzdGNoYWluKClbMTpdICAjIHN0cmlwIHJv
b3Qgbm9kZQotICAgICAgICAgICAgd2hpbGUgc3RhY2s6Ci0gICAgICAgICAgICAgICAgaWYgc3Rh
Y2sgPT0gbmVlZGVkX2NvbGxlY3RvcnNbOmxlbihzdGFjayldOgotICAgICAgICAgICAgICAgICAg
ICBicmVhawotICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpCi0gICAgICAgICAgICBmb3IgY29s
IGluIG5lZWRlZF9jb2xsZWN0b3JzW2xlbihzdGFjayk6XToKLSAgICAgICAgICAgICAgICBzdGFj
ay5hcHBlbmQoY29sKQotICAgICAgICAgICAgICAgICMgaWYgY29sLm5hbWUgPT0gIigpIjoKLSAg
ICAgICAgICAgICAgICAjICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaW5kZW50ID0gKGxl
bihzdGFjaykgLSAxKSAqICIgICIKLSAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKCIlcyVz
IiAlIChpbmRlbnQsIGNvbCkpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRy
dWUpCi0gICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYsIGV4aXRzdGF0dXMpOgotICAg
ICAgICBvdXRjb21lID0geWllbGQKLSAgICAgICAgb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICAg
ICAgc2VsZi5fdHcubGluZSgiIikKLSAgICAgICAgc3VtbWFyeV9leGl0X2NvZGVzID0gKAotICAg
ICAgICAgICAgRVhJVF9PSywgRVhJVF9URVNUU0ZBSUxFRCwgRVhJVF9JTlRFUlJVUFRFRCwgRVhJ
VF9VU0FHRUVSUk9SLAotICAgICAgICAgICAgRVhJVF9OT1RFU1RTQ09MTEVDVEVEKQotICAgICAg
ICBpZiBleGl0c3RhdHVzIGluIHN1bW1hcnlfZXhpdF9jb2RlczoKLSAgICAgICAgICAgIHNlbGYu
Y29uZmlnLmhvb2sucHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVybWluYWxyZXBvcnRlcj1zZWxm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGl0c3RhdHVzPWV4aXRzdGF0dXMpCi0gICAgICAgICAgICBzZWxmLnN1bW1hcnlfZXJyb3JzKCkK
LSAgICAgICAgICAgIHNlbGYuc3VtbWFyeV9mYWlsdXJlcygpCi0gICAgICAgICAgICBzZWxmLnN1
bW1hcnlfd2FybmluZ3MoKQotICAgICAgICAgICAgc2VsZi5zdW1tYXJ5X3Bhc3NlcygpCi0gICAg
ICAgIGlmIGV4aXRzdGF0dXMgPT0gRVhJVF9JTlRFUlJVUFRFRDoKLSAgICAgICAgICAgIHNlbGYu
X3JlcG9ydF9rZXlib2FyZGludGVycnVwdCgpCi0gICAgICAgICAgICBkZWwgc2VsZi5fa2V5Ym9h
cmRpbnRlcnJ1cHRfbWVtbwotICAgICAgICBzZWxmLnN1bW1hcnlfZGVzZWxlY3RlZCgpCi0gICAg
ICAgIHNlbGYuc3VtbWFyeV9zdGF0cygpCi0KLSAgICBkZWYgcHl0ZXN0X2tleWJvYXJkX2ludGVy
cnVwdChzZWxmLCBleGNpbmZvKToKLSAgICAgICAgc2VsZi5fa2V5Ym9hcmRpbnRlcnJ1cHRfbWVt
byA9IGV4Y2luZm8uZ2V0cmVwcihmdW5jYXJncz1UcnVlKQotCi0gICAgZGVmIHB5dGVzdF91bmNv
bmZpZ3VyZShzZWxmKToKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2tleWJvYXJkaW50ZXJy
dXB0X21lbW8nKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9rZXlib2FyZGludGVycnVwdCgp
Ci0KLSAgICBkZWYgX3JlcG9ydF9rZXlib2FyZGludGVycnVwdChzZWxmKToKLSAgICAgICAgZXhj
cmVwciA9IHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8KLSAgICAgICAgbXNnID0gZXhjcmVw
ci5yZXByY3Jhc2gubWVzc2FnZQotICAgICAgICBzZWxmLndyaXRlX3NlcCgiISIsIG1zZykKLSAg
ICAgICAgaWYgIktleWJvYXJkSW50ZXJydXB0IiBpbiBtc2c6Ci0gICAgICAgICAgICBpZiBzZWxm
LmNvbmZpZy5vcHRpb24uZnVsbHRyYWNlOgotICAgICAgICAgICAgICAgIGV4Y3JlcHIudG90ZXJt
aW5hbChzZWxmLl90dykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
dHcubGluZSgidG8gc2hvdyBhIGZ1bGwgdHJhY2ViYWNrIG9uIEtleWJvYXJkSW50ZXJydXB0IHVz
ZSAtLWZ1bGx0cmFjZSIsIHllbGxvdz1UcnVlKQotICAgICAgICAgICAgICAgIGV4Y3JlcHIucmVw
cmNyYXNoLnRvdGVybWluYWwoc2VsZi5fdHcpCi0KLSAgICBkZWYgX2xvY2F0aW9ubGluZShzZWxm
LCBub2RlaWQsIGZzcGF0aCwgbGluZW5vLCBkb21haW4pOgotICAgICAgICBkZWYgbWtyZWwobm9k
ZWlkKToKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLmNvbmZpZy5jd2RfcmVsYXRpdmVfbm9kZWlk
KG5vZGVpZCkKLSAgICAgICAgICAgIGlmIGRvbWFpbiBhbmQgbGluZS5lbmRzd2l0aChkb21haW4p
OgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotbGVuKGRvbWFpbildCi0gICAgICAgICAg
ICAgICAgdmFsdWVzID0gZG9tYWluLnNwbGl0KCJbIikKLSAgICAgICAgICAgICAgICB2YWx1ZXNb
MF0gPSB2YWx1ZXNbMF0ucmVwbGFjZSgnLicsICc6OicpICAjIGRvbid0IHJlcGxhY2UgJy4nIGlu
IHBhcmFtcwotICAgICAgICAgICAgICAgIGxpbmUgKz0gIlsiLmpvaW4odmFsdWVzKQotICAgICAg
ICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgIyBjb2xsZWN0X2ZzcGF0aCBjb21lcyBmcm9tIHRl
c3RpZCB3aGljaCBoYXMgYSAiLyItbm9ybWFsaXplZCBwYXRoCi0KLSAgICAgICAgaWYgZnNwYXRo
OgotICAgICAgICAgICAgcmVzID0gbWtyZWwobm9kZWlkKS5yZXBsYWNlKCI6OigpIiwgIiIpICAj
IHBhcmVucy1ub3JtYWxpemF0aW9uCi0gICAgICAgICAgICBpZiBub2RlaWQuc3BsaXQoIjo6Iilb
MF0gIT0gZnNwYXRoLnJlcGxhY2UoIlxcIiwgbm9kZXMuU0VQKToKLSAgICAgICAgICAgICAgICBy
ZXMgKz0gIiA8LSAiICsgc2VsZi5zdGFydGRpci5iZXN0cmVscGF0aChmc3BhdGgpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICByZXMgPSAiW2xvY2F0aW9uXSIKLSAgICAgICAgcmV0dXJuIHJl
cyArICIgIgotCi0gICAgZGVmIF9nZXRmYWlsdXJlaGVhZGxpbmUoc2VsZiwgcmVwKToKLSAgICAg
ICAgaWYgaGFzYXR0cihyZXAsICdsb2NhdGlvbicpOgotICAgICAgICAgICAgZnNwYXRoLCBsaW5l
bm8sIGRvbWFpbiA9IHJlcC5sb2NhdGlvbgotICAgICAgICAgICAgcmV0dXJuIGRvbWFpbgotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJ0ZXN0IHNlc3Npb24iICAjIFhYWD8KLQot
ICAgIGRlZiBfZ2V0Y3Jhc2hsaW5lKHNlbGYsIHJlcCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHJldHVybiBzdHIocmVwLmxvbmdyZXByLnJlcHJjcmFzaCkKLSAgICAgICAgZXhjZXB0IEF0
dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBz
dHIocmVwLmxvbmdyZXByKVs6NTBdCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiCi0KLSAgICAjCi0gICAgIyBzdW1tYXJpZXMgZm9y
IHNlc3Npb25maW5pc2gKLSAgICAjCi0gICAgZGVmIGdldHJlcG9ydHMoc2VsZiwgbmFtZSk6Ci0g
ICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIGZvciB4IGluIHNlbGYuc3RhdHMuZ2V0KG5hbWUs
IFtdKToKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHgsICdfcGRic2hvd24nKToKLSAgICAg
ICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHgpCi0gICAgICAgIHJldHVybiB2YWx1ZXMKLQotICAg
IGRlZiBzdW1tYXJ5X3dhcm5pbmdzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmhhc29wdCgidyIp
OgotICAgICAgICAgICAgYWxsX3dhcm5pbmdzID0gc2VsZi5zdGF0cy5nZXQoIndhcm5pbmdzIikK
LSAgICAgICAgICAgIGlmIG5vdCBhbGxfd2FybmluZ3M6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0KLSAgICAgICAgICAgIGdyb3VwZWQgPSBpdGVydG9vbHMuZ3JvdXBieShhbGxfd2FybmluZ3Ms
IGtleT1sYW1iZGEgd3I6IHdyLmdldF9sb2NhdGlvbihzZWxmLmNvbmZpZykpCi0KLSAgICAgICAg
ICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgIndhcm5pbmdzIHN1bW1hcnkiLCB5ZWxsb3c9VHJ1ZSwg
Ym9sZD1GYWxzZSkKLSAgICAgICAgICAgIGZvciBsb2NhdGlvbiwgd2FybmluZ19yZWNvcmRzIGlu
IGdyb3VwZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZShzdHIobG9jYXRpb24pIG9y
ICc8dW5kZXRlcm1pbmVkIGxvY2F0aW9uPicpCi0gICAgICAgICAgICAgICAgZm9yIHcgaW4gd2Fy
bmluZ19yZWNvcmRzOgotICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IHcubWVzc2FnZS5zcGxp
dGxpbmVzKCkKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50ZWQgPSAnXG4nLmpvaW4oJyAgJyAr
IHggZm9yIHggaW4gbGluZXMpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoaW5k
ZW50ZWQpCi0gICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZSgpCi0gICAgICAgICAgICBzZWxm
Ll90dy5saW5lKCctLSBEb2NzOiBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3dhcm5p
bmdzLmh0bWwnKQotCi0gICAgZGVmIHN1bW1hcnlfcGFzc2VzKHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSAhPSAibm8iOgotICAgICAgICAgICAgaWYgc2VsZi5o
YXNvcHQoIlAiKToKLSAgICAgICAgICAgICAgICByZXBvcnRzID0gc2VsZi5nZXRyZXBvcnRzKCdw
YXNzZWQnKQotICAgICAgICAgICAgICAgIGlmIG5vdCByZXBvcnRzOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiPSIsICJQQVNTRVMi
KQotICAgICAgICAgICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKLSAgICAgICAgICAgICAgICAg
ICAgbXNnID0gc2VsZi5fZ2V0ZmFpbHVyZWhlYWRsaW5lKHJlcCkKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi53cml0ZV9zZXAoIl8iLCBtc2cpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX291
dHJlcF9zdW1tYXJ5KHJlcCkKLQotICAgIGRlZiBwcmludF90ZWFyZG93bl9zZWN0aW9ucyhzZWxm
LCByZXApOgotICAgICAgICBmb3Igc2VjbmFtZSwgY29udGVudCBpbiByZXAuc2VjdGlvbnM6Ci0g
ICAgICAgICAgICBpZiAndGVhcmRvd24nIGluIHNlY25hbWU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fdHcuc2VwKCctJywgc2VjbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBjb250ZW50Wy0xOl0g
PT0gIlxuIjoKLSAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnRbOi0xXQotICAg
ICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoY29udGVudCkKLQotICAgIGRlZiBzdW1tYXJ5X2Zh
aWx1cmVzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSAhPSAi
bm8iOgotICAgICAgICAgICAgcmVwb3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygnZmFpbGVkJykKLSAg
ICAgICAgICAgIGlmIG5vdCByZXBvcnRzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICAgICAgc2VsZi53cml0ZV9zZXAoIj0iLCAiRkFJTFVSRVMiKQotICAgICAgICAgICAgZm9yIHJl
cCBpbiByZXBvcnRzOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi50YnN0
eWxlID09ICJsaW5lIjoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2dldGNyYXNo
bGluZShyZXApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShsaW5lKQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2dldGZh
aWx1cmVoZWFkbGluZShyZXApCi0gICAgICAgICAgICAgICAgICAgIG1hcmt1cCA9IHsncmVkJzog
VHJ1ZSwgJ2JvbGQnOiBUcnVlfQotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgi
XyIsIG1zZywgKiptYXJrdXApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX291dHJlcF9zdW1t
YXJ5KHJlcCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJlcG9ydCBpbiBzZWxmLmdldHJlcG9y
dHMoJycpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVwb3J0Lm5vZGVpZCA9PSByZXAu
bm9kZWlkIGFuZCByZXBvcnQud2hlbiA9PSAndGVhcmRvd24nOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYucHJpbnRfdGVhcmRvd25fc2VjdGlvbnMocmVwb3J0KQotCi0gICAgZGVm
IHN1bW1hcnlfZXJyb3JzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJz
dHlsZSAhPSAibm8iOgotICAgICAgICAgICAgcmVwb3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygnZXJy
b3InKQotICAgICAgICAgICAgaWYgbm90IHJlcG9ydHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiPSIsICJFUlJPUlMiKQotICAgICAgICAgICAg
Zm9yIHJlcCBpbiBzZWxmLnN0YXRzWydlcnJvciddOgotICAgICAgICAgICAgICAgIG1zZyA9IHNl
bGYuX2dldGZhaWx1cmVoZWFkbGluZShyZXApCi0gICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0
dHIocmVwLCAnd2hlbicpOgotICAgICAgICAgICAgICAgICAgICAjIGNvbGxlY3QKLSAgICAgICAg
ICAgICAgICAgICAgbXNnID0gIkVSUk9SIGNvbGxlY3RpbmcgIiArIG1zZwotICAgICAgICAgICAg
ICAgIGVsaWYgcmVwLndoZW4gPT0gInNldHVwIjoKLSAgICAgICAgICAgICAgICAgICAgbXNnID0g
IkVSUk9SIGF0IHNldHVwIG9mICIgKyBtc2cKLSAgICAgICAgICAgICAgICBlbGlmIHJlcC53aGVu
ID09ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9ICJFUlJPUiBhdCB0ZWFy
ZG93biBvZiAiICsgbXNnCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIl8iLCBtc2cp
Ci0gICAgICAgICAgICAgICAgc2VsZi5fb3V0cmVwX3N1bW1hcnkocmVwKQotCi0gICAgZGVmIF9v
dXRyZXBfc3VtbWFyeShzZWxmLCByZXApOgotICAgICAgICByZXAudG90ZXJtaW5hbChzZWxmLl90
dykKLSAgICAgICAgZm9yIHNlY25hbWUsIGNvbnRlbnQgaW4gcmVwLnNlY3Rpb25zOgotICAgICAg
ICAgICAgc2VsZi5fdHcuc2VwKCItIiwgc2VjbmFtZSkKLSAgICAgICAgICAgIGlmIGNvbnRlbnRb
LTE6XSA9PSAiXG4iOgotICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50WzotMV0KLSAg
ICAgICAgICAgIHNlbGYuX3R3LmxpbmUoY29udGVudCkKLQotICAgIGRlZiBzdW1tYXJ5X3N0YXRz
KHNlbGYpOgotICAgICAgICBzZXNzaW9uX2R1cmF0aW9uID0gdGltZS50aW1lKCkgLSBzZWxmLl9z
ZXNzaW9uc3RhcnR0aW1lCi0gICAgICAgIChsaW5lLCBjb2xvcikgPSBidWlsZF9zdW1tYXJ5X3N0
YXRzX2xpbmUoc2VsZi5zdGF0cykKLSAgICAgICAgbXNnID0gIiVzIGluICUuMmYgc2Vjb25kcyIg
JSAobGluZSwgc2Vzc2lvbl9kdXJhdGlvbikKLSAgICAgICAgbWFya3VwID0ge2NvbG9yOiBUcnVl
LCAnYm9sZCc6IFRydWV9Ci0KLSAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPj0gMDoKLSAgICAg
ICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgbXNnLCAqKm1hcmt1cCkKLSAgICAgICAgaWYgc2Vs
Zi52ZXJib3NpdHkgPT0gLTE6Ci0gICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUobXNnLCAqKm1h
cmt1cCkKLQotICAgIGRlZiBzdW1tYXJ5X2Rlc2VsZWN0ZWQoc2VsZik6Ci0gICAgICAgIGlmICdk
ZXNlbGVjdGVkJyBpbiBzZWxmLnN0YXRzOgotICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIj0i
LCAiJWQgdGVzdHMgZGVzZWxlY3RlZCIgJSAoCi0gICAgICAgICAgICAgICAgbGVuKHNlbGYuc3Rh
dHNbJ2Rlc2VsZWN0ZWQnXSkpLCBib2xkPVRydWUpCi0KLQotZGVmIHJlcHJfcHl0aG9udmVyc2lv
bih2PU5vbmUpOgotICAgIGlmIHYgaXMgTm9uZToKLSAgICAgICAgdiA9IHN5cy52ZXJzaW9uX2lu
Zm8KLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiAiJXMuJXMuJXMtJXMtJXMiICUgdgotICAgIGV4
Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcmV0dXJuIHN0cih2KQotCi0K
LWRlZiBmbGF0dGVuKHZhbHVlcyk6Ci0gICAgZm9yIHggaW4gdmFsdWVzOgotICAgICAgICBpZiBp
c2luc3RhbmNlKHgsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICAgICAgZm9yIHkgaW4gZmxhdHRl
bih4KToKLSAgICAgICAgICAgICAgICB5aWVsZCB5Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICB5aWVsZCB4Ci0KLQotZGVmIGJ1aWxkX3N1bW1hcnlfc3RhdHNfbGluZShzdGF0cyk6Ci0gICAg
a2V5cyA9ICgiZmFpbGVkIHBhc3NlZCBza2lwcGVkIGRlc2VsZWN0ZWQgIgotICAgICAgICAgICAg
InhmYWlsZWQgeHBhc3NlZCB3YXJuaW5ncyBlcnJvciIpLnNwbGl0KCkKLSAgICB1bmtub3duX2tl
eV9zZWVuID0gRmFsc2UKLSAgICBmb3Iga2V5IGluIHN0YXRzLmtleXMoKToKLSAgICAgICAgaWYg
a2V5IG5vdCBpbiBrZXlzOgotICAgICAgICAgICAgaWYga2V5OiAgIyBzZXR1cC90ZWFyZG93biBy
ZXBvcnRzIGhhdmUgYW4gZW1wdHkga2V5LCBpZ25vcmUgdGhlbQotICAgICAgICAgICAgICAgIGtl
eXMuYXBwZW5kKGtleSkKLSAgICAgICAgICAgICAgICB1bmtub3duX2tleV9zZWVuID0gVHJ1ZQot
ICAgIHBhcnRzID0gW10KLSAgICBmb3Iga2V5IGluIGtleXM6Ci0gICAgICAgIHZhbCA9IHN0YXRz
LmdldChrZXksIE5vbmUpCi0gICAgICAgIGlmIHZhbDoKLSAgICAgICAgICAgIHBhcnRzLmFwcGVu
ZCgiJWQgJXMiICUgKGxlbih2YWwpLCBrZXkpKQotCi0gICAgaWYgcGFydHM6Ci0gICAgICAgIGxp
bmUgPSAiLCAiLmpvaW4ocGFydHMpCi0gICAgZWxzZToKLSAgICAgICAgbGluZSA9ICJubyB0ZXN0
cyByYW4iCi0KLSAgICBpZiAnZmFpbGVkJyBpbiBzdGF0cyBvciAnZXJyb3InIGluIHN0YXRzOgot
ICAgICAgICBjb2xvciA9ICdyZWQnCi0gICAgZWxpZiAnd2FybmluZ3MnIGluIHN0YXRzIG9yIHVu
a25vd25fa2V5X3NlZW46Ci0gICAgICAgIGNvbG9yID0gJ3llbGxvdycKLSAgICBlbGlmICdwYXNz
ZWQnIGluIHN0YXRzOgotICAgICAgICBjb2xvciA9ICdncmVlbicKLSAgICBlbHNlOgotICAgICAg
ICBjb2xvciA9ICd5ZWxsb3cnCi0KLSAgICByZXR1cm4gKGxpbmUsIGNvbG9yKQotCi0KLWRlZiBf
cGx1Z2luX25hbWV2ZXJzaW9ucyhwbHVnaW5pbmZvKToKLSAgICB2YWx1ZXMgPSBbXQotICAgIGZv
ciBwbHVnaW4sIGRpc3QgaW4gcGx1Z2luaW5mbzoKLSAgICAgICAgIyBnZXRzIHVzIG5hbWUgYW5k
IHZlcnNpb24hCi0gICAgICAgIG5hbWUgPSAne2Rpc3QucHJvamVjdF9uYW1lfS17ZGlzdC52ZXJz
aW9ufScuZm9ybWF0KGRpc3Q9ZGlzdCkKLSAgICAgICAgIyBxdWVzdGlvbmFibGUgY29udmVuaWVu
Y2UsIGJ1dCBpdCBrZWVwcyB0aGluZ3Mgc2hvcnQKLSAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRo
KCJweXRlc3QtIik6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZVs3Ol0KLSAgICAgICAgIyB3ZSBk
ZWNpZGVkIHRvIHByaW50IHB5dGhvbiBwYWNrYWdlIG5hbWVzCi0gICAgICAgICMgdGhleSBjYW4g
aGF2ZSBtb3JlIHRoYW4gb25lIHBsdWdpbgotICAgICAgICBpZiBuYW1lIG5vdCBpbiB2YWx1ZXM6
Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKG5hbWUpCi0gICAgcmV0dXJuIHZhbHVlcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBkaXIucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3RtcGRpci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGExYjAzMjIzN2Fm
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBkaXIucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotIiIiIHN1cHBvcnQgZm9yIHByb3ZpZGluZyB0ZW1w
b3JhcnkgZGlyZWN0b3JpZXMgdG8gdGVzdCBmdW5jdGlvbnMuICAiIiIKLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1w
b3J0IHJlCi0KLWltcG9ydCBweXRlc3QKLWltcG9ydCBweQotZnJvbSBfcHl0ZXN0Lm1vbmtleXBh
dGNoIGltcG9ydCBNb25rZXlQYXRjaAotCi0KLWNsYXNzIFRlbXBkaXJGYWN0b3J5OgotICAgICIi
IkZhY3RvcnkgZm9yIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB1bmRlciB0aGUgY29tbW9uIGJhc2Ug
dGVtcCBkaXJlY3RvcnkuCi0KLSAgICBUaGUgYmFzZSBkaXJlY3RvcnkgY2FuIGJlIGNvbmZpZ3Vy
ZWQgdXNpbmcgdGhlIGBgLS1iYXNldGVtcGBgIG9wdGlvbi4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjb25maWcpOgotICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwotICAg
ICAgICBzZWxmLnRyYWNlID0gY29uZmlnLnRyYWNlLmdldCgidG1wZGlyIikKLQotICAgIGRlZiBl
bnN1cmV0ZW1wKHNlbGYsIHN0cmluZywgZGlyPTEpOgotICAgICAgICAiIiIgKGRlcHJlY2F0ZWQp
IHJldHVybiB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGggd2l0aAotICAgICAgICAgICAgdGhlIGdp
dmVuIHN0cmluZyBhcyB0aGUgdHJhaWxpbmcgcGFydC4gIEl0IGlzIHVzdWFsbHkKLSAgICAgICAg
ICAgIGJldHRlciB0byB1c2UgdGhlICd0bXBkaXInIGZ1bmN0aW9uIGFyZ3VtZW50IHdoaWNoCi0g
ICAgICAgICAgICBwcm92aWRlcyBhbiBlbXB0eSB1bmlxdWUtcGVyLXRlc3QtaW52b2NhdGlvbiBk
aXJlY3RvcnkKLSAgICAgICAgICAgIGFuZCBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5LgotICAg
ICAgICAiIiIKLSAgICAgICAgIyBweS5sb2cuX2FwaXdhcm4oIj4xLjEiLCAidXNlIHRtcGRpciBm
dW5jdGlvbiBhcmd1bWVudCIpCi0gICAgICAgIHJldHVybiBzZWxmLmdldGJhc2V0ZW1wKCkuZW5z
dXJlKHN0cmluZywgZGlyPWRpcikKLQotICAgIGRlZiBta3RlbXAoc2VsZiwgYmFzZW5hbWUsIG51
bWJlcmVkPVRydWUpOgotICAgICAgICAiIiJDcmVhdGUgYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIGJh
c2UgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhbmQgcmV0dXJuIGl0LgotICAgICAgICBJZiBgYG51bWJl
cmVkYGAsIGVuc3VyZSB0aGUgZGlyZWN0b3J5IGlzIHVuaXF1ZSBieSBhZGRpbmcgYSBudW1iZXIK
LSAgICAgICAgcHJlZml4IGdyZWF0ZXIgdGhhbiBhbnkgZXhpc3Rpbmcgb25lLgotICAgICAgICAi
IiIKLSAgICAgICAgYmFzZXRlbXAgPSBzZWxmLmdldGJhc2V0ZW1wKCkKLSAgICAgICAgaWYgbm90
IG51bWJlcmVkOgotICAgICAgICAgICAgcCA9IGJhc2V0ZW1wLm1rZGlyKGJhc2VuYW1lKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwubWFrZV9udW1iZXJlZF9k
aXIocHJlZml4PWJhc2VuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2VlcD0wLCByb290ZGlyPWJhc2V0ZW1wLCBsb2NrX3RpbWVvdXQ9Tm9uZSkK
LSAgICAgICAgc2VsZi50cmFjZSgibWt0ZW1wIiwgcCkKLSAgICAgICAgcmV0dXJuIHAKLQotICAg
IGRlZiBnZXRiYXNldGVtcChzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBiYXNlIHRlbXBvcmFy
eSBkaXJlY3RvcnkuICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5f
YmFzZXRlbXAKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgYmFz
ZXRlbXAgPSBzZWxmLmNvbmZpZy5vcHRpb24uYmFzZXRlbXAKLSAgICAgICAgICAgIGlmIGJhc2V0
ZW1wOgotICAgICAgICAgICAgICAgIGJhc2V0ZW1wID0gcHkucGF0aC5sb2NhbChiYXNldGVtcCkK
LSAgICAgICAgICAgICAgICBpZiBiYXNldGVtcC5jaGVjaygpOgotICAgICAgICAgICAgICAgICAg
ICBiYXNldGVtcC5yZW1vdmUoKQotICAgICAgICAgICAgICAgIGJhc2V0ZW1wLm1rZGlyKCkKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVtcHJvb3QgPSBweS5wYXRoLmxvY2Fs
LmdldF90ZW1wcm9vdCgpCi0gICAgICAgICAgICAgICAgdXNlciA9IGdldF91c2VyKCkKLSAgICAg
ICAgICAgICAgICBpZiB1c2VyOgotICAgICAgICAgICAgICAgICAgICAjIHVzZSBhIHN1Yi1kaXJl
Y3RvcnkgaW4gdGhlIHRlbXByb290IHRvIHNwZWVkLXVwCi0gICAgICAgICAgICAgICAgICAgICMg
bWFrZV9udW1iZXJlZF9kaXIoKSBjYWxsCi0gICAgICAgICAgICAgICAgICAgIHJvb3RkaXIgPSB0
ZW1wcm9vdC5qb2luKCdweXRlc3Qtb2YtJXMnICUgdXNlcikKLSAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICByb290ZGlyID0gdGVtcHJvb3QKLSAgICAgICAgICAgICAg
ICByb290ZGlyLmVuc3VyZShkaXI9MSkKLSAgICAgICAgICAgICAgICBiYXNldGVtcCA9IHB5LnBh
dGgubG9jYWwubWFrZV9udW1iZXJlZF9kaXIocHJlZml4PSdweXRlc3QtJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGRpcj1y
b290ZGlyKQotICAgICAgICAgICAgc2VsZi5fYmFzZXRlbXAgPSB0ID0gYmFzZXRlbXAucmVhbHBh
dGgoKQotICAgICAgICAgICAgc2VsZi50cmFjZSgibmV3IGJhc2V0ZW1wIiwgdCkKLSAgICAgICAg
ICAgIHJldHVybiB0Ci0KLSAgICBkZWYgZmluaXNoKHNlbGYpOgotICAgICAgICBzZWxmLnRyYWNl
KCJmaW5pc2giKQotCi0KLWRlZiBnZXRfdXNlcigpOgotICAgICIiIlJldHVybiB0aGUgY3VycmVu
dCB1c2VyIG5hbWUsIG9yIE5vbmUgaWYgZ2V0dXNlcigpIGRvZXMgbm90IHdvcmsKLSAgICBpbiB0
aGUgY3VycmVudCBlbnZpcm9ubWVudCAoc2VlICMxMDEwKS4KLSAgICAiIiIKLSAgICBpbXBvcnQg
Z2V0cGFzcwotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGdldHBhc3MuZ2V0dXNlcigpCi0gICAg
ZXhjZXB0IChJbXBvcnRFcnJvciwgS2V5RXJyb3IpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0K
LSMgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotVGVtcGRpckhhbmRsZXIgPSBUZW1wZGlyRmFjdG9y
eQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgIiIiQ3JlYXRlIGEgVGVt
cGRpckZhY3RvcnkgYW5kIGF0dGFjaCBpdCB0byB0aGUgY29uZmlnIG9iamVjdC4KLQotICAgIFRo
aXMgaXMgdG8gY29tcGx5IHdpdGggZXhpc3RpbmcgcGx1Z2lucyB3aGljaCBleHBlY3QgdGhlIGhh
bmRsZXIgdG8gYmUKLSAgICBhdmFpbGFibGUgYXQgcHl0ZXN0X2NvbmZpZ3VyZSB0aW1lLCBidXQg
aWRlYWxseSBzaG91bGQgYmUgbW92ZWQgZW50aXJlbHkKLSAgICB0byB0aGUgdG1wZGlyX2ZhY3Rv
cnkgc2Vzc2lvbiBmaXh0dXJlLgotICAgICIiIgotICAgIG1wID0gTW9ua2V5UGF0Y2goKQotICAg
IHQgPSBUZW1wZGlyRmFjdG9yeShjb25maWcpCi0gICAgY29uZmlnLl9jbGVhbnVwLmV4dGVuZChb
bXAudW5kbywgdC5maW5pc2hdKQotICAgIG1wLnNldGF0dHIoY29uZmlnLCAnX3RtcGRpcmhhbmRs
ZXInLCB0LCByYWlzaW5nPUZhbHNlKQotICAgIG1wLnNldGF0dHIocHl0ZXN0LCAnZW5zdXJldGVt
cCcsIHQuZW5zdXJldGVtcCwgcmFpc2luZz1GYWxzZSkKLQotCi1AcHl0ZXN0LmZpeHR1cmUoc2Nv
cGU9J3Nlc3Npb24nKQotZGVmIHRtcGRpcl9mYWN0b3J5KHJlcXVlc3QpOgotICAgICIiIlJldHVy
biBhIFRlbXBkaXJGYWN0b3J5IGluc3RhbmNlIGZvciB0aGUgdGVzdCBzZXNzaW9uLgotICAgICIi
IgotICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5fdG1wZGlyaGFuZGxlcgotCi0KLUBweXRlc3Qu
Zml4dHVyZQotZGVmIHRtcGRpcihyZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSk6Ci0gICAgIiIiUmV0
dXJuIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoIG9iamVjdAotICAgIHdoaWNoIGlzIHVuaXF1
ZSB0byBlYWNoIHRlc3QgZnVuY3Rpb24gaW52b2NhdGlvbiwKLSAgICBjcmVhdGVkIGFzIGEgc3Vi
IGRpcmVjdG9yeSBvZiB0aGUgYmFzZSB0ZW1wb3JhcnkKLSAgICBkaXJlY3RvcnkuICBUaGUgcmV0
dXJuZWQgb2JqZWN0IGlzIGEgYHB5LnBhdGgubG9jYWxgXwotICAgIHBhdGggb2JqZWN0LgotICAg
ICIiIgotICAgIG5hbWUgPSByZXF1ZXN0Lm5vZGUubmFtZQotICAgIG5hbWUgPSByZS5zdWIociJb
XFddIiwgIl8iLCBuYW1lKQotICAgIE1BWFZBTCA9IDMwCi0gICAgaWYgbGVuKG5hbWUpID4gTUFY
VkFMOgotICAgICAgICBuYW1lID0gbmFtZVs6TUFYVkFMXQotICAgIHggPSB0bXBkaXJfZmFjdG9y
eS5ta3RlbXAobmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKLSAgICByZXR1cm4geApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC91bml0dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdW5p
dHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZGIzOTQ5NWUzOS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdW5pdHRlc3QucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwyMzcgKzAsMCBAQAotIiIiIGRpc2NvdmVyeSBhbmQgcnVubmluZyBvZiBzdGQt
bGlicmFyeSAidW5pdHRlc3QiIHN0eWxlIHRlc3RzLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHN5
cwotaW1wb3J0IHRyYWNlYmFjawotCi0jIGZvciB0cmFuc2ZlcnJpbmcgbWFya2VycwotaW1wb3J0
IF9weXRlc3QuX2NvZGUKLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCi1mcm9t
IF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwsIHNraXAsIHhmYWlsCi1mcm9tIF9weXRlc3Qu
cHl0aG9uIGltcG9ydCB0cmFuc2Zlcl9tYXJrZXJzLCBDbGFzcywgTW9kdWxlLCBGdW5jdGlvbgot
Ci0KLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2JqKToK
LSAgICAjIGhhcyB1bml0dGVzdCBiZWVuIGltcG9ydGVkIGFuZCBpcyBvYmogYSBzdWJjbGFzcyBv
ZiBpdHMgVGVzdENhc2U/Ci0gICAgdHJ5OgotICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhvYmos
IHN5cy5tb2R1bGVzWyJ1bml0dGVzdCJdLlRlc3RDYXNlKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJldHVybgotICAgICMgeWVzLCBzbyBsZXQn
cyBjb2xsZWN0IGl0Ci0gICAgcmV0dXJuIFVuaXRUZXN0Q2FzZShuYW1lLCBwYXJlbnQ9Y29sbGVj
dG9yKQotCi0KLWNsYXNzIFVuaXRUZXN0Q2FzZShDbGFzcyk6Ci0gICAgIyBtYXJrZXIgZm9yIGZp
eHR1cmVtYW5nZXIuZ2V0Zml4dHVyZWluZm8oKQotICAgICMgdG8gZGVjbGFyZSB0aGF0IG91ciBj
aGlsZHJlbiBkbyBub3Qgc3VwcG9ydCBmdW5jYXJncwotICAgIG5vZnVuY2FyZ3MgPSBUcnVlCi0K
LSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIGNscyA9IHNlbGYub2JqCi0gICAgICAgIGlm
IGdldGF0dHIoY2xzLCAnX191bml0dGVzdF9za2lwX18nLCBGYWxzZSk6Ci0gICAgICAgICAgICBy
ZXR1cm4gICMgc2tpcHBlZAotICAgICAgICBzZXR1cCA9IGdldGF0dHIoY2xzLCAnc2V0VXBDbGFz
cycsIE5vbmUpCi0gICAgICAgIGlmIHNldHVwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2V0
dXAoKQotICAgICAgICB0ZWFyZG93biA9IGdldGF0dHIoY2xzLCAndGVhckRvd25DbGFzcycsIE5v
bmUpCi0gICAgICAgIGlmIHRlYXJkb3duIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5h
ZGRmaW5hbGl6ZXIodGVhcmRvd24pCi0gICAgICAgIHN1cGVyKFVuaXRUZXN0Q2FzZSwgc2VsZiku
c2V0dXAoKQotCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgIGZyb20gdW5pdHRlc3Qg
aW1wb3J0IFRlc3RMb2FkZXIKLSAgICAgICAgY2xzID0gc2VsZi5vYmoKLSAgICAgICAgaWYgbm90
IGdldGF0dHIoY2xzLCAiX190ZXN0X18iLCBUcnVlKToKLSAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBzZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLnBhcnNlZmFjdG9yaWVzKHNlbGYsIHVu
aXR0ZXN0PVRydWUpCi0gICAgICAgIGxvYWRlciA9IFRlc3RMb2FkZXIoKQotICAgICAgICBtb2R1
bGUgPSBzZWxmLmdldHBhcmVudChNb2R1bGUpLm9iagotICAgICAgICBmb3VuZHNvbWV0aGluZyA9
IEZhbHNlCi0gICAgICAgIGZvciBuYW1lIGluIGxvYWRlci5nZXRUZXN0Q2FzZU5hbWVzKHNlbGYu
b2JqKToKLSAgICAgICAgICAgIHggPSBnZXRhdHRyKHNlbGYub2JqLCBuYW1lKQotICAgICAgICAg
ICAgaWYgbm90IGdldGF0dHIoeCwgJ19fdGVzdF9fJywgVHJ1ZSk6Ci0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGZ1bmNvYmogPSBnZXRhdHRyKHgsICdpbV9mdW5jJywgeCkK
LSAgICAgICAgICAgIHRyYW5zZmVyX21hcmtlcnMoZnVuY29iaiwgY2xzLCBtb2R1bGUpCi0gICAg
ICAgICAgICB5aWVsZCBUZXN0Q2FzZUZ1bmN0aW9uKG5hbWUsIHBhcmVudD1zZWxmKQotICAgICAg
ICAgICAgZm91bmRzb21ldGhpbmcgPSBUcnVlCi0KLSAgICAgICAgaWYgbm90IGZvdW5kc29tZXRo
aW5nOgotICAgICAgICAgICAgcnVudGVzdCA9IGdldGF0dHIoc2VsZi5vYmosICdydW5UZXN0Jywg
Tm9uZSkKLSAgICAgICAgICAgIGlmIHJ1bnRlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgdXQgPSBzeXMubW9kdWxlcy5nZXQoInR3aXN0ZWQudHJpYWwudW5pdHRlc3QiLCBOb25lKQot
ICAgICAgICAgICAgICAgIGlmIHV0IGlzIE5vbmUgb3IgcnVudGVzdCAhPSB1dC5UZXN0Q2FzZS5y
dW5UZXN0OgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBUZXN0Q2FzZUZ1bmN0aW9uKCdydW5U
ZXN0JywgcGFyZW50PXNlbGYpCi0KLQotY2xhc3MgVGVzdENhc2VGdW5jdGlvbihGdW5jdGlvbik6
Ci0gICAgX2V4Y2luZm8gPSBOb25lCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIHNl
bGYuX3Rlc3RjYXNlID0gc2VsZi5wYXJlbnQub2JqKHNlbGYubmFtZSkKLSAgICAgICAgc2VsZi5f
Zml4X3VuaXR0ZXN0X3NraXBfZGVjb3JhdG9yKCkKLSAgICAgICAgc2VsZi5fb2JqID0gZ2V0YXR0
cihzZWxmLl90ZXN0Y2FzZSwgc2VsZi5uYW1lKQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX3Rl
c3RjYXNlLCAnc2V0dXBfbWV0aG9kJyk6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS5zZXR1
cF9tZXRob2Qoc2VsZi5fb2JqKQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJfcmVxdWVzdCIp
OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkKLQotICAgIGRlZiBf
Zml4X3VuaXR0ZXN0X3NraXBfZGVjb3JhdG9yKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAg
VGhlIEB1bml0dGVzdC5za2lwIGRlY29yYXRvciBjYWxscyBmdW5jdG9vbHMud3JhcHMoc2VsZi5f
dGVzdGNhc2UpCi0gICAgICAgIFRoZSBjYWxsIHRvIGZ1bmN0b29scy53cmFwcygpIGZhaWxzIHVu
bGVzcyBzZWxmLl90ZXN0Y2FzZQotICAgICAgICBoYXMgYSBfX25hbWVfXyBhdHRyaWJ1dGUuIFRo
aXMgaXMgdXN1YWxseSBhdXRvbWF0aWNhbGx5IHN1cHBsaWVkCi0gICAgICAgIGlmIHRoZSB0ZXN0
IGlzIGEgZnVuY3Rpb24gb3IgbWV0aG9kLCBidXQgd2UgbmVlZCB0byBhZGQgbWFudWFsbHkKLSAg
ICAgICAgaGVyZS4KLQotICAgICAgICBTZWUgaXNzdWUgIzExNjkKLSAgICAgICAgIiIiCi0gICAg
ICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMjoKLSAgICAgICAgICAgIHNldGF0dHIoc2Vs
Zi5fdGVzdGNhc2UsICJfX25hbWVfXyIsIHNlbGYubmFtZSkKLQotICAgIGRlZiB0ZWFyZG93bihz
ZWxmKToKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLl90ZXN0Y2FzZSwgJ3RlYXJkb3duX21ldGhv
ZCcpOgotICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2UudGVhcmRvd25fbWV0aG9kKHNlbGYuX29i
aikKLSAgICAgICAgIyBBbGxvdyBnYXJiYWdlIGNvbGxlY3Rpb24gb24gVGVzdENhc2UgaW5zdGFu
Y2UgYXR0cmlidXRlcy4KLSAgICAgICAgc2VsZi5fdGVzdGNhc2UgPSBOb25lCi0gICAgICAgIHNl
bGYuX29iaiA9IE5vbmUKLQotICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdGNhc2UpOgotICAg
ICAgICBwYXNzCi0KLSAgICBkZWYgX2FkZGV4Y2luZm8oc2VsZiwgcmF3ZXhjaW5mbyk6Ci0gICAg
ICAgICMgdW53cmFwIHBvdGVudGlhbCBleGNlcHRpb24gaW5mbyAoc2VlIHR3aXN0ZWQgdHJpYWwg
c3VwcG9ydCBiZWxvdykKLSAgICAgICAgcmF3ZXhjaW5mbyA9IGdldGF0dHIocmF3ZXhjaW5mbywg
J19yYXdleGNpbmZvJywgcmF3ZXhjaW5mbykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhj
aW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbyhyYXdleGNpbmZvKQotICAgICAgICBl
eGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24o
KnJhd2V4Y2luZm8pCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5pbnNlcnQoMCwgIk5PVEU6
IEluY29tcGF0aWJsZSBFeGNlcHRpb24gUmVwcmVzZW50YXRpb24sICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGlzcGxheWluZyBuYXRpdmVseTpcblxuIikKLSAgICAgICAg
ICAgICAgICAgICAgZmFpbCgiIi5qb2luKHZhbHVlcyksIHB5dHJhY2U9RmFsc2UpCi0gICAgICAg
ICAgICAgICAgZXhjZXB0IChmYWlsLkV4Y2VwdGlvbiwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGV4Y2VwdDogICMgbm9xYQot
ICAgICAgICAgICAgICAgICAgICBmYWlsKCJFUlJPUjogVW5rbm93biBJbmNvbXBhdGlibGUgRXhj
ZXB0aW9uICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVwcmVzZW50YXRpb246XG4lciIg
JSAocmF3ZXhjaW5mbywpLCBweXRyYWNlPUZhbHNlKQotICAgICAgICAgICAgZXhjZXB0IEtleWJv
YXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQg
ZmFpbC5FeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUu
RXhjZXB0aW9uSW5mbygpCi0gICAgICAgIHNlbGYuX19kaWN0X18uc2V0ZGVmYXVsdCgnX2V4Y2lu
Zm8nLCBbXSkuYXBwZW5kKGV4Y2luZm8pCi0KLSAgICBkZWYgYWRkRXJyb3Ioc2VsZiwgdGVzdGNh
c2UsIHJhd2V4Y2luZm8pOgotICAgICAgICBzZWxmLl9hZGRleGNpbmZvKHJhd2V4Y2luZm8pCi0K
LSAgICBkZWYgYWRkRmFpbHVyZShzZWxmLCB0ZXN0Y2FzZSwgcmF3ZXhjaW5mbyk6Ci0gICAgICAg
IHNlbGYuX2FkZGV4Y2luZm8ocmF3ZXhjaW5mbykKLQotICAgIGRlZiBhZGRTa2lwKHNlbGYsIHRl
c3RjYXNlLCByZWFzb24pOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBza2lwKHJlYXNvbikK
LSAgICAgICAgZXhjZXB0IHNraXAuRXhjZXB0aW9uOgotICAgICAgICAgICAgc2VsZi5fc2tpcHBl
ZF9ieV9tYXJrID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5fYWRkZXhjaW5mbyhzeXMuZXhjX2lu
Zm8oKSkKLQotICAgIGRlZiBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgdGVzdGNhc2UsIHJhd2V4
Y2luZm8sIHJlYXNvbj0iIik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHhmYWlsKHN0cihy
ZWFzb24pKQotICAgICAgICBleGNlcHQgeGZhaWwuRXhjZXB0aW9uOgotICAgICAgICAgICAgc2Vs
Zi5fYWRkZXhjaW5mbyhzeXMuZXhjX2luZm8oKSkKLQotICAgIGRlZiBhZGRVbmV4cGVjdGVkU3Vj
Y2VzcyhzZWxmLCB0ZXN0Y2FzZSwgcmVhc29uPSIiKToKLSAgICAgICAgc2VsZi5fdW5leHBlY3Rl
ZHN1Y2Nlc3MgPSByZWFzb24KLQotICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3RjYXNlKToK
LSAgICAgICAgcGFzcwotCi0gICAgZGVmIHN0b3BUZXN0KHNlbGYsIHRlc3RjYXNlKToKLSAgICAg
ICAgcGFzcwotCi0gICAgZGVmIF9oYW5kbGVfc2tpcChzZWxmKToKLSAgICAgICAgIyBpbXBsZW1l
bnRzIHRoZSBza2lwcGluZyBtYWNoaW5lcnkgKHNlZSAjMjEzNykKLSAgICAgICAgIyBhbmFsb2cg
dG8gcHl0aG9ucyBMaWIvdW5pdHRlc3QvY2FzZS5weTpydW4KLSAgICAgICAgdGVzdE1ldGhvZCA9
IGdldGF0dHIoc2VsZi5fdGVzdGNhc2UsIHNlbGYuX3Rlc3RjYXNlLl90ZXN0TWV0aG9kTmFtZSkK
LSAgICAgICAgaWYgKGdldGF0dHIoc2VsZi5fdGVzdGNhc2UuX19jbGFzc19fLCAiX191bml0dGVz
dF9za2lwX18iLCBGYWxzZSkgb3IKLSAgICAgICAgICAgICAgICBnZXRhdHRyKHRlc3RNZXRob2Qs
ICJfX3VuaXR0ZXN0X3NraXBfXyIsIEZhbHNlKSk6Ci0gICAgICAgICAgICAjIElmIHRoZSBjbGFz
cyBvciBtZXRob2Qgd2FzIHNraXBwZWQuCi0gICAgICAgICAgICBza2lwX3doeSA9IChnZXRhdHRy
KHNlbGYuX3Rlc3RjYXNlLl9fY2xhc3NfXywgJ19fdW5pdHRlc3Rfc2tpcF93aHlfXycsICcnKSBv
cgotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cih0ZXN0TWV0aG9kLCAnX191bml0dGVz
dF9za2lwX3doeV9fJywgJycpKQotICAgICAgICAgICAgdHJ5OiAgIyBQWTMsIHVuaXR0ZXN0MiBv
biBQWTIKLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS5fYWRkU2tpcChzZWxmLCBzZWxm
Ll90ZXN0Y2FzZSwgc2tpcF93aHkpCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOiAgIyBQ
WTIKLSAgICAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdICE9IDI6Ci0gICAgICAg
ICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2UuX2FkZFNr
aXAoc2VsZiwgc2tpcF93aHkpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgIGRlZiBydW50ZXN0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNvbmZp
Zy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInBkYmludm9rZSIpIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBzZWxmLl90ZXN0Y2FzZShyZXN1bHQ9c2VsZikKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICMgZGlzYWJsZXMgdGVhckRvd24gYW5kIGNsZWFudXBzIGZvciBwb3N0IG1vcnRlbSBkZWJ1
Z2dpbmcgKHNlZSAjMTg5MCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRsZV9za2lwKCk6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS5kZWJ1Zygp
Ci0KLSAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBGdW5j
dGlvbi5fcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbykKLSAgICAgICAgdHJhY2ViYWNrID0g
ZXhjaW5mby50cmFjZWJhY2suZmlsdGVyKAotICAgICAgICAgICAgbGFtYmRhIHg6IG5vdCB4LmZy
YW1lLmZfZ2xvYmFscy5nZXQoJ19fdW5pdHRlc3QnKSkKLSAgICAgICAgaWYgdHJhY2ViYWNrOgot
ICAgICAgICAgICAgZXhjaW5mby50cmFjZWJhY2sgPSB0cmFjZWJhY2sKLQotCi1AaG9va2ltcGwo
dHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwp
OgotICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgVGVzdENhc2VGdW5jdGlvbik6Ci0gICAgICAgIGlm
IGl0ZW0uX2V4Y2luZm86Ci0gICAgICAgICAgICBjYWxsLmV4Y2luZm8gPSBpdGVtLl9leGNpbmZv
LnBvcCgwKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlbCBjYWxsLnJlc3Vs
dAotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBh
c3MKLQotIyB0d2lzdGVkIHRyaWFsIHN1cHBvcnQKLQotCi1AaG9va2ltcGwoaG9va3dyYXBwZXI9
VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9wcm90b2NvbChpdGVtKToKLSAgICBpZiBpc2luc3Rh
bmNlKGl0ZW0sIFRlc3RDYXNlRnVuY3Rpb24pIGFuZCBcCi0gICAgICAgJ3R3aXN0ZWQudHJpYWwu
dW5pdHRlc3QnIGluIHN5cy5tb2R1bGVzOgotICAgICAgICB1dCA9IHN5cy5tb2R1bGVzWyd0d2lz
dGVkLnB5dGhvbi5mYWlsdXJlJ10KLSAgICAgICAgRmFpbHVyZV9faW5pdF9fID0gdXQuRmFpbHVy
ZS5fX2luaXRfXwotICAgICAgICBjaGVja190ZXN0Y2FzZV9pbXBsZW1lbnRzX3RyaWFsX3JlcG9y
dGVyKCkKLQotICAgICAgICBkZWYgZXhjc3RvcmUoc2VsZiwgZXhjX3ZhbHVlPU5vbmUsIGV4Y190
eXBlPU5vbmUsIGV4Y190Yj1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZVZhcnM9
Tm9uZSk6Ci0gICAgICAgICAgICBpZiBleGNfdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9yYXdleGNpbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgaWYgZXhjX3R5cGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAg
ZXhjX3R5cGUgPSB0eXBlKGV4Y192YWx1ZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9yYXdleGNp
bmZvID0gKGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YikKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBGYWlsdXJlX19pbml0X18oc2VsZiwgZXhjX3ZhbHVlLCBleGNfdHlwZSwg
ZXhjX3RiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlVmFycz1jYXB0
dXJlVmFycykKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAg
RmFpbHVyZV9faW5pdF9fKHNlbGYsIGV4Y192YWx1ZSwgZXhjX3R5cGUsIGV4Y190YikKLQotICAg
ICAgICB1dC5GYWlsdXJlLl9faW5pdF9fID0gZXhjc3RvcmUKLSAgICAgICAgeWllbGQKLSAgICAg
ICAgdXQuRmFpbHVyZS5fX2luaXRfXyA9IEZhaWx1cmVfX2luaXRfXwotICAgIGVsc2U6Ci0gICAg
ICAgIHlpZWxkCi0KLQotZGVmIGNoZWNrX3Rlc3RjYXNlX2ltcGxlbWVudHNfdHJpYWxfcmVwb3J0
ZXIoZG9uZT1bXSk6Ci0gICAgaWYgZG9uZToKLSAgICAgICAgcmV0dXJuCi0gICAgZnJvbSB6b3Bl
LmludGVyZmFjZSBpbXBvcnQgY2xhc3NJbXBsZW1lbnRzCi0gICAgZnJvbSB0d2lzdGVkLnRyaWFs
Lml0cmlhbCBpbXBvcnQgSVJlcG9ydGVyCi0gICAgY2xhc3NJbXBsZW1lbnRzKFRlc3RDYXNlRnVu
Y3Rpb24sIElSZXBvcnRlcikKLSAgICBkb25lLmFwcGVuZCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGVmYzBjOTEwZi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19f
aW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NhcHR1
cmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZWJ1Z2dpbmcucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2RlcHJlY2F0ZWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RvY3Rlc3Qu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2ZpeHR1cmVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9mcmVlemVfc3VwcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvaGVscGNvbmZpZy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvaG9va3NwZWMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2p1
bml0eG1sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9sb2dnaW5nLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9tYWluLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYXJrLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9tb25rZXlwYXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvbm9kZXMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L291dGNv
bWVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9wYXN0ZWJpbi5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19w
eXRlc3QvcHl0ZXN0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5dGhvbi5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvcHl0aG9uX2FwaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVjd2Fy
bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVzdWx0bG9nLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9ydW5uZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NldHVwb25seS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3Qvc2V0dXBwbGFuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9za2lwcGlu
Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdGVybWluYWwucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3RtcGRpci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdW5pdHRlc3QucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L3dhcm5pbmdzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0
L3dhcm5pbmdzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC93YXJuaW5ncy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2MyYjE5MTRmYjY5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvX3B5dGVzdC93YXJuaW5ncy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAg
QEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLQotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNv
bnRleHRtYW5hZ2VyCi0KLWltcG9ydCBweXRlc3QKLQotZnJvbSBfcHl0ZXN0IGltcG9ydCBjb21w
YXQKLQotCi1kZWYgX3NldG9wdGlvbih3bW9kLCBhcmcpOgotICAgICIiIgotICAgIENvcHkgb2Yg
dGhlIHdhcm5pbmcuX3NldG9wdGlvbiBmdW5jdGlvbiBidXQgZG9lcyBub3QgZXNjYXBlIGFyZ3Vt
ZW50cy4KLSAgICAiIiIKLSAgICBwYXJ0cyA9IGFyZy5zcGxpdCgnOicpCi0gICAgaWYgbGVuKHBh
cnRzKSA+IDU6Ci0gICAgICAgIHJhaXNlIHdtb2QuX09wdGlvbkVycm9yKCJ0b28gbWFueSBmaWVs
ZHMgKG1heCA1KTogJXIiICUgKGFyZywpKQotICAgIHdoaWxlIGxlbihwYXJ0cykgPCA1OgotICAg
ICAgICBwYXJ0cy5hcHBlbmQoJycpCi0gICAgYWN0aW9uLCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9k
dWxlLCBsaW5lbm8gPSBbcy5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gcGFydHNdCi0gICAgYWN0aW9uID0gd21vZC5fZ2V0
YWN0aW9uKGFjdGlvbikKLSAgICBjYXRlZ29yeSA9IHdtb2QuX2dldGNhdGVnb3J5KGNhdGVnb3J5
KQotICAgIGlmIGxpbmVubzoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbGluZW5vID0gaW50
KGxpbmVubykKLSAgICAgICAgICAgIGlmIGxpbmVubyA8IDA6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcgotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3Ip
OgotICAgICAgICAgICAgcmFpc2Ugd21vZC5fT3B0aW9uRXJyb3IoImludmFsaWQgbGluZW5vICVy
IiAlIChsaW5lbm8sKSkKLSAgICBlbHNlOgotICAgICAgICBsaW5lbm8gPSAwCi0gICAgd21vZC5m
aWx0ZXJ3YXJuaW5ncyhhY3Rpb24sIG1lc3NhZ2UsIGNhdGVnb3J5LCBtb2R1bGUsIGxpbmVubykK
LQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdl
dGdyb3VwKCJweXRlc3Qtd2FybmluZ3MiKQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAg
Jy1XJywgJy0tcHl0aG9ud2FybmluZ3MnLCBhY3Rpb249J2FwcGVuZCcsCi0gICAgICAgIGhlbHA9
InNldCB3aGljaCB3YXJuaW5ncyB0byByZXBvcnQsIHNlZSAtVyBvcHRpb24gb2YgcHl0aG9uIGl0
c2VsZi4iKQotICAgIHBhcnNlci5hZGRpbmkoImZpbHRlcndhcm5pbmdzIiwgdHlwZT0ibGluZWxp
c3QiLAotICAgICAgICAgICAgICAgICAgaGVscD0iRWFjaCBsaW5lIHNwZWNpZmllcyBhIHBhdHRl
cm4gZm9yICIKLSAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncy4gIgot
ICAgICAgICAgICAgICAgICAgIlByb2Nlc3NlZCBhZnRlciAtVyBhbmQgLS1weXRob253YXJuaW5n
cy4iKQotCi0KLUBjb250ZXh0bWFuYWdlcgotZGVmIGNhdGNoX3dhcm5pbmdzX2Zvcl9pdGVtKGl0
ZW0pOgotICAgICIiIgotICAgIGNhdGNoZXMgdGhlIHdhcm5pbmdzIGdlbmVyYXRlZCBkdXJpbmcg
c2V0dXAvY2FsbC90ZWFyZG93biBleGVjdXRpb24KLSAgICBvZiB0aGUgZ2l2ZW4gaXRlbSBhbmQg
YWZ0ZXIgaXQgaXMgZG9uZSBwb3N0cyB0aGVtIGFzIHdhcm5pbmdzIHRvIHRoaXMKLSAgICBpdGVt
LgotICAgICIiIgotICAgIGFyZ3MgPSBpdGVtLmNvbmZpZy5nZXRvcHRpb24oJ3B5dGhvbndhcm5p
bmdzJykgb3IgW10KLSAgICBpbmlmaWx0ZXJzID0gaXRlbS5jb25maWcuZ2V0aW5pKCJmaWx0ZXJ3
YXJuaW5ncyIpCi0gICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkg
YXMgbG9nOgotICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICB3YXJuaW5ncy5f
c2V0b3B0aW9uKGFyZykKLQotICAgICAgICBmb3IgYXJnIGluIGluaWZpbHRlcnM6Ci0gICAgICAg
ICAgICBfc2V0b3B0aW9uKHdhcm5pbmdzLCBhcmcpCi0KLSAgICAgICAgbWFyayA9IGl0ZW0uZ2V0
X21hcmtlcignZmlsdGVyd2FybmluZ3MnKQotICAgICAgICBpZiBtYXJrOgotICAgICAgICAgICAg
Zm9yIGFyZyBpbiBtYXJrLmFyZ3M6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuX3NldG9wdGlv
bihhcmcpCi0KLSAgICAgICAgeWllbGQKLQotICAgICAgICBmb3Igd2FybmluZyBpbiBsb2c6Ci0g
ICAgICAgICAgICB3YXJuX21zZyA9IHdhcm5pbmcubWVzc2FnZQotICAgICAgICAgICAgdW5pY29k
ZV93YXJuaW5nID0gRmFsc2UKLQotICAgICAgICAgICAgaWYgY29tcGF0Ll9QWTIgYW5kIGFueShp
c2luc3RhbmNlKG0sIGNvbXBhdC5VTklDT0RFX1RZUEVTKSBmb3IgbSBpbiB3YXJuX21zZy5hcmdz
KToKLSAgICAgICAgICAgICAgICBuZXdfYXJncyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIG0g
aW4gd2Fybl9tc2cuYXJnczoKLSAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ3MuYXBwZW5kKGNv
bXBhdC5hc2NpaV9lc2NhcGVkKG0pIGlmIGlzaW5zdGFuY2UobSwgY29tcGF0LlVOSUNPREVfVFlQ
RVMpIGVsc2UgbSkKLSAgICAgICAgICAgICAgICB1bmljb2RlX3dhcm5pbmcgPSBsaXN0KHdhcm5f
bXNnLmFyZ3MpICE9IG5ld19hcmdzCi0gICAgICAgICAgICAgICAgd2Fybl9tc2cuYXJncyA9IG5l
d19hcmdzCi0KLSAgICAgICAgICAgIG1zZyA9IHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcoCi0gICAg
ICAgICAgICAgICAgd2Fybl9tc2csIHdhcm5pbmcuY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAg
d2FybmluZy5maWxlbmFtZSwgd2FybmluZy5saW5lbm8sIHdhcm5pbmcubGluZSkKLSAgICAgICAg
ICAgIGl0ZW0ud2FybigidW51c2VkIiwgbXNnKQotCi0gICAgICAgICAgICBpZiB1bmljb2RlX3dh
cm5pbmc6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAg
ICAgIldhcm5pbmcgaXMgdXNpbmcgdW5pY29kZSBub24gY29udmVydGlibGUgdG8gYXNjaWksICIK
LSAgICAgICAgICAgICAgICAgICAgImNvbnZlcnRpbmcgdG8gYSBzYWZlIHJlcHJlc2VudGF0aW9u
OlxuICAlcyIgJSBtc2csCi0gICAgICAgICAgICAgICAgICAgIFVuaWNvZGVXYXJuaW5nKQotCi0K
LUBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9w
cm90b2NvbChpdGVtKToKLSAgICB3aXRoIGNhdGNoX3dhcm5pbmdzX2Zvcl9pdGVtKGl0ZW0pOgot
ICAgICAgICB5aWVsZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYXBwdmV5b3IueW1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvYXBwdmV5b3IueW1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODA4
ZmE2ZDkxYTkuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9hcHB2ZXlvci55bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1lbnZpcm9ubWVudDoKLSAgQ09WRVJBTExTX1JF
UE9fVE9LRU46Ci0gICAgc2VjdXJlOiAyTko1Q3Q1NWNISjlXRWczeGJTcUN1djByZGd6emI2cG56
T0lHNU9rTWJUbmR3M3dPQnJYbnRXRm9RclhpTUZpCi0gICAgIyB0aGlzIGlzIHB5dGVzdCdzIHRv
a2VuIGluIGNvdmVyYWxscy5pbywgZW5jcnlwdGVkCi0gICAgIyB1c2luZyBweXRlc3Rib3QgYWNj
b3VudCBhcyBkZXRhaWxlZCBoZXJlOgotICAgICMgaHR0cHM6Ly93d3cuYXBwdmV5b3IuY29tL2Rv
Y3MvYnVpbGQtY29uZmlndXJhdGlvbiNzZWN1cmUtdmFyaWFibGVzCi0KLSAgbWF0cml4OgotICAj
IGNvdmVyYWxscyBpcyBub3QgaW4gdGhlIGRlZmF1bHQgZW52IGxpc3QKLSAgLSBUT1hFTlY6ICJj
b3ZlcmFsbHMiCi0gICMgbm90ZTogcGxlYXNlIHVzZSAidG94IC0tbGlzdGVudnMiIHRvIHBvcHVs
YXRlIHRoZSBidWlsZCBtYXRyaXggYmVsb3cKLSAgLSBUT1hFTlY6ICJsaW50aW5nIgotICAtIFRP
WEVOVjogInB5MjciCi0gIC0gVE9YRU5WOiAicHkzNCIKLSAgLSBUT1hFTlY6ICJweTM1IgotICAt
IFRPWEVOVjogInB5MzYiCi0gIC0gVE9YRU5WOiAicHlweSIKLSAgLSBUT1hFTlY6ICJweTI3LXBl
eHBlY3QiCi0gIC0gVE9YRU5WOiAicHkyNy14ZGlzdCIKLSAgLSBUT1hFTlY6ICJweTI3LXRyaWFs
IgotICAtIFRPWEVOVjogInB5MjctbnVtcHkiCi0gIC0gVE9YRU5WOiAicHkyNy1wbHVnZ3ltYXN0
ZXIiCi0gIC0gVE9YRU5WOiAicHkzNi1wZXhwZWN0IgotICAtIFRPWEVOVjogInB5MzYteGRpc3Qi
Ci0gIC0gVE9YRU5WOiAicHkzNi10cmlhbCIKLSAgLSBUT1hFTlY6ICJweTM2LW51bXB5IgotICAt
IFRPWEVOVjogInB5MzYtcGx1Z2d5bWFzdGVyIgotICAtIFRPWEVOVjogInB5Mjctbm9ieXRlIgot
ICAtIFRPWEVOVjogImRvY3Rlc3RpbmciCi0gIC0gVE9YRU5WOiAicHkzNS1mcmVlemUiCi0gIC0g
VE9YRU5WOiAiZG9jcyIKLQotaW5zdGFsbDoKLSAgLSBlY2hvIEluc3RhbGxlZCBQeXRob25zCi0g
IC0gZGlyIGM6XFB5dGhvbioKLQotICAtIGlmICIlVE9YRU5WJSIgPT0gInB5cHkiIGNhbGwgc2Ny
aXB0c1xpbnN0YWxsLXB5cHkuYmF0Ci0KLSAgLSBDOlxQeXRob24zNlxweXRob24gLW0gcGlwIGlu
c3RhbGwgLS11cGdyYWRlIC0tcHJlIHRveAotCi1idWlsZDogZmFsc2UgICMgTm90IGEgQyMgcHJv
amVjdCwgYnVpbGQgc3R1ZmYgYXQgdGhlIHRlc3Qgc3RlcCBpbnN0ZWFkLgotCi10ZXN0X3Njcmlw
dDoKLSAgLSBjYWxsIHNjcmlwdHNcY2FsbC10b3guYmF0Ci0KLWNhY2hlOgotICAtICclTE9DQUxB
UFBEQVRBJVxwaXBcY2FjaGUnCi0gIC0gJyVVU0VSUFJPRklMRSVcLmNhY2hlXHByZS1jb21taXQn
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9iZW5jaC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Jl
bmNoL2JlbmNoLnB5CmluZGV4IDRlNzI0NDRlN2Q3YS4uYzQwZmM4NjM2YzBjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9iZW5jaC9iZW5jaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9iZW5j
aC5weQpAQCAtNSw4ICs1LDggQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBv
cnQgcHl0ZXN0ICAjIE5PUUEKICAgICBpbXBvcnQgcHN0YXRzCiAKLSAgICBzY3JpcHQgPSBzeXMu
YXJndlsxOl0gaWYgbGVuKHN5cy5hcmd2KSA+IDEgZWxzZSAiZW1wdHkucHkiCi0gICAgc3RhdHMg
PSBjUHJvZmlsZS5ydW4oInB5dGVzdC5jbWRsaW5lLm1haW4oJXIpIiAlIHNjcmlwdCwgInByb2Yi
KQorICAgIHNjcmlwdCA9IHN5cy5hcmd2WzE6XSBpZiBsZW4oc3lzLmFyZ3YpID4gMSBlbHNlIFsi
ZW1wdHkucHkiXQorICAgIGNQcm9maWxlLnJ1bigicHl0ZXN0LmNtZGxpbmUubWFpbiglcikiICUg
c2NyaXB0LCAicHJvZiIpCiAgICAgcCA9IHBzdGF0cy5TdGF0cygicHJvZiIpCiAgICAgcC5zdHJp
cF9kaXJzKCkKICAgICBwLnNvcnRfc3RhdHMoImN1bXVsYXRpdmUiKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvYmVuY2gvYmVuY2hfYXJnY29tcGxldGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9i
ZW5jaF9hcmdjb21wbGV0ZS5weQppbmRleCA0OTVlMmM0ZWQzYjEuLjMzNTczM2RmNzJiNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvYmVuY2hfYXJnY29tcGxldGUucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvYmVuY2gvYmVuY2hfYXJnY29tcGxldGUucHkKQEAgLTEsMTAgKzEsNyBAQAotCi0K
ICMgMTAwMDAgaXRlcmF0aW9ucywganVzdCBmb3IgcmVsYXRpdmUgY29tcGFyaXNvbgogIyAgICAg
ICAgICAgICAgICAgICAgICAyLjcuNSAgICAgMy4zLjIKICMgRmlsZXNDb21wbGV0ZXIgICAgICAg
NzUuMTEwOSAgIDY5LjIxMTYKICMgRmFzdEZpbGVzQ29tcGxldGVyICAgIDAuNzM4MyAgICAxLjA3
NjAKLQogaW1wb3J0IHRpbWVpdAogCiBpbXBvcnRzID0gWwpAQCAtMTksNCArMTYsNCBAQCBydW4g
PSAnZmMoIi9kIiknCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgcHJpbnQodGlt
ZWl0LnRpbWVpdChydW4sIHNldHVwPXNldHVwICUgaW1wb3J0c1swXSwgbnVtYmVyPWNvdW50KSkK
LSAgICBwcmludCgodGltZWl0LnRpbWVpdChydW4sIHNldHVwPXNldHVwICUgaW1wb3J0c1sxXSwg
bnVtYmVyPWNvdW50KSkpCisgICAgcHJpbnQodGltZWl0LnRpbWVpdChydW4sIHNldHVwPXNldHVw
ICUgaW1wb3J0c1sxXSwgbnVtYmVyPWNvdW50KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Jl
bmNoL2VtcHR5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvZW1wdHkucHkKaW5kZXggYjkwMzE5OTM2
YjNlLi40ZTczNzFiNmY4MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL2VtcHR5LnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL2VtcHR5LnB5CkBAIC0xLDQgKzEsMiBAQAotaW1wb3J0
IHB5Ci0KIGZvciBpIGluIHJhbmdlKDEwMDApOgotICAgIHB5LmJ1aWx0aW4uZXhlY18oImRlZiB0
ZXN0X2Z1bmNfJWQoKTogcGFzcyIgJSBpKQorICAgIGV4ZWMoImRlZiB0ZXN0X2Z1bmNfJWQoKTog
cGFzcyIgJSBpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvbWFueXBhcmFtLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvYmVuY2gvbWFueXBhcmFtLnB5CmluZGV4IGEyNWIwOThkZTg2OC4uMTIyNmM3
M2JkOWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9tYW55cGFyYW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvYmVuY2gvbWFueXBhcmFtLnB5CkBAIC0xLDQgKzEsMyBAQAotCiBpbXBvcnQg
cHl0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvc2tpcC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2JlbmNoL3NraXAucHkKaW5kZXggYjEwNWU3OWY4MmViLi5mMGM5ZDFkZGJlZmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL3NraXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVu
Y2gvc2tpcC5weQpAQCAtMSw3ICsxLDUgQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQog
aW1wb3J0IHB5dGVzdAogCi0KIFNLSVAgPSBUcnVlCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvYmVuY2gvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc3MjdhNzc3NDNhLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9iZW5jaC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2JlbmNoL2JlbmNoX2FyZ2NvbXBsZXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gv
ZW1wdHkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9tYW55cGFyYW0ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9i
ZW5jaC9za2lwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvUkVBRE1FLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxvZy9SRUFETUUucnN0CmluZGV4IGUzNGJkNGRhMjY3Yy4u
NmQwMjZmNTdlZjNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvUkVBRE1FLnJz
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvUkVBRE1FLnJzdApAQCAtMSwyMCArMSwyNCBA
QAogVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgIm5ld3NmcmFnbWVudHMiIHdoaWNoIGFyZSBzaG9y
dCBmaWxlcyB0aGF0IGNvbnRhaW4gYSBzbWFsbCAqKlJlU1QqKi1mb3JtYXR0ZWQKIHRleHQgdGhh
dCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBuZXh0IGBgQ0hBTkdFTE9HYGAuCiAKLVRoZSBgYENIQU5H
RUxPR2BgIHdpbGwgYmUgcmVhZCBieSB1c2Vycywgc28gdGhpcyBkZXNjcmlwdGlvbiBzaG91bGQg
YmUgYWltZWQgdG8gcHl0ZXN0IHVzZXJzCitUaGUgYGBDSEFOR0VMT0dgYCB3aWxsIGJlIHJlYWQg
YnkgKip1c2VycyoqLCBzbyB0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBhaW1lZCB0byBweXRl
c3QgdXNlcnMKIGluc3RlYWQgb2YgZGVzY3JpYmluZyBpbnRlcm5hbCBjaGFuZ2VzIHdoaWNoIGFy
ZSBvbmx5IHJlbGV2YW50IHRvIHRoZSBkZXZlbG9wZXJzLgogCi1NYWtlIHN1cmUgdG8gdXNlIGZ1
bGwgc2VudGVuY2VzIHdpdGggY29ycmVjdCBjYXNlIGFuZCBwdW5jdHVhdGlvbiwgZm9yIGV4YW1w
bGU6OgorTWFrZSBzdXJlIHRvIHVzZSBmdWxsIHNlbnRlbmNlcyBpbiB0aGUgKipwYXN0IG9yIHBy
ZXNlbnQgdGVuc2UqKiBhbmQgdXNlIHB1bmN0dWF0aW9uLCBleGFtcGxlczo6CiAKLSAgICBGaXgg
aXNzdWUgd2l0aCBub24tYXNjaWkgbWVzc2FnZXMgZnJvbSB0aGUgYGB3YXJuaW5nc2BgIG1vZHVs
ZS4KKyAgICBJbXByb3ZlZCB2ZXJib3NlIGRpZmYgb3V0cHV0IHdpdGggc2VxdWVuY2VzLgorCisg
ICAgVGVybWluYWwgc3VtbWFyeSBzdGF0aXN0aWNzIG5vdyB1c2UgbXVsdGlwbGUgY29sb3JzLgog
CiBFYWNoIGZpbGUgc2hvdWxkIGJlIG5hbWVkIGxpa2UgYGA8SVNTVUU+LjxUWVBFPi5yc3RgYCwg
d2hlcmUKIGBgPElTU1VFPmBgIGlzIGFuIGlzc3VlIG51bWJlciwgYW5kIGBgPFRZUEU+YGAgaXMg
b25lIG9mOgogCiAqIGBgZmVhdHVyZWBgOiBuZXcgdXNlciBmYWNpbmcgZmVhdHVyZXMsIGxpa2Ug
bmV3IGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBuZXcgYmVoYXZpb3IuCi0qIGBgYnVnZml4YGA6
IGZpeGVzIGEgcmVwb3J0ZWQgYnVnLgorKiBgYGltcHJvdmVtZW50YGA6IGltcHJvdmVtZW50IG9m
IGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHksIHVzdWFsbHkgd2l0aG91dCByZXF1aXJpbmcgdXNlciBp
bnRlcnZlbnRpb24gKGZvciBleGFtcGxlLCBuZXcgZmllbGRzIGJlaW5nIHdyaXR0ZW4gaW4gYGAt
LWp1bml0eG1sYGAsIGltcHJvdmVkIGNvbG9ycyBpbiB0ZXJtaW5hbCwgZXRjKS4KKyogYGBidWdm
aXhgYDogZml4ZXMgYSBidWcuCiAqIGBgZG9jYGA6IGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnQs
IGxpa2UgcmV3b3JkaW5nIGFuIGVudGlyZSBzZXNzaW9uIG9yIGFkZGluZyBtaXNzaW5nIGRvY3Mu
Ci0qIGBgcmVtb3ZhbGBgOiBmZWF0dXJlIGRlcHJlY2F0aW9uIG9yIHJlbW92YWwuCisqIGBgZGVw
cmVjYXRpb25gYDogZmVhdHVyZSBkZXByZWNhdGlvbi4KKyogYGBicmVha2luZ2BgOiBhIGNoYW5n
ZSB3aGljaCBtYXkgYnJlYWsgZXhpc3Rpbmcgc3VpdGVzLCBzdWNoIGFzIGZlYXR1cmUgcmVtb3Zh
bCBvciBiZWhhdmlvciBjaGFuZ2UuCiAqIGBgdmVuZG9yYGA6IGNoYW5nZXMgaW4gcGFja2FnZXMg
dmVuZG9yZWQgaW4gcHl0ZXN0LgogKiBgYHRyaXZpYWxgYDogZml4aW5nIGEgc21hbGwgdHlwbyBv
ciBpbnRlcm5hbCBjaGFuZ2UgdGhhdCBtaWdodCBiZSBub3Rld29ydGh5LgogCkBAIC0yNiw3ICsz
MCw4IEBAIGNoYW5nZWxvZyB1c2luZyB0aGF0IGluc3RlYWQuCiAKIElmIHlvdSBhcmUgbm90IHN1
cmUgd2hhdCBpc3N1ZSB0eXBlIHRvIHVzZSwgZG9uJ3QgaGVzaXRhdGUgdG8gYXNrIGluIHlvdXIg
UFIuCiAKLU5vdGUgdGhhdCB0aGUgYGB0b3duY3JpZXJgYCB0b29sIHdpbGwgYXV0b21hdGljYWxs
eQotcmVmbG93IHlvdXIgdGV4dCwgc28gaXQgd2lsbCB3b3JrIGJlc3QgaWYgeW91IHN0aWNrIHRv
IGEgc2luZ2xlIHBhcmFncmFwaCwgYnV0IG11bHRpcGxlIHNlbnRlbmNlcyBhbmQgbGlua3MgYXJl
IE9LCi1hbmQgZW5jb3VyYWdlZC4gWW91IGNhbiBpbnN0YWxsIGBgdG93bmNyaWVyYGAgYW5kIHRo
ZW4gcnVuIGBgdG93bmNyaWVyIC0tZHJhZnRgYAotaWYgeW91IHdhbnQgdG8gZ2V0IGEgcHJldmll
dyBvZiBob3cgeW91ciBjaGFuZ2Ugd2lsbCBsb29rIGluIHRoZSBmaW5hbCByZWxlYXNlIG5vdGVz
LgorYGB0b3duY3JpZXJgYCBwcmVzZXJ2ZXMgbXVsdGlwbGUgcGFyYWdyYXBocyBhbmQgZm9ybWF0
dGluZyAoY29kZSBibG9ja3MsIGxpc3RzLCBhbmQgc28gb24pLCBidXQgZm9yIGVudHJpZXMKK290
aGVyIHRoYW4gYGBmZWF0dXJlc2BgIGl0IGlzIHVzdWFsbHkgYmV0dGVyIHRvIHN0aWNrIHRvIGEg
c2luZ2xlIHBhcmFncmFwaCB0byBrZWVwIGl0IGNvbmNpc2UuCisKK1lvdSBjYW4gYWxzbyBydW4g
YGB0b3ggLWUgZG9jc2BgIHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCit3aXRoIHRoZSBkcmFm
dCBjaGFuZ2Vsb2cgKGBgZG9jL2VuL19idWlsZC9odG1sL2NoYW5nZWxvZy5odG1sYGApIGlmIHlv
dSB3YW50IHRvIGdldCBhIHByZXZpZXcgb2YgaG93IHlvdXIgY2hhbmdlIHdpbGwgbG9vayBpbiB0
aGUgZmluYWwgcmVsZWFzZSBub3Rlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxv
Zy9fdGVtcGxhdGUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvY2hhbmdlbG9nL190ZW1wbGF0ZS5yc3QKaW5k
ZXggYTg5OGFiYzE1YWYxLi41ZGU0YWU5N2VhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2No
YW5nZWxvZy9fdGVtcGxhdGUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxvZy9fdGVtcGxh
dGUucnN0CkBAIC0xNCw3ICsxNCw3IEBACiB7JSBpZiBkZWZpbml0aW9uc1tjYXRlZ29yeV1bJ3No
b3djb250ZW50J10gJX0KIHslIGZvciB0ZXh0LCB2YWx1ZXMgaW4gc2VjdGlvbnNbc2VjdGlvbl1b
Y2F0ZWdvcnldfGRpY3Rzb3J0KGJ5PSd2YWx1ZScpICV9CiB7JSBzZXQgaXNzdWVfam9pbmVyID0g
am9pbmVyKCcsICcpICV9Ci0tIHt7IHRleHQgfX17JSBpZiBjYXRlZ29yeSAhPSAndmVuZG9yJyAl
fSAoeyUgZm9yIHZhbHVlIGluIHZhbHVlc3xzb3J0ICV9e3sgaXNzdWVfam9pbmVyKCkgfX1ge3sg
dmFsdWUgfX0gPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMve3sg
dmFsdWVbMTpdIH19PmBfeyUgZW5kZm9yICV9KXslIGVuZGlmICV9CistIHslIGZvciB2YWx1ZSBp
biB2YWx1ZXN8c29ydCAlfXt7IGlzc3VlX2pvaW5lcigpIH19YHt7IHZhbHVlIH19IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzL3t7IHZhbHVlWzE6XSB9fT5gX3sl
IGVuZGZvciAlfToge3sgdGV4dCB9fQogCiAKIHslIGVuZGZvciAlfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvY2hhbmdlbG9nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvY2hhbmdlbG9n
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzk5MTZhYTVl
ZTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9j
aGFuZ2Vsb2cvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxvZy9fdGVtcGxhdGUucnN0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jb2RlY292LnltbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NvZGVj
b3YueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjFjYzg2OTcz
Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvY29kZWNvdi55bWwKQEAgLTAsMCAr
MSw2IEBACisjIHJlZmVyZW5jZTogaHR0cHM6Ly9kb2NzLmNvZGVjb3YuaW8vZG9jcy9jb2RlY292
eW1sLXJlZmVyZW5jZQorY292ZXJhZ2U6CisgIHN0YXR1czoKKyAgICBwYXRjaDogdHJ1ZQorICAg
IHByb2plY3Q6IGZhbHNlCitjb21tZW50OiBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL01ha2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL01ha2VmaWxlCmluZGV4IGZhOGU4
MjY2YTI5ZS4uMWNmZmJkNDYzZDg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vTWFr
ZWZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL01ha2VmaWxlCkBAIC0xLDE1MCArMSwzOSBA
QAotIyBNYWtlZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMgTWluaW1hbCBtYWtlZmls
ZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KICMKIAotIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJp
YWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotU1BISU5YT1BUUyAgICA9Ci1TUEhJTlhCVUlM
RCAgID0gc3BoaW54LWJ1aWxkCi1QQVBFUiAgICAgICAgID0KKyMgWW91IGNhbiBzZXQgdGhlc2Ug
dmFyaWFibGVzIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYW5kIGFsc28KKyMgZnJvbSB0aGUgZW52
aXJvbm1lbnQgZm9yIHRoZSBmaXJzdCB0d28uCitTUEhJTlhPUFRTICAgID89CitTUEhJTlhCVUlM
RCAgID89IHNwaGlueC1idWlsZAorU09VUkNFRElSICAgICA9IC4KIEJVSUxERElSICAgICAgPSBf
YnVpbGQKIAotIyBJbnRlcm5hbCB2YXJpYWJsZXMuCi1QQVBFUk9QVF9hNCAgICAgPSAtRCBsYXRl
eF9wYXBlcl9zaXplPWE0Ci1QQVBFUk9QVF9sZXR0ZXIgPSAtRCBsYXRleF9wYXBlcl9zaXplPWxl
dHRlcgotQUxMU1BISU5YT1BUUyAgID0gLWQgJChCVUlMRERJUikvZG9jdHJlZXMgJChQQVBFUk9Q
VF8kKFBBUEVSKSkgJChTUEhJTlhPUFRTKSAuCisjIFB1dCBpdCBmaXJzdCBzbyB0aGF0ICJtYWtl
IiB3aXRob3V0IGFyZ3VtZW50IGlzIGxpa2UgIm1ha2UgaGVscCIuCitoZWxwOgorCUAkKFNQSElO
WEJVSUxEKSAtTSBoZWxwICIkKFNPVVJDRURJUikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRT
KSAkKE8pCisKKy5QSE9OWTogaGVscCBNYWtlZmlsZQorCisjIENhdGNoLWFsbCB0YXJnZXQ6IHJv
dXRlIGFsbCB1bmtub3duIHRhcmdldHMgdG8gU3BoaW54IHVzaW5nIHRoZSBuZXcKKyMgIm1ha2Ug
bW9kZSIgb3B0aW9uLiAgJChPKSBpcyBtZWFudCBhcyBhIHNob3J0Y3V0IGZvciAkKFNQSElOWE9Q
VFMpLgorJTogTWFrZWZpbGUKKwlAJChTUEhJTlhCVUlMRCkgLU0gJEAgIiQoU09VUkNFRElSKSIg
IiQoQlVJTERESVIpIiAkKFNQSElOWE9QVFMpICQoTykKKwogCiBSRUdFTkRPQ19BUkdTIDo9IFwK
LQktLW5vcm1hbGl6ZSAiL2luIFxkKy5cZCsgc2Vjb25kcy9pbiAwLjEyIHNlY29uZHMvIiBcCisJ
LS1ub3JtYWxpemUgIi9bIFx0XStcbi9cbi8iIFwKKwktLW5vcm1hbGl6ZSAiflwkJFJFR0VORE9D
X1RNUERJUn4vaG9tZS9zd2VldC9wcm9qZWN0fiIgXAorCS0tbm9ybWFsaXplICJ+L3BhdGgvdG8v
ZXhhbXBsZX4vaG9tZS9zd2VldC9wcm9qZWN0fiIgXAorCS0tbm9ybWFsaXplICIvaW4gXGQuXGRc
ZHMvaW4gMC4xMnMvIiBcCiAJLS1ub3JtYWxpemUgIkAvdG1wL3B5dGVzdC1vZi0uKi9weXRlc3Qt
XGQrQFBZVEVTVF9UTVBESVJAIiBcCiAJLS1ub3JtYWxpemUgIkBweXRlc3QtKFxkKylcXC5bXiAs
XStAcHl0ZXN0LVwxLngueUAiIFwKLQktLW5vcm1hbGl6ZSAiQChUaGlzIGlzIHB5dGVzdCB2ZXJz
aW9uICkoXGQrKVxcLlteICxdK0BcMVwyLngueUAiIFwKIAktLW5vcm1hbGl6ZSAiQHB5LShcZCsp
XFwuW14gLF0rQHB5LVwxLngueUAiIFwKIAktLW5vcm1hbGl6ZSAiQHBsdWdneS0oXGQrKVxcLlsu
XGQsXStAcGx1Z2d5LVwxLngueUAiIFwKIAktLW5vcm1hbGl6ZSAiQGh5cG90aGVzaXMtKFxkKylc
XC5bLlxkLF0rQGh5cG90aGVzaXMtXDEueC55QCIgXAogCS0tbm9ybWFsaXplICJAUHl0aG9uIChc
ZCspXFwuW14gLF0rQFB5dGhvbiBcMS54LnlAIgogCi0uUEhPTlk6IGhlbHAgY2xlYW4gaHRtbCBk
aXJodG1sIHNpbmdsZWh0bWwgcGlja2xlIGpzb24gaHRtbGhlbHAgcXRoZWxwIGRldmhlbHAgZXB1
YiBsYXRleCBsYXRleHBkZiB0ZXh0IG1hbiBjaGFuZ2VzIGxpbmtjaGVjayBkb2N0ZXN0Ci0KLQot
aGVscDoKLQlAZWNobyAiUGxlYXNlIHVzZSBcYG1ha2UgPHRhcmdldD4nIHdoZXJlIDx0YXJnZXQ+
IGlzIG9uZSBvZiIKLQlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1M
IGZpbGVzIgotCUBlY2hvICIgIGxhdGV4cGRmICAgdG8gbWFrZSBMYVRlWCBmaWxlcyBhbmQgcnVu
IHRoZW0gdGhyb3VnaCBwZGZsYXRleCIKLQlAZWNobyAiICBzaG93dGFyZ2V0IHRvIHNob3cgdGhl
IHB5dGVzdC5vcmcgdGFyZ2V0IGRpcmVjdG9yeSIKLQlAZWNobyAiICBpbnN0YWxsICAgIHRvIGlu
c3RhbGwgZG9jcyB0byBweXRlc3Qub3JnL1NJVEVUQVJHRVQiCi0JQGVjaG8gIiAgaW5zdGFsbC1s
ZGYgdG8gaW5zdGFsbCB0aGUgZG9jIHBkZiB0byBweXRlc3Qub3JnL1NJVEVUQVJHRVQiCi0JQGVj
aG8gIiAgcmVnZW4gICAgICB0byByZWdlbmVyYXRlIHB5dGVzdCBleGFtcGxlcyB1c2luZyB0aGUg
aW5zdGFsbGVkIHB5dGVzdCIKLQlAZWNobyAiICBsaW5rY2hlY2sgIHRvIGNoZWNrIGFsbCBleHRl
cm5hbCBsaW5rcyBmb3IgaW50ZWdyaXR5IgotCi1jbGVhbjoKLQktcm0gLXJmICQoQlVJTERESVIp
LyoKLQorcmVnZW46IFJFR0VORE9DX0ZJTEVTOj0qLnJzdCAqLyoucnN0CiByZWdlbjoKLQlQWVRI
T05ET05UV1JJVEVCWVRFQ09ERT0xIFBZVEVTVF9BRERPUFQ9LXBubzpoeXBvdGhlc2lzIENPTFVN
TlM9NzYgcmVnZW5kb2MgLS11cGRhdGUgKi5yc3QgKi8qLnJzdCAke1JFR0VORE9DX0FSR1N9Ci0K
LWh0bWw6Ci0JJChTUEhJTlhCVUlMRCkgLWIgaHRtbCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERE
SVIpL2h0bWwKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZXMg
YXJlIGluICQoQlVJTERESVIpL2h0bWwuIgotCi1kaXJodG1sOgotCSQoU1BISU5YQlVJTEQpIC1i
IGRpcmh0bWwgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9kaXJodG1sCi0JQGVjaG8KLQlA
ZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9k
aXJodG1sLiIKLQotc2luZ2xlaHRtbDoKLQkkKFNQSElOWEJVSUxEKSAtYiBzaW5nbGVodG1sICQo
QUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvc2luZ2xlaHRtbAotCUBlY2hvCi0JQGVjaG8gIkJ1
aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlIGlzIGluICQoQlVJTERESVIpL3NpbmdsZWh0bWwu
IgotCi1waWNrbGU6Ci0JJChTUEhJTlhCVUlMRCkgLWIgcGlja2xlICQoQUxMU1BISU5YT1BUUykg
JChCVUlMRERJUikvcGlja2xlCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5
b3UgY2FuIHByb2Nlc3MgdGhlIHBpY2tsZSBmaWxlcy4iCi0KLWpzb246Ci0JJChTUEhJTlhCVUlM
RCkgLWIganNvbiAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2pzb24KLQlAZWNobwotCUBl
Y2hvICJCdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcHJvY2VzcyB0aGUgSlNPTiBmaWxlcy4i
Ci0KLWh0bWxoZWxwOgotCSQoU1BISU5YQlVJTEQpIC1iIGh0bWxoZWxwICQoQUxMU1BISU5YT1BU
UykgJChCVUlMRERJUikvaHRtbGhlbHAKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsg
bm93IHlvdSBjYW4gcnVuIEhUTUwgSGVscCBXb3Jrc2hvcCB3aXRoIHRoZSIgXAotCSAgICAgICIu
aGhwIHByb2plY3QgZmlsZSBpbiAkKEJVSUxERElSKS9odG1saGVscC4iCi0KLXF0aGVscDoKLQkk
KFNQSElOWEJVSUxEKSAtYiBxdGhlbHAgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9xdGhl
bHAKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcnVuICJxY29s
bGVjdGlvbmdlbmVyYXRvciIgd2l0aCB0aGUiIFwKLQkgICAgICAiLnFoY3AgcHJvamVjdCBmaWxl
IGluICQoQlVJTERESVIpL3F0aGVscCwgbGlrZSB0aGlzOiIKLQlAZWNobyAiIyBxY29sbGVjdGlv
bmdlbmVyYXRvciAkKEJVSUxERElSKS9xdGhlbHAvcHl0ZXN0LnFoY3AiCi0JQGVjaG8gIlRvIHZp
ZXcgdGhlIGhlbHAgZmlsZToiCi0JQGVjaG8gIiMgYXNzaXN0YW50IC1jb2xsZWN0aW9uRmlsZSAk
KEJVSUxERElSKS9xdGhlbHAvcHl0ZXN0LnFoYyIKLQotZGV2aGVscDoKLQkkKFNQSElOWEJVSUxE
KSAtYiBkZXZoZWxwICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZGV2aGVscAotCUBlY2hv
Ci0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiIKLQlAZWNobyAiVG8gdmlldyB0aGUgaGVscCBmaWxl
OiIKLQlAZWNobyAiIyBta2RpciAtcCAkJEhPTUUvLmxvY2FsL3NoYXJlL2RldmhlbHAvcHl0ZXN0
IgotCUBlY2hvICIjIGxuIC1zICQoQlVJTERESVIpL2RldmhlbHAgJCRIT01FLy5sb2NhbC9zaGFy
ZS9kZXZoZWxwL3B5dGVzdCIKLQlAZWNobyAiIyBkZXZoZWxwIgotCi1lcHViOgotCSQoU1BISU5Y
QlVJTEQpIC1iIGVwdWIgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9lcHViCi0JQGVjaG8K
LQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBlcHViIGZpbGUgaXMgaW4gJChCVUlMRERJUikv
ZXB1Yi4iCi0KLWxhdGV4OgotCSQoU1BISU5YQlVJTEQpIC1iIGxhdGV4ICQoQUxMU1BISU5YT1BU
UykgJChCVUlMRERJUikvbGF0ZXgKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsgdGhl
IExhVGVYIGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS9sYXRleC4iCi0JQGVjaG8gIlJ1biBcYG1h
a2UnIGluIHRoYXQgZGlyZWN0b3J5IHRvIHJ1biB0aGVzZSB0aHJvdWdoIChwZGYpbGF0ZXgiIFwK
LQkgICAgICAiKHVzZSBcYG1ha2UgbGF0ZXhwZGYnIGhlcmUgdG8gZG8gdGhhdCBhdXRvbWF0aWNh
bGx5KS4iCi0KLWxhdGV4cGRmOgotCSQoU1BISU5YQlVJTEQpIC1iIGxhdGV4ICQoQUxMU1BISU5Y
T1BUUykgJChCVUlMRERJUikvbGF0ZXgKLQlAZWNobyAiUnVubmluZyBMYVRlWCBmaWxlcyB0aHJv
dWdoIHBkZmxhdGV4Li4uIgotCW1ha2UgLUMgJChCVUlMRERJUikvbGF0ZXggYWxsLXBkZgotCUBl
Y2hvICJwZGZsYXRleCBmaW5pc2hlZDsgdGhlIFBERiBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikv
bGF0ZXguIgotCi10ZXh0OgotCSQoU1BISU5YQlVJTEQpIC1iIHRleHQgJChBTExTUEhJTlhPUFRT
KSAkKEJVSUxERElSKS90ZXh0Ci0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSB0
ZXh0IGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS90ZXh0LiIKLQotbWFuOgotCSQoU1BISU5YQlVJ
TEQpIC1iIG1hbiAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL21hbgotCUBlY2hvCi0JQGVj
aG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgbWFudWFsIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9t
YW4uIgotCi1jaGFuZ2VzOgotCSQoU1BISU5YQlVJTEQpIC1iIGNoYW5nZXMgJChBTExTUEhJTlhP
UFRTKSAkKEJVSUxERElSKS9jaGFuZ2VzCi0JQGVjaG8KLQlAZWNobyAiVGhlIG92ZXJ2aWV3IGZp
bGUgaXMgaW4gJChCVUlMRERJUikvY2hhbmdlcy4iCi0KLWxpbmtjaGVjazoKLQkkKFNQSElOWEJV
SUxEKSAtYiBsaW5rY2hlY2sgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9saW5rY2hlY2sK
LQlAZWNobwotCUBlY2hvICJMaW5rIGNoZWNrIGNvbXBsZXRlOyBsb29rIGZvciBhbnkgZXJyb3Jz
IGluIHRoZSBhYm92ZSBvdXRwdXQgIiBcCi0JICAgICAgIm9yIGluICQoQlVJTERESVIpL2xpbmtj
aGVjay9vdXRwdXQudHh0LiIKLQotZG9jdGVzdDoKLQkkKFNQSElOWEJVSUxEKSAtYiBkb2N0ZXN0
ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZG9jdGVzdAotCUBlY2hvICJUZXN0aW5nIG9m
IGRvY3Rlc3RzIGluIHRoZSBzb3VyY2VzIGZpbmlzaGVkLCBsb29rIGF0IHRoZSAiIFwKLQkgICAg
ICAicmVzdWx0cyBpbiAkKEJVSUxERElSKS9kb2N0ZXN0L291dHB1dC50eHQuIgotCi10ZXhpbmZv
OgotCW1rZGlyIC1wICQoQlVJTERESVIpL3RleGluZm8KLQkkKFNQSElOWEJVSUxEKSAtYiB0ZXhp
bmZvICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvdGV4aW5mbwotCUBlY2hvCi0JQGVjaG8g
IkJ1aWxkIGZpbmlzaGVkLiBUaGUgVGV4aW5mbyBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4
aW5mby4iCi0JQGVjaG8gIlJ1biBcYG1ha2UnIGluIHRoYXQgZGlyZWN0b3J5IHRvIHJ1biB0aGVz
ZSB0aHJvdWdoIG1ha2VpbmZvIiBcCi0JICAgICAgIih1c2UgXGBtYWtlIGluZm8nIGhlcmUgdG8g
ZG8gdGhhdCBhdXRvbWF0aWNhbGx5KS4iCisJUFlUSE9ORE9OVFdSSVRFQllURUNPREU9MSBQWVRF
U1RfQURET1BUUz0iLXBubzpoeXBvdGhlc2lzIC1XaWdub3JlOjpweXRlc3QuUHl0ZXN0VW5rbm93
bk1hcmtXYXJuaW5nIiBDT0xVTU5TPTc2IHJlZ2VuZG9jIC0tdXBkYXRlICR7UkVHRU5ET0NfRklM
RVN9ICR7UkVHRU5ET0NfQVJHU30KIAotaW5mbzoKLQlta2RpciAtcCAkKEJVSUxERElSKS90ZXhp
bmZvCi0JJChTUEhJTlhCVUlMRCkgLWIgdGV4aW5mbyAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERE
SVIpL3RleGluZm8KLQlAZWNobyAiUnVubmluZyBUZXhpbmZvIGZpbGVzIHRocm91Z2ggbWFrZWlu
Zm8uLi4iCi0JbWFrZSAtQyAkKEJVSUxERElSKS90ZXhpbmZvIGluZm8KLQlAZWNobyAibWFrZWlu
Zm8gZmluaXNoZWQ7IHRoZSBJbmZvIGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS90ZXhpbmZvLiIK
Ky5QSE9OWTogcmVnZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVz
L2dsb2JhbHRvYy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvZ2xvYmFsdG9j
Lmh0bWwKaW5kZXggMGUwODhkNjdlZjM2Li40NTIyZWIyZGVjOWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2dsb2JhbHRvYy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9fdGVtcGxhdGVzL2dsb2JhbHRvYy5odG1sCkBAIC00LDEyICs0LDE1IEBACiAgIDxs
aT48YSBocmVmPSJ7eyBwYXRodG8oJ2luZGV4JykgfX0iPkhvbWU8L2E+PC9saT4KICAgPGxpPjxh
IGhyZWY9Int7IHBhdGh0bygnZ2V0dGluZy1zdGFydGVkJykgfX0iPkluc3RhbGw8L2E+PC9saT4K
ICAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygnY29udGVudHMnKSB9fSI+Q29udGVudHM8L2E+PC9s
aT4KLSAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygncmVmZXJlbmNlJykgfX0iPlJlZmVyZW5jZTwv
YT48L2xpPgorICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdyZWZlcmVuY2UnKSB9fSI+QVBJIFJl
ZmVyZW5jZTwvYT48L2xpPgogICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdleGFtcGxlL2luZGV4
JykgfX0iPkV4YW1wbGVzPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJ7eyBwYXRodG8oJ2N1c3Rv
bWl6ZScpIH19Ij5DdXN0b21pemU8L2E+PC9saT4KICAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygn
Y2hhbmdlbG9nJykgfX0iPkNoYW5nZWxvZzwvYT48L2xpPgogICA8bGk+PGEgaHJlZj0ie3sgcGF0
aHRvKCdjb250cmlidXRpbmcnKSB9fSI+Q29udHJpYnV0aW5nPC9hPjwvbGk+CiAgIDxsaT48YSBo
cmVmPSJ7eyBwYXRodG8oJ2JhY2t3YXJkcy1jb21wYXRpYmlsaXR5JykgfX0iPkJhY2t3YXJkcyBD
b21wYXRpYmlsaXR5PC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSJ7eyBwYXRodG8oJ3B5MjctcHkz
NC1kZXByZWNhdGlvbicpIH19Ij5QeXRob24gMi43IGFuZCAzLjQgU3VwcG9ydDwvYT48L2xpPgor
ICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdzcG9uc29yJykgfX0iPlNwb25zb3I8L2E+PC9saT4K
KyAgPGxpPjxhIGhyZWY9Int7IHBhdGh0bygndGlkZWxpZnQnKSB9fSI+cHl0ZXN0IGZvciBFbnRl
cnByaXNlPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJ7eyBwYXRodG8oJ2xpY2Vuc2UnKSB9fSI+
TGljZW5zZTwvYT48L2xpPgogICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdjb250YWN0JykgfX0i
PkNvbnRhY3QgQ2hhbm5lbHM8L2E+PC9saT4KIDwvdWw+CkBAIC0xOCwzICsyMSw3IEBACiAgIDxo
cj4KICAge3sgdG9jIH19CiB7JS0gZW5kaWYgJX0KKworPGhyPgorPGEgaHJlZj0ie3sgcGF0aHRv
KCdnZW5pbmRleCcpIH19Ij5JbmRleDwvYT4KKzxocj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9fdGVtcGxhdGVzL2xheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1w
bGF0ZXMvbGF5b3V0Lmh0bWwKaW5kZXggMmZjOGUyYTdmYjRjLi5mNzA5NmVhYWE1ZWYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2xheW91dC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2xheW91dC5odG1sCkBAIC0xLDIwICsxLDUyIEBA
Ci17JSBleHRlbmRzICIhbGF5b3V0Lmh0bWwiICV9Ci17JSBibG9jayBoZWFkZXIgJX0KLSAge3tz
dXBlcigpfX0KK3sjCisKKyAgICBDb3BpZWQgZnJvbToKKworICAgICBodHRwczovL3Jhdy5naXRo
dWJ1c2VyY29udGVudC5jb20vcGFsbGV0cy9wYWxsZXRzLXNwaGlueC10aGVtZXMvYjBjNmM0MTg0
OWI0ZTE1Y2JmNjJjYzFkOTVjMDVlZjJiM2UxNTVjOC9zcmMvcGFsbGV0c19zcGhpbnhfdGhlbWVz
L3RoZW1lcy9wb2Nvby9sYXlvdXQuaHRtbAorCisgICAgQW5kIHJlbW92ZWQgdGhlIHdhcm5pbmcg
dmVyc2lvbiAoc2VlICM3MzMxKS4KKworI30KKworeyUgZXh0ZW5kcyAiYmFzaWMvbGF5b3V0Lmh0
bWwiICV9CisKK3slIHNldCBtZXRhdGFncyAlfQorICB7ey0gbWV0YXRhZ3MgfX0KKyAgPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2Fs
ZT0xIj4KK3slLSBlbmRzZXQgJX0KKworeyUgYmxvY2sgZXh0cmFoZWFkICV9CisgIHslLSBpZiBw
YWdlX2Nhbm9uaWNhbF91cmwgJX0KKyAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0ie3sg
cGFnZV9jYW5vbmljYWxfdXJsIH19Ij4KKyAgeyUtIGVuZGlmICV9CisgIDxzY3JpcHQ+RE9DVU1F
TlRBVElPTl9PUFRJT05TLlVSTF9ST09UID0gJ3t7IHVybF9yb290IH19Jzs8L3NjcmlwdD4KKyAg
e3sgc3VwZXIoKSB9fQoreyUtIGVuZGJsb2NrICV9CisKK3slIGJsb2NrIHNpZGViYXJsb2dvICV9
CisgIHslIGlmIHBhZ2VuYW1lICE9ICJpbmRleCIgb3IgdGhlbWVfaW5kZXhfc2lkZWJhcl9sb2dv
ICV9CisgICAge3sgc3VwZXIoKSB9fQorICB7JSBlbmRpZiAlfQogeyUgZW5kYmxvY2sgJX0KLXsl
IGJsb2NrIGZvb3RlciAlfQote3sgc3VwZXIoKSB9fQotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogCi0gIHZhciBfZ2FxID0gX2dhcSB8fCBbXTsKLSAgX2dhcS5wdXNoKFsnX3NldEFj
Y291bnQnLCAnVUEtNzU5NzI3NC0xMyddKTsKLSAgX2dhcS5wdXNoKFsnX3RyYWNrUGFnZXZpZXcn
XSk7Cit7JSBibG9jayByZWxiYXIyICV9eyUgZW5kYmxvY2sgJX0KIAotICAoZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGdhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IGdhLnR5cGUg
PSAndGV4dC9qYXZhc2NyaXB0JzsgZ2EuYXN5bmMgPSB0cnVlOwotICAgIGdhLnNyYyA9ICgnaHR0
cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczovL3NzbCcgOiAnaHR0
cDovL3d3dycpICsgJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7Ci0gICAgdmFyIHMgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07IHMucGFyZW50Tm9kZS5p
bnNlcnRCZWZvcmUoZ2EsIHMpOwotICB9KSgpOworeyUgYmxvY2sgc2lkZWJhcjIgJX0KKyAgPHNw
YW4gaWQ9InNpZGViYXItdG9wIj48L3NwYW4+CisgIHt7LSBzdXBlcigpIH19Cit7JS0gZW5kYmxv
Y2sgJX0KIAotPC9zY3JpcHQ+Cit7JSBibG9jayBmb290ZXIgJX0KKyAge3sgc3VwZXIoKSB9fQor
ICB7JS0gaWYgUkVBRFRIRURPQ1MgYW5kIG5vdCByZWFkdGhlZG9jc19kb2NzZWFyY2ggJX0KKyAg
ICA8c2NyaXB0PgorICAgICAgaWYgKHR5cGVvZiBSRUFEVEhFRE9DU19EQVRBICE9PSAndW5kZWZp
bmVkJykgeworICAgICAgICBpZiAoIVJFQURUSEVET0NTX0RBVEEuZmVhdHVyZXMpIHsKKyAgICAg
ICAgICBSRUFEVEhFRE9DU19EQVRBLmZlYXR1cmVzID0ge307CisgICAgICAgIH0KKyAgICAgICAg
UkVBRFRIRURPQ1NfREFUQS5mZWF0dXJlcy5kb2NzZWFyY2hfZGlzYWJsZWQgPSB0cnVlOworICAg
ICAgfQorICAgIDwvc2NyaXB0PgorICB7JS0gZW5kaWYgJX0KKyAge3sganNfdGFnKCJfc3RhdGlj
L3ZlcnNpb25fd2FybmluZ19vZmZzZXQuanMiKSB9fQogeyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3JlbGF0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvcmVsYXRpb25zLmh0bWwKc2ltaWxhcml0eSBpbmRl
eCAxMDAlCnJlbmFtZSBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3JlbGF0
aW9ucy5odG1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy9yZWxhdGlv
bnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvc2xpbV9z
ZWFyY2hib3guaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL3NsaW1fc2VhcmNo
Ym94Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lOThhZDRl
ZDkwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy9z
bGltX3NlYXJjaGJveC5odG1sCkBAIC0wLDAgKzEsMTUgQEAKK3sjCisgICAgYmFzaWMvc2VhcmNo
Ym94Lmh0bWwgd2l0aCBoZWFkaW5nIHJlbW92ZWQuCisjfQoreyUtIGlmIHBhZ2VuYW1lICE9ICJz
ZWFyY2giIGFuZCBidWlsZGVyICE9ICJzaW5nbGVodG1sIiAlfQorPGRpdiBpZD0ic2VhcmNoYm94
IiBzdHlsZT0iZGlzcGxheTogbm9uZSIgcm9sZT0ic2VhcmNoIj4KKyAgPGRpdiBjbGFzcz0ic2Vh
cmNoZm9ybXdyYXBwZXIiPgorICAgIDxmb3JtIGNsYXNzPSJzZWFyY2giIGFjdGlvbj0ie3sgcGF0
aHRvKCdzZWFyY2gnKSB9fSIgbWV0aG9kPSJnZXQiPgorICAgICAgPGlucHV0IHR5cGU9InRleHQi
IG5hbWU9InEiIGFyaWEtbGFiZWxsZWRieT0ic2VhcmNobGFiZWwiCisgICAgICAgIHBsYWNlaG9s
ZGVyPSJTZWFyY2giLz4KKyAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJ7eyBfKCdH
bycpIH19IiAvPgorICAgIDwvZm9ybT4KKyAgPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4kKCcjc2VhcmNoYm94Jykuc2hvdygwKTs8L3NjcmlwdD4KK3slLSBl
bmRpZiAlfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQzNjYwNGI0YTUzLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3Rl
bXBsYXRlcy9nbG9iYWx0b2MuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2xh
eW91dC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvbGlua3MuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL3NpZGViYXJpbnRyby5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L190aGVtZXMvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRhYWI3ZWU2
ZWZlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvTElDRU5T
RQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUNvcHlyaWdodCAoYykgMjAxMCBieSBB
cm1pbiBSb25hY2hlci4KLQotU29tZSByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMgb2YgdGhlIHRoZW1lLCB3aXRoIG9y
Ci13aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLQotKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZwotICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQKLSAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0qIFRoZSBuYW1lcyBvZiB0
aGUgY29udHJpYnV0b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yCi0gIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYwotICBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVdlIGtpbmRseSBhc2sgeW91IHRvIG9ubHkgdXNl
IHRoZXNlIHRoZW1lcyBpbiBhbiB1bm1vZGlmaWVkIG1hbm5lciBqdXN0Ci1mb3IgRmxhc2sgYW5k
IEZsYXNrLXJlbGF0ZWQgcHJvZHVjdHMsIG5vdCBmb3IgdW5yZWxhdGVkIHByb2plY3RzLiAgSWYg
eW91Ci1saWtlIHRoZSB2aXN1YWwgc3R5bGUgYW5kIHdhbnQgdG8gdXNlIGl0IGZvciB5b3VyIG93
biBwcm9qZWN0cywgcGxlYXNlCi1jb25zaWRlciBtYWtpbmcgc29tZSBsYXJnZXIgY2hhbmdlcyB0
byB0aGUgdGhlbWVzIChzdWNoIGFzIGNoYW5naW5nCi1mb250IGZhY2VzLCBzaXplcywgY29sb3Jz
IG9yIG1hcmdpbnMpLgotCi1USElTIFRIRU1FIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLUlNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCi1BUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKLUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1T
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgVEhFTUUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKLVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL190aGVtZXMvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvUkVB
RE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzI5MmJkZmY4ZWQuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9SRUFETUUKKysrIC9kZXYvbnVs
bApAQCAtMSwzMSArMCwwIEBACi1GbGFzayBTcGhpbnggU3R5bGVzCi09PT09PT09PT09PT09PT09
PT09Ci0KLVRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBzcGhpbnggc3R5bGVzIGZvciBGbGFzayBh
bmQgRmxhc2sgcmVsYXRlZAotcHJvamVjdHMuICBUbyB1c2UgdGhpcyBzdHlsZSBpbiB5b3VyIFNw
aGlueCBkb2N1bWVudGF0aW9uLCBmb2xsb3cKLXRoaXMgZ3VpZGU6Ci0KLTEuIHB1dCB0aGlzIGZv
bGRlciBhcyBfdGhlbWVzIGludG8geW91ciBkb2NzIGZvbGRlci4gIEFsdGVybmF0aXZlbHkKLSAg
IHlvdSBjYW4gYWxzbyB1c2UgZ2l0IHN1Ym1vZHVsZXMgdG8gY2hlY2sgb3V0IHRoZSBjb250ZW50
cyB0aGVyZS4KLTIuIGFkZCB0aGlzIHRvIHlvdXIgY29uZi5weToKLQotICAgc3lzLnBhdGguYXBw
ZW5kKG9zLnBhdGguYWJzcGF0aCgnX3RoZW1lcycpKQotICAgaHRtbF90aGVtZV9wYXRoID0gWydf
dGhlbWVzJ10KLSAgIGh0bWxfdGhlbWUgPSAnZmxhc2snCi0KLVRoZSBmb2xsb3dpbmcgdGhlbWVz
IGV4aXN0OgotCi0tICdmbGFzaycgLSB0aGUgc3RhbmRhcmQgZmxhc2sgZG9jdW1lbnRhdGlvbiB0
aGVtZSBmb3IgbGFyZ2UKLSAgcHJvamVjdHMKLS0gJ2ZsYXNrX3NtYWxsJyAtIHNtYWxsIG9uZS1w
YWdlIHRoZW1lLiAgSW50ZW5kZWQgdG8gYmUgdXNlZCBieQotICB2ZXJ5IHNtYWxsIGFkZG9uIGxp
YnJhcmllcyBmb3IgZmxhc2suCi0KLVRoZSBmb2xsb3dpbmcgb3B0aW9ucyBleGlzdCBmb3IgdGhl
IGZsYXNrX3NtYWxsIHRoZW1lOgotCi0gICBbb3B0aW9uc10KLSAgIGluZGV4X2xvZ28gPSAnJyAg
ICAgICAgICAgICAgZmlsZW5hbWUgb2YgYSBwaWN0dXJlIGluIF9zdGF0aWMKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBhcyByZXBsYWNlbWVudCBmb3IgdGhlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxIGluIHRoZSBpbmRleC5yc3QgZmlsZS4K
LSAgIGluZGV4X2xvZ29faGVpZ2h0ID0gMTIwcHggICAgaGVpZ2h0IG9mIHRoZSBpbmRleCBsb2dv
Ci0gICBnaXRodWJfZm9yayA9ICcnICAgICAgICAgICAgIHJlcG9zaXRvcnkgbmFtZSBvbiBnaXRo
dWIgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yayBtZSIgYmFk
Z2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL2xheW91dC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvZmxhc2svbGF5b3V0Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YzQzZmJiZWZjMS4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL2xheW91dC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMjQgKzAsMCBAQAoteyUtIGV4dGVuZHMgImJhc2ljL2xheW91dC5odG1sIiAlfQot
eyUtIGJsb2NrIGV4dHJhaGVhZCAlfQotICB7eyBzdXBlcigpIH19Ci0gIHslIGlmIHRoZW1lX3Rv
dWNoX2ljb24gJX0KLSAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSJ7eyBwYXRo
dG8oJ19zdGF0aWMvJyB+IHRoZW1lX3RvdWNoX2ljb24sIDEpIH19IiAvPgotICB7JSBlbmRpZiAl
fQotICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBp
bml0aWFsLXNjYWxlPTAuOSwgbWF4aW11bS1zY2FsZT0wLjkiPgoteyUgZW5kYmxvY2sgJX0KLXsl
LSBibG9jayByZWxiYXIyICV9eyUgZW5kYmxvY2sgJX0KLXslIGJsb2NrIGhlYWRlciAlfQotICB7
eyBzdXBlcigpIH19Ci0gIHslIGlmIHBhZ2VuYW1lID09ICdpbmRleCcgJX0KLSAgPGRpdiBjbGFz
cz1pbmRleHdyYXBwZXI+Ci0gIHslIGVuZGlmICV9Ci17JSBlbmRibG9jayAlfQoteyUtIGJsb2Nr
IGZvb3RlciAlfQotICA8ZGl2IGNsYXNzPSJmb290ZXIiPgotICAgICZjb3B5OyBDb3B5cmlnaHQg
e3sgY29weXJpZ2h0IH19LgotICAgIENyZWF0ZWQgdXNpbmcgPGEgaHJlZj0iaHR0cDovL3NwaGlu
eC5wb2Nvby5vcmcvIj5TcGhpbng8L2E+LgotICA8L2Rpdj4KLSAgeyUgaWYgcGFnZW5hbWUgPT0g
J2luZGV4JyAlfQotICA8L2Rpdj4KLSAgeyUgZW5kaWYgJX0KLXslLSBlbmRibG9jayAlfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvZmxhc2svc3RhdGljL2ZsYXNreS5j
c3NfdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRpYy9mbGFza3kuY3Nz
X3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNTkzZGEyOTlhOC4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRpYy9mbGFza3ku
Y3NzX3QKKysrIC9kZXYvbnVsbApAQCAtMSw1NTcgKzAsMCBAQAotLyoKLSAqIGZsYXNreS5jc3Nf
dAotICogfn5+fn5+fn5+fn5+Ci0gKgotICogOmNvcHlyaWdodDogQ29weXJpZ2h0IDIwMTAgYnkg
QXJtaW4gUm9uYWNoZXIuCi0gKiA6bGljZW5zZTogRmxhc2sgRGVzaWduIExpY2Vuc2UsIHNlZSBM
SUNFTlNFIGZvciBkZXRhaWxzLgotICovCi0KLXslIHNldCBwYWdlX3dpZHRoID0gJzEwMjBweCcg
JX0KLXslIHNldCBzaWRlYmFyX3dpZHRoID0gJzIyMHB4JyAlfQotLyogb3JhbmdlIG9mIGxvZ28g
aXMgI2Q2N2MyOSBidXQgd2UgdXNlIGJsYWNrIGZvciBsaW5rcyBmb3Igbm93ICovCi17JSBzZXQg
bGlua19jb2xvciA9ICcjMDAwJyAlfQoteyUgc2V0IGxpbmtfaG92ZXJfY29sb3IgPSAnIzAwMCcg
JX0KLXslIHNldCBiYXNlX2ZvbnQgPSAnc2Fucy1zZXJpZicgJX0KLXslIHNldCBoZWFkZXJfZm9u
dCA9ICdzZXJpZicgJX0KLQotQGltcG9ydCB1cmwoImJhc2ljLmNzcyIpOwotCi0vKiAtLSBwYWdl
IGxheW91dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAqLwotCi1ib2R5IHsKLSAgICBmb250LWZhbWlseToge3sgYmFzZV9mb250IH19
OwotICAgIGZvbnQtc2l6ZTogMTdweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLSAg
ICBjb2xvcjogIzAwMDsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotZGl2
LmRvY3VtZW50IHsKLSAgICB3aWR0aDoge3sgcGFnZV93aWR0aCB9fTsKLSAgICBtYXJnaW46IDMw
cHggYXV0byAwIGF1dG87Ci19Ci0KLWRpdi5kb2N1bWVudHdyYXBwZXIgewotICAgIGZsb2F0OiBs
ZWZ0OwotICAgIHdpZHRoOiAxMDAlOwotfQotCi1kaXYuYm9keXdyYXBwZXIgewotICAgIG1hcmdp
bjogMCAwIDAge3sgc2lkZWJhcl93aWR0aCB9fTsKLX0KLQotZGl2LnNwaGlueHNpZGViYXIgewot
ICAgIHdpZHRoOiB7eyBzaWRlYmFyX3dpZHRoIH19OwotfQotCi1ociB7Ci0gICAgYm9yZGVyOiAw
OwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQjFCNEI2OwotfQotCi1kaXYuYm9keSB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKLSAgICBjb2xvcjogIzNFNDM0OTsKLSAgICBw
YWRkaW5nOiAwIDMwcHggMCAzMHB4OwotfQotCi1pbWcuZmxvYXRpbmdmbGFzayB7Ci0gICAgcGFk
ZGluZzogMCAwIDEwcHggMTBweDsKLSAgICBmbG9hdDogcmlnaHQ7Ci19Ci0KLWRpdi5mb290ZXIg
ewotICAgIHdpZHRoOiB7eyBwYWdlX3dpZHRoIH19OwotICAgIG1hcmdpbjogMjBweCBhdXRvIDMw
cHggYXV0bzsKLSAgICBmb250LXNpemU6IDE0cHg7Ci0gICAgY29sb3I6ICM4ODg7Ci0gICAgdGV4
dC1hbGlnbjogcmlnaHQ7Ci19Ci0KLWRpdi5mb290ZXIgYSB7Ci0gICAgY29sb3I6ICM4ODg7Ci19
Ci0KLWRpdi5yZWxhdGVkIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi1kaXYuc3BoaW54c2lk
ZWJhciBhIHsKLSAgICBjb2xvcjogIzQ0NDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0g
ICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjOTk5OwotfQotCi1kaXYuc3BoaW54c2lkZWJh
ciBhOmhvdmVyIHsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzk5OTsKLX0KLQotZGl2
LnNwaGlueHNpZGViYXIgewotICAgIGZvbnQtc2l6ZTogMTRweDsKLSAgICBsaW5lLWhlaWdodDog
MS41OwotfQotCi1kaXYuc3BoaW54c2lkZWJhcndyYXBwZXIgewotICAgIHBhZGRpbmc6IDE4cHgg
MTBweDsKLX0KLQotZGl2LnNwaGlueHNpZGViYXJ3cmFwcGVyIHAubG9nbyB7Ci0gICAgcGFkZGlu
ZzogMCAwIDIwcHggMDsKLSAgICBtYXJnaW46IDA7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwot
fQotCi1kaXYuc3BoaW54c2lkZWJhciBoMywKLWRpdi5zcGhpbnhzaWRlYmFyIGg0IHsKLSAgICBm
b250LWZhbWlseToge3sgaGVhZGVyX2ZvbnQgfX07Ci0gICAgY29sb3I6ICM0NDQ7Ci0gICAgZm9u
dC1zaXplOiAyNHB4OwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgbWFyZ2luOiAwIDAg
NXB4IDA7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotZGl2LnNwaGlueHNpZGViYXIgaDQgewotICAg
IGZvbnQtc2l6ZTogMjBweDsKLX0KLQotZGl2LnNwaGlueHNpZGViYXIgaDMgYSB7Ci0gICAgY29s
b3I6ICM0NDQ7Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFyIHAubG9nbyBhLAotZGl2LnNwaGlueHNp
ZGViYXIgaDMgYSwKLWRpdi5zcGhpbnhzaWRlYmFyIHAubG9nbyBhOmhvdmVyLAotZGl2LnNwaGlu
eHNpZGViYXIgaDMgYTpob3ZlciB7Ci0gICAgYm9yZGVyOiBub25lOwotfQotCi1kaXYuc3BoaW54
c2lkZWJhciBwIHsKLSAgICBjb2xvcjogIzU1NTsKLSAgICBtYXJnaW46IDEwcHggMDsKLX0KLQot
ZGl2LnNwaGlueHNpZGViYXIgdWwgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIHBhZGRpbmc6
IDA7Ci0gICAgY29sb3I6ICMwMDA7Ci19Ci0KLWRpdi5zcGhpbnhzaWRlYmFyIGlucHV0IHsKLSAg
ICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwotICAgIGZvbnQtZmFtaWx5OiB7eyBiYXNlX2ZvbnQg
fX07Ci0gICAgZm9udC1zaXplOiAxZW07Ci19Ci0KLS8qIC0tIGJvZHkgc3R5bGVzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0K
LWEgewotICAgIGNvbG9yOiB7eyBsaW5rX2NvbG9yIH19OwotICAgIHRleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lOwotfQotCi1hOmhvdmVyIHsKLSAgICBjb2xvcjoge3sgbGlua19ob3Zlcl9jb2xv
ciB9fTsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLX0KLQotYS5yZWZlcmVuY2Uu
aW50ZXJuYWwgZW0gewotICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKLX0KLQotZGl2LmJvZHkgaDEs
Ci1kaXYuYm9keSBoMiwKLWRpdi5ib2R5IGgzLAotZGl2LmJvZHkgaDQsCi1kaXYuYm9keSBoNSwK
LWRpdi5ib2R5IGg2IHsKLSAgICBmb250LWZhbWlseToge3sgaGVhZGVyX2ZvbnQgfX07Ci0gICAg
Zm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICBtYXJnaW46IDMwcHggMHB4IDEwcHggMHB4OwotICAg
IHBhZGRpbmc6IDA7Ci19Ci0KLXslIGlmIHRoZW1lX2luZGV4X2xvZ28gJX0KLWRpdi5pbmRleHdy
YXBwZXIgaDEgewotICAgIHRleHQtaW5kZW50OiAtOTk5OTk5cHg7Ci0gICAgYmFja2dyb3VuZDog
dXJsKHt7IHRoZW1lX2luZGV4X2xvZ28gfX0pIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOwotICAg
IGhlaWdodDoge3sgdGhlbWVfaW5kZXhfbG9nb19oZWlnaHQgfX07Ci19Ci17JSBlbHNlICV9Ci1k
aXYuaW5kZXh3cmFwcGVyIGRpdi5ib2R5IGgxIHsKLSAgICBmb250LXNpemU6IDIwMCU7Ci19Ci17
JSBlbmRpZiAlfQotZGl2LmJvZHkgaDEgeyBtYXJnaW4tdG9wOiAwOyBwYWRkaW5nLXRvcDogMDsg
Zm9udC1zaXplOiAyNDAlOyB9Ci1kaXYuYm9keSBoMiB7IGZvbnQtc2l6ZTogMTgwJTsgfQotZGl2
LmJvZHkgaDMgeyBmb250LXNpemU6IDE1MCU7IH0KLWRpdi5ib2R5IGg0IHsgZm9udC1zaXplOiAx
MzAlOyB9Ci1kaXYuYm9keSBoNSB7IGZvbnQtc2l6ZTogMTAwJTsgfQotZGl2LmJvZHkgaDYgeyBm
b250LXNpemU6IDEwMCU7IH0KLQotYS5oZWFkZXJsaW5rIHsKLSAgICBjb2xvcjogI2RkZDsKLSAg
ICBwYWRkaW5nOiAwIDRweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLWEuaGVh
ZGVybGluazpob3ZlciB7Ci0gICAgY29sb3I6ICM0NDQ7Ci0gICAgYmFja2dyb3VuZDogI2VhZWFl
YTsKLX0KLQotZGl2LmJvZHkgcCwgZGl2LmJvZHkgZGQsIGRpdi5ib2R5IGxpIHsKLSAgICBsaW5l
LWhlaWdodDogMS40ZW07Ci19Ci0KLWRpdi5hZG1vbml0aW9uIHsKLSAgICBiYWNrZ3JvdW5kOiAj
ZmFmYWZhOwotICAgIG1hcmdpbjogMjBweCAtMzBweDsKLSAgICBwYWRkaW5nOiAxMHB4IDMwcHg7
Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4
IHNvbGlkICNjY2M7Ci19Ci0KLWRpdi5hZG1vbml0aW9uIHR0LnhyZWYsIGRpdi5hZG1vbml0aW9u
IGEgdHQgewotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmFmYWZhOwotfQotCi1kZCBk
aXYuYWRtb25pdGlvbiB7Ci0gICAgbWFyZ2luLWxlZnQ6IC02MHB4OwotICAgIHBhZGRpbmctbGVm
dDogNjBweDsKLX0KLQotZGl2LmFkbW9uaXRpb24gcC5hZG1vbml0aW9uLXRpdGxlIHsKLSAgICBm
b250LWZhbWlseToge3sgaGVhZGVyX2ZvbnQgfX07Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsK
LSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgbWFyZ2luOiAwIDAgMTBweCAwOwotICAgIHBhZGRp
bmc6IDA7Ci0gICAgbGluZS1oZWlnaHQ6IDE7Ci19Ci0KLWRpdi5hZG1vbml0aW9uIHAubGFzdCB7
Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLX0KLQotZGl2LmhpZ2hsaWdodCB7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogd2hpdGU7Ci19Ci0KLWR0OnRhcmdldCwgLmhpZ2hsaWdodCB7Ci0gICAgYmFj
a2dyb3VuZDogI0ZBRjNFODsKLX0KLQotZGl2Lm5vdGUgewotICAgIGJhY2tncm91bmQtY29sb3I6
ICNlZWU7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKLX0KLQotZGl2LnNlZWFsc28gewot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmM7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgI2ZmNjsK
LX0KLQotZGl2LnRvcGljIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi1wLmFk
bW9uaXRpb24tdGl0bGUgewotICAgIGRpc3BsYXk6IGlubGluZTsKLX0KLQotcC5hZG1vbml0aW9u
LXRpdGxlOmFmdGVyIHsKLSAgICBjb250ZW50OiAiOiI7Ci19Ci0KLXByZSwgdHQsIGNvZGUgewot
ICAgIGZvbnQtZmFtaWx5OiAnQ29uc29sYXMnLCAnTWVubG8nLCAnRGVqYSBWdSBTYW5zIE1vbm8n
LCAnQml0c3RyZWFtIFZlcmEgU2FucyBNb25vJywgbW9ub3NwYWNlOwotICAgIGZvbnQtc2l6ZTog
MC45ZW07Ci0gICAgYmFja2dyb3VuZDogI2VlZTsKLX0KLQotaW1nLnNjcmVlbnNob3QgewotfQot
Ci10dC5kZXNjbmFtZSwgdHQuZGVzY2NsYXNzbmFtZSB7Ci0gICAgZm9udC1zaXplOiAwLjk1ZW07
Ci19Ci0KLXR0LmRlc2NuYW1lIHsKLSAgICBwYWRkaW5nLXJpZ2h0OiAwLjA4ZW07Ci19Ci0KLWlt
Zy5zY3JlZW5zaG90IHsKLSAgICAtbW96LWJveC1zaGFkb3c6IDJweCAycHggNHB4ICNlZWU7Ci0g
ICAgLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMnB4IDRweCAjZWVlOwotICAgIGJveC1zaGFkb3c6
IDJweCAycHggNHB4ICNlZWU7Ci19Ci0KLXRhYmxlLmRvY3V0aWxzIHsKLSAgICBib3JkZXI6IDFw
eCBzb2xpZCAjODg4OwotICAgIC1tb3otYm94LXNoYWRvdzogMnB4IDJweCA0cHggI2VlZTsKLSAg
ICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggNHB4ICNlZWU7Ci0gICAgYm94LXNoYWRvdzog
MnB4IDJweCA0cHggI2VlZTsKLX0KLQotdGFibGUuZG9jdXRpbHMgdGQsIHRhYmxlLmRvY3V0aWxz
IHRoIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OwotICAgIHBhZGRpbmc6IDAuMjVlbSAw
LjdlbTsKLX0KLQotdGFibGUuZmllbGQtbGlzdCwgdGFibGUuZm9vdG5vdGUgewotICAgIGJvcmRl
cjogbm9uZTsKLSAgICAtbW96LWJveC1zaGFkb3c6IG5vbmU7Ci0gICAgLXdlYmtpdC1ib3gtc2hh
ZG93OiBub25lOwotICAgIGJveC1zaGFkb3c6IG5vbmU7Ci19Ci0KLXRhYmxlLmZvb3Rub3RlIHsK
LSAgICBtYXJnaW46IDE1cHggMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBib3JkZXI6IDFweCBz
b2xpZCAjZWVlOwotICAgIGJhY2tncm91bmQ6ICNmZGZkZmQ7Ci0gICAgZm9udC1zaXplOiAwLjll
bTsKLX0KLQotdGFibGUuZm9vdG5vdGUgKyB0YWJsZS5mb290bm90ZSB7Ci0gICAgbWFyZ2luLXRv
cDogLTE1cHg7Ci0gICAgYm9yZGVyLXRvcDogbm9uZTsKLX0KLQotdGFibGUuZmllbGQtbGlzdCB0
aCB7Ci0gICAgcGFkZGluZzogMCAwLjhlbSAwIDA7Ci19Ci0KLXRhYmxlLmZpZWxkLWxpc3QgdGQg
ewotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLXRhYmxlLmZvb3Rub3RlIHRkLmxhYmVsIHsKLSAgICB3
aWR0aDogMHB4OwotICAgIHBhZGRpbmc6IDAuM2VtIDAgMC4zZW0gMC41ZW07Ci19Ci0KLXRhYmxl
LmZvb3Rub3RlIHRkIHsKLSAgICBwYWRkaW5nOiAwLjNlbSAwLjVlbTsKLX0KLQotZGwgewotICAg
IG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1kbCBkZCB7Ci0gICAgbWFyZ2luLWxl
ZnQ6IDMwcHg7Ci19Ci0KLWJsb2NrcXVvdGUgewotICAgIG1hcmdpbjogMCAwIDAgMzBweDsKLSAg
ICBwYWRkaW5nOiAwOwotfQotCi11bCwgb2wgewotICAgIG1hcmdpbjogMTBweCAwIDEwcHggMzBw
eDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1wcmUgewotICAgIGJhY2tncm91bmQ6ICNlZWU7Ci0g
ICAgcGFkZGluZzogN3B4IDMwcHg7Ci0gICAgbWFyZ2luOiAxNXB4IC0zMHB4OwotICAgIGxpbmUt
aGVpZ2h0OiAxLjNlbTsKLX0KLQotZGwgcHJlLCBibG9ja3F1b3RlIHByZSwgbGkgcHJlIHsKLSAg
ICBtYXJnaW4tbGVmdDogLTYwcHg7Ci0gICAgcGFkZGluZy1sZWZ0OiA2MHB4OwotfQotCi1kbCBk
bCBwcmUgewotICAgIG1hcmdpbi1sZWZ0OiAtOTBweDsKLSAgICBwYWRkaW5nLWxlZnQ6IDkwcHg7
Ci19Ci0KLXR0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYzOwotICAgIGNvbG9yOiAj
MjIyOwotICAgIC8qIHBhZGRpbmc6IDFweCAycHg7ICovCi19Ci0KLXR0LnhyZWYsIGEgdHQgewot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNGQkZCRkI7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNv
bGlkIHdoaXRlOwotfQotCi1hLnJlZmVyZW5jZSB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25l
OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQge3sgbGlua19jb2xvciB9fTsKLX0KLQot
YS5yZWZlcmVuY2U6aG92ZXIgewotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB7eyBsaW5r
X2hvdmVyX2NvbG9yIH19OwotfQotCi1hLmZvb3Rub3RlLXJlZmVyZW5jZSB7Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiBub25lOwotICAgIGZvbnQtc2l6ZTogMC43ZW07Ci0gICAgdmVydGljYWwtYWxp
Z246IHRvcDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIHt7IGxpbmtfY29sb3IgfX07
Ci19Ci0KLWEuZm9vdG5vdGUtcmVmZXJlbmNlOmhvdmVyIHsKLSAgICBib3JkZXItYm90dG9tOiAx
cHggc29saWQge3sgbGlua19ob3Zlcl9jb2xvciB9fTsKLX0KLQotYTpob3ZlciB0dCB7Ci0gICAg
YmFja2dyb3VuZDogI0VFRTsKLX0KLQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4
NzBweCkgewotCi0gICAgZGl2LnNwaGlueHNpZGViYXIgewotICAgICAgICBkaXNwbGF5OiBub25l
OwotICAgIH0KLQotICAgIGRpdi5kb2N1bWVudCB7Ci0gICAgICAgd2lkdGg6IDEwMCU7Ci0KLSAg
ICB9Ci0KLSAgICBkaXYuZG9jdW1lbnR3cmFwcGVyIHsKLSAgICAgICAgbWFyZ2luLWxlZnQ6IDA7
Ci0gICAgICAgIG1hcmdpbi10b3A6IDA7Ci0gICAgICAgIG1hcmdpbi1yaWdodDogMDsKLSAgICAg
ICAgbWFyZ2luLWJvdHRvbTogMDsKLSAgICB9Ci0KLSAgICBkaXYuYm9keXdyYXBwZXIgewotICAg
ICAgICBtYXJnaW4tdG9wOiAwOwotICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7Ci0gICAgICAgIG1h
cmdpbi1ib3R0b206IDA7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiAwOwotICAgIH0KLQotICAgIHVs
IHsKLSAgICAgICAgbWFyZ2luLWxlZnQ6IDA7Ci0gICAgfQotCi0gICAgLmRvY3VtZW50IHsKLSAg
ICAgICAgd2lkdGg6IGF1dG87Ci0gICAgfQotCi0gICAgLmZvb3RlciB7Ci0gICAgICAgIHdpZHRo
OiBhdXRvOwotICAgIH0KLQotICAgIC5ib2R5d3JhcHBlciB7Ci0gICAgICAgIG1hcmdpbjogMDsK
LSAgICB9Ci0KLSAgICAuZm9vdGVyIHsKLSAgICAgICAgd2lkdGg6IGF1dG87Ci0gICAgfQotCi0g
ICAgLmdpdGh1YiB7Ci0gICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgfQotCi0KLQotfQotCi0K
LQotQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODc1cHgpIHsKLQotICAgIGJvZHkgewot
ICAgICAgICBtYXJnaW46IDA7Ci0gICAgICAgIHBhZGRpbmc6IDIwcHggMzBweDsKLSAgICB9Ci0K
LSAgICBkaXYuZG9jdW1lbnR3cmFwcGVyIHsKLSAgICAgICAgZmxvYXQ6IG5vbmU7Ci0gICAgICAg
IGJhY2tncm91bmQ6IHdoaXRlOwotICAgIH0KLQotICAgIGRpdi5zcGhpbnhzaWRlYmFyIHsKLSAg
ICAgICAgZGlzcGxheTogYmxvY2s7Ci0gICAgICAgIGZsb2F0OiBub25lOwotICAgICAgICB3aWR0
aDogMTAyLjUlOwotICAgICAgICBtYXJnaW46IDUwcHggLTMwcHggLTIwcHggLTMwcHg7Ci0gICAg
ICAgIHBhZGRpbmc6IDEwcHggMjBweDsKLSAgICAgICAgYmFja2dyb3VuZDogIzMzMzsKLSAgICAg
ICAgY29sb3I6IHdoaXRlOwotICAgIH0KLQotICAgIGRpdi5zcGhpbnhzaWRlYmFyIGgzLCBkaXYu
c3BoaW54c2lkZWJhciBoNCwgZGl2LnNwaGlueHNpZGViYXIgcCwKLSAgICBkaXYuc3BoaW54c2lk
ZWJhciBoMyBhLCBkaXYuc3BoaW54c2lkZWJhciB1bCB7Ci0gICAgICAgIGNvbG9yOiB3aGl0ZTsK
LSAgICB9Ci0KLSAgICBkaXYuc3BoaW54c2lkZWJhciBhIHsKLSAgICAgICAgY29sb3I6ICNhYWE7
Ci0gICAgfQotCi0gICAgZGl2LnNwaGlueHNpZGViYXIgcC5sb2dvIHsKLSAgICAgICAgZGlzcGxh
eTogbm9uZTsKLSAgICB9Ci0KLSAgICBkaXYuZG9jdW1lbnQgewotICAgICAgICB3aWR0aDogMTAw
JTsKLSAgICAgICAgbWFyZ2luOiAwOwotICAgIH0KLQotICAgIGRpdi5yZWxhdGVkIHsKLSAgICAg
ICAgZGlzcGxheTogYmxvY2s7Ci0gICAgICAgIG1hcmdpbjogMDsKLSAgICAgICAgcGFkZGluZzog
MTBweCAwIDIwcHggMDsKLSAgICB9Ci0KLSAgICBkaXYucmVsYXRlZCB1bCwKLSAgICBkaXYucmVs
YXRlZCB1bCBsaSB7Ci0gICAgICAgIG1hcmdpbjogMDsKLSAgICAgICAgcGFkZGluZzogMDsKLSAg
ICB9Ci0KLSAgICBkaXYuZm9vdGVyIHsKLSAgICAgICAgZGlzcGxheTogbm9uZTsKLSAgICB9Ci0K
LSAgICBkaXYuYm9keXdyYXBwZXIgewotICAgICAgICBtYXJnaW46IDA7Ci0gICAgfQotCi0gICAg
ZGl2LmJvZHkgewotICAgICAgICBtaW4taGVpZ2h0OiAwOwotICAgICAgICBwYWRkaW5nOiAwOwot
ICAgIH0KLQotICAgIC5ydGRfZG9jX2Zvb3RlciB7Ci0gICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0g
ICAgfQotCi0gICAgLmRvY3VtZW50IHsKLSAgICAgICAgd2lkdGg6IGF1dG87Ci0gICAgfQotCi0g
ICAgLmZvb3RlciB7Ci0gICAgICAgIHdpZHRoOiBhdXRvOwotICAgIH0KLQotICAgIC5mb290ZXIg
ewotICAgICAgICB3aWR0aDogYXV0bzsKLSAgICB9Ci0KLSAgICAuZ2l0aHViIHsKLSAgICAgICAg
ZGlzcGxheTogbm9uZTsKLSAgICB9Ci19Ci0KLS8qIG1pc2MuICovCi0KLS5yZXZzeXMtaW5saW5l
IHsKLSAgICBkaXNwbGF5OiBub25lIWltcG9ydGFudDsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRpYy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjg0NzRmOTcwZWFlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL190aGVtZXMvZmxhc2svc3RhdGljL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190
aGVtZXMvZmxhc2svc3RhdGljL2ZsYXNreS5jc3NfdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL190aGVtZXMvZmxhc2svdGhlbWUuY29uZiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhl
bWVzL2ZsYXNrL3RoZW1lLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MmIw
MDI4MzkzMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2Zs
YXNrL3RoZW1lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVt0aGVtZV0KLWlu
aGVyaXQgPSBiYXNpYwotc3R5bGVzaGVldCA9IGZsYXNreS5jc3MKLXB5Z21lbnRzX3N0eWxlID0g
Zmxhc2tfdGhlbWVfc3VwcG9ydC5GbGFza3lTdHlsZQotCi1bb3B0aW9uc10KLWluZGV4X2xvZ28g
PSAnJwotaW5kZXhfbG9nb19oZWlnaHQgPSAxMjBweAotdG91Y2hfaWNvbiA9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMzYyNmFiYTM2ZjYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNr
L2xheW91dC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvZmxhc2svcmVsYXRpb25z
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay90aGVtZS5jb25mCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFza190aGVtZV9zdXBwb3J0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvZmxhc2tfdGhlbWVfc3VwcG9ydC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRjZjUzYjc1NDJiLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMvZmxhc2tfdGhlbWVfc3VwcG9ydC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLSMgZmxhc2t5IGV4dGVuc2lvbnMuICBmbGFza3kg
cHlnbWVudHMgc3R5bGUgYmFzZWQgb24gdGFuZ28gc3R5bGUKLWZyb20gcHlnbWVudHMuc3R5bGUg
aW1wb3J0IFN0eWxlCi1mcm9tIHB5Z21lbnRzLnRva2VuIGltcG9ydCAoCi0gICAgS2V5d29yZCwK
LSAgICBOYW1lLAotICAgIENvbW1lbnQsCi0gICAgU3RyaW5nLAotICAgIEVycm9yLAotICAgIE51
bWJlciwKLSAgICBPcGVyYXRvciwKLSAgICBHZW5lcmljLAotICAgIFdoaXRlc3BhY2UsCi0gICAg
UHVuY3R1YXRpb24sCi0gICAgT3RoZXIsCi0gICAgTGl0ZXJhbCwKLSkKLQotCi1jbGFzcyBGbGFz
a3lTdHlsZShTdHlsZSk6Ci0gICAgYmFja2dyb3VuZF9jb2xvciA9ICIjZjhmOGY4IgotICAgIGRl
ZmF1bHRfc3R5bGUgPSAiIgotCi0gICAgc3R5bGVzID0gewotICAgICAgICAjIE5vIGNvcnJlc3Bv
bmRpbmcgY2xhc3MgZm9yIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICMgVGV4dDogICAgICAgICAg
ICAgICAgICAgICAiIiwgIyBjbGFzczogICcnCi0gICAgICAgIFdoaXRlc3BhY2U6ICJ1bmRlcmxp
bmUgI2Y4ZjhmOCIsICAjIGNsYXNzOiAndycKLSAgICAgICAgRXJyb3I6ICIjYTQwMDAwIGJvcmRl
cjojZWYyOTI5IiwgICMgY2xhc3M6ICdlcnInCi0gICAgICAgIE90aGVyOiAiIzAwMDAwMCIsICAj
IGNsYXNzICd4JwotICAgICAgICBDb21tZW50OiAiaXRhbGljICM4ZjU5MDIiLCAgIyBjbGFzczog
J2MnCi0gICAgICAgIENvbW1lbnQuUHJlcHJvYzogIm5vaXRhbGljIiwgICMgY2xhc3M6ICdjcCcK
LSAgICAgICAgS2V5d29yZDogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAnaycKLSAgICAgICAg
S2V5d29yZC5Db25zdGFudDogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAna2MnCi0gICAgICAg
IEtleXdvcmQuRGVjbGFyYXRpb246ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ2tkJwotICAg
ICAgICBLZXl3b3JkLk5hbWVzcGFjZTogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAna24nCi0g
ICAgICAgIEtleXdvcmQuUHNldWRvOiAiYm9sZCAjMDA0NDYxIiwgICMgY2xhc3M6ICdrcCcKLSAg
ICAgICAgS2V5d29yZC5SZXNlcnZlZDogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAna3InCi0g
ICAgICAgIEtleXdvcmQuVHlwZTogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAna3QnCi0gICAg
ICAgIE9wZXJhdG9yOiAiIzU4MjgwMCIsICAjIGNsYXNzOiAnbycKLSAgICAgICAgT3BlcmF0b3Iu
V29yZDogImJvbGQgIzAwNDQ2MSIsICAjIGNsYXNzOiAnb3cnIC0gbGlrZSBrZXl3b3JkcwotICAg
ICAgICBQdW5jdHVhdGlvbjogImJvbGQgIzAwMDAwMCIsICAjIGNsYXNzOiAncCcKLSAgICAgICAg
IyBiZWNhdXNlIHNwZWNpYWwgbmFtZXMgc3VjaCBhcyBOYW1lLkNsYXNzLCBOYW1lLkZ1bmN0aW9u
LCBldGMuCi0gICAgICAgICMgYXJlIG5vdCByZWNvZ25pemVkIGFzIHN1Y2ggbGF0ZXIgaW4gdGhl
IHBhcnNpbmcsIHdlIGNob29zZSB0aGVtCi0gICAgICAgICMgdG8gbG9vayB0aGUgc2FtZSBhcyBv
cmRpbmFyeSB2YXJpYWJsZXMuCi0gICAgICAgIE5hbWU6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICdu
JwotICAgICAgICBOYW1lLkF0dHJpYnV0ZTogIiNjNGEwMDAiLCAgIyBjbGFzczogJ25hJyAtIHRv
IGJlIHJldmlzZWQKLSAgICAgICAgTmFtZS5CdWlsdGluOiAiIzAwNDQ2MSIsICAjIGNsYXNzOiAn
bmInCi0gICAgICAgIE5hbWUuQnVpbHRpbi5Qc2V1ZG86ICIjMzQ2NWE0IiwgICMgY2xhc3M6ICdi
cCcKLSAgICAgICAgTmFtZS5DbGFzczogIiMwMDAwMDAiLCAgIyBjbGFzczogJ25jJyAtIHRvIGJl
IHJldmlzZWQKLSAgICAgICAgTmFtZS5Db25zdGFudDogIiMwMDAwMDAiLCAgIyBjbGFzczogJ25v
JyAtIHRvIGJlIHJldmlzZWQKLSAgICAgICAgTmFtZS5EZWNvcmF0b3I6ICIjODg4IiwgICMgY2xh
c3M6ICduZCcgLSB0byBiZSByZXZpc2VkCi0gICAgICAgIE5hbWUuRW50aXR5OiAiI2NlNWMwMCIs
ICAjIGNsYXNzOiAnbmknCi0gICAgICAgIE5hbWUuRXhjZXB0aW9uOiAiYm9sZCAjY2MwMDAwIiwg
ICMgY2xhc3M6ICduZScKLSAgICAgICAgTmFtZS5GdW5jdGlvbjogIiMwMDAwMDAiLCAgIyBjbGFz
czogJ25mJwotICAgICAgICBOYW1lLlByb3BlcnR5OiAiIzAwMDAwMCIsICAjIGNsYXNzOiAncHkn
Ci0gICAgICAgIE5hbWUuTGFiZWw6ICIjZjU3OTAwIiwgICMgY2xhc3M6ICdubCcKLSAgICAgICAg
TmFtZS5OYW1lc3BhY2U6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICdubicgLSB0byBiZSByZXZpc2Vk
Ci0gICAgICAgIE5hbWUuT3RoZXI6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICdueCcKLSAgICAgICAg
TmFtZS5UYWc6ICJib2xkICMwMDQ0NjEiLCAgIyBjbGFzczogJ250JyAtIGxpa2UgYSBrZXl3b3Jk
Ci0gICAgICAgIE5hbWUuVmFyaWFibGU6ICIjMDAwMDAwIiwgICMgY2xhc3M6ICdudicgLSB0byBi
ZSByZXZpc2VkCi0gICAgICAgIE5hbWUuVmFyaWFibGUuQ2xhc3M6ICIjMDAwMDAwIiwgICMgY2xh
c3M6ICd2YycgLSB0byBiZSByZXZpc2VkCi0gICAgICAgIE5hbWUuVmFyaWFibGUuR2xvYmFsOiAi
IzAwMDAwMCIsICAjIGNsYXNzOiAndmcnIC0gdG8gYmUgcmV2aXNlZAotICAgICAgICBOYW1lLlZh
cmlhYmxlLkluc3RhbmNlOiAiIzAwMDAwMCIsICAjIGNsYXNzOiAndmknIC0gdG8gYmUgcmV2aXNl
ZAotICAgICAgICBOdW1iZXI6ICIjOTkwMDAwIiwgICMgY2xhc3M6ICdtJwotICAgICAgICBMaXRl
cmFsOiAiIzAwMDAwMCIsICAjIGNsYXNzOiAnbCcKLSAgICAgICAgTGl0ZXJhbC5EYXRlOiAiIzAw
MDAwMCIsICAjIGNsYXNzOiAnbGQnCi0gICAgICAgIFN0cmluZzogIiM0ZTlhMDYiLCAgIyBjbGFz
czogJ3MnCi0gICAgICAgIFN0cmluZy5CYWNrdGljazogIiM0ZTlhMDYiLCAgIyBjbGFzczogJ3Ni
JwotICAgICAgICBTdHJpbmcuQ2hhcjogIiM0ZTlhMDYiLCAgIyBjbGFzczogJ3NjJwotICAgICAg
ICBTdHJpbmcuRG9jOiAiaXRhbGljICM4ZjU5MDIiLCAgIyBjbGFzczogJ3NkJyAtIGxpa2UgYSBj
b21tZW50Ci0gICAgICAgIFN0cmluZy5Eb3VibGU6ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzMicK
LSAgICAgICAgU3RyaW5nLkVzY2FwZTogIiM0ZTlhMDYiLCAgIyBjbGFzczogJ3NlJwotICAgICAg
ICBTdHJpbmcuSGVyZWRvYzogIiM0ZTlhMDYiLCAgIyBjbGFzczogJ3NoJwotICAgICAgICBTdHJp
bmcuSW50ZXJwb2w6ICIjNGU5YTA2IiwgICMgY2xhc3M6ICdzaScKLSAgICAgICAgU3RyaW5nLk90
aGVyOiAiIzRlOWEwNiIsICAjIGNsYXNzOiAnc3gnCi0gICAgICAgIFN0cmluZy5SZWdleDogIiM0
ZTlhMDYiLCAgIyBjbGFzczogJ3NyJwotICAgICAgICBTdHJpbmcuU2luZ2xlOiAiIzRlOWEwNiIs
ICAjIGNsYXNzOiAnczEnCi0gICAgICAgIFN0cmluZy5TeW1ib2w6ICIjNGU5YTA2IiwgICMgY2xh
c3M6ICdzcycKLSAgICAgICAgR2VuZXJpYzogIiMwMDAwMDAiLCAgIyBjbGFzczogJ2cnCi0gICAg
ICAgIEdlbmVyaWMuRGVsZXRlZDogIiNhNDAwMDAiLCAgIyBjbGFzczogJ2dkJwotICAgICAgICBH
ZW5lcmljLkVtcGg6ICJpdGFsaWMgIzAwMDAwMCIsICAjIGNsYXNzOiAnZ2UnCi0gICAgICAgIEdl
bmVyaWMuRXJyb3I6ICIjZWYyOTI5IiwgICMgY2xhc3M6ICdncicKLSAgICAgICAgR2VuZXJpYy5I
ZWFkaW5nOiAiYm9sZCAjMDAwMDgwIiwgICMgY2xhc3M6ICdnaCcKLSAgICAgICAgR2VuZXJpYy5J
bnNlcnRlZDogIiMwMEEwMDAiLCAgIyBjbGFzczogJ2dpJwotICAgICAgICBHZW5lcmljLk91dHB1
dDogIiM4ODgiLCAgIyBjbGFzczogJ2dvJwotICAgICAgICBHZW5lcmljLlByb21wdDogIiM3NDUz
MzQiLCAgIyBjbGFzczogJ2dwJwotICAgICAgICBHZW5lcmljLlN0cm9uZzogImJvbGQgIzAwMDAw
MCIsICAjIGNsYXNzOiAnZ3MnCi0gICAgICAgIEdlbmVyaWMuU3ViaGVhZGluZzogImJvbGQgIzgw
MDA4MCIsICAjIGNsYXNzOiAnZ3UnCi0gICAgICAgIEdlbmVyaWMuVHJhY2ViYWNrOiAiYm9sZCAj
YTQwMDAwIiwgICMgY2xhc3M6ICdndCcKLSAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vX3RoZW1lcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjU2NTQ4ZDBk
YTcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGhlbWVzL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9S
RUFETUUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFza190aGVtZV9zdXBwb3J0LnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYWRvcHQucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fkb3B0LnJzdAppbmRleCA3MTBmNDMxYmUzMGIuLjgyZTIxMTFlZDNiMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fkb3B0LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYWRvcHQucnN0CkBAIC0yNCwxMSArMjQsOSBAQCBUaGUgaWRlYWwgcHl0ZXN0IGhlbHBlcgog
IC0gZmVlbHMgY29uZmlkZW50IGluIHVzaW5nIHB5dGVzdCAoZS5nLiBoYXMgZXhwbG9yZWQgY29t
bWFuZCBsaW5lIG9wdGlvbnMsIGtub3dzIGhvdyB0byB3cml0ZSBwYXJhbWV0cml6ZWQgdGVzdHMs
IGhhcyBhbiBpZGVhIGFib3V0IGNvbmZ0ZXN0IGNvbnRlbnRzKQogIC0gZG9lcyBub3QgbmVlZCB0
byBiZSBhbiBleHBlcnQgaW4gZXZlcnkgYXNwZWN0IQogCi1gUHl0ZXN0IGhlbHBlcnMsIHNpZ24g
dXAgaGVyZWBfISAocHJlZmVyYWJseSBpbiBGZWJydWFyeSwgaGFyZCBkZWFkbGluZSAyMiBNYXJj
aCkKK1B5dGVzdCBoZWxwZXJzLCBzaWduIHVwIGhlcmUhIChwcmVmZXJhYmx5IGluIEZlYnJ1YXJ5
LCBoYXJkIGRlYWRsaW5lIDIyIE1hcmNoKQogCiAKLS4uIF9gUHl0ZXN0IGhlbHBlcnMsIHNpZ24g
dXAgaGVyZWA6IGh0dHA6Ly9nb28uZ2wvZm9ybXMvbnhxQWhxV3QxUAotCiAKIFRoZSBpZGVhbCBw
YXJ0bmVyIHByb2plY3QKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC00MCwxNiArMzgsMTQgQEAgVGhlIGlkZWFsIHBhcnRuZXIgcHJvamVjdAogIC0gaGFzIHRo
ZSBzdXBwb3J0IG9mIHRoZSBjb3JlIGRldmVsb3BtZW50IHRlYW0sIGluIHRyeWluZyBvdXQgcHl0
ZXN0IGFkb3B0aW9uCiAgLSBoYXMgbm8gdGVzdHMuLi4gb3IgMTAwJSB0ZXN0IGNvdmVyYWdlLi4u
IG9yIHNvbWV3aGVyZSBpbiBiZXR3ZWVuIQogCi1gUGFydG5lciBwcm9qZWN0cywgc2lnbiB1cCBo
ZXJlYF8hIChieSAyMiBNYXJjaCkKLQorUGFydG5lciBwcm9qZWN0cywgc2lnbiB1cCBoZXJlISAo
YnkgMjIgTWFyY2gpCiAKLS4uIF9gUGFydG5lciBwcm9qZWN0cywgc2lnbiB1cCBoZXJlYDogIGh0
dHA6Ly9nb28uZ2wvZm9ybXMvWkd5cWxIaXdrMwogCiAKIFdoYXQgZG9lcyBpdCBtZWFuIHRvICJh
ZG9wdCBweXRlc3QiPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotVGhlcmUgY2FuIGJlIG1hbnkgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mICJzdWNjZXNzIi4g
UHl0ZXN0IGNhbiBydW4gbWFueSBgbm9zZSBhbmQgdW5pdHRlc3RgXyB0ZXN0cyBieSBkZWZhdWx0
LCBzbyB1c2luZyBweXRlc3QgYXMgeW91ciB0ZXN0cnVubmVyIG1heSBiZSBwb3NzaWJsZSBmcm9t
IGRheSAxLiBKb2IgZG9uZSwgcmlnaHQ/CitUaGVyZSBjYW4gYmUgbWFueSBkaWZmZXJlbnQgZGVm
aW5pdGlvbnMgb2YgInN1Y2Nlc3MiLiBQeXRlc3QgY2FuIHJ1biBtYW55IG5vc2VfIGFuZCB1bml0
dGVzdF8gdGVzdHMgYnkgZGVmYXVsdCwgc28gdXNpbmcgcHl0ZXN0IGFzIHlvdXIgdGVzdHJ1bm5l
ciBtYXkgYmUgcG9zc2libGUgZnJvbSBkYXkgMS4gSm9iIGRvbmUsIHJpZ2h0PwogCiBQcm9ncmVz
c2l2ZSBzdWNjZXNzIG1pZ2h0IGxvb2sgbGlrZToKIApAQCAtNjcsMTIgKzYzLDEzIEBAIFByb2dy
ZXNzaXZlIHN1Y2Nlc3MgbWlnaHQgbG9vayBsaWtlOgogCiBJdCBtYXkgYmUgYWZ0ZXIgdGhlIG1v
bnRoIGlzIHVwLCB0aGUgcGFydG5lciBwcm9qZWN0IGRlY2lkZXMgdGhhdCBweXRlc3QgaXMgbm90
IHJpZ2h0IGZvciBpdC4gVGhhdCdzIG9rYXkgLSBob3BlZnVsbHkgdGhlIHB5dGVzdCB0ZWFtIHdp
bGwgYWxzbyBsZWFybiBzb21ldGhpbmcgYWJvdXQgaXRzIHdlYWtuZXNzZXMgb3IgZGVmaWNpZW5j
aWVzLgogCi0uLiBfYG5vc2UgYW5kIHVuaXR0ZXN0YDogZmFxLmh0bWwjaG93LWRvZXMtcHl0ZXN0
LXJlbGF0ZS10by1ub3NlLWFuZC11bml0dGVzdAotLi4gX2Fzc2VydDogYXNzZXJ0cy5odG1sCisu
LiBfbm9zZTogbm9zZS5odG1sCisuLiBfdW5pdHRlc3Q6IHVuaXR0ZXN0Lmh0bWwKKy4uIF9hc3Nl
cnQ6IGFzc2VydC5odG1sCiAuLiBfcHljbWQ6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9w
eWNtZC9vdmVydmlldwogLi4gX2BzZXRVcC90ZWFyRG93biBtZXRob2RzYDogeHVuaXRfc2V0dXAu
aHRtbAogLi4gX2ZpeHR1cmVzOiBmaXh0dXJlLmh0bWwKLS4uIF9tYXJrZXJzOiBtYXJrZXJzLmh0
bWwKKy4uIF9tYXJrZXJzOiBtYXJrLmh0bWwKIC4uIF9kaXN0cmlidXRlZDogeGRpc3QuaHRtbAog
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9pbmRleC5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvaW5kZXgucnN0CmluZGV4IDEwN2ZjZDJhZDMzZi4u
YmRhMzg5Y2Q4YmVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvaW5k
ZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9pbmRleC5yc3QKQEAgLTYs
NiArNiw3MiBAQCBSZWxlYXNlIGFubm91bmNlbWVudHMKICAgIDptYXhkZXB0aDogMgogCiAKKyAg
IHJlbGVhc2UtNi4xLjEKKyAgIHJlbGVhc2UtNi4xLjAKKyAgIHJlbGVhc2UtNi4wLjIKKyAgIHJl
bGVhc2UtNi4wLjEKKyAgIHJlbGVhc2UtNi4wLjAKKyAgIHJlbGVhc2UtNi4wLjByYzEKKyAgIHJl
bGVhc2UtNS40LjMKKyAgIHJlbGVhc2UtNS40LjIKKyAgIHJlbGVhc2UtNS40LjEKKyAgIHJlbGVh
c2UtNS40LjAKKyAgIHJlbGVhc2UtNS4zLjUKKyAgIHJlbGVhc2UtNS4zLjQKKyAgIHJlbGVhc2Ut
NS4zLjMKKyAgIHJlbGVhc2UtNS4zLjIKKyAgIHJlbGVhc2UtNS4zLjEKKyAgIHJlbGVhc2UtNS4z
LjAKKyAgIHJlbGVhc2UtNS4yLjQKKyAgIHJlbGVhc2UtNS4yLjMKKyAgIHJlbGVhc2UtNS4yLjIK
KyAgIHJlbGVhc2UtNS4yLjEKKyAgIHJlbGVhc2UtNS4yLjAKKyAgIHJlbGVhc2UtNS4xLjMKKyAg
IHJlbGVhc2UtNS4xLjIKKyAgIHJlbGVhc2UtNS4xLjEKKyAgIHJlbGVhc2UtNS4xLjAKKyAgIHJl
bGVhc2UtNS4wLjEKKyAgIHJlbGVhc2UtNS4wLjAKKyAgIHJlbGVhc2UtNC42LjkKKyAgIHJlbGVh
c2UtNC42LjgKKyAgIHJlbGVhc2UtNC42LjcKKyAgIHJlbGVhc2UtNC42LjYKKyAgIHJlbGVhc2Ut
NC42LjUKKyAgIHJlbGVhc2UtNC42LjQKKyAgIHJlbGVhc2UtNC42LjMKKyAgIHJlbGVhc2UtNC42
LjIKKyAgIHJlbGVhc2UtNC42LjEKKyAgIHJlbGVhc2UtNC42LjAKKyAgIHJlbGVhc2UtNC41LjAK
KyAgIHJlbGVhc2UtNC40LjIKKyAgIHJlbGVhc2UtNC40LjEKKyAgIHJlbGVhc2UtNC40LjAKKyAg
IHJlbGVhc2UtNC4zLjEKKyAgIHJlbGVhc2UtNC4zLjAKKyAgIHJlbGVhc2UtNC4yLjEKKyAgIHJl
bGVhc2UtNC4yLjAKKyAgIHJlbGVhc2UtNC4xLjEKKyAgIHJlbGVhc2UtNC4xLjAKKyAgIHJlbGVh
c2UtNC4wLjIKKyAgIHJlbGVhc2UtNC4wLjEKKyAgIHJlbGVhc2UtNC4wLjAKKyAgIHJlbGVhc2Ut
My4xMC4xCisgICByZWxlYXNlLTMuMTAuMAorICAgcmVsZWFzZS0zLjkuMworICAgcmVsZWFzZS0z
LjkuMgorICAgcmVsZWFzZS0zLjkuMQorICAgcmVsZWFzZS0zLjkuMAorICAgcmVsZWFzZS0zLjgu
MgorICAgcmVsZWFzZS0zLjguMQorICAgcmVsZWFzZS0zLjguMAorICAgcmVsZWFzZS0zLjcuNAor
ICAgcmVsZWFzZS0zLjcuMworICAgcmVsZWFzZS0zLjcuMgorICAgcmVsZWFzZS0zLjcuMQorICAg
cmVsZWFzZS0zLjcuMAorICAgcmVsZWFzZS0zLjYuNAorICAgcmVsZWFzZS0zLjYuMwogICAgcmVs
ZWFzZS0zLjYuMgogICAgcmVsZWFzZS0zLjYuMQogICAgcmVsZWFzZS0zLjYuMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4wLjAucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4wLjAucnN0CmluZGV4IGFmNzQ1ZmM1OWIy
OC4uMWFhYWQ3NDBhNGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjAuMC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMi4wLjAucnN0CkBAIC03LDcgKzcsNyBAQCBzZWUgYmVsb3cgZm9yIHN1bW1hcnkgYW5kIGRl
dGFpbGVkIGxpc3RzLiAgQSBsb3Qgb2YgbG9uZy1kZXByZWNhdGVkIGNvZGUKIGhhcyBiZWVuIHJl
bW92ZWQsIHJlc3VsdGluZyBpbiBhIG11Y2ggc21hbGxlciBhbmQgY2xlYW5lcgogaW1wbGVtZW50
YXRpb24uICBTZWUgdGhlIG5ldyBkb2NzIHdpdGggZXhhbXBsZXMgaGVyZToKIAotICAgIGh0dHA6
Ly9weXRlc3Qub3JnLzIuMC4wL2luZGV4Lmh0bWwKKyAgICBodHRwOi8vcHl0ZXN0Lm9yZy9lbi9z
dGFibGUvaW5kZXguaHRtbAogCiBBIG5vdGUgb24gcGFja2FnaW5nOiBweXRlc3QgdXNlZCB0byBw
YXJ0IG9mIHRoZSAicHkiIGRpc3RyaWJ1dGlvbiB1cAogdW50aWwgdmVyc2lvbiBweS0xLjMuNCBi
dXQgdGhpcyBoYXMgY2hhbmdlZCBub3c6ICBweXRlc3QtMi4wLjAgb25seQpAQCAtMzYsMTIgKzM2
LDEyIEBAIE5ldyBGZWF0dXJlcwogCiAgICAgaW1wb3J0IHB5dGVzdCA7IHB5dGVzdC5tYWluKGFy
Z2xpc3QsIHBsdWdpbmxpc3QpCiAKLSAgc2VlIGh0dHA6Ly9weXRlc3Qub3JnLzIuMC4wL3VzYWdl
Lmh0bWwgZm9yIGRldGFpbHMuCisgIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvdXNh
Z2UuaHRtbCBmb3IgZGV0YWlscy4KIAogLSBuZXcgYW5kIGJldHRlciByZXBvcnRpbmcgaW5mb3Jt
YXRpb24gaW4gYXNzZXJ0IGV4cHJlc3Npb25zCiAgIGlmIGNvbXBhcmluZyBsaXN0cywgc2VxdWVu
Y2VzIG9yIHN0cmluZ3MuCiAKLSAgc2VlIGh0dHA6Ly9weXRlc3Qub3JnLzIuMC4wL2Fzc2VydC5o
dG1sI25ld3JlcG9ydAorICBzZWUgaHR0cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL2Fzc2VydC5o
dG1sI25ld3JlcG9ydAogCiAtIG5ldyBjb25maWd1cmF0aW9uIHRocm91Z2ggaW5pLWZpbGVzIChz
ZXR1cC5jZmcgb3IgdG94LmluaSByZWNvZ25pemVkKSwKICAgZm9yIGV4YW1wbGU6OgpAQCAtNTAs
NyArNTAsNyBAQCBOZXcgRmVhdHVyZXMKICAgICBub3JlY3Vyc2VkaXJzID0gLmhnIGRhdGEqICAj
IGRvbid0IGV2ZXIgcmVjdXJzZSBpbiBzdWNoIGRpcnMKICAgICBhZGRvcHRzID0gLXggLS1weWFy
Z3MgICAgICAjIGFkZCB0aGVzZSBjb21tYW5kIGxpbmUgb3B0aW9ucyBieSBkZWZhdWx0CiAKLSAg
c2VlIGh0dHA6Ly9weXRlc3Qub3JnLzIuMC4wL2N1c3RvbWl6ZS5odG1sCisgIHNlZSBodHRwOi8v
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvY3VzdG9taXplLmh0bWwKIAogLSBpbXByb3ZlZCBzdGFuZGFy
ZCB1bml0dGVzdCBzdXBwb3J0LiAgSW4gZ2VuZXJhbCBweS50ZXN0IHNob3VsZCBub3cKICAgYmV0
dGVyIGJlIGFibGUgdG8gcnVuIGN1c3RvbSB1bml0dGVzdC5UZXN0Q2FzZXMgbGlrZSB0d2lzdGVk
IHRyaWFsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0y
LjAuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjAuMS5yc3QK
aW5kZXggMmY0MWVmOTQzNWVkLi43MjQwMWQ4MDk4ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4xLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjAuMS5yc3QKQEAgLTU3LDcgKzU3LDcgQEAgQ2hhbmdlcyBi
ZXR3ZWVuIDIuMC4wIGFuZCAyLjAuMQogLSByZWZpbmVtZW50cyB0byAiY29sbGVjdGluZyIgb3V0
cHV0IG9uIG5vbi10dHlzCiAtIHJlZmluZSBpbnRlcm5hbCBwbHVnaW4gcmVnaXN0cmF0aW9uIGFu
ZCAtLXRyYWNlY29uZmlnIG91dHB1dAogLSBpbnRyb2R1Y2UgYSBtZWNoYW5pc20gdG8gcHJldmVu
dC91bnJlZ2lzdGVyIHBsdWdpbnMgZnJvbSB0aGUKLSAgY29tbWFuZCBsaW5lLCBzZWUgaHR0cDov
L3B5dGVzdC5vcmcvbGF0ZXN0L3BsdWdpbnMuaHRtbCNjbWR1bnJlZ2lzdGVyCisgIGNvbW1hbmQg
bGluZSwgc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS9wbHVnaW5zLmh0bWwjY21kdW5y
ZWdpc3RlcgogLSBhY3RpdmF0ZSByZXN1bHRsb2cgcGx1Z2luIGJ5IGRlZmF1bHQKIC0gZml4IHJl
Z3Jlc3Npb24gd3J0IHlpZWxkZWQgdGVzdHMgd2hpY2ggZHVlIHRvIHRoZQogICBjb2xsZWN0aW9u
LWJlZm9yZS1ydW5uaW5nIHNlbWFudGljcyB3ZXJlIG5vdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4xLjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMi4xLjAucnN0CmluZGV4IDgzMTU0OGFjMmZmNC4uMjk0NjNhYjUz
M2U0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjEu
MC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4xLjAucnN0
CkBAIC0xMiw3ICsxMiw3IEBAIGNvdXJ0ZXN5IG9mIEJlbmphbWluIFBldGVyc29uLiAgWW91IGNh
biBub3cgc2FmZWx5IHVzZSBgYGFzc2VydGBgCiBzdGF0ZW1lbnRzIGluIHRlc3QgbW9kdWxlcyB3
aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCBzaWRlIGVmZmVjdHMKIG9yIHB5dGhvbiBvcHRp
bWl6YXRpb24gKCItT08iKSBvcHRpb25zLiAgVGhpcyBpcyBhY2hpZXZlZCBieSByZXdyaXRpbmcK
IGFzc2VydCBzdGF0ZW1lbnRzIGluIHRlc3QgbW9kdWxlcyB1cG9uIGltcG9ydCwgdXNpbmcgYSBQ
RVAzMDIgaG9vay4KLVNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9hc3NlcnQuaHRtbCNhZHZhbmNlZC1h
c3NlcnRpb24taW50cm9zcGVjdGlvbiBmb3IKK1NlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvYXNzZXJ0Lmh0bWwgZm9yCiBkZXRhaWxlZCBpbmZvcm1hdGlvbi4gIFRoZSB3b3Jr
IGhhcyBiZWVuIHBhcnRseSBzcG9uc29yZWQgYnkgbXkgY29tcGFueSwKIG1lcmxpbnV4IEdtYkgu
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMi4w
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMi4wLnJzdAppbmRl
eCAyMGJmZTBhMTkxNTcuLjAxOTNmZmIzNDY1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMi4yLjAucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTIuMi4wLnJzdApAQCAtOSw3ICs5LDcgQEAgd2l0aCB0aGVzZSBpbXBy
b3ZlbWVudHM6CiAKICAgLSBuZXcgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplIGRlY29yYXRvciB0
byBydW4gdGVzdHMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnRzCiAgIC0gbmV3IG1ldGFmdW5jLnBh
cmFtZXRyaXplKCkgQVBJIGZvciBwYXJhbWV0cml6aW5nIGFyZ3VtZW50cyBpbmRlcGVuZGVudGx5
Ci0gIC0gc2VlIGV4YW1wbGVzIGF0IGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9leGFtcGxlL3Bh
cmFtZXRyaXplLmh0bWwKKyAgLSBzZWUgZXhhbXBsZXMgYXQgaHR0cDovL3B5dGVzdC5vcmcvZW4v
c3RhYmxlL2V4YW1wbGUvcGFyYW1ldHJpemUuaHRtbAogICAtIE5PVEUgdGhhdCBwYXJhbWV0cml6
ZSgpIHJlbGF0ZWQgQVBJcyBhcmUgc3RpbGwgYSBiaXQgZXhwZXJpbWVudGFsCiAgICAgYW5kIG1p
Z2h0IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMuCiAKQEAgLTE4LDcgKzE4LDcgQEAgd2l0aCB0
aGVzZSBpbXByb3ZlbWVudHM6CiAgIC0gIi1tIG1hcmtleHByIiBvcHRpb24gZm9yIHNlbGVjdGlu
ZyB0ZXN0cyBhY2NvcmRpbmcgdG8gdGhlaXIgbWFyawogICAtIGEgbmV3ICJtYXJrZXJzIiBpbmkt
dmFyaWFibGUgZm9yIHJlZ2lzdGVyaW5nIHRlc3QgbWFya2VycyBmb3IgeW91ciBwcm9qZWN0CiAg
IC0gdGhlIG5ldyAiLS1zdHJpY3QiIGJhaWxzIG91dCB3aXRoIGFuIGVycm9yIGlmIHVzaW5nIHVu
cmVnaXN0ZXJlZCBtYXJrZXJzLgotICAtIHNlZSBleGFtcGxlcyBhdCBodHRwOi8vcHl0ZXN0Lm9y
Zy9sYXRlc3QvZXhhbXBsZS9tYXJrZXJzLmh0bWwKKyAgLSBzZWUgZXhhbXBsZXMgYXQgaHR0cDov
L3B5dGVzdC5vcmcvZW4vc3RhYmxlL2V4YW1wbGUvbWFya2Vycy5odG1sCiAKICogZHVyYXRpb24g
cHJvZmlsaW5nOiBuZXcgIi0tZHVyYXRpb249TiIgb3B0aW9uIHNob3dpbmcgdGhlIE4gc2xvd2Vz
dCB0ZXN0CiAgIGV4ZWN1dGlvbiBvciBzZXR1cC90ZWFyZG93biBjYWxscy4gVGhpcyBpcyBtb3N0
IHVzZWZ1bCBpZiB5b3Ugd2FudCB0bwpAQCAtNzgsNyArNzgsNyBAQCBDaGFuZ2VzIGJldHdlZW4g
Mi4xLjMgYW5kIDIuMi4wCiAgIG9yIHRocm91Z2ggcGx1Z2luIGhvb2tzLiAgQWxzbyBpbnRyb2R1
Y2UgYSAiLS1zdHJpY3QiIG9wdGlvbiB3aGljaAogICB3aWxsIHRyZWF0IHVucmVnaXN0ZXJlZCBt
YXJrZXJzIGFzIGVycm9ycwogICBhbGxvd2luZyB0byBhdm9pZCB0eXBvcyBhbmQgbWFpbnRhaW4g
YSB3ZWxsIGRlc2NyaWJlZCBzZXQgb2YgbWFya2VycwotICBmb3IgeW91ciB0ZXN0IHN1aXRlLiAg
U2VlIGV4YW1wbGVzIGF0IGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9tYXJrLmh0bWwKKyAgZm9y
IHlvdXIgdGVzdCBzdWl0ZS4gIFNlZSBleGFtcGxlcyBhdCBodHRwOi8vcHl0ZXN0Lm9yZy9lbi9z
dGFibGUvbWFyay5odG1sCiAgIGFuZCBpdHMgbGlua3MuCiAtIGlzc3VlNTA6IGludHJvZHVjZSAi
LW0gbWFya2VyIiBvcHRpb24gdG8gc2VsZWN0IHRlc3RzIGJhc2VkIG9uIG1hcmtlcnMKICAgKHRo
aXMgaXMgYSBzdHJpY3RlciBhbmQgbW9yZSBwcmVkaWN0YWJsZSB2ZXJzaW9uIG9mICItayIgaW4g
dGhhdCAiLW0iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0yLjMuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuMC5y
c3QKaW5kZXggMDYxYWEwMjVjMWU0Li5iZGQ5MmE5OGZkZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuMC5yc3QKQEAgLTMsMjIgKzMsMjIgQEAgcHl0ZXN0
LTIuMzogaW1wcm92ZWQgZml4dHVyZXMgLyBiZXR0ZXIgdW5pdHRlc3QgaW50ZWdyYXRpb24KIAog
cHl0ZXN0LTIuMyBjb21lcyB3aXRoIG1hbnkgbWFqb3IgaW1wcm92ZW1lbnRzIGZvciBmaXh0dXJl
L2Z1bmNhcmcgbWFuYWdlbWVudAogYW5kIHBhcmFtZXRyaXplZCB0ZXN0aW5nIGluIFB5dGhvbi4g
IEl0IGlzIG5vdyBlYXNpZXIsIG1vcmUgZWZmaWNpZW50IGFuZAotbW9yZSBwcmVkaWNhdGFibGUg
dG8gcmUtcnVuIHRoZSBzYW1lIHRlc3RzIHdpdGggZGlmZmVyZW50IGZpeHR1cmUKK21vcmUgcHJl
ZGljdGFibGUgdG8gcmUtcnVuIHRoZSBzYW1lIHRlc3RzIHdpdGggZGlmZmVyZW50IGZpeHR1cmUK
IGluc3RhbmNlcy4gIEFsc28sIHlvdSBjYW4gZGlyZWN0bHkgZGVjbGFyZSB0aGUgY2FjaGluZyAi
c2NvcGUiIG9mCiBmaXh0dXJlcyBzbyB0aGF0IGRlcGVuZGVudCB0ZXN0cyB0aHJvdWdob3V0IHlv
dXIgd2hvbGUgdGVzdCBzdWl0ZSBjYW4KIHJlLXVzZSBkYXRhYmFzZSBvciBvdGhlciBleHBlbnNp
dmUgZml4dHVyZSBvYmplY3RzIHdpdGggZWFzZS4gIExhc3RseSwKIGl0J3MgcG9zc2libGUgZm9y
IGZpeHR1cmUgZnVuY3Rpb25zIChmb3JtZXJseSBrbm93biBhcyBmdW5jYXJnCiBmYWN0b3JpZXMp
IHRvIHVzZSBvdGhlciBmaXh0dXJlcywgYWxsb3dpbmcgZm9yIGEgY29tcGxldGVseSBtb2R1bGFy
IGFuZAotcmUtdXNlYWJsZSBmaXh0dXJlIGRlc2lnbi4KK3JlLXVzYWJsZSBmaXh0dXJlIGRlc2ln
bi4KIAogRm9yIGRldGFpbGVkIGluZm8gYW5kIHR1dG9yaWFsLXN0eWxlIGV4YW1wbGVzLCBzZWU6
CiAKLSAgICBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZml4dHVyZS5odG1sCisgICAgaHR0cDov
L3B5dGVzdC5vcmcvZW4vc3RhYmxlL2ZpeHR1cmUuaHRtbAogCiBNb3Jlb3ZlciwgdGhlcmUgaXMg
bm93IHN1cHBvcnQgZm9yIHVzaW5nIHB5dGVzdCBmaXh0dXJlcy9mdW5jYXJncyB3aXRoCiB1bml0
dGVzdC1zdHlsZSBzdWl0ZXMsIHNlZSBoZXJlIGZvciBleGFtcGxlczoKIAotICAgIGh0dHA6Ly9w
eXRlc3Qub3JnL2xhdGVzdC91bml0dGVzdC5odG1sCisgICAgaHR0cDovL3B5dGVzdC5vcmcvZW4v
c3RhYmxlL3VuaXR0ZXN0Lmh0bWwKIAogQmVzaWRlcywgbW9yZSB1bml0dGVzdC10ZXN0IHN1aXRl
cyBhcmUgbm93IGV4cGVjdGVkIHRvICJzaW1wbHkgd29yayIKIHdpdGggcHl0ZXN0LgpAQCAtMjks
MTEgKzI5LDExIEBAIHB5dGVzdC0yLjIuNC4KIAogSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHRo
ZSBwcmVjaXNlIHJlYXNvbmluZyAoaW5jbHVkaW5nIGV4YW1wbGVzKSBvZiB0aGUKIHB5dGVzdC0y
LjMgZml4dHVyZSBldm9sdXRpb24sIHBsZWFzZSBjb25zdWx0Ci1odHRwOi8vcHl0ZXN0Lm9yZy9s
YXRlc3QvZnVuY2FyZ19jb21wYXJlLmh0bWwKK2h0dHA6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS9m
dW5jYXJnX2NvbXBhcmUuaHRtbAogCiBGb3IgZ2VuZXJhbCBpbmZvIG9uIGluc3RhbGxhdGlvbiBh
bmQgZ2V0dGluZyBzdGFydGVkOgogCi0gICAgaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L2dldHRp
bmctc3RhcnRlZC5odG1sCisgICAgaHR0cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxlL2dldHRpbmct
c3RhcnRlZC5odG1sCiAKIERvY3MgYW5kIFBERiBhY2Nlc3MgYXMgdXN1YWwgYXQ6CiAKQEAgLTk0
LDcgKzk0LDcgQEAgQ2hhbmdlcyBiZXR3ZWVuIDIuMi40IGFuZCAyLjMuMAogLSBwbHVnaW5tYW5h
Z2VyLnJlZ2lzdGVyKC4uLikgbm93IHJhaXNlcyBWYWx1ZUVycm9yIGlmIHRoZQogICBwbHVnaW4g
aGFzIGJlZW4gYWxyZWFkeSByZWdpc3RlcmVkIG9yIHRoZSBuYW1lIGlzIHRha2VuCiAKLS0gZml4
IGlzc3VlMTU5OiBpbXByb3ZlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9mYXEuaHRtbAorLSBm
aXggaXNzdWUxNTk6IGltcHJvdmUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vNi4wLjEvZmFx
Lmh0bWwKICAgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QgdG8gdGhlICJtYWdpYyIgaGlzdG9yeSwg
YWxzbyBtZW50aW9uCiAgIHB5dGVzdC1kamFuZ28sIHRyaWFsIGFuZCB1bml0dGVzdCBpbnRlZ3Jh
dGlvbi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi4zLjQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi4zLjQucnN0
CmluZGV4IGUyZThjYjE0M2EzMy4uMjZmNzY2MzBlODQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuNC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMi4zLjQucnN0CkBAIC0xNiw3ICsxNiw3IEBAIGNvbWVzIHdp
dGggdGhlIGZvbGxvd2luZyBmaXhlcyBhbmQgZmVhdHVyZXM6CiAtIHlpZWxkZWQgdGVzdCBmdW5j
dGlvbnMgd2lsbCBub3cgaGF2ZSBhdXRvdXNlLWZpeHR1cmVzIGFjdGl2ZSBidXQKICAgY2Fubm90
IGFjY2VwdCBmaXh0dXJlcyBhcyBmdW5jYXJncyAtIGl0J3MgYW55d2F5IHJlY29tbWVuZGVkIHRv
CiAgIHJhdGhlciB1c2UgdGhlIHBvc3QtMi4wIHBhcmFtZXRyaXplIGZlYXR1cmVzIGluc3RlYWQg
b2YgeWllbGQsIHNlZToKLSAgaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L2V4YW1wbGUvcGFyYW1l
dHJpemUuaHRtbAorICBodHRwOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvZXhhbXBsZS9wYXJhbWV0
cml6ZS5odG1sCiAtIGZpeCBhdXRvdXNlLWlzc3VlIHdoZXJlIGF1dG91c2UtZml4dHVyZXMgd291
bGQgbm90IGJlIGRpc2NvdmVyZWQKICAgaWYgZGVmaW5lZCBpbiBhbiBhL2NvbmZ0ZXN0LnB5IGZp
bGUgYW5kIHRlc3RzIGluIGEvdGVzdHMvdGVzdF9zb21lLnB5CiAtIGZpeCBpc3N1ZTIyNiAtIExJ
Rk8gb3JkZXJpbmcgZm9yIGZpeHR1cmUgdGVhcmRvd25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuNS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjMuNS5yc3QKaW5kZXggNDY1ZGQ4MjZlZDQ3Li5kNjg3ODBhMjQ0
MGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy41
LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjMuNS5yc3QK
QEAgLTQ2LDcgKzQ2LDcgQEAgQ2hhbmdlcyBiZXR3ZWVuIDIuMy40IGFuZCAyLjMuNQogLSBJc3N1
ZSAyNjUgLSBpbnRlZ3JhdGUgbm9zZSBzZXR1cC90ZWFyZG93biB3aXRoIHNldHVwc3RhdGUKICAg
c28gaXQgZG9lc24ndCB0cnkgdG8gdGVhcmRvd24gaWYgaXQgZGlkIG5vdCBzZXR1cAogCi0tIGlz
c3VlIDI3MSAtIGRvbid0IHdyaXRlIGp1bml0eG1sIG9uIHNsYXZlIG5vZGVzCistIGlzc3VlIDI3
MSAtIGRvbid0IHdyaXRlIGp1bml0eG1sIG9uIHdvcmtlciBub2RlcwogCiAtIElzc3VlIDI3NCAt
IGRvbid0IHRyeSB0byBzaG93IGZ1bGwgZG9jdGVzdCBleGFtcGxlCiAgIHdoZW4gZG9jdGVzdCBk
b2VzIG5vdCBrbm93IHRoZSBleGFtcGxlIGxvY2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjQuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjQuMC5yc3QKaW5kZXggMjVmNjI1NGM1Mjk5Li42ODI5N2IyNmM0
ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4w
LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjQuMC5yc3QK
QEAgLTcsNyArNyw3IEBAIGZyb20gYSBmZXcgc3VwcG9zZWRseSB2ZXJ5IG1pbm9yIGluY29tcGF0
aWJpbGl0aWVzLiAgU2VlIGJlbG93IGZvcgogYSBmdWxsIGxpc3Qgb2YgZGV0YWlscy4gIEEgZmV3
IGZlYXR1cmUgaGlnaGxpZ2h0czoKIAogLSBuZXcgeWllbGQtc3R5bGUgZml4dHVyZXMgYHB5dGVz
dC55aWVsZF9maXh0dXJlCi0gIDxodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QveWllbGRmaXh0dXJl
Lmh0bWw+YF8sIGFsbG93aW5nIHRvIHVzZQorICA8aHR0cDovL3B5dGVzdC5vcmcvZW4vc3RhYmxl
L3lpZWxkZml4dHVyZS5odG1sPmBfLCBhbGxvd2luZyB0byB1c2UKICAgZXhpc3Rpbmcgd2l0aC1z
dHlsZSBjb250ZXh0IG1hbmFnZXJzIGluIGZpeHR1cmUgZnVuY3Rpb25zLgogCiAtIGltcHJvdmVk
IHBkYiBzdXBwb3J0OiBgYGltcG9ydCBwZGIgOyBwZGIuc2V0X3RyYWNlKClgYCBub3cgd29ya3MK
QEAgLTIzLDcgKzIzLDcgQEAgYSBmdWxsIGxpc3Qgb2YgZGV0YWlscy4gIEEgZmV3IGZlYXR1cmUg
aGlnaGxpZ2h0czoKICAgY2FsbGVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIHNldHVwIG1ldGhvZCBz
dWNjZWVkZWQuCiAKIC0gaW50ZWdyYXRlIHRhYi1jb21wbGV0aW9uIG9uIGNvbW1hbmQgbGluZSBv
cHRpb25zIGlmIHlvdQotICBoYXZlIGBhcmdjb21wbGV0ZSA8aHR0cDovL3B5cGkucHl0aG9uLm9y
Zy9weXBpL2FyZ2NvbXBsZXRlPmBfCisgIGhhdmUgYGFyZ2NvbXBsZXRlIDxodHRwczovL3B5cGku
b3JnL3Byb2plY3QvYXJnY29tcGxldGUvPmBfCiAgIGNvbmZpZ3VyZWQuCiAKIC0gYWxsb3cgYm9v
bGVhbiBleHByZXNzaW9uIGRpcmVjdGx5IHdpdGggc2tpcGlmL3hmYWlsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMC5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMC5yc3QKaW5kZXggMjkwNjRlMDVlNmRiLi5i
YzgzZmRjMTIyYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuNS4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0y
LjUuMC5yc3QKQEAgLTkxLDcgKzkxLDcgQEAgaG9sZ2VyIGtyZWtlbAogICBpdCBtaWdodCBiZSB0
aGUgY2F1c2UgZm9yIG90aGVyIGZpbmFsaXplcnMgdG8gZmFpbC4KIAogLSBmaXggb3JkZXJpbmcg
d2hlbiBtb2NrLnBhdGNoIG9yIG90aGVyIHN0YW5kYXJkIGRlY29yYXRvci13cmFwcGluZ3MKLSAg
YXJlIHVzZWQgd2l0aCB0ZXN0IG1ldGhvZHMuICBUaGlzIGZpeHVlcyBpc3N1ZTM0NiBhbmQgc2hv
dWxkCisgIGFyZSB1c2VkIHdpdGggdGVzdCBtZXRob2RzLiAgVGhpcyBmaXhlcyBpc3N1ZTM0NiBh
bmQgc2hvdWxkCiAgIGhlbHAgd2l0aCByYW5kb20gInhkaXN0IiBjb2xsZWN0aW9uIGZhaWx1cmVz
LiAgVGhhbmtzIHRvCiAgIFJvbm55IFBmYW5uc2NobWlkdCBhbmQgRG9uYWxkIFN0dWZmdCBmb3Ig
aGVscGluZyB0byBpc29sYXRlIGl0LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjUuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjUuMS5yc3QKaW5kZXggMjJlNjlhODM2Yjk0Li5mZjM5ZGIyZDUyZGMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNS4xLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMS5yc3QKQEAgLTEsNyAr
MSw3IEBACiBweXRlc3QtMi41LjE6IGZpeGVzIGFuZCBuZXcgaG9tZSBwYWdlIHN0eWxpbmcKID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9v
bCB3aXRoIG1vcmUgdGhhbiBhIDEwMDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24g
dGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDEwMDAgdGVzdHMKIGFnYWluc3QgaXRzZWxmLCBw
YXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgogCiBU
aGUgMi41LjEgcmVsZWFzZSBtYWludGFpbnMgdGhlICJ6ZXJvLXJlcG9ydGVkLWJ1Z3MiIHByb21p
c2UgYnkgZml4aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0yLjUuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUu
Mi5yc3QKaW5kZXggYzM4OWY1ZjU0MDM4Li5lZGM0ZGE2ZTE5ZmUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNS4yLnJzdAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjUuMi5yc3QKQEAgLTEsNyArMSw3IEBACiBweXRl
c3QtMi41LjI6IGZpeGVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJl
IFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxMDAwIHRlc3RzCitweXRlc3Qg
aXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMDAwIHRlc3Rz
CiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMg
YW5kIHBsYXRmb3Jtcy4KIAogVGhlIDIuNS4yIHJlbGVhc2UgZml4ZXMgYSBmZXcgYnVncyB3aXRo
IHR3byBtYXliZS1idWdzIHJlbWFpbmluZyBhbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuNi4wLnJzdAppbmRleCAzNmI1NDVhMjhiNGIuLjU2ZmJkNmNjMWU0ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi42LjAucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4wLnJzdApAQCAt
MSw3ICsxLDcgQEAKIHB5dGVzdC0yLjYuMDogc2hvcnRlciB0cmFjZWJhY2tzLCBuZXcgd2Fybmlu
ZyBzeXN0ZW0sIHRlc3QgcnVubmVyIGNvbXBhdAogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLXB5dGVz
dCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTAwMCB0
ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRo
YW4gMTAwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQg
aW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFRoZSAyLjYuMCByZWxlYXNlIHNob3VsZCBi
ZSBkcm9wLWluIGJhY2t3YXJkIGNvbXBhdGlibGUgdG8gMi41LjIgYW5kCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjYuMS5yc3QKaW5kZXggZmJhNmYyOTkzYTVjLi43
NDY5YzQ4OGU1ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuNi4xLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0y
LjYuMS5yc3QKQEAgLTEsNyArMSw3IEBACiBweXRlc3QtMi42LjE6IGZpeGVzIGFuZCBuZXcgeGZh
aWwgZmVhdHVyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRo
b24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0cworcHl0ZXN0IGlzIGEg
bWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTEwMCB0ZXN0cwogYWdh
aW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBw
bGF0Zm9ybXMuCiBUaGUgMi42LjEgcmVsZWFzZSBpcyBkcm9wLWluIGNvbXBhdGlibGUgdG8gMi41
LjIgYW5kIGFjdHVhbGx5IGZpeGVzIHNvbWUKIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgd2l0aCAy
LjYuMC4gIEl0IGFsc28gYnJpbmdzIGEgbGl0dGxlIGZlYXR1cmUKQEAgLTMyLDcgKzMyLDcgQEAg
Q2hhbmdlcyAyLjYuMQogICBwdXJlbHkgdGhlIG5vZGVpZC4gIFRoZSBsaW5lIG51bWJlciBpcyBz
dGlsbCBzaG93biBpbiBmYWlsdXJlIHJlcG9ydHMuCiAgIFRoYW5rcyBGbG9yaXMgQnJ1eW5vb2do
ZS4KIAotLSBmaXggaXNzdWU0Mzcgd2hlcmUgYXNzZXJ0aW9uIHJld3JpdGluZyBjb3VsZCBjYXVz
ZSBweXRlc3QteGRpc3Qgc2xhdmVzCistIGZpeCBpc3N1ZTQzNyB3aGVyZSBhc3NlcnRpb24gcmV3
cml0aW5nIGNvdWxkIGNhdXNlIHB5dGVzdC14ZGlzdCB3b3JrZXIgbm9kZXMKICAgdG8gY29sbGVj
dCBkaWZmZXJlbnQgdGVzdHMuIFRoYW5rcyBCcnVubyBPbGl2ZWlyYS4KIAogLSBmaXggaXNzdWU1
NTU6IGFkZCAiZXJyb3JzIiBhdHRyaWJ1dGUgdG8gY2FwdHVyZS1zdHJlYW1zIHRvIHNhdGlzZnkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4yLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4yLnJzdAppbmRleCBm
NmNlMTc4YTEwNzAuLjljM2I3ZDk2YjA3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMi42LjIucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuNi4yLnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjYuMjogZmV3
IGZpeGVzIGFuZCBjeF9mcmVlemUgc3VwcG9ydAogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLXB5dGVz
dCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0
ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRo
YW4gMTEwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQg
aW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiBUaGlzIHJlbGVhc2UgaXMgZHJvcC1pbiBjb21w
YXRpYmxlIHRvIDIuNS4yIGFuZCAyLjYuWC4gIEl0IGFsc28KIGJyaW5ncyBzdXBwb3J0IGZvciBp
bmNsdWRpbmcgcHl0ZXN0IHdpdGggY3hfZnJlZXplIG9yIHNpbWlsYXIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4zLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4zLnJzdAppbmRleCA3MzUzZGZlZTcxY2QuLjU2
OTczYTJiMmY3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMi42LjMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
Ni4zLnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjYuMzogZml4ZXMgYW5kIGxpdHRsZSBp
bXByb3ZlbWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0
aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBpcyBh
IG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMKIGFn
YWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQg
cGxhdGZvcm1zLgogVGhpcyByZWxlYXNlIGlzIGRyb3AtaW4gY29tcGF0aWJsZSB0byAyLjUuMiBh
bmQgMi42LlguCiBTZWUgYmVsb3cgZm9yIHRoZSBjaGFuZ2VzIGFuZCBzZWUgZG9jcyBhdDoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4wLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4wLnJzdAppbmRleCBkNjMw
ODFlZGIxYjQuLjI4NDAxNzhhMDdmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMi43LjAucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuNy4wLnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjcuMDogZml4ZXMs
IGZlYXR1cmVzLCBzcGVlZCBpbXByb3ZlbWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1weXRl
c3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAg
dGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0
aGFuIDExMDAgdGVzdHMKIGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50
IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgogVGhpcyByZWxlYXNlIGlzIHN1cHBvc2VkIHRv
IGJlIGRyb3AtaW4gY29tcGF0aWJsZSB0byAyLjYuWC4KIApAQCAtMzUsNyArMzUsNyBAQCBob2xn
ZXIga3Jla2VsCiAtIGZpeCBpc3N1ZTQzNTogbWFrZSByZWxvYWQoKSB3b3JrIHdoZW4gYXNzZXJ0
IHJld3JpdGluZyBpcyBhY3RpdmUuCiAgIFRoYW5rcyBEYW5pZWwgSGFobGVyLgogCi0tIGZpeCBp
c3N1ZTYxNjogY29uZnRlc3QucHkgZmlsZXMgYW5kIHRoZWlyIGNvbnRhaW5lZCBmaXh1dHJlcyBh
cmUgbm93CistIGZpeCBpc3N1ZTYxNjogY29uZnRlc3QucHkgZmlsZXMgYW5kIHRoZWlyIGNvbnRh
aW5lZCBmaXh0dXJlcyBhcmUgbm93CiAgIHByb3Blcmx5IGNvbnNpZGVyZWQgZm9yIHZpc2liaWxp
dHksIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgZXhhY3QKICAgY3VycmVudCB3b3JraW5nIGRpcmVj
dG9yeSBhbmQgdGVzdCBhcmd1bWVudHMgdGhhdCBhcmUgdXNlZC4KICAgTWFueSB0aGFua3MgdG8g
RXJpYyBTaWVnZXJtYW4gYW5kIGhpcyBQUjIzNSB3aGljaCBjb250YWlucwpAQCAtNTIsNyArNTIs
NyBAQCBob2xnZXIga3Jla2VsCiAtIGFkZCBhYmlsaXR5IHRvIHNldCBjb21tYW5kIGxpbmUgb3B0
aW9ucyBieSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQWVRFU1RfQURET1BUUy4KIAogLSBhZGRlZCBk
b2N1bWVudGF0aW9uIG9uIHRoZSBuZXcgcHl0ZXN0LWRldiB0ZWFtcyBvbiBiaXRidWNrZXQgYW5k
Ci0gIGdpdGh1Yi4gIFNlZSBodHRwczovL3B5dGVzdC5vcmcvbGF0ZXN0L2NvbnRyaWJ1dGluZy5o
dG1sIC4KKyAgZ2l0aHViLiAgU2VlIGh0dHBzOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvY29udHJp
YnV0aW5nLmh0bWwgLgogICBUaGFua3MgdG8gQW5hdG9seSBmb3IgcHVzaGluZyBhbmQgaW5pdGlh
bCB3b3JrIG9uIHRoaXMuCiAKIC0gZml4IGlzc3VlNjUwOiBuZXcgb3B0aW9uIGBgLS1kb2N0dGVz
dC1pZ25vcmUtaW1wb3J0LWVycm9yc2BgIHdoaWNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS0yLjcuMS5yc3QKaW5kZXggZmRjNzFlZWJiYTk1Li41MTEwYzA4NWUwMWQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4xLnJz
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjcuMS5yc3QKQEAg
LTEsNyArMSw3IEBACiBweXRlc3QtMi43LjE6IGJ1ZyBmaXhlcwogPT09PT09PT09PT09PT09PT09
PT09PT0KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3Jl
IHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9v
bCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBt
YW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIFRoaXMgcmVsZWFzZSBp
cyBzdXBwb3NlZCB0byBiZSBkcm9wLWluIGNvbXBhdGlibGUgdG8gMi43LjAuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4yLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4yLnJzdAppbmRleCAxZTM5NTBkZTRk
MGMuLjkzZTViNjRlZWVkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMi43LjIucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuNy4yLnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjcuMjogYnVnIGZpeGVzCiA9
PT09PT09PT09PT09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3Rp
bmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQ
eXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMKIGFnYWluc3QgaXRz
ZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1z
LgogVGhpcyByZWxlYXNlIGlzIHN1cHBvc2VkIHRvIGJlIGRyb3AtaW4gY29tcGF0aWJsZSB0byAy
LjcuMS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
Mi44LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjIucnN0
CmluZGV4IGQ3MDI4NjE2MTQyMi4uZTQ3MjYzMzg4NTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjIucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIu
OC4yOiBidWcgZml4ZXMKID09PT09PT09PT09PT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1h
dHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0cworcHl0
ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTEwMCB0
ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0
ZXJzIGFuZCBwbGF0Zm9ybXMuCiBUaGlzIHJlbGVhc2UgaXMgc3VwcG9zZWQgdG8gYmUgZHJvcC1p
biBjb21wYXRpYmxlIHRvIDIuOC4xLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjguMy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjguMy5yc3QKaW5kZXggYjEzMWE3ZTFmMTRkLi4zZjM1NzI1MmJiNjEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4zLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguMy5yc3QKQEAgLTEsNyAr
MSw3IEBACiBweXRlc3QtMi44LjM6IGJ1ZyBmaXhlcwogPT09PT09PT09PT09PT09PT09PT09PT0K
IAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4g
YSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRo
IG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRp
ZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIFRoaXMgcmVsZWFzZSBpcyBzdXBw
b3NlZCB0byBiZSBkcm9wLWluIGNvbXBhdGlibGUgdG8gMi44LjIuCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC40LnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC40LnJzdAppbmRleCBhMDk2MjljZWYwOTkuLmFk
YmRlY2M4N2VhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMi44LjQucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
OC40LnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjguNAogPT09PT09PT09PT09CiAKLXB5
dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTEw
MCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3Jl
IHRoYW4gMTEwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJl
bnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiBUaGlzIHJlbGVhc2UgaXMgc3VwcG9zZWQg
dG8gYmUgZHJvcC1pbiBjb21wYXRpYmxlIHRvIDIuOC4yLgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNS5yc3QKaW5kZXggNzQwOTAyMmExMzcxLi5jNTM0M2Qx
ZWE3MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
OC41LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNS5y
c3QKQEAgLTEsNyArMSw3IEBACiBweXRlc3QtMi44LjUKID09PT09PT09PT09PQogCi1weXRlc3Qg
aXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVz
dHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFu
IDExMDAgdGVzdHMKIGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGlu
dGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgogVGhpcyByZWxlYXNlIGlzIHN1cHBvc2VkIHRvIGJl
IGRyb3AtaW4gY29tcGF0aWJsZSB0byAyLjguNC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjYucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMi44LjYucnN0CmluZGV4IDIxNWZhZTUxZWFjMC4uNWQ2NTY1YjE2YTM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjguNi5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjYucnN0CkBA
IC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIuOC42CiA9PT09PT09PT09PT0KIAotcHl0ZXN0IGlzIGEg
bWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxMTAwIHRlc3RzCitw
eXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMTAw
IHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnBy
ZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIFRoaXMgcmVsZWFzZSBpcyBzdXBwb3NlZCB0byBiZSBkcm9w
LWluIGNvbXBhdGlibGUgdG8gMi44LjUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuOC43LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuOC43LnJzdAppbmRleCA5MDA1ZjU2MzYzYTMuLjgyMzZhMDk2NjY5NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi44LjcucnN0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC43LnJzdApAQCAtNCw3
ICs0LDcgQEAgcHl0ZXN0LTIuOC43CiBUaGlzIGlzIGEgaG90Zml4IHJlbGVhc2UgdG8gc29sdmUg
YSByZWdyZXNzaW9uCiBpbiB0aGUgYnVpbHRpbiBtb25rZXlwYXRjaCBwbHVnaW4gdGhhdCBnb3Qg
aW50cm9kdWNlZCBpbiAyLjguNi4KIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5n
IHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0
aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2Vs
ZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4K
IFRoaXMgcmVsZWFzZSBpcyBzdXBwb3NlZCB0byBiZSBkcm9wLWluIGNvbXBhdGlibGUgdG8gMi44
LjUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
OS4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4wLnJzdApp
bmRleCA4ZDgyOTk5NmQ4M2MuLjhjMmVlMDVmOWJmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi45LjAucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4wLnJzdApAQCAtMSw3ICsxLDcgQEAKIHB5dGVzdC0yLjku
MAogPT09PT09PT09PT09CiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29s
IHdpdGggbW9yZSB0aGFuIGEgMTEwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0
ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTEwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBh
c3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFNl
ZSBiZWxvdyBmb3IgdGhlIGNoYW5nZXMgYW5kIHNlZSBkb2NzIGF0OgpAQCAtNzUsNyArNzUsNyBA
QCBUaGUgcHkudGVzdCBEZXZlbG9wbWVudCBUZWFtCiAKICoqQ2hhbmdlcyoqCiAKLSogKipJbXBv
cnRhbnQqKjogYHB5LmNvZGUgPGh0dHBzOi8vcHlsaWIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0
L2NvZGUuaHRtbD5gXyBoYXMgYmVlbgorKiAqKkltcG9ydGFudCoqOiBgcHkuY29kZSA8aHR0cHM6
Ly9weWxpYi5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvY29kZS5odG1sPmBfIGhhcyBiZWVuCiAg
IG1lcmdlZCBpbnRvIHRoZSBgYHB5dGVzdGBgIHJlcG9zaXRvcnkgYXMgYGBweXRlc3QuX2NvZGVg
YC4gVGhpcyBkZWNpc2lvbgogICB3YXMgbWFkZSBiZWNhdXNlIGBgcHkuY29kZWBgIGhhZCB2ZXJ5
IGZldyB1c2VzIG91dHNpZGUgYGBweXRlc3RgYCBhbmQgdGhlCiAgIGZhY3QgdGhhdCBpdCB3YXMg
aW4gYSBkaWZmZXJlbnQgcmVwb3NpdG9yeSBtYWRlIGl0IGRpZmZpY3VsdCB0byBmaXggYnVncyBv
bgpAQCAtODgsNyArODgsNyBAQCBUaGUgcHkudGVzdCBEZXZlbG9wbWVudCBUZWFtCiAgICoqZXhw
ZXJpbWVudGFsKiosIHNvIHlvdSBkZWZpbml0ZWx5IHNob3VsZCBub3QgaW1wb3J0IGl0IGV4cGxp
Y2l0bHkhCiAKICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgYGBweS5jb2RlYGAgaXMg
c3RpbGwgYXZhaWxhYmxlIGluCi0gIGBweWxpYiA8aHR0cHM6Ly9weWxpYi5yZWFkdGhlZG9jcy5p
bz5gXy4KKyAgYHB5bGliIDxodHRwczovL3B5bGliLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS8+
YF8uCiAKICogYGBweXRlc3RfZW50ZXJfcGRiYGAgbm93IG9wdGlvbmFsbHkgcmVjZWl2ZXMgdGhl
IHB5dGVzdCBjb25maWcgb2JqZWN0LgogICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KQEAgLTEyNCwxNCArMTI0LDE0IEBAIFRoZSBweS50ZXN0IERldmVsb3BtZW50IFRlYW0KICAg
VGhhbmtzIGBAYmllcm5gXyBmb3IgdGhlIFBSLgogCiAqIEZpeCBgdHJhY2ViYWNrIHN0eWxlIGRv
Y3NgXyB0byBkZXNjcmliZSBhbGwgb2YgdGhlIGF2YWlsYWJsZSBvcHRpb25zCi0gIChhdXRvL2xv
bmcvc2hvcnQvbGluZS9uYXRpdmUvbm8pLCB3aXRoIGBhdXRvYCBiZWluZyB0aGUgZGVmYXVsdCBz
aW5jZSB2Mi42LgorICAoYXV0by9sb25nL3Nob3J0L2xpbmUvbmF0aXZlL25vKSwgd2l0aCBgYGF1
dG9gYCBiZWluZyB0aGUgZGVmYXVsdCBzaW5jZSB2Mi42LgogICBUaGFua3MgYEBoYWNrZWJyb3Rg
XyBmb3IgdGhlIFBSLgogCiAqIEZpeCAoYCMxNDIyYF8pOiBqdW5pdCByZWNvcmRfeG1sX3Byb3Bl
cnR5IGRvZXNuJ3QgYWxsb3cgbXVsdGlwbGUgcmVjb3JkcwogICB3aXRoIHNhbWUgbmFtZS4KIAog
Ci0uLiBfYHRyYWNlYmFjayBzdHlsZSBkb2NzYDogaHR0cHM6Ly9weXRlc3Qub3JnL2xhdGVzdC91
c2FnZS5odG1sI21vZGlmeWluZy1weXRob24tdHJhY2ViYWNrLXByaW50aW5nCisuLiBfYHRyYWNl
YmFjayBzdHlsZSBkb2NzYDogaHR0cHM6Ly9weXRlc3Qub3JnL2VuL3N0YWJsZS91c2FnZS5odG1s
I21vZGlmeWluZy1weXRob24tdHJhY2ViYWNrLXByaW50aW5nCiAKIC4uIF8jMTQyMjogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDIyCiAuLiBfIzEzNzk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM3OQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi45LjEucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMi45LjEucnN0CmluZGV4IGM3MWYzODUxNjM4
Mi4uNDdiYzJlNmQzOGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjkuMS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMi45LjEucnN0CkBAIC0xLDcgKzEsNyBAQAogcHl0ZXN0LTIuOS4xCiA9PT09PT09PT09PT0K
IAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4g
YSAxMTAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRo
IG1vcmUgdGhhbiAxMTAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRp
ZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAogU2VlIGJlbG93IGZvciB0aGUg
Y2hhbmdlcyBhbmQgc2VlIGRvY3MgYXQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0yLjkuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0yLjkuMi5yc3QKaW5kZXggOGYyNzRjZGYzOTgxLi5mZmQ4ZGM1OGVkNTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4yLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0yLjkuMi5yc3QKQEAgLTEsNyAr
MSw3IEBACiBweXRlc3QtMi45LjIKID09PT09PT09PT09PQogCi1weXRlc3QgaXMgYSBtYXR1cmUg
UHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDExMDAgdGVzdHMKK3B5dGVzdCBp
cyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDExMDAgdGVzdHMK
IGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBh
bmQgcGxhdGZvcm1zLgogCiBTZWUgYmVsb3cgZm9yIHRoZSBjaGFuZ2VzIGFuZCBzZWUgZG9jcyBh
dDoKQEAgLTY2LDggKzY2LDggQEAgVGhlIHB5LnRlc3QgRGV2ZWxvcG1lbnQgVGVhbQogCiAuLiBf
IzUxMDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTAKIC4u
IF8jMTUwNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUwNgot
Li4gXyMxNDk2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWUvMTQ5
NgotLi4gXyMxNTI0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWUv
MTUyNAorLi4gXyMxNDk2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE0OTYKKy4uIF8jMTUyNDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L3B1bGwvMTUyNAogCiAuLiBfQGFzdHJhdzM4OiBodHRwczovL2dpdGh1Yi5jb20vYXN0cmF3MzgK
IC4uIF9AaGFja2Vicm90OiBodHRwczovL2dpdGh1Yi5jb20vaGFja2Vicm90CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMC5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMC5yc3QKaW5kZXggY2EzZTllMzI3NjMy
Li41ZGUzODkxMTQ4MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMC4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjAuMC5yc3QKQEAgLTMsNyArMyw3IEBAIHB5dGVzdC0zLjAuMAogCiBUaGUgcHl0ZXN0IHRl
YW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDMuMC4wIHJlbGVhc2UhCiAKLXB5dGVzdCBpcyBh
IG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIGEgMTYwMCB0ZXN0cwor
cHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMTYw
MCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJw
cmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFRoaXMgcmVsZWFzZSBjb250YWlucyBhIGxvdCBvZiBi
dWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIGFuZCBtdWNoIG9mCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMS5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMS5yc3QKaW5kZXggZWI2ZjZhNTBlZjdmLi44ZjVj
ZmU0MTFhYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMC4xLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAu
MS5yc3QKQEAgLTgsNyArOCw3IEBAIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6CiAK
ICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgY2hhbmdlbG9nIGlzIGF2YWls
YWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgor
VGhlIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjAuMi5yc3QKaW5kZXggNGFmNDEyZmM1ZWU1Li44NmJhODJjYTZlNjggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4yLnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMi5yc3QKQEAgLTgs
NyArOCw3IEBAIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0
YWxsIC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0
cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBjaGFuZ2Vs
b2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdl
bG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFz
ZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy4wLjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
My4wLjMucnN0CmluZGV4IDg5NmQ0Nzg3MzA0Yy4uODlhMmUwYzc0NGViIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuMy5yc3QKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjMucnN0CkBAIC04LDcgKzgsNyBAQCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDov
L2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBjaGFuZ2Vsb2cg
aXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwg
YW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMy4wLjQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4w
LjQucnN0CmluZGV4IDg1NWJjNTZkNWI4Ny4uNzJjMmQyOTQ2NGRmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuNC5yc3QKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjQucnN0CkBAIC04LDcgKzgsNyBAQCBiZWlu
ZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0t
dXBncmFkZSBweXRlc3QKIAotVGhlIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2Rv
Yy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBjaGFuZ2Vsb2cgaXMg
YXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMy4wLjUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjUu
cnN0CmluZGV4IDJmMzY5ODI3NTg4OS4uOTdlZGI3ZDQ2MjhjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAuNS5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjUucnN0CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlz
IGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3Jh
ZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGNoYW5nZWxvZyBp
cyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cu
aHRtbC4KK1RoZSBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1
dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjYucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy4wLjYucnN0CmluZGV4IDE0OWMyZDY1ZTFhOS4uOWMwNzJjZWRj
Y2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjAu
Ni5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjYucnN0
CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3At
aW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBw
eXRlc3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5
dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlz
IGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5o
dG1sLgogCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwg
YW1vbmcgdGhlbToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuMC43LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC43
LnJzdAppbmRleCBiMzdlNGY2MWRlZTMuLjRiN2UwNzVlNzZhZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4wLjcucnN0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC43LnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBp
cyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdy
YWRlOjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5n
ZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFu
Z2Vsb2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2Rv
Yy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3
aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMC5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMC5yc3QKaW5kZXggOTljYzZiZGJlMjA3
Li41NTI3NzA2Nzk0OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMS4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS0zLjEuMC5yc3QKQEAgLTMsMTMgKzMsMTMgQEAgcHl0ZXN0LTMuMS4wCiAKIFRoZSBweXRlc3Qg
dGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgMy4xLjAgcmVsZWFzZSEKIAotcHl0ZXN0IGlz
IGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxNjAwIHRlc3Rz
CitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAx
NjAwIHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRl
cnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAogVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgYnVncyBm
aXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAogdG8gdGFrZSBh
IGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKIAotaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVz
dC9jaGFuZ2Vsb2cuaHRtbAoraHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vs
b2cuaHRtbAogCiBGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMS5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMS5yc3QKaW5kZXggNGNl
NzUzMTk3N2MzLi4xMzViMmZlODQ0M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuMS4xLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjEuMS5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJl
bGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlw
IGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxh
YmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitU
aGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVk
IHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy4xLjIucnN0CmluZGV4IDhlZDBjOTNlOWFkMi4uYTliODVjNDcxNWM2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEuMi5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjIucnN0CkBA
IC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4g
cmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRl
c3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVz
dC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2
YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1s
LgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25n
IHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMS4zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4zLnJz
dAppbmRleCBkNzc3MWY5MjIzMjYuLmJjMmI4NWZjZmQ1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xLjMucnN0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4zLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBh
IGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRl
OjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxv
ZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vs
b2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8g
Y29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEwLjAucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xMC4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmZmM2MwMDBiMGU3OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMTAuMC5yc3QKQEAgLTAsMCArMSw0
MyBAQAorcHl0ZXN0LTMuMTAuMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgMy4xMC4wIHJl
bGVhc2UhCisKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9y
ZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVy
ZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMg
YSBudW1iZXIgb2YgYnVncyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5j
b3VyYWdlZAordG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8v
ZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUg
ZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vc3RhYmxlLworCitBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6
CisKKyAgICBwaXAgaW5zdGFsbCAtVSBweXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJp
YnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFuZGVycyBIb3Ztw7ZsbGVy
CisqIEFuZHJldSBWYWxsYm9uYSBQbGF6YXMKKyogQW5raXQgR29lbAorKiBBbnRob255IFNvdHRp
bGUKKyogQmVybmFyZG8gR29tZXMKKyogQnJpYW5uYSBMYXVnaGVyCisqIEJydW5vIE9saXZlaXJh
CisqIERhbmllbCBIYWhsZXIKKyogRGF2aWQgU3pvdHRlbgorKiBNaWNrIEtvY2gKKyogTmljbGFz
IE9sb2Zzc29uCisqIFBhbGFzaCBDaGF0dGVyamVlCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBT
dmVuLUhlbmRyaWsgSGFhc2UKKyogVmlsbGUgU2t5dHTDpAorKiBXaWxsaWFtIEphbWlyIFNpbHZh
CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4xMC4xLnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMTAuMS5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZDM2NWY2MzQ3NGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjEwLjEucnN0CkBAIC0w
LDAgKzEsMjQgQEAKK3B5dGVzdC0zLjEwLjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorCitweXRlc3QgMy4xMC4xIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQ
SS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2Vt
ZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1Ro
ZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRl
ZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJv
cmlzIEZlbGQKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBGYWJpZW4gWkFS
SUZJQU4KKyogSm9uIER1ZnJlc25lCisqIFJvbm55IFBmYW5uc2NobWlkdAorCisKK0hhcHB5IHRl
c3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4wLnJzdAppbmRleCA0ZDI4MzBlZGQyZGUuLmVkYzY2YTI4
ZTc4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4y
LjAucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4wLnJz
dApAQCAtMywxMyArMywxMyBAQCBweXRlc3QtMy4yLjAKIAogVGhlIHB5dGVzdCB0ZWFtIGlzIHBy
b3VkIHRvIGFubm91bmNlIHRoZSAzLjIuMCByZWxlYXNlIQogCi1weXRlc3QgaXMgYSBtYXR1cmUg
UHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDE2MDAgdGVzdHMKK3B5dGVzdCBp
cyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDE2MDAgdGVzdHMK
IGFnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBh
bmQgcGxhdGZvcm1zLgogCiBUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBm
aXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAogdG8gdGFrZSBh
IGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKIAotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9s
YXRlc3QvY2hhbmdlbG9nLmh0bWwKKyAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxl
L2NoYW5nZWxvZy5odG1sCiAKIEZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2Ugdmlz
aXQ6CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
Mi4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4xLnJzdApp
bmRleCBhZmUyYzViZmUyYzEuLmM0MDIxN2QzMTFkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4yLjEucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4xLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBhIGJ1
Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoK
IAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxvZyBp
cyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cu
aHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8gY29u
dHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMi5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMi5yc3QKaW5kZXggODhlMzI4NzNhMWI0Li41ZTZj
NDNhYjE3N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMi4yLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIu
Mi5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEg
ZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3RhbGwgLS11cGdy
YWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9k
b2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVsbCBjaGFuZ2Vs
b2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdl
bG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFz
ZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy4yLjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
My4yLjMucnN0CmluZGV4IGRkZmRhNGQxMzJmYi4uNTBkY2UyOWMxYWRmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuMy5yc3QKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4yLjMucnN0CkBAIC03LDcgKzcsNyBAQCBU
aGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRv
IHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGZ1bGwg
Y2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0
L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRw
Oi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgogCiBUaGFua3MgdG8g
YWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi40LnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi40LnJzdAppbmRleCA2NWU0ODZi
N2FhMjIuLmZmMGIzNTc4MWIxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMy4yLjQucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMi40LnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFz
ZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5z
dGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUg
YXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBm
dWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuNS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjIuNS5yc3QKaW5kZXggMmU1MzA0YzZmMjcwLi42OGNhY2NiZGJjNWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi41LnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjIuNS5yc3QKQEAgLTcs
NyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBs
YWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAog
Ci1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9y
Zy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxh
YmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCiAK
IFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhl
bToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4z
LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4zLjAucnN0Cmlu
ZGV4IGUwNzQwZTdkNTkyOS4uMWNiZjJjNDQ4YzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjMuMC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy4zLjAucnN0CkBAIC0zLDEzICszLDEzIEBAIHB5dGVzdC0zLjMu
MAogCiBUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDMuMy4wIHJlbGVh
c2UhCiAKLXB5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0
aGFuIGEgMTYwMCB0ZXN0cworcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wg
d2l0aCBtb3JlIHRoYW4gMTYwMCB0ZXN0cwogYWdhaW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFu
eSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBwbGF0Zm9ybXMuCiAKIFRoaXMgcmVsZWFzZSBj
b250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJz
IGFyZSBlbmNvdXJhZ2VkCiB0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgogCi0gICAg
aHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbAorICAgIGh0dHA6
Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKIAogRm9yIGNvbXBsZXRl
IGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4zLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy4zLjEucnN0CmluZGV4IDdlZWQ4MzZhZTZkNS4uOThiNmZhNmMxYmFk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjMuMS5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4zLjEucnN0CkBA
IC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4g
cmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRl
c3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVz
dC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2
YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1s
LgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25n
IHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMy4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4yLnJz
dAppbmRleCBkOWFjZWY5NDdkZGQuLjdhMjU3N2QxZmY4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy4zLjIucnN0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4yLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBh
IGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRl
OjoKIAogICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxv
ZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vs
b2cuaHRtbC4KK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8g
Y29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQuMC5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQuMC5yc3QKaW5kZXggZGYxZTAwNGYxY2MxLi42
YWI1YjEyNGEyNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuNC4wLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0z
LjQuMC5yc3QKQEAgLTMsMTMgKzMsMTMgQEAgcHl0ZXN0LTMuNC4wCiAKIFRoZSBweXRlc3QgdGVh
bSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgMy40LjAgcmVsZWFzZSEKIAotcHl0ZXN0IGlzIGEg
bWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxNjAwIHRlc3RzCitw
eXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxNjAw
IHRlc3RzCiBhZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnBy
ZXRlcnMgYW5kIHBsYXRmb3Jtcy4KIAogVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9m
IGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKIHRv
IHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CiAKLSAgICBodHRwOi8vZG9jLnB5dGVzdC5v
cmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sCisgICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAogCiBGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxl
YXNlIHZpc2l0OgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS0zLjQuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQu
MS5yc3QKaW5kZXggZTM3ZjVkN2UyNDA1Li5kODM5NDk0NTNhMjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4xLnJzdAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjQuMS5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMg
aXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBn
cmFkZTo6CiAKICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFu
Z2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hh
bmdlbG9nLmh0bWwuCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9k
b2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwg
d2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy40LjIucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy40LjIucnN0CmluZGV4IDhlOTk4ODIyOGZh
Yy4uMDdjZDlkM2E4YmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS0zLjQuMi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtMy40LjIucnN0CkBAIC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwg
Y2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxl
L2NoYW5nZWxvZy5odG1sLgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlz
IHJlbGVhc2UsIGFtb25nIHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuNS4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuNS4wLnJzdAppbmRleCA1NGEwNWNlYTI0ZDkuLjZiYzJmM2NkMGNiNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy41LjAucnN0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4wLnJzdApAQCAtMywxMyAr
MywxMyBAQCBweXRlc3QtMy41LjAKIAogVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91
bmNlIHRoZSAzLjUuMCByZWxlYXNlIQogCi1weXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3Rp
bmcgdG9vbCB3aXRoIG1vcmUgdGhhbiBhIDE2MDAgdGVzdHMKK3B5dGVzdCBpcyBhIG1hdHVyZSBQ
eXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDE2MDAgdGVzdHMKIGFnYWluc3QgaXRz
ZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1z
LgogCiBUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBmaXhlcyBhbmQgaW1w
cm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAogdG8gdGFrZSBhIGxvb2sgYXQgdGhl
IENIQU5HRUxPRzoKIAotICAgIGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdl
bG9nLmh0bWwKKyAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5o
dG1sCiAKIEZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4xLnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4xLnJzdAppbmRleCA5MWYxNDM5
MGVlYjUuLjgwMmJlMDM2ODQ4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMy41LjEucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuNS4xLnJzdApAQCAtNyw3ICs3LDcgQEAgVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFz
ZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKIAogICBwaXAgaW5z
dGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CiAKLVRoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUg
YXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC9jaGFuZ2Vsb2cuaHRtbC4KK1RoZSBm
dWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KIAogVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjYuMC5yc3QKaW5kZXggMzczNjFjZjRhZGQ4Li40NGIxNzhjMTY5ZmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi4wLnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMC5yc3QKQEAgLTMs
MTMgKzMsMTMgQEAgcHl0ZXN0LTMuNi4wCiAKIFRoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBh
bm5vdW5jZSB0aGUgMy42LjAgcmVsZWFzZSEKIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhvbiB0
ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAxNjAwIHRlc3RzCitweXRlc3QgaXMgYSBtYXR1
cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAxNjAwIHRlc3RzCiBhZ2FpbnN0
IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRm
b3Jtcy4KIAogVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5k
IGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKIHRvIHRha2UgYSBsb29rIGF0
IHRoZSBDSEFOR0VMT0c6CiAKLSAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2No
YW5nZWxvZy5odG1sCisgICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vs
b2cuaHRtbAogCiBGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMS5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMS5yc3QKaW5kZXggM2Jl
ZGNmNDZhODVlLi5kOTcxYTNkNDkwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuNi4xLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjYuMS5yc3QKQEAgLTcsNyArNyw3IEBAIFRoaXMgaXMgYSBidWctZml4IHJl
bGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlw
IGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxh
YmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitU
aGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCiAKIFRoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVk
IHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy42LjIucnN0CmluZGV4IGExMjE1ZjU3Njg5Yy4uOWQ5MTk5NTc5Mzkw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjYuMi5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy42LjIucnN0CkBA
IC03LDcgKzcsNyBAQCBUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4g
cmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgogCiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRl
c3QKIAotVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVz
dC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2
YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1s
LgogCiBUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25n
IHRoZW06CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuNi4zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi4zLnJz
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRkZGEyNDYwZGFjYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
Ni4zLnJzdApAQCAtMCwwICsxLDI3IEBACitweXRlc3QtMy42LjMKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgMy42LjMgaGFzIGp1c3QgYmVlbiByZWxl
YXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3At
aW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBw
eXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5
dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBj
b250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQWRhbUVyOAorKiBB
bnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogSmVhbi1QYXVsIENhbGRlcm9uZQor
KiBKb24gRHVmcmVzbmUKKyogTWFyY2VsbyBEdWFydGUgVHJldmlzYW5pCisqIE9uZMWZZWogU8O6
a3VwCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBULkUuQSBkZSBTb3V6YQorKiBWaWN0b3IgTWFy
eWFtYQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi40LnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi40LnJzdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJjMGY5ZWZlY2NmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi40LnJzdApAQCAt
MCwwICsxLDI0IEBACitweXRlc3QtMy42LjQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorCitweXRlc3QgMy42LjQgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJ
LgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1l
bnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhl
IGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0
byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJlcm5o
YXJkIE0uIFdpZWRlbWFubgorKiBCcnVubyBPbGl2ZWlyYQorKiBEcmV3CisqIEUgSGVyc2hleQor
KiBIdWdvIE1hcnRpbnMKKyogVmxhZCBTaGNoZXJiaW5hCisKKworSGFwcHkgdGVzdGluZywKK1Ro
ZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy43LjAucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy43LjAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODk5MDhhOTEwMWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy43LjAucnN0CkBAIC0wLDAgKzEsNDEgQEAKK3B5dGVzdC0zLjcuMAor
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBweXRlc3QgdGVh
bSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgMy43LjAgcmVsZWFzZSEKKworcHl0ZXN0IGlzIGEg
bWF0dXJlIFB5dGhvbiB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gMjAwMCB0ZXN0cworYWdh
aW5zdCBpdHNlbGYsIHBhc3Npbmcgb24gbWFueSBkaWZmZXJlbnQgaW50ZXJwcmV0ZXJzIGFuZCBw
bGF0Zm9ybXMuCisKK1RoaXMgcmVsZWFzZSBjb250YWlucyBhIG51bWJlciBvZiBidWdzIGZpeGVz
IGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCit0byB0YWtlIGEgbG9v
ayBhdCB0aGUgQ0hBTkdFTE9HOgorCisgICAgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZp
c2l0OgorCisgICAgaHR0cDovL2RvY3MucHl0ZXN0Lm9yZworCitBcyB1c3VhbCwgeW91IGNhbiB1
cGdyYWRlIGZyb20gcHlwaSB2aWE6CisKKyAgICBwaXAgaW5zdGFsbCAtVSBweXRlc3QKKworVGhh
bmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgor
CisqIEFsYW4KKyogQWxhbiBCcmFtbWVyCisqIEFtbWFyIE5hamphcgorKiBBbnRob255IFNvdHRp
bGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogSmVmZnJleSBSYWNrYXVja2FzCisqIEthbGUgS3VuZGVy
dAorKiBSb25ueSBQZmFubnNjaG1pZHQKKyogU2VyaGlpIE1vemdob3Z5aQorKiBUYWRlayBUZWxl
xbx5xYRza2kKKyogV2lsIENvb2xleQorKiBhYnJhbW1lcgorKiBhdmlybHJtYQorKiB0dXJ0dXJp
Y2EKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIFB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjcuMS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjcuMS5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZGE1YTNlMWY3ZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjcuMS5yc3QKQEAgLTAs
MCArMSwyMSBAQAorcHl0ZXN0LTMuNy4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKworcHl0ZXN0IDMuNy4xIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4K
KworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50
LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBm
dWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBP
bGl2ZWlyYQorKiBLYWxlIEt1bmRlcnQKKyogUm9ubnkgUGZhbm5zY2htaWR0CisKKworSGFwcHkg
dGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy43LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtMy43LjIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZmNjNjEyMTc1MmRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy43LjIucnN0CkBAIC0wLDAgKzEsMjUgQEAKK3B5
dGVzdC0zLjcuMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5
dGVzdCAzLjcuMiBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBi
dWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6
CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cg
aXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwg
YW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFu
aWVsIEhhaGxlcgorKiBKb3NoIEhvbGxhbmQKKyogUm9ubnkgUGZhbm5zY2htaWR0CisqIFNhbmt0
IFBldGVyc2J1ZworKiBXZXMgVGhvbWFzCisqIHR1cnR1cmljYQorCisKK0hhcHB5IHRlc3Rpbmcs
CitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNy4zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuNy4zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmVlODdkYTYwZDIzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuNy4zLnJzdApAQCAtMCwwICsxLDMyIEBACitweXRlc3QtMy43
LjMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgMy43
LjMgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCBy
ZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBp
cCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWls
YWJsZSBhdCBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgor
CitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRo
ZW06CisKKyogQW5kcmV3IENoYW1waW9uCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2
ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIEdhbmRhbGYgU2F4ZQorKiBKZW5uaWZlciBSaW5rZXIK
KyogTmF0YW4gTGFvCisqIE9uZMWZZWogU8O6a3VwCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBT
YW5rdCBQZXRlcnNidWcKKyogVHlsZXIgUmljaGFyZAorKiBWaWN0b3IgTWFyeWFtYQorKiBWbGFk
IFNoY2hlcmJpbmEKKyogdHVydHVyaWNhCisqIHdpbSBnbGVubgorCisKK0hhcHB5IHRlc3Rpbmcs
CitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNy40LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuNy40LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ1YmU0MjkzODg1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuNy40LnJzdApAQCAtMCwwICsxLDIyIEBACitweXRlc3QtMy43
LjQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgMy43
LjQgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCBy
ZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBp
cCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWls
YWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwu
CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcg
dGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhh
aGxlcgorKiBKaXJpIEt1bmNhcgorKiBTdGV2ZSBQaWVyY3kKKworCitIYXBweSB0ZXN0aW5nLAor
VGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjguMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS0zLjguMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi44YzM1YTQ0ZjZkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjguMC5yc3QKQEAgLTAsMCArMSwzOCBAQAorcHl0ZXN0LTMuOC4w
Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0
ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSAzLjguMCByZWxlYXNlIQorCitweXRlc3QgaXMg
YSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCith
Z2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5k
IHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4
ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBs
b29rIGF0IHRoZSBDSEFOR0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvY2hhbmdlbG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFz
ZSB2aXNpdDoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMg
dXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwg
LVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFz
ZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyog
Q3JhenlNZXJseW4KKyogRGFuaWVsIEhhaGxlcgorKiBGYWJpbyBaYWRyb3pueQorKiBKZWZmcmV5
IFJhY2thdWNrYXMKKyogUm9ubnkgUGZhbm5zY2htaWR0CisqIFZpcmdpbCBEdXByYXMKKyogZGhp
cmVuc3IKKyogaG9lZmxpbmcKKyogd2ltIGdsZW5uCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQ
eXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy44LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtMy44LjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZjhmOGFjY2M0YzkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtMy44LjEucnN0CkBAIC0wLDAgKzEsMjUgQEAKK3B5dGVzdC0zLjguMQorPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCAzLjguMSBoYXMg
anVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhh
bmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgor
CisqIEFua2l0IEdvZWwKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERh
bmllbCBIYWhsZXIKKyogTWF4aW1pbGlhbiBBbGJlcnQKKyogUm9ubnkgUGZhbm5zY2htaWR0Cisq
IFdpbGxpYW0gSmFtaXIgU2lsdmEKKyogd2ltIGdsZW5uCisKKworSGFwcHkgdGVzdGluZywKK1Ro
ZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3JlbGVhc2UtMy44LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtMy44LjIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uOWVhOTRjOThhMjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtMy44LjIucnN0CkBAIC0wLDAgKzEsMjggQEAKK3B5dGVzdC0zLjguMgor
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCAzLjguMiBo
YXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVh
c2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGlu
c3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxl
IGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKwor
VGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVt
OgorCisqIEFua2l0IEdvZWwKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisq
IERhbmllbCBIYWhsZXIKKyogRGVuaXMgT3RraWRhY2gKKyogSGFycnkgUGVyY2l2YWwKKyogSmVm
ZnJleSBSYWNrYXVja2FzCisqIEpvc2UgQ2FybG9zIE1lbmV6ZXMKKyogUm9ubnkgUGZhbm5zY2ht
aWR0CisqIFphYyBIYXRmaWVsZC1Eb2RkcworKiBpd2FuYgorCisKK0hhcHB5IHRlc3RpbmcsCitU
aGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuOS4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuOS4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjBiZTZjZjViZThhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuOS4wLnJzdApAQCAtMCwwICsxLDQzIEBACitweXRlc3QtMy45LjAK
Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0IHRl
YW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDMuOS4wIHJlbGVhc2UhCisKK3B5dGVzdCBpcyBh
IG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVzdHMKK2Fn
YWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQg
cGxhdGZvcm1zLgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBmaXhl
cyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFrZSBhIGxv
b2sgYXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNl
IHZpc2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLworCitBcyB1
c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6CisKKyAgICBwaXAgaW5zdGFsbCAt
VSBweXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNl
LCBhbW9uZyB0aGVtOgorCisqIEFuZHJlYSBDaW1hdG9yaWJ1cworKiBBbmtpdCBHb2VsCisqIEFu
dGhvbnkgU290dGlsZQorKiBCZW4gRXlhbAorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFo
bGVyCisqIEplZmZyZXkgUmFja2F1Y2thcworKiBKb3NlIENhcmxvcyBNZW5lemVzCisqIEt5bGUg
QWx0ZW5kb3JmCisqIE5pa2xhcyBKUQorKiBQYWxhc2ggQ2hhdHRlcmplZQorKiBSb25ueSBQZmFu
bnNjaG1pZHQKKyogVGhvbWFzIEhlc3MKKyogVGhvbWFzIEhpc2NoCisqIFRvbWVyIEtlcmVuCisq
IFZpY3RvciBNYXJ5YW1hCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1l
bnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
My45LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy45LjEucnN0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTFhZmIzNzU5ZDIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtMy45
LjEucnN0CkBAIC0wLDAgKzEsMjAgQEAKK3B5dGVzdC0zLjkuMQorPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCAzLjkuMSBoYXMganVzdCBiZWVuIHJlbGVh
c2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1p
biByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5
dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8g
Y29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEJydW5vIE9saXZl
aXJhCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBUaG9tYXMgSGlzY2gKKworCitIYXBweSB0ZXN0
aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjkuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS0zLjkuMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi42M2U5NGU1YWFiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjkuMi5yc3QKQEAgLTAsMCArMSwyMyBAQAorcHl0ZXN0
LTMuOS4yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0
IDMuOS4yIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1m
aXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKwor
ICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBh
dmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5o
dG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFt
b25nIHRoZW06CisKKyogQW5raXQgR29lbAorKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xp
dmVpcmEKKyogUm9ubnkgUGZhbm5zY2htaWR0CisqIFZpbmNlbnQgQmFyYmFyZXNpCisqIHlrYW50
b3IKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjkuMy5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjkuMy5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NjFkZGI1Y2I1NDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS0zLjkuMy5yc3QKQEAgLTAs
MCArMSwyNCBAQAorcHl0ZXN0LTMuOS4zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKworcHl0ZXN0IDMuOS4zIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4K
KworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50
LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBm
dWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0
byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW5kcmVhcyBQcm9mb3VzCisqIEFua2l0
IEdvZWwKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhs
ZXIKKyogSm9uIER1ZnJlc25lCisqIFJvbm55IFBmYW5uc2NobWlkdAorCisKK0hhcHB5IHRlc3Rp
bmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rhc2tzL3JlbGVhc2UubWlub3IucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtNC4wLjAucnN0CnNpbWlsYXJpdHkgaW5kZXggNjElCnJlbmFtZSBmcm9tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rhc2tzL3JlbGVhc2UubWlub3IucnN0CnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS00LjAuMC5yc3QKaW5kZXggYmRkODI4MmNmYWQ5Li41ZWIwMTA3NzU4
YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3JlbGVhc2UubWlub3IucnN0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuMC4wLnJzdApAQCAtMSwxOSAr
MSwxOSBAQAotcHl0ZXN0LXt2ZXJzaW9ufQorcHl0ZXN0LTQuMC4wCiA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFu
bm91bmNlIHRoZSB7dmVyc2lvbn0gcmVsZWFzZSEKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0
byBhbm5vdW5jZSB0aGUgNC4wLjAgcmVsZWFzZSEKIAotcHl0ZXN0IGlzIGEgbWF0dXJlIFB5dGhv
biB0ZXN0aW5nIHRvb2wgd2l0aCBtb3JlIHRoYW4gYSAyMDAwIHRlc3RzCitweXRlc3QgaXMgYSBt
YXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCiBhZ2Fp
bnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBs
YXRmb3Jtcy4KIAogVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMg
YW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKIHRvIHRha2UgYSBsb29r
IGF0IHRoZSBDSEFOR0VMT0c6CiAKLSAgICBodHRwOi8vZG9jLnB5dGVzdC5vcmcvZW4vbGF0ZXN0
L2NoYW5nZWxvZy5odG1sCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2No
YW5nZWxvZy5odG1sCiAKIEZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6
CiAKLSAgICBodHRwOi8vZG9jcy5weXRlc3Qub3JnCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vc3RhYmxlLwogCiBBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6
CiAKQEAgLTIxLDcgKzIxLDEwIEBAIEFzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBweXBp
IHZpYToKIAogVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBh
bW9uZyB0aGVtOgogCi17Y29udHJpYnV0b3JzfQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwg
SGFobGVyCisqIFJvbm55IFBmYW5uc2NobWlkdAorCiAKIEhhcHB5IHRlc3RpbmcsCiBUaGUgUHl0
ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTQuMC4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTQuMC4xLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5
MDJhNmRiOWZiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTQuMC4xLnJzdApAQCAtMCwwICsxLDIzIEBACitweXRlc3QtNC4wLjEKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNC4wLjEgaGFzIGp1
c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5r
cyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKwor
KiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBN
aWNoYWVsIEQuIEhveWxlCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBTbGFtCisKKworSGFwcHkg
dGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4wLjIucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtNC4wLjIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZjQzOWI4OGZlMmNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4wLjIucnN0CkBAIC0wLDAgKzEsMjQgQEAKK3B5
dGVzdC00LjAuMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5
dGVzdCA0LjAuMiBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBi
dWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6
CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cg
aXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vs
b2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNl
LCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBE
YW5pZWwgSGFobGVyCisqIFBlZHJvIEFsZ2FydmlvCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBU
b21lciBLZXJlbgorKiBZYXNoIFRvZGkKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBE
ZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS00LjEuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00
LjEuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMTQ1NjRl
ZWI2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS00LjEuMC5yc3QKQEAgLTAsMCArMSw0NCBAQAorcHl0ZXN0LTQuMS4wCis9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3Vk
IHRvIGFubm91bmNlIHRoZSA0LjEuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0
aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2Vs
ZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4K
KworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJv
dmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBD
SEFOR0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdl
bG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKwor
ICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBj
YW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisK
K1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhl
bToKKworKiBBZGFtIEpvaG5zb24KKyogQWx5IFNpdmppCisqIEFuZHJleSBQYXJhbW9ub3YKKyog
QW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogRGF2
aWQgVm8KKyogSHl1bmNoZWwgS2ltCisqIEplZmZyZXkgUmFja2F1Y2thcworKiBLYW5ndXJvcwor
KiBOaWNob2xhcyBEZXZlbmlzaAorKiBQZWRybyBBbGdhcnZpbworKiBSYW5keSBCYXJsb3cKKyog
Um9ubnkgUGZhbm5zY2htaWR0CisqIFRvbWVyIEtlcmVuCisqIGZldWlsbGVtb3J0ZQorKiB3aW0g
Z2xlbm4KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIFB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjEuMS5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjEuMS5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xZjQ1ZTA4MmY4OTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjEuMS5yc3QKQEAg
LTAsMCArMSwyNyBAQAorcHl0ZXN0LTQuMS4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKworcHl0ZXN0IDQuMS4xIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQ
SS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2Vt
ZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1Ro
ZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRl
ZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEFu
dG9uIExvZGRlcgorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIERhdmlkIFZv
CisqIE9zY2FyIEJlbmphbWluCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBWaWN0b3IgTWFyeWFt
YQorKiBZb2F2IENhc3BpCisqIGRtaXRyeS5keWdhbG8KKworCitIYXBweSB0ZXN0aW5nLAorVGhl
IHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS00LjIuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS00LjIuMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5iY2Q3Zjc3NTQ3OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS00LjIuMC5yc3QKQEAgLTAsMCArMSwzNyBAQAorcHl0ZXN0LTQuMi4wCis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFt
IGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSA0LjIuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBt
YXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2Fp
bnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBs
YXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMg
YW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29r
IGF0IHRoZSBDSEFOR0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvY2hhbmdlbG9nLmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2
aXNpdDoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1
YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUg
cHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwg
YW1vbmcgdGhlbToKKworKiBBZGFtIFVobGlyCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBP
bGl2ZWlyYQorKiBDaHJpc3RvcGhlciBEaWduYW0KKyogRGFuaWVsIEhhaGxlcgorKiBKb3NlcGgg
SHVua2VsZXIKKyogS3Jpc3RvZmZlciBOb3Jkc3Ryb2VtCisqIFJvbm55IFBmYW5uc2NobWlkdAor
KiBUaG9tYXMgSGlzY2gKKyogd2ltIGdsZW5uCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQeXRl
c3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtNC4yLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtNC4yLjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzZi
ZWFmZTExZDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNl
L3JlbGVhc2UtNC4yLjEucnN0CkBAIC0wLDAgKzEsMzAgQEAKK3B5dGVzdC00LjIuMQorPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjIuMSBoYXMganVz
dCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJl
aW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwg
LS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtz
IHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisq
IEFudGhvbnkgU290dGlsZQorKiBBcmVsIENvcmRlcm8KKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFu
aWVsIEhhaGxlcgorKiBIb2xnZXIgS29ocgorKiBLZXZpbiBKLiBGb2xleQorKiBOaWNrIE11cnBo
eQorKiBQYXdlxYIgU3RyYWRvbXNraQorKiBSYXBoYWVsIFBpZXJ6aW5hCisqIFJvbm55IFBmYW5u
c2NobWlkdAorKiBTYW0gQnJpZ2h0bWFuCisqIFRob21hcyBIaXNjaAorKiBaYWMgSGF0ZmllbGQt
RG9kZHMKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjMuMC5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjMuMC5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYjBiNDI4MDkyMmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjMuMC5yc3QKQEAg
LTAsMCArMSwzNiBAQAorcHl0ZXN0LTQuMy4wCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSA0
LjMuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3RpbmcgdG9vbCB3
aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBvbiBtYW55
IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxlYXNlIGNv
bnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28gdXNlcnMg
YXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CisKKyAgICBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKKworRm9yIGNv
bXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHBzOi8vZG9jcy5w
eXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBmcm9tIHB5
cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBhbGwgd2hv
IGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbmRyYXMgTWl0
emtpCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBDaHJpc3RpYW4gRmV0
emVyCisqIERhbmllbCBIYWhsZXIKKyogR3J5Z29yaWkgSWVybW9sZW5rbworKiBSLiBBbGV4IE1h
dGV2aXNoCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBjY2xhdXNzCisKKworSGFwcHkgdGVzdGlu
ZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC4zLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNC4zLjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNDI1MWM3NDRlNTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtNC4zLjEucnN0CkBAIC0wLDAgKzEsMjggQEAKK3B5dGVzdC00
LjMuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0
LjMuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4
IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAg
cGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZh
aWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRt
bC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9u
ZyB0aGVtOgorCisqIEFuZHJhcyBNaXR6a2kKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9s
aXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogRGFuaWxvIEhvcnRhCisqIEdyeWdvcmlpIEllcm1v
bGVua28KKyogSmVmZiBIYWxlCisqIEt5bGUgQWx0ZW5kb3JmCisqIFN0ZXBoYW4gSG95ZXIKKyog
WmFjIEhhdGZpZWxkLURvZGRzCisqIHNvbmdib3dlbgorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUg
cHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTQuNC4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTQuNC4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmRjODk3MzlkMGFhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTQuNC4wLnJzdApAQCAtMCwwICsxLDM5IEBACitweXRlc3QtNC40LjAKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0IHRlYW0g
aXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDQuNC4wIHJlbGVhc2UhCisKK3B5dGVzdCBpcyBhIG1h
dHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWlu
c3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxh
dGZvcm1zLgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBmaXhlcyBh
bmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFrZSBhIGxvb2sg
YXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZp
c2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLworCitBcyB1c3Vh
bCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6CisKKyAgICBwaXAgaW5zdGFsbCAtVSBw
eXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBh
bW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBBcGFEb2N0b3IKKyogQmVybmhhcmQg
TS4gV2llZGVtYW5uCisqIEJyaWFuIFNraW5uCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBI
YWhsZXIKKyogR2FyeSBUeWxlcgorKiBKZW9uZyBZdW5Xb24KKyogTWlybyBIcm9uxI1vaworKiBU
YWthZnVtaSBBcmFrYWtpCisqIGhlbnJ5a2lyb25kZQorKiBzbWhlaWRyaWNoCisKKworSGFwcHkg
dGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC40LjEucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2Fubm91bmNlL3JlbGVhc2UtNC40LjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMTI3MmNkOGZkZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC40LjEucnN0CkBAIC0wLDAgKzEsMjAgQEAKK3B5
dGVzdC00LjQuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5
dGVzdCA0LjQuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBi
dWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6
CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cg
aXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vs
b2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNl
LCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBE
YW5pZWwgSGFobGVyCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQg
VGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC40
LjIucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC40LjIucnN0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTg3NmU4M2IzYjZhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC40LjIu
cnN0CkBAIC0wLDAgKzEsMzMgQEAKK3B5dGVzdC00LjQuMgorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjQuMiBoYXMganVzdCBiZWVuIHJlbGVhc2Vk
IHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiBy
ZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVz
dAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29u
dHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFsbGFuIExld2lzCisq
IEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW1pYW5Ta3J6eXBjemFrCisq
IERhbmllbCBIYWhsZXIKKyogRG9uIEtpcmtieQorKiBEb3VnbGFzIFRob3IKKyogSHVnbworKiBJ
bHlhIEtvbnN0YW50aW5vdgorKiBKb24gRHVmcmVzbmUKKyogTWF0dCBDb29wZXIKKyogTmlrb2xh
eSBLb25kcmF0eWV2CisqIE9uZMWZZWogU8O6a3VwCisqIFBldGVyIFNjaHV0dAorKiBSb21haW4g
Q2hvc3NhcnQKKyogU2l0YWt0aWYKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZl
bG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS00LjUuMC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjUu
MC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMmEwNWQ0Zjc5
NTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS00LjUuMC5yc3QKQEAgLTAsMCArMSwzNCBAQAorcHl0ZXN0LTQuNS4wCis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRv
IGFubm91bmNlIHRoZSA0LjUuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9u
IHRlc3RpbmcgdG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwg
cGFzc2luZyBvbiBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKwor
VGhpcyByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVt
ZW50cywgc28gdXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFO
R0VMT0c6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwKKworRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAg
IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4g
dXBncmFkZSBmcm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1Ro
YW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToK
KworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgor
KiBGbG9yaXMgQnJ1eW5vb2doZQorKiBQdWxraXQgR295YWwKKyogU2FtdWVsIFNlYXJsZXMtQnJ5
YW50CisqIFphYyBIYXRmaWVsZC1Eb2RkcworCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgUHl0ZXN0
IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTQuNi4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTQuNi4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE4MmZk
ZDQ3ZDZmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTQuNi4wLnJzdApAQCAtMCwwICsxLDQzIEBACitweXRlc3QtNC42LjAKKz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0IHRlYW0gaXMgcHJv
dWQgdG8gYW5ub3VuY2UgdGhlIDQuNi4wIHJlbGVhc2UhCisKK3B5dGVzdCBpcyBhIG1hdHVyZSBQ
eXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWluc3QgaXRz
ZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1z
LgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBmaXhlcyBhbmQgaW1w
cm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFrZSBhIGxvb2sgYXQgdGhl
IENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFu
Z2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0Ogor
CisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLworCitBcyB1c3VhbCwgeW91
IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6CisKKyAgICBwaXAgaW5zdGFsbCAtVSBweXRlc3QK
KworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0
aGVtOgorCisqIEFraW9taSBLYW1ha3VyYQorKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xp
dmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBEYXZpZCBSw7Z0aGxpc2JlcmdlcgorKiBFdmFuIEtl
cG5lcgorKiBKZWZmcmV5IFJhY2thdWNrYXMKKyogTXlDb21wdXRlcgorKiBOaWtpdGEgS3Jva29z
aAorKiBSYXVsIFRhbWJyZQorKiBUaG9tYXMgSGlzY2gKKyogVGltIEhvZmZtYW5uCisqIFRvbWVy
IEtlcmVuCisqIFZpY3RvciBNYXJ5YW1hCisqIGRhbmllbHgxMjMKKyogb2xlZy15ZWdvcm92CisK
KworSGFwcHkgdGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjEucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzc5ODM5YjdiNTI1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42LjEucnN0CkBAIC0wLDAgKzEs
MTkgQEAKK3B5dGVzdC00LjYuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisKK3B5dGVzdCA0LjYuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1Ro
aXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8g
dXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBj
aGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhp
cyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2
ZWlyYQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi4yLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi4yLnJzdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmYzU5NTI5M2FlNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi4yLnJzdApAQCAt
MCwwICsxLDE4IEBACitweXRlc3QtNC42LjIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorCitweXRlc3QgNC42LjIgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJ
LgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1l
bnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhl
IGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVk
IHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKworCitI
YXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMy5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mNTc4NDY0YTdhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuMy5yc3QKQEAgLTAsMCArMSwyMSBA
QAorcHl0ZXN0LTQuNi4zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworcHl0ZXN0IDQuNi4zIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBp
cyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdy
YWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5n
ZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2No
YW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJl
bGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJh
CisqIERhbmllbCBIYWhsZXIKKyogRGlyayBUaG9tYXMKKworCitIYXBweSB0ZXN0aW5nLAorVGhl
IHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YW5ub3VuY2UvcmVsZWFzZS00LjYuNC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS00LjYuNC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wZWVmY2JlYjFjMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS00LjYuNC5yc3QKQEAgLTAsMCArMSwyMiBAQAorcHl0ZXN0LTQuNi40Cis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDQuNi40IGhh
cyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFz
ZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5z
dGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUg
YXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitU
aGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06
CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIK
KyogVGhvbWFzIEdyYWluZ2VyCisqIFphYyBIYXRmaWVsZC1Eb2RkcworCisKK0hhcHB5IHRlc3Rp
bmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi41LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTQuNi41LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjFlYmYzNjFmZGY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi41LnJzdApAQCAtMCwwICsxLDIxIEBACitweXRlc3Qt
NC42LjUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3Qg
NC42LjUgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZp
eCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisg
IHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2
YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0
bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1v
bmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVs
IEhhaGxlcgorKiBUaG9tYXMgR3JhaW5nZXIKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVz
dCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS00LjYuNi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS00LjYuNi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iM2Jm
MWU0MzFjN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2Uv
cmVsZWFzZS00LjYuNi5yc3QKQEAgLTAsMCArMSwyMCBAQAorcHl0ZXN0LTQuNi42Cis9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDQuNi42IGhhcyBqdXN0
IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVp
bmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAt
LXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3Mg
dG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyog
QW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIE1pY2hhZWwgR29lcnoKKworCitI
YXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuNy5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuNy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mOWQwMTg0NWVjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS00LjYuNy5yc3QKQEAgLTAsMCArMSwxOSBA
QAorcHl0ZXN0LTQuNi43Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KworcHl0ZXN0IDQuNi43IGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBp
cyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdy
YWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5n
ZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2No
YW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJl
bGVhc2UsIGFtb25nIHRoZW06CisKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgor
CisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi44LnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi44LnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVjYWJlNzgyNmU5OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTQuNi44LnJzdApAQCAtMCwwICsx
LDIwIEBACitweXRlc3QtNC42LjgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorCitweXRlc3QgNC42LjggaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitU
aGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRv
IHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwg
Y2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFi
bGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRo
aXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xp
dmVpcmEKKyogUnlhbiBNYXN0CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxv
cG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtNC42LjkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNC42Ljku
cnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2Y3YmI1OTk2ZWFm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
NC42LjkucnN0CkBAIC0wLDAgKzEsMjEgQEAKK3B5dGVzdC00LjYuOQorPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA0LjYuOSBoYXMganVzdCBiZWVuIHJl
bGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJv
cC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRl
IHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3
aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkg
U290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBGZWxpeCBZYW4KKyogSHVnbworCisKK0hhcHB5
IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMC4wLnJzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMC4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmY1ZTU5M2U5ZDg4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMC4wLnJzdApAQCAtMCwwICsxLDQ2IEBACitw
eXRlc3QtNS4wLjAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitU
aGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDUuMC4wIHJlbGVhc2UhCisK
K3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDIw
MDAgdGVzdHMKK2FnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVy
cHJldGVycyBhbmQgcGxhdGZvcm1zLgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIg
b2YgYnVncyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAor
dG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRh
dGlvbiwgcGxlYXNlIHZpc2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3Rh
YmxlLworCitBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6CisKKyAgICBw
aXAgaW5zdGFsbCAtVSBweXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8g
dGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBP
bGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIERpcmsgVGhvbWFzCisqIEV2YW4gS2VwbmVyCisq
IEZsb3JpYW4gQnJ1aGluCisqIEh1Z28KKyogS2V2aW4gSi4gRm9sZXkKKyogUHVsa2l0IEdveWFs
CisqIFJhbHBoIEdpbGVzCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBUaG9tYXMgR3JhaW5nZXIK
KyogVGhvbWFzIEhpc2NoCisqIFRpbSBHYXRlcworKiBWaWN0b3IgTWFyeWFtYQorKiBZdXJpIEFw
b2xsb3YKKyogWmFjIEhhdGZpZWxkLURvZGRzCisqIGN1cmlvdXNqYXp6NzcKKyogcGF0cmlrc2V2
YWxsaXVzCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4wLjEucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4wLjEucnN0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTE2YThmNzE2ZjE0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4wLjEucnN0CkBA
IC0wLDAgKzEsMjUgQEAKK3B5dGVzdC01LjAuMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisKK3B5dGVzdCA1LjAuMSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5
UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNl
bWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitU
aGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0
ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFtaXJFbGtlc3MKKyogQW5kcmV1
IFZhbGxib25hIFBsYXphcworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyog
RmxvcmlhbiBCcnVoaW4KKyogTWljaGFlbCBNb29yZQorKiBOaWtsYXMgTWVpbnplcgorKiBUaG9t
YXMgR3JhaW5nZXIKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBU
ZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjEu
MC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjEuMC5yc3QKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YWI1NGZmOTczMDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjEuMC5y
c3QKQEAgLTAsMCArMSw1NiBAQAorcHl0ZXN0LTUuMS4wCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKworVGhlIHB5dGVzdCB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNl
IHRoZSA1LjEuMCByZWxlYXNlIQorCitweXRlc3QgaXMgYSBtYXR1cmUgUHl0aG9uIHRlc3Rpbmcg
dG9vbCB3aXRoIG1vcmUgdGhhbiAyMDAwIHRlc3RzCithZ2FpbnN0IGl0c2VsZiwgcGFzc2luZyBv
biBtYW55IGRpZmZlcmVudCBpbnRlcnByZXRlcnMgYW5kIHBsYXRmb3Jtcy4KKworVGhpcyByZWxl
YXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGJ1Z3MgZml4ZXMgYW5kIGltcHJvdmVtZW50cywgc28g
dXNlcnMgYXJlIGVuY291cmFnZWQKK3RvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VMT0c6CisK
KyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwKKwor
Rm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24sIHBsZWFzZSB2aXNpdDoKKworICAgIGh0dHBzOi8v
ZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS8KKworQXMgdXN1YWwsIHlvdSBjYW4gdXBncmFkZSBm
cm9tIHB5cGkgdmlhOgorCisgICAgcGlwIGluc3RhbGwgLVUgcHl0ZXN0CisKK1RoYW5rcyB0byBh
bGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbGJl
cnQgVHVndXNoZXYKKyogQWxleGV5IFphbmtldmljaAorKiBBbnRob255IFNvdHRpbGUKKyogQnJ1
bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBEYXZpZCBSw7Z0aGxpc2JlcmdlcgorKiBG
bG9yaWFuIEJydWhpbgorKiBJbHlhIFN0ZXBpbgorKiBKb24gRHVmcmVzbmUKKyogS2FpcWkKKyog
TWF4IFIKKyogTWlybyBIcm9uxI1vaworKiBPbGl2ZXIgQmVzdHdhbHRlcgorKiBSYW4gQmVuaXRh
CisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBTYW11ZWwgU2Vhcmxlcy1CcnlhbnQKKyogU2VtZW4g
Wmh5ZGVua28KKyogU3RlZmZlbiBTY2hyb2VkZXIKKyogVGhvbWFzIEdyYWluZ2VyCisqIFRpbSBI
b2ZmbWFubgorKiBXaWxsaWFtIFdvb2RhbGwKKyogV29qdGVrIEVyYmV0b3dza2kKKyogWGl4aSBa
aGFvCisqIFlhc2ggVG9kaQorKiBib3JpcworKiBkbWl0cnkuZHlnYWxvCisqIGhlbGxvb2NjCisq
IG1hcnRibG4KKyogbWVpLWxpCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBQeXRlc3QgRGV2ZWxv
cG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVh
c2UtNS4xLjEucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjEu
cnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmI4ZGU0ODAxNGFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2Ut
NS4xLjEucnN0CkBAIC0wLDAgKzEsMjQgQEAKK3B5dGVzdC01LjEuMQorPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjEuMSBoYXMganVzdCBiZWVuIHJl
bGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJv
cC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRl
IHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3
aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFudGhvbnkg
U290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBEYW5pZWwgSGFobGVyCisqIEZsb3JpYW4gQnJ1
aGluCisqIEh1Z28gdmFuIEtlbWVuYWRlCisqIFJhbiBCZW5pdGEKKyogUm9ubnkgUGZhbm5zY2ht
aWR0CisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjIucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjIucnN0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzRjYjhlM2ZiNDQyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4xLjIucnN0CkBAIC0w
LDAgKzEsMjMgQEAKK3B5dGVzdC01LjEuMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CisKK3B5dGVzdCA1LjEuMiBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEku
CisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVu
dC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUg
ZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQg
dG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFuZHJ6ZWogS2xham5lcnQKKyogQW50
aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIENocmlzdGlhbiBOZXVtw7xsbGVyCisq
IFJvYmVydCBIb2x0CisqIGxpbmNoaXdlaTEyMworCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0
ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTUuMS4zLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTUuMS4zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM0
ZTg4YWVkMjhlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTUuMS4zLnJzdApAQCAtMCwwICsxLDIzIEBACitweXRlc3QtNS4xLjMKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNS4xLjMgaGFzIGp1
c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBi
ZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxs
IC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5r
cyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKwor
KiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogQ2hyaXN0aWFuIE5ldW3DvGxs
ZXIKKyogRGFuaWVsIEhhaGxlcgorKiBHZW5lIFdvb2QKKyogSHVnbworCisKK0hhcHB5IHRlc3Rp
bmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTUuMi4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmY0Mzc2N2I3NTA2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4wLnJzdApAQCAtMCwwICsxLDM1IEBACitweXRlc3Qt
NS4yLjAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0
ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDUuMi4wIHJlbGVhc2UhCisKK3B5dGVz
dCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVz
dHMKK2FnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVy
cyBhbmQgcGxhdGZvcm1zLgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVn
cyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBzbyB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFr
ZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRzoKKworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAorCitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwg
cGxlYXNlIHZpc2l0OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLwor
CitBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRlIGZyb20gcHlwaSB2aWE6CisKKyAgICBwaXAgaW5z
dGFsbCAtVSBweXRlc3QKKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyBy
ZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFuZHJ6ZWogS2xham5lcnQKKyogQW50aG9ueSBTb3R0
aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogSmFtZXMgQ29va2UKKyog
TWljaGFlbCBHb2VyegorKiBSYW4gQmVuaXRhCisqIFRvbcOhxaEgQ2h2w6F0YWwKKworCitIYXBw
eSB0ZXN0aW5nLAorVGhlIFB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuMS5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5mZTQyYjliZjE1ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjIuMS5yc3QKQEAgLTAsMCArMSwyMyBAQAor
cHl0ZXN0LTUuMi4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor
cHl0ZXN0IDUuMi4xIGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBh
IGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRl
OjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxv
ZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5n
ZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVh
c2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisq
IEZsb3JpYW4gQnJ1aGluCisqIEh5bmVrIFNjaGxhd2FjaworKiBLZXZpbiBKLiBGb2xleQorKiB0
YWRhc2hpZ2FraQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRl
YW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4y
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4yLnJzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5ZmQ2YTUzNGQ0ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi4yLnJz
dApAQCAtMCwwICsxLDI5IEBACitweXRlc3QtNS4yLjIKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitweXRlc3QgNS4yLjIgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0
byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVw
bGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QK
KworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRy
aWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbGJlcnQgVHVndXNoZXYK
KyogQW5kcnplaiBLbGFqbmVydAorKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEK
KyogRGFuaWVsIEhhaGxlcgorKiBGbG9yaWFuIEJydWhpbgorKiBOYXR0YXBob29tIENoYWlwcmVl
Y2hhCisqIE9saXZlciBCZXN0d2FsdGVyCisqIFBoaWxpcHAgTG9vc2UKKyogUmFuIEJlbml0YQor
KiBWaWN0b3IgTWFyeWFtYQorKiBZb2F2IENhc3BpCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBw
eXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNS4yLjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtNS4yLjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
YmFiMTc0NDk1ZDk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtNS4yLjMucnN0CkBAIC0wLDAgKzEsMjggQEAKK3B5dGVzdC01LjIuMworPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjIuMyBoYXMg
anVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhh
bmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgor
CisqIEFudGhvbnkgU290dGlsZQorKiBCcmV0dCBDYW5ub24KKyogQnJ1bm8gT2xpdmVpcmEKKyog
RGFuaWVsIEhhaGxlcgorKiBEYW5paWwgR2FsaWV2CisqIERhdmlkIFN6b3R0ZW4KKyogRmxvcmlh
biBCcnVoaW4KKyogUGF0cmljayBIYXJtb24KKyogUmFuIEJlbml0YQorKiBaYWMgSGF0ZmllbGQt
RG9kZHMKKyogWmFrIEhhc3NhbgorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVs
b3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTUuMi40LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMi40
LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmNTE4OTY3OTc1
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTUuMi40LnJzdApAQCAtMCwwICsxLDIyIEBACitweXRlc3QtNS4yLjQKKz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNS4yLjQgaGFzIGp1c3QgYmVlbiBy
ZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRy
b3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFk
ZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwg
d2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255
IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBIdWdvCisqIE1p
Y2hhZWwgU2hpZWxkcworCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50
IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUu
My4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4wLnJzdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUxM2E3MWYwOWFhZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4w
LnJzdApAQCAtMCwwICsxLDQ1IEBACitweXRlc3QtNS4zLjAKKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3Vu
Y2UgdGhlIDUuMy4wIHJlbGVhc2UhCisKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGlu
ZyB0b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWluc3QgaXRzZWxmLCBwYXNzaW5n
IG9uIG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgorCitUaGlzIHJl
bGVhc2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVncyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLCBz
byB1c2VycyBhcmUgZW5jb3VyYWdlZAordG8gdGFrZSBhIGxvb2sgYXQgdGhlIENIQU5HRUxPRzoK
KworICAgIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbAor
CitGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0OgorCisgICAgaHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLworCitBcyB1c3VhbCwgeW91IGNhbiB1cGdyYWRl
IGZyb20gcHlwaSB2aWE6CisKKyAgICBwaXAgaW5zdGFsbCAtVSBweXRlc3QKKworVGhhbmtzIHRv
IGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIEFu
am9NYW4KKyogQW50aG9ueSBTb3R0aWxlCisqIEFudG9uIExvZGRlcgorKiBCcnVubyBPbGl2ZWly
YQorKiBEYW5pZWwgSGFobGVyCisqIEdyZWdvcnkgTGVlCisqIEpvc2ggS2FycGVsCisqIEpvc2hL
YXJwZWwKKyogSm9zaHVhIFN0b3JjaworKiBLYWxlIEt1bmRlcnQKKyogTWFyY29Hb3JlbGxpCisq
IE1pY2hhZWwgS3JlYnMKKyogTk5SZXBvcworKiBSYW4gQmVuaXRhCisqIFRIM0NIQVJMaWUKKyog
VGlib3IgQXJwYXMKKyogWmFjIEhhdGZpZWxkLURvZGRzCisqIOael+eOrgorCisKK0hhcHB5IHRl
c3RpbmcsCitUaGUgUHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4xLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmQ1NzViYjcwZTNmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4xLnJzdApAQCAtMCwwICsxLDI2IEBACitweXRl
c3QtNS4zLjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRl
c3QgNS4zLjEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVn
LWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6Ogor
CisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlz
IGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwg
YW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFu
aWVsIEhhaGxlcgorKiBGZWxpeCBZYW4KKyogRmxvcmlhbiBCcnVoaW4KKyogTWFyayBEaWNraW5z
b24KKyogTmlrb2xheSBLb25kcmF0eWV2CisqIFN0ZWZmZW4gU2Nocm9lZGVyCisqIFphYyBIYXRm
aWVsZC1Eb2RkcworCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRl
YW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4y
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4yLnJzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ1NjJhMzNmYjBmNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuMy4yLnJz
dApAQCAtMCwwICsxLDI2IEBACitweXRlc3QtNS4zLjIKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitweXRlc3QgNS4zLjIgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0
byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVw
bGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QK
KworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRy
aWJ1dGVkIHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbnRob255IFNvdHRpbGUK
KyogQnJ1bm8gT2xpdmVpcmEKKyogQ2xhdWRpbyBNYWRvdHRvCisqIERhbmllbCBIYWhsZXIKKyog
SmFyZWQgVmFzcXVlegorKiBNaWNoYWVsIFJvc2UKKyogUmFuIEJlbml0YQorKiBSb25ueSBQZmFu
bnNjaG1pZHQKKyogWmFjIEhhdGZpZWxkLURvZGRzCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBw
eXRlc3QgRGV2ZWxvcG1lbnQgVGVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fu
bm91bmNlL3JlbGVhc2UtNS4zLjMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3Jl
bGVhc2UtNS4zLjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NDBhNmZiNWI1NjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91
bmNlL3JlbGVhc2UtNS4zLjMucnN0CkBAIC0wLDAgKzEsMzAgQEAKK3B5dGVzdC01LjMuMworPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjMuMyBoYXMg
anVzdCBiZWVuIHJlbGVhc2VkIHRvIFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2Us
IGJlaW5nIGEgZHJvcC1pbiByZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3Rh
bGwgLS11cGdyYWRlIHB5dGVzdAorCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0
IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhh
bmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgor
CisqIEFkYW0gSm9obnNvbgorKiBBbGV4YW5kcmUgTXVsYXRpbmhvCisqIEFudGhvbnkgU290dGls
ZQorKiBCcnVubyBPbGl2ZWlyYQorKiBDaHJpcyBOZUphbWUKKyogRGFuaWVsIEhhaGxlcgorKiBI
dWdvIHZhbiBLZW1lbmFkZQorKiBNYXJjZWxvIER1YXJ0ZSBUcmV2aXNhbmkKKyogUGF1bEMKKyog
UmFuIEJlbml0YQorKiBSeWFuIEJhcm5lcgorKiBTZXRoIEp1bm90CisqIG1hcmMKKworCitIYXBw
eSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuNC5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuNC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4wNzUwYTlkNDA0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjMuNC5yc3QKQEAgLTAsMCArMSwyMCBAQAor
cHl0ZXN0LTUuMy40Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor
cHl0ZXN0IDUuMy40IGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBh
IGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRl
OjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxv
ZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5n
ZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVh
c2UsIGFtb25nIHRoZW06CisKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGFuaWVsIEhhaGxlcgorKiBS
YW4gQmVuaXRhCisKKworSGFwcHkgdGVzdGluZywKK1RoZSBweXRlc3QgRGV2ZWxvcG1lbnQgVGVh
bQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4zLjUu
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4zLjUucnN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTYzMmNlODUzODg0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL3JlbGVhc2UtNS4zLjUucnN0
CkBAIC0wLDAgKzEsMTkgQEAKK3B5dGVzdC01LjMuNQorPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisKK3B5dGVzdCA1LjMuNSBoYXMganVzdCBiZWVuIHJlbGVhc2VkIHRv
IFB5UEkuCisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiByZXBs
YWNlbWVudC4gVG8gdXBncmFkZTo6CisKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVzdAor
CitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRtbC4KKworVGhhbmtzIHRvIGFsbCB3aG8gY29udHJp
YnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9uZyB0aGVtOgorCisqIERhbmllbCBIYWhsZXIKKyog
UmFuIEJlbml0YQorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRl
YW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuNC4w
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuNC4wLnJzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQzZGZmYzkyOTBlNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTUuNC4wLnJz
dApAQCAtMCwwICsxLDU5IEBACitweXRlc3QtNS40LjAKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2Ug
dGhlIDUuNC4wIHJlbGVhc2UhCisKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0
b29sIHdpdGggbW9yZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9u
IG1hbnkgZGlmZmVyZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgorCitUaGlzIHJlbGVh
c2UgY29udGFpbnMgYSBudW1iZXIgb2YgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVz
ZXJzIGFyZSBlbmNvdXJhZ2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgorCisg
ICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCisKK0Zv
ciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJv
bSBQeVBJIHZpYToKKworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxs
IHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9u
eSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIENocmlzdG9waCBCdWVsdGVyCisqIENocmlz
dG9waCBCw7xsdGVyCisqIERhbmllbCBBcm5kdAorKiBEYW5pZWwgSGFobGVyCisqIEhvbGdlciBL
b2hyCisqIEh1Z28KKyogSHVnbyB2YW4gS2VtZW5hZGUKKyogSmFrdWIgTWl0b3JhagorKiBLeWxl
IEFsdGVuZG9yZgorKiBNaW51ZGRpbiBBaG1lZCBSYW5hCisqIE5hdGhhbmllbCBDb21wdG9uCisq
IFBhcmV0b0xpZmUKKyogUGF1bGkgVmlydGFuZW4KKyogUGhpbGlwcCBMb29zZQorKiBSYW4gQmVu
aXRhCisqIFJvbm55IFBmYW5uc2NobWlkdAorKiBTdGVmYW4gU2NoZXJma2UKKyogU3RlZmFubyBN
YXp6dWNjbworKiBUV29vZDY3CisqIFRvYmlhcyBTY2htaWR0CisqIFRvbcOhxaEgR2F2ZW7EjWlh
aworKiBWaW5heSBDYWxhc3RyeQorKiBWbGFkeXNsYXYgUmFjaGVrCisqIFphYyBIYXRmaWVsZC1E
b2RkcworKiBjYXB0YWluQ2FwaXRhbGlzbQorKiBjbWFjaGFsbworKiBnZnRlYQorKiBrcGluYwor
KiByZWJlY2NhLXBhbG1lcgorKiBzZGVtZW50ZW4KKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5
dGVzdCBEZXZlbG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS01LjQuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS01LjQuMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m
NmE2NGVmYTQ5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3Vu
Y2UvcmVsZWFzZS01LjQuMS5yc3QKQEAgLTAsMCArMSwxOCBAQAorcHl0ZXN0LTUuNC4xCis9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDUuNC4xIGhhcyBq
dXN0IGJlZW4gcmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwg
YmVpbmcgYSBkcm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFs
bCAtLXVwZ3JhZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQg
aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFu
a3MgdG8gYWxsIHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisK
KyogQnJ1bm8gT2xpdmVpcmEKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9w
bWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS01LjQuMi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjQuMi5y
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNzQyZGQ0YWFkNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01
LjQuMi5yc3QKQEAgLTAsMCArMSwyMiBAQAorcHl0ZXN0LTUuNC4yCis9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDUuNC4yIGhhcyBqdXN0IGJlZW4gcmVs
ZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9w
LWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUg
cHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdo
byBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBT
b3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIERhbmllbCBIYWhsZXIKKyogUmFuIEJlbml0YQor
KiBSb25ueSBQZmFubnNjaG1pZHQKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZl
bG9wbWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVs
ZWFzZS01LjQuMy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS01LjQu
My5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42Yzk5NWMxNjMz
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS01LjQuMy5yc3QKQEAgLTAsMCArMSwyMSBAQAorcHl0ZXN0LTUuNC4zCis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDUuNC4zIGhhcyBqdXN0IGJlZW4g
cmVsZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBk
cm9wLWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3Jh
ZGUgcHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxs
IHdobyBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9u
eSBTb3R0aWxlCisqIEJydW5vIE9saXZlaXJhCisqIFJhbiBCZW5pdGEKKyogVG9yIENvbHZpbgor
CisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4wLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4wLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk3MDZmZTU5YmM3MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4wLnJzdApAQCAtMCwwICsx
LDQwIEBACitweXRlc3QtNi4wLjAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorCitUaGUgcHl0ZXN0IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDYuMC4wIHJl
bGVhc2UhCisKK3B5dGVzdCBpcyBhIG1hdHVyZSBQeXRob24gdGVzdGluZyB0b29sIHdpdGggbW9y
ZSB0aGFuIDIwMDAgdGVzdHMKK2FnYWluc3QgaXRzZWxmLCBwYXNzaW5nIG9uIG1hbnkgZGlmZmVy
ZW50IGludGVycHJldGVycyBhbmQgcGxhdGZvcm1zLgorCitUaGlzIHJlbGVhc2UgY29udGFpbnMg
YSBudW1iZXIgb2YgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMsIHNvIHVzZXJzIGFyZSBlbmNv
dXJhZ2VkCit0byB0YWtlIGEgbG9vayBhdCB0aGUgQ0hBTkdFTE9HOgorCisgICAgaHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sCisKK0ZvciBjb21wbGV0ZSBk
b2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9sYXRlc3QvCisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBQeVBJIHZpYToK
KworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxsIHdobyBjb250cmli
dXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQW50aG9ueSBTb3R0aWxlCisq
IEFydmluIEZpcm91emkKKyogQnJ1bm8gT2xpdmVpcmEKKyogRGViaSBNaXNocmEKKyogR2FycmV0
dCBUaG9tYXMKKyogSHVnbyB2YW4gS2VtZW5hZGUKKyogS2VsdG9uIEJhc3Npbmd0aHdhaXRlCisq
IEtvc3RpcyBBbmFnbm9zdG9wb3Vsb3MKKyogTGV3aXMgQ293bGVzCisqIE1pcm8gSHJvbsSNb2sK
KyogUmFuIEJlbml0YQorKiBTaW1vbiBLCisqIFphYyBIYXRmaWVsZC1Eb2RkcworCisKK0hhcHB5
IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4wcmMxLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4wcmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2OTBiNTE0YmFmZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4wcmMxLnJzdApAQCAtMCwwICsx
LDY3IEBACitweXRlc3QtNi4wLjByYzEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorCitweXRlc3QgNi4wLjByYzEgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJ
LgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1l
bnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhl
IGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwgd2hvIGNvbnRyaWJ1dGVk
IHRvIHRoaXMgcmVsZWFzZSwgYW1vbmcgdGhlbToKKworKiBBbGZyZWRvIERlemEKKyogQW5kcmVh
cyBNYWllcgorKiBBbmRyZXcKKyogQW50aG9ueSBTb3R0aWxlCisqIEFydHlvbUthbHRvdmljaAor
KiBCcnVubyBPbGl2ZWlyYQorKiBDbGFpcmUgQ2VjaWwKKyogQ3VydCBKLiBTYW1wc29uCisqIERh
bmllbAorKiBEYW5pZWwgSGFobGVyCisqIERhbm55IFNlcGxlcgorKiBEYXZpZCBEaWF6IEJhcnF1
ZXJvCisqIEZhYmlvIFphZHJvem55CisqIEZlbGl4IE5pZXV3ZW5odWl6ZW4KKyogRmxvcmlhbiBC
cnVoaW4KKyogRmxvcmlhbiBEYWhsaXR6CisqIEdsZWIgTmlrb25vcm92CisqIEh1Z28gdmFuIEtl
bWVuYWRlCisqIEh1bnRlciBSaWNoYXJkcworKiBLYXRhcnp5bmEgS3LDs2wKKyogS2F0cmluIExl
aW53ZWJlcgorKiBLZXJpIFZvbGFucworKiBMZXdpcyBCZWxjaGVyCisqIEx1a2FzIEdlaWdlcgor
KiBNYXJ0aW4gTWljaGxtYXlyCisqIE1hdHR3bWFzdGVyNTgKKyogTWF4aW1pbGlhbiBDb3NtbyBT
aXR0ZXIKKyogTmlrb2xheSBLb25kcmF0eWV2CisqIFBhdmVsIEthcmF0ZWV2CisqIFBhd2XFgiBX
aWxjennFhHNraQorKiBQcmFzaGFudCBBbmFuZAorKiBSYW0gUmFjaHVtCisqIFJhbiBCZW5pdGEK
KyogUm9ubnkgUGZhbm5zY2htaWR0CisqIFJ1YXJpZGggV2lsbGlhbXNvbgorKiBTaW1vbiBLCisq
IFRpbSBIb2ZmbWFubgorKiBUb3IgQ29sdmluCisqIFZsYWQtUmFkegorKiBYaW5iaW4gSHVhbmcK
KyogWmFjIEhhdGZpZWxkLURvZGRzCisqIGVhcm9uZXN0eQorKiBnYXVyYXYgZGhhbWVlamEKKyog
Z2RoYW1lZWphCisqIGlicmlxdWVtCisqIG1jc2l0dGVyCisqIHBpb3RyaG0KKyogc21hcmllCisq
IHN5bW9uaworKiB4dWlxenkKKworCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9w
bWVudCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFz
ZS02LjAuMS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02LjAuMS5y
c3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zM2ZkYmVkM2Y2MTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvcmVsZWFzZS02
LjAuMS5yc3QKQEAgLTAsMCArMSwyMSBAQAorcHl0ZXN0LTYuMC4xCis9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKworcHl0ZXN0IDYuMC4xIGhhcyBqdXN0IGJlZW4gcmVs
ZWFzZWQgdG8gUHlQSS4KKworVGhpcyBpcyBhIGJ1Zy1maXggcmVsZWFzZSwgYmVpbmcgYSBkcm9w
LWluIHJlcGxhY2VtZW50LiBUbyB1cGdyYWRlOjoKKworICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUg
cHl0ZXN0CisKK1RoZSBmdWxsIGNoYW5nZWxvZyBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2NoYW5nZWxvZy5odG1sLgorCitUaGFua3MgdG8gYWxsIHdo
byBjb250cmlidXRlZCB0byB0aGlzIHJlbGVhc2UsIGFtb25nIHRoZW06CisKKyogQnJ1bm8gT2xp
dmVpcmEKKyogTWF0dHJlZXgKKyogUmFuIEJlbml0YQorKiBocDMxMDc4MAorCisKK0hhcHB5IHRl
c3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4yLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjE2ZWFiYzU4NjNkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMC4yLnJzdApAQCAtMCwwICsxLDE5IEBACitweXRl
c3QtNi4wLjIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRl
c3QgNi4wLjIgaGFzIGp1c3QgYmVlbiByZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVn
LWZpeCByZWxlYXNlLCBiZWluZyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6Ogor
CisgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlz
IGF2YWlsYWJsZSBhdCBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9n
Lmh0bWwuCisKK1RoYW5rcyB0byBhbGwgb2YgdGhlIGNvbnRyaWJ1dG9ycyB0byB0aGlzIHJlbGVh
c2U6CisKKyogQnJ1bm8gT2xpdmVpcmEKKyogUmFuIEJlbml0YQorCisKK0hhcHB5IHRlc3Rpbmcs
CitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMS4wLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTYuMS4wLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmY0YjU3MWFlODQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTYuMS4wLnJzdApAQCAtMCwwICsxLDQ0IEBACitweXRlc3QtNi4x
LjAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHl0ZXN0
IHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIDYuMS4wIHJlbGVhc2UhCisKK1RoaXMgcmVs
ZWFzZSBjb250YWlucyBuZXcgZmVhdHVyZXMsIGltcHJvdmVtZW50cywgYnVnIGZpeGVzLCBhbmQg
YnJlYWtpbmcgY2hhbmdlcywgc28gdXNlcnMKK2FyZSBlbmNvdXJhZ2VkIHRvIHRha2UgYSBsb29r
IGF0IHRoZSBDSEFOR0VMT0cgY2FyZWZ1bGx5OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sCisKK0ZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9u
LCBwbGVhc2UgdmlzaXQ6CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
CisKK0FzIHVzdWFsLCB5b3UgY2FuIHVwZ3JhZGUgZnJvbSBQeVBJIHZpYToKKworICAgIHBpcCBp
bnN0YWxsIC1VIHB5dGVzdAorCitUaGFua3MgdG8gYWxsIG9mIHRoZSBjb250cmlidXRvcnMgdG8g
dGhpcyByZWxlYXNlOgorCisqIEFudGhvbnkgU290dGlsZQorKiBCcnVubyBPbGl2ZWlyYQorKiBD
LiBUaXR1cyBCcm93bgorKiBEcmV3IERldmVyZXV4CisqIEZhcmlzIEEgQ2h1Z3RoYWkKKyogRmxv
cmlhbiBCcnVoaW4KKyogSHVnbyB2YW4gS2VtZW5hZGUKKyogSHluZWsgU2NobGF3YWNrCisqIEpv
c2VwaCBMdWNhcworKiBLYW1yYW4gQWhtYWQKKyogTWF0dHJlZXgKKyogTWF4aW1pbGlhbiBDb3Nt
byBTaXR0ZXIKKyogUmFuIEJlbml0YQorKiBSw7xkaWdlciBCdXNjaGUKKyogU2FtIEVzdGVwCisq
IFNvcmluIFNiYXJuZWEKKyogVGhvbWFzIEdyYWluZ2VyCisqIFZpcHVsIEt1bWFyCisqIFl1dGFy
byBJa2VkYQorKiBocDMxMDc4MAorCisKK0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVs
b3BtZW50IFRlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTYuMS4xLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTYuMS4x
LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUwOTQwOGZkZWVh
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTYuMS4xLnJzdApAQCAtMCwwICsxLDE4IEBACitweXRlc3QtNi4xLjEKKz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorCitweXRlc3QgNi4xLjEgaGFzIGp1c3QgYmVlbiBy
ZWxlYXNlZCB0byBQeVBJLgorCitUaGlzIGlzIGEgYnVnLWZpeCByZWxlYXNlLCBiZWluZyBhIGRy
b3AtaW4gcmVwbGFjZW1lbnQuIFRvIHVwZ3JhZGU6OgorCisgIHBpcCBpbnN0YWxsIC0tdXBncmFk
ZSBweXRlc3QKKworVGhlIGZ1bGwgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvY2hhbmdlbG9nLmh0bWwuCisKK1RoYW5rcyB0byBhbGwg
b2YgdGhlIGNvbnRyaWJ1dG9ycyB0byB0aGlzIHJlbGVhc2U6CisKKyogUmFuIEJlbml0YQorCisK
K0hhcHB5IHRlc3RpbmcsCitUaGUgcHl0ZXN0IERldmVsb3BtZW50IFRlYW0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDY0YzhiY2Q0ZGM2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2Fubm91bmNlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL2luZGV4LnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuMC4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTIuMC4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4wLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4xLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4yLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuMi4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuMi4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMi4y
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMi40LnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4wLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTIuMy4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTIuMy4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
My40LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy41LnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4wLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuNS4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTIuNS4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNS4yLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4wLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4xLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuNi4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuNy4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4x
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNy4yLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4yLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTIuOC40LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTIuOC41LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
OC42LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC43LnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4wLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMC4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMC4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4yLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4zLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC40LnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC41LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuMC42LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuMC43LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4w
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4xLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4yLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuMi4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMi4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
Mi4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4zLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi40LnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi41LnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMy4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMy4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4wLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4xLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4yLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuNS4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuNi4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi4x
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNi4yLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9zcHJpbnQyMDE2LnJzdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Fzc2VydC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYXNzZXJ0LnJz
dAppbmRleCBlMGU5YjkzMDU4NzUuLjdlNDNiMDdmZDc1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2Fzc2VydC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fzc2VydC5yc3QK
QEAgLTEyLDIyICsxMiwyOCBAQCBBc3NlcnRpbmcgd2l0aCB0aGUgYGBhc3NlcnRgYCBzdGF0ZW1l
bnQKIAogYGBweXRlc3RgYCBhbGxvd3MgeW91IHRvIHVzZSB0aGUgc3RhbmRhcmQgcHl0aG9uIGBg
YXNzZXJ0YGAgZm9yIHZlcmlmeWluZwogZXhwZWN0YXRpb25zIGFuZCB2YWx1ZXMgaW4gUHl0aG9u
IHRlc3RzLiAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gd3JpdGUgdGhlCi1mb2xsb3dpbmc6OgorZm9s
bG93aW5nOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVz
dF9hc3NlcnQxLnB5CiAgICAgZGVmIGYoKToKICAgICAgICAgcmV0dXJuIDMKIAorCiAgICAgZGVm
IHRlc3RfZnVuY3Rpb24oKToKICAgICAgICAgYXNzZXJ0IGYoKSA9PSA0CiAKIHRvIGFzc2VydCB0
aGF0IHlvdXIgZnVuY3Rpb24gcmV0dXJucyBhIGNlcnRhaW4gdmFsdWUuIElmIHRoaXMgYXNzZXJ0
aW9uIGZhaWxzCi15b3Ugd2lsbCBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24g
Y2FsbDo6Cit5b3Ugd2lsbCBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2Fs
bDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgdGVzdF9hc3NlcnQx
LnB5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhv
biAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRp
cjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRo
b24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hl
ZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9D
X1RNUERJUgogICAgIGNvbGxlY3RlZCAxIGl0ZW0KIAogICAgIHRlc3RfYXNzZXJ0MS5weSBGICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpA
QCAtNDAsOCArNDYsMTAgQEAgeW91IHdpbGwgc2VlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1
bmN0aW9uIGNhbGw6OgogICAgIEUgICAgICAgYXNzZXJ0IDMgPT0gNAogICAgIEUgICAgICAgICsg
IHdoZXJlIDMgPSBmKCkKIAotICAgIHRlc3RfYXNzZXJ0MS5weTo1OiBBc3NlcnRpb25FcnJvcgot
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzID09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICB0ZXN0X2Fzc2VydDEucHk6NjogQXNzZXJ0aW9u
RXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBp
bmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfYXNzZXJ0MS5w
eTo6dGVzdF9mdW5jdGlvbiAtIGFzc2VydCAzID09IDQKKyAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09IDEgZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CiAKIGBgcHl0ZXN0YGAgaGFzIHN1cHBvcnQgZm9yIHNob3dpbmcgdGhlIHZhbHVlcyBvZiB0aGUg
bW9zdCBjb21tb24gc3ViZXhwcmVzc2lvbnMKIGluY2x1ZGluZyBjYWxscywgYXR0cmlidXRlcywg
Y29tcGFyaXNvbnMsIGFuZCBiaW5hcnkgYW5kIHVuYXJ5CkBAIC00OSw3ICs1Nyw5IEBAIG9wZXJh
dG9ycy4gKFNlZSA6cmVmOmB0YnJlcG9ydGRlbW9gKS4gIFRoaXMgYWxsb3dzIHlvdSB0byB1c2Ug
dGhlCiBpZGlvbWF0aWMgcHl0aG9uIGNvbnN0cnVjdHMgd2l0aG91dCBib2lsZXJwbGF0ZSBjb2Rl
IHdoaWxlIG5vdCBsb3NpbmcKIGludHJvc3BlY3Rpb24gaW5mb3JtYXRpb24uCiAKLUhvd2V2ZXIs
IGlmIHlvdSBzcGVjaWZ5IGEgbWVzc2FnZSB3aXRoIHRoZSBhc3NlcnRpb24gbGlrZSB0aGlzOjoK
K0hvd2V2ZXIsIGlmIHlvdSBzcGVjaWZ5IGEgbWVzc2FnZSB3aXRoIHRoZSBhc3NlcnRpb24gbGlr
ZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBhc3NlcnQgYSAlIDIgPT0g
MCwgInZhbHVlIHdhcyBvZGQsIHNob3VsZCBiZSBldmVuIgogCkBAIC02NCw1MCArNzQsNzEgQEAg
QXNzZXJ0aW9ucyBhYm91dCBleHBlY3RlZCBleGNlcHRpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSW4gb3JkZXIgdG8gd3JpdGUgYXNzZXJ0aW9ucyBh
Ym91dCByYWlzZWQgZXhjZXB0aW9ucywgeW91IGNhbiB1c2UKLWBgcHl0ZXN0LnJhaXNlc2BgIGFz
IGEgY29udGV4dCBtYW5hZ2VyIGxpa2UgdGhpczo6CitgYHB5dGVzdC5yYWlzZXNgYCBhcyBhIGNv
bnRleHQgbWFuYWdlciBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAg
IGltcG9ydCBweXRlc3QKIAorCiAgICAgZGVmIHRlc3RfemVyb19kaXZpc2lvbigpOgogICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgogICAgICAgICAgICAgMSAv
IDAKIAotYW5kIGlmIHlvdSBuZWVkIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBhY3R1YWwgZXhjZXB0
aW9uIGluZm8geW91IG1heSB1c2U6OgorYW5kIGlmIHlvdSBuZWVkIHRvIGhhdmUgYWNjZXNzIHRv
IHRoZSBhY3R1YWwgZXhjZXB0aW9uIGluZm8geW91IG1heSB1c2U6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbl9kZXB0aCgpOgogICAgICAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoUnVudGltZUVycm9yKSBhcyBleGNpbmZvOgorCiAgICAgICAgICAgICBk
ZWYgZigpOgogICAgICAgICAgICAgICAgIGYoKQorCiAgICAgICAgICAgICBmKCkKLSAgICAgICAg
YXNzZXJ0ICdtYXhpbXVtIHJlY3Vyc2lvbicgaW4gc3RyKGV4Y2luZm8udmFsdWUpCisgICAgICAg
IGFzc2VydCAibWF4aW11bSByZWN1cnNpb24iIGluIHN0cihleGNpbmZvLnZhbHVlKQogCi1gYGV4
Y2luZm9gYCBpcyBhIGBgRXhjZXB0aW9uSW5mb2BgIGluc3RhbmNlLCB3aGljaCBpcyBhIHdyYXBw
ZXIgYXJvdW5kCitgYGV4Y2luZm9gYCBpcyBhbiBgYEV4Y2VwdGlvbkluZm9gYCBpbnN0YW5jZSwg
d2hpY2ggaXMgYSB3cmFwcGVyIGFyb3VuZAogdGhlIGFjdHVhbCBleGNlcHRpb24gcmFpc2VkLiAg
VGhlIG1haW4gYXR0cmlidXRlcyBvZiBpbnRlcmVzdCBhcmUKIGBgLnR5cGVgYCwgYGAudmFsdWVg
YCBhbmQgYGAudHJhY2ViYWNrYGAuCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4wCitZb3UgY2Fu
IHBhc3MgYSBgYG1hdGNoYGAga2V5d29yZCBwYXJhbWV0ZXIgdG8gdGhlIGNvbnRleHQtbWFuYWdl
ciB0byB0ZXN0Cit0aGF0IGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMgb24gdGhlIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiBhbiBleGNlcHRpb24KKyhzaW1pbGFyIHRvIHRoZSBgYFRlc3RD
YXNlLmFzc2VydFJhaXNlc1JlZ2V4cGBgIG1ldGhvZCBmcm9tIGBgdW5pdHRlc3RgYCk6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGltcG9ydCBweXRlc3QKKwogCi1JbiB0aGUgY29u
dGV4dCBtYW5hZ2VyIGZvcm0geW91IG1heSB1c2UgdGhlIGtleXdvcmQgYXJndW1lbnQKLWBgbWVz
c2FnZWBgIHRvIHNwZWNpZnkgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlOjoKKyAgICBkZWYgbXlm
dW5jKCk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4Y2VwdGlvbiAxMjMgcmFpc2VkIikK
KworCisgICAgZGVmIHRlc3RfbWF0Y2goKToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZh
bHVlRXJyb3IsIG1hdGNoPXIiLiogMTIzIC4qIik6CisgICAgICAgICAgICBteWZ1bmMoKQorCitU
aGUgcmVnZXhwIHBhcmFtZXRlciBvZiB0aGUgYGBtYXRjaGBgIG1ldGhvZCBpcyBtYXRjaGVkIHdp
dGggdGhlIGBgcmUuc2VhcmNoYGAKK2Z1bmN0aW9uLCBzbyBpbiB0aGUgYWJvdmUgZXhhbXBsZSBg
YG1hdGNoPScxMjMnYGAgd291bGQgaGF2ZSB3b3JrZWQgYXMKK3dlbGwuCiAKLSAgICAgPj4+IHdp
dGggcmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBtZXNzYWdlPSJFeHBlY3RpbmcgWmVyb0Rpdmlz
aW9uRXJyb3IiKToKLSAgICAgLi4uICAgICBwYXNzCi0gICAgIC4uLiBGYWlsZWQ6IEV4cGVjdGlu
ZyBaZXJvRGl2aXNpb25FcnJvcgorVGhlcmUncyBhbiBhbHRlcm5hdGUgZm9ybSBvZiB0aGUgYGBw
eXRlc3QucmFpc2VzYGAgZnVuY3Rpb24gd2hlcmUgeW91IHBhc3MKK2EgZnVuY3Rpb24gdGhhdCB3
aWxsIGJlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJnc2Bg
IGFuZAorYXNzZXJ0IHRoYXQgdGhlIGdpdmVuIGV4Y2VwdGlvbiBpcyByYWlzZWQ6CiAKLUlmIHlv
dSB3YW50IHRvIHdyaXRlIHRlc3QgY29kZSB0aGF0IHdvcmtzIG9uIFB5dGhvbiAyLjQgYXMgd2Vs
bCwKLXlvdSBtYXkgYWxzbyB1c2UgdHdvIG90aGVyIHdheXMgdG8gdGVzdCBmb3IgYW4gZXhwZWN0
ZWQgZXhjZXB0aW9uOjoKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIHB5dGVzdC5yYWlz
ZXMoRXhwZWN0ZWRFeGNlcHRpb24sIGZ1bmMsICphcmdzLCAqKmt3YXJncykKLSAgICBweXRlc3Qu
cmFpc2VzKEV4cGVjdGVkRXhjZXB0aW9uLCAiZnVuYygqYXJncywgKiprd2FyZ3MpIikKIAotYm90
aCBvZiB3aGljaCBleGVjdXRlIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gd2l0aCBhcmdzIGFuZCBr
d2FyZ3MgYW5kCi1hc3NlcnRzIHRoYXQgdGhlIGdpdmVuIGBgRXhwZWN0ZWRFeGNlcHRpb25gYCBp
cyByYWlzZWQuICBUaGUgcmVwb3J0ZXIgd2lsbAotcHJvdmlkZSB5b3Ugd2l0aCBoZWxwZnVsIG91
dHB1dCBpbiBjYXNlIG9mIGZhaWx1cmVzIHN1Y2ggYXMgKm5vCitUaGUgcmVwb3J0ZXIgd2lsbCBw
cm92aWRlIHlvdSB3aXRoIGhlbHBmdWwgb3V0cHV0IGluIGNhc2Ugb2YgZmFpbHVyZXMgc3VjaCBh
cyAqbm8KIGV4Y2VwdGlvbiogb3IgKndyb25nIGV4Y2VwdGlvbiouCiAKIE5vdGUgdGhhdCBpdCBp
cyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSAicmFpc2VzIiBhcmd1bWVudCB0bwogYGBweXRl
c3QubWFyay54ZmFpbGBgLCB3aGljaCBjaGVja3MgdGhhdCB0aGUgdGVzdCBpcyBmYWlsaW5nIGlu
IGEgbW9yZQotc3BlY2lmaWMgd2F5IHRoYW4ganVzdCBoYXZpbmcgYW55IGV4Y2VwdGlvbiByYWlz
ZWQ6Ogorc3BlY2lmaWMgd2F5IHRoYW4ganVzdCBoYXZpbmcgYW55IGV4Y2VwdGlvbiByYWlzZWQ6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIEBweXRlc3QubWFyay54ZmFpbChyYWlz
ZXM9SW5kZXhFcnJvcikKICAgICBkZWYgdGVzdF9mKCk6CkBAIC0xMTksMzAgKzE1MCwxMyBAQCBl
eGNlcHRpb25zIHlvdXIgb3duIGNvZGUgaXMgZGVsaWJlcmF0ZWx5IHJhaXNpbmcsIHdoZXJlYXMg
dXNpbmcKIGxpa2UgZG9jdW1lbnRpbmcgdW5maXhlZCBidWdzICh3aGVyZSB0aGUgdGVzdCBkZXNj
cmliZXMgd2hhdCAic2hvdWxkIiBoYXBwZW4pCiBvciBidWdzIGluIGRlcGVuZGVuY2llcy4KIAot
QWxzbywgdGhlIGNvbnRleHQgbWFuYWdlciBmb3JtIGFjY2VwdHMgYSBgYG1hdGNoYGAga2V5d29y
ZCBwYXJhbWV0ZXIgdG8gdGVzdAotdGhhdCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzIG9u
IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gZXhjZXB0aW9uCi0obGlrZSB0aGUgYGBU
ZXN0Q2FzZS5hc3NlcnRSYWlzZXNSZWdleHBgYCBtZXRob2QgZnJvbSBgYHVuaXR0ZXN0YGApOjoK
LQotICAgIGltcG9ydCBweXRlc3QKLQotICAgIGRlZiBteWZ1bmMoKToKLSAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiRXhjZXB0aW9uIDEyMyByYWlzZWQiKQotCi0gICAgZGVmIHRlc3RfbWF0Y2go
KToKLSAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNoPXInLiogMTIz
IC4qJyk6Ci0gICAgICAgICAgICBteWZ1bmMoKQotCi1UaGUgcmVnZXhwIHBhcmFtZXRlciBvZiB0
aGUgYGBtYXRjaGBgIG1ldGhvZCBpcyBtYXRjaGVkIHdpdGggdGhlIGBgcmUuc2VhcmNoYGAKLWZ1
bmN0aW9uLiBTbyBpbiB0aGUgYWJvdmUgZXhhbXBsZSBgYG1hdGNoPScxMjMnYGAgd291bGQgaGF2
ZSB3b3JrZWQgYXMKLXdlbGwuCi0KIAogLi4gX2Bhc3NlcnR3YXJuc2A6CiAKIEFzc2VydGlvbnMg
YWJvdXQgZXhwZWN0ZWQgd2FybmluZ3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuOAorCiAKIFlvdSBjYW4gY2hlY2sgdGhh
dCBjb2RlIHJhaXNlcyBhIHBhcnRpY3VsYXIgd2FybmluZyB1c2luZwogOnJlZjpgcHl0ZXN0Lndh
cm5zIDx3YXJucz5gLgpAQCAtMTUzLDI0ICsxNjcsMzAgQEAgWW91IGNhbiBjaGVjayB0aGF0IGNv
ZGUgcmFpc2VzIGEgcGFydGljdWxhciB3YXJuaW5nIHVzaW5nCiBNYWtpbmcgdXNlIG9mIGNvbnRl
eHQtc2Vuc2l0aXZlIGNvbXBhcmlzb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuMAorCiAKIGBgcHl0ZXN0
YGAgaGFzIHJpY2ggc3VwcG9ydCBmb3IgcHJvdmlkaW5nIGNvbnRleHQtc2Vuc2l0aXZlIGluZm9y
bWF0aW9uCi13aGVuIGl0IGVuY291bnRlcnMgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZTo6Cit3
aGVuIGl0IGVuY291bnRlcnMgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZToKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3RfYXNzZXJ0Mi5weQogCisKICAg
ICBkZWYgdGVzdF9zZXRfY29tcGFyaXNvbigpOgogICAgICAgICBzZXQxID0gc2V0KCIxMzA4IikK
ICAgICAgICAgc2V0MiA9IHNldCgiODAzNSIpCiAgICAgICAgIGFzc2VydCBzZXQxID09IHNldDIK
IAotaWYgeW91IHJ1biB0aGlzIG1vZHVsZTo6CitpZiB5b3UgcnVuIHRoaXMgbW9kdWxlOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCB0ZXN0X2Fzc2VydDIucHkKICAg
ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55
LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVH
RU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngu
eSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQ
WVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElS
CiAgICAgY29sbGVjdGVkIDEgaXRlbQogCiAgICAgdGVzdF9hc3NlcnQyLnB5IEYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC0xODks
OCArMjA5LDEwIEBAIGlmIHlvdSBydW4gdGhpcyBtb2R1bGU6OgogICAgIEUgICAgICAgICAnNScK
ICAgICBFICAgICAgICAgVXNlIC12IHRvIGdldCB0aGUgZnVsbCBkaWZmCiAKLSAgICB0ZXN0X2Fz
c2VydDIucHk6NTogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
IDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAg
dGVzdF9hc3NlcnQyLnB5OjY6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09
PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09
PQorICAgIEZBSUxFRCB0ZXN0X2Fzc2VydDIucHk6OnRlc3Rfc2V0X2NvbXBhcmlzb24gLSBBc3Nl
cnRpb25FcnJvcjogYXNzZXJ0IHsnMCcuLi4KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09IDEgZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFNw
ZWNpYWwgY29tcGFyaXNvbnMgYXJlIGRvbmUgZm9yIGEgbnVtYmVyIG9mIGNhc2VzOgogCkBAIC0y
MDAsOCArMjIyLDggQEAgU3BlY2lhbCBjb21wYXJpc29ucyBhcmUgZG9uZSBmb3IgYSBudW1iZXIg
b2YgY2FzZXM6CiAKIFNlZSB0aGUgOnJlZjpgcmVwb3J0aW5nIGRlbW8gPHRicmVwb3J0ZGVtbz5g
IGZvciBtYW55IG1vcmUgZXhhbXBsZXMuCiAKLURlZmluaW5nIHlvdXIgb3duIGFzc2VydGlvbiBj
b21wYXJpc29uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CitEZWZpbmluZyB5b3VyIG93biBleHBsYW5hdGlvbiBmb3IgZmFpbGVkIGFzc2VydGlvbnMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBJdCBp
cyBwb3NzaWJsZSB0byBhZGQgeW91ciBvd24gZGV0YWlsZWQgZXhwbGFuYXRpb25zIGJ5IGltcGxl
bWVudGluZwogdGhlIGBgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZWBgIGhvb2suCkBAIC0yMTAs
MzIgKzIzMiw0MyBAQCB0aGUgYGBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlYGAgaG9vay4KICAg
IDpub2luZGV4OgogCiBBcyBhbiBleGFtcGxlIGNvbnNpZGVyIGFkZGluZyB0aGUgZm9sbG93aW5n
IGhvb2sgaW4gYSA6cmVmOmBjb25mdGVzdC5weSA8Y29uZnRlc3QucHk+YAotZmlsZSB3aGljaCBw
cm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBleHBsYW5hdGlvbiBmb3IgYGBGb29gYCBvYmplY3RzOjoK
K2ZpbGUgd2hpY2ggcHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgZXhwbGFuYXRpb24gZm9yIGBgRm9v
YGAgb2JqZWN0czoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAjIGNvbnRlbnQgb2Yg
Y29uZnRlc3QucHkKICAgIGZyb20gdGVzdF9mb29jb21wYXJlIGltcG9ydCBGb28KKworCiAgICBk
ZWYgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZShvcCwgbGVmdCwgcmlnaHQpOgogICAgICAgIGlm
IGlzaW5zdGFuY2UobGVmdCwgRm9vKSBhbmQgaXNpbnN0YW5jZShyaWdodCwgRm9vKSBhbmQgb3Ag
PT0gIj09IjoKLSAgICAgICAgICAgcmV0dXJuIFsnQ29tcGFyaW5nIEZvbyBpbnN0YW5jZXM6JywK
LSAgICAgICAgICAgICAgICAgICAnICAgdmFsczogJXMgIT0gJXMnICUgKGxlZnQudmFsLCByaWdo
dC52YWwpXQorICAgICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgICAgIkNvbXBhcmluZyBG
b28gaW5zdGFuY2VzOiIsCisgICAgICAgICAgICAgICAiICAgdmFsczoge30gIT0ge30iLmZvcm1h
dChsZWZ0LnZhbCwgcmlnaHQudmFsKSwKKyAgICAgICAgICAgXQorCitub3csIGdpdmVuIHRoaXMg
dGVzdCBtb2R1bGU6CiAKLW5vdywgZ2l2ZW4gdGhpcyB0ZXN0IG1vZHVsZTo6CisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKICAgICMgY29udGVudCBvZiB0ZXN0X2Zvb2NvbXBhcmUucHkKLSAgIGNs
YXNzIEZvbyhvYmplY3QpOgorICAgY2xhc3MgRm9vOgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB2YWwpOgogICAgICAgICAgICBzZWxmLnZhbCA9IHZhbAogCiAgICAgICAgZGVmIF9fZXFfXyhz
ZWxmLCBvdGhlcik6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbCA9PSBvdGhlci52YWwKIAor
CiAgICBkZWYgdGVzdF9jb21wYXJlKCk6CiAgICAgICAgZjEgPSBGb28oMSkKICAgICAgICBmMiA9
IEZvbygyKQogICAgICAgIGFzc2VydCBmMSA9PSBmMgogCiB5b3UgY2FuIHJ1biB0aGUgdGVzdCBt
b2R1bGUgYW5kIGdldCB0aGUgY3VzdG9tIG91dHB1dCBkZWZpbmVkIGluCi10aGUgY29uZnRlc3Qg
ZmlsZTo6Cit0aGUgY29uZnRlc3QgZmlsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAg
ICAkIHB5dGVzdCAtcSB0ZXN0X2Zvb2NvbXBhcmUucHkKICAgIEYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpA
QCAtMjQ5LDUxICsyODIsNjEgQEAgdGhlIGNvbmZ0ZXN0IGZpbGU6OgogICAgRSAgICAgICBhc3Nl
cnQgQ29tcGFyaW5nIEZvbyBpbnN0YW5jZXM6CiAgICBFICAgICAgICAgICAgdmFsczogMSAhPSAy
CiAKLSAgIHRlc3RfZm9vY29tcGFyZS5weToxMTogQXNzZXJ0aW9uRXJyb3IKLSAgIDEgZmFpbGVk
IGluIDAuMTIgc2Vjb25kcworICAgdGVzdF9mb29jb21wYXJlLnB5OjEyOiBBc3NlcnRpb25FcnJv
cgorICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9
PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgRkFJTEVEIHRlc3RfZm9vY29tcGFyZS5weTo6
dGVzdF9jb21wYXJlIC0gYXNzZXJ0IENvbXBhcmluZyBGb28gaW5zdGFuY2VzOgorICAgMSBmYWls
ZWQgaW4gMC4xMnMKIAogLi4gX2Fzc2VydC1kZXRhaWxzOgogLi4gX2Bhc3NlcnQgaW50cm9zcGVj
dGlvbmA6CiAKLUFkdmFuY2VkIGFzc2VydGlvbiBpbnRyb3NwZWN0aW9uCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIHZlcnNpb25hZGRlZDo6IDIuMQorQXNzZXJ0aW9u
IGludHJvc3BlY3Rpb24gZGV0YWlscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAKIFJlcG9ydGluZyBkZXRhaWxzIGFib3V0IGEgZmFpbGluZyBhc3NlcnRpb24gaXMgYWNoaWV2
ZWQgYnkgcmV3cml0aW5nIGFzc2VydAogc3RhdGVtZW50cyBiZWZvcmUgdGhleSBhcmUgcnVuLiAg
UmV3cml0dGVuIGFzc2VydCBzdGF0ZW1lbnRzIHB1dCBpbnRyb3NwZWN0aW9uCiBpbmZvcm1hdGlv
biBpbnRvIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBtZXNzYWdlLiAgYGBweXRlc3RgYCBvbmx5IHJl
d3JpdGVzIHRlc3QKLW1vZHVsZXMgZGlyZWN0bHkgZGlzY292ZXJlZCBieSBpdHMgdGVzdCBjb2xs
ZWN0aW9uIHByb2Nlc3MsIHNvIGFzc2VydHMgaW4KLXN1cHBvcnRpbmcgbW9kdWxlcyB3aGljaCBh
cmUgbm90IHRoZW1zZWx2ZXMgdGVzdCBtb2R1bGVzIHdpbGwgbm90IGJlIHJld3JpdHRlbi4KK21v
ZHVsZXMgZGlyZWN0bHkgZGlzY292ZXJlZCBieSBpdHMgdGVzdCBjb2xsZWN0aW9uIHByb2Nlc3Ms
IHNvICoqYXNzZXJ0cyBpbgorc3VwcG9ydGluZyBtb2R1bGVzIHdoaWNoIGFyZSBub3QgdGhlbXNl
bHZlcyB0ZXN0IG1vZHVsZXMgd2lsbCBub3QgYmUgcmV3cml0dGVuKiouCiAKLS4uIG5vdGU6Ogor
WW91IGNhbiBtYW51YWxseSBlbmFibGUgYXNzZXJ0aW9uIHJld3JpdGluZyBmb3IgYW4gaW1wb3J0
ZWQgbW9kdWxlIGJ5IGNhbGxpbmcKK2ByZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSA8aHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3dyaXRpbmdfcGx1Z2lucy5odG1sI2Fzc2VydGlvbi1y
ZXdyaXRpbmc+YF8KK2JlZm9yZSB5b3UgaW1wb3J0IGl0IChhIGdvb2QgcGxhY2UgdG8gZG8gdGhh
dCBpcyBpbiB5b3VyIHJvb3QgYGBjb25mdGVzdC5weWBgKS4KIAotICAgYGBweXRlc3RgYCByZXdy
aXRlcyB0ZXN0IG1vZHVsZXMgb24gaW1wb3J0IGJ5IHVzaW5nIGFuIGltcG9ydAotICAgaG9vayB0
byB3cml0ZSBuZXcgYGBweWNgYCBmaWxlcy4gTW9zdCBvZiB0aGUgdGltZSB0aGlzIHdvcmtzIHRy
YW5zcGFyZW50bHkuCi0gICBIb3dldmVyLCBpZiB5b3UgYXJlIG1lc3Npbmcgd2l0aCBpbXBvcnQg
eW91cnNlbGYsIHRoZSBpbXBvcnQgaG9vayBtYXkKLSAgIGludGVyZmVyZS4KK0ZvciBmdXJ0aGVy
IGluZm9ybWF0aW9uLCBCZW5qYW1pbiBQZXRlcnNvbiB3cm90ZSB1cCBgQmVoaW5kIHRoZSBzY2Vu
ZXMgb2YgcHl0ZXN0J3MgbmV3IGFzc2VydGlvbiByZXdyaXRpbmcgPGh0dHA6Ly9weWJpdGVzLmJs
b2dzcG90LmNvbS8yMDExLzA3L2JlaGluZC1zY2VuZXMtb2YtcHl0ZXN0cy1uZXctYXNzZXJ0aW9u
Lmh0bWw+YF8uCiAKLSAgIElmIHRoaXMgaXMgdGhlIGNhc2UgeW91IGhhdmUgdHdvIG9wdGlvbnM6
CitBc3NlcnRpb24gcmV3cml0aW5nIGNhY2hlcyBmaWxlcyBvbiBkaXNrCit+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLSAgICogRGlzYWJsZSByZXdyaXRpbmcgZm9y
IGEgc3BlY2lmaWMgbW9kdWxlIGJ5IGFkZGluZyB0aGUgc3RyaW5nCi0gICAgIGBgUFlURVNUX0RP
TlRfUkVXUklURWBgIHRvIGl0cyBkb2NzdHJpbmcuCitgYHB5dGVzdGBgIHdpbGwgd3JpdGUgYmFj
ayB0aGUgcmV3cml0dGVuIG1vZHVsZXMgdG8gZGlzayBmb3IgY2FjaGluZy4gWW91IGNhbiBkaXNh
YmxlCit0aGlzIGJlaGF2aW9yIChmb3IgZXhhbXBsZSB0byBhdm9pZCBsZWF2aW5nIHN0YWxlIGBg
LnB5Y2BgIGZpbGVzIGFyb3VuZCBpbiBwcm9qZWN0cyB0aGF0Cittb3ZlIGZpbGVzIGFyb3VuZCBh
IGxvdCkgYnkgYWRkaW5nIHRoaXMgdG8gdGhlIHRvcCBvZiB5b3VyIGBgY29uZnRlc3QucHlgYCBm
aWxlOgogCi0gICAqIERpc2FibGUgcmV3cml0aW5nIGZvciBhbGwgbW9kdWxlcyBieSB1c2luZyBg
YC0tYXNzZXJ0PXBsYWluYGAuCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAgIEFkZGl0aW9u
YWxseSwgcmV3cml0aW5nIHdpbGwgZmFpbCBzaWxlbnRseSBpZiBpdCBjYW5ub3Qgd3JpdGUgbmV3
IGBgLnB5Y2BgIGZpbGVzLAotICAgaS5lLiBpbiBhIHJlYWQtb25seSBmaWxlc3lzdGVtIG9yIGEg
emlwZmlsZS4KKyAgIGltcG9ydCBzeXMKIAorICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBU
cnVlCiAKLUZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBCZW5qYW1pbiBQZXRlcnNvbiB3cm90ZSB1
cCBgQmVoaW5kIHRoZSBzY2VuZXMgb2YgcHl0ZXN0J3MgbmV3IGFzc2VydGlvbiByZXdyaXRpbmcg
PGh0dHA6Ly9weWJpdGVzLmJsb2dzcG90LmNvbS8yMDExLzA3L2JlaGluZC1zY2VuZXMtb2YtcHl0
ZXN0cy1uZXctYXNzZXJ0aW9uLmh0bWw+YF8uCitOb3RlIHRoYXQgeW91IHN0aWxsIGdldCB0aGUg
YmVuZWZpdHMgb2YgYXNzZXJ0aW9uIGludHJvc3BlY3Rpb24sIHRoZSBvbmx5IGNoYW5nZSBpcyB0
aGF0Cit0aGUgYGAucHljYGAgZmlsZXMgd29uJ3QgYmUgY2FjaGVkIG9uIGRpc2suCisKK0FkZGl0
aW9uYWxseSwgcmV3cml0aW5nIHdpbGwgc2lsZW50bHkgc2tpcCBjYWNoaW5nIGlmIGl0IGNhbm5v
dCB3cml0ZSBuZXcgYGAucHljYGAgZmlsZXMsCitpLmUuIGluIGEgcmVhZC1vbmx5IGZpbGVzeXN0
ZW0gb3IgYSB6aXBmaWxlLgorCisKK0Rpc2FibGluZyBhc3NlcnQgcmV3cml0aW5nCit+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fgorCitgYHB5dGVzdGBgIHJld3JpdGVzIHRlc3QgbW9kdWxlcyBv
biBpbXBvcnQgYnkgdXNpbmcgYW4gaW1wb3J0Citob29rIHRvIHdyaXRlIG5ldyBgYHB5Y2BgIGZp
bGVzLiBNb3N0IG9mIHRoZSB0aW1lIHRoaXMgd29ya3MgdHJhbnNwYXJlbnRseS4KK0hvd2V2ZXIs
IGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHlvdXJzZWxmLCB0
aGUgaW1wb3J0IGhvb2sgbWF5CitpbnRlcmZlcmUuCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIuMQot
ICAgQWRkIGFzc2VydCByZXdyaXRpbmcgYXMgYW4gYWx0ZXJuYXRlIGludHJvc3BlY3Rpb24gdGVj
aG5pcXVlLgorSWYgdGhpcyBpcyB0aGUgY2FzZSB5b3UgaGF2ZSB0d28gb3B0aW9uczoKIAotLi4g
dmVyc2lvbmNoYW5nZWQ6OiAyLjEKLSAgIEludHJvZHVjZSB0aGUgYGAtLWFzc2VydGBgIG9wdGlv
bi4gRGVwcmVjYXRlIGBgLS1uby1hc3NlcnRgYCBhbmQKLSAgIGBgLS1ub21hZ2ljYGAuCisqIERp
c2FibGUgcmV3cml0aW5nIGZvciBhIHNwZWNpZmljIG1vZHVsZSBieSBhZGRpbmcgdGhlIHN0cmlu
ZworICBgYFBZVEVTVF9ET05UX1JFV1JJVEVgYCB0byBpdHMgZG9jc3RyaW5nLgogCi0uLiB2ZXJz
aW9uY2hhbmdlZDo6IDMuMAotICAgUmVtb3ZlcyB0aGUgYGAtLW5vLWFzc2VydGBgIGFuZCBgYC0t
bm9tYWdpY2BgIG9wdGlvbnMuCi0gICBSZW1vdmVzIHRoZSBgYC0tYXNzZXJ0PXJlaW50ZXJwYGAg
b3B0aW9uLgorKiBEaXNhYmxlIHJld3JpdGluZyBmb3IgYWxsIG1vZHVsZXMgYnkgdXNpbmcgYGAt
LWFzc2VydD1wbGFpbmBgLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2JhY2t3YXJk
cy1jb21wYXRpYmlsaXR5LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9iYWNrd2FyZHMtY29tcGF0
aWJpbGl0eS5yc3QKaW5kZXggNTU1MDZlN2MzMzhlLi5kNWIyZDc5ZDYzMzYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9iYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5yc3QKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2JhY2t3YXJkcy1jb21wYXRpYmlsaXR5LnJzdApAQCAtMywxOCArMyw3
OCBAQAogQmFja3dhcmRzIENvbXBhdGliaWxpdHkgUG9saWN5CiA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIAorLi4gdmVyc2lvbmFkZGVkOiA2LjAKKworcHl0ZXN0IGlzIGFjdGl2ZWx5
IGV2b2x2aW5nIGFuZCBpcyBhIHByb2plY3QgdGhhdCBoYXMgYmVlbiBkZWNhZGVzIGluIHRoZSBt
YWtpbmcsCit3ZSBrZWVwIGxlYXJuaW5nIGFib3V0IG5ldyBhbmQgYmV0dGVyIHN0cnVjdHVyZXMg
dG8gZXhwcmVzcyBkaWZmZXJlbnQgZGV0YWlscyBhYm91dCB0ZXN0aW5nLgorCitXaGlsZSB3ZSBp
bXBsZW1lbnQgdGhvc2UgbW9kaWZpY2F0aW9ucyB3ZSB0cnkgdG8gZW5zdXJlIGFuIGVhc3kgdHJh
bnNpdGlvbiBhbmQgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdW5uZWNlc3NhcnkgY2h1cm4gb24gb3Vy
IHVzZXJzIGFuZCBjb21tdW5pdHkvcGx1Z2luIGF1dGhvcnMuCisKK0FzIG9mIG5vdywgcHl0ZXN0
IGNvbnNpZGVycyBtdWx0aXBlIHR5cGVzIG9mIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdHJhbnNp
dGlvbnM6CisKK2EpIHRyaXZpYWw6IEFQSXMgd2hpY2ggdHJpdmlhbGx5IHRyYW5zbGF0ZSB0byB0
aGUgbmV3IG1lY2hhbmlzbSwKKyAgIGFuZCBkbyBub3QgY2F1c2UgcHJvYmxlbWF0aWMgY2hhbmdl
cy4KKworICAgV2UgdHJ5IHRvIHN1cHBvcnQgdGhvc2UgaW5kZWZpbml0ZWx5IHdoaWxlIGVuY291
cmFnaW5nIHVzZXJzIHRvIHN3aXRjaCB0byBuZXdlci9iZXR0ZXIgbWVjaGFuaXNtcyB0aHJvdWdo
IGRvY3VtZW50YXRpb24uCisKK2IpIHRyYW5zaXRpb25hbDogdGhlIG9sZCBhbmQgbmV3IEFQSSBk
b24ndCBjb25mbGljdAorICAgYW5kIHdlIGNhbiBoZWxwIHVzZXJzIHRyYW5zaXRpb24gYnkgdXNp
bmcgd2FybmluZ3MsIHdoaWxlIHN1cHBvcnRpbmcgYm90aCBmb3IgYSBwcm9sb25nZWQgdGltZS4K
KworICAgV2Ugd2lsbCBvbmx5IHN0YXJ0IHRoZSByZW1vdmFsIG9mIGRlcHJlY2F0ZWQgZnVuY3Rp
b25hbGl0eSBpbiBtYWpvciByZWxlYXNlcyAoZS5nLiBpZiB3ZSBkZXByZWNhdGUgc29tZXRoaW5n
IGluIDMuMCB3ZSB3aWxsIHN0YXJ0IHRvIHJlbW92ZSBpdCBpbiA0LjApLCBhbmQga2VlcCBpdCBh
cm91bmQgZm9yIGF0IGxlYXN0IHR3byBtaW5vciByZWxlYXNlcyAoZS5nLiBpZiB3ZSBkZXByZWNh
dGUgc29tZXRoaW5nIGluIDMuOSBhbmQgNC4wIGlzIHRoZSBuZXh0IHJlbGVhc2UsIHdlIHN0YXJ0
IHRvIHJlbW92ZSBpdCBpbiA1LjAsIG5vdCBpbiA0LjApLgorCisgICBXaGVuIHRoZSBkZXByZWNh
dGlvbiBleHBpcmVzIChlLmcuIDQuMCBpcyByZWxlYXNlZCksIHdlIHdvbid0IHJlbW92ZSB0aGUg
ZGVwcmVjYXRlZCBmdW5jdGlvbmFsaXR5IGltbWVkaWF0ZWx5LCBidXQgd2lsbCB1c2UgdGhlIHN0
YW5kYXJkIHdhcm5pbmcgZmlsdGVycyB0byB0dXJuIHRoZW0gaW50byAqKmVycm9ycyoqIGJ5IGRl
ZmF1bHQuIFRoaXMgYXBwcm9hY2ggbWFrZXMgaXQgZXhwbGljaXQgdGhhdCByZW1vdmFsIGlzIGlt
bWluZW50LCBhbmQgc3RpbGwgZ2l2ZXMgeW91IHRpbWUgdG8gdHVybiB0aGUgZGVwcmVjYXRlZCBm
ZWF0dXJlIGludG8gYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gZXJyb3Igc28gaXQgY2FuIGJlIGRl
YWx0IHdpdGggaW4geW91ciBvd24gdGltZS4gSW4gdGhlIG5leHQgbWlub3IgcmVsZWFzZSAoZS5n
LiA0LjEpLCB0aGUgZmVhdHVyZSB3aWxsIGJlIGVmZmVjdGl2ZWx5IHJlbW92ZWQuCisKKworYykg
dHJ1ZSBicmVha2FnZTogc2hvdWxkIG9ubHkgdG8gYmUgY29uc2lkZXJlZCB3aGVuIG5vcm1hbCB0
cmFuc2l0aW9uIGlzIHVucmVhc29uYWJseSB1bnN1c3RhaW5hYmxlIGFuZCB3b3VsZCBvZmZzZXQg
aW1wb3J0YW50IGRldmVsb3BtZW50L2ZlYXR1cmVzIGJ5IHllYXJzLgorICAgSW4gYWRkaXRpb24s
IHRoZXkgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gQVBJcyB3aGVyZSB0aGUgbnVtYmVyIG9mIGFjdHVh
bCB1c2VycyBpcyB2ZXJ5IHNtYWxsIChmb3IgZXhhbXBsZSBvbmx5IGltcGFjdGluZyBzb21lIHBs
dWdpbnMpLCBhbmQgY2FuIGJlIGNvb3JkaW5hdGVkIHdpdGggdGhlIGNvbW11bml0eSBpbiBhZHZh
bmNlLgorCisgICBFeGFtcGxlcyBmb3Igc3VjaCB1cGNvbWluZyBjaGFuZ2VzOgorCisgICAqIHJl
bW92YWwgb2YgYGBweXRlc3RfcnVudGVzdF9wcm90b2NvbC9uZXh0aXRlbWBgIC0gYCM4OTVgXwor
ICAgKiByZWFycmFuZ2luZyBvZiB0aGUgbm9kZSB0cmVlIHRvIGluY2x1ZGUgYGBGdW5jdGlvbkRl
ZmluaXRpb25gYAorICAgKiByZWFycmFuZ2luZyBvZiBgYFNldHVwU3RhdGVgYCBgIzg5NWBfCisK
KyAgIFRydWUgYnJlYWthZ2VzIG11c3QgYmUgYW5ub3VuY2VkIGZpcnN0IGluIGFuIGlzc3VlIGNv
bnRhaW5pbmc6CisKKyAgICogRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGNoYW5nZQorICAg
KiBSYXRpb25hbGUKKyAgICogRXhwZWN0ZWQgaW1wYWN0IG9uIHVzZXJzIGFuZCBwbHVnaW4gYXV0
aG9ycyAoZXhhbXBsZSBpbiBgIzg5NWBfKQorCisgICBBZnRlciB0aGVyZSdzIG5vIGhhcmQgKi0x
KiBvbiB0aGUgaXNzdWUgaXQgc2hvdWxkIGJlIGZvbGxvd2VkIHVwIGJ5IGFuIGluaXRpYWwgcHJv
b2Ytb2YtY29uY2VwdCBQdWxsIFJlcXVlc3QuCisKKyAgIFRoaXMgUE9DIHNlcnZlcyBhcyBib3Ro
IGEgY29vcmRpbmF0aW9uIHBvaW50IHRvIGFzc2VzcyBpbXBhY3QgYW5kIHBvdGVudGlhbCBpbnNw
cmlhdGlvbiB0byBjb21lIHVwIHdpdGggYSB0cmFuc2l0aW9uYWwgc29sdXRpb24gYWZ0ZXIgYWxs
LgorCisgICBBZnRlciBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWUgdGhlIFBSIGNhbiBiZSBt
ZXJnZWQgdG8gYmFzZSBhIG5ldyBtYWpvciByZWxlYXNlLgorCisgICBGb3IgdGhlIFBSIHRvIG1h
dHVyZSBmcm9tIFBPQyB0byBhY2NlcHRhbmNlLCBpdCBtdXN0IGNvbnRhaW46CisgICAqIFNldHVw
IG9mIGRlcHJlY2F0aW9uIGVycm9ycy93YXJuaW5ncyB0aGF0IGhlbHAgdXNlcnMgZml4IGFuZCBw
b3J0IHRoZWlyIGNvZGUuIElmIGl0IGlzIHBvc3NpYmxlIHRvIGludHJvZHVjZSBhIGRlcHJlY2F0
aW9uIHBlcmlvZCB1bmRlciB0aGUgY3VycmVudCBzZXJpZXMsIGJlZm9yZSB0aGUgdHJ1ZSBicmVh
a2FnZSwgaXQgc2hvdWxkIGJlIGludHJvZHVjZWQgaW4gYSBzZXBhcmF0ZSBQUiBhbmQgYmUgcGFy
dCBvZiB0aGUgY3VycmVudCByZWxlYXNlIHN0cmVhbS4KKyAgICogRGV0YWlsZWQgZGVzY3JpcHRp
b24gb2YgdGhlIHJhdGlvbmFsZSBhbmQgZXhhbXBsZXMgb24gaG93IHRvIHBvcnQgY29kZSBpbiBg
YGRvYy9lbi9kZXByZWNhdGlvbnMucnN0YGAuCisKKworSGlzdG9yeQorPT09PT09PT09CisKKwor
Rm9jdXMgcHJpbWFyeSBvbiBzbW9vdGggdHJhbnNpdGlvbiAtIHN0YW5jZSAocHJlIDYuMCkKK35+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKIEtl
ZXBpbmcgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaGFzIGEgdmVyeSBoaWdoIHByaW9yaXR5IGlu
IHRoZSBweXRlc3QgcHJvamVjdC4gQWx0aG91Z2ggd2UgaGF2ZSBkZXByZWNhdGVkIGZ1bmN0aW9u
YWxpdHkgb3ZlciB0aGUgeWVhcnMsIG1vc3Qgb2YgaXQgaXMgc3RpbGwgc3VwcG9ydGVkLiBBbGwg
ZGVwcmVjYXRpb25zIGluIHB5dGVzdCB3ZXJlIGRvbmUgYmVjYXVzZSBzaW1wbGVyIG9yIG1vcmUg
ZWZmaWNpZW50IHdheXMgb2YgYWNjb21wbGlzaGluZyB0aGUgc2FtZSB0YXNrcyBoYXZlIGVtZXJn
ZWQsIG1ha2luZyB0aGUgb2xkIHdheSBvZiBkb2luZyB0aGluZ3MgdW5uZWNlc3NhcnkuCiAKIFdp
dGggdGhlIHB5dGVzdCAzLjAgcmVsZWFzZSB3ZSBpbnRyb2R1Y2VkIGEgY2xlYXIgY29tbXVuaWNh
dGlvbiBzY2hlbWUgZm9yIHdoZW4gd2Ugd2lsbCBhY3R1YWxseSByZW1vdmUgdGhlIG9sZCBidXN0
ZWQgam9pbnQgYW5kIHBvbGl0ZWx5IGFzayB5b3UgdG8gdXNlIHRoZSBuZXcgaG90bmVzcyBpbnN0
ZWFkLCB3aGlsZSBnaXZpbmcgeW91IGVub3VnaCB0aW1lIHRvIGFkanVzdCB5b3VyIHRlc3RzIG9y
IHJhaXNlIGNvbmNlcm5zIGlmIHRoZXJlIGFyZSB2YWxpZCByZWFzb25zIHRvIGtlZXAgZGVwcmVj
YXRlZCBmdW5jdGlvbmFsaXR5IGFyb3VuZC4KIAotVG8gY29tbXVuaWNhdGUgY2hhbmdlcyB3ZSBh
cmUgYWxyZWFkeSBpc3N1aW5nIGRlcHJlY2F0aW9uIHdhcm5pbmdzLCBidXQgdGhleSBhcmUgbm90
IGRpc3BsYXllZCBieSBkZWZhdWx0LiBJbiBweXRlc3QgMy4wIHdlIGNoYW5nZWQgdGhlIGRlZmF1
bHQgc2V0dGluZyBzbyB0aGF0IHB5dGVzdCBkZXByZWNhdGlvbiB3YXJuaW5ncyBhcmUgZGlzcGxh
eWVkIGlmIG5vdCBleHBsaWNpdGx5IHNpbGVuY2VkICh3aXRoIGBgLS1kaXNhYmxlLXB5dGVzdC13
YXJuaW5nc2BgKS4KK1RvIGNvbW11bmljYXRlIGNoYW5nZXMgd2UgaXNzdWUgZGVwcmVjYXRpb24g
d2FybmluZ3MgdXNpbmcgYSBjdXN0b20gd2FybmluZyBoaWVyYXJjaHkgKHNlZSA6cmVmOmBpbnRl
cm5hbC13YXJuaW5nc2ApLiBUaGVzZSB3YXJuaW5ncyBtYXkgYmUgc3VwcHJlc3NlZCB1c2luZyB0
aGUgc3RhbmRhcmQgbWVhbnM6IGBgLVdgYCBjb21tYW5kLWxpbmUgZmxhZyBvciBgYGZpbHRlcndh
cm5pbmdzYGAgaW5pIG9wdGlvbnMgKHNlZSA6cmVmOmB3YXJuaW5nc2ApLCBidXQgd2Ugc3VnZ2Vz
dCB0byB1c2UgdGhlc2Ugc3BhcmluZ2x5IGFuZCB0ZW1wb3JhcmlseSwgYW5kIGhlZWQgdGhlIHdh
cm5pbmdzIHdoZW4gcG9zc2libGUuCiAKLVdlIHdpbGwgb25seSByZW1vdmUgZGVwcmVjYXRlZCBm
dW5jdGlvbmFsaXR5IGluIG1ham9yIHJlbGVhc2VzIChlLmcuIGlmIHdlIGRlcHJlY2F0ZSBzb21l
dGhpbmcgaW4gMy4wIHdlIHdpbGwgcmVtb3ZlIGl0IGluIDQuMCksIGFuZCBrZWVwIGl0IGFyb3Vu
ZCBmb3IgYXQgbGVhc3QgdHdvIG1pbm9yIHJlbGVhc2VzIChlLmcuIGlmIHdlIGRlcHJlY2F0ZSBz
b21ldGhpbmcgaW4gMy45IGFuZCA0LjAgaXMgdGhlIG5leHQgcmVsZWFzZSwgd2Ugd2lsbCBub3Qg
cmVtb3ZlIGl0IGluIDQuMCBidXQgaW4gNS4wKS4KK1dlIHdpbGwgb25seSBzdGFydCB0aGUgcmVt
b3ZhbCBvZiBkZXByZWNhdGVkIGZ1bmN0aW9uYWxpdHkgaW4gbWFqb3IgcmVsZWFzZXMgKGUuZy4g
aWYgd2UgZGVwcmVjYXRlIHNvbWV0aGluZyBpbiAzLjAgd2Ugd2lsbCBzdGFydCB0byByZW1vdmUg
aXQgaW4gNC4wKSwgYW5kIGtlZXAgaXQgYXJvdW5kIGZvciBhdCBsZWFzdCB0d28gbWlub3IgcmVs
ZWFzZXMgKGUuZy4gaWYgd2UgZGVwcmVjYXRlIHNvbWV0aGluZyBpbiAzLjkgYW5kIDQuMCBpcyB0
aGUgbmV4dCByZWxlYXNlLCB3ZSBzdGFydCB0byByZW1vdmUgaXQgaW4gNS4wLCBub3QgaW4gNC4w
KS4KKworV2hlbiB0aGUgZGVwcmVjYXRpb24gZXhwaXJlcyAoZS5nLiA0LjAgaXMgcmVsZWFzZWQp
LCB3ZSB3b24ndCByZW1vdmUgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb25hbGl0eSBpbW1lZGlhdGVs
eSwgYnV0IHdpbGwgdXNlIHRoZSBzdGFuZGFyZCB3YXJuaW5nIGZpbHRlcnMgdG8gdHVybiB0aGVt
IGludG8gKiplcnJvcnMqKiBieSBkZWZhdWx0LiBUaGlzIGFwcHJvYWNoIG1ha2VzIGl0IGV4cGxp
Y2l0IHRoYXQgcmVtb3ZhbCBpcyBpbW1pbmVudCwgYW5kIHN0aWxsIGdpdmVzIHlvdSB0aW1lIHRv
IHR1cm4gdGhlIGRlcHJlY2F0ZWQgZmVhdHVyZSBpbnRvIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFu
IGVycm9yIHNvIGl0IGNhbiBiZSBkZWFsdCB3aXRoIGluIHlvdXIgb3duIHRpbWUuIEluIHRoZSBu
ZXh0IG1pbm9yIHJlbGVhc2UgKGUuZy4gNC4xKSwgdGhlIGZlYXR1cmUgd2lsbCBiZSBlZmZlY3Rp
dmVseSByZW1vdmVkLgogCiAKIERlcHJlY2F0aW9uIFJvYWRtYXAKIC0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotV2UgdHJhY2sgZGVwcmVjYXRpb24gYW5kIHJlbW92YWwgb2YgZmVhdHVyZXMgdXNpbmcg
bWlsZXN0b25lcyBhbmQgdGhlIGBkZXByZWNhdGlvbiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcz9xPWxhYmVsJTNBJTIydHlwZSUzQStkZXByZWNhdGlvbiUyMj5g
XyBhbmQgYHJlbW92YWwgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9sYWJl
bHMvdHlwZSUzQSUyMHJlbW92YWw+YF8gbGFiZWxzIG9uIEdpdEh1Yi4KK0ZlYXR1cmVzIGN1cnJl
bnRseSBkZXByZWNhdGVkIGFuZCByZW1vdmVkIGluIHByZXZpb3VzIHJlbGVhc2VzIGNhbiBiZSBm
b3VuZCBpbiA6cmVmOmBkZXByZWNhdGlvbnNgLgorCitXZSB0cmFjayBmdXR1cmUgZGVwcmVjYXRp
b24gYW5kIHJlbW92YWwgb2YgZmVhdHVyZXMgdXNpbmcgbWlsZXN0b25lcyBhbmQgdGhlIGBkZXBy
ZWNhdGlvbiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcz9xPWxh
YmVsJTNBJTIydHlwZSUzQStkZXByZWNhdGlvbiUyMj5gXyBhbmQgYHJlbW92YWwgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9sYWJlbHMvdHlwZSUzQSUyMHJlbW92YWw+YF8g
bGFiZWxzIG9uIEdpdEh1Yi4KKwogCi1Gb2xsb3dpbmcgb3VyIGRlcHJlY2F0aW9uIHBvbGljeSwg
YWZ0ZXIgc3RhcnRpbmcgaXNzdWluZyBkZXByZWNhdGlvbiB3YXJuaW5ncyB3ZSBrZWVwIGZlYXR1
cmVzIGZvciAqYXQgbGVhc3QqIHR3byBtaW5vciB2ZXJzaW9ucyBiZWZvcmUgY29uc2lkZXJpbmcg
cmVtb3ZhbC4KKy4uIF9gIzg5NWA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvODk1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYmFzaC1jb21wbGV0
aW9uLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9iYXNoLWNvbXBsZXRpb24ucnN0CmluZGV4IDA4
ZDk3ODIwOTBjYS4uZWFhMDc4ODE0MTRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
YmFzaC1jb21wbGV0aW9uLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYmFzaC1jb21wbGV0
aW9uLnJzdApAQCAtOCwxOCArOCwyNiBAQCBXaGVuIHVzaW5nIGJhc2ggYXMgeW91ciBzaGVsbCwg
YGBweXRlc3RgYCBjYW4gdXNlIGFyZ2NvbXBsZXRlCiAoaHR0cHM6Ly9hcmdjb21wbGV0ZS5yZWFk
dGhlZG9jcy5pby8pIGZvciBhdXRvLWNvbXBsZXRpb24uCiBGb3IgdGhpcyBgYGFyZ2NvbXBsZXRl
YGAgbmVlZHMgdG8gYmUgaW5zdGFsbGVkICoqYW5kKiogZW5hYmxlZC4KIAotSW5zdGFsbCBhcmdj
b21wbGV0ZSB1c2luZzo6CitJbnN0YWxsIGFyZ2NvbXBsZXRlIHVzaW5nOgogCi0gICAgICAgIHN1
ZG8gcGlwIGluc3RhbGwgJ2FyZ2NvbXBsZXRlPj0wLjUuNycKKy4uIGNvZGUtYmxvY2s6OiBiYXNo
CiAKLUZvciBnbG9iYWwgYWN0aXZhdGlvbiBvZiBhbGwgYXJnY29tcGxldGUgZW5hYmxlZCBweXRo
b24gYXBwbGljYXRpb25zIHJ1bjo6CisgICAgc3VkbyBwaXAgaW5zdGFsbCAnYXJnY29tcGxldGU+
PTAuNS43JworCitGb3IgZ2xvYmFsIGFjdGl2YXRpb24gb2YgYWxsIGFyZ2NvbXBsZXRlIGVuYWJs
ZWQgcHl0aG9uIGFwcGxpY2F0aW9ucyBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAg
ICBzdWRvIGFjdGl2YXRlLWdsb2JhbC1weXRob24tYXJnY29tcGxldGUKIAotRm9yIHBlcm1hbmVu
dCAoYnV0IG5vdCBnbG9iYWwpIGBgcHl0ZXN0YGAgYWN0aXZhdGlvbiwgdXNlOjoKK0ZvciBwZXJt
YW5lbnQgKGJ1dCBub3QgZ2xvYmFsKSBgYHB5dGVzdGBgIGFjdGl2YXRpb24sIHVzZToKKworLi4g
Y29kZS1ibG9jazo6IGJhc2gKKworICAgIHJlZ2lzdGVyLXB5dGhvbi1hcmdjb21wbGV0ZSBweXRl
c3QgPj4gfi8uYmFzaHJjCiAKLSAgICAgICAgcmVnaXN0ZXItcHl0aG9uLWFyZ2NvbXBsZXRlIHB5
dGVzdCA+PiB+Ly5iYXNocmMKK0ZvciBvbmUtdGltZSBhY3RpdmF0aW9uIG9mIGFyZ2NvbXBsZXRl
IGZvciBgYHB5dGVzdGBgIG9ubHksIHVzZToKIAotRm9yIG9uZS10aW1lIGFjdGl2YXRpb24gb2Yg
YXJnY29tcGxldGUgZm9yIGBgcHl0ZXN0YGAgb25seSwgdXNlOjoKKy4uIGNvZGUtYmxvY2s6OiBi
YXNoCiAKLSAgICAgICAgZXZhbCAiJChyZWdpc3Rlci1weXRob24tYXJnY29tcGxldGUgcHl0ZXN0
KSIKKyAgICBldmFsICIkKHJlZ2lzdGVyLXB5dGhvbi1hcmdjb21wbGV0ZSBweXRlc3QpIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2J1aWx0aW4ucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2J1aWx0aW4ucnN0CmluZGV4IGMyZDIzNDY5YmM4NC4uMGZkNTgxNjRjNzYxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYnVpbHRpbi5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2J1aWx0aW4ucnN0CkBAIC0xMiw3ICsxMiw5IEBAIEZvciBpbmZvcm1hdGlvbiBvbiBwbHVn
aW4gaG9va3MgYW5kIG9iamVjdHMsIHNlZSA6cmVmOmBwbHVnaW5zYC4KIAogRm9yIGluZm9ybWF0
aW9uIG9uIHRoZSBgYHB5dGVzdC5tYXJrYGAgbWVjaGFuaXNtLCBzZWUgOnJlZjpgbWFya2AuCiAK
LUZvciBpbmZvcm1hdGlvbiBhYm91dCBmaXh0dXJlcywgc2VlIDpyZWY6YGZpeHR1cmVzYC4gVG8g
c2VlIGEgY29tcGxldGUgbGlzdCBvZiBhdmFpbGFibGUgZml4dHVyZXMgKGFkZCBgYC12YGAgdG8g
YWxzbyBzZWUgZml4dHVyZXMgd2l0aCBsZWFkaW5nIGBgX2BgKSwgdHlwZSA6OgorRm9yIGluZm9y
bWF0aW9uIGFib3V0IGZpeHR1cmVzLCBzZWUgOnJlZjpgZml4dHVyZXNgLiBUbyBzZWUgYSBjb21w
bGV0ZSBsaXN0IG9mIGF2YWlsYWJsZSBmaXh0dXJlcyAoYWRkIGBgLXZgYCB0byBhbHNvIHNlZSBm
aXh0dXJlcyB3aXRoIGxlYWRpbmcgYGBfYGApLCB0eXBlIDoKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgLXEgLS1maXh0dXJlcwogICAgIGNhY2hlCkBAIC0yMSwxMDIg
KzIzLDE2MyBAQCBGb3IgaW5mb3JtYXRpb24gYWJvdXQgZml4dHVyZXMsIHNlZSA6cmVmOmBmaXh0
dXJlc2AuIFRvIHNlZSBhIGNvbXBsZXRlIGxpc3Qgb2YgYQogICAgICAgICBjYWNoZS5nZXQoa2V5
LCBkZWZhdWx0KQogICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSkKIAotICAgICAgICBLZXlz
IG11c3QgYmUgYSBgYC9gYCBzZXBhcmF0ZWQgdmFsdWUsIHdoZXJlIHRoZSBmaXJzdCBwYXJ0IGlz
IHVzdWFsbHkgdGhlCisgICAgICAgIEtleXMgbXVzdCBiZSBgYC9gYCBzZXBhcmF0ZWQgc3RyaW5n
cywgd2hlcmUgdGhlIGZpcnN0IHBhcnQgaXMgdXN1YWxseSB0aGUKICAgICAgICAgbmFtZSBvZiB5
b3VyIHBsdWdpbiBvciBhcHBsaWNhdGlvbiB0byBhdm9pZCBjbGFzaGVzIHdpdGggb3RoZXIgY2Fj
aGUgdXNlcnMuCiAKICAgICAgICAgVmFsdWVzIGNhbiBiZSBhbnkgb2JqZWN0IGhhbmRsZWQgYnkg
dGhlIGpzb24gc3RkbGliIG1vZHVsZS4KKwogICAgIGNhcHN5cwotICAgICAgICBFbmFibGUgY2Fw
dHVyaW5nIG9mIHdyaXRlcyB0byBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgYW5k
IG1ha2UKLSAgICAgICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVh
ZG91dGVycigpYGAgbWV0aG9kIGNhbGxzCi0gICAgICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwg
ZXJyKWBgIG5hbWVkdHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGB0ZXh0YGAK
LSAgICAgICAgb2JqZWN0cy4KKyAgICAgICAgRW5hYmxlIHRleHQgY2FwdHVyaW5nIG9mIHdyaXRl
cyB0byBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAuCisKKyAgICAgICAgVGhlIGNh
cHR1cmVkIG91dHB1dCBpcyBtYWRlIGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVhZG91dGVycigp
YGAgbWV0aG9kCisgICAgICAgIGNhbGxzLCB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCBu
YW1lZHR1cGxlLgorICAgICAgICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGB0ZXh0YGAg
b2JqZWN0cy4KKwogICAgIGNhcHN5c2JpbmFyeQotICAgICAgICBFbmFibGUgY2FwdHVyaW5nIG9m
IHdyaXRlcyB0byBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgYW5kIG1ha2UKLSAg
ICAgICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVhZG91dGVycigp
YGAgbWV0aG9kIGNhbGxzCi0gICAgICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIHR1
cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgYnl0ZXNgYAotICAgICAgICBvYmpl
Y3RzLgorICAgICAgICBFbmFibGUgYnl0ZXMgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBgYHN5cy5z
dGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAuCisKKyAgICAgICAgVGhlIGNhcHR1cmVkIG91dHB1
dCBpcyBtYWRlIGF2YWlsYWJsZSB2aWEgYGBjYXBzeXNiaW5hcnkucmVhZG91dGVycigpYGAKKyAg
ICAgICAgbWV0aG9kIGNhbGxzLCB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCBuYW1lZHR1
cGxlLgorICAgICAgICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGBieXRlc2BgIG9iamVj
dHMuCisKICAgICBjYXBmZAotICAgICAgICBFbmFibGUgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBm
aWxlIGRlc2NyaXB0b3JzIGBgMWBgIGFuZCBgYDJgYCBhbmQgbWFrZQotICAgICAgICBjYXB0dXJl
ZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcGZkLnJlYWRvdXRlcnIoKWBgIG1ldGhvZCBjYWxs
cwotICAgICAgICB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0YGAg
YW5kIGBgZXJyYGAgd2lsbCBiZSBgYHRleHRgYAotICAgICAgICBvYmplY3RzLgorICAgICAgICBF
bmFibGUgdGV4dCBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRvIGZpbGUgZGVzY3JpcHRvcnMgYGAxYGAg
YW5kIGBgMmBgLgorCisgICAgICAgIFRoZSBjYXB0dXJlZCBvdXRwdXQgaXMgbWFkZSBhdmFpbGFi
bGUgdmlhIGBgY2FwZmQucmVhZG91dGVycigpYGAgbWV0aG9kCisgICAgICAgIGNhbGxzLCB3aGlj
aCByZXR1cm4gYSBgYChvdXQsIGVycilgYCBuYW1lZHR1cGxlLgorICAgICAgICBgYG91dGBgIGFu
ZCBgYGVycmBgIHdpbGwgYmUgYGB0ZXh0YGAgb2JqZWN0cy4KKwogICAgIGNhcGZkYmluYXJ5Ci0g
ICAgICAgIEVuYWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGUgdG8gZmlsZSBkZXNjcmlwdG9ycyAxIGFu
ZCAyIGFuZCBtYWtlCi0gICAgICAgIGNhcHR1cmVkIG91dHB1dCBhdmFpbGFibGUgdmlhIGBgY2Fw
ZmRiaW5hcnkucmVhZG91dGVycmBgIG1ldGhvZCBjYWxscwotICAgICAgICB3aGljaCByZXR1cm4g
YSBgYChvdXQsIGVycilgYCB0dXBsZS4gIGBgb3V0YGAgYW5kIGBgZXJyYGAgd2lsbCBiZQotICAg
ICAgICBgYGJ5dGVzYGAgb2JqZWN0cy4KLSAgICBkb2N0ZXN0X25hbWVzcGFjZQotICAgICAgICBG
aXh0dXJlIHRoYXQgcmV0dXJucyBhIDpweTpjbGFzczpgZGljdGAgdGhhdCB3aWxsIGJlIGluamVj
dGVkIGludG8gdGhlIG5hbWVzcGFjZSBvZiBkb2N0ZXN0cy4KLSAgICBweXRlc3Rjb25maWcKKyAg
ICAgICAgRW5hYmxlIGJ5dGVzIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gZmlsZSBkZXNjcmlwdG9y
cyBgYDFgYCBhbmQgYGAyYGAuCisKKyAgICAgICAgVGhlIGNhcHR1cmVkIG91dHB1dCBpcyBtYWRl
IGF2YWlsYWJsZSB2aWEgYGBjYXBmZC5yZWFkb3V0ZXJyKClgYCBtZXRob2QKKyAgICAgICAgY2Fs
bHMsIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIG5hbWVkdHVwbGUuCisgICAgICAgIGBg
b3V0YGAgYW5kIGBgZXJyYGAgd2lsbCBiZSBgYGJ5dGVgYCBvYmplY3RzLgorCisgICAgZG9jdGVz
dF9uYW1lc3BhY2UgW3Nlc3Npb24gc2NvcGVdCisgICAgICAgIEZpeHR1cmUgdGhhdCByZXR1cm5z
IGEgOnB5OmNsYXNzOmBkaWN0YCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUKKyAgICAg
ICAgbmFtZXNwYWNlIG9mIGRvY3Rlc3RzLgorCisgICAgcHl0ZXN0Y29uZmlnIFtzZXNzaW9uIHNj
b3BlXQogICAgICAgICBTZXNzaW9uLXNjb3BlZCBmaXh0dXJlIHRoYXQgcmV0dXJucyB0aGUgOmNs
YXNzOmBfcHl0ZXN0LmNvbmZpZy5Db25maWdgIG9iamVjdC4KIAogICAgICAgICBFeGFtcGxlOjoK
IAogICAgICAgICAgICAgZGVmIHRlc3RfZm9vKHB5dGVzdGNvbmZpZyk6Ci0gICAgICAgICAgICAg
ICAgaWYgcHl0ZXN0Y29uZmlnLmdldG9wdGlvbigidmVyYm9zZSIpOgorICAgICAgICAgICAgICAg
IGlmIHB5dGVzdGNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+IDA6CiAgICAgICAgICAgICAg
ICAgICAgIC4uLgorCiAgICAgcmVjb3JkX3Byb3BlcnR5Ci0gICAgICAgIEFkZCBhbiBleHRyYSBw
cm9wZXJ0aWVzIHRoZSBjYWxsaW5nIHRlc3QuCisgICAgICAgIEFkZCBleHRyYSBwcm9wZXJ0aWVz
IHRvIHRoZSBjYWxsaW5nIHRlc3QuCisKICAgICAgICAgVXNlciBwcm9wZXJ0aWVzIGJlY29tZSBw
YXJ0IG9mIHRoZSB0ZXN0IHJlcG9ydCBhbmQgYXJlIGF2YWlsYWJsZSB0byB0aGUKICAgICAgICAg
Y29uZmlndXJlZCByZXBvcnRlcnMsIGxpa2UgSlVuaXQgWE1MLgotICAgICAgICBUaGUgZml4dHVy
ZSBpcyBjYWxsYWJsZSB3aXRoIGBgKG5hbWUsIHZhbHVlKWBgLCB3aXRoIHZhbHVlIGJlaW5nIGF1
dG9tYXRpY2FsbHkKLSAgICAgICAgeG1sLWVuY29kZWQuCisKKyAgICAgICAgVGhlIGZpeHR1cmUg
aXMgY2FsbGFibGUgd2l0aCBgYG5hbWUsIHZhbHVlYGAuIFRoZSB2YWx1ZSBpcyBhdXRvbWF0aWNh
bGx5CisgICAgICAgIFhNTC1lbmNvZGVkLgogCiAgICAgICAgIEV4YW1wbGU6OgogCiAgICAgICAg
ICAgICBkZWYgdGVzdF9mdW5jdGlvbihyZWNvcmRfcHJvcGVydHkpOgogICAgICAgICAgICAgICAg
IHJlY29yZF9wcm9wZXJ0eSgiZXhhbXBsZV9rZXkiLCAxKQotICAgIHJlY29yZF94bWxfcHJvcGVy
dHkKLSAgICAgICAgKERlcHJlY2F0ZWQpIHVzZSByZWNvcmRfcHJvcGVydHkuCisKICAgICByZWNv
cmRfeG1sX2F0dHJpYnV0ZQogICAgICAgICBBZGQgZXh0cmEgeG1sIGF0dHJpYnV0ZXMgdG8gdGhl
IHRhZyBmb3IgdGhlIGNhbGxpbmcgdGVzdC4KLSAgICAgICAgVGhlIGZpeHR1cmUgaXMgY2FsbGFi
bGUgd2l0aCBgYChuYW1lLCB2YWx1ZSlgYCwgd2l0aCB2YWx1ZSBiZWluZwotICAgICAgICBhdXRv
bWF0aWNhbGx5IHhtbC1lbmNvZGVkCisKKyAgICAgICAgVGhlIGZpeHR1cmUgaXMgY2FsbGFibGUg
d2l0aCBgYG5hbWUsIHZhbHVlYGAuIFRoZSB2YWx1ZSBpcworICAgICAgICBhdXRvbWF0aWNhbGx5
IFhNTC1lbmNvZGVkLgorCisgICAgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSBbc2Vzc2lvbiBz
Y29wZV0KKyAgICAgICAgUmVjb3JkIGEgbmV3IGBgPHByb3BlcnR5PmBgIHRhZyBhcyBjaGlsZCBv
ZiB0aGUgcm9vdCBgYDx0ZXN0c3VpdGU+YGAuCisKKyAgICAgICAgVGhpcyBpcyBzdWl0YWJsZSB0
byB3cml0aW5nIGdsb2JhbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIGVudGlyZSB0ZXN0Cisg
ICAgICAgIHN1aXRlLCBhbmQgaXMgY29tcGF0aWJsZSB3aXRoIGBgeHVuaXQyYGAgSlVuaXQgZmFt
aWx5LgorCisgICAgICAgIFRoaXMgaXMgYSBgYHNlc3Npb25gYC1zY29wZWQgZml4dHVyZSB3aGlj
aCBpcyBjYWxsZWQgd2l0aCBgYChuYW1lLCB2YWx1ZSlgYC4gRXhhbXBsZToKKworICAgICAgICAu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbyhyZWNvcmRf
dGVzdHN1aXRlX3Byb3BlcnR5KToKKyAgICAgICAgICAgICAgICByZWNvcmRfdGVzdHN1aXRlX3By
b3BlcnR5KCJBUkNIIiwgIlBQQyIpCisgICAgICAgICAgICAgICAgcmVjb3JkX3Rlc3RzdWl0ZV9w
cm9wZXJ0eSgiU1RPUkFHRV9UWVBFIiwgIkNFUEgiKQorCisgICAgICAgIGBgbmFtZWBgIG11c3Qg
YmUgYSBzdHJpbmcsIGBgdmFsdWVgYCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyBhbmQg
cHJvcGVybHkgeG1sLWVzY2FwZWQuCisKKyAgICAgICAgLi4gd2FybmluZzo6CisKKyAgICAgICAg
ICAgIEN1cnJlbnRseSB0aGlzIGZpeHR1cmUgKipkb2VzIG5vdCB3b3JrKiogd2l0aCB0aGUKKyAg
ICAgICAgICAgIGBweXRlc3QteGRpc3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC14ZGlzdD5gX18gcGx1Z2luLiBTZWUgaXNzdWUKKyAgICAgICAgICAgIGAjNzc2NyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NzY3PmBfXyBmb3IgZGV0
YWlscy4KKwogICAgIGNhcGxvZwogICAgICAgICBBY2Nlc3MgYW5kIGNvbnRyb2wgbG9nIGNhcHR1
cmluZy4KIAotICAgICAgICBDYXB0dXJlZCBsb2dzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUg
Zm9sbG93aW5nIG1ldGhvZHM6OgorICAgICAgICBDYXB0dXJlZCBsb2dzIGFyZSBhdmFpbGFibGUg
dGhyb3VnaCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMvbWV0aG9kczo6CiAKKyAgICAgICAgKiBj
YXBsb2cubWVzc2FnZXMgICAgICAgIC0+IGxpc3Qgb2YgZm9ybWF0LWludGVycG9sYXRlZCBsb2cg
bWVzc2FnZXMKICAgICAgICAgKiBjYXBsb2cudGV4dCAgICAgICAgICAgIC0+IHN0cmluZyBjb250
YWluaW5nIGZvcm1hdHRlZCBsb2cgb3V0cHV0CiAgICAgICAgICogY2FwbG9nLnJlY29yZHMgICAg
ICAgICAtPiBsaXN0IG9mIGxvZ2dpbmcuTG9nUmVjb3JkIGluc3RhbmNlcwogICAgICAgICAqIGNh
cGxvZy5yZWNvcmRfdHVwbGVzICAgLT4gbGlzdCBvZiAobG9nZ2VyX25hbWUsIGxldmVsLCBtZXNz
YWdlKSB0dXBsZXMKICAgICAgICAgKiBjYXBsb2cuY2xlYXIoKSAgICAgICAgIC0+IGNsZWFyIGNh
cHR1cmVkIHJlY29yZHMgYW5kIGZvcm1hdHRlZCBsb2cgb3V0cHV0IHN0cmluZworCiAgICAgbW9u
a2V5cGF0Y2gKLSAgICAgICAgVGhlIHJldHVybmVkIGBgbW9ua2V5cGF0Y2hgYCBmaXh0dXJlIHBy
b3ZpZGVzIHRoZXNlCi0gICAgICAgIGhlbHBlciBtZXRob2RzIHRvIG1vZGlmeSBvYmplY3RzLCBk
aWN0aW9uYXJpZXMgb3Igb3MuZW52aXJvbjo6CisgICAgICAgIEEgY29udmVuaWVudCBmaXh0dXJl
IGZvciBtb25rZXktcGF0Y2hpbmcuCisKKyAgICAgICAgVGhlIGZpeHR1cmUgcHJvdmlkZXMgdGhl
c2UgbWV0aG9kcyB0byBtb2RpZnkgb2JqZWN0cywgZGljdGlvbmFyaWVzIG9yCisgICAgICAgIG9z
LmVudmlyb246OgogCiAgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9iaiwgbmFtZSwg
dmFsdWUsIHJhaXNpbmc9VHJ1ZSkKICAgICAgICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIob2Jq
LCBuYW1lLCByYWlzaW5nPVRydWUpCiAgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKG1h
cHBpbmcsIG5hbWUsIHZhbHVlKQogICAgICAgICAgICAgbW9ua2V5cGF0Y2guZGVsaXRlbShvYmos
IG5hbWUsIHJhaXNpbmc9VHJ1ZSkKICAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudihuYW1l
LCB2YWx1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICAgICAgICAgIG1vbmtleXBhdGNoLmRlbGVudihu
YW1lLCB2YWx1ZSwgcmFpc2luZz1UcnVlKQorICAgICAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52
KG5hbWUsIHJhaXNpbmc9VHJ1ZSkKICAgICAgICAgICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJl
cGVuZChwYXRoKQogICAgICAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIocGF0aCkKIAotICAgICAg
ICBBbGwgbW9kaWZpY2F0aW9ucyB3aWxsIGJlIHVuZG9uZSBhZnRlciB0aGUgcmVxdWVzdGluZwot
ICAgICAgICB0ZXN0IGZ1bmN0aW9uIG9yIGZpeHR1cmUgaGFzIGZpbmlzaGVkLiBUaGUgYGByYWlz
aW5nYGAKLSAgICAgICAgcGFyYW1ldGVyIGRldGVybWluZXMgaWYgYSBLZXlFcnJvciBvciBBdHRy
aWJ1dGVFcnJvcgotICAgICAgICB3aWxsIGJlIHJhaXNlZCBpZiB0aGUgc2V0L2RlbGV0aW9uIG9w
ZXJhdGlvbiBoYXMgbm8gdGFyZ2V0LgorICAgICAgICBBbGwgbW9kaWZpY2F0aW9ucyB3aWxsIGJl
IHVuZG9uZSBhZnRlciB0aGUgcmVxdWVzdGluZyB0ZXN0IGZ1bmN0aW9uIG9yCisgICAgICAgIGZp
eHR1cmUgaGFzIGZpbmlzaGVkLiBUaGUgYGByYWlzaW5nYGAgcGFyYW1ldGVyIGRldGVybWluZXMg
aWYgYSBLZXlFcnJvcgorICAgICAgICBvciBBdHRyaWJ1dGVFcnJvciB3aWxsIGJlIHJhaXNlZCBp
ZiB0aGUgc2V0L2RlbGV0aW9uIG9wZXJhdGlvbiBoYXMgbm8gdGFyZ2V0LgorCiAgICAgcmVjd2Fy
bgogICAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YFdhcm5pbmdzUmVjb3JkZXJgIGluc3RhbmNlIHRo
YXQgcmVjb3JkcyBhbGwgd2FybmluZ3MgZW1pdHRlZCBieSB0ZXN0IGZ1bmN0aW9ucy4KIAogICAg
ICAgICBTZWUgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3dhcm5pbmdzLmh0bWwgZm9y
IGluZm9ybWF0aW9uCiAgICAgICAgIG9uIHdhcm5pbmcgY2F0ZWdvcmllcy4KLSAgICB0bXBkaXJf
ZmFjdG9yeQotICAgICAgICBSZXR1cm4gYSBUZW1wZGlyRmFjdG9yeSBpbnN0YW5jZSBmb3IgdGhl
IHRlc3Qgc2Vzc2lvbi4KKworICAgIHRtcGRpcl9mYWN0b3J5IFtzZXNzaW9uIHNjb3BlXQorICAg
ICAgICBSZXR1cm4gYSA6Y2xhc3M6YF9weXRlc3QudG1wZGlyLlRlbXBkaXJGYWN0b3J5YCBpbnN0
YW5jZSBmb3IgdGhlIHRlc3Qgc2Vzc2lvbi4KKworICAgIHRtcF9wYXRoX2ZhY3RvcnkgW3Nlc3Np
b24gc2NvcGVdCisgICAgICAgIFJldHVybiBhIDpjbGFzczpgX3B5dGVzdC50bXBkaXIuVGVtcFBh
dGhGYWN0b3J5YCBpbnN0YW5jZSBmb3IgdGhlIHRlc3Qgc2Vzc2lvbi4KKwogICAgIHRtcGRpcgot
ICAgICAgICBSZXR1cm4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGggb2JqZWN0Ci0gICAgICAg
IHdoaWNoIGlzIHVuaXF1ZSB0byBlYWNoIHRlc3QgZnVuY3Rpb24gaW52b2NhdGlvbiwKLSAgICAg
ICAgY3JlYXRlZCBhcyBhIHN1YiBkaXJlY3Rvcnkgb2YgdGhlIGJhc2UgdGVtcG9yYXJ5Ci0gICAg
ICAgIGRpcmVjdG9yeS4gIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgYSBgcHkucGF0aC5sb2NhbGBf
Ci0gICAgICAgIHBhdGggb2JqZWN0LgorICAgICAgICBSZXR1cm4gYSB0ZW1wb3JhcnkgZGlyZWN0
b3J5IHBhdGggb2JqZWN0IHdoaWNoIGlzIHVuaXF1ZSB0byBlYWNoIHRlc3QKKyAgICAgICAgZnVu
Y3Rpb24gaW52b2NhdGlvbiwgY3JlYXRlZCBhcyBhIHN1YiBkaXJlY3Rvcnkgb2YgdGhlIGJhc2Ug
dGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmV0dXJuZWQgb2Jq
ZWN0IGlzIGEgYHB5LnBhdGgubG9jYWxgXyBwYXRoIG9iamVjdC4KIAogICAgICAgICAuLiBfYHB5
LnBhdGgubG9jYWxgOiBodHRwczovL3B5LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9wYXRoLmh0
bWwKIAotICAgIG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNlY29uZHMKKyAgICB0bXBfcGF0aAorICAg
ICAgICBSZXR1cm4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGggb2JqZWN0IHdoaWNoIGlzIHVu
aXF1ZSB0byBlYWNoIHRlc3QKKyAgICAgICAgZnVuY3Rpb24gaW52b2NhdGlvbiwgY3JlYXRlZCBh
cyBhIHN1YiBkaXJlY3Rvcnkgb2YgdGhlIGJhc2UgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9y
eS4KKworICAgICAgICBUaGUgcmV0dXJuZWQgb2JqZWN0IGlzIGEgOmNsYXNzOmBwYXRobGliLlBh
dGhgIG9iamVjdC4KKworICAgICAgICAuLiBub3RlOjoKKworICAgICAgICAgICAgSW4gcHl0aG9u
IDwgMy42IHRoaXMgaXMgYSBwYXRobGliMi5QYXRoLgogCi1Zb3UgY2FuIGFsc28gaW50ZXJhY3Rp
dmVseSBhc2sgZm9yIGhlbHAsIGUuZy4gYnkgdHlwaW5nIG9uIHRoZSBQeXRob24gaW50ZXJhY3Rp
dmUgcHJvbXB0IHNvbWV0aGluZyBsaWtlOjoKKworICAgIG5vIHRlc3RzIHJhbiBpbiAwLjEycwor
CitZb3UgY2FuIGFsc28gaW50ZXJhY3RpdmVseSBhc2sgZm9yIGhlbHAsIGUuZy4gYnkgdHlwaW5n
IG9uIHRoZSBQeXRob24gaW50ZXJhY3RpdmUgcHJvbXB0IHNvbWV0aGluZyBsaWtlOgorCisuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBpbXBvcnQgcHl0ZXN0CisKICAgICBoZWxwKHB5dGVz
dCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYWNoZS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vY2FjaGUucnN0CmluZGV4IDM3YmNmNzA3MGQ0Mi4uNDJjYTQ3MzU0NWRhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY2FjaGUucnN0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9jYWNoZS5yc3QKQEAgLTUsNyArNSw3IEBACiBDYWNoZTogd29ya2luZyB3aXRoIGNyb3Nz
LXRlc3RydW4gc3RhdGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog
Ci0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjgKKwogCiBVc2FnZQogLS0tLS0tLS0tCkBAIC0zMywxNyAr
MzMsMjIgQEAgT3RoZXIgcGx1Z2lucyBtYXkgYWNjZXNzIHRoZSBgY29uZmlnLmNhY2hlYF8gb2Jq
ZWN0IHRvIHNldC9nZXQKIFJlcnVubmluZyBvbmx5IGZhaWx1cmVzIG9yIGZhaWx1cmVzIGZpcnN0
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1GaXJz
dCwgbGV0J3MgY3JlYXRlIDUwIHRlc3QgaW52b2NhdGlvbiBvZiB3aGljaCBvbmx5IDIgZmFpbDo6
CitGaXJzdCwgbGV0J3MgY3JlYXRlIDUwIHRlc3QgaW52b2NhdGlvbiBvZiB3aGljaCBvbmx5IDIg
ZmFpbDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3Rf
NTAucHkKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgiaSIsIHJhbmdlKDUwKSkKICAgICBkZWYgdGVzdF9udW0oaSk6CiAgICAgICAgIGlmIGkgaW4g
KDE3LCAyNSk6Ci0gICAgICAgICAgIHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCisgICAgICAgICAg
ICBweXRlc3QuZmFpbCgiYmFkIGx1Y2siKQorCitJZiB5b3UgcnVuIHRoaXMgZm9yIHRoZSBmaXJz
dCB0aW1lIHlvdSB3aWxsIHNlZSB0d28gZmFpbHVyZXM6CiAKLUlmIHlvdSBydW4gdGhpcyBmb3Ig
dGhlIGZpcnN0IHRpbWUgeW91IHdpbGwgc2VlIHR3byBmYWlsdXJlczo6CisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcQogICAgIC4uLi4uLi4uLi4uLi4uLi4uRi4uLi4u
Li5GLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAt
NTUsMTAgKzYwLDEwIEBAIElmIHlvdSBydW4gdGhpcyBmb3IgdGhlIGZpcnN0IHRpbWUgeW91IHdp
bGwgc2VlIHR3byBmYWlsdXJlczo6CiAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
aSIsIHJhbmdlKDUwKSkKICAgICAgICAgZGVmIHRlc3RfbnVtKGkpOgogICAgICAgICAgICAgaWYg
aSBpbiAoMTcsIDI1KToKLSAgICA+ICAgICAgICAgIHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCi0g
ICAgRSAgICAgICAgICBGYWlsZWQ6IGJhZCBsdWNrCisgICAgPiAgICAgICAgICAgcHl0ZXN0LmZh
aWwoImJhZCBsdWNrIikKKyAgICBFICAgICAgICAgICBGYWlsZWQ6IGJhZCBsdWNrCiAKLSAgICB0
ZXN0XzUwLnB5OjY6IEZhaWxlZAorICAgIHRlc3RfNTAucHk6NzogRmFpbGVkCiAgICAgX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X251bVsyNV0gX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwogCiAgICAgaSA9IDI1CkBAIC02NiwxOSArNzEsMjUgQEAgSWYgeW91IHJ1
biB0aGlzIGZvciB0aGUgZmlyc3QgdGltZSB5b3Ugd2lsbCBzZWUgdHdvIGZhaWx1cmVzOjoKICAg
ICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpIiwgcmFuZ2UoNTApKQogICAgICAgICBk
ZWYgdGVzdF9udW0oaSk6CiAgICAgICAgICAgICBpZiBpIGluICgxNywgMjUpOgotICAgID4gICAg
ICAgICAgcHl0ZXN0LmZhaWwoImJhZCBsdWNrIikKLSAgICBFICAgICAgICAgIEZhaWxlZDogYmFk
IGx1Y2sKKyAgICA+ICAgICAgICAgICBweXRlc3QuZmFpbCgiYmFkIGx1Y2siKQorICAgIEUgICAg
ICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKIAotICAgIHRlc3RfNTAucHk6NjogRmFpbGVkCi0gICAg
MiBmYWlsZWQsIDQ4IHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICB0ZXN0XzUwLnB5Ojc6IEZh
aWxlZAorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGlu
Zm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF81MC5weTo6dGVz
dF9udW1bMTddIC0gRmFpbGVkOiBiYWQgbHVjaworICAgIEZBSUxFRCB0ZXN0XzUwLnB5Ojp0ZXN0
X251bVsyNV0gLSBGYWlsZWQ6IGJhZCBsdWNrCisgICAgMiBmYWlsZWQsIDQ4IHBhc3NlZCBpbiAw
LjEycwogCi1JZiB5b3UgdGhlbiBydW4gaXQgd2l0aCBgYC0tbGZgYDo6CitJZiB5b3UgdGhlbiBy
dW4gaXQgd2l0aCBgYC0tbGZgYDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBw
eXRlc3QgLS1sZgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24g
c3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAt
LSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAg
IHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gICAgY29sbGVjdGVkIDUwIGl0
ZW1zIC8gNDggZGVzZWxlY3RlZAorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwg
cHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRI
T05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisg
ICAgY29sbGVjdGVkIDIgaXRlbXMKICAgICBydW4tbGFzdC1mYWlsdXJlOiByZXJ1biBwcmV2aW91
cyAyIGZhaWx1cmVzCiAKICAgICB0ZXN0XzUwLnB5IEZGICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTkxLDEwICsxMDIsMTAg
QEAgSWYgeW91IHRoZW4gcnVuIGl0IHdpdGggYGAtLWxmYGA6OgogICAgICAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1MCkpCiAgICAgICAgIGRlZiB0ZXN0X251bShpKToK
ICAgICAgICAgICAgIGlmIGkgaW4gKDE3LCAyNSk6Ci0gICAgPiAgICAgICAgICBweXRlc3QuZmFp
bCgiYmFkIGx1Y2siKQotICAgIEUgICAgICAgICAgRmFpbGVkOiBiYWQgbHVjaworICAgID4gICAg
ICAgICAgIHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCisgICAgRSAgICAgICAgICAgRmFpbGVkOiBi
YWQgbHVjawogCi0gICAgdGVzdF81MC5weTo2OiBGYWlsZWQKKyAgICB0ZXN0XzUwLnB5Ojc6IEZh
aWxlZAogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9udW1bMjVdIF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIAogICAgIGkgPSAyNQpAQCAtMTAyLDIzICsx
MTMsMjkgQEAgSWYgeW91IHRoZW4gcnVuIGl0IHdpdGggYGAtLWxmYGA6OgogICAgICAgICBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1MCkpCiAgICAgICAgIGRlZiB0ZXN0X251
bShpKToKICAgICAgICAgICAgIGlmIGkgaW4gKDE3LCAyNSk6Ci0gICAgPiAgICAgICAgICBweXRl
c3QuZmFpbCgiYmFkIGx1Y2siKQotICAgIEUgICAgICAgICAgRmFpbGVkOiBiYWQgbHVjaworICAg
ID4gICAgICAgICAgIHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCisgICAgRSAgICAgICAgICAgRmFp
bGVkOiBiYWQgbHVjawogCi0gICAgdGVzdF81MC5weTo2OiBGYWlsZWQKLSAgICA9PT09PT09PT09
PT09PT09PSAyIGZhaWxlZCwgNDggZGVzZWxlY3RlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09
PT09PT09PT09CisgICAgdGVzdF81MC5weTo3OiBGYWlsZWQKKyAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09
PT09CisgICAgRkFJTEVEIHRlc3RfNTAucHk6OnRlc3RfbnVtWzE3XSAtIEZhaWxlZDogYmFkIGx1
Y2sKKyAgICBGQUlMRUQgdGVzdF81MC5weTo6dGVzdF9udW1bMjVdIC0gRmFpbGVkOiBiYWQgbHVj
aworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQgaW4gMC4xMnMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotWW91IGhhdmUgcnVuIG9ubHkgdGhlIHR3byBm
YWlsaW5nIHRlc3QgZnJvbSB0aGUgbGFzdCBydW4sIHdoaWxlIDQ4IHRlc3RzIGhhdmUKLW5vdCBi
ZWVuIHJ1biAoImRlc2VsZWN0ZWQiKS4KK1lvdSBoYXZlIHJ1biBvbmx5IHRoZSB0d28gZmFpbGlu
ZyB0ZXN0cyBmcm9tIHRoZSBsYXN0IHJ1biwgd2hpbGUgdGhlIDQ4IHBhc3NpbmcKK3Rlc3RzIGhh
dmUgbm90IGJlZW4gcnVuICgiZGVzZWxlY3RlZCIpLgogCiBOb3csIGlmIHlvdSBydW4gd2l0aCB0
aGUgYGAtLWZmYGAgb3B0aW9uLCBhbGwgdGVzdHMgd2lsbCBiZSBydW4gYnV0IHRoZSBmaXJzdAog
cHJldmlvdXMgZmFpbHVyZXMgd2lsbCBiZSBleGVjdXRlZCBmaXJzdCAoYXMgY2FuIGJlIHNlZW4g
ZnJvbSB0aGUgc2VyaWVzCi1vZiBgYEZGYGAgYW5kIGRvdHMpOjoKK29mIGBgRkZgYCBhbmQgZG90
cyk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC0tZmYKICAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBw
eXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5E
T0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwg
cHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRI
T05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAg
ICAgY29sbGVjdGVkIDUwIGl0ZW1zCiAgICAgcnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlv
dXMgMiBmYWlsdXJlcyBmaXJzdAogCkBAIC0xMzIsMTAgKzE0OSwxMCBAQCBvZiBgYEZGYGAgYW5k
IGRvdHMpOjoKICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpIiwgcmFuZ2UoNTAp
KQogICAgICAgICBkZWYgdGVzdF9udW0oaSk6CiAgICAgICAgICAgICBpZiBpIGluICgxNywgMjUp
OgotICAgID4gICAgICAgICAgcHl0ZXN0LmZhaWwoImJhZCBsdWNrIikKLSAgICBFICAgICAgICAg
IEZhaWxlZDogYmFkIGx1Y2sKKyAgICA+ICAgICAgICAgICBweXRlc3QuZmFpbCgiYmFkIGx1Y2si
KQorICAgIEUgICAgICAgICAgIEZhaWxlZDogYmFkIGx1Y2sKIAotICAgIHRlc3RfNTAucHk6Njog
RmFpbGVkCisgICAgdGVzdF81MC5weTo3OiBGYWlsZWQKICAgICBfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fIHRlc3RfbnVtWzI1XSBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CiAKICAgICBpID0gMjUKQEAgLTE0MywxMSArMTYwLDE0IEBAIG9mIGBgRkZgYCBhbmQgZG90cyk6
OgogICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCByYW5nZSg1MCkpCiAgICAg
ICAgIGRlZiB0ZXN0X251bShpKToKICAgICAgICAgICAgIGlmIGkgaW4gKDE3LCAyNSk6Ci0gICAg
PiAgICAgICAgICBweXRlc3QuZmFpbCgiYmFkIGx1Y2siKQotICAgIEUgICAgICAgICAgRmFpbGVk
OiBiYWQgbHVjaworICAgID4gICAgICAgICAgIHB5dGVzdC5mYWlsKCJiYWQgbHVjayIpCisgICAg
RSAgICAgICAgICAgRmFpbGVkOiBiYWQgbHVjawogCi0gICAgdGVzdF81MC5weTo2OiBGYWlsZWQK
LSAgICA9PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkLCA0OCBwYXNzZWQgaW4gMC4xMiBzZWNv
bmRzID09PT09PT09PT09PT09PT09PT09CisgICAgdGVzdF81MC5weTo3OiBGYWlsZWQKKyAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfNTAucHk6OnRlc3RfbnVtWzE3XSAt
IEZhaWxlZDogYmFkIGx1Y2sKKyAgICBGQUlMRUQgdGVzdF81MC5weTo6dGVzdF9udW1bMjVdIC0g
RmFpbGVkOiBiYWQgbHVjaworICAgID09PT09PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkLCA0
OCBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gX2Bjb25maWcu
Y2FjaGVgOgogCkBAIC0xNjAsMTAgKzE4MCwxMiBAQCBCZWhhdmlvciB3aGVuIG5vIHRlc3RzIGZh
aWxlZCBpbiB0aGUgbGFzdCBydW4KIAogV2hlbiBubyB0ZXN0cyBmYWlsZWQgaW4gdGhlIGxhc3Qg
cnVuLCBvciB3aGVuIG5vIGNhY2hlZCBgYGxhc3RmYWlsZWRgYCBkYXRhIHdhcwogZm91bmQsIGBg
cHl0ZXN0YGAgY2FuIGJlIGNvbmZpZ3VyZWQgZWl0aGVyIHRvIHJ1biBhbGwgb2YgdGhlIHRlc3Rz
IG9yIG5vIHRlc3RzLAotdXNpbmcgdGhlIGBgLS1sYXN0LWZhaWxlZC1uby1mYWlsdXJlc2BgIG9w
dGlvbiwgd2hpY2ggdGFrZXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOjoKK3VzaW5nIHRo
ZSBgYC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXNgYCBvcHRpb24sIHdoaWNoIHRha2VzIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAotICAgIHB5
dGVzdCAtLWxhc3QtZmFpbGVkLW5vLWZhaWx1cmVzIGFsbCAgICAjIHJ1biBhbGwgdGVzdHMgKGRl
ZmF1bHQgYmVoYXZpb3IpCi0gICAgcHl0ZXN0IC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXMgbm9u
ZSAgICMgcnVuIG5vIHRlc3RzIGFuZCBleGl0CisgICAgcHl0ZXN0IC0tbGFzdC1mYWlsZWQgLS1s
YXN0LWZhaWxlZC1uby1mYWlsdXJlcyBhbGwgICAgIyBydW4gYWxsIHRlc3RzIChkZWZhdWx0IGJl
aGF2aW9yKQorICAgIHB5dGVzdCAtLWxhc3QtZmFpbGVkIC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVy
ZXMgbm9uZSAgICMgcnVuIG5vIHRlc3RzIGFuZCBleGl0CiAKIFRoZSBuZXcgY29uZmlnLmNhY2hl
IG9iamVjdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3MiwyNyArMTk0
LDM2IEBAIFRoZSBuZXcgY29uZmlnLmNhY2hlIG9iamVjdAogCiBQbHVnaW5zIG9yIGNvbmZ0ZXN0
LnB5IHN1cHBvcnQgY29kZSBjYW4gZ2V0IGEgY2FjaGVkIHZhbHVlIHVzaW5nIHRoZQogcHl0ZXN0
IGBgY29uZmlnYGAgb2JqZWN0LiAgSGVyZSBpcyBhIGJhc2ljIGV4YW1wbGUgcGx1Z2luIHdoaWNo
Ci1pbXBsZW1lbnRzIGEgOnJlZjpgZml4dHVyZWAgd2hpY2ggcmUtdXNlcyBwcmV2aW91c2x5IGNy
ZWF0ZWQgc3RhdGUKLWFjcm9zcyBweXRlc3QgaW52b2NhdGlvbnM6OgoraW1wbGVtZW50cyBhIDpy
ZWY6YGZpeHR1cmUgPGZpeHR1cmU+YCB3aGljaCByZS11c2VzIHByZXZpb3VzbHkgY3JlYXRlZCBz
dGF0ZQorYWNyb3NzIHB5dGVzdCBpbnZvY2F0aW9uczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhv
bgogCiAgICAgIyBjb250ZW50IG9mIHRlc3RfY2FjaGluZy5weQogICAgIGltcG9ydCBweXRlc3QK
ICAgICBpbXBvcnQgdGltZQogCisKKyAgICBkZWYgZXhwZW5zaXZlX2NvbXB1dGF0aW9uKCk6Cisg
ICAgICAgIHByaW50KCJydW5uaW5nIGV4cGVuc2l2ZSBjb21wdXRhdGlvbi4uLiIpCisKKwogICAg
IEBweXRlc3QuZml4dHVyZQogICAgIGRlZiBteWRhdGEocmVxdWVzdCk6CiAgICAgICAgIHZhbCA9
IHJlcXVlc3QuY29uZmlnLmNhY2hlLmdldCgiZXhhbXBsZS92YWx1ZSIsIE5vbmUpCiAgICAgICAg
IGlmIHZhbCBpcyBOb25lOgotICAgICAgICAgICAgdGltZS5zbGVlcCg5KjAuNikgIyBleHBlbnNp
dmUgY29tcHV0YXRpb24gOikKKyAgICAgICAgICAgIGV4cGVuc2l2ZV9jb21wdXRhdGlvbigpCiAg
ICAgICAgICAgICB2YWwgPSA0MgogICAgICAgICAgICAgcmVxdWVzdC5jb25maWcuY2FjaGUuc2V0
KCJleGFtcGxlL3ZhbHVlIiwgdmFsKQogICAgICAgICByZXR1cm4gdmFsCiAKKwogICAgIGRlZiB0
ZXN0X2Z1bmN0aW9uKG15ZGF0YSk6CiAgICAgICAgIGFzc2VydCBteWRhdGEgPT0gMjMKIAotSWYg
eW91IHJ1biB0aGlzIGNvbW1hbmQgb25jZSwgaXQgd2lsbCB0YWtlIGEgd2hpbGUgYmVjYXVzZQot
b2YgdGhlIHNsZWVwOjoKK0lmIHlvdSBydW4gdGhpcyBjb21tYW5kIGZvciB0aGUgZmlyc3QgdGlt
ZSwgeW91IGNhbiBzZWUgdGhlIHByaW50IHN0YXRlbWVudDoKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgLXEKICAgICBGICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTIwNSwx
MSArMjM2LDE3IEBAIG9mIHRoZSBzbGVlcDo6CiAgICAgPiAgICAgICBhc3NlcnQgbXlkYXRhID09
IDIzCiAgICAgRSAgICAgICBhc3NlcnQgNDIgPT0gMjMKIAotICAgIHRlc3RfY2FjaGluZy5weTox
NDogQXNzZXJ0aW9uRXJyb3IKLSAgICAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMKKyAgICB0ZXN0
X2NhY2hpbmcucHk6MjA6IEFzc2VydGlvbkVycm9yCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQ2FwdHVyZWQgc3Rkb3V0IHNldHVwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICAgIHJ1bm5pbmcgZXhwZW5zaXZlIGNvbXB1dGF0aW9uLi4uCisgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09
PT09PQorICAgIEZBSUxFRCB0ZXN0X2NhY2hpbmcucHk6OnRlc3RfZnVuY3Rpb24gLSBhc3NlcnQg
NDIgPT0gMjMKKyAgICAxIGZhaWxlZCBpbiAwLjEycwogCi1JZiB5b3UgcnVuIGl0IGEgc2Vjb25k
IHRpbWUgdGhlIHZhbHVlIHdpbGwgYmUgcmV0cmlldmVkIGZyb20KLXRoZSBjYWNoZSBhbmQgdGhp
cyB3aWxsIGJlIHF1aWNrOjoKK0lmIHlvdSBydW4gaXQgYSBzZWNvbmQgdGltZSwgdGhlIHZhbHVl
IHdpbGwgYmUgcmV0cmlldmVkIGZyb20KK3RoZSBjYWNoZSBhbmQgbm90aGluZyB3aWxsIGJlIHBy
aW50ZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xCiAgICAg
RiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWzEwMCVdCkBAIC0yMjIsNDEgKzI1OSwxMzEgQEAgdGhlIGNhY2hlIGFuZCB0
aGlzIHdpbGwgYmUgcXVpY2s6OgogICAgID4gICAgICAgYXNzZXJ0IG15ZGF0YSA9PSAyMwogICAg
IEUgICAgICAgYXNzZXJ0IDQyID09IDIzCiAKLSAgICB0ZXN0X2NhY2hpbmcucHk6MTQ6IEFzc2Vy
dGlvbkVycm9yCi0gICAgMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgdGVzdF9jYWNoaW5n
LnB5OjIwOiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hv
cnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlM
RUQgdGVzdF9jYWNoaW5nLnB5Ojp0ZXN0X2Z1bmN0aW9uIC0gYXNzZXJ0IDQyID09IDIzCisgICAg
MSBmYWlsZWQgaW4gMC4xMnMKIAotU2VlIHRoZSA6cmVmOmBjYWNoZS1hcGlgIGZvciBtb3JlIGRl
dGFpbHMuCitTZWUgdGhlIDpmaXh0dXJlOmBjb25maWcuY2FjaGUgZml4dHVyZSA8Y2FjaGU+YCBm
b3IgbW9yZSBkZXRhaWxzLgogCiAKIEluc3BlY3RpbmcgQ2FjaGUgY29udGVudAotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFlvdSBj
YW4gYWx3YXlzIHBlZWsgYXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNhY2hlIHVzaW5nIHRoZQotYGAt
LWNhY2hlLXNob3dgYCBjb21tYW5kIGxpbmUgb3B0aW9uOjoKK2BgLS1jYWNoZS1zaG93YGAgY29t
bWFuZCBsaW5lIG9wdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRl
c3QgLS1jYWNoZS1zaG93CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vz
c2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxp
bnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55
Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKLSAgICBjYWNoZWRpcjog
JFJFR0VORE9DX1RNUERJUi8ucHl0ZXN0X2NhY2hlCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBjYWNoZSB2YWx1ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngu
eSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2Fj
aGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2Fj
aGUgdmFsdWVzIGZvciAnKicgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgY2FjaGUv
bGFzdGZhaWxlZCBjb250YWluczoKLSAgICAgIHsndGVzdF9jYWNoaW5nLnB5Ojp0ZXN0X2Z1bmN0
aW9uJzogVHJ1ZX0KKyAgICAgIHsndGVzdF81MC5weTo6dGVzdF9udW1bMTddJzogVHJ1ZSwKKyAg
ICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMjVdJzogVHJ1ZSwKKyAgICAgICAndGVzdF9hc3Nl
cnQxLnB5Ojp0ZXN0X2Z1bmN0aW9uJzogVHJ1ZSwKKyAgICAgICAndGVzdF9hc3NlcnQyLnB5Ojp0
ZXN0X3NldF9jb21wYXJpc29uJzogVHJ1ZSwKKyAgICAgICAndGVzdF9jYWNoaW5nLnB5Ojp0ZXN0
X2Z1bmN0aW9uJzogVHJ1ZSwKKyAgICAgICAndGVzdF9mb29jb21wYXJlLnB5Ojp0ZXN0X2NvbXBh
cmUnOiBUcnVlfQogICAgIGNhY2hlL25vZGVpZHMgY29udGFpbnM6Ci0gICAgICBbJ3Rlc3RfY2Fj
aGluZy5weTo6dGVzdF9mdW5jdGlvbiddCisgICAgICBbJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzBd
JywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMTBdJywKKyAgICAgICAndGVzdF81MC5w
eTo6dGVzdF9udW1bMTFdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMTJdJywKKyAg
ICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMTNdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVz
dF9udW1bMTRdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMTVdJywKKyAgICAgICAn
dGVzdF81MC5weTo6dGVzdF9udW1bMTZdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1b
MTddJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMThdJywKKyAgICAgICAndGVzdF81
MC5weTo6dGVzdF9udW1bMTldJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bMV0nLAor
ICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyMF0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0
ZXN0X251bVsyMV0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyMl0nLAorICAgICAg
ICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyM10nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251
bVsyNF0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyNV0nLAorICAgICAgICd0ZXN0
XzUwLnB5Ojp0ZXN0X251bVsyNl0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyN10n
LAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyOF0nLAorICAgICAgICd0ZXN0XzUwLnB5
Ojp0ZXN0X251bVsyOV0nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0ZXN0X251bVsyXScsCisgICAg
ICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzMwXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3Rf
bnVtWzMxXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzMyXScsCisgICAgICAgJ3Rl
c3RfNTAucHk6OnRlc3RfbnVtWzMzXScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzM0
XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzM1XScsCisgICAgICAgJ3Rlc3RfNTAu
cHk6OnRlc3RfbnVtWzM2XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzM3XScsCisg
ICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzM4XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRl
c3RfbnVtWzM5XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzNdJywKKyAgICAgICAn
dGVzdF81MC5weTo6dGVzdF9udW1bNDBdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1b
NDFdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bNDJdJywKKyAgICAgICAndGVzdF81
MC5weTo6dGVzdF9udW1bNDNdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bNDRdJywK
KyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bNDVdJywKKyAgICAgICAndGVzdF81MC5weTo6
dGVzdF9udW1bNDZdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bNDddJywKKyAgICAg
ICAndGVzdF81MC5weTo6dGVzdF9udW1bNDhdJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9u
dW1bNDldJywKKyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bNF0nLAorICAgICAgICd0ZXN0
XzUwLnB5Ojp0ZXN0X251bVs1XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzZdJywK
KyAgICAgICAndGVzdF81MC5weTo6dGVzdF9udW1bN10nLAorICAgICAgICd0ZXN0XzUwLnB5Ojp0
ZXN0X251bVs4XScsCisgICAgICAgJ3Rlc3RfNTAucHk6OnRlc3RfbnVtWzldJywKKyAgICAgICAn
dGVzdF9hc3NlcnQxLnB5Ojp0ZXN0X2Z1bmN0aW9uJywKKyAgICAgICAndGVzdF9hc3NlcnQyLnB5
Ojp0ZXN0X3NldF9jb21wYXJpc29uJywKKyAgICAgICAndGVzdF9jYWNoaW5nLnB5Ojp0ZXN0X2Z1
bmN0aW9uJywKKyAgICAgICAndGVzdF9mb29jb21wYXJlLnB5Ojp0ZXN0X2NvbXBhcmUnXQorICAg
IGNhY2hlL3N0ZXB3aXNlIGNvbnRhaW5zOgorICAgICAgW10KICAgICBleGFtcGxlL3ZhbHVlIGNv
bnRhaW5zOgogICAgICAgNDIKIAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3Rz
IHJhbiBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09CisKK2BgLS1jYWNoZS1zaG93YGAgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1l
bnQgdG8gc3BlY2lmeSBhIGdsb2IgcGF0dGVybiBmb3IKK2ZpbHRlcmluZzoKKworLi4gY29kZS1i
bG9jazo6IHB5dGVzdAorCisgICAgJCBweXRlc3QgLS1jYWNoZS1zaG93IGV4YW1wbGUvKgorICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlU
SE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgor
ICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gY2FjaGUgdmFsdWVzIGZvciAnZXhhbXBsZS8qJyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICAgIGV4YW1wbGUvdmFsdWUgY29udGFpbnM6CisgICAgICA0MgorCisgICAg
PT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09PT09
PT09PT09PT09PT09PT09PT09PQogCiBDbGVhcmluZyBDYWNoZSBjb250ZW50Ci0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFlvdSBjYW4g
aW5zdHJ1Y3QgcHl0ZXN0IHRvIGNsZWFyIGFsbCBjYWNoZSBmaWxlcyBhbmQgdmFsdWVzCi1ieSBh
ZGRpbmcgdGhlIGBgLS1jYWNoZS1jbGVhcmBgIG9wdGlvbiBsaWtlIHRoaXM6OgorYnkgYWRkaW5n
IHRoZSBgYC0tY2FjaGUtY2xlYXJgYCBvcHRpb24gbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2Nr
OjogYmFzaAogCiAgICAgcHl0ZXN0IC0tY2FjaGUtY2xlYXIKIAogVGhpcyBpcyByZWNvbW1lbmRl
ZCBmb3IgaW52b2NhdGlvbnMgZnJvbSBDb250aW51b3VzIEludGVncmF0aW9uCiBzZXJ2ZXJzIHdo
ZXJlIGlzb2xhdGlvbiBhbmQgY29ycmVjdG5lc3MgaXMgbW9yZSBpbXBvcnRhbnQKIHRoYW4gc3Bl
ZWQuCisKKworU3RlcHdpc2UKKy0tLS0tLS0tCisKK0FzIGFuIGFsdGVybmF0aXZlIHRvIGBgLS1s
ZiAteGBgLCBlc3BlY2lhbGx5IGZvciBjYXNlcyB3aGVyZSB5b3UgZXhwZWN0IGEgbGFyZ2UgcGFy
dCBvZiB0aGUgdGVzdCBzdWl0ZSB3aWxsIGZhaWwsIGBgLS1zd2BgLCBgYC0tc3RlcHdpc2VgYCBh
bGxvd3MgeW91IHRvIGZpeCB0aGVtIG9uZSBhdCBhIHRpbWUuIFRoZSB0ZXN0IHN1aXRlIHdpbGwg
cnVuIHVudGlsIHRoZSBmaXJzdCBmYWlsdXJlIGFuZCB0aGVuIHN0b3AuIEF0IHRoZSBuZXh0IGlu
dm9jYXRpb24sIHRlc3RzIHdpbGwgY29udGludWUgZnJvbSB0aGUgbGFzdCBmYWlsaW5nIHRlc3Qg
YW5kIHRoZW4gcnVuIHVudGlsIHRoZSBuZXh0IGZhaWxpbmcgdGVzdC4gWW91IG1heSB1c2UgdGhl
IGBgLS1zdGVwd2lzZS1za2lwYGAgb3B0aW9uIHRvIGlnbm9yZSBvbmUgZmFpbGluZyB0ZXN0IGFu
ZCBzdG9wIHRoZSB0ZXN0IGV4ZWN1dGlvbiBvbiB0aGUgc2Vjb25kIGZhaWxpbmcgdGVzdCBpbnN0
ZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgZ2V0IHN0dWNrIG9uIGEgZmFpbGluZyB0ZXN0IGFu
ZCBqdXN0IHdhbnQgdG8gaWdub3JlIGl0IHVudGlsIGxhdGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2NhcHR1cmUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NhcHR1cmUucnN0
CmluZGV4IGFiODZmYjU1ZjNkOC4uY2FhZWJkZjgxYThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vY2FwdHVyZS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NhcHR1cmUucnN0
CkBAIC0yMSwyNSArMjEsMzYgQEAgZmlsZSBkZXNjcmlwdG9ycy4gIFRoaXMgYWxsb3dzIHRvIGNh
cHR1cmUgb3V0cHV0IGZyb20gc2ltcGxlCiBwcmludCBzdGF0ZW1lbnRzIGFzIHdlbGwgYXMgb3V0
cHV0IGZyb20gYSBzdWJwcm9jZXNzIHN0YXJ0ZWQgYnkKIGEgdGVzdC4KIAorLi4gX2NhcHR1cmUt
bWV0aG9kOgorCiBTZXR0aW5nIGNhcHR1cmluZyBtZXRob2RzIG9yIGRpc2FibGluZyBjYXB0dXJp
bmcKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
VGhlcmUgYXJlIHR3byB3YXlzIGluIHdoaWNoIGBgcHl0ZXN0YGAgY2FuIHBlcmZvcm0gY2FwdHVy
aW5nOgorVGhlcmUgYXJlIHRocmVlIHdheXMgaW4gd2hpY2ggYGBweXRlc3RgYCBjYW4gcGVyZm9y
bSBjYXB0dXJpbmc6CiAKLSogZmlsZSBkZXNjcmlwdG9yIChGRCkgbGV2ZWwgY2FwdHVyaW5nIChk
ZWZhdWx0KTogQWxsIHdyaXRlcyBnb2luZyB0byB0aGUKKyogYGBmZGBgIChmaWxlIGRlc2NyaXB0
b3IpIGxldmVsIGNhcHR1cmluZyAoZGVmYXVsdCk6IEFsbCB3cml0ZXMgZ29pbmcgdG8gdGhlCiAg
IG9wZXJhdGluZyBzeXN0ZW0gZmlsZSBkZXNjcmlwdG9ycyAxIGFuZCAyIHdpbGwgYmUgY2FwdHVy
ZWQuCiAKICogYGBzeXNgYCBsZXZlbCBjYXB0dXJpbmc6IE9ubHkgd3JpdGVzIHRvIFB5dGhvbiBm
aWxlcyBgYHN5cy5zdGRvdXRgYAogICBhbmQgYGBzeXMuc3RkZXJyYGAgd2lsbCBiZSBjYXB0dXJl
ZC4gIE5vIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8KICAgZmlsZWRlc2NyaXB0b3JzIGlzIHBlcmZv
cm1lZC4KIAorKiBgYHRlZS1zeXNgYCBjYXB0dXJpbmc6IFB5dGhvbiB3cml0ZXMgdG8gYGBzeXMu
c3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgCisgIHdpbGwgYmUgY2FwdHVyZWQsIGhvd2V2ZXIg
dGhlIHdyaXRlcyB3aWxsIGFsc28gYmUgcGFzc2VkLXRocm91Z2ggdG8KKyAgdGhlIGFjdHVhbCBg
YHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAuIFRoaXMgYWxsb3dzIG91dHB1dCB0byBi
ZQorICAnbGl2ZSBwcmludGVkJyBhbmQgY2FwdHVyZWQgZm9yIHBsdWdpbiB1c2UsIHN1Y2ggYXMg
anVuaXR4bWwgKG5ldyBpbiBweXRlc3QgNS40KS4KKwogLi4gX2BkaXNhYmxlIGNhcHR1cmluZ2A6
CiAKLVlvdSBjYW4gaW5mbHVlbmNlIG91dHB1dCBjYXB0dXJpbmcgbWVjaGFuaXNtcyBmcm9tIHRo
ZSBjb21tYW5kIGxpbmU6OgorWW91IGNhbiBpbmZsdWVuY2Ugb3V0cHV0IGNhcHR1cmluZyBtZWNo
YW5pc21zIGZyb20gdGhlIGNvbW1hbmQgbGluZToKIAotICAgIHB5dGVzdCAtcyAgICAgICAgICAg
ICMgZGlzYWJsZSBhbGwgY2FwdHVyaW5nCi0gICAgcHl0ZXN0IC0tY2FwdHVyZT1zeXMgIyByZXBs
YWNlIHN5cy5zdGRvdXQvc3RkZXJyIHdpdGggaW4tbWVtIGZpbGVzCi0gICAgcHl0ZXN0IC0tY2Fw
dHVyZT1mZCAgIyBhbHNvIHBvaW50IGZpbGVkZXNjcmlwdG9ycyAxIGFuZCAyIHRvIHRlbXAgZmls
ZQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgIHB5dGVzdCAtcyAgICAgICAgICAgICAgICAg
ICMgZGlzYWJsZSBhbGwgY2FwdHVyaW5nCisgICAgcHl0ZXN0IC0tY2FwdHVyZT1zeXMgICAgICAg
IyByZXBsYWNlIHN5cy5zdGRvdXQvc3RkZXJyIHdpdGggaW4tbWVtIGZpbGVzCisgICAgcHl0ZXN0
IC0tY2FwdHVyZT1mZCAgICAgICAgIyBhbHNvIHBvaW50IGZpbGVkZXNjcmlwdG9ycyAxIGFuZCAy
IHRvIHRlbXAgZmlsZQorICAgIHB5dGVzdCAtLWNhcHR1cmU9dGVlLXN5cyAgICMgY29tYmluZXMg
J3N5cycgYW5kICctcycsIGNhcHR1cmluZyBzeXMuc3Rkb3V0L3N0ZGVycgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgYW5kIHBhc3NpbmcgaXQgYWxvbmcgdG8gdGhlIGFjdHVhbCBz
eXMuc3Rkb3V0L3N0ZGVycgogCiAuLiBfcHJpbnRkZWJ1Z2dpbmc6CiAKQEAgLTQ3LDI2ICs1OCwz
NCBAQCBVc2luZyBwcmludCBzdGF0ZW1lbnRzIGZvciBkZWJ1Z2dpbmcKIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBPbmUgcHJpbWFyeSBiZW5l
Zml0IG9mIHRoZSBkZWZhdWx0IGNhcHR1cmluZyBvZiBzdGRvdXQvc3RkZXJyIG91dHB1dAotaXMg
dGhhdCB5b3UgY2FuIHVzZSBwcmludCBzdGF0ZW1lbnRzIGZvciBkZWJ1Z2dpbmc6OgoraXMgdGhh
dCB5b3UgY2FuIHVzZSBwcmludCBzdGF0ZW1lbnRzIGZvciBkZWJ1Z2dpbmc6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X21vZHVsZS5weQogCisKICAg
ICBkZWYgc2V0dXBfZnVuY3Rpb24oZnVuY3Rpb24pOgotICAgICAgICBwcmludCAoInNldHRpbmcg
dXAgJXMiICUgZnVuY3Rpb24pCisgICAgICAgIHByaW50KCJzZXR0aW5nIHVwIiwgZnVuY3Rpb24p
CisKIAogICAgIGRlZiB0ZXN0X2Z1bmMxKCk6CiAgICAgICAgIGFzc2VydCBUcnVlCiAKKwogICAg
IGRlZiB0ZXN0X2Z1bmMyKCk6CiAgICAgICAgIGFzc2VydCBGYWxzZQogCiBhbmQgcnVubmluZyB0
aGlzIG1vZHVsZSB3aWxsIHNob3cgeW91IHByZWNpc2VseSB0aGUgb3V0cHV0Ci1vZiB0aGUgZmFp
bGluZyBmdW5jdGlvbiBhbmQgaGlkZSB0aGUgb3RoZXIgb25lOjoKK29mIHRoZSBmYWlsaW5nIGZ1
bmN0aW9uIGFuZCBoaWRlIHRoZSBvdGhlciBvbmU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QK
IAogICAgICQgcHl0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vz
c2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxp
bnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55
Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBs
aW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngu
eQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRp
cjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAyIGl0ZW1zCiAKICAgICB0ZXN0X21v
ZHVsZS5weSAuRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbMTAwJV0KQEAgLTc4LDEwICs5NywxMiBAQCBvZiB0aGUgZmFpbGluZyBmdW5jdGlvbiBh
bmQgaGlkZSB0aGUgb3RoZXIgb25lOjoKICAgICA+ICAgICAgIGFzc2VydCBGYWxzZQogICAgIEUg
ICAgICAgYXNzZXJ0IEZhbHNlCiAKLSAgICB0ZXN0X21vZHVsZS5weTo5OiBBc3NlcnRpb25FcnJv
cgorICAgIHRlc3RfbW9kdWxlLnB5OjEyOiBBc3NlcnRpb25FcnJvcgogICAgIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0ZG91dCBzZXR1cCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KICAgICBzZXR0aW5nIHVwIDxmdW5jdGlvbiB0ZXN0X2Z1bmMyIGF0IDB4ZGVhZGJl
ZWY+Ci0gICAgPT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkIGluIDAuMTIg
c2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09
PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg
ICBGQUlMRUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfZnVuYzIgLSBhc3NlcnQgRmFsc2UKKyAgICA9
PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCwgMSBwYXNzZWQgaW4gMC4xMnMgPT09PT09
PT09PT09PT09PT09PT09PT09CiAKIEFjY2Vzc2luZyBjYXB0dXJlZCBvdXRwdXQgZnJvbSBhIHRl
c3QgZnVuY3Rpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMTE2LDE5ICsxMzcsMTggQEAgc2FtZSBpbnRlcmZhY2UgYnV0IGFsbG93cyB0
byBhbHNvIGNhcHR1cmUgb3V0cHV0IGZyb20KIGxpYnJhcmllcyBvciBzdWJwcm9jZXNzZXMgdGhh
dCBkaXJlY3RseSB3cml0ZSB0byBvcGVyYXRpbmcKIHN5c3RlbSBsZXZlbCBvdXRwdXQgc3RyZWFt
cyAoRkQxIGFuZCBGRDIpLgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiBUaGUgcmV0dXJu
IHZhbHVlIGZyb20gYGByZWFkb3V0ZXJyYGAgY2hhbmdlZCB0byBhIGBgbmFtZWR0dXBsZWBgIHdp
dGggdHdvIGF0dHJpYnV0ZXMsIGBgb3V0YGAgYW5kIGBgZXJyYGAuCiAKLS4uIHZlcnNpb25hZGRl
ZDo6IDMuMworCiAKIElmIHRoZSBjb2RlIHVuZGVyIHRlc3Qgd3JpdGVzIG5vbi10ZXh0dWFsIGRh
dGEsIHlvdSBjYW4gY2FwdHVyZSB0aGlzIHVzaW5nCiB0aGUgYGBjYXBzeXNiaW5hcnlgYCBmaXh0
dXJlIHdoaWNoIGluc3RlYWQgcmV0dXJucyBgYGJ5dGVzYGAgZnJvbQotdGhlIGBgcmVhZG91dGVy
cmBgIG1ldGhvZC4gIFRoZSBgYGNhcGZzeXNiaW5hcnlgYCBmaXh0dXJlIGlzIGN1cnJlbnRseSBv
bmx5Ci1hdmFpbGFibGUgaW4gcHl0aG9uIDMuCit0aGUgYGByZWFkb3V0ZXJyYGAgbWV0aG9kLgor
CiAKIAotLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIElmIHRoZSBjb2RlIHVuZGVyIHRlc3Qgd3Jp
dGVzIG5vbi10ZXh0dWFsIGRhdGEsIHlvdSBjYW4gY2FwdHVyZSB0aGlzIHVzaW5nCiB0aGUgYGBj
YXBmZGJpbmFyeWBgIGZpeHR1cmUgd2hpY2ggaW5zdGVhZCByZXR1cm5zIGBgYnl0ZXNgYCBmcm9t
CkBAIC0xMzYsNyArMTU2LDcgQEAgdGhlIGBgcmVhZG91dGVycmBgIG1ldGhvZC4gIFRoZSBgYGNh
cGZkYmluYXJ5YGAgZml4dHVyZSBvcGVyYXRlcyBvbiB0aGUKIGZpbGVkZXNjcmlwdG9yIGxldmVs
LgogCiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMAorCiAKIFRvIHRlbXBvcmFyaWx5IGRpc2FibGUg
Y2FwdHVyZSB3aXRoaW4gYSB0ZXN0LCBib3RoIGBgY2Fwc3lzYGAKIGFuZCBgYGNhcGZkYGAgaGF2
ZSBhIGBgZGlzYWJsZWQoKWBgIG1ldGhvZCB0aGF0IGNhbiBiZSB1c2VkCkBAIC0xNDksNSArMTY5
LDMgQEAgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGRpc2FibGluZyBjYXB0dXJlIGluc2lkZSB0aGUg
YGB3aXRoYGAgYmxvY2s6CiAgICAgICAgIHdpdGggY2Fwc3lzLmRpc2FibGVkKCk6CiAgICAgICAg
ICAgICBwcmludCgib3V0cHV0IG5vdCBjYXB0dXJlZCwgZ29pbmcgZGlyZWN0bHkgdG8gc3lzLnN0
ZG91dCIpCiAgICAgICAgIHByaW50KCJ0aGlzIG91dHB1dCBpcyBhbHNvIGNhcHR1cmVkIikKLQot
Li4gaW5jbHVkZTo6IGxpbmtzLmluYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2No
YW5nZWxvZy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY2hhbmdlbG9nLnJzdAppbmRleCBhNTli
M2M3ZTI1MGUuLjJhMjZiNWMzZmI5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2No
YW5nZWxvZy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NoYW5nZWxvZy5yc3QKQEAgLTEs
NyArMSw4NjY4IEBACisuLiBfYGNoYW5nZWxvZ2A6CiAKLS4uIF9jaGFuZ2Vsb2c6Cis9PT09PT09
PT0KK0NoYW5nZWxvZworPT09PT09PT09CiAKLUNoYW5nZWxvZyBoaXN0b3J5Ci09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KK1ZlcnNpb25zIGZvbGxvdyBgU2VtYW50aWMgVmVyc2lv
bmluZyA8aHR0cHM6Ly9zZW12ZXIub3JnLz5gXyAoYGA8bWFqb3I+LjxtaW5vcj4uPHBhdGNoPmBg
KS4KIAotLi4gaW5jbHVkZTo6IC4uLy4uL0NIQU5HRUxPRy5yc3QKK0JhY2t3YXJkIGluY29tcGF0
aWJsZSAoYnJlYWtpbmcpIGNoYW5nZXMgd2lsbCBvbmx5IGJlIGludHJvZHVjZWQgaW4gbWFqb3Ig
dmVyc2lvbnMKK3dpdGggYWR2YW5jZSBub3RpY2UgaW4gdGhlICoqRGVwcmVjYXRpb25zKiogc2Vj
dGlvbiBvZiByZWxlYXNlcy4KKworCisuLgorICAgIFlvdSBzaG91bGQgKk5PVCogYmUgYWRkaW5n
IG5ldyBjaGFuZ2UgbG9nIGVudHJpZXMgdG8gdGhpcyBmaWxlLCB0aGlzCisgICAgZmlsZSBpcyBt
YW5hZ2VkIGJ5IHRvd25jcmllci4gWW91ICptYXkqIGVkaXQgcHJldmlvdXMgY2hhbmdlIGxvZ3Mg
dG8KKyAgICBmaXggcHJvYmxlbXMgbGlrZSB0eXBvIGNvcnJlY3Rpb25zIG9yIHN1Y2guCisgICAg
VG8gYWRkIGEgbmV3IGNoYW5nZSBsb2cgZW50cnksIHBsZWFzZSBzZWUKKyAgICBodHRwczovL3Bp
cC5weXBhLmlvL2VuL2xhdGVzdC9kZXZlbG9wbWVudC9jb250cmlidXRpbmcvI25ld3MtZW50cmll
cworICAgIHdlIG5hbWVkIHRoZSBuZXdzIGZvbGRlciBjaGFuZ2Vsb2cKKworCisuLiBvbmx5Ojog
Y2hhbmdlbG9nX3Rvd25jcmllcl9kcmFmdAorCisgICAgLi4gVGhlICdjaGFuZ2Vsb2dfdG93bmNy
aWVyX2RyYWZ0JyB0YWcgaXMgaW5jbHVkZWQgYnkgb3VyICd0b3ggLWUgZG9jcycsCisgICAgICAg
YnV0IG5vdCBvbiByZWFkdGhlZG9jcy4KKworICAgIC4uIGluY2x1ZGU6OiBfY2hhbmdlbG9nX3Rv
d25jcmllcl9kcmFmdC5yc3QKKworLi4gdG93bmNyaWVyIHJlbGVhc2Ugbm90ZXMgc3RhcnQKKwor
cHl0ZXN0IDYuMS4xICgyMDIwLTEwLTAzKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitC
dWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNzgwNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy83ODA3PmBfOiBGaXhlZCByZWdyZXNzaW9uIGluIHB5dGVzdCA2
LjEuMCBjYXVzaW5nIGluY29ycmVjdCByb290ZGlyIHRvIGJlIGRldGVybWluZWQgaW4gc29tZSBu
b24tdHJpdmlhbCBjYXNlcyB3aGVyZSBwYXJlbnQgZGlyZWN0b3JpZXMgaGF2ZSBjb25maWcgZmls
ZXMgYXMgd2VsbC4KKworCistIGAjNzgxNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy83ODE0PmBfOiBGaXhlZCBjcmFzaCBpbiBoZWFkZXIgcmVwb3J0aW5nIHdo
ZW4gOmNvbmZ2YWw6YHRlc3RwYXRoc2AgaXMgdXNlZCBhbmQgY29udGFpbnMgYWJzb2x1dGUgcGF0
aHMgKHJlZ3Jlc3Npb24gaW4gNi4xLjApLgorCisKK3B5dGVzdCA2LjEuMCAoMjAyMC0wOS0yNikK
Kz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnJlYWtpbmcgQ2hhbmdlcworLS0tLS0tLS0t
LS0tLS0tLQorCistIGAjNTU4NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81NTg1PmBfOiBBcyBwZXIgb3VyIHBvbGljeSwgdGhlIGZvbGxvd2luZyBmZWF0dXJl
cyB3aGljaCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBpbiB0aGUgNS5YIHNlcmllcyBhcmUgbm93Cisg
IHJlbW92ZWQ6CisKKyAgKiBUaGUgYGBmdW5jYXJnbmFtZXNgYCByZWFkLW9ubHkgcHJvcGVydHkg
b2YgYGBGaXh0dXJlUmVxdWVzdGBgLCBgYE1ldGFmdW5jYGAsIGFuZCBgYEZ1bmN0aW9uYGAgY2xh
c3Nlcy4gVXNlIGBgZml4dHVyZW5hbWVzYGAgYXR0cmlidXRlLgorCisgICogYGBAcHl0ZXN0LmZp
eHR1cmVgYCBubyBsb25nZXIgc3VwcG9ydHMgcG9zaXRpb25hbCBhcmd1bWVudHMsIHBhc3MgYWxs
IGFyZ3VtZW50cyBieSBrZXl3b3JkIGluc3RlYWQuCisKKyAgKiBEaXJlY3QgY29uc3RydWN0aW9u
IG9mIGBgTm9kZWBgIHN1YmNsYXNzZXMgbm93IHJhaXNlIGFuIGVycm9yLCB1c2UgYGBmcm9tX3Bh
cmVudGBgIGluc3RlYWQuCisKKyAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYGBqdW5pdF9mYW1p
bHlgYCBoYXMgY2hhbmdlZCB0byBgYHh1bml0MmBgLiBJZiB5b3UgcmVxdWlyZSB0aGUgb2xkIGZv
cm1hdCwgYWRkIGBganVuaXRfZmFtaWx5PXh1bml0MWBgIHRvIHlvdXIgY29uZmlndXJhdGlvbiBm
aWxlLgorCisgICogVGhlIGBgVGVybWluYWxSZXBvcnRlcmBgIG5vIGxvbmdlciBoYXMgYSBgYHdy
aXRlcmBgIGF0dHJpYnV0ZS4gUGx1Z2luIGF1dGhvcnMgbWF5IHVzZSB0aGUgcHVibGljIGZ1bmN0
aW9ucyBvZiB0aGUgYGBUZXJtaW5hbFJlcG9ydGVyYGAgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhl
IGBgVGVybWluYWxXcml0ZXJgYCBvYmplY3QgZGlyZWN0bHkuCisKKyAgKiBUaGUgYGAtLXJlc3Vs
dC1sb2dgYCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlcnMgYXJlIHJlY29tbWVuZGVkIHRv
IHVzZSB0aGUgYHB5dGVzdC1yZXBvcnRsb2cgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC1yZXBvcnRsb2c+YF9fIHBsdWdpbiBpbnN0ZWFkLgorCisKKyAgRm9yIG1vcmUgaW5m
b3JtYXRpb24gY29uc3VsdAorICBgRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscyA8aHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sPmBfXyBpbiB0aGUgZG9j
cy4KKworCisKK0RlcHJlY2F0aW9ucworLS0tLS0tLS0tLS0tCisKKy0gYCM2OTgxIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5ODE+YF86IFRoZSBgYHB5dGVz
dC5jb2xsZWN0YGAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQ6IGFsbCBpdHMgbmFtZXMgY2FuIGJlIGlt
cG9ydGVkIGZyb20gYGBweXRlc3RgYCBkaXJlY3RseS4KKworCistIGAjNzA5NyA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MDk3PmBfOiBUaGUgYGBweXRlc3Qu
X2ZpbGxmdW5jYXJnc2BgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuIFRoaXMgZnVuY3Rpb24gd2Fz
IGtlcHQKKyAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBhbiBvbGRlciBwbHVnaW4u
CisKKyAgSXQncyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5
LCBidXQgaWYgeW91IG11c3QgcmVwbGFjZQorICBpdCwgdXNlIGBmdW5jdGlvbi5fcmVxdWVzdC5f
ZmlsbGZpeHR1cmVzKClgIGluc3RlYWQsIHRob3VnaCBub3RlIHRoaXMgaXMgbm90CisgIGEgcHVi
bGljIEFQSSBhbmQgbWF5IGJyZWFrIGluIHRoZSBmdXR1cmUuCisKKworLSBgIzcyMTAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzIxMD5gXzogVGhlIHNwZWNp
YWwgYGAtayAnLWV4cHInYGAgc3ludGF4IHRvIGBgLWtgYCBpcyBkZXByZWNhdGVkLiBVc2UgYGAt
ayAnbm90IGV4cHInYGAKKyAgaW5zdGVhZC4KKworICBUaGUgc3BlY2lhbCBgYC1rICdleHByOidg
YCBzeW50YXggdG8gYGAta2BgIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBvcGVuIGFuIGlzc3VlCisg
IGlmIHlvdSB1c2UgdGhpcyBhbmQgd2FudCBhIHJlcGxhY2VtZW50LgorCisKKy0gYCM3MjU1IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyNTU+YF86IFRoZSA6
ZnVuYzpgcHl0ZXN0X3dhcm5pbmdfY2FwdHVyZWQgPF9weXRlc3QuaG9va3NwZWMucHl0ZXN0X3dh
cm5pbmdfY2FwdHVyZWQ+YCBob29rIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3IKKyAgb2YgOmZ1bmM6
YHB5dGVzdF93YXJuaW5nX3JlY29yZGVkIDxfcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF93YXJuaW5n
X3JlY29yZGVkPmAsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4KKwor
CistIGAjNzY0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83
NjQ4PmBfOiBUaGUgYGBnZXRob29rcHJveHkoKWBgIGFuZCBgYGlzaW5pdHBhdGgoKWBgIG1ldGhv
ZHMgb2YgYGBGU0NvbGxlY3RvcmBgIGFuZCBgYFBhY2thZ2VgYCBhcmUgZGVwcmVjYXRlZDsKKyAg
dXNlIGBgc2VsZi5zZXNzaW9uLmdldGhvb2twcm94eSgpYGAgYW5kIGBgc2VsZi5zZXNzaW9uLmlz
aW5pdHBhdGgoKWBgIGluc3RlYWQuCisgIFRoaXMgc2hvdWxkIHdvcmsgb24gYWxsIHB5dGVzdCB2
ZXJzaW9ucy4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjNzY2NyA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NjY3PmBfOiBOZXcgYGAtLWR1cmF0
aW9ucy1taW5gYCBjb21tYW5kLWxpbmUgZmxhZyBjb250cm9scyB0aGUgbWluaW1hbCBkdXJhdGlv
biBmb3IgaW5jbHVzaW9uIGluIHRoZSBzbG93ZXN0IGxpc3Qgb2YgdGVzdHMgc2hvd24gYnkgYGAt
LWR1cmF0aW9uc2BgLiBQcmV2aW91c2x5IHRoaXMgd2FzIGhhcmQtY29kZWQgdG8gYGAwLjAwNXNg
YC4KKworCisKK0ltcHJvdmVtZW50cworLS0tLS0tLS0tLS0tCisKKy0gYCM2NjgxIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY2ODE+YF86IEludGVybmFsIHB5
dGVzdCB3YXJuaW5ncyBpc3N1ZWQgZHVyaW5nIHRoZSBlYXJseSBzdGFnZXMgb2YgaW5pdGlhbGl6
YXRpb24gYXJlIG5vdyBwcm9wZXJseSBoYW5kbGVkIGFuZCBjYW4gZmlsdGVyZWQgdGhyb3VnaCA6
Y29uZnZhbDpgZmlsdGVyd2FybmluZ3NgIG9yIGBgLS1weXRob253YXJuaW5ncy8tV2BgLgorCisg
IFRoaXMgYWxzbyBmaXhlcyBhIG51bWJlciBvZiBsb25nIHN0YW5kaW5nIGlzc3VlczogYCMyODkx
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4OTE+YF9fLCBg
Izc2MjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzYyMD5g
X18sIGAjNzQyNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83
NDI2PmBfXy4KKworCistIGAjNzU3MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy83NTcyPmBfOiBXaGVuIGEgcGx1Z2luIGxpc3RlZCBpbiBgYHJlcXVpcmVkX3Bs
dWdpbnNgYCBpcyBtaXNzaW5nIG9yIGFuIHVua25vd24gY29uZmlnIGtleSBpcyB1c2VkIHdpdGgg
YGAtLXN0cmljdC1jb25maWdgYCwgYSBzaW1wbGUgZXJyb3IgbWVzc2FnZSBpcyBub3cgc2hvd24g
aW5zdGVhZCBvZiBhIHN0YWNrdHJhY2UuCisKKworLSBgIzc2ODUgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzY4NT5gXzogQWRkZWQgdHdvIG5ldyBhdHRyaWJ1
dGVzIDphdHRyOmByb290cGF0aCA8X3B5dGVzdC5jb25maWcuQ29uZmlnLnJvb3RwYXRoPmAgYW5k
IDphdHRyOmBpbmlwYXRoIDxfcHl0ZXN0LmNvbmZpZy5Db25maWcuaW5pcGF0aD5gIHRvIDpjbGFz
czpgQ29uZmlnIDxfcHl0ZXN0LmNvbmZpZy5Db25maWc+YC4KKyAgVGhlc2UgYXR0cmlidXRlcyBh
cmUgOmNsYXNzOmBwYXRobGliLlBhdGhgIHZlcnNpb25zIG9mIHRoZSBleGlzdGluZyA6YXR0cjpg
cm9vdGRpciA8X3B5dGVzdC5jb25maWcuQ29uZmlnLnJvb3RkaXI+YCBhbmQgOmF0dHI6YGluaWZp
bGUgPF9weXRlc3QuY29uZmlnLkNvbmZpZy5pbmlmaWxlPmAgYXR0cmlidXRlcywKKyAgYW5kIHNo
b3VsZCBiZSBwcmVmZXJyZWQgb3ZlciB0aGVtIHdoZW4gcG9zc2libGUuCisKKworLSBgIzc3ODAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzc4MD5gXzogUHVi
bGljIGNsYXNzZXMgd2hpY2ggYXJlIG5vdCBkZXNpZ25lZCB0byBiZSBpbmhlcml0ZWQgZnJvbSBh
cmUgbm93IG1hcmtlZCBgQGZpbmFsIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkv
dHlwaW5nLmh0bWwjdHlwaW5nLmZpbmFsPmBfLgorICBDb2RlIHdoaWNoIGluaGVyaXRzIGZyb20g
dGhlc2UgY2xhc3NlcyB3aWxsIHRyaWdnZXIgYSB0eXBlLWNoZWNraW5nIChlLmcuIG15cHkpIGVy
cm9yLCBidXQgd2lsbCBzdGlsbCB3b3JrIGluIHJ1bnRpbWUuCisgIEN1cnJlbnRseSB0aGUgYGBm
aW5hbGBgIGRlc2lnbmF0aW9uIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgQVBJIFJlZmVyZW5jZSBi
dXQgaG9wZWZ1bGx5IHdpbGwgaW4gdGhlIGZ1dHVyZS4KKworCisKK0J1ZyBGaXhlcworLS0tLS0t
LS0tCisKKy0gYCMxOTUzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE5NTM+YF86IEZpeGVkIGVycm9yIHdoZW4gb3ZlcndyaXRpbmcgYSBwYXJhbWV0cml6ZWQg
Zml4dHVyZSwgd2hpbGUgYWxzbyByZXVzaW5nIHRoZSBzdXBlciBmaXh0dXJlIHZhbHVlLgorCisg
IC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgIyBjb25mdGVzdC5weQorICAgICAgaW1w
b3J0IHB5dGVzdAorCisKKyAgICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzEsIDJdKQorICAg
ICAgZGVmIGZvbyhyZXF1ZXN0KToKKyAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQorCisK
KyAgICAgICMgdGVzdF9mb28ucHkKKyAgICAgIGltcG9ydCBweXRlc3QKKworCisgICAgICBAcHl0
ZXN0LmZpeHR1cmUKKyAgICAgIGRlZiBmb28oZm9vKToKKyAgICAgICAgICByZXR1cm4gZm9vICog
MgorCisKKy0gYCM0OTg0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzQ5ODQ+YF86IEZpeGVkIGFuIGludGVybmFsIGVycm9yIGNyYXNoIHdpdGggYGBJbmRleEVy
cm9yOiBsaXN0IGluZGV4IG91dCBvZiByYW5nZWBgIHdoZW4KKyAgY29sbGVjdGluZyBhIG1vZHVs
ZSB3aGljaCBzdGFydHMgd2l0aCBhIGRlY29yYXRlZCBmdW5jdGlvbiwgdGhlIGRlY29yYXRvcgor
ICByYWlzZXMsIGFuZCBhc3NlcnRpb24gcmV3cml0aW5nIGlzIGVuYWJsZWQuCisKKworLSBgIzc1
OTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzU5MT5gXzog
cHlsaW50IHNob3VsZG4ndCBjb21wbGFpbiBhbnltb3JlIGFib3V0IHVuaW1wbGVtZW50ZWQgYWJz
dHJhY3QgbWV0aG9kcyB3aGVuIGluaGVyaXRpbmcgZnJvbSA6cmVmOmBGaWxlIDxub24tcHl0aG9u
IHRlc3RzPmAuCisKKworLSBgIzc2MjggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNzYyOD5gXzogRml4ZWQgdGVzdCBjb2xsZWN0aW9uIHdoZW4gYSBmdWxsIHBh
dGggd2l0aG91dCBhIGRyaXZlIGxldHRlciB3YXMgcGFzc2VkIHRvIHB5dGVzdCBvbiBXaW5kb3dz
IChmb3IgZXhhbXBsZSBgYFxwcm9qZWN0c1x0ZXN0c1x0ZXN0LnB5YGAgaW5zdGVhZCBvZiBgYGM6
XHByb2plY3RzXHRlc3RzXHB5dGVzdC5weWBgKS4KKworCistIGAjNzYzOCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NjM4PmBfOiBGaXggaGFuZGxpbmcgb2Yg
Y29tbWFuZC1saW5lIG9wdGlvbnMgdGhhdCBhcHBlYXIgYXMgcGF0aHMgYnV0IHRyaWdnZXIgYW4g
T1MtbGV2ZWwgc3ludGF4IGVycm9yIG9uIFdpbmRvd3MsIHN1Y2ggYXMgdGhlIG9wdGlvbnMgdXNl
ZCBpbnRlcm5hbGx5IGJ5IGBgcHl0ZXN0LXhkaXN0YGAuCisKKworLSBgIzc3NDIgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzc0Mj5gXzogRml4ZWQgSU5URVJO
QUxFUlJPUiB3aGVuIGFjY2Vzc2luZyBsb2NhbHMgLyBnbG9iYWxzIHdpdGggZmF1bHR5IGBgZXhl
Y2BgLgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCistIGAjMTQ3NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xNDc3PmBfOiBSZW1vdmVkIGZhcS5yc3QgYW5kIGl0cyByZWZlcmVuY2UgaW4gY29udGVudHMu
cnN0LgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworLSBgIzc1MzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNzUzNj5gXzogVGhlIGludGVybmFsIGBganVuaXR4bWxgYCBwbHVnaW4gaGFzIHJld3Jp
dHRlbiB0byB1c2UgYGB4bWwuZXRyZWUuRWxlbWVudFRyZWVgYC4KKyAgVGhlIG9yZGVyIG9mIGF0
dHJpYnV0ZXMgaW4gWE1MIGVsZW1lbnRzIG1pZ2h0IGRpZmZlci4gU29tZSB1bm5lZWRlZCBlc2Nh
cGluZyBpcworICBubyBsb25nZXIgcGVyZm9ybWVkLgorCisKKy0gYCM3NTg3IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc1ODc+YF86IFRoZSBkZXBlbmRlbmN5
IG9uIHRoZSBgYG1vcmUtaXRlcnRvb2xzYGAgcGFja2FnZSBoYXMgYmVlbiByZW1vdmVkLgorCisK
Ky0gYCM3NjMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc2
MzE+YF86IFRoZSByZXN1bHQgdHlwZSBvZiA6bWV0aDpgY2FwZmQucmVhZG91dGVycigpIDxfcHl0
ZXN0LmNhcHR1cmUuQ2FwdHVyZUZpeHR1cmUucmVhZG91dGVycj5gIChhbmQgc2ltaWxhcikgaXMg
bm8gbG9uZ2VyIGEgbmFtZWR0dXBsZSwKKyAgYnV0IHNob3VsZCBiZWhhdmUgbGlrZSBvbmUgaW4g
YWxsIHJlc3BlY3RzLiBUaGlzIHdhcyBkb25lIGZvciB0ZWNobmljYWwgcmVhc29ucy4KKworCist
IGAjNzY3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83Njcx
PmBfOiBXaGVuIGNvbGxlY3RpbmcgdGVzdHMsIHB5dGVzdCBmaW5kcyB0ZXN0IGNsYXNzZXMgYW5k
IGZ1bmN0aW9ucyBieSBleGFtaW5pbmcgdGhlCisgIGF0dHJpYnV0ZXMgb2YgcHl0aG9uIG9iamVj
dHMgKG1vZHVsZXMsIGNsYXNzZXMgYW5kIGluc3RhbmNlcykuIFRvIHNwZWVkIHVwIHRoaXMKKyAg
cHJvY2VzcywgcHl0ZXN0IG5vdyBpZ25vcmVzIGJ1aWx0aW4gYXR0cmlidXRlcyAobGlrZSBgYF9f
Y2xhc3NfX2BgLAorICBgYF9fZGVsYXR0cl9fYGAgYW5kIGBgX19uZXdfX2BgKSB3aXRob3V0IGNv
bnN1bHRpbmcgdGhlIDpjb25mdmFsOmBweXRob25fY2xhc3Nlc2AgYW5kCisgIDpjb25mdmFsOmBw
eXRob25fZnVuY3Rpb25zYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHdpdGhvdXQgcGFzc2lu
ZyB0aGVtIHRvIHBsdWdpbnMKKyAgdXNpbmcgdGhlIDpmdW5jOmBweXRlc3RfcHljb2xsZWN0X21h
a2VpdGVtIDxfcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0+YCBob29r
LgorCisKK3B5dGVzdCA2LjAuMiAoMjAyMC0wOS0wNCkKKz09PT09PT09PT09PT09PT09PT09PT09
PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzcxNDggPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE0OD5gXzogRml4ZWQgYGAtLWxvZy1jbGlgYCBw
b3RlbnRpYWxseSBjYXVzaW5nIHVucmVsYXRlZCBgYHByaW50YGAgb3V0cHV0IHRvIGJlIHN3YWxs
b3dlZC4KKworCistIGAjNzY3MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy83NjcyPmBfOiBGaXhlZCBsb2ctY2FwdHVyaW5nIGxldmVsIHJlc3RvcmVkIGluY29y
cmVjdGx5IGlmIGBgY2FwbG9nLnNldF9sZXZlbGBgIGlzIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4K
KworCistIGAjNzY4NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy83Njg2PmBfOiBGaXhlZCBgTm90U2V0VHlwZS50b2tlbmAgYmVpbmcgdXNlZCBhcyB0aGUgcGFy
YW1ldGVyIElEIHdoZW4gdGhlIHBhcmFtZXRyaXphdGlvbiBsaXN0IGlzIGVtcHR5LgorICBSZWdy
ZXNzZWQgaW4gcHl0ZXN0IDYuMC4wLgorCisKKy0gYCM3NzA3IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc3MDc+YF86IEZpeCBpbnRlcm5hbCBlcnJvciB3aGVu
IGhhbmRsaW5nIHNvbWUgZXhjZXB0aW9ucyB0aGF0IGNvbnRhaW4gbXVsdGlwbGUgbGluZXMgb3Ig
dGhlIHN0eWxlIHVzZXMgbXVsdGlwbGUgbGluZXMgKGBgLS10Yj1saW5lYGAgZm9yIGV4YW1wbGUp
LgorCisKK3B5dGVzdCA2LjAuMSAoMjAyMC0wNy0zMCkKKz09PT09PT09PT09PT09PT09PT09PT09
PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzczOTQgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM5ND5gXzogUGFzc2luZyBhbiBlbXB0eSBgYGhl
bHBgYCB2YWx1ZSB0byBgYFBhcnNlci5hZGRfb3B0aW9uYGAgaXMgbm93IGFjY2VwdGVkIGluc3Rl
YWQgb2YgY3Jhc2hpbmcgd2hlbiBydW5uaW5nIGBgcHl0ZXN0IC0taGVscGBgLgorICBQYXNzaW5n
IGBgTm9uZWBgIHJhaXNlcyBhIG1vcmUgaW5mb3JtYXRpdmUgYGBUeXBlRXJyb3JgYC4KKworCist
IGAjNzU1OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83NTU4
PmBfOiBGaXggcHlsaW50IGBgbm90LWNhbGxhYmxlYGAgbGludCBvbiBgYHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKClgYCBhbmQgdGhlIG90aGVyIGJ1aWx0aW4gbWFya3M6CisgIGBgc2tpcGBgLCBg
YHNraXBpZmBgLCBgYHhmYWlsYGAsIGBgdXNlZml4dHVyZXNgYCwgYGBmaWx0ZXJ3YXJuaW5nc2Bg
LgorCisKKy0gYCM3NTU5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzc1NTk+YF86IEZpeCByZWdyZXNzaW9uIGluIHBsdWdpbnMgdXNpbmcgYGBUZXN0UmVwb3J0
LmxvbmdyZXBydGV4dGBgIChzdWNoIGFzIGBgcHl0ZXN0LWh0bWxgYCkgd2hlbiBgYFRlc3RSZXBv
cnQubG9uZ3JlcHJgYCBpcyBub3QgYSBzdHJpbmcuCisKKworLSBgIzc1NjkgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzU2OT5gXzogRml4IGxvZ2dpbmcgY2Fw
dHVyZSBoYW5kbGVyJ3MgbGV2ZWwgbm90IHJlc2V0IG9uIHRlYXJkb3duIGFmdGVyIGEgY2FsbCB0
byBgYGNhcGxvZy5zZXRfbGV2ZWwoKWBgLgorCisKK3B5dGVzdCA2LjAuMCAoMjAyMC0wNy0yOCkK
Kz09PT09PT09PT09PT09PT09PT09PT09PT0KKworKCoqUGxlYXNlIHNlZSB0aGUgZnVsbCBzZXQg
b2YgY2hhbmdlcyBmb3IgdGhpcyByZWxlYXNlIGFsc28gaW4gdGhlIDYuMC4wcmMxIG5vdGVzIGJl
bG93KiopCisKK0JyZWFraW5nIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzU1ODQg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTU4ND5gXzogKipQ
eXRlc3REZXByZWNhdGlvbldhcm5pbmcgYXJlIG5vdyBlcnJvcnMgYnkgZGVmYXVsdC4qKgorCisg
IEZvbGxvd2luZyBvdXIgcGxhbiB0byByZW1vdmUgZGVwcmVjYXRlZCBmZWF0dXJlcyB3aXRoIGFz
IGxpdHRsZSBkaXNydXB0aW9uIGFzCisgIHBvc3NpYmxlLCBhbGwgd2FybmluZ3Mgb2YgdHlwZSBg
YFB5dGVzdERlcHJlY2F0aW9uV2FybmluZ2BgIG5vdyBnZW5lcmF0ZSBlcnJvcnMKKyAgaW5zdGVh
ZCBvZiB3YXJuaW5nIG1lc3NhZ2VzLgorCisgICoqVGhlIGFmZmVjdGVkIGZlYXR1cmVzIHdpbGwg
YmUgZWZmZWN0aXZlbHkgcmVtb3ZlZCBpbiBweXRlc3QgNi4xKiosIHNvIHBsZWFzZSBjb25zdWx0
IHRoZQorICBgRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vbGF0ZXN0L2RlcHJlY2F0aW9ucy5odG1sPmBfXworICBzZWN0aW9uIGluIHRoZSBkb2Nz
IGZvciBkaXJlY3Rpb25zIG9uIGhvdyB0byB1cGRhdGUgZXhpc3RpbmcgY29kZS4KKworICBJbiB0
aGUgcHl0ZXN0IGBgNi4wLlhgYCBzZXJpZXMsIGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUg
ZXJyb3JzIGJhY2sgaW50byB3YXJuaW5ncyBhcyBhCisgIHN0b3BnYXAgbWVhc3VyZSBieSBhZGRp
bmcgdGhpcyB0byB5b3VyIGBgcHl0ZXN0LmluaWBgIGZpbGU6CisKKyAgLi4gY29kZS1ibG9jazo6
IGluaQorCisgICAgICBbcHl0ZXN0XQorICAgICAgZmlsdGVyd2FybmluZ3MgPQorICAgICAgICAg
IGlnbm9yZTo6cHl0ZXN0LlB5dGVzdERlcHJlY2F0aW9uV2FybmluZworCisgIEJ1dCB0aGlzIHdp
bGwgc3RvcCB3b3JraW5nIHdoZW4gcHl0ZXN0IGBgNi4xYGAgaXMgcmVsZWFzZWQuCisKKyAgKipJ
ZiB5b3UgaGF2ZSBjb25jZXJucyoqIGFib3V0IHRoZSByZW1vdmFsIG9mIGEgc3BlY2lmaWMgZmVh
dHVyZSwgcGxlYXNlIGFkZCBhCisgIGNvbW1lbnQgdG8gYCM1NTg0IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1ODQ+YF9fLgorCisKKy0gYCM3NDcyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc0NzI+YF86IFRoZSBgYGV4
ZWNfKClgYCBhbmQgYGBpc190cnVlKClgYCBtZXRob2RzIG9mIGBgX3B5dGVzdC5fY29kZS5GcmFt
ZWBgIGhhdmUgYmVlbiByZW1vdmVkLgorCisKKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCM3
NDY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc0NjQ+YF86
IEFkZGVkIHN1cHBvcnQgZm9yIDplbnZ2YXI6YE5PX0NPTE9SYCBhbmQgOmVudnZhcjpgRk9SQ0Vf
Q09MT1JgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjb250cm9sIGNvbG9yZWQgb3V0cHV0Lgor
CisKKworSW1wcm92ZW1lbnRzCistLS0tLS0tLS0tLS0KKworLSBgIzc0NjcgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzQ2Nz5gXzogYGAtLWxvZy1maWxlYGAg
Q0xJIG9wdGlvbiBhbmQgYGBsb2dfZmlsZWBgIGluaSBtYXJrZXIgbm93IGNyZWF0ZSBzdWJkaXJl
Y3RvcmllcyBpZiBuZWVkZWQuCisKKworLSBgIzc0ODkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzQ4OT5gXzogVGhlIDpmdW5jOmBweXRlc3QucmFpc2VzYCBm
dW5jdGlvbiBoYXMgYSBjbGVhcmVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBgYG1hdGNoYGAgZXF1YWxz
IHRoZSBvYnRhaW5lZCBzdHJpbmcgYnV0IGlzIG5vdCBhIHJlZ2V4IG1hdGNoLiBJbiB0aGlzIGNh
c2UgaXQgaXMgc3VnZ2VzdGVkIHRvIGVzY2FwZSB0aGUgcmVnZXguCisKKworCitCdWcgRml4ZXMK
Ky0tLS0tLS0tLQorCistIGAjNzM5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy83MzkyPmBfOiBGaXggdGhlIHJlcG9ydGVkIGxvY2F0aW9uIG9mIHRlc3RzIHNr
aXBwZWQgd2l0aCBgYEBweXRlc3QubWFyay5za2lwYGAgd2hlbiBgYC0tcnVueGZhaWxgYCBpcyB1
c2VkLgorCisKKy0gYCM3NDkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzc0OTE+YF86IDpmaXh0dXJlOmB0bXBkaXJgIGFuZCA6Zml4dHVyZTpgdG1wX3BhdGhg
IG5vIGxvbmdlciByYWlzZSBhbiBlcnJvciBpZiB0aGUgbG9jayB0byBjaGVjayBmb3IKKyAgc3Rh
bGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGlzIG5vdCBhY2Nlc3NpYmxlLgorCisKKy0gYCM3NTE3
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc1MTc+YF86IFBy
ZXNlcnZlIGxpbmUgZW5kaW5ncyB3aGVuIGNhcHR1cmVkIHZpYSBgYGNhcGZkYGAuCisKKworLSBg
Izc1MzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzUzND5g
XzogUmVzdG9yZWQgdGhlIHByZXZpb3VzIGZvcm1hdHRpbmcgb2YgYGBUcmFjZWJhY2tFbnRyeS5f
X3N0cl9fYGAgd2hpY2ggd2FzIGNoYW5nZWQgYnkgYWNjaWRlbnQuCisKKworCitJbXByb3ZlZCBE
b2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM3NDIyIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc0MjI+YF86IENsYXJpZmllZCB3
aGVuIHRoZSBgYHVzZWZpeHR1cmVzYGAgbWFyayBjYW4gYXBwbHkgZml4dHVyZXMgdG8gdGVzdC4K
KworCistIGAjNzQ0MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy83NDQxPmBfOiBBZGQgYSBub3RlIGFib3V0IGBgLXFgYCBvcHRpb24gdXNlZCBpbiBnZXR0aW5n
IHN0YXJ0ZWQgZ3VpZGUuCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCistIGAjNzM4OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy83Mzg5PmBfOiBGaXh0dXJlIHNjb3BlIGBgcGFja2FnZWBgIGlzIG5v
IGxvbmdlciBjb25zaWRlcmVkIGV4cGVyaW1lbnRhbC4KKworCitweXRlc3QgNi4wLjByYzEgKDIw
MjAtMDctMDgpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JyZWFraW5nIENoYW5n
ZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzEzMTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTMxNj5gXzogYGBUZXN0UmVwb3J0LmxvbmdyZXByYGAgaXMg
bm93IGFsd2F5cyBhbiBpbnN0YW5jZSBvZiBgYFJlcHJFeGNlcHRpb25JbmZvYGAuIFByZXZpb3Vz
bHkgaXQgd2FzIGEgYGBzdHJgYCB3aGVuIGEgdGVzdCBmYWlsZWQgd2l0aCBgYHB5dGVzdC5mYWls
KC4uLiwgcHl0cmFjZT1GYWxzZSlgYC4KKworCistIGAjNTk2NSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTY1PmBfOiBzeW1saW5rcyBhcmUgbm8gbG9uZ2Vy
IHJlc29sdmVkIGR1cmluZyBjb2xsZWN0aW9uIGFuZCBtYXRjaGluZyBgY29uZnRlc3QucHlgIGZp
bGVzIHdpdGggdGVzdCBmaWxlIHBhdGhzLgorCisgIFJlc29sdmluZyBzeW1saW5rcyBmb3IgdGhl
IGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBkdXJpbmcgY29sbGVjdGlvbiB3YXMgaW50cm9kdWNlZCBh
cyBhIGJ1Z2ZpeCBpbiAzLjkuMCwgYnV0IGl0IGFjdHVhbGx5IGlzIGEgbmV3IGZlYXR1cmUgd2hp
Y2ggaGFkIHVuZm9ydHVuYXRlIGNvbnNlcXVlbmNlcyBpbiBXaW5kb3dzIGFuZCBzdXJwcmlzaW5n
IHJlc3VsdHMgaW4gb3RoZXIgcGxhdGZvcm1zLgorCisgIFRoZSB0ZWFtIGRlY2lkZWQgdG8gc3Rl
cCBiYWNrIG9uIHJlc29sdmluZyBzeW1saW5rcyBhdCBhbGwsIHBsYW5uaW5nIHRvIHJldmlldyB0
aGlzIGluIHRoZSBmdXR1cmUgd2l0aCBhIG1vcmUgc29saWQgc29sdXRpb24gKHNlZSBkaXNjdXNz
aW9uIGluCisgIGAjNjUyMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1
bGwvNjUyMz5gX18gZm9yIGRldGFpbHMpLgorCisgIFRoaXMgbWlnaHQgYnJlYWsgdGVzdCBzdWl0
ZXMgd2hpY2ggbWFkZSB1c2Ugb2YgdGhpcyBmZWF0dXJlOyB0aGUgZml4IGlzIHRvIGNyZWF0ZSBh
IHN5bWxpbmsKKyAgZm9yIHRoZSBlbnRpcmUgdGVzdCB0cmVlLCBhbmQgbm90IG9ubHkgdG8gcGFy
dGlhbCBmaWxlcy90cmVzcyBhcyBpdCB3YXMgcG9zc2libGUgcHJldmlvdXNseS4KKworCistIGAj
NjUwNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NTA1PmBf
OiBgYFRlc3RkaXIucnVuKCkucGFyc2VvdXRjb21lcygpYGAgbm93IGFsd2F5cyByZXR1cm5zIHRo
ZSBwYXJzZWQgbm91bnMgaW4gcGx1cmFsIGZvcm0uCisKKyAgT3JpZ2luYWxseSBgYHBhcnNlb3V0
Y29tZXMoKWBgIHdvdWxkIGFsd2F5cyByZXR1cm5zIHRoZSBub3VucyBpbiBwbHVyYWwgZm9ybSwg
YnV0IGEgY2hhbmdlCisgIG1lYW50IHRvIGltcHJvdmUgdGhlIHRlcm1pbmFsIHN1bW1hcnkgYnkg
dXNpbmcgc2luZ3VsYXIgZm9ybSBzaW5nbGUgaXRlbXMgKGBgMSB3YXJuaW5nYGAgb3IgYGAxIGVy
cm9yYGApCisgIGNhdXNlZCBhbiB1bmludGVuZGVkIHJlZ3Jlc3Npb24gYnkgY2hhbmdpbmcgdGhl
IGtleXMgcmV0dXJuZWQgYnkgYGBwYXJzZW91dGNvbWVzKClgYC4KKworICBOb3cgdGhlIEFQSSBn
dWFyYW50ZWVzIHRvIGFsd2F5cyByZXR1cm4gdGhlIHBsdXJhbCBmb3JtLCBzbyBjYWxscyBsaWtl
IHRoaXM6CisKKyAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgpCisgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKGVycm9yPTEpCisK
KyAgTmVlZCB0byBiZSBjaGFuZ2VkIHRvOgorCisKKyAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgor
CisgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICByZXN1bHQuYXNzZXJ0
X291dGNvbWVzKGVycm9ycz0xKQorCisKKy0gYCM2OTAzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5MDM+YF86IFRoZSBgYG9zLmR1cCgpYGAgZnVuY3Rpb24g
aXMgbm93IGFzc3VtZWQgdG8gZXhpc3QuIFdlIGFyZSBub3QgYXdhcmUgb2YgYW55CisgIHN1cHBv
cnRlZCBQeXRob24gMyBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggZG8gbm90IHByb3ZpZGUgaXQuCisK
KworLSBgIzcwNDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NzA0MD5gXzogYGAta2BgIG5vIGxvbmdlciBtYXRjaGVzIGFnYWluc3QgdGhlIG5hbWVzIG9mIHRo
ZSBkaXJlY3RvcmllcyBvdXRzaWRlIHRoZSB0ZXN0IHNlc3Npb24gcm9vdC4KKworICBBbHNvLCBg
YHB5dGVzdC5QYWNrYWdlLm5hbWVgYCBpcyBub3cganVzdCB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0
b3J5IGNvbnRhaW5pbmcgdGhlIHBhY2thZ2UncworICBgYF9faW5pdF9fLnB5YGAgZmlsZSwgaW5z
dGVhZCBvZiB0aGUgZnVsbCBwYXRoLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIG90
aGVyIG5vZGVzCisgIGFyZSBuYW1lZCwgYW5kIGFsc28gb25lIG9mIHRoZSByZWFzb25zIHdoeSBg
YC1rYGAgd291bGQgbWF0Y2ggYWdhaW5zdCBhbnkgZGlyZWN0b3J5IGNvbnRhaW5pbmcKKyAgdGhl
IHRlc3Qgc3VpdGUuCisKKworLSBgIzcxMjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNzEyMj5gXzogRXhwcmVzc2lvbnMgZ2l2ZW4gdG8gdGhlIGBgLW1gYCBh
bmQgYGAta2BgIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBldmFsdWF0ZWQgdXNpbmcgUHl0aG9uJ3Mg
OmZ1bmM6YGV2YWxgLgorICBUaGUgZm9ybWF0IHN1cHBvcnRzIGBgb3JgYCwgYGBhbmRgYCwgYGBu
b3RgYCwgcGFyZW50aGVzaXMgYW5kIGdlbmVyYWwgaWRlbnRpZmllcnMgdG8gbWF0Y2ggYWdhaW5z
dC4KKyAgUHl0aG9uIGNvbnN0YW50cywga2V5d29yZHMgb3Igb3RoZXIgb3BlcmF0b3JzIGFyZSBu
byBsb25nZXIgZXZhbHVhdGVkIGRpZmZlcmVudGx5LgorCisKKy0gYCM3MTM1IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcxMzU+YF86IFB5dGVzdCBub3cgdXNl
cyBpdHMgb3duIGBgVGVybWluYWxXcml0ZXJgYCBjbGFzcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBv
bmUgZnJvbSB0aGUgYGBweWBgIGxpYnJhcnkuCisgIFBsdWdpbnMgZ2VuZXJhbGx5IGFjY2VzcyB0
aGlzIGNsYXNzIHRocm91Z2ggYGBUZXJtaW5hbFJlcG9ydGVyLndyaXRlcmBgLCBgYFRlcm1pbmFs
UmVwb3J0ZXIud3JpdGUoKWBgCisgIChhbmQgc2ltaWxhciBtZXRob2RzKSwgb3IgYGBfcHl0ZXN0
LmNvbmZpZy5jcmVhdGVfdGVybWluYWxfd3JpdGVyKClgYC4KKworICBUaGUgZm9sbG93aW5nIGJy
ZWFraW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorCisgIC0gT3V0cHV0IChgYHdyaXRlKClgYCBtZXRo
b2QgYW5kIG90aGVycykgbm8gbG9uZ2VyIGZsdXNoIGltcGxpY2l0bHk7IHRoZSBmbHVzaGluZyBi
ZWhhdmlvcgorICAgIG9mIHRoZSB1bmRlcmx5aW5nIGZpbGUgaXMgcmVzcGVjdGVkLiBUbyBmbHVz
aCBleHBsaWNpdGx5IChmb3IgZXhhbXBsZSwgaWYgeW91CisgICAgd2FudCBvdXRwdXQgdG8gYmUg
c2hvd24gYmVmb3JlIGFuIGVuZC1vZi1saW5lIGlzIHByaW50ZWQpLCB1c2UgYGB3cml0ZShmbHVz
aD1UcnVlKWBgIG9yCisgICAgYGB0ZXJtaW5hbF93cml0ZXIuZmx1c2goKWBgLgorICAtIEV4cGxp
Y2l0IFdpbmRvd3MgY29uc29sZSBzdXBwb3J0IHdhcyByZW1vdmVkLCBkZWxlZ2F0ZWQgdG8gdGhl
IGNvbG9yYW1hIGxpYnJhcnkuCisgIC0gU3VwcG9ydCBmb3Igd3JpdGluZyBgYGJ5dGVzYGAgd2Fz
IHJlbW92ZWQuCisgIC0gVGhlIGBgcmVsaW5lYGAgbWV0aG9kIGFuZCBgYGNoYXJzX29uX2N1cnJl
bnRfbGluZWBgIHByb3BlcnR5IHdlcmUgcmVtb3ZlZC4KKyAgLSBUaGUgYGBzdHJpbmdpb2BgIGFu
ZCBgYGVuY29kaW5nYGAgYXJndW1lbnRzIHdhcyByZW1vdmVkLgorICAtIFN1cHBvcnQgZm9yIHBh
c3NpbmcgYSBjYWxsYWJsZSBpbnN0ZWFkIG9mIGEgZmlsZSB3YXMgcmVtb3ZlZC4KKworCistIGAj
NzIyNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjI0PmBf
OiBUaGUgYGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXJgIGFuZCBgaXRlbS5jYXRjaF9sb2dfaGFuZGxl
cnNgIGF0dHJpYnV0ZXMsIHNldCBieSB0aGUKKyAgbG9nZ2luZyBwbHVnaW4gYW5kIG5ldmVyIG1l
YW50IHRvIGJlIHB1YmxpYywgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUuCisKKyAgVGhlIGRlcHJl
Y2F0ZWQgYGAtLW5vLXByaW50LWxvZ3NgYCBvcHRpb24gYW5kIGBgbG9nX3ByaW50YGAgaW5pIG9w
dGlvbiBhcmUgcmVtb3ZlZC4gVXNlIGBgLS1zaG93LWNhcHR1cmVgYCBpbnN0ZWFkLgorCisKKy0g
YCM3MjI2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcyMjY+
YF86IFJlbW92ZWQgdGhlIHVudXNlZCBgYGFyZ3NgYCBwYXJhbWV0ZXIgZnJvbSBgYHB5dGVzdC5G
dW5jdGlvbi5fX2luaXRfX2BgLgorCisKKy0gYCM3NDE4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc0MTg+YF86IFJlbW92ZWQgdGhlIGBweXRlc3RfZG9jdGVz
dF9wcmVwYXJlX2NvbnRlbnRgIGhvb2sgc3BlY2lmaWNhdGlvbi4gVGhpcyBob29rCisgIGhhc24n
dCBiZWVuIHRyaWdnZXJlZCBieSBweXRlc3QgZm9yIGF0IGxlYXN0IDEwIHllYXJzLgorCisKKy0g
YCM3NDM4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc0Mzg+
YF86IFNvbWUgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gdGhlIGludGVybmFsIGBgX3B5dGVzdC5fY29k
ZS5zb3VyY2VgYCwgbGlzdGVkIGhlcmUKKyAgZm9yIHRoZSBiZW5lZml0IG9mIHBsdWdpbiBhdXRo
b3JzIHdobyBtYXkgYmUgdXNpbmcgaXQ6CisKKyAgLSBUaGUgYGBkZWluZGVudGBgIGFyZ3VtZW50
IHRvIGBgU291cmNlKClgYCBoYXMgYmVlbiByZW1vdmVkLCBub3cgaXQgaXMgYWx3YXlzIHRydWUu
CisgIC0gU3VwcG9ydCBmb3IgemVybyBvciBtdWx0aXBsZSBhcmd1bWVudHMgdG8gYGBTb3VyY2Uo
KWBgIGhhcyBiZWVuIHJlbW92ZWQuCisgIC0gU3VwcG9ydCBmb3IgY29tcGFyaW5nIGBgU291cmNl
YGAgd2l0aCBhbiBgYHN0cmBgIGhhcyBiZWVuIHJlbW92ZWQuCisgIC0gVGhlIG1ldGhvZHMgYGBT
b3VyY2UuaXNwYXJzZWFibGUoKWBgIGFuZCBgYFNvdXJjZS5wdXRhcm91bmQoKWBgIGhhdmUgYmVl
biByZW1vdmVkLgorICAtIFRoZSBtZXRob2QgYGBTb3VyY2UuY29tcGlsZSgpYGAgYW5kIGZ1bmN0
aW9uIGBgX3B5dGVzdC5fY29kZS5jb21waWxlKClgYCBoYXZlCisgICAgYmVlbiByZW1vdmVkOyB1
c2UgcGxhaW4gYGBjb21waWxlKClgYCBpbnN0ZWFkLgorICAtIFRoZSBmdW5jdGlvbiBgYF9weXRl
c3QuX2NvZGUuc291cmNlLmdldHNvdXJjZSgpYGAgaGFzIGJlZW4gcmVtb3ZlZDsgdXNlCisgICAg
YGBTb3VyY2UoKWBgIGRpcmVjdGx5IGluc3RlYWQuCisKKworCitEZXByZWNhdGlvbnMKKy0tLS0t
LS0tLS0tLQorCistIGAjNzIxMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy83MjEwPmBfOiBUaGUgc3BlY2lhbCBgYC1rICctZXhwcidgYCBzeW50YXggdG8gYGAt
a2BgIGlzIGRlcHJlY2F0ZWQuIFVzZSBgYC1rICdub3QgZXhwcidgYAorICBpbnN0ZWFkLgorCisg
IFRoZSBzcGVjaWFsIGBgLWsgJ2V4cHI6J2BgIHN5bnRheCB0byBgYC1rYGAgaXMgZGVwcmVjYXRl
ZC4gUGxlYXNlIG9wZW4gYW4gaXNzdWUKKyAgaWYgeW91IHVzZSB0aGlzIGFuZCB3YW50IGEgcmVw
bGFjZW1lbnQuCisKKy0gYCM0MDQ5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQwNDk+YF86IGBgcHl0ZXN0X3dhcm5pbmdfY2FwdHVyZWRgYCBpcyBkZXByZWNh
dGVkIGluIGZhdm9yIG9mIHRoZSBgYHB5dGVzdF93YXJuaW5nX3JlY29yZGVkYGAgaG9vay4KKwor
CitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzE1NTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU1Nj5gXzogcHl0ZXN0IG5vdyBzdXBwb3J0cyBgYHB5cHJv
amVjdC50b21sYGAgZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24uCisKKyAgVGhlIGNvbmZpZ3VyYXRp
b24gb3B0aW9ucyBpcyBzaW1pbGFyIHRvIHRoZSBvbmUgYXZhaWxhYmxlIGluIG90aGVyIGZvcm1h
dHMsIGJ1dCBtdXN0IGJlIGRlZmluZWQKKyAgaW4gYSBgYFt0b29sLnB5dGVzdC5pbmlfb3B0aW9u
c11gYCB0YWJsZSB0byBiZSBwaWNrZWQgdXAgYnkgcHl0ZXN0OgorCisgIC4uIGNvZGUtYmxvY2s6
OiB0b21sCisKKyAgICAgICMgcHlwcm9qZWN0LnRvbWwKKyAgICAgIFt0b29sLnB5dGVzdC5pbmlf
b3B0aW9uc10KKyAgICAgIG1pbnZlcnNpb24gPSAiNi4wIgorICAgICAgYWRkb3B0cyA9ICItcmEg
LXEiCisgICAgICB0ZXN0cGF0aHMgPSBbCisgICAgICAgICAgInRlc3RzIiwKKyAgICAgICAgICAi
aW50ZWdyYXRpb24iLAorICAgICAgXQorCisgIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5k
IGBpbiB0aGUgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2N1c3RvbWl6
ZS5odG1sI2NvbmZpZ3VyYXRpb24tZmlsZS1mb3JtYXRzPmBfXy4KKworCistIGAjMzM0MiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzQyPmBfOiBweXRlc3Qg
bm93IGluY2x1ZGVzIGlubGluZSB0eXBlIGFubm90YXRpb25zIGFuZCBleHBvc2VzIHRoZW0gdG8g
dXNlciBwcm9ncmFtcy4KKyAgTW9zdCBvZiB0aGUgdXNlci1mYWNpbmcgQVBJIGlzIGNvdmVyZWQs
IGFzIHdlbGwgYXMgaW50ZXJuYWwgY29kZS4KKworICBJZiB5b3UgYXJlIHJ1bm5pbmcgYSB0eXBl
IGNoZWNrZXIgc3VjaCBhcyBteXB5IG9uIHlvdXIgdGVzdHMsIHlvdSBtYXkgc3RhcnQKKyAgbm90
aWNpbmcgdHlwZSBlcnJvcnMgaW5kaWNhdGluZyBpbmNvcnJlY3QgdXNhZ2UuIElmIHlvdSBydW4g
aW50byBhbiBlcnJvciB0aGF0CisgIHlvdSBiZWxpZXZlIHRvIGJlIGluY29ycmVjdCwgcGxlYXNl
IGxldCB1cyBrbm93IGluIGFuIGlzc3VlLgorCisgIFRoZSB0eXBlcyB3ZXJlIGRldmVsb3BlZCBh
Z2FpbnN0IG15cHkgdmVyc2lvbiAwLjc4MC4gVmVyc2lvbnMgYmVmb3JlIDAuNzUwCisgIGFyZSBr
bm93biBub3QgdG8gd29yay4gV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbi4g
T3RoZXIgdHlwZQorICBjaGVja2VycyBtYXkgd29yayBhcyB3ZWxsLCBidXQgdGhleSBhcmUgbm90
IG9mZmljaWFsbHkgdmVyaWZpZWQgdG8gd29yayBieQorICBweXRlc3QgeWV0LgorCisKKy0gYCM0
MDQ5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwNDk+YF86
IEludHJvZHVjZWQgYSBuZXcgaG9vayBuYW1lZCBgcHl0ZXN0X3dhcm5pbmdfcmVjb3JkZWRgIHRv
IGNvbnZleSBpbmZvcm1hdGlvbiBhYm91dCB3YXJuaW5ncyBjYXB0dXJlZCBieSB0aGUgaW50ZXJu
YWwgYHB5dGVzdGAgd2FybmluZ3MgcGx1Z2luLgorCisgIFRoaXMgaG9vayBpcyBtZWFudCB0byBy
ZXBsYWNlIGBweXRlc3Rfd2FybmluZ19jYXB0dXJlZGAsIHdoaWNoIGlzIGRlcHJlY2F0ZWQgYW5k
IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgorCisKKy0gYCM2NDcxIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0NzE+YF86IE5ldyBjb21t
YW5kLWxpbmUgZmxhZ3M6CisKKyAgKiBgLS1uby1oZWFkZXJgOiBkaXNhYmxlcyB0aGUgaW5pdGlh
bCBoZWFkZXIsIGluY2x1ZGluZyBwbGF0Zm9ybSwgdmVyc2lvbiwgYW5kIHBsdWdpbnMuCisgICog
YC0tbm8tc3VtbWFyeWA6IGRpc2FibGVzIHRoZSBmaW5hbCB0ZXN0IHN1bW1hcnksIGluY2x1ZGlu
ZyB3YXJuaW5ncy4KKworCistIGAjNjg1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy82ODU2PmBfOiBBIHdhcm5pbmcgaXMgbm93IHNob3duIHdoZW4gYW4gdW5r
bm93biBrZXkgaXMgcmVhZCBmcm9tIGEgY29uZmlnIElOSSBmaWxlLgorCisgIFRoZSBgLS1zdHJp
Y3QtY29uZmlnYCBmbGFnIGhhcyBiZWVuIGFkZGVkIHRvIHRyZWF0IHRoZXNlIHdhcm5pbmdzIGFz
IGVycm9ycy4KKworCistIGAjNjkwNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy82OTA2PmBfOiBBZGRlZCBgLS1jb2RlLWhpZ2hsaWdodGAgY29tbWFuZCBsaW5l
IG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBjb2RlIGhpZ2hsaWdodGluZyBpbiB0ZXJtaW5hbCBv
dXRwdXQuCisKKworLSBgIzcyNDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNzI0NT5gXzogTmV3IGBgLS1pbXBvcnQtbW9kZT1pbXBvcnRsaWJgYCBvcHRpb24g
dGhhdCB1c2VzIGBpbXBvcnRsaWIgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9p
bXBvcnRsaWIuaHRtbD5gX18gdG8gaW1wb3J0IHRlc3QgbW9kdWxlcy4KKworICBUcmFkaXRpb25h
bGx5IHB5dGVzdCB1c2VkIGBgX19pbXBvcnRfX2BgIHdoaWxlIGNoYW5naW5nIGBgc3lzLnBhdGhg
YCB0byBpbXBvcnQgdGVzdCBtb2R1bGVzICh3aGljaAorICBhbHNvIGNoYW5nZXMgYGBzeXMubW9k
dWxlc2BgIGFzIGEgc2lkZS1lZmZlY3QpLCB3aGljaCB3b3JrcyBidXQgaGFzIGEgbnVtYmVyIG9m
IGRyYXdiYWNrcywgbGlrZSByZXF1aXJpbmcgdGVzdCBtb2R1bGVzCisgIHRoYXQgZG9uJ3QgbGl2
ZSBpbiBwYWNrYWdlcyB0byBoYXZlIHVuaXF1ZSBuYW1lcyAoYXMgdGhleSBuZWVkIHRvIHJlc2lk
ZSB1bmRlciBhIHVuaXF1ZSBuYW1lIGluIGBgc3lzLm1vZHVsZXNgYCkuCisKKyAgYGAtLWltcG9y
dC1tb2RlPWltcG9ydGxpYmBgIHVzZXMgbW9yZSBmaW5lIGdyYWluZWQgaW1wb3J0IG1lY2hhbmlz
bXMgZnJvbSBgYGltcG9ydGxpYmBgIHdoaWNoIGRvbid0CisgIHJlcXVpcmUgcHl0ZXN0IHRvIGNo
YW5nZSBgYHN5cy5wYXRoYGAgb3IgYGBzeXMubW9kdWxlc2BgIGF0IGFsbCwgZWxpbWluYXRpbmcg
bXVjaCBvZiB0aGUgZHJhd2JhY2tzCisgIG9mIHRoZSBwcmV2aW91cyBtb2RlLgorCisgIFdlIGlu
dGVuZCB0byBtYWtlIGBgLS1pbXBvcnQtbW9kZT1pbXBvcnRsaWJgYCB0aGUgZGVmYXVsdCBpbiBm
dXR1cmUgdmVyc2lvbnMsIHNvIHVzZXJzIGFyZSBlbmNvdXJhZ2VkCisgIHRvIHRyeSB0aGUgbmV3
IG1vZGUgYW5kIHByb3ZpZGUgZmVlZGJhY2sgKGJvdGggcG9zaXRpdmUgb3IgbmVnYXRpdmUpIGlu
IGlzc3VlIGAjNzI0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy83MjQ1PmBfXy4KKworICBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGlzIG9wdGlvbiBpbiBg
dGhlIGRvY3VtZW50YXRpb24gPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL2xhdGVzdC9weXRo
b25wYXRoLmh0bWwjaW1wb3J0LW1vZGVzPmBfXy4KKworCistIGAjNzMwNSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MzA1PmBfOiBOZXcgYGByZXF1aXJlZF9w
bHVnaW5zYGAgY29uZmlndXJhdGlvbiBvcHRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkg
YSBsaXN0IG9mIHBsdWdpbnMsIGluY2x1ZGluZyB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGF0IGFy
ZSByZXF1aXJlZCBmb3IgcHl0ZXN0IHRvIHJ1bi4gQW4gZXJyb3IgaXMgcmFpc2VkIGlmIGFueSBy
ZXF1aXJlZCBwbHVnaW5zIGFyZSBub3QgZm91bmQgd2hlbiBydW5uaW5nIHB5dGVzdC4KKworCitJ
bXByb3ZlbWVudHMKKy0tLS0tLS0tLS0tLQorCistIGAjNDM3NSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Mzc1PmBfOiBUaGUgYGBweXRlc3RgYCBjb21tYW5k
IG5vdyBzdXBwcmVzc2VzIHRoZSBgYEJyb2tlblBpcGVFcnJvcmBgIGVycm9yIG1lc3NhZ2UgdGhh
dAorICBpcyBwcmludGVkIHRvIHN0ZGVyciB3aGVuIHRoZSBvdXRwdXQgb2YgYGBweXRlc3RgYCBp
cyBwaXBlZCBhbmQgYW5kIHRoZSBwaXBlIGlzCisgIGNsb3NlZCBieSB0aGUgcGlwZWQtdG8gcHJv
Z3JhbSAoY29tbW9uIGV4YW1wbGVzIGFyZSBgYGxlc3NgYCBhbmQgYGBoZWFkYGApLgorCisKKy0g
YCM0MzkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzOTE+
YF86IEltcHJvdmVkIHByZWNpc2lvbiBvZiB0ZXN0IGR1cmF0aW9ucyBtZWFzdXJlbWVudC4gYGBD
YWxsSW5mb2BgIGl0ZW1zIG5vdyBoYXZlIGEgbmV3IGBgPENhbGxJbmZvPi5kdXJhdGlvbmBgIGF0
dHJpYnV0ZSwgY3JlYXRlZCB1c2luZyBgYHRpbWUucGVyZl9jb3VudGVyKClgYC4gVGhpcyBhdHRy
aWJ1dGUgaXMgdXNlZCB0byBmaWxsIHRoZSBgYDxUZXN0UmVwb3J0Pi5kdXJhdGlvbmBgIGF0dHJp
YnV0ZSwgd2hpY2ggaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIHRoZSBwcmV2aW91cyBgYDxDYWxsSW5m
bz4uc3RvcCAtIDxDYWxsSW5mbz4uc3RhcnRgYCAoYXMgdGhlc2UgYXJlIGJhc2VkIG9uIGBgdGlt
ZS50aW1lKClgYCkuCisKKworLSBgIzQ2NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDY3NT5gXzogUmljaCBjb21wYXJpc29uIGZvciBkYXRhY2xhc3NlcyBh
bmQgYGF0dHJzYC1jbGFzc2VzIGlzIG5vdyByZWN1cnNpdmUuCisKKworLSBgIzYyODUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjI4NT5gXzogRXhwb3NlZCB0
aGUgYHB5dGVzdC5GaXh0dXJlTG9va3VwRXJyb3JgIGV4Y2VwdGlvbiB3aGljaCBpcyByYWlzZWQg
YnkgYHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKClgCisgICh3aGVyZSBgcmVxdWVzdGAgaXMgYSBg
Rml4dHVyZVJlcXVlc3RgIGZpeHR1cmUpIHdoZW4gYSBmaXh0dXJlIHdpdGggdGhlIGdpdmVuIG5h
bWUgY2Fubm90IGJlIHJldHVybmVkLgorCisKKy0gYCM2NDMzIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0MzM+YF86IElmIGFuIGVycm9yIGlzIGVuY291bnRl
cmVkIHdoaWxlIGZvcm1hdHRpbmcgdGhlIG1lc3NhZ2UgaW4gYSBsb2dnaW5nIGNhbGwsIGZvcgor
ICBleGFtcGxlIGBgbG9nZ2luZy53YXJuaW5nKCJvaCBubyE6ICVzOiAlcyIsICJmaXJzdCIpYGAg
KGEgc2Vjb25kIGFyZ3VtZW50IGlzCisgIG1pc3NpbmcpLCBweXRlc3Qgbm93IHByb3BhZ2F0ZXMg
dGhlIGVycm9yLCBsaWtlbHkgY2F1c2luZyB0aGUgdGVzdCB0byBmYWlsLgorCisgIFByZXZpb3Vz
bHksIHN1Y2ggYSBtaXN0YWtlIHdvdWxkIGNhdXNlIGFuIGVycm9yIHRvIGJlIHByaW50ZWQgdG8g
c3RkZXJyLCB3aGljaAorICBpcyBub3QgZGlzcGxheWVkIGJ5IGRlZmF1bHQgZm9yIHBhc3Npbmcg
dGVzdHMuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBtaXN0YWtlCisgIHZpc2libGUgZHVyaW5nIHRl
c3RpbmcuCisKKyAgWW91IG1heSBzdXByZXNzIHRoaXMgYmVoYXZpb3IgdGVtcG9yYXJpbHkgb3Ig
cGVybWFuZW50bHkgYnkgc2V0dGluZworICBgYGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFs
c2VgYC4KKworCistIGAjNjgxNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy82ODE3PmBfOiBFeHBsaWNpdCBuZXctbGluZXMgaW4gaGVscCB0ZXh0cyBvZiBjb21t
YW5kLWxpbmUgb3B0aW9ucyBhcmUgcHJlc2VydmVkLCBhbGxvd2luZyBwbHVnaW5zIGJldHRlciBj
b250cm9sCisgIG9mIHRoZSBoZWxwIGRpc3BsYXllZCB0byB1c2Vycy4KKworCistIGAjNjk0MCA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTQwPmBfOiBXaGVu
IHVzaW5nIHRoZSBgYC0tZHVyYXRpb25gYCBvcHRpb24sIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIG91
dHB1dCBpcyBub3cgbW9yZSBwcmVjaXNlIGFib3V0IHRoZSBudW1iZXIgYW5kIGR1cmF0aW9uIG9m
IGhpZGRlbiBpdGVtcy4KKworCistIGAjNjk5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy82OTkxPmBfOiBDb2xsZWN0ZWQgZmlsZXMgYXJlIGRpc3BsYXllZCBh
ZnRlciBhbnkgcmVwb3J0cyBmcm9tIGhvb2tzLCBlLmcuIHRoZSBzdGF0dXMgZnJvbSBgYC0tbGZg
YC4KKworCistIGAjNzA5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy83MDkxPmBfOiBXaGVuIGBgZmRgYCBjYXB0dXJpbmcgaXMgdXNlZCwgdGhyb3VnaCBgYC0t
Y2FwdHVyZT1mZGBgIG9yIHRoZSBgYGNhcGZkYGAgYW5kCisgIGBgY2FwZmRiaW5hcnlgYCBmaXh0
dXJlcywgYW5kIHRoZSBmaWxlIGRlc2NyaXB0b3IgKDAsIDEsIDIpIGNhbm5vdCBiZQorICBkdXBs
aWNhdGVkLCBGRCBjYXB0dXJpbmcgaXMgc3RpbGwgcGVyZm9ybWVkLiBQcmV2aW91c2x5LCBkaXJl
Y3Qgd3JpdGVzIHRvIHRoZQorICBmaWxlIGRlc2NyaXB0b3JzIHdvdWxkIGZhaWwgb3IgYmUgbG9z
dCBpbiB0aGlzIGNhc2UuCisKKworLSBgIzcxMTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNzExOT5gXzogRXhpdCB3aXRoIGFuIGVycm9yIGlmIHRoZSBgYC0t
YmFzZXRlbXBgYCBhcmd1bWVudCBpcyBlbXB0eSwgaXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJl
Y3Rvcnkgb3IgaXMgb25lIG9mIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMuCisgIFRoaXMgaXMgZG9u
ZSB0byBwcm90ZWN0IGFnYWluc3QgYWNjaWRlbnRhbCBkYXRhIGxvc3MsIGFzIGFueSBkaXJlY3Rv
cnkgcGFzc2VkIHRvIHRoaXMgYXJndW1lbnQgaXMgY2xlYXJlZC4KKworCistIGAjNzEyOCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTI4PmBfOiBgcHl0ZXN0
IC0tdmVyc2lvbmAgbm93IGRpc3BsYXlzIGp1c3QgdGhlIHB5dGVzdCB2ZXJzaW9uLCB3aGlsZSBg
cHl0ZXN0IC0tdmVyc2lvbiAtLXZlcnNpb25gIGRpc3BsYXlzIG1vcmUgdmVyYm9zZSBpbmZvcm1h
dGlvbiBpbmNsdWRpbmcgcGx1Z2lucy4gVGhpcyBpcyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cg
b3RoZXIgdG9vbHMgc2hvdyBgLS12ZXJzaW9uYC4KKworCistIGAjNzEzMyA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTMzPmBfOiA6bWV0aDpgY2FwbG9nLnNl
dF9sZXZlbCgpIDxfcHl0ZXN0LmxvZ2dpbmcuTG9nQ2FwdHVyZUZpeHR1cmUuc2V0X2xldmVsPmAg
d2lsbCBub3cgb3ZlcnJpZGUgYW55IDpjb25mdmFsOmBsb2dfbGV2ZWxgIHNldCB2aWEgdGhlIENM
SSBvciBjb25maWd1cmF0aW9uIGZpbGUuCisKKworLSBgIzcxNTkgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE1OT5gXzogOm1ldGg6YGNhcGxvZy5zZXRfbGV2
ZWwoKSA8X3B5dGVzdC5sb2dnaW5nLkxvZ0NhcHR1cmVGaXh0dXJlLnNldF9sZXZlbD5gIGFuZCA6
bWV0aDpgY2FwbG9nLmF0X2xldmVsKCkgPF9weXRlc3QubG9nZ2luZy5Mb2dDYXB0dXJlRml4dHVy
ZS5hdF9sZXZlbD5gIG5vIGxvbmdlciBhZmZlY3QKKyAgdGhlIGxldmVsIG9mIGxvZ3MgdGhhdCBh
cmUgc2hvd24gaW4gdGhlICpDYXB0dXJlZCBsb2cgcmVwb3J0KiByZXBvcnQgc2VjdGlvbi4KKwor
CistIGAjNzM0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83
MzQ4PmBfOiBJbXByb3ZlIHJlY3Vyc2l2ZSBkaWZmIHJlcG9ydCBmb3IgY29tcGFyaXNvbiBhc3Nl
cnRzIG9uIGRhdGFjbGFzc2VzIC8gYXR0cnMuCisKKworLSBgIzczODUgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM4NT5gXzogYGAtLWp1bml0eG1sYGAgbm93
IGluY2x1ZGVzIHRoZSBleGNlcHRpb24gY2F1c2UgaW4gdGhlIGBgbWVzc2FnZWBgIFhNTCBhdHRy
aWJ1dGUgZm9yIGZhaWx1cmVzIGR1cmluZyBzZXR1cCBhbmQgdGVhcmRvd24uCisKKyAgUHJldmlv
dXNseToKKworICAuLiBjb2RlLWJsb2NrOjogeG1sCisKKyAgICAgIDxlcnJvciBtZXNzYWdlPSJ0
ZXN0IHNldHVwIGZhaWx1cmUiPgorCisgIE5vdzoKKworICAuLiBjb2RlLWJsb2NrOjogeG1sCisK
KyAgICAgIDxlcnJvciBtZXNzYWdlPSJmYWlsZWQgb24gc2V0dXAgd2l0aCAmcXVvdDtWYWx1ZUVy
cm9yOiBTb21lIGVycm9yIGR1cmluZyBzZXR1cCZxdW90OyI+CisKKworCitCdWcgRml4ZXMKKy0t
LS0tLS0tLQorCistIGAjMTEyMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xMTIwPmBfOiBGaXggaXNzdWUgd2hlcmUgZGlyZWN0b3JpZXMgZnJvbSA6Zml4dHVy
ZTpgdG1wZGlyYCBhcmUgbm90IHJlbW92ZWQgcHJvcGVybHkgd2hlbiBtdWx0aXBsZSBpbnN0YW5j
ZXMgb2YgcHl0ZXN0IGFyZSBydW5uaW5nIGluIHBhcmFsbGVsLgorCisKKy0gYCM0NTgzIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1ODM+YF86IFByZXZlbnQg
Y3Jhc2hpbmcgYW5kIHByb3ZpZGUgYSB1c2VyLWZyaWVuZGx5IGVycm9yIHdoZW4gYSBtYXJrZXIg
ZXhwcmVzc2lvbiAoYC1tYCkgaW52b2tpbmcgb2YgOmZ1bmM6YGV2YWxgIHJhaXNlcyBhbnkgZXhj
ZXB0aW9uLgorCisKKy0gYCM0Njc3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQ2Nzc+YF86IFRoZSBwYXRoIHNob3duIGluIHRoZSBzdW1tYXJ5IHJlcG9ydCBm
b3IgU0tJUFBFRCB0ZXN0cyBpcyBub3cgYWx3YXlzIHJlbGF0aXZlLiBQcmV2aW91c2x5IGl0IHdh
cyBzb21ldGltZXMgYWJzb2x1dGUuCisKKworLSBgIzU0NTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ1Nj5gXzogRml4IGEgcG9zc2libGUgcmFjZSBjb25k
aXRpb24gd2hlbiB0cnlpbmcgdG8gcmVtb3ZlIGxvY2sgZmlsZXMgdXNlZCB0byBjb250cm9sIGFj
Y2VzcyB0byBmb2xkZXJzCisgIGNyZWF0ZWQgYnkgOmZpeHR1cmU6YHRtcF9wYXRoYCBhbmQgOmZp
eHR1cmU6YHRtcGRpcmAuCisKKworLSBgIzYyNDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjI0MD5gXzogRml4ZXMgYW4gaXNzdWUgd2hlcmUgbG9nZ2luZyBk
dXJpbmcgY29sbGVjdGlvbiBzdGVwIGNhdXNlZCBkdXBsaWNhdGlvbiBvZiBsb2cKKyAgbWVzc2Fn
ZXMgdG8gc3RkZXJyLgorCisKKy0gYCM2NDI4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzY0Mjg+YF86IFBhdGhzIGFwcGVhcmluZyBpbiBlcnJvciBtZXNzYWdl
cyBhcmUgbm93IGNvcnJlY3QgaW4gY2FzZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBo
YXMKKyAgY2hhbmdlZCBzaW5jZSB0aGUgc3RhcnQgb2YgdGhlIHNlc3Npb24uCisKKworLSBgIzY3
NTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjc1NT5gXzog
U3VwcG9ydCBkZWxldGluZyBwYXRocyBsb25nZXIgdGhhbiAyNjAgY2hhcmFjdGVycyBvbiB3aW5k
b3dzIGNyZWF0ZWQgaW5zaWRlIDpmaXh0dXJlOmB0bXBkaXJgLgorCisKKy0gYCM2ODcxIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY4NzE+YF86IEZpeCBjcmFz
aCB3aXRoIGNhcHR1cmVkIG91dHB1dCB3aGVuIHVzaW5nIDpmaXh0dXJlOmBjYXBzeXNiaW5hcnlg
LgorCisKKy0gYCM2OTA5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzY5MDk+YF86IFJldmVydCB0aGUgY2hhbmdlIGludHJvZHVjZWQgYnkgYCM2MzMwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC82MzMwPmBfLCB3aGljaCByZXF1
aXJlZCBhbGwgYXJndW1lbnRzIHRvIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgdG8gYmUg
ZXhwbGljaXRseSBkZWZpbmVkIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUuCisKKyAgVGhlIGlu
dGVudGlvbiBvZiB0aGUgb3JpZ2luYWwgY2hhbmdlIHdhcyB0byByZW1vdmUgd2hhdCB3YXMgZXhw
ZWN0ZWQgdG8gYmUgYW4gdW5pbnRlbmRlZC9zdXJwcmlzaW5nIGJlaGF2aW9yLCBidXQgaXQgdHVy
bnMgb3V0IG1hbnkgcGVvcGxlIHJlbGllZCBvbiBpdCwgc28gdGhlIHJlc3RyaWN0aW9uIGhhcyBi
ZWVuIHJldmVydGVkLgorCisKKy0gYCM2OTEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzY5MTA+YF86IEZpeCBjcmFzaCB3aGVuIHBsdWdpbnMgcmV0dXJuIGFu
IHVua25vd24gc3RhdHMgd2hpbGUgdXNpbmcgdGhlIGBgLS1yZXBvcnRsb2dgYCBvcHRpb24uCisK
KworLSBgIzY5MjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NjkyND5gXzogRW5zdXJlIGEgYGB1bml0dGVzdC5Jc29sYXRlZEFzeW5jaW9UZXN0Q2FzZWBgIGlz
IGFjdHVhbGx5IGF3YWl0ZWQuCisKKworLSBgIzY5MjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjkyNT5gXzogRml4IGBUZXJtaW5hbFJlcHJgIGluc3RhbmNl
cyB0byBiZSBoYXNoYWJsZSBhZ2Fpbi4KKworCistIGAjNjk0NyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTQ3PmBfOiBGaXggcmVncmVzc2lvbiB3aGVyZSBm
dW5jdGlvbnMgcmVnaXN0ZXJlZCB3aXRoIDptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVh
bnVwYCB3ZXJlIG5vdCBiZWluZyBjYWxsZWQgb24gdGVzdCBmYWlsdXJlcy4KKworCistIGAjNjk1
MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTUxPmBfOiBB
bGxvdyB1c2VycyB0byBzdGlsbCBzZXQgdGhlIGRlcHJlY2F0ZWQgYGBUZXJtaW5hbFJlcG9ydGVy
LndyaXRlcmBgIGF0dHJpYnV0ZS4KKworCistIGAjNjk1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTU2PmBfOiBQcmV2ZW50IHB5dGVzdCBmcm9tIHByaW50
aW5nIGBDb25mdGVzdEltcG9ydEZhaWx1cmVgIHRyYWNlYmFjayB0byBzdGRvdXQuCisKKworLSBg
IzY5OTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjk5MT5g
XzogRml4IHJlZ3Jlc3Npb25zIHdpdGggYC0tbGZgIGZpbHRlcmluZyB0b28gbXVjaCBzaW5jZSBw
eXRlc3QgNS40LgorCisKKy0gYCM2OTkyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzY5OTI+YF86IFJldmVydCAidG1wZGlyOiBjbGVhbiB1cCBpbmRpcmVjdGlv
biB2aWEgY29uZmlnIGZvciBmYWN0b3JpZXMiIGAjNjc2NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NzY3PmBfIGFzIGl0IGJyZWFrcyBweXRlc3QteGRpc3Qu
CisKKworLSBgIzcwNjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNzA2MT5gXzogV2hlbiBhIHlpZWxkaW5nIGZpeHR1cmUgZmFpbHMgdG8geWllbGQgYSB2YWx1
ZSwgcmVwb3J0IGEgdGVzdCBzZXR1cCBlcnJvciBpbnN0ZWFkIG9mIGNyYXNoaW5nLgorCisKKy0g
YCM3MDc2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcwNzY+
YF86IFRoZSBwYXRoIG9mIGZpbGUgc2tpcHBlZCBieSBgYEBweXRlc3QubWFyay5za2lwYGAgaW4g
dGhlIFNLSVBQRUQgcmVwb3J0IGlzIG5vdyByZWxhdGl2ZSB0byBpbnZvY2F0aW9uIGRpcmVjdG9y
eS4gUHJldmlvdXNseSBpdCB3YXMgcmVsYXRpdmUgdG8gcm9vdCBkaXJlY3RvcnkuCisKKworLSBg
IzcxMTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzExMD5g
XzogRml4ZWQgcmVncmVzc2lvbjogYGBhc3luY2Jhc2UuVGVzdENhc2VgYCB0ZXN0cyBhcmUgZXhl
Y3V0ZWQgY29ycmVjdGx5IGFnYWluLgorCisKKy0gYCM3MTI2IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcxMjY+YF86IGBgLS1zZXR1cC1zaG93YGAgbm93IGRv
ZXNuJ3QgcmFpc2UgYW4gZXJyb3Igd2hlbiBhIGJ5dGVzIHZhbHVlIGlzIHVzZWQgYXMgYSBgYHBh
cmFtZXRyaXplYGAKKyAgcGFyYW1ldGVyIHdoZW4gUHl0aG9uIGlzIGNhbGxlZCB3aXRoIHRoZSBg
YC1iYmBgIGZsYWcuCisKKworLSBgIzcxNDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNzE0Mz5gXzogRml4IDptZXRoOmBweXRlc3QuRmlsZS5mcm9tX3BhcmVu
dGAgc28gaXQgZm9yd2FyZHMgZXh0cmEga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVj
dG9yLgorCisKKy0gYCM3MTQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzcxNDU+YF86IENsYXNzZXMgd2l0aCBicm9rZW4gYGBfX2dldGF0dHJpYnV0ZV9fYGAg
bWV0aG9kcyBhcmUgZGlzcGxheWVkIGNvcnJlY3RseSBkdXJpbmcgZmFpbHVyZXMuCisKKworLSBg
IzcxNTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE1MD5g
XzogUHJldmVudCBoaWRpbmcgdGhlIHVuZGVybHlpbmcgZXhjZXB0aW9uIHdoZW4gYGBDb25mVGVz
dEltcG9ydEZhaWx1cmVgYCBpcyByYWlzZWQuCisKKworLSBgIzcxODAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE4MD5gXzogRml4IGBgX2lzX3NldHVwX3B5
YGAgZm9yIGZpbGVzIGVuY29kZWQgZGlmZmVyZW50bHkgdGhhbiBsb2NhbGUuCisKKworLSBgIzcy
MTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzIxNT5gXzog
Rml4IHJlZ3Jlc3Npb24gd2hlcmUgcnVubmluZyB3aXRoIGBgLS1wZGJgYCB3b3VsZCBjYWxsIDpt
ZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS50ZWFyRG93bmAgZm9yIHNraXBwZWQgdGVzdHMuCisKKwor
LSBgIzcyNTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzI1
Mz5gXzogV2hlbiB1c2luZyBgYHB5dGVzdC5maXh0dXJlYGAgb24gYSBmdW5jdGlvbiBkaXJlY3Rs
eSwgYXMgaW4gYGBweXRlc3QuZml4dHVyZShmdW5jKWBgLAorICBpZiB0aGUgYGBhdXRvdXNlYGAg
b3IgYGBwYXJhbXNgYCBhcmd1bWVudHMgYXJlIGFsc28gcGFzc2VkLCB0aGUgZnVuY3Rpb24gaXMg
bm8gbG9uZ2VyCisgIGlnbm9yZWQsIGJ1dCBpcyBtYXJrZWQgYXMgYSBmaXh0dXJlLgorCisKKy0g
YCM3MzYwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzczNjA+
YF86IEZpeCBwb3NzaWJseSBpbmNvcnJlY3QgZXZhbHVhdGlvbiBvZiBzdHJpbmcgZXhwcmVzc2lv
bnMgcGFzc2VkIHRvIGBgcHl0ZXN0Lm1hcmsuc2tpcGlmYGAgYW5kIGBgcHl0ZXN0Lm1hcmsueGZh
aWxgYCwKKyAgaW4gcmFyZSBjaXJjdW1zdGFuY2VzIHdoZXJlIHRoZSBleGFjdCBzYW1lIHN0cmlu
ZyBpcyB1c2VkIGJ1dCByZWZlcnMgdG8gZGlmZmVyZW50IGdsb2JhbCB2YWx1ZXMuCisKKworLSBg
IzczODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM4Mz5g
XzogRml4ZWQgZXhjZXB0aW9uIGNhdXNlcyBhbGwgb3ZlciB0aGUgY29kZWJhc2UsIGkuZS4gdXNl
IGByYWlzZSBuZXdfZXhjZXB0aW9uIGZyb20gb2xkX2V4Y2VwdGlvbmAgd2hlbiB3cmFwcGluZyBh
biBleGNlcHRpb24uCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKy0gYCM3MjAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzcyMDI+YF86IFRoZSBkZXZlbG9wbWVudCBndWlkZSBub3cgbGlua3MgdG8gdGhl
IGNvbnRyaWJ1dGluZyBzZWN0aW9uIG9mIHRoZSBkb2NzIGFuZCBgUkVMRUFTSU5HLnJzdGAgb24g
R2l0SHViLgorCisKKy0gYCM3MjMzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzcyMzM+YF86IEFkZCBhIG5vdGUgYWJvdXQgYGAtLXN0cmljdGBgIGFuZCBgYC0t
c3RyaWN0LW1hcmtlcnNgYCBhbmQgdGhlIHByZWZlcmVuY2UgZm9yIHRoZSBsYXR0ZXIgb25lLgor
CisKKy0gYCM3MzQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzczNDU+YF86IEV4cGxhaW4gaW5kaXJlY3QgcGFyYW1ldHJpemF0aW9uIGFuZCBtYXJrZXJzIGZv
ciBmaXh0dXJlcy4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy0gYCM3MDM1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzcwMzU+YF86IFRoZSBgYG9yaWdpbmFsbmFtZWBgIGF0dHJpYnV0ZSBvZiBg
YF9weXRlc3QucHl0aG9uLkZ1bmN0aW9uYGAgbm93IGRlZmF1bHRzIHRvIGBgbmFtZWBgIGlmIG5v
dAorICBwcm92aWRlZCBleHBsaWNpdGx5LCBhbmQgaXMgYWx3YXlzIHNldC4KKworCistIGAjNzI2
NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MjY0PmBfOiBU
aGUgZGVwZW5kZW5jeSBvbiB0aGUgYGB3Y3dpZHRoYGAgcGFja2FnZSBoYXMgYmVlbiByZW1vdmVk
LgorCisKKy0gYCM3MjkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzcyOTE+YF86IFJlcGxhY2VkIGBgcHkuaW5pY29uZmlnYGAgd2l0aCBgaW5pY29uZmlnIDxo
dHRwczovL3B5cGkub3JnL3Byb2plY3QvaW5pY29uZmlnLz5gX18uCisKKworLSBgIzcyOTUgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzI5NT5gXzogYGBzcmMv
X3B5dGVzdC9jb25maWcvX19pbml0X18ucHlgYCBub3cgdXNlcyB0aGUgYGB3YXJuaW5nc2BgIG1v
ZHVsZSB0byByZXBvcnQgd2FybmluZ3MgaW5zdGVhZCBvZiBgYHN5cy5zdGRlcnIud3JpdGVgYC4K
KworCistIGAjNzM1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy83MzU2PmBfOiBSZW1vdmUgbGFzdCBpbnRlcm5hbCB1c2VzIG9mIGRlcHJlY2F0ZWQgKnNsYXZl
KiB0ZXJtIGZyb20gb2xkIGBgcHl0ZXN0LXhkaXN0YGAuCisKKworLSBgIzczNTcgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzM1Nz5gXzogYGBweWBgPj0xLjgu
MiBpcyBub3cgcmVxdWlyZWQuCisKKworcHl0ZXN0IDUuNC4zICgyMDIwLTA2LTAyKQorPT09PT09
PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNjQyOCA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NDI4PmBfOiBQYXRo
cyBhcHBlYXJpbmcgaW4gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdyBjb3JyZWN0IGluIGNhc2UgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaGFzCisgIGNoYW5nZWQgc2luY2UgdGhlIHN0YXJ0
IG9mIHRoZSBzZXNzaW9uLgorCisKKy0gYCM2NzU1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzY3NTU+YF86IFN1cHBvcnQgZGVsZXRpbmcgcGF0aHMgbG9uZ2Vy
IHRoYW4gMjYwIGNoYXJhY3RlcnMgb24gd2luZG93cyBjcmVhdGVkIGluc2lkZSB0bXBkaXIuCisK
KworLSBgIzY5NTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Njk1Nj5gXzogUHJldmVudCBweXRlc3QgZnJvbSBwcmludGluZyBDb25mdGVzdEltcG9ydEZhaWx1
cmUgdHJhY2ViYWNrIHRvIHN0ZG91dC4KKworCistIGAjNzE1MCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTUwPmBfOiBQcmV2ZW50IGhpZGluZyB0aGUgdW5k
ZXJseWluZyBleGNlcHRpb24gd2hlbiBgYENvbmZUZXN0SW1wb3J0RmFpbHVyZWBgIGlzIHJhaXNl
ZC4KKworCistIGAjNzIxNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy83MjE1PmBfOiBGaXggcmVncmVzc2lvbiB3aGVyZSBydW5uaW5nIHdpdGggYGAtLXBkYmBg
IHdvdWxkIGNhbGwgdGhlIGBgdGVhckRvd25gYCBtZXRob2RzIG9mIGBgdW5pdHRlc3QuVGVzdENh
c2VgYAorICBzdWJjbGFzc2VzIGZvciBza2lwcGVkIHRlc3RzLgorCisKK3B5dGVzdCA1LjQuMiAo
MjAyMC0wNS0wOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzY4NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNjg3MT5gXzogRml4IGNyYXNoIHdpdGggY2FwdHVyZWQgb3V0cHV0IHdoZW4gdXNpbmcg
dGhlIDpmaXh0dXJlOmBjYXBzeXNiaW5hcnkgZml4dHVyZSA8Y2Fwc3lzYmluYXJ5PmAuCisKKwor
LSBgIzY5MjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjky
ND5gXzogRW5zdXJlIGEgYGB1bml0dGVzdC5Jc29sYXRlZEFzeW5jaW9UZXN0Q2FzZWBgIGlzIGFj
dHVhbGx5IGF3YWl0ZWQuCisKKworLSBgIzY5MjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjkyNT5gXzogRml4IFRlcm1pbmFsUmVwciBpbnN0YW5jZXMgdG8g
YmUgaGFzaGFibGUgYWdhaW4uCisKKworLSBgIzY5NDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjk0Nz5gXzogRml4IHJlZ3Jlc3Npb24gd2hlcmUgZnVuY3Rp
b25zIHJlZ2lzdGVyZWQgd2l0aCBgYFRlc3RDYXNlLmFkZENsZWFudXBgYCB3ZXJlIG5vdCBiZWlu
ZyBjYWxsZWQgb24gdGVzdCBmYWlsdXJlcy4KKworCistIGAjNjk1MSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82OTUxPmBfOiBBbGxvdyB1c2VycyB0byBzdGls
bCBzZXQgdGhlIGRlcHJlY2F0ZWQgYGBUZXJtaW5hbFJlcG9ydGVyLndyaXRlcmBgIGF0dHJpYnV0
ZS4KKworCistIGAjNjk5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy82OTkyPmBfOiBSZXZlcnQgInRtcGRpcjogY2xlYW4gdXAgaW5kaXJlY3Rpb24gdmlhIGNv
bmZpZyBmb3IgZmFjdG9yaWVzIiAjNjc2NyBhcyBpdCBicmVha3MgcHl0ZXN0LXhkaXN0LgorCisK
Ky0gYCM3MTEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcx
MTA+YF86IEZpeGVkIHJlZ3Jlc3Npb246IGBgYXN5bmNiYXNlLlRlc3RDYXNlYGAgdGVzdHMgYXJl
IGV4ZWN1dGVkIGNvcnJlY3RseSBhZ2Fpbi4KKworCistIGAjNzE0MyA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy83MTQzPmBfOiBGaXggYGBGaWxlLmZyb21fY29u
c3RydWN0b3JgYCBzbyBpdCBmb3J3YXJkcyBleHRyYSBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUg
Y29uc3RydWN0b3IuCisKKworLSBgIzcxNDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNzE0NT5gXzogQ2xhc3NlcyB3aXRoIGJyb2tlbiBgYF9fZ2V0YXR0cmli
dXRlX19gYCBtZXRob2RzIGFyZSBkaXNwbGF5ZWQgY29ycmVjdGx5IGR1cmluZyBmYWlsdXJlcy4K
KworCistIGAjNzE4MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy83MTgwPmBfOiBGaXggYGBfaXNfc2V0dXBfcHlgYCBmb3IgZmlsZXMgZW5jb2RlZCBkaWZmZXJl
bnRseSB0aGFuIGxvY2FsZS4KKworCitweXRlc3QgNS40LjEgKDIwMjAtMDMtMTMpCis9PT09PT09
PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM2OTA5IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5MDk+YF86IFJldmVy
dCB0aGUgY2hhbmdlIGludHJvZHVjZWQgYnkgYCM2MzMwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvcHVsbC82MzMwPmBfLCB3aGljaCByZXF1aXJlZCBhbGwgYXJndW1lbnRz
IHRvIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgdG8gYmUgZXhwbGljaXRseSBkZWZpbmVk
IGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUuCisKKyAgVGhlIGludGVudGlvbiBvZiB0aGUgb3Jp
Z2luYWwgY2hhbmdlIHdhcyB0byByZW1vdmUgd2hhdCB3YXMgZXhwZWN0ZWQgdG8gYmUgYW4gdW5p
bnRlbmRlZC9zdXJwcmlzaW5nIGJlaGF2aW9yLCBidXQgaXQgdHVybnMgb3V0IG1hbnkgcGVvcGxl
IHJlbGllZCBvbiBpdCwgc28gdGhlIHJlc3RyaWN0aW9uIGhhcyBiZWVuIHJldmVydGVkLgorCisK
Ky0gYCM2OTEwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY5
MTA+YF86IEZpeCBjcmFzaCB3aGVuIHBsdWdpbnMgcmV0dXJuIGFuIHVua25vd24gc3RhdHMgd2hp
bGUgdXNpbmcgdGhlIGBgLS1yZXBvcnRsb2dgYCBvcHRpb24uCisKKworcHl0ZXN0IDUuNC4wICgy
MDIwLTAzLTEyKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCcmVha2luZyBDaGFuZ2Vz
CistLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM2MzE2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzYzMTY+YF86IE1hdGNoaW5nIG9mIGBgLWsgRVhQUkVTU0lPTmBg
IHRvIHRlc3QgbmFtZXMgaXMgbm93IGNhc2UtaW5zZW5zaXRpdmUuCisKKworLSBgIzY0NDMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQ0Mz5gXzogUGx1Z2lu
cyBzcGVjaWZpZWQgd2l0aCBgYC1wYGAgYXJlIG5vdyBsb2FkZWQgYWZ0ZXIgaW50ZXJuYWwgcGx1
Z2lucywgd2hpY2ggcmVzdWx0cyBpbiB0aGVpciBob29rcyBiZWluZyBjYWxsZWQgKmJlZm9yZSog
dGhlIGludGVybmFsIG9uZXMuCisKKyAgVGhpcyBtYWtlcyB0aGUgYGAtcGBgIGJlaGF2aW9yIGNv
bnNpc3RlbnQgd2l0aCBgYFBZVEVTVF9QTFVHSU5TYGAuCisKKworLSBgIzY2MzcgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjYzNz5gXzogUmVtb3ZlZCB0aGUg
bG9uZy1kZXByZWNhdGVkIGBgcHl0ZXN0X2l0ZW1zdGFydGBgIGhvb2suCisKKyAgVGhpcyBob29r
IGhhcyBiZWVuIG1hcmtlZCBhcyBkZXByZWNhdGVkIGFuZCBub3QgYmVlbiBldmVuIGNhbGxlZCBi
eSBweXRlc3QgZm9yIG92ZXIgMTAgeWVhcnMgbm93LgorCisKKy0gYCM2NjczIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY2NzM+YF86IFJldmVyc2VkIC8gZml4
IG1lYW5pbmcgb2YgIisvLSIgaW4gZXJyb3IgZGlmZnMuICAiLSIgbWVhbnMgdGhhdCBzdGguIGV4
cGVjdGVkIGlzIG1pc3NpbmcgaW4gdGhlIHJlc3VsdCBhbmQgIisiIG1lYW5zIHRoYXQgdGhlcmUg
YXJlIHVuZXhwZWN0ZWQgZXh0cmFzIGluIHRoZSByZXN1bHQuCisKKworLSBgIzY3MzcgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjczNz5gXzogVGhlIGBgY2Fj
aGVkX3Jlc3VsdGBgIGF0dHJpYnV0ZSBvZiBgYEZpeHR1cmVEZWZgYCBpcyBub3cgc2V0IHRvIGBg
Tm9uZWBgIHdoZW4KKyAgdGhlIHJlc3VsdCBpcyB1bmF2YWlsYWJsZSwgaW5zdGVhZCBvZiBiZWlu
ZyBkZWxldGVkLgorCisgIElmIHlvdXIgcGx1Z2luIHBlcmZvcm1zIGNoZWNrcyBsaWtlIGBgaGFz
YXR0cihmaXh0dXJlZGVmLCAnY2FjaGVkX3Jlc3VsdCcpYGAsCisgIGZvciBleGFtcGxlIGluIGEg
YGBweXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFsaXplcmBgIGhvb2sgaW1wbGVtZW50YXRpb24sIHJl
cGxhY2UKKyAgaXQgd2l0aCBgYGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdCBpcyBub3QgTm9uZWBg
LiBJZiB5b3UgYGBkZWxgYCB0aGUgYXR0cmlidXRlLAorICBzZXQgaXQgdG8gYGBOb25lYGAgaW5z
dGVhZC4KKworCisKK0RlcHJlY2F0aW9ucworLS0tLS0tLS0tLS0tCisKKy0gYCMzMjM4IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyMzg+YF86IE9wdGlvbiBg
YC0tbm8tcHJpbnQtbG9nc2BgIGlzIGRlcHJlY2F0ZWQgYW5kIG1lYW50IHRvIGJlIHJlbW92ZWQg
aW4gYSBmdXR1cmUgcmVsZWFzZS4gSWYgeW91IHVzZSBgYC0tbm8tcHJpbnQtbG9nc2BgLCBwbGVh
c2UgdHJ5IG91dCBgYC0tc2hvdy1jYXB0dXJlYGAgYW5kCisgIHByb3ZpZGUgZmVlZGJhY2suCisK
KyAgYGAtLXNob3ctY2FwdHVyZWBgIGNvbW1hbmQtbGluZSBvcHRpb24gd2FzIGFkZGVkIGluIGBg
cHl0ZXN0IDMuNS4wYGAgYW5kIGFsbG93cyB0byBzcGVjaWZ5IGhvdyB0bworICBkaXNwbGF5IGNh
cHR1cmVkIG91dHB1dCB3aGVuIHRlc3RzIGZhaWw6IGBgbm9gYCwgYGBzdGRvdXRgYCwgYGBzdGRl
cnJgYCwgYGBsb2dgYCBvciBgYGFsbGBgICh0aGUgZGVmYXVsdCkuCisKKworLSBgIzU3MSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NzE+YF86IERlcHJlY2F0
ZSB0aGUgdW51c2VkL2Jyb2tlbiBgcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5YCBob29rLgorICBJ
dCB3YXMgbWlzYWxpZ25lZCBzaW5jZSB0aGUgcmVtb3ZhbCBvZiB0aGUgYGBEaXJlY3RvcnlgYCBj
b2xsZWN0b3IgaW4gMjAxMAorICBhbmQgaW5jb3JyZWN0L3VudXNhYmxlIGFzIHNvb24gYXMgY29s
bGVjdGlvbiB3YXMgc3BsaXQgZnJvbSB0ZXN0IGV4ZWN1dGlvbi4KKworCistIGAjNTk3NSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTc1PmBfOiBEZXByZWNh
dGUgdXNpbmcgZGlyZWN0IGNvbnN0cnVjdG9ycyBmb3IgYGBOb2Rlc2BgLgorCisgIEluc3RlYWQg
dGhleSBhcmUgbm93IGNvbnN0cnVjdGVkIHZpYSBgYE5vZGUuZnJvbV9wYXJlbnRgYC4KKworICBU
aGlzIHRyYW5zaXRpb25hbCBtZWNoYW5pc20gZW5hYmxlcyB1cyB0byB1bnRhbmdsZSB0aGUgdmVy
eSBpbnRlbnNlbHkKKyAgZW50YW5nbGVkIGBgTm9kZWBgIHJlbGF0aW9uc2hpcHMgYnkgZW5mb3Jj
aW5nIG1vcmUgY29udHJvbGxlZCBjcmVhdGlvbi9jb25maWd1cmF0aW9uIHBhdHRlcm5zLgorCisg
IEFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UsIHNlc3Npb24vY29uZmlnIGFyZSBhbHJlYWR5IGRpc2Fs
bG93ZWQgcGFyYW1ldGVycyBhbmQgYXMgd2Ugd29yayBvbiB0aGUgZGV0YWlscyB3ZSBtaWdodCBu
ZWVkIGRpc2FsbG93IGEgZmV3IG1vcmUgYXMgd2VsbC4KKworICBTdWJjbGFzc2VzIGFyZSBleHBl
Y3RlZCB0byB1c2UgYHN1cGVyKCkuZnJvbV9wYXJlbnRgIGlmIHRoZXkgaW50ZW5kIHRvIGV4cGFu
ZCB0aGUgY3JlYXRpb24gb2YgYE5vZGVzYC4KKworCistIGAjNjc3OSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82Nzc5PmBfOiBUaGUgYGBUZXJtaW5hbFJlcG9y
dGVyLndyaXRlcmBgIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm8g
bG9uZ2VyIGJlIHVzZWQuIFRoaXMKKyAgd2FzIGluYWR2ZXJ0ZW50bHkgZXhwb3NlZCBhcyBwYXJ0
IG9mIHRoZSBwdWJsaWMgQVBJIG9mIHRoYXQgcGx1Z2luIGFuZCB0aWVzIGl0IHRvbyBtdWNoCisg
IHdpdGggYGBweS5pby5UZXJtaW5hbFdyaXRlcmBgLgorCisKKworRmVhdHVyZXMKKy0tLS0tLS0t
CisKKy0gYCM0NTk3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQ1OTc+YF86IE5ldyA6cmVmOmAtLWNhcHR1cmU9dGVlLXN5cyA8Y2FwdHVyZS1tZXRob2Q+YCBv
cHRpb24gdG8gYWxsb3cgYm90aCBsaXZlIHByaW50aW5nIGFuZCBjYXB0dXJpbmcgb2YgdGVzdCBv
dXRwdXQuCisKKworLSBgIzU3MTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNTcxMj5gXzogTm93IGFsbCBhcmd1bWVudHMgdG8gYGBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemVgYCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQgaW4gdGhlIGZ1bmN0aW9u
IHNpZ25hdHVyZSBvciB2aWEgYGBpbmRpcmVjdGBgLgorICBQcmV2aW91c2x5IGl0IHdhcyBwb3Nz
aWJsZSB0byBvbWl0IGFuIGFyZ3VtZW50IGlmIGEgZml4dHVyZSB3aXRoIHRoZSBzYW1lIG5hbWUg
ZXhpc3RlZCwgd2hpY2ggd2FzIGp1c3QgYW4gYWNjaWRlbnQgb2YgaW1wbGVtZW50YXRpb24gYW5k
IHdhcyBub3QgbWVhbnQgdG8gYmUgYSBwYXJ0IG9mIHRoZSBBUEkuCisKKworLSBgIzY0NTQgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQ1ND5gXzogQ2hhbmdl
ZCBkZWZhdWx0IGZvciBgLXJgIHRvIGBmRWAsIHdoaWNoIGRpc3BsYXlzIGZhaWx1cmVzIGFuZCBl
cnJvcnMgaW4gdGhlIDpyZWY6YHNob3J0IHRlc3Qgc3VtbWFyeSA8cHl0ZXN0LmRldGFpbGVkX2Zh
aWxlZF90ZXN0c191c2FnZT5gLiAgYC1yTmAgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBpdCAodGhl
IG9sZCBiZWhhdmlvcikuCisKKworLSBgIzY0NjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjQ2OT5gXzogTmV3IG9wdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIHRv
IHRoZSA6Y29uZnZhbDpganVuaXRfbG9nZ2luZ2Agb3B0aW9uOiBgYGxvZ2BgLCBgYG91dC1lcnJg
YCwgYW5kIGBgYWxsYGAuCisKKworLSBgIzY4MzQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjgzND5gXzogRXhjZXNzIHdhcm5pbmcgc3VtbWFyaWVzIGFyZSBu
b3cgY29sbGFwc2VkIHBlciBmaWxlIHRvIGVuc3VyZSByZWFkYWJsZSBkaXNwbGF5IG9mIHdhcm5p
bmcgc3VtbWFyaWVzLgorCisKKworSW1wcm92ZW1lbnRzCistLS0tLS0tLS0tLS0KKworLSBgIzE4
NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg1Nz5gXzog
YGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgIGFjY2VwdHMgaW50ZWdlcnMgZm9yIGBgaWRzYGAg
YWdhaW4sIGNvbnZlcnRpbmcgaXQgdG8gc3RyaW5ncy4KKworCistIGAjNDQ5IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0OT5gXzogVXNlICJ5ZWxsb3ciIG1h
aW4gY29sb3Igd2l0aCBhbnkgWFBBU1NFRCB0ZXN0cy4KKworCistIGAjNDYzOSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjM5PmBfOiBSZXZlcnQgIkEgd2Fy
bmluZyBpcyBub3cgaXNzdWVkIHdoZW4gYXNzZXJ0aW9ucyBhcmUgbWFkZSBmb3IgYGBOb25lYGAi
LgorCisgIFRoZSB3YXJuaW5nIHByb3ZlZCB0byBiZSBsZXNzIHVzZWZ1bCB0aGFuIGluaXRpYWxs
eSBleHBlY3RlZCBhbmQgaGFkIHF1aXRlIGEKKyAgZmV3IGZhbHNlIHBvc2l0aXZlIGNhc2VzLgor
CisKKy0gYCM1Njg2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzU2ODY+YF86IGBgdG1wZGlyX2ZhY3RvcnkubWt0ZW1wYGAgbm93IGZhaWxzIHdoZW4gZ2l2ZW4g
YWJzb2x1dGUgYW5kIG5vbi1ub3JtYWxpemVkIHBhdGhzLgorCisKKy0gYCM1OTg0IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5ODQ+YF86IFRoZSBgYHB5dGVz
dF93YXJuaW5nX2NhcHR1cmVkYGAgaG9vayBub3cgcmVjZWl2ZXMgYSBgYGxvY2F0aW9uYGAgcGFy
YW1ldGVyIHdpdGggdGhlIGNvZGUgbG9jYXRpb24gdGhhdCBnZW5lcmF0ZWQgdGhlIHdhcm5pbmcu
CisKKworLSBgIzYyMTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNjIxMz5gXzogcHl0ZXN0ZXI6IHRoZSBgYHRlc3RkaXJgYCBmaXh0dXJlIHJlc3BlY3RzIGVu
dmlyb25tZW50IHNldHRpbmdzIGZyb20gdGhlIGBgbW9ua2V5cGF0Y2hgYCBmaXh0dXJlIGZvciBp
bm5lciBydW5zLgorCisKKy0gYCM2MjQ3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzYyNDc+YF86IGBgLS1mdWxsdHJhY2VgYCBpcyBob25vcmVkIHdpdGggY29s
bGVjdGlvbiBlcnJvcnMuCisKKworLSBgIzYzODQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjM4ND5gXzogTWFrZSBgLS1zaG93bG9jYWxzYCB3b3JrIGFsc28g
d2l0aCBgLS10Yj1zaG9ydGAuCisKKworLSBgIzY2NTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjY1Mz5gXzogQWRkIHN1cHBvcnQgZm9yIG1hdGNoaW5nIGxp
bmVzIGNvbnNlY3V0aXZlbHkgd2l0aCA6YXR0cjpgTGluZU1hdGNoZXIgPF9weXRlc3QucHl0ZXN0
ZXIuTGluZU1hdGNoZXI+YCdzIDpmdW5jOmB+X3B5dGVzdC5weXRlc3Rlci5MaW5lTWF0Y2hlci5m
bm1hdGNoX2xpbmVzYCBhbmQgOmZ1bmM6YH5fcHl0ZXN0LnB5dGVzdGVyLkxpbmVNYXRjaGVyLnJl
X21hdGNoX2xpbmVzYC4KKworCistIGAjNjY1OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy82NjU4PmBfOiBDb2RlIGlzIG5vdyBoaWdobGlnaHRlZCBpbiB0cmFj
ZWJhY2tzIHdoZW4gYGBweWdtZW50c2BgIGlzIGluc3RhbGxlZC4KKworICBVc2VycyBhcmUgZW5j
b3VyYWdlZCB0byBpbnN0YWxsIGBgcHlnbWVudHNgYCBpbnRvIHRoZWlyIGVudmlyb25tZW50IGFu
ZCBwcm92aWRlIGZlZWRiYWNrLCBiZWNhdXNlCisgIHRoZSBwbGFuIGlzIHRvIG1ha2UgYGBweWdt
ZW50c2BgIGEgcmVndWxhciBkZXBlbmRlbmN5IGluIHRoZSBmdXR1cmUuCisKKworLSBgIzY3OTUg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjc5NT5gXzogSW1w
b3J0IHVzYWdlIGVycm9yIG1lc3NhZ2Ugd2l0aCBpbnZhbGlkIGAtb2Agb3B0aW9uLgorCisKKy0g
YCM3NTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzU5PmBf
OiBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgc3VwcG9ydHMgaXRlcmF0b3JzIGFuZCBnZW5l
cmF0b3JzIGZvciBgYGlkc2BgLgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzMx
MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTA+YF86IEFk
ZCBzdXBwb3J0IGZvciBjYWxsaW5nIGBweXRlc3QueGZhaWwoKWAgYW5kIGBweXRlc3QuaW1wb3J0
b3Jza2lwKClgIHdpdGggZG9jdGVzdHMuCisKKworLSBgIzM4MjMgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzgyMz5gXzogYGAtLXRyYWNlYGAgbm93IHdvcmtz
IHdpdGggdW5pdHRlc3RzLgorCisKKy0gYCM0NDQ1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQ0NDU+YF86IEZpeGVkIHNvbWUgd2FybmluZyByZXBvcnRzIHBy
b2R1Y2VkIGJ5IHB5dGVzdCB0byBwb2ludCB0byB0aGUgY29ycmVjdCBsb2NhdGlvbiBvZiB0aGUg
d2FybmluZyBpbiB0aGUgdXNlcidzIGNvZGUuCisKKworLSBgIzUzMDEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTMwMT5gXzogRml4IGBgLS1sYXN0LWZhaWxl
ZGBgIHRvIGNvbGxlY3QgbmV3IHRlc3RzIGZyb20gZmlsZXMgd2l0aCBrbm93biBmYWlsdXJlcy4K
KworCistIGAjNTkyOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy81OTI4PmBfOiBSZXBvcnQgYGBQeXRlc3RVbmtub3duTWFya1dhcm5pbmdgYCBhdCB0aGUgbGV2
ZWwgb2YgdGhlIHVzZXIncyBjb2RlLCBub3QgYGBweXRlc3RgYCdzLgorCisKKy0gYCM1OTkxIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5OTE+YF86IEZpeCBp
bnRlcmFjdGlvbiB3aXRoIGBgLS1wZGJgYCBhbmQgdW5pdHRlc3RzOiBkbyBub3QgdXNlIHVuaXR0
ZXN0J3MgYGBUZXN0Q2FzZS5kZWJ1ZygpYGAuCisKKworLSBgIzYzMzQgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjMzND5gXzogRml4IHN1bW1hcnkgZW50cmll
cyBhcHBlYXJpbmcgdHdpY2Ugd2hlbiBgYGYvRmBgIGFuZCBgYHMvU2BgIHJlcG9ydCBjaGFycyB3
ZXJlIHVzZWQgYXQgdGhlIHNhbWUgdGltZSBpbiB0aGUgYGAtcmBgIGNvbW1hbmQtbGluZSBvcHRp
b24gKGZvciBleGFtcGxlIGBgLXJGZmBgKS4KKworICBUaGUgdXBwZXIgY2FzZSB2YXJpYW50cyB3
ZXJlIG5ldmVyIGRvY3VtZW50ZWQgYW5kIHRoZSBwcmVmZXJyZWQgZm9ybSBzaG91bGQgYmUgdGhl
IGxvd2VyIGNhc2UuCisKKworLSBgIzY0MDkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjQwOT5gXzogRmFsbGJhY2sgdG8gZ3JlZW4gKGluc3RlYWQgb2YgeWVs
bG93KSBmb3Igbm9uLWxhc3QgaXRlbXMgd2l0aG91dCBwcmV2aW91cyBwYXNzZXMgd2l0aCBjb2xv
cmVkIHRlcm1pbmFsIHByb2dyZXNzIGluZGljYXRvci4KKworCistIGAjNjQ1NCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NDU0PmBfOiBgLS1kaXNhYmxlLXdh
cm5pbmdzYCBpcyBob25vcmVkIHdpdGggYC1yYWAgYW5kIGAtckFgLgorCisKKy0gYCM2NDk3IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY0OTc+YF86IEZpeCBi
dWcgaW4gdGhlIGNvbXBhcmlzb24gb2YgcmVxdWVzdCBrZXkgd2l0aCBjYWNoZWQga2V5IGluIGZp
eHR1cmUuCisKKyAgQSBjb25zdHJ1Y3QgYGBpZiBrZXkgPT0gY2FjaGVkX2tleTpgYCBjYW4gZmFp
bCBlaXRoZXIgYmVjYXVzZSBgYD09YGAgaXMgZXhwbGljaXRseSBkaXNhbGxvd2VkLCBvciBmb3Is
IGUuZy4sIE51bVB5IGFycmF5cywgd2hlcmUgdGhlIHJlc3VsdCBvZiBgYGEgPT0gYmBgIGNhbm5v
dCBnZW5lcmFsbHkgYmUgY29udmVydGVkIHRvIGBib29sYC4KKyAgVGhlIGltcGxlbWVudGVkIGZp
eCByZXBsYWNlcyBgPT1gIHdpdGggYGBpc2BgLgorCisKKy0gYCM2NTU3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY1NTc+YF86IE1ha2UgY2FwdHVyZSBvdXRw
dXQgc3RyZWFtcyBgYC53cml0ZSgpYGAgbWV0aG9kIHJldHVybiB0aGUgc2FtZSByZXR1cm4gdmFs
dWUgZnJvbSBvcmlnaW5hbCBzdHJlYW1zLgorCisKKy0gYCM2NTY2IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY1NjY+YF86IEZpeCBgYEVuY29kZWRGaWxlLndy
aXRlbGluZXNgYCB0byBjYWxsIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIGBgd3JpdGVsaW5lc2Bg
IG1ldGhvZC4KKworCistIGAjNjU3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy82NTc1PmBfOiBGaXggaW50ZXJuYWwgY3Jhc2ggd2hlbiBgYGZhdWx0aGFuZGxl
cmBgIHN0YXJ0cyBpbml0aWFsaXplZAorICAoZm9yIGV4YW1wbGUgd2l0aCBgYFBZVEhPTkZBVUxU
SEFORExFUj0xYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0KSBhbmQgYGBmYXVsdGhhbmRsZXJf
dGltZW91dGBgIGRlZmluZWQKKyAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworCistIGAj
NjU5NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NTk3PmBf
OiBGaXggbm9kZSBpZHMgd2hpY2ggY29udGFpbiBhIHBhcmFtZXRyaXplZCBlbXB0eS1zdHJpbmcg
dmFyaWFibGUuCisKKworLSBgIzY2NDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNjY0Nj5gXzogQXNzZXJ0aW9uIHJld3JpdGluZyBob29rcyBhcmUgKHJlKXN0
b3JlZCBmb3IgdGhlIGN1cnJlbnQgaXRlbSwgd2hpY2ggZml4ZXMgdGhlbSBiZWluZyBzdGlsbCB1
c2VkIGFmdGVyIGUuZy4gcHl0ZXN0ZXIncyA6ZnVuYzpgdGVzdGRpci5ydW5weXRlc3QgPF9weXRl
c3QucHl0ZXN0ZXIuVGVzdGRpci5ydW5weXRlc3Q+YCBldGMuCisKKworLSBgIzY2NjAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjY2MD5gXzogOnB5OmZ1bmM6
YHB5dGVzdC5leGl0YCBpcyBoYW5kbGVkIHdoZW4gZW1pdHRlZCBmcm9tIHRoZSA6ZnVuYzpgcHl0
ZXN0X3Nlc3Npb25maW5pc2ggPF9weXRlc3QuaG9va3NwZWMucHl0ZXN0X3Nlc3Npb25maW5pc2g+
YCBob29rLiAgVGhpcyBpbmNsdWRlcyBxdWl0dGluZyBmcm9tIGEgZGVidWdnZXIuCisKKworLSBg
IzY3NTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjc1Mj5g
XzogV2hlbiA6cHk6ZnVuYzpgcHl0ZXN0LnJhaXNlc2AgaXMgdXNlZCBhcyBhIGZ1bmN0aW9uIChh
cyBvcHBvc2VkIHRvIGEgY29udGV4dCBtYW5hZ2VyKSwKKyAgYSBgbWF0Y2hgIGtleXdvcmQgYXJn
dW1lbnQgaXMgbm93IHBhc3NlZCB0aHJvdWdoIHRvIHRoZSB0ZXN0ZWQgZnVuY3Rpb24uIFByZXZp
b3VzbHkKKyAgaXQgd2FzIHN3YWxsb3dlZCBhbmQgaWdub3JlZCAocmVncmVzc2lvbiBpbiBweXRl
c3QgNS4xLjApLgorCisKKy0gYCM2ODAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzY4MDE+YF86IERvIG5vdCBkaXNwbGF5IGVtcHR5IGxpbmVzIGluYmV0d2Vl
biB0cmFjZWJhY2sgZm9yIHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyB3aXRoIGRvY3Rlc3RzLgorCisK
Ky0gYCM2ODAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzY4
MDI+YF86IFRoZSA6Zml4dHVyZTpgdGVzdGRpciBmaXh0dXJlIDx0ZXN0ZGlyPmAgd29ya3Mgd2l0
aGluIGRvY3Rlc3RzIG5vdy4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBgIzY2OTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjY5Nj5gXzogQWRkIGxpc3Qgb2YgZml4dHVyZXMgdG8gc3RhcnQgb2Yg
Zml4dHVyZSBjaGFwdGVyLgorCisKKy0gYCM2NzQyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzY3NDI+YF86IEV4cGFuZCBmaXJzdCBzZW50ZW5jZSBvbiBmaXh0
dXJlcyBpbnRvIGEgcGFyYWdyYXBoLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzY0MDQgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQwND5gXzogUmVtb3ZlIHVzYWdlIG9mIGBgcGFyc2Vy
YGAgbW9kdWxlLCBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjkuCisKKworcHl0ZXN0IDUuMy41ICgy
MDIwLTAxLTI5KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0t
LS0tLQorCistIGAjNjUxNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy82NTE3PmBfOiBGaXggcmVncmVzc2lvbiBpbiBweXRlc3QgNS4zLjQgY2F1c2luZyBhbiBJ
TlRFUk5BTEVSUk9SIGR1ZSB0byBhIHdyb25nIGFzc2VydGlvbi4KKworCitweXRlc3QgNS4zLjQg
KDIwMjAtMDEtMjApCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0t
LS0tLS0tCisKKy0gYCM2NDk2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzY0OTY+YF86IFJldmVydCBgIzY0MzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjQzNj5gX186IHVuZm9ydHVuYXRlbHkgdGhpcyBjaGFuZ2UgaGFz
IGNhdXNlZCBhIG51bWJlciBvZiByZWdyZXNzaW9ucyBpbiBtYW55IHN1aXRlcywKKyAgc28gdGhl
IHRlYW0gZGVjaWRlZCB0byByZXZlcnQgdGhpcyBjaGFuZ2UgYW5kIG1ha2UgYSBuZXcgcmVsZWFz
ZSB3aGlsZSB3ZSBjb250aW51ZSB0byBsb29rIGZvciBhIHNvbHV0aW9uLgorCisKK3B5dGVzdCA1
LjMuMyAoMjAyMC0wMS0xNikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVz
CistLS0tLS0tLS0KKworLSBgIzI3ODAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjc4MD5gXzogQ2FwdHVyZWQgb3V0cHV0IGR1cmluZyB0ZWFyZG93biBpcyBz
aG93biB3aXRoIGBgLXJQYGAuCisKKworLSBgIzU5NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTk3MT5gXzogRml4IGEgYGBweXRlc3QteGRpc3RgYCBjcmFz
aCB3aGVuIGRlYWxpbmcgd2l0aCBleGNlcHRpb25zIHJhaXNlZCBpbiBzdWJwcm9jZXNzZXMgY3Jl
YXRlZCBieSB0aGUKKyAgYGBtdWx0aXByb2Nlc3NpbmdgYCBtb2R1bGUuCisKKworLSBgIzY0MzYg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQzNj5gXzogOmNs
YXNzOmBGaXh0dXJlRGVmIDxfcHl0ZXN0LmZpeHR1cmVzLkZpeHR1cmVEZWY+YCBvYmplY3RzIG5v
dyBwcm9wZXJseSByZWdpc3RlciB0aGVpciBmaW5hbGl6ZXJzIHdpdGggYXV0b3VzZSBhbmQKKyAg
cGFyYW1ldGVyaXplZCBmaXh0dXJlcyB0aGF0IGV4ZWN1dGUgYmVmb3JlIHRoZW0gaW4gdGhlIGZp
eHR1cmUgc3RhY2sgc28gdGhleSBhcmUgdG9ybgorICBkb3duIGF0IHRoZSByaWdodCB0aW1lcywg
YW5kIGluIHRoZSByaWdodCBvcmRlci4KKworCistIGAjNjUzMiA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82NTMyPmBfOiBGaXggcGFyc2luZyBvZiBvdXRjb21l
cyBjb250YWluaW5nIG11bHRpcGxlIGVycm9ycyB3aXRoIGBgdGVzdGRpcmBgIHJlc3VsdHMgKHJl
Z3Jlc3Npb24gaW4gNS4zLjApLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzYzNTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjM1MD5gXzogT3B0aW1pemVkIGF1dG9tYXRpYyByZW5hbWlu
ZyBvZiB0ZXN0IHBhcmFtZXRlciBJRHMuCisKKworcHl0ZXN0IDUuMy4yICgyMDE5LTEyLTEzKQor
PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbXByb3ZlbWVudHMKKy0tLS0tLS0tLS0tLQor
CistIGAjNDYzOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
NjM5PmBfOiBSZXZlcnQgIkEgd2FybmluZyBpcyBub3cgaXNzdWVkIHdoZW4gYXNzZXJ0aW9ucyBh
cmUgbWFkZSBmb3IgYGBOb25lYGAiLgorCisgIFRoZSB3YXJuaW5nIHByb3ZlZCB0byBiZSBsZXNz
IHVzZWZ1bCB0aGFuIGluaXRpYWxseSBleHBlY3RlZCBhbmQgaGFkIHF1aXRlIGEKKyAgZmV3IGZh
bHNlIHBvc2l0aXZlIGNhc2VzLgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzU0
MzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQzMD5gXzog
anVuaXR4bWw6IExvZ3MgZm9yIGZhaWxlZCB0ZXN0IGFyZSBub3cgcGFzc2VkIHRvIGp1bml0IHJl
cG9ydCBpbiBjYXNlIHRoZSB0ZXN0IGZhaWxzIGR1cmluZyBjYWxsIHBoYXNlLgorCisKKy0gYCM2
MjkwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYyOTA+YF86
IFRoZSBzdXBwb3J0aW5nIGZpbGVzIGluIHRoZSBgYC5weXRlc3RfY2FjaGVgYCBkaXJlY3Rvcnkg
YXJlIGtlcHQgd2l0aCBgYC0tY2FjaGUtY2xlYXJgYCwgd2hpY2ggb25seSBjbGVhcnMgY2FjaGVk
IHZhbHVlcyBub3cuCisKKworLSBgIzYzMDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjMwMT5gXzogRml4IGFzc2VydGlvbiByZXdyaXRpbmcgZm9yIGVnZy1i
YXNlZCBkaXN0cmlidXRpb25zIGFuZCBgYGVkaXRhYmxlYGAgaW5zdGFsbHMgKGBgcGlwIGluc3Rh
bGwgLS1lZGl0YWJsZWBgKS4KKworCitweXRlc3QgNS4zLjEgKDIwMTktMTEtMjUpCis9PT09PT09
PT09PT09PT09PT09PT09PT09CisKK0ltcHJvdmVtZW50cworLS0tLS0tLS0tLS0tCisKKy0gYCM2
MjMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYyMzE+YF86
IEltcHJvdmUgY2hlY2sgZm9yIG1pc3NwZWxsaW5nIG9mIDpyZWY6YHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplIHJlZmAuCisKKworLSBgIzYyNTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjI1Nz5gXzogSGFuZGxlIDpweTpmdW5jOmBweXRlc3QuZXhpdGAgYmVp
bmcgdXNlZCB2aWEgOnB5OmZ1bmM6YH5fcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF9pbnRlcm5hbGVy
cm9yYCwgZS5nLiB3aGVuIHF1aXR0aW5nIHBkYiBmcm9tIHBvc3QgbW9ydGVtLgorCisKKworQnVn
IEZpeGVzCistLS0tLS0tLS0KKworLSBgIzU5MTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTkxND5gXzogcHl0ZXN0ZXI6IGZpeCA6cHk6ZnVuYzpgfl9weXRl
c3QucHl0ZXN0ZXIuTGluZU1hdGNoZXIubm9fZm5tYXRjaF9saW5lYCB3aGVuIHVzZWQgYWZ0ZXIg
cG9zaXRpdmUgbWF0Y2hpbmcuCisKKworLSBgIzYwODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA4Mj5gXzogRml4IGxpbmUgZGV0ZWN0aW9uIGZvciBkb2N0
ZXN0IHNhbXBsZXMgaW5zaWRlIDpweTpjbGFzczpgcHl0aG9uOnByb3BlcnR5YCBkb2NzdHJpbmdz
LCBhcyBhIHdvcmthcm91bmQgdG8gYGJwby0xNzQ0NiA8aHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcv
aXNzdWUxNzQ0Nj5gX18uCisKKworLSBgIzYyNTQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNjI1ND5gXzogRml4IGNvbXBhdGliaWxpdHkgd2l0aCBweXRlc3Qt
cGFyYWxsZWwgKHJlZ3Jlc3Npb24gaW4gcHl0ZXN0IDUuMy4wKS4KKworCistIGAjNjI1NSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MjU1PmBfOiBDbGVhciB0
aGUgOnB5OmRhdGE6YHN5cy5sYXN0X3RyYWNlYmFja2AsIDpweTpkYXRhOmBzeXMubGFzdF90eXBl
YAorICBhbmQgOnB5OmRhdGE6YHN5cy5sYXN0X3ZhbHVlYCBhdHRyaWJ1dGVzIGJ5IGRlbGV0aW5n
IHRoZW0gaW5zdGVhZAorICBvZiBzZXR0aW5nIHRoZW0gdG8gYGBOb25lYGAuIFRoaXMgYmV0dGVy
IG1hdGNoZXMgdGhlIGJlaGF2aW91ciBvZgorICB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnku
CisKKworcHl0ZXN0IDUuMy4wICgyMDE5LTExLTE5KQorPT09PT09PT09PT09PT09PT09PT09PT09
PQorCitEZXByZWNhdGlvbnMKKy0tLS0tLS0tLS0tLQorCistIGAjNjE3OSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MTc5PmBfOiBUaGUgZGVmYXVsdCB2YWx1
ZSBvZiA6Y29uZnZhbDpganVuaXRfZmFtaWx5YCBvcHRpb24gd2lsbCBjaGFuZ2UgdG8gYGAieHVu
aXQyImBgIGluIHB5dGVzdCA2LjAsIGdpdmVuCisgIHRoYXQgdGhpcyBpcyB0aGUgdmVyc2lvbiBz
dXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiBtb2Rlcm4gdG9vbHMgdGhhdCBtYW5pcHVsYXRlIHRoaXMg
dHlwZSBvZiBmaWxlLgorCisgIEluIG9yZGVyIHRvIHNtb290aCB0aGUgdHJhbnNpdGlvbiwgcHl0
ZXN0IHdpbGwgaXNzdWUgYSB3YXJuaW5nIGluIGNhc2UgdGhlIGBgLS1qdW5pdHhtbGBgIG9wdGlv
bgorICBpcyBnaXZlbiBpbiB0aGUgY29tbWFuZCBsaW5lIGJ1dCA6Y29uZnZhbDpganVuaXRfZmFt
aWx5YCBpcyBub3QgZXhwbGljaXRseSBjb25maWd1cmVkIGluIGBgcHl0ZXN0LmluaWBgLgorCisg
IEZvciBtb3JlIGluZm9ybWF0aW9uLCBgc2VlIHRoZSBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjanVuaXQtZmFtaWx5LWRlZmF1bHQtdmFs
dWUtY2hhbmdlLXRvLXh1bml0Mj5gX18uCisKKworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBg
IzQ0ODggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQ4OD5g
XzogVGhlIHB5dGVzdCB0ZWFtIGhhcyBjcmVhdGVkIHRoZSBgcHl0ZXN0LXJlcG9ydGxvZyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LXJlcG9ydGxvZz5gX18KKyAgcGx1Z2lu
LCB3aGljaCBwcm92aWRlcyBhIG5ldyBgYC0tcmVwb3J0LWxvZz1GSUxFYGAgb3B0aW9uIHRoYXQg
d3JpdGVzICpyZXBvcnQgbG9ncyogaW50byBhIGZpbGUgYXMgdGhlIHRlc3Qgc2Vzc2lvbiBleGVj
dXRlcy4KKworICBFYWNoIGxpbmUgb2YgdGhlIHJlcG9ydCBsb2cgY29udGFpbnMgYSBzZWxmIGNv
bnRhaW5lZCBKU09OIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGEgdGVzdGluZyBldmVudCwKKyAg
c3VjaCBhcyBhIGNvbGxlY3Rpb24gb3IgYSB0ZXN0IHJlc3VsdCByZXBvcnQuIFRoZSBmaWxlIGlz
IGd1YXJhbnRlZWQgdG8gYmUgZmx1c2hlZCBhZnRlciB3cml0aW5nCisgIGVhY2ggbGluZSwgc28g
c3lzdGVtcyBjYW4gcmVhZCBhbmQgcHJvY2VzcyBldmVudHMgaW4gcmVhbC10aW1lLgorCisgIFRo
ZSBwbHVnaW4gaXMgbWVhbnQgdG8gcmVwbGFjZSB0aGUgYGAtLXJlc3VsdGxvZ2BgIG9wdGlvbiwg
d2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgbWVhbnQgdG8gYmUgcmVtb3ZlZAorICBpbiBhIGZ1dHVy
ZSByZWxlYXNlLiBJZiB5b3UgdXNlIGBgLS1yZXN1bHRsb2dgYCwgcGxlYXNlIHRyeSBvdXQgYGBw
eXRlc3QtcmVwb3J0bG9nYGAgYW5kCisgIHByb3ZpZGUgZmVlZGJhY2suCisKKworLSBgIzQ3MzAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDczMD5gXzogV2hl
biA6cHk6ZGF0YTpgc3lzLnB5Y2FjaGVfcHJlZml4YCAoUHl0aG9uIDMuOCspIGlzIHNldCwgaXQg
d2lsbCBiZSB1c2VkIGJ5IHB5dGVzdCB0byBjYWNoZSB0ZXN0IGZpbGVzIGNoYW5nZWQgYnkgdGhl
IGFzc2VydGlvbiByZXdyaXRpbmcgbWVjaGFuaXNtLgorCisgIFRoaXMgbWFrZXMgaXQgZWFzaWVy
IHRvIGJlbmVmaXQgb2YgY2FjaGVkIGBgLnB5Y2BgIGZpbGVzIGV2ZW4gb24gZmlsZSBzeXN0ZW1z
IHdpdGhvdXQgcGVybWlzc2lvbnMuCisKKworLSBgIzU1MTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTUxNT5gXzogQWxsb3cgc2VsZWN0aXZlIGF1dG8taW5k
ZW50YXRpb24gb2YgbXVsdGlsaW5lIGxvZyBtZXNzYWdlcy4KKworICBBZGRzIGNvbW1hbmQgbGlu
ZSBvcHRpb24gYGAtLWxvZy1hdXRvLWluZGVudGBgLCBjb25maWcgb3B0aW9uCisgIDpjb25mdmFs
OmBsb2dfYXV0b19pbmRlbnRgIGFuZCBzdXBwb3J0IGZvciBwZXItZW50cnkgY29uZmlndXJhdGlv
biBvZgorICBpbmRlbnRhdGlvbiBiZWhhdmlvciBvbiBjYWxscyB0byA6cHk6ZnVuYzpgcHl0aG9u
OmxvZ2dpbmcubG9nKClgLgorCisgIEFsdGVycyB0aGUgZGVmYXVsdCBmb3IgYXV0by1pbmRlbnRp
b24gZnJvbSBgYCJvbiJgYCB0byBgYCJvZmYiYGAuIFRoaXMKKyAgcmVzdG9yZXMgdGhlIG9sZGVy
IGJlaGF2aW9yIHRoYXQgZXhpc3RlZCBwcmlvciB0byB2NC42LjAuIFRoaXMKKyAgcmV2ZXJzaW9u
IHRvIGVhcmxpZXIgYmVoYXZpb3Igd2FzIGRvbmUgYmVjYXVzZSBpdCBpcyBiZXR0ZXIgdG8KKyAg
YWN0aXZhdGUgbmV3IGZlYXR1cmVzIHRoYXQgbWF5IGxlYWQgdG8gYnJva2VuIHRlc3RzIGV4cGxp
Y2l0bHkKKyAgcmF0aGVyIHRoYW4gaW1wbGljaXRseS4KKworCistIGAjNTkxNCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTE0PmBfOiA6Zml4dHVyZTpgdGVz
dGRpcmAgbGVhcm5lZCB0d28gbmV3IGZ1bmN0aW9ucywgOnB5OmZ1bmM6YH5fcHl0ZXN0LnB5dGVz
dGVyLkxpbmVNYXRjaGVyLm5vX2ZubWF0Y2hfbGluZWAgYW5kCisgIDpweTpmdW5jOmB+X3B5dGVz
dC5weXRlc3Rlci5MaW5lTWF0Y2hlci5ub19yZV9tYXRjaF9saW5lYC4KKworICBUaGUgZnVuY3Rp
b25zIGFyZSB1c2VkIHRvIGVuc3VyZSB0aGUgY2FwdHVyZWQgdGV4dCAqZG9lcyBub3QqIG1hdGNo
IHRoZSBnaXZlbgorICBwYXR0ZXJuLgorCisgIFRoZSBwcmV2aW91cyBpZGlvbSB3YXMgdG8gdXNl
IDpweTpmdW5jOmBweXRob246cmUubWF0Y2hgOgorCisgIC4uIGNvZGUtYmxvY2s6OiBweXRob24K
KworICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgYXNzZXJ0IHJlLm1h
dGNoKHBhdCwgcmVzdWx0LnN0ZG91dC5zdHIoKSkgaXMgTm9uZQorCisgIE9yIHRoZSBgYGluYGAg
b3BlcmF0b3I6CisKKyAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICBhc3NlcnQgdGV4dCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCisKKyAgQnV0IHRoZSBuZXcgZnVuY3Rpb25zIHByb2R1Y2UgYmVzdCBvdXRwdXQgb24gZmFp
bHVyZS4KKworCistIGAjNjA1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy82MDU3PmBfOiBBZGRlZCB0b2xlcmFuY2VzIHRvIGNvbXBsZXggdmFsdWVzIHdoZW4g
cHJpbnRpbmcgYGBweXRlc3QuYXBwcm94YGAuCisKKyAgRm9yIGV4YW1wbGUsIGBgcmVwcihweXRl
c3QuYXBwcm94KDMrNGopKWBgIHJldHVybnMgYGAoMys0aikgwrEgNWUtMDYg4oigIMKxMTgwwrBg
YC4gVGhpcyBpcyBwb2xhciBub3RhdGlvbiBpbmRpY2F0aW5nIGEgY2lyY2xlIGFyb3VuZCB0aGUg
ZXhwZWN0ZWQgdmFsdWUsIHdpdGggYSByYWRpdXMgb2YgNWUtMDYuIEZvciBgYGFwcHJveGBgIGNv
bXBhcmlzb25zIHRvIHJldHVybiBgYFRydWVgYCwgdGhlIGFjdHVhbCB2YWx1ZSBzaG91bGQgZmFs
bCB3aXRoaW4gdGhpcyBjaXJjbGUuCisKKworLSBgIzYwNjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA2MT5gXzogQWRkZWQgdGhlIHBsdWdpbm1hbmFnZXIg
YXMgYW4gYXJndW1lbnQgdG8gYGBweXRlc3RfYWRkb3B0aW9uYGAKKyAgc28gdGhhdCBob29rcyBj
YW4gYmUgaW52b2tlZCB3aGVuIHNldHRpbmcgdXAgY29tbWFuZCBsaW5lIG9wdGlvbnMuIFRoaXMg
aXMKKyAgdXNlZnVsIGZvciBoYXZpbmcgb25lIHBsdWdpbiBjb21tdW5pY2F0ZSB0aGluZ3MgdG8g
YW5vdGhlciBwbHVnaW4sCisgIHN1Y2ggYXMgZGVmYXVsdCB2YWx1ZXMgb3Igd2hpY2ggc2V0IG9m
IGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIGFkZC4KKworCisKK0ltcHJvdmVtZW50cworLS0tLS0t
LS0tLS0tCisKKy0gYCM1MDYxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzUwNjE+YF86IFVzZSBtdWx0aXBsZSBjb2xvcnMgd2l0aCB0ZXJtaW5hbCBzdW1tYXJ5
IHN0YXRpc3RpY3MuCisKKworLSBgIzU2MzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNTYzMD5gXzogUXVpdHRpbmcgZnJvbSBkZWJ1Z2dlcnMgaXMgbm93IHBy
b3Blcmx5IGhhbmRsZWQgaW4gYGBkb2N0ZXN0YGAgaXRlbXMuCisKKworLSBgIzU5MjQgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTkyND5gXzogSW1wcm92ZWQg
dmVyYm9zZSBkaWZmIG91dHB1dCB3aXRoIHNlcXVlbmNlcy4KKworICBCZWZvcmU6CisKKyAgOjoK
KworICAgICAgRSAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgWyd2ZXJzaW9uJywgJy4uLnZlcnNp
b25faW5mbyddID09IFsndmVyc2lvbicsICcuLi52ZXJzaW9uJywgLi4uXQorICAgICAgRSAgICAg
UmlnaHQgY29udGFpbnMgMyBtb3JlIGl0ZW1zLCBmaXJzdCBleHRyYSBpdGVtOiAnICcKKyAgICAg
IEUgICAgIEZ1bGwgZGlmZjoKKyAgICAgIEUgICAgIC0gWyd2ZXJzaW9uJywgJ3ZlcnNpb25faW5m
bycsICdzeXMudmVyc2lvbicsICdzeXMudmVyc2lvbl9pbmZvJ10KKyAgICAgIEUgICAgICsgWyd2
ZXJzaW9uJywKKyAgICAgIEUgICAgICsgICd2ZXJzaW9uX2luZm8nLAorICAgICAgRSAgICAgKyAg
J3N5cy52ZXJzaW9uJywKKyAgICAgIEUgICAgICsgICdzeXMudmVyc2lvbl9pbmZvJywKKyAgICAg
IEUgICAgICsgICcgJywKKyAgICAgIEUgICAgICsgICdzeXMudmVyc2lvbicsCisgICAgICBFICAg
ICArICAnc3lzLnZlcnNpb25faW5mbyddCisKKyAgQWZ0ZXI6CisKKyAgOjoKKworICAgICAgRSAg
IEFzc2VydGlvbkVycm9yOiBhc3NlcnQgWyd2ZXJzaW9uJywgJy4uLnZlcnNpb25faW5mbyddID09
IFsndmVyc2lvbicsICcuLi52ZXJzaW9uJywgLi4uXQorICAgICAgRSAgICAgUmlnaHQgY29udGFp
bnMgMyBtb3JlIGl0ZW1zLCBmaXJzdCBleHRyYSBpdGVtOiAnICcKKyAgICAgIEUgICAgIEZ1bGwg
ZGlmZjoKKyAgICAgIEUgICAgICAgWworICAgICAgRSAgICAgICAgJ3ZlcnNpb24nLAorICAgICAg
RSAgICAgICAgJ3ZlcnNpb25faW5mbycsCisgICAgICBFICAgICAgICAnc3lzLnZlcnNpb24nLAor
ICAgICAgRSAgICAgICAgJ3N5cy52ZXJzaW9uX2luZm8nLAorICAgICAgRSAgICAgKyAgJyAnLAor
ICAgICAgRSAgICAgKyAgJ3N5cy52ZXJzaW9uJywKKyAgICAgIEUgICAgICsgICdzeXMudmVyc2lv
bl9pbmZvJywKKyAgICAgIEUgICAgICAgXQorCisKKy0gYCM1OTM0IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5MzQ+YF86IGBgcmVwcmBgIG9mIGBgRXhjZXB0
aW9uSW5mb2BgIG9iamVjdHMgaGFzIGJlZW4gaW1wcm92ZWQgdG8gaG9ub3IgdGhlIGBgX19yZXBy
X19gYCBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgZXhjZXB0aW9uLgorCistIGAjNTkzNiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTM2PmBfOiBEaXNwbGF5
IHVudHJ1bmNhdGVkIGFzc2VydGlvbiBtZXNzYWdlIHdpdGggYGAtdnZgYC4KKworCistIGAjNTk5
MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTkwPmBfOiBG
aXhlZCBwbHVyYWxpdHkgbWlzbWF0Y2ggaW4gdGVzdCBzdW1tYXJ5IChlLmcuIGRpc3BsYXkgIjEg
ZXJyb3IiIGluc3RlYWQgb2YgIjEgZXJyb3JzIikuCisKKworLSBgIzYwMDggPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjAwOD5gXzogYGBDb25maWcuSW52b2Nh
dGlvblBhcmFtcy5hcmdzYGAgaXMgbm93IGFsd2F5cyBhIGBgdHVwbGVgYCB0byBiZXR0ZXIgY29u
dmV5IHRoYXQgaXQgc2hvdWxkIGJlCisgIGltbXV0YWJsZSBhbmQgYXZvaWQgYWNjaWRlbnRhbCBt
b2RpZmljYXRpb25zLgorCisKKy0gYCM2MDIzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzYwMjM+YF86IGBgcHl0ZXN0Lm1haW5gYCByZXR1cm5zIGEgYGBweXRl
c3QuRXhpdENvZGVgYCBpbnN0YW5jZSBub3csIGV4Y2VwdCBmb3Igd2hlbiBjdXN0b20gZXhpdCBj
b2RlcyBhcmUgdXNlZCAod2hlcmUgaXQgcmV0dXJucyBgYGludGBgIHRoZW4gc3RpbGwpLgorCisK
Ky0gYCM2MDI2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYw
MjY+YF86IEFsaWduIHByZWZpeGVzIGluIG91dHB1dCBvZiBweXRlc3RlcidzIGBgTGluZU1hdGNo
ZXJgYC4KKworCistIGAjNjA1OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy82MDU5PmBfOiBDb2xsZWN0aW9uIGVycm9ycyBhcmUgcmVwb3J0ZWQgYXMgZXJyb3Jz
IChhbmQgbm90IGZhaWx1cmVzIGxpa2UgYmVmb3JlKSBpbiB0aGUgdGVybWluYWwncyBzaG9ydCB0
ZXN0IHN1bW1hcnkuCisKKworLSBgIzYwNjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjA2OT5gXzogYGBweXRlc3Rlci5zcGF3bmBgIGRvZXMgbm90IHNraXAv
eGZhaWwgdGVzdHMgb24gRnJlZUJTRCBhbnltb3JlIHVuY29uZGl0aW9uYWxseS4KKworCistIGAj
NjA5NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MDk3PmBf
OiBUaGUgIlsuLi4lXSIgaW5kaWNhdG9yIGluIHRoZSB0ZXN0IHN1bW1hcnkgaXMgbm93IGNvbG9y
ZWQgYWNjb3JkaW5nIHRvIHRoZSBmaW5hbCAobmV3KSBtdWx0aS1jb2xvcmVkIGxpbmUncyBtYWlu
IGNvbG9yLgorCisKKy0gYCM2MTE2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzYxMTY+YF86IEFkZGVkIGBgLS1jb2BgIGFzIGEgc3lub255bSB0byBgYC0tY29s
bGVjdC1vbmx5YGAuCisKKworLSBgIzYxNDggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNjE0OD5gXzogYGBhdG9taWN3cml0ZXNgYCBpcyBub3cgb25seSB1c2Vk
IG9uIFdpbmRvd3MsIGZpeGluZyBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBhc3NlcnRp
b24gcmV3cml0aW5nIG9uIFVuaXguCisKKworLSBgIzYxNTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjE1Mj5gXzogTm93IHBhcmFtZXRyaXphdGlvbiB3aWxs
IHVzZSB0aGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZiBhbnkgb2JqZWN0IGZvciB0aGUgaWQs
IGlmIHByZXNlbnQuIFByZXZpb3VzbHkgaXQgd291bGQgb25seSB1c2UgYGBfX25hbWVfX2BgIGZv
ciBmdW5jdGlvbnMgYW5kIGNsYXNzZXMuCisKKworLSBgIzYxNzYgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjE3Nj5gXzogSW1wcm92ZWQgZmFpbHVyZSByZXBv
cnRpbmcgd2l0aCBweXRlc3RlcidzIGBgSG9va3JlY29yZGVyLmFzc2VydG91dGNvbWVgYC4KKwor
CistIGAjNjE4MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82
MTgxPmBfOiBUaGUgcmVhc29uIGZvciBhIHN0b3BwZWQgc2Vzc2lvbiwgZS5nLiB3aXRoIGBgLS1t
YXhmYWlsYGAgLyBgYC14YGAsIG5vdyBnZXRzIHJlcG9ydGVkIGluIHRoZSB0ZXN0IHN1bW1hcnku
CisKKworLSBgIzYyMDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNjIwNj5gXzogSW1wcm92ZWQgYGBjYWNoZS5zZXRgYCByb2J1c3RuZXNzIGFuZCBwZXJmb3Jt
YW5jZS4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMyMDQ5IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwNDk+YF86IEZpeGVkIGBgLS1zZXR1
cC1wbGFuYGAgc2hvd2luZyBpbmFjY3VyYXRlIGluZm9ybWF0aW9uIGFib3V0IGZpeHR1cmUgbGlm
ZXRpbWVzLgorCisKKy0gYCMyNTQ4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI1NDg+YF86IEZpeGVkIGxpbmUgb2Zmc2V0IG1pc21hdGNoIG9mIHNraXBwZWQg
dGVzdHMgaW4gdGVybWluYWwgc3VtbWFyeS4KKworCistIGAjNjAzOSA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MDM5PmBfOiBUaGUgYGBQeXRlc3REb2N0ZXN0
UnVubmVyYGAgaXMgbm93IHByb3Blcmx5IGludmFsaWRhdGVkIHdoZW4gdW5jb25maWd1cmluZyB0
aGUgZG9jdGVzdCBwbHVnaW4uCisKKyAgVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiB1c2VkIHdpdGgg
YGBweXRlc3RlcmBgJ3MgYGBydW5weXRlc3RfaW5wcm9jZXNzYGAuCisKKworLSBgIzYwNDcgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA0Nz5gXzogQmFzZUV4
Y2VwdGlvbnMgYXJlIG5vdyBoYW5kbGVkIGluIGBgc2FmZXJlcHJgYCwgd2hpY2ggaW5jbHVkZXMg
YGBweXRlc3QuZmFpbC5FeGNlcHRpb25gYCBldGMuCisKKworLSBgIzYwNzQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjA3ND5gXzogcHl0ZXN0ZXI6IGZpeGVk
IG9yZGVyIG9mIGFyZ3VtZW50cyBpbiBgYHJtX3JmYGAgd2FybmluZyB3aGVuIGNsZWFuaW5nIHVw
IHRlbXBvcmFyeSBkaXJlY3RvcmllcywgYW5kIGRvIG5vdCBlbWl0IHdhcm5pbmdzIGZvciBlcnJv
cnMgd2l0aCBgYG9zLm9wZW5gYC4KKworCistIGAjNjE4OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MTg5PmBfOiBGaXhlZCByZXN1bHQgb2YgYGBnZXRtb2Rw
YXRoYGAgbWV0aG9kLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBgIzQ5MDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDkwMT5gXzogYGBSdW5SZXN1bHRgYCBmcm9tIGBgcHl0ZXN0ZXJgYCBu
b3cgZGlzcGxheXMgdGhlIG1uZW1vbmljIG9mIHRoZSBgYHJldGBgIGF0dHJpYnV0ZSB3aGVuIGl0
IGlzIGEKKyAgdmFsaWQgYGBweXRlc3QuRXhpdENvZGVgYCB2YWx1ZS4KKworCitweXRlc3QgNS4y
LjQgKDIwMTktMTEtMTUpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcwor
LS0tLS0tLS0tCisKKy0gYCM2MTk0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzYxOTQ+YF86IEZpeCBpbmNvcnJlY3QgZGlzY292ZXJ5IG9mIG5vbi10ZXN0IGBg
X19pbml0X18ucHlgYCBmaWxlcy4KKworCistIGAjNjE5NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MTk3PmBfOiBSZXZlcnQgIlRoZSBmaXJzdCB0ZXN0IGlu
IGEgcGFja2FnZSAoYGBfX2luaXRfXy5weWBgKSBtYXJrZWQgd2l0aCBgYEBweXRlc3QubWFyay5z
a2lwYGAgaXMgbm93IGNvcnJlY3RseSBza2lwcGVkLiIuCisKKworcHl0ZXN0IDUuMi4zICgyMDE5
LTExLTE0KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0t
LQorCistIGAjNTgzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy81ODMwPmBfOiBUaGUgZmlyc3QgdGVzdCBpbiBhIHBhY2thZ2UgKGBgX19pbml0X18ucHlgYCkg
bWFya2VkIHdpdGggYGBAcHl0ZXN0Lm1hcmsuc2tpcGBgIGlzIG5vdyBjb3JyZWN0bHkgc2tpcHBl
ZC4KKworCistIGAjNjA5OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy82MDk5PmBfOiBGaXggYGAtLXRyYWNlYGAgd2hlbiB1c2VkIHdpdGggcGFyYW1ldHJpemVk
IGZ1bmN0aW9ucy4KKworCistIGAjNjE4MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy82MTgzPmBfOiBVc2luZyBgYHJlcXVlc3RgYCBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgbm93IHByb2R1Y2VzIGEgbW9yZQor
ICB1c2VyLWZyaWVuZGx5IGVycm9yLgorCisKK3B5dGVzdCA1LjIuMiAoMjAxOS0xMC0yNCkKKz09
PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzUy
MDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTIwNj5gXzog
Rml4IGBgLS1uZmBgIHRvIG5vdCBmb3JnZXQgYWJvdXQga25vd24gbm9kZWlkcyB3aXRoIHBhcnRp
YWwgdGVzdCBzZWxlY3Rpb24uCisKKworLSBgIzU5MDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTkwNj5gXzogRml4IGNyYXNoIHdpdGggYGBLZXlib2FyZElu
dGVycnVwdGBgIGR1cmluZyBgYC0tc2V0dXAtc2hvd2BgLgorCisKKy0gYCM1OTQ2IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5NDY+YF86IEZpeGVkIGlzc3Vl
IHdoZW4gcGFyYW1ldHJpemluZyBmaXh0dXJlcyB3aXRoIG51bXB5IGFycmF5cyAoYW5kIHBvc3Np
Ymx5IG90aGVyIHNlcXVlbmNlLWxpa2UgdHlwZXMpLgorCisKKy0gYCM2MDQ0IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYwNDQ+YF86IFByb3Blcmx5IGlnbm9y
ZSBgYEZpbGVOb3RGb3VuZEVycm9yYGAgZXhjZXB0aW9ucyB3aGVuIHRyeWluZyB0byByZW1vdmUg
b2xkIHRlbXBvcmFyeSBkaXJlY3RvcmllcywKKyAgZm9yIGluc3RhbmNlIHdoZW4gbXVsdGlwbGUg
cHJvY2Vzc2VzIHRyeSB0byByZW1vdmUgdGhlIHNhbWUgZGlyZWN0b3J5IChjb21tb24gd2l0aCBg
YHB5dGVzdC14ZGlzdGBgCisgIGZvciBleGFtcGxlKS4KKworCitweXRlc3QgNS4yLjEgKDIwMTkt
MTAtMDYpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0t
CisKKy0gYCM1OTAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzU5MDI+YF86IEZpeCB3YXJuaW5ncyBhYm91dCBkZXByZWNhdGVkIGBgY21wYGAgYXR0cmlidXRl
IGluIGBgYXR0cnM+PTE5LjJgYC4KKworCitweXRlc3QgNS4yLjAgKDIwMTktMDktMjgpCis9PT09
PT09PT09PT09PT09PT09PT09PT09CisKK0RlcHJlY2F0aW9ucworLS0tLS0tLS0tLS0tCisKKy0g
YCMxNjgyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2ODI+
YF86IFBhc3NpbmcgYXJndW1lbnRzIHRvIHB5dGVzdC5maXh0dXJlKCkgYXMgcG9zaXRpb25hbCBh
cmd1bWVudHMgaXMgZGVwcmVjYXRlZCAtIHBhc3MgdGhlbQorICBhcyBhIGtleXdvcmQgYXJndW1l
bnQgaW5zdGVhZC4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjMTY4MiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjgyPmBfOiBUaGUgYGBzY29w
ZWBgIHBhcmFtZXRlciBvZiBgYEBweXRlc3QuZml4dHVyZWBgIGNhbiBub3cgYmUgYSBjYWxsYWJs
ZSB0aGF0IHJlY2VpdmVzCisgIHRoZSBmaXh0dXJlIG5hbWUgYW5kIHRoZSBgYGNvbmZpZ2BgIG9i
amVjdCBhcyBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4KKyAgU2VlIGB0aGUgZG9jcyA8aHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2ZpeHR1cmUuaHRtbCNkeW5hbWljLXNjb3BlPmBf
XyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCistIGAjNTc2NCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NzY0PmBfOiBOZXcgYmVoYXZpb3Igb2YgdGhlIGBg
LS1wYXN0ZWJpbmBgIG9wdGlvbjogZmFpbHVyZXMgdG8gY29ubmVjdCB0byB0aGUgcGFzdGViaW4g
c2VydmVyIGFyZSByZXBvcnRlZCwgd2l0aG91dCBmYWlsaW5nIHRoZSBweXRlc3QgcnVuCisKKwor
CitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTgwNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81ODA2PmBfOiBGaXggImxleGVyIiBiZWluZyB1c2VkIHdo
ZW4gdXBsb2FkaW5nIHRvIGJwYXN0ZS5uZXQgZnJvbSBgYC0tcGFzdGViaW5gYCB0byAidGV4dCIu
CisKKworLSBgIzU4ODQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNTg4ND5gXzogRml4IGBgLS1zZXR1cC1vbmx5YGAgYW5kIGBgLS1zZXR1cC1zaG93YGAgZm9y
IGN1c3RvbSBweXRlc3QgaXRlbXMuCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNTA1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDU2PmBfOiBUaGUgSGVscEZvcm1hdHRlciB1c2VzIGBg
cHkuaW8uZ2V0X3Rlcm1pbmFsX3dpZHRoYGAgZm9yIGJldHRlciB3aWR0aCBkZXRlY3Rpb24uCisK
KworcHl0ZXN0IDUuMS4zICgyMDE5LTA5LTE4KQorPT09PT09PT09PT09PT09PT09PT09PT09PQor
CitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTgwNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81ODA3PmBfOiBGaXggcHlweTMuNiAobmlnaHRseSkgb24g
d2luZG93cy4KKworCistIGAjNTgxMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81ODExPmBfOiBIYW5kbGUgYGAtLWZ1bGx0cmFjZWBgIGNvcnJlY3RseSB3aXRo
IGBgcHl0ZXN0LnJhaXNlc2BgLgorCisKKy0gYCM1ODE5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU4MTk+YF86IFdpbmRvd3M6IEZpeCByZWdyZXNzaW9uIHdp
dGggY29uZnRlc3Qgd2hvc2UgcXVhbGlmaWVkIG5hbWUgY29udGFpbnMgdXBwZXJjYXNlCisgIGNo
YXJhY3RlcnMgKGludHJvZHVjZWQgYnkgIzU3OTIpLgorCisKK3B5dGVzdCA1LjEuMiAoMjAxOS0w
OC0zMCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0K
KworLSBgIzIyNzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MjI3MD5gXzogRml4ZWQgYGBzZWxmYGAgcmVmZXJlbmNlIGluIGZ1bmN0aW9uLXNjb3BlZCBmaXh0
dXJlcyBkZWZpbmVkIHBsdWdpbiBjbGFzc2VzOiBwcmV2aW91c2x5IGBgc2VsZmBgCisgIHdvdWxk
IGJlIGEgcmVmZXJlbmNlIHRvIGEgKnRlc3QqIGNsYXNzLCBub3QgdGhlICpwbHVnaW4qIGNsYXNz
LgorCisKKy0gYCM1NzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNTcwPmBfOiBGaXhlZCBsb25nIHN0YW5kaW5nIGlzc3VlIHdoZXJlIGZpeHR1cmUgc2NvcGUg
d2FzIG5vdCByZXNwZWN0ZWQgd2hlbiBpbmRpcmVjdCBmaXh0dXJlcyB3ZXJlIHVzZWQgZHVyaW5n
CisgIHBhcmFtZXRyaXphdGlvbi4KKworCistIGAjNTc4MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NzgyPmBfOiBGaXggZGVjb2RpbmcgZXJyb3Igd2hlbiBw
cmludGluZyBhbiBlcnJvciByZXNwb25zZSBmcm9tIGBgLS1wYXN0ZWJpbmBgLgorCisKKy0gYCM1
Nzg2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU3ODY+YF86
IENoYWluZWQgZXhjZXB0aW9ucyBpbiB0ZXN0IGFuZCBjb2xsZWN0aW9uIHJlcG9ydHMgYXJlIG5v
dyBjb3JyZWN0bHkgc2VyaWFsaXplZCwgYWxsb3dpbmcgcGx1Z2lucyBsaWtlCisgIGBgcHl0ZXN0
LXhkaXN0YGAgdG8gZGlzcGxheSB0aGVtIHByb3Blcmx5LgorCisKKy0gYCM1NzkyIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU3OTI+YF86IFdpbmRvd3M6IEZp
eCBlcnJvciB0aGF0IG9jY3VycyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbiBsb2FkaW5n
CisgIGBgY29uZnRlc3QucHlgYCBmcm9tIGEgd29ya2luZyBkaXJlY3RvcnkgdGhhdCBoYXMgY2Fz
aW5nIG90aGVyIHRoYW4gdGhlIG9uZSBzdG9yZWQKKyAgaW4gdGhlIGZpbGVzeXN0ZW0gKGUuZy4s
IGBgYzpcdGVzdGBgIGluc3RlYWQgb2YgYGBDOlx0ZXN0YGApLgorCisKK3B5dGVzdCA1LjEuMSAo
MjAxOS0wOC0yMCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzU3NTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNTc1MT5gXzogRml4ZWQgYGBUeXBlRXJyb3JgYCB3aGVuIGltcG9ydGluZyBweXRlc3Qg
b24gUHl0aG9uIDMuNS4wIGFuZCAzLjUuMS4KKworCitweXRlc3QgNS4xLjAgKDIwMTktMDgtMTUp
Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbW92YWxzCistLS0tLS0tLQorCistIGAj
NTE4MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTgwPmBf
OiBBcyBwZXIgb3VyIHBvbGljeSwgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBoYXZlIGJlZW4gZGVw
cmVjYXRlZCBpbiB0aGUgNC5YIHNlcmllcyBhbmQgYXJlIG5vdworICByZW1vdmVkOgorCisgICog
YGBSZXF1ZXN0LmdldGZ1bmNhcmd2YWx1ZWBgOiB1c2UgYGBSZXF1ZXN0LmdldGZpeHR1cmV2YWx1
ZWBgIGluc3RlYWQuCisKKyAgKiBgYHB5dGVzdC5yYWlzZXNgYCBhbmQgYGBweXRlc3Qud2FybnNg
YCBubyBsb25nZXIgc3VwcG9ydCBzdHJpbmdzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuCisKKyAg
KiBgYG1lc3NhZ2VgYCBwYXJhbWV0ZXIgb2YgYGBweXRlc3QucmFpc2VzYGAuCisKKyAgKiBgYHB5
dGVzdC5yYWlzZXNgYCwgYGBweXRlc3Qud2FybnNgYCBhbmQgYGBQYXJhbWV0ZXJTZXQucGFyYW1g
YCBub3cgdXNlIG5hdGl2ZSBrZXl3b3JkLW9ubHkKKyAgICBzeW50YXguIFRoaXMgbWlnaHQgY2hh
bmdlIHRoZSBleGNlcHRpb24gbWVzc2FnZSBmcm9tIHByZXZpb3VzIHZlcnNpb25zLCBidXQgdGhl
eSBzdGlsbCByYWlzZQorICAgIGBgVHlwZUVycm9yYGAgb24gdW5rbm93biBrZXl3b3JkIGFyZ3Vt
ZW50cyBhcyBiZWZvcmUuCisKKyAgKiBgYHB5dGVzdC5jb25maWdgYCBnbG9iYWwgdmFyaWFibGUu
CisKKyAgKiBgYHRtcGRpcl9mYWN0b3J5LmVuc3VyZXRlbXBgYCBtZXRob2QuCisKKyAgKiBgYHB5
dGVzdF9sb2d3YXJuaW5nYGAgaG9vay4KKworICAqIGBgUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmdg
YCB3YXJuaW5nIHR5cGUuCisKKyAgKiBgYHJlcXVlc3RgYCBpcyBub3cgYSByZXNlcnZlZCBuYW1l
IGZvciBmaXh0dXJlcy4KKworCisgIEZvciBtb3JlIGluZm9ybWF0aW9uIGNvbnN1bHQKKyAgYERl
cHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9kZXByZWNhdGlvbnMuaHRtbD5gX18gaW4gdGhlIGRvY3MuCisKKworLSBgIzU1NjUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTU2NT5gXzogUmVtb3ZlZCB1
bnVzZWQgc3VwcG9ydCBjb2RlIGZvciBgdW5pdHRlc3QyIDxodHRwczovL3B5cGkub3JnL3Byb2pl
Y3QvdW5pdHRlc3QyLz5gX18uCisKKyAgVGhlIGBgdW5pdHRlc3QyYGAgYmFja3BvcnQgbW9kdWxl
IGlzIG5vIGxvbmdlcgorICBuZWNlc3Nhcnkgc2luY2UgUHl0aG9uIDMuMyssIGFuZCB0aGUgc21h
bGwgYW1vdW50IG9mIGNvZGUgaW4gcHl0ZXN0IHRvIHN1cHBvcnQgaXQgYWxzbyBkb2Vzbid0IHNl
ZW0KKyAgdG8gYmUgdXNlZDogYWZ0ZXIgcmVtb3ZlZCwgYWxsIHRlc3RzIHN0aWxsIHBhc3MgdW5j
aGFuZ2VkLgorCisgIEFsdGhvdWdoIG91ciBwb2xpY3kgaXMgdG8gaW50cm9kdWNlIGEgZGVwcmVj
YXRpb24gcGVyaW9kIGJlZm9yZSByZW1vdmluZyBhbnkgZmVhdHVyZXMgb3Igc3VwcG9ydAorICBm
b3IgdGhpcmQgcGFydHkgbGlicmFyaWVzLCBiZWNhdXNlIHRoaXMgY29kZSBpcyBhcHBhcmVudGx5
IG5vdCB1c2VkCisgIGF0IGFsbCAoZXZlbiBpZiBgYHVuaXR0ZXN0MmBgIGlzIHVzZWQgYnkgYSB0
ZXN0IHN1aXRlIGV4ZWN1dGVkIGJ5IHB5dGVzdCksIGl0IHdhcyBkZWNpZGVkIHRvCisgIHJlbW92
ZSBpdCBpbiB0aGlzIHJlbGVhc2UuCisKKyAgSWYgeW91IGV4cGVyaWVuY2UgYSByZWdyZXNzaW9u
IGJlY2F1c2Ugb2YgdGhpcywgcGxlYXNlCisgIGBmaWxlIGFuIGlzc3VlIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzL25ldz5gX18uCisKKworLSBgIzU2MTUgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTYxNT5gXzogYGBweXRl
c3QuZmFpbGBgLCBgYHB5dGVzdC54ZmFpbGBgIGFuZCBgYHB5dGVzdC5za2lwYGAgbm8gbG9uZ2Vy
IHN1cHBvcnQgYnl0ZXMgZm9yIHRoZSBtZXNzYWdlIGFyZ3VtZW50LgorCisgIFRoaXMgd2FzIHN1
cHBvcnRlZCBmb3IgUHl0aG9uIDIgd2hlcmUgaXQgd2FzIHRlbXB0aW5nIHRvIHVzZSBgYCJtZXNz
YWdlImBgCisgIGluc3RlYWQgb2YgYGB1Im1lc3NhZ2UiYGAuCisKKyAgUHl0aG9uIDMgY29kZSBp
cyB1bmxpa2VseSB0byBwYXNzIGBgYnl0ZXNgYCB0byB0aGVzZSBmdW5jdGlvbnMuIElmIHlvdSBk
bywKKyAgcGxlYXNlIGRlY29kZSBpdCB0byBhbiBgYHN0cmBgIGJlZm9yZWhhbmQuCisKKworCitG
ZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzU1NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTU2ND5gXzogTmV3IGBgQ29uZmlnLmludm9jYXRpb25fYXJnc2Bg
IGF0dHJpYnV0ZSBjb250YWluaW5nIHRoZSB1bmNoYW5nZWQgYXJndW1lbnRzIHBhc3NlZCB0byBg
YHB5dGVzdC5tYWluKClgYC4KKworCistIGAjNTU3NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTc2PmBfOiBOZXcgYE5VTUJFUiA8aHR0cHM6Ly9kb2NzLnB5
dGVzdC5vcmcvZW4vc3RhYmxlL2RvY3Rlc3QuaHRtbCN1c2luZy1kb2N0ZXN0LW9wdGlvbnM+YF9f
CisgIG9wdGlvbiBmb3IgZG9jdGVzdHMgdG8gaWdub3JlIGlycmVsZXZhbnQgZGlmZmVyZW5jZXMg
aW4gZmxvYXRpbmctcG9pbnQgbnVtYmVycy4KKyAgSW5zcGlyZWQgYnkgU8OpYmFzdGllbiBCb2lz
Z8OpcmF1bHQncyBgbnVtdGVzdCA8aHR0cHM6Ly9naXRodWIuY29tL2JvaXNnZXJhL251bXRlc3Q+
YF9fCisgIGV4dGVuc2lvbiBmb3IgZG9jdGVzdC4KKworCisKK0ltcHJvdmVtZW50cworLS0tLS0t
LS0tLS0tCisKKy0gYCM1NDcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzU0NzE+YF86IEpVbml0IFhNTCBub3cgaW5jbHVkZXMgYSB0aW1lc3RhbXAgYW5kIGhv
c3RuYW1lIGluIHRoZSB0ZXN0c3VpdGUgdGFnLgorCisKKy0gYCM1NzA3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU3MDc+YF86IFRpbWUgdGFrZW4gdG8gcnVu
IHRoZSB0ZXN0IHN1aXRlIG5vdyBpbmNsdWRlcyBhIGh1bWFuLXJlYWRhYmxlIHJlcHJlc2VudGF0
aW9uIHdoZW4gaXQgdGFrZXMgb3ZlcgorICA2MCBzZWNvbmRzLCBmb3IgZXhhbXBsZTo6CisKKyAg
ICAgID09PT09IDIgZmFpbGVkIGluIDEwMi43MHMgKDA6MDE6NDIpID09PT09CisKKworCitCdWcg
Rml4ZXMKKy0tLS0tLS0tLQorCistIGAjNDM0NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy80MzQ0PmBfOiBGaXggUnVudGltZUVycm9yL1N0b3BJdGVyYXRpb24g
d2hlbiB0cnlpbmcgdG8gY29sbGVjdCBwYWNrYWdlIHdpdGggIl9faW5pdF9fLnB5IiBvbmx5Lgor
CisKKy0gYCM1MTE1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzUxMTU+YF86IFdhcm5pbmdzIGlzc3VlZCBkdXJpbmcgYGBweXRlc3RfY29uZmlndXJlYGAgYXJl
IGV4cGxpY2l0bHkgbm90IHRyZWF0ZWQgYXMgZXJyb3JzLCBldmVuIGlmIGNvbmZpZ3VyZWQgYXMg
c3VjaCwgYmVjYXVzZSBpdCBvdGhlcndpc2UgY29tcGxldGVseSBicmVha3MgcHl0ZXN0LgorCisK
Ky0gYCM1NDc3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0
Nzc+YF86IFRoZSBYTUwgZmlsZSBwcm9kdWNlZCBieSBgYC0tanVuaXR4bWxgYCBub3cgY29ycmVj
dGx5IGNvbnRhaW4gYSBgYDx0ZXN0c3VpdGVzPmBgIHJvb3QgZWxlbWVudC4KKworCistIGAjNTUy
NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTI0PmBfOiBG
aXggaXNzdWUgd2hlcmUgYGB0bXBfcGF0aGBgIGFuZCBgYHRtcGRpcmBgIHdvdWxkIG5vdCByZW1v
dmUgZGlyZWN0b3JpZXMgY29udGFpbmluZyBmaWxlcyBtYXJrZWQgYXMgcmVhZC1vbmx5LAorICB3
aGljaCBjb3VsZCBsZWFkIHRvIHB5dGVzdCBjcmFzaGluZyB3aGVuIGV4ZWN1dGVkIGEgc2Vjb25k
IHRpbWUgd2l0aCB0aGUgYGAtLWJhc2V0ZW1wYGAgb3B0aW9uLgorCisKKy0gYCM1NTM3IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1Mzc+YF86IFJlcGxhY2Ug
YGBpbXBvcnRsaWJfbWV0YWRhdGFgYCBiYWNrcG9ydCB3aXRoIGBgaW1wb3J0bGliLm1ldGFkYXRh
YGAgZnJvbSB0aGUKKyAgc3RhbmRhcmQgbGlicmFyeSBvbiBQeXRob24gMy44Ky4KKworCistIGAj
NTU3OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTc4PmBf
OiBJbXByb3ZlIHR5cGUgY2hlY2tpbmcgZm9yIHNvbWUgZXhjZXB0aW9uLXJhaXNpbmcgZnVuY3Rp
b25zIChgYHB5dGVzdC54ZmFpbGBgLCBgYHB5dGVzdC5za2lwYGAsIGV0YykKKyAgc28gdGhleSBw
cm92aWRlIGJldHRlciBlcnJvciBtZXNzYWdlcyB3aGVuIHVzZXJzIG1lYW50IHRvIHVzZSBtYXJr
cyAoZm9yIGV4YW1wbGUgYGBAcHl0ZXN0LnhmYWlsYGAKKyAgaW5zdGVhZCBvZiBgYEBweXRlc3Qu
bWFyay54ZmFpbGBgKS4KKworCistIGAjNTYwNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy81NjA2PmBfOiBGaXhlZCBpbnRlcm5hbCBlcnJvciB3aGVuIHRlc3Qg
ZnVuY3Rpb25zIHdlcmUgcGF0Y2hlZCB3aXRoIG9iamVjdHMgdGhhdCBjYW5ub3QgYmUgY29tcGFy
ZWQKKyAgZm9yIHRydXRoIHZhbHVlcyBhZ2FpbnN0IG90aGVycywgbGlrZSBgYG51bXB5YGAgYXJy
YXlzLgorCisKKy0gYCM1NjM0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzU2MzQ+YF86IGBgcHl0ZXN0LmV4aXRgYCBpcyBub3cgY29ycmVjdGx5IGhhbmRsZWQg
aW4gYGB1bml0dGVzdGBgIGNhc2VzLgorICBUaGlzIG1ha2VzIGBgdW5pdHRlc3RgYCBjYXNlcyBo
YW5kbGUgYGBxdWl0YGAgZnJvbSBweXRlc3QncyBwZGIgY29ycmVjdGx5LgorCisKKy0gYCM1NjUw
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2NTA+YF86IElt
cHJvdmVkIG91dHB1dCB3aGVuIHBhcnNpbmcgYW4gaW5pIGNvbmZpZ3VyYXRpb24gZmlsZSBmYWls
cy4KKworCistIGAjNTcwMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81NzAxPmBfOiBGaXggY29sbGVjdGlvbiBvZiBgYHN0YXRpY21ldGhvZGBgIG9iamVjdHMg
ZGVmaW5lZCB3aXRoIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYC4KKworCistIGAjNTczNCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NzM0PmBfOiBTa2lwIGFzeW5j
IGdlbmVyYXRvciB0ZXN0IGZ1bmN0aW9ucywgYW5kIHVwZGF0ZSB0aGUgd2FybmluZyBtZXNzYWdl
IHRvIHJlZmVyIHRvIGBgYXN5bmMgZGVmYGAgZnVuY3Rpb25zLgorCisKKworSW1wcm92ZWQgRG9j
dW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNTY2OSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NjY5PmBfOiBBZGQgZG9jc3RyaW5n
IGZvciBgYFRlc3RkaXIuY29weV9leGFtcGxlYGAuCisKKworCitUcml2aWFsL0ludGVybmFsIENo
YW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNTA5NSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDk1PmBfOiBYTUwgZmlsZXMgb2YgdGhl
IGBgeHVuaXQyYGAgZmFtaWx5IGFyZSBub3cgdmFsaWRhdGVkIGFnYWluc3QgdGhlIHNjaGVtYSBi
eSBweXRlc3QncyBvd24gdGVzdCBzdWl0ZQorICB0byBhdm9pZCBmdXR1cmUgcmVncmVzc2lvbnMu
CisKKworLSBgIzU1MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNTUxNj5gXzogQ2FjaGUgbm9kZSBzcGxpdHRpbmcgZnVuY3Rpb24gd2hpY2ggY2FuIGltcHJv
dmUgY29sbGVjdGlvbiBwZXJmb3JtYW5jZSBpbiB2ZXJ5IGxhcmdlIHRlc3Qgc3VpdGVzLgorCisK
Ky0gYCM1NjAzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU2
MDM+YF86IFNpbXBsaWZpZWQgaW50ZXJuYWwgYGBTYWZlUmVwcmBgIGNsYXNzIGFuZCByZW1vdmVk
IHNvbWUgZGVhZCBjb2RlLgorCisKKy0gYCM1NjY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzU2NjQ+YF86IFdoZW4gaW52b2tpbmcgcHl0ZXN0J3Mgb3duIHRl
c3RzdWl0ZSB3aXRoIGBgUFlUSE9ORE9OVFdSSVRFQllURUNPREU9MWBgLAorICB0aGUgYGB0ZXN0
X3hmYWlsX2hhbmRsaW5nYGAgdGVzdCBubyBsb25nZXIgZmFpbHMuCisKKworLSBgIzU2ODQgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTY4ND5gXzogUmVwbGFj
ZSBtYW51YWwgaGFuZGxpbmcgb2YgYGBPU0Vycm9yLmVycm5vYGAgaW4gdGhlIGNvZGViYXNlIGJ5
IG5ldyBgYE9TRXJyb3JgYCBzdWJjbGFzc2VzIChgYFBlcm1pc3Npb25FcnJvcmBgLCBgYEZpbGVO
b3RGb3VuZEVycm9yYGAsIGV0Yy4pLgorCisKK3B5dGVzdCA1LjAuMSAoMjAxOS0wNy0wNCkKKz09
PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzU0
NzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ3OT5gXzog
SW1wcm92ZSBxdW90aW5nIGluIGBgcmFpc2VzYGAgbWF0Y2ggZmFpbHVyZSBtZXNzYWdlLgorCisK
Ky0gYCM1NTIzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1
MjM+YF86IEZpeGVkIHVzaW5nIG11bHRpcGxlIHNob3J0IG9wdGlvbnMgdG9nZXRoZXIgaW4gdGhl
IGNvbW1hbmQtbGluZSAoZm9yIGV4YW1wbGUgYGAtdnNgYCkgaW4gUHl0aG9uIDMuOCsuCisKKwor
LSBgIzU1NDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTU0
Nz5gXzogYGAtLXN0ZXAtd2lzZWBgIG5vdyBoYW5kbGVzIGBgeGZhaWwoc3RyaWN0PVRydWUpYGAg
bWFya2VycyBwcm9wZXJseS4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBgIzU1MTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNTUxNz5gXzogSW1wcm92ZSAiRGVjbGFyaW5nIG5ldyBob29rcyIgc2Vj
dGlvbiBpbiBjaGFwdGVyICJXcml0aW5nIFBsdWdpbnMiCisKKworcHl0ZXN0IDUuMC4wICgyMDE5
LTA2LTI4KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbXBvcnRhbnQKKy0tLS0tLS0t
LQorCitUaGlzIHJlbGVhc2UgaXMgYSBQeXRob24zLjUrIG9ubHkgcmVsZWFzZS4KKworRm9yIG1v
cmUgZGV0YWlscywgc2VlIG91ciBgUHl0aG9uIDIuNyBhbmQgMy40IHN1cHBvcnQgcGxhbiA8aHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3B5MjctcHkzNC1kZXByZWNhdGlvbi5odG1s
PmBfXy4KKworUmVtb3ZhbHMKKy0tLS0tLS0tCisKKy0gYCMxMTQ5IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzExNDk+YF86IFB5dGVzdCBubyBsb25nZXIgYWNj
ZXB0cyBwcmVmaXhlcyBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBmb3IgZXhhbXBsZQorICB0
eXBpbmcgYGBweXRlc3QgLS1kb2N0ZXN0LW1vZGBgIGlucGxhY2Ugb2YgYGAtLWRvY3Rlc3QtbW9k
dWxlc2BgLgorICBUaGlzIHdhcyBwcmV2aW91c2x5IGFsbG93ZWQgd2hlcmUgdGhlIGBgQXJndW1l
bnRQYXJzZXJgYCB0aG91Z2h0IGl0IHdhcyB1bmFtYmlndW91cywKKyAgYnV0IHRoaXMgY291bGQg
YmUgaW5jb3JyZWN0IGR1ZSB0byBkZWxheWVkIHBhcnNpbmcgb2Ygb3B0aW9ucyBmb3IgcGx1Z2lu
cy4KKyAgU2VlIGZvciBleGFtcGxlIGlzc3VlcyBgIzExNDkgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTE0OT5gX18sCisgIGAjMzQxMyA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDEzPmBfXywgYW5kCisgIGAjNDAwOSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDA5PmBfXy4KKwor
CistIGAjNTQwMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81
NDAyPmBfOiAqKlB5dGVzdERlcHJlY2F0aW9uV2FybmluZyBhcmUgbm93IGVycm9ycyBieSBkZWZh
dWx0LioqCisKKyAgRm9sbG93aW5nIG91ciBwbGFuIHRvIHJlbW92ZSBkZXByZWNhdGVkIGZlYXR1
cmVzIHdpdGggYXMgbGl0dGxlIGRpc3J1cHRpb24gYXMKKyAgcG9zc2libGUsIGFsbCB3YXJuaW5n
cyBvZiB0eXBlIGBgUHl0ZXN0RGVwcmVjYXRpb25XYXJuaW5nYGAgbm93IGdlbmVyYXRlIGVycm9y
cworICBpbnN0ZWFkIG9mIHdhcm5pbmcgbWVzc2FnZXMuCisKKyAgKipUaGUgYWZmZWN0ZWQgZmVh
dHVyZXMgd2lsbCBiZSBlZmZlY3RpdmVseSByZW1vdmVkIGluIHB5dGVzdCA1LjEqKiwgc28gcGxl
YXNlIGNvbnN1bHQgdGhlCisgIGBEZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzIDxodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWw+YF9fCisgIHNlY3Rpb24g
aW4gdGhlIGRvY3MgZm9yIGRpcmVjdGlvbnMgb24gaG93IHRvIHVwZGF0ZSBleGlzdGluZyBjb2Rl
LgorCisgIEluIHRoZSBweXRlc3QgYGA1LjAuWGBgIHNlcmllcywgaXQgaXMgcG9zc2libGUgdG8g
Y2hhbmdlIHRoZSBlcnJvcnMgYmFjayBpbnRvIHdhcm5pbmdzIGFzIGEgc3RvcAorICBnYXAgbWVh
c3VyZSBieSBhZGRpbmcgdGhpcyB0byB5b3VyIGBgcHl0ZXN0LmluaWBgIGZpbGU6CisKKyAgLi4g
Y29kZS1ibG9jazo6IGluaQorCisgICAgICBbcHl0ZXN0XQorICAgICAgZmlsdGVyd2FybmluZ3Mg
PQorICAgICAgICAgIGlnbm9yZTo6cHl0ZXN0LlB5dGVzdERlcHJlY2F0aW9uV2FybmluZworCisg
IEJ1dCB0aGlzIHdpbGwgc3RvcCB3b3JraW5nIHdoZW4gcHl0ZXN0IGBgNS4xYGAgaXMgcmVsZWFz
ZWQuCisKKyAgKipJZiB5b3UgaGF2ZSBjb25jZXJucyoqIGFib3V0IHRoZSByZW1vdmFsIG9mIGEg
c3BlY2lmaWMgZmVhdHVyZSwgcGxlYXNlIGFkZCBhCisgIGNvbW1lbnQgdG8gYCM1NDAyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0MDI+YF9fLgorCisKKy0g
YCM1NDEyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0MTI+
YF86IGBgRXhjZXB0aW9uSW5mb2BgIG9iamVjdHMgKHJldHVybmVkIGJ5IGBgcHl0ZXN0LnJhaXNl
c2BgKSBub3cgaGF2ZSB0aGUgc2FtZSBgYHN0cmBgIHJlcHJlc2VudGF0aW9uIGFzIGBgcmVwcmBg
LCB3aGljaAorICBhdm9pZHMgc29tZSBjb25mdXNpb24gd2hlbiB1c2VycyB1c2UgYGBwcmludChl
KWBgIHRvIGluc3BlY3QgdGhlIG9iamVjdC4KKworICBUaGlzIG1lYW5zIGNvZGUgbGlrZToKKwor
ICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFNv
bWVFeGNlcHRpb24pIGFzIGU6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgYXNzZXJ0ICJzb21l
IG1lc3NhZ2UiIGluIHN0cihlKQorCisKKyAgTmVlZHMgdG8gYmUgY2hhbmdlZCB0bzoKKworICAu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFNvbWVF
eGNlcHRpb24pIGFzIGU6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgYXNzZXJ0ICJzb21lIG1l
c3NhZ2UiIGluIHN0cihlLnZhbHVlKQorCisKKworCitEZXByZWNhdGlvbnMKKy0tLS0tLS0tLS0t
LQorCistIGAjNDQ4OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80NDg4PmBfOiBUaGUgcmVtb3ZhbCBvZiB0aGUgYGAtLXJlc3VsdC1sb2dgYCBvcHRpb24gYW5k
IG1vZHVsZSBoYXMgYmVlbiBwb3N0cG9uZWQgdG8gKHRlbnRhdGl2ZWx5KSBweXRlc3QgNi4wIGFz
CisgIHRoZSB0ZWFtIGhhcyBub3QgeWV0IGdvdCBhcm91bmQgdG8gaW1wbGVtZW50IGEgZ29vZCBh
bHRlcm5hdGl2ZSBmb3IgaXQuCisKKworLSBgIzQ2NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjY+YF86IFRoZSBgYGZ1bmNhcmduYW1lc2BgIGF0dHJpYnV0
ZSBoYXMgYmVlbiBhbiBhbGlhcyBmb3IgYGBmaXh0dXJlbmFtZXNgYCBzaW5jZQorICBweXRlc3Qg
Mi4zLCBhbmQgaXMgbm93IGRlcHJlY2F0ZWQgaW4gY29kZSB0b28uCisKKworCitGZWF0dXJlcwor
LS0tLS0tLS0KKworLSBgIzM0NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzQ1Nz5gXzogTmV3IGBweXRlc3RfYXNzZXJ0aW9uX3Bhc3MgPGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNfcHl0ZXN0Lmhvb2tzcGVjLnB5
dGVzdF9hc3NlcnRpb25fcGFzcz5gX18KKyAgaG9vaywgY2FsbGVkIHdpdGggY29udGV4dCBpbmZv
cm1hdGlvbiB3aGVuIGFuIGFzc2VydGlvbiAqcGFzc2VzKi4KKworICBUaGlzIGhvb2sgaXMgc3Rp
bGwgKipleHBlcmltZW50YWwqKiBzbyB1c2UgaXQgd2l0aCBjYXV0aW9uLgorCisKKy0gYCM1NDQw
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0NDA+YF86IFRo
ZSBgZmF1bHRoYW5kbGVyIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvZmF1bHRo
YW5kbGVyLmh0bWw+YF9fIHN0YW5kYXJkIGxpYnJhcnkKKyAgbW9kdWxlIGlzIG5vdyBlbmFibGVk
IGJ5IGRlZmF1bHQgdG8gaGVscCB1c2VycyBkaWFnbm9zZSBjcmFzaGVzIGluIEMgbW9kdWxlcy4K
KworICBUaGlzIGZ1bmN0aW9uYWxpdHkgd2FzIHByb3ZpZGVkIGJ5IGludGVncmF0aW5nIHRoZSBl
eHRlcm5hbAorICBgcHl0ZXN0LWZhdWx0aGFuZGxlciA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0LWZhdWx0aGFuZGxlcj5gX18gcGx1Z2luIGludG8gdGhlIGNvcmUsCisgIHNv
IHVzZXJzIHNob3VsZCByZW1vdmUgdGhhdCBwbHVnaW4gZnJvbSB0aGVpciByZXF1aXJlbWVudHMg
aWYgdXNlZC4KKworICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3M6IGh0dHBzOi8v
ZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS91c2FnZS5odG1sI2ZhdWx0LWhhbmRsZXIKKworCist
IGAjNTQ1MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDUy
PmBfOiBXaGVuIHdhcm5pbmdzIGFyZSBjb25maWd1cmVkIGFzIGVycm9ycywgcHl0ZXN0IHdhcm5p
bmdzIG5vdyBhcHBlYXIgYXMgb3JpZ2luYXRpbmcgZnJvbSBgYHB5dGVzdC5gYCBpbnN0ZWFkIG9m
IHRoZSBpbnRlcm5hbCBgYF9weXRlc3Qud2FybmluZ190eXBlcy5gYCBtb2R1bGUuCisKKworLSBg
IzUxMjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTEyNT5g
XzogYGBTZXNzaW9uLmV4aXRjb2RlYGAgdmFsdWVzIGFyZSBub3cgY29kZWQgaW4gYGBweXRlc3Qu
RXhpdENvZGVgYCwgYW4gYGBJbnRFbnVtYGAuIFRoaXMgbWFrZXMgdGhlIGV4aXQgY29kZSBhdmFp
bGFibGUgZm9yIGNvbnN1bWVyIGNvZGUgYW5kIGFyZSBtb3JlIGV4cGxpY2l0IG90aGVyIHRoYW4g
anVzdCBkb2N1bWVudGF0aW9uLiBVc2VyIGRlZmluZWQgZXhpdCBjb2RlcyBhcmUgc3RpbGwgdmFs
aWQsIGJ1dCBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uCisKKyAgVGhlIHRlYW0gZG9lc24n
dCBleHBlY3QgdGhpcyBjaGFuZ2UgdG8gYnJlYWsgdGVzdCBzdWl0ZXMgb3IgcGx1Z2lucyBpbiBn
ZW5lcmFsLCBleGNlcHQgaW4gZXNvdGVyaWMvc3BlY2lmaWMgc2NlbmFyaW9zLgorCisgICoqcHl0
ZXN0LXhkaXN0KiogdXNlcnMgc2hvdWxkIHVwZ3JhZGUgdG8gYGAxLjI5LjBgYCBvciBsYXRlciwg
YXMgYGBweXRlc3QteGRpc3RgYCByZXF1aXJlZCBhIGNvbXBhdGliaWxpdHkgZml4IGJlY2F1c2Ug
b2YgdGhpcyBjaGFuZ2UuCisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMTQwMyA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNDAzPmBfOiBTd2l0
Y2ggZnJvbSBgYGltcGBgIHRvIGBgaW1wb3J0bGliYGAuCisKKworLSBgIzE2NzEgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTY3MT5gXzogVGhlIG5hbWUgb2Yg
dGhlIGBgLnB5Y2BgIGZpbGVzIGNhY2hlZCBieSB0aGUgYXNzZXJ0aW9uIHdyaXRlciBub3cgaW5j
bHVkZXMgdGhlIHB5dGVzdCB2ZXJzaW9uCisgIHRvIGF2b2lkIHN0YWxlIGNhY2hlcy4KKworCist
IGAjMjc2MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzYx
PmBfOiBIb25vciBQRVAgMjM1IG9uIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgorCisK
Ky0gYCM1MDc4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUw
Nzg+YF86IFRlc3QgbW9kdWxlIGlzIG5vIGxvbmdlciBkb3VibGUtaW1wb3J0ZWQgd2hlbiB1c2lu
ZyBgYC0tcHlhcmdzYGAuCisKKworLSBgIzUyNjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTI2MD5gXzogSW1wcm92ZWQgY29tcGFyaXNvbiBvZiBieXRlIHN0
cmluZ3MuCisKKyAgV2hlbiBjb21wYXJpbmcgYnl0ZXMsIHRoZSBhc3NlcnRpb24gbWVzc2FnZSB1
c2VkIHRvIHNob3cgdGhlIGJ5dGUgbnVtZXJpYyB2YWx1ZSB3aGVuIHNob3dpbmcgdGhlIGRpZmZl
cmVuY2VzOjoKKworICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICA+ICAgICAgIGFzc2VydCBi
J3NwYW0nID09IGInZWdncycKKyAgICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCBi
J3NwYW0nID09IGInZWdncycKKyAgICAgIEUgICAgICAgICBBdCBpbmRleCAwIGRpZmY6IDExNSAh
PSAxMDEKKyAgICAgIEUgICAgICAgICBVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYKKworICBJ
dCBub3cgc2hvd3MgdGhlIGFjdHVhbCBhc2NpaSByZXByZXNlbnRhdGlvbiBpbnN0ZWFkLCB3aGlj
aCBpcyBvZnRlbiBtb3JlIHVzZWZ1bDo6CisKKyAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAg
PiAgICAgICBhc3NlcnQgYidzcGFtJyA9PSBiJ2VnZ3MnCisgICAgICBFICAgICAgIEFzc2VydGlv
bkVycm9yOiBhc3NlcnQgYidzcGFtJyA9PSBiJ2VnZ3MnCisgICAgICBFICAgICAgICAgQXQgaW5k
ZXggMCBkaWZmOiBiJ3MnICE9IGInZScKKyAgICAgIEUgICAgICAgICBVc2UgLXYgdG8gZ2V0IHRo
ZSBmdWxsIGRpZmYKKworCistIGAjNTMzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81MzM1PmBfOiBDb2xvcml6ZSBsZXZlbCBuYW1lcyB3aGVuIHRoZSBsZXZl
bCBpbiB0aGUgbG9nZ2luZyBmb3JtYXQgaXMgZm9ybWF0dGVkIHVzaW5nCisgICclKGxldmVsbmFt
ZSkuWHMnICh0cnVuY2F0ZWQgZml4ZWQgd2lkdGggYWxpZ25tZW50KSwgd2hlcmUgWCBpcyBhbiBp
bnRlZ2VyLgorCisKKy0gYCM1MzU0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzUzNTQ+YF86IEZpeCBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgd2hlbiB0
aGUgYXJndmFsdWVzIGlzIGFuIGl0ZXJhdG9yLgorCisKKy0gYCM1MzcwIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzNzA+YF86IFJldmVydCB1bnJvbGxpbmcg
b2YgYGBhbGwoKWBgIHRvIGZpeCBgYE5hbWVFcnJvcmBgIG9uIG5lc3RlZCBjb21wcmVoZW5zaW9u
cy4KKworCistIGAjNTM3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81MzcxPmBfOiBSZXZlcnQgdW5yb2xsaW5nIG9mIGBgYWxsKClgYCB0byBmaXggaW5jb3Jy
ZWN0IGhhbmRsaW5nIG9mIGdlbmVyYXRvcnMgd2l0aCBgYGlmYGAuCisKKworLSBgIzUzNzIgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM3Mj5gXzogUmV2ZXJ0
IHVucm9sbGluZyBvZiBgYGFsbCgpYGAgdG8gZml4IGluY29ycmVjdCBhc3NlcnRpb24gd2hlbiB1
c2luZyBgYGFsbCgpYGAgaW4gYW4gZXhwcmVzc2lvbi4KKworCistIGAjNTM4MyA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MzgzPmBfOiBgYC1xYGAgaGFzIGFn
YWluIGFuIGltcGFjdCBvbiB0aGUgc3R5bGUgb2YgdGhlIGNvbGxlY3RlZCBpdGVtcworICAoYGAt
LWNvbGxlY3Qtb25seWBgKSB3aGVuIGBgLS1sb2ctY2xpLWxldmVsYGAgaXMgdXNlZC4KKworCist
IGAjNTM4OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Mzg5
PmBfOiBGaXggcmVncmVzc2lvbnMgb2YgYCM1MDYzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvcHVsbC81MDYzPmBfXyBmb3IgYGBpbXBvcnRsaWJfbWV0YWRhdGEuUGF0aERp
c3RyaWJ1dGlvbmBgIHdoaWNoIGhhdmUgdGhlaXIgYGBmaWxlc2BgIGF0dHJpYnV0ZSBiZWluZyBg
YE5vbmVgYC4KKworCistIGAjNTM5MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81MzkwPmBfOiBGaXggcmVncmVzc2lvbiB3aGVyZSB0aGUgYGBvYmpgYCBhdHRy
aWJ1dGUgb2YgYGBUZXN0Q2FzZWBgIGl0ZW1zIHdhcyBubyBsb25nZXIgYm91bmQgdG8gbWV0aG9k
cy4KKworCistIGAjNTQwNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81NDA0PmBfOiBFbWl0IGEgd2FybmluZyB3aGVuIGF0dGVtcHRpbmcgdG8gdW53cmFwIGEg
YnJva2VuIG9iamVjdCByYWlzZXMgYW4gZXhjZXB0aW9uLAorICBmb3IgZWFzaWVyIGRlYnVnZ2lu
ZyAoYCM1MDgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUw
ODA+YF9fKS4KKworCistIGAjNTQzMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81NDMyPmBfOiBQcmV2ZW50ICJhbHJlYWR5IGltcG9ydGVkIiB3YXJuaW5ncyBm
cm9tIGFzc2VydGlvbiByZXdyaXRlciB3aGVuIGludm9raW5nIHB5dGVzdCBpbi1wcm9jZXNzIG11
bHRpcGxlIHRpbWVzLgorCisKKy0gYCM1NDMzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzU0MzM+YF86IEZpeCBhc3NlcnRpb24gcmV3cml0aW5nIGluIHBhY2th
Z2VzIChgYF9faW5pdF9fLnB5YGApLgorCisKKy0gYCM1NDQ0IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0NDQ+YF86IEZpeCBgYC0tc3RlcHdpc2VgYCBtb2Rl
IHdoZW4gdGhlIGZpcnN0IGZpbGUgcGFzc2VkIG9uIHRoZSBjb21tYW5kLWxpbmUgZmFpbHMgdG8g
Y29sbGVjdC4KKworCistIGAjNTQ4MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81NDgyPmBfOiBGaXggYnVnIGludHJvZHVjZWQgaW4gNC42LjAgY2F1c2luZyBj
b2xsZWN0aW9uIGVycm9ycyB3aGVuIHBhc3NpbmcKKyAgbW9yZSB0aGFuIDIgcG9zaXRpb25hbCBh
cmd1bWVudHMgdG8gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgLgorCisKKy0gYCM1NTA1IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1MDU+YF86IEZpeCBj
cmFzaCB3aGVuIGRpc2NvdmVyeSBmYWlscyB3aGlsZSB1c2luZyBgYC1wIG5vOnRlcm1pbmFsYGAu
CisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gYCM1MzE1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUz
MTU+YF86IEV4cGFuZCBkb2NzIG9uIG1vY2tpbmcgY2xhc3NlcyBhbmQgZGljdGlvbmFyaWVzIHdp
dGggYGBtb25rZXlwYXRjaGBgLgorCisKKy0gYCM1NDE2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0MTY+YF86IEZpeCBQeXRlc3RVbmtub3duTWFya1dhcm5p
bmcgaW4gcnVuL3NraXAgZXhhbXBsZS4KKworCitweXRlc3QgNC42LjkgKDIwMjAtMDEtMDQpCis9
PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM2
MzAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYzMDE+YF86
IEZpeCBhc3NlcnRpb24gcmV3cml0aW5nIGZvciBlZ2ctYmFzZWQgZGlzdHJpYnV0aW9ucyBhbmQg
YGBlZGl0YWJsZWBgIGluc3RhbGxzIChgYHBpcCBpbnN0YWxsIC0tZWRpdGFibGVgYCkuCisKKwor
cHl0ZXN0IDQuNi44ICgyMDE5LTEyLTE5KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitG
ZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzU0NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTQ3MT5gXzogSlVuaXQgWE1MIG5vdyBpbmNsdWRlcyBhIHRpbWVz
dGFtcCBhbmQgaG9zdG5hbWUgaW4gdGhlIHRlc3RzdWl0ZSB0YWcuCisKKworCitCdWcgRml4ZXMK
Ky0tLS0tLS0tLQorCistIGAjNTQzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy81NDMwPmBfOiBqdW5pdHhtbDogTG9ncyBmb3IgZmFpbGVkIHRlc3QgYXJlIG5v
dyBwYXNzZWQgdG8ganVuaXQgcmVwb3J0IGluIGNhc2UgdGhlIHRlc3QgZmFpbHMgZHVyaW5nIGNh
bGwgcGhhc2UuCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCistIGAjNjM0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy82MzQ1PmBfOiBQaW4gYGBjb2xvcmFtYWBgIHRvIGBgMC40LjFgYCBvbmx5IGZv
ciBQeXRob24gMy40IHNvIG5ld2VyIFB5dGhvbiB2ZXJzaW9ucyBjYW4gc3RpbGwgcmVjZWl2ZSBj
b2xvcmFtYSB1cGRhdGVzLgorCisKK3B5dGVzdCA0LjYuNyAoMjAxOS0xMi0wNSkKKz09PT09PT09
PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzU0NzcgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTQ3Nz5gXzogVGhlIFhN
TCBmaWxlIHByb2R1Y2VkIGJ5IGBgLS1qdW5pdHhtbGBgIG5vdyBjb3JyZWN0bHkgY29udGFpbiBh
IGBgPHRlc3RzdWl0ZXM+YGAgcm9vdCBlbGVtZW50LgorCisKKy0gYCM2MDQ0IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYwNDQ+YF86IFByb3Blcmx5IGlnbm9y
ZSBgYEZpbGVOb3RGb3VuZEVycm9yYGAgKGBgT1NFcnJvci5lcnJubyA9PSBOT0VOVGBgIGluIFB5
dGhvbiAyKSBleGNlcHRpb25zIHdoZW4gdHJ5aW5nIHRvIHJlbW92ZSBvbGQgdGVtcG9yYXJ5IGRp
cmVjdG9yaWVzLAorICBmb3IgaW5zdGFuY2Ugd2hlbiBtdWx0aXBsZSBwcm9jZXNzZXMgdHJ5IHRv
IHJlbW92ZSB0aGUgc2FtZSBkaXJlY3RvcnkgKGNvbW1vbiB3aXRoIGBgcHl0ZXN0LXhkaXN0YGAK
KyAgZm9yIGV4YW1wbGUpLgorCisKK3B5dGVzdCA0LjYuNiAoMjAxOS0xMC0xMSkKKz09PT09PT09
PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzU1MjMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTUyMz5gXzogRml4ZWQg
dXNpbmcgbXVsdGlwbGUgc2hvcnQgb3B0aW9ucyB0b2dldGhlciBpbiB0aGUgY29tbWFuZC1saW5l
IChmb3IgZXhhbXBsZSBgYC12c2BgKSBpbiBQeXRob24gMy44Ky4KKworCistIGAjNTUzNyA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTM3PmBfOiBSZXBsYWNl
IGBgaW1wb3J0bGliX21ldGFkYXRhYGAgYmFja3BvcnQgd2l0aCBgYGltcG9ydGxpYi5tZXRhZGF0
YWBgIGZyb20gdGhlCisgIHN0YW5kYXJkIGxpYnJhcnkgb24gUHl0aG9uIDMuOCsuCisKKworLSBg
IzU4MDYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTgwNj5g
XzogRml4ICJsZXhlciIgYmVpbmcgdXNlZCB3aGVuIHVwbG9hZGluZyB0byBicGFzdGUubmV0IGZy
b20gYGAtLXBhc3RlYmluYGAgdG8gInRleHQiLgorCisKKy0gYCM1OTAyIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU5MDI+YF86IEZpeCB3YXJuaW5ncyBhYm91
dCBkZXByZWNhdGVkIGBgY21wYGAgYXR0cmlidXRlIGluIGBgYXR0cnM+PTE5LjJgYC4KKworCisK
K1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0g
YCM1ODAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU4MDE+
YF86IEZpeGVzIHB5dGhvbiB2ZXJzaW9uIGNoZWNrcyAoZGV0ZWN0ZWQgYnkgYGBmbGFrZTgtMjAy
MGBgKSBpbiBjYXNlIHB5dGhvbjQgYmVjb21lcyBhIHRoaW5nLgorCisKK3B5dGVzdCA0LjYuNSAo
MjAxOS0wOC0wNSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzQzNDQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDM0ND5gXzogRml4IFJ1bnRpbWVFcnJvci9TdG9wSXRlcmF0aW9uIHdoZW4gdHJ5aW5n
IHRvIGNvbGxlY3QgcGFja2FnZSB3aXRoICJfX2luaXRfXy5weSIgb25seS4KKworCistIGAjNTQ3
OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NDc4PmBfOiBG
aXggZW5jb2RlIGVycm9yIHdoZW4gdXNpbmcgdW5pY29kZSBzdHJpbmdzIGluIGV4Y2VwdGlvbnMg
d2l0aCBgYHB5dGVzdC5yYWlzZXNgYC4KKworCistIGAjNTUyNCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81NTI0PmBfOiBGaXggaXNzdWUgd2hlcmUgYGB0bXBf
cGF0aGBgIGFuZCBgYHRtcGRpcmBgIHdvdWxkIG5vdCByZW1vdmUgZGlyZWN0b3JpZXMgY29udGFp
bmluZyBmaWxlcyBtYXJrZWQgYXMgcmVhZC1vbmx5LAorICB3aGljaCBjb3VsZCBsZWFkIHRvIHB5
dGVzdCBjcmFzaGluZyB3aGVuIGV4ZWN1dGVkIGEgc2Vjb25kIHRpbWUgd2l0aCB0aGUgYGAtLWJh
c2V0ZW1wYGAgb3B0aW9uLgorCisKKy0gYCM1NTQ3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzU1NDc+YF86IGBgLS1zdGVwLXdpc2VgYCBub3cgaGFuZGxlcyBg
YHhmYWlsKHN0cmljdD1UcnVlKWBgIG1hcmtlcnMgcHJvcGVybHkuCisKKworLSBgIzU2NTAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTY1MD5gXzogSW1wcm92
ZWQgb3V0cHV0IHdoZW4gcGFyc2luZyBhbiBpbmkgY29uZmlndXJhdGlvbiBmaWxlIGZhaWxzLgor
CitweXRlc3QgNC42LjQgKDIwMTktMDYtMjgpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1NDA0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0MDQ+YF86IEVtaXQgYSB3YXJuaW5nIHdoZW4gYXR0ZW1w
dGluZyB0byB1bndyYXAgYSBicm9rZW4gb2JqZWN0IHJhaXNlcyBhbiBleGNlcHRpb24sCisgIGZv
ciBlYXNpZXIgZGVidWdnaW5nIChgIzUwODAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNTA4MD5gX18pLgorCisKKy0gYCM1NDQ0IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU0NDQ+YF86IEZpeCBgYC0tc3RlcHdpc2VgYCBt
b2RlIHdoZW4gdGhlIGZpcnN0IGZpbGUgcGFzc2VkIG9uIHRoZSBjb21tYW5kLWxpbmUgZmFpbHMg
dG8gY29sbGVjdC4KKworCistIGAjNTQ4MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81NDgyPmBfOiBGaXggYnVnIGludHJvZHVjZWQgaW4gNC42LjAgY2F1c2lu
ZyBjb2xsZWN0aW9uIGVycm9ycyB3aGVuIHBhc3NpbmcKKyAgbW9yZSB0aGFuIDIgcG9zaXRpb25h
bCBhcmd1bWVudHMgdG8gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgLgorCisKKy0gYCM1NTA1
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzU1MDU+YF86IEZp
eCBjcmFzaCB3aGVuIGRpc2NvdmVyeSBmYWlscyB3aGlsZSB1c2luZyBgYC1wIG5vOnRlcm1pbmFs
YGAuCisKKworcHl0ZXN0IDQuNi4zICgyMDE5LTA2LTExKQorPT09PT09PT09PT09PT09PT09PT09
PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTM4MyA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MzgzPmBfOiBgYC1xYGAgaGFzIGFnYWluIGFu
IGltcGFjdCBvbiB0aGUgc3R5bGUgb2YgdGhlIGNvbGxlY3RlZCBpdGVtcworICAoYGAtLWNvbGxl
Y3Qtb25seWBgKSB3aGVuIGBgLS1sb2ctY2xpLWxldmVsYGAgaXMgdXNlZC4KKworCistIGAjNTM4
OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Mzg5PmBfOiBG
aXggcmVncmVzc2lvbnMgb2YgYCM1MDYzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvcHVsbC81MDYzPmBfXyBmb3IgYGBpbXBvcnRsaWJfbWV0YWRhdGEuUGF0aERpc3RyaWJ1
dGlvbmBgIHdoaWNoIGhhdmUgdGhlaXIgYGBmaWxlc2BgIGF0dHJpYnV0ZSBiZWluZyBgYE5vbmVg
YC4KKworCistIGAjNTM5MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81MzkwPmBfOiBGaXggcmVncmVzc2lvbiB3aGVyZSB0aGUgYGBvYmpgYCBhdHRyaWJ1dGUg
b2YgYGBUZXN0Q2FzZWBgIGl0ZW1zIHdhcyBubyBsb25nZXIgYm91bmQgdG8gbWV0aG9kcy4KKwor
CitweXRlc3QgNC42LjIgKDIwMTktMDYtMDMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1MzcwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzNzA+YF86IFJldmVydCB1bnJvbGxpbmcgb2YgYGBhbGwo
KWBgIHRvIGZpeCBgYE5hbWVFcnJvcmBgIG9uIG5lc3RlZCBjb21wcmVoZW5zaW9ucy4KKworCist
IGAjNTM3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Mzcx
PmBfOiBSZXZlcnQgdW5yb2xsaW5nIG9mIGBgYWxsKClgYCB0byBmaXggaW5jb3JyZWN0IGhhbmRs
aW5nIG9mIGdlbmVyYXRvcnMgd2l0aCBgYGlmYGAuCisKKworLSBgIzUzNzIgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTM3Mj5gXzogUmV2ZXJ0IHVucm9sbGlu
ZyBvZiBgYGFsbCgpYGAgdG8gZml4IGluY29ycmVjdCBhc3NlcnRpb24gd2hlbiB1c2luZyBgYGFs
bCgpYGAgaW4gYW4gZXhwcmVzc2lvbi4KKworCitweXRlc3QgNC42LjEgKDIwMTktMDYtMDIpCis9
PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCM1
MzU0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzNTQ+YF86
IEZpeCBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgd2hlbiB0aGUgYXJndmFsdWVzIGlzIGFu
IGl0ZXJhdG9yLgorCisKKy0gYCM1MzU4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzUzNTg+YF86IEZpeCBhc3NlcnRpb24gcmV3cml0aW5nIG9mIGBgYWxsKClg
YCBjYWxscyB0byBkZWFsIHdpdGggbm9uLWdlbmVyYXRvcnMuCisKKworcHl0ZXN0IDQuNi4wICgy
MDE5LTA1LTMxKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbXBvcnRhbnQKKy0tLS0t
LS0tLQorCitUaGUgYGA0LjYuWGBgIHNlcmllcyB3aWxsIGJlIHRoZSBsYXN0IHNlcmllcyB0byBz
dXBwb3J0ICoqUHl0aG9uIDIgYW5kIFB5dGhvbiAzLjQqKi4KKworRm9yIG1vcmUgZGV0YWlscywg
c2VlIG91ciBgUHl0aG9uIDIuNyBhbmQgMy40IHN1cHBvcnQgcGxhbiA8aHR0cHM6Ly9kb2NzLnB5
dGVzdC5vcmcvZW4vc3RhYmxlL3B5MjctcHkzNC1kZXByZWNhdGlvbi5odG1sPmBfXy4KKworCitG
ZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzQ1NTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNDU1OT5gXzogQWRkZWQgdGhlIGBganVuaXRfbG9nX3Bhc3Npbmdf
dGVzdHNgYCBpbmkgdmFsdWUgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUg
bG9nZ2luZyBvZiBwYXNzaW5nIHRlc3Qgb3V0cHV0IGluIHRoZSBKdW5pdCBYTUwgZmlsZS4KKwor
CistIGAjNDk1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
OTU2PmBfOiBweXRlc3RlcidzIGBgdGVzdGRpci5zcGF3bmBgIHVzZXMgYGB0bXBkaXJgYCBhcyBI
T01FL1VTRVJQUk9GSUxFIGRpcmVjdG9yeS4KKworCistIGAjNTA2MiA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDYyPmBfOiBVbnJvbGwgY2FsbHMgdG8gYGBh
bGxgYCB0byBmdWxsIGZvci1sb29wcyB3aXRoIGFzc2VydGlvbiByZXdyaXRpbmcgZm9yIGJldHRl
ciBmYWlsdXJlIG1lc3NhZ2VzLCBlc3BlY2lhbGx5IHdoZW4gdXNpbmcgR2VuZXJhdG9yIEV4cHJl
c3Npb25zLgorCisKKy0gYCM1MDYzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzUwNjM+YF86IFN3aXRjaCBmcm9tIGBgcGtnX3Jlc291cmNlc2BgIHRvIGBgaW1w
b3J0bGliLW1ldGFkYXRhYGAgZm9yIGVudHJ5cG9pbnQgZGV0ZWN0aW9uIGZvciBpbXByb3ZlZCBw
ZXJmb3JtYW5jZSBhbmQgaW1wb3J0IHRpbWUuCisKKworLSBgIzUwOTEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA5MT5gXzogVGhlIG91dHB1dCBmb3IgaW5p
IG9wdGlvbnMgaW4gYGAtLWhlbHBgYCBoYXMgYmVlbiBpbXByb3ZlZC4KKworCistIGAjNTI2OSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MjY5PmBfOiBgYHB5
dGVzdC5pbXBvcnRvcnNraXBgYCBpbmNsdWRlcyB0aGUgYGBJbXBvcnRFcnJvcmBgIG5vdyBpbiB0
aGUgZGVmYXVsdCBgYHJlYXNvbmBgLgorCisKKy0gYCM1MzExIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzMTE+YF86IENhcHR1cmVkIGxvZ3MgdGhhdCBhcmUg
b3V0cHV0IGZvciBlYWNoIGZhaWxpbmcgdGVzdCBhcmUgZm9ybWF0dGVkIHVzaW5nIHRoZQorICBD
b2xvcmVkTGV2ZWxGb3JtYXR0ZXIuCisKKworLSBgIzUzMTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTMxMj5gXzogSW1wcm92ZWQgZm9ybWF0dGluZyBvZiBt
dWx0aWxpbmUgbG9nIG1lc3NhZ2VzIGluIFB5dGhvbiAzLgorCisKKworQnVnIEZpeGVzCistLS0t
LS0tLS0KKworLSBgIzIwNjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjA2ND5gXzogVGhlIGRlYnVnZ2luZyBwbHVnaW4gaW1wb3J0cyB0aGUgd3JhcHBlZCBg
YFBkYmBgIGNsYXNzIChgYC0tcGRiY2xzYGApIG9uLWRlbWFuZCBub3cuCisKKworLSBgIzQ5MDgg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDkwOD5gXzogVGhl
IGBgcHl0ZXN0X2VudGVyX3BkYmBgIGhvb2sgZ2V0cyBjYWxsZWQgd2l0aCBwb3N0LW1vcnRlbSAo
YGAtLXBkYmBgKS4KKworCistIGAjNTAzNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy81MDM2PmBfOiBGaXggaXNzdWUgd2hlcmUgZml4dHVyZXMgZGVwZW5kZW50
IG9uIG90aGVyIHBhcmFtZXRyaXplZCBmaXh0dXJlcyB3b3VsZCBiZSBlcnJvbmVvdXNseSBwYXJh
bWV0cml6ZWQuCisKKworLSBgIzUyNTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNTI1Nj5gXzogSGFuZGxlIGludGVybmFsIGVycm9yIGR1ZSB0byBhIGxvbmUg
c3Vycm9nYXRlIHVuaWNvZGUgY2hhcmFjdGVyIG5vdCBiZWluZyByZXByZXNlbnRhYmxlIGluIEp5
dGhvbi4KKworCistIGAjNTI1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81MjU3PmBfOiBFbnN1cmUgdGhhdCBgYHN5cy5zdGRvdXQubW9kZWBgIGRvZXMgbm90
IGluY2x1ZGUgYGAnYidgYCBhcyBpdCBpcyBhIHRleHQgc3RyZWFtLgorCisKKy0gYCM1Mjc4IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUyNzg+YF86IFB5dGVz
dCdzIGludGVybmFsIHB5dGhvbiBwbHVnaW4gY2FuIGJlIGRpc2FibGVkIHVzaW5nIGBgLXAgbm86
cHl0aG9uYGAgYWdhaW4uCisKKworLSBgIzUyODYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTI4Nj5gXzogRml4IGlzc3VlIHdpdGggYGBkaXNhYmxlX3Rlc3Rf
aWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxsX3JpZ2h0c190b19jb21tdW5pdHlfc3VwcG9ydGBg
IG9wdGlvbiBub3Qgd29ya2luZyB3aGVuIHVzaW5nIGEgbGlzdCBvZiB0ZXN0IElEcyBpbiBwYXJh
bWV0cml6ZWQgdGVzdHMuCisKKworLSBgIzUzMzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNTMzMD5gXzogU2hvdyB0aGUgdGVzdCBtb2R1bGUgYmVpbmcgY29s
bGVjdGVkIHdoZW4gZW1pdHRpbmcgYGBQeXRlc3RDb2xsZWN0aW9uV2FybmluZ2BgIG1lc3NhZ2Vz
IGZvcgorICB0ZXN0IGNsYXNzZXMgd2l0aCBgYF9faW5pdF9fYGAgYW5kIGBgX19uZXdfX2BgIG1l
dGhvZHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcGluIGRvd24gdGhlIHByb2JsZW0uCisKKworLSBg
IzUzMzMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTMzMz5g
XzogRml4IHJlZ3Jlc3Npb24gaW4gNC41LjAgd2l0aCBgYC0tbGZgYCBub3QgcmUtcnVubmluZyBh
bGwgdGVzdHMgd2l0aCBrbm93biBmYWlsdXJlcyBmcm9tIG5vbi1zZWxlY3RlZCB0ZXN0cy4KKwor
CisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBg
IzUyNTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTI1MD5g
XzogRXhwYW5kIGRvY3Mgb24gdXNlIG9mIGBgc2V0ZW52YGAgYW5kIGBgZGVsZW52YGAgd2l0aCBg
YG1vbmtleXBhdGNoYGAuCisKKworcHl0ZXN0IDQuNS4wICgyMDE5LTA1LTExKQorPT09PT09PT09
PT09PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzQ4MjYgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDgyNj5gXzogQSB3YXJuaW5n
IGlzIG5vdyBlbWl0dGVkIHdoZW4gdW5rbm93biBtYXJrcyBhcmUgdXNlZCBhcyBhIGRlY29yYXRv
ci4KKyAgVGhpcyBpcyBvZnRlbiBkdWUgdG8gYSB0eXBvLCB3aGljaCBjYW4gbGVhZCB0byBzaWxl
bnRseSBicm9rZW4gdGVzdHMuCisKKworLSBgIzQ5MDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDkwNz5gXzogU2hvdyBYRmFpbCByZWFzb24gYXMgcGFydCBv
ZiBKVW5pdFhNTCBtZXNzYWdlIGZpZWxkLgorCisKKy0gYCM1MDEzIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMTM+YF86IE1lc3NhZ2VzIGZyb20gY3Jhc2gg
cmVwb3J0cyBhcmUgZGlzcGxheWVkIHdpdGhpbiB0ZXN0IHN1bW1hcmllcyBub3csIHRydW5jYXRl
ZCB0byB0aGUgdGVybWluYWwgd2lkdGguCisKKworLSBgIzUwMjMgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAyMz5gXzogTmV3IGZsYWcgYGAtLXN0cmljdC1t
YXJrZXJzYGAgdGhhdCB0cmlnZ2VycyBhbiBlcnJvciB3aGVuIHVua25vd24gbWFya2VycyAoZS5n
LiB0aG9zZSBub3QgcmVnaXN0ZXJlZCB1c2luZyB0aGUgYG1hcmtlcnMgb3B0aW9uYF8gaW4gdGhl
IGNvbmZpZ3VyYXRpb24gZmlsZSkgYXJlIHVzZWQgaW4gdGhlIHRlc3Qgc3VpdGUuCisKKyAgVGhl
IGV4aXN0aW5nIGBgLS1zdHJpY3RgYCBvcHRpb24gaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGN1cnJl
bnRseSwgYnV0IGNhbiBiZSBhdWdtZW50ZWQgaW4gdGhlIGZ1dHVyZSBmb3IgYWRkaXRpb25hbCBj
aGVja3MuCisKKyAgLi4gX2BtYXJrZXJzIG9wdGlvbmA6IGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNjb25mdmFsLW1hcmtlcnMKKworCistIGAjNTAyNiA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDI2PmBfOiBBc3Nl
cnRpb24gZmFpbHVyZSBtZXNzYWdlcyBmb3Igc2VxdWVuY2VzIGFuZCBkaWN0cyBjb250YWluIHRo
ZSBudW1iZXIgb2YgZGlmZmVyZW50IGl0ZW1zIG5vdy4KKworCistIGAjNTAzNCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDM0PmBfOiBJbXByb3ZlIHJlcG9y
dGluZyB3aXRoIGBgLS1sZmBgIGFuZCBgYC0tZmZgYCAocnVuLWxhc3QtZmFpbHVyZSkuCisKKwor
LSBgIzUwMzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAz
NT5gXzogVGhlIGBgLS1jYWNoZS1zaG93YGAgb3B0aW9uL2FjdGlvbiBhY2NlcHRzIGFuIG9wdGlv
bmFsIGdsb2IgdG8gc2hvdyBvbmx5IG1hdGNoaW5nIGNhY2hlIGVudHJpZXMuCisKKworLSBgIzUw
NTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA1OT5gXzog
U3RhbmRhcmQgaW5wdXQgKHN0ZGluKSBjYW4gYmUgZ2l2ZW4gdG8gcHl0ZXN0ZXIncyBgYFRlc3Rk
aXIucnVuKClgYCBhbmQgYGBUZXN0ZGlyLnBvcGVuKClgYC4KKworCistIGAjNTA2OCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDY4PmBfOiBUaGUgYGAtcmBg
IG9wdGlvbiBsZWFybnQgYWJvdXQgYGBBYGAgdG8gZGlzcGxheSBhbGwgcmVwb3J0cyAoaW5jbHVk
aW5nIHBhc3NlZCBvbmVzKSBpbiB0aGUgc2hvcnQgdGVzdCBzdW1tYXJ5LgorCisKKy0gYCM1MTA4
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxMDg+YF86IFRo
ZSBzaG9ydCB0ZXN0IHN1bW1hcnkgaXMgZGlzcGxheWVkIGFmdGVyIHBhc3NlcyB3aXRoIG91dHB1
dCAoYGAtclBgYCkuCisKKworLSBgIzUxNzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNTE3Mj5gXzogVGhlIGBgLS1sYXN0LWZhaWxlZGBgIChgYC0tbGZgYCkg
b3B0aW9uIGdvdCBzbWFydGVyIGFuZCB3aWxsIG5vdyBza2lwIGVudGlyZSBmaWxlcyBpZiBhbGwg
dGVzdHMKKyAgb2YgdGhhdCB0ZXN0IGZpbGUgaGF2ZSBwYXNzZWQgaW4gcHJldmlvdXMgcnVucywg
Z3JlYXRseSBzcGVlZGluZyB1cCBjb2xsZWN0aW9uLgorCisKKy0gYCM1MTc3IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxNzc+YF86IEludHJvZHVjZSBuZXcg
c3BlY2lmaWMgd2FybmluZyBgYFB5dGVzdFdhcm5pbmdgYCBzdWJjbGFzc2VzIHRvIG1ha2UgaXQg
ZWFzaWVyIHRvIGZpbHRlciB3YXJuaW5ncyBiYXNlZCBvbiB0aGUgY2xhc3MsIHJhdGhlciB0aGFu
IG9uIHRoZSBtZXNzYWdlLiBUaGUgbmV3IHN1YmNsYXNzZXMgYXJlOgorCisKKyAgKiBgYFB5dGVz
dEFzc2VydFJld3JpdGVXYXJuaW5nYGAKKworICAqIGBgUHl0ZXN0Q2FjaGVXYXJuaW5nYGAKKwor
ICAqIGBgUHl0ZXN0Q29sbGVjdGlvbldhcm5pbmdgYAorCisgICogYGBQeXRlc3RDb25maWdXYXJu
aW5nYGAKKworICAqIGBgUHl0ZXN0VW5oYW5kbGVkQ29yb3V0aW5lV2FybmluZ2BgCisKKyAgKiBg
YFB5dGVzdFVua25vd25NYXJrV2FybmluZ2BgCisKKworLSBgIzUyMDIgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTIwMj5gXzogTmV3IGBgcmVjb3JkX3Rlc3Rz
dWl0ZV9wcm9wZXJ0eWBgIHNlc3Npb24tc2NvcGVkIGZpeHR1cmUgYWxsb3dzIHVzZXJzIHRvIGxv
ZyBgYDxwcm9wZXJ0eT5gYCB0YWdzIGF0IHRoZSBgYHRlc3RzdWl0ZWBgCisgIGxldmVsIHdpdGgg
dGhlIGBganVuaXR4bWxgYCBwbHVnaW4uCisKKyAgVGhlIGdlbmVyYXRlZCBYTUwgaXMgY29tcGF0
aWJsZSB3aXRoIHRoZSBsYXRlc3QgeHVuaXQgc3RhbmRhcmQsIGNvbnRyYXJ5IHRvCisgIHRoZSBw
cm9wZXJ0aWVzIHJlY29yZGVkIGJ5IGBgcmVjb3JkX3Byb3BlcnR5YGAgYW5kIGBgcmVjb3JkX3ht
bF9hdHRyaWJ1dGVgYC4KKworCistIGAjNTIxNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy81MjE0PmBfOiBUaGUgZGVmYXVsdCBsb2dnaW5nIGZvcm1hdCBoYXMg
YmVlbiBjaGFuZ2VkIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuIEhlcmUgaXMgYW4KKyAgZXhhbXBs
ZSBvZiBhIHByZXZpb3VzIGxvZ2dpbmcgbWVzc2FnZTo6CisKKyAgICAgIHRlc3RfbG9nX2NsaV9l
bmFibGVkX2Rpc2FibGVkLnB5ICAgIDMgQ1JJVElDQUwgY3JpdGljYWwgbWVzc2FnZSBsb2dnZWQg
YnkgdGVzdAorCisgIFRoaXMgaGFzIG5vdyBiZWNvbWU6OgorCisgICAgICBDUklUSUNBTCByb290
OnRlc3RfbG9nX2NsaV9lbmFibGVkX2Rpc2FibGVkLnB5OjMgY3JpdGljYWwgbWVzc2FnZSBsb2dn
ZWQgYnkgdGVzdAorCisgIFRoZSBmb3JtYXR0aW5nIGNhbiBiZSBjaGFuZ2VkIHRocm91Z2ggdGhl
IGBsb2dfZm9ybWF0IDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvcmVmZXJlbmNl
Lmh0bWwjY29uZnZhbC1sb2dfZm9ybWF0PmBfXyBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworCist
IGAjNTIyMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MjIw
PmBfOiBgYC0tZml4dHVyZXNgYCBub3cgYWxzbyBzaG93cyBmaXh0dXJlIHNjb3BlIGZvciBzY29w
ZXMgb3RoZXIgdGhhbiBgYCJmdW5jdGlvbiJgYC4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0t
CisKKy0gYCM1MTEzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzUxMTM+YF86IERlc2VsZWN0ZWQgaXRlbXMgZnJvbSBwbHVnaW5zIHVzaW5nIGBgcHl0ZXN0X2Nv
bGxlY3RfbW9kaWZ5aXRlbXNgYCBhcyBhIGhvb2t3cmFwcGVyIGFyZSBjb3JyZWN0bHkgcmVwb3J0
ZWQgbm93LgorCisKKy0gYCM1MTQ0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzUxNDQ+YF86IFdpdGggdXNhZ2UgZXJyb3JzIGBgZXhpdHN0YXR1c2BgIGlzIHNl
dCB0byBgYEVYSVRfVVNBR0VFUlJPUmBgIGluIHRoZSBgYHB5dGVzdF9zZXNzaW9uZmluaXNoYGAg
aG9vayBub3cgYXMgZXhwZWN0ZWQuCisKKworLSBgIzUyMzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTIzNT5gXzogYGBvdXRjb21lLmV4aXRgYCBpcyBub3Qg
dXNlZCB3aXRoIGBgRU9GYGAgaW4gdGhlIHBkYiB3cmFwcGVyIGFueW1vcmUsIGJ1dCBvbmx5IHdp
dGggYGBxdWl0YGAuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKy0gYCM0OTM1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQ5MzU+YF86IEV4cGFuZCBkb2NzIG9uIHJlZ2lzdGVyaW5nIG1hcmtzIGFuZCB0
aGUgZWZmZWN0IG9mIGBgLS1zdHJpY3RgYC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdl
cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM0OTQyIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5NDI+YF86IGBgbG9nZ2luZy5yYWlzZUV4Y2Vw
dGlvbnNgYCBpcyBub3Qgc2V0IHRvIGBgRmFsc2VgYCBhbnltb3JlLgorCisKKy0gYCM1MDEzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMTM+YF86IHB5dGVz
dCBub3cgZGVwZW5kcyBvbiBgd2N3aWR0aCA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3djd2lk
dGg+YF9fIHRvIHByb3Blcmx5IHRyYWNrIHVuaWNvZGUgY2hhcmFjdGVyIHNpemVzIGZvciBtb3Jl
IHByZWNpc2UgdGVybWluYWwgb3V0cHV0LgorCisKKy0gYCM1MDU5IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwNTk+YF86IHB5dGVzdGVyJ3MgYGBUZXN0ZGly
LnBvcGVuKClgYCB1c2VzIGBgc3Rkb3V0YGAgYW5kIGBgc3RkZXJyYGAgdmlhIGtleXdvcmQgYXJn
dW1lbnRzIHdpdGggZGVmYXVsdHMgbm93IChgYHN1YnByb2Nlc3MuUElQRWBgKS4KKworCistIGAj
NTA2OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDY5PmBf
OiBUaGUgY29kZSBmb3IgdGhlIHNob3J0IHRlc3Qgc3VtbWFyeSBpbiB0aGUgdGVybWluYWwgd2Fz
IG1vdmVkIHRvIHRoZSB0ZXJtaW5hbCBwbHVnaW4uCisKKworLSBgIzUwODIgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA4Mj5gXzogSW1wcm92ZWQgdmFsaWRh
dGlvbiBvZiBrd2FyZ3MgZm9yIHZhcmlvdXMgbWV0aG9kcyBpbiB0aGUgcHl0ZXN0ZXIgcGx1Z2lu
LgorCisKKy0gYCM1MjAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzUyMDI+YF86IGBgcmVjb3JkX3Byb3BlcnR5YGAgbm93IGVtaXRzIGEgYGBQeXRlc3RXYXJu
aW5nYGAgd2hlbiB1c2VkIHdpdGggYGBqdW5pdF9mYW1pbHk9eHVuaXQyYGA6IHRoZSBmaXh0dXJl
IGdlbmVyYXRlcworICBgYHByb3BlcnR5YGAgdGFncyBhcyBjaGlsZHJlbiBvZiBgYHRlc3RjYXNl
YGAsIHdoaWNoIGlzIG5vdCBwZXJtaXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtb3N0CisgIGByZWNl
bnQgc2NoZW1hIDxodHRwczovL2dpdGh1Yi5jb20vamVua2luc2NpL3h1bml0LXBsdWdpbi9ibG9i
L21hc3Rlci8KKyAgc3JjL21haW4vcmVzb3VyY2VzL29yZy9qZW5raW5zY2kvcGx1Z2lucy94dW5p
dC90eXBlcy9tb2RlbC94c2QvanVuaXQtMTAueHNkPmBfXy4KKworCistIGAjNTIzOSA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MjM5PmBfOiBQaW4gYGBwbHVn
Z3lgYCB0byBgYDwgMS4wYGAgc28gd2UgZG9uJ3QgdXBkYXRlIHRvIGBgMS4wYGAgYXV0b21hdGlj
YWxseSB3aGVuCisgIGl0IGdldHMgcmVsZWFzZWQ6IHRoZXJlIGFyZSBwbGFubmVkIGJyZWFraW5n
IGNoYW5nZXMsIGFuZCB3ZSB3YW50IHRvIGVuc3VyZQorICBweXRlc3QgcHJvcGVybHkgc3VwcG9y
dHMgYGBwbHVnZ3kgMS4wYGAuCisKKworcHl0ZXN0IDQuNC4yICgyMDE5LTA1LTA4KQorPT09PT09
PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNTA4OSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDg5PmBfOiBGaXgg
Y3Jhc2ggY2F1c2VkIGJ5IGVycm9yIGluIGBgX19yZXByX19gYCBmdW5jdGlvbiB3aXRoIGJvdGgg
YGBzaG93bG9jYWxzYGAgYW5kIHZlcmJvc2Ugb3V0cHV0IGVuYWJsZWQuCisKKworLSBgIzUxMzkg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTEzOT5gXzogRWxp
bWluYXRlIGNvcmUgZGVwZW5kZW5jeSBvbiAndGVybWluYWwnIHBsdWdpbi4KKworCistIGAjNTIy
OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MjI5PmBfOiBS
ZXF1aXJlIGBgcGx1Z2d5Pj0wLjExLjBgYCB3aGljaCByZXZlcnRzIGEgZGVwZW5kZW5jeSB0byBg
YGltcG9ydGxpYi1tZXRhZGF0YWBgIGFkZGVkIGluIGBgMC4xMC4wYGAuCisgIFRoZSBgYGltcG9y
dGxpYi1tZXRhZGF0YWBgIHBhY2thZ2UgY2Fubm90IGJlIGltcG9ydGVkIHdoZW4gaW5zdGFsbGVk
IGFzIGFuIGVnZyBhbmQgY2F1c2VzIGlzc3VlcyB3aGVuIHJlbHlpbmcgb24gYGBzZXR1cC5weWBg
IHRvIGluc3RhbGwgdGVzdCBkZXBlbmRlbmNpZXMuCisKKworCitJbXByb3ZlZCBEb2N1bWVudGF0
aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM1MTcxIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxNzE+YF86IERvYzogYGBweXRlc3RfaWdub3Jl
X2NvbGxlY3RgYCwgYGBweXRlc3RfY29sbGVjdF9kaXJlY3RvcnlgYCwgYGBweXRlc3RfY29sbGVj
dF9maWxlYGAgYW5kIGBgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlYGAgaG9va3MncyAncGF0
aCcgcGFyYW1ldGVyIGRvY3VtZW50ZWQgdHlwZSBpcyBub3cgYGBweS5wYXRoLmxvY2FsYGAKKwor
CistIGAjNTE4OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81
MTg4PmBfOiBJbXByb3ZlIGhlbHAgZm9yIGBgLS1ydW54ZmFpbGBgIGZsYWcuCisKKworCitUcml2
aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNTE4
MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTgyPmBfOiBS
ZW1vdmVkIGludGVybmFsIGFuZCB1bnVzZWQgYGBfcHl0ZXN0LmRlcHJlY2F0ZWQuTUFSS19JTkZP
X0FUVFJJQlVURWBgLgorCisKK3B5dGVzdCA0LjQuMSAoMjAxOS0wNC0xNSkKKz09PT09PT09PT09
PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzUwMzEgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAzMT5gXzogRW52aXJvbm1l
bnQgdmFyaWFibGVzIGFyZSBwcm9wZXJseSByZXN0b3JlZCB3aGVuIHVzaW5nIHB5dGVzdGVyJ3Mg
YGB0ZXN0ZGlyYGAgZml4dHVyZS4KKworCistIGAjNTAzOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDM5PmBfOiBGaXggcmVncmVzc2lvbiB3aXRoIGBgLS1w
ZGJjbHNgYCwgd2hpY2ggc3RvcHBlZCB3b3JraW5nIHdpdGggbG9jYWwgbW9kdWxlcyBpbiA0LjAu
MC4KKworCistIGAjNTA5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81MDkyPmBfOiBQcm9kdWNlIGEgd2FybmluZyB3aGVuIHVua25vd24ga2V5d29yZHMgYXJl
IHBhc3NlZCB0byBgYHB5dGVzdC5wYXJhbSguLi4pYGAuCisKKworLSBgIzUwOTggPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA5OD5gXzogSW52YWxpZGF0ZSBp
bXBvcnQgY2FjaGVzIHdpdGggYGBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmRgYCwgd2hpY2gg
aXMgcmVxdWlyZWQgd2l0aCBuYW1lc3BhY2UgcGFja2FnZXMgYmVpbmcgdXNlZC4KKworCitweXRl
c3QgNC40LjAgKDIwMTktMDMtMjkpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZlYXR1
cmVzCistLS0tLS0tLQorCistIGAjMjIyNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMjI0PmBfOiBgYGFzeW5jYGAgdGVzdCBmdW5jdGlvbnMgYXJlIHNraXBw
ZWQgYW5kIGEgd2FybmluZyBpcyBlbWl0dGVkIHdoZW4gYSBzdWl0YWJsZQorICBhc3luYyBwbHVn
aW4gaXMgbm90IGluc3RhbGxlZCAoc3VjaCBhcyBgYHB5dGVzdC1hc3luY2lvYGAgb3IgYGBweXRl
c3QtdHJpb2BgKS4KKworICBQcmV2aW91c2x5IGBgYXN5bmNgYCBmdW5jdGlvbnMgd291bGQgbm90
IGV4ZWN1dGUgYXQgYWxsIGJ1dCBzdGlsbCBiZSBtYXJrZWQgYXMgInBhc3NlZCIuCisKKworLSBg
IzI0ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ4Mj5g
XzogSW5jbHVkZSBuZXcgYGBkaXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxs
X3JpZ2h0c190b19jb21tdW5pdHlfc3VwcG9ydGBgIG9wdGlvbiB0byBkaXNhYmxlIGFzY2lpLWVz
Y2FwaW5nIGluIHBhcmFtZXRyaXplZCB2YWx1ZXMuIFRoaXMgbWF5IGNhdXNlIGEgc2VyaWVzIG9m
IHByb2JsZW1zIGFuZCBhcyB0aGUgbmFtZSBtYWtlcyBjbGVhciwgdXNlIGF0IHlvdXIgb3duIHJp
c2suCisKKworLSBgIzQ3MTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDcxOD5gXzogVGhlIGBgLXBgYCBvcHRpb24gY2FuIG5vdyBiZSB1c2VkIHRvIGVhcmx5
LWxvYWQgcGx1Z2lucyBhbHNvIGJ5IGVudHJ5LXBvaW50IG5hbWUsIGluc3RlYWQgb2YganVzdAor
ICBieSBtb2R1bGUgbmFtZS4KKworICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGVhcmx5IGxv
YWQgZXh0ZXJuYWwgcGx1Z2lucyBsaWtlIGBgcHl0ZXN0LWNvdmBgIGluIHRoZSBjb21tYW5kLWxp
bmU6OgorCisgICAgICBweXRlc3QgLXAgcHl0ZXN0X2NvdgorCisKKy0gYCM0ODU1IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ4NTU+YF86IFRoZSBgYC0tcGRi
Y2xzYGAgb3B0aW9uIGhhbmRsZXMgY2xhc3NlcyB2aWEgbW9kdWxlIGF0dHJpYnV0ZXMgbm93IChl
LmcuCisgIGBgcGRiOnBkYi5QZGJgYCB3aXRoIGBwZGIrK2BfKSwgYW5kIGl0cyB2YWxpZGF0aW9u
IHdhcyBpbXByb3ZlZC4KKworICAuLiBfcGRiKys6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9w
ZGJwcC8KKworCistIGAjNDg3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80ODc1PmBfOiBUaGUgYHRlc3RwYXRocyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL3JlZmVyZW5jZS5odG1sI2NvbmZ2YWwtdGVzdHBhdGhzPmBfXyBjb25maWd1cmF0
aW9uIG9wdGlvbiBpcyBub3cgZGlzcGxheWVkIG5leHQKKyAgdG8gdGhlIGBgcm9vdGRpcmBgIGFu
ZCBgYGluaWZpbGVgYCBsaW5lcyBpbiB0aGUgcHl0ZXN0IGhlYWRlciBpZiB0aGUgb3B0aW9uIGlz
IGluIGVmZmVjdCwgaS5lLiwgZGlyZWN0b3JpZXMgb3IgZmlsZSBuYW1lcyB3ZXJlCisgIG5vdCBl
eHBsaWNpdGx5IHBhc3NlZCBpbiB0aGUgY29tbWFuZCBsaW5lLgorCisgIEFsc28sIGBgaW5pZmls
ZWBgIGlzIG9ubHkgZGlzcGxheWVkIGlmIHRoZXJlJ3MgYSBjb25maWd1cmF0aW9uIGZpbGUsIGlu
c3RlYWQgb2YgYW4gZW1wdHkgYGBpbmlmaWxlOmBgIHN0cmluZy4KKworCistIGAjNDkxMSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTExPmBfOiBEb2N0ZXN0
cyBjYW4gYmUgc2tpcHBlZCBub3cgZHluYW1pY2FsbHkgdXNpbmcgYGBweXRlc3Quc2tpcCgpYGAu
CisKKworLSBgIzQ5MjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDkyMD5gXzogSW50ZXJuYWwgcmVmYWN0b3JpbmdzIGhhdmUgYmVlbiBtYWRlIGluIG9yZGVy
IHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICBgcHl0ZXN0LXN1YnRlc3RzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qtc3VidGVzdHM+YF9fIHBsdWdpbgor
ICBwb3NzaWJsZSwgd2hpY2ggYWRkcyB1bml0dGVzdCBzdWItdGVzdCBzdXBwb3J0IGFuZCBhIG5l
dyBgYHN1YnRlc3RzYGAgZml4dHVyZSBhcyBkaXNjdXNzZWQgaW4KKyAgYCMxMzY3IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEzNjc+YF9fLgorCisgIEZvciBk
ZXRhaWxzIG9uIHRoZSBpbnRlcm5hbCByZWZhY3RvcmluZ3MsIHBsZWFzZSBzZWUgdGhlIGRldGFp
bHMgb24gdGhlIHJlbGF0ZWQgUFIuCisKKworLSBgIzQ5MzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDkzMT5gXzogcHl0ZXN0ZXIncyBgYExpbmVNYXRjaGVy
YGAgYXNzZXJ0cyB0aGF0IHRoZSBwYXNzZWQgbGluZXMgYXJlIGEgc2VxdWVuY2UuCisKKworLSBg
IzQ5MzYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDkzNj5g
XzogSGFuZGxlIGBgLXAgcGx1Z2BgIGFmdGVyIGBgLXAgbm86cGx1Z2BgLgorCisgIFRoaXMgY2Fu
IGJlIHVzZWQgdG8gb3ZlcnJpZGUgYSBibG9ja2VkIHBsdWdpbiAoZS5nLiBpbiAiYWRkb3B0cyIp
IGZyb20gdGhlCisgIGNvbW1hbmQgbGluZSBldGMuCisKKworLSBgIzQ5NTEgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk1MT5gXzogT3V0cHV0IGNhcHR1cmlu
ZyBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIG9ubHkgY2FwdHVyaW5nIHZpYSBmaXh0dXJlcyAo
Y2Fwc3lzLCBjYXBmcykgd2l0aCBgYHBkYi5zZXRfdHJhY2UoKWBgLgorCisKKy0gYCM0OTU2IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5NTY+YF86IGBgcHl0
ZXN0ZXJgYCBzZXRzIGBgJEhPTUVgYCBhbmQgYGAkVVNFUlBST0ZJTEVgYCB0byB0aGUgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBkdXJpbmcgdGVzdCBydW5zLgorCisgIFRoaXMgZW5zdXJlcyB0byBub3Qg
bG9hZCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gdGhlIHJlYWwgdXNlcidzIGhvbWUgZGlyZWN0
b3J5LgorCisKKy0gYCM0OTgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzQ5ODA+YF86IE5hbWVzcGFjZSBwYWNrYWdlcyBhcmUgaGFuZGxlZCBiZXR0ZXIgd2l0
aCBgYG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZGBgIGFuZCBgYHRlc3RkaXIuc3lzcGF0aGlu
c2VydGBgICh2aWEgYGBwa2dfcmVzb3VyY2VzLmZpeHVwX25hbWVzcGFjZV9wYWNrYWdlc2BgKS4K
KworCistIGAjNDk5MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80OTkzPmBfOiBUaGUgc3RlcHdpc2UgcGx1Z2luIHJlcG9ydHMgc3RhdHVzIGluZm9ybWF0aW9u
IG5vdy4KKworCistIGAjNTAwOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy81MDA4PmBfOiBJZiBhIGBgc2V0dXAuY2ZnYGAgZmlsZSBjb250YWlucyBgYFt0b29s
OnB5dGVzdF1gYCBhbmQgYWxzbyB0aGUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBgYFtweXRlc3RdYGAg
c2VjdGlvbiwgcHl0ZXN0IHdpbGwgdXNlIGBgW3Rvb2w6cHl0ZXN0XWBgIGlnbm9yaW5nIGBgW3B5
dGVzdF1gYC4gUHJldmlvdXNseSBpdCB3b3VsZCB1bmNvbmRpdGlvbmFsbHkgZXJyb3Igb3V0Lgor
CisgIFRoaXMgbWFrZXMgaXQgc2ltcGxlciBmb3IgcGx1Z2lucyB0byBzdXBwb3J0IG9sZCBweXRl
c3QgdmVyc2lvbnMuCisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMTg5NSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODk1PmBfOiBGaXggYnVn
IHdoZXJlIGZpeHR1cmVzIHJlcXVlc3RlZCBkeW5hbWljYWxseSB2aWEgYGByZXF1ZXN0LmdldGZp
eHR1cmV2YWx1ZSgpYGAgbWlnaHQgYmUgdGVhcmRvd24KKyAgYmVmb3JlIHRoZSByZXF1ZXN0aW5n
IGZpeHR1cmUuCisKKworLSBgIzQ4NTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNDg1MT5gXzogcHl0ZXN0ZXIgdW5zZXRzIGBgUFlURVNUX0FERE9QVFNgYCBu
b3cgdG8gbm90IHVzZSBvdXRlciBvcHRpb25zIHdpdGggYGB0ZXN0ZGlyLnJ1bnB5dGVzdCgpYGAu
CisKKworLSBgIzQ5MDMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDkwMz5gXzogVXNlIHRoZSBjb3JyZWN0IG1vZGlmaWVkIHRpbWUgZm9yIHllYXJzIGFmdGVy
IDIwMzggaW4gcmV3cml0dGVuIGBgLnB5Y2BgIGZpbGVzLgorCisKKy0gYCM0OTI4IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5Mjg+YF86IEZpeCBsaW5lIG9m
ZnNldHMgd2l0aCBgYFNjb3BlTWlzbWF0Y2hgYCBlcnJvcnMuCisKKworLSBgIzQ5NTcgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk1Nz5gXzogYGAtcCBubzpw
bHVnaW5gYCBpcyBoYW5kbGVkIGNvcnJlY3RseSBmb3IgZGVmYXVsdCAoaW50ZXJuYWwpIHBsdWdp
bnMgbm93LCBlLmcuIHdpdGggYGAtcCBubzpjYXB0dXJlYGAuCisKKyAgUHJldmlvdXNseSB0aGV5
IHdlcmUgbG9hZGVkIChpbXBvcnRlZCkgYWx3YXlzLCBtYWtpbmcgZS5nLiB0aGUgYGBjYXBmZGBg
IGZpeHR1cmUgYXZhaWxhYmxlLgorCisKKy0gYCM0OTY4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5Njg+YF86IFRoZSBwZGIgYGBxdWl0YGAgY29tbWFuZCBp
cyBoYW5kbGVkIHByb3Blcmx5IHdoZW4gdXNlZCBhZnRlciB0aGUgYGBkZWJ1Z2BgIGNvbW1hbmQg
d2l0aCBgcGRiKytgXy4KKworICAuLiBfcGRiKys6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9w
ZGJwcC8KKworCistIGAjNDk3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80OTc1PmBfOiBGaXggdGhlIGludGVycHJldGF0aW9uIG9mIGBgLXFxYGAgb3B0aW9u
IHdoZXJlIGl0IHdhcyBiZWluZyBjb25zaWRlcmVkIGFzIGBgLXZgYCBpbnN0ZWFkLgorCisKKy0g
YCM0OTc4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5Nzg+
YF86IGBgb3V0Y29tZXMuRXhpdGBgIGlzIG5vdCBzd2FsbG93ZWQgaW4gYGBhc3NlcnRyZXByX2Nv
bXBhcmVgYCBhbnltb3JlLgorCisKKy0gYCM0OTg4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQ5ODg+YF86IENsb3NlIGxvZ2dpbmcncyBmaWxlIGhhbmRsZXIg
ZXhwbGljaXRseSB3aGVuIHRoZSBzZXNzaW9uIGZpbmlzaGVzLgorCisKKy0gYCM1MDAzIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUwMDM+YF86IEZpeCBsaW5l
IG9mZnNldCB3aXRoIG1hcmsgY29sbGVjdGlvbiBlcnJvciAob2ZmIGJ5IG9uZSkuCisKKworCitJ
bXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM0OTc0
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5NzQ+YF86IFVw
ZGF0ZSBkb2NzIGZvciBgYHB5dGVzdF9jbWRsaW5lX3BhcnNlYGAgaG9vayB0byBub3RlIGF2YWls
YWJpbGl0eSBsaW1pbmF0aW9ucworCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQ3MTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDcxOD5gXzogYGBwbHVnZ3k+PTAuOWBgIGlzIG5vdyByZXF1
aXJlZC4KKworCistIGAjNDgxNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80ODE1PmBfOiBgYGZ1bmNzaWdzPj0xLjBgYCBpcyBub3cgcmVxdWlyZWQgZm9yIFB5
dGhvbiAyLjcuCisKKworLSBgIzQ4MjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNDgyOT5gXzogU29tZSBsZWZ0LW92ZXIgaW50ZXJuYWwgY29kZSByZWxhdGVk
IHRvIGBgeWllbGRgYCB0ZXN0cyBoYXMgYmVlbiByZW1vdmVkLgorCisKKy0gYCM0ODkwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ4OTA+YF86IFJlbW92ZSBp
bnRlcm5hbGx5IHVudXNlZCBgYGFueXB5dGhvbmBgIGZpeHR1cmUgZnJvbSB0aGUgcHl0ZXN0ZXIg
cGx1Z2luLgorCisKKy0gYCM0OTEyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQ5MTI+YF86IFJlbW92ZSBkZXByZWNhdGVkIFNwaGlueCBkaXJlY3RpdmUsIGBg
YWRkX2Rlc2NyaXB0aW9uX3VuaXQoKWBgLAorICBwaW4gc3BoaW54LXJlbW92ZWQtaW4gdG8gPj0g
MC4yLjAgdG8gc3VwcG9ydCBTcGhpbnggMi4wLgorCisKKy0gYCM0OTEzIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ5MTM+YF86IEZpeCBweXRlc3QgdGVzdHMg
aW52b2NhdGlvbiB3aXRoIGN1c3RvbSBgYFBZVEhPTlBBVEhgYC4KKworCistIGAjNDk2NSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80OTY1PmBfOiBOZXcgYGBw
eXRlc3RfcmVwb3J0X3RvX3NlcmlhbGl6YWJsZWBgIGFuZCBgYHB5dGVzdF9yZXBvcnRfZnJvbV9z
ZXJpYWxpemFibGVgYCAqKmV4cGVyaW1lbnRhbCoqIGhvb2tzLgorCisgIFRoZXNlIGhvb2tzIHdp
bGwgYmUgdXNlZCBieSBgYHB5dGVzdC14ZGlzdGBgLCBgYHB5dGVzdC1zdWJ0ZXN0c2BgLCBhbmQg
dGhlIHJlcGxhY2VtZW50IGZvcgorICByZXN1bHRsb2cgdG8gc2VyaWFsaXplIGFuZCBjdXN0b21p
emUgcmVwb3J0cy4KKworICBUaGV5IGFyZSBleHBlcmltZW50YWwsIG1lYW5pbmcgdGhhdCB0aGVp
ciBkZXRhaWxzIG1pZ2h0IGNoYW5nZSBvciBldmVuIGJlIHJlbW92ZWQKKyAgY29tcGxldGVseSBp
biBmdXR1cmUgcGF0Y2ggcmVsZWFzZXMgd2l0aG91dCB3YXJuaW5nLgorCisgIEZlZWRiYWNrIGlz
IHdlbGNvbWUgZnJvbSBwbHVnaW4gYXV0aG9ycyBhbmQgdXNlcnMgYWxpa2UuCisKKworLSBgIzQ5
ODcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDk4Nz5gXzog
YGBDb2xsZWN0b3IucmVwcl9mYWlsdXJlYGAgcmVzcGVjdHMgdGhlIGBgLS10YmBgIG9wdGlvbiwg
YnV0IG9ubHkgZGVmYXVsdHMgdG8gYGBzaG9ydGBgIG5vdyAod2l0aCBgYGF1dG9gYCkuCisKKwor
cHl0ZXN0IDQuMy4xICgyMDE5LTAzLTExKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitC
dWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNDgxMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80ODEwPmBfOiBMb2dnaW5nIG1lc3NhZ2VzIGluc2lkZSBgYHB5
dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCgpYGAgYXJlIG5vdyBwcm9wZXJseSBjYXB0dXJlZCBhbmQg
ZGlzcGxheWVkLgorCisKKy0gYCM0ODYxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQ4NjE+YF86IEltcHJvdmUgdmFsaWRhdGlvbiBvZiBjb250ZW50cyB3cml0
dGVuIHRvIGNhcHR1cmVkIG91dHB1dCBzbyBpdCBiZWhhdmVzIHRoZSBzYW1lIGFzIHdoZW4gY2Fw
dHVyZSBpcyBkaXNhYmxlZC4KKworCistIGAjNDg5OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80ODk4PmBfOiBGaXggYGBBdHRyaWJ1dGVFcnJvcjogRml4dHVy
ZVJlcXVlc3QgaGFzIG5vICdjb25mZycgYXR0cmlidXRlYGAgYnVnIGluIGBgdGVzdGRpci5jb3B5
X2V4YW1wbGVgYC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy0gYCM0NzY4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQ3Njg+YF86IEF2b2lkIHBrZ19yZXNvdXJjZXMgaW1wb3J0IGF0IHRoZSB0
b3AtbGV2ZWwuCisKKworcHl0ZXN0IDQuMy4wICgyMDE5LTAyLTE2KQorPT09PT09PT09PT09PT09
PT09PT09PT09PQorCitEZXByZWNhdGlvbnMKKy0tLS0tLS0tLS0tLQorCistIGAjNDcyNCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NzI0PmBfOiBgYHB5dGVz
dC53YXJucygpYGAgbm93IGVtaXRzIGEgd2FybmluZyB3aGVuIGl0IHJlY2VpdmVzIHVua25vd24g
a2V5d29yZCBhcmd1bWVudHMuCisKKyAgVGhpcyB3aWxsIGJlIGNoYW5nZWQgaW50byBhbiBlcnJv
ciBpbiB0aGUgZnV0dXJlLgorCisKKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gYCMyNzUzIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NTM+YF86IFVzYWdl
IGVycm9ycyBmcm9tIGFyZ3BhcnNlIGFyZSBtYXBwZWQgdG8gcHl0ZXN0J3MgYGBVc2FnZUVycm9y
YGAuCisKKworLSBgIzM3MTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzcxMT5gXzogQWRkIHRoZSBgYC0taWdub3JlLWdsb2JgYCBwYXJhbWV0ZXIgdG8gZXhj
bHVkZSB0ZXN0LW1vZHVsZXMgd2l0aCBVbml4IHNoZWxsLXN0eWxlIHdpbGRjYXJkcy4KKyAgQWRk
IHRoZSA6Z2xvYmFsdmFyOmBjb2xsZWN0X2lnbm9yZV9nbG9iYCBmb3IgYGBjb25mdGVzdC5weWBg
IHRvIGV4Y2x1ZGUgdGVzdC1tb2R1bGVzIHdpdGggVW5peCBzaGVsbC1zdHlsZSB3aWxkY2FyZHMu
CisKKworLSBgIzQ2OTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDY5OD5gXzogVGhlIHdhcm5pbmcgYWJvdXQgUHl0aG9uIDIuNyBhbmQgMy40IG5vdCBiZWlu
ZyBzdXBwb3J0ZWQgaW4gcHl0ZXN0IDUuMCBoYXMgYmVlbiByZW1vdmVkLgorCisgIEluIHRoZSBl
bmQgaXQgd2FzIGNvbnNpZGVyZWQgdG8gYmUgbW9yZQorICBvZiBhIG51aXNhbmNlIHRoYW4gYWN0
dWFsIHV0aWxpdHkgYW5kIHVzZXJzIG9mIHRob3NlIFB5dGhvbiB2ZXJzaW9ucyBzaG91bGRuJ3Qg
aGF2ZSBwcm9ibGVtcyBhcyBgYHBpcGBgIHdpbGwgbm90CisgIGluc3RhbGwgcHl0ZXN0IDUuMCBv
biB0aG9zZSBpbnRlcnByZXRlcnMuCisKKworLSBgIzQ3MDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDcwNz5gXzogV2l0aCB0aGUgaGVscCBvZiBuZXcgYGBz
ZXRfbG9nX3BhdGgoKWBgIG1ldGhvZCB0aGVyZSBpcyBhIHdheSB0byBzZXQgYGBsb2dfZmlsZWBg
IHBhdGhzIGZyb20gaG9va3MuCisKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjNDY1
MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjUxPmBfOiBg
YC0taGVscGBgIGFuZCBgYC0tdmVyc2lvbmBgIGFyZSBoYW5kbGVkIHdpdGggYGBVc2FnZUVycm9y
YGAuCisKKworLSBgIzQ3ODIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDc4Mj5gXzogRml4IGBgQXNzZXJ0aW9uRXJyb3JgYCB3aXRoIGNvbGxlY3Rpb24gb2Yg
YnJva2VuIHN5bWxpbmtzIHdpdGggcGFja2FnZXMuCisKKworcHl0ZXN0IDQuMi4xICgyMDE5LTAy
LTEyKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQor
CistIGAjMjg5NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
ODk1PmBfOiBUaGUgYGBweXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2hgYCBob29rIG5vdyBp
cyBhbHNvIGNhbGxlZCB3aXRoIGBgLS1jb2xsZWN0LW9ubHlgYC4KKworCistIGAjMzg5OSA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODk5PmBfOiBEbyBub3Qg
cmFpc2UgYGBVc2FnZUVycm9yYGAgd2hlbiBhbiBpbXBvcnRlZCBwYWNrYWdlIGhhcyBhIGBgcHl0
ZXN0X3BsdWdpbnMucHlgYCBjaGlsZCBtb2R1bGUuCisKKworLSBgIzQzNDcgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDM0Nz5gXzogRml4IG91dHB1dCBjYXB0
dXJpbmcgd2hlbiB1c2luZyBwZGIrKyB3aXRoIHJlY3Vyc2l2ZSBkZWJ1Z2dpbmcuCisKKworLSBg
IzQ1OTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU5Mj5g
XzogRml4IGhhbmRsaW5nIG9mIGBgY29sbGVjdF9pZ25vcmVgYCB2aWEgcGFyZW50IGBgY29uZnRl
c3QucHlgYC4KKworCistIGAjNDcwMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy80NzAwPmBfOiBGaXggcmVncmVzc2lvbiB3aGVyZSBgYHNldFVwQ2xhc3NgYCB3
b3VsZCBhbHdheXMgYmUgY2FsbGVkIGluIHN1YmNsYXNzZXMgZXZlbiBpZiBhbGwgdGVzdHMKKyAg
d2VyZSBza2lwcGVkIGJ5IGEgYGB1bml0dGVzdC5za2lwKClgYCBkZWNvcmF0b3IgYXBwbGllZCBp
biB0aGUgc3ViY2xhc3MuCisKKworLSBgIzQ3MzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNDczOT5gXzogRml4IGBgcGFyYW1ldHJpemUoLi4uIGlkcz08ZnVu
Y3Rpb24+KWBgIHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgbm9uLXN0cmluZ3MuCisKKworLSBg
IzQ3NDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDc0NT5g
XzogRml4L2ltcHJvdmUgY29sbGVjdGlvbiBvZiBhcmdzIHdoZW4gcGFzc2luZyBpbiBgYF9faW5p
dF9fLnB5YGAgYW5kIGEgdGVzdCBmaWxlLgorCisKKy0gYCM0NzcwIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ3NzA+YF86IGBgbW9yZV9pdGVydG9vbHNgYCBp
cyBub3cgY29uc3RyYWluZWQgdG8gPDYuMC4wIHdoZW4gcmVxdWlyZWQgZm9yIFB5dGhvbiAyLjcg
Y29tcGF0aWJpbGl0eS4KKworCistIGAjNTI2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzUyNj5gXzogRml4ICJWYWx1ZUVycm9yOiBQbHVnaW4gYWxyZWFkeSBy
ZWdpc3RlcmVkIiBleGNlcHRpb25zIHdoZW4gcnVubmluZyBpbiBidWlsZCBkaXJlY3RvcmllcyB0
aGF0IHN5bWxpbmsgdG8gYWN0dWFsIHNvdXJjZS4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRp
b24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM4OTkgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzg5OT5gXzogQWRkIG5vdGUgdG8gYGBwbHVnaW5z
LnJzdGBgIHRoYXQgYGBweXRlc3RfcGx1Z2luc2BgIHNob3VsZCBub3QgYmUgdXNlZCBhcyBhIG5h
bWUgZm9yIGEgdXNlciBtb2R1bGUgY29udGFpbmluZyBwbHVnaW5zLgorCisKKy0gYCM0MzI0IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzMjQ+YF86IERvY3Vt
ZW50IGhvdyB0byB1c2UgYGByYWlzZXNgYCBhbmQgYGBkb2VzX25vdF9yYWlzZWBgIHRvIHdyaXRl
IHBhcmFtZXRyaXplZCB0ZXN0cyB3aXRoIGNvbmRpdGlvbmFsIHJhaXNlcy4KKworCistIGAjNDcw
OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NzA5PmBfOiBE
b2N1bWVudCBob3cgdG8gY3VzdG9taXplIHRlc3QgZmFpbHVyZSBtZXNzYWdlcyB3aGVuIHVzaW5n
CisgIGBgcHl0ZXN0Lndhcm5zYGAuCisKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNDc0MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NzQxPmBfOiBTb21lIHZlcmJvc2l0eSByZWxhdGVkIGF0
dHJpYnV0ZXMgb2YgdGhlIFRlcm1pbmFsUmVwb3J0ZXIgcGx1Z2luIGFyZSBub3cKKyAgcmVhZCBv
bmx5IHByb3BlcnRpZXMuCisKKworcHl0ZXN0IDQuMi4wICgyMDE5LTAxLTMwKQorPT09PT09PT09
PT09PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzMwOTQgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA5ND5gXzogYENsYXNzaWMg
eHVuaXQtc3R5bGUgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS94dW5pdF9zZXR1
cC5odG1sPmBfXyBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKyAgbm93IG9iZXkgdGhlIHNjb3BlIG9m
ICphdXRvdXNlKiBmaXh0dXJlcy4KKworICBUaGlzIGZpeGVzIGEgbnVtYmVyIG9mIHN1cnByaXNp
bmcgaXNzdWVzIGxpa2UgYGBzZXR1cF9tZXRob2RgYCBiZWluZyBjYWxsZWQgYmVmb3JlIHNlc3Np
b24tc2NvcGVkCisgIGF1dG91c2UgZml4dHVyZXMgKHNlZSBgIzUxNyA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MTc+YF9fIGZvciBhbiBleGFtcGxlKS4KKwor
CistIGAjNDYyNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
NjI3PmBfOiBEaXNwbGF5IGEgbWVzc2FnZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IHNlc3Npb24g
d2hlbiBydW5uaW5nIHVuZGVyIFB5dGhvbiAyLjcgYW5kIDMuNCB0aGF0IHB5dGVzdCA1LjAgd2ls
bCBubyBsb25nZXIKKyAgc3VwcG9ydCB0aG9zZSBQeXRob24gdmVyc2lvbnMuCisKKworLSBgIzQ2
NjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY2MD5gXzog
VGhlIG51bWJlciBvZiAqc2VsZWN0ZWQqIHRlc3RzIG5vdyBhcmUgYWxzbyBkaXNwbGF5ZWQgd2hl
biB0aGUgYGAta2BgIG9yIGBgLW1gYCBmbGFncyBhcmUgdXNlZC4KKworCistIGAjNDY4OCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Njg4PmBfOiBgYHB5dGVz
dF9yZXBvcnRfdGVzdHN0YXR1c2BgIGhvb2sgbm93IGNhbiBhbHNvIHJlY2VpdmUgYSBgYGNvbmZp
Z2BgIHBhcmFtZXRlci4KKworCistIGAjNDY5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy80NjkxPmBfOiBgYHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5YGAgaG9v
ayBub3cgY2FuIGFsc28gcmVjZWl2ZSBhIGBgY29uZmlnYGAgcGFyYW1ldGVyLgorCisKKworQnVn
IEZpeGVzCistLS0tLS0tLS0KKworLSBgIzM1NDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzU0Nz5gXzogYGAtLWp1bml0eG1sYGAgY2FuIGVtaXQgWE1MIGNv
bXBhdGlibGUgd2l0aCBKZW5raW5zIHhVbml0LgorICBgYGp1bml0X2ZhbWlseWBgIElOSSBvcHRp
b24gYWNjZXB0cyBgYGxlZ2FjeXx4dW5pdDFgYCwgd2hpY2ggcHJvZHVjZXMgb2xkIHN0eWxlIG91
dHB1dCwgYW5kIGBgeHVuaXQyYGAgdGhhdCBjb25mb3JtcyBtb3JlIHN0cmljdGx5IHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qZW5raW5zY2kveHVuaXQtcGx1Z2luL2Jsb2IveHVuaXQtMi4zLjIvc3Jj
L21haW4vcmVzb3VyY2VzL29yZy9qZW5raW5zY2kvcGx1Z2lucy94dW5pdC90eXBlcy9tb2RlbC94
c2QvanVuaXQtMTAueHNkCisKKworLSBgIzQyODAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNDI4MD5gXzogSW1wcm92ZSBxdWl0dGluZyBmcm9tIHBkYiwgZXNw
ZWNpYWxseSB3aXRoIGBgLS10cmFjZWBgLgorCisgIFVzaW5nIGBgcVtxdWl0XWBgIGFmdGVyIGBg
cGRiLnNldF90cmFjZSgpYGAgd2lsbCBxdWl0IHB5dGVzdCBhbHNvLgorCisKKy0gYCM0NDAyIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0MDI+YF86IFdhcm5p
bmcgc3VtbWFyeSBub3cgZ3JvdXBzIHdhcm5pbmdzIGJ5IG1lc3NhZ2UgaW5zdGVhZCBvZiBieSB0
ZXN0IGlkLgorCisgIFRoaXMgbWFrZXMgdGhlIG91dHB1dCBtb3JlIGNvbXBhY3QgYW5kIGJldHRl
ciBjb252ZXlzIHRoZSBnZW5lcmFsIGlkZWEgb2YgaG93IG11Y2ggY29kZSBpcworICBhY3R1YWxs
eSBnZW5lcmF0aW5nIHdhcm5pbmdzLCBpbnN0ZWFkIG9mIGhvdyBtYW55IHRlc3RzIGNhbGwgdGhh
dCBjb2RlLgorCisKKy0gYCM0NTM2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQ1MzY+YF86IGBgbW9ua2V5cGF0Y2guZGVsYXR0cmBgIGhhbmRsZXMgY2xhc3Mg
ZGVzY3JpcHRvcnMgbGlrZSBgYHN0YXRpY21ldGhvZGBgL2BgY2xhc3NtZXRob2RgYC4KKworCist
IGAjNDY0OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjQ5
PmBfOiBSZXN0b3JlIG1hcmtzIGJlaW5nIGNvbnNpZGVyZWQga2V5d29yZHMgZm9yIGtleXdvcmQg
ZXhwcmVzc2lvbnMuCisKKworLSBgIzQ2NTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDY1Mz5gXzogYGB0bXBfcGF0aGBgIGZpeHR1cmUgYW5kIG90aGVyIHJl
bGF0ZWQgb25lcyBwcm92aWRlcyByZXNvbHZlZCBwYXRoIChhLmsuYSByZWFsIHBhdGgpCisKKwor
LSBgIzQ2NjcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY2
Nz5gXzogYGBweXRlc3RfdGVybWluYWxfc3VtbWFyeWBgIHVzZXMgcmVzdWx0IGZyb20gYGBweXRl
c3RfcmVwb3J0X3Rlc3RzdGF0dXNgYCBob29rLCByYXRoZXIgdGhhbiBoYXJkY29kZWQgc3RyaW5n
cy4KKworCistIGAjNDY2OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy80NjY5PmBfOiBDb3JyZWN0bHkgaGFuZGxlIGBgdW5pdHRlc3QuU2tpcFRlc3RgYCBleGNl
cHRpb24gY29udGFpbmluZyBub24tYXNjaWkgY2hhcmFjdGVycyBvbiBQeXRob24gMi4KKworCist
IGAjNDY4MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Njgw
PmBfOiBFbnN1cmUgdGhlIGBgdG1wZGlyYGAgYW5kIHRoZSBgYHRtcF9wYXRoYGAgZml4dHVyZXMg
YXJlIHRoZSBzYW1lIGZvbGRlci4KKworCistIGAjNDY4MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjgxPmBfOiBFbnN1cmUgYGB0bXBfcGF0aGBgIGlzIGFs
d2F5cyBhIHJlYWwgcGF0aC4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM0NjQzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQ2NDM+YF86IFVzZSBgYGEuaXRlbSgpYGAgaW5zdGVhZCBvZiB0
aGUgZGVwcmVjYXRlZCBgYG5wLmFzc2NhbGFyKGEpYGAgaW4gYGBweXRlc3QuYXBwcm94YGAuCisK
KyAgYGBucC5hc3NjYWxhcmBgIGhhcyBiZWVuIGBkZXByZWNhdGVkIDxodHRwczovL2dpdGh1Yi5j
b20vbnVtcHkvbnVtcHkvYmxvYi9tYXN0ZXIvZG9jL3JlbGVhc2UvMS4xNi4wLW5vdGVzLnJzdCNu
ZXctZGVwcmVjYXRpb25zPmBfXyBpbiBgYG51bXB5IDEuMTYuYGAuCisKKworLSBgIzQ2NTcgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY1Nz5gXzogQ29weSBz
YWZlcmVwciBmcm9tIHB5bGliCisKKworLSBgIzQ2NjggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDY2OD5gXzogVGhlIHZlcmJvc2Ugd29yZCBmb3IgZXhwZWN0
ZWQgZmFpbHVyZXMgaW4gdGhlIHRlc3RzdGF0dXMgcmVwb3J0IGNoYW5nZXMgZnJvbSBgYHhmYWls
YGAgdG8gYGBYRkFJTGBgIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0ZXN0IG91dGNvbWVz
LgorCisKK3B5dGVzdCA0LjEuMSAoMjAxOS0wMS0xMikKKz09PT09PT09PT09PT09PT09PT09PT09
PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzIyNTYgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjI1Nj5gXzogU2hvdyBmdWxsIHJlcHIgd2l0aCBg
YGFzc2VydCBhPT1iYGAgYW5kIGBgLXZ2YGAuCisKKworLSBgIzM0NTYgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ1Nj5gXzogRXh0ZW5kIERvY3Rlc3QtbW9k
dWxlcyB0byBpZ25vcmUgbW9jayBvYmplY3RzLgorCisKKy0gYCM0NjE3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ2MTc+YF86IEZpeGVkIGBgcHl0ZXN0Lndh
cm5zYGAgYnVnIHdoZW4gY29udGV4dCBtYW5hZ2VyIGlzIHJldXNlZCAoZS5nLiBtdWx0aXBsZSBw
YXJhbWV0cml6YXRpb24pLgorCisKKy0gYCM0NjMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQ2MzE+YF86IERvbid0IHJld3JpdGUgYXNzZXJ0aW9uIHdoZW4g
YGBfX2dldGF0dHJfX2BgIGlzIGJyb2tlbgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMzM3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzc1PmBfOiBEb2N1bWVudCB0aGF0IHVzaW5nIGBgc2V0
dXAuY2ZnYGAgbWF5IGNyYXNoIG90aGVyIHRvb2xzIG9yIGNhdXNlIGhhcmQgdG8gdHJhY2sgZG93
biBwcm9ibGVtcyBiZWNhdXNlIGl0IHVzZXMgYSBkaWZmZXJlbnQgcGFyc2VyIHRoYW4gYGBweXRl
c3QuaW5pYGAgb3IgYGB0b3guaW5pYGAgZmlsZXMuCisKKworCitUcml2aWFsL0ludGVybmFsIENo
YW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjNDYwMiA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjAyPmBfOiBVbmluc3RhbGwgYGBoeXBv
dGhlc2lzYGAgaW4gcmVnZW4gdG94IGVudi4KKworCitweXRlc3QgNC4xLjAgKDIwMTktMDEtMDUp
Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbW92YWxzCistLS0tLS0tLQorCistIGAj
MjE2OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTY5PmBf
OiBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGA6IGluIHByZXZpb3VzIHZlcnNpb25zLCBlcnJv
cnMgcmFpc2VkIGJ5IGlkIGZ1bmN0aW9ucyB3ZXJlIHN1cHByZXNzZWQgYW5kIGNoYW5nZWQgaW50
byB3YXJuaW5ncy4gTm93IHRoZSBleGNlcHRpb25zIGFyZSBwcm9wYWdhdGVkLCBhbG9uZyB3aXRo
IGEgcHl0ZXN0IG1lc3NhZ2UgaW5mb3JtaW5nIHRoZSBub2RlLCBwYXJhbWV0ZXIgdmFsdWUgYW5k
IGluZGV4IHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuCisKKworLSBgIzMwNzggPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA3OD5gXzogUmVtb3ZlIGxl
Z2FjeSBpbnRlcm5hbCB3YXJuaW5ncyBzeXN0ZW06IGBgY29uZmlnLndhcm5gYCwgYGBOb2RlLndh
cm5gYC4gVGhlIGBgcHl0ZXN0X2xvZ3dhcm5pbmdgYCBub3cgaXNzdWVzIGEgd2FybmluZyB3aGVu
IGltcGxlbWVudGVkLgorCisgIFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCNjb25maWctd2Fybi1hbmQtbm9kZS13YXJuPmBf
XyBvbiBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIgY29kZS4KKworCistIGAjMzA3
OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDc5PmBfOiBS
ZW1vdmVkIHN1cHBvcnQgZm9yIHlpZWxkIHRlc3RzIC0gdGhleSBhcmUgZnVuZGFtZW50YWxseSBi
cm9rZW4gYmVjYXVzZSB0aGV5IGRvbid0IHN1cHBvcnQgZml4dHVyZXMgcHJvcGVybHkgc2luY2Ug
Y29sbGVjdGlvbiBhbmQgdGVzdCBleGVjdXRpb24gd2VyZSBzZXBhcmF0ZWQuCisKKyAgU2VlIG91
ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5o
dG1sI3lpZWxkLXRlc3RzPmBfXyBvbiBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIg
Y29kZS4KKworCistIGAjMzA4MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMDgyPmBfOiBSZW1vdmVkIHN1cHBvcnQgZm9yIGFwcGx5aW5nIG1hcmtzIGRpcmVj
dGx5IHRvIHZhbHVlcyBpbiBgYEBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgLiBVc2UgYGBweXRl
c3QucGFyYW1gYCBpbnN0ZWFkLgorCisgIFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCNtYXJrcy1pbi1weXRlc3QtbWFyay1w
YXJhbWV0cml6ZT5gX18gb24gaW5mb3JtYXRpb24gb24gaG93IHRvIHVwZGF0ZSB5b3VyIGNvZGUu
CisKKworLSBgIzMwODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzA4Mz5gXzogUmVtb3ZlZCBgYE1ldGFmdW5jLmFkZGNhbGxgYC4gVGhpcyB3YXMgdGhlIHBy
ZWRlY2Vzc29yIG1lY2hhbmlzbSB0byBgYEBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgLgorCisg
IFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNh
dGlvbnMuaHRtbCNtZXRhZnVuYy1hZGRjYWxsPmBfXyBvbiBpbmZvcm1hdGlvbiBvbiBob3cgdG8g
dXBkYXRlIHlvdXIgY29kZS4KKworCistIGAjMzA4NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDg1PmBfOiBSZW1vdmVkIHN1cHBvcnQgZm9yIHBhc3Npbmcg
c3RyaW5ncyB0byBgYHB5dGVzdC5tYWluYGAuIE5vdywgYWx3YXlzIHBhc3MgYSBsaXN0IG9mIHN0
cmluZ3MgaW5zdGVhZC4KKworICBTZWUgb3VyIGBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjcGFzc2luZy1jb21tYW5kLWxpbmUtc3RyaW5n
LXRvLXB5dGVzdC1tYWluPmBfXyBvbiBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIg
Y29kZS4KKworCistIGAjMzA4NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zMDg2PmBfOiBgYFtweXRlc3RdYGAgc2VjdGlvbiBpbiAqKnNldHVwLmNmZyoqIGZp
bGVzIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHVzZSBgYFt0b29sOnB5dGVzdF1gYCBpbnN0ZWFk
LiBgYHNldHVwLmNmZ2BgIGZpbGVzCisgIGFyZSBtZWFudCBmb3IgdXNlIHdpdGggYGBkaXN0dXRp
bHNgYCwgYW5kIGEgc2VjdGlvbiBuYW1lZCBgYHB5dGVzdGBgIGhhcyBub3RvcmlvdXNseSBiZWVu
IGEgc291cmNlIG9mIGNvbmZsaWN0cyBhbmQgYnVncy4KKworICBOb3RlIHRoYXQgZm9yICoqcHl0
ZXN0LmluaSoqIGFuZCAqKnRveC5pbmkqKiBmaWxlcyB0aGUgc2VjdGlvbiByZW1haW5zIGBgW3B5
dGVzdF1gYC4KKworCistIGAjMzYxNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zNjE2PmBfOiBSZW1vdmVkIHRoZSBkZXByZWNhdGVkIGNvbXBhdCBwcm9wZXJ0
aWVzIGZvciBgYG5vZGUuQ2xhc3MvRnVuY3Rpb24vTW9kdWxlYGAgLSB1c2UgYGBweXRlc3QuQ2xh
c3MvRnVuY3Rpb24vTW9kdWxlYGAgbm93LgorCisgIFNlZSBvdXIgYGRvY3MgPGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbCNpbnRlcm5hbC1jbGFzc2Vz
LWFjY2Vzc2VkLXRocm91Z2gtbm9kZT5gX18gb24gaW5mb3JtYXRpb24gb24gaG93IHRvIHVwZGF0
ZSB5b3VyIGNvZGUuCisKKworLSBgIzQ0MjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDQyMT5gXzogUmVtb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhl
IGBgcHl0ZXN0X25hbWVzcGFjZWBgIGhvb2suCisKKyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI3B5dGVzdC1uYW1lc3Bh
Y2U+YF9fIG9uIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1cGRhdGUgeW91ciBjb2RlLgorCisKKy0g
YCM0NDg5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0ODk+
YF86IFJlbW92ZWQgYGByZXF1ZXN0LmNhY2hlZF9zZXR1cGBgLiBUaGlzIHdhcyB0aGUgcHJlZGVj
ZXNzb3IgbWVjaGFuaXNtIHRvIG1vZGVybiBmaXh0dXJlcy4KKworICBTZWUgb3VyIGBkb2NzIDxo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjY2FjaGVk
LXNldHVwPmBfXyBvbiBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIgY29kZS4KKwor
CistIGAjNDUzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
NTM1PmBfOiBSZW1vdmVkIHRoZSBkZXByZWNhdGVkIGBgUHlDb2xsZWN0b3IubWFrZWl0ZW1gYCBt
ZXRob2QuIFRoaXMgbWV0aG9kIHdhcyBtYWRlIHB1YmxpYyBieSBtaXN0YWtlIGEgbG9uZyB0aW1l
IGFnby4KKworCistIGAjNDU0MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80NTQzPmBfOiBSZW1vdmVkIHN1cHBvcnQgdG8gZGVmaW5lIGZpeHR1cmVzIHVzaW5n
IHRoZSBgYHB5dGVzdF9mdW5jYXJnX19gYCBwcmVmaXguIFVzZSB0aGUgYGBAcHl0ZXN0LmZpeHR1
cmVgYCBkZWNvcmF0b3IgaW5zdGVhZC4KKworICBTZWUgb3VyIGBkb2NzIDxodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjcHl0ZXN0LWZ1bmNhcmctcHJl
Zml4PmBfXyBvbiBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBkYXRlIHlvdXIgY29kZS4KKworCist
IGAjNDU0NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTQ1
PmBfOiBDYWxsaW5nIGZpeHR1cmVzIGRpcmVjdGx5IGlzIG5vdyBhbHdheXMgYW4gZXJyb3IgaW5z
dGVhZCBvZiBhIHdhcm5pbmcuCisKKyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVz
dC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI2NhbGxpbmctZml4dHVyZXMtZGlyZWN0
bHk+YF9fIG9uIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1cGRhdGUgeW91ciBjb2RlLgorCisKKy0g
YCM0NTQ2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1NDY+
YF86IFJlbW92ZSBgYE5vZGUuZ2V0X21hcmtlcihuYW1lKWBgIHRoZSByZXR1cm4gdmFsdWUgd2Fz
IG5vdCB1c2FibGUgZm9yIG1vcmUgdGhhbiBhIGV4aXN0ZW5jZSBjaGVjay4KKworICBVc2UgYGBO
b2RlLmdldF9jbG9zZXN0X21hcmtlcihuYW1lKWBgIGFzIGEgcmVwbGFjZW1lbnQuCisKKworLSBg
IzQ1NDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU0Nz5g
XzogVGhlIGRlcHJlY2F0ZWQgYGByZWNvcmRfeG1sX3Byb3BlcnR5YGAgZml4dHVyZSBoYXMgYmVl
biByZW1vdmVkLCB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBgYHJlY29yZF9wcm9wZXJ0eWBgIGluc3Rl
YWQuCisKKyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxl
L2RlcHJlY2F0aW9ucy5odG1sI3JlY29yZC14bWwtcHJvcGVydHk+YF9fIGZvciBtb3JlIGluZm9y
bWF0aW9uLgorCisKKy0gYCM0NTQ4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQ1NDg+YF86IEFuIGVycm9yIGlzIG5vdyByYWlzZWQgaWYgdGhlIGBgcHl0ZXN0
X3BsdWdpbnNgYCB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgbm9uLXRvcC1sZXZlbCBgYGNvbmZ0
ZXN0LnB5YGAgZmlsZSAoaS5lLiwgbm90IHJlc2lkaW5nIGluIHRoZSBgYHJvb3RkaXJgYCkuCisK
KyAgU2VlIG91ciBgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJl
Y2F0aW9ucy5odG1sI3B5dGVzdC1wbHVnaW5zLWluLW5vbi10b3AtbGV2ZWwtY29uZnRlc3QtZmls
ZXM+YF9fIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKy0gYCM4OTEgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvODkxPmBfOiBSZW1vdmUgYGB0ZXN0ZnVuY3Rp
b24ubWFya2VybmFtZWBgIGF0dHJpYnV0ZXMgLSB1c2UgYGBOb2RlLml0ZXJfbWFya2VycyhuYW1l
PU5vbmUpYGAgdG8gaXRlcmF0ZSB0aGVtLgorCisKKworRGVwcmVjYXRpb25zCistLS0tLS0tLS0t
LS0KKworLSBgIzMwNTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzA1MD5gXzogRGVwcmVjYXRlZCB0aGUgYGBweXRlc3QuY29uZmlnYGAgZ2xvYmFsLgorCisg
IFNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwj
cHl0ZXN0LWNvbmZpZy1nbG9iYWwgZm9yIHJhdGlvbmFsZS4KKworCistIGAjMzk3NCA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTc0PmBfOiBQYXNzaW5nIHRo
ZSBgYG1lc3NhZ2VgYCBwYXJhbWV0ZXIgb2YgYGBweXRlc3QucmFpc2VzYGAgbm93IGlzc3VlcyBh
IGBgRGVwcmVjYXRpb25XYXJuaW5nYGAuCisKKyAgSXQgaXMgYSBjb21tb24gbWlzdGFrZSB0byB0
aGluayB0aGlzIHBhcmFtZXRlciB3aWxsIG1hdGNoIHRoZSBleGNlcHRpb24gbWVzc2FnZSwgd2hp
bGUgaW4gZmFjdAorICBpdCBvbmx5IHNlcnZlcyB0byBwcm92aWRlIGEgY3VzdG9tIG1lc3NhZ2Ug
aW4gY2FzZSB0aGUgYGBweXRlc3QucmFpc2VzYGAgY2hlY2sgZmFpbHMuIFRvIGF2b2lkIHRoaXMK
KyAgbWlzdGFrZSBhbmQgYmVjYXVzZSBpdCBpcyBiZWxpZXZlZCB0byBiZSBsaXR0bGUgdXNlZCwg
cHl0ZXN0IGlzIGRlcHJlY2F0aW5nIGl0IHdpdGhvdXQgcHJvdmlkaW5nCisgIGFuIGFsdGVybmF0
aXZlIGZvciB0aGUgbW9tZW50LgorCisgIElmIHlvdSBoYXZlIGNvbmNlcm5zIGFib3V0IHRoaXMs
IHBsZWFzZSBjb21tZW50IG9uIGBpc3N1ZSAjMzk3NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTc0PmBfXy4KKworCistIGAjNDQzNSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDM1PmBfOiBEZXByZWNhdGVkIGBgcmFp
c2VzKC4uLiwgJ2NvZGUoYXNfYV9zdHJpbmcpJylgYCBhbmQgYGB3YXJucyguLi4sICdjb2RlKGFz
X2Ffc3RyaW5nKScpYGAuCisKKyAgU2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9kZXByZWNhdGlvbnMuaHRtbCNyYWlzZXMtd2FybnMtZXhlYyBmb3IgcmF0aW9uYWxlIGFuZCBl
eGFtcGxlcy4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGAjMzE5MSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTkxPmBfOiBBIHdhcm5pbmcgaXMg
bm93IGlzc3VlZCB3aGVuIGFzc2VydGlvbnMgYXJlIG1hZGUgZm9yIGBgTm9uZWBgLgorCisgIFRo
aXMgaXMgYSBjb21tb24gc291cmNlIG9mIGNvbmZ1c2lvbiBhbW9uZyBuZXcgdXNlcnMsIHdoaWNo
IHdyaXRlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgYXNzZXJ0IG1vY2tl
ZF9vYmplY3QuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIDQsIDUsIGtleT0idmFsdWUiKQorCisgIFdo
ZW4gdGhleSBzaG91bGQgd3JpdGU6CisKKyAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAg
ICBtb2NrZWRfb2JqZWN0LmFzc2VydF9jYWxsZWRfd2l0aCgzLCA0LCA1LCBrZXk9InZhbHVlIikK
KworICBCZWNhdXNlIHRoZSBgYGFzc2VydF9jYWxsZWRfd2l0aGBgIG1ldGhvZCBvZiBtb2NrIG9i
amVjdHMgYWxyZWFkeSBleGVjdXRlcyBhbiBhc3NlcnRpb24uCisKKyAgVGhpcyB3YXJuaW5nIHdp
bGwgbm90IGJlIGlzc3VlZCB3aGVuIGBgTm9uZWBgIGlzIGV4cGxpY2l0bHkgY2hlY2tlZC4gQW4g
YXNzZXJ0aW9uIGxpa2U6CisKKyAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgICBhc3Nl
cnQgdmFyaWFibGUgaXMgTm9uZQorCisgIHdpbGwgbm90IGlzc3VlIHRoZSB3YXJuaW5nLgorCisK
Ky0gYCMzNjMyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2
MzI+YF86IFJpY2hlciBlcXVhbGl0eSBjb21wYXJpc29uIGludHJvc3BlY3Rpb24gb24gYGBBc3Nl
cnRpb25FcnJvcmBgIGZvciBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgYGF0dHJzIDxodHRwOi8vd3d3
LmF0dHJzLm9yZy9lbi9zdGFibGUvPmBfXyBvciBgZGF0YWNsYXNzZXMgPGh0dHBzOi8vZG9jcy5w
eXRob24ub3JnLzMvbGlicmFyeS9kYXRhY2xhc3Nlcy5odG1sPmBfIChQeXRob24gMy43KywgYGJh
Y2twb3J0ZWQgdG8gMy42IDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvZGF0YWNsYXNzZXM+YF9f
KS4KKworCistIGAjNDI3OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy80Mjc4PmBfOiBgYENBQ0hFRElSLlRBR2BgIGZpbGVzIGFyZSBub3cgY3JlYXRlZCBpbnNp
ZGUgY2FjaGUgZGlyZWN0b3JpZXMuCisKKyAgVGhvc2UgZmlsZXMgYXJlIHBhcnQgb2YgdGhlIGBD
YWNoZSBEaXJlY3RvcnkgVGFnZ2luZyBTdGFuZGFyZCA8aHR0cDovL3d3dy5iZm9yZC5pbmZvL2Nh
Y2hlZGlyL3NwZWMuaHRtbD5gX18sIGFuZCBjYW4KKyAgYmUgdXNlZCBieSBiYWNrdXAgb3Igc3lu
Y2hyb25pemF0aW9uIHByb2dyYW1zIHRvIGlkZW50aWZ5IHB5dGVzdCdzIGNhY2hlIGRpcmVjdG9y
eSBhcyBzdWNoLgorCisKKy0gYCM0MjkyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQyOTI+YF86IGBgcHl0ZXN0Lm91dGNvbWVzLkV4aXRgYCBpcyBkZXJpdmVk
IGZyb20gYGBTeXN0ZW1FeGl0YGAgaW5zdGVhZCBvZiBgYEtleWJvYXJkSW50ZXJydXB0YGAuIFRo
aXMgYWxsb3dzIHVzIHRvIGJldHRlciBoYW5kbGUgYGBwZGJgYCBleGl0aW5nLgorCisKKy0gYCM0
MzcxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzNzE+YF86
IFVwZGF0ZWQgdGhlIGBgLS1jb2xsZWN0LW9ubHlgYCBvcHRpb24gdG8gZGlzcGxheSB0ZXN0IGRl
c2NyaXB0aW9ucyB3aGVuIHJhbiB1c2luZyBgYC0tdmVyYm9zZWBgLgorCisKKy0gYCM0Mzg2IDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzODY+YF86IFJlc3Ry
dWN0dXJlZCBgYEV4Y2VwdGlvbkluZm9gYCBvYmplY3QgY29uc3RydWN0aW9uIGFuZCBlbnN1cmUg
aW5jb21wbGV0ZSBpbnN0YW5jZXMgaGF2ZSBhIGBgcmVwcmBgL2Bgc3RyYGAuCisKKworLSBgIzQ0
MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQxNj5gXzog
cGRiOiBhZGRlZCBzdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyB3aXRoIGBgcGRiLnNldF90
cmFjZWBgLgorCisgIEl0IGhhbmRsZXMgYGBoZWFkZXJgYCBzaW1pbGFyIHRvIFB5dGhvbiAzLjcg
ZG9lcyBpdCwgYW5kIGZvcndhcmRzIGFueQorICBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0byB0
aGUgYGBQZGJgYCBjb25zdHJ1Y3Rvci4KKworICBUaGlzIGFsbG93cyBmb3IgYGBfX2ltcG9ydF9f
KCJwZGIiKS5zZXRfdHJhY2Uoc2tpcD1bImZvby4qIl0pYGAuCisKKworLSBgIzQ0ODMgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQ4Mz5gXzogQWRkZWQgaW5p
IHBhcmFtZXRlciBgYGp1bml0X2R1cmF0aW9uX3JlcG9ydGBgIHRvIG9wdGlvbmFsbHkgcmVwb3J0
IHRlc3QgY2FsbCBkdXJhdGlvbnMsIGV4Y2x1ZGluZyBzZXR1cCBhbmQgdGVhcmRvd24gdGltZXMu
CisKKyAgVGhlIEpVbml0IFhNTCBzcGVjaWZpY2F0aW9uIGFuZCB0aGUgZGVmYXVsdCBweXRlc3Qg
YmVoYXZpb3IgaXMgdG8gaW5jbHVkZSBzZXR1cCBhbmQgdGVhcmRvd24gdGltZXMgaW4gdGhlIHRl
c3QgZHVyYXRpb24KKyAgcmVwb3J0LiBZb3UgY2FuIGluY2x1ZGUganVzdCB0aGUgY2FsbCBkdXJh
dGlvbnMgaW5zdGVhZCAoZXhjbHVkaW5nIHNldHVwIGFuZCB0ZWFyZG93bikgYnkgYWRkaW5nIHRo
aXMgdG8geW91ciBgYHB5dGVzdC5pbmlgYCBmaWxlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBpbmkK
KworICAgICAgW3B5dGVzdF0KKyAgICAgIGp1bml0X2R1cmF0aW9uX3JlcG9ydCA9IGNhbGwKKwor
CistIGAjNDUzMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
NTMyPmBfOiBgYC1yYWBgIG5vdyB3aWxsIHNob3cgZXJyb3JzIGFuZCBmYWlsdXJlcyBsYXN0LCBp
bnN0ZWFkIG9mIGFzIHRoZSBmaXJzdCBpdGVtcyBpbiB0aGUgc3VtbWFyeS4KKworICBUaGlzIG1h
a2VzIGl0IGVhc2llciB0byBvYnRhaW4gYSBsaXN0IG9mIGVycm9ycyBhbmQgZmFpbHVyZXMgdG8g
cnVuIHRlc3RzIHNlbGVjdGl2ZWx5LgorCisKKy0gYCM0NTk5IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1OTk+YF86IGBgcHl0ZXN0LmltcG9ydG9yc2tpcGBg
IG5vdyBzdXBwb3J0cyBhIGBgcmVhc29uYGAgcGFyYW1ldGVyLCB3aGljaCB3aWxsIGJlIHNob3du
IHdoZW4gdGhlCisgIHJlcXVlc3RlZCBtb2R1bGUgY2Fubm90IGJlIGltcG9ydGVkLgorCisKKwor
QnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzM1MzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUzMj5gXzogYGAtcGBgIG5vdyBhY2NlcHRzIGl0cyBhcmd1
bWVudCB3aXRob3V0IGEgc3BhY2UgYmV0d2VlbiB0aGUgdmFsdWUsIGZvciBleGFtcGxlIGBgLXBt
eXBsdWdpbmBgLgorCisKKy0gYCM0MzI3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzQzMjc+YF86IGBgYXBwcm94YGAgYWdhaW4gd29ya3Mgd2l0aCBtb3JlIGdl
bmVyaWMgY29udGFpbmVycywgbW9yZSBwcmVjaXNlbHkgaW5zdGFuY2VzIG9mIGBgSXRlcmFibGVg
YCBhbmQgYGBTaXplZGBgIGluc3RlYWQgb2YgbW9yZSByZXN0cmljdGl2ZSBgYFNlcXVlbmNlYGAu
CisKKworLSBgIzQzOTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDM5Nz5gXzogRW5zdXJlIHRoYXQgbm9kZSBpZHMgYXJlIHByaW50YWJsZS4KKworCistIGAj
NDQzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDM1PmBf
OiBGaXhlZCBgYHJhaXNlcyguLi4sICdjb2RlKHN0cmluZyknKWBgIGZyYW1lIGZpbGVuYW1lLgor
CisKKy0gYCM0NDU4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQ0NTg+YF86IERpc3BsYXkgYWN0dWFsIHRlc3QgaWRzIGluIGBgLS1jb2xsZWN0LW9ubHlgYC4K
KworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
LSBgIzQ1NTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU1
Nz5gXzogTWFya2VycyBleGFtcGxlIGRvY3VtZW50YXRpb24gcGFnZSB1cGRhdGVkIHRvIHN1cHBv
cnQgbGF0ZXN0IHB5dGVzdCB2ZXJzaW9uLgorCisKKy0gYCM0NTU4IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1NTg+YF86IFVwZGF0ZSBjYWNoZSBkb2N1bWVu
dGF0aW9uIGV4YW1wbGUgdG8gY29ycmVjdGx5IHNob3cgY2FjaGUgaGl0IGFuZCBtaXNzLgorCisK
Ky0gYCM0NTgwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1
ODA+YF86IEltcHJvdmVkIGRldGFpbGVkIHN1bW1hcnkgcmVwb3J0IGRvY3VtZW50YXRpb24uCisK
KworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CistIGAjNDQ0NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80
NDQ3PmBfOiBDaGFuZ2VkIHRoZSBkZXByZWNhdGlvbiB0eXBlIG9mIGBgLS1yZXN1bHQtbG9nYGAg
dG8gYGBQeXRlc3REZXByZWNhdGlvbldhcm5pbmdgYC4KKworICBJdCB3YXMgZGVjaWRlZCB0byBy
ZW1vdmUgdGhpcyBmZWF0dXJlIGF0IHRoZSBuZXh0IG1ham9yIHJldmlzaW9uLgorCisKK3B5dGVz
dCA0LjAuMiAoMjAxOC0xMi0xMykKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZp
eGVzCistLS0tLS0tLS0KKworLSBgIzQyNjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDI2NT5gXzogVmFsaWRhdGUgYXJndW1lbnRzIGZyb20gdGhlIGBgUFlU
RVNUX0FERE9QVFNgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgdGhlIGBgYWRkb3B0c2BgIGlu
aSBvcHRpb24gc2VwYXJhdGVseS4KKworCistIGAjNDQzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDM1PmBfOiBGaXggYGByYWlzZXMoLi4uLCAnY29kZShz
dHJpbmcpJylgYCBmcmFtZSBmaWxlbmFtZS4KKworCistIGAjNDUwMCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTAwPmBfOiBXaGVuIGEgZml4dHVyZSB5aWVs
ZHMgYW5kIGEgbG9nIGNhbGwgaXMgbWFkZSBhZnRlciB0aGUgdGVzdCBydW5zLCBhbmQsIGlmIHRo
ZSB0ZXN0IGlzIGludGVycnVwdGVkLCBjYXB0dXJlIGF0dHJpYnV0ZXMgYXJlIGBgTm9uZWBgLgor
CisKKy0gYCM0NTM4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQ1Mzg+YF86IFJhaXNlIGBgVHlwZUVycm9yYGAgZm9yIGBgd2l0aCByYWlzZXMoLi4uLCBtYXRj
aD08bm9uLU5vbmUgZmFsc2V5IHZhbHVlPilgYC4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRp
b24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzE0OTUgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ5NT5gXzogRG9jdW1lbnQgY29tbW9uIGRvY3Rl
c3QgZml4dHVyZSBkaXJlY3RvcnkgdHJlZSBzdHJ1Y3R1cmUgcGl0ZmFsbHMKKworCitweXRlc3Qg
NC4wLjEgKDIwMTgtMTEtMjMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhl
cworLS0tLS0tLS0tCisKKy0gYCMzOTUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzM5NTI+YF86IERpc3BsYXkgd2FybmluZ3MgYmVmb3JlICJzaG9ydCB0ZXN0
IHN1bW1hcnkgaW5mbyIgYWdhaW4sIGJ1dCBzdGlsbCBsYXRlciB3YXJuaW5ncyBpbiB0aGUgZW5k
LgorCisKKy0gYCM0Mzg2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzQzODY+YF86IEhhbmRsZSB1bmluaXRpYWxpemVkIGV4Y2VwdGlvbmluZm8gaW4gcmVwci9z
dHIuCisKKworLSBgIzQzOTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvNDM5Mz5gXzogRG8gbm90IGNyZWF0ZSBgYC5naXRpZ25vcmVgYC9gYFJFQURNRS5tZGBg
IGZpbGVzIGluIGV4aXN0aW5nIGNhY2hlIGRpcmVjdG9yaWVzLgorCisKKy0gYCM0NDAwIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0MDA+YF86IFJlYXJyYW5n
ZSB3YXJuaW5nIGhhbmRsaW5nIGZvciB0aGUgeWllbGQgdGVzdCBlcnJvcnMgc28gdGhlIG9wdC1v
dXQgaW4gNC4wLnggY29ycmVjdGx5IHdvcmtzLgorCisKKy0gYCM0NDA1IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ0MDU+YF86IEZpeCBjb2xsZWN0aW9uIG9m
IHRlc3RwYXRocyB3aXRoIGBgLS1weWFyZ3NgYC4KKworCistIGAjNDQxMiA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NDEyPmBfOiBGaXggYXNzZXJ0aW9uIHJl
d3JpdGluZyBpbnZvbHZpbmcgYGBTdGFycmVkYGAgKyBzaWRlLWVmZmVjdHMuCisKKworLSBgIzQ0
MjUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDQyNT5gXzog
RW5zdXJlIHdlIHJlc29sdmUgdGhlIGFic29sdXRlIHBhdGggd2hlbiB0aGUgZ2l2ZW4gYGAtLWJh
c2V0ZW1wYGAgaXMgYSByZWxhdGl2ZSBwYXRoLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFu
Z2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQzMTUgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDMxNT5gXzogVXNlIGBgcGtnX3Jlc291cmNl
cy5wYXJzZV92ZXJzaW9uYGAgaW5zdGVhZCBvZiBgYExvb3NlVmVyc2lvbmBgIGluIG1pbnZlcnNp
b24gY2hlY2suCisKKworLSBgIzQ0NDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvNDQ0MD5gXzogQWRqdXN0IHRoZSBzdGFjayBsZXZlbCBvZiBzb21lIGludGVy
bmFsIHB5dGVzdCB3YXJuaW5ncy4KKworCitweXRlc3QgNC4wLjAgKDIwMTgtMTEtMTMpCis9PT09
PT09PT09PT09PT09PT09PT09PT09CisKK1JlbW92YWxzCistLS0tLS0tLQorCistIGAjMzczNyA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzM3PmBfOiAqKlJl
bW92ZWRJblB5dGVzdDRXYXJuaW5ncyBhcmUgbm93IGVycm9ycyBieSBkZWZhdWx0LioqCisKKyAg
Rm9sbG93aW5nIG91ciBwbGFuIHRvIHJlbW92ZSBkZXByZWNhdGVkIGZlYXR1cmVzIHdpdGggYXMg
bGl0dGxlIGRpc3J1cHRpb24gYXMKKyAgcG9zc2libGUsIGFsbCB3YXJuaW5ncyBvZiB0eXBlIGBg
UmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmdzYGAgbm93IGdlbmVyYXRlIGVycm9ycworICBpbnN0ZWFk
IG9mIHdhcm5pbmcgbWVzc2FnZXMuCisKKyAgKipUaGUgYWZmZWN0ZWQgZmVhdHVyZXMgd2lsbCBi
ZSBlZmZlY3RpdmVseSByZW1vdmVkIGluIHB5dGVzdCA0LjEqKiwgc28gcGxlYXNlIGNvbnN1bHQg
dGhlCisgIGBEZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWw+YF9fCisgIHNlY3Rpb24gaW4gdGhlIGRvY3Mg
Zm9yIGRpcmVjdGlvbnMgb24gaG93IHRvIHVwZGF0ZSBleGlzdGluZyBjb2RlLgorCisgIEluIHRo
ZSBweXRlc3QgYGA0LjAuWGBgIHNlcmllcywgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBl
cnJvcnMgYmFjayBpbnRvIHdhcm5pbmdzIGFzIGEgc3RvcAorICBnYXAgbWVhc3VyZSBieSBhZGRp
bmcgdGhpcyB0byB5b3VyIGBgcHl0ZXN0LmluaWBgIGZpbGU6CisKKyAgLi4gY29kZS1ibG9jazo6
IGluaQorCisgICAgICBbcHl0ZXN0XQorICAgICAgZmlsdGVyd2FybmluZ3MgPQorICAgICAgICAg
IGlnbm9yZTo6cHl0ZXN0LlJlbW92ZWRJblB5dGVzdDRXYXJuaW5nCisKKyAgQnV0IHRoaXMgd2ls
bCBzdG9wIHdvcmtpbmcgd2hlbiBweXRlc3QgYGA0LjFgYCBpcyByZWxlYXNlZC4KKworICAqKklm
IHlvdSBoYXZlIGNvbmNlcm5zKiogYWJvdXQgdGhlIHJlbW92YWwgb2YgYSBzcGVjaWZpYyBmZWF0
dXJlLCBwbGVhc2UgYWRkIGEKKyAgY29tbWVudCB0byBgIzQzNDggPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDM0OD5gX18uCisKKworLSBgIzQzNTggPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDM1OD5gXzogUmVtb3ZlIHRo
ZSBgYDo6KClgYCBub3RhdGlvbiB0byBkZW5vdGUgYSB0ZXN0IGNsYXNzIGluc3RhbmNlIGluIG5v
ZGUgaWRzLgorCisgIFByZXZpb3VzbHksIG5vZGUgaWRzIHRoYXQgY29udGFpbiB0ZXN0IGluc3Rh
bmNlcyB3b3VsZCB1c2UgYGA6OigpYGAgdG8gZGVub3RlIHRoZSBpbnN0YW5jZSBsaWtlIHRoaXM6
OgorCisgICAgICB0ZXN0X2Zvby5weTo6VGVzdDo6KCk6OnRlc3RfYmFyCisKKyAgVGhlIGV4dHJh
IGBgOjooKWBgIHdhcyBwdXp6bGluZyB0byBtb3N0IHVzZXJzIGFuZCBoYXMgYmVlbiByZW1vdmVk
LCBzbyB0aGF0IHRoZSB0ZXN0IGlkIGJlY29tZXMgbm93OjoKKworICAgICAgdGVzdF9mb28ucHk6
OlRlc3Q6OnRlc3RfYmFyCisKKyAgVGhpcyBjaGFuZ2UgY291bGQgbm90IGFjY29tcGFueSBhIGRl
cHJlY2F0aW9uIHBlcmlvZCBhcyBpcyB1c3VhbCB3aGVuIHVzZXItZmFjaW5nIGZ1bmN0aW9uYWxp
dHkgY2hhbmdlcyBiZWNhdXNlCisgIGl0IHdhcyBub3QgcmVhbGx5IHBvc3NpYmxlIHRvIGRldGVj
dCB3aGVuIHRoZSBmdW5jdGlvbmFsaXR5IHdhcyBiZWluZyB1c2VkIGV4cGxpY2l0bHkuCisKKyAg
VGhlIGV4dHJhIGBgOjooKWBgIG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGluIHNvbWUgcGxhY2Vz
IGludGVybmFsbHkgYWxyZWFkeSwKKyAgd2hpY2ggdGhlbiBsZWQgdG8gY29uZnVzaW9uIGluIHBs
YWNlcyB3aGVyZSBpdCB3YXMgZXhwZWN0ZWQsIGUuZy4gd2l0aAorICBgYC0tZGVzZWxlY3RgYCAo
YCM0MTI3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxMjc+
YF8pLgorCisgIFRlc3QgY2xhc3MgaW5zdGFuY2VzIGFyZSBhbHNvIG5vdCBsaXN0ZWQgd2l0aCBg
YC0tY29sbGVjdC1vbmx5YGAgYW55bW9yZS4KKworCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCist
IGAjNDI3MCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Mjcw
PmBfOiBUaGUgYGBjYWNoZV9kaXJgYCBvcHRpb24gdXNlcyBgYCRUT1hfRU5WX0RJUmBgIGFzIHBy
ZWZpeCAoaWYgc2V0IGluIHRoZSBlbnZpcm9ubWVudCkuCisKKyAgVGhpcyB1c2VzIGEgZGlmZmVy
ZW50IGNhY2hlIHBlciB0b3ggZW52aXJvbm1lbnQgYnkgZGVmYXVsdC4KKworCisKK0J1ZyBGaXhl
cworLS0tLS0tLS0tCisKKy0gYCMzNTU0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzM1NTQ+YF86IEZpeCBgYENhbGxJbmZvLl9fcmVwcl9fYGAgZm9yIHdoZW4g
dGhlIGNhbGwgaXMgbm90IGZpbmlzaGVkIHlldC4KKworCitweXRlc3QgMy4xMC4xICgyMDE4LTEx
LTExKQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0K
KworLSBgIzQyODcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NDI4Nz5gXzogRml4IG5lc3RlZCB1c2FnZSBvZiBkZWJ1Z2dpbmcgcGx1Z2luIChwZGIpLCBlLmcu
IHdpdGggcHl0ZXN0ZXIncyBgYHRlc3RkaXIucnVucHl0ZXN0YGAuCisKKworLSBgIzQzMDQgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDMwND5gXzogQmxvY2sg
dGhlIGBgc3RlcHdpc2VgYCBwbHVnaW4gaWYgYGBjYWNoZXByb3ZpZGVyYGAgaXMgYWxzbyBibG9j
a2VkLCBhcyBvbmUgZGVwZW5kcyBvbiB0aGUgb3RoZXIuCisKKworLSBgIzQzMDYgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDMwNj5gXzogUGFyc2UgYGBtaW52
ZXJzaW9uYGAgYXMgYW4gYWN0dWFsIHZlcnNpb24gYW5kIG5vdCBhcyBkb3Qtc2VwYXJhdGVkIHN0
cmluZ3MuCisKKworLSBgIzQzMTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNDMxMD5gXzogRml4IGR1cGxpY2F0ZSBjb2xsZWN0aW9uIGR1ZSB0byBtdWx0aXBs
ZSBhcmdzIG1hdGNoaW5nIHRoZSBzYW1lIHBhY2thZ2VzLgorCisKKy0gYCM0MzIxIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQzMjE+YF86IEZpeCBgYGl0ZW0u
bm9kZWlkYGAgd2l0aCByZXNvbHZlZCBzeW1saW5rcy4KKworCistIGAjNDMyNSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MzI1PmBfOiBGaXggY29sbGVjdGlv
biBvZiBkaXJlY3Qgc3ltbGlua2VkIGZpbGVzLCB3aGVyZSB0aGUgdGFyZ2V0IGRvZXMgbm90IG1h
dGNoIGBgcHl0aG9uX2ZpbGVzYGAuCisKKworLSBgIzQzMjkgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDMyOT5gXzogRml4IFR5cGVFcnJvciBpbiByZXBvcnRf
Y29sbGVjdCB3aXRoIF9jb2xsZWN0X3JlcG9ydF9sYXN0X3dyaXRlLgorCisKKworVHJpdmlhbC9J
bnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQzMDUgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDMwNT5gXzogUmVwbGFj
ZSBieXRlL3VuaWNvZGUgaGVscGVycyBpbiB0ZXN0X2NhcHR1cmUgd2l0aCBweXRob24gbGV2ZWwg
c3ludGF4LgorCisKK3B5dGVzdCAzLjEwLjAgKDIwMTgtMTEtMDMpCis9PT09PT09PT09PT09PT09
PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzI2MTkgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYxOT5gXzogUmVzdW1lIGNhcHR1cmlu
ZyBvdXRwdXQgYWZ0ZXIgYGBjb250aW51ZWBgIHdpdGggYGBfX2ltcG9ydF9fKCJwZGIiKS5zZXRf
dHJhY2UoKWBgLgorCisgIFRoaXMgYWxzbyBhZGRzIGEgbmV3IGBgcHl0ZXN0X2xlYXZlX3BkYmBg
IGhvb2ssIGFuZCBwYXNzZXMgaW4gYGBwZGJgYCB0byB0aGUKKyAgZXhpc3RpbmcgYGBweXRlc3Rf
ZW50ZXJfcGRiYGAgaG9vay4KKworCistIGAjNDE0NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTQ3PmBfOiBBZGQgYGAtLXN3YGAsIGBgLS1zdGVwd2lzZWBg
IGFzIGFuIGFsdGVybmF0aXZlIHRvIGBgLS1sZiAteGBgIGZvciBzdG9wcGluZyBhdCB0aGUgZmly
c3QgZmFpbHVyZSwgYnV0IHN0YXJ0aW5nIHRoZSBuZXh0IHRlc3QgaW52b2NhdGlvbiBmcm9tIHRo
YXQgdGVzdC4gIFNlZSBgdGhlIGRvY3VtZW50YXRpb24gPGh0dHBzOi8vZG9jcy5weXRlc3Qub3Jn
L2VuL3N0YWJsZS9jYWNoZS5odG1sI3N0ZXB3aXNlPmBfXyBmb3IgbW9yZSBpbmZvLgorCisKKy0g
YCM0MTg4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxODg+
YF86IE1ha2UgYGAtLWNvbG9yYGAgZW1pdCBjb2xvcmZ1bCBkb3RzIHdoZW4gbm90IHJ1bm5pbmcg
aW4gdmVyYm9zZSBtb2RlLiBFYXJsaWVyLCBpdCB3b3VsZCBvbmx5IGNvbG9yaXplIHRoZSB0ZXN0
LWJ5LXRlc3Qgb3V0cHV0IGlmIGBgLS12ZXJib3NlYGAgd2FzIGFsc28gcGFzc2VkLgorCisKKy0g
YCM0MjI1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQyMjU+
YF86IEltcHJvdmUgcGVyZm9ybWFuY2Ugd2l0aCBjb2xsZWN0aW9uIHJlcG9ydGluZyBpbiBub24t
cXVpZXQgbW9kZSB3aXRoIHRlcm1pbmFscy4KKworICBUaGUgImNvbGxlY3Rpbmcg4oCmIiBtZXNz
YWdlIGlzIG9ubHkgcHJpbnRlZC91cGRhdGVkIGV2ZXJ5IDAuNXMuCisKKworCitCdWcgRml4ZXMK
Ky0tLS0tLS0tLQorCistIGAjMjcwMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNzAxPmBfOiBGaXggZmFsc2UgYGBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZzog
dXNhZ2Ugb2YgU2Vzc2lvbi4uLiBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHB5dGVzdGBgIHdh
cm5pbmdzLgorCisKKy0gYCM0MDQ2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzQwNDY+YF86IEZpeCBwcm9ibGVtcyB3aXRoIHJ1bm5pbmcgdGVzdHMgaW4gcGFj
a2FnZSBgYF9faW5pdF9fLnB5YGAgZmlsZXMuCisKKworLSBgIzQyNjAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDI2MD5gXzogU3dhbGxvdyB3YXJuaW5ncyBk
dXJpbmcgYW5vbnltb3VzIGNvbXBpbGF0aW9uIG9mIHNvdXJjZS4KKworCistIGAjNDI2MiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MjYyPmBfOiBGaXggYWNj
ZXNzIGRlbmllZCBlcnJvciB3aGVuIGRlbGV0aW5nIHN0YWxlIGRpcmVjdG9yaWVzIGNyZWF0ZWQg
YnkgYGB0bXBkaXJgYCAvIGBgdG1wX3BhdGhgYC4KKworCistIGAjNjExIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYxMT5gXzogTmFtaW5nIGEgZml4dHVyZSBg
YHJlcXVlc3RgYCB3aWxsIG5vdyByYWlzZSBhIHdhcm5pbmc6IHRoZSBgYHJlcXVlc3RgYCBmaXh0
dXJlIGlzIGludGVybmFsIGFuZAorICBzaG91bGQgbm90IGJlIG92ZXJ3cml0dGVuIGFzIGl0IHdp
bGwgbGVhZCB0byBpbnRlcm5hbCBlcnJvcnMuCisKKy0gYCM0MjY2IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQyNjY+YF86IEhhbmRsZSAoaWdub3JlKSBleGNl
cHRpb25zIHJhaXNlZCBkdXJpbmcgY29sbGVjdGlvbiwgZS5nLiB3aXRoIERqYW5nbydzIExhenlT
ZXR0aW5ncyBwcm94eSBjbGFzcy4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQyNTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvNDI1NT5gXzogQWRkZWQgbWlzc2luZyBkb2N1bWVudGF0aW9uIGFi
b3V0IHRoZSBmYWN0IHRoYXQgbW9kdWxlIG5hbWVzIHBhc3NlZCB0byBmaWx0ZXIgd2FybmluZ3Mg
YXJlIG5vdCByZWdleC1lc2NhcGVkLgorCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzQyNzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDI3Mj5gXzogRGlzcGxheSBjYWNoZWRpciBhbHNvIGlu
IG5vbi12ZXJib3NlIG1vZGUgaWYgbm9uLWRlZmF1bHQuCisKKworLSBgIzQyNzcgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDI3Nz5gXzogcGRiOiBpbXByb3Zl
IG1lc3NhZ2UgYWJvdXQgb3V0cHV0IGNhcHR1cmluZyB3aXRoIGBgc2V0X3RyYWNlYGAuCisKKyAg
RG8gbm90IGRpc3BsYXkgIklPLWNhcHR1cmluZyB0dXJuZWQgb2ZmL29uIiB3aGVuIGBgLXNgYCBp
cyB1c2VkIHRvIGF2b2lkCisgIGNvbmZ1c2lvbi4KKworCistIGAjNDI3OSA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80Mjc5PmBfOiBJbXByb3ZlIG1lc3NhZ2Ug
YW5kIHN0YWNrIGxldmVsIG9mIHdhcm5pbmdzIGlzc3VlZCBieSBgYG1vbmtleXBhdGNoLnNldGVu
dmBgIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgYSBg
YHN0cmBgLgorCisKK3B5dGVzdCAzLjkuMyAoMjAxOC0xMC0yNykKKz09PT09PT09PT09PT09PT09
PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzQxNzQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDE3ND5gXzogRml4ICJWYWx1ZUVycm9y
OiBQbHVnaW4gYWxyZWFkeSByZWdpc3RlcmVkIiB3aXRoIGNvbmZ0ZXN0IHBsdWdpbnMgdmlhIHN5
bWxpbmsuCisKKworLSBgIzQxODEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvNDE4MT5gXzogSGFuZGxlIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gY3JlYXRpb24g
YW5kIGRlbGV0aW9uIG9mIHRlbXBvcmFyeSBmb2xkZXJzLgorCisKKy0gYCM0MjIxIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQyMjE+YF86IEZpeCBidWcgd2hl
cmUgdGhlIHdhcm5pbmcgc3VtbWFyeSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IHNlc3Npb24gd2Fz
IG5vdCBzaG93aW5nIHRoZSB0ZXN0IHdoZXJlIHRoZSB3YXJuaW5nIHdhcyBvcmlnaW5hdGVkLgor
CisKKy0gYCM0MjQzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQyNDM+YF86IEZpeCByZWdyZXNzaW9uIHdoZW4gYGBzdGFja2xldmVsYGAgZm9yIHdhcm5pbmdz
IHdhcyBwYXNzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBvbiBweXRob24yLgorCisKKworSW1w
cm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAjMzg1MSA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODUxPmBfOiBBZGQg
cmVmZXJlbmNlIHRvIGBgZW1wdHlfcGFyYW1ldGVyX3NldF9tYXJrYGAgaW5pIG9wdGlvbiBpbiBk
b2N1bWVudGF0aW9uIG9mIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAKKworCisKK1RyaXZp
YWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCM0MDI4
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwMjg+YF86IFJl
dmVydCBwYXRjaGluZyBvZiBgYHN5cy5icmVha3BvaW50aG9va2BgIHNpbmNlIGl0IGFwcGVhcnMg
dG8gZG8gbm90aGluZy4KKworCistIGAjNDIzMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy80MjMzPmBfOiBBcHBseSBhbiBpbXBvcnQgc29ydGVyIChgYHJlb3Jk
ZXItcHl0aG9uLWltcG9ydHNgYCkgdG8gdGhlIGNvZGViYXNlLgorCisKKy0gYCM0MjQ4IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQyNDg+YF86IFJlbW92ZSB1
c2Ugb2YgdW5uZWNlc3NhcnkgY29tcGF0IHNoaW0sIHNpeC5iaW5hcnlfdHlwZQorCisKK3B5dGVz
dCAzLjkuMiAoMjAxOC0xMC0yMikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZp
eGVzCistLS0tLS0tLS0KKworLSBgIzI5MDkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjkwOT5gXzogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gYSByZWN1
cnNpdmUgZGVwZW5kZW5jeSBiZXR3ZWVuIGZpeHR1cmVzIGlzIGRldGVjdGVkLgorCisKKy0gYCMz
MzQwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzNDA+YF86
IEZpeCBsb2dnaW5nIG1lc3NhZ2VzIG5vdCBzaG93biBpbiBob29rcyBgYHB5dGVzdF9zZXNzaW9u
c3RhcnQoKWBgIGFuZCBgYHB5dGVzdF9zZXNzaW9uZmluaXNoKClgYC4KKworCistIGAjMzUzMyA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTMzPmBfOiBGaXgg
dW5lc2NhcGVkIFhNTCByYXcgb2JqZWN0cyBpbiBKVW5pdCByZXBvcnQgZm9yIHNraXBwZWQgdGVz
dHMKKworCistIGAjMzY5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNjkxPmBfOiBQeXRob24gMjogc2FmZWx5IGZvcm1hdCB3YXJuaW5nIG1lc3NhZ2UgYWJv
dXQgcGFzc2luZyB1bmljb2RlIHN0cmluZ3MgdG8gYGB3YXJuaW5ncy53YXJuYGAsIHdoaWNoIG1h
eSBjYXVzZQorICBzdXJwcmlzaW5nIGBgTWVtb3J5RXJyb3JgYCBleGNlcHRpb24gd2hlbiBtb25r
ZXkgcGF0Y2hpbmcgYGB3YXJuaW5ncy53YXJuYGAgaXRzZWxmLgorCisKKy0gYCM0MDI2IDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwMjY+YF86IEltcHJvdmUg
ZXJyb3IgbWVzc2FnZSB3aGVuIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUgYSBmdW5j
dGlvbidzIHNpZ25hdHVyZS4KKworCistIGAjNDE3NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTc3PmBfOiBQaW4gYGBzZXR1cHRvb2xzPj00MC4wYGAgdG8g
c3VwcG9ydCBgYHB5X21vZHVsZXNgYCBpbiBgYHNldHVwLmNmZ2BgCisKKworLSBgIzQxNzkgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDE3OT5gXzogUmVzdG9y
ZSB0aGUgdG1wZGlyIGJlaGF2aW91ciBvZiBzeW1saW5raW5nIHRoZSBjdXJyZW50IHRlc3QgcnVu
LgorCisKKy0gYCM0MTkyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzQxOTI+YF86IEZpeCBmaWxlbmFtZSByZXBvcnRlZCBieSBgYHdhcm5pbmdzLndhcm5gYCB3
aGVuIHVzaW5nIGBgcmVjd2FybmBgIHVuZGVyIHB5dGhvbjIuCisKKworcHl0ZXN0IDMuOS4xICgy
MDE4LTEwLTE2KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitGZWF0dXJlcworLS0tLS0t
LS0KKworLSBgIzQxNTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDE1OT5gXzogRm9yIHRlc3Qtc3VpdGVzIGNvbnRhaW5pbmcgdGVzdCBjbGFzc2VzLCB0aGUg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIHN1YmNsYXNzZWQKKyAgbW9kdWxlIGlzIG5vdyBvdXRwdXQg
b25seSBpZiBhIGhpZ2hlciB2ZXJib3NpdHkgbGV2ZWwgaXMgc3BlY2lmaWVkIChhdCBsZWFzdAor
ICAiLXZ2IikuCisKKworcHl0ZXN0IDMuOS4wICgyMDE4LTEwLTE1IC0gbm90IHB1Ymxpc2hlZCBk
dWUgdG8gYSByZWxlYXNlIGF1dG9tYXRpb24gYnVnKQorPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEZXBy
ZWNhdGlvbnMKKy0tLS0tLS0tLS0tLQorCistIGAjMzYxNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjE2PmBfOiBUaGUgZm9sbG93aW5nIGFjY2Vzc2VzIGhh
dmUgYmVlbiBkb2N1bWVudGVkIGFzIGRlcHJlY2F0ZWQgZm9yIHllYXJzLCBidXQgYXJlIG5vdyBh
Y3R1YWxseSBlbWl0dGluZyBkZXByZWNhdGlvbiB3YXJuaW5ncy4KKworICAqIEFjY2VzcyBvZiBg
YE1vZHVsZWBgLCBgYEZ1bmN0aW9uYGAsIGBgQ2xhc3NgYCwgYGBJbnN0YW5jZWBgLCBgYEZpbGVg
YCBhbmQgYGBJdGVtYGAgdGhyb3VnaCBgYE5vZGVgYCBpbnN0YW5jZXMuIE5vdworICAgIHVzZXJz
IHdpbGwgdGhpcyB3YXJuaW5nOjoKKworICAgICAgICAgIHVzYWdlIG9mIEZ1bmN0aW9uLk1vZHVs
ZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHB5dGVzdC5Nb2R1bGUgaW5zdGVhZAorCisgICAg
VXNlcnMgc2hvdWxkIGp1c3QgYGBpbXBvcnQgcHl0ZXN0YGAgYW5kIGFjY2VzcyB0aG9zZSBvYmpl
Y3RzIHVzaW5nIHRoZSBgYHB5dGVzdGBgIG1vZHVsZS4KKworICAqIGBgcmVxdWVzdC5jYWNoZWRf
c2V0dXBgYCwgdGhpcyB3YXMgdGhlIHByZWN1cnNvciBvZiB0aGUgc2V0dXAvdGVhcmRvd24gbWVj
aGFuaXNtIGF2YWlsYWJsZSB0byBmaXh0dXJlcy4gWW91IGNhbgorICAgIGNvbnN1bHQgYGZ1bmNh
cmcgY29tcGFyaXNvbiBzZWN0aW9uIGluIHRoZSBkb2NzIDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvZnVuY2FyZ19jb21wYXJlLmh0bWw+YF8uCisKKyAgKiBVc2luZyBvYmplY3Rz
IG5hbWVkIGBgIkNsYXNzImBgIGFzIGEgd2F5IHRvIGN1c3RvbWl6ZSB0aGUgdHlwZSBvZiBub2Rl
cyB0aGF0IGFyZSBjb2xsZWN0ZWQgaW4gYGBDb2xsZWN0b3JgYAorICAgIHN1YmNsYXNzZXMgaGFz
IGJlZW4gZGVwcmVjYXRlZC4gVXNlcnMgaW5zdGVhZCBzaG91bGQgdXNlIGBgcHl0ZXN0X2NvbGxl
Y3RfbWFrZV9pdGVtYGAgdG8gY3VzdG9taXplIG5vZGUgdHlwZXMgZHVyaW5nCisgICAgY29sbGVj
dGlvbi4KKworICAgIFRoaXMgaXNzdWUgc2hvdWxkIGFmZmVjdCBvbmx5IGFkdmFuY2VkIHBsdWdp
bnMgd2hvIGNyZWF0ZSBuZXcgY29sbGVjdGlvbiB0eXBlcywgc28gaWYgeW91IHNlZSB0aGlzIHdh
cm5pbmcKKyAgICBtZXNzYWdlIHBsZWFzZSBjb250YWN0IHRoZSBhdXRob3JzIHNvIHRoZXkgY2Fu
IGNoYW5nZSB0aGUgY29kZS4KKworICAqIFRoZSB3YXJuaW5nIHRoYXQgcHJvZHVjZXMgdGhlIG1l
c3NhZ2UgYmVsb3cgaGFzIGNoYW5nZWQgdG8gYGBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZ2BgOjoK
KworICAgICAgICAgIGdldGZ1bmNhcmd2YWx1ZSBpcyBkZXByZWNhdGVkLCB1c2UgZ2V0Zml4dHVy
ZXZhbHVlCisKKworLSBgIzM5ODggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzk4OD5gXzogQWRkIGEgRGVwcmVjYXRpb24gd2FybmluZyBmb3IgcHl0ZXN0LmVu
c3VyZXRlbXAgYXMgaXQgd2FzIGRlcHJlY2F0ZWQgc2luY2UgYSB3aGlsZS4KKworCisKK0ZlYXR1
cmVzCistLS0tLS0tLQorCistIGAjMjI5MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMjkzPmBfOiBJbXByb3ZlIHVzYWdlIGVycm9ycyBtZXNzYWdlcyBieSBo
aWRpbmcgaW50ZXJuYWwgZGV0YWlscyB3aGljaCBjYW4gYmUgZGlzdHJhY3RpbmcgYW5kIG5vaXN5
LgorCisgIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHNvbWUgZXJyb3IgY29uZGl0aW9u
cyB0aGF0IHByZXZpb3VzbHkgcmFpc2VkIGdlbmVyaWMgZXJyb3JzIChzdWNoIGFzCisgIGBgVmFs
dWVFcnJvcmBgIGZvciB1bnJlZ2lzdGVyZWQgbWFya3MpIGFyZSBub3cgcmFpc2luZyBgYEZhaWxl
ZGBgIGV4Y2VwdGlvbnMuCisKKworLSBgIzMzMzIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzMzMj5gXzogSW1wcm92ZSB0aGUgZXJyb3IgZGlzcGxheWVkIHdo
ZW4gYSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZSBjb3VsZCBub3QgYmUgaW1wb3J0ZWQuCisKKyAgSW4g
b3JkZXIgdG8gaW1wbGVtZW50IHRoaXMsIGEgbmV3IGBgY2hhaW5gYCBwYXJhbWV0ZXIgd2FzIGFk
ZGVkIHRvIGBgRXhjZXB0aW9uSW5mby5nZXRyZXByYGAKKyAgdG8gc2hvdyBvciBoaWRlIGNoYWlu
ZWQgdHJhY2ViYWNrcyBpbiBQeXRob24gMyAoZGVmYXVsdHMgdG8gYGBUcnVlYGApLgorCisKKy0g
YCMzODQ5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4NDk+
YF86IEFkZCBgYGVtcHR5X3BhcmFtZXRlcl9zZXRfbWFyaz1mYWlsX2F0X2NvbGxlY3RgYCBpbmkg
b3B0aW9uIGZvciByYWlzaW5nIGFuIGV4Y2VwdGlvbiB3aGVuIHBhcmFtZXRyaXplIGNvbGxlY3Rz
IGFuIGVtcHR5IHNldC4KKworCistIGAjMzk2NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zOTY0PmBfOiBMb2cgbWVzc2FnZXMgZ2VuZXJhdGVkIGluIHRoZSBj
b2xsZWN0aW9uIHBoYXNlIGFyZSBzaG93biB3aGVuCisgIGxpdmUtbG9nZ2luZyBpcyBlbmFibGVk
IGFuZC9vciB3aGVuIHRoZXkgYXJlIGxvZ2dlZCB0byBhIGZpbGUuCisKKworLSBgIzM5ODUgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk4NT5gXzogSW50cm9k
dWNlIGBgdG1wX3BhdGhgYCBhcyBhIGZpeHR1cmUgcHJvdmlkaW5nIGEgUGF0aCBvYmplY3QuIEFs
c28gaW50cm9kdWNlIGBgdG1wX3BhdGhfZmFjdG9yeWBgIGFzCisgIGEgc2Vzc2lvbi1zY29wZWQg
Zml4dHVyZSBmb3IgY3JlYXRpbmcgYXJiaXRyYXJ5IHRlbXBvcmFyeSBkaXJlY3RvcmllcyBmcm9t
IGFueSBvdGhlciBmaXh0dXJlIG9yIHRlc3QuCisKKworLSBgIzQwMTMgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDAxMz5gXzogRGVwcmVjYXRpb24gd2Fybmlu
Z3MgYXJlIG5vdyBzaG93biBldmVuIGlmIHlvdSBjdXN0b21pemUgdGhlIHdhcm5pbmdzIGZpbHRl
cnMgeW91cnNlbGYuIEluIHRoZSBwcmV2aW91cyB2ZXJzaW9uCisgIGFueSBjdXN0b21pemF0aW9u
IHdvdWxkIG92ZXJyaWRlIHB5dGVzdCdzIGZpbHRlcnMgYW5kIGRlcHJlY2F0aW9uIHdhcm5pbmdz
IHdvdWxkIGZhbGwgYmFjayB0byBiZWluZyBoaWRkZW4gYnkgZGVmYXVsdC4KKworCistIGAjNDA3
MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDczPmBfOiBB
bGxvdyBzcGVjaWZpY2F0aW9uIG9mIHRpbWVvdXQgZm9yIGBgVGVzdGRpci5ydW5weXRlc3Rfc3Vi
cHJvY2VzcygpYGAgYW5kIGBgVGVzdGRpci5ydW4oKWBgLgorCisKKy0gYCM0MDk4IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwOTg+YF86IEFkZCByZXR1cm5j
b2RlIGFyZ3VtZW50IHRvIHB5dGVzdC5leGl0KCkgdG8gZXhpdCBweXRlc3Qgd2l0aCBhIHNwZWNp
ZmljIHJldHVybiBjb2RlLgorCisKKy0gYCM0MTAyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzQxMDI+YF86IFJlaW1wbGVtZW50IGBgcHl0ZXN0LmRlcHJlY2F0
ZWRfY2FsbGBgIHVzaW5nIGBgcHl0ZXN0Lndhcm5zYGAgc28gaXQgc3VwcG9ydHMgdGhlIGBgbWF0
Y2g9Jy4uLidgYCBrZXl3b3JkIGFyZ3VtZW50LgorCisgIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVj
dCB0aGF0IGBgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbGBgIG5vdyByYWlzZXMgYGBweXRlc3QuZmFp
bC5FeGNlcHRpb25gYCBpbnN0ZWFkCisgIG9mIGBgQXNzZXJ0aW9uRXJyb3JgYC4KKworCistIGAj
NDE0OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTQ5PmBf
OiBSZXF1aXJlIHNldHVwdG9vbHM+PTMwLjMgYW5kIG1vdmUgbW9zdCBvZiB0aGUgbWV0YWRhdGEg
dG8gYGBzZXR1cC5jZmdgYC4KKworCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gYCMyNTM1
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1MzU+YF86IElt
cHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHRlc3QgZnVuY3Rpb25zIG9mIGBgdW5pdHRlc3QuVGVz
dENhc2VgYCBzdWJjbGFzc2VzIHVzZSBhIHBhcmFtZXRyaXplZCBmaXh0dXJlLgorCisKKy0gYCMz
MDU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNTc+YF86
IGBgcmVxdWVzdC5maXh0dXJlbmFtZXNgYCBub3cgY29ycmVjdGx5IHJldHVybnMgdGhlIG5hbWUg
b2YgZml4dHVyZXMgY3JlYXRlZCBieSBgYHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKClgYC4KKwor
CistIGAjMzk0NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
OTQ2PmBfOiBXYXJuaW5nIGZpbHRlcnMgcGFzc2VkIGFzIGNvbW1hbmQgbGluZSBvcHRpb25zIHVz
aW5nIGBgLVdgYCBub3cgdGFrZSBwcmVjZWRlbmNlIG92ZXIgZmlsdGVycyBkZWZpbmVkIGluIGBg
aW5pYGAKKyAgY29uZmlndXJhdGlvbiBmaWxlcy4KKworCistIGAjNDA2NiA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDY2PmBfOiBGaXggc291cmNlIHJlaW5k
ZW50aW5nIGJ5IHVzaW5nIGBgdGV4dHdyYXAuZGVkZW50YGAgZGlyZWN0bHkuCisKKworLSBgIzQx
MDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDEwMj5gXzog
YGBweXRlc3Qud2FybmBgIHdpbGwgY2FwdHVyZSBwcmV2aW91c2x5LXdhcm5lZCB3YXJuaW5ncyBp
biBQeXRob24gMi4gUHJldmlvdXNseSB0aGV5IHdlcmUgbmV2ZXIgcmFpc2VkLgorCisKKy0gYCM0
MTA4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxMDg+YF86
IFJlc29sdmUgc3ltYm9saWMgbGlua3MgZm9yIGFyZ3MuCisKKyAgVGhpcyBmaXhlcyBydW5uaW5n
IGBgcHl0ZXN0IHRlc3RzL3Rlc3RfZm9vLnB5Ojp0ZXN0X2JhcmBgLCB3aGVyZSBgYHRlc3RzYGAK
KyAgaXMgYSBzeW1saW5rIHRvIGBgcHJvamVjdC9hcHAvdGVzdHNgYDoKKyAgcHJldmlvdXNseSBg
YHByb2plY3QvYXBwL2NvbmZ0ZXN0LnB5YGAgd291bGQgYmUgaWdub3JlZCBmb3IgZml4dHVyZXMg
dGhlbi4KKworCistIGAjNDEzMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80MTMyPmBfOiBGaXggZHVwbGljYXRlIHByaW50aW5nIG9mIGludGVybmFsIGVycm9y
cyB3aGVuIHVzaW5nIGBgLS1wZGJgYC4KKworCistIGAjNDEzNSA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MTM1PmBfOiBwYXRobGliIGJhc2VkIHRtcGRpciBj
bGVhbnVwIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBzeW1saW5rcyBpbiB0aGUgZm9sZGVyLgorCisK
Ky0gYCM0MTUyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQx
NTI+YF86IERpc3BsYXkgdGhlIGZpbGVuYW1lIHdoZW4gZW5jb3VudGVyaW5nIGBgU3ludGF4V2Fy
bmluZ2BgLgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCistIGAjMzcxMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNzEzPmBfOiBVcGRhdGUgdXNlZml4dHVyZXMgZG9jdW1lbnRhdGlvbiB0byBjbGFyaWZ5
IHRoYXQgaXQgY2FuJ3QgYmUgdXNlZCB3aXRoIGZpeHR1cmUgZnVuY3Rpb25zLgorCisKKy0gYCM0
MDU4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwNTg+YF86
IFVwZGF0ZSBmaXh0dXJlIGRvY3VtZW50YXRpb24gdG8gc3BlY2lmeSB0aGF0IGEgZml4dHVyZSBj
YW4gYmUgaW52b2tlZCB0d2ljZSBpbiB0aGUgc2NvcGUgaXQncyBkZWZpbmVkIGZvci4KKworCist
IGAjNDA2NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDY0
PmBfOiBBY2NvcmRpbmcgdG8gdW5pdHRlc3QucnN0LCBzZXRVcE1vZHVsZSBhbmQgdGVhckRvd25N
b2R1bGUgd2VyZSBub3QgaW1wbGVtZW50ZWQsIGJ1dCBpdCB0dXJucyBvdXQgdGhleSBhcmUuIFNv
IHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHVuaXR0ZXN0LgorCisKKy0gYCM0MTUxIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQxNTE+YF86IEFkZCB0
ZW1waXIgdGVzdGluZyBleGFtcGxlIHRvIENPTlRSSUJVVElORy5yc3QgZ3VpZGUKKworCisKK1Ry
aXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMy
MjkzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyOTM+YF86
IFRoZSBpbnRlcm5hbCBgYE1hcmtlckVycm9yYGAgZXhjZXB0aW9uIGhhcyBiZWVuIHJlbW92ZWQu
CisKKworLSBgIzM5ODggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzk4OD5gXzogUG9ydCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdG1wZGlyIHRvIHBhdGhsaWIu
CisKKworLSBgIzQwNjMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvNDA2Mz5gXzogRXhjbHVkZSAwLjAwIHNlY29uZCBlbnRyaWVzIGZyb20gYGAtLWR1cmF0aW9u
YGAgb3V0cHV0IHVubGVzcyBgYC12dmBgIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZC1saW5lLgor
CisKKy0gYCM0MDkzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzQwOTM+YF86IEZpeGVkIGZvcm1hdHRpbmcgb2Ygc3RyaW5nIGxpdGVyYWxzIGluIGludGVybmFs
IHRlc3RzLgorCisKK3B5dGVzdCAzLjguMiAoMjAxOC0xMC0wMikKKz09PT09PT09PT09PT09PT09
PT09PT09PT0KKworRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCistIGAjNDAzNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy80MDM2PmBfOiBUaGUgYGBpdGVtYGAgcGFyYW1ldGVyIG9mIGBgcHl0ZXN0X3dhcm5p
bmdfY2FwdHVyZWRgYCBob29rIGlzIG5vdyBkb2N1bWVudGVkIGFzIGRlcHJlY2F0ZWQuIFdlIHJl
YWxpemVkIG9ubHkgYWZ0ZXIKKyAgdGhlIGBgMy44YGAgcmVsZWFzZSB0aGF0IHRoaXMgcGFyYW1l
dGVyIGlzIGluY29tcGF0aWJsZSB3aXRoIGBgcHl0ZXN0LXhkaXN0YGAuCisKKyAgT3VyIHBvbGlj
eSBpcyB0byBub3QgZGVwcmVjYXRlIGZlYXR1cmVzIGR1cmluZyBidWctZml4IHJlbGVhc2VzLCBi
dXQgaW4gdGhpcyBjYXNlIHdlIGJlbGlldmUgaXQgbWFrZXMgc2Vuc2UgYXMgd2UgYXJlCisgIG9u
bHkgZG9jdW1lbnRpbmcgaXQgYXMgZGVwcmVjYXRlZCwgd2l0aG91dCBpc3N1aW5nIHdhcm5pbmdz
IHdoaWNoIG1pZ2h0IHBvdGVudGlhbGx5IGJyZWFrIHRlc3Qgc3VpdGVzLiBUaGlzIHdpbGwgZ2V0
CisgIHRoZSB3b3JkIG91dCB0aGF0IGhvb2sgaW1wbGVtZW50ZXJzIHNob3VsZCBub3QgdXNlIHRo
aXMgcGFyYW1ldGVyIGF0IGFsbC4KKworICBJbiBhIGZ1dHVyZSByZWxlYXNlIGBgaXRlbWBgIHdp
bGwgYWx3YXlzIGJlIGBgTm9uZWBgIGFuZCB3aWxsIGVtaXQgYSBwcm9wZXIgd2FybmluZyB3aGVu
IGEgaG9vayBpbXBsZW1lbnRhdGlvbgorICBtYWtlcyB1c2Ugb2YgaXQuCisKKworCitCdWcgRml4
ZXMKKy0tLS0tLS0tLQorCistIGAjMzUzOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zNTM5PmBfOiBGaXggcmVsb2FkIG9uIGFzc2VydGlvbiByZXdyaXR0ZW4g
bW9kdWxlcy4KKworCistIGAjNDAzNCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy80MDM0PmBfOiBUaGUgYGAudXNlcl9wcm9wZXJ0aWVzYGAgYXR0cmlidXRlIG9m
IGBgVGVzdFJlcG9ydGBgIG9iamVjdHMgaXMgYSBsaXN0CisgIG9mIChuYW1lLCB2YWx1ZSkgdHVw
bGVzLCBidXQgY291bGQgc29tZXRpbWVzIGJlIGluc3RhbnRpYXRlZCBhcyBhIHR1cGxlCisgIG9m
IHR1cGxlcy4gIEl0IGlzIG5vdyBhbHdheXMgYSBsaXN0LgorCisKKy0gYCM0MDM5IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQwMzk+YF86IE5vIGxvbmdlciBp
c3N1ZSB3YXJuaW5ncyBhYm91dCB1c2luZyBgYHB5dGVzdF9wbHVnaW5zYGAgaW4gbm9uLXRvcC1s
ZXZlbCBkaXJlY3RvcmllcyB3aGVuIHVzaW5nIGBgLS1weWFyZ3NgYDogdGhlCisgIGN1cnJlbnQg
YGAtLXB5YXJnc2BgIG1lY2hhbmlzbSBpcyBub3QgcmVsaWFibGUgYW5kIG1pZ2h0IGdpdmUgZmFs
c2UgbmVnYXRpdmVzLgorCisKKy0gYCM0MDQwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzQwNDA+YF86IEV4Y2x1ZGUgZW1wdHkgcmVwb3J0cyBmb3IgcGFzc2Vk
IHRlc3RzIHdoZW4gYGAtclBgYCBvcHRpb24gaXMgdXNlZC4KKworCistIGAjNDA1MSA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDUxPmBfOiBJbXByb3ZlIGVy
cm9yIG1lc3NhZ2Ugd2hlbiBhbiBpbnZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGlzIHBhc3NlZCB0
byB0aGUgYGAtbWBgIG9wdGlvbi4KKworCistIGAjNDA1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80MDU2PmBfOiBgYE1vbmtleVBhdGNoLnNldGVudmBgIGFu
ZCBgYE1vbmtleVBhdGNoLmRlbGVudmBgIGlzc3VlIGEgd2FybmluZyBpZiB0aGUgZW52aXJvbm1l
bnQgdmFyaWFibGUgbmFtZSBpcyBub3QgYGBzdHJgYCBvbiBQeXRob24gMi4KKworICBJbiBQeXRo
b24gMiwgYWRkaW5nIGBgdW5pY29kZWBgIGtleXMgdG8gYGBvcy5lbnZpcm9uYGAgY2F1c2VzIHBy
b2JsZW1zIHdpdGggYGBzdWJwcm9jZXNzYGAgKGFuZCBwb3NzaWJsZSBvdGhlciBtb2R1bGVzKSwK
KyAgbWFraW5nIHRoaXMgYSBzdWJ0bGUgYnVnIHNwZWNpYWxseSBzdXNjZXB0aWJsZSB3aGVuIHVz
ZWQgd2l0aCBgYGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFsc2BgLgorCisK
KworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGAj
MzkyOCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTI4PmBf
OiBBZGQgcG9zc2libGUgdmFsdWVzIGZvciBmaXh0dXJlIHNjb3BlIHRvIGRvY3MuCisKKworcHl0
ZXN0IDMuOC4xICgyMDE4LTA5LTIyKQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcg
Rml4ZXMKKy0tLS0tLS0tLQorCistIGAjMzI4NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zMjg2PmBfOiBgYC5weXRlc3RfY2FjaGVgYCBkaXJlY3RvcnkgaXMg
bm93IGF1dG9tYXRpY2FsbHkgaWdub3JlZCBieSBHaXQuIFVzZXJzIHdobyB3b3VsZCBsaWtlIHRv
IGNvbnRyaWJ1dGUgYSBzb2x1dGlvbiBmb3Igb3RoZXIgU0NNcyBwbGVhc2UgY29uc3VsdC9jb21t
ZW50IG9uIHRoaXMgaXNzdWUuCisKKworLSBgIzM3NDkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc0OT5gXzogRml4IHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVy
aW5nIGNvbGxlY3Rpb24gb2YgdGVzdHMgaW5zaWRlIHBhY2thZ2VzOjoKKworICAgICAgVHlwZUVy
cm9yOiBvYmplY3Qgb2YgdHlwZSAnUGFja2FnZScgaGFzIG5vIGxlbigpCisKKworLSBgIzM5NDEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk0MT5gXzogRml4
IGJ1ZyB3aGVyZSBpbmRpcmVjdCBwYXJhbWV0cml6YXRpb24gd291bGQgY29uc2lkZXIgdGhlIHNj
b3BlIG9mIGFsbCBmaXh0dXJlcyB1c2VkIGJ5IHRoZSB0ZXN0IGZ1bmN0aW9uIHRvIGRldGVybWlu
ZSB0aGUgcGFyYW1ldHJpemF0aW9uIHNjb3BlLCBhbmQgbm90IG9ubHkgdGhlIHNjb3BlIG9mIHRo
ZSBmaXh0dXJlcyBiZWluZyBwYXJhbWV0cml6ZWQuCisKKworLSBgIzM5NzMgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzk3Mz5gXzogRml4IGNyYXNoIG9mIHRo
ZSBhc3NlcnRpb24gcmV3cml0ZXIgaWYgYSB0ZXN0IGNoYW5nZWQgdGhlIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3Rvcnkgd2l0aG91dCByZXN0b3JpbmcgaXQgYWZ0ZXJ3YXJkcy4KKworCistIGAjMzk5
OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTk4PmBfOiBG
aXggaXNzdWUgdGhhdCBwcmV2ZW50ZWQgc29tZSBjYXBsb2cgcHJvcGVydGllcyAoZm9yIGV4YW1w
bGUgYGByZWNvcmRfdHVwbGVzYGApIGZyb20gYmVpbmcgYXZhaWxhYmxlIHdoZW4gZW50ZXJpbmcg
dGhlIGRlYnVnZ2VyIHdpdGggYGAtLXBkYmBgLgorCisKKy0gYCMzOTk5IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5OTk+YF86IEZpeCBgYFVuaWNvZGVEZWNv
ZGVFcnJvcmBgIGluIHB5dGhvbjIueCB3aGVuIGEgY2xhc3MgcmV0dXJucyBhIG5vbi1hc2NpaSBi
aW5hcnkgYGBfX3JlcHJfX2BgIGluIGFuIGFzc2VydGlvbiB3aGljaCBhbHNvIGNvbnRhaW5zIG5v
bi1hc2NpaSB0ZXh0LgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCistIGAjMzk5NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zOTk2PmBfOiBOZXcgYERlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMgPGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXByZWNhdGlvbnMuaHRtbD5gXyBwYWdlIHNo
b3dzIGFsbCBjdXJyZW50bHkKKyAgZGVwcmVjYXRlZCBmZWF0dXJlcywgdGhlIHJhdGlvbmFsZSB0
byBkbyBzbywgYW5kIGFsdGVybmF0aXZlcyB0byB1cGRhdGUgeW91ciBjb2RlLiBJdCBhbHNvIGxp
c3QgZmVhdHVyZXMgcmVtb3ZlZAorICBmcm9tIHB5dGVzdCBpbiBwYXN0IG1ham9yIHJlbGVhc2Vz
IHRvIGhlbHAgdGhvc2Ugd2l0aCBhbmNpZW50IHB5dGVzdCB2ZXJzaW9ucyB0byB1cGdyYWRlLgor
CisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLSBgIzM5NTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mzk1NT5gXzogSW1wcm92ZSBwcmUtY29tbWl0IGRldGVjdGlvbiBmb3IgY2hhbmdlbG9nIGZpbGVu
YW1lcworCisKKy0gYCMzOTc1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzM5NzU+YF86IFJlbW92ZSBsZWdhY3kgY29kZSBhcm91bmQgaW1fZnVuYyBhcyB0aGF0
IHdhcyBweXRob24yIG9ubHkKKworCitweXRlc3QgMy44LjAgKDIwMTgtMDktMDUpCis9PT09PT09
PT09PT09PT09PT09PT09PT09CisKK0RlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzI0NTIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjQ1Mj5gXzogYGBDb25maWcud2FybmBgIGFuZCBgYE5vZGUud2Fy
bmBgIGhhdmUgYmVlbgorICBkZXByZWNhdGVkLCBzZWUgYDxodHRwczovL2RvY3MucHl0ZXN0Lm9y
Zy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjY29uZmlnLXdhcm4tYW5kLW5vZGUtd2Fybj5g
XyBmb3IgcmF0aW9uYWxlIGFuZAorICBleGFtcGxlcy4KKworLSBgIzM5MzYgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzkzNj5gXzogYGBAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3NgYCBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciByZWdleC1lc2Nh
cGVkLAorICBtYWtpbmcgaXQgcG9zc2libGUgdG8gYWN0dWFsbHkgdXNlIHJlZ3VsYXIgZXhwcmVz
c2lvbnMgdG8gY2hlY2sgdGhlIHdhcm5pbmcgbWVzc2FnZS4KKworICAqKk5vdGUqKjogcmVnZXgt
ZXNjYXBpbmcgdGhlIG1hdGNoIHN0cmluZyB3YXMgYW4gaW1wbGVtZW50YXRpb24gb3ZlcnNpZ2h0
IHRoYXQgbWlnaHQgYnJlYWsgdGVzdCBzdWl0ZXMgd2hpY2ggZGVwZW5kCisgIG9uIHRoZSBvbGQg
YmVoYXZpb3IuCisKKworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzI0NTIgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ1Mj5gXzogSW50ZXJuYWwgcHl0
ZXN0IHdhcm5pbmdzIGFyZSBub3cgaXNzdWVkIHVzaW5nIHRoZSBzdGFuZGFyZCBgYHdhcm5pbmdz
YGAgbW9kdWxlLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gdXNlCisgIHRoZSBzdGFuZGFyZCB3YXJu
aW5ncyBmaWx0ZXJzIHRvIG1hbmFnZSB0aG9zZSB3YXJuaW5ncy4gVGhpcyBpbnRyb2R1Y2VzIGBg
UHl0ZXN0V2FybmluZ2BgLAorICBgYFB5dGVzdERlcHJlY2F0aW9uV2FybmluZ2BgIGFuZCBgYFJl
bW92ZWRJblB5dGVzdDRXYXJuaW5nYGAgd2FybmluZyB0eXBlcyBhcyBwYXJ0IG9mIHRoZSBwdWJs
aWMgQVBJLgorCisgIENvbnN1bHQgYHRoZSBkb2N1bWVudGF0aW9uIDxodHRwczovL2RvY3MucHl0
ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbCNpbnRlcm5hbC1weXRlc3Qtd2FybmluZ3M+
YF9fIGZvciBtb3JlIGluZm8uCisKKworLSBgIzI5MDggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkwOD5gXzogYGBEZXByZWNhdGlvbldhcm5pbmdgYCBhbmQg
YGBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYGAgYXJlIG5vdyBzaG93biBieSBkZWZhdWx0IGlm
IG5vIG90aGVyIHdhcm5pbmcgZmlsdGVyIGlzCisgIGNvbmZpZ3VyZWQuIFRoaXMgbWFrZXMgcHl0
ZXN0IG1vcmUgY29tcGxpYW50IHdpdGgKKyAgYFBFUC0wNTA2IDxodHRwczovL3d3dy5weXRob24u
b3JnL2Rldi9wZXBzL3BlcC0wNTY1LyNyZWNvbW1lbmRlZC1maWx0ZXItc2V0dGluZ3MtZm9yLXRl
c3QtcnVubmVycz5gXy4gU2VlCisgIGB0aGUgZG9jcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL3dhcm5pbmdzLmh0bWwjZGVwcmVjYXRpb253YXJuaW5nLWFuZC1wZW5kaW5nZGVw
cmVjYXRpb253YXJuaW5nPmBfIGZvcgorICBtb3JlIGluZm8uCisKKworLSBgIzMyNTEgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI1MT5gXzogV2FybmluZ3Mg
YXJlIG5vdyBjYXB0dXJlZCBhbmQgZGlzcGxheWVkIGR1cmluZyB0ZXN0IGNvbGxlY3Rpb24uCisK
KworLSBgIzM3ODQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mzc4ND5gXzogYGBQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQURgYCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBkaXNhYmxlcyBwbHVnaW4gYXV0by1sb2FkaW5nIHdoZW4gc2V0LgorCisKKy0gYCMz
ODI5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4Mjk+YF86
IEFkZGVkIHRoZSBgYGNvdW50YGAgb3B0aW9uIHRvIGBgY29uc29sZV9vdXRwdXRfc3R5bGVgYCB0
byBlbmFibGUgZGlzcGxheWluZyB0aGUgcHJvZ3Jlc3MgYXMgYSBjb3VudCBpbnN0ZWFkIG9mIGEg
cGVyY2VudGFnZS4KKworCistIGAjMzgzNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zODM3PmBfOiBBZGRlZCBzdXBwb3J0IGZvciAneGZhaWxlZCcgYW5kICd4
cGFzc2VkJyBvdXRjb21lcyB0byB0aGUgYGBweXRlc3Rlci5SdW5SZXN1bHQuYXNzZXJ0X291dGNv
bWVzYGAgc2lnbmF0dXJlLgorCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBgIzM5MTEg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzkxMT5gXzogVGVy
bWluYWwgd3JpdGVyIG5vdyB0YWtlcyBpbnRvIGFjY291bnQgdW5pY29kZSBjaGFyYWN0ZXIgd2lk
dGggd2hlbiB3cml0aW5nIG91dCBwcm9ncmVzcy4KKworCistIGAjMzkxMyA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTEzPmBfOiBQeXRlc3Qgbm93IHJldHVy
bnMgd2l0aCBjb3JyZWN0IGV4aXQgY29kZSAoRVhJVF9VU0FHRUVSUk9SLCA0KSB3aGVuIGNhbGxl
ZCB3aXRoIHVua25vd24gYXJndW1lbnRzLgorCisKKy0gYCMzOTE4IDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5MTg+YF86IEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgYXNzZXJ0aW9uIHJld3JpdGluZy4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM1NjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU2Nj5gXzogQWRkZWQgYSBibHVyYiBpbiB1c2FnZS5yc3Qg
Zm9yIHRoZSB1c2FnZSBvZiAtciBmbGFnIHdoaWNoIGlzIHVzZWQgdG8gc2hvdyBhbiBleHRyYSB0
ZXN0IHN1bW1hcnkgaW5mby4KKworCistIGAjMzkwNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zOTA3PmBfOiBDb3JyZWN0ZWQgdHlwZSBvZiB0aGUgZXhjZXB0
aW9ucyBjb2xsZWN0aW9uIHBhc3NlZCB0byBgYHhmYWlsYGA6IGBgcmFpc2VzYGAgYXJndW1lbnQg
YWNjZXB0cyBhIGBgdHVwbGVgYCBpbnN0ZWFkIG9mIGBgbGlzdGBgLgorCisKKworVHJpdmlhbC9J
bnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzM4NTMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzg1Mz5gXzogUmVtb3Zl
ZCBgYCJydW4gYWxsIChubyByZWNvcmRlZCBmYWlsdXJlcykiYGAgbWVzc2FnZSBwcmludGVkIHdp
dGggYGAtLWZhaWxlZC1maXJzdGBgIGFuZCBgYC0tbGFzdC1mYWlsZWRgYCB3aGVuIHRoZXJlIGFy
ZSBubyBmYWlsZWQgdGVzdHMuCisKKworcHl0ZXN0IDMuNy40ICgyMDE4LTA4LTI5KQorPT09PT09
PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMzUwNiA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNTA2PmBfOiBGaXgg
cG9zc2libGUgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gd3JpdGluZyBgYC5weWNgYCBmaWxlcy4K
KworCistIGAjMzg1MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zODUzPmBfOiBDYWNoZSBwbHVnaW4gbm93IG9iZXlzIHRoZSBgYC1xYGAgZmxhZyB3aGVuIGBg
LS1sYXN0LWZhaWxlZGBgIGFuZCBgYC0tZmFpbGVkLWZpcnN0YGAgZmxhZ3MgYXJlIHVzZWQuCisK
KworLSBgIzM4ODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
Mzg4Mz5gXzogRml4IGJhZCBjb25zb2xlIG91dHB1dCB3aGVuIHVzaW5nIGBgY29uc29sZV9vdXRw
dXRfc3R5bGU9Y2xhc3NpY2BgLgorCisKKy0gYCMzODg4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4ODg+YF86IEZpeCBtYWNPUyBzcGVjaWZpYyBjb2RlIHVz
aW5nIGBgY2FwdHVyZW1hbmFnZXJgYCBwbHVnaW4gaW4gZG9jdGVzdHMuCisKKworCitJbXByb3Zl
ZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzOTAyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM5MDI+YF86IEZpeCBweXRl
c3Qub3JnIGxpbmtzCisKKworcHl0ZXN0IDMuNy4zICgyMDE4LTA4LTI2KQorPT09PT09PT09PT09
PT09PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMzAzMyA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDMzPmBfOiBGaXh0dXJlcyBk
dXJpbmcgdGVhcmRvd24gY2FuIGFnYWluIHVzZSBgYGNhcHN5c2BgIGFuZCBgYGNhcGZkYGAgdG8g
aW5zcGVjdCBvdXRwdXQgY2FwdHVyZWQgZHVyaW5nIHRlc3RzLgorCisKKy0gYCMzNzczIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3NzM+YF86IEZpeCBjb2xs
ZWN0aW9uIG9mIHRlc3RzIGZyb20gYGBfX2luaXRfXy5weWBgIGZpbGVzIGlmIHRoZXkgbWF0Y2gg
dGhlIGBgcHl0aG9uX2ZpbGVzYGAgY29uZmlndXJhdGlvbiBvcHRpb24uCisKKworLSBgIzM3OTYg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc5Nj5gXzogRml4
IGlzc3VlIHdoZXJlIHRlYXJkb3duIG9mIGZpeHR1cmVzIG9mIGNvbnNlY3V0aXZlIHN1Yi1wYWNr
YWdlcyB3ZXJlIGV4ZWN1dGVkIG9uY2UsIGF0IHRoZSBlbmQgb2YgdGhlIG91dGVyCisgIHBhY2th
Z2UuCisKKworLSBgIzM4MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzgxNj5gXzogRml4IGJ1ZyB3aGVyZSBgYC0tc2hvdy1jYXB0dXJlPW5vYGAgb3B0aW9u
IHdvdWxkIHN0aWxsIHNob3cgbG9ncyBwcmludGVkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgor
CisKKy0gYCMzODE5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzM4MTk+YF86IEZpeCBgYHN0ZG91dC9zdGRlcnJgYCBub3QgZ2V0dGluZyBjYXB0dXJlZCB3aGVu
IHJlYWwtdGltZSBjbGkgbG9nZ2luZyBpcyBhY3RpdmUuCisKKworLSBgIzM4NDMgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzg0Mz5gXzogRml4IGNvbGxlY3Rp
b24gZXJyb3Igd2hlbiBzcGVjaWZ5aW5nIHRlc3QgZnVuY3Rpb25zIGRpcmVjdGx5IGluIHRoZSBj
b21tYW5kIGxpbmUgdXNpbmcgYGB0ZXN0LnB5Ojp0ZXN0YGAgc3ludGF4IHRvZ2V0aGVyIHdpdGgg
YGAtLWRvY3Rlc3QtbW9kdWxlc2BgLgorCisKKy0gYCMzODQ4IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4NDg+YF86IEZpeCBidWdzIHdoZXJlIHVuaWNvZGUg
YXJndW1lbnRzIGNvdWxkIG5vdCBiZSBwYXNzZWQgdG8gYGB0ZXN0ZGlyLnJ1bnB5dGVzdGBgIG9u
IFB5dGhvbiAyLgorCisKKy0gYCMzODU0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzM4NTQ+YF86IEZpeCBkb3VibGUgY29sbGVjdGlvbiBvZiB0ZXN0cyB3aXRo
aW4gcGFja2FnZXMgd2hlbiB0aGUgZmlsZW5hbWUgc3RhcnRzIHdpdGggYSBjYXBpdGFsIGxldHRl
ci4KKworCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLSBgIzM4MjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzgyND5gXzogQWRkZWQgZXhhbXBsZSBmb3IgbXVsdGlwbGUgZ2xvYiBwYXR0ZXJuIG1hdGNoZXMg
aW4gYGBweXRob25fZmlsZXNgYC4KKworCistIGAjMzgzMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODMzPmBfOiBBZGRlZCBtaXNzaW5nIGRvY3MgZm9yIGBg
cHl0ZXN0ZXIuVGVzdGRpcmBgLgorCisKKy0gYCMzODcwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4NzA+YF86IENvcnJlY3QgZG9jdW1lbnRhdGlvbiBmb3Ig
c2V0dXB0b29scyBpbnRlZ3JhdGlvbi4KKworCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzODI2IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4MjY+YF86IFJlcGxhY2UgYnJva2VuIHR5cGUgYW5u
b3RhdGlvbnMgd2l0aCB0eXBlIGNvbW1lbnRzLgorCisKKy0gYCMzODQ1IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM4NDU+YF86IFJlbW92ZSBhIHJlZmVyZW5j
ZSB0byBpc3N1ZSBgIzU2OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy81Njg+YF8gZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiwgd2hpY2ggaGFzIHNpbmNlIGJlZW4K
KyAgZml4ZWQuCisKKworcHl0ZXN0IDMuNy4yICgyMDE4LTA4LTE2KQorPT09PT09PT09PT09PT09
PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIGAjMzY3MSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjcxPmBfOiBGaXggYGBmaWx0ZXJ3
YXJuaW5nc2BgIG5vdCBiZWluZyByZWdpc3RlcmVkIGFzIGEgYnVpbHRpbiBtYXJrLgorCisKKy0g
YCMzNzY4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3Njg+
YF8sIGAjMzc4OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
Nzg5PmBfOiBGaXggdGVzdCBjb2xsZWN0aW9uIGZyb20gcGFja2FnZXMgbWl4ZWQgd2l0aCBub3Jt
YWwgZGlyZWN0b3JpZXMuCisKKworLSBgIzM3NzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzc3MT5gXzogRml4IGluZmluaXRlIHJlY3Vyc2lvbiBkdXJpbmcg
Y29sbGVjdGlvbiBpZiBhIGBgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0YGAgaG9vayByZXR1cm5zIGBg
RmFsc2VgYCBpbnN0ZWFkIG9mIGBgTm9uZWBgLgorCisKKy0gYCMzNzc0IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3NzQ+YF86IEZpeCBidWcgd2hlcmUgZGVj
b3JhdGVkIGZpeHR1cmVzIHdvdWxkIGxvc2UgZnVuY3Rpb25hbGl0eSAoZm9yIGV4YW1wbGUgYGBA
bW9jay5wYXRjaGBgKS4KKworCistIGAjMzc3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zNzc1PmBfOiBGaXggYnVnIHdoZXJlIGltcG9ydGluZyBtb2R1bGVz
IG9yIG90aGVyIG9iamVjdHMgd2l0aCBwcmVmaXggYGBweXRlc3RfYGAgcHJlZml4IHdvdWxkIHJh
aXNlIGEgYGBQbHVnaW5WYWxpZGF0aW9uRXJyb3JgYC4KKworCistIGAjMzc4OCA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzg4PmBfOiBGaXggYGBBdHRyaWJ1
dGVFcnJvcmBgIGR1cmluZyB0ZWFyZG93biBvZiBgYFRlc3RDYXNlYGAgc3ViY2xhc3NlcyB3aGlj
aCByYWlzZSBhbiBleGNlcHRpb24gZHVyaW5nIGBgX19pbml0X19gYC4KKworCistIGAjMzgwNCA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zODA0PmBfOiBGaXgg
dHJhY2ViYWNrIHJlcG9ydGluZyBmb3IgZXhjZXB0aW9ucyB3aXRoIGBgX19jYXVzZV9fYGAgY3lj
bGVzLgorCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCistIGAjMzc0NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zNzQ2PmBfOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgYGBtZXRhZnVuYy5jb25maWdgYCB0aGF0
IGhhZCBiZWVuIG1pc3Rha2VubHkgaGlkZGVuLgorCisKK3B5dGVzdCAzLjcuMSAoMjAxOC0wOC0w
MikKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKwor
LSBgIzM0NzMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ3
Mz5gXzogUmFpc2UgaW1tZWRpYXRlbHkgaWYgYGBhcHByb3goKWBgIGlzIGdpdmVuIGFuIGV4cGVj
dGVkIHZhbHVlIG9mIGEgdHlwZSBpdCBkb2Vzbid0IHVuZGVyc3RhbmQgKGUuZy4gc3RyaW5ncywg
bmVzdGVkIGRpY3RzLCBldGMuKS4KKworCistIGAjMzcxMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzEyPmBfOiBDb3JyZWN0bHkgcmVwcmVzZW50IHRoZSBk
aW1lbnNpb25zIG9mIGEgbnVtcHkgYXJyYXkgd2hlbiBjYWxsaW5nIGBgcmVwcigpYGAgb24gYGBh
cHByb3goKWBgLgorCistIGAjMzc0MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zNzQyPmBfOiBGaXggaW5jb21wYXRpYmlsaXR5IHdpdGggdGhpcmQgcGFydHkg
cGx1Z2lucyBkdXJpbmcgY29sbGVjdGlvbiwgd2hpY2ggcHJvZHVjZWQgdGhlIGVycm9yIGBgb2Jq
ZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ19jb2xsZWN0ZmlsZSdgYC4KKworLSBgIzM3NDUgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc0NT5gXzogRGlzcGxheSB0
aGUgYWJzb2x1dGUgcGF0aCBpZiBgYGNhY2hlX2RpcmBgIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUg
YGByb290ZGlyYGAgaW5zdGVhZCBvZiBmYWlsaW5nLgorCisKKy0gYCMzNzQ3IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3NDc+YF86IEZpeCBjb21wYXRpYmls
aXR5IHByb2JsZW0gd2l0aCBwbHVnaW5zIGFuZCB0aGUgd2FybmluZyBjb2RlIGlzc3VlZCBieSBm
aXh0dXJlIGZ1bmN0aW9ucyB3aGVuIHRoZXkgYXJlIGNhbGxlZCBkaXJlY3RseS4KKworCistIGAj
Mzc0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNzQ4PmBf
OiBGaXggaW5maW5pdGUgcmVjdXJzaW9uIGluIGBgcHl0ZXN0LmFwcHJveGBgIHdpdGggYXJyYXlz
IGluIGBgbnVtcHk8MS4xM2BgLgorCisKKy0gYCMzNzU3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3NTc+YF86IFBpbiBwYXRobGliMiB0byBgYD49Mi4yLjBg
YCBhcyB3ZSByZXF1aXJlIGBgX19mc3BhdGhfX2BgIHN1cHBvcnQuCisKKworLSBgIzM3NjMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc2Mz5gXzogRml4IGBg
VHlwZUVycm9yYGAgd2hlbiB0aGUgYXNzZXJ0aW9uIG1lc3NhZ2UgaXMgYGBieXRlc2BgIGluIHB5
dGhvbiAzLgorCisKK3B5dGVzdCAzLjcuMCAoMjAxOC0wNy0zMCkKKz09PT09PT09PT09PT09PT09
PT09PT09PT0KKworRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCistIGAjMjYzOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yNjM5PmBfOiBgYHB5dGVzdF9uYW1lc3BhY2VgYCBoYXMgYmVlbiBgZGVwcmVjYXRl
ZCA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI3B5
dGVzdC1uYW1lc3BhY2U+YF8uCisKKworLSBgIzM2NjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzY2MT5gXzogQ2FsbGluZyBhIGZpeHR1cmUgZnVuY3Rpb24g
ZGlyZWN0bHksIGFzIG9wcG9zZWQgdG8gcmVxdWVzdCB0aGVtIGluIGEgdGVzdCBmdW5jdGlvbiwg
bm93IGlzc3VlcyBhIGBgUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmdgYC4gU2VlIGB0aGUgZG9jdW1l
bnRhdGlvbiBmb3IgcmF0aW9uYWxlIGFuZCBleGFtcGxlcyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI2NhbGxpbmctZml4dHVyZXMtZGlyZWN0bHk+
YF8uCisKKworCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBgIzIyODMgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjI4Mz5gXzogTmV3IGBgcGFja2FnZWBgIGZp
eHR1cmUgc2NvcGU6IGZpeHR1cmVzIGFyZSBmaW5hbGl6ZWQgd2hlbiB0aGUgbGFzdCB0ZXN0IG9m
IGEgKnBhY2thZ2UqIGZpbmlzaGVzLiBUaGlzIGZlYXR1cmUgaXMgY29uc2lkZXJlZCAqKmV4cGVy
aW1lbnRhbCoqLCBzbyB1c2UgaXQgc3BhcmluZ2x5LgorCisKKy0gYCMzNTc2IDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1NzY+YF86IGBgTm9kZS5hZGRfbWFy
a2VyYGAgbm93IHN1cHBvcnRzIGFuIGBgYXBwZW5kPVRydWUvRmFsc2VgYCBwYXJhbWV0ZXIgdG8g
ZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG1hcmsgY29tZXMgbGFzdCAoZGVmYXVsdCkgb3IgZmlyc3Qu
CisKKworLSBgIzM1NzkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzU3OT5gXzogRml4dHVyZSBgYGNhcGxvZ2BgIG5vdyBoYXMgYSBgYG1lc3NhZ2VzYGAgcHJv
cGVydHksIHByb3ZpZGluZyBjb252ZW5pZW50IGFjY2VzcyB0byB0aGUgZm9ybWF0LWludGVycG9s
YXRlZCBsb2cgbWVzc2FnZXMgd2l0aG91dCB0aGUgZXh0cmEgZGF0YSBwcm92aWRlZCBieSB0aGUg
Zm9ybWF0dGVyL2hhbmRsZXIuCisKKworLSBgIzM2MTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzYxMD5gXzogTmV3IGBgLS10cmFjZWBgIG9wdGlvbiB0byBl
bnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIHN0YXJ0IG9mIGEgdGVzdC4KKworCistIGAjMzYyMyA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNjIzPmBfOiBJbnRy
b2R1Y2UgYGBweXRlc3Rlci5jb3B5X2V4YW1wbGVgYCBhcyBoZWxwZXIgdG8gZG8gYWNjZXB0YW5j
ZSB0ZXN0cyBhZ2FpbnN0IGV4YW1wbGVzIGZyb20gdGhlIHByb2plY3QuCisKKworCitCdWcgRml4
ZXMKKy0tLS0tLS0tLQorCistIGAjMjIyMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMjIwPmBfOiBGaXggYSBidWcgd2hlcmUgZml4dHVyZXMgb3ZlcnJpZGRl
biBieSBkaXJlY3QgcGFyYW1ldGVycyAoZm9yIGV4YW1wbGUgcGFyYW1ldHJpemF0aW9uKSB3ZXJl
IGJlaW5nIGluc3RhbnRpYXRlZCBldmVuIGlmIHRoZXkgd2VyZSBub3QgYmVpbmcgdXNlZCBieSBh
IHRlc3QuCisKKworLSBgIzM2OTUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzY5NT5gXzogRml4IGBgQXBwcm94TnVtcHlgYCBpbml0aWFsaXNhdGlvbiBhcmd1
bWVudCBtaXh1cCwgYGBhYnNgYCBhbmQgYGByZWxgYCB0b2xlcmFuY2VzIHdlcmUgZmxpcHBlZCBj
YXVzaW5nIHN0cmFuZ2UgY29tcGFyaXNvbiByZXN1bHRzLgorICBBZGQgdGVzdHMgdG8gY2hlY2sg
YGBhYnNgYCBhbmQgYGByZWxgYCB0b2xlcmFuY2VzIGZvciBgYG5wLmFycmF5YGAgYW5kIHRlc3Qg
Zm9yIGV4cGVjdGluZyBgYG5hbmBgIHdpdGggYGBucC5hcnJheSgpYGAKKworCistIGAjOTgwIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzk4MD5gXzogRml4IHRy
dW5jYXRlZCBsb2NhbHMgb3V0cHV0IGluIHZlcmJvc2UgbW9kZS4KKworCisKK0ltcHJvdmVkIERv
Y3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBgIzMyOTUgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI5NT5gXzogQ29ycmVjdCB0aGUg
dXNhZ2UgZG9jdW1lbnRhdGlvbiBvZiBgYC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXNgYCBieSBh
ZGRpbmcgdGhlIG1pc3NpbmcgYGAtLWxhc3QtZmFpbGVkYGAgYXJndW1lbnQgaW4gdGhlIHByZXNl
bnRlZCBleGFtcGxlcywgYmVjYXVzZSB0aGV5IGFyZSBtaXNsZWFkaW5nIGFuZCBsZWFkIHRvIHRo
aW5rIHRoYXQgdGhlIG1pc3NpbmcgYXJndW1lbnQgaXMgbm90IG5lZWRlZC4KKworCisKK1RyaXZp
YWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYCMzNTE5
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1MTk+YF86IE5v
dyBhIGBgUkVBRE1FLm1kYGAgZmlsZSBpcyBjcmVhdGVkIGluIGBgLnB5dGVzdF9jYWNoZWBgIHRv
IG1ha2UgaXQgY2xlYXIgd2h5IHRoZSBkaXJlY3RvcnkgZXhpc3RzLgorCisKK3B5dGVzdCAzLjYu
NCAoMjAxOC0wNy0yOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCist
LS0tLS0tLS0KKworLSBJbnZva2UgcHl0ZXN0IHVzaW5nIGBgLW1weXRlc3RgYCBzbyBgYHN5cy5w
YXRoYGAgZG9lcyBub3QgZ2V0IHBvbGx1dGVkIGJ5IHBhY2thZ2VzIGluc3RhbGxlZCBpbiBgYHNp
dGUtcGFja2FnZXNgYC4gKGAjNzQyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzc0Mj5gXykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy0gVXNlIGBgc210cF9jb25uZWN0aW9uYGAgaW5zdGVhZCBvZiBgYHNt
dHBgYCBpbiBmaXh0dXJlcyBkb2N1bWVudGF0aW9uIHRvIGF2b2lkIHBvc3NpYmxlIGNvbmZ1c2lv
bi4gKGAjMzU5MiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8z
NTkyPmBfKQorCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy0gUmVtb3ZlIG9ic29sZXRlIGBgX19mdXR1cmVfX2BgIGltcG9ydHMuIChgIzIz
MTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjMxOT5gXykK
KworLSBBZGQgQ0lUQVRJT04gdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZm9ybWFs
bHkgY2l0ZSBweXRlc3QuIChgIzM0MDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzQwMj5gXykKKworLSBSZXBsYWNlIGJyb2tlbiB0eXBlIGFubm90YXRpb25z
IHdpdGggdHlwZSBjb21tZW50cy4gKGAjMzYzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8zNjM1PmBfKQorCistIFBpbiBgYHBsdWdneWBgIHRvIGBgPDAuOGBg
LiAoYCMzNzI3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3
Mjc+YF8pCisKKworcHl0ZXN0IDMuNi4zICgyMDE4LTA3LTA0KQorPT09PT09PT09PT09PT09PT09
PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEZpeCBgYEltcG9ydFdhcm5pbmdg
YCB0cmlnZ2VyZWQgYnkgZXhwbGljaXQgcmVsYXRpdmUgaW1wb3J0cyBpbgorICBhc3NlcnRpb24t
cmV3cml0dGVuIHBhY2thZ2UgbW9kdWxlcy4gKGAjMzA2MQorICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDYxPmBfKQorCistIEZpeCBlcnJvciBpbiBgYHB5
dGVzdC5hcHByb3hgYCB3aGVuIGRlYWxpbmcgd2l0aCAwLWRpbWVuc2lvbiBudW1weQorICBhcnJh
eXMuIChgIzM1OTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzU5Mz5gXykKKworLSBObyBsb25nZXIgcmFpc2UgYGBWYWx1ZUVycm9yYGAgd2hlbiB1c2luZyB0
aGUgYGBnZXRfbWFya2VyYGAgQVBJLiAoYCMzNjA1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2MDU+YF8pCisKKy0gRml4IHByb2JsZW0gd2hlcmUgbG9n
IG1lc3NhZ2VzIHdpdGggbm9uLWFzY2lpIGNoYXJhY3RlcnMgd291bGQgbm90CisgIGFwcGVhciBp
biB0aGUgb3V0cHV0IGxvZyBmaWxlLgorICAoYCMzNjMwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2MzA+YF8pCisKKy0gTm8gbG9uZ2VyIHJhaXNlIGBgQXR0
cmlidXRlRXJyb3JgYCB3aGVuIGxlZ2FjeSBtYXJrcyBjYW4ndCBiZSBzdG9yZWQgaW4KKyAgZnVu
Y3Rpb25zLiAoYCMzNjMxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM2MzE+YF8pCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCistIFRoZSBkZXNjcmlwdGlvbiBhYm92ZSB0aGUgZXhhbXBsZSBmb3IgYGBAcHl0
ZXN0Lm1hcmsuc2tpcGlmYGAgbm93IGJldHRlcgorICBtYXRjaGVzIHRoZSBjb2RlLiAoYCMzNjEx
CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2MTE+YF8p
CisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLSBJbnRlcm5hbCByZWZhY3RvcmluZzogcmVtb3ZlZCB1bnVzZWQgYGBDYWxsU3BlYzJ0b3gg
Ll9nbG9iYWxpZF9hcmdzYGAKKyAgYXR0cmlidXRlIGFuZCBgYG1ldGFmdW5jYGAgcGFyYW1ldGVy
IGZyb20gYGBDYWxsU3BlYzIuY29weSgpYGAuIChgIzM1OTgKKyAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU5OD5gXykKKworLSBTaWxlbmNlIHVzYWdlIG9m
IGBgcmVkdWNlYGAgd2FybmluZyBpbiBQeXRob24gMiAoYCMzNjA5CisgIDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2MDk+YF8pCisKKy0gRml4IHVzYWdlIG9m
IGBgYXR0ci5pYmBgIGRlcHJlY2F0ZWQgYGBjb252ZXJ0YGAgcGFyYW1ldGVyLiAoYCMzNjUzCisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM2NTM+YF8pCisK
KworcHl0ZXN0IDMuNi4yICgyMDE4LTA2LTIwKQorPT09PT09PT09PT09PT09PT09PT09PT09PQor
CitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEZpeCByZWdyZXNzaW9uIGluIGBgTm9kZS5hZGRf
bWFya2VyYGAgYnkgZXh0cmFjdGluZyB0aGUgbWFyayBvYmplY3Qgb2YgYQorICBgYE1hcmtEZWNv
cmF0b3JgYC4gKGAjMzU1NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8zNTU1PmBfKQorCistIFdhcm5pbmdzIHdpdGhvdXQgYGBsb2NhdGlvbmBgIHdlcmUg
cmVwb3J0ZWQgYXMgYGBOb25lYGAuIFRoaXMgaXMgY29ycmVjdGVkIHRvCisgIG5vdyByZXBvcnQg
YGA8dW5kZXRlcm1pbmVkIGxvY2F0aW9uPmBgLiAoYCMzNTYzCisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1NjM+YF8pCisKKy0gQ29udGludWUgdG8gY2Fs
bCBmaW5hbGl6ZXJzIGluIHRoZSBzdGFjayB3aGVuIGEgZmluYWxpemVyIGluIGEgZm9ybWVyIHNj
b3BlCisgIHJhaXNlcyBhbiBleGNlcHRpb24uIChgIzM1NjkKKyAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU2OT5gXykKKworLSBGaXggZW5jb2RpbmcgZXJy
b3Igd2l0aCBgYHByaW50YGAgc3RhdGVtZW50cyBpbiBkb2N0ZXN0cyAoYCMzNTgzCisgIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1ODM+YF8pCisKKworSW1w
cm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEFkZCBkb2N1
bWVudGF0aW9uIGZvciB0aGUgYGAtLXN0cmljdGBgIGZsYWcuIChgIzM1NDkKKyAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU0OT5gXykKKworCitUcml2aWFs
L0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIFVwZGF0ZSBv
bGQgcXVvdGF0aW9uIHN0eWxlIHRvIHBhcmVucyBpbiBmaXh0dXJlLnJzdCBkb2N1bWVudGF0aW9u
LiAoYCMzNTI1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzM1MjU+YF8pCisKKy0gSW1wcm92ZSBkaXNwbGF5IG9mIGhpbnQgYWJvdXQgYGAtLWZ1bGx0cmFj
ZWBgIHdpdGggYGBLZXlib2FyZEludGVycnVwdGBgLgorICAoYCMzNTQ1IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1NDU+YF8pCisKKy0gcHl0ZXN0J3MgdGVz
dHN1aXRlIGlzIG5vIGxvbmdlciBydW5uYWJsZSB0aHJvdWdoIGBgcHl0aG9uIHNldHVwLnB5IHRl
c3RgYCAtLQorICBpbnN0ZWFkIGludm9rZSBgYHB5dGVzdGBgIG9yIGBgdG94YGAgZGlyZWN0bHku
IChgIzM1NTIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzU1Mj5gXykKKworLSBGaXggdHlwbyBpbiBkb2N1bWVudGF0aW9uIChgIzM1NjcKKyAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzU2Nz5gXykKKworCitweXRl
c3QgMy42LjEgKDIwMTgtMDYtMDUpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBG
aXhlcworLS0tLS0tLS0tCisKKy0gRml4ZWQgYSBidWcgd2hlcmUgc3Rkb3V0IGFuZCBzdGRlcnIg
d2VyZSBsb2dnZWQgdHdpY2UgYnkganVuaXR4bWwgd2hlbiBhIHRlc3QKKyAgd2FzIG1hcmtlZCB4
ZmFpbC4gKGAjMzQ5MQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zNDkxPmBfKQorCistIEZpeCBgYHVzZWZpeHR1cmVzYGAgbWFyayBhcHBseWVkIHRvIHVu
aXR0ZXN0IHRlc3RzIGJ5IGNvcnJlY3RseSBpbnN0YW50aWF0aW5nCisgIGBgRml4dHVyZUluZm9g
YC4gKGAjMzQ5OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zNDk4PmBfKQorCistIEZpeCBhc3NlcnRpb24gcmV3cml0ZXIgY29tcGF0aWJpbGl0eSB3aXRo
IGxpYnJhcmllcyB0aGF0IG1vbmtleSBwYXRjaAorICBgYGZpbGVgYCBvYmplY3RzLiAoYCMzNTAz
CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM1MDM+YF8p
CisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCist
IEFkZGVkIGEgc2VjdGlvbiBvbiBob3cgdG8gdXNlIGZpeHR1cmVzIGFzIGZhY3RvcmllcyB0byB0
aGUgZml4dHVyZQorICBkb2N1bWVudGF0aW9uLiAoYCMzNDYxIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM0NjE+YF8pCisKKworVHJpdmlhbC9JbnRlcm5hbCBD
aGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBFbmFibGUgY2FjaGluZyBmb3Ig
cGlwL3ByZS1jb21taXQgaW4gb3JkZXIgdG8gcmVkdWNlIGJ1aWxkIHRpbWUgb24KKyAgdHJhdmlz
L2FwcHZleW9yLiAoYCMzNTAyCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzM1MDI+YF8pCisKKy0gU3dpdGNoIHB5dGVzdCB0byB0aGUgc3JjLyBsYXlvdXQg
YXMgd2UgYWxyZWFkeSBzdWdnZXN0ZWQgaXQgZm9yIGdvb2QgcHJhY3RpY2UKKyAgLSBub3cgd2Ug
aW1wbGVtZW50IGl0IGFzIHdlbGwuIChgIzM1MTMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzUxMz5gXykKKworLSBGaXggaWYgaW4gdGVzdHMgdG8gc3Vw
cG9ydCAzLjcuMGI1LCB3aGVyZSBhIGRvY3N0cmluZyBoYW5kbGluZyBpbiBBU1QgZ290CisgIHJl
dmVydGVkLiAoYCMzNTMwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzM1MzA+YF8pCisKKy0gUmVtb3ZlIHNvbWUgcHl0aG9uMi41IGNvbXBhdGliaWxpdHkgY29k
ZS4gKGAjMzUyOQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zNTI5PmBfKQorCisKK3B5dGVzdCAzLjYuMCAoMjAxOC0wNS0yMykKKz09PT09PT09PT09PT09
PT09PT09PT09PT0KKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gUmV2YW1wIHRoZSBpbnRlcm5h
bHMgb2YgdGhlIGBgcHl0ZXN0Lm1hcmtgYCBpbXBsZW1lbnRhdGlvbiB3aXRoIGNvcnJlY3QgcGVy
CisgIG5vZGUgaGFuZGxpbmcgd2hpY2ggZml4ZXMgYSBudW1iZXIgb2YgbG9uZyBzdGFuZGluZyBi
dWdzIGNhdXNlZCBieSB0aGUgb2xkCisgIGRlc2lnbi4gVGhpcyBpbnRyb2R1Y2VzIG5ldyBgYE5v
ZGUuaXRlcl9tYXJrZXJzKG5hbWUpYGAgYW5kCisgIGBgTm9kZS5nZXRfY2xvc2VzdF9tYXJrZXIo
bmFtZSlgYCBBUElzLiBVc2VycyBhcmUgKipzdHJvbmdseSBlbmNvdXJhZ2VkKiogdG8KKyAgcmVh
ZCB0aGUgYHJlYXNvbnMgZm9yIHRoZSByZXZhbXAgaW4gdGhlIGRvY3MKKyAgPGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9oaXN0b3JpY2FsLW5vdGVzLmh0bWwjbWFya2VyLXJldmFt
cC1hbmQtaXRlcmF0aW9uPmBfLAorICBvciBqdW1wIG92ZXIgdG8gZGV0YWlscyBhYm91dCBgdXBk
YXRpbmcgZXhpc3RpbmcgY29kZSB0byB1c2UgdGhlIG5ldyBBUElzCisgIDxodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvaGlzdG9yaWNhbC1ub3Rlcy5odG1sI3VwZGF0aW5nLWNvZGU+
YF8uCisgIChgIzMzMTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzMxNz5gXykKKworLSBOb3cgd2hlbiBgYEBweXRlc3QuZml4dHVyZWBgIGlzIGFwcGxpZWQg
bW9yZSB0aGFuIG9uY2UgdG8gdGhlIHNhbWUgZnVuY3Rpb24gYQorICBgYFZhbHVlRXJyb3JgYCBp
cyByYWlzZWQuIFRoaXMgYnVnZ3kgYmVoYXZpb3Igd291bGQgY2F1c2Ugc3VycHJpc2luZyBwcm9i
bGVtcworICBhbmQgaWYgd2FzIHdvcmtpbmcgZm9yIGEgdGVzdCBzdWl0ZSBpdCB3YXMgbW9zdGx5
IGJ5IGFjY2lkZW50LiAoYCMyMzM0CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzIzMzQ+YF8pCisKKy0gU3VwcG9ydCBmb3IgUHl0aG9uIDMuNydzIGJ1aWx0
aW4gYGBicmVha3BvaW50KClgYCBtZXRob2QsIHNlZSBgVXNpbmcgdGhlCisgIGJ1aWx0aW4gYnJl
YWtwb2ludCBmdW5jdGlvbgorICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3Vz
YWdlLmh0bWwjYnJlYWtwb2ludC1idWlsdGluPmBfIGZvcgorICBkZXRhaWxzLiAoYCMzMTgwIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxODA+YF8pCisKKy0g
YGBtb25rZXlwYXRjaGBgIG5vdyBzdXBwb3J0cyBhIGBgY29udGV4dCgpYGAgZnVuY3Rpb24gd2hp
Y2ggYWN0cyBhcyBhIGNvbnRleHQKKyAgbWFuYWdlciB3aGljaCB1bmRvZXMgYWxsIHBhdGNoaW5n
IGRvbmUgd2l0aGluIHRoZSBgYHdpdGhgYCBibG9jay4gKGAjMzI5MAorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjkwPmBfKQorCistIFRoZSBgYC0tcGRi
YGAgb3B0aW9uIG5vdyBjYXVzZXMgS2V5Ym9hcmRJbnRlcnJ1cHQgdG8gZW50ZXIgdGhlIGRlYnVn
Z2VyLAorICBpbnN0ZWFkIG9mIHN0b3BwaW5nIHRoZSB0ZXN0IHNlc3Npb24uIE9uIHB5dGhvbiAy
LjcsIGhpdHRpbmcgQ1RSTCtDIGFnYWluCisgIGV4aXRzIHRoZSBkZWJ1Z2dlci4gT24gcHl0aG9u
IDMuMiBhbmQgaGlnaGVyLCB1c2UgQ1RSTCtELiAoYCMzMjk5CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTk+YF8pCisKKy0gcHl0ZXN0IG5vIGxvbmdl
ciBjaGFuZ2VzIHRoZSBsb2cgbGV2ZWwgb2YgdGhlIHJvb3QgbG9nZ2VyIHdoZW4gdGhlCisgIGBg
bG9nLWxldmVsYGAgcGFyYW1ldGVyIGhhcyBncmVhdGVyIG51bWVyaWMgdmFsdWUgdGhhbiB0aGF0
IG9mIHRoZSBsZXZlbCBvZgorICB0aGUgcm9vdCBsb2dnZXIsIHdoaWNoIG1ha2VzIGl0IHBsYXkg
YmV0dGVyIHdpdGggY3VzdG9tIGxvZ2dpbmcgY29uZmlndXJhdGlvbgorICBpbiB1c2VyIGNvZGUu
IChgIzMzMDcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMw
Nz5gXykKKworCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEEgcmFyZSByYWNlLWNvbmRpdGlv
biB3aGljaCBtaWdodCByZXN1bHQgaW4gY29ycnVwdGVkIGBgLnB5Y2BgIGZpbGVzIG9uCisgIFdp
bmRvd3MgaGFzIGJlZW4gaG9wZWZ1bGx5IHNvbHZlZC4gKGAjMzAwOAorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDA4PmBfKQorCistIEFsc28gdXNlIGl0
ZXJfbWFya2VyIGZvciBkaXNjb3ZlcmluZyB0aGUgbWFya3MgYXBwbHlpbmcgZm9yIG1hcmtlcgor
ICBleHByZXNzaW9ucyBmcm9tIHRoZSBjbGkgdG8gYXZvaWQgdGhlIGJhZCBkYXRhIGZyb20gdGhl
IGxlZ2FjeSBtYXJrIHN0b3JhZ2UuCisgIChgIzM0NDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ0MT5gXykKKworLSBXaGVuIHNob3dpbmcgZGlmZnMgb2Yg
ZmFpbGVkIGFzc2VydGlvbnMgd2hlcmUgdGhlIGNvbnRlbnRzIGNvbnRhaW4gb25seQorICB3aGl0
ZXNwYWNlLCBlc2NhcGUgdGhlbSB1c2luZyBgYHJlcHIoKWBgIGZpcnN0IHRvIG1ha2UgaXQgZWFz
eSB0byBzcG90IHRoZQorICBkaWZmZXJlbmNlcy4gKGAjMzQ0MyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDQzPmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50
YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBDaGFuZ2UgZG9jdW1lbnRhdGlvbiBj
b3B5cmlnaHQgeWVhciB0byBhIHJhbmdlIHdoaWNoIGF1dG8tdXBkYXRlcyBpdHNlbGYgZWFjaAor
ICB0aW1lIGl0IGlzIHB1Ymxpc2hlZC4gKGAjMzMwMworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzAzPmBfKQorCisKK1RyaXZpYWwvSW50ZXJuYWwgQ2hh
bmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gYGBweXRlc3RgYCBub3cgZGVwZW5k
cyBvbiB0aGUgYHB5dGhvbi1hdG9taWN3cml0ZXMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS91bnRp
dGFrZXIvcHl0aG9uLWF0b21pY3dyaXRlcz5gXyBsaWJyYXJ5LiAoYCMzMDA4CisgIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMDg+YF8pCisKKy0gVXBkYXRl
IGFsbCBweXBpLnB5dGhvbi5vcmcgVVJMcyB0byBweXBpLm9yZy4gKGAjMzQzMQorICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDMxPmBfKQorCistIERldGVj
dCBgcHl0ZXN0X2AgcHJlZml4ZWQgaG9va3MgdXNpbmcgdGhlIGludGVybmFsIHBsdWdpbiBtYW5h
Z2VyIHNpbmNlCisgIGBgcGx1Z2d5YGAgaXMgZGVwcmVjYXRpbmcgdGhlIGBgaW1wbHByZWZpeGBg
IGFyZ3VtZW50IHRvIGBgUGx1Z2luTWFuYWdlcmBgLgorICAoYCMzNDg3IDxodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM0ODc+YF8pCisKKy0gSW1wb3J0IGBgTWFw
cGluZ2BgIGFuZCBgYFNlcXVlbmNlYGAgZnJvbSBgYF9weXRlc3QuY29tcGF0YGAgaW5zdGVhZCBv
ZgorICBkaXJlY3RseSBmcm9tIGBgY29sbGVjdGlvbnNgYCBpbiBgYHB5dGhvbl9hcGkucHk6OmFw
cHJveGBgLiBBZGQgYGBNYXBwaW5nYGAKKyAgdG8gYGBfcHl0ZXN0LmNvbXBhdGBgLCBpbXBvcnQg
aXQgZnJvbSBgYGNvbGxlY3Rpb25zYGAgb24gcHl0aG9uIDIsIGJ1dCBmcm9tCisgIGBgY29sbGVj
dGlvbnMuYWJjYGAgb24gUHl0aG9uIDMgdG8gYXZvaWQgYSBgYERlcHJlY2F0aW9uV2FybmluZ2Bg
IG9uIFB5dGhvbgorICAzLjcgb3IgbmV3ZXIuIChgIzM0OTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzQ5Nz5gXykKKworCitweXRlc3QgMy41LjEgKDIwMTgt
MDQtMjMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKworQnVnIEZpeGVzCistLS0tLS0t
LS0KKworLSBSZXNldCBgYHN5cy5sYXN0X3R5cGVgYCwgYGBzeXMubGFzdF92YWx1ZWBgIGFuZCBg
YHN5cy5sYXN0X3RyYWNlYmFja2BgIGJlZm9yZQorICBlYWNoIHRlc3QgZXhlY3V0ZXMuIFRob3Nl
IGF0dHJpYnV0ZXMgYXJlIGFkZGVkIGJ5IHB5dGVzdCBkdXJpbmcgdGhlIHRlc3QgcnVuCisgIHRv
IGFpZCBkZWJ1Z2dpbmcsIGJ1dCB3ZXJlIG5ldmVyIHJlc2V0IHNvIHRoZXkgd291bGQgY3JlYXRl
IGEgbGVha2luZworICByZWZlcmVuY2UgdG8gdGhlIGxhc3QgZmFpbGluZyB0ZXN0J3MgZnJhbWUg
d2hpY2ggaW4gdHVybiBjb3VsZCBuZXZlciBiZQorICByZWNsYWltZWQgYnkgdGhlIGdhcmJhZ2Ug
Y29sbGVjdG9yLiAoYCMyNzk4CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI3OTg+YF8pCisKKy0gYGBweXRlc3QucmFpc2VzYGAgbm93IHJhaXNlcyBgYFR5
cGVFcnJvcmBgIHdoZW4gcmVjZWl2aW5nIGFuIHVua25vd24ga2V5d29yZAorICBhcmd1bWVudC4g
KGAjMzM0OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzQ4
PmBfKQorCistIGBgcHl0ZXN0LnJhaXNlc2BgIG5vdyB3b3JrcyB3aXRoIGV4Y2VwdGlvbiBjbGFz
c2VzIHRoYXQgbG9vayBsaWtlIGl0ZXJhYmxlcy4KKyAgKGAjMzM3MiA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzcyPmBfKQorCisKK0ltcHJvdmVkIERvY3Vt
ZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXggdHlwbyBpbiBgYGNhcGxv
Z2BgIGZpeHR1cmUgZG9jdW1lbnRhdGlvbiwgd2hpY2ggaW5jb3JyZWN0bHkgaWRlbnRpZmllZAor
ICBjZXJ0YWluIGF0dHJpYnV0ZXMgYXMgbWV0aG9kcy4gKGAjMzQwNgorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zNDA2PmBfKQorCisKK1RyaXZpYWwvSW50
ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQWRkZWQgYSBtb3Jl
IGluZGljYXRpdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHBhcmFtZXRyaXppbmcgYSBmdW5jdGlvbiB3
aG9zZQorICBhcmd1bWVudCB0YWtlcyBhIGRlZmF1bHQgdmFsdWUuIChgIzMyMjEKKyAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIyMT5gXykKKworLSBSZW1v
dmUgaW50ZXJuYWwgYGBfcHl0ZXN0LnRlcm1pbmFsLmZsYXR0ZW5gYCBmdW5jdGlvbiBpbiBmYXZv
ciBvZgorICBgYG1vcmVfaXRlcnRvb2xzLmNvbGxhcHNlYGAuIChgIzMzMzAKKyAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMzMD5gXykKKworLSBJbXBvcnQg
c29tZSBtb2R1bGVzIGZyb20gYGBjb2xsZWN0aW9ucy5hYmNgYCBpbnN0ZWFkIG9mIGBgY29sbGVj
dGlvbnNgYCBhcworICB0aGUgZm9ybWVyIG1vZHVsZXMgdHJpZ2dlciBgYERlcHJlY2F0aW9uV2Fy
bmluZ2BgIGluIFB5dGhvbiAzLjcuIChgIzMzMzkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMzOT5gXykKKworLSByZWNvcmRfcHJvcGVydHkgaXMgbm8g
bG9uZ2VyIGV4cGVyaW1lbnRhbCwgcmVtb3ZpbmcgdGhlIHdhcm5pbmdzIHdhcworICBmb3Jnb3R0
ZW4uIChgIzMzNjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzM2MD5gXykKKworLSBNZW50aW9uIGluIGRvY3VtZW50YXRpb24gYW5kIENMSSBoZWxwIHRoYXQg
Zml4dHVyZXMgd2l0aCBsZWFkaW5nIGBgX2BgIGFyZQorICBwcmludGVkIGJ5IGBgcHl0ZXN0IC0t
Zml4dHVyZXNgYCBvbmx5IGlmIHRoZSBgYC12YGAgb3B0aW9uIGlzIGFkZGVkLiAoYCMzMzk4Cisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzOTg+YF8pCisK
KworcHl0ZXN0IDMuNS4wICgyMDE4LTAzLTIxKQorPT09PT09PT09PT09PT09PT09PT09PT09PQor
CitEZXByZWNhdGlvbnMgYW5kIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gYGByZWNvcmRfeG1sX3Byb3BlcnR5YGAgZml4dHVyZSBpcyBub3cgZGVwcmVjYXRlZCBpbiBm
YXZvciBvZiB0aGUgbW9yZQorICBnZW5lcmljIGBgcmVjb3JkX3Byb3BlcnR5YGAuIChgIzI3NzAK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjc3MD5gXykK
KworLSBEZWZpbmluZyBgYHB5dGVzdF9wbHVnaW5zYGAgaXMgbm93IGRlcHJlY2F0ZWQgaW4gbm9u
LXRvcC1sZXZlbCBjb25mdGVzdC5weQorICBmaWxlcywgYmVjYXVzZSB0aGV5ICJsZWFrIiB0byB0
aGUgZW50aXJlIGRpcmVjdG9yeSB0cmVlLiBgU2VlIHRoZSBkb2NzIDxodHRwczovL2RvY3MucHl0
ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjcHl0ZXN0LXBsdWdpbnMtaW4tbm9u
LXRvcC1sZXZlbC1jb25mdGVzdC1maWxlcz5gXyBmb3IgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhp
cyBkZWNpc2lvbiAoYCMzMDg0CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMwODQ+YF8pCisKKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gTmV3IGBgLS1z
aG93LWNhcHR1cmVgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRoYXQgYWxsb3dzIHRvIHNwZWNpZnkg
aG93IHRvCisgIGRpc3BsYXkgY2FwdHVyZWQgb3V0cHV0IHdoZW4gdGVzdHMgZmFpbDogYGBub2Bg
LCBgYHN0ZG91dGBgLCBgYHN0ZGVycmBgLAorICBgYGxvZ2BgIG9yIGBgYWxsYGAgKHRoZSBkZWZh
dWx0KS4gKGAjMTQ3OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNDc4PmBfKQorCistIE5ldyBgYC0tcm9vdGRpcmBgIGNvbW1hbmQtbGluZSBvcHRpb24g
dG8gb3ZlcnJpZGUgdGhlIHJ1bGVzIGZvciBkaXNjb3ZlcmluZworICB0aGUgcm9vdCBkaXJlY3Rv
cnkuIFNlZSBgY3VzdG9taXplCisgIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
Y3VzdG9taXplLmh0bWw+YF8gaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yCisgIGRldGFpbHMuIChg
IzE2NDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTY0Mj5g
XykKKworLSBGaXh0dXJlcyBhcmUgbm93IGluc3RhbnRpYXRlZCBiYXNlZCBvbiB0aGVpciBzY29w
ZXMsIHdpdGggaGlnaGVyLXNjb3BlZAorICBmaXh0dXJlcyAoc3VjaCBhcyBgYHNlc3Npb25gYCkg
YmVpbmcgaW5zdGFudGlhdGVkIGZpcnN0IHRoYW4gbG93ZXItc2NvcGVkCisgIGZpeHR1cmVzIChz
dWNoIGFzIGBgZnVuY3Rpb25gYCkuIFRoZSByZWxhdGl2ZSBvcmRlciBvZiBmaXh0dXJlcyBvZiB0
aGUgc2FtZQorICBzY29wZSBpcyBrZXB0IHVuY2hhbmdlZCwgYmFzZWQgaW4gdGhlaXIgZGVjbGFy
YXRpb24gb3JkZXIgYW5kIHRoZWlyCisgIGRlcGVuZGVuY2llcy4gKGAjMjQwNSA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDA1PmBfKQorCistIGBgcmVjb3Jk
X3htbF9wcm9wZXJ0eWBgIHJlbmFtZWQgdG8gYGByZWNvcmRfcHJvcGVydHlgYCBhbmQgaXMgbm93
IGNvbXBhdGlibGUKKyAgd2l0aCB4ZGlzdCwgbWFya2VycyBhbmQgYW55IHJlcG9ydGVyLiBgYHJl
Y29yZF94bWxfcHJvcGVydHlgYCBuYW1lIGlzIG5vdworICBkZXByZWNhdGVkLiAoYCMyNzcwIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NzA+YF8pCisKKy0g
TmV3IGBgLS1uZmBgLCBgYC0tbmV3LWZpcnN0YGAgb3B0aW9uczogcnVuIG5ldyB0ZXN0cyBmaXJz
dCBmb2xsb3dlZCBieSB0aGUKKyAgcmVzdCBvZiB0aGUgdGVzdHMsIGluIGJvdGggY2FzZXMgdGVz
dHMgYXJlIGFsc28gc29ydGVkIGJ5IHRoZSBmaWxlIG1vZGlmaWVkCisgIHRpbWUsIHdpdGggbW9y
ZSByZWNlbnQgZmlsZXMgY29taW5nIGZpcnN0LiAoYCMzMDM0CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMzQ+YF8pCisKKy0gTmV3IGBgLS1sYXN0LWZh
aWxlZC1uby1mYWlsdXJlc2BgIGNvbW1hbmQtbGluZSBvcHRpb24gdGhhdCBhbGxvd3MgdG8gc3Bl
Y2lmeQorICB0aGUgYmVoYXZpb3Igb2YgdGhlIGNhY2hlIHBsdWdpbidzIGBgYC0tbGFzdC1mYWls
ZWRgYCBmZWF0dXJlIHdoZW4gbm8gdGVzdHMKKyAgZmFpbGVkIGluIHRoZSBsYXN0IHJ1biAob3Ig
bm8gY2FjaGUgd2FzIGZvdW5kKTogYGBub25lYGAgb3IgYGBhbGxgYCAodGhlCisgIGRlZmF1bHQp
LiAoYCMzMTM5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMx
Mzk+YF8pCisKKy0gTmV3IGBgLS1kb2N0ZXN0LWNvbnRpbnVlLW9uLWZhaWx1cmVgYCBjb21tYW5k
LWxpbmUgb3B0aW9uIHRvIGVuYWJsZSBkb2N0ZXN0cworICB0byBzaG93IG11bHRpcGxlIGZhaWx1
cmVzIGZvciBlYWNoIHNuaXBwZXQsIGluc3RlYWQgb2Ygc3RvcHBpbmcgYXQgdGhlIGZpcnN0Cisg
IGZhaWx1cmUuIChgIzMxNDkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzE0OT5gXykKKworLSBDYXB0dXJlZCBsb2cgbWVzc2FnZXMgYXJlIGFkZGVkIHRvIHRo
ZSBgYDxzeXN0ZW0tb3V0PmBgIHRhZyBpbiB0aGUgZ2VuZXJhdGVkCisgIGp1bml0IHhtbCBmaWxl
IGlmIHRoZSBgYGp1bml0X2xvZ2dpbmdgYCBpbmkgb3B0aW9uIGlzIHNldCB0byBgYHN5c3RlbS1v
dXRgYC4KKyAgSWYgdGhlIHZhbHVlIG9mIHRoaXMgaW5pIG9wdGlvbiBpcyBgYHN5c3RlbS1lcnJg
YCwgdGhlIGxvZ3MgYXJlIHdyaXR0ZW4gdG8KKyAgYGA8c3lzdGVtLWVycj5gYC4gVGhlIGRlZmF1
bHQgdmFsdWUgZm9yIGBganVuaXRfbG9nZ2luZ2BgIGlzIGBgbm9gYCwgbWVhbmluZworICBjYXB0
dXJlZCBsb2dzIGFyZSBub3Qgd3JpdHRlbiB0byB0aGUgb3V0cHV0IGZpbGUuIChgIzMxNTYKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE1Nj5gXykKKwor
LSBBbGxvdyB0aGUgbG9nZ2luZyBwbHVnaW4gdG8gaGFuZGxlIGBgcHl0ZXN0X3J1bnRlc3RfbG9n
c3RhcnRgYCBhbmQKKyAgYGBweXRlc3RfcnVudGVzdF9sb2dmaW5pc2hgYCBob29rcyB3aGVuIGxp
dmUgbG9ncyBhcmUgZW5hYmxlZC4gKGAjMzE4OQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTg5PmBfKQorCistIFBhc3NpbmcgYGAtLWxvZy1jbGktbGV2
ZWxgYCBpbiB0aGUgY29tbWFuZC1saW5lIG5vdyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlcworICBs
aXZlIGxvZ2dpbmcuIChgIzMxOTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMzE5MD5gXykKKworLSBBZGQgY29tbWFuZCBsaW5lIG9wdGlvbiBgYC0tZGVzZWxl
Y3RgYCB0byBhbGxvdyBkZXNlbGVjdGlvbiBvZiBpbmRpdmlkdWFsCisgIHRlc3RzIGF0IGNvbGxl
Y3Rpb24gdGltZS4gKGAjMzE5OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8zMTk4PmBfKQorCistIENhcHR1cmVkIGxvZ3MgYXJlIHByaW50ZWQgYmVmb3Jl
IGVudGVyaW5nIHBkYi4gKGAjMzIwNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zMjA0PmBfKQorCistIERlc2VsZWN0ZWQgaXRlbSBjb3VudCBpcyBub3cg
c2hvd24gYmVmb3JlIHRlc3RzIGFyZSBydW4sIGUuZy4gYGBjb2xsZWN0ZWQgWAorICBpdGVtcyAv
IFkgZGVzZWxlY3RlZGBgLiAoYCMzMjEzCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzMyMTM+YF8pCisKKy0gVGhlIGJ1aWx0aW4gbW9kdWxlIGBgcGxhdGZv
cm1gYCBpcyBub3cgYXZhaWxhYmxlIGZvciB1c2UgaW4gZXhwcmVzc2lvbnMgaW4KKyAgYGBweXRl
c3QubWFya2BgLiAoYCMzMjM2CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMyMzY+YF8pCisKKy0gVGhlICpzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyogc2Vj
dGlvbiBub3cgaXMgZGlzcGxheWVkIGFmdGVyIHRyYWNlYmFja3MgYW5kCisgIHdhcm5pbmdzIGlu
IHRoZSB0ZXJtaW5hbC4gKGAjMzI1NQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8zMjU1PmBfKQorCistIE5ldyBgYC0tdmVyYm9zaXR5YGAgZmxhZyB0byBz
ZXQgdmVyYm9zaXR5IGxldmVsIGV4cGxpY2l0bHkuIChgIzMyOTYKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI5Nj5gXykKKworLSBgYHB5dGVzdC5hcHBy
b3hgYCBub3cgYWNjZXB0cyBjb21wYXJpbmcgYSBudW1weSBhcnJheSB3aXRoIGEgc2NhbGFyLiAo
YCMzMzEyCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMz
MTI+YF8pCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBTdXBwcmVzcyBgYElPRXJyb3Jg
YCB3aGVuIGNsb3NpbmcgdGhlIHRlbXBvcmFyeSBmaWxlIHVzZWQgZm9yIGNhcHR1cmluZworICBz
dHJlYW1zIGluIFB5dGhvbiAyLjcuIChgIzIzNzAKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjM3MD5gXykKKworLSBGaXhlZCBgYGNsZWFyKClgYCBtZXRo
b2Qgb24gYGBjYXBsb2dgYCBmaXh0dXJlIHdoaWNoIGNsZWFyZWQgYGByZWNvcmRzYGAsIGJ1dAor
ICBub3QgdGhlIGBgdGV4dGBgIHByb3BlcnR5LiAoYCMzMjk3CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTc+YF8pCisKKy0gRHVyaW5nIHRlc3QgY29s
bGVjdGlvbiwgd2hlbiBzdGRpbiBpcyBub3QgYWxsb3dlZCB0byBiZSByZWFkLCB0aGUKKyAgYGBE
b250UmVhZEZyb21TdGRpbmBgIG9iamVjdCBzdGlsbCBhbGxvdyBpdHNlbGYgdG8gYmUgaXRlcmFi
bGUgYW5kIHJlc29sdmVkCisgIHRvIGFuIGl0ZXJhdG9yIHdpdGhvdXQgY3Jhc2hpbmcuIChgIzMz
MTQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzMxND5g
XykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gQWRkZWQgYSBgcmVmZXJlbmNlIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUv
cmVmZXJlbmNlLmh0bWw+YF8gcGFnZQorICB0byB0aGUgZG9jcy4gKGAjMTcxMyA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNzEzPmBfKQorCisKK1RyaXZpYWwv
SW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQ2hhbmdlIG1p
bmltdW0gcmVxdWlyZW1lbnQgb2YgYGBhdHRyc2BgIHRvIGBgMTcuNC4wYGAuIChgIzMyMjgKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIyOD5gXykKKwor
LSBSZW5hbWVkIGV4YW1wbGUgZGlyZWN0b3JpZXMgc28gYWxsIHRlc3RzIHBhc3Mgd2hlbiByYW4g
ZnJvbSB0aGUgYmFzZQorICBkaXJlY3RvcnkuIChgIzMyNDUgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI0NT5gXykKKworLSBJbnRlcm5hbCBgYG1hcmsucHlg
YCBtb2R1bGUgaGFzIGJlZW4gdHVybmVkIGludG8gYSBwYWNrYWdlLiAoYCMzMjUwCisgIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNTA+YF8pCisKKy0gYGBw
eXRlc3RgYCBub3cgZGVwZW5kcyBvbiB0aGUgYG1vcmUtaXRlcnRvb2xzCisgIDxodHRwczovL2dp
dGh1Yi5jb20vZXJpa3Jvc2UvbW9yZS1pdGVydG9vbHM+YF8gcGFja2FnZS4gKGAjMzI2NQorICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjY1PmBfKQorCist
IEFkZGVkIHdhcm5pbmcgd2hlbiBgYFtweXRlc3RdYGAgc2VjdGlvbiBpcyB1c2VkIGluIGEgYGAu
Y2ZnYGAgZmlsZSBwYXNzZWQKKyAgd2l0aCBgYC1jYGAgKGAjMzI2OCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjY4PmBfKQorCistIGBgbm9kZWlkc2BgIGNh
biBub3cgYmUgcGFzc2VkIGV4cGxpY2l0bHkgdG8gYGBGU0NvbGxlY3RvcmBgIGFuZCBgYE5vZGVg
YAorICBjb25zdHJ1Y3RvcnMuIChgIzMyOTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzI5MT5gXykKKworLSBJbnRlcm5hbCByZWZhY3RvcmluZyBvZiBgYEZv
cm1hdHRlZEV4Y2luZm9gYCB0byB1c2UgYGBhdHRyc2BgIGZhY2lsaXRpZXMgYW5kCisgIHJlbW92
ZSBvbGQgc3VwcG9ydCBjb2RlIGZvciBsZWdhY3kgUHl0aG9uIHZlcnNpb25zLiAoYCMzMjkyCisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyOTI+YF8pCisK
Ky0gUmVmYWN0b3JpbmcgdG8gdW5pZnkgaG93IHZlcmJvc2l0eSBpcyBoYW5kbGVkIGludGVybmFs
bHkuIChgIzMyOTYKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMzI5Nj5gXykKKworLSBJbnRlcm5hbCByZWZhY3RvcmluZyB0byBiZXR0ZXIgaW50ZWdyYXRl
IHdpdGggYXJncGFyc2UuIChgIzMzMDQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzMwND5gXykKKworLSBGaXggYSBweXRob24gZXhhbXBsZSB3aGVuIGNh
bGxpbmcgYSBmaXh0dXJlIGluIGRvYy9lbi91c2FnZS5yc3QgKGAjMzMwOAorICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzA4PmBfKQorCisKK3B5dGVzdCAz
LjQuMiAoMjAxOC0wMy0wNCkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVz
CistLS0tLS0tLS0KKworLSBSZW1vdmVkIHByb2dyZXNzIGluZm9ybWF0aW9uIHdoZW4gY2FwdHVy
ZSBvcHRpb24gaXMgYGBub2BgLiAoYCMzMjAzCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzMyMDM+YF8pCisKKy0gUmVmYWN0b3IgY2hlY2sgb2YgYmluZGly
IGZyb20gYGBleGlzdHNgYCB0byBgYGlzZGlyYGAuIChgIzMyNDEKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzI0MT5gXykKKworLSBGaXggYGBUeXBlRXJy
b3JgYCBpc3N1ZSB3aGVuIHVzaW5nIGBgYXBwcm94YGAgd2l0aCBhIGBgRGVjaW1hbGBgIHZhbHVl
LgorICAoYCMzMjQ3IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzMyNDc+YF8pCisKKy0gRml4IHJlZmVyZW5jZSBjeWNsZSBnZW5lcmF0ZWQgd2hlbiB1c2luZyB0
aGUgYGByZXF1ZXN0YGAgZml4dHVyZS4gKGAjMzI0OQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjQ5PmBfKQorCistIGBgW3Rvb2w6cHl0ZXN0XWBgIHNl
Y3Rpb25zIGluIGBgKi5jZmdgYCBmaWxlcyBwYXNzZWQgYnkgdGhlIGBgLWNgYCBvcHRpb24gYXJl
CisgIG5vdyBwcm9wZXJseSByZWNvZ25pemVkLiAoYCMzMjYwCisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMyNjA+YF8pCisKKworSW1wcm92ZWQgRG9jdW1l
bnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEFkZCBsb2dnaW5nIHBsdWdpbiB0
byBwbHVnaW5zIGxpc3QuIChgIzMyMDkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMzIwOT5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEZpeCBtaW5vciB0eXBvIGluIGZpeHR1cmUucnN0
IChgIzMyNTkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MzI1OT5gXykKKworCitweXRlc3QgMy40LjEgKDIwMTgtMDItMjApCis9PT09PT09PT09PT09PT09
PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gTW92ZSBpbXBvcnQgb2YgYGBk
b2N0ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb25gYCB0byB0b3AtbGV2ZWwgdG8gYXZvaWQgcG9zc2li
bGUKKyAgZXJyb3JzIHdoZW4gdXNpbmcgYGAtLXBkYmBgLiAoYCMxODEwCisgIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4MTA+YF8pCisKKy0gQWRkZWQgcHJp
bnRpbmcgb2YgY2FwdHVyZWQgc3Rkb3V0L3N0ZGVyciBiZWZvcmUgZW50ZXJpbmcgcGRiLCBhbmQg
aW1wcm92ZWQgYQorICB0ZXN0IHdoaWNoIHdhcyBnaXZpbmcgZmFsc2UgbmVnYXRpdmVzIGFib3V0
IG91dHB1dCBjYXB0dXJpbmcuIChgIzMwNTIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMzA1Mj5gXykKKworLSBGaXggb3JkZXJpbmcgb2YgdGVzdHMgdXNp
bmcgcGFyYW1ldHJpemVkIGZpeHR1cmVzIHdoaWNoIGNhbiBsZWFkIHRvIGZpeHR1cmVzCisgIGJl
aW5nIGNyZWF0ZWQgbW9yZSB0aGFuIG5lY2Vzc2FyeS4gKGAjMzE2MQorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTYxPmBfKQorCistIEZpeCBidWcgd2hl
cmUgbG9nZ2luZyBoYXBwZW5pbmcgYXQgaG9va3Mgb3V0c2lkZSBvZiAidGVzdCBydW4iIGhvb2tz
IHdvdWxkCisgIGNhdXNlIGFuIGludGVybmFsIGVycm9yLiAoYCMzMTg0CisgIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMxODQ+YF8pCisKKy0gRGV0ZWN0IGFy
Z3VtZW50cyBpbmplY3RlZCBieSBgYHVuaXR0ZXN0Lm1vY2sucGF0Y2hgYCBkZWNvcmF0b3IgY29y
cmVjdGx5IHdoZW4KKyAgcHlwaSBgYG1vY2sucGF0Y2hgYCBpcyBpbnN0YWxsZWQgYW5kIGltcG9y
dGVkLiAoYCMzMjA2CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzMyMDY+YF8pCisKKy0gRXJyb3JzIHNob3duIHdoZW4gYSBgYHB5dGVzdC5yYWlzZXMoKWBg
IHdpdGggYGBtYXRjaD1gYCBmYWlscyBhcmUgbm93IGNsZWFuZXIKKyAgb24gd2hhdCBoYXBwZW5l
ZDogV2hlbiBubyBleGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlICJtYXRjaGluZyAnLi4uJyIgcGFy
dCBnb3QKKyAgcmVtb3ZlZCBhcyBpdCBmYWxzZWx5IGltcGxpZXMgdGhhdCBhbiBleGNlcHRpb24g
d2FzIHJhaXNlZCBidXQgaXQgZGlkbid0CisgIG1hdGNoLiBXaGVuIGEgd3JvbmcgZXhjZXB0aW9u
IHdhcyByYWlzZWQsIGl0J3Mgbm93IHRocm93biAobGlrZQorICBgYHB5dGVzdC5yYWlzZWQoKWBg
IHdpdGhvdXQgYGBtYXRjaD1gYCB3b3VsZCkgaW5zdGVhZCBvZiBjb21wbGFpbmluZyBhYm91dAor
ICB0aGUgdW5tYXRjaGVkIHRleHQuIChgIzMyMjIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzIyMj5gXykKKworLSBGaXhlZCBvdXRwdXQgY2FwdHVyZSBo
YW5kbGluZyBpbiBkb2N0ZXN0cyBvbiBtYWNPUy4gKGAjOTg1CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzk4NT5gXykKKworCitJbXByb3ZlZCBEb2N1bWVu
dGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQWRkIFNwaGlueCBwYXJhbWV0ZXIg
ZG9jcyBmb3IgYGBtYXRjaGBgIGFuZCBgYG1lc3NhZ2VgYCBhcmdzIHRvCisgIGBgcHl0ZXN0LnJh
aXNlc2BgLiAoYCMzMjAyCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMyMDI+YF8pCisKKworVHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworLSBweXRlc3QgaGFzIGNoYW5nZWQgdGhlIHB1YmxpY2F0aW9uIHBy
b2NlZHVyZSBhbmQgaXMgbm93IGJlaW5nIHB1Ymxpc2hlZCB0bworICBQeVBJIGRpcmVjdGx5IGZy
b20gVHJhdmlzLiAoYCMzMDYwCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMwNjA+YF8pCisKKy0gUmVuYW1lIGBgUGFyYW1ldGVyU2V0Ll9mb3JfcGFyYW1l
dGVyaXplKClgYCB0byBgYF9mb3JfcGFyYW1ldHJpemUoKWBgIGluCisgIG9yZGVyIHRvIGNvbXBs
eSB3aXRoIHRoZSBuYW1pbmcgY29udmVudGlvbi4gKGAjMzE2NgorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTY2PmBfKQorCistIFNraXAgZmFpbGluZyBw
ZGIvZG9jdGVzdCB0ZXN0IG9uIG1hYy4gKGAjOTg1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzk4NT5gXykKKworCitweXRlc3QgMy40LjAgKDIwMTgtMDEt
MzApCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RlcHJlY2F0aW9ucyBhbmQgUmVtb3Zh
bHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBBbGwgcHl0ZXN0IGNsYXNzZXMgbm93
IHN1YmNsYXNzIGBgb2JqZWN0YGAgZm9yIGJldHRlciBQeXRob24gMi8zIGNvbXBhdGliaWxpdHku
CisgIFRoaXMgc2hvdWxkIG5vdCBhZmZlY3QgdXNlciBjb2RlIGV4Y2VwdCBpbiB2ZXJ5IHJhcmUg
ZWRnZSBjYXNlcy4gKGAjMjE0NworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yMTQ3PmBfKQorCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIEludHJvZHVj
ZSBgYGVtcHR5X3BhcmFtZXRlcl9zZXRfbWFya2BgIGluaSBvcHRpb24gdG8gc2VsZWN0IHdoaWNo
IG1hcmsgdG8KKyAgYXBwbHkgd2hlbiBgYEBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgIGlzIGdp
dmVuIGFuIGVtcHR5IHNldCBvZiBwYXJhbWV0ZXJzLgorICBWYWxpZCBvcHRpb25zIGFyZSBgYHNr
aXBgYCAoZGVmYXVsdCkgYW5kIGBgeGZhaWxgYC4gTm90ZSB0aGF0IGl0IGlzIHBsYW5uZWQKKyAg
dG8gY2hhbmdlIHRoZSBkZWZhdWx0IHRvIGBgeGZhaWxgYCBpbiBmdXR1cmUgcmVsZWFzZXMgYXMg
dGhpcyBpcyBjb25zaWRlcmVkCisgIGxlc3MgZXJyb3IgcHJvbmUuIChgIzI1MjcKKyAgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjUyNz5gXykKKworLSAqKklu
Y29tcGF0aWJsZSBjaGFuZ2UqKjogYWZ0ZXIgY29tbXVuaXR5IGZlZWRiYWNrIHRoZSBgbG9nZ2lu
ZworICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2xvZ2dpbmcuaHRtbD5gXyBm
dW5jdGlvbmFsaXR5IGhhcworICB1bmRlcmdvbmUgc29tZSBjaGFuZ2VzLiBQbGVhc2UgY29uc3Vs
dCB0aGUgYGxvZ2dpbmcgZG9jdW1lbnRhdGlvbgorICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL2xvZ2dpbmcuaHRtbCNpbmNvbXBhdGlibGUtY2hhbmdlcy1pbi1weXRlc3QtMy00
PmBfCisgIGZvciBkZXRhaWxzLiAoYCMzMDEzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzMwMTM+YF8pCisKKy0gQ29uc29sZSBvdXRwdXQgZmFsbHMgYmFjayB0
byAiY2xhc3NpYyIgbW9kZSB3aGVuIGNhcHR1cmluZyBpcyBkaXNhYmxlZCAoYGAtc2BgKSwKKyAg
b3RoZXJ3aXNlIHRoZSBvdXRwdXQgZ2V0cyBnYXJibGVkIHRvIHRoZSBwb2ludCBvZiBiZWluZyB1
c2VsZXNzLiAoYCMzMDM4CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzMwMzg+YF8pCisKKy0gTmV3IGBweXRlc3RfcnVudGVzdF9sb2dmaW5pc2gKKyAgPGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNfcHl0ZXN0Lmhv
b2tzcGVjLnB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaD5gXworICBob29rIHdoaWNoIGlzIGNhbGxl
ZCB3aGVuIGEgdGVzdCBpdGVtIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcsIGFuYWxvZ291cyB0bwor
ICBgcHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQKKyAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2Vu
L3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNfcHl0ZXN0Lmhvb2tzcGVjLnB5dGVzdF9ydW50ZXN0X2xv
Z3N0YXJ0PmBfLgorICAoYCMzMTAxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzMxMDE+YF8pCisKKy0gSW1wcm92ZSBwZXJmb3JtYW5jZSB3aGVuIGNvbGxlY3Rp
bmcgdGVzdHMgdXNpbmcgbWFueSBmaXh0dXJlcy4gKGAjMzEwNworICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTA3PmBfKQorCistIE5ldyBgYGNhcGxvZy5n
ZXRfcmVjb3Jkcyh3aGVuKWBgIG1ldGhvZCB3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGNh
cHR1cmVkCisgIHJlY29yZHMgZm9yIHRoZSBgYCJzZXR1cCJgYCwgYGAiY2FsbCJgYCBhbmQgYGAi
dGVhcmRvd24iYGAKKyAgdGVzdGluZyBzdGFnZXMuIChgIzMxMTcgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzExNz5gXykKKworLSBOZXcgZml4dHVyZSBgYHJl
Y29yZF94bWxfYXR0cmlidXRlYGAgdGhhdCBhbGxvd3MgbW9kaWZ5aW5nIGFuZCBpbnNlcnRpbmcK
KyAgYXR0cmlidXRlcyBvbiB0aGUgYGA8dGVzdGNhc2U+YGAgeG1sIG5vZGUgaW4gSlVuaXQgcmVw
b3J0cy4gKGAjMzEzMAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8zMTMwPmBfKQorCistIFRoZSBkZWZhdWx0IGNhY2hlIGRpcmVjdG9yeSBoYXMgYmVlbiBy
ZW5hbWVkIGZyb20gYGAuY2FjaGVgYCB0bworICBgYC5weXRlc3RfY2FjaGVgYCBhZnRlciBjb21t
dW5pdHkgZmVlZGJhY2sgdGhhdCB0aGUgbmFtZSBgYC5jYWNoZWBgIGRpZCBub3QKKyAgbWFrZSBp
dCBjbGVhciB0aGF0IGl0IHdhcyB1c2VkIGJ5IHB5dGVzdC4gKGAjMzEzOAorICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTM4PmBfKQorCistIENvbG9yaXpl
IHRoZSBsZXZlbG5hbWUgY29sdW1uIGluIHRoZSBsaXZlLWxvZyBvdXRwdXQuIChgIzMxNDIKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzE0Mj5gXykKKwor
CitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEZpeCBoYW5naW5nIHBleHBlY3QgdGVzdCBvbiBN
YWNPUyBieSB1c2luZyBmbHVzaCgpIGluc3RlYWQgb2Ygd2FpdCgpLgorICAoYCMyMDIyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwMjI+YF8pCisKKy0gRml4
IHJlc3RvcmluZyBQeXRob24gc3RhdGUgYWZ0ZXIgaW4tcHJvY2VzcyBweXRlc3QgcnVucyB3aXRo
IHRoZQorICBgYHB5dGVzdGVyYGAgcGx1Z2luOyB0aGlzIG1heSBicmVhayB0ZXN0cyB1c2luZyBt
dWx0aXBsZSBpbnByb2Nlc3MKKyAgcHl0ZXN0IHJ1bnMgaWYgbGF0ZXIgb25lcyBkZXBlbmQgb24g
ZWFybGllciBvbmVzIGxlYWtpbmcgZ2xvYmFsIGludGVycHJldGVyCisgIGNoYW5nZXMuIChgIzMw
MTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzAxNj5gXykK
KworLSBGaXggc2tpcHBpbmcgcGx1Z2luIHJlcG9ydGluZyBob29rIHdoZW4gdGVzdCBhYm9ydGVk
IGJlZm9yZSBwbHVnaW4gc2V0dXAKKyAgaG9vay4gKGAjMzA3NCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDc0PmBfKQorCistIEZpeCBwcm9ncmVzcyBwZXJj
ZW50YWdlIHJlcG9ydGVkIHdoZW4gdGVzdHMgZmFpbCBkdXJpbmcgdGVhcmRvd24uIChgIzMwODgK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA4OD5gXykK
KworLSAqKkluY29tcGF0aWJsZSBjaGFuZ2UqKjogYGAtby8tLW92ZXJyaWRlYGAgb3B0aW9uIG5v
IGxvbmdlciBlYXRzIGFsbCB0aGUKKyAgcmVtYWluaW5nIG9wdGlvbnMsIHdoaWNoIGNhbiBsZWFk
IHRvIHN1cnByaXNpbmcgYmVoYXZpb3I6IGZvciBleGFtcGxlLAorICBgYHB5dGVzdCAtbyBmb289
MSAvcGF0aC90by90ZXN0LnB5YGAgd291bGQgZmFpbCBiZWNhdXNlIGBgL3BhdGgvdG8vdGVzdC5w
eWBgCisgIHdvdWxkIGJlIGNvbnNpZGVyZWQgYXMgcGFydCBvZiB0aGUgYGAtb2BgIGNvbW1hbmQt
bGluZSBhcmd1bWVudC4gT25lCisgIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBub3cgbXVs
dGlwbGUgY29uZmlndXJhdGlvbiBvdmVycmlkZXMgbmVlZAorICBtdWx0aXBsZSBgYC1vYGAgZmxh
Z3M6IGBgcHl0ZXN0IC1vIGZvbz0xIC1vIGJhcj0yYGAuIChgIzMxMDMKKyAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEwMz5gXykKKworCitJbXByb3ZlZCBE
b2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gRG9jdW1lbnQgaG9va3Mg
KGRlZmluZWQgd2l0aCBgYGhpc3RvcmljPVRydWVgYCkgd2hpY2ggY2Fubm90IGJlIHVzZWQgd2l0
aAorICBgYGhvb2t3cmFwcGVyPVRydWVgYC4gKGAjMjQyMworICA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDIzPmBfKQorCistIENsYXJpZnkgdGhhdCB3YXJu
aW5nIGNhcHR1cmluZyBkb2Vzbid0IGNoYW5nZSB0aGUgd2FybmluZyBmaWx0ZXIgYnkgZGVmYXVs
dC4KKyAgKGAjMjQ1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yNDU3PmBfKQorCistIENsYXJpZnkgYSBwb3NzaWJsZSBjb25mdXNpb24gd2hlbiB1c2luZyBw
eXRlc3RfZml4dHVyZV9zZXR1cCB3aXRoIGZpeHR1cmUKKyAgZnVuY3Rpb25zIHRoYXQgcmV0dXJu
IE5vbmUuIChgIzI2OTgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjY5OD5gXykKKworLSBGaXggdGhlIHdvcmRpbmcgb2YgYSBzZW50ZW5jZSBvbiBkb2N0
ZXN0IGZsYWdzIHVzZWQgaW4gcHl0ZXN0LiAoYCMzMDc2CisgIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwNzY+YF8pCisKKy0gUHJlZmVyIGBgaHR0cHM6Ly8q
LnJlYWR0aGVkb2NzLmlvYGAgb3ZlciBgYGh0dHA6Ly8qLnJ0ZmQub3JnYGAgZm9yIGxpbmtzIGlu
CisgIHRoZSBkb2N1bWVudGF0aW9uLiAoYCMzMDkyCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwOTI+YF8pCisKKy0gSW1wcm92ZSByZWFkYWJpbGl0eSAo
d29yZGluZywgZ3JhbW1hcikgb2YgR2V0dGluZyBTdGFydGVkIGd1aWRlIChgIzMxMzEKKyAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzEzMT5gXykKKworLSBB
ZGRlZCBub3RlIHRoYXQgY2FsbGluZyBweXRlc3QubWFpbiBtdWx0aXBsZSB0aW1lcyBmcm9tIHRo
ZSBzYW1lIHByb2Nlc3MgaXMKKyAgbm90IHJlY29tbWVuZGVkIGJlY2F1c2Ugb2YgaW1wb3J0IGNh
Y2hpbmcuIChgIzMxNDMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMzE0Mz5gXykKKworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCistIFNob3cgYSBzaW1wbGUgYW5kIGVhc3kgZXJyb3Igd2hlbiBrZXl3
b3JkIGV4cHJlc3Npb25zIHRyaWdnZXIgYSBzeW50YXggZXJyb3IKKyAgKGZvciBleGFtcGxlLCBg
YCItayBmb28gYW5kIGltcG9ydCJgYCB3aWxsIHNob3cgYW4gZXJyb3IgdGhhdCB5b3UgY2FuIG5v
dCB1c2UKKyAgdGhlIGBgaW1wb3J0YGAga2V5d29yZCBpbiBleHByZXNzaW9ucykuIChgIzI5NTMK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk1Mz5gXykK
KworLSBDaGFuZ2UgcGFyYW1ldHJpemVkIGF1dG9tYXRpYyB0ZXN0IGlkIGdlbmVyYXRpb24gdG8g
dXNlIHRoZSBgYF9fbmFtZV9fYGAKKyAgYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyBpbnN0ZWFkIG9m
IHRoZSBmYWxsYmFjayBhcmd1bWVudCBuYW1lIHBsdXMgY291bnRlci4KKyAgKGAjMjk3NiA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTc2PmBfKQorCistIFJl
cGxhY2UgcHkuc3RkIHdpdGggc3RkbGliIGltcG9ydHMuIChgIzMwNjcKKyAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzA2Nz5gXykKKworLSBDb3JyZWN0ZWQg
J3lvdScgdG8gJ3lvdXInIGluIGxvZ2dpbmcgZG9jcy4gKGAjMzEyOQorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMTI5PmBfKQorCisKK3B5dGVzdCAzLjMu
MiAoMjAxNy0xMi0yNSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCist
LS0tLS0tLS0KKworLSBweXRlc3RlcjogaWdub3JlIGZpbGVzIHVzZWQgdG8gb2J0YWluIGN1cnJl
bnQgdXNlciBtZXRhZGF0YSBpbiB0aGUgZmQgbGVhaworICBkZXRlY3Rvci4gKGAjMjc4NCA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzg0PmBfKQorCistIEZp
eCAqKm1lbW9yeSBsZWFrKiogd2hlcmUgb2JqZWN0cyByZXR1cm5lZCBieSBmaXh0dXJlcyB3ZXJl
IG5ldmVyIGRlc3RydWN0ZWQKKyAgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAoYCMyOTgxCisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5ODE+YF8pCisK
Ky0gRml4IGNvbnZlcnNpb24gb2YgcHlhcmdzIHRvIGZpbGVuYW1lIHRvIG5vdCBjb252ZXJ0IHN5
bWxpbmtzIG9uIFB5dGhvbiAyLiAoYCMyOTg1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI5ODU+YF8pCisKKy0gYGBQWVRFU1RfRE9OVF9SRVdSSVRFYGAg
aXMgbm93IGNoZWNrZWQgZm9yIHBsdWdpbnMgdG9vIHJhdGhlciB0aGFuIG9ubHkgZm9yCisgIHRl
c3QgbW9kdWxlcy4gKGAjMjk5NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yOTk1PmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworLSBBZGQgY2xhcmlmeWluZyBub3RlIGFib3V0IGJlaGF2aW9yIG9mIG11
bHRpcGxlIHBhcmFtZXRyaXplZCBhcmd1bWVudHMgKGAjMzAwMQorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDAxPmBfKQorCisKK1RyaXZpYWwvSW50ZXJu
YWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQ29kZSBjbGVhbnVwLiAo
YCMzMDE1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMwMTU+
YF8sCisgIGAjMzAyMSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8zMDIxPmBfKQorCistIENsZWFuIHVwIGNvZGUgYnkgcmVwbGFjaW5nIGltcG9ydHMgYW5kIHJl
ZmVyZW5jZXMgb2YgYGBfYXN0YGAgdG8gYGBhc3RgYC4KKyAgKGAjMzAxOCA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDE4PmBfKQorCisKK3B5dGVzdCAzLjMu
MSAoMjAxNy0xMi0wNSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCist
LS0tLS0tLS0KKworLSBGaXggaXNzdWUgYWJvdXQgYGAtcCBubzo8cGx1Z2luPmBgIGhhdmluZyBu
byBlZmZlY3QuIChgIzI5MjAKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9pc3N1ZXMvMjkyMD5gXykKKworLSBGaXggcmVncmVzc2lvbiB3aXRoIHdhcm5pbmdzIHRoYXQg
Y29udGFpbmVkIG5vbi1zdHJpbmdzIGluIHRoZWlyIGFyZ3VtZW50cyBpbgorICBQeXRob24gMi4g
KGAjMjk1NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTU2
PmBfKQorCistIEFsd2F5cyBlc2NhcGUgbnVsbCBieXRlcyB3aGVuIHNldHRpbmcgYGBQWVRFU1Rf
Q1VSUkVOVF9URVNUYGAuIChgIzI5NTcKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjk1Nz5gXykKKworLSBGaXggYGBaZXJvRGl2aXNpb25FcnJvcmBgIHdo
ZW4gdXNpbmcgdGhlIGBgdGVzdG1vbmBgIHBsdWdpbiB3aGVuIG5vIHRlc3RzCisgIHdlcmUgYWN0
dWFsbHkgY29sbGVjdGVkLiAoYCMyOTcxCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI5NzE+YF8pCisKKy0gQnJpbmcgYmFjayBgYFRlcm1pbmFsUmVwb3J0
ZXIud3JpdGVyYGAgYXMgYW4gYWxpYXMgdG8KKyAgYGBUZXJtaW5hbFJlcG9ydGVyLl90d2BgLiBU
aGlzIGFsaWFzIHdhcyByZW1vdmVkIGJ5IGFjY2lkZW50IGluIHRoZSBgYDMuMy4wYGAKKyAgcmVs
ZWFzZS4gKGAjMjk4NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yOTg0PmBfKQorCistIFRoZSBgYHB5dGVzdC1jYXB0dXJlbG9nYGAgcGx1Z2luIGlzIG5vdyBh
bHNvIGJsYWNrbGlzdGVkLCBhdm9pZGluZyBlcnJvcnMgd2hlbgorICBydW5uaW5nIHB5dGVzdCB3
aXRoIGl0IHN0aWxsIGluc3RhbGxlZC4gKGAjMzAwNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMDA0PmBfKQorCisKK0ltcHJvdmVkIERvY3VtZW50YXRp
b24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXggYnJva2VuIGxpbmsgdG8gcGx1Z2lu
IGBgcHl0ZXN0LWxvY2Fsc2VydmVyYGAuIChgIzI5NjMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjk2Mz5gXykKKworCitUcml2aWFsL0ludGVybmFsIENo
YW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIFVwZGF0ZSBnaXRodWIgImJ1Z3Mi
IGxpbmsgaW4gYGBDT05UUklCVVRJTkcucnN0YGAgKGAjMjk0OQorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTQ5PmBfKQorCisKK3B5dGVzdCAzLjMuMCAo
MjAxNy0xMS0yMykKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGVwcmVjYXRpb25zIGFu
ZCBSZW1vdmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIHB5dGVzdCBubyBsb25n
ZXIgc3VwcG9ydHMgUHl0aG9uICoqMi42KiogYW5kICoqMy4zKiouIFRob3NlIFB5dGhvbiB2ZXJz
aW9ucworICBhcmUgRU9MIGZvciBzb21lIHRpbWUgbm93IGFuZCBpbmN1ciBtYWludGVuYW5jZSBh
bmQgY29tcGF0aWJpbGl0eSBjb3N0cyBvbgorICB0aGUgcHl0ZXN0IGNvcmUgdGVhbSwgYW5kIGZv
bGxvd2luZyB1cCB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb21tdW5pdHkgd2UKKyAgZGVjaWRlZCB0
aGF0IHRoZXkgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkIHN0YXJ0aW5nIG9uIHRoaXMgdmVy
c2lvbi4gVXNlcnMKKyAgd2hpY2ggc3RpbGwgcmVxdWlyZSB0aG9zZSB2ZXJzaW9ucyBzaG91bGQg
cGluIHB5dGVzdCB0byBgYDwzLjNgYC4gKGAjMjgxMgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODEyPmBfKQorCistIFJlbW92ZSBpbnRlcm5hbCBgYF9w
cmVsb2FkcGx1Z2lucygpYGAgZnVuY3Rpb24uIFRoaXMgcmVtb3ZhbCBpcyBwYXJ0IG9mIHRoZQor
ICBgYHB5dGVzdF9uYW1lc3BhY2UoKWBgIGhvb2sgZGVwcmVjYXRpb24uIChgIzI2MzYKKyAgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYzNj5gXykKKworLSBJ
bnRlcm5hbGx5IGNoYW5nZSBgYENhbGxTcGVjMmBgIHRvIGhhdmUgYSBsaXN0IG9mIG1hcmtzIGlu
c3RlYWQgb2YgYSBicm9rZW4KKyAgbWFwcGluZyBvZiBrZXl3b3Jkcy4gVGhpcyByZW1vdmVzIHRo
ZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgdGhlIGludGVybmFsCisgIGBgQ2FsbFNwZWMyYGAgY2xh
c3MuIChgIzI2NzIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjY3Mj5gXykKKworLSBSZW1vdmUgUGFyYW1ldGVyU2V0LmRlcHJlY2F0ZWRfYXJnX2RpY3Qg
LSBpdHMgbm90IGEgcHVibGljIGFwaSBhbmQgdGhlIGxhY2sKKyAgb2YgdGhlIHVuZGVyc2NvcmUg
d2FzIGEgbmFtaW5nIGVycm9yLiAoYCMyNjc1CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI2NzU+YF8pCisKKy0gUmVtb3ZlIHRoZSBpbnRlcm5hbCBtdWx0
aS10eXBlZCBhdHRyaWJ1dGUgYGBOb2RlLl9ldmFsc2tpcGBgIGFuZCByZXBsYWNlIGl0CisgIHdp
dGggdGhlIGJvb2xlYW4gYGBOb2RlLl9za2lwcGVkX2J5X21hcmtgYC4gKGAjMjc2NworICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzY3PmBfKQorCistIFRo
ZSBgYHBhcmFtc2BgIGxpc3QgcGFzc2VkIHRvIGBgcHl0ZXN0LmZpeHR1cmVgYCBpcyBub3cgZm9y
CisgIGFsbCBlZmZlY3RzIGNvbnNpZGVyZWQgaW1tdXRhYmxlIGFuZCBmcm96ZW4gYXQgdGhlIG1v
bWVudCBvZiB0aGUgYGBweXRlc3QuZml4dHVyZWBgCisgIGNhbGwuIFByZXZpb3VzbHkgdGhlIGxp
c3QgY291bGQgYmUgY2hhbmdlZCBiZWZvcmUgdGhlIGZpcnN0IGludm9jYXRpb24gb2YgdGhlIGZp
eHR1cmUKKyAgYWxsb3dpbmcgZm9yIGEgZm9ybSBvZiBkeW5hbWljIHBhcmFtZXRyaXphdGlvbiAo
Zm9yIGV4YW1wbGUsIHVwZGF0ZWQgZnJvbSBjb21tYW5kLWxpbmUgb3B0aW9ucyksCisgIGJ1dCB0
aGlzIHdhcyBhbiB1bndhbnRlZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgd2hpY2ggY29tcGxpY2F0
ZWQgdGhlIGludGVybmFscyBhbmQgcHJldmVudGVkCisgIHNvbWUgaW50ZXJuYWwgY2xlYW51cC4g
U2VlIGlzc3VlIGAjMjk1OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yOTU5PmBfCisgIGZvciBkZXRhaWxzIGFuZCBhIHJlY29tbWVuZGVkIHdvcmthcm91bmQu
CisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIGBgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6
ZXJgYCBob29rIGNhbiBub3cgcmVjZWl2ZSBhIGBgcmVxdWVzdGBgCisgIGFyZ3VtZW50LiAoYCMy
MTI0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxMjQ+YF8p
CisKKy0gUmVwbGFjZSB0aGUgb2xkIGludHJvc3BlY3Rpb24gY29kZSBpbiBjb21wYXQucHkgdGhh
dCBkZXRlcm1pbmVzIHRoZSBhdmFpbGFibGUKKyAgYXJndW1lbnRzIG9mIGZpeHR1cmVzIHdpdGgg
aW5zcGVjdC5zaWduYXR1cmUgb24gUHl0aG9uIDMgYW5kCisgIGZ1bmNzaWdzLnNpZ25hdHVyZSBv
biBQeXRob24gMi4gVGhpcyBzaG91bGQgcmVzcGVjdCBgYF9fc2lnbmF0dXJlX19gYAorICBkZWNs
YXJhdGlvbnMgb24gZnVuY3Rpb25zLiAoYCMyMjY3CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyNjc+YF8pCisKKy0gUmVwb3J0IHRlc3RzIHdpdGggZ2xv
YmFsIGBgcHl0ZXN0bWFya2BgIHZhcmlhYmxlIG9ubHkgb25jZS4gKGAjMjU0OQorICA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTQ5PmBfKQorCistIE5vdyBw
eXRlc3QgZGlzcGxheXMgdGhlIHRvdGFsIHByb2dyZXNzIHBlcmNlbnRhZ2Ugd2hpbGUgcnVubmlu
ZyB0ZXN0cy4gVGhlCisgIHByZXZpb3VzIG91dHB1dCBzdHlsZSBjYW4gYmUgc2V0IGJ5IGNvbmZp
Z3VyaW5nIHRoZSBgYGNvbnNvbGVfb3V0cHV0X3N0eWxlYGAKKyAgc2V0dGluZyB0byBgYGNsYXNz
aWNgYC4gKGAjMjY1NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yNjU3PmBfKQorCistIE1hdGNoIGBgd2FybnNgYCBzaWduYXR1cmUgdG8gYGByYWlzZXNgYCBi
eSBhZGRpbmcgYGBtYXRjaGBgIGtleXdvcmQuIChgIzI3MDgKKyAgPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjcwOD5gXykKKworLSBweXRlc3Qgbm93IGNhcHR1
cmVzIGFuZCBkaXNwbGF5cyBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQgYGBsb2dnaW5nYGAgbW9k
dWxlLgorICBUaGUgdXNlciBjYW4gY29udHJvbCB0aGUgbG9nZ2luZyBsZXZlbCB0byBiZSBjYXB0
dXJlZCBieSBzcGVjaWZ5aW5nIG9wdGlvbnMKKyAgaW4gYGBweXRlc3QuaW5pYGAsIHRoZSBjb21t
YW5kIGxpbmUgYW5kIGFsc28gZHVyaW5nIGluZGl2aWR1YWwgdGVzdHMgdXNpbmcKKyAgbWFya2Vy
cy4gQWxzbywgYSBgYGNhcGxvZ2BgIGZpeHR1cmUgaXMgYXZhaWxhYmxlIHRoYXQgZW5hYmxlcyB1
c2VycyB0byB0ZXN0CisgIHRoZSBjYXB0dXJlZCBsb2cgZHVyaW5nIHNwZWNpZmljIHRlc3RzIChz
aW1pbGFyIHRvIGBgY2Fwc3lzYGAgZm9yIGV4YW1wbGUpLgorICBGb3IgbW9yZSBpbmZvcm1hdGlv
biwgcGxlYXNlIHNlZSB0aGUgYGxvZ2dpbmcgZG9jcworICA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5v
cmcvZW4vc3RhYmxlL2xvZ2dpbmcuaHRtbD5gXy4gVGhpcyBmZWF0dXJlIHdhcworICBpbnRyb2R1
Y2VkIGJ5IG1lcmdpbmcgdGhlIHBvcHVsYXIgYHB5dGVzdC1jYXRjaGxvZworICA8aHR0cHM6Ly9w
eXBpLm9yZy9wcm9qZWN0L3B5dGVzdC1jYXRjaGxvZy8+YF8gcGx1Z2luLCB0aGFua3MgdG8gYFRo
b21hcyBIaXNjaAorICA8aHR0cHM6Ly9naXRodWIuY29tL3RoaXNjaD5gXy4gQmUgYWR2aXNlZCB0
aGF0IGR1cmluZyB0aGUgbWVyZ2luZyB0aGUKKyAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpbnRl
cmZhY2Ugd2l0aCB0aGUgZGVmdW5jdCBgYHB5dGVzdC1jYXB0dXJlbG9nYGAgaGFzCisgIGJlZW4g
ZHJvcHBlZC4gKGAjMjc5NCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yNzk0PmBfKQorCistIEFkZCBgYGFsbG93X21vZHVsZV9sZXZlbGBgIGt3YXJnIHRvIGBg
cHl0ZXN0LnNraXAoKWBgLCBlbmFibGluZyB0byBza2lwIHRoZQorICB3aG9sZSBtb2R1bGUuIChg
IzI4MDggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjgwOD5g
XykKKworLSBBbGxvdyBzZXR0aW5nIGBgZmlsZV9vcl9kaXJgYCwgYGAtY2BgLCBhbmQgYGAtb2Bg
IGluIFBZVEVTVF9BRERPUFRTLiAoYCMyODI0CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzI4MjQ+YF8pCisKKy0gUmV0dXJuIHN0ZG91dC9zdGRlcnIgY2Fw
dHVyZSByZXN1bHRzIGFzIGEgYGBuYW1lZHR1cGxlYGAsIHNvIGBgb3V0YGAgYW5kCisgIGBgZXJy
YGAgY2FuIGJlIGFjY2Vzc2VkIGJ5IGF0dHJpYnV0ZS4gKGAjMjg3OQorICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODc5PmBfKQorCistIEFkZCBgYGNhcGZk
YmluYXJ5YGAsIGEgdmVyc2lvbiBvZiBgYGNhcGZkYGAgd2hpY2ggcmV0dXJucyBieXRlcyBmcm9t
CisgIGBgcmVhZG91dGVycigpYGAuIChgIzI5MjMKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkyMz5gXykKKworLSBBZGQgYGBjYXBzeXNiaW5hcnlgYCBh
IHZlcnNpb24gb2YgYGBjYXBzeXNgYCB3aGljaCByZXR1cm5zIGJ5dGVzIGZyb20KKyAgYGByZWFk
b3V0ZXJyKClgYC4gKGAjMjkzNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yOTM0PmBfKQorCistIEltcGxlbWVudCBmZWF0dXJlIHRvIHNraXAgYGBzZXR1
cC5weWBgIGZpbGVzIHdoZW4gcnVuIHdpdGgKKyAgYGAtLWRvY3Rlc3QtbW9kdWxlc2BgLiAoYCM1
MDIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTAyPmBf
KQorCisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gUmVzdW1lIG91dHB1dCBjYXB0dXJpbmcg
YWZ0ZXIgYGBjYXBzeXMvY2FwZmQuZGlzYWJsZWQoKWBgIGNvbnRleHQgbWFuYWdlci4KKyAgKGAj
MTk5MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTkzPmBf
KQorCistIGBgcHl0ZXN0X2ZpeHR1cmVfc2V0dXBgYCBhbmQgYGBweXRlc3RfZml4dHVyZV9wb3N0
X2ZpbmFsaXplcmBgIGhvb2tzIGFyZSBub3cKKyAgY2FsbGVkIGZvciBhbGwgYGBjb25mdGVzdC5w
eWBgIGZpbGVzLiAoYCMyMTI0CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzIxMjQ+YF8pCisKKy0gSWYgYW4gZXhjZXB0aW9uIGhhcHBlbnMgd2hpbGUgbG9h
ZGluZyBhIHBsdWdpbiwgcHl0ZXN0IG5vIGxvbmdlciBoaWRlcyB0aGUKKyAgb3JpZ2luYWwgdHJh
Y2ViYWNrLiBJbiBQeXRob24gMiBpdCB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHRyYWNlYmFjayB3
aXRoIGEgbmV3CisgIG1lc3NhZ2UgdGhhdCBleHBsYWlucyBpbiB3aGljaCBwbHVnaW4uIEluIFB5
dGhvbiAzIGl0IHdpbGwgc2hvdyAyIGNhbm9uaXplZAorICBleGNlcHRpb25zLCB0aGUgb3JpZ2lu
YWwgZXhjZXB0aW9uIHdoaWxlIGxvYWRpbmcgdGhlIHBsdWdpbiBpbiBhZGRpdGlvbiB0byBhbgor
ICBleGNlcHRpb24gdGhhdCBweXRlc3QgdGhyb3dzIGFib3V0IGxvYWRpbmcgYSBwbHVnaW4uIChg
IzI0OTEKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ5
MT5gXykKKworLSBgYGNhcHN5c2BgIGFuZCBgYGNhcGZkYGAgY2FuIG5vdyBiZSB1c2VkIGJ5IG90
aGVyIGZpeHR1cmVzLiAoYCMyNzA5CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI3MDk+YF8pCisKKy0gSW50ZXJuYWwgYGBweXRlc3RlcmBgIHBsdWdpbiBw
cm9wZXJseSBlbmNvZGVzIGBgYnl0ZXNgYCBhcmd1bWVudHMgdG8KKyAgYGB1dGYtOGBgLiAoYCMy
NzM4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3Mzg+YF8p
CisKKy0gYGB0ZXN0ZGlyYGAgbm93IHVzZXMgdXNlIHRoZSBzYW1lIG1ldGhvZCB1c2VkIGJ5IGBg
dG1wZGlyYGAgdG8gY3JlYXRlIGl0cworICB0ZW1wb3JhcnkgZGlyZWN0b3J5LiBUaGlzIGNoYW5n
ZXMgdGhlIGZpbmFsIHN0cnVjdHVyZSBvZiB0aGUgYGB0ZXN0ZGlyYGAKKyAgZGlyZWN0b3J5IHNs
aWdodGx5LCBidXQgc2hvdWxkIG5vdCBhZmZlY3QgdXNhZ2UgaW4gbm9ybWFsIHNjZW5hcmlvcyBh
bmQKKyAgYXZvaWRzIGEgbnVtYmVyIG9mIHBvdGVudGlhbCBwcm9ibGVtcy4gKGAjMjc1MQorICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzUxPmBfKQorCist
IHB5dGVzdCBubyBsb25nZXIgY29tcGxhaW5zIGFib3V0IHdhcm5pbmdzIHdpdGggdW5pY29kZSBt
ZXNzYWdlcyBiZWluZworICBub24tYXNjaWkgY29tcGF0aWJsZSBldmVuIGZvciBhc2NpaS1jb21w
YXRpYmxlIG1lc3NhZ2VzLiBBcyBhIHJlc3VsdCBvZiB0aGlzLAorICB3YXJuaW5ncyB3aXRoIHVu
aWNvZGUgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmaXJzdCB0byBhbiBhc2NpaSByZXByZXNlbnRh
dGlvbgorICBmb3Igc2FmZXR5LiAoYCMyODA5IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI4MDk+YF8pCisKKy0gQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBweXRl
c3QgY29tbWFuZCB3aGVuIGBgLS1tYXhmYWlsYGAgaXMgcmVhY2hlZCBmcm9tCisgIGBgMmBgIChp
bnRlcnJ1cHRlZCkgdG8gYGAxYGAgKGZhaWxlZCkuIChgIzI4NDUKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg0NT5gXykKKworLSBGaXggaXNzdWUgaW4g
YXNzZXJ0aW9uIHJld3JpdGluZyB3aGljaCBjb3VsZCBsZWFkIGl0IHRvIHJld3JpdGUgbW9kdWxl
cyB3aGljaAorICBzaG91bGQgbm90IGJlIHJld3JpdHRlbi4gKGAjMjkzOQorICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTM5PmBfKQorCistIEhhbmRsZSBt
YXJrcyB3aXRob3V0IGRlc2NyaXB0aW9uIGluIGBgcHl0ZXN0LmluaWBgLiAoYCMyOTQyCisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5NDI+YF8pCisKKwor
VHJpdmlhbC9JbnRlcm5hbCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBw
eXRlc3Qgbm93IGRlcGVuZHMgb24gYGF0dHJzIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvYXR0
cnMvPmBfXyBmb3IgaW50ZXJuYWwKKyAgc3RydWN0dXJlcyB0byBlYXNlIGNvZGUgbWFpbnRhaW5h
YmlsaXR5LiAoYCMyNjQxCisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI2NDE+YF8pCisKKy0gUmVmYWN0b3JlZCBpbnRlcm5hbCBQeXRob24gMi8zIGNvbXBh
dGliaWxpdHkgY29kZSB0byB1c2UgYGBzaXhgYC4gKGAjMjY0MgorICA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjQyPmBfKQorCistIFN0b3AgdmVuZG9yaW5n
IGBgcGx1Z2d5YGAgLSB3ZSdyZSBtaXNzaW5nIG91dCBvbiBpdHMgbGF0ZXN0IGNoYW5nZXMgZm9y
IG5vdAorICBtdWNoIGJlbmVmaXQgKGAjMjcxOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yNzE5PmBfKQorCistIEludGVybmFsIHJlZmFjdG9yOiBzaW1wbGlm
eSBhc2NpaSBzdHJpbmcgZXNjYXBpbmcgYnkgdXNpbmcgdGhlCisgIGJhY2tzbGFzaHJlcGxhY2Ug
ZXJyb3IgaGFuZGxlciBpbiBuZXdlciBQeXRob24gMyB2ZXJzaW9ucy4gKGAjMjczNAorICA8aHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzM0PmBfKQorCistIFJl
bW92ZSB1bm5lY2Vzc2FyeSBtYXJrIGV2YWx1YXRvciBpbiB1bml0dGVzdCBwbHVnaW4gKGAjMjc2
NworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzY3PmBf
KQorCistIENhbGxzIHRvIGBgTWV0YWZ1bmMuYWRkY2FsbGBgIG5vdyBlbWl0IGEgZGVwcmVjYXRp
b24gd2FybmluZy4gVGhpcyBmdW5jdGlvbgorICBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBp
biBgYHB5dGVzdC00LjBgYC4gKGAjMjg3NgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8yODc2PmBfKQorCistIEludGVybmFsIG1vdmUgb2YgdGhlIHBhcmFt
ZXRlcnNldCBleHRyYWN0aW9uIHRvIGEgbW9yZSBtYWludGFpbmFibGUgcGxhY2UuCisgIChgIzI4
NzcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjg3Nz5gXykK
KworLSBJbnRlcm5hbCByZWZhY3RvcmluZyB0byBzaW1wbGlmeSBzY29wZSBub2RlIGxvb2t1cC4g
KGAjMjkxMAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
OTEwPmBfKQorCistIENvbmZpZ3VyZSBgYHB5dGVzdGBgIHRvIHByZXZlbnQgcGlwIGZyb20gaW5z
dGFsbGluZyBweXRlc3QgaW4gdW5zdXBwb3J0ZWQKKyAgUHl0aG9uIHZlcnNpb25zLiAoYCMyOTIy
CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI5MjI+YF8p
CisKKworcHl0ZXN0IDMuMi41ICgyMDE3LTExLTE1KQorPT09PT09PT09PT09PT09PT09PT09PT09
PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIFJlbW92ZSBgYHB5PDEuNWBgIHJlc3RyaWN0
aW9uIGZyb20gYGBweXRlc3RgYCBhcyB0aGlzIGNhbiBjYXVzZSB2ZXJzaW9uCisgIGNvbmZsaWN0
cyBpbiBzb21lIGluc3RhbGxhdGlvbnMuIChgIzI5MjYKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjkyNj5gXykKKworCitweXRlc3QgMy4yLjQgKDIwMTct
MTEtMTMpCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0t
CisKKy0gRml4IHRoZSBidWcgd2hlcmUgcnVubmluZyB3aXRoIGBgLS1weWFyZ3NgYCB3aWxsIHJl
c3VsdCBpbiBpdGVtcyB3aXRoCisgIGVtcHR5IGBgcGFyZW50Lm5vZGVpZGBgIGlmIHJ1biBmcm9t
IGEgZGlmZmVyZW50IHJvb3QgZGlyZWN0b3J5LiAoYCMyNzc1CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NzU+YF8pCisKKy0gRml4IGlzc3VlIHdpdGgg
YGBAcHl0ZXN0LnBhcmFtZXRyaXplYGAgaWYgYXJnbmFtZXMgd2FzIHNwZWNpZmllZCBhcyBrZXl3
b3JkIGFyZ3VtZW50cy4KKyAgKGAjMjgxOSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yODE5PmBfKQorCistIFN0cmlwIHdoaXRlc3BhY2UgZnJvbSBtYXJrZXIg
bmFtZXMgd2hlbiByZWFkaW5nIHRoZW0gZnJvbSBJTkkgY29uZmlnLiAoYCMyODU2CisgIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4NTY+YF8pCisKKy0gU2hv
dyBmdWxsIGNvbnRleHQgb2YgZG9jdGVzdCBzb3VyY2UgaW4gdGhlIHB5dGVzdCBvdXRwdXQsIGlm
IHRoZSBsaW5lIG51bWJlciBvZgorICBmYWlsZWQgZXhhbXBsZSBpbiB0aGUgZG9jc3RyaW5nIGlz
IDwgOS4gKGAjMjg4MgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yODgyPmBfKQorCistIE1hdGNoIGZpeHR1cmUgcGF0aHMgYWdhaW5zdCBhY3R1YWwgcGF0
aCBzZWdtZW50cyBpbiBvcmRlciB0byBhdm9pZCBtYXRjaGluZyBmb2xkZXJzIHdoaWNoIHNoYXJl
IGEgcHJlZml4LgorICAoYCMyODM2IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzI4MzY+YF8pCisKK0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworLSBJbnRyb2R1Y2UgYSBkZWRpY2F0ZWQgc2VjdGlvbiBhYm91dCBjb25m
dGVzdC5weS4gKGAjMTUwNQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xNTA1PmBfKQorCistIEV4cGxpY2l0bHkgbWVudGlvbiBgYHhwYXNzYGAgaW4gdGhl
IGRvY3VtZW50YXRpb24gb2YgYGB4ZmFpbGBgLiAoYCMxOTk3CisgIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5OTc+YF8pCisKKy0gQXBwZW5kIGV4YW1wbGUg
Zm9yIHB5dGVzdC5wYXJhbSBpbiB0aGUgZXhhbXBsZS9wYXJhbWV0cml6ZSBkb2N1bWVudC4gKGAj
MjY1OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjU4
PmBfKQorCistIENsYXJpZnkgbGFuZ3VhZ2Ugb2YgcHJvcG9zYWwgZm9yIGZpeHR1cmVzIHBhcmFt
ZXRlcnMgKGAjMjg5MworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yODkzPmBfKQorCistIExpc3QgcHl0aG9uIDMuNiBpbiB0aGUgZG9jdW1lbnRlZCBzdXBw
b3J0ZWQgdmVyc2lvbnMgaW4gdGhlIGdldHRpbmcgc3RhcnRlZAorICBkb2N1bWVudC4gKGAjMjkw
MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yOTAzPmBfKQor
CistIENsYXJpZnkgdGhlIGRvY3VtZW50YXRpb24gb2YgYXZhaWxhYmxlIGZpeHR1cmUgc2NvcGVz
LiAoYCM1MzgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
NTM4PmBfKQorCistIEFkZCBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBgYHB5dGhvbiAtbSBweXRl
c3RgYCBpbnZvY2F0aW9uIGFkZGluZyB0aGUKKyAgY3VycmVudCBkaXJlY3RvcnkgdG8gc3lzLnBh
dGguIChgIzkxMQorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy85MTE+YF8pCisKKworcHl0ZXN0IDMuMi4zICgyMDE3LTEwLTAzKQorPT09PT09PT09PT09PT09
PT09PT09PT09PQorCitCdWcgRml4ZXMKKy0tLS0tLS0tLQorCistIEZpeCBjcmFzaCBpbiB0YWIg
Y29tcGxldGlvbiB3aGVuIG5vIHByZWZpeCBpcyBnaXZlbi4gKGAjMjc0OAorICA8aHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzQ4PmBfKQorCistIFRoZSBlcXVh
bGl0eSBjaGVja2luZyBmdW5jdGlvbiAoYGBfX2VxX19gYCkgb2YgYGBNYXJrRGVjb3JhdG9yYGAg
cmV0dXJucworICBgYEZhbHNlYGAgaWYgb25lIG9iamVjdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2Yg
YGBNYXJrRGVjb3JhdG9yYGAuIChgIzI3NTgKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjc1OD5gXykKKworLSBXaGVuIHJ1bm5pbmcgYGBweXRlc3QgLS1m
aXh0dXJlcy1wZXItdGVzdGBgOiBkb24ndCBjcmFzaCBpZiBhbiBpdGVtIGhhcyBubworICBfZml4
dHVyZWluZm8gYXR0cmlidXRlIChlLmcuIGRvY3Rlc3RzKSAoYCMyNzg4CisgIDxodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3ODg+YF8pCisKKworSW1wcm92ZWQg
RG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEluIGhlbHAgdGV4dCBv
ZiBgYC1rYGAgb3B0aW9uLCBhZGQgZXhhbXBsZSBvZiB1c2luZyBgYG5vdGBgIHRvIG5vdCBzZWxl
Y3QKKyAgY2VydGFpbiB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCB0aGUgcHJvdmlkZWQgZXhwcmVz
c2lvbi4gKGAjMTQ0MgorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNDQyPmBfKQorCistIEFkZCBub3RlIGluIGBgcGFyYW1ldHJpemUucnN0YGAgYWJvdXQg
Y2FsbGluZyBgYG1ldGFmdW5jLnBhcmFtZXRyaXplYGAKKyAgbXVsdGlwbGUgdGltZXMuIChgIzE1
NDggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU0OD5gXykK
KworCitUcml2aWFsL0ludGVybmFsIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CistIFNldCBgYHhmYWlsX3N0cmljdD1UcnVlYGAgaW4gcHl0ZXN0J3Mgb3duIHRlc3Qgc3VpdGUg
dG8gY2F0Y2ggZXhwZWN0ZWQKKyAgZmFpbHVyZXMgYXMgc29vbiBhcyB0aGV5IHN0YXJ0IHRvIHBh
c3MuIChgIzI3MjIKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjcyMj5gXykKKworLSBGaXggdHlwbyBpbiBleGFtcGxlIG9mIHBhc3NpbmcgYSBjYWxsYWJs
ZSB0byBtYXJrZXJzIChpbiBleGFtcGxlL21hcmtlcnMucnN0KQorICAoYCMyNzY1IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3NjU+YF8pCisKKworcHl0ZXN0
IDMuMi4yICgyMDE3LTA5LTA2KQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitCdWcgRml4
ZXMKKy0tLS0tLS0tLQorCistIENhbGxpbmcgdGhlIGRlcHJlY2F0ZWQgYGByZXF1ZXN0LmdldGZ1
bmNhcmd2YWx1ZSgpYGAgbm93IHNob3dzIHRoZSBzb3VyY2Ugb2YKKyAgdGhlIGNhbGwuIChgIzI2
ODEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY4MT5gXykK
KworLSBBbGxvdyB0ZXN0cyBkZWNsYXJlZCBhcyBgYEBzdGF0aWNtZXRob2RgYCB0byB1c2UgZml4
dHVyZXMuIChgIzI2OTkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjY5OT5gXykKKworLSBGaXhlZCBlZGdlLWNhc2UgZHVyaW5nIGNvbGxlY3Rpb246IGF0
dHJpYnV0ZXMgd2hpY2ggcmFpc2VkIGBgcHl0ZXN0LmZhaWxgYAorICB3aGVuIGFjY2Vzc2VkIHdv
dWxkIGFib3J0IHRoZSBlbnRpcmUgY29sbGVjdGlvbi4gKGAjMjcwNworICA8aHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzA3PmBfKQorCistIEZpeCBgYFJlcHJG
dW5jQXJnc2BgIHdpdGggbWl4ZWQgdW5pY29kZSBhbmQgVVRGLTggYXJncy4gKGAjMjczMQorICA8
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNzMxPmBfKQorCisK
K0ltcHJvdmVkIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJbiBl
eGFtcGxlcyBvbiB3b3JraW5nIHdpdGggY3VzdG9tIG1hcmtlcnMsIGFkZCBleGFtcGxlcyBkZW1v
bnN0cmF0aW5nIHRoZQorICB1c2FnZSBvZiBgYHB5dGVzdC5tYXJrLk1BUktFUl9OQU1FLndpdGhf
YXJnc2BgIGluIGNvbXBhcmlzb24gd2l0aAorICBgYHB5dGVzdC5tYXJrLk1BUktFUl9OQU1FLl9f
Y2FsbF9fYGAgKGAjMjYwNAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yNjA0PmBfKQorCistIEluIG9uZSBvZiB0aGUgc2ltcGxlIGV4YW1wbGVzLCB1c2Ug
YGBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcygpYGAgdG8gc2tpcAorICB0ZXN0cyBiYXNl
ZCBvbiBhIGNvbW1hbmQtbGluZSBvcHRpb24sIGFsbG93aW5nIGl0cyBzaGFyaW5nIHdoaWxlIHBy
ZXZlbnRpbmcgYQorICB1c2VyIGVycm9yIHdoZW4gYWNlc3NpbmcgYGBweXRlc3QuY29uZmlnYGAg
YmVmb3JlIHRoZSBhcmd1bWVudCBwYXJzaW5nLgorICAoYCMyNjUzIDxodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2NTM+YF8pCisKKworVHJpdmlhbC9JbnRlcm5h
bCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXhlZCBtaW5vciBlcnJv
ciBpbiAnR29vZCBQcmFjdGljZXMvTWFudWFsIEludGVncmF0aW9uJyBjb2RlIHNuaXBwZXQuCisg
IChgIzI2OTEgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY5
MT5gXykKKworLSBGaXhlZCB0eXBvIGluIGdvb2RwcmFjdGljZXMucnN0LiAoYCMyNzIxCisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI3MjE+YF8pCisKKy0g
SW1wcm92ZSB1c2VyIGd1aWRhbmNlIHJlZ2FyZGluZyBgYC0tcmVzdWx0bG9nYGAgZGVwcmVjYXRp
b24uIChgIzI3MzkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjczOT5gXykKKworCitweXRlc3QgMy4yLjEgKDIwMTctMDgtMDgpCis9PT09PT09PT09PT09
PT09PT09PT09PT09CisKK0J1ZyBGaXhlcworLS0tLS0tLS0tCisKKy0gRml4ZWQgc21hbGwgdGVy
bWluYWwgZ2xpdGNoIHdoZW4gY29sbGVjdGluZyBhIHNpbmdsZSB0ZXN0IGl0ZW0uIChgIzI1NzkK
KyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU3OT5gXykK
KworLSBDb3JyZWN0bHkgY29uc2lkZXIgYGAvYGAgYXMgdGhlIGZpbGUgc2VwYXJhdG9yIHRvIGF1
dG9tYXRpY2FsbHkgbWFyayBwbHVnaW4KKyAgZmlsZXMgZm9yIHJld3JpdGUgb24gV2luZG93cy4g
KGAjMjU5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KKyAgZGV2L3B5dGVzdC9pc3N1ZXMv
MjU5MT5gXykKKworLSBQcm9wZXJseSBlc2NhcGUgdGVzdCBuYW1lcyB3aGVuIHNldHRpbmcgYGBQ
WVRFU1RfQ1VSUkVOVF9URVNUYGAgZW52aXJvbm1lbnQKKyAgdmFyaWFibGUuIChgIzI2NDQgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjY0ND5gXykKKworLSBG
aXggZXJyb3Igb24gV2luZG93cyBhbmQgUHl0aG9uIDMuNisgd2hlbiBgYHN5cy5zdGRvdXRgYCBo
YXMgYmVlbiByZXBsYWNlZAorICB3aXRoIGEgc3RyZWFtLWxpa2Ugb2JqZWN0IHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudCB0aGUgZnVsbCBgYGlvYGAgbW9kdWxlCisgIGJ1ZmZlciBwcm90b2NvbC4g
SW4gcGFydGljdWxhciB0aGlzIGFmZmVjdHMgYGBweXRlc3QteGRpc3RgYCB1c2VycyBvbiB0aGUK
KyAgYWZvcmVtZW50aW9uZWQgcGxhdGZvcm0uIChgIzI2NjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtCisgIGRldi9weXRlc3QvaXNzdWVzLzI2NjY+YF8pCisKKworSW1wcm92ZWQgRG9jdW1l
bnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEV4cGxpY2l0bHkgZG9jdW1lbnQg
d2hpY2ggcHl0ZXN0IGZlYXR1cmVzIHdvcmsgd2l0aCBgYHVuaXR0ZXN0YGAuIChgIzI2MjYKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjYyNj5gXykKKwor
CitweXRlc3QgMy4yLjAgKDIwMTctMDctMzApCis9PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0RlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
LSBgYHB5dGVzdC5hcHByb3hgYCBubyBsb25nZXIgc3VwcG9ydHMgYGA+YGAsIGBgPj1gYCwgYGA8
YGAgYW5kIGBgPD1gYAorICBvcGVyYXRvcnMgdG8gYXZvaWQgc3VycHJpc2luZy9pbmNvbnNpc3Rl
bnQgYmVoYXZpb3IuIFNlZSBgdGhlIGFwcHJveCBkb2NzCisgIDxodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9zdGFibGUvcmVmZXJlbmNlLmh0bWwjcHl0ZXN0LWFwcHJveD5gXyBmb3IgbW9yZQor
ICBpbmZvcm1hdGlvbi4gKGAjMjAwMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yMDAzPmBfKQorCistIEFsbCBvbGQtc3R5bGUgc3BlY2lmaWMgYmVoYXZpb3Ig
aW4gY3VycmVudCBjbGFzc2VzIGluIHRoZSBweXRlc3QncyBBUEkgaXMKKyAgY29uc2lkZXJlZCBk
ZXByZWNhdGVkIGF0IHRoaXMgcG9pbnQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBy
ZWxlYXNlLgorICBUaGlzIGFmZmVjdHMgUHl0aG9uIDIgdXNlcnMgb25seSBhbmQgaW4gcmFyZSBz
aXR1YXRpb25zLiAoYCMyMTQ3CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzIxNDc+YF8pCisKKy0gQSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIG5vdyByYWlz
ZWQgd2hlbiB1c2luZyBtYXJrcyBmb3IgcGFyYW1ldGVycworICBpbiBgYHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplYGAuIFVzZSBgYHB5dGVzdC5wYXJhbWBgIHRvIGFwcGx5IG1hcmtzIHRvCisgIHBh
cmFtZXRlcnMgaW5zdGVhZC4gKGAjMjQyNyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yNDI3PmBfKQorCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCistIEFkZCBz
dXBwb3J0IGZvciBudW1weSBhcnJheXMgKGFuZCBkaWN0cykgdG8gYXBwcm94LiAoYCMxOTk0Cisg
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5OTQ+YF8pCisK
Ky0gTm93IHRlc3QgZnVuY3Rpb24gb2JqZWN0cyBoYXZlIGEgYGBweXRlc3RtYXJrYGAgYXR0cmli
dXRlIGNvbnRhaW5pbmcgYSBsaXN0CisgIG9mIG1hcmtzIGFwcGxpZWQgZGlyZWN0bHkgdG8gdGhl
IHRlc3QgZnVuY3Rpb24sIGFzIG9wcG9zZWQgdG8gbWFya3MgaW5oZXJpdGVkCisgIGZyb20gcGFy
ZW50IGNsYXNzZXMgb3IgbW9kdWxlcy4gKGAjMjUxNiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC0KKyAgZGV2L3B5dGVzdC9pc3N1ZXMvMjUxNj5gXykKKworLSBDb2xsZWN0aW9uIGlnbm9yZXMg
bG9jYWwgdmlydHVhbGVudnMgYnkgZGVmYXVsdDsgYGAtLWNvbGxlY3QtaW4tdmlydHVhbGVudmBg
CisgIG92ZXJyaWRlcyB0aGlzIGJlaGF2aW9yLiAoYCMyNTE4IDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vlcy8yNTE4PmBfKQorCistIEFsbG93IGNsYXNzIG1l
dGhvZHMgZGVjb3JhdGVkIGFzIGBgQHN0YXRpY21ldGhvZGBgIHRvIGJlIGNhbmRpZGF0ZXMgZm9y
CisgIGNvbGxlY3Rpb24gYXMgYSB0ZXN0IGZ1bmN0aW9uLiAoT25seSBmb3IgUHl0aG9uIDIuNyBh
bmQgYWJvdmUuIFB5dGhvbiAyLjYKKyAgd2lsbCBzdGlsbCBpZ25vcmUgc3RhdGljIG1ldGhvZHMu
KSAoYCMyNTI4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lzc3Vl
cy8yNTI4PmBfKQorCistIEludHJvZHVjZSBgYG1hcmsud2l0aF9hcmdzYGAgaW4gb3JkZXIgdG8g
YWxsb3cgcGFzc2luZyBmdW5jdGlvbnMvY2xhc3NlcyBhcworICBzb2xlIGFyZ3VtZW50IHRvIG1h
cmtzLiAoYCMyNTQwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LQorICBkZXYvcHl0ZXN0L2lz
c3Vlcy8yNTQwPmBfKQorCistIE5ldyBgYGNhY2hlX2RpcmBgIGluaSBvcHRpb246IHNldHMgdGhl
IGRpcmVjdG9yeSB3aGVyZSB0aGUgY29udGVudHMgb2YgdGhlCisgIGNhY2hlIHBsdWdpbiBhcmUg
c3RvcmVkLiBEaXJlY3RvcnkgbWF5IGJlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGg6IGlmIHJl
bGF0aXZlIHBhdGgsIHRoZW4KKyAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgcmVsYXRpdmUgdG8gYGBy
b290ZGlyYGAsIG90aGVyd2lzZSBpdCBpcyB1c2VkIGFzIGlzLgorICBBZGRpdGlvbmFsbHkgcGF0
aCBtYXkgY29udGFpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggYXJlIGV4cGFuZGVkIGR1
cmluZworICBydW50aW1lLiAoYCMyNTQzIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzI1NDM+YF8pCisKKy0gSW50cm9kdWNlIHRoZSBgYFBZVEVTVF9DVVJSRU5U
X1RFU1RgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGlzIHNldCB3aXRoCisgIHRoZSBgYG5v
ZGVpZGBgIGFuZCBzdGFnZSAoYGBzZXR1cGBgLCBgYGNhbGxgYCBhbmQgYGB0ZWFyZG93bmBgKSBv
ZiB0aGUgdGVzdAorICBiZWluZyBjdXJyZW50bHkgZXhlY3V0ZWQuIFNlZSB0aGUgYGRvY3VtZW50
YXRpb24KKyAgPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9leGFtcGxlL3NpbXBs
ZS5odG1sI3B5dGVzdC1jdXJyZW50LXRlc3QtCisgIGVudmlyb25tZW50LXZhcmlhYmxlPmBfIGZv
ciBtb3JlIGluZm8uIChgIzI1ODMgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9w
eXRlc3QvaXNzdWVzLzI1ODM+YF8pCisKKy0gSW50cm9kdWNlZCBgYEBweXRlc3QubWFyay5maWx0
ZXJ3YXJuaW5nc2BgIG1hcmsgd2hpY2ggYWxsb3dzIG92ZXJ3cml0aW5nIHRoZQorICB3YXJuaW5n
cyBmaWx0ZXIgb24gYSBwZXIgdGVzdCwgY2xhc3Mgb3IgbW9kdWxlIGxldmVsLiBTZWUgdGhlIGBk
b2NzCisgIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbCNw
eXRlc3QtbWFyay0KKyAgZmlsdGVyd2FybmluZ3M+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uIChg
IzI1OTggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3QvaXNzdWVzLzI1
OTg+YF8pCisKKy0gYGAtLWxhc3QtZmFpbGVkYGAgbm93IHJlbWVtYmVycyBmb3JldmVyIHdoZW4g
YSB0ZXN0IGhhcyBmYWlsZWQgYW5kIG9ubHkKKyAgZm9yZ2V0cyBpdCBpZiBpdCBwYXNzZXMgYWdh
aW4uIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBmaXggYSB0ZXN0IHN1aXRlIGJ5CisgIHNlbGVjdGl2
ZWx5IHJ1bm5pbmcgZmlsZXMgYW5kIGZpeGluZyB0ZXN0cyBpbmNyZW1lbnRhbGx5LiAoYCMyNjIx
CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI2MjE+YF8p
CisKKy0gTmV3IGBgcHl0ZXN0X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoYGAgaG9vayB3aGljaCBh
bGxvd3MgcGx1Z2lucyB0byBhZGQKKyAgbWVzc2FnZXMgdG8gdGhlIHRlcm1pbmFsIHJlcG9ydGlu
ZyBhZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIGZpbmlzaGVkCisgIHN1Y2Nlc3NmdWxseS4gKGAj
MjYyMiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNjIyPmBf
KQorCistIEFkZGVkIHN1cHBvcnQgZm9yIGBQRVAtNDE1J3MgPGh0dHBzOi8vd3d3LnB5dGhvbi5v
cmcvZGV2L3BlcHMvcGVwLTA0MTUvPmBfCisgIGBgRXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4
dF9fYGAuIE5vdyBpZiBhIGBgcmFpc2UgZXhjZXB0aW9uIGZyb20gTm9uZWBgIGlzCisgIGNhdWdo
dCBieSBweXRlc3QsIHB5dGVzdCB3aWxsIG5vIGxvbmdlciBjaGFpbiB0aGUgY29udGV4dCBpbiB0
aGUgdGVzdCByZXBvcnQuCisgIFRoZSBiZWhhdmlvciBub3cgbWF0Y2hlcyBQeXRob24ncyB0cmFj
ZWJhY2sgYmVoYXZpb3IuIChgIzI2MzEKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMjYzMT5gXykKKworLSBFeGNlcHRpb25zIHJhaXNlZCBieSBgYHB5dGVz
dC5mYWlsYGAsIGBgcHl0ZXN0LnNraXBgYCBhbmQgYGBweXRlc3QueGZhaWxgYAorICBub3cgc3Vi
Y2xhc3MgQmFzZUV4Y2VwdGlvbiwgbWFraW5nIHRoZW0gaGFyZGVyIHRvIGJlIGNhdWdodCB1bmlu
dGVudGlvbmFsbHkKKyAgYnkgbm9ybWFsIGNvZGUuIChgIzU4MCA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81ODA+YF8pCisKKworQnVnIEZpeGVzCistLS0tLS0t
LS0KKworLSBTZXQgYGBzdGRpbmBgIHRvIGEgY2xvc2VkIGBgUElQRWBgIGluIGBgcHl0ZXN0ZXIu
cHkuVGVzdGRpci5wb3BlbigpYGAgZm9yCisgIGF2b2lkIHVud2FudGVkIGludGVyYWN0aXZlIGBg
cGRiYGAgKGAjMjAyMyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KKyAgZGV2L3B5dGVzdC9p
c3N1ZXMvMjAyMz5gXykKKworLSBBZGQgbWlzc2luZyBgYGVuY29kaW5nYGAgYXR0cmlidXRlIHRv
IGBgc3lzLnN0ZCpgYCBzdHJlYW1zIHdoZW4gdXNpbmcKKyAgYGBjYXBzeXNgYCBjYXB0dXJlIG1v
ZGUuIChgIzIzNzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3QvaXNz
dWVzLzIzNzU+YF8pCisKKy0gRml4IHRlcm1pbmFsIGNvbG9yIGNoYW5naW5nIHRvIGJsYWNrIG9u
IFdpbmRvd3MgaWYgYGBjb2xvcmFtYWBgIGlzIGltcG9ydGVkCisgIGluIGEgYGBjb25mdGVzdC5w
eWBgIGZpbGUuIChgIzI1MTAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRl
c3QvaXNzdWVzLzI1MTA+YF8pCisKKy0gRml4IGxpbmUgbnVtYmVyIHdoZW4gcmVwb3J0aW5nIHN1
bW1hcnkgb2Ygc2tpcHBlZCB0ZXN0cy4gKGAjMjU0OAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTQ4PmBfKQorCistIGNhcHR1cmU6IGVuc3VyZSB0aGF0
IEVuY29kZWRGaWxlLm5hbWUgaXMgYSBzdHJpbmcuIChgIzI1NTUKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU1NT5gXykKKworLSBUaGUgb3B0aW9ucyBg
YC0tZml4dHVyZXNgYCBhbmQgYGAtLWZpeHR1cmVzLXBlci10ZXN0YGAgd2lsbCBub3cga2VlcAor
ICBpbmRlbnRhdGlvbiB3aXRoaW4gZG9jc3RyaW5ncy4gKGAjMjU3NCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC0KKyAgZGV2L3B5dGVzdC9pc3N1ZXMvMjU3ND5gXykKKworLSBkb2N0ZXN0cyBs
aW5lIG51bWJlcnMgYXJlIG5vdyByZXBvcnRlZCBjb3JyZWN0bHksIGZpeGluZyBgcHl0ZXN0LXN1
Z2FyIzEyMgorICA8aHR0cHM6Ly9naXRodWIuY29tL0Zyb3plbmJhbGwvcHl0ZXN0LXN1Z2FyL2lz
c3Vlcy8xMjI+YF8uIChgIzI2MTAKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjYxMD5gXykKKworLSBGaXggbm9uLWRldGVybWluaXNtIGluIG9yZGVyIG9m
IGZpeHR1cmUgY29sbGVjdGlvbi4gQWRkcyBuZXcgZGVwZW5kZW5jeQorICAob3JkZXJlZGRpY3Qp
IGZvciBQeXRob24gMi42LiAoYCM5MjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRl
di9weXRlc3QvaXNzdWVzLzkyMD5gXykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQ2xhcmlmeSBgYHB5dGVzdF9jb25maWd1cmVgYCBob29r
IGNhbGwgb3JkZXIuIChgIzI1MzkKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjUzOT5gXykKKworLSBFeHRlbmQgZG9jdW1lbnRhdGlvbiBmb3IgdGVzdGlu
ZyBwbHVnaW4gY29kZSB3aXRoIHRoZSBgYHB5dGVzdGVyYGAgcGx1Z2luLgorICAoYCM5NzEgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvOTcxPmBfKQorCisKK1Ry
aXZpYWwvSW50ZXJuYWwgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gVXBk
YXRlIGhlbHAgbWVzc2FnZSBmb3IgYGAtLXN0cmljdGBgIHRvIG1ha2UgaXQgY2xlYXIgaXQgb25s
eSBkZWFscyB3aXRoCisgIHVucmVnaXN0ZXJlZCBtYXJrZXJzLCBub3Qgd2FybmluZ3MuIChgIzI0
NDQgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRldi9weXRlc3QvaXNzdWVzLzI0NDQ+
YF8pCisKKy0gSW50ZXJuYWwgY29kZSBtb3ZlOiBtb3ZlIGNvZGUgZm9yIHB5dGVzdC5hcHByb3gv
cHl0ZXN0LnJhaXNlcyB0byBvd24gZmlsZXMgaW4KKyAgb3JkZXIgdG8gY3V0IGRvd24gdGhlIHNp
emUgb2YgcHl0aG9uLnB5IChgIzI0ODkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtCisgIGRl
di9weXRlc3QvaXNzdWVzLzI0ODk+YF8pCisKKy0gUmVuYW1lZCB0aGUgdXRpbGl0eSBmdW5jdGlv
biBgYF9weXRlc3QuY29tcGF0Ll9lc2NhcGVfc3RyaW5nc2BgIHRvCisgIGBgX2FzY2lpX2VzY2Fw
ZWRgYCB0byBiZXR0ZXIgY29tbXVuaWNhdGUgdGhlIGZ1bmN0aW9uJ3MgcHVycG9zZS4gKGAjMjUz
MworICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTMzPmBf
KQorCistIEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgQ29sbGVjdEVycm9yIHdpdGggc2tpcC9z
a2lwaWYuIChgIzI1NDYKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjU0Nj5gXykKKworLSBFbWl0IHdhcm5pbmcgYWJvdXQgYGB5aWVsZGBgIHRlc3RzIGJl
aW5nIGRlcHJlY2F0ZWQgb25seSBvbmNlIHBlciBnZW5lcmF0b3IuCisgIChgIzI1NjIgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjU2Mj5gXykKKworLSBFbnN1
cmUgZmluYWwgY29sbGVjdGVkIGxpbmUgZG9lc24ndCBpbmNsdWRlIGFydGlmYWN0cyBvZiBwcmV2
aW91cyB3cml0ZS4KKyAgKGAjMjU3MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8yNTcxPmBfKQorCistIEZpeGVkIGFsbCBmbGFrZTggZXJyb3JzIGFuZCB3YXJu
aW5ncy4gKGAjMjU4MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC0KKyAgZGV2L3B5dGVzdC9p
c3N1ZXMvMjU4MT5gXykKKworLSBBZGRlZCBgYGZpeC1saW50YGAgdG94IGVudmlyb25tZW50IHRv
IHJ1biBhdXRvbWF0aWMgcGVwOCBmaXhlcyBvbiB0aGUgY29kZS4KKyAgKGAjMjU4MiA8aHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNTgyPmBfKQorCistIFR1cm4g
d2FybmluZ3MgaW50byBlcnJvcnMgaW4gcHl0ZXN0J3Mgb3duIHRlc3Qgc3VpdGUgaW4gb3JkZXIg
dG8gY2F0Y2gKKyAgcmVncmVzc2lvbnMgZHVlIHRvIGRlcHJlY2F0aW9ucyBtb3JlIHByb21wdGx5
LiAoYCMyNTg4CisgIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzI1ODg+YF8pCisKKy0gU2hvdyBtdWx0aXBsZSBpc3N1ZSBsaW5rcyBpbiBDSEFOR0VMT0cgZW50
cmllcy4gKGAjMjYyMAorICA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8yNjIwPmBfKQorCisKK3B5dGVzdCAzLjEuMyAoMjAxNy0wNy0wMykKKz09PT09PT09PT09
PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBGaXggZGVjb2RlIGVy
cm9yIGluIFB5dGhvbiAyIGZvciBkb2N0ZXN0cyBpbiBkb2NzdHJpbmdzLiAoYCMyNDM0CisgIDxo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0MzQ+YF8pCisKKy0g
RXhjZXB0aW9ucyByYWlzZWQgZHVyaW5nIHRlYXJkb3duIGJ5IGZpbmFsaXplcnMgYXJlIG5vdyBz
dXBwcmVzc2VkIHVudGlsIGFsbAorICBmaW5hbGl6ZXJzIGFyZSBjYWxsZWQsIHdpdGggdGhlIGlu
aXRpYWwgZXhjZXB0aW9uIHJlcmFpc2VkLiAoYCMyNDQwCisgIDxodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0NDA+YF8pCisKKy0gRml4IGluY29ycmVjdCAiY29s
bGVjdGVkIGl0ZW1zIiByZXBvcnQgd2hlbiBzcGVjaWZ5aW5nIHRlc3RzIG9uIHRoZSBjb21tYW5k
LQorICBsaW5lLiAoYCMyNDY0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzI0NjQ+YF8pCisKKy0gYGBkZXByZWNhdGVkX2NhbGxgYCBpbiBjb250ZXh0LW1hbmFn
ZXIgZm9ybSBub3cgY2FwdHVyZXMgZGVwcmVjYXRpb24gd2FybmluZ3MKKyAgZXZlbiBpZiB0aGUg
c2FtZSB3YXJuaW5nIGhhcyBhbHJlYWR5IGJlZW4gcmFpc2VkLiBBbHNvLCBgYGRlcHJlY2F0ZWRf
Y2FsbGBgCisgIHdpbGwgYWx3YXlzIHByb2R1Y2UgdGhlIHNhbWUgZXJyb3IgbWVzc2FnZSAocHJl
dmlvdXNseSBpdCB3b3VsZCBwcm9kdWNlCisgIGRpZmZlcmVudCBtZXNzYWdlcyBpbiBjb250ZXh0
LW1hbmFnZXIgdnMuIGZ1bmN0aW9uLWNhbGwgbW9kZSkuIChgIzI0NjkKKyAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ2OT5gXykKKworLSBGaXggaXNzdWUg
d2hlcmUgcGF0aHMgY29sbGVjdGVkIGJ5IHB5dGVzdCBjb3VsZCBoYXZlIHRyaXBsZSBsZWFkaW5n
IGBgL2BgCisgIGNoYXJhY3RlcnMuIChgIzI0NzUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMjQ3NT5gXykKKworLSBGaXggaW50ZXJuYWwgZXJyb3Igd2hlbiB0
cnlpbmcgdG8gZGV0ZWN0IHRoZSBzdGFydCBvZiBhIHJlY3Vyc2l2ZSB0cmFjZWJhY2suCisgIChg
IzI0ODYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjQ4Nj5g
XykKKworCitJbXByb3ZlZCBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky0gRXhwbGljaXRseSBzdGF0ZSBmb3Igd2hpY2ggaG9va3MgdGhlIGNhbGxzIHN0b3AgYWZ0ZXIg
dGhlIGZpcnN0IG5vbi1Ob25lCisgIHJlc3VsdC4gKGAjMjQ5MyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDkzPmBfKQorCisKK1RyaXZpYWwvSW50ZXJuYWwg
Q2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQ3JlYXRlIGludm9rZSB0YXNr
cyBmb3IgdXBkYXRpbmcgdGhlIHZlbmRvcmVkIHBhY2thZ2VzLiAoYCMyNDc0CisgIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI0NzQ+YF8pCisKKy0gVXBkYXRl
IGNvcHlyaWdodCBkYXRlcyBpbiBMSUNFTlNFLCBSRUFETUUucnN0IGFuZCBpbiB0aGUgZG9jdW1l
bnRhdGlvbi4KKyAgKGAjMjQ5OSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8yNDk5PmBfKQorCisKK3B5dGVzdCAzLjEuMiAoMjAxNy0wNi0wOCkKKz09PT09PT09
PT09PT09PT09PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBSZXF1aXJlZCBv
cHRpb25zIGFkZGVkIHZpYSBgYHB5dGVzdF9hZGRvcHRpb25gYCB3aWxsIG5vIGxvbmdlciBwcmV2
ZW50IHVzaW5nCisgIC0taGVscCB3aXRob3V0IHBhc3NpbmcgdGhlbS4gKCMxOTk5KQorCistIFJl
c3BlY3QgYGBweXRob25fZmlsZXNgYCBpbiBhc3NlcnRpb24gcmV3cml0aW5nLiAoIzIxMjEpCisK
Ky0gRml4IHJlY3Vyc2lvbiBlcnJvciBkZXRlY3Rpb24gd2hlbiBmcmFtZXMgaW4gdGhlIHRyYWNl
YmFjayBjb250YWluIG9iamVjdHMKKyAgdGhhdCBjYW4ndCBiZSBjb21wYXJlZCAobGlrZSBgYG51
bXB5YGAgYXJyYXlzKS4gKCMyNDU5KQorCistIGBgVW5pY29kZVdhcm5pbmdgYCBpcyBpc3N1ZWQg
ZnJvbSB0aGUgaW50ZXJuYWwgcHl0ZXN0IHdhcm5pbmdzIHBsdWdpbiBvbmx5CisgIHdoZW4gdGhl
IG1lc3NhZ2UgY29udGFpbnMgbm9uLWFzY2lpIHVuaWNvZGUgKFB5dGhvbiAyIG9ubHkpLiAoIzI0
NjMpCisKKy0gQWRkZWQgYSB3b3JrYXJvdW5kIGZvciBQeXRob24gMy42IGBgV2luZG93c0NvbnNv
bGVJT2BgIGJyZWFraW5nIGR1ZSB0byBQeXRlc3RzJ3MKKyAgYGBGRENhcHR1cmVgYC4gT3RoZXIg
Y29kZSB1c2luZyBjb25zb2xlIGhhbmRsZXMgbWlnaHQgc3RpbGwgYmUgYWZmZWN0ZWQgYnkgdGhl
CisgIHZlcnkgc2FtZSBpc3N1ZSBhbmQgbWlnaHQgcmVxdWlyZSBmdXJ0aGVyIHdvcmthcm91bmRz
L2ZpeGVzLCBpLmUuIGBgY29sb3JhbWFgYC4KKyAgKCMyNDY3KQorCisKK0ltcHJvdmVkIERvY3Vt
ZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXggaW50ZXJuYWwgQVBJIGxp
bmtzIHRvIGBgcGx1Z2d5YGAgb2JqZWN0cy4gKCMyMzMxKQorCistIE1ha2UgaXQgY2xlYXIgdGhh
dCBgYHB5dGVzdC54ZmFpbGBgIHN0b3BzIHRlc3QgZXhlY3V0aW9uIGF0IHRoZSBjYWxsaW5nIHBv
aW50CisgIGFuZCBpbXByb3ZlIG92ZXJhbGwgZmxvdyBvZiB0aGUgYGBza2lwcGluZ2BgIGRvY3Mu
ICgjODEwKQorCisKK3B5dGVzdCAzLjEuMSAoMjAxNy0wNS0zMCkKKz09PT09PT09PT09PT09PT09
PT09PT09PT0KKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworLSBweXRlc3Qgd2FybmluZyBjYXB0
dXJlIG5vIGxvbmdlciBvdmVycmlkZXMgZXhpc3Rpbmcgd2FybmluZyBmaWx0ZXJzLiBUaGUKKyAg
cHJldmlvdXMgYmVoYXZpb3VyIHdvdWxkIG92ZXJyaWRlIGFsbCBmaWx0ZXJzIGFuZCBjYXVzZWQg
cmVncmVzc2lvbnMgaW4gdGVzdAorICBzdWl0ZXMgd2hpY2ggY29uZmlndXJlIHdhcm5pbmcgZmls
dGVycyB0byBtYXRjaCB0aGVpciBuZWVkcy4gTm90ZSB0aGF0IGFzIGEKKyAgc2lkZS1lZmZlY3Qg
b2YgdGhpcyBpcyB0aGF0IGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgYW5kCisgIGBgUGVuZGluZ0Rl
cHJlY2F0aW9uV2FybmluZ2BgIGFyZSBubyBsb25nZXIgc2hvd24gYnkgZGVmYXVsdC4gKCMyNDMw
KQorCistIEZpeCBpc3N1ZSB3aXRoIG5vbi1hc2NpaSBjb250ZW50cyBpbiBkb2N0ZXN0IHRleHQg
ZmlsZXMuICgjMjQzNCkKKworLSBGaXggZW5jb2RpbmcgZXJyb3JzIGZvciB1bmljb2RlIHdhcm5p
bmdzIGluIFB5dGhvbiAyLiAoIzI0MzYpCisKKy0gYGBweXRlc3QuZGVwcmVjYXRlZF9jYWxsYGAg
bm93IGNhcHR1cmVzIGBgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2BgIGluCisgIGNvbnRleHQg
bWFuYWdlciBmb3JtLiAoIzI0NDEpCisKKworSW1wcm92ZWQgRG9jdW1lbnRhdGlvbgorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCistIEFkZGl0aW9uIG9mIHRvd25jcmllciBmb3IgY2hhbmdlbG9n
IG1hbmFnZW1lbnQuICgjMjM5MCkKKworCiszLjEuMCAoMjAxNy0wNS0yMikKKz09PT09PT09PT09
PT09PT09PQorCisKK05ldyBGZWF0dXJlcworLS0tLS0tLS0tLS0tCisKKyogVGhlIGBgcHl0ZXN0
LXdhcm5pbmdzYGAgcGx1Z2luIGhhcyBiZWVuIGludGVncmF0ZWQgaW50byB0aGUgY29yZSBhbmQg
bm93IGBgcHl0ZXN0YGAgYXV0b21hdGljYWxseQorICBjYXB0dXJlcyBhbmQgZGlzcGxheXMgd2Fy
bmluZ3MgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBzZXNzaW9uLgorCisgIC4uIHdhcm5pbmc6Ogor
CisgICAgVGhpcyBmZWF0dXJlIG1heSBkaXNydXB0IHRlc3Qgc3VpdGVzIHdoaWNoIGFwcGx5IGFu
ZCB0cmVhdCB3YXJuaW5ncyB0aGVtc2VsdmVzLCBhbmQgY2FuIGJlCisgICAgZGlzYWJsZWQgaW4g
eW91ciBgYHB5dGVzdC5pbmlgYDoKKworICAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAg
W3B5dGVzdF0KKyAgICAgIGFkZG9wdHMgPSAtcCBubzp3YXJuaW5ncworCisgICAgU2VlIHRoZSBg
d2FybmluZ3MgZG9jdW1lbnRhdGlvbiBwYWdlIDxodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9z
dGFibGUvd2FybmluZ3MuaHRtbD5gXyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uLgorCisgIFRo
YW5rcyBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEFkZGVkIGBganVuaXRfc3VpdGVf
bmFtZWBgIGluaSBvcHRpb24gdG8gc3BlY2lmeSByb290IGBgPHRlc3RzdWl0ZT5gYCBuYW1lIGZv
ciBKVW5pdCBYTUwgcmVwb3J0cyAoYCM1MzNgXykuCisKKyogQWRkZWQgYW4gaW5pIG9wdGlvbiBg
YGRvY3Rlc3RfZW5jb2RpbmdgYCB0byBzcGVjaWZ5IHdoaWNoIGVuY29kaW5nIHRvIHVzZSBmb3Ig
ZG9jdGVzdCBmaWxlcy4KKyAgVGhhbmtzIGBAd2hlZXJkYF8gZm9yIHRoZSBQUiAoYCMyMTAxYF8p
LgorCisqIGBgcHl0ZXN0Lndhcm5zYGAgbm93IGNoZWNrcyBmb3Igc3ViY2xhc3MgcmVsYXRpb25z
aGlwIHJhdGhlciB0aGFuCisgIGNsYXNzIGVxdWFsaXR5LiBUaGFua3MgYEBsZXN0ZXZlYF8gZm9y
IHRoZSBQUiAoYCMyMTY2YF8pCisKKyogYGBweXRlc3QucmFpc2VzYGAgbm93IGFzc2VydHMgdGhh
dCB0aGUgZXJyb3IgbWVzc2FnZSBtYXRjaGVzIGEgdGV4dCBvciByZWdleAorICB3aXRoIHRoZSBg
YG1hdGNoYGAga2V5d29yZCBhcmd1bWVudC4gVGhhbmtzIGBAS3JpZWNoaWBfIGZvciB0aGUgUFIu
CisKKyogYGBweXRlc3QucGFyYW1gYCBjYW4gYmUgdXNlZCB0byBkZWNsYXJlIHRlc3QgcGFyYW1l
dGVyIHNldHMgd2l0aCBtYXJrcyBhbmQgdGVzdCBpZHMuCisgIFRoYW5rcyBgQFJvbm55UGZhbm5z
Y2htaWR0YF8gZm9yIHRoZSBQUi4KKworCitDaGFuZ2VzCistLS0tLS0tCisKKyogcmVtb3ZlIGFs
bCBpbnRlcm5hbCB1c2VzIG9mIHB5dGVzdF9uYW1lc3BhY2UgaG9va3MsCisgIHRoaXMgaXMgdG8g
cHJlcGFyZSB0aGUgcmVtb3ZhbCBvZiBwcmVsb2FkY29uZmlnIGluIHB5dGVzdCA0LjAKKyAgVGhh
bmtzIHRvIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3IgdGhlIFBSLgorCisqIHB5dGVzdCBub3cg
d2FybnMgd2hlbiBhIGNhbGxhYmxlIGlkcyByYWlzZXMgaW4gYSBwYXJhbWV0cml6ZWQgdGVzdC4g
VGhhbmtzIGBAZm9nb2BfIGZvciB0aGUgUFIuCisKKyogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNr
aXAgdGVzdCBjbGFzc2VzIGZyb20gYmVpbmcgY29sbGVjdGVkIGJ5IHNldHRpbmcgYQorICBgYF9f
dGVzdF9fYGAgYXR0cmlidXRlIHRvIGBgRmFsc2VgYCBpbiB0aGUgY2xhc3MgYm9keSAoYCMyMDA3
YF8pLiBUaGFua3MKKyAgdG8gYEBzeXJlYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbHdtYF8gZm9y
IHRoZSBQUi4KKworKiBDaGFuZ2UganVuaXR4bWwucHkgdG8gcHJvZHVjZSByZXBvcnRzIHRoYXQg
Y29tcGx5IHdpdGggSnVuaXR4bWwgc2NoZW1hLgorICBJZiB0aGUgc2FtZSB0ZXN0IGZhaWxzIHdp
dGggZmFpbHVyZSBpbiBjYWxsIGFuZCB0aGVuIGVycm9ycyBpbiB0ZWFyZG93bgorICB3ZSBzcGxp
dCB0ZXN0Y2FzZSBlbGVtZW50IGludG8gdHdvLCBvbmUgY29udGFpbmluZyB0aGUgZXJyb3IgYW5k
IHRoZSBvdGhlcgorICB0aGUgZmFpbHVyZS4gKGAjMjIyOGBfKSBUaGFua3MgdG8gYEBra291a2lv
dWBfIGZvciB0aGUgUFIuCisKKyogVGVzdGNhc2UgcmVwb3J0cyB3aXRoIGEgYGB1cmxgYCBhdHRy
aWJ1dGUgd2lsbCBub3cgcHJvcGVybHkgd3JpdGUgdGhpcyB0byBqdW5pdHhtbC4KKyAgVGhhbmtz
IGBAZnVzaGlgXyBmb3IgdGhlIFBSIChgIzE4NzRgXykuCisKKyogUmVtb3ZlIGNvbW1vbiBpdGVt
cyBmcm9tIGRpY3QgY29tcGFyaXNvbiBvdXRwdXQgd2hlbiB2ZXJib3NpdHk9MS4gQWxzbyB1cGRh
dGUKKyAgdGhlIHRydW5jYXRpb24gbWVzc2FnZSB0byBtYWtlIGl0IGNsZWFyZXIgdGhhdCBweXRl
c3QgdHJ1bmNhdGVzIGFsbAorICBhc3NlcnRpb24gbWVzc2FnZXMgaWYgdmVyYm9zaXR5IDwgMiAo
YCMxNTEyYF8pLgorICBUaGFua3MgYEBtYXR0ZHVja2BfIGZvciB0aGUgUFIKKworKiBgYC0tcGRi
Y2xzYGAgbm8gbG9uZ2VyIGltcGxpZXMgYGAtLXBkYmBgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxl
IHRvIHVzZQorICBgYGFkZG9wdHM9LS1wZGJjbHM9bW9kdWxlLlNvbWVDbGFzc2BgIG9uIGBgcHl0
ZXN0LmluaWBgLiBUaGFua3MgYEBkYXZpZHN6b3R0ZW5gXyBmb3IKKyAgdGhlIFBSIChgIzE5NTJg
XykuCisKKyogZml4IGAjMjAxM2BfOiB0dXJuIFJlY29yZGVkV2FybmluZyBpbnRvIGBgbmFtZWR0
dXBsZWBgLAorICB0byBnaXZlIGl0IGEgY29tcHJlaGVuc2libGUgcmVwciB3aGlsZSBwcmV2ZW50
aW5nIHVud2FycmFudGVkIG1vZGlmaWNhdGlvbi4KKworKiBmaXggYCMyMjA4YF86IGVuc3VyZSBh
biBpdGVyYXRpb24gbGltaXQgZm9yIF9weXRlc3QuY29tcGF0LmdldF9yZWFsX2Z1bmMuCisgIFRo
YW5rcyBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yIHRoZSByZXBvcnQgYW5kIFBSLgorCisqIEhv
b2tzIGFyZSBub3cgdmVyaWZpZWQgYWZ0ZXIgY29sbGVjdGlvbiBpcyBjb21wbGV0ZSwgcmF0aGVy
IHRoYW4gcmlnaHQgYWZ0ZXIgbG9hZGluZyBpbnN0YWxsZWQgcGx1Z2lucy4gVGhpcworICBtYWtl
cyBpdCBlYXN5IHRvIHdyaXRlIGhvb2tzIGZvciBwbHVnaW5zIHdoaWNoIHdpbGwgYmUgbG9hZGVk
IGR1cmluZyBjb2xsZWN0aW9uLCBmb3IgZXhhbXBsZSB1c2luZyB0aGUKKyAgYGBweXRlc3RfcGx1
Z2luc2BgIHNwZWNpYWwgdmFyaWFibGUgKGAjMTgyMWBfKS4KKyAgVGhhbmtzIGBAbmljb2RkZW11
c2BfIGZvciB0aGUgUFIuCisKKyogTW9kaWZ5IGBgcHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQo
KWBgIGhvb2sgdG8gYWNjZXB0IGBgYXJnbmFtZWBgIGFzIGFuCisgIGFkZGl0aW9uYWwgcGFyYW1l
dGVyLgorICBUaGFua3MgYEB1bnNpZ25lZGludGBfIGZvciB0aGUgUFIuCisKKyogQWRkIGBgdmVu
dmBgIHRvIHRoZSBkZWZhdWx0IGBgbm9yZWN1cnNlZGlyc2BgIHNldHRpbmcuCisgIFRoYW5rcyBg
QFRoZS1Db21waWxlcmBfIGZvciB0aGUgUFIuCisKKyogYGBQbHVnaW5NYW5hZ2VyLmltcG9ydF9w
bHVnaW5gYCBub3cgYWNjZXB0cyB1bmljb2RlIHBsdWdpbiBuYW1lcyBpbiBQeXRob24gMi4KKyAg
VGhhbmtzIGBAcmV1dHNoYXJhYmFuaWBfIGZvciB0aGUgUFIuCisKKyogZml4IGAjMjMwOGBfOiBX
aGVuIHVzaW5nIGJvdGggYGAtLWxmYGAgYW5kIGBgLS1mZmBgLCBvbmx5IHRoZSBsYXN0IGZhaWxl
ZCB0ZXN0cyBhcmUgcnVuLgorICBUaGFua3MgYEBvamlpYF8gZm9yIHRoZSBQUi4KKworKiBSZXBs
YWNlIG1pbm9yL3BhdGNoIGxldmVsIHZlcnNpb24gbnVtYmVycyBpbiB0aGUgZG9jdW1lbnRhdGlv
biB3aXRoIHBsYWNlaG9sZGVycy4KKyAgVGhpcyBzaWduaWZpY2FudGx5IHJlZHVjZXMgY2hhbmdl
LW5vaXNlIGFzIGRpZmZlcmVudCBjb250cmlidXRvcnMgcmVnbmVyYXRlCisgIHRoZSBkb2N1bWVu
dGF0aW9uIG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMuCisgIFRoYW5rcyBgQFJvbm55UGZhbm5zY2ht
aWR0YF8gZm9yIHRoZSBQUi4KKworKiBmaXggYCMyMzkxYF86IGNvbnNpZGVyIHB5dGVzdF9wbHVn
aW5zIG9uIGFsbCBwbHVnaW4gbW9kdWxlcworICBUaGFua3MgYEBSb25ueVBmYW5uc2NobWlkdGBf
IGZvciB0aGUgUFIuCisKKworQnVnIEZpeGVzCistLS0tLS0tLS0KKworKiBGaXggYGBBdHRyaWJ1
dGVFcnJvcmBgIG9uIGBgc3lzLnN0ZG91dC5idWZmZXJgYCAvIGBgc3lzLnN0ZGVyci5idWZmZXJg
YAorICB3aGlsZSB1c2luZyBgYGNhcHN5c2BgIGZpeHR1cmUgaW4gcHl0aG9uIDMuIChgIzE0MDdg
XykuCisgIFRoYW5rcyB0byBgQGFzb3R0aWxlYF8uCisKKyogQ2hhbmdlIGNhcHR1cmUucHkncyBg
YERvbnRSZWFkRnJvbUlucHV0YGAgY2xhc3MgdG8gdGhyb3cgYGBpby5VbnN1cHBvcnRlZE9wZXJh
dGlvbmBgIGVycm9ycyByYXRoZXIKKyAgdGhhbiBWYWx1ZUVycm9ycyBpbiB0aGUgYGBmaWxlbm9g
YCBtZXRob2QgKGAjMjI3NmBfKS4KKyAgVGhhbmtzIGBAbWV0YXN5bmBfIGFuZCBgQHZsYWQtZHJh
Z29zYF8gZm9yIHRoZSBQUi4KKworKiBGaXggZXhjZXB0aW9uIGZvcm1hdHRpbmcgd2hpbGUgaW1w
b3J0aW5nIG1vZHVsZXMgd2hlbiB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UKKyAgY29udGFpbnMgbm9u
LWFzY2lpIGNoYXJhY3RlcnMgKGAjMjMzNmBfKS4KKyAgVGhhbmtzIGBAZmFiaW96YF8gZm9yIHRo
ZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogQWRkZWQgZG9jdW1l
bnRhdGlvbiByZWxhdGVkIHRvIGlzc3VlIChgIzE5MzdgXykKKyAgVGhhbmtzIGBAc2t5bGFyamhk
b3duZXNgXyBmb3IgdGhlIFBSLgorCisqIEFsbG93IGNvbGxlY3RpbmcgZmlsZXMgd2l0aCBhbnkg
ZmlsZSBleHRlbnNpb24gYXMgUHl0aG9uIG1vZHVsZXMgKGAjMjM2OWBfKS4KKyAgVGhhbmtzIGBA
S29kaW9sb2dpc3RgXyBmb3IgdGhlIFBSLgorCisqIFNob3cgdGhlIGNvcnJlY3QgZXJyb3IgbWVz
c2FnZSB3aGVuIGNvbGxlY3QgInBhcmFtZXRyaXplIiBmdW5jIHdpdGggd3JvbmcgYXJncyAoYCMy
MzgzYF8pLgorICBUaGFua3MgYEBUaGUtQ29tcGlsZXJgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBy
b2JpbjAzNzFgXyBmb3IgdGhlIFBSLgorCisKKy4uIF9AZGF2aWRzem90dGVuOiBodHRwczovL2dp
dGh1Yi5jb20vZGF2aWRzem90dGVuCisuLiBfQGZhYmlvejogaHR0cHM6Ly9naXRodWIuY29tL2Zh
YmlvegorLi4gX0Bmb2dvOiBodHRwczovL2dpdGh1Yi5jb20vZm9nbworLi4gX0BmdXNoaTogaHR0
cHM6Ly9naXRodWIuY29tL2Z1c2hpCisuLiBfQEtvZGlvbG9naXN0OiBodHRwczovL2dpdGh1Yi5j
b20vS29kaW9sb2dpc3QKKy4uIF9AS3JpZWNoaTogaHR0cHM6Ly9naXRodWIuY29tL0tyaWVjaGkK
Ky4uIF9AbWFuZGVlcDogaHR0cHM6Ly9naXRodWIuY29tL21hbmRlZXAKKy4uIF9AbWF0dGR1Y2s6
IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXR0ZHVjaworLi4gX0BtZXRhc3luOiBodHRwczovL2dpdGh1
Yi5jb20vbWV0YXN5bgorLi4gX0BNaWNoYWxUSEVEVURFOiBodHRwczovL2dpdGh1Yi5jb20vTWlj
aGFsVEhFRFVERQorLi4gX0BvamlpOiBodHRwczovL2dpdGh1Yi5jb20vb2ppaQorLi4gX0ByZXV0
c2hhcmFiYW5pOiBodHRwczovL2dpdGh1Yi5jb20vcmV1dHNoYXJhYmFuaQorLi4gX0Byb2JpbjAz
NzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JpbjAzNzEKKy4uIF9Ac2t5bGFyamhkb3duZXM6IGh0
dHBzOi8vZ2l0aHViLmNvbS9za3lsYXJqaGRvd25lcworLi4gX0B1bnNpZ25lZGludDogaHR0cHM6
Ly9naXRodWIuY29tL3Vuc2lnbmVkaW50CisuLiBfQHdoZWVyZDogaHR0cHM6Ly9naXRodWIuY29t
L3doZWVyZAorCisKKy4uIF8jMTQwNzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xNDA3CisuLiBfIzE1MTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMTUxMgorLi4gXyMxODIxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzE4MjEKKy4uIF8jMTg3NDogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTg3NAorLi4gXyMxOTM3OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5MzcKKy4uIF8jMTk1MjogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTk1MgorLi4gXyMyMDA3OiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwMDcKKy4uIF8jMjAxMzogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDEzCisuLiBfIzIxMDE6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzIxMDEKKy4uIF8jMjE2NjogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMjE2NgorLi4gXyMyMjA4OiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyMDgKKy4uIF8jMjIy
ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjI4CisuLiBf
IzIyNzY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjI3Ngor
Li4gXyMyMzA4OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIz
MDgKKy4uIF8jMjMzNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yMzM2CisuLiBfIzIzNjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMjM2OQorLi4gXyMyMzgzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzIzODMKKy4uIF8jMjM5MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8yMzkxCisuLiBfIzUzMzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy81MzMKKworCisKKzMuMC43ICgyMDE3LTAzLTE0KQorPT09PT09PT09
PT09PT09PT09CisKKworKiBGaXggaXNzdWUgaW4gYXNzZXJ0aW9uIHJld3JpdGluZyBicmVha2lu
ZyBkdWUgdG8gbW9kdWxlcyBzaWxlbnRseSBkaXNjYXJkaW5nCisgIG90aGVyIG1vZHVsZXMgd2hl
biBpbXBvcnRpbmcgZmFpbHMKKyAgTm90YWJseSwgaW1wb3J0aW5nIHRoZSBgYGFueWRibWBgIG1v
ZHVsZSBpcyBmaXhlZC4gKGAjMjI0OGBfKS4KKyAgVGhhbmtzIGBAcGZoYXllc2BfIGZvciB0aGUg
UFIuCisKKyoganVuaXR4bWw6IEZpeCBwcm9ibGVtYXRpYyBjYXNlIHdoZXJlIHN5c3RlbS1vdXQg
dGFnIG9jY3VycmVkIHR3aWNlIHBlciB0ZXN0Y2FzZQorICBlbGVtZW50IGluIHRoZSBYTUwgcmVw
b3J0LiBUaGFua3MgYEBra291a2lvdWBfIGZvciB0aGUgUFIuCisKKyogRml4IHJlZ3Jlc3Npb24s
IHB5dGVzdCBub3cgc2tpcHMgdW5pdHRlc3QgY29ycmVjdGx5IGlmIHJ1biB3aXRoIGBgLS1wZGJg
YAorICAoYCMyMTM3YF8pLiBUaGFua3MgdG8gYEBnc3RgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBt
Ynl0YF8gZm9yIHRoZSBQUi4KKworKiBJZ25vcmUgZXhjZXB0aW9ucyByYWlzZWQgZnJvbSBkZXNj
cmlwdG9ycyAoZS5nLiBwcm9wZXJ0aWVzKSBkdXJpbmcgUHl0aG9uIHRlc3QgY29sbGVjdGlvbiAo
YCMyMjM0YF8pLgorICBUaGFua3MgdG8gYEBibHVldGVjaGBfLgorCisqIGBgLS1vdmVycmlkZS1p
bmlgYCBub3cgY29ycmVjdGx5IG92ZXJyaWRlcyBzb21lIGZ1bmRhbWVudGFsIG9wdGlvbnMgbGlr
ZSBgYHB5dGhvbl9maWxlc2BgIChgIzIyMzhgXykuCisgIFRoYW5rcyBgQHNpcmV4YF8gZm9yIHRo
ZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogUmVwbGFjZSBgYHJh
aXNlIFN0b3BJdGVyYXRpb25gYCB1c2FnZXMgaW4gdGhlIGNvZGUgYnkgc2ltcGxlIGBgcmV0dXJu
c2BgIHRvIGZpbmlzaCBnZW5lcmF0b3JzLCBpbiBhY2NvcmRhbmNlIHRvIGBQRVAtNDc5YF8gKGAj
MjE2MGBfKS4KKyAgVGhhbmtzIHRvIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogRml4
IGludGVybmFsIGVycm9ycyB3aGVuIGFuIHVucHJpbnRhYmxlIGBgQXNzZXJ0aW9uRXJyb3JgYCBp
cyByYWlzZWQgaW5zaWRlIGEgdGVzdC4KKyAgVGhhbmtzIGBAb21lcmhhZGFyaWBfIGZvciB0aGUg
UFIuCisKKyogU2tpcHBpbmcgcGx1Z2luIG5vdyBhbHNvIHdvcmtzIHdpdGggdGVzdCBpdGVtcyBn
ZW5lcmF0ZWQgYnkgY3VzdG9tIGNvbGxlY3RvcnMgKGAjMjIzMWBfKS4KKyAgVGhhbmtzIHRvIGBA
dmlkYXJ0ZmBfLgorCisqIEZpeCB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIGNvbnNvbGUgb3V0cHV0
IGlmIG5vIC5pbmkgZmlsZSBwcmVzZW50ZWQgKGAjMjI4MWBfKS4gVGhhbmtzIGBAZmJqb3JuYF8g
Zm9yIHRoZSBQUi4KKworKiBDb25kaXRpb25sZXNzIGBgeGZhaWxgYCBtYXJrZXJzIG5vIGxvbmdl
ciByZWx5IG9uIHRoZSB1bmRlcmx5aW5nIHRlc3QgaXRlbQorICBiZWluZyBhbiBpbnN0YW5jZSBv
ZiBgYFB5b2JqTWl4aW5gYCwgYW5kIGNhbiB0aGVyZWZvcmUgYXBwbHkgdG8gdGVzdHMgbm90Cisg
IGNvbGxlY3RlZCBieSB0aGUgYnVpbHQtaW4gcHl0aG9uIHRlc3QgY29sbGVjdG9yLiBUaGFua3Mg
YEBiYXJuZXlnYWxlYF8gZm9yIHRoZQorICBQUi4KKworCisuLiBfQHBmaGF5ZXM6IGh0dHBzOi8v
Z2l0aHViLmNvbS9wZmhheWVzCisuLiBfQGJsdWV0ZWNoOiBodHRwczovL2dpdGh1Yi5jb20vYmx1
ZXRlY2gKKy4uIF9AZ3N0OiBodHRwczovL2dpdGh1Yi5jb20vZ3N0CisuLiBfQHNpcmV4OiBodHRw
czovL2dpdGh1Yi5jb20vc2lyZXgKKy4uIF9AdmlkYXJ0ZjogaHR0cHM6Ly9naXRodWIuY29tL3Zp
ZGFydGYKKy4uIF9Aa2tvdWtpb3U6IGh0dHBzOi8vZ2l0aHViLmNvbS9LS291a2lvdQorLi4gX0Bv
bWVyaGFkYXJpOiBodHRwczovL2dpdGh1Yi5jb20vb21lcmhhZGFyaQorLi4gX0BmYmpvcm46IGh0
dHBzOi8vZ2l0aHViLmNvbS9mYmpvcm4KKworLi4gXyMyMjQ4OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyNDgKKy4uIF8jMjEzNzogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTM3CisuLiBfIzIxNjA6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjE2MAorLi4gXyMyMjMxOiBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyMzEKKy4uIF8jMjIzNDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMjM0CisuLiBfIzIyMzg6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjIzOAorLi4gXyMy
MjgxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIyODEKKwor
Li4gX1BFUC00Nzk6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzkvCisK
KworMy4wLjYgKDIwMTctMDEtMjIpCis9PT09PT09PT09PT09PT09PT0KKworKiBweXRlc3Qgbm8g
bG9uZ2VyIGdlbmVyYXRlcyBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYCBmcm9tIGl0cyBv
d24gb3BlcmF0aW9ucywgd2hpY2ggd2FzIGludHJvZHVjZWQgYnkgbWlzdGFrZSBpbiB2ZXJzaW9u
IGBgMy4wLjVgYCAoYCMyMTE4YF8pLgorICBUaGFua3MgdG8gYEBuaWNvZGRlbXVzYF8gZm9yIHRo
ZSByZXBvcnQgYW5kIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3IgdGhlIFBSLgorCisKKyogcHl0
ZXN0IG5vIGxvbmdlciByZWNvZ25pemVzIGNvcm91dGluZSBmdW5jdGlvbnMgYXMgeWllbGQgdGVz
dHMgKGAjMjEyOWBfKS4KKyAgVGhhbmtzIHRvIGBAbWFsaW5vZmZgXyBmb3IgdGhlIFBSLgorCisq
IFBsdWdpbnMgbG9hZGVkIGJ5IHRoZSBgYFBZVEVTVF9QTFVHSU5TYGAgZW52aXJvbm1lbnQgdmFy
aWFibGUgYXJlIG5vdyBhdXRvbWF0aWNhbGx5CisgIGNvbnNpZGVyZWQgZm9yIGFzc2VydGlvbiBy
ZXdyaXRpbmcgKGAjMjE4NWBfKS4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIu
CisKKyogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gcHl0ZXN0Lndhcm5zIGZhaWxzIChgIzIx
NTBgXykuIFRoZSB0eXBlKHMpIG9mIHRoZQorICBleHBlY3RlZCB3YXJuaW5ncyBhbmQgdGhlIGxp
c3Qgb2YgY2F1Z2h0IHdhcm5pbmdzIGlzIGFkZGVkIHRvIHRoZQorICBlcnJvciBtZXNzYWdlLiBU
aGFua3MgYEBsZXN0ZXZlYF8gZm9yIHRoZSBQUi4KKworKiBGaXggYGBweXRlc3RlcmBgIGludGVy
bmFsIHBsdWdpbiB0byB3b3JrIGNvcnJlY3RseSB3aXRoIGxhdGVzdCB2ZXJzaW9ucyBvZgorICBg
YHpvcGUuaW50ZXJmYWNlYGAgKGAjMTk4OWBfKS4gVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0
aGUgUFIuCisKKyogQXNzZXJ0IHN0YXRlbWVudHMgb2YgdGhlIGBgcHl0ZXN0ZXJgYCBwbHVnaW4g
YWdhaW4gYmVuZWZpdCBmcm9tIGFzc2VydGlvbiByZXdyaXRpbmcgKGAjMTkyMGBfKS4KKyAgVGhh
bmtzIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVz
YF8gZm9yIHRoZSBQUi4KKworKiBTcGVjaWZ5aW5nIHRlc3RzIHdpdGggY29sb25zIGxpa2UgYGB0
ZXN0X2Zvby5weTo6dGVzdF9iYXJgYCBmb3IgdGVzdHMgaW4KKyAgc3ViZGlyZWN0b3JpZXMgd2l0
aCBpbmkgY29uZmlndXJhdGlvbiBmaWxlcyBub3cgdXNlcyB0aGUgY29ycmVjdCBpbmkgZmlsZQor
ICAoYCMyMTQ4YF8pLiAgVGhhbmtzIGBAcGVsbWVgXy4KKworKiBGYWlsIGBgdGVzdGRpci5ydW5w
eXRlc3QoKS5hc3NlcnRfb3V0Y29tZXMoKWBgIGV4cGxpY2l0bHkgaWYgdGhlIHB5dGVzdAorICB0
ZXJtaW5hbCBvdXRwdXQgaXQgcmVsaWVzIG9uIGlzIG1pc3NpbmcuIFRoYW5rcyB0byBgQGVsaS1i
YF8gZm9yIHRoZSBQUi4KKworCisuLiBfQGJhcm5leWdhbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9i
YXJuZXlnYWxlCisuLiBfQGxlc3RldmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZXN0ZXZlCisuLiBf
QG1hbGlub2ZmOiBodHRwczovL2dpdGh1Yi5jb20vbWFsaW5vZmYKKy4uIF9AcGVsbWU6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9wZWxtZQorLi4gX0BlbGktYjogaHR0cHM6Ly9naXRodWIuY29tL2VsaS1i
CisKKy4uIF8jMjExODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8yMTE4CisKKy4uIF8jMTk4OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xOTg5CisuLiBfIzE5MjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMTkyMAorLi4gXyMyMTI5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzIxMjkKKy4uIF8jMjE0ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMTQ4CisuLiBfIzIxNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjE1MAorLi4gXyMyMTg1OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxODUKKworCiszLjAuNSAoMjAxNi0xMi0wNSkK
Kz09PT09PT09PT09PT09PT09PQorCisqIEFkZCB3YXJuaW5nIHdoZW4gbm90IHBhc3NpbmcgYGBv
cHRpb249dmFsdWVgYCBjb3JyZWN0bHkgdG8gYGAtby8tLW92ZXJyaWRlLWluaWBgIChgIzIxMDVg
XykuCisgIEFsc28gaW1wcm92ZWQgdGhlIGhlbHAgZG9jdW1lbnRhdGlvbi4gVGhhbmtzIHRvIGBA
bWJ1a2F0b3ZgXyBmb3IgdGhlIHJlcG9ydCBhbmQKKyAgYEBsd21gXyBmb3IgdGhlIFBSLgorCisq
IE5vdyBgYC0tY29uZmN1dGRpcmBgIGFuZCBgYC0tanVuaXQteG1sYGAgYXJlIHByb3Blcmx5IHZh
bGlkYXRlZCBpZiB0aGV5IGFyZSBkaXJlY3RvcmllcworICBhbmQgZmlsZW5hbWVzLCByZXNwZWN0
aXZlbHkgKGAjMjA4OWBfIGFuZCBgIzIwNzhgXykuIFRoYW5rcyB0byBgQGx3bWBfIGZvciB0aGUg
UFIuCisKKyogQWRkIGhpbnQgdG8gZXJyb3IgbWVzc2FnZSBoaW50aW5nIHBvc3NpYmxlIG1pc3Np
bmcgYGBfX2luaXRfXy5weWBgIChgIzQ3OGBfKS4gVGhhbmtzIGBARHVuY2FuQmV0dHNgXy4KKwor
KiBNb3JlIGFjY3VyYXRlbHkgZGVzY3JpYmUgd2hlbiBmaXh0dXJlIGZpbmFsaXphdGlvbiBvY2N1
cnMgaW4gZG9jdW1lbnRhdGlvbiAoYCM2ODdgXykuIFRoYW5rcyBgQER1bmNhbkJldHRzYF8uCisK
KyogUHJvdmlkZSBgYDpyZWY6YGAgdGFyZ2V0cyBmb3IgYGByZWN3YXJuLnJzdGBgIHNvIHdlIGNh
biB1c2UgaW50ZXJzcGhpbnggcmVmZXJlbmNpbmcuCisgIFRoYW5rcyB0byBgQGR1cHV5YF8gZm9y
IHRoZSByZXBvcnQgYW5kIGBAbHdtYF8gZm9yIHRoZSBQUi4KKworKiBJbiBQeXRob24gMiwgdXNl
IGEgc2ltcGxlIGBgKy1gYCBBU0NJSSBzdHJpbmcgaW4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlv
biBvZiBgYHB5dGVzdC5hcHByb3hgYCAoZm9yIGV4YW1wbGUgYGAiNCArLSA0LjBlLTA2ImBgKQor
ICBiZWNhdXNlIGl0IGlzIGJyaXR0bGUgdG8gaGFuZGxlIHRoYXQgaW4gZGlmZmVyZW50IGNvbnRl
eHRzIGFuZCByZXByZXNlbnRhdGlvbnMgaW50ZXJuYWxseSBpbiBweXRlc3QKKyAgd2hpY2ggY2Fu
IHJlc3VsdCBpbiBidWdzIHN1Y2ggYXMgYCMyMTExYF8uIEluIFB5dGhvbiAzLCB0aGUgcmVwcmVz
ZW50YXRpb24gc3RpbGwgdXNlcyBgYMKxYGAgKGZvciBleGFtcGxlIGBgNCDCsSA0LjBlLTA2YGAp
LgorICBUaGFua3MgYEBrZXJyaWNrLWx5ZnRgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRl
bXVzYF8gZm9yIHRoZSBQUi4KKworKiBVc2luZyBgYGl0ZW0uRnVuY3Rpb25gYCwgYGBpdGVtLk1v
ZHVsZWBgLCBldGMuLCBpcyBub3cgaXNzdWluZyBkZXByZWNhdGlvbiB3YXJuaW5ncywgcHJlZmVy
CisgIGBgcHl0ZXN0LkZ1bmN0aW9uYGAsIGBgcHl0ZXN0Lk1vZHVsZWBgLCBldGMuLCBpbnN0ZWFk
IChgIzIwMzRgXykuCisgIFRoYW5rcyBgQG5tdW5kYXJgXyBmb3IgdGhlIFBSLgorCisqIEZpeCBl
cnJvciBtZXNzYWdlIHVzaW5nIGBgYXBwcm94YGAgd2l0aCBjb21wbGV4IG51bWJlcnMgKGAjMjA4
MmBfKS4KKyAgVGhhbmtzIGBAYWRsZXItamBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVt
dXNgXyBmb3IgdGhlIFBSLgorCisqIEZpeGVkIGZhbHNlLXBvc2l0aXZlcyB3YXJuaW5ncyBmcm9t
IGFzc2VydGlvbiByZXdyaXRlIGhvb2sgZm9yIG1vZHVsZXMgaW1wb3J0ZWQgbW9yZSB0aGFuCisg
IG9uY2UgYnkgdGhlIGBgcHl0ZXN0X3BsdWdpbnNgYCBtZWNoYW5pc20uCisgIFRoYW5rcyBgQG5p
Y29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIFJlbW92ZSBhbiBpbnRlcm5hbCBjYWNoZSB3aGlj
aCBjb3VsZCBjYXVzZSBob29rcyBmcm9tIGBgY29uZnRlc3QucHlgYCBmaWxlcyBpbgorICBzdWIt
ZGlyZWN0b3JpZXMgdG8gYmUgY2FsbGVkIGluIG90aGVyIGRpcmVjdG9yaWVzIGluY29ycmVjdGx5
IChgIzIwMTZgXykuCisgIFRoYW5rcyBgQGQtYi13YF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmlj
b2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogUmVtb3ZlIGludGVybmFsIGNvZGUgbWVhbnQgdG8g
c3VwcG9ydCBlYXJsaWVyIFB5dGhvbiAzIHZlcnNpb25zIHRoYXQgcHJvZHVjZWQgdGhlIHNpZGUg
ZWZmZWN0CisgIG9mIGxlYXZpbmcgYGBOb25lYGAgaW4gYGBzeXMubW9kdWxlc2BgIHdoZW4gZXhw
cmVzc2lvbnMgd2VyZSBldmFsdWF0ZWQgYnkgcHl0ZXN0IChmb3IgZXhhbXBsZSBwYXNzaW5nIGEg
Y29uZGl0aW9uCisgIGFzIGEgc3RyaW5nIHRvIGBgcHl0ZXN0Lm1hcmsuc2tpcGlmYGApKGAjMjEw
M2BfKS4KKyAgVGhhbmtzIGBAamFyYWNvYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11
c2BfIGZvciB0aGUgUFIuCisKKyogQ29wZSBncmFjZWZ1bGx5IHdpdGggYSAucHljIGZpbGUgd2l0
aCBubyBtYXRjaGluZyAucHkgZmlsZSAoYCMyMDM4YF8pLiBUaGFua3MKKyAgYEBuZWRiYXRgXy4K
KworLi4gX0BzeXJlOiBodHRwczovL2dpdGh1Yi5jb20vc3lyZQorLi4gX0BhZGxlci1qOiBodHRw
czovL2dpdGh1Yi5jb20vYWRsZXItagorLi4gX0BkLWItdzogaHR0cHM6Ly9naXRodWIuY29tL2Qt
Yi13CisuLiBfQER1bmNhbkJldHRzOiBodHRwczovL2dpdGh1Yi5jb20vRHVuY2FuQmV0dHMKKy4u
IF9AZHVwdXk6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9kdXB1eS8KKy4uIF9Aa2Vycmljay1seWZ0
OiBodHRwczovL2dpdGh1Yi5jb20va2Vycmljay1seWZ0CisuLiBfQGx3bTogaHR0cHM6Ly9naXRo
dWIuY29tL2x3bQorLi4gX0BtYnVrYXRvdjogaHR0cHM6Ly9naXRodWIuY29tL21idWthdG92Cisu
LiBfQG5lZGJhdDogaHR0cHM6Ly9naXRodWIuY29tL25lZGJhdAorLi4gX0BubXVuZGFyOiBodHRw
czovL2dpdGh1Yi5jb20vbm11bmRhcgorCisuLiBfIzIwMTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjAxNgorLi4gXyMyMDM0OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwMzQKKy4uIF8jMjAzODogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDM4CisuLiBfIzIwNzg6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjA3OAorLi4gXyMyMDgyOiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwODIKKy4uIF8jMjA4OTog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDg5CisuLiBfIzIx
MDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMjEwMworLi4g
XyMyMTA1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxMDUK
Ky4uIF8jMjExMTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8y
MTExCisuLiBfIzQ3ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy80NzgKKy4uIF8jNjg3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzY4NworCisKKzMuMC40ICgyMDE2LTExLTA5KQorPT09PT09PT09PT09PT09PT09CisKKyog
SW1wb3J0IGVycm9ycyB3aGVuIGNvbGxlY3RpbmcgdGVzdCBtb2R1bGVzIG5vdyBkaXNwbGF5IHRo
ZSBmdWxsIHRyYWNlYmFjayAoYCMxOTc2YF8pLgorICBUaGFua3MgYEBjd2l0dHlgXyBmb3IgdGhl
IHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBGaXggY29uZnVzaW5n
IGNvbW1hbmQtbGluZSBoZWxwIG1lc3NhZ2UgZm9yIGN1c3RvbSBvcHRpb25zIHdpdGggdHdvIG9y
IG1vcmUgYGBtZXRhdmFyYGAgcHJvcGVydGllcyAoYCMyMDA0YF8pLgorICBUaGFua3MgYEBva3Vs
eW55YWtgXyBhbmQgYEBkYXZlaHVudGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNg
XyBmb3IgdGhlIFBSLgorCisqIFdoZW4gbG9hZGluZyBwbHVnaW5zLCBpbXBvcnQgZXJyb3JzIHdo
aWNoIGNvbnRhaW4gbm9uLWFzY2lpIG1lc3NhZ2VzIGFyZSBub3cgcHJvcGVybHkgaGFuZGxlZCBp
biBQeXRob24gMiAoYCMxOTk4YF8pLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KKworKiBGaXhlZCBjeWNsaWMgcmVmZXJlbmNlIHdoZW4gYGBweXRlc3QucmFpc2VzYGAgaXMg
dXNlZCBpbiBjb250ZXh0LW1hbmFnZXIgZm9ybSAoYCMxOTY1YF8pLiBBbHNvIGFzIGEKKyAgcmVz
dWx0IG9mIHRoaXMgZml4LCBgYHN5cy5leGNfaW5mbygpYGAgaXMgbGVmdCBlbXB0eSBpbiBib3Ro
IGNvbnRleHQtbWFuYWdlciBhbmQgZnVuY3Rpb24gY2FsbCB1c2FnZXMuCisgIFByZXZpb3VzbHks
IGBgc3lzLmV4Y19pbmZvYGAgd291bGQgY29udGFpbiB0aGUgZXhjZXB0aW9uIGNhdWdodCBieSB0
aGUgY29udGV4dCBtYW5hZ2VyLAorICBldmVuIHdoZW4gdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbiBv
Y2N1cnJlZC4KKyAgVGhhbmtzIGBATVNlaWZlcnQwNGBfIGZvciB0aGUgcmVwb3J0IGFuZCB0aGUg
UFIuCisKKyogRml4ZWQgZmFsc2UtcG9zaXRpdmVzIHdhcm5pbmdzIGZyb20gYXNzZXJ0aW9uIHJl
d3JpdGUgaG9vayBmb3IgbW9kdWxlcyB0aGF0IHdlcmUgcmV3cml0dGVuIGJ1dAorICB3ZXJlIGxh
dGVyIG1hcmtlZCBleHBsaWNpdGx5IGJ5IGBgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRl
YGAKKyAgb3IgaW1wbGljaXRseSBhcyBhIHBsdWdpbiAoYCMyMDA1YF8pLgorICBUaGFua3MgYEBS
b25ueVBmYW5uc2NobWlkdGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgorCisqIFJlcG9ydCB0ZWFyZG93biBvdXRwdXQgb24gdGVzdCBmYWlsdXJlIChgIzQ0
MmBfKS4KKyAgVGhhbmtzIGBAbWF0Y2xhYmBfIGZvciB0aGUgUFIuCisKKyogRml4IHRlYXJkb3du
IGVycm9yIG1lc3NhZ2UgaW4gZ2VuZXJhdGVkIHhVbml0IFhNTC4KKyAgVGhhbmtzIGBAZ2R5dWxk
aW5gXyBmb3IgdGhlIFBSLgorCisqIFByb3Blcmx5IGhhbmRsZSBleGNlcHRpb25zIGluIGBgbXVs
dGlwcm9jZXNzaW5nYGAgdGFza3MgKGAjMTk4NGBfKS4KKyAgVGhhbmtzIGBAYWRib3JkZW5gXyBm
b3IgdGhlIHJlcG9ydCBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBDbGVhbiB1
cCB1bml0dGVzdCBUZXN0Q2FzZSBvYmplY3RzIGFmdGVyIHRlc3RzIGFyZSBjb21wbGV0ZSAoYCMx
NjQ5YF8pLgorICBUaGFua3MgYEBkX2Jfd2BfIGZvciB0aGUgcmVwb3J0IGFuZCBQUi4KKworCisu
LiBfQGFkYm9yZGVuOiBodHRwczovL2dpdGh1Yi5jb20vYWRib3JkZW4KKy4uIF9AY3dpdHR5OiBo
dHRwczovL2dpdGh1Yi5jb20vY3dpdHR5CisuLiBfQGRfYl93OiBodHRwczovL2dpdGh1Yi5jb20v
ZC1iLXcKKy4uIF9AZ2R5dWxkaW46IGh0dHBzOi8vZ2l0aHViLmNvbS9nZHl1bGRpbgorLi4gX0Bt
YXRjbGFiOiBodHRwczovL2dpdGh1Yi5jb20vbWF0Y2xhYgorLi4gX0BNU2VpZmVydDA0OiBodHRw
czovL2dpdGh1Yi5jb20vTVNlaWZlcnQwNAorLi4gX0Bva3VseW55YWs6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9va3VseW55YWsKKworLi4gXyM0NDI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvNDQyCisuLiBfIzE5NjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTk2NQorLi4gXyMxOTc2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5NzYKKy4uIF8jMTk4NDogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTg0CisuLiBfIzE5OTg6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTk5OAorLi4gXyMyMDA0OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIwMDQKKy4uIF8jMjAwNTogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDA1CisuLiBfIzE2NDk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTY0OQorCisKKzMuMC4z
ICgyMDE2LTA5LTI4KQorPT09PT09PT09PT09PT09PT09CisKKyogVGhlIGBgaWRzYGAgYXJndW1l
bnQgdG8gYGBwYXJhbWV0cml6ZWBgIGFnYWluIGFjY2VwdHMgYGB1bmljb2RlYGAgc3RyaW5ncwor
ICBpbiBQeXRob24gMiAoYCMxOTA1YF8pLgorICBUaGFua3MgYEBwaGlscGVwYF8gZm9yIHRoZSBy
ZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogQXNzZXJ0aW9ucyBhcmUg
bm93IGJlaW5nIHJld3JpdHRlbiBmb3IgcGx1Z2lucyBpbiBkZXZlbG9wbWVudCBtb2RlCisgIChg
YHBpcCBpbnN0YWxsIC1lYGApIChgIzE5MzRgXykuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBm
b3IgdGhlIFBSLgorCisqIEZpeCBwa2dfcmVzb3VyY2VzIGltcG9ydCBlcnJvciBpbiBKeXRob24g
cHJvamVjdHMgKGAjMTg1M2BfKS4KKyAgVGhhbmtzIGBAcmFxdWVsLXVjbGBfIGZvciB0aGUgUFIu
CisKKyogR290IHJpZCBvZiBgYEF0dHJpYnV0ZUVycm9yOiAnTW9kdWxlJyBvYmplY3QgaGFzIG5v
IGF0dHJpYnV0ZSAnX29iaidgYCBleGNlcHRpb24KKyAgaW4gUHl0aG9uIDMgKGAjMTk0NGBfKS4K
KyAgVGhhbmtzIGBAYXhpbGBfIGZvciB0aGUgUFIuCisKKyogRXhwbGFpbiBhIGJhZCBzY29wZSB2
YWx1ZSBwYXNzZWQgdG8gYGBAZml4dHVyZWBgIGRlY2xhcmF0aW9ucyBvcgorICBhIGBgTWV0YUZ1
bmMucGFyYW1ldHJpemUoKWBgIGNhbGwuCisKKyogVGhpcyB2ZXJzaW9uIGluY2x1ZGVzIGBgcGx1
Z2d5LTAuNC4wYGAsIHdoaWNoIGNvcnJlY3RseSBoYW5kbGVzCisgIGBgVmVyc2lvbkNvbmZsaWN0
YGAgZXJyb3JzIGluIHBsdWdpbnMgKGAjNzA0YF8pLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8g
Zm9yIHRoZSBQUi4KKworCisuLiBfQHBoaWxwZXA6IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlscGVw
CisuLiBfQHJhcXVlbC11Y2w6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXF1ZWwtdWNsCisuLiBfQGF4
aWw6IGh0dHBzOi8vZ2l0aHViLmNvbS9heGlsCisuLiBfQHZsYWQtZHJhZ29zOiBodHRwczovL2dp
dGh1Yi5jb20vdmxhZC1kcmFnb3MKKworLi4gXyMxODUzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4NTMKKy4uIF8jMTkwNTogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xOTA1CisuLiBfIzE5MzQ6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTkzNAorLi4gXyMxOTQ0OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5NDQKKy4uIF8jNzA0OiBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzcwNAorCisKKworCiszLjAuMiAo
MjAxNi0wOS0wMSkKKz09PT09PT09PT09PT09PT09PQorCisqIEltcHJvdmUgZXJyb3IgbWVzc2Fn
ZSB3aGVuIHBhc3Npbmcgbm9uLXN0cmluZyBpZHMgdG8gYGBweXRlc3QubWFyay5wYXJhbWV0cml6
ZWBgIChgIzE4NTdgXykuCisgIFRoYW5rcyBgQG9ra2VuYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBA
bmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogQWRkIGBgYnVmZmVyYGAgYXR0cmlidXRlIHRv
IHN0ZGluIHN0dWIgY2xhc3MgYGBweXRlc3QuY2FwdHVyZS5Eb250UmVhZEZyb21JbnB1dGBgCisg
IFRoYW5rcyBgQGpvZ3VTRGBfIGZvciB0aGUgUFIuCisKKyogRml4IGBgVW5pY29kZUVuY29kZUVy
cm9yYGAgd2hlbiBzdHJpbmcgY29tcGFyaXNvbiB3aXRoIHVuaWNvZGUgaGFzIGZhaWxlZC4gKGAj
MTg2NGBfKQorICBUaGFua3MgYEBBaU9PYF8gZm9yIHRoZSBQUi4KKworKiBgYHB5dGVzdF9wbHVn
aW5zYGAgaXMgbm93IGhhbmRsZWQgY29ycmVjdGx5IGlmIGRlZmluZWQgYXMgYSBzdHJpbmcgKGFz
IG9wcG9zZWQgYXMKKyAgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzKSB3aGVuIG1vZHVsZXMgYXJlIGNv
bnNpZGVyZWQgZm9yIGFzc2VydGlvbiByZXdyaXRpbmcuCisgIER1ZSB0byB0aGlzIGJ1ZywgbXVj
aCBtb3JlIG1vZHVsZXMgd2VyZSBiZWluZyByZXdyaXR0ZW4gdGhhbiBuZWNlc3NhcnkKKyAgaWYg
YSB0ZXN0IHN1aXRlIHVzZXMgYGBweXRlc3RfcGx1Z2luc2BgIHRvIGxvYWQgaW50ZXJuYWwgcGx1
Z2lucyAoYCMxODg4YF8pLgorICBUaGFua3MgYEBqYXJhY29gXyBmb3IgdGhlIHJlcG9ydCBhbmQg
YEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUiAoYCMxODkxYF8pLgorCisqIERvIG5vdCBjYWxsIHRl
YXJEb3duIGFuZCBjbGVhbnVwcyB3aGVuIHJ1bm5pbmcgdGVzdHMgZnJvbQorICBgYHVuaXR0ZXN0
LlRlc3RDYXNlYGAgc3ViY2xhc3NlcyB3aXRoIGBgLS1wZGJgYAorICBlbmFibGVkLiBUaGlzIGFs
bG93cyBwcm9wZXIgcG9zdCBtb3J0ZW0gZGVidWdnaW5nIGZvciBhbGwgYXBwbGljYXRpb25zCisg
IHdoaWNoIGhhdmUgc2lnbmlmaWNhbnQgbG9naWMgaW4gdGhlaXIgdGVhckRvd24gbWFjaGluZXJ5
IChgIzE4OTBgXykuIFRoYW5rcworICBgQG1ieXRgXyBmb3IgdGhlIFBSLgorCisqIEZpeCB1c2Ug
b2YgZGVwcmVjYXRlZCBgYGdldGZ1bmNhcmd2YWx1ZWBgIG1ldGhvZCBpbiB0aGUgaW50ZXJuYWwg
ZG9jdGVzdCBwbHVnaW4uCisgIFRoYW5rcyBgQFZpdmlDb2RlcmBfIGZvciB0aGUgcmVwb3J0IChg
IzE4OThgXykuCisKKy4uIF9Aam9ndVNEOiBodHRwczovL2dpdGh1Yi5jb20vam9ndVNECisuLiBf
QEFpT086IGh0dHBzOi8vZ2l0aHViLmNvbS9BaU9PCisuLiBfQG1ieXQ6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tYnl0CisuLiBfQFZpdmlDb2RlcjogaHR0cHM6Ly9naXRodWIuY29tL1ZpdmlDb2Rlcgor
CisuLiBfIzE4NTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTg1NworLi4gXyMxODY0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzE4NjQKKy4uIF8jMTg4ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy8xODg4CisuLiBfIzE4OTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9wdWxsLzE4OTEKKy4uIF8jMTg5MDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8xODkwCisuLiBfIzE4OTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTg5OAorCisKKzMuMC4xICgyMDE2LTA4LTIzKQorPT09PT09PT09
PT09PT09PT09CisKKyogRml4IHJlZ3Jlc3Npb24gd2hlbiBgYGltcG9ydG9yc2tpcGBgIGlzIHVz
ZWQgYXQgbW9kdWxlIGxldmVsIChgIzE4MjJgXykuCisgIFRoYW5rcyBgQGphcmFjb2BfIGFuZCBg
QFRoZS1Db21waWxlcmBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhl
IFBSLgorCisqIEZpeCBwYXJhbWV0cml6YXRpb24gc2NvcGUgd2hlbiBzZXNzaW9uIGZpeHR1cmVz
IGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uCisgIHdpdGggbm9ybWFsIHBhcmFtZXRlcnMgaW4gdGhl
IHNhbWUgY2FsbCAoYCMxODMyYF8pLgorICBUaGFua3MgYEBUaGUtQ29tcGlsZXJgXyBmb3IgdGhl
IHJlcG9ydCwgYEBLaW5nZHJlYWRgXyBhbmQgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQUi4KKwor
KiBGaXggaW50ZXJuYWwgZXJyb3Igd2hlbiBwYXJhbWV0cml6aW5nIHRlc3RzIG9yIGZpeHR1cmVz
IHVzaW5nIGFuIGVtcHR5IGBgaWRzYGAgYXJndW1lbnQgKGAjMTg0OWBfKS4KKyAgVGhhbmtzIGBA
T1BwdW9saXRhaXZhbGBfIGZvciB0aGUgcmVwb3J0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhl
IFBSLgorCisqIEZpeCBsb2FkZXIgZXJyb3Igd2hlbiBydW5uaW5nIGBgcHl0ZXN0YGAgZW1iZWRk
ZWQgaW4gYSB6aXBmaWxlLgorICBUaGFua3MgYEBtYmFjaHJ5YF8gZm9yIHRoZSBQUi4KKworCisu
LiBfQEtpbmdkcmVhZDogaHR0cHM6Ly9naXRodWIuY29tL0tpbmdkcmVhZAorLi4gX0BtYmFjaHJ5
OiBodHRwczovL2dpdGh1Yi5jb20vbWJhY2hyeQorLi4gX0BPUHB1b2xpdGFpdmFsOiBodHRwczov
L2dpdGh1Yi5jb20vT1BwdW9saXRhaXZhbAorCisuLiBfIzE4MjI6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTgyMgorLi4gXyMxODMyOiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE4MzIKKy4uIF8jMTg0OTogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xODQ5CisKKworMy4wLjAgKDIwMTYt
MDgtMTgpCis9PT09PT09PT09PT09PT09PT0KKworKipJbmNvbXBhdGlibGUgY2hhbmdlcyoqCisK
KworQSBudW1iZXIgb2YgaW5jb21wYXRpYmxlIGNoYW5nZXMgd2VyZSBtYWRlIGluIHRoaXMgcmVs
ZWFzZSwgd2l0aCB0aGUgaW50ZW50IG9mIHJlbW92aW5nIGZlYXR1cmVzIGRlcHJlY2F0ZWQgZm9y
IGEgbG9uZwordGltZSBvciBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3JzIGluIG9yZGVyIHRvIG1h
a2UgdGhlbSBsZXNzIHN1cnByaXNpbmcvbW9yZSB1c2VmdWwuCisKKyogUmVpbnRlcnByZXRhdGlv
biBtb2RlIGhhcyBub3cgYmVlbiByZW1vdmVkLiAgT25seSBwbGFpbiBhbmQgcmV3cml0ZQorICBt
b2RlIGFyZSBhdmFpbGFibGUsIGNvbnNlcXVlbnRseSB0aGUgYGAtLWFzc2VydD1yZWludGVycGBg
IG9wdGlvbiBpcworICBubyBsb25nZXIgYXZhaWxhYmxlLiAgVGhpcyBhbHNvIG1lYW5zIGZpbGVz
IGltcG9ydGVkIGZyb20gcGx1Z2lucyBvcgorICBgYGNvbmZ0ZXN0LnB5YGAgd2lsbCBub3QgYmVu
ZWZpdCBmcm9tIGltcHJvdmVkIGFzc2VydGlvbnMgYnkKKyAgZGVmYXVsdCwgeW91IHNob3VsZCB1
c2UgYGBweXRlc3QucmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoKWBgIHRvCisgIGV4cGxpY2l0bHkg
dHVybiBvbiBhc3NlcnRpb24gcmV3cml0aW5nIGZvciB0aG9zZSBmaWxlcy4gIFRoYW5rcworICBg
QGZsdWJgXyBmb3IgdGhlIFBSLgorCisqIFRoZSBmb2xsb3dpbmcgZGVwcmVjYXRlZCBjb21tYW5k
bGluZSBvcHRpb25zIHdlcmUgcmVtb3ZlZDoKKworICAqIGBgLS1nZW5zY3JpcHRgYDogbm8gbG9u
Z2VyIHN1cHBvcnRlZDsKKyAgKiBgYC0tbm8tYXNzZXJ0YGA6IHVzZSBgYC0tYXNzZXJ0PXBsYWlu
YGAgaW5zdGVhZDsKKyAgKiBgYC0tbm9tYWdpY2BgOiB1c2UgYGAtLWFzc2VydD1wbGFpbmBgIGlu
c3RlYWQ7CisgICogYGAtLXJlcG9ydGBgOiB1c2UgYGAtcmBgIGluc3RlYWQ7CisKKyAgVGhhbmtz
IHRvIGBAUmVkQmVhcmRDb2RlYF8gZm9yIHRoZSBQUiAoYCMxNjY0YF8pLgorCisqIEltcG9ydEVy
cm9ycyBpbiBwbHVnaW5zIG5vdyBhcmUgYSBmYXRhbCBlcnJvciBpbnN0ZWFkIG9mIGlzc3Vpbmcg
YQorICBweXRlc3Qgd2FybmluZyAoYCMxNDc5YF8pLiBUaGFua3MgdG8gYEBUaGUtQ29tcGlsZXJg
XyBmb3IgdGhlIFBSLgorCisqIFJlbW92ZWQgc3VwcG9ydCBjb2RlIGZvciBQeXRob24gMyB2ZXJz
aW9ucyA8IDMuMyAoYCMxNjI3YF8pLgorCisqIFJlbW92ZWQgYWxsIGBgcHkudGVzdC1YKmBgIGVu
dHJ5IHBvaW50cy4gVGhlIHZlcnNpb25lZCwgc3VmZml4ZWQgZW50cnkgcG9pbnRzCisgIHdlcmUg
bmV2ZXIgZG9jdW1lbnRlZCBhbmQgYSBsZWZ0b3ZlciBmcm9tIGEgcHJlLXZpcnR1YWxlbnYgZXJh
LiBUaGVzZSBlbnRyeQorICBwb2ludHMgYWxzbyBjcmVhdGVkIGJyb2tlbiBlbnRyeSBwb2ludHMg
aW4gd2hlZWxzLCBzbyByZW1vdmluZyB0aGVtIGFsc28KKyAgcmVtb3ZlcyBhIHNvdXJjZSBvZiBj
b25mdXNpb24gZm9yIHVzZXJzIChgIzE2MzJgXykuCisgIFRoYW5rcyBgQG9iZXN0d2FsdGVyYF8g
Zm9yIHRoZSBQUi4KKworKiBgYHB5dGVzdC5za2lwKClgYCBub3cgcmFpc2VzIGFuIGVycm9yIHdo
ZW4gdXNlZCB0byBkZWNvcmF0ZSBhIHRlc3QgZnVuY3Rpb24sCisgIGFzIG9wcG9zZWQgdG8gaXRz
IG9yaWdpbmFsIGludGVudCAodG8gaW1wZXJhdGl2ZWx5IHNraXAgYSB0ZXN0IGluc2lkZSBhIHRl
c3QgZnVuY3Rpb24pLiBQcmV2aW91c2x5CisgIHRoaXMgdXNhZ2Ugd291bGQgY2F1c2UgdGhlIGVu
dGlyZSBtb2R1bGUgdG8gYmUgc2tpcHBlZCAoYCM2MDdgXykuCisgIFRoYW5rcyBgQG9tYXJrb2hs
YF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNTE5YF8pLgorCisqIEV4aXQgdGVzdHMgaWYgYSBj
b2xsZWN0aW9uIGVycm9yIG9jY3Vycy4gQSBwb2xsIGluZGljYXRlZCBtb3N0IHVzZXJzIHdpbGwg
aGl0IENUUkwtQworICBhbnl3YXkgYXMgc29vbiBhcyB0aGV5IHNlZSBjb2xsZWN0aW9uIGVycm9y
cywgc28gcHl0ZXN0IG1pZ2h0IGFzIHdlbGwgbWFrZSB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9y
IChgIzE0MjFgXykuCisgIEEgYGAtLWNvbnRpbnVlLW9uLWNvbGxlY3Rpb24tZXJyb3JzYGAgb3B0
aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ci4KKyAg
VGhhbmtzIGBAb2xlZ3BpZHNhZG55aWBfIGFuZCBgQG9tYXJrb2hsYF8gZm9yIHRoZSBjb21wbGV0
ZSBQUiAoYCMxNjI4YF8pLgorCisqIFJlbmFtZWQgdGhlIHB5dGVzdCBgYHBkYmBgIG1vZHVsZSAo
cGx1Z2luKSBpbnRvIGBgZGVidWdnaW5nYGAgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBidWls
dGluIGBgcGRiYGAgbW9kdWxlLgorCisqIFJhaXNlIGEgaGVscGZ1bCBmYWlsdXJlIG1lc3NhZ2Ug
d2hlbiByZXF1ZXN0aW5nIGEgcGFyYW1ldHJpemVkIGZpeHR1cmUgYXQgcnVudGltZSwKKyAgZS5n
LiB3aXRoIGBgcmVxdWVzdC5nZXRmaXh0dXJldmFsdWVgYC4gUHJldmlvdXNseSB0aGVzZSBwYXJh
bWV0ZXJzIHdlcmUgc2ltcGx5CisgIG5ldmVyIGRlZmluZWQsIHNvIGEgZml4dHVyZSBkZWNvcmF0
ZWQgbGlrZSBgYEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzAsIDEsIDJdKWBgCisgIG9ubHkgcmFu
IG9uY2UgKGAjNDYwYF8pLgorICBUaGFua3MgdG8gYEBuaWtyYXRpb2BfIGZvciB0aGUgYnVnIHJl
cG9ydCwgYEBSZWRCZWFyZENvZGVgXyBhbmQgYEB0b212aW5lcmBfIGZvciB0aGUgUFIuCisKKyog
YGBfcHl0ZXN0Lm1vbmtleXBhdGNoLm1vbmtleXBhdGNoYGAgY2xhc3MgaGFzIGJlZW4gcmVuYW1l
ZCB0byBgYF9weXRlc3QubW9ua2V5cGF0Y2guTW9ua2V5UGF0Y2hgYAorICBzbyBpdCBkb2Vzbid0
IGNvbmZsaWN0IHdpdGggdGhlIGBgbW9ua2V5cGF0Y2hgYCBmaXh0dXJlLgorCisqIGBgLS1leGl0
Zmlyc3QgLyAteGBgIGNhbiBub3cgYmUgb3ZlcnJpZGRlbiBieSBhIGZvbGxvd2luZyBgYC0tbWF4
ZmFpbD1OYGAKKyAgYW5kIGlzIGp1c3QgYSBzeW5vbnltIGZvciBgYC0tbWF4ZmFpbD0xYGAuCisK
KworKipOZXcgRmVhdHVyZXMqKgorCisqIFN1cHBvcnQgbm9zZS1zdHlsZSBgYF9fdGVzdF9fYGAg
YXR0cmlidXRlIG9uIG1ldGhvZHMgb2YgY2xhc3NlcywKKyAgaW5jbHVkaW5nIHVuaXR0ZXN0LXN0
eWxlIENsYXNzZXMuIElmIHNldCB0byBgYEZhbHNlYGAsIHRoZSB0ZXN0IHdpbGwgbm90IGJlCisg
IGNvbGxlY3RlZC4KKworKiBOZXcgYGBkb2N0ZXN0X25hbWVzcGFjZWBgIGZpeHR1cmUgZm9yIGlu
amVjdGluZyBuYW1lcyBpbnRvIHRoZQorICBuYW1lc3BhY2UgaW4gd2hpY2ggZG9jdGVzdHMgcnVu
LgorICBUaGFua3MgYEBtaWxsaWFtc2BfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTQyOGBfKS4K
KworKiBOZXcgYGAtLWRvY3Rlc3QtcmVwb3J0YGAgb3B0aW9uIGF2YWlsYWJsZSB0byBjaGFuZ2Ug
dGhlIG91dHB1dCBmb3JtYXQgb2YgZGlmZnMKKyAgd2hlbiBydW5uaW5nIChmYWlsaW5nKSBkb2N0
ZXN0cyAoaW1wbGVtZW50cyBgIzE3NDlgXykuCisgIFRoYW5rcyBgQGhhcnR5bWBfIGZvciB0aGUg
UFIuCisKKyogTmV3IGBgbmFtZWBgIGFyZ3VtZW50IHRvIGBgcHl0ZXN0LmZpeHR1cmVgYCBkZWNv
cmF0b3Igd2hpY2ggYWxsb3dzIGEgY3VzdG9tIG5hbWUKKyAgZm9yIGEgZml4dHVyZSAodG8gc29s
dmUgdGhlIGZ1bmNhcmctc2hhZG93aW5nLWZpeHR1cmUgcHJvYmxlbSkuCisgIFRoYW5rcyBgQG5v
dmFzMHgyYWBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTQ0NGBfKS4KKworKiBOZXcgYGBhcHBy
b3goKWBgIGZ1bmN0aW9uIGZvciBlYXNpbHkgY29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMgaW4KKyAgdGVzdHMuCisgIFRoYW5rcyBgQGthbGVrdW5kZXJ0YF8gZm9yIHRoZSBjb21wbGV0
ZSBQUiAoYCMxNDQxYF8pLgorCisqIEFiaWxpdHkgdG8gYWRkIGdsb2JhbCBwcm9wZXJ0aWVzIGlu
IHRoZSBmaW5hbCB4dW5pdCBvdXRwdXQgZmlsZSBieSBhY2Nlc3NpbmcKKyAgdGhlIGludGVybmFs
IGBganVuaXR4bWxgYCBwbHVnaW4gKGV4cGVyaW1lbnRhbCkuCisgIFRoYW5rcyBgQHRhcmVxYWxh
eWFuYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiBgIzE0NTRgXykuCisKKyogTmV3IGBgRXhjZXB0aW9u
SW5mby5tYXRjaCgpYGAgbWV0aG9kIHRvIG1hdGNoIGEgcmVndWxhciBleHByZXNzaW9uIG9uIHRo
ZQorICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gZXhjZXB0aW9uIChgIzM3MmBfKS4KKyAg
VGhhbmtzIGBAb21hcmtvaGxgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzE1MDJgXykuCisKKyog
YGBfX3RyYWNlYmFja2hpZGVfX2BgIGNhbiBub3cgYWxzbyBiZSBzZXQgdG8gYSBjYWxsYWJsZSB3
aGljaCB0aGVuIGNhbiBkZWNpZGUKKyAgd2hldGhlciB0byBmaWx0ZXIgdGhlIHRyYWNlYmFjayBi
YXNlZCBvbiB0aGUgYGBFeGNlcHRpb25JbmZvYGAgb2JqZWN0IHBhc3NlZAorICB0byBpdC4gVGhh
bmtzIGBAVGhlLUNvbXBpbGVyYF8gZm9yIHRoZSBjb21wbGV0ZSBQUiAoYCMxNTI2YF8pLgorCisq
IE5ldyBgYHB5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKGNvbmZpZywgdmFsKWBgIGhvb2sgd2hp
Y2ggY2FuIGJlIHVzZWQgYnkgcGx1Z2lucyB0byBwcm92aWRlCisgIGZyaWVuZGx5IHN0cmluZ3Mg
Zm9yIGN1c3RvbSB0eXBlcy4KKyAgVGhhbmtzIGBAcGFsYXZpdmBfIGZvciB0aGUgUFIuCisKKyog
YGBjYXBzeXNgYCBhbmQgYGBjYXBmZGBgIG5vdyBoYXZlIGEgYGBkaXNhYmxlZCgpYGAgY29udGV4
dC1tYW5hZ2VyIG1ldGhvZCwgd2hpY2gKKyAgY2FuIGJlIHVzZWQgdG8gdGVtcG9yYXJpbHkgZGlz
YWJsZSBjYXB0dXJlIHdpdGhpbiBhIHRlc3QuCisgIFRoYW5rcyBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgorCisqIE5ldyBjbGkgZmxhZyBgYC0tZml4dHVyZXMtcGVyLXRlc3RgYDogc2hvd3Mg
d2hpY2ggZml4dHVyZXMgYXJlIGJlaW5nIHVzZWQKKyAgZm9yIGVhY2ggc2VsZWN0ZWQgdGVzdCBp
dGVtLiBGZWF0dXJlcyBkb2Mgc3RyaW5ncyBvZiBmaXh0dXJlcyBieSBkZWZhdWx0LgorICBDYW4g
YWxzbyBzaG93IHdoZXJlIGZpeHR1cmVzIGFyZSBkZWZpbmVkIGlmIGNvbWJpbmVkIHdpdGggYGAt
dmBgLgorICBUaGFua3MgYEBoYWNrZWJyb3RgXyBmb3IgdGhlIFBSLgorCisqIEludHJvZHVjZSBg
YHB5dGVzdGBgIGNvbW1hbmQgYXMgcmVjb21tZW5kZWQgZW50cnkgcG9pbnQuIE5vdGUgdGhhdCBg
YHB5LnRlc3RgYAorICBzdGlsbCB3b3JrcyBhbmQgaXMgbm90IHNjaGVkdWxlZCBmb3IgcmVtb3Zh
bC4gQ2xvc2VzIHByb3Bvc2FsCisgIGAjMTYyOWBfLiBUaGFua3MgYEBvYmVzdHdhbHRlcmBfIGFu
ZCBgQGRhdmVodW50YF8gZm9yIHRoZSBjb21wbGV0ZSBQUgorICAoYCMxNjMzYF8pLgorCisqIE5l
dyBjbGkgZmxhZ3M6CisKKyAgKyBgYC0tc2V0dXAtcGxhbmBgOiBwZXJmb3JtcyBub3JtYWwgY29s
bGVjdGlvbiBhbmQgcmVwb3J0cworICAgIHRoZSBwb3RlbnRpYWwgc2V0dXAgYW5kIHRlYXJkb3du
IGFuZCBkb2VzIG5vdCBleGVjdXRlIGFueSBmaXh0dXJlcyBhbmQgdGVzdHM7CisgICsgYGAtLXNl
dHVwLW9ubHlgYDogcGVyZm9ybXMgbm9ybWFsIGNvbGxlY3Rpb24sIGV4ZWN1dGVzIHNldHVwIGFu
ZCB0ZWFyZG93biBvZgorICAgIGZpeHR1cmVzIGFuZCByZXBvcnRzIHRoZW07CisgICsgYGAtLXNl
dHVwLXNob3dgYDogcGVyZm9ybXMgbm9ybWFsIHRlc3QgZXhlY3V0aW9uIGFuZCBhZGRpdGlvbmFs
bHkgc2hvd3MKKyAgICBzZXR1cCBhbmQgdGVhcmRvd24gb2YgZml4dHVyZXM7CisgICsgYGAtLWtl
ZXAtZHVwbGljYXRlc2BgOiBweS50ZXN0IG5vdyBpZ25vcmVzIGR1cGxpY2F0ZWQgcGF0aHMgZ2l2
ZW4gaW4gdGhlIGNvbW1hbmQKKyAgICBsaW5lLiBUbyByZXRhaW4gdGhlIHByZXZpb3VzIGJlaGF2
aW9yIHdoZXJlIHRoZSBzYW1lIHRlc3QgY291bGQgYmUgcnVuIG11bHRpcGxlCisgICAgdGltZXMg
Ynkgc3BlY2lmeWluZyBpdCBpbiB0aGUgY29tbWFuZC1saW5lIG11bHRpcGxlIHRpbWVzLCBwYXNz
IHRoZSBgYC0ta2VlcC1kdXBsaWNhdGVzYGAKKyAgICBhcmd1bWVudCAoYCMxNjA5YF8pOworCisg
IFRoYW5rcyBgQGQ2ZWBfLCBgQGt2YXMtaXRgXywgYEBzYWxsbmVyYF8sIGBAaW9nZ3N0cmVhbWBf
IGFuZCBgQG9tYXJrb2hsYF8gZm9yIHRoZSBQUnMuCisKKyogTmV3IENMSSBmbGFnIGBgLS1vdmVy
cmlkZS1pbmlgYC9gYC1vYGA6IG92ZXJyaWRlcyB2YWx1ZXMgZnJvbSB0aGUgaW5pIGZpbGUuCisg
IEZvciBleGFtcGxlOiBgYCItbyB4ZmFpbF9zdHJpY3Q9VHJ1ZSJgYCcuCisgIFRoYW5rcyBgQGJs
dWV5ZWRgXyBhbmQgYEBmZW5neHhgXyBmb3IgdGhlIFBSLgorCisqIE5ldyBob29rczoKKworICAr
IGBgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdClgYDogZXhlY3V0ZXMg
Zml4dHVyZSBzZXR1cDsKKyAgKyBgYHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1
cmVkZWYpYGA6IGNhbGxlZCBhZnRlciB0aGUgZml4dHVyZSdzCisgICAgZmluYWxpemVyIGFuZCBo
YXMgYWNjZXNzIHRvIHRoZSBmaXh0dXJlJ3MgcmVzdWx0IGNhY2hlLgorCisgIFRoYW5rcyBgQGQ2
ZWBfLCBgQHNhbGxuZXJgXy4KKworKiBJc3N1ZSB3YXJuaW5ncyBmb3IgYXNzZXJ0cyB3aG9zZSB0
ZXN0IGlzIGEgdHVwbGUgbGl0ZXJhbC4gU3VjaCBhc3NlcnRzIHdpbGwKKyAgbmV2ZXIgZmFpbCBi
ZWNhdXNlIHR1cGxlcyBhcmUgYWx3YXlzIHRydXRoeSBhbmQgYXJlIHVzdWFsbHkgYSBtaXN0YWtl
CisgIChzZWUgYCMxNTYyYF8pLiBUaGFua3MgYEBrdmFzLWl0YF8sIGZvciB0aGUgUFIuCisKKyog
QWxsb3cgcGFzc2luZyBhIGN1c3RvbSBkZWJ1Z2dlciBjbGFzcyAoZS5nLiBgYC0tcGRiY2xzPUlQ
eXRob24uY29yZS5kZWJ1Z2dlcjpQZGJgYCkuCisgIFRoYW5rcyB0byBgQGFubnR6ZXJgXyBmb3Ig
dGhlIFBSLgorCisKKyoqQ2hhbmdlcyoqCisKKyogUGx1Z2lucyBub3cgYmVuZWZpdCBmcm9tIGFz
c2VydGlvbiByZXdyaXRpbmcuICBUaGFua3MKKyAgYEBzb2JlcjdgXywgYEBuaWNvZGRlbXVzYF8g
YW5kIGBAZmx1YmBfIGZvciB0aGUgUFIuCisKKyogQ2hhbmdlIGBgcmVwb3J0Lm91dGNvbWVgYCBm
b3IgYGB4cGFzc2VkYGAgdGVzdHMgdG8gYGAicGFzc2VkImBgIGluIG5vbi1zdHJpY3QKKyAgbW9k
ZSBhbmQgYGAiZmFpbGVkImBgIGluIHN0cmljdCBtb2RlLiBUaGFua3MgdG8gYEBoYWNrZWJyb3Rg
XyBmb3IgdGhlIFBSCisgIChgIzE3OTVgXykgYW5kIGBAZ3ByYXNhZDg0YF8gZm9yIHJlcG9ydCAo
YCMxNTQ2YF8pLgorCisqIFRlc3RzIG1hcmtlZCB3aXRoIGBgeGZhaWwoc3RyaWN0PUZhbHNlKWBg
ICh0aGUgZGVmYXVsdCkgbm93IGFwcGVhciBpbgorICBKVW5pdFhNTCByZXBvcnRzIGFzIHBhc3Np
bmcgdGVzdHMgaW5zdGVhZCBvZiBza2lwcGVkLgorICBUaGFua3MgdG8gYEBoYWNrZWJyb3RgXyBm
b3IgdGhlIFBSIChgIzE3OTVgXykuCisKKyogSGlnaGxpZ2h0IHBhdGggb2YgdGhlIGZpbGUgbG9j
YXRpb24gaW4gdGhlIGVycm9yIHJlcG9ydCB0byBtYWtlIGl0IGVhc2llciB0byBjb3B5L3Bhc3Rl
LgorICBUaGFua3MgYEBzdXpha3VgXyBmb3IgdGhlIFBSIChgIzE3NzhgXykuCisKKyogRml4dHVy
ZXMgbWFya2VkIHdpdGggYGBAcHl0ZXN0LmZpeHR1cmVgYCBjYW4gbm93IHVzZSBgYHlpZWxkYGAg
c3RhdGVtZW50cyBleGFjdGx5IGxpa2UKKyAgdGhvc2UgbWFya2VkIHdpdGggdGhlIGBgQHB5dGVz
dC55aWVsZF9maXh0dXJlYGAgZGVjb3JhdG9yLiBUaGlzIGNoYW5nZSByZW5kZXJzCisgIGBgQHB5
dGVzdC55aWVsZF9maXh0dXJlYGAgZGVwcmVjYXRlZCBhbmQgbWFrZXMgYGBAcHl0ZXN0LmZpeHR1
cmVgYCB3aXRoIGBgeWllbGRgYCBzdGF0ZW1lbnRzCisgIHRoZSBwcmVmZXJyZWQgd2F5IHRvIHdy
aXRlIHRlYXJkb3duIGNvZGUgKGAjMTQ2MWBfKS4KKyAgVGhhbmtzIGBAY3NhZnRvaXVgXyBmb3Ig
YnJpbmdpbmcgdGhpcyB0byBhdHRlbnRpb24gYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIu
CisKKyogRXhwbGljaXRseSBwYXNzZWQgcGFyYW1ldHJpemUgaWRzIGRvIG5vdCBnZXQgZXNjYXBl
ZCB0byBhc2NpaSAoYCMxMzUxYF8pLgorICBUaGFua3MgYEBjZXJpZHdlbmBfIGZvciB0aGUgUFIu
CisKKyogRml4dHVyZXMgYXJlIG5vdyBzb3J0ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgZGlzcGxh
eWVkIHdoZW4gYW4gdW5rbm93bgorICBmaXh0dXJlIGlzIGRlY2xhcmVkIGluIGEgdGVzdCBmdW5j
dGlvbi4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogYGBweXRlc3Rf
dGVybWluYWxfc3VtbWFyeWBgIGhvb2sgbm93IHJlY2VpdmVzIHRoZSBgYGV4aXRzdGF0dXNgYAor
ICBvZiB0aGUgdGVzdCBzZXNzaW9uIGFzIGFyZ3VtZW50LiBUaGFua3MgYEBibHVleWVkYF8gZm9y
IHRoZSBQUiAoYCMxODA5YF8pLgorCisqIFBhcmFtZXRyaXplIGlkcyBjYW4gYWNjZXB0IGBgTm9u
ZWBgIGFzIHNwZWNpZmljIHRlc3QgaWQsIGluIHdoaWNoIGNhc2UgdGhlCisgIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGlkIGZvciB0aGF0IGFyZ3VtZW50IHdpbGwgYmUgdXNlZC4KKyAgVGhhbmtz
IGBAcGFsYXZpdmBfIGZvciB0aGUgY29tcGxldGUgUFIgKGAjMTQ2OGBfKS4KKworKiBUaGUgcGFy
YW1ldGVyIHRvIHh1bml0LXN0eWxlIHNldHVwL3RlYXJkb3duIG1ldGhvZHMgKGBgc2V0dXBfbWV0
aG9kYGAsCisgIGBgc2V0dXBfbW9kdWxlYGAsIGV0Yy4pIGlzIG5vdyBvcHRpb25hbCBhbmQgbWF5
IGJlIG9taXR0ZWQuCisgIFRoYW5rcyBgQG9ra2VuYF8gZm9yIGJyaW5naW5nIHRoaXMgdG8gYXR0
ZW50aW9uIGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhlIFBSLgorCisqIEltcHJvdmVkIGF1dG9t
YXRpYyBpZCBnZW5lcmF0aW9uIHNlbGVjdGlvbiBpbiBjYXNlIG9mIGR1cGxpY2F0ZSBpZHMgaW4K
KyAgcGFyYW1ldHJpemUuCisgIFRoYW5rcyBgQHBhbGF2aXZgXyBmb3IgdGhlIGNvbXBsZXRlIFBS
IChgIzE0NzRgXykuCisKKyogTm93IHB5dGVzdCB3YXJuaW5ncyBzdW1tYXJ5IGlzIHNob3duIHVw
IGJ5IGRlZmF1bHQuIEFkZGVkIGEgbmV3IGZsYWcKKyAgYGAtLWRpc2FibGUtcHl0ZXN0LXdhcm5p
bmdzYGAgdG8gZXhwbGljaXRseSBkaXNhYmxlIHRoZSB3YXJuaW5ncyBzdW1tYXJ5IChgIzE2Njhg
XykuCisKKyogTWFrZSBJbXBvcnRFcnJvciBkdXJpbmcgY29sbGVjdGlvbiBtb3JlIGV4cGxpY2l0
IGJ5IHJlbWluZGluZworICB0aGUgdXNlciB0byBjaGVjayB0aGUgbmFtZSBvZiB0aGUgdGVzdCBt
b2R1bGUvcGFja2FnZShzKSAoYCMxNDI2YF8pLgorICBUaGFua3MgYEBvbWFya29obGBfIGZvciB0
aGUgY29tcGxldGUgUFIgKGAjMTUyMGBfKS4KKworKiBBZGQgYGBidWlsZC9gYCBhbmQgYGBkaXN0
L2BgIHRvIHRoZSBkZWZhdWx0IGBgLS1ub3JlY3Vyc2VkaXJzYGAgbGlzdC4gVGhhbmtzCisgIGBA
bWlrb2Zza2lgXyBmb3IgdGhlIHJlcG9ydCBhbmQgYEB0b212aW5lcmBfIGZvciB0aGUgUFIgKGAj
MTU0NGBfKS4KKworKiBgYHB5dGVzdC5yYWlzZXNgYCBpbiB0aGUgY29udGV4dCBtYW5hZ2VyIGZv
cm0gYWNjZXB0cyBhIGN1c3RvbQorICBgYG1lc3NhZ2VgYCB0byByYWlzZSB3aGVuIG5vIGV4Y2Vw
dGlvbiBvY2N1cnJlZC4KKyAgVGhhbmtzIGBAcGFsYXZpdmBfIGZvciB0aGUgY29tcGxldGUgUFIg
KGAjMTYxNmBfKS4KKworKiBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMgbm93IGJlbmVmaXQgZnJvbSBh
c3NlcnRpb24gcmV3cml0aW5nOyBwcmV2aW91c2x5IGl0CisgIHdhcyBvbmx5IGF2YWlsYWJsZSBm
b3IgdGVzdCBtb2R1bGVzLiBUaGFua3MgYEBmbHViYF8sIGBAc29iZXI3YF8gYW5kCisgIGBAbmlj
b2RkZW11c2BfIGZvciB0aGUgUFIgKGAjMTYxOWBfKS4KKworKiBUZXh0IGRvY3VtZW50cyB3aXRo
b3V0IGFueSBkb2N0ZXN0cyBubyBsb25nZXIgYXBwZWFyIGFzICJza2lwcGVkIi4KKyAgVGhhbmtz
IGBAZ3JhaW5nZXJ0YF8gZm9yIHJlcG9ydGluZyBhbmQgcHJvdmlkaW5nIGEgZnVsbCBQUiAoYCMx
NTgwYF8pLgorCisqIEVuc3VyZSB0aGF0IGEgbW9kdWxlIHdpdGhpbiBhIG5hbWVzcGFjZSBwYWNr
YWdlIGNhbiBiZSBmb3VuZCB3aGVuIGl0CisgIGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBs
aW5lIHRvZ2V0aGVyIHdpdGggdGhlIGBgLS1weWFyZ3NgYAorICBvcHRpb24uICBUaGFua3MgdG8g
YEB0YXNjaGluaWBfIGZvciB0aGUgUFIgKGAjMTU5N2BfKS4KKworKiBBbHdheXMgaW5jbHVkZSBm
dWxsIGFzc2VydGlvbiBleHBsYW5hdGlvbiBkdXJpbmcgYXNzZXJ0aW9uIHJld3JpdGluZy4gVGhl
IHByZXZpb3VzIGJlaGF2aW91ciB3YXMgaGlkaW5nCisgIHN1Yi1leHByZXNzaW9ucyB0aGF0IGhh
cHBlbmVkIHRvIGJlIGBgRmFsc2VgYCwgYXNzdW1pbmcgdGhpcyB3YXMgcmVkdW5kYW50IGluZm9y
bWF0aW9uLgorICBUaGFua3MgYEBiYWdlcmFyZGBfIGZvciByZXBvcnRpbmcgKGAjMTUwM2BfKS4g
VGhhbmtzIHRvIGBAZGF2ZWh1bnRgXyBhbmQKKyAgYEB0b212aW5lcmBfIGZvciB0aGUgUFIuCisK
KyogYGBPcHRpb25Hcm91cC5hZGRvcHRpb24oKWBgIG5vdyBjaGVja3MgaWYgb3B0aW9uIG5hbWVz
IHdlcmUgYWxyZWFkeQorICBhZGRlZCBiZWZvcmUsIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRyYWNr
IGRvd24gaXNzdWVzIGxpa2UgYCMxNjE4YF8uCisgIEJlZm9yZSwgeW91IG9ubHkgZ290IGV4Y2Vw
dGlvbnMgbGF0ZXIgZnJvbSBgYGFyZ3BhcnNlYGAgbGlicmFyeSwKKyAgZ2l2aW5nIG5vIGNsdWUg
YWJvdXQgdGhlIGFjdHVhbCByZWFzb24gZm9yIGRvdWJsZS1hZGRlZCBvcHRpb25zLgorCisqIGBg
eWllbGRgYC1iYXNlZCB0ZXN0cyBhcmUgY29uc2lkZXJlZCBkZXByZWNhdGVkIGFuZCB3aWxsIGJl
IHJlbW92ZWQgaW4gcHl0ZXN0LTQuMC4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUg
UFIuCisKKyogYGBbcHl0ZXN0XWBgIHNlY3Rpb25zIGluIGBgc2V0dXAuY2ZnYGAgZmlsZXMgc2hv
dWxkIG5vdyBiZSBuYW1lZCBgYFt0b29sOnB5dGVzdF1gYAorICB0byBhdm9pZCBjb25mbGljdHMg
d2l0aCBvdGhlciBkaXN0dXRpbHMgY29tbWFuZHMgKHNlZSBgIzU2N2BfKS4gYGBbcHl0ZXN0XWBg
IHNlY3Rpb25zIGluCisgIGBgcHl0ZXN0LmluaWBgIG9yIGBgdG94LmluaWBgIGZpbGVzIGFyZSBz
dXBwb3J0ZWQgYW5kIHVuY2hhbmdlZC4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUg
UFIuCisKKyogVXNpbmcgYGBweXRlc3RfZnVuY2FyZ19fYGAgcHJlZml4IHRvIGRlY2xhcmUgZml4
dHVyZXMgaXMgY29uc2lkZXJlZCBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgIHJlbW92ZWQgaW4g
cHl0ZXN0LTQuMCAoYCMxNjg0YF8pLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRoZSBQ
Ui4KKworKiBQYXNzaW5nIGEgY29tbWFuZC1saW5lIHN0cmluZyB0byBgYHB5dGVzdC5tYWluKClg
YCBpcyBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxlZAorICBmb3IgcmVtb3ZhbCBp
biBweXRlc3QtNC4wLiBJdCBpcyByZWNvbW1lbmRlZCB0byBwYXNzIGEgbGlzdCBvZiBhcmd1bWVu
dHMgaW5zdGVhZCAoYCMxNzIzYF8pLgorCisqIFJlbmFtZSBgYGdldGZ1bmNhcmd2YWx1ZWBgIHRv
IGBgZ2V0Zml4dHVyZXZhbHVlYGAuIGBgZ2V0ZnVuY2FyZ3ZhbHVlYGAgaXMKKyAgc3RpbGwgcHJl
c2VudCBidXQgaXMgbm93IGNvbnNpZGVyZWQgZGVwcmVjYXRlZC4gVGhhbmtzIHRvIGBAUmVkQmVh
cmRDb2RlYF8gYW5kIGBAdG9tdmluZXJgXworICBmb3IgdGhlIFBSIChgIzE2MjZgXykuCisKKyog
YGBvcHRwYXJzZWBgIHR5cGUgdXNhZ2Ugbm93IHRyaWdnZXJzIERlcHJlY2F0aW9uV2FybmluZ3Mg
KGAjMTc0MGBfKS4KKworCisqIGBgb3B0cGFyc2VgYCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHN1
cHBvcnRzIGZsb2F0L2NvbXBsZXggdHlwZXMgKGAjNDU3YF8pLgorCisqIFJlZmluZWQgbG9naWMg
Zm9yIGRldGVybWluaW5nIHRoZSBgYHJvb3RkaXJgYCwgY29uc2lkZXJpbmcgb25seSB2YWxpZAor
ICBwYXRocyB3aGljaCBmaXhlcyBhIG51bWJlciBvZiBpc3N1ZXM6IGAjMTU5NGBfLCBgIzE0MzVg
XyBhbmQgYCMxNDcxYF8uCisgIFVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYWNjb3JkaW5nIHRv
IGN1cnJlbnQgYmVoYXZpb3IuIFRoYW5rcyB0bworICBgQGJsdWV5ZWRgXywgYEBkYXZlaHVudGBf
IGFuZCBgQG1hdHRoaWFzaGFgXyBmb3IgdGhlIFBSLgorCisqIEFsd2F5cyBpbmNsdWRlIGZ1bGwg
YXNzZXJ0aW9uIGV4cGxhbmF0aW9uLiBUaGUgcHJldmlvdXMgYmVoYXZpb3VyIHdhcyBoaWRpbmcK
KyAgc3ViLWV4cHJlc3Npb25zIHRoYXQgaGFwcGVuZWQgdG8gYmUgRmFsc2UsIGFzc3VtaW5nIHRo
aXMgd2FzIHJlZHVuZGFudCBpbmZvcm1hdGlvbi4KKyAgVGhhbmtzIGBAYmFnZXJhcmRgXyBmb3Ig
cmVwb3J0aW5nIChgIzE1MDNgXykuIFRoYW5rcyB0byBgQGRhdmVodW50YF8gYW5kCisgIGBAdG9t
dmluZXJgXyBmb3IgUFIuCisKKyogQmV0dGVyIG1lc3NhZ2UgaW4gY2FzZSBvZiBub3QgdXNpbmcg
cGFyYW1ldHJpemVkIHZhcmlhYmxlIChzZWUgYCMxNTM5YF8pLgorICBUaGFua3MgdG8gYEB0cmFt
d2FqMjlgXyBmb3IgdGhlIFBSLgorCisqIFVwZGF0ZWQgZG9jc3RyaW5ncyB3aXRoIGEgbW9yZSB1
bmlmb3JtIHN0eWxlLgorCisqIEFkZCBzdGRlcnIgd3JpdGUgZm9yIGBgcHl0ZXN0LmV4aXQobXNn
KWBgIGR1cmluZyBzdGFydHVwLiBQcmV2aW91c2x5IHRoZSBtZXNzYWdlIHdhcyBuZXZlciBzaG93
bi4KKyAgVGhhbmtzIGBAQmV5b25kRXZpbGBfIGZvciByZXBvcnRpbmcgYCMxMjEwYF8uIFRoYW5r
cyB0byBAamdzb25lc2VuIGFuZAorICBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KKworKiBObyBs
b25nZXIgZGlzcGxheSB0aGUgaW5jb3JyZWN0IHRlc3QgZGVzZWxlY3Rpb24gcmVhc29uIChgIzEz
NzJgXykuCisgIFRoYW5rcyBgQHJvbm55cGZhbm5zY2htaWR0YF8gZm9yIHRoZSBQUi4KKworKiBU
aGUgYGAtLXJlc3VsdGxvZ2BgIGNvbW1hbmQgbGluZSBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRl
ZDogaXQgaXMgbGl0dGxlIHVzZWQKKyAgYW5kIHRoZXJlIGFyZSBtb3JlIG1vZGVybiBhbmQgYmV0
dGVyIGFsdGVybmF0aXZlcyAoc2VlIGAjODMwYF8pLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8g
Zm9yIHRoZSBQUi4KKworKiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2l0aCBmaXh0dXJlIGxvb2t1
cCBlcnJvcnM6IGFkZCBhbiAnRScgdG8gdGhlIGZpcnN0CisgIGxpbmUgYW5kICc+JyB0byB0aGUg
cmVzdC4gRml4ZXMgYCM3MTdgXy4gVGhhbmtzIGBAYmx1ZXllZGBfIGZvciByZXBvcnRpbmcgYW5k
CisgIGEgUFIsIGBAZW9sbzk5OWBfIGZvciB0aGUgaW5pdGlhbCBQUiBhbmQgYEB0b212aW5lcmBf
IGZvciBoaXMgZ3VpZGFuY2UgZHVyaW5nCisgIEV1cm9QeXRob24yMDE2IHNwcmludC4KKworCisq
KkJ1ZyBGaXhlcyoqCisKKyogUGFyYW1ldHJpemUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGR1cGxp
Y2F0ZWQgdGVzdCBpZHMuCisKKyogRml4IGludGVybmFsIGVycm9yIGlzc3VlIHdoZW4gdGhlIGBg
bWV0aG9kYGAgYXJndW1lbnQgaXMgbWlzc2luZyBmb3IKKyAgYGB0ZWFyZG93bl9tZXRob2QoKWBg
IChgIzE2MDVgXykuCisKKyogRml4IGV4Y2VwdGlvbiB2aXN1YWxpemF0aW9uIGluIGNhc2UgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRCkgZ2V0cworICBkZWxldGVkIGR1cmluZyB0
ZXN0aW5nIChgIzEyMzVgXykuIFRoYW5rcyBgQGJ1a3pvcmBfIGZvciByZXBvcnRpbmcuIFBSIGJ5
CisgIGBAbWFyc2NoZXJgXy4KKworKiBJbXByb3ZlIHRlc3Qgb3V0cHV0IGZvciBsb2dpY2FsIGV4
cHJlc3Npb24gd2l0aCBicmFja2V0cyAoYCM5MjVgXykuCisgIFRoYW5rcyBgQERSTWFjSXZlcmBf
IGZvciByZXBvcnRpbmcgYW5kIGBAUmVkQmVhcmRDb2RlYF8gZm9yIHRoZSBQUi4KKworKiBDcmVh
dGUgY29ycmVjdCBkaWZmIGZvciBzdHJpbmdzIGVuZGluZyB3aXRoIG5ld2xpbmVzIChgIzE1NTNg
XykuCisgIFRoYW5rcyBgQFZvZ3RpbmF0b3JgXyBmb3IgcmVwb3J0aW5nIGFuZCBgQFJlZEJlYXJk
Q29kZWBfIGFuZAorICBgQHRvbXZpbmVyYF8gZm9yIHRoZSBQUi4KKworKiBgYENvbmZ0ZXN0SW1w
b3J0RmFpbHVyZWBgIG5vdyBzaG93cyB0aGUgdHJhY2ViYWNrIG1ha2luZyBpdCBlYXNpZXIgdG8K
KyAgaWRlbnRpZnkgYnVncyBpbiBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMgKGAjMTUxNmBfKS4gVGhh
bmtzIGBAdHhvbW9uYF8gZm9yCisgIHRoZSBQUi4KKworKiBUZXh0IGRvY3VtZW50cyB3aXRob3V0
IGFueSBkb2N0ZXN0cyBubyBsb25nZXIgYXBwZWFyIGFzICJza2lwcGVkIi4KKyAgVGhhbmtzIGBA
Z3JhaW5nZXJ0YF8gZm9yIHJlcG9ydGluZyBhbmQgcHJvdmlkaW5nIGEgZnVsbCBQUiAoYCMxNTgw
YF8pLgorCisqIEZpeGVkIGNvbGxlY3Rpb24gb2YgY2xhc3NlcyB3aXRoIGN1c3RvbSBgYF9fbmV3
X19gYCBtZXRob2QuCisgIEZpeGVzIGAjMTU3OWBfLiBUaGFua3MgdG8gYEBTdHJhbmdlcjY2Njdg
XyBmb3IgdGhlIFBSLgorCisqIEZpeGVkIHNjb3BlIG92ZXJyaWRpbmcgaW5zaWRlIG1ldGFmdW5j
LnBhcmFtZXRyaXplIChgIzYzNGBfKS4KKyAgVGhhbmtzIHRvIGBAU3RyYW5nZXI2NjY3YF8gZm9y
IHRoZSBQUi4KKworKiBGaXhlZCB0aGUgdG90YWwgdGVzdHMgdGFsbHkgaW4ganVuaXQgeG1sIG91
dHB1dCAoYCMxNzk4YF8pLgorICBUaGFua3MgdG8gYEBjYm9lbHNlbmBfIGZvciB0aGUgUFIuCisK
KyogRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvciB3aXRoIGxpbmVzIGZyb20gYGByZXF1ZXN0Lm5vZGUu
d2FybmBgLgorICBUaGFua3MgdG8gYEBibHVleWVkYF8gZm9yIHRoZSBQUi4KKworCisuLiBfIzEy
MTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTIxMAorLi4g
XyMxMjM1OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEyMzUK
Ky4uIF8jMTM1MTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8x
MzUxCisuLiBfIzEzNzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMTM3MgorLi4gXyMxNDIxOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzE0MjEKKy4uIF8jMTQyNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xNDI2CisuLiBfIzE0Mjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9wdWxsLzE0MjgKKy4uIF8jMTQzNTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xNDM1CisuLiBfIzE0NDE6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9wdWxsLzE0NDEKKy4uIF8jMTQ0NDogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ0NAorLi4gXyMxNDU0OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNDU0CisuLiBfIzE0NjE6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE0NjEKKy4uIF8jMTQ2ODogaHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ2OAorLi4gXyMxNDcxOiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0NzEKKy4uIF8jMTQ3NDogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQ3NAorLi4gXyMxNDc5OiBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0NzkKKy4uIF8jMTUwMjogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUwMgorLi4gXyMxNTAzOiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1MDMKKy4uIF8jMTUx
NjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUxNgorLi4gXyMx
NTE5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTE5CisuLiBf
IzE1MjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE1MjAKKy4u
IF8jMTUyNjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTUyNgor
Li4gXyMxNTM5OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE1
MzkKKy4uIF8jMTU0NDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cy8xNTQ0CisuLiBfIzE1NDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMTU0NgorLi4gXyMxNTUzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QvaXNzdWVzLzE1NTMKKy4uIF8jMTU2MjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcy8xNTYyCisuLiBfIzE1Nzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3Qt
ZGV2L3B5dGVzdC9pc3N1ZXMvMTU3OQorLi4gXyMxNTgwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvcHVsbC8xNTgwCisuLiBfIzE1OTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTU5NAorLi4gXyMxNTk3OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTk3CisuLiBfIzE2MDU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYwNQorLi4gXyMxNjE2OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjE2CisuLiBfIzE2MTg6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYxOAorLi4gXyMxNjE5OiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE2MTkKKy4uIF8jMTYyNjog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTYyNgorLi4gXyMxNjI3
OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNjI3CisuLiBfIzE2
Mjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE2MjgKKy4uIF8j
MTYyOTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjI5Cisu
LiBfIzE2MzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYz
MgorLi4gXyMxNjMzOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8x
NjMzCisuLiBfIzE2NjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxs
LzE2NjQKKy4uIF8jMTY2ODogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lz
c3Vlcy8xNjY4CisuLiBfIzE2ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVz
dC9wdWxsLzE2ODQKKy4uIF8jMTcyMzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L3B1bGwvMTcyMworLi4gXyMxNzQwOiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9w
eXRlc3QvaXNzdWVzLzE3NDAKKy4uIF8jMTc0OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xNzQ5CisuLiBfIzE3Nzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9wdWxsLzE3NzgKKy4uIF8jMTc5NTogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTc5NQorLi4gXyMxNzk4OiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNzk4CisuLiBfIzE4MDk6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzE4MDkKKy4uIF8jMzcyOiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzM3MgorLi4gXyM0NTc6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU3CisuLiBfIzQ2MDogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvNDYwCisuLiBfIzU2NzogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvNTY3CisuLiBfIzYwNzogaHR0cHM6Ly9naXRo
dWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82MDcKKy4uIF8jNjM0OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzYzNAorLi4gXyM3MTc6IGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNzE3CisuLiBfIzgzMDogaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy84MzAKKy4uIF8jOTI1OiBodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzkyNQorCisKKy4uIF9AYW5u
dHplcjogaHR0cHM6Ly9naXRodWIuY29tL2FubnR6ZXIKKy4uIF9AYmFnZXJhcmQ6IGh0dHBzOi8v
Z2l0aHViLmNvbS9iYWdlcmFyZAorLi4gX0BCZXlvbmRFdmlsOiBodHRwczovL2dpdGh1Yi5jb20v
QmV5b25kRXZpbAorLi4gX0BibHVleWVkOiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZXllZAorLi4g
X0BjZXJpZHdlbjogaHR0cHM6Ly9naXRodWIuY29tL2Nlcmlkd2VuCisuLiBfQGNib2Vsc2VuOiBo
dHRwczovL2dpdGh1Yi5jb20vY2JvZWxzZW4KKy4uIF9AY3NhZnRvaXU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9jc2FmdG9pdQorLi4gX0BkNmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kNmUKKy4uIF9AZGF2
ZWh1bnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlaHVudAorLi4gX0BEUk1hY0l2ZXI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9EUk1hY0l2ZXIKKy4uIF9AZW9sbzk5OTogaHR0cHM6Ly9naXRodWIuY29t
L2VvbG85OTkKKy4uIF9AZmVuZ3h4OiBodHRwczovL2dpdGh1Yi5jb20vZmVuZ3h4CisuLiBfQGZs
dWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbHViCisuLiBfQGdwcmFzYWQ4NDogaHR0cHM6Ly9naXRo
dWIuY29tL2dwcmFzYWQ4NAorLi4gX0BncmFpbmdlcnQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFp
bmdlcnQKKy4uIF9AaGFydHltOiBodHRwczovL2dpdGh1Yi5jb20vaGFydHltCisuLiBfQGthbGVr
dW5kZXJ0OiBodHRwczovL2dpdGh1Yi5jb20va2FsZWt1bmRlcnQKKy4uIF9Aa3Zhcy1pdDogaHR0
cHM6Ly9naXRodWIuY29tL2t2YXMtaXQKKy4uIF9AbWFyc2NoZXI6IGh0dHBzOi8vZ2l0aHViLmNv
bS9tYXJzY2hlcgorLi4gX0BtaWtvZnNraTogaHR0cHM6Ly9naXRodWIuY29tL21pa29mc2tpCisu
LiBfQG1pbGxpYW1zOiBodHRwczovL2dpdGh1Yi5jb20vbWlsbGlhbXMKKy4uIF9AbmlrcmF0aW86
IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWtyYXRpbworLi4gX0Bub3ZhczB4MmE6IGh0dHBzOi8vZ2l0
aHViLmNvbS9ub3ZhczB4MmEKKy4uIF9Ab2Jlc3R3YWx0ZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9v
YmVzdHdhbHRlcgorLi4gX0Bva2tlbjogaHR0cHM6Ly9naXRodWIuY29tL29ra2VuCisuLiBfQG9s
ZWdwaWRzYWRueWk6IGh0dHBzOi8vZ2l0aHViLmNvbS9vbGVncGlkc2FkbnlpCisuLiBfQG9tYXJr
b2hsOiBodHRwczovL2dpdGh1Yi5jb20vb21hcmtvaGwKKy4uIF9AcGFsYXZpdjogaHR0cHM6Ly9n
aXRodWIuY29tL3BhbGF2aXYKKy4uIF9AUmVkQmVhcmRDb2RlOiBodHRwczovL2dpdGh1Yi5jb20v
UmVkQmVhcmRDb2RlCisuLiBfQHNhbGxuZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYWxsbmVyCisu
LiBfQHNvYmVyNzogaHR0cHM6Ly9naXRodWIuY29tL3NvYmVyNworLi4gX0BTdHJhbmdlcjY2Njc6
IGh0dHBzOi8vZ2l0aHViLmNvbS9TdHJhbmdlcjY2NjcKKy4uIF9Ac3V6YWt1OiBodHRwczovL2dp
dGh1Yi5jb20vc3V6YWt1CisuLiBfQHRhcmVxYWxheWFuOiBodHRwczovL2dpdGh1Yi5jb20vdGFy
ZXFhbGF5YW4KKy4uIF9AdGFzY2hpbmk6IGh0dHBzOi8vZ2l0aHViLmNvbS90YXNjaGluaQorLi4g
X0B0cmFtd2FqMjk6IGh0dHBzOi8vZ2l0aHViLmNvbS90cmFtd2FqMjkKKy4uIF9AdHhvbW9uOiBo
dHRwczovL2dpdGh1Yi5jb20vdHhvbW9uCisuLiBfQFZvZ3RpbmF0b3I6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9Wb2d0aW5hdG9yCisuLiBfQG1hdHRoaWFzaGE6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXR0
aGlhc2hhCisKKworMi45LjIgKDIwMTYtMDUtMzEpCis9PT09PT09PT09PT09PT09PT0KKworKipC
dWcgRml4ZXMqKgorCisqIGZpeCBgIzUxMGBfOiBza2lwIHRlc3RzIHdoZXJlIG9uZSBwYXJhbWV0
ZXJpemUgZGltZW5zaW9uIHdhcyBlbXB0eQorICB0aGFua3MgQWxleCBTdGFwbGV0b24gZm9yIHRo
ZSBSZXBvcnQgYW5kIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBmb3IgdGhlIFBSCisKKyogRml4IFhm
YWlsIGRvZXMgbm90IHdvcmsgd2l0aCBjb25kaXRpb24ga2V5d29yZCBhcmd1bWVudC4KKyAgVGhh
bmtzIGBAYXN0cmF3MzhgXyBmb3IgcmVwb3J0aW5nIHRoZSBpc3N1ZSAoYCMxNDk2YF8pIGFuZCBg
QHRvbXZpbmVyYF8KKyAgZm9yIFBSIHRoZSAoYCMxNTI0YF8pLgorCisqIEZpeCB3aW4zMiBwYXRo
IGlzc3VlIHdoZW4gcHV0dGluZyBjdXN0b20gY29uZmlnIGZpbGUgd2l0aCBhYnNvbHV0ZSBwYXRo
CisgIGluIGBgcHl0ZXN0Lm1haW4oIi1jIHlvdXJfYWJzb2x1dGVfcGF0aCIpYGAuCisKKyogRml4
IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGRldGVjdGlvbiB3aGVuIHJhaXNlZCBlcnJvciBjbGFz
cyBpcyBub3QgYXdhcmUKKyAgb2YgdW5pY29kZS9lbmNvZGVkIGJ5dGVzLgorICBUaGFua3MgYEBw
cnVzc2UtbWFydGluYF8gZm9yIHRoZSBQUiAoYCMxNTA2YF8pLgorCisqIEZpeCBgYHB5dGVzdC5t
YXJrLnNraXBgYCBtYXJrIHdoZW4gdXNlZCBpbiBzdHJpY3QgbW9kZS4KKyAgVGhhbmtzIGBAcHF1
ZW50aW5gXyBmb3IgdGhlIFBSIGFuZCBgQFJvbm55UGZhbm5zY2htaWR0YF8gZm9yCisgIHNob3dp
bmcgaG93IHRvIGZpeCB0aGUgYnVnLgorCisqIE1pbm9yIGltcHJvdmVtZW50cyBhbmQgZml4ZXMg
dG8gdGhlIGRvY3VtZW50YXRpb24uCisgIFRoYW5rcyBgQG9tYXJrb2hsYF8gZm9yIHRoZSBQUi4K
KworKiBGaXggYGAtLWZpeHR1cmVzYGAgdG8gc2hvdyBhbGwgZml4dHVyZSBkZWZpbml0aW9ucyBh
cyBvcHBvc2VkIHRvIGp1c3QKKyAgb25lIHBlciBmaXh0dXJlIG5hbWUuCisgIFRoYW5rcyB0byBg
QGhhY2tlYnJvdGBfIGZvciB0aGUgUFIuCisKKy4uIF8jNTEwOiBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUxMAorLi4gXyMxNTA2OiBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTA2CisuLiBfIzE0OTY6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTQ5NgorLi4gXyMxNTI0OiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xNTI0CisKKy4uIF9AcHJ1c3NlLW1hcnRp
bjogaHR0cHM6Ly9naXRodWIuY29tL3BydXNzZS1tYXJ0aW4KKy4uIF9AYXN0cmF3Mzg6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9hc3RyYXczOAorCisKKzIuOS4xICgyMDE2LTAzLTE3KQorPT09PT09PT09
PT09PT09PT09CisKKyoqQnVnIEZpeGVzKioKKworKiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hl
biBhIHBsdWdpbiBmYWlscyB0byBsb2FkLgorICBUaGFua3MgYEBuaWNvZGRlbXVzYF8gZm9yIHRo
ZSBQUi4KKworKiBGaXggKGAjMTE3OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L2lzc3Vlcy8xMTc4PmBfKToKKyAgYGBweXRlc3QuZmFpbGBgIHdpdGggbm9uLWFzY2lpIGNo
YXJhY3RlcnMgcmFpc2VzIGFuIGludGVybmFsIHB5dGVzdCBlcnJvci4KKyAgVGhhbmtzIGBAbmlj
b2RkZW11c2BfIGZvciB0aGUgUFIuCisKKyogRml4IChgIzQ2OWBfKToganVuaXQgcGFyc2VzIHJl
cG9ydC5ub2RlaWQgaW5jb3JyZWN0bHksIHdoZW4gcGFyYW1zIElEcworICBjb250YWluIGBgOjpg
YC4gVGhhbmtzIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSIChgIzE0MzFgXykuCisKKyogRml4IChg
IzU3OCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Nzg+YF8p
OiBTeW50YXhFcnJvcnMKKyAgY29udGFpbmluZyBub24tYXNjaWkgbGluZXMgYXQgdGhlIHBvaW50
IG9mIGZhaWx1cmUgZ2VuZXJhdGVkIGFuIGludGVybmFsCisgIHB5LnRlc3QgZXJyb3IuCisgIFRo
YW5rcyBgQGFzb3R0aWxlYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0
aGUgUFIuCisKKyogRml4IChgIzE0MzdgXyk6IFdoZW4gcGFzc2luZyBpbiBhIGJ5dGVzdHJpbmcg
cmVnZXggcGF0dGVybiB0byBwYXJhbWV0ZXJpemUKKyAgYXR0ZW1wdCB0byBkZWNvZGUgaXQgYXMg
dXRmLTggaWdub3JpbmcgZXJyb3JzLgorCisqIEZpeCAoYCM2NDlgXyk6IHBhcmFtZXRyaXplZCB0
ZXN0IG5vZGVzIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG8gcnVuIG9uIHRoZSBjb21tYW5kIGxpbmUu
CisKKyogRml4IChgIzEzOGBfKTogYmV0dGVyIHJlcG9ydGluZyBmb3IgcHl0aG9uIDMuMysgY2hh
aW5lZCBleGNlcHRpb25zCisKKy4uIF8jMTQzNzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy8xNDM3CisuLiBfIzQ2OTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy80NjkKKy4uIF8jMTQzMTogaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTQzMQorLi4gXyM2NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNjQ5CisuLiBfIzEzODogaHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzgKKworLi4gX0Bhc290dGlsZTogaHR0cHM6Ly9n
aXRodWIuY29tL2Fzb3R0aWxlCisKKworMi45LjAgKDIwMTYtMDItMjkpCis9PT09PT09PT09PT09
PT09PT0KKworKipOZXcgRmVhdHVyZXMqKgorCisqIE5ldyBgYHB5dGVzdC5tYXJrLnNraXBgYCBt
YXJrLCB3aGljaCB1bmNvbmRpdGlvbmFsbHkgc2tpcHMgbWFya2VkIHRlc3RzLgorICBUaGFua3Mg
YEBNaWNoYWVsQXF1aWxpbmFgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzEwNDBgXykuCisKKyog
YGAtLWRvY3Rlc3QtZ2xvYmBgIG1heSBub3cgYmUgcGFzc2VkIG11bHRpcGxlIHRpbWVzIGluIHRo
ZSBjb21tYW5kLWxpbmUuCisgIFRoYW5rcyBgQGphYmBfIGFuZCBgQG5pY29kZGVtdXNgXyBmb3Ig
dGhlIFBSLgorCisqIE5ldyBgYC1ycGBgIGFuZCBgYC1yUGBgIHJlcG9ydGluZyBvcHRpb25zIGdp
dmUgdGhlIHN1bW1hcnkgYW5kIGZ1bGwgb3V0cHV0CisgIG9mIHBhc3NpbmcgdGVzdHMsIHJlc3Bl
Y3RpdmVseS4gVGhhbmtzIHRvIGBAY29kZXdhcnJpb3IwYF8gZm9yIHRoZSBQUi4KKworKiBgYHB5
dGVzdC5tYXJrLnhmYWlsYGAgbm93IGhhcyBhIGBgc3RyaWN0YGAgb3B0aW9uLCB3aGljaCBtYWtl
cyBgYFhQQVNTYGAKKyAgdGVzdHMgdG8gZmFpbCB0aGUgdGVzdCBzdWl0ZSAoZGVmYXVsdGluZyB0
byBgYEZhbHNlYGApLiBUaGVyZSdzIGFsc28gYQorICBgYHhmYWlsX3N0cmljdGBgIGluaSBvcHRp
b24gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgaXQgcHJvamVjdC13aXNlLgorICBUaGFu
a3MgYEByYWJiYml0YF8gZm9yIHRoZSByZXF1ZXN0IGFuZCBgQG5pY29kZGVtdXNgXyBmb3IgdGhl
IFBSIChgIzEzNTVgXykuCisKKyogYGBQYXJzZXIuYWRkaW5pYGAgbm93IHN1cHBvcnRzIG9wdGlv
bnMgb2YgdHlwZSBgYGJvb2xgYC4KKyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIu
CisKKyogTmV3IGBgQUxMT1dfQllURVNgYCBkb2N0ZXN0IG9wdGlvbi4gVGhpcyBzdHJpcHMgYGBi
YGAgcHJlZml4ZXMgZnJvbSBieXRlIHN0cmluZ3MKKyAgaW4gZG9jdGVzdCBvdXRwdXQgKHNpbWls
YXIgdG8gYGBBTExPV19VTklDT0RFYGApLgorICBUaGFua3MgYEBqYXJhY29gXyBmb3IgdGhlIHJl
cXVlc3QgYW5kIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIgKGAjMTI4N2BfKS4KKworKiBHaXZl
IGEgaGludCBvbiBgYEtleWJvYXJkSW50ZXJydXB0YGAgdG8gdXNlIHRoZSBgYC0tZnVsbHRyYWNl
YGAgb3B0aW9uIHRvIHNob3cgdGhlIGVycm9ycy4KKyAgRml4ZXMgYCMxMzY2YF8uCisgIFRoYW5r
cyB0byBgQGhwazQyYF8gZm9yIHRoZSByZXBvcnQgYW5kIGBAUm9ubnlQZmFubnNjaG1pZHRgXyBm
b3IgdGhlIFBSLgorCisqIENhdGNoIGBgSW5kZXhFcnJvcmBgIGV4Y2VwdGlvbnMgd2hlbiBnZXR0
aW5nIGV4Y2VwdGlvbiBzb3VyY2UgbG9jYXRpb24uCisgIEZpeGVzIGEgcHl0ZXN0IGludGVybmFs
IGVycm9yIGZvciBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSAoZml4dHVyZXMgYW5kIHRlc3Rz
KQorICB3aGVyZSBzb3VyY2UgbGluZXMgYXJlIGZha2UgYnkgaW50ZW50aW9uLgorCisqKkNoYW5n
ZXMqKgorCisqICoqSW1wb3J0YW50Kio6IGBweS5jb2RlIDxodHRwczovL3B5bGliLnJlYWR0aGVk
b2NzLmlvL2VuL3N0YWJsZS9jb2RlLmh0bWw+YF8gaGFzIGJlZW4KKyAgbWVyZ2VkIGludG8gdGhl
IGBgcHl0ZXN0YGAgcmVwb3NpdG9yeSBhcyBgYHB5dGVzdC5fY29kZWBgLiBUaGlzIGRlY2lzaW9u
CisgIHdhcyBtYWRlIGJlY2F1c2UgYGBweS5jb2RlYGAgaGFkIHZlcnkgZmV3IHVzZXMgb3V0c2lk
ZSBgYHB5dGVzdGBgIGFuZCB0aGUKKyAgZmFjdCB0aGF0IGl0IHdhcyBpbiBhIGRpZmZlcmVudCBy
ZXBvc2l0b3J5IG1hZGUgaXQgZGlmZmljdWx0IHRvIGZpeCBidWdzIG9uCisgIGl0cyBjb2RlIGlu
IGEgdGltZWx5IG1hbm5lci4gVGhlIHRlYW0gaG9wZXMgd2l0aCB0aGlzIHRvIGJlIGFibGUgdG8g
YmV0dGVyCisgIHJlZmFjdG9yIG91dCBhbmQgaW1wcm92ZSB0aGF0IGNvZGUuCisgIFRoaXMgY2hh
bmdlIHNob3VsZG4ndCBhZmZlY3QgdXNlcnMsIGJ1dCBpdCBpcyB1c2VmdWwgdG8gbGV0IHVzZXJz
IGF3YXJlCisgIGlmIHRoZXkgZW5jb3VudGVyIGFueSBzdHJhbmdlIGJlaGF2aW9yLgorCisgIEtl
ZXAgaW4gbWluZCB0aGF0IHRoZSBjb2RlIGZvciBgYHB5dGVzdC5fY29kZWBgIGlzICoqcHJpdmF0
ZSoqIGFuZAorICAqKmV4cGVyaW1lbnRhbCoqLCBzbyB5b3UgZGVmaW5pdGVseSBzaG91bGQgbm90
IGltcG9ydCBpdCBleHBsaWNpdGx5IQorCisgIFBsZWFzZSBub3RlIHRoYXQgdGhlIG9yaWdpbmFs
IGBgcHkuY29kZWBgIGlzIHN0aWxsIGF2YWlsYWJsZSBpbgorICBgcHlsaWIgPGh0dHBzOi8vcHls
aWIucmVhZHRoZWRvY3MuaW8+YF8uCisKKyogYGBweXRlc3RfZW50ZXJfcGRiYGAgbm93IG9wdGlv
bmFsbHkgcmVjZWl2ZXMgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgorICBUaGFua3MgYEBuaWNv
ZGRlbXVzYF8gZm9yIHRoZSBQUi4KKworKiBSZW1vdmVkIGNvZGUgYW5kIGRvY3VtZW50YXRpb24g
Zm9yIFB5dGhvbiAyLjUgb3IgbG93ZXIgdmVyc2lvbnMsCisgIGluY2x1ZGluZyByZW1vdmFsIG9m
IHRoZSBvYnNvbGV0ZSBgYF9weXRlc3QuYXNzZXJ0aW9uLm9sZGludGVycHJldGBgIG1vZHVsZS4K
KyAgVGhhbmtzIGBAbmljb2RkZW11c2BfIGZvciB0aGUgUFIgKGAjMTIyNmBfKS4KKworKiBDb21w
YXJpc29ucyBub3cgYWx3YXlzIHNob3cgdXAgaW4gZnVsbCB3aGVuIGBgQ0lgYCBvciBgYEJVSUxE
X05VTUJFUmBgIGlzCisgIGZvdW5kIGluIHRoZSBlbnZpcm9ubWVudCwgZXZlbiB3aGVuIGBgLXZ2
YGAgaXNuJ3QgdXNlZC4KKyAgVGhhbmtzIGBAVGhlLUNvbXBpbGVyYF8gZm9yIHRoZSBQUi4KKwor
KiBgYC0tbGZgYCBhbmQgYGAtLWZmYGAgbm93IHN1cHBvcnQgbG9uZyBuYW1lczogYGAtLWxhc3Qt
ZmFpbGVkYGAgYW5kCisgIGBgLS1mYWlsZWQtZmlyc3RgYCByZXNwZWN0aXZlbHkuCisgIFRoYW5r
cyBgQE1pY2hhZWxBcXVpbGluYWBfIGZvciB0aGUgUFIuCisKKyogQWRkZWQgZXhwZWN0ZWQgZXhj
ZXB0aW9ucyB0byBgYHB5dGVzdC5yYWlzZXNgYCBmYWlsIG1lc3NhZ2UuCisKKyogQ29sbGVjdGlv
biBvbmx5IGRpc3BsYXlzIHByb2dyZXNzICgiY29sbGVjdGluZyBYIGl0ZW1zIikgd2hlbiBpbiBh
IHRlcm1pbmFsLgorICBUaGlzIGF2b2lkcyBjbHV0dGVyaW5nIHRoZSBvdXRwdXQgd2hlbiB1c2lu
ZyBgYC0tY29sb3I9eWVzYGAgdG8gb2J0YWluCisgIGNvbG9ycyBpbiBDSSBpbnRlZ3JhdGlvbnMg
c3lzdGVtcyAoYCMxMzk3YF8pLgorCisqKkJ1ZyBGaXhlcyoqCisKKyogVGhlIGBgLXNgYCBhbmQg
YGAtY2BgIG9wdGlvbnMgc2hvdWxkIG5vdyB3b3JrIHVuZGVyIGBgeGRpc3RgYDsKKyAgYGBDb25m
aWcuZnJvbWRpY3RhcmdzYGAgbm93IHJlcHJlc2VudHMgaXRzIGlucHV0IG11Y2ggbW9yZSBmYWl0
aGZ1bGx5LgorICBUaGFua3MgdG8gYEBidWt6b3JgXyBmb3IgdGhlIGNvbXBsZXRlIFBSIChgIzY4
MGBfKS4KKworKiBGaXggKGAjMTI5MGBfKTogc3VwcG9ydCBQeXRob24gMy41J3MgYGBAYGAgb3Bl
cmF0b3IgaW4gYXNzZXJ0aW9uIHJld3JpdGluZy4KKyAgVGhhbmtzIGBAU2hpbmtlbmpvZWBfIGZv
ciByZXBvcnQgd2l0aCB0ZXN0IGNhc2UgYW5kIGBAdG9tdmluZXJgXyBmb3IgdGhlIFBSLgorCisq
IEZpeCBmb3JtYXR0aW5nIHV0Zi04IGV4cGxhbmF0aW9uIG1lc3NhZ2VzIChgIzEzNzlgXykuCisg
IFRoYW5rcyBgQGJpZXJuYF8gZm9yIHRoZSBQUi4KKworKiBGaXggYHRyYWNlYmFjayBzdHlsZSBk
b2NzYF8gdG8gZGVzY3JpYmUgYWxsIG9mIHRoZSBhdmFpbGFibGUgb3B0aW9ucworICAoYXV0by9s
b25nL3Nob3J0L2xpbmUvbmF0aXZlL25vKSwgd2l0aCBgYGF1dG9gYCBiZWluZyB0aGUgZGVmYXVs
dCBzaW5jZSB2Mi42LgorICBUaGFua3MgYEBoYWNrZWJyb3RgXyBmb3IgdGhlIFBSLgorCisqIEZp
eCAoYCMxNDIyYF8pOiBqdW5pdCByZWNvcmRfeG1sX3Byb3BlcnR5IGRvZXNuJ3QgYWxsb3cgbXVs
dGlwbGUgcmVjb3JkcworICB3aXRoIHNhbWUgbmFtZS4KKworLi4gX2B0cmFjZWJhY2sgc3R5bGUg
ZG9jc2A6IGh0dHBzOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvdXNhZ2UuaHRtbCNtb2RpZnlpbmct
cHl0aG9uLXRyYWNlYmFjay1wcmludGluZworCisuLiBfIzE2MDk6IGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTYwOQorLi4gXyMxNDIyOiBodHRwczovL2dpdGh1
Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0MjIKKy4uIF8jMTM3OTogaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMzc5CisuLiBfIzEzNjY6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTM2NgorLi4gXyMxMDQwOiBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xMDQwCisuLiBfIzY4MDog
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy82ODAKKy4uIF8jMTI4
NzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTI4NworLi4gXyMx
MjI2OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xMjI2CisuLiBf
IzEyOTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzEyOTAKKy4u
IF8jMTM1NTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L3B1bGwvMTM1NQor
Li4gXyMxMzk3OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEz
OTcKKy4uIF9AYmllcm46IGh0dHBzOi8vZ2l0aHViLmNvbS9iaWVybgorLi4gX0BNaWNoYWVsQXF1
aWxpbmE6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNoYWVsQXF1aWxpbmEKKy4uIF9AYnVrem9yOiBo
dHRwczovL2dpdGh1Yi5jb20vYnVrem9yCisuLiBfQGhwazQyOiBodHRwczovL2dpdGh1Yi5jb20v
aHBrNDIKKy4uIF9Abmljb2RkZW11czogaHR0cHM6Ly9naXRodWIuY29tL25pY29kZGVtdXMKKy4u
IF9AamFiOiBodHRwczovL2dpdGh1Yi5jb20vamFiCisuLiBfQGNvZGV3YXJyaW9yMDogaHR0cHM6
Ly9naXRodWIuY29tL2NvZGV3YXJyaW9yMAorLi4gX0BqYXJhY286IGh0dHBzOi8vZ2l0aHViLmNv
bS9qYXJhY28KKy4uIF9AVGhlLUNvbXBpbGVyOiBodHRwczovL2dpdGh1Yi5jb20vVGhlLUNvbXBp
bGVyCisuLiBfQFNoaW5rZW5qb2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9TaGlua2Vuam9lCisuLiBf
QHRvbXZpbmVyOiBodHRwczovL2dpdGh1Yi5jb20vdG9tdmluZXIKKy4uIF9AUm9ubnlQZmFubnNj
aG1pZHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9Sb25ueVBmYW5uc2NobWlkdAorLi4gX0ByYWJiYml0
OiBodHRwczovL2dpdGh1Yi5jb20vcmFiYmJpdAorLi4gX0BoYWNrZWJyb3Q6IGh0dHBzOi8vZ2l0
aHViLmNvbS9oYWNrZWJyb3QKKy4uIF9AcHF1ZW50aW46IGh0dHBzOi8vZ2l0aHViLmNvbS9wcXVl
bnRpbgorLi4gX0Bpb2dnc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vaW9nZ3N0cmVhbQorCisy
LjguNyAoMjAxNi0wMS0yNCkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCAjMTMzODogdXNl
IHByZWRpY3RhYmxlIG9iamVjdCByZXNvbHV0aW9uIGZvciBtb25rZXlwYXRjaAorCisyLjguNiAo
MjAxNi0wMS0yMSkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCAjMTI1OTogYWxsb3cgZm9y
IGRvdWJsZSBub2RlaWRzIGluIGp1bml0eG1sLAorICB0aGlzIHdhcyBhIHJlZ3Jlc3Npb24gZmFp
bGluZyBwbHVnaW5zIGNvbWJpbmF0aW9ucworICBsaWtlIHB5dGVzdC1wZXA4ICsgcHl0ZXN0LWZs
YWtlcworCistIFdvcmthcm91bmQgZm9yIGV4Y2VwdGlvbiB0aGF0IG9jY3VycyBpbiBweXJlYWRs
aW5lIHdoZW4gdXNpbmcKKyAgYGAtLXBkYmBgIHdpdGggc3RhbmRhcmQgSS9PIGNhcHR1cmUgZW5h
YmxlZC4KKyAgVGhhbmtzIEVyaWsgTS4gQnJheSBmb3IgdGhlIFBSLgorCistIGZpeCAjOTAwOiBC
ZXR0ZXIgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIHRoZSB0YXJnZXQgb2YgYSBgYG1vbmtleXBhdGNo
YGAgY2FsbAorICByYWlzZXMgYW4gYGBJbXBvcnRFcnJvcmBgLgorCistIGZpeCAjMTI5MjogbW9u
a2V5cGF0Y2ggY2FsbHMgKHNldGF0dHIsIHNldGVudiwgZXRjLikgYXJlIG5vdyBPKDEpLgorICBU
aGFua3MgRGF2aWQgUi4gTWFjSXZlciBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEg
Zm9yIHRoZSBQUi4KKworLSBmaXggIzEyMjM6IGNhcHR1cmVkIHN0ZG91dCBhbmQgc3RkZXJyIGFy
ZSBub3cgcHJvcGVybHkgZGlzcGxheWVkIGJlZm9yZQorICBlbnRlcmluZyBwZGIgd2hlbiBgYC0t
cGRiYGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGJlaW5nIHRocm93biBhd2F5LgorICBUaGFua3MgQ2Fs
IExlZW1pbmcgZm9yIHRoZSBQUi4KKworLSBmaXggIzEzMDU6IHB5dGVzdCB3YXJuaW5ncyBlbWl0
dGVkIGR1cmluZyBgYHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5YGAgYXJlIG5vdworICBwcm9wZXJs
eSBkaXNwbGF5ZWQuCisgIFRoYW5rcyBJb25lbCBNYXJpZXMgQ3Jpc3RpYW4gZm9yIHRoZSByZXBv
cnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gZml4ICM2Mjg6IGZpeGVkIGlu
dGVybmFsIFVuaWNvZGVEZWNvZGVFcnJvciB3aGVuIGRvY3Rlc3RzIGNvbnRhaW4gdW5pY29kZS4K
KyAgVGhhbmtzIEphc29uIFIuIENvb21icyBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVp
cmEgZm9yIHRoZSBQUi4KKworLSBmaXggIzEzMzQ6IEFkZCBjYXB0dXJlZCBzdGRvdXQgdG8galVu
aXQgWE1MIHJlcG9ydCBvbiBzZXR1cCBlcnJvci4KKyAgVGhhbmtzIEdlb3JneSBEeXVsZGluIGZv
ciB0aGUgUFIuCisKKworMi44LjUgKDIwMTUtMTItMTEpCis9PT09PT09PT09PT09PT09PT0KKwor
LSBmaXggIzEyNDM6IGZpeGVkIGlzc3VlIHdoZXJlIGNsYXNzIGF0dHJpYnV0ZXMgaW5qZWN0ZWQg
ZHVyaW5nIGNvbGxlY3Rpb24gY291bGQgYnJlYWsgcHl0ZXN0LgorICBQUiBieSBBbGV4ZWkgS296
bGVub2ssIHRoYW5rcyBSb25ueSBQZmFubnNjaG1pZHQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0
aGUgcmV2aWV3IGFuZCBoZWxwLgorCistIGZpeCAjMTA3NDogcHJlY29tcHV0ZSBqdW5pdHhtbCBj
aHVua3MgaW5zdGVhZCBvZiBzdG9yaW5nIHRoZSB3aG9sZSB0cmVlIGluIG9iamVjdHMKKyAgVGhh
bmtzIEJydW5vIE9saXZlaXJhIGZvciB0aGUgcmVwb3J0IGFuZCBSb25ueSBQZmFubnNjaG1pZHQg
Zm9yIHRoZSBQUgorCistIGZpeCAjMTIzODogZml4IGBgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbCgp
YGAgcmVjZWl2aW5nIG11bHRpcGxlIGFyZ3VtZW50cworICAoUmVncmVzc2lvbiBpbnRyb2R1Y2Vk
IGluIDIuOC40KS4gVGhhbmtzIEFsZXggR2F5bm9yIGZvciB0aGUgcmVwb3J0IGFuZAorICBCcnVu
byBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCisKKzIuOC40ICgyMDE1LTEyLTA2KQorPT09PT09PT09
PT09PT09PT09CisKKy0gZml4ICMxMTkwOiBgYGRlcHJlY2F0ZWRfY2FsbCgpYGAgbm93IHdvcmtz
IHdoZW4gdGhlIGRlcHJlY2F0ZWQKKyAgZnVuY3Rpb24gaGFzIGJlZW4gYWxyZWFkeSBjYWxsZWQg
YnkgYW5vdGhlciB0ZXN0IGluIHRoZSBzYW1lCisgIG1vZHVsZS4gVGhhbmtzIE1pa2hhaWwgQ2hl
cm55a2ggZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUKKyAgUFIuCisK
Ky0gZml4ICMxMTk4OiBgYC0tcGFzdGViaW5gYCBvcHRpb24gbm93IHdvcmtzIG9uIFB5dGhvbiAz
LiBUaGFua3MKKyAgTWVoZHkgS2hvc2hub29keSBmb3IgdGhlIFBSLgorCistIGZpeCAjMTIxOTog
YGAtLXBhc3RlYmluYGAgbm93IHdvcmtzIGNvcnJlY3RseSB3aGVuIGNhcHR1cmVkIG91dHB1dCBj
b250YWlucworICBub24tYXNjaWkgY2hhcmFjdGVycy4gVGhhbmtzIEJydW5vIE9saXZlaXJhIGZv
ciB0aGUgUFIuCisKKy0gZml4ICMxMjA0OiBhbm90aGVyIGVycm9yIHdoZW4gY29sbGVjdGluZyB3
aXRoIGEgbmFzdHkgX19nZXRhdHRyX18oKS4KKyAgVGhhbmtzIEZsb3JpYW4gQnJ1aGluIGZvciB0
aGUgUFIuCisKKy0gZml4IHRoZSBzdW1tYXJ5IHByaW50ZWQgd2hlbiBubyB0ZXN0cyBkaWQgcnVu
LgorICBUaGFua3MgRmxvcmlhbiBCcnVoaW4gZm9yIHRoZSBQUi4KKy0gZml4ICMxMTg1IC0gZW5z
dXJlIE1BTklGRVNULmluIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHNob3VsZCBnbyB0byBhIHNkaXN0
CisKKy0gYSBudW1iZXIgb2YgZG9jdW1lbnRhdGlvbiBtb2Rlcm5pemF0aW9ucyB3cnQgZ29vZCBw
cmFjdGljZXMuCisgIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCisyLjguMyAo
MjAxNS0xMS0xOCkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCAjMTE2OTogYWRkIF9fbmFt
ZV9fIGF0dHJpYnV0ZSB0byB0ZXN0Y2FzZXMgaW4gVGVzdENhc2VGdW5jdGlvbiB0bworICBzdXBw
b3J0IHRoZSBAdW5pdHRlc3Quc2tpcCBkZWNvcmF0b3Igb24gZnVuY3Rpb25zIGFuZCBtZXRob2Rz
LgorICBUaGFua3MgTGVlIEthbWVudHNreSBmb3IgdGhlIFBSLgorCistIGZpeCAjMTAzNTogY29s
bGVjdGluZyB0ZXN0cyBpZiB0ZXN0IG1vZHVsZSBsZXZlbCBvYmogaGFzIF9fZ2V0YXR0cl9fKCku
CisgIFRoYW5rcyBTdW9yIGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSAvIFRvbSBW
aW5lciBmb3IgdGhlIFBSLgorCistIGZpeCAjMzMxOiBkb24ndCBjb2xsZWN0IHRlc3RzIGlmIHRo
ZWlyIGZhaWx1cmUgY2Fubm90IGJlIHJlcG9ydGVkIGNvcnJlY3RseQorICBlLmcuIHRoZXkgYXJl
IGEgY2FsbGFibGUgaW5zdGFuY2Ugb2YgYSBjbGFzcy4KKworLSBmaXggIzExMzM6IGZpeGVkIGlu
dGVybmFsIGVycm9yIHdoZW4gZmlsdGVyaW5nIHRyYWNlYmFja3Mgd2hlcmUgb25lIGVudHJ5Cisg
IGJlbG9uZ3MgdG8gYSBmaWxlIHdoaWNoIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCisgIFRoYW5r
cyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIGVuaGFuY2VtZW50IG1hZGUgdG8gaGln
aGxpZ2h0IGluIHJlZCB0aGUgbmFtZSBvZiB0aGUgZmFpbGluZyB0ZXN0cyBzbworICB0aGV5IHN0
YW5kIG91dCBpbiB0aGUgb3V0cHV0LgorICBUaGFua3MgR2FicmllbCBSZWlzIGZvciB0aGUgUFIu
CisKKy0gYWRkIG1vcmUgdGFsa3MgdG8gdGhlIGRvY3VtZW50YXRpb24KKy0gZXh0ZW5kIGRvY3Vt
ZW50YXRpb24gb24gdGhlIC0taWdub3JlIGNsaSBvcHRpb24KKy0gdXNlIHB5dGVzdC1ydW5uZXIg
Zm9yIHNldHVwdG9vbHMgaW50ZWdyYXRpb24KKy0gbWlub3IgZml4ZXMgZm9yIGludGVyYWN0aW9u
IHdpdGggT1MgWCBFbCBDYXBpdGFuCisgIHN5c3RlbSBpbnRlZ3JpdHkgcHJvdGVjdGlvbiAodGhh
bmtzIEZsb3JpYW4pCisKKworMi44LjIgKDIwMTUtMTAtMDcpCis9PT09PT09PT09PT09PT09PT0K
KworLSBmaXggIzEwODU6IHByb3BlciBoYW5kbGluZyBvZiBlbmNvZGluZyBlcnJvcnMgd2hlbiBw
YXNzaW5nIGVuY29kZWQgYnl0ZQorICBzdHJpbmdzIHRvIHB5dGVzdC5wYXJhbWV0cml6ZSBpbiBQ
eXRob24gMi4KKyAgVGhhbmtzIFRoZW1hbndpdGhvdXRhcGxhbiBmb3IgdGhlIHJlcG9ydCBhbmQg
QnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBmaXggIzEwODc6IGhhbmRsaW5nIFN5c3Rl
bUVycm9yIHdoZW4gcGFzc2luZyBlbXB0eSBieXRlIHN0cmluZ3MgdG8KKyAgcHl0ZXN0LnBhcmFt
ZXRyaXplIGluIFB5dGhvbiAzLgorICBUaGFua3MgUGF1bCBLZWhyZXIgZm9yIHRoZSByZXBvcnQg
YW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gZml4ICM5OTU6IGZpeGVkIGludGVy
bmFsIGVycm9yIHdoZW4gZmlsdGVyaW5nIHRyYWNlYmFja3Mgd2hlcmUgb25lIGVudHJ5CisgIHdh
cyBnZW5lcmF0ZWQgYnkgYW4gZXhlYygpIHN0YXRlbWVudC4KKyAgVGhhbmtzIERhbmllbCBIYWhs
ZXIsIEFzaGxleSBDIFN0cmF3LCBQaGlsaXBwZSBHYXV0aGllciBhbmQgUGF2ZWwgU2F2Y2hlbmtv
CisgIGZvciBjb250cmlidXRpbmcgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0g
Zml4ICMxMTAwIGFuZCAjMTA1NzogZXJyb3JzIHdoZW4gdXNpbmcgYXV0b3VzZSBmaXh0dXJlcyBh
bmQgZG9jdGVzdCBtb2R1bGVzLgorICBUaGFua3MgU2VyZ2V5IEIgS2lycGljaGV2IGFuZCBWaXRh
bCBLdWR6ZWxrYSBmb3IgY29udHJpYnV0aW5nIGFuZCBCcnVubworICBPbGl2ZWlyYSBmb3IgdGhl
IFBSLgorCisyLjguMSAoMjAxNS0wOS0yOSkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCAj
MTAzNDogQWRkIG1pc3Npbmcgbm9kZWlkIG9uIHB5dGVzdF9sb2d3YXJuaW5nIGNhbGwgaW4KKyAg
YWRkaG9vay4gIFRoYW5rcyBTaW1vbiBHb21pemVsaiBmb3IgdGhlIFBSLgorCistICdkZXByZWNh
dGVkX2NhbGwnIGlzIG5vdyBvbmx5IHNhdGlzZmllZCB3aXRoIGEgRGVwcmVjYXRpb25XYXJuaW5n
IG9yCisgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuIEJlZm9yZSAyLjguMCwgaXQgYWNjZXB0
ZWQgYW55IHdhcm5pbmcsIGFuZCAyLjguMAorICBtYWRlIGl0IGFjY2VwdCBvbmx5IERlcHJlY2F0
aW9uV2FybmluZyAoYnV0IG5vdCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKS4KKyAgVGhhbmtz
IEFsZXggR2F5bm9yIGZvciB0aGUgaXNzdWUgYW5kIEVyaWMgSHVuc2JlcmdlciBmb3IgdGhlIFBS
LgorCistIGZpeCBpc3N1ZSAjMTA3MzogYXZvaWQgY2FsbGluZyBfX2dldGF0dHJfXyBvbiBwb3Rl
bnRpYWwgcGx1Z2luIG9iamVjdHMuCisgIFRoaXMgZml4ZXMgYW4gaW5jb21wYXRpYmlsaXR5IHdp
dGggcHl0ZXN0LWRqYW5nby4gIFRoYW5rcyBBbmRyZWFzIFBlbG1lLAorICBCcnVubyBPbGl2ZWly
YSBhbmQgUm9ubnkgUGZhbm5zY2htaWR0IGZvciBjb250cmlidXRpbmcgYW5kIEhvbGdlciBLcmVr
ZWwKKyAgZm9yIHRoZSBmaXguCisKKy0gRml4IGlzc3VlICM3MDQ6IGhhbmRsZSB2ZXJzaW9uY29u
ZmxpY3QgZHVyaW5nIHBsdWdpbiBsb2FkaW5nIG1vcmUKKyAgZ3JhY2VmdWxseS4gIFRoYW5rcyBC
cnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIEZpeCBpc3N1ZSAjMTA2NDogIiItLWp1bml0
eG1sIiByZWdyZXNzaW9uIHdoZW4gdXNlZCB3aXRoIHRoZQorICAicHl0ZXN0LXhkaXN0IiBwbHVn
aW4sIHdpdGggdGVzdCByZXBvcnRzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSB3cm9uZyB0ZXN0cy4K
KyAgVGhhbmtzIERhbmllbCBHcnVud2FsZCBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVp
cmEgZm9yIHRoZSBQUi4KKworLSAoZXhwZXJpbWVudGFsKSBhZGFwdCBtb3JlIFNFTVZFUiBzdHls
ZSB2ZXJzaW9uaW5nIGFuZCBjaGFuZ2UgbWVhbmluZyBvZgorICBtYXN0ZXIgYnJhbmNoIGluIGdp
dCByZXBvOiAibWFzdGVyIiBicmFuY2ggbm93IGtlZXBzIHRoZSBidWcgZml4ZXMsIGNoYW5nZXMK
KyAgYWltZWQgZm9yIG1pY3JvIHJlbGVhc2VzLiAgImZlYXR1cmVzIiBicmFuY2ggd2lsbCBvbmx5
IGJlIHJlbGVhc2VkCisgIHdpdGggbWlub3Igb3IgbWFqb3IgcHl0ZXN0IHJlbGVhc2VzLgorCist
IEZpeCBpc3N1ZSAjNzY2IGJ5IHJlbW92aW5nIGRvY3VtZW50YXRpb24gcmVmZXJlbmNlcyB0byBk
aXN0dXRpbHMuCisgIFRoYW5rcyBSdXNzZWwgV2luZGVyLgorCistIEZpeCBpc3N1ZSAjMTAzMDog
bm93IGJ5dGUtc3RyaW5ncyBhcmUgZXNjYXBlZCB0byBwcm9kdWNlIGl0ZW0gbm9kZSBpZHMKKyAg
dG8gbWFrZSB0aGVtIGFsd2F5cyBzZXJpYWxpemFibGUuCisgIFRoYW5rcyBBbmR5IEZyZWVsYW5k
IGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIFB5dGhv
biAyOiBpZiB1bmljb2RlIHBhcmFtZXRyaXplZCB2YWx1ZXMgYXJlIGNvbnZlcnRpYmxlIHRvIGFz
Y2lpLCB0aGVpcgorICBhc2NpaSByZXByZXNlbnRhdGlvbiBpcyB1c2VkIGZvciB0aGUgbm9kZSBp
ZC4KKworLSBGaXggaXNzdWUgIzQxMTogQWRkIF9fZXFfXyBtZXRob2QgdG8gYXNzZXJ0aW9uIGNv
bXBhcmlzb24gZXhhbXBsZS4KKyAgVGhhbmtzIEJlbiBXZWJiLgorLSBGaXggaXNzdWUgIzY1Mzog
ZGVwcmVjYXRlZF9jYWxsIGNhbiBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdlci4KKworLSBmaXgg
aXNzdWUgODc3OiBwcm9wZXJseSBoYW5kbGUgYXNzZXJ0aW9uIGV4cGxhbmF0aW9ucyB3aXRoIG5v
bi1hc2NpaSByZXByCisgIFRoYW5rcyBNYXRoaWV1IEFnb3BpYW4gZm9yIHRoZSByZXBvcnQgYW5k
IFJvbm55IFBmYW5uc2NobWlkdCBmb3IgdGhlIFBSLgorCistIGZpeCBpc3N1ZSAxMDI5OiB0cmFu
c2Zvcm0gZXJyb3JzIHdoZW4gd3JpdGluZyBjYWNoZSB2YWx1ZXMgaW50byBweXRlc3Qtd2Fybmlu
Z3MKKworMi44LjAgKDIwMTUtMDktMTgpCis9PT09PT09PT09PT09PT09PT0KKworLSBuZXcgYGAt
LWxmYGAgYW5kIGBgLWZmYGAgb3B0aW9ucyB0byBydW4gb25seSB0aGUgbGFzdCBmYWlsaW5nIHRl
c3RzIG9yCisgICJmYWlsaW5nIHRlc3RzIGZpcnN0IiBmcm9tIHRoZSBsYXN0IHJ1bi4gIFRoaXMg
ZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZAorICB0aHJvdWdoIHBvcnRpbmcgdGhlIGZvcm1lcmx5
IGV4dGVybmFsIHB5dGVzdC1jYWNoZSBwbHVnaW4gaW50byBweXRlc3QgY29yZS4KKyAgQkFDS1dB
UkQgSU5DT01QQVQ6IGlmIHlvdSB1c2VkIHB5dGVzdC1jYWNoZSdzIGZ1bmN0aW9uYWxpdHkgdG8g
cGVyc2lzdAorICBkYXRhIGJldHdlZW4gdGVzdCBydW5zIGJlIGF3YXJlIHRoYXQgd2UgZG9uJ3Qg
c2VyaWFsaXplIHNldHMgYW55bW9yZS4KKyAgVGhhbmtzIFJvbm55IFBmYW5uc2NobWlkdCBmb3Ig
bW9zdCBvZiB0aGUgbWVyZ2luZyB3b3JrLgorCistICItciIgb3B0aW9uIG5vdyBhY2NlcHRzICJh
IiB0byBpbmNsdWRlIGFsbCBwb3NzaWJsZSByZXBvcnRzLCBzaW1pbGFyCisgIHRvIHBhc3Npbmcg
ImZFc3hYdyIgZXhwbGljaXRseSAoaXNzdWU5NjApLgorICBUaGFua3MgQWJoaWplZXQgS2FzdXJk
ZSBmb3IgdGhlIFBSLgorCistIGF2b2lkIHB5dGhvbjMuNSBkZXByZWNhdGlvbiB3YXJuaW5ncyBi
eSBpbnRyb2R1Y2luZyB2ZXJzaW9uCisgIHNwZWNpZmljIGluc3BlY3Rpb24gaGVscGVycywgdGhh
bmtzIE1pY2hhZWwgRHJvZXR0Ym9vbS4KKworLSBmaXggaXNzdWU1NjI6IEBub3NlLnRvb2xzLmlz
dGVzdCBub3cgZnVsbHkgcmVzcGVjdGVkLgorCistIGZpeCBpc3N1ZTkzNDogd2hlbiBzdHJpbmcg
Y29tcGFyaXNvbiBmYWlscyBhbmQgYSBkaWZmIGlzIHRvbyBsYXJnZSB0byBkaXNwbGF5CisgIHdp
dGhvdXQgcGFzc2luZyAtdnYsIHN0aWxsIHNob3cgYSBmZXcgbGluZXMgb2YgdGhlIGRpZmYuCisg
IFRoYW5rcyBGbG9yaWFuIEJydWhpbiBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEg
Zm9yIHRoZSBQUi4KKworLSBmaXggaXNzdWU3MzY6IEZpeCBhIGJ1ZyB3aGVyZSBmaXh0dXJlIHBh
cmFtcyB3b3VsZCBiZSBkaXNjYXJkZWQgd2hlbiBjb21iaW5lZAorICB3aXRoIHBhcmFtZXRyaXph
dGlvbiBtYXJrZXJzLgorICBUaGFua3MgdG8gTWFya3VzIFVudGVyd2FkaXR6ZXIgZm9yIHRoZSBQ
Ui4KKworLSBmaXggaXNzdWU3MTA6IGludHJvZHVjZSBBTExPV19VTklDT0RFIGRvY3Rlc3Qgb3B0
aW9uOiB3aGVuIGVuYWJsZWQsIHRoZQorICBgYHVgYCBwcmVmaXggaXMgc3RyaXBwZWQgZnJvbSB1
bmljb2RlIHN0cmluZ3MgaW4gZXhwZWN0ZWQgZG9jdGVzdCBvdXRwdXQuIFRoaXMKKyAgYWxsb3dz
IGRvY3Rlc3RzIHdoaWNoIHVzZSB1bmljb2RlIHRvIHJ1biBpbiBQeXRob24gMiBhbmQgMyB1bmNo
YW5nZWQuCisgIFRoYW5rcyBKYXNvbiBSLiBDb29tYnMgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5v
IE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gcGFyYW1ldHJpemUgbm93IGFsc28gZ2VuZXJhdGVz
IG1lYW5pbmdmdWwgdGVzdCBJRHMgZm9yIGVudW0sIHJlZ2V4IGFuZCBjbGFzcworICBvYmplY3Rz
IChhcyBvcHBvc2VkIHRvIGNsYXNzIGluc3RhbmNlcykuCisgIFRoYW5rcyB0byBGbG9yaWFuIEJy
dWhpbiBmb3IgdGhlIFBSLgorCistIEFkZCAnd2FybnMnIHRvIGFzc2VydCB0aGF0IHdhcm5pbmdz
IGFyZSB0aHJvd24gKGxpa2UgJ3JhaXNlcycpLgorICBUaGFua3MgdG8gRXJpYyBIdW5zYmVyZ2Vy
IGZvciB0aGUgUFIuCisKKy0gRml4IGlzc3VlNjgzOiBEbyBub3QgYXBwbHkgYW4gYWxyZWFkeSBh
cHBsaWVkIG1hcmsuICBUaGFua3Mgb2pha2UgZm9yIHRoZSBQUi4KKworLSBEZWFsIHdpdGggY2Fw
dHVyaW5nIGZhaWx1cmVzIGJldHRlciBzbyBmZXdlciBleGNlcHRpb25zIGdldCBsb3N0IHRvCisg
IC9kZXYvbnVsbC4gIFRoYW5rcyBEYXZpZCBTem90dGVuIGZvciB0aGUgUFIuCisKKy0gZml4IGlz
c3VlNzMwOiBkZXByZWNhdGUgYW5kIHdhcm4gYWJvdXQgdGhlIC0tZ2Vuc2NyaXB0IG9wdGlvbi4K
KyAgVGhhbmtzIFJvbm55IFBmYW5uc2NobWlkdCBmb3IgdGhlIHJlcG9ydCBhbmQgQ2hyaXN0aWFu
IFBvbW1yYW56IGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3VlNzUxOiBtdWx0aXBsZSBwYXJhbWV0
cml6ZSB3aXRoIGlkcyBidWcgaWYgaXQgcGFyYW1ldHJpemVzIGNsYXNzIHdpdGgKKyAgdHdvIG9y
IG1vcmUgdGVzdCBtZXRob2RzLiBUaGFua3MgU2VyZ2V5IENoaXBpZ2EgZm9yIHJlcG9ydGluZyBh
bmQgSmFuCisgIEJlZG5hcmlrIGZvciBQUi4KKworLSBmaXggaXNzdWU4MjogYXZvaWQgbG9hZGlu
ZyBjb25mdGVzdCBmaWxlcyBmcm9tIHNldHVwLmNmZy9weXRlc3QuaW5pL3RveC5pbmkKKyAgZmls
ZXMgYW5kIHVwd2FyZHMgYnkgZGVmYXVsdCAoLS1jb25mY3V0ZGlyIGNhbiBzdGlsbCBiZSBzZXQg
dG8gb3ZlcnJpZGUgdGhpcykuCisgIFRoYW5rcyBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgor
CistIGZpeCBpc3N1ZTc2ODogZG9jc3RyaW5ncyBmb3VuZCBpbiBweXRob24gbW9kdWxlcyB3ZXJl
IG5vdCBzZXR0aW5nIHVwIHNlc3Npb24KKyAgZml4dHVyZXMuIFRoYW5rcyBKYXNvbiBSLiBDb29t
YnMgZm9yIHJlcG9ydGluZyBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBhZGRl
ZCBgYHRtcGRpcl9mYWN0b3J5YGAsIGEgc2Vzc2lvbi1zY29wZWQgZml4dHVyZSB0aGF0IGNhbiBi
ZSB1c2VkIHRvIGNyZWF0ZQorICBkaXJlY3RvcmllcyB1bmRlciB0aGUgYmFzZSB0ZW1wb3Jhcnkg
ZGlyZWN0b3J5LiBQcmV2aW91c2x5IHRoaXMgb2JqZWN0IHdhcworICBpbnN0YWxsZWQgYXMgYSBg
YF90bXBkaXJoYW5kbGVyYGAgYXR0cmlidXRlIG9mIHRoZSBgYGNvbmZpZ2BgIG9iamVjdCwgYnV0
IG5vdyBpdAorICBpcyBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEkgYW5kIHVzaW5nIGBgY29uZmln
Ll90bXBkaXJoYW5kbGVyYGAgaXMKKyAgZGVwcmVjYXRlZC4KKyAgVGhhbmtzIEJydW5vIE9saXZl
aXJhIGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3VlODA4OiBweXRlc3QncyBpbnRlcm5hbCBhc3Nl
cnRpb24gcmV3cml0ZSBob29rIG5vdyBpbXBsZW1lbnRzIHRoZQorICBvcHRpb25hbCBQRVAzMDIg
Z2V0X2RhdGEgQVBJIHNvIHRlc3RzIGNhbiBhY2Nlc3MgZGF0YSBmaWxlcyBuZXh0IHRvIHRoZW0u
CisgIFRoYW5rcyB4bW8tb2RvbyBmb3IgcmVxdWVzdCBhbmQgZXhhbXBsZSBhbmQgQnJ1bm8gT2xp
dmVpcmEgZm9yCisgIHRoZSBQUi4KKworLSByb290ZGlyIGFuZCBpbmlmaWxlIGFyZSBub3cgZGlz
cGxheWVkIGR1cmluZyB1c2FnZSBlcnJvcnMgdG8gaGVscAorICB1c2VycyBkaWFnbm9zZSBwcm9i
bGVtcyBzdWNoIGFzIHVuZXhwZWN0ZWQgaW5pIGZpbGVzIHdoaWNoIGFkZAorICB1bmtub3duIG9w
dGlvbnMgYmVpbmcgcGlja2VkIHVwIGJ5IHB5dGVzdC4gVGhhbmtzIHRvIFBhdmVsIFNhdmNoZW5r
byBmb3IKKyAgYnJpbmdpbmcgdGhlIHByb2JsZW0gdG8gYXR0ZW50aW9uIGluICM4MjEgYW5kIEJy
dW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gU3VtbWFyeSBiYXIgbm93IGlzIGNvbG9yZWQg
eWVsbG93IGZvciB3YXJuaW5nCisgIHNpdHVhdGlvbnMgc3VjaCBhczogYWxsIHRlc3RzIGVpdGhl
ciB3ZXJlIHNraXBwZWQgb3IgeHBhc3MveGZhaWxlZCwKKyAgb3Igbm8gdGVzdHMgd2VyZSBydW4g
YXQgYWxsICh0aGlzIGlzIGEgcGFydGlhbCBmaXggZm9yIGlzc3VlNTAwKS4KKworLSBmaXggaXNz
dWU4MTI6IHB5dGVzdCBub3cgZXhpdHMgd2l0aCBzdGF0dXMgY29kZSA1IGluIHNpdHVhdGlvbnMg
d2hlcmUgbm8KKyAgdGVzdHMgd2VyZSBydW4gYXQgYWxsLCBzdWNoIGFzIHRoZSBkaXJlY3Rvcnkg
Z2l2ZW4gaW4gdGhlIGNvbW1hbmQgbGluZSBkb2VzCisgIG5vdCBjb250YWluIGFueSB0ZXN0cyBv
ciBhcyByZXN1bHQgb2YgYSBjb21tYW5kIGxpbmUgb3B0aW9uIGZpbHRlcnMKKyAgYWxsIG91dCBh
bGwgdGVzdHMgKC1rIGZvciBleGFtcGxlKS4KKyAgVGhhbmtzIEVyaWMgU2llZ2VybWFuIChpc3N1
ZTgxMikgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gU3VtbWFyeSBiYXIgbm93
IGlzIGNvbG9yZWQgeWVsbG93IGZvciB3YXJuaW5nCisgIHNpdHVhdGlvbnMgc3VjaCBhczogYWxs
IHRlc3RzIGVpdGhlciB3ZXJlIHNraXBwZWQgb3IgeHBhc3MveGZhaWxlZCwKKyAgb3Igbm8gdGVz
dHMgd2VyZSBydW4gYXQgYWxsIChyZWxhdGVkIHRvIGlzc3VlNTAwKS4KKyAgVGhhbmtzIEVyaWMg
U2llZ2VybWFuLgorCistIE5ldyBgYHRlc3RwYXRoc2BgIGluaSBvcHRpb246IGxpc3Qgb2YgZGly
ZWN0b3JpZXMgdG8gc2VhcmNoIGZvciB0ZXN0cworICB3aGVuIGV4ZWN1dGluZyBweXRlc3QgZnJv
bSB0aGUgcm9vdCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIHVzZWQKKyAgdG8gc3BlZWQgdXAgdGVz
dCBjb2xsZWN0aW9uIHdoZW4gYSBwcm9qZWN0IGhhcyB3ZWxsIHNwZWNpZmllZCBkaXJlY3Rvcmll
cworICBmb3IgdGVzdHMsIGJlaW5nIHVzdWFsbHkgbW9yZSBwcmFjdGljYWwgdGhhbiBjb25maWd1
cmluZyBub3JlY3Vyc2VkaXJzIGZvcgorICBhbGwgZGlyZWN0b3JpZXMgdGhhdCBkbyBub3QgY29u
dGFpbiB0ZXN0cy4KKyAgVGhhbmtzIHRvIEFkcmlhbiBmb3IgaWRlYSAoIzY5NCkgYW5kIEJydW5v
IE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3VlNzEzOiBKVW5pdCBYTUwgcmVwb3J0
cyBmb3IgZG9jdGVzdCBmYWlsdXJlcy4KKyAgVGhhbmtzIFB1bnlhc2hsb2thIEJpc3dhbC4KKwor
LSBmaXggaXNzdWU5NzA6IGludGVybmFsIHB5dGVzdCB3YXJuaW5ncyBub3cgYXBwZWFyIGFzICJw
eXRlc3Qtd2FybmluZ3MiIGluCisgIHRoZSB0ZXJtaW5hbCBpbnN0ZWFkIG9mICJ3YXJuaW5ncyIs
IHNvIGl0IGlzIGNsZWFyIGZvciB1c2VycyB0aGF0IHRob3NlCisgIHdhcm5pbmdzIGFyZSBmcm9t
IHB5dGVzdCBhbmQgbm90IGZyb20gdGhlIGJ1aWx0aW4gIndhcm5pbmdzIiBtb2R1bGUuCisgIFRo
YW5rcyBCcnVubyBPbGl2ZWlyYS4KKworLSBJbmNsdWRlIHNldHVwIGFuZCB0ZWFyZG93biBpbiBq
dW5pdHhtbCB0ZXN0IGR1cmF0aW9ucy4KKyAgVGhhbmtzIEphbm5lIFZhbmhhbGEuCisKKy0gZml4
IGlzc3VlNzM1OiBhc3NlcnRpb24gZmFpbHVyZXMgb24gZGVidWcgdmVyc2lvbnMgb2YgUHl0aG9u
IDMuNCsKKworLSBuZXcgb3B0aW9uIGBgLS1pbXBvcnQtbW9kZWBgIHRvIGFsbG93IHRvIGNoYW5n
ZSB0ZXN0IG1vZHVsZSBpbXBvcnRpbmcKKyAgYmVoYXZpb3VyIHRvIGFwcGVuZCB0byBzeXMucGF0
aCBpbnN0ZWFkIG9mIHByZXBlbmRpbmcuICBUaGlzIGJldHRlciBhbGxvd3MKKyAgdG8gcnVuIHRl
c3QgbW9kdWxlcyBhZ2FpbnN0IGluc3RhbGxlZCB2ZXJzaW9ucyBvZiBhIHBhY2thZ2UgZXZlbiBp
ZiB0aGUKKyAgcGFja2FnZSB1bmRlciB0ZXN0IGhhcyB0aGUgc2FtZSBpbXBvcnQgcm9vdC4gIElu
IHRoaXMgZXhhbXBsZTo6CisKKyAgICAgICAgdGVzdGluZy9fX2luaXRfXy5weQorICAgICAgICB0
ZXN0aW5nL3Rlc3RfcGtnX3VuZGVyX3Rlc3QucHkKKyAgICAgICAgcGtnX3VuZGVyX3Rlc3QvCisK
KyAgdGhlIHRlc3RzIHdpbGwgcnVuIGFnYWluc3QgdGhlIGluc3RhbGxlZCB2ZXJzaW9uCisgIG9m
IHBrZ191bmRlcl90ZXN0IHdoZW4gYGAtLWltcG9ydC1tb2RlPWFwcGVuZGBgIGlzIHVzZWQgd2hl
cmVhcworICBieSBkZWZhdWx0IHRoZXkgd291bGQgYWx3YXlzIHBpY2sgdXAgdGhlIGxvY2FsIHZl
cnNpb24uICBUaGFua3MgSG9sZ2VyIEtyZWtlbC4KKworLSBweXRlc3RlcjogYWRkIG1ldGhvZCBg
YFRtcFRlc3RkaXIuZGVsZXRlX2xvYWRlZF9tb2R1bGVzKClgYCwgYW5kIGNhbGwgaXQKKyAgZnJv
bSBgYGlubGluZV9ydW4oKWBgIHRvIGFsbG93IHRlbXBvcmFyeSBtb2R1bGVzIHRvIGJlIHJlbG9h
ZGVkLgorICBUaGFua3MgRWR1YXJkbyBTY2hldHRpbm8uCisKKy0gaW50ZXJuYWxseSByZWZhY3Rv
ciBwbHVnaW5tYW5hZ2VyIEFQSSBhbmQgY29kZSBzbyB0aGF0IHRoZXJlCisgIGlzIGEgY2xlYXIg
ZGlzdGluY3Rpb24gYmV0d2VlbiBhIHB5dGVzdC1hZ25vc3RpYyByYXRoZXIgc2ltcGxlCisgIHBs
dWdpbm1hbmFnZXIgYW5kIHRoZSBQeXRlc3RQbHVnaW5NYW5hZ2VyIHdoaWNoIGFkZHMgYSBsb3Qg
b2YKKyAgYmVoYXZpb3VyLCBhbW9uZyBpdCBoYW5kbGluZyBvZiB0aGUgbG9jYWwgY29uZnRlc3Qg
ZmlsZXMuCisgIEluIHRlcm1zIG9mIGRvY3VtZW50ZWQgbWV0aG9kcyB0aGlzIGlzIGEgYmFja3dh
cmQgY29tcGF0aWJsZQorICBjaGFuZ2UgYnV0IGl0IG1pZ2h0IHN0aWxsIGJyZWFrIDNyZCBwYXJ0
eSBwbHVnaW5zIHdoaWNoIHJlbGllZCBvbgorICBkZXRhaWxzIGxpa2UgZXNwZWNpYWxseSB0aGUg
cGx1Z2lubWFuYWdlci5hZGRfc2h1dGRvd24oKSBBUEkuCisgIFRoYW5rcyBIb2xnZXIgS3Jla2Vs
LgorCistIHBsdWdpbm1hbmFnZW1lbnQ6IGludHJvZHVjZSBgYHB5dGVzdC5ob29raW1wbGBgIGFu
ZAorICBgYHB5dGVzdC5ob29rc3BlY2BgIGRlY29yYXRvcnMgZm9yIHNldHRpbmcgaW1wbC9zcGVj
CisgIHNwZWNpZmljIHBhcmFtZXRlcnMuICBUaGlzIHN1YnN0aXR1dGVzIHRoZSBwcmV2aW91cwor
ICBub3cgZGVwcmVjYXRlZCB1c2Ugb2YgYGBweXRlc3QubWFya2BgIHdoaWNoIGlzIG1lYW50IHRv
CisgIGNvbnRhaW4gbWFya2VycyBmb3IgdGVzdCBmdW5jdGlvbnMgb25seS4KKworLSB3cml0ZS9y
ZWZpbmUgZG9jcyBmb3IgIndyaXRpbmcgcGx1Z2lucyIgd2hpY2ggbm93IGhhdmUgdGhlaXIKKyAg
b3duIHBhZ2UgYW5kIGFyZSBzZXBhcmF0ZSBmcm9tIHRoZSAidXNpbmcvaW5zdGFsbGluZyBwbHVn
aW5zYGAgcGFnZS4KKworLSBmaXggaXNzdWU3MzI6IHByb3Blcmx5IHVucmVnaXN0ZXIgcGx1Z2lu
cyBmcm9tIGFueSBob29rIGNhbGxpbmcKKyAgc2l0ZXMgYWxsb3dpbmcgdG8gaGF2ZSB0ZW1wb3Jh
cnkgcGx1Z2lucyBkdXJpbmcgdGVzdCBleGVjdXRpb24uCisKKy0gZGVwcmVjYXRlIGFuZCB3YXJu
IGFib3V0IGBgX19tdWx0aWNhbGxfX2BgIGFyZ3VtZW50IGluIGhvb2sKKyAgaW1wbGVtZW50YXRp
b25zLiAgVXNlIHRoZSBgYGhvb2t3cmFwcGVyYGAgbWVjaGFuaXNtIGluc3RlYWQgYWxyZWFkeQor
ICBpbnRyb2R1Y2VkIHdpdGggcHl0ZXN0LTIuNy4KKworLSBzcGVlZCB1cCBweXRlc3QncyBvd24g
dGVzdCBzdWl0ZSBjb25zaWRlcmFibHkgYnkgdXNpbmcgaW5wcm9jZXNzCisgIHRlc3RzIGJ5IGRl
ZmF1bHQgKHRlc3RydW4gY2FuIGJlIG1vZGlmaWVkIHdpdGggLS1ydW5weXRlc3Q9c3VicHJvY2Vz
cworICB0byBjcmVhdGUgc3VicHJvY2Vzc2VzIGluIG1hbnkgcGxhY2VzIGluc3RlYWQpLiAgVGhl
IG1haW4KKyAgQVBJcyB0byBydW4gcHl0ZXN0IGluIGEgdGVzdCBpcyAicnVucHl0ZXN0KCkiIG9y
ICJydW5weXRlc3Rfc3VicHJvY2VzcyIKKyAgYW5kICJydW5weXRlc3RfaW5wcm9jZXNzIiBpZiB5
b3UgbmVlZCBhIHBhcnRpY3VsYXIgd2F5IG9mIHJ1bm5pbmcKKyAgdGhlIHRlc3QuICBJbiBhbGwg
Y2FzZXMgeW91IGdldCBiYWNrIGEgUnVuUmVzdWx0IGJ1dCB0aGUgaW5wcm9jZXNzCisgIG9uZSB3
aWxsIGFsc28gaGF2ZSBhICJyZXByZWMiIGF0dHJpYnV0ZSB3aXRoIHRoZSByZWNvcmRlZCBldmVu
dHMvcmVwb3J0cy4KKworLSBmaXggbW9ua2V5cGF0Y2guc2V0YXR0cigieC55IiwgcmFpc2luZz1G
YWxzZSkgdG8gYWN0dWFsbHkgbm90IHJhaXNlCisgIGlmICJ5IiBpcyBub3QgYSBwcmUtZXhpc3Rp
bmcgYXR0cmlidXRlLiBUaGFua3MgRmxvcmlhbiBCcnVoaW4uCisKKy0gZml4IGlzc3VlNzQxOiBt
YWtlIHJ1bm5pbmcgb3V0cHV0IGZyb20gdGVzdGRpci5ydW4gY29weS9wYXN0ZWFibGUKKyAgVGhh
bmtzIEJydW5vIE9saXZlaXJhLgorCistIGFkZCBhIG5ldyBgYC0tbm9jb25mdGVzdGBgIGFyZ3Vt
ZW50IHdoaWNoIGlnbm9yZXMgYWxsIGBgY29uZnRlc3QucHlgYCBmaWxlcy4KKworLSBhZGQgYGBm
aWxlYGAgYW5kIGBgbGluZWBgIGF0dHJpYnV0ZXMgdG8gSlVuaXQtWE1MIG91dHB1dC4KKworLSBm
aXggaXNzdWU4OTA6IGNoYW5nZWQgZXh0ZW5zaW9uIG9mIGFsbCBkb2N1bWVudGF0aW9uIGZpbGVz
IGZyb20gYGB0eHRgYCB0bworICBgYHJzdGBgLiBUaGFua3MgdG8gQWJoaWplZXQgZm9yIHRoZSBQ
Ui4KKworLSBmaXggaXNzdWU3MTQ6IGFkZCBhYmlsaXR5IHRvIGFwcGx5IGluZGlyZWN0PVRydWUg
cGFyYW1ldGVyIG9uIHBhcnRpY3VsYXIgYXJnbmFtZXMuCisgIFRoYW5rcyBFbGl6YXZldGEyMzku
CisKKy0gZml4IGlzc3VlODkwOiBjaGFuZ2VkIGV4dGVuc2lvbiBvZiBhbGwgZG9jdW1lbnRhdGlv
biBmaWxlcyBmcm9tIGBgdHh0YGAgdG8KKyAgYGByc3RgYC4gVGhhbmtzIHRvIEFiaGlqZWV0IGZv
ciB0aGUgUFIuCisKKy0gZml4IGlzc3VlOTU3OiAiIyBkb2N0ZXN0OiBTS0lQIiBvcHRpb24gd2ls
bCBub3cgcmVnaXN0ZXIgZG9jdGVzdHMgYXMgU0tJUFBFRAorICByYXRoZXIgdGhhbiBQQVNTRUQu
CisgIFRoYW5rcyBUaG9tYXMgR3JhaW5nZXIgZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZl
aXJhIGZvciB0aGUgUFIuCisKKy0gaXNzdWU5NTE6IGFkZCBuZXcgcmVjb3JkX3htbF9wcm9wZXJ0
eSBmaXh0dXJlLCB0aGF0IHN1cHBvcnRzIGxvZ2dpbmcKKyAgYWRkaXRpb25hbCBpbmZvcm1hdGlv
biBvbiB4bWwgb3V0cHV0LiBUaGFua3MgRGF2aWQgRGlheiBmb3IgdGhlIFBSLgorCistIGlzc3Vl
OTQ5OiBwYXRocyBhZnRlciBub3JtYWwgb3B0aW9ucyAoZm9yIGV4YW1wbGUgYGAtc2BgLCBgYC12
YGAsIGV0YykgYXJlIG5vdworICBwcm9wZXJseSB1c2VkIHRvIGRpc2NvdmVyIGBgcm9vdGRpcmBg
IGFuZCBgYGluaWBgIGZpbGVzLgorICBUaGFua3MgUGV0ZXIgTGF1cmkgZm9yIHRoZSByZXBvcnQg
YW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKzIuNy4zICgyMDE1LTA5LTE1KQorPT09
PT09PT09PT09PT09PT09CisKKy0gQWxsb3cgJ2RldicsICdyYycsIG9yIG90aGVyIG5vbi1pbnRl
Z2VyIHZlcnNpb24gc3RyaW5ncyBpbiBgYGltcG9ydG9yc2tpcGBgLgorICBUaGFua3MgdG8gRXJp
YyBIdW5zYmVyZ2VyIGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3VlODU2OiBjb25zaWRlciAtLWNv
bG9yIHBhcmFtZXRlciBpbiBhbGwgb3V0cHV0cyAoZm9yIGV4YW1wbGUKKyAgLS1maXh0dXJlcyku
IFRoYW5rcyBCYXJuZXkgR2FsZSBmb3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9y
IHRoZSBQUi4KKworLSBmaXggaXNzdWU4NTU6IHBhc3Npbmcgc3RyIG9iamVjdHMgYXMgYGBwbHVn
aW5zYGAgYXJndW1lbnQgdG8gcHl0ZXN0Lm1haW4KKyAgaXMgbm93IGludGVycHJldGVkIGFzIGEg
bW9kdWxlIG5hbWUgdG8gYmUgaW1wb3J0ZWQgYW5kIHJlZ2lzdGVyZWQgYXMgYQorICBwbHVnaW4s
IGluc3RlYWQgb2Ygc2lsZW50bHkgaGF2aW5nIG5vIGVmZmVjdC4KKyAgVGhhbmtzIHhtby1vZG9v
IGZvciB0aGUgcmVwb3J0IGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhlIFBSLgorCistIGZpeCBp
c3N1ZTc0NDogZml4IGZvciBhc3QuQ2FsbCBjaGFuZ2VzIGluIFB5dGhvbiAzLjUrLiAgVGhhbmtz
CisgIEd1aWRvIHZhbiBSb3NzdW0sIE1hdHRoaWFzIEJ1c3Nvbm5pZXIsIFN0ZWZhbiBaaW1tZXJt
YW5uIGFuZAorICBUaG9tYXMgS2x1eXZlci4KKworLSBmaXggaXNzdWU4NDI6IGFwcGx5aW5nIG1h
cmtlcnMgaW4gY2xhc3NlcyBubyBsb25nZXIgcHJvcGFnYXRlIHRoaXMgbWFya2VycworICB0byBz
dXBlcmNsYXNzZXMgd2hpY2ggYWxzbyBoYXZlIG1hcmtlcnMuCisgIFRoYW5rcyB4bW8tb2RvbyBm
b3IgdGhlIHJlcG9ydCBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIHRoZSBQUi4KKworLSBwcmVzZXJ2
ZSB3YXJuaW5nIGZ1bmN0aW9ucyBhZnRlciBjYWxsIHRvIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwu
IFRoYW5rcworICBQaWV0ZXIgTXVsZGVyIGZvciBQUi4KKworLSBmaXggaXNzdWU4NTQ6IGF1dG91
c2UgeWllbGRfZml4dHVyZXMgZGVmaW5lZCBhcyBjbGFzcyBtZW1iZXJzIG9mCisgIHVuaXR0ZXN0
LlRlc3RDYXNlIHN1YmNsYXNzZXMgbm93IHdvcmsgYXMgZXhwZWN0ZWQuCisgIFRoYW5ua3MgeG1v
LW9kb28gZm9yIHRoZSByZXBvcnQgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0g
Zml4IGlzc3VlODMzOiAtLWZpeHR1cmVzIG5vdyBzaG93cyBhbGwgZml4dHVyZXMgb2YgY29sbGVj
dGVkIHRlc3QgZmlsZXMsIGluc3RlYWQgb2YganVzdCB0aGUKKyAgZml4dHVyZXMgZGVjbGFyZWQg
b24gdGhlIGZpcnN0IG9uZS4KKyAgVGhhbmtzIEZsb3JpYW4gQnJ1aGluIGZvciByZXBvcnRpbmcg
YW5kIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKy0gZml4IGlzc3VlODYzOiBza2lwcGVk
IHRlc3RzIG5vdyByZXBvcnQgdGhlIGNvcnJlY3QgcmVhc29uIHdoZW4gYSBza2lwL3hmYWlsCisg
IGNvbmRpdGlvbiBpcyBtZXQgd2hlbiB1c2luZyBtdWx0aXBsZSBtYXJrZXJzLgorICBUaGFua3Mg
UmFwaGFlbCBQaWVyemluYSBmb3IgcmVwb3J0aW5nIGFuZCBCcnVubyBPbGl2ZWlyYSBmb3IgdGhl
IFBSLgorCistIG9wdGltaXplZCB0bXBkaXIgZml4dHVyZSBpbml0aWFsaXphdGlvbiwgd2hpY2gg
c2hvdWxkIG1ha2UgdGVzdCBzZXNzaW9ucworICBmYXN0ZXIgKHNwZWNpYWxseSB3aGVuIHVzaW5n
IHB5dGVzdC14ZGlzdCkuIFRoZSBvbmx5IHZpc2libGUgZWZmZWN0CisgIGlzIHRoYXQgbm93IHB5
dGVzdCB1c2VzIGEgc3ViZGlyZWN0b3J5IGluIHRoZSAkVEVNUCBkaXJlY3RvcnkgZm9yIGFsbAor
ICBkaXJlY3RvcmllcyBjcmVhdGVkIGJ5IHRoaXMgZml4dHVyZSAoZGVmYXVsdHMgdG8gJFRFTVAv
cHl0ZXN0LSRVU0VSKS4KKyAgVGhhbmtzIEJydW5vIE9saXZlaXJhIGZvciB0aGUgUFIuCisKKzIu
Ny4yICgyMDE1LTA2LTIzKQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlNzY3OiBw
eXRlc3QucmFpc2VzIHZhbHVlIGF0dHJpYnV0ZSBkb2VzIG5vdCBjb250YWluIHRoZSBleGNlcHRp
b24KKyAgaW5zdGFuY2Ugb24gUHl0aG9uIDIuNi4gVGhhbmtzIEVyaWMgU2llZ2VybWFuIGZvciBw
cm92aWRpbmcgdGhlIHRlc3QKKyAgY2FzZSBhbmQgQnJ1bm8gT2xpdmVpcmEgZm9yIFBSLgorCist
IEF1dG9tYXRpY2FsbHkgY3JlYXRlIGRpcmVjdG9yeSBmb3IganVuaXR4bWwgYW5kIHJlc3VsdHMg
bG9nLgorICBUaGFua3MgQXJvbiBDdXJ6b24uCisKKy0gZml4IGlzc3VlNzEzOiBKVW5pdCBYTUwg
cmVwb3J0cyBmb3IgZG9jdGVzdCBmYWlsdXJlcy4KKyAgVGhhbmtzIFB1bnlhc2hsb2thIEJpc3dh
bC4KKworLSBmaXggaXNzdWU3MzU6IGFzc2VydGlvbiBmYWlsdXJlcyBvbiBkZWJ1ZyB2ZXJzaW9u
cyBvZiBQeXRob24gMy40KworICBUaGFua3MgQmVuamFtaW4gUGV0ZXJzb24uCisKKy0gZml4IGlz
c3VlMTE0OiBza2lwaWYgbWFya2VyIHJlcG9ydHMgdG8gaW50ZXJuYWwgc2tpcHBpbmcgcGx1Z2lu
OworICBUaGFua3MgRmxvcmlzIEJydXlub29naGUgZm9yIHJlcG9ydGluZyBhbmQgQnJ1bm8gT2xp
dmVpcmEgZm9yIHRoZSBQUi4KKworLSBmaXggaXNzdWU3NDg6IHVuaXR0ZXN0LlNraXBUZXN0IHJl
cG9ydHMgdG8gaW50ZXJuYWwgcHl0ZXN0IHVuaXR0ZXN0IHBsdWdpbi4KKyAgVGhhbmtzIFRob21h
cyBEZSBTY2hhbXBoZWxlaXJlIGZvciByZXBvcnRpbmcgYW5kIEJydW5vIE9saXZlaXJhIGZvciB0
aGUgUFIuCisKKy0gZml4IGlzc3VlNzE4OiBmYWlsZWQgdG8gY3JlYXRlIHJlcHJlc2VudGF0aW9u
IG9mIHNldHMgY29udGFpbmluZyB1bnNvcnRhYmxlCisgIGVsZW1lbnRzIGluIHB5dGhvbiAyLiBU
aGFua3MgRWRpc29uIEd1c3Rhdm8gTXVlbnouCisKKy0gZml4IGlzc3VlNzU2LCBmaXggaXNzdWU3
NTIgKGFuZCBzaW1pbGFyIGlzc3Vlcyk6IGRlcGVuZCBvbiBweS0xLjQuMjkKKyAgd2hpY2ggaGFz
IGEgcmVmaW5lZCBhbGdvcml0aG0gZm9yIHRyYWNlYmFjayBnZW5lcmF0aW9uLgorCisKKzIuNy4x
ICgyMDE1LTA1LTE5KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlNzMxOiBkbyBu
b3QgZ2V0IGNvbmZ1c2VkIGJ5IHRoZSBicmFjZXMgd2hpY2ggbWF5IGJlIHByZXNlbnQKKyAgYW5k
IHVuYmFsYW5jZWQgaW4gYW4gb2JqZWN0J3MgcmVwciB3aGlsZSBjb2xsYXBzaW5nIEZhbHNlCisg
IGV4cGxhbmF0aW9ucy4gIFRoYW5rcyBDYXJsIE1leWVyIGZvciB0aGUgcmVwb3J0IGFuZCB0ZXN0
IGNhc2UuCisKKy0gZml4IGlzc3VlNTUzOiBwcm9wZXJseSBoYW5kbGluZyBpbnNwZWN0LmdldHNv
dXJjZWxpbmVzIGZhaWx1cmVzIGluCisgIEZpeHR1cmVMb29rdXBFcnJvciB3aGljaCB3b3VsZCBs
ZWFkIHRvIGFuIGludGVybmFsIGVycm9yLAorICBvYmZ1c2NhdGluZyB0aGUgb3JpZ2luYWwgcHJv
YmxlbS4gVGhhbmtzIHRhbGxqb3NoIGZvciBpbml0aWFsCisgIGRpYWdub3NlL3BhdGNoIGFuZCBC
cnVubyBPbGl2ZWlyYSBmb3IgZmluYWwgcGF0Y2guCisKKy0gZml4IGlzc3VlNjYwOiBwcm9wZXJs
eSByZXBvcnQgc2NvcGUtbWlzbWF0Y2gtYWNjZXNzIGVycm9ycworICBpbmRlcGVuZGVudGx5IGZy
b20gb3JkZXJpbmcgb2YgZml4dHVyZSBhcmd1bWVudHMuICBBbHNvCisgIGF2b2lkIHRoZSBweXRl
c3QgaW50ZXJuYWwgdHJhY2ViYWNrIHdoaWNoIGRvZXMgbm90IHByb3ZpZGUKKyAgaW5mb3JtYXRp
b24gdG8gdGhlIHVzZXIuIFRoYW5rcyBIb2xnZXIgS3Jla2VsLgorCistIHN0cmVhbWxpbmVkIGFu
ZCBkb2N1bWVudGVkIHJlbGVhc2UgcHJvY2Vzcy4gIEFsc28gYWxsIHZlcnNpb25zCisgIChpbiBz
ZXR1cC5weSBhbmQgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uKSBhcmUgbm93IHJlYWQKKyAgZnJv
bSBfcHl0ZXN0L19faW5pdF9fLnB5LiBUaGFua3MgSG9sZ2VyIEtyZWtlbC4KKworLSBmaXhlZCBk
b2NzIHRvIHJlbW92ZSB0aGUgbm90aW9uIHRoYXQgeWllbGQtZml4dHVyZXMgYXJlIGV4cGVyaW1l
bnRhbC4KKyAgVGhleSBhcmUgaGVyZSB0byBzdGF5IDopICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEu
CisKKy0gU3VwcG9ydCBidWlsZGluZyB3aGVlbHMgYnkgdXNpbmcgZW52aXJvbm1lbnQgbWFya2Vy
cyBmb3IgdGhlCisgIHJlcXVpcmVtZW50cy4gIFRoYW5rcyBJb25lbCBNYXJpZXMgQ3Jpc3RpYW4u
CisKKy0gZml4ZWQgcmVncmVzc2lvbiB0byAyLjYuNCB3aGljaCBzdXJmYWNlZCBlLmcuIGluIGxv
c3Qgc3Rkb3V0IGNhcHR1cmUgcHJpbnRpbmcKKyAgd2hlbiB0ZXN0cyByYWlzZWQgU3lzdGVtRXhp
dC4gVGhhbmtzIEhvbGdlciBLcmVrZWwuCisKKy0gcmVpbnRyb2R1Y2VkIF9weXRlc3QgZml4dHVy
ZSBvZiB0aGUgcHl0ZXN0ZXIgcGx1Z2luIHdoaWNoIGlzIHVzZWQKKyAgYXQgbGVhc3QgYnkgcHl0
ZXN0LXhkaXN0LgorCisyLjcuMCAoMjAxNS0wMy0yNikKKz09PT09PT09PT09PT09PT09PQorCist
IGZpeCBpc3N1ZTQzNTogbWFrZSByZWxvYWQoKSB3b3JrIHdoZW4gYXNzZXJ0IHJld3JpdGluZyBp
cyBhY3RpdmUuCisgIFRoYW5rcyBEYW5pZWwgSGFobGVyLgorCistIGZpeCBpc3N1ZTYxNjogY29u
ZnRlc3QucHkgZmlsZXMgYW5kIHRoZWlyIGNvbnRhaW5lZCBmaXh0dXJlcyBhcmUgbm93CisgIHBy
b3Blcmx5IGNvbnNpZGVyZWQgZm9yIHZpc2liaWxpdHksIGluZGVwZW5kZW50bHkgZnJvbSB0aGUg
ZXhhY3QKKyAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgdGVzdCBhcmd1bWVudHMgdGhh
dCBhcmUgdXNlZC4KKyAgTWFueSB0aGFua3MgdG8gRXJpYyBTaWVnZXJtYW4gYW5kIGhpcyBQUjIz
NSB3aGljaCBjb250YWlucworICBzeXN0ZW1hdGljIHRlc3RzIGZvciBjb25mdGVzdCB2aXNpYmls
aXR5IGFuZCBub3cgcGFzc2VzLgorICBUaGlzIGNoYW5nZSBhbHNvIGludHJvZHVjZXMgdGhlIGNv
bmNlcHQgb2YgYSBgYHJvb3RkaXJgYCB3aGljaAorICBpcyBwcmludGVkIGFzIGEgbmV3IHB5dGVz
dCBoZWFkZXIgYW5kIGRvY3VtZW50ZWQgaW4gdGhlIHB5dGVzdAorICBjdXN0b21pemUgd2ViIHBh
Z2UuCisKKy0gY2hhbmdlIHJlcG9ydGluZyBvZiAiZGl2ZXJ0ZWQiIHRlc3RzLCBpLmUuIHRlc3Rz
IHRoYXQgYXJlIGNvbGxlY3RlZAorICBpbiBvbmUgZmlsZSBidXQgYWN0dWFsbHkgY29tZSBmcm9t
IGFub3RoZXIgKGUuZy4gd2hlbiB0ZXN0cyBpbiBhIHRlc3QgY2xhc3MKKyAgY29tZSBmcm9tIGEg
YmFzZSBjbGFzcyBpbiBhIGRpZmZlcmVudCBmaWxlKS4gIFdlIG5vdyBzaG93IHRoZSBub2RlaWQK
KyAgYW5kIGluZGljYXRlIHZpYSBhIHBvc3RmaXggdGhlIG90aGVyIGZpbGUuCisKKy0gYWRkIGFi
aWxpdHkgdG8gc2V0IGNvbW1hbmQgbGluZSBvcHRpb25zIGJ5IGVudmlyb25tZW50IHZhcmlhYmxl
IFBZVEVTVF9BRERPUFRTLgorCistIGFkZGVkIGRvY3VtZW50YXRpb24gb24gdGhlIG5ldyBweXRl
c3QtZGV2IHRlYW1zIG9uIGJpdGJ1Y2tldCBhbmQKKyAgZ2l0aHViLiAgU2VlIGh0dHBzOi8vcHl0
ZXN0Lm9yZy9lbi9zdGFibGUvY29udHJpYnV0aW5nLmh0bWwgLgorICBUaGFua3MgdG8gQW5hdG9s
eSBmb3IgcHVzaGluZyBhbmQgaW5pdGlhbCB3b3JrIG9uIHRoaXMuCisKKy0gZml4IGlzc3VlNjUw
OiBuZXcgb3B0aW9uIGBgLS1kb2N0dGVzdC1pZ25vcmUtaW1wb3J0LWVycm9yc2BgIHdoaWNoCisg
IHdpbGwgdHVybiBpbXBvcnQgZXJyb3JzIGluIGRvY3Rlc3RzIGludG8gc2tpcHMuICBUaGFua3Mg
Q2hhcmxlcyBDbG91ZAorICBmb3IgdGhlIGNvbXBsZXRlIFBSLgorCistIGZpeCBpc3N1ZTY1NTog
d29yayBhcm91bmQgZGlmZmVyZW50IHdheXMgdGhhdCBjYXVzZSBweXRob24yLzMKKyAgdG8gbGVh
ayBzeXMuZXhjX2luZm8gaW50byBmaXh0dXJlcy90ZXN0cyBjYXVzaW5nIGZhaWx1cmVzIGluIDNy
ZCBwYXJ0eSBjb2RlCisKKy0gZml4IGlzc3VlNjE1OiBhc3NlcnRpb24gcmV3cml0aW5nIGRpZCBu
b3QgY29ycmVjdGx5IGVzY2FwZSAlIHNpZ25zCisgIHdoZW4gZm9ybWF0dGluZyBib29sZWFuIG9w
ZXJhdGlvbnMsIHdoaWNoIHRyaXBwZWQgb3ZlciBtaXhpbmcKKyAgYm9vbGVhbnMgd2l0aCBtb2R1
bG8gb3BlcmF0b3JzLiAgVGhhbmtzIHRvIFRvbSBWaW5lciBmb3IgdGhlIHJlcG9ydCwKKyAgdHJp
YWdpbmcgYW5kIGZpeC4KKworLSBpbXBsZW1lbnQgaXNzdWUzNTE6IGFkZCBhYmlsaXR5IHRvIHNw
ZWNpZnkgcGFyYW1ldHJpemUgaWRzIGFzIGEgY2FsbGFibGUKKyAgdG8gZ2VuZXJhdGUgY3VzdG9t
IHRlc3QgaWRzLiAgVGhhbmtzIEJyaWFubmEgTGF1Z2hlciBmb3IgdGhlIGlkZWEgYW5kCisgIGlt
cGxlbWVudGF0aW9uLgorCistIGludHJvZHVjZSBhbmQgZG9jdW1lbnQgbmV3IGhvb2t3cmFwcGVy
IG1lY2hhbmlzbSB1c2VmdWwgZm9yIHBsdWdpbnMKKyAgd2hpY2ggd2FudCB0byB3cmFwIHRoZSBl
eGVjdXRpb24gb2YgY2VydGFpbiBob29rcyBmb3IgdGhlaXIgcHVycG9zZXMuCisgIFRoaXMgc3Vw
ZXJzZWRlcyB0aGUgdW5kb2N1bWVudGVkIGBgX19tdWx0aWNhbGxfX2BgIHByb3RvY29sIHdoaWNo
CisgIHB5dGVzdCBpdHNlbGYgYW5kIHNvbWUgZXh0ZXJuYWwgcGx1Z2lucyB1c2UuICBOb3RlIHRo
YXQgcHl0ZXN0LTIuOAorICBpcyBzY2hlZHVsZWQgdG8gZHJvcCBzdXBwb3J0aW5nIHRoZSBvbGQg
YGBfX211bHRpY2FsbF9fYGAKKyAgYW5kIG9ubHkgc3VwcG9ydCB0aGUgaG9va3dyYXBwZXIgcHJv
dG9jb2wuCisKKy0gbWFqb3JseSBzcGVlZCB1cCBpbnZvY2F0aW9uIG9mIHBsdWdpbiBob29rcwor
CistIHVzZSBob29rd3JhcHBlciBtZWNoYW5pc20gaW4gYnVpbHRpbiBweXRlc3QgcGx1Z2lucy4K
KworLSBhZGQgYSBkb2N0ZXN0IGluaSBvcHRpb24gZm9yIGRvY3Rlc3QgZmxhZ3MsIHRoYW5rcyBI
b2xnZXIgUGV0ZXJzLgorCistIGFkZCBub3RlIHRvIGRvY3MgdGhhdCBpZiB5b3Ugd2FudCB0byBt
YXJrIGEgcGFyYW1ldGVyIGFuZCB0aGUKKyAgcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUsIHlvdSBh
bHNvIG5lZWQgdG8gcGFzcyBpbiBhIHJlYXNvbiB0byBkaXNhbWJpZ3VhdGUKKyAgaXQgZnJvbSB0
aGUgImRlY29yYXRvciIgY2FzZS4gIFRoYW5rcyBUb20gVmluZXIuCisKKy0gInB5dGhvbl9jbGFz
c2VzIiBhbmQgInB5dGhvbl9mdW5jdGlvbnMiIG9wdGlvbnMgbm93IHN1cHBvcnQgZ2xvYi1wYXR0
ZXJucworICBmb3IgdGVzdCBkaXNjb3ZlcnksIGFzIGRpc2N1c3NlZCBpbiBpc3N1ZTYwMC4gVGhh
bmtzIExkaWFyeSBUcmFuc2xhdGlvbnMuCisKKy0gYWxsb3cgdG8gb3ZlcnJpZGUgcGFyYW1ldHJp
emVkIGZpeHR1cmVzIHdpdGggbm9uLXBhcmFtZXRyaXplZCBvbmVzIGFuZCB2aWNlIHZlcnNhIChi
dWJlbmtvZmYpLgorCistIGZpeCBpc3N1ZTQ2MzogcmFpc2Ugc3BlY2lmaWMgZXJyb3IgZm9yICdw
YXJhbWV0ZXJpemUnIG1pc3NwZWxsaW5nIChwZmN0ZGF5ZWxpc2UpLgorCistIE9uIGZhaWx1cmUs
IHRoZSBgYHN5cy5sYXN0X3ZhbHVlYGAsIGBgc3lzLmxhc3RfdHlwZWBgIGFuZAorICBgYHN5cy5s
YXN0X3RyYWNlYmFja2BgIGFyZSBzZXQsIHNvIHRoYXQgYSB1c2VyIGNhbiBpbnNwZWN0IHRoZSBl
cnJvcgorICB2aWEgcG9zdG1vcnRlbSBkZWJ1Z2dpbmcgKGFsbWFya2xlaW4pLgorCisyLjYuNCAo
MjAxNC0xMC0yNCkKKz09PT09PT09PT09PT09PT09PQorCistIEltcHJvdmUgYXNzZXJ0aW9uIGZh
aWx1cmUgcmVwb3J0aW5nIG9uIGl0ZXJhYmxlcywgYnkgdXNpbmcgbmRpZmYgYW5kCisgIHBwcmlu
dC4KKworLSByZW1vdmVkIG91dGRhdGVkIGphcGFuZXNlIGRvY3MgZnJvbSBzb3VyY2UgdHJlZS4K
KworLSBkb2NzIGZvciAicHl0ZXN0X2FkZGhvb2tzIiBob29rLiAgVGhhbmtzIEJydW5vIE9saXZl
aXJhLgorCistIHVwZGF0ZWQgcGx1Z2luIGluZGV4IGRvY3MuICBUaGFua3MgQnJ1bm8gT2xpdmVp
cmEuCisKKy0gZml4IGlzc3VlNTU3OiB3aXRoICItayIgd2Ugb25seSBhbGxvdyB0aGUgb2xkIHN0
eWxlICItIiBmb3IgbmVnYXRpb24KKyAgYXQgdGhlIGJlZ2lubmluZyBvZiBzdHJpbmdzIGFuZCBl
dmVuIHRoYXQgaXMgZGVwcmVjYXRlZC4gIFVzZSAibm90IiBpbnN0ZWFkLgorICBUaGlzIHNob3Vs
ZCBhbGxvdyB0byBwaWNrIHBhcmFtZXRyaXplZCB0ZXN0cyB3aGVyZSAiLSIgYXBwZWFyZWQgaW4g
dGhlIHBhcmFtZXRlci4KKworLSBmaXggaXNzdWU2MDQ6IEVzY2FwZSAlIGNoYXJhY3RlciBpbiB0
aGUgYXNzZXJ0aW9uIG1lc3NhZ2UuCisKKy0gZml4IGlzc3VlNjIwOiBhZGQgZXhwbGFuYXRpb24g
aW4gdGhlIC0tZ2Vuc2NyaXB0IHRhcmdldCBhYm91dCB3aGF0CisgIHRoZSBiaW5hcnkgYmxvYiBt
ZWFucy4gVGhhbmtzIERpbnUgR2hlcm1hbi4KKworLSBmaXggaXNzdWU2MTQ6IGZpeGVkIHBhc3Rl
YmluIHN1cHBvcnQuCisKKworLSBmaXggaXNzdWU2MjA6IGFkZCBleHBsYW5hdGlvbiBpbiB0aGUg
LS1nZW5zY3JpcHQgdGFyZ2V0IGFib3V0IHdoYXQKKyAgdGhlIGJpbmFyeSBibG9iIG1lYW5zLiBU
aGFua3MgRGludSBHaGVybWFuLgorCistIGZpeCBpc3N1ZTYxNDogZml4ZWQgcGFzdGViaW4gc3Vw
cG9ydC4KKworMi42LjMgKDIwMTQtMDktMjQpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXgg
aXNzdWU1NzU6IHh1bml0LXhtbCB3YXMgcmVwb3J0aW5nIGNvbGxlY3Rpb24gZXJyb3JzIGFzIGZh
aWx1cmVzCisgIGluc3RlYWQgb2YgZXJyb3JzLCB0aGFua3MgT2xlZyBTaW55YXZza2l5LgorCist
IGZpeCBpc3N1ZTU4MjogZml4IHNldHVwdG9vbHMgZXhhbXBsZSwgdGhhbmtzIExhc3psbyBQYXBw
IGFuZCBSb25ueQorICBQZmFubnNjaG1pZHQuCisKKy0gRml4IGluZmluaXRlIHJlY3Vyc2lvbiBi
dWcgd2hlbiBwaWNrbGluZyBjYXB0dXJlLkVuY29kZWRGaWxlLCB0aGFua3MKKyAgVXdlIFNjaG1p
dHQuCisKKy0gZml4IGlzc3VlNTg5OiBmaXggYmFkIGludGVyYWN0aW9uIHdpdGggbnVtcHkgYW5k
IG90aGVycyB3aGVuIHNob3dpbmcKKyAgZXhjZXB0aW9ucy4gIENoZWNrIGZvciBwcmVjaXNlICJt
YXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWQiIGV4Y2VwdGlvbgorICBpbnN0ZWFkIG9mIHBy
ZXN1bWluZyBhbnkgUnVudGltZUVycm9yIGlzIHRoYXQgb25lIChpbXBsZW1lbnRlZCBpbiBweQor
ICBkZXApLiAgVGhhbmtzIENoYXJsZXMgQ2xvdWQgZm9yIGFuYWx5c2luZyB0aGUgaXNzdWUuCisK
Ky0gZml4IGNvbmZ0ZXN0IHJlbGF0ZWQgZml4dHVyZSB2aXNpYmlsaXR5IGlzc3VlOiB3aGVuIHJ1
bm5pbmcgd2l0aCBhCisgIENXRCBvdXRzaWRlIG9mIGEgdGVzdCBwYWNrYWdlIHB5dGVzdCB3b3Vs
ZCBnZXQgZml4dHVyZSBkaXNjb3Zlcnkgd3JvbmcuCisgIFRoYW5rcyB0byBXb2xmZ2FuZyBTY2hu
ZXJyaW5nIGZvciBmaWd1cmluZyBvdXQgYSByZXByb2R1Y2libGUgZXhhbXBsZS4KKworLSBJbnRy
b2R1Y2UgcHl0ZXN0X2VudGVyX3BkYiBob29rIChuZWVkZWQgZS5nLiBieSBweXRlc3RfdGltZW91
dCB0byBjYW5jZWwgdGhlCisgIHRpbWVvdXQgd2hlbiBpbnRlcmFjdGl2ZWx5IGVudGVyaW5nIHBk
YikuICBUaGFua3MgV29sZmdhbmcgU2NobmVycmluZy4KKworLSBjaGVjayB4ZmFpbC9za2lwIGFs
c28gd2l0aCBub24tcHl0aG9uIGZ1bmN0aW9uIHRlc3QgaXRlbXMuIFRoYW5rcworICBGbG9yaXMg
QnJ1eW5vb2doZS4KKworMi42LjIgKDIwMTQtMDktMDUpCis9PT09PT09PT09PT09PT09PT0KKwor
LSBBZGRlZCBmdW5jdGlvbiBweXRlc3QuZnJlZXplX2luY2x1ZGVzKCksIHdoaWNoIG1ha2VzIGl0
IGVhc3kgdG8gZW1iZWQKKyAgcHl0ZXN0IGludG8gZXhlY3V0YWJsZXMgdXNpbmcgdG9vbHMgbGlr
ZSBjeF9mcmVlemUuCisgIFNlZSBkb2NzIGZvciBleGFtcGxlcyBhbmQgcmF0aW9uYWxlLiBUaGFu
a3MgQnJ1bm8gT2xpdmVpcmEuCisKKy0gSW1wcm92ZSBhc3NlcnRpb24gcmV3cml0aW5nIGNhY2hl
IGludmFsaWRhdGlvbiBwcmVjaXNpb24uCisKKy0gZml4ZWQgaXNzdWU1NjE6IGFkYXB0IGF1dG91
c2UgZml4dHVyZSBleGFtcGxlIGZvciBweXRob24zLgorCistIGZpeGVkIGlzc3VlNDUzOiBhc3Nl
cnRpb24gcmV3cml0aW5nIGlzc3VlIHdpdGggX19yZXByX18gY29udGFpbmluZworICAiXG57Iiwg
IlxufSIgYW5kICJcbn4iLgorCistIGZpeCBpc3N1ZTU2MDogY29ycmVjdGx5IGRpc3BsYXkgY29k
ZSBpZiBhbiAiZWxzZToiIG9yICJmaW5hbGx5OiIgaXMKKyAgZm9sbG93ZWQgYnkgc3RhdGVtZW50
cyBvbiB0aGUgc2FtZSBsaW5lLgorCistIEZpeCBleGFtcGxlIGluIG1vbmtleXBhdGNoIGRvY3Vt
ZW50YXRpb24sIHRoYW5rcyB0LThjaC4KKworLSBmaXggaXNzdWU1NzI6IGNvcnJlY3QgdG1wZGly
IGRvYyBleGFtcGxlIGZvciBweXRob24zLgorCistIERvIG5vdCBtYXJrIGFzIHVuaXZlcnNhbCB3
aGVlbCBiZWNhdXNlIFB5dGhvbiAyLjYgaXMgZGlmZmVyZW50IGZyb20KKyAgb3RoZXIgYnVpbGRz
IGR1ZSB0byB0aGUgZXh0cmEgYXJncGFyc2UgZGVwZW5kZW5jeS4gIEZpeGVzIGlzc3VlNTY2Lgor
ICBUaGFua3Mgc29udGVrLgorCistIEltcGxlbWVudCBpc3N1ZTU0OTogdXNlci1wcm92aWRlZCBh
c3NlcnRpb24gbWVzc2FnZXMgbm93IG5vIGxvbmdlcgorICByZXBsYWNlIHRoZSBweS50ZXN0IGlu
dHJvc3BlY3Rpb24gbWVzc2FnZSBidXQgYXJlIHNob3duIGluIGFkZGl0aW9uCisgIHRvIHRoZW0u
CisKKzIuNi4xICgyMDE0LTA4LTA3KQorPT09PT09PT09PT09PT09PT09CisKKy0gTm8gbG9uZ2Vy
IHNob3cgbGluZSBudW1iZXJzIGluIHRoZSAtLXZlcmJvc2Ugb3V0cHV0LCB0aGUgb3V0cHV0IGlz
IG5vdworICBwdXJlbHkgdGhlIG5vZGVpZC4gIFRoZSBsaW5lIG51bWJlciBpcyBzdGlsbCBzaG93
biBpbiBmYWlsdXJlIHJlcG9ydHMuCisgIFRoYW5rcyBGbG9yaXMgQnJ1eW5vb2doZS4KKworLSBm
aXggaXNzdWU0Mzcgd2hlcmUgYXNzZXJ0aW9uIHJld3JpdGluZyBjb3VsZCBjYXVzZSBweXRlc3Qt
eGRpc3Qgd29ya2VyIG5vZGVzCisgIHRvIGNvbGxlY3QgZGlmZmVyZW50IHRlc3RzLiBUaGFua3Mg
QnJ1bm8gT2xpdmVpcmEuCisKKy0gZml4IGlzc3VlNTU1OiBhZGQgImVycm9ycyIgYXR0cmlidXRl
IHRvIGNhcHR1cmUtc3RyZWFtcyB0byBzYXRpc2Z5CisgIHNvbWUgZGlzdHV0aWxzIGFuZCBwb3Nz
aWJseSBvdGhlciBjb2RlIGFjY2Vzc2luZyBzeXMuc3Rkb3V0LmVycm9ycy4KKworLSBmaXggaXNz
dWU1NDcgY2Fwc3lzL2NhcGZkIGFsc28gd29yayB3aGVuIG91dHB1dCBjYXB0dXJpbmcgKCItcyIp
IGlzIGRpc2FibGVkLgorCistIGFkZHJlc3MgaXNzdWUxNzA6IGFsbG93IHB5dGVzdC5tYXJrLnhm
YWlsKC4uLikgdG8gc3BlY2lmeSBleHBlY3RlZCBleGNlcHRpb25zIHZpYQorICBhbiBvcHRpb25h
bCAicmFpc2VzPUVYQyIgYXJndW1lbnQgd2hlcmUgRVhDIGNhbiBiZSBhIHNpbmdsZSBleGNlcHRp
b24KKyAgb3IgYSB0dXBsZSBvZiBleGNlcHRpb24gY2xhc3Nlcy4gIFRoYW5rcyBEYXZpZCBNb2hy
IGZvciB0aGUgY29tcGxldGUKKyAgUFIuCisKKy0gZml4IGludGVncmF0aW9uIG9mIHB5dGVzdCB3
aXRoIHVuaXR0ZXN0Lm1vY2sucGF0Y2ggZGVjb3JhdG9yIHdoZW4KKyAgaXQgdXNlcyB0aGUgIm5l
dyIgYXJndW1lbnQuICBUaGFua3MgTmljb2xhcyBEZWxhYnkgZm9yIHRlc3QgYW5kIFBSLgorCist
IGZpeCBpc3N1ZSB3aXRoIGRldGVjdGluZyBjb25mdGVzdCBmaWxlcyBpZiB0aGUgYXJndW1lbnRz
IGNvbnRhaW4KKyAgIjo6IiBub2RlIGlkIHNwZWNpZmljYXRpb25zIChjb3B5IHBhc3RlZCBmcm9t
ICItdiIgb3V0cHV0KQorCistIGZpeCBpc3N1ZTU0NCBieSBvbmx5IHJlbW92aW5nICJATlVNIiBh
dCB0aGUgZW5kIG9mICI6OiIgc2VwYXJhdGVkIHBhcnRzCisgIGFuZCBpZiB0aGUgcGFydCBoYXMg
YSAiLnB5IiBleHRlbnNpb24KKworLSBkb24ndCB1c2UgcHkuc3RkIGltcG9ydCBoZWxwZXIsIHJh
dGhlciBpbXBvcnQgdGhpbmdzIGRpcmVjdGx5LgorICBUaGFua3MgQnJ1bm8gT2xpdmVpcmEuCisK
KzIuNgorPT09CisKKy0gQ2FjaGUgZXhjZXB0aW9ucyBmcm9tIGZpeHR1cmVzIGFjY29yZGluZyB0
byB0aGVpciBzY29wZSAoaXNzdWUgNDY3KS4KKworLSBmaXggaXNzdWU1Mzc6IEF2b2lkIGltcG9y
dGluZyBvbGQgYXNzZXJ0aW9uIHJlaW50ZXJwcmV0YXRpb24gY29kZSBieSBkZWZhdWx0LgorCist
IGZpeCBpc3N1ZTM2NDogc2hvcnRlbiBhbmQgZW5oYW5jZSB0cmFjZWJhY2tzIHJlcHJlc2VudGF0
aW9uIGJ5IGRlZmF1bHQuCisgIFRoZSBuZXcgIi0tdGI9YXV0byIgb3B0aW9uIChkZWZhdWx0KSB3
aWxsIG9ubHkgZGlzcGxheSBsb25nIHRyYWNlYmFja3MKKyAgZm9yIHRoZSBmaXJzdCBhbmQgbGFz
dCBlbnRyeS4gIFlvdSBjYW4gZ2V0IHRoZSBvbGQgYmVoYXZpb3VyIG9mIHByaW50aW5nCisgIGFs
bCBlbnRyaWVzIGFzIGxvbmcgZW50cmllcyB3aXRoICItLXRiPWxvbmciLiAgQWxzbyBzaG9ydCBl
bnRyaWVzIGJ5CisgIGRlZmF1bHQgYXJlIG5vdyBwcmludGVkIHZlcnkgc2ltaWxhcmx5IHRvICIt
LXRiPW5hdGl2ZSIgb25lcy4KKworLSBmaXggaXNzdWU1MTQ6IHRlYWNoIGFzc2VydGlvbiByZWlu
dGVycHJldGF0aW9uIGFib3V0IHByaXZhdGUgY2xhc3MgYXR0cmlidXRlcworCistIGNoYW5nZSAt
diBvdXRwdXQgdG8gaW5jbHVkZSBmdWxsIG5vZGUgSURzIG9mIHRlc3RzLiAgVXNlcnMgY2FuIGNv
cHkKKyAgYSBub2RlIElEIGZyb20gYSB0ZXN0IHJ1biwgaW5jbHVkaW5nIGxpbmUgbnVtYmVyLCBh
bmQgdXNlIGl0IGFzIGEKKyAgcG9zaXRpb25hbCBhcmd1bWVudCBpbiBvcmRlciB0byBydW4gb25s
eSBhIHNpbmdsZSB0ZXN0LgorCistIGZpeCBpc3N1ZSA0NzU6IGZhaWwgZWFybHkgYW5kIGNvbXBy
ZWhlbnNpYmxlIGlmIGNhbGxpbmcKKyAgcHl0ZXN0LnJhaXNlcyB3aXRoIHdyb25nIGV4Y2VwdGlv
biB0eXBlLgorCistIGZpeCBpc3N1ZTUxNjogdGVsbCBpbiBnZXR0aW5nLXN0YXJ0ZWQgYWJvdXQg
Y3VycmVudCBkZXBlbmRlbmNpZXMuCisKKy0gY2xlYW51cCBzZXR1cC5weSBhIGJpdCBhbmQgc3Bl
Y2lmeSBzdXBwb3J0ZWQgdmVyc2lvbnMuIFRoYW5rcyBKdXJrbworICBHb3Nwb2RuZXRpYyBmb3Ig
dGhlIFBSLgorCistIGNoYW5nZSBYUEFTUyBjb2xvdXIgdG8geWVsbG93IHJhdGhlciB0aGVuIHJl
ZCB3aGVuIHRlc3RzIGFyZSBydW4KKyAgd2l0aCAtdi4KKworLSBmaXggaXNzdWU0NzM6IHdvcmsg
YXJvdW5kIG1vY2sgcHV0dGluZyBhbiB1bmJvdW5kIG1ldGhvZCBpbnRvIGEgY2xhc3MKKyAgZGlj
dCB3aGVuIGRvdWJsZS1wYXRjaGluZy4KKworLSBmaXggaXNzdWU0OTg6IGlmIGEgZml4dHVyZSBm
aW5hbGl6ZXIgZmFpbHMsIG1ha2Ugc3VyZSB0aGF0CisgIHRoZSBmaXh0dXJlIGlzIHN0aWxsIGlu
dmFsaWRhdGVkLgorCistIGZpeCBpc3N1ZTQ1MzogdGhlIHJlc3VsdCBvZiB0aGUgcHl0ZXN0X2Fz
c2VydHJlcHJfY29tcGFyZSBob29rIG5vdyBnZXRzCisgIGl0J3MgbmV3bGluZXMgZXNjYXBlZCBz
byB0aGF0IGZvcm1hdF9leGNlcHRpb24gZG9lcyBub3QgYmxvdyB1cC4KKworLSBpbnRlcm5hbCBu
ZXcgd2FybmluZyBzeXN0ZW06IHB5dGVzdCB3aWxsIG5vdyBwcm9kdWNlIHdhcm5pbmdzIHdoZW4K
KyAgaXQgZGV0ZWN0cyBvZGRpdGllcyBpbiB5b3VyIHRlc3QgY29sbGVjdGlvbiBvciBleGVjdXRp
b24uCisgIFdhcm5pbmdzIGFyZSB1bHRpbWF0ZWx5IHNlbnQgdG8gYSBuZXcgcHl0ZXN0X2xvZ3dh
cm5pbmcgaG9vayB3aGljaCBpcworICBjdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBieSB0aGUg
dGVybWluYWwgcGx1Z2luIHdoaWNoIGRpc3BsYXlzCisgIHdhcm5pbmdzIGluIHRoZSBzdW1tYXJ5
IGxpbmUgYW5kIHNob3dzIG1vcmUgZGV0YWlscyB3aGVuIC1ydyAocmVwb3J0IG9uCisgIHdhcm5p
bmdzKSBpcyBzcGVjaWZpZWQuCisKKy0gY2hhbmdlIHNraXBzIGludG8gd2FybmluZ3MgZm9yIHRl
c3QgY2xhc3NlcyB3aXRoIGFuIF9faW5pdF9fIGFuZAorICBjYWxsYWJsZXMgaW4gdGVzdCBtb2R1
bGVzIHdoaWNoIGxvb2sgbGlrZSBhIHRlc3QgYnV0IGFyZSBub3QgZnVuY3Rpb25zLgorCistIGZp
eCBpc3N1ZTQzNjogaW1wcm92ZWQgZmluZGluZyBvZiBpbml0aWFsIGNvbmZ0ZXN0IGZpbGVzIGZy
b20gY29tbWFuZAorICBsaW5lIGFyZ3VtZW50cyBieSB1c2luZyB0aGUgcmVzdWx0IG9mIHBhcnNl
X2tub3duX2FyZ3MgcmF0aGVyIHRoYW4KKyAgdGhlIHByZXZpb3VzIGZsYWt5IGhldXJpc3RpY3Mu
ICBUaGFua3MgTWFyYyBBYnJhbW93aXR6IGZvciB0ZXN0cworICBhbmQgaW5pdGlhbCBmaXhpbmcg
YXBwcm9hY2hlcyBpbiB0aGlzIGFyZWEuCisKKy0gZml4IGlzc3VlICM0Nzk6IHByb3Blcmx5IGhh
bmRsZSBub3NlL3VuaXR0ZXN0KDIpIFNraXBUZXN0IGV4Y2VwdGlvbnMKKyAgZHVyaW5nIGNvbGxl
Y3Rpb24vbG9hZGluZyBvZiB0ZXN0IG1vZHVsZXMuICBUaGFua3MgdG8gTWFyYyBTY2hsYWljaAor
ICBmb3IgdGhlIGNvbXBsZXRlIFBSLgorCistIGZpeCBpc3N1ZTQ5MDogaW5jbHVkZSBweXRlc3Rf
bG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyBpbiBkb2N1bWVudGF0aW9uCisgIGFuZCBpbXByb3ZlIGRv
Y3N0cmluZy4KKworLSBmaXggaXNzdWU0NzI6IGNsYXJpZnkgdGhhdCBgYHB5dGVzdC5jb25maWcu
Z2V0dmFsdWUoKWBgIGNhbm5vdCB3b3JrCisgIGlmIGl0J3MgdHJpZ2dlcmVkIGFoZWFkIG9mIGNv
bW1hbmQgbGluZSBwYXJzaW5nLgorCistIG1lcmdlIFBSMTIzOiBpbXByb3ZlZCBpbnRlZ3JhdGlv
biB3aXRoIG1vY2sucGF0Y2ggZGVjb3JhdG9yIG9uIHRlc3RzLgorCistIGZpeCBpc3N1ZTQxMjog
bWVzc2luZyB3aXRoIHN0ZG91dC9zdGRlcnIgRkQtbGV2ZWwgc3RyZWFtcyBpcyBub3cKKyAgY2Fw
dHVyZWQgd2l0aG91dCBjcmFzaGVzLgorCistIGZpeCBpc3N1ZTQ4MzogdHJpYWwvcHkzMyB3b3Jr
cyBub3cgcHJvcGVybHkuICBUaGFua3MgRGFuaWVsIEdyYW5hIGZvciBQUi4KKworLSBpbXByb3Zl
IGV4YW1wbGUgZm9yIHB5dGVzdCBpbnRlZ3JhdGlvbiB3aXRoICJweXRob24gc2V0dXAucHkgdGVz
dCIKKyAgd2hpY2ggbm93IGhhcyBhIGdlbmVyaWMgIi1hIiBvciAiLS1weXRlc3QtYXJncyIgb3B0
aW9uIHdoZXJlIHlvdQorICBjYW4gcGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMgYXMgYSBxdW90ZWQg
c3RyaW5nLiAgVGhhbmtzIFRyZXZvciBCZWtvbGF5LgorCistIHNpbXBsaWZpZWQgaW50ZXJuYWwg
Y2FwdHVyaW5nIG1lY2hhbmlzbSBhbmQgbWFkZSBpdCBtb3JlIHJvYnVzdAorICBhZ2FpbnN0IHRl
c3RzIG9yIHNldHVwcyBjaGFuZ2luZyBGRDEvRkQyLCBhbHNvIGJldHRlciBpbnRlZ3JhdGVkCisg
IG5vdyB3aXRoIHB5dGVzdC5wZGIoKSBpbiBzaW5nbGUgdGVzdHMuCisKKy0gaW1wcm92ZW1lbnRz
IHRvIHB5dGVzdCdzIG93biB0ZXN0LXN1aXRlIGxlYWthZ2UgZGV0ZWN0aW9uLCBjb3VydGVzeSBv
ZiBQUnMKKyAgZnJvbSBNYXJjIEFicmFtb3dpdHoKKworLSBmaXggaXNzdWU0OTI6IGF2b2lkIGxl
YWsgaW4gdGVzdF93cml0ZW9yZy4gIFRoYW5rcyBNYXJjIEFicmFtb3dpdHouCisKKy0gZml4IGlz
c3VlNDkzOiBkb24ndCBydW4gdGVzdHMgaW4gZG9jIGRpcmVjdG9yeSB3aXRoIGBgcHl0aG9uIHNl
dHVwLnB5IHRlc3RgYAorICAodXNlIHRveCAtZSBkb2N0ZXN0aW5nIGZvciB0aGF0KQorCistIGZp
eCBpc3N1ZTQ4NjogYmV0dGVyIHJlcG9ydGluZyBhbmQgaGFuZGxpbmcgb2YgZWFybHkgY29uZnRl
c3QgbG9hZGluZyBmYWlsdXJlcworCistIHNvbWUgY2xlYW51cCBhbmQgc2ltcGxpZmljYXRpb24g
b2YgaW50ZXJuYWwgY29uZnRlc3QgaGFuZGxpbmcuCisKKy0gd29yayBhIGJpdCBoYXJkZXIgdG8g
YnJlYWsgcmVmZXJlbmNlIGN5Y2xlcyB3aGVuIGNhdGNoaW5nIGV4Y2VwdGlvbnMuCisgIFRoYW5r
cyBKdXJrbyBHb3Nwb2RuZXRpYy4KKworLSBmaXggaXNzdWU0NDM6IGZpeCBza2lwIGV4YW1wbGVz
IHRvIHVzZSBwcm9wZXIgY29tcGFyaXNvbi4gIFRoYW5rcyBBbGV4CisgIEdyb2VuaG9sbS4KKwor
LSBzdXBwb3J0IG5vc2Utc3R5bGUgYGBfX3Rlc3RfX2BgIGF0dHJpYnV0ZSBvbiBtb2R1bGVzLCBj
bGFzc2VzIGFuZAorICBmdW5jdGlvbnMsIGluY2x1ZGluZyB1bml0dGVzdC1zdHlsZSBDbGFzc2Vz
LiAgSWYgc2V0IHRvIEZhbHNlLCB0aGUKKyAgdGVzdCB3aWxsIG5vdCBiZSBjb2xsZWN0ZWQuCisK
Ky0gZml4IGlzc3VlNTEyOiBzaG93ICI8bm90c2V0PiIgZm9yIGFyZ3VtZW50cyB3aGljaCBtaWdo
dCBub3QgYmUgc2V0CisgIGluIG1vbmtleXBhdGNoIHBsdWdpbi4gIEltcHJvdmVzIG91dHB1dCBp
biBkb2N1bWVudGF0aW9uLgorCisKKzIuNS4yICgyMDE0LTAxLTI5KQorPT09PT09PT09PT09PT09
PT09CisKKy0gZml4IGlzc3VlNDA5IC0tIGJldHRlciBpbnRlcm9wZXJhdGUgd2l0aCBjeF9mcmVl
emUgYnkgbm90CisgIHRyeWluZyB0byBpbXBvcnQgZnJvbSBjb2xsZWN0aW9ucy5hYmMgd2hpY2gg
Y2F1c2VzIHByb2JsZW1zCisgIGZvciBweTI3L2N4X2ZyZWV6ZS4gIFRoYW5rcyBXb2xmZ2FuZyBM
LiBmb3IgcmVwb3J0aW5nIGFuZCB0cmFja2luZyBpdCBkb3duLgorCistIGZpeGVkIGRvY3MgYW5k
IGNvZGUgdG8gdXNlICJweXRlc3QiIGluc3RlYWQgb2YgInB5LnRlc3QiIGFsbW9zdCBldmVyeXdo
ZXJlLgorICBUaGFua3MgSnVya28gR29zcG9kbmV0aWMgZm9yIHRoZSBjb21wbGV0ZSBQUi4KKwor
LSBmaXggaXNzdWU0MjU6IG1lbnRpb24gYXQgZW5kIG9mICJweS50ZXN0IC1oIiB0aGF0IC0tbWFy
a2VycworICBhbmQgLS1maXh0dXJlcyB3b3JrIGFjY29yZGluZyB0byBzcGVjaWZpZWQgdGVzdCBw
YXRoIChvciBjdXJyZW50IGRpcikKKworLSBmaXggaXNzdWU0MTM6IGV4Y2VwdGlvbnMgd2l0aCB1
bmljb2RlIGF0dHJpYnV0ZXMgYXJlIG5vdyBwcmludGVkCisgIGNvcnJlY3RseSBhbHNvIG9uIHB5
dGhvbjIgYW5kIHdpdGggcHl0ZXN0LXhkaXN0IHJ1bnMuICh0aGUgZml4CisgIHJlcXVpcmVzIHB5
LTEuNC4yMCkKKworLSBjb3B5LCBjbGVhbnVwIGFuZCBpbnRlZ3JhdGUgcHkuaW8gY2FwdHVyZQor
ICBmcm9tIHB5bGliIDEuNC4yMC5kZXYyIChyZXYgMTNkOWFmOTU1NDdlKQorCistIGFkZHJlc3Mg
aXNzdWU0MTY6IGNsYXJpZnkgZG9jcyBhcyB0byBjb25mdGVzdC5weSBsb2FkaW5nIHNlbWFudGlj
cworCistIGZpeCBpc3N1ZTQyOTogY29tcGFyaW5nIGJ5dGUgc3RyaW5ncyB3aXRoIG5vbi1hc2Np
aSBjaGFycyBpbiBhc3NlcnQKKyAgZXhwcmVzc2lvbnMgbm93IHdvcmsgYmV0dGVyLiAgVGhhbmtz
IEZsb3JpcyBCcnV5bm9vZ2hlLgorCistIG1ha2UgY2FwZmQvY2Fwc3lzLmNhcHR1cmUgcHJpdmF0
ZSwgaXRzIHVudXNlZCBhbmQgc2hvdWxkbid0IGJlIGV4cG9zZWQKKworCisyLjUuMSAoMjAxMy0x
Mi0xNykKKz09PT09PT09PT09PT09PT09PQorCistIG1lcmdlIG5ldyBkb2N1bWVudGF0aW9uIHN0
eWxpbmcgUFIgZnJvbSBUb2JpYXMgQmllbmllay4KKworLSBmaXggaXNzdWU0MDM6IGFsbG93IHBh
cmFtZXRyaXplIG9mIG11bHRpcGxlIHNhbWUtbmFtZSBmdW5jdGlvbnMgd2l0aGluCisgIGEgY29s
bGVjdGlvbiBub2RlLiAgVGhhbmtzIEFuZHJlYXMgS2xvZWNrbmVyIGFuZCBBbGV4IEdheW5vciBm
b3IgcmVwb3J0aW5nCisgIGFuZCBhbmFseXNpcy4KKworLSBBbGxvdyBwYXJhbWV0ZXJpemVkIGZp
eHR1cmVzIHRvIHNwZWNpZnkgdGhlIElEIG9mIHRoZSBwYXJhbWV0ZXJzIGJ5CisgIGFkZGluZyBh
biBpZHMgYXJndW1lbnQgdG8gcHl0ZXN0LmZpeHR1cmUoKSBhbmQgcHl0ZXN0LnlpZWxkX2ZpeHR1
cmUoKS4KKyAgVGhhbmtzIEZsb3JpcyBCcnV5bm9vZ2hlLgorCistIGZpeCBpc3N1ZTQwNCBieSBh
bHdheXMgdXNpbmcgdGhlIGJpbmFyeSB4bWwgZXNjYXBlIGluIHRoZSBqdW5pdHhtbAorICBwbHVn
aW4uICBUaGFua3MgUm9ubnkgUGZhbm5zY2htaWR0LgorCistIGZpeCBpc3N1ZTQwNzogZml4IGFk
ZG9wdGlvbiBkb2NzdHJpbmcgdG8gcG9pbnQgdG8gYXJncGFyc2UgaW5zdGVhZCBvZgorICBvcHRw
YXJzZS4gVGhhbmtzIERhbmllbCBELiBXcmlnaHQuCisKKworCisyLjUuMCAoMjAxMy0xMi0xMikK
Kz09PT09PT09PT09PT09PT09PQorCistIGRyb3BwZWQgcHl0aG9uMi41IGZyb20gYXV0b21hdGVk
IHJlbGVhc2UgdGVzdGluZyBvZiBweXRlc3QgaXRzZWxmCisgIHdoaWNoIG1lYW5zIGl0J3MgcHJv
YmFibHkgZ29pbmcgdG8gYnJlYWsgc29vbiAoYnV0IHN0aWxsIHdvcmtzCisgIHdpdGggdGhpcyBy
ZWxlYXNlIHdlIGJlbGlldmUpLgorCistIHNpbXBsaWZpZWQgYW5kIGZpeGVkIGltcGxlbWVudGF0
aW9uIGZvciBjYWxsaW5nIGZpbmFsaXplcnMgd2hlbgorICBwYXJhbWV0cml6ZWQgZml4dHVyZXMg
b3IgZnVuY3Rpb24gYXJndW1lbnRzIGFyZSBpbnZvbHZlZC4gIGZpbmFsaXphdGlvbgorICBpcyBu
b3cgcGVyZm9ybWVkIGxhemlseSBhdCBzZXR1cCB0aW1lIGluc3RlYWQgb2YgaW4gdGhlICJ0ZWFy
ZG93biBwaGFzZSIuCisgIFdoaWxlIHRoaXMgbWlnaHQgc291bmQgb2RkIGF0IGZpcnN0LCBpdCBo
ZWxwcyB0byBlbnN1cmUgdGhhdCB3ZSBhcmUKKyAgY29ycmVjdGx5IGhhbmRsaW5nIHNldHVwL3Rl
YXJkb3duIGV2ZW4gaW4gY29tcGxleCBjb2RlLiAgVXNlci1sZXZlbCBjb2RlCisgIHNob3VsZCBu
b3QgYmUgYWZmZWN0ZWQgdW5sZXNzIGl0J3MgaW1wbGVtZW50aW5nIHRoZSBweXRlc3RfcnVudGVz
dF90ZWFyZG93bgorICBob29rIGFuZCBleHBlY3RpbmcgY2VydGFpbiBmaXh0dXJlIGluc3RhbmNl
cyBhcmUgdG9ybiBkb3duIHdpdGhpbiAodmVyeQorICB1bmxpa2VseSBhbmQgd291bGQgaGF2ZSBi
ZWVuIHVucmVsaWFibGUgYW55d2F5KS4KKworLSBQUjkwOiBhZGQgLS1jb2xvcj15ZXN8bm98YXV0
byBvcHRpb24gdG8gZm9yY2UgdGVybWluYWwgY29sb3JpbmcKKyAgbW9kZSAoImF1dG8iIGlzIGRl
ZmF1bHQpLiAgVGhhbmtzIE1hcmMgQWJyYW1vd2l0ei4KKworLSBmaXggaXNzdWUzMTkgLSBjb3Jy
ZWN0bHkgc2hvdyB1bmljb2RlIGluIGFzc2VydGlvbiBlcnJvcnMuICBNYW55CisgIHRoYW5rcyB0
byBGbG9yaXMgQnJ1eW5vb2doZSBmb3IgdGhlIGNvbXBsZXRlIFBSLiAgQWxzbyBtZWFucworICB3
ZSBkZXBlbmQgb24gcHk+PTEuNC4xOSBub3cuCisKKy0gZml4IGlzc3VlMzk2IC0gY29ycmVjdGx5
IHNvcnQgYW5kIGZpbmFsaXplIGNsYXNzLXNjb3BlZCBwYXJhbWV0cml6ZWQKKyAgdGVzdHMgaW5k
ZXBlbmRlbnRseSBmcm9tIG51bWJlciBvZiBtZXRob2RzIG9uIHRoZSBjbGFzcy4KKworLSByZWZp
eCBpc3N1ZTMyMyBpbiBhIGJldHRlciB3YXkgLS0gcGFyYW1ldHJpemF0aW9uIHNob3VsZCBub3cg
bmV2ZXIKKyAgY2F1c2UgUnVudGltZSBSZWN1cnNpb24gZXJyb3JzIGJlY2F1c2UgdGhlIHVuZGVy
bHlpbmcgYWxnb3JpdGhtCisgIGZvciByZS1vcmRlcmluZyB0ZXN0cyBwZXItc2NvcGUvcGVyLWZp
eHR1cmUgaXMgbm90IHJlY3Vyc2l2ZQorICBhbnltb3JlIChpdCB3YXMgdGFpbC1jYWxsIHJlY3Vy
c2l2ZSBiZWZvcmUgd2hpY2ggY291bGQgbGVhZAorICB0byBwcm9ibGVtcyBmb3IgbW9yZSB0aGFu
ID45NjYgbm9uLWZ1bmN0aW9uIHNjb3BlZCBwYXJhbWV0ZXJzKS4KKworLSBmaXggaXNzdWUyOTAg
LSB0aGVyZSBpcyBwcmVsaW1pbmFyeSBzdXBwb3J0IG5vdyBmb3IgcGFyYW1ldHJpemluZworICB3
aXRoIHJlcGVhdGVkIHNhbWUgdmFsdWVzIChzb21ldGltZXMgdXNlZnVsIHRvIHRlc3QgaWYgY2Fs
bGluZworICBhIHNlY29uZCB0aW1lIHdvcmtzIGFzIHdpdGggdGhlIGZpcnN0IHRpbWUpLgorCist
IGNsb3NlIGlzc3VlMjQwIC0gZG9jdW1lbnQgcHJlY2lzZWx5IGhvdyBweXRlc3QgbW9kdWxlIGlt
cG9ydGluZworICB3b3JrcywgZGlzY3VzcyB0aGUgdHdvIGNvbW1vbiB0ZXN0IGRpcmVjdG9yeSBs
YXlvdXRzLCBhbmQgaG93IGl0CisgIGludGVyYWN0cyB3aXRoIFBFUDQyMC1uYW1lc3BhY2UgcGFj
a2FnZXMuCisKKy0gZml4IGlzc3VlMjQ2IGZpeCBmaW5hbGl6ZXIgb3JkZXIgdG8gYmUgTElGTyBv
biBpbmRlcGVuZGVudCBmaXh0dXJlcworICBkZXBlbmRpbmcgb24gYSBwYXJhbWV0cml6ZWQgaGln
aGVyLXRoYW4tZnVuY3Rpb24gc2NvcGVkIGZpeHR1cmUuCisgICh3YXMgcXVpdGUgc29tZSBlZmZv
cnQgc28gcGxlYXNlIGJlYXIgd2l0aCB0aGUgY29tcGxleGl0eSBvZiB0aGlzIHNlbnRlbmNlIDop
CisgIFRoYW5rcyBSYWxwaCBTY2htaXR0IGZvciB0aGUgcHJlY2lzZSBmYWlsdXJlIGV4YW1wbGUu
CisKKy0gZml4IGlzc3VlMjQ0IGJ5IGltcGxlbWVudGluZyBzcGVjaWFsIGluZGV4IGZvciBwYXJh
bWV0ZXJzIHRvIG9ubHkgdXNlCisgIGluZGljZXMgZm9yIHBhcmFtZW50cml6ZWQgdGVzdCBpZHMK
KworLSBmaXggaXNzdWUyODcgYnkgcnVubmluZyBhbGwgZmluYWxpemVycyBidXQgc2F2aW5nIHRo
ZSBleGNlcHRpb24KKyAgZnJvbSB0aGUgZmlyc3QgZmFpbGluZyBmaW5hbGl6ZXIgYW5kIHJlLXJh
aXNpbmcgaXQgc28gdGVhcmRvd24gd2lsbAorICBzdGlsbCBoYXZlIGZhaWxlZC4gIFdlIHJlcmFp
c2UgdGhlIGZpcnN0IGZhaWxpbmcgZXhjZXB0aW9uIGJlY2F1c2UKKyAgaXQgbWlnaHQgYmUgdGhl
IGNhdXNlIGZvciBvdGhlciBmaW5hbGl6ZXJzIHRvIGZhaWwuCisKKy0gZml4IG9yZGVyaW5nIHdo
ZW4gbW9jay5wYXRjaCBvciBvdGhlciBzdGFuZGFyZCBkZWNvcmF0b3Itd3JhcHBpbmdzCisgIGFy
ZSB1c2VkIHdpdGggdGVzdCBtZXRob2RzLiAgVGhpcyBmaXh1ZXMgaXNzdWUzNDYgYW5kIHNob3Vs
ZAorICBoZWxwIHdpdGggcmFuZG9tICJ4ZGlzdCIgY29sbGVjdGlvbiBmYWlsdXJlcy4gIFRoYW5r
cyB0bworICBSb25ueSBQZmFubnNjaG1pZHQgYW5kIERvbmFsZCBTdHVmZnQgZm9yIGhlbHBpbmcg
dG8gaXNvbGF0ZSBpdC4KKworLSBmaXggaXNzdWUzNTcgLSBzcGVjaWFsIGNhc2UgIi1rIiBleHBy
ZXNzaW9ucyB0byBhbGxvdyBmb3IKKyAgZmlsdGVyaW5nIHdpdGggc2ltcGxlIHN0cmluZ3MgdGhh
dCBhcmUgbm90IHZhbGlkIHB5dGhvbiBleHByZXNzaW9ucy4KKyAgRXhhbXBsZXM6ICItayAxLjMi
IG1hdGNoZXMgYWxsIHRlc3RzIHBhcmFtZXRyaXplZCB3aXRoIDEuMy4KKyAgIi1rIE5vbmUiIGZp
bHRlcnMgYWxsIHRlc3RzIHRoYXQgaGF2ZSAiTm9uZSIgaW4gdGhlaXIgbmFtZQorICBhbmQgY29u
dmVyc2VseSAiLWsgJ25vdCBOb25lJyIuCisgIFByZXZpb3VzbHkgdGhlc2UgZXhhbXBsZXMgd291
bGQgcmFpc2Ugc3ludGF4IGVycm9ycy4KKworLSBmaXggaXNzdWUzODQgYnkgcmVtb3ZpbmcgdGhl
IHRyaWFsIHN1cHBvcnQgY29kZQorICBzaW5jZSB0aGUgdW5pdHRlc3QgY29tcGF0IGVuaGFuY2Vt
ZW50cyBhbGxvdworICB0cmlhbCB0byBoYW5kbGUgaXQgb24gaXRzIG93bgorCistIGRvbid0IGhp
ZGUgYW4gSW1wb3J0RXJyb3Igd2hlbiBpbXBvcnRpbmcgYSBwbHVnaW4gcHJvZHVjZXMgb25lLgor
ICBmaXhlcyBpc3N1ZTM3NS4KKworLSBmaXggaXNzdWUyNzUgLSBhbGxvdyB1c2VmaXh0dXJlcyBh
bmQgYXV0b3VzZSBmaXh0dXJlcworICBmb3IgcnVubmluZyBkb2N0ZXN0IHRleHQgZmlsZXMuCisK
Ky0gZml4IGlzc3VlMzgwIGJ5IG1ha2luZyAtLXJlc3VsdGxvZyBvbmx5IHJlbHkgb24gbG9uZ3Jl
cHIgaW5zdGVhZAorICBvZiB0aGUgInJlcHJjcmFzaCIgYXR0cmlidXRlIHdoaWNoIG9ubHkgZXhp
c3RzIHNvbWV0aW1lcy4KKworLSBhZGRyZXNzIGlzc3VlMTIyOiBhbGxvdyBAcHl0ZXN0LmZpeHR1
cmUocGFyYW1zPWl0ZXJhdG9yKSBieSBleHBsb2RpbmcKKyAgaW50byBhIGxpc3QgZWFybHkgb24u
CisKKy0gZml4IHBleHBlY3QtMy4wIGNvbXBhdGliaWxpdHkgZm9yIHB5dGVzdCdzIG93biB0ZXN0
cy4KKyAgKGZpeGVzIGlzc3VlMzg2KQorCistIGFsbG93IG5lc3RlZCBwYXJhbWV0cml6ZS12YWx1
ZSBtYXJrZXJzLCB0aGFua3MgSmFtZXMgTGFuIGZvciB0aGUgUFIuCisKKy0gZml4IHVuaWNvZGUg
aGFuZGxpbmcgd2l0aCBuZXcgbW9ua2V5cGF0Y2guc2V0YXR0cihpbXBvcnRfcGF0aCwgdmFsdWUp
CisgIEFQSS4gIFRoYW5rcyBSb2IgRGVubmlzLiAgRml4ZXMgaXNzdWUzNzEuCisKKy0gZml4IHVu
aWNvZGUgaGFuZGxpbmcgd2l0aCBqdW5pdHhtbCwgZml4ZXMgaXNzdWUzNjguCisKKy0gSW4gYXNz
ZXJ0aW9uIHJld3JpdGluZyBtb2RlIG9uIFB5dGhvbiAyLCBmaXggdGhlIGRldGVjdGlvbiBvZiBj
b2RpbmcKKyAgY29va2llcy4gU2VlIGlzc3VlICMzMzAuCisKKy0gbWFrZSAiLS1ydW54ZmFpbCIg
dHVybiBpbXBlcmF0aXZlIHB5dGVzdC54ZmFpbCBjYWxscyBpbnRvIG5vIG9wcworICAoaXQgYWxy
ZWFkeSBkaWQgbmV1dHJhbGl6ZSBweXRlc3QubWFyay54ZmFpbCBtYXJrZXJzKQorCistIHJlZmlu
ZSBweXRlc3QgLyBwa2dfcmVzb3VyY2VzIGludGVyYWN0aW9uczogVGhlIEFzc2VydGlvblJld3Jp
dGluZ0hvb2sKKyAgUEVQMzAyIGNvbXBsaWFudCBsb2FkZXIgbm93IHJlZ2lzdGVycyBpdHNlbGYg
d2l0aCBzZXR1cHRvb2xzL3BrZ19yZXNvdXJjZXMKKyAgcHJvcGVybHkgc28gdGhhdCB0aGUgcGtn
X3Jlc291cmNlcy5yZXNvdXJjZV9zdHJlYW0gbWV0aG9kIHdvcmtzIHByb3Blcmx5LgorICBGaXhl
cyBpc3N1ZTM2Ni4gIFRoYW5rcyBmb3IgdGhlIGludmVzdGlnYXRpb25zIGFuZCBmdWxsIFBSIHRv
IEphc29uIFIuIENvb21icy4KKworLSBweXRlc3Rjb25maWcgZml4dHVyZSBpcyBub3cgc2Vzc2lv
bi1zY29wZWQgYXMgaXQgaXMgdGhlIHNhbWUgb2JqZWN0IGR1cmluZyB0aGUKKyAgd2hvbGUgdGVz
dCBydW4uICBGaXhlcyBpc3N1ZTM3MC4KKworLSBhdm9pZCBvbmUgc3VycHJpc2luZyBjYXNlIG9m
IG1hcmtlciBtYWxmdW5jdGlvbi9jb25mdXNpb246OgorCisgICAgICBAcHl0ZXN0Lm1hcmsuc29t
ZShsYW1iZGEgYXJnOiAuLi4pCisgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgorCisgIHdvdWxk
IG5vdCB3b3JrIGNvcnJlY3RseSBiZWNhdXNlIHB5dGVzdCBhc3N1bWVzIEBweXRlc3QubWFyay5z
b21lCisgIGdldHMgYSBmdW5jdGlvbiB0byBiZSBkZWNvcmF0ZWQgYWxyZWFkeS4gIFdlIG5vdyBh
dCBsZWFzdCBkZXRlY3QgaWYgdGhpcworICBhcmcgaXMgYSBsYW1iZGEgYW5kIHRodXMgdGhlIGV4
YW1wbGUgd2lsbCB3b3JrLiAgVGhhbmtzIEFsZXggR2F5bm9yCisgIGZvciBicmluZ2luZyBpdCB1
cC4KKworLSB4ZmFpbCBhIHRlc3Qgb24gcHlweSB0aGF0IGNoZWNrcyB3cm9uZyBlbmNvZGluZy9h
c2NpaSAocHlweSBkb2VzCisgIG5vdCBlcnJvciBvdXQpLiBmaXhlcyBpc3N1ZTM4NS4KKworLSBp
bnRlcm5hbGx5IG1ha2UgdmFybmFtZXMoKSBkZWFsIHdpdGggY2xhc3NlcydzIF9faW5pdF9fLAor
ICBhbHRob3VnaCBpdCdzIG5vdCBuZWVkZWQgYnkgcHl0ZXN0IGl0c2VsZiBhdG0uICBBbHNvCisg
IGZpeCBjYWNoaW5nLiAgRml4ZXMgaXNzdWUzNzYuCisKKy0gZml4IGlzc3VlMjIxIC0gaGFuZGxl
IGltcG9ydGluZyBvZiBuYW1lc3BhY2UtcGFja2FnZSB3aXRoIG5vCisgIF9faW5pdF9fLnB5IHBy
b3Blcmx5LgorCistIHJlZmFjdG9yIGludGVybmFsIEZpeHR1cmVSZXF1ZXN0IGhhbmRsaW5nIHRv
IGF2b2lkIG1vbmtleXBhdGNoaW5nLgorICBPbmUgb2YgdGhlIHBvc2l0aXZlIHVzZXItZmFjaW5n
IGVmZmVjdHMgaXMgdGhhdCB0aGUgInJlcXVlc3QiIG9iamVjdAorICBjYW4gbm93IGJlIHVzZWQg
aW4gY2xvc3VyZXMuCisKKy0gZml4ZWQgdmVyc2lvbiBjb21wYXJpc29uIGluIHB5dGVzdC5pbXBv
cnRza2lwKG1vZG5hbWUsIG1pbnZlcnN0cmluZykKKworLSBmaXggaXNzdWUzNzcgYnkgY2xhcmlm
eWluZyBpbiB0aGUgbm9zZS1jb21wYXQgZG9jcyB0aGF0IHB5dGVzdAorICBkb2VzIG5vdCBkdXBs
aWNhdGUgdGhlIHVuaXR0ZXN0LUFQSSBpbnRvIHRoZSAicGxhaW4iIG5hbWVzcGFjZS4KKworLSBm
aXggdmVyYm9zZSByZXBvcnRpbmcgZm9yIEBtb2NrJ2QgdGVzdCBmdW5jdGlvbnMKKworMi40LjIg
KDIwMTMtMTAtMDQpCis9PT09PT09PT09PT09PT09PT0KKworLSBvbiBXaW5kb3dzIHJlcXVpcmUg
Y29sb3JhbWEgYW5kIGEgbmV3ZXIgcHkgbGliIHNvIHRoYXQgcHkuaW8uVGVybWluYWxXcml0ZXIo
KQorICBub3cgdXNlcyBjb2xvcmFtYSBpbnN0ZWFkIG9mIGl0cyBvd24gY3R5cGVzIGhhY2tzLiAo
Zml4ZXMgaXNzdWUzNjUpCisgIHRoYW5rcyBQYXVsIE1vb3JlIGZvciBicmluZ2luZyBpdCB1cC4K
KworLSBmaXggIi1rIiBtYXRjaGluZyBvZiB0ZXN0cyB3aGVyZSAicmVwciIgYW5kICJhdHRyIiBh
bmQgb3RoZXIgbmFtZXMgd291bGQKKyAgY2F1c2Ugd3JvbmcgbWF0Y2hlcyBiZWNhdXNlIG9mIGFu
IGludGVybmFsIGltcGxlbWVudGF0aW9uIHF1aXJrCisgIChkb24ndCBhc2spIHdoaWNoIGlzIG5v
dyBwcm9wZXJseSBpbXBsZW1lbnRlZC4gZml4ZXMgaXNzdWUzNDUuCisKKy0gYXZvaWQgdG1wZGly
IGZpeHR1cmUgdG8gY3JlYXRlIHRvbyBsb25nIGZpbGVuYW1lcyBlc3BlY2lhbGx5CisgIHdoZW4g
cGFyYW1ldHJpemF0aW9uIGlzIHVzZWQgKGlzc3VlMzU0KQorCistIGZpeCBweXRlc3QtcGVwOCBh
bmQgcHl0ZXN0LWZsYWtlcyAvIHB5dGVzdCBpbnRlcmFjdGlvbnMKKyAgKGNvbGxlY3Rpb24gbmFt
ZXMgaW4gbWFyayBwbHVnaW4gd2FzIGFzc3VtaW5nIGFuIGl0ZW0gYWx3YXlzCisgIGhhcyBhIGZ1
bmN0aW9uIHdoaWNoIGlzIG5vdCB0cnVlIGZvciB0aG9zZSBwbHVnaW5zIGV0Yy4pCisgIFRoYW5r
cyBBbmRpIFplaWRsZXIuCisKKy0gaW50cm9kdWNlIG5vZGUuZ2V0X21hcmtlci9ub2RlLmFkZF9t
YXJrZXIgQVBJIGZvciBwbHVnaW5zCisgIGxpa2UgcHl0ZXN0LXBlcDggYW5kIHB5dGVzdC1mbGFr
ZXMgdG8gYXZvaWQgdGhlIG1lc3N5CisgIGRldGFpbHMgb2YgdGhlIG5vZGUua2V5d29yZHMgIHBz
ZXVkby1kaWN0cy4gIEFkYXB0ZWQKKyAgZG9jcy4KKworLSByZW1vdmUgYXR0ZW1wdCB0byAiZHVw
IiBzdGRvdXQgYXQgc3RhcnR1cCBhcyBpdCdzIGlja3kuCisgIHRoZSBub3JtYWwgY2FwdHVyaW5n
IHNob3VsZCBjYXRjaCBlbm91Z2ggcG9zc2liaWxpdGllcworICBvZiB0ZXN0cyBtZXNzaW5nIHVw
IHN0YW5kYXJkIEZEcy4KKworLSBhZGQgcGx1Z2lubWFuYWdlci5kb19jb25maWd1cmUoY29uZmln
KSBhcyBhIGxpbmsgdG8KKyAgY29uZmlnLmRvX2NvbmZpZ3VyZSgpIGZvciBwbHVnaW4tY29tcGF0
aWJpbGl0eQorCisyLjQuMSAoMjAxMy0xMC0wMikKKz09PT09PT09PT09PT09PT09PQorCistIFdo
ZW4gdXNpbmcgcGFyc2VyLmFkZG9wdGlvbigpIHVuaWNvZGUgYXJndW1lbnRzIHRvIHRoZQorICAi
dHlwZSIga2V5d29yZCBzaG91bGQgYWxzbyBiZSBjb252ZXJ0ZWQgdG8gdGhlIHJlc3BlY3RpdmUg
dHlwZXMuCisgIHRoYW5rcyBGbG9yaXMgQnJ1eW5vb2doZSwgQGRub3pheS4gKGZpeGVzIGlzc3Vl
MzYwIGFuZCBpc3N1ZTM2MikKKworLSBmaXggZG90dGVkIGZpbGVuYW1lIGNvbXBsZXRpb24gd2hl
biB1c2luZyBhcmdjb21wbGV0ZQorICB0aGFua3MgQW50aG9uIHZhbiBkZXIgTmV1dGguIChmaXhl
cyBpc3N1ZTM2MSkKKworLSBmaXggcmVncmVzc2lvbiB3aGVuIGEgMS10dXBsZSAoImFyZyIsKSBp
cyB1c2VkIGZvciBzcGVjaWZ5aW5nCisgIHBhcmFtZXRyaXphdGlvbiAodGhlIHZhbHVlcyBvZiB0
aGUgcGFyYW1ldHJpemF0aW9uIHdlcmUgcGFzc2VkCisgIG5lc3RlZCBpbiBhIHR1cGxlKS4gIFRo
YW5rcyBEb25hbGQgU3R1ZmZ0LgorCistIG1lcmdlIGRvYyB0eXBvIGZpeGVzLCB0aGFua3MgQW5k
eSBEaXJuYmVyZ2VyCisKKzIuNAorPT09CisKK2tub3duIGluY29tcGF0aWJpbGl0aWVzOgorCist
IGlmIGNhbGxpbmcgLS1nZW5zY3JpcHQgZnJvbSBweXRob24yLjcgb3IgYWJvdmUsIHlvdSBvbmx5
IGdldCBhCisgIHN0YW5kYWxvbmUgc2NyaXB0IHdoaWNoIHdvcmtzIG9uIHB5dGhvbjIuNyBvciBh
Ym92ZS4gIFVzZSBQeXRob24yLjYKKyAgdG8gYWxzbyBnZXQgYSBweXRob24yLjUgY29tcGF0aWJs
ZSB2ZXJzaW9uLgorCistIGFsbCB4dW5pdC1zdHlsZSB0ZWFyZG93biBtZXRob2RzIChub3NlLXN0
eWxlLCBweXRlc3Qtc3R5bGUsCisgIHVuaXR0ZXN0LXN0eWxlKSB3aWxsIG5vdCBiZSBjYWxsZWQg
aWYgdGhlIGNvcnJlc3BvbmRpbmcgc2V0dXAgbWV0aG9kIGZhaWxlZCwKKyAgc2VlIGlzc3VlMzIy
IGJlbG93LgorCistIHRoZSBweXRlc3RfcGx1Z2luX3VucmVnaXN0ZXIgaG9vayB3YXNuJ3QgZXZl
ciBwcm9wZXJseSBjYWxsZWQKKyAgYW5kIHRoZXJlIGlzIG5vIGtub3duIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBob29rIC0gc28gaXQgZ290IHJlbW92ZWQuCisKKy0gcHl0ZXN0LmZpeHR1cmUtZGVj
b3JhdGVkIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZ2VuZXJhdG9ycyAoaS5lLiB1c2UKKyAgeWllbGQp
IGFueW1vcmUuICBUaGlzIGNoYW5nZSBtaWdodCBiZSByZXZlcnNlZCBpbiAyLjQuMSBpZiBpdCBj
YXVzZXMKKyAgdW5mb3Jlc2VlbiByZWFsLWxpZmUgaXNzdWVzLiAgSG93ZXZlciwgeW91IGNhbiBh
bHdheXMgd3JpdGUgYW5kIHJldHVybgorICBhbiBpbm5lciBmdW5jdGlvbi9nZW5lcmF0b3IgYW5k
IGNoYW5nZSB0aGUgZml4dHVyZSBjb25zdW1lciB0byBpdGVyYXRlCisgIG92ZXIgdGhlIHJldHVy
bmVkIGdlbmVyYXRvci4gIFRoaXMgY2hhbmdlIHdhcyBkb25lIGluIGxpZXUgb2YgdGhlIG5ldwor
ICBgYHB5dGVzdC55aWVsZF9maXh0dXJlYGAgZGVjb3JhdG9yLCBzZWUgYmVsb3cuCisKK25ldyBm
ZWF0dXJlczoKKworLSBleHBlcmltZW50YWxseSBpbnRyb2R1Y2UgYSBuZXcgYGBweXRlc3QueWll
bGRfZml4dHVyZWBgIGRlY29yYXRvcgorICB3aGljaCBhY2NlcHRzIGV4YWN0bHkgdGhlIHNhbWUg
cGFyYW1ldGVycyBhcyBweXRlc3QuZml4dHVyZSBidXQKKyAgbWFuZGF0ZXMgYSBgYHlpZWxkYGAg
c3RhdGVtZW50IGluc3RlYWQgb2YgYSBgYHJldHVybiBzdGF0ZW1lbnRgYCBmcm9tCisgIGZpeHR1
cmUgZnVuY3Rpb25zLiAgVGhpcyBhbGxvd3MgZGlyZWN0IGludGVncmF0aW9uIHdpdGggIndpdGgt
c3R5bGUiCisgIGNvbnRleHQgbWFuYWdlcnMgaW4gZml4dHVyZSBmdW5jdGlvbnMgYW5kIGdlbmVy
YWxseSBhdm9pZHMgcmVnaXN0ZXJpbmcKKyAgb2YgZmluYWxpemF0aW9uIGNhbGxiYWNrcyBpbiBm
YXZvdXIgb2YgdHJlYXRpbmcgdGhlICJhZnRlci15aWVsZCIgYXMKKyAgdGVhcmRvd24gY29kZS4g
IFRoYW5rcyBBbmRyZWFzIFBlbG1lLCBWbGFkaW1pciBLZWxlc2hldiwgRmxvcmlzCisgIEJydXlu
b29naGUsIFJvbm55IFBmYW5uc2NobWlkdCBhbmQgbWFueSBvdGhlcnMgZm9yIGRpc2N1c3Npb25z
LgorCistIGFsbG93IGJvb2xlYW4gZXhwcmVzc2lvbiBkaXJlY3RseSB3aXRoIHNraXBpZi94ZmFp
bAorICBpZiBhICJyZWFzb24iIGlzIGFsc28gc3BlY2lmaWVkLiAgUmV3b3JrIHNraXBwaW5nIGRv
Y3VtZW50YXRpb24KKyAgdG8gcmVjb21tZW5kICJjb25kaXRpb24gYXMgYm9vbGVhbnMiIGJlY2F1
c2UgaXQgcHJldmVudHMgc3VycHJpc2VzCisgIHdoZW4gaW1wb3J0aW5nIG1hcmtlcnMgYmV0d2Vl
biBtb2R1bGVzLiAgU3BlY2lmeWluZyBjb25kaXRpb25zCisgIGFzIHN0cmluZ3Mgd2lsbCByZW1h
aW4gZnVsbHkgc3VwcG9ydGVkLgorCistIHJlcG9ydGluZzogY29sb3IgdGhlIGxhc3QgbGluZSBy
ZWQgb3IgZ3JlZW4gZGVwZW5kaW5nIGlmCisgIGZhaWx1cmVzL2Vycm9ycyBvY2N1cnJlZCBvciBl
dmVyeXRoaW5nIHBhc3NlZC4gIHRoYW5rcyBDaHJpc3RpYW4KKyAgVGhldW5lcnQuCisKKy0gbWFr
ZSAiaW1wb3J0IHBkYiA7IHBkYi5zZXRfdHJhY2UoKSIgd29yayBuYXRpdmVseSB3cnQgY2FwdHVy
aW5nIChubworICAiLXMiIG5lZWRlZCBhbnltb3JlKSwgbWFraW5nIGBgcHl0ZXN0LnNldF90cmFj
ZSgpYGAgYSBtZXJlIHNob3J0Y3V0LgorCistIGZpeCBpc3N1ZTE4MTogLS1wZGIgbm93IGFsc28g
d29ya3Mgb24gY29sbGVjdCBlcnJvcnMgKGFuZAorICBvbiBpbnRlcm5hbCBlcnJvcnMpIC4gIFRo
aXMgd2FzIGltcGxlbWVudGVkIGJ5IGEgc2xpZ2h0IGludGVybmFsCisgIHJlZmFjdG9yaW5nIGFu
ZCB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGhvb2sKKyAgYGBweXRlc3RfZXhjZXB0aW9uX2lu
dGVyYWN0YGAgaG9vayAoc2VlIG5leHQgaXRlbSkuCisKKy0gZml4IGlzc3VlMzQxOiBpbnRyb2R1
Y2UgbmV3IGV4cGVyaW1lbnRhbCBob29rIGZvciBJREVzL3Rlcm1pbmFscyB0bworICBpbnRlcmNl
cHQgZGVidWdnaW5nOiBgYHB5dGVzdF9leGNlcHRpb25faW50ZXJhY3Qobm9kZSwgY2FsbCwgcmVw
b3J0KWBgLgorCistIG5ldyBtb25rZXlwYXRjaC5zZXRhdHRyKCkgdmFyaWFudCB0byBwcm92aWRl
IGEgc2hvcnRlcgorICBpbnZvY2F0aW9uIGZvciBwYXRjaGluZyBvdXQgY2xhc3Nlcy9mdW5jdGlv
bnMgZnJvbSBtb2R1bGVzOgorCisgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoInJlcXVlc3RzLmdl
dCIsIG15ZnVuYykKKworICB3aWxsIHJlcGxhY2UgdGhlICJnZXQiIGZ1bmN0aW9uIG9mIHRoZSAi
cmVxdWVzdHMiIG1vZHVsZSB3aXRoIGBgbXlmdW5jYGAuCisKKy0gZml4IGlzc3VlMzIyOiB0ZWFy
RG93bkNsYXNzIGlzIG5vdCBydW4gaWYgc2V0VXBDbGFzcyBmYWlsZWQuIFRoYW5rcworICBNYXRo
aWV1IEFnb3BpYW4gZm9yIHRoZSBpbml0aWFsIGZpeC4gIEFsc28gbWFrZSBhbGwgb2YgcHl0ZXN0
L25vc2UKKyAgZmluYWxpemVyIG1pbWljIHRoZSBzYW1lIGdlbmVyaWMgYmVoYXZpb3VyOiBpZiBh
IHNldHVwWCBleGlzdHMgYW5kCisgIGZhaWxzLCBkb24ndCBydW4gdGVhcmRvd25YLiAgVGhpcyBp
bnRlcm5hbGx5IGludHJvZHVjZXMgYSBuZXcgbWV0aG9kCisgICJub2RlLmFkZGZpbmFsaXplcigp
IiBoZWxwZXIgd2hpY2ggY2FuIG9ubHkgYmUgY2FsbGVkIGR1cmluZyB0aGUgc2V0dXAKKyAgcGhh
c2Ugb2YgYSBub2RlLgorCistIHNpbXBsaWZ5IHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCkgc2ln
bmF0dXJlOiBhbGxvdyB0byBwYXNzIGEKKyAgQ1NWLXNlcGFyYXRlZCBzdHJpbmcgdG8gc3BlY2lm
eSBhcmduYW1lcy4gIEZvciBleGFtcGxlOgorICBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
bnB1dCxleHBlY3RlZCIsICBbKDEsMiksICgyLDMpXSlgYAorICB3b3JrcyBhcyB3ZWxsIGFzIHRo
ZSBwcmV2aW91czoKKyAgYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoImlucHV0IiwgImV4cGVj
dGVkIiksIC4uLilgYC4KKworLSBhZGQgc3VwcG9ydCBmb3Igc2V0VXBNb2R1bGUvdGVhckRvd25N
b2R1bGUgZGV0ZWN0aW9uLCB0aGFua3MgQnJpYW4gT2trZW4uCisKKy0gaW50ZWdyYXRlIHRhYi1j
b21wbGV0aW9uIG9uIG9wdGlvbnMgdGhyb3VnaCB1c2Ugb2YgImFyZ2NvbXBsZXRlIi4KKyAgVGhh
bmtzIEFudGhvbiB2YW4gZGVyIE5ldXQgZm9yIHRoZSBQUi4KKworLSBjaGFuZ2Ugb3B0aW9uIG5h
bWVzIHRvIGJlIGh5cGhlbi1zZXBhcmF0ZWQgbG9uZyBvcHRpb25zIGJ1dCBrZWVwIHRoZQorICBv
bGQgc3BlbGxpbmcgYmFja3dhcmQgY29tcGF0aWJsZS4gIHB5LnRlc3QgLWggd2lsbCBvbmx5IHNo
b3cgdGhlCisgIGh5cGhlbmF0ZWQgdmVyc2lvbiwgZm9yIGV4YW1wbGUgIi0tY29sbGVjdC1vbmx5
IiBidXQgIi0tY29sbGVjdG9ubHkiCisgIHdpbGwgcmVtYWluIHZhbGlkIGFzIHdlbGwgKGZvciBi
YWNrd2FyZC1jb21wYXQgcmVhc29ucykuICBNYW55IHRoYW5rcyB0bworICBBbnRob24gdmFuIGRl
ciBOZXV0IGZvciB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRvIEh5bmVrIFNjaGxhd2FjayBmb3IK
KyAgcHVzaGluZyB1cy4KKworLSBmaXggaXNzdWUgMzA4IC0gYWxsb3cgdG8gbWFyay94ZmFpbC9z
a2lwIGluZGl2aWR1YWwgcGFyYW1ldGVyIHNldHMKKyAgd2hlbiBwYXJhbWV0cml6aW5nLiAgVGhh
bmtzIEJyaWFubmEgTGF1Z2hlci4KKworLSBjYWxsIG5ldyBleHBlcmltZW50YWwgcHl0ZXN0X2xv
YWRfaW5pdGlhbF9jb25mdGVzdHMgaG9vayB0byBhbGxvdworICAzcmQgcGFydHkgcGx1Z2lucyB0
byBkbyBzb21ldGhpbmcgYmVmb3JlIGEgY29uZnRlc3QgaXMgbG9hZGVkLgorCitCdWcgZml4ZXM6
CisKKy0gZml4IGlzc3VlMzU4IC0gY2FwdHVyaW5nIG9wdGlvbnMgYXJlIG5vdyBwYXJzZWQgbW9y
ZSBwcm9wZXJseQorICBieSB1c2luZyBhIG5ldyBwYXJzZXIucGFyc2Vfa25vd25fYXJncyBtZXRo
b2QuCisKKy0gcHl0ZXN0IG5vdyB1c2VzIGFyZ3BhcnNlIGluc3RlYWQgb2Ygb3B0cGFyc2UgKHRo
YW5rcyBBbnRob24pIHdoaWNoCisgIG1lYW5zIHRoYXQgImFyZ3BhcnNlIiBpcyBhZGRlZCBhcyBh
IGRlcGVuZGVuY3kgaWYgaW5zdGFsbGluZyBpbnRvIHB5dGhvbjIuNgorICBlbnZpcm9ubWVudHMg
b3IgYmVsb3cuCisKKy0gZml4IGlzc3VlMzMzOiBmaXggYSBjYXNlIG9mIGJhZCB1bml0dGVzdC9w
eXRlc3QgaG9vayBpbnRlcmFjdGlvbi4KKworLSBQUjI3OiBjb3JyZWN0bHkgaGFuZGxlIG5vc2Uu
U2tpcFRlc3QgZHVyaW5nIGNvbGxlY3Rpb24uICBUaGFua3MKKyAgQW50b25pbyBDdW5pLCBSb25u
eSBQZmFubnNjaG1pZHQuCisKKy0gZml4IGlzc3VlMzU1OiBqdW5pdHhtbCBwdXRzIG5hbWU9InB5
dGVzdCIgYXR0cmlidXRlIHRvIHRlc3RzdWl0ZSB0YWcuCisKKy0gZml4IGlzc3VlMzM2OiBhdXRv
dXNlIGZpeHR1cmUgaW4gcGx1Z2lucyBzaG91bGQgd29yayBhZ2Fpbi4KKworLSBmaXggaXNzdWUy
Nzk6IGltcHJvdmUgb2JqZWN0IGNvbXBhcmlzb25zIG9uIGFzc2VydGlvbiBmYWlsdXJlCisgIGZv
ciBzdGFuZGFyZCBkYXRhdHlwZXMgYW5kIHJlY29nbmlzZSBjb2xsZWN0aW9ucy5hYmMuICBUaGFu
a3MgdG8KKyAgQnJpYW5uYSBMYXVnaGVyIGFuZCBNYXRoaWV1IEFnb3BpYW4uCisKKy0gZml4IGlz
c3VlMzE3OiBhc3NlcnRpb24gcmV3cml0ZXIgc3VwcG9ydCBmb3IgdGhlIGlzX3BhY2thZ2UgbWV0
aG9kCisKKy0gZml4IGlzc3VlMzM1OiBkb2N1bWVudCBweS5jb2RlLkV4Y2VwdGlvbkluZm8oKSBv
YmplY3QgcmV0dXJuZWQKKyAgZnJvbSBweXRlc3QucmFpc2VzKCksIHRoYW5rcyBNYXRoaWV1IEFn
b3BpYW4uCisKKy0gcmVtb3ZlIGltcGxpY2l0IGRpc3RyaWJ1dGVfc2V0dXAgc3VwcG9ydCBmcm9t
IHNldHVwLnB5LgorCistIGZpeCBpc3N1ZTMwNTogaWdub3JlIGFueSBwcm9ibGVtcyB3aGVuIHdy
aXRpbmcgcHljIGZpbGVzLgorCistIFNPLTE3NjY0NzAyOiBjYWxsIGZpeHR1cmUgZmluYWxpemVy
cyBldmVuIGlmIHRoZSBmaXh0dXJlIGZ1bmN0aW9uCisgIHBhcnRpYWxseSBmYWlsZWQgKGZpbmFs
aXplcnMgd291bGQgbm90IGFsd2F5cyBiZSBjYWxsZWQgYmVmb3JlKQorCistIGZpeCBpc3N1ZTMy
MCAtIGZpeCBjbGFzcyBzY29wZSBmb3IgZml4dHVyZXMgd2hlbiBtaXhlZCB3aXRoCisgIG1vZHVs
ZS1sZXZlbCBmdW5jdGlvbnMuICBUaGFua3MgQW5hdGxveSBCdWJlbmtvZmYuCisKKy0geW91IGNh
biBzcGVjaWZ5ICItcSIgb3IgIi1xcSIgdG8gZ2V0IGRpZmZlcmVudCBsZXZlbHMgb2YgInF1aWV0
ZXIiCisgIHJlcG9ydGluZyAodGhhbmtzIEthdGFyenluYSBKYWNoaW0pCisKKy0gZml4IGlzc3Vl
MzAwIC0gRml4IG9yZGVyIG9mIGNvbmZ0ZXN0IGxvYWRpbmcgd2hlbiBzdGFydGluZyBweS50ZXN0
CisgIGluIGEgc3ViZGlyZWN0b3J5LgorCistIGZpeCBpc3N1ZTMyMyAtIHNvcnRpbmcgb2YgbWFu
eSBtb2R1bGUtc2NvcGVkIGFyZyBwYXJhbWV0cml6YXRpb25zCisKKy0gbWFrZSBzZXNzaW9uZmlu
aXNoIGhvb2tzIGV4ZWN1dGUgd2l0aCB0aGUgc2FtZSBjd2QtY29udGV4dCBhcyBhdAorICBzZXNz
aW9uIHN0YXJ0IChoZWxwcyBmaXggcGx1Z2luIGJlaGF2aW91ciB3aGljaCB3cml0ZSBvdXRwdXQg
ZmlsZXMKKyAgd2l0aCByZWxhdGl2ZSBwYXRoIHN1Y2ggYXMgcHl0ZXN0LWNvdikKKworLSBmaXgg
aXNzdWUzMTYgLSBwcm9wZXJseSByZWZlcmVuY2UgY29sbGVjdGlvbiBob29rcyBpbiBkb2NzCisK
Ky0gZml4IGlzc3VlIDMwNiAtIGNsZWFudXAgb2YgLWsvLW0gb3B0aW9ucyB0byBvbmx5IG1hdGNo
IG1hcmtlcnMvdGVzdAorICBuYW1lcy9rZXl3b3JkcyByZXNwZWN0aXZlbHkuICBUaGFua3MgV291
dGVyIHZhbiBBY2tvb3kuCisKKy0gaW1wcm92ZWQgZG9jdGVzdCBjb3VudGluZyBmb3IgZG9jdGVz
dHMgaW4gcHl0aG9uIG1vZHVsZXMgLS0KKyAgZmlsZXMgd2l0aG91dCBhbnkgZG9jdGVzdCBpdGVt
cyB3aWxsIG5vdCBzaG93IHVwIGFueW1vcmUKKyAgYW5kIGRvY3Rlc3QgZXhhbXBsZXMgYXJlIGNv
dW50ZWQgYXMgc2VwYXJhdGUgdGVzdCBpdGVtcy4KKyAgdGhhbmtzIERhbmlsbyBCZWxsaW5pLgor
CistIGZpeCBpc3N1ZTI0NSBieSBkZXBlbmRpbmcgb24gdGhlIHJlbGVhc2VkIHB5LTEuNC4xNAor
ICB3aGljaCBmaXhlcyBweS5pby5kdXBmaWxlIHRvIHdvcmsgd2l0aCBmaWxlcyB3aXRoIG5vCisg
IG1vZGUuIFRoYW5rcyBKYXNvbiBSLiBDb29tYnMuCisKKy0gZml4IGp1bml0eG1sIGdlbmVyYXRp
b24gd2hlbiB0ZXN0IG91dHB1dCBjb250YWlucyBjb250cm9sIGNoYXJhY3RlcnMsCisgIGFkZHJl
c3NpbmcgaXNzdWUyNjcsIHRoYW5rcyBKYWFwIEJyb2VraHVpemVuCisKKy0gZml4IGlzc3VlMzM4
OiBob25vciAtLXRiIHN0eWxlIGZvciBzZXR1cC90ZWFyZG93biBlcnJvcnMgYXMgd2VsbC4gIFRo
YW5rcyBNYWhvLgorCistIGZpeCBpc3N1ZTMwNyAtIHVzZSB5YW1sLnNhZmVfbG9hZCBpbiBleGFt
cGxlLCB0aGFua3MgTWFyayBFaWNoaW4uCisKKy0gYmV0dGVyIHBhcmFtZXRyaXplIGVycm9yIG1l
c3NhZ2VzLCB0aGFua3MgQnJpYW5uYSBMYXVnaGVyCisKKy0gcHl0ZXN0X3Rlcm1pbmFsX3N1bW1h
cnkodGVybWluYWxyZXBvcnRlcikgaG9va3MgY2FuIG5vdyB1c2UKKyAgIi5zZWN0aW9uKHRpdGxl
KSIgYW5kICIubGluZShtc2cpIiBtZXRob2RzIHRvIHByaW50IGV4dHJhCisgIGluZm9ybWF0aW9u
IGF0IHRoZSBlbmQgb2YgYSB0ZXN0IHJ1bi4KKworMi4zLjUgKDIwMTMtMDQtMzApCis9PT09PT09
PT09PT09PT09PT0KKworLSBmaXggaXNzdWUxNjk6IHJlc3BlY3QgLS10Yj1zdHlsZSB3aXRoIHNl
dHVwL3RlYXJkb3duIGVycm9ycyBhcyB3ZWxsLgorCistIG5ldmVyIGNvbnNpZGVyIGEgZml4dHVy
ZSBmdW5jdGlvbiBmb3IgdGVzdCBmdW5jdGlvbiBjb2xsZWN0aW9uCisKKy0gYWxsb3cgcmUtcnVu
bmluZyBvZiB0ZXN0IGl0ZW1zIC8gaGVscHMgdG8gZml4IHB5dGVzdC1yZXJ1bnRlc3RzIHBsdWdp
bgorICBhbmQgYWxzbyBoZWxwIHRvIGtlZXAgbGVzcyBmaXh0dXJlL3Jlc291cmNlIHJlZmVyZW5j
ZXMgYWxpdmUKKworLSBwdXQgY2FwdHVyZWQgc3Rkb3V0L3N0ZGVyciBpbnRvIGp1bml0eG1sIG91
dHB1dCBldmVuIGZvciBwYXNzaW5nIHRlc3RzCisgICh0aGFua3MgQWRhbSBHb3VjaGVyKQorCist
IElzc3VlIDI2NSAtIGludGVncmF0ZSBub3NlIHNldHVwL3RlYXJkb3duIHdpdGggc2V0dXBzdGF0
ZQorICBzbyBpdCBkb2Vzbid0IHRyeSB0byB0ZWFyZG93biBpZiBpdCBkaWQgbm90IHNldHVwCisK
Ky0gaXNzdWUgMjcxIC0gZG9uJ3Qgd3JpdGUganVuaXR4bWwgb24gd29ya2VyIG5vZGVzCisKKy0g
SXNzdWUgMjc0IC0gZG9uJ3QgdHJ5IHRvIHNob3cgZnVsbCBkb2N0ZXN0IGV4YW1wbGUKKyAgd2hl
biBkb2N0ZXN0IGRvZXMgbm90IGtub3cgdGhlIGV4YW1wbGUgbG9jYXRpb24KKworLSBpc3N1ZSAy
ODAgLSBkaXNhYmxlIGFzc2VydGlvbiByZXdyaXRpbmcgb24gYnVnZ3kgQ1B5dGhvbiAyLjYuMAor
CistIGluamVjdCAiZ2V0Zml4dHVyZSgpIiBoZWxwZXIgdG8gcmV0cmlldmUgZml4dHVyZXMgZnJv
bSBkb2N0ZXN0cywKKyAgdGhhbmtzIEFuZHJlYXMgWmVpZGxlcgorCistIGlzc3VlIDI1OSAtIHdo
ZW4gYXNzZXJ0aW9uIHJld3JpdGluZywgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBkZWZhdWx0Cisg
IHNvdXJjZSBlbmNvZGluZyBvZiBBU0NJSSBvbiBQeXRob24gMgorCistIGlzc3VlIDI1MSAtIHJl
cG9ydCBhIHNraXAgaW5zdGVhZCBvZiBpZ25vcmluZyBjbGFzc2VzIHdpdGggaW5pdAorCistIGlz
c3VlMjUwIHVuaWNvZGUvc3RyIG1peGVzIGluIHBhcmFtZXRyaXphdGlvbiBuYW1lcyBhbmQgdmFs
dWVzIG5vdyB3b3JrcworCistIGlzc3VlMjU3LCBhc3NlcnRpb24tdHJpZ2dlcmVkIGNvbXBpbGF0
aW9uIG9mIHNvdXJjZSBlbmRpbmcgaW4gYQorICBjb21tZW50IGxpbmUgZG9lc24ndCBibG93IHVw
IGluIHB5dGhvbjIuNSAoZml4ZWQgdGhyb3VnaCBweT49MS40LjEzLmRldjYpCisKKy0gZml4IC0t
Z2Vuc2NyaXB0IG9wdGlvbiB0byBnZW5lcmF0ZSBzdGFuZGFsb25lIHNjcmlwdHMgdGhhdCBhbHNv
CisgIHdvcmsgd2l0aCBweXRob24zLjMgKGltcG9ydGVyIG9yZGVyaW5nKQorCistIGlzc3VlMTcx
IC0gaW4gYXNzZXJ0aW9uIHJld3JpdGluZywgc2hvdyB0aGUgcmVwciBvZiBzb21lCisgIGdsb2Jh
bCB2YXJpYWJsZXMKKworLSBmaXggb3B0aW9uIGhlbHAgZm9yICItayIKKworLSBtb3ZlIGxvbmcg
ZGVzY3JpcHRpb24gb2YgZGlzdHJpYnV0aW9uIGludG8gUkVBRE1FLnJzdAorCistIGltcHJvdmUg
ZG9jc3RyaW5nIGZvciBtZXRhZnVuYy5wYXJhbWV0cml6ZSgpCisKKy0gZml4IGJ1ZyB3aGVyZSB1
c2luZyBjYXBzeXMgd2l0aCBweXRlc3Quc2V0X3RyYWNlKCkgaW4gYSB0ZXN0CisgIGZ1bmN0aW9u
IHdvdWxkIGJyZWFrIHdoZW4gbG9va2luZyBhdCBjYXBzeXMucmVhZG91dGVycigpCisKKy0gYWxs
b3cgdG8gc3BlY2lmeSBwcmVmaXhlcyBzdGFydGluZyB3aXRoICJfIiB3aGVuCisgIGN1c3RvbWl6
aW5nIHB5dGhvbl9mdW5jdGlvbnMgdGVzdCBkaXNjb3ZlcnkuICh0aGFua3MgR3JhaGFtIEhvcmxl
cikKKworLSBpbXByb3ZlIFBZVEVTVF9ERUJVRyB0cmFjaW5nIG91dHB1dCBieSBwdXR0aW5nCisg
IGV4dHJhIGRhdGEgb24gYSBuZXcgbGluZXMgd2l0aCBhZGRpdGlvbmFsIGluZGVudAorCistIGVu
c3VyZSBPdXRjb21lRXhjZXB0aW9ucyBsaWtlIHNraXAvZmFpbCBoYXZlIGluaXRpYWxpemVkIGV4
Y2VwdGlvbiBhdHRyaWJ1dGVzCisKKy0gaXNzdWUgMjYwIC0gZG9uJ3QgdXNlIG5vc2Ugc3BlY2lh
bCBzZXR1cCBvbiBwbGFpbiB1bml0dGVzdCBjYXNlcworCistIGZpeCBpc3N1ZTEzNCAtIHByaW50
IHRoZSBjb2xsZWN0IGVycm9ycyB0aGF0IHByZXZlbnQgcnVubmluZyBzcGVjaWZpZWQgdGVzdCBp
dGVtcworCistIGZpeCBpc3N1ZTI2NiAtIGFjY2VwdCB1bmljb2RlIGluIE1hcmtFdmFsdWF0b3Ig
ZXhwcmVzc2lvbnMKKworMi4zLjQgKDIwMTItMTEtMjApCis9PT09PT09PT09PT09PT09PT0KKwor
LSB5aWVsZGVkIHRlc3QgZnVuY3Rpb25zIHdpbGwgbm93IGhhdmUgYXV0b3VzZS1maXh0dXJlcyBh
Y3RpdmUgYnV0CisgIGNhbm5vdCBhY2NlcHQgZml4dHVyZXMgYXMgZnVuY2FyZ3MgLSBpdCdzIGFu
eXdheSByZWNvbW1lbmRlZCB0bworICByYXRoZXIgdXNlIHRoZSBwb3N0LTIuMCBwYXJhbWV0cml6
ZSBmZWF0dXJlcyBpbnN0ZWFkIG9mIHlpZWxkLCBzZWU6CisgIGh0dHA6Ly9weXRlc3Qub3JnL2Vu
L3N0YWJsZS9leGFtcGxlL3BhcmFtZXRyaXplLmh0bWwKKy0gZml4IGF1dG91c2UtaXNzdWUgd2hl
cmUgYXV0b3VzZS1maXh0dXJlcyB3b3VsZCBub3QgYmUgZGlzY292ZXJlZAorICBpZiBkZWZpbmVk
IGluIGFuIGEvY29uZnRlc3QucHkgZmlsZSBhbmQgdGVzdHMgaW4gYS90ZXN0cy90ZXN0X3NvbWUu
cHkKKy0gZml4IGlzc3VlMjI2IC0gTElGTyBvcmRlcmluZyBmb3IgZml4dHVyZSB0ZWFyZG93bnMK
Ky0gZml4IGlzc3VlMjI0IC0gaW52b2NhdGlvbnMgd2l0aCA+MjU2IGNoYXIgYXJndW1lbnRzIG5v
dyB3b3JrCistIGZpeCBpc3N1ZTkxIC0gYWRkL2Rpc2N1c3MgcGFja2FnZS9kaXJlY3RvcnkgbGV2
ZWwgc2V0dXBzIGluIGV4YW1wbGUKKy0gYWxsb3cgdG8gZHluYW1pY2FsbHkgZGVmaW5lIG1hcmtl
cnMgdmlhCisgIGl0ZW0ua2V5d29yZHNbLi4uXT1hc3NpZ25tZW50IGludGVncmF0aW5nIHdpdGgg
Ii1tIiBvcHRpb24KKy0gbWFrZSAiLWsiIGFjY2VwdCBhbiBleHByZXNzaW9ucyB0aGUgc2FtZSBh
cyB3aXRoICItbSIgc28gdGhhdCBvbmUKKyAgY2FuIHdyaXRlOiAtayAibmFtZTEgb3IgbmFtZTIi
IGV0Yy4gIFRoaXMgaXMgYSBzbGlnaHQgaW5jb21wYXRpYmlsaXR5CisgIGlmIHlvdSB1c2VkIHNw
ZWNpYWwgc3ludGF4IGxpa2UgIlRlc3RDbGFzcy50ZXN0X21ldGhvZCIgd2hpY2ggeW91IG5vdwor
ICBuZWVkIHRvIHdyaXRlIGFzIC1rICJUZXN0Q2xhc3MgYW5kIHRlc3RfbWV0aG9kIiB0byBtYXRj
aCBhIGNlcnRhaW4KKyAgbWV0aG9kIGluIGEgY2VydGFpbiB0ZXN0IGNsYXNzLgorCisyLjMuMyAo
MjAxMi0xMS0wNikKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTIxNCAtIHBhcnNl
IG1vZHVsZXMgdGhhdCBjb250YWluIHNwZWNpYWwgb2JqZWN0cyBsaWtlIGUuIGcuCisgIGZsYXNr
J3MgcmVxdWVzdCBvYmplY3Qgd2hpY2ggYmxvd3MgdXAgb24gZ2V0YXR0ciBhY2Nlc3MgaWYgbm8g
cmVxdWVzdAorICBpcyBhY3RpdmUuIHRoYW5rcyBUaG9tYXMgV2FsZG1hbm4uCisKKy0gZml4IGlz
c3VlMjEzIC0gYWxsb3cgdG8gcGFyYW1ldHJpemUgd2l0aCB2YWx1ZXMgbGlrZSBudW1weSBhcnJh
eXMgdGhhdAorICBkbyBub3Qgc3VwcG9ydCBhbiBfX2VxX18gb3BlcmF0b3IKKworLSBmaXggaXNz
dWUyMTUgLSBzcGxpdCB0ZXN0X3B5dGhvbi5vcmcgaW50byBtdWx0aXBsZSBmaWxlcworCistIGZp
eCBpc3N1ZTE0OCAtIEB1bml0dGVzdC5za2lwIG9uIGNsYXNzZXMgaXMgbm93IHJlY29nbml6ZWQg
YW5kIGF2b2lkcworICBjYWxsaW5nIHNldFVwQ2xhc3MvdGVhckRvd25DbGFzcywgdGhhbmtzIFBh
dmVsIFJlcGluCisKKy0gZml4IGlzc3VlMjA5IC0gcmVpbnRyb2R1Y2UgcHl0aG9uMi40IHN1cHBv
cnQgYnkgZGVwZW5kaW5nIG9uIG5ld2VyCisgIHB5bGliIHdoaWNoIHJlLWludHJvZHVjZWQgc3Rh
dGVtZW50LWZpbmRpbmcgZm9yIHByZS1BU1QgaW50ZXJwcmV0ZXJzCisKKy0gbm9zZSBzdXBwb3J0
OiBvbmx5IGNhbGwgc2V0dXAgaWYgaXQncyBhIGNhbGxhYmxlLCB0aGFua3MgQW5kcmV3CisgIFRh
dW1vZWZvbGF1CisKKy0gZml4IGlzc3VlMjE5IC0gYWRkIHB5Mi40LTMuMyBjbGFzc2lmaWVycyB0
byBUUk9WRSBsaXN0CisKKy0gaW4gdHJhY2ViYWNrcyAqLCoqIGFyZyB2YWx1ZXMgYXJlIG5vdyBz
aG93biBuZXh0IHRvIG5vcm1hbCBhcmd1bWVudHMKKyAgKHRoYW5rcyBNYW51ZWwgSmFjb2IpCisK
Ky0gZml4IGlzc3VlMjE3IC0gc3VwcG9ydCBtb2NrLnBhdGNoIHdpdGggcHl0ZXN0J3MgZml4dHVy
ZXMgLSBub3RlIHRoYXQKKyAgeW91IG5lZWQgZWl0aGVyIG1vY2stMS4wLjEgb3IgdGhlIHB5dGhv
bjMuMyBidWlsdGluIHVuaXR0ZXN0Lm1vY2suCisKKy0gZml4IGlzc3VlMTI3IC0gaW1wcm92ZSBk
b2N1bWVudGF0aW9uIGZvciBweXRlc3RfYWRkb3B0aW9uKCkgYW5kCisgIGFkZCBhIGBgY29uZmln
LmdldG9wdGlvbihuYW1lKWBgIGhlbHBlciBmdW5jdGlvbiBmb3IgY29uc2lzdGVuY3kuCisKKzIu
My4yICgyMDEyLTEwLTI1KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlMjA4IGFu
ZCBmaXggaXNzdWUyOSB1c2UgbmV3IHB5IHZlcnNpb24gdG8gYXZvaWQgbG9uZyBwYXVzZXMKKyAg
d2hlbiBwcmludGluZyB0cmFjZWJhY2tzIGluIGxvbmcgbW9kdWxlcworCistIGZpeCBpc3N1ZTIw
NSAtIGNvbmZ0ZXN0cyBpbiBzdWJkaXJzIGN1c3RvbWl6aW5nCisgIHB5dGVzdF9weWNvbGxlY3Rf
bWFrZW1vZHVsZSBhbmQgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbQorICBub3cgd29yayBwcm9w
ZXJseQorCistIGZpeCB0ZWFyZG93bi1vcmRlcmluZyBmb3IgcGFyYW1ldHJpemVkIHNldHVwcwor
CistIGZpeCBpc3N1ZTEyNyAtIGJldHRlciBkb2N1bWVudGF0aW9uIGZvciBweXRlc3RfYWRkb3B0
aW9uCisgIGFuZCByZWxhdGVkIG9iamVjdHMuCisKKy0gZml4IHVuaXR0ZXN0IGJlaGF2aW91cjog
VGVzdENhc2UucnVudGVzdCBvbmx5IGNhbGxlZCBpZiB0aGVyZSBhcmUKKyAgdGVzdCBtZXRob2Rz
IGRlZmluZWQKKworLSBpbXByb3ZlIHRyaWFsIHN1cHBvcnQ6IGRvbid0IGNvbGxlY3QgaXRzIGVt
cHR5CisgIHVuaXR0ZXN0LlRlc3RDYXNlLnJ1blRlc3QoKSBtZXRob2QKKworLSAicHl0aG9uIHNl
dHVwLnB5IHRlc3QiIG5vdyB3b3JrcyB3aXRoIHB5dGVzdCBpdHNlbGYKKworLSBmaXgvaW1wcm92
ZSBpbnRlcm5hbC9wYWNrYWdpbmcgcmVsYXRlZCBiaXRzOgorCisgIC0gZXhjZXB0aW9uIG1lc3Nh
Z2UgY2hlY2sgb2YgdGVzdF9ub3NlLnB5IG5vdyBwYXNzZXMgb24gcHl0aG9uMzMgYXMgd2VsbAor
CisgIC0gaXNzdWUyMDYgLSBmaXggdGVzdF9hc3NlcnRyZXdyaXRlLnB5IHRvIHdvcmsgd2hlbiBh
IGdsb2JhbAorICAgIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEgaXMgcHJlc2VudAorCisgIC0g
YWRkIHRveC5pbmkgdG8gcHl0ZXN0IGRpc3RyaWJ1dGlvbiBzbyB0aGF0IGlnbm9yZS1kaXJzIGFu
ZCBvdGhlcnMgY29uZmlnCisgICAgYml0cyBhcmUgcHJvcGVybHkgZGlzdHJpYnV0ZWQgZm9yIG1h
aW50YWluZXJzIHdobyBydW4gcHl0ZXN0LW93biB0ZXN0cworCisyLjMuMSAoMjAxMi0xMC0yMCkK
Kz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTIwMiAtIGZpeCByZWdyZXNzaW9uOiB1
c2luZyAic2VsZiIgZnJvbSBmaXh0dXJlIGZ1bmN0aW9ucyBub3cKKyAgd29ya3MgYXMgZXhwZWN0
ZWQgKGl0J3MgdGhlIHNhbWUgInNlbGYiIGluc3RhbmNlIHRoYXQgYSB0ZXN0IG1ldGhvZAorICB3
aGljaCB1c2VzIHRoZSBmaXh0dXJlIHNlZXMpCisKKy0gc2tpcCBwZXhwZWN0IHVzaW5nIHRlc3Rz
ICh0ZXN0X3BkYi5weSBtb3N0bHkpIG9uIGZyZWVic2QqIHN5c3RlbXMKKyAgZHVlIHRvIHBleHBl
Y3Qgbm90IHN1cHBvcnRpbmcgaXQgcHJvcGVybHkgKGhhbmdpbmcpCisKKy0gbGluayB0byB3ZWIg
cGFnZXMgZnJvbSAtLW1hcmtlcnMgb3V0cHV0IHdoaWNoIHByb3ZpZGVzIGhlbHAgZm9yCisgIHB5
dGVzdC5tYXJrLiogdXNhZ2UuCisKKzIuMy4wICgyMDEyLTEwLTE5KQorPT09PT09PT09PT09PT09
PT09CisKKy0gZml4IGlzc3VlMjAyIC0gYmV0dGVyIGF1dG9tYXRpYyBuYW1lcyBmb3IgcGFyYW1l
dHJpemVkIHRlc3QgZnVuY3Rpb25zCistIGZpeCBpc3N1ZTEzOSAtIGludHJvZHVjZSBAcHl0ZXN0
LmZpeHR1cmUgd2hpY2ggYWxsb3dzIGRpcmVjdCBzY29waW5nCisgIGFuZCBwYXJhbWV0cml6YXRp
b24gb2YgZnVuY2FyZyBmYWN0b3JpZXMuCistIGZpeCBpc3N1ZTE5OCAtIGNvbmZ0ZXN0IGZpeHR1
cmVzIHdlcmUgbm90IGZvdW5kIG9uIHdpbmRvd3MzMiBpbiBzb21lCisgIGNpcmN1bXN0YW5jZXMg
d2l0aCBuZXN0ZWQgZGlyZWN0b3J5IHN0cnVjdHVyZXMgZHVlIHRvIHBhdGggbWFuaXB1bGF0aW9u
IGlzc3VlcworLSBmaXggaXNzdWUxOTMgc2tpcCB0ZXN0IGZ1bmN0aW9ucyB3aXRoIHdlcmUgcGFy
YW1ldHJpemVkIHdpdGggZW1wdHkKKyAgcGFyYW1ldGVyIHNldHMKKy0gZml4IHB5dGhvbjMuMyBj
b21wYXQsIG1vc3RseSByZXBvcnRpbmcgYml0cyB0aGF0IHByZXZpb3VzbHkgZGVwZW5kZWQKKyAg
b24gZGljdCBvcmRlcmluZworLSBpbnRyb2R1Y2UgcmUtb3JkZXJpbmcgb2YgdGVzdHMgYnkgcmVz
b3VyY2UgYW5kIHBhcmFtZXRyaXphdGlvbiBzZXR1cAorICB3aGljaCB0YWtlcyBwcmVjZWRlbmNl
IHRvIHRoZSB1c3VhbCBmaWxlLW9yZGVyaW5nCistIGZpeCBpc3N1ZTE4NSBtb25rZXlwYXRjaGlu
ZyB0aW1lLnRpbWUgZG9lcyBub3QgY2F1c2UgcHl0ZXN0IHRvIGZhaWwKKy0gZml4IGlzc3VlMTcy
IGR1cGxpY2F0ZSBjYWxsIG9mIHB5dGVzdC5maXh0dXJlIGRlY29yYXRvcmVkIHNldHVwX21vZHVs
ZQorICBmdW5jdGlvbnMKKy0gZml4IGp1bml0eG1sPXBhdGggY29uc3RydWN0aW9uIHNvIHRoYXQg
aWYgdGVzdHMgY2hhbmdlIHRoZQorICBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCB0aGUg
cGF0aCBpcyBhIHJlbGF0aXZlIHBhdGgKKyAgaXQgaXMgY29uc3RydWN0ZWQgY29ycmVjdGx5IGZy
b20gdGhlIG9yaWdpbmFsIGN1cnJlbnQgd29ya2luZyBkaXIuCistIGZpeCAicHl0aG9uIHNldHVw
LnB5IHRlc3QiIGV4YW1wbGUgdG8gY2F1c2UgYSBwcm9wZXIgImVycm5vIiByZXR1cm4KKy0gZml4
IGlzc3VlMTY1IC0gZml4IGJyb2tlbiBkb2MgbGlua3MgYW5kIG1lbnRpb24gc3RhY2tvdmVyZmxv
dyBmb3IgRkFRCistIGNhdGNoIHVuaWNvZGUtaXNzdWVzIHdoZW4gd3JpdGluZyBmYWlsdXJlIHJl
cHJlc2VudGF0aW9ucworICB0byB0ZXJtaW5hbCB0byBwcmV2ZW50IHRoZSB3aG9sZSBzZXNzaW9u
IGZyb20gY3Jhc2hpbmcKKy0gZml4IHhmYWlsL3NraXAgY29uZnVzaW9uOiBhIHNraXAtbWFyayBv
ciBhbiBpbXBlcmF0aXZlIHB5dGVzdC5za2lwCisgIHdpbGwgbm93IHRha2UgcHJlY2VkZW5jZSBi
ZWZvcmUgeGZhaWwtbWFya2VycyBiZWNhdXNlIHdlCisgIGNhbid0IGRldGVybWluZSB4ZmFpbC94
cGFzcyBzdGF0dXMgaW4gY2FzZSBvZiBhIHNraXAuIHNlZSBhbHNvOgorICBodHRwOi8vc3RhY2tv
dmVyZmxvdy5jb20vcXVlc3Rpb25zLzExMTA1ODI4L2luLXB5LXRlc3Qtd2hlbi1pLWV4cGxpY2l0
bHktc2tpcC1hLXRlc3QtdGhhdC1pcy1tYXJrZWQtYXMteGZhaWwtaG93LWNhbi1pLWdldAorCist
IGFsd2F5cyByZXBvcnQgaW5zdGFsbGVkIDNyZCBwYXJ0eSBwbHVnaW5zIGluIHRoZSBoZWFkZXIg
b2YgYSB0ZXN0IHJ1bgorCistIGZpeCBpc3N1ZTE2MDogYSBmYWlsaW5nIHNldHVwIG9mIGFuIHhm
YWlsLW1hcmtlZCB0ZXN0cyBzaG91bGQKKyAgYmUgcmVwb3J0ZWQgYXMgeGZhaWwgKG5vdCB4cGFz
cykKKworLSBmaXggaXNzdWUxMjg6IHNob3cgY2FwdHVyZWQgb3V0cHV0IHdoZW4gY2Fwc3lzL2Nh
cGZkIGFyZSB1c2VkCisKKy0gZml4IGlzc3VlMTc5OiBwcm9wZXJseSBzaG93IHRoZSBkZXBlbmRl
bmN5IGNoYWluIG9mIGZhY3RvcmllcworCistIHBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoLi4uKSBu
b3cgcmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlCisgIHBsdWdpbiBoYXMgYmVlbiBhbHJlYWR5IHJl
Z2lzdGVyZWQgb3IgdGhlIG5hbWUgaXMgdGFrZW4KKworLSBmaXggaXNzdWUxNTk6IGltcHJvdmUg
aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vNi4wLjEvZmFxLmh0bWwKKyAgZXNwZWNpYWxseSB3
aXRoIHJlc3BlY3QgdG8gdGhlICJtYWdpYyIgaGlzdG9yeSwgYWxzbyBtZW50aW9uCisgIHB5dGVz
dC1kamFuZ28sIHRyaWFsIGFuZCB1bml0dGVzdCBpbnRlZ3JhdGlvbi4KKworLSBtYWtlIHJlcXVl
c3Qua2V5d29yZHMgYW5kIG5vZGUua2V5d29yZHMgd3JpdGFibGUuICBBbGwgZGVzY2VuZGFudAor
ICBjb2xsZWN0aW9uIG5vZGVzIHdpbGwgc2VlIGtleXdvcmQgdmFsdWVzLiAgS2V5d29yZHMgYXJl
IGRpY3Rpb25hcmllcworICBjb250YWluaW5nIG1hcmtlcnMgYW5kIG90aGVyIGluZm8uCisKKy0g
Zml4IGlzc3VlIDE3ODogeG1sIGJpbmFyeSBlc2NhcGVzIGFyZSBub3cgd3JhcHBlZCBpbiBweS54
bWwucmF3CisKKy0gZml4IGlzc3VlIDE3NjogY29ycmVjdGx5IGNhdGNoIHRoZSBidWlsdGluIEFz
c2VydGlvbkVycm9yCisgIGV2ZW4gd2hlbiB3ZSByZXBsYWNlZCBBc3NlcnRpb25FcnJvciB3aXRo
IGEgc3ViY2xhc3Mgb24gdGhlCisgIHB5dGhvbiBsZXZlbAorCistIGZhY3RvcnkgZGlzY292ZXJ5
IG5vIGxvbmdlciBmYWlscyB3aXRoIG1hZ2ljIGdsb2JhbCBjYWxsYWJsZXMKKyAgdGhhdCBwcm92
aWRlIG5vIHNhbmUgX19jb2RlX18gb2JqZWN0IChtb2NrLmNhbGwgZm9yIGV4YW1wbGUpCisKKy0g
Zml4IGlzc3VlIDE4MjogdGVzdGRpci5pbnByb2Nlc3NfcnVuIG5vdyBjb25zaWRlcnMgcGFzc2Vk
IHBsdWdpbnMKKworLSBmaXggaXNzdWUgMTg4OiBlbnN1cmUgc3lzLmV4Y19pbmZvIGlzIGNsZWFy
IG9uIHB5dGhvbjIKKyAgICAgICAgICAgICAgICAgYmVmb3JlIGNhbGxpbmcgaW50byBhIHRlc3QK
KworLSBmaXggaXNzdWUgMTkxOiBhZGQgdW5pdHRlc3QgVGVzdENhc2UgcnVuVGVzdCBtZXRob2Qg
c3VwcG9ydAorLSBmaXggaXNzdWUgMTU2OiBtb25rZXlwYXRjaCBjb3JyZWN0bHkgaGFuZGxlcyBj
bGFzcyBsZXZlbCBkZXNjcmlwdG9ycworCistIHJlcG9ydGluZyByZWZpbmVtZW50czoKKworICAt
IHB5dGVzdF9yZXBvcnRfaGVhZGVyIG5vdyByZWNlaXZlcyBhICJzdGFydGRpciIgc28gdGhhdAor
ICAgIHlvdSBjYW4gdXNlIHN0YXJ0ZGlyLmJlc3RyZWxwYXRoKHlvdXJwYXRoKSB0byBzaG93Cisg
ICAgbmljZSByZWxhdGl2ZSBwYXRoCisKKyAgLSBhbGxvdyBwbHVnaW5zIHRvIGltcGxlbWVudCBi
b3RoIHB5dGVzdF9yZXBvcnRfaGVhZGVyIGFuZAorICAgIHB5dGVzdF9zZXNzaW9uc3RhcnQgKHNl
c3Npb25zdGFydCBpcyBpbnZva2VkIGZpcnN0KS4KKworICAtIGRvbid0IHNob3cgZGVzZWxlY3Rl
ZCByZWFzb24gbGluZSBpZiB0aGVyZSBpcyBub25lCisKKyAgLSBweS50ZXN0IC12diB3aWxsIHNo
b3cgYWxsIG9mIGFzc2VydCBjb21wYXJpc29ucyBpbnN0ZWFkIG9mIHRydW5jYXRpbmcKKworMi4y
LjQgKDIwMTItMDUtMjIpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggZXJyb3IgbWVzc2Fn
ZSBmb3IgcmV3cml0dGVuIGFzc2VydGlvbnMgaW52b2x2aW5nIHRoZSAlIG9wZXJhdG9yCistIGZp
eCBpc3N1ZSAxMjY6IGNvcnJlY3RseSBtYXRjaCBhbGwgaW52YWxpZCB4bWwgY2hhcmFjdGVycyBm
b3IganVuaXR4bWwKKyAgYmluYXJ5IGVzY2FwZQorLSBmaXggaXNzdWUgd2l0aCB1bml0dGVzdDog
bm93IEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUgbWFya2VycyBzaG91bGQKKyAgYmUgcHJvY2Vz
c2VkIGNvcnJlY3RseSAoeW91IGNhbiBhbHNvIHVzZSBAcHl0ZXN0Lm1hcmsgbWFya2VycykKKy0g
ZG9jdW1lbnQgaW50ZWdyYXRpb24gd2l0aCB0aGUgZXh0ZW5kZWQgZGlzdHJpYnV0ZS9zZXR1cHRv
b2xzIHRlc3QgY29tbWFuZHMKKy0gZml4IGlzc3VlIDE0MDogcHJvcGVybHkgZ2V0IHRoZSByZWFs
IGZ1bmN0aW9ucworICBvZiBib3VuZCBjbGFzc21ldGhvZHMgZm9yIHNldHVwL3RlYXJkb3duX2Ns
YXNzCistIGZpeCBpc3N1ZSAjMTQxOiBzd2l0Y2ggZnJvbSB0aGUgZGVjZWFzZWQgcGFzdGUucG9j
b28ub3JnIHRvIGJwYXN0ZS5uZXQKKy0gZml4IGlzc3VlICMxNDM6IGNhbGwgdW5jb25maWd1cmUv
c2Vzc2lvbmZpbmlzaCBhbHdheXMgd2hlbgorICBjb25maWd1cmUvc2Vzc2lvbnN0YXJ0IHdoZXJl
IGNhbGxlZAorLSBmaXggaXNzdWUgIzE0NDogYmV0dGVyIG1hbmdsZSB0ZXN0IGlkcyB0byBqdW5p
dHhtbCBjbGFzc25hbWVzCistIHVwZ3JhZGUgZGlzdHJpYnV0ZV9zZXR1cC5weSB0byAwLjYuMjcK
KworMi4yLjMgKDIwMTItMDItMDUpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggdXBsb2Fk
ZWQgcGFja2FnZSB0byBvbmx5IGluY2x1ZGUgbmVjZXNzYXJ5IGZpbGVzCisKKzIuMi4yICgyMDEy
LTAyLTA1KQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlMTAxOiB3cm9uZyBhcmdz
IHRvIHVuaXR0ZXN0LlRlc3RDYXNlIHRlc3QgZnVuY3Rpb24gbm93CisgIHByb2R1Y2UgYmV0dGVy
IG91dHB1dAorLSBmaXggaXNzdWUxMDI6IHJlcG9ydCBtb3JlIHVzZWZ1bCBlcnJvcnMgYW5kIGhp
bnRzIGZvciB3aGVuIGEKKyAgdGVzdCBkaXJlY3Rvcnkgd2FzIHJlbmFtZWQgYW5kIHNvbWUgcHlj
L19fcHljYWNoZV9fIHJlbWFpbgorLSBmaXggaXNzdWUxMDY6IGFsbG93IHBhcmFtZXRyaXplIHRv
IGJlIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMKKyAgZS5nLiBmcm9tIG1vZHVsZSwgY2xhc3MgYW5k
IGF0IGZ1bmN0aW9uIGxldmVsLgorLSBmaXggaXNzdWUxMDc6IGFjdHVhbGx5IHBlcmZvcm0gc2Vz
c2lvbiBzY29wZSBmaW5hbGl6YXRpb24KKy0gZG9uJ3QgY2hlY2sgaW4gcGFyYW1ldHJpemUgaWYg
aW5kaXJlY3QgcGFyYW1ldGVycyBhcmUgZnVuY2FyZyBuYW1lcworLSBhZGQgY2hkaXIgbWV0aG9k
IHRvIG1vbmtleXBhdGNoIGZ1bmNhcmcKKy0gZml4IGNyYXNoIHJlc3VsdGluZyBmcm9tIGNhbGxp
bmcgbW9ua2V5cGF0Y2ggdW5kbyBhIHNlY29uZCB0aW1lCistIGZpeCBpc3N1ZTExNTogbWFrZSAt
LWNvbGxlY3Rvbmx5IHJvYnVzdCBhZ2FpbnN0IGVhcmx5IGZhaWx1cmUKKyAgKG1pc3NpbmcgZmls
ZXMvZGlyZWN0b3JpZXMpCistICItcXEgLS1jb2xsZWN0b25seSIgbm93IHNob3dzIG9ubHkgZmls
ZXMgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhlbQorLSAiLXEgLS1jb2xsZWN0b25seSIg
bm93IHNob3dzIHRlc3QgaWRzCistIGFsbG93IGFkZGluZyBvZiBhdHRyaWJ1dGVzIHRvIHRlc3Qg
cmVwb3J0cyBzdWNoIHRoYXQgaXQgYWxzbyB3b3JrcworICB3aXRoIGRpc3RyaWJ1dGVkIHRlc3Rp
bmcgKG5vIHVwZ3JhZGUgb2YgcHl0ZXN0LXhkaXN0IG5lZWRlZCkKKworMi4yLjEgKDIwMTEtMTIt
MTYpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggaXNzdWU5OSAoaW4gcHl0ZXN0IGFuZCBw
eSkgaW50ZXJuYWxsZXJyb3JzIHdpdGggcmVzdWx0bG9nIG5vdworICBwcm9kdWNlIGJldHRlciBv
dXRwdXQgLSBmaXhlZCBieSBub3JtYWxpemluZyBweXRlc3RfaW50ZXJuYWxlcnJvcgorICBpbnB1
dCBhcmd1bWVudHMuCistIGZpeCBpc3N1ZTk3IC8gdHJhY2ViYWNrIGlzc3VlcyAoaW4gcHl0ZXN0
IGFuZCBweSkgaW1wcm92ZSB0cmFjZWJhY2sgb3V0cHV0CisgIGluIGNvbmp1bmN0aW9uIHdpdGgg
amluamEyIGFuZCBjeXRob24gd2hpY2ggaGFjayB0cmFjZWJhY2tzCistIGZpeCBpc3N1ZTkzIChp
biBweXRlc3QgYW5kIHB5dGVzdC14ZGlzdCkgYXZvaWQgImRlbGF5ZWQgdGVhcmRvd25zIjoKKyAg
dGhlIGZpbmFsIHRlc3QgaW4gYSB0ZXN0IG5vZGUgd2lsbCBub3cgcnVuIGl0cyB0ZWFyZG93biBk
aXJlY3RseQorICBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBlbmQgb2YgdGhlIHNlc3Npb24u
IFRoYW5rcyBEYXZlIEh1bnQgZm9yCisgIHRoZSBnb29kIHJlcG9ydGluZyBhbmQgZmVlZGJhY2su
ICBUaGUgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2wgYXMgd2VsbAorICBhcyB0aGUgcHl0ZXN0X3J1
bnRlc3RfdGVhcmRvd24gaG9va3Mgbm93IGhhdmUgIm5leHRpdGVtIiBhdmFpbGFibGUKKyAgd2hp
Y2ggd2lsbCBiZSBOb25lIGluZGljYXRpbmcgdGhlIGVuZCBvZiB0aGUgdGVzdCBydW4uCistIGZp
eCBjb2xsZWN0aW9uIGNyYXNoIGR1ZSB0byB1bmtub3duLXNvdXJjZSBjb2xsZWN0ZWQgaXRlbXMs
IHRoYW5rcworICB0byBSYWxmIFNjaG1pdHQgKGZpeGVkIGJ5IGRlcGVuZGluZyBvbiBhIG1vcmUg
cmVjZW50IHB5bGliKQorCisyLjIuMCAoMjAxMS0xMS0xOCkKKz09PT09PT09PT09PT09PT09PQor
CistIGZpeCBpc3N1ZTkwOiBpbnRyb2R1Y2UgZWFnZXIgdGVhcmluZyBkb3duIG9mIHRlc3QgaXRl
bXMgc28gdGhhdAorICB0ZWFyZG93biBmdW5jdGlvbiBhcmUgY2FsbGVkIGVhcmxpZXIuCistIGFk
ZCBhbiBhbGwtcG93ZXJmdWwgbWV0YWZ1bmMucGFyYW1ldHJpemUgZnVuY3Rpb24gd2hpY2ggYWxs
b3dzIHRvCisgIHBhcmFtZXRyaXplIHRlc3QgZnVuY3Rpb24gYXJndW1lbnRzIGluIG11bHRpcGxl
IHN0ZXBzIGFuZCB0aGVyZWZvcmUKKyAgZnJvbSBpbmRlcGVuZGVudCBwbHVnaW5zIGFuZCBwbGFj
ZXMuCistIGFkZCBhIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSBoZWxwZXIgd2hpY2ggYWxsb3dz
IHRvIGVhc2lseQorICBjYWxsIGEgdGVzdCBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCBhcmd1bWVu
dCB2YWx1ZXMKKy0gQWRkIGV4YW1wbGVzIHRvIHRoZSAicGFyYW1ldHJpemUiIGV4YW1wbGUgcGFn
ZSwgaW5jbHVkaW5nIGEgcXVpY2sgcG9ydAorICBvZiBUZXN0IHNjZW5hcmlvcyBhbmQgdGhlIG5l
dyBwYXJhbWV0cml6ZSBmdW5jdGlvbiBhbmQgZGVjb3JhdG9yLgorLSBpbnRyb2R1Y2UgcmVnaXN0
cmF0aW9uIGZvciAicHl0ZXN0Lm1hcmsuKiIgaGVscGVycyB2aWEgaW5pLWZpbGVzCisgIG9yIHRo
cm91Z2ggcGx1Z2luIGhvb2tzLiAgQWxzbyBpbnRyb2R1Y2UgYSAiLS1zdHJpY3QiIG9wdGlvbiB3
aGljaAorICB3aWxsIHRyZWF0IHVucmVnaXN0ZXJlZCBtYXJrZXJzIGFzIGVycm9ycworICBhbGxv
d2luZyB0byBhdm9pZCB0eXBvcyBhbmQgbWFpbnRhaW4gYSB3ZWxsIGRlc2NyaWJlZCBzZXQgb2Yg
bWFya2VycworICBmb3IgeW91ciB0ZXN0IHN1aXRlLiAgU2VlIGV4YXBsZXMgYXQgaHR0cDovL3B5
dGVzdC5vcmcvZW4vc3RhYmxlL21hcmsuaHRtbAorICBhbmQgaXRzIGxpbmtzLgorLSBpc3N1ZTUw
OiBpbnRyb2R1Y2UgIi1tIG1hcmtlciIgb3B0aW9uIHRvIHNlbGVjdCB0ZXN0cyBiYXNlZCBvbiBt
YXJrZXJzCisgICh0aGlzIGlzIGEgc3RyaWN0ZXIgYW5kIG1vcmUgcHJlZGljdGFibGUgdmVyc2lv
biBvZiAnLWsnIGluIHRoYXQgIi1tIgorICBvbmx5IG1hdGNoZXMgY29tcGxldGUgbWFya2VycyBh
bmQgaGFzIG1vcmUgb2J2aW91cyBydWxlcyBmb3IgYW5kL29yCisgIHNlbWFudGljcy4KKy0gbmV3
IGZlYXR1cmUgdG8gaGVscCBvcHRpbWl6aW5nIHRoZSBzcGVlZCBvZiB5b3VyIHRlc3RzOgorICAt
LWR1cmF0aW9ucz1OIG9wdGlvbiBmb3IgZGlzcGxheWluZyBOIHNsb3dlc3QgdGVzdCBjYWxscwor
ICBhbmQgc2V0dXAvdGVhcmRvd24gbWV0aG9kcy4KKy0gZml4IGlzc3VlODc6IC0tcGFzdGViaW4g
bm93IHdvcmtzIHdpdGggcHl0aG9uMworLSBmaXggaXNzdWU4OTogLS1wZGIgd2l0aCB1bmV4cGVj
dGVkIGV4Y2VwdGlvbnMgaW4gZG9jdGVzdCB3b3JrIG1vcmUgc2Vuc2libHkKKy0gZml4IGFuZCBj
bGVhbnVwIHB5dGVzdCdzIG93biB0ZXN0IHN1aXRlIHRvIG5vdCBsZWFrIEZEcworLSBmaXggaXNz
dWU4MzogbGluayB0byBnZW5lcmF0ZWQgZnVuY2FyZyBsaXN0CistIGZpeCBpc3N1ZTc0OiBweWFy
ZyBtb2R1bGUgbmFtZXMgYXJlIG5vdyBjaGVja2VkIGFnYWluc3QgaW1wLmZpbmRfbW9kdWxlIGZh
bHNlIHBvc2l0aXZlcworLSBmaXggY29tcGF0aWJpbGl0eSB3aXRoIHR3aXN0ZWQvdHJpYWwtMTEu
MS4wIHVzZSBjYXNlcworLSBzaW1wbGlmeSBOb2RlLmxpc3RjaGFpbgorLSBzaW1wbGlmeSBqdW5p
dHhtbCBvdXRwdXQgY29kZSBieSByZWx5aW5nIG9uIHB5LnhtbAorLSBhZGQgc3VwcG9ydCBmb3Ig
c2tpcCBwcm9wZXJ0aWVzIG9uIHVuaXR0ZXN0IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworCisyLjEu
MyAoMjAxMS0xMC0xOCkKKz09PT09PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTc5OiBhc3Nl
cnRpb24gcmV3cml0aW5nIGZhaWxlZCBvbiBzb21lIGNvbXBhcmlzb25zIGluIGJvb2xvcHMKKy0g
Y29ycmVjdGx5IGhhbmRsZSB6ZXJvIGxlbmd0aCBhcmd1bWVudHMgKGEgbGEgcHl0ZXN0ICcnKQor
LSBmaXggaXNzdWU2NyAvIGp1bml0eG1sIG5vdyBjb250YWlucyBjb3JyZWN0IHRlc3QgZHVyYXRp
b25zLCB0aGFua3Mgcm9ubnkKKy0gZml4IGlzc3VlNzUgLyBza2lwcGluZyB0ZXN0IGZhaWx1cmUg
b24ganl0aG9uCistIGZpeCBpc3N1ZTc3IC8gQWxsb3cgYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2sg
dG8gYXBwbHkgdG8gYSBzdWJzZXQgb2YgdGVzdHMKKworMi4xLjIgKDIwMTEtMDktMjQpCis9PT09
PT09PT09PT09PT09PT0KKworLSBmaXggYXNzZXJ0aW9uIHJld3JpdGluZyBvbiBmaWxlcyB3aXRo
IHdpbmRvd3MgbmV3bGluZXMgb24gc29tZSBQeXRob24gdmVyc2lvbnMKKy0gcmVmaW5lIHRlc3Qg
ZGlzY292ZXJ5IGJ5IHBhY2thZ2UvbW9kdWxlIG5hbWUgKC0tcHlhcmdzKSwgdGhhbmtzIEZsb3Jp
YW4gTWF5ZXIKKy0gZml4IGlzc3VlNjkgLyBhc3NlcnRpb24gcmV3cml0aW5nIGZpeGVkIG9uIHNv
bWUgYm9vbGVhbiBvcGVyYXRpb25zCistIGZpeCBpc3N1ZTY4IC8gcGFja2FnZXMgbm93IHdvcmsg
d2l0aCBhc3NlcnRpb24gcmV3cml0aW5nCistIGZpeCBpc3N1ZTY2OiB1c2UgZGlmZmVyZW50IGFz
c2VydGlvbiByZXdyaXRpbmcgY2FjaGVzIHdoZW4gdGhlIC1PIG9wdGlvbiBpcyBwYXNzZWQKKy0g
ZG9uJ3QgdHJ5IGFzc2VydGlvbiByZXdyaXRpbmcgb24gSnl0aG9uLCB1c2UgcmVpbnRlcnAKKwor
Mi4xLjEKKz09PT09CisKKy0gZml4IGlzc3VlNjQgLyBweXRlc3Quc2V0X3RyYWNlIG5vdyB3b3Jr
cyB3aXRoaW4gcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIGhvb2tzCistIGZpeCBpc3N1ZTYwIC8gZml4
IGVycm9yIGNvbmRpdGlvbnMgaW52b2x2aW5nIHRoZSBjcmVhdGlvbiBvZiBfX3B5Y2FjaGVfXwor
LSBmaXggaXNzdWU2MyAvIGFzc2VydGlvbiByZXdyaXRpbmcgb24gaW5zZXJ0cyBpbnZvbHZpbmcg
c3RyaW5ncyBjb250YWluaW5nICclJworLSBmaXggYXNzZXJ0aW9uIHJld3JpdGluZyBvbiBjYWxs
cyB3aXRoIGEgKiogYXJnCistIGRvbid0IGNhY2hlIHJld3JpdHRlbiBtb2R1bGVzIGlmIGJ5dGVj
b2RlIGdlbmVyYXRpb24gaXMgZGlzYWJsZWQKKy0gZml4IGFzc2VydGlvbiByZXdyaXRpbmcgaW4g
cmVhZC1vbmx5IGRpcmVjdG9yaWVzCistIGZpeCBpc3N1ZTU5OiBwcm92aWRlIHN5c3RlbS1vdXQv
ZXJyIHRhZ3MgZm9yIGp1bml0eG1sIG91dHB1dAorLSBmaXggaXNzdWU2MTogYXNzZXJ0aW9uIHJl
d3JpdGluZyBvbiBib29sZWFuIG9wZXJhdGlvbnMgd2l0aCAzIG9yIG1vcmUgb3BlcmFuZHMKKy0g
eW91IGNhbiBub3cgYnVpbGQgYSBtYW4gcGFnZSB3aXRoICJjZCBkb2MgOyBtYWtlIG1hbiIKKwor
Mi4xLjAgKDIwMTEtMDctMDkpCis9PT09PT09PT09PT09PT09PT0KKworLSBmaXggaXNzdWU1MyBj
YWxsIG5vc2VzdHlsZSBzZXR1cCBmdW5jdGlvbnMgd2l0aCBjb3JyZWN0IG9yZGVyaW5nCistIGZp
eCBpc3N1ZTU4IGFuZCBpc3N1ZTU5OiBuZXcgYXNzZXJ0aW9uIGNvZGUgZml4ZXMKKy0gbWVyZ2Ug
QmVuamFtaW4ncyBhc3NlcnRpb25yZXdyaXRlIGJyYW5jaDogbm93IGFzc2VydGlvbnMKKyAgZm9y
IHRlc3QgbW9kdWxlcyBvbiBweXRob24gMi42IGFuZCBhYm92ZSBhcmUgZG9uZSBieSByZXdyaXRp
bmcKKyAgdGhlIEFTVCBhbmQgc2F2aW5nIHRoZSBweWMgZmlsZSBiZWZvcmUgdGhlIHRlc3QgbW9k
dWxlIGlzIGltcG9ydGVkLgorICBzZWUgZG9jL2Fzc2VydC50eHQgZm9yIG1vcmUgaW5mby4KKy0g
Zml4IGlzc3VlNDM6IGltcHJvdmUgZG9jdGVzdHMgd2l0aCBiZXR0ZXIgdHJhY2ViYWNrIHJlcG9y
dGluZyBvbgorICB1bmV4cGVjdGVkIGV4Y2VwdGlvbnMKKy0gZml4IGlzc3VlNDc6IHRpbWluZyBv
dXRwdXQgaW4ganVuaXR4bWwgZm9yIHRlc3QgY2FzZXMgaXMgbm93IGNvcnJlY3QKKy0gZml4IGlz
c3VlNDg6IHR5cG8gaW4gTWFya0luZm8gcmVwciBsZWFkaW5nIHRvIGV4Y2VwdGlvbgorLSBmaXgg
aXNzdWU0OTogYXZvaWQgY29uZnVzaW5nIGVycm9yIHdoZW4gaW5pdGl6YWxpYXRpb24gcGFydGlh
bGx5IGZhaWxzCistIGZpeCBpc3N1ZTQ0OiBlbnYvdXNlcm5hbWUgZXhwYW5zaW9uIGZvciBqdW5p
dHhtbCBmaWxlIHBhdGgKKy0gc2hvdyByZWxlYXNlbGV2ZWwgaW5mb3JtYXRpb24gaW4gdGVzdCBy
dW5zIGZvciBweXB5CistIHJld29ya2VkIGRvYyBwYWdlcyBmb3IgYmV0dGVyIG5hdmlnYXRpb24g
YW5kIFBERiBnZW5lcmF0aW9uCistIHJlcG9ydCBLZXlib2FyZEludGVycnVwdCBldmVuIGlmIGlu
dGVycnVwdGVkIGR1cmluZyBzZXNzaW9uIHN0YXJ0dXAKKy0gZml4IGlzc3VlIDM1IC0gcHJvdmlk
ZSBQREYgZG9jIHZlcnNpb24gYW5kIGRvd25sb2FkIGxpbmsgZnJvbSBpbmRleCBwYWdlCisKKzIu
MC4zICgyMDExLTA1LTExKQorPT09PT09PT09PT09PT09PT09CisKKy0gZml4IGlzc3VlMzg6IG5p
Y2VyIHRyYWNlYmFja3Mgb24gY2FsbHMgdG8gaG9va3MsIHBhcnRpY3VsYXJseSBlYXJseQorICBj
b25maWd1cmUvc2Vzc2lvbnN0YXJ0IG9uZXMKKworLSBmaXggbWlzc2luZyBza2lwIHJlYXNvbi9t
ZXRhIGluZm9ybWF0aW9uIGluIGp1bml0eG1sIGZpbGVzLCByZXBvcnRlZAorICB2aWEgaHR0cDov
L2xpc3RzLmlkeWxsLm9yZy9waXBlcm1haWwvdGVzdGluZy1pbi1weXRob24vMjAxMS1NYXJjaC8w
MDM5MjguaHRtbAorCistIGZpeCBpc3N1ZTM0OiBhdm9pZCBjb2xsZWN0aW9uIGZhaWx1cmUgd2l0
aCAidGVzdCIgcHJlZml4ZWQgY2xhc3NlcworICBkZXJpdmluZyBmcm9tIG9iamVjdC4KKworLSBk
b24ndCByZXF1aXJlIHpsaWIgKGFuZCBvdGhlciBsaWJzKSBmb3IgZ2Vuc2NyaXB0IHBsdWdpbiB3
aXRob3V0CisgIC0tZ2Vuc2NyaXB0IGFjdHVhbGx5IGJlaW5nIHVzZWQuCisKKy0gc3BlZWQgdXAg
c2tpcHMgKGJ5IG5vdCBkb2luZyBhIGZ1bGwgdHJhY2ViYWNrIHJlcHJlc2VudGF0aW9uCisgIGlu
dGVybmFsbHkpCisKKy0gZml4IGlzc3VlMzc6IGF2b2lkIGludmFsaWQgY2hhcmFjdGVycyBpbiBq
dW5pdHhtbCdzIG91dHB1dAorCisyLjAuMiAoMjAxMS0wMy0wOSkKKz09PT09PT09PT09PT09PT09
PQorCistIHRhY2tsZSBpc3N1ZTMyIC0gc3BlZWQgdXAgdGVzdCBydW5zIG9mIHZlcnkgcXVpY2sg
dGVzdCBmdW5jdGlvbnMKKyAgYnkgcmVkdWNpbmcgdGhlIHJlbGF0aXZlIG92ZXJoZWFkCisKKy0g
Zml4IGlzc3VlMzAgLSBleHRlbmRlZCB4ZmFpbC9za2lwaWYgaGFuZGxpbmcgYW5kIGltcHJvdmVk
IHJlcG9ydGluZy4KKyAgSWYgeW91IGhhdmUgYSBzeW50YXggZXJyb3IgaW4geW91ciBza2lwL3hm
YWlsCisgIGV4cHJlc3Npb25zIHlvdSBub3cgZ2V0IG5pY2UgZXJyb3IgcmVwb3J0cy4KKworICBB
bHNvIHlvdSBjYW4gbm93IGFjY2VzcyBtb2R1bGUgZ2xvYmFscyBmcm9tIHhmYWlsL3NraXBpZgor
ICBleHByZXNzaW9ucyBzbyB0aGF0IHRoaXMgZm9yIGV4YW1wbGUgd29ya3Mgbm93OjoKKworICAg
IGltcG9ydCBweXRlc3QKKyAgICBpbXBvcnQgbXltb2R1bGUKKyAgICBAcHl0ZXN0Lm1hcmsuc2tp
cGlmKCJteW1vZHVsZS5fX3ZlcnNpb25fX1swXSA9PSAiMSIpCisgICAgZGVmIHRlc3RfZnVuY3Rp
b24oKToKKyAgICAgICAgcGFzcworCisgIFRoaXMgd2lsbCBub3QgcnVuIHRoZSB0ZXN0IGZ1bmN0
aW9uIGlmIHRoZSBtb2R1bGUncyB2ZXJzaW9uIHN0cmluZworICBkb2VzIG5vdCBzdGFydCB3aXRo
IGEgIjEiLiAgTm90ZSB0aGF0IHNwZWNpZnlpbmcgYSBzdHJpbmcgaW5zdGVhZAorICBvZiBhIGJv
b2xlYW4gZXhwcmVzc2lvbnMgYWxsb3dzIHB5LnRlc3QgdG8gcmVwb3J0IG1lYW5pbmdmdWwgaW5m
b3JtYXRpb24KKyAgd2hlbiBzdW1tYXJpemluZyBhIHRlc3QgcnVuIGFzIHRvIHdoYXQgY29uZGl0
aW9ucyBsZWFkIHRvIHNraXBwaW5nCisgIChvciB4ZmFpbC1pbmcpIHRlc3RzLgorCistIGZpeCBp
c3N1ZTI4IC0gc2V0dXBfbWV0aG9kIGFuZCBweXRlc3RfZ2VuZXJhdGVfdGVzdHMgd29yayB0b2dl
dGhlcgorICBUaGUgc2V0dXBfbWV0aG9kIGZpeHR1cmUgbWV0aG9kIG5vdyBnZXRzIGNhbGxlZCBh
bHNvIGZvcgorICB0ZXN0IGZ1bmN0aW9uIGludm9jYXRpb25zIGdlbmVyYXRlZCBmcm9tIHRoZSBw
eXRlc3RfZ2VuZXJhdGVfdGVzdHMKKyAgaG9vay4KKworLSBmaXggaXNzdWUyNyAtIGNvbGxlY3Rv
bmx5IGFuZCBrZXl3b3JkLXNlbGVjdGlvbiAoLWspIG5vdyB3b3JrIHRvZ2V0aGVyCisgIEFsc28s
IGlmIHlvdSBkbyAicHkudGVzdCAtLWNvbGxlY3Rvbmx5IC1xIiB5b3Ugbm93IGdldCBhIGZsYXQg
bGlzdAorICBvZiB0ZXN0IGlkcyB0aGF0IHlvdSBjYW4gdXNlIHRvIHBhc3RlIHRvIHRoZSBweS50
ZXN0IGNvbW1hbmRsaW5lCisgIGluIG9yZGVyIHRvIGV4ZWN1dGUgYSBwYXJ0aWN1bGFyIHRlc3Qu
CisKKy0gZml4IGlzc3VlMjUgYXZvaWQgcmVwb3J0ZWQgcHJvYmxlbXMgd2l0aCAtLXBkYiBhbmQg
cHl0aG9uMy4yL2VuY29kaW5ncyBvdXRwdXQKKworLSBmaXggaXNzdWUyMyAtIHRtcGRpciBhcmd1
bWVudCBub3cgd29ya3Mgb24gUHl0aG9uMy4yIGFuZCBXaW5kb3dzWFAKKyAgU3RhcnRpbmcgd2l0
aCBQeXRob24zLjIgb3Muc3ltbGluayBtYXkgYmUgc3VwcG9ydGVkLiBCeSByZXF1aXJpbmcKKyAg
YSBuZXdlciBweSBsaWIgdmVyc2lvbiB0aGUgcHkucGF0aC5sb2NhbCgpIGltcGxlbWVudGF0aW9u
IGFja25vd2xlZGdlcworICB0aGlzLgorCistIGZpeGVkIHR5cG9zIGluIHRoZSBkb2NzICh0aGFu
a3MgVmljdG9yIEdhcmNpYSwgQnJpYW5uYSBMYXVnaGVyKSBhbmQgcGFydGljdWxhcgorICB0aGFu
a3MgdG8gTGF1cmEgQ3JlaWdodG9uIHdobyBhbHNvIHJldmlld2VkIHBhcnRzIG9mIHRoZSBkb2N1
bWVudGF0aW9uLgorCistIGZpeCBzbGlnaHRseSB3cm9uZyBvdXRwdXQgb2YgdmVyYm9zZSBwcm9n
cmVzcyByZXBvcnRpbmcgZm9yIGNsYXNzZXMKKyAgKHRoYW5rcyBBbWF1cnkpCisKKy0gbW9yZSBw
cmVjaXNlIChhdm9pZGluZyBvZikgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIG5vZGUuQ2xhc3N8
RnVuY3Rpb24gYWNjZXNzZXMKKworLSBhdm9pZCBzdGQgdW5pdHRlc3QgYXNzZXJ0aW9uIGhlbHBl
ciBjb2RlIGluIHRyYWNlYmFja3MgKHRoYW5rcyBSb25ueSkKKworMi4wLjEgKDIwMTEtMDItMDcp
Cis9PT09PT09PT09PT09PT09PT0KKworLSByZWZpbmUgYW5kIHVuaWZ5IGluaXRpYWwgY2FwdHVy
aW5nIHNvIHRoYXQgaXQgd29ya3MgbmljZWx5CisgIGV2ZW4gaWYgdGhlIGxvZ2dpbmcgbW9kdWxl
IGlzIHVzZWQgb24gYW4gZWFybHktbG9hZGVkIGNvbmZ0ZXN0LnB5CisgIGZpbGUgb3IgcGx1Z2lu
LgorLSBhbGxvdyB0byBvbWl0ICIoKSIgaW4gdGVzdCBpZHMgdG8gYWxsb3cgZm9yIHVuaWZvcm0g
dGVzdCBpZHMKKyAgYXMgcHJvZHVjZWQgYnkgQWxmcmVkbydzIG5pY2UgcHl0ZXN0LnZpbSBwbHVn
aW4uCistIGZpeCBpc3N1ZTEyIC0gc2hvdyBwbHVnaW4gdmVyc2lvbnMgd2l0aCAiLS12ZXJzaW9u
IiBhbmQKKyAgIi0tdHJhY2Vjb25maWciIGFuZCBhbHNvIGRvY3VtZW50IGhvdyB0byBhZGQgZXh0
cmEgaW5mb3JtYXRpb24KKyAgdG8gcmVwb3J0aW5nIHRlc3QgaGVhZGVyCistIGZpeCBpc3N1ZTE3
IChpbXBvcnQtKiByZXBvcnRpbmcgaXNzdWUgb24gcHl0aG9uMykgYnkKKyAgcmVxdWlyaW5nIHB5
PjEuNC4wICgxLjQuMSBpcyBnb2luZyB0byBpbmNsdWRlIGl0KQorLSBmaXggaXNzdWUxMCAobnVt
cHkgYXJyYXlzIHRydXRoIGNoZWNraW5nKSBieSByZWZpbmluZworICBhc3NlcnRpb24gaW50ZXJw
cmV0YXRpb24gaW4gcHkgbGliCistIGZpeCBpc3N1ZTE1OiBtYWtlIG5vc2UgY29tcGF0aWJpbGl0
eSB0ZXN0cyBjb21wYXRpYmxlCisgIHdpdGggcHl0aG9uMyAobm93IHRoYXQgbm9zZS0xLjAgc3Vw
cG9ydHMgcHl0aG9uMykKKy0gcmVtb3ZlIHNvbWV3aGF0IHN1cnByaXNpbmcgInNhbWUtY29uZnRl
c3QiIGRldGVjdGlvbiBiZWNhdXNlCisgIGl0IGlnbm9yZXMgY29uZnRlc3QucHkgd2hlbiB0aGV5
IGFwcGVhciBpbiBzZXZlcmFsIHN1YmRpcnMuCistIGltcHJvdmUgYXNzZXJ0aW9ucyAoIm5vdCBp
biIpLCB0aGFua3MgRmxvcmlzIEJydXlub29naGUKKy0gaW1wcm92ZSBiZWhhdmlvdXIvd2Fybmlu
Z3Mgd2hlbiBydW5uaW5nIG9uIHRvcCBvZiAicHl0aG9uIC1PTyIKKyAgKGFzc2VydGlvbnMgYW5k
IGRvY3N0cmluZ3MgYXJlIHR1cm5lZCBvZmYsIGxlYWRpbmcgdG8gcG90ZW50aWFsCisgIGZhbHNl
IHBvc2l0aXZlcykKKy0gaW50cm9kdWNlIGEgcHl0ZXN0X2NtZGxpbmVfcHJvY2Vzc2FyZ3MoYXJn
cykgaG9vaworICB0byBhbGxvdyBkeW5hbWljIGNvbXB1dGF0aW9uIG9mIGNvbW1hbmQgbGluZSBh
cmd1bWVudHMuCisgIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIGJlY2F1c2UgcHkudGVzdCBwcmlv
ciB0byAyLjAKKyAgYWxsb3dlZCB0byBzZXQgY29tbWFuZCBsaW5lIG9wdGlvbnMgZnJvbSBjb25m
dGVzdC5weQorICBmaWxlcyB3aGljaCBzbyBmYXIgcHl0ZXN0LTIuMCBvbmx5IGFsbG93ZWQgZnJv
bSBpbmktZmlsZXMgbm93LgorLSBmaXggaXNzdWU3OiBhc3NlcnQgZmFpbHVyZXMgaW4gZG9jdGVz
dCBtb2R1bGVzLgorICB1bmV4cGVjdGVkIGZhaWx1cmVzIGluIGRvY3Rlc3RzIHdpbGwgbm90IGdl
bmVyYWxseQorICBzaG93IG5pY2VyLCBpLmUuIHdpdGhpbiB0aGUgZG9jdGVzdCBmYWlsaW5nIGNv
bnRleHQuCistIGZpeCBpc3N1ZTk6IHNldHVwL3RlYXJkb3duIGZ1bmN0aW9ucyBmb3IgYW4geGZh
aWwtbWFya2VkCisgIHRlc3Qgd2lsbCByZXBvcnQgYXMgeGZhaWwgaWYgdGhleSBmYWlsIGJ1dCBy
ZXBvcnQgYXMgbm9ybWFsbHkKKyAgcGFzc2luZyAobm90IHhwYXNzaW5nKSBpZiB0aGV5IHN1Y2Nl
ZWQuICBUaGlzIG9ubHkgaXMgdHJ1ZQorICBmb3IgImRpcmVjdCIgc2V0dXAvdGVhcmRvd24gaW52
b2NhdGlvbnMgYmVjYXVzZSB0ZWFyZG93bl9jbGFzcy8KKyAgdGVhcmRvd25fbW9kdWxlIGNhbm5v
dCBjbG9zZWx5IHJlbGF0ZSB0byBhIHNpbmdsZSB0ZXN0LgorLSBmaXggaXNzdWUxNDogbm8gbG9n
Z2luZyBlcnJvcnMgYXQgcHJvY2VzcyBleGl0CistIHJlZmluZW1lbnRzIHRvICJjb2xsZWN0aW5n
IiBvdXRwdXQgb24gbm9uLXR0eXMKKy0gcmVmaW5lIGludGVybmFsIHBsdWdpbiByZWdpc3RyYXRp
b24gYW5kIC0tdHJhY2Vjb25maWcgb3V0cHV0CistIGludHJvZHVjZSBhIG1lY2hhbmlzbSB0byBw
cmV2ZW50L3VucmVnaXN0ZXIgcGx1Z2lucyBmcm9tIHRoZQorICBjb21tYW5kIGxpbmUsIHNlZSBo
dHRwOi8vcHl0ZXN0Lm9yZy9lbi9zdGFibGUvcGx1Z2lucy5odG1sI2NtZHVucmVnaXN0ZXIKKy0g
YWN0aXZhdGUgcmVzdWx0bG9nIHBsdWdpbiBieSBkZWZhdWx0CistIGZpeCByZWdyZXNzaW9uIHdy
dCB5aWVsZGVkIHRlc3RzIHdoaWNoIGR1ZSB0byB0aGUKKyAgY29sbGVjdGlvbi1iZWZvcmUtcnVu
bmluZyBzZW1hbnRpY3Mgd2VyZSBub3QKKyAgc2V0dXAgYXMgd2l0aCBweXRlc3QgMS4zLjQuICBO
b3RlLCBob3dldmVyLCB0aGF0CisgIHRoZSByZWNvbW1lbmRlZCBhbmQgbXVjaCBjbGVhbmVyIHdh
eSB0byBkbyB0ZXN0CisgIHBhcmFtZXRyYWl6YXRpb24gcmVtYWlucyB0aGUgInB5dGVzdF9nZW5l
cmF0ZV90ZXN0cyIKKyAgbWVjaGFuaXNtLCBzZWUgdGhlIGRvY3MuCisKKzIuMC4wICgyMDEwLTEx
LTI1KQorPT09PT09PT09PT09PT09PT09CisKKy0gcHl0ZXN0LTIuMCBpcyBub3cgaXRzIG93biBw
YWNrYWdlIGFuZCBkZXBlbmRzIG9uIHB5bGliLTIuMAorLSBuZXcgYWJpbGl0eTogcHl0aG9uIC1t
IHB5dGVzdCAvIHB5dGhvbiAtbSBweXRlc3QubWFpbiBhYmlsaXR5CistIG5ldyBweXRob24gaW52
b2NhdGlvbjogcHl0ZXN0Lm1haW4oYXJncywgcGx1Z2lucykgdG8gbG9hZAorICBzb21lIGN1c3Rv
bSBwbHVnaW5zIGVhcmx5LgorLSB0cnkgaGFyZGVyIHRvIHJ1biB1bml0dGVzdCB0ZXN0IHN1aXRl
cyBpbiBhIG1vcmUgY29tcGF0aWJsZSBtYW5uZXIKKyAgYnkgZGVmZXJyaW5nIHNldHVwL3RlYXJk
b3duIHNlbWFudGljcyB0byB0aGUgdW5pdHRlc3QgcGFja2FnZS4KKyAgYWxzbyB3b3JrIGhhcmRl
ciB0byBydW4gdHdpc3RlZC90cmlhbCBhbmQgRGphbmdvIHRlc3RzIHdoaWNoCisgIHNob3VsZCBu
b3cgYmFzaWNhbGx5IHdvcmsgYnkgZGVmYXVsdC4KKy0gaW50cm9kdWNlIGEgbmV3IHdheSB0byBz
ZXQgY29uZmlnIG9wdGlvbnMgdmlhIGluaS1zdHlsZSBmaWxlcywKKyAgYnkgZGVmYXVsdCBzZXR1
cC5jZmcgYW5kIHRveC5pbmkgZmlsZXMgYXJlIHNlYXJjaGVkLiAgVGhlIG9sZAorICB3YXlzIChj
ZXJ0YWluIGVudmlyb25tZW50IHZhcmlhYmxlcywgZHluYW1pYyBjb25mdGVzdC5weSByZWFkaW5n
CisgIGlzIHJlbW92ZWQpLgorLSBhZGQgYSBuZXcgIi1xIiBvcHRpb24gd2hpY2ggZGVjcmVhc2Vz
IHZlcmJvc2l0eSBhbmQgcHJpbnRzIGEgbW9yZQorICBub3NlL3VuaXR0ZXN0LXN0eWxlICJkb3Qi
IG91dHB1dC4KKy0gZml4IGlzc3VlMTM1IC0gbWFya3Mgbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0
ZXN0IGNhc2VzIGFzIHdlbGwKKy0gZml4IGlzc3VlMTI2IC0gaW50cm9kdWNlIHB5LnRlc3Quc2V0
X3RyYWNlKCkgdG8gdHJhY2UgZXhlY3V0aW9uIHZpYQorICBQREIgZHVyaW5nIHRoZSBydW5uaW5n
IG9mIHRlc3RzIGV2ZW4gaWYgY2FwdHVyaW5nIGlzIG9uZ29pbmcuCistIGZpeCBpc3N1ZTEyMyAt
IG5ldyAicHl0aG9uIC1tIHB5LnRlc3QiIGludm9jYXRpb24gZm9yIHB5LnRlc3QKKyAgKHJlcXVp
cmVzIFB5dGhvbiAyLjUgb3IgYWJvdmUpCistIGZpeCBpc3N1ZTEyNCAtIG1ha2UgcmVwb3J0aW5n
IG1vcmUgcmVzaWxpZW50IGFnYWluc3QgdGVzdHMgb3BlbmluZworICBmaWxlcyBvbiBmaWxlZGVz
Y3JpcHRvciAxIChzdGRvdXQpLgorLSBmaXggaXNzdWUxMDkgLSBzaWJsaW5nIGNvbmZ0ZXN0LnB5
IGZpbGVzIHdpbGwgbm90IGJlIGxvYWRlZC4KKyAgKGFuZCBEaXJlY3RvcnkgY29sbGVjdG9ycyBj
YW5ub3QgYmUgY3VzdG9taXplZCBhbnltb3JlIGZyb20gYSBEaXJlY3RvcnkncworICBjb25mdGVz
dC5weSAtIHRoaXMgbmVlZHMgdG8gaGFwcGVuIGF0IGxlYXN0IG9uZSBsZXZlbCB1cCkuCistIGlu
dHJvZHVjZSAoY3VzdG9taXphYmxlKSBhc3NlcnRpb24gZmFpbHVyZSByZXByZXNlbnRhdGlvbnMg
YW5kIGVuaGFuY2UKKyAgb3V0cHV0IG9uIGFzc2VydGlvbiBmYWlsdXJlcyBmb3IgY29tcGFyaXNv
bnMgYW5kIG90aGVyIGNhc2VzIChGbG9yaXMgQnJ1eW5vb2doZSkKKy0gbm9zZS1wbHVnaW46IHBh
c3MgdGhyb3VnaCB0eXBlLXNpZ25hdHVyZSBmYWlsdXJlcyBpbiBzZXR1cC90ZWFyZG93bgorICBm
dW5jdGlvbnMgaW5zdGVhZCBvZiBub3QgY2FsbGluZyB0aGVtIChFZCBTaW5nbGV0b24pCistIHJl
bW92ZSBweS50ZXN0LmNvbGxlY3QuRGlyZWN0b3J5IChmb2xsb3dzIGZyb20gYSBtYWpvciByZWZh
Y3RvcmluZworICBhbmQgc2ltcGxpZmljYXRpb24gb2YgdGhlIGNvbGxlY3Rpb24gcHJvY2VzcykK
Ky0gbWFqb3JseSByZWR1Y2UgcHkudGVzdCBjb3JlIGNvZGUsIHNoaWZ0IGZ1bmN0aW9uL3B5dGhv
biB0ZXN0aW5nIHRvIG93biBwbHVnaW4KKy0gZml4IGlzc3VlODggKGZpbmRpbmcgY3VzdG9tIHRl
c3Qgbm9kZXMgZnJvbSBjb21tYW5kIGxpbmUgYXJnKQorLSByZWZpbmUgJ3RtcGRpcicgY3JlYXRp
b24sIHdpbGwgbm93IGNyZWF0ZSBiYXNlbmFtZXMgYmV0dGVyIGFzc29jaWF0ZWQKKyAgd2l0aCB0
ZXN0IG5hbWVzICh0aGFua3MgUm9ubnkpCistICJ4cGFzcyIgKHVuZXhwZWN0ZWQgcGFzcykgdGVz
dHMgZG9uJ3QgY2F1c2UgZXhpdGNvZGUhPTAKKy0gZml4IGlzc3VlMTMxIC8gaXNzdWU2MCAtIGlt
cG9ydGluZyBkb2N0ZXN0cyBpbiBfX2luaXRfXyBmaWxlcyB1c2VkIGFzIG5hbWVzcGFjZSBwYWNr
YWdlcworLSBmaXggaXNzdWU5MyBzdGRvdXQvc3RkZXJyIGlzIGNhcHR1cmVkIHdoaWxlIGltcG9y
dGluZyBjb25mdGVzdC5weQorLSBmaXggYnVnOiB1bml0dGVzdCBjb2xsZWN0ZWQgZnVuY3Rpb25z
IG5vdyBhbHNvIGNhbiBoYXZlICJweXRlc3RtYXJrIgorICBhcHBsaWVkIGF0IGNsYXNzL21vZHVs
ZSBsZXZlbAorLSBhZGQgYWJpbGl0eSB0byB1c2UgImNsYXNzIiBsZXZlbCBmb3IgY2FjaGVkX3Nl
dHVwIGhlbHBlcgorLSBmaXggc3RyYW5nZW5lc3M6IG1hcmsuKiBvYmplY3RzIGFyZSBub3cgaW1t
dXRhYmxlLCBjcmVhdGUgbmV3IGluc3RhbmNlcworCisxLjMuNCAoMjAxMC0wOS0xNCkKKz09PT09
PT09PT09PT09PT09PQorCistIGZpeCBpc3N1ZTExMTogaW1wcm92ZSBpbnN0YWxsIGRvY3VtZW50
YXRpb24gZm9yIHdpbmRvd3MKKy0gZml4IGlzc3VlMTE5OiBmaXggY3VzdG9tIGNvbGxlY3RhYmls
aXR5IG9mIF9faW5pdF9fLnB5IGFzIGEgbW9kdWxlCistIGZpeCBpc3N1ZTExNjogLS1kb2N0ZXN0
bW9kdWxlcyB3b3JrIHdpdGggX19pbml0X18ucHkgZmlsZXMgYXMgd2VsbAorLSBmaXggaXNzdWUx
MTU6IHVuaWZ5IGludGVybmFsIGV4Y2VwdGlvbiBwYXNzdGhyb3VnaC9jYXRjaGluZy9HZW5lcmF0
b3JFeGl0CistIGZpeCBpc3N1ZTExODogbmV3IC0tdGI9bmF0aXZlIGZvciBwcmVzZW50aW5nIGNw
eXRob24tc3RhbmRhcmQgZXhjZXB0aW9ucworCisxLjMuMyAoMjAxMC0wNy0zMCkKKz09PT09PT09
PT09PT09PT09PQorCistIGZpeCBpc3N1ZTExMzogYXNzZXJ0aW9uIHJlcHJlc2VudGF0aW9uIHBy
b2JsZW0gd2l0aCB0cmlwbGUtcXVvdGVkIHN0cmluZ3MKKyAgKGFuZCBwb3NzaWJseSBvdGhlciBj
YXNlcykKKy0gbWFrZSBjb25mdGVzdCBsb2FkaW5nIGRldGVjdCB0aGF0IGEgY29uZnRlc3QgZmls
ZSB3aXRoIHRoZSBzYW1lCisgIGNvbnRlbnQgd2FzIGFscmVhZHkgbG9hZGVkLCBhdm9pZHMgc3Vy
cHJpc2VzIGluIG5lc3RlZCBkaXJlY3Rvcnkgc3RydWN0dXJlcworICB3aGljaCBjYW4gYmUgcHJv
ZHVjZWQgZS5nLiBieSBIdWRzb24uIEl0IHByb2JhYmx5IHJlbW92ZXMgdGhlIG5lZWQgdG8gdXNl
CisgIC0tY29uZmN1dGRpciBpbiBtb3N0IGNhc2VzLgorLSBmaXggdGVybWluYWwgY29sb3Jpbmcg
Zm9yIHdpbjMyCisgICh0aGFua3MgTWljaGFlbCBGb29yZCBmb3IgcmVwb3J0aW5nKQorLSBmaXgg
d2VpcmRuZXNzOiBtYWtlIHRlcm1pbmFsIHdpZHRoIGRldGVjdGlvbiB3b3JrIG9uIHN0ZG91dCBp
bnN0ZWFkIG9mIHN0ZGluCisgICh0aGFua3MgQXJtaW4gUm9uYWNoZXIgZm9yIHJlcG9ydGluZykK
Ky0gcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gYWxsIHB5L3RleHQgZGlzdHJpYnV0aW9u
IGZpbGVzCisKKzEuMy4yICgyMDEwLTA3LTA4KQorPT09PT09PT09PT09PT09PT09CisKKyoqTmV3
IGZlYXR1cmVzKioKKworLSBmaXggaXNzdWUxMDM6ICBpbnRyb2R1Y2UgcHkudGVzdC5yYWlzZXMg
YXMgY29udGV4dCBtYW5hZ2VyLCBleGFtcGxlczo6CisKKyAgICB3aXRoIHB5LnRlc3QucmFpc2Vz
KFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgeCA9IDAKKyAgICAgICAgMSAvIHgKKworICAg
IHdpdGggcHkudGVzdC5yYWlzZXMoUnVudGltZUVycm9yKSBhcyBleGNpbmZvOgorICAgICAgICBj
YWxsX3NvbWV0aGluZygpCisKKyAgICAjIHlvdSBtYXkgZG8gZXh0cmEgY2hlY2tzIG9uIGV4Y2lu
Zm8udmFsdWV8dHlwZXx0cmFjZWJhY2sgaGVyZQorCisgICh0aGFua3MgUm9ubnkgUGZhbm5zY2ht
aWR0KQorCistIEZ1bmNhcmcgZmFjdG9yaWVzIGNhbiBub3cgZHluYW1pY2FsbHkgYXBwbHkgYSBt
YXJrZXIgdG8gYQorICB0ZXN0IGludm9jYXRpb24uICBUaGlzIGlzIGZvciBleGFtcGxlIHVzZWZ1
bCBpZiBhIGZhY3RvcnkKKyAgcHJvdmlkZXMgcGFyYW1ldGVycyB0byBhIHRlc3Qgd2hpY2ggYXJl
IGV4cGVjdGVkLXRvLWZhaWw6OgorCisgICAgZGVmIHB5dGVzdF9mdW5jYXJnX19hcmcocmVxdWVz
dCk6CisgICAgICAgIHJlcXVlc3QuYXBwbHltYXJrZXIocHkudGVzdC5tYXJrLnhmYWlsKHJlYXNv
bj0iZmxha3kgY29uZmlnIikpCisgICAgICAgIC4uLgorCisgICAgZGVmIHRlc3RfZnVuY3Rpb24o
YXJnKToKKyAgICAgICAgLi4uCisKKy0gaW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIG9uIGNvbGxl
Y3Rpb24gYW5kIGltcG9ydCBlcnJvcnMuIFRoaXMgbWFrZXMKKyAgdXNlIG9mIGEgbW9yZSBnZW5l
cmFsIG1lY2hhbmlzbSwgbmFtZWx5IHRoYXQgZm9yIGN1c3RvbSB0ZXN0IGl0ZW0vY29sbGVjdAor
ICBub2RlcyBgYG5vZGUucmVwcl9mYWlsdXJlKGV4Y2luZm8pYGAgaXMgbm93IHVuaWZvcm1seSBj
YWxsZWQgc28gdGhhdCB5b3UgY2FuCisgIG92ZXJyaWRlIGl0IHRvIHJldHVybiBhIHN0cmluZyBl
cnJvciByZXByZXNlbnRhdGlvbiBvZiB5b3VyIGNob2ljZQorICB3aGljaCBpcyBnb2luZyB0byBi
ZSByZXBvcnRlZCBhcyBhIChyZWQpIHN0cmluZy4KKworLSBpbnRyb2R1Y2UgJy0tanVuaXRwcmVm
aXg9U1RSJyBvcHRpb24gdG8gcHJlcGVuZCBhIHByZWZpeAorICB0byBhbGwgcmVwb3J0cyBpbiB0
aGUganVuaXR4bWwgZmlsZS4KKworKipCdWcgZml4ZXMqKgorCistIG1ha2UgdGVzdHMgYW5kIHRo
ZSBgYHB5dGVzdF9yZWN3YXJuYGAgcGx1Z2luIGluIHBhcnRpY3VsYXIgZnVsbHkgY29tcGF0aWJs
ZQorICB0byBQeXRob24yLjcgKGlmIHlvdSB1c2UgdGhlIGBgcmVjd2FybmBgIGZ1bmNhcmcgd2Fy
bmluZ3Mgd2lsbCBiZSBlbmFibGVkIHNvIHRoYXQKKyAgeW91IGNhbiBwcm9wZXJseSBjaGVjayBm
b3IgdGhlaXIgZXhpc3RlbmNlIGluIGEgY3Jvc3MtcHl0aG9uIG1hbm5lcikuCistIHJlZmluZSAt
LXBkYjogaWdub3JlIHhmYWlsZWQgdGVzdHMsIHVuaWZ5IGl0cyBUQi1yZXBvcnRpbmcgYW5kCisg
IGRvbid0IGRpc3BsYXkgZmFpbHVyZXMgYWdhaW4gYXQgdGhlIGVuZC4KKy0gZml4IGFzc2VydGlv
biBpbnRlcnByZXRhdGlvbiB3aXRoIHRoZSAqKiBvcGVyYXRvciAodGhhbmtzIEJlbmphbWluIFBl
dGVyc29uKQorLSBmaXggaXNzdWUxMDUgYXNzaWdubWVudCBvbiB0aGUgc2FtZSBsaW5lIGFzIGEg
ZmFpbGluZyBhc3NlcnRpb24gKHRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKKy0gZml4IGlzc3Vl
MTA0IHByb3BlciBlc2NhcGluZyBmb3IgdGVzdCBuYW1lcyBpbiBqdW5pdHhtbCBwbHVnaW4gKHRo
YW5rcyBhbm9ueW1vdXMpCistIGZpeCBpc3N1ZTU3IC1mfC0tbG9vcG9uZmFpbCB0byB3b3JrIHdp
dGggeHBhc3NpbmcgdGVzdHMgKHRoYW5rcyBSb25ueSkKKy0gZml4IGlzc3VlOTIgY29sbGVjdG9u
bHkgcmVwb3J0ZXIgYW5kIC0tcGFzdGViaW4gKHRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKKy0g
Zml4IHB5LmNvZGUuY29tcGlsZShzb3VyY2UpIHRvIGdlbmVyYXRlIHVuaXF1ZSBmaWxlbmFtZXMK
Ky0gZml4IGFzc2VydGlvbiByZS1pbnRlcnAgcHJvYmxlbXMgb24gUHlQeSwgYnkgZGVmZXJpbmcg
Y29kZQorICBjb21waWxhdGlvbiB0byB0aGUgKG92ZXJyaWRhYmxlKSBGcmFtZS5ldmFsIGNsYXNz
LiAodGhhbmtzIEFtYXVyeSBGb3JnZW90KQorLSBmaXggcHkucGF0aC5sb2NhbC5weWltcG9ydCgp
IHRvIHdvcmsgd2l0aCBkaXJlY3RvcmllcworLSBzdHJlYW1saW5lIHB5LnBhdGgubG9jYWwubWtk
dGVtcCBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKy0gZG9uJ3QgcHJpbnQgZW1wdHkgbGluZXMg
d2hlbiBzaG93aW5nIGp1bml0eG1sLWZpbGVuYW1lCistIGFkZCBvcHRpb25hbCBib29sZWFuIGln
bm9yZV9lcnJvcnMgcGFyYW1ldGVyIHRvIHB5LnBhdGgubG9jYWwucmVtb3ZlCistIGZpeCB0ZXJt
aW5hbCB3cml0aW5nIG9uIHdpbjMyL3B5dGhvbjIuNAorLSBweS5wcm9jZXNzLmNtZGV4ZWMoKSBu
b3cgdHJpZXMgaGFyZGVyIHRvIHJldHVybiBwcm9wZXJseSBlbmNvZGVkIHVuaWNvZGUgb2JqZWN0
cworICBvbiBhbGwgcHl0aG9uIHZlcnNpb25zCistIGluc3RhbGwgcGxhaW4gcHkudGVzdC9weS53
aGljaCBzY3JpcHRzIGFsc28gZm9yIEp5dGhvbiwgdGhpcyBoZWxwcyB0bworICBnZXQgY2Fub25p
Y2FsIHNjcmlwdCBwYXRocyBpbiB2aXJ0dWFsZW52IHNpdHVhdGlvbnMKKy0gbWFrZSBwYXRoLmJl
c3RyZWxwYXRoKHBhdGgpIHJldHVybiAiLiIsIG5vdGUgdGhhdCB3aGVuIGNhbGxpbmcKKyAgWC5i
ZXN0cmVscGF0aCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IFggaXMgYSBkaXJlY3RvcnkuCistIG1h
a2UgaW5pdGlhbCBjb25mdGVzdCBkaXNjb3ZlcnkgaWdub3JlICItLSIgcHJlZml4ZWQgYXJndW1l
bnRzCistIGZpeCByZXN1bHRsb2cgcGx1Z2luIHdoZW4gdXNlZCBpbiBhIG11bHRpY3B1L211bHRp
aG9zdCB4ZGlzdCBzaXR1YXRpb24KKyAgKHRoYW5rcyBKYWt1YiBHdXN0YWspCistIHBlcmZvcm0g
ZGlzdHJpYnV0ZWQgdGVzdGluZyByZWxhdGVkIHJlcG9ydGluZyBpbiB0aGUgeGRpc3QtcGx1Z2lu
CisgIHJhdGhlciB0aGFuIGhhdmluZyBkaXN0LXJlbGF0ZWQgY29kZSBpbiB0aGUgZ2VuZXJpYyBw
eS50ZXN0CisgIGRpc3RyaWJ1dGlvbgorLSBmaXggaG9tZWRpciBkZXRlY3Rpb24gb24gV2luZG93
cworLSBzaGlwIGRpc3RyaWJ1dGVfc2V0dXAucHkgdmVyc2lvbiAwLjYuMTMKKworMS4zLjEgKDIw
MTAtMDUtMjUpCis9PT09PT09PT09PT09PT09PT0KKworKipOZXcgZmVhdHVyZXMqKgorCistIGlz
c3VlOTE6IGludHJvZHVjZSBuZXcgcHkudGVzdC54ZmFpbChyZWFzb24pIGhlbHBlcgorICB0byBp
bXBlcmF0aXZlbHkgbWFyayBhIHRlc3QgYXMgZXhwZWN0ZWQgdG8gZmFpbC4gQ2FuCisgIGJlIHVz
ZWQgZnJvbSB3aXRoaW4gc2V0dXAgYW5kIHRlc3QgZnVuY3Rpb25zLiBUaGlzIGlzCisgIHVzZWZ1
bCBlc3BlY2lhbGx5IGZvciBwYXJhbWV0cml6ZWQgdGVzdHMgd2hlbiBjZXJ0YWluCisgIGNvbmZp
Z3VyYXRpb25zIGFyZSBleHBlY3RlZC10by1mYWlsLiAgSW4gdGhpcyBjYXNlIHRoZQorICBkZWNs
YXJhdGl2ZSBhcHByb2FjaCB3aXRoIHRoZSBAcHkudGVzdC5tYXJrLnhmYWlsIGNhbm5vdAorICBi
ZSB1c2VkIGFzIGl0IHdvdWxkIG1hcmsgYWxsIGNvbmZpZ3VyYXRpb25zIGFzIHhmYWlsLgorCist
IGlzc3VlMTAyOiBpbnRyb2R1Y2UgbmV3IC0tbWF4ZmFpbD1OVU0gb3B0aW9uIHRvIHN0b3AKKyAg
dGVzdCBydW5zIGFmdGVyIE5VTSBmYWlsdXJlcy4gIFRoaXMgaXMgYSBnZW5lcmFsaXphdGlvbgor
ICBvZiB0aGUgJy14JyBvciAnLS1leGl0Zmlyc3QnIG9wdGlvbiB3aGljaCBpcyBub3cgZXF1aXZh
bGVudAorICB0byAnLS1tYXhmYWlsPTEnLiAgQm90aCAnLXgnIGFuZCAnLS1tYXhmYWlsJyB3aWxs
CisgIG5vdyBhbHNvIHByaW50IGEgbGluZSBuZWFyIHRoZSBlbmQgaW5kaWNhdGluZyB0aGUgSW50
ZXJydXB0aW9uLgorCistIGlzc3VlODk6IGFsbG93IHB5LnRlc3QubWFyayBkZWNvcmF0b3JzIHRv
IGJlIHVzZWQgb24gY2xhc3NlcworICAoY2xhc3MgZGVjb3JhdG9ycyB3ZXJlIGludHJvZHVjZWQg
d2l0aCBweXRob24yLjYpIGFuZAorICBhbHNvIGFsbG93IHRvIGhhdmUgbXVsdGlwbGUgbWFya2Vy
cyBhcHBsaWVkIGF0IGNsYXNzL21vZHVsZSBsZXZlbAorICBieSBzcGVjaWZ5aW5nIGEgbGlzdC4K
KworLSBpbXByb3ZlIGFuZCByZWZpbmUgbGV0dGVyIHJlcG9ydGluZyBpbiB0aGUgcHJvZ3Jlc3Mg
YmFyOgorICAuICBwYXNzCisgIGYgIGZhaWxlZCB0ZXN0CisgIHMgIHNraXBwZWQgdGVzdHMgKHJl
bWluZGVyOiB1c2UgZm9yIGRlcGVuZGVuY3kvcGxhdGZvcm0gbWlzbWF0Y2ggb25seSkKKyAgeCAg
eGZhaWxlZCB0ZXN0ICh0ZXN0IHRoYXQgd2FzIGV4cGVjdGVkIHRvIGZhaWwpCisgIFggIHhwYXNz
ZWQgdGVzdCAodGVzdCB0aGF0IHdhcyBleHBlY3RlZCB0byBmYWlsIGJ1dCBwYXNzZWQpCisKKyAg
WW91IGNhbiB1c2UgYW55IGNvbWJpbmF0aW9uIG9mICdmc3hYJyB3aXRoIHRoZSAnLXInIGV4dGVu
ZGVkCisgIHJlcG9ydGluZyBvcHRpb24uIFRoZSB4ZmFpbC94cGFzcyByZXN1bHRzIHdpbGwgc2hv
dyB1cCBhcworICBza2lwcGVkIHRlc3RzIGluIHRoZSBqdW5pdHhtbCBvdXRwdXQgLSB3aGljaCBh
bHNvIGZpeGVzCisgIGlzc3VlOTkuCisKKy0gbWFrZSBweS50ZXN0LmNtZGxpbmUubWFpbigpIHJl
dHVybiB0aGUgZXhpdHN0YXR1cyBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgU3lzdGVtRXhpdCBhbmQg
YWxzbyBhbGxvdyBpdCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuICBUaGlzIG9mCisgIGNv
dXJzZSByZXF1aXJlcyB0aGF0IHlvdXIgYXBwbGljYXRpb24gYW5kIHRlc3RzIGFyZSBwcm9wZXJs
eSB0ZWFyZWQKKyAgZG93biBhbmQgZG9uJ3QgaGF2ZSBnbG9iYWwgc3RhdGUuCisKKyoqQnVnIEZp
eGVzKioKKworLSBpbXByb3ZlZCB0cmFjZWJhY2sgcHJlc2VudGF0aW9uOgorICAtIGltcHJvdmVk
IGFuZCB1bmlmaWVkIHJlcG9ydGluZyBmb3IgIi0tdGI9c2hvcnQiIG9wdGlvbgorICAtIEVycm9y
cyBkdXJpbmcgdGVzdCBtb2R1bGUgaW1wb3J0cyBhcmUgbXVjaCBzaG9ydGVyLCAodXNpbmcgLS10
Yj1zaG9ydCBzdHlsZSkKKyAgLSByYWlzZXMgc2hvd3Mgc2hvcnRlciBtb3JlIHJlbGV2YW50IHRy
YWNlYmFja3MKKyAgLSAtLWZ1bGx0cmFjZSBub3cgbW9yZSBzeXN0ZW1hdGljYWxseSBtYWtlcyB0
cmFjZXMgbG9uZ2VyIC8gaW5oaWJpdHMgY3V0dGluZworCistIGltcHJvdmUgc3VwcG9ydCBmb3Ig
cmFpc2VzIGFuZCBvdGhlciBkeW5hbWljYWxseSBjb21waWxlZCBjb2RlIGJ5CisgIG1hbmlwdWxh
dGluZyBweXRob24ncyBsaW5lY2FjaGUuY2FjaGUgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMKKyAg
cmF0aGVyIGhhY2t5IHdheSBvZiBjcmVhdGluZyBjdXN0b20gY29kZSBvYmplY3RzLiAgVGhpcyBt
YWtlcworICBpdCBzZWVtbGVzc2x5IHdvcmsgb24gSnl0aG9uIGFuZCBQeVB5IHdoZXJlIGl0IHBy
ZXZpb3VzbHkgZGlkbid0LgorCistIGZpeCBpc3N1ZTk2OiBtYWtlIGNhcHR1cmluZyBtb3JlIHJl
c2lsaWVudCBhZ2FpbnN0IENvbnRyb2wtQworICBpbnRlcnJ1cHRpb25zIChpbnZvbHZlZCBzb21l
d2hhdCBzdWJzdGFudGlhbCByZWZhY3RvcmluZworICB0byB0aGUgdW5kZXJseWluZyBjYXB0dXJp
bmcgZnVuY3Rpb25hbGl0eSB0byBhdm9pZCByYWNlCisgIGNvbmRpdGlvbnMpLgorCistIGZpeCBj
aGFpbmluZyBvZiBjb25kaXRpb25hbCBza2lwaWYveGZhaWwgZGVjb3JhdG9ycyAtIHNvIGl0IHdv
cmtzIG5vdworICBhcyBleHBlY3RlZCB0byB1c2UgbXVsdGlwbGUgQHB5LnRlc3QubWFyay5za2lw
aWYoY29uZGl0aW9uKSBkZWNvcmF0b3JzLAorICBpbmNsdWRpbmcgc3BlY2lmaWMgcmVwb3J0aW5n
IHdoaWNoIG9mIHRoZSBjb25kaXRpb25zIGxlYWQgdG8gc2tpcHBpbmcuCisKKy0gZml4IGlzc3Vl
OTU6IGxhdGUtaW1wb3J0IHpsaWIgc28gdGhhdCBpdCdzIG5vdCByZXF1aXJlZAorICBmb3IgZ2Vu
ZXJhbCBweS50ZXN0IHN0YXJ0dXAuCisKKy0gZml4IGlzc3VlOTQ6IG1ha2UgcmVwb3J0aW5nIG1v
cmUgcm9idXN0IGFnYWluc3QgYm9ndXMgc291cmNlIGNvZGUKKyAgKGFuZCBpbnRlcm5hbGx5IGJl
IG1vcmUgY2FyZWZ1bCB3aGVuIHByZXNlbnRpbmcgdW5leHBlY3RlZCBieXRlIHNlcXVlbmNlcykK
KworCisxLjMuMCAoMjAxMC0wNS0wNSkKKz09PT09PT09PT09PT09PT09PQorCistIGRlcHJlY2F0
ZSAtLXJlcG9ydCBvcHRpb24gaW4gZmF2b3VyIG9mIGEgbmV3IHNob3J0ZXIgYW5kIGVhc2llciB0
bworICByZW1lbWJlciAtciBvcHRpb246IGl0IHRha2VzIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnNp
c3Rpbmcgb2YgYW55CisgIGNvbWJpbmF0aW9uIG9mICd4ZnNYJyBjaGFyYWN0ZXJzLiAgVGhleSBy
ZWxhdGUgdG8gdGhlIHNpbmdsZSBjaGFycworICB5b3Ugc2VlIGR1cmluZyB0aGUgZG90dGVkIHBy
b2dyZXNzIHByaW50aW5nIGFuZCB3aWxsIHByaW50IGFuIGV4dHJhIGxpbmUKKyAgcGVyIHRlc3Qg
YXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBydW4uICBUaGlzIGV4dHJhIGxpbmUgaW5kaWNhdGVzIHRo
ZSBleGFjdAorICBwb3NpdGlvbiBvciB0ZXN0IElEIHRoYXQgeW91IGRpcmVjdGx5IHBhc3RlIHRv
IHRoZSBweS50ZXN0IGNtZGxpbmUgaW4gb3JkZXIKKyAgdG8gcmUtcnVuIGEgcGFydGljdWxhciB0
ZXN0LgorCistIGFsbG93IGV4dGVybmFsIHBsdWdpbnMgdG8gcmVnaXN0ZXIgbmV3IGhvb2tzIHZp
YSB0aGUgbmV3CisgIHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKSBob29rLiAgVGhlIG5l
dyByZWxlYXNlIG9mCisgIHRoZSBweXRlc3QteGRpc3QgcGx1Z2luIGZvciBkaXN0cmlidXRlZCBh
bmQgbG9vcG9uZmFpbGluZworICB0ZXN0aW5nIHJlcXVpcmVzIHRoaXMgZmVhdHVyZS4KKworLSBh
ZGQgYSBuZXcgcHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGgsIGNvbmZpZykgaG9vayB0byBhbGxv
dyBwcm9qZWN0cyBhbmQKKyAgcGx1Z2lucyB0byBkZWZpbmUgZXhjbHVzaW9uIGJlaGF2aW91ciBm
b3IgdGhlaXIgZGlyZWN0b3J5IHN0cnVjdHVyZSAtCisgIGZvciBleGFtcGxlIHlvdSBtYXkgZGVm
aW5lIGluIGEgY29uZnRlc3QucHkgdGhpcyBtZXRob2Q6OgorCisgICAgICAgIGRlZiBweXRlc3Rf
aWdub3JlX2NvbGxlY3QocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gcGF0aC5jaGVjayhsaW5r
PTEpCisKKyAgdG8gcHJldmVudCBldmVuIGEgY29sbGVjdGlvbiB0cnkgb2YgYW55IHRlc3RzIGlu
IHN5bWxpbmtlZCBkaXJzLgorCistIG5ldyBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0
aCwgcGFyZW50KSBob29rIGZvcgorICBhbGxvd2luZyBjdXN0b21pemF0aW9uIG9mIHRoZSBNb2R1
bGUgY29sbGVjdGlvbiBvYmplY3QgZm9yIGEKKyAgbWF0Y2hpbmcgdGVzdCBtb2R1bGUuCisKKy0g
ZXh0ZW5kIGFuZCByZWZpbmUgeGZhaWwgbWVjaGFuaXNtOgorICBgYEBweS50ZXN0Lm1hcmsueGZh
aWwocnVuPUZhbHNlKWBgIGRvIG5vdCBydW4gdGhlIGRlY29yYXRlZCB0ZXN0CisgIGBgQHB5LnRl
c3QubWFyay54ZmFpbChyZWFzb249Ii4uLiIpYGAgcHJpbnRzIHRoZSByZWFzb24gc3RyaW5nIGlu
IHhmYWlsIHN1bW1hcmllcworICBzcGVjaWZ5aW5nIGBgLS1ydW54ZmFpbGBgIG9uIGNvbW1hbmQg
bGluZSB2aXJ0dWFsbHkgaWdub3JlcyB4ZmFpbCBtYXJrZXJzCisKKy0gZXhwb3NlIChwcmV2aW91
c2x5IGludGVybmFsKSBjb21tb25seSB1c2VmdWwgbWV0aG9kczoKKyAgcHkuaW8uZ2V0X3Rlcm1p
bmFsX3dpdGgoKSAtPiByZXR1cm4gdGVybWluYWwgd2lkdGgKKyAgcHkuaW8uYW5zaV9wcmludCgu
Li4pIC0+IHByaW50IGNvbG9yZWQvYm9sZCB0ZXh0IG9uIGxpbnV4L3dpbjMyCisgIHB5LmlvLnNh
ZmVyZXByKG9iaikgLT4gcmV0dXJuIGxpbWl0ZWQgcmVwcmVzZW50YXRpb24gc3RyaW5nCisKKy0g
ZXhwb3NlIHRlc3Qgb3V0Y29tZSByZWxhdGVkIGV4Y2VwdGlvbnMgYXMgcHkudGVzdC5za2lwLkV4
Y2VwdGlvbiwKKyAgcHkudGVzdC5yYWlzZXMuRXhjZXB0aW9uIGV0Yy4sIHVzZWZ1bCBtb3N0bHkg
Zm9yIHBsdWdpbnMKKyAgZG9pbmcgc3BlY2lhbCBvdXRjb21lIGludGVycHJldGF0aW9uL3R3ZWFr
aW5nCisKKy0gKGlzc3VlODUpIGZpeCBqdW5pdHhtbCBwbHVnaW4gdG8gaGFuZGxlIHRlc3RzIHdp
dGggbm9uLWFzY2lpIG91dHB1dAorCistIGZpeC9yZWZpbmUgcHl0aG9uMyBjb21wYXRpYmlsaXR5
ICh0aGFua3MgQmVuamFtaW4gUGV0ZXJzb24pCisKKy0gZml4ZXMgZm9yIG1ha2luZyB0aGUganl0
aG9uL3dpbjMyIGNvbWJpbmF0aW9uIHdvcmssIG5vdGUgaG93ZXZlcjoKKyAganl0aG9uMi41LjEv
d2luMzIgZG9lcyBub3QgcHJvdmlkZSBhIGNvbW1hbmQgbGluZSBsYXVuY2hlciwgc2VlCisgIGh0
dHA6Ly9idWdzLmp5dGhvbi5vcmcvaXNzdWUxNDkxIC4gU2VlIHB5bGliIGluc3RhbGwgZG9jdW1l
bnRhdGlvbgorICBmb3IgaG93IHRvIHdvcmsgYXJvdW5kLgorCistIGZpeGVzIGZvciBoYW5kbGlu
ZyBvZiB1bmljb2RlIGV4Y2VwdGlvbiB2YWx1ZXMgYW5kIHVucHJpbnRhYmxlIG9iamVjdHMKKwor
LSAoaXNzdWU4NykgZml4IHVuYm91bmRsb2NhbCBlcnJvciBpbiBhc3NlcnRpb25vbGQgY29kZQor
CistIChpc3N1ZTg2KSBpbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIGxvb3BvbmZhaWxpbmcKKwor
LSByZWZpbmUgSU8gY2FwdHVyaW5nOiBzdGRpbi1yZWRpcmVjdCBwc2V1ZG8tZmlsZSBub3cgaGFz
IGEgTk9QIGNsb3NlKCkgbWV0aG9kCisKKy0gc2hpcCBkaXN0cmlidXRlX3NldHVwLnB5IHZlcnNp
b24gMC42LjEwCisKKy0gYWRkZWQgbGlua3MgdG8gdGhlIG5ldyBjYXB0dXJlbG9nIGFuZCBjb3Zl
cmFnZSBwbHVnaW5zCisKKworMS4yLjAgKDIwMTAtMDEtMTgpCis9PT09PT09PT09PT09PT09PT0K
KworLSByZWZpbmVkIHVzYWdlIGFuZCBvcHRpb25zIGZvciAicHkuY2xlYW51cCI6OgorCisgICAg
cHkuY2xlYW51cCAgICAgIyByZW1vdmUgIioucHljIiBhbmQgIiokcHkuY2xhc3MiIChqeXRob24p
IGZpbGVzCisgICAgcHkuY2xlYW51cCAtZSAuc3dwIC1lIC5jYWNoZSAjIGFsc28gcmVtb3ZlIGZp
bGVzIHdpdGggdGhlc2UgZXh0ZW5zaW9ucworICAgIHB5LmNsZWFudXAgLXMgICMgcmVtb3ZlICJi
dWlsZCIgYW5kICJkaXN0IiBkaXJlY3RvcnkgbmV4dCB0byBzZXR1cC5weSBmaWxlcworICAgIHB5
LmNsZWFudXAgLWQgICMgYWxzbyByZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMKKyAgICBweS5jbGVh
bnVwIC1hICAjIHN5bm9ueW0gZm9yICItcyAtZCAtZSAncGlwLWxvZy50eHQnIgorICAgIHB5LmNs
ZWFudXAgLW4gICMgZHJ5IHJ1biwgb25seSBzaG93IHdoYXQgd291bGQgYmUgcmVtb3ZlZAorCist
IGFkZCBhIG5ldyBvcHRpb24gInB5LnRlc3QgLS1mdW5jYXJncyIgd2hpY2ggc2hvd3MgYXZhaWxh
YmxlIGZ1bmNhcmdzCisgIGFuZCB0aGVpciBoZWxwIHN0cmluZ3MgKGRvY3N0cmluZ3Mgb24gdGhl
aXIgcmVzcGVjdGl2ZSBmYWN0b3J5IGZ1bmN0aW9uKQorICBmb3IgYSBnaXZlbiB0ZXN0IHBhdGgK
KworLSBkaXNwbGF5IGEgc2hvcnQgYW5kIGNvbmNpc2UgdHJhY2ViYWNrIGlmIGEgZnVuY2FyZyBs
b29rdXAgZmFpbHMKKworLSBlYXJseS1sb2FkICJjb25mdGVzdC5weSIgZmlsZXMgaW4gbm9uLWRv
dCBmaXJzdC1sZXZlbCBzdWIgZGlyZWN0b3JpZXMuCisgIGFsbG93cyB0byBjb252ZW5pZW50bHkg
a2VlcCBhbmQgYWNjZXNzIHRlc3QtcmVsYXRlZCBvcHRpb25zIGluIGEgYGB0ZXN0YGAKKyAgc3Vi
ZGlyIGFuZCBzdGlsbCBhZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisKKy0gZml4IGlzc3VlNjc6
IG5ldyBzdXBlci1zaG9ydCB0cmFjZWJhY2stcHJpbnRpbmcgb3B0aW9uOiAiLS10Yj1saW5lIiB3
aWxsIHByaW50IGEgc2luZ2xlIGxpbmUgZm9yIGVhY2ggZmFpbGluZyAocHl0aG9uKSB0ZXN0IGlu
ZGljYXRpbmcgaXRzIGZpbGVuYW1lLCBsaW5lbm8gYW5kIHRoZSBmYWlsdXJlIHZhbHVlCisKKy0g
Zml4IGlzc3VlNzg6IGFsd2F5cyBjYWxsIHB5dGhvbi1sZXZlbCB0ZWFyZG93biBmdW5jdGlvbnMg
ZXZlbiBpZiB0aGUKKyAgYWNjb3JkaW5nIHNldHVwIGZhaWxlZC4gIFRoaXMgaW5jbHVkZXMgcmVm
aW5lbWVudHMgZm9yIGNhbGxpbmcgc2V0dXBfbW9kdWxlL2NsYXNzIGZ1bmN0aW9ucworICB3aGlj
aCB3aWxsIG5vdyBvbmx5IGJlIGNhbGxlZCBvbmNlIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIGJl
aGF2aW91ciB3aGVyZSB0aGV5J2QgYmUgY2FsbGVkCisgIG11bHRpcGxlIHRpbWVzIGlmIHRoZXkg
cmFpc2UgYW4gZXhjZXB0aW9uIChpbmNsdWRpbmcgYSBTa2lwcGVkIGV4Y2VwdGlvbikuICBBbnkg
ZXhjZXB0aW9uCisgIHdpbGwgYmUgcmUtY29yZGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggYWxsIHRl
c3RzIGluIHRoZSBhY2NvcmRpbmcgbW9kdWxlL2NsYXNzIHNjb3BlLgorCistIGZpeCBpc3N1ZTYz
OiBhc3N1bWUgPDQwIGNvbHVtbnMgdG8gYmUgYSBib2d1cyB0ZXJtaW5hbCB3aWR0aCwgZGVmYXVs
dCB0byA4MAorCistIGZpeCBwZGIgZGVidWdnaW5nIHRvIGJlIGluIHRoZSBjb3JyZWN0IGZyYW1l
IG9uIHJhaXNlcy1yZWxhdGVkIGVycm9ycworCistIHVwZGF0ZSBhcGlwa2cucHkgdG8gZml4IGFu
IGlzc3VlIHdoZXJlIHJlY3Vyc2l2ZSBpbXBvcnRzIG1pZ2h0CisgIHVubmVjZXNzYXJpbHkgYnJl
YWsgaW1wb3J0aW5nCisKKy0gZml4IHBsdWdpbiBsaW5rcworCisxLjEuMSAoMjAwOS0xMS0yNCkK
Kz09PT09PT09PT09PT09PT09PQorCistIG1vdmVkIGRpc3QvbG9vcG9uZmFpbGluZyBmcm9tIHB5
LnRlc3QgY29yZSBpbnRvIGEgbmV3CisgIHNlcGFyYXRlbHkgcmVsZWFzZWQgcHl0ZXN0LXhkaXN0
IHBsdWdpbi4KKworLSBuZXcganVuaXR4bWwgcGx1Z2luOiAtLWp1bml0eG1sPXBhdGggd2lsbCBn
ZW5lcmF0ZSBhIGp1bml0IHN0eWxlIHhtbCBmaWxlCisgIHdoaWNoIGlzIHByb2Nlc3NhYmxlIGUu
Zy4gYnkgdGhlIEh1ZHNvbiBDSSBzeXN0ZW0uCisKKy0gbmV3IG9wdGlvbjogLS1nZW5zY3JpcHQ9
cGF0aCB3aWxsIGdlbmVyYXRlIGEgc3RhbmRhbG9uZSBweS50ZXN0IHNjcmlwdAorICB3aGljaCB3
aWxsIG5vdCBuZWVkIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkLiAgdGhhbmtzIHRvIFJhbGYgU2No
bWl0dC4KKworLSBuZXcgb3B0aW9uOiAtLWlnbm9yZSB3aWxsIHByZXZlbnQgc3BlY2lmaWVkIHBh
dGggZnJvbSBjb2xsZWN0aW9uLgorICBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLgor
CistIG5ldyBvcHRpb246IC0tY29uZmN1dGRpcj1kaXIgd2lsbCBtYWtlIHB5LnRlc3Qgb25seSBj
b25zaWRlciBjb25mdGVzdAorICBmaWxlcyB0aGF0IGFyZSByZWxhdGl2ZSB0byB0aGUgc3BlY2lm
aWVkIGRpci4KKworLSBuZXcgZnVuY2FyZzogInB5dGVzdGNvbmZpZyIgaXMgdGhlIHB5dGVzdCBj
b25maWcgb2JqZWN0IGZvciBhY2Nlc3MKKyAgdG8gY29tbWFuZCBsaW5lIGFyZ3MgYW5kIGNhbiBu
b3cgYmUgZWFzaWx5IHVzZWQgaW4gYSB0ZXN0LgorCistIGluc3RhbGwgYGBweS50ZXN0YGAgYW5k
IGBgcHkud2hpY2hgYCB3aXRoIGEgYGAtJFZFUlNJT05gYCBzdWZmaXggdG8KKyAgZGlzYW1iaWd1
YXRlIGJldHdlZW4gUHl0aG9uMywgcHl0aG9uMi5YLCBKeXRob24gYW5kIFB5UHkgaW5zdGFsbGVk
IHZlcnNpb25zLgorCistIG5ldyAicHl0ZXN0Y29uZmlnIiBmdW5jYXJnIGFsbG93cyBhY2Nlc3Mg
dG8gdGVzdCBjb25maWcgb2JqZWN0CisKKy0gbmV3ICJweXRlc3RfcmVwb3J0X2hlYWRlciIgaG9v
ayBjYW4gcmV0dXJuIGFkZGl0aW9uYWwgbGluZXMKKyAgdG8gYmUgZGlzcGxheWVkIGF0IHRoZSBo
ZWFkZXIgb2YgYSB0ZXN0IHJ1bi4KKworLSAoZXhwZXJpbWVudGFsKSBhbGxvdyAicHkudGVzdCBw
YXRoOjpuYW1lMTo6bmFtZTI6Oi4uLiIgZm9yIHBvaW50aW5nCisgIHRvIGEgdGVzdCB3aXRoaW4g
YSB0ZXN0IGNvbGxlY3Rpb24gZGlyZWN0bHkuICBUaGlzIG1pZ2h0IGV2ZW50dWFsbHkKKyAgZXZv
bHZlIGFzIGEgZnVsbCBzdWJzdGl0dXRlIHRvICItayIgc3BlY2lmaWNhdGlvbnMuCisKKy0gc3Ry
ZWFtbGluZWQgcGx1Z2luIGxvYWRpbmc6IG9yZGVyIGlzIG5vdyBhcyBkb2N1bWVudGVkIGluCisg
IGN1c3RvbWl6ZS5odG1sOiBzZXR1cHRvb2xzLCBFTlYsIGNvbW1hbmRsaW5lLCBjb25mdGVzdC4K
KyAgYWxzbyBzZXR1cHRvb2xzIGVudHJ5IHBvaW50IG5hbWVzIGFyZSB0dXJuZWQgdG8gY2Fub25p
Y2FsIG5hbWVzICgicHl0ZXN0XyoiKQorCistIGF1dG9tYXRpY2FsbHkgc2tpcCB0ZXN0cyB0aGF0
IG5lZWQgJ2NhcGZkJyBidXQgaGF2ZSBubyBvcy5kdXAKKworLSBhbGxvdyBweXRlc3RfZ2VuZXJh
dGVfdGVzdHMgdG8gYmUgZGVmaW5lZCBpbiBjbGFzc2VzIGFzIHdlbGwKKworLSBkZXByZWNhdGUg
dXNhZ2Ugb2YgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUgaW4gZmF2b3VyIG9mIHB5dGVzdG1hcmsKKy0g
ZGVwcmVjYXRlIGRlZmluaXRpb24gb2YgRGlyZWN0b3J5LCBNb2R1bGUsIENsYXNzIGFuZCBGdW5j
dGlvbiBub2RlcworICBpbiBjb25mdGVzdC5weSBmaWxlcy4gIFVzZSBweXRlc3QgY29sbGVjdCBo
b29rcyBpbnN0ZWFkLgorCistIGNvbGxlY3Rpb24vaXRlbSBub2RlIHNwZWNpZmljIHJ1bnRlc3Qv
Y29sbGVjdCBob29rcyBhcmUgb25seSBjYWxsZWQgZXhhY3RseQorICBvbiBtYXRjaGluZyBjb25m
dGVzdC5weSBmaWxlcywgaS5lLiBvbmVzIHdoaWNoIGFyZSBleGFjdGx5IGJlbG93CisgIHRoZSBm
aWxlc3lzdGVtIHBhdGggb2YgYW4gaXRlbQorCistIGNoYW5nZTogdGhlIGZpcnN0IHB5dGVzdF9j
b2xsZWN0X2RpcmVjdG9yeSBob29rIHRvIHJldHVybiBzb21ldGhpbmcKKyAgd2lsbCBub3cgcHJl
dmVudCBmdXJ0aGVyIGhvb2tzIHRvIGJlIGNhbGxlZC4KKworLSBjaGFuZ2U6IGZpZ2xlYWYgcGx1
Z2luIG5vdyByZXF1aXJlcyAtLWZpZ2xlYWYgdG8gcnVuLiAgQWxzbworICBjaGFuZ2UgaXRzIGxv
bmcgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gYmUgYSBiaXQgc2hvcnRlciAoc2VlIHB5LnRlc3Qg
LWgpLgorCistIGNoYW5nZTogcHl0ZXN0IGRvY3Rlc3QgcGx1Z2luIGlzIG5vdyBlbmFibGVkIGJ5
IGRlZmF1bHQgYW5kIGhhcyBhCisgIG5ldyBvcHRpb24gLS1kb2N0ZXN0LWdsb2IgdG8gc2V0IGEg
cGF0dGVybiBmb3IgZmlsZSBtYXRjaGVzLgorCistIGNoYW5nZTogcmVtb3ZlIGludGVybmFsIHB5
Ll8qIGhlbHBlciB2YXJzLCBvbmx5IGtlZXAgcHkuX3B5ZGlyCisKKy0gcm9idXN0aWZ5IGNhcHR1
cmluZyB0byBzdXJ2aXZlIGlmIGN1c3RvbSBweXRlc3RfcnVudGVzdF9zZXR1cAorICBjb2RlIGZh
aWxlZCBhbmQgcHJldmVudGVkIHRoZSBjYXB0dXJpbmcgc2V0dXAgY29kZSBmcm9tIHJ1bm5pbmcu
CisKKy0gbWFrZSBweS50ZXN0LiogaGVscGVycyBwcm92aWRlZCBieSBkZWZhdWx0IHBsdWdpbnMg
dmlzaWJsZSBlYXJseSAtCisgIHdvcmtzIHRyYW5zcGFyZW50bHkgYm90aCBmb3IgcHlkb2MgYW5k
IGZvciBpbnRlcmFjdGl2ZSBzZXNzaW9ucworICB3aGljaCB3aWxsIHJlZ3VsYXJseSBzZWUgZS5n
LiBweS50ZXN0Lm1hcmsgYW5kIHB5LnRlc3QuaW1wb3J0b3Jza2lwLgorCistIHNpbXBsaWZ5IGlu
dGVybmFsIHBsdWdpbiBtYW5hZ2VyIG1hY2hpbmVyeQorLSBzaW1wbGlmeSBpbnRlcm5hbCBjb2xs
ZWN0aW9uIHRyZWUgYnkgaW50cm9kdWNpbmcgYSBSb290Q29sbGVjdG9yIG5vZGUKKworLSBmaXgg
YXNzZXJ0IHJlaW50ZXJwcmVhdGlvbiB0aGF0IHNlZXMgYSBjYWxsIGNvbnRhaW5pbmcgImtleXdv
cmQ9Li4uIgorCistIGZpeCBpc3N1ZTY2OiBpbnZva2UgcHl0ZXN0X3Nlc3Npb25zdGFydCBhbmQg
cHl0ZXN0X3Nlc3Npb25maW5pc2gKKyAgaG9va3Mgb24gd29ya2VyIG5vZGVzIGR1cmluZyBkaXN0
LXRlc3RpbmcsIHJlcG9ydCBtb2R1bGUvc2Vzc2lvbiB0ZWFyZG93bgorICBob29rcyBjb3JyZWN0
bHkuCisKKy0gZml4IGlzc3VlNjU6IHByb3Blcmx5IGhhbmRsZSBkaXN0LXRlc3RpbmcgaWYgbm8K
KyAgZXhlY25ldC9weSBsaWIgaW5zdGFsbGVkIHJlbW90ZWx5LgorCistIHNraXAgc29tZSBpbnN0
YWxsLXRlc3RzIGlmIG5vIGV4ZWNuZXQgaXMgYXZhaWxhYmxlCisKKy0gZml4IGRvY3MsIGZpeCBp
bnRlcm5hbCBiaW4vIHNjcmlwdCBnZW5lcmF0aW9uCisKKworMS4xLjAgKDIwMDktMTEtMDUpCis9
PT09PT09PT09PT09PT09PT0KKworLSBpbnRyb2R1Y2UgYXV0b21hdGljIHBsdWdpbiByZWdpc3Ry
YXRpb24gdmlhICdweXRlc3QxMScKKyAgZW50cnlwb2ludHMgdmlhIHNldHVwdG9vbHMnIHBrZ19y
ZXNvdXJjZXMuaXRlcl9lbnRyeV9wb2ludHMKKworLSBmaXggcHkudGVzdCBkaXN0LXRlc3Rpbmcg
dG8gd29yayB3aXRoIGV4ZWNuZXQgPj0gMS4wLjBiNAorCistIHJlLWludHJvZHVjZSBweS50ZXN0
LmNtZGxpbmUubWFpbigpIGZvciBiZXR0ZXIgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorCistIHN2
biBwYXRoczogZml4IGEgYnVnIHdpdGggcGF0aC5jaGVjayh2ZXJzaW9uZWQ9VHJ1ZSkgZm9yIHN2
biBwYXRocywKKyAgYWxsb3cgJyUnIGluIHN2biBwYXRocywgbWFrZSBzdm53Yy51cGRhdGUoKSBk
ZWZhdWx0IHRvIGludGVyYWN0aXZlIG1vZGUKKyAgbGlrZSBpbiAxLjAueCBhbmQgYWRkIHN2bndj
LnVwZGF0ZShpbnRlcmFjdGl2ZT1GYWxzZSkgdG8gaW5oaWJpdCBpbnRlcmFjdGlvbi4KKworLSBy
ZWZpbmUgZGlzdHJpYnV0ZWQgdGFyYmFsbCB0byBjb250YWluIHRlc3QgYW5kIG5vIHB5YyBmaWxl
cworCistIHRyeSBoYXJkZXIgdG8gaGF2ZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgcHkuY29t
cGF0LiogYWNjZXNzZXMKKyAgcmVwb3J0IGEgY29ycmVjdCBsb2NhdGlvbgorCisxLjAuMworPT09
PT0KKworKiBhZGp1c3QgYW5kIGltcHJvdmUgZG9jcworCisqIHJlbW92ZSBweS5yZXN0IHRvb2wg
YW5kIGludGVybmFsIG5hbWVzcGFjZSAtIGl0IHdhcworICBuZXZlciByZWFsbHkgYWR2ZXJ0aXNl
ZCBhbmQgY2FuIHN0aWxsIGJlIHVzZWQgd2l0aAorICB0aGUgb2xkIHJlbGVhc2UgaWYgbmVlZGVk
LiAgSWYgdGhlcmUgaXMgaW50ZXJlc3QKKyAgaXQgY291bGQgYmUgcmV2aXZlZCBpbnRvIGl0cyBv
d24gdG9vbCBpIGd1ZXNzLgorCisqIGZpeCBpc3N1ZTQ4IGFuZCBpc3N1ZTU5OiByYWlzZSBhbiBF
cnJvciBpZiB0aGUgbW9kdWxlCisgIGZyb20gYW4gaW1wb3J0ZWQgdGVzdCBmaWxlIGRvZXMgbm90
IHNlZW0gdG8gY29tZSBmcm9tCisgIHRoZSBmaWxlcGF0aCAtIGF2b2lkcyAic2FtZS1uYW1lIiBj
b25mdXNpb24gdGhhdCBoYXMKKyAgYmVlbiByZXBvcnRlZCByZXBlYXRlZGx5CisKKyogbWVyZ2Vk
IFJvbm55J3Mgbm9zZS1jb21wYXRpYmlsaXR5IGhhY2tzOiBub3cKKyAgbm9zZS1zdHlsZSBzZXR1
cF9tb2R1bGUoKSBhbmQgc2V0dXAoKSBmdW5jdGlvbnMgYXJlCisgIHN1cHBvcnRlZAorCisqIGlu
dHJvZHVjZSBnZW5lcmFsaXplZCBweS50ZXN0Lm1hcmsgZnVuY3Rpb24gbWFya2luZworCisqIHJl
c2h1ZmZsZSAvIHJlZmluZSBjb21tYW5kIGxpbmUgZ3JvdXBpbmcKKworKiBkZXByZWNhdGUgcGFy
c2VyLmFkZGdyb3VwIGluIGZhdm91ciBvZiBnZXRncm91cCB3aGljaCBjcmVhdGVzIG9wdGlvbiBn
cm91cAorCisqIGFkZCAtLXJlcG9ydCBjb21tYW5kIGxpbmUgb3B0aW9uIHRoYXQgYWxsb3dzIHRv
IGNvbnRyb2wgc2hvd2luZyBvZiBza2lwcGVkL3hmYWlsZWQgc2VjdGlvbnMKKworKiBnZW5lcmFs
aXplZCBza2lwcGluZzogYSBuZXcgd2F5IHRvIG1hcmsgcHl0aG9uIGZ1bmN0aW9ucyB3aXRoIHNr
aXBpZiBvciB4ZmFpbAorICBhdCBmdW5jdGlvbiwgY2xhc3MgYW5kIG1vZHVsZXMgbGV2ZWwgYmFz
ZWQgb24gcGxhdGZvcm0gb3Igc3lzLW1vZHVsZSBhdHRyaWJ1dGVzLgorCisqIGV4dGVuZCBweS50
ZXN0Lm1hcmsgZGVjb3JhdG9yIHRvIGFsbG93IGZvciBwb3NpdGlvbmFsIGFyZ3MKKworKiBpbnRy
b2R1Y2UgYW5kIHRlc3QgInB5LmNsZWFudXAgLWQiIHRvIHJlbW92ZSBlbXB0eSBkaXJlY3Rvcmll
cworCisqIGZpeCBpc3N1ZSAjNTkgLSByb2J1c3RpZnkgdW5pdHRlc3QgdGVzdCBjb2xsZWN0aW9u
CisKKyogbWFrZSBicHl0aG9uL2hlbHAgaW50ZXJhY3Rpb24gd29yayBieSBhZGRpbmcgYW4gX19h
bGxfXyBhdHRyaWJ1dGUKKyAgdG8gQXBpTW9kdWxlLCBjbGVhbnVwIGluaXRwa2cKKworKiB1c2Ug
TUlUIGxpY2Vuc2UgZm9yIHB5bGliLCBhZGQgc29tZSBjb250cmlidXRvcnMKKworKiByZW1vdmUg
cHkuZXhlY25ldCBjb2RlIGFuZCBzdWJzdGl0dXRlIGFsbCB1c2FnZXMgd2l0aCAnZXhlY25ldCcg
cHJvcGVyCisKKyogZml4IGlzc3VlNTAgLSBjYWNoZWRfc2V0dXAgbm93IGNhY2hlcyBtb3JlIHRv
IGV4cGVjdGF0aW9ucworICBmb3IgdGVzdCBmdW5jdGlvbnMgd2l0aCBtdWx0aXBsZSBhcmd1bWVu
dHMuCisKKyogbWVyZ2UgSmFya28ncyBmaXhlcywgaXNzdWUgIzQ1IGFuZCAjNDYKKworKiBhZGQg
dGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHBhdGggZm9yIHB5Lmxvb2t1cCB0byBzZWFyY2ggaW4K
KworKiBmaXggYSBmdW5jYXJnIGNhY2hlZF9zZXR1cCBidWcgcHJvYmFibHkgb25seSBvY2N1cnJp
bmcKKyAgaW4gZGlzdHJpYnV0ZWQgdGVzdGluZyBhbmQgIm1vZHVsZSIgc2NvcGUgd2l0aCB0ZWFy
ZG93bi4KKworKiBtYW55IGZpeGVzIGFuZCBjaGFuZ2VzIGZvciBtYWtpbmcgdGhlIGNvZGUgYmFz
ZSBweXRob24zIGNvbXBhdGlibGUsCisgIG1hbnkgdGhhbmtzIHRvIEJlbmphbWluIFBldGVyc29u
IGZvciBoZWxwaW5nIHdpdGggdGhpcy4KKworKiBjb25zb2xpZGF0ZSBidWlsdGlucyBpbXBsZW1l
bnRhdGlvbiB0byBiZSBjb21wYXRpYmxlIHdpdGggPj0yLjMsCisgIGFkZCBoZWxwZXJzIHRvIGVh
c2Uga2VlcGluZyAyIGFuZCAzayBjb21wYXRpYmxlIGNvZGUKKworKiBkZXByZWNhdGUgcHkuY29t
cGF0LmRvY3Rlc3R8c3VicHJvY2Vzc3x0ZXh0d3JhcHxvcHRwYXJzZQorCisqIGRlcHJlY2F0ZSBw
eS5tYWdpYy5hdXRvcGF0aCwgcmVtb3ZlIHB5L21hZ2ljIGRpcmVjdG9yeQorCisqIG1vdmUgcHl0
ZXN0IGFzc2VydGlvbiBoYW5kbGluZyB0byBweS9jb2RlIGFuZCBhIHB5dGVzdF9hc3NlcnRpb24K
KyAgcGx1Z2luLCBhZGQgIi0tbm8tYXNzZXJ0IiBvcHRpb24sIGRlcHJlY2F0ZSBweS5tYWdpYyBu
YW1lc3BhY2VzCisgIGluIGZhdm91ciBvZiAobGVzcykgcHkuY29kZSBvbmVzLgorCisqIGNvbnNv
bGlkYXRlIGFuZCBjbGVhbnVwIHB5L2NvZGUgY2xhc3NlcyBhbmQgZmlsZXMKKworKiBjbGVhbnVw
IHB5L21pc2MsIG1vdmUgdGVzdHMgdG8gYmluLWZvci1kaXN0CisKKyogaW50cm9kdWNlIGRlbGF0
dHIvZGVsaXRlbS9kZWxlbnYgbWV0aG9kcyB0byBweS50ZXN0J3MgbW9ua2V5cGF0Y2ggZnVuY2Fy
ZworCisqIGNvbnNvbGlkYXRlIHB5LmxvZyBpbXBsZW1lbnRhdGlvbiwgcmVtb3ZlIG9sZCBhcHBy
b2FjaC4KKworKiBpbnRyb2R1Y2UgcHkuaW8uVGV4dElPIGFuZCBweS5pby5CeXRlc0lPIGZvciBk
aXN0aW5ndWlzaGluZyBiZXR3ZWVuCisgIHRleHQvdW5pY29kZSBhbmQgYnl0ZS1zdHJlYW1zICh1
c2VzIHVuZGVybHlpbmcgc3RhbmRhcmQgbGliIGlvLioKKyAgaWYgYXZhaWxhYmxlKQorCisqIG1h
a2UgcHkudW5pdHRlc3RfY29udmVydCBoZWxwZXIgc2NyaXB0IGF2YWlsYWJsZSB3aGljaCBjb252
ZXJ0cyAidW5pdHRlc3QucHkiCisgIHN0eWxlIGZpbGVzIGludG8gdGhlIHNpbXBsZXIgYXNzZXJ0
L2RpcmVjdC10ZXN0LWNsYXNzZXMgcHkudGVzdC9ub3NldGVzdHMKKyAgc3R5bGUuICBUaGUgc2Ny
aXB0IHdhcyB3cml0dGVuIGJ5IExhdXJhIENyZWlnaHRvbi4KKworKiBzaW1wbGlmaWVkIGludGVy
bmFsIGxvY2FscGF0aCBpbXBsZW1lbnRhdGlvbgorCisxLjAuMiAoMjAwOS0wOC0yNykKKz09PT09
PT09PT09PT09PT09PQorCisqIGZpeGluZyBwYWNrYWdpbmcgaXNzdWVzLCB0cmlnZ2VyZWQgYnkg
ZmVkb3JhIHJlZGhhdCBwYWNrYWdpbmcsCisgIGFsc28gYWRkZWQgZG9jLCBleGFtcGxlcyBhbmQg
Y29udHJpYiBkaXJzIHRvIHRoZSB0YXJiYWxsLgorCisqIGFkZGVkIGEgZG9jdW1lbnRhdGlvbiBs
aW5rIHRvIHRoZSBuZXcgZGphbmdvIHBsdWdpbi4KKworMS4wLjEgKDIwMDktMDgtMTkpCis9PT09
PT09PT09PT09PT09PT0KKworKiBhZGRlZCBhICdweXRlc3Rfbm9zZScgcGx1Z2luIHdoaWNoIGhh
bmRsZXMgbm9zZS5Ta2lwVGVzdCwKKyAgbm9zZS1zdHlsZSBmdW5jdGlvbi9tZXRob2QvZ2VuZXJh
dG9yIHNldHVwL3RlYXJkb3duIGFuZAorICB0cmllcyB0byByZXBvcnQgZnVuY3Rpb25zIGNvcnJl
Y3RseS4KKworKiBjYXB0dXJpbmcgb2YgdW5pY29kZSB3cml0ZXMgb3IgZW5jb2RlZCBzdHJpbmdz
IHRvIHN5cy5zdGRvdXQvZXJyCisgIHdvcmsgYmV0dGVyLCBhbHNvIHRlcm1pbmFsd3JpdGluZyB3
YXMgYWRhcHRlZCBhbmQgc29tZXdoYXQKKyAgdW5pZmllZCBiZXR3ZWVuIHdpbmRvd3MgYW5kIGxp
bnV4LgorCisqIGltcHJvdmVkIGRvY3VtZW50YXRpb24gbGF5b3V0IGFuZCBjb250ZW50IGEgbG90
CisKKyogYWRkZWQgYSAiLS1oZWxwLWNvbmZpZyIgb3B0aW9uIHRvIHNob3cgY29uZnRlc3QucHkg
LyBFTlYtdmFyIG5hbWVzIGZvcgorICBhbGwgbG9uZ29wdCBjbWRsaW5lIG9wdGlvbnMsIGFuZCBz
b21lIHNwZWNpYWwgY29uZnRlc3QucHkgdmFyaWFibGVzLgorICByZW5hbWVkICdjb25mX2NhcHR1
cmUnIGNvbmZ0ZXN0IHNldHRpbmcgdG8gJ29wdGlvbl9jYXB0dXJlJyBhY2NvcmRpbmdseS4KKwor
KiBmaXggaXNzdWUgIzI3OiBiZXR0ZXIgcmVwb3J0aW5nIG9uIG5vbi1jb2xsZWN0YWJsZSBpdGVt
cyBnaXZlbiBvbiBjb21tYW5kbGluZQorICAoZS5nLiBweWMgZmlsZXMpCisKKyogZml4IGlzc3Vl
ICMzMzogYWRkZWQgLS12ZXJzaW9uIGZsYWcgKHRoYW5rcyBCZW5qYW1pbiBQZXRlcnNvbikKKwor
KiBmaXggaXNzdWUgIzMyOiBhZGRpbmcgc3VwcG9ydCBmb3IgImluY29tcGxldGUiIHBhdGhzIHRv
IHdjcGF0aC5zdGF0dXMoKQorCisqICJUZXN0IiBwcmVmaXhlZCBjbGFzc2VzIGFyZSAqbm90KiBj
b2xsZWN0ZWQgYnkgZGVmYXVsdCBhbnltb3JlIGlmIHRoZXkKKyAgaGF2ZSBhbiBfX2luaXRfXyBt
ZXRob2QKKworKiBtb25rZXlwYXRjaCBzZXRlbnYoKSBub3cgYWNjZXB0cyBhICJwcmVwZW5kIiBw
YXJhbWV0ZXIKKworKiBpbXByb3ZlZCByZXBvcnRpbmcgb2YgY29sbGVjdGlvbiBlcnJvciB0cmFj
ZWJhY2tzCisKKyogc2ltcGxpZmllZCBtdWx0aWNhbGwgbWVjaGFuaXNtIGFuZCBwbHVnaW4gYXJj
aGl0ZWN0dXJlLAorICByZW5hbWVkIHNvbWUgaW50ZXJuYWwgbWV0aG9kcyBhbmQgYXJnbmFtZXMK
KworMS4wLjAgKDIwMDktMDgtMDQpCis9PT09PT09PT09PT09PT09PT0KKworKiBtb3JlIHRlcnNl
IHJlcG9ydGluZyB0cnkgdG8gc2hvdyBmaWxlc3lzdGVtIHBhdGggcmVsYXRpdmVseSB0byBjdXJy
ZW50IGRpcgorKiBpbXByb3ZlIHhmYWlsIG91dHB1dCBhIGJpdAorCisxLjAuMGI5ICgyMDA5LTA3
LTMxKQorPT09PT09PT09PT09PT09PT09PT0KKworKiBjbGVhbmx5IGhhbmRsZSBhbmQgcmVwb3J0
IGZpbmFsIHRlYXJkb3duIG9mIHRlc3Qgc2V0dXAKKworKiBmaXggc3ZuLTEuNiBjb21wYXQgaXNz
dWUgd2l0aCBweS5wYXRoLnN2bndjKCkudmVyc2lvbmVkKCkKKyAgKHRoYW5rcyBXb3V0ZXIgVmFu
ZGVuIEhvdmUpCisKKyogc2V0dXAvdGVhcmRvd24gb3IgY29sbGVjdGlvbiBwcm9ibGVtcyBub3cg
c2hvdyBhcyBFUlJPUnMKKyAgb3Igd2l0aCBiaWcgIkUiJ3MgaW4gdGhlIHByb2dyZXNzIGxpbmVz
LiAgdGhleSBhcmUgcmVwb3J0ZWQKKyAgYW5kIGNvdW50ZWQgc2VwYXJhdGVseS4KKworKiBkaXN0
LXRlc3Rpbmc6IHByb3Blcmx5IGhhbmRsZSB0ZXN0IGl0ZW1zIHRoYXQgZ2V0IGxvY2FsbHkKKyAg
Y29sbGVjdGVkIGJ1dCBjYW5ub3QgYmUgY29sbGVjdGVkIG9uIHRoZSByZW1vdGUgc2lkZSAtIG9m
dGVuCisgIGR1ZSB0byBwbGF0Zm9ybS9kZXBlbmRlbmN5IHJlYXNvbnMKKworKiBzaW1wbGlmaWVk
IHB5LnRlc3QubWFyayBBUEkgLSBzZWUga2V5d29yZCBwbHVnaW4gZG9jdW1lbnRhdGlvbgorCisq
IGludGVncmF0ZSBiZXR0ZXIgd2l0aCBsb2dnaW5nOiBjYXB0dXJpbmcgbm93IGJ5IGRlZmF1bHQg
Y2FwdHVyZXMKKyAgdGVzdCBmdW5jdGlvbnMgYW5kIHRoZWlyIGltbWVkaWF0ZSBzZXR1cC90ZWFy
ZG93biBpbiBhIHNpbmdsZSBzdHJlYW0KKworKiBjYXBzeXMgYW5kIGNhcGZkIGZ1bmNhcmdzIG5v
dyBoYXZlIGEgcmVhZG91dGVycigpIGFuZCBhIGNsb3NlKCkgbWV0aG9kCisgICh1bmRlcmx5aW5n
bHkgcHkuaW8uU3RkQ2FwdHVyZS9GRCBvYmplY3RzIGFyZSB1c2VkIHdoaWNoIGdyZXcgYQorICBy
ZWFkb3V0ZXJyKCkgbWV0aG9kIGFzIHdlbGwgdG8gcmV0dXJuIHNuYXBzaG90cyBvZiBjYXB0dXJl
ZCBvdXQvZXJyKQorCisqIG1ha2UgYXNzZXJ0LXJlaW50ZXJwcmV0YXRpb24gd29yayBiZXR0ZXIg
d2l0aCBjb21wYXJpc29ucyBub3QKKyAgcmV0dXJuaW5nIGJvb2xzIChyZXBvcnRlZCB3aXRoIG51
bXB5IGZyb20gdGhhbmtzIG1hY2llaiBmaWphbGtvd3NraSkKKworKiByZXdvcmtlZCBwZXItdGVz
dCBvdXRwdXQgY2FwdHVyaW5nIGludG8gdGhlIHB5dGVzdF9pb2NhcHR1cmUucHkgcGx1Z2luCisg
IGFuZCB0aHVzIHJlbW92ZWQgY2FwdHVyaW5nIGNvZGUgZnJvbSBjb25maWcgb2JqZWN0CisKKyog
aXRlbS5yZXByX2ZhaWx1cmUoZXhjaW5mbykgaW5zdGVhZCBvZiBpdGVtLnJlcHJfZmFpbHVyZShl
eGNpbmZvLCBvdXRlcnIpCisKKworMS4wLjBiOCAoMjAwOS0wNy0yMikKKz09PT09PT09PT09PT09
PT09PT09CisKKyogcHl0ZXN0X3VuaXR0ZXN0LXBsdWdpbiBpcyBub3cgZW5hYmxlZCBieSBkZWZh
dWx0CisKKyogaW50cm9kdWNlZCBweXRlc3Rfa2V5Ym9hcmRpbnRlcnJ1cHQgaG9vayBhbmQKKyAg
cmVmaW5lZCBweXRlc3Rfc2Vzc2lvbmZpbmlzaCBob29rZWQsIGFkZGVkIHRlc3RzLgorCisqIHdv
cmthcm91bmQgYSBidWdneSBsb2dnaW5nIG1vZHVsZSBpbnRlcmFjdGlvbiAoImNsb3NpbmcgYWxy
ZWFkeSBjbG9zZWQKKyAgZmlsZXMiKS4gIFRoYW5rcyB0byBTcmlkaGFyIFJhdG5ha3VtYXIgZm9y
IHRyaWdnZXJpbmcuCisKKyogaWYgcGx1Z2lucyB1c2UgInB5LnRlc3QuaW1wb3J0b3Jza2lwIiBm
b3IgaW1wb3J0aW5nCisgIGEgZGVwZW5kZW5jeSBvbmx5IGEgd2FybmluZyB3aWxsIGJlIGlzc3Vl
ZCBpbnN0ZWFkCisgIG9mIGV4aXRpbmcgdGhlIHRlc3RpbmcgcHJvY2Vzcy4KKworKiBtYW55IGlt
cHJvdmVtZW50cyB0byBkb2NzOgorICAtIHJlZmluZWQgZnVuY2FyZ3MgZG9jICwgdXNlIHRoZSB0
ZXJtICJmYWN0b3J5IiBpbnN0ZWFkIG9mICJwcm92aWRlciIKKyAgLSBhZGRlZCBhIG5ldyB0YWxr
L3R1dG9yaWFsIGRvYyBwYWdlCisgIC0gYmV0dGVyIGRvd25sb2FkIHBhZ2UKKyAgLSBiZXR0ZXIg
cGx1Z2luIGRvY3N0cmluZ3MKKyAgLSBhZGRlZCBuZXcgcGx1Z2lucyBwYWdlIGFuZCBhdXRvbWF0
aWMgZG9jIGdlbmVyYXRpb24gc2NyaXB0CisKKyogZml4ZWQgdGVhcmRvd24gcHJvYmxlbSByZWxh
dGVkIHRvIHBhcnRpYWxseSBmYWlsaW5nIGZ1bmNhcmcgc2V0dXBzCisgICh0aGFua3MgTXJUb3Bm
IGZvciByZXBvcnRpbmcpLCAicHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24iIGlzIG5vdworICBhbHdh
eXMgaW52b2tlZCBldmVuIGlmIHRoZSAicHl0ZXN0X3J1bnRlc3Rfc2V0dXAiIGZhaWxlZC4KKwor
KiB0d2Vha2VkIGRvY3Rlc3Qgb3V0cHV0IGZvciBkb2NzdHJpbmdzIGluIHB5IG1vZHVsZXMsCisg
IHRoYW5rcyBSYWRvbWlyLgorCisxLjAuMGI3Cis9PT09PT09CisKKyogcmVuYW1lZCBweS50ZXN0
LnhmYWlsIGJhY2sgdG8gcHkudGVzdC5tYXJrLnhmYWlsIHRvIGF2b2lkCisgIHR3byB3YXlzIHRv
IGRlY29yYXRlIGZvciB4ZmFpbAorCisqIHJlLWFkZGVkIHB5LnRlc3QubWFyayBkZWNvcmF0b3Ig
Zm9yIHNldHRpbmcga2V5d29yZHMgb24gZnVuY3Rpb25zCisgIChpdCB3YXMgYWN0dWFsbHkgZG9j
dW1lbnRlZCBzbyByZW1vdmluZyBpdCB3YXMgbm90IG5pY2UpCisKKyogcmVtb3ZlIHNjb3BlLWFy
Z3VtZW50IGZyb20gcmVxdWVzdC5hZGRmaW5hbGl6ZXIoKSBiZWNhdXNlCisgIHJlcXVlc3QuY2Fj
aGVkX3NldHVwIGhhcyB0aGUgc2NvcGUgYXJnLiBUT09XVERJLgorCisqIHBlcmZvcm0gc2V0dXAg
ZmluYWxpemF0aW9uIGJlZm9yZSByZXBvcnRpbmcgZmFpbHVyZXMKKworKiBhcHBseSBtb2RpZmll
ZCBwYXRjaGVzIGZyb20gQW5kcmVhcyBLbG9lY2tuZXIgdG8gYWxsb3cKKyAgdGVzdCBmdW5jdGlv
bnMgdG8gaGF2ZSBubyBmdW5jX2NvZGUgKCMyMikgYW5kIHRvIG1ha2UKKyAgIi1rIiBhbmQgZnVu
Y3Rpb24ga2V5d29yZHMgd29yayAgKCMyMCkKKworKiBhcHBseSBwYXRjaCBmcm9tIERhbmllbCBQ
ZW9semxlaXRobmVyIChpc3N1ZSAjMjMpCisKKyogcmVzb2x2ZSBpc3N1ZSAjMTgsIG11bHRpcHJv
Y2Vzc2luZy5NYW5hZ2VyKCkgYW5kCisgIHJlZGlyZWN0aW9uIGNsYXNoCisKKyogbWFrZSBfX25h
bWVfXyA9PSAiX19jaGFubmVsZXhlY19fIiBmb3IgcmVtb3RlX2V4ZWMgY29kZQorCisxLjAuMGIz
ICgyMDA5LTA2LTE5KQorPT09PT09PT09PT09PT09PT09PT0KKworKiBwbHVnaW4gY2xhc3NlcyBh
cmUgcmVtb3ZlZDogb25lIG5vdyBkZWZpbmVzCisgIGhvb2tzIGRpcmVjdGx5IGluIGNvbmZ0ZXN0
LnB5IG9yIGdsb2JhbCBweXRlc3RfKi5weQorICBmaWxlcy4KKworKiBhZGRlZCBuZXcgcHl0ZXN0
X25hbWVzcGFjZShjb25maWcpIGhvb2sgdGhhdCBhbGxvd3MKKyAgdG8gaW5qZWN0IGhlbHBlcnMg
ZGlyZWN0bHkgdG8gdGhlIHB5LnRlc3QuKiBuYW1lc3BhY2UuCisKKyogZG9jdW1lbnRlZCBhbmQg
cmVmaW5lZCBtYW55IGhvb2tzCisKKyogYWRkZWQgbmV3IHN0eWxlIG9mIGdlbmVyYXRpdmUgdGVz
dHMgdmlhCisgIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyBob29rIHRoYXQgaW50ZWdyYXRlcworICB3
ZWxsIHdpdGggZnVuY3Rpb24gYXJndW1lbnRzLgorCisKKzEuMC4wYjEKKz09PT09PT0KKworKiBp
bnRyb2R1Y2VkIG5ldyAiZnVuY2FyZyIgc2V0dXAgbWV0aG9kLAorICBzZWUgZG9jL3Rlc3QvZnVu
Y2FyZy50eHQKKworKiBpbnRyb2R1Y2VkIHBsdWdpbiBhcmNoaXRlY3R1cmUgYW5kIG1hbnkKKyAg
bmV3IHB5LnRlc3QgcGx1Z2lucywgc2VlCisgIGRvYy90ZXN0L3BsdWdpbnMudHh0CisKKyogdGVh
cmRvd25fbWV0aG9kIGlzIG5vdyBndWFyYW50ZWVkIHRvIGdldAorICBjYWxsZWQgYWZ0ZXIgYSB0
ZXN0IG1ldGhvZCBoYXMgcnVuLgorCisqIG5ldyBtZXRob2Q6IHB5LnRlc3QuaW1wb3J0b3Jza2lw
KG1vZCxtaW52ZXJzaW9uKQorICB3aWxsIGVpdGhlciBpbXBvcnQgb3IgY2FsbCBweS50ZXN0LnNr
aXAoKQorCisqIGNvbXBsZXRlbHkgcmV2aXNlZCBpbnRlcm5hbCBweS50ZXN0IGFyY2hpdGVjdHVy
ZQorCisqIG5ldyBweS5wcm9jZXNzLkZvcmtlZEZ1bmMgb2JqZWN0IGFsbG93aW5nIHRvCisgIGZv
cmsgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24gdG8gYSBzdWIgcHJvY2VzcworICBhbmQgZ2V0dGlu
ZyBhIHJlc3VsdCBiYWNrLgorCitYWFggbG90cyBvZiB0aGluZ3MgbWlzc2luZyBoZXJlIFhYWAor
CiswLjkuMgorPT09PT0KKworKiByZWZpbmVkIGluc3RhbGxhdGlvbiBhbmQgbWV0YWRhdGEsIGNy
ZWF0ZWQgbmV3IHNldHVwLnB5LAorICBub3cgYmFzZWQgb24gc2V0dXB0b29scy9lel9zZXR1cCAo
dGhhbmtzIHRvIFJhbGYgU2NobWl0dAorICBmb3IgaGlzIHN1cHBvcnQpLgorCisqIGltcHJvdmVk
IHRoZSB3YXkgb2YgbWFraW5nIHB5Liogc2NyaXB0cyBhdmFpbGFibGUgaW4KKyAgd2luZG93cyBl
bnZpcm9ubWVudHMsIHRoZXkgYXJlIG5vdyBhZGRlZCB0byB0aGUKKyAgU2NyaXB0cyBkaXJlY3Rv
cnkgYXMgIi5jbWQiIGZpbGVzLgorCisqIHB5LnBhdGguc3Zud2Muc3RhdHVzKCkgbm93IGlzIG1v
cmUgY29tcGxldGUgYW5kCisgIHVzZXMgeG1sIG91dHB1dCBmcm9tIHRoZSAnc3ZuJyBjb21tYW5k
IGlmIGF2YWlsYWJsZQorICAoR3VpZG8gV2VzZG9ycCkKKworKiBmaXggZm9yIHB5LnBhdGguc3Zu
KiB0byB3b3JrIHdpdGggc3ZuIDEuNQorICAoQ2hyaXMgTGFtYikKKworKiBmaXggcGF0aC5yZWx0
byhvdGhlcnBhdGgpIG1ldGhvZCBvbiB3aW5kb3dzIHRvCisgIHVzZSBub3JtY2FzZSBmb3IgY2hl
Y2tpbmcgaWYgYSBwYXRoIGlzIHJlbGF0aXZlLgorCisqIHB5LnRlc3QncyB0cmFjZWJhY2sgaXMg
YmV0dGVyIHBhcnNlYWJsZSBmcm9tIGVkaXRvcnMKKyAgKGZvbGxvd3MgdGhlIGZpbGVuYW1lczpM
SU5FTk86IE1TRyBjb252ZW50aW9uKQorICAodGhhbmtzIHRvIE9zbW8gU2Fsb21hYSkKKworKiBm
aXggdG8gamF2YXNjcmlwdC1nZW5lcmF0aW9uLCAicHkudGVzdCAtLXJ1bmJyb3dzZXIiCisgIHNo
b3VsZCB3b3JrIG1vcmUgcmVsaWFibHkgbm93CisKKyogcmVtb3ZlZCBwcmV2aW91c2x5IGFjY2lk
ZW50YWxseSBhZGRlZAorICBweS50ZXN0LmJyb2tlbiBhbmQgcHkudGVzdC5ub3RpbXBsZW1lbnRl
ZCBoZWxwZXJzLgorCisqIHRoZXJlIG5vdyBpcyBhIHB5Ll9fdmVyc2lvbl9fIGF0dHJpYnV0ZQor
CiswLjkuMQorPT09PT0KKworVGhpcyBpcyBhIGZhaXJseSBjb21wbGV0ZSBsaXN0IG9mIHYwLjku
MSwgd2hpY2ggY2FuCitzZXJ2ZSBhcyBhIHJlZmVyZW5jZSBmb3IgZGV2ZWxvcGVycy4KKworKiBh
bGxvd2luZyArIHNpZ25zIGluIHB5LnBhdGguc3ZuIHVybHMgWzM5MTA2XQorKiBmaXhlZCBzdXBw
b3J0IGZvciBGYWlsZWQgZXhjZXB0aW9ucyB3aXRob3V0IGV4Y2luZm8gaW4gcHkudGVzdCBbMzkz
NDBdCisqIGFkZGVkIHN1cHBvcnQgZm9yIGtpbGxpbmcgcHJvY2Vzc2VzIGZvciBXaW5kb3dzIChh
cyB3ZWxsIGFzIHBsYXRmb3JtcyB0aGF0CisgIHN1cHBvcnQgb3Mua2lsbCkgaW4gcHkubWlzYy5r
aWxscHJvYyBbMzk2NTVdCisqIGFkZGVkIHNldHVwL3RlYXJkb3duIGZvciBnZW5lcmF0aXZlIHRl
c3RzIHRvIHB5LnRlc3QgWzQwNzAyXQorKiBhZGRlZCBkZXRlY3Rpb24gb2YgRkFJTEVEIFRPIExP
QUQgTU9EVUxFIHRvIHB5LnRlc3QgWzQwNzAzLCA0MDczOCwgNDA3MzldCisqIGZpeGVkIHByb2Js
ZW0gd2l0aCBjYWxsaW5nIC5yZW1vdmUoKSBvbiB3Y3BhdGhzIG9mIG5vbi12ZXJzaW9uZWQgZmls
ZXMgaW4KKyAgcHkucGF0aCBbNDQyNDhdCisqIGZpeGVkIHNvbWUgaW1wb3J0IGFuZCBpbmhlcml0
YW5jZSBpc3N1ZXMgaW4gcHkudGVzdCBbNDE0ODAsIDQ0NjQ4LCA0NDY1NV0KKyogZmFpbCB0byBy
dW4gZ3JlZW5sZXQgdGVzdHMgd2hlbiBweXB5IGlzIGF2YWlsYWJsZSwgYnV0IHdpdGhvdXQgc3Rh
Y2tsZXNzCisgIFs0NTI5NF0KKyogc21hbGwgZml4ZXMgaW4gcnNlc3Npb24gdGVzdHMgWzQ1Mjk1
XQorKiBmaXhlZCBpc3N1ZSB3aXRoIDIuNSB0eXBlIHJlcHJlc2VudGF0aW9ucyBpbiBweS50ZXN0
IFs0NTQ4MywgNDU0ODRdCisqIG1hZGUgdGhhdCBpbnRlcm5hbCByZXBvcnRpbmcgaXNzdWVzIGRp
c3BsYXlpbmcgaXMgZG9uZSBhdG9taWNhbGx5IGluIHB5LnRlc3QKKyAgWzQ1NTE4XQorKiBtYWRl
IHRoYXQgbm9uLWV4aXN0aW5nIGZpbGVzIGFyZSBpZ25vcmVkIGJ5IHRoZSBweS5sb29rdXAgc2Ny
aXB0IFs0NTUxOV0KKyogaW1wcm92ZWQgZXhjZXB0aW9uIG5hbWUgY3JlYXRpb24gaW4gcHkudGVz
dCBbNDU1MzVdCisqIG1hZGUgdGhhdCBsZXNzIHRocmVhZHMgYXJlIHVzZWQgaW4gZXhlY25ldCBb
bWVyZ2UgaW4gNDU1MzldCisqIHJlbW92ZWQgbG9jayByZXF1aXJlZCBmb3IgYXRvbWljIHJlcG9y
dGluZyBpc3N1ZSBkaXNwbGF5aW5nIGluIHB5LnRlc3QKKyAgWzQ1NTQ1XQorKiByZW1vdmVkIGds
b2JhbHMgZnJvbSBleGVjbmV0IFs0NTU0MSwgNDU1NDddCisqIHJlZmFjdG9yZWQgY2xlYW51cCBt
ZWNoYW5pY3MsIG1hZGUgdGhhdCBzZXREYWVtb24gaXMgc2V0IHRvIDEgdG8gbWFrZSBhdGV4aXQK
KyAgZ2V0IGNhbGxlZCBpbiAyLjUgKHB5LmV4ZWNuZXQpIFs0NTU0OF0KKyogZml4ZWQgYnVnIGlu
IGpvaW5pbmcgdGhyZWFkcyBpbiBweS5leGVjbmV0J3Mgc2VydmVtYWluIFs0NTU0OV0KKyogcmVm
YWN0b3JlZCBweS50ZXN0LnJzZXNzaW9uIHRlc3RzIHRvIG5vdCByZWx5IG9uIGV4YWN0IG91dHB1
dCBmb3JtYXQgYW55bW9yZQorICBbNDU2NDZdCisqIHVzaW5nIHJlcHIoKSBvbiB0ZXN0IG91dGNv
bWUgWzQ1NjQ3XQorKiBhZGRlZCAnUmVhc29uJyBjbGFzc2VzIGZvciBweS50ZXN0LnNraXAoKSBb
NDU2NDgsIDQ1NjQ5XQorKiBraWxsZWQgc29tZSB1bm5lY2Vzc2FyeSBzYW5pdHkgY2hlY2sgaW4g
cHkudGVzdC5jb2xsZWN0IFs0NTY1NV0KKyogYXZvaWQgdXNpbmcgb3MudG1wZmlsZSgpIGluIHB5
LmlvLmZkY2FwdHVyZSBiZWNhdXNlIG9uIFdpbmRvd3MgaXQncyBvbmx5CisgIHVzYWJsZSBieSBB
ZG1pbmlzdHJhdG9ycyBbNDU5MDFdCisqIGFkZGVkIHN1cHBvcnQgZm9yIGxvY2tpbmcgYW5kIG5v
bi1yZWN1cnNpdmUgY29tbWl0cyB0byBweS5wYXRoLnN2bndjIFs0NTk5NF0KKyogbG9ja2luZyBm
aWxlcyBpbiBweS5leGVjbmV0IHRvIHByZXZlbnQgQ1B5dGhvbiBmcm9tIHNlZ2ZhdWx0aW5nIFs0
NjAxMF0KKyogYWRkZWQgZXhwb3J0KCkgbWV0aG9kIHRvIHB5LnBhdGguc3ZudXJsCisqIGZpeGVk
IC1kIC14IGluIHB5LnRlc3QgWzQ3Mjc3XQorKiBmaXhlZCBhcmd1bWVudCBjb25jYXRlbmF0aW9u
IHByb2JsZW0gaW4gcHkucGF0aC5zdm53YyBbNDk0MjNdCisqIHJlc3RvcmUgcHkudGVzdCBiZWhh
dmlvdXIgdGhhdCBpdCBleGl0cyB3aXRoIGNvZGUgMSB3aGVuIHRoZXJlIGFyZSBmYWlsdXJlcwor
ICBbNDk5NzRdCisqIGRvbid0IGZhaWwgb24gaHRtbCBmaWxlcyB0aGF0IGRvbid0IGhhdmUgYW4g
YWNjb21wYW55aW5nIC50eHQgZmlsZSBbNTA2MDZdCisqIGZpeGVkICd1dGVzdGNvbnZlcnQucHkg
PCBpbnB1dCcgWzUwNjQ1XQorKiBzbWFsbCBmaXggZm9yIGNvZGUgaW5kZW50YXRpb24gaW4gcHku
Y29kZS5zb3VyY2UgWzUwNzU1XQorKiBmaXggX2RvY2dlbi5weSBkb2N1bWVudGF0aW9uIGJ1aWxk
aW5nIFs1MTI4NV0KKyogaW1wcm92ZWQgY2hlY2tzIGZvciBzb3VyY2UgcmVwcmVzZW50YXRpb24g
b2YgY29kZSBibG9ja3MgaW4gcHkudGVzdCBbNTEyOTJdCisqIGFkZGVkIHN1cHBvcnQgZm9yIHBh
c3NpbmcgYXV0aGVudGljYXRpb24gdG8gcHkucGF0aC5zdm4qIG9iamVjdHMgWzUyMDAwLAorICA1
MjAwMV0KKyogcmVtb3ZlZCBzb3J0ZWQoKSBjYWxsIGZvciBweS5hcGlnZW4gdGVzdHMgaW4gZmF2
b3VyIG9mIFtdLnNvcnQoKSB0byBzdXBwb3J0CisgIFB5dGhvbiAyLjMgWzUyNDgxXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbmYucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY29u
Zi5weQppbmRleCBlYmZmNmZmM2JmYTQuLmM2MzE0ODRhYTM0NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2NvbmYucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbmYucHkKQEAg
LTEsNCArMSwzIEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIwogIyBweXRlc3QgZG9jdW1l
bnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkKICMgc3BoaW54LXF1
aWNrc3RhcnQgb24gRnJpIE9jdCAgOCAxNzo1NDoyOCAyMDEwLgpAQCAtMTAsMTkgKzksMjEgQEAK
ICMKICMgQWxsIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGhhdmUgYSBkZWZhdWx0OyB2YWx1ZXMgdGhh
dCBhcmUgY29tbWVudGVkIG91dAogIyBzZXJ2ZSB0byBzaG93IHRoZSBkZWZhdWx0LgotCiAjIFRo
ZSB2ZXJzaW9uIGluZm8gZm9yIHRoZSBwcm9qZWN0IHlvdSdyZSBkb2N1bWVudGluZywgYWN0cyBh
cyByZXBsYWNlbWVudCBmb3IKICMgfHZlcnNpb258IGFuZCB8cmVsZWFzZXwsIGFsc28gdXNlZCBp
biB2YXJpb3VzIG90aGVyIHBsYWNlcyB0aHJvdWdob3V0IHRoZQogIyBidWlsdCBkb2N1bWVudHMu
CiAjCiAjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGluZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCiAj
IFRoZSBzaG9ydCBYLlkgdmVyc2lvbi4KLQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQg
ZGF0ZXRpbWUKIAogZnJvbSBfcHl0ZXN0IGltcG9ydCBfX3ZlcnNpb25fXyBhcyB2ZXJzaW9uCitm
cm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCisKK2lmIFRZUEVfQ0hFQ0tJ
Tkc6CisgICAgaW1wb3J0IHNwaGlueC5hcHBsaWNhdGlvbgorCiAKIHJlbGVhc2UgPSAiLiIuam9p
bih2ZXJzaW9uLnNwbGl0KCIuIilbOjJdKQogCkBAIC00MiwxMSArNDMsMTQgQEAgdG9kb19pbmNs
dWRlX3RvZG9zID0gMQogIyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhl
cmUsIGFzIHN0cmluZ3MuIFRoZXkgY2FuIGJlIGV4dGVuc2lvbnMKICMgY29taW5nIHdpdGggU3Bo
aW54IChuYW1lZCAnc3BoaW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20gb25lcy4KIGV4dGVuc2lv
bnMgPSBbCisgICAgInBhbGxldHNfc3BoaW54X3RoZW1lcyIsCisgICAgInB5Z21lbnRzX3B5dGVz
dCIsCiAgICAgInNwaGlueC5leHQuYXV0b2RvYyIsCi0gICAgInNwaGlueC5leHQudG9kbyIsCiAg
ICAgInNwaGlueC5leHQuYXV0b3N1bW1hcnkiLAogICAgICJzcGhpbnguZXh0LmludGVyc3BoaW54
IiwKKyAgICAic3BoaW54LmV4dC50b2RvIiwKICAgICAic3BoaW54LmV4dC52aWV3Y29kZSIsCisg
ICAgInNwaGlueF9yZW1vdmVkX2luIiwKICAgICAic3BoaW54Y29udHJpYl90cmlvIiwKIF0KIApA
QCAtNjMsOSArNjcsOCBAQCBzb3VyY2Vfc3VmZml4ID0gIi5yc3QiCiBtYXN0ZXJfZG9jID0gImNv
bnRlbnRzIgogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCi1wcm9q
ZWN0ID0gdSJweXRlc3QiCi15ZWFyID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkueWVhcgot
Y29weXJpZ2h0ID0gdSIyMDE14oCTe30gLCBob2xnZXIga3Jla2VsIGFuZCBweXRlc3QtZGV2IHRl
YW0iLmZvcm1hdCh5ZWFyKQorcHJvamVjdCA9ICJweXRlc3QiCitjb3B5cmlnaHQgPSAiMjAxNeKA
kzIwMjAsIGhvbGdlciBrcmVrZWwgYW5kIHB5dGVzdC1kZXYgdGVhbSIKIAogCiAjIFRoZSBsYW5n
dWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1l
bnRhdGlvbgpAQCAtODEsNyArODQsNiBAQCBjb3B5cmlnaHQgPSB1IjIwMTXigJN7fSAsIGhvbGdl
ciBrcmVrZWwgYW5kIHB5dGVzdC1kZXYgdGVhbSIuZm9ybWF0KHllYXIpCiAjIExpc3Qgb2YgcGF0
dGVybnMsIHJlbGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMgYW5k
CiAjIGRpcmVjdG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcy4K
IGV4Y2x1ZGVfcGF0dGVybnMgPSBbCi0gICAgImxpbmtzLmluYyIsCiAgICAgIl9idWlsZCIsCiAg
ICAgIm5hbWluZzIwLnJzdCIsCiAgICAgInRlc3QvKiIsCkBAIC05NSw3ICs5Nyw3IEBAIGV4Y2x1
ZGVfcGF0dGVybnMgPSBbCiAKIAogIyBUaGUgcmVTVCBkZWZhdWx0IHJvbGUgKHVzZWQgZm9yIHRo
aXMgbWFya3VwOiBgdGV4dGApIHRvIHVzZSBmb3IgYWxsIGRvY3VtZW50cy4KLSMgZGVmYXVsdF9y
b2xlID0gTm9uZQorZGVmYXVsdF9yb2xlID0gImxpdGVyYWwiCiAKICMgSWYgdHJ1ZSwgJygpJyB3
aWxsIGJlIGFwcGVuZGVkIHRvIDpmdW5jOiBldGMuIGNyb3NzLXJlZmVyZW5jZSB0ZXh0LgogIyBh
ZGRfZnVuY3Rpb25fcGFyZW50aGVzZXMgPSBUcnVlCkBAIC0xMTUsNiArMTE3LDE5IEBAIHB5Z21l
bnRzX3N0eWxlID0gInNwaGlueCIKICMgQSBsaXN0IG9mIGlnbm9yZWQgcHJlZml4ZXMgZm9yIG1v
ZHVsZSBpbmRleCBzb3J0aW5nLgogIyBtb2RpbmRleF9jb21tb25fcHJlZml4ID0gW10KIAorIyBB
IGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyB0aGF0IG1hdGNoIFVSSXMgdGhhdCBzaG91bGQg
bm90IGJlIGNoZWNrZWQgd2hlbgorIyBkb2luZyBhIGxpbmtjaGVjay4KK2xpbmtjaGVja19pZ25v
cmUgPSBbCisgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9ibG9iL21hc3Rlci9k
b2MvcmVsZWFzZS8xLjE2LjAtbm90ZXMucnN0I25ldy1kZXByZWNhdGlvbnMiLAorICAgICJodHRw
czovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS9iaGFycnkvMjAxNy8wNi8yOC90ZXN0aW5nLWlu
LWEtY2xvdWQtZGVsaXZlcnktY2FkZW5jZS8iLAorICAgICJodHRwOi8vcHl0aG9udGVzdGluZy5u
ZXQvZnJhbWV3b3JrL3B5dGVzdC1pbnRyb2R1Y3Rpb24vIiwKKyAgICByImh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvXGQrIiwKKyAgICByImh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsL1xkKyIsCitdCisKKyMgVGhlIG51bWJlciBvZiB3
b3JrZXIgdGhyZWFkcyB0byB1c2Ugd2hlbiBjaGVja2luZyBsaW5rcyAoZGVmYXVsdD01KS4KK2xp
bmtjaGVja193b3JrZXJzID0gNQorCiAKICMgLS0gT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTEy
OCw3ICsxNDMsNyBAQCBodG1sX3RoZW1lID0gImZsYXNrIgogIyBUaGVtZSBvcHRpb25zIGFyZSB0
aGVtZS1zcGVjaWZpYyBhbmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUK
ICMgZnVydGhlci4gIEZvciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhl
bWUsIHNlZSB0aGUKICMgZG9jdW1lbnRhdGlvbi4KLWh0bWxfdGhlbWVfb3B0aW9ucyA9IHsiaW5k
ZXhfbG9nbyI6IE5vbmV9CisjIGh0bWxfdGhlbWVfb3B0aW9ucyA9IHsiaW5kZXhfbG9nbyI6IE5v
bmV9CiAKICMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHRoZW1lcyBoZXJlLCBy
ZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4KICMgaHRtbF90aGVtZV9wYXRoID0gW10KQEAgLTE0
Nyw3ICsxNjIsNyBAQCBodG1sX2xvZ28gPSAiaW1nL3B5dGVzdDEucG5nIgogIyBUaGUgbmFtZSBv
ZiBhbiBpbWFnZSBmaWxlICh3aXRoaW4gdGhlIHN0YXRpYyBwYXRoKSB0byB1c2UgYXMgZmF2aWNv
biBvZiB0aGUKICMgZG9jcy4gIFRoaXMgZmlsZSBzaG91bGQgYmUgYSBXaW5kb3dzIGljb24gZmls
ZSAoLmljbykgYmVpbmcgMTZ4MTYgb3IgMzJ4MzIKICMgcGl4ZWxzIGxhcmdlLgotaHRtbF9mYXZp
Y29uID0gImltZy9weXRlc3QxZmF2aS5pY28iCitodG1sX2Zhdmljb24gPSAiaW1nL2Zhdmljb24u
cG5nIgogCiAjIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSBzdGF0aWMgZmlsZXMg
KHN1Y2ggYXMgc3R5bGUgc2hlZXRzKSBoZXJlLAogIyByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9y
eS4gVGhleSBhcmUgY29waWVkIGFmdGVyIHRoZSBidWlsdGluIHN0YXRpYyBmaWxlcywKQEAgLTE2
OCwxOCArMTgzLDE4IEBAIGh0bWxfZmF2aWNvbiA9ICJpbWcvcHl0ZXN0MWZhdmkuaWNvIgogCiBo
dG1sX3NpZGViYXJzID0gewogICAgICJpbmRleCI6IFsKKyAgICAgICAgInNsaW1fc2VhcmNoYm94
Lmh0bWwiLAogICAgICAgICAic2lkZWJhcmludHJvLmh0bWwiLAogICAgICAgICAiZ2xvYmFsdG9j
Lmh0bWwiLAogICAgICAgICAibGlua3MuaHRtbCIsCiAgICAgICAgICJzb3VyY2VsaW5rLmh0bWwi
LAotICAgICAgICAic2VhcmNoYm94Lmh0bWwiLAogICAgIF0sCiAgICAgIioqIjogWworICAgICAg
ICAic2xpbV9zZWFyY2hib3guaHRtbCIsCiAgICAgICAgICJnbG9iYWx0b2MuaHRtbCIsCiAgICAg
ICAgICJyZWxhdGlvbnMuaHRtbCIsCiAgICAgICAgICJsaW5rcy5odG1sIiwKICAgICAgICAgInNv
dXJjZWxpbmsuaHRtbCIsCi0gICAgICAgICJzZWFyY2hib3guaHRtbCIsCiAgICAgXSwKIH0KIApA
QCAtMTkzLDcgKzIwOCw3IEBAIGh0bWxfc2lkZWJhcnMgPSB7CiBodG1sX2RvbWFpbl9pbmRpY2Vz
ID0gVHJ1ZQogCiAjIElmIGZhbHNlLCBubyBpbmRleCBpcyBnZW5lcmF0ZWQuCi1odG1sX3VzZV9p
bmRleCA9IEZhbHNlCitodG1sX3VzZV9pbmRleCA9IFRydWUKIAogIyBJZiB0cnVlLCB0aGUgaW5k
ZXggaXMgc3BsaXQgaW50byBpbmRpdmlkdWFsIHBhZ2VzIGZvciBlYWNoIGxldHRlci4KICMgaHRt
bF9zcGxpdF9pbmRleCA9IEZhbHNlCkBAIC0yMzMsOCArMjQ4LDggQEAgbGF0ZXhfZG9jdW1lbnRz
ID0gWwogICAgICgKICAgICAgICAgImNvbnRlbnRzIiwKICAgICAgICAgInB5dGVzdC50ZXgiLAot
ICAgICAgICB1InB5dGVzdCBEb2N1bWVudGF0aW9uIiwKLSAgICAgICAgdSJob2xnZXIga3Jla2Vs
LCB0cmFpbmVyIGFuZCBjb25zdWx0YW50LCBodHRwOi8vbWVybGludXguZXUiLAorICAgICAgICAi
cHl0ZXN0IERvY3VtZW50YXRpb24iLAorICAgICAgICAiaG9sZ2VyIGtyZWtlbCwgdHJhaW5lciBh
bmQgY29uc3VsdGFudCwgaHR0cDovL21lcmxpbnV4LmV1IiwKICAgICAgICAgIm1hbnVhbCIsCiAg
ICAgKQogXQpAQCAtMjY2LDE2ICsyODEsMTYgQEAgbGF0ZXhfZG9tYWluX2luZGljZXMgPSBGYWxz
ZQogCiAjIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2YgdHVwbGVzCiAjIChzb3Vy
Y2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMsIG1hbnVhbCBzZWN0aW9u
KS4KLW1hbl9wYWdlcyA9IFsoInVzYWdlIiwgInB5dGVzdCIsIHUicHl0ZXN0IHVzYWdlIiwgW3Ui
aG9sZ2VyIGtyZWtlbCBhdCBtZXJsaW51eCBldSJdLCAxKV0KK21hbl9wYWdlcyA9IFsoInVzYWdl
IiwgInB5dGVzdCIsICJweXRlc3QgdXNhZ2UiLCBbImhvbGdlciBrcmVrZWwgYXQgbWVybGludXgg
ZXUiXSwgMSldCiAKIAogIyAtLSBPcHRpb25zIGZvciBFcHViIG91dHB1dCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyBCaWJsaW9ncmFwaGlj
IER1YmxpbiBDb3JlIGluZm8uCi1lcHViX3RpdGxlID0gdSJweXRlc3QiCi1lcHViX2F1dGhvciA9
IHUiaG9sZ2VyIGtyZWtlbCBhdCBtZXJsaW51eCBldSIKLWVwdWJfcHVibGlzaGVyID0gdSJob2xn
ZXIga3Jla2VsIGF0IG1lcmxpbnV4IGV1IgotZXB1Yl9jb3B5cmlnaHQgPSB1IjIwMTMsIGhvbGdl
ciBrcmVrZWwgZXQgYWxpaSIKK2VwdWJfdGl0bGUgPSAicHl0ZXN0IgorZXB1Yl9hdXRob3IgPSAi
aG9sZ2VyIGtyZWtlbCBhdCBtZXJsaW51eCBldSIKK2VwdWJfcHVibGlzaGVyID0gImhvbGdlciBr
cmVrZWwgYXQgbWVybGludXggZXUiCitlcHViX2NvcHlyaWdodCA9ICIyMDEzLTIwMjAsIGhvbGdl
ciBrcmVrZWwgZXQgYWxpaSIKIAogIyBUaGUgbGFuZ3VhZ2Ugb2YgdGhlIHRleHQuIEl0IGRlZmF1
bHRzIHRvIHRoZSBsYW5ndWFnZSBvcHRpb24KICMgb3IgZW4gaWYgdGhlIGxhbmd1YWdlIGlzIG5v
dCBzZXQuCkBAIC0zMjksMTUgKzM0NCw1NyBAQCB0ZXhpbmZvX2RvY3VtZW50cyA9IFsKIAogCiAj
IEV4YW1wbGUgY29uZmlndXJhdGlvbiBmb3IgaW50ZXJzcGhpbng6IHJlZmVyIHRvIHRoZSBQeXRo
b24gc3RhbmRhcmQgbGlicmFyeS4KLWludGVyc3BoaW54X21hcHBpbmcgPSB7InB5dGhvbiI6ICgi
aHR0cDovL2RvY3MucHl0aG9uLm9yZy8zIiwgTm9uZSl9CitpbnRlcnNwaGlueF9tYXBwaW5nID0g
eworICAgICJwbHVnZ3kiOiAoImh0dHBzOi8vcGx1Z2d5LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVz
dCIsIE5vbmUpLAorICAgICJweXRob24iOiAoImh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMiLCBO
b25lKSwKK30KIAogCi1kZWYgc2V0dXAoYXBwKToKK2RlZiBjb25maWd1cmVfbG9nZ2luZyhhcHA6
ICJzcGhpbnguYXBwbGljYXRpb24uU3BoaW54IikgLT4gTm9uZToKKyAgICAiIiJDb25maWd1cmUg
U3BoaW54J3MgV2FybmluZ0hhbmRsZXIgdG8gaGFuZGxlIChleHBlY3RlZCkgbWlzc2luZyBpbmNs
dWRlLiIiIgorICAgIGltcG9ydCBzcGhpbngudXRpbC5sb2dnaW5nCisgICAgaW1wb3J0IGxvZ2dp
bmcKKworICAgIGNsYXNzIFdhcm5Mb2dGaWx0ZXIobG9nZ2luZy5GaWx0ZXIpOgorICAgICAgICBk
ZWYgZmlsdGVyKHNlbGYsIHJlY29yZDogbG9nZ2luZy5Mb2dSZWNvcmQpIC0+IGJvb2w6CisgICAg
ICAgICAgICAiIiJJZ25vcmUgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBpbmNsdWRlIHdpdGggIm9u
bHkiIGRpcmVjdGl2ZS4KKworICAgICAgICAgICAgUmVmOiBodHRwczovL2dpdGh1Yi5jb20vc3Bo
aW54LWRvYy9zcGhpbngvaXNzdWVzLzIxNTAuIiIiCisgICAgICAgICAgICBpZiAoCisgICAgICAg
ICAgICAgICAgcmVjb3JkLm1zZy5zdGFydHN3aXRoKCdQcm9ibGVtcyB3aXRoICJpbmNsdWRlIiBk
aXJlY3RpdmUgcGF0aDonKQorICAgICAgICAgICAgICAgIGFuZCAiX2NoYW5nZWxvZ190b3duY3Jp
ZXJfZHJhZnQucnN0IiBpbiByZWNvcmQubXNnCisgICAgICAgICAgICApOgorICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGxvZ2dlciA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKHNwaGlueC51dGlsLmxvZ2dpbmcuTkFNRVNQQUNFKQorICAgIHdh
cm5faGFuZGxlciA9IFt4IGZvciB4IGluIGxvZ2dlci5oYW5kbGVycyBpZiB4LmxldmVsID09IGxv
Z2dpbmcuV0FSTklOR10KKyAgICBhc3NlcnQgbGVuKHdhcm5faGFuZGxlcikgPT0gMSwgd2Fybl9o
YW5kbGVyCisgICAgd2Fybl9oYW5kbGVyWzBdLmZpbHRlcnMuaW5zZXJ0KDAsIFdhcm5Mb2dGaWx0
ZXIoKSkKKworCitkZWYgc2V0dXAoYXBwOiAic3BoaW54LmFwcGxpY2F0aW9uLlNwaGlueCIpIC0+
IE5vbmU6CiAgICAgIyBmcm9tIHNwaGlueC5leHQuYXV0b2RvYyBpbXBvcnQgY3V0X2xpbmVzCiAg
ICAgIyBhcHAuY29ubmVjdCgnYXV0b2RvYy1wcm9jZXNzLWRvY3N0cmluZycsIGN1dF9saW5lcyg0
LCB3aGF0PVsnbW9kdWxlJ10pKQotICAgIGFwcC5hZGRfZGVzY3JpcHRpb25fdW5pdCgKKyAgICBh
cHAuYWRkX2Nyb3NzcmVmX3R5cGUoCisgICAgICAgICJmaXh0dXJlIiwKKyAgICAgICAgImZpeHR1
cmUiLAorICAgICAgICBvYmpuYW1lPSJidWlsdC1pbiBmaXh0dXJlIiwKKyAgICAgICAgaW5kZXh0
ZW1wbGF0ZT0icGFpcjogJXM7IGZpeHR1cmUiLAorICAgICkKKworICAgIGFwcC5hZGRfb2JqZWN0
X3R5cGUoCiAgICAgICAgICJjb25mdmFsIiwKICAgICAgICAgImNvbmZ2YWwiLAogICAgICAgICBv
YmpuYW1lPSJjb25maWd1cmF0aW9uIHZhbHVlIiwKICAgICAgICAgaW5kZXh0ZW1wbGF0ZT0icGFp
cjogJXM7IGNvbmZpZ3VyYXRpb24gdmFsdWUiLAogICAgICkKKworICAgIGFwcC5hZGRfb2JqZWN0
X3R5cGUoCisgICAgICAgICJnbG9iYWx2YXIiLAorICAgICAgICAiZ2xvYmFsdmFyIiwKKyAgICAg
ICAgb2JqbmFtZT0iZ2xvYmFsIHZhcmlhYmxlIGludGVycHJldGVkIGJ5IHB5dGVzdCIsCisgICAg
ICAgIGluZGV4dGVtcGxhdGU9InBhaXI6ICVzOyBnbG9iYWwgdmFyaWFibGUgaW50ZXJwcmV0ZWQg
YnkgcHl0ZXN0IiwKKyAgICApCisKKyAgICBjb25maWd1cmVfbG9nZ2luZyhhcHApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY29udGVudHMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2NvbnRlbnRzLnJzdAppbmRleCA5ZjFkOGQ4NWFjMjUuLjU4YTA4NzQ0Y2VkMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbnRlbnRzLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vY29udGVudHMucnN0CkBAIC0zMywyMCArMzMsMjggQEAgRnVsbCBweXRlc3QgZG9jdW1lbnRh
dGlvbgogICAgcmVmZXJlbmNlCiAKICAgIGdvb2RwcmFjdGljZXMKKyAgIGZsYWt5CiAgICBweXRo
b25wYXRoCiAgICBjdXN0b21pemUKICAgIGV4YW1wbGUvaW5kZXgKICAgIGJhc2gtY29tcGxldGlv
bgogCiAgICBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQotICAgaGlzdG9yaWNhbC1ub3RlcwotICAg
bGljZW5zZQorICAgZGVwcmVjYXRpb25zCisgICBweTI3LXB5MzQtZGVwcmVjYXRpb24KKwogICAg
Y29udHJpYnV0aW5nCiAgICBkZXZlbG9wbWVudF9ndWlkZQorCisgICBzcG9uc29yCisgICB0aWRl
bGlmdAorICAgbGljZW5zZQorICAgY29udGFjdAorCisgICBoaXN0b3JpY2FsLW5vdGVzCiAgICB0
YWxrcwogICAgcHJvamVjdHMKLSAgIGZhcQotICAgY29udGFjdAorCiAKIC4uIG9ubHk6OiBodG1s
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jdXN0b21pemUucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2N1c3RvbWl6ZS5yc3QKaW5kZXggYzFhMzQ5OGM3YjY3Li45ZjdjMzY1ZGM0
NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jdXN0b21pemUucnN0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9jdXN0b21pemUucnN0CkBAIC01LDE1MiArNSwyMzIgQEAgQ29tbWFu
ZCBsaW5lIG9wdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZSBzZXR0aW5ncwogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogWW91IGNhbiBnZXQgaGVscCBvbiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQgdmFsdWVzIGlu
IElOSS1zdHlsZQotY29uZmlndXJhdGlvbnMgZmlsZXMgYnkgdXNpbmcgdGhlIGdlbmVyYWwgaGVs
cCBvcHRpb246OgorY29uZmlndXJhdGlvbnMgZmlsZXMgYnkgdXNpbmcgdGhlIGdlbmVyYWwgaGVs
cCBvcHRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLWggICAjIHBy
aW50cyBvcHRpb25zIF9hbmRfIGNvbmZpZyBmaWxlIHNldHRpbmdzCiAKIFRoaXMgd2lsbCBkaXNw
bGF5IGNvbW1hbmQgbGluZSBhbmQgY29uZmlndXJhdGlvbiBmaWxlIHNldHRpbmdzCiB3aGljaCB3
ZXJlIHJlZ2lzdGVyZWQgYnkgaW5zdGFsbGVkIHBsdWdpbnMuCiAKLS4uIF9yb290ZGlyOgotLi4g
X2luaWZpbGVzOgorLi4gX2Bjb25maWcgZmlsZSBmb3JtYXRzYDoKKworQ29uZmlndXJhdGlvbiBm
aWxlIGZvcm1hdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01hbnkgOnJlZjpgcHl0
ZXN0IHNldHRpbmdzIDxpbmkgb3B0aW9ucyByZWY+YCBjYW4gYmUgc2V0IGluIGEgKmNvbmZpZ3Vy
YXRpb24gZmlsZSosIHdoaWNoCitieSBjb252ZW50aW9uIHJlc2lkZXMgb24gdGhlIHJvb3Qgb2Yg
eW91ciByZXBvc2l0b3J5IG9yIGluIHlvdXIKK3Rlc3RzIGZvbGRlci4KKworQSBxdWljayBleGFt
cGxlIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHN1cHBvcnRlZCBieSBweXRlc3Q6CisKK3B5
dGVzdC5pbmkKK35+fn5+fn5+fn4KKworYGBweXRlc3QuaW5pYGAgZmlsZXMgdGFrZSBwcmVjZWRl
bmNlIG92ZXIgb3RoZXIgZmlsZXMsIGV2ZW4gd2hlbiBlbXB0eS4KKworLi4gY29kZS1ibG9jazo6
IGluaQorCisgICAgIyBweXRlc3QuaW5pCisgICAgW3B5dGVzdF0KKyAgICBtaW52ZXJzaW9uID0g
Ni4wCisgICAgYWRkb3B0cyA9IC1yYSAtcQorICAgIHRlc3RwYXRocyA9CisgICAgICAgIHRlc3Rz
CisgICAgICAgIGludGVncmF0aW9uCisKKworcHlwcm9qZWN0LnRvbWwKK35+fn5+fn5+fn5+fn5+
CisKKy4uIHZlcnNpb25hZGRlZDo6IDYuMAorCitgYHB5cHJvamVjdC50b21sYGAgYXJlIGNvbnNp
ZGVyZWQgZm9yIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGV5IGNvbnRhaW4gYSBgYHRvb2wucHl0ZXN0
LmluaV9vcHRpb25zYGAgdGFibGUuCisKKy4uIGNvZGUtYmxvY2s6OiB0b21sCisKKyAgICAjIHB5
cHJvamVjdC50b21sCisgICAgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXQorICAgIG1pbnZlcnNp
b24gPSAiNi4wIgorICAgIGFkZG9wdHMgPSAiLXJhIC1xIgorICAgIHRlc3RwYXRocyA9IFsKKyAg
ICAgICAgInRlc3RzIiwKKyAgICAgICAgImludGVncmF0aW9uIiwKKyAgICBdCisKKy4uIG5vdGU6
OgorCisgICAgT25lIG1pZ2h0IHdvbmRlciB3aHkgYGBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNd
YGAgaW5zdGVhZCBvZiBgYFt0b29sLnB5dGVzdF1gYCBhcyBpcyB0aGUKKyAgICBjYXNlIHdpdGgg
b3RoZXIgdG9vbHMuCisKKyAgICBUaGUgcmVhc29uIGlzIHRoYXQgdGhlIHB5dGVzdCB0ZWFtIGlu
dGVuZHMgdG8gZnVsbHkgdXRpbGl6ZSB0aGUgcmljaCBUT01MIGRhdGEgZm9ybWF0CisgICAgZm9y
IGNvbmZpZ3VyYXRpb24gaW4gdGhlIGZ1dHVyZSwgcmVzZXJ2aW5nIHRoZSBgYFt0b29sLnB5dGVz
dF1gYCB0YWJsZSBmb3IgdGhhdC4KKyAgICBUaGUgYGBpbmlfb3B0aW9uc2BgIHRhYmxlIGlzIGJl
aW5nIHVzZWQsIGZvciBub3csIGFzIGEgYnJpZGdlIGJldHdlZW4gdGhlIGV4aXN0aW5nCisgICAg
YGAuaW5pYGAgY29uZmlndXJhdGlvbiBzeXN0ZW0gYW5kIHRoZSBmdXR1cmUgY29uZmlndXJhdGlv
biBmb3JtYXQuCisKK3RveC5pbmkKK35+fn5+fn4KKworYGB0b3guaW5pYGAgZmlsZXMgYXJlIHRo
ZSBjb25maWd1cmF0aW9uIGZpbGVzIG9mIHRoZSBgdG94IDxodHRwczovL3RveC5yZWFkdGhlZG9j
cy5pbz5gX18gcHJvamVjdCwKK2FuZCBjYW4gYWxzbyBiZSB1c2VkIHRvIGhvbGQgcHl0ZXN0IGNv
bmZpZ3VyYXRpb24gaWYgdGhleSBoYXZlIGEgYGBbcHl0ZXN0XWBgIHNlY3Rpb24uCisKKy4uIGNv
ZGUtYmxvY2s6OiBpbmkKKworICAgICMgdG94LmluaQorICAgIFtweXRlc3RdCisgICAgbWludmVy
c2lvbiA9IDYuMAorICAgIGFkZG9wdHMgPSAtcmEgLXEKKyAgICB0ZXN0cGF0aHMgPQorICAgICAg
ICB0ZXN0cworICAgICAgICBpbnRlZ3JhdGlvbgorCisKK3NldHVwLmNmZworfn5+fn5+fn5+CisK
K2Bgc2V0dXAuY2ZnYGAgZmlsZXMgYXJlIGdlbmVyYWwgcHVycG9zZSBjb25maWd1cmF0aW9uIGZp
bGVzLCB1c2VkIG9yaWdpbmFsbHkgYnkgYGRpc3R1dGlscyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5v
cmcvMy9kaXN0dXRpbHMvY29uZmlnZmlsZS5odG1sPmBfXywgYW5kIGNhbiBhbHNvIGJlIHVzZWQg
dG8gaG9sZCBweXRlc3QgY29uZmlndXJhdGlvbgoraWYgdGhleSBoYXZlIGEgYGBbdG9vbDpweXRl
c3RdYGAgc2VjdGlvbi4KKworLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgIyBzZXR1cC5jZmcK
KyAgICBbdG9vbDpweXRlc3RdCisgICAgbWludmVyc2lvbiA9IDYuMAorICAgIGFkZG9wdHMgPSAt
cmEgLXEKKyAgICB0ZXN0cGF0aHMgPQorICAgICAgICB0ZXN0cworICAgICAgICBpbnRlZ3JhdGlv
bgorCisuLiB3YXJuaW5nOjoKIAotSW5pdGlhbGl6YXRpb246IGRldGVybWluaW5nIHJvb3RkaXIg
YW5kIGluaWZpbGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgICAgVXNhZ2Ugb2YgYGBzZXR1cC5jZmdgYCBpcyBub3QgcmVjb21tZW5kZWQgdW5sZXNz
IGZvciB2ZXJ5IHNpbXBsZSB1c2UgY2FzZXMuIGBgLmNmZ2BgCisgICAgZmlsZXMgdXNlIGEgZGlm
ZmVyZW50IHBhcnNlciB0aGFuIGBgcHl0ZXN0LmluaWBgIGFuZCBgYHRveC5pbmlgYCB3aGljaCBt
aWdodCBjYXVzZSBoYXJkIHRvIHRyYWNrCisgICAgZG93biBwcm9ibGVtcy4KKyAgICBXaGVuIHBv
c3NpYmxlLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGxhdHRlciBmaWxlcywgb3IgYGBw
eXByb2plY3QudG9tbGBgLCB0byBob2xkIHlvdXIKKyAgICBweXRlc3QgY29uZmlndXJhdGlvbi4K
IAotLi4gdmVyc2lvbmFkZGVkOjogMi43CisKKy4uIF9yb290ZGlyOgorLi4gX2NvbmZpZ2ZpbGVz
OgorCitJbml0aWFsaXphdGlvbjogZGV0ZXJtaW5pbmcgcm9vdGRpciBhbmQgY29uZmlnZmlsZQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogcHl0
ZXN0IGRldGVybWluZXMgYSBgYHJvb3RkaXJgYCBmb3IgZWFjaCB0ZXN0IHJ1biB3aGljaCBkZXBl
bmRzIG9uCiB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAoc3BlY2lmaWVkIHRlc3QgZmlsZXMs
IHBhdGhzKSBhbmQgb24KLXRoZSBleGlzdGVuY2Ugb2YgKmluaS1maWxlcyouICBUaGUgZGV0ZXJt
aW5lZCBgYHJvb3RkaXJgYCBhbmQgKmluaS1maWxlKiBhcmUKK3RoZSBleGlzdGVuY2Ugb2YgY29u
ZmlndXJhdGlvbiBmaWxlcy4gIFRoZSBkZXRlcm1pbmVkIGBgcm9vdGRpcmBgIGFuZCBgYGNvbmZp
Z2ZpbGVgYCBhcmUKIHByaW50ZWQgYXMgcGFydCBvZiB0aGUgcHl0ZXN0IGhlYWRlciBkdXJpbmcg
c3RhcnR1cC4KIAogSGVyZSdzIGEgc3VtbWFyeSB3aGF0IGBgcHl0ZXN0YGAgdXNlcyBgYHJvb3Rk
aXJgYCBmb3I6CiAKICogQ29uc3RydWN0ICpub2RlaWRzKiBkdXJpbmcgY29sbGVjdGlvbjsgZWFj
aCB0ZXN0IGlzIGFzc2lnbmVkCi0gIGEgdW5pcXVlICpub2RlaWQqIHdoaWNoIGlzIHJvb3RlZCBh
dCB0aGUgYGByb290ZGlyYGAgYW5kIHRha2VzIGluIGFjY291bnQgZnVsbCBwYXRoLAotICBjbGFz
cyBuYW1lLCBmdW5jdGlvbiBuYW1lIGFuZCBwYXJhbWV0cml6YXRpb24gKGlmIGFueSkuCisgIGEg
dW5pcXVlICpub2RlaWQqIHdoaWNoIGlzIHJvb3RlZCBhdCB0aGUgYGByb290ZGlyYGAgYW5kIHRh
a2VzIGludG8gYWNjb3VudAorICB0aGUgZnVsbCBwYXRoLCBjbGFzcyBuYW1lLCBmdW5jdGlvbiBu
YW1lIGFuZCBwYXJhbWV0cml6YXRpb24gKGlmIGFueSkuCiAKICogSXMgdXNlZCBieSBwbHVnaW5z
IGFzIGEgc3RhYmxlIGxvY2F0aW9uIHRvIHN0b3JlIHByb2plY3QvdGVzdCBydW4gc3BlY2lmaWMg
aW5mb3JtYXRpb247Ci0gIGZvciBleGFtcGxlLCB0aGUgaW50ZXJuYWwgOnJlZjpgY2FjaGUgPGNh
Y2hlPmAgcGx1Z2luIGNyZWF0ZXMgYSBgYC5jYWNoZWBgIHN1YmRpcmVjdG9yeQorICBmb3IgZXhh
bXBsZSwgdGhlIGludGVybmFsIDpyZWY6YGNhY2hlIDxjYWNoZT5gIHBsdWdpbiBjcmVhdGVzIGEg
YGAucHl0ZXN0X2NhY2hlYGAgc3ViZGlyZWN0b3J5CiAgIGluIGBgcm9vdGRpcmBgIHRvIHN0b3Jl
IGl0cyBjcm9zcy10ZXN0IHJ1biBzdGF0ZS4KIAotSW1wb3J0YW50IHRvIGVtcGhhc2l6ZSB0aGF0
IGBgcm9vdGRpcmBgIGlzICoqTk9UKiogdXNlZCB0byBtb2RpZnkgYGBzeXMucGF0aGBgL2BgUFlU
SE9OUEFUSGBgIG9yCitgYHJvb3RkaXJgYCBpcyAqKk5PVCoqIHVzZWQgdG8gbW9kaWZ5IGBgc3lz
LnBhdGhgYC9gYFBZVEhPTlBBVEhgYCBvcgogaW5mbHVlbmNlIGhvdyBtb2R1bGVzIGFyZSBpbXBv
cnRlZC4gU2VlIDpyZWY6YHB5dGhvbnBhdGhgIGZvciBtb3JlIGRldGFpbHMuCiAKLWBgLS1yb290
ZGlyPXBhdGhgYCBjb21tYW5kLWxpbmUgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGZvcmNlIGEgc3Bl
Y2lmaWMgZGlyZWN0b3J5LgotVGhlIGRpcmVjdG9yeSBwYXNzZWQgbWF5IGNvbnRhaW4gZW52aXJv
bm1lbnQgdmFyaWFibGVzIHdoZW4gaXQgaXMgdXNlZCBpbiBjb25qdW5jdGlvbgotd2l0aCBgYGFk
ZG9wdHNgYCBpbiBhIGBgcHl0ZXN0LmluaWBgIGZpbGUuCitUaGUgYGAtLXJvb3RkaXI9cGF0aGBg
IGNvbW1hbmQtbGluZSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gZm9yY2UgYSBzcGVjaWZpYyBkaXJl
Y3RvcnkuCitOb3RlIHRoYXQgY29udHJhcnkgdG8gb3RoZXIgY29tbWFuZC1saW5lIG9wdGlvbnMs
IGBgLS1yb290ZGlyYGAgY2Fubm90IGJlIHVzZWQgd2l0aAorOmNvbmZ2YWw6YGFkZG9wdHNgIGlu
c2lkZSBgYHB5dGVzdC5pbmlgYCBiZWNhdXNlIHRoZSBgYHJvb3RkaXJgYCBpcyB1c2VkIHRvICpm
aW5kKiBgYHB5dGVzdC5pbmlgYAorYWxyZWFkeS4KIAogRmluZGluZyB0aGUgYGByb290ZGlyYGAK
IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKIEhlcmUgaXMgdGhlIGFsZ29yaXRobSB3aGljaCBm
aW5kcyB0aGUgcm9vdGRpciBmcm9tIGBgYXJnc2BgOgogCi0tIGRldGVybWluZSB0aGUgY29tbW9u
IGFuY2VzdG9yIGRpcmVjdG9yeSBmb3IgdGhlIHNwZWNpZmllZCBgYGFyZ3NgYCB0aGF0IGFyZQor
LSBEZXRlcm1pbmUgdGhlIGNvbW1vbiBhbmNlc3RvciBkaXJlY3RvcnkgZm9yIHRoZSBzcGVjaWZp
ZWQgYGBhcmdzYGAgdGhhdCBhcmUKICAgcmVjb2duaXNlZCBhcyBwYXRocyB0aGF0IGV4aXN0IGlu
IHRoZSBmaWxlIHN5c3RlbS4gSWYgbm8gc3VjaCBwYXRocyBhcmUKICAgZm91bmQsIHRoZSBjb21t
b24gYW5jZXN0b3IgZGlyZWN0b3J5IGlzIHNldCB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVj
dG9yeS4KIAotLSBsb29rIGZvciBgYHB5dGVzdC5pbmlgYCwgYGB0b3guaW5pYGAgYW5kIGBgc2V0
dXAuY2ZnYGAgZmlsZXMgaW4gdGhlIGFuY2VzdG9yCi0gIGRpcmVjdG9yeSBhbmQgdXB3YXJkcy4g
IElmIG9uZSBpcyBtYXRjaGVkLCBpdCBiZWNvbWVzIHRoZSBpbmktZmlsZSBhbmQgaXRzCi0gIGRp
cmVjdG9yeSBiZWNvbWVzIHRoZSByb290ZGlyLgorLSBMb29rIGZvciBgYHB5dGVzdC5pbmlgYCwg
YGBweXByb2plY3QudG9tbGBgLCBgYHRveC5pbmlgYCwgYW5kIGBgc2V0dXAuY2ZnYGAgZmlsZXMg
aW4gdGhlIGFuY2VzdG9yCisgIGRpcmVjdG9yeSBhbmQgdXB3YXJkcy4gIElmIG9uZSBpcyBtYXRj
aGVkLCBpdCBiZWNvbWVzIHRoZSBgYGNvbmZpZ2ZpbGVgYCBhbmQgaXRzCisgIGRpcmVjdG9yeSBi
ZWNvbWVzIHRoZSBgYHJvb3RkaXJgYC4KIAotLSBpZiBubyBpbmktZmlsZSB3YXMgZm91bmQsIGxv
b2sgZm9yIGBgc2V0dXAucHlgYCB1cHdhcmRzIGZyb20gdGhlIGNvbW1vbgorLSBJZiBubyBjb25m
aWd1cmF0aW9uIGZpbGUgd2FzIGZvdW5kLCBsb29rIGZvciBgYHNldHVwLnB5YGAgdXB3YXJkcyBm
cm9tIHRoZSBjb21tb24KICAgYW5jZXN0b3IgZGlyZWN0b3J5IHRvIGRldGVybWluZSB0aGUgYGBy
b290ZGlyYGAuCiAKLS0gaWYgbm8gYGBzZXR1cC5weWBgIHdhcyBmb3VuZCwgbG9vayBmb3IgYGBw
eXRlc3QuaW5pYGAsIGBgdG94LmluaWBgIGFuZAorLSBJZiBubyBgYHNldHVwLnB5YGAgd2FzIGZv
dW5kLCBsb29rIGZvciBgYHB5dGVzdC5pbmlgYCwgYGBweXByb2plY3QudG9tbGBgLCBgYHRveC5p
bmlgYCwgYW5kCiAgIGBgc2V0dXAuY2ZnYGAgaW4gZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGBgYXJn
c2BgIGFuZCB1cHdhcmRzLiBJZiBvbmUgaXMKLSAgbWF0Y2hlZCwgaXQgYmVjb21lcyB0aGUgaW5p
LWZpbGUgYW5kIGl0cyBkaXJlY3RvcnkgYmVjb21lcyB0aGUgcm9vdGRpci4KKyAgbWF0Y2hlZCwg
aXQgYmVjb21lcyB0aGUgYGBjb25maWdmaWxlYGAgYW5kIGl0cyBkaXJlY3RvcnkgYmVjb21lcyB0
aGUgYGByb290ZGlyYGAuCiAKLS0gaWYgbm8gaW5pLWZpbGUgd2FzIGZvdW5kLCB1c2UgdGhlIGFs
cmVhZHkgZGV0ZXJtaW5lZCBjb21tb24gYW5jZXN0b3IgYXMgcm9vdAorLSBJZiBubyBgYGNvbmZp
Z2ZpbGVgYCB3YXMgZm91bmQsIHVzZSB0aGUgYWxyZWFkeSBkZXRlcm1pbmVkIGNvbW1vbiBhbmNl
c3RvciBhcyByb290CiAgIGRpcmVjdG9yeS4gVGhpcyBhbGxvd3MgdGhlIHVzZSBvZiBweXRlc3Qg
aW4gc3RydWN0dXJlcyB0aGF0IGFyZSBub3QgcGFydCBvZgotICBhIHBhY2thZ2UgYW5kIGRvbid0
IGhhdmUgYW55IHBhcnRpY3VsYXIgaW5pLWZpbGUgY29uZmlndXJhdGlvbi4KKyAgYSBwYWNrYWdl
IGFuZCBkb24ndCBoYXZlIGFueSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gZmlsZS4KIAogSWYg
bm8gYGBhcmdzYGAgYXJlIGdpdmVuLCBweXRlc3QgY29sbGVjdHMgdGVzdCBiZWxvdyB0aGUgY3Vy
cmVudCB3b3JraW5nCi1kaXJlY3RvcnkgYW5kIGFsc28gc3RhcnRzIGRldGVybWluaW5nIHRoZSBy
b290ZGlyIGZyb20gdGhlcmUuCitkaXJlY3RvcnkgYW5kIGFsc28gc3RhcnRzIGRldGVybWluaW5n
IHRoZSBgYHJvb3RkaXJgYCBmcm9tIHRoZXJlLgogCi06d2FybmluZzogY3VzdG9tIHB5dGVzdCBw
bHVnaW4gY29tbWFuZGxpbmUgYXJndW1lbnRzIG1heSBpbmNsdWRlIGEgcGF0aCwgYXMgaW4KLSAg
ICBgYHB5dGVzdCAtLWxvZy1vdXRwdXQgLi4vLi4vdGVzdC5sb2cgYXJnc2BgLiBUaGVuIGBgYXJn
c2BgIGlzIG1hbmRhdG9yeSwKLSAgICBvdGhlcndpc2UgcHl0ZXN0IHVzZXMgdGhlIGZvbGRlciBv
ZiB0ZXN0LmxvZyBmb3Igcm9vdGRpciBkZXRlcm1pbmF0aW9uCi0gICAgKHNlZSBhbHNvIGBpc3N1
ZSAxNDM1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE0MzU+
YF8pLgotICAgIEEgZG90IGBgLmBgIGZvciByZWZlcmVuY2luZyB0byB0aGUgY3VycmVudCB3b3Jr
aW5nIGRpcmVjdG9yeSBpcyBhbHNvCi0gICAgcG9zc2libGUuCitGaWxlcyB3aWxsIG9ubHkgYmUg
bWF0Y2hlZCBmb3IgY29uZmlndXJhdGlvbiBpZjoKKworKiBgYHB5dGVzdC5pbmlgYDogd2lsbCBh
bHdheXMgbWF0Y2ggYW5kIHRha2UgcHJlY2VkZW5jZSwgZXZlbiBpZiBlbXB0eS4KKyogYGBweXBy
b2plY3QudG9tbGBgOiBjb250YWlucyBhIGBgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXWBgIHRh
YmxlLgorKiBgYHRveC5pbmlgYDogY29udGFpbnMgYSBgYFtweXRlc3RdYGAgc2VjdGlvbi4KKyog
YGBzZXR1cC5jZmdgYDogY29udGFpbnMgYSBgYFt0b29sOnB5dGVzdF1gYCBzZWN0aW9uLgogCi1O
b3RlIHRoYXQgYW4gZXhpc3RpbmcgYGBweXRlc3QuaW5pYGAgZmlsZSB3aWxsIGFsd2F5cyBiZSBj
b25zaWRlcmVkIGEgbWF0Y2gsCi13aGVyZWFzIGBgdG94LmluaWBgIGFuZCBgYHNldHVwLmNmZ2Bg
IHdpbGwgb25seSBtYXRjaCBpZiB0aGV5IGNvbnRhaW4gYQotYGBbcHl0ZXN0XWBgIG9yIGBgW3Rv
b2w6cHl0ZXN0XWBgIHNlY3Rpb24sIHJlc3BlY3RpdmVseS4gT3B0aW9ucyBmcm9tIG11bHRpcGxl
IGluaS1maWxlcyBjYW5kaWRhdGVzIGFyZSBuZXZlcgotbWVyZ2VkIC0gdGhlIGZpcnN0IG9uZSB3
aW5zIChgYHB5dGVzdC5pbmlgYCBhbHdheXMgd2lucywgZXZlbiBpZiBpdCBkb2VzIG5vdAotY29u
dGFpbiBhIGBgW3B5dGVzdF1gYCBzZWN0aW9uKS4KK1RoZSBmaWxlcyBhcmUgY29uc2lkZXJlZCBp
biB0aGUgb3JkZXIgYWJvdmUuIE9wdGlvbnMgZnJvbSBtdWx0aXBsZSBgYGNvbmZpZ2ZpbGVzYGAg
Y2FuZGlkYXRlcworYXJlIG5ldmVyIG1lcmdlZCAtIHRoZSBmaXJzdCBtYXRjaCB3aW5zLgogCi1U
aGUgYGBjb25maWdgYCBvYmplY3Qgd2lsbCBzdWJzZXF1ZW50bHkgY2FycnkgdGhlc2UgYXR0cmli
dXRlczoKK1RoZSBpbnRlcm5hbCA6Y2xhc3M6YENvbmZpZyA8X3B5dGVzdC5jb25maWcuQ29uZmln
PmAgb2JqZWN0IChhY2Nlc3NpYmxlIHZpYSBob29rcyBvciB0aHJvdWdoIHRoZSA6Zml4dHVyZTpg
cHl0ZXN0Y29uZmlnYCBmaXh0dXJlKQord2lsbCBzdWJzZXF1ZW50bHkgY2FycnkgdGhlc2UgYXR0
cmlidXRlczoKIAotLSBgYGNvbmZpZy5yb290ZGlyYGA6IHRoZSBkZXRlcm1pbmVkIHJvb3QgZGly
ZWN0b3J5LCBndWFyYW50ZWVkIHRvIGV4aXN0LgorLSA6YXR0cjpgY29uZmlnLnJvb3RwYXRoIDxf
cHl0ZXN0LmNvbmZpZy5Db25maWcucm9vdHBhdGg+YDogdGhlIGRldGVybWluZWQgcm9vdCBkaXJl
Y3RvcnksIGd1YXJhbnRlZWQgdG8gZXhpc3QuCiAKLS0gYGBjb25maWcuaW5pZmlsZWBgOiB0aGUg
ZGV0ZXJtaW5lZCBpbmktZmlsZSwgbWF5IGJlIGBgTm9uZWBgLgorLSA6YXR0cjpgY29uZmlnLmlu
aXBhdGggPF9weXRlc3QuY29uZmlnLkNvbmZpZy5pbmlwYXRoPmA6IHRoZSBkZXRlcm1pbmVkIGBg
Y29uZmlnZmlsZWBgLCBtYXkgYmUgYGBOb25lYGAKKyAgKGl0IGlzIG5hbWVkIGBgaW5pcGF0aGBg
IGZvciBoaXN0b3JpY2FsIHJlYXNvbnMpLgogCi1UaGUgcm9vdGRpciBpcyB1c2VkIGEgcmVmZXJl
bmNlIGRpcmVjdG9yeSBmb3IgY29uc3RydWN0aW5nIHRlc3QKKy4uIHZlcnNpb25hZGRlZDo6IDYu
MQorICAgIFRoZSBgYGNvbmZpZy5yb290cGF0aGBgIGFuZCBgYGNvbmZpZy5pbmlwYXRoYGAgcHJv
cGVydGllcy4gVGhleSBhcmUgOmNsYXNzOmBwYXRobGliLlBhdGhgCisgICAgdmVyc2lvbnMgb2Yg
dGhlIG9sZGVyIGBgY29uZmlnLnJvb3RkaXJgYCBhbmQgYGBjb25maWcuaW5pZmlsZWBgLCB3aGlj
aCBoYXZlIHR5cGUKKyAgICBgYHB5LnBhdGgubG9jYWxgYCwgYW5kIHN0aWxsIGV4aXN0IGZvciBi
YWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCitUaGUgYGByb290ZGlyYGAgaXMgdXNlZCBhcyBhIHJl
ZmVyZW5jZSBkaXJlY3RvcnkgZm9yIGNvbnN0cnVjdGluZyB0ZXN0CiBhZGRyZXNzZXMgKCJub2Rl
aWRzIikgYW5kIGNhbiBiZSB1c2VkIGFsc28gYnkgcGx1Z2lucyBmb3Igc3RvcmluZwogcGVyLXRl
c3RydW4gaW5mb3JtYXRpb24uCiAKLUV4YW1wbGU6OgorRXhhbXBsZToKKworLi4gY29kZS1ibG9j
azo6IGJhc2gKIAogICAgIHB5dGVzdCBwYXRoL3RvL3Rlc3RkaXIgcGF0aC9vdGhlci8KIAogd2ls
bCBkZXRlcm1pbmUgdGhlIGNvbW1vbiBhbmNlc3RvciBhcyBgYHBhdGhgYCBhbmQgdGhlbgotY2hl
Y2sgZm9yIGluaS1maWxlcyBhcyBmb2xsb3dzOjoKK2NoZWNrIGZvciBjb25maWd1cmF0aW9uIGZp
bGVzIGFzIGZvbGxvd3M6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKICAgICAjIGZpcnN0IGxv
b2sgZm9yIHB5dGVzdC5pbmkgZmlsZXMKICAgICBwYXRoL3B5dGVzdC5pbmkKLSAgICBwYXRoL3Nl
dHVwLmNmZyAgIyBtdXN0IGFsc28gY29udGFpbiBbdG9vbDpweXRlc3RdIHNlY3Rpb24gdG8gbWF0
Y2gKLSAgICBwYXRoL3RveC5pbmkgICAgIyBtdXN0IGFsc28gY29udGFpbiBbcHl0ZXN0XSBzZWN0
aW9uIHRvIG1hdGNoCisgICAgcGF0aC9weXByb2plY3QudG9tbCAgIyBtdXN0IGNvbnRhaW4gYSBb
dG9vbC5weXRlc3QuaW5pX29wdGlvbnNdIHRhYmxlIHRvIG1hdGNoCisgICAgcGF0aC90b3guaW5p
ICAgICAgICAgIyBtdXN0IGNvbnRhaW4gW3B5dGVzdF0gc2VjdGlvbiB0byBtYXRjaAorICAgIHBh
dGgvc2V0dXAuY2ZnICAgICAgICMgbXVzdCBjb250YWluIFt0b29sOnB5dGVzdF0gc2VjdGlvbiB0
byBtYXRjaAogICAgIHB5dGVzdC5pbmkKLSAgICAuLi4gIyBhbGwgdGhlIHdheSBkb3duIHRvIHRo
ZSByb290CisgICAgLi4uICMgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIHJvb3QKIAogICAgICMgbm93
IGxvb2sgZm9yIHNldHVwLnB5CiAgICAgcGF0aC9zZXR1cC5weQogICAgIHNldHVwLnB5Ci0gICAg
Li4uICMgYWxsIHRoZSB3YXkgZG93biB0byB0aGUgcm9vdAotCi0KLS4uIF9gaG93IHRvIGNoYW5n
ZSBjb21tYW5kIGxpbmUgb3B0aW9ucyBkZWZhdWx0c2A6Ci0uLiBfYGFkZGluZyBkZWZhdWx0IG9w
dGlvbnNgOgotCi0KKyAgICAuLi4gIyBhbGwgdGhlIHdheSB1cCB0byB0aGUgcm9vdAogCi1Ib3cg
dG8gY2hhbmdlIGNvbW1hbmQgbGluZSBvcHRpb25zIGRlZmF1bHRzCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSXQgY2FuIGJlIHRlZGlvdXMgdG8g
dHlwZSB0aGUgc2FtZSBzZXJpZXMgb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMKLWV2ZXJ5IHRpbWUg
eW91IHVzZSBgYHB5dGVzdGBgLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhbHdheXMgd2FudCB0byBz
ZWUKLWRldGFpbGVkIGluZm8gb24gc2tpcHBlZCBhbmQgeGZhaWxlZCB0ZXN0cywgYXMgd2VsbCBh
cyBoYXZlIHRlcnNlciAiZG90IgotcHJvZ3Jlc3Mgb3V0cHV0LCB5b3UgY2FuIHdyaXRlIGl0IGlu
dG8gYSBjb25maWd1cmF0aW9uIGZpbGU6CisuLiB3YXJuaW5nOjoKIAotLi4gY29kZS1ibG9jazo6
IGluaQotCi0gICAgIyBjb250ZW50IG9mIHB5dGVzdC5pbmkKLSAgICAjIChvciB0b3guaW5pIG9y
IHNldHVwLmNmZykKLSAgICBbcHl0ZXN0XQotICAgIGFkZG9wdHMgPSAtcmEgLXEKLQotQWx0ZXJu
YXRpdmVseSwgeW91IGNhbiBzZXQgYSBgYFBZVEVTVF9BRERPUFRTYGAgZW52aXJvbm1lbnQgdmFy
aWFibGUgdG8gYWRkIGNvbW1hbmQKLWxpbmUgb3B0aW9ucyB3aGlsZSB0aGUgZW52aXJvbm1lbnQg
aXMgaW4gdXNlOjoKLQotICAgIGV4cG9ydCBQWVRFU1RfQURET1BUUz0iLXYiCi0KLUhlcmUncyBo
b3cgdGhlIGNvbW1hbmQtbGluZSBpcyBidWlsdCBpbiB0aGUgcHJlc2VuY2Ugb2YgYGBhZGRvcHRz
YGAgb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlOjoKLQotICAgIDxweXRlc3QuaW5pOmFkZG9w
dHM+ICRQWVRFU1RfQURET1RQUyA8ZXh0cmEgY29tbWFuZC1saW5lIGFyZ3VtZW50cz4KLQotU28g
aWYgdGhlIHVzZXIgZXhlY3V0ZXMgaW4gdGhlIGNvbW1hbmQtbGluZTo6Ci0KLSAgICBweXRlc3Qg
LW0gc2xvdwotCi1UaGUgYWN0dWFsIGNvbW1hbmQgbGluZSBleGVjdXRlZCBpczo6CisgICAgQ3Vz
dG9tIHB5dGVzdCBwbHVnaW4gY29tbWFuZGxpbmUgYXJndW1lbnRzIG1heSBpbmNsdWRlIGEgcGF0
aCwgYXMgaW4KKyAgICBgYHB5dGVzdCAtLWxvZy1vdXRwdXQgLi4vLi4vdGVzdC5sb2cgYXJnc2Bg
LiBUaGVuIGBgYXJnc2BgIGlzIG1hbmRhdG9yeSwKKyAgICBvdGhlcndpc2UgcHl0ZXN0IHVzZXMg
dGhlIGZvbGRlciBvZiB0ZXN0LmxvZyBmb3Igcm9vdGRpciBkZXRlcm1pbmF0aW9uCisgICAgKHNl
ZSBhbHNvIGBpc3N1ZSAxNDM1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzE0MzU+YF8pLgorICAgIEEgZG90IGBgLmBgIGZvciByZWZlcmVuY2luZyB0byB0aGUg
Y3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyBhbHNvCisgICAgcG9zc2libGUuCiAKLSAgICBw
eXRlc3QgLXJhIC1xIC12IC1tIHNsb3cKIAotTm90ZSB0aGF0IGFzIHVzdWFsIGZvciBvdGhlciBj
b21tYW5kLWxpbmUgYXBwbGljYXRpb25zLCBpbiBjYXNlIG9mIGNvbmZsaWN0aW5nIG9wdGlvbnMg
dGhlIGxhc3Qgb25lIHdpbnMsIHNvIHRoZSBleGFtcGxlCi1hYm92ZSB3aWxsIHNob3cgdmVyYm9z
ZSBvdXRwdXQgYmVjYXVzZSBgYC12YGAgb3ZlcndyaXRlcyBgYC1xYGAuCisuLiBfYGhvdyB0byBj
aGFuZ2UgY29tbWFuZCBsaW5lIG9wdGlvbnMgZGVmYXVsdHNgOgorLi4gX2BhZGRpbmcgZGVmYXVs
dCBvcHRpb25zYDoKIAogCiBCdWlsdGluIGNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb25zCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZGVwcmVjYXRpb25zLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9kZXByZWNhdGlvbnMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMTRkMWVlYjk4YWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2RlcHJlY2F0aW9ucy5yc3QKQEAgLTAsMCArMSw2NTYgQEAKKy4uIF9kZXByZWNhdGlvbnM6
CisKK0RlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT0K
KworVGhpcyBwYWdlIGxpc3RzIGFsbCBweXRlc3QgZmVhdHVyZXMgdGhhdCBhcmUgY3VycmVudGx5
IGRlcHJlY2F0ZWQgb3IgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gcGFzdCBtYWpvciByZWxlYXNlcy4K
K1RoZSBvYmplY3RpdmUgaXMgdG8gZ2l2ZSB1c2VycyBhIGNsZWFyIHJhdGlvbmFsZSB3aHkgYSBj
ZXJ0YWluIGZlYXR1cmUgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kIHdoYXQgYWx0ZXJuYXRpdmVzCitz
aG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorCisuLiBjb250ZW50czo6CisgICAgOmRlcHRoOiAzCisg
ICAgOmxvY2FsOgorCisKK0RlcHJlY2F0ZWQgRmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0K
KworQmVsb3cgaXMgYSBjb21wbGV0ZSBsaXN0IG9mIGFsbCBweXRlc3QgZmVhdHVyZXMgd2hpY2gg
YXJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZC4gVXNpbmcgdGhvc2UgZmVhdHVyZXMgd2lsbCBpc3N1
ZQorOmNsYXNzOmBQeXRlc3RXYXJuaW5nYCBvciBzdWJjbGFzc2VzLCB3aGljaCBjYW4gYmUgZmls
dGVyZWQgdXNpbmcgOnJlZjpgc3RhbmRhcmQgd2FybmluZyBmaWx0ZXJzIDx3YXJuaW5ncz5gLgor
CisKK1RoZSBgYHB5dGVzdF93YXJuaW5nX2NhcHR1cmVkYGAgaG9vaworfn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIGRlcHJlY2F0ZWQ6OiA2LjAKKworVGhpcyBob29r
IGhhcyBhbiBgaXRlbWAgcGFyYW1ldGVyIHdoaWNoIGNhbm5vdCBiZSBzZXJpYWxpemVkIGJ5IGBg
cHl0ZXN0LXhkaXN0YGAuCisKK1VzZSB0aGUgYGBweXRlc3Rfd2FybmluZ19yZWNvcmVkYGAgaG9v
ayBpbnN0ZWFkLCB3aGljaCByZXBsYWNlcyB0aGUgYGBpdGVtYGAgcGFyYW1ldGVyCitieSBhIGBg
bm9kZWlkYGAgcGFyYW1ldGVyLgorCitUaGUgYGBweXRlc3QuY29sbGVjdGBgIG1vZHVsZQorfn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gZGVwcmVjYXRlZDo6IDYuMAorCitUaGUg
YGBweXRlc3QuY29sbGVjdGBgIG1vZHVsZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgcHVibGlj
IEFQSSwgYWxsIGl0cyBuYW1lcworc2hvdWxkIG5vdyBiZSBpbXBvcnRlZCBmcm9tIGBgcHl0ZXN0
YGAgZGlyZWN0bHkgaW5zdGVhZC4KKworCitUaGUgYGBweXRlc3QuX2ZpbGxmdW5jYXJnc2BgIGZ1
bmN0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
CisKKy4uIGRlcHJlY2F0ZWQ6OiA2LjAKKworVGhpcyBmdW5jdGlvbiB3YXMga2VwdCBmb3IgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGFuIG9sZGVyIHBsdWdpbi4KKworSXQncyBmdW5jdGlv
bmFsaXR5IGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LCBidXQgaWYgeW91IG11c3Qg
cmVwbGFjZQoraXQsIHVzZSBgZnVuY3Rpb24uX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpYCBpbnN0
ZWFkLCB0aG91Z2ggbm90ZSB0aGlzIGlzIG5vdAorYSBwdWJsaWMgQVBJIGFuZCBtYXkgYnJlYWsg
aW4gdGhlIGZ1dHVyZS4KKworCitSZW1vdmVkIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tCisK
K0FzIHN0YXRlZCBpbiBvdXIgOnJlZjpgYmFja3dhcmRzLWNvbXBhdGliaWxpdHlgIHBvbGljeSwg
ZGVwcmVjYXRlZCBmZWF0dXJlcyBhcmUgcmVtb3ZlZCBvbmx5IGluIG1ham9yIHJlbGVhc2VzIGFm
dGVyCithbiBhcHByb3ByaWF0ZSBwZXJpb2Qgb2YgZGVwcmVjYXRpb24gaGFzIHBhc3NlZC4KKwor
YGAtLW5vLXByaW50LWxvZ3NgYCBjb21tYW5kLWxpbmUgb3B0aW9uCit+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gZGVwcmVjYXRlZDo6IDUuNAorLi4gdmVyc2lv
bnJlbW92ZWQ6OiA2LjAKKworCitUaGUgYGAtLW5vLXByaW50LWxvZ3NgYCBvcHRpb24gYW5kIGBg
bG9nX3ByaW50YGAgaW5pIHNldHRpbmcgYXJlIHJlbW92ZWQuIElmCit5b3UgdXNlZCB0aGVtLCBw
bGVhc2UgdXNlIGBgLS1zaG93LWNhcHR1cmVgYCBpbnN0ZWFkLgorCitBIGBgLS1zaG93LWNhcHR1
cmVgYCBjb21tYW5kLWxpbmUgb3B0aW9uIHdhcyBhZGRlZCBpbiBgYHB5dGVzdCAzLjUuMGBgIHdo
aWNoIGFsbG93cyB0byBzcGVjaWZ5IGhvdyB0bworZGlzcGxheSBjYXB0dXJlZCBvdXRwdXQgd2hl
biB0ZXN0cyBmYWlsOiBgYG5vYGAsIGBgc3Rkb3V0YGAsIGBgc3RkZXJyYGAsIGBgbG9nYGAgb3Ig
YGBhbGxgYCAodGhlIGRlZmF1bHQpLgorCisKKworUmVzdWx0IGxvZyAoYGAtLXJlc3VsdC1sb2dg
YCkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIGRlcHJlY2F0ZWQ6OiA0LjAK
Ky4uIHZlcnNpb25yZW1vdmVkOjogNi4wCisKK1RoZSBgYC0tcmVzdWx0LWxvZ2BgIG9wdGlvbiBw
cm9kdWNlcyBhIHN0cmVhbSBvZiB0ZXN0IHJlcG9ydHMgd2hpY2ggY2FuIGJlCithbmFseXNlZCBh
dCBydW50aW1lLCBidXQgaXQgdXNlcyBhIGN1c3RvbSBmb3JtYXQgd2hpY2ggcmVxdWlyZXMgdXNl
cnMgdG8gaW1wbGVtZW50IHRoZWlyIG93bgorcGFyc2VyLgorCitUaGUgIGBweXRlc3QtcmVwb3J0
bG9nIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtcmVwb3J0bG9nPmBfXyBw
bHVnaW4gcHJvdmlkZXMgYSBgYC0tcmVwb3J0LWxvZ2BgIG9wdGlvbiwgYSBtb3JlIHN0YW5kYXJk
IGFuZCBleHRlbnNpYmxlIGFsdGVybmF0aXZlLCBwcm9kdWNpbmcKK29uZSBKU09OIG9iamVjdCBw
ZXItbGluZSwgYW5kIHNob3VsZCBjb3ZlciB0aGUgc2FtZSB1c2UgY2FzZXMuIFBsZWFzZSB0cnkg
aXQgb3V0IGFuZCBwcm92aWRlIGZlZWRiYWNrLgorCitUaGUgYGBweXRlc3QtcmVwb3J0bG9nYGAg
cGx1Z2luIG1pZ2h0IGV2ZW4gYmUgbWVyZ2VkIGludG8gdGhlIGNvcmUKK2F0IHNvbWUgcG9pbnQs
IGRlcGVuZGluZyBvbiB0aGUgcGxhbnMgZm9yIHRoZSBwbHVnaW5zIGFuZCBudW1iZXIgb2YgdXNl
cnMgdXNpbmcgaXQuCisKK2BgcHl0ZXN0X2NvbGxlY3RfZGlyZWN0b3J5YGAgaG9vaworfn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNi4wCisK
K1RoZSBgYHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeWBgIGhhcyBub3Qgd29ya2VkIHByb3Blcmx5
IGZvciB5ZWFycyAoaXQgd2FzIGNhbGxlZAorYnV0IHRoZSByZXN1bHRzIHdlcmUgaWdub3JlZCku
IFVzZXJzIG1heSBjb25zaWRlciB1c2luZyA6ZnVuYzpgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5
aXRlbXMgPF9weXRlc3QuaG9va3NwZWMucHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXM+YCBp
bnN0ZWFkLgorCitUZXJtaW5hbFJlcG9ydGVyLndyaXRlcgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA2LjAKKworVGhlIGBgVGVybWluYWxSZXBvcnRlci53
cml0ZXJgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vIGxvbmdl
ciBiZSB1c2VkLiBUaGlzCit3YXMgaW5hZHZlcnRlbnRseSBleHBvc2VkIGFzIHBhcnQgb2YgdGhl
IHB1YmxpYyBBUEkgb2YgdGhhdCBwbHVnaW4gYW5kIHRpZXMgaXQgdG9vIG11Y2gKK3dpdGggYGBw
eS5pby5UZXJtaW5hbFdyaXRlcmBgLgorCitQbHVnaW5zIHRoYXQgdXNlZCBgYFRlcm1pbmFsUmVw
b3J0ZXIud3JpdGVyYGAgZGlyZWN0bHkgc2hvdWxkIGluc3RlYWQgdXNlIGBgVGVybWluYWxSZXBv
cnRlcmBgCittZXRob2RzIHRoYXQgcHJvdmlkZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LgorCitg
YGp1bml0X2ZhbWlseWBgIGRlZmF1bHQgdmFsdWUgY2hhbmdlIHRvICJ4dW5pdDIiCit+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25j
aGFuZ2VkOjogNi4wCisKK1RoZSBkZWZhdWx0IHZhbHVlIG9mIGBganVuaXRfZmFtaWx5YGAgb3B0
aW9uIHdpbGwgY2hhbmdlIHRvIGBgeHVuaXQyYGAgaW4gcHl0ZXN0IDYuMCwgd2hpY2gKK2lzIGFu
IHVwZGF0ZSBvZiB0aGUgb2xkIGBgeHVuaXQxYGAgZm9ybWF0IGFuZCBpcyBzdXBwb3J0ZWQgYnkg
ZGVmYXVsdCBpbiBtb2Rlcm4gdG9vbHMKK3RoYXQgbWFuaXB1bGF0ZSB0aGlzIHR5cGUgb2YgZmls
ZSAoZm9yIGV4YW1wbGUsIEplbmtpbnMsIEF6dXJlIFBpcGVsaW5lcywgZXRjLikuCisKK1VzZXJz
IGFyZSByZWNvbW1lbmRlZCB0byB0cnkgdGhlIG5ldyBgYHh1bml0MmBgIGZvcm1hdCBhbmQgc2Vl
IGlmIHRoZWlyIHRvb2xpbmcgdGhhdCBjb25zdW1lcyB0aGUgSlVuaXQKK1hNTCBmaWxlIHN1cHBv
cnRzIGl0LgorCitUbyB1c2UgdGhlIG5ldyBmb3JtYXQsIHVwZGF0ZSB5b3VyIGBgcHl0ZXN0Lmlu
aWBgOgorCisuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICBbcHl0ZXN0XQorICAgIGp1bml0X2Zh
bWlseT14dW5pdDIKKworSWYgeW91IGRpc2NvdmVyIHRoYXQgeW91ciB0b29saW5nIGRvZXMgbm90
IHN1cHBvcnQgdGhlIG5ldyBmb3JtYXQsIGFuZCB3YW50IHRvIGtlZXAgdXNpbmcgdGhlCitsZWdh
Y3kgdmVyc2lvbiwgc2V0IHRoZSBvcHRpb24gdG8gYGBsZWdhY3lgYCBpbnN0ZWFkOgorCisuLiBj
b2RlLWJsb2NrOjogaW5pCisKKyAgICBbcHl0ZXN0XQorICAgIGp1bml0X2ZhbWlseT1sZWdhY3kK
KworQnkgdXNpbmcgYGBsZWdhY3lgYCB5b3Ugd2lsbCBrZWVwIHVzaW5nIHRoZSBsZWdhY3kveHVu
aXQxIGZvcm1hdCB3aGVuIHVwZ3JhZGluZyB0bworcHl0ZXN0IDYuMCwgd2hlcmUgdGhlIGRlZmF1
bHQgZm9ybWF0IHdpbGwgYmUgYGB4dW5pdDJgYC4KKworSW4gb3JkZXIgdG8gbGV0IHVzZXJzIGtu
b3cgYWJvdXQgdGhlIHRyYW5zaXRpb24sIHB5dGVzdCB3aWxsIGlzc3VlIGEgd2FybmluZyBpbiBj
YXNlCit0aGUgYGAtLWp1bml0eG1sYGAgb3B0aW9uIGlzIGdpdmVuIGluIHRoZSBjb21tYW5kIGxp
bmUgYnV0IGBganVuaXRfZmFtaWx5YGAgaXMgbm90IGV4cGxpY2l0bHkKK2NvbmZpZ3VyZWQgaW4g
YGBweXRlc3QuaW5pYGAuCisKK1NlcnZpY2VzIGtub3duIHRvIHN1cHBvcnQgdGhlIGBgeHVuaXQy
YGAgZm9ybWF0OgorCisqIGBKZW5raW5zIDxodHRwczovL3d3dy5qZW5raW5zLmlvLz5gX18gd2l0
aCB0aGUgYEpVbml0IDxodHRwczovL3BsdWdpbnMuamVua2lucy5pby9qdW5pdD5gX18gcGx1Z2lu
LgorKiBgQXp1cmUgUGlwZWxpbmVzIDxodHRwczovL2F6dXJlLm1pY3Jvc29mdC5jb20vZW4tdXMv
c2VydmljZXMvZGV2b3BzL3BpcGVsaW5lcz5gX18uCisKK05vZGUgQ29uc3RydWN0aW9uIGNoYW5n
ZWQgdG8gYGBOb2RlLmZyb21fcGFyZW50YGAKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiA2LjAKKworVGhlIGNv
bnN0cnVjdGlvbiBvZiBub2RlcyBub3cgc2hvdWxkIHVzZSB0aGUgbmFtZWQgY29uc3RydWN0b3Ig
YGBmcm9tX3BhcmVudGBgLgorVGhpcyBsaW1pdGF0aW9uIGluIGFwaSBzdXJmYWNlIGludGVuZHMg
dG8gZW5hYmxlIGJldHRlci9zaW1wbGVyIHJlZmFjdG9yaW5nIG9mIHRoZSBjb2xsZWN0aW9uIHRy
ZWUuCisKK1RoaXMgbWVhbnMgdGhhdCBpbnN0ZWFkIG9mIDpjb2RlOmBNeUl0ZW0obmFtZT0iZm9v
IiwgcGFyZW50PWNvbGxlY3Rvciwgb2JqPTQyKWAKK29uZSBub3cgaGFzIHRvIGludm9rZSA6Y29k
ZTpgTXlJdGVtLmZyb21fcGFyZW50KGNvbGxlY3RvciwgbmFtZT0iZm9vIilgLgorCitQbHVnaW5z
IHRoYXQgd2lzaCB0byBzdXBwb3J0IG9sZGVyIHZlcnNpb25zIG9mIHB5dGVzdCBhbmQgc3VwcHJl
c3MgdGhlIHdhcm5pbmcgY2FuIHVzZQorYGhhc2F0dHJgIHRvIGNoZWNrIGlmIGBmcm9tX3BhcmVu
dGAgZXhpc3RzIGluIHRoYXQgdmVyc2lvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisg
ICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yLCBuYW1lLCBvYmopOgor
ICAgICAgICBpZiBoYXNhdHRyKE15SXRlbSwgImZyb21fcGFyZW50Iik6CisgICAgICAgICAgICBp
dGVtID0gTXlJdGVtLmZyb21fcGFyZW50KGNvbGxlY3RvciwgbmFtZT0iZm9vIikKKyAgICAgICAg
ICAgIGl0ZW0ub2JqID0gNDIKKyAgICAgICAgICAgIHJldHVybiBpdGVtCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICByZXR1cm4gTXlJdGVtKG5hbWU9ImZvbyIsIHBhcmVudD1jb2xsZWN0b3Is
IG9iaj00MikKKworTm90ZSB0aGF0IGBgZnJvbV9wYXJlbnRgYCBzaG91bGQgb25seSBiZSBjYWxs
ZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHBhcmFtZXRlcnMuCisKKworYGBweXRl
c3QuZml4dHVyZWBgIGFyZ3VtZW50cyBhcmUga2V5d29yZCBvbmx5Cit+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA2LjAK
KworUGFzc2luZyBhcmd1bWVudHMgdG8gcHl0ZXN0LmZpeHR1cmUoKSBhcyBwb3NpdGlvbmFsIGFy
Z3VtZW50cyBoYXMgYmVlbiByZW1vdmVkIC0gcGFzcyB0aGVtIGJ5IGtleXdvcmQgaW5zdGVhZC4K
KworYGBmdW5jYXJnbmFtZXNgYCBhbGlhcyBmb3IgYGBmaXh0dXJlbmFtZXNgYAorfn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9ucmVtb3ZlZDo6
IDYuMAorCitUaGUgYGBGaXh0dXJlUmVxdWVzdGBgLCBgYE1ldGFmdW5jYGAsIGFuZCBgYEZ1bmN0
aW9uYGAgY2xhc3NlcyB0cmFjayB0aGUgbmFtZXMgb2YKK3RoZWlyIGFzc29jaWF0ZWQgZml4dHVy
ZXMsIHdpdGggdGhlIGFwdGx5LW5hbWVkIGBgZml4dHVyZW5hbWVzYGAgYXR0cmlidXRlLgorCitQ
cmlvciB0byBweXRlc3QgMi4zLCB0aGlzIGF0dHJpYnV0ZSB3YXMgbmFtZWQgYGBmdW5jYXJnbmFt
ZXNgYCwgYW5kIHdlIGhhdmUga2VwdAordGhhdCBhcyBhbiBhbGlhcyBzaW5jZS4gIEl0IGlzIGZp
bmFsbHkgZHVlIGZvciByZW1vdmFsLCBhcyBpdCBpcyBvZnRlbiBjb25mdXNpbmcKK2luIHBsYWNl
cyB3aGVyZSB3ZSBvciBwbHVnaW4gYXV0aG9ycyBtdXN0IGRpc3Rpbmd1aXNoIGJldHdlZW4gZml4
dHVyZSBuYW1lcyBhbmQKK25hbWVzIHN1cHBsaWVkIGJ5IG5vbi1maXh0dXJlIHRoaW5ncyBzdWNo
IGFzIGBgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemVgYC4KKworCitgYHB5dGVzdC5jb25maWdgYCBn
bG9iYWwKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9ucmVtb3ZlZDo6IDUu
MAorCitUaGUgYGBweXRlc3QuY29uZmlnYGAgZ2xvYmFsIG9iamVjdCBpcyBkZXByZWNhdGVkLiAg
SW5zdGVhZCB1c2UKK2BgcmVxdWVzdC5jb25maWdgYCAodmlhIHRoZSBgYHJlcXVlc3RgYCBmaXh0
dXJlKSBvciBpZiB5b3UgYXJlIGEgcGx1Z2luIGF1dGhvcgordXNlIHRoZSBgYHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKWBgIGhvb2suIE5vdGUgdGhhdCBtYW55IGhvb2tzIGNhbiBhbHNvIGFjY2Vz
cwordGhlIGBgY29uZmlnYGAgb2JqZWN0IGluZGlyZWN0bHksIHRocm91Z2ggYGBzZXNzaW9uLmNv
bmZpZ2BgIG9yIGBgaXRlbS5jb25maWdgYCBmb3IgZXhhbXBsZS4KKworCisuLiBfYHJhaXNlcyBt
ZXNzYWdlIGRlcHJlY2F0ZWRgOgorCitgYCJtZXNzYWdlImBgIHBhcmFtZXRlciBvZiBgYHB5dGVz
dC5yYWlzZXNgYAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K
KworLi4gdmVyc2lvbnJlbW92ZWQ6OiA1LjAKKworSXQgaXMgYSBjb21tb24gbWlzdGFrZSB0byB0
aGluayB0aGlzIHBhcmFtZXRlciB3aWxsIG1hdGNoIHRoZSBleGNlcHRpb24gbWVzc2FnZSwgd2hp
bGUgaW4gZmFjdAoraXQgb25seSBzZXJ2ZXMgdG8gcHJvdmlkZSBhIGN1c3RvbSBtZXNzYWdlIGlu
IGNhc2UgdGhlIGBgcHl0ZXN0LnJhaXNlc2BgIGNoZWNrIGZhaWxzLiBUbyBwcmV2ZW50Cit1c2Vy
cyBmcm9tIG1ha2luZyB0aGlzIG1pc3Rha2UsIGFuZCBiZWNhdXNlIGl0IGlzIGJlbGlldmVkIHRv
IGJlIGxpdHRsZSB1c2VkLCBweXRlc3QgaXMKK2RlcHJlY2F0aW5nIGl0IHdpdGhvdXQgcHJvdmlk
aW5nIGFuIGFsdGVybmF0aXZlIGZvciB0aGUgbW9tZW50LgorCitJZiB5b3UgaGF2ZSBhIHZhbGlk
IHVzZSBjYXNlIGZvciB0aGlzIHBhcmFtZXRlciwgY29uc2lkZXIgdGhhdCB0byBvYnRhaW4gdGhl
IHNhbWUgcmVzdWx0cworeW91IGNhbiBqdXN0IGNhbGwgYGBweXRlc3QuZmFpbGBgIG1hbnVhbGx5
IGF0IHRoZSBlbmQgb2YgdGhlIGBgd2l0aGBgIHN0YXRlbWVudC4KKworRm9yIGV4YW1wbGU6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUaW1lb3V0
RXJyb3IsIG1lc3NhZ2U9IkNsaWVudCBnb3QgdW5leHBlY3RlZCBtZXNzYWdlIik6CisgICAgICAg
IHdhaXRfZm9yKHdlYnNvY2tldC5yZWN2KCksIDAuNSkKKworCitCZWNvbWVzOgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVGltZW91dEVycm9yKToK
KyAgICAgICAgd2FpdF9mb3Iod2Vic29ja2V0LnJlY3YoKSwgMC41KQorICAgICAgICBweXRlc3Qu
ZmFpbCgiQ2xpZW50IGdvdCB1bmV4cGVjdGVkIG1lc3NhZ2UiKQorCisKK0lmIHlvdSBzdGlsbCBo
YXZlIGNvbmNlcm5zIGFib3V0IHRoaXMgZGVwcmVjYXRpb24gYW5kIGZ1dHVyZSByZW1vdmFsLCBw
bGVhc2UgY29tbWVudCBvbgorYGlzc3VlICMzOTc0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0
LWRldi9weXRlc3QvaXNzdWVzLzM5NzQ+YF9fLgorCisKKy4uIF9yYWlzZXMtd2FybnMtZXhlYzoK
KworYGByYWlzZXNgYCAvIGBgd2FybnNgYCB3aXRoIGEgc3RyaW5nIGFzIHRoZSBzZWNvbmQgYXJn
dW1lbnQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNS4wCisKK1VzZSB0aGUgY29udGV4dCBt
YW5hZ2VyIGZvcm0gb2YgdGhlc2UgaW5zdGVhZC4gIFdoZW4gbmVjZXNzYXJ5LCBpbnZva2UgYGBl
eGVjYGAKK2RpcmVjdGx5LgorCitFeGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisK
KyAgICBweXRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCAiMSAvIDAiKQorICAgIHB5dGVz
dC5yYWlzZXMoU3ludGF4RXJyb3IsICJhICQgYiIpCisKKyAgICBweXRlc3Qud2FybnMoRGVwcmVj
YXRpb25XYXJuaW5nLCAibXlfZnVuY3Rpb24oKSIpCisgICAgcHl0ZXN0Lndhcm5zKFN5bnRheFdh
cm5pbmcsICJhc3NlcnQoMSwgMikiKQorCitCZWNvbWVzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAg
ICAxIC8gMAorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgIGV4
ZWMoImEgJCBiIikgICMgZXhlYyBpcyByZXF1aXJlZCBmb3IgaW52YWxpZCBzeW50YXgKKworICAg
IHdpdGggcHl0ZXN0Lndhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgIG15X2Z1bmN0
aW9uKCkKKyAgICB3aXRoIHB5dGVzdC53YXJucyhTeW50YXhXYXJuaW5nKToKKyAgICAgICAgZXhl
YygiYXNzZXJ0KDEsIDIpIikgICMgZXhlYyBpcyB1c2VkIHRvIGF2b2lkIGEgdG9wLWxldmVsIHdh
cm5pbmcKKworCisKKworVXNpbmcgYGBDbGFzc2BgIGluIGN1c3RvbSBDb2xsZWN0b3JzCit+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0
LjAKKworVXNpbmcgb2JqZWN0cyBuYW1lZCBgYCJDbGFzcyJgYCBhcyBhIHdheSB0byBjdXN0b21p
emUgdGhlIHR5cGUgb2Ygbm9kZXMgdGhhdCBhcmUgY29sbGVjdGVkIGluIGBgQ29sbGVjdG9yYGAK
K3N1YmNsYXNzZXMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlcnMgaW5zdGVhZCBzaG91bGQgdXNl
IGBgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbWBgIHRvIGN1c3RvbWl6ZSBub2RlIHR5cGVzIGR1
cmluZworY29sbGVjdGlvbi4KKworVGhpcyBpc3N1ZSBzaG91bGQgYWZmZWN0IG9ubHkgYWR2YW5j
ZWQgcGx1Z2lucyB3aG8gY3JlYXRlIG5ldyBjb2xsZWN0aW9uIHR5cGVzLCBzbyBpZiB5b3Ugc2Vl
IHRoaXMgd2FybmluZworbWVzc2FnZSBwbGVhc2UgY29udGFjdCB0aGUgYXV0aG9ycyBzbyB0aGV5
IGNhbiBjaGFuZ2UgdGhlIGNvZGUuCisKKworbWFya3MgaW4gYGBweXRlc3QubWFyay5wYXJhbWV0
cml6ZWBgCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lv
bnJlbW92ZWQ6OiA0LjAKKworQXBwbHlpbmcgbWFya3MgdG8gdmFsdWVzIG9mIGEgYGBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZWBgIGNhbGwgaXMgbm93IGRlcHJlY2F0ZWQuIEZvciBleGFtcGxlOgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
CisgICAgICAgICJhLCBiIiwKKyAgICAgICAgWworICAgICAgICAgICAgKDMsIDkpLAorICAgICAg
ICAgICAgcHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJmbGFreSIpKDYsIDM2KSwKKyAgICAgICAg
ICAgICgxMCwgMTAwKSwKKyAgICAgICAgICAgICgyMCwgMjAwKSwKKyAgICAgICAgICAgICg0MCwg
NDAwKSwKKyAgICAgICAgICAgICg1MCwgNTAwKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVm
IHRlc3RfZm9vKGEsIGIpOgorICAgICAgICAuLi4KKworVGhpcyBjb2RlIGFwcGxpZXMgdGhlIGBg
cHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJmbGFreSIpYGAgbWFyayB0byB0aGUgYGAoNiwgMzYp
YGAgdmFsdWUgb2YgdGhlIGFib3ZlIHBhcmFtZXRyaXphdGlvbgorY2FsbC4KKworVGhpcyB3YXMg
Y29uc2lkZXJlZCBoYXJkIHRvIHJlYWQgYW5kIHVuZGVyc3RhbmQsIGFuZCBhbHNvIGl0cyBpbXBs
ZW1lbnRhdGlvbiBwcmVzZW50ZWQgcHJvYmxlbXMgdG8gdGhlIGNvZGUgcHJldmVudGluZworZnVy
dGhlciBpbnRlcm5hbCBpbXByb3ZlbWVudHMgaW4gdGhlIG1hcmtzIGFyY2hpdGVjdHVyZS4KKwor
VG8gdXBkYXRlIHRoZSBjb2RlLCB1c2UgYGBweXRlc3QucGFyYW1gYDoKKworLi4gY29kZS1ibG9j
azo6IHB5dGhvbgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiYSwg
YiIsCisgICAgICAgIFsKKyAgICAgICAgICAgICgzLCA5KSwKKyAgICAgICAgICAgIHB5dGVzdC5w
YXJhbSg2LCAzNiwgbWFya3M9cHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJmbGFreSIpKSwKKyAg
ICAgICAgICAgICgxMCwgMTAwKSwKKyAgICAgICAgICAgICgyMCwgMjAwKSwKKyAgICAgICAgICAg
ICg0MCwgNDAwKSwKKyAgICAgICAgICAgICg1MCwgNTAwKSwKKyAgICAgICAgXSwKKyAgICApCisg
ICAgZGVmIHRlc3RfZm9vKGEsIGIpOgorICAgICAgICAuLi4KKworCitgYHB5dGVzdF9mdW5jYXJn
X19gYCBwcmVmaXgKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9ucmVt
b3ZlZDo6IDQuMAorCitJbiB2ZXJ5IGVhcmx5IHB5dGVzdCB2ZXJzaW9ucyBmaXh0dXJlcyBjb3Vs
ZCBiZSBkZWZpbmVkIHVzaW5nIHRoZSBgYHB5dGVzdF9mdW5jYXJnX19gYCBwcmVmaXg6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiBweXRlc3RfZnVuY2FyZ19fZGF0YSgpOgor
ICAgICAgICByZXR1cm4gU29tZURhdGEoKQorCitTd2l0Y2ggb3ZlciB0byB0aGUgYGBAcHl0ZXN0
LmZpeHR1cmVgYCBkZWNvcmF0b3I6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIEBw
eXRlc3QuZml4dHVyZQorICAgIGRlZiBkYXRhKCk6CisgICAgICAgIHJldHVybiBTb21lRGF0YSgp
CisKKworCitbcHl0ZXN0XSBzZWN0aW9uIGluIHNldHVwLmNmZyBmaWxlcworfn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKworYGBb
cHl0ZXN0XWBgIHNlY3Rpb25zIGluIGBgc2V0dXAuY2ZnYGAgZmlsZXMgc2hvdWxkIG5vdyBiZSBu
YW1lZCBgYFt0b29sOnB5dGVzdF1gYAordG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgZGlz
dHV0aWxzIGNvbW1hbmRzLgorCisKK01ldGFmdW5jLmFkZGNhbGwKK35+fn5+fn5+fn5+fn5+fn4K
KworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKworYGBfcHl0ZXN0LnB5dGhvbi5NZXRhZnVuYy5h
ZGRjYWxsYGAgd2FzIGEgcHJlY3Vyc29yIHRvIHRoZSBjdXJyZW50IHBhcmFtZXRyaXplZCBtZWNo
YW5pc20uIFVzZXJzIHNob3VsZCB1c2UKKzptZXRoOmBfcHl0ZXN0LnB5dGhvbi5NZXRhZnVuYy5w
YXJhbWV0cml6ZWAgaW5zdGVhZC4KKworRXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhv
bgorCisgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6CisgICAgICAgIG1l
dGFmdW5jLmFkZGNhbGwoeyJpIjogMX0sIGlkPSIxIikKKyAgICAgICAgbWV0YWZ1bmMuYWRkY2Fs
bCh7ImkiOiAyfSwgaWQ9IjIiKQorCitCZWNvbWVzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CisKKyAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKKyAgICAgICAgbWV0
YWZ1bmMucGFyYW1ldHJpemUoImkiLCBbMSwgMl0sIGlkcz1bIjEiLCAiMiJdKQorCisKK2BgY2Fj
aGVkX3NldHVwYGAKK35+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAK
KworYGByZXF1ZXN0LmNhY2hlZF9zZXR1cGBgIHdhcyB0aGUgcHJlY3Vyc29yIG9mIHRoZSBzZXR1
cC90ZWFyZG93biBtZWNoYW5pc20gYXZhaWxhYmxlIHRvIGZpeHR1cmVzLgorCitFeGFtcGxlOgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYg
ZGJfc2Vzc2lvbigpOgorICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNoZWRfc2V0dXAoCisgICAg
ICAgICAgICBzZXR1cD1TZXNzaW9uLmNyZWF0ZSwgdGVhcmRvd249bGFtYmRhIHNlc3Npb246IHNl
c3Npb24uY2xvc2UoKSwgc2NvcGU9Im1vZHVsZSIKKyAgICAgICAgKQorCitUaGlzIHNob3VsZCBi
ZSB1cGRhdGVkIHRvIG1ha2UgdXNlIG9mIHN0YW5kYXJkIGZpeHR1cmUgbWVjaGFuaXNtczoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1
bGUiKQorICAgIGRlZiBkYl9zZXNzaW9uKCk6CisgICAgICAgIHNlc3Npb24gPSBTZXNzaW9uLmNy
ZWF0ZSgpCisgICAgICAgIHlpZWxkIHNlc3Npb24KKyAgICAgICAgc2Vzc2lvbi5jbG9zZSgpCisK
KworWW91IGNhbiBjb25zdWx0IGBmdW5jYXJnIGNvbXBhcmlzb24gc2VjdGlvbiBpbiB0aGUgZG9j
cyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2Z1bmNhcmdfY29tcGFyZS5odG1s
PmBfIGZvcgorbW9yZSBpbmZvcm1hdGlvbi4KKworCitweXRlc3RfcGx1Z2lucyBpbiBub24tdG9w
LWxldmVsIGNvbmZ0ZXN0IGZpbGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25yZW1vdmVkOjogNC4wCisKK0RlZmluaW5nIDpnbG9i
YWx2YXI6YHB5dGVzdF9wbHVnaW5zYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBub24tdG9wLWxldmVs
IGNvbmZ0ZXN0LnB5CitmaWxlcyBiZWNhdXNlIHRoZXkgd2lsbCBhY3RpdmF0ZSByZWZlcmVuY2Vk
IHBsdWdpbnMgKmdsb2JhbGx5Kiwgd2hpY2ggaXMgc3VycHJpc2luZyBiZWNhdXNlIGZvciBhbGwg
b3RoZXIgcHl0ZXN0CitmZWF0dXJlcyBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMgYXJlIG9ubHkgKmFj
dGl2ZSogZm9yIHRlc3RzIGF0IG9yIGJlbG93IGl0LgorCisKK2BgQ29uZmlnLndhcm5gYCBhbmQg
YGBOb2RlLndhcm5gYAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZl
cnNpb25yZW1vdmVkOjogNC4wCisKK1Rob3NlIG1ldGhvZHMgd2VyZSBwYXJ0IG9mIHRoZSBpbnRl
cm5hbCBweXRlc3Qgd2FybmluZ3Mgc3lzdGVtLCBidXQgc2luY2UgYGAzLjhgYCBweXRlc3QgaXMg
dXNpbmcgdGhlIGJ1aWx0aW4gd2FybmluZworc3lzdGVtIGZvciBpdHMgb3duIHdhcm5pbmdzLCBz
byB0aG9zZSB0d28gZnVuY3Rpb25zIGFyZSBub3cgZGVwcmVjYXRlZC4KKworYGBDb25maWcud2Fy
bmBgIHNob3VsZCBiZSByZXBsYWNlZCBieSBjYWxscyB0byB0aGUgc3RhbmRhcmQgYGB3YXJuaW5n
cy53YXJuYGAsIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGNvbmZp
Zy53YXJuKCJDMSIsICJzb21lIHdhcm5pbmciKQorCitCZWNvbWVzOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCisKKyAgICB3YXJuaW5ncy53YXJuKHB5dGVzdC5QeXRlc3RXYXJuaW5nKCJzb21l
IHdhcm5pbmciKSkKKworYGBOb2RlLndhcm5gYCBub3cgc3VwcG9ydHMgdHdvIHNpZ25hdHVyZXM6
CisKKyogYGBub2RlLndhcm4oUHl0ZXN0V2FybmluZygic29tZSBtZXNzYWdlIikpYGA6IGlzIG5v
dyB0aGUgKipyZWNvbW1lbmRlZCoqIHdheSB0byBjYWxsIHRoaXMgZnVuY3Rpb24uCisgIFRoZSB3
YXJuaW5nIGluc3RhbmNlIG11c3QgYmUgYSBQeXRlc3RXYXJuaW5nIG9yIHN1YmNsYXNzLgorCisq
IGBgbm9kZS53YXJuKCJDSSIsICJzb21lIG1lc3NhZ2UiKWBgOiB0aGlzIGNvZGUvbWVzc2FnZSBm
b3JtIGhhcyBiZWVuICoqcmVtb3ZlZCoqIGFuZCBzaG91bGQgYmUgY29udmVydGVkIHRvIHRoZSB3
YXJuaW5nIGluc3RhbmNlIGZvcm0gYWJvdmUuCisKK3JlY29yZF94bWxfcHJvcGVydHkKK35+fn5+
fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKworVGhlIGBgcmVjb3Jk
X3htbF9wcm9wZXJ0eWBgIGZpeHR1cmUgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhl
IG1vcmUgZ2VuZXJpYyBgYHJlY29yZF9wcm9wZXJ0eWBgLCB3aGljaAorY2FuIGJlIHVzZWQgYnkg
b3RoZXIgY29uc3VtZXJzIChmb3IgZXhhbXBsZSBgYHB5dGVzdC1odG1sYGApIHRvIG9idGFpbiBj
dXN0b20gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRlc3QgcnVuLgorCitUaGlzIGlzIGp1c3QgYSBt
YXR0ZXIgb2YgcmVuYW1pbmcgdGhlIGZpeHR1cmUgYXMgdGhlIEFQSSBpcyB0aGUgc2FtZToKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIHRlc3RfZm9vKHJlY29yZF94bWxfcHJv
cGVydHkpOgorICAgICAgICAuLi4KKworQ2hhbmdlIHRvOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCisKKyAgICBkZWYgdGVzdF9mb28ocmVjb3JkX3Byb3BlcnR5KToKKyAgICAgICAgLi4uCisK
KworUGFzc2luZyBjb21tYW5kLWxpbmUgc3RyaW5nIHRvIGBgcHl0ZXN0Lm1haW4oKWBgCit+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lv
bnJlbW92ZWQ6OiA0LjAKKworUGFzc2luZyBhIGNvbW1hbmQtbGluZSBzdHJpbmcgdG8gYGBweXRl
c3QubWFpbigpYGAgaXMgZGVwcmVjYXRlZDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisg
ICAgcHl0ZXN0Lm1haW4oIi12IC1zIikKKworUGFzcyBhIGxpc3QgaW5zdGVhZDoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgorCisgICAgcHl0ZXN0Lm1haW4oWyItdiIsICItcyJdKQorCisKK0J5
IHBhc3NpbmcgYSBzdHJpbmcsIHVzZXJzIGV4cGVjdCB0aGF0IHB5dGVzdCB3aWxsIGludGVycHJl
dCB0aGF0IGNvbW1hbmQtbGluZSB1c2luZyB0aGUgc2hlbGwgcnVsZXMgdGhleSBhcmUgd29ya2lu
Zworb24gKGZvciBleGFtcGxlIGBgYmFzaGBgIG9yIGBgUG93ZXJzaGVsbGBgKSwgYnV0IHRoaXMg
aXMgdmVyeSBoYXJkL2ltcG9zc2libGUgdG8gZG8gaW4gYSBwb3J0YWJsZSB3YXkuCisKKworQ2Fs
bGluZyBmaXh0dXJlcyBkaXJlY3RseQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2
ZXJzaW9ucmVtb3ZlZDo6IDQuMAorCitDYWxsaW5nIGEgZml4dHVyZSBmdW5jdGlvbiBkaXJlY3Rs
eSwgYXMgb3Bwb3NlZCB0byByZXF1ZXN0IHRoZW0gaW4gYSB0ZXN0IGZ1bmN0aW9uLCBpcyBkZXBy
ZWNhdGVkLgorCitGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAg
QHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGNlbGwoKToKKyAgICAgICAgcmV0dXJuIC4uLgorCisK
KyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgZnVsbF9jZWxsKCk6CisgICAgICAgIGNlbGwg
PSBjZWxsKCkKKyAgICAgICAgY2VsbC5tYWtlX2Z1bGwoKQorICAgICAgICByZXR1cm4gY2VsbAor
CitUaGlzIGlzIGEgZ3JlYXQgc291cmNlIG9mIGNvbmZ1c2lvbiB0byBuZXcgdXNlcnMsIHdoaWNo
IHdpbGwgb2Z0ZW4gY2FsbCB0aGUgZml4dHVyZSBmdW5jdGlvbnMgYW5kIHJlcXVlc3QgdGhlbSBm
cm9tIHRlc3QgZnVuY3Rpb25zIGludGVyY2hhbmdlYWJseSwgd2hpY2ggYnJlYWtzIHRoZSBmaXh0
dXJlIHJlc29sdXRpb24gbW9kZWwuCisKK0luIHRob3NlIGNhc2VzIGp1c3QgcmVxdWVzdCB0aGUg
ZnVuY3Rpb24gZGlyZWN0bHkgaW4gdGhlIGRlcGVuZGVudCBmaXh0dXJlOgorCisuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgY2VsbCgpOgorICAg
ICAgICByZXR1cm4gLi4uCisKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBmdWxsX2Nl
bGwoY2VsbCk6CisgICAgICAgIGNlbGwubWFrZV9mdWxsKCkKKyAgICAgICAgcmV0dXJuIGNlbGwK
KworQWx0ZXJuYXRpdmVseSBpZiB0aGUgZml4dHVyZSBmdW5jdGlvbiBpcyBjYWxsZWQgbXVsdGlw
bGUgdGltZXMgaW5zaWRlIGEgdGVzdCAobWFraW5nIGl0IGhhcmQgdG8gYXBwbHkgdGhlIGFib3Zl
IHBhdHRlcm4pIG9yCitpZiB5b3Ugd291bGQgbGlrZSB0byBtYWtlIG1pbmltYWwgY2hhbmdlcyB0
byB0aGUgY29kZSwgeW91IGNhbiBjcmVhdGUgYSBmaXh0dXJlIHdoaWNoIGNhbGxzIHRoZSBvcmln
aW5hbCBmdW5jdGlvbiB0b2dldGhlcgord2l0aCB0aGUgYGBuYW1lYGAgcGFyYW1ldGVyOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgY2VsbCgpOgorICAgICAgICByZXR1cm4g
Li4uCisKKworICAgIEBweXRlc3QuZml4dHVyZShuYW1lPSJjZWxsIikKKyAgICBkZWYgY2VsbF9m
aXh0dXJlKCk6CisgICAgICAgIHJldHVybiBjZWxsKCkKKworCitgYHlpZWxkYGAgdGVzdHMKK35+
fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9ucmVtb3ZlZDo6IDQuMAorCitweXRlc3Qgc3VwcG9y
dGVkIGBgeWllbGRgYC1zdHlsZSB0ZXN0cywgd2hlcmUgYSB0ZXN0IGZ1bmN0aW9uIGFjdHVhbGx5
IGBgeWllbGRgYCBmdW5jdGlvbnMgYW5kIHZhbHVlcwordGhhdCBhcmUgdGhlbiB0dXJuZWQgaW50
byBwcm9wZXIgdGVzdCBtZXRob2RzLiBFeGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CisKKyAgICBkZWYgY2hlY2soeCwgeSk6CisgICAgICAgIGFzc2VydCB4ICoqIHggPT0geQorCisK
KyAgICBkZWYgdGVzdF9zcXVhcmVkKCk6CisgICAgICAgIHlpZWxkIGNoZWNrLCAyLCA0CisgICAg
ICAgIHlpZWxkIGNoZWNrLCAzLCA5CisKK1RoaXMgd291bGQgcmVzdWx0IGludG8gdHdvIGFjdHVh
bCB0ZXN0IGZ1bmN0aW9ucyBiZWluZyBnZW5lcmF0ZWQuCisKK1RoaXMgZm9ybSBvZiB0ZXN0IGZ1
bmN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBmaXh0dXJlcyBwcm9wZXJseSwgYW5kIHVzZXJzIHNob3Vs
ZCBzd2l0Y2ggdG8gYGBweXRlc3QubWFyay5wYXJhbWV0cml6ZWBgOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIngsIHkiLCBbKDIsIDQp
LCAoMywgOSldKQorICAgIGRlZiB0ZXN0X3NxdWFyZWQoeCwgeSk6CisgICAgICAgIGFzc2VydCB4
ICoqIHggPT0geQorCitJbnRlcm5hbCBjbGFzc2VzIGFjY2Vzc2VkIHRocm91Z2ggYGBOb2RlYGAK
K35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9u
cmVtb3ZlZDo6IDQuMAorCitBY2Nlc3Mgb2YgYGBNb2R1bGVgYCwgYGBGdW5jdGlvbmBgLCBgYENs
YXNzYGAsIGBgSW5zdGFuY2VgYCwgYGBGaWxlYGAgYW5kIGBgSXRlbWBgIHRocm91Z2ggYGBOb2Rl
YGAgaW5zdGFuY2VzIG5vdyBpc3N1ZQordGhpcyB3YXJuaW5nOgorCisuLiBjb2RlLWJsb2NrOjog
dGV4dAorCisgICAgdXNhZ2Ugb2YgRnVuY3Rpb24uTW9kdWxlIGlzIGRlcHJlY2F0ZWQsIHBsZWFz
ZSB1c2UgcHl0ZXN0Lk1vZHVsZSBpbnN0ZWFkCisKK1VzZXJzIHNob3VsZCBqdXN0IGBgaW1wb3J0
IHB5dGVzdGBgIGFuZCBhY2Nlc3MgdGhvc2Ugb2JqZWN0cyB1c2luZyB0aGUgYGBweXRlc3RgYCBt
b2R1bGUuCisKK1RoaXMgaGFzIGJlZW4gZG9jdW1lbnRlZCBhcyBkZXByZWNhdGVkIGZvciB5ZWFy
cywgYnV0IG9ubHkgbm93IHdlIGFyZSBhY3R1YWxseSBlbWl0dGluZyBkZXByZWNhdGlvbiB3YXJu
aW5ncy4KKworYGBOb2RlLmdldF9tYXJrZXJgYAorfn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2
ZXJzaW9ucmVtb3ZlZDo6IDQuMAorCitBcyBwYXJ0IG9mIGEgbGFyZ2UgOnJlZjpgbWFya2VyLXJl
dmFtcGAsIGBgX3B5dGVzdC5ub2Rlcy5Ob2RlLmdldF9tYXJrZXJgYCBpcyByZW1vdmVkLiBTZWUK
KzpyZWY6YHRoZSBkb2N1bWVudGF0aW9uIDx1cGRhdGUgbWFya2VyIGNvZGU+YCBvbiB0aXBzIG9u
IGhvdyB0byB1cGRhdGUgeW91ciBjb2RlLgorCisKK2Bgc29tZWZ1bmN0aW9uLm1hcmtuYW1lYGAK
K35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbnJlbW92ZWQ6OiA0LjAKKwor
QXMgcGFydCBvZiBhIGxhcmdlIDpyZWY6YG1hcmtlci1yZXZhbXBgIHdlIGFscmVhZHkgZGVwcmVj
YXRlZCB1c2luZyBgYE1hcmtJbmZvYGAKK3RoZSBvbmx5IGNvcnJlY3Qgd2F5IHRvIGdldCBtYXJr
ZXJzIG9mIGFuIGVsZW1lbnQgaXMgdmlhIGBgbm9kZS5pdGVyX21hcmtlcnMobmFtZSlgYC4KKwor
CitgYHB5dGVzdF9uYW1lc3BhY2VgYAorfn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lv
bnJlbW92ZWQ6OiA0LjAKKworVGhpcyBob29rIGlzIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCBncmVh
dGx5IGNvbXBsaWNhdGVzIHRoZSBweXRlc3QgaW50ZXJuYWxzIHJlZ2FyZGluZyBjb25maWd1cmF0
aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgbWFraW5nIHNvbWUKK2J1ZyBmaXhlcyBhbmQgcmVmYWN0
b3JpbmdzIGltcG9zc2libGUuCisKK0V4YW1wbGUgb2YgdXNhZ2U6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KKworICAgIGNsYXNzIE15U3ltYm9sOgorICAgICAgICAuLi4KKworCisgICAgZGVm
IHB5dGVzdF9uYW1lc3BhY2UoKToKKyAgICAgICAgcmV0dXJuIHsibXlfc3ltYm9sIjogTXlTeW1i
b2woKX0KKworCitQbHVnaW4gYXV0aG9ycyByZWx5aW5nIG9uIHRoaXMgaG9vayBzaG91bGQgaW5z
dGVhZCByZXF1aXJlIHRoYXQgdXNlcnMgbm93IGltcG9ydCB0aGUgcGx1Z2luIG1vZHVsZXMgZGly
ZWN0bHkgKHdpdGggYW4gYXBwcm9wcmlhdGUgcHVibGljIEFQSSkuCisKK0FzIGEgc3RvcGdhcCBt
ZWFzdXJlLCBwbHVnaW4gYXV0aG9ycyBtYXkgc3RpbGwgaW5qZWN0IHRoZWlyIG5hbWVzIGludG8g
cHl0ZXN0J3MgbmFtZXNwYWNlLCB1c3VhbGx5IGR1cmluZyBgYHB5dGVzdF9jb25maWd1cmVgYDoK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgaW1wb3J0IHB5dGVzdAorCisKKyAgICBk
ZWYgcHl0ZXN0X2NvbmZpZ3VyZSgpOgorICAgICAgICBweXRlc3QubXlfc3ltYm9sID0gTXlTeW1i
b2woKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2RldmVsb3BtZW50X2d1aWRlLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9kZXZlbG9wbWVudF9ndWlkZS5yc3QKaW5kZXggNjllODY2
OTQzZTU3Li43NzA3NmQ0ODM0ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9kZXZl
bG9wbWVudF9ndWlkZS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2RldmVsb3BtZW50X2d1
aWRlLnJzdApAQCAtMiw1NCArMiw2IEBACiBEZXZlbG9wbWVudCBHdWlkZQogPT09PT09PT09PT09
PT09PT0KIAotU29tZSBnZW5lcmFsIGd1aWRlbGluZXMgcmVnYXJkaW5nIGRldmVsb3BtZW50IGlu
IHB5dGVzdCBmb3IgbWFpbnRhaW5lcnMgYW5kIGNvbnRyaWJ1dG9ycy4gTm90aGluZyBoZXJlCi1p
cyBzZXQgaW4gc3RvbmUgYW5kIGNhbid0IGJlIGNoYW5nZWQsIGZlZWwgZnJlZSB0byBzdWdnZXN0
IGltcHJvdmVtZW50cyBvciBjaGFuZ2VzIGluIHRoZSB3b3JrZmxvdy4KLQotCi1Db2RlIFN0eWxl
Ci0tLS0tLS0tLS0tCi0KLSogYFBFUC04IDxodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBz
L3BlcC0wMDA4PmBfCi0qIGBmbGFrZTggPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9mbGFrZTgv
PmBfIGZvciBxdWFsaXR5IGNoZWNrcwotKiBgaW52b2tlIDxodHRwOi8vd3d3LnB5aW52b2tlLm9y
Zy8+YF8gdG8gYXV0b21hdGUgZGV2ZWxvcG1lbnQgdGFza3MKLQotCi1CcmFuY2hlcwotLS0tLS0t
LS0KLQotV2UgaGF2ZSB0d28gbG9uZyB0ZXJtIGJyYW5jaGVzOgotCi0qIGBgbWFzdGVyYGA6IGNv
bnRhaW5zIHRoZSBjb2RlIGZvciB0aGUgbmV4dCBidWdmaXggcmVsZWFzZS4KLSogYGBmZWF0dXJl
c2BgOiBjb250YWlucyB0aGUgY29kZSB3aXRoIG5ldyBmZWF0dXJlcyBmb3IgdGhlIG5leHQgbWlu
b3IgcmVsZWFzZS4KLQotVGhlIG9mZmljaWFsIHJlcG9zaXRvcnkgdXN1YWxseSBkb2VzIG5vdCBj
b250YWluIHRvcGljIGJyYW5jaGVzLCBkZXZlbG9wZXJzIGFuZCBjb250cmlidXRvcnMgc2hvdWxk
IGNyZWF0ZSB0b3BpYwotYnJhbmNoZXMgaW4gdGhlaXIgb3duIGZvcmtzLgotCi1FeGNlcHRpb25z
IGNhbiBiZSBtYWRlIGZvciBjYXNlcyB3aGVyZSBtb3JlIHRoYW4gb25lIGNvbnRyaWJ1dG9yIGlz
IHdvcmtpbmcgb24gdGhlIHNhbWUKLXRvcGljIG9yIHdoZXJlIGl0IG1ha2VzIHNlbnNlIHRvIHVz
ZSBzb21lIGF1dG9tYXRpYyBjYXBhYmlsaXR5IG9mIHRoZSBtYWluIHJlcG9zaXRvcnksIHN1Y2gg
YXMgYXV0b21hdGljIGRvY3MgZnJvbQotYHJlYWR0aGVkb2NzIDxyZWFkdGhlZG9jcy5vcmc+YF8g
Zm9yIGEgYnJhbmNoIGRlYWxpbmcgd2l0aCBkb2N1bWVudGF0aW9uIHJlZmFjdG9yaW5nLgotCi1J
c3N1ZXMKLS0tLS0tLQotCi1BbnkgcXVlc3Rpb24sIGZlYXR1cmUsIGJ1ZyBvciBwcm9wb3NhbCBp
cyB3ZWxjb21lIGFzIGFuIGlzc3VlLiBVc2VycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgdGhlbSB3
aGVuZXZlciB0aGV5IG5lZWQuCi0KLUdpdEh1YiBpc3N1ZXMgc2hvdWxkIHVzZSBsYWJlbHMgdG8g
Y2F0ZWdvcml6ZSB0aGVtLiBMYWJlbHMgc2hvdWxkIGJlIGNyZWF0ZWQgc3BvcmFkaWNhbGx5LCB0
byBmaWxsIGEgbmljaGU7IHdlIHNob3VsZAotYXZvaWQgY3JlYXRpbmcgbGFiZWxzIGp1c3QgZm9y
IHRoZSBzYWtlIG9mIGNyZWF0aW5nIHRoZW0uCi0KLUVhY2ggbGFiZWwgc2hvdWxkIGluY2x1ZGUg
YSBkZXNjcmlwdGlvbiBpbiB0aGUgR2l0SHViJ3MgaW50ZXJmYWNlIHN0YXRpbmcgaXRzIHB1cnBv
c2UuCi0KLVRlbXBvcmFyeSBsYWJlbHMKLX5+fn5+fn5+fn5+fn5+fn4KLQotVG8gY2xhc3NpZnkg
aXNzdWVzIGZvciBhIHNwZWNpYWwgZXZlbnQgaXQgaXMgZW5jb3VyYWdlZCB0byBjcmVhdGUgYSB0
ZW1wb3JhcnkgbGFiZWwuIFRoaXMgaGVscHMgdGhvc2UgaW52b2x2ZWQgdG8gZmluZAotdGhlIHJl
bGV2YW50IGlzc3VlcyB0byB3b3JrIG9uLiBFeGFtcGxlcyBvZiB0aGF0IGFyZSBzcHJpbnRzIGlu
IFB5dGhvbiBldmVudHMgb3IgZ2xvYmFsIGhhY2tpbmcgZXZlbnRzLgotCi0qIGBgdGVtcG9yYXJ5
OiBFUDIwMTcgc3ByaW50YGA6IGNhbmRpZGF0ZSBpc3N1ZXMgb3IgUFJzIHRhY2tsZWQgZHVyaW5n
IHRoZSBFdXJvUHl0aG9uIDIwMTcKLQotSXNzdWVzIGNyZWF0ZWQgYXQgdGhvc2UgZXZlbnRzIHNo
b3VsZCBoYXZlIG90aGVyIHJlbGV2YW50IGxhYmVscyBhZGRlZCBhcyB3ZWxsLgotCi1UaG9zZSBs
YWJlbHMgc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHJlbGV2YW50
LgotCi0KLS4uIGluY2x1ZGU6OiAuLi8uLi9IT1dUT1JFTEVBU0UucnN0CitUaGUgY29udHJpYnV0
aW5nIGd1aWRlbGluZXMgYXJlIHRvIGJlIGZvdW5kIDpyZWY6YGhlcmUgPGNvbnRyaWJ1dGluZz5g
LgorVGhlIHJlbGVhc2UgcHJvY2VkdXJlIGZvciBweXRlc3QgaXMgZG9jdW1lbnRlZCBvbgorYEdp
dEh1YiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2Jsb2IvbWFzdGVyL1JF
TEVBU0lORy5yc3Q+YF8uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZG9jdGVzdC5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZG9jdGVzdC5yc3QKaW5kZXggOTQ4OGVlODI2NTcyLi4x
OTYzMjE0ZjdhNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9kb2N0ZXN0LnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZG9jdGVzdC5yc3QKQEAgLTQsNTEgKzQsNDcgQEAgRG9j
dGVzdCBpbnRlZ3JhdGlvbiBmb3IgbW9kdWxlcyBhbmQgdGVzdCBmaWxlcwogCiBCeSBkZWZhdWx0
IGFsbCBmaWxlcyBtYXRjaGluZyB0aGUgYGB0ZXN0Ki50eHRgYCBwYXR0ZXJuIHdpbGwKIGJlIHJ1
biB0aHJvdWdoIHRoZSBweXRob24gc3RhbmRhcmQgYGBkb2N0ZXN0YGAgbW9kdWxlLiAgWW91Ci1j
YW4gY2hhbmdlIHRoZSBwYXR0ZXJuIGJ5IGlzc3Vpbmc6OgorY2FuIGNoYW5nZSB0aGUgcGF0dGVy
biBieSBpc3N1aW5nOgogCi0gICAgcHl0ZXN0IC0tZG9jdGVzdC1nbG9iPScqLnJzdCcKKy4uIGNv
ZGUtYmxvY2s6OiBiYXNoCiAKLW9uIHRoZSBjb21tYW5kIGxpbmUuIFNpbmNlIHZlcnNpb24gYGAy
LjlgYCwgYGAtLWRvY3Rlc3QtZ2xvYmBgCi1jYW4gYmUgZ2l2ZW4gbXVsdGlwbGUgdGltZXMgaW4g
dGhlIGNvbW1hbmQtbGluZS4KKyAgICBweXRlc3QgLS1kb2N0ZXN0LWdsb2I9IioucnN0IgogCi0u
LiB2ZXJzaW9uYWRkZWQ6OiAzLjEKK29uIHRoZSBjb21tYW5kIGxpbmUuIGBgLS1kb2N0ZXN0LWds
b2JgYCBjYW4gYmUgZ2l2ZW4gbXVsdGlwbGUgdGltZXMgaW4gdGhlIGNvbW1hbmQtbGluZS4KIAot
ICAgIFlvdSBjYW4gc3BlY2lmeSB0aGUgZW5jb2RpbmcgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRo
b3NlIGRvY3Rlc3QgZmlsZXMKLSAgICB1c2luZyB0aGUgYGBkb2N0ZXN0X2VuY29kaW5nYGAgaW5p
IG9wdGlvbjoKK0lmIHlvdSB0aGVuIGhhdmUgYSB0ZXh0IGZpbGUgbGlrZSB0aGlzOgogCi0gICAg
Li4gY29kZS1ibG9jazo6IGluaQorLi4gY29kZS1ibG9jazo6IHRleHQKIAotICAgICAgICAjIGNv
bnRlbnQgb2YgcHl0ZXN0LmluaQotICAgICAgICBbcHl0ZXN0XQotICAgICAgICBkb2N0ZXN0X2Vu
Y29kaW5nID0gbGF0aW4xCisgICAgIyBjb250ZW50IG9mIHRlc3RfZXhhbXBsZS50eHQKIAotICAg
IFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIFVURi04LgorICAgIGhlbGxvIHRoaXMgaXMgYSBkb2N0
ZXN0CisgICAgPj4+IHggPSAzCisgICAgPj4+IHgKKyAgICAzCiAKLVlvdSBjYW4gYWxzbyB0cmln
Z2VyIHJ1bm5pbmcgb2YgZG9jdGVzdHMKLWZyb20gZG9jc3RyaW5ncyBpbiBhbGwgcHl0aG9uIG1v
ZHVsZXMgKGluY2x1ZGluZyByZWd1bGFyCi1weXRob24gdGVzdCBtb2R1bGVzKTo6Cit0aGVuIHlv
dSBjYW4ganVzdCBpbnZva2UgYGBweXRlc3RgYCBkaXJlY3RseToKIAotICAgIHB5dGVzdCAtLWRv
Y3Rlc3QtbW9kdWxlcworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCi1Zb3UgY2FuIG1ha2UgdGhl
c2UgY2hhbmdlcyBwZXJtYW5lbnQgaW4geW91ciBwcm9qZWN0IGJ5Ci1wdXR0aW5nIHRoZW0gaW50
byBhIHB5dGVzdC5pbmkgZmlsZSBsaWtlIHRoaXM6CisgICAgJCBweXRlc3QKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
Ni54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVG
SVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBjb2xs
ZWN0ZWQgMSBpdGVtCiAKLS4uIGNvZGUtYmxvY2s6OiBpbmkKKyAgICB0ZXN0X2V4YW1wbGUudHh0
IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAw
JV0KIAotICAgICMgY29udGVudCBvZiBweXRlc3QuaW5pCi0gICAgW3B5dGVzdF0KLSAgICBhZGRv
cHRzID0gLS1kb2N0ZXN0LW1vZHVsZXMKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
IDEgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUlmIHlv
dSB0aGVuIGhhdmUgYSB0ZXh0IGZpbGUgbGlrZSB0aGlzOjoKK0J5IGRlZmF1bHQsIHB5dGVzdCB3
aWxsIGNvbGxlY3QgYGB0ZXN0Ki50eHRgYCBmaWxlcyBsb29raW5nIGZvciBkb2N0ZXN0IGRpcmVj
dGl2ZXMsIGJ1dCB5b3UKK2NhbiBwYXNzIGFkZGl0aW9uYWwgZ2xvYnMgdXNpbmcgdGhlIGBgLS1k
b2N0ZXN0LWdsb2JgYCBvcHRpb24gKG11bHRpLWFsbG93ZWQpLgogCi0gICAgIyBjb250ZW50IG9m
IGV4YW1wbGUucnN0Ci0KLSAgICBoZWxsbyB0aGlzIGlzIGEgZG9jdGVzdAotICAgID4+PiB4ID0g
MwotICAgID4+PiB4Ci0gICAgMworSW4gYWRkaXRpb24gdG8gdGV4dCBmaWxlcywgeW91IGNhbiBh
bHNvIGV4ZWN1dGUgZG9jdGVzdHMgZGlyZWN0bHkgZnJvbSBkb2NzdHJpbmdzIG9mIHlvdXIgY2xh
c3NlcworYW5kIGZ1bmN0aW9ucywgaW5jbHVkaW5nIGZyb20gdGVzdCBtb2R1bGVzOgogCi1hbmQg
YW5vdGhlciBsaWtlIHRoaXM6OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250
ZW50IG9mIG15bW9kdWxlLnB5CiAgICAgZGVmIHNvbWV0aGluZygpOgpAQCAtNTgsMzEgKzU0LDYw
IEBAIGFuZCBhbm90aGVyIGxpa2UgdGhpczo6CiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4g
NDIKIAotdGhlbiB5b3UgY2FuIGp1c3QgaW52b2tlIGBgcHl0ZXN0YGAgd2l0aG91dCBjb21tYW5k
IGxpbmUgb3B0aW9uczo6CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCi0gICAgJCBweXRlc3QKKyAg
ICAkIHB5dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcwogICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAg
ICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54Lnks
IHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6IHB5
dGVzdC5pbmkKLSAgICBjb2xsZWN0ZWQgMSBpdGVtCisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNo
ZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRP
Q19UTVBESVIKKyAgICBjb2xsZWN0ZWQgMiBpdGVtcwogCi0gICAgbXltb2R1bGUucHkgLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVd
CisgICAgbXltb2R1bGUucHkgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyA1MCVdCisgICAgdGVzdF9leGFtcGxlLnR4dCAuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09IDEgcGFzc2VkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAyIHBh
c3NlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1JdCBpcyBwb3Nz
aWJsZSB0byB1c2UgZml4dHVyZXMgdXNpbmcgdGhlIGBgZ2V0Zml4dHVyZWBgIGhlbHBlcjo6CitZ
b3UgY2FuIG1ha2UgdGhlc2UgY2hhbmdlcyBwZXJtYW5lbnQgaW4geW91ciBwcm9qZWN0IGJ5Citw
dXR0aW5nIHRoZW0gaW50byBhIHB5dGVzdC5pbmkgZmlsZSBsaWtlIHRoaXM6CiAKLSAgICAjIGNv
bnRlbnQgb2YgZXhhbXBsZS5yc3QKLSAgICA+Pj4gdG1wID0gZ2V0Zml4dHVyZSgndG1wZGlyJykK
LSAgICA+Pj4gLi4uCi0gICAgPj4+CisuLiBjb2RlLWJsb2NrOjogaW5pCiAKLUFsc28sIDpyZWY6
YHVzZWZpeHR1cmVzYCBhbmQgOnJlZjpgYXV0b3VzZWAgZml4dHVyZXMgYXJlIHN1cHBvcnRlZAot
d2hlbiBleGVjdXRpbmcgdGV4dCBkb2N0ZXN0IGZpbGVzLgorICAgICMgY29udGVudCBvZiBweXRl
c3QuaW5pCisgICAgW3B5dGVzdF0KKyAgICBhZGRvcHRzID0gLS1kb2N0ZXN0LW1vZHVsZXMKIAot
VGhlIHN0YW5kYXJkIGBgZG9jdGVzdGBgIG1vZHVsZSBwcm92aWRlcyBzb21lIHNldHRpbmcgZmxh
Z3MgdG8gY29uZmlndXJlIHRoZQotc3RyaWN0bmVzcyBvZiBkb2N0ZXN0IHRlc3RzLiBJbiBweXRl
c3QsIHlvdSBjYW4gZW5hYmxlIHRob3NlIGZsYWdzIHVzaW5nIHRoZQotY29uZmlndXJhdGlvbiBm
aWxlLiBUbyBtYWtlIHB5dGVzdCBpZ25vcmUgdHJhaWxpbmcgd2hpdGVzcGFjZXMgYW5kIGlnbm9y
ZQorLi4gbm90ZTo6CisKKyAgICBUaGUgYnVpbHRpbiBweXRlc3QgZG9jdGVzdCBzdXBwb3J0cyBv
bmx5IGBgZG9jdGVzdGBgIGJsb2NrcywgYnV0IGlmIHlvdSBhcmUgbG9va2luZworICAgIGZvciBt
b3JlIGFkdmFuY2VkIGNoZWNraW5nIG92ZXIgKmFsbCogeW91ciBkb2N1bWVudGF0aW9uLAorICAg
IGluY2x1ZGluZyBkb2N0ZXN0cywgYGAuLiBjb2RlYmxvY2s6OiBweXRob25gYCBTcGhpbnggZGly
ZWN0aXZlIHN1cHBvcnQsCisgICAgYW5kIGFueSBvdGhlciBleGFtcGxlcyB5b3VyIGRvY3VtZW50
YXRpb24gbWF5IGluY2x1ZGUsIHlvdSBtYXkgd2lzaCB0bworICAgIGNvbnNpZGVyIGBTeWJpbCA8
aHR0cHM6Ly9zeWJpbC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW5kZXguaHRtbD5gX18uCisg
ICAgSXQgcHJvdmlkZXMgcHl0ZXN0IGludGVncmF0aW9uIG91dCBvZiB0aGUgYm94LgorCisKK0Vu
Y29kaW5nCistLS0tLS0tLQorCitUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyAqKlVURi04KiosIGJ1
dCB5b3UgY2FuIHNwZWNpZnkgdGhlIGVuY29kaW5nCit0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhv
c2UgZG9jdGVzdCBmaWxlcyB1c2luZyB0aGUKK2BgZG9jdGVzdF9lbmNvZGluZ2BgIGluaSBvcHRp
b246CisKKy4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICMgY29udGVudCBvZiBweXRlc3QuaW5p
CisgICAgW3B5dGVzdF0KKyAgICBkb2N0ZXN0X2VuY29kaW5nID0gbGF0aW4xCisKK1VzaW5nICdk
b2N0ZXN0JyBvcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQeXRob24ncyBzdGFu
ZGFyZCBgYGRvY3Rlc3RgYCBtb2R1bGUgcHJvdmlkZXMgc29tZSBgb3B0aW9ucyA8aHR0cHM6Ly9k
b2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2RvY3Rlc3QuaHRtbCNvcHRpb24tZmxhZ3M+YF9fCit0
byBjb25maWd1cmUgdGhlIHN0cmljdG5lc3Mgb2YgZG9jdGVzdCB0ZXN0cy4gSW4gcHl0ZXN0LCB5
b3UgY2FuIGVuYWJsZSB0aG9zZSBmbGFncyB1c2luZyB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZS4K
KworRm9yIGV4YW1wbGUsIHRvIG1ha2UgcHl0ZXN0IGlnbm9yZSB0cmFpbGluZyB3aGl0ZXNwYWNl
cyBhbmQgaWdub3JlCiBsZW5ndGh5IGV4Y2VwdGlvbiBzdGFjayB0cmFjZXMgeW91IGNhbiBqdXN0
IHdyaXRlOgogCiAuLiBjb2RlLWJsb2NrOjogaW5pCkBAIC05MCw1OCArMTE1LDEzMCBAQCBsZW5n
dGh5IGV4Y2VwdGlvbiBzdGFjayB0cmFjZXMgeW91IGNhbiBqdXN0IHdyaXRlOgogICAgIFtweXRl
c3RdCiAgICAgZG9jdGVzdF9vcHRpb25mbGFncz0gTk9STUFMSVpFX1dISVRFU1BBQ0UgSUdOT1JF
X0VYQ0VQVElPTl9ERVRBSUwKIAotcHl0ZXN0IGFsc28gaW50cm9kdWNlcyBuZXcgb3B0aW9ucyB0
byBhbGxvdyBkb2N0ZXN0cyB0byBydW4gaW4gUHl0aG9uIDIgYW5kCi1QeXRob24gMyB1bmNoYW5n
ZWQ6CitBbHRlcm5hdGl2ZWx5LCBvcHRpb25zIGNhbiBiZSBlbmFibGVkIGJ5IGFuIGlubGluZSBj
b21tZW50IGluIHRoZSBkb2MgdGVzdAoraXRzZWxmOgorCisuLiBjb2RlLWJsb2NrOjogcnN0CisK
KyAgICA+Pj4gc29tZXRoaW5nX3RoYXRfcmFpc2VzKCkgICMgZG9jdGVzdDogK0lHTk9SRV9FWENF
UFRJT05fREVUQUlMCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAg
IFZhbHVlRXJyb3I6IC4uLgorCitweXRlc3QgYWxzbyBpbnRyb2R1Y2VzIG5ldyBvcHRpb25zOgog
CiAqIGBgQUxMT1dfVU5JQ09ERWBgOiB3aGVuIGVuYWJsZWQsIHRoZSBgYHVgYCBwcmVmaXggaXMg
c3RyaXBwZWQgZnJvbSB1bmljb2RlCi0gIHN0cmluZ3MgaW4gZXhwZWN0ZWQgZG9jdGVzdCBvdXRw
dXQuCisgIHN0cmluZ3MgaW4gZXhwZWN0ZWQgZG9jdGVzdCBvdXRwdXQuIFRoaXMgYWxsb3dzIGRv
Y3Rlc3RzIHRvIHJ1biBpbiBQeXRob24gMgorICBhbmQgUHl0aG9uIDMgdW5jaGFuZ2VkLgogCi0q
IGBgQUxMT1dfQllURVNgYDogd2hlbiBlbmFibGVkLCB0aGUgYGBiYGAgcHJlZml4IGlzIHN0cmlw
cGVkIGZyb20gYnl0ZSBzdHJpbmdzCisqIGBgQUxMT1dfQllURVNgYDogc2ltaWxhcmx5LCB0aGUg
YGBiYGAgcHJlZml4IGlzIHN0cmlwcGVkIGZyb20gYnl0ZSBzdHJpbmdzCiAgIGluIGV4cGVjdGVk
IGRvY3Rlc3Qgb3V0cHV0LgogCi1BcyB3aXRoIGFueSBvdGhlciBvcHRpb24gZmxhZywgdGhlc2Ug
ZmxhZ3MgY2FuIGJlIGVuYWJsZWQgaW4gYGBweXRlc3QuaW5pYGAgdXNpbmcKLXRoZSBgYGRvY3Rl
c3Rfb3B0aW9uZmxhZ3NgYCBpbmkgb3B0aW9uOgorKiBgYE5VTUJFUmBgOiB3aGVuIGVuYWJsZWQs
IGZsb2F0aW5nLXBvaW50IG51bWJlcnMgb25seSBuZWVkIHRvIG1hdGNoIGFzIGZhciBhcworICB0
aGUgcHJlY2lzaW9uIHlvdSBoYXZlIHdyaXR0ZW4gaW4gdGhlIGV4cGVjdGVkIGRvY3Rlc3Qgb3V0
cHV0LiBGb3IgZXhhbXBsZSwKKyAgdGhlIGZvbGxvd2luZyBvdXRwdXQgd291bGQgb25seSBuZWVk
IHRvIG1hdGNoIHRvIDIgZGVjaW1hbCBwbGFjZXM6OgogCi0uLiBjb2RlLWJsb2NrOjogaW5pCisg
ICAgICA+Pj4gbWF0aC5waQorICAgICAgMy4xNAogCi0gICAgW3B5dGVzdF0KLSAgICBkb2N0ZXN0
X29wdGlvbmZsYWdzID0gQUxMT1dfVU5JQ09ERSBBTExPV19CWVRFUworICBJZiB5b3Ugd3JvdGUg
YGAzLjE0MTZgYCB0aGVuIHRoZSBhY3R1YWwgb3V0cHV0IHdvdWxkIG5lZWQgdG8gbWF0Y2ggdG8g
NAorICBkZWNpbWFsIHBsYWNlczsgYW5kIHNvIG9uLgogCisgIFRoaXMgYXZvaWRzIGZhbHNlIHBv
c2l0aXZlcyBjYXVzZWQgYnkgbGltaXRlZCBmbG9hdGluZy1wb2ludCBwcmVjaXNpb24sIGxpa2UK
KyAgdGhpczo6CiAKLUFsdGVybmF0aXZlbHksIGl0IGNhbiBiZSBlbmFibGVkIGJ5IGFuIGlubGlu
ZSBjb21tZW50IGluIHRoZSBkb2MgdGVzdAotaXRzZWxmOjoKKyAgICAgIEV4cGVjdGVkOgorICAg
ICAgICAgIDAuMjMzCisgICAgICBHb3Q6CisgICAgICAgICAgMC4yMzMwMDAwMDAwMDAwMDAwMQog
Ci0gICAgIyBjb250ZW50IG9mIGV4YW1wbGUucnN0Ci0gICAgPj4+IGdldF91bmljb2RlX2dyZWV0
aW5nKCkgICMgZG9jdGVzdDogK0FMTE9XX1VOSUNPREUKLSAgICAnSGVsbG8nCisgIGBgTlVNQkVS
YGAgYWxzbyBzdXBwb3J0cyBsaXN0cyBvZiBmbG9hdGluZy1wb2ludCBudW1iZXJzIC0tIGluIGZh
Y3QsIGl0CisgIG1hdGNoZXMgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcHBlYXJpbmcgYW55d2hl
cmUgaW4gdGhlIG91dHB1dCwgZXZlbiBpbnNpZGUKKyAgYSBzdHJpbmchIFRoaXMgbWVhbnMgdGhh
dCBpdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIHRvIGVuYWJsZSBnbG9iYWxseSBpbgorICBgYGRv
Y3Rlc3Rfb3B0aW9uZmxhZ3NgYCBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZS4KIAotQnkgZGVm
YXVsdCwgcHl0ZXN0IHdvdWxkIHJlcG9ydCBvbmx5IHRoZSBmaXJzdCBmYWlsdXJlIGZvciBhIGdp
dmVuIGRvY3Rlc3QuICBJZgoteW91IHdhbnQgdG8gY29udGludWUgdGhlIHRlc3QgZXZlbiB3aGVu
IHlvdSBoYXZlIGZhaWx1cmVzLCBkbzo6CisgIC4uIHZlcnNpb25hZGRlZDo6IDUuMQorCisKK0Nv
bnRpbnVlIG9uIGZhaWx1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworQnkgZGVmYXVsdCwgcHl0
ZXN0IHdvdWxkIHJlcG9ydCBvbmx5IHRoZSBmaXJzdCBmYWlsdXJlIGZvciBhIGdpdmVuIGRvY3Rl
c3QuIElmCit5b3Ugd2FudCB0byBjb250aW51ZSB0aGUgdGVzdCBldmVuIHdoZW4geW91IGhhdmUg
ZmFpbHVyZXMsIGRvOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tZG9j
dGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1jb250aW51ZS1vbi1mYWlsdXJlCiAKIAotLi4gX2Bkb2N0
ZXN0X25hbWVzcGFjZWA6CitPdXRwdXQgZm9ybWF0CistLS0tLS0tLS0tLS0tCiAKLVRoZSAnZG9j
dGVzdF9uYW1lc3BhY2UnIGZpeHR1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1lvdSBjYW4gY2hhbmdlIHRoZSBkaWZmIG91dHB1dCBmb3JtYXQgb24gZmFpbHVyZSBmb3IgeW91
ciBkb2N0ZXN0cworYnkgdXNpbmcgb25lIG9mIHN0YW5kYXJkIGRvY3Rlc3QgbW9kdWxlcyBmb3Jt
YXQgaW4gb3B0aW9ucworKHNlZSA6ZGF0YTpgcHl0aG9uOmRvY3Rlc3QuUkVQT1JUX1VESUZGYCwg
OmRhdGE6YHB5dGhvbjpkb2N0ZXN0LlJFUE9SVF9DRElGRmAsCis6ZGF0YTpgcHl0aG9uOmRvY3Rl
c3QuUkVQT1JUX05ESUZGYCwgOmRhdGE6YHB5dGhvbjpkb2N0ZXN0LlJFUE9SVF9PTkxZX0ZJUlNU
X0ZBSUxVUkVgKToKIAotLi4gdmVyc2lvbmFkZGVkOjogMy4wCisuLiBjb2RlLWJsb2NrOjogYmFz
aAorCisgICAgcHl0ZXN0IC0tZG9jdGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1yZXBvcnQgbm9uZQor
ICAgIHB5dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IHVkaWZmCisgICAg
cHl0ZXN0IC0tZG9jdGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1yZXBvcnQgY2RpZmYKKyAgICBweXRl
c3QgLS1kb2N0ZXN0LW1vZHVsZXMgLS1kb2N0ZXN0LXJlcG9ydCBuZGlmZgorICAgIHB5dGVzdCAt
LWRvY3Rlc3QtbW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IG9ubHlfZmlyc3RfZmFpbHVyZQorCisK
K3B5dGVzdC1zcGVjaWZpYyBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Nv
bWUgZmVhdHVyZXMgYXJlIHByb3ZpZGVkIHRvIG1ha2Ugd3JpdGluZyBkb2N0ZXN0cyBlYXNpZXIg
b3Igd2l0aCBiZXR0ZXIgaW50ZWdyYXRpb24gd2l0aAoreW91ciBleGlzdGluZyB0ZXN0IHN1aXRl
LiBLZWVwIGluIG1pbmQgaG93ZXZlciB0aGF0IGJ5IHVzaW5nIHRob3NlIGZlYXR1cmVzIHlvdSB3
aWxsIG1ha2UKK3lvdXIgZG9jdGVzdHMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHN0YW5kYXJkIGBg
ZG9jdGVzdHNgYCBtb2R1bGUuCisKK1VzaW5nIGZpeHR1cmVzCiteXl5eXl5eXl5eXl5eXgorCitJ
dCBpcyBwb3NzaWJsZSB0byB1c2UgZml4dHVyZXMgdXNpbmcgdGhlIGBgZ2V0Zml4dHVyZWBgIGhl
bHBlcjoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICMgY29udGVudCBvZiBleGFtcGxl
LnJzdAorICAgID4+PiB0bXAgPSBnZXRmaXh0dXJlKCd0bXBkaXInKQorICAgID4+PiAuLi4KKyAg
ICA+Pj4KKworTm90ZSB0aGF0IHRoZSBmaXh0dXJlIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gYSBw
bGFjZSB2aXNpYmxlIGJ5IHB5dGVzdCwgZm9yIGV4YW1wbGUgYSBgY29uZnRlc3QucHlgCitmaWxl
IG9yIHBsdWdpbjsgbm9ybWFsIHB5dGhvbiBmaWxlcyBjb250YWluaW5nIGRvY3N0cmluZ3MgYXJl
IG5vdCBub3JtYWxseSBzY2FubmVkIGZvciBmaXh0dXJlcwordW5sZXNzIGV4cGxpY2l0bHkgY29u
ZmlndXJlZCBieSA6Y29uZnZhbDpgcHl0aG9uX2ZpbGVzYC4KKworQWxzbywgdGhlIDpyZWY6YHVz
ZWZpeHR1cmVzIDx1c2VmaXh0dXJlcz5gIG1hcmsgYW5kIGZpeHR1cmVzIG1hcmtlZCBhcyA6cmVm
OmBhdXRvdXNlIDxhdXRvdXNlPmAgYXJlIHN1cHBvcnRlZAord2hlbiBleGVjdXRpbmcgdGV4dCBk
b2N0ZXN0IGZpbGVzLgorCisKKy4uIF9gZG9jdGVzdF9uYW1lc3BhY2VgOgorCisnZG9jdGVzdF9u
YW1lc3BhY2UnIGZpeHR1cmUKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgYGBk
b2N0ZXN0X25hbWVzcGFjZWBgIGZpeHR1cmUgY2FuIGJlIHVzZWQgdG8gaW5qZWN0IGl0ZW1zIGlu
dG8gdGhlCiBuYW1lc3BhY2UgaW4gd2hpY2ggeW91ciBkb2N0ZXN0cyBydW4uIEl0IGlzIGludGVu
ZGVkIHRvIGJlIHVzZWQgd2l0aGluCiB5b3VyIG93biBmaXh0dXJlcyB0byBwcm92aWRlIHRoZSB0
ZXN0cyB0aGF0IHVzZSB0aGVtIHdpdGggY29udGV4dC4KIAogYGBkb2N0ZXN0X25hbWVzcGFjZWBg
IGlzIGEgc3RhbmRhcmQgYGBkaWN0YGAgb2JqZWN0IGludG8gd2hpY2ggeW91Ci1wbGFjZSB0aGUg
b2JqZWN0cyB5b3Ugd2FudCB0byBhcHBlYXIgaW4gdGhlIGRvY3Rlc3QgbmFtZXNwYWNlOjoKK3Bs
YWNlIHRoZSBvYmplY3RzIHlvdSB3YW50IHRvIGFwcGVhciBpbiB0aGUgZG9jdGVzdCBuYW1lc3Bh
Y2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVz
dC5weQogICAgIGltcG9ydCBudW1weQorCisKICAgICBAcHl0ZXN0LmZpeHR1cmUoYXV0b3VzZT1U
cnVlKQogICAgIGRlZiBhZGRfbnAoZG9jdGVzdF9uYW1lc3BhY2UpOgotICAgICAgICBkb2N0ZXN0
X25hbWVzcGFjZVsnbnAnXSA9IG51bXB5CisgICAgICAgIGRvY3Rlc3RfbmFtZXNwYWNlWyJucCJd
ID0gbnVtcHkKIAotd2hpY2ggY2FuIHRoZW4gYmUgdXNlZCBpbiB5b3VyIGRvY3Rlc3RzIGRpcmVj
dGx5OjoKK3doaWNoIGNhbiB0aGVuIGJlIHVzZWQgaW4geW91ciBkb2N0ZXN0cyBkaXJlY3RseToK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIG51bXB5LnB5CiAg
ICAgZGVmIGFyYW5nZSgpOgpAQCAtMTUyLDE5ICsyNDksMjAgQEAgd2hpY2ggY2FuIHRoZW4gYmUg
dXNlZCBpbiB5b3VyIGRvY3Rlc3RzIGRpcmVjdGx5OjoKICAgICAgICAgIiIiCiAgICAgICAgIHBh
c3MKIAorTm90ZSB0aGF0IGxpa2UgdGhlIG5vcm1hbCBgYGNvbmZ0ZXN0LnB5YGAsIHRoZSBmaXh0
dXJlcyBhcmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5IHRyZWUgY29uZnRlc3QgaXMgaW4u
CitNZWFuaW5nIHRoYXQgaWYgeW91IHB1dCB5b3VyIGRvY3Rlc3Qgd2l0aCB5b3VyIHNvdXJjZSBj
b2RlLCB0aGUgcmVsZXZhbnQgY29uZnRlc3QucHkgbmVlZHMgdG8gYmUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5IHRyZWUuCitGaXh0dXJlcyB3aWxsIG5vdCBiZSBkaXNjb3ZlcmVkIGluIGEgc2libGlu
ZyBkaXJlY3RvcnkgdHJlZSEKIAotT3V0cHV0IGZvcm1hdAotLS0tLS0tLS0tLS0tLQorU2tpcHBp
bmcgdGVzdHMgZHluYW1pY2FsbHkKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLS4uIHZl
cnNpb25hZGRlZDo6IDMuMAorLi4gdmVyc2lvbmFkZGVkOjogNC40CiAKLVlvdSBjYW4gY2hhbmdl
IHRoZSBkaWZmIG91dHB1dCBmb3JtYXQgb24gZmFpbHVyZSBmb3IgeW91ciBkb2N0ZXN0cwotYnkg
dXNpbmcgb25lIG9mIHN0YW5kYXJkIGRvY3Rlc3QgbW9kdWxlcyBmb3JtYXQgaW4gb3B0aW9ucwot
KHNlZSA6ZGF0YTpgcHl0aG9uOmRvY3Rlc3QuUkVQT1JUX1VESUZGYCwgOmRhdGE6YHB5dGhvbjpk
b2N0ZXN0LlJFUE9SVF9DRElGRmAsCi06ZGF0YTpgcHl0aG9uOmRvY3Rlc3QuUkVQT1JUX05ESUZG
YCwgOmRhdGE6YHB5dGhvbjpkb2N0ZXN0LlJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkVgKTo6CitZ
b3UgY2FuIHVzZSBgYHB5dGVzdC5za2lwYGAgdG8gZHluYW1pY2FsbHkgc2tpcCBkb2N0ZXN0cy4g
Rm9yIGV4YW1wbGU6CiAKLSAgICBweXRlc3QgLS1kb2N0ZXN0LW1vZHVsZXMgLS1kb2N0ZXN0LXJl
cG9ydCBub25lCi0gICAgcHl0ZXN0IC0tZG9jdGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1yZXBvcnQg
dWRpZmYKLSAgICBweXRlc3QgLS1kb2N0ZXN0LW1vZHVsZXMgLS1kb2N0ZXN0LXJlcG9ydCBjZGlm
ZgotICAgIHB5dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcyAtLWRvY3Rlc3QtcmVwb3J0IG5kaWZmCi0g
ICAgcHl0ZXN0IC0tZG9jdGVzdC1tb2R1bGVzIC0tZG9jdGVzdC1yZXBvcnQgb25seV9maXJzdF9m
YWlsdXJlCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAgPj4+IGltcG9ydCBzeXMsIHB5dGVz
dAorICAgID4+PiBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgLi4uICAg
ICBweXRlc3Quc2tpcCgndGhpcyBkb2N0ZXN0IGRvZXMgbm90IHdvcmsgb24gV2luZG93cycpCisg
ICAgLi4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24v
ZmFpbHVyZV9kZW1vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2Zh
aWx1cmVfZGVtby5weQppbmRleCBkYzI3ZjVkZmJjMTIuLmExNzJhMDA3ZThjMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2ZhaWx1cmVfZGVtby5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vZmFpbHVyZV9kZW1vLnB5
CkBAIC0xLDYgKzEsNSBAQAoraW1wb3J0IHB5dGVzdAogZnJvbSBweXRlc3QgaW1wb3J0IHJhaXNl
cwotaW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQogCiAKIGRlZiBvdGhlcmZ1bmMoYSwg
Yik6CkBAIC0xNSwxOSArMTQsMTMgQEAgZGVmIG90aGVyZnVuY19tdWx0aShhLCBiKToKICAgICBh
c3NlcnQgYSA9PSBiCiAKIAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXJhbTEsIHBhcmFt
MiIsIFsoMywgNildKQogZGVmIHRlc3RfZ2VuZXJhdGl2ZShwYXJhbTEsIHBhcmFtMik6CiAgICAg
YXNzZXJ0IHBhcmFtMSAqIDIgPCBwYXJhbTIKIAogCi1kZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3Rz
KG1ldGFmdW5jKToKLSAgICBpZiAicGFyYW0xIiBpbiBtZXRhZnVuYy5maXh0dXJlbmFtZXM6Ci0g
ICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoZnVuY2FyZ3M9ZGljdChwYXJhbTE9MywgcGFyYW0yPTYp
KQotCi0KLWNsYXNzIFRlc3RGYWlsaW5nKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RGYWlsaW5nOgog
ICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKLQogICAgICAgICBkZWYgZigpOgogICAgICAgICAg
ICAgcmV0dXJuIDQyCiAKQEAgLTQwLDE1ICszMywxMyBAQCBjbGFzcyBUZXN0RmFpbGluZyhvYmpl
Y3QpOgogICAgICAgICBvdGhlcmZ1bmNfbXVsdGkoNDIsIDYgKiA5KQogCiAgICAgZGVmIHRlc3Rf
bm90KHNlbGYpOgotCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gNDIKIAog
ICAgICAgICBhc3NlcnQgbm90IGYoKQogCiAKLWNsYXNzIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0
aW9ucyhvYmplY3QpOgotCitjbGFzcyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6CiAgICAg
ZGVmIHRlc3RfZXFfdGV4dChzZWxmKToKICAgICAgICAgYXNzZXJ0ICJzcGFtIiA9PSAiZWdncyIK
IApAQCAtMTA0LDEwICs5NSwzMyBAQCBjbGFzcyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMo
b2JqZWN0KToKICAgICAgICAgdGV4dCA9ICJoZWFkICIgKiA1MCArICJmIiAqIDcwICsgInRhaWwg
IiAqIDIwCiAgICAgICAgIGFzc2VydCAiZiIgKiA3MCBub3QgaW4gdGV4dAogCisgICAgZGVmIHRl
c3RfZXFfZGF0YWNsYXNzKHNlbGYpOgorICAgICAgICBmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBk
YXRhY2xhc3MKIAotZGVmIHRlc3RfYXR0cmlidXRlKCk6CisgICAgICAgIEBkYXRhY2xhc3MKKyAg
ICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgYTogaW50CisgICAgICAgICAgICBiOiBzdHIK
IAotICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICBsZWZ0ID0gRm9vKDEsICJiIikKKyAg
ICAgICAgcmlnaHQgPSBGb28oMSwgImMiKQorICAgICAgICBhc3NlcnQgbGVmdCA9PSByaWdodAor
CisgICAgZGVmIHRlc3RfZXFfYXR0cnMoc2VsZik6CisgICAgICAgIGltcG9ydCBhdHRyCisKKyAg
ICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBhID0gYXR0ci5p
YigpCisgICAgICAgICAgICBiID0gYXR0ci5pYigpCisKKyAgICAgICAgbGVmdCA9IEZvbygxLCAi
YiIpCisgICAgICAgIHJpZ2h0ID0gRm9vKDEsICJjIikKKyAgICAgICAgYXNzZXJ0IGxlZnQgPT0g
cmlnaHQKKworCitkZWYgdGVzdF9hdHRyaWJ1dGUoKToKKyAgICBjbGFzcyBGb286CiAgICAgICAg
IGIgPSAxCiAKICAgICBpID0gRm9vKCkKQEAgLTExNSwxNyArMTI5LDE0IEBAIGRlZiB0ZXN0X2F0
dHJpYnV0ZSgpOgogCiAKIGRlZiB0ZXN0X2F0dHJpYnV0ZV9pbnN0YW5jZSgpOgotCi0gICAgY2xh
c3MgRm9vKG9iamVjdCk6CisgICAgY2xhc3MgRm9vOgogICAgICAgICBiID0gMQogCiAgICAgYXNz
ZXJ0IEZvbygpLmIgPT0gMgogCiAKIGRlZiB0ZXN0X2F0dHJpYnV0ZV9mYWlsdXJlKCk6Ci0KLSAg
ICBjbGFzcyBGb28ob2JqZWN0KToKLQorICAgIGNsYXNzIEZvbzoKICAgICAgICAgZGVmIF9nZXRf
YihzZWxmKToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRmFpbGVkIHRvIGdldCBhdHRy
aWIiKQogCkBAIC0xMzYsMTEgKzE0NywxMCBAQCBkZWYgdGVzdF9hdHRyaWJ1dGVfZmFpbHVyZSgp
OgogCiAKIGRlZiB0ZXN0X2F0dHJpYnV0ZV9tdWx0aXBsZSgpOgotCi0gICAgY2xhc3MgRm9vKG9i
amVjdCk6CisgICAgY2xhc3MgRm9vOgogICAgICAgICBiID0gMQogCi0gICAgY2xhc3MgQmFyKG9i
amVjdCk6CisgICAgY2xhc3MgQmFyOgogICAgICAgICBiID0gMgogCiAgICAgYXNzZXJ0IEZvbygp
LmIgPT0gQmFyKCkuYgpAQCAtMTUwLDE0ICsxNjAsMTMgQEAgZGVmIGdsb2JmKHgpOgogICAgIHJl
dHVybiB4ICsgMQogCiAKLWNsYXNzIFRlc3RSYWlzZXMob2JqZWN0KToKLQorY2xhc3MgVGVzdFJh
aXNlczoKICAgICBkZWYgdGVzdF9yYWlzZXMoc2VsZik6Ci0gICAgICAgIHMgPSAicXdlIiAgIyBO
T1FBCi0gICAgICAgIHJhaXNlcyhUeXBlRXJyb3IsICJpbnQocykiKQorICAgICAgICBzID0gInF3
ZSIKKyAgICAgICAgcmFpc2VzKFR5cGVFcnJvciwgaW50LCBzKQogCiAgICAgZGVmIHRlc3RfcmFp
c2VzX2RvZXNudChzZWxmKToKLSAgICAgICAgcmFpc2VzKElPRXJyb3IsICJpbnQoJzMnKSIpCisg
ICAgICAgIHJhaXNlcyhPU0Vycm9yLCBpbnQsICIzIikKIAogICAgIGRlZiB0ZXN0X3JhaXNlKHNl
bGYpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZW1vIGVycm9yIikKQEAgLTE2Nyw3ICsx
NzYsNyBAQCBjbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9yZWludGVy
cHJldF9mYWlsc193aXRoX3ByaW50X2Zvcl90aGVfZnVuX29mX2l0KHNlbGYpOgogICAgICAgICBp
dGVtcyA9IFsxLCAyLCAzXQotICAgICAgICBwcmludCgiaXRlbXMgaXMgJXIiICUgaXRlbXMpCisg
ICAgICAgIHByaW50KCJpdGVtcyBpcyB7IXJ9Ii5mb3JtYXQoaXRlbXMpKQogICAgICAgICBhLCBi
ID0gaXRlbXMucG9wKCkKIAogICAgIGRlZiB0ZXN0X3NvbWVfZXJyb3Ioc2VsZik6CkBAIC0xODAs
MjIgKzE4OSwyMSBAQCBjbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6CiAKICMgdGhhbmtzIHRvIE1h
dHRoZXcgU2NvdHQgZm9yIHRoaXMgdGVzdAogZGVmIHRlc3RfZHluYW1pY19jb21waWxlX3Nob3dz
X25pY2VseSgpOgotICAgIGltcG9ydCBpbXAKKyAgICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKICAg
ICBpbXBvcnQgc3lzCiAKICAgICBzcmMgPSAiZGVmIGZvbygpOlxuIGFzc2VydCAxID09IDBcbiIK
ICAgICBuYW1lID0gImFiYy0xMjMiCi0gICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkK
LSAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5jb21waWxlKHNyYywgbmFtZSwgImV4ZWMiKQotICAg
IHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgbW9kdWxlLl9fZGljdF9fKQorICAgIHNwZWMgPSBpbXBv
cnRsaWIudXRpbC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIGxvYWRlcj1Ob25lKQorICAgIG1vZHVs
ZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICBjb2RlID0gY29t
cGlsZShzcmMsIG5hbWUsICJleGVjIikKKyAgICBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXykK
ICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgIG1vZHVsZS5mb28oKQogCiAKLWNs
YXNzIFRlc3RNb3JlRXJyb3JzKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RNb3JlRXJyb3JzOgogICAg
IGRlZiB0ZXN0X2NvbXBsZXhfZXJyb3Ioc2VsZik6Ci0KICAgICAgICAgZGVmIGYoKToKICAgICAg
ICAgICAgIHJldHVybiA0NAogCkBAIC0yMTgsNyArMjI2LDYgQEAgY2xhc3MgVGVzdE1vcmVFcnJv
cnMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHMuc3RhcnRzd2l0aChnKQogCiAgICAgZGVmIHRl
c3Rfc3RhcnRzd2l0aF9uZXN0ZWQoc2VsZik6Ci0KICAgICAgICAgZGVmIGYoKToKICAgICAgICAg
ICAgIHJldHVybiAiMTIzIgogCkBAIC0yNDUsMjkgKzI1MiwyNSBAQCBjbGFzcyBUZXN0TW9yZUVy
cm9ycyhvYmplY3QpOgogICAgICAgICAgICAgeCA9IDAKIAogCi1jbGFzcyBUZXN0Q3VzdG9tQXNz
ZXJ0TXNnKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RDdXN0b21Bc3NlcnRNc2c6CiAgICAgZGVmIHRl
c3Rfc2luZ2xlX2xpbmUoc2VsZik6Ci0KLSAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAg
ICBjbGFzcyBBOgogICAgICAgICAgICAgYSA9IDEKIAogICAgICAgICBiID0gMgogICAgICAgICBh
c3NlcnQgQS5hID09IGIsICJBLmEgYXBwZWFycyBub3QgdG8gYmUgYiIKIAogICAgIGRlZiB0ZXN0
X211bHRpbGluZShzZWxmKToKLQotICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgICAgIGNs
YXNzIEE6CiAgICAgICAgICAgICBhID0gMQogCiAgICAgICAgIGIgPSAyCiAgICAgICAgIGFzc2Vy
dCAoCiAgICAgICAgICAgICBBLmEgPT0gYgotICAgICAgICApLCAiQS5hIGFwcGVhcnMgbm90IHRv
IGJlIGJcbiIgIm9yIGRvZXMgbm90IGFwcGVhciB0byBiZSBiXG5vbmUgb2YgdGhvc2UiCisgICAg
ICAgICksICJBLmEgYXBwZWFycyBub3QgdG8gYmUgYlxub3IgZG9lcyBub3QgYXBwZWFyIHRvIGJl
IGJcbm9uZSBvZiB0aG9zZSIKIAogICAgIGRlZiB0ZXN0X2N1c3RvbV9yZXByKHNlbGYpOgotCi0g
ICAgICAgIGNsYXNzIEpTT04ob2JqZWN0KToKKyAgICAgICAgY2xhc3MgSlNPTjoKICAgICAgICAg
ICAgIGEgPSAxCiAKICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVsZV9j
b25maWcvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24v
Z2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL2NvbmZ0ZXN0LnB5CmluZGV4IDQ4NTliZWE3OGU2OC4u
ZmQ0NjdmMDllNTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3Nl
cnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL2NvbmZ0ZXN0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVsZV9jb25maWcvY29u
ZnRlc3QucHkKQEAgLTEsNyArMSw4IEBACitpbXBvcnQgb3MucGF0aAorCiBpbXBvcnQgcHl0ZXN0
Ci1pbXBvcnQgcHkKIAotbXlkaXIgPSBweS5wYXRoLmxvY2FsKF9fZmlsZV9fKS5kaXJwYXRoKCkK
K215ZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogCiAKIGRlZiBweXRlc3RfcnVudGVz
dF9zZXR1cChpdGVtKToKQEAgLTEwLDQgKzExLDQgQEAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVw
KGl0ZW0pOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG1vZCA9IGl0ZW0uZ2V0cGFyZW50
KHB5dGVzdC5Nb2R1bGUpLm9iagogICAgICAgICBpZiBoYXNhdHRyKG1vZCwgImhlbGxvIik6Ci0g
ICAgICAgICAgICBwcmludCgibW9kLmhlbGxvICVyIiAlIChtb2QuaGVsbG8sKSkKKyAgICAgICAg
ICAgIHByaW50KCJtb2QuaGVsbG8geyFyfSIuZm9ybWF0KG1vZC5oZWxsbykpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVf
Y29uZmlnL3Rlc3RfaGVsbG9fd29ybGQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9h
c3NlcnRpb24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL3Rlc3RfaGVsbG9fd29ybGQucHkKaW5k
ZXggODI4ZTZiOWZkN2Q3Li5hMzFhNjAxYTFjZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVsZV9jb25maWcvdGVzdF9oZWxs
b193b3JsZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vZ2xv
YmFsX3Rlc3Rtb2R1bGVfY29uZmlnL3Rlc3RfaGVsbG9fd29ybGQucHkKQEAgLTEsNSArMSw1IEBA
Ci0KIGhlbGxvID0gIndvcmxkIgogCisKIGRlZiB0ZXN0X2Z1bmMoKToKICAgICBwYXNzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vZ2xvYmFsX3Rlc3Rt
b2R1bGVfY29uZmlnL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
YXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxlX2NvbmZpZy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQyYjJiNmJjODY3Li4wMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxlX2Nv
bmZpZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVs
ZV9jb25maWcvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRp
b24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL3Rlc3RfaGVsbG9fd29ybGQucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi90ZXN0X2ZhaWx1cmVzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL3Rlc3RfZmFpbHVyZXMucHkK
aW5kZXggMTE1MGVjMTJmNjZkLi5lZGEwNmRmYzU5ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi90ZXN0X2ZhaWx1cmVzLnB5CkBAIC0xLDE0ICsx
LDEzIEBACitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAogCi1pbXBvcnQgcHkKLQotZmFp
bHVyZV9kZW1vID0gcHkucGF0aC5sb2NhbChfX2ZpbGVfXykuZGlycGF0aCgiZmFpbHVyZV9kZW1v
LnB5IikKLXB5dGVzdF9wbHVnaW5zID0gInB5dGVzdGVyIiwKK2ZhaWx1cmVfZGVtbyA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiZmFpbHVyZV9kZW1vLnB5IikKK3B5
dGVzdF9wbHVnaW5zID0gKCJweXRlc3RlciIsKQogCiAKIGRlZiB0ZXN0X2ZhaWx1cmVfZGVtb19m
YWlsc19wcm9wZXJseSh0ZXN0ZGlyKToKLSAgICB0YXJnZXQgPSB0ZXN0ZGlyLnRtcGRpci5qb2lu
KGZhaWx1cmVfZGVtby5iYXNlbmFtZSkKLSAgICBmYWlsdXJlX2RlbW8uY29weSh0YXJnZXQpCi0g
ICAgZmFpbHVyZV9kZW1vLmNvcHkodGVzdGRpci50bXBkaXIuam9pbihmYWlsdXJlX2RlbW8uYmFz
ZW5hbWUpKQorICAgIHRhcmdldCA9IHRlc3RkaXIudG1wZGlyLmpvaW4ob3MucGF0aC5iYXNlbmFt
ZShmYWlsdXJlX2RlbW8pKQorICAgIHNodXRpbC5jb3B5KGZhaWx1cmVfZGVtbywgdGFyZ2V0KQog
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHRhcmdldCwgc3lzcGF0aGluc2VydD1UcnVl
KQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio0MiBmYWlsZWQqIl0pCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjQ0IGZhaWxlZCoiXSkKICAgICBhc3NlcnQg
cmVzdWx0LnJldCAhPSAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9h
c3NlcnRpb24vdGVzdF9zZXR1cF9mbG93X2V4YW1wbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9hc3NlcnRpb24vdGVzdF9zZXR1cF9mbG93X2V4YW1wbGUucHkKaW5kZXggYzAwNzEx
ZGMyMzgxLi4wZTdlZGVkMDZiNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFt
cGxlL2Fzc2VydGlvbi90ZXN0X3NldHVwX2Zsb3dfZXhhbXBsZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdGVzdF9zZXR1cF9mbG93X2V4YW1wbGUucHkKQEAg
LTIsOCArMiw3IEBAIGRlZiBzZXR1cF9tb2R1bGUobW9kdWxlKToKICAgICBtb2R1bGUuVGVzdFN0
YXRlRnVsbFRoaW5nLmNsYXNzY291bnQgPSAwCiAKIAotY2xhc3MgVGVzdFN0YXRlRnVsbFRoaW5n
KG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RTdGF0ZUZ1bGxUaGluZzoKICAgICBkZWYgc2V0dXBfY2xh
c3MoY2xzKToKICAgICAgICAgY2xzLmNsYXNzY291bnQgKz0gMQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhjMjJhYjkzNzhmYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxl
L2Fzc2VydGlvbi9mYWlsdXJlX2RlbW8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9h
c3NlcnRpb24vdGVzdF9mYWlsdXJlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fz
c2VydGlvbi90ZXN0X3NldHVwX2Zsb3dfZXhhbXBsZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2V4YW1wbGUvYXR0aWMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
YXR0aWMucnN0CmluZGV4IGQ2ZmVjZjM0MGI2Mi4uMmVhODcwMDYyMDQzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hdHRpYy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvYXR0aWMucnN0CkBAIC0xOCwxNiArMTgsMTYgQEAgZXhhbXBsZTogc3BlY2lm
eWluZyBhbmQgc2VsZWN0aW5nIGFjY2VwdGFuY2UgdGVzdHMKICAgICAgICAgcmV0dXJuIEFjY2Vw
dEZpeHR1cmUocmVxdWVzdCkKIAogCi0gICAgY2xhc3MgQWNjZXB0Rml4dHVyZShvYmplY3QpOgor
ICAgIGNsYXNzIEFjY2VwdEZpeHR1cmU6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1
ZXN0KToKICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LmNvbmZpZy5nZXRvcHRpb24oImFjY2Vw
dGFuY2UiKToKICAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgic3BlY2lmeSAtQSB0byBydW4g
YWNjZXB0YW5jZSB0ZXN0cyIpCiAgICAgICAgICAgICBzZWxmLnRtcGRpciA9IHJlcXVlc3QuY29u
ZmlnLm1rdGVtcChyZXF1ZXN0LmZ1bmN0aW9uLl9fbmFtZV9fLCBudW1iZXJlZD1UcnVlKQogCi0g
ICAgICAgIGRlZiBydW4oc2VsZiwgY21kKToKKyAgICAgICAgZGVmIHJ1bihzZWxmLCAqY21kKToK
ICAgICAgICAgICAgICIiIiBjYWxsZWQgYnkgdGVzdCBjb2RlIHRvIGV4ZWN1dGUgYW4gYWNjZXB0
YW5jZSB0ZXN0LiAiIiIKICAgICAgICAgICAgIHNlbGYudG1wZGlyLmNoZGlyKCkKLSAgICAgICAg
ICAgIHJldHVybiBweS5wcm9jZXNzLmNtZGV4ZWMoY21kKQorICAgICAgICAgICAgcmV0dXJuIHN1
YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkuZGVjb2RlKCkKIAogCiBhbmQgdGhlIGFjdHVhbCB0
ZXN0IGZ1bmN0aW9uIGV4YW1wbGU6CkBAIC0zNiw3ICszNiw3IEBAIGFuZCB0aGUgYWN0dWFsIHRl
c3QgZnVuY3Rpb24gZXhhbXBsZToKIAogICAgIGRlZiB0ZXN0X3NvbWVfYWNjZXB0YW5jZV9hc3Bl
Y3QoYWNjZXB0KToKICAgICAgICAgYWNjZXB0LnRtcGRpci5ta2Rpcigic29tZXN1YiIpCi0gICAg
ICAgIHJlc3VsdCA9IGFjY2VwdC5ydW4oImxzIC1sYSIpCisgICAgICAgIHJlc3VsdCA9IGFjY2Vw
dC5ydW4oImxzIiwgIi1sYSIpCiAgICAgICAgIGFzc2VydCAic29tZXN1YiIgaW4gcmVzdWx0CiAK
IElmIHlvdSBydW4gdGhpcyB0ZXN0IHdpdGhvdXQgc3BlY2lmeWluZyBhIGNvbW1hbmQgbGluZSBv
cHRpb24KQEAgLTY1LDcgKzY1LDcgQEAgZXh0ZW5kIHRoZSBgYWNjZXB0IGV4YW1wbGVgXyBieSBw
dXR0aW5nIHRoaXMgaW4gb3VyIHRlc3QgbW9kdWxlOgogICAgICAgICByZXR1cm4gYXJnCiAKIAot
ICAgIGNsYXNzIFRlc3RTcGVjaWFsQWNjZXB0YW5jZShvYmplY3QpOgorICAgIGNsYXNzIFRlc3RT
cGVjaWFsQWNjZXB0YW5jZToKICAgICAgICAgZGVmIHRlc3Rfc29tZXRlc3Qoc2VsZiwgYWNjZXB0
KToKICAgICAgICAgICAgIGFzc2VydCBhY2NlcHQudG1wZGlyLmpvaW4oInNwZWNpYWwiKS5jaGVj
aygpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVw
L2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvY29u
ZnRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2NmM2MmMwNmFiOC4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL2Nv
bmZ0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotCi1pbXBvcnQgcHl0ZXN0
Ci0KLQotQHB5dGVzdC5maXh0dXJlKCJzZXNzaW9uIikKLWRlZiBzZXR1cChyZXF1ZXN0KToKLSAg
ICBzZXR1cCA9IENvc3RseVNldHVwKCkKLSAgICB5aWVsZCBzZXR1cAotICAgIHNldHVwLmZpbmFs
aXplKCkKLQotCi1jbGFzcyBDb3N0bHlTZXR1cChvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICBpbXBvcnQgdGltZQotCi0gICAgICAgIHByaW50KCJwZXJmb3JtaW5n
IGNvc3RseSBzZXR1cCIpCi0gICAgICAgIHRpbWUuc2xlZXAoNSkKLSAgICAgICAgc2VsZi50aW1l
Y29zdGx5ID0gMQotCi0gICAgZGVmIGZpbmFsaXplKHNlbGYpOgotICAgICAgICBkZWwgc2VsZi50
aW1lY29zdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlz
ZXR1cC9zdWIxL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5
c2V0dXAvc3ViMS9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzky
ZDYwMDU0ODllLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
Y29zdGx5c2V0dXAvc3ViMS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LSMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1
YjEvdGVzdF9xdWljay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVw
L3N1YjEvdGVzdF9xdWljay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk3NjU3
ODY3ZTAyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29z
dGx5c2V0dXAvc3ViMS90ZXN0X3F1aWNrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci0KLWRlZiB0ZXN0X3F1aWNrKHNldHVwKToKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMS93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM3ZjY2YTE4YmE3Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMS93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvX19pbml0X18ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL3Rlc3RfcXVpY2sucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvX19pbml0
X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL19faW5p
dF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTJkNjAwNTQ4OWUuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIy
L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi90ZXN0X3R3by5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvdGVzdF90d28ucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZDZlZTRkODk4Zi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvdGVzdF90
d28ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWRlZiB0ZXN0X3NvbWV0aGluZyhz
ZXR1cCk6Ci0gICAgYXNzZXJ0IHNldHVwLnRpbWVjb3N0bHkgPT0gMQotCi1kZWYgdGVzdF9zb21l
dGhpbmdfbW9yZShzZXR1cCk6Ci0gICAgYXNzZXJ0IHNldHVwLnRpbWVjb3N0bHkgPT0gMQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3Vi
Mi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE2NDIwZWM4
M2Q4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5
c2V0dXAvc3ViMi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL3Rl
c3RfdHdvLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlz
ZXR1cC9zdWJfYS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3Rs
eXNldHVwL3N1Yl9hL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
OTJkNjAwNTQ4OWUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9jb3N0bHlzZXR1cC9zdWJfYS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLSMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVw
L3N1Yl9hL3Rlc3RfcXVpY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlz
ZXR1cC9zdWJfYS90ZXN0X3F1aWNrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
OGRkYTI2NjBkMjQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9jb3N0bHlzZXR1cC9zdWJfYS90ZXN0X3F1aWNrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiAr
MCwwIEBACi1kZWYgdGVzdF9xdWljayhzZXR1cCk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYS93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEwNTgxNWNkZDA3Li4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2Ev
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYS9fX2luaXRfXy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9hL3Rlc3RfcXVpY2su
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1
Yl9iL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAv
c3ViX2IvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MmQ2MDA1
NDg5ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3Rs
eXNldHVwL3N1Yl9iL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2Iv
dGVzdF90d28ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJf
Yi90ZXN0X3R3by5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2NTNhYWFiODhh
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0
dXAvc3ViX2IvdGVzdF90d28ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWRlZiB0
ZXN0X3NvbWV0aGluZyhzZXR1cCk6Ci0gICAgYXNzZXJ0IHNldHVwLnRpbWVjb3N0bHkgPT0gMQot
Ci0KLWRlZiB0ZXN0X3NvbWV0aGluZ19tb3JlKHNldHVwKToKLSAgICBhc3NlcnQgc2V0dXAudGlt
ZWNvc3RseSA9PSAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0
bHlzZXR1cC9zdWJfYi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxl
L2Nvc3RseXNldHVwL3N1Yl9iL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZGEzOTcwNjU2ZmIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nv
c3RseXNldHVwL3N1Yl9iL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
Y29zdGx5c2V0dXAvc3ViX2IvdGVzdF90d28ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDhjMzQ1ZjdjOGQ1MC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29z
dGx5c2V0dXAvY29uZnRlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFt
cGxlL2ZpeHR1cmVzL3Rlc3RfZml4dHVyZXNfb3JkZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9maXh0dXJlcy90ZXN0X2ZpeHR1cmVzX29yZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTdiM2U4MDA1MmI4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvZml4dHVyZXMvdGVzdF9maXh0dXJlc19vcmRlci5w
eQpAQCAtMCwwICsxLDM4IEBACitpbXBvcnQgcHl0ZXN0CisKKyMgZml4dHVyZXMgZG9jdW1lbnRh
dGlvbiBvcmRlciBleGFtcGxlCitvcmRlciA9IFtdCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3Bl
PSJzZXNzaW9uIikKK2RlZiBzMSgpOgorICAgIG9yZGVyLmFwcGVuZCgiczEiKQorCisKK0BweXRl
c3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBtMSgpOgorICAgIG9yZGVyLmFwcGVuZCgi
bTEiKQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGYxKGYzKToKKyAgICBvcmRlci5hcHBlbmQo
ImYxIikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBmMygpOgorICAgIG9yZGVyLmFwcGVuZCgi
ZjMiKQorCisKK0BweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCitkZWYgYTEoKToKKyAgICBv
cmRlci5hcHBlbmQoImExIikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBmMigpOgorICAgIG9y
ZGVyLmFwcGVuZCgiZjIiKQorCisKK2RlZiB0ZXN0X29yZGVyKGYxLCBtMSwgZjIsIHMxKToKKyAg
ICBhc3NlcnQgb3JkZXIgPT0gWyJzMSIsICJtMSIsICJhMSIsICJmMyIsICJmMSIsICJmMiJdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9pbmRleC5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9pbmRleC5yc3QKaW5kZXggZjYzY2I4MjJhNDFjLi42ODc2MDgy
ZDQxODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2luZGV4LnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9pbmRleC5yc3QKQEAgLTE1LDcgKzE1LDcg
QEAgRm9yIGJhc2ljIGV4YW1wbGVzLCBzZWUKIAogLSA6ZG9jOmAuLi9nZXR0aW5nLXN0YXJ0ZWRg
IGZvciBiYXNpYyBpbnRyb2R1Y3RvcnkgZXhhbXBsZXMKIC0gOnJlZjpgYXNzZXJ0YCBmb3IgYmFz
aWMgYXNzZXJ0aW9uIGV4YW1wbGVzCi0tIDpyZWY6YGZpeHR1cmVzYCBmb3IgYmFzaWMgZml4dHVy
ZS9zZXR1cCBleGFtcGxlcworLSA6cmVmOmBGaXh0dXJlcyA8Zml4dHVyZXM+YCBmb3IgYmFzaWMg
Zml4dHVyZS9zZXR1cCBleGFtcGxlcwogLSA6cmVmOmBwYXJhbWV0cml6ZWAgZm9yIGJhc2ljIHRl
c3QgZnVuY3Rpb24gcGFyYW1ldHJpemF0aW9uCiAtIDpkb2M6YC4uL3VuaXR0ZXN0YCBmb3IgYmFz
aWMgdW5pdHRlc3QgaW50ZWdyYXRpb24KIC0gOmRvYzpgLi4vbm9zZWAgZm9yIGJhc2ljIG5vc2V0
ZXN0cyBpbnRlZ3JhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
bWFya2Vycy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9tYXJrZXJzLnJzdAppbmRl
eCBiZjM1MmJjODEyOTguLjNkNTVmOWViYjA0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvbWFya2Vycy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
bWFya2Vycy5yc3QKQEAgLTQsMTAxICs0LDEyMyBAQAogV29ya2luZyB3aXRoIGN1c3RvbSBtYXJr
ZXJzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAK
LUhlcmUgYXJlIHNvbWUgZXhhbXBsZSB1c2luZyB0aGUgOnJlZjpgbWFya2AgbWVjaGFuaXNtLgor
SGVyZSBhcmUgc29tZSBleGFtcGxlcyB1c2luZyB0aGUgOnJlZjpgbWFya2AgbWVjaGFuaXNtLgor
CisuLiBfYG1hcmsgcnVuYDoKIAogTWFya2luZyB0ZXN0IGZ1bmN0aW9ucyBhbmQgc2VsZWN0aW5n
IHRoZW0gZm9yIGEgcnVuCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVlvdSBjYW4gIm1hcmsiIGEgdGVzdCBmdW5jdGlvbiB3aXRoIGN1c3Rv
bSBtZXRhZGF0YSBsaWtlIHRoaXM6OgorWW91IGNhbiAibWFyayIgYSB0ZXN0IGZ1bmN0aW9uIHdp
dGggY3VzdG9tIG1ldGFkYXRhIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgog
CiAgICAgIyBjb250ZW50IG9mIHRlc3Rfc2VydmVyLnB5CiAKICAgICBpbXBvcnQgcHl0ZXN0CisK
KwogICAgIEBweXRlc3QubWFyay53ZWJ0ZXN0CiAgICAgZGVmIHRlc3Rfc2VuZF9odHRwKCk6Ci0g
ICAgICAgIHBhc3MgIyBwZXJmb3JtIHNvbWUgd2VidGVzdCB0ZXN0IGZvciB5b3VyIGFwcAorICAg
ICAgICBwYXNzICAjIHBlcmZvcm0gc29tZSB3ZWJ0ZXN0IHRlc3QgZm9yIHlvdXIgYXBwCisKKwog
ICAgIGRlZiB0ZXN0X3NvbWV0aGluZ19xdWljaygpOgogICAgICAgICBwYXNzCisKKwogICAgIGRl
ZiB0ZXN0X2Fub3RoZXIoKToKICAgICAgICAgcGFzcwotICAgIGNsYXNzIFRlc3RDbGFzcyhvYmpl
Y3QpOgorCisKKyAgICBjbGFzcyBUZXN0Q2xhc3M6CiAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChz
ZWxmKToKICAgICAgICAgICAgIHBhc3MKIAotLi4gdmVyc2lvbmFkZGVkOjogMi4yCiAKLVlvdSBj
YW4gdGhlbiByZXN0cmljdCBhIHRlc3QgcnVuIHRvIG9ubHkgcnVuIHRlc3RzIG1hcmtlZCB3aXRo
IGBgd2VidGVzdGBgOjoKKworWW91IGNhbiB0aGVuIHJlc3RyaWN0IGEgdGVzdCBydW4gdG8gb25s
eSBydW4gdGVzdHMgbWFya2VkIHdpdGggYGB3ZWJ0ZXN0YGA6CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRlc3QKIAogICAgICQgcHl0ZXN0IC12IC1tIHdlYnRlc3QKICAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQotICAg
IGNhY2hlZGlyOiAucHl0ZXN0X2NhY2hlCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwg
aW5pZmlsZToKLSAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgNCBpdGVtcyAvIDMgZGVzZWxl
Y3RlZAorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBj
YWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIKKyAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgNCBpdGVtcyAvIDMgZGVz
ZWxlY3RlZCAvIDEgc2VsZWN0ZWQKIAogICAgIHRlc3Rfc2VydmVyLnB5Ojp0ZXN0X3NlbmRfaHR0
cCBQQVNTRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09
PT09PT09PT09PT09PT09IDEgcGFzc2VkLCAzIGRlc2VsZWN0ZWQgaW4gMC4xMiBzZWNvbmRzID09
PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCwgMyBk
ZXNlbGVjdGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT0KKworT3IgdGhlIGludmVy
c2UsIHJ1bm5pbmcgYWxsIHRlc3RzIGV4Y2VwdCB0aGUgd2VidGVzdCBvbmVzOgogCi1PciB0aGUg
aW52ZXJzZSwgcnVubmluZyBhbGwgdGVzdHMgZXhjZXB0IHRoZSB3ZWJ0ZXN0IG9uZXM6OgorLi4g
Y29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXYgLW0gIm5vdCB3ZWJ0ZXN0Igog
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54
LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJ
WC9iaW4vcHl0aG9uMy41Ci0gICAgY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUKLSAgICByb290ZGly
OiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgotICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3Rl
ZCA0IGl0ZW1zIC8gMSBkZXNlbGVjdGVkCisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMu
eC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVG
SVgvYmluL3B5dGhvbgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hl
CisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxl
Y3RlZCA0IGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMyBzZWxlY3RlZAogCiAgICAgdGVzdF9zZXJ2
ZXIucHk6OnRlc3Rfc29tZXRoaW5nX3F1aWNrIFBBU1NFRCAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyAzMyVdCiAgICAgdGVzdF9zZXJ2ZXIucHk6OnRlc3RfYW5vdGhlciBQQVNTRUQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA2NiVdCiAgICAgdGVzdF9zZXJ2ZXIucHk6OlRl
c3RDbGFzczo6dGVzdF9tZXRob2QgUEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVd
CiAKLSAgICA9PT09PT09PT09PT09PT09PT0gMyBwYXNzZWQsIDEgZGVzZWxlY3RlZCBpbiAwLjEy
IHNlY29uZHMgPT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09IDMg
cGFzc2VkLCAxIGRlc2VsZWN0ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PQogCiBT
ZWxlY3RpbmcgdGVzdHMgYmFzZWQgb24gdGhlaXIgbm9kZSBJRAogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogWW91IGNhbiBwcm92aWRlIG9uZSBvciBtb3JlIDpyZWY6
YG5vZGUgSURzIDxub2RlLWlkPmAgYXMgcG9zaXRpb25hbAogYXJndW1lbnRzIHRvIHNlbGVjdCBv
bmx5IHNwZWNpZmllZCB0ZXN0cy4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIHNlbGVjdAotdGVzdHMg
YmFzZWQgb24gdGhlaXIgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBvciBmdW5jdGlvbiBuYW1lOjoK
K3Rlc3RzIGJhc2VkIG9uIHRoZWlyIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgb3IgZnVuY3Rpb24g
bmFtZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXYgdGVzdF9z
ZXJ2ZXIucHk6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QKICAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEu
eC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQotICAgIGNh
Y2hlZGlyOiAucHl0ZXN0X2NhY2hlCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5p
ZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwg
cHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAg
Y2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVH
RU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDEgaXRlbQogCiAgICAg
dGVzdF9zZXJ2ZXIucHk6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QgUEFTU0VEICAgICAgICAgICAg
ICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IDEgcGFz
c2VkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorCitZb3UgY2FuIGFsc28gc2VsZWN0IG9uIHRoZSBjbGFzczoKIAotWW91
IGNhbiBhbHNvIHNlbGVjdCBvbiB0aGUgY2xhc3M6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAog
CiAgICAgJCBweXRlc3QgLXYgdGVzdF9zZXJ2ZXIucHk6OlRlc3RDbGFzcwogICAgID09PT09PT09
PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0z
LngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9u
My41Ci0gICAgY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUKLSAgICByb290ZGlyOiAkUkVHRU5ET0Nf
VE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0
ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9w
eXRob24KKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJv
b3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgMSBp
dGVtCiAKICAgICB0ZXN0X3NlcnZlci5weTo6VGVzdENsYXNzOjp0ZXN0X21ldGhvZCBQQVNTRUQg
ICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PT09
PT09PT0gMSBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDEgcGFzc2VkIGluIDAuMTJzID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAKLU9yIHNlbGVjdCBtdWx0aXBsZSBub2Rlczo6CitP
ciBzZWxlY3QgbXVsdGlwbGUgbm9kZXM6CiAKLSAgJCBweXRlc3QgLXYgdGVzdF9zZXJ2ZXIucHk6
OlRlc3RDbGFzcyB0ZXN0X3NlcnZlci5weTo6dGVzdF9zZW5kX2h0dHAKLSAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwg
cHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uMy41Ci0g
IGNhY2hlZGlyOiAucHl0ZXN0X2NhY2hlCi0gIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGlu
aWZpbGU6Ci0gIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAyIGl0ZW1zCisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKLSAgdGVzdF9zZXJ2ZXIucHk6OlRlc3RDbGFzczo6dGVzdF9tZXRob2QgUEFT
U0VEICAgICAgICAgICAgICAgICAgICAgICAgWyA1MCVdCi0gIHRlc3Rfc2VydmVyLnB5Ojp0ZXN0
X3NlbmRfaHR0cCBQQVNTRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQor
ICAgICQgcHl0ZXN0IC12IHRlc3Rfc2VydmVyLnB5OjpUZXN0Q2xhc3MgdGVzdF9zZXJ2ZXIucHk6
OnRlc3Rfc2VuZF9odHRwCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vz
c2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHBsYXRmb3JtIGxp
bnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55
IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVG
SVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBjb2xs
ZWN0aW5nIC4uLiBjb2xsZWN0ZWQgMiBpdGVtcwogCi0gID09PT09PT09PT09PT09PT09PT09PT09
PT0gMiBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg
ICB0ZXN0X3NlcnZlci5weTo6VGVzdENsYXNzOjp0ZXN0X21ldGhvZCBQQVNTRUQgICAgICAgICAg
ICAgICAgICAgICAgICBbIDUwJV0KKyAgICB0ZXN0X3NlcnZlci5weTo6dGVzdF9zZW5kX2h0dHAg
UEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KKworICAgID09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KIAogLi4gX25vZGUtaWQ6CiAKQEAgLTExOSw5NiArMTQxLDEwNSBAQCBP
ciBzZWxlY3QgbXVsdGlwbGUgbm9kZXM6OgogVXNpbmcgYGAtayBleHByYGAgdG8gc2VsZWN0IHRl
c3RzIGJhc2VkIG9uIHRoZWlyIG5hbWUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lvbmFkZGVkOiAyLjAvMi4zLjQKKy4u
IHZlcnNpb25hZGRlZDo6IDIuMC8yLjMuNAogCiBZb3UgY2FuIHVzZSB0aGUgYGAta2BgIGNvbW1h
bmQgbGluZSBvcHRpb24gdG8gc3BlY2lmeSBhbiBleHByZXNzaW9uCiB3aGljaCBpbXBsZW1lbnRz
IGEgc3Vic3RyaW5nIG1hdGNoIG9uIHRoZSB0ZXN0IG5hbWVzIGluc3RlYWQgb2YgdGhlCiBleGFj
dCBtYXRjaCBvbiBtYXJrZXJzIHRoYXQgYGAtbWBgIHByb3ZpZGVzLiAgVGhpcyBtYWtlcyBpdCBl
YXN5IHRvCi1zZWxlY3QgdGVzdHMgYmFzZWQgb24gdGhlaXIgbmFtZXM6Ogorc2VsZWN0IHRlc3Rz
IGJhc2VkIG9uIHRoZWlyIG5hbWVzOgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDUuNAorCitUaGUg
ZXhwcmVzc2lvbiBtYXRjaGluZyBpcyBub3cgY2FzZS1pbnNlbnNpdGl2ZS4KKworLi4gY29kZS1i
bG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXYgLWsgaHR0cCAgIyBydW5uaW5nIHdpdGgg
dGhlIGFib3ZlIGRlZmluZWQgZXhhbXBsZSBtb2R1bGUKICAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEu
eC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQotICAgIGNh
Y2hlZGlyOiAucHl0ZXN0X2NhY2hlCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5p
ZmlsZToKLSAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgNCBpdGVtcyAvIDMgZGVzZWxlY3Rl
ZAorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0x
LngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBjYWNo
ZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRP
Q19UTVBESVIKKyAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgNCBpdGVtcyAvIDMgZGVzZWxl
Y3RlZCAvIDEgc2VsZWN0ZWQKIAogICAgIHRlc3Rfc2VydmVyLnB5Ojp0ZXN0X3NlbmRfaHR0cCBQ
QVNTRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09
PT09PT09PT09PT09IDEgcGFzc2VkLCAzIGRlc2VsZWN0ZWQgaW4gMC4xMiBzZWNvbmRzID09PT09
PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCwgMyBkZXNl
bGVjdGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT0KKworQW5kIHlvdSBjYW4gYWxz
byBydW4gYWxsIHRlc3RzIGV4Y2VwdCB0aGUgb25lcyB0aGF0IG1hdGNoIHRoZSBrZXl3b3JkOgog
Ci1BbmQgeW91IGNhbiBhbHNvIHJ1biBhbGwgdGVzdHMgZXhjZXB0IHRoZSBvbmVzIHRoYXQgbWF0
Y2ggdGhlIGtleXdvcmQ6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3Qg
LWsgIm5vdCBzZW5kX2h0dHAiIC12CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRl
c3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRm
b3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5
LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5
dGVzdF9jYWNoZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gICAg
Y29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDQgaXRlbXMgLyAxIGRlc2VsZWN0ZWQKKyAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRI
T05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisg
ICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDQgaXRlbXMgLyAxIGRlc2VsZWN0ZWQgLyAzIHNl
bGVjdGVkCiAKICAgICB0ZXN0X3NlcnZlci5weTo6dGVzdF9zb21ldGhpbmdfcXVpY2sgUEFTU0VE
ICAgICAgICAgICAgICAgICAgICAgICAgICBbIDMzJV0KICAgICB0ZXN0X3NlcnZlci5weTo6dGVz
dF9hbm90aGVyIFBBU1NFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIDY2JV0K
ICAgICB0ZXN0X3NlcnZlci5weTo6VGVzdENsYXNzOjp0ZXN0X21ldGhvZCBQQVNTRUQgICAgICAg
ICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PSAzIHBhc3Nl
ZCwgMSBkZXNlbGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT0KKyAgICA9
PT09PT09PT09PT09PT09PT09PT0gMyBwYXNzZWQsIDEgZGVzZWxlY3RlZCBpbiAwLjEycyA9PT09
PT09PT09PT09PT09PT09PT09CisKK09yIHRvIHNlbGVjdCAiaHR0cCIgYW5kICJxdWljayIgdGVz
dHM6CiAKLU9yIHRvIHNlbGVjdCAiaHR0cCIgYW5kICJxdWljayIgdGVzdHM6OgorLi4gY29kZS1i
bG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLWsgImh0dHAgb3IgcXVpY2siIC12CiAgICAg
PT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwg
cHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jp
bi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5dGVzdF9jYWNoZQotICAgIHJvb3RkaXI6ICRS
RUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDQg
aXRlbXMgLyAyIGRlc2VsZWN0ZWQKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9i
aW4vcHl0aG9uCisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAg
ICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVk
IDQgaXRlbXMgLyAyIGRlc2VsZWN0ZWQgLyAyIHNlbGVjdGVkCiAKICAgICB0ZXN0X3NlcnZlci5w
eTo6dGVzdF9zZW5kX2h0dHAgUEFTU0VEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
IDUwJV0KICAgICB0ZXN0X3NlcnZlci5weTo6dGVzdF9zb21ldGhpbmdfcXVpY2sgUEFTU0VEICAg
ICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PSAy
IHBhc3NlZCwgMiBkZXNlbGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT0K
KyAgICA9PT09PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQsIDIgZGVzZWxlY3RlZCBpbiAwLjEy
cyA9PT09PT09PT09PT09PT09PT09PT09CiAKLS4uIG5vdGU6OgotCi0gICAgSWYgeW91IGFyZSB1
c2luZyBleHByZXNzaW9ucyBzdWNoIGFzIGBgIlggYW5kIFkiYGAgdGhlbiBib3RoIGBgWGBgIGFu
ZCBgYFlgYAotICAgIG5lZWQgdG8gYmUgc2ltcGxlIG5vbi1rZXl3b3JkIG5hbWVzLiBGb3IgZXhh
bXBsZSwgYGAicGFzcyJgYCBvciBgYCJmcm9tImBgCi0gICAgd2lsbCByZXN1bHQgaW4gU3ludGF4
RXJyb3JzIGJlY2F1c2UgYGAiLWsiYGAgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIHVzaW5nCi0g
ICAgUHl0aG9uJ3MgYGV2YWxgXyBmdW5jdGlvbi4KK1lvdSBjYW4gdXNlIGBgYW5kYGAsIGBgb3Jg
YCwgYGBub3RgYCBhbmQgcGFyZW50aGVzZXMuCiAKLS4uIF9gZXZhbGA6IGh0dHBzOi8vZG9jcy5w
eXRob24ub3JnLzMuNi9saWJyYXJ5L2Z1bmN0aW9ucy5odG1sI2V2YWwKIAorSW4gYWRkaXRpb24g
dG8gdGhlIHRlc3QncyBuYW1lLCBgYC1rYGAgYWxzbyBtYXRjaGVzIHRoZSBuYW1lcyBvZiB0aGUg
dGVzdCdzIHBhcmVudHMgKHVzdWFsbHksIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGFuZCBjbGFzcyBp
dCdzIGluKSwKK2F0dHJpYnV0ZXMgc2V0IG9uIHRoZSB0ZXN0IGZ1bmN0aW9uLCBtYXJrZXJzIGFw
cGxpZWQgdG8gaXQgb3IgaXRzIHBhcmVudHMgYW5kIGFueSA6YXR0cjpgZXh0cmEga2V5d29yZHMg
PF9weXRlc3Qubm9kZXMuTm9kZS5leHRyYV9rZXl3b3JkX21hdGNoZXM+YAorZXhwbGljaXRseSBh
ZGRlZCB0byBpdCBvciBpdHMgcGFyZW50cy4KIAotICAgIEhvd2V2ZXIsIGlmIHRoZSBgYCItayJg
YCBhcmd1bWVudCBpcyBhIHNpbXBsZSBzdHJpbmcsIG5vIHN1Y2ggcmVzdHJpY3Rpb25zCi0gICAg
YXBwbHkuIEFsc28gYGAiLWsgJ25vdCBTVFJJTkcnImBgIGhhcyBubyByZXN0cmljdGlvbnMuICBZ
b3UgY2FuIGFsc28KLSAgICBzcGVjaWZ5IG51bWJlcnMgbGlrZSBgYCItayAxLjMiYGAgdG8gbWF0
Y2ggdGVzdHMgd2hpY2ggYXJlIHBhcmFtZXRyaXplZAotICAgIHdpdGggdGhlIGZsb2F0IGBgIjEu
MyJgYC4KIAogUmVnaXN0ZXJpbmcgbWFya2VycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjIKKwogCiAuLiBpbmktc3ludGF4IGZv
ciBjdXN0b20gbWFya2VyczoKIAotUmVnaXN0ZXJpbmcgbWFya2VycyBmb3IgeW91ciB0ZXN0IHN1
aXRlIGlzIHNpbXBsZTo6CitSZWdpc3RlcmluZyBtYXJrZXJzIGZvciB5b3VyIHRlc3Qgc3VpdGUg
aXMgc2ltcGxlOgorCisuLiBjb2RlLWJsb2NrOjogaW5pCiAKICAgICAjIGNvbnRlbnQgb2YgcHl0
ZXN0LmluaQogICAgIFtweXRlc3RdCiAgICAgbWFya2VycyA9CiAgICAgICAgIHdlYnRlc3Q6IG1h
cmsgYSB0ZXN0IGFzIGEgd2VidGVzdC4KIAotWW91IGNhbiBhc2sgd2hpY2ggbWFya2VycyBleGlz
dCBmb3IgeW91ciB0ZXN0IHN1aXRlIC0gdGhlIGxpc3QgaW5jbHVkZXMgb3VyIGp1c3QgZGVmaW5l
ZCBgYHdlYnRlc3RgYCBtYXJrZXJzOjoKK1lvdSBjYW4gYXNrIHdoaWNoIG1hcmtlcnMgZXhpc3Qg
Zm9yIHlvdXIgdGVzdCBzdWl0ZSAtIHRoZSBsaXN0IGluY2x1ZGVzIG91ciBqdXN0IGRlZmluZWQg
YGB3ZWJ0ZXN0YGAgbWFya2VyczoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBw
eXRlc3QgLS1tYXJrZXJzCiAgICAgQHB5dGVzdC5tYXJrLndlYnRlc3Q6IG1hcmsgYSB0ZXN0IGFz
IGEgd2VidGVzdC4KIAorICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncyh3YXJuaW5nKTog
YWRkIGEgd2FybmluZyBmaWx0ZXIgdG8gdGhlIGdpdmVuIHRlc3QuIHNlZSBodHRwczovL2RvY3Mu
cHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbCNweXRlc3QtbWFyay1maWx0ZXJ3YXJu
aW5ncworCiAgICAgQHB5dGVzdC5tYXJrLnNraXAocmVhc29uPU5vbmUpOiBza2lwIHRoZSBnaXZl
biB0ZXN0IGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgcmVhc29uLiBFeGFtcGxlOiBza2lwKHJl
YXNvbj0ibm8gd2F5IG9mIGN1cnJlbnRseSB0ZXN0aW5nIHRoaXMiKSBza2lwcyB0aGUgdGVzdC4K
IAotICAgIEBweXRlc3QubWFyay5za2lwaWYoY29uZGl0aW9uKTogc2tpcCB0aGUgZ2l2ZW4gdGVz
dCBmdW5jdGlvbiBpZiBldmFsKGNvbmRpdGlvbikgcmVzdWx0cyBpbiBhIFRydWUgdmFsdWUuICBF
dmFsdWF0aW9uIGhhcHBlbnMgd2l0aGluIHRoZSBtb2R1bGUgZ2xvYmFsIGNvbnRleHQuIEV4YW1w
bGU6IHNraXBpZignc3lzLnBsYXRmb3JtID09ICJ3aW4zMiInKSBza2lwcyB0aGUgdGVzdCBpZiB3
ZSBhcmUgb24gdGhlIHdpbjMyIHBsYXRmb3JtLiBzZWUgaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0
L3NraXBwaW5nLmh0bWwKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKGNvbmRpdGlvbiwgLi4uLCAq
LCByZWFzb249Li4uKTogc2tpcCB0aGUgZ2l2ZW4gdGVzdCBmdW5jdGlvbiBpZiBhbnkgb2YgdGhl
IGNvbmRpdGlvbnMgZXZhbHVhdGUgdG8gVHJ1ZS4gRXhhbXBsZTogc2tpcGlmKHN5cy5wbGF0Zm9y
bSA9PSAnd2luMzInKSBza2lwcyB0aGUgdGVzdCBpZiB3ZSBhcmUgb24gdGhlIHdpbjMyIHBsYXRm
b3JtLiBTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3JlZmVyZW5jZS5odG1s
I3B5dGVzdC1tYXJrLXNraXBpZgogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKGNvbmRpdGlvbiwg
cmVhc29uPU5vbmUsIHJ1bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3RyaWN0PUZhbHNlKTogbWFyayB0
aGUgdGVzdCBmdW5jdGlvbiBhcyBhbiBleHBlY3RlZCBmYWlsdXJlIGlmIGV2YWwoY29uZGl0aW9u
KSBoYXMgYSBUcnVlIHZhbHVlLiBPcHRpb25hbGx5IHNwZWNpZnkgYSByZWFzb24gZm9yIGJldHRl
ciByZXBvcnRpbmcgYW5kIHJ1bj1GYWxzZSBpZiB5b3UgZG9uJ3QgZXZlbiB3YW50IHRvIGV4ZWN1
dGUgdGhlIHRlc3QgZnVuY3Rpb24uIElmIG9ubHkgc3BlY2lmaWMgZXhjZXB0aW9uKHMpIGFyZSBl
eHBlY3RlZCwgeW91IGNhbiBsaXN0IHRoZW0gaW4gcmFpc2VzLCBhbmQgaWYgdGhlIHRlc3QgZmFp
bHMgaW4gb3RoZXIgd2F5cywgaXQgd2lsbCBiZSByZXBvcnRlZCBhcyBhIHRydWUgZmFpbHVyZS4g
U2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9za2lwcGluZy5odG1sCisgICAgQHB5dGVzdC5t
YXJrLnhmYWlsKGNvbmRpdGlvbiwgLi4uLCAqLCByZWFzb249Li4uLCBydW49VHJ1ZSwgcmFpc2Vz
PU5vbmUsIHN0cmljdD14ZmFpbF9zdHJpY3QpOiBtYXJrIHRoZSB0ZXN0IGZ1bmN0aW9uIGFzIGFu
IGV4cGVjdGVkIGZhaWx1cmUgaWYgYW55IG9mIHRoZSBjb25kaXRpb25zIGV2YWx1YXRlIHRvIFRy
dWUuIE9wdGlvbmFsbHkgc3BlY2lmeSBhIHJlYXNvbiBmb3IgYmV0dGVyIHJlcG9ydGluZyBhbmQg
cnVuPUZhbHNlIGlmIHlvdSBkb24ndCBldmVuIHdhbnQgdG8gZXhlY3V0ZSB0aGUgdGVzdCBmdW5j
dGlvbi4gSWYgb25seSBzcGVjaWZpYyBleGNlcHRpb24ocykgYXJlIGV4cGVjdGVkLCB5b3UgY2Fu
IGxpc3QgdGhlbSBpbiByYWlzZXMsIGFuZCBpZiB0aGUgdGVzdCBmYWlscyBpbiBvdGhlciB3YXlz
LCBpdCB3aWxsIGJlIHJlcG9ydGVkIGFzIGEgdHJ1ZSBmYWlsdXJlLiBTZWUgaHR0cHM6Ly9kb2Nz
LnB5dGVzdC5vcmcvZW4vc3RhYmxlL3JlZmVyZW5jZS5odG1sI3B5dGVzdC1tYXJrLXhmYWlsCiAK
LSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoYXJnbmFtZXMsIGFyZ3ZhbHVlcyk6IGNhbGwg
YSB0ZXN0IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzIHBhc3NpbmcgaW4gZGlmZmVyZW50IGFyZ3Vt
ZW50cyBpbiB0dXJuLiBhcmd2YWx1ZXMgZ2VuZXJhbGx5IG5lZWRzIHRvIGJlIGEgbGlzdCBvZiB2
YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG9ubHkgb25lIG5hbWUgb3IgYSBsaXN0IG9mIHR1
cGxlcyBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG11bHRpcGxlIG5hbWVzLiBFeGFt
cGxlOiBAcGFyYW1ldHJpemUoJ2FyZzEnLCBbMSwyXSkgd291bGQgbGVhZCB0byB0d28gY2FsbHMg
b2YgdGhlIGRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9uLCBvbmUgd2l0aCBhcmcxPTEgYW5kIGFub3Ro
ZXIgd2l0aCBhcmcxPTIuc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9wYXJhbWV0cml6ZS5o
dG1sIGZvciBtb3JlIGluZm8gYW5kIGV4YW1wbGVzLgorICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZShhcmduYW1lcywgYXJndmFsdWVzKTogY2FsbCBhIHRlc3QgZnVuY3Rpb24gbXVsdGlwbGUg
dGltZXMgcGFzc2luZyBpbiBkaWZmZXJlbnQgYXJndW1lbnRzIGluIHR1cm4uIGFyZ3ZhbHVlcyBn
ZW5lcmFsbHkgbmVlZHMgdG8gYmUgYSBsaXN0IG9mIHZhbHVlcyBpZiBhcmduYW1lcyBzcGVjaWZp
ZXMgb25seSBvbmUgbmFtZSBvciBhIGxpc3Qgb2YgdHVwbGVzIG9mIHZhbHVlcyBpZiBhcmduYW1l
cyBzcGVjaWZpZXMgbXVsdGlwbGUgbmFtZXMuIEV4YW1wbGU6IEBwYXJhbWV0cml6ZSgnYXJnMScs
IFsxLDJdKSB3b3VsZCBsZWFkIHRvIHR3byBjYWxscyBvZiB0aGUgZGVjb3JhdGVkIHRlc3QgZnVu
Y3Rpb24sIG9uZSB3aXRoIGFyZzE9MSBhbmQgYW5vdGhlciB3aXRoIGFyZzE9Mi5zZWUgaHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3BhcmFtZXRyaXplLmh0bWwgZm9yIG1vcmUgaW5m
byBhbmQgZXhhbXBsZXMuCiAKLSAgICBAcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoZml4dHVyZW5h
bWUxLCBmaXh0dXJlbmFtZTIsIC4uLik6IG1hcmsgdGVzdHMgYXMgbmVlZGluZyBhbGwgb2YgdGhl
IHNwZWNpZmllZCBmaXh0dXJlcy4gc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9maXh0dXJl
Lmh0bWwjdXNlZml4dHVyZXMKKyAgICBAcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoZml4dHVyZW5h
bWUxLCBmaXh0dXJlbmFtZTIsIC4uLik6IG1hcmsgdGVzdHMgYXMgbmVlZGluZyBhbGwgb2YgdGhl
IHNwZWNpZmllZCBmaXh0dXJlcy4gc2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9maXh0dXJlLmh0bWwjdXNlZml4dHVyZXMKIAogICAgIEBweXRlc3QubWFyay50cnlmaXJzdDog
bWFyayBhIGhvb2sgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gc3VjaCB0aGF0IHRoZSBwbHVnaW4g
bWFjaGluZXJ5IHdpbGwgdHJ5IHRvIGNhbGwgaXQgZmlyc3QvYXMgZWFybHkgYXMgcG9zc2libGUu
CiAKQEAgLTIyNyw3ICsyNTgsNyBAQCBGb3IgYW4gZXhhbXBsZSBvbiBob3cgdG8gYWRkIGFuZCB3
b3JrIHdpdGggbWFya2VycyBmcm9tIGEgcGx1Z2luLCBzZWUKICAgICAqIEFza2luZyBmb3IgZXhp
c3RpbmcgbWFya2VycyB2aWEgYGBweXRlc3QgLS1tYXJrZXJzYGAgZ2l2ZXMgZ29vZCBvdXRwdXQK
IAogICAgICogVHlwb3MgaW4gZnVuY3Rpb24gbWFya2VycyBhcmUgdHJlYXRlZCBhcyBhbiBlcnJv
ciBpZiB5b3UgdXNlCi0gICAgICB0aGUgYGAtLXN0cmljdGBgIG9wdGlvbi4KKyAgICAgIHRoZSBg
YC0tc3RyaWN0LW1hcmtlcnNgYCBvcHRpb24uCiAKIC4uIF9gc2NvcGVkLW1hcmtpbmdgOgogCkBA
IC0yMzUsNDIgKzI2Niw0NSBAQCBNYXJraW5nIHdob2xlIGNsYXNzZXMgb3IgbW9kdWxlcwogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3Ug
bWF5IHVzZSBgYHB5dGVzdC5tYXJrYGAgZGVjb3JhdG9ycyB3aXRoIGNsYXNzZXMgdG8gYXBwbHkg
bWFya2VycyB0byBhbGwgb2YKLWl0cyB0ZXN0IG1ldGhvZHM6OgoraXRzIHRlc3QgbWV0aG9kczoK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3RfbWFya19j
bGFzc2xldmVsLnB5CiAgICAgaW1wb3J0IHB5dGVzdAorCisKICAgICBAcHl0ZXN0Lm1hcmsud2Vi
dGVzdAotICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgorICAgIGNsYXNzIFRlc3RDbGFzczoK
ICAgICAgICAgZGVmIHRlc3Rfc3RhcnR1cChzZWxmKToKICAgICAgICAgICAgIHBhc3MKKwogICAg
ICAgICBkZWYgdGVzdF9zdGFydHVwX2FuZF9tb3JlKHNlbGYpOgogICAgICAgICAgICAgcGFzcwog
CiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZGlyZWN0bHkgYXBwbHlpbmcgdGhlIGRlY29yYXRvciB0
byB0aGUKIHR3byB0ZXN0IGZ1bmN0aW9ucy4KIAotVG8gcmVtYWluIGJhY2t3YXJkLWNvbXBhdGli
bGUgd2l0aCBQeXRob24gMi40IHlvdSBjYW4gYWxzbyBzZXQgYQotYGBweXRlc3RtYXJrYGAgYXR0
cmlidXRlIG9uIGEgVGVzdENsYXNzIGxpa2UgdGhpczo6CitUbyBhcHBseSBtYXJrcyBhdCB0aGUg
bW9kdWxlIGxldmVsLCB1c2UgdGhlIDpnbG9iYWx2YXI6YHB5dGVzdG1hcmtgIGdsb2JhbCB2YXJp
YWJsZTo6CiAKICAgICBpbXBvcnQgcHl0ZXN0CisgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJr
LndlYnRlc3QKIAotICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICBweXRlc3Rt
YXJrID0gcHl0ZXN0Lm1hcmsud2VidGVzdAorb3IgbXVsdGlwbGUgbWFya2Vyczo6CiAKLW9yIGlm
IHlvdSBuZWVkIHRvIHVzZSBtdWx0aXBsZSBtYXJrZXJzIHlvdSBjYW4gdXNlIGEgbGlzdDo6Cisg
ICAgcHl0ZXN0bWFyayA9IFtweXRlc3QubWFyay53ZWJ0ZXN0LCBweXRlc3QubWFyay5zbG93dGVz
dF0KIAotICAgIGltcG9ydCBweXRlc3QKIAotICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgot
ICAgICAgICBweXRlc3RtYXJrID0gW3B5dGVzdC5tYXJrLndlYnRlc3QsIHB5dGVzdC5tYXJrLnNs
b3d0ZXN0XQorRHVlIHRvIGxlZ2FjeSByZWFzb25zLCBiZWZvcmUgY2xhc3MgZGVjb3JhdG9ycyB3
ZXJlIGludHJvZHVjZWQsIGl0IGlzIHBvc3NpYmxlIHRvIHNldCB0aGUKKzpnbG9iYWx2YXI6YHB5
dGVzdG1hcmtgIGF0dHJpYnV0ZSBvbiBhIHRlc3QgY2xhc3MgbGlrZSB0aGlzOgogCi1Zb3UgY2Fu
IGFsc28gc2V0IGEgbW9kdWxlIGxldmVsIG1hcmtlcjo6CisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJrLndlYnRl
c3QKIAotaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGZ1bmN0aW9ucyBh
bmQKLW1ldGhvZHMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLgorCisgICAgY2xhc3MgVGVzdENsYXNz
OgorICAgICAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsud2VidGVzdAogCiAuLiBfYG1hcmtp
bmcgaW5kaXZpZHVhbCB0ZXN0cyB3aGVuIHVzaW5nIHBhcmFtZXRyaXplYDoKIApAQCAtMjc5LDMy
ICszMTMsMjQgQEAgTWFya2luZyBpbmRpdmlkdWFsIHRlc3RzIHdoZW4gdXNpbmcgcGFyYW1ldHJp
emUKIAogV2hlbiB1c2luZyBwYXJhbWV0cml6ZSwgYXBwbHlpbmcgYSBtYXJrIHdpbGwgbWFrZSBp
dCBhcHBseQogdG8gZWFjaCBpbmRpdmlkdWFsIHRlc3QuIEhvd2V2ZXIgaXQgaXMgYWxzbyBwb3Nz
aWJsZSB0bwotYXBwbHkgYSBtYXJrZXIgdG8gYW4gaW5kaXZpZHVhbCB0ZXN0IGluc3RhbmNlOjoK
K2FwcGx5IGEgbWFya2VyIHRvIGFuIGluZGl2aWR1YWwgdGVzdCBpbnN0YW5jZToKKworLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1wb3J0IHB5dGVzdAogCisKICAgICBAcHl0ZXN0Lm1h
cmsuZm9vCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIpLCBb
Ci0gICAgICAgICgxLCAyKSwKLSAgICAgICAgcHl0ZXN0Lm1hcmsuYmFyKCgxLCAzKSksCi0gICAg
ICAgICgyLCAzKSwKLSAgICBdKQorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAg
ICAgKCJuIiwgImV4cGVjdGVkIiksIFsoMSwgMiksIHB5dGVzdC5wYXJhbSgxLCAzLCBtYXJrcz1w
eXRlc3QubWFyay5iYXIpLCAoMiwgMyldCisgICAgKQogICAgIGRlZiB0ZXN0X2luY3JlbWVudChu
LCBleHBlY3RlZCk6Ci0gICAgICAgICBhc3NlcnQgbiArIDEgPT0gZXhwZWN0ZWQKKyAgICAgICAg
YXNzZXJ0IG4gKyAxID09IGV4cGVjdGVkCiAKIEluIHRoaXMgZXhhbXBsZSB0aGUgbWFyayAiZm9v
IiB3aWxsIGFwcGx5IHRvIGVhY2ggb2YgdGhlIHRocmVlCiB0ZXN0cywgd2hlcmVhcyB0aGUgImJh
ciIgbWFyayBpcyBvbmx5IGFwcGxpZWQgdG8gdGhlIHNlY29uZCB0ZXN0LgogU2tpcCBhbmQgeGZh
aWwgbWFya3MgY2FuIGFsc28gYmUgYXBwbGllZCBpbiB0aGlzIHdheSwgc2VlIDpyZWY6YHNraXAv
eGZhaWwgd2l0aCBwYXJhbWV0cml6ZWAuCiAKLS4uIG5vdGU6OgotCi0gICAgSWYgdGhlIGRhdGEg
eW91IGFyZSBwYXJhbWV0cml6aW5nIGhhcHBlbiB0byBiZSBzaW5nbGUgY2FsbGFibGVzLCB5b3Ug
bmVlZCB0byBiZSBjYXJlZnVsCi0gICAgd2hlbiBtYXJraW5nIHRoZXNlIGl0ZW1zLiBgcHl0ZXN0
Lm1hcmsueGZhaWwobXlfZnVuYylgIHdvbid0IHdvcmsgYmVjYXVzZSBpdCdzIGFsc28gdGhlCi0g
ICAgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gYmVpbmcgZGVjb3JhdGVkLiBUbyByZXNvbHZlIHRo
aXMgYW1iaWd1aXR5LCB5b3UgbmVlZCB0byBwYXNzIGEKLSAgICByZWFzb24gYXJndW1lbnQ6Ci0g
ICAgYHB5dGVzdC5tYXJrLnhmYWlsKGZ1bmNfYmFyLCByZWFzb249Iklzc3VlIzciKWAuCi0KLQog
Li4gX2BhZGRpbmcgYSBjdXN0b20gbWFya2VyIGZyb20gYSBwbHVnaW5gOgogCiBDdXN0b20gbWFy
a2VyIGFuZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgdGVzdCBydW5zCkBAIC0zMTUs
NzQgKzM0MSw5OSBAQCBDdXN0b20gbWFya2VyIGFuZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNv
bnRyb2wgdGVzdCBydW5zCiBQbHVnaW5zIGNhbiBwcm92aWRlIGN1c3RvbSBtYXJrZXJzIGFuZCBp
bXBsZW1lbnQgc3BlY2lmaWMgYmVoYXZpb3VyCiBiYXNlZCBvbiBpdC4gVGhpcyBpcyBhIHNlbGYt
Y29udGFpbmVkIGV4YW1wbGUgd2hpY2ggYWRkcyBhIGNvbW1hbmQKIGxpbmUgb3B0aW9uIGFuZCBh
IHBhcmFtZXRyaXplZCB0ZXN0IGZ1bmN0aW9uIG1hcmtlciB0byBydW4gdGVzdHMKLXNwZWNpZmll
cyB2aWEgbmFtZWQgZW52aXJvbm1lbnRzOjoKK3NwZWNpZmllcyB2aWEgbmFtZWQgZW52aXJvbm1l
bnRzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRl
c3QucHkKIAogICAgIGltcG9ydCBweXRlc3QKKworCiAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24o
cGFyc2VyKToKLSAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLUUiLCBhY3Rpb249InN0b3JlIiwg
bWV0YXZhcj0iTkFNRSIsCi0gICAgICAgICAgICBoZWxwPSJvbmx5IHJ1biB0ZXN0cyBtYXRjaGlu
ZyB0aGUgZW52aXJvbm1lbnQgTkFNRS4iKQorICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKAorICAg
ICAgICAgICAgIi1FIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLAorICAgICAgICAgICAg
bWV0YXZhcj0iTkFNRSIsCisgICAgICAgICAgICBoZWxwPSJvbmx5IHJ1biB0ZXN0cyBtYXRjaGlu
ZyB0aGUgZW52aXJvbm1lbnQgTkFNRS4iLAorICAgICAgICApCisKIAogICAgIGRlZiBweXRlc3Rf
Y29uZmlndXJlKGNvbmZpZyk6CiAgICAgICAgICMgcmVnaXN0ZXIgYW4gYWRkaXRpb25hbCBtYXJr
ZXIKLSAgICAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoIm1hcmtlcnMiLAotICAgICAgICAg
ICAgImVudihuYW1lKTogbWFyayB0ZXN0IHRvIHJ1biBvbmx5IG9uIG5hbWVkIGVudmlyb25tZW50
IikKKyAgICAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCisgICAgICAgICAgICAibWFya2Vy
cyIsICJlbnYobmFtZSk6IG1hcmsgdGVzdCB0byBydW4gb25seSBvbiBuYW1lZCBlbnZpcm9ubWVu
dCIKKyAgICAgICAgKQorCiAKICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6Ci0g
ICAgICAgIGVudm5hbWVzID0gW21hcmsuYXJnc1swXSBmb3IgbWFyayBpbiBpdGVtLml0ZXJfbWFy
a2VycyhuYW1lPSdlbnYnKV0KKyAgICAgICAgZW52bmFtZXMgPSBbbWFyay5hcmdzWzBdIGZvciBt
YXJrIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9ImVudiIpXQogICAgICAgICBpZiBlbnZuYW1l
czoKICAgICAgICAgICAgIGlmIGl0ZW0uY29uZmlnLmdldG9wdGlvbigiLUUiKSBub3QgaW4gZW52
bmFtZXM6Ci0gICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInRlc3QgcmVxdWlyZXMgZW52IGlu
ICVyIiAlIGVudm5hbWVzKQorICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ0ZXN0IHJlcXVp
cmVzIGVudiBpbiB7IXJ9Ii5mb3JtYXQoZW52bmFtZXMpKQorCitBIHRlc3QgZmlsZSB1c2luZyB0
aGlzIGxvY2FsIHBsdWdpbjoKIAotQSB0ZXN0IGZpbGUgdXNpbmcgdGhpcyBsb2NhbCBwbHVnaW46
OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3Rfc29tZWVu
di5weQogCiAgICAgaW1wb3J0IHB5dGVzdAorCisKICAgICBAcHl0ZXN0Lm1hcmsuZW52KCJzdGFn
ZTEiKQogICAgIGRlZiB0ZXN0X2Jhc2ljX2RiX29wZXJhdGlvbigpOgogICAgICAgICBwYXNzCiAK
IGFuZCBhbiBleGFtcGxlIGludm9jYXRpb25zIHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQgZW52aXJv
bm1lbnQgdGhhbiB3aGF0Ci10aGUgdGVzdCBuZWVkczo6Cit0aGUgdGVzdCBuZWVkczoKKworLi4g
Y29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLUUgc3RhZ2UyCiAgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVz
dC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BS
RUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNv
bGxlY3RlZCAxIGl0ZW0KIAogICAgIHRlc3Rfc29tZWVudi5weSBzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09
PT09PT09PT09PT09PT09IDEgc2tpcHBlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09
PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMSBza2lwcGVkIGlu
IDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotYW5kIGhlcmUgaXMgb25lIHRo
YXQgc3BlY2lmaWVzIGV4YWN0bHkgdGhlIGVudmlyb25tZW50IG5lZWRlZDo6CithbmQgaGVyZSBp
cyBvbmUgdGhhdCBzcGVjaWZpZXMgZXhhY3RseSB0aGUgZW52aXJvbm1lbnQgbmVlZGVkOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtRSBzdGFnZTEKICAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRl
c3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0Nf
VE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0
ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAg
Y29sbGVjdGVkIDEgaXRlbQogCiAgICAgdGVzdF9zb21lZW52LnB5IC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09IDEgcGFzc2VkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCBp
biAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgYGAtLW1hcmtlcnNg
YCBvcHRpb24gYWx3YXlzIGdpdmVzIHlvdSBhIGxpc3Qgb2YgYXZhaWxhYmxlIG1hcmtlcnM6CiAK
LVRoZSBgYC0tbWFya2Vyc2BgIG9wdGlvbiBhbHdheXMgZ2l2ZXMgeW91IGEgbGlzdCBvZiBhdmFp
bGFibGUgbWFya2Vyczo6CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAt
LW1hcmtlcnMKICAgICBAcHl0ZXN0Lm1hcmsuZW52KG5hbWUpOiBtYXJrIHRlc3QgdG8gcnVuIG9u
bHkgb24gbmFtZWQgZW52aXJvbm1lbnQKIAorICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5n
cyh3YXJuaW5nKTogYWRkIGEgd2FybmluZyBmaWx0ZXIgdG8gdGhlIGdpdmVuIHRlc3QuIHNlZSBo
dHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbCNweXRlc3QtbWFy
ay1maWx0ZXJ3YXJuaW5ncworCiAgICAgQHB5dGVzdC5tYXJrLnNraXAocmVhc29uPU5vbmUpOiBz
a2lwIHRoZSBnaXZlbiB0ZXN0IGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgcmVhc29uLiBFeGFt
cGxlOiBza2lwKHJlYXNvbj0ibm8gd2F5IG9mIGN1cnJlbnRseSB0ZXN0aW5nIHRoaXMiKSBza2lw
cyB0aGUgdGVzdC4KIAotICAgIEBweXRlc3QubWFyay5za2lwaWYoY29uZGl0aW9uKTogc2tpcCB0
aGUgZ2l2ZW4gdGVzdCBmdW5jdGlvbiBpZiBldmFsKGNvbmRpdGlvbikgcmVzdWx0cyBpbiBhIFRy
dWUgdmFsdWUuICBFdmFsdWF0aW9uIGhhcHBlbnMgd2l0aGluIHRoZSBtb2R1bGUgZ2xvYmFsIGNv
bnRleHQuIEV4YW1wbGU6IHNraXBpZignc3lzLnBsYXRmb3JtID09ICJ3aW4zMiInKSBza2lwcyB0
aGUgdGVzdCBpZiB3ZSBhcmUgb24gdGhlIHdpbjMyIHBsYXRmb3JtLiBzZWUgaHR0cDovL3B5dGVz
dC5vcmcvbGF0ZXN0L3NraXBwaW5nLmh0bWwKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKGNvbmRp
dGlvbiwgLi4uLCAqLCByZWFzb249Li4uKTogc2tpcCB0aGUgZ2l2ZW4gdGVzdCBmdW5jdGlvbiBp
ZiBhbnkgb2YgdGhlIGNvbmRpdGlvbnMgZXZhbHVhdGUgdG8gVHJ1ZS4gRXhhbXBsZTogc2tpcGlm
KHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInKSBza2lwcyB0aGUgdGVzdCBpZiB3ZSBhcmUgb24gdGhl
IHdpbjMyIHBsYXRmb3JtLiBTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3Jl
ZmVyZW5jZS5odG1sI3B5dGVzdC1tYXJrLXNraXBpZgogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWls
KGNvbmRpdGlvbiwgcmVhc29uPU5vbmUsIHJ1bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3RyaWN0PUZh
bHNlKTogbWFyayB0aGUgdGVzdCBmdW5jdGlvbiBhcyBhbiBleHBlY3RlZCBmYWlsdXJlIGlmIGV2
YWwoY29uZGl0aW9uKSBoYXMgYSBUcnVlIHZhbHVlLiBPcHRpb25hbGx5IHNwZWNpZnkgYSByZWFz
b24gZm9yIGJldHRlciByZXBvcnRpbmcgYW5kIHJ1bj1GYWxzZSBpZiB5b3UgZG9uJ3QgZXZlbiB3
YW50IHRvIGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb24uIElmIG9ubHkgc3BlY2lmaWMgZXhjZXB0
aW9uKHMpIGFyZSBleHBlY3RlZCwgeW91IGNhbiBsaXN0IHRoZW0gaW4gcmFpc2VzLCBhbmQgaWYg
dGhlIHRlc3QgZmFpbHMgaW4gb3RoZXIgd2F5cywgaXQgd2lsbCBiZSByZXBvcnRlZCBhcyBhIHRy
dWUgZmFpbHVyZS4gU2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9za2lwcGluZy5odG1sCisg
ICAgQHB5dGVzdC5tYXJrLnhmYWlsKGNvbmRpdGlvbiwgLi4uLCAqLCByZWFzb249Li4uLCBydW49
VHJ1ZSwgcmFpc2VzPU5vbmUsIHN0cmljdD14ZmFpbF9zdHJpY3QpOiBtYXJrIHRoZSB0ZXN0IGZ1
bmN0aW9uIGFzIGFuIGV4cGVjdGVkIGZhaWx1cmUgaWYgYW55IG9mIHRoZSBjb25kaXRpb25zIGV2
YWx1YXRlIHRvIFRydWUuIE9wdGlvbmFsbHkgc3BlY2lmeSBhIHJlYXNvbiBmb3IgYmV0dGVyIHJl
cG9ydGluZyBhbmQgcnVuPUZhbHNlIGlmIHlvdSBkb24ndCBldmVuIHdhbnQgdG8gZXhlY3V0ZSB0
aGUgdGVzdCBmdW5jdGlvbi4gSWYgb25seSBzcGVjaWZpYyBleGNlcHRpb24ocykgYXJlIGV4cGVj
dGVkLCB5b3UgY2FuIGxpc3QgdGhlbSBpbiByYWlzZXMsIGFuZCBpZiB0aGUgdGVzdCBmYWlscyBp
biBvdGhlciB3YXlzLCBpdCB3aWxsIGJlIHJlcG9ydGVkIGFzIGEgdHJ1ZSBmYWlsdXJlLiBTZWUg
aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3JlZmVyZW5jZS5odG1sI3B5dGVzdC1t
YXJrLXhmYWlsCiAKLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoYXJnbmFtZXMsIGFyZ3Zh
bHVlcyk6IGNhbGwgYSB0ZXN0IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzIHBhc3NpbmcgaW4gZGlm
ZmVyZW50IGFyZ3VtZW50cyBpbiB0dXJuLiBhcmd2YWx1ZXMgZ2VuZXJhbGx5IG5lZWRzIHRvIGJl
IGEgbGlzdCBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG9ubHkgb25lIG5hbWUgb3Ig
YSBsaXN0IG9mIHR1cGxlcyBvZiB2YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG11bHRpcGxl
IG5hbWVzLiBFeGFtcGxlOiBAcGFyYW1ldHJpemUoJ2FyZzEnLCBbMSwyXSkgd291bGQgbGVhZCB0
byB0d28gY2FsbHMgb2YgdGhlIGRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9uLCBvbmUgd2l0aCBhcmcx
PTEgYW5kIGFub3RoZXIgd2l0aCBhcmcxPTIuc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xhdGVzdC9w
YXJhbWV0cml6ZS5odG1sIGZvciBtb3JlIGluZm8gYW5kIGV4YW1wbGVzLgorICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZShhcmduYW1lcywgYXJndmFsdWVzKTogY2FsbCBhIHRlc3QgZnVuY3Rp
b24gbXVsdGlwbGUgdGltZXMgcGFzc2luZyBpbiBkaWZmZXJlbnQgYXJndW1lbnRzIGluIHR1cm4u
IGFyZ3ZhbHVlcyBnZW5lcmFsbHkgbmVlZHMgdG8gYmUgYSBsaXN0IG9mIHZhbHVlcyBpZiBhcmdu
YW1lcyBzcGVjaWZpZXMgb25seSBvbmUgbmFtZSBvciBhIGxpc3Qgb2YgdHVwbGVzIG9mIHZhbHVl
cyBpZiBhcmduYW1lcyBzcGVjaWZpZXMgbXVsdGlwbGUgbmFtZXMuIEV4YW1wbGU6IEBwYXJhbWV0
cml6ZSgnYXJnMScsIFsxLDJdKSB3b3VsZCBsZWFkIHRvIHR3byBjYWxscyBvZiB0aGUgZGVjb3Jh
dGVkIHRlc3QgZnVuY3Rpb24sIG9uZSB3aXRoIGFyZzE9MSBhbmQgYW5vdGhlciB3aXRoIGFyZzE9
Mi5zZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL3BhcmFtZXRyaXplLmh0bWwg
Zm9yIG1vcmUgaW5mbyBhbmQgZXhhbXBsZXMuCiAKLSAgICBAcHl0ZXN0Lm1hcmsudXNlZml4dHVy
ZXMoZml4dHVyZW5hbWUxLCBmaXh0dXJlbmFtZTIsIC4uLik6IG1hcmsgdGVzdHMgYXMgbmVlZGlu
ZyBhbGwgb2YgdGhlIHNwZWNpZmllZCBmaXh0dXJlcy4gc2VlIGh0dHA6Ly9weXRlc3Qub3JnL2xh
dGVzdC9maXh0dXJlLmh0bWwjdXNlZml4dHVyZXMKKyAgICBAcHl0ZXN0Lm1hcmsudXNlZml4dHVy
ZXMoZml4dHVyZW5hbWUxLCBmaXh0dXJlbmFtZTIsIC4uLik6IG1hcmsgdGVzdHMgYXMgbmVlZGlu
ZyBhbGwgb2YgdGhlIHNwZWNpZmllZCBmaXh0dXJlcy4gc2VlIGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL3N0YWJsZS9maXh0dXJlLmh0bWwjdXNlZml4dHVyZXMKIAogICAgIEBweXRlc3QubWFy
ay50cnlmaXJzdDogbWFyayBhIGhvb2sgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gc3VjaCB0aGF0
IHRoZSBwbHVnaW4gbWFjaGluZXJ5IHdpbGwgdHJ5IHRvIGNhbGwgaXQgZmlyc3QvYXMgZWFybHkg
YXMgcG9zc2libGUuCiAKQEAgLTM5NiwzNiArNDQ3LDQ1IEBAIFBhc3NpbmcgYSBjYWxsYWJsZSB0
byBjdXN0b20gbWFya2VycwogCiAuLiByZWdlbmRvYzp3aXBlCiAKLUJlbG93IGlzIHRoZSBjb25m
aWcgZmlsZSB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV4dCBleGFtcGxlczo6CitCZWxvdyBp
cyB0aGUgY29uZmlnIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIG5leHQgZXhhbXBsZXM6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5w
eQogICAgIGltcG9ydCBzeXMKIAorCiAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0p
OgotICAgICAgICBmb3IgbWFya2VyIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9J215X21hcmtl
cicpOgorICAgICAgICBmb3IgbWFya2VyIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9Im15X21h
cmtlciIpOgogICAgICAgICAgICAgcHJpbnQobWFya2VyKQogICAgICAgICAgICAgc3lzLnN0ZG91
dC5mbHVzaCgpCiAKIEEgY3VzdG9tIG1hcmtlciBjYW4gaGF2ZSBpdHMgYXJndW1lbnQgc2V0LCBp
LmUuIGBgYXJnc2BgIGFuZCBgYGt3YXJnc2BgIHByb3BlcnRpZXMsIGRlZmluZWQgYnkgZWl0aGVy
IGludm9raW5nIGl0IGFzIGEgY2FsbGFibGUgb3IgdXNpbmcgYGBweXRlc3QubWFyay5NQVJLRVJf
TkFNRS53aXRoX2FyZ3NgYC4gVGhlc2UgdHdvIG1ldGhvZHMgYWNoaWV2ZSB0aGUgc2FtZSBlZmZl
Y3QgbW9zdCBvZiB0aGUgdGltZS4KIAotSG93ZXZlciwgaWYgdGhlcmUgaXMgYSBjYWxsYWJsZSBh
cyB0aGUgc2luZ2xlIHBvc2l0aW9uYWwgYXJndW1lbnQgd2l0aCBubyBrZXl3b3JkIGFyZ3VtZW50
cywgdXNpbmcgdGhlIGBgcHl0ZXN0Lm1hcmsuTUFSS0VSX05BTUUoYylgYCB3aWxsIG5vdCBwYXNz
IGBgY2BgIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudCBidXQgZGVjb3JhdGUgYGBjYGAgd2l0aCB0
aGUgY3VzdG9tIG1hcmtlciAoc2VlIDpyZWY6YE1hcmtEZWNvcmF0b3IgPG1hcms+YCkuIEZvcnR1
bmF0ZWx5LCBgYHB5dGVzdC5tYXJrLk1BUktFUl9OQU1FLndpdGhfYXJnc2BgIGNvbWVzIHRvIHRo
ZSByZXNjdWU6OgorSG93ZXZlciwgaWYgdGhlcmUgaXMgYSBjYWxsYWJsZSBhcyB0aGUgc2luZ2xl
IHBvc2l0aW9uYWwgYXJndW1lbnQgd2l0aCBubyBrZXl3b3JkIGFyZ3VtZW50cywgdXNpbmcgdGhl
IGBgcHl0ZXN0Lm1hcmsuTUFSS0VSX05BTUUoYylgYCB3aWxsIG5vdCBwYXNzIGBgY2BgIGFzIGEg
cG9zaXRpb25hbCBhcmd1bWVudCBidXQgZGVjb3JhdGUgYGBjYGAgd2l0aCB0aGUgY3VzdG9tIG1h
cmtlciAoc2VlIDpyZWY6YE1hcmtEZWNvcmF0b3IgPG1hcms+YCkuIEZvcnR1bmF0ZWx5LCBgYHB5
dGVzdC5tYXJrLk1BUktFUl9OQU1FLndpdGhfYXJnc2BgIGNvbWVzIHRvIHRoZSByZXNjdWU6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X2N1c3RvbV9t
YXJrZXIucHkKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIGRlZiBoZWxsb193b3JsZCgqYXJn
cywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gJ0hlbGxvIFdvcmxkJworICAgICAgICByZXR1
cm4gIkhlbGxvIFdvcmxkIgorCiAKICAgICBAcHl0ZXN0Lm1hcmsubXlfbWFya2VyLndpdGhfYXJn
cyhoZWxsb193b3JsZCkKICAgICBkZWYgdGVzdF93aXRoX2FyZ3MoKToKICAgICAgICAgcGFzcwog
Ci1UaGUgb3V0cHV0IGlzIGFzIGZvbGxvd3M6OgorVGhlIG91dHB1dCBpcyBhcyBmb2xsb3dzOgor
CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSAtcwogICAgIE1hcmso
bmFtZT0nbXlfbWFya2VyJywgYXJncz0oPGZ1bmN0aW9uIGhlbGxvX3dvcmxkIGF0IDB4ZGVhZGJl
ZWY+LCksIGt3YXJncz17fSkKICAgICAuCi0gICAgMSBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisg
ICAgMSBwYXNzZWQgaW4gMC4xMnMKIAogV2UgY2FuIHNlZSB0aGF0IHRoZSBjdXN0b20gbWFya2Vy
IGhhcyBpdHMgYXJndW1lbnQgc2V0IGV4dGVuZGVkIHdpdGggdGhlIGZ1bmN0aW9uIGBgaGVsbG9f
d29ybGRgYC4gVGhpcyBpcyB0aGUga2V5IGRpZmZlcmVuY2UgYmV0d2VlbiBjcmVhdGluZyBhIGN1
c3RvbSBtYXJrZXIgYXMgYSBjYWxsYWJsZSwgd2hpY2ggaW52b2tlcyBgYF9fY2FsbF9fYGAgYmVo
aW5kIHRoZSBzY2VuZXMsIGFuZCB1c2luZyBgYHdpdGhfYXJnc2BgLgogCkBAIC00MzgsMzcgKzQ5
OCw0NiBAQCBSZWFkaW5nIG1hcmtlcnMgd2hpY2ggd2VyZSBzZXQgZnJvbSBtdWx0aXBsZSBwbGFj
ZXMKIC4uIHJlZ2VuZG9jOndpcGUKIAogSWYgeW91IGFyZSBoZWF2aWx5IHVzaW5nIG1hcmtlcnMg
aW4geW91ciB0ZXN0IHN1aXRlIHlvdSBtYXkgZW5jb3VudGVyIHRoZSBjYXNlIHdoZXJlIGEgbWFy
a2VyIGlzIGFwcGxpZWQgc2V2ZXJhbCB0aW1lcyB0byBhIHRlc3QgZnVuY3Rpb24uICBGcm9tIHBs
dWdpbgotY29kZSB5b3UgY2FuIHJlYWQgb3ZlciBhbGwgc3VjaCBzZXR0aW5ncy4gIEV4YW1wbGU6
OgorY29kZSB5b3UgY2FuIHJlYWQgb3ZlciBhbGwgc3VjaCBzZXR0aW5ncy4gIEV4YW1wbGU6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X21hcmtfdGhy
ZWVfdGltZXMucHkKICAgICBpbXBvcnQgcHl0ZXN0CisKICAgICBweXRlc3RtYXJrID0gcHl0ZXN0
Lm1hcmsuZ2xvYigibW9kdWxlIiwgeD0xKQogCisKICAgICBAcHl0ZXN0Lm1hcmsuZ2xvYigiY2xh
c3MiLCB4PTIpCi0gICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisgICAgY2xhc3MgVGVzdENs
YXNzOgogICAgICAgICBAcHl0ZXN0Lm1hcmsuZ2xvYigiZnVuY3Rpb24iLCB4PTMpCiAgICAgICAg
IGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmKToKICAgICAgICAgICAgIHBhc3MKIAogSGVyZSB3ZSBo
YXZlIHRoZSBtYXJrZXIgImdsb2IiIGFwcGxpZWQgdGhyZWUgdGltZXMgdG8gdGhlIHNhbWUKLXRl
c3QgZnVuY3Rpb24uICBGcm9tIGEgY29uZnRlc3QgZmlsZSB3ZSBjYW4gcmVhZCBpdCBsaWtlIHRo
aXM6OgordGVzdCBmdW5jdGlvbi4gIEZyb20gYSBjb25mdGVzdCBmaWxlIHdlIGNhbiByZWFkIGl0
IGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9m
IGNvbmZ0ZXN0LnB5CiAgICAgaW1wb3J0IHN5cwogCisKICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rf
c2V0dXAoaXRlbSk6Ci0gICAgICAgIGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9
J2dsb2InKToKLSAgICAgICAgICAgIHByaW50ICgiZ2xvYiBhcmdzPSVzIGt3YXJncz0lcyIgJSht
YXJrLmFyZ3MsIG1hcmsua3dhcmdzKSkKKyAgICAgICAgZm9yIG1hcmsgaW4gaXRlbS5pdGVyX21h
cmtlcnMobmFtZT0iZ2xvYiIpOgorICAgICAgICAgICAgcHJpbnQoImdsb2IgYXJncz17fSBrd2Fy
Z3M9e30iLmZvcm1hdChtYXJrLmFyZ3MsIG1hcmsua3dhcmdzKSkKICAgICAgICAgICAgIHN5cy5z
dGRvdXQuZmx1c2goKQogCi1MZXQncyBydW4gdGhpcyB3aXRob3V0IGNhcHR1cmluZyBvdXRwdXQg
YW5kIHNlZSB3aGF0IHdlIGdldDo6CitMZXQncyBydW4gdGhpcyB3aXRob3V0IGNhcHR1cmluZyBv
dXRwdXQgYW5kIHNlZSB3aGF0IHdlIGdldDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAg
ICAgJCBweXRlc3QgLXEgLXMKICAgICBnbG9iIGFyZ3M9KCdmdW5jdGlvbicsKSBrd2FyZ3M9eyd4
JzogM30KICAgICBnbG9iIGFyZ3M9KCdjbGFzcycsKSBrd2FyZ3M9eyd4JzogMn0KICAgICBnbG9i
IGFyZ3M9KCdtb2R1bGUnLCkga3dhcmdzPXsneCc6IDF9CiAgICAgLgotICAgIDEgcGFzc2VkIGlu
IDAuMTIgc2Vjb25kcworICAgIDEgcGFzc2VkIGluIDAuMTJzCiAKIG1hcmtpbmcgcGxhdGZvcm0g
c3BlY2lmaWMgdGVzdHMgd2l0aCBweXRlc3QKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NzksNyArNTQ4LDkgQEAgQ29u
c2lkZXIgeW91IGhhdmUgYSB0ZXN0IHN1aXRlIHdoaWNoIG1hcmtzIHRlc3RzIGZvciBwYXJ0aWN1
bGFyIHBsYXRmb3JtcywKIG5hbWVseSBgYHB5dGVzdC5tYXJrLmRhcndpbmBgLCBgYHB5dGVzdC5t
YXJrLndpbjMyYGAgZXRjLiBhbmQgeW91CiBhbHNvIGhhdmUgdGVzdHMgdGhhdCBydW4gb24gYWxs
IHBsYXRmb3JtcyBhbmQgaGF2ZSBubyBzcGVjaWZpYwogbWFya2VyLiAgSWYgeW91IG5vdyB3YW50
IHRvIGhhdmUgYSB3YXkgdG8gb25seSBydW4gdGhlIHRlc3RzCi1mb3IgeW91ciBwYXJ0aWN1bGFy
IHBsYXRmb3JtLCB5b3UgY291bGQgdXNlIHRoZSBmb2xsb3dpbmcgcGx1Z2luOjoKK2ZvciB5b3Vy
IHBhcnRpY3VsYXIgcGxhdGZvcm0sIHlvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBwbHVnaW46
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5w
eQogICAgICMKQEAgLTQ4OCw1OSArNTU5LDcyIEBAIGZvciB5b3VyIHBhcnRpY3VsYXIgcGxhdGZv
cm0sIHlvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBwbHVnaW46OgogCiAgICAgQUxMID0gc2V0
KCJkYXJ3aW4gbGludXggd2luMzIiLnNwbGl0KCkpCiAKKwogICAgIGRlZiBweXRlc3RfcnVudGVz
dF9zZXR1cChpdGVtKToKICAgICAgICAgc3VwcG9ydGVkX3BsYXRmb3JtcyA9IEFMTC5pbnRlcnNl
Y3Rpb24obWFyay5uYW1lIGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJrZXJzKCkpCiAgICAgICAg
IHBsYXQgPSBzeXMucGxhdGZvcm0KICAgICAgICAgaWYgc3VwcG9ydGVkX3BsYXRmb3JtcyBhbmQg
cGxhdCBub3QgaW4gc3VwcG9ydGVkX3BsYXRmb3JtczoKLSAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJjYW5ub3QgcnVuIG9uIHBsYXRmb3JtICVzIiAlIChwbGF0KSkKKyAgICAgICAgICAgIHB5dGVz
dC5za2lwKCJjYW5ub3QgcnVuIG9uIHBsYXRmb3JtIHt9Ii5mb3JtYXQocGxhdCkpCiAKIHRoZW4g
dGVzdHMgd2lsbCBiZSBza2lwcGVkIGlmIHRoZXkgd2VyZSBzcGVjaWZpZWQgZm9yIGEgZGlmZmVy
ZW50IHBsYXRmb3JtLgotTGV0J3MgZG8gYSBsaXR0bGUgdGVzdCBmaWxlIHRvIHNob3cgaG93IHRo
aXMgbG9va3MgbGlrZTo6CitMZXQncyBkbyBhIGxpdHRsZSB0ZXN0IGZpbGUgdG8gc2hvdyBob3cg
dGhpcyBsb29rcyBsaWtlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRl
bnQgb2YgdGVzdF9wbGF0LnB5CiAKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIEBweXRlc3Qu
bWFyay5kYXJ3aW4KICAgICBkZWYgdGVzdF9pZl9hcHBsZV9pc19ldmlsKCk6CiAgICAgICAgIHBh
c3MKIAorCiAgICAgQHB5dGVzdC5tYXJrLmxpbnV4CiAgICAgZGVmIHRlc3RfaWZfbGludXhfd29y
a3MoKToKICAgICAgICAgcGFzcwogCisKICAgICBAcHl0ZXN0Lm1hcmsud2luMzIKICAgICBkZWYg
dGVzdF9pZl93aW4zMl9jcmFzaGVzKCk6CiAgICAgICAgIHBhc3MKIAorCiAgICAgZGVmIHRlc3Rf
cnVuc19ldmVyeXdoZXJlKCk6CiAgICAgICAgIHBhc3MKIAotdGhlbiB5b3Ugd2lsbCBzZWUgdHdv
IHRlc3RzIHNraXBwZWQgYW5kIHR3byBleGVjdXRlZCB0ZXN0cyBhcyBleHBlY3RlZDo6Cit0aGVu
IHlvdSB3aWxsIHNlZSB0d28gdGVzdHMgc2tpcHBlZCBhbmQgdHdvIGV4ZWN1dGVkIHRlc3RzIGFz
IGV4cGVjdGVkOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcnMg
IyB0aGlzIG9wdGlvbiByZXBvcnRzIHNraXAgcmVhc29ucwogICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHkt
MS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZp
bGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVz
dF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgNCBp
dGVtcwogCiAgICAgdGVzdF9wbGF0LnB5IHMucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKICAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0gICAgU0tJUCBbMl0gJFJFR0VORE9DX1RNUERJUi9jb25mdGVzdC5weToxMjogY2Fubm90IHJ1
biBvbiBwbGF0Zm9ybSBsaW51eAorICAgIFNLSVBQRUQgWzJdIGNvbmZ0ZXN0LnB5OjEyOiBjYW5u
b3QgcnVuIG9uIHBsYXRmb3JtIGxpbnV4CisgICAgPT09PT09PT09PT09PT09PT09PT09PT0gMiBw
YXNzZWQsIDIgc2tpcHBlZCBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PQogCi0gICAg
PT09PT09PT09PT09PT09PT09PSAyIHBhc3NlZCwgMiBza2lwcGVkIGluIDAuMTIgc2Vjb25kcyA9
PT09PT09PT09PT09PT09PT09PQorTm90ZSB0aGF0IGlmIHlvdSBzcGVjaWZ5IGEgcGxhdGZvcm0g
dmlhIHRoZSBtYXJrZXItY29tbWFuZCBsaW5lIG9wdGlvbiBsaWtlIHRoaXM6CiAKLU5vdGUgdGhh
dCBpZiB5b3Ugc3BlY2lmeSBhIHBsYXRmb3JtIHZpYSB0aGUgbWFya2VyLWNvbW1hbmQgbGluZSBv
cHRpb24gbGlrZSB0aGlzOjoKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0
IC1tIGxpbnV4CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBz
dGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0t
IFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAg
cm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKLSAgICBjb2xsZWN0ZWQgNCBpdGVt
cyAvIDMgZGVzZWxlY3RlZAorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0
ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAg
Y29sbGVjdGVkIDQgaXRlbXMgLyAzIGRlc2VsZWN0ZWQgLyAxIHNlbGVjdGVkCiAKICAgICB0ZXN0
X3BsYXQucHkgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCwgMyBkZXNl
bGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09
PT09PT09PT09PT0gMSBwYXNzZWQsIDMgZGVzZWxlY3RlZCBpbiAwLjEycyA9PT09PT09PT09PT09
PT09PT09PT09CiAKIHRoZW4gdGhlIHVubWFya2VkLXRlc3RzIHdpbGwgbm90IGJlIHJ1bi4gIEl0
IGlzIHRodXMgYSB3YXkgdG8gcmVzdHJpY3QgdGhlIHJ1biB0byB0aGUgc3BlY2lmaWMgdGVzdHMu
CiAKQEAgLTU0OSwzMSArNjMzLDQxIEBAIEF1dG9tYXRpY2FsbHkgYWRkaW5nIG1hcmtlcnMgYmFz
ZWQgb24gdGVzdCBuYW1lcwogCiAuLiByZWdlbmRvYzp3aXBlCiAKLUlmIHlvdSBhIHRlc3Qgc3Vp
dGUgd2hlcmUgdGVzdCBmdW5jdGlvbiBuYW1lcyBpbmRpY2F0ZSBhIGNlcnRhaW4KK0lmIHlvdSBo
YXZlIGEgdGVzdCBzdWl0ZSB3aGVyZSB0ZXN0IGZ1bmN0aW9uIG5hbWVzIGluZGljYXRlIGEgY2Vy
dGFpbgogdHlwZSBvZiB0ZXN0LCB5b3UgY2FuIGltcGxlbWVudCBhIGhvb2sgdGhhdCBhdXRvbWF0
aWNhbGx5IGRlZmluZXMKIG1hcmtlcnMgc28gdGhhdCB5b3UgY2FuIHVzZSB0aGUgYGAtbWBgIG9w
dGlvbiB3aXRoIGl0LiBMZXQncyBsb29rCi1hdCB0aGlzIHRlc3QgbW9kdWxlOjoKK2F0IHRoaXMg
dGVzdCBtb2R1bGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBv
ZiB0ZXN0X21vZHVsZS5weQogCisKICAgICBkZWYgdGVzdF9pbnRlcmZhY2Vfc2ltcGxlKCk6CiAg
ICAgICAgIGFzc2VydCAwCiAKKwogICAgIGRlZiB0ZXN0X2ludGVyZmFjZV9jb21wbGV4KCk6CiAg
ICAgICAgIGFzc2VydCAwCiAKKwogICAgIGRlZiB0ZXN0X2V2ZW50X3NpbXBsZSgpOgogICAgICAg
ICBhc3NlcnQgMAogCisKICAgICBkZWYgdGVzdF9zb21ldGhpbmdfZWxzZSgpOgogICAgICAgICBh
c3NlcnQgMAogCiBXZSB3YW50IHRvIGR5bmFtaWNhbGx5IGRlZmluZSB0d28gbWFya2VycyBhbmQg
Y2FuIGRvIGl0IGluIGEKLWBgY29uZnRlc3QucHlgYCBwbHVnaW46OgorYGBjb25mdGVzdC5weWBg
IHBsdWdpbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIGNv
bmZ0ZXN0LnB5CiAKICAgICBpbXBvcnQgcHl0ZXN0CisKKwogICAgIGRlZiBweXRlc3RfY29sbGVj
dGlvbl9tb2RpZnlpdGVtcyhpdGVtcyk6CiAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAg
ICAgICAgICAgaWYgImludGVyZmFjZSIgaW4gaXRlbS5ub2RlaWQ6CkBAIC01ODEsNDggKzY3NSw2
MSBAQCBXZSB3YW50IHRvIGR5bmFtaWNhbGx5IGRlZmluZSB0d28gbWFya2VycyBhbmQgY2FuIGRv
IGl0IGluIGEKICAgICAgICAgICAgIGVsaWYgImV2ZW50IiBpbiBpdGVtLm5vZGVpZDoKICAgICAg
ICAgICAgICAgICBpdGVtLmFkZF9tYXJrZXIocHl0ZXN0Lm1hcmsuZXZlbnQpCiAKLVdlIGNhbiBu
b3cgdXNlIHRoZSBgYC1tIG9wdGlvbmBgIHRvIHNlbGVjdCBvbmUgc2V0OjoKLQotICAkIHB5dGVz
dCAtbSBpbnRlcmZhY2UgLS10Yj1zaG9ydAotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0g
dGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIHBsYXRm
b3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5
LTAueC55Ci0gIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6Ci0gIGNvbGxlY3Rl
ZCA0IGl0ZW1zIC8gMiBkZXNlbGVjdGVkCi0KLSAgdGVzdF9tb2R1bGUucHkgRkYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCi0KLSAgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotICBfX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2ludGVy
ZmFjZV9zaW1wbGUgX19fX19fX19fX19fX19fX19fX19fX19fX19fCi0gIHRlc3RfbW9kdWxlLnB5
OjM6IGluIHRlc3RfaW50ZXJmYWNlX3NpbXBsZQotICAgICAgYXNzZXJ0IDAKLSAgRSAgIGFzc2Vy
dCAwCi0gIF9fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfaW50ZXJmYWNlX2NvbXBsZXgg
X19fX19fX19fX19fX19fX19fX19fX19fX18KLSAgdGVzdF9tb2R1bGUucHk6NjogaW4gdGVzdF9p
bnRlcmZhY2VfY29tcGxleAotICAgICAgYXNzZXJ0IDAKLSAgRSAgIGFzc2VydCAwCi0gID09PT09
PT09PT09PT09PT09PSAyIGZhaWxlZCwgMiBkZXNlbGVjdGVkIGluIDAuMTIgc2Vjb25kcyA9PT09
PT09PT09PT09PT09PT0KLQotb3IgdG8gc2VsZWN0IGJvdGggImV2ZW50IiBhbmQgImludGVyZmFj
ZSIgdGVzdHM6OgotCi0gICQgcHl0ZXN0IC1tICJpbnRlcmZhY2Ugb3IgZXZlbnQiIC0tdGI9c2hv
cnQKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54
LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICByb290ZGlyOiAkUkVH
RU5ET0NfVE1QRElSLCBpbmlmaWxlOgotICBjb2xsZWN0ZWQgNCBpdGVtcyAvIDEgZGVzZWxlY3Rl
ZAotCi0gIHRlc3RfbW9kdWxlLnB5IEZGRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsxMDAlXQotCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgX19f
X19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9pbnRlcmZhY2Vfc2ltcGxlIF9fX19fX19fX19f
X19fX19fX19fX19fX19fXwotICB0ZXN0X21vZHVsZS5weTozOiBpbiB0ZXN0X2ludGVyZmFjZV9z
aW1wbGUKLSAgICAgIGFzc2VydCAwCi0gIEUgICBhc3NlcnQgMAotICBfX19fX19fX19fX19fX19f
X19fX19fX19fXyB0ZXN0X2ludGVyZmFjZV9jb21wbGV4IF9fX19fX19fX19fX19fX19fX19fX19f
X19fCi0gIHRlc3RfbW9kdWxlLnB5OjY6IGluIHRlc3RfaW50ZXJmYWNlX2NvbXBsZXgKLSAgICAg
IGFzc2VydCAwCi0gIEUgICBhc3NlcnQgMAotICBfX19fX19fX19fX19fX19fX19fX19fX19fX19f
IHRlc3RfZXZlbnRfc2ltcGxlIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fCi0gIHRlc3Rf
bW9kdWxlLnB5Ojk6IGluIHRlc3RfZXZlbnRfc2ltcGxlCi0gICAgICBhc3NlcnQgMAotICBFICAg
YXNzZXJ0IDAKLSAgPT09PT09PT09PT09PT09PT09IDMgZmFpbGVkLCAxIGRlc2VsZWN0ZWQgaW4g
MC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PQorV2UgY2FuIG5vdyB1c2UgdGhlIGBgLW0g
b3B0aW9uYGAgdG8gc2VsZWN0IG9uZSBzZXQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKKwor
ICAgICQgcHl0ZXN0IC1tIGludGVyZmFjZSAtLXRiPXNob3J0CisgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRl
c3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGVkIDQg
aXRlbXMgLyAyIGRlc2VsZWN0ZWQgLyAyIHNlbGVjdGVkCisKKyAgICB0ZXN0X21vZHVsZS5weSBG
RiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAw
JV0KKworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBfX19fX19fX19fX19fX19fX19fX19f
X19fXyB0ZXN0X2ludGVyZmFjZV9zaW1wbGUgX19fX19fX19fX19fX19fX19fX19fX19fX19fCisg
ICAgdGVzdF9tb2R1bGUucHk6NDogaW4gdGVzdF9pbnRlcmZhY2Vfc2ltcGxlCisgICAgICAgIGFz
c2VydCAwCisgICAgRSAgIGFzc2VydCAwCisgICAgX19fX19fX19fX19fX19fX19fX19fX19fX18g
dGVzdF9pbnRlcmZhY2VfY29tcGxleCBfX19fX19fX19fX19fX19fX19fX19fX19fXworICAgIHRl
c3RfbW9kdWxlLnB5Ojg6IGluIHRlc3RfaW50ZXJmYWNlX2NvbXBsZXgKKyAgICAgICAgYXNzZXJ0
IDAKKyAgICBFICAgYXNzZXJ0IDAKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0
IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVE
IHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X2ludGVyZmFjZV9zaW1wbGUgLSBhc3NlcnQgMAorICAgIEZB
SUxFRCB0ZXN0X21vZHVsZS5weTo6dGVzdF9pbnRlcmZhY2VfY29tcGxleCAtIGFzc2VydCAwCisg
ICAgPT09PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkLCAyIGRlc2VsZWN0ZWQgaW4gMC4xMnMg
PT09PT09PT09PT09PT09PT09PT09PQorCitvciB0byBzZWxlY3QgYm90aCAiZXZlbnQiIGFuZCAi
aW50ZXJmYWNlIiB0ZXN0czoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAorCisgICAgJCBweXRl
c3QgLW0gImludGVyZmFjZSBvciBldmVudCIgLS10Yj1zaG9ydAorICAgID09PT09PT09PT09PT09
PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwg
cHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0
ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCA0
IGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMyBzZWxlY3RlZAorCisgICAgdGVzdF9tb2R1bGUucHkg
RkZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEw
MCVdCisKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19fX19f
X19fX18gdGVzdF9pbnRlcmZhY2Vfc2ltcGxlIF9fX19fX19fX19fX19fX19fX19fX19fX19fXwor
ICAgIHRlc3RfbW9kdWxlLnB5OjQ6IGluIHRlc3RfaW50ZXJmYWNlX3NpbXBsZQorICAgICAgICBh
c3NlcnQgMAorICAgIEUgICBhc3NlcnQgMAorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19f
IHRlc3RfaW50ZXJmYWNlX2NvbXBsZXggX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICB0
ZXN0X21vZHVsZS5weTo4OiBpbiB0ZXN0X2ludGVyZmFjZV9jb21wbGV4CisgICAgICAgIGFzc2Vy
dCAwCisgICAgRSAgIGFzc2VydCAwCisgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0
ZXN0X2V2ZW50X3NpbXBsZSBfX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgIHRlc3Rf
bW9kdWxlLnB5OjEyOiBpbiB0ZXN0X2V2ZW50X3NpbXBsZQorICAgICAgICBhc3NlcnQgMAorICAg
IEUgICBhc3NlcnQgMAorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBz
dW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9t
b2R1bGUucHk6OnRlc3RfaW50ZXJmYWNlX3NpbXBsZSAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRl
c3RfbW9kdWxlLnB5Ojp0ZXN0X2ludGVyZmFjZV9jb21wbGV4IC0gYXNzZXJ0IDAKKyAgICBGQUlM
RUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfZXZlbnRfc2ltcGxlIC0gYXNzZXJ0IDAKKyAgICA9PT09
PT09PT09PT09PT09PT09PT0gMyBmYWlsZWQsIDEgZGVzZWxlY3RlZCBpbiAwLjEycyA9PT09PT09
PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9t
dWx0aXB5dGhvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL211bHRpcHl0aG9uLnB5
CmluZGV4IDk3MDgwMGM3ZTYxNC4uOWRiNjg3OWVkYWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9tdWx0aXB5dGhvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9tdWx0aXB5dGhvbi5weQpAQCAtMiwxMSArMiwxMyBAQAogbW9kdWxlIGNvbnRhaW5p
bmcgYSBwYXJhbWV0cml6ZWQgdGVzdHMgdGVzdGluZyBjcm9zcy1weXRob24KIHNlcmlhbGl6YXRp
b24gdmlhIHRoZSBwaWNrbGUgbW9kdWxlLgogIiIiCi1pbXBvcnQgcHkKK2ltcG9ydCBzaHV0aWwK
K2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGV4dHdyYXAKKwogaW1wb3J0IHB5dGVzdAotaW1w
b3J0IF9weXRlc3QuX2NvZGUKIAotcHl0aG9ubGlzdCA9IFsicHl0aG9uMi43IiwgInB5dGhvbjMu
NCIsICJweXRob24zLjUiXQorcHl0aG9ubGlzdCA9IFsicHl0aG9uMy41IiwgInB5dGhvbjMuNiIs
ICJweXRob24zLjciXQogCiAKIEBweXRlc3QuZml4dHVyZShwYXJhbXM9cHl0aG9ubGlzdCkKQEAg
LTIwLDUwICsyMiw1MSBAQCBkZWYgcHl0aG9uMihyZXF1ZXN0LCBweXRob24xKToKICAgICByZXR1
cm4gUHl0aG9uKHJlcXVlc3QucGFyYW0sIHB5dGhvbjEucGlja2xlZmlsZSkKIAogCi1jbGFzcyBQ
eXRob24ob2JqZWN0KToKLQorY2xhc3MgUHl0aG9uOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2
ZXJzaW9uLCBwaWNrbGVmaWxlKToKLSAgICAgICAgc2VsZi5weXRob25wYXRoID0gcHkucGF0aC5s
b2NhbC5zeXNmaW5kKHZlcnNpb24pCisgICAgICAgIHNlbGYucHl0aG9ucGF0aCA9IHNodXRpbC53
aGljaCh2ZXJzaW9uKQogICAgICAgICBpZiBub3Qgc2VsZi5weXRob25wYXRoOgotICAgICAgICAg
ICAgcHl0ZXN0LnNraXAoIiVyIG5vdCBmb3VuZCIgJSAodmVyc2lvbiwpKQorICAgICAgICAgICAg
cHl0ZXN0LnNraXAoInshcn0gbm90IGZvdW5kIi5mb3JtYXQodmVyc2lvbikpCiAgICAgICAgIHNl
bGYucGlja2xlZmlsZSA9IHBpY2tsZWZpbGUKIAogICAgIGRlZiBkdW1wcyhzZWxmLCBvYmopOgog
ICAgICAgICBkdW1wZmlsZSA9IHNlbGYucGlja2xlZmlsZS5kaXJwYXRoKCJkdW1wLnB5IikKICAg
ICAgICAgZHVtcGZpbGUud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgK
LSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBwaWNrbGUKLSAgICAgICAg
ICAgIGYgPSBvcGVuKCVyLCAnd2InKQotICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wKCVyLCBm
LCBwcm90b2NvbD0yKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICIiIgotICAgICAg
ICAgICAgICAgICUgKHN0cihzZWxmLnBpY2tsZWZpbGUpLCBvYmopCisgICAgICAgICAgICB0ZXh0
d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgciIiIgorICAgICAgICAgICAgICAgIGltcG9y
dCBwaWNrbGUKKyAgICAgICAgICAgICAgICBmID0gb3Blbih7IXJ9LCAnd2InKQorICAgICAgICAg
ICAgICAgIHMgPSBwaWNrbGUuZHVtcCh7IXJ9LCBmLCBwcm90b2NvbD0yKQorICAgICAgICAgICAg
ICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICAg
ICAgICAgIHN0cihzZWxmLnBpY2tsZWZpbGUpLCBvYmoKKyAgICAgICAgICAgICAgICApCiAgICAg
ICAgICAgICApCiAgICAgICAgICkKLSAgICAgICAgcHkucHJvY2Vzcy5jbWRleGVjKCIlcyAlcyIg
JSAoc2VsZi5weXRob25wYXRoLCBkdW1wZmlsZSkpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tf
Y2FsbCgoc2VsZi5weXRob25wYXRoLCBzdHIoZHVtcGZpbGUpKSkKIAogICAgIGRlZiBsb2FkX2Fu
ZF9pc190cnVlKHNlbGYsIGV4cHJlc3Npb24pOgogICAgICAgICBsb2FkZmlsZSA9IHNlbGYucGlj
a2xlZmlsZS5kaXJwYXRoKCJsb2FkLnB5IikKICAgICAgICAgbG9hZGZpbGUud3JpdGUoCi0gICAg
ICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIGltcG9ydCBwaWNrbGUKLSAgICAgICAgICAgIGYgPSBvcGVuKCVyLCAncmInKQotICAg
ICAgICAgICAgb2JqID0gcGlja2xlLmxvYWQoZikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAg
ICAgICAgICAgcmVzID0gZXZhbCglcikKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgxKQotICAgICAgICAiIiIKLSAgICAgICAgICAgICAg
ICAlIChzdHIoc2VsZi5waWNrbGVmaWxlKSwgZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHRleHR3
cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICByIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0
IHBpY2tsZQorICAgICAgICAgICAgICAgIGYgPSBvcGVuKHshcn0sICdyYicpCisgICAgICAgICAg
ICAgICAgb2JqID0gcGlja2xlLmxvYWQoZikKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAg
ICAgICAgICAgICAgICByZXMgPSBldmFsKHshcn0pCisgICAgICAgICAgICAgICAgaWYgbm90IHJl
czoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgxKQorICAgICAgICAgICAg
ICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHN0cihzZWxmLnBpY2tsZWZpbGUp
LCBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICAp
CiAgICAgICAgIHByaW50KGxvYWRmaWxlKQotICAgICAgICBweS5wcm9jZXNzLmNtZGV4ZWMoIiVz
ICVzIiAlIChzZWxmLnB5dGhvbnBhdGgsIGxvYWRmaWxlKSkKKyAgICAgICAgc3VicHJvY2Vzcy5j
aGVja19jYWxsKChzZWxmLnB5dGhvbnBhdGgsIHN0cihsb2FkZmlsZSkpKQogCiAKIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgib2JqIiwgWzQyLCB7fSwgezE6IDN9XSkKIGRlZiB0ZXN0X2Jhc2lj
X29iamVjdHMocHl0aG9uMSwgcHl0aG9uMiwgb2JqKToKICAgICBweXRob24xLmR1bXBzKG9iaikK
LSAgICBweXRob24yLmxvYWRfYW5kX2lzX3RydWUoIm9iaiA9PSAlcyIgJSBvYmopCisgICAgcHl0
aG9uMi5sb2FkX2FuZF9pc190cnVlKCJvYmogPT0ge30iLmZvcm1hdChvYmopKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi5yc3QKaW5kZXggNGY1YWRmNjNmZDc2Li40NjRhNmM2
Y2VkZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uLnJzdApAQCAtMTIs
MzMgKzEyLDM4IEBAIEEgYmFzaWMgZXhhbXBsZSBmb3Igc3BlY2lmeWluZyB0ZXN0cyBpbiBZYW1s
IGZpbGVzCiAuLiBfYHB5dGVzdC15YW1sd3NnaWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2FhZnNo
YXIvcHl0ZXN0LXlhbWx3c2dpL3NyYy90aXAvcHl0ZXN0X3lhbWx3c2dpLnB5CiAuLiBfYFB5WUFN
TGA6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9QeVlBTUwvCiAKLUhlcmUgaXMgYW4gZXhhbXBs
ZSBgYGNvbmZ0ZXN0LnB5YGAgKGV4dHJhY3RlZCBmcm9tIEFsaSBBZnNobmFycyBzcGVjaWFsIHB1
cnBvc2UgYHB5dGVzdC15YW1sd3NnaWBfIHBsdWdpbikuICAgVGhpcyBgYGNvbmZ0ZXN0LnB5YGAg
d2lsbCAgY29sbGVjdCBgYHRlc3QqLnltbGBgIGZpbGVzIGFuZCB3aWxsIGV4ZWN1dGUgdGhlIHlh
bWwtZm9ybWF0dGVkIGNvbnRlbnQgYXMgY3VzdG9tIHRlc3RzOgorSGVyZSBpcyBhbiBleGFtcGxl
IGBgY29uZnRlc3QucHlgYCAoZXh0cmFjdGVkIGZyb20gQWxpIEFmc2hhcidzIHNwZWNpYWwgcHVy
cG9zZSBgcHl0ZXN0LXlhbWx3c2dpYF8gcGx1Z2luKS4gICBUaGlzIGBgY29uZnRlc3QucHlgYCB3
aWxsICBjb2xsZWN0IGBgdGVzdCoueWFtbGBgIGZpbGVzIGFuZCB3aWxsIGV4ZWN1dGUgdGhlIHlh
bWwtZm9ybWF0dGVkIGNvbnRlbnQgYXMgY3VzdG9tIHRlc3RzOgogCiAuLiBpbmNsdWRlOjogbm9u
cHl0aG9uL2NvbmZ0ZXN0LnB5CiAgICAgOmxpdGVyYWw6CiAKIFlvdSBjYW4gY3JlYXRlIGEgc2lt
cGxlIGV4YW1wbGUgZmlsZToKIAotLi4gaW5jbHVkZTo6IG5vbnB5dGhvbi90ZXN0X3NpbXBsZS55
bWwKKy4uIGluY2x1ZGU6OiBub25weXRob24vdGVzdF9zaW1wbGUueWFtbAogICAgIDpsaXRlcmFs
OgogCiBhbmQgaWYgeW91IGluc3RhbGxlZCBgUHlZQU1MYF8gb3IgYSBjb21wYXRpYmxlIFlBTUwt
cGFyc2VyIHlvdSBjYW4KLW5vdyBleGVjdXRlIHRoZSB0ZXN0IHNwZWNpZmljYXRpb246Ogorbm93
IGV4ZWN1dGUgdGhlIHRlc3Qgc3BlY2lmaWNhdGlvbjoKIAotICAgIG5vbnB5dGhvbiAkIHB5dGVz
dCB0ZXN0X3NpbXBsZS55bWwKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKKworICAgIG5vbnB5dGhv
biAkIHB5dGVzdCB0ZXN0X3NpbXBsZS55YW1sCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAg
IHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwg
cGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUi9ub25weXRob24sIGlu
aWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54Lnks
IHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5
dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIvbm9ucHl0aG9uCiAgICAg
Y29sbGVjdGVkIDIgaXRlbXMKIAotICAgIHRlc3Rfc2ltcGxlLnltbCBGLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQorICAgIHRlc3Rfc2lt
cGxlLnlhbWwgRi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsxMDAlXQogCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxV
UkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIF9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXyB1c2VjYXNlOiBoZWxsbyBfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KICAgICB1c2VjYXNlIGV4ZWN1dGlvbiBmYWlsZWQKICAgICAgICBzcGVjIGZhaWxlZDog
J3NvbWUnOiAnb3RoZXInCiAgICAgICAgbm8gZnVydGhlciBkZXRhaWxzIGtub3duIGF0IHRoaXMg
cG9pbnQuCi0gICAgPT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkIGluIDAu
MTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09
PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICBGQUlMRUQgdGVzdF9zaW1wbGUueWFtbDo6aGVsbG8KKyAgICA9PT09PT09PT09PT09PT09
PT09PT09PSAxIGZhaWxlZCwgMSBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09
PT09CiAKIC4uIHJlZ2VuZG9jOndpcGUKIApAQCAtNTUsMzcgKzYwLDQ2IEBAIHlvdXIgb3duIGRv
bWFpbiBzcGVjaWZpYyB0ZXN0aW5nIGxhbmd1YWdlIHRoaXMgd2F5LgogICAgIHdpbGwgYmUgcmVw
b3J0ZWQgYXMgYSAocmVkKSBzdHJpbmcuCiAKIGBgcmVwb3J0aW5mbygpYGAgaXMgdXNlZCBmb3Ig
cmVwcmVzZW50aW5nIHRoZSB0ZXN0IGxvY2F0aW9uIGFuZCBpcyBhbHNvCi1jb25zdWx0ZWQgd2hl
biByZXBvcnRpbmcgaW4gYGB2ZXJib3NlYGAgbW9kZTo6Citjb25zdWx0ZWQgd2hlbiByZXBvcnRp
bmcgaW4gYGB2ZXJib3NlYGAgbW9kZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAg
bm9ucHl0aG9uICQgcHl0ZXN0IC12CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRl
c3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRm
b3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5
LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5
dGVzdF9jYWNoZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIvbm9ucHl0aG9uLCBpbmlm
aWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBj
YWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIvbm9ucHl0aG9uCiAgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDIgaXRl
bXMKIAotICAgIHRlc3Rfc2ltcGxlLnltbDo6aGVsbG8gRkFJTEVEICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsgNTAlXQotICAgIHRlc3Rfc2ltcGxlLnltbDo6b2sgUEFT
U0VEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQorICAg
IHRlc3Rfc2ltcGxlLnlhbWw6OmhlbGxvIEZBSUxFRCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsgNTAlXQorICAgIHRlc3Rfc2ltcGxlLnlhbWw6Om9rIFBBU1NFRCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQogCiAgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB1c2VjYXNl
OiBoZWxsbyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAgICB1c2VjYXNlIGV4ZWN1
dGlvbiBmYWlsZWQKICAgICAgICBzcGVjIGZhaWxlZDogJ3NvbWUnOiAnb3RoZXInCiAgICAgICAg
bm8gZnVydGhlciBkZXRhaWxzIGtub3duIGF0IHRoaXMgcG9pbnQuCi0gICAgPT09PT09PT09PT09
PT09PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09
PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5
IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9zaW1wbGUu
eWFtbDo6aGVsbG8KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCwgMSBwYXNz
ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIHJlZ2VuZG9jOndpcGUK
IAogV2hpbGUgZGV2ZWxvcGluZyB5b3VyIGN1c3RvbSB0ZXN0IGNvbGxlY3Rpb24gYW5kIGV4ZWN1
dGlvbiBpdCdzIGFsc28KLWludGVyZXN0aW5nIHRvIGp1c3QgbG9vayBhdCB0aGUgY29sbGVjdGlv
biB0cmVlOjoKK2ludGVyZXN0aW5nIHRvIGp1c3QgbG9vayBhdCB0aGUgY29sbGVjdGlvbiB0cmVl
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICBub25weXRob24gJCBweXRlc3QgLS1j
b2xsZWN0LW9ubHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9u
IHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXgg
LS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAg
ICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSL25vbnB5dGhvbiwgaW5pZmlsZToKKyAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAg
cm9vdGRpcjogJFJFR0VORE9DX1RNUERJUi9ub25weXRob24KICAgICBjb2xsZWN0ZWQgMiBpdGVt
cwotICAgIDxZYW1sRmlsZSAndGVzdF9zaW1wbGUueW1sJz4KLSAgICAgIDxZYW1sSXRlbSAnaGVs
bG8nPgotICAgICAgPFlhbWxJdGVtICdvayc+CiAKLSAgICA9PT09PT09PT09PT09PT09PT09PT09
PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09Cisg
ICAgPFBhY2thZ2Ugbm9ucHl0aG9uPgorICAgICAgPFlhbWxGaWxlIHRlc3Rfc2ltcGxlLnlhbWw+
CisgICAgICAgIDxZYW1sSXRlbSBoZWxsbz4KKyAgICAgICAgPFlhbWxJdGVtIG9rPgorCisgICAg
PT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09PT09
PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvbm9ucHl0aG9uL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9u
cHl0aG9uL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNS4uZTY5ZGUyOWJiMmQxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vX19pbml0X18ucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL19faW5pdF9fLnB5CkBA
IC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNo
IHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9jb25mdGVz
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9jb25mdGVzdC5weQpp
bmRleCA4NDI5ZGQxMTRiMTguLjZlNWE1NzA5MjkwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL2NvbmZ0ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL25vbnB5dGhvbi9jb25mdGVzdC5weQpAQCAtMSw0OSArMSw0NyBAQAogIyBj
b250ZW50IG9mIGNvbmZ0ZXN0LnB5Ci0KIGltcG9ydCBweXRlc3QKIAogCiBkZWYgcHl0ZXN0X2Nv
bGxlY3RfZmlsZShwYXJlbnQsIHBhdGgpOgotICAgIGlmIHBhdGguZXh0ID09ICIueW1sIiBhbmQg
cGF0aC5iYXNlbmFtZS5zdGFydHN3aXRoKCJ0ZXN0Iik6Ci0gICAgICAgIHJldHVybiBZYW1sRmls
ZShwYXRoLCBwYXJlbnQpCisgICAgaWYgcGF0aC5leHQgPT0gIi55YW1sIiBhbmQgcGF0aC5iYXNl
bmFtZS5zdGFydHN3aXRoKCJ0ZXN0Iik6CisgICAgICAgIHJldHVybiBZYW1sRmlsZS5mcm9tX3Bh
cmVudChwYXJlbnQsIGZzcGF0aD1wYXRoKQogCiAKIGNsYXNzIFlhbWxGaWxlKHB5dGVzdC5GaWxl
KToKLQogICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBpbXBvcnQgeWFtbCAgIyB3ZSBu
ZWVkIGEgeWFtbCBwYXJzZXIsIGUuZy4gUHlZQU1MCisgICAgICAgICMgV2UgbmVlZCBhIHlhbWwg
cGFyc2VyLCBlLmcuIFB5WUFNTC4KKyAgICAgICAgaW1wb3J0IHlhbWwKIAogICAgICAgICByYXcg
PSB5YW1sLnNhZmVfbG9hZChzZWxmLmZzcGF0aC5vcGVuKCkpCiAgICAgICAgIGZvciBuYW1lLCBz
cGVjIGluIHNvcnRlZChyYXcuaXRlbXMoKSk6Ci0gICAgICAgICAgICB5aWVsZCBZYW1sSXRlbShu
YW1lLCBzZWxmLCBzcGVjKQorICAgICAgICAgICAgeWllbGQgWWFtbEl0ZW0uZnJvbV9wYXJlbnQo
c2VsZiwgbmFtZT1uYW1lLCBzcGVjPXNwZWMpCiAKIAogY2xhc3MgWWFtbEl0ZW0ocHl0ZXN0Lkl0
ZW0pOgotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhcmVudCwgc3BlYyk6Ci0gICAg
ICAgIHN1cGVyKFlhbWxJdGVtLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQpCisgICAgICAg
IHN1cGVyKCkuX19pbml0X18obmFtZSwgcGFyZW50KQogICAgICAgICBzZWxmLnNwZWMgPSBzcGVj
CiAKICAgICBkZWYgcnVudGVzdChzZWxmKToKICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNv
cnRlZChzZWxmLnNwZWMuaXRlbXMoKSk6Ci0gICAgICAgICAgICAjIHNvbWUgY3VzdG9tIHRlc3Qg
ZXhlY3V0aW9uIChkdW1iIGV4YW1wbGUgZm9sbG93cykKKyAgICAgICAgICAgICMgU29tZSBjdXN0
b20gdGVzdCBleGVjdXRpb24gKGR1bWIgZXhhbXBsZSBmb2xsb3dzKS4KICAgICAgICAgICAgIGlm
IG5hbWUgIT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmFpc2UgWWFtbEV4Y2VwdGlvbihzZWxm
LCBuYW1lLCB2YWx1ZSkKIAogICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6Ci0g
ICAgICAgICIiIiBjYWxsZWQgd2hlbiBzZWxmLnJ1bnRlc3QoKSByYWlzZXMgYW4gZXhjZXB0aW9u
LiAiIiIKKyAgICAgICAgIiIiQ2FsbGVkIHdoZW4gc2VsZi5ydW50ZXN0KCkgcmFpc2VzIGFuIGV4
Y2VwdGlvbi4iIiIKICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBZYW1sRXhj
ZXB0aW9uKToKICAgICAgICAgICAgIHJldHVybiAiXG4iLmpvaW4oCiAgICAgICAgICAgICAgICAg
WwogICAgICAgICAgICAgICAgICAgICAidXNlY2FzZSBleGVjdXRpb24gZmFpbGVkIiwKLSAgICAg
ICAgICAgICAgICAgICAgIiAgIHNwZWMgZmFpbGVkOiAlcjogJXIiICUgZXhjaW5mby52YWx1ZS5h
cmdzWzE6M10sCisgICAgICAgICAgICAgICAgICAgICIgICBzcGVjIGZhaWxlZDogezEhcn06IHsy
IXJ9Ii5mb3JtYXQoKmV4Y2luZm8udmFsdWUuYXJncyksCiAgICAgICAgICAgICAgICAgICAgICIg
ICBubyBmdXJ0aGVyIGRldGFpbHMga25vd24gYXQgdGhpcyBwb2ludC4iLAogICAgICAgICAgICAg
ICAgIF0KICAgICAgICAgICAgICkKIAogICAgIGRlZiByZXBvcnRpbmZvKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5mc3BhdGgsIDAsICJ1c2VjYXNlOiAlcyIgJSBzZWxmLm5hbWUKKyAgICAg
ICAgcmV0dXJuIHNlbGYuZnNwYXRoLCAwLCAidXNlY2FzZToge30iLmZvcm1hdChzZWxmLm5hbWUp
CiAKIAogY2xhc3MgWWFtbEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIiBjdXN0b20gZXhj
ZXB0aW9uIGZvciBlcnJvciByZXBvcnRpbmcuICIiIgorICAgICIiIkN1c3RvbSBleGNlcHRpb24g
Zm9yIGVycm9yIHJlcG9ydGluZy4iIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9l
eGFtcGxlL25vbnB5dGhvbi90ZXN0X3NpbXBsZS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhh
bXBsZS9ub25weXRob24vdGVzdF9zaW1wbGUueWFtbApzaW1pbGFyaXR5IGluZGV4IDc1JQpyZW5h
bWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vdGVzdF9zaW1wbGUu
eW1sCnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vdGVzdF9z
aW1wbGUueWFtbAppbmRleCBmMGQ4ZDExZmMzZTEuLjhlM2U3YTRiYmM5NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL3Rlc3Rfc2ltcGxlLnltbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vdGVzdF9zaW1wbGUueWFtbApA
QCAtMSw0ICsxLDQgQEAKLSMgdGVzdF9zaW1wbGUueW1sCisjIHRlc3Rfc2ltcGxlLnlhbWwKIG9r
OgogICAgIHN1YjE6IHN1YjEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvbm9ucHl0aG9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
bm9ucHl0aG9uL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
MTZmNDBkMGRmOWUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBs
ZS9ub25weXRob24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vY29uZnRlc3QucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vdGVzdF9zaW1wbGUueW1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9wYXJhbWV0cml6ZS5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9wYXJhbWV0cml6ZS5yc3QKaW5kZXggODgyNzAwZmVjMTFl
Li5mMWM5OGQ0NDlmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3Bh
cmFtZXRyaXplLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9wYXJhbWV0cml6
ZS5yc3QKQEAgLTE5LDM3ICsxOSw0NyBAQCBHZW5lcmF0aW5nIHBhcmFtZXRlcnMgY29tYmluYXRp
b25zLCBkZXBlbmRpbmcgb24gY29tbWFuZCBsaW5lCiAKIExldCdzIHNheSB3ZSB3YW50IHRvIGV4
ZWN1dGUgYSB0ZXN0IHdpdGggZGlmZmVyZW50IGNvbXB1dGF0aW9uCiBwYXJhbWV0ZXJzIGFuZCB0
aGUgcGFyYW1ldGVyIHJhbmdlIHNoYWxsIGJlIGRldGVybWluZWQgYnkgYSBjb21tYW5kCi1saW5l
IGFyZ3VtZW50LiAgTGV0J3MgZmlyc3Qgd3JpdGUgYSBzaW1wbGUgKGRvLW5vdGhpbmcpIGNvbXB1
dGF0aW9uIHRlc3Q6OgorbGluZSBhcmd1bWVudC4gIExldCdzIGZpcnN0IHdyaXRlIGEgc2ltcGxl
IChkby1ub3RoaW5nKSBjb21wdXRhdGlvbiB0ZXN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9jb21wdXRlLnB5CiAKKwogICAgIGRlZiB0ZXN0X2Nv
bXB1dGUocGFyYW0xKToKICAgICAgICAgYXNzZXJ0IHBhcmFtMSA8IDQKIAotTm93IHdlIGFkZCBh
IHRlc3QgY29uZmlndXJhdGlvbiBsaWtlIHRoaXM6OgorTm93IHdlIGFkZCBhIHRlc3QgY29uZmln
dXJhdGlvbiBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29u
dGVudCBvZiBjb25mdGVzdC5weQogCisKICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIp
OgotICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWFsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
Ci0gICAgICAgICAgICBoZWxwPSJydW4gYWxsIGNvbWJpbmF0aW9ucyIpCisgICAgICAgIHBhcnNl
ci5hZGRvcHRpb24oIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0icnVuIGFsbCBj
b21iaW5hdGlvbnMiKQorCiAKICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5j
KToKLSAgICAgICAgaWYgJ3BhcmFtMScgaW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzOgotICAgICAg
ICAgICAgaWYgbWV0YWZ1bmMuY29uZmlnLmdldG9wdGlvbignYWxsJyk6CisgICAgICAgIGlmICJw
YXJhbTEiIGluIG1ldGFmdW5jLmZpeHR1cmVuYW1lczoKKyAgICAgICAgICAgIGlmIG1ldGFmdW5j
LmNvbmZpZy5nZXRvcHRpb24oImFsbCIpOgogICAgICAgICAgICAgICAgIGVuZCA9IDUKICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW5kID0gMgogICAgICAgICAgICAgbWV0YWZ1
bmMucGFyYW1ldHJpemUoInBhcmFtMSIsIHJhbmdlKGVuZCkpCiAKLVRoaXMgbWVhbnMgdGhhdCB3
ZSBvbmx5IHJ1biAyIHRlc3RzIGlmIHdlIGRvIG5vdCBwYXNzIGBgLS1hbGxgYDo6CitUaGlzIG1l
YW5zIHRoYXQgd2Ugb25seSBydW4gMiB0ZXN0cyBpZiB3ZSBkbyBub3QgcGFzcyBgYC0tYWxsYGA6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIHRlc3RfY29tcHV0
ZS5weQogICAgIC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQotICAgIDIgcGFzc2VkIGluIDAuMTIgc2Vjb25k
cworICAgIDIgcGFzc2VkIGluIDAuMTJzCiAKIFdlIHJ1biBvbmx5IHR3byBjb21wdXRhdGlvbnMs
IHNvIHdlIHNlZSB0d28gZG90cy4KLWxldCdzIHJ1biB0aGUgZnVsbCBtb250eTo6CitsZXQncyBy
dW4gdGhlIGZ1bGwgbW9udHk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0
ZXN0IC1xIC0tYWxsCiAgICAgLi4uLkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC02Miw4ICs3MiwxMCBAQCBs
ZXQncyBydW4gdGhlIGZ1bGwgbW9udHk6OgogICAgID4gICAgICAgYXNzZXJ0IHBhcmFtMSA8IDQK
ICAgICBFICAgICAgIGFzc2VydCA0IDwgNAogCi0gICAgdGVzdF9jb21wdXRlLnB5OjM6IEFzc2Vy
dGlvbkVycm9yCi0gICAgMSBmYWlsZWQsIDQgcGFzc2VkIGluIDAuMTIgc2Vjb25kcworICAgIHRl
c3RfY29tcHV0ZS5weTo0OiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09
PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICBGQUlMRUQgdGVzdF9jb21wdXRlLnB5Ojp0ZXN0X2NvbXB1dGVbNF0gLSBhc3NlcnQgNCA8
IDQKKyAgICAxIGZhaWxlZCwgNCBwYXNzZWQgaW4gMC4xMnMKIAogQXMgZXhwZWN0ZWQgd2hlbiBy
dW5uaW5nIHRoZSBmdWxsIHJhbmdlIG9mIGBgcGFyYW0xYGAgdmFsdWVzCiB3ZSdsbCBnZXQgYW4g
ZXJyb3Igb24gdGhlIGxhc3Qgb25lLgpAQCAtNzksNyArOTEsOSBAQCBSdW5uaW5nIHB5dGVzdCB3
aXRoIGBgLS1jb2xsZWN0LW9ubHlgYCB3aWxsIHNob3cgdGhlIGdlbmVyYXRlZCBJRHMuCiAKIE51
bWJlcnMsIHN0cmluZ3MsIGJvb2xlYW5zIGFuZCBOb25lIHdpbGwgaGF2ZSB0aGVpciB1c3VhbCBz
dHJpbmcgcmVwcmVzZW50YXRpb24KIHVzZWQgaW4gdGhlIHRlc3QgSUQuIEZvciBvdGhlciBvYmpl
Y3RzLCBweXRlc3Qgd2lsbCBtYWtlIGEgc3RyaW5nIGJhc2VkIG9uCi10aGUgYXJndW1lbnQgbmFt
ZTo6Cit0aGUgYXJndW1lbnQgbmFtZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
IyBjb250ZW50IG9mIHRlc3RfdGltZS5weQogCkBAIC0xMDgsNyArMTIyLDcgQEAgdGhlIGFyZ3Vt
ZW50IG5hbWU6OgogICAgIGRlZiBpZGZuKHZhbCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFs
LCAoZGF0ZXRpbWUsKSk6CiAgICAgICAgICAgICAjIG5vdGUgdGhpcyB3b3VsZG4ndCBzaG93IGFu
eSBob3Vycy9taW51dGVzL3NlY29uZHMKLSAgICAgICAgICAgIHJldHVybiB2YWwuc3RyZnRpbWUo
JyVZJW0lZCcpCisgICAgICAgICAgICByZXR1cm4gdmFsLnN0cmZ0aW1lKCIlWSVtJWQiKQogCiAK
ICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImEsYixleHBlY3RlZCIsIHRlc3RkYXRhLCBp
ZHM9aWRmbikKQEAgLTExNiwxMiArMTMwLDE4IEBAIHRoZSBhcmd1bWVudCBuYW1lOjoKICAgICAg
ICAgZGlmZiA9IGEgLSBiCiAgICAgICAgIGFzc2VydCBkaWZmID09IGV4cGVjdGVkCiAKLSAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImEsYixleHBlY3RlZCIsIFsKLSAgICAgICAgcHl0ZXN0
LnBhcmFtKGRhdGV0aW1lKDIwMDEsIDEyLCAxMiksIGRhdGV0aW1lKDIwMDEsIDEyLCAxMSksCi0g
ICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoMSksIGlkPSdmb3J3YXJkJyksCi0gICAgICAg
IHB5dGVzdC5wYXJhbShkYXRldGltZSgyMDAxLCAxMiwgMTEpLCBkYXRldGltZSgyMDAxLCAxMiwg
MTIpLAotICAgICAgICAgICAgICAgICAgICAgdGltZWRlbHRhKC0xKSwgaWQ9J2JhY2t3YXJkJyks
Ci0gICAgXSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImEsYixl
eHBlY3RlZCIsCisgICAgICAgIFsKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
ICAgICAgICBkYXRldGltZSgyMDAxLCAxMiwgMTIpLCBkYXRldGltZSgyMDAxLCAxMiwgMTEpLCB0
aW1lZGVsdGEoMSksIGlkPSJmb3J3YXJkIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5
dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICBkYXRldGltZSgyMDAxLCAxMiwgMTEpLCBkYXRl
dGltZSgyMDAxLCAxMiwgMTIpLCB0aW1lZGVsdGEoLTEpLCBpZD0iYmFja3dhcmQiCisgICAgICAg
ICAgICApLAorICAgICAgICBdLAorICAgICkKICAgICBkZWYgdGVzdF90aW1lZGlzdGFuY2VfdjMo
YSwgYiwgZXhwZWN0ZWQpOgogICAgICAgICBkaWZmID0gYSAtIGIKICAgICAgICAgYXNzZXJ0IGRp
ZmYgPT0gZXhwZWN0ZWQKQEAgLTEzNCwyNSArMTU0LDI4IEBAIHVzZWQgYXMgdGhlIHRlc3QgSURz
LiBUaGVzZSBhcmUgc3VjY2luY3QsIGJ1dCBjYW4gYmUgYSBwYWluIHRvIG1haW50YWluLgogSW4g
YGB0ZXN0X3RpbWVkaXN0YW5jZV92MmBgLCB3ZSBzcGVjaWZpZWQgYGBpZHNgYCBhcyBhIGZ1bmN0
aW9uIHRoYXQgY2FuIGdlbmVyYXRlIGEKIHN0cmluZyByZXByZXNlbnRhdGlvbiB0byBtYWtlIHBh
cnQgb2YgdGhlIHRlc3QgSUQuIFNvIG91ciBgYGRhdGV0aW1lYGAgdmFsdWVzIHVzZSB0aGUKIGxh
YmVsIGdlbmVyYXRlZCBieSBgYGlkZm5gYCwgYnV0IGJlY2F1c2Ugd2UgZGlkbid0IGdlbmVyYXRl
IGEgbGFiZWwgZm9yIGBgdGltZWRlbHRhYGAKLW9iamVjdHMsIHRoZXkgYXJlIHN0aWxsIHVzaW5n
IHRoZSBkZWZhdWx0IHB5dGVzdCByZXByZXNlbnRhdGlvbjo6CitvYmplY3RzLCB0aGV5IGFyZSBz
dGlsbCB1c2luZyB0aGUgZGVmYXVsdCBweXRlc3QgcmVwcmVzZW50YXRpb246CiAKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3RfdGltZS5weSAtLWNvbGxlY3Qtb25s
eQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24g
My54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6
ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9u
IDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRp
cjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19U
TVBESVIKICAgICBjb2xsZWN0ZWQgOCBpdGVtcwotICAgIDxNb2R1bGUgJ3Rlc3RfdGltZS5weSc+
Ci0gICAgICA8RnVuY3Rpb24gJ3Rlc3RfdGltZWRpc3RhbmNlX3YwW2EwLWIwLWV4cGVjdGVkMF0n
PgotICAgICAgPEZ1bmN0aW9uICd0ZXN0X3RpbWVkaXN0YW5jZV92MFthMS1iMS1leHBlY3RlZDFd
Jz4KLSAgICAgIDxGdW5jdGlvbiAndGVzdF90aW1lZGlzdGFuY2VfdjFbZm9yd2FyZF0nPgotICAg
ICAgPEZ1bmN0aW9uICd0ZXN0X3RpbWVkaXN0YW5jZV92MVtiYWNrd2FyZF0nPgotICAgICAgPEZ1
bmN0aW9uICd0ZXN0X3RpbWVkaXN0YW5jZV92MlsyMDAxMTIxMi0yMDAxMTIxMS1leHBlY3RlZDBd
Jz4KLSAgICAgIDxGdW5jdGlvbiAndGVzdF90aW1lZGlzdGFuY2VfdjJbMjAwMTEyMTEtMjAwMTEy
MTItZXhwZWN0ZWQxXSc+Ci0gICAgICA8RnVuY3Rpb24gJ3Rlc3RfdGltZWRpc3RhbmNlX3YzW2Zv
cndhcmRdJz4KLSAgICAgIDxGdW5jdGlvbiAndGVzdF90aW1lZGlzdGFuY2VfdjNbYmFja3dhcmRd
Jz4KLQotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNl
Y29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIDxNb2R1bGUgdGVzdF90aW1lLnB5
PgorICAgICAgPEZ1bmN0aW9uIHRlc3RfdGltZWRpc3RhbmNlX3YwW2EwLWIwLWV4cGVjdGVkMF0+
CisgICAgICA8RnVuY3Rpb24gdGVzdF90aW1lZGlzdGFuY2VfdjBbYTEtYjEtZXhwZWN0ZWQxXT4K
KyAgICAgIDxGdW5jdGlvbiB0ZXN0X3RpbWVkaXN0YW5jZV92MVtmb3J3YXJkXT4KKyAgICAgIDxG
dW5jdGlvbiB0ZXN0X3RpbWVkaXN0YW5jZV92MVtiYWNrd2FyZF0+CisgICAgICA8RnVuY3Rpb24g
dGVzdF90aW1lZGlzdGFuY2VfdjJbMjAwMTEyMTItMjAwMTEyMTEtZXhwZWN0ZWQwXT4KKyAgICAg
IDxGdW5jdGlvbiB0ZXN0X3RpbWVkaXN0YW5jZV92MlsyMDAxMTIxMS0yMDAxMTIxMi1leHBlY3Rl
ZDFdPgorICAgICAgPEZ1bmN0aW9uIHRlc3RfdGltZWRpc3RhbmNlX3YzW2ZvcndhcmRdPgorICAg
ICAgPEZ1bmN0aW9uIHRlc3RfdGltZWRpc3RhbmNlX3YzW2JhY2t3YXJkXT4KKworICAgID09PT09
PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT0KIAogSW4gYGB0ZXN0X3RpbWVkaXN0YW5jZV92M2BgLCB3ZSB1c2VkIGBg
cHl0ZXN0LnBhcmFtYGAgdG8gc3BlY2lmeSB0aGUgdGVzdCBJRHMKIHRvZ2V0aGVyIHdpdGggdGhl
IGFjdHVhbCBkYXRhLCBpbnN0ZWFkIG9mIGxpc3RpbmcgdGhlbSBzZXBhcmF0ZWx5LgpAQCAtMTY1
LDEwICsxODgsMTMgQEAgQSBxdWljayBwb3J0IG9mICJ0ZXN0c2NlbmFyaW9zIgogSGVyZSBpcyBh
IHF1aWNrIHBvcnQgdG8gcnVuIHRlc3RzIGNvbmZpZ3VyZWQgd2l0aCBgdGVzdCBzY2VuYXJpb3Ng
XywKIGFuIGFkZC1vbiBmcm9tIFJvYmVydCBDb2xsaW5zIGZvciB0aGUgc3RhbmRhcmQgdW5pdHRl
c3QgZnJhbWV3b3JrLiBXZQogb25seSBoYXZlIHRvIHdvcmsgYSBiaXQgdG8gY29uc3RydWN0IHRo
ZSBjb3JyZWN0IGFyZ3VtZW50cyBmb3IgcHl0ZXN0J3MKLTpweTpmdW5jOmBNZXRhZnVuYy5wYXJh
bWV0cml6ZWA6OgorOnB5OmZ1bmM6YE1ldGFmdW5jLnBhcmFtZXRyaXplYDoKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3Rfc2NlbmFyaW9zLnB5CiAKKwog
ICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgogICAgICAgICBpZGxpc3Qg
PSBbXQogICAgICAgICBhcmd2YWx1ZXMgPSBbXQpAQCAtMTc2LDEzICsyMDIsMTUgQEAgb25seSBo
YXZlIHRvIHdvcmsgYSBiaXQgdG8gY29uc3RydWN0IHRoZSBjb3JyZWN0IGFyZ3VtZW50cyBmb3Ig
cHl0ZXN0J3MKICAgICAgICAgICAgIGlkbGlzdC5hcHBlbmQoc2NlbmFyaW9bMF0pCiAgICAgICAg
ICAgICBpdGVtcyA9IHNjZW5hcmlvWzFdLml0ZW1zKCkKICAgICAgICAgICAgIGFyZ25hbWVzID0g
W3hbMF0gZm9yIHggaW4gaXRlbXNdCi0gICAgICAgICAgICBhcmd2YWx1ZXMuYXBwZW5kKChbeFsx
XSBmb3IgeCBpbiBpdGVtc10pKQorICAgICAgICAgICAgYXJndmFsdWVzLmFwcGVuZChbeFsxXSBm
b3IgeCBpbiBpdGVtc10pCiAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKGFyZ25hbWVzLCBh
cmd2YWx1ZXMsIGlkcz1pZGxpc3QsIHNjb3BlPSJjbGFzcyIpCiAKLSAgICBzY2VuYXJpbzEgPSAo
J2Jhc2ljJywgeydhdHRyaWJ1dGUnOiAndmFsdWUnfSkKLSAgICBzY2VuYXJpbzIgPSAoJ2FkdmFu
Y2VkJywgeydhdHRyaWJ1dGUnOiAndmFsdWUyJ30pCiAKLSAgICBjbGFzcyBUZXN0U2FtcGxlV2l0
aFNjZW5hcmlvcyhvYmplY3QpOgorICAgIHNjZW5hcmlvMSA9ICgiYmFzaWMiLCB7ImF0dHJpYnV0
ZSI6ICJ2YWx1ZSJ9KQorICAgIHNjZW5hcmlvMiA9ICgiYWR2YW5jZWQiLCB7ImF0dHJpYnV0ZSI6
ICJ2YWx1ZTIifSkKKworCisgICAgY2xhc3MgVGVzdFNhbXBsZVdpdGhTY2VuYXJpb3M6CiAgICAg
ICAgIHNjZW5hcmlvcyA9IFtzY2VuYXJpbzEsIHNjZW5hcmlvMl0KIAogICAgICAgICBkZWYgdGVz
dF9kZW1vMShzZWxmLCBhdHRyaWJ1dGUpOgpAQCAtMTkxLDM1ICsyMTksNDAgQEAgb25seSBoYXZl
IHRvIHdvcmsgYSBiaXQgdG8gY29uc3RydWN0IHRoZSBjb3JyZWN0IGFyZ3VtZW50cyBmb3IgcHl0
ZXN0J3MKICAgICAgICAgZGVmIHRlc3RfZGVtbzIoc2VsZiwgYXR0cmlidXRlKToKICAgICAgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGF0dHJpYnV0ZSwgc3RyKQogCi10aGlzIGlzIGEgZnVsbHkg
c2VsZi1jb250YWluZWQgZXhhbXBsZSB3aGljaCB5b3UgY2FuIHJ1biB3aXRoOjoKK3RoaXMgaXMg
YSBmdWxseSBzZWxmLWNvbnRhaW5lZCBleGFtcGxlIHdoaWNoIHlvdSBjYW4gcnVuIHdpdGg6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3Rfc2NlbmFyaW9zLnB5
CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjog
JFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24g
My54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGly
OiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUgogICAgIGNvbGxlY3RlZCA0IGl0ZW1zCiAKICAgICB0ZXN0X3NjZW5hcmlvcy5weSAuLi4u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAot
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gNCBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
IDQgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUlmIHlv
dSBqdXN0IGNvbGxlY3QgdGVzdHMgeW91J2xsIGFsc28gbmljZWx5IHNlZSAnYWR2YW5jZWQnIGFu
ZCAnYmFzaWMnIGFzIHZhcmlhbnRzIGZvciB0aGUgdGVzdCBmdW5jdGlvbjo6CitJZiB5b3UganVz
dCBjb2xsZWN0IHRlc3RzIHlvdSdsbCBhbHNvIG5pY2VseSBzZWUgJ2FkdmFuY2VkJyBhbmQgJ2Jh
c2ljJyBhcyB2YXJpYW50cyBmb3IgdGhlIHRlc3QgZnVuY3Rpb246CiAKKy4uIGNvZGUtYmxvY2s6
OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC0tY29sbGVjdC1vbmx5IHRlc3Rfc2NlbmFyaW9zLnB5
CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjog
JFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24g
My54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGly
OiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUgogICAgIGNvbGxlY3RlZCA0IGl0ZW1zCi0gICAgPE1vZHVsZSAndGVzdF9zY2VuYXJpb3Mu
cHknPgotICAgICAgPENsYXNzICdUZXN0U2FtcGxlV2l0aFNjZW5hcmlvcyc+Ci0gICAgICAgIDxJ
bnN0YW5jZSAnKCknPgotICAgICAgICAgIDxGdW5jdGlvbiAndGVzdF9kZW1vMVtiYXNpY10nPgot
ICAgICAgICAgIDxGdW5jdGlvbiAndGVzdF9kZW1vMltiYXNpY10nPgotICAgICAgICAgIDxGdW5j
dGlvbiAndGVzdF9kZW1vMVthZHZhbmNlZF0nPgotICAgICAgICAgIDxGdW5jdGlvbiAndGVzdF9k
ZW1vMlthZHZhbmNlZF0nPgogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMg
cmFuIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PQorICAgIDxNb2R1bGUg
dGVzdF9zY2VuYXJpb3MucHk+CisgICAgICA8Q2xhc3MgVGVzdFNhbXBsZVdpdGhTY2VuYXJpb3M+
CisgICAgICAgICAgPEZ1bmN0aW9uIHRlc3RfZGVtbzFbYmFzaWNdPgorICAgICAgICAgIDxGdW5j
dGlvbiB0ZXN0X2RlbW8yW2Jhc2ljXT4KKyAgICAgICAgICA8RnVuY3Rpb24gdGVzdF9kZW1vMVth
ZHZhbmNlZF0+CisgICAgICAgICAgPEZ1bmN0aW9uIHRlc3RfZGVtbzJbYWR2YW5jZWRdPgorCisg
ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTJzID09PT09
PT09PT09PT09PT09PT09PT09PT09PQogCiBOb3RlIHRoYXQgd2UgdG9sZCBgYG1ldGFmdW5jLnBh
cmFtZXRyaXplKClgYCB0aGF0IHlvdXIgc2NlbmFyaW8gdmFsdWVzCiBzaG91bGQgYmUgY29uc2lk
ZXJlZCBjbGFzcy1zY29wZWQuICBXaXRoIHB5dGVzdC0yLjMgdGhpcyBsZWFkcyB0byBhCkBAIC0y
MzMsMTIgKzI2NiwxNiBAQCBEZWZlcnJpbmcgdGhlIHNldHVwIG9mIHBhcmFtZXRyaXplZCByZXNv
dXJjZXMKIFRoZSBwYXJhbWV0cml6YXRpb24gb2YgdGVzdCBmdW5jdGlvbnMgaGFwcGVucyBhdCBj
b2xsZWN0aW9uCiB0aW1lLiAgSXQgaXMgYSBnb29kIGlkZWEgdG8gc2V0dXAgZXhwZW5zaXZlIHJl
c291cmNlcyBsaWtlIERCCiBjb25uZWN0aW9ucyBvciBzdWJwcm9jZXNzIG9ubHkgd2hlbiB0aGUg
YWN0dWFsIHRlc3QgaXMgcnVuLgotSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlIGhvdyB5b3UgY2Fu
IGFjaGlldmUgdGhhdCwgZmlyc3QKLXRoZSBhY3R1YWwgdGVzdCByZXF1aXJpbmcgYSBgYGRiYGAg
b2JqZWN0OjoKK0hlcmUgaXMgYSBzaW1wbGUgZXhhbXBsZSBob3cgeW91IGNhbiBhY2hpZXZlIHRo
YXQuIFRoaXMgdGVzdAorcmVxdWlyZXMgYSBgYGRiYGAgb2JqZWN0IGZpeHR1cmU6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X2JhY2tlbmRzLnB5CiAK
ICAgICBpbXBvcnQgcHl0ZXN0CisKKwogICAgIGRlZiB0ZXN0X2RiX2luaXRpYWxpemVkKGRiKToK
ICAgICAgICAgIyBhIGR1bW15IHRlc3QKICAgICAgICAgaWYgZGIuX19jbGFzc19fLl9fbmFtZV9f
ID09ICJEQjIiOgpAQCAtMjQ2LDIwICsyODMsMjcgQEAgdGhlIGFjdHVhbCB0ZXN0IHJlcXVpcmlu
ZyBhIGBgZGJgYCBvYmplY3Q6OgogCiBXZSBjYW4gbm93IGFkZCBhIHRlc3QgY29uZmlndXJhdGlv
biB0aGF0IGdlbmVyYXRlcyB0d28gaW52b2NhdGlvbnMgb2YKIHRoZSBgYHRlc3RfZGJfaW5pdGlh
bGl6ZWRgYCBmdW5jdGlvbiBhbmQgYWxzbyBpbXBsZW1lbnRzIGEgZmFjdG9yeSB0aGF0Ci1jcmVh
dGVzIGEgZGF0YWJhc2Ugb2JqZWN0IGZvciB0aGUgYWN0dWFsIHRlc3QgaW52b2NhdGlvbnM6Ogor
Y3JlYXRlcyBhIGRhdGFiYXNlIG9iamVjdCBmb3IgdGhlIGFjdHVhbCB0ZXN0IGludm9jYXRpb25z
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3Qu
cHkKICAgICBpbXBvcnQgcHl0ZXN0CiAKKwogICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMo
bWV0YWZ1bmMpOgotICAgICAgICBpZiAnZGInIGluIG1ldGFmdW5jLmZpeHR1cmVuYW1lczoKLSAg
ICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJkYiIsIFsnZDEnLCAnZDInXSwgaW5kaXJl
Y3Q9VHJ1ZSkKKyAgICAgICAgaWYgImRiIiBpbiBtZXRhZnVuYy5maXh0dXJlbmFtZXM6CisgICAg
ICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgiZGIiLCBbImQxIiwgImQyIl0sIGluZGlyZWN0
PVRydWUpCisKIAotICAgIGNsYXNzIERCMShvYmplY3QpOgorICAgIGNsYXNzIERCMToKICAgICAg
ICAgIm9uZSBkYXRhYmFzZSBvYmplY3QiCi0gICAgY2xhc3MgREIyKG9iamVjdCk6CisKKworICAg
IGNsYXNzIERCMjoKICAgICAgICAgImFsdGVybmF0aXZlIGRhdGFiYXNlIG9iamVjdCIKIAorCiAg
ICAgQHB5dGVzdC5maXh0dXJlCiAgICAgZGVmIGRiKHJlcXVlc3QpOgogICAgICAgICBpZiByZXF1
ZXN0LnBhcmFtID09ICJkMSI6CkBAIC0yNjksMjAgKzMxMywyNiBAQCBjcmVhdGVzIGEgZGF0YWJh
c2Ugb2JqZWN0IGZvciB0aGUgYWN0dWFsIHRlc3QgaW52b2NhdGlvbnM6OgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBpbnRlcm5hbCB0ZXN0IGNv
bmZpZyIpCiAKLUxldCdzIGZpcnN0IHNlZSBob3cgaXQgbG9va3MgbGlrZSBhdCBjb2xsZWN0aW9u
IHRpbWU6OgorTGV0J3MgZmlyc3Qgc2VlIGhvdyBpdCBsb29rcyBsaWtlIGF0IGNvbGxlY3Rpb24g
dGltZToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgdGVzdF9iYWNr
ZW5kcy5weSAtLWNvbGxlY3Qtb25seQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0
ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxh
dGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVn
Z3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAg
IHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgMiBpdGVtcwotICAgIDxN
b2R1bGUgJ3Rlc3RfYmFja2VuZHMucHknPgotICAgICAgPEZ1bmN0aW9uICd0ZXN0X2RiX2luaXRp
YWxpemVkW2QxXSc+Ci0gICAgICA8RnVuY3Rpb24gJ3Rlc3RfZGJfaW5pdGlhbGl6ZWRbZDJdJz4K
IAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNlY29u
ZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA8TW9kdWxlIHRlc3RfYmFja2VuZHMucHk+
CisgICAgICA8RnVuY3Rpb24gdGVzdF9kYl9pbml0aWFsaXplZFtkMV0+CisgICAgICA8RnVuY3Rp
b24gdGVzdF9kYl9pbml0aWFsaXplZFtkMl0+CisKKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0FuZCB0aGVuIHdoZW4gd2UgcnVuIHRoZSB0ZXN0OgogCi1BbmQgdGhlbiB3aGVuIHdlIHJ1biB0
aGUgdGVzdDo6CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSB0ZXN0
X2JhY2tlbmRzLnB5CiAgICAgLkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC0yOTcsMTEgKzM0NywzNyBA
QCBBbmQgdGhlbiB3aGVuIHdlIHJ1biB0aGUgdGVzdDo6CiAgICAgPiAgICAgICAgICAgcHl0ZXN0
LmZhaWwoImRlbGliZXJhdGVseSBmYWlsaW5nIGZvciBkZW1vIHB1cnBvc2VzIikKICAgICBFICAg
ICAgICAgICBGYWlsZWQ6IGRlbGliZXJhdGVseSBmYWlsaW5nIGZvciBkZW1vIHB1cnBvc2VzCiAK
LSAgICB0ZXN0X2JhY2tlbmRzLnB5OjY6IEZhaWxlZAotICAgIDEgZmFpbGVkLCAxIHBhc3NlZCBp
biAwLjEyIHNlY29uZHMKKyAgICB0ZXN0X2JhY2tlbmRzLnB5Ojg6IEZhaWxlZAorICAgID09PT09
PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09
PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9iYWNrZW5kcy5weTo6dGVzdF9kYl9pbml0
aWFsaXplZFtkMl0gLSBGYWlsZWQ6IGRlbGliZXJhdGVseSBmLi4uCisgICAgMSBmYWlsZWQsIDEg
cGFzc2VkIGluIDAuMTJzCiAKIFRoZSBmaXJzdCBpbnZvY2F0aW9uIHdpdGggYGBkYiA9PSAiREIx
ImBgIHBhc3NlZCB3aGlsZSB0aGUgc2Vjb25kIHdpdGggYGBkYiA9PSAiREIyImBgIGZhaWxlZC4g
IE91ciBgYGRiYGAgZml4dHVyZSBmdW5jdGlvbiBoYXMgaW5zdGFudGlhdGVkIGVhY2ggb2YgdGhl
IERCIHZhbHVlcyBkdXJpbmcgdGhlIHNldHVwIHBoYXNlIHdoaWxlIHRoZSBgYHB5dGVzdF9nZW5l
cmF0ZV90ZXN0c2BgIGdlbmVyYXRlZCB0d28gYWNjb3JkaW5nIGNhbGxzIHRvIHRoZSBgYHRlc3Rf
ZGJfaW5pdGlhbGl6ZWRgYCBkdXJpbmcgdGhlIGNvbGxlY3Rpb24gcGhhc2UuCiAKK0luZGlyZWN0
IHBhcmFtZXRyaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBgYGluZGlyZWN0PVRydWVgYCBwYXJhbWV0ZXIgd2hl
biBwYXJhbWV0cml6aW5nIGEgdGVzdCBhbGxvd3MgdG8KK3BhcmFtZXRyaXplIGEgdGVzdCB3aXRo
IGEgZml4dHVyZSByZWNlaXZpbmcgdGhlIHZhbHVlcyBiZWZvcmUgcGFzc2luZyB0aGVtIHRvIGEK
K3Rlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGltcG9ydCBweXRlc3QKKwor
CisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGZpeHQocmVxdWVzdCk6CisgICAgICAgIHJl
dHVybiByZXF1ZXN0LnBhcmFtICogMworCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImZpeHQiLCBbImEiLCAiYiJdLCBpbmRpcmVjdD1UcnVlKQorICAgIGRlZiB0ZXN0X2luZGlyZWN0
KGZpeHQpOgorICAgICAgICBhc3NlcnQgbGVuKGZpeHQpID09IDMKKworVGhpcyBjYW4gYmUgdXNl
ZCwgZm9yIGV4YW1wbGUsIHRvIGRvIG1vcmUgZXhwZW5zaXZlIHNldHVwIGF0IHRlc3QgcnVuIHRp
bWUgaW4KK3RoZSBmaXh0dXJlLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gcnVuIHRob3NlIHNldHVw
IHN0ZXBzIGF0IGNvbGxlY3Rpb24gdGltZS4KKwogLi4gcmVnZW5kb2M6d2lwZQogCiBBcHBseSBp
bmRpcmVjdCBvbiBwYXJ0aWN1bGFyIGFyZ3VtZW50cwpAQCAtMzEyLDM1ICszODgsNDQgQEAgcGFy
YW1ldGVyIG9uIHBhcnRpY3VsYXIgYXJndW1lbnRzLiBJdCBjYW4gYmUgZG9uZSBieSBwYXNzaW5n
IGxpc3Qgb3IgdHVwbGUgb2YKIGFyZ3VtZW50cycgbmFtZXMgdG8gYGBpbmRpcmVjdGBgLiBJbiB0
aGUgZXhhbXBsZSBiZWxvdyB0aGVyZSBpcyBhIGZ1bmN0aW9uIGBgdGVzdF9pbmRpcmVjdGBgIHdo
aWNoIHVzZXMKIHR3byBmaXh0dXJlczogYGB4YGAgYW5kIGBgeWBgLiBIZXJlIHdlIGdpdmUgdG8g
aW5kaXJlY3QgdGhlIGxpc3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZQogZml4dHVy
ZSBgYHhgYC4gVGhlIGluZGlyZWN0IHBhcmFtZXRlciB3aWxsIGJlIGFwcGxpZWQgdG8gdGhpcyBh
cmd1bWVudCBvbmx5LCBhbmQgdGhlIHZhbHVlIGBgYWBgCi13aWxsIGJlIHBhc3NlZCB0byByZXNw
ZWN0aXZlIGZpeHR1cmUgZnVuY3Rpb246Ogord2lsbCBiZSBwYXNzZWQgdG8gcmVzcGVjdGl2ZSBm
aXh0dXJlIGZ1bmN0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRl
bnQgb2YgdGVzdF9pbmRpcmVjdF9saXN0LnB5CiAKICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgQHB5
dGVzdC5maXh0dXJlKHNjb3BlPSdmdW5jdGlvbicpCisKKworICAgIEBweXRlc3QuZml4dHVyZShz
Y29wZT0iZnVuY3Rpb24iKQogICAgIGRlZiB4KHJlcXVlc3QpOgogICAgICAgICByZXR1cm4gcmVx
dWVzdC5wYXJhbSAqIDMKIAotICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nZnVuY3Rpb24nKQor
CisgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJmdW5jdGlvbiIpCiAgICAgZGVmIHkocmVxdWVz
dCk6CiAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtICogMgogCi0gICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCd4LCB5JywgWygnYScsICdiJyldLCBpbmRpcmVjdD1bJ3gnXSkKLSAgICBk
ZWYgdGVzdF9pbmRpcmVjdCh4LHkpOgotICAgICAgICBhc3NlcnQgeCA9PSAnYWFhJwotICAgICAg
ICBhc3NlcnQgeSA9PSAnYicKIAotVGhlIHJlc3VsdCBvZiB0aGlzIHRlc3Qgd2lsbCBiZSBzdWNj
ZXNzZnVsOjoKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIngsIHkiLCBbKCJhIiwgImIi
KV0sIGluZGlyZWN0PVsieCJdKQorICAgIGRlZiB0ZXN0X2luZGlyZWN0KHgsIHkpOgorICAgICAg
ICBhc3NlcnQgeCA9PSAiYWFhIgorICAgICAgICBhc3NlcnQgeSA9PSAiYiIKIAotICAgICQgcHl0
ZXN0IHRlc3RfaW5kaXJlY3RfbGlzdC5weSAtLWNvbGxlY3Qtb25seQorVGhlIHJlc3VsdCBvZiB0
aGlzIHRlc3Qgd2lsbCBiZSBzdWNjZXNzZnVsOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CisK
KyAgICAkIHB5dGVzdCAtdiB0ZXN0X2luZGlyZWN0X2xpc3QucHkKICAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54Lnks
IHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBp
bmlmaWxlOgotICAgIGNvbGxlY3RlZCAxIGl0ZW0KLSAgICA8TW9kdWxlICd0ZXN0X2luZGlyZWN0
X2xpc3QucHknPgotICAgICAgPEZ1bmN0aW9uICd0ZXN0X2luZGlyZWN0W2EtYl0nPgorICAgIHBs
YXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1
Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBjYWNoZWRpcjogJFBZ
VEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIK
KyAgICBjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgMSBpdGVtCisKKyAgICB0ZXN0X2luZGlyZWN0
X2xpc3QucHk6OnRlc3RfaW5kaXJlY3RbYS1iXSBQQVNTRUQgICAgICAgICAgICAgICAgICAgICBb
MTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEy
IHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09IDEgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CiAKIC4uIHJlZ2VuZG9jOndpcGUKIApAQCAtMzUyLDMzICs0MzcsNDEgQEAgUGFyYW1ldHJpemlu
ZyB0ZXN0IG1ldGhvZHMgdGhyb3VnaCBwZXItY2xhc3MgY29uZmlndXJhdGlvbgogCiBIZXJlIGlz
IGFuIGV4YW1wbGUgYGBweXRlc3RfZ2VuZXJhdGVfdGVzdHNgYCBmdW5jdGlvbiBpbXBsZW1lbnRp
bmcgYQogcGFyYW1ldHJpemF0aW9uIHNjaGVtZSBzaW1pbGFyIHRvIE1pY2hhZWwgRm9vcmQncyBg
dW5pdHRlc3QKLXBhcmFtZXRyaXplcmBfIGJ1dCBpbiBhIGxvdCBsZXNzIGNvZGU6OgorcGFyYW1l
dHJpemVyYF8gYnV0IGluIGEgbG90IGxlc3MgY29kZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhv
bgogCiAgICAgIyBjb250ZW50IG9mIC4vdGVzdF9wYXJhbWV0cml6ZS5weQogICAgIGltcG9ydCBw
eXRlc3QKIAorCiAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6CiAgICAg
ICAgICMgY2FsbGVkIG9uY2UgcGVyIGVhY2ggdGVzdCBmdW5jdGlvbgogICAgICAgICBmdW5jYXJn
bGlzdCA9IG1ldGFmdW5jLmNscy5wYXJhbXNbbWV0YWZ1bmMuZnVuY3Rpb24uX19uYW1lX19dCiAg
ICAgICAgIGFyZ25hbWVzID0gc29ydGVkKGZ1bmNhcmdsaXN0WzBdKQotICAgICAgICBtZXRhZnVu
Yy5wYXJhbWV0cml6ZShhcmduYW1lcywgW1tmdW5jYXJnc1tuYW1lXSBmb3IgbmFtZSBpbiBhcmdu
YW1lc10KLSAgICAgICAgICAgICAgICBmb3IgZnVuY2FyZ3MgaW4gZnVuY2FyZ2xpc3RdKQorICAg
ICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgKKyAgICAgICAgICAgIGFyZ25hbWVzLCBbW2Z1bmNh
cmdzW25hbWVdIGZvciBuYW1lIGluIGFyZ25hbWVzXSBmb3IgZnVuY2FyZ3MgaW4gZnVuY2FyZ2xp
c3RdCisgICAgICAgICkKKwogCi0gICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisgICAgY2xh
c3MgVGVzdENsYXNzOgogICAgICAgICAjIGEgbWFwIHNwZWNpZnlpbmcgbXVsdGlwbGUgYXJndW1l
bnQgc2V0cyBmb3IgYSB0ZXN0IG1ldGhvZAogICAgICAgICBwYXJhbXMgPSB7Ci0gICAgICAgICAg
ICAndGVzdF9lcXVhbHMnOiBbZGljdChhPTEsIGI9MiksIGRpY3QoYT0zLCBiPTMpLCBdLAotICAg
ICAgICAgICAgJ3Rlc3RfemVyb2RpdmlzaW9uJzogW2RpY3QoYT0xLCBiPTApLCBdLAorICAgICAg
ICAgICAgInRlc3RfZXF1YWxzIjogW2RpY3QoYT0xLCBiPTIpLCBkaWN0KGE9MywgYj0zKV0sCisg
ICAgICAgICAgICAidGVzdF96ZXJvZGl2aXNpb24iOiBbZGljdChhPTEsIGI9MCldLAogICAgICAg
ICB9CiAKICAgICAgICAgZGVmIHRlc3RfZXF1YWxzKHNlbGYsIGEsIGIpOgogICAgICAgICAgICAg
YXNzZXJ0IGEgPT0gYgogCiAgICAgICAgIGRlZiB0ZXN0X3plcm9kaXZpc2lvbihzZWxmLCBhLCBi
KToKLSAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsICJhL2IiKQor
ICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAg
ICAgICAgICAgICBhIC8gYgogCiBPdXIgdGVzdCBnZW5lcmF0b3IgbG9va3MgdXAgYSBjbGFzcy1s
ZXZlbCBkZWZpbml0aW9uIHdoaWNoIHNwZWNpZmllcyB3aGljaAotYXJndW1lbnQgc2V0cyB0byB1
c2UgZm9yIGVhY2ggdGVzdCBmdW5jdGlvbi4gIExldCdzIHJ1biBpdDo6Cithcmd1bWVudCBzZXRz
IHRvIHVzZSBmb3IgZWFjaCB0ZXN0IGZ1bmN0aW9uLiAgTGV0J3MgcnVuIGl0OgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcQogICAgIEYuLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAl
XQpAQCAtMzkxLDggKzQ4NCwxMCBAQCBhcmd1bWVudCBzZXRzIHRvIHVzZSBmb3IgZWFjaCB0ZXN0
IGZ1bmN0aW9uLiAgTGV0J3MgcnVuIGl0OjoKICAgICA+ICAgICAgIGFzc2VydCBhID09IGIKICAg
ICBFICAgICAgIGFzc2VydCAxID09IDIKIAotICAgIHRlc3RfcGFyYW1ldHJpemUucHk6MTg6IEFz
c2VydGlvbkVycm9yCi0gICAgMSBmYWlsZWQsIDIgcGFzc2VkIGluIDAuMTIgc2Vjb25kcworICAg
IHRlc3RfcGFyYW1ldHJpemUucHk6MjE6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09
PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09
PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X3BhcmFtZXRyaXplLnB5OjpUZXN0Q2xhc3M6OnRlc3Rf
ZXF1YWxzWzEtMl0gLSBhc3NlcnQgMSA9PSAyCisgICAgMSBmYWlsZWQsIDIgcGFzc2VkIGluIDAu
MTJzCiAKIEluZGlyZWN0IHBhcmFtZXRyaXphdGlvbiB3aXRoIG11bHRpcGxlIGZpeHR1cmVzCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtNDA4LDExICs1MDMsMTYgQEAgaXMgdG8gYmUgcnVuIHdpdGggZGlmZmVyZW50IHNl
dHMgb2YgYXJndW1lbnRzIGZvciBpdHMgdGhyZWUgYXJndW1lbnRzOgogCiAuLiBsaXRlcmFsaW5j
bHVkZTo6IG11bHRpcHl0aG9uLnB5CiAKLVJ1bm5pbmcgaXQgcmVzdWx0cyBpbiBzb21lIHNraXBz
IGlmIHdlIGRvbid0IGhhdmUgYWxsIHRoZSBweXRob24gaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBh
bmQgb3RoZXJ3aXNlIHJ1bnMgYWxsIGNvbWJpbmF0aW9ucyAoNSBpbnRlcnByZXRlcnMgdGltZXMg
NSBpbnRlcnByZXRlcnMgdGltZXMgMyBvYmplY3RzIHRvIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSk6
OgorUnVubmluZyBpdCByZXN1bHRzIGluIHNvbWUgc2tpcHMgaWYgd2UgZG9uJ3QgaGF2ZSBhbGwg
dGhlIHB5dGhvbiBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGFuZCBvdGhlcndpc2UgcnVucyBhbGwg
Y29tYmluYXRpb25zICgzIGludGVycHJldGVycyB0aW1lcyAzIGludGVycHJldGVycyB0aW1lcyAz
IG9iamVjdHMgdG8gc2VyaWFsaXplL2Rlc2VyaWFsaXplKToKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAuICQgcHl0ZXN0IC1ycyAtcSBtdWx0aXB5dGhvbi5weQotICAgLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWzEwMCVdCi0gICAyNyBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisgICBzc3Nzc3Nzc3Nzc3Mu
Li5zc3Nzc3Nzc3Nzc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
MTAwJV0KKyAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGlu
Zm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIFNLSVBQRUQgWzEyXSBtdWx0aXB5dGhv
bi5weToyOTogJ3B5dGhvbjMuNScgbm90IGZvdW5kCisgICBTS0lQUEVEIFsxMl0gbXVsdGlweXRo
b24ucHk6Mjk6ICdweXRob24zLjcnIG5vdCBmb3VuZAorICAgMyBwYXNzZWQsIDI0IHNraXBwZWQg
aW4gMC4xMnMKIAogSW5kaXJlY3QgcGFyYW1ldHJpemF0aW9uIG9mIG9wdGlvbmFsIGltcGxlbWVu
dGF0aW9ucy9pbXBvcnRzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDIxLDUzICs1MjEsNjcgQEAgSWYgeW91
IHdhbnQgdG8gY29tcGFyZSB0aGUgb3V0Y29tZXMgb2Ygc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMg
b2YgYSBnaXZlbgogQVBJLCB5b3UgY2FuIHdyaXRlIHRlc3QgZnVuY3Rpb25zIHRoYXQgcmVjZWl2
ZSB0aGUgYWxyZWFkeSBpbXBvcnRlZCBpbXBsZW1lbnRhdGlvbnMKIGFuZCBnZXQgc2tpcHBlZCBp
biBjYXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3QgaW1wb3J0YWJsZS9hdmFpbGFibGUuICBM
ZXQncwogc2F5IHdlIGhhdmUgYSAiYmFzZSIgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBvdGhlciAo
cG9zc2libHkgb3B0aW1pemVkIG9uZXMpCi1uZWVkIHRvIHByb3ZpZGUgc2ltaWxhciByZXN1bHRz
OjoKK25lZWQgdG8gcHJvdmlkZSBzaW1pbGFyIHJlc3VsdHM6CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogCiAgICAgaW1wb3J0IHB5dGVz
dAogCisKICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQogICAgIGRlZiBiYXNl
bW9kKHJlcXVlc3QpOgogICAgICAgICByZXR1cm4gcHl0ZXN0LmltcG9ydG9yc2tpcCgiYmFzZSIp
CiAKKwogICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIsIHBhcmFtcz1bIm9wdDEi
LCAib3B0MiJdKQogICAgIGRlZiBvcHRtb2QocmVxdWVzdCk6CiAgICAgICAgIHJldHVybiBweXRl
c3QuaW1wb3J0b3Jza2lwKHJlcXVlc3QucGFyYW0pCiAKLUFuZCB0aGVuIGEgYmFzZSBpbXBsZW1l
bnRhdGlvbiBvZiBhIHNpbXBsZSBmdW5jdGlvbjo6CitBbmQgdGhlbiBhIGJhc2UgaW1wbGVtZW50
YXRpb24gb2YgYSBzaW1wbGUgZnVuY3Rpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAog
ICAgICMgY29udGVudCBvZiBiYXNlLnB5CiAgICAgZGVmIGZ1bmMxKCk6CiAgICAgICAgIHJldHVy
biAxCiAKLUFuZCBhbiBvcHRpbWl6ZWQgdmVyc2lvbjo6CitBbmQgYW4gb3B0aW1pemVkIHZlcnNp
b246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBvcHQxLnB5
CiAgICAgZGVmIGZ1bmMxKCk6CiAgICAgICAgIHJldHVybiAxLjAwMDEKIAotQW5kIGZpbmFsbHkg
YSBsaXR0bGUgdGVzdCBtb2R1bGU6OgorQW5kIGZpbmFsbHkgYSBsaXR0bGUgdGVzdCBtb2R1bGU6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X21vZHVs
ZS5weQogCisKICAgICBkZWYgdGVzdF9mdW5jMShiYXNlbW9kLCBvcHRtb2QpOgogICAgICAgICBh
c3NlcnQgcm91bmQoYmFzZW1vZC5mdW5jMSgpLCAzKSA9PSByb3VuZChvcHRtb2QuZnVuYzEoKSwg
MykKIAogCi1JZiB5b3UgcnVuIHRoaXMgd2l0aCByZXBvcnRpbmcgZm9yIHNraXBzIGVuYWJsZWQ6
OgorSWYgeW91IHJ1biB0aGlzIHdpdGggcmVwb3J0aW5nIGZvciBza2lwcyBlbmFibGVkOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcnMgdGVzdF9tb2R1bGUucHkK
ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMu
eC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAk
UkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6
ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1Q
RElSCiAgICAgY29sbGVjdGVkIDIgaXRlbXMKIAogICAgIHRlc3RfbW9kdWxlLnB5IC5zICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQotICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICBTS0lQIFsxXSAkUkVHRU5ET0NfVE1QRElSL2NvbmZ0
ZXN0LnB5OjExOiBjb3VsZCBub3QgaW1wb3J0ICdvcHQyJwogCi0gICAgPT09PT09PT09PT09PT09
PT09PSAxIHBhc3NlZCwgMSBza2lwcGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09
PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGlu
Zm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBTS0lQUEVEIFsxXSBjb25mdGVzdC5w
eToxMjogY291bGQgbm90IGltcG9ydCAnb3B0Mic6IE5vIG1vZHVsZSBuYW1lZCAnb3B0MicKKyAg
ICA9PT09PT09PT09PT09PT09PT09PT09PSAxIHBhc3NlZCwgMSBza2lwcGVkIGluIDAuMTJzID09
PT09PT09PT09PT09PT09PT09PT09CiAKIFlvdSdsbCBzZWUgdGhhdCB3ZSBkb24ndCBoYXZlIGFu
IGBgb3B0MmBgIG1vZHVsZSBhbmQgdGh1cyB0aGUgc2Vjb25kIHRlc3QgcnVuCiBvZiBvdXIgYGB0
ZXN0X2Z1bmMxYGAgd2FzIHNraXBwZWQuICBBIGZldyBub3RlczoKQEAgLTQ4NywyMSArNjAxLDI1
IEBAIFNldCBtYXJrcyBvciB0ZXN0IElEIGZvciBpbmRpdmlkdWFsIHBhcmFtZXRyaXplZCB0ZXN0
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBVc2UgYGBweXRlc3QucGFyYW1gYCB0byBhcHBseSBtYXJrcyBvciBz
ZXQgdGVzdCBJRCB0byBpbmRpdmlkdWFsIHBhcmFtZXRyaXplZCB0ZXN0LgotRm9yIGV4YW1wbGU6
OgorRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVu
dCBvZiB0ZXN0X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5CiAgICAgaW1wb3J0IHB5dGVzdAotICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgndGVzdF9pbnB1dCxleHBlY3RlZCcsIFsKLSAgICAg
ICAgKCczKzUnLCA4KSwKLSAgICAgICAgcHl0ZXN0LnBhcmFtKCcxKzcnLCA4LAotICAgICAgICAg
ICAgICAgICAgICAgbWFya3M9cHl0ZXN0Lm1hcmsuYmFzaWMpLAotICAgICAgICBweXRlc3QucGFy
YW0oJzIrNCcsIDYsCi0gICAgICAgICAgICAgICAgICAgICBtYXJrcz1weXRlc3QubWFyay5iYXNp
YywKLSAgICAgICAgICAgICAgICAgICAgIGlkPSdiYXNpY18yKzQnKSwKLSAgICAgICAgcHl0ZXN0
LnBhcmFtKCc2KjknLCA0MiwKLSAgICAgICAgICAgICAgICAgICAgIG1hcmtzPVtweXRlc3QubWFy
ay5iYXNpYywgcHl0ZXN0Lm1hcmsueGZhaWxdLAotICAgICAgICAgICAgICAgICAgICAgaWQ9J2Jh
c2ljXzYqOScpLAotICAgIF0pCisKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAg
ICAgICAgInRlc3RfaW5wdXQsZXhwZWN0ZWQiLAorICAgICAgICBbCisgICAgICAgICAgICAoIjMr
NSIsIDgpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCIxKzciLCA4LCBtYXJrcz1weXRlc3Qu
bWFyay5iYXNpYyksCisgICAgICAgICAgICBweXRlc3QucGFyYW0oIjIrNCIsIDYsIG1hcmtzPXB5
dGVzdC5tYXJrLmJhc2ljLCBpZD0iYmFzaWNfMis0IiksCisgICAgICAgICAgICBweXRlc3QucGFy
YW0oCisgICAgICAgICAgICAgICAgIjYqOSIsIDQyLCBtYXJrcz1bcHl0ZXN0Lm1hcmsuYmFzaWMs
IHB5dGVzdC5tYXJrLnhmYWlsXSwgaWQ9ImJhc2ljXzYqOSIKKyAgICAgICAgICAgICksCisgICAg
ICAgIF0sCisgICAgKQogICAgIGRlZiB0ZXN0X2V2YWwodGVzdF9pbnB1dCwgZXhwZWN0ZWQpOgog
ICAgICAgICBhc3NlcnQgZXZhbCh0ZXN0X2lucHV0KSA9PSBleHBlY3RlZAogCkBAIC01MTAsMjEg
KzYyOCwyMiBAQCB3ZSBtYXJrIHRoZSByZXN0IHRocmVlIHBhcmFtZXRyaXplZCB0ZXN0cyB3aXRo
IHRoZSBjdXN0b20gbWFya2VyIGBgYmFzaWNgYCwKIGFuZCBmb3IgdGhlIGZvdXJ0aCB0ZXN0IHdl
IGFsc28gdXNlIHRoZSBidWlsdC1pbiBtYXJrIGBgeGZhaWxgYCB0byBpbmRpY2F0ZSB0aGlzCiB0
ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuIEZvciBleHBsaWNpdG5lc3MsIHdlIHNldCB0ZXN0IGlk
cyBmb3Igc29tZSB0ZXN0cy4KIAotVGhlbiBydW4gYGBweXRlc3RgYCB3aXRoIHZlcmJvc2UgbW9k
ZSBhbmQgd2l0aCBvbmx5IHRoZSBgYGJhc2ljYGAgbWFya2VyOjoKK1RoZW4gcnVuIGBgcHl0ZXN0
YGAgd2l0aCB2ZXJib3NlIG1vZGUgYW5kIHdpdGggb25seSB0aGUgYGBiYXNpY2BgIG1hcmtlcjoK
IAotICAgIHB5dGVzdCAtdiAtbSBiYXNpYwotICAgID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9u
IDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGly
OiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgotICAgIGNvbGxlY3RlZCA0IGl0ZW1zCisuLiBj
b2RlLWJsb2NrOjogcHl0ZXN0CiAKLSAgICB0ZXN0X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5Ojp0
ZXN0X2V2YWxbMSs3LThdIFBBU1NFRAotICAgIHRlc3RfcHl0ZXN0X3BhcmFtX2V4YW1wbGUucHk6
OnRlc3RfZXZhbFtiYXNpY18yKzRdIFBBU1NFRAotICAgIHRlc3RfcHl0ZXN0X3BhcmFtX2V4YW1w
bGUucHk6OnRlc3RfZXZhbFtiYXNpY182KjldIHhmYWlsCi0gICAgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBYRkFJTCB0ZXN0X3B5dGVz
dF9wYXJhbV9leGFtcGxlLnB5Ojp0ZXN0X2V2YWxbYmFzaWNfNio5XQorICAgICQgcHl0ZXN0IC12
IC1tIGJhc2ljCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBz
dGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHBsYXRmb3JtIGxpbnV4IC0t
IFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQ
WVRIT05fUFJFRklYL2Jpbi9weXRob24KKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5
dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBjb2xsZWN0aW5n
IC4uLiBjb2xsZWN0ZWQgMTQgaXRlbXMgLyAxMSBkZXNlbGVjdGVkIC8gMyBzZWxlY3RlZAogCi0g
ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IDEgdGVzdHMg
ZGVzZWxlY3RlZCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICB0ZXN0X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5Ojp0ZXN0X2V2YWxbMSs3LThdIFBBU1NF
RCAgICAgICAgICAgICAgICBbIDMzJV0KKyAgICB0ZXN0X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5
Ojp0ZXN0X2V2YWxbYmFzaWNfMis0XSBQQVNTRUQgICAgICAgICAgICBbIDY2JV0KKyAgICB0ZXN0
X3B5dGVzdF9wYXJhbV9leGFtcGxlLnB5Ojp0ZXN0X2V2YWxbYmFzaWNfNio5XSBYRkFJTCAgICAg
ICAgICAgICBbMTAwJV0KKworICAgID09PT09PT09PT09PT09PSAyIHBhc3NlZCwgMTEgZGVzZWxl
Y3RlZCwgMSB4ZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT0KIAogQXMgdGhlIHJlc3Vs
dDoKIApAQCAtNTM0LDMgKzY1Myw2MiBAQCBBcyB0aGUgcmVzdWx0OgogLSBUaGUgdGVzdCBgYHRl
c3RfZXZhbFsxKzctOF1gYCBwYXNzZWQsIGJ1dCB0aGUgbmFtZSBpcyBhdXRvZ2VuZXJhdGVkIGFu
ZCBjb25mdXNpbmcuCiAtIFRoZSB0ZXN0IGBgdGVzdF9ldmFsW2Jhc2ljXzIrNF1gYCBwYXNzZWQu
CiAtIFRoZSB0ZXN0IGBgdGVzdF9ldmFsW2Jhc2ljXzYqOV1gYCB3YXMgZXhwZWN0ZWQgdG8gZmFp
bCBhbmQgZGlkIGZhaWwuCisKKy4uIF9gcGFyYW1ldHJpemluZ19jb25kaXRpb25hbF9yYWlzaW5n
YDoKKworUGFyYW1ldHJpemluZyBjb25kaXRpb25hbCByYWlzaW5nCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitV
c2UgOmZ1bmM6YHB5dGVzdC5yYWlzZXNgIHdpdGggdGhlCis6cmVmOmBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSByZWZgIGRlY29yYXRvciB0byB3cml0ZSBwYXJhbWV0cml6ZWQgdGVzdHMKK2luIHdo
aWNoIHNvbWUgdGVzdHMgcmFpc2UgZXhjZXB0aW9ucyBhbmQgb3RoZXJzIGRvIG5vdC4KKworSXQg
aXMgaGVscGZ1bCB0byBkZWZpbmUgYSBuby1vcCBjb250ZXh0IG1hbmFnZXIgYGBkb2VzX25vdF9y
YWlzZWBgIHRvIHNlcnZlCithcyBhIGNvbXBsZW1lbnQgdG8gYGByYWlzZXNgYC4gRm9yIGV4YW1w
bGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGZyb20gY29udGV4dGxpYiBpbXBv
cnQgY29udGV4dG1hbmFnZXIKKyAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgIEBjb250ZXh0bWFu
YWdlcgorICAgIGRlZiBkb2VzX25vdF9yYWlzZSgpOgorICAgICAgICB5aWVsZAorCisKKyAgICBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICJleGFtcGxlX2lucHV0LGV4cGVjdGF0
aW9uIiwKKyAgICAgICAgWworICAgICAgICAgICAgKDMsIGRvZXNfbm90X3JhaXNlKCkpLAorICAg
ICAgICAgICAgKDIsIGRvZXNfbm90X3JhaXNlKCkpLAorICAgICAgICAgICAgKDEsIGRvZXNfbm90
X3JhaXNlKCkpLAorICAgICAgICAgICAgKDAsIHB5dGVzdC5yYWlzZXMoWmVyb0RpdmlzaW9uRXJy
b3IpKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfZGl2aXNpb24oZXhhbXBsZV9p
bnB1dCwgZXhwZWN0YXRpb24pOgorICAgICAgICAiIiJUZXN0IGhvdyBtdWNoIEkga25vdyBkaXZp
c2lvbi4iIiIKKyAgICAgICAgd2l0aCBleHBlY3RhdGlvbjoKKyAgICAgICAgICAgIGFzc2VydCAo
NiAvIGV4YW1wbGVfaW5wdXQpIGlzIG5vdCBOb25lCisKK0luIHRoZSBleGFtcGxlIGFib3ZlLCB0
aGUgZmlyc3QgdGhyZWUgdGVzdCBjYXNlcyBzaG91bGQgcnVuIHVuZXhjZXB0aW9uYWxseSwKK3do
aWxlIHRoZSBmb3VydGggc2hvdWxkIHJhaXNlIGBgWmVyb0RpdmlzaW9uRXJyb3JgYC4KKworSWYg
eW91J3JlIG9ubHkgc3VwcG9ydGluZyBQeXRob24gMy43KywgeW91IGNhbiBzaW1wbHkgdXNlIGBg
bnVsbGNvbnRleHRgYAordG8gZGVmaW5lIGBgZG9lc19ub3RfcmFpc2VgYDoKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgorCisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBudWxsY29udGV4dCBh
cyBkb2VzX25vdF9yYWlzZQorCitPciwgaWYgeW91J3JlIHN1cHBvcnRpbmcgUHl0aG9uIDMuMysg
eW91IGNhbiB1c2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGZyb20gY29udGV4
dGxpYiBpbXBvcnQgRXhpdFN0YWNrIGFzIGRvZXNfbm90X3JhaXNlCisKK09yLCBpZiBkZXNpcmVk
LCB5b3UgY2FuIGBgcGlwIGluc3RhbGwgY29udGV4dGxpYjJgYCBhbmQgdXNlOgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCisKKyAgICBmcm9tIGNvbnRleHRsaWIyIGltcG9ydCBudWxsY29udGV4
dCBhcyBkb2VzX25vdF9yYWlzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvcHkycHkzL2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkz
L2NvbmZ0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDlhMDdlM2UzMmEu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJweTMvY29u
ZnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1pbXBvcnQgc3lzCi1pbXBv
cnQgcHl0ZXN0Ci0KLXB5MyA9IHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMwotCi0KLWNsYXNzIER1
bW15Q29sbGVjdG9yKHB5dGVzdC5jb2xsZWN0LkZpbGUpOgotCi0gICAgZGVmIGNvbGxlY3Qoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBbXQotCi0KLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1
bGUocGF0aCwgcGFyZW50KToKLSAgICBibiA9IHBhdGguYmFzZW5hbWUKLSAgICBpZiAicHkzIiBp
biBibiBhbmQgbm90IHB5MyBvciAoInB5MiIgaW4gYm4gYW5kIHB5Myk6Ci0gICAgICAgIHJldHVy
biBEdW1teUNvbGxlY3RvcihwYXRoLCBwYXJlbnQ9cGFyZW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3Rlc3RfcHkyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvcHkycHkzL3Rlc3RfcHkyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2NjRhY2YxNzhhMDAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9weTJweTMvdGVzdF9weTIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAK
LQotZGVmIHRlc3RfZXhjZXB0aW9uX3N5bnRheCgpOgotICAgIHRyeToKLSAgICAgICAgMC8wCi0g
ICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yLCBlOgotICAgICAgICBwYXNzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJweTMvdGVzdF9weTMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJweTMvdGVzdF9weTMucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJhZjBmZmJkODIyMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3B5MnB5My90ZXN0X3B5My5weQorKysgL2Rldi9udWxsCkBAIC0xLDUg
KzAsMCBAQAotZGVmIHRlc3RfZXhjZXB0aW9uX3N5bnRheCgpOgotICAgIHRyeToKLSAgICAgICAg
MCAvIDAKLSAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKLSAgICAgICAgcGFzcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjhhOGM5NGY0ZTUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJweTMvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9weTJweTMvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9w
eTJweTMvdGVzdF9weTIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJweTMvdGVz
dF9weTMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNv
bGxlY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weXRob25jb2xsZWN0aW9u
LnB5CmluZGV4IDM2MDMzNjFjM2RjZi4uODc0MjUyNmExOTE0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9weXRob25jb2xsZWN0aW9uLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxlY3Rpb24ucHkKQEAgLTYsOCArNiw3IEBAIGRlZiB0
ZXN0X2Z1bmN0aW9uKCk6CiAgICAgcGFzcwogCiAKLWNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgot
CitjbGFzcyBUZXN0Q2xhc3M6CiAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgogICAgICAgICBw
YXNzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxl
Y3Rpb24ucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHl0aG9uY29sbGVjdGlvbi5y
c3QKaW5kZXggOGU5ZDNhZTYyYTdkLi5jMmYwMzQ4Mzk1Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxlY3Rpb24ucnN0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxlY3Rpb24ucnN0CkBAIC02LDcgKzYsOSBAQCBJZ25v
cmUgcGF0aHMgZHVyaW5nIHRlc3QgY29sbGVjdGlvbgogCiBZb3UgY2FuIGVhc2lseSBpZ25vcmUg
Y2VydGFpbiB0ZXN0IGRpcmVjdG9yaWVzIGFuZCBtb2R1bGVzIGR1cmluZyBjb2xsZWN0aW9uCiBi
eSBwYXNzaW5nIHRoZSBgYC0taWdub3JlPXBhdGhgYCBvcHRpb24gb24gdGhlIGNsaS4gYGBweXRl
c3RgYCBhbGxvd3MgbXVsdGlwbGUKLWBgLS1pZ25vcmVgYCBvcHRpb25zLiBFeGFtcGxlOjoKK2Bg
LS1pZ25vcmVgYCBvcHRpb25zLiBFeGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAogCiAg
ICAgdGVzdHMvCiAgICAgfC0tIGV4YW1wbGUKQEAgLTI0LDIwICsyNiwyNSBAQCBieSBwYXNzaW5n
IHRoZSBgYC0taWdub3JlPXBhdGhgYCBvcHRpb24gb24gdGhlIGNsaS4gYGBweXRlc3RgYCBhbGxv
d3MgbXVsdGlwbGUKICAgICAgICAgICAgICctLSB0ZXN0X3dvcmxkXzAzLnB5CiAKIE5vdyBpZiB5
b3UgaW52b2tlIGBgcHl0ZXN0YGAgd2l0aCBgYC0taWdub3JlPXRlc3RzL2Zvb2Jhci90ZXN0X2Zv
b2Jhcl8wMy5weSAtLWlnbm9yZT10ZXN0cy9oZWxsby9gYCwKLXlvdSB3aWxsIHNlZSB0aGF0IGBg
cHl0ZXN0YGAgb25seSBjb2xsZWN0cyB0ZXN0LW1vZHVsZXMsIHdoaWNoIGRvIG5vdCBtYXRjaCB0
aGUgcGF0dGVybnMgc3BlY2lmaWVkOjoKK3lvdSB3aWxsIHNlZSB0aGF0IGBgcHl0ZXN0YGAgb25s
eSBjb2xsZWN0cyB0ZXN0LW1vZHVsZXMsIHdoaWNoIGRvIG5vdCBtYXRjaCB0aGUgcGF0dGVybnMg
c3BlY2lmaWVkOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKLSAgICA9PT09PT09PT0gdGVz
dCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09Ci0gICAgcGxhdGZvcm0gZGFyd2luIC0tIFB5dGhv
biAyLjcuMTAsIHB5dGVzdC0yLjguMiwgcHktMS40LjMwLCBwbHVnZ3ktMC4zLjEKKyAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRl
c3QtNS54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKICAgICByb290ZGlyOiAkUkVHRU5ET0Nf
VE1QRElSLCBpbmlmaWxlOgogICAgIGNvbGxlY3RlZCA1IGl0ZW1zCiAKLSAgICB0ZXN0cy9leGFt
cGxlL3Rlc3RfZXhhbXBsZV8wMS5weSAuCi0gICAgdGVzdHMvZXhhbXBsZS90ZXN0X2V4YW1wbGVf
MDIucHkgLgotICAgIHRlc3RzL2V4YW1wbGUvdGVzdF9leGFtcGxlXzAzLnB5IC4KLSAgICB0ZXN0
cy9mb29iYXIvdGVzdF9mb29iYXJfMDEucHkgLgotICAgIHRlc3RzL2Zvb2Jhci90ZXN0X2Zvb2Jh
cl8wMi5weSAuCisgICAgdGVzdHMvZXhhbXBsZS90ZXN0X2V4YW1wbGVfMDEucHkgLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAyMCVdCisgICAgdGVzdHMvZXhhbXBsZS90ZXN0
X2V4YW1wbGVfMDIucHkgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA0MCVd
CisgICAgdGVzdHMvZXhhbXBsZS90ZXN0X2V4YW1wbGVfMDMucHkgLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyA2MCVdCisgICAgdGVzdHMvZm9vYmFyL3Rlc3RfZm9vYmFyXzAx
LnB5IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA4MCVdCisgICAgdGVz
dHMvZm9vYmFyL3Rlc3RfZm9vYmFyXzAyLnB5IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWzEwMCVdCiAKLSAgICA9PT09PT09IDUgcGFzc2VkIGluIDAuMDIgc2Vjb25kcyA9
PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSA1IHBhc3NlZCBpbiAwLjAyIHNl
Y29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgYGAtLWlnbm9yZS1nbG9iYGAg
b3B0aW9uIGFsbG93cyB0byBpZ25vcmUgdGVzdCBmaWxlIHBhdGhzIGJhc2VkIG9uIFVuaXggc2hl
bGwtc3R5bGUgd2lsZGNhcmRzLgorSWYgeW91IHdhbnQgdG8gZXhjbHVkZSB0ZXN0LW1vZHVsZXMg
dGhhdCBlbmQgd2l0aCBgYF8wMS5weWBgLCBleGVjdXRlIGBgcHl0ZXN0YGAgd2l0aCBgYC0taWdu
b3JlLWdsb2I9JypfMDEucHknYGAuCiAKIERlc2VsZWN0IHRlc3RzIGR1cmluZyB0ZXN0IGNvbGxl
Y3Rpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyLDcgKzU5
LDkgQEAgS2VlcGluZyBkdXBsaWNhdGUgcGF0aHMgc3BlY2lmaWVkIGZyb20gY29tbWFuZCBsaW5l
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IERlZmF1bHQgYmVoYXZpb3Igb2YgYGBweXRlc3RgYCBpcyB0byBpZ25vcmUgZHVwbGljYXRlIHBh
dGhzIHNwZWNpZmllZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi1FeGFtcGxlOjoKK0V4YW1wbGU6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgIHB5dGVzdCBwYXRoX2EgcGF0aF9hCiAK
QEAgLTYzLDcgKzcyLDkgQEAgRXhhbXBsZTo6CiBKdXN0IGNvbGxlY3QgdGVzdHMgb25jZS4KIAog
VG8gY29sbGVjdCBkdXBsaWNhdGUgdGVzdHMsIHVzZSB0aGUgYGAtLWtlZXAtZHVwbGljYXRlc2Bg
IG9wdGlvbiBvbiB0aGUgY2xpLgotRXhhbXBsZTo6CitFeGFtcGxlOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKICAgICBweXRlc3QgLS1rZWVwLWR1cGxpY2F0ZXMgcGF0aF9hIHBhdGhfYQog
CkBAIC03Myw3ICs4NCw5IEBAIEV4YW1wbGU6OgogCiBBcyB0aGUgY29sbGVjdG9yIGp1c3Qgd29y
a3Mgb24gZGlyZWN0b3JpZXMsIGlmIHlvdSBzcGVjaWZ5IHR3aWNlIGEgc2luZ2xlIHRlc3QgZmls
ZSwgYGBweXRlc3RgYCB3aWxsCiBzdGlsbCBjb2xsZWN0IGl0IHR3aWNlLCBubyBtYXR0ZXIgaWYg
dGhlIGBgLS1rZWVwLWR1cGxpY2F0ZXNgYCBpcyBub3Qgc3BlY2lmaWVkLgotRXhhbXBsZTo6CitF
eGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICBweXRlc3QgdGVzdF9hLnB5
IHRlc3RfYS5weQogCkBAIC04NSw3ICs5OCw5IEBAIEV4YW1wbGU6OgogQ2hhbmdpbmcgZGlyZWN0
b3J5IHJlY3Vyc2lvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotWW91IGNhbiBzZXQgdGhlIDpjb25mdmFsOmBub3JlY3Vyc2VkaXJzYCBv
cHRpb24gaW4gYW4gaW5pLWZpbGUsIGZvciBleGFtcGxlIHlvdXIgYGBweXRlc3QuaW5pYGAgaW4g
dGhlIHByb2plY3Qgcm9vdCBkaXJlY3Rvcnk6OgorWW91IGNhbiBzZXQgdGhlIDpjb25mdmFsOmBu
b3JlY3Vyc2VkaXJzYCBvcHRpb24gaW4gYW4gaW5pLWZpbGUsIGZvciBleGFtcGxlIHlvdXIgYGBw
eXRlc3QuaW5pYGAgaW4gdGhlIHByb2plY3Qgcm9vdCBkaXJlY3Rvcnk6CisKKy4uIGNvZGUtYmxv
Y2s6OiBpbmkKIAogICAgICMgY29udGVudCBvZiBweXRlc3QuaW5pCiAgICAgW3B5dGVzdF0KQEAg
LTEwMCw0NyArMTE1LDY0IEBAIENoYW5naW5nIG5hbWluZyBjb252ZW50aW9ucwogCiBZb3UgY2Fu
IGNvbmZpZ3VyZSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb25zIGJ5IHNldHRpbmcKIHRoZSA6
Y29uZnZhbDpgcHl0aG9uX2ZpbGVzYCwgOmNvbmZ2YWw6YHB5dGhvbl9jbGFzc2VzYCBhbmQKLTpj
b25mdmFsOmBweXRob25fZnVuY3Rpb25zYCBjb25maWd1cmF0aW9uIG9wdGlvbnMuICBFeGFtcGxl
OjoKKzpjb25mdmFsOmBweXRob25fZnVuY3Rpb25zYCBpbiB5b3VyIDpyZWY6YGNvbmZpZ3VyYXRp
b24gZmlsZSA8Y29uZmlnIGZpbGUgZm9ybWF0cz5gLgorSGVyZSBpcyBhbiBleGFtcGxlOgorCisu
LiBjb2RlLWJsb2NrOjogaW5pCiAKICAgICAjIGNvbnRlbnQgb2YgcHl0ZXN0LmluaQotICAgICMg
Y2FuIGFsc28gYmUgZGVmaW5lZCBpbiB0b3guaW5pIG9yIHNldHVwLmNmZyBmaWxlLCBhbHRob3Vn
aCB0aGUgc2VjdGlvbgotICAgICMgbmFtZSBpbiBzZXR1cC5jZmcgZmlsZXMgc2hvdWxkIGJlICJ0
b29sOnB5dGVzdCIKKyAgICAjIEV4YW1wbGUgMTogaGF2ZSBweXRlc3QgbG9vayBmb3IgImNoZWNr
IiBpbnN0ZWFkIG9mICJ0ZXN0IgogICAgIFtweXRlc3RdCi0gICAgcHl0aG9uX2ZpbGVzPWNoZWNr
XyoucHkKLSAgICBweXRob25fY2xhc3Nlcz1DaGVjawotICAgIHB5dGhvbl9mdW5jdGlvbnM9Kl9j
aGVjaworICAgIHB5dGhvbl9maWxlcyA9IGNoZWNrXyoucHkKKyAgICBweXRob25fY2xhc3NlcyA9
IENoZWNrCisgICAgcHl0aG9uX2Z1bmN0aW9ucyA9ICpfY2hlY2sKIAogVGhpcyB3b3VsZCBtYWtl
IGBgcHl0ZXN0YGAgbG9vayBmb3IgdGVzdHMgaW4gZmlsZXMgdGhhdCBtYXRjaCB0aGUgYGBjaGVj
a18qCiAucHlgYCBnbG9iLXBhdHRlcm4sIGBgQ2hlY2tgYCBwcmVmaXhlcyBpbiBjbGFzc2VzLCBh
bmQgZnVuY3Rpb25zIGFuZCBtZXRob2RzCi10aGF0IG1hdGNoIGBgKl9jaGVja2BgLiAgRm9yIGV4
YW1wbGUsIGlmIHdlIGhhdmU6OgordGhhdCBtYXRjaCBgYCpfY2hlY2tgYC4gRm9yIGV4YW1wbGUs
IGlmIHdlIGhhdmU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBv
ZiBjaGVja19teWFwcC5weQotICAgIGNsYXNzIENoZWNrTXlBcHAob2JqZWN0KToKKyAgICBjbGFz
cyBDaGVja015QXBwOgogICAgICAgICBkZWYgc2ltcGxlX2NoZWNrKHNlbGYpOgogICAgICAgICAg
ICAgcGFzcworCiAgICAgICAgIGRlZiBjb21wbGV4X2NoZWNrKHNlbGYpOgogICAgICAgICAgICAg
cGFzcwogCi10aGVuIHRoZSB0ZXN0IGNvbGxlY3Rpb24gbG9va3MgbGlrZSB0aGlzOjoKK1RoZSB0
ZXN0IGNvbGxlY3Rpb24gd291bGQgbG9vayBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRlc3QKIAogICAgICQgcHl0ZXN0IC0tY29sbGVjdC1vbmx5CiAgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5p
ZmlsZTogcHl0ZXN0LmluaQorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0
ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBjb25m
aWdmaWxlOiBweXRlc3QuaW5pCiAgICAgY29sbGVjdGVkIDIgaXRlbXMKLSAgICA8TW9kdWxlICdj
aGVja19teWFwcC5weSc+Ci0gICAgICA8Q2xhc3MgJ0NoZWNrTXlBcHAnPgotICAgICAgICA8SW5z
dGFuY2UgJygpJz4KLSAgICAgICAgICA8RnVuY3Rpb24gJ3NpbXBsZV9jaGVjayc+Ci0gICAgICAg
ICAgPEZ1bmN0aW9uICdjb21wbGV4X2NoZWNrJz4KIAotICAgID09PT09PT09PT09PT09PT09PT09
PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICA8TW9kdWxlIGNoZWNrX215YXBwLnB5PgorICAgICAgPENsYXNzIENoZWNrTXlBcHA+Cisg
ICAgICAgICAgPEZ1bmN0aW9uIHNpbXBsZV9jaGVjaz4KKyAgICAgICAgICA8RnVuY3Rpb24gY29t
cGxleF9jaGVjaz4KKworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJh
biBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWW91IGNhbiBjaGVjayBm
b3IgbXVsdGlwbGUgZ2xvYiBwYXR0ZXJucyBieSBhZGRpbmcgYSBzcGFjZSBiZXR3ZWVuIHRoZSBw
YXR0ZXJuczoKKworLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgIyBFeGFtcGxlIDI6IGhhdmUg
cHl0ZXN0IGxvb2sgZm9yIGZpbGVzIHdpdGggInRlc3QiIGFuZCAiZXhhbXBsZSIKKyAgICAjIGNv
bnRlbnQgb2YgcHl0ZXN0LmluaQorICAgIFtweXRlc3RdCisgICAgcHl0aG9uX2ZpbGVzID0gdGVz
dF8qLnB5IGV4YW1wbGVfKi5weQogCiAuLiBub3RlOjoKIAogICAgdGhlIGBgcHl0aG9uX2Z1bmN0
aW9uc2BgIGFuZCBgYHB5dGhvbl9jbGFzc2VzYGAgb3B0aW9ucyBoYXMgbm8gZWZmZWN0CiAgICBm
b3IgYGB1bml0dGVzdC5UZXN0Q2FzZWBgIHRlc3QgZGlzY292ZXJ5IGJlY2F1c2UgcHl0ZXN0IGRl
bGVnYXRlcwotICAgZGV0ZWN0aW9uIG9mIHRlc3QgY2FzZSBtZXRob2RzIHRvIHVuaXR0ZXN0IGNv
ZGUuCisgICBkaXNjb3Zlcnkgb2YgdGVzdCBjYXNlIG1ldGhvZHMgdG8gdW5pdHRlc3QgY29kZS4K
IAogSW50ZXJwcmV0aW5nIGNtZGxpbmUgYXJndW1lbnRzIGFzIFB5dGhvbiBwYWNrYWdlcwogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0
OCwxMyArMTgwLDE3IEBAIEludGVycHJldGluZyBjbWRsaW5lIGFyZ3VtZW50cyBhcyBQeXRob24g
cGFja2FnZXMKIFlvdSBjYW4gdXNlIHRoZSBgYC0tcHlhcmdzYGAgb3B0aW9uIHRvIG1ha2UgYGBw
eXRlc3RgYCB0cnkKIGludGVycHJldGluZyBhcmd1bWVudHMgYXMgcHl0aG9uIHBhY2thZ2UgbmFt
ZXMsIGRlcml2aW5nCiB0aGVpciBmaWxlIHN5c3RlbSBwYXRoIGFuZCB0aGVuIHJ1bm5pbmcgdGhl
IHRlc3QuIEZvcgotZXhhbXBsZSBpZiB5b3UgaGF2ZSB1bml0dGVzdDIgaW5zdGFsbGVkIHlvdSBj
YW4gdHlwZTo6CitleGFtcGxlIGlmIHlvdSBoYXZlIHVuaXR0ZXN0MiBpbnN0YWxsZWQgeW91IGNh
biB0eXBlOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tcHlhcmdzIHVu
aXR0ZXN0Mi50ZXN0LnRlc3Rfc2tpcHBpbmcgLXEKIAogd2hpY2ggd291bGQgcnVuIHRoZSByZXNw
ZWN0aXZlIHRlc3QgbW9kdWxlLiAgTGlrZSB3aXRoCiBvdGhlciBvcHRpb25zLCB0aHJvdWdoIGFu
IGluaS1maWxlIGFuZCB0aGUgOmNvbmZ2YWw6YGFkZG9wdHNgIG9wdGlvbiB5b3UKLWNhbiBtYWtl
IHRoaXMgY2hhbmdlIG1vcmUgcGVybWFuZW50bHk6OgorY2FuIG1ha2UgdGhpcyBjaGFuZ2UgbW9y
ZSBwZXJtYW5lbnRseToKKworLi4gY29kZS1ibG9jazo6IGluaQogCiAgICAgIyBjb250ZW50IG9m
IHB5dGVzdC5pbmkKICAgICBbcHl0ZXN0XQpAQCAtMTY3LDIxICsyMDMsMjQgQEAgdHJlYXQgaXQg
YXMgYSBmaWxlc3lzdGVtIHBhdGguCiBGaW5kaW5nIG91dCB3aGF0IGlzIGNvbGxlY3RlZAogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91IGNhbiBh
bHdheXMgcGVlayBhdCB0aGUgY29sbGVjdGlvbiB0cmVlIHdpdGhvdXQgcnVubmluZyB0ZXN0cyBs
aWtlIHRoaXM6OgorWW91IGNhbiBhbHdheXMgcGVlayBhdCB0aGUgY29sbGVjdGlvbiB0cmVlIHdp
dGhvdXQgcnVubmluZyB0ZXN0cyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QK
IAogICAgIC4gJCBweXRlc3QgLS1jb2xsZWN0LW9ubHkgcHl0aG9uY29sbGVjdGlvbi5weQogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIsIGluaWZpbGU6IHB5dGVzdC5pbmkKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQ
eXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNh
Y2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VO
RE9DX1RNUERJUiwgY29uZmlnZmlsZTogcHl0ZXN0LmluaQogICAgIGNvbGxlY3RlZCAzIGl0ZW1z
Ci0gICAgPE1vZHVsZSAnQ1dEL3B5dGhvbmNvbGxlY3Rpb24ucHknPgotICAgICAgPEZ1bmN0aW9u
ICd0ZXN0X2Z1bmN0aW9uJz4KLSAgICAgIDxDbGFzcyAnVGVzdENsYXNzJz4KLSAgICAgICAgPElu
c3RhbmNlICcoKSc+Ci0gICAgICAgICAgPEZ1bmN0aW9uICd0ZXN0X21ldGhvZCc+Ci0gICAgICAg
ICAgPEZ1bmN0aW9uICd0ZXN0X2Fub3RoZXJtZXRob2QnPgogCi0gICAgPT09PT09PT09PT09PT09
PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09
PT09PQorICAgIDxNb2R1bGUgQ1dEL3B5dGhvbmNvbGxlY3Rpb24ucHk+CisgICAgICA8RnVuY3Rp
b24gdGVzdF9mdW5jdGlvbj4KKyAgICAgIDxDbGFzcyBUZXN0Q2xhc3M+CisgICAgICAgICAgPEZ1
bmN0aW9uIHRlc3RfbWV0aG9kPgorICAgICAgICAgIDxGdW5jdGlvbiB0ZXN0X2Fub3RoZXJtZXRo
b2Q+CisKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4x
MnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIF9jdXN0b21pemluZy10ZXN0LWNv
bGxlY3Rpb246CiAKQEAgLTE5MCw3ICsyMjksOSBAQCBDdXN0b21pemluZyB0ZXN0IGNvbGxlY3Rp
b24KIAogLi4gcmVnZW5kb2M6d2lwZQogCi1Zb3UgY2FuIGVhc2lseSBpbnN0cnVjdCBgYHB5dGVz
dGBgIHRvIGRpc2NvdmVyIHRlc3RzIGZyb20gZXZlcnkgUHl0aG9uIGZpbGU6OgorWW91IGNhbiBl
YXNpbHkgaW5zdHJ1Y3QgYGBweXRlc3RgYCB0byBkaXNjb3ZlciB0ZXN0cyBmcm9tIGV2ZXJ5IFB5
dGhvbiBmaWxlOgorCisuLiBjb2RlLWJsb2NrOjogaW5pCiAKICAgICAjIGNvbnRlbnQgb2YgcHl0
ZXN0LmluaQogICAgIFtweXRlc3RdCkBAIC0xOTksNyArMjQwLDkgQEAgWW91IGNhbiBlYXNpbHkg
aW5zdHJ1Y3QgYGBweXRlc3RgYCB0byBkaXNjb3ZlciB0ZXN0cyBmcm9tIGV2ZXJ5IFB5dGhvbiBm
aWxlOjoKIEhvd2V2ZXIsIG1hbnkgcHJvamVjdHMgd2lsbCBoYXZlIGEgYGBzZXR1cC5weWBgIHdo
aWNoIHRoZXkgZG9uJ3Qgd2FudCB0byBiZQogaW1wb3J0ZWQuIE1vcmVvdmVyLCB0aGVyZSBtYXkg
ZmlsZXMgb25seSBpbXBvcnRhYmxlIGJ5IGEgc3BlY2lmaWMgcHl0aG9uCiB2ZXJzaW9uLiBGb3Ig
c3VjaCBjYXNlcyB5b3UgY2FuIGR5bmFtaWNhbGx5IGRlZmluZSBmaWxlcyB0byBiZSBpZ25vcmVk
IGJ5Ci1saXN0aW5nIHRoZW0gaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZTo6CitsaXN0aW5nIHRo
ZW0gaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgog
CiAgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAgICAgaW1wb3J0IHN5cwpAQCAtMjA4LDcg
KzI1MSw5IEBAIGxpc3RpbmcgdGhlbSBpbiBhIGBgY29uZnRlc3QucHlgYCBmaWxlOjoKICAgICBp
ZiBzeXMudmVyc2lvbl9pbmZvWzBdID4gMjoKICAgICAgICAgY29sbGVjdF9pZ25vcmUuYXBwZW5k
KCJwa2cvbW9kdWxlX3B5Mi5weSIpCiAKLWFuZCB0aGVuIGlmIHlvdSBoYXZlIGEgbW9kdWxlIGZp
bGUgbGlrZSB0aGlzOjoKK2FuZCB0aGVuIGlmIHlvdSBoYXZlIGEgbW9kdWxlIGZpbGUgbGlrZSB0
aGlzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgcGtnL21v
ZHVsZV9weTIucHkKICAgICBkZWYgdGVzdF9vbmx5X29uX3B5dGhvbjIoKToKQEAgLTIxNywxMyAr
MjYyLDE3IEBAIGFuZCB0aGVuIGlmIHlvdSBoYXZlIGEgbW9kdWxlIGZpbGUgbGlrZSB0aGlzOjoK
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIHBhc3MKIAotYW5kIGEg
YGBzZXR1cC5weWBgIGR1bW15IGZpbGUgbGlrZSB0aGlzOjoKK2FuZCBhIGBgc2V0dXAucHlgYCBk
dW1teSBmaWxlIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBj
b250ZW50IG9mIHNldHVwLnB5Ci0gICAgMC8wICAjIHdpbGwgcmFpc2UgZXhjZXB0aW9uIGlmIGlt
cG9ydGVkCisgICAgMCAvIDAgICMgd2lsbCByYWlzZSBleGNlcHRpb24gaWYgaW1wb3J0ZWQKIAog
SWYgeW91IHJ1biB3aXRoIGEgUHl0aG9uIDIgaW50ZXJwcmV0ZXIgdGhlbiB5b3Ugd2lsbCBmaW5k
IHRoZSBvbmUgdGVzdCBhbmQgd2lsbAotbGVhdmUgb3V0IHRoZSBgYHNldHVwLnB5YGAgZmlsZTo6
CitsZWF2ZSBvdXQgdGhlIGBgc2V0dXAucHlgYCBmaWxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
ZXN0CiAKICAgICAjJCBweXRlc3QgLS1jb2xsZWN0LW9ubHkKICAgICA9PT09PT0gdGVzdCBzZXNz
aW9uIHN0YXJ0cyA9PT09PT0KQEAgLTIzNiwxMiArMjg1LDQwIEBAIGxlYXZlIG91dCB0aGUgYGBz
ZXR1cC5weWBgIGZpbGU6OgogICAgID09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4wNCBzZWNvbmRz
ID09PT09PQogCiBJZiB5b3UgcnVuIHdpdGggYSBQeXRob24gMyBpbnRlcnByZXRlciBib3RoIHRo
ZSBvbmUgdGVzdCBhbmQgdGhlIGBgc2V0dXAucHlgYAotZmlsZSB3aWxsIGJlIGxlZnQgb3V0OjoK
K2ZpbGUgd2lsbCBiZSBsZWZ0IG91dDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAg
JCBweXRlc3QgLS1jb2xsZWN0LW9ubHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0g
dGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxh
dGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVn
Z3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOiBweXRlc3Qu
aW5pCisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVz
dF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGNvbmZpZ2ZpbGU6IHB5dGVz
dC5pbmkKICAgICBjb2xsZWN0ZWQgMCBpdGVtcwogCi0gICAgPT09PT09PT09PT09PT09PT09PT09
PT0gbm8gdGVzdHMgcmFuIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PQor
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKworSXQncyBhbHNvIHBvc3NpYmxlIHRvIGlnbm9yZSBm
aWxlcyBiYXNlZCBvbiBVbml4IHNoZWxsLXN0eWxlIHdpbGRjYXJkcyBieSBhZGRpbmcKK3BhdHRl
cm5zIHRvIDpnbG9iYWx2YXI6YGNvbGxlY3RfaWdub3JlX2dsb2JgLgorCitUaGUgZm9sbG93aW5n
IGV4YW1wbGUgYGBjb25mdGVzdC5weWBgIGlnbm9yZXMgdGhlIGZpbGUgYGBzZXR1cC5weWBgIGFu
ZCBpbgorYWRkaXRpb24gYWxsIGZpbGVzIHRoYXQgZW5kIHdpdGggYGAqX3B5Mi5weWBgIHdoZW4g
ZXhlY3V0ZWQgd2l0aCBhIFB5dGhvbiAzCitpbnRlcnByZXRlcjoKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CisgICAgaW1wb3J0IHN5cwor
CisgICAgY29sbGVjdF9pZ25vcmUgPSBbInNldHVwLnB5Il0KKyAgICBpZiBzeXMudmVyc2lvbl9p
bmZvWzBdID4gMjoKKyAgICAgICAgY29sbGVjdF9pZ25vcmVfZ2xvYiA9IFsiKl9weTIucHkiXQor
CitTaW5jZSBQeXRlc3QgMi42LCB1c2VycyBjYW4gcHJldmVudCBweXRlc3QgZnJvbSBkaXNjb3Zl
cmluZyBjbGFzc2VzIHRoYXQgc3RhcnQKK3dpdGggYGBUZXN0YGAgYnkgc2V0dGluZyBhIGJvb2xl
YW4gYGBfX3Rlc3RfX2BgIGF0dHJpYnV0ZSB0byBgYEZhbHNlYGAuCisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KKworICAgICMgV2lsbCBub3QgYmUgZGlzY292ZXJlZCBhcyBhIHRlc3QKKyAgICBj
bGFzcyBUZXN0Q2xhc3M6CisgICAgICAgIF9fdGVzdF9fID0gRmFsc2UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3JlcG9ydGluZ2RlbW8ucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvcmVwb3J0aW5nZGVtby5yc3QKaW5kZXggNDY5MWIxMjhiYjgzLi5mMWI5
NzNmM2IzM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3JlcG9ydGlu
Z2RlbW8ucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3JlcG9ydGluZ2RlbW8u
cnN0CkBAIC0xLDI3ICsxLDI3IEBACi0KIC4uIF9gdGJyZXBvcnRkZW1vYDoKIAogRGVtbyBvZiBQ
eXRob24gZmFpbHVyZSByZXBvcnRzIHdpdGggcHl0ZXN0Ci09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisKK0hlcmUgaXMgYSBuaWNlIHJ1biBvZiBzZXZlcmFsIGZhaWx1cmVz
IGFuZCBob3cgYGBweXRlc3RgYCBwcmVzZW50cyB0aGluZ3M6CiAKLUhlcmUgaXMgYSBuaWNlIHJ1
biBvZiBzZXZlcmFsIHRlbnMgb2YgZmFpbHVyZXMKLWFuZCBob3cgYGBweXRlc3RgYCBwcmVzZW50
cyB0aGluZ3MgKHVuZm9ydHVuYXRlbHkKLW5vdCBzaG93aW5nIHRoZSBuaWNlIGNvbG9ycyBoZXJl
IGluIHRoZSBIVE1MIHRoYXQgeW91Ci1nZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtp
bmcgb24gdGhhdCk6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgYXNzZXJ0aW9uICQg
cHl0ZXN0IGZhaWx1cmVfZGVtby5weQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0
ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIvYXNzZXJ0aW9uLCBpbmlmaWxl
OgotICAgIGNvbGxlY3RlZCA0MiBpdGVtcworICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6
ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1Q
RElSL2Fzc2VydGlvbgorICAgIGNvbGxlY3RlZCA0NCBpdGVtcwogCi0gICAgZmFpbHVyZV9kZW1v
LnB5IEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAgICAgICAgICAg
WzEwMCVdCisgICAgZmFpbHVyZV9kZW1vLnB5IEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG
RkZGRkZGRkZGRkZGRkZGICAgICAgICAgWzEwMCVdCiAKICAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gRkFJTFVSRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0gICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2dlbmVyYXRpdmVbMF0gX19f
X19fX19fX19fX19fX19fX19fX19fX19fXworICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19f
XyB0ZXN0X2dlbmVyYXRpdmVbMy02XSBfX19fX19fX19fX19fX19fX19fX19fX19fX18KIAogICAg
IHBhcmFtMSA9IDMsIHBhcmFtMiA9IDYKIAorICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoInBhcmFtMSwgcGFyYW0yIiwgWygzLCA2KV0pCiAgICAgICAgIGRlZiB0ZXN0X2dlbmVyYXRp
dmUocGFyYW0xLCBwYXJhbTIpOgogICAgID4gICAgICAgYXNzZXJ0IHBhcmFtMSAqIDIgPCBwYXJh
bTIKICAgICBFICAgICAgIGFzc2VydCAoMyAqIDIpIDwgNgpAQCAtMzIsNyArMzIsNiBAQCBnZXQg
b24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIHNlbGYgPSA8
ZmFpbHVyZV9kZW1vLlRlc3RGYWlsaW5nIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCiAgICAgICAg
IGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKLQogICAgICAgICAgICAgZGVmIGYoKToKICAgICAgICAg
ICAgICAgICByZXR1cm4gNDIKIApAQCAtNDQsNyArNDMsNyBAQCBnZXQgb24gdGhlIHRlcm1pbmFs
IC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgICsgIHdoZXJlIDQyID0g
PGZ1bmN0aW9uIFRlc3RGYWlsaW5nLnRlc3Rfc2ltcGxlLjxsb2NhbHM+LmYgYXQgMHhkZWFkYmVl
Zj4oKQogICAgIEUgICAgICAgICsgIGFuZCAgIDQzID0gPGZ1bmN0aW9uIFRlc3RGYWlsaW5nLnRl
c3Rfc2ltcGxlLjxsb2NhbHM+LmcgYXQgMHhkZWFkYmVlZj4oKQogCi0gICAgZmFpbHVyZV9kZW1v
LnB5OjM3OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weTozMDogQXNzZXJ0aW9u
RXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fXyBUZXN0RmFpbGluZy50ZXN0X3NpbXBsZV9t
dWx0aWxpbmUgX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVt
by5UZXN0RmFpbGluZyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTUyLDcgKzUxLDcgQEAgZ2V0
IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICAgICAgZGVm
IHRlc3Rfc2ltcGxlX211bHRpbGluZShzZWxmKToKICAgICA+ICAgICAgIG90aGVyZnVuY19tdWx0
aSg0MiwgNiAqIDkpCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6NDA6CisgICAgZmFpbHVyZV9kZW1v
LnB5OjMzOgogICAgIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXwogCiAgICAgYSA9IDQyLCBiID0gNTQKQEAg
LTYxLDEzICs2MCwxMiBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24g
dGhhdCk6OgogICAgID4gICAgICAgYXNzZXJ0IGEgPT0gYgogICAgIEUgICAgICAgYXNzZXJ0IDQy
ID09IDU0CiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTU6IEFzc2VydGlvbkVycm9yCisgICAgZmFp
bHVyZV9kZW1vLnB5OjE0OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19f
X19fX19fXyBUZXN0RmFpbGluZy50ZXN0X25vdCBfX19fX19fX19fX19fX19fX19fX19fX19fX18K
IAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RGYWlsaW5nIG9iamVjdCBhdCAweGRlYWRi
ZWVmPgogCiAgICAgICAgIGRlZiB0ZXN0X25vdChzZWxmKToKLQogICAgICAgICAgICAgZGVmIGYo
KToKICAgICAgICAgICAgICAgICByZXR1cm4gNDIKIApAQCAtNzUsNyArNzMsNyBAQCBnZXQgb24g
dGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgYXNz
ZXJ0IG5vdCA0MgogICAgIEUgICAgICAgICsgIHdoZXJlIDQyID0gPGZ1bmN0aW9uIFRlc3RGYWls
aW5nLnRlc3Rfbm90Ljxsb2NhbHM+LmYgYXQgMHhkZWFkYmVlZj4oKQogCi0gICAgZmFpbHVyZV9k
ZW1vLnB5OjQ3OiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weTozOTogQXNzZXJ0
aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fXyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlv
bnMudGVzdF9lcV90ZXh0IF9fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVf
ZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBA
IC04MywxMCArODEsMTAgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9u
IHRoYXQpOjoKICAgICAgICAgZGVmIHRlc3RfZXFfdGV4dChzZWxmKToKICAgICA+ICAgICAgIGFz
c2VydCAic3BhbSIgPT0gImVnZ3MiCiAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0
ICdzcGFtJyA9PSAnZWdncycKLSAgICBFICAgICAgICAgLSBzcGFtCi0gICAgRSAgICAgICAgICsg
ZWdncworICAgIEUgICAgICAgICAtIGVnZ3MKKyAgICBFICAgICAgICAgKyBzcGFtCiAKLSAgICBm
YWlsdXJlX2RlbW8ucHk6NTM6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjQ0
OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFu
YXRpb25zLnRlc3RfZXFfc2ltaWxhcl90ZXh0IF9fX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8
ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFk
YmVlZj4KQEAgLTk0LDEyICs5MiwxMiBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdv
cmtpbmcgb24gdGhhdCk6OgogICAgICAgICBkZWYgdGVzdF9lcV9zaW1pbGFyX3RleHQoc2VsZik6
CiAgICAgPiAgICAgICBhc3NlcnQgImZvbyAxIGJhciIgPT0gImZvbyAyIGJhciIKICAgICBFICAg
ICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJ2ZvbyAxIGJhcicgPT0gJ2ZvbyAyIGJhcicKLSAg
ICBFICAgICAgICAgLSBmb28gMSBiYXIKKyAgICBFICAgICAgICAgLSBmb28gMiBiYXIKICAgICBF
ICAgICAgICAgPyAgICAgXgotICAgIEUgICAgICAgICArIGZvbyAyIGJhcgorICAgIEUgICAgICAg
ICArIGZvbyAxIGJhcgogICAgIEUgICAgICAgICA/ICAgICBeCiAKLSAgICBmYWlsdXJlX2RlbW8u
cHk6NTY6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjQ3OiBBc3NlcnRpb25F
cnJvcgogICAgIF9fX19fX19fX19fXyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMudGVzdF9l
cV9tdWx0aWxpbmVfdGV4dCBfX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1v
LlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTEw
OCwxMSArMTA2LDExIEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0
aGF0KTo6CiAgICAgPiAgICAgICBhc3NlcnQgImZvb1xuc3BhbVxuYmFyIiA9PSAiZm9vXG5lZ2dz
XG5iYXIiCiAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICdmb29cbnNwYW1cbmJh
cicgPT0gJ2Zvb1xuZWdnc1xuYmFyJwogICAgIEUgICAgICAgICAgIGZvbwotICAgIEUgICAgICAg
ICAtIHNwYW0KLSAgICBFICAgICAgICAgKyBlZ2dzCisgICAgRSAgICAgICAgIC0gZWdncworICAg
IEUgICAgICAgICArIHNwYW0KICAgICBFICAgICAgICAgICBiYXIKIAotICAgIGZhaWx1cmVfZGVt
by5weTo1OTogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6NTA6IEFzc2VydGlv
bkVycm9yCiAgICAgX19fX19fX19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRl
c3RfZXFfbG9uZ190ZXh0IF9fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2Rl
bW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAt
MTIxLDE1ICsxMTksMTUgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9u
IHRoYXQpOjoKICAgICAgICAgICAgIGEgPSAiMSIgKiAxMDAgKyAiYSIgKyAiMiIgKiAxMDAKICAg
ICAgICAgICAgIGIgPSAiMSIgKiAxMDAgKyAiYiIgKyAiMiIgKiAxMDAKICAgICA+ICAgICAgIGFz
c2VydCBhID09IGIKLSAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJzExMTExMTEx
MTExMS4uLjIyMjIyMjIyMjIyMjInID09ICcxMTExMTExMTExMTExLi4uMjIyMjIyMjIyMjIyMicK
KyAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJzExMTExMTExMTExMS4uLjIyMjIy
MjIyMjIyMjInID09ICcxMTExMTExMTExMTEuLi4yMjIyMjIyMjIyMjIyJwogICAgIEUgICAgICAg
ICBTa2lwcGluZyA5MCBpZGVudGljYWwgbGVhZGluZyBjaGFyYWN0ZXJzIGluIGRpZmYsIHVzZSAt
diB0byBzaG93CiAgICAgRSAgICAgICAgIFNraXBwaW5nIDkxIGlkZW50aWNhbCB0cmFpbGluZyBj
aGFyYWN0ZXJzIGluIGRpZmYsIHVzZSAtdiB0byBzaG93Ci0gICAgRSAgICAgICAgIC0gMTExMTEx
MTExMWEyMjIyMjIyMjIKKyAgICBFICAgICAgICAgLSAxMTExMTExMTExYjIyMjIyMjIyMgogICAg
IEUgICAgICAgICA/ICAgICAgICAgICBeCi0gICAgRSAgICAgICAgICsgMTExMTExMTExMWIyMjIy
MjIyMjIKKyAgICBFICAgICAgICAgKyAxMTExMTExMTExYTIyMjIyMjIyMgogICAgIEUgICAgICAg
ICA/ICAgICAgICAgICBeCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6NjQ6IEFzc2VydGlvbkVycm9y
CisgICAgZmFpbHVyZV9kZW1vLnB5OjU1OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fXyBU
ZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMudGVzdF9lcV9sb25nX3RleHRfbXVsdGlsaW5lIF9f
X19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxh
bmF0aW9ucyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTEzOCw3ICsxMzYsNyBAQCBnZXQgb24g
dGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgICAgICAgICAgYSA9
ICIxXG4iICogMTAwICsgImEiICsgIjJcbiIgKiAxMDAKICAgICAgICAgICAgIGIgPSAiMVxuIiAq
IDEwMCArICJiIiArICIyXG4iICogMTAwCiAgICAgPiAgICAgICBhc3NlcnQgYSA9PSBiCi0gICAg
RSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0ICcxXG4xXG4xXG4xXG4uLi5uMlxuMlxuMlxu
MlxuJyA9PSAnMVxuMVxuMVxuMVxuMS4uLm4yXG4yXG4yXG4yXG4nCisgICAgRSAgICAgICBBc3Nl
cnRpb25FcnJvcjogYXNzZXJ0ICcxXG4xXG4xXG4xXG4uLi5uMlxuMlxuMlxuMlxuJyA9PSAnMVxu
MVxuMVxuMVxuLi4ubjJcbjJcbjJcbjJcbicKICAgICBFICAgICAgICAgU2tpcHBpbmcgMTkwIGlk
ZW50aWNhbCBsZWFkaW5nIGNoYXJhY3RlcnMgaW4gZGlmZiwgdXNlIC12IHRvIHNob3cKICAgICBF
ICAgICAgICAgU2tpcHBpbmcgMTkxIGlkZW50aWNhbCB0cmFpbGluZyBjaGFyYWN0ZXJzIGluIGRp
ZmYsIHVzZSAtdiB0byBzaG93CiAgICAgRSAgICAgICAgICAgMQpAQCAtMTQ5LDcgKzE0Nyw3IEBA
IGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgRQog
ICAgIEUgICAgICAgICAuLi5GdWxsIG91dHB1dCB0cnVuY2F0ZWQgKDcgbGluZXMgaGlkZGVuKSwg
dXNlICctdnYnIHRvIHNob3cKIAotICAgIGZhaWx1cmVfZGVtby5weTo2OTogQXNzZXJ0aW9uRXJy
b3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6NjA6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19f
X19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfbGlzdCBfX19fX19f
X19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhw
bGFuYXRpb25zIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtMTYwLDcgKzE1OCw3IEBAIGdldCBv
biB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICAg
IEF0IGluZGV4IDIgZGlmZjogMiAhPSAzCiAgICAgRSAgICAgICAgIFVzZSAtdiB0byBnZXQgdGhl
IGZ1bGwgZGlmZgogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjcyOiBBc3NlcnRpb25FcnJvcgorICAg
IGZhaWx1cmVfZGVtby5weTo2MzogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fXyBU
ZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMudGVzdF9lcV9saXN0X2xvbmcgX19fX19fX19fX19f
X19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlv
bnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC0xNzMsNyArMTcxLDcgQEAgZ2V0IG9uIHRoZSB0
ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgICAgQXQgaW5k
ZXggMTAwIGRpZmY6IDEgIT0gMgogICAgIEUgICAgICAgICBVc2UgLXYgdG8gZ2V0IHRoZSBmdWxs
IGRpZmYKIAotICAgIGZhaWx1cmVfZGVtby5weTo3NzogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWls
dXJlX2RlbW8ucHk6Njg6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX18gVGVz
dFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfZGljdCBfX19fX19fX19fX19fX19fXwog
CiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9i
amVjdCBhdCAweGRlYWRiZWVmPgpAQCAtMTg0LDE0ICsxODIsMTQgQEAgZ2V0IG9uIHRoZSB0ZXJt
aW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgICAgT21pdHRpbmcg
MSBpZGVudGljYWwgaXRlbXMsIHVzZSAtdnYgdG8gc2hvdwogICAgIEUgICAgICAgICBEaWZmZXJp
bmcgaXRlbXM6CiAgICAgRSAgICAgICAgIHsnYic6IDF9ICE9IHsnYic6IDJ9Ci0gICAgRSAgICAg
ICAgIExlZnQgY29udGFpbnMgbW9yZSBpdGVtczoKKyAgICBFICAgICAgICAgTGVmdCBjb250YWlu
cyAxIG1vcmUgaXRlbToKICAgICBFICAgICAgICAgeydjJzogMH0KLSAgICBFICAgICAgICAgUmln
aHQgY29udGFpbnMgbW9yZSBpdGVtczoKKyAgICBFICAgICAgICAgUmlnaHQgY29udGFpbnMgMSBt
b3JlIGl0ZW06CiAgICAgRSAgICAgICAgIHsnZCc6IDB9Li4uCiAgICAgRQogICAgIEUgICAgICAg
ICAuLi5GdWxsIG91dHB1dCB0cnVuY2F0ZWQgKDIgbGluZXMgaGlkZGVuKSwgdXNlICctdnYnIHRv
IHNob3cKIAotICAgIGZhaWx1cmVfZGVtby5weTo4MDogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWls
dXJlX2RlbW8ucHk6NzE6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX18gVGVz
dFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfc2V0IF9fX19fX19fX19fX19fX19fXwog
CiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9i
amVjdCBhdCAweGRlYWRiZWVmPgpAQCAtMjA5LDcgKzIwNyw3IEBAIGdldCBvbiB0aGUgdGVybWlu
YWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgRQogICAgIEUgICAgICAgICAuLi5G
dWxsIG91dHB1dCB0cnVuY2F0ZWQgKDIgbGluZXMgaGlkZGVuKSwgdXNlICctdnYnIHRvIHNob3cK
IAotICAgIGZhaWx1cmVfZGVtby5weTo4MzogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2Rl
bW8ucHk6NzQ6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fXyBUZXN0U3BlY2lhbGlz
ZWRFeHBsYW5hdGlvbnMudGVzdF9lcV9sb25nZXJfbGlzdCBfX19fX19fX19fX19fXwogCiAgICAg
c2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zIG9iamVjdCBh
dCAweGRlYWRiZWVmPgpAQCAtMjE3LDEwICsyMTUsMTAgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAt
IHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICAgICAgZGVmIHRlc3RfZXFfbG9uZ2VyX2xp
c3Qoc2VsZik6CiAgICAgPiAgICAgICBhc3NlcnQgWzEsIDJdID09IFsxLCAyLCAzXQogICAgIEUg
ICAgICAgYXNzZXJ0IFsxLCAyXSA9PSBbMSwgMiwgM10KLSAgICBFICAgICAgICAgUmlnaHQgY29u
dGFpbnMgbW9yZSBpdGVtcywgZmlyc3QgZXh0cmEgaXRlbTogMworICAgIEUgICAgICAgICBSaWdo
dCBjb250YWlucyBvbmUgbW9yZSBpdGVtOiAzCiAgICAgRSAgICAgICAgIFVzZSAtdiB0byBnZXQg
dGhlIGZ1bGwgZGlmZgogCi0gICAgZmFpbHVyZV9kZW1vLnB5Ojg2OiBBc3NlcnRpb25FcnJvcgor
ICAgIGZhaWx1cmVfZGVtby5weTo3NzogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19f
X19fXyBUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMudGVzdF9pbl9saXN0IF9fX19fX19fX19f
X19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5h
dGlvbnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC0yMjksNyArMjI3LDcgQEAgZ2V0IG9uIHRo
ZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICA+ICAgICAgIGFzc2Vy
dCAxIGluIFswLCAyLCAzLCA0LCA1XQogICAgIEUgICAgICAgYXNzZXJ0IDEgaW4gWzAsIDIsIDMs
IDQsIDVdCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6ODk6IEFzc2VydGlvbkVycm9yCisgICAgZmFp
bHVyZV9kZW1vLnB5OjgwOiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX18gVGVzdFNwZWNp
YWxpc2VkRXhwbGFuYXRpb25zLnRlc3Rfbm90X2luX3RleHRfbXVsdGlsaW5lIF9fX19fX19fX18K
IAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBv
YmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTIzNyw3ICsyMzUsNyBAQCBnZXQgb24gdGhlIHRlcm1p
bmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgICAgICBkZWYgdGVzdF9ub3RfaW5f
dGV4dF9tdWx0aWxpbmUoc2VsZik6CiAgICAgICAgICAgICB0ZXh0ID0gInNvbWUgbXVsdGlsaW5l
XG50ZXh0XG53aGljaFxuaW5jbHVkZXMgZm9vXG5hbmQgYVxudGFpbCIKICAgICA+ICAgICAgIGFz
c2VydCAiZm9vIiBub3QgaW4gdGV4dAotICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2Vy
dCAnZm9vJyBub3QgaW4gJ3NvbWUgbXVsdGlsaW5lXG50ZXh0XG53Li4ubmNsdWRlcyBmb29cbmFu
ZCBhXG50YWlsJworICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCAnZm9vJyBub3Qg
aW4gJ3NvbWUgbXVsdGlsLi4ubmFuZCBhXG50YWlsJwogICAgIEUgICAgICAgICAnZm9vJyBpcyBj
b250YWluZWQgaGVyZToKICAgICBFICAgICAgICAgICBzb21lIG11bHRpbGluZQogICAgIEUgICAg
ICAgICAgIHRleHQKQEAgLTI0OCw3ICsyNDYsNyBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2Ug
YXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUKICAgICBFICAgICAgICAgLi4uRnVsbCBvdXRw
dXQgdHJ1bmNhdGVkICgyIGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2JyB0byBzaG93CiAKLSAgICBm
YWlsdXJlX2RlbW8ucHk6OTM6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5Ojg0
OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0
aW9ucy50ZXN0X25vdF9pbl90ZXh0X3NpbmdsZSBfX19fX19fX19fX18KIAogICAgIHNlbGYgPSA8
ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3QgYXQgMHhkZWFk
YmVlZj4KQEAgLTI2MSw3ICsyNTksNyBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdv
cmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgICAgIHNpbmdsZSBmb28gbGluZQogICAgIEUg
ICAgICAgICA/ICAgICAgICArKysKIAotICAgIGZhaWx1cmVfZGVtby5weTo5NzogQXNzZXJ0aW9u
RXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6ODg6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19f
X19fIFRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucy50ZXN0X25vdF9pbl90ZXh0X3NpbmdsZV9s
b25nIF9fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2Vk
RXhwbGFuYXRpb25zIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtMjY5LDEyICsyNjcsMTIgQEAg
Z2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICAgICAg
ZGVmIHRlc3Rfbm90X2luX3RleHRfc2luZ2xlX2xvbmcoc2VsZik6CiAgICAgICAgICAgICB0ZXh0
ID0gImhlYWQgIiAqIDUwICsgImZvbyAiICsgInRhaWwgIiAqIDIwCiAgICAgPiAgICAgICBhc3Nl
cnQgImZvbyIgbm90IGluIHRleHQKLSAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQg
J2Zvbycgbm90IGluICdoZWFkIGhlYWQgaGVhZCBoZWFkIGhlYS4uLmFpbCB0YWlsIHRhaWwgdGFp
bCB0YWlsICcKKyAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJ2Zvbycgbm90IGlu
ICdoZWFkIGhlYWQgaC4uLmwgdGFpbCB0YWlsICcKICAgICBFICAgICAgICAgJ2ZvbycgaXMgY29u
dGFpbmVkIGhlcmU6CiAgICAgRSAgICAgICAgICAgaGVhZCBoZWFkIGZvbyB0YWlsIHRhaWwgdGFp
bCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwg
dGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwKICAgICBFICAgICAgICAgPyAgICAgICAgICAg
KysrCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTAxOiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1
cmVfZGVtby5weTo5MjogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX18gVGVzdFNwZWNpYWxpc2Vk
RXhwbGFuYXRpb25zLnRlc3Rfbm90X2luX3RleHRfc2luZ2xlX2xvbmdfdGVybSBfX19fX19fCiAK
ICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnMgb2Jq
ZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC0yODIsMTcgKzI4MCw3MCBAQCBnZXQgb24gdGhlIHRlcm1p
bmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgICAgICBkZWYgdGVzdF9ub3RfaW5f
dGV4dF9zaW5nbGVfbG9uZ190ZXJtKHNlbGYpOgogICAgICAgICAgICAgdGV4dCA9ICJoZWFkICIg
KiA1MCArICJmIiAqIDcwICsgInRhaWwgIiAqIDIwCiAgICAgPiAgICAgICBhc3NlcnQgImYiICog
NzAgbm90IGluIHRleHQKLSAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJ2ZmZmZm
ZmZmZmZmLi4uZmZmZmZmZmZmZmZmJyBub3QgaW4gJ2hlYWQgaGVhZCBoZS4uLmwgdGFpbCB0YWls
ICcKKyAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQgJ2ZmZmZmZmZmZmZmLi4uZmZm
ZmZmZmZmZmZmJyBub3QgaW4gJ2hlYWQgaGVhZCBoLi4ubCB0YWlsIHRhaWwgJwogICAgIEUgICAg
ICAgICAnZmZmZmZmZmZmZmZmZmZmZmZmLi4uZmZmZmZmZmZmZmZmZmZmZmZmZicgaXMgY29udGFp
bmVkIGhlcmU6CiAgICAgRSAgICAgICAgICAgaGVhZCBoZWFkIGZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ0YWlsIHRh
aWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWls
IHRhaWwgdGFpbCB0YWlsIHRhaWwgdGFpbCB0YWlsIHRhaWwKICAgICBFICAgICAgICAgPyAgICAg
ICAgICAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjEwNTogQXNzZXJ0aW9u
RXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6OTY6IEFzc2VydGlvbkVycm9yCisgICAgX19fX19f
X19fX19fX18gVGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfZGF0YWNsYXNzIF9f
X19fX19fX19fX19fXworCisgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdFNwZWNpYWxpc2Vk
RXhwbGFuYXRpb25zIG9iamVjdCBhdCAweGRlYWRiZWVmPgorCisgICAgICAgIGRlZiB0ZXN0X2Vx
X2RhdGFjbGFzcyhzZWxmKToKKyAgICAgICAgICAgIGZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRh
dGFjbGFzcworCisgICAgICAgICAgICBAZGF0YWNsYXNzCisgICAgICAgICAgICBjbGFzcyBGb286
CisgICAgICAgICAgICAgICAgYTogaW50CisgICAgICAgICAgICAgICAgYjogc3RyCisKKyAgICAg
ICAgICAgIGxlZnQgPSBGb28oMSwgImIiKQorICAgICAgICAgICAgcmlnaHQgPSBGb28oMSwgImMi
KQorICAgID4gICAgICAgYXNzZXJ0IGxlZnQgPT0gcmlnaHQKKyAgICBFICAgICAgIEFzc2VydGlv
bkVycm9yOiBhc3NlcnQgVGVzdFNwZWNpYWxpcy4uLm9vKGE9MSwgYj0nYicpID09IFRlc3RTcGVj
aWFsaXMuLi5vbyhhPTEsIGI9J2MnKQorICAgIEUKKyAgICBFICAgICAgICAgT21pdHRpbmcgMSBp
ZGVudGljYWwgaXRlbXMsIHVzZSAtdnYgdG8gc2hvdworICAgIEUgICAgICAgICBEaWZmZXJpbmcg
YXR0cmlidXRlczoKKyAgICBFICAgICAgICAgWydiJ10KKyAgICBFCisgICAgRSAgICAgICAgIERy
aWxsIGRvd24gaW50byBkaWZmZXJpbmcgYXR0cmlidXRlIGI6CisgICAgRSAgICAgICAgICAgYjog
J2InICE9ICdjJy4uLgorICAgIEUKKyAgICBFICAgICAgICAgLi4uRnVsbCBvdXRwdXQgdHJ1bmNh
dGVkICgzIGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2JyB0byBzaG93CisKKyAgICBmYWlsdXJlX2Rl
bW8ucHk6MTA4OiBBc3NlcnRpb25FcnJvcgorICAgIF9fX19fX19fX19fX19fX18gVGVzdFNwZWNp
YWxpc2VkRXhwbGFuYXRpb25zLnRlc3RfZXFfYXR0cnMgX19fX19fX19fX19fX19fX18KKworICAg
IHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9ucyBvYmplY3Qg
YXQgMHhkZWFkYmVlZj4KKworICAgICAgICBkZWYgdGVzdF9lcV9hdHRycyhzZWxmKToKKyAgICAg
ICAgICAgIGltcG9ydCBhdHRyCisKKyAgICAgICAgICAgIEBhdHRyLnMKKyAgICAgICAgICAgIGNs
YXNzIEZvbzoKKyAgICAgICAgICAgICAgICBhID0gYXR0ci5pYigpCisgICAgICAgICAgICAgICAg
YiA9IGF0dHIuaWIoKQorCisgICAgICAgICAgICBsZWZ0ID0gRm9vKDEsICJiIikKKyAgICAgICAg
ICAgIHJpZ2h0ID0gRm9vKDEsICJjIikKKyAgICA+ICAgICAgIGFzc2VydCBsZWZ0ID09IHJpZ2h0
CisgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IEZvbyhhPTEsIGI9J2InKSA9PSBG
b28oYT0xLCBiPSdjJykKKyAgICBFCisgICAgRSAgICAgICAgIE9taXR0aW5nIDEgaWRlbnRpY2Fs
IGl0ZW1zLCB1c2UgLXZ2IHRvIHNob3cKKyAgICBFICAgICAgICAgRGlmZmVyaW5nIGF0dHJpYnV0
ZXM6CisgICAgRSAgICAgICAgIFsnYiddCisgICAgRQorICAgIEUgICAgICAgICBEcmlsbCBkb3du
IGludG8gZGlmZmVyaW5nIGF0dHJpYnV0ZSBiOgorICAgIEUgICAgICAgICAgIGI6ICdiJyAhPSAn
YycuLi4KKyAgICBFCisgICAgRSAgICAgICAgIC4uLkZ1bGwgb3V0cHV0IHRydW5jYXRlZCAoMyBs
aW5lcyBoaWRkZW4pLCB1c2UgJy12dicgdG8gc2hvdworCisgICAgZmFpbHVyZV9kZW1vLnB5OjEy
MDogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gdGVz
dF9hdHRyaWJ1dGUgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICAgICAgZGVm
IHRlc3RfYXR0cmlidXRlKCk6Ci0KLSAgICAgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAg
ICAgICAgICAgY2xhc3MgRm9vOgogICAgICAgICAgICAgICAgIGIgPSAxCiAKICAgICAgICAgICAg
IGkgPSBGb28oKQpAQCAtMzAwLDEyICszNTEsMTEgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdl
IGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgIGFzc2VydCAxID09IDIKICAgICBF
ICAgICAgICArICB3aGVyZSAxID0gPGZhaWx1cmVfZGVtby50ZXN0X2F0dHJpYnV0ZS48bG9jYWxz
Pi5Gb28gb2JqZWN0IGF0IDB4ZGVhZGJlZWY+LmIKIAotICAgIGZhaWx1cmVfZGVtby5weToxMTQ6
IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjEyODogQXNzZXJ0aW9uRXJyb3IK
ICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfYXR0cmlidXRlX2luc3RhbmNlIF9f
X19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICAgICAgZGVmIHRlc3RfYXR0cmlidXRlX2lu
c3RhbmNlKCk6Ci0KLSAgICAgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAg
Y2xhc3MgRm9vOgogICAgICAgICAgICAgICAgIGIgPSAxCiAKICAgICA+ICAgICAgIGFzc2VydCBG
b28oKS5iID09IDIKQEAgLTMxMywxMyArMzYzLDExIEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3
ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICAgKyAgd2hlcmUgMSA9IDxmYWls
dXJlX2RlbW8udGVzdF9hdHRyaWJ1dGVfaW5zdGFuY2UuPGxvY2Fscz4uRm9vIG9iamVjdCBhdCAw
eGRlYWRiZWVmPi5iCiAgICAgRSAgICAgICAgKyAgICB3aGVyZSA8ZmFpbHVyZV9kZW1vLnRlc3Rf
YXR0cmlidXRlX2luc3RhbmNlLjxsb2NhbHM+LkZvbyBvYmplY3QgYXQgMHhkZWFkYmVlZj4gPSA8
Y2xhc3MgJ2ZhaWx1cmVfZGVtby50ZXN0X2F0dHJpYnV0ZV9pbnN0YW5jZS48bG9jYWxzPi5Gb28n
PigpCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTIyOiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1
cmVfZGVtby5weToxMzU6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX19f
X19fX18gdGVzdF9hdHRyaWJ1dGVfZmFpbHVyZSBfX19fX19fX19fX19fX19fX19fX19fX19fXwog
CiAgICAgICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9mYWlsdXJlKCk6Ci0KLSAgICAgICAgICAgIGNs
YXNzIEZvbyhvYmplY3QpOgotCisgICAgICAgICAgICBjbGFzcyBGb286CiAgICAgICAgICAgICAg
ICAgZGVmIF9nZXRfYihzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCJGYWlsZWQgdG8gZ2V0IGF0dHJpYiIpCiAKQEAgLTMyOCw3ICszNzYsNyBAQCBnZXQgb24gdGhl
IHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgICAgICAgICAgaSA9IEZv
bygpCiAgICAgPiAgICAgICBhc3NlcnQgaS5iID09IDIKIAotICAgIGZhaWx1cmVfZGVtby5weTox
MzU6CisgICAgZmFpbHVyZV9kZW1vLnB5OjE0NjoKICAgICBfIF8gXyBfIF8gXyBfIF8gXyBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8KIAog
ICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLnRlc3RfYXR0cmlidXRlX2ZhaWx1cmUuPGxvY2Fscz4u
Rm9vIG9iamVjdCBhdCAweGRlYWRiZWVmPgpAQCAtMzM3LDE1ICszODUsMTQgQEAgZ2V0IG9uIHRo
ZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICA+ICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigiRmFpbGVkIHRvIGdldCBhdHRyaWIiKQogICAgIEUgICAgICAgRXhjZXB0aW9u
OiBGYWlsZWQgdG8gZ2V0IGF0dHJpYgogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjEzMDogRXhjZXB0
aW9uCisgICAgZmFpbHVyZV9kZW1vLnB5OjE0MTogRXhjZXB0aW9uCiAgICAgX19fX19fX19fX19f
X19fX19fX19fX19fXyB0ZXN0X2F0dHJpYnV0ZV9tdWx0aXBsZSBfX19fX19fX19fX19fX19fX19f
X19fX19fXwogCiAgICAgICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9tdWx0aXBsZSgpOgotCi0gICAg
ICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGNsYXNzIEZvbzoKICAgICAg
ICAgICAgICAgICBiID0gMQogCi0gICAgICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAg
ICAgICAgIGNsYXNzIEJhcjoKICAgICAgICAgICAgICAgICBiID0gMgogCiAgICAgPiAgICAgICBh
c3NlcnQgRm9vKCkuYiA9PSBCYXIoKS5iCkBAIC0zNTUsMzEgKzQwMiwyNiBAQCBnZXQgb24gdGhl
IHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgICsgIGFu
ZCAgIDIgPSA8ZmFpbHVyZV9kZW1vLnRlc3RfYXR0cmlidXRlX211bHRpcGxlLjxsb2NhbHM+LkJh
ciBvYmplY3QgYXQgMHhkZWFkYmVlZj4uYgogICAgIEUgICAgICAgICsgICAgd2hlcmUgPGZhaWx1
cmVfZGVtby50ZXN0X2F0dHJpYnV0ZV9tdWx0aXBsZS48bG9jYWxzPi5CYXIgb2JqZWN0IGF0IDB4
ZGVhZGJlZWY+ID0gPGNsYXNzICdmYWlsdXJlX2RlbW8udGVzdF9hdHRyaWJ1dGVfbXVsdGlwbGUu
PGxvY2Fscz4uQmFyJz4oKQogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjE0NjogQXNzZXJ0aW9uRXJy
b3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MTU2OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19f
X19fX19fX19fX19fX19fX19fIFRlc3RSYWlzZXMudGVzdF9yYWlzZXMgX19fX19fX19fX19fX19f
X19fX19fX19fX18KIAogICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RSYWlzZXMgb2JqZWN0
IGF0IDB4ZGVhZGJlZWY+CiAKICAgICAgICAgZGVmIHRlc3RfcmFpc2VzKHNlbGYpOgotICAgICAg
ICAgICAgcyA9ICJxd2UiICAjIE5PUUEKLSAgICA+ICAgICAgIHJhaXNlcyhUeXBlRXJyb3IsICJp
bnQocykiKQotCi0gICAgZmFpbHVyZV9kZW1vLnB5OjE1NzoKLSAgICBfIF8gXyBfIF8gXyBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8KLQotICAgID4gICBpbnQocykKLSAgICBFICAgVmFsdWVFcnJvcjogaW52YWxpZCBsaXRlcmFs
IGZvciBpbnQoKSB3aXRoIGJhc2UgMTA6ICdxd2UnCisgICAgICAgICAgICBzID0gInF3ZSIKKyAg
ICA+ICAgICAgIHJhaXNlcyhUeXBlRXJyb3IsIGludCwgcykKKyAgICBFICAgICAgIFZhbHVlRXJy
b3I6IGludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlIDEwOiAncXdlJwogCi0gICAg
PDAtY29kZWdlbiAkUFlUSE9OX1BSRUZJWC9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMvX3B5
dGVzdC9weXRob25fYXBpLnB5OjYzND46MTogVmFsdWVFcnJvcgorICAgIGZhaWx1cmVfZGVtby5w
eToxNjY6IFZhbHVlRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19fIFRlc3RSYWlzZXMu
dGVzdF9yYWlzZXNfZG9lc250IF9fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0g
PGZhaWx1cmVfZGVtby5UZXN0UmFpc2VzIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCiAgICAgICAg
IGRlZiB0ZXN0X3JhaXNlc19kb2VzbnQoc2VsZik6Ci0gICAgPiAgICAgICByYWlzZXMoSU9FcnJv
ciwgImludCgnMycpIikKKyAgICA+ICAgICAgIHJhaXNlcyhPU0Vycm9yLCBpbnQsICIzIikKICAg
ICBFICAgICAgIEZhaWxlZDogRElEIE5PVCBSQUlTRSA8Y2xhc3MgJ09TRXJyb3InPgogCi0gICAg
ZmFpbHVyZV9kZW1vLnB5OjE2MDogRmFpbGVkCisgICAgZmFpbHVyZV9kZW1vLnB5OjE2OTogRmFp
bGVkCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX18gVGVzdFJhaXNlcy50ZXN0X3JhaXNl
IF9fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8u
VGVzdFJhaXNlcyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTM4OCw3ICs0MzAsNyBAQCBnZXQg
b24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgID4gICAgICAg
cmFpc2UgVmFsdWVFcnJvcigiZGVtbyBlcnJvciIpCiAgICAgRSAgICAgICBWYWx1ZUVycm9yOiBk
ZW1vIGVycm9yCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MTYzOiBWYWx1ZUVycm9yCisgICAgZmFp
bHVyZV9kZW1vLnB5OjE3MjogVmFsdWVFcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fX19f
XyBUZXN0UmFpc2VzLnRlc3RfdHVwbGVlcnJvciBfX19fX19fX19fX19fX19fX19fX19fX18KIAog
ICAgIHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RSYWlzZXMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+
CkBAIC0zOTcsMTggKzQzOSwxOCBAQCBnZXQgb24gdGhlIHRlcm1pbmFsIC0gd2UgYXJlIHdvcmtp
bmcgb24gdGhhdCk6OgogICAgID4gICAgICAgYSwgYiA9IFsxXSAgIyBOT1FBCiAgICAgRSAgICAg
ICBWYWx1ZUVycm9yOiBub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIDIsIGdv
dCAxKQogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjE2NjogVmFsdWVFcnJvcgorICAgIGZhaWx1cmVf
ZGVtby5weToxNzU6IFZhbHVlRXJyb3IKICAgICBfX19fX18gVGVzdFJhaXNlcy50ZXN0X3JlaW50
ZXJwcmV0X2ZhaWxzX3dpdGhfcHJpbnRfZm9yX3RoZV9mdW5fb2ZfaXQgX19fX19fCiAKICAgICBz
ZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0UmFpc2VzIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCiAg
ICAgICAgIGRlZiB0ZXN0X3JlaW50ZXJwcmV0X2ZhaWxzX3dpdGhfcHJpbnRfZm9yX3RoZV9mdW5f
b2ZfaXQoc2VsZik6CiAgICAgICAgICAgICBpdGVtcyA9IFsxLCAyLCAzXQotICAgICAgICAgICAg
cHJpbnQoIml0ZW1zIGlzICVyIiAlIGl0ZW1zKQorICAgICAgICAgICAgcHJpbnQoIml0ZW1zIGlz
IHshcn0iLmZvcm1hdChpdGVtcykpCiAgICAgPiAgICAgICBhLCBiID0gaXRlbXMucG9wKCkKLSAg
ICBFICAgICAgIFR5cGVFcnJvcjogJ2ludCcgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZQorICAgIEUg
ICAgICAgVHlwZUVycm9yOiBjYW5ub3QgdW5wYWNrIG5vbi1pdGVyYWJsZSBpbnQgb2JqZWN0CiAK
LSAgICBmYWlsdXJlX2RlbW8ucHk6MTcxOiBUeXBlRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6
MTgwOiBUeXBlRXJyb3IKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FwdHVyZWQg
c3Rkb3V0IGNhbGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgaXRlbXMgaXMgWzEs
IDIsIDNdCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fIFRlc3RSYWlzZXMudGVzdF9zb21l
X2Vycm9yIF9fX19fX19fX19fX19fX19fX19fX19fXwpAQCAtNDE5LDM1ICs0NjEsMzQgQEAgZ2V0
IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICA+ICAgICAg
IGlmIG5hbWVub3RleGk6ICAjIE5PUUEKICAgICBFICAgICAgIE5hbWVFcnJvcjogbmFtZSAnbmFt
ZW5vdGV4aScgaXMgbm90IGRlZmluZWQKIAotICAgIGZhaWx1cmVfZGVtby5weToxNzQ6IE5hbWVF
cnJvcgorICAgIGZhaWx1cmVfZGVtby5weToxODM6IE5hbWVFcnJvcgogICAgIF9fX19fX19fX19f
X19fX19fX19fIHRlc3RfZHluYW1pY19jb21waWxlX3Nob3dzX25pY2VseSBfX19fX19fX19fX19f
X19fX19fX18KIAogICAgICAgICBkZWYgdGVzdF9keW5hbWljX2NvbXBpbGVfc2hvd3NfbmljZWx5
KCk6Ci0gICAgICAgICAgICBpbXBvcnQgaW1wCisgICAgICAgICAgICBpbXBvcnQgaW1wb3J0bGli
LnV0aWwKICAgICAgICAgICAgIGltcG9ydCBzeXMKIAogICAgICAgICAgICAgc3JjID0gImRlZiBm
b28oKTpcbiBhc3NlcnQgMSA9PSAwXG4iCiAgICAgICAgICAgICBuYW1lID0gImFiYy0xMjMiCi0g
ICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQotICAgICAgICAgICAgY29k
ZSA9IF9weXRlc3QuX2NvZGUuY29tcGlsZShzcmMsIG5hbWUsICJleGVjIikKLSAgICAgICAgICAg
IHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICAgICAgc3Bl
YyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9sb2FkZXIobmFtZSwgbG9hZGVyPU5vbmUpCisg
ICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMp
CisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShzcmMsIG5hbWUsICJleGVjIikKKyAgICAgICAg
ICAgIGV4ZWMoY29kZSwgbW9kdWxlLl9fZGljdF9fKQogICAgICAgICAgICAgc3lzLm1vZHVsZXNb
bmFtZV0gPSBtb2R1bGUKICAgICA+ICAgICAgIG1vZHVsZS5mb28oKQogCi0gICAgZmFpbHVyZV9k
ZW1vLnB5OjE5MjoKKyAgICBmYWlsdXJlX2RlbW8ucHk6MjAyOgogICAgIF8gXyBfIF8gXyBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXwogCi0gICAgICAgIGRlZiBmb28oKToKLSAgICA+ICAgIGFzc2VydCAxID09IDAKLSAgICBF
ICAgIEFzc2VydGlvbkVycm9yCisgICAgPiAgID8/PworICAgIEUgICBBc3NlcnRpb25FcnJvcgog
Ci0gICAgPDItY29kZWdlbiAnYWJjLTEyMycgJFJFR0VORE9DX1RNUERJUi9hc3NlcnRpb24vZmFp
bHVyZV9kZW1vLnB5OjE4OT46MjogQXNzZXJ0aW9uRXJyb3IKKyAgICBhYmMtMTIzOjI6IEFzc2Vy
dGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX18gVGVzdE1vcmVFcnJvcnMudGVzdF9j
b21wbGV4X2Vycm9yIF9fX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJl
X2RlbW8uVGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAKICAgICAgICAgZGVm
IHRlc3RfY29tcGxleF9lcnJvcihzZWxmKToKLQogICAgICAgICAgICAgZGVmIGYoKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gNDQKIApAQCAtNDU2LDkgKzQ5Nyw5IEBAIGdldCBvbiB0aGUgdGVy
bWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAKICAgICA+ICAgICAgIHNvbWVmdW5j
KGYoKSwgZygpKQogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjIwNToKKyAgICBmYWlsdXJlX2RlbW8u
cHk6MjEzOgogICAgIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8g
XyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXwotICAgIGZhaWx1cmVfZGVtby5weToxMTog
aW4gc29tZWZ1bmMKKyAgICBmYWlsdXJlX2RlbW8ucHk6MTA6IGluIHNvbWVmdW5jCiAgICAgICAg
IG90aGVyZnVuYyh4LCB5KQogICAgIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXwogCkBAIC00NjgsNyArNTA5
LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAg
ICA+ICAgICAgIGFzc2VydCBhID09IGIKICAgICBFICAgICAgIGFzc2VydCA0NCA9PSA0MwogCi0g
ICAgZmFpbHVyZV9kZW1vLnB5Ojc6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5
OjY6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fXyBUZXN0TW9yZUVycm9y
cy50ZXN0X3oxX3VucGFja19lcnJvciBfX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9
IDxmYWlsdXJlX2RlbW8uVGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC00
NzgsNyArNTE5LDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRo
YXQpOjoKICAgICA+ICAgICAgIGEsIGIgPSBpdGVtcwogICAgIEUgICAgICAgVmFsdWVFcnJvcjog
bm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAyLCBnb3QgMCkKIAotICAgIGZh
aWx1cmVfZGVtby5weToyMDk6IFZhbHVlRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8ucHk6MjE3OiBW
YWx1ZUVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX18gVGVzdE1vcmVFcnJvcnMudGVzdF96
Ml90eXBlX2Vycm9yIF9fX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJl
X2RlbW8uVGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC00ODYsOSArNTI3
LDkgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAg
ICAgICAgZGVmIHRlc3RfejJfdHlwZV9lcnJvcihzZWxmKToKICAgICAgICAgICAgIGl0ZW1zID0g
MwogICAgID4gICAgICAgYSwgYiA9IGl0ZW1zCi0gICAgRSAgICAgICBUeXBlRXJyb3I6ICdpbnQn
IG9iamVjdCBpcyBub3QgaXRlcmFibGUKKyAgICBFICAgICAgIFR5cGVFcnJvcjogY2Fubm90IHVu
cGFjayBub24taXRlcmFibGUgaW50IG9iamVjdAogCi0gICAgZmFpbHVyZV9kZW1vLnB5OjIxMzog
VHlwZUVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjIyMTogVHlwZUVycm9yCiAgICAgX19fX19f
X19fX19fX19fX19fX19fXyBUZXN0TW9yZUVycm9ycy50ZXN0X3N0YXJ0c3dpdGggX19fX19fX19f
X19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdE1vcmVFcnJvcnMg
b2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC01MDEsMTMgKzU0MiwxMiBAQCBnZXQgb24gdGhlIHRl
cm1pbmFsIC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgICsgIHdoZXJl
IEZhbHNlID0gPGJ1aWx0LWluIG1ldGhvZCBzdGFydHN3aXRoIG9mIHN0ciBvYmplY3QgYXQgMHhk
ZWFkYmVlZj4oJzQ1NicpCiAgICAgRSAgICAgICAgKyAgICB3aGVyZSA8YnVpbHQtaW4gbWV0aG9k
IHN0YXJ0c3dpdGggb2Ygc3RyIG9iamVjdCBhdCAweGRlYWRiZWVmPiA9ICcxMjMnLnN0YXJ0c3dp
dGgKIAotICAgIGZhaWx1cmVfZGVtby5weToyMTg6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVy
ZV9kZW1vLnB5OjIyNjogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX18gVGVz
dE1vcmVFcnJvcnMudGVzdF9zdGFydHN3aXRoX25lc3RlZCBfX19fX19fX19fX19fX19fX19fCiAK
ICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0TW9yZUVycm9ycyBvYmplY3QgYXQgMHhkZWFk
YmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9zdGFydHN3aXRoX25lc3RlZChzZWxmKToKLQogICAg
ICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICAgICByZXR1cm4gIjEyMyIKIApAQCAtNTIx
LDcgKzU2MSw3IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0
KTo6CiAgICAgRSAgICAgICAgKyAgICAgIHdoZXJlICcxMjMnID0gPGZ1bmN0aW9uIFRlc3RNb3Jl
RXJyb3JzLnRlc3Rfc3RhcnRzd2l0aF9uZXN0ZWQuPGxvY2Fscz4uZiBhdCAweGRlYWRiZWVmPigp
CiAgICAgRSAgICAgICAgKyAgICBhbmQgICAnNDU2JyA9IDxmdW5jdGlvbiBUZXN0TW9yZUVycm9y
cy50ZXN0X3N0YXJ0c3dpdGhfbmVzdGVkLjxsb2NhbHM+LmcgYXQgMHhkZWFkYmVlZj4oKQogCi0g
ICAgZmFpbHVyZV9kZW1vLnB5OjIyODogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2RlbW8u
cHk6MjM1OiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fXyBUZXN0TW9y
ZUVycm9ycy50ZXN0X2dsb2JhbF9mdW5jIF9fX19fX19fX19fX19fX19fX19fX18KIAogICAgIHNl
bGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RNb3JlRXJyb3JzIG9iamVjdCBhdCAweGRlYWRiZWVmPgpA
QCAtNTMyLDcgKzU3Miw3IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBv
biB0aGF0KTo6CiAgICAgRSAgICAgICAgKyAgd2hlcmUgRmFsc2UgPSBpc2luc3RhbmNlKDQzLCBm
bG9hdCkKICAgICBFICAgICAgICArICAgIHdoZXJlIDQzID0gZ2xvYmYoNDIpCiAKLSAgICBmYWls
dXJlX2RlbW8ucHk6MjMxOiBBc3NlcnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToyMzg6
IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19fX19fX19fX19fX19fX19fX18gVGVzdE1vcmVFcnJv
cnMudGVzdF9pbnN0YW5jZSBfX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxm
YWlsdXJlX2RlbW8uVGVzdE1vcmVFcnJvcnMgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CkBAIC01NDMs
NyArNTgzLDcgQEAgZ2V0IG9uIHRoZSB0ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQp
OjoKICAgICBFICAgICAgIGFzc2VydCA0MiAhPSA0MgogICAgIEUgICAgICAgICsgIHdoZXJlIDQy
ID0gPGZhaWx1cmVfZGVtby5UZXN0TW9yZUVycm9ycyBvYmplY3QgYXQgMHhkZWFkYmVlZj4ueAog
Ci0gICAgZmFpbHVyZV9kZW1vLnB5OjIzNTogQXNzZXJ0aW9uRXJyb3IKKyAgICBmYWlsdXJlX2Rl
bW8ucHk6MjQyOiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fIFRl
c3RNb3JlRXJyb3JzLnRlc3RfY29tcGFyZSBfX19fX19fX19fX19fX19fX19fX19fX18KIAogICAg
IHNlbGYgPSA8ZmFpbHVyZV9kZW1vLlRlc3RNb3JlRXJyb3JzIG9iamVjdCBhdCAweGRlYWRiZWVm
PgpAQCAtNTUzLDcgKzU5Myw3IEBAIGdldCBvbiB0aGUgdGVybWluYWwgLSB3ZSBhcmUgd29ya2lu
ZyBvbiB0aGF0KTo6CiAgICAgRSAgICAgICBhc3NlcnQgMTEgPCA1CiAgICAgRSAgICAgICAgKyAg
d2hlcmUgMTEgPSBnbG9iZigxMCkKIAotICAgIGZhaWx1cmVfZGVtby5weToyMzg6IEFzc2VydGlv
bkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjI0NTogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19f
X19fX19fX19fX19fX19fX18gVGVzdE1vcmVFcnJvcnMudGVzdF90cnlfZmluYWxseSBfX19fX19f
X19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1cmVfZGVtby5UZXN0TW9yZUVycm9y
cyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KQEAgLTU2NCwxNCArNjA0LDEzIEBAIGdldCBvbiB0aGUg
dGVybWluYWwgLSB3ZSBhcmUgd29ya2luZyBvbiB0aGF0KTo6CiAgICAgPiAgICAgICAgICAgYXNz
ZXJ0IHggPT0gMAogICAgIEUgICAgICAgICAgIGFzc2VydCAxID09IDAKIAotICAgIGZhaWx1cmVf
ZGVtby5weToyNDM6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjI1MDogQXNz
ZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fIFRlc3RDdXN0b21Bc3NlcnRNc2cu
dGVzdF9zaW5nbGVfbGluZSBfX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1
cmVfZGVtby5UZXN0Q3VzdG9tQXNzZXJ0TXNnIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCiAgICAg
ICAgIGRlZiB0ZXN0X3NpbmdsZV9saW5lKHNlbGYpOgotCi0gICAgICAgICAgICBjbGFzcyBBKG9i
amVjdCk6CisgICAgICAgICAgICBjbGFzcyBBOgogICAgICAgICAgICAgICAgIGEgPSAxCiAKICAg
ICAgICAgICAgIGIgPSAyCkBAIC01ODAsMzQgKzYxOSwzMiBAQCBnZXQgb24gdGhlIHRlcm1pbmFs
IC0gd2UgYXJlIHdvcmtpbmcgb24gdGhhdCk6OgogICAgIEUgICAgICAgYXNzZXJ0IDEgPT0gMgog
ICAgIEUgICAgICAgICsgIHdoZXJlIDEgPSA8Y2xhc3MgJ2ZhaWx1cmVfZGVtby5UZXN0Q3VzdG9t
QXNzZXJ0TXNnLnRlc3Rfc2luZ2xlX2xpbmUuPGxvY2Fscz4uQSc+LmEKIAotICAgIGZhaWx1cmVf
ZGVtby5weToyNTY6IEFzc2VydGlvbkVycm9yCisgICAgZmFpbHVyZV9kZW1vLnB5OjI2MTogQXNz
ZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fXyBUZXN0Q3VzdG9tQXNzZXJ0TXNn
LnRlc3RfbXVsdGlsaW5lIF9fX19fX19fX19fX19fX19fX19fCiAKICAgICBzZWxmID0gPGZhaWx1
cmVfZGVtby5UZXN0Q3VzdG9tQXNzZXJ0TXNnIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCiAgICAg
ICAgIGRlZiB0ZXN0X211bHRpbGluZShzZWxmKToKLQotICAgICAgICAgICAgY2xhc3MgQShvYmpl
Y3QpOgorICAgICAgICAgICAgY2xhc3MgQToKICAgICAgICAgICAgICAgICBhID0gMQogCiAgICAg
ICAgICAgICBiID0gMgogICAgID4gICAgICAgYXNzZXJ0ICgKICAgICAgICAgICAgICAgICBBLmEg
PT0gYgotICAgICAgICAgICAgKSwgIkEuYSBhcHBlYXJzIG5vdCB0byBiZSBiXG4iICJvciBkb2Vz
IG5vdCBhcHBlYXIgdG8gYmUgYlxub25lIG9mIHRob3NlIgorICAgICAgICAgICAgKSwgIkEuYSBh
cHBlYXJzIG5vdCB0byBiZSBiXG5vciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYlxub25lIG9mIHRo
b3NlIgogICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEEuYSBhcHBlYXJzIG5vdCB0byBiZSBi
CiAgICAgRSAgICAgICAgIG9yIGRvZXMgbm90IGFwcGVhciB0byBiZSBiCiAgICAgRSAgICAgICAg
IG9uZSBvZiB0aG9zZQogICAgIEUgICAgICAgYXNzZXJ0IDEgPT0gMgogICAgIEUgICAgICAgICsg
IHdoZXJlIDEgPSA8Y2xhc3MgJ2ZhaWx1cmVfZGVtby5UZXN0Q3VzdG9tQXNzZXJ0TXNnLnRlc3Rf
bXVsdGlsaW5lLjxsb2NhbHM+LkEnPi5hCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6MjY0OiBBc3Nl
cnRpb25FcnJvcgorICAgIGZhaWx1cmVfZGVtby5weToyNjg6IEFzc2VydGlvbkVycm9yCiAgICAg
X19fX19fX19fX19fX19fX19fXyBUZXN0Q3VzdG9tQXNzZXJ0TXNnLnRlc3RfY3VzdG9tX3JlcHIg
X19fX19fX19fX19fX19fX19fXwogCiAgICAgc2VsZiA9IDxmYWlsdXJlX2RlbW8uVGVzdEN1c3Rv
bUFzc2VydE1zZyBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAogICAgICAgICBkZWYgdGVzdF9jdXN0
b21fcmVwcihzZWxmKToKLQotICAgICAgICAgICAgY2xhc3MgSlNPTihvYmplY3QpOgorICAgICAg
ICAgICAgY2xhc3MgSlNPTjoKICAgICAgICAgICAgICAgICBhID0gMQogCiAgICAgICAgICAgICAg
ICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtNjIzLDExICs2NjAsNTAgQEAgZ2V0IG9uIHRoZSB0
ZXJtaW5hbCAtIHdlIGFyZSB3b3JraW5nIG9uIHRoYXQpOjoKICAgICBFICAgICAgIGFzc2VydCAx
ID09IDIKICAgICBFICAgICAgICArICB3aGVyZSAxID0gVGhpcyBpcyBKU09OXG57XG4gICdmb28n
OiAnYmFyJ1xufS5hCiAKLSAgICBmYWlsdXJlX2RlbW8ucHk6Mjc4OiBBc3NlcnRpb25FcnJvcgot
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IHdhcm5pbmdzIHN1bW1hcnkgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICA8dW5kZXRlcm1pbmVkIGxvY2F0aW9uPgotICAg
ICAgTWV0YWZ1bmMuYWRkY2FsbCBpcyBkZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVt
b3ZlZCBpbiBweXRlc3QgNC4wLgotICAgICAgUGxlYXNlIHVzZSBNZXRhZnVuYy5wYXJhbWV0cml6
ZSBpbnN0ZWFkLgotCi0gICAgLS0gRG9jczogaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVz
dC93YXJuaW5ncy5odG1sCi0gICAgPT09PT09PT09PT09PT09PT09IDQyIGZhaWxlZCwgMSB3YXJu
aW5ncyBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PQorICAgIGZhaWx1cmVfZGVt
by5weToyODE6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBz
aG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZB
SUxFRCBmYWlsdXJlX2RlbW8ucHk6OnRlc3RfZ2VuZXJhdGl2ZVszLTZdIC0gYXNzZXJ0ICgzICog
MikgPCA2CisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdEZhaWxpbmc6OnRlc3Rfc2lt
cGxlIC0gYXNzZXJ0IDQyID09IDQzCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdEZh
aWxpbmc6OnRlc3Rfc2ltcGxlX211bHRpbGluZSAtIGFzc2VydCA0MiA9PSA1NAorICAgIEZBSUxF
RCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RGYWlsaW5nOjp0ZXN0X25vdCAtIGFzc2VydCBub3QgNDIK
KyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6
OnRlc3RfZXFfdGV4dCAtIEFzc2VyLi4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVz
dFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X2VxX3NpbWlsYXJfdGV4dAorICAgIEZBSUxF
RCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9uczo6dGVzdF9lcV9t
dWx0aWxpbmVfdGV4dAorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNl
ZEV4cGxhbmF0aW9uczo6dGVzdF9lcV9sb25nX3RleHQgLSAuLi4KKyAgICBGQUlMRUQgZmFpbHVy
ZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRlc3RfZXFfbG9uZ190ZXh0
X211bHRpbGluZQorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNlZEV4
cGxhbmF0aW9uczo6dGVzdF9lcV9saXN0IC0gYXNzZXIuLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9k
ZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRlc3RfZXFfbGlzdF9sb25nIC0g
Li4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRp
b25zOjp0ZXN0X2VxX2RpY3QgLSBBc3Nlci4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6
OlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9uczo6dGVzdF9lcV9zZXQgLSBBc3NlcnQuLi4KKyAg
ICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRl
c3RfZXFfbG9uZ2VyX2xpc3QKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lh
bGlzZWRFeHBsYW5hdGlvbnM6OnRlc3RfaW5fbGlzdCAtIGFzc2VyLi4uCisgICAgRkFJTEVEIGZh
aWx1cmVfZGVtby5weTo6VGVzdFNwZWNpYWxpc2VkRXhwbGFuYXRpb25zOjp0ZXN0X25vdF9pbl90
ZXh0X211bHRpbGluZQorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNl
ZEV4cGxhbmF0aW9uczo6dGVzdF9ub3RfaW5fdGV4dF9zaW5nbGUKKyAgICBGQUlMRUQgZmFpbHVy
ZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRFeHBsYW5hdGlvbnM6OnRlc3Rfbm90X2luX3RleHRf
c2luZ2xlX2xvbmcKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlzZWRF
eHBsYW5hdGlvbnM6OnRlc3Rfbm90X2luX3RleHRfc2luZ2xlX2xvbmdfdGVybQorICAgIEZBSUxF
RCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RTcGVjaWFsaXNlZEV4cGxhbmF0aW9uczo6dGVzdF9lcV9k
YXRhY2xhc3MgLSAuLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0U3BlY2lhbGlz
ZWRFeHBsYW5hdGlvbnM6OnRlc3RfZXFfYXR0cnMgLSBBc3NlLi4uCisgICAgRkFJTEVEIGZhaWx1
cmVfZGVtby5weTo6dGVzdF9hdHRyaWJ1dGUgLSBhc3NlcnQgMSA9PSAyCisgICAgRkFJTEVEIGZh
aWx1cmVfZGVtby5weTo6dGVzdF9hdHRyaWJ1dGVfaW5zdGFuY2UgLSBBc3NlcnRpb25FcnJvcjog
YXNzZXJ0IC4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OnRlc3RfYXR0cmlidXRlX2Zh
aWx1cmUgLSBFeGNlcHRpb246IEZhaWxlZCB0byBnZXQuLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9k
ZW1vLnB5Ojp0ZXN0X2F0dHJpYnV0ZV9tdWx0aXBsZSAtIEFzc2VydGlvbkVycm9yOiBhc3NlcnQg
Li4uCisgICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdFJhaXNlczo6dGVzdF9yYWlzZXMg
LSBWYWx1ZUVycm9yOiBpbnZhbGlkIGxpdC4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6
OlRlc3RSYWlzZXM6OnRlc3RfcmFpc2VzX2RvZXNudCAtIEZhaWxlZDogRElEIE5PVCAuLi4KKyAg
ICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0UmFpc2VzOjp0ZXN0X3JhaXNlIC0gVmFsdWVF
cnJvcjogZGVtbyBlcnJvcgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RSYWlzZXM6
OnRlc3RfdHVwbGVlcnJvciAtIFZhbHVlRXJyb3I6IG5vdCBlbm8uLi4KKyAgICBGQUlMRUQgZmFp
bHVyZV9kZW1vLnB5OjpUZXN0UmFpc2VzOjp0ZXN0X3JlaW50ZXJwcmV0X2ZhaWxzX3dpdGhfcHJp
bnRfZm9yX3RoZV9mdW5fb2ZfaXQKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0UmFp
c2VzOjp0ZXN0X3NvbWVfZXJyb3IgLSBOYW1lRXJyb3I6IG5hbWUgJ25hLi4uCisgICAgRkFJTEVE
IGZhaWx1cmVfZGVtby5weTo6dGVzdF9keW5hbWljX2NvbXBpbGVfc2hvd3NfbmljZWx5IC0gQXNz
ZXJ0aW9uRXJyb3IKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0TW9yZUVycm9yczo6
dGVzdF9jb21wbGV4X2Vycm9yIC0gYXNzZXJ0IDQ0ID09IDQzCisgICAgRkFJTEVEIGZhaWx1cmVf
ZGVtby5weTo6VGVzdE1vcmVFcnJvcnM6OnRlc3RfejFfdW5wYWNrX2Vycm9yIC0gVmFsdWVFcnJv
ci4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RNb3JlRXJyb3JzOjp0ZXN0X3oy
X3R5cGVfZXJyb3IgLSBUeXBlRXJyb3I6IGMuLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5
OjpUZXN0TW9yZUVycm9yczo6dGVzdF9zdGFydHN3aXRoIC0gQXNzZXJ0aW9uRXJyb3I6Li4uCisg
ICAgRkFJTEVEIGZhaWx1cmVfZGVtby5weTo6VGVzdE1vcmVFcnJvcnM6OnRlc3Rfc3RhcnRzd2l0
aF9uZXN0ZWQgLSBBc3NlcnRpby4uLgorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RN
b3JlRXJyb3JzOjp0ZXN0X2dsb2JhbF9mdW5jIC0gYXNzZXJ0IEZhbHNlCisgICAgRkFJTEVEIGZh
aWx1cmVfZGVtby5weTo6VGVzdE1vcmVFcnJvcnM6OnRlc3RfaW5zdGFuY2UgLSBhc3NlcnQgNDIg
IT0gNDIKKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0TW9yZUVycm9yczo6dGVzdF9j
b21wYXJlIC0gYXNzZXJ0IDExIDwgNQorICAgIEZBSUxFRCBmYWlsdXJlX2RlbW8ucHk6OlRlc3RN
b3JlRXJyb3JzOjp0ZXN0X3RyeV9maW5hbGx5IC0gYXNzZXJ0IDEgPT0gMAorICAgIEZBSUxFRCBm
YWlsdXJlX2RlbW8ucHk6OlRlc3RDdXN0b21Bc3NlcnRNc2c6OnRlc3Rfc2luZ2xlX2xpbmUgLSBB
c3NlcnRpb24uLi4KKyAgICBGQUlMRUQgZmFpbHVyZV9kZW1vLnB5OjpUZXN0Q3VzdG9tQXNzZXJ0
TXNnOjp0ZXN0X211bHRpbGluZSAtIEFzc2VydGlvbkVyLi4uCisgICAgRkFJTEVEIGZhaWx1cmVf
ZGVtby5weTo6VGVzdEN1c3RvbUFzc2VydE1zZzo6dGVzdF9jdXN0b21fcmVwciAtIEFzc2VydGlv
bi4uLgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gNDQgZmFpbGVkIGluIDAuMTJz
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9leGFtcGxlL3NpbXBsZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9zaW1w
bGUucnN0CmluZGV4IDE4MDYzN2FlOTk0Yi4uZTk5NTJkYWQ0ZDdjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9zaW1wbGUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9leGFtcGxlL3NpbXBsZS5yc3QKQEAgLTMsNiArMyw1MCBAQAogQmFzaWMgcGF0dGVybnMgYW5k
IGV4YW1wbGVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiAKK0hvdyB0byBjaGFuZ2UgY29tbWFuZCBsaW5lIG9wdGlvbnMgZGVmYXVs
dHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgY2Fu
IGJlIHRlZGlvdXMgdG8gdHlwZSB0aGUgc2FtZSBzZXJpZXMgb2YgY29tbWFuZCBsaW5lIG9wdGlv
bnMKK2V2ZXJ5IHRpbWUgeW91IHVzZSBgYHB5dGVzdGBgLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBh
bHdheXMgd2FudCB0byBzZWUKK2RldGFpbGVkIGluZm8gb24gc2tpcHBlZCBhbmQgeGZhaWxlZCB0
ZXN0cywgYXMgd2VsbCBhcyBoYXZlIHRlcnNlciAiZG90IgorcHJvZ3Jlc3Mgb3V0cHV0LCB5b3Ug
Y2FuIHdyaXRlIGl0IGludG8gYSBjb25maWd1cmF0aW9uIGZpbGU6CisKKy4uIGNvZGUtYmxvY2s6
OiBpbmkKKworICAgICMgY29udGVudCBvZiBweXRlc3QuaW5pCisgICAgW3B5dGVzdF0KKyAgICBh
ZGRvcHRzID0gLXJhIC1xCisKKworQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQgYSBgYFBZVEVT
VF9BRERPUFRTYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYWRkIGNvbW1hbmQKK2xpbmUgb3B0
aW9ucyB3aGlsZSB0aGUgZW52aXJvbm1lbnQgaXMgaW4gdXNlOgorCisuLiBjb2RlLWJsb2NrOjog
YmFzaAorCisgICAgZXhwb3J0IFBZVEVTVF9BRERPUFRTPSItdiIKKworSGVyZSdzIGhvdyB0aGUg
Y29tbWFuZC1saW5lIGlzIGJ1aWx0IGluIHRoZSBwcmVzZW5jZSBvZiBgYGFkZG9wdHNgYCBvciB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICA8
cHl0ZXN0LmluaTphZGRvcHRzPiAkUFlURVNUX0FERE9QVFMgPGV4dHJhIGNvbW1hbmQtbGluZSBh
cmd1bWVudHM+CisKK1NvIGlmIHRoZSB1c2VyIGV4ZWN1dGVzIGluIHRoZSBjb21tYW5kLWxpbmU6
CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICBweXRlc3QgLW0gc2xvdworCitUaGUgYWN0
dWFsIGNvbW1hbmQgbGluZSBleGVjdXRlZCBpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKwor
ICAgIHB5dGVzdCAtcmEgLXEgLXYgLW0gc2xvdworCitOb3RlIHRoYXQgYXMgdXN1YWwgZm9yIG90
aGVyIGNvbW1hbmQtbGluZSBhcHBsaWNhdGlvbnMsIGluIGNhc2Ugb2YgY29uZmxpY3Rpbmcgb3B0
aW9ucyB0aGUgbGFzdCBvbmUgd2lucywgc28gdGhlIGV4YW1wbGUKK2Fib3ZlIHdpbGwgc2hvdyB2
ZXJib3NlIG91dHB1dCBiZWNhdXNlIGBgLXZgYCBvdmVyd3JpdGVzIGBgLXFgYC4KKworCiAuLiBf
cmVxdWVzdCBleGFtcGxlOgogCiBQYXNzIGRpZmZlcmVudCB2YWx1ZXMgdG8gYSB0ZXN0IGZ1bmN0
aW9uLCBkZXBlbmRpbmcgb24gY29tbWFuZCBsaW5lIG9wdGlvbnMKQEAgLTQzLDcgKzg3LDkgQEAg
cHJvdmlkZSB0aGUgYGBjbWRvcHRgYCB0aHJvdWdoIGEgOnJlZjpgZml4dHVyZSBmdW5jdGlvbiA8
Zml4dHVyZSBmdW5jdGlvbj5gOgogICAgIGRlZiBjbWRvcHQocmVxdWVzdCk6CiAgICAgICAgIHJl
dHVybiByZXF1ZXN0LmNvbmZpZy5nZXRvcHRpb24oIi0tY21kb3B0IikKIAotTGV0J3MgcnVuIHRo
aXMgd2l0aG91dCBzdXBwbHlpbmcgb3VyIG5ldyBvcHRpb246OgorTGV0J3MgcnVuIHRoaXMgd2l0
aG91dCBzdXBwbHlpbmcgb3VyIG5ldyBvcHRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QK
IAogICAgICQgcHl0ZXN0IC1xIHRlc3Rfc2FtcGxlLnB5CiAgICAgRiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVd
CkBAIC02Myw5ICsxMDksMTMgQEAgTGV0J3MgcnVuIHRoaXMgd2l0aG91dCBzdXBwbHlpbmcgb3Vy
IG5ldyBvcHRpb246OgogICAgIHRlc3Rfc2FtcGxlLnB5OjY6IEFzc2VydGlvbkVycm9yCiAgICAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0ZG91dCBjYWxsIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIGZpcnN0Ci0gICAgMSBmYWlsZWQgaW4gMC4xMiBzZWNv
bmRzCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5m
byA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X3NhbXBsZS5weTo6
dGVzdF9hbnN3ZXIgLSBhc3NlcnQgMAorICAgIDEgZmFpbGVkIGluIDAuMTJzCiAKLUFuZCBub3cg
d2l0aCBzdXBwbHlpbmcgYSBjb21tYW5kIGxpbmUgb3B0aW9uOjoKK0FuZCBub3cgd2l0aCBzdXBw
bHlpbmcgYSBjb21tYW5kIGxpbmUgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAK
ICAgICAkIHB5dGVzdCAtcSAtLWNtZG9wdD10eXBlMgogICAgIEYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpA
QCAtODUsNyArMTM1LDkgQEAgQW5kIG5vdyB3aXRoIHN1cHBseWluZyBhIGNvbW1hbmQgbGluZSBv
cHRpb246OgogICAgIHRlc3Rfc2FtcGxlLnB5OjY6IEFzc2VydGlvbkVycm9yCiAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1cmVkIHN0ZG91dCBjYWxsIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogICAgIHNlY29uZAotICAgIDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcwor
ICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09
PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9zYW1wbGUucHk6OnRlc3Rf
YW5zd2VyIC0gYXNzZXJ0IDAKKyAgICAxIGZhaWxlZCBpbiAwLjEycwogCiBZb3UgY2FuIHNlZSB0
aGF0IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uIGFycml2ZWQgaW4gb3VyIHRlc3QuICBUaGlzCiBj
b21wbGV0ZXMgdGhlIGJhc2ljIHBhdHRlcm4uICBIb3dldmVyLCBvbmUgb2Z0ZW4gcmF0aGVyIHdh
bnRzIHRvIHByb2Nlc3MKQEAgLTEwMyw3ICsxNTUsNyBAQCB0aGUgY29tbWFuZCBsaW5lIGFyZ3Vt
ZW50cyBiZWZvcmUgdGhleSBnZXQgcHJvY2Vzc2VkOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKLSAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKKyAgICAjIHNldHVwdG9vbHMgcGx1Z2lu
CiAgICAgaW1wb3J0IHN5cwogCiAKQEAgLTExNywxNSArMTY5LDE4IEBAIHRoZSBjb21tYW5kIGxp
bmUgYXJndW1lbnRzIGJlZm9yZSB0aGV5IGdldCBwcm9jZXNzZWQ6CiBJZiB5b3UgaGF2ZSB0aGUg
YHhkaXN0IHBsdWdpbiA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC14ZGlzdC8+YF8g
aW5zdGFsbGVkCiB5b3Ugd2lsbCBub3cgYWx3YXlzIHBlcmZvcm0gdGVzdCBydW5zIHVzaW5nIGEg
bnVtYmVyCiBvZiBzdWJwcm9jZXNzZXMgY2xvc2UgdG8geW91ciBDUFUuIFJ1bm5pbmcgaW4gYW4g
ZW1wdHkKLWRpcmVjdG9yeSB3aXRoIHRoZSBhYm92ZSBjb25mdGVzdC5weTo6CitkaXJlY3Rvcnkg
d2l0aCB0aGUgYWJvdmUgY29uZnRlc3QucHk6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAog
ICAgICQgcHl0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lv
biBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4
IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0g
ICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51
eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQor
ICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjog
JFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAwIGl0ZW1zCiAKLSAgICA9PT09PT09PT09
PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09
PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGlu
IDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBfYGV4Y29udHJvbHNraXBg
OgogCkBAIC0xNTAsNiArMjA1LDEwIEBAIGxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgc2tpcHBpbmcg
b2YgYGBweXRlc3QubWFyay5zbG93YGAgbWFya2VkIHRlc3RzOgogICAgICAgICApCiAKIAorICAg
IGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisgICAgICAgIGNvbmZpZy5hZGRpbml2YWx1
ZV9saW5lKCJtYXJrZXJzIiwgInNsb3c6IG1hcmsgdGVzdCBhcyBzbG93IHRvIHJ1biIpCisKKwog
ICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhjb25maWcsIGl0ZW1zKToKICAg
ICAgICAgaWYgY29uZmlnLmdldG9wdGlvbigiLS1ydW5zbG93Iik6CiAgICAgICAgICAgICAjIC0t
cnVuc2xvdyBnaXZlbiBpbiBjbGk6IGRvIG5vdCBza2lwIHNsb3cgdGVzdHMKQEAgLTE3NSwzNCAr
MjM0LDQyIEBAIFdlIGNhbiBub3cgd3JpdGUgYSB0ZXN0IG1vZHVsZSBsaWtlIHRoaXM6CiAgICAg
ZGVmIHRlc3RfZnVuY19zbG93KCk6CiAgICAgICAgIHBhc3MKIAotYW5kIHdoZW4gcnVubmluZyBp
dCB3aWxsIHNlZSBhIHNraXBwZWQgInNsb3ciIHRlc3Q6OgorYW5kIHdoZW4gcnVubmluZyBpdCB3
aWxsIHNlZSBhIHNraXBwZWQgInNsb3ciIHRlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QK
IAogICAgICQgcHl0ZXN0IC1ycyAgICAjICItcnMiIG1lYW5zIHJlcG9ydCBkZXRhaWxzIG9uIHRo
ZSBsaXR0bGUgJ3MnCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lv
biBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4
IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0g
ICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51
eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQor
ICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjog
JFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAyIGl0ZW1zCiAKICAgICB0ZXN0X21vZHVs
ZS5weSAucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbMTAwJV0KKwogICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1t
YXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBTS0lQIFsxXSB0ZXN0X21v
ZHVsZS5weTo4OiBuZWVkIC0tcnVuc2xvdyBvcHRpb24gdG8gcnVuCisgICAgU0tJUFBFRCBbMV0g
dGVzdF9tb2R1bGUucHk6ODogbmVlZCAtLXJ1bnNsb3cgb3B0aW9uIHRvIHJ1bgorICAgID09PT09
PT09PT09PT09PT09PT09PT09IDEgcGFzc2VkLCAxIHNraXBwZWQgaW4gMC4xMnMgPT09PT09PT09
PT09PT09PT09PT09PT0KIAotICAgID09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQsIDEgc2tp
cHBlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT0KK09yIHJ1biBpdCBpbmNs
dWRpbmcgdGhlIGBgc2xvd2BgIG1hcmtlZCB0ZXN0OgogCi1PciBydW4gaXQgaW5jbHVkaW5nIHRo
ZSBgYHNsb3dgYCBtYXJrZWQgdGVzdDo6CisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAk
IHB5dGVzdCAtLXJ1bnNsb3cKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBz
ZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0g
bGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54
LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3Jt
IGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAu
eC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDIgaXRlbXMKIAogICAgIHRlc3Rf
bW9kdWxlLnB5IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAyIHBhc3NlZCBp
biAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09
PT09PT09PT09PT09PT09PT0gMiBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKworLi4gX2BfX3RyYWNlYmFja2hpZGVfX2A6CiAKIFdyaXRpbmcgd2VsbCBpbnRl
Z3JhdGVkIGFzc2VydGlvbiBoZWxwZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLi4gcmVnZW5kb2M6d2lwZQogCkBAIC0yMjEsNyArMjg4LDcgQEAgRXhhbXBsZToK
ICAgICBkZWYgY2hlY2tjb25maWcoeCk6CiAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1
ZQogICAgICAgICBpZiBub3QgaGFzYXR0cih4LCAiY29uZmlnIik6Ci0gICAgICAgICAgICBweXRl
c3QuZmFpbCgibm90IGNvbmZpZ3VyZWQ6ICVzIiAlICh4LCkpCisgICAgICAgICAgICBweXRlc3Qu
ZmFpbCgibm90IGNvbmZpZ3VyZWQ6IHt9Ii5mb3JtYXQoeCkpCiAKIAogICAgIGRlZiB0ZXN0X3Nv
bWV0aGluZygpOgpAQCAtMjMwLDcgKzI5Nyw5IEBAIEV4YW1wbGU6CiBUaGUgYGBfX3RyYWNlYmFj
a2hpZGVfX2BgIHNldHRpbmcgaW5mbHVlbmNlcyBgYHB5dGVzdGBgIHNob3dpbmcKIG9mIHRyYWNl
YmFja3M6IHRoZSBgYGNoZWNrY29uZmlnYGAgZnVuY3Rpb24gd2lsbCBub3QgYmUgc2hvd24KIHVu
bGVzcyB0aGUgYGAtLWZ1bGwtdHJhY2VgYCBjb21tYW5kIGxpbmUgb3B0aW9uIGlzIHNwZWNpZmll
ZC4KLUxldCdzIHJ1biBvdXIgbGl0dGxlIGZ1bmN0aW9uOjoKK0xldCdzIHJ1biBvdXIgbGl0dGxl
IGZ1bmN0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSB0
ZXN0X2NoZWNrY29uZmlnLnB5CiAgICAgRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC0yNDIsNyArMzEx
LDkgQEAgTGV0J3MgcnVuIG91ciBsaXR0bGUgZnVuY3Rpb246OgogICAgIEUgICAgICAgRmFpbGVk
OiBub3QgY29uZmlndXJlZDogNDIKIAogICAgIHRlc3RfY2hlY2tjb25maWcucHk6MTE6IEZhaWxl
ZAotICAgIDEgZmFpbGVkIGluIDAuMTIgc2Vjb25kcworICAgID09PT09PT09PT09PT09PT09PT09
PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyAgICBGQUlMRUQgdGVzdF9jaGVja2NvbmZpZy5weTo6dGVzdF9zb21ldGhpbmcgLSBGYWlsZWQ6
IG5vdCBjb25maWd1cmVkOiA0MgorICAgIDEgZmFpbGVkIGluIDAuMTJzCiAKIElmIHlvdSBvbmx5
IHdhbnQgdG8gaGlkZSBjZXJ0YWluIGV4Y2VwdGlvbnMsIHlvdSBjYW4gc2V0IGBgX190cmFjZWJh
Y2toaWRlX19gYAogdG8gYSBjYWxsYWJsZSB3aGljaCBnZXRzIHRoZSBgYEV4Y2VwdGlvbkluZm9g
YCBvYmplY3QuIFlvdSBjYW4gZm9yIGV4YW1wbGUgdXNlCkBAIC0yNjEsNyArMzMyLDcgQEAgdGhp
cyB0byBtYWtlIHN1cmUgdW5leHBlY3RlZCBleGNlcHRpb24gdHlwZXMgYXJlbid0IGhpZGRlbjoK
ICAgICBkZWYgY2hlY2tjb25maWcoeCk6CiAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gb3Bl
cmF0b3IubWV0aG9kY2FsbGVyKCJlcnJpc2luc3RhbmNlIiwgQ29uZmlnRXhjZXB0aW9uKQogICAg
ICAgICBpZiBub3QgaGFzYXR0cih4LCAiY29uZmlnIik6Ci0gICAgICAgICAgICByYWlzZSBDb25m
aWdFeGNlcHRpb24oIm5vdCBjb25maWd1cmVkOiAlcyIgJSAoeCwpKQorICAgICAgICAgICAgcmFp
c2UgQ29uZmlnRXhjZXB0aW9uKCJub3QgY29uZmlndXJlZDoge30iLmZvcm1hdCh4KSkKIAogCiAg
ICAgZGVmIHRlc3Rfc29tZXRoaW5nKCk6CkBAIC0yODMsMzQgKzM1NCwzMSBAQCBydW5uaW5nIGZy
b20gYSB0ZXN0IHlvdSBjYW4gZG8gc29tZXRoaW5nIGxpa2UgdGhpczoKIAogLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCi0gICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CisgICAgIyBjb250ZW50
IG9mIHlvdXJfbW9kdWxlLnB5CiAKIAotICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6
Ci0gICAgICAgIGltcG9ydCBzeXMKKyAgICBfY2FsbGVkX2Zyb21fdGVzdCA9IEZhbHNlCiAKLSAg
ICAgICAgc3lzLl9jYWxsZWRfZnJvbV90ZXN0ID0gVHJ1ZQorLi4gY29kZS1ibG9jazo6IHB5dGhv
bgogCisgICAgIyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAKLSAgICBkZWYgcHl0ZXN0X3VuY29u
ZmlndXJlKGNvbmZpZyk6Ci0gICAgICAgIGltcG9ydCBzeXMKIAotICAgICAgICBkZWwgc3lzLl9j
YWxsZWRfZnJvbV90ZXN0CisgICAgZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKKyAgICAg
ICAgeW91cl9tb2R1bGUuX2NhbGxlZF9mcm9tX3Rlc3QgPSBUcnVlCiAKLWFuZCB0aGVuIGNoZWNr
IGZvciB0aGUgYGBzeXMuX2NhbGxlZF9mcm9tX3Rlc3RgYCBmbGFnOgorYW5kIHRoZW4gY2hlY2sg
Zm9yIHRoZSBgYHlvdXJfbW9kdWxlLl9jYWxsZWRfZnJvbV90ZXN0YGAgZmxhZzoKIAogLi4gY29k
ZS1ibG9jazo6IHB5dGhvbgogCi0gICAgaWYgaGFzYXR0cihzeXMsICJfY2FsbGVkX2Zyb21fdGVz
dCIpOgorICAgIGlmIHlvdXJfbW9kdWxlLl9jYWxsZWRfZnJvbV90ZXN0OgogICAgICAgICAjIGNh
bGxlZCBmcm9tIHdpdGhpbiBhIHRlc3QgcnVuCiAgICAgICAgIC4uLgogICAgIGVsc2U6CiAgICAg
ICAgICMgY2FsbGVkICJub3JtYWxseSIKICAgICAgICAgLi4uCiAKLWFjY29yZGluZ2x5IGluIHlv
dXIgYXBwbGljYXRpb24uICBJdCdzIGFsc28gYSBnb29kIGlkZWEKLXRvIHVzZSB5b3VyIG93biBh
cHBsaWNhdGlvbiBtb2R1bGUgcmF0aGVyIHRoYW4gYGBzeXNgYAotZm9yIGhhbmRsaW5nIGZsYWcu
CithY2NvcmRpbmdseSBpbiB5b3VyIGFwcGxpY2F0aW9uLgogCiBBZGRpbmcgaW5mbyB0byB0ZXN0
IHJlcG9ydCBoZWFkZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjcsMTYgKzM5NSwxOSBAQCBJdCdzIGVhc3kgdG8g
cHJlc2VudCBleHRyYSBpbmZvcm1hdGlvbiBpbiBhIGBgcHl0ZXN0YGAgcnVuOgogICAgIGRlZiBw
eXRlc3RfcmVwb3J0X2hlYWRlcihjb25maWcpOgogICAgICAgICByZXR1cm4gInByb2plY3QgZGVw
czogbXlsaWItMS4xIgogCi13aGljaCB3aWxsIGFkZCB0aGUgc3RyaW5nIHRvIHRoZSB0ZXN0IGhl
YWRlciBhY2NvcmRpbmdseTo6Cit3aGljaCB3aWxsIGFkZCB0aGUgc3RyaW5nIHRvIHRoZSB0ZXN0
IGhlYWRlciBhY2NvcmRpbmdseToKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBw
eXRlc3QKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0
cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBwbGF0
Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdn
eS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCiAgICAg
cHJvamVjdCBkZXBzOiBteWxpYi0xLjEKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBp
bmlmaWxlOgorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0ZWQgMCBp
dGVtcwogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT0gbm8gdGVzdHMgcmFuIGluIDAuMTIg
c2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09
PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAogLi4gcmVnZW5kb2M6d2lwZQogCkBAIC0zNTMsMjggKzQyNCwzMyBAQCBkaXNwbGF5IG1vcmUg
aW5mb3JtYXRpb24gaWYgYXBwbGljYWJsZToKICAgICAgICAgaWYgY29uZmlnLmdldG9wdGlvbigi
dmVyYm9zZSIpID4gMDoKICAgICAgICAgICAgIHJldHVybiBbImluZm8xOiBkaWQgeW91IGtub3cg
dGhhdCAuLi4iLCAiZGlkIHlvdT8iXQogCi13aGljaCB3aWxsIGFkZCBpbmZvIG9ubHkgd2hlbiBy
dW4gd2l0aCAiLS12Ijo6Cit3aGljaCB3aWxsIGFkZCBpbmZvIG9ubHkgd2hlbiBydW4gd2l0aCAi
LS12IjoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXYKICAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBw
eXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmlu
L3B5dGhvbjMuNQotICAgIGNhY2hlZGlyOiAucHl0ZXN0X2NhY2hlCisgICAgcGxhdGZvcm0gbGlu
dXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54Lnkg
LS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJ
WC8ucHl0ZXN0X2NhY2hlCiAgICAgaW5mbzE6IGRpZCB5b3Uga25vdyB0aGF0IC4uLgogICAgIGRp
ZCB5b3U/Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDAgaXRl
bXMKIAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3RzIHJhbiBpbiAwLjEyIHNl
Y29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CisK
K2FuZCBub3RoaW5nIHdoZW4gcnVuIHBsYWlubHk6CiAKLWFuZCBub3RoaW5nIHdoZW4gcnVuIHBs
YWlubHk6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QKICAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRl
c3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0Nf
VE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0
ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05f
UFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAg
Y29sbGVjdGVkIDAgaXRlbXMKIAotICAgID09PT09PT09PT09PT09PT09PT09PT09IG5vIHRlc3Rz
IHJhbiBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4gaW4gMC4xMnMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09CiAKIHByb2ZpbGluZyB0ZXN0IGR1cmF0aW9uCiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtNDAzLDIxICs0NzksMjQgQEAgb3V0IHdoaWNoIHRlc3RzIGFyZSB0aGUg
c2xvd2VzdC4gTGV0J3MgbWFrZSBhbiBhcnRpZmljaWFsIHRlc3Qgc3VpdGU6CiAgICAgZGVmIHRl
c3RfZnVuY3Nsb3cyKCk6CiAgICAgICAgIHRpbWUuc2xlZXAoMC4zKQogCi1Ob3cgd2UgY2FuIHBy
b2ZpbGUgd2hpY2ggdGVzdCBmdW5jdGlvbnMgZXhlY3V0ZSB0aGUgc2xvd2VzdDo6CitOb3cgd2Ug
Y2FuIHByb2ZpbGUgd2hpY2ggdGVzdCBmdW5jdGlvbnMgZXhlY3V0ZSB0aGUgc2xvd2VzdDoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLS1kdXJhdGlvbnM9MwogICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54Lnks
IHB5dGVzdC0zLngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdF
TkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55
LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZ
VEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIK
ICAgICBjb2xsZWN0ZWQgMyBpdGVtcwogCiAgICAgdGVzdF9zb21lX2FyZV9zbG93LnB5IC4uLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAKLSAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09IHNsb3dlc3QgMyB0ZXN0IGR1cmF0aW9ucyA9PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHNsb3dl
c3QgMyBkdXJhdGlvbnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIDAuMzBzIGNh
bGwgICAgIHRlc3Rfc29tZV9hcmVfc2xvdy5weTo6dGVzdF9mdW5jc2xvdzIKICAgICAwLjIwcyBj
YWxsICAgICB0ZXN0X3NvbWVfYXJlX3Nsb3cucHk6OnRlc3RfZnVuY3Nsb3cxCiAgICAgMC4xMHMg
Y2FsbCAgICAgdGVzdF9zb21lX2FyZV9zbG93LnB5Ojp0ZXN0X2Z1bmNmYXN0Ci0gICAgPT09PT09
PT09PT09PT09PT09PT09PT09PSAzIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09
PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMyBwYXNzZWQg
aW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogaW5jcmVtZW50YWwgdGVz
dGluZyAtIHRlc3Qgc3RlcHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtNDM0LDIxICs1MTMsNTIgQEAgYW4gYGBpbmNyZW1lbnRhbGBgIG1h
cmtlciB3aGljaCBpcyB0byBiZSB1c2VkIG9uIGNsYXNzZXM6CiAKICAgICAjIGNvbnRlbnQgb2Yg
Y29uZnRlc3QucHkKIAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBUdXBsZQogICAgIGlt
cG9ydCBweXRlc3QKIAorICAgICMgc3RvcmUgaGlzdG9yeSBvZiBmYWlsdXJlcyBwZXIgdGVzdCBj
bGFzcyBuYW1lIGFuZCBwZXIgaW5kZXggaW4gcGFyYW1ldHJpemUgKGlmIHBhcmFtZXRyaXplIHVz
ZWQpCisgICAgX3Rlc3RfZmFpbGVkX2luY3JlbWVudGFsOiBEaWN0W3N0ciwgRGljdFtUdXBsZVtp
bnQsIC4uLl0sIHN0cl1dID0ge30KKwogCiAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBv
cnQoaXRlbSwgY2FsbCk6CiAgICAgICAgIGlmICJpbmNyZW1lbnRhbCIgaW4gaXRlbS5rZXl3b3Jk
czoKKyAgICAgICAgICAgICMgaW5jcmVtZW50YWwgbWFya2VyIGlzIHVzZWQKICAgICAgICAgICAg
IGlmIGNhbGwuZXhjaW5mbyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBp
dGVtLnBhcmVudAotICAgICAgICAgICAgICAgIHBhcmVudC5fcHJldmlvdXNmYWlsZWQgPSBpdGVt
CisgICAgICAgICAgICAgICAgIyB0aGUgdGVzdCBoYXMgZmFpbGVkCisgICAgICAgICAgICAgICAg
IyByZXRyaWV2ZSB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgdGVzdAorICAgICAgICAgICAgICAgIGNs
c19uYW1lID0gc3RyKGl0ZW0uY2xzKQorICAgICAgICAgICAgICAgICMgcmV0cmlldmUgdGhlIGlu
ZGV4IG9mIHRoZSB0ZXN0IChpZiBwYXJhbWV0cml6ZSBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdp
dGggaW5jcmVtZW50YWwpCisgICAgICAgICAgICAgICAgcGFyYW1ldHJpemVfaW5kZXggPSAoCisg
ICAgICAgICAgICAgICAgICAgIHR1cGxlKGl0ZW0uY2FsbHNwZWMuaW5kaWNlcy52YWx1ZXMoKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihpdGVtLCAiY2FsbHNwZWMiKQorICAgICAg
ICAgICAgICAgICAgICBlbHNlICgpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICMgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIHRlc3QgZnVuY3Rpb24KKyAgICAgICAgICAgICAg
ICB0ZXN0X25hbWUgPSBpdGVtLm9yaWdpbmFsbmFtZSBvciBpdGVtLm5hbWUKKyAgICAgICAgICAg
ICAgICAjIHN0b3JlIGluIF90ZXN0X2ZhaWxlZF9pbmNyZW1lbnRhbCB0aGUgb3JpZ2luYWwgbmFt
ZSBvZiB0aGUgZmFpbGVkIHRlc3QKKyAgICAgICAgICAgICAgICBfdGVzdF9mYWlsZWRfaW5jcmVt
ZW50YWwuc2V0ZGVmYXVsdChjbHNfbmFtZSwge30pLnNldGRlZmF1bHQoCisgICAgICAgICAgICAg
ICAgICAgIHBhcmFtZXRyaXplX2luZGV4LCB0ZXN0X25hbWUKKyAgICAgICAgICAgICAgICApCiAK
IAogICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKICAgICAgICAgaWYgImluY3Jl
bWVudGFsIiBpbiBpdGVtLmtleXdvcmRzOgotICAgICAgICAgICAgcHJldmlvdXNmYWlsZWQgPSBn
ZXRhdHRyKGl0ZW0ucGFyZW50LCAiX3ByZXZpb3VzZmFpbGVkIiwgTm9uZSkKLSAgICAgICAgICAg
IGlmIHByZXZpb3VzZmFpbGVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHB5dGVzdC54
ZmFpbCgicHJldmlvdXMgdGVzdCBmYWlsZWQgKCVzKSIgJSBwcmV2aW91c2ZhaWxlZC5uYW1lKQor
ICAgICAgICAgICAgIyByZXRyaWV2ZSB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgdGVzdAorICAgICAg
ICAgICAgY2xzX25hbWUgPSBzdHIoaXRlbS5jbHMpCisgICAgICAgICAgICAjIGNoZWNrIGlmIGEg
cHJldmlvdXMgdGVzdCBoYXMgZmFpbGVkIGZvciB0aGlzIGNsYXNzCisgICAgICAgICAgICBpZiBj
bHNfbmFtZSBpbiBfdGVzdF9mYWlsZWRfaW5jcmVtZW50YWw6CisgICAgICAgICAgICAgICAgIyBy
ZXRyaWV2ZSB0aGUgaW5kZXggb2YgdGhlIHRlc3QgKGlmIHBhcmFtZXRyaXplIGlzIHVzZWQgaW4g
Y29tYmluYXRpb24gd2l0aCBpbmNyZW1lbnRhbCkKKyAgICAgICAgICAgICAgICBwYXJhbWV0cml6
ZV9pbmRleCA9ICgKKyAgICAgICAgICAgICAgICAgICAgdHVwbGUoaXRlbS5jYWxsc3BlYy5pbmRp
Y2VzLnZhbHVlcygpKQorICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGl0ZW0sICJjYWxs
c3BlYyIpCisgICAgICAgICAgICAgICAgICAgIGVsc2UgKCkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgIyByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgdGVzdCBmdW5j
dGlvbiB0byBmYWlsIGZvciB0aGlzIGNsYXNzIG5hbWUgYW5kIGluZGV4CisgICAgICAgICAgICAg
ICAgdGVzdF9uYW1lID0gX3Rlc3RfZmFpbGVkX2luY3JlbWVudGFsW2Nsc19uYW1lXS5nZXQocGFy
YW1ldHJpemVfaW5kZXgsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBpZiBuYW1lIGZvdW5kLCB0
ZXN0IGhhcyBmYWlsZWQgZm9yIHRoZSBjb21iaW5hdGlvbiBvZiBjbGFzcyBuYW1lICYgdGVzdCBu
YW1lCisgICAgICAgICAgICAgICAgaWYgdGVzdF9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgICAgICBweXRlc3QueGZhaWwoInByZXZpb3VzIHRlc3QgZmFpbGVkICh7fSkiLmZvcm1h
dCh0ZXN0X25hbWUpKQorCiAKIFRoZXNlIHR3byBob29rIGltcGxlbWVudGF0aW9ucyB3b3JrIHRv
Z2V0aGVyIHRvIGFib3J0IGluY3JlbWVudGFsLW1hcmtlZAogdGVzdHMgaW4gYSBjbGFzcy4gIEhl
cmUgaXMgYSB0ZXN0IG1vZHVsZSBleGFtcGxlOgpAQCAtNDYxLDcgKzU3MSw3IEBAIHRlc3RzIGlu
IGEgY2xhc3MuICBIZXJlIGlzIGEgdGVzdCBtb2R1bGUgZXhhbXBsZToKIAogCiAgICAgQHB5dGVz
dC5tYXJrLmluY3JlbWVudGFsCi0gICAgY2xhc3MgVGVzdFVzZXJIYW5kbGluZyhvYmplY3QpOgor
ICAgIGNsYXNzIFRlc3RVc2VySGFuZGxpbmc6CiAgICAgICAgIGRlZiB0ZXN0X2xvZ2luKHNlbGYp
OgogICAgICAgICAgICAgcGFzcwogCkBAIC00NzUsMTIgKzU4NSwxNSBAQCB0ZXN0cyBpbiBhIGNs
YXNzLiAgSGVyZSBpcyBhIHRlc3QgbW9kdWxlIGV4YW1wbGU6CiAgICAgZGVmIHRlc3Rfbm9ybWFs
KCk6CiAgICAgICAgIHBhc3MKIAotSWYgd2UgcnVuIHRoaXM6OgorSWYgd2UgcnVuIHRoaXM6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1yeAogICAgID09PT09PT09
PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0z
LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBE
SVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
Ni54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVG
SVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xs
ZWN0ZWQgNCBpdGVtcwogCiAgICAgdGVzdF9zdGVwLnB5IC5GeC4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC00OTYsOSArNjA5LDkg
QEAgSWYgd2UgcnVuIHRoaXM6OgogCiAgICAgdGVzdF9zdGVwLnB5OjExOiBBc3NlcnRpb25FcnJv
cgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8g
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBYRkFJTCB0ZXN0X3N0ZXAucHk6OlRlc3RV
c2VySGFuZGxpbmc6OigpOjp0ZXN0X2RlbGV0aW9uCisgICAgWEZBSUwgdGVzdF9zdGVwLnB5OjpU
ZXN0VXNlckhhbmRsaW5nOjp0ZXN0X2RlbGV0aW9uCiAgICAgICByZWFzb246IHByZXZpb3VzIHRl
c3QgZmFpbGVkICh0ZXN0X21vZGlmaWNhdGlvbikKLSAgICA9PT09PT09PT09PT09PSAxIGZhaWxl
ZCwgMiBwYXNzZWQsIDEgeGZhaWxlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09Cisg
ICAgPT09PT09PT09PT09PT09PT09IDEgZmFpbGVkLCAyIHBhc3NlZCwgMSB4ZmFpbGVkIGluIDAu
MTJzID09PT09PT09PT09PT09PT09PQogCiBXZSdsbCBzZWUgdGhhdCBgYHRlc3RfZGVsZXRpb25g
YCB3YXMgbm90IGV4ZWN1dGVkIGJlY2F1c2UgYGB0ZXN0X21vZGlmaWNhdGlvbmBgCiBmYWlsZWQu
ICBJdCBpcyByZXBvcnRlZCBhcyBhbiAiZXhwZWN0ZWQgZmFpbHVyZSIuCkBAIC01MjMsNyArNjM2
LDcgQEAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciBtYWtpbmcgYSBgYGRiYGAgZml4dHVyZSBhdmFp
bGFibGUgaW4gYSBkaXJlY3Rvcnk6CiAgICAgaW1wb3J0IHB5dGVzdAogCiAKLSAgICBjbGFzcyBE
QihvYmplY3QpOgorICAgIGNsYXNzIERCOgogICAgICAgICBwYXNzCiAKIApAQCAtNTU2LDEyICs2
NjksMTUgQEAgdGhlIGBgZGJgYCBmaXh0dXJlOgogICAgIGRlZiB0ZXN0X3Jvb3QoZGIpOiAgIyBu
byBkYiBoZXJlLCB3aWxsIGVycm9yIG91dAogICAgICAgICBwYXNzCiAKLVdlIGNhbiBydW4gdGhp
czo6CitXZSBjYW4gcnVuIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQg
cHl0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFy
dHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5
dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9v
dGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQ
eXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNh
Y2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VO
RE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCA3IGl0ZW1zCiAKICAgICB0ZXN0X3N0ZXAucHkgLkZ4
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIDU3
JV0KQEAgLTU3NCw3ICs2OTAsNyBAQCBXZSBjYW4gcnVuIHRoaXM6OgogICAgIGZpbGUgJFJFR0VO
RE9DX1RNUERJUi9iL3Rlc3RfZXJyb3IucHksIGxpbmUgMQogICAgICAgZGVmIHRlc3Rfcm9vdChk
Yik6ICAjIG5vIGRiIGhlcmUsIHdpbGwgZXJyb3Igb3V0CiAgICAgRSAgICAgICBmaXh0dXJlICdk
Yicgbm90IGZvdW5kCi0gICAgPiAgICAgICBhdmFpbGFibGUgZml4dHVyZXM6IGNhY2hlLCBjYXBm
ZCwgY2FwZmRiaW5hcnksIGNhcGxvZywgY2Fwc3lzLCBjYXBzeXNiaW5hcnksIGRvY3Rlc3RfbmFt
ZXNwYWNlLCBtb25rZXlwYXRjaCwgcHl0ZXN0Y29uZmlnLCByZWNvcmRfcHJvcGVydHksIHJlY29y
ZF94bWxfYXR0cmlidXRlLCByZWNvcmRfeG1sX3Byb3BlcnR5LCByZWN3YXJuLCB0bXBkaXIsIHRt
cGRpcl9mYWN0b3J5CisgICAgPiAgICAgICBhdmFpbGFibGUgZml4dHVyZXM6IGNhY2hlLCBjYXBm
ZCwgY2FwZmRiaW5hcnksIGNhcGxvZywgY2Fwc3lzLCBjYXBzeXNiaW5hcnksIGRvY3Rlc3RfbmFt
ZXNwYWNlLCBtb25rZXlwYXRjaCwgcHl0ZXN0Y29uZmlnLCByZWNvcmRfcHJvcGVydHksIHJlY29y
ZF90ZXN0c3VpdGVfcHJvcGVydHksIHJlY29yZF94bWxfYXR0cmlidXRlLCByZWN3YXJuLCB0bXBf
cGF0aCwgdG1wX3BhdGhfZmFjdG9yeSwgdG1wZGlyLCB0bXBkaXJfZmFjdG9yeQogICAgID4gICAg
ICAgdXNlICdweXRlc3QgLS1maXh0dXJlcyBbdGVzdHBhdGhdJyBmb3IgaGVscCBvbiB0aGVtLgog
CiAgICAgJFJFR0VORE9DX1RNUERJUi9iL3Rlc3RfZXJyb3IucHk6MQpAQCAtNjA4LDcgKzcyNCwx
MiBAQCBXZSBjYW4gcnVuIHRoaXM6OgogICAgIEUgICAgICAgYXNzZXJ0IDAKIAogICAgIGEvdGVz
dF9kYjIucHk6MjogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09IDMgZmFpbGVkLCAyIHBh
c3NlZCwgMSB4ZmFpbGVkLCAxIGVycm9yIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09CisgICAg
PT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09
PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X3N0ZXAucHk6OlRlc3RVc2VySGFu
ZGxpbmc6OnRlc3RfbW9kaWZpY2F0aW9uIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgYS90ZXN0X2Ri
LnB5Ojp0ZXN0X2ExIC0gQXNzZXJ0aW9uRXJyb3I6IDxjb25mdGVzdC5EQiBvYmplY3QgYXQgMHg3
Li4uCisgICAgRkFJTEVEIGEvdGVzdF9kYjIucHk6OnRlc3RfYTIgLSBBc3NlcnRpb25FcnJvcjog
PGNvbmZ0ZXN0LkRCIG9iamVjdCBhdCAweC4uLgorICAgIEVSUk9SIGIvdGVzdF9lcnJvci5weTo6
dGVzdF9yb290CisgICAgPT09PT09PT09PT09PSAzIGZhaWxlZCwgMiBwYXNzZWQsIDEgeGZhaWxl
ZCwgMSBlcnJvciBpbiAwLjEycyA9PT09PT09PT09PT09PQogCiBUaGUgdHdvIHRlc3QgbW9kdWxl
cyBpbiB0aGUgYGBhYGAgZGlyZWN0b3J5IHNlZSB0aGUgc2FtZSBgYGRiYGAgZml4dHVyZSBpbnN0
YW5jZQogd2hpbGUgdGhlIG9uZSB0ZXN0IGluIHRoZSBzaXN0ZXItZGlyZWN0b3J5IGBgYmBgIGRv
ZXNuJ3Qgc2VlIGl0LiAgV2UgY291bGQgb2YgY291cnNlCkBAIC02NDgsNyArNzY5LDcgQEAgY2Fz
ZSB3ZSBqdXN0IHdyaXRlIHNvbWUgaW5mb3JtYXRpb24gb3V0IHRvIGEgYGBmYWlsdXJlc2BgIGZp
bGU6CiAgICAgICAgICAgICB3aXRoIG9wZW4oImZhaWx1cmVzIiwgbW9kZSkgYXMgZjoKICAgICAg
ICAgICAgICAgICAjIGxldCdzIGFsc28gYWNjZXNzIGEgZml4dHVyZSBmb3IgdGhlIGZ1biBvZiBp
dAogICAgICAgICAgICAgICAgIGlmICJ0bXBkaXIiIGluIGl0ZW0uZml4dHVyZW5hbWVzOgotICAg
ICAgICAgICAgICAgICAgICBleHRyYSA9ICIgKCVzKSIgJSBpdGVtLmZ1bmNhcmdzWyJ0bXBkaXIi
XQorICAgICAgICAgICAgICAgICAgICBleHRyYSA9ICIgKHt9KSIuZm9ybWF0KGl0ZW0uZnVuY2Fy
Z3NbInRtcGRpciJdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAg
IGV4dHJhID0gIiIKIApAQCAtNjY3LDEyICs3ODgsMTUgQEAgaWYgeW91IHRoZW4gaGF2ZSBmYWls
aW5nIHRlc3RzOgogICAgIGRlZiB0ZXN0X2ZhaWwyKCk6CiAgICAgICAgIGFzc2VydCAwCiAKLWFu
ZCBydW4gdGhlbTo6CithbmQgcnVuIHRoZW06CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAog
ICAgICQgcHl0ZXN0IHRlc3RfbW9kdWxlLnB5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09
PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAg
IHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwg
cGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAg
ICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54Lnks
IHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hl
CisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAyIGl0ZW1zCiAK
ICAgICB0ZXN0X21vZHVsZS5weSBGRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTY5NCw5ICs4MTgsMTQgQEAgYW5kIHJ1biB0aGVt
OjoKICAgICBFICAgICAgIGFzc2VydCAwCiAKICAgICB0ZXN0X21vZHVsZS5weTo2OiBBc3NlcnRp
b25FcnJvcgotICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQgaW4gMC4xMiBz
ZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09
CisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X2ZhaWwxIC0gYXNzZXJ0IDAKKyAgICBG
QUlMRUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfZmFpbDIgLSBhc3NlcnQgMAorICAgID09PT09PT09
PT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIAoteW91IHdpbGwgaGF2ZSBhICJmYWlsdXJlcyIgZmlsZSB3aGljaCBjb250
YWlucyB0aGUgZmFpbGluZyB0ZXN0IGlkczo6Cit5b3Ugd2lsbCBoYXZlIGEgImZhaWx1cmVzIiBm
aWxlIHdoaWNoIGNvbnRhaW5zIHRoZSBmYWlsaW5nIHRlc3QgaWRzOgorCisuLiBjb2RlLWJsb2Nr
OjogYmFzaAogCiAgICAgJCBjYXQgZmFpbHVyZXMKICAgICB0ZXN0X21vZHVsZS5weTo6dGVzdF9m
YWlsMSAoUFlURVNUX1RNUERJUi90ZXN0X2ZhaWwxMCkKQEAgLTc2NiwxMiArODk1LDE1IEBAIGlm
IHlvdSB0aGVuIGhhdmUgZmFpbGluZyB0ZXN0czoKICAgICBkZWYgdGVzdF9mYWlsMigpOgogICAg
ICAgICBhc3NlcnQgMAogCi1hbmQgcnVuIGl0OjoKK2FuZCBydW4gaXQ6CisKKy4uIGNvZGUtYmxv
Y2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1zIHRlc3RfbW9kdWxlLnB5CiAgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVz
dC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BS
RUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNv
bGxlY3RlZCAzIGl0ZW1zCiAKICAgICB0ZXN0X21vZHVsZS5weSBFc2V0dGluZyB1cCBhIHRlc3Qg
ZmFpbGVkISB0ZXN0X21vZHVsZS5weTo6dGVzdF9zZXR1cF9mYWlscwpAQCAtODA0LDcgKzkzNiwx
MSBAQCBhbmQgcnVuIGl0OjoKICAgICBFICAgICAgIGFzc2VydCAwCiAKICAgICB0ZXN0X21vZHVs
ZS5weToxOTogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09PT09PT09PSAyIGZhaWxl
ZCwgMSBlcnJvciBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09CisgICAgPT09
PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09
PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6dGVzdF9jYWxsX2Zh
aWxzIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfZmFpbDIgLSBh
c3NlcnQgMAorICAgIEVSUk9SIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X3NldHVwX2ZhaWxzIC0gYXNz
ZXJ0IDAKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gMiBmYWlsZWQsIDEgZXJyb3IgaW4g
MC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09CiAKIFlvdSdsbCBzZWUgdGhhdCB0aGUgZml4
dHVyZSBmaW5hbGl6ZXJzIGNvdWxkIHVzZSB0aGUgcHJlY2lzZSByZXBvcnRpbmcKIGluZm9ybWF0
aW9uLgpAQCAtODE0LDEzICs5NTAsMTMgQEAgaW5mb3JtYXRpb24uCiBgYFBZVEVTVF9DVVJSRU5U
X1RFU1RgYCBlbnZpcm9ubWVudCB2YXJpYWJsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKIAogU29tZXRpbWVz
IGEgdGVzdCBzZXNzaW9uIG1pZ2h0IGdldCBzdHVjayBhbmQgdGhlcmUgbWlnaHQgYmUgbm8gZWFz
eSB3YXkgdG8gZmlndXJlIG91dAogd2hpY2ggdGVzdCBnb3Qgc3R1Y2ssIGZvciBleGFtcGxlIGlm
IHB5dGVzdCB3YXMgcnVuIGluIHF1aWV0IG1vZGUgKGBgLXFgYCkgb3IgeW91IGRvbid0IGhhdmUg
YWNjZXNzIHRvIHRoZSBjb25zb2xlCi1vdXRwdXQuIFRoaXMgaXMgcGFydGljdWxhcmx5IGEgcHJv
YmxlbSBpZiB0aGUgcHJvYmxlbSBoZWxwcyBvbmx5IHNwb3JhZGljYWxseSwgdGhlIGZhbW91cyAi
Zmxha3kiIGtpbmQgb2YgdGVzdHMuCitvdXRwdXQuIFRoaXMgaXMgcGFydGljdWxhcmx5IGEgcHJv
YmxlbSBpZiB0aGUgcHJvYmxlbSBoYXBwZW5zIG9ubHkgc3BvcmFkaWNhbGx5LCB0aGUgZmFtb3Vz
ICJmbGFreSIga2luZCBvZiB0ZXN0cy4KIAotYGBweXRlc3RgYCBzZXRzIGEgYGBQWVRFU1RfQ1VS
UkVOVF9URVNUYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBydW5uaW5nIHRlc3RzLCB3aGlj
aCBjYW4gYmUgaW5zcGVjdGVkCitgYHB5dGVzdGBgIHNldHMgdGhlIDplbnZ2YXI6YFBZVEVTVF9D
VVJSRU5UX1RFU1RgIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gcnVubmluZyB0ZXN0cywgd2hp
Y2ggY2FuIGJlIGluc3BlY3RlZAogYnkgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyBvciBs
aWJyYXJpZXMgbGlrZSBgcHN1dGlsIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHN1dGlsLz5g
XyB0byBkaXNjb3ZlciB3aGljaAogdGVzdCBnb3Qgc3R1Y2sgaWYgbmVjZXNzYXJ5OgogCkBAIC04
MzQsOCArOTcwLDggQEAgdGVzdCBnb3Qgc3R1Y2sgaWYgbmVjZXNzYXJ5OgogICAgICAgICAgICAg
cHJpbnQoZidweXRlc3QgcHJvY2VzcyB7cGlkfSBydW5uaW5nOiB7ZW52aXJvblsiUFlURVNUX0NV
UlJFTlRfVEVTVCJdfScpCiAKIER1cmluZyB0aGUgdGVzdCBzZXNzaW9uIHB5dGVzdCB3aWxsIHNl
dCBgYFBZVEVTVF9DVVJSRU5UX1RFU1RgYCB0byB0aGUgY3VycmVudCB0ZXN0Ci06cmVmOmBub2Rl
aWQgPG5vZGVpZHM+YCBhbmQgdGhlIGN1cnJlbnQgc3RhZ2UsIHdoaWNoIGNhbiBiZSBgYHNldHVw
YGAsIGBgY2FsbGBgCi1hbmQgYGB0ZWFyZG93bmBgLgorOnJlZjpgbm9kZWlkIDxub2RlaWRzPmAg
YW5kIHRoZSBjdXJyZW50IHN0YWdlLCB3aGljaCBjYW4gYmUgYGBzZXR1cGBgLCBgYGNhbGxgYCwK
K29yIGBgdGVhcmRvd25gYC4KIAogRm9yIGV4YW1wbGUsIHdoZW4gcnVubmluZyBhIHNpbmdsZSB0
ZXN0IGZ1bmN0aW9uIG5hbWVkIGBgdGVzdF9mb29gYCBmcm9tIGBgZm9vX21vZHVsZS5weWBgLAog
YGBQWVRFU1RfQ1VSUkVOVF9URVNUYGAgd2lsbCBiZSBzZXQgdG86CkBAIC04NTIsNiArOTg4LDgg
QEAgSW4gdGhhdCBvcmRlci4KICAgICBjYW4gYmUgY2hhbmdlZCBiZXR3ZWVuIHJlbGVhc2VzIChl
dmVuIGJ1ZyBmaXhlcykgc28gaXQgc2hvdWxkbid0IGJlIHJlbGllZCBvbiBmb3Igc2NyaXB0aW5n
CiAgICAgb3IgYXV0b21hdGlvbi4KIAorLi4gX2ZyZWV6aW5nLXB5dGVzdDoKKwogRnJlZXppbmcg
cHl0ZXN0CiAtLS0tLS0tLS0tLS0tLS0KIApAQCAtODk1LDYgKzEwMzMsOCBAQCBsaWtlIGBgcHl0
ZXN0LXRpbWVvdXRgYCB0aGV5IG11c3QgYmUgaW1wb3J0ZWQgZXhwbGljaXRseSBhbmQgcGFzc2Vk
IG9uIHRvIHB5dGVzdAogCiAKIFRoaXMgYWxsb3dzIHlvdSB0byBleGVjdXRlIHRlc3RzIHVzaW5n
IHRoZSBmcm96ZW4KLWFwcGxpY2F0aW9uIHdpdGggc3RhbmRhcmQgYGBweXRlc3RgYCBjb21tYW5k
LWxpbmUgb3B0aW9uczo6CithcHBsaWNhdGlvbiB3aXRoIHN0YW5kYXJkIGBgcHl0ZXN0YGAgY29t
bWFuZC1saW5lIG9wdGlvbnM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICAuL2FwcF9t
YWluIC0tcHl0ZXN0IC0tdmVyYm9zZSAtLXRiPWxvbmcgLS1qdW5pdHhtbD1yZXN1bHRzLnhtbCB0
ZXN0LXN1aXRlLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvc3BlY2lh
bC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9zcGVjaWFsLnJzdAppbmRleCAxZmMz
MmY2YzgxNzMuLjY4ODZiNjI2OGEyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvc3BlY2lhbC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvc3BlY2lh
bC5yc3QKQEAgLTUsNTkgKzUsNzEgQEAgQSBzZXNzaW9uLXNjb3BlZCBmaXh0dXJlIGVmZmVjdGl2
ZWx5IGhhcyBhY2Nlc3MgdG8gYWxsCiBjb2xsZWN0ZWQgdGVzdCBpdGVtcy4gIEhlcmUgaXMgYW4g
ZXhhbXBsZSBvZiBhIGZpeHR1cmUKIGZ1bmN0aW9uIHdoaWNoIHdhbGtzIGFsbCBjb2xsZWN0ZWQg
dGVzdHMgYW5kIGxvb2tzCiBpZiB0aGVpciB0ZXN0IGNsYXNzIGRlZmluZXMgYSBgYGNhbGxtZWBg
IG1ldGhvZCBhbmQKLWNhbGxzIGl0OjoKK2NhbGxzIGl0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKIAogICAgIGltcG9ydCBweXRlc3QK
IAorCiAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIiwgYXV0b3VzZT1UcnVlKQog
ICAgIGRlZiBjYWxsYXR0cl9haGVhZF9vZl9hbGx0ZXN0cyhyZXF1ZXN0KToKLSAgICAgICAgcHJp
bnQgKCJjYWxsYXR0cl9haGVhZF9vZl9hbGx0ZXN0cyBjYWxsZWQiKQotICAgICAgICBzZWVuID0g
c2V0KFtOb25lXSkKKyAgICAgICAgcHJpbnQoImNhbGxhdHRyX2FoZWFkX29mX2FsbHRlc3RzIGNh
bGxlZCIpCisgICAgICAgIHNlZW4gPSB7Tm9uZX0KICAgICAgICAgc2Vzc2lvbiA9IHJlcXVlc3Qu
bm9kZQogICAgICAgICBmb3IgaXRlbSBpbiBzZXNzaW9uLml0ZW1zOgogICAgICAgICAgICAgY2xz
ID0gaXRlbS5nZXRwYXJlbnQocHl0ZXN0LkNsYXNzKQogICAgICAgICAgICAgaWYgY2xzIG5vdCBp
biBzZWVuOgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoY2xzLm9iaiwgImNhbGxtZSIpOgot
ICAgICAgICAgICAgICAgICAgIGNscy5vYmouY2FsbG1lKCkKKyAgICAgICAgICAgICAgICAgICAg
Y2xzLm9iai5jYWxsbWUoKQogICAgICAgICAgICAgICAgIHNlZW4uYWRkKGNscykKIAogdGVzdCBj
bGFzc2VzIG1heSBub3cgZGVmaW5lIGEgYGBjYWxsbWVgYCBtZXRob2Qgd2hpY2gKLXdpbGwgYmUg
Y2FsbGVkIGFoZWFkIG9mIHJ1bm5pbmcgYW55IHRlc3RzOjoKK3dpbGwgYmUgY2FsbGVkIGFoZWFk
IG9mIHJ1bm5pbmcgYW55IHRlc3RzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAj
IGNvbnRlbnQgb2YgdGVzdF9tb2R1bGUucHkKIAotICAgIGNsYXNzIFRlc3RIZWxsbyhvYmplY3Qp
OgorCisgICAgY2xhc3MgVGVzdEhlbGxvOgogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAg
ZGVmIGNhbGxtZShjbHMpOgotICAgICAgICAgICAgcHJpbnQgKCJjYWxsbWUgY2FsbGVkISIpCisg
ICAgICAgICAgICBwcmludCgiY2FsbG1lIGNhbGxlZCEiKQogCiAgICAgICAgIGRlZiB0ZXN0X21l
dGhvZDEoc2VsZik6Ci0gICAgICAgICAgICBwcmludCAoInRlc3RfbWV0aG9kMSBjYWxsZWQiKQor
ICAgICAgICAgICAgcHJpbnQoInRlc3RfbWV0aG9kMSBjYWxsZWQiKQogCiAgICAgICAgIGRlZiB0
ZXN0X21ldGhvZDIoc2VsZik6Ci0gICAgICAgICAgICBwcmludCAoInRlc3RfbWV0aG9kMSBjYWxs
ZWQiKQorICAgICAgICAgICAgcHJpbnQoInRlc3RfbWV0aG9kMSBjYWxsZWQiKQorCiAKLSAgICBj
bGFzcyBUZXN0T3RoZXIob2JqZWN0KToKKyAgICBjbGFzcyBUZXN0T3RoZXI6CiAgICAgICAgIEBj
bGFzc21ldGhvZAogICAgICAgICBkZWYgY2FsbG1lKGNscyk6Ci0gICAgICAgICAgICBwcmludCAo
ImNhbGxtZSBvdGhlciBjYWxsZWQiKQorICAgICAgICAgICAgcHJpbnQoImNhbGxtZSBvdGhlciBj
YWxsZWQiKQorCiAgICAgICAgIGRlZiB0ZXN0X290aGVyKHNlbGYpOgotICAgICAgICAgICAgcHJp
bnQgKCJ0ZXN0IG90aGVyIikKKyAgICAgICAgICAgIHByaW50KCJ0ZXN0IG90aGVyIikKKwogCiAg
ICAgIyB3b3JrcyB3aXRoIHVuaXR0ZXN0IGFzIHdlbGwgLi4uCiAgICAgaW1wb3J0IHVuaXR0ZXN0
CiAKKwogICAgIGNsYXNzIFNvbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgQGNs
YXNzbWV0aG9kCiAgICAgICAgIGRlZiBjYWxsbWUoc2VsZik6Ci0gICAgICAgICAgICBwcmludCAo
IlNvbWVUZXN0IGNhbGxtZSBjYWxsZWQiKQorICAgICAgICAgICAgcHJpbnQoIlNvbWVUZXN0IGNh
bGxtZSBjYWxsZWQiKQogCiAgICAgICAgIGRlZiB0ZXN0X3VuaXQxKHNlbGYpOgotICAgICAgICAg
ICAgcHJpbnQgKCJ0ZXN0X3VuaXQxIG1ldGhvZCBjYWxsZWQiKQorICAgICAgICAgICAgcHJpbnQo
InRlc3RfdW5pdDEgbWV0aG9kIGNhbGxlZCIpCisKK0lmIHlvdSBydW4gdGhpcyB3aXRob3V0IG91
dHB1dCBjYXB0dXJpbmc6CiAKLUlmIHlvdSBydW4gdGhpcyB3aXRob3V0IG91dHB1dCBjYXB0dXJp
bmc6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEgLXMgdGVzdF9t
b2R1bGUucHkKICAgICBjYWxsYXR0cl9haGVhZF9vZl9hbGx0ZXN0cyBjYWxsZWQKQEAgLTY5LDQg
KzgxLDQgQEAgSWYgeW91IHJ1biB0aGlzIHdpdGhvdXQgb3V0cHV0IGNhcHR1cmluZzo6CiAgICAg
LnRlc3Qgb3RoZXIKICAgICAudGVzdF91bml0MSBtZXRob2QgY2FsbGVkCiAgICAgLgotICAgIDQg
cGFzc2VkIGluIDAuMTIgc2Vjb25kcworICAgIDQgcGFzc2VkIGluIDAuMTJzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ZWJkYWFkMWQyNTAuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2F0dGljLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL2NvbmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUv
aW5kZXgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbWFya2Vycy5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9tdWx0aXB5dGhvbi5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9leGFtcGxlL25vbnB5dGhvbi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9wYXJh
bWV0cml6ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weXRob25jb2xsZWN0aW9u
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHl0aG9uY29sbGVjdGlvbi5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9yZXBvcnRpbmdkZW1vLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3NpbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9z
cGVjaWFsLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3hmYWlsX2RlbW8ucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGlzdGluZ3Rlc3RzdWl0ZS5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vZXhpc3Rpbmd0ZXN0c3VpdGUucnN0CmluZGV4IGQzMDRiMzBjOWE2MC4u
MWUzZTE5MmJmM2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhpc3Rpbmd0ZXN0
c3VpdGUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGlzdGluZ3Rlc3RzdWl0ZS5yc3QK
QEAgLTE1LDcgKzE1LDkgQEAgUnVubmluZyBhbiBleGlzdGluZyB0ZXN0IHN1aXRlIHdpdGggcHl0
ZXN0CiBTYXkgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB0byBhbiBleGlzdGluZyByZXBvc2l0b3J5
IHNvbWV3aGVyZS4KIEFmdGVyIHB1bGxpbmcgdGhlIGNvZGUgaW50byB5b3VyIGRldmVsb3BtZW50
IHNwYWNlIHVzaW5nIHNvbWUKIGZsYXZvciBvZiB2ZXJzaW9uIGNvbnRyb2wgYW5kIChvcHRpb25h
bGx5KSBzZXR0aW5nIHVwIGEgdmlydHVhbGVudgoteW91IHdpbGwgd2FudCB0byBydW46OgoreW91
IHdpbGwgd2FudCB0byBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBjZCA8cmVw
b3NpdG9yeT4KICAgICBwaXAgaW5zdGFsbCAtZSAuICAjIEVudmlyb25tZW50IGRlcGVuZGVudCBh
bHRlcm5hdGl2ZXMgaW5jbHVkZQpAQCAtMzAsNSArMzIsMyBAQCByZWluc3RhbGwgZXZlcnkgdGlt
ZSB5b3Ugd2FudCB0byBydW4geW91ciB0ZXN0cywgYW5kIGlzIGxlc3MgYnJpdHRsZSB0aGFuCiBt
dWNraW5nIGFib3V0IHdpdGggc3lzLnBhdGggdG8gcG9pbnQgeW91ciB0ZXN0cyBhdCBsb2NhbCBj
b2RlLgogCiBBbHNvIGNvbnNpZGVyIHVzaW5nIDpyZWY6YHRveCA8dXNlIHRveD5gLgotCi0uLiBp
bmNsdWRlOjogbGlua3MuaW5jCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZmFxLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9mYXEucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1YjEzODE4ZWE1ZWQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZmFxLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi1Tb21lIElzc3VlcyBhbmQg
UXVlc3Rpb25zCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS4uIG5vdGU6
OgotCi0gICAgVGhpcyBGQVEgaXMgaGVyZSBvbmx5IG1vc3RseSBmb3IgaGlzdG9yaWMgcmVhc29u
cy4gIENoZWNrb3V0Ci0gICAgYHB5dGVzdCBRJkEgYXQgU3RhY2tvdmVyZmxvdyA8aHR0cDovL3N0
YWNrb3ZlcmZsb3cuY29tL3NlYXJjaD9xPXB5dGVzdD5gXwotICAgIGZvciBtYW55IHF1ZXN0aW9u
cyBhbmQgYW5zd2VycyByZWxhdGVkIHRvIHB5dGVzdCBhbmQvb3IgdXNlCi0gICAgOnJlZjpgY29u
dGFjdCBjaGFubmVsc2AgdG8gZ2V0IGhlbHAuCi0KLU9uIG5hbWluZywgbm9zZXRlc3RzLCBsaWNl
bnNpbmcgYW5kIG1hZ2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotSG93IGRvZXMgcHl0ZXN0IHJlbGF0ZSB0byBub3NlIGFuZCB1bml0dGVzdD8K
LSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotYGBw
eXRlc3RgYCBhbmQgbm9zZV8gc2hhcmUgYmFzaWMgcGhpbG9zb3BoeSB3aGVuIGl0IGNvbWVzCi10
byBydW5uaW5nIGFuZCB3cml0aW5nIFB5dGhvbiB0ZXN0cy4gIEluIGZhY3QsIHlvdSBjYW4gcnVu
IG1hbnkgdGVzdHMKLXdyaXR0ZW4gZm9yIG5vc2Ugd2l0aCBgYHB5dGVzdGBgLiAgbm9zZV8gd2Fz
IG9yaWdpbmFsbHkgY3JlYXRlZAotYXMgYSBjbG9uZSBvZiBgYHB5dGVzdGBgIHdoZW4gYGBweXRl
c3RgYCB3YXMgaW4gdGhlIGBgMC44YGAgcmVsZWFzZQotY3ljbGUuICBOb3RlIHRoYXQgc3RhcnRp
bmcgd2l0aCBweXRlc3QtMi4wIHN1cHBvcnQgZm9yIHJ1bm5pbmcgdW5pdHRlc3QKLXRlc3Qgc3Vp
dGVzIGlzIG1ham9ybHkgaW1wcm92ZWQuCi0KLWhvdyBkb2VzIHB5dGVzdCByZWxhdGUgdG8gdHdp
c3RlZCdzIHRyaWFsPwotKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwotCi1TaW5jZSBzb21lIHRpbWUgYGBweXRlc3RgYCBoYXMgYnVpbHRpbiBzdXBwb3J0IGZv
ciBzdXBwb3J0aW5nIHRlc3RzCi13cml0dGVuIHVzaW5nIHRyaWFsLiBJdCBkb2VzIG5vdCBpdHNl
bGYgc3RhcnQgYSByZWFjdG9yLCBob3dldmVyLAotYW5kIGRvZXMgbm90IGhhbmRsZSBEZWZlcnJl
ZHMgcmV0dXJuZWQgZnJvbSBhIHRlc3QgaW4gcHl0ZXN0IHN0eWxlLgotSWYgeW91IGFyZSB1c2lu
ZyB0cmlhbCdzIHVuaXR0ZXN0LlRlc3RDYXNlIGNoYW5jZXMgYXJlIHRoYXQgeW91IGNhbgotanVz
dCBydW4geW91ciB0ZXN0cyBldmVuIGlmIHlvdSByZXR1cm4gRGVmZXJyZWRzLiAgSW4gYWRkaXRp
b24sCi10aGVyZSBhbHNvIGlzIGEgZGVkaWNhdGVkIGBweXRlc3QtdHdpc3RlZAotPGh0dHBzOi8v
cHlwaS5vcmcvcHJvamVjdC9weXRlc3QtdHdpc3RlZC8+YF8gcGx1Z2luIHdoaWNoIGFsbG93cyB5
b3UgdG8KLXJldHVybiBkZWZlcnJlZHMgZnJvbSBweXRlc3Qtc3R5bGUgdGVzdHMsIGFsbG93aW5n
IHRoZSB1c2Ugb2YKLTpyZWY6YGZpeHR1cmVzYCBhbmQgb3RoZXIgZmVhdHVyZXMuCi0KLWhvdyBk
b2VzIHB5dGVzdCB3b3JrIHdpdGggRGphbmdvPwotKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwotCi1JbiAyMDEyLCBzb21lIHdvcmsgaXMgZ29pbmcgaW50byB0
aGUgYHB5dGVzdC1kamFuZ28gcGx1Z2luIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0
LWRqYW5nby8+YF8uICBJdCBzdWJzdGl0dXRlcyB0aGUgdXNhZ2Ugb2YgRGphbmdvJ3MKLWBgbWFu
YWdlLnB5IHRlc3RgYCBhbmQgYWxsb3dzIHRoZSB1c2Ugb2YgYWxsIHB5dGVzdCBmZWF0dXJlc18g
bW9zdCBvZiB3aGljaAotYXJlIG5vdCBhdmFpbGFibGUgZnJvbSBEamFuZ28gZGlyZWN0bHkuCi0K
LS4uIF9mZWF0dXJlczogZmVhdHVyZXMuaHRtbAotCi0KLVdoYXQncyB0aGlzICJtYWdpYyIgd2l0
aCBweXRlc3Q/IChoaXN0b3JpYyBub3RlcykKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLUFyb3VuZCAyMDA3ICh2ZXJzaW9uIGBgMC44
YGApIHNvbWUgcGVvcGxlIHRob3VnaHQgdGhhdCBgYHB5dGVzdGBgCi13YXMgdXNpbmcgdG9vIG11
Y2ggIm1hZ2ljIi4gIEl0IGhhZCBiZWVuIHBhcnQgb2YgdGhlIGBweWxpYmBfIHdoaWNoCi1jb250
YWlucyBhIGxvdCBvZiB1bnJlbGF0ZWQgcHl0aG9uIGxpYnJhcnkgY29kZS4gIEFyb3VuZCAyMDEw
IHRoZXJlCi13YXMgYSBtYWpvciBjbGVhbnVwIHJlZmFjdG9yaW5nLCB3aGljaCByZW1vdmVkIHVu
dXNlZCBvciBkZXByZWNhdGVkIGNvZGUKLWFuZCByZXN1bHRlZCBpbiB0aGUgbmV3IGBgcHl0ZXN0
YGAgUHlQSSBwYWNrYWdlIHdoaWNoIHN0cmljdGx5IGNvbnRhaW5zCi1vbmx5IHRlc3QtcmVsYXRl
ZCBjb2RlLiAgVGhpcyByZWxlYXNlIGFsc28gYnJvdWdodCBhIGNvbXBsZXRlIHBsdWdpbmlmaWNh
dGlvbgotc3VjaCB0aGF0IHRoZSBjb3JlIGlzIGFyb3VuZCAzMDAgbGluZXMgb2YgY29kZSBhbmQg
ZXZlcnl0aGluZyBlbHNlIGlzCi1pbXBsZW1lbnRlZCBpbiBwbHVnaW5zLiAgVGh1cyBgYHB5dGVz
dGBgIHRvZGF5IGlzIGEgc21hbGwsIHVuaXZlcnNhbGx5IHJ1bm5hYmxlCi1hbmQgY3VzdG9taXph
YmxlIHRlc3RpbmcgZnJhbWV3b3JrIGZvciBQeXRob24uICAgTm90ZSwgaG93ZXZlciwgdGhhdAot
YGBweXRlc3RgYCB1c2VzIG1ldGFwcm9ncmFtbWluZyB0ZWNobmlxdWVzIGFuZCByZWFkaW5nIGl0
cyBzb3VyY2UgaXMKLXRodXMgbGlrZWx5IG5vdCBzb21ldGhpbmcgZm9yIFB5dGhvbiBiZWdpbm5l
cnMuCi0KLUEgc2Vjb25kICJtYWdpYyIgaXNzdWUgd2FzIHRoZSBhc3NlcnQgc3RhdGVtZW50IGRl
YnVnZ2luZyBmZWF0dXJlLgotTm93YWRheXMsIGBgcHl0ZXN0YGAgZXhwbGljaXRseSByZXdyaXRl
cyBhc3NlcnQgc3RhdGVtZW50cyBpbiB0ZXN0IG1vZHVsZXMKLWluIG9yZGVyIHRvIHByb3ZpZGUg
bW9yZSB1c2VmdWwgOnJlZjpgYXNzZXJ0IGZlZWRiYWNrIDxhc3NlcnRmZWVkYmFjaz5gLgotVGhp
cyBjb21wbGV0ZWx5IGF2b2lkcyBwcmV2aW91cyBpc3N1ZXMgb2YgY29uZnVzaW5nIGFzc2VydGlv
bi1yZXBvcnRpbmcuCi1JdCBhbHNvIG1lYW5zLCB0aGF0IHlvdSBjYW4gdXNlIFB5dGhvbidzIGBg
LU9gYCBvcHRpbWl6YXRpb24gd2l0aG91dCBsb3NpbmcKLWFzc2VydGlvbnMgaW4gdGVzdCBtb2R1
bGVzLgotCi1Zb3UgY2FuIGFsc28gdHVybiBvZmYgYWxsIGFzc2VydGlvbiBpbnRlcmFjdGlvbiB1
c2luZyB0aGUKLWBgLS1hc3NlcnQ9cGxhaW5gYCBvcHRpb24uCi0KLS4uIF9gcHkgbmFtZXNwYWNl
c2A6IGluZGV4Lmh0bWwKLS4uIF9gcHkvX19pbml0X18ucHlgOiBodHRwOi8vYml0YnVja2V0Lm9y
Zy9ocGs0Mi9weS10cnVuay9zcmMvdHJ1bmsvcHkvX19pbml0X18ucHkKLQotCi1XaHkgY2FuIEkg
dXNlIGJvdGggYGBweXRlc3RgYCBhbmQgYGBweS50ZXN0YGAgY29tbWFuZHM/Ci0rKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLXB5dGVzdCB1
c2VkIHRvIGJlIHBhcnQgb2YgdGhlIHB5IHBhY2thZ2UsIHdoaWNoIHByb3ZpZGVkIHNldmVyYWwg
ZGV2ZWxvcGVyCi11dGlsaXRpZXMsIGFsbCBzdGFydGluZyB3aXRoIGBgcHkuPFRBQj5gYCwgdGh1
cyBwcm92aWRpbmcgbmljZSBUQUItY29tcGxldGlvbi4KLUlmIHlvdSBpbnN0YWxsIGBgcGlwIGlu
c3RhbGwgcHljbWRgYCB5b3UgZ2V0IHRoZXNlIHRvb2xzIGZyb20gYSBzZXBhcmF0ZQotcGFja2Fn
ZS4gT25jZSBgYHB5dGVzdGBgIGJlY2FtZSBhIHNlcGFyYXRlIHBhY2thZ2UsIHRoZSBgYHB5LnRl
c3RgYCBuYW1lIHdhcwotcmV0YWluZWQgZHVlIHRvIGF2b2lkIGEgbmFtaW5nIGNvbmZsaWN0IHdp
dGggYW5vdGhlciB0b29sLiBUaGlzIGNvbmZsaWN0IHdhcwotZXZlbnR1YWxseSByZXNvbHZlZCwg
YW5kIHRoZSBgYHB5dGVzdGBgIGNvbW1hbmQgd2FzIHRoZXJlZm9yZSBpbnRyb2R1Y2VkLiBJbgot
ZnV0dXJlIHZlcnNpb25zIG9mIHB5dGVzdCwgd2UgbWF5IGRlcHJlY2F0ZSBhbmQgbGF0ZXIgcmVt
b3ZlIHRoZSBgYHB5LnRlc3RgYAotY29tbWFuZCB0byBhdm9pZCBwZXJwZXR1YXRpbmcgdGhlIGNv
bmZ1c2lvbi4KLQotcHl0ZXN0IGZpeHR1cmVzLCBwYXJhbWV0cml6ZWQgdGVzdHMKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gX2Z1
bmNhcmdzOiBmdW5jYXJncy5odG1sCi0KLUlzIHVzaW5nIHB5dGVzdCBmaXh0dXJlcyB2ZXJzdXMg
eFVuaXQgc2V0dXAgYSBzdHlsZSBxdWVzdGlvbj8KLSsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotRm9yIHNpbXBsZSBh
cHBsaWNhdGlvbnMgYW5kIGZvciBwZW9wbGUgZXhwZXJpZW5jZWQgd2l0aCBub3NlXyBvcgotdW5p
dHRlc3Qtc3R5bGUgdGVzdCBzZXR1cCB1c2luZyBgeFVuaXQgc3R5bGUgc2V0dXBgXyBwcm9iYWJs
eQotZmVlbHMgbmF0dXJhbC4gIEZvciBsYXJnZXIgdGVzdCBzdWl0ZXMsIHBhcmFtZXRyaXplZCB0
ZXN0aW5nCi1vciBzZXR1cCBvZiBjb21wbGV4IHRlc3QgcmVzb3VyY2VzIHVzaW5nIGZpeHR1cmVz
XyBtYXkgZmVlbCBtb3JlIG5hdHVyYWwuCi1Nb3Jlb3ZlciwgZml4dHVyZXMgYXJlIGlkZWFsIGZv
ciB3cml0aW5nIGFkdmFuY2VkIHRlc3Qgc3VwcG9ydAotY29kZSAobGlrZSBlLmcuIHRoZSBtb25r
ZXlwYXRjaF8sIHRoZSB0bXBkaXJfIG9yIGNhcHR1cmVfIGZpeHR1cmVzKQotYmVjYXVzZSB0aGUg
c3VwcG9ydCBjb2RlIGNhbiByZWdpc3RlciBzZXR1cC90ZWFyZG93biBmdW5jdGlvbnMKLWluIGEg
bWFuYWdlZCBjbGFzcy9tb2R1bGUvZnVuY3Rpb24gc2NvcGUuCi0KLS4uIF9tb25rZXlwYXRjaDog
bW9ua2V5cGF0Y2guaHRtbAotLi4gX3RtcGRpcjogdG1wZGlyLmh0bWwKLS4uIF9jYXB0dXJlOiBj
YXB0dXJlLmh0bWwKLS4uIF9maXh0dXJlczogZml4dHVyZS5odG1sCi0KLS4uIF9gd2h5IHB5dGVz
dF9weWZ1bmNhcmdfXyBtZXRob2RzP2A6Ci0KLS4uIF9gQ29udmVudGlvbiBvdmVyIENvbmZpZ3Vy
YXRpb25gOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnZlbnRpb25fb3Zlcl9Db25m
aWd1cmF0aW9uCi0KLUNhbiBJIHlpZWxkIG11bHRpcGxlIHZhbHVlcyBmcm9tIGEgZml4dHVyZSBm
dW5jdGlvbj8KLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCi0KLVRoZXJlIGFyZSB0d28gY29uY2VwdHVhbCByZWFzb25zIHdoeSB5
aWVsZGluZyBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbgotaXMgbm90IHBvc3NpYmxlOgotCi0qIElm
IG11bHRpcGxlIGZhY3RvcmllcyB5aWVsZGVkIHZhbHVlcyB0aGVyZSB3b3VsZAotICBiZSBubyBu
YXR1cmFsIHBsYWNlIHRvIGRldGVybWluZSB0aGUgY29tYmluYXRpb24KLSAgcG9saWN5IC0gaW4g
cmVhbC13b3JsZCBleGFtcGxlcyBzb21lIGNvbWJpbmF0aW9ucwotICBvZnRlbiBzaG91bGQgbm90
IHJ1bi4KLQotKiBDYWxsaW5nIGZhY3RvcmllcyBmb3Igb2J0YWluaW5nIHRlc3QgZnVuY3Rpb24g
YXJndW1lbnRzCi0gIGlzIHBhcnQgb2Ygc2V0dGluZyB1cCBhbmQgcnVubmluZyBhIHRlc3QuICBB
dCB0aGF0Ci0gIHBvaW50IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBhZGQgbmV3IHRlc3QgY2FsbHMg
dG8KLSAgdGhlIHRlc3QgY29sbGVjdGlvbiBhbnltb3JlLgotCi1Ib3dldmVyLCB3aXRoIHB5dGVz
dC0yLjMgeW91IGNhbiB1c2UgdGhlIDpyZWY6YEBweXRlc3QuZml4dHVyZWAgZGVjb3JhdG9yCi1h
bmQgc3BlY2lmeSBgYHBhcmFtc2BgIHNvIHRoYXQgYWxsIHRlc3RzIGRlcGVuZGluZyBvbiB0aGUg
ZmFjdG9yeS1jcmVhdGVkCi1yZXNvdXJjZSB3aWxsIHJ1biBtdWx0aXBsZSB0aW1lcyB3aXRoIGRp
ZmZlcmVudCBwYXJhbWV0ZXJzLgotCi1Zb3UgY2FuIGFsc28gdXNlIHRoZSBgYHB5dGVzdF9nZW5l
cmF0ZV90ZXN0c2BgIGhvb2sgdG8KLWltcGxlbWVudCB0aGUgYHBhcmFtZXRyaXphdGlvbiBzY2hl
bWUgb2YgeW91ciBjaG9pY2VgXy4gU2VlIGFsc28KLTpyZWY6YHBhcmFtZXhhbXBsZXNgIGZvciBt
b3JlIGV4YW1wbGVzLgotCi0uLiBfYHBhcmFtZXRyaXphdGlvbiBzY2hlbWUgb2YgeW91ciBjaG9p
Y2VgOiBodHRwOi8vdGV0YW1hcC53b3JkcHJlc3MuY29tLzIwMDkvMDUvMTMvcGFyYW1ldHJpemlu
Zy1weXRob24tdGVzdHMtZ2VuZXJhbGl6ZWQvCi0KLXB5dGVzdCBpbnRlcmFjdGlvbiB3aXRoIG90
aGVyIHBhY2thZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotSXNzdWVzIHdpdGggcHl0ZXN0LCBtdWx0aXByb2Nlc3MgYW5kIHNldHVwdG9v
bHM/Ci0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKLQotT24gV2luZG93cyB0aGUgbXVsdGlwcm9jZXNzIHBhY2thZ2Ugd2lsbCBpbnN0YW50
aWF0ZSBzdWIgcHJvY2Vzc2VzCi1ieSBwaWNrbGluZyBhbmQgdGh1cyBpbXBsaWNpdGx5IHJlLWlt
cG9ydCBhIGxvdCBvZiBsb2NhbCBtb2R1bGVzLgotVW5mb3J0dW5hdGVseSwgc2V0dXB0b29scy0w
LjYuMTEgZG9lcyBub3QgYGBpZiBfX25hbWVfXz09J19fbWFpbl9fJ2BgCi1wcm90ZWN0IGl0cyBn
ZW5lcmF0ZWQgY29tbWFuZCBsaW5lIHNjcmlwdC4gIFRoaXMgbGVhZHMgdG8gaW5maW5pdGUKLXJl
Y3Vyc2lvbiB3aGVuIHJ1bm5pbmcgYSB0ZXN0IHRoYXQgaW5zdGFudGlhdGVzIFByb2Nlc3Nlcy4K
LQotQXMgb2YgbWlkLTIwMTMsIHRoZXJlIHNob3VsZG4ndCBiZSBhIHByb2JsZW0gYW55bW9yZSB3
aGVuIHlvdQotdXNlIHRoZSBzdGFuZGFyZCBzZXR1cHRvb2xzIChub3RlIHRoYXQgZGlzdHJpYnV0
ZSBoYXMgYmVlbiBtZXJnZWQKLWJhY2sgaW50byBzZXR1cHRvb2xzIHdoaWNoIGlzIG5vdyBzaGlw
cGVkIGRpcmVjdGx5IHdpdGggdmlydHVhbGVudikuCi0KLS4uIGluY2x1ZGU6OiBsaW5rcy5pbmMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9maXh0dXJlLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9maXh0dXJlLnJzdAppbmRleCBkNGQzODY3OTJlMDguLjkwZTg4ZDg3NjIwMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ZpeHR1cmUucnN0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9maXh0dXJlLnJzdApAQCAtNywxNiArNywyMiBAQCBweXRlc3QgZml4dHVyZXM6IGV4
cGxpY2l0LCBtb2R1bGFyLCBzY2FsYWJsZQogCiAuLiBjdXJyZW50bW9kdWxlOjogX3B5dGVzdC5w
eXRob24KIAotLi4gdmVyc2lvbmFkZGVkOjogMi4wLzIuMy8yLjQKIAotLi4gX2B4VW5pdGA6IGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWFVuaXQKLS4uIF9gcHVycG9zZSBvZiB0ZXN0IGZp
eHR1cmVzYDogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXN0X2ZpeHR1cmUjU29mdHdh
cmUKLS4uIF9gRGVwZW5kZW5jeSBpbmplY3Rpb25gOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93
aWtpL0RlcGVuZGVuY3lfaW5qZWN0aW9uCiAKLVRoZSBgcHVycG9zZSBvZiB0ZXN0IGZpeHR1cmVz
YF8gaXMgdG8gcHJvdmlkZSBhIGZpeGVkIGJhc2VsaW5lCi11cG9uIHdoaWNoIHRlc3RzIGNhbiBy
ZWxpYWJseSBhbmQgcmVwZWF0ZWRseSBleGVjdXRlLiAgIHB5dGVzdCBmaXh0dXJlcwotb2ZmZXIg
ZHJhbWF0aWMgaW1wcm92ZW1lbnRzIG92ZXIgdGhlIGNsYXNzaWMgeFVuaXQgc3R5bGUgb2Ygc2V0
dXAvdGVhcmRvd24KLWZ1bmN0aW9uczoKKy4uIF9geFVuaXRgOiBodHRwczovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9YVW5pdAorLi4gX2BTb2Z0d2FyZSB0ZXN0IGZpeHR1cmVzYDogaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvVGVzdF9maXh0dXJlI1NvZnR3YXJlCisuLiBfYERlcGVuZGVu
Y3kgaW5qZWN0aW9uYDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVwZW5kZW5jeV9p
bmplY3Rpb24KKworYFNvZnR3YXJlIHRlc3QgZml4dHVyZXNgXyBpbml0aWFsaXplIHRlc3QgZnVu
Y3Rpb25zLiAgVGhleSBwcm92aWRlIGEKK2ZpeGVkIGJhc2VsaW5lIHNvIHRoYXQgdGVzdHMgZXhl
Y3V0ZSByZWxpYWJseSBhbmQgcHJvZHVjZSBjb25zaXN0ZW50LAorcmVwZWF0YWJsZSwgcmVzdWx0
cy4gIEluaXRpYWxpemF0aW9uIG1heSBzZXR1cCBzZXJ2aWNlcywgc3RhdGUsIG9yCitvdGhlciBv
cGVyYXRpbmcgZW52aXJvbm1lbnRzLiAgVGhlc2UgYXJlIGFjY2Vzc2VkIGJ5IHRlc3QgZnVuY3Rp
b25zCit0aHJvdWdoIGFyZ3VtZW50czsgZm9yIGVhY2ggZml4dHVyZSB1c2VkIGJ5IGEgdGVzdCBm
dW5jdGlvbiB0aGVyZSBpcwordHlwaWNhbGx5IGEgcGFyYW1ldGVyIChuYW1lZCBhZnRlciB0aGUg
Zml4dHVyZSkgaW4gdGhlIHRlc3QgZnVuY3Rpb24ncworZGVmaW5pdGlvbi4KKworcHl0ZXN0IGZp
eHR1cmVzIG9mZmVyIGRyYW1hdGljIGltcHJvdmVtZW50cyBvdmVyIHRoZSBjbGFzc2ljIHhVbml0
CitzdHlsZSBvZiBzZXR1cC90ZWFyZG93biBmdW5jdGlvbnM6CiAKICogZml4dHVyZXMgaGF2ZSBl
eHBsaWNpdCBuYW1lcyBhbmQgYXJlIGFjdGl2YXRlZCBieSBkZWNsYXJpbmcgdGhlaXIgdXNlCiAg
IGZyb20gdGVzdCBmdW5jdGlvbnMsIG1vZHVsZXMsIGNsYXNzZXMgb3Igd2hvbGUgcHJvamVjdHMu
CkBAIC0zNCw2ICs0MCw3NCBAQCBib3RoIHN0eWxlcywgbW92aW5nIGluY3JlbWVudGFsbHkgZnJv
bSBjbGFzc2ljIHRvIG5ldyBzdHlsZSwgYXMgeW91CiBwcmVmZXIuICBZb3UgY2FuIGFsc28gc3Rh
cnQgb3V0IGZyb20gZXhpc3RpbmcgOnJlZjpgdW5pdHRlc3QuVGVzdENhc2UKIHN0eWxlIDx1bml0
dGVzdC5UZXN0Q2FzZT5gIG9yIDpyZWY6YG5vc2UgYmFzZWQgPG5vc2VzdHlsZT5gIHByb2plY3Rz
LgogCis6cmVmOmBGaXh0dXJlcyA8Zml4dHVyZXMtYXBpPmAgYXJlIGRlZmluZWQgdXNpbmcgdGhl
Cis6cmVmOmBAcHl0ZXN0LmZpeHR1cmUgPHB5dGVzdC5maXh0dXJlLWFwaT5gIGRlY29yYXRvciwg
OnJlZjpgZGVzY3JpYmVkCitiZWxvdyA8ZnVuY2FyZ3M+YC4gUHl0ZXN0IGhhcyB1c2VmdWwgYnVp
bHQtaW4gZml4dHVyZXMsIGxpc3RlZCBoZXJlCitmb3IgcmVmZXJlbmNlOgorCisgICA6Zml4dHVy
ZTpgY2FwZmRgCisgICAgICAgIENhcHR1cmUsIGFzIHRleHQsIG91dHB1dCB0byBmaWxlIGRlc2Ny
aXB0b3JzIGBgMWBgIGFuZCBgYDJgYC4KKworICAgOmZpeHR1cmU6YGNhcGZkYmluYXJ5YAorICAg
ICAgICBDYXB0dXJlLCBhcyBieXRlcywgb3V0cHV0IHRvIGZpbGUgZGVzY3JpcHRvcnMgYGAxYGAg
YW5kIGBgMmBgLgorCisgICA6Zml4dHVyZTpgY2FwbG9nYAorICAgICAgICBDb250cm9sIGxvZ2dp
bmcgYW5kIGFjY2VzcyBsb2cgZW50cmllcy4KKworICAgOmZpeHR1cmU6YGNhcHN5c2AKKyAgICAg
ICAgQ2FwdHVyZSwgYXMgdGV4dCwgb3V0cHV0IHRvIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5z
dGRlcnJgYC4KKworICAgOmZpeHR1cmU6YGNhcHN5c2JpbmFyeWAKKyAgICAgICAgQ2FwdHVyZSwg
YXMgYnl0ZXMsIG91dHB1dCB0byBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAuCisK
KyAgIDpmaXh0dXJlOmBjYWNoZWAKKyAgICAgICAgU3RvcmUgYW5kIHJldHJpZXZlIHZhbHVlcyBh
Y3Jvc3MgcHl0ZXN0IHJ1bnMuCisKKyAgIDpmaXh0dXJlOmBkb2N0ZXN0X25hbWVzcGFjZWAKKyAg
ICAgICAgUHJvdmlkZSBhIGRpY3QgaW5qZWN0ZWQgaW50byB0aGUgZG9jc3Rlc3RzIG5hbWVzcGFj
ZS4KKworICAgOmZpeHR1cmU6YG1vbmtleXBhdGNoYAorICAgICAgIFRlbXBvcmFyaWx5IG1vZGlm
eSBjbGFzc2VzLCBmdW5jdGlvbnMsIGRpY3Rpb25hcmllcywKKyAgICAgICBgYG9zLmVudmlyb25g
YCwgYW5kIG90aGVyIG9iamVjdHMuCisKKyAgIDpmaXh0dXJlOmBweXRlc3Rjb25maWdgCisgICAg
ICAgIEFjY2VzcyB0byBjb25maWd1cmF0aW9uIHZhbHVlcywgcGx1Z2lubWFuYWdlciBhbmQgcGx1
Z2luIGhvb2tzLgorCisgICA6Zml4dHVyZTpgcmVjb3JkX3Byb3BlcnR5YAorICAgICAgIEFkZCBl
eHRyYSBwcm9wZXJ0aWVzIHRvIHRoZSB0ZXN0LgorCisgICA6Zml4dHVyZTpgcmVjb3JkX3Rlc3Rz
dWl0ZV9wcm9wZXJ0eWAKKyAgICAgICBBZGQgZXh0cmEgcHJvcGVydGllcyB0byB0aGUgdGVzdCBz
dWl0ZS4KKworICAgOmZpeHR1cmU6YHJlY3dhcm5gCisgICAgICAgIFJlY29yZCB3YXJuaW5ncyBl
bWl0dGVkIGJ5IHRlc3QgZnVuY3Rpb25zLgorCisgICA6Zml4dHVyZTpgcmVxdWVzdGAKKyAgICAg
ICBQcm92aWRlIGluZm9ybWF0aW9uIG9uIHRoZSBleGVjdXRpbmcgdGVzdCBmdW5jdGlvbi4KKwor
ICAgOmZpeHR1cmU6YHRlc3RkaXJgCisgICAgICAgIFByb3ZpZGUgYSB0ZW1wb3JhcnkgdGVzdCBk
aXJlY3RvcnkgdG8gYWlkIGluIHJ1bm5pbmcsIGFuZAorICAgICAgICB0ZXN0aW5nLCBweXRlc3Qg
cGx1Z2lucy4KKworICAgOmZpeHR1cmU6YHRtcF9wYXRoYAorICAgICAgIFByb3ZpZGUgYSA6Y2xh
c3M6YHBhdGhsaWIuUGF0aGAgb2JqZWN0IHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICAgICAg
IHdoaWNoIGlzIHVuaXF1ZSB0byBlYWNoIHRlc3QgZnVuY3Rpb24uCisKKyAgIDpmaXh0dXJlOmB0
bXBfcGF0aF9mYWN0b3J5YAorICAgICAgICBNYWtlIHNlc3Npb24tc2NvcGVkIHRlbXBvcmFyeSBk
aXJlY3RvcmllcyBhbmQgcmV0dXJuCisgICAgICAgIDpjbGFzczpgcGF0aGxpYi5QYXRoYCBvYmpl
Y3RzLgorCisgICA6Zml4dHVyZTpgdG1wZGlyYAorICAgICAgICBQcm92aWRlIGEgOmNsYXNzOmBw
eS5wYXRoLmxvY2FsYCBvYmplY3QgdG8gYSB0ZW1wb3JhcnkKKyAgICAgICAgZGlyZWN0b3J5IHdo
aWNoIGlzIHVuaXF1ZSB0byBlYWNoIHRlc3QgZnVuY3Rpb247CisgICAgICAgIHJlcGxhY2VkIGJ5
IDpmaXh0dXJlOmB0bXBfcGF0aGAuCisKKyAgICAgICAgLi4gX2BweS5wYXRoLmxvY2FsYDogaHR0
cHM6Ly9weS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGF0aC5odG1sCisKKyAgIDpmaXh0dXJl
OmB0bXBkaXJfZmFjdG9yeWAKKyAgICAgICAgTWFrZSBzZXNzaW9uLXNjb3BlZCB0ZW1wb3Jhcnkg
ZGlyZWN0b3JpZXMgYW5kIHJldHVybgorICAgICAgICA6Y2xhc3M6YHB5LnBhdGgubG9jYWxgIG9i
amVjdHM7CisgICAgICAgIHJlcGxhY2VkIGJ5IDpmaXh0dXJlOmB0bXBfcGF0aF9mYWN0b3J5YC4K
IAogLi4gX2BmdW5jYXJnc2A6CiAuLiBfYGZ1bmNhcmcgbWVjaGFuaXNtYDoKQEAgLTQ3LDMxICsx
MjEsMzkgQEAgRml4dHVyZXMgYXMgRnVuY3Rpb24gYXJndW1lbnRzCiBUZXN0IGZ1bmN0aW9ucyBj
YW4gcmVjZWl2ZSBmaXh0dXJlIG9iamVjdHMgYnkgbmFtaW5nIHRoZW0gYXMgYW4gaW5wdXQKIGFy
Z3VtZW50LiBGb3IgZWFjaCBhcmd1bWVudCBuYW1lLCBhIGZpeHR1cmUgZnVuY3Rpb24gd2l0aCB0
aGF0IG5hbWUgcHJvdmlkZXMKIHRoZSBmaXh0dXJlIG9iamVjdC4gIEZpeHR1cmUgZnVuY3Rpb25z
IGFyZSByZWdpc3RlcmVkIGJ5IG1hcmtpbmcgdGhlbSB3aXRoCi06cHk6ZnVuYzpgQHB5dGVzdC5m
aXh0dXJlIDxfcHl0ZXN0LnB5dGhvbi5maXh0dXJlPmAuICBMZXQncyBsb29rIGF0IGEgc2ltcGxl
Cis6cHk6ZnVuYzpgQHB5dGVzdC5maXh0dXJlIDxweXRlc3QuZml4dHVyZT5gLiAgTGV0J3MgbG9v
ayBhdCBhIHNpbXBsZQogc2VsZi1jb250YWluZWQgdGVzdCBtb2R1bGUgY29udGFpbmluZyBhIGZp
eHR1cmUgYW5kIGEgdGVzdCBmdW5jdGlvbgotdXNpbmcgaXQ6OgordXNpbmcgaXQ6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiAuL3Rlc3Rfc210cHNpbXBsZS5w
eQogICAgIGltcG9ydCBweXRlc3QKIAorCiAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgZGVmIHNt
dHAoKToKKyAgICBkZWYgc210cF9jb25uZWN0aW9uKCk6CiAgICAgICAgIGltcG9ydCBzbXRwbGli
CisKICAgICAgICAgcmV0dXJuIHNtdHBsaWIuU01UUCgic210cC5nbWFpbC5jb20iLCA1ODcsIHRp
bWVvdXQ9NSkKIAotICAgIGRlZiB0ZXN0X2VobG8oc210cCk6Ci0gICAgICAgIHJlc3BvbnNlLCBt
c2cgPSBzbXRwLmVobG8oKQorCisgICAgZGVmIHRlc3RfZWhsbyhzbXRwX2Nvbm5lY3Rpb24pOgor
ICAgICAgICByZXNwb25zZSwgbXNnID0gc210cF9jb25uZWN0aW9uLmVobG8oKQogICAgICAgICBh
c3NlcnQgcmVzcG9uc2UgPT0gMjUwCi0gICAgICAgIGFzc2VydCAwICMgZm9yIGRlbW8gcHVycG9z
ZXMKKyAgICAgICAgYXNzZXJ0IDAgICMgZm9yIGRlbW8gcHVycG9zZXMKKworSGVyZSwgdGhlIGBg
dGVzdF9laGxvYGAgbmVlZHMgdGhlIGBgc210cF9jb25uZWN0aW9uYGAgZml4dHVyZSB2YWx1ZS4g
IHB5dGVzdAord2lsbCBkaXNjb3ZlciBhbmQgY2FsbCB0aGUgOnB5OmZ1bmM6YEBweXRlc3QuZml4
dHVyZSA8cHl0ZXN0LmZpeHR1cmU+YAorbWFya2VkIGBgc210cF9jb25uZWN0aW9uYGAgZml4dHVy
ZSBmdW5jdGlvbi4gIFJ1bm5pbmcgdGhlIHRlc3QgbG9va3MgbGlrZSB0aGlzOgogCi1IZXJlLCB0
aGUgYGB0ZXN0X2VobG9gYCBuZWVkcyB0aGUgYGBzbXRwYGAgZml4dHVyZSB2YWx1ZS4gIHB5dGVz
dAotd2lsbCBkaXNjb3ZlciBhbmQgY2FsbCB0aGUgOnB5OmZ1bmM6YEBweXRlc3QuZml4dHVyZSA8
X3B5dGVzdC5weXRob24uZml4dHVyZT5gCi1tYXJrZWQgYGBzbXRwYGAgZml4dHVyZSBmdW5jdGlv
bi4gIFJ1bm5pbmcgdGhlIHRlc3QgbG9va3MgbGlrZSB0aGlzOjoKKy4uIGNvZGUtYmxvY2s6OiBw
eXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3Rfc210cHNpbXBsZS5weQogICAgID09PT09PT09PT09
PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24gc3RhcnRzID09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLSAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC0zLngu
eSwgcHktMS54LnksIHBsdWdneS0wLngueQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIs
IGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54
LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgv
LnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKICAgICBjb2xsZWN0
ZWQgMSBpdGVtCiAKICAgICB0ZXN0X3NtdHBzaW1wbGUucHkgRiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTc5LDMwICsxNjEsMzIgQEAg
bWFya2VkIGBgc210cGBgIGZpeHR1cmUgZnVuY3Rpb24uICBSdW5uaW5nIHRoZSB0ZXN0IGxvb2tz
IGxpa2UgdGhpczo6CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxV
UkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIF9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fIHRlc3RfZWhsbyBfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KIAotICAgIHNtdHAgPSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgor
ICAgIHNtdHBfY29ubmVjdGlvbiA9IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+
CiAKLSAgICAgICAgZGVmIHRlc3RfZWhsbyhzbXRwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLCBt
c2cgPSBzbXRwLmVobG8oKQorICAgICAgICBkZWYgdGVzdF9laGxvKHNtdHBfY29ubmVjdGlvbik6
CisgICAgICAgICAgICByZXNwb25zZSwgbXNnID0gc210cF9jb25uZWN0aW9uLmVobG8oKQogICAg
ICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlID09IDI1MAotICAgID4gICAgICAgYXNzZXJ0IDAgIyBm
b3IgZGVtbyBwdXJwb3NlcworICAgID4gICAgICAgYXNzZXJ0IDAgICMgZm9yIGRlbW8gcHVycG9z
ZXMKICAgICBFICAgICAgIGFzc2VydCAwCiAKLSAgICB0ZXN0X3NtdHBzaW1wbGUucHk6MTE6IEFz
c2VydGlvbkVycm9yCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAw
LjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHRlc3Rfc210cHNpbXBs
ZS5weToxNDogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNo
b3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJ
TEVEIHRlc3Rfc210cHNpbXBsZS5weTo6dGVzdF9laGxvIC0gYXNzZXJ0IDAKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09IDEgZmFpbGVkIGluIDAuMTJzID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiAKIEluIHRoZSBmYWlsdXJlIHRyYWNlYmFjayB3ZSBzZWUgdGhhdCB0aGUg
dGVzdCBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggYQotYGBzbXRwYGAgYXJndW1lbnQsIHRoZSBg
YHNtdHBsaWIuU01UUCgpYGAgaW5zdGFuY2UgY3JlYXRlZCBieSB0aGUgZml4dHVyZQorYGBzbXRw
X2Nvbm5lY3Rpb25gYCBhcmd1bWVudCwgdGhlIGBgc210cGxpYi5TTVRQKClgYCBpbnN0YW5jZSBj
cmVhdGVkIGJ5IHRoZSBmaXh0dXJlCiBmdW5jdGlvbi4gIFRoZSB0ZXN0IGZ1bmN0aW9uIGZhaWxz
IG9uIG91ciBkZWxpYmVyYXRlIGBgYXNzZXJ0IDBgYC4gIEhlcmUgaXMKIHRoZSBleGFjdCBwcm90
b2NvbCB1c2VkIGJ5IGBgcHl0ZXN0YGAgdG8gY2FsbCB0aGUgdGVzdCBmdW5jdGlvbiB0aGlzIHdh
eToKIAotMS4gcHl0ZXN0IDpyZWY6YGZpbmRzIDx0ZXN0IGRpc2NvdmVyeT5gIHRoZSBgYHRlc3Rf
ZWhsb2BgIGJlY2F1c2UKKzEuIHB5dGVzdCA6cmVmOmBmaW5kcyA8dGVzdCBkaXNjb3Zlcnk+YCB0
aGUgdGVzdCBgYHRlc3RfZWhsb2BgIGJlY2F1c2UKICAgIG9mIHRoZSBgYHRlc3RfYGAgcHJlZml4
LiAgVGhlIHRlc3QgZnVuY3Rpb24gbmVlZHMgYSBmdW5jdGlvbiBhcmd1bWVudAotICAgbmFtZWQg
YGBzbXRwYGAuICBBIG1hdGNoaW5nIGZpeHR1cmUgZnVuY3Rpb24gaXMgZGlzY292ZXJlZCBieQot
ICAgbG9va2luZyBmb3IgYSBmaXh0dXJlLW1hcmtlZCBmdW5jdGlvbiBuYW1lZCBgYHNtdHBgYC4K
KyAgIG5hbWVkIGBgc210cF9jb25uZWN0aW9uYGAuICBBIG1hdGNoaW5nIGZpeHR1cmUgZnVuY3Rp
b24gaXMgZGlzY292ZXJlZCBieQorICAgbG9va2luZyBmb3IgYSBmaXh0dXJlLW1hcmtlZCBmdW5j
dGlvbiBuYW1lZCBgYHNtdHBfY29ubmVjdGlvbmBgLgogCi0yLiBgYHNtdHAoKWBgIGlzIGNhbGxl
ZCB0byBjcmVhdGUgYW4gaW5zdGFuY2UuCisyLiBgYHNtdHBfY29ubmVjdGlvbigpYGAgaXMgY2Fs
bGVkIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZS4KIAotMy4gYGB0ZXN0X2VobG8oPFNNVFAgaW5zdGFu
Y2U+KWBgIGlzIGNhbGxlZCBhbmQgZmFpbHMgaW4gdGhlIGxhc3QKKzMuIGBgdGVzdF9laGxvKDxz
bXRwX2Nvbm5lY3Rpb24gaW5zdGFuY2U+KWBgIGlzIGNhbGxlZCBhbmQgZmFpbHMgaW4gdGhlIGxh
c3QKICAgIGxpbmUgb2YgdGhlIHRlc3QgZnVuY3Rpb24uCiAKIE5vdGUgdGhhdCBpZiB5b3UgbWlz
c3BlbGwgYSBmdW5jdGlvbiBhcmd1bWVudCBvciB3YW50CkBAIC0xMTEsNyArMTk1LDkgQEAgd2l0
aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KIAogLi4gbm90ZTo6CiAK
LSAgICBZb3UgY2FuIGFsd2F5cyBpc3N1ZSA6OgorICAgIFlvdSBjYW4gYWx3YXlzIGlzc3VlOgor
CisgICAgLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgICAgICBweXRlc3QgLS1maXh0dXJlcyB0
ZXN0X3NpbXBsZWZhY3RvcnkucHkKIApAQCAtMTUzLDYxICsyMzksNzMgQEAgVGhpcyBtYWtlcyB1
c2Ugb2YgdGhlIGF1dG9tYXRpYyBjYWNoaW5nIG1lY2hhbmlzbXMgb2YgcHl0ZXN0LgogCiBBbm90
aGVyIGdvb2QgYXBwcm9hY2ggaXMgYnkgYWRkaW5nIHRoZSBkYXRhIGZpbGVzIGluIHRoZSBgYHRl
c3RzYGAgZm9sZGVyLgogVGhlcmUgYXJlIGFsc28gY29tbXVuaXR5IHBsdWdpbnMgYXZhaWxhYmxl
IHRvIGhlbHAgbWFuYWdpbmcgdGhpcyBhc3BlY3Qgb2YKLXRlc3RpbmcsIGUuZy4gYHB5dGVzdC1k
YXRhZGlyIDxodHRwczovL2dpdGh1Yi5jb20vZ2FicmllbGNuci9weXRlc3QtZGF0YWRpcj5gX18K
LWFuZCBgcHl0ZXN0LWRhdGFmaWxlcyA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXRl
c3QtZGF0YWZpbGVzPmBfXy4KK3Rlc3RpbmcsIGUuZy4gYHB5dGVzdC1kYXRhZGlyIDxodHRwczov
L3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LWRhdGFkaXIvPmBfXworYW5kIGBweXRlc3QtZGF0YWZp
bGVzIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LWRhdGFmaWxlcy8+YF9fLgogCiAu
LiBfc210cHNoYXJlZDoKIAotU2NvcGU6IHNoYXJpbmcgYSBmaXh0dXJlIGluc3RhbmNlIGFjcm9z
cyB0ZXN0cyBpbiBhIGNsYXNzLCBtb2R1bGUgb3Igc2Vzc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorU2NvcGU6IHNoYXJpbmcgZml4dHVyZXMgYWNyb3NzIGNsYXNzZXMsIG1vZHVsZXMsIHBhY2th
Z2VzIG9yIHNlc3Npb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHJlZ2VuZG9jOndpcGUKIAogRml4dHVy
ZXMgcmVxdWlyaW5nIG5ldHdvcmsgYWNjZXNzIGRlcGVuZCBvbiBjb25uZWN0aXZpdHkgYW5kIGFy
ZQogdXN1YWxseSB0aW1lLWV4cGVuc2l2ZSB0byBjcmVhdGUuICBFeHRlbmRpbmcgdGhlIHByZXZp
b3VzIGV4YW1wbGUsIHdlCiBjYW4gYWRkIGEgYGBzY29wZT0ibW9kdWxlImBgIHBhcmFtZXRlciB0
byB0aGUKLTpweTpmdW5jOmBAcHl0ZXN0LmZpeHR1cmUgPF9weXRlc3QucHl0aG9uLmZpeHR1cmU+
YCBpbnZvY2F0aW9uCi10byBjYXVzZSB0aGUgZGVjb3JhdGVkIGBgc210cGBgIGZpeHR1cmUgZnVu
Y3Rpb24gdG8gb25seSBiZSBpbnZva2VkIG9uY2UKLXBlciB0ZXN0ICptb2R1bGUqICh0aGUgZGVm
YXVsdCBpcyB0byBpbnZva2Ugb25jZSBwZXIgdGVzdCAqZnVuY3Rpb24qKS4KKzpweTpmdW5jOmBA
cHl0ZXN0LmZpeHR1cmUgPHB5dGVzdC5maXh0dXJlPmAgaW52b2NhdGlvbgordG8gY2F1c2UgdGhl
IGRlY29yYXRlZCBgYHNtdHBfY29ubmVjdGlvbmBgIGZpeHR1cmUgZnVuY3Rpb24gdG8gb25seSBi
ZSBpbnZva2VkCitvbmNlIHBlciB0ZXN0ICptb2R1bGUqICh0aGUgZGVmYXVsdCBpcyB0byBpbnZv
a2Ugb25jZSBwZXIgdGVzdCAqZnVuY3Rpb24qKS4KIE11bHRpcGxlIHRlc3QgZnVuY3Rpb25zIGlu
IGEgdGVzdCBtb2R1bGUgd2lsbCB0aHVzCi1lYWNoIHJlY2VpdmUgdGhlIHNhbWUgYGBzbXRwYGAg
Zml4dHVyZSBpbnN0YW5jZSwgdGh1cyBzYXZpbmcgdGltZS4KK2VhY2ggcmVjZWl2ZSB0aGUgc2Ft
ZSBgYHNtdHBfY29ubmVjdGlvbmBgIGZpeHR1cmUgaW5zdGFuY2UsIHRodXMgc2F2aW5nIHRpbWUu
CitQb3NzaWJsZSB2YWx1ZXMgZm9yIGBgc2NvcGVgYCBhcmU6IGBgZnVuY3Rpb25gYCwgYGBjbGFz
c2BgLCBgYG1vZHVsZWBgLCBgYHBhY2thZ2VgYCBvciBgYHNlc3Npb25gYC4KIAogVGhlIG5leHQg
ZXhhbXBsZSBwdXRzIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIGludG8gYSBzZXBhcmF0ZSBgYGNvbmZ0
ZXN0LnB5YGAgZmlsZQogc28gdGhhdCB0ZXN0cyBmcm9tIG11bHRpcGxlIHRlc3QgbW9kdWxlcyBp
biB0aGUgZGlyZWN0b3J5IGNhbgotYWNjZXNzIHRoZSBmaXh0dXJlIGZ1bmN0aW9uOjoKK2FjY2Vz
cyB0aGUgZml4dHVyZSBmdW5jdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
IyBjb250ZW50IG9mIGNvbmZ0ZXN0LnB5CiAgICAgaW1wb3J0IHB5dGVzdAogICAgIGltcG9ydCBz
bXRwbGliCiAKKwogICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKLSAgICBkZWYg
c210cCgpOgorICAgIGRlZiBzbXRwX2Nvbm5lY3Rpb24oKToKICAgICAgICAgcmV0dXJuIHNtdHBs
aWIuU01UUCgic210cC5nbWFpbC5jb20iLCA1ODcsIHRpbWVvdXQ9NSkKIAotVGhlIG5hbWUgb2Yg
dGhlIGZpeHR1cmUgYWdhaW4gaXMgYGBzbXRwYGAgYW5kIHlvdSBjYW4gYWNjZXNzIGl0cyByZXN1
bHQgYnkKLWxpc3RpbmcgdGhlIG5hbWUgYGBzbXRwYGAgYXMgYW4gaW5wdXQgcGFyYW1ldGVyIGlu
IGFueSB0ZXN0IG9yIGZpeHR1cmUKLWZ1bmN0aW9uIChpbiBvciBiZWxvdyB0aGUgZGlyZWN0b3J5
IHdoZXJlIGBgY29uZnRlc3QucHlgYCBpcyBsb2NhdGVkKTo6CitUaGUgbmFtZSBvZiB0aGUgZml4
dHVyZSBhZ2FpbiBpcyBgYHNtdHBfY29ubmVjdGlvbmBgIGFuZCB5b3UgY2FuIGFjY2VzcyBpdHMK
K3Jlc3VsdCBieSBsaXN0aW5nIHRoZSBuYW1lIGBgc210cF9jb25uZWN0aW9uYGAgYXMgYW4gaW5w
dXQgcGFyYW1ldGVyIGluIGFueQordGVzdCBvciBmaXh0dXJlIGZ1bmN0aW9uIChpbiBvciBiZWxv
dyB0aGUgZGlyZWN0b3J5IHdoZXJlIGBgY29uZnRlc3QucHlgYCBpcworbG9jYXRlZCk6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X21vZHVsZS5weQog
Ci0gICAgZGVmIHRlc3RfZWhsbyhzbXRwKToKLSAgICAgICAgcmVzcG9uc2UsIG1zZyA9IHNtdHAu
ZWhsbygpCisKKyAgICBkZWYgdGVzdF9laGxvKHNtdHBfY29ubmVjdGlvbik6CisgICAgICAgIHJl
c3BvbnNlLCBtc2cgPSBzbXRwX2Nvbm5lY3Rpb24uZWhsbygpCiAgICAgICAgIGFzc2VydCByZXNw
b25zZSA9PSAyNTAKICAgICAgICAgYXNzZXJ0IGIic210cC5nbWFpbC5jb20iIGluIG1zZwogICAg
ICAgICBhc3NlcnQgMCAgIyBmb3IgZGVtbyBwdXJwb3NlcwogCi0gICAgZGVmIHRlc3Rfbm9vcChz
bXRwKToKLSAgICAgICAgcmVzcG9uc2UsIG1zZyA9IHNtdHAubm9vcCgpCisKKyAgICBkZWYgdGVz
dF9ub29wKHNtdHBfY29ubmVjdGlvbik6CisgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwX2Nv
bm5lY3Rpb24ubm9vcCgpCiAgICAgICAgIGFzc2VydCByZXNwb25zZSA9PSAyNTAKICAgICAgICAg
YXNzZXJ0IDAgICMgZm9yIGRlbW8gcHVycG9zZXMKIAogV2UgZGVsaWJlcmF0ZWx5IGluc2VydCBm
YWlsaW5nIGBgYXNzZXJ0IDBgYCBzdGF0ZW1lbnRzIGluIG9yZGVyIHRvCi1pbnNwZWN0IHdoYXQg
aXMgZ29pbmcgb24gYW5kIGNhbiBub3cgcnVuIHRoZSB0ZXN0czo6CitpbnNwZWN0IHdoYXQgaXMg
Z29pbmcgb24gYW5kIGNhbiBub3cgcnVuIHRoZSB0ZXN0czoKKworLi4gY29kZS1ibG9jazo6IHB5
dGVzdAogCiAgICAgJCBweXRlc3QgdGVzdF9tb2R1bGUucHkKICAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5
LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlm
aWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBw
eS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRl
c3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDIg
aXRlbXMKIAogICAgIHRlc3RfbW9kdWxlLnB5IEZGICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtMjE1LDk0ICszMTMsMTIwIEBAIGlu
c3BlY3Qgd2hhdCBpcyBnb2luZyBvbiBhbmQgY2FuIG5vdyBydW4gdGhlIHRlc3RzOjoKICAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18g
dGVzdF9laGxvIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCi0gICAgc210cCA9
IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CisgICAgc210cF9jb25uZWN0aW9u
ID0gPHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVlZj4KIAotICAgICAgICBkZWYgdGVz
dF9laGxvKHNtdHApOgotICAgICAgICAgICAgcmVzcG9uc2UsIG1zZyA9IHNtdHAuZWhsbygpCisg
ICAgICAgIGRlZiB0ZXN0X2VobG8oc210cF9jb25uZWN0aW9uKToKKyAgICAgICAgICAgIHJlc3Bv
bnNlLCBtc2cgPSBzbXRwX2Nvbm5lY3Rpb24uZWhsbygpCiAgICAgICAgICAgICBhc3NlcnQgcmVz
cG9uc2UgPT0gMjUwCiAgICAgICAgICAgICBhc3NlcnQgYiJzbXRwLmdtYWlsLmNvbSIgaW4gbXNn
CiAgICAgPiAgICAgICBhc3NlcnQgMCAgIyBmb3IgZGVtbyBwdXJwb3NlcwogICAgIEUgICAgICAg
YXNzZXJ0IDAKIAotICAgIHRlc3RfbW9kdWxlLnB5OjY6IEFzc2VydGlvbkVycm9yCisgICAgdGVz
dF9tb2R1bGUucHk6NzogQXNzZXJ0aW9uRXJyb3IKICAgICBfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXyB0ZXN0X25vb3AgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAK
LSAgICBzbXRwID0gPHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVlZj4KKyAgICBzbXRw
X2Nvbm5lY3Rpb24gPSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgogCi0gICAg
ICAgIGRlZiB0ZXN0X25vb3Aoc210cCk6Ci0gICAgICAgICAgICByZXNwb25zZSwgbXNnID0gc210
cC5ub29wKCkKKyAgICAgICAgZGVmIHRlc3Rfbm9vcChzbXRwX2Nvbm5lY3Rpb24pOgorICAgICAg
ICAgICAgcmVzcG9uc2UsIG1zZyA9IHNtdHBfY29ubmVjdGlvbi5ub29wKCkKICAgICAgICAgICAg
IGFzc2VydCByZXNwb25zZSA9PSAyNTAKICAgICA+ICAgICAgIGFzc2VydCAwICAjIGZvciBkZW1v
IHB1cnBvc2VzCiAgICAgRSAgICAgICBhc3NlcnQgMAogCi0gICAgdGVzdF9tb2R1bGUucHk6MTE6
IEFzc2VydGlvbkVycm9yCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAyIGZhaWxlZCBp
biAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHRlc3RfbW9kdWxl
LnB5OjEzOiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hv
cnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlM
RUQgdGVzdF9tb2R1bGUucHk6OnRlc3RfZWhsbyAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3Rf
bW9kdWxlLnB5Ojp0ZXN0X25vb3AgLSBhc3NlcnQgMAorICAgID09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gMiBmYWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAogWW91IHNlZSB0aGUgdHdvIGBgYXNzZXJ0IDBgYCBmYWlsaW5nIGFuZCBtb3JlIGltcG9ydGFu
dGx5IHlvdSBjYW4gYWxzbyBzZWUKLXRoYXQgdGhlIHNhbWUgKG1vZHVsZS1zY29wZWQpIGBgc210
cGBgIG9iamVjdCB3YXMgcGFzc2VkIGludG8gdGhlIHR3bwotdGVzdCBmdW5jdGlvbnMgYmVjYXVz
ZSBweXRlc3Qgc2hvd3MgdGhlIGluY29taW5nIGFyZ3VtZW50IHZhbHVlcyBpbiB0aGUKLXRyYWNl
YmFjay4gIEFzIGEgcmVzdWx0LCB0aGUgdHdvIHRlc3QgZnVuY3Rpb25zIHVzaW5nIGBgc210cGBg
IHJ1biBhcwotcXVpY2sgYXMgYSBzaW5nbGUgb25lIGJlY2F1c2UgdGhleSByZXVzZSB0aGUgc2Ft
ZSBpbnN0YW5jZS4KK3RoYXQgdGhlIHNhbWUgKG1vZHVsZS1zY29wZWQpIGBgc210cF9jb25uZWN0
aW9uYGAgb2JqZWN0IHdhcyBwYXNzZWQgaW50byB0aGUKK3R3byB0ZXN0IGZ1bmN0aW9ucyBiZWNh
dXNlIHB5dGVzdCBzaG93cyB0aGUgaW5jb21pbmcgYXJndW1lbnQgdmFsdWVzIGluIHRoZQordHJh
Y2ViYWNrLiAgQXMgYSByZXN1bHQsIHRoZSB0d28gdGVzdCBmdW5jdGlvbnMgdXNpbmcgYGBzbXRw
X2Nvbm5lY3Rpb25gYCBydW4KK2FzIHF1aWNrIGFzIGEgc2luZ2xlIG9uZSBiZWNhdXNlIHRoZXkg
cmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UuCiAKLUlmIHlvdSBkZWNpZGUgdGhhdCB5b3UgcmF0aGVy
IHdhbnQgdG8gaGF2ZSBhIHNlc3Npb24tc2NvcGVkIGBgc210cGBgCitJZiB5b3UgZGVjaWRlIHRo
YXQgeW91IHJhdGhlciB3YW50IHRvIGhhdmUgYSBzZXNzaW9uLXNjb3BlZCBgYHNtdHBfY29ubmVj
dGlvbmBgCiBpbnN0YW5jZSwgeW91IGNhbiBzaW1wbHkgZGVjbGFyZSBpdDoKIAogLi4gY29kZS1i
bG9jazo6IHB5dGhvbgogCiAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKLSAg
ICBkZWYgc210cCgpOgorICAgIGRlZiBzbXRwX2Nvbm5lY3Rpb24oKToKICAgICAgICAgIyB0aGUg
cmV0dXJuZWQgZml4dHVyZSB2YWx1ZSB3aWxsIGJlIHNoYXJlZCBmb3IKICAgICAgICAgIyBhbGwg
dGVzdHMgbmVlZGluZyBpdAogICAgICAgICAuLi4KIAotRmluYWxseSwgdGhlIGBgY2xhc3NgYCBz
Y29wZSB3aWxsIGludm9rZSB0aGUgZml4dHVyZSBvbmNlIHBlciB0ZXN0ICpjbGFzcyouCiAKK0Zp
eHR1cmUgc2NvcGVzCiteXl5eXl5eXl5eXl5eXgogCi1IaWdoZXItc2NvcGVkIGZpeHR1cmVzIGFy
ZSBpbnN0YW50aWF0ZWQgZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorRml4dHVyZXMgYXJlIGNyZWF0ZWQgd2hlbiBmaXJzdCByZXF1ZXN0ZWQgYnkg
YSB0ZXN0LCBhbmQgYXJlIGRlc3Ryb3llZCBiYXNlZCBvbiB0aGVpciBgYHNjb3BlYGA6CiAKLS4u
IHZlcnNpb25hZGRlZDo6IDMuNQorKiBgYGZ1bmN0aW9uYGA6IHRoZSBkZWZhdWx0IHNjb3BlLCB0
aGUgZml4dHVyZSBpcyBkZXN0cm95ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyogYGBjbGFz
c2BgOiB0aGUgZml4dHVyZSBpcyBkZXN0cm95ZWQgZHVyaW5nIHRlYXJkb3duIG9mIHRoZSBsYXN0
IHRlc3QgaW4gdGhlIGNsYXNzLgorKiBgYG1vZHVsZWBgOiB0aGUgZml4dHVyZSBpcyBkZXN0cm95
ZWQgZHVyaW5nIHRlYXJkb3duIG9mIHRoZSBsYXN0IHRlc3QgaW4gdGhlIG1vZHVsZS4KKyogYGBw
YWNrYWdlYGA6IHRoZSBmaXh0dXJlIGlzIGRlc3Ryb3llZCBkdXJpbmcgdGVhcmRvd24gb2YgdGhl
IGxhc3QgdGVzdCBpbiB0aGUgcGFja2FnZS4KKyogYGBzZXNzaW9uYGA6IHRoZSBmaXh0dXJlIGlz
IGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IHNlc3Npb24uCiAKLVdpdGhpbiBhIGZ1
bmN0aW9uIHJlcXVlc3QgZm9yIGZlYXR1cmVzLCBmaXh0dXJlIG9mIGhpZ2hlci1zY29wZXMgKHN1
Y2ggYXMgYGBzZXNzaW9uYGApIGFyZSBpbnN0YW50aWF0ZWQgZmlyc3QgdGhhbgotbG93ZXItc2Nv
cGVkIGZpeHR1cmVzIChzdWNoIGFzIGBgZnVuY3Rpb25gYCBvciBgYGNsYXNzYGApLiBUaGUgcmVs
YXRpdmUgb3JkZXIgb2YgZml4dHVyZXMgb2Ygc2FtZSBzY29wZSBmb2xsb3dzCi10aGUgZGVjbGFy
ZWQgb3JkZXIgaW4gdGhlIHRlc3QgZnVuY3Rpb24gYW5kIGhvbm91cnMgZGVwZW5kZW5jaWVzIGJl
dHdlZW4gZml4dHVyZXMuCisuLiBub3RlOjoKIAotQ29uc2lkZXIgdGhlIGNvZGUgYmVsb3c6Cisg
ICAgUHl0ZXN0IG9ubHkgY2FjaGVzIG9uZSBpbnN0YW5jZSBvZiBhIGZpeHR1cmUgYXQgYSB0aW1l
LCB3aGljaAorICAgIG1lYW5zIHRoYXQgd2hlbiB1c2luZyBhIHBhcmFtZXRyaXplZCBmaXh0dXJl
LCBweXRlc3QgbWF5IGludm9rZSBhIGZpeHR1cmUgbW9yZSB0aGFuIG9uY2UgaW4KKyAgICB0aGUg
Z2l2ZW4gc2NvcGUuCisKKy4uIF9keW5hbWljIHNjb3BlOgorCitEeW5hbWljIHNjb3BlCiteXl5e
Xl5eXl5eXl5eCisKKy4uIHZlcnNpb25hZGRlZDo6IDUuMgorCitJbiBzb21lIGNhc2VzLCB5b3Ug
bWlnaHQgd2FudCB0byBjaGFuZ2UgdGhlIHNjb3BlIG9mIHRoZSBmaXh0dXJlIHdpdGhvdXQgY2hh
bmdpbmcgdGhlIGNvZGUuCitUbyBkbyB0aGF0LCBwYXNzIGEgY2FsbGFibGUgdG8gYGBzY29wZWBg
LiBUaGUgY2FsbGFibGUgbXVzdCByZXR1cm4gYSBzdHJpbmcgd2l0aCBhIHZhbGlkIHNjb3BlCith
bmQgd2lsbCBiZSBleGVjdXRlZCBvbmx5IG9uY2UgLSBkdXJpbmcgdGhlIGZpeHR1cmUgZGVmaW5p
dGlvbi4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28KK2tleXdvcmQgYXJndW1lbnRzIC0gYGBm
aXh0dXJlX25hbWVgYCBhcyBhIHN0cmluZyBhbmQgYGBjb25maWdgYCB3aXRoIGEgY29uZmlndXJh
dGlvbiBvYmplY3QuCisKK1RoaXMgY2FuIGJlIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gZGVhbGlu
ZyB3aXRoIGZpeHR1cmVzIHRoYXQgbmVlZCB0aW1lIGZvciBzZXR1cCwgbGlrZSBzcGF3bmluZwor
YSBkb2NrZXIgY29udGFpbmVyLiBZb3UgY2FuIHVzZSB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50
IHRvIGNvbnRyb2wgdGhlIHNjb3BlIG9mIHRoZSBzcGF3bmVkCitjb250YWluZXJzIGZvciBkaWZm
ZXJlbnQgZW52aXJvbm1lbnRzLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiAKIC4uIGNvZGUtYmxv
Y2s6OiBweXRob24KIAotICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCi0gICAg
ZGVmIHMxKCk6Ci0gICAgICAgIHBhc3MKKyAgICBkZWYgZGV0ZXJtaW5lX3Njb3BlKGZpeHR1cmVf
bmFtZSwgY29uZmlnKToKKyAgICAgICAgaWYgY29uZmlnLmdldG9wdGlvbigiLS1rZWVwLWNvbnRh
aW5lcnMiLCBOb25lKToKKyAgICAgICAgICAgIHJldHVybiAic2Vzc2lvbiIKKyAgICAgICAgcmV0
dXJuICJmdW5jdGlvbiIKIAogCi0gICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiKQot
ICAgIGRlZiBtMSgpOgotICAgICAgICBwYXNzCisgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPWRl
dGVybWluZV9zY29wZSkKKyAgICBkZWYgZG9ja2VyX2NvbnRhaW5lcigpOgorICAgICAgICB5aWVs
ZCBzcGF3bl9jb250YWluZXIoKQogCiAKLSAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICBkZWYgZjEo
dG1wZGlyKToKLSAgICAgICAgcGFzcwogCitPcmRlcjogSGlnaGVyLXNjb3BlZCBmaXh0dXJlcyBh
cmUgaW5zdGFudGlhdGVkIGZpcnN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICBkZWYgZjIoKToK
LSAgICAgICAgcGFzcwogCiAKLSAgICBkZWYgdGVzdF9mb28oZjEsIG0xLCBmMiwgczEpOgotICAg
ICAgICAuLi4KK1dpdGhpbiBhIGZ1bmN0aW9uIHJlcXVlc3QgZm9yIGZpeHR1cmVzLCB0aG9zZSBv
ZiBoaWdoZXItc2NvcGVzIChzdWNoIGFzIGBgc2Vzc2lvbmBgKSBhcmUgaW5zdGFudGlhdGVkIGJl
Zm9yZQorbG93ZXItc2NvcGVkIGZpeHR1cmVzIChzdWNoIGFzIGBgZnVuY3Rpb25gYCBvciBgYGNs
YXNzYGApLiBUaGUgcmVsYXRpdmUgb3JkZXIgb2YgZml4dHVyZXMgb2Ygc2FtZSBzY29wZSBmb2xs
b3dzCit0aGUgZGVjbGFyZWQgb3JkZXIgaW4gdGhlIHRlc3QgZnVuY3Rpb24gYW5kIGhvbm91cnMg
ZGVwZW5kZW5jaWVzIGJldHdlZW4gZml4dHVyZXMuIEF1dG91c2UgZml4dHVyZXMgd2lsbCBiZQor
aW5zdGFudGlhdGVkIGJlZm9yZSBleHBsaWNpdGx5IHVzZWQgZml4dHVyZXMuCiAKK0NvbnNpZGVy
IHRoZSBjb2RlIGJlbG93OgogCi1UaGUgZml4dHVyZXMgcmVxdWVzdGVkIGJ5IGBgdGVzdF9mb29g
YCB3aWxsIGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorLi4gbGl0ZXJh
bGluY2x1ZGU6OiBleGFtcGxlL2ZpeHR1cmVzL3Rlc3RfZml4dHVyZXNfb3JkZXIucHkKKworVGhl
IGZpeHR1cmVzIHJlcXVlc3RlZCBieSBgYHRlc3Rfb3JkZXJgYCB3aWxsIGJlIGluc3RhbnRpYXRl
ZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgogCiAxLiBgYHMxYGA6IGlzIHRoZSBoaWdoZXN0LXNj
b3BlZCBmaXh0dXJlIChgYHNlc3Npb25gYCkuCiAyLiBgYG0xYGA6IGlzIHRoZSBzZWNvbmQgaGln
aGVzdC1zY29wZWQgZml4dHVyZSAoYGBtb2R1bGVgYCkuCi0zLiBgYHRtcGRpcmBgOiBpcyBhIGBg
ZnVuY3Rpb25gYC1zY29wZWQgZml4dHVyZSwgcmVxdWlyZWQgYnkgYGBmMWBgOiBpdCBuZWVkcyB0
byBiZSBpbnN0YW50aWF0ZWQgYXQgdGhpcyBwb2ludAotICAgYmVjYXVzZSBpdCBpcyBhIGRlcGVu
ZGVuY3kgb2YgYGBmMWBgLgotNC4gYGBmMWBgOiBpcyB0aGUgZmlyc3QgYGBmdW5jdGlvbmBgLXNj
b3BlZCBmaXh0dXJlIGluIGBgdGVzdF9mb29gYCBwYXJhbWV0ZXIgbGlzdC4KLTUuIGBgZjJgYDog
aXMgdGhlIGxhc3QgYGBmdW5jdGlvbmBgLXNjb3BlZCBmaXh0dXJlIGluIGBgdGVzdF9mb29gYCBw
YXJhbWV0ZXIgbGlzdC4KKzMuIGBgYTFgYDogaXMgYSBgYGZ1bmN0aW9uYGAtc2NvcGVkIGBgYXV0
b3VzZWBgIGZpeHR1cmU6IGl0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBvdGhlciBmaXh0
dXJlcworICAgd2l0aGluIHRoZSBzYW1lIHNjb3BlLgorNC4gYGBmM2BgOiBpcyBhIGBgZnVuY3Rp
b25gYC1zY29wZWQgZml4dHVyZSwgcmVxdWlyZWQgYnkgYGBmMWBgOiBpdCBuZWVkcyB0byBiZSBp
bnN0YW50aWF0ZWQgYXQgdGhpcyBwb2ludAorNS4gYGBmMWBgOiBpcyB0aGUgZmlyc3QgYGBmdW5j
dGlvbmBgLXNjb3BlZCBmaXh0dXJlIGluIGBgdGVzdF9vcmRlcmBgIHBhcmFtZXRlciBsaXN0Lgor
Ni4gYGBmMmBgOiBpcyB0aGUgbGFzdCBgYGZ1bmN0aW9uYGAtc2NvcGVkIGZpeHR1cmUgaW4gYGB0
ZXN0X29yZGVyYGAgcGFyYW1ldGVyIGxpc3QuCiAKIAogLi4gX2BmaW5hbGl6YXRpb25gOgpAQCAt
MzIzLDI0ICs0NDcsMjkgQEAgdGhlIGNvZGUgYWZ0ZXIgdGhlICp5aWVsZCogc3RhdGVtZW50IHNl
cnZlcyBhcyB0aGUgdGVhcmRvd24gY29kZToKIAogCiAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3Bl
PSJtb2R1bGUiKQotICAgIGRlZiBzbXRwKCk6Ci0gICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAo
InNtdHAuZ21haWwuY29tIiwgNTg3LCB0aW1lb3V0PTUpCi0gICAgICAgIHlpZWxkIHNtdHAgICMg
cHJvdmlkZSB0aGUgZml4dHVyZSB2YWx1ZQorICAgIGRlZiBzbXRwX2Nvbm5lY3Rpb24oKToKKyAg
ICAgICAgc210cF9jb25uZWN0aW9uID0gc210cGxpYi5TTVRQKCJzbXRwLmdtYWlsLmNvbSIsIDU4
NywgdGltZW91dD01KQorICAgICAgICB5aWVsZCBzbXRwX2Nvbm5lY3Rpb24gICMgcHJvdmlkZSB0
aGUgZml4dHVyZSB2YWx1ZQogICAgICAgICBwcmludCgidGVhcmRvd24gc210cCIpCi0gICAgICAg
IHNtdHAuY2xvc2UoKQorICAgICAgICBzbXRwX2Nvbm5lY3Rpb24uY2xvc2UoKQogCiBUaGUgYGBw
cmludGBgIGFuZCBgYHNtdHAuY2xvc2UoKWBgIHN0YXRlbWVudHMgd2lsbCBleGVjdXRlIHdoZW4g
dGhlIGxhc3QgdGVzdCBpbgogdGhlIG1vZHVsZSBoYXMgZmluaXNoZWQgZXhlY3V0aW9uLCByZWdh
cmRsZXNzIG9mIHRoZSBleGNlcHRpb24gc3RhdHVzIG9mIHRoZQogdGVzdHMuCiAKLUxldCdzIGV4
ZWN1dGUgaXQ6OgorTGV0J3MgZXhlY3V0ZSBpdDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAog
CiAgICAgJCBweXRlc3QgLXMgLXEgLS10Yj1ubwogICAgIEZGdGVhcmRvd24gc210cAogCi0gICAg
MiBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBz
aG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZB
SUxFRCB0ZXN0X21vZHVsZS5weTo6dGVzdF9laGxvIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgdGVz
dF9tb2R1bGUucHk6OnRlc3Rfbm9vcCAtIGFzc2VydCAwCisgICAgMiBmYWlsZWQgaW4gMC4xMnMK
IAotV2Ugc2VlIHRoYXQgdGhlIGBgc210cGBgIGluc3RhbmNlIGlzIGZpbmFsaXplZCBhZnRlciB0
aGUgdHdvCitXZSBzZWUgdGhhdCB0aGUgYGBzbXRwX2Nvbm5lY3Rpb25gYCBpbnN0YW5jZSBpcyBm
aW5hbGl6ZWQgYWZ0ZXIgdGhlIHR3bwogdGVzdHMgZmluaXNoZWQgZXhlY3V0aW9uLiAgTm90ZSB0
aGF0IGlmIHdlIGRlY29yYXRlZCBvdXIgZml4dHVyZQogZnVuY3Rpb24gd2l0aCBgYHNjb3BlPSdm
dW5jdGlvbidgYCB0aGVuIGZpeHR1cmUgc2V0dXAgYW5kIGNsZWFudXAgd291bGQKIG9jY3VyIGFy
b3VuZCBlYWNoIHNpbmdsZSB0ZXN0LiAgSW4gZWl0aGVyIGNhc2UgdGhlIHRlc3QKQEAgLTM1OCwx
NSArNDg3LDQzIEBAIE5vdGUgdGhhdCB3ZSBjYW4gYWxzbyBzZWFtbGVzc2x5IHVzZSB0aGUgYGB5
aWVsZGBgIHN5bnRheCB3aXRoIGBgd2l0aGBgIHN0YXRlbWVuCiAKIAogICAgIEBweXRlc3QuZml4
dHVyZShzY29wZT0ibW9kdWxlIikKLSAgICBkZWYgc210cCgpOgotICAgICAgICB3aXRoIHNtdHBs
aWIuU01UUCgic210cC5nbWFpbC5jb20iLCA1ODcsIHRpbWVvdXQ9NSkgYXMgc210cDoKLSAgICAg
ICAgICAgIHlpZWxkIHNtdHAgICMgcHJvdmlkZSB0aGUgZml4dHVyZSB2YWx1ZQorICAgIGRlZiBz
bXRwX2Nvbm5lY3Rpb24oKToKKyAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoInNtdHAuZ21haWwu
Y29tIiwgNTg3LCB0aW1lb3V0PTUpIGFzIHNtdHBfY29ubmVjdGlvbjoKKyAgICAgICAgICAgIHlp
ZWxkIHNtdHBfY29ubmVjdGlvbiAgIyBwcm92aWRlIHRoZSBmaXh0dXJlIHZhbHVlCiAKIAotVGhl
IGBgc210cGBgIGNvbm5lY3Rpb24gd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgdGhlIHRlc3QgZmluaXNo
ZWQgZXhlY3V0aW9uCi1iZWNhdXNlIHRoZSBgYHNtdHBgYCBvYmplY3QgYXV0b21hdGljYWxseSBj
bG9zZXMgd2hlbgorVGhlIGBgc210cF9jb25uZWN0aW9uYGAgY29ubmVjdGlvbiB3aWxsIGJlIGNs
b3NlZCBhZnRlciB0aGUgdGVzdCBmaW5pc2hlZAorZXhlY3V0aW9uIGJlY2F1c2UgdGhlIGBgc210
cF9jb25uZWN0aW9uYGAgb2JqZWN0IGF1dG9tYXRpY2FsbHkgY2xvc2VzIHdoZW4KIHRoZSBgYHdp
dGhgYCBzdGF0ZW1lbnQgZW5kcy4KIAorVXNpbmcgdGhlIGNvbnRleHRsaWIuRXhpdFN0YWNrIGNv
bnRleHQgbWFuYWdlciBmaW5hbGl6ZXJzIHdpbGwgYWx3YXlzIGJlIGNhbGxlZAorcmVnYXJkbGVz
cyBpZiB0aGUgZml4dHVyZSAqc2V0dXAqIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gVGhpcyBp
cyBoYW5keSB0byBwcm9wZXJseQorY2xvc2UgYWxsIHJlc291cmNlcyBjcmVhdGVkIGJ5IGEgZml4
dHVyZSBldmVuIGlmIG9uZSBvZiB0aGVtIGZhaWxzIHRvIGJlIGNyZWF0ZWQvYWNxdWlyZWQ6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudCBvZiB0ZXN0X3lpZWxkMy5w
eQorCisgICAgaW1wb3J0IGNvbnRleHRsaWIKKworICAgIGltcG9ydCBweXRlc3QKKworCisgICAg
QGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgY29ubmVjdChwb3J0KToKKyAgICAg
ICAgLi4uICAjIGNyZWF0ZSBjb25uZWN0aW9uCisgICAgICAgIHlpZWxkCisgICAgICAgIC4uLiAg
IyBjbG9zZSBjb25uZWN0aW9uCisKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBlcXVp
cG1lbnRzKCk6CisgICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoK
KyAgICAgICAgICAgIHlpZWxkIFtzdGFjay5lbnRlcl9jb250ZXh0KGNvbm5lY3QocG9ydCkpIGZv
ciBwb3J0IGluICgiQzEiLCAiQzMiLCAiQzI4IildCisKK0luIHRoZSBleGFtcGxlIGFib3ZlLCBp
ZiBgYCJDMjgiYGAgZmFpbHMgd2l0aCBhbiBleGNlcHRpb24sIGBgIkMxImBgIGFuZCBgYCJDMyJg
YCB3aWxsIHN0aWxsCitiZSBwcm9wZXJseSBjbG9zZWQuCisKIE5vdGUgdGhhdCBpZiBhbiBleGNl
cHRpb24gaGFwcGVucyBkdXJpbmcgdGhlICpzZXR1cCogY29kZSAoYmVmb3JlIHRoZSBgYHlpZWxk
YGAga2V5d29yZCksIHRoZQogKnRlYXJkb3duKiBjb2RlIChhZnRlciB0aGUgYGB5aWVsZGBgKSB3
aWxsIG5vdCBiZSBjYWxsZWQuCiAKQEAgLTM3NCw3ICs1MzEsNyBAQCBBbiBhbHRlcm5hdGl2ZSBv
cHRpb24gZm9yIGV4ZWN1dGluZyAqdGVhcmRvd24qIGNvZGUgaXMgdG8KIG1ha2UgdXNlIG9mIHRo
ZSBgYGFkZGZpbmFsaXplcmBgIG1ldGhvZCBvZiB0aGUgYHJlcXVlc3QtY29udGV4dGBfIG9iamVj
dCB0byByZWdpc3RlcgogZmluYWxpemF0aW9uIGZ1bmN0aW9ucy4KIAotSGVyZSdzIHRoZSBgYHNt
dHBgYCBmaXh0dXJlIGNoYW5nZWQgdG8gdXNlIGBgYWRkZmluYWxpemVyYGAgZm9yIGNsZWFudXA6
CitIZXJlJ3MgdGhlIGBgc210cF9jb25uZWN0aW9uYGAgZml4dHVyZSBjaGFuZ2VkIHRvIHVzZSBg
YGFkZGZpbmFsaXplcmBgIGZvciBjbGVhbnVwOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAK
QEAgLTM4NCwzOCArNTQxLDUwIEBAIEhlcmUncyB0aGUgYGBzbXRwYGAgZml4dHVyZSBjaGFuZ2Vk
IHRvIHVzZSBgYGFkZGZpbmFsaXplcmBgIGZvciBjbGVhbnVwOgogCiAKICAgICBAcHl0ZXN0LmZp
eHR1cmUoc2NvcGU9Im1vZHVsZSIpCi0gICAgZGVmIHNtdHAocmVxdWVzdCk6Ci0gICAgICAgIHNt
dHAgPSBzbXRwbGliLlNNVFAoInNtdHAuZ21haWwuY29tIiwgNTg3LCB0aW1lb3V0PTUpCisgICAg
ZGVmIHNtdHBfY29ubmVjdGlvbihyZXF1ZXN0KToKKyAgICAgICAgc210cF9jb25uZWN0aW9uID0g
c210cGxpYi5TTVRQKCJzbXRwLmdtYWlsLmNvbSIsIDU4NywgdGltZW91dD01KQogCiAgICAgICAg
IGRlZiBmaW4oKToKLSAgICAgICAgICAgIHByaW50KCJ0ZWFyZG93biBzbXRwIikKLSAgICAgICAg
ICAgIHNtdHAuY2xvc2UoKQorICAgICAgICAgICAgcHJpbnQoInRlYXJkb3duIHNtdHBfY29ubmVj
dGlvbiIpCisgICAgICAgICAgICBzbXRwX2Nvbm5lY3Rpb24uY2xvc2UoKQogCiAgICAgICAgIHJl
cXVlc3QuYWRkZmluYWxpemVyKGZpbikKLSAgICAgICAgcmV0dXJuIHNtdHAgICMgcHJvdmlkZSB0
aGUgZml4dHVyZSB2YWx1ZQorICAgICAgICByZXR1cm4gc210cF9jb25uZWN0aW9uICAjIHByb3Zp
ZGUgdGhlIGZpeHR1cmUgdmFsdWUKIAogCi1Cb3RoIGBgeWllbGRgYCBhbmQgYGBhZGRmaW5hbGl6
ZXJgYCBtZXRob2RzIHdvcmsgc2ltaWxhcmx5IGJ5IGNhbGxpbmcgdGhlaXIgY29kZSBhZnRlciB0
aGUgdGVzdAotZW5kcywgYnV0IGBgYWRkZmluYWxpemVyYGAgaGFzIHR3byBrZXkgZGlmZmVyZW5j
ZXMgb3ZlciBgYHlpZWxkYGA6CitIZXJlJ3MgdGhlIGBgZXF1aXBtZW50c2BgIGZpeHR1cmUgY2hh
bmdlZCB0byB1c2UgYGBhZGRmaW5hbGl6ZXJgYCBmb3IgY2xlYW51cDoKKworLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCi0xLiBJdCBpcyBwb3NzaWJsZSB0byByZWdpc3RlciBtdWx0aXBsZSBmaW5h
bGl6ZXIgZnVuY3Rpb25zLgorICAgICMgY29udGVudCBvZiB0ZXN0X3lpZWxkMy5weQogCi0yLiBG
aW5hbGl6ZXJzIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCByZWdhcmRsZXNzIGlmIHRoZSBmaXh0dXJl
ICpzZXR1cCogY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uLgotICAgVGhpcyBpcyBoYW5keSB0byBw
cm9wZXJseSBjbG9zZSBhbGwgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgYSBmaXh0dXJlIGV2ZW4gaWYg
b25lIG9mIHRoZW0KLSAgIGZhaWxzIHRvIGJlIGNyZWF0ZWQvYWNxdWlyZWQ6OgorICAgIGltcG9y
dCBjb250ZXh0bGliCisgICAgaW1wb3J0IGZ1bmN0b29scwogCi0gICAgICAgIEBweXRlc3QuZml4
dHVyZQotICAgICAgICBkZWYgZXF1aXBtZW50cyhyZXF1ZXN0KToKLSAgICAgICAgICAgIHIgPSBb
XQotICAgICAgICAgICAgZm9yIHBvcnQgaW4gKCdDMScsICdDMycsICdDMjgnKToKLSAgICAgICAg
ICAgICAgICBlcXVpcCA9IGNvbm5lY3QocG9ydCkKLSAgICAgICAgICAgICAgICByZXF1ZXN0LmFk
ZGZpbmFsaXplcihlcXVpcC5kaXNjb25uZWN0KQotICAgICAgICAgICAgICAgIHIuYXBwZW5kKGVx
dWlwKQotICAgICAgICAgICAgcmV0dXJuIHIKKyAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgIEluIHRo
ZSBleGFtcGxlIGFib3ZlLCBpZiBgYCJDMjgiYGAgZmFpbHMgd2l0aCBhbiBleGNlcHRpb24sIGBg
IkMxImBgIGFuZCBgYCJDMyJgYCB3aWxsIHN0aWxsCi0gICBiZSBwcm9wZXJseSBjbG9zZWQuIE9m
IGNvdXJzZSwgaWYgYW4gZXhjZXB0aW9uIGhhcHBlbnMgYmVmb3JlIHRoZSBmaW5hbGl6ZSBmdW5j
dGlvbiBpcwotICAgcmVnaXN0ZXJlZCB0aGVuIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkLgorCisg
ICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgY29ubmVjdChwb3J0KToKKyAg
ICAgICAgLi4uICAjIGNyZWF0ZSBjb25uZWN0aW9uCisgICAgICAgIHlpZWxkCisgICAgICAgIC4u
LiAgIyBjbG9zZSBjb25uZWN0aW9uCisKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBl
cXVpcG1lbnRzKHJlcXVlc3QpOgorICAgICAgICByID0gW10KKyAgICAgICAgZm9yIHBvcnQgaW4g
KCJDMSIsICJDMyIsICJDMjgiKToKKyAgICAgICAgICAgIGNtID0gY29ubmVjdChwb3J0KQorICAg
ICAgICAgICAgZXF1aXAgPSBjbS5fX2VudGVyX18oKQorICAgICAgICAgICAgcmVxdWVzdC5hZGRm
aW5hbGl6ZXIoZnVuY3Rvb2xzLnBhcnRpYWwoY20uX19leGl0X18sIE5vbmUsIE5vbmUsIE5vbmUp
KQorICAgICAgICAgICAgci5hcHBlbmQoZXF1aXApCisgICAgICAgIHJldHVybiByCisKKworQm90
aCBgYHlpZWxkYGAgYW5kIGBgYWRkZmluYWxpemVyYGAgbWV0aG9kcyB3b3JrIHNpbWlsYXJseSBi
eSBjYWxsaW5nIHRoZWlyIGNvZGUgYWZ0ZXIgdGhlIHRlc3QKK2VuZHMuIE9mIGNvdXJzZSwgaWYg
YW4gZXhjZXB0aW9uIGhhcHBlbnMgYmVmb3JlIHRoZSBmaW5hbGl6ZSBmdW5jdGlvbiBpcyByZWdp
c3RlcmVkIHRoZW4gaXQKK3dpbGwgbm90IGJlIGV4ZWN1dGVkLgogCiAKIC4uIF9gcmVxdWVzdC1j
b250ZXh0YDoKQEAgLTQyMyw1OCArNTkyLDEwNCBAQCBlbmRzLCBidXQgYGBhZGRmaW5hbGl6ZXJg
YCBoYXMgdHdvIGtleSBkaWZmZXJlbmNlcyBvdmVyIGBgeWllbGRgYDoKIEZpeHR1cmVzIGNhbiBp
bnRyb3NwZWN0IHRoZSByZXF1ZXN0aW5nIHRlc3QgY29udGV4dAogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1GaXh0dXJlIGZ1
bmN0aW9ucyBjYW4gYWNjZXB0IHRoZSA6cHk6Y2xhc3M6YHJlcXVlc3QgPEZpeHR1cmVSZXF1ZXN0
PmAgb2JqZWN0CitGaXh0dXJlIGZ1bmN0aW9ucyBjYW4gYWNjZXB0IHRoZSA6cHk6Y2xhc3M6YHJl
cXVlc3QgPF9weXRlc3QuZml4dHVyZXMuRml4dHVyZVJlcXVlc3Q+YCBvYmplY3QKIHRvIGludHJv
c3BlY3QgdGhlICJyZXF1ZXN0aW5nIiB0ZXN0IGZ1bmN0aW9uLCBjbGFzcyBvciBtb2R1bGUgY29u
dGV4dC4KLUZ1cnRoZXIgZXh0ZW5kaW5nIHRoZSBwcmV2aW91cyBgYHNtdHBgYCBmaXh0dXJlIGV4
YW1wbGUsIGxldCdzCi1yZWFkIGFuIG9wdGlvbmFsIHNlcnZlciBVUkwgZnJvbSB0aGUgdGVzdCBt
b2R1bGUgd2hpY2ggdXNlcyBvdXIgZml4dHVyZTo6CitGdXJ0aGVyIGV4dGVuZGluZyB0aGUgcHJl
dmlvdXMgYGBzbXRwX2Nvbm5lY3Rpb25gYCBmaXh0dXJlIGV4YW1wbGUsIGxldCdzCityZWFkIGFu
IG9wdGlvbmFsIHNlcnZlciBVUkwgZnJvbSB0aGUgdGVzdCBtb2R1bGUgd2hpY2ggdXNlcyBvdXIg
Zml4dHVyZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIGNv
bmZ0ZXN0LnB5CiAgICAgaW1wb3J0IHB5dGVzdAogICAgIGltcG9ydCBzbXRwbGliCiAKKwogICAg
IEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKLSAgICBkZWYgc210cChyZXF1ZXN0KToK
KyAgICBkZWYgc210cF9jb25uZWN0aW9uKHJlcXVlc3QpOgogICAgICAgICBzZXJ2ZXIgPSBnZXRh
dHRyKHJlcXVlc3QubW9kdWxlLCAic210cHNlcnZlciIsICJzbXRwLmdtYWlsLmNvbSIpCi0gICAg
ICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoc2VydmVyLCA1ODcsIHRpbWVvdXQ9NSkKLSAgICAgICAg
eWllbGQgc210cAotICAgICAgICBwcmludCAoImZpbmFsaXppbmcgJXMgKCVzKSIgJSAoc210cCwg
c2VydmVyKSkKLSAgICAgICAgc210cC5jbG9zZSgpCisgICAgICAgIHNtdHBfY29ubmVjdGlvbiA9
IHNtdHBsaWIuU01UUChzZXJ2ZXIsIDU4NywgdGltZW91dD01KQorICAgICAgICB5aWVsZCBzbXRw
X2Nvbm5lY3Rpb24KKyAgICAgICAgcHJpbnQoImZpbmFsaXppbmcge30gKHt9KSIuZm9ybWF0KHNt
dHBfY29ubmVjdGlvbiwgc2VydmVyKSkKKyAgICAgICAgc210cF9jb25uZWN0aW9uLmNsb3NlKCkK
IAogV2UgdXNlIHRoZSBgYHJlcXVlc3QubW9kdWxlYGAgYXR0cmlidXRlIHRvIG9wdGlvbmFsbHkg
b2J0YWluIGFuCiBgYHNtdHBzZXJ2ZXJgYCBhdHRyaWJ1dGUgZnJvbSB0aGUgdGVzdCBtb2R1bGUu
ICBJZiB3ZSBqdXN0IGV4ZWN1dGUKLWFnYWluLCBub3RoaW5nIG11Y2ggaGFzIGNoYW5nZWQ6Ogor
YWdhaW4sIG5vdGhpbmcgbXVjaCBoYXMgY2hhbmdlZDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVz
dAogCiAgICAgJCBweXRlc3QgLXMgLXEgLS10Yj1ubwogICAgIEZGZmluYWxpemluZyA8c210cGxp
Yi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPiAoc210cC5nbWFpbC5jb20pCiAKLSAgICAyIGZh
aWxlZCBpbiAwLjEyIHNlY29uZHMKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0
IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVE
IHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X2VobG8gLSBhc3NlcnQgMAorICAgIEZBSUxFRCB0ZXN0X21v
ZHVsZS5weTo6dGVzdF9ub29wIC0gYXNzZXJ0IDAKKyAgICAyIGZhaWxlZCBpbiAwLjEycwogCiBM
ZXQncyBxdWlja2x5IGNyZWF0ZSBhbm90aGVyIHRlc3QgbW9kdWxlIHRoYXQgYWN0dWFsbHkgc2V0
cyB0aGUKLXNlcnZlciBVUkwgaW4gaXRzIG1vZHVsZSBuYW1lc3BhY2U6Ogorc2VydmVyIFVSTCBp
biBpdHMgbW9kdWxlIG5hbWVzcGFjZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
IyBjb250ZW50IG9mIHRlc3RfYW5vdGhlcnNtdHAucHkKIAogICAgIHNtdHBzZXJ2ZXIgPSAibWFp
bC5weXRob24ub3JnIiAgIyB3aWxsIGJlIHJlYWQgYnkgc210cCBmaXh0dXJlCiAKLSAgICBkZWYg
dGVzdF9zaG93aGVsbyhzbXRwKToKLSAgICAgICAgYXNzZXJ0IDAsIHNtdHAuaGVsbygpCiAKLVJ1
bm5pbmcgaXQ6OgorICAgIGRlZiB0ZXN0X3Nob3doZWxvKHNtdHBfY29ubmVjdGlvbik6CisgICAg
ICAgIGFzc2VydCAwLCBzbXRwX2Nvbm5lY3Rpb24uaGVsbygpCisKK1J1bm5pbmcgaXQ6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xcSAtLXRiPXNob3J0IHRlc3Rf
YW5vdGhlcnNtdHAucHkKICAgICBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KICAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0gRkFJTFVSRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3Rfc2hvd2hlbG8g
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwotICAgIHRlc3RfYW5vdGhlcnNtdHAucHk6
NTogaW4gdGVzdF9zaG93aGVsbwotICAgICAgICBhc3NlcnQgMCwgc210cC5oZWxvKCkKKyAgICB0
ZXN0X2Fub3RoZXJzbXRwLnB5OjY6IGluIHRlc3Rfc2hvd2hlbG8KKyAgICAgICAgYXNzZXJ0IDAs
IHNtdHBfY29ubmVjdGlvbi5oZWxvKCkKICAgICBFICAgQXNzZXJ0aW9uRXJyb3I6ICgyNTAsIGIn
bWFpbC5weXRob24ub3JnJykKICAgICBFICAgYXNzZXJ0IDAKICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIENhcHR1cmVkIHN0ZG91dCB0ZWFyZG93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgICAgZmluYWxpemluZyA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPiAo
bWFpbC5weXRob24ub3JnKQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVz
dCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVz
dF9hbm90aGVyc210cC5weTo6dGVzdF9zaG93aGVsbyAtIEFzc2VydGlvbkVycm9yOiAoMjUwLCBi
J21haWwuLi4uCiAKLXZvaWxhISBUaGUgYGBzbXRwYGAgZml4dHVyZSBmdW5jdGlvbiBwaWNrZWQg
dXAgb3VyIG1haWwgc2VydmVyIG5hbWUKK3ZvaWxhISBUaGUgYGBzbXRwX2Nvbm5lY3Rpb25gYCBm
aXh0dXJlIGZ1bmN0aW9uIHBpY2tlZCB1cCBvdXIgbWFpbCBzZXJ2ZXIgbmFtZQogZnJvbSB0aGUg
bW9kdWxlIG5hbWVzcGFjZS4KIAorLi4gX2B1c2luZy1tYXJrZXJzYDoKKworVXNpbmcgbWFya2Vy
cyB0byBwYXNzIGRhdGEgdG8gZml4dHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNpbmcgdGhlIDpweTpjbGFzczpg
cmVxdWVzdCA8X3B5dGVzdC5maXh0dXJlcy5GaXh0dXJlUmVxdWVzdD5gIG9iamVjdCwgYSBmaXh0
dXJlIGNhbiBhbHNvIGFjY2VzcworbWFya2VycyB3aGljaCBhcmUgYXBwbGllZCB0byBhIHRlc3Qg
ZnVuY3Rpb24uIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBwYXNzIGRhdGEKK2ludG8gYSBmaXh0dXJl
IGZyb20gYSB0ZXN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBpbXBvcnQgcHl0
ZXN0CisKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBmaXh0KHJlcXVlc3QpOgorICAg
ICAgICBtYXJrZXIgPSByZXF1ZXN0Lm5vZGUuZ2V0X2Nsb3Nlc3RfbWFya2VyKCJmaXh0X2RhdGEi
KQorICAgICAgICBpZiBtYXJrZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgSGFuZGxlIG1pc3Np
bmcgbWFya2VyIGluIHNvbWUgd2F5Li4uCisgICAgICAgICAgICBkYXRhID0gTm9uZQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgZGF0YSA9IG1hcmtlci5hcmdzWzBdCisKKyAgICAgICAgIyBE
byBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YQorICAgICAgICByZXR1cm4gZGF0YQorCisKKyAgICBA
cHl0ZXN0Lm1hcmsuZml4dF9kYXRhKDQyKQorICAgIGRlZiB0ZXN0X2ZpeHQoZml4dCk6CisgICAg
ICAgIGFzc2VydCBmaXh0ID09IDQyCisKIC4uIF9gZml4dHVyZS1mYWN0b3J5YDoKIAogRmFjdG9y
aWVzIGFzIGZpeHR1cmVzCkBAIC00ODUsMTYgKzcwMCwxNCBAQCBvZiBhIGZpeHR1cmUgaXMgbmVl
ZGVkIG11bHRpcGxlIHRpbWVzIGluIGEgc2luZ2xlIHRlc3QuIEluc3RlYWQgb2YgcmV0dXJuaW5n
CiBkYXRhIGRpcmVjdGx5LCB0aGUgZml4dHVyZSBpbnN0ZWFkIHJldHVybnMgYSBmdW5jdGlvbiB3
aGljaCBnZW5lcmF0ZXMgdGhlIGRhdGEuCiBUaGlzIGZ1bmN0aW9uIGNhbiB0aGVuIGJlIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgdGVzdC4KIAotRmFjdG9yaWVzIGNhbiBoYXZlIGhhdmUg
cGFyYW1ldGVycyBhcyBuZWVkZWQ6OgorRmFjdG9yaWVzIGNhbiBoYXZlIHBhcmFtZXRlcnMgYXMg
bmVlZGVkOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBAcHl0ZXN0LmZpeHR1cmUK
ICAgICBkZWYgbWFrZV9jdXN0b21lcl9yZWNvcmQoKToKLQogICAgICAgICBkZWYgX21ha2VfY3Vz
dG9tZXJfcmVjb3JkKG5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg
ICAibmFtZSI6IG5hbWUsCi0gICAgICAgICAgICAgICAgIm9yZGVycyI6IFtdCi0gICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4geyJuYW1lIjogbmFtZSwgIm9yZGVycyI6IFtdfQogCiAg
ICAgICAgIHJldHVybiBfbWFrZV9jdXN0b21lcl9yZWNvcmQKIApAQCAtNTA0LDcgKzcxNyw5IEBA
IEZhY3RvcmllcyBjYW4gaGF2ZSBoYXZlIHBhcmFtZXRlcnMgYXMgbmVlZGVkOjoKICAgICAgICAg
Y3VzdG9tZXJfMiA9IG1ha2VfY3VzdG9tZXJfcmVjb3JkKCJNaWtlIikKICAgICAgICAgY3VzdG9t
ZXJfMyA9IG1ha2VfY3VzdG9tZXJfcmVjb3JkKCJNZXJlZGl0aCIpCiAKLUlmIHRoZSBkYXRhIGNy
ZWF0ZWQgYnkgdGhlIGZhY3RvcnkgcmVxdWlyZXMgbWFuYWdpbmcsIHRoZSBmaXh0dXJlIGNhbiB0
YWtlIGNhcmUgb2YgdGhhdDo6CitJZiB0aGUgZGF0YSBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5IHJl
cXVpcmVzIG1hbmFnaW5nLCB0aGUgZml4dHVyZSBjYW4gdGFrZSBjYXJlIG9mIHRoYXQ6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIEBweXRlc3QuZml4dHVyZQogICAgIGRlZiBtYWtl
X2N1c3RvbWVyX3JlY29yZCgpOgpAQCAtNTM1LDkwICs3NTAsOTkgQEAgUGFyYW1ldHJpemluZyBm
aXh0dXJlcwogCiBGaXh0dXJlIGZ1bmN0aW9ucyBjYW4gYmUgcGFyYW1ldHJpemVkIGluIHdoaWNo
IGNhc2UgdGhleSB3aWxsIGJlIGNhbGxlZAogbXVsdGlwbGUgdGltZXMsIGVhY2ggdGltZSBleGVj
dXRpbmcgdGhlIHNldCBvZiBkZXBlbmRlbnQgdGVzdHMsIGkuIGUuIHRoZQotdGVzdHMgdGhhdCBk
ZXBlbmQgb24gdGhpcyBmaXh0dXJlLiAgVGVzdCBmdW5jdGlvbnMgZG8gdXN1YWxseSBub3QgbmVl
ZAordGVzdHMgdGhhdCBkZXBlbmQgb24gdGhpcyBmaXh0dXJlLiAgVGVzdCBmdW5jdGlvbnMgdXN1
YWxseSBkbyBub3QgbmVlZAogdG8gYmUgYXdhcmUgb2YgdGhlaXIgcmUtcnVubmluZy4gIEZpeHR1
cmUgcGFyYW1ldHJpemF0aW9uIGhlbHBzIHRvCiB3cml0ZSBleGhhdXN0aXZlIGZ1bmN0aW9uYWwg
dGVzdHMgZm9yIGNvbXBvbmVudHMgd2hpY2ggdGhlbXNlbHZlcyBjYW4gYmUKIGNvbmZpZ3VyZWQg
aW4gbXVsdGlwbGUgd2F5cy4KIAogRXh0ZW5kaW5nIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3ZSBj
YW4gZmxhZyB0aGUgZml4dHVyZSB0byBjcmVhdGUgdHdvCi1gYHNtdHBgYCBmaXh0dXJlIGluc3Rh
bmNlcyB3aGljaCB3aWxsIGNhdXNlIGFsbCB0ZXN0cyB1c2luZyB0aGUgZml4dHVyZQorYGBzbXRw
X2Nvbm5lY3Rpb25gYCBmaXh0dXJlIGluc3RhbmNlcyB3aGljaCB3aWxsIGNhdXNlIGFsbCB0ZXN0
cyB1c2luZyB0aGUgZml4dHVyZQogdG8gcnVuIHR3aWNlLiAgVGhlIGZpeHR1cmUgZnVuY3Rpb24g
Z2V0cyBhY2Nlc3MgdG8gZWFjaCBwYXJhbWV0ZXIKLXRocm91Z2ggdGhlIHNwZWNpYWwgOnB5OmNs
YXNzOmByZXF1ZXN0IDxGaXh0dXJlUmVxdWVzdD5gIG9iamVjdDo6Cit0aHJvdWdoIHRoZSBzcGVj
aWFsIDpweTpjbGFzczpgcmVxdWVzdCA8Rml4dHVyZVJlcXVlc3Q+YCBvYmplY3Q6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogICAgIGlt
cG9ydCBweXRlc3QKICAgICBpbXBvcnQgc210cGxpYgogCi0gICAgQHB5dGVzdC5maXh0dXJlKHNj
b3BlPSJtb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXM9WyJzbXRwLmdtYWlsLmNv
bSIsICJtYWlsLnB5dGhvbi5vcmciXSkKLSAgICBkZWYgc210cChyZXF1ZXN0KToKLSAgICAgICAg
c210cCA9IHNtdHBsaWIuU01UUChyZXF1ZXN0LnBhcmFtLCA1ODcsIHRpbWVvdXQ9NSkKLSAgICAg
ICAgeWllbGQgc210cAotICAgICAgICBwcmludCAoImZpbmFsaXppbmcgJXMiICUgc210cCkKLSAg
ICAgICAgc210cC5jbG9zZSgpCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIs
IHBhcmFtcz1bInNtdHAuZ21haWwuY29tIiwgIm1haWwucHl0aG9uLm9yZyJdKQorICAgIGRlZiBz
bXRwX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CisgICAgICAgIHNtdHBfY29ubmVjdGlvbiA9IHNtdHBs
aWIuU01UUChyZXF1ZXN0LnBhcmFtLCA1ODcsIHRpbWVvdXQ9NSkKKyAgICAgICAgeWllbGQgc210
cF9jb25uZWN0aW9uCisgICAgICAgIHByaW50KCJmaW5hbGl6aW5nIHt9Ii5mb3JtYXQoc210cF9j
b25uZWN0aW9uKSkKKyAgICAgICAgc210cF9jb25uZWN0aW9uLmNsb3NlKCkKIAogVGhlIG1haW4g
Y2hhbmdlIGlzIHRoZSBkZWNsYXJhdGlvbiBvZiBgYHBhcmFtc2BgIHdpdGgKLTpweTpmdW5jOmBA
cHl0ZXN0LmZpeHR1cmUgPF9weXRlc3QucHl0aG9uLmZpeHR1cmU+YCwgYSBsaXN0IG9mIHZhbHVl
cworOnB5OmZ1bmM6YEBweXRlc3QuZml4dHVyZSA8cHl0ZXN0LmZpeHR1cmU+YCwgYSBsaXN0IG9m
IHZhbHVlcwogZm9yIGVhY2ggb2Ygd2hpY2ggdGhlIGZpeHR1cmUgZnVuY3Rpb24gd2lsbCBleGVj
dXRlIGFuZCBjYW4gYWNjZXNzCiBhIHZhbHVlIHZpYSBgYHJlcXVlc3QucGFyYW1gYC4gIE5vIHRl
c3QgZnVuY3Rpb24gY29kZSBuZWVkcyB0byBjaGFuZ2UuCi1TbyBsZXQncyBqdXN0IGRvIGFub3Ro
ZXIgcnVuOjoKK1NvIGxldCdzIGp1c3QgZG8gYW5vdGhlciBydW46CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIHRlc3RfbW9kdWxlLnB5CiAgICAgRkZGRiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWzEwMCVdCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEZBSUxVUkVT
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIF9fX19fX19fX19fX19fX19f
X19fX19fXyB0ZXN0X2VobG9bc210cC5nbWFpbC5jb21dIF9fX19fX19fX19fX19fX19fX19fX19f
X18KIAotICAgIHNtdHAgPSA8c210cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgorICAg
IHNtdHBfY29ubmVjdGlvbiA9IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAK
LSAgICAgICAgZGVmIHRlc3RfZWhsbyhzbXRwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLCBtc2cg
PSBzbXRwLmVobG8oKQorICAgICAgICBkZWYgdGVzdF9laGxvKHNtdHBfY29ubmVjdGlvbik6Cisg
ICAgICAgICAgICByZXNwb25zZSwgbXNnID0gc210cF9jb25uZWN0aW9uLmVobG8oKQogICAgICAg
ICAgICAgYXNzZXJ0IHJlc3BvbnNlID09IDI1MAogICAgICAgICAgICAgYXNzZXJ0IGIic210cC5n
bWFpbC5jb20iIGluIG1zZwogICAgID4gICAgICAgYXNzZXJ0IDAgICMgZm9yIGRlbW8gcHVycG9z
ZXMKICAgICBFICAgICAgIGFzc2VydCAwCiAKLSAgICB0ZXN0X21vZHVsZS5weTo2OiBBc3NlcnRp
b25FcnJvcgorICAgIHRlc3RfbW9kdWxlLnB5Ojc6IEFzc2VydGlvbkVycm9yCiAgICAgX19fX19f
X19fX19fX19fX19fX19fX19fIHRlc3Rfbm9vcFtzbXRwLmdtYWlsLmNvbV0gX19fX19fX19fX19f
X19fX19fX19fX19fXwogCi0gICAgc210cCA9IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVh
ZGJlZWY+CisgICAgc210cF9jb25uZWN0aW9uID0gPHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhk
ZWFkYmVlZj4KIAotICAgICAgICBkZWYgdGVzdF9ub29wKHNtdHApOgotICAgICAgICAgICAgcmVz
cG9uc2UsIG1zZyA9IHNtdHAubm9vcCgpCisgICAgICAgIGRlZiB0ZXN0X25vb3Aoc210cF9jb25u
ZWN0aW9uKToKKyAgICAgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwX2Nvbm5lY3Rpb24ubm9v
cCgpCiAgICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2UgPT0gMjUwCiAgICAgPiAgICAgICBhc3Nl
cnQgMCAgIyBmb3IgZGVtbyBwdXJwb3NlcwogICAgIEUgICAgICAgYXNzZXJ0IDAKIAotICAgIHRl
c3RfbW9kdWxlLnB5OjExOiBBc3NlcnRpb25FcnJvcgorICAgIHRlc3RfbW9kdWxlLnB5OjEzOiBB
c3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2VobG9bbWFp
bC5weXRob24ub3JnXSBfX19fX19fX19fX19fX19fX19fX19fX18KIAotICAgIHNtdHAgPSA8c210
cGxpYi5TTVRQIG9iamVjdCBhdCAweGRlYWRiZWVmPgorICAgIHNtdHBfY29ubmVjdGlvbiA9IDxz
bXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAKLSAgICAgICAgZGVmIHRlc3RfZWhs
byhzbXRwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwLmVobG8oKQorICAgICAg
ICBkZWYgdGVzdF9laGxvKHNtdHBfY29ubmVjdGlvbik6CisgICAgICAgICAgICByZXNwb25zZSwg
bXNnID0gc210cF9jb25uZWN0aW9uLmVobG8oKQogICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNl
ID09IDI1MAogICAgID4gICAgICAgYXNzZXJ0IGIic210cC5nbWFpbC5jb20iIGluIG1zZwotICAg
IEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2VydCBiJ3NtdHAuZ21haWwuY29tJyBpbiBiJ21h
aWwucHl0aG9uLm9yZ1xuUElQRUxJTklOR1xuU0laRSA1MTIwMDAwMFxuRVRSTlxuU1RBUlRUTFNc
bkFVVEggRElHRVNULU1ENSBOVExNIENSQU0tTUQ1XG5FTkhBTkNFRFNUQVRVU0NPREVTXG44QklU
TUlNRVxuRFNOXG5TTVRQVVRGOCcKKyAgICBFICAgICAgIEFzc2VydGlvbkVycm9yOiBhc3NlcnQg
YidzbXRwLmdtYWlsLmNvbScgaW4gYidtYWlsLnB5dGhvbi5vcmdcblBJUEVMSU5JTkdcblNJWkUg
NTEyMDAwMDBcbkVUUk5cblNUQVJUVExTXG5BVVRIIERJR0VTVC1NRDUgTlRMTSBDUkFNLU1ENVxu
RU5IQU5DRURTVEFUVVNDT0RFU1xuOEJJVE1JTUVcbkRTTlxuU01UUFVURjhcbkNIVU5LSU5HJwog
Ci0gICAgdGVzdF9tb2R1bGUucHk6NTogQXNzZXJ0aW9uRXJyb3IKKyAgICB0ZXN0X21vZHVsZS5w
eTo2OiBBc3NlcnRpb25FcnJvcgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhcHR1
cmVkIHN0ZG91dCBzZXR1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBmaW5hbGl6
aW5nIDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAgICAgX19fX19fX19fX19f
X19fX19fX19fX19fIHRlc3Rfbm9vcFttYWlsLnB5dGhvbi5vcmddIF9fX19fX19fX19fX19fX19f
X19fX19fXwogCi0gICAgc210cCA9IDxzbXRwbGliLlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+
CisgICAgc210cF9jb25uZWN0aW9uID0gPHNtdHBsaWIuU01UUCBvYmplY3QgYXQgMHhkZWFkYmVl
Zj4KIAotICAgICAgICBkZWYgdGVzdF9ub29wKHNtdHApOgotICAgICAgICAgICAgcmVzcG9uc2Us
IG1zZyA9IHNtdHAubm9vcCgpCisgICAgICAgIGRlZiB0ZXN0X25vb3Aoc210cF9jb25uZWN0aW9u
KToKKyAgICAgICAgICAgIHJlc3BvbnNlLCBtc2cgPSBzbXRwX2Nvbm5lY3Rpb24ubm9vcCgpCiAg
ICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2UgPT0gMjUwCiAgICAgPiAgICAgICBhc3NlcnQgMCAg
IyBmb3IgZGVtbyBwdXJwb3NlcwogICAgIEUgICAgICAgYXNzZXJ0IDAKIAotICAgIHRlc3RfbW9k
dWxlLnB5OjExOiBBc3NlcnRpb25FcnJvcgorICAgIHRlc3RfbW9kdWxlLnB5OjEzOiBBc3NlcnRp
b25FcnJvcgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FwdHVyZWQgc3Rkb3V0IHRl
YXJkb3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBmaW5hbGl6aW5nIDxzbXRwbGli
LlNNVFAgb2JqZWN0IGF0IDB4ZGVhZGJlZWY+Ci0gICAgNCBmYWlsZWQgaW4gMC4xMiBzZWNvbmRz
CisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9
PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X21vZHVsZS5weTo6dGVz
dF9laGxvW3NtdHAuZ21haWwuY29tXSAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3RfbW9kdWxl
LnB5Ojp0ZXN0X25vb3Bbc210cC5nbWFpbC5jb21dIC0gYXNzZXJ0IDAKKyAgICBGQUlMRUQgdGVz
dF9tb2R1bGUucHk6OnRlc3RfZWhsb1ttYWlsLnB5dGhvbi5vcmddIC0gQXNzZXJ0aW9uRXJyb3I6
IGFzc2VyLi4uCisgICAgRkFJTEVEIHRlc3RfbW9kdWxlLnB5Ojp0ZXN0X25vb3BbbWFpbC5weXRo
b24ub3JnXSAtIGFzc2VydCAwCisgICAgNCBmYWlsZWQgaW4gMC4xMnMKIAogV2Ugc2VlIHRoYXQg
b3VyIHR3byB0ZXN0IGZ1bmN0aW9ucyBlYWNoIHJhbiB0d2ljZSwgYWdhaW5zdCB0aGUgZGlmZmVy
ZW50Ci1gYHNtdHBgYCBpbnN0YW5jZXMuICBOb3RlIGFsc28sIHRoYXQgd2l0aCB0aGUgYGBtYWls
LnB5dGhvbi5vcmdgYAorYGBzbXRwX2Nvbm5lY3Rpb25gYCBpbnN0YW5jZXMuICBOb3RlIGFsc28s
IHRoYXQgd2l0aCB0aGUgYGBtYWlsLnB5dGhvbi5vcmdgYAogY29ubmVjdGlvbiB0aGUgc2Vjb25k
IHRlc3QgZmFpbHMgaW4gYGB0ZXN0X2VobG9gYCBiZWNhdXNlIGEKIGRpZmZlcmVudCBzZXJ2ZXIg
c3RyaW5nIGlzIGV4cGVjdGVkIHRoYW4gd2hhdCBhcnJpdmVkLgogCkBAIC02MjksNjIgKzg1Myw3
MyBAQCBiZSB1c2VkIHdpdGggYGAta2BgIHRvIHNlbGVjdCBzcGVjaWZpYyBjYXNlcyB0byBydW4s
IGFuZCB0aGV5IHdpbGwKIGFsc28gaWRlbnRpZnkgdGhlIHNwZWNpZmljIGNhc2Ugd2hlbiBvbmUg
aXMgZmFpbGluZy4gIFJ1bm5pbmcgcHl0ZXN0CiB3aXRoIGBgLS1jb2xsZWN0LW9ubHlgYCB3aWxs
IHNob3cgdGhlIGdlbmVyYXRlZCBJRHMuCiAKLU51bWJlcnMsIHN0cmluZ3MsIGJvb2xlYW5zIGFu
ZCBOb25lIHdpbGwgaGF2ZSB0aGVpciB1c3VhbCBzdHJpbmcKK051bWJlcnMsIHN0cmluZ3MsIGJv
b2xlYW5zIGFuZCBgYE5vbmVgYCB3aWxsIGhhdmUgdGhlaXIgdXN1YWwgc3RyaW5nCiByZXByZXNl
bnRhdGlvbiB1c2VkIGluIHRoZSB0ZXN0IElELiBGb3Igb3RoZXIgb2JqZWN0cywgcHl0ZXN0IHdp
bGwKIG1ha2UgYSBzdHJpbmcgYmFzZWQgb24gdGhlIGFyZ3VtZW50IG5hbWUuICBJdCBpcyBwb3Nz
aWJsZSB0byBjdXN0b21pc2UKIHRoZSBzdHJpbmcgdXNlZCBpbiBhIHRlc3QgSUQgZm9yIGEgY2Vy
dGFpbiBmaXh0dXJlIHZhbHVlIGJ5IHVzaW5nIHRoZQotYGBpZHNgYCBrZXl3b3JkIGFyZ3VtZW50
OjoKK2BgaWRzYGAga2V5d29yZCBhcmd1bWVudDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgog
CiAgICAjIGNvbnRlbnQgb2YgdGVzdF9pZHMucHkKICAgIGltcG9ydCBweXRlc3QKIAorCiAgICBA
cHl0ZXN0LmZpeHR1cmUocGFyYW1zPVswLCAxXSwgaWRzPVsic3BhbSIsICJoYW0iXSkKICAgIGRl
ZiBhKHJlcXVlc3QpOgogICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCiAKKwogICAgZGVmIHRl
c3RfYShhKToKICAgICAgICBwYXNzCiAKKwogICAgZGVmIGlkZm4oZml4dHVyZV92YWx1ZSk6CiAg
ICAgICAgaWYgZml4dHVyZV92YWx1ZSA9PSAwOgogICAgICAgICAgICByZXR1cm4gImVnZ3MiCiAg
ICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAorCiAgICBAcHl0ZXN0LmZpeHR1
cmUocGFyYW1zPVswLCAxXSwgaWRzPWlkZm4pCiAgICBkZWYgYihyZXF1ZXN0KToKICAgICAgICBy
ZXR1cm4gcmVxdWVzdC5wYXJhbQogCisKICAgIGRlZiB0ZXN0X2IoYik6CiAgICAgICAgcGFzcwog
CiBUaGUgYWJvdmUgc2hvd3MgaG93IGBgaWRzYGAgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3Ry
aW5ncyB0byB1c2Ugb3IKIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUg
Zml4dHVyZSB2YWx1ZSBhbmQgdGhlbgogaGFzIHRvIHJldHVybiBhIHN0cmluZyB0byB1c2UuICBJ
biB0aGUgbGF0dGVyIGNhc2UgaWYgdGhlIGZ1bmN0aW9uCi1yZXR1cm4gYGBOb25lYGAgdGhlbiBw
eXRlc3QncyBhdXRvLWdlbmVyYXRlZCBJRCB3aWxsIGJlIHVzZWQuCityZXR1cm5zIGBgTm9uZWBg
IHRoZW4gcHl0ZXN0J3MgYXV0by1nZW5lcmF0ZWQgSUQgd2lsbCBiZSB1c2VkLgogCi1SdW5uaW5n
IHRoZSBhYm92ZSB0ZXN0cyByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgdGVzdCBJRHMgYmVpbmcg
dXNlZDo6CitSdW5uaW5nIHRoZSBhYm92ZSB0ZXN0cyByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcg
dGVzdCBJRHMgYmVpbmcgdXNlZDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAkIHB5
dGVzdCAtLWNvbGxlY3Qtb25seQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qg
c2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgcGxhdGZvcm0g
bGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54
LnkKLSAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICBwbGF0Zm9ybSBs
aW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngu
eQorICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgIHJvb3RkaXI6
ICRSRUdFTkRPQ19UTVBESVIKICAgIGNvbGxlY3RlZCAxMCBpdGVtcwotICAgPE1vZHVsZSAndGVz
dF9hbm90aGVyc210cC5weSc+Ci0gICAgIDxGdW5jdGlvbiAndGVzdF9zaG93aGVsb1tzbXRwLmdt
YWlsLmNvbV0nPgotICAgICA8RnVuY3Rpb24gJ3Rlc3Rfc2hvd2hlbG9bbWFpbC5weXRob24ub3Jn
XSc+Ci0gICA8TW9kdWxlICd0ZXN0X2lkcy5weSc+Ci0gICAgIDxGdW5jdGlvbiAndGVzdF9hW3Nw
YW1dJz4KLSAgICAgPEZ1bmN0aW9uICd0ZXN0X2FbaGFtXSc+Ci0gICAgIDxGdW5jdGlvbiAndGVz
dF9iW2VnZ3NdJz4KLSAgICAgPEZ1bmN0aW9uICd0ZXN0X2JbMV0nPgotICAgPE1vZHVsZSAndGVz
dF9tb2R1bGUucHknPgotICAgICA8RnVuY3Rpb24gJ3Rlc3RfZWhsb1tzbXRwLmdtYWlsLmNvbV0n
PgotICAgICA8RnVuY3Rpb24gJ3Rlc3Rfbm9vcFtzbXRwLmdtYWlsLmNvbV0nPgotICAgICA8RnVu
Y3Rpb24gJ3Rlc3RfZWhsb1ttYWlsLnB5dGhvbi5vcmddJz4KLSAgICAgPEZ1bmN0aW9uICd0ZXN0
X25vb3BbbWFpbC5weXRob24ub3JnXSc+Ci0KLSAgID09PT09PT09PT09PT09PT09PT09PT09IG5v
IHRlc3RzIHJhbiBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT0KKworICAg
PE1vZHVsZSB0ZXN0X2Fub3RoZXJzbXRwLnB5PgorICAgICA8RnVuY3Rpb24gdGVzdF9zaG93aGVs
b1tzbXRwLmdtYWlsLmNvbV0+CisgICAgIDxGdW5jdGlvbiB0ZXN0X3Nob3doZWxvW21haWwucHl0
aG9uLm9yZ10+CisgICA8TW9kdWxlIHRlc3RfaWRzLnB5PgorICAgICA8RnVuY3Rpb24gdGVzdF9h
W3NwYW1dPgorICAgICA8RnVuY3Rpb24gdGVzdF9hW2hhbV0+CisgICAgIDxGdW5jdGlvbiB0ZXN0
X2JbZWdnc10+CisgICAgIDxGdW5jdGlvbiB0ZXN0X2JbMV0+CisgICA8TW9kdWxlIHRlc3RfbW9k
dWxlLnB5PgorICAgICA8RnVuY3Rpb24gdGVzdF9laGxvW3NtdHAuZ21haWwuY29tXT4KKyAgICAg
PEZ1bmN0aW9uIHRlc3Rfbm9vcFtzbXRwLmdtYWlsLmNvbV0+CisgICAgIDxGdW5jdGlvbiB0ZXN0
X2VobG9bbWFpbC5weXRob24ub3JnXT4KKyAgICAgPEZ1bmN0aW9uIHRlc3Rfbm9vcFttYWlsLnB5
dGhvbi5vcmddPgorCisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PSBubyB0ZXN0cyByYW4g
aW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIF9gZml4dHVyZS1wYXJh
bWV0cml6ZS1tYXJrc2A6CiAKQEAgLTY5NCw4MiArOTI5LDk2IEBAIFVzaW5nIG1hcmtzIHdpdGgg
cGFyYW1ldHJpemVkIGZpeHR1cmVzCiA6ZnVuYzpgcHl0ZXN0LnBhcmFtYCBjYW4gYmUgdXNlZCB0
byBhcHBseSBtYXJrcyBpbiB2YWx1ZXMgc2V0cyBvZiBwYXJhbWV0cml6ZWQgZml4dHVyZXMgaW4g
dGhlIHNhbWUgd2F5CiB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgd2l0aCA6cmVmOmBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUgPEBweXRlc3QubWFyay5wYXJhbWV0cml6ZT5gLgogCi1FeGFtcGxlOjoK
K0V4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0
ZXN0X2ZpeHR1cmVfbWFya3MucHkKICAgICBpbXBvcnQgcHl0ZXN0CisKKwogICAgIEBweXRlc3Qu
Zml4dHVyZShwYXJhbXM9WzAsIDEsIHB5dGVzdC5wYXJhbSgyLCBtYXJrcz1weXRlc3QubWFyay5z
a2lwKV0pCiAgICAgZGVmIGRhdGFfc2V0KHJlcXVlc3QpOgogICAgICAgICByZXR1cm4gcmVxdWVz
dC5wYXJhbQogCisKICAgICBkZWYgdGVzdF9kYXRhKGRhdGFfc2V0KToKICAgICAgICAgcGFzcwog
Ci1SdW5uaW5nIHRoaXMgdGVzdCB3aWxsICpza2lwKiB0aGUgaW52b2NhdGlvbiBvZiBgYGRhdGFf
c2V0YGAgd2l0aCB2YWx1ZSBgYDJgYDo6CitSdW5uaW5nIHRoaXMgdGVzdCB3aWxsICpza2lwKiB0
aGUgaW52b2NhdGlvbiBvZiBgYGRhdGFfc2V0YGAgd2l0aCB2YWx1ZSBgYDJgYDoKKworLi4gY29k
ZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgdGVzdF9maXh0dXJlX21hcmtzLnB5IC12
CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAz
LngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJF
RklYL2Jpbi9weXRob24zLjUKLSAgICBjYWNoZWRpcjogLnB5dGVzdF9jYWNoZQotICAgIHJvb3Rk
aXI6ICRSRUdFTkRPQ19UTVBESVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0
aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhP
Tl9QUkVGSVgvYmluL3B5dGhvbgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0
X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RpbmcgLi4u
IGNvbGxlY3RlZCAzIGl0ZW1zCiAKICAgICB0ZXN0X2ZpeHR1cmVfbWFya3MucHk6OnRlc3RfZGF0
YVswXSBQQVNTRUQgICAgICAgICAgICAgICAgICAgICAgICAgICBbIDMzJV0KICAgICB0ZXN0X2Zp
eHR1cmVfbWFya3MucHk6OnRlc3RfZGF0YVsxXSBQQVNTRUQgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbIDY2JV0KICAgICB0ZXN0X2ZpeHR1cmVfbWFya3MucHk6OnRlc3RfZGF0YVsyXSBTS0lQ
UEVEICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09
PT09PT0gMiBwYXNzZWQsIDEgc2tpcHBlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09
PT09PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PSAyIHBhc3NlZCwgMSBza2lwcGVkIGlu
IDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIF9gaW50ZXJkZXBlbmRlbnQgZml4
dHVyZXNgOgogCiBNb2R1bGFyaXR5OiB1c2luZyBmaXh0dXJlcyBmcm9tIGEgZml4dHVyZSBmdW5j
dGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1Zb3UgY2FuIG5vdCBvbmx5IHVzZSBmaXh0dXJlcyBpbiB0ZXN0IGZ1bmN0aW9u
cyBidXQgZml4dHVyZSBmdW5jdGlvbnMKK0luIGFkZGl0aW9uIHRvIHVzaW5nIGZpeHR1cmVzIGlu
IHRlc3QgZnVuY3Rpb25zLCBmaXh0dXJlIGZ1bmN0aW9ucwogY2FuIHVzZSBvdGhlciBmaXh0dXJl
cyB0aGVtc2VsdmVzLiAgVGhpcyBjb250cmlidXRlcyB0byBhIG1vZHVsYXIgZGVzaWduCiBvZiB5
b3VyIGZpeHR1cmVzIGFuZCBhbGxvd3MgcmUtdXNlIG9mIGZyYW1ld29yay1zcGVjaWZpYyBmaXh0
dXJlcyBhY3Jvc3MKIG1hbnkgcHJvamVjdHMuICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSBjYW4g
ZXh0ZW5kIHRoZSBwcmV2aW91cyBleGFtcGxlCiBhbmQgaW5zdGFudGlhdGUgYW4gb2JqZWN0IGBg
YXBwYGAgd2hlcmUgd2Ugc3RpY2sgdGhlIGFscmVhZHkgZGVmaW5lZAotYGBzbXRwYGAgcmVzb3Vy
Y2UgaW50byBpdDo6CitgYHNtdHBfY29ubmVjdGlvbmBgIHJlc291cmNlIGludG8gaXQ6CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X2FwcHNldHVwLnB5
CiAKICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICBjbGFzcyBBcHAob2JqZWN0KToKLSAgICAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHNtdHApOgotICAgICAgICAgICAgc2VsZi5zbXRwID0gc210cAor
CisgICAgY2xhc3MgQXBwOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc210cF9jb25uZWN0
aW9uKToKKyAgICAgICAgICAgIHNlbGYuc210cF9jb25uZWN0aW9uID0gc210cF9jb25uZWN0aW9u
CisKIAogICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKLSAgICBkZWYgYXBwKHNt
dHApOgotICAgICAgICByZXR1cm4gQXBwKHNtdHApCisgICAgZGVmIGFwcChzbXRwX2Nvbm5lY3Rp
b24pOgorICAgICAgICByZXR1cm4gQXBwKHNtdHBfY29ubmVjdGlvbikKKwogCi0gICAgZGVmIHRl
c3Rfc210cF9leGlzdHMoYXBwKToKLSAgICAgICAgYXNzZXJ0IGFwcC5zbXRwCisgICAgZGVmIHRl
c3Rfc210cF9jb25uZWN0aW9uX2V4aXN0cyhhcHApOgorICAgICAgICBhc3NlcnQgYXBwLnNtdHBf
Y29ubmVjdGlvbgogCiBIZXJlIHdlIGRlY2xhcmUgYW4gYGBhcHBgYCBmaXh0dXJlIHdoaWNoIHJl
Y2VpdmVzIHRoZSBwcmV2aW91c2x5IGRlZmluZWQKLWBgc210cGBgIGZpeHR1cmUgYW5kIGluc3Rh
bnRpYXRlcyBhbiBgYEFwcGBgIG9iamVjdCB3aXRoIGl0LiAgTGV0J3MgcnVuIGl0OjoKK2Bgc210
cF9jb25uZWN0aW9uYGAgZml4dHVyZSBhbmQgaW5zdGFudGlhdGVzIGFuIGBgQXBwYGAgb2JqZWN0
IHdpdGggaXQuICBMZXQncyBydW4gaXQ6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAg
ICQgcHl0ZXN0IC12IHRlc3RfYXBwc2V0dXAucHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0g
ICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55
LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhvbjMuNQotICAgIGNhY2hl
ZGlyOiAucHl0ZXN0X2NhY2hlCi0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmls
ZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHkt
MS54LnksIHBsdWdneS0wLngueSAtLSAkUFlUSE9OX1BSRUZJWC9iaW4vcHl0aG9uCisgICAgY2Fj
aGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5E
T0NfVE1QRElSCiAgICAgY29sbGVjdGluZyAuLi4gY29sbGVjdGVkIDIgaXRlbXMKIAotICAgIHRl
c3RfYXBwc2V0dXAucHk6OnRlc3Rfc210cF9leGlzdHNbc210cC5nbWFpbC5jb21dIFBBU1NFRCAg
ICAgICAgICAgIFsgNTAlXQotICAgIHRlc3RfYXBwc2V0dXAucHk6OnRlc3Rfc210cF9leGlzdHNb
bWFpbC5weXRob24ub3JnXSBQQVNTRUQgICAgICAgICAgIFsxMDAlXQorICAgIHRlc3RfYXBwc2V0
dXAucHk6OnRlc3Rfc210cF9jb25uZWN0aW9uX2V4aXN0c1tzbXRwLmdtYWlsLmNvbV0gUEFTU0VE
IFsgNTAlXQorICAgIHRlc3RfYXBwc2V0dXAucHk6OnRlc3Rfc210cF9jb25uZWN0aW9uX2V4aXN0
c1ttYWlsLnB5dGhvbi5vcmddIFBBU1NFRCBbMTAwJV0KIAotICAgID09PT09PT09PT09PT09PT09
PT09PT09PT0gMiBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT09PT09
PT0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDIgcGFzc2VkIGluIDAuMTJzID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUR1ZSB0byB0aGUgcGFyYW1ldHJpemF0aW9u
IG9mIGBgc210cGBgIHRoZSB0ZXN0IHdpbGwgcnVuIHR3aWNlIHdpdGggdHdvCitEdWUgdG8gdGhl
IHBhcmFtZXRyaXphdGlvbiBvZiBgYHNtdHBfY29ubmVjdGlvbmBgLCB0aGUgdGVzdCB3aWxsIHJ1
biB0d2ljZSB3aXRoIHR3bwogZGlmZmVyZW50IGBgQXBwYGAgaW5zdGFuY2VzIGFuZCByZXNwZWN0
aXZlIHNtdHAgc2VydmVycy4gIFRoZXJlIGlzIG5vCi1uZWVkIGZvciB0aGUgYGBhcHBgYCBmaXh0
dXJlIHRvIGJlIGF3YXJlIG9mIHRoZSBgYHNtdHBgYCBwYXJhbWV0cml6YXRpb24KLWFzIHB5dGVz
dCB3aWxsIGZ1bGx5IGFuYWx5c2UgdGhlIGZpeHR1cmUgZGVwZW5kZW5jeSBncmFwaC4KK25lZWQg
Zm9yIHRoZSBgYGFwcGBgIGZpeHR1cmUgdG8gYmUgYXdhcmUgb2YgdGhlIGBgc210cF9jb25uZWN0
aW9uYGAKK3BhcmFtZXRyaXphdGlvbiBiZWNhdXNlIHB5dGVzdCB3aWxsIGZ1bGx5IGFuYWx5c2Ug
dGhlIGZpeHR1cmUgZGVwZW5kZW5jeSBncmFwaC4KIAotTm90ZSwgdGhhdCB0aGUgYGBhcHBgYCBm
aXh0dXJlIGhhcyBhIHNjb3BlIG9mIGBgbW9kdWxlYGAgYW5kIHVzZXMgYQotbW9kdWxlLXNjb3Bl
ZCBgYHNtdHBgYCBmaXh0dXJlLiAgVGhlIGV4YW1wbGUgd291bGQgc3RpbGwgd29yayBpZiBgYHNt
dHBgYAotd2FzIGNhY2hlZCBvbiBhIGBgc2Vzc2lvbmBgIHNjb3BlOiBpdCBpcyBmaW5lIGZvciBm
aXh0dXJlcyB0byB1c2UKK05vdGUgdGhhdCB0aGUgYGBhcHBgYCBmaXh0dXJlIGhhcyBhIHNjb3Bl
IG9mIGBgbW9kdWxlYGAgYW5kIHVzZXMgYQorbW9kdWxlLXNjb3BlZCBgYHNtdHBfY29ubmVjdGlv
bmBgIGZpeHR1cmUuICBUaGUgZXhhbXBsZSB3b3VsZCBzdGlsbCB3b3JrIGlmCitgYHNtdHBfY29u
bmVjdGlvbmBgIHdhcyBjYWNoZWQgb24gYSBgYHNlc3Npb25gYCBzY29wZTogaXQgaXMgZmluZSBm
b3IgZml4dHVyZXMgdG8gdXNlCiAiYnJvYWRlciIgc2NvcGVkIGZpeHR1cmVzIGJ1dCBub3QgdGhl
IG90aGVyIHdheSByb3VuZDoKIEEgc2Vzc2lvbi1zY29wZWQgZml4dHVyZSBjb3VsZCBub3QgdXNl
IGEgbW9kdWxlLXNjb3BlZCBvbmUgaW4gYQogbWVhbmluZ2Z1bCB3YXkuCkBAIC03ODgsNDIgKzEw
MzcsNTMgQEAgZmlyc3QgZXhlY3V0ZSB3aXRoIG9uZSBpbnN0YW5jZSBhbmQgdGhlbiBmaW5hbGl6
ZXJzIGFyZSBjYWxsZWQKIGJlZm9yZSB0aGUgbmV4dCBmaXh0dXJlIGluc3RhbmNlIGlzIGNyZWF0
ZWQuICBBbW9uZyBvdGhlciB0aGluZ3MsCiB0aGlzIGVhc2VzIHRlc3Rpbmcgb2YgYXBwbGljYXRp
b25zIHdoaWNoIGNyZWF0ZSBhbmQgdXNlIGdsb2JhbCBzdGF0ZS4KIAotVGhlIGZvbGxvd2luZyBl
eGFtcGxlIHVzZXMgdHdvIHBhcmFtZXRyaXplZCBmaXh0dXJlLCBvbmUgb2Ygd2hpY2ggaXMKK1Ro
ZSBmb2xsb3dpbmcgZXhhbXBsZSB1c2VzIHR3byBwYXJhbWV0cml6ZWQgZml4dHVyZXMsIG9uZSBv
ZiB3aGljaCBpcwogc2NvcGVkIG9uIGEgcGVyLW1vZHVsZSBiYXNpcywgYW5kIGFsbCB0aGUgZnVu
Y3Rpb25zIHBlcmZvcm0gYGBwcmludGBgIGNhbGxzCi10byBzaG93IHRoZSBzZXR1cC90ZWFyZG93
biBmbG93OjoKK3RvIHNob3cgdGhlIHNldHVwL3RlYXJkb3duIGZsb3c6CisKKy4uIGNvZGUtYmxv
Y2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X21vZHVsZS5weQogICAgIGltcG9y
dCBweXRlc3QKIAorCiAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiLCBwYXJhbXM9
WyJtb2QxIiwgIm1vZDIiXSkKICAgICBkZWYgbW9kYXJnKHJlcXVlc3QpOgogICAgICAgICBwYXJh
bSA9IHJlcXVlc3QucGFyYW0KLSAgICAgICAgcHJpbnQgKCIgIFNFVFVQIG1vZGFyZyAlcyIgJSBw
YXJhbSkKKyAgICAgICAgcHJpbnQoIiAgU0VUVVAgbW9kYXJnIiwgcGFyYW0pCiAgICAgICAgIHlp
ZWxkIHBhcmFtCi0gICAgICAgIHByaW50ICgiICBURUFSRE9XTiBtb2RhcmcgJXMiICUgcGFyYW0p
CisgICAgICAgIHByaW50KCIgIFRFQVJET1dOIG1vZGFyZyIsIHBhcmFtKQorCiAKLSAgICBAcHl0
ZXN0LmZpeHR1cmUoc2NvcGU9ImZ1bmN0aW9uIiwgcGFyYW1zPVsxLDJdKQorICAgIEBweXRlc3Qu
Zml4dHVyZShzY29wZT0iZnVuY3Rpb24iLCBwYXJhbXM9WzEsIDJdKQogICAgIGRlZiBvdGhlcmFy
ZyhyZXF1ZXN0KToKICAgICAgICAgcGFyYW0gPSByZXF1ZXN0LnBhcmFtCi0gICAgICAgIHByaW50
ICgiICBTRVRVUCBvdGhlcmFyZyAlcyIgJSBwYXJhbSkKKyAgICAgICAgcHJpbnQoIiAgU0VUVVAg
b3RoZXJhcmciLCBwYXJhbSkKICAgICAgICAgeWllbGQgcGFyYW0KLSAgICAgICAgcHJpbnQgKCIg
IFRFQVJET1dOIG90aGVyYXJnICVzIiAlIHBhcmFtKQorICAgICAgICBwcmludCgiICBURUFSRE9X
TiBvdGhlcmFyZyIsIHBhcmFtKQorCiAKICAgICBkZWYgdGVzdF8wKG90aGVyYXJnKToKLSAgICAg
ICAgcHJpbnQgKCIgIFJVTiB0ZXN0MCB3aXRoIG90aGVyYXJnICVzIiAlIG90aGVyYXJnKQorICAg
ICAgICBwcmludCgiICBSVU4gdGVzdDAgd2l0aCBvdGhlcmFyZyIsIG90aGVyYXJnKQorCisKICAg
ICBkZWYgdGVzdF8xKG1vZGFyZyk6Ci0gICAgICAgIHByaW50ICgiICBSVU4gdGVzdDEgd2l0aCBt
b2RhcmcgJXMiICUgbW9kYXJnKQorICAgICAgICBwcmludCgiICBSVU4gdGVzdDEgd2l0aCBtb2Rh
cmciLCBtb2RhcmcpCisKKwogICAgIGRlZiB0ZXN0XzIob3RoZXJhcmcsIG1vZGFyZyk6Ci0gICAg
ICAgIHByaW50ICgiICBSVU4gdGVzdDIgd2l0aCBvdGhlcmFyZyAlcyBhbmQgbW9kYXJnICVzIiAl
IChvdGhlcmFyZywgbW9kYXJnKSkKKyAgICAgICAgcHJpbnQoIiAgUlVOIHRlc3QyIHdpdGggb3Ro
ZXJhcmcge30gYW5kIG1vZGFyZyB7fSIuZm9ybWF0KG90aGVyYXJnLCBtb2RhcmcpKQorCiAKK0xl
dCdzIHJ1biB0aGUgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIGFuZCB3aXRoIGxvb2tpbmcgYXQgdGhl
IHByaW50LW91dHB1dDoKIAotTGV0J3MgcnVuIHRoZSB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUgYW5k
IHdpdGggbG9va2luZyBhdCB0aGUgcHJpbnQtb3V0cHV0OjoKKy4uIGNvZGUtYmxvY2s6OiBweXRl
c3QKIAogICAgICQgcHl0ZXN0IC12IC1zIHRlc3RfbW9kdWxlLnB5CiAgICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55
LCBweS0xLngueSwgcGx1Z2d5LTAueC55IC0tICRQWVRIT05fUFJFRklYL2Jpbi9weXRob24zLjUK
LSAgICBjYWNoZWRpcjogLnB5dGVzdF9jYWNoZQotICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBE
SVIsIGluaWZpbGU6CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
Ni54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkgLS0gJFBZVEhPTl9QUkVGSVgvYmluL3B5dGhv
bgorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRp
cjogJFJFR0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCA4IGl0ZW1z
CiAKICAgICB0ZXN0X21vZHVsZS5weTo6dGVzdF8wWzFdICAgU0VUVVAgb3RoZXJhcmcgMQpAQCAt
ODU5LDcgKzExMTksNyBAQCBMZXQncyBydW4gdGhlIHRlc3RzIGluIHZlcmJvc2UgbW9kZSBhbmQg
d2l0aCBsb29raW5nIGF0IHRoZSBwcmludC1vdXRwdXQ6OgogICAgICAgVEVBUkRPV04gbW9kYXJn
IG1vZDIKIAogCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PSA4IHBhc3NlZCBpbiAwLjEy
IHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gOCBwYXNzZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KIAogWW91IGNhbiBzZWUgdGhhdCB0aGUgcGFyYW1ldHJpemVkIG1vZHVsZS1zY29wZWQgYGBt
b2RhcmdgYCByZXNvdXJjZSBjYXVzZWQgYW4KIG9yZGVyaW5nIG9mIHRlc3QgZXhlY3V0aW9uIHRo
YXQgbGVhZCB0byB0aGUgZmV3ZXN0IHBvc3NpYmxlICJhY3RpdmUiIHJlc291cmNlcy4KQEAgLTg3
Niw4ICsxMTM2LDggQEAgYW5kIHRlYXJlZCBkb3duIGFmdGVyIGV2ZXJ5IHRlc3QgdGhhdCB1c2Vk
IGl0LgogCiAuLiBfYHVzZWZpeHR1cmVzYDoKIAotVXNpbmcgZml4dHVyZXMgZnJvbSBjbGFzc2Vz
LCBtb2R1bGVzIG9yIHByb2plY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitVc2UgZml4dHVyZXMgaW4gY2xh
c3NlcyBhbmQgbW9kdWxlcyB3aXRoIGBgdXNlZml4dHVyZXNgYAorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gcmVnZW5kb2M6d2lw
ZQogCkBAIC04ODcsMjcgKzExNDcsMzkgQEAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBidXQg
b3RoZXJ3aXNlIGRvIG5vdCBjYXJlIGZvciB0aGUgY29uY3JldGUKIGRpcmVjdG9yeS4gIEhlcmUg
aXMgaG93IHlvdSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBgdGVtcGZpbGUKIDxodHRwOi8vZG9jcy5w
eXRob24ub3JnL2xpYnJhcnkvdGVtcGZpbGUuaHRtbD5gXyBhbmQgcHl0ZXN0IGZpeHR1cmVzIHRv
CiBhY2hpZXZlIGl0LiAgV2Ugc2VwYXJhdGUgdGhlIGNyZWF0aW9uIG9mIHRoZSBmaXh0dXJlIGlu
dG8gYSBjb25mdGVzdC5weQotZmlsZTo6CitmaWxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKIAotICAgIGltcG9ydCBweXRlc3QKLSAg
ICBpbXBvcnQgdGVtcGZpbGUKICAgICBpbXBvcnQgb3MKKyAgICBpbXBvcnQgc2h1dGlsCisgICAg
aW1wb3J0IHRlbXBmaWxlCisKKyAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICBAcHl0ZXN0LmZpeHR1
cmUoKQorCisgICAgQHB5dGVzdC5maXh0dXJlCiAgICAgZGVmIGNsZWFuZGlyKCk6CisgICAgICAg
IG9sZF9jd2QgPSBvcy5nZXRjd2QoKQogICAgICAgICBuZXdwYXRoID0gdGVtcGZpbGUubWtkdGVt
cCgpCiAgICAgICAgIG9zLmNoZGlyKG5ld3BhdGgpCisgICAgICAgIHlpZWxkCisgICAgICAgIG9z
LmNoZGlyKG9sZF9jd2QpCisgICAgICAgIHNodXRpbC5ybXRyZWUobmV3cGF0aCkKIAotYW5kIGRl
Y2xhcmUgaXRzIHVzZSBpbiBhIHRlc3QgbW9kdWxlIHZpYSBhIGBgdXNlZml4dHVyZXNgYCBtYXJr
ZXI6OgorYW5kIGRlY2xhcmUgaXRzIHVzZSBpbiBhIHRlc3QgbW9kdWxlIHZpYSBhIGBgdXNlZml4
dHVyZXNgYCBtYXJrZXI6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVu
dCBvZiB0ZXN0X3NldGVudi5weQogICAgIGltcG9ydCBvcwogICAgIGltcG9ydCBweXRlc3QKIAor
CiAgICAgQHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCJjbGVhbmRpciIpCi0gICAgY2xhc3MgVGVz
dERpcmVjdG9yeUluaXQob2JqZWN0KToKKyAgICBjbGFzcyBUZXN0RGlyZWN0b3J5SW5pdDoKICAg
ICAgICAgZGVmIHRlc3RfY3dkX3N0YXJ0c19lbXB0eShzZWxmKToKICAgICAgICAgICAgIGFzc2Vy
dCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSA9PSBbXQogICAgICAgICAgICAgd2l0aCBvcGVuKCJt
eWZpbGUiLCAidyIpIGFzIGY6CkBAIC05MTksMTEgKzExOTEsMTMgQEAgYW5kIGRlY2xhcmUgaXRz
IHVzZSBpbiBhIHRlc3QgbW9kdWxlIHZpYSBhIGBgdXNlZml4dHVyZXNgYCBtYXJrZXI6OgogRHVl
IHRvIHRoZSBgYHVzZWZpeHR1cmVzYGAgbWFya2VyLCB0aGUgYGBjbGVhbmRpcmBgIGZpeHR1cmUK
IHdpbGwgYmUgcmVxdWlyZWQgZm9yIHRoZSBleGVjdXRpb24gb2YgZWFjaCB0ZXN0IG1ldGhvZCwg
anVzdCBhcyBpZgogeW91IHNwZWNpZmllZCBhICJjbGVhbmRpciIgZnVuY3Rpb24gYXJndW1lbnQg
dG8gZWFjaCBvZiB0aGVtLiAgTGV0J3MgcnVuIGl0Ci10byB2ZXJpZnkgb3VyIGZpeHR1cmUgaXMg
YWN0aXZhdGVkIGFuZCB0aGUgdGVzdHMgcGFzczo6Cit0byB2ZXJpZnkgb3VyIGZpeHR1cmUgaXMg
YWN0aXZhdGVkIGFuZCB0aGUgdGVzdHMgcGFzczoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAog
CiAgICAgJCBweXRlc3QgLXEKICAgICAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KLSAgICAyIHBhc3NlZCBp
biAwLjEyIHNlY29uZHMKKyAgICAyIHBhc3NlZCBpbiAwLjEycwogCiBZb3UgY2FuIHNwZWNpZnkg
bXVsdGlwbGUgZml4dHVyZXMgbGlrZSB0aGlzOgogCkBAIC05MzMsMTcgKzEyMDcsMTQgQEAgWW91
IGNhbiBzcGVjaWZ5IG11bHRpcGxlIGZpeHR1cmVzIGxpa2UgdGhpczoKICAgICBkZWYgdGVzdCgp
OgogICAgICAgICAuLi4KIAotYW5kIHlvdSBtYXkgc3BlY2lmeSBmaXh0dXJlIHVzYWdlIGF0IHRo
ZSB0ZXN0IG1vZHVsZSBsZXZlbCwgdXNpbmcKLWEgZ2VuZXJpYyBmZWF0dXJlIG9mIHRoZSBtYXJr
IG1lY2hhbmlzbToKK2FuZCB5b3UgbWF5IHNwZWNpZnkgZml4dHVyZSB1c2FnZSBhdCB0aGUgdGVz
dCBtb2R1bGUgbGV2ZWwgdXNpbmcgOmdsb2JhbHZhcjpgcHl0ZXN0bWFya2A6CiAKIC4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAogICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay51c2VmaXh0dXJl
cygiY2xlYW5kaXIiKQogCi1Ob3RlIHRoYXQgdGhlIGFzc2lnbmVkIHZhcmlhYmxlICptdXN0KiBi
ZSBjYWxsZWQgYGBweXRlc3RtYXJrYGAsIGFzc2lnbmluZyBlLmcuCi1gYGZvb21hcmtgYCB3aWxs
IG5vdCBhY3RpdmF0ZSB0aGUgZml4dHVyZXMuCiAKLUxhc3RseSB5b3UgY2FuIHB1dCBmaXh0dXJl
cyByZXF1aXJlZCBieSBhbGwgdGVzdHMgaW4geW91ciBwcm9qZWN0CitJdCBpcyBhbHNvIHBvc3Np
YmxlIHRvIHB1dCBmaXh0dXJlcyByZXF1aXJlZCBieSBhbGwgdGVzdHMgaW4geW91ciBwcm9qZWN0
CiBpbnRvIGFuIGluaS1maWxlOgogCiAuLiBjb2RlLWJsb2NrOjogaW5pCkBAIC05NTMsNiArMTIy
NCwyMiBAQCBpbnRvIGFuIGluaS1maWxlOgogICAgIHVzZWZpeHR1cmVzID0gY2xlYW5kaXIKIAog
CisuLiB3YXJuaW5nOjoKKworICAgIE5vdGUgdGhpcyBtYXJrIGhhcyBubyBlZmZlY3QgaW4gKipm
aXh0dXJlIGZ1bmN0aW9ucyoqLiBGb3IgZXhhbXBsZSwKKyAgICB0aGlzICoqd2lsbCBub3Qgd29y
ayBhcyBleHBlY3RlZCoqOgorCisgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgICAg
IEBweXRlc3QubWFyay51c2VmaXh0dXJlcygibXlfb3RoZXJfZml4dHVyZSIpCisgICAgICAgIEBw
eXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgbXlfZml4dHVyZV90aGF0X3NhZGx5X3dvbnRfdXNl
X215X290aGVyX2ZpeHR1cmUoKToKKyAgICAgICAgICAgIC4uLgorCisgICAgQ3VycmVudGx5IHRo
aXMgd2lsbCBub3QgZ2VuZXJhdGUgYW55IGVycm9yIG9yIHdhcm5pbmcsIGJ1dCB0aGlzIGlzIGlu
dGVuZGVkCisgICAgdG8gYmUgaGFuZGxlZCBieSBgIzM2NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzY2ND5gXy4KKworCiAuLiBfYGF1dG91c2VgOgogLi4g
X2BhdXRvdXNlIGZpeHR1cmVzYDoKIApAQCAtOTY2LDI1ICsxMjUzLDMyIEBAIHdpdGhvdXQgZGVj
bGFyaW5nIGEgZnVuY3Rpb24gYXJndW1lbnQgZXhwbGljaXRseSBvciBhIGB1c2VmaXh0dXJlc2Bf
IGRlY29yYXRvci4KIEFzIGEgcHJhY3RpY2FsIGV4YW1wbGUsIHN1cHBvc2Ugd2UgaGF2ZSBhIGRh
dGFiYXNlIGZpeHR1cmUgd2hpY2ggaGFzIGEKIGJlZ2luL3JvbGxiYWNrL2NvbW1pdCBhcmNoaXRl
Y3R1cmUgYW5kIHdlIHdhbnQgdG8gYXV0b21hdGljYWxseSBzdXJyb3VuZAogZWFjaCB0ZXN0IG1l
dGhvZCBieSBhIHRyYW5zYWN0aW9uIGFuZCBhIHJvbGxiYWNrLiAgSGVyZSBpcyBhIGR1bW15Ci1z
ZWxmLWNvbnRhaW5lZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGlkZWE6Ogorc2VsZi1jb250YWlu
ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpZGVhOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9kYl90cmFuc2FjdC5weQogCiAgICAgaW1wb3J0IHB5
dGVzdAogCi0gICAgY2xhc3MgREIob2JqZWN0KToKKworICAgIGNsYXNzIERCOgogICAgICAgICBk
ZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgICBzZWxmLmludHJhbnNhY3Rpb24gPSBbXQor
CiAgICAgICAgIGRlZiBiZWdpbihzZWxmLCBuYW1lKToKICAgICAgICAgICAgIHNlbGYuaW50cmFu
c2FjdGlvbi5hcHBlbmQobmFtZSkKKwogICAgICAgICBkZWYgcm9sbGJhY2soc2VsZik6CiAgICAg
ICAgICAgICBzZWxmLmludHJhbnNhY3Rpb24ucG9wKCkKIAorCiAgICAgQHB5dGVzdC5maXh0dXJl
KHNjb3BlPSJtb2R1bGUiKQogICAgIGRlZiBkYigpOgogICAgICAgICByZXR1cm4gREIoKQogCi0g
ICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisKKyAgICBjbGFzcyBUZXN0Q2xhc3M6CiAgICAg
ICAgIEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCiAgICAgICAgIGRlZiB0cmFuc2FjdChz
ZWxmLCByZXF1ZXN0LCBkYik6CiAgICAgICAgICAgICBkYi5iZWdpbihyZXF1ZXN0LmZ1bmN0aW9u
Ll9fbmFtZV9fKQpAQCAtMTAwMiwxMSArMTI5NiwxMyBAQCB3aGljaCBpbXBsaWVzIHRoYXQgYWxs
IHRlc3QgbWV0aG9kcyBpbiB0aGUgY2xhc3Mgd2lsbCB1c2UgdGhpcyBmaXh0dXJlCiB3aXRob3V0
IGEgbmVlZCB0byBzdGF0ZSBpdCBpbiB0aGUgdGVzdCBmdW5jdGlvbiBzaWduYXR1cmUgb3Igd2l0
aCBhCiBjbGFzcy1sZXZlbCBgYHVzZWZpeHR1cmVzYGAgZGVjb3JhdG9yLgogCi1JZiB3ZSBydW4g
aXQsIHdlIGdldCB0d28gcGFzc2luZyB0ZXN0czo6CitJZiB3ZSBydW4gaXQsIHdlIGdldCB0d28g
cGFzc2luZyB0ZXN0czoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3Qg
LXEKICAgICAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbMTAwJV0KLSAgICAyIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMK
KyAgICAyIHBhc3NlZCBpbiAwLjEycwogCiBIZXJlIGlzIGhvdyBhdXRvdXNlIGZpeHR1cmVzIHdv
cmsgaW4gb3RoZXIgc2NvcGVzOgogCkBAIC0xMDMwLDcgKzEzMjYsOSBAQCBIZXJlIGlzIGhvdyBh
dXRvdXNlIGZpeHR1cmVzIHdvcmsgaW4gb3RoZXIgc2NvcGVzOgogTm90ZSB0aGF0IHRoZSBhYm92
ZSBgYHRyYW5zYWN0YGAgZml4dHVyZSBtYXkgdmVyeSB3ZWxsIGJlIGEgZml4dHVyZSB0aGF0CiB5
b3Ugd2FudCB0byBtYWtlIGF2YWlsYWJsZSBpbiB5b3VyIHByb2plY3Qgd2l0aG91dCBoYXZpbmcg
aXQgZ2VuZXJhbGx5CiBhY3RpdmUuICBUaGUgY2Fub25pY2FsIHdheSB0byBkbyB0aGF0IGlzIHRv
IHB1dCB0aGUgdHJhbnNhY3QgZGVmaW5pdGlvbgotaW50byBhIGNvbmZ0ZXN0LnB5IGZpbGUgKip3
aXRob3V0KiogdXNpbmcgYGBhdXRvdXNlYGA6OgoraW50byBhIGNvbmZ0ZXN0LnB5IGZpbGUgKip3
aXRob3V0KiogdXNpbmcgYGBhdXRvdXNlYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAog
ICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQogICAgIEBweXRlc3QuZml4dHVyZQpAQCAtMTAz
OSwxMCArMTMzNywxMiBAQCBpbnRvIGEgY29uZnRlc3QucHkgZmlsZSAqKndpdGhvdXQqKiB1c2lu
ZyBgYGF1dG91c2VgYDo6CiAgICAgICAgIHlpZWxkCiAgICAgICAgIGRiLnJvbGxiYWNrKCkKIAot
YW5kIHRoZW4gZS5nLiBoYXZlIGEgVGVzdENsYXNzIHVzaW5nIGl0IGJ5IGRlY2xhcmluZyB0aGUg
bmVlZDo6CithbmQgdGhlbiBlLmcuIGhhdmUgYSBUZXN0Q2xhc3MgdXNpbmcgaXQgYnkgZGVjbGFy
aW5nIHRoZSBuZWVkOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBAcHl0ZXN0Lm1h
cmsudXNlZml4dHVyZXMoInRyYW5zYWN0IikKLSAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToK
KyAgICBjbGFzcyBUZXN0Q2xhc3M6CiAgICAgICAgIGRlZiB0ZXN0X21ldGhvZDEoc2VsZik6CiAg
ICAgICAgICAgICAuLi4KIApAQCAtMTExMSw2ICsxNDExLDggQEAgR2l2ZW4gdGhlIHRlc3RzIGZp
bGUgc3RydWN0dXJlIGlzOgogCiAgICAgICAgIGNvbmZ0ZXN0LnB5CiAgICAgICAgICAgICAjIGNv
bnRlbnQgb2YgdGVzdHMvY29uZnRlc3QucHkKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKwog
ICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAgICAgICAgICBkZWYgdXNlcm5hbWUoKToK
ICAgICAgICAgICAgICAgICByZXR1cm4gJ3VzZXJuYW1lJwpAQCAtMTIyOSwzICsxNTMxLDM3IEBA
IEdpdmVuIHRoZSB0ZXN0cyBmaWxlIHN0cnVjdHVyZSBpczoKIEluIHRoZSBleGFtcGxlIGFib3Zl
LCBhIHBhcmFtZXRyaXplZCBmaXh0dXJlIGlzIG92ZXJyaWRkZW4gd2l0aCBhIG5vbi1wYXJhbWV0
cml6ZWQgdmVyc2lvbiwgYW5kCiBhIG5vbi1wYXJhbWV0cml6ZWQgZml4dHVyZSBpcyBvdmVycmlk
ZGVuIHdpdGggYSBwYXJhbWV0cml6ZWQgdmVyc2lvbiBmb3IgY2VydGFpbiB0ZXN0IG1vZHVsZS4K
IFRoZSBzYW1lIGFwcGxpZXMgZm9yIHRoZSB0ZXN0IGZvbGRlciBsZXZlbCBvYnZpb3VzbHkuCisK
KworVXNpbmcgZml4dHVyZXMgZnJvbSBvdGhlciBwcm9qZWN0cworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitVc3VhbGx5IHByb2plY3RzIHRoYXQgcHJvdmlkZSBweXRlc3Qg
c3VwcG9ydCB3aWxsIHVzZSA6cmVmOmBlbnRyeSBwb2ludHMgPHNldHVwdG9vbHMgZW50cnkgcG9p
bnRzPmAsCitzbyBqdXN0IGluc3RhbGxpbmcgdGhvc2UgcHJvamVjdHMgaW50byBhbiBlbnZpcm9u
bWVudCB3aWxsIG1ha2UgdGhvc2UgZml4dHVyZXMgYXZhaWxhYmxlIGZvciB1c2UuCisKK0luIGNh
c2UgeW91IHdhbnQgdG8gdXNlIGZpeHR1cmVzIGZyb20gYSBwcm9qZWN0IHRoYXQgZG9lcyBub3Qg
dXNlIGVudHJ5IHBvaW50cywgeW91IGNhbgorZGVmaW5lIDpnbG9iYWx2YXI6YHB5dGVzdF9wbHVn
aW5zYCBpbiB5b3VyIHRvcCBgYGNvbmZ0ZXN0LnB5YGAgZmlsZSB0byByZWdpc3RlciB0aGF0IG1v
ZHVsZQorYXMgYSBwbHVnaW4uCisKK1N1cHBvc2UgeW91IGhhdmUgc29tZSBmaXh0dXJlcyBpbiBg
YG15bGlicmFyeS5maXh0dXJlc2BgIGFuZCB5b3Ugd2FudCB0byByZXVzZSB0aGVtIGludG8geW91
cgorYGBhcHAvdGVzdHNgYCBkaXJlY3RvcnkuCisKK0FsbCB5b3UgbmVlZCB0byBkbyBpcyB0byBk
ZWZpbmUgOmdsb2JhbHZhcjpgcHl0ZXN0X3BsdWdpbnNgIGluIGBgYXBwL3Rlc3RzL2NvbmZ0ZXN0
LnB5YGAKK3BvaW50aW5nIHRvIHRoYXQgbW9kdWxlLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CisKKyAgICBweXRlc3RfcGx1Z2lucyA9ICJteWxpYnJhcnkuZml4dHVyZXMiCisKK1RoaXMgZWZm
ZWN0aXZlbHkgcmVnaXN0ZXJzIGBgbXlsaWJyYXJ5LmZpeHR1cmVzYGAgYXMgYSBwbHVnaW4sIG1h
a2luZyBhbGwgaXRzIGZpeHR1cmVzIGFuZAoraG9va3MgYXZhaWxhYmxlIHRvIHRlc3RzIGluIGBg
YXBwL3Rlc3RzYGAuCisKKy4uIG5vdGU6OgorCisgICAgU29tZXRpbWVzIHVzZXJzIHdpbGwgKmlt
cG9ydCogZml4dHVyZXMgZnJvbSBvdGhlciBwcm9qZWN0cyBmb3IgdXNlLCBob3dldmVyIHRoaXMg
aXMgbm90CisgICAgcmVjb21tZW5kZWQ6IGltcG9ydGluZyBmaXh0dXJlcyBpbnRvIGEgbW9kdWxl
IHdpbGwgcmVnaXN0ZXIgdGhlbSBpbiBweXRlc3QKKyAgICBhcyAqZGVmaW5lZCogaW4gdGhhdCBt
b2R1bGUuCisKKyAgICBUaGlzIGhhcyBtaW5vciBjb25zZXF1ZW5jZXMsIHN1Y2ggYXMgYXBwZWFy
aW5nIG11bHRpcGxlIHRpbWVzIGluIGBgcHl0ZXN0IC0taGVscGBgLAorICAgIGJ1dCBpdCBpcyBu
b3QgKipyZWNvbW1lbmRlZCoqIGJlY2F1c2UgdGhpcyBiZWhhdmlvciBtaWdodCBjaGFuZ2Uvc3Rv
cCB3b3JraW5nCisgICAgaW4gZnV0dXJlIHZlcnNpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2ZsYWt5LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9mbGFreS5yc3QKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNmZjMTUyMGMwYjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZmxha3kucnN0CkBAIC0wLDAgKzEsMTI2IEBA
CisKK0ZsYWt5IHRlc3RzCistLS0tLS0tLS0tLQorCitBICJmbGFreSIgdGVzdCBpcyBvbmUgdGhh
dCBleGhpYml0cyBpbnRlcm1pdHRlbnQgb3Igc3BvcmFkaWMgZmFpbHVyZSwgdGhhdCBzZWVtcyB0
byBoYXZlIG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW91ci4gU29tZXRpbWVzIGl0IHBhc3Nlcywg
c29tZXRpbWVzIGl0IGZhaWxzLCBhbmQgaXQncyBub3QgY2xlYXIgd2h5LiBUaGlzIHBhZ2UgZGlz
Y3Vzc2VzIHB5dGVzdCBmZWF0dXJlcyB0aGF0IGNhbiBoZWxwIGFuZCBvdGhlciBnZW5lcmFsIHN0
cmF0ZWdpZXMgZm9yIGlkZW50aWZ5aW5nLCBmaXhpbmcgb3IgbWl0aWdhdGluZyB0aGVtLgorCitX
aHkgZmxha3kgdGVzdHMgYXJlIGEgcHJvYmxlbQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl4KKworRmxha3kgdGVzdHMgYXJlIHBhcnRpY3VsYXJseSB0cm91Ymxlc29tZSB3aGVuIGEgY29u
dGludW91cyBpbnRlZ3JhdGlvbiAoQ0kpIHNlcnZlciBpcyBiZWluZyB1c2VkLCBzbyB0aGF0IGFs
bCB0ZXN0cyBtdXN0IHBhc3MgYmVmb3JlIGEgbmV3IGNvZGUgY2hhbmdlIGNhbiBiZSBtZXJnZWQu
IElmIHRoZSB0ZXN0IHJlc3VsdCBpcyBub3QgYSByZWxpYWJsZSBzaWduYWwgLS0gdGhhdCBhIHRl
c3QgZmFpbHVyZSBtZWFucyB0aGUgY29kZSBjaGFuZ2UgYnJva2UgdGhlIHRlc3QgLS0gZGV2ZWxv
cGVycyBjYW4gYmVjb21lIG1pc3RydXN0ZnVsIG9mIHRoZSB0ZXN0IHJlc3VsdHMsIHdoaWNoIGNh
biBsZWFkIHRvIG92ZXJsb29raW5nIGdlbnVpbmUgZmFpbHVyZXMuIEl0IGlzIGFsc28gYSBzb3Vy
Y2Ugb2Ygd2FzdGVkIHRpbWUgYXMgZGV2ZWxvcGVycyBtdXN0IHJlLXJ1biB0ZXN0IHN1aXRlcyBh
bmQgaW52ZXN0aWdhdGUgc3B1cmlvdXMgZmFpbHVyZXMuCisKKworUG90ZW50aWFsIHJvb3QgY2F1
c2VzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworU3lzdGVtIHN0YXRlCit+fn5+fn5+fn5+fn4K
KworQnJvYWRseSBzcGVha2luZywgYSBmbGFreSB0ZXN0IGluZGljYXRlcyB0aGF0IHRoZSB0ZXN0
IHJlbGllcyBvbiBzb21lIHN5c3RlbSBzdGF0ZSB0aGF0IGlzIG5vdCBiZWluZyBhcHByb3ByaWF0
ZWx5IGNvbnRyb2xsZWQgLSB0aGUgdGVzdCBlbnZpcm9ubWVudCBpcyBub3Qgc3VmZmljaWVudGx5
IGlzb2xhdGVkLiBIaWdoZXIgbGV2ZWwgdGVzdHMgYXJlIG1vcmUgbGlrZWx5IHRvIGJlIGZsYWt5
IGFzIHRoZXkgcmVseSBvbiBtb3JlIHN0YXRlLgorCitGbGFreSB0ZXN0cyBzb21ldGltZXMgYXBw
ZWFyIHdoZW4gYSB0ZXN0IHN1aXRlIGlzIHJ1biBpbiBwYXJhbGxlbCAoc3VjaCBhcyB1c2Ugb2Yg
cHl0ZXN0LXhkaXN0KS4gVGhpcyBjYW4gaW5kaWNhdGUgYSB0ZXN0IGlzIHJlbGlhbnQgb24gdGVz
dCBvcmRlcmluZy4KKworLSAgUGVyaGFwcyBhIGRpZmZlcmVudCB0ZXN0IGlzIGZhaWxpbmcgdG8g
Y2xlYW4gdXAgYWZ0ZXIgaXRzZWxmIGFuZCBsZWF2aW5nIGJlaGluZCBkYXRhIHdoaWNoIGNhdXNl
cyB0aGUgZmxha3kgdGVzdCB0byBmYWlsLgorLSBUaGUgZmxha3kgdGVzdCBpcyByZWxpYW50IG9u
IGRhdGEgZnJvbSBhIHByZXZpb3VzIHRlc3QgdGhhdCBkb2Vzbid0IGNsZWFuIHVwIGFmdGVyIGl0
c2VsZiwgYW5kIGluIHBhcmFsbGVsIHJ1bnMgdGhhdCBwcmV2aW91cyB0ZXN0IGlzIG5vdCBhbHdh
eXMgcHJlc2VudAorLSBUZXN0cyB0aGF0IG1vZGlmeSBnbG9iYWwgc3RhdGUgdHlwaWNhbGx5IGNh
bm5vdCBiZSBydW4gaW4gcGFyYWxsZWwuCisKKworT3Zlcmx5IHN0cmljdCBhc3NlcnRpb24KK35+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK092ZXJseSBzdHJpY3QgYXNzZXJ0aW9ucyBjYW4gY2F1
c2UgcHJvYmxlbXMgd2l0aCBmbG9hdGluZyBwb2ludCBjb21wYXJpc29uIGFzIHdlbGwgYXMgdGlt
aW5nIGlzc3Vlcy4gYHB5dGVzdC5hcHByb3ggPGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0
YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRlc3QtYXBwcm94PmBfIGlzIHVzZWZ1bCBoZXJlLgorCisK
K1B5dGVzdCBmZWF0dXJlcworXl5eXl5eXl5eXl5eXl5eCisKK1hmYWlsIHN0cmljdAorfn5+fn5+
fn5+fn5+CisKKzpyZWY6YHB5dGVzdC5tYXJrLnhmYWlsIHJlZmAgd2l0aCBgYHN0cmljdD1GYWxz
ZWBgIGNhbiBiZSB1c2VkIHRvIG1hcmsgYSB0ZXN0IHNvIHRoYXQgaXRzIGZhaWx1cmUgZG9lcyBu
b3QgY2F1c2UgdGhlIHdob2xlIGJ1aWxkIHRvIGJyZWFrLiBUaGlzIGNvdWxkIGJlIGNvbnNpZGVy
ZWQgbGlrZSBhIG1hbnVhbCBxdWFyYW50aW5lLCBhbmQgaXMgcmF0aGVyIGRhbmdlcm91cyB0byB1
c2UgcGVybWFuZW50bHkuCisKKworUFlURVNUX0NVUlJFTlRfVEVTVAorfn5+fn5+fn5+fn5+fn5+
fn5+fgorCis6ZW52dmFyOmBQWVRFU1RfQ1VSUkVOVF9URVNUYCBtYXkgYmUgdXNlZnVsIGZvciBm
aWd1cmluZyBvdXQgIndoaWNoIHRlc3QgZ290IHN0dWNrIi4KK1NlZSA6cmVmOmBweXRlc3QgY3Vy
cmVudCB0ZXN0IGVudmAgZm9yIG1vcmUgZGV0YWlscy4KKworCitQbHVnaW5zCit+fn5+fn5+CisK
K1JlcnVubmluZyBhbnkgZmFpbGVkIHRlc3RzIGNhbiBtaXRpZ2F0ZSB0aGUgbmVnYXRpdmUgZWZm
ZWN0cyBvZiBmbGFreSB0ZXN0cyBieSBnaXZpbmcgdGhlbSBhZGRpdGlvbmFsIGNoYW5jZXMgdG8g
cGFzcywgc28gdGhhdCB0aGUgb3ZlcmFsbCBidWlsZCBkb2VzIG5vdCBmYWlsLiBTZXZlcmFsIHB5
dGVzdCBwbHVnaW5zIHN1cHBvcnQgdGhpczoKKworKiBgZmxha3kgPGh0dHBzOi8vZ2l0aHViLmNv
bS9ib3gvZmxha3k+YF8KKyogYHB5dGVzdC1mbGFrZWZpbmRlciA8aHR0cHM6Ly9naXRodWIuY29t
L2Ryb3Bib3gvcHl0ZXN0LWZsYWtlZmluZGVyPmBfIC0gYGJsb2cgcG9zdCA8aHR0cHM6Ly9ibG9n
cy5kcm9wYm94LmNvbS90ZWNoLzIwMTYvMDMvb3Blbi1zb3VyY2luZy1weXRlc3QtdG9vbHMvPmBf
CisqIGBweXRlc3QtcmVydW5mYWlsdXJlcyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0LXJlcnVuZmFpbHVyZXM+YF8KKyogYHB5dGVzdC1yZXBsYXkgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9FU1NTL3B5dGVzdC1yZXBsYXk+YF86IFRoaXMgcGx1Z2luIGhlbHBzIHRvIHJlcHJvZHVj
ZSBsb2NhbGx5IGNyYXNoZXMgb3IgZmxha3kgdGVzdHMgb2JzZXJ2ZWQgZHVyaW5nIENJIHJ1bnMu
CisKK1BsdWdpbnMgdG8gZGVsaWJlcmF0ZWx5IHJhbmRvbWl6ZSB0ZXN0cyBjYW4gaGVscCBleHBv
c2UgdGVzdHMgd2l0aCBzdGF0ZSBwcm9ibGVtczoKKworKiBgcHl0ZXN0LXJhbmRvbS1vcmRlciA8
aHR0cHM6Ly9naXRodWIuY29tL2piYXNrby9weXRlc3QtcmFuZG9tLW9yZGVyPmBfCisqIGBweXRl
c3QtcmFuZG9tbHkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1yYW5kb21s
eT5gXworCisKK090aGVyIGdlbmVyYWwgc3RyYXRlZ2llcworXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eCisKK1NwbGl0IHVwIHRlc3Qgc3VpdGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJdCBj
YW4gYmUgY29tbW9uIHRvIHNwbGl0IGEgc2luZ2xlIHRlc3Qgc3VpdGUgaW50byB0d28sIHN1Y2gg
YXMgdW5pdCB2cyBpbnRlZ3JhdGlvbiwgYW5kIG9ubHkgdXNlIHRoZSB1bml0IHRlc3Qgc3VpdGUg
YXMgYSBDSSBnYXRlLiBUaGlzIGFsc28gaGVscHMga2VlcCBidWlsZCB0aW1lcyBtYW5hZ2VhYmxl
IGFzIGhpZ2ggbGV2ZWwgdGVzdHMgdGVuZCB0byBiZSBzbG93ZXIuIEhvd2V2ZXIsIGl0IG1lYW5z
IGl0IGRvZXMgYmVjb21lIHBvc3NpYmxlIGZvciBjb2RlIHRoYXQgYnJlYWtzIHRoZSBidWlsZCB0
byBiZSBtZXJnZWQsIHNvIGV4dHJhIHZpZ2lsYW5jZSBpcyBuZWVkZWQgZm9yIG1vbml0b3Jpbmcg
dGhlIGludGVncmF0aW9uIHRlc3QgcmVzdWx0cy4KKworCitWaWRlby9zY3JlZW5zaG90IG9uIGZh
aWx1cmUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitGb3IgVUkgdGVzdHMgdGhlc2Ug
YXJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSBzdGF0ZSBvZiB0aGUgVUkg
d2FzIHdoZW4gdGhlIHRlc3QgZmFpbGVkLiBweXRlc3Qtc3BsaW50ZXIgY2FuIGJlIHVzZWQgd2l0
aCBwbHVnaW5zIGxpa2UgcHl0ZXN0LWJkZCBhbmQgY2FuIGBzYXZlIGEgc2NyZWVuc2hvdCBvbiB0
ZXN0IGZhaWx1cmUgPGh0dHBzOi8vcHl0ZXN0LXNwbGludGVyLnJlYWR0aGVkb2NzLmlvL2VuL2xh
dGVzdC8jYXV0b21hdGljLXNjcmVlbnNob3RzLW9uLXRlc3QtZmFpbHVyZT5gXywgd2hpY2ggY2Fu
IGhlbHAgdG8gaXNvbGF0ZSB0aGUgY2F1c2UuCisKKworRGVsZXRlIG9yIHJld3JpdGUgdGhlIHRl
c3QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0lmIHRoZSBmdW5jdGlvbmFsaXR5IGlz
IGNvdmVyZWQgYnkgb3RoZXIgdGVzdHMsIHBlcmhhcHMgdGhlIHRlc3QgY2FuIGJlIHJlbW92ZWQu
IElmIG5vdCwgcGVyaGFwcyBpdCBjYW4gYmUgcmV3cml0dGVuIGF0IGEgbG93ZXIgbGV2ZWwgd2hp
Y2ggd2lsbCByZW1vdmUgdGhlIGZsYWtpbmVzcyBvciBtYWtlIGl0cyBzb3VyY2UgbW9yZSBhcHBh
cmVudC4KKworCitRdWFyYW50aW5lCit+fn5+fn5+fn5+CisKK01hcmsgTGFwaWVycmUgZGlzY3Vz
c2VzIHRoZSBgUHJvcyBhbmQgQ29ucyBvZiBRdWFyYW50aW5lZCBUZXN0cyA8aHR0cHM6Ly9kZXYu
dG8vbWxhcGllcnJlL3Byb3MtYW5kLWNvbnMtb2YtcXVhcmFudGluZWQtdGVzdHMtMmVtaj5gXyBp
biBhIHBvc3QgZnJvbSAyMDE4LgorCisKKworQ0kgdG9vbHMgdGhhdCByZXJ1biBvbiBmYWlsdXJl
Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQXp1cmUgUGlwZWxpbmVzICh0aGUg
QXp1cmUgY2xvdWQgQ0kvQ0QgdG9vbCwgZm9ybWVybHkgVmlzdWFsIFN0dWRpbyBUZWFtIFNlcnZp
Y2VzIG9yIFZTVFMpIGhhcyBhIGZlYXR1cmUgdG8gYGlkZW50aWZ5IGZsYWt5IHRlc3RzIDxodHRw
czovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9kZXZvcHMvcmVsZWFzZS1ub3Rlcy8y
MDE3L2RlYy0xMS12c3RzI2lkZW50aWZ5LWZsYWt5LXRlc3RzPmBfIGFuZCByZXJ1biBmYWlsZWQg
dGVzdHMuCisKKworCitSZXNlYXJjaAorXl5eXl5eXl4KKworVGhpcyBpcyBhIGxpbWl0ZWQgbGlz
dCwgcGxlYXNlIHN1Ym1pdCBhbiBpc3N1ZSBvciBwdWxsIHJlcXVlc3QgdG8gZXhwYW5kIGl0IQor
CisqIEdhbywgWmViYW8sIFlhbGFuIExpYW5nLCBNeXJhIEIuIENvaGVuLCBBdGlmIE0uIE1lbW9u
LCBhbmQgWmhlbiBXYW5nLiAiTWFraW5nIHN5c3RlbSB1c2VyIGludGVyYWN0aXZlIHRlc3RzIHJl
cGVhdGFibGU6IFdoZW4gYW5kIHdoYXQgc2hvdWxkIHdlIGNvbnRyb2w/LiIgSW4gKlNvZnR3YXJl
IEVuZ2luZWVyaW5nIChJQ1NFKSwgMjAxNSBJRUVFL0FDTSAzN3RoIElFRUUgSW50ZXJuYXRpb25h
bCBDb25mZXJlbmNlIG9uKiwgdm9sLiAxLCBwcC4gNTUtNjUuIElFRUUsIDIwMTUuICBgUERGIDxo
dHRwOi8vd3d3LmNzLnVtZC5lZHUvfmF0aWYvcHVicy9nYW8taWNzZTE1LnBkZj5gX18KKyogUGFs
b21iYSwgRmFiaW8sIGFuZCBBbmR5IFphaWRtYW4uICJEb2VzIHJlZmFjdG9yaW5nIG9mIHRlc3Qg
c21lbGxzIGluZHVjZSBmaXhpbmcgZmxha3kgdGVzdHM/LiIgSW4gKlNvZnR3YXJlIE1haW50ZW5h
bmNlIGFuZCBFdm9sdXRpb24gKElDU01FKSwgMjAxNyBJRUVFIEludGVybmF0aW9uYWwgQ29uZmVy
ZW5jZSBvbiosIHBwLiAxLTEyLiBJRUVFLCAyMDE3LiBgUERGIGluIEdvb2dsZSBEcml2ZSA8aHR0
cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xMEhkY0NRaXVRVmdXM3lZVUpELVRTVHExTmJZ
RXBybDAvdmlldz5gX18KKyogIEJlbGwsIEpvbmF0aGFuLCBPd29sYWJpIExlZ3Vuc2VuLCBNaWNo
YWVsIEhpbHRvbiwgTGFteWFhIEVsb3Vzc2ksIFRpZmFueSBZdW5nLCBhbmQgRGFya28gTWFyaW5v
di4gIkRlRmxha2VyOiBBdXRvbWF0aWNhbGx5IGRldGVjdGluZyBmbGFreSB0ZXN0cy4iIEluICpQ
cm9jZWVkaW5ncyBvZiB0aGUgMjAxOCBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gU29mdHdh
cmUgRW5naW5lZXJpbmcqLiAyMDE4LiBgUERGIDxodHRwczovL3d3dy5qb25iZWxsLm5ldC9pY3Nl
MTgtZGVmbGFrZXIucGRmPmBfXworCisKK1Jlc291cmNlcworXl5eXl5eXl5eCisKKyogYEVyYWRp
Y2F0aW5nIE5vbi1EZXRlcm1pbmlzbSBpbiBUZXN0cyA8aHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29t
L2FydGljbGVzL25vbkRldGVybWluaXNtLmh0bWw+YF8gYnkgTWFydGluIEZvd2xlciwgMjAxMQor
KiBgTm8gbW9yZSBmbGFreSB0ZXN0cyBvbiB0aGUgR28gdGVhbSA8aHR0cHM6Ly93d3cudGhvdWdo
dHdvcmtzLmNvbS9pbnNpZ2h0cy9ibG9nL25vLW1vcmUtZmxha3ktdGVzdHMtZ28tdGVhbT5gXyBi
eSBQYXZhbiBTdWRhcnNoYW4sIDIwMTIKKyogYFRoZSBCdWlsZCBUaGF0IENyaWVkIEJyb2tlbjog
QnVpbGRpbmcgVHJ1c3QgaW4geW91ciBDb250aW51b3VzIEludGVncmF0aW9uIFRlc3RzIDxodHRw
czovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9Wb3RKcVY0bjhpZz5gXyB0YWxrICh2aWRlbykgYnkg
YEFuZ2llIEpvbmVzIDxodHRwOi8vYW5naWVqb25lcy50ZWNoLz5gXyBhdCBTZWxlbml1bUNvbmYg
QXVzdGluIDIwMTcKKyogYFRlc3QgYW5kIENvZGUgUG9kY2FzdDogRmxha3kgVGVzdHMgYW5kIEhv
dyB0byBEZWFsIHdpdGggVGhlbSA8aHR0cHM6Ly90ZXN0YW5kY29kZS5jb20vNTA+YF8gYnkgQnJp
YW4gT2trZW4gYW5kIEFudGhvbnkgU2hhdywgMjAxOAorKiBNaWNyb3NvZnQ6CisKKyAgKiBgSG93
IHdlIGFwcHJvYWNoIHRlc3RpbmcgVlNUUyB0byBlbmFibGUgY29udGludW91cyBkZWxpdmVyeSA8
aHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vYmhhcnJ5LzIwMTcvMDYvMjgvdGVzdGlu
Zy1pbi1hLWNsb3VkLWRlbGl2ZXJ5LWNhZGVuY2UvPmBfIGJ5IEJyaWFuIEhhcnJ5IE1TLCAyMDE3
CisgICogYEVsaW1pbmF0aW5nIEZsYWt5IFRlc3RzIDxodHRwczovL2RvY3MubWljcm9zb2Z0LmNv
bS9lbi11cy9henVyZS9kZXZvcHMvbGVhcm4vZGV2b3BzLWF0LW1pY3Jvc29mdC9lbGltaW5hdGlu
Zy1mbGFreS10ZXN0cz5gXyBibG9nIGFuZCB0YWxrICh2aWRlbykgYnkgTXVuaWwgU2hhaCwgMjAx
NworCisqIEdvb2dsZToKKworICAqIGBGbGFreSBUZXN0cyBhdCBHb29nbGUgYW5kIEhvdyBXZSBN
aXRpZ2F0ZSBUaGVtIDxodHRwczovL3Rlc3RpbmcuZ29vZ2xlYmxvZy5jb20vMjAxNi8wNS9mbGFr
eS10ZXN0cy1hdC1nb29nbGUtYW5kLWhvdy13ZS5odG1sPmBfIGJ5IEpvaG4gTWljY28sIDIwMTYK
KyAgKiBgV2hlcmUgZG8gR29vZ2xlJ3MgZmxha3kgdGVzdHMgY29tZSBmcm9tPyA8aHR0cHM6Ly90
ZXN0aW5nLmdvb2dsZWJsb2cuY29tLzIwMTcvMDQvd2hlcmUtZG8tb3VyLWZsYWt5LXRlc3RzLWNv
bWUtZnJvbS5odG1sPmBfICBieSBKZWZmIExpc3RmaWVsZCwgMjAxNwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Z1bmNhcmdfY29tcGFyZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZnVuY2FyZ19jb21wYXJlLnJzdAppbmRleCBjMjliYTFmM2MzNTcuLjBjNDkxM2VkZmY4NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Z1bmNhcmdfY29tcGFyZS5yc3QKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2Z1bmNhcmdfY29tcGFyZS5yc3QKQEAgLTcsNyArNyw3IEBAIHB5dGVz
dC0yLjM6IHJlYXNvbmluZyBmb3IgZml4dHVyZS9mdW5jYXJnIGV2b2x1dGlvbgogCiAqKlRhcmdl
dCBhdWRpZW5jZSoqOiBSZWFkaW5nIHRoaXMgZG9jdW1lbnQgcmVxdWlyZXMgYmFzaWMga25vd2xl
ZGdlIG9mCiBweXRob24gdGVzdGluZywgeFVuaXQgc2V0dXAgbWV0aG9kcyBhbmQgdGhlIChwcmV2
aW91cykgYmFzaWMgcHl0ZXN0Ci1mdW5jYXJnIG1lY2hhbmlzbSwgc2VlIGh0dHA6Ly9weXRlc3Qu
b3JnLzIuMi40L2Z1bmNhcmdzLmh0bWwKK2Z1bmNhcmcgbWVjaGFuaXNtLCBzZWUgaHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2hpc3RvcmljYWwtbm90ZXMuaHRtbCNmdW5jYXJncy1h
bmQtcHl0ZXN0LWZ1bmNhcmcuCiBJZiB5b3UgYXJlIG5ldyB0byBweXRlc3QsIHRoZW4geW91IGNh
biBzaW1wbHkgaWdub3JlIHRoaXMKIHNlY3Rpb24gYW5kIHJlYWQgdGhlIG90aGVyIHNlY3Rpb25z
LgogCkBAIC0yMSwxOSArMjEsMjMgQEAgZnVuY2FyZyBmb3IgYSB0ZXN0IGZ1bmN0aW9uIGlzIHJl
cXVpcmVkLiAgSWYgYSBmYWN0b3J5IHdhbnRzIHRvCiByZS11c2UgYSByZXNvdXJjZSBhY3Jvc3Mg
ZGlmZmVyZW50IHNjb3BlcywgaXQgb2Z0ZW4gdXNlZAogdGhlIGBgcmVxdWVzdC5jYWNoZWRfc2V0
dXAoKWBgIGhlbHBlciB0byBtYW5hZ2UgY2FjaGluZyBvZgogcmVzb3VyY2VzLiAgSGVyZSBpcyBh
IGJhc2ljIGV4YW1wbGUgaG93IHdlIGNvdWxkIGltcGxlbWVudAotYSBwZXItc2Vzc2lvbiBEYXRh
YmFzZSBvYmplY3Q6OgorYSBwZXItc2Vzc2lvbiBEYXRhYmFzZSBvYmplY3Q6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25mdGVzdC5weQotICAgIGNsYXNz
IERhdGFiYXNlKG9iamVjdCk6CisgICAgY2xhc3MgRGF0YWJhc2U6CiAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgICAgIHByaW50ICgiZGF0YWJhc2UgaW5zdGFuY2UgY3JlYXRl
ZCIpCisgICAgICAgICAgICBwcmludCgiZGF0YWJhc2UgaW5zdGFuY2UgY3JlYXRlZCIpCisKICAg
ICAgICAgZGVmIGRlc3Ryb3koc2VsZik6Ci0gICAgICAgICAgICBwcmludCAoImRhdGFiYXNlIGlu
c3RhbmNlIGRlc3Ryb3llZCIpCisgICAgICAgICAgICBwcmludCgiZGF0YWJhc2UgaW5zdGFuY2Ug
ZGVzdHJveWVkIikKKwogCiAgICAgZGVmIHB5dGVzdF9mdW5jYXJnX19kYihyZXF1ZXN0KToKLSAg
ICAgICAgcmV0dXJuIHJlcXVlc3QuY2FjaGVkX3NldHVwKHNldHVwPURhdGFCYXNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcmRvd249bGFtYmRhIGRiOiBkYi5kZXN0
cm95LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU9InNlc3Npb24i
KQorICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNoZWRfc2V0dXAoCisgICAgICAgICAgICBzZXR1
cD1EYXRhQmFzZSwgdGVhcmRvd249bGFtYmRhIGRiOiBkYi5kZXN0cm95LCBzY29wZT0ic2Vzc2lv
biIKKyAgICAgICAgKQogCiBUaGVyZSBhcmUgc2V2ZXJhbCBsaW1pdGF0aW9ucyBhbmQgZGlmZmlj
dWx0aWVzIHdpdGggdGhpcyBhcHByb2FjaDoKIApAQCAtNDcsNyArNTEsNyBAQCBUaGVyZSBhcmUg
c2V2ZXJhbCBsaW1pdGF0aW9ucyBhbmQgZGlmZmljdWx0aWVzIHdpdGggdGhpcyBhcHByb2FjaDoK
ICAgIHBlcmZvcm1zIHBhcmFtZXRyaXphdGlvbiBhdCB0aGUgcGxhY2VzIHdoZXJlIHRoZSByZXNv
dXJjZQogICAgaXMgdXNlZC4gIE1vcmVvdmVyLCB5b3UgbmVlZCB0byBtb2RpZnkgdGhlIGZhY3Rv
cnkgdG8gdXNlIGFuCiAgICBgYGV4dHJha2V5YGAgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYGByZXF1
ZXN0LnBhcmFtYGAgdG8gdGhlCi0gICA6cHk6ZnVuYzpgfnB5dGhvbi5SZXF1ZXN0LmNhY2hlZF9z
ZXR1cGAgY2FsbC4KKyAgIGBgUmVxdWVzdC5jYWNoZWRfc2V0dXBgYCBjYWxsLgogCiAzLiBNdWx0
aXBsZSBwYXJhbWV0cml6ZWQgc2Vzc2lvbi1zY29wZWQgcmVzb3VyY2VzIHdpbGwgYmUgYWN0aXZl
CiAgICBhdCB0aGUgc2FtZSB0aW1lLCBtYWtpbmcgaXQgaGFyZCBmb3IgdGhlbSB0byBhZmZlY3Qg
Z2xvYmFsIHN0YXRlCkBAIC02OCw3ICs3Miw5IEBAIERpcmVjdCBzY29waW5nIG9mIGZpeHR1cmUv
ZnVuY2FyZyBmYWN0b3JpZXMKIAogSW5zdGVhZCBvZiBjYWxsaW5nIGNhY2hlZF9zZXR1cCgpIHdp
dGggYSBjYWNoZSBzY29wZSwgeW91IGNhbiB1c2UgdGhlCiA6cmVmOmBAcHl0ZXN0LmZpeHR1cmUg
PHB5dGVzdC5maXh0dXJlPmAgZGVjb3JhdG9yIGFuZCBkaXJlY3RseSBzdGF0ZQotdGhlIHNjb3Bl
OjoKK3RoZSBzY29wZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgQHB5dGVzdC5m
aXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKICAgICBkZWYgZGIocmVxdWVzdCk6CkBAIC05MCwxMSAr
OTYsMTMgQEAgUHJldmlvdXNseSwgZnVuY2FyZyBmYWN0b3JpZXMgY291bGQgbm90IGRpcmVjdGx5
IGNhdXNlIHBhcmFtZXRyaXphdGlvbi4KIFlvdSBuZWVkZWQgdG8gc3BlY2lmeSBhIGBgQHBhcmFt
ZXRyaXplYGAgZGVjb3JhdG9yIG9uIHlvdXIgdGVzdCBmdW5jdGlvbgogb3IgaW1wbGVtZW50IGEg
YGBweXRlc3RfZ2VuZXJhdGVfdGVzdHNgYCBob29rIHRvIHBlcmZvcm0KIHBhcmFtZXRyaXphdGlv
biwgaS5lLiBjYWxsaW5nIGEgdGVzdCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCB2YWx1
ZQotc2V0cy4gIHB5dGVzdC0yLjMgaW50cm9kdWNlcyBhIGRlY29yYXRvciBmb3IgdXNlIG9uIHRo
ZSBmYWN0b3J5IGl0c2VsZjo6CitzZXRzLiAgcHl0ZXN0LTIuMyBpbnRyb2R1Y2VzIGEgZGVjb3Jh
dG9yIGZvciB1c2Ugb24gdGhlIGZhY3RvcnkgaXRzZWxmOgorCisuLiBjb2RlLWJsb2NrOjogcHl0
aG9uCiAKICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsibXlzcWwiLCAicGciXSkKICAgICBk
ZWYgZGIocmVxdWVzdCk6Ci0gICAgICAgIC4uLiAjIHVzZSByZXF1ZXN0LnBhcmFtCisgICAgICAg
IC4uLiAgIyB1c2UgcmVxdWVzdC5wYXJhbQogCiBIZXJlIHRoZSBmYWN0b3J5IHdpbGwgYmUgaW52
b2tlZCB0d2ljZSAod2l0aCB0aGUgcmVzcGVjdGl2ZSAibXlzcWwiCiBhbmQgInBnIiB2YWx1ZXMg
c2V0IGFzIGBgcmVxdWVzdC5wYXJhbWBgIGF0dHJpYnV0ZXMpIGFuZCBhbGwgb2YKQEAgLTEwNSw5
ICsxMTMsMTEgQEAgVGhpcyBuZXcgd2F5IG9mIHBhcmFtZXRyaXppbmcgZnVuY2FyZyBmYWN0b3Jp
ZXMgc2hvdWxkIGluIG1hbnkgY2FzZXMKIGFsbG93IHRvIHJlLXVzZSBhbHJlYWR5IHdyaXR0ZW4g
ZmFjdG9yaWVzIGJlY2F1c2UgZWZmZWN0aXZlbHkKIGBgcmVxdWVzdC5wYXJhbWBgIHdhcyBhbHJl
YWR5IHVzZWQgd2hlbiB0ZXN0IGZ1bmN0aW9ucy9jbGFzc2VzIHdlcmUKIHBhcmFtZXRyaXplZCB2
aWEKLTpweTpmdW5jOmB+X3B5dGVzdC5weXRob24uTWV0YWZ1bmMucGFyYW1ldHJpemUoaW5kaXJl
Y3Q9VHJ1ZSlgIGNhbGxzLgorOnB5OmZ1bmM6YG1ldGFmdW5jLnBhcmFtZXRyaXplKGluZGlyZWN0
PVRydWUpIDxfcHl0ZXN0LnB5dGhvbi5NZXRhZnVuYy5wYXJhbWV0cml6ZT5gIGNhbGxzLgorCitP
ZiBjb3Vyc2UgaXQncyBwZXJmZWN0bHkgZmluZSB0byBjb21iaW5lIHBhcmFtZXRyaXphdGlvbiBh
bmQgc2NvcGluZzoKIAotT2YgY291cnNlIGl0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY29tYmluZSBw
YXJhbWV0cml6YXRpb24gYW5kIHNjb3Bpbmc6OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAg
ICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIiwgcGFyYW1zPVsibXlzcWwiLCAicGci
XSkKICAgICBkZWYgZGIocmVxdWVzdCk6CkBAIC0xMjgsNyArMTM4LDkgQEAgTm8gYGBweXRlc3Rf
ZnVuY2FyZ19fYGAgcHJlZml4IHdoZW4gdXNpbmcgQGZpeHR1cmUgZGVjb3JhdG9yCiAKIFdoZW4g
dXNpbmcgdGhlIGBgQGZpeHR1cmVgYCBkZWNvcmF0b3IgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9u
CiBkZW5vdGVzIHRoZSBuYW1lIHVuZGVyIHdoaWNoIHRoZSByZXNvdXJjZSBjYW4gYmUgYWNjZXNz
ZWQgYXMgYSBmdW5jdGlvbgotYXJndW1lbnQ6OgorYXJndW1lbnQ6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgIEBweXRlc3QuZml4dHVyZSgpCiAgICAgZGVmIGRiKHJlcXVlc3QpOgpA
QCAtMTM3LDcgKzE0OSw5IEBAIGFyZ3VtZW50OjoKIFRoZSBuYW1lIHVuZGVyIHdoaWNoIHRoZSBm
dW5jYXJnIHJlc291cmNlIGNhbiBiZSByZXF1ZXN0ZWQgaXMgYGBkYmBgLgogCiBZb3UgY2FuIHN0
aWxsIHVzZSB0aGUgIm9sZCIgbm9uLWRlY29yYXRvciB3YXkgb2Ygc3BlY2lmeWluZyBmdW5jYXJn
IGZhY3RvcmllcwotYWthOjoKK2FrYToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAg
ZGVmIHB5dGVzdF9mdW5jYXJnX19kYihyZXF1ZXN0KToKICAgICAgICAgLi4uCkBAIC0xNTYsNyAr
MTcwLDcgQEAgc2V2ZXJhbCBwcm9ibGVtczoKIAogMS4gaW4gZGlzdHJpYnV0ZWQgdGVzdGluZyB0
aGUgbWFzdGVyIHByb2Nlc3Mgd291bGQgc2V0dXAgdGVzdCByZXNvdXJjZXMKICAgIHRoYXQgYXJl
IG5ldmVyIG5lZWRlZCBiZWNhdXNlIGl0IG9ubHkgY28tb3JkaW5hdGVzIHRoZSB0ZXN0IHJ1bgot
ICAgYWN0aXZpdGllcyBvZiB0aGUgc2xhdmUgcHJvY2Vzc2VzLgorICAgYWN0aXZpdGllcyBvZiB0
aGUgd29ya2VyIHByb2Nlc3Nlcy4KIAogMi4gaWYgeW91IG9ubHkgcGVyZm9ybSBhIGNvbGxlY3Rp
b24gKHdpdGggIi0tY29sbGVjdC1vbmx5IikKICAgIHJlc291cmNlLXNldHVwIHdpbGwgc3RpbGwg
YmUgZXhlY3V0ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZ2V0dGluZy1zdGFy
dGVkLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9nZXR0aW5nLXN0YXJ0ZWQucnN0CmluZGV4IGYy
ZGJlYzVlOTMyOC4uNWE1ZjBmYTdhNDNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
Z2V0dGluZy1zdGFydGVkLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZ2V0dGluZy1zdGFy
dGVkLnJzdApAQCAtMSwxNSArMSwxMiBAQAogSW5zdGFsbGF0aW9uIGFuZCBHZXR0aW5nIFN0YXJ0
ZWQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSoqUHl0aG9ucyoqOiBQ
eXRob24gMi43LCAzLjQsIDMuNSwgMy42LCBKeXRob24sIFB5UHktMi4zCisqKlB5dGhvbnMqKjog
UHl0aG9uIDMuNSwgMy42LCAzLjcsIDMuOCwgMy45LCBQeVB5MwogCi0qKlBsYXRmb3JtcyoqOiBV
bml4L1Bvc2l4IGFuZCBXaW5kb3dzCisqKlBsYXRmb3JtcyoqOiBMaW51eCBhbmQgV2luZG93cwog
CiAqKlB5UEkgcGFja2FnZSBuYW1lKio6IGBweXRlc3QgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVj
dC9weXRlc3QvPmBfCiAKLSoqRGVwZW5kZW5jaWVzKio6IGBweSA8aHR0cHM6Ly9weXBpLm9yZy9w
cm9qZWN0L3B5Lz5gXywKLWBjb2xvcmFtYSAoV2luZG93cykgPGh0dHBzOi8vcHlwaS5vcmcvcHJv
amVjdC9jb2xvcmFtYS8+YF8sCi0KICoqRG9jdW1lbnRhdGlvbiBhcyBQREYqKjogYGRvd25sb2Fk
IGxhdGVzdCA8aHR0cHM6Ly9tZWRpYS5yZWFkdGhlZG9jcy5vcmcvcGRmL3B5dGVzdC9sYXRlc3Qv
cHl0ZXN0LnBkZj5gXwogCiBgYHB5dGVzdGBgIGlzIGEgZnJhbWV3b3JrIHRoYXQgbWFrZXMgYnVp
bGRpbmcgc2ltcGxlIGFuZCBzY2FsYWJsZSB0ZXN0cyBlYXN5LiBUZXN0cyBhcmUgZXhwcmVzc2l2
ZSBhbmQgcmVhZGFibGXigJRubyBib2lsZXJwbGF0ZSBjb2RlIHJlcXVpcmVkLiBHZXQgc3RhcnRl
ZCBpbiBtaW51dGVzIHdpdGggYSBzbWFsbCB1bml0IHRlc3Qgb3IgY29tcGxleCBmdW5jdGlvbmFs
IHRlc3QgZm9yIHlvdXIgYXBwbGljYXRpb24gb3IgbGlicmFyeS4KQEAgLTIwLDM1ICsxNyw0NSBA
QCBJbnN0YWxsYXRpb24gYW5kIEdldHRpbmcgU3RhcnRlZAogSW5zdGFsbCBgYHB5dGVzdGBgCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTEuIFJ1biB0aGUgZm9s
bG93aW5nIGNvbW1hbmQgaW4geW91ciBjb21tYW5kIGxpbmU6OgorMS4gUnVuIHRoZSBmb2xsb3dp
bmcgY29tbWFuZCBpbiB5b3VyIGNvbW1hbmQgbGluZToKKworLi4gY29kZS1ibG9jazo6IGJhc2gK
IAogICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVzdAogCi0yLiBDaGVjayB0aGF0IHlvdSBpbnN0YWxs
ZWQgdGhlIGNvcnJlY3QgdmVyc2lvbjo6CisyLiBDaGVjayB0aGF0IHlvdSBpbnN0YWxsZWQgdGhl
IGNvcnJlY3QgdmVyc2lvbjoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgICQgcHl0ZXN0
IC0tdmVyc2lvbgotICAgIFRoaXMgaXMgcHl0ZXN0IHZlcnNpb24gMy54LnksIGltcG9ydGVkIGZy
b20gJFBZVEhPTl9QUkVGSVgvbGliL3B5dGhvbjMuNS9zaXRlLXBhY2thZ2VzL3B5dGVzdC5weQor
ICAgIHB5dGVzdCA2LjEuMQogCiAuLiBfYHNpbXBsZXRlc3RgOgogCiBDcmVhdGUgeW91ciBmaXJz
dCB0ZXN0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLUNyZWF0ZSBhIHNpbXBsZSB0ZXN0IGZ1bmN0aW9uIHdpdGgganVzdCBmb3Vy
IGxpbmVzIG9mIGNvZGU6OgorQ3JlYXRlIGEgc2ltcGxlIHRlc3QgZnVuY3Rpb24gd2l0aCBqdXN0
IGZvdXIgbGluZXMgb2YgY29kZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBj
b250ZW50IG9mIHRlc3Rfc2FtcGxlLnB5CiAgICAgZGVmIGZ1bmMoeCk6CiAgICAgICAgIHJldHVy
biB4ICsgMQogCisKICAgICBkZWYgdGVzdF9hbnN3ZXIoKToKICAgICAgICAgYXNzZXJ0IGZ1bmMo
MykgPT0gNQogCi1UaGF04oCZcyBpdC4gWW91IGNhbiBub3cgZXhlY3V0ZSB0aGUgdGVzdCBmdW5j
dGlvbjo6CitUaGF04oCZcyBpdC4gWW91IGNhbiBub3cgZXhlY3V0ZSB0aGUgdGVzdCBmdW5jdGlv
bjoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QKICAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
My54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1Q
RElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJF
RklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29s
bGVjdGVkIDEgaXRlbQogCiAgICAgdGVzdF9zYW1wbGUucHkgRiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC02MSwxMCArNjgsMTIg
QEAgVGhhdOKAmXMgaXQuIFlvdSBjYW4gbm93IGV4ZWN1dGUgdGhlIHRlc3QgZnVuY3Rpb246Ogog
ICAgIEUgICAgICAgYXNzZXJ0IDQgPT0gNQogICAgIEUgICAgICAgICsgIHdoZXJlIDQgPSBmdW5j
KDMpCiAKLSAgICB0ZXN0X3NhbXBsZS5weTo1OiBBc3NlcnRpb25FcnJvcgotICAgID09PT09PT09
PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09
PT09PT09PT09PT0KKyAgICB0ZXN0X3NhbXBsZS5weTo2OiBBc3NlcnRpb25FcnJvcgorICAgID09
PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9zYW1wbGUucHk6OnRlc3RfYW5zd2Vy
IC0gYXNzZXJ0IDQgPT0gNQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMSBmYWls
ZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhpcyB0ZXN0IHJl
dHVybnMgYSBmYWlsdXJlIHJlcG9ydCBiZWNhdXNlIGBgZnVuYygzKWBgIGRvZXMgbm90IHJldHVy
biBgYDVgYC4KK1RoZSBgYFsxMDAlXWBgIHJlZmVycyB0byB0aGUgb3ZlcmFsbCBwcm9ncmVzcyBv
ZiBydW5uaW5nIGFsbCB0ZXN0IGNhc2VzLiBBZnRlciBpdCBmaW5pc2hlcywgcHl0ZXN0IHRoZW4g
c2hvd3MgYSBmYWlsdXJlIHJlcG9ydCBiZWNhdXNlIGBgZnVuYygzKWBgIGRvZXMgbm90IHJldHVy
biBgYDVgYC4KIAogLi4gbm90ZTo6CiAKQEAgLTc5LDM5ICs4OCw1NiBAQCBSdW4gbXVsdGlwbGUg
dGVzdHMKIEFzc2VydCB0aGF0IGEgY2VydGFpbiBleGNlcHRpb24gaXMgcmFpc2VkCiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1Vc2UgdGhlIGBgcmFpc2VzYGAgaGVscGVyIHRvIGFzc2VydCB0aGF0IHNvbWUgY29kZSByYWlz
ZXMgYW4gZXhjZXB0aW9uOjoKK1VzZSB0aGUgOnJlZjpgcmFpc2VzIDxhc3NlcnRyYWlzZXM+YCBo
ZWxwZXIgdG8gYXNzZXJ0IHRoYXQgc29tZSBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246CisKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X3N5c2V4aXQucHkK
ICAgICBpbXBvcnQgcHl0ZXN0CisKKwogICAgIGRlZiBmKCk6CiAgICAgICAgIHJhaXNlIFN5c3Rl
bUV4aXQoMSkKIAorCiAgICAgZGVmIHRlc3RfbXl0ZXN0KCk6CiAgICAgICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhTeXN0ZW1FeGl0KToKICAgICAgICAgICAgIGYoKQogCi1FeGVjdXRlIHRoZSB0ZXN0
IGZ1bmN0aW9uIHdpdGgg4oCccXVpZXTigJ0gcmVwb3J0aW5nIG1vZGU6OgorRXhlY3V0ZSB0aGUg
dGVzdCBmdW5jdGlvbiB3aXRoIOKAnHF1aWV04oCdIHJlcG9ydGluZyBtb2RlOgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSB0ZXN0X3N5c2V4aXQucHkKICAgICAu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbMTAwJV0KLSAgICAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICAxIHBh
c3NlZCBpbiAwLjEycworCisuLiBub3RlOjoKKworICAgIFRoZSBgYC1xLy0tcXVpZXRgYCBmbGFn
IGtlZXBzIHRoZSBvdXRwdXQgYnJpZWYgaW4gdGhpcyBhbmQgZm9sbG93aW5nIGV4YW1wbGVzLgog
CiBHcm91cCBtdWx0aXBsZSB0ZXN0cyBpbiBhIGNsYXNzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbmNlIHlvdSBkZXZl
bG9wIG11bHRpcGxlIHRlc3RzLCB5b3UgbWF5IHdhbnQgdG8gZ3JvdXAgdGhlbSBpbnRvIGEgY2xh
c3MuIHB5dGVzdCBtYWtlcyBpdCBlYXN5IHRvIGNyZWF0ZSBhIGNsYXNzIGNvbnRhaW5pbmcgbW9y
ZSB0aGFuIG9uZSB0ZXN0OjoKKy4uIHJlZ2VuZG9jOndpcGUKKworT25jZSB5b3UgZGV2ZWxvcCBt
dWx0aXBsZSB0ZXN0cywgeW91IG1heSB3YW50IHRvIGdyb3VwIHRoZW0gaW50byBhIGNsYXNzLiBw
eXRlc3QgbWFrZXMgaXQgZWFzeSB0byBjcmVhdGUgYSBjbGFzcyBjb250YWluaW5nIG1vcmUgdGhh
biBvbmUgdGVzdDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9m
IHRlc3RfY2xhc3MucHkKLSAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKKyAgICBjbGFzcyBU
ZXN0Q2xhc3M6CiAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmKToKICAgICAgICAgICAgIHggPSAi
dGhpcyIKLSAgICAgICAgICAgIGFzc2VydCAnaCcgaW4geAorICAgICAgICAgICAgYXNzZXJ0ICJo
IiBpbiB4CiAKICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgogICAgICAgICAgICAgeCA9ICJo
ZWxsbyIKLSAgICAgICAgICAgIGFzc2VydCBoYXNhdHRyKHgsICdjaGVjaycpCisgICAgICAgICAg
ICBhc3NlcnQgaGFzYXR0cih4LCAiY2hlY2siKQorCitgYHB5dGVzdGBgIGRpc2NvdmVycyBhbGwg
dGVzdHMgZm9sbG93aW5nIGl0cyA6cmVmOmBDb252ZW50aW9ucyBmb3IgUHl0aG9uIHRlc3QgZGlz
Y292ZXJ5IDx0ZXN0IGRpc2NvdmVyeT5gLCBzbyBpdCBmaW5kcyBib3RoIGBgdGVzdF9gYCBwcmVm
aXhlZCBmdW5jdGlvbnMuIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3ViY2xhc3MgYW55dGhpbmcsIGJ1
dCBtYWtlIHN1cmUgdG8gcHJlZml4IHlvdXIgY2xhc3Mgd2l0aCBgYFRlc3RgYCBvdGhlcndpc2Ug
dGhlIGNsYXNzIHdpbGwgYmUgc2tpcHBlZC4gV2UgY2FuIHNpbXBseSBydW4gdGhlIG1vZHVsZSBi
eSBwYXNzaW5nIGl0cyBmaWxlbmFtZToKIAotYGBweXRlc3RgYCBkaXNjb3ZlcnMgYWxsIHRlc3Rz
IGZvbGxvd2luZyBpdHMgOnJlZjpgQ29udmVudGlvbnMgZm9yIFB5dGhvbiB0ZXN0IGRpc2NvdmVy
eSA8dGVzdCBkaXNjb3Zlcnk+YCwgc28gaXQgZmluZHMgYm90aCBgYHRlc3RfYGAgcHJlZml4ZWQg
ZnVuY3Rpb25zLiBUaGVyZSBpcyBubyBuZWVkIHRvIHN1YmNsYXNzIGFueXRoaW5nLiBXZSBjYW4g
c2ltcGx5IHJ1biB0aGUgbW9kdWxlIGJ5IHBhc3NpbmcgaXRzIGZpbGVuYW1lOjoKKy4uIGNvZGUt
YmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IC1xIHRlc3RfY2xhc3MucHkKICAgICAuRiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMTAwJV0KQEAgLTEyMiwyNiArMTQ4LDgzIEBAIE9uY2UgeW91IGRldmVsb3AgbXVs
dGlwbGUgdGVzdHMsIHlvdSBtYXkgd2FudCB0byBncm91cCB0aGVtIGludG8gYSBjbGFzcy4gcHl0
ZXN0CiAKICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgogICAgICAgICAgICAgeCA9ICJoZWxs
byIKLSAgICA+ICAgICAgIGFzc2VydCBoYXNhdHRyKHgsICdjaGVjaycpCisgICAgPiAgICAgICBh
c3NlcnQgaGFzYXR0cih4LCAiY2hlY2siKQogICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFz
c2VydCBGYWxzZQogICAgIEUgICAgICAgICsgIHdoZXJlIEZhbHNlID0gaGFzYXR0cignaGVsbG8n
LCAnY2hlY2snKQogCiAgICAgdGVzdF9jbGFzcy5weTo4OiBBc3NlcnRpb25FcnJvcgotICAgIDEg
ZmFpbGVkLCAxIHBhc3NlZCBpbiAwLjEyIHNlY29uZHMKKyAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09
CisgICAgRkFJTEVEIHRlc3RfY2xhc3MucHk6OlRlc3RDbGFzczo6dGVzdF90d28gLSBBc3NlcnRp
b25FcnJvcjogYXNzZXJ0IEZhbHNlCisgICAgMSBmYWlsZWQsIDEgcGFzc2VkIGluIDAuMTJzCiAK
IFRoZSBmaXJzdCB0ZXN0IHBhc3NlZCBhbmQgdGhlIHNlY29uZCBmYWlsZWQuIFlvdSBjYW4gZWFz
aWx5IHNlZSB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBpbiB0aGUgYXNzZXJ0aW9uIHRvIGhlbHAg
eW91IHVuZGVyc3RhbmQgdGhlIHJlYXNvbiBmb3IgdGhlIGZhaWx1cmUuCiAKK0dyb3VwaW5nIHRl
c3RzIGluIGNsYXNzZXMgY2FuIGJlIGJlbmVmaWNpYWwgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29u
czoKKworICogVGVzdCBvcmdhbml6YXRpb24KKyAqIFNoYXJpbmcgZml4dHVyZXMgZm9yIHRlc3Rz
IG9ubHkgaW4gdGhhdCBwYXJ0aWN1bGFyIGNsYXNzCisgKiBBcHBseWluZyBtYXJrcyBhdCB0aGUg
Y2xhc3MgbGV2ZWwgYW5kIGhhdmluZyB0aGVtIGltcGxpY2l0bHkgYXBwbHkgdG8gYWxsIHRlc3Rz
CisKK1NvbWV0aGluZyB0byBiZSBhd2FyZSBvZiB3aGVuIGdyb3VwaW5nIHRlc3RzIGluc2lkZSBj
bGFzc2VzIGlzIHRoYXQgZWFjaCB0ZXN0IGhhcyBhIHVuaXF1ZSBpbnN0YW5jZSBvZiB0aGUgY2xh
c3MuCitIYXZpbmcgZWFjaCB0ZXN0IHNoYXJlIHRoZSBzYW1lIGNsYXNzIGluc3RhbmNlIHdvdWxk
IGJlIHZlcnkgZGV0cmltZW50YWwgdG8gdGVzdCBpc29sYXRpb24gYW5kIHdvdWxkIHByb21vdGUg
cG9vciB0ZXN0IHByYWN0aWNlcy4KK1RoaXMgaXMgb3V0bGluZWQgYmVsb3c6CisKKy4uIHJlZ2Vu
ZG9jOndpcGUKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50IG9mIHRl
c3RfY2xhc3NfZGVtby5weQorICAgIGNsYXNzIFRlc3RDbGFzc0RlbW9JbnN0YW5jZToKKyAgICAg
ICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IDAKKworICAgICAgICBk
ZWYgdGVzdF90d28oc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgMAorCisKKy4uIGNvZGUtYmxv
Y2s6OiBweXRlc3QKKworICAgICQgcHl0ZXN0IC1rIFRlc3RDbGFzc0RlbW9JbnN0YW5jZSAtcQor
ICAgIEZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsxMDAlXQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBfX19f
X19fX19fX19fX19fX19fX19fIFRlc3RDbGFzc0RlbW9JbnN0YW5jZS50ZXN0X29uZSBfX19fX19f
X19fX19fX19fX19fX19fCisKKyAgICBzZWxmID0gPHRlc3RfY2xhc3NfZGVtby5UZXN0Q2xhc3NE
ZW1vSW5zdGFuY2Ugb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CisKKyAgICAgICAgZGVmIHRlc3Rfb25l
KHNlbGYpOgorICAgID4gICAgICAgYXNzZXJ0IDAKKyAgICBFICAgICAgIGFzc2VydCAwCisKKyAg
ICB0ZXN0X2NsYXNzX2RlbW8ucHk6MzogQXNzZXJ0aW9uRXJyb3IKKyAgICBfX19fX19fX19fX19f
X19fX19fX19fIFRlc3RDbGFzc0RlbW9JbnN0YW5jZS50ZXN0X3R3byBfX19fX19fX19fX19fX19f
X19fX19fCisKKyAgICBzZWxmID0gPHRlc3RfY2xhc3NfZGVtby5UZXN0Q2xhc3NEZW1vSW5zdGFu
Y2Ugb2JqZWN0IGF0IDB4ZGVhZGJlZWY+CisKKyAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgor
ICAgID4gICAgICAgYXNzZXJ0IDAKKyAgICBFICAgICAgIGFzc2VydCAwCisKKyAgICB0ZXN0X2Ns
YXNzX2RlbW8ucHk6NjogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09
PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09Cisg
ICAgRkFJTEVEIHRlc3RfY2xhc3NfZGVtby5weTo6VGVzdENsYXNzRGVtb0luc3RhbmNlOjp0ZXN0
X29uZSAtIGFzc2VydCAwCisgICAgRkFJTEVEIHRlc3RfY2xhc3NfZGVtby5weTo6VGVzdENsYXNz
RGVtb0luc3RhbmNlOjp0ZXN0X3R3byAtIGFzc2VydCAwCisgICAgMiBmYWlsZWQgaW4gMC4xMnMK
KwogUmVxdWVzdCBhIHVuaXF1ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBmdW5jdGlvbmFsIHRl
c3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1gYHB5dGVzdGBgIHByb3ZpZGVzIGBCdWlsdGluIGZpeHR1cmVzL2Z1bmN0
aW9uIGFyZ3VtZW50cyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L2J1aWx0aW4u
aHRtbCNidWlsdGluZml4dHVyZXM+YF8gdG8gcmVxdWVzdCBhcmJpdHJhcnkgcmVzb3VyY2VzLCBs
aWtlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3Rvcnk6OgorYGBweXRlc3RgYCBwcm92aWRlcyBg
QnVpbHRpbiBmaXh0dXJlcy9mdW5jdGlvbiBhcmd1bWVudHMgPGh0dHBzOi8vZG9jcy5weXRlc3Qu
b3JnL2VuL3N0YWJsZS9idWlsdGluLmh0bWw+YF8gdG8gcmVxdWVzdCBhcmJpdHJhcnkgcmVzb3Vy
Y2VzLCBsaWtlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3Rvcnk6CisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X3RtcGRpci5weQogICAgIGRlZiB0ZXN0
X25lZWRzZmlsZXModG1wZGlyKToKLSAgICAgICAgcHJpbnQgKHRtcGRpcikKKyAgICAgICAgcHJp
bnQodG1wZGlyKQogICAgICAgICBhc3NlcnQgMAogCi1MaXN0IHRoZSBuYW1lIGBgdG1wZGlyYGAg
aW4gdGhlIHRlc3QgZnVuY3Rpb24gc2lnbmF0dXJlIGFuZCBgYHB5dGVzdGBgIHdpbGwgbG9va3Vw
IGFuZCBjYWxsIGEgZml4dHVyZSBmYWN0b3J5IHRvIGNyZWF0ZSB0aGUgcmVzb3VyY2UgYmVmb3Jl
IHBlcmZvcm1pbmcgdGhlIHRlc3QgZnVuY3Rpb24gY2FsbC4gQmVmb3JlIHRoZSB0ZXN0IHJ1bnMs
IGBgcHl0ZXN0YGAgY3JlYXRlcyBhIHVuaXF1ZS1wZXItdGVzdC1pbnZvY2F0aW9uIHRlbXBvcmFy
eSBkaXJlY3Rvcnk6OgorTGlzdCB0aGUgbmFtZSBgYHRtcGRpcmBgIGluIHRoZSB0ZXN0IGZ1bmN0
aW9uIHNpZ25hdHVyZSBhbmQgYGBweXRlc3RgYCB3aWxsIGxvb2t1cCBhbmQgY2FsbCBhIGZpeHR1
cmUgZmFjdG9yeSB0byBjcmVhdGUgdGhlIHJlc291cmNlIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSB0
ZXN0IGZ1bmN0aW9uIGNhbGwuIEJlZm9yZSB0aGUgdGVzdCBydW5zLCBgYHB5dGVzdGBgIGNyZWF0
ZXMgYSB1bmlxdWUtcGVyLXRlc3QtaW52b2NhdGlvbiB0ZW1wb3JhcnkgZGlyZWN0b3J5OgorCisu
LiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSB0ZXN0X3RtcGRpci5weQog
ICAgIEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtMTUxLDE4ICsyMzQsMjIgQEAgTGlzdCB0aGUgbmFt
ZSBgYHRtcGRpcmBgIGluIHRoZSB0ZXN0IGZ1bmN0aW9uIHNpZ25hdHVyZSBhbmQgYGBweXRlc3Rg
YCB3aWxsIGxvb2sKICAgICB0bXBkaXIgPSBsb2NhbCgnUFlURVNUX1RNUERJUi90ZXN0X25lZWRz
ZmlsZXMwJykKIAogICAgICAgICBkZWYgdGVzdF9uZWVkc2ZpbGVzKHRtcGRpcik6Ci0gICAgICAg
ICAgICBwcmludCAodG1wZGlyKQorICAgICAgICAgICAgcHJpbnQodG1wZGlyKQogICAgID4gICAg
ICAgYXNzZXJ0IDAKICAgICBFICAgICAgIGFzc2VydCAwCiAKICAgICB0ZXN0X3RtcGRpci5weToz
OiBBc3NlcnRpb25FcnJvcgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXB0dXJl
ZCBzdGRvdXQgY2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBQWVRFU1RfVE1Q
RElSL3Rlc3RfbmVlZHNmaWxlczAKLSAgICAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMKKyAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09
PT09PT09PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfdG1wZGlyLnB5Ojp0ZXN0X25lZWRz
ZmlsZXMgLSBhc3NlcnQgMAorICAgIDEgZmFpbGVkIGluIDAuMTJzCiAKIE1vcmUgaW5mbyBvbiB0
bXBkaXIgaGFuZGxpbmcgaXMgYXZhaWxhYmxlIGF0IDpyZWY6YFRlbXBvcmFyeSBkaXJlY3Rvcmll
cyBhbmQgZmlsZXMgPHRtcGRpciBoYW5kbGluZz5gLgogCi1GaW5kIG91dCB3aGF0IGtpbmQgb2Yg
YnVpbHRpbiA6cmVmOmBweXRlc3QgZml4dHVyZXMgPGZpeHR1cmVzPmAgZXhpc3Qgd2l0aCB0aGUg
Y29tbWFuZDo6CitGaW5kIG91dCB3aGF0IGtpbmQgb2YgYnVpbHRpbiA6cmVmOmBweXRlc3QgZml4
dHVyZXMgPGZpeHR1cmVzPmAgZXhpc3Qgd2l0aCB0aGUgY29tbWFuZDoKKworLi4gY29kZS1ibG9j
azo6IGJhc2gKIAogICAgIHB5dGVzdCAtLWZpeHR1cmVzICAgIyBzaG93cyBidWlsdGluIGFuZCBj
dXN0b20gZml4dHVyZXMKIApAQCAtMTc5LDUgKzI2NiwzIEBAIENoZWNrIG91dCBhZGRpdGlvbmFs
IHB5dGVzdCByZXNvdXJjZXMgdG8gaGVscCB5b3UgY3VzdG9taXplIHRlc3RzIGZvciB5b3VyIHVu
aXF1CiAqICI6cmVmOmBmaXh0dXJlc2AiIGZvciBwcm92aWRpbmcgYSBmdW5jdGlvbmFsIGJhc2Vs
aW5lIHRvIHlvdXIgdGVzdHMKICogIjpyZWY6YHBsdWdpbnNgIiBmb3IgbWFuYWdpbmcgYW5kIHdy
aXRpbmcgcGx1Z2lucwogKiAiOnJlZjpgZ29vZHByYWN0aWNlc2AiIGZvciB2aXJ0dWFsZW52IGFu
ZCB0ZXN0IGxheW91dHMKLQotLi4gaW5jbHVkZTo6IGxpbmtzLmluYwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2dvb2RwcmFjdGljZXMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2dv
b2RwcmFjdGljZXMucnN0CmluZGV4IDJiYmQ5ZDBhZTU4NC4uNGIzYzBhZjEwYTYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZ29vZHByYWN0aWNlcy5yc3QKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2dvb2RwcmFjdGljZXMucnN0CkBAIC0xLDkgKzEsMzQgQEAKLS4uIGhpZ2hsaWdo
dGxhbmc6OiBweXRob24KKy4uIGhpZ2hsaWdodDo6IHB5dGhvbgogLi4gX2Bnb29kcHJhY3RpY2Vz
YDoKIAogR29vZCBJbnRlZ3JhdGlvbiBQcmFjdGljZXMKID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorSW5zdGFsbCBwYWNrYWdlIHdpdGggcGlwCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBk
ZXZlbG9wbWVudCwgd2UgcmVjb21tZW5kIHlvdSB1c2UgdmVudl8gZm9yIHZpcnR1YWwgZW52aXJv
bm1lbnRzIGFuZAorcGlwXyBmb3IgaW5zdGFsbGluZyB5b3VyIGFwcGxpY2F0aW9uIGFuZCBhbnkg
ZGVwZW5kZW5jaWVzLAorYXMgd2VsbCBhcyB0aGUgYGBweXRlc3RgYCBwYWNrYWdlIGl0c2VsZi4K
K1RoaXMgZW5zdXJlcyB5b3VyIGNvZGUgYW5kIGRlcGVuZGVuY2llcyBhcmUgaXNvbGF0ZWQgZnJv
bSB5b3VyIHN5c3RlbSBQeXRob24gaW5zdGFsbGF0aW9uLgorCitOZXh0LCBwbGFjZSBhIGBgc2V0
dXAucHlgYCBmaWxlIGluIHRoZSByb290IG9mIHlvdXIgcGFja2FnZSB3aXRoIHRoZSBmb2xsb3dp
bmcgbWluaW11bSBjb250ZW50OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBmcm9t
IHNldHVwdG9vbHMgaW1wb3J0IHNldHVwLCBmaW5kX3BhY2thZ2VzCisKKyAgICBzZXR1cChuYW1l
PSJQQUNLQUdFTkFNRSIsIHBhY2thZ2VzPWZpbmRfcGFja2FnZXMoKSkKKworV2hlcmUgYGBQQUNL
QUdFTkFNRWBgIGlzIHRoZSBuYW1lIG9mIHlvdXIgcGFja2FnZS4gWW91IGNhbiB0aGVuIGluc3Rh
bGwgeW91ciBwYWNrYWdlIGluICJlZGl0YWJsZSIgbW9kZSBieSBydW5uaW5nIGZyb20gdGhlIHNh
bWUgZGlyZWN0b3J5OgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICAgIHBpcCBpbnN0YWxs
IC1lIC4KKword2hpY2ggbGV0cyB5b3UgY2hhbmdlIHlvdXIgc291cmNlIGNvZGUgKGJvdGggdGVz
dHMgYW5kIGFwcGxpY2F0aW9uKSBhbmQgcmVydW4gdGVzdHMgYXQgd2lsbC4KK1RoaXMgaXMgc2lt
aWxhciB0byBydW5uaW5nIGBgcHl0aG9uIHNldHVwLnB5IGRldmVsb3BgYCBvciBgYGNvbmRhIGRl
dmVsb3BgYCBpbiB0aGF0IGl0IGluc3RhbGxzCit5b3VyIHBhY2thZ2UgdXNpbmcgYSBzeW1saW5r
IHRvIHlvdXIgZGV2ZWxvcG1lbnQgY29kZS4KIAogLi4gX2B0ZXN0IGRpc2NvdmVyeWA6CiAuLiBf
YFB5dGhvbiB0ZXN0IGRpc2NvdmVyeWA6CkBAIC0yMCw4ICs0NSw4IEBAIENvbnZlbnRpb25zIGZv
ciBQeXRob24gdGVzdCBkaXNjb3ZlcnkKICogSW4gdGhvc2UgZGlyZWN0b3JpZXMsIHNlYXJjaCBm
b3IgYGB0ZXN0XyoucHlgYCBvciBgYCpfdGVzdC5weWBgIGZpbGVzLCBpbXBvcnRlZCBieSB0aGVp
ciBgdGVzdCBwYWNrYWdlIG5hbWVgXy4KICogRnJvbSB0aG9zZSBmaWxlcywgY29sbGVjdCB0ZXN0
IGl0ZW1zOgogCi0gICogYGB0ZXN0X2BgIHByZWZpeGVkIHRlc3QgZnVuY3Rpb25zIG9yIG1ldGhv
ZHMgb3V0c2lkZSBvZiBjbGFzcwotICAqIGBgdGVzdF9gYCBwcmVmaXhlZCB0ZXN0IGZ1bmN0aW9u
cyBvciBtZXRob2RzIGluc2lkZSBgYFRlc3RgYCBwcmVmaXhlZCB0ZXN0IGNsYXNzZXMgKHdpdGhv
dXQgYW4gYGBfX2luaXRfX2BgIG1ldGhvZCkKKyAgKiBgYHRlc3RgYCBwcmVmaXhlZCB0ZXN0IGZ1
bmN0aW9ucyBvciBtZXRob2RzIG91dHNpZGUgb2YgY2xhc3MKKyAgKiBgYHRlc3RgYCBwcmVmaXhl
ZCB0ZXN0IGZ1bmN0aW9ucyBvciBtZXRob2RzIGluc2lkZSBgYFRlc3RgYCBwcmVmaXhlZCB0ZXN0
IGNsYXNzZXMgKHdpdGhvdXQgYW4gYGBfX2luaXRfX2BgIG1ldGhvZCkKIAogRm9yIGV4YW1wbGVz
IG9mIGhvdyB0byBjdXN0b21pemUgeW91ciB0ZXN0IGRpc2NvdmVyeSA6ZG9jOmBleGFtcGxlL3B5
dGhvbmNvbGxlY3Rpb25gLgogCkBAIC0zOSw3ICs2NCw5IEBAIFRlc3RzIG91dHNpZGUgYXBwbGlj
YXRpb24gY29kZQogCiBQdXR0aW5nIHRlc3RzIGludG8gYW4gZXh0cmEgZGlyZWN0b3J5IG91dHNp
ZGUgeW91ciBhY3R1YWwgYXBwbGljYXRpb24gY29kZQogbWlnaHQgYmUgdXNlZnVsIGlmIHlvdSBo
YXZlIG1hbnkgZnVuY3Rpb25hbCB0ZXN0cyBvciBmb3Igb3RoZXIgcmVhc29ucyB3YW50Ci10byBr
ZWVwIHRlc3RzIHNlcGFyYXRlIGZyb20gYWN0dWFsIGFwcGxpY2F0aW9uIGNvZGUgKG9mdGVuIGEg
Z29vZCBpZGVhKTo6Cit0byBrZWVwIHRlc3RzIHNlcGFyYXRlIGZyb20gYWN0dWFsIGFwcGxpY2F0
aW9uIGNvZGUgKG9mdGVuIGEgZ29vZCBpZGVhKToKKworLi4gY29kZS1ibG9jazo6IHRleHQKIAog
ICAgIHNldHVwLnB5CiAgICAgbXlwa2cvCkBAIC01MSwxNyArNzgsMzAgQEAgdG8ga2VlcCB0ZXN0
cyBzZXBhcmF0ZSBmcm9tIGFjdHVhbCBhcHBsaWNhdGlvbiBjb2RlIChvZnRlbiBhIGdvb2QgaWRl
YSk6OgogICAgICAgICB0ZXN0X3ZpZXcucHkKICAgICAgICAgLi4uCiAKLVRoaXMgd2F5IHlvdXIg
dGVzdHMgY2FuIHJ1biBlYXNpbHkgYWdhaW5zdCBhbiBpbnN0YWxsZWQgdmVyc2lvbgotb2YgYGBt
eXBrZ2BgLgorVGhpcyBoYXMgdGhlIGZvbGxvd2luZyBiZW5lZml0czoKIAotTm90ZSB0aGF0IHVz
aW5nIHRoaXMgc2NoZW1lIHlvdXIgdGVzdCBmaWxlcyBtdXN0IGhhdmUgKip1bmlxdWUgbmFtZXMq
KiwgYmVjYXVzZQorKiBZb3VyIHRlc3RzIGNhbiBydW4gYWdhaW5zdCBhbiBpbnN0YWxsZWQgdmVy
c2lvbiBhZnRlciBleGVjdXRpbmcgYGBwaXAgaW5zdGFsbCAuYGAuCisqIFlvdXIgdGVzdHMgY2Fu
IHJ1biBhZ2FpbnN0IHRoZSBsb2NhbCBjb3B5IHdpdGggYW4gZWRpdGFibGUgaW5zdGFsbCBhZnRl
ciBleGVjdXRpbmcgYGBwaXAgaW5zdGFsbCAtLWVkaXRhYmxlIC5gYC4KKyogSWYgeW91IGRvbid0
IGhhdmUgYSBgYHNldHVwLnB5YGAgZmlsZSBhbmQgYXJlIHJlbHlpbmcgb24gdGhlIGZhY3QgdGhh
dCBQeXRob24gYnkgZGVmYXVsdCBwdXRzIHRoZSBjdXJyZW50CisgIGRpcmVjdG9yeSBpbiBgYHN5
cy5wYXRoYGAgdG8gaW1wb3J0IHlvdXIgcGFja2FnZSwgeW91IGNhbiBleGVjdXRlIGBgcHl0aG9u
IC1tIHB5dGVzdGBgIHRvIGV4ZWN1dGUgdGhlIHRlc3RzIGFnYWluc3QgdGhlCisgIGxvY2FsIGNv
cHkgZGlyZWN0bHksIHdpdGhvdXQgdXNpbmcgYGBwaXBgYC4KKworLi4gbm90ZTo6CisKKyAgICBT
ZWUgOnJlZjpgcHl0ZXN0IHZzIHB5dGhvbiAtbSBweXRlc3RgIGZvciBtb3JlIGluZm9ybWF0aW9u
IGFib3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY2FsbGluZyBgYHB5dGVzdGBgIGFuZAorICAg
IGBgcHl0aG9uIC1tIHB5dGVzdGBgLgorCitOb3RlIHRoYXQgdGhpcyBzY2hlbWUgaGFzIGEgZHJh
d2JhY2sgaWYgeW91IGFyZSB1c2luZyBgYHByZXBlbmRgYCA6cmVmOmBpbXBvcnQgbW9kZSA8aW1w
b3J0LW1vZGVzPmAKKyh3aGljaCBpcyB0aGUgZGVmYXVsdCk6IHlvdXIgdGVzdCBmaWxlcyBtdXN0
IGhhdmUgKip1bmlxdWUgbmFtZXMqKiwgYmVjYXVzZQogYGBweXRlc3RgYCB3aWxsIGltcG9ydCB0
aGVtIGFzICp0b3AtbGV2ZWwqIG1vZHVsZXMgc2luY2UgdGhlcmUgYXJlIG5vIHBhY2thZ2VzCiB0
byBkZXJpdmUgYSBmdWxsIHBhY2thZ2UgbmFtZSBmcm9tLiBJbiBvdGhlciB3b3JkcywgdGhlIHRl
c3QgZmlsZXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUgd2lsbAogYmUgaW1wb3J0ZWQgYXMgYGB0ZXN0
X2FwcGBgIGFuZCBgYHRlc3Rfdmlld2BgIHRvcC1sZXZlbCBtb2R1bGVzIGJ5IGFkZGluZyBgYHRl
c3RzL2BgIHRvCiBgYHN5cy5wYXRoYGAuCiAKIElmIHlvdSBuZWVkIHRvIGhhdmUgdGVzdCBtb2R1
bGVzIHdpdGggdGhlIHNhbWUgbmFtZSwgeW91IG1pZ2h0IGFkZCBgYF9faW5pdF9fLnB5YGAgZmls
ZXMgdG8geW91cgotYGB0ZXN0c2BgIGZvbGRlciBhbmQgc3ViZm9sZGVycywgY2hhbmdpbmcgdGhl
bSB0byBwYWNrYWdlczo6CitgYHRlc3RzYGAgZm9sZGVyIGFuZCBzdWJmb2xkZXJzLCBjaGFuZ2lu
ZyB0aGVtIHRvIHBhY2thZ2VzOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAogCiAgICAgc2V0dXAu
cHkKICAgICBteXBrZy8KQEAgLTc5LDExICsxMTksMTYgQEAgTm93IHB5dGVzdCB3aWxsIGxvYWQg
dGhlIG1vZHVsZXMgYXMgYGB0ZXN0cy5mb28udGVzdF92aWV3YGAgYW5kIGBgdGVzdHMuYmFyLnRl
c3QKIHlvdSB0byBoYXZlIG1vZHVsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLiBCdXQgbm93IHRoaXMg
aW50cm9kdWNlcyBhIHN1YnRsZSBwcm9ibGVtOiBpbiBvcmRlciB0byBsb2FkCiB0aGUgdGVzdCBt
b2R1bGVzIGZyb20gdGhlIGBgdGVzdHNgYCBkaXJlY3RvcnksIHB5dGVzdCBwcmVwZW5kcyB0aGUg
cm9vdCBvZiB0aGUgcmVwb3NpdG9yeSB0bwogYGBzeXMucGF0aGBgLCB3aGljaCBhZGRzIHRoZSBz
aWRlLWVmZmVjdCB0aGF0IG5vdyBgYG15cGtnYGAgaXMgYWxzbyBpbXBvcnRhYmxlLgorCiBUaGlz
IGlzIHByb2JsZW1hdGljIGlmIHlvdSBhcmUgdXNpbmcgYSB0b29sIGxpa2UgYHRveGBfIHRvIHRl
c3QgeW91ciBwYWNrYWdlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwKIGJlY2F1c2UgeW91IHdh
bnQgdG8gdGVzdCB0aGUgKmluc3RhbGxlZCogdmVyc2lvbiBvZiB5b3VyIHBhY2thZ2UsIG5vdCB0
aGUgbG9jYWwgY29kZSBmcm9tIHRoZSByZXBvc2l0b3J5LgogCisuLiBfYHNyYy1sYXlvdXRgOgor
CiBJbiB0aGlzIHNpdHVhdGlvbiwgaXQgaXMgKipzdHJvbmdseSoqIHN1Z2dlc3RlZCB0byB1c2Ug
YSBgYHNyY2BgIGxheW91dCB3aGVyZSBhcHBsaWNhdGlvbiByb290IHBhY2thZ2UgcmVzaWRlcyBp
biBhCi1zdWItZGlyZWN0b3J5IG9mIHlvdXIgcm9vdDo6CitzdWItZGlyZWN0b3J5IG9mIHlvdXIg
cm9vdDoKKworLi4gY29kZS1ibG9jazo6IHRleHQKIAogICAgIHNldHVwLnB5CiAgICAgc3JjLwpA
QCAtMTA0LDEyICsxNDksMjMgQEAgc3ViLWRpcmVjdG9yeSBvZiB5b3VyIHJvb3Q6OgogVGhpcyBs
YXlvdXQgcHJldmVudHMgYSBsb3Qgb2YgY29tbW9uIHBpdGZhbGxzIGFuZCBoYXMgbWFueSBiZW5l
Zml0cywgd2hpY2ggYXJlIGJldHRlciBleHBsYWluZWQgaW4gdGhpcyBleGNlbGxlbnQKIGBibG9n
IHBvc3QgYnkgSW9uZWwgQ3Jpc3RpYW4gTcSDcmllyJkgPGh0dHBzOi8vYmxvZy5pb25lbG1jLnJv
LzIwMTQvMDUvMjUvcHl0aG9uLXBhY2thZ2luZy8jdGhlLXN0cnVjdHVyZT5gXy4KIAorLi4gbm90
ZTo6CisgICAgVGhlIG5ldyBgYC0taW1wb3J0LW1vZGU9aW1wb3J0bGliYGAgKHNlZSA6cmVmOmBp
bXBvcnQtbW9kZXNgKSBkb2Vzbid0IGhhdmUKKyAgICBhbnkgb2YgdGhlIGRyYXdiYWNrcyBhYm92
ZSBiZWNhdXNlIGBgc3lzLnBhdGhgYCBhbmQgYGBzeXMubW9kdWxlc2BgIGFyZSBub3QgY2hhbmdl
ZCB3aGVuIGltcG9ydGluZworICAgIHRlc3QgbW9kdWxlcywgc28gdXNlcnMgdGhhdCBydW4KKyAg
ICBpbnRvIHRoaXMgaXNzdWUgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gdHJ5IGl0IGFuZCBy
ZXBvcnQgaWYgdGhlIG5ldyBvcHRpb24gd29ya3Mgd2VsbCBmb3IgdGhlbS4KKworICAgIFRoZSBg
YHNyY2BgIGRpcmVjdG9yeSBsYXlvdXQgaXMgc3RpbGwgc3Ryb25nbHkgcmVjb21tZW5kZWQgaG93
ZXZlci4KKworCiBUZXN0cyBhcyBwYXJ0IG9mIGFwcGxpY2F0aW9uIGNvZGUKIF5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBJbmxpbmluZyB0ZXN0IGRpcmVjdG9yaWVzIGludG8g
eW91ciBhcHBsaWNhdGlvbiBwYWNrYWdlCiBpcyB1c2VmdWwgaWYgeW91IGhhdmUgZGlyZWN0IHJl
bGF0aW9uIGJldHdlZW4gdGVzdHMgYW5kIGFwcGxpY2F0aW9uIG1vZHVsZXMgYW5kCi13YW50IHRv
IGRpc3RyaWJ1dGUgdGhlbSBhbG9uZyB3aXRoIHlvdXIgYXBwbGljYXRpb246Ogord2FudCB0byBk
aXN0cmlidXRlIHRoZW0gYWxvbmcgd2l0aCB5b3VyIGFwcGxpY2F0aW9uOgorCisuLiBjb2RlLWJs
b2NrOjogdGV4dAogCiAgICAgc2V0dXAucHkKICAgICBteXBrZy8KQEAgLTEyMiw3ICsxNzgsOSBA
QCB3YW50IHRvIGRpc3RyaWJ1dGUgdGhlbSBhbG9uZyB3aXRoIHlvdXIgYXBwbGljYXRpb246Ogog
ICAgICAgICAgICAgdGVzdF92aWV3LnB5CiAgICAgICAgICAgICAuLi4KIAotSW4gdGhpcyBzY2hl
bWUsIGl0IGlzIGVhc3kgdG8gcnVuIHlvdXIgdGVzdHMgdXNpbmcgdGhlIGBgLS1weWFyZ3NgYCBv
cHRpb246OgorSW4gdGhpcyBzY2hlbWUsIGl0IGlzIGVhc3kgdG8gcnVuIHlvdXIgdGVzdHMgdXNp
bmcgdGhlIGBgLS1weWFyZ3NgYCBvcHRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAg
ICBweXRlc3QgLS1weWFyZ3MgbXlwa2cKIApAQCAtMTQ1LDggKzIwMyw4IEBAIE5vdGUgdGhhdCB0
aGlzIGxheW91dCBhbHNvIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGBgc3JjYGAgbGF5
b3V0IG1lbnRpb25lCiAKIC4uIG5vdGU6OgogCi0gICAgSWYgYGBweXRlc3RgYCBmaW5kcyBhbiAi
YS9iL3Rlc3RfbW9kdWxlLnB5IiB0ZXN0IGZpbGUgd2hpbGUKLSAgICByZWN1cnNpbmcgaW50byB0
aGUgZmlsZXN5c3RlbSBpdCBkZXRlcm1pbmVzIHRoZSBpbXBvcnQgbmFtZQorICAgIEluIGBgcHJl
cGVuZGBgIGFuZCBgYGFwcGVuZGBgIGltcG9ydC1tb2RlcywgaWYgcHl0ZXN0IGZpbmRzIGEgYGAi
YS9iL3Rlc3RfbW9kdWxlLnB5ImBgCisgICAgdGVzdCBmaWxlIHdoaWxlIHJlY3Vyc2luZyBpbnRv
IHRoZSBmaWxlc3lzdGVtIGl0IGRldGVybWluZXMgdGhlIGltcG9ydCBuYW1lCiAgICAgYXMgZm9s
bG93czoKIAogICAgICogZGV0ZXJtaW5lIGBgYmFzZWRpcmBgOiB0aGlzIGlzIHRoZSBmaXJzdCAi
dXB3YXJkIiAodG93YXJkcyB0aGUgcm9vdCkKQEAgLTE2Nyw2ICsyMjUsMTAgQEAgTm90ZSB0aGF0
IHRoaXMgbGF5b3V0IGFsc28gd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYGBzcmNgYCBs
YXlvdXQgbWVudGlvbmUKICAgICBmcm9tIGVhY2ggb3RoZXIgYW5kIHRodXMgZGVyaXZpbmcgYSBj
YW5vbmljYWwgaW1wb3J0IG5hbWUgaGVscHMKICAgICB0byBhdm9pZCBzdXJwcmlzZXMgc3VjaCBh
cyBhIHRlc3QgbW9kdWxlIGdldHRpbmcgaW1wb3J0ZWQgdHdpY2UuCiAKKyAgICBXaXRoIGBgLS1p
bXBvcnQtbW9kZT1pbXBvcnRsaWJgYCB0aGluZ3MgYXJlIGxlc3MgY29udm9sdXRlZCBiZWNhdXNl
CisgICAgcHl0ZXN0IGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UgYGBzeXMucGF0aGBgIG9yIGBgc3lz
Lm1vZHVsZXNgYCwgbWFraW5nIHRoaW5ncworICAgIG11Y2ggbGVzcyBzdXJwcmlzaW5nLgorCiAK
IC4uIF9gdmlydHVhbGVudmA6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC92aXJ0dWFsZW52Lwog
Li4gX2BidWlsZG91dGA6IGh0dHA6Ly93d3cuYnVpbGRvdXQub3JnLwpAQCAtMTc3LDE5ICsyMzks
NiBAQCBOb3RlIHRoYXQgdGhpcyBsYXlvdXQgYWxzbyB3b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRo
IHRoZSBgYHNyY2BgIGxheW91dCBtZW50aW9uZQogdG94CiAtLS0tLS0KIAotRm9yIGRldmVsb3Bt
ZW50LCB3ZSByZWNvbW1lbmQgdG8gdXNlIHZpcnR1YWxlbnZfIGVudmlyb25tZW50cyBhbmQgcGlw
XwotZm9yIGluc3RhbGxpbmcgeW91ciBhcHBsaWNhdGlvbiBhbmQgYW55IGRlcGVuZGVuY2llcwot
YXMgd2VsbCBhcyB0aGUgYGBweXRlc3RgYCBwYWNrYWdlIGl0c2VsZi4gVGhpcyBlbnN1cmVzIHlv
dXIgY29kZSBhbmQKLWRlcGVuZGVuY2llcyBhcmUgaXNvbGF0ZWQgZnJvbSB0aGUgc3lzdGVtIFB5
dGhvbiBpbnN0YWxsYXRpb24uCi0KLVlvdSBjYW4gdGhlbiBpbnN0YWxsIHlvdXIgcGFja2FnZSBp
biAiZWRpdGFibGUiIG1vZGU6OgotCi0gICAgIHBpcCBpbnN0YWxsIC1lIC4KLQotd2hpY2ggbGV0
cyB5b3UgY2hhbmdlIHlvdXIgc291cmNlIGNvZGUgKGJvdGggdGVzdHMgYW5kIGFwcGxpY2F0aW9u
KSBhbmQgcmVydW4gdGVzdHMgYXQgd2lsbC4KLVRoaXMgaXMgc2ltaWxhciB0byBydW5uaW5nIGBw
eXRob24gc2V0dXAucHkgZGV2ZWxvcGAgb3IgYGNvbmRhIGRldmVsb3BgIGluIHRoYXQgaXQgaW5z
dGFsbHMKLXlvdXIgcGFja2FnZSB1c2luZyBhIHN5bWxpbmsgdG8geW91ciBkZXZlbG9wbWVudCBj
b2RlLgotCiBPbmNlIHlvdSBhcmUgZG9uZSB3aXRoIHlvdXIgd29yayBhbmQgd2FudCB0byBtYWtl
IHN1cmUgdGhhdCB5b3VyIGFjdHVhbAogcGFja2FnZSBwYXNzZXMgYWxsIHRlc3RzIHlvdSBtYXkg
d2FudCB0byBsb29rIGludG8gYHRveGBfLCB0aGUKIHZpcnR1YWxlbnYgdGVzdCBhdXRvbWF0aW9u
IHRvb2wgYW5kIGl0cyBgcHl0ZXN0IHN1cHBvcnQKQEAgLTIwMCwxMDIgKzI0OSw0IEBAIG9wdGlv
bnMuICBJdCB3aWxsIHJ1biB0ZXN0cyBhZ2FpbnN0IHRoZSBpbnN0YWxsZWQgcGFja2FnZSBhbmQg
bm90CiBhZ2FpbnN0IHlvdXIgc291cmNlIGNvZGUgY2hlY2tvdXQsIGhlbHBpbmcgdG8gZGV0ZWN0
IHBhY2thZ2luZwogZ2xpdGNoZXMuCiAKLQotSW50ZWdyYXRpbmcgd2l0aCBzZXR1cHRvb2xzIC8g
YGBweXRob24gc2V0dXAucHkgdGVzdGBgIC8gYGBweXRlc3QtcnVubmVyYGAKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLVlvdSBjYW4gaW50ZWdyYXRlIHRlc3QgcnVucyBpbnRvIHlvdXIgc2V0dXB0b29s
cyBiYXNlZCBwcm9qZWN0Ci13aXRoIHRoZSBgcHl0ZXN0LXJ1bm5lciA8aHR0cHM6Ly9weXBpLm9y
Zy9wcm9qZWN0L3B5dGVzdC1ydW5uZXIvPmBfIHBsdWdpbi4KLQotQWRkIHRoaXMgdG8gYGBzZXR1
cC5weWBgIGZpbGU6Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQotICAgIGZyb20gc2V0dXB0
b29scyBpbXBvcnQgc2V0dXAKLQotICAgIHNldHVwKAotICAgICAgICAjIC4uLiwKLSAgICAgICAg
c2V0dXBfcmVxdWlyZXM9WyJweXRlc3QtcnVubmVyIiwgLi4uXSwKLSAgICAgICAgdGVzdHNfcmVx
dWlyZT1bInB5dGVzdCIsIC4uLl0sCi0gICAgICAgICMgLi4uLAotICAgICkKLQotCi1BbmQgY3Jl
YXRlIGFuIGFsaWFzIGludG8gYGBzZXR1cC5jZmdgYCBmaWxlOgotCi0KLS4uIGNvZGUtYmxvY2s6
OiBpbmkKLQotICAgIFthbGlhc2VzXQotICAgIHRlc3Q9cHl0ZXN0Ci0KLUlmIHlvdSBub3cgdHlw
ZTo6Ci0KLSAgICBweXRob24gc2V0dXAucHkgdGVzdAotCi10aGlzIHdpbGwgZXhlY3V0ZSB5b3Vy
IHRlc3RzIHVzaW5nIGBgcHl0ZXN0LXJ1bm5lcmBgLiBBcyB0aGlzIGlzIGEKLXN0YW5kYWxvbmUg
dmVyc2lvbiBvZiBgYHB5dGVzdGBgIG5vIHByaW9yIGluc3RhbGxhdGlvbiB3aGF0c29ldmVyIGlz
Ci1yZXF1aXJlZCBmb3IgY2FsbGluZyB0aGUgdGVzdCBjb21tYW5kLiBZb3UgY2FuIGFsc28gcGFz
cyBhZGRpdGlvbmFsCi1hcmd1bWVudHMgdG8gcHl0ZXN0IHN1Y2ggYXMgeW91ciB0ZXN0IGRpcmVj
dG9yeSBvciBvdGhlcgotb3B0aW9ucyB1c2luZyBgYC0tYWRkb3B0c2BgLgotCi1Zb3UgY2FuIGFs
c28gc3BlY2lmeSBvdGhlciBweXRlc3QtaW5pIG9wdGlvbnMgaW4geW91ciBgYHNldHVwLmNmZ2Bg
IGZpbGUKLWJ5IHB1dHRpbmcgdGhlbSBpbnRvIGEgYGBbdG9vbDpweXRlc3RdYGAgc2VjdGlvbjoK
LQotLi4gY29kZS1ibG9jazo6IGluaQotCi0gICAgW3Rvb2w6cHl0ZXN0XQotICAgIGFkZG9wdHMg
PSAtLXZlcmJvc2UKLSAgICBweXRob25fZmlsZXMgPSB0ZXN0aW5nLyovKi5weQotCi0KLU1hbnVh
bCBJbnRlZ3JhdGlvbgotXl5eXl5eXl5eXl5eXl5eXl5eCi0KLUlmIGZvciBzb21lIHJlYXNvbiB5
b3UgZG9uJ3Qgd2FudC9jYW4ndCB1c2UgYGBweXRlc3QtcnVubmVyYGAsIHlvdSBjYW4gd3JpdGUK
LXlvdXIgb3duIHNldHVwdG9vbHMgVGVzdCBjb21tYW5kIGZvciBpbnZva2luZyBweXRlc3QuCi0K
LS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQotICAgIGltcG9ydCBzeXMKLQotICAgIGZyb20gc2V0
dXB0b29scy5jb21tYW5kLnRlc3QgaW1wb3J0IHRlc3QgYXMgVGVzdENvbW1hbmQKLQotCi0gICAg
Y2xhc3MgUHlUZXN0KFRlc3RDb21tYW5kKToKLSAgICAgICAgdXNlcl9vcHRpb25zID0gWygicHl0
ZXN0LWFyZ3M9IiwgImEiLCAiQXJndW1lbnRzIHRvIHBhc3MgdG8gcHl0ZXN0IildCi0KLSAgICAg
ICAgZGVmIGluaXRpYWxpemVfb3B0aW9ucyhzZWxmKToKLSAgICAgICAgICAgIFRlc3RDb21tYW5k
LmluaXRpYWxpemVfb3B0aW9ucyhzZWxmKQotICAgICAgICAgICAgc2VsZi5weXRlc3RfYXJncyA9
ICIiCi0KLSAgICAgICAgZGVmIHJ1bl90ZXN0cyhzZWxmKToKLSAgICAgICAgICAgIGltcG9ydCBz
aGxleAotCi0gICAgICAgICAgICAjIGltcG9ydCBoZXJlLCBjYXVzZSBvdXRzaWRlIHRoZSBlZ2dz
IGFyZW4ndCBsb2FkZWQKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAg
ZXJybm8gPSBweXRlc3QubWFpbihzaGxleC5zcGxpdChzZWxmLnB5dGVzdF9hcmdzKSkKLSAgICAg
ICAgICAgIHN5cy5leGl0KGVycm5vKQotCi0KLSAgICBzZXR1cCgKLSAgICAgICAgIyAuLi4sCi0g
ICAgICAgIHRlc3RzX3JlcXVpcmU9WyJweXRlc3QiXSwKLSAgICAgICAgY21kY2xhc3M9eyJ0ZXN0
IjogUHlUZXN0fSwKLSAgICApCi0KLU5vdyBpZiB5b3UgcnVuOjoKLQotICAgIHB5dGhvbiBzZXR1
cC5weSB0ZXN0Ci0KLXRoaXMgd2lsbCBkb3dubG9hZCBgYHB5dGVzdGBgIGlmIG5lZWRlZCBhbmQg
dGhlbiBydW4geW91ciB0ZXN0cwotYXMgeW91IHdvdWxkIGV4cGVjdCBpdCB0by4gWW91IGNhbiBw
YXNzIGEgc2luZ2xlIHN0cmluZyBvZiBhcmd1bWVudHMKLXVzaW5nIHRoZSBgYC0tcHl0ZXN0LWFy
Z3NgYCBvciBgYC1hYGAgY29tbWFuZC1saW5lIG9wdGlvbi4gRm9yIGV4YW1wbGU6OgotCi0gICAg
cHl0aG9uIHNldHVwLnB5IHRlc3QgLWEgIi0tZHVyYXRpb25zPTUiCi0KLWlzIGVxdWl2YWxlbnQg
dG8gcnVubmluZyBgYHB5dGVzdCAtLWR1cmF0aW9ucz01YGAuCi0KLQotLi4gaW5jbHVkZTo6IGxp
bmtzLmluYworLi4gX2B2ZW52YDogaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3Zl
bnYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2hpc3RvcmljYWwtbm90ZXMu
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2hpc3RvcmljYWwtbm90ZXMucnN0CmluZGV4IDAyOGNl
ZmY5YjE3NC4uNGY4NzIyYzFjMTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaGlz
dG9yaWNhbC1ub3Rlcy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2hpc3RvcmljYWwtbm90
ZXMucnN0CkBAIC00LDEwICs0LDEyMSBAQCBIaXN0b3JpY2FsIE5vdGVzCiBUaGlzIHBhZ2UgbGlz
dHMgZmVhdHVyZXMgb3IgYmVoYXZpb3IgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBweXRlc3Qg
d2hpY2ggaGF2ZSBjaGFuZ2VkIG92ZXIgdGhlIHllYXJzLiBUaGV5IGFyZQoga2VwdCBoZXJlIGFz
IGEgaGlzdG9yaWNhbCBub3RlIHNvIHVzZXJzIGxvb2tpbmcgYXQgb2xkIGNvZGUgY2FuIGZpbmQg
ZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIHRoZW0uCiAKKworLi4gX21hcmtlci1yZXZhbXA6CisK
K01hcmtlciByZXZhbXAgYW5kIGl0ZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKK3B5dGVzdCdzIG1hcmtlciBpbXBsZW1lbnRh
dGlvbiB0cmFkaXRpb25hbGx5IHdvcmtlZCBieSBzaW1wbHkgdXBkYXRpbmcgdGhlIGBgX19kaWN0
X19gYCBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIHRvIGN1bXVsYXRpdmVseSBhZGQgbWFya2Vycy4g
QXMgYSByZXN1bHQsIG1hcmtlcnMgd291bGQgdW5pbnRlbnRpb25hbGx5IGJlIHBhc3NlZCBhbG9u
ZyBjbGFzcyBoaWVyYXJjaGllcyBpbiBzdXJwcmlzaW5nIHdheXMuIEZ1cnRoZXIsIHRoZSBBUEkg
Zm9yIHJldHJpZXZpbmcgdGhlbSB3YXMgaW5jb25zaXN0ZW50LCBhcyBtYXJrZXJzIGZyb20gcGFy
YW1ldGVyaXphdGlvbiB3b3VsZCBiZSBzdG9yZWQgZGlmZmVyZW50bHkgdGhhbiBtYXJrZXJzIGFw
cGxpZWQgdXNpbmcgdGhlIGBgQHB5dGVzdC5tYXJrYGAgZGVjb3JhdG9yIGFuZCBtYXJrZXJzIGFk
ZGVkIHZpYSBgYG5vZGUuYWRkX21hcmtlcmBgLgorCitUaGlzIHN0YXRlIG9mIHRoaW5ncyBtYWRl
IGl0IHRlY2huaWNhbGx5IG5leHQgdG8gaW1wb3NzaWJsZSB0byB1c2UgZGF0YSBmcm9tIG1hcmtl
cnMgY29ycmVjdGx5IHdpdGhvdXQgaGF2aW5nIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBp
bnRlcm5hbHMsIGxlYWRpbmcgdG8gc3VidGxlIGFuZCBoYXJkIHRvIHVuZGVyc3RhbmQgYnVncyBp
biBtb3JlIGFkdmFuY2VkIHVzYWdlcy4KKworRGVwZW5kaW5nIG9uIGhvdyBhIG1hcmtlciBnb3Qg
ZGVjbGFyZWQvY2hhbmdlZCBvbmUgd291bGQgZ2V0IGVpdGhlciBhIGBgTWFya2VySW5mb2BgIHdo
aWNoIG1pZ2h0IGNvbnRhaW4gbWFya2VycyBmcm9tIHNpYmxpbmcgY2xhc3NlcywKK2BgTWFya0Rl
Y29yYXRvcnNgYCB3aGVuIG1hcmtzIGNhbWUgZnJvbSBwYXJhbWV0ZXJpemF0aW9uIG9yIGZyb20g
YSBgYG5vZGUuYWRkX21hcmtlcmBgIGNhbGwsIGRpc2NhcmRpbmcgcHJpb3IgbWFya3MuIEFsc28g
YGBNYXJrZXJJbmZvYGAgYWN0cyBsaWtlIGEgc2luZ2xlIG1hcmssIHdoZW4gaXQgaW4gZmFjdCBy
ZXByZXNlbnRzIGEgbWVyZ2VkIHZpZXcgb24gbXVsdGlwbGUgbWFya3Mgd2l0aCB0aGUgc2FtZSBu
YW1lLgorCitPbiB0b3Agb2YgdGhhdCBtYXJrZXJzIHdlcmUgbm90IGFjY2Vzc2libGUgaW4gdGhl
IHNhbWUgd2F5IGZvciBtb2R1bGVzLCBjbGFzc2VzLCBhbmQgZnVuY3Rpb25zL21ldGhvZHMuCitJ
biBmYWN0LCBtYXJrZXJzIHdlcmUgb25seSBhY2Nlc3NpYmxlIGluIGZ1bmN0aW9ucywgZXZlbiBp
ZiB0aGV5IHdlcmUgZGVjbGFyZWQgb24gY2xhc3Nlcy9tb2R1bGVzLgorCitBIG5ldyBBUEkgdG8g
YWNjZXNzIG1hcmtlcnMgaGFzIGJlZW4gaW50cm9kdWNlZCBpbiBweXRlc3QgMy42IGluIG9yZGVy
IHRvIHNvbHZlIHRoZSBwcm9ibGVtcyB3aXRoCit0aGUgaW5pdGlhbCBkZXNpZ24sIHByb3ZpZGlu
ZyB0aGUgOmZ1bmM6YF9weXRlc3Qubm9kZXMuTm9kZS5pdGVyX21hcmtlcnNgIG1ldGhvZCB0byBp
dGVyYXRlIG92ZXIKK21hcmtlcnMgaW4gYSBjb25zaXN0ZW50IG1hbm5lciBhbmQgcmV3b3JraW5n
IHRoZSBpbnRlcm5hbHMsIHdoaWNoIHNvbHZlZCBhIGdyZWF0IGRlYWwgb2YgcHJvYmxlbXMKK3dp
dGggdGhlIGluaXRpYWwgZGVzaWduLgorCisKKy4uIF91cGRhdGUgbWFya2VyIGNvZGU6CisKK1Vw
ZGF0aW5nIGNvZGUKK35+fn5+fn5+fn5+fn4KKworVGhlIG9sZCBgYE5vZGUuZ2V0X21hcmtlcihu
YW1lKWBgIGZ1bmN0aW9uIGlzIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBiZWNhdXNlIGl0IHJldHVy
bnMgYW4gaW50ZXJuYWwgYGBNYXJrZXJJbmZvYGAgb2JqZWN0Cit3aGljaCBjb250YWlucyB0aGUg
bWVyZ2VkIG5hbWUsIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJnc2BgIG9mIGFsbCB0aGUgbWFya2Vy
cyB3aGljaCBhcHBseSB0byB0aGF0IG5vZGUuCisKK0luIGdlbmVyYWwgdGhlcmUgYXJlIHR3byBz
Y2VuYXJpb3Mgb24gaG93IG1hcmtlcnMgc2hvdWxkIGJlIGhhbmRsZWQ6CisKKzEuIE1hcmtzIG92
ZXJ3cml0ZSBlYWNoIG90aGVyLiBPcmRlciBtYXR0ZXJzIGJ1dCB5b3Ugb25seSB3YW50IHRvIHRo
aW5rIG9mIHlvdXIgbWFyayBhcyBhIHNpbmdsZSBpdGVtLiBFLmcuCitgYGxvZ19sZXZlbCgnaW5m
bycpYGAgYXQgYSBtb2R1bGUgbGV2ZWwgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGBgbG9nX2xldmVs
KCdkZWJ1ZycpYGAgZm9yIGEgc3BlY2lmaWMgdGVzdC4KKworICAgIEluIHRoaXMgY2FzZSwgdXNl
IGBgTm9kZS5nZXRfY2xvc2VzdF9tYXJrZXIobmFtZSlgYDoKKworICAgIC4uIGNvZGUtYmxvY2s6
OiBweXRob24KKworICAgICAgICAjIHJlcGxhY2UgdGhpczoKKyAgICAgICAgbWFya2VyID0gaXRl
bS5nZXRfbWFya2VyKCJsb2dfbGV2ZWwiKQorICAgICAgICBpZiBtYXJrZXI6CisgICAgICAgICAg
ICBsZXZlbCA9IG1hcmtlci5hcmdzWzBdCisKKyAgICAgICAgIyBieSB0aGlzOgorICAgICAgICBt
YXJrZXIgPSBpdGVtLmdldF9jbG9zZXN0X21hcmtlcigibG9nX2xldmVsIikKKyAgICAgICAgaWYg
bWFya2VyOgorICAgICAgICAgICAgbGV2ZWwgPSBtYXJrZXIuYXJnc1swXQorCisyLiBNYXJrcyBj
b21wb3NlIGluIGFuIGFkZGl0aXZlIG1hbm5lci4gRS5nLiBgYHNraXBpZihjb25kaXRpb24pYGAg
bWFya3MgbWVhbiB5b3UganVzdCB3YW50IHRvIGV2YWx1YXRlIGFsbCBvZiB0aGVtLAorb3JkZXIg
ZG9lc24ndCBldmVuIG1hdHRlci4gWW91IHByb2JhYmx5IHdhbnQgdG8gdGhpbmsgb2YgeW91ciBt
YXJrcyBhcyBhIHNldCBoZXJlLgorCisgICBJbiB0aGlzIGNhc2UgaXRlcmF0ZSBvdmVyIGVhY2gg
bWFyayBhbmQgaGFuZGxlIHRoZWlyIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJnc2BgIGluZGl2aWR1
YWxseS4KKworICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgICAgICMgcmVwbGFjZSB0
aGlzCisgICAgICAgIHNraXBpZiA9IGl0ZW0uZ2V0X21hcmtlcigic2tpcGlmIikKKyAgICAgICAg
aWYgc2tpcGlmOgorICAgICAgICAgICAgZm9yIGNvbmRpdGlvbiBpbiBza2lwaWYuYXJnczoKKyAg
ICAgICAgICAgICAgICAjIGV2YWwgY29uZGl0aW9uCisgICAgICAgICAgICAgICAgLi4uCisKKyAg
ICAgICAgIyBieSB0aGlzOgorICAgICAgICBmb3Igc2tpcGlmIGluIGl0ZW0uaXRlcl9tYXJrZXJz
KCJza2lwaWYiKToKKyAgICAgICAgICAgIGNvbmRpdGlvbiA9IHNraXBpZi5hcmdzWzBdCisgICAg
ICAgICAgICAjIGV2YWwgY29uZGl0aW9uCisKKworSWYgeW91IGFyZSB1bnN1cmUgb3IgaGF2ZSBh
bnkgcXVlc3Rpb25zLCBwbGVhc2UgY29uc2lkZXIgb3BlbmluZworYGFuIGlzc3VlIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzPmBfLgorCitSZWxhdGVkIGlzc3Vl
cworfn5+fn5+fn5+fn5+fn4KKworSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgaXNz
dWVzIGZpeGVkIGJ5IHRoZSBuZXcgaW1wbGVtZW50YXRpb246CisKKyogTWFya3MgZG9uJ3QgcGlj
ayB1cCBuZXN0ZWQgY2xhc3NlcyAoYCMxOTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2
L3B5dGVzdC9pc3N1ZXMvMTk5PmBfKS4KKworKiBNYXJrZXJzIHN0YWluIG9uIGFsbCByZWxhdGVk
IGNsYXNzZXMgKGAjNTY4IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzLzU2OD5gXykuCisKKyogQ29tYmluaW5nIG1hcmtzIC0gYXJncyBhbmQga3dhcmdzIGNhbGN1
bGF0aW9uIChgIzI4OTcgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjg5Nz5gXykuCisKKyogYGByZXF1ZXN0Lm5vZGUuZ2V0X21hcmtlcignbmFtZScpYGAgcmV0
dXJucyBgYE5vbmVgYCBmb3IgbWFya2VycyBhcHBsaWVkIGluIGNsYXNzZXMgKGAjOTAyIDxodHRw
czovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzkwMj5gXykuCisKKyogTWFy
a3MgYXBwbGllZCBpbiBwYXJhbWV0cml6ZSBhcmUgc3RvcmVkIGFzIG1hcmtkZWNvcmF0b3IgKGAj
MjQwMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDAwPmBf
KS4KKworKiBGaXggbWFya2VyIGludGVyYWN0aW9uIGluIGEgYmFja3dhcmQgaW5jb21wYXRpYmxl
IHdheSAoYCMxNjcwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVz
LzE2NzA+YF8pLgorCisqIFJlZmFjdG9yIG1hcmtzIHRvIGdldCByaWQgb2YgdGhlIGN1cnJlbnQg
Im1hcmtzIHRyYW5zZmVyIiBtZWNoYW5pc20gKGAjMjM2MyA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMzYzPmBfKS4KKworKiBJbnRyb2R1Y2UgRnVuY3Rpb25E
ZWZpbml0aW9uIG5vZGUsIHVzZSBpdCBpbiBnZW5lcmF0ZV90ZXN0cyAoYCMyNTIyIDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI1MjI+YF8pLgorCisqIFJlbW92
ZSBuYW1lZCBtYXJrZXIgYXR0cmlidXRlcyBhbmQgY29sbGVjdCBtYXJrZXJzIGluIGl0ZW1zIChg
Izg5MSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy84OTE+YF8p
LgorCisqIHNraXBpZiBtYXJrIGZyb20gcGFyYW1ldHJpemUgaGlkZXMgbW9kdWxlIGxldmVsIHNr
aXBpZiBtYXJrIChgIzE1NDAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvMTU0MD5gXykuCisKKyogc2tpcGlmICsgcGFyYW1ldHJpemUgbm90IHNraXBwaW5nIHRl
c3RzIChgIzEyOTYgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMv
MTI5Nj5gXykuCisKKyogTWFya2VyIHRyYW5zZmVyIGluY29tcGF0aWJsZSB3aXRoIGluaGVyaXRh
bmNlIChgIzUzNSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81
MzU+YF8pLgorCitNb3JlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBgb3JpZ2luYWwgUFIg
PGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzMzMTc+YF8uCisKKy4u
IG5vdGU6OgorCisgICAgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZSBvZiBweXRlc3Qgd2Ugd2ls
bCBpbnRyb2R1Y2UgY2xhc3MgYmFzZWQgbWFya2VycywKKyAgICBhdCB3aGljaCBwb2ludCBtYXJr
ZXJzIHdpbGwgbm8gbG9uZ2VyIGJlIGxpbWl0ZWQgdG8gaW5zdGFuY2VzIG9mIDpweTpjbGFzczpg
fl9weXRlc3QubWFyay5NYXJrYC4KKworCiBjYWNoZSBwbHVnaW4gaW50ZWdyYXRlZCBpbnRvIHRo
ZSBjb3JlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIHZlcnNp
b25hZGRlZDo6IDIuOAorCiAKIFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSA6cmVmOmBjb3JlIGNh
Y2hlIDxjYWNoZT5gIHBsdWdpbiB3YXMgcHJldmlvdXNseSBkaXN0cmlidXRlZAogYXMgYSB0aGly
ZCBwYXJ0eSBwbHVnaW4gbmFtZWQgYGBweXRlc3QtY2FjaGVgYC4gIFRoZSBjb3JlIHBsdWdpbgpA
QCAtMTgsNyArMTI5LDcgQEAgY2FuIG9ubHkgc3RvcmUvcmVjZWl2ZSBkYXRhIGJldHdlZW4gdGVz
dCBydW5zIHRoYXQgaXMganNvbi1zZXJpYWxpemFibGUuCiBmdW5jYXJncyBhbmQgYGBweXRlc3Rf
ZnVuY2FyZ19fYGAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJz
aW9uY2hhbmdlZDo6IDIuMworCiAKIEluIHZlcnNpb25zIHByaW9yIHRvIDIuMyB0aGVyZSB3YXMg
bm8gYGBAcHl0ZXN0LmZpeHR1cmVgYCBtYXJrZXIKIGFuZCB5b3UgaGFkIHRvIHVzZSBhIG1hZ2lj
IGBgcHl0ZXN0X2Z1bmNhcmdfX05BTUVgYCBwcmVmaXgKQEAgLTMwLDcgKzE0MSw3IEBAIGZ1bmN0
aW9ucy4KIGBgQHB5dGVzdC55aWVsZF9maXh0dXJlYGAgZGVjb3JhdG9yCiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMTAKKwogCiBQ
cmlvciB0byB2ZXJzaW9uIDIuMTAsIGluIG9yZGVyIHRvIHVzZSBhIGBgeWllbGRgYCBzdGF0ZW1l
bnQgdG8gZXhlY3V0ZSB0ZWFyZG93biBjb2RlIG9uZQogaGFkIHRvIG1hcmsgYSBmaXh0dXJlIHVz
aW5nIHRoZSBgYHlpZWxkX2ZpeHR1cmVgYCBtYXJrZXIuIEZyb20gMi4xMCBvbndhcmQsIG5vcm1h
bApAQCAtNDEsNyArMTUyLDcgQEAgYW5kIGNvbnNpZGVyZWQgZGVwcmVjYXRlZC4KIGBgW3B5dGVz
dF1gYCBoZWFkZXIgaW4gYGBzZXR1cC5jZmdgYAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4wCisKIAogUHJpb3IgdG8gMy4wLCB0
aGUgc3VwcG9ydGVkIHNlY3Rpb24gbmFtZSB3YXMgYGBbcHl0ZXN0XWBgLiBEdWUgdG8gaG93CiB0
aGlzIG1heSBjb2xsaWRlIHdpdGggc29tZSBkaXN0dXRpbHMgY29tbWFuZHMsIHRoZSByZWNvbW1l
bmRlZApAQCAtNTQsMTcgKzE2NSwxOSBAQCBuYW1lIGlzIGBgW3B5dGVzdF1gYC4KIEFwcGx5aW5n
IG1hcmtzIHRvIGBgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAgcGFyYW1ldGVycwogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4u
IHZlcnNpb25jaGFuZ2VkOjogMy4xCisKIAogUHJpb3IgdG8gdmVyc2lvbiAzLjEgdGhlIHN1cHBv
cnRlZCBtZWNoYW5pc20gZm9yIG1hcmtpbmcgdmFsdWVzCi11c2VkIHRoZSBzeW50YXg6OgordXNl
ZCB0aGUgc3ludGF4OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBpbXBvcnQgcHl0
ZXN0Ci0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwg
WwotICAgICAgICAoIjMrNSIsIDgpLAotICAgICAgICAoIjIrNCIsIDYpLAotICAgICAgICBweXRl
c3QubWFyay54ZmFpbCgoIjYqOSIsIDQyKSwpLAotICAgIF0pCisKKworICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInRlc3RfaW5wdXQsZXhwZWN0ZWQiLCBbKCIzKzUiLCA4
KSwgKCIyKzQiLCA2KSwgcHl0ZXN0Lm1hcmsueGZhaWwoKCI2KjkiLCA0MikpXQorICAgICkKICAg
ICBkZWYgdGVzdF9ldmFsKHRlc3RfaW5wdXQsIGV4cGVjdGVkKToKICAgICAgICAgYXNzZXJ0IGV2
YWwodGVzdF9pbnB1dCkgPT0gZXhwZWN0ZWQKIApAQCAtNzgsNyArMTkxLDcgQEAgVGhlIG9sZCBz
eW50YXggaXMgcGxhbm5lZCB0byBiZSByZW1vdmVkIGluIHB5dGVzdC00LjAuCiBgYEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZWBgIGFyZ3VtZW50IG5hbWVzIGFzIGEgdHVwbGUKIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9u
Y2hhbmdlZDo6IDIuNAorCiAKIEluIHZlcnNpb25zIHByaW9yIHRvIDIuNCBvbmUgbmVlZGVkIHRv
IHNwZWNpZnkgdGhlIGFyZ3VtZW50CiBuYW1lcyBhcyBhIHR1cGxlLiAgVGhpcyByZW1haW5zIHZh
bGlkIGJ1dCB0aGUgc2ltcGxlciBgYCJuYW1lMSxuYW1lMiwuLi4iYGAKQEAgLTg5LDcgKzIwMiw3
IEBAIGl0J3MgZWFzaWVyIHRvIHdyaXRlIGFuZCBwcm9kdWNlcyBsZXNzIGxpbmUgbm9pc2UuCiBz
ZXR1cDogaXMgbm93IGFuICJhdXRvdXNlIGZpeHR1cmUiCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMi4zCisKIAogRHVyaW5nIGRldmVs
b3BtZW50IHByaW9yIHRvIHRoZSBweXRlc3QtMi4zIHJlbGVhc2UgdGhlIG5hbWUKIGBgcHl0ZXN0
LnNldHVwYGAgd2FzIHVzZWQgYnV0IGJlZm9yZSB0aGUgcmVsZWFzZSBpdCB3YXMgcmVuYW1lZApA
QCAtMTAyLDEyICsyMTUsMTYgQEAgbmFtZWx5IDpyZWY6YGF1dG91c2UgZml4dHVyZXNgCiBDb25k
aXRpb25zIGFzIHN0cmluZ3MgaW5zdGVhZCBvZiBib29sZWFucwogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjQKKwogCiBQ
cmlvciB0byBweXRlc3QtMi40IHRoZSBvbmx5IHdheSB0byBzcGVjaWZ5IHNraXBpZi94ZmFpbCBj
b25kaXRpb25zIHdhcwotdG8gdXNlIHN0cmluZ3M6OgordG8gdXNlIHN0cmluZ3M6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgIGltcG9ydCBzeXMKKworCiAgICAgQHB5dGVzdC5tYXJr
LnNraXBpZigic3lzLnZlcnNpb25faW5mbyA+PSAoMywzKSIpCiAgICAgZGVmIHRlc3RfZnVuY3Rp
b24oKToKICAgICAgICAgLi4uCkBAIC0xMzksMTcgKzI1NiwyMCBAQCBkaWN0aW9uYXJ5IHdoaWNo
IGlzIGNvbnN0cnVjdGVkIGFzIGZvbGxvd3M6CiAgIGV4cHJlc3Npb24gaXMgYXBwbGllZC4KIAog
VGhlIHB5dGVzdCBgYGNvbmZpZ2BgIG9iamVjdCBhbGxvd3MgeW91IHRvIHNraXAgYmFzZWQgb24g
YSB0ZXN0Ci1jb25maWd1cmF0aW9uIHZhbHVlIHdoaWNoIHlvdSBtaWdodCBoYXZlIGFkZGVkOjoK
K2NvbmZpZ3VyYXRpb24gdmFsdWUgd2hpY2ggeW91IG1pZ2h0IGhhdmUgYWRkZWQ6CisKKy4uIGNv
ZGUtYmxvY2s6OiBweXRob24KIAogICAgIEBweXRlc3QubWFyay5za2lwaWYoIm5vdCBjb25maWcu
Z2V0dmFsdWUoJ2RiJykiKQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKC4uLik6CisgICAgZGVmIHRl
c3RfZnVuY3Rpb24oKToKICAgICAgICAgLi4uCiAKLVRoZSBlcXVpdmFsZW50IHdpdGggImJvb2xl
YW4gY29uZGl0aW9ucyIgaXM6OgorVGhlIGVxdWl2YWxlbnQgd2l0aCAiYm9vbGVhbiBjb25kaXRp
b25zIiBpczoKIAotICAgIEBweXRlc3QubWFyay5za2lwaWYobm90IHB5dGVzdC5jb25maWcuZ2V0
dmFsdWUoImRiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFzb249Ii0tZGIgd2FzIG5v
dCBzcGVjaWZpZWQiKQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKC4uLik6CisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKG5vdCBweXRlc3QuY29uZmlnLmdl
dHZhbHVlKCJkYiIpLCByZWFzb249Ii0tZGIgd2FzIG5vdCBzcGVjaWZpZWQiKQorICAgIGRlZiB0
ZXN0X2Z1bmN0aW9uKCk6CiAgICAgICAgIHBhc3MKIAogLi4gbm90ZTo6CkBAIC0xNjIsMTYgKzI4
MiwzMCBAQCBUaGUgZXF1aXZhbGVudCB3aXRoICJib29sZWFuIGNvbmRpdGlvbnMiIGlzOjoKIGBg
cHl0ZXN0LnNldF90cmFjZSgpYGAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lv
bmNoYW5nZWQ6OiAyLjQKIAotUHJldmlvdXMgdG8gdmVyc2lvbiAyLjQgdG8gc2V0IGEgYnJlYWsg
cG9pbnQgaW4gY29kZSBvbmUgbmVlZGVkIHRvIHVzZSBgYHB5dGVzdC5zZXRfdHJhY2UoKWBgOjoK
KworUHJldmlvdXMgdG8gdmVyc2lvbiAyLjQgdG8gc2V0IGEgYnJlYWsgcG9pbnQgaW4gY29kZSBv
bmUgbmVlZGVkIHRvIHVzZSBgYHB5dGVzdC5zZXRfdHJhY2UoKWBgOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0aG9uCiAKICAgICBpbXBvcnQgcHl0ZXN0CisKKwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
KCk6CiAgICAgICAgIC4uLgotICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkgICAgIyBpbnZva2Ug
UERCIGRlYnVnZ2VyIGFuZCB0cmFjaW5nCisgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKSAgIyBp
bnZva2UgUERCIGRlYnVnZ2VyIGFuZCB0cmFjaW5nCiAKIAogVGhpcyBpcyBubyBsb25nZXIgbmVl
ZGVkIGFuZCBvbmUgY2FuIHVzZSB0aGUgbmF0aXZlIGBgaW1wb3J0IHBkYjtwZGIuc2V0X3RyYWNl
KClgYCBjYWxsIGRpcmVjdGx5LgogCiBGb3IgbW9yZSBkZXRhaWxzIHNlZSA6cmVmOmBicmVha3Bv
aW50c2AuCisKKyJjb21wYXQiIHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisK
K0FjY2VzcyBvZiBgYE1vZHVsZWBgLCBgYEZ1bmN0aW9uYGAsIGBgQ2xhc3NgYCwgYGBJbnN0YW5j
ZWBgLCBgYEZpbGVgYCBhbmQgYGBJdGVtYGAgdGhyb3VnaCBgYE5vZGVgYCBpbnN0YW5jZXMgaGF2
ZSBsb25nCitiZWVuIGRvY3VtZW50ZWQgYXMgZGVwcmVjYXRlZCwgYnV0IHN0YXJ0ZWQgdG8gZW1p
dCB3YXJuaW5ncyBmcm9tIHB5dGVzdCBgYDMuOWBgIGFuZCBvbndhcmQuCisKK1VzZXJzIHNob3Vs
ZCBqdXN0IGBgaW1wb3J0IHB5dGVzdGBgIGFuZCBhY2Nlc3MgdGhvc2Ugb2JqZWN0cyB1c2luZyB0
aGUgYGBweXRlc3RgYCBtb2R1bGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1n
L2Zhdmljb24ucG5nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9mYXZpY29uLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41Yzg4MjRkNjdkMzRlMzFiYWE4NjIzYTNkMDRlZjIxZWUyMzQwNDFlCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAxMzM0CnpjbVo4ZmRvPGY7ODI7MzQ3LXhwTXF8e0NsTTEtRyZzaD5MdXh0
ZnR+ZGEtSUh6YSg7RDhXYjY3KVVpZF8mYTc2fAp6JCtvMChuTm4tMVkzSV5YbSRQbS1vYz5kLSk3
RTVkKjsmdF8+Y35Ffj9zQ3JhelRmU0FwNkAlKWAmQV8rQ2ZIaUwKelNweHVVU3hrQnw5QzB1X1VO
ZVErRmo2LVMyUXlJJkY5dnxsOGtfYXc9NVh6cSFBI30+UTBONmZYKm1GRWFJNXJwCnowQ0V3P05D
eUN8MmYjVnxlREF5QTBQRzEjO18/fF8hZjFwPTBRQ0Zxbl5CUiNYVTZxOEZnb2NBU1ZxdXpBNiVI
PAp6JW47YGN3PHBQUGUrTl4oNmFBIV9MSzM5eHBvbnlYaD1VPiFnSmZKbktgb2BTLTl2TEBmQXdg
I2IpbEB7YU5GZ2AKend5cD5XZU9xakNRQ2gxcT9yTDg2bUFuV3w3R0tSez5tekJwJFJLQFdQKDNy
Yzxqe0whaUJ0a1pFWTF7KkM2WWB5CnojWUEhcGxWYyhvQ1hvcHhhKjskVGxFXlRyOUx0bzhHRyZ7
IXlNV2EpNWhmRmZWM3VxT05DaVQ8SyZUTDZhIyNibwp6MDxsNk1oNip4QjZpNXw5c1JHK2xAVUhz
TnQjJH1rSkxwPF9sVUF4UHVUMVVlNHVrMElMMGRZYk4+b1FYYkVBNm0KeihRVlhhQylLaiFUZnpj
YiFqYX4xcSV8enlKUj0tQHtSbEtaKm0xMWtrRm5gcHlQJDdWeklUUnZXe1k8MVFqdW5oCnplMTBh
blo5Qkd8Mm1FbGlOR2BqRUZLJHtyPHZUdjt5Vz14LSpsV2soP2EzPntWR0ZodVc/dCQ0eUVRNWps
cDM0eAp6b3o0NV9jMVZHbnw3JEJ+Y3MlbCgtJWc4bmQlZ1cwczFNelBOMDRZVjhyS1klQm02WW8l
SCtoOXQ/I3B5JXhZRngKemd5b2c+dDhWKDJEfVAzXlM0dkR4VG5UdTRKM09BP1ppXiR9LSp9VU4k
MiolTypRbkpSN31lRWtqWWg0bTtUeFclCno+OXBEPW9uRVdgTSpwbz10SjVgVWJzdGJVRUgyKVMk
enIxfTJpUHA7ZW1zfU88b2NVX3kxRXFxKjVjQ2g0d3Q2cQp6T05PeGNqcGUxYUxRfUtQSVdLeCRv
N2JXXnIla3pLJSlnMnd0O30yM3FaKmY9RVREYVJ7VFRFKGRxKW0mVzU5eykKemE8VFBOaVFQTC03
dTw1O3Q0JlVENjZrJkckQHdMP3V2RF5tNDlmQEIpfn08flV2KkZCO0JoRjY5PmUjIWxXfjlrCnot
WS1MNGpjMDMpTU1vendRfFd2el9oQFdSPHJtWC01PzZ+dXAjfHBWMXFgQ2wkPzBIbHR9VHkzcH4m
NlNCMGZxcAp6amtDYUtJSGFVRiZgI1FMSTJgZ3hEYkJPd04+X2UlTjUxa3pfUHJ7Yjk7QiFEVEc2
UmZnI3xCSFM2QTB3U2VqV18KelNlUkZxcFEpJWdsWWspZmN0Km09JkVaPyMxY0RkdzsmKnpUUDko
c0QzbEFSJFFYZWB5P3Nidn1fPihBUEB9PStGCnpUSDJlTmVgdzdUJVE2KWJwOyRVK1hYZFZJezMt
OUwhU0wrdl5gaVcmVkA1bUFkZ1F+VCtxXnhheWtZK2s7bUNCZQp6P05yQVlQanRAMmpQX09NY25x
LTA9Xzx8WFQxWT9KNVNGI0VaZj9eI047JXZvU2lDRzhlP1B0TWg/VHV5MDYjKV4KenhefVIyN0Nm
NDFBTSl4aDl2YkV+eXEkSVQ2UF5NYCM/X0ImYyQkeGB5N3pmSWM9ZFoqMHo5N2A5bkN4OTAoflZh
Cno4TDNMYWFpdEs9JFB2TjtQIVRGWks+e2Y+Z2lvY1JmZ3h5NjVFLUdPMnR4Nm9lZmJ9UEpXQytL
M0xxZ2NnYzY4QQplQFIzazdfeThKPWtQI1hyJntUP2ZOQn1IR0JFM0J9ejNnd1U5d0NBTgoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9w
eXRlc3QxZmF2aS5pY28gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL3B5dGVzdDFmYXZpLmljbwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEzNGZlNWM5ZjdlNGEyNThiMGY0ZWQyY2Yy
ZWZiMDIxZGNmYmNiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAzNzQyCnpjbWVI
fmRxYDdKOUxMWXBpMm1xZF5xOCk2djF2fU5yMX5Tfm5vPz1vVG9mVHVrPk1ZRStgQ3UoUUFTU0V3
Mil9ZAp6NiREWFBUNU9SPFglN28yRD1TSjlxNmhRT0VVM3NMalJKY314OWBjVEUhfGEwNFhHfUNJ
S1Q3eWVlZHR3QUxwSiEKemg9X3lgTmZiZFRDN1NWcyMxY1pKKGgkQHxCdVBZdzE4czM9bEs+VDw8
QWsycEc3PColMUZqRCVRNkpVXnt6aW9zCnpyeGd3PnskWm5WciRFbUBhZEc9Rj19QX02blp2Mnw7
eE4lQ0tEWi0+JnklMnY9UGImNkZkXnMqNEFMa1JTS0E/eQp6az9gPHQ0RSVsdFRtVXk8UGFWVzwm
fjcyRVNLVjUyYDI3XjFMcDg1fURNNmhMKCllR2lfblFzNGhLZkFEOzdiMTEKejhhNmpnUXs9UUgh
ZnpUXyM8TFY8eFMkWF5lcCV+TFZfa2cxeSRENkZ6WU0tUnojRT5JRDN2M2s8QDhzPEh5MXpgCno/
MzVBRiVKcldMKDRtXjJmJTxST252cjtZVHB6fXVLOXQ8KHpsS2hLaVheNjkxSFQtMiYrYEBLNGlH
d29KUGZXQwp6VGQjKi1zdWY3IzJ4KD5YKFY/MDx8Ny1RYGc8U2xQZU05SmJqZnlwVmV2RWBaRWhC
cjhqfl91aDVCS15vTnNvV3IKekd6PFU1U0Q+QmUxTENUVnlMbiUlYUpIMFZwWkVhVWREYE5mRXk8
QkYqVjImKEd8eExnSk5QVX55cGJ6Yit6I2NNCnozQXdPbV9XWVprJGN6UyRMYCU4bGlPfkJCN1Jj
NVg/fXwqbVJJTEc4aXQ9KWVFflRiWXhnanJLb1UqbE1rI2J2fAp6NHJxQmF0MlE1cVBTPCY0Xk83
c3xOdmNZMWxJb09aVVVIUlFtM0N3PEFzbiU/T2N1Km55ZTZ9KSFwc0FeK2BfUDQKekU1ckVnTW5n
cHA0ci1mPiQxJXJlWE5ATnVqRz58ako4VDxrX1MhNkZ1ZnU5NmNVWC1ULTVBUGs3THlscUhpOTw1
Cnp7UT0lV1Y+UWRMcjNfPHJGXnEtQj5hd3RgOC0xbUF2Jm0mUXtsSTI2bUMkd0BZYnJyKHUwWDc7
Kl5TdVRifVBuUAp6Y3dpJmVRcTBOcFkrbylxUSM+YzQtVz9ec1Ngc2F6UTJTX31HSk81KyFVXmhn
cik3KUpfYWF8JStCWS1IeG51bSYKekVtYWEjUE9XQCMmUDc9ZG5WWn5gYlNxcXc3cFEmbWc9KCpD
cTFxPi1jQjx5IV5mbH05TWJEMFlLaEt2VXxMRVBKCnpsWlY2a1A+Yl4rSitwT3lQTSQ5MFZYZmtO
YjBxJURLSUdwUSg4PT5vO3E8R3Ffdig7KWJZSlNecD8xQ2BwJl8pMAp6PDYzYFdCSTt1VzIjYW5s
Plc0VkhDYD5GQkFlKTIjMCRpaSRLYWBmVmo8TVBGOXdofi1mWm5mITkqaF8yYGxzNXoKRTBUMW41
QU9IWFcKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzNmOTMwMmI3N2JlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL2ltZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcvY3JhbWVyMi5wbmcKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vaW1nL2ZyZWlidXJnMi5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL2dh
eW5vcjMucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9rZWxlc2hldi5wbmcKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vaW1nL3B1bGxyZXF1ZXN0LnBuZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcv
cHlsaWIucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9weXRlc3QxLnBuZwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9pbWcvcHl0ZXN0MWZhdmkuaWNvCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy90
aGV1bmkucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW5kZXgucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2luZGV4LnJzdAppbmRleCA2YTM4MmU1NzE3M2EuLmE1N2U5YmJhY2Vl
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2luZGV4LnJzdAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vaW5kZXgucnN0CkBAIC0xLDUgKzEsMTEgQEAKIDpvcnBoYW46CiAKKy4uIHNp
ZGViYXI6OiBOZXh0IE9wZW4gVHJhaW5pbmdzCisKKyAgIC0gYFByb2Zlc3Npb25hbCB0ZXN0aW5n
IHdpdGggUHl0aG9uIDxodHRwczovL3d3dy5weXRob24tYWNhZGVteS5jb20vY291cnNlcy9zcGVj
aWFsdG9waWNzL3B5dGhvbl9jb3Vyc2VfdGVzdGluZy5odG1sPmBfLCB2aWEgUHl0aG9uIEFjYWRl
bXksIEZlYnJ1YXJ5IDEtMyAyMDIxLCBMZWlwemlnIChHZXJtYW55KSBhbmQgcmVtb3RlLgorCisg
ICBBbHNvIHNlZSBgcHJldmlvdXMgdGFsa3MgYW5kIGJsb2dwb3N0cyA8dGFsa3MuaHRtbD5gXy4K
KwogLi4gX2ZlYXR1cmVzOgogCiBweXRlc3Q6IGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgcHJvZ3Jh
bXMKQEAgLTIyLDEyICsyOCwxNSBAQCBBbiBleGFtcGxlIG9mIGEgc2ltcGxlIHRlc3Q6CiAgICAg
ICAgIGFzc2VydCBpbmMoMykgPT0gNQogCiAKLVRvIGV4ZWN1dGUgaXQ6OgorVG8gZXhlY3V0ZSBp
dDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QKICAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3Qt
My54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1Q
RElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJF
RklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29s
bGVjdGVkIDEgaXRlbQogCiAgICAgdGVzdF9zYW1wbGUucHkgRiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC00MSw3ICs1MCw5IEBA
IFRvIGV4ZWN1dGUgaXQ6OgogICAgIEUgICAgICAgICsgIHdoZXJlIDQgPSBpbmMoMykKIAogICAg
IHRlc3Rfc2FtcGxlLnB5OjY6IEFzc2VydGlvbkVycm9yCi0gICAgPT09PT09PT09PT09PT09PT09
PT09PT09PSAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09PT09
PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8g
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9zYW1wbGUucHk6OnRl
c3RfYW5zd2VyIC0gYXNzZXJ0IDQgPT0gNQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09
PT0gMSBmYWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogRHVl
IHRvIGBgcHl0ZXN0YGAncyBkZXRhaWxlZCBhc3NlcnRpb24gaW50cm9zcGVjdGlvbiwgb25seSBw
bGFpbiBgYGFzc2VydGBgIHN0YXRlbWVudHMgYXJlIHVzZWQuCiBTZWUgOnJlZjpgR2V0dGluZyBT
dGFydGVkIDxnZXRzdGFydGVkPmAgZm9yIG1vcmUgZXhhbXBsZXMuCkBAIC01MCwxNyArNjEsMTcg
QEAgU2VlIDpyZWY6YEdldHRpbmcgU3RhcnRlZCA8Z2V0c3RhcnRlZD5gIGZvciBtb3JlIGV4YW1w
bGVzLgogRmVhdHVyZXMKIC0tLS0tLS0tCiAKLS0gRGV0YWlsZWQgaW5mbyBvbiBmYWlsaW5nIDpy
ZWY6YGFzc2VydCBzdGF0ZW1lbnRzIDxhc3NlcnQ+YCAobm8gbmVlZCB0byByZW1lbWJlciBgYHNl
bGYuYXNzZXJ0KmBgIG5hbWVzKTsKKy0gRGV0YWlsZWQgaW5mbyBvbiBmYWlsaW5nIDpyZWY6YGFz
c2VydCBzdGF0ZW1lbnRzIDxhc3NlcnQ+YCAobm8gbmVlZCB0byByZW1lbWJlciBgYHNlbGYuYXNz
ZXJ0KmBgIG5hbWVzKQogCi0tIDpyZWY6YEF1dG8tZGlzY292ZXJ5IDx0ZXN0IGRpc2NvdmVyeT5g
IG9mIHRlc3QgbW9kdWxlcyBhbmQgZnVuY3Rpb25zOworLSA6cmVmOmBBdXRvLWRpc2NvdmVyeSA8
dGVzdCBkaXNjb3Zlcnk+YCBvZiB0ZXN0IG1vZHVsZXMgYW5kIGZ1bmN0aW9ucwogCi0tIDpyZWY6
YE1vZHVsYXIgZml4dHVyZXMgPGZpeHR1cmU+YCBmb3IgbWFuYWdpbmcgc21hbGwgb3IgcGFyYW1l
dHJpemVkIGxvbmctbGl2ZWQgdGVzdCByZXNvdXJjZXM7CistIDpyZWY6YE1vZHVsYXIgZml4dHVy
ZXMgPGZpeHR1cmU+YCBmb3IgbWFuYWdpbmcgc21hbGwgb3IgcGFyYW1ldHJpemVkIGxvbmctbGl2
ZWQgdGVzdCByZXNvdXJjZXMKIAotLSBDYW4gcnVuIDpyZWY6YHVuaXR0ZXN0IDx1bml0dGVzdD5g
IChpbmNsdWRpbmcgdHJpYWwpIGFuZCA6cmVmOmBub3NlIDxub3NlaW50ZWdyYXRpb24+YCB0ZXN0
IHN1aXRlcyBvdXQgb2YgdGhlIGJveDsKKy0gQ2FuIHJ1biA6cmVmOmB1bml0dGVzdCA8dW5pdHRl
c3Q+YCAoaW5jbHVkaW5nIHRyaWFsKSBhbmQgOnJlZjpgbm9zZSA8bm9zZWludGVncmF0aW9uPmAg
dGVzdCBzdWl0ZXMgb3V0IG9mIHRoZSBib3gKIAotLSBQeXRob24gMi43LCBQeXRob24gMy40Kywg
UHlQeSAyLjMsIEp5dGhvbiAyLjUgKHVudGVzdGVkKTsKKy0gUHl0aG9uIDMuNSsgYW5kIFB5UHkg
MwogCi0tIFJpY2ggcGx1Z2luIGFyY2hpdGVjdHVyZSwgd2l0aCBvdmVyIDMxNSsgYGV4dGVybmFs
IHBsdWdpbnMgPGh0dHA6Ly9wbHVnaW5jb21wYXQuaGVyb2t1YXBwLmNvbT5gXyBhbmQgdGhyaXZp
bmcgY29tbXVuaXR5OworLSBSaWNoIHBsdWdpbiBhcmNoaXRlY3R1cmUsIHdpdGggb3ZlciAzMTUr
IGBleHRlcm5hbCBwbHVnaW5zIDxodHRwOi8vcGx1Z2luY29tcGF0Lmhlcm9rdWFwcC5jb20+YF8g
YW5kIHRocml2aW5nIGNvbW11bml0eQogCiAKIERvY3VtZW50YXRpb24KQEAgLTgwLDExICs5MSw0
NCBAQCBDaGFuZ2Vsb2cKIAogQ29uc3VsdCB0aGUgOnJlZjpgQ2hhbmdlbG9nIDxjaGFuZ2Vsb2c+
YCBwYWdlIGZvciBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzIG9mIGVhY2ggdmVyc2lvbi4KIAorU3Vw
cG9ydCBweXRlc3QKKy0tLS0tLS0tLS0tLS0tCisKK2BPcGVuIENvbGxlY3RpdmVgXyBpcyBhbiBv
bmxpbmUgZnVuZGluZyBwbGF0Zm9ybSBmb3Igb3BlbiBhbmQgdHJhbnNwYXJlbnQgY29tbXVuaXRp
ZXMuCitJdCBwcm92aWRlIHRvb2xzIHRvIHJhaXNlIG1vbmV5IGFuZCBzaGFyZSB5b3VyIGZpbmFu
Y2VzIGluIGZ1bGwgdHJhbnNwYXJlbmN5LgorCitJdCBpcyB0aGUgcGxhdGZvcm0gb2YgY2hvaWNl
IGZvciBpbmRpdmlkdWFscyBhbmQgY29tcGFuaWVzIHRoYXQgd2FudCB0byBtYWtlIG9uZS10aW1l
IG9yCittb250aGx5IGRvbmF0aW9ucyBkaXJlY3RseSB0byB0aGUgcHJvamVjdC4KKworU2VlIG1v
cmUgZGV0YWlscyBpbiB0aGUgYHB5dGVzdCBjb2xsZWN0aXZlYF8uCisKKy4uIF9PcGVuIENvbGxl
Y3RpdmU6IGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tCisuLiBfcHl0ZXN0IGNvbGxlY3RpdmU6
IGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL3B5dGVzdAorCisKK3B5dGVzdCBmb3IgZW50ZXJw
cmlzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F2YWlsYWJsZSBhcyBwYXJ0IG9mIHRoZSBU
aWRlbGlmdCBTdWJzY3JpcHRpb24uCisKK1RoZSBtYWludGFpbmVycyBvZiBweXRlc3QgYW5kIHRo
b3VzYW5kcyBvZiBvdGhlciBwYWNrYWdlcyBhcmUgd29ya2luZyB3aXRoIFRpZGVsaWZ0IHRvIGRl
bGl2ZXIgY29tbWVyY2lhbCBzdXBwb3J0IGFuZAorbWFpbnRlbmFuY2UgZm9yIHRoZSBvcGVuIHNv
dXJjZSBkZXBlbmRlbmNpZXMgeW91IHVzZSB0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4KK1Nh
dmUgdGltZSwgcmVkdWNlIHJpc2ssIGFuZCBpbXByb3ZlIGNvZGUgaGVhbHRoLCB3aGlsZSBwYXlp
bmcgdGhlIG1haW50YWluZXJzIG9mIHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgeW91IHVzZS4KKwor
YExlYXJuIG1vcmUuIDxodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vcGtnL3B5cGkt
cHl0ZXN0P3V0bV9zb3VyY2U9cHlwaS1weXRlc3QmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2Ft
cGFpZ249ZW50ZXJwcmlzZSZ1dG1fdGVybT1yZXBvPmBfCisKK1NlY3VyaXR5CiteXl5eXl5eXgor
CitweXRlc3QgaGFzIG5ldmVyIGJlZW4gYXNzb2NpYXRlZCB3aXRoIGEgc2VjdXJpdHkgdnVsbmVy
YWJpbGl0eSwgYnV0IGluIGFueSBjYXNlLCB0byByZXBvcnQgYQorc2VjdXJpdHkgdnVsbmVyYWJp
bGl0eSBwbGVhc2UgdXNlIHRoZSBgVGlkZWxpZnQgc2VjdXJpdHkgY29udGFjdCA8aHR0cHM6Ly90
aWRlbGlmdC5jb20vc2VjdXJpdHk+YF8uCitUaWRlbGlmdCB3aWxsIGNvb3JkaW5hdGUgdGhlIGZp
eCBhbmQgZGlzY2xvc3VyZS4KKwogCiBMaWNlbnNlCiAtLS0tLS0tCiAKLUNvcHlyaWdodCBIb2xn
ZXIgS3Jla2VsIGFuZCBvdGhlcnMsIDIwMDQtMjAxNy4KK0NvcHlyaWdodCBIb2xnZXIgS3Jla2Vs
IGFuZCBvdGhlcnMsIDIwMDQtMjAyMC4KIAogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBgTUlUYF8gbGljZW5zZSwgcHl0ZXN0IGlzIGZyZWUgYW5kIG9wZW4gc291cmNlIHNvZnR3
YXJlLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbGljZW5zZS5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vbGljZW5zZS5yc3QKaW5kZXggYjhjMGRjZTFiZWE4Li5jNmMxMGJiZjM1
OGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9saWNlbnNlLnJzdAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vbGljZW5zZS5yc3QKQEAgLTUsMTEgKzUsMTEgQEAgTGljZW5zZQogCiBE
aXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGBNSVRgXyBsaWNlbnNlLCBweXRlc3Qg
aXMgZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUuCiAKLTo6CisuLiBjb2RlLWJsb2NrOjog
dGV4dAogCiAgICAgVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAKLSAgICBDb3B5cmlnaHQgKGMpIDIw
MDQtMjAxNyBIb2xnZXIgS3Jla2VsIGFuZCBvdGhlcnMKKyAgICBDb3B5cmlnaHQgKGMpIDIwMDQt
MjAyMCBIb2xnZXIgS3Jla2VsIGFuZCBvdGhlcnMKIAogICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkg
b2YKICAgICB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2xpbmtzLmluYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9saW5rcy5pbmMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRkNWE0YjFlZWJmMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9saW5rcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0K
LS4uIF9gc2tpcHBpbmcgcGx1Z2luYDogcGx1Z2luL3NraXBwaW5nLmh0bWwKLS4uIF9gZnVuY2Fy
Z3MgbWVjaGFuaXNtYDogZnVuY2FyZ3MuaHRtbAotLi4gX2Bkb2N0ZXN0LnB5YDogaHR0cDovL2Rv
Y3MucHl0aG9uLm9yZy9saWJyYXJ5L2RvY3Rlc3QuaHRtbAotLi4gX2B4VW5pdCBzdHlsZSBzZXR1
cGA6IHh1bml0X3NldHVwLmh0bWwKLS4uIF9gcHl0ZXN0X25vc2VgOiBwbHVnaW4vbm9zZS5odG1s
Ci0uLiBfYHJlU3RydWN0dXJlZCBUZXh0YDogaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5l
dAotLi4gX2BQeXRob24gZGVidWdnZXJgOiBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYi9tb2R1
bGUtcGRiLmh0bWwKLS4uIF9ub3NlOiBodHRwczovL25vc2UucmVhZHRoZWRvY3MuaW8vZW4vbGF0
ZXN0LwotLi4gX3B5dGVzdDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC8KLS4uIF9t
ZXJjdXJpYWw6IGh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vd2lraS8KLS4uIF9gc2V0dXB0
b29sc2A6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zZXR1cHRvb2xzLwotLi4gX2BlYXN5X2lu
c3RhbGxgOgotLi4gX2BkaXN0cmlidXRlIGRvY3NgOgotLi4gX2BkaXN0cmlidXRlYDogaHR0cHM6
Ly9weXBpLm9yZy9wcm9qZWN0L2Rpc3RyaWJ1dGUvCi0uLiBfYHBpcGA6IGh0dHBzOi8vcHlwaS5v
cmcvcHJvamVjdC9waXAvCi0uLiBfYHZpcnR1YWxlbnZgOiBodHRwczovL3B5cGkub3JnL3Byb2pl
Y3QvdmlydHVhbGVudi8KLS4uIF9odWRzb246IGh0dHA6Ly9odWRzb24tY2kub3JnLwotLi4gX2pl
bmtpbnM6IGh0dHA6Ly9qZW5raW5zLWNpLm9yZy8KLS4uIF90b3g6IGh0dHA6Ly90ZXN0cnVuLm9y
Zy90b3gKLS4uIF9weWxpYjogaHR0cHM6Ly9weS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbG9nZ2luZy5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vbG9nZ2luZy5yc3QKaW5kZXggMDA4MjljMTVlZWY3Li41MjcxMzg1NGVmYjIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9sb2dnaW5nLnJzdAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vbG9nZ2luZy5yc3QKQEAgLTMsMTcgKzMsMjEgQEAKIExvZ2dpbmcKIC0tLS0tLS0KIAot
Li4gdmVyc2lvbmFkZGVkOjogMy4zCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorCisKIAogcHl0
ZXN0IGNhcHR1cmVzIGxvZyBtZXNzYWdlcyBvZiBsZXZlbCBgYFdBUk5JTkdgYCBvciBhYm92ZSBh
dXRvbWF0aWNhbGx5IGFuZCBkaXNwbGF5cyB0aGVtIGluIHRoZWlyIG93biBzZWN0aW9uCiBmb3Ig
ZWFjaCBmYWlsZWQgdGVzdCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgY2FwdHVyZWQgc3Rkb3V0IGFu
ZCBzdGRlcnIuCiAKLVJ1bm5pbmcgd2l0aG91dCBvcHRpb25zOjoKK1J1bm5pbmcgd2l0aG91dCBv
cHRpb25zOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0CiAKLVNob3dzIGZh
aWxlZCB0ZXN0cyBsaWtlIHNvOjoKK1Nob3dzIGZhaWxlZCB0ZXN0cyBsaWtlIHNvOgorCisuLiBj
b2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXB0dXJl
ZCBzdGRsb2cgY2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgdGVzdF9yZXBvcnRpbmcu
cHkgICAgMjYgV0FSTklORyAgdGV4dCBnb2luZyB0byBsb2dnZXIKQEAgLTI3LDEyICszMSwxNiBA
QCBCeSBkZWZhdWx0IGVhY2ggY2FwdHVyZWQgbG9nIG1lc3NhZ2Ugc2hvd3MgdGhlIG1vZHVsZSwg
bGluZSBudW1iZXIsIGxvZyBsZXZlbAogYW5kIG1lc3NhZ2UuCiAKIElmIGRlc2lyZWQgdGhlIGxv
ZyBhbmQgZGF0ZSBmb3JtYXQgY2FuIGJlIHNwZWNpZmllZCB0bwotYW55dGhpbmcgdGhhdCB0aGUg
bG9nZ2luZyBtb2R1bGUgc3VwcG9ydHMgYnkgcGFzc2luZyBzcGVjaWZpYyBmb3JtYXR0aW5nIG9w
dGlvbnM6OgorYW55dGhpbmcgdGhhdCB0aGUgbG9nZ2luZyBtb2R1bGUgc3VwcG9ydHMgYnkgcGFz
c2luZyBzcGVjaWZpYyBmb3JtYXR0aW5nIG9wdGlvbnM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNo
CiAKICAgICBweXRlc3QgLS1sb2ctZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUo
bWVzc2FnZSlzIiBcCiAgICAgICAgICAgICAtLWxvZy1kYXRlLWZvcm1hdD0iJVktJW0tJWQgJUg6
JU06JVMiCiAKLVNob3dzIGZhaWxlZCB0ZXN0cyBsaWtlIHNvOjoKK1Nob3dzIGZhaWxlZCB0ZXN0
cyBsaWtlIHNvOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBDYXB0dXJlZCBzdGRsb2cgY2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICAgMjAxMC0wNC0xMCAxNDo0ODo0NCBXQVJOSU5HIHRleHQgZ29pbmcgdG8gbG9nZ2VyCkBAIC01
MSw3ICs1OSw5IEBAIFRoZXNlIG9wdGlvbnMgY2FuIGFsc28gYmUgY3VzdG9taXplZCB0aHJvdWdo
IGBgcHl0ZXN0LmluaWBgIGZpbGU6CiAgICAgbG9nX2RhdGVfZm9ybWF0ID0gJVktJW0tJWQgJUg6
JU06JVMKIAogRnVydGhlciBpdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHJlcG9ydGluZyBvZiBj
YXB0dXJlZCBjb250ZW50IChzdGRvdXQsCi1zdGRlcnIgYW5kIGxvZ3MpIG9uIGZhaWxlZCB0ZXN0
cyBjb21wbGV0ZWx5IHdpdGg6Ogorc3RkZXJyIGFuZCBsb2dzKSBvbiBmYWlsZWQgdGVzdHMgY29t
cGxldGVseSB3aXRoOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tc2hv
dy1jYXB0dXJlPW5vCiAKQEAgLTYwLDcgKzcwLDkgQEAgY2FwbG9nIGZpeHR1cmUKIF5eXl5eXl5e
Xl5eXl5eCiAKIEluc2lkZSB0ZXN0cyBpdCBpcyBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIGxvZyBs
ZXZlbCBmb3IgdGhlIGNhcHR1cmVkIGxvZwotbWVzc2FnZXMuICBUaGlzIGlzIHN1cHBvcnRlZCBi
eSB0aGUgYGBjYXBsb2dgYCBmaXh0dXJlOjoKK21lc3NhZ2VzLiAgVGhpcyBpcyBzdXBwb3J0ZWQg
YnkgdGhlIGBgY2FwbG9nYGAgZml4dHVyZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAg
ICAgZGVmIHRlc3RfZm9vKGNhcGxvZyk6CiAgICAgICAgIGNhcGxvZy5zZXRfbGV2ZWwobG9nZ2lu
Zy5JTkZPKQpAQCAtNjgsNTkgKzgwLDY5IEBAIG1lc3NhZ2VzLiAgVGhpcyBpcyBzdXBwb3J0ZWQg
YnkgdGhlIGBgY2FwbG9nYGAgZml4dHVyZTo6CiAKIEJ5IGRlZmF1bHQgdGhlIGxldmVsIGlzIHNl
dCBvbiB0aGUgcm9vdCBsb2dnZXIsCiBob3dldmVyIGFzIGEgY29udmVuaWVuY2UgaXQgaXMgYWxz
byBwb3NzaWJsZSB0byBzZXQgdGhlIGxvZyBsZXZlbCBvZiBhbnkKLWxvZ2dlcjo6Citsb2dnZXI6
CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiB0ZXN0X2ZvbyhjYXBsb2cpOgot
ICAgICAgICBjYXBsb2cuc2V0X2xldmVsKGxvZ2dpbmcuQ1JJVElDQUwsIGxvZ2dlcj0ncm9vdC5i
YXonKQorICAgICAgICBjYXBsb2cuc2V0X2xldmVsKGxvZ2dpbmcuQ1JJVElDQUwsIGxvZ2dlcj0i
cm9vdC5iYXoiKQogICAgICAgICBwYXNzCiAKIFRoZSBsb2cgbGV2ZWxzIHNldCBhcmUgcmVzdG9y
ZWQgYXV0b21hdGljYWxseSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LgogCiBJdCBpcyBhbHNvIHBv
c3NpYmxlIHRvIHVzZSBhIGNvbnRleHQgbWFuYWdlciB0byB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhl
IGxvZwotbGV2ZWwgaW5zaWRlIGEgYGB3aXRoYGAgYmxvY2s6OgorbGV2ZWwgaW5zaWRlIGEgYGB3
aXRoYGAgYmxvY2s6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiB0ZXN0X2Jh
cihjYXBsb2cpOgogICAgICAgICB3aXRoIGNhcGxvZy5hdF9sZXZlbChsb2dnaW5nLklORk8pOgog
ICAgICAgICAgICAgcGFzcwogCiBBZ2FpbiwgYnkgZGVmYXVsdCB0aGUgbGV2ZWwgb2YgdGhlIHJv
b3QgbG9nZ2VyIGlzIGFmZmVjdGVkIGJ1dCB0aGUgbGV2ZWwgb2YgYW55Ci1sb2dnZXIgY2FuIGJl
IGNoYW5nZWQgaW5zdGVhZCB3aXRoOjoKK2xvZ2dlciBjYW4gYmUgY2hhbmdlZCBpbnN0ZWFkIHdp
dGg6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiB0ZXN0X2JhcihjYXBsb2cp
OgotICAgICAgICB3aXRoIGNhcGxvZy5hdF9sZXZlbChsb2dnaW5nLkNSSVRJQ0FMLCBsb2dnZXI9
J3Jvb3QuYmF6Jyk6CisgICAgICAgIHdpdGggY2FwbG9nLmF0X2xldmVsKGxvZ2dpbmcuQ1JJVElD
QUwsIGxvZ2dlcj0icm9vdC5iYXoiKToKICAgICAgICAgICAgIHBhc3MKIAogTGFzdGx5IGFsbCB0
aGUgbG9ncyBzZW50IHRvIHRoZSBsb2dnZXIgZHVyaW5nIHRoZSB0ZXN0IHJ1biBhcmUgbWFkZSBh
dmFpbGFibGUgb24KIHRoZSBmaXh0dXJlIGluIHRoZSBmb3JtIG9mIGJvdGggdGhlIGBgbG9nZ2lu
Zy5Mb2dSZWNvcmRgYCBpbnN0YW5jZXMgYW5kIHRoZSBmaW5hbCBsb2cgdGV4dC4KLVRoaXMgaXMg
dXNlZnVsIGZvciB3aGVuIHlvdSB3YW50IHRvIGFzc2VydCBvbiB0aGUgY29udGVudHMgb2YgYSBt
ZXNzYWdlOjoKK1RoaXMgaXMgdXNlZnVsIGZvciB3aGVuIHlvdSB3YW50IHRvIGFzc2VydCBvbiB0
aGUgY29udGVudHMgb2YgYSBtZXNzYWdlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAg
ICBkZWYgdGVzdF9iYXooY2FwbG9nKToKICAgICAgICAgZnVuY191bmRlcl90ZXN0KCkKICAgICAg
ICAgZm9yIHJlY29yZCBpbiBjYXBsb2cucmVjb3JkczoKLSAgICAgICAgICAgIGFzc2VydCByZWNv
cmQubGV2ZWxuYW1lICE9ICdDUklUSUNBTCcKLSAgICAgICAgYXNzZXJ0ICd3YWxseScgbm90IGlu
IGNhcGxvZy50ZXh0CisgICAgICAgICAgICBhc3NlcnQgcmVjb3JkLmxldmVsbmFtZSAhPSAiQ1JJ
VElDQUwiCisgICAgICAgIGFzc2VydCAid2FsbHkiIG5vdCBpbiBjYXBsb2cudGV4dAogCiBGb3Ig
YWxsIHRoZSBhdmFpbGFibGUgYXR0cmlidXRlcyBvZiB0aGUgbG9nIHJlY29yZHMgc2VlIHRoZQog
YGBsb2dnaW5nLkxvZ1JlY29yZGBgIGNsYXNzLgogCiBZb3UgY2FuIGFsc28gcmVzb3J0IHRvIGBg
cmVjb3JkX3R1cGxlc2BgIGlmIGFsbCB5b3Ugd2FudCB0byBkbyBpcyB0byBlbnN1cmUsCiB0aGF0
IGNlcnRhaW4gbWVzc2FnZXMgaGF2ZSBiZWVuIGxvZ2dlZCB1bmRlciBhIGdpdmVuIGxvZ2dlciBu
YW1lIHdpdGggYSBnaXZlbgotc2V2ZXJpdHkgYW5kIG1lc3NhZ2U6Ogorc2V2ZXJpdHkgYW5kIG1l
c3NhZ2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiB0ZXN0X2ZvbyhjYXBs
b2cpOgotICAgICAgICBsb2dnaW5nLmdldExvZ2dlcigpLmluZm8oJ2JvbyAlcycsICdhcmcnKQor
ICAgICAgICBsb2dnaW5nLmdldExvZ2dlcigpLmluZm8oImJvbyAlcyIsICJhcmciKQorCisgICAg
ICAgIGFzc2VydCBjYXBsb2cucmVjb3JkX3R1cGxlcyA9PSBbKCJyb290IiwgbG9nZ2luZy5JTkZP
LCAiYm9vIGFyZyIpXQogCi0gICAgICAgIGFzc2VydCBjYXBsb2cucmVjb3JkX3R1cGxlcyA9PSBb
Ci0gICAgICAgICAgICAoJ3Jvb3QnLCBsb2dnaW5nLklORk8sICdib28gYXJnJyksCi0gICAgICAg
IF0KK1lvdSBjYW4gY2FsbCBgYGNhcGxvZy5jbGVhcigpYGAgdG8gcmVzZXQgdGhlIGNhcHR1cmVk
IGxvZyByZWNvcmRzIGluIGEgdGVzdDoKIAotWW91IGNhbiBjYWxsIGBgY2FwbG9nLmNsZWFyKClg
YCB0byByZXNldCB0aGUgY2FwdHVyZWQgbG9nIHJlY29yZHMgaW4gYSB0ZXN0OjoKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAogICAgIGRlZiB0ZXN0X3NvbWV0aGluZ193aXRoX2NsZWFyaW5nX3Jl
Y29yZHMoY2FwbG9nKToKICAgICAgICAgc29tZV9tZXRob2RfdGhhdF9jcmVhdGVzX2xvZ19yZWNv
cmRzKCkKICAgICAgICAgY2FwbG9nLmNsZWFyKCkKICAgICAgICAgeW91cl90ZXN0X21ldGhvZCgp
Ci0gICAgICAgIGFzc2VydCBbJ0ZvbyddID09IFtyZWMubWVzc2FnZSBmb3IgcmVjIGluIGNhcGxv
Zy5yZWNvcmRzXQorICAgICAgICBhc3NlcnQgWyJGb28iXSA9PSBbcmVjLm1lc3NhZ2UgZm9yIHJl
YyBpbiBjYXBsb2cucmVjb3Jkc10KIAogCiBUaGUgYGBjYXBsb2cucmVjb3Jkc2BgIGF0dHJpYnV0
ZSBjb250YWlucyByZWNvcmRzIGZyb20gdGhlIGN1cnJlbnQgc3RhZ2Ugb25seSwgc28KQEAgLTEz
MywxNCArMTU1LDEzIEBAIHRoZSByZWNvcmRzIGZvciB0aGUgYGBzZXR1cGBgIGFuZCBgYGNhbGxg
YCBzdGFnZXMgZHVyaW5nIHRlYXJkb3duIGxpa2Ugc286CiAKIC4uIGNvZGUtYmxvY2s6OiBweXRo
b24KIAotCiAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAgZGVmIHdpbmRvdyhjYXBsb2cpOgogICAg
ICAgICB3aW5kb3cgPSBjcmVhdGVfd2luZG93KCkKICAgICAgICAgeWllbGQgd2luZG93CiAgICAg
ICAgIGZvciB3aGVuIGluICgic2V0dXAiLCAiY2FsbCIpOgogICAgICAgICAgICAgbWVzc2FnZXMg
PSBbCi0gICAgICAgICAgICAgICAgeC5tZXNzYWdlIGZvciB4IGluIGNhcGxvZy5nZXRfcmVjb3Jk
cyh3aGVuKSBpZiB4LmxldmVsID09IGxvZ2dpbmcuV0FSTklORworICAgICAgICAgICAgICAgIHgu
bWVzc2FnZSBmb3IgeCBpbiBjYXBsb2cuZ2V0X3JlY29yZHMod2hlbikgaWYgeC5sZXZlbG5vID09
IGxvZ2dpbmcuV0FSTklORwogICAgICAgICAgICAgXQogICAgICAgICAgICAgaWYgbWVzc2FnZXM6
CiAgICAgICAgICAgICAgICAgcHl0ZXN0LmZhaWwoCkBAIC0xOTgsNiArMjE5LDkgQEAgb3B0aW9u
IG5hbWVzIGFyZToKICogYGBsb2dfZmlsZV9mb3JtYXRgYAogKiBgYGxvZ19maWxlX2RhdGVfZm9y
bWF0YGAKIAorWW91IGNhbiBjYWxsIGBgc2V0X2xvZ19wYXRoKClgYCB0byBjdXN0b21pemUgdGhl
IGxvZ19maWxlIHBhdGggZHluYW1pY2FsbHkuIFRoaXMgZnVuY3Rpb25hbGl0eQoraXMgY29uc2lk
ZXJlZCAqKmV4cGVyaW1lbnRhbCoqLgorCiAuLiBfbG9nX3JlbGVhc2Vfbm90ZXM6CiAKIFJlbGVh
c2Ugbm90ZXMKQEAgLTIyNiw2ICsyNTAsOSBAQCBtYWRlIGluIGBgMy40YGAgYWZ0ZXIgY29tbXVu
aXR5IGZlZWRiYWNrOgogCiAqIExvZyBsZXZlbHMgYXJlIG5vIGxvbmdlciBjaGFuZ2VkIHVubGVz
cyBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB0aGUgOmNvbmZ2YWw6YGxvZ19sZXZlbGAgY29uZmln
dXJhdGlvbgogICBvciBgYC0tbG9nLWxldmVsYGAgY29tbWFuZC1saW5lIG9wdGlvbnMuIFRoaXMg
YWxsb3dzIHVzZXJzIHRvIGNvbmZpZ3VyZSBsb2dnZXIgb2JqZWN0cyB0aGVtc2VsdmVzLgorICBT
ZXR0aW5nIDpjb25mdmFsOmBsb2dfbGV2ZWxgIHdpbGwgc2V0IHRoZSBsZXZlbCB0aGF0IGlzIGNh
cHR1cmVkIGdsb2JhbGx5IHNvIGlmIGEgc3BlY2lmaWMgdGVzdCByZXF1aXJlcworICBhIGxvd2Vy
IGxldmVsIHRoYW4gdGhpcywgdXNlIHRoZSBgYGNhcGxvZy5zZXRfbGV2ZWwoKWBgIGZ1bmN0aW9u
YWxpdHkgb3RoZXJ3aXNlIHRoYXQgdGVzdCB3aWxsIGJlIHByb25lIHRvCisgIGZhaWx1cmUuCiAq
IDpyZWY6YExpdmUgTG9ncyA8bGl2ZV9sb2dzPmAgaXMgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQg
YW5kIGNhbiBiZSBlbmFibGVkIHNldHRpbmcgdGhlCiAgIDpjb25mdmFsOmBsb2dfY2xpYCBjb25m
aWd1cmF0aW9uIG9wdGlvbiB0byBgYHRydWVgYC4gV2hlbiBlbmFibGVkLCB0aGUgdmVyYm9zaXR5
IGlzIGluY3JlYXNlZCBzbyBsb2dnaW5nIGZvciBlYWNoCiAgIHRlc3QgaXMgdmlzaWJsZS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9tYXJrLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9tYXJrLnJzdAppbmRleCBhYTEyMTBiYjZiNWEuLjczNzAzNDJhOTY1NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL21hcmsucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9tYXJr
LnJzdApAQCAtMSwyNCArMSwyOSBAQAotCiAuLiBfbWFyazoKIAogTWFya2luZyB0ZXN0IGZ1bmN0
aW9ucyB3aXRoIGF0dHJpYnV0ZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CiAKIEJ5IHVzaW5nIHRoZSBgYHB5dGVzdC5tYXJrYGAgaGVscGVyIHlv
dSBjYW4gZWFzaWx5IHNldAotbWV0YWRhdGEgb24geW91ciB0ZXN0IGZ1bmN0aW9ucy4gVGhlcmUg
YXJlCi1zb21lIGJ1aWx0aW4gbWFya2VycywgZm9yIGV4YW1wbGU6CittZXRhZGF0YSBvbiB5b3Vy
IHRlc3QgZnVuY3Rpb25zLiBZb3UgY2FuIGZpbmQgdGhlIGZ1bGwgbGlzdCBvZiBidWlsdGluIG1h
cmtlcnMKK2luIHRoZSA6cmVmOmBBUEkgUmVmZXJlbmNlPG1hcmtzIHJlZj5gLiBPciB5b3UgY2Fu
IGxpc3QgYWxsIHRoZSBtYXJrZXJzLCBpbmNsdWRpbmcKK2J1aWx0aW4gYW5kIGN1c3RvbSwgdXNp
bmcgdGhlIENMSSAtIDpjb2RlOmBweXRlc3QgLS1tYXJrZXJzYC4KKworSGVyZSBhcmUgc29tZSBv
ZiB0aGUgYnVpbHRpbiBtYXJrZXJzOgogCisqIDpyZWY6YHVzZWZpeHR1cmVzIDx1c2VmaXh0dXJl
cz5gIC0gdXNlIGZpeHR1cmVzIG9uIGEgdGVzdCBmdW5jdGlvbiBvciBjbGFzcworKiA6cmVmOmBm
aWx0ZXJ3YXJuaW5ncyA8ZmlsdGVyd2FybmluZ3M+YCAtIGZpbHRlciBjZXJ0YWluIHdhcm5pbmdz
IG9mIGEgdGVzdCBmdW5jdGlvbgogKiA6cmVmOmBza2lwIDxza2lwPmAgLSBhbHdheXMgc2tpcCBh
IHRlc3QgZnVuY3Rpb24KICogOnJlZjpgc2tpcGlmIDxza2lwaWY+YCAtIHNraXAgYSB0ZXN0IGZ1
bmN0aW9uIGlmIGEgY2VydGFpbiBjb25kaXRpb24gaXMgbWV0CiAqIDpyZWY6YHhmYWlsIDx4ZmFp
bD5gIC0gcHJvZHVjZSBhbiAiZXhwZWN0ZWQgZmFpbHVyZSIgb3V0Y29tZSBpZiBhIGNlcnRhaW4K
ICAgY29uZGl0aW9uIGlzIG1ldAotKiA6cmVmOmBwYXJhbWV0cml6ZSA8cGFyYW1ldHJpemVtYXJr
PmAgdG8gcGVyZm9ybSBtdWx0aXBsZSBjYWxscworKiA6cmVmOmBwYXJhbWV0cml6ZSA8cGFyYW1l
dHJpemVtYXJrPmAgLSBwZXJmb3JtIG11bHRpcGxlIGNhbGxzCiAgIHRvIHRoZSBzYW1lIHRlc3Qg
ZnVuY3Rpb24uCiAKIEl0J3MgZWFzeSB0byBjcmVhdGUgY3VzdG9tIG1hcmtlcnMgb3IgdG8gYXBw
bHkgbWFya2VycwotdG8gd2hvbGUgdGVzdCBjbGFzc2VzIG9yIG1vZHVsZXMuIFNlZSA6cmVmOmBt
YXJrIGV4YW1wbGVzYCBmb3IgZXhhbXBsZXMKLXdoaWNoIGFsc28gc2VydmUgYXMgZG9jdW1lbnRh
dGlvbi4KK3RvIHdob2xlIHRlc3QgY2xhc3NlcyBvciBtb2R1bGVzLiBUaG9zZSBtYXJrZXJzIGNh
biBiZSB1c2VkIGJ5IHBsdWdpbnMsIGFuZCBhbHNvCithcmUgY29tbW9ubHkgdXNlZCB0byA6cmVm
OmBzZWxlY3QgdGVzdHMgPG1hcmsgcnVuPmAgb24gdGhlIGNvbW1hbmQtbGluZSB3aXRoIHRoZSBg
YC1tYGAgb3B0aW9uLgorCitTZWUgOnJlZjpgbWFyayBleGFtcGxlc2AgZm9yIGV4YW1wbGVzIHdo
aWNoIGFsc28gc2VydmUgYXMgZG9jdW1lbnRhdGlvbi4KIAogLi4gbm90ZTo6CiAKQEAgLTI2LDEz
NCArMzEsNjMgQEAgd2hpY2ggYWxzbyBzZXJ2ZSBhcyBkb2N1bWVudGF0aW9uLgogICAgIDpyZWY6
YGZpeHR1cmVzIDxmaXh0dXJlcz5gLgogCiAKLVJhaXNpbmcgZXJyb3JzIG9uIHVua25vd24gbWFy
a3M6IC0tc3RyaWN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1XaGVuIHRoZSBgYC0tc3RyaWN0YGAgY29tbWFuZC1saW5lIGZsYWcgaXMgcGFzc2VkLCBhbnkg
bWFya3Mgbm90IHJlZ2lzdGVyZWQgaW4gdGhlIGBgcHl0ZXN0LmluaWBgIGZpbGUgd2lsbCB0cmln
Z2VyIGFuIGVycm9yLgotCi1NYXJrcyBjYW4gYmUgcmVnaXN0ZXJlZCBsaWtlIHRoaXM6Ci0KLS4u
IGNvZGUtYmxvY2s6OiBpbmkKLQotICAgIFtweXRlc3RdCi0gICAgbWFya2VycyA9Ci0gICAgICAg
IHNsb3cKLSAgICAgICAgc2VyaWFsCitSZWdpc3RlcmluZyBtYXJrcworLS0tLS0tLS0tLS0tLS0t
LS0KIAotVGhpcyBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IHVzZXJzIG1pc3R5cGluZyBtYXJrIG5h
bWVzIGJ5IGFjY2lkZW50LiBUZXN0IHN1aXRlcyB0aGF0IHdhbnQgdG8gZW5mb3JjZSB0aGlzCi1z
aG91bGQgYWRkIGBgLS1zdHJpY3RgYCB0byBgYGFkZG9wdHNgYDoKK1lvdSBjYW4gcmVnaXN0ZXIg
Y3VzdG9tIG1hcmtzIGluIHlvdXIgYGBweXRlc3QuaW5pYGAgZmlsZSBsaWtlIHRoaXM6CiAKIC4u
IGNvZGUtYmxvY2s6OiBpbmkKIAogICAgIFtweXRlc3RdCi0gICAgYWRkb3B0cyA9IC0tc3RyaWN0
CiAgICAgbWFya2VycyA9Ci0gICAgICAgIHNsb3cKKyAgICAgICAgc2xvdzogbWFya3MgdGVzdHMg
YXMgc2xvdyAoZGVzZWxlY3Qgd2l0aCAnLW0gIm5vdCBzbG93IicpCiAgICAgICAgIHNlcmlhbAog
CitvciBpbiB5b3VyIGBgcHlwcm9qZWN0LnRvbWxgYCBmaWxlIGxpa2UgdGhpczoKIAotLi4gYG1h
cmtlci1pdGVyYXRpb25gCi0KLU1hcmtlciByZXZhbXAgYW5kIGl0ZXJhdGlvbgotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIHZlcnNpb25hZGRlZDo6IDMuNgotCi1weXRlc3QncyBt
YXJrZXIgaW1wbGVtZW50YXRpb24gdHJhZGl0aW9uYWxseSB3b3JrZWQgYnkgc2ltcGx5IHVwZGF0
aW5nIHRoZSBgYF9fZGljdF9fYGAgYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyB0byBhZGQgbWFya2Vy
cywgaW4gYSBjdW11bGF0aXZlIG1hbm5lci4gQXMgYSByZXN1bHQgb2YgdGhlIHRoaXMsIG1hcmtl
cnMgd291bGQgdW5pbnRlbmRlbHkgYmUgcGFzc2VkIGFsb25nIGNsYXNzIGhpZXJhcmNoaWVzIGlu
IHN1cnByaXNpbmcgd2F5cyBwbHVzIHRoZSBBUEkgZm9yIHJldHJpdmluZyB0aGVtIHdhcyBpbmNv
bnNpc3RlbnQsIGFzIG1hcmtlcnMgZnJvbSBwYXJhbWV0ZXJpemF0aW9uIHdvdWxkIGJlIHN0b3Jl
ZCBkaWZmZXJlbnRseSB0aGFuIG1hcmtlcnMgYXBwbGllZCB1c2luZyB0aGUgYGBAcHl0ZXN0Lm1h
cmtgYCBkZWNvcmF0b3IgYW5kIG1hcmtlcnMgYWRkZWQgdmlhIGBgbm9kZS5hZGRfbWFya2VyYGAu
Ci0KLVRoaXMgc3RhdGUgb2YgdGhpbmdzIG1hZGUgaXQgdGVjaG5pY2FsbHkgbmV4dCB0byBpbXBv
c3NpYmxlIHRvIHVzZSBkYXRhIGZyb20gbWFya2VycyBjb3JyZWN0bHkgd2l0aG91dCBoYXZpbmcg
YSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGludGVybmFscywgbGVhZGluZyB0byBzdWJ0bGUg
YW5kIGhhcmQgdG8gdW5kZXJzdGFuZCBidWdzIGluIG1vcmUgYWR2YW5jZWQgdXNhZ2VzLgotCi1E
ZXBlbmRpbmcgb24gaG93IGEgbWFya2VyIGdvdCBkZWNsYXJlZC9jaGFuZ2VkIG9uZSB3b3VsZCBn
ZXQgZWl0aGVyIGEgYGBNYXJrZXJJbmZvYGAgd2hpY2ggbWlnaHQgY29udGFpbiBtYXJrZXJzIGZy
b20gc2libGluZyBjbGFzc2VzLAotYGBNYXJrRGVjb3JhdG9yc2BgIHdoZW4gbWFya3MgY2FtZSBm
cm9tIHBhcmFtZXRlcml6YXRpb24gb3IgZnJvbSBhIGBgbm9kZS5hZGRfbWFya2VyYGAgY2FsbCwg
ZGlzY2FyZGluZyBwcmlvciBtYXJrcy4gQWxzbyBgYE1hcmtlckluZm9gYCBhY3RzIGxpa2UgYSBz
aW5nbGUgbWFyaywgd2hlbiBpdCBpbiBmYWN0IHJlcHJlc2VudHMgYSBtZXJnZWQgdmlldyBvbiBt
dWx0aXBsZSBtYXJrcyB3aXRoIHRoZSBzYW1lIG5hbWUuCi0KLU9uIHRvcCBvZiB0aGF0IG1hcmtl
cnMgd2hlcmUgbm90IGFjY2Vzc2libGUgdGhlIHNhbWUgd2F5IGZvciBtb2R1bGVzLCBjbGFzc2Vz
LCBhbmQgZnVuY3Rpb25zL21ldGhvZHMsCi1pbiBmYWN0LCBtYXJrZXJzIHdoZXJlIG9ubHkgYWNj
ZXNzaWJsZSBpbiBmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSB3aGVyZSBkZWNsYXJlZCBvbiBjbGFz
c2VzL21vZHVsZXMuCi0KLUEgbmV3IEFQSSB0byBhY2Nlc3MgbWFya2VycyBoYXMgYmVlbiBpbnRy
b2R1Y2VkIGluIHB5dGVzdCAzLjYgaW4gb3JkZXIgdG8gc29sdmUgdGhlIHByb2JsZW1zIHdpdGgg
dGhlIGluaXRpYWwgZGVzaWduLCBwcm92aWRpbmcgOmZ1bmM6YF9weXRlc3Qubm9kZXMuTm9kZS5p
dGVyX21hcmtlcnNgIG1ldGhvZCB0byBpdGVyYXRlIG92ZXIgbWFya2VycyBpbiBhIGNvbnNpc3Rl
bnQgbWFubmVyIGFuZCByZXdvcmtpbmcgdGhlIGludGVybmFscywgd2hpY2ggc29sdmVkIGdyZWF0
IGRlYWwgb2YgcHJvYmxlbXMgd2l0aCB0aGUgaW5pdGlhbCBkZXNpZ24uCi0KLQotLi4gX3VwZGF0
ZSBtYXJrZXIgY29kZToKLQotVXBkYXRpbmcgY29kZQotfn5+fn5+fn5+fn5+fgotCi1UaGUgb2xk
IGBgTm9kZS5nZXRfbWFya2VyKG5hbWUpYGAgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCBkZXByZWNh
dGVkIGJlY2F1c2UgaXQgcmV0dXJucyBhbiBpbnRlcm5hbCBgYE1hcmtlckluZm9gYCBvYmplY3QK
LXdoaWNoIGNvbnRhaW5zIHRoZSBtZXJnZWQgbmFtZSwgYGAqYXJnc2BgIGFuZCBgYCoqa3dhcmdz
YGAgb2YgYWxsIHRoZSBtYXJrZXJzIHdoaWNoIGFwcGx5IHRvIHRoYXQgbm9kZS4KKy4uIGNvZGUt
YmxvY2s6OiB0b21sCiAKLUluIGdlbmVyYWwgdGhlcmUgYXJlIHR3byBzY2VuYXJpb3Mgb24gaG93
IG1hcmtlcnMgc2hvdWxkIGJlIGhhbmRsZWQ6CisgICAgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25z
XQorICAgIG1hcmtlcnMgPSBbCisgICAgICAgICJzbG93OiBtYXJrcyB0ZXN0cyBhcyBzbG93IChk
ZXNlbGVjdCB3aXRoICctbSBcIm5vdCBzbG93XCInKSIsCisgICAgICAgICJzZXJpYWwiLAorICAg
IF0KIAotMS4gTWFya3Mgb3ZlcndyaXRlIGVhY2ggb3RoZXIuIE9yZGVyIG1hdHRlcnMgYnV0IHlv
dSBvbmx5IHdhbnQgdG8gdGhpbmsgb2YgeW91ciBtYXJrIGFzIGEgc2luZ2xlIGl0ZW0uIEUuZy4K
LWBgbG9nX2xldmVsKCdpbmZvJylgYCBhdCBhIG1vZHVsZSBsZXZlbCBjYW4gYmUgb3ZlcndyaXR0
ZW4gYnkgYGBsb2dfbGV2ZWwoJ2RlYnVnJylgYCBmb3IgYSBzcGVjaWZpYyB0ZXN0LgorTm90ZSB0
aGF0IGV2ZXJ5dGhpbmcgcGFzdCB0aGUgYGA6YGAgYWZ0ZXIgdGhlIG1hcmsgbmFtZSBpcyBhbiBv
cHRpb25hbCBkZXNjcmlwdGlvbi4KIAotICAgIEluIHRoaXMgY2FzZSByZXBsYWNlIHVzZSBgYE5v
ZGUuZ2V0X2Nsb3Nlc3RfbWFya2VyKG5hbWUpYGA6CitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJl
Z2lzdGVyIG5ldyBtYXJrZXJzIHByb2dyYW1tYXRpY2FsbHkgaW4gYQorOnJlZjpgcHl0ZXN0X2Nv
bmZpZ3VyZSA8aW5pdGlhbGl6YXRpb24taG9va3M+YCBob29rOgogCi0gICAgLi4gY29kZS1ibG9j
azo6IHB5dGhvbgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0gICAgICAgICMgcmVwbGFjZSB0
aGlzOgotICAgICAgICBtYXJrZXIgPSBpdGVtLmdldF9tYXJrZXIoImxvZ19sZXZlbCIpCi0gICAg
ICAgIGlmIG1hcmtlcjoKLSAgICAgICAgICAgIGxldmVsID0gbWFya2VyLmFyZ3NbMF0KKyAgICBk
ZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgorICAgICAgICBjb25maWcuYWRkaW5pdmFsdWVf
bGluZSgKKyAgICAgICAgICAgICJtYXJrZXJzIiwgImVudihuYW1lKTogbWFyayB0ZXN0IHRvIHJ1
biBvbmx5IG9uIG5hbWVkIGVudmlyb25tZW50IgorICAgICAgICApCiAKLSAgICAgICAgIyBieSB0
aGlzOgotICAgICAgICBtYXJrZXIgPSBpdGVtLmdldF9jbG9zZXN0X21hcmtlcigibG9nX2xldmVs
IikKLSAgICAgICAgaWYgbWFya2VyOgotICAgICAgICAgICAgbGV2ZWwgPSBtYXJrZXIuYXJnc1sw
XQogCi0yLiBNYXJrcyBjb21wb3NlIGFkZGl0aXZlLiBFLmcuIGBgc2tpcGlmKGNvbmRpdGlvbilg
YCBtYXJrcyBtZWFucyB5b3UganVzdCB3YW50IHRvIGV2YWx1YXRlIGFsbCBvZiB0aGVtLAotb3Jk
ZXIgZG9lc24ndCBldmVuIG1hdHRlci4gWW91IHByb2JhYmx5IHdhbnQgdG8gdGhpbmsgb2YgeW91
ciBtYXJrcyBhcyBhIHNldCBoZXJlLgorUmVnaXN0ZXJlZCBtYXJrcyBhcHBlYXIgaW4gcHl0ZXN0
J3MgaGVscCB0ZXh0IGFuZCBkbyBub3QgZW1pdCB3YXJuaW5ncyAoc2VlIHRoZSBuZXh0IHNlY3Rp
b24pLiBJdAoraXMgcmVjb21tZW5kZWQgdGhhdCB0aGlyZC1wYXJ0eSBwbHVnaW5zIGFsd2F5cyA6
cmVmOmByZWdpc3RlciB0aGVpciBtYXJrZXJzIDxyZWdpc3RlcmluZy1tYXJrZXJzPmAuCiAKLSAg
IEluIHRoaXMgY2FzZSBpdGVyYXRlIG92ZXIgZWFjaCBtYXJrIGFuZCBoYW5kbGUgdGhlaXIgYGAq
YXJnc2BgIGFuZCBgYCoqa3dhcmdzYGAgaW5kaXZpZHVhbGx5LgorLi4gX3Vua25vd24tbWFya3M6
CiAKLSAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KK1JhaXNpbmcgZXJyb3JzIG9uIHVua25vd24g
bWFya3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICAgICAjIHJlcGxh
Y2UgdGhpcwotICAgICAgICBza2lwaWYgPSBpdGVtLmdldF9tYXJrZXIoInNraXBpZiIpCi0gICAg
ICAgIGlmIHNraXBpZjoKLSAgICAgICAgICAgIGZvciBjb25kaXRpb24gaW4gc2tpcGlmLmFyZ3M6
Ci0gICAgICAgICAgICAgICAgIyBldmFsIGNvbmRpdGlvbgotICAgICAgICAgICAgICAgIC4uLgor
VW5yZWdpc3RlcmVkIG1hcmtzIGFwcGxpZWQgd2l0aCB0aGUgYGBAcHl0ZXN0Lm1hcmsubmFtZV9v
Zl90aGVfbWFya2BgIGRlY29yYXRvcgord2lsbCBhbHdheXMgZW1pdCBhIHdhcm5pbmcgaW4gb3Jk
ZXIgdG8gYXZvaWQgc2lsZW50bHkgZG9pbmcgc29tZXRoaW5nCitzdXJwcmlzaW5nIGR1ZSB0byBt
aXN0eXBlZCBuYW1lcy4gQXMgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB5b3Ug
Y2FuIGRpc2FibGUKK3RoZSB3YXJuaW5nIGZvciBjdXN0b20gbWFya3MgYnkgcmVnaXN0ZXJpbmcg
dGhlbSBpbiB5b3VyIGBgcHl0ZXN0LmluaWBgIGZpbGUgb3IKK3VzaW5nIGEgY3VzdG9tIGBgcHl0
ZXN0X2NvbmZpZ3VyZWBgIGhvb2suCiAKLSAgICAgICAgIyBieSB0aGlzOgotICAgICAgICBmb3Ig
c2tpcGlmIGluIGl0ZW0uaXRlcl9tYXJrZXJzKCJza2lwaWYiKToKLSAgICAgICAgICAgIGNvbmRp
dGlvbiA9IHNraXBpZi5hcmdzWzBdCi0gICAgICAgICAgICAjIGV2YWwgY29uZGl0aW9uCitXaGVu
IHRoZSBgYC0tc3RyaWN0LW1hcmtlcnNgYCBjb21tYW5kLWxpbmUgZmxhZyBpcyBwYXNzZWQsIGFu
eSB1bmtub3duIG1hcmtzIGFwcGxpZWQKK3dpdGggdGhlIGBgQHB5dGVzdC5tYXJrLm5hbWVfb2Zf
dGhlX21hcmtgYCBkZWNvcmF0b3Igd2lsbCB0cmlnZ2VyIGFuIGVycm9yLiBZb3UgY2FuCitlbmZv
cmNlIHRoaXMgdmFsaWRhdGlvbiBpbiB5b3VyIHByb2plY3QgYnkgYWRkaW5nIGBgLS1zdHJpY3Qt
bWFya2Vyc2BgIHRvIGBgYWRkb3B0c2BgOgogCisuLiBjb2RlLWJsb2NrOjogaW5pCiAKLUlmIHlv
dSBhcmUgdW5zdXJlIG9yIGhhdmUgYW55IHF1ZXN0aW9ucywgcGxlYXNlIGNvbnNpZGVyIG9wZW5p
bmcKLWBhbiBpc3N1ZSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vl
cz5gXy4KLQotUmVsYXRlZCBpc3N1ZXMKLX5+fn5+fn5+fn5+fn5+Ci0KLUhlcmUgaXMgYSBub24t
ZXhoYXVzdGl2ZSBsaXN0IG9mIGlzc3VlcyBmaXhlZCBieSB0aGUgbmV3IGltcGxlbWVudGF0aW9u
OgotCi0qIE1hcmtzIGRvbid0IHBpY2sgdXAgbmVzdGVkIGNsYXNzZXMgKGAjMTk5IDxodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzE5OT5gXykuCi0KLSogbWFya2Vy
cyBzdGFpbnMgb24gYWxsIHJlbGF0ZWQgY2xhc3NlcyAoYCM1NjggPGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTY4PmBfKS4KLQotKiBjb21iaW5pbmcgbWFya3Mg
LSBhcmdzIGFuZCBrd2FyZ3MgY2FsY3VsYXRpb24gKGAjMjg5NyA8aHR0cHM6Ly9naXRodWIuY29t
L3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yODk3PmBfKS4KLQotKiBgYHJlcXVlc3Qubm9kZS5n
ZXRfbWFya2VyKCduYW1lJylgYCByZXR1cm5zIGBgTm9uZWBgIGZvciBtYXJrZXJzIGFwcGxpZWQg
aW4gY2xhc3NlcyAoYCM5MDIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9p
c3N1ZXMvOTAyPmBfKS4KLQotKiBtYXJrcyBhcHBsaWVkIGluIHBhcmFtZXRyaXplIGFyZSBzdG9y
ZWQgYXMgbWFya2RlY29yYXRvciAoYCMyNDAwIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzI0MDA+YF8pLgotCi0qIGZpeCBtYXJrZXIgaW50ZXJhY3Rpb24gaW4g
YSBiYWNrd2FyZCBpbmNvbXBhdGlibGUgd2F5IChgIzE2NzAgPGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTY3MD5gXykuCi0KLSogUmVmYWN0b3IgbWFya3MgdG8g
Z2V0IHJpZCBvZiB0aGUgY3VycmVudCAibWFya3MgdHJhbnNmZXIiIG1lY2hhbmlzbSAoYCMyMzYz
IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIzNjM+YF8pLgot
Ci0qIEludHJvZHVjZSBGdW5jdGlvbkRlZmluaXRpb24gbm9kZSwgdXNlIGl0IGluIGdlbmVyYXRl
X3Rlc3RzIChgIzI1MjIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1
ZXMvMjUyMj5gXykuCi0KLSogcmVtb3ZlIG5hbWVkIG1hcmtlciBhdHRyaWJ1dGVzIGFuZCBjb2xs
ZWN0IG1hcmtlcnMgaW4gaXRlbXMgKGAjODkxIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weXRlc3QvaXNzdWVzLzg5MT5gXykuCi0KLSogc2tpcGlmIG1hcmsgZnJvbSBwYXJhbWV0cml6
ZSBoaWRlcyBtb2R1bGUgbGV2ZWwgc2tpcGlmIG1hcmsgKGAjMTU0MCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNTQwPmBfKS4KLQotKiBza2lwaWYgKyBwYXJh
bWV0cml6ZSBub3Qgc2tpcHBpbmcgdGVzdHMgKGAjMTI5NiA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xMjk2PmBfKS4KLQotKiBtYXJrZXIgdHJhbnNmZXIgaW5j
b21wYXRpYmxlIHdpdGggaW5oZXJpdGFuY2UgKGAjNTM1IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzUzNT5gXykuCi0KLU1vcmUgZGV0YWlscyBjYW4gYmUgZm91
bmQgaW4gdGhlIGBvcmlnaW5hbCBQUiA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0
ZXN0L3B1bGwvMzMxNz5gXy4KLQotLi4gbm90ZTo6Ci0KLSAgICBpbiBhIGZ1dHVyZSBtYWpvciBy
ZWxhc2Ugb2YgcHl0ZXN0IHdlIHdpbGwgaW50cm9kdWNlIGNsYXNzIGJhc2VkIG1hcmtlcnMsCi0g
ICAgYXQgd2hpY2ggcG9pbnRzIG1hcmtlcnMgd2lsbCBubyBsb25nZXIgYmUgbGltaXRlZCB0byBp
bnN0YW5jZXMgb2YgOnB5OmNsYXNzOmBNYXJrYAorICAgIFtweXRlc3RdCisgICAgYWRkb3B0cyA9
IC0tc3RyaWN0LW1hcmtlcnMKKyAgICBtYXJrZXJzID0KKyAgICAgICAgc2xvdzogbWFya3MgdGVz
dHMgYXMgc2xvdyAoZGVzZWxlY3Qgd2l0aCAnLW0gIm5vdCBzbG93IicpCisgICAgICAgIHNlcmlh
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21vbmtleXBhdGNoLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9tb25rZXlwYXRjaC5yc3QKaW5kZXggMWE2OWMzYTQyOWQyLi45NDgwZjAw
OGY3Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9tb25rZXlwYXRjaC5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21vbmtleXBhdGNoLnJzdApAQCAtOCw0NiArOCwyMTggQEAg
U29tZXRpbWVzIHRlc3RzIG5lZWQgdG8gaW52b2tlIGZ1bmN0aW9uYWxpdHkgd2hpY2ggZGVwZW5k
cwogb24gZ2xvYmFsIHNldHRpbmdzIG9yIHdoaWNoIGludm9rZXMgY29kZSB3aGljaCBjYW5ub3Qg
YmUgZWFzaWx5CiB0ZXN0ZWQgc3VjaCBhcyBuZXR3b3JrIGFjY2Vzcy4gIFRoZSBgYG1vbmtleXBh
dGNoYGAgZml4dHVyZQogaGVscHMgeW91IHRvIHNhZmVseSBzZXQvZGVsZXRlIGFuIGF0dHJpYnV0
ZSwgZGljdGlvbmFyeSBpdGVtIG9yCi1lbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0byBtb2RpZnkg
YGBzeXMucGF0aGBgIGZvciBpbXBvcnRpbmcuCitlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgdG8g
bW9kaWZ5IGBgc3lzLnBhdGhgYCBmb3IgaW1wb3J0aW5nLgorCitUaGUgYGBtb25rZXlwYXRjaGBg
IGZpeHR1cmUgcHJvdmlkZXMgdGhlc2UgaGVscGVyIG1ldGhvZHMgZm9yIHNhZmVseSBwYXRjaGlu
ZyBhbmQgbW9ja2luZworZnVuY3Rpb25hbGl0eSBpbiB0ZXN0czoKKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlLCByYWlz
aW5nPVRydWUpCisgICAgbW9ua2V5cGF0Y2guZGVsYXR0cihvYmosIG5hbWUsIHJhaXNpbmc9VHJ1
ZSkKKyAgICBtb25rZXlwYXRjaC5zZXRpdGVtKG1hcHBpbmcsIG5hbWUsIHZhbHVlKQorICAgIG1v
bmtleXBhdGNoLmRlbGl0ZW0ob2JqLCBuYW1lLCByYWlzaW5nPVRydWUpCisgICAgbW9ua2V5cGF0
Y2guc2V0ZW52KG5hbWUsIHZhbHVlLCBwcmVwZW5kPUZhbHNlKQorICAgIG1vbmtleXBhdGNoLmRl
bGVudihuYW1lLCByYWlzaW5nPVRydWUpCisgICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5k
KHBhdGgpCisgICAgbW9ua2V5cGF0Y2guY2hkaXIocGF0aCkKKworQWxsIG1vZGlmaWNhdGlvbnMg
d2lsbCBiZSB1bmRvbmUgYWZ0ZXIgdGhlIHJlcXVlc3RpbmcKK3Rlc3QgZnVuY3Rpb24gb3IgZml4
dHVyZSBoYXMgZmluaXNoZWQuIFRoZSBgYHJhaXNpbmdgYAorcGFyYW1ldGVyIGRldGVybWluZXMg
aWYgYSBgYEtleUVycm9yYGAgb3IgYGBBdHRyaWJ1dGVFcnJvcmBgCit3aWxsIGJlIHJhaXNlZCBp
ZiB0aGUgdGFyZ2V0IG9mIHRoZSBzZXQvZGVsZXRpb24gb3BlcmF0aW9uIGRvZXMgbm90IGV4aXN0
LgorCitDb25zaWRlciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvczoKKworMS4gTW9kaWZ5aW5nIHRo
ZSBiZWhhdmlvciBvZiBhIGZ1bmN0aW9uIG9yIHRoZSBwcm9wZXJ0eSBvZiBhIGNsYXNzIGZvciBh
IHRlc3QgZS5nLgordGhlcmUgaXMgYW4gQVBJIGNhbGwgb3IgZGF0YWJhc2UgY29ubmVjdGlvbiB5
b3Ugd2lsbCBub3QgbWFrZSBmb3IgYSB0ZXN0IGJ1dCB5b3Uga25vdword2hhdCB0aGUgZXhwZWN0
ZWQgb3V0cHV0IHNob3VsZCBiZS4gVXNlIDpweTptZXRoOmBtb25rZXlwYXRjaC5zZXRhdHRyIDxN
b25rZXlQYXRjaC5zZXRhdHRyPmAgdG8gcGF0Y2ggdGhlCitmdW5jdGlvbiBvciBwcm9wZXJ0eSB3
aXRoIHlvdXIgZGVzaXJlZCB0ZXN0aW5nIGJlaGF2aW9yLiBUaGlzIGNhbiBpbmNsdWRlIHlvdXIg
b3duIGZ1bmN0aW9ucy4KK1VzZSA6cHk6bWV0aDpgbW9ua2V5cGF0Y2guZGVsYXR0ciA8TW9ua2V5
UGF0Y2guZGVsYXR0cj5gIHRvIHJlbW92ZSB0aGUgZnVuY3Rpb24gb3IgcHJvcGVydHkgZm9yIHRo
ZSB0ZXN0LgorCisyLiBNb2RpZnlpbmcgdGhlIHZhbHVlcyBvZiBkaWN0aW9uYXJpZXMgZS5nLiB5
b3UgaGF2ZSBhIGdsb2JhbCBjb25maWd1cmF0aW9uIHRoYXQKK3lvdSB3YW50IHRvIG1vZGlmeSBm
b3IgY2VydGFpbiB0ZXN0IGNhc2VzLiBVc2UgOnB5Om1ldGg6YG1vbmtleXBhdGNoLnNldGl0ZW0g
PE1vbmtleVBhdGNoLnNldGl0ZW0+YCB0byBwYXRjaCB0aGUKK2RpY3Rpb25hcnkgZm9yIHRoZSB0
ZXN0LiA6cHk6bWV0aDpgbW9ua2V5cGF0Y2guZGVsaXRlbSA8TW9ua2V5UGF0Y2guZGVsaXRlbT5g
IGNhbiBiZSB1c2VkIHRvIHJlbW92ZSBpdGVtcy4KKworMy4gTW9kaWZ5aW5nIGVudmlyb25tZW50
IHZhcmlhYmxlcyBmb3IgYSB0ZXN0IGUuZy4gdG8gdGVzdCBwcm9ncmFtIGJlaGF2aW9yIGlmIGFu
CitlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBtaXNzaW5nLCBvciB0byBzZXQgbXVsdGlwbGUgdmFs
dWVzIHRvIGEga25vd24gdmFyaWFibGUuCis6cHk6bWV0aDpgbW9ua2V5cGF0Y2guc2V0ZW52IDxN
b25rZXlQYXRjaC5zZXRlbnY+YCBhbmQgOnB5Om1ldGg6YG1vbmtleXBhdGNoLmRlbGVudiA8TW9u
a2V5UGF0Y2guZGVsZW52PmAgY2FuIGJlIHVzZWQgZm9yCit0aGVzZSBwYXRjaGVzLgorCis0LiBV
c2UgYGBtb25rZXlwYXRjaC5zZXRlbnYoIlBBVEgiLCB2YWx1ZSwgcHJlcGVuZD1vcy5wYXRoc2Vw
KWBgIHRvIG1vZGlmeSBgYCRQQVRIYGAsIGFuZAorOnB5Om1ldGg6YG1vbmtleXBhdGNoLmNoZGly
IDxNb25rZXlQYXRjaC5jaGRpcj5gIHRvIGNoYW5nZSB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVu
dCB3b3JraW5nIGRpcmVjdG9yeQorZHVyaW5nIGEgdGVzdC4KKworNS4gVXNlIDpweTptZXRoOmBt
b25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQgPE1vbmtleVBhdGNoLnN5c3BhdGhfcHJlcGVuZD5g
IHRvIG1vZGlmeSBgYHN5cy5wYXRoYGAgd2hpY2ggd2lsbCBhbHNvCitjYWxsIGBgcGtnX3Jlc291
cmNlcy5maXh1cF9uYW1lc3BhY2VfcGFja2FnZXNgYCBhbmQgOnB5OmZ1bmM6YGltcG9ydGxpYi5p
bnZhbGlkYXRlX2NhY2hlc2AuCisKIFNlZSB0aGUgYG1vbmtleXBhdGNoIGJsb2cgcG9zdGBfIGZv
ciBzb21lIGludHJvZHVjdGlvbiBtYXRlcmlhbAogYW5kIGEgZGlzY3Vzc2lvbiBvZiBpdHMgbW90
aXZhdGlvbi4KIAogLi4gX2Btb25rZXlwYXRjaCBibG9nIHBvc3RgOiBodHRwOi8vdGV0YW1hcC53
b3JkcHJlc3MuY29tLzIwMDkvMDMvMDMvbW9ua2V5cGF0Y2hpbmctaW4tdW5pdC10ZXN0cy1kb25l
LXJpZ2h0LwogCi0KIFNpbXBsZSBleGFtcGxlOiBtb25rZXlwYXRjaGluZyBmdW5jdGlvbnMKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JZiB5b3Ugd2FudCB0byBwcmV0
ZW5kIHRoYXQgYGBvcy5leHBhbmR1c2VyYGAgcmV0dXJucyBhIGNlcnRhaW4KLWRpcmVjdG9yeSwg
eW91IGNhbiB1c2UgdGhlIDpweTptZXRoOmBtb25rZXlwYXRjaC5zZXRhdHRyYCBtZXRob2QgdG8K
LXBhdGNoIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcgaW50byBhIGZ1bmN0aW9uIHdoaWNo
IHVzZXMgaXQ6OgorQ29uc2lkZXIgYSBzY2VuYXJpbyB3aGVyZSB5b3UgYXJlIHdvcmtpbmcgd2l0
aCB1c2VyIGRpcmVjdG9yaWVzLiBJbiB0aGUgY29udGV4dCBvZgordGVzdGluZywgeW91IGRvIG5v
dCB3YW50IHlvdXIgdGVzdCB0byBkZXBlbmQgb24gdGhlIHJ1bm5pbmcgdXNlci4gYGBtb25rZXlw
YXRjaGBgCitjYW4gYmUgdXNlZCB0byBwYXRjaCBmdW5jdGlvbnMgZGVwZW5kZW50IG9uIHRoZSB1
c2VyIHRvIGFsd2F5cyByZXR1cm4gYQorc3BlY2lmaWMgdmFsdWUuCiAKLSAgICAjIGNvbnRlbnQg
b2YgdGVzdF9tb2R1bGUucHkKLSAgICBpbXBvcnQgb3MucGF0aAotICAgIGRlZiBnZXRzc2goKTog
IyBwc2V1ZG8gYXBwbGljYXRpb24gY29kZQotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKG9z
LnBhdGguZXhwYW5kdXNlcigifmFkbWluIiksICcuc3NoJykKK0luIHRoaXMgZXhhbXBsZSwgOnB5
Om1ldGg6YG1vbmtleXBhdGNoLnNldGF0dHIgPE1vbmtleVBhdGNoLnNldGF0dHI+YCBpcyB1c2Vk
IHRvIHBhdGNoIGBgUGF0aC5ob21lYGAKK3NvIHRoYXQgdGhlIGtub3duIHRlc3RpbmcgcGF0aCBg
YFBhdGgoIi9hYmMiKWBgIGlzIGFsd2F5cyB1c2VkIHdoZW4gdGhlIHRlc3QgaXMgcnVuLgorVGhp
cyByZW1vdmVzIGFueSBkZXBlbmRlbmN5IG9uIHRoZSBydW5uaW5nIHVzZXIgZm9yIHRlc3Rpbmcg
cHVycG9zZXMuCis6cHk6bWV0aDpgbW9ua2V5cGF0Y2guc2V0YXR0ciA8TW9ua2V5UGF0Y2guc2V0
YXR0cj5gIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZnVuY3Rpb24gd2hpY2ggd2lsbCB1c2UK
K3RoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGNhbGxlZC4KK0FmdGVyIHRoZSB0ZXN0IGZ1bmN0aW9u
IGZpbmlzaGVzIHRoZSBgYFBhdGguaG9tZWBgIG1vZGlmaWNhdGlvbiB3aWxsIGJlIHVuZG9uZS4K
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiB0ZXN0X21vZHVs
ZS5weSB3aXRoIHNvdXJjZSBjb2RlIGFuZCB0aGUgdGVzdAorICAgIGZyb20gcGF0aGxpYiBpbXBv
cnQgUGF0aAorCisKKyAgICBkZWYgZ2V0c3NoKCk6CisgICAgICAgICIiIlNpbXBsZSBmdW5jdGlv
biB0byByZXR1cm4gZXhwYW5kZWQgaG9tZWRpciBzc2ggcGF0aC4iIiIKKyAgICAgICAgcmV0dXJu
IFBhdGguaG9tZSgpIC8gIi5zc2giCiAKLSAgICBkZWYgdGVzdF9teXRlc3QobW9ua2V5cGF0Y2gp
OgotICAgICAgICBkZWYgbW9ja3JldHVybihwYXRoKToKLSAgICAgICAgICAgIHJldHVybiAnL2Fi
YycKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvcy5wYXRoLCAnZXhwYW5kdXNlcicsIG1v
Y2tyZXR1cm4pCi0gICAgICAgIHggPSBnZXRzc2goKQotICAgICAgICBhc3NlcnQgeCA9PSAnL2Fi
Yy8uc3NoJwogCi1IZXJlIG91ciB0ZXN0IGZ1bmN0aW9uIG1vbmtleXBhdGNoZXMgYGBvcy5wYXRo
LmV4cGFuZHVzZXJgYCBhbmQKLXRoZW4gY2FsbHMgaW50byBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMg
aXQuICBBZnRlciB0aGUgdGVzdCBmdW5jdGlvbgotZmluaXNoZXMgdGhlIGBgb3MucGF0aC5leHBh
bmR1c2VyYGAgbW9kaWZpY2F0aW9uIHdpbGwgYmUgdW5kb25lLgorICAgIGRlZiB0ZXN0X2dldHNz
aChtb25rZXlwYXRjaCk6CisgICAgICAgICMgbW9ja2VkIHJldHVybiBmdW5jdGlvbiB0byByZXBs
YWNlIFBhdGguaG9tZQorICAgICAgICAjIGFsd2F5cyByZXR1cm4gJy9hYmMnCisgICAgICAgIGRl
ZiBtb2NrcmV0dXJuKCk6CisgICAgICAgICAgICByZXR1cm4gUGF0aCgiL2FiYyIpCiAKLWV4YW1w
bGU6IHByZXZlbnRpbmcgInJlcXVlc3RzIiBmcm9tIHJlbW90ZSBvcGVyYXRpb25zCisgICAgICAg
ICMgQXBwbGljYXRpb24gb2YgdGhlIG1vbmtleXBhdGNoIHRvIHJlcGxhY2UgUGF0aC5ob21lCisg
ICAgICAgICMgd2l0aCB0aGUgYmVoYXZpb3Igb2YgbW9ja3JldHVybiBkZWZpbmVkIGFib3ZlLgor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKFBhdGgsICJob21lIiwgbW9ja3JldHVybikKKwor
ICAgICAgICAjIENhbGxpbmcgZ2V0c3NoKCkgd2lsbCB1c2UgbW9ja3JldHVybiBpbiBwbGFjZSBv
ZiBQYXRoLmhvbWUKKyAgICAgICAgIyBmb3IgdGhpcyB0ZXN0IHdpdGggdGhlIG1vbmtleXBhdGNo
LgorICAgICAgICB4ID0gZ2V0c3NoKCkKKyAgICAgICAgYXNzZXJ0IHggPT0gUGF0aCgiL2FiYy8u
c3NoIikKKworTW9ua2V5cGF0Y2hpbmcgcmV0dXJuZWQgb2JqZWN0czogYnVpbGRpbmcgbW9jayBj
bGFzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAorOnB5Om1ldGg6YG1vbmtleXBhdGNoLnNldGF0dHIgPE1vbmtleVBhdGNoLnNldGF0
dHI+YCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNsYXNzZXMgdG8gbW9jayByZXR1
cm5lZAorb2JqZWN0cyBmcm9tIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHZhbHVlcy4KK0ltYWdpbmUg
YSBzaW1wbGUgZnVuY3Rpb24gdG8gdGFrZSBhbiBBUEkgdXJsIGFuZCByZXR1cm4gdGhlIGpzb24g
cmVzcG9uc2UuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudHMgb2Yg
YXBwLnB5LCBhIHNpbXBsZSBBUEkgcmV0cmlldmFsIGV4YW1wbGUKKyAgICBpbXBvcnQgcmVxdWVz
dHMKKworCisgICAgZGVmIGdldF9qc29uKHVybCk6CisgICAgICAgICIiIlRha2VzIGEgVVJMLCBh
bmQgcmV0dXJucyB0aGUgSlNPTi4iIiIKKyAgICAgICAgciA9IHJlcXVlc3RzLmdldCh1cmwpCisg
ICAgICAgIHJldHVybiByLmpzb24oKQorCitXZSBuZWVkIHRvIG1vY2sgYGByYGAsIHRoZSByZXR1
cm5lZCByZXNwb25zZSBvYmplY3QgZm9yIHRlc3RpbmcgcHVycG9zZXMuCitUaGUgbW9jayBvZiBg
YHJgYCBuZWVkcyBhIGBgLmpzb24oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgZGljdGlvbmFy
eS4KK1RoaXMgY2FuIGJlIGRvbmUgaW4gb3VyIHRlc3QgZmlsZSBieSBkZWZpbmluZyBhIGNsYXNz
IHRvIHJlcHJlc2VudCBgYHJgYC4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBj
b250ZW50cyBvZiB0ZXN0X2FwcC5weSwgYSBzaW1wbGUgdGVzdCBmb3Igb3VyIEFQSSByZXRyaWV2
YWwKKyAgICAjIGltcG9ydCByZXF1ZXN0cyBmb3IgdGhlIHB1cnBvc2VzIG9mIG1vbmtleXBhdGNo
aW5nCisgICAgaW1wb3J0IHJlcXVlc3RzCisKKyAgICAjIG91ciBhcHAucHkgdGhhdCBpbmNsdWRl
cyB0aGUgZ2V0X2pzb24oKSBmdW5jdGlvbgorICAgICMgdGhpcyBpcyB0aGUgcHJldmlvdXMgY29k
ZSBibG9jayBleGFtcGxlCisgICAgaW1wb3J0IGFwcAorCisgICAgIyBjdXN0b20gY2xhc3MgdG8g
YmUgdGhlIG1vY2sgcmV0dXJuIHZhbHVlCisgICAgIyB3aWxsIG92ZXJyaWRlIHRoZSByZXF1ZXN0
cy5SZXNwb25zZSByZXR1cm5lZCBmcm9tIHJlcXVlc3RzLmdldAorICAgIGNsYXNzIE1vY2tSZXNw
b25zZToKKworICAgICAgICAjIG1vY2sganNvbigpIG1ldGhvZCBhbHdheXMgcmV0dXJucyBhIHNw
ZWNpZmljIHRlc3RpbmcgZGljdGlvbmFyeQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAg
IGRlZiBqc29uKCk6CisgICAgICAgICAgICByZXR1cm4geyJtb2NrX2tleSI6ICJtb2NrX3Jlc3Bv
bnNlIn0KKworCisgICAgZGVmIHRlc3RfZ2V0X2pzb24obW9ua2V5cGF0Y2gpOgorCisgICAgICAg
ICMgQW55IGFyZ3VtZW50cyBtYXkgYmUgcGFzc2VkIGFuZCBtb2NrX2dldCgpIHdpbGwgYWx3YXlz
IHJldHVybiBvdXIKKyAgICAgICAgIyBtb2NrZWQgb2JqZWN0LCB3aGljaCBvbmx5IGhhcyB0aGUg
Lmpzb24oKSBtZXRob2QuCisgICAgICAgIGRlZiBtb2NrX2dldCgqYXJncywgKiprd2FyZ3MpOgor
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXNwb25zZSgpCisKKyAgICAgICAgIyBhcHBseSB0aGUg
bW9ua2V5cGF0Y2ggZm9yIHJlcXVlc3RzLmdldCB0byBtb2NrX2dldAorICAgICAgICBtb25rZXlw
YXRjaC5zZXRhdHRyKHJlcXVlc3RzLCAiZ2V0IiwgbW9ja19nZXQpCisKKyAgICAgICAgIyBhcHAu
Z2V0X2pzb24sIHdoaWNoIGNvbnRhaW5zIHJlcXVlc3RzLmdldCwgdXNlcyB0aGUgbW9ua2V5cGF0
Y2gKKyAgICAgICAgcmVzdWx0ID0gYXBwLmdldF9qc29uKCJodHRwczovL2Zha2V1cmwiKQorICAg
ICAgICBhc3NlcnQgcmVzdWx0WyJtb2NrX2tleSJdID09ICJtb2NrX3Jlc3BvbnNlIgorCisKK2Bg
bW9ua2V5cGF0Y2hgYCBhcHBsaWVzIHRoZSBtb2NrIGZvciBgYHJlcXVlc3RzLmdldGBgIHdpdGgg
b3VyIGBgbW9ja19nZXRgYCBmdW5jdGlvbi4KK1RoZSBgYG1vY2tfZ2V0YGAgZnVuY3Rpb24gcmV0
dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgYGBNb2NrUmVzcG9uc2VgYCBjbGFzcywgd2hpY2gKK2hh
cyBhIGBganNvbigpYGAgbWV0aG9kIGRlZmluZWQgdG8gcmV0dXJuIGEga25vd24gdGVzdGluZyBk
aWN0aW9uYXJ5IGFuZCBkb2VzIG5vdAorcmVxdWlyZSBhbnkgb3V0c2lkZSBBUEkgY29ubmVjdGlv
bi4KKworWW91IGNhbiBidWlsZCB0aGUgYGBNb2NrUmVzcG9uc2VgYCBjbGFzcyB3aXRoIHRoZSBh
cHByb3ByaWF0ZSBkZWdyZWUgb2YgY29tcGxleGl0eSBmb3IKK3RoZSBzY2VuYXJpbyB5b3UgYXJl
IHRlc3RpbmcuIEZvciBpbnN0YW5jZSwgaXQgY291bGQgaW5jbHVkZSBhbiBgYG9rYGAgcHJvcGVy
dHkgdGhhdAorYWx3YXlzIHJldHVybnMgYGBUcnVlYGAsIG9yIHJldHVybiBkaWZmZXJlbnQgdmFs
dWVzIGZyb20gdGhlIGBganNvbigpYGAgbW9ja2VkIG1ldGhvZAorYmFzZWQgb24gaW5wdXQgc3Ry
aW5ncy4KKworVGhpcyBtb2NrIGNhbiBiZSBzaGFyZWQgYWNyb3NzIHRlc3RzIHVzaW5nIGEgYGBm
aXh0dXJlYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudHMgb2Yg
dGVzdF9hcHAucHksIGEgc2ltcGxlIHRlc3QgZm9yIG91ciBBUEkgcmV0cmlldmFsCisgICAgaW1w
b3J0IHB5dGVzdAorICAgIGltcG9ydCByZXF1ZXN0cworCisgICAgIyBhcHAucHkgdGhhdCBpbmNs
dWRlcyB0aGUgZ2V0X2pzb24oKSBmdW5jdGlvbgorICAgIGltcG9ydCBhcHAKKworICAgICMgY3Vz
dG9tIGNsYXNzIHRvIGJlIHRoZSBtb2NrIHJldHVybiB2YWx1ZSBvZiByZXF1ZXN0cy5nZXQoKQor
ICAgIGNsYXNzIE1vY2tSZXNwb25zZToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBk
ZWYganNvbigpOgorICAgICAgICAgICAgcmV0dXJuIHsibW9ja19rZXkiOiAibW9ja19yZXNwb25z
ZSJ9CisKKworICAgICMgbW9ua2V5cGF0Y2hlZCByZXF1ZXN0cy5nZXQgbW92ZWQgdG8gYSBmaXh0
dXJlCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIG1vY2tfcmVzcG9uc2UobW9ua2V5cGF0
Y2gpOgorICAgICAgICAiIiJSZXF1ZXN0cy5nZXQoKSBtb2NrZWQgdG8gcmV0dXJuIHsnbW9ja19r
ZXknOidtb2NrX3Jlc3BvbnNlJ30uIiIiCisKKyAgICAgICAgZGVmIG1vY2tfZ2V0KCphcmdzLCAq
Kmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gTW9ja1Jlc3BvbnNlKCkKKworICAgICAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKHJlcXVlc3RzLCAiZ2V0IiwgbW9ja19nZXQpCisKKworICAgICMg
bm90aWNlIG91ciB0ZXN0IHVzZXMgdGhlIGN1c3RvbSBmaXh0dXJlIGluc3RlYWQgb2YgbW9ua2V5
cGF0Y2ggZGlyZWN0bHkKKyAgICBkZWYgdGVzdF9nZXRfanNvbihtb2NrX3Jlc3BvbnNlKToKKyAg
ICAgICAgcmVzdWx0ID0gYXBwLmdldF9qc29uKCJodHRwczovL2Zha2V1cmwiKQorICAgICAgICBh
c3NlcnQgcmVzdWx0WyJtb2NrX2tleSJdID09ICJtb2NrX3Jlc3BvbnNlIgorCisKK0Z1cnRoZXJt
b3JlLCBpZiB0aGUgbW9jayB3YXMgZGVzaWduZWQgdG8gYmUgYXBwbGllZCB0byBhbGwgdGVzdHMs
IHRoZSBgYGZpeHR1cmVgYCBjb3VsZAorYmUgbW92ZWQgdG8gYSBgYGNvbmZ0ZXN0LnB5YGAgZmls
ZSBhbmQgdXNlIHRoZSB3aXRoIGBgYXV0b3VzZT1UcnVlYGAgb3B0aW9uLgorCisKK0dsb2JhbCBw
YXRjaCBleGFtcGxlOiBwcmV2ZW50aW5nICJyZXF1ZXN0cyIgZnJvbSByZW1vdGUgb3BlcmF0aW9u
cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKIElmIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlICJyZXF1ZXN0cyIgbGli
cmFyeSBmcm9tIHBlcmZvcm1pbmcgaHR0cAotcmVxdWVzdHMgaW4gYWxsIHlvdXIgdGVzdHMsIHlv
dSBjYW4gZG86OgorcmVxdWVzdHMgaW4gYWxsIHlvdXIgdGVzdHMsIHlvdSBjYW4gZG86CiAKLSAg
ICAjIGNvbnRlbnQgb2YgY29uZnRlc3QucHkKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAg
ICMgY29udGVudHMgb2YgY29uZnRlc3QucHkKICAgICBpbXBvcnQgcHl0ZXN0CisKKwogICAgIEBw
eXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCiAgICAgZGVmIG5vX3JlcXVlc3RzKG1vbmtleXBh
dGNoKToKKyAgICAgICAgIiIiUmVtb3ZlIHJlcXVlc3RzLnNlc3Npb25zLlNlc3Npb24ucmVxdWVz
dCBmb3IgYWxsIHRlc3RzLiIiIgogICAgICAgICBtb25rZXlwYXRjaC5kZWxhdHRyKCJyZXF1ZXN0
cy5zZXNzaW9ucy5TZXNzaW9uLnJlcXVlc3QiKQogCiBUaGlzIGF1dG91c2UgZml4dHVyZSB3aWxs
IGJlIGV4ZWN1dGVkIGZvciBlYWNoIHRlc3QgZnVuY3Rpb24gYW5kIGl0CkBAIC04MSw2ICsyNTMs
MTg3IEBAIHNvIHRoYXQgYW55IGF0dGVtcHRzIHdpdGhpbiB0ZXN0cyB0byBjcmVhdGUgaHR0cCBy
ZXF1ZXN0cyB3aWxsIGZhaWwuCiAgICAgU2VlIGlzc3VlIGAjMzI5MCA8aHR0cHM6Ly9naXRodWIu
Y29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMjkwPmBfIGZvciBkZXRhaWxzLgogCiAKK01v
bmtleXBhdGNoaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGVudmlyb25tZW50IHZh
cmlhYmxlcyB5b3Ugb2Z0ZW4gbmVlZCB0byBzYWZlbHkgY2hhbmdlIHRoZSB2YWx1ZXMKK29yIGRl
bGV0ZSB0aGVtIGZyb20gdGhlIHN5c3RlbSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gYGBtb25rZXlw
YXRjaGBgIHByb3ZpZGVzIGEgbWVjaGFuaXNtCit0byBkbyB0aGlzIHVzaW5nIHRoZSBgYHNldGVu
dmBgIGFuZCBgYGRlbGVudmBgIG1ldGhvZC4gT3VyIGV4YW1wbGUgY29kZSB0byB0ZXN0OgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRlbnRzIG9mIG91ciBvcmlnaW5hbCBj
b2RlIGZpbGUgZS5nLiBjb2RlLnB5CisgICAgaW1wb3J0IG9zCisKKworICAgIGRlZiBnZXRfb3Nf
dXNlcl9sb3dlcigpOgorICAgICAgICAiIiJTaW1wbGUgcmV0cmlldmFsIGZ1bmN0aW9uLgorICAg
ICAgICBSZXR1cm5zIGxvd2VyY2FzZSBVU0VSIG9yIHJhaXNlcyBPU0Vycm9yLiIiIgorICAgICAg
ICB1c2VybmFtZSA9IG9zLmdldGVudigiVVNFUiIpCisKKyAgICAgICAgaWYgdXNlcm5hbWUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIlVTRVIgZW52aXJvbm1lbnQgaXMgbm90
IHNldC4iKQorCisgICAgICAgIHJldHVybiB1c2VybmFtZS5sb3dlcigpCisKK1RoZXJlIGFyZSB0
d28gcG90ZW50aWFsIHBhdGhzLiBGaXJzdCwgdGhlIGBgVVNFUmBgIGVudmlyb25tZW50IHZhcmlh
YmxlIGlzIHNldCB0byBhCit2YWx1ZS4gU2Vjb25kLCB0aGUgYGBVU0VSYGAgZW52aXJvbm1lbnQg
dmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIFVzaW5nIGBgbW9ua2V5cGF0Y2hgYAorYm90aCBwYXRo
cyBjYW4gYmUgc2FmZWx5IHRlc3RlZCB3aXRob3V0IGltcGFjdGluZyB0aGUgcnVubmluZyBlbnZp
cm9ubWVudDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiBv
dXIgdGVzdCBmaWxlIGUuZy4gdGVzdF9jb2RlLnB5CisgICAgaW1wb3J0IHB5dGVzdAorCisKKyAg
ICBkZWYgdGVzdF91cHBlcl90b19sb3dlcihtb25rZXlwYXRjaCk6CisgICAgICAgICIiIlNldCB0
aGUgVVNFUiBlbnYgdmFyIHRvIGFzc2VydCB0aGUgYmVoYXZpb3IuIiIiCisgICAgICAgIG1vbmtl
eXBhdGNoLnNldGVudigiVVNFUiIsICJUZXN0aW5nVXNlciIpCisgICAgICAgIGFzc2VydCBnZXRf
b3NfdXNlcl9sb3dlcigpID09ICJ0ZXN0aW5ndXNlciIKKworCisgICAgZGVmIHRlc3RfcmFpc2Vf
ZXhjZXB0aW9uKG1vbmtleXBhdGNoKToKKyAgICAgICAgIiIiUmVtb3ZlIHRoZSBVU0VSIGVudiB2
YXIgYW5kIGFzc2VydCBPU0Vycm9yIGlzIHJhaXNlZC4iIiIKKyAgICAgICAgbW9ua2V5cGF0Y2gu
ZGVsZW52KCJVU0VSIiwgcmFpc2luZz1GYWxzZSkKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoT1NFcnJvcik6CisgICAgICAgICAgICBfID0gZ2V0X29zX3VzZXJfbG93ZXIoKQorCitUaGlz
IGJlaGF2aW9yIGNhbiBiZSBtb3ZlZCBpbnRvIGBgZml4dHVyZWBgIHN0cnVjdHVyZXMgYW5kIHNo
YXJlZCBhY3Jvc3MgdGVzdHM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICMgY29u
dGVudHMgb2Ygb3VyIHRlc3QgZmlsZSBlLmcuIHRlc3RfY29kZS5weQorICAgIGltcG9ydCBweXRl
c3QKKworCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIG1vY2tfZW52X3VzZXIobW9ua2V5
cGF0Y2gpOgorICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlVTRVIiLCAiVGVzdGluZ1VzZXIi
KQorCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgbW9ja19lbnZfbWlzc2luZyhtb25r
ZXlwYXRjaCk6CisgICAgICAgIG1vbmtleXBhdGNoLmRlbGVudigiVVNFUiIsIHJhaXNpbmc9RmFs
c2UpCisKKworICAgICMgbm90aWNlIHRoZSB0ZXN0cyByZWZlcmVuY2UgdGhlIGZpeHR1cmVzIGZv
ciBtb2NrcworICAgIGRlZiB0ZXN0X3VwcGVyX3RvX2xvd2VyKG1vY2tfZW52X3VzZXIpOgorICAg
ICAgICBhc3NlcnQgZ2V0X29zX3VzZXJfbG93ZXIoKSA9PSAidGVzdGluZ3VzZXIiCisKKworICAg
IGRlZiB0ZXN0X3JhaXNlX2V4Y2VwdGlvbihtb2NrX2Vudl9taXNzaW5nKToKKyAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKE9TRXJyb3IpOgorICAgICAgICAgICAgXyA9IGdldF9vc191c2VyX2xv
d2VyKCkKKworCitNb25rZXlwYXRjaGluZyBkaWN0aW9uYXJpZXMKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCis6cHk6bWV0aDpgbW9ua2V5cGF0Y2guc2V0aXRlbSA8TW9ua2V5UGF0Y2gu
c2V0aXRlbT5gIGNhbiBiZSB1c2VkIHRvIHNhZmVseSBzZXQgdGhlIHZhbHVlcyBvZiBkaWN0aW9u
YXJpZXMKK3RvIHNwZWNpZmljIHZhbHVlcyBkdXJpbmcgdGVzdHMuIFRha2UgdGhpcyBzaW1wbGlm
aWVkIGNvbm5lY3Rpb24gc3RyaW5nIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24K
KworICAgICMgY29udGVudHMgb2YgYXBwLnB5IHRvIGdlbmVyYXRlIGEgc2ltcGxlIGNvbm5lY3Rp
b24gc3RyaW5nCisgICAgREVGQVVMVF9DT05GSUcgPSB7InVzZXIiOiAidXNlcjEiLCAiZGF0YWJh
c2UiOiAiZGIxIn0KKworCisgICAgZGVmIGNyZWF0ZV9jb25uZWN0aW9uX3N0cmluZyhjb25maWc9
Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZXMgYSBjb25uZWN0aW9uIHN0cmluZyBmcm9tIGlucHV0
IG9yIGRlZmF1bHRzLiIiIgorICAgICAgICBjb25maWcgPSBjb25maWcgb3IgREVGQVVMVF9DT05G
SUcKKyAgICAgICAgcmV0dXJuIGYiVXNlciBJZD17Y29uZmlnWyd1c2VyJ119OyBMb2NhdGlvbj17
Y29uZmlnWydkYXRhYmFzZSddfTsiCisKK0ZvciB0ZXN0aW5nIHB1cnBvc2VzIHdlIGNhbiBwYXRj
aCB0aGUgYGBERUZBVUxUX0NPTkZJR2BgIGRpY3Rpb25hcnkgdG8gc3BlY2lmaWMgdmFsdWVzLgor
CisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRlbnRzIG9mIHRlc3RfYXBwLnB5
CisgICAgIyBhcHAucHkgd2l0aCB0aGUgY29ubmVjdGlvbiBzdHJpbmcgZnVuY3Rpb24gKHByaW9y
IGNvZGUgYmxvY2spCisgICAgaW1wb3J0IGFwcAorCisKKyAgICBkZWYgdGVzdF9jb25uZWN0aW9u
KG1vbmtleXBhdGNoKToKKworICAgICAgICAjIFBhdGNoIHRoZSB2YWx1ZXMgb2YgREVGQVVMVF9D
T05GSUcgdG8gc3BlY2lmaWMKKyAgICAgICAgIyB0ZXN0aW5nIHZhbHVlcyBvbmx5IGZvciB0aGlz
IHRlc3QuCisgICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oYXBwLkRFRkFVTFRfQ09ORklHLCAi
dXNlciIsICJ0ZXN0X3VzZXIiKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKGFwcC5ERUZB
VUxUX0NPTkZJRywgImRhdGFiYXNlIiwgInRlc3RfZGIiKQorCisgICAgICAgICMgZXhwZWN0ZWQg
cmVzdWx0IGJhc2VkIG9uIHRoZSBtb2NrcworICAgICAgICBleHBlY3RlZCA9ICJVc2VyIElkPXRl
c3RfdXNlcjsgTG9jYXRpb249dGVzdF9kYjsiCisKKyAgICAgICAgIyB0aGUgdGVzdCB1c2VzIHRo
ZSBtb25rZXlwYXRjaGVkIGRpY3Rpb25hcnkgc2V0dGluZ3MKKyAgICAgICAgcmVzdWx0ID0gYXBw
LmNyZWF0ZV9jb25uZWN0aW9uX3N0cmluZygpCisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhw
ZWN0ZWQKKworWW91IGNhbiB1c2UgdGhlIDpweTptZXRoOmBtb25rZXlwYXRjaC5kZWxpdGVtIDxN
b25rZXlQYXRjaC5kZWxpdGVtPmAgdG8gcmVtb3ZlIHZhbHVlcy4KKworLi4gY29kZS1ibG9jazo6
IHB5dGhvbgorCisgICAgIyBjb250ZW50cyBvZiB0ZXN0X2FwcC5weQorICAgIGltcG9ydCBweXRl
c3QKKworICAgICMgYXBwLnB5IHdpdGggdGhlIGNvbm5lY3Rpb24gc3RyaW5nIGZ1bmN0aW9uCisg
ICAgaW1wb3J0IGFwcAorCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX3VzZXIobW9ua2V5cGF0Y2gp
OgorCisgICAgICAgICMgcGF0Y2ggdGhlIERFRkFVTFRfQ09ORklHIHQgYmUgbWlzc2luZyB0aGUg
J3VzZXInIGtleQorICAgICAgICBtb25rZXlwYXRjaC5kZWxpdGVtKGFwcC5ERUZBVUxUX0NPTkZJ
RywgInVzZXIiLCByYWlzaW5nPUZhbHNlKQorCisgICAgICAgICMgS2V5IGVycm9yIGV4cGVjdGVk
IGJlY2F1c2UgYSBjb25maWcgaXMgbm90IHBhc3NlZCwgYW5kIHRoZQorICAgICAgICAjIGRlZmF1
bHQgaXMgbm93IG1pc3NpbmcgdGhlICd1c2VyJyBlbnRyeS4KKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIF8gPSBhcHAuY3JlYXRlX2Nvbm5lY3Rpb25f
c3RyaW5nKCkKKworCitUaGUgbW9kdWxhcml0eSBvZiBmaXh0dXJlcyBnaXZlcyB5b3UgdGhlIGZs
ZXhpYmlsaXR5IHRvIGRlZmluZQorc2VwYXJhdGUgZml4dHVyZXMgZm9yIGVhY2ggcG90ZW50aWFs
IG1vY2sgYW5kIHJlZmVyZW5jZSB0aGVtIGluIHRoZSBuZWVkZWQgdGVzdHMuCisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KKworICAgICMgY29udGVudHMgb2YgdGVzdF9hcHAucHkKKyAgICBpbXBv
cnQgcHl0ZXN0CisKKyAgICAjIGFwcC5weSB3aXRoIHRoZSBjb25uZWN0aW9uIHN0cmluZyBmdW5j
dGlvbgorICAgIGltcG9ydCBhcHAKKworICAgICMgYWxsIG9mIHRoZSBtb2NrcyBhcmUgbW92ZWQg
aW50byBzZXBhcmF0ZWQgZml4dHVyZXMKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgbW9j
a190ZXN0X3VzZXIobW9ua2V5cGF0Y2gpOgorICAgICAgICAiIiJTZXQgdGhlIERFRkFVTFRfQ09O
RklHIHVzZXIgdG8gdGVzdF91c2VyLiIiIgorICAgICAgICBtb25rZXlwYXRjaC5zZXRpdGVtKGFw
cC5ERUZBVUxUX0NPTkZJRywgInVzZXIiLCAidGVzdF91c2VyIikKKworCisgICAgQHB5dGVzdC5m
aXh0dXJlCisgICAgZGVmIG1vY2tfdGVzdF9kYXRhYmFzZShtb25rZXlwYXRjaCk6CisgICAgICAg
ICIiIlNldCB0aGUgREVGQVVMVF9DT05GSUcgZGF0YWJhc2UgdG8gdGVzdF9kYi4iIiIKKyAgICAg
ICAgbW9ua2V5cGF0Y2guc2V0aXRlbShhcHAuREVGQVVMVF9DT05GSUcsICJkYXRhYmFzZSIsICJ0
ZXN0X2RiIikKKworCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIG1vY2tfbWlzc2luZ19k
ZWZhdWx0X3VzZXIobW9ua2V5cGF0Y2gpOgorICAgICAgICAiIiJSZW1vdmUgdGhlIHVzZXIga2V5
IGZyb20gREVGQVVMVF9DT05GSUciIiIKKyAgICAgICAgbW9ua2V5cGF0Y2guZGVsaXRlbShhcHAu
REVGQVVMVF9DT05GSUcsICJ1c2VyIiwgcmFpc2luZz1GYWxzZSkKKworCisgICAgIyB0ZXN0cyBy
ZWZlcmVuY2Ugb25seSB0aGUgZml4dHVyZSBtb2NrcyB0aGF0IGFyZSBuZWVkZWQKKyAgICBkZWYg
dGVzdF9jb25uZWN0aW9uKG1vY2tfdGVzdF91c2VyLCBtb2NrX3Rlc3RfZGF0YWJhc2UpOgorCisg
ICAgICAgIGV4cGVjdGVkID0gIlVzZXIgSWQ9dGVzdF91c2VyOyBMb2NhdGlvbj10ZXN0X2RiOyIK
KworICAgICAgICByZXN1bHQgPSBhcHAuY3JlYXRlX2Nvbm5lY3Rpb25fc3RyaW5nKCkKKyAgICAg
ICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX3Vz
ZXIobW9ja19taXNzaW5nX2RlZmF1bHRfdXNlcik6CisKKyAgICAgICAgd2l0aCBweXRlc3QucmFp
c2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIF8gPSBhcHAuY3JlYXRlX2Nvbm5lY3Rpb25fc3Ry
aW5nKCkKKworCiAuLiBjdXJyZW50bW9kdWxlOjogX3B5dGVzdC5tb25rZXlwYXRjaAogCiBBUEkg
UmVmZXJlbmNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbm9zZS5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vbm9zZS5yc3QKaW5kZXggMWY3YjdiNjM4NDQ4Li4xYWM3MGFmNmM2YjAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9ub3NlLnJzdAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vbm9zZS5yc3QKQEAgLTMsOCArMyw2IEBACiBSdW5uaW5nIHRlc3RzIHdyaXR0ZW4g
Zm9yIG5vc2UKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0uLiBp
bmNsdWRlOjogbGlua3MuaW5jCi0KIGBgcHl0ZXN0YGAgaGFzIGJhc2ljIHN1cHBvcnQgZm9yIHJ1
bm5pbmcgdGVzdHMgd3JpdHRlbiBmb3Igbm9zZV8uCiAKIC4uIF9ub3Nlc3R5bGU6CkBAIC0xMiw3
ICsxMCw5IEBAIFJ1bm5pbmcgdGVzdHMgd3JpdHRlbiBmb3Igbm9zZQogVXNhZ2UKIC0tLS0tLS0t
LS0tLS0KIAotQWZ0ZXIgOnJlZjpgaW5zdGFsbGF0aW9uYCB0eXBlOjoKK0FmdGVyIDpyZWY6YGlu
c3RhbGxhdGlvbmAgdHlwZToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGhvbiBz
ZXR1cC5weSBkZXZlbG9wICAjIG1ha2Ugc3VyZSB0ZXN0cyBjYW4gaW1wb3J0IG91ciBwYWNrYWdl
CiAgICAgcHl0ZXN0ICAjIGluc3RlYWQgb2YgJ25vc2V0ZXN0cycKQEAgLTI2LDcgKzI2LDYgQEAg
U3VwcG9ydGVkIG5vc2UgSWRpb21zCiAqIHNldHVwIGFuZCB0ZWFyZG93biBhdCBtb2R1bGUvY2xh
c3MvbWV0aG9kIGxldmVsCiAqIFNraXBUZXN0IGV4Y2VwdGlvbnMgYW5kIG1hcmtlcnMKICogc2V0
dXAvdGVhcmRvd24gZGVjb3JhdG9ycwotKiBgYHlpZWxkYGAtYmFzZWQgdGVzdHMgYW5kIHRoZWly
IHNldHVwIChjb25zaWRlcmVkIGRlcHJlY2F0ZWQgYXMgb2YgcHl0ZXN0IDMuMCkKICogYGBfX3Rl
c3RfX2BgIGF0dHJpYnV0ZSBvbiBtb2R1bGVzL2NsYXNzZXMvZnVuY3Rpb25zCiAqIGdlbmVyYWwg
dXNhZ2Ugb2Ygbm9zZSB1dGlsaXRpZXMKIApAQCAtNDQsNyArNDMsNyBAQCBVbnN1cHBvcnRlZCBp
ZGlvbXMgLyBrbm93biBpc3N1ZXMKICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMzc3Lz5gXy4KIAogLSBub3NlIGltcG9ydHMgdGVzdCBtb2R1bGVzIHdpdGgg
dGhlIHNhbWUgaW1wb3J0IHBhdGggKGUuZy4KLSAgYGB0ZXN0cy50ZXN0X21vZGBgKSBidXQgZGlm
ZmVyZW50IGZpbGUgc3lzdGVtIHBhdGhzCisgIGBgdGVzdHMudGVzdF9tb2RlYGApIGJ1dCBkaWZm
ZXJlbnQgZmlsZSBzeXN0ZW0gcGF0aHMKICAgKGUuZy4gYGB0ZXN0cy90ZXN0X21vZGUucHlgYCBh
bmQgYGBvdGhlci90ZXN0cy90ZXN0X21vZGUucHlgYCkKICAgYnkgZXh0ZW5kaW5nIHN5cy5wYXRo
L2ltcG9ydCBzZW1hbnRpY3MuICAgcHl0ZXN0IGRvZXMgbm90IGRvIHRoYXQKICAgYnV0IHRoZXJl
IGlzIGRpc2N1c3Npb24gaW4gYCMyNjggPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjY4PmBfIGZvciBhZGRpbmcgc29tZSBzdXBwb3J0LiAgTm90ZSB0aGF0CkBA
IC02NSw4ICs2NCw4IEBAIFVuc3VwcG9ydGVkIGlkaW9tcyAvIGtub3duIGlzc3VlcwogCiAtIG5v
IG5vc2UtY29uZmlndXJhdGlvbiBpcyByZWNvZ25pemVkLgogCi0tIGBgeWllbGRgYC1iYXNlZCBt
ZXRob2RzIGRvbid0IHN1cHBvcnQgYGBzZXR1cGBgIHByb3Blcmx5IGJlY2F1c2UKLSAgdGhlIGBg
c2V0dXBgYCBtZXRob2QgaXMgYWx3YXlzIGNhbGxlZCBpbiB0aGUgc2FtZSBjbGFzcyBpbnN0YW5j
ZS4KLSAgVGhlcmUgYXJlIG5vIHBsYW5zIHRvIGZpeCB0aGlzIGN1cnJlbnRseSBiZWNhdXNlIGBg
eWllbGRgYC10ZXN0cwotICBhcmUgZGVwcmVjYXRlZCBpbiBweXRlc3QgMy4wLCB3aXRoIGBgcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemVgYAotICBiZWluZyB0aGUgcmVjb21tZW5kZWQgYWx0ZXJuYXRp
dmUuCistIGBgeWllbGRgYC1iYXNlZCBtZXRob2RzIGFyZSB1bnN1cHBvcnRlZCBhcyBvZiBweXRl
c3QgNC4xLjAuICBUaGV5IGFyZQorICBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHB5
dGVzdCBiZWNhdXNlIHRoZXkgZG9uJ3Qgc3VwcG9ydCBmaXh0dXJlcworICBwcm9wZXJseSBzaW5j
ZSBjb2xsZWN0aW9uIGFuZCB0ZXN0IGV4ZWN1dGlvbiBhcmUgc2VwYXJhdGVkLgorCisuLiBfbm9z
ZTogaHR0cHM6Ly9ub3NlLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9wYXJhbWV0cml6ZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcGFy
YW1ldHJpemUucnN0CmluZGV4IDY5M2NmMTkxM2JmOC4uOWU1MzFkZGQ0NWRjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vcGFyYW1ldHJpemUucnN0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9wYXJhbWV0cml6ZS5yc3QKQEAgLTI5LDMzICsyOSwzNiBAQCBweXRlc3QgZW5hYmxlcyB0
ZXN0IHBhcmFtZXRyaXphdGlvbiBhdCBzZXZlcmFsIGxldmVsczoKIAogLi4gcmVnZW5kb2M6IHdp
cGUKIAotLi4gdmVyc2lvbmFkZGVkOjogMi4yCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNAorCisK
ICAgICBTZXZlcmFsIGltcHJvdmVtZW50cy4KIAogVGhlIGJ1aWx0aW4gOnJlZjpgcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUgcmVmYCBkZWNvcmF0b3IgZW5hYmxlcwogcGFyYW1ldHJpemF0aW9uIG9m
IGFyZ3VtZW50cyBmb3IgYSB0ZXN0IGZ1bmN0aW9uLiAgSGVyZSBpcyBhIHR5cGljYWwgZXhhbXBs
ZQogb2YgYSB0ZXN0IGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBjaGVja2luZyB0aGF0IGEgY2Vy
dGFpbiBpbnB1dCBsZWFkcwotdG8gYW4gZXhwZWN0ZWQgb3V0cHV0OjoKK3RvIGFuIGV4cGVjdGVk
IG91dHB1dDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRl
c3RfZXhwZWN0YXRpb24ucHkKICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwgWwotICAgICAgICAoIjMrNSIsIDgpLAot
ICAgICAgICAoIjIrNCIsIDYpLAotICAgICAgICAoIjYqOSIsIDQyKSwKLSAgICBdKQorCisKKyAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInRlc3RfaW5wdXQsZXhwZWN0ZWQiLCBbKCIzKzUi
LCA4KSwgKCIyKzQiLCA2KSwgKCI2KjkiLCA0MildKQogICAgIGRlZiB0ZXN0X2V2YWwodGVzdF9p
bnB1dCwgZXhwZWN0ZWQpOgogICAgICAgICBhc3NlcnQgZXZhbCh0ZXN0X2lucHV0KSA9PSBleHBl
Y3RlZAogCiBIZXJlLCB0aGUgYGBAcGFyYW1ldHJpemVgYCBkZWNvcmF0b3IgZGVmaW5lcyB0aHJl
ZSBkaWZmZXJlbnQgYGAodGVzdF9pbnB1dCxleHBlY3RlZClgYAogdHVwbGVzIHNvIHRoYXQgdGhl
IGBgdGVzdF9ldmFsYGAgZnVuY3Rpb24gd2lsbCBydW4gdGhyZWUgdGltZXMgdXNpbmcKLXRoZW0g
aW4gdHVybjo6Cit0aGVtIGluIHR1cm46CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAg
ICQgcHl0ZXN0CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBz
dGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0t
IFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAg
cm9vdGRpcjogJFJFR0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAt
LSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAg
IGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJF
R0VORE9DX1RNUERJUgogICAgIGNvbGxlY3RlZCAzIGl0ZW1zCiAKICAgICB0ZXN0X2V4cGVjdGF0
aW9uLnB5IC4uRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
MTAwJV0KQEAgLTY1LDE4ICs2OCw0MiBAQCB0aGVtIGluIHR1cm46OgogCiAgICAgdGVzdF9pbnB1
dCA9ICc2KjknLCBleHBlY3RlZCA9IDQyCiAKLSAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwgWwotICAgICAgICAgICAgKCIzKzUiLCA4KSwKLSAg
ICAgICAgICAgICgiMis0IiwgNiksCi0gICAgICAgICAgICAoIjYqOSIsIDQyKSwKLSAgICAgICAg
XSkKKyAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ0ZXN0X2lucHV0LGV4cGVjdGVk
IiwgWygiMys1IiwgOCksICgiMis0IiwgNiksICgiNio5IiwgNDIpXSkKICAgICAgICAgZGVmIHRl
c3RfZXZhbCh0ZXN0X2lucHV0LCBleHBlY3RlZCk6CiAgICAgPiAgICAgICBhc3NlcnQgZXZhbCh0
ZXN0X2lucHV0KSA9PSBleHBlY3RlZAogICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2Vy
dCA1NCA9PSA0MgogICAgIEUgICAgICAgICsgIHdoZXJlIDU0ID0gZXZhbCgnNio5JykKIAotICAg
IHRlc3RfZXhwZWN0YXRpb24ucHk6ODogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09
PT09PT09PSAxIGZhaWxlZCwgMiBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09
PT09PT09CisgICAgdGVzdF9leHBlY3RhdGlvbi5weTo2OiBBc3NlcnRpb25FcnJvcgorICAgID09
PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9leHBlY3RhdGlvbi5weTo6dGVzdF9l
dmFsWzYqOS00Ml0gLSBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IDU0Li4uCisgICAgPT09PT09PT09
PT09PT09PT09PT09PT0gMSBmYWlsZWQsIDIgcGFzc2VkIGluIDAuMTJzID09PT09PT09PT09PT09
PT09PT09PT09PQorCisuLiBub3RlOjoKKworICAgIFBhcmFtZXRlciB2YWx1ZXMgYXJlIHBhc3Nl
ZCBhcy1pcyB0byB0ZXN0cyAobm8gY29weSB3aGF0c29ldmVyKS4KKworICAgIEZvciBleGFtcGxl
LCBpZiB5b3UgcGFzcyBhIGxpc3Qgb3IgYSBkaWN0IGFzIGEgcGFyYW1ldGVyIHZhbHVlLCBhbmQK
KyAgICB0aGUgdGVzdCBjYXNlIGNvZGUgbXV0YXRlcyBpdCwgdGhlIG11dGF0aW9ucyB3aWxsIGJl
IHJlZmxlY3RlZCBpbiBzdWJzZXF1ZW50CisgICAgdGVzdCBjYXNlIGNhbGxzLgorCisuLiBub3Rl
OjoKKworICAgIHB5dGVzdCBieSBkZWZhdWx0IGVzY2FwZXMgYW55IG5vbi1hc2NpaSBjaGFyYWN0
ZXJzIHVzZWQgaW4gdW5pY29kZSBzdHJpbmdzCisgICAgZm9yIHRoZSBwYXJhbWV0cml6YXRpb24g
YmVjYXVzZSBpdCBoYXMgc2V2ZXJhbCBkb3duc2lkZXMuCisgICAgSWYgaG93ZXZlciB5b3Ugd291
bGQgbGlrZSB0byB1c2UgdW5pY29kZSBzdHJpbmdzIGluIHBhcmFtZXRyaXphdGlvbgorICAgIGFu
ZCBzZWUgdGhlbSBpbiB0aGUgdGVybWluYWwgYXMgaXMgKG5vbi1lc2NhcGVkKSwgdXNlIHRoaXMg
b3B0aW9uCisgICAgaW4geW91ciBgYHB5dGVzdC5pbmlgYDoKKworICAgIC4uIGNvZGUtYmxvY2s6
OiBpbmkKKworICAgICAgICBbcHl0ZXN0XQorICAgICAgICBkaXNhYmxlX3Rlc3RfaWRfZXNjYXBp
bmdfYW5kX2ZvcmZlaXRfYWxsX3JpZ2h0c190b19jb21tdW5pdHlfc3VwcG9ydCA9IFRydWUKKwor
ICAgIEtlZXAgaW4gbWluZCBob3dldmVyIHRoYXQgdGhpcyBtaWdodCBjYXVzZSB1bndhbnRlZCBz
aWRlIGVmZmVjdHMgYW5kCisgICAgZXZlbiBidWdzIGRlcGVuZGluZyBvbiB0aGUgT1MgdXNlZCBh
bmQgcGx1Z2lucyBjdXJyZW50bHkgaW5zdGFsbGVkLAorICAgIHNvIHVzZSBpdCBhdCB5b3VyIG93
biByaXNrLgorCiAKIEFzIGRlc2lnbmVkIGluIHRoaXMgZXhhbXBsZSwgb25seSBvbmUgcGFpciBv
ZiBpbnB1dC9vdXRwdXQgdmFsdWVzIGZhaWxzCiB0aGUgc2ltcGxlIHRlc3QgZnVuY3Rpb24uICBB
bmQgYXMgdXN1YWwgd2l0aCB0ZXN0IGZ1bmN0aW9uIGFyZ3VtZW50cywKQEAgLTg2LDM4ICsxMTMs
NTEgQEAgTm90ZSB0aGF0IHlvdSBjb3VsZCBhbHNvIHVzZSB0aGUgcGFyYW1ldHJpemUgbWFya2Vy
IG9uIGEgY2xhc3Mgb3IgYSBtb2R1bGUKIChzZWUgOnJlZjpgbWFya2ApIHdoaWNoIHdvdWxkIGlu
dm9rZSBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoIHRoZSBhcmd1bWVudCBzZXRzLgogCiBJdCBpcyBh
bHNvIHBvc3NpYmxlIHRvIG1hcmsgaW5kaXZpZHVhbCB0ZXN0IGluc3RhbmNlcyB3aXRoaW4gcGFy
YW1ldHJpemUsCi1mb3IgZXhhbXBsZSB3aXRoIHRoZSBidWlsdGluIGBgbWFyay54ZmFpbGBgOjoK
K2ZvciBleGFtcGxlIHdpdGggdGhlIGJ1aWx0aW4gYGBtYXJrLnhmYWlsYGA6CisKKy4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiB0ZXN0X2V4cGVjdGF0aW9uLnB5CiAg
ICAgaW1wb3J0IHB5dGVzdAotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidGVzdF9pbnB1
dCxleHBlY3RlZCIsIFsKLSAgICAgICAgKCIzKzUiLCA4KSwKLSAgICAgICAgKCIyKzQiLCA2KSwK
LSAgICAgICAgcHl0ZXN0LnBhcmFtKCI2KjkiLCA0MiwKLSAgICAgICAgICAgICAgICAgICAgIG1h
cmtzPXB5dGVzdC5tYXJrLnhmYWlsKSwKLSAgICBdKQorCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoCisgICAgICAgICJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwKKyAgICAgICAgWygiMys1
IiwgOCksICgiMis0IiwgNiksIHB5dGVzdC5wYXJhbSgiNio5IiwgNDIsIG1hcmtzPXB5dGVzdC5t
YXJrLnhmYWlsKV0sCisgICAgKQogICAgIGRlZiB0ZXN0X2V2YWwodGVzdF9pbnB1dCwgZXhwZWN0
ZWQpOgogICAgICAgICBhc3NlcnQgZXZhbCh0ZXN0X2lucHV0KSA9PSBleHBlY3RlZAogCi1MZXQn
cyBydW4gdGhpczo6CitMZXQncyBydW4gdGhpczoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAog
CiAgICAgJCBweXRlc3QKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNz
aW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0gbGlu
dXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkK
LSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3JtIGxp
bnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55
CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGly
OiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDMgaXRlbXMKIAogICAgIHRlc3RfZXhw
ZWN0YXRpb24ucHkgLi54ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsxMDAlXQogCi0gICAgPT09PT09PT09PT09PT09PT09PSAyIHBhc3NlZCwgMSB4ZmFpbGVk
IGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PQorICAgID09PT09PT09PT09PT09
PT09PT09PT09IDIgcGFzc2VkLCAxIHhmYWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09
PT09PT0KIAogVGhlIG9uZSBwYXJhbWV0ZXIgc2V0IHdoaWNoIGNhdXNlZCBhIGZhaWx1cmUgcHJl
dmlvdXNseSBub3cKLXNob3dzIHVwIGFzIGFuICJ4ZmFpbGVkIChleHBlY3RlZCB0byBmYWlsKSIg
dGVzdC4KK3Nob3dzIHVwIGFzIGFuICJ4ZmFpbGVkIiAoZXhwZWN0ZWQgdG8gZmFpbCkgdGVzdC4K
KworSW4gY2FzZSB0aGUgdmFsdWVzIHByb3ZpZGVkIHRvIGBgcGFyYW1ldHJpemVgYCByZXN1bHQg
aW4gYW4gZW1wdHkgbGlzdCAtIGZvcgorZXhhbXBsZSwgaWYgdGhleSdyZSBkeW5hbWljYWxseSBn
ZW5lcmF0ZWQgYnkgc29tZSBmdW5jdGlvbiAtIHRoZSBiZWhhdmlvdXIgb2YKK3B5dGVzdCBpcyBk
ZWZpbmVkIGJ5IHRoZSA6Y29uZnZhbDpgZW1wdHlfcGFyYW1ldGVyX3NldF9tYXJrYCBvcHRpb24u
CiAKIFRvIGdldCBhbGwgY29tYmluYXRpb25zIG9mIG11bHRpcGxlIHBhcmFtZXRyaXplZCBhcmd1
bWVudHMgeW91IGNhbiBzdGFjawotYGBwYXJhbWV0cml6ZWBgIGRlY29yYXRvcnM6OgorYGBwYXJh
bWV0cml6ZWBgIGRlY29yYXRvcnM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGlt
cG9ydCBweXRlc3QKKworCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ4IiwgWzAsIDFd
KQogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgieSIsIFsyLCAzXSkKICAgICBkZWYgdGVz
dF9mb28oeCwgeSk6CkBAIC0xNDEsMzQgKzE4MSw0OCBAQCBwYXJhbWV0cml6YXRpb24uCiAKIEZv
ciBleGFtcGxlLCBsZXQncyBzYXkgd2Ugd2FudCB0byBydW4gYSB0ZXN0IHRha2luZyBzdHJpbmcg
aW5wdXRzIHdoaWNoCiB3ZSB3YW50IHRvIHNldCB2aWEgYSBuZXcgYGBweXRlc3RgYCBjb21tYW5k
IGxpbmUgb3B0aW9uLiAgTGV0J3MgZmlyc3Qgd3JpdGUKLWEgc2ltcGxlIHRlc3QgYWNjZXB0aW5n
IGEgYGBzdHJpbmdpbnB1dGBgIGZpeHR1cmUgZnVuY3Rpb24gYXJndW1lbnQ6OgorYSBzaW1wbGUg
dGVzdCBhY2NlcHRpbmcgYSBgYHN0cmluZ2lucHV0YGAgZml4dHVyZSBmdW5jdGlvbiBhcmd1bWVu
dDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRlc3Rfc3Ry
aW5ncy5weQogCisKICAgICBkZWYgdGVzdF92YWxpZF9zdHJpbmcoc3RyaW5naW5wdXQpOgogICAg
ICAgICBhc3NlcnQgc3RyaW5naW5wdXQuaXNhbHBoYSgpCiAKIE5vdyB3ZSBhZGQgYSBgYGNvbmZ0
ZXN0LnB5YGAgZmlsZSBjb250YWluaW5nIHRoZSBhZGRpdGlvbiBvZiBhCi1jb21tYW5kIGxpbmUg
b3B0aW9uIGFuZCB0aGUgcGFyYW1ldHJpemF0aW9uIG9mIG91ciB0ZXN0IGZ1bmN0aW9uOjoKK2Nv
bW1hbmQgbGluZSBvcHRpb24gYW5kIHRoZSBwYXJhbWV0cml6YXRpb24gb2Ygb3VyIHRlc3QgZnVu
Y3Rpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVudCBvZiBjb25m
dGVzdC5weQogCisKICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgICAgICBw
YXJzZXIuYWRkb3B0aW9uKCItLXN0cmluZ2lucHV0IiwgYWN0aW9uPSJhcHBlbmQiLCBkZWZhdWx0
PVtdLAotICAgICAgICAgICAgaGVscD0ibGlzdCBvZiBzdHJpbmdpbnB1dHMgdG8gcGFzcyB0byB0
ZXN0IGZ1bmN0aW9ucyIpCisgICAgICAgIHBhcnNlci5hZGRvcHRpb24oCisgICAgICAgICAgICAi
LS1zdHJpbmdpbnB1dCIsCisgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsCisgICAgICAgICAg
ICBkZWZhdWx0PVtdLAorICAgICAgICAgICAgaGVscD0ibGlzdCBvZiBzdHJpbmdpbnB1dHMgdG8g
cGFzcyB0byB0ZXN0IGZ1bmN0aW9ucyIsCisgICAgICAgICkKKwogCiAgICAgZGVmIHB5dGVzdF9n
ZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgIGlmICdzdHJpbmdpbnB1dCcgaW4gbWV0
YWZ1bmMuZml4dHVyZW5hbWVzOgotICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoInN0
cmluZ2lucHV0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFmdW5jLmNv
bmZpZy5nZXRvcHRpb24oJ3N0cmluZ2lucHV0JykpCisgICAgICAgIGlmICJzdHJpbmdpbnB1dCIg
aW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzOgorICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJp
emUoInN0cmluZ2lucHV0IiwgbWV0YWZ1bmMuY29uZmlnLmdldG9wdGlvbigic3RyaW5naW5wdXQi
KSkKIAotSWYgd2Ugbm93IHBhc3MgdHdvIHN0cmluZ2lucHV0IHZhbHVlcywgb3VyIHRlc3Qgd2ls
bCBydW4gdHdpY2U6OgorSWYgd2Ugbm93IHBhc3MgdHdvIHN0cmluZ2lucHV0IHZhbHVlcywgb3Vy
IHRlc3Qgd2lsbCBydW4gdHdpY2U6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQg
cHl0ZXN0IC1xIC0tc3RyaW5naW5wdXQ9ImhlbGxvIiAtLXN0cmluZ2lucHV0PSJ3b3JsZCIgdGVz
dF9zdHJpbmdzLnB5CiAgICAgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCi0gICAgMiBwYXNzZWQgaW4gMC4x
MiBzZWNvbmRzCisgICAgMiBwYXNzZWQgaW4gMC4xMnMKKworTGV0J3MgYWxzbyBydW4gd2l0aCBh
IHN0cmluZ2lucHV0IHRoYXQgd2lsbCBsZWFkIHRvIGEgZmFpbGluZyB0ZXN0OgogCi1MZXQncyBh
bHNvIHJ1biB3aXRoIGEgc3RyaW5naW5wdXQgdGhhdCB3aWxsIGxlYWQgdG8gYSBmYWlsaW5nIHRl
c3Q6OgorLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAgJCBweXRlc3QgLXEgLS1zdHJpbmdp
bnB1dD0iISIgdGVzdF9zdHJpbmdzLnB5CiAgICAgRiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCkBAIC0xODMs
MjAgKzIzNywyNCBAQCBMZXQncyBhbHNvIHJ1biB3aXRoIGEgc3RyaW5naW5wdXQgdGhhdCB3aWxs
IGxlYWQgdG8gYSBmYWlsaW5nIHRlc3Q6OgogICAgIEUgICAgICAgICsgIHdoZXJlIEZhbHNlID0g
PGJ1aWx0LWluIG1ldGhvZCBpc2FscGhhIG9mIHN0ciBvYmplY3QgYXQgMHhkZWFkYmVlZj4oKQog
ICAgIEUgICAgICAgICsgICAgd2hlcmUgPGJ1aWx0LWluIG1ldGhvZCBpc2FscGhhIG9mIHN0ciBv
YmplY3QgYXQgMHhkZWFkYmVlZj4gPSAnIScuaXNhbHBoYQogCi0gICAgdGVzdF9zdHJpbmdzLnB5
OjM6IEFzc2VydGlvbkVycm9yCi0gICAgMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgdGVz
dF9zdHJpbmdzLnB5OjQ6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09
PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09PT09PQor
ICAgIEZBSUxFRCB0ZXN0X3N0cmluZ3MucHk6OnRlc3RfdmFsaWRfc3RyaW5nWyFdIC0gQXNzZXJ0
aW9uRXJyb3I6IGFzc2VydCBGYWxzZQorICAgIDEgZmFpbGVkIGluIDAuMTJzCiAKIEFzIGV4cGVj
dGVkIG91ciB0ZXN0IGZ1bmN0aW9uIGZhaWxzLgogCiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIHN0
cmluZ2lucHV0IGl0IHdpbGwgYmUgc2tpcHBlZCBiZWNhdXNlCiBgYG1ldGFmdW5jLnBhcmFtZXRy
aXplKClgYCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFuIGVtcHR5IHBhcmFtZXRlcgotbGlzdDo6Cits
aXN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAtcSAtcnMgdGVz
dF9zdHJpbmdzLnB5CiAgICAgcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCiAgICAgPT09PT09PT09PT09PT09
PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09PT09PT09PT09PT09PT09
PT09PQotICAgIFNLSVAgWzFdIHRlc3Rfc3RyaW5ncy5weTogZ290IGVtcHR5IHBhcmFtZXRlciBz
ZXQgWydzdHJpbmdpbnB1dCddLCBmdW5jdGlvbiB0ZXN0X3ZhbGlkX3N0cmluZyBhdCAkUkVHRU5E
T0NfVE1QRElSL3Rlc3Rfc3RyaW5ncy5weToxCi0gICAgMSBza2lwcGVkIGluIDAuMTIgc2Vjb25k
cworICAgIFNLSVBQRUQgWzFdIHRlc3Rfc3RyaW5ncy5weTogZ290IGVtcHR5IHBhcmFtZXRlciBz
ZXQgWydzdHJpbmdpbnB1dCddLCBmdW5jdGlvbiB0ZXN0X3ZhbGlkX3N0cmluZyBhdCAkUkVHRU5E
T0NfVE1QRElSL3Rlc3Rfc3RyaW5ncy5weToyCisgICAgMSBza2lwcGVkIGluIDAuMTJzCiAKIE5v
dGUgdGhhdCB3aGVuIGNhbGxpbmcgYGBtZXRhZnVuYy5wYXJhbWV0cml6ZWBgIG11bHRpcGxlIHRp
bWVzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlciBzZXRzLCBhbGwgcGFyYW1ldGVyIG5hbWVzIGFj
cm9zcwogdGhvc2Ugc2V0cyBjYW5ub3QgYmUgZHVwbGljYXRlZCwgb3RoZXJ3aXNlIGFuIGVycm9y
IHdpbGwgYmUgcmFpc2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3BsdWdpbnMu
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3BsdWdpbnMucnN0CmluZGV4IDlkZGJhNWQzOGNhNi4u
ODU1YjU5NzM5MmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcGx1Z2lucy5yc3QK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3BsdWdpbnMucnN0CkBAIC04LDcgKzgsOSBAQCBJbnN0
YWxsaW5nIGFuZCBVc2luZyBwbHVnaW5zCiBUaGlzIHNlY3Rpb24gdGFsa3MgYWJvdXQgaW5zdGFs
bGluZyBhbmQgdXNpbmcgdGhpcmQgcGFydHkgcGx1Z2lucy4KIEZvciB3cml0aW5nIHlvdXIgb3du
IHBsdWdpbnMsIHBsZWFzZSByZWZlciB0byA6cmVmOmB3cml0aW5nLXBsdWdpbnNgLgogCi1JbnN0
YWxsaW5nIGEgdGhpcmQgcGFydHkgcGx1Z2luIGNhbiBiZSBlYXNpbHkgZG9uZSB3aXRoIGBgcGlw
YGA6OgorSW5zdGFsbGluZyBhIHRoaXJkIHBhcnR5IHBsdWdpbiBjYW4gYmUgZWFzaWx5IGRvbmUg
d2l0aCBgYHBpcGBgOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcGlwIGluc3RhbGwg
cHl0ZXN0LU5BTUUKICAgICBwaXAgdW5pbnN0YWxsIHB5dGVzdC1OQU1FCkBAIC0yNyw3ICsyOSw3
IEBAIEhlcmUgaXMgYSBsaXR0bGUgYW5ub3RhdGVkIGxpc3QgZm9yIHNvbWUgcG9wdWxhciBwbHVn
aW5zOgogICBmb3IgYHR3aXN0ZWQgPGh0dHA6Ly90d2lzdGVkbWF0cml4LmNvbT5gXyBhcHBzLCBz
dGFydGluZyBhIHJlYWN0b3IgYW5kCiAgIHByb2Nlc3NpbmcgZGVmZXJyZWRzIGZyb20gdGVzdCBm
dW5jdGlvbnMuCiAKLSogYHB5dGVzdC1jb3YgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRl
c3QtY292Lz5gXzoKKyogYHB5dGVzdC1jb3YgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRl
c3QtY292Lz5gX186CiAgIGNvdmVyYWdlIHJlcG9ydGluZywgY29tcGF0aWJsZSB3aXRoIGRpc3Ry
aWJ1dGVkIHRlc3RpbmcKIAogKiBgcHl0ZXN0LXhkaXN0IDxodHRwczovL3B5cGkub3JnL3Byb2pl
Y3QvcHl0ZXN0LXhkaXN0Lz5gXzoKQEAgLTM5LDggKzQxLDcgQEAgSGVyZSBpcyBhIGxpdHRsZSBh
bm5vdGF0ZWQgbGlzdCBmb3Igc29tZSBwb3B1bGFyIHBsdWdpbnM6CiAqIGBweXRlc3QtaW5zdGFm
YWlsIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LWluc3RhZmFpbC8+YF86CiAgIHRv
IHJlcG9ydCBmYWlsdXJlcyB3aGlsZSB0aGUgdGVzdCBydW4gaXMgaGFwcGVuaW5nLgogCi0qIGBw
eXRlc3QtYmRkIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LWJkZC8+YF8gYW5kCi0g
IGBweXRlc3Qta29uaXJhIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0ZXN0LWtvbmlyYS8+
YF8KKyogYHB5dGVzdC1iZGQgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRlc3QtYmRkLz5g
XzoKICAgdG8gd3JpdGUgdGVzdHMgdXNpbmcgYmVoYXZpb3VyLWRyaXZlbiB0ZXN0aW5nLgogCiAq
IGBweXRlc3QtdGltZW91dCA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGVzdC10aW1lb3V0
Lz5gXzoKQEAgLTU5LDkgKzYwLDkgQEAgVG8gc2VlIGEgY29tcGxldGUgbGlzdCBvZiBhbGwgcGx1
Z2lucyB3aXRoIHRoZWlyIGxhdGVzdCB0ZXN0aW5nCiBzdGF0dXMgYWdhaW5zdCBkaWZmZXJlbnQg
cHl0ZXN0IGFuZCBQeXRob24gdmVyc2lvbnMsIHBsZWFzZSB2aXNpdAogYHBsdWdpbmNvbXBhdCA8
aHR0cDovL3BsdWdpbmNvbXBhdC5oZXJva3VhcHAuY29tLz5gXy4KIAotWW91IG1heSBhbHNvIGRp
c2NvdmVyIG1vcmUgcGx1Z2lucyB0aHJvdWdoIGEgYHB5dGVzdC0gcHlwaS5weXRob24ub3JnIHNl
YXJjaGBfLgorWW91IG1heSBhbHNvIGRpc2NvdmVyIG1vcmUgcGx1Z2lucyB0aHJvdWdoIGEgYHB5
dGVzdC0gcHlwaS5vcmcgc2VhcmNoYF8uCiAKLS4uIF9gcHl0ZXN0LSBweXBpLnB5dGhvbi5vcmcg
c2VhcmNoYDogaHR0cHM6Ly9weXBpLm9yZy9zZWFyY2gvP3E9cHl0ZXN0LQorLi4gX2BweXRlc3Qt
IHB5cGkub3JnIHNlYXJjaGA6IGh0dHBzOi8vcHlwaS5vcmcvc2VhcmNoLz9xPXB5dGVzdC0KIAog
CiAuLiBfYGF2YWlsYWJsZSBpbnN0YWxsYWJsZSBwbHVnaW5zYDoKQEAgLTY5LDMwICs3MCwzNiBA
QCBZb3UgbWF5IGFsc28gZGlzY292ZXIgbW9yZSBwbHVnaW5zIHRocm91Z2ggYSBgcHl0ZXN0LSBw
eXBpLnB5dGhvbi5vcmcgc2VhcmNoYF8uCiBSZXF1aXJpbmcvTG9hZGluZyBwbHVnaW5zIGluIGEg
dGVzdCBtb2R1bGUgb3IgY29uZnRlc3QgZmlsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91IGNhbiByZXF1aXJlIHBsdWdp
bnMgaW4gYSB0ZXN0IG1vZHVsZSBvciBhIGNvbmZ0ZXN0IGZpbGUgbGlrZSB0aGlzOjoKK1lvdSBj
YW4gcmVxdWlyZSBwbHVnaW5zIGluIGEgdGVzdCBtb2R1bGUgb3IgYSBjb25mdGVzdCBmaWxlIHVz
aW5nIDpnbG9iYWx2YXI6YHB5dGVzdF9wbHVnaW5zYDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhv
bgogCi0gICAgcHl0ZXN0X3BsdWdpbnMgPSAibXlhcHAudGVzdHN1cHBvcnQubXlwbHVnaW4iLAor
ICAgIHB5dGVzdF9wbHVnaW5zID0gKCJteWFwcC50ZXN0c3VwcG9ydC5teXBsdWdpbiIsKQogCiBX
aGVuIHRoZSB0ZXN0IG1vZHVsZSBvciBjb25mdGVzdCBwbHVnaW4gaXMgbG9hZGVkIHRoZSBzcGVj
aWZpZWQgcGx1Z2lucwogd2lsbCBiZSBsb2FkZWQgYXMgd2VsbC4KIAotICAgIHB5dGVzdF9wbHVn
aW5zID0gIm15YXBwLnRlc3RzdXBwb3J0Lm15cGx1Z2luIgotCi13aGljaCB3aWxsIGltcG9ydCB0
aGUgc3BlY2lmaWVkIG1vZHVsZSBhcyBhIGBgcHl0ZXN0YGAgcGx1Z2luLgotCiAuLiBub3RlOjoK
KwogICAgIFJlcXVpcmluZyBwbHVnaW5zIHVzaW5nIGEgYGBweXRlc3RfcGx1Z2luc2BgIHZhcmlh
YmxlIGluIG5vbi1yb290CiAgICAgYGBjb25mdGVzdC5weWBgIGZpbGVzIGlzIGRlcHJlY2F0ZWQu
IFNlZQogICAgIDpyZWY6YGZ1bGwgZXhwbGFuYXRpb24gPHJlcXVpcmluZyBwbHVnaW5zIGluIG5v
bi1yb290IGNvbmZ0ZXN0cz5gCiAgICAgaW4gdGhlIFdyaXRpbmcgcGx1Z2lucyBzZWN0aW9uLgog
CisuLiBub3RlOjoKKyAgIFRoZSBuYW1lIGBgcHl0ZXN0X3BsdWdpbnNgYCBpcyByZXNlcnZlZCBh
bmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGEKKyAgIG5hbWUgZm9yIGEgY3VzdG9tIHBsdWdpbiBt
b2R1bGUuCisKKwogLi4gX2BmaW5kcGx1Z2lubmFtZWA6CiAKIEZpbmRpbmcgb3V0IHdoaWNoIHBs
dWdpbnMgYXJlIGFjdGl2ZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IElmIHlvdSB3YW50IHRvIGZpbmQgb3V0IHdoaWNoIHBsdWdpbnMgYXJlIGFjdGl2ZSBpbiB5b3Vy
Ci1lbnZpcm9ubWVudCB5b3UgY2FuIHR5cGU6OgorZW52aXJvbm1lbnQgeW91IGNhbiB0eXBlOgor
CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0tdHJhY2UtY29uZmlnCiAKQEAg
LTEwNSw3ICsxMTIsOSBAQCBhbmQgdGhlaXIgbmFtZXMuIEl0IHdpbGwgYWxzbyBwcmludCBsb2Nh
bCBwbHVnaW5zIGFrYQogRGVhY3RpdmF0aW5nIC8gdW5yZWdpc3RlcmluZyBhIHBsdWdpbiBieSBu
YW1lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91
IGNhbiBwcmV2ZW50IHBsdWdpbnMgZnJvbSBsb2FkaW5nIG9yIHVucmVnaXN0ZXIgdGhlbTo6CitZ
b3UgY2FuIHByZXZlbnQgcGx1Z2lucyBmcm9tIGxvYWRpbmcgb3IgdW5yZWdpc3RlciB0aGVtOgor
CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC1wIG5vOk5BTUUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb2plY3RzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9wcm9qZWN0cy5yc3QKaW5kZXggNjA2ZTlkNDdjMTYxLi4wNzIwYmM5ZGQ3ZTUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9wcm9qZWN0cy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3Byb2plY3RzLnJzdApAQCAtMjgsNyArMjgsNiBAQCBIZXJlIGFyZSBzb21lIGV4YW1wbGVz
IG9mIHByb2plY3RzIHVzaW5nIGBgcHl0ZXN0YGAgKHBsZWFzZSBzZW5kIG5vdGVzIHZpYSA6cmVm
OgogKiBgc2VudHJ5IDxodHRwczovL2dldHNlbnRyeS5jb20vd2VsY29tZS8+YF8sIHJlYWx0aW1l
IGFwcC1tYWludGVuYW5jZSBhbmQgZXhjZXB0aW9uIHRyYWNraW5nCiAqIGBBc3Ryb3B5IDxodHRw
Oi8vd3d3LmFzdHJvcHkub3JnLz5gXyBhbmQgYGFmZmlsaWF0ZWQgcGFja2FnZXMgPGh0dHA6Ly93
d3cuYXN0cm9weS5vcmcvYWZmaWxpYXRlZC9pbmRleC5odG1sPmBfCiAqIGB0b3ggPGh0dHA6Ly90
ZXN0cnVuLm9yZy90b3g+YF8sIHZpcnR1YWxlbnYvSHVkc29uIGludGVncmF0aW9uIHRvb2wKLSog
YFBJREEgPGh0dHA6Ly9waWRhLmNvLnVrPmBfIGZyYW1ld29yayBmb3IgaW50ZWdyYXRlZCBkZXZl
bG9wbWVudAogKiBgUHlQTSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3B5cG0vPmBfIEFj
dGl2ZVN0YXRlJ3MgcGFja2FnZSBtYW5hZ2VyCiAqIGBGb20gPGh0dHA6Ly9wYWNrYWdlcy5weXRo
b24ub3JnL0ZvbS8+YF8gYSBmbHVpZCBvYmplY3QgbWFwcGVyIGZvciBGbHVpZERCCiAqIGBhcHBs
aWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9BY3RpdmVTdGF0ZS9hcHBsaWI+YF8gY3Jvc3MtcGxhdGZv
cm0gdXRpbGl0aWVzCkBAIC0zNywxMCArMzYsMTAgQEAgSGVyZSBhcmUgc29tZSBleGFtcGxlcyBv
ZiBwcm9qZWN0cyB1c2luZyBgYHB5dGVzdGBgIChwbGVhc2Ugc2VuZCBub3RlcyB2aWEgOnJlZjoK
ICogYG13bGliIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvbXdsaWIvPmBfIG1lZGlhd2lraSBw
YXJzZXIgYW5kIHV0aWxpdHkgbGlicmFyeQogKiBgVGhlIFRyYW5zbGF0ZSBUb29sa2l0IDxodHRw
Oi8vdHJhbnNsYXRlLnNvdXJjZWZvcmdlLm5ldC93aWtpL3Rvb2xraXQvaW5kZXg+YF8gZm9yIGxv
Y2FsaXphdGlvbiBhbmQgY29udmVyc2lvbgogKiBgZXhlY25ldCA8aHR0cDovL2NvZGVzcGVhay5u
ZXQvZXhlY25ldD5gXyByYXBpZCBtdWx0aS1QeXRob24gZGVwbG95bWVudAotKiBgcHlsaWIgPGh0
dHBzOi8vcHkucmVhZHRoZWRvY3MuaW8+YF8gY3Jvc3MtcGxhdGZvcm0gcGF0aCwgSU8sIGR5bmFt
aWMgY29kZSBsaWJyYXJ5Ci0qIGBQYWNoYSA8aHR0cDovL3BhY2hhLmNhZmVwYWlzLmNvbS8+YF8g
Y29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IGluIGZpdmUgbWludXRlcworKiBgcHlsaWIgPGh0dHBz
Oi8vcHlsaWIucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlLz5gXyBjcm9zcy1wbGF0Zm9ybSBwYXRo
LCBJTywgZHluYW1pYyBjb2RlIGxpYnJhcnkKICogYGJiZnJlZXplIDxodHRwczovL3B5cGkub3Jn
L3Byb2plY3QvYmJmcmVlemUvPmBfIGNyZWF0ZSBzdGFuZGFsb25lIGV4ZWN1dGFibGVzIGZyb20g
UHl0aG9uIHNjcmlwdHMKLSogYHBkYisrIDxodHRwOi8vYml0YnVja2V0Lm9yZy9hbnRvY3VuaS9w
ZGI+YF8gYSBmYW5jaWVyIHZlcnNpb24gb2YgUERCCisqIGBwZGIrKyA8aHR0cHM6Ly9naXRodWIu
Y29tL3BkYnBwL3BkYnBwPmBfIGEgZmFuY2llciB2ZXJzaW9uIG9mIFBEQgorKiBgcHVkYiA8aHR0
cHM6Ly9naXRodWIuY29tL2luZHVjZXIvcHVkYj5gXyBmdWxsLXNjcmVlbiBjb25zb2xlIGRlYnVn
Z2VyIGZvciBweXRob24KICogYHB5LXMzZnVzZSA8aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5
LXMzZnVzZS8+YF8gQW1hem9uIFMzIEZVU0UgYmFzZWQgZmlsZXN5c3RlbQogKiBgd2Fza3IgPGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93YXNrci8+YF8gV1NHSSBTdGF0cyBNaWRkbGV3YXJlCiAq
IGBndWFjaGkgPGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9ndWFjaGkvPmBfIGdsb2JhbCBwZXJz
aXN0ZW50IGNvbmZpZ3MgZm9yIFB5dGhvbiBtb2R1bGVzCkBAIC03MywxMSArNzIsMTAgQEAgU29t
ZSBvcmdhbmlzYXRpb25zIHVzaW5nIHB5dGVzdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogKiBgU3F1YXJlIEtpbG9tZXRyZSBBcnJheSwgQ2FwZSBUb3duIDxodHRwOi8v
c2thLmFjLnphLz5gXwotKiBgU29tZSBNb3ppbGxhIFFBIHBlb3BsZSA8aHR0cDovL3d3dy50aGVh
dXRvbWF0ZWR0ZXN0ZXIuY28udWsvYmxvZy8yMDExL3B5dGVzdF9hbmRfeGRpc3RfcGx1Z2luLmh0
bWw+YF8gdXNlIHB5dGVzdCB0byBkaXN0cmlidXRlIHRoZWlyIFNlbGVuaXVtIHRlc3RzCi0qIGBU
YW5kYmVyZyA8aHR0cDovL3d3dy50YW5kYmVyZy5jb20vPmBfCisqIGBTb21lIE1vemlsbGEgUUEg
cGVvcGxlIDxodHRwczovL3d3dy50aGVhdXRvbWF0ZWR0ZXN0ZXIuY28udWsvYmxvZy8yMDExL3B5
dGVzdF9hbmRfeGRpc3RfcGx1Z2luLz5gXyB1c2UgcHl0ZXN0IHRvIGRpc3RyaWJ1dGUgdGhlaXIg
U2VsZW5pdW0gdGVzdHMKICogYFNob290cSA8aHR0cDovL3dlYi5zaG9vdHEuY29tLz5gXwogKiBg
U3R1cHMgZGVwYXJ0bWVudCBvZiBIZWlucmljaCBIZWluZSBVbml2ZXJzaXR5IER1ZXNzZWxkb3Jm
IDxodHRwOi8vd3d3LnN0dXBzLnVuaS1kdWVzc2VsZG9yZi5kZS9wcm9qZWN0cy5waHA+YF8KLSog
YGNlbGx6b21lIDxodHRwOi8vd3d3LmNlbGx6b21lLmNvbS8+YF8KKyogY2VsbHpvbWUKICogYE9w
ZW4gRW5kLCBHb3RoZW5ib3JnIDxodHRwOi8vd3d3Lm9wZW5lbmQuc2U+YF8KICogYExhYm9yYXRv
cnkgb2YgQmlvaW5mb3JtYXRpY3MsIFdhcnNhdyA8aHR0cDovL2dlbmVzaWxpY28ucGwvPmBfCiAq
IGBtZXJsaW51eCwgR2VybWFueSA8aHR0cDovL21lcmxpbnV4LmV1PmBfCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxzL3BhcmFtZXRyaXplX3dpdGhfZml4dHVyZXMucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb3Bvc2Fscy9wYXJhbWV0cml6ZV93aXRoX2ZpeHR1cmVz
LnJzdAppbmRleCA5MmU3OTkzZjM5MDYuLmI3Mjk1ZjI3YWIyMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3Byb3Bvc2Fscy9wYXJhbWV0cml6ZV93aXRoX2ZpeHR1cmVzLnJzdAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxzL3BhcmFtZXRyaXplX3dpdGhfZml4dHVyZXMu
cnN0CkBAIC03NSw3ICs3NSw3IEBAIElzc3VlcwogLS0tLS0tCiAKICogQnkgdXNpbmcgYGByZXF1
ZXN0LmdldGZ1bmNhcmd2YWx1ZSgpYGAgd2UgcmVseSBvbiBhY3R1YWwgZml4dHVyZSBmdW5jdGlv
bgotICBleGVjdXRpb24gdG8ga25vdyB3aGF0IGZpeHR1cmVzIGFyZSBpbnZvbHZlZCwgZHVlIHRv
IGl0J3MgZHluYW1pYyBuYXR1cmUKKyAgZXhlY3V0aW9uIHRvIGtub3cgd2hhdCBmaXh0dXJlcyBh
cmUgaW52b2x2ZWQsIGR1ZSB0byBpdHMgZHluYW1pYyBuYXR1cmUKICogTW9yZSBpbXBvcnRhbnRs
eSwgYGByZXF1ZXN0LmdldGZ1bmNhcmd2YWx1ZSgpYGAgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGgK
ICAgcGFyYW1ldHJpemVkIGZpeHR1cmVzLCBzdWNoIGFzIGBgZXh0cmFfY29udGV4dGBgCiAqIFRo
aXMgaXMgdmVyeSBpbmNvbnZlbmllbnQgaWYgeW91IHdpc2ggdG8gZXh0ZW5kIGFuIGV4aXN0aW5n
IHRlc3Qgc3VpdGUgYnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9wcm9wb3NhbHMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzczNWVmZmU5OTQuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Byb3Bvc2Fscy9wYXJhbWV0cml6ZV93aXRoX2ZpeHR1cmVzLnJzdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3B5MjctcHkzNC1kZXByZWNhdGlvbi5yc3QgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vcHkyNy1weTM0LWRlcHJlY2F0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmYyM2YyMDYyYjc5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9weTI3LXB5MzQtZGVwcmVjYXRpb24ucnN0CkBAIC0wLDAgKzEsOTcgQEAKK1B5
dGhvbiAyLjcgYW5kIDMuNCBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJ
dCBpcyBkZW1hbmRpbmcgb24gdGhlIG1haW50YWluZXJzIG9mIGFuIG9wZW4gc291cmNlIHByb2pl
Y3QgdG8gc3VwcG9ydCBtYW55IFB5dGhvbiB2ZXJzaW9ucywgYXMKK3RoZXJlJ3MgZXh0cmEgY29z
dCBvZiBrZWVwaW5nIGNvZGUgY29tcGF0aWJsZSBiZXR3ZWVuIGFsbCB2ZXJzaW9ucywgd2hpbGUg
aG9sZGluZyBiYWNrIG9uCitmZWF0dXJlcyBvbmx5IG1hZGUgcG9zc2libGUgb24gbmV3ZXIgUHl0
aG9uIHZlcnNpb25zLgorCitJbiBjYXNlIG9mIFB5dGhvbiAyIGFuZCAzLCB0aGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIHRoZSBsYW5ndWFnZXMgbWFrZXMgaXQgZXZlbiBtb3JlIHByb21pbmVudCwKK2Jl
Y2F1c2UgbWFueSBuZXcgUHl0aG9uIDMgZmVhdHVyZXMgY2Fubm90IGJlIHVzZWQgaW4gYSBQeXRo
b24gMi8zIGNvbXBhdGlibGUgY29kZSBiYXNlLgorCitQeXRob24gMi43IEVPTCBoYXMgYmVlbiBy
ZWFjaGVkIGBpbiAyMDIwIDxodHRwczovL2xlZ2FjeS5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0w
MzczLyNpZDQ+YF9fLCB3aXRoCit0aGUgbGFzdCByZWxlYXNlIG1hZGUgaW4gQXByaWwsIDIwMjAu
CisKK1B5dGhvbiAzLjQgRU9MIGhhcyBiZWVuIHJlYWNoZWQgYGluIDIwMTkgPGh0dHBzOi8vd3d3
LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0MjkvI3JlbGVhc2Utc2NoZWR1bGU+YF9fLCB3aXRo
IHRoZSBsYXN0IHJlbGVhc2UgbWFkZSBpbiBNYXJjaCwgMjAxOS4KKworRm9yIHRob3NlIHJlYXNv
bnMsIGluIEp1biAyMDE5IGl0IHdhcyBkZWNpZGVkIHRoYXQgKipweXRlc3QgNC42Kiogc2VyaWVz
IHdpbGwgYmUgdGhlIGxhc3QgdG8gc3VwcG9ydCBQeXRob24gMi43IGFuZCAzLjQuCisKK1doYXQg
dGhpcyBtZWFucyBmb3IgZ2VuZXJhbCB1c2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RoYW5rcyB0byB0aGUgYHB5dGhvbl9yZXF1aXJlc2BfIHNldHVwdG9vbHMgb3B0
aW9uLAorUHl0aG9uIDIuNyBhbmQgUHl0aG9uIDMuNCB1c2VycyB1c2luZyBhIG1vZGVybiBwaXAg
dmVyc2lvbgord2lsbCBpbnN0YWxsIHRoZSBsYXN0IHB5dGVzdCA0LjYuWCB2ZXJzaW9uIGF1dG9t
YXRpY2FsbHkgZXZlbiBpZiA1LjAgb3IgbGF0ZXIgdmVyc2lvbnMKK2FyZSBhdmFpbGFibGUgb24g
UHlQSS4KKworVXNlcnMgc2hvdWxkIGVuc3VyZSB0aGV5IGFyZSB1c2luZyB0aGUgbGF0ZXN0IHBp
cCBhbmQgc2V0dXB0b29scyB2ZXJzaW9ucyBmb3IgdGhpcyB0byB3b3JrLgorCitNYWludGVuYW5j
ZSBvZiA0LjYuWCB2ZXJzaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVW50
aWwgSmFudWFyeSAyMDIwLCB0aGUgcHl0ZXN0IGNvcmUgdGVhbSBwb3J0ZWQgbWFueSBidWctZml4
ZXMgZnJvbSB0aGUgbWFpbiByZWxlYXNlIGludG8gdGhlCitgYDQuNi54YGAgYnJhbmNoLCB3aXRo
IHNldmVyYWwgNC42LlggcmVsZWFzZXMgYmVpbmcgbWFkZSBhbG9uZyB0aGUgeWVhci4KKworRnJv
bSBub3cgb24sIHRoZSBjb3JlIHRlYW0gd2lsbCAqKm5vIGxvbmdlciBhY3RpdmVseSBiYWNrcG9y
dCBwYXRjaGVzKiosIGJ1dCB0aGUgYGA0LjYueGBgCiticmFuY2ggd2lsbCBjb250aW51ZSB0byBl
eGlzdCBzbyB0aGUgY29tbXVuaXR5IGl0c2VsZiBjYW4gY29udHJpYnV0ZSBwYXRjaGVzLgorCitU
aGUgY29yZSB0ZWFtIHdpbGwgYmUgaGFwcHkgdG8gYWNjZXB0IHRob3NlIHBhdGNoZXMsIGFuZCBt
YWtlIG5ldyA0LjYuWCByZWxlYXNlcyAqKnVudGlsIG1pZC0yMDIwKioKKyhidXQgY29uc2lkZXIg
dGhhdCBkYXRlIGFzIGEgYmFsbHBhcmssIGFmdGVyIHRoYXQgZGF0ZSB0aGUgdGVhbSBtaWdodCBz
dGlsbCBkZWNpZGUgdG8gbWFrZSBuZXcgcmVsZWFzZXMKK2ZvciBjcml0aWNhbCBidWdzKS4KKwor
Li4gX2BweXRob25fcmVxdWlyZXNgOiBodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2d1aWRl
cy9kaXN0cmlidXRpbmctcGFja2FnZXMtdXNpbmctc2V0dXB0b29scy8jcHl0aG9uLXJlcXVpcmVz
CisKK1RlY2huaWNhbCBhc3BlY3RzCit+fn5+fn5+fn5+fn5+fn5+fgorCisoVGhpcyBzZWN0aW9u
IGlzIGEgdHJhbnNjcmlwdCBmcm9tIGAjNTI3NSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy81Mjc1PmBfXykuCisKK0luIHRoaXMgc2VjdGlvbiB3ZSBkZXNjcmli
ZSB0aGUgdGVjaG5pY2FsIGFzcGVjdHMgb2YgdGhlIFB5dGhvbiAyLjcgYW5kIDMuNCBzdXBwb3J0
IHBsYW4uCisKK1doYXQgZ29lcyBpbnRvIDQuNi5YIHJlbGVhc2VzCisrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKworCitOZXcgNC42LlggcmVsZWFzZXMgd2lsbCBjb250YWluIGJ1ZyBmaXhl
cyBvbmx5LgorCitXaGVuIHdpbGwgNC42LlggcmVsZWFzZXMgaGFwcGVuCisrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCisKK05ldyA0LjYuWCByZWxlYXNlcyB3aWxsIGhhcHBlbiBhZnRl
ciB3ZSBoYXZlIGEgZmV3IGJ1Z3MgaW4gcGxhY2UgdG8gcmVsZWFzZSwgb3IgaWYgYSBmZXcgd2Vl
a3MgaGF2ZQorcGFzc2VkIChzYXkgYSBzaW5nbGUgYnVnIGhhcyBiZWVuIGZpeGVkIGEgbW9udGgg
YWZ0ZXIgdGhlIGxhdGVzdCA0LjYuWCByZWxlYXNlKS4KKworTm8gaGFyZCBydWxlcyBoZXJlLCBq
dXN0IGJhbGxwYXJrLgorCitXaG8gd2lsbCBoYW5kbGUgYXBwbHlpbmcgYnVnIGZpeGVzCisrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK1dlIGNvcmUgbWFpbnRhaW5lcnMgZXhw
ZWN0IHRoYXQgcGVvcGxlIHN0aWxsIHVzaW5nIFB5dGhvbiAyLjcvMy40IGFuZCBiZWluZyBhZmZl
Y3RlZCBieQorYnVncyB0byBzdGVwIHVwIGFuZCBwcm92aWRlIHBhdGNoZXMgYW5kL29yIHBvcnQg
YnVnIGZpeGVzIGZyb20gdGhlIGFjdGl2ZSBicmFuY2hlcy4KKworV2Ugd2lsbCBiZSBoYXBweSB0
byBndWlkZSB1c2VycyBpbnRlcmVzdGVkIGluIGRvaW5nIHNvLCBzbyBwbGVhc2UgZG9uJ3QgaGVz
aXRhdGUgdG8gYXNrLgorCisqKkJhY2twb3J0aW5nIGNoYW5nZXMgaW50byA0LjYqKgorCitQbGVh
c2UgZm9sbG93IHRoZXNlIGluc3RydWN0aW9uczoKKworIy4gYGBnaXQgZmV0Y2ggLS1hbGwgLS1w
cnVuZWBgCisKKyMuIGBgZ2l0IGNoZWNrb3V0IG9yaWdpbi80LjYueCAtYiBiYWNrcG9ydC1YWFhY
YGAgIyB1c2UgdGhlIFBSIG51bWJlciBoZXJlCisKKyMuIExvY2F0ZSB0aGUgbWVyZ2UgY29tbWl0
IG9uIHRoZSBQUiwgaW4gdGhlICptZXJnZWQqIG1lc3NhZ2UsIGZvciBleGFtcGxlOgorCisgICAg
bmljb2RkZW11cyBtZXJnZWQgY29tbWl0IDBmOGI0NjIgaW50byBweXRlc3QtZGV2OmZlYXR1cmVz
CisKKyMuIGBgZ2l0IGNoZXJyeS1waWNrIC1tMSBSRVZJU0lPTmBgICMgdXNlIHRoZSByZXZpc2lv
biB5b3UgZm91bmQgYWJvdmUgKGBgMGY4YjQ2MmBgKS4KKworIy4gT3BlbiBhIFBSIHRhcmdldGlu
ZyBgYDQuNi54YGA6CisKKyAgICogUHJlZml4IHRoZSBtZXNzYWdlIHdpdGggYGBbNC42XWBgIHNv
IGl0IGlzIGFuIG9idmlvdXMgYmFja3BvcnQKKyAgICogRGVsZXRlIHRoZSBQUiBib2R5LCBpdCB1
c3VhbGx5IGNvbnRhaW5zIGEgZHVwbGljYXRlIGNvbW1pdCBtZXNzYWdlLgorCisqKlByb3ZpZGlu
ZyBuZXcgUFJzIHRvIDQuNioqCisKK0ZyZXNoIHB1bGwgcmVxdWVzdHMgdG8gYGA0LjYueGBgIHdp
bGwgYmUgYWNjZXB0ZWQgcHJvdmlkZWQgdGhhdAordGhlIGVxdWl2YWxlbnQgY29kZSBpbiB0aGUg
YWN0aXZlIGJyYW5jaGVzIGRvZXMgbm90IGNvbnRhaW4gdGhhdCBidWcgKGZvciBleGFtcGxlLCBh
IGJ1ZyBpcyBzcGVjaWZpYwordG8gUHl0aG9uIDIgb25seSkuCisKK0J1ZyBmaXhlcyB0aGF0IGFs
c28gaGFwcGVuIGluIHRoZSBtYWluc3RyZWFtIHZlcnNpb24gc2hvdWxkIGJlIGZpcnN0IGZpeGVk
Cit0aGVyZSwgYW5kIHRoZW4gYmFja3BvcnRlZCBhcyBwZXIgaW5zdHJ1Y3Rpb25zIGFib3ZlLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3B5dGhvbnBhdGgucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3B5dGhvbnBhdGgucnN0CmluZGV4IGI2NDc0Mjc2ODg3ZC4uYjhmNGRlOWQ5NWJj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHl0aG9ucGF0aC5yc3QKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3B5dGhvbnBhdGgucnN0CkBAIC0zLDExICszLDY1IEBACiBweXRlc3Qg
aW1wb3J0IG1lY2hhbmlzbXMgYW5kIGBgc3lzLnBhdGhgYC9gYFBZVEhPTlBBVEhgYAogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotSGVy
ZSdzIGEgbGlzdCBvZiBzY2VuYXJpb3Mgd2hlcmUgcHl0ZXN0IG1heSBuZWVkIHRvIGNoYW5nZSBg
YHN5cy5wYXRoYGAgaW4gb3JkZXIKLXRvIGltcG9ydCB0ZXN0IG1vZHVsZXMgb3IgYGBjb25mdGVz
dC5weWBgIGZpbGVzLgorLi4gX2BpbXBvcnQtbW9kZXNgOgorCitJbXBvcnQgbW9kZXMKKy0tLS0t
LS0tLS0tLQorCitweXRlc3QgYXMgYSB0ZXN0aW5nIGZyYW1ld29yayBuZWVkcyB0byBpbXBvcnQg
dGVzdCBtb2R1bGVzIGFuZCBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMgZm9yIGV4ZWN1dGlvbi4KKwor
SW1wb3J0aW5nIGZpbGVzIGluIFB5dGhvbiAoYXQgbGVhc3QgdW50aWwgcmVjZW50bHkpIGlzIGEg
bm9uLXRyaXZpYWwgcHJvY2Vzc2VzLCBvZnRlbiByZXF1aXJpbmcKK2NoYW5naW5nIGBzeXMucGF0
aCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3N5cy5odG1sI3N5cy5wYXRoPmBf
Xy4gU29tZSBhc3BlY3RzIG9mIHRoZQoraW1wb3J0IHByb2Nlc3MgY2FuIGJlIGNvbnRyb2xsZWQg
dGhyb3VnaCB0aGUgYGAtLWltcG9ydC1tb2RlYGAgY29tbWFuZC1saW5lIGZsYWcsIHdoaWNoIGNh
biBhc3N1bWUKK3RoZXNlIHZhbHVlczoKKworKiBgYHByZXBlbmRgYCAoZGVmYXVsdCk6IHRoZSBk
aXJlY3RvcnkgcGF0aCBjb250YWluaW5nIGVhY2ggbW9kdWxlIHdpbGwgYmUgaW5zZXJ0ZWQgaW50
byB0aGUgKmJlZ2lubmluZyoKKyAgb2YgYGBzeXMucGF0aGBgIGlmIG5vdCBhbHJlYWR5IHRoZXJl
LCBhbmQgdGhlbiBpbXBvcnRlZCB3aXRoIHRoZSBgX19pbXBvcnRfXyA8aHR0cHM6Ly9kb2NzLnB5
dGhvbi5vcmcvMy9saWJyYXJ5L2Z1bmN0aW9ucy5odG1sI19faW1wb3J0X18+YF9fIGJ1aWx0aW4u
CisKKyAgVGhpcyByZXF1aXJlcyB0ZXN0IG1vZHVsZSBuYW1lcyB0byBiZSB1bmlxdWUgd2hlbiB0
aGUgdGVzdCBkaXJlY3RvcnkgdHJlZSBpcyBub3QgYXJyYW5nZWQgaW4KKyAgcGFja2FnZXMsIGJl
Y2F1c2UgdGhlIG1vZHVsZXMgd2lsbCBwdXQgaW4gYGBzeXMubW9kdWxlc2BgIGFmdGVyIGltcG9y
dGluZy4KKworICBUaGlzIGlzIHRoZSBjbGFzc2ljIG1lY2hhbmlzbSwgZGF0aW5nIGJhY2sgZnJv
bSB0aGUgdGltZSBQeXRob24gMiB3YXMgc3RpbGwgc3VwcG9ydGVkLgorCisqIGBgYXBwZW5kYGA6
IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBlYWNoIG1vZHVsZSBpcyBhcHBlbmRlZCB0byB0aGUg
ZW5kIG9mIGBgc3lzLnBhdGhgYCBpZiBub3QgYWxyZWFkeQorICB0aGVyZSwgYW5kIGltcG9ydGVk
IHdpdGggYGBfX2ltcG9ydF9fYGAuCisKKyAgVGhpcyBiZXR0ZXIgYWxsb3dzIHRvIHJ1biB0ZXN0
IG1vZHVsZXMgYWdhaW5zdCBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgYSBwYWNrYWdlIGV2ZW4gaWYg
dGhlCisgIHBhY2thZ2UgdW5kZXIgdGVzdCBoYXMgdGhlIHNhbWUgaW1wb3J0IHJvb3QuIEZvciBl
eGFtcGxlOgorCisgIDo6CisKKyAgICAgICAgdGVzdGluZy9fX2luaXRfXy5weQorICAgICAgICB0
ZXN0aW5nL3Rlc3RfcGtnX3VuZGVyX3Rlc3QucHkKKyAgICAgICAgcGtnX3VuZGVyX3Rlc3QvCisK
KyAgdGhlIHRlc3RzIHdpbGwgcnVuIGFnYWluc3QgdGhlIGluc3RhbGxlZCB2ZXJzaW9uCisgIG9m
IGBgcGtnX3VuZGVyX3Rlc3RgYCB3aGVuIGBgLS1pbXBvcnQtbW9kZT1hcHBlbmRgYCBpcyB1c2Vk
IHdoZXJlYXMKKyAgd2l0aCBgYHByZXBlbmRgYCB0aGV5IHdvdWxkIHBpY2sgdXAgdGhlIGxvY2Fs
IHZlcnNpb24uIFRoaXMga2luZCBvZiBjb25mdXNpb24gaXMgd2h5CisgIHdlIGFkdm9jYXRlIGZv
ciB1c2luZyA6cmVmOmBzcmMgPHNyYy1sYXlvdXQ+YCBsYXlvdXRzLgorCisgIFNhbWUgYXMgYGBw
cmVwZW5kYGAsIHJlcXVpcmVzIHRlc3QgbW9kdWxlIG5hbWVzIHRvIGJlIHVuaXF1ZSB3aGVuIHRo
ZSB0ZXN0IGRpcmVjdG9yeSB0cmVlIGlzCisgIG5vdCBhcnJhbmdlZCBpbiBwYWNrYWdlcywgYmVj
YXVzZSB0aGUgbW9kdWxlcyB3aWxsIHB1dCBpbiBgYHN5cy5tb2R1bGVzYGAgYWZ0ZXIgaW1wb3J0
aW5nLgorCisqIGBgaW1wb3J0bGliYGA6IG5ldyBpbiBweXRlc3QtNi4wLCB0aGlzIG1vZGUgdXNl
cyBgaW1wb3J0bGliIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvaW1wb3J0bGli
Lmh0bWw+YF9fIHRvIGltcG9ydCB0ZXN0IG1vZHVsZXMuIFRoaXMgZ2l2ZXMgZnVsbCBjb250cm9s
IG92ZXIgdGhlIGltcG9ydCBwcm9jZXNzLCBhbmQgZG9lc24ndCByZXF1aXJlCisgIGNoYW5naW5n
IGBgc3lzLnBhdGhgYCBvciBgYHN5cy5tb2R1bGVzYGAgYXQgYWxsLgorCisgIEZvciB0aGlzIHJl
YXNvbiB0aGlzIGRvZXNuJ3QgcmVxdWlyZSB0ZXN0IG1vZHVsZSBuYW1lcyB0byBiZSB1bmlxdWUg
YXQgYWxsLCBidXQgYWxzbyBtYWtlcyB0ZXN0CisgIG1vZHVsZXMgbm9uLWltcG9ydGFibGUgYnkg
ZWFjaCBvdGhlci4gVGhpcyB3YXMgbWFkZSBwb3NzaWJsZSBpbiBwcmV2aW91cyBtb2RlcywgZm9y
IHRlc3RzIG5vdCByZXNpZGluZworICBpbiBQeXRob24gcGFja2FnZXMsIGJlY2F1c2Ugb2YgdGhl
IHNpZGUtZWZmZWN0cyBvZiBjaGFuZ2luZyBgYHN5cy5wYXRoYGAgYW5kIGBgc3lzLm1vZHVsZXNg
YAorICBtZW50aW9uZWQgYWJvdmUuIFVzZXJzIHdoaWNoIHJlcXVpcmUgdGhpcyBzaG91bGQgdHVy
biB0aGVpciB0ZXN0cyBpbnRvIHByb3BlciBwYWNrYWdlcyBpbnN0ZWFkLgorCisgIFdlIGludGVu
ZCB0byBtYWtlIGBgaW1wb3J0bGliYGAgdGhlIGRlZmF1bHQgaW4gZnV0dXJlIHJlbGVhc2VzLgor
CitgYHByZXBlbmRgYCBhbmQgYGBhcHBlbmRgYCBpbXBvcnQgbW9kZXMgc2NlbmFyaW9zCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUncyBh
IGxpc3Qgb2Ygc2NlbmFyaW9zIHdoZW4gdXNpbmcgYGBwcmVwZW5kYGAgb3IgYGBhcHBlbmRgYCBp
bXBvcnQgbW9kZXMgd2hlcmUgcHl0ZXN0IG5lZWRzIHRvCitjaGFuZ2UgYGBzeXMucGF0aGBgIGlu
IG9yZGVyIHRvIGltcG9ydCB0ZXN0IG1vZHVsZXMgb3IgYGBjb25mdGVzdC5weWBgIGZpbGVzLCBh
bmQgdGhlIGlzc3VlcyB1c2VycworbWlnaHQgZW5jb3VudGVyIGJlY2F1c2Ugb2YgdGhhdC4KIAog
VGVzdCBtb2R1bGVzIC8gYGBjb25mdGVzdC5weWBgIGZpbGVzIGluc2lkZSBwYWNrYWdlcwotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBDb25zaWRl
ciB0aGlzIGZpbGUgYW5kIGRpcmVjdG9yeSBsYXlvdXQ6OgogCkBAIC0yMiwxMSArNzYsMTEgQEAg
Q29uc2lkZXIgdGhpcyBmaWxlIGFuZCBkaXJlY3RvcnkgbGF5b3V0OjoKICAgICAgICAgICAgICB8
LSB0ZXN0X2Zvby5weQogCiAKLVdoZW4gZXhlY3V0aW5nOjoKLQotICAgIHB5dGVzdCByb290Lwor
V2hlbiBleGVjdXRpbmc6CiAKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKKyAgICBweXRlc3Qgcm9v
dC8KIAogcHl0ZXN0IHdpbGwgZmluZCBgYGZvby9iYXIvdGVzdHMvdGVzdF9mb28ucHlgYCBhbmQg
cmVhbGl6ZSBpdCBpcyBwYXJ0IG9mIGEgcGFja2FnZSBnaXZlbiB0aGF0CiB0aGVyZSdzIGFuIGBg
X19pbml0X18ucHlgYCBmaWxlIGluIHRoZSBzYW1lIGZvbGRlci4gSXQgd2lsbCB0aGVuIHNlYXJj
aCB1cHdhcmRzIHVudGlsIGl0IGNhbiBmaW5kIHRoZQpAQCAtNDIsNyArOTYsNyBAQCBhbmQgYWxs
b3cgdGVzdCBtb2R1bGVzIHRvIGhhdmUgZHVwbGljYXRlZCBuYW1lcy4gVGhpcyBpcyBhbHNvIGRp
c2N1c3NlZCBpbiBkZXRhaQogOnJlZjpgdGVzdCBkaXNjb3ZlcnlgLgogCiBTdGFuZGFsb25lIHRl
c3QgbW9kdWxlcyAvIGBgY29uZnRlc3QucHlgYCBmaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eCiAKIENvbnNpZGVyIHRoaXMgZmlsZSBhbmQgZGlyZWN0b3J5IGxh
eW91dDo6CiAKQEAgLTU0LDcgKzEwOCw5IEBAIENvbnNpZGVyIHRoaXMgZmlsZSBhbmQgZGlyZWN0
b3J5IGxheW91dDo6CiAgICAgICAgICAgICAgfC0gdGVzdF9mb28ucHkKIAogCi1XaGVuIGV4ZWN1
dGluZzo6CitXaGVuIGV4ZWN1dGluZzoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5
dGVzdCByb290LwogCkBAIC02OCw5ICsxMjQsMTMgQEAgaW1wb3J0ZWQgaW4gdGhlIGdsb2JhbCBp
bXBvcnQgbmFtZXNwYWNlLgogCiBUaGlzIGlzIGFsc28gZGlzY3Vzc2VkIGluIGRldGFpbHMgaW4g
OnJlZjpgdGVzdCBkaXNjb3ZlcnlgLgogCisuLiBfYHB5dGVzdCB2cyBweXRob24gLW0gcHl0ZXN0
YDoKKwogSW52b2tpbmcgYGBweXRlc3RgYCB2ZXJzdXMgYGBweXRob24gLW0gcHl0ZXN0YGAKIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJ1bm5pbmcg
cHl0ZXN0IHdpdGggYGBweXRob24gLW0gcHl0ZXN0IFsuLi5dYGAgaW5zdGVhZCBvZiBgYHB5dGVz
dCBbLi4uXWBgIHlpZWxkcyBuZWFybHkKLWVxdWl2YWxlbnQgYmVoYXZpb3VyLCBleGNlcHQgdGhh
dCB0aGUgZm9ybWVyIGNhbGwgd2lsbCBhZGQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIGBgc3lz
LnBhdGhgYC4KK1J1bm5pbmcgcHl0ZXN0IHdpdGggYGBweXRlc3QgWy4uLl1gYCBpbnN0ZWFkIG9m
IGBgcHl0aG9uIC1tIHB5dGVzdCBbLi4uXWBgIHlpZWxkcyBuZWFybHkKK2VxdWl2YWxlbnQgYmVo
YXZpb3VyLCBleGNlcHQgdGhhdCB0aGUgbGF0dGVyIHdpbGwgYWRkIHRoZSBjdXJyZW50IGRpcmVj
dG9yeSB0byBgYHN5cy5wYXRoYGAsIHdoaWNoCitpcyBzdGFuZGFyZCBgYHB5dGhvbmBgIGJlaGF2
aW9yLgorCiBTZWUgYWxzbyA6cmVmOmBjbWRsaW5lYC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9yZWZlcmVuY2UucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3JlZmVyZW5jZS5yc3QK
aW5kZXggZmU5ZTg3MDQyZjlhLi5kMTU0MGE4ZmYyYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9yZWZlcmVuY2UucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZWZlcmVuY2Uu
cnN0CkBAIC0xLDYgKzEsNyBAQAorLi4gX2ByZWZlcmVuY2VgOgogCi1SZWZlcmVuY2UKLT09PT09
PT09PQorQVBJIFJlZmVyZW5jZQorPT09PT09PT09PT09PQogCiBUaGlzIHBhZ2UgY29udGFpbnMg
dGhlIGZ1bGwgcmVmZXJlbmNlIHRvIHB5dGVzdCdzIEFQSS4KIApAQCAtMTQsNDIgKzE1LDQ0IEBA
IEZ1bmN0aW9ucwogcHl0ZXN0LmFwcHJveAogfn5+fn5+fn5+fn5+fgogCi0uLiBhdXRvZnVuY3Rp
b246OiBfcHl0ZXN0LnB5dGhvbl9hcGkuYXBwcm94CisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3Qu
YXBwcm94CiAKIHB5dGVzdC5mYWlsCiB+fn5+fn5+fn5+fgogCiAqKlR1dG9yaWFsKio6IDpyZWY6
YHNraXBwaW5nYAogCi0uLiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0Lm91dGNvbWVzLmZhaWwKKy4u
IGF1dG9mdW5jdGlvbjo6IHB5dGVzdC5mYWlsCiAKIHB5dGVzdC5za2lwCiB+fn5+fn5+fn5+fgog
Ci0uLiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0Lm91dGNvbWVzLnNraXAobXNnLCBbYWxsb3dfbW9k
dWxlX2xldmVsPUZhbHNlXSkKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdC5za2lwKG1zZywgW2Fs
bG93X21vZHVsZV9sZXZlbD1GYWxzZV0pCisKKy4uIF9gcHl0ZXN0LmltcG9ydG9yc2tpcCByZWZg
OgogCiBweXRlc3QuaW1wb3J0b3Jza2lwCiB+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLS4uIGF1dG9m
dW5jdGlvbjo6IF9weXRlc3Qub3V0Y29tZXMuaW1wb3J0b3Jza2lwCisuLiBhdXRvZnVuY3Rpb246
OiBweXRlc3QuaW1wb3J0b3Jza2lwCiAKIHB5dGVzdC54ZmFpbAogfn5+fn5+fn5+fn5+CiAKLS4u
IGF1dG9mdW5jdGlvbjo6IF9weXRlc3Qub3V0Y29tZXMueGZhaWwKKy4uIGF1dG9mdW5jdGlvbjo6
IHB5dGVzdC54ZmFpbAogCiBweXRlc3QuZXhpdAogfn5+fn5+fn5+fn4KIAotLi4gYXV0b2Z1bmN0
aW9uOjogX3B5dGVzdC5vdXRjb21lcy5leGl0CisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3QuZXhp
dAogCiBweXRlc3QubWFpbgogfn5+fn5+fn5+fn4KIAotLi4gYXV0b2Z1bmN0aW9uOjogX3B5dGVz
dC5jb25maWcubWFpbgorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0Lm1haW4KIAogcHl0ZXN0LnBh
cmFtCi1+fn5+fn5+fn5+fn5+Cit+fn5+fn5+fn5+fn4KIAogLi4gYXV0b2Z1bmN0aW9uOjogcHl0
ZXN0LnBhcmFtKCp2YWx1ZXMsIFtpZF0sIFttYXJrc10pCiAKQEAgLTU4LDcgKzYxLDcgQEAgcHl0
ZXN0LnJhaXNlcwogCiAqKlR1dG9yaWFsKio6IDpyZWY6YGFzc2VydHJhaXNlc2AuCiAKLS4uIGF1
dG9mdW5jdGlvbjo6IHB5dGVzdC5yYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uOiBFeGNlcHRpb24s
IFttYXRjaF0sIFttZXNzYWdlXSkKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdC5yYWlzZXMoZXhw
ZWN0ZWRfZXhjZXB0aW9uOiBFeGNlcHRpb24gWywgKiwgbWF0Y2hdKQogICAgIDp3aXRoOiBleGNp
bmZvCiAKIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwKQEAgLTg0LDYgKzg3LDEyIEBAIHB5dGVzdC53
YXJucwogLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0Lndhcm5zKGV4cGVjdGVkX3dhcm5pbmc6IEV4
Y2VwdGlvbiwgW21hdGNoXSkKICAgICA6d2l0aDoKIAorcHl0ZXN0LmZyZWV6ZV9pbmNsdWRlcwor
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyoqVHV0b3JpYWwqKjogOnJlZjpgZnJl
ZXppbmctcHl0ZXN0YC4KKworLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0LmZyZWV6ZV9pbmNsdWRl
cwogCiAuLiBfYG1hcmtzIHJlZmA6CiAKQEAgLTExMSwxMiArMTIwLDEzIEBAIEFkZCB3YXJuaW5n
IGZpbHRlcnMgdG8gbWFya2VkIHRlc3QgaXRlbXMuCiAgICAgICAgIEEgKndhcm5pbmcgc3BlY2lm
aWNhdGlvbiBzdHJpbmcqLCB3aGljaCBpcyBjb21wb3NlZCBvZiBjb250ZW50cyBvZiB0aGUgdHVw
bGUgYGAoYWN0aW9uLCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8pYGAKICAgICAg
ICAgYXMgc3BlY2lmaWVkIGluIGBUaGUgV2FybmluZ3MgZmlsdGVyIDxodHRwczovL2RvY3MucHl0
aG9uLm9yZy8zL2xpYnJhcnkvd2FybmluZ3MuaHRtbCN3YXJuaW5nLWZpbHRlcj5gXyBzZWN0aW9u
IG9mCiAgICAgICAgIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiwgc2VwYXJhdGVkIGJ5IGBgIjoi
YGAuIE9wdGlvbmFsIGZpZWxkcyBjYW4gYmUgb21pdHRlZC4KKyAgICAgICAgTW9kdWxlIG5hbWVz
IHBhc3NlZCBmb3IgZmlsdGVyaW5nIGFyZSBub3QgcmVnZXgtZXNjYXBlZC4KIAogICAgICAgICBG
b3IgZXhhbXBsZToKIAogICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAgICAgICAg
ICAgIEBweXRlc3QubWFyay53YXJuaW5ncygiaWdub3JlOi4qdXNhZ2Ugd2lsbCBiZSBkZXByZWNh
dGVkLio6RGVwcmVjYXRpb25XYXJuaW5nIikKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5maWx0
ZXJ3YXJuaW5ncygiaWdub3JlOi4qdXNhZ2Ugd2lsbCBiZSBkZXByZWNhdGVkLio6RGVwcmVjYXRp
b25XYXJuaW5nIikKICAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgogICAgICAgICAgICAgICAg
IC4uLgogCkBAIC0xMjgsNyArMTM4LDcgQEAgcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUKIAogKipU
dXRvcmlhbCoqOiA6ZG9jOmBwYXJhbWV0cml6ZWAuCiAKLS4uIGF1dG9tZXRob2Q6OiBfcHl0ZXN0
LnB5dGhvbi5NZXRhZnVuYy5wYXJhbWV0cml6ZQorVGhpcyBtYXJrIGhhcyB0aGUgc2FtZSBzaWdu
YXR1cmUgYXMgOnB5Om1ldGg6YF9weXRlc3QucHl0aG9uLk1ldGFmdW5jLnBhcmFtZXRyaXplYDsg
c2VlIHRoZXJlLgogCiAKIC4uIF9gcHl0ZXN0Lm1hcmsuc2tpcCByZWZgOgpAQCAtMTYxLDYgKzE3
MSwyOCBAQCBTa2lwIGEgdGVzdCBmdW5jdGlvbiBpZiBhIGNvbmRpdGlvbiBpcyBgYFRydWVgYC4K
ICAgICA6a2V5d29yZCBzdHIgcmVhc29uOiBSZWFzb24gd2h5IHRoZSB0ZXN0IGZ1bmN0aW9uIGlz
IGJlaW5nIHNraXBwZWQuCiAKIAorLi4gX2BweXRlc3QubWFyay51c2VmaXh0dXJlcyByZWZgOgor
CitweXRlc3QubWFyay51c2VmaXh0dXJlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworKipU
dXRvcmlhbCoqOiA6cmVmOmB1c2VmaXh0dXJlc2AuCisKK01hcmsgYSB0ZXN0IGZ1bmN0aW9uIGFz
IHVzaW5nIHRoZSBnaXZlbiBmaXh0dXJlIG5hbWVzLgorCisuLiBweTpmdW5jdGlvbjo6IHB5dGVz
dC5tYXJrLnVzZWZpeHR1cmVzKCpuYW1lcykKKworICAgIDpwYXJhbSBhcmdzOiBUaGUgbmFtZXMg
b2YgdGhlIGZpeHR1cmUgdG8gdXNlLCBhcyBzdHJpbmdzLgorCisuLiBub3RlOjoKKworICAgIFdo
ZW4gdXNpbmcgYHVzZWZpeHR1cmVzYCBpbiBob29rcywgaXQgY2FuIG9ubHkgbG9hZCBmaXh0dXJl
cyB3aGVuIGFwcGxpZWQgdG8gYSB0ZXN0IGZ1bmN0aW9uIGJlZm9yZSB0ZXN0IHNldHVwCisgICAg
KGZvciBleGFtcGxlIGluIHRoZSBgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXNgIGhvb2sp
LgorCisgICAgQWxzbyBub3QgdGhhdCBoaXMgbWFyayBoYXMgbm8gZWZmZWN0IHdoZW4gYXBwbGll
ZCB0byAqKmZpeHR1cmVzKiouCisKKworCiAuLiBfYHB5dGVzdC5tYXJrLnhmYWlsIHJlZmA6CiAK
IHB5dGVzdC5tYXJrLnhmYWlsCkBAIC0xNzMsMjMgKzIwNSwyOCBAQCBNYXJrcyBhIHRlc3QgZnVu
Y3Rpb24gYXMgKmV4cGVjdGVkIHRvIGZhaWwqLgogLi4gcHk6ZnVuY3Rpb246OiBweXRlc3QubWFy
ay54ZmFpbChjb25kaXRpb249Tm9uZSwgKiwgcmVhc29uPU5vbmUsIHJhaXNlcz1Ob25lLCBydW49
VHJ1ZSwgc3RyaWN0PUZhbHNlKQogCiAgICAgOnR5cGUgY29uZGl0aW9uOiBib29sIG9yIHN0cgot
ICAgIDpwYXJhbSBjb25kaXRpb246IGBgVHJ1ZS9GYWxzZWBgIGlmIHRoZSBjb25kaXRpb24gc2hv
dWxkIGJlIG1hcmtlZCBhcyB4ZmFpbCBvciBhIDpyZWY6YGNvbmRpdGlvbiBzdHJpbmcgPHN0cmlu
ZyBjb25kaXRpb25zPmAuCi0gICAgOmtleXdvcmQgc3RyIHJlYXNvbjogUmVhc29uIHdoeSB0aGUg
dGVzdCBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgeGZhaWwuCi0gICAgOmtleXdvcmQgRXhjZXB0aW9u
IHJhaXNlczogRXhjZXB0aW9uIHN1YmNsYXNzIGV4cGVjdGVkIHRvIGJlIHJhaXNlZCBieSB0aGUg
dGVzdCBmdW5jdGlvbjsgb3RoZXIgZXhjZXB0aW9ucyB3aWxsIGZhaWwgdGhlIHRlc3QuCisgICAg
OnBhcmFtIGNvbmRpdGlvbjoKKyAgICAgICAgQ29uZGl0aW9uIGZvciBtYXJraW5nIHRoZSB0ZXN0
IGZ1bmN0aW9uIGFzIHhmYWlsIChgYFRydWUvRmFsc2VgYCBvciBhCisgICAgICAgIDpyZWY6YGNv
bmRpdGlvbiBzdHJpbmcgPHN0cmluZyBjb25kaXRpb25zPmApLiBJZiBhIGJvb2wsIHlvdSBhbHNv
IGhhdmUKKyAgICAgICAgdG8gc3BlY2lmeSBgYHJlYXNvbmBgIChzZWUgOnJlZjpgY29uZGl0aW9u
IHN0cmluZyA8c3RyaW5nIGNvbmRpdGlvbnM+YCkuCisgICAgOmtleXdvcmQgc3RyIHJlYXNvbjoK
KyAgICAgICAgUmVhc29uIHdoeSB0aGUgdGVzdCBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgeGZhaWwu
CisgICAgOmtleXdvcmQgVHlwZVtFeGNlcHRpb25dIHJhaXNlczoKKyAgICAgICAgRXhjZXB0aW9u
IHN1YmNsYXNzIGV4cGVjdGVkIHRvIGJlIHJhaXNlZCBieSB0aGUgdGVzdCBmdW5jdGlvbjsgb3Ro
ZXIgZXhjZXB0aW9ucyB3aWxsIGZhaWwgdGhlIHRlc3QuCiAgICAgOmtleXdvcmQgYm9vbCBydW46
CiAgICAgICAgIElmIHRoZSB0ZXN0IGZ1bmN0aW9uIHNob3VsZCBhY3R1YWxseSBiZSBleGVjdXRl
ZC4gSWYgYGBGYWxzZWBgLCB0aGUgZnVuY3Rpb24gd2lsbCBhbHdheXMgeGZhaWwgYW5kIHdpbGwK
LSAgICAgICAgbm90IGJlIGV4ZWN1dGVkICh1c2VmdWwgYSBmdW5jdGlvbiBpcyBzZWdmYXVsdGlu
ZykuCisgICAgICAgIG5vdCBiZSBleGVjdXRlZCAodXNlZnVsIGlmIGEgZnVuY3Rpb24gaXMgc2Vn
ZmF1bHRpbmcpLgogICAgIDprZXl3b3JkIGJvb2wgc3RyaWN0OgogICAgICAgICAqIElmIGBgRmFs
c2VgYCAodGhlIGRlZmF1bHQpIHRoZSBmdW5jdGlvbiB3aWxsIGJlIHNob3duIGluIHRoZSB0ZXJt
aW5hbCBvdXRwdXQgYXMgYGB4ZmFpbGVkYGAgaWYgaXQgZmFpbHMKICAgICAgICAgICBhbmQgYXMg
YGB4cGFzc2BgIGlmIGl0IHBhc3Nlcy4gSW4gYm90aCBjYXNlcyB0aGlzIHdpbGwgbm90IGNhdXNl
IHRoZSB0ZXN0IHN1aXRlIHRvIGZhaWwgYXMgYSB3aG9sZS4gVGhpcwotICAgICAgICAgIGlzIHBh
cnRpY3VsYXJseSB1c2VmdWwgdG8gbWFyayAqZmxha3kqIHRlc3RzICh0ZXN0cyB0aGF0IHJhbmRv
bSBhdCBmYWlsKSB0byBiZSB0YWNrbGVkIGxhdGVyLgorICAgICAgICAgIGlzIHBhcnRpY3VsYXJs
eSB1c2VmdWwgdG8gbWFyayAqZmxha3kqIHRlc3RzICh0ZXN0cyB0aGF0IGZhaWwgYXQgcmFuZG9t
KSB0byBiZSB0YWNrbGVkIGxhdGVyLgogICAgICAgICAqIElmIGBgVHJ1ZWBgLCB0aGUgZnVuY3Rp
b24gd2lsbCBiZSBzaG93biBpbiB0aGUgdGVybWluYWwgb3V0cHV0IGFzIGBgeGZhaWxlZGBgIGlm
IGl0IGZhaWxzLCBidXQgaWYgaXQKICAgICAgICAgICB1bmV4cGVjdGVkbHkgcGFzc2VzIHRoZW4g
aXQgd2lsbCAqKmZhaWwqKiB0aGUgdGVzdCBzdWl0ZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl
ZnVsIHRvIG1hcmsgZnVuY3Rpb25zCiAgICAgICAgICAgdGhhdCBhcmUgYWx3YXlzIGZhaWxpbmcg
YW5kIHRoZXJlIHNob3VsZCBiZSBhIGNsZWFyIGluZGljYXRpb24gaWYgdGhleSB1bmV4cGVjdGVk
bHkgc3RhcnQgdG8gcGFzcyAoZm9yIGV4YW1wbGUKICAgICAgICAgICBhIG5ldyByZWxlYXNlIG9m
IGEgbGlicmFyeSBmaXhlcyBhIGtub3duIGJ1ZykuCiAKIAotY3VzdG9tIG1hcmtzCitDdXN0b20g
bWFya3MKIH5+fn5+fn5+fn5+fgogCiBNYXJrcyBhcmUgY3JlYXRlZCBkeW5hbWljYWxseSB1c2lu
ZyB0aGUgZmFjdG9yeSBvYmplY3QgYGBweXRlc3QubWFya2BgIGFuZCBhcHBsaWVkIGFzIGEgZGVj
b3JhdG9yLgpAQCAtMjAzLDcgKzI0MCw3IEBAIEZvciBleGFtcGxlOgogICAgICAgICAuLi4KIAog
V2lsbCBjcmVhdGUgYW5kIGF0dGFjaCBhIDpjbGFzczpgTWFyayA8X3B5dGVzdC5tYXJrLnN0cnVj
dHVyZXMuTWFyaz5gIG9iamVjdCB0byB0aGUgY29sbGVjdGVkCi06Y2xhc3M6YEl0ZW0gPF9weXRl
c3Qubm9kZXMuSXRlbT5gLCB3aGljaCBjYW4gdGhlbiBiZSBhY2Nlc3NlZCBieSBmaXh0dXJlcyBv
ciBob29rcyB3aXRoCis6Y2xhc3M6YEl0ZW0gPHB5dGVzdC5JdGVtPmAsIHdoaWNoIGNhbiB0aGVu
IGJlIGFjY2Vzc2VkIGJ5IGZpeHR1cmVzIG9yIGhvb2tzIHdpdGgKIDptZXRoOmBOb2RlLml0ZXJf
bWFya2VycyA8X3B5dGVzdC5ub2Rlcy5Ob2RlLml0ZXJfbWFya2Vycz5gLiBUaGUgYGBtYXJrYGAg
b2JqZWN0IHdpbGwgaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CiAKIC4uIGNvZGUtYmxv
Y2s6OiBweXRob24KQEAgLTIxMiw2ICsyNDksOCBAQCBXaWxsIGNyZWF0ZSBhbmQgYXR0YWNoIGEg
OmNsYXNzOmBNYXJrIDxfcHl0ZXN0Lm1hcmsuc3RydWN0dXJlcy5NYXJrPmAgb2JqZWN0IHRvCiAg
ICAgbWFyay5rd2FyZ3MgPT0geyJtZXRob2QiOiAidGhyZWFkIn0KIAogCisuLiBfYGZpeHR1cmVz
LWFwaWA6CisKIEZpeHR1cmVzCiAtLS0tLS0tLQogCkBAIC0yNDIsNiArMjgxLDggQEAgRXhhbXBs
ZSBvZiBhIGZpeHR1cmUgcmVxdWlyaW5nIGFub3RoZXIgZml4dHVyZToKIEZvciBtb3JlIGRldGFp
bHMsIGNvbnN1bHQgdGhlIGZ1bGwgOnJlZjpgZml4dHVyZXMgZG9jcyA8Zml4dHVyZT5gLgogCiAK
Ky4uIF9gcHl0ZXN0LmZpeHR1cmUtYXBpYDoKKwogQHB5dGVzdC5maXh0dXJlCiB+fn5+fn5+fn5+
fn5+fn4KIApAQCAtMjQ5LDcgKzI5MCw3IEBAIEZvciBtb3JlIGRldGFpbHMsIGNvbnN1bHQgdGhl
IGZ1bGwgOnJlZjpgZml4dHVyZXMgZG9jcyA8Zml4dHVyZT5gLgogICAgIDpkZWNvcmF0b3I6CiAK
IAotLi4gX2BjYWNoZS1hcGlgOgorLi4gZml4dHVyZTo6IGNhY2hlCiAKIGNvbmZpZy5jYWNoZQog
fn5+fn5+fn5+fn5+CkBAIC0yNzAsNiArMzExLDggQEAgVW5kZXIgdGhlIGhvb2QsIHRoZSBjYWNo
ZSBwbHVnaW4gdXNlcyB0aGUgc2ltcGxlCiAuLiBhdXRvbWV0aG9kOjogQ2FjaGUubWFrZWRpcgog
CiAKKy4uIGZpeHR1cmU6OiBjYXBzeXMKKwogY2Fwc3lzCiB+fn5+fn4KIApAQCAtMjk1LDYgKzMz
OCw4IEBAIGNhcHN5cwogICAgIDptZW1iZXJzOgogCiAKKy4uIGZpeHR1cmU6OiBjYXBzeXNiaW5h
cnkKKwogY2Fwc3lzYmluYXJ5CiB+fn5+fn5+fn5+fn4KIApAQCAtMzE1LDYgKzM2MCw4IEBAIGNh
cHN5c2JpbmFyeQogICAgICAgICAgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSBiImhlbGxvXG4i
CiAKIAorLi4gZml4dHVyZTo6IGNhcGZkCisKIGNhcGZkCiB+fn5+fn4KIApAQCAtMzMxLDEwICsz
NzgsMTIgQEAgY2FwZmQKIAogICAgICAgICBkZWYgdGVzdF9zeXN0ZW1fZWNobyhjYXBmZCk6CiAg
ICAgICAgICAgICBvcy5zeXN0ZW0oJ2VjaG8gImhlbGxvIicpCi0gICAgICAgICAgICBjYXB0dXJl
ZCA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkKKyAgICAgICAgICAgIGNhcHR1cmVkID0gY2FwZmQucmVh
ZG91dGVycigpCiAgICAgICAgICAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICJoZWxsb1xuIgog
CiAKKy4uIGZpeHR1cmU6OiBjYXBmZGJpbmFyeQorCiBjYXBmZGJpbmFyeQogfn5+fn5+fn5+fn5+
CiAKQEAgLTM1NSw2ICs0MDQsOCBAQCBjYXBmZGJpbmFyeQogICAgICAgICAgICAgYXNzZXJ0IGNh
cHR1cmVkLm91dCA9PSBiImhlbGxvXG4iCiAKIAorLi4gZml4dHVyZTo6IGRvY3Rlc3RfbmFtZXNw
YWNlCisKIGRvY3Rlc3RfbmFtZXNwYWNlCiB+fn5+fn5+fn5+fn5+fn5+fgogCkBAIC0zNzMsNiAr
NDI0LDggQEAgZG9jdGVzdF9uYW1lc3BhY2UKICAgICBGb3IgbW9yZSBkZXRhaWxzOiA6cmVmOmBk
b2N0ZXN0X25hbWVzcGFjZWAuCiAKIAorLi4gZml4dHVyZTo6IHJlcXVlc3QKKwogcmVxdWVzdAog
fn5+fn5+fgogCkBAIC0zODQsMTIgKzQzNywxNiBAQCBUaGUgYGByZXF1ZXN0YGAgZml4dHVyZSBp
cyBhIHNwZWNpYWwgZml4dHVyZSBwcm92aWRpbmcgaW5mb3JtYXRpb24gb2YgdGhlIHJlcXVlcwog
ICAgIDptZW1iZXJzOgogCiAKKy4uIGZpeHR1cmU6OiBweXRlc3Rjb25maWcKKwogcHl0ZXN0Y29u
ZmlnCiB+fn5+fn5+fn5+fn4KIAogLi4gYXV0b2Z1bmN0aW9uOjogX3B5dGVzdC5maXh0dXJlcy5w
eXRlc3Rjb25maWcoKQogCiAKKy4uIGZpeHR1cmU6OiByZWNvcmRfcHJvcGVydHkKKwogcmVjb3Jk
X3Byb3BlcnR5CiB+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTM5Nyw2ICs0NTQsMTkgQEAgcmVj
b3JkX3Byb3BlcnR5CiAKIC4uIGF1dG9mdW5jdGlvbjo6IF9weXRlc3QuanVuaXR4bWwucmVjb3Jk
X3Byb3BlcnR5KCkKIAorCisuLiBmaXh0dXJlOjogcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eQor
CityZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisK
KyoqVHV0b3JpYWwqKjogOnJlZjpgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSBleGFtcGxlYC4K
KworLi4gYXV0b2Z1bmN0aW9uOjogX3B5dGVzdC5qdW5pdHhtbC5yZWNvcmRfdGVzdHN1aXRlX3By
b3BlcnR5KCkKKworCisuLiBmaXh0dXJlOjogY2FwbG9nCisKIGNhcGxvZwogfn5+fn5+CiAKQEAg
LTQwNSwxMiArNDc1LDE0IEBAIGNhcGxvZwogLi4gYXV0b2Z1bmN0aW9uOjogX3B5dGVzdC5sb2dn
aW5nLmNhcGxvZygpCiAgICAgOm5vLWF1dG8tb3B0aW9uczoKIAotICAgIFRoaXMgcmV0dXJucyBh
IDpjbGFzczpgX3B5dGVzdC5sb2dnaW5nLkxvZ0NhcHR1cmVGaXh0dXJlYCBpbnN0YW5jZS4KKyAg
ICBSZXR1cm5zIGEgOmNsYXNzOmBfcHl0ZXN0LmxvZ2dpbmcuTG9nQ2FwdHVyZUZpeHR1cmVgIGlu
c3RhbmNlLgogCiAuLiBhdXRvY2xhc3M6OiBfcHl0ZXN0LmxvZ2dpbmcuTG9nQ2FwdHVyZUZpeHR1
cmUKICAgICA6bWVtYmVyczoKIAogCisuLiBmaXh0dXJlOjogbW9ua2V5cGF0Y2gKKwogbW9ua2V5
cGF0Y2gKIH5+fn5+fn5+fn5+CiAKQEAgLTQyMSwxMSArNDkzLDE0IEBAIG1vbmtleXBhdGNoCiAu
LiBhdXRvZnVuY3Rpb246OiBfcHl0ZXN0Lm1vbmtleXBhdGNoLm1vbmtleXBhdGNoKCkKICAgICA6
bm8tYXV0by1vcHRpb25zOgogCi0gICAgVGhpcyByZXR1cm5zIGEgOmNsYXNzOmBNb25rZXlQYXRj
aGAgaW5zdGFuY2UuCisgICAgUmV0dXJucyBhIDpjbGFzczpgTW9ua2V5UGF0Y2hgIGluc3RhbmNl
LgogCiAuLiBhdXRvY2xhc3M6OiBfcHl0ZXN0Lm1vbmtleXBhdGNoLk1vbmtleVBhdGNoCiAgICAg
Om1lbWJlcnM6CiAKKworLi4gZml4dHVyZTo6IHRlc3RkaXIKKwogdGVzdGRpcgogfn5+fn5+fgog
CkBAIC00MzQsMTQgKzUwOSwxNiBAQCB0ZXN0ZGlyCiBUaGlzIGZpeHR1cmUgcHJvdmlkZXMgYSA6
Y2xhc3M6YFRlc3RkaXJgIGluc3RhbmNlIHVzZWZ1bCBmb3IgYmxhY2stYm94IHRlc3Rpbmcgb2Yg
dGVzdCBmaWxlcywgbWFraW5nIGl0IGlkZWFsIHRvCiB0ZXN0IHBsdWdpbnMuCiAKLVRvIHVzZSBp
dCwgaW5jbHVkZSBpbiB5b3VyIHRvcC1tb3N0IGBgY29uZnRlc3QucHlgYCBmaWxlOjoKK1RvIHVz
ZSBpdCwgaW5jbHVkZSBpbiB5b3VyIHRvcC1tb3N0IGBgY29uZnRlc3QucHlgYCBmaWxlOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAgICBweXRlc3RfcGx1Z2lucyA9ICdweXRlc3RlcicK
KyAgICBweXRlc3RfcGx1Z2lucyA9ICJweXRlc3RlciIKIAogCiAKIC4uIGF1dG9jbGFzczo6IFRl
c3RkaXIoKQotICAgIDptZW1iZXJzOiBydW5weXRlc3QscnVucHl0ZXN0X3N1YnByb2Nlc3MscnVu
cHl0ZXN0X2lucHJvY2VzcyxtYWtlY29uZnRlc3QsbWFrZXB5ZmlsZQorICAgIDptZW1iZXJzOgog
CiAuLiBhdXRvY2xhc3M6OiBSdW5SZXN1bHQoKQogICAgIDptZW1iZXJzOgpAQCAtNDUwLDYgKzUy
Nyw4IEBAIFRvIHVzZSBpdCwgaW5jbHVkZSBpbiB5b3VyIHRvcC1tb3N0IGBgY29uZnRlc3QucHlg
YCBmaWxlOjoKICAgICA6bWVtYmVyczoKIAogCisuLiBmaXh0dXJlOjogcmVjd2FybgorCiByZWN3
YXJuCiB+fn5+fn5+CiAKQEAgLTQ2MCwxOSArNTM5LDQ4IEBAIHJlY3dhcm4KIC4uIGF1dG9mdW5j
dGlvbjo6IHJlY3dhcm4oKQogICAgIDpuby1hdXRvLW9wdGlvbnM6CiAKLS4uIGF1dG9jbGFzczo6
IF9weXRlc3QucmVjd2Fybi5XYXJuaW5nc1JlY29yZGVyKCkKKy4uIGF1dG9jbGFzczo6IFdhcm5p
bmdzUmVjb3JkZXIoKQogICAgIDptZW1iZXJzOgogCiBFYWNoIHJlY29yZGVkIHdhcm5pbmcgaXMg
YW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAuCiAKLS4uIG5v
dGU6OgotICAgIDpjbGFzczpgUmVjb3JkZWRXYXJuaW5nYCB3YXMgY2hhbmdlZCBmcm9tIGEgcGxh
aW4gY2xhc3MgdG8gYSBuYW1lZHR1cGxlIGluIHB5dGVzdCAzLjEKLQogLi4gbm90ZTo6CiAgICAg
YGBEZXByZWNhdGlvbldhcm5pbmdgYCBhbmQgYGBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYGAg
YXJlIHRyZWF0ZWQKICAgICBkaWZmZXJlbnRseTsgc2VlIDpyZWY6YGVuc3VyaW5nX2Z1bmN0aW9u
X3RyaWdnZXJzYC4KIAogCisuLiBmaXh0dXJlOjogdG1wX3BhdGgKKwordG1wX3BhdGgKK35+fn5+
fn5+CisKKyoqVHV0b3JpYWwqKjogOmRvYzpgdG1wZGlyYAorCisuLiBjdXJyZW50bW9kdWxlOjog
X3B5dGVzdC50bXBkaXIKKworLi4gYXV0b2Z1bmN0aW9uOjogdG1wX3BhdGgoKQorICAgIDpuby1h
dXRvLW9wdGlvbnM6CisKKworLi4gZml4dHVyZTo6IHRtcF9wYXRoX2ZhY3RvcnkKKwordG1wX3Bh
dGhfZmFjdG9yeQorfn5+fn5+fn5+fn5+fn5+fgorCisqKlR1dG9yaWFsKio6IDpyZWY6YHRtcF9w
YXRoX2ZhY3RvcnkgZXhhbXBsZWAKKworLi4gX2B0bXBfcGF0aF9mYWN0b3J5IGZhY3RvcnkgYXBp
YDoKKworYGB0bXBfcGF0aF9mYWN0b3J5YGAgaW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBt
ZXRob2RzOgorCisuLiBjdXJyZW50bW9kdWxlOjogX3B5dGVzdC50bXBkaXIKKworLi4gYXV0b21l
dGhvZDo6IFRlbXBQYXRoRmFjdG9yeS5ta3RlbXAKKy4uIGF1dG9tZXRob2Q6OiBUZW1wUGF0aEZh
Y3RvcnkuZ2V0YmFzZXRlbXAKKworCisuLiBmaXh0dXJlOjogdG1wZGlyCisKIHRtcGRpcgogfn5+
fn5+CiAKQEAgLTQ4NCw2ICs1OTIsOCBAQCB0bXBkaXIKICAgICA6bm8tYXV0by1vcHRpb25zOgog
CiAKKy4uIGZpeHR1cmU6OiB0bXBkaXJfZmFjdG9yeQorCiB0bXBkaXJfZmFjdG9yeQogfn5+fn5+
fn5+fn5+fn4KIApAQCAtNTIwLDYgKzYzMCw4IEBAIEJvb3RzdHJhcHBpbmcgaG9va3MgY2FsbGVk
IGZvciBwbHVnaW5zIHJlZ2lzdGVyZWQgZWFybHkgZW5vdWdoIChpbnRlcm5hbCBhbmQgc2V0CiAu
LiBhdXRvZnVuY3Rpb246OiBweXRlc3RfY21kbGluZV9wYXJzZQogLi4gYXV0b2Z1bmN0aW9uOjog
cHl0ZXN0X2NtZGxpbmVfbWFpbgogCisuLiBfYGluaXRpYWxpemF0aW9uLWhvb2tzYDoKKwogSW5p
dGlhbGl6YXRpb24gaG9va3MKIH5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTUzMiwyOCArNjQ0
LDcgQEAgSW5pdGlhbGl6YXRpb24gaG9va3MgY2FsbGVkIGZvciBwbHVnaW5zIGFuZCBgYGNvbmZ0
ZXN0LnB5YGAgZmlsZXMuCiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3Rfc2Vzc2lvbnN0YXJ0CiAu
LiBhdXRvZnVuY3Rpb246OiBweXRlc3Rfc2Vzc2lvbmZpbmlzaAogCi1UZXN0IHJ1bm5pbmcgaG9v
a3MKLX5+fn5+fn5+fn5+fn5+fn5+fgotCi1BbGwgcnVudGVzdCByZWxhdGVkIGhvb2tzIHJlY2Vp
dmUgYSA6cHk6Y2xhc3M6YHB5dGVzdC5JdGVtIDxfcHl0ZXN0Lm1haW4uSXRlbT5gIG9iamVjdC4K
LQotLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3Rsb29wCi0uLiBhdXRvZnVuY3Rpb246
OiBweXRlc3RfcnVudGVzdF9wcm90b2NvbAotLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRl
c3RfbG9nc3RhcnQKLS4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaAot
Li4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3Rfc2V0dXAKLS4uIGF1dG9mdW5jdGlvbjo6
IHB5dGVzdF9ydW50ZXN0X2NhbGwKLS4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0X3Rl
YXJkb3duCi0uLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0Ci0KLUZv
ciBkZWVwZXIgdW5kZXJzdGFuZGluZyB5b3UgbWF5IGxvb2sgYXQgdGhlIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24gb2YKLXRoZXNlIGhvb2tzIGluIDpweTptb2Q6YF9weXRlc3QucnVubmVyYCBhbmQg
bWF5YmUgYWxzbwotaW4gOnB5Om1vZDpgX3B5dGVzdC5wZGJgIHdoaWNoIGludGVyYWN0cyB3aXRo
IDpweTptb2Q6YF9weXRlc3QuY2FwdHVyZWAKLWFuZCBpdHMgaW5wdXQvb3V0cHV0IGNhcHR1cmlu
ZyBpbiBvcmRlciB0byBpbW1lZGlhdGVseSBkcm9wCi1pbnRvIGludGVyYWN0aXZlIGRlYnVnZ2lu
ZyB3aGVuIGEgdGVzdCBmYWlsdXJlIG9jY3Vycy4KLQotVGhlIDpweTptb2Q6YF9weXRlc3QudGVy
bWluYWxgIHJlcG9ydGVkIHNwZWNpZmljYWxseSB1c2VzCi10aGUgcmVwb3J0aW5nIGhvb2sgdG8g
cHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IHJ1bi4KKy4uIGF1dG9mdW5jdGlvbjo6IHB5
dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZAogCiBDb2xsZWN0aW9uIGhvb2tzCiB+fn5+fn5+fn5+fn5+
fn5+CkBAIC01NjIsOCArNjUzLDggQEAgQ29sbGVjdGlvbiBob29rcwogCiAuLiBhdXRvZnVuY3Rp
b246OiBweXRlc3RfY29sbGVjdGlvbgogLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2lnbm9yZV9j
b2xsZWN0Ci0uLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfY29sbGVjdF9kaXJlY3RvcnkKIC4uIGF1
dG9mdW5jdGlvbjo6IHB5dGVzdF9jb2xsZWN0X2ZpbGUKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVz
dF9weWNvbGxlY3RfbWFrZW1vZHVsZQogCiBGb3IgaW5mbHVlbmNpbmcgdGhlIGNvbGxlY3Rpb24g
b2Ygb2JqZWN0cyBpbiBQeXRob24gbW9kdWxlcwogeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBo
b29rOgpAQCAtNTc3LDEyICs2NjgsMzcgQEAgaXRlbXMsIGRlbGV0ZSBvciBvdGhlcndpc2UgYW1l
bmQgdGhlIHRlc3QgaXRlbXM6CiAKIC4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9jb2xsZWN0aW9u
X21vZGlmeWl0ZW1zCiAKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9jb2xsZWN0aW9uX2Zpbmlz
aAorCitUZXN0IHJ1bm5pbmcgKHJ1bnRlc3QpIGhvb2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+CisKK0FsbCBydW50ZXN0IHJlbGF0ZWQgaG9va3MgcmVjZWl2ZSBhIDpweTpjbGFzczpg
cHl0ZXN0Lkl0ZW0gPHB5dGVzdC5JdGVtPmAgb2JqZWN0LgorCisuLiBhdXRvZnVuY3Rpb246OiBw
eXRlc3RfcnVudGVzdGxvb3AKKy4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9ydW50ZXN0X3Byb3Rv
Y29sCisuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfcnVudGVzdF9sb2dzdGFydAorLi4gYXV0b2Z1
bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoCisuLiBhdXRvZnVuY3Rpb246OiBweXRl
c3RfcnVudGVzdF9zZXR1cAorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfY2FsbAor
Li4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24KKy4uIGF1dG9mdW5jdGlv
bjo6IHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQKKworRm9yIGRlZXBlciB1bmRlcnN0YW5kaW5n
IHlvdSBtYXkgbG9vayBhdCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZgordGhlc2UgaG9v
a3MgaW4gYGBfcHl0ZXN0LnJ1bm5lcmBgIGFuZCBtYXliZSBhbHNvCitpbiBgYF9weXRlc3QucGRi
YGAgd2hpY2ggaW50ZXJhY3RzIHdpdGggYGBfcHl0ZXN0LmNhcHR1cmVgYAorYW5kIGl0cyBpbnB1
dC9vdXRwdXQgY2FwdHVyaW5nIGluIG9yZGVyIHRvIGltbWVkaWF0ZWx5IGRyb3AKK2ludG8gaW50
ZXJhY3RpdmUgZGVidWdnaW5nIHdoZW4gYSB0ZXN0IGZhaWx1cmUgb2NjdXJzLgorCisuLiBhdXRv
ZnVuY3Rpb246OiBweXRlc3RfcHlmdW5jX2NhbGwKKwogUmVwb3J0aW5nIGhvb2tzCiB+fn5+fn5+
fn5+fn5+fn4KIAogU2Vzc2lvbiByZWxhdGVkIHJlcG9ydGluZyBob29rczoKIAogLi4gYXV0b2Z1
bmN0aW9uOjogcHl0ZXN0X2NvbGxlY3RzdGFydAorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X21h
a2VfY29sbGVjdF9yZXBvcnQKIC4uIGF1dG9mdW5jdGlvbjo6IHB5dGVzdF9pdGVtY29sbGVjdGVk
CiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfY29sbGVjdHJlcG9ydAogLi4gYXV0b2Z1bmN0aW9u
OjogcHl0ZXN0X2Rlc2VsZWN0ZWQKQEAgLTU5MiwxNiArNzA4LDE3IEBAIFNlc3Npb24gcmVsYXRl
ZCByZXBvcnRpbmcgaG9va3M6CiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfdGVybWluYWxfc3Vt
bWFyeQogLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2ZpeHR1cmVfc2V0dXAKIC4uIGF1dG9mdW5j
dGlvbjo6IHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyCisuLiBhdXRvZnVuY3Rpb246OiBw
eXRlc3Rfd2FybmluZ19jYXB0dXJlZAorLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X3dhcm5pbmdf
cmVjb3JkZWQKIAotQW5kIGhlcmUgaXMgdGhlIGNlbnRyYWwgaG9vayBmb3IgcmVwb3J0aW5nIGFi
b3V0Ci10ZXN0IGV4ZWN1dGlvbjoKK0NlbnRyYWwgaG9vayBmb3IgcmVwb3J0aW5nIGFib3V0IHRl
c3QgZXhlY3V0aW9uOgogCiAuLiBhdXRvZnVuY3Rpb246OiBweXRlc3RfcnVudGVzdF9sb2dyZXBv
cnQKIAotWW91IGNhbiBhbHNvIHVzZSB0aGlzIGhvb2sgdG8gY3VzdG9taXplIGFzc2VydGlvbiBy
ZXByZXNlbnRhdGlvbiBmb3Igc29tZQotdHlwZXM6CitBc3NlcnRpb24gcmVsYXRlZCBob29rczoK
IAogLi4gYXV0b2Z1bmN0aW9uOjogcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZQorLi4gYXV0b2Z1
bmN0aW9uOjogcHl0ZXN0X2Fzc2VydGlvbl9wYXNzCiAKIAogRGVidWdnaW5nL0ludGVyYWN0aW9u
IGhvb2tzCkBAIC02MzIsMTcgKzc0OSwyNSBAQCBDYWxsSW5mbwogQ2xhc3MKIH5+fn5+CiAKLS4u
IGF1dG9jbGFzczo6IF9weXRlc3QucHl0aG9uLkNsYXNzKCkKKy4uIGF1dG9jbGFzczo6IHB5dGVz
dC5DbGFzcygpCiAgICAgOm1lbWJlcnM6CiAgICAgOnNob3ctaW5oZXJpdGFuY2U6CiAKIENvbGxl
Y3Rvcgogfn5+fn5+fn5+CiAKLS4uIGF1dG9jbGFzczo6IF9weXRlc3Qubm9kZXMuQ29sbGVjdG9y
KCkKKy4uIGF1dG9jbGFzczo6IHB5dGVzdC5Db2xsZWN0b3IoKQogICAgIDptZW1iZXJzOgogICAg
IDpzaG93LWluaGVyaXRhbmNlOgogCitDb2xsZWN0UmVwb3J0Cit+fn5+fn5+fn5+fn5+CisKKy4u
IGF1dG9jbGFzczo6IF9weXRlc3QucmVwb3J0cy5Db2xsZWN0UmVwb3J0KCkKKyAgICA6bWVtYmVy
czoKKyAgICA6c2hvdy1pbmhlcml0YW5jZToKKyAgICA6aW5oZXJpdGVkLW1lbWJlcnM6CisKIENv
bmZpZwogfn5+fn5+CiAKQEAgLTY1NSw2ICs3ODAsMjEgQEAgRXhjZXB0aW9uSW5mbwogLi4gYXV0
b2NsYXNzOjogX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvCiAgICAgOm1lbWJlcnM6CiAKKwor
RXhpdENvZGUKK35+fn5+fn5+CisKKy4uIGF1dG9jbGFzczo6IHB5dGVzdC5FeGl0Q29kZQorICAg
IDptZW1iZXJzOgorCitGaWxlCit+fn5+CisKKy4uIGF1dG9jbGFzczo6IHB5dGVzdC5GaWxlKCkK
KyAgICA6bWVtYmVyczoKKyAgICA6c2hvdy1pbmhlcml0YW5jZToKKworCiBGaXh0dXJlRGVmCiB+
fn5+fn5+fn5+CiAKQEAgLTY3MiwxNCArODEyLDE0IEBAIEZTQ29sbGVjdG9yCiBGdW5jdGlvbgog
fn5+fn5+fn4KIAotLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5weXRob24uRnVuY3Rpb24oKQorLi4g
YXV0b2NsYXNzOjogcHl0ZXN0LkZ1bmN0aW9uKCkKICAgICA6bWVtYmVyczoKICAgICA6c2hvdy1p
bmhlcml0YW5jZToKIAogSXRlbQogfn5+fgogCi0uLiBhdXRvY2xhc3M6OiBfcHl0ZXN0Lm5vZGVz
Lkl0ZW0oKQorLi4gYXV0b2NsYXNzOjogcHl0ZXN0Lkl0ZW0oKQogICAgIDptZW1iZXJzOgogICAg
IDpzaG93LWluaGVyaXRhbmNlOgogCkBAIC02OTcsMTMgKzgzNyw2IEBAIE1hcmtHZW5lcmF0b3IK
ICAgICA6bWVtYmVyczoKIAogCi1NYXJrSW5mbwotfn5+fn5+fn4KLQotLi4gYXV0b2NsYXNzOjog
X3B5dGVzdC5tYXJrLk1hcmtJbmZvCi0gICAgOm1lbWJlcnM6Ci0KLQogTWFyawogfn5+fgogCkBA
IC03MjAsNyArODUzLDcgQEAgTWV0YWZ1bmMKIE1vZHVsZQogfn5+fn5+CiAKLS4uIGF1dG9jbGFz
czo6IF9weXRlc3QucHl0aG9uLk1vZHVsZSgpCisuLiBhdXRvY2xhc3M6OiBweXRlc3QuTW9kdWxl
KCkKICAgICA6bWVtYmVyczoKICAgICA6c2hvdy1pbmhlcml0YW5jZToKIApAQCAtNzM2LDEyICs4
NjksNiBAQCBQYXJzZXIKIC4uIGF1dG9jbGFzczo6IF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcu
UGFyc2VyKCkKICAgICA6bWVtYmVyczoKIAotUGx1Z2luTWFuYWdlcgotfn5+fn5+fn5+fn5+fgot
Ci0uLiBhdXRvY2xhc3M6OiBwbHVnZ3kuUGx1Z2luTWFuYWdlcigpCi0gICAgOm1lbWJlcnM6Ci0K
IAogUHl0ZXN0UGx1Z2luTWFuYWdlcgogfn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtNzQ5LDM2ICs4
NzYsNjYgQEAgUHl0ZXN0UGx1Z2luTWFuYWdlcgogLi4gYXV0b2NsYXNzOjogX3B5dGVzdC5jb25m
aWcuUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAgOm1lbWJlcnM6CiAgICAgOnVuZG9jLW1lbWJl
cnM6CisgICAgOmluaGVyaXRlZC1tZW1iZXJzOgogICAgIDpzaG93LWluaGVyaXRhbmNlOgogCiBT
ZXNzaW9uCiB+fn5+fn5+CiAKLS4uIGF1dG9jbGFzczo6IF9weXRlc3QubWFpbi5TZXNzaW9uKCkK
Ky4uIGF1dG9jbGFzczo6IHB5dGVzdC5TZXNzaW9uKCkKICAgICA6bWVtYmVyczoKICAgICA6c2hv
dy1pbmhlcml0YW5jZToKIAogVGVzdFJlcG9ydAogfn5+fn5+fn5+fgogCi0uLiBhdXRvY2xhc3M6
OiBfcHl0ZXN0LnJ1bm5lci5UZXN0UmVwb3J0KCkKKy4uIGF1dG9jbGFzczo6IF9weXRlc3QucmVw
b3J0cy5UZXN0UmVwb3J0KCkKICAgICA6bWVtYmVyczoKKyAgICA6c2hvdy1pbmhlcml0YW5jZToK
ICAgICA6aW5oZXJpdGVkLW1lbWJlcnM6CiAKIF9SZXN1bHQKIH5+fn5+fn4KIAotLi4gYXV0b2Ns
YXNzOjogcGx1Z2d5Ll9SZXN1bHQKLSAgICA6bWVtYmVyczoKK1Jlc3VsdCB1c2VkIHdpdGhpbiA6
cmVmOmBob29rIHdyYXBwZXJzIDxob29rd3JhcHBlcj5gLgogCi1TcGVjaWFsIFZhcmlhYmxlcwot
LS0tLS0tLS0tLS0tLS0tLS0KKy4uIGF1dG9jbGFzczo6IHBsdWdneS5jYWxsZXJzLl9SZXN1bHQK
Ky4uIGF1dG9tZXRob2Q6OiBwbHVnZ3kuY2FsbGVycy5fUmVzdWx0LmdldF9yZXN1bHQKKy4uIGF1
dG9tZXRob2Q6OiBwbHVnZ3kuY2FsbGVycy5fUmVzdWx0LmZvcmNlX3Jlc3VsdAogCi1weXRlc3Qg
dHJlYXRzIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcyBpbiBhIHNwZWNpYWwgbWFubmVyIHdoZW4gZGVm
aW5lZCBpbiBhIHRlc3QgbW9kdWxlLgorR2xvYmFsIFZhcmlhYmxlcworLS0tLS0tLS0tLS0tLS0t
LQogCitweXRlc3QgdHJlYXRzIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcyBpbiBhIHNwZWNpYWwgbWFu
bmVyIHdoZW4gZGVmaW5lZCBpbiBhIHRlc3QgbW9kdWxlIG9yCitgYGNvbmZ0ZXN0LnB5YGAgZmls
ZXMuCisKKworLi4gZ2xvYmFsdmFyOjogY29sbGVjdF9pZ25vcmUKKworKipUdXRvcmlhbCoqOiA6
cmVmOmBjdXN0b21pemluZy10ZXN0LWNvbGxlY3Rpb25gCisKK0NhbiBiZSBkZWNsYXJlZCBpbiAq
Y29uZnRlc3QucHkgZmlsZXMqIHRvIGV4Y2x1ZGUgdGVzdCBkaXJlY3RvcmllcyBvciBtb2R1bGVz
LgorTmVlZHMgdG8gYmUgYGBsaXN0W3N0cl1gYC4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgor
CisgIGNvbGxlY3RfaWdub3JlID0gWyJzZXR1cC5weSJdCisKKworLi4gZ2xvYmFsdmFyOjogY29s
bGVjdF9pZ25vcmVfZ2xvYgorCisqKlR1dG9yaWFsKio6IDpyZWY6YGN1c3RvbWl6aW5nLXRlc3Qt
Y29sbGVjdGlvbmAKKworQ2FuIGJlIGRlY2xhcmVkIGluICpjb25mdGVzdC5weSBmaWxlcyogdG8g
ZXhjbHVkZSB0ZXN0IGRpcmVjdG9yaWVzIG9yIG1vZHVsZXMKK3dpdGggVW5peCBzaGVsbC1zdHls
ZSB3aWxkY2FyZHMuIE5lZWRzIHRvIGJlIGBgbGlzdFtzdHJdYGAgd2hlcmUgYGBzdHJgYCBjYW4K
K2NvbnRhaW4gZ2xvYiBwYXR0ZXJucy4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgIGNv
bGxlY3RfaWdub3JlX2dsb2IgPSBbIipfaWdub3JlLnB5Il0KIAotcHl0ZXN0X3BsdWdpbnMKLX5+
fn5+fn5+fn5+fn5+CisKKy4uIGdsb2JhbHZhcjo6IHB5dGVzdF9wbHVnaW5zCiAKICoqVHV0b3Jp
YWwqKjogOnJlZjpgYXZhaWxhYmxlIGluc3RhbGxhYmxlIHBsdWdpbnNgCiAKQEAgLTc5NCwxMyAr
OTUxLDEyIEBAIENhbiBiZSBlaXRoZXIgYSBgYHN0cmBgIG9yIGBgU2VxdWVuY2Vbc3RyXWBgLgog
ICAgIHB5dGVzdF9wbHVnaW5zID0gKCJteWFwcC50ZXN0c3VwcG9ydC50b29scyIsICJteWFwcC50
ZXN0c3VwcG9ydC5yZWdyZXNzaW9uIikKIAogCi1weXRlc3RfbWFyawotfn5+fn5+fn5+fn4KKy4u
IGdsb2JhbHZhcjo6IHB5dGVzdG1hcmsKIAogKipUdXRvcmlhbCoqOiA6cmVmOmBzY29wZWQtbWFy
a2luZ2AKIAogQ2FuIGJlIGRlY2xhcmVkIGF0IHRoZSAqKmdsb2JhbCoqIGxldmVsIGluICp0ZXN0
IG1vZHVsZXMqIHRvIGFwcGx5IG9uZSBvciBtb3JlIDpyZWY6YG1hcmtzIDxtYXJrcyByZWY+YCB0
byBhbGwKLXRlc3QgZnVuY3Rpb25zIGFuZCBtZXRob2RzLiBDYW4gYmUgZWl0aGVyIGEgc2luZ2xl
IG1hcmsgb3IgYSBzZXF1ZW5jZSBvZiBtYXJrcy4KK3Rlc3QgZnVuY3Rpb25zIGFuZCBtZXRob2Rz
LiBDYW4gYmUgZWl0aGVyIGEgc2luZ2xlIG1hcmsgb3IgYSBsaXN0IG9mIG1hcmtzIChhcHBsaWVk
IGluIGxlZnQtdG8tcmlnaHQgb3JkZXIpLgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKQEAg
LTgxMywxMyArOTY5LDcgQEAgdGVzdCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuIENhbiBiZSBlaXRo
ZXIgYSBzaW5nbGUgbWFyayBvciBhIHNlcXVlbmNlIG9mIG1hcmtzLgogCiAgICAgaW1wb3J0IHB5
dGVzdAogCi0gICAgcHl0ZXN0bWFyayA9IChweXRlc3QubWFyay5pbnRlZ3JhdGlvbiwgcHl0ZXN0
Lm1hcmsuc2xvdykKLQotUFlURVNUX0RPTlRfUkVXUklURSAobW9kdWxlIGRvY3N0cmluZykKLX5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVRoZSB0ZXh0IGBgUFlURVNU
X0RPTlRfUkVXUklURWBgIGNhbiBiZSBhZGQgdG8gYW55ICoqbW9kdWxlIGRvY3N0cmluZyoqIHRv
IGRpc2FibGUKLTpyZWY6YGFzc2VydGlvbiByZXdyaXRpbmcgPGFzc2VydCBpbnRyb3NwZWN0aW9u
PmAgZm9yIHRoYXQgbW9kdWxlLgorICAgIHB5dGVzdG1hcmsgPSBbcHl0ZXN0Lm1hcmsuaW50ZWdy
YXRpb24sIHB5dGVzdC5tYXJrLnNsb3ddCiAKIAogRW52aXJvbm1lbnQgVmFyaWFibGVzCkBAIC04
MjcsMTkgKzk3NywyNiBAQCBFbnZpcm9ubWVudCBWYXJpYWJsZXMKIAogRW52aXJvbm1lbnQgdmFy
aWFibGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hhbmdlIHB5dGVzdCdzIGJlaGF2aW9yLgogCi1Q
WVRFU1RfQURET1BUUwotfn5+fn5+fn5+fn5+fn4KKy4uIGVudnZhcjo6IFBZVEVTVF9BRERPUFRT
CiAKIFRoaXMgY29udGFpbnMgYSBjb21tYW5kLWxpbmUgKHBhcnNlZCBieSB0aGUgcHk6bW9kOmBz
aGxleGAgbW9kdWxlKSB0aGF0IHdpbGwgYmUgKipwcmVwZW5kZWQqKiB0byB0aGUgY29tbWFuZCBs
aW5lIGdpdmVuCiBieSB0aGUgdXNlciwgc2VlIDpyZWY6YGFkZGluZyBkZWZhdWx0IG9wdGlvbnNg
IGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi1QWVRFU1RfREVCVUcKLX5+fn5+fn5+fn5+fgorLi4g
ZW52dmFyOjogUFlURVNUX0NVUlJFTlRfVEVTVAorCitUaGlzIGlzIG5vdCBtZWFudCB0byBiZSBz
ZXQgYnkgdXNlcnMsIGJ1dCBpcyBzZXQgYnkgcHl0ZXN0IGludGVybmFsbHkgd2l0aCB0aGUgbmFt
ZSBvZiB0aGUgY3VycmVudCB0ZXN0IHNvIG90aGVyCitwcm9jZXNzZXMgY2FuIGluc3BlY3QgaXQs
IHNlZSA6cmVmOmBweXRlc3QgY3VycmVudCB0ZXN0IGVudmAgZm9yIG1vcmUgaW5mb3JtYXRpb24u
CisKKy4uIGVudnZhcjo6IFBZVEVTVF9ERUJVRwogCiBXaGVuIHNldCwgcHl0ZXN0IHdpbGwgcHJp
bnQgdHJhY2luZyBhbmQgZGVidWcgaW5mb3JtYXRpb24uCiAKLVBZVEVTVF9QTFVHSU5TCi1+fn5+
fn5+fn5+fn5+fgorLi4gZW52dmFyOjogUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FECisK
K1doZW4gc2V0LCBkaXNhYmxlcyBwbHVnaW4gYXV0by1sb2FkaW5nIHRocm91Z2ggc2V0dXB0b29s
cyBlbnRyeXBvaW50cy4gT25seSBleHBsaWNpdGx5IHNwZWNpZmllZCBwbHVnaW5zIHdpbGwgYmUK
K2xvYWRlZC4KKworLi4gZW52dmFyOjogUFlURVNUX1BMVUdJTlMKIAogQ29udGFpbnMgY29tbWEt
c2VwYXJhdGVkIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IHNob3VsZCBiZSBsb2FkZWQgYXMgcGx1Z2lu
czoKIApAQCAtODQ3LDEyICsxMDA0LDY1IEBAIENvbnRhaW5zIGNvbW1hLXNlcGFyYXRlZCBsaXN0
IG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgYmUgbG9hZGVkIGFzIHBsdWdpbnM6CiAKICAgICBleHBv
cnQgUFlURVNUX1BMVUdJTlM9bXltb2R1bGUucGx1Z2luLHhkaXN0CiAKKy4uIGVudnZhcjo6IFBZ
X0NPTE9SUwogCi1QWVRFU1RfQ1VSUkVOVF9URVNUCi1+fn5+fn5+fn5+fn5+fn5+fn5+CitXaGVu
IHNldCB0byBgYDFgYCwgcHl0ZXN0IHdpbGwgdXNlIGNvbG9yIGluIHRlcm1pbmFsIG91dHB1dC4K
K1doZW4gc2V0IHRvIGBgMGBgLCBweXRlc3Qgd2lsbCBub3QgdXNlIGNvbG9yLgorYGBQWV9DT0xP
UlNgYCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYGBOT19DT0xPUmBgIGFuZCBgYEZPUkNFX0NPTE9S
YGAuCiAKLVRoaXMgaXMgbm90IG1lYW50IHRvIGJlIHNldCBieSB1c2VycywgYnV0IGlzIHNldCBi
eSBweXRlc3QgaW50ZXJuYWxseSB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRlc3Qgc28g
b3RoZXIKLXByb2Nlc3NlcyBjYW4gaW5zcGVjdCBpdCwgc2VlIDpyZWY6YHB5dGVzdCBjdXJyZW50
IHRlc3QgZW52YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKy4uIGVudnZhcjo6IE5PX0NPTE9SCisK
K1doZW4gc2V0IChyZWdhcmRsZXNzIG9mIHZhbHVlKSwgcHl0ZXN0IHdpbGwgbm90IHVzZSBjb2xv
ciBpbiB0ZXJtaW5hbCBvdXRwdXQuCitgYFBZX0NPTE9SU2BgIHRha2VzIHByZWNlZGVuY2Ugb3Zl
ciBgYE5PX0NPTE9SYGAsIHdoaWNoIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgYEZPUkNFX0NPTE9S
YGAuCitTZWUgYG5vLWNvbG9yLm9yZyA8aHR0cHM6Ly9uby1jb2xvci5vcmcvPmBfXyBmb3Igb3Ro
ZXIgbGlicmFyaWVzIHN1cHBvcnRpbmcgdGhpcyBjb21tdW5pdHkgc3RhbmRhcmQuCisKKy4uIGVu
dnZhcjo6IEZPUkNFX0NPTE9SCisKK1doZW4gc2V0IChyZWdhcmRsZXNzIG9mIHZhbHVlKSwgcHl0
ZXN0IHdpbGwgdXNlIGNvbG9yIGluIHRlcm1pbmFsIG91dHB1dC4KK2BgUFlfQ09MT1JTYGAgYW5k
IGBgTk9fQ09MT1JgYCB0YWtlIHByZWNlZGVuY2Ugb3ZlciBgYEZPUkNFX0NPTE9SYGAuCisKK0V4
Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LlVzYWdlRXJyb3Io
KQorICAgIDpzaG93LWluaGVyaXRhbmNlOgorCisuLiBfYHdhcm5pbmdzIHJlZmA6CisKK1dhcm5p
bmdzCistLS0tLS0tLQorCitDdXN0b20gd2FybmluZ3MgZ2VuZXJhdGVkIGluIHNvbWUgc2l0dWF0
aW9ucyBzdWNoIGFzIGltcHJvcGVyIHVzYWdlIG9yIGRlcHJlY2F0ZWQgZmVhdHVyZXMuCisKKy4u
IGF1dG9jbGFzczo6IHB5dGVzdC5QeXRlc3RXYXJuaW5nCisgICA6c2hvdy1pbmhlcml0YW5jZToK
KworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LlB5dGVzdEFzc2VydFJld3JpdGVXYXJuaW5nCisgICA6
c2hvdy1pbmhlcml0YW5jZToKKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0LlB5dGVzdENhY2hlV2Fy
bmluZworICAgOnNob3ctaW5oZXJpdGFuY2U6CisKKy4uIGF1dG9jbGFzczo6IHB5dGVzdC5QeXRl
c3RDb2xsZWN0aW9uV2FybmluZworICAgOnNob3ctaW5oZXJpdGFuY2U6CisKKy4uIGF1dG9jbGFz
czo6IHB5dGVzdC5QeXRlc3RDb25maWdXYXJuaW5nCisgICA6c2hvdy1pbmhlcml0YW5jZToKKwor
Li4gYXV0b2NsYXNzOjogcHl0ZXN0LlB5dGVzdERlcHJlY2F0aW9uV2FybmluZworICAgOnNob3ct
aW5oZXJpdGFuY2U6CisKKy4uIGF1dG9jbGFzczo6IHB5dGVzdC5QeXRlc3RFeHBlcmltZW50YWxB
cGlXYXJuaW5nCisgICA6c2hvdy1pbmhlcml0YW5jZToKKworLi4gYXV0b2NsYXNzOjogcHl0ZXN0
LlB5dGVzdFVuaGFuZGxlZENvcm91dGluZVdhcm5pbmcKKyAgIDpzaG93LWluaGVyaXRhbmNlOgor
CisuLiBhdXRvY2xhc3M6OiBweXRlc3QuUHl0ZXN0VW5rbm93bk1hcmtXYXJuaW5nCisgICA6c2hv
dy1pbmhlcml0YW5jZToKKworCitDb25zdWx0IHRoZSA6cmVmOmBpbnRlcm5hbC13YXJuaW5nc2Ag
c2VjdGlvbiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCiAu
LiBfYGluaSBvcHRpb25zIHJlZmA6CkBAIC04NjAsMTEgKzEwNzAsMTcgQEAgcHJvY2Vzc2VzIGNh
biBpbnNwZWN0IGl0LCBzZWUgOnJlZjpgcHl0ZXN0IGN1cnJlbnQgdGVzdCBlbnZgIGZvciBtb3Jl
IGluZm9ybWF0aW8KIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLUhlcmUgaXMgYSBsaXN0IG9mIGJ1aWx0aW4gY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQg
bWF5IGJlIHdyaXR0ZW4gaW4gYSBgYHB5dGVzdC5pbmlgYCwgYGB0b3guaW5pYGAgb3IgYGBzZXR1
cC5jZmdgYAotZmlsZSwgdXN1YWxseSBsb2NhdGVkIGF0IHRoZSByb290IG9mIHlvdXIgcmVwb3Np
dG9yeS4gQWxsIG9wdGlvbnMgbXVzdCBiZSB1bmRlciBhIGBgW3B5dGVzdF1gYCBzZWN0aW9uCi0o
YGBbdG9vbDpweXRlc3RdYGAgZm9yIGBgc2V0dXAuY2ZnYGAgZmlsZXMpLgorSGVyZSBpcyBhIGxp
c3Qgb2YgYnVpbHRpbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtYXkgYmUgd3JpdHRlbiBp
biBhIGBgcHl0ZXN0LmluaWBgLCBgYHB5cHJvamVjdC50b21sYGAsIGBgdG94LmluaWBgIG9yIGBg
c2V0dXAuY2ZnYGAKK2ZpbGUsIHVzdWFsbHkgbG9jYXRlZCBhdCB0aGUgcm9vdCBvZiB5b3VyIHJl
cG9zaXRvcnkuIFRvIHNlZSBlYWNoIGZpbGUgZm9ybWF0IGluIGRldGFpbHMsIHNlZQorOnJlZjpg
Y29uZmlnIGZpbGUgZm9ybWF0c2AuCiAKLUNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb25zIG1heSBi
ZSBvdmVyd3JpdHRlbiBpbiB0aGUgY29tbWFuZC1saW5lIGJ5IHVzaW5nIGBgLW8vLS1vdmVycmlk
ZWBgLCB3aGljaCBjYW4gYWxzbyBiZQorLi4gd2FybmluZzo6CisgICAgVXNhZ2Ugb2YgYGBzZXR1
cC5jZmdgYCBpcyBub3QgcmVjb21tZW5kZWQgZXhjZXB0IGZvciB2ZXJ5IHNpbXBsZSB1c2UgY2Fz
ZXMuIGBgLmNmZ2BgCisgICAgZmlsZXMgdXNlIGEgZGlmZmVyZW50IHBhcnNlciB0aGFuIGBgcHl0
ZXN0LmluaWBgIGFuZCBgYHRveC5pbmlgYCB3aGljaCBtaWdodCBjYXVzZSBoYXJkIHRvIHRyYWNr
CisgICAgZG93biBwcm9ibGVtcy4KKyAgICBXaGVuIHBvc3NpYmxlLCBpdCBpcyByZWNvbW1lbmRl
ZCB0byB1c2UgdGhlIGxhdHRlciBmaWxlcywgb3IgYGBweXByb2plY3QudG9tbGBgLCB0byBob2xk
IHlvdXIgcHl0ZXN0IGNvbmZpZ3VyYXRpb24uCisKK0NvbmZpZ3VyYXRpb24gb3B0aW9ucyBtYXkg
YmUgb3ZlcndyaXR0ZW4gaW4gdGhlIGNvbW1hbmQtbGluZSBieSB1c2luZyBgYC1vLy0tb3ZlcnJp
ZGUtaW5pYGAsIHdoaWNoIGNhbiBhbHNvIGJlCiBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBl
eHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAogICAgcHl0
ZXN0IC1vIGNvbnNvbGVfb3V0cHV0X3N0eWxlPWNsYXNzaWMgLW8gY2FjaGVfZGlyPS90bXAvbXlj
YWNoZQpAQCAtODgxLDcgKzEwOTcsOSBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBl
Y3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKICAgICAgICAgW3B5
dGVzdF0KICAgICAgICAgYWRkb3B0cyA9IC0tbWF4ZmFpbD0yIC1yZiAgIyBleGl0IGFmdGVyIDIg
ZmFpbHVyZXMsIHJlcG9ydCBmYWlsIGluZm8KIAotICAgaXNzdWluZyBgYHB5dGVzdCB0ZXN0X2hl
bGxvLnB5YGAgYWN0dWFsbHkgbWVhbnM6OgorICAgaXNzdWluZyBgYHB5dGVzdCB0ZXN0X2hlbGxv
LnB5YGAgYWN0dWFsbHkgbWVhbnM6CisKKyAgIC4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICAg
ICAgcHl0ZXN0IC0tbWF4ZmFpbD0yIC1yZiB0ZXN0X2hlbGxvLnB5CiAKQEAgLTg5MCw4ICsxMTA4
LDYgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFt
ZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2YWw6OiBjYWNoZV9kaXIKIAotICAg
Li4gdmVyc2lvbmFkZGVkOjogMy4yCi0KICAgIFNldHMgYSBkaXJlY3Rvcnkgd2hlcmUgc3RvcmVz
IGNvbnRlbnQgb2YgY2FjaGUgcGx1Z2luLiBEZWZhdWx0IGRpcmVjdG9yeSBpcwogICAgYGAucHl0
ZXN0X2NhY2hlYGAgd2hpY2ggaXMgY3JlYXRlZCBpbiA6cmVmOmByb290ZGlyIDxyb290ZGlyPmAu
IERpcmVjdG9yeSBtYXkgYmUKICAgIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGguIElmIHNldHRp
bmcgcmVsYXRpdmUgcGF0aCwgdGhlbiBkaXJlY3RvcnkgaXMgY3JlYXRlZApAQCAtOTEwLDEyICsx
MTI2LDEzIEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBg
YG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6OgogCiAuLiBjb25mdmFsOjogY29uc29sZV9vdXRw
dXRfc3R5bGUKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogICAgU2V0cyB0aGUgY29u
c29sZSBvdXRwdXQgc3R5bGUgd2hpbGUgcnVubmluZyB0ZXN0czoKIAogICAgKiBgYGNsYXNzaWNg
YDogY2xhc3NpYyBweXRlc3Qgb3V0cHV0LgogICAgKiBgYHByb2dyZXNzYGA6IGxpa2UgY2xhc3Np
YyBweXRlc3Qgb3V0cHV0LCBidXQgd2l0aCBhIHByb2dyZXNzIGluZGljYXRvci4KKyAgICogYGBj
b3VudGBgOiBsaWtlIHByb2dyZXNzLCBidXQgc2hvd3MgcHJvZ3Jlc3MgYXMgdGhlIG51bWJlciBv
ZiB0ZXN0cyBjb21wbGV0ZWQgaW5zdGVhZCBvZiBhIHBlcmNlbnQuCiAKICAgIFRoZSBkZWZhdWx0
IGlzIGBgcHJvZ3Jlc3NgYCwgYnV0IHlvdSBjYW4gZmFsbGJhY2sgdG8gYGBjbGFzc2ljYGAgaWYg
eW91IHByZWZlciBvcgogICAgdGhlIG5ldyBtb2RlIGlzIGNhdXNpbmcgdW5leHBlY3RlZCBwcm9i
bGVtczoKQEAgLTkyOSw3ICsxMTQ2LDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhw
ZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2
YWw6OiBkb2N0ZXN0X2VuY29kaW5nCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorCiAKICAg
IERlZmF1bHQgZW5jb2RpbmcgdG8gdXNlIHRvIGRlY29kZSB0ZXh0IGZpbGVzIHdpdGggZG9jc3Ry
aW5ncy4KICAgIDpkb2M6YFNlZSBob3cgcHl0ZXN0IGhhbmRsZXMgZG9jdGVzdHMgPGRvY3Rlc3Q+
YC4KQEAgLTk0MywxMiArMTE2MCwxMyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBl
Y3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAogLi4gY29uZnZh
bDo6IGVtcHR5X3BhcmFtZXRlcl9zZXRfbWFyawogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy40
CisKIAogICAgIEFsbG93cyB0byBwaWNrIHRoZSBhY3Rpb24gZm9yIGVtcHR5IHBhcmFtZXRlcnNl
dHMgaW4gcGFyYW1ldGVyaXphdGlvbgogCiAgICAgKiBgYHNraXBgYCBza2lwcyB0ZXN0cyB3aXRo
IGFuIGVtcHR5IHBhcmFtZXRlcnNldCAoZGVmYXVsdCkKICAgICAqIGBgeGZhaWxgYCBtYXJrcyB0
ZXN0cyB3aXRoIGFuIGVtcHR5IHBhcmFtZXRlcnNldCBhcyB4ZmFpbChydW49RmFsc2UpCisgICAg
KiBgYGZhaWxfYXRfY29sbGVjdGBgIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgcGFyYW1ldHJpemUg
Y29sbGVjdHMgYW4gZW1wdHkgcGFyYW1ldGVyIHNldAogCiAgICAgLi4gY29kZS1ibG9jazo6IGlu
aQogCkBAIC05NjMsOSArMTE4MSwyNiBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBl
Y3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKICAgICAgIGZvciBt
b3JlIGRldGFpbHMuCiAKIAorLi4gY29uZnZhbDo6IGZhdWx0aGFuZGxlcl90aW1lb3V0CisKKyAg
IER1bXBzIHRoZSB0cmFjZWJhY2tzIG9mIGFsbCB0aHJlYWRzIGlmIGEgdGVzdCB0YWtlcyBsb25n
ZXIgdGhhbiBgYFhgYCBzZWNvbmRzIHRvIHJ1biAoaW5jbHVkaW5nCisgICBmaXh0dXJlIHNldHVw
IGFuZCB0ZWFyZG93bikuIEltcGxlbWVudGVkIHVzaW5nIHRoZSBgZmF1bHRoYW5kbGVyLmR1bXBf
dHJhY2ViYWNrX2xhdGVyYF8gZnVuY3Rpb24sCisgICBzbyBhbGwgY2F2ZWF0cyB0aGVyZSBhcHBs
eS4KKworICAgLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgICAgICMgY29udGVudCBvZiBweXRl
c3QuaW5pCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGZhdWx0aGFuZGxlcl90aW1lb3V0PTUK
KworICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHJlZmVyIHRvIDpyZWY6YGZhdWx0aGFu
ZGxlcmAuCisKKy4uIF9gZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyYDogaHR0cHM6
Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5odG1sI2ZhdWx0aGFuZGxl
ci5kdW1wX3RyYWNlYmFja19sYXRlcgorCisKIC4uIGNvbmZ2YWw6OiBmaWx0ZXJ3YXJuaW5ncwog
Ci0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKwogCiAgICBTZXRzIGEgbGlzdCBvZiBmaWx0ZXJz
IGFuZCBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHRha2VuIGZvciBtYXRjaGVkCiAgICB3YXJuaW5n
cy4gQnkgZGVmYXVsdCBhbGwgd2FybmluZ3MgZW1pdHRlZCBkdXJpbmcgdGhlIHRlc3Qgc2Vzc2lv
bgpAQCAtOTgzLDkgKzEyMTgsNzIgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0
ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAgICBpbnRvIGVycm9y
cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHJlZmVyIHRvIDpyZWY6YHdhcm5pbmdzYC4K
IAogCi0uLiBjb25mdmFsOjoganVuaXRfc3VpdGVfbmFtZQorLi4gY29uZnZhbDo6IGp1bml0X2R1
cmF0aW9uX3JlcG9ydAorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogNC4xCisKKyAgICBDb25maWd1
cmVzIGhvdyBkdXJhdGlvbnMgYXJlIHJlY29yZGVkIGludG8gdGhlIEpVbml0IFhNTCByZXBvcnQ6
CisKKyAgICAqIGBgdG90YWxgYCAodGhlIGRlZmF1bHQpOiBkdXJhdGlvbiB0aW1lcyByZXBvcnRl
ZCBpbmNsdWRlIHNldHVwLCBjYWxsLCBhbmQgdGVhcmRvd24gdGltZXMuCisgICAgKiBgYGNhbGxg
YDogZHVyYXRpb24gdGltZXMgcmVwb3J0ZWQgaW5jbHVkZSBvbmx5IGNhbGwgdGltZXMsIGV4Y2x1
ZGluZyBzZXR1cCBhbmQgdGVhcmRvd24uCisKKyAgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAg
ICAgICAgW3B5dGVzdF0KKyAgICAgICAganVuaXRfZHVyYXRpb25fcmVwb3J0ID0gY2FsbAorCisK
Ky4uIGNvbmZ2YWw6OiBqdW5pdF9mYW1pbHkKKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDQuMgor
CisgICAgQ29uZmlndXJlcyB0aGUgZm9ybWF0IG9mIHRoZSBnZW5lcmF0ZWQgSlVuaXQgWE1MIGZp
bGUuIFRoZSBwb3NzaWJsZSBvcHRpb25zIGFyZToKKworICAgICogYGB4dW5pdDFgYCAob3IgYGBs
ZWdhY3lgYCk6IHByb2R1Y2VzIG9sZCBzdHlsZSBvdXRwdXQsIGNvbXBhdGlibGUgd2l0aCB0aGUg
eHVuaXQgMS4wIGZvcm1hdC4gKipUaGlzIGlzIHRoZSBkZWZhdWx0KiouCisgICAgKiBgYHh1bml0
MmBgOiBwcm9kdWNlcyBgeHVuaXQgMi4wIHN0eWxlIG91dHB1dCA8aHR0cHM6Ly9naXRodWIuY29t
L2plbmtpbnNjaS94dW5pdC1wbHVnaW4vYmxvYi94dW5pdC0yLjMuMi9zcmMvbWFpbi9yZXNvdXJj
ZXMvb3JnL2plbmtpbnNjaS9wbHVnaW5zL3h1bml0L3R5cGVzL21vZGVsL3hzZC9qdW5pdC0xMC54
c2Q+YF9fLAorICAgICAgICB3aGljaCBzaG91bGQgYmUgbW9yZSBjb21wYXRpYmxlIHdpdGggbGF0
ZXN0IEplbmtpbnMgdmVyc2lvbnMuCisKKyAgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAg
ICAgW3B5dGVzdF0KKyAgICAgICAganVuaXRfZmFtaWx5ID0geHVuaXQyCisKKworLi4gY29uZnZh
bDo6IGp1bml0X2xvZ2dpbmcKIAotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgIC4uIHZl
cnNpb25hZGRlZDo6IDMuNQorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogNS40CisgICAgICAgIGBg
bG9nYGAsIGBgYWxsYGAsIGBgb3V0LWVycmBgIG9wdGlvbnMgYWRkZWQuCisKKyAgICBDb25maWd1
cmVzIGlmIGNhcHR1cmVkIG91dHB1dCBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGUgSlVuaXQgWE1M
IGZpbGUuIFZhbGlkIHZhbHVlcyBhcmU6CisKKyAgICAqIGBgbG9nYGA6IHdyaXRlIG9ubHkgYGBs
b2dnaW5nYGAgY2FwdHVyZWQgb3V0cHV0LgorICAgICogYGBzeXN0ZW0tb3V0YGA6IHdyaXRlIGNh
cHR1cmVkIGBgc3Rkb3V0YGAgY29udGVudHMuCisgICAgKiBgYHN5c3RlbS1lcnJgYDogd3JpdGUg
Y2FwdHVyZWQgYGBzdGRlcnJgYCBjb250ZW50cy4KKyAgICAqIGBgb3V0LWVycmBgOiB3cml0ZSBi
b3RoIGNhcHR1cmVkIGBgc3Rkb3V0YGAgYW5kIGBgc3RkZXJyYGAgY29udGVudHMuCisgICAgKiBg
YGFsbGBgOiB3cml0ZSBjYXB0dXJlZCBgYGxvZ2dpbmdgYCwgYGBzdGRvdXRgYCBhbmQgYGBzdGRl
cnJgYCBjb250ZW50cy4KKyAgICAqIGBgbm9gYCAodGhlIGRlZmF1bHQpOiBubyBjYXB0dXJlZCBv
dXRwdXQgaXMgd3JpdHRlbi4KKworICAgIC4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgICAgICBb
cHl0ZXN0XQorICAgICAgICBqdW5pdF9sb2dnaW5nID0gc3lzdGVtLW91dAorCisKKy4uIGNvbmZ2
YWw6OiBqdW5pdF9sb2dfcGFzc2luZ190ZXN0cworCisgICAgLi4gdmVyc2lvbmFkZGVkOjogNC42
CisKKyAgICBJZiBgYGp1bml0X2xvZ2dpbmcgIT0gIm5vImBgLCBjb25maWd1cmVzIGlmIHRoZSBj
YXB0dXJlZCBvdXRwdXQgc2hvdWxkIGJlIHdyaXR0ZW4KKyAgICB0byB0aGUgSlVuaXQgWE1MIGZp
bGUgZm9yICoqcGFzc2luZyoqIHRlc3RzLiBEZWZhdWx0IGlzIGBgVHJ1ZWBgLgorCisgICAgLi4g
Y29kZS1ibG9jazo6IGluaQorCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGp1bml0X2xvZ19w
YXNzaW5nX3Rlc3RzID0gRmFsc2UKKworCisuLiBjb25mdmFsOjoganVuaXRfc3VpdGVfbmFtZQog
CiAgICAgVG8gc2V0IHRoZSBuYW1lIG9mIHRoZSByb290IHRlc3Qgc3VpdGUgeG1sIGl0ZW0sIHlv
dSBjYW4gY29uZmlndXJlIHRoZSBgYGp1bml0X3N1aXRlX25hbWVgYCBvcHRpb24gaW4geW91ciBj
b25maWcgZmlsZToKIApAQCAtOTk0LDEwICsxMjkyLDQyIEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1l
cy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6Ogog
ICAgICAgICBbcHl0ZXN0XQogICAgICAgICBqdW5pdF9zdWl0ZV9uYW1lID0gbXlfc3VpdGUKIAor
Li4gY29uZnZhbDo6IGxvZ19hdXRvX2luZGVudAorCisgICAgQWxsb3cgc2VsZWN0aXZlIGF1dG8t
aW5kZW50YXRpb24gb2YgbXVsdGlsaW5lIGxvZyBtZXNzYWdlcy4KKworICAgIFN1cHBvcnRzIGNv
bW1hbmQgbGluZSBvcHRpb24gYGAtLWxvZy1hdXRvLWluZGVudCBbdmFsdWVdYGAKKyAgICBhbmQg
Y29uZmlnIG9wdGlvbiBgYGxvZ19hdXRvX2luZGVudCA9IFt2YWx1ZV1gYCB0byBzZXQgdGhlCisg
ICAgYXV0by1pbmRlbnRhdGlvbiBiZWhhdmlvciBmb3IgYWxsIGxvZ2dpbmcuCisKKyAgICBgYFt2
YWx1ZV1gYCBjYW4gYmU6CisgICAgICAgICogVHJ1ZSBvciAiT24iIC0gRHluYW1pY2FsbHkgYXV0
by1pbmRlbnQgbXVsdGlsaW5lIGxvZyBtZXNzYWdlcworICAgICAgICAqIEZhbHNlIG9yICJPZmYi
IG9yIDAgLSBEbyBub3QgYXV0by1pbmRlbnQgbXVsdGlsaW5lIGxvZyBtZXNzYWdlcyAodGhlIGRl
ZmF1bHQgYmVoYXZpb3IpCisgICAgICAgICogW3Bvc2l0aXZlIGludGVnZXJdIC0gYXV0by1pbmRl
bnQgbXVsdGlsaW5lIGxvZyBtZXNzYWdlcyBieSBbdmFsdWVdIHNwYWNlcworCisgICAgLi4gY29k
ZS1ibG9jazo6IGluaQorCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGxvZ19hdXRvX2luZGVu
dCA9IEZhbHNlCisKKyAgICBTdXBwb3J0cyBwYXNzaW5nIGt3YXJnIGBgZXh0cmE9eyJhdXRvX2lu
ZGVudCI6IFt2YWx1ZV19YGAgdG8KKyAgICBjYWxscyB0byBgYGxvZ2dpbmcubG9nKClgYCB0byBz
cGVjaWZ5IGF1dG8taW5kZW50YXRpb24gYmVoYXZpb3IgZm9yCisgICAgYSBzcGVjaWZpYyBlbnRy
eSBpbiB0aGUgbG9nLiBgYGV4dHJhYGAga3dhcmcgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBzcGVjaWZp
ZWQKKyAgICBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluIHRoZSBjb25maWcuCisKKy4uIGNvbmZ2
YWw6OiBsb2dfY2xpCisKKyAgICBFbmFibGUgbG9nIGRpc3BsYXkgZHVyaW5nIHRlc3QgcnVuIChh
bHNvIGtub3duIGFzIDpyZWY6YCJsaXZlIGxvZ2dpbmciIDxsaXZlX2xvZ3M+YCkuCisgICAgVGhl
IGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorCisgICAgLi4gY29kZS1ibG9jazo6IGluaQorCisgICAg
ICAgIFtweXRlc3RdCisgICAgICAgIGxvZ19jbGkgPSBUcnVlCiAKIC4uIGNvbmZ2YWw6OiBsb2df
Y2xpX2RhdGVfZm9ybWF0CiAKLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0
cyBhIDpweTpmdW5jOmB0aW1lLnN0cmZ0aW1lYC1jb21wYXRpYmxlIHN0cmluZyB0aGF0IHdpbGwg
YmUgdXNlZCB3aGVuIGZvcm1hdHRpbmcgZGF0ZXMgZm9yIGxpdmUgbG9nZ2luZy4KIApAQCAtMTAx
MCw3ICsxMzQwLDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0
IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2YWw6OiBsb2dfY2xp
X2Zvcm1hdAogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogICAgIFNldHMgYSA6cHk6
bW9kOmBsb2dnaW5nYC1jb21wYXRpYmxlIHN0cmluZyB1c2VkIHRvIGZvcm1hdCBsaXZlIGxvZ2dp
bmcgbWVzc2FnZXMuCiAKQEAgLTEwMjQsNyArMTM1NCw3IEBAIHBhc3NlZCBtdWx0aXBsZSB0aW1l
cy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6Ogog
CiAuLiBjb25mdmFsOjogbG9nX2NsaV9sZXZlbAogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4z
CisKIAogICAgIFNldHMgdGhlIG1pbmltdW0gbG9nIG1lc3NhZ2UgbGV2ZWwgdGhhdCBzaG91bGQg
YmUgY2FwdHVyZWQgZm9yIGxpdmUgbG9nZ2luZy4gVGhlIGludGVnZXIgdmFsdWUgb3IKICAgICB0
aGUgbmFtZXMgb2YgdGhlIGxldmVscyBjYW4gYmUgdXNlZC4KQEAgLTEwMzksNyArMTM2OSw3IEBA
IHBhc3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9dmFs
dWVgYC4gRm9yIGV4YW1wbGU6OgogCiAuLiBjb25mdmFsOjogbG9nX2RhdGVfZm9ybWF0CiAKLSAg
ICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAgICAgU2V0cyBhIDpweTpmdW5jOmB0aW1lLnN0
cmZ0aW1lYC1jb21wYXRpYmxlIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIGZvcm1hdHRp
bmcgZGF0ZXMgZm9yIGxvZ2dpbmcgY2FwdHVyZS4KIApAQCAtMTA1Myw3ICsxMzgzLDcgQEAgcGFz
c2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBg
LiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2YWw6OiBsb2dfZmlsZQogCi0gICAgLi4gdmVyc2lv
bmFkZGVkOjogMy4zCisKIAogICAgIFNldHMgYSBmaWxlIG5hbWUgcmVsYXRpdmUgdG8gdGhlIGBg
cHl0ZXN0LmluaWBgIGZpbGUgd2hlcmUgbG9nIG1lc3NhZ2VzIHNob3VsZCBiZSB3cml0dGVuIHRv
LCBpbiBhZGRpdGlvbgogICAgIHRvIHRoZSBvdGhlciBsb2dnaW5nIGZhY2lsaXRpZXMgdGhhdCBh
cmUgYWN0aXZlLgpAQCAtMTA2OCw3ICsxMzk4LDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBU
aGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4u
IGNvbmZ2YWw6OiBsb2dfZmlsZV9kYXRlX2Zvcm1hdAogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjog
My4zCisKIAogICAgIFNldHMgYSA6cHk6ZnVuYzpgdGltZS5zdHJmdGltZWAtY29tcGF0aWJsZSBz
dHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBmb3JtYXR0aW5nIGRhdGVzIGZvciB0aGUgbG9n
Z2luZyBmaWxlLgogCkBAIC0xMDgxLDcgKzE0MTEsNyBAQCBwYXNzZWQgbXVsdGlwbGUgdGltZXMu
IFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBleGFtcGxlOjoKIAog
Li4gY29uZnZhbDo6IGxvZ19maWxlX2Zvcm1hdAogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4z
CisKIAogICAgIFNldHMgYSA6cHk6bW9kOmBsb2dnaW5nYC1jb21wYXRpYmxlIHN0cmluZyB1c2Vk
IHRvIGZvcm1hdCBsb2dnaW5nIG1lc3NhZ2VzIHJlZGlyZWN0ZWQgdG8gdGhlIGxvZ2dpbmcgZmls
ZS4KIApAQCAtMTA5NCw3ICsxNDI0LDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhw
ZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2
YWw6OiBsb2dfZmlsZV9sZXZlbAogCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogICAg
IFNldHMgdGhlIG1pbmltdW0gbG9nIG1lc3NhZ2UgbGV2ZWwgdGhhdCBzaG91bGQgYmUgY2FwdHVy
ZWQgZm9yIHRoZSBsb2dnaW5nIGZpbGUuIFRoZSBpbnRlZ2VyIHZhbHVlIG9yCiAgICAgdGhlIG5h
bWVzIG9mIHRoZSBsZXZlbHMgY2FuIGJlIHVzZWQuCkBAIC0xMTA5LDcgKzE0MzksNyBAQCBwYXNz
ZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAu
IEZvciBleGFtcGxlOjoKIAogLi4gY29uZnZhbDo6IGxvZ19mb3JtYXQKIAotICAgIC4uIHZlcnNp
b25hZGRlZDo6IDMuMworCiAKICAgICBTZXRzIGEgOnB5Om1vZDpgbG9nZ2luZ2AtY29tcGF0aWJs
ZSBzdHJpbmcgdXNlZCB0byBmb3JtYXQgY2FwdHVyZWQgbG9nZ2luZyBtZXNzYWdlcy4KIApAQCAt
MTEyMyw3ICsxNDUzLDcgQEAgcGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9y
bWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6CiAKIC4uIGNvbmZ2YWw6OiBsb2df
bGV2ZWwKIAotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKICAgICBTZXRzIHRoZSBtaW5p
bXVtIGxvZyBtZXNzYWdlIGxldmVsIHRoYXQgc2hvdWxkIGJlIGNhcHR1cmVkIGZvciBsb2dnaW5n
IGNhcHR1cmUuIFRoZSBpbnRlZ2VyIHZhbHVlIG9yCiAgICAgdGhlIG5hbWVzIG9mIHRoZSBsZXZl
bHMgY2FuIGJlIHVzZWQuCkBAIC0xMTM2LDMyICsxNDY2LDI4IEBAIHBhc3NlZCBtdWx0aXBsZSB0
aW1lcy4gVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgYG5hbWU9dmFsdWVgYC4gRm9yIGV4YW1wbGU6
OgogICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgOnJlZjpgbG9nZ2luZ2AuCiAKIAotLi4g
Y29uZnZhbDo6IGxvZ19wcmludAotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLSAgICBJ
ZiBzZXQgdG8gYGBGYWxzZWBgLCB3aWxsIGRpc2FibGUgZGlzcGxheWluZyBjYXB0dXJlZCBsb2dn
aW5nIG1lc3NhZ2VzIGZvciBmYWlsZWQgdGVzdHMuCi0KLSAgICAuLiBjb2RlLWJsb2NrOjogaW5p
Ci0KLSAgICAgICAgW3B5dGVzdF0KLSAgICAgICAgbG9nX3ByaW50ID0gRmFsc2UKLQotICAgIEZv
ciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgOnJlZjpgbG9nZ2luZ2AuCi0KLQogLi4gY29uZnZhbDo6
IG1hcmtlcnMKIAotICAgIExpc3Qgb2YgbWFya2VycyB0aGF0IGFyZSBhbGxvd2VkIGluIHRlc3Qg
ZnVuY3Rpb25zLCBlbmZvcmNlZCB3aGVuIGBgLS1zdHJpY3RgYCBjb21tYW5kLWxpbmUgYXJndW1l
bnQgaXMgdXNlZC4KLSAgICBZb3UgY2FuIHVzZSBhIG1hcmtlciBuYW1lIHBlciBsaW5lLCBpbmRl
bnRlZCBmcm9tIHRoZSBvcHRpb24gbmFtZS4KKyAgICBXaGVuIHRoZSBgYC0tc3RyaWN0LW1hcmtl
cnNgYCBvciBgYC0tc3RyaWN0YGAgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhcmUgdXNlZCwKKyAg
ICBvbmx5IGtub3duIG1hcmtlcnMgLSBkZWZpbmVkIGluIGNvZGUgYnkgY29yZSBweXRlc3Qgb3Ig
c29tZSBwbHVnaW4gLSBhcmUgYWxsb3dlZC4KKworICAgIFlvdSBjYW4gbGlzdCBhZGRpdGlvbmFs
IG1hcmtlcnMgaW4gdGhpcyBzZXR0aW5nIHRvIGFkZCB0aGVtIHRvIHRoZSB3aGl0ZWxpc3QsCisg
ICAgaW4gd2hpY2ggY2FzZSB5b3UgcHJvYmFibHkgd2FudCB0byBhZGQgYGAtLXN0cmljdC1tYXJr
ZXJzYGAgdG8gYGBhZGRvcHRzYGAKKyAgICB0byBhdm9pZCBmdXR1cmUgcmVncmVzc2lvbnM6CiAK
ICAgICAuLiBjb2RlLWJsb2NrOjogaW5pCiAKICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgYWRk
b3B0cyA9IC0tc3RyaWN0LW1hcmtlcnMKICAgICAgICAgbWFya2VycyA9CiAgICAgICAgICAgICBz
bG93CiAgICAgICAgICAgICBzZXJpYWwKIAorICAgIC4uIG5vdGU6OgorICAgICAgICBUaGUgdXNl
IG9mIGBgLS1zdHJpY3QtbWFya2Vyc2BgIGlzIGhpZ2hseSBwcmVmZXJyZWQuIGBgLS1zdHJpY3Rg
YCB3YXMga2VwdCBmb3IKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5IGFuZCBt
YXkgYmUgY29uZnVzaW5nIGZvciBvdGhlcnMgYXMgaXQgb25seSBhcHBsaWVzIHRvCisgICAgICAg
IG1hcmtlcnMgYW5kIG5vdCB0byBvdGhlciBvcHRpb25zLgorCiAuLiBjb25mdmFsOjogbWludmVy
c2lvbgogCiAgICBTcGVjaWZpZXMgYSBtaW5pbWFsIHB5dGVzdCB2ZXJzaW9uIHJlcXVpcmVkIGZv
ciBydW5uaW5nIHRlc3RzLgpAQCAtMTIxMCw3ICsxNTM2LDggQEAgcGFzc2VkIG11bHRpcGxlIHRp
bWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3IgZXhhbXBsZTo6
CiAuLiBjb25mdmFsOjogcHl0aG9uX2NsYXNzZXMKIAogICAgT25lIG9yIG1vcmUgbmFtZSBwcmVm
aXhlcyBvciBnbG9iLXN0eWxlIHBhdHRlcm5zIGRldGVybWluaW5nIHdoaWNoIGNsYXNzZXMKLSAg
IGFyZSBjb25zaWRlcmVkIGZvciB0ZXN0IGNvbGxlY3Rpb24uIEJ5IGRlZmF1bHQsIHB5dGVzdCB3
aWxsIGNvbnNpZGVyIGFueQorICAgYXJlIGNvbnNpZGVyZWQgZm9yIHRlc3QgY29sbGVjdGlvbi4g
U2VhcmNoIGZvciBtdWx0aXBsZSBnbG9iIHBhdHRlcm5zIGJ5CisgICBhZGRpbmcgYSBzcGFjZSBi
ZXR3ZWVuIHBhdHRlcm5zLiBCeSBkZWZhdWx0LCBweXRlc3Qgd2lsbCBjb25zaWRlciBhbnkKICAg
IGNsYXNzIHByZWZpeGVkIHdpdGggYGBUZXN0YGAgYXMgYSB0ZXN0IGNvbGxlY3Rpb24uICBIZXJl
IGlzIGFuIGV4YW1wbGUgb2YgaG93CiAgICB0byBjb2xsZWN0IHRlc3RzIGZyb20gY2xhc3NlcyB0
aGF0IGVuZCBpbiBgYFN1aXRlYGA6CiAKQEAgLTEyMjcsMTUgKzE1NTQsMzMgQEAgcGFzc2VkIG11
bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1ZWBgLiBGb3Ig
ZXhhbXBsZTo6CiAuLiBjb25mdmFsOjogcHl0aG9uX2ZpbGVzCiAKICAgIE9uZSBvciBtb3JlIEds
b2Itc3R5bGUgZmlsZSBwYXR0ZXJucyBkZXRlcm1pbmluZyB3aGljaCBweXRob24gZmlsZXMKLSAg
IGFyZSBjb25zaWRlcmVkIGFzIHRlc3QgbW9kdWxlcy4gQnkgZGVmYXVsdCwgcHl0ZXN0IHdpbGwg
Y29uc2lkZXIKLSAgIGFueSBmaWxlIG1hdGNoaW5nIHdpdGggYGB0ZXN0XyoucHlgYCBhbmQgYGAq
X3Rlc3QucHlgYCBnbG9icyBhcyBhIHRlc3QKLSAgIG1vZHVsZS4KKyAgIGFyZSBjb25zaWRlcmVk
IGFzIHRlc3QgbW9kdWxlcy4gU2VhcmNoIGZvciBtdWx0aXBsZSBnbG9iIHBhdHRlcm5zIGJ5Cisg
ICBhZGRpbmcgYSBzcGFjZSBiZXR3ZWVuIHBhdHRlcm5zOgorCisgICAuLiBjb2RlLWJsb2NrOjog
aW5pCisKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgcHl0aG9uX2ZpbGVzID0gdGVzdF8qLnB5
IGNoZWNrXyoucHkgZXhhbXBsZV8qLnB5CisKKyAgIE9yIG9uZSBwZXIgbGluZToKKworICAgLi4g
Y29kZS1ibG9jazo6IGluaQorCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIHB5dGhvbl9maWxl
cyA9CisgICAgICAgICAgICB0ZXN0XyoucHkKKyAgICAgICAgICAgIGNoZWNrXyoucHkKKyAgICAg
ICAgICAgIGV4YW1wbGVfKi5weQorCisgICBCeSBkZWZhdWx0LCBmaWxlcyBtYXRjaGluZyBgYHRl
c3RfKi5weWBgIGFuZCBgYCpfdGVzdC5weWBgIHdpbGwgYmUgY29uc2lkZXJlZAorICAgdGVzdCBt
b2R1bGVzLgogCiAKIC4uIGNvbmZ2YWw6OiBweXRob25fZnVuY3Rpb25zCiAKICAgIE9uZSBvciBt
b3JlIG5hbWUgcHJlZml4ZXMgb3IgZ2xvYi1wYXR0ZXJucyBkZXRlcm1pbmluZyB3aGljaCB0ZXN0
IGZ1bmN0aW9ucwotICAgYW5kIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQgdGVzdHMuIEJ5IGRlZmF1
bHQsIHB5dGVzdCB3aWxsIGNvbnNpZGVyIGFueQorICAgYW5kIG1ldGhvZHMgYXJlIGNvbnNpZGVy
ZWQgdGVzdHMuIFNlYXJjaCBmb3IgbXVsdGlwbGUgZ2xvYiBwYXR0ZXJucyBieQorICAgYWRkaW5n
IGEgc3BhY2UgYmV0d2VlbiBwYXR0ZXJucy4gQnkgZGVmYXVsdCwgcHl0ZXN0IHdpbGwgY29uc2lk
ZXIgYW55CiAgICBmdW5jdGlvbiBwcmVmaXhlZCB3aXRoIGBgdGVzdGBgIGFzIGEgdGVzdC4gIEhl
cmUgaXMgYW4gZXhhbXBsZSBvZiBob3cKICAgIHRvIGNvbGxlY3QgdGVzdCBmdW5jdGlvbnMgYW5k
IG1ldGhvZHMgdGhhdCBlbmQgaW4gYGBfdGVzdGBgOgogCkBAIC0xMjUxLDkgKzE1OTYsMjIgQEAg
cGFzc2VkIG11bHRpcGxlIHRpbWVzLiBUaGUgZXhwZWN0ZWQgZm9ybWF0IGlzIGBgbmFtZT12YWx1
ZWBgLiBGb3IgZXhhbXBsZTo6CiAgICBTZWUgOnJlZjpgY2hhbmdlIG5hbWluZyBjb252ZW50aW9u
c2AgZm9yIG1vcmUgZGV0YWlsZWQgZXhhbXBsZXMuCiAKIAorLi4gY29uZnZhbDo6IHJlcXVpcmVk
X3BsdWdpbnMKKworICAgQSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBwbHVnaW5zIHRoYXQgbXVz
dCBiZSBwcmVzZW50IGZvciBweXRlc3QgdG8gcnVuLgorICAgUGx1Z2lucyBjYW4gYmUgbGlzdGVk
IHdpdGggb3Igd2l0aG91dCB2ZXJzaW9uIHNwZWNpZmllcnMgZGlyZWN0bHkgZm9sbG93aW5nCisg
ICB0aGVpciBuYW1lLiBXaGl0ZXNwYWNlIGJldHdlZW4gZGlmZmVyZW50IHZlcnNpb24gc3BlY2lm
aWVycyBpcyBub3QgYWxsb3dlZC4KKyAgIElmIGFueSBvbmUgb2YgdGhlIHBsdWdpbnMgaXMgbm90
IGZvdW5kLCBlbWl0IGFuIGVycm9yLgorCisgICAuLiBjb2RlLWJsb2NrOjogaW5pCisKKyAgICAg
ICBbcHl0ZXN0XQorICAgICAgIHJlcXVpcmVkX3BsdWdpbnMgPSBweXRlc3QtZGphbmdvPj0zLjAu
MCw8NC4wLjAgcHl0ZXN0LWh0bWwgcHl0ZXN0LXhkaXN0Pj0xLjAuMAorCisKIC4uIGNvbmZ2YWw6
OiB0ZXN0cGF0aHMKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMi44CisKIAogICAgU2V0cyBsaXN0
IG9mIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkIGZvciB0ZXN0cyB3aGVuCiAg
ICBubyBzcGVjaWZpYyBkaXJlY3RvcmllcywgZmlsZXMgb3IgdGVzdCBpZHMgYXJlIGdpdmVuIGlu
IHRoZSBjb21tYW5kIGxpbmUgd2hlbgpAQCAtMTI5NCwzICsxNjUyLDI5NiBAQCBwYXNzZWQgbXVs
dGlwbGUgdGltZXMuIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYGBuYW1lPXZhbHVlYGAuIEZvciBl
eGFtcGxlOjoKIAogICAgICAgICBbcHl0ZXN0XQogICAgICAgICB4ZmFpbF9zdHJpY3QgPSBUcnVl
CisKKworLi4gX2Bjb21tYW5kLWxpbmUtZmxhZ3NgOgorCitDb21tYW5kLWxpbmUgRmxhZ3MKKy0t
LS0tLS0tLS0tLS0tLS0tLQorCitBbGwgdGhlIGNvbW1hbmQtbGluZSBmbGFncyBjYW4gYmUgb2J0
YWluZWQgYnkgcnVubmluZyBgYHB5dGVzdCAtLWhlbHBgYDo6CisKKyAgICAkIHB5dGVzdCAtLWhl
bHAKKyAgICB1c2FnZTogcHl0ZXN0IFtvcHRpb25zXSBbZmlsZV9vcl9kaXJdIFtmaWxlX29yX2Rp
cl0gWy4uLl0KKworICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgZmlsZV9vcl9kaXIK
KworICAgIGdlbmVyYWw6CisgICAgICAtayBFWFBSRVNTSU9OICAgICAgICAgb25seSBydW4gdGVz
dHMgd2hpY2ggbWF0Y2ggdGhlIGdpdmVuIHN1YnN0cmluZworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb24uIEFuIGV4cHJlc3Npb24gaXMgYSBweXRob24gZXZhbHVhdGFibGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIHdoZXJlIGFsbCBuYW1lcyBh
cmUgc3Vic3RyaW5nLW1hdGNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0
IHRlc3QgbmFtZXMgYW5kIHRoZWlyIHBhcmVudCBjbGFzc2VzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEV4YW1wbGU6IC1rICd0ZXN0X21ldGhvZCBvciB0ZXN0X290aGVyJyBtYXRjaGVz
IGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgZnVuY3Rpb25zIGFuZCBjbGFz
c2VzIHdob3NlIG5hbWUgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dF9tZXRob2QnIG9yICd0ZXN0X290aGVyJywgd2hpbGUgLWsgJ25vdAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfbWV0aG9kJyBtYXRjaGVzIHRob3NlIHRoYXQgZG9uJ3QgY29udGFp
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X21ldGhvZCcgaW4gdGhlaXIgbmFt
ZXMuIC1rICdub3QgdGVzdF9tZXRob2QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQg
bm90IHRlc3Rfb3RoZXInIHdpbGwgZWxpbWluYXRlIHRoZSBtYXRjaGVzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSBrZXl3b3JkcyBhcmUgbWF0Y2hlZCB0byBjbGFz
c2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBjb250YWluaW5n
IGV4dHJhIG5hbWVzIGluIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJh
X2tleXdvcmRfbWF0Y2hlcycgc2V0LCBhcyB3ZWxsIGFzIGZ1bmN0aW9ucworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWNoIGhhdmUgbmFtZXMgYXNzaWduZWQgZGlyZWN0bHkgdG8gdGhl
bS4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgaXMgY2FzZS1pbnNl
bnNpdGl2ZS4KKyAgICAgIC1tIE1BUktFWFBSICAgICAgICAgICBvbmx5IHJ1biB0ZXN0cyBtYXRj
aGluZyBnaXZlbiBtYXJrIGV4cHJlc3Npb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Rm9yIGV4YW1wbGU6IC1tICdtYXJrMSBhbmQgbm90IG1hcmsyJy4KKyAgICAgIC0tbWFya2VycyAg
ICAgICAgICAgICBzaG93IG1hcmtlcnMgKGJ1aWx0aW4sIHBsdWdpbiBhbmQgcGVyLXByb2plY3Qg
b25lcykuCisgICAgICAteCwgLS1leGl0Zmlyc3QgICAgICAgZXhpdCBpbnN0YW50bHkgb24gZmly
c3QgZXJyb3Igb3IgZmFpbGVkIHRlc3QuCisgICAgICAtLWZpeHR1cmVzLCAtLWZ1bmNhcmdzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdyBhdmFpbGFibGUgZml4dHVyZXMsIHNvcnRl
ZCBieSBwbHVnaW4gYXBwZWFyYW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXh0
dXJlcyB3aXRoIGxlYWRpbmcgJ18nIGFyZSBvbmx5IHNob3duIHdpdGggJy12JykKKyAgICAgIC0t
Zml4dHVyZXMtcGVyLXRlc3QgICBzaG93IGZpeHR1cmVzIHBlciB0ZXN0CisgICAgICAtLXBkYiAg
ICAgICAgICAgICAgICAgc3RhcnQgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBkZWJ1Z2dlciBvbiBl
cnJvcnMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlib2FyZEludGVycnVwdC4K
KyAgICAgIC0tcGRiY2xzPW1vZHVsZW5hbWU6Y2xhc3NuYW1lCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnQgYSBjdXN0b20gaW50ZXJhY3RpdmUgUHl0aG9uIGRlYnVnZ2VyIG9uCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLiBGb3IgZXhhbXBsZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtLXBkYmNscz1JUHl0aG9uLnRlcm1pbmFsLmRlYnVnZ2VyOlRl
cm1pbmFsUGRiCisgICAgICAtLXRyYWNlICAgICAgICAgICAgICAgSW1tZWRpYXRlbHkgYnJlYWsg
d2hlbiBydW5uaW5nIGVhY2ggdGVzdC4KKyAgICAgIC0tY2FwdHVyZT1tZXRob2QgICAgICBwZXIt
dGVzdCBjYXB0dXJpbmcgbWV0aG9kOiBvbmUgb2YgZmR8c3lzfG5vfHRlZS1zeXMuCisgICAgICAt
cyAgICAgICAgICAgICAgICAgICAgc2hvcnRjdXQgZm9yIC0tY2FwdHVyZT1uby4KKyAgICAgIC0t
cnVueGZhaWwgICAgICAgICAgICByZXBvcnQgdGhlIHJlc3VsdHMgb2YgeGZhaWwgdGVzdHMgYXMg
aWYgdGhleSB3ZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IG1hcmtlZAorICAg
ICAgLS1sZiwgLS1sYXN0LWZhaWxlZCAgIHJlcnVuIG9ubHkgdGhlIHRlc3RzIHRoYXQgZmFpbGVk
IGF0IHRoZSBsYXN0IHJ1biAob3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgaWYg
bm9uZSBmYWlsZWQpCisgICAgICAtLWZmLCAtLWZhaWxlZC1maXJzdCAgcnVuIGFsbCB0ZXN0cywg
YnV0IHJ1biB0aGUgbGFzdCBmYWlsdXJlcyBmaXJzdC4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUaGlzIG1heSByZS1vcmRlciB0ZXN0cyBhbmQgdGh1cyBsZWFkIHRvIHJlcGVhdGVkCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dHVyZSBzZXR1cC90ZWFyZG93bi4KKyAgICAg
IC0tbmYsIC0tbmV3LWZpcnN0ICAgICBydW4gdGVzdHMgZnJvbSBuZXcgZmlsZXMgZmlyc3QsIHRo
ZW4gdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgc29y
dGVkIGJ5IGZpbGUgbXRpbWUKKyAgICAgIC0tY2FjaGUtc2hvdz1bQ0FDSEVTSE9XXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3cgY2FjaGUgY29udGVudHMsIGRvbid0IHBlcmZvcm0g
Y29sbGVjdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLiBPcHRpb25h
bCBhcmd1bWVudDogZ2xvYiAoZGVmYXVsdDogJyonKS4KKyAgICAgIC0tY2FjaGUtY2xlYXIgICAg
ICAgICByZW1vdmUgYWxsIGNhY2hlIGNvbnRlbnRzIGF0IHN0YXJ0IG9mIHRlc3QgcnVuLgorICAg
ICAgLS1sZm5mPXthbGwsbm9uZX0sIC0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXM9e2FsbCxub25l
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRlc3RzIHRvIHJ1biB3aXRoIG5v
IHByZXZpb3VzbHkgKGtub3duKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVz
LgorICAgICAgLS1zdywgLS1zdGVwd2lzZSAgICAgIGV4aXQgb24gdGVzdCBmYWlsdXJlIGFuZCBj
b250aW51ZSBmcm9tIGxhc3QgZmFpbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3QgbmV4dCB0aW1lCisgICAgICAtLXN0ZXB3aXNlLXNraXAgICAgICAgaWdub3JlIHRoZSBmaXJz
dCBmYWlsaW5nIHRlc3QgYnV0IHN0b3Agb24gdGhlIG5leHQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWlsaW5nIHRlc3QKKworICAgIHJlcG9ydGluZzoKKyAgICAgIC0tZHVyYXRpb25z
PU4gICAgICAgICBzaG93IE4gc2xvd2VzdCBzZXR1cC90ZXN0IGR1cmF0aW9ucyAoTj0wIGZvciBh
bGwpLgorICAgICAgLS1kdXJhdGlvbnMtbWluPU4gICAgIE1pbmltYWwgZHVyYXRpb24gaW4gc2Vj
b25kcyBmb3IgaW5jbHVzaW9uIGluIHNsb3dlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaXN0LiBEZWZhdWx0IDAuMDA1CisgICAgICAtdiwgLS12ZXJib3NlICAgICAgICAgaW5jcmVh
c2UgdmVyYm9zaXR5LgorICAgICAgLS1uby1oZWFkZXIgICAgICAgICAgIGRpc2FibGUgaGVhZGVy
CisgICAgICAtLW5vLXN1bW1hcnkgICAgICAgICAgZGlzYWJsZSBzdW1tYXJ5CisgICAgICAtcSwg
LS1xdWlldCAgICAgICAgICAgZGVjcmVhc2UgdmVyYm9zaXR5LgorICAgICAgLS12ZXJib3NpdHk9
VkVSQk9TRSAgIHNldCB2ZXJib3NpdHkuIERlZmF1bHQgaXMgMC4KKyAgICAgIC1yIGNoYXJzICAg
ICAgICAgICAgICBzaG93IGV4dHJhIHRlc3Qgc3VtbWFyeSBpbmZvIGFzIHNwZWNpZmllZCBieSBj
aGFyczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZilhaWxlZCwgKEUpcnJvciwgKHMp
a2lwcGVkLCAoeClmYWlsZWQsIChYKXBhc3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAocClhc3NlZCwgKFApYXNzZWQgd2l0aCBvdXRwdXQsIChhKWxsIGV4Y2VwdCBwYXNzZWQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocC9QKSwgb3IgKEEpbGwuICh3KWFybmluZ3MgYXJl
IGVuYWJsZWQgYnkgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWUgLS1k
aXNhYmxlLXdhcm5pbmdzKSwgJ04nIGNhbiBiZSB1c2VkIHRvIHJlc2V0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhlIGxpc3QuIChkZWZhdWx0OiAnZkUnKS4KKyAgICAgIC0tZGlzYWJs
ZS13YXJuaW5ncywgLS1kaXNhYmxlLXB5dGVzdC13YXJuaW5ncworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc2FibGUgd2FybmluZ3Mgc3VtbWFyeQorICAgICAgLWwsIC0tc2hvd2xvY2Fs
cyAgICAgIHNob3cgbG9jYWxzIGluIHRyYWNlYmFja3MgKGRpc2FibGVkIGJ5IGRlZmF1bHQpLgor
ICAgICAgLS10Yj1zdHlsZSAgICAgICAgICAgIHRyYWNlYmFjayBwcmludCBtb2RlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGF1dG8vbG9uZy9zaG9ydC9saW5lL25hdGl2ZS9ubykuCisg
ICAgICAtLXNob3ctY2FwdHVyZT17bm8sc3Rkb3V0LHN0ZGVycixsb2csYWxsfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbnRyb2xzIGhvdyBjYXB0dXJlZCBzdGRvdXQvc3RkZXJyL2xv
ZyBpcyBzaG93biBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZCB0ZXN0cy4g
RGVmYXVsdCBpcyAnYWxsJy4KKyAgICAgIC0tZnVsbC10cmFjZSAgICAgICAgICBkb24ndCBjdXQg
YW55IHRyYWNlYmFja3MgKGRlZmF1bHQgaXMgdG8gY3V0KS4KKyAgICAgIC0tY29sb3I9Y29sb3Ig
ICAgICAgICBjb2xvciB0ZXJtaW5hbCBvdXRwdXQgKHllcy9uby9hdXRvKS4KKyAgICAgIC0tY29k
ZS1oaWdobGlnaHQ9e3llcyxub30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGV0aGVy
IGNvZGUgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIChvbmx5IGlmIC0tY29sb3IKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpcyBhbHNvIGVuYWJsZWQpCisgICAgICAtLXBhc3RlYmluPW1vZGUg
ICAgICAgc2VuZCBmYWlsZWR8YWxsIGluZm8gdG8gYnBhc3RlLm5ldCBwYXN0ZWJpbiBzZXJ2aWNl
LgorICAgICAgLS1qdW5pdC14bWw9cGF0aCAgICAgIGNyZWF0ZSBqdW5pdC14bWwgc3R5bGUgcmVw
b3J0IGZpbGUgYXQgZ2l2ZW4gcGF0aC4KKyAgICAgIC0tanVuaXQtcHJlZml4PXN0ciAgICBwcmVw
ZW5kIHByZWZpeCB0byBjbGFzc25hbWVzIGluIGp1bml0LXhtbCBvdXRwdXQKKworICAgIHB5dGVz
dC13YXJuaW5nczoKKyAgICAgIC1XIFBZVEhPTldBUk5JTkdTLCAtLXB5dGhvbndhcm5pbmdzPVBZ
VEhPTldBUk5JTkdTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHdoaWNoIHdhcm5p
bmdzIHRvIHJlcG9ydCwgc2VlIC1XIG9wdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB5dGhvbiBpdHNlbGYuCisgICAgICAtLW1heGZhaWw9bnVtICAgICAgICAgZXhpdCBhZnRl
ciBmaXJzdCBudW0gZmFpbHVyZXMgb3IgZXJyb3JzLgorICAgICAgLS1zdHJpY3QtY29uZmlnICAg
ICAgIGFueSB3YXJuaW5ncyBlbmNvdW50ZXJlZCB3aGlsZSBwYXJzaW5nIHRoZSBgcHl0ZXN0YAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24g
ZmlsZSByYWlzZSBlcnJvcnMuCisgICAgICAtLXN0cmljdC1tYXJrZXJzLCAtLXN0cmljdAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMgbm90IHJlZ2lzdGVyZWQgaW4gdGhlIGBt
YXJrZXJzYCBzZWN0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZp
Z3VyYXRpb24gZmlsZSByYWlzZSBlcnJvcnMuCisgICAgICAtYyBmaWxlICAgICAgICAgICAgICAg
bG9hZCBjb25maWd1cmF0aW9uIGZyb20gYGZpbGVgIGluc3RlYWQgb2YgdHJ5aW5nIHRvCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlIG9uZSBvZiB0aGUgaW1wbGljaXQgY29uZmln
dXJhdGlvbiBmaWxlcy4KKyAgICAgIC0tY29udGludWUtb24tY29sbGVjdGlvbi1lcnJvcnMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZSB0ZXN0IGV4ZWN1dGlvbiBldmVuIGlmIGNv
bGxlY3Rpb24gZXJyb3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2NjdXIuCisgICAg
ICAtLXJvb3RkaXI9Uk9PVERJUiAgICAgRGVmaW5lIHJvb3QgZGlyZWN0b3J5IGZvciB0ZXN0cy4g
Q2FuIGJlIHJlbGF0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJ3Jvb3Rf
ZGlyJywgJy4vcm9vdF9kaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb290X2Rp
ci9hbm90aGVyX2Rpci8nOyBhYnNvbHV0ZSBwYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcvaG9tZS91c2VyL3Jvb3RfZGlyJzsgcGF0aCB3aXRoIHZhcmlhYmxlczoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnJEhPTUUvcm9vdF9kaXInLgorCisgICAgY29sbGVjdGlvbjoK
KyAgICAgIC0tY29sbGVjdC1vbmx5LCAtLWNvICBvbmx5IGNvbGxlY3QgdGVzdHMsIGRvbid0IGV4
ZWN1dGUgdGhlbS4KKyAgICAgIC0tcHlhcmdzICAgICAgICAgICAgICB0cnkgdG8gaW50ZXJwcmV0
IGFsbCBhcmd1bWVudHMgYXMgcHl0aG9uIHBhY2thZ2VzLgorICAgICAgLS1pZ25vcmU9cGF0aCAg
ICAgICAgIGlnbm9yZSBwYXRoIGR1cmluZyBjb2xsZWN0aW9uIChtdWx0aS1hbGxvd2VkKS4KKyAg
ICAgIC0taWdub3JlLWdsb2I9cGF0aCAgICBpZ25vcmUgcGF0aCBwYXR0ZXJuIGR1cmluZyBjb2xs
ZWN0aW9uIChtdWx0aS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkKS4KKyAg
ICAgIC0tZGVzZWxlY3Q9bm9kZWlkX3ByZWZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc2VsZWN0IGl0ZW0gKHZpYSBub2RlIGlkIHByZWZpeCkgZHVyaW5nIGNvbGxlY3Rpb24KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobXVsdGktYWxsb3dlZCkuCisgICAgICAtLWNvbmZj
dXRkaXI9ZGlyICAgICAgb25seSBsb2FkIGNvbmZ0ZXN0LnB5J3MgcmVsYXRpdmUgdG8gc3BlY2lm
aWVkIGRpci4KKyAgICAgIC0tbm9jb25mdGVzdCAgICAgICAgICBEb24ndCBsb2FkIGFueSBjb25m
dGVzdC5weSBmaWxlcy4KKyAgICAgIC0ta2VlcC1kdXBsaWNhdGVzICAgICBLZWVwIGR1cGxpY2F0
ZSB0ZXN0cy4KKyAgICAgIC0tY29sbGVjdC1pbi12aXJ0dWFsZW52CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRG9uJ3QgaWdub3JlIHRlc3RzIGluIGEgbG9jYWwgdmlydHVhbGVudiBkaXJl
Y3RvcnkKKyAgICAgIC0taW1wb3J0LW1vZGU9e3ByZXBlbmQsYXBwZW5kLGltcG9ydGxpYn0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kL2FwcGVuZCB0byBzeXMucGF0aCB3aGVu
IGltcG9ydGluZyB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyBhbmQg
Y29uZnRlc3QgZmlsZXMsIGRlZmF1bHQgaXMgdG8gcHJlcGVuZC4KKyAgICAgIC0tZG9jdGVzdC1t
b2R1bGVzICAgICBydW4gZG9jdGVzdHMgaW4gYWxsIC5weSBtb2R1bGVzCisgICAgICAtLWRvY3Rl
c3QtcmVwb3J0PXtub25lLGNkaWZmLG5kaWZmLHVkaWZmLG9ubHlfZmlyc3RfZmFpbHVyZX0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgYW5vdGhlciBvdXRwdXQgZm9ybWF0IGZv
ciBkaWZmcyBvbiBkb2N0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZQor
ICAgICAgLS1kb2N0ZXN0LWdsb2I9cGF0ICAgIGRvY3Rlc3RzIGZpbGUgbWF0Y2hpbmcgcGF0dGVy
biwgZGVmYXVsdDogdGVzdCoudHh0CisgICAgICAtLWRvY3Rlc3QtaWdub3JlLWltcG9ydC1lcnJv
cnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgZG9jdGVzdCBJbXBvcnRFcnJv
cnMKKyAgICAgIC0tZG9jdGVzdC1jb250aW51ZS1vbi1mYWlsdXJlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIGEgZ2l2ZW4gZG9jdGVzdCwgY29udGludWUgdG8gcnVuIGFmdGVyIHRo
ZSBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUKKworICAgIHRlc3Qg
c2Vzc2lvbiBkZWJ1Z2dpbmcgYW5kIGNvbmZpZ3VyYXRpb246CisgICAgICAtLWJhc2V0ZW1wPWRp
ciAgICAgICAgYmFzZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciB0aGlzIHRlc3QgcnVuLih3YXJu
aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZGlyZWN0b3J5IGlzIHJlbW92
ZWQgaWYgaXQgZXhpc3RzKQorICAgICAgLVYsIC0tdmVyc2lvbiAgICAgICAgIGRpc3BsYXkgcHl0
ZXN0IHZlcnNpb24gYW5kIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGx1Z2lucy5XaGVuIGdpdmVuIHR3aWNlLCBhbHNvIGRpc3BsYXkgaW5mb3JtYXRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCBwbHVnaW5zLgorICAgICAgLWgsIC0t
aGVscCAgICAgICAgICAgIHNob3cgaGVscCBtZXNzYWdlIGFuZCBjb25maWd1cmF0aW9uIGluZm8K
KyAgICAgIC1wIG5hbWUgICAgICAgICAgICAgICBlYXJseS1sb2FkIGdpdmVuIHBsdWdpbiBtb2R1
bGUgbmFtZSBvciBlbnRyeSBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtdWx0
aS1hbGxvd2VkKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBhdm9pZCBsb2FkaW5n
IG9mIHBsdWdpbnMsIHVzZSB0aGUgYG5vOmAgcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGUuZy4gYG5vOmRvY3Rlc3RgLgorICAgICAgLS10cmFjZS1jb25maWcgICAgICAgIHRy
YWNlIGNvbnNpZGVyYXRpb25zIG9mIGNvbmZ0ZXN0LnB5IGZpbGVzLgorICAgICAgLS1kZWJ1ZyAg
ICAgICAgICAgICAgIHN0b3JlIGludGVybmFsIHRyYWNpbmcgZGVidWcgaW5mb3JtYXRpb24gaW4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHl0ZXN0ZGVidWcubG9nJy4KKyAgICAgIC1v
IE9WRVJSSURFX0lOSSwgLS1vdmVycmlkZS1pbmk9T1ZFUlJJREVfSU5JCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3ZlcnJpZGUgaW5pIG9wdGlvbiB3aXRoICJvcHRpb249dmFsdWUiIHN0
eWxlLCBlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC1vIHhmYWlsX3N0cmljdD1U
cnVlIC1vIGNhY2hlX2Rpcj1jYWNoZWAuCisgICAgICAtLWFzc2VydD1NT0RFICAgICAgICAgQ29u
dHJvbCBhc3NlcnRpb24gZGVidWdnaW5nIHRvb2xzLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdwbGFpbicgcGVyZm9ybXMgbm8gYXNzZXJ0aW9uIGRlYnVnZ2luZy4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncmV3cml0ZScgKHRoZSBkZWZhdWx0KSByZXdyaXRlcyBhc3NlcnQg
c3RhdGVtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRlc3QgbW9kdWxlcyBv
biBpbXBvcnQgdG8gcHJvdmlkZSBhc3NlcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHByZXNzaW9uIGluZm9ybWF0aW9uLgorICAgICAgLS1zZXR1cC1vbmx5ICAgICAgICAgIG9ubHkg
c2V0dXAgZml4dHVyZXMsIGRvIG5vdCBleGVjdXRlIHRlc3RzLgorICAgICAgLS1zZXR1cC1zaG93
ICAgICAgICAgIHNob3cgc2V0dXAgb2YgZml4dHVyZXMgd2hpbGUgZXhlY3V0aW5nIHRlc3RzLgor
ICAgICAgLS1zZXR1cC1wbGFuICAgICAgICAgIHNob3cgd2hhdCBmaXh0dXJlcyBhbmQgdGVzdHMg
d291bGQgYmUgZXhlY3V0ZWQgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uJ3Qg
ZXhlY3V0ZSBhbnl0aGluZy4KKworICAgIGxvZ2dpbmc6CisgICAgICAtLWxvZy1sZXZlbD1MRVZF
TCAgICAgbGV2ZWwgb2YgbWVzc2FnZXMgdG8gY2F0Y2gvZGlzcGxheS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb3Qgc2V0IGJ5IGRlZmF1bHQsIHNvIGl0IGRlcGVuZHMgb24gdGhlIHJv
b3QvcGFyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nIGhhbmRsZXIncyBlZmZl
Y3RpdmUgbGV2ZWwsIHdoZXJlIGl0IGlzICJXQVJOSU5HIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ5IGRlZmF1bHQuCisgICAgICAtLWxvZy1mb3JtYXQ9TE9HX0ZPUk1BVAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZyBmb3JtYXQgYXMgdXNlZCBieSB0aGUgbG9nZ2luZyBt
b2R1bGUuCisgICAgICAtLWxvZy1kYXRlLWZvcm1hdD1MT0dfREFURV9GT1JNQVQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2cgZGF0ZSBmb3JtYXQgYXMgdXNlZCBieSB0aGUgbG9nZ2lu
ZyBtb2R1bGUuCisgICAgICAtLWxvZy1jbGktbGV2ZWw9TE9HX0NMSV9MRVZFTAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaSBsb2dnaW5nIGxldmVsLgorICAgICAgLS1sb2ctY2xpLWZv
cm1hdD1MT0dfQ0xJX0ZPUk1BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyBmb3Jt
YXQgYXMgdXNlZCBieSB0aGUgbG9nZ2luZyBtb2R1bGUuCisgICAgICAtLWxvZy1jbGktZGF0ZS1m
b3JtYXQ9TE9HX0NMSV9EQVRFX0ZPUk1BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
ZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4KKyAgICAgIC0tbG9n
LWZpbGU9TE9HX0ZJTEUgICBwYXRoIHRvIGEgZmlsZSB3aGVuIGxvZ2dpbmcgd2lsbCBiZSB3cml0
dGVuIHRvLgorICAgICAgLS1sb2ctZmlsZS1sZXZlbD1MT0dfRklMRV9MRVZFTAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZyBmaWxlIGxvZ2dpbmcgbGV2ZWwuCisgICAgICAtLWxvZy1m
aWxlLWZvcm1hdD1MT0dfRklMRV9GT1JNQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2cgZm9ybWF0IGFzIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlLgorICAgICAgLS1sb2ctZmls
ZS1kYXRlLWZvcm1hdD1MT0dfRklMRV9EQVRFX0ZPUk1BVAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4KKyAg
ICAgIC0tbG9nLWF1dG8taW5kZW50PUxPR19BVVRPX0lOREVOVAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEF1dG8taW5kZW50IG11bHRpbGluZSBtZXNzYWdlcyBwYXNzZWQgdG8gdGhlIGxv
Z2dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuIEFjY2VwdHMgdHJ1ZXxv
biwgZmFsc2V8b2ZmIG9yIGFuIGludGVnZXIuCisKKyAgICBbcHl0ZXN0XSBpbmktb3B0aW9ucyBp
biB0aGUgZmlyc3QgcHl0ZXN0LmluaXx0b3guaW5pfHNldHVwLmNmZyBmaWxlIGZvdW5kOgorCisg
ICAgICBtYXJrZXJzIChsaW5lbGlzdCk6ICAgbWFya2VycyBmb3IgdGVzdCBmdW5jdGlvbnMKKyAg
ICAgIGVtcHR5X3BhcmFtZXRlcl9zZXRfbWFyayAoc3RyaW5nKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0IG1hcmtlciBmb3IgZW1wdHkgcGFyYW1ldGVyc2V0cworICAgICAg
bm9yZWN1cnNlZGlycyAoYXJncyk6IGRpcmVjdG9yeSBwYXR0ZXJucyB0byBhdm9pZCBmb3IgcmVj
dXJzaW9uCisgICAgICB0ZXN0cGF0aHMgKGFyZ3MpOiAgICAgZGlyZWN0b3JpZXMgdG8gc2VhcmNo
IGZvciB0ZXN0cyB3aGVuIG5vIGZpbGVzIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlyZWN0b3JpZXMgYXJlIGdpdmVuIGluIHRoZSBjb21tYW5kIGxpbmUuCisgICAgICBmaWx0ZXJ3
YXJuaW5ncyAobGluZWxpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVhY2ggbGlu
ZSBzcGVjaWZpZXMgYSBwYXR0ZXJuIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdh
cm5pbmdzLmZpbHRlcndhcm5pbmdzLiBQcm9jZXNzZWQgYWZ0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtVy8tLXB5dGhvbndhcm5pbmdzLgorICAgICAgdXNlZml4dHVyZXMgKGFyZ3Mp
OiAgIGxpc3Qgb2YgZGVmYXVsdCBmaXh0dXJlcyB0byBiZSB1c2VkIHdpdGggdGhpcworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QKKyAgICAgIHB5dGhvbl9maWxlcyAoYXJncyk6
ICBnbG9iLXN0eWxlIGZpbGUgcGF0dGVybnMgZm9yIFB5dGhvbiB0ZXN0IG1vZHVsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc2NvdmVyeQorICAgICAgcHl0aG9uX2NsYXNzZXMgKGFy
Z3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVzIG9yIGdsb2IgbmFtZXMg
Zm9yIFB5dGhvbiB0ZXN0IGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY292
ZXJ5CisgICAgICBweXRob25fZnVuY3Rpb25zIChhcmdzKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmVmaXhlcyBvciBnbG9iIG5hbWVzIGZvciBQeXRob24gdGVzdCBmdW5jdGlvbiBh
bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgZGlzY292ZXJ5CisgICAgICBk
aXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxsX3JpZ2h0c190b19jb21tdW5p
dHlfc3VwcG9ydCAoYm9vbCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSBz
dHJpbmcgZXNjYXBlIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLCBtaWdodAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhdXNlIHVud2FudGVkIHNpZGUgZWZmZWN0cyh1c2UgYXQgeW91ciBvd24g
cmlzaykKKyAgICAgIGNvbnNvbGVfb3V0cHV0X3N0eWxlIChzdHJpbmcpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGUgb3V0cHV0OiAiY2xhc3NpYyIsIG9yIHdpdGggYWRkaXRp
b25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzIGluZm9ybWF0aW9uICgi
cHJvZ3Jlc3MiIChwZXJjZW50YWdlKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNv
dW50IikuCisgICAgICB4ZmFpbF9zdHJpY3QgKGJvb2wpOiAgZGVmYXVsdCBmb3IgdGhlIHN0cmlj
dCBwYXJhbWV0ZXIgb2YgeGZhaWwgbWFya2VycworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoZW4gbm90IGdpdmVuIGV4cGxpY2l0bHkgKGRlZmF1bHQ6IEZhbHNlKQorICAgICAgZW5hYmxl
X2Fzc2VydGlvbl9wYXNzX2hvb2sgKGJvb2wpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVuYWJsZXMgdGhlIHB5dGVzdF9hc3NlcnRpb25fcGFzcyBob29rLk1ha2Ugc3VyZSB0bworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbnkgcHJldmlvdXNseSBnZW5lcmF0ZWQg
cHljIGNhY2hlIGZpbGVzLgorICAgICAganVuaXRfc3VpdGVfbmFtZSAoc3RyaW5nKToKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXN0IHN1aXRlIG5hbWUgZm9yIEpVbml0IHJlcG9ydAor
ICAgICAganVuaXRfbG9nZ2luZyAoc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXcml0ZSBjYXB0dXJlZCBsb2cgbWVzc2FnZXMgdG8gSlVuaXQgcmVwb3J0OiBvbmUgb2YKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub3xsb2d8c3lzdGVtLW91dHxzeXN0ZW0tZXJyfG91
dC1lcnJ8YWxsCisgICAgICBqdW5pdF9sb2dfcGFzc2luZ190ZXN0cyAoYm9vbCk6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2FwdHVyZSBsb2cgaW5mb3JtYXRpb24gZm9yIHBhc3Npbmcg
dGVzdHMgdG8gSlVuaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQ6CisgICAg
ICBqdW5pdF9kdXJhdGlvbl9yZXBvcnQgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRHVyYXRpb24gdGltZSB0byByZXBvcnQ6IG9uZSBvZiB0b3RhbHxjYWxsCisgICAgICBq
dW5pdF9mYW1pbHkgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1pdCBY
TUwgZm9yIHNjaGVtYTogb25lIG9mIGxlZ2FjeXx4dW5pdDF8eHVuaXQyCisgICAgICBkb2N0ZXN0
X29wdGlvbmZsYWdzIChhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24g
ZmxhZ3MgZm9yIGRvY3Rlc3RzCisgICAgICBkb2N0ZXN0X2VuY29kaW5nIChzdHJpbmcpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIHVzZWQgZm9yIGRvY3Rlc3QgZmlsZXMK
KyAgICAgIGNhY2hlX2RpciAoc3RyaW5nKTogICBjYWNoZSBkaXJlY3RvcnkgcGF0aC4KKyAgICAg
IGxvZ19sZXZlbCAoc3RyaW5nKTogICBkZWZhdWx0IHZhbHVlIGZvciAtLWxvZy1sZXZlbAorICAg
ICAgbG9nX2Zvcm1hdCAoc3RyaW5nKTogIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWZvcm1hdAor
ICAgICAgbG9nX2RhdGVfZm9ybWF0IChzdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWRhdGUtZm9ybWF0CisgICAgICBsb2dfY2xpIChi
b29sKTogICAgICAgZW5hYmxlIGxvZyBkaXNwbGF5IGR1cmluZyB0ZXN0IHJ1biAoYWxzbyBrbm93
biBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXZlIGxvZ2dpbmciKS4KKyAgICAg
IGxvZ19jbGlfbGV2ZWwgKHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdCB2YWx1ZSBmb3IgLS1sb2ctY2xpLWxldmVsCisgICAgICBsb2dfY2xpX2Zvcm1hdCAoc3Ry
aW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlIGZvciAtLWxv
Zy1jbGktZm9ybWF0CisgICAgICBsb2dfY2xpX2RhdGVfZm9ybWF0IChzdHJpbmcpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWNsaS1kYXRlLWZv
cm1hdAorICAgICAgbG9nX2ZpbGUgKHN0cmluZyk6ICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9n
LWZpbGUKKyAgICAgIGxvZ19maWxlX2xldmVsIChzdHJpbmcpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWZpbGUtbGV2ZWwKKyAgICAgIGxvZ19m
aWxlX2Zvcm1hdCAoc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
IHZhbHVlIGZvciAtLWxvZy1maWxlLWZvcm1hdAorICAgICAgbG9nX2ZpbGVfZGF0ZV9mb3JtYXQg
KHN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZSBmb3Ig
LS1sb2ctZmlsZS1kYXRlLWZvcm1hdAorICAgICAgbG9nX2F1dG9faW5kZW50IChzdHJpbmcpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgZm9yIC0tbG9nLWF1dG8t
aW5kZW50CisgICAgICBmYXVsdGhhbmRsZXJfdGltZW91dCAoc3RyaW5nKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaWYgYSB0
ZXN0IHRha2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZSB0aGFuIFRJTUVPVVQg
c2Vjb25kcyB0byBmaW5pc2guCisgICAgICBhZGRvcHRzIChhcmdzKTogICAgICAgZXh0cmEgY29t
bWFuZCBsaW5lIG9wdGlvbnMKKyAgICAgIG1pbnZlcnNpb24gKHN0cmluZyk6ICBtaW5pbWFsbHkg
cmVxdWlyZWQgcHl0ZXN0IHZlcnNpb24KKyAgICAgIHJlcXVpcmVkX3BsdWdpbnMgKGFyZ3MpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMgdGhhdCBtdXN0IGJlIHByZXNlbnQg
Zm9yIHB5dGVzdCB0byBydW4KKworICAgIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgICAgIFBZ
VEVTVF9BRERPUFRTICAgICAgICAgICBleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAg
UFlURVNUX1BMVUdJTlMgICAgICAgICAgIGNvbW1hLXNlcGFyYXRlZCBwbHVnaW5zIHRvIGxvYWQg
ZHVyaW5nIHN0YXJ0dXAKKyAgICAgIFBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCBzZXQg
dG8gZGlzYWJsZSBwbHVnaW4gYXV0by1sb2FkaW5nCisgICAgICBQWVRFU1RfREVCVUcgICAgICAg
ICAgICAgc2V0IHRvIGVuYWJsZSBkZWJ1ZyB0cmFjaW5nIG9mIHB5dGVzdCdzIGludGVybmFscwor
CisKKyAgICB0byBzZWUgYXZhaWxhYmxlIG1hcmtlcnMgdHlwZTogcHl0ZXN0IC0tbWFya2Vycwor
ICAgIHRvIHNlZSBhdmFpbGFibGUgZml4dHVyZXMgdHlwZTogcHl0ZXN0IC0tZml4dHVyZXMKKyAg
ICAoc2hvd24gYWNjb3JkaW5nIHRvIHNwZWNpZmllZCBmaWxlX29yX2RpciBvciBjdXJyZW50IGRp
ciBpZiBub3Qgc3BlY2lmaWVkOyBmaXh0dXJlcyB3aXRoIGxlYWRpbmcgJ18nIGFyZSBvbmx5IHNo
b3duIHdpdGggdGhlICctdicgb3B0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
cmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZXF1aXJlbWVudHMudHh0Cmlu
ZGV4IGUzY2M0N2VkNWE1MC4uZmEzN2FjZmI0NDcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcmVxdWlyZW1l
bnRzLnR4dApAQCAtMSw0ICsxLDUgQEAKLSMgcGlubmluZyBzcGhpbnggdG8gMS40LiogZHVlIHRv
IHNlYXJjaCBpc3N1ZXMgd2l0aCBydGQ6Ci0jIGh0dHBzOi8vZ2l0aHViLmNvbS9ydGZkL3JlYWR0
aGVkb2NzLXNwaGlueC1leHQvaXNzdWVzLzI1Ci1zcGhpbnggPT0xLjQuKgorcGFsbGV0cy1zcGhp
bngtdGhlbWVzCitweWdtZW50cy1weXRlc3Q+PTEuMS4wCitzcGhpbngtcmVtb3ZlZC1pbj49MC4y
LjAKK3NwaGlueD49My4xLDw0CiBzcGhpbnhjb250cmliLXRyaW8KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9za2lwcGluZy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vc2tpcHBpbmcu
cnN0CmluZGV4IGJmYTZmM2U3NWE2Mi4uNWM2N2Q3N2E3ZWMyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vc2tpcHBpbmcucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9za2lwcGlu
Zy5yc3QKQEAgLTE0LDcgKzE0LDcgQEAgb3RoZXJ3aXNlIHB5dGVzdCBzaG91bGQgc2tpcCBydW5u
aW5nIHRoZSB0ZXN0IGFsdG9nZXRoZXIuIENvbW1vbiBleGFtcGxlcyBhcmUgc2sKIHdpbmRvd3Mt
b25seSB0ZXN0cyBvbiBub24td2luZG93cyBwbGF0Zm9ybXMsIG9yIHNraXBwaW5nIHRlc3RzIHRo
YXQgZGVwZW5kIG9uIGFuIGV4dGVybmFsCiByZXNvdXJjZSB3aGljaCBpcyBub3QgYXZhaWxhYmxl
IGF0IHRoZSBtb21lbnQgKGZvciBleGFtcGxlIGEgZGF0YWJhc2UpLgogCi1BICoqeGZhaWwqKiBt
ZWFucyB0aGF0IHlvdSBleHBlY3QgYSB0ZXN0IHRvIGZhaWwgZm9yIHNvbWUgcmVhc29uLgorQW4g
Kip4ZmFpbCoqIG1lYW5zIHRoYXQgeW91IGV4cGVjdCBhIHRlc3QgdG8gZmFpbCBmb3Igc29tZSBy
ZWFzb24uCiBBIGNvbW1vbiBleGFtcGxlIGlzIGEgdGVzdCBmb3IgYSBmZWF0dXJlIG5vdCB5ZXQg
aW1wbGVtZW50ZWQsIG9yIGEgYnVnIG5vdCB5ZXQgZml4ZWQuCiBXaGVuIGEgdGVzdCBwYXNzZXMg
ZGVzcGl0ZSBiZWluZyBleHBlY3RlZCB0byBmYWlsIChtYXJrZWQgd2l0aCBgYHB5dGVzdC5tYXJr
LnhmYWlsYGApLAogaXQncyBhbiAqKnhwYXNzKiogYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhl
IHRlc3Qgc3VtbWFyeS4KQEAgLTIyLDcgKzIyLDkgQEAgaXQncyBhbiAqKnhwYXNzKiogYW5kIHdp
bGwgYmUgcmVwb3J0ZWQgaW4gdGhlIHRlc3Qgc3VtbWFyeS4KIGBgcHl0ZXN0YGAgY291bnRzIGFu
ZCBsaXN0cyAqc2tpcCogYW5kICp4ZmFpbCogdGVzdHMgc2VwYXJhdGVseS4gRGV0YWlsZWQKIGlu
Zm9ybWF0aW9uIGFib3V0IHNraXBwZWQveGZhaWxlZCB0ZXN0cyBpcyBub3Qgc2hvd24gYnkgZGVm
YXVsdCB0byBhdm9pZAogY2x1dHRlcmluZyB0aGUgb3V0cHV0LiAgWW91IGNhbiB1c2UgdGhlIGBg
LXJgYCBvcHRpb24gdG8gc2VlIGRldGFpbHMKLWNvcnJlc3BvbmRpbmcgdG8gdGhlICJzaG9ydCIg
bGV0dGVycyBzaG93biBpbiB0aGUgdGVzdCBwcm9ncmVzczo6Citjb3JyZXNwb25kaW5nIHRvIHRo
ZSAic2hvcnQiIGxldHRlcnMgc2hvd24gaW4gdGhlIHRlc3QgcHJvZ3Jlc3M6CisKKy4uIGNvZGUt
YmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLXJ4WHMgICMgc2hvdyBleHRyYSBpbmZvIG9uIHhm
YWlsZWQsIHhwYXNzZWQsIGFuZCBza2lwcGVkIHRlc3RzCiAKQEAgLTM3LDcgKzM5LDcgQEAgTW9y
ZSBkZXRhaWxzIG9uIHRoZSBgYC1yYGAgb3B0aW9uIGNhbiBiZSBmb3VuZCBieSBydW5uaW5nIGBg
cHl0ZXN0IC1oYGAuCiBTa2lwcGluZyB0ZXN0IGZ1bmN0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotLi4gdmVyc2lvbmFkZGVkOjogMi45CisKIAogVGhlIHNpbXBsZXN0IHdheSB0byBz
a2lwIGEgdGVzdCBmdW5jdGlvbiBpcyB0byBtYXJrIGl0IHdpdGggdGhlIGBgc2tpcGBgIGRlY29y
YXRvcgogd2hpY2ggbWF5IGJlIHBhc3NlZCBhbiBvcHRpb25hbCBgYHJlYXNvbmBgOgpAQCAtNTgs
NTQgKzYwLDY4IEBAIGJ5IGNhbGxpbmcgdGhlIGBgcHl0ZXN0LnNraXAocmVhc29uKWBgIGZ1bmN0
aW9uOgogICAgICAgICBpZiBub3QgdmFsaWRfY29uZmlnKCk6CiAgICAgICAgICAgICBweXRlc3Qu
c2tpcCgidW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiIpCiAKK1RoZSBpbXBlcmF0aXZlIG1ldGhv
ZCBpcyB1c2VmdWwgd2hlbiBpdCBpcyBub3QgcG9zc2libGUgdG8gZXZhbHVhdGUgdGhlIHNraXAg
Y29uZGl0aW9uCitkdXJpbmcgaW1wb3J0IHRpbWUuCisKIEl0IGlzIGFsc28gcG9zc2libGUgdG8g
c2tpcCB0aGUgd2hvbGUgbW9kdWxlIHVzaW5nCiBgYHB5dGVzdC5za2lwKHJlYXNvbiwgYWxsb3df
bW9kdWxlX2xldmVsPVRydWUpYGAgYXQgdGhlIG1vZHVsZSBsZXZlbDoKIAogLi4gY29kZS1ibG9j
azo6IHB5dGhvbgogCisgICAgaW1wb3J0IHN5cwogICAgIGltcG9ydCBweXRlc3QKIAotICAgIGlm
IG5vdCBweXRlc3QuY29uZmlnLmdldG9wdGlvbigiLS1jdXN0b20tZmxhZyIpOgotICAgICAgICBw
eXRlc3Quc2tpcCgiLS1jdXN0b20tZmxhZyBpcyBtaXNzaW5nLCBza2lwcGluZyB0ZXN0cyIsIGFs
bG93X21vZHVsZV9sZXZlbD1UcnVlKQorICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgid2luIik6CisgICAgICAgIHB5dGVzdC5za2lwKCJza2lwcGluZyB3aW5kb3dzLW9ubHkgdGVz
dHMiLCBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSkKIAotVGhlIGltcGVyYXRpdmUgbWV0aG9kIGlz
IHVzZWZ1bCB3aGVuIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBldmFsdWF0ZSB0aGUgc2tpcCBjb25k
aXRpb24KLWR1cmluZyBpbXBvcnQgdGltZS4KIAogKipSZWZlcmVuY2UqKjogOnJlZjpgcHl0ZXN0
Lm1hcmsuc2tpcCByZWZgCiAKIGBgc2tpcGlmYGAKIH5+fn5+fn5+fn4KIAotLi4gdmVyc2lvbmFk
ZGVkOjogMi4wCisKIAogSWYgeW91IHdpc2ggdG8gc2tpcCBzb21ldGhpbmcgY29uZGl0aW9uYWxs
eSB0aGVuIHlvdSBjYW4gdXNlIGBgc2tpcGlmYGAgaW5zdGVhZC4KIEhlcmUgaXMgYW4gZXhhbXBs
ZSBvZiBtYXJraW5nIGEgdGVzdCBmdW5jdGlvbiB0byBiZSBza2lwcGVkCi13aGVuIHJ1biBvbiBh
IFB5dGhvbjMuNiBpbnRlcnByZXRlcjo6Cit3aGVuIHJ1biBvbiBhbiBpbnRlcnByZXRlciBlYXJs
aWVyIHRoYW4gUHl0aG9uMy42OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBpbXBv
cnQgc3lzCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMudmVyc2lvbl9pbmZvIDwgKDMsNiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWFzb249InJlcXVpcmVzIHB5dGhvbjMuNiIpCisK
KworICAgIEBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA8ICgzLCA2KSwgcmVh
c29uPSJyZXF1aXJlcyBweXRob24zLjYgb3IgaGlnaGVyIikKICAgICBkZWYgdGVzdF9mdW5jdGlv
bigpOgogICAgICAgICAuLi4KIAogSWYgdGhlIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gYGBUcnVl
YGAgZHVyaW5nIGNvbGxlY3Rpb24sIHRoZSB0ZXN0IGZ1bmN0aW9uIHdpbGwgYmUgc2tpcHBlZCwK
IHdpdGggdGhlIHNwZWNpZmllZCByZWFzb24gYXBwZWFyaW5nIGluIHRoZSBzdW1tYXJ5IHdoZW4g
dXNpbmcgYGAtcnNgYC4KIAotWW91IGNhbiBzaGFyZSBgYHNraXBpZmBgIG1hcmtlcnMgYmV0d2Vl
biBtb2R1bGVzLiAgQ29uc2lkZXIgdGhpcyB0ZXN0IG1vZHVsZTo6CitZb3UgY2FuIHNoYXJlIGBg
c2tpcGlmYGAgbWFya2VycyBiZXR3ZWVuIG1vZHVsZXMuICBDb25zaWRlciB0aGlzIHRlc3QgbW9k
dWxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9t
eW1vZHVsZS5weQogICAgIGltcG9ydCBteW1vZHVsZQotICAgIG1pbnZlcnNpb24gPSBweXRlc3Qu
bWFyay5za2lwaWYobXltb2R1bGUuX192ZXJzaW9uaW5mb19fIDwgKDEsMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249ImF0IGxlYXN0IG15bW9kdWxlLTEuMSBy
ZXF1aXJlZCIpCisKKyAgICBtaW52ZXJzaW9uID0gcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAg
ICBteW1vZHVsZS5fX3ZlcnNpb25pbmZvX18gPCAoMSwgMSksIHJlYXNvbj0iYXQgbGVhc3QgbXlt
b2R1bGUtMS4xIHJlcXVpcmVkIgorICAgICkKKworCiAgICAgQG1pbnZlcnNpb24KICAgICBkZWYg
dGVzdF9mdW5jdGlvbigpOgogICAgICAgICAuLi4KIAotWW91IGNhbiBpbXBvcnQgdGhlIG1hcmtl
ciBhbmQgcmV1c2UgaXQgaW4gYW5vdGhlciB0ZXN0IG1vZHVsZTo6CitZb3UgY2FuIGltcG9ydCB0
aGUgbWFya2VyIGFuZCByZXVzZSBpdCBpbiBhbm90aGVyIHRlc3QgbW9kdWxlOgorCisuLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCiAKICAgICAjIHRlc3RfbXlvdGhlcm1vZHVsZS5weQogICAgIGZyb20g
dGVzdF9teW1vZHVsZSBpbXBvcnQgbWludmVyc2lvbgogCisKICAgICBAbWludmVyc2lvbgogICAg
IGRlZiB0ZXN0X2Fub3RoZXJmdW5jdGlvbigpOgogICAgICAgICAuLi4KQEAgLTEyNCwyNiArMTQw
LDIwIEBAIHNvIHRoZXkgYXJlIHN1cHBvcnRlZCBtYWlubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkgcmVhc29ucy4KIFNraXAgYWxsIHRlc3QgZnVuY3Rpb25zIG9mIGEgY2xhc3Mgb3IgbW9k
dWxlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1Zb3Ug
Y2FuIHVzZSB0aGUgYGBza2lwaWZgYCBtYXJrZXIgKGFzIGFueSBvdGhlciBtYXJrZXIpIG9uIGNs
YXNzZXM6OgorWW91IGNhbiB1c2UgdGhlIGBgc2tpcGlmYGAgbWFya2VyIChhcyBhbnkgb3RoZXIg
bWFya2VyKSBvbiBjbGFzc2VzOgogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMucGxhdGZv
cm0gPT0gJ3dpbjMyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iZG9lcyBub3Qg
cnVuIG9uIHdpbmRvd3MiKQotICAgIGNsYXNzIFRlc3RQb3NpeENhbGxzKG9iamVjdCk6CisuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCiAKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy5wbGF0Zm9y
bSA9PSAid2luMzIiLCByZWFzb249ImRvZXMgbm90IHJ1biBvbiB3aW5kb3dzIikKKyAgICBjbGFz
cyBUZXN0UG9zaXhDYWxsczoKICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oc2VsZik6CiAgICAg
ICAgICAgICAid2lsbCBub3QgYmUgc2V0dXAgb3IgcnVuIHVuZGVyICd3aW4zMicgcGxhdGZvcm0i
CiAKIElmIHRoZSBjb25kaXRpb24gaXMgYGBUcnVlYGAsIHRoaXMgbWFya2VyIHdpbGwgcHJvZHVj
ZSBhIHNraXAgcmVzdWx0IGZvcgogZWFjaCBvZiB0aGUgdGVzdCBtZXRob2RzIG9mIHRoYXQgY2xh
c3MuCiAKLS4uIHdhcm5pbmc6OgotCi0gICBUaGUgdXNlIG9mIGBgc2tpcGlmYGAgb24gY2xhc3Nl
cyB0aGF0IHVzZSBpbmhlcml0YW5jZSBpcyBzdHJvbmdseQotICAgZGlzY291cmFnZWQuIGBBIEtu
b3duIGJ1ZyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81Njg+
YF8KLSAgIGluIHB5dGVzdCdzIG1hcmtlcnMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3Ig
aW4gc3VwZXIgY2xhc3Nlcy4KLQotSWYgeW91IHdhbnQgdG8gc2tpcCBhbGwgdGVzdCBmdW5jdGlv
bnMgb2YgYSBtb2R1bGUsIHlvdSBtYXkgdXNlCi10aGUgYGBweXRlc3RtYXJrYGAgbmFtZSBvbiB0
aGUgZ2xvYmFsIGxldmVsOgorSWYgeW91IHdhbnQgdG8gc2tpcCBhbGwgdGVzdCBmdW5jdGlvbnMg
b2YgYSBtb2R1bGUsIHlvdSBtYXkgdXNlIHRoZQorOmdsb2JhbHZhcjpgcHl0ZXN0bWFya2AgZ2xv
YmFsOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKQEAgLTE2OSwxNCArMTc5LDE3IEBAIGlu
Zm9ybWF0aW9uLgogU2tpcHBpbmcgb24gYSBtaXNzaW5nIGltcG9ydCBkZXBlbmRlbmN5CiB+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotWW91IGNhbiB1c2UgdGhlIGZv
bGxvd2luZyBoZWxwZXIgYXQgbW9kdWxlIGxldmVsCi1vciB3aXRoaW4gYSB0ZXN0IG9yIHRlc3Qg
c2V0dXAgZnVuY3Rpb246OgorWW91IGNhbiBza2lwIHRlc3RzIG9uIGEgbWlzc2luZyBpbXBvcnQg
YnkgdXNpbmcgOnJlZjpgcHl0ZXN0LmltcG9ydG9yc2tpcCByZWZgCithdCBtb2R1bGUgbGV2ZWws
IHdpdGhpbiBhIHRlc3QsIG9yIHRlc3Qgc2V0dXAgZnVuY3Rpb24uCisKKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAogICAgIGRvY3V0aWxzID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgiZG9jdXRpbHMi
KQogCi1JZiBgYGRvY3V0aWxzYGAgY2Fubm90IGJlIGltcG9ydGVkIGhlcmUsIHRoaXMgd2lsbCBs
ZWFkIHRvIGEKLXNraXAgb3V0Y29tZSBvZiB0aGUgdGVzdC4gIFlvdSBjYW4gYWxzbyBza2lwIGJh
c2VkIG9uIHRoZQotdmVyc2lvbiBudW1iZXIgb2YgYSBsaWJyYXJ5OjoKK0lmIGBgZG9jdXRpbHNg
YCBjYW5ub3QgYmUgaW1wb3J0ZWQgaGVyZSwgdGhpcyB3aWxsIGxlYWQgdG8gYSBza2lwIG91dGNv
bWUgb2YKK3RoZSB0ZXN0LiBZb3UgY2FuIGFsc28gc2tpcCBiYXNlZCBvbiB0aGUgdmVyc2lvbiBu
dW1iZXIgb2YgYSBsaWJyYXJ5OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBkb2N1
dGlscyA9IHB5dGVzdC5pbXBvcnRvcnNraXAoImRvY3V0aWxzIiwgbWludmVyc2lvbj0iMC4zIikK
IApAQCAtMTk4LDcgKzIxMSw3IEBAIEhlcmUncyBhIHF1aWNrIGd1aWRlIG9uIGhvdyB0byBza2lw
IHRlc3RzIGluIGEgbW9kdWxlIGluIGRpZmZlcmVudCBzaXR1YXRpb25zOgogCiAgIC4uIGNvZGUt
YmxvY2s6OiBweXRob24KIAotICAgICAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsuc2tpcGlm
KHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAidGVzdHMgZm9yIGxpbnV4IG9ubHkiKQorICAgICAg
ICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
LCByZWFzb249InRlc3RzIGZvciBsaW51eCBvbmx5IikKIAogMy4gU2tpcCBhbGwgdGVzdHMgaW4g
YSBtb2R1bGUgaWYgc29tZSBpbXBvcnQgaXMgbWlzc2luZzoKIApAQCAtMjEzLDE3ICsyMjYsMTkg
QEAgWEZhaWw6IG1hcmsgdGVzdCBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQgdG8gZmFpbAogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3UgY2FuIHVzZSB0
aGUgYGB4ZmFpbGBgIG1hcmtlciB0byBpbmRpY2F0ZSB0aGF0IHlvdQotZXhwZWN0IGEgdGVzdCB0
byBmYWlsOjoKK2V4cGVjdCBhIHRlc3QgdG8gZmFpbDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhv
bgogCiAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCiAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKICAg
ICAgICAgLi4uCiAKLVRoaXMgdGVzdCB3aWxsIGJlIHJ1biBidXQgbm8gdHJhY2ViYWNrIHdpbGwg
YmUgcmVwb3J0ZWQKLXdoZW4gaXQgZmFpbHMuIEluc3RlYWQgdGVybWluYWwgcmVwb3J0aW5nIHdp
bGwgbGlzdCBpdCBpbiB0aGUKLSJleHBlY3RlZCB0byBmYWlsIiAoYGBYRkFJTGBgKSBvciAidW5l
eHBlY3RlZGx5IHBhc3NpbmciIChgYFhQQVNTYGApIHNlY3Rpb25zLgorVGhpcyB0ZXN0IHdpbGwg
cnVuIGJ1dCBubyB0cmFjZWJhY2sgd2lsbCBiZSByZXBvcnRlZCB3aGVuIGl0IGZhaWxzLiBJbnN0
ZWFkLCB0ZXJtaW5hbAorcmVwb3J0aW5nIHdpbGwgbGlzdCBpdCBpbiB0aGUgImV4cGVjdGVkIHRv
IGZhaWwiIChgYFhGQUlMYGApIG9yICJ1bmV4cGVjdGVkbHkKK3Bhc3NpbmciIChgYFhQQVNTYGAp
IHNlY3Rpb25zLgogCi1BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFsc28gbWFyayBhIHRlc3QgYXMg
YGBYRkFJTGBgIGZyb20gd2l0aGluIGEgdGVzdCBvciBzZXR1cCBmdW5jdGlvbgorQWx0ZXJuYXRp
dmVseSwgeW91IGNhbiBhbHNvIG1hcmsgYSB0ZXN0IGFzIGBgWEZBSUxgYCBmcm9tIHdpdGhpbiB0
aGUgdGVzdCBvciBpdHMgc2V0dXAgZnVuY3Rpb24KIGltcGVyYXRpdmVseToKIAogLi4gY29kZS1i
bG9jazo6IHB5dGhvbgpAQCAtMjMyLDQ5ICsyNDcsNDcgQEAgaW1wZXJhdGl2ZWx5OgogICAgICAg
ICBpZiBub3QgdmFsaWRfY29uZmlnKCk6CiAgICAgICAgICAgICBweXRlc3QueGZhaWwoImZhaWxp
bmcgY29uZmlndXJhdGlvbiAoYnV0IHNob3VsZCB3b3JrKSIpCiAKLVRoaXMgd2lsbCB1bmNvbmRp
dGlvbmFsbHkgbWFrZSBgYHRlc3RfZnVuY3Rpb25gYCBgYFhGQUlMYGAuIE5vdGUgdGhhdCBubyBv
dGhlciBjb2RlIGlzIGV4ZWN1dGVkCi1hZnRlciBgYHB5dGVzdC54ZmFpbGBgIGNhbGwsIGRpZmZl
cmVudGx5IGZyb20gdGhlIG1hcmtlci4gVGhhdCdzIGJlY2F1c2UgaXQgaXMgaW1wbGVtZW50ZWQK
LWludGVybmFsbHkgYnkgcmFpc2luZyBhIGtub3duIGV4Y2VwdGlvbi4KKy4uIGNvZGUtYmxvY2s6
OiBweXRob24KIAotKipSZWZlcmVuY2UqKjogOnJlZjpgcHl0ZXN0Lm1hcmsueGZhaWwgcmVmYAor
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uMigpOgorICAgICAgICBpbXBvcnQgc2xvd19tb2R1bGUKIAor
ICAgICAgICBpZiBzbG93X21vZHVsZS5zbG93X2Z1bmN0aW9uKCk6CisgICAgICAgICAgICBweXRl
c3QueGZhaWwoInNsb3dfbW9kdWxlIHRha2luZyB0b28gbG9uZyIpCiAKLS4uIF9geGZhaWwgc3Ry
aWN0IHR1dG9yaWFsYDoKK1RoZXNlIHR3byBleGFtcGxlcyBpbGx1c3RyYXRlIHNpdHVhdGlvbnMg
d2hlcmUgeW91IGRvbid0IHdhbnQgdG8gY2hlY2sgZm9yIGEgY29uZGl0aW9uCithdCB0aGUgbW9k
dWxlIGxldmVsLCB3aGljaCBpcyB3aGVuIGEgY29uZGl0aW9uIHdvdWxkIG90aGVyd2lzZSBiZSBl
dmFsdWF0ZWQgZm9yIG1hcmtzLgorCitUaGlzIHdpbGwgbWFrZSBgYHRlc3RfZnVuY3Rpb25gYCBg
YFhGQUlMYGAuIE5vdGUgdGhhdCBubyBvdGhlciBjb2RlIGlzIGV4ZWN1dGVkIGFmdGVyCit0aGUg
YGBweXRlc3QueGZhaWxgYCBjYWxsLCBkaWZmZXJlbnRseSBmcm9tIHRoZSBtYXJrZXIuIFRoYXQn
cyBiZWNhdXNlIGl0IGlzIGltcGxlbWVudGVkCitpbnRlcm5hbGx5IGJ5IHJhaXNpbmcgYSBrbm93
biBleGNlcHRpb24uCisKKyoqUmVmZXJlbmNlKio6IDpyZWY6YHB5dGVzdC5tYXJrLnhmYWlsIHJl
ZmAKIAotYGBzdHJpY3RgYCBwYXJhbWV0ZXIKLX5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLS4uIHZl
cnNpb25hZGRlZDo6IDIuOQorYGBjb25kaXRpb25gYCBwYXJhbWV0ZXIKK35+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+CiAKLUJvdGggYGBYRkFJTGBgIGFuZCBgYFhQQVNTYGAgZG9uJ3QgZmFpbCB0aGUg
dGVzdCBzdWl0ZSwgdW5sZXNzIHRoZSBgYHN0cmljdGBgIGtleXdvcmQtb25seQotcGFyYW1ldGVy
IGlzIHBhc3NlZCBhcyBgYFRydWVgYDoKK0lmIGEgdGVzdCBpcyBvbmx5IGV4cGVjdGVkIHRvIGZh
aWwgdW5kZXIgYSBjZXJ0YWluIGNvbmRpdGlvbiwgeW91IGNhbiBwYXNzCit0aGF0IGNvbmRpdGlv
biBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyOgogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAg
ICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3RyaWN0PVRydWUpCisgICAgQHB5dGVzdC5tYXJrLnhmYWls
KHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCByZWFzb249ImJ1ZyBpbiBhIDNyZCBwYXJ0eSBsaWJy
YXJ5IikKICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgogICAgICAgICAuLi4KIAotCi1UaGlzIHdp
bGwgbWFrZSBgYFhQQVNTYGAgKCJ1bmV4cGVjdGVkbHkgcGFzc2luZyIpIHJlc3VsdHMgZnJvbSB0
aGlzIHRlc3QgdG8gZmFpbCB0aGUgdGVzdCBzdWl0ZS4KLQotWW91IGNhbiBjaGFuZ2UgdGhlIGRl
ZmF1bHQgdmFsdWUgb2YgdGhlIGBgc3RyaWN0YGAgcGFyYW1ldGVyIHVzaW5nIHRoZQotYGB4ZmFp
bF9zdHJpY3RgYCBpbmkgb3B0aW9uOgotCi0uLiBjb2RlLWJsb2NrOjogaW5pCi0KLSAgICBbcHl0
ZXN0XQotICAgIHhmYWlsX3N0cmljdD10cnVlCi0KK05vdGUgdGhhdCB5b3UgaGF2ZSB0byBwYXNz
IGEgcmVhc29uIGFzIHdlbGwgKHNlZSB0aGUgcGFyYW1ldGVyIGRlc2NyaXB0aW9uIGF0Cis6cmVm
OmBweXRlc3QubWFyay54ZmFpbCByZWZgKS4KIAogYGByZWFzb25gYCBwYXJhbWV0ZXIKIH5+fn5+
fn5+fn5+fn5+fn5+fn5+CiAKLUFzIHdpdGggc2tpcGlmXyB5b3UgY2FuIGFsc28gbWFyayB5b3Vy
IGV4cGVjdGF0aW9uIG9mIGEgZmFpbHVyZQotb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtOjoKK1lv
dSBjYW4gc3BlY2lmeSB0aGUgbW90aXZlIG9mIGFuIGV4cGVjdGVkIGZhaWx1cmUgd2l0aCB0aGUg
YGByZWFzb25gYCBwYXJhbWV0ZXI6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgIEBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLDYpLAotICAgICAgICAgICAg
ICAgICAgICAgICByZWFzb249InB5dGhvbjMuNiBhcGkgY2hhbmdlcyIpCisgICAgQHB5dGVzdC5t
YXJrLnhmYWlsKHJlYXNvbj0ia25vd24gcGFyc2VyIGlzc3VlIikKICAgICBkZWYgdGVzdF9mdW5j
dGlvbigpOgogICAgICAgICAuLi4KIApAQCAtMjgzLDcgKzI5Niw3IEBAIG9uIGEgcGFydGljdWxh
ciBwbGF0Zm9ybTo6CiB+fn5+fn5+fn5+fn5+fn5+fn5+fgogCiBJZiB5b3Ugd2FudCB0byBiZSBt
b3JlIHNwZWNpZmljIGFzIHRvIHdoeSB0aGUgdGVzdCBpcyBmYWlsaW5nLCB5b3UgY2FuIHNwZWNp
ZnkKLWEgc2luZ2xlIGV4Y2VwdGlvbiwgb3IgYSBsaXN0IG9mIGV4Y2VwdGlvbnMsIGluIHRoZSBg
YHJhaXNlc2BgIGFyZ3VtZW50LgorYSBzaW5nbGUgZXhjZXB0aW9uLCBvciBhIHR1cGxlIG9mIGV4
Y2VwdGlvbnMsIGluIHRoZSBgYHJhaXNlc2BgIGFyZ3VtZW50LgogCiAuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKQEAgLTMwOSwxMSArMzIyLDM4IEBAIGV2ZW4gZXhlY3V0ZWQsIHVzZSB0aGUgYGBy
dW5gYCBwYXJhbWV0ZXIgYXMgYGBGYWxzZWBgOgogVGhpcyBpcyBzcGVjaWFsbHkgdXNlZnVsIGZv
ciB4ZmFpbGluZyB0ZXN0cyB0aGF0IGFyZSBjcmFzaGluZyB0aGUgaW50ZXJwcmV0ZXIgYW5kIHNo
b3VsZCBiZQogaW52ZXN0aWdhdGVkIGxhdGVyLgogCisuLiBfYHhmYWlsIHN0cmljdCB0dXRvcmlh
bGA6CisKK2Bgc3RyaWN0YGAgcGFyYW1ldGVyCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitCb3Ro
IGBgWEZBSUxgYCBhbmQgYGBYUEFTU2BgIGRvbid0IGZhaWwgdGhlIHRlc3Qgc3VpdGUgYnkgZGVm
YXVsdC4KK1lvdSBjYW4gY2hhbmdlIHRoaXMgYnkgc2V0dGluZyB0aGUgYGBzdHJpY3RgYCBrZXl3
b3JkLW9ubHkgcGFyYW1ldGVyIHRvIGBgVHJ1ZWBgOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9u
CisKKyAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3RyaWN0PVRydWUpCisgICAgZGVmIHRlc3RfZnVu
Y3Rpb24oKToKKyAgICAgICAgLi4uCisKKworVGhpcyB3aWxsIG1ha2UgYGBYUEFTU2BgICgidW5l
eHBlY3RlZGx5IHBhc3NpbmciKSByZXN1bHRzIGZyb20gdGhpcyB0ZXN0IHRvIGZhaWwgdGhlIHRl
c3Qgc3VpdGUuCisKK1lvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBgYHN0
cmljdGBgIHBhcmFtZXRlciB1c2luZyB0aGUKK2BgeGZhaWxfc3RyaWN0YGAgaW5pIG9wdGlvbjoK
KworLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgW3B5dGVzdF0KKyAgICB4ZmFpbF9zdHJpY3Q9
dHJ1ZQorCiAKIElnbm9yaW5nIHhmYWlsCiB+fn5+fn5+fn5+fn5+fgogCi1CeSBzcGVjaWZ5aW5n
IG9uIHRoZSBjb21tYW5kbGluZTo6CitCeSBzcGVjaWZ5aW5nIG9uIHRoZSBjb21tYW5kbGluZToK
KworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLXJ1bnhmYWlsCiAKQEAgLTMy
NywxNSArMzY3LDE5IEBAIEhlcmUgaXMgYSBzaW1wbGUgdGVzdCBmaWxlIHdpdGggdGhlIHNldmVy
YWwgdXNhZ2VzOgogCiAuLiBsaXRlcmFsaW5jbHVkZTo6IGV4YW1wbGUveGZhaWxfZGVtby5weQog
Ci1SdW5uaW5nIGl0IHdpdGggdGhlIHJlcG9ydC1vbi14ZmFpbCBvcHRpb24gZ2l2ZXMgdGhpcyBv
dXRwdXQ6OgorUnVubmluZyBpdCB3aXRoIHRoZSByZXBvcnQtb24teGZhaWwgb3B0aW9uIGdpdmVz
IHRoaXMgb3V0cHV0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICBleGFtcGxlICQg
cHl0ZXN0IC1yeCB4ZmFpbF9kZW1vLnB5CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09
IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBs
YXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1
Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUi9leGFtcGxlLCBpbmlmaWxl
OgorICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0x
LngueSwgcGx1Z2d5LTAueC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3Rf
Y2FjaGUKKyAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSL2V4YW1wbGUKICAgICBjb2xsZWN0
ZWQgNyBpdGVtcwogCiAgICAgeGZhaWxfZGVtby5weSB4eHh4eHh4ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKICAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09
PT09PT09CiAgICAgWEZBSUwgeGZhaWxfZGVtby5weTo6dGVzdF9oZWxsbwogICAgIFhGQUlMIHhm
YWlsX2RlbW8ucHk6OnRlc3RfaGVsbG8yCkBAIC0zNDksOCArMzkzLDcgQEAgUnVubmluZyBpdCB3
aXRoIHRoZSByZXBvcnQtb24teGZhaWwgb3B0aW9uIGdpdmVzIHRoaXMgb3V0cHV0OjoKICAgICBY
RkFJTCB4ZmFpbF9kZW1vLnB5Ojp0ZXN0X2hlbGxvNgogICAgICAgcmVhc29uOiByZWFzb24KICAg
ICBYRkFJTCB4ZmFpbF9kZW1vLnB5Ojp0ZXN0X2hlbGxvNwotCi0gICAgPT09PT09PT09PT09PT09
PT09PT09PT09IDcgeGZhaWxlZCBpbiAwLjEyIHNlY29uZHMgPT09PT09PT09PT09PT09PT09PT09
PT09PQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gNyB4ZmFpbGVkIGluIDAuMTJz
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gX2Bza2lwL3hmYWlsIHdpdGggcGFy
YW1ldHJpemVgOgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vc3BvbnNvci5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vc3BvbnNvci5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi44MzYyYTdmMGEzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vc3BvbnNvci5yc3QKQEAgLTAsMCArMSwyNiBAQAorU3BvbnNvcgorPT09PT09
PQorCitweXRlc3QgaXMgbWFpbnRhaW5lZCBieSBhIHRlYW0gb2Ygdm9sdW50ZWVycyBmcm9tIGFs
bCBhcm91bmQgdGhlIHdvcmxkIGluIHRoZWlyIGZyZWUgdGltZS4gV2hpbGUKK3dlIHdvcmsgb24g
cHl0ZXN0IGJlY2F1c2Ugd2UgbG92ZSB0aGUgcHJvamVjdCBhbmQgdXNlIGl0IGRhaWx5IGF0IG91
ciBkYWlseSBqb2JzLCBtb25ldGFyeQorY29tcGVuc2F0aW9uIHdoZW4gcG9zc2libGUgaXMgd2Vs
Y29tZSB0byBqdXN0aWZ5IHRpbWUgYXdheSBmcm9tIGZyaWVuZHMsIGZhbWlseSBhbmQgcGVyc29u
YWwgdGltZS4KKworTW9uZXkgaXMgYWxzbyB1c2VkIHRvIGZ1bmQgbG9jYWwgc3ByaW50cywgbWVy
Y2hhbmRpc2luZyAoc3RpY2tlcnMgdG8gZGlzdHJpYnV0ZSBpbiBjb25mZXJlbmNlcyBmb3IgZXhh
bXBsZSkKK2FuZCBldmVyeSBmZXcgeWVhcnMgYSBsYXJnZSBzcHJpbnQgaW52b2x2aW5nIGFsbCBt
ZW1iZXJzLgorCitPcGVuQ29sbGVjdGl2ZQorLS0tLS0tLS0tLS0tLS0KKworYE9wZW4gQ29sbGVj
dGl2ZWBfIGlzIGFuIG9ubGluZSBmdW5kaW5nIHBsYXRmb3JtIGZvciBvcGVuIGFuZCB0cmFuc3Bh
cmVudCBjb21tdW5pdGllcy4KK0l0IHByb3ZpZGUgdG9vbHMgdG8gcmFpc2UgbW9uZXkgYW5kIHNo
YXJlIHlvdXIgZmluYW5jZXMgaW4gZnVsbCB0cmFuc3BhcmVuY3kuCisKK0l0IGlzIHRoZSBwbGF0
Zm9ybSBvZiBjaG9pY2UgZm9yIGluZGl2aWR1YWxzIGFuZCBjb21wYW5pZXMgdGhhdCB3YW50IHRv
IG1ha2Ugb25lLXRpbWUgb3IKK21vbnRobHkgZG9uYXRpb25zIGRpcmVjdGx5IHRvIHRoZSBwcm9q
ZWN0LgorCitTZWUgbW9yZSBkZXRhaWxzIGluIHRoZSBgcHl0ZXN0IGNvbGxlY3RpdmVgXy4KKwor
CisuLiBfVGlkZWxpZnQ6IGh0dHBzOi8vdGlkZWxpZnQuY29tCisuLiBfVGlkZWxpZnQgc3Vic2Ny
aXB0aW9uOiBodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vcGtnL3B5cGktcHl0ZXN0
CisuLiBfT3BlbiBDb2xsZWN0aXZlOiBodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbQorLi4gX3B5
dGVzdCBjb2xsZWN0aXZlOiBodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9weXRlc3QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90YWxrcy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGFsa3MucnN0CmluZGV4IDc5NTM0ZWE2ZTlhNi4uMjE2Y2NiOGRkOGE0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vdGFsa3MucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90YWxr
cy5yc3QKQEAgLTIsMjQgKzIsMzUgQEAKIFRhbGtzIGFuZCBUdXRvcmlhbHMKID09PT09PT09PT09
PT09PT09PT09PT09PT09CiAKLS4uCi0gICAuLiBzaWRlYmFyOjogTmV4dCBPcGVuIFRyYWluaW5n
cwotCi0gICAgICBgUHJvZmVzc2lvbmFsIFRlc3Rpbmcgd2l0aCBQeXRob24KLSAgICAgIDxodHRw
Oi8vd3d3LnB5dGhvbi1hY2FkZW15LmNvbS9jb3Vyc2VzL3NwZWNpYWx0b3BpY3MvcHl0aG9uX2Nv
dXJzZV90ZXN0aW5nLmh0bWw+YF8sCi0gICAgICAyNi0yOCBBcHJpbCAyMDE3LCBMZWlwemlnLCBH
ZXJtYW55LgotCi0uLiBfYGZ1bmNhcmdzYDogZnVuY2FyZ3MuaHRtbAotCiBCb29rcwogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gYHB5dGVzdCBRdWlj
ayBTdGFydCBHdWlkZSwgYnkgQnJ1bm8gT2xpdmVpcmEgKDIwMTgpCisgIDxodHRwczovL3d3dy5w
YWNrdHB1Yi5jb20vd2ViLWRldmVsb3BtZW50L3B5dGVzdC1xdWljay1zdGFydC1ndWlkZT5gXy4K
KwogLSBgUHl0aG9uIFRlc3Rpbmcgd2l0aCBweXRlc3QsIGJ5IEJyaWFuIE9ra2VuICgyMDE3KQog
ICA8aHR0cHM6Ly9wcmFncHJvZy5jb20vYm9vay9ib3B5dGVzdC9weXRob24tdGVzdGluZy13aXRo
LXB5dGVzdD5gXy4KIAogVGFsa3MgYW5kIGJsb2cgcG9zdGluZ3MKIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCistIFdlYmluYXI6IGBweXRlc3Q6IFRlc3Qg
RHJpdmVuIERldmVsb3BtZW50IGbDvHIgUHl0aG9uIChHZXJtYW4pIDxodHRwczovL2JydWhpbi5z
b2Z0d2FyZS9pbnMtcHl0ZXN0Lz5gXywgRmxvcmlhbiBCcnVoaW4sIHZpYSBteWxlYXJuaW5nLmNo
LCAyMDIwCisKKy0gV2ViaW5hcjogYFNpbXBsaWZ5IFlvdXIgVGVzdHMgd2l0aCBGaXh0dXJlcyA8
aHR0cHM6Ly9ibG9nLmpldGJyYWlucy5jb20vcHljaGFybS8yMDIwLzA4L3dlYmluYXItcmVjb3Jk
aW5nLXNpbXBsaWZ5LXlvdXItdGVzdHMtd2l0aC1maXh0dXJlcy13aXRoLW9saXZlci1iZXN0d2Fs
dGVyLz5gXywgT2xpdmVyIEJlc3R3YWx0ZXIsIHZpYSBKZXRCcmFpbnMsIDIwMjAKKworLSBUcmFp
bmluZzogYEludHJvZHVjdGlvbiB0byBweXRlc3QgLSBzaW1wbGUsIHJhcGlkIGFuZCBmdW4gdGVz
dGluZyB3aXRoIFB5dGhvbiA8aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1DTXVTbjlj
b2ZiST5gXywgRmxvcmlhbiBCcnVoaW4sIFB5Q29uREUgMjAxOQorCistIEFicmlkZ2VkIG1ldGFw
cm9ncmFtbWluZyBjbGFzc2ljcyAtIHRoaXMgZXBpc29kZTogcHl0ZXN0LCBPbGl2ZXIgQmVzdHdh
bHRlciwgUHlDb25ERSAyMDE5IChgcmVwb3NpdG9yeSA8aHR0cHM6Ly9naXRodWIuY29tL29iZXN0
d2FsdGVyL2FicmlkZ2VkLW1ldGEtcHJvZ3JhbW1pbmctY2xhc3NpY3M+YF9fLCBgcmVjb3JkaW5n
IDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXpIcGVNVEpzQlJrJmZlYXR1cmU9eW91
dHUuYmU+YF9fKQorCistIFRlc3RpbmcgUHlTaWRlL1B5UXQgY29kZSBlYXNpbHkgdXNpbmcgdGhl
IHB5dGVzdCBmcmFtZXdvcmssIEZsb3JpYW4gQnJ1aGluLCBRdCBXb3JsZCBTdW1taXQgMjAxOSAo
YHNsaWRlcyA8aHR0cHM6Ly9icnVoaW4uc29mdHdhcmUvdGFsa3MvcXR3czE5LnBkZj5gX18sIGBy
ZWNvcmRpbmcgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9emRzQlM1QlhHcVE+YF9f
KQorCistIGBweXRlc3Q6IHJlY29tbWVuZGF0aW9ucywgYmFzaWMgcGFja2FnZXMgZm9yIHRlc3Rp
bmcgaW4gUHl0aG9uIGFuZCBEamFuZ28sIEFuZHJldSBWYWxsYm9uYSwgUHlCQ04gSnVuZSAyMDE5
IDxodHRwczovL3d3dy5zbGlkZXNoYXJlLm5ldC9BbmRyZXVWYWxsYm9uYVBsYXphcy9weWJjbi1w
eXRlc3QtcmVjb21lbmRhY2lvbmVzLXBhcXVldGVzLWJzaWNvcy1wYXJhLXRlc3RpbmctZW4tcHl0
aG9uLXktZGphbmdvPmBfLgorCistIHB5dGVzdDogcmVjb21tZW5kYXRpb25zLCBiYXNpYyBwYWNr
YWdlcyBmb3IgdGVzdGluZyBpbiBQeXRob24gYW5kIERqYW5nbywgQW5kcmV1IFZhbGxib25hLCBQ
eWNvbkVTIDIwMTcgKGBzbGlkZXMgaW4gZW5nbGlzaCA8aHR0cDovL3RhbGtzLmFwc2wuaW8vdGVz
dGluZy1weWNvbmVzLTIwMTcvPmBfLCBgdmlkZW8gaW4gc3BhbmlzaCA8aHR0cHM6Ly93d3cueW91
dHViZS5jb20vd2F0Y2g/dj1LMjBHZVItbFhEaz5gXykKKworLSBgcHl0ZXN0IGFkdmFuY2VkLCBB
bmRyZXcgU3ZldGxvdiAoUnVzc2lhbiwgUHlDb24gUnVzc2lhLCAyMDE2KQorICA8aHR0cHM6Ly93
d3cueW91dHViZS5jb20vd2F0Y2g/dj03S2dpaGRLVFdZND5gXy4KKwogLSBgUHl0aG9uaWMgdGVz
dGluZywgSWdvciBTdGFyaWtvdiAoUnVzc2lhbiwgUHlOc2ssIE5vdmVtYmVyIDIwMTYpCiAgIDxo
dHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PV85Mm5mZGQ1bks4PmBfLgogCkBAIC0zOSwx
MyArNTAsMTEgQEAgVGFsa3MgYW5kIGJsb2cgcG9zdGluZ3MKICAgPGh0dHBzOi8vd3d3LnlvdXR1
YmUuY29tL3dhdGNoP3Y9UC1BaHB1a0RJaWs+YF8KIAogLSBgMy1wYXJ0IGJsb2cgc2VyaWVzIGFi
b3V0IHB5dGVzdCBmcm9tIEBweWRhbm55IGFsaWFzIERhbmllbCBHcmVlbmZlbGQgKEphbnVhcnkK
LSAgMjAxNCkgPGh0dHA6Ly9weWRhbm55LmNvbS9weXRlc3Qtbm8tYm9pbGVycGxhdGUtdGVzdGlu
Zy5odG1sPmBfCisgIDIwMTQpIDxodHRwczovL2RhbmllbC5yb3lncmVlbmZlbGQuY29tL3B5dGVz
dC1uby1ib2lsZXJwbGF0ZS10ZXN0aW5nLmh0bWw+YF8KIAogLSBgcHl0ZXN0OiBoZWxwcyB5b3Ug
d3JpdGUgYmV0dGVyIERqYW5nbyBhcHBzLCBBbmRyZWFzIFBlbG1lLCBEamFuZ29Db24KICAgRXVy
b3BlIDIwMTQgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9YWFBcllWaDZYU00+YF8u
CiAKLS0gOnJlZjpgZml4dHVyZXNgCi0KIC0gYFRlc3RpbmcgRGphbmdvIEFwcGxpY2F0aW9ucyB3
aXRoIHB5dGVzdCwgQW5kcmVhcyBQZWxtZSwgRXVyb1B5dGhvbgogICAyMDEzIDxodHRwczovL3d3
dy55b3V0dWJlLmNvbS93YXRjaD92PWFVZjhGa2I3VGFZPmBfLgogCkBAIC02MSw3ICs3MCw3IEBA
IFRhbGtzIGFuZCBibG9nIHBvc3RpbmdzCiAtIGBweXRlc3QgaW50cm9kdWN0aW9uIGZyb20gQnJp
YW4gT2trZW4gKEphbnVhcnkgMjAxMykKICAgPGh0dHA6Ly9weXRob250ZXN0aW5nLm5ldC9mcmFt
ZXdvcmsvcHl0ZXN0LWludHJvZHVjdGlvbi8+YF8KIAotLSBweWNvbiBhdXN0cmFsaWEgMjAxMiBw
eXRlc3QgdGFsayBmcm9tIEJyaWFubmEgTGF1Z2hlciAoYHZpZGVvIDxodHRwOi8vd3d3LnlvdXR1
YmUuY29tL3dhdGNoP3Y9RFROZWpFOUVyYUk+YF8sIGBzbGlkZXMgPGh0dHA6Ly93d3cuc2xpZGVz
aGFyZS5uZXQvcGZjdGRheWVsaXNlL2Z1bmNhcmdzLW90aGVyLWZ1bi13aXRoLXB5dGVzdD5gXywg
YGNvZGUgPGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzMzODY5NTE+YF8pCistIHB5Y29uIGF1c3Ry
YWxpYSAyMDEyIHB5dGVzdCB0YWxrIGZyb20gQnJpYW5uYSBMYXVnaGVyIChgdmlkZW8gPGh0dHA6
Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1EVE5lakU5RXJhST5gXywgYHNsaWRlcyA8aHR0cHM6
Ly93d3cuc2xpZGVzaGFyZS5uZXQvcGZjdGRheWVsaXNlL2Z1bmNhcmdzLW90aGVyLWZ1bi13aXRo
LXB5dGVzdD5gXywgYGNvZGUgPGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzMzODY5NTE+YF8pCiAt
IGBweWNvbiAyMDEyIFVTIHRhbGsgdmlkZW8gZnJvbSBIb2xnZXIgS3Jla2VsIDxodHRwOi8vd3d3
LnlvdXR1YmUuY29tL3dhdGNoP3Y9OUxWcUJRY0ZteXc+YF8KIAogLSBgbW9ua2V5IHBhdGNoaW5n
IGRvbmUgcmlnaHRgXyAoYmxvZyBwb3N0LCBjb25zdWx0IGBtb25rZXlwYXRjaCBwbHVnaW5gXyBm
b3IgdXAtdG8tZGF0ZSBBUEkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9h
dHRpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9hdHRpYy5yc3QKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA2OTQ0NjYxY2I1Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi90ZXN0L2F0dGljLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCww
IEBACi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQVRU
SUMgZG9jdW1lbnRhdGlvbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLQotWFhYIFJFVklFVyBhbmQgcmVtb3ZlIHRoZSBiZWxvdyAgWFhYCi0KLUN1c3Rv
bWl6aW5nIHRoZSB0ZXN0aW5nIHByb2Nlc3MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotd3JpdGluZyBjb25mdGVzdC5weSBmaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotWW91IG1heSBwdXQgY29uZnRlc3QucHkgZmlsZXMgY29udGFpbmluZyBw
cm9qZWN0LXNwZWNpZmljCi1jb25maWd1cmF0aW9uIGluIHlvdXIgcHJvamVjdCdzIHJvb3QgZGly
ZWN0b3J5LCBpdCdzIHVzdWFsbHkKLWJlc3QgdG8gcHV0IGl0IGp1c3QgaW50byB0aGUgc2FtZSBk
aXJlY3RvcnkgbGV2ZWwgYXMgeW91cgotdG9wbW9zdCBgYF9faW5pdF9fLnB5YGAuICBJbiBmYWN0
LCBgYHB5dGVzdGBgIHBlcmZvcm1zCi1hbiAidXB3YXJkcyIgc2VhcmNoIHN0YXJ0aW5nIGZyb20g
dGhlIGRpcmVjdG9yeSB0aGF0IHlvdSBzcGVjaWZ5Ci10byBiZSB0ZXN0ZWQgYW5kIHdpbGwgbG9v
a3VwIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHJpZ2h0LXRvLWxlZnQuCi1Zb3UgbWF5IGhhdmUgb3B0
aW9ucyB0aGF0IHJlc2lkZSBlLmcuIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkKLWJ1dCBub3RlIHRo
YXQgcHJvamVjdCBzcGVjaWZpYyBzZXR0aW5ncyB3aWxsIGJlIGNvbnNpZGVyZWQKLWZpcnN0LiAg
VGhlcmUgaXMgYSBmbGFnIHRoYXQgaGVscHMgeW91IGRlYnVnZ2luZyB5b3VyCi1jb25mdGVzdC5w
eSBjb25maWd1cmF0aW9uczo6Ci0KLSAgICBweXRlc3QgLS10cmFjZS1jb25maWcKLQotCi1jdXN0
b21pemluZyB0aGUgY29sbGVjdGluZyBhbmQgcnVubmluZyBwcm9jZXNzCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UbyBpbnRyb2R1Y2UgZGlmZmVy
ZW50IHRlc3QgaXRlbXMgeW91IGNhbiBjcmVhdGUKLW9uZSBvciBtb3JlIGBgY29uZnRlc3QucHlg
YCBmaWxlcyBpbiB5b3VyIHByb2plY3QuCi1XaGVuIHRoZSBjb2xsZWN0aW9uIHByb2Nlc3MgdHJh
dmVyc2VzIGRpcmVjdG9yaWVzCi1hbmQgbW9kdWxlcyB0aGUgZGVmYXVsdCBjb2xsZWN0b3JzIHdp
bGwgcHJvZHVjZQotY3VzdG9tIENvbGxlY3RvcnMgYW5kIEl0ZW1zIGlmIHRoZXkgYXJlIGZvdW5k
Ci1pbiBhIGxvY2FsIGBgY29uZnRlc3QucHlgYCBmaWxlLgotCi0KLUN1c3RvbWl6aW5nIHRoZSBj
b2xsZWN0aW9uIHByb2Nlc3MgaW4gYSBtb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSWYgeW91IGhhdmUgYSBtb2R1bGUgd2hlcmUgeW91IHdh
bnQgdG8gdGFrZSByZXNwb25zaWJpbGl0eSBmb3IKLWNvbGxlY3RpbmcgeW91ciBvd24gdGVzdCBJ
dGVtcyBhbmQgcG9zc2libHkgZXZlbiBmb3IgZXhlY3V0aW5nCi1hIHRlc3QgdGhlbiB5b3UgY2Fu
IHByb3ZpZGUgYGdlbmVyYXRpdmUgdGVzdHNgXyB0aGF0IHlpZWxkCi1jYWxsYWJsZXMgYW5kIHBv
c3NpYmx5IGFyZ3VtZW50cyBhcyBhIHR1cGxlLiAgIFRoaXMgaXMgZXNwZWNpYWxseQotdXNlZnVs
IGZvciBjYWxsaW5nIGFwcGxpY2F0aW9uIHRlc3QgbWFjaGluZXJ5IHdpdGggZGlmZmVyZW50Ci1w
YXJhbWV0ZXIgc2V0cyBidXQgY291bnRpbmcgZWFjaCBvZiB0aGUgY2FsbHMgYXMgYSBzZXBhcmF0
ZQotdGVzdHMuCi0KLS4uIF9gZ2VuZXJhdGl2ZSB0ZXN0c2A6IGZlYXR1cmVzLmh0bWwjZ2VuZXJh
dGl2ZS10ZXN0cwotCi1UaGUgb3RoZXIgZXh0ZW5zaW9uIHBvc3NpYmlsaXR5IGlzIGFib3V0Ci1z
cGVjaWZ5aW5nIGEgY3VzdG9tIHRlc3QgYGBJdGVtYGAgY2xhc3Mgd2hpY2gKLWlzIHJlc3BvbnNp
YmxlIGZvciBzZXR0aW5nIHVwIGFuZCBleGVjdXRpbmcgYW4gdW5kZXJseWluZwotdGVzdC4gIE9y
IHlvdSBjYW4gZXh0ZW5kIHRoZSBjb2xsZWN0aW9uIHByb2Nlc3MgZm9yIGEgd2hvbGUKLWRpcmVj
dG9yeSB0cmVlIGJ5IHB1dHRpbmcgSXRlbXMgaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgY29uZmlndXJh
dGlvbiBmaWxlLgotVGhlIGNvbGxlY3Rpb24gcHJvY2VzcyBkeW5hbWljYWxseSBjb25zdWx0cyB0
aGUgKmNoYWluIG9mIGNvbmZ0ZXN0LnB5KgotbW9kdWxlcyB0byBkZXRlcm1pbmUgY29sbGVjdG9y
cyBhbmQgaXRlbXMgYXQgYGBEaXJlY3RvcnlgYCwgYGBNb2R1bGVgYCwKLWBgQ2xhc3NgYCwgYGBG
dW5jdGlvbmBgIG9yIGBgR2VuZXJhdG9yYGAgbGV2ZWwgcmVzcGVjdGl2ZWx5LgotCi1DdXN0b21p
emluZyBleGVjdXRpb24gb2YgSXRlbXMgYW5kIEZ1bmN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIGBgcHl0ZXN0LkZ1bmN0aW9u
YGAgdGVzdCBpdGVtcyBjb250cm9sIGV4ZWN1dGlvbgotICBvZiBhIHRlc3QgZnVuY3Rpb24gdGhy
b3VnaCBpdHMgYGBmdW5jdGlvbi5ydW50ZXN0KClgYCBtZXRob2QuCi0gIFRoaXMgbWV0aG9kIGlz
IHJlc3BvbnNpYmxlIGZvciBwZXJmb3JtaW5nIHNldHVwIGFuZCB0ZWFyZG93bgotICAoIlRlc3Qg
Rml4dHVyZXMiKSBmb3IgYSB0ZXN0IEZ1bmN0aW9uLgotCi0tIGBgRnVuY3Rpb24uZXhlY3V0ZSh0
YXJnZXQsICphcmdzKWBgIG1ldGhvZHMgYXJlIGludm9rZWQgYnkKLSAgdGhlIGRlZmF1bHQgYGBG
dW5jdGlvbi5ydW4oKWBgIHRvIGFjdHVhbGx5IGV4ZWN1dGUgYSBweXRob24KLSAgZnVuY3Rpb24g
d2l0aCB0aGUgZ2l2ZW4gKHVzdWFsbHkgZW1wdHkgc2V0IG9mKSBhcmd1bWVudHMuCi0KLS4uIF9g
cHktZGV2IG1haWxpbmcgbGlzdGA6IGh0dHA6Ly9jb2Rlc3BlYWsubmV0L21haWxtYW4vbGlzdGlu
Zm8vcHktZGV2Ci0KLQotLi4gX2B0ZXN0IGdlbmVyYXRvcnNgOiBmdW5jYXJncy5odG1sI3Rlc3Qt
Z2VuZXJhdG9ycwotCi0uLiBfYGdlbmVyYXRpdmUgdGVzdHNgOgotCi1nZW5lcmF0aXZlIHRlc3Rz
OiB5aWVsZGluZyBwYXJhbWV0cml6ZWQgdGVzdHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotRGVwcmVjYXRlZCBzaW5jZSAxLjAgaW4gZmF2
b3VyIG9mIGB0ZXN0IGdlbmVyYXRvcnNgXy4KLQotKkdlbmVyYXRpdmUgdGVzdHMqIGFyZSB0ZXN0
IG1ldGhvZHMgdGhhdCBhcmUgKmdlbmVyYXRvciBmdW5jdGlvbnMqIHdoaWNoCi1gYHlpZWxkYGAg
Y2FsbGFibGVzIGFuZCB0aGVpciBhcmd1bWVudHMuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcnVubmlu
ZyBhCi10ZXN0IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzIGFnYWluc3QgZGlmZmVyZW50IHBhcmFt
ZXRlcnMuICBFeGFtcGxlOjoKLQotICAgIGRlZiB0ZXN0X2dlbmVyYXRpdmUoKToKLSAgICAgICAg
Zm9yIHggaW4gKDQyLDE3LDQ5KToKLSAgICAgICAgICAgIHlpZWxkIGNoZWNrLCB4Ci0KLSAgICBk
ZWYgY2hlY2soYXJnKToKLSAgICAgICAgYXNzZXJ0IGFyZyAlIDcgPT0gMCAgICMgc2Vjb25kIGdl
bmVyYXRlZCB0ZXN0cyBmYWlscyEKLQotTm90ZSB0aGF0IGBgdGVzdF9nZW5lcmF0aXZlKClgYCB3
aWxsIGNhdXNlIHRocmVlIHRlc3RzCi10byBnZXQgcnVuLCBub3RhYmx5IGBgY2hlY2soNDIpYGAs
IGBgY2hlY2soMTcpYGAgYW5kIGBgY2hlY2soNDkpYGAKLW9mIHdoaWNoIHRoZSBtaWRkbGUgb25l
IHdpbGwgb2J2aW91c2x5IGZhaWwuCi0KLVRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNo
IHRoZSBnZW5lcmF0ZWQgdGVzdHMgaXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBhbiBleHBsaWNp
dCBuYW1lIGZvciB0aGVtLCBsaWtlIGZvciBleGFtcGxlOjoKLQotICAgIGRlZiB0ZXN0X2dlbmVy
YXRpdmUoKToKLSAgICAgICAgZm9yIHggaW4gKDQyLDE3LDQ5KToKLSAgICAgICAgICAgIHlpZWxk
ICJjYXNlICVkIiAlIHgsIGNoZWNrLCB4Ci0KLQotZGlzYWJsaW5nIGEgdGVzdCBjbGFzcwotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi1JZiB5b3Ugd2FudCB0byBkaXNhYmxlIGEgY29tcGxldGUg
dGVzdCBjbGFzcyB5b3UKLWNhbiBzZXQgdGhlIGNsYXNzLWxldmVsIGF0dHJpYnV0ZSBgYGRpc2Fi
bGVkYGAuCi1Gb3IgZXhhbXBsZSwgaW4gb3JkZXIgdG8gYXZvaWQgcnVubmluZyBzb21lIHRlc3Rz
IG9uIFdpbjMyOjoKLQotICAgIGNsYXNzIFRlc3RQb3NpeE9ubHkob2JqZWN0KToKLSAgICAgICAg
ZGlzYWJsZWQgPSBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJwotCi0gICAgICAgIGRlZiB0ZXN0X3h4
eChzZWxmKToKLSAgICAgICAgICAgIC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvY29uZmlnLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9jb25maWcuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JhNWE0NmY5ODJlLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvY29uZmlnLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxOCArMCwwIEBACi08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgaHR0cC1l
cXVpdj0icmVmcmVzaCIgY29udGVudD0iIDEgOyBVUkw9Y3VzdG9taXplLmh0bWwiIC8+Ci0gICAg
PC9oZWFkPgotCi0gICAgPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci12
YXIgZ2FKc0hvc3QgPSAoKCJodHRwczoiID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/
ICJodHRwczovL3NzbC4iIDogImh0dHA6Ly93d3cuIik7Ci1kb2N1bWVudC53cml0ZSh1bmVzY2Fw
ZSgiJTNDc2NyaXB0IHNyYz0nIiArIGdhSnNIb3N0ICsgImdvb2dsZS1hbmFseXRpY3MuY29tL2dh
LmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnJTNFJTNDL3NjcmlwdCUzRSIpKTsKLTwvc2NyaXB0
PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdHJ5IHsKLXZhciBwYWdlVHJhY2tl
ciA9IF9nYXQuX2dldFRyYWNrZXIoIlVBLTc1OTcyNzQtMyIpOwotcGFnZVRyYWNrZXIuX3RyYWNr
UGFnZXZpZXcoKTsKLX0gY2F0Y2goZXJyKSB7fTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgot
ICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvZGlzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3Rlc3QvZGlzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlMzI4NTUwYTg1Y2IuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGVzdC9kaXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08aHRtbD4KLSAg
ICA8aGVhZD4KLSAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iIDEg
OyBVUkw9cGx1Z2luL3hkaXN0Lmh0bWwiIC8+Ci0gICAgPC9oZWFkPgotCi0gICAgPGJvZHk+Ci08
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci12YXIgZ2FKc0hvc3QgPSAoKCJodHRwczoi
ID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/ICJodHRwczovL3NzbC4iIDogImh0dHA6
Ly93d3cuIik7Ci1kb2N1bWVudC53cml0ZSh1bmVzY2FwZSgiJTNDc2NyaXB0IHNyYz0nIiArIGdh
SnNIb3N0ICsgImdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3Jp
cHQnJTNFJTNDL3NjcmlwdCUzRSIpKTsKLTwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgotdHJ5IHsKLXZhciBwYWdlVHJhY2tlciA9IF9nYXQuX2dldFRyYWNrZXIoIlVB
LTc1OTcyNzQtMyIpOwotcGFnZVRyYWNrZXIuX3RyYWNrUGFnZXZpZXcoKTsKLX0gY2F0Y2goZXJy
KSB7fTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3Rlc3QvZXh0ZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9l
eHRlbmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JhNWE0NmY5ODJlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvZXh0ZW5kLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAg
PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iIDEgOyBVUkw9Y3VzdG9taXplLmh0
bWwiIC8+Ci0gICAgPC9oZWFkPgotCi0gICAgPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+Ci12YXIgZ2FKc0hvc3QgPSAoKCJodHRwczoiID09IGRvY3VtZW50LmxvY2F0aW9u
LnByb3RvY29sKSA/ICJodHRwczovL3NzbC4iIDogImh0dHA6Ly93d3cuIik7Ci1kb2N1bWVudC53
cml0ZSh1bmVzY2FwZSgiJTNDc2NyaXB0IHNyYz0nIiArIGdhSnNIb3N0ICsgImdvb2dsZS1hbmFs
eXRpY3MuY29tL2dhLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnJTNFJTNDL3NjcmlwdCUzRSIp
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdHJ5IHsKLXZh
ciBwYWdlVHJhY2tlciA9IF9nYXQuX2dldFRyYWNrZXIoIlVBLTc1OTcyNzQtMyIpOwotcGFnZVRy
YWNrZXIuX3RyYWNrUGFnZXZpZXcoKTsKLX0gY2F0Y2goZXJyKSB7fTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgotICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvaW5k
ZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYTNiNWE1NGRhMDguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vdGVzdC9pbmRleC5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBA
Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXB5dGVzdCBkb2N1bWVu
dGF0aW9uIGluZGV4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
Ci1mZWF0dXJlc186IG92ZXJ2aWV3IGFuZCBkaXNjdXNzaW9uIG9mIGZlYXR1cmVzLgotCi1xdWlj
a3N0YXJ0XzogZ2V0dGluZyBzdGFydGVkIHdpdGggd3JpdGluZyBhIHNpbXBsZSB0ZXN0LgotCi1g
dGFsa3MsIHR1dG9yaWFscywgZXhhbXBsZXNgXzogdHV0b3JpYWwgZXhhbXBsZXMsIHNsaWRlcwot
Ci1mdW5jYXJnc186IHBvd2VyZnVsIHBhcmFtZXRyaXplZCB0ZXN0IGZ1bmN0aW9uIHNldHVwCi0K
LWBwbHVnaW5zYF86IGxpc3Qgb2YgYXZhaWxhYmxlIHBsdWdpbnMgd2l0aCB1c2FnZSBleGFtcGxl
cyBhbmQgZmVhdHVyZSBkZXRhaWxzLgotCi1jdXN0b21pemVfOiBjb25maWd1cmF0aW9uLCBjdXN0
b21pemF0aW9uLCBleHRlbnNpb25zCi0KLWNoYW5nZWxvZ186IGhpc3Rvcnkgb2YgY2hhbmdlcyBj
b3ZlcmluZyBsYXN0IHJlbGVhc2VzCi0KLSoqQ29udGludW91cyBJbnRlZ3JhdGlvbiBvZiBweXRl
c3QncyBvd24gdGVzdHMgYW5kIHBsdWdpbnMgd2l0aCBIdWRzb24qKjoKLQotICAgIGBodHRwOi8v
aHVkc29uLnRlc3RydW4ub3JnL3ZpZXcvcHl0ZXN0YF8KLQotLi4gX2BodHRwOi8vaHVkc29uLnRl
c3RydW4ub3JnL3ZpZXcvcHl0ZXN0YDogaHR0cDovL2h1ZHNvbi50ZXN0cnVuLm9yZy92aWV3L3B5
dGVzdC8KLQotCi0uLiBfY2hhbmdlbG9nOiAuLi9jaGFuZ2Vsb2cuaHRtbAotLi4gX2BwbHVnaW5z
YDogcGx1Z2luL2luZGV4Lmh0bWwKLS4uIF9gdGFsa3MsIHR1dG9yaWFscywgZXhhbXBsZXNgOiB0
YWxrcy5odG1sCi0uLiBfcXVpY2tzdGFydDogcXVpY2tzdGFydC5odG1sCi0uLiBfZmVhdHVyZXM6
IGZlYXR1cmVzLmh0bWwKLS4uIF9mdW5jYXJnczogZnVuY2FyZ3MuaHRtbAotLi4gX2N1c3RvbWl6
ZTogY3VzdG9taXplLmh0bWwKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVz
dC9taXNzaW9uLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L21pc3Npb24ucnN0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWMyNTJkYzBkODYuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9taXNzaW9uLnJzdAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLQotTWlzc2lvbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0KLWBgcHl0ZXN0YGAgc3RyaXZlcyB0byBtYWtlIHRlc3RpbmcgYSBmdW4gYW5kIG5vLWJv
aWxlcnBsYXRlIGVmZm9ydC4KLQotVGhlIHRvb2wgaXMgZGlzdHJpYnV0ZWQgYXMgYSBgcHl0ZXN0
YCBwYWNrYWdlLiAgSXRzIHByb2plY3QgaW5kZXBlbmRlbnQKLWBgcHl0ZXN0YGAgY29tbWFuZCBs
aW5lIHRvb2wgaGVscHMgeW91IHRvOgotCi0qIHJhcGlkbHkgY29sbGVjdCBhbmQgcnVuIHRlc3Rz
Ci0qIHJ1biB1bml0LSBvciBkb2N0ZXN0cywgZnVuY3Rpb25hbCBvciBpbnRlZ3JhdGlvbiB0ZXN0
cwotKiBkaXN0cmlidXRlIHRlc3RzIHRvIG11bHRpcGxlIGVudmlyb25tZW50cwotKiB1c2UgbG9j
YWwgb3IgZ2xvYmFsIHBsdWdpbnMgZm9yIGN1c3RvbSB0ZXN0IHR5cGVzIGFuZCBzZXR1cApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2Nvdi5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292LnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTQxYzdlZjk0NzkzLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL2Nvdi5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMzAgKzAsMCBAQAotCi1w
cm9kdWNlIGNvZGUgY292ZXJhZ2UgcmVwb3J0cyB1c2luZyB0aGUgJ2NvdmVyYWdlJyBwYWNrYWdl
LCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgZGlzdHJpYnV0ZWQgdGVzdGluZy4KLT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAg
OmxvY2FsOgotCi1UaGlzIHBsdWdpbiBwcm9kdWNlcyBjb3ZlcmFnZSByZXBvcnRzLiAgSXQgc3Vw
cG9ydHMgY2VudHJhbGlzZWQgdGVzdGluZyBhbmQgZGlzdHJpYnV0ZWQgdGVzdGluZyBpbgotYm90
aCBsb2FkIGFuZCBlYWNoIG1vZGVzLiAgSXQgYWxzbyBzdXBwb3J0cyBjb3ZlcmFnZSBvZiBzdWJw
cm9jZXNzZXMuCi0KLUFsbCBmZWF0dXJlcyBvZmZlcmVkIGJ5IHRoZSBjb3ZlcmFnZSBwYWNrYWdl
IHNob3VsZCBiZSBhdmFpbGFibGUsIGVpdGhlciB0aHJvdWdoIHB5dGVzdC1jb3Ygb3IKLXRocm91
Z2ggY292ZXJhZ2UncyBjb25maWcgZmlsZS4KLQotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0t
LQotCi1UaGUgYHB5dGVzdC1jb3ZgXyBwYWNrYWdlIG1heSBiZSBpbnN0YWxsZWQgd2l0aCBwaXAg
b3IgZWFzeV9pbnN0YWxsOjoKLQotICAgIHBpcCBpbnN0YWxsIHB5dGVzdC1jb3YKLSAgICBlYXN5
X2luc3RhbGwgcHl0ZXN0LWNvdgotCi0uLiBfYHB5dGVzdC1jb3ZgOiBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvcHl0ZXN0LWNvdi8KLQotCi1Vbmluc3RhbGxhdGlvbgotLS0tLS0tLS0tLS0t
LS0KLQotVW5pbnN0YWxsaW5nIHBhY2thZ2VzIGlzIHN1cHBvcnRlZCBieSBwaXA6OgotCi0gICAg
cGlwIHVuaW5zdGFsbCBweXRlc3QtY292Ci0KLUhvd2V2ZXIgZWFzeV9pbnN0YWxsIGRvZXMgbm90
IHByb3ZpZGUgYW4gdW5pbnN0YWxsIGZhY2lsaXR5LgotCi0uLiBJTVBPUlRBTlQ6OgotCi0gICAg
RW5zdXJlIHRoYXQgeW91IG1hbnVhbGx5IGRlbGV0ZSB0aGUgaW5pdF9jb3ZtYWluLnB0aCBmaWxl
IGluIHlvdXIKLSAgICBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeS4KLQotICAgIFRoaXMgZmlsZSBz
dGFydHMgY292ZXJhZ2UgY29sbGVjdGlvbiBvZiBzdWJwcm9jZXNzZXMgaWYgYXBwcm9wcmlhdGUg
ZHVyaW5nCi0gICAgc2l0ZSBpbml0aWFsaXphdGlvbiBhdCBweXRob24gc3RhcnR1cC4KLQotCi1V
c2FnZQotLS0tLS0KLQotQ2VudHJhbGlzZWQgVGVzdGluZwotfn5+fn5+fn5+fn5+fn5+fn5+fgot
Ci1DZW50cmFsaXNlZCB0ZXN0aW5nIHdpbGwgcmVwb3J0IG9uIHRoZSBjb21iaW5lZCBjb3ZlcmFn
ZSBvZiB0aGUgbWFpbiBwcm9jZXNzIGFuZCBhbGwgb2YgaXQncwotc3VicHJvY2Vzc2VzLgotCi1S
dW5uaW5nIGNlbnRyYWxpc2VkIHRlc3Rpbmc6OgotCi0gICAgcHl0ZXN0IC0tY292IG15cHJvaiB0
ZXN0cy8KLQotU2hvd3MgYSB0ZXJtaW5hbCByZXBvcnQ6OgotCi0gICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0gY292ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAgICAgICAgICAgU3RtdHMgICBNaXNz
ICBDb3ZlcgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg
ICBteXByb2ovX19pbml0X18gICAgICAgICAgMiAgICAgIDAgICAxMDAlCi0gICAgbXlwcm9qL215
cHJvaiAgICAgICAgICAyNTcgICAgIDEzICAgIDk0JQotICAgIG15cHJvai9mZWF0dXJlNDI4NiAg
ICAgIDk0ICAgICAgNyAgICA5MiUKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgVE9UQUwgICAgICAgICAgICAgICAgICAzNTMgICAgIDIwICAgIDk0JQot
Ci0KLURpc3RyaWJ1dGVkIFRlc3Rpbmc6IExvYWQKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K
LQotRGlzdHJpYnV0ZWQgdGVzdGluZyB3aXRoIGRpc3QgbW9kZSBzZXQgdG8gbG9hZCB3aWxsIHJl
cG9ydCBvbiB0aGUgY29tYmluZWQgY292ZXJhZ2Ugb2YgYWxsIHNsYXZlcy4KLVRoZSBzbGF2ZXMg
bWF5IGJlIHNwcmVhZCBvdXQgb3ZlciBhbnkgbnVtYmVyIG9mIGhvc3RzIGFuZCBlYWNoIHNsYXZl
IG1heSBiZSBsb2NhdGVkIGFueXdoZXJlIG9uIHRoZQotZmlsZSBzeXN0ZW0uICBFYWNoIHNsYXZl
IHdpbGwgaGF2ZSBpdCdzIHN1YnByb2Nlc3NlcyBtZWFzdXJlZC4KLQotUnVubmluZyBkaXN0cmli
dXRlZCB0ZXN0aW5nIHdpdGggZGlzdCBtb2RlIHNldCB0byBsb2FkOjoKLQotICAgIHB5dGVzdCAt
LWNvdiBteXByb2ogLW4gMiB0ZXN0cy8KLQotU2hvd3MgYSB0ZXJtaW5hbCByZXBvcnQ6OgotCi0g
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9u
IDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAgICAg
ICAgICAgU3RtdHMgICBNaXNzICBDb3ZlcgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSAgICBteXByb2ovX19pbml0X18gICAgICAgICAgMiAgICAgIDAgICAx
MDAlCi0gICAgbXlwcm9qL215cHJvaiAgICAgICAgICAyNTcgICAgIDEzICAgIDk0JQotICAgIG15
cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAgICAgNyAgICA5MiUKLSAgICAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgVE9UQUwgICAgICAgICAgICAgICAgICAz
NTMgICAgIDIwICAgIDk0JQotCi0KLUFnYWluIGJ1dCBzcHJlYWQgb3ZlciBkaWZmZXJlbnQgaG9z
dHMgYW5kIGRpZmZlcmVudCBkaXJlY3Rvcmllczo6Ci0KLSAgICBweXRlc3QgLS1jb3YgbXlwcm9q
IC0tZGlzdCBsb2FkCi0gICAgICAgICAgICAtLXR4IHNzaD1tZW1lZG91Z2hAaG9zdDEvL2NoZGly
PXRlc3RlbnYxCi0gICAgICAgICAgICAtLXR4IHNzaD1tZW1lZG91Z2hAaG9zdDIvL2NoZGlyPS90
bXAvdGVzdGVudjIvL3B5dGhvbj0vdG1wL2VudjEvYmluL3B5dGhvbgotICAgICAgICAgICAgLS1y
c3luY2RpciBteXByb2ogLS1yc3luY2RpciB0ZXN0cyAtLXJzeW5jIGV4YW1wbGVzCi0gICAgICAg
ICAgICB0ZXN0cy8KLQotU2hvd3MgYSB0ZXJtaW5hbCByZXBvcnQ6OgotCi0gICAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFs
LTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAgICAgICAgICAgU3RtdHMg
ICBNaXNzICBDb3ZlcgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLSAgICBteXByb2ovX19pbml0X18gICAgICAgICAgMiAgICAgIDAgICAxMDAlCi0gICAgbXlw
cm9qL215cHJvaiAgICAgICAgICAyNTcgICAgIDEzICAgIDk0JQotICAgIG15cHJvai9mZWF0dXJl
NDI4NiAgICAgIDk0ICAgICAgNyAgICA5MiUKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0gICAgVE9UQUwgICAgICAgICAgICAgICAgICAzNTMgICAgIDIwICAg
IDk0JQotCi0KLURpc3RyaWJ1dGVkIFRlc3Rpbmc6IEVhY2gKLX5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn4KLQotRGlzdHJpYnV0ZWQgdGVzdGluZyB3aXRoIGRpc3QgbW9kZSBzZXQgdG8gZWFjaCB3
aWxsIHJlcG9ydCBvbiB0aGUgY29tYmluZWQgY292ZXJhZ2Ugb2YgYWxsIHNsYXZlcy4KLVNpbmNl
IGVhY2ggc2xhdmUgaXMgcnVubmluZyBhbGwgdGVzdHMgdGhpcyBhbGxvd3MgZ2VuZXJhdGluZyBh
IGNvbWJpbmVkIGNvdmVyYWdlIHJlcG9ydCBmb3IgbXVsdGlwbGUKLWVudmlyb25tZW50cy4KLQot
UnVubmluZyBkaXN0cmlidXRlZCB0ZXN0aW5nIHdpdGggZGlzdCBtb2RlIHNldCB0byBlYWNoOjoK
LQotICAgIHB5dGVzdCAtLWNvdiBteXByb2ogLS1kaXN0IGVhY2gKLSAgICAgICAgICAgIC0tdHgg
cG9wZW4vL2NoZGlyPS90bXAvdGVzdGVudjMvL3B5dGhvbj0vdXNyL2xvY2FsL3B5dGhvbjI3L2Jp
bi9weXRob24KLSAgICAgICAgICAgIC0tdHggc3NoPW1lbWVkb3VnaEBob3N0Mi8vY2hkaXI9L3Rt
cC90ZXN0ZW52NC8vcHl0aG9uPS90bXAvZW52Mi9iaW4vcHl0aG9uCi0gICAgICAgICAgICAtLXJz
eW5jZGlyIG15cHJvaiAtLXJzeW5jZGlyIHRlc3RzIC0tcnN5bmMgZXhhbXBsZXMKLSAgICAgICAg
ICAgIHRlc3RzLwotCi1TaG93cyBhIHRlcm1pbmFsIHJlcG9ydDo6Ci0KLSAgICAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvdmVyYWdlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBs
YXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi41LWZpbmFsLTAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNy4wLWZpbmFsLTAKLSAgICBOYW1l
ICAgICAgICAgICAgICAgICBTdG10cyAgIE1pc3MgIENvdmVyCi0gICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15cHJvai9fX2luaXRfXyAgICAgICAgICAy
ICAgICAgMCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9qICAgICAgICAgIDI1NyAgICAgMTMgICAg
OTQlCi0gICAgbXlwcm9qL2ZlYXR1cmU0Mjg2ICAgICAgOTQgICAgICA3ICAgIDkyJQotICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBUT1RBTCAgICAgICAg
ICAgICAgICAgIDM1MyAgICAgMjAgICAgOTQlCi0KLQotUmVwb3J0aW5nCi0tLS0tLS0tLS0KLQot
SXQgaXMgcG9zc2libGUgdG8gZ2VuZXJhdGUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSByZXBvcnRz
IGZvciBhIHNpbmdsZSB0ZXN0IHJ1bi4KLQotVGhlIGF2YWlsYWJsZSByZXBvcnRzIGFyZSB0ZXJt
aW5hbCAod2l0aCBvciB3aXRob3V0IG1pc3NpbmcgbGluZSBudW1iZXJzIHNob3duKSwgSFRNTCwg
WE1MIGFuZAotYW5ub3RhdGVkIHNvdXJjZSBjb2RlLgotCi1UaGUgdGVybWluYWwgcmVwb3J0IHdp
dGhvdXQgbGluZSBudW1iZXJzIChkZWZhdWx0KTo6Ci0KLSAgICBweXRlc3QgLS1jb3YtcmVwb3J0
IHRlcm0gLS1jb3YgbXlwcm9qIHRlc3RzLwotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292
ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAgICAgICAgICAgU3RtdHMgICBNaXNzICBDb3Zlcgot
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBteXByb2ov
X19pbml0X18gICAgICAgICAgMiAgICAgIDAgICAxMDAlCi0gICAgbXlwcm9qL215cHJvaiAgICAg
ICAgICAyNTcgICAgIDEzICAgIDk0JQotICAgIG15cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAg
ICAgNyAgICA5MiUKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0gICAgVE9UQUwgICAgICAgICAgICAgICAgICAzNTMgICAgIDIwICAgIDk0JQotCi0KLVRoZSB0
ZXJtaW5hbCByZXBvcnQgd2l0aCBsaW5lIG51bWJlcnM6OgotCi0gICAgcHl0ZXN0IC0tY292LXJl
cG9ydCB0ZXJtLW1pc3NpbmcgLS1jb3YgbXlwcm9qIHRlc3RzLwotCi0gICAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAgICAgICAgICAgU3RtdHMgICBN
aXNzICBDb3ZlciAgIE1pc3NpbmcKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15cHJvai9fX2luaXRfXyAgICAgICAgICAyICAgICAg
MCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9qICAgICAgICAgIDI1NyAgICAgMTMgICAgOTQlICAg
MjQtMjYsIDk5LCAxNDksIDIzMy0yMzYsIDI5Ny0yOTgsIDM2OS0zNzAKLSAgICBteXByb2ovZmVh
dHVyZTQyODYgICAgICA5NCAgICAgIDcgICAgOTIlICAgMTgzLTE4OCwgMTk3Ci0gICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBUT1RBTCAg
ICAgICAgICAgICAgICAgIDM1MyAgICAgMjAgICAgOTQlCi0KLQotVGhlIHJlbWFpbmluZyB0aHJl
ZSByZXBvcnRzIG91dHB1dCB0byBmaWxlcyB3aXRob3V0IHNob3dpbmcgYW55dGhpbmcgb24gdGhl
IHRlcm1pbmFsICh1c2VmdWwgZm9yCi13aGVuIHRoZSBvdXRwdXQgaXMgZ29pbmcgdG8gYSBjb250
aW51b3VzIGludGVncmF0aW9uIHNlcnZlcik6OgotCi0gICAgcHl0ZXN0IC0tY292LXJlcG9ydCBo
dG1sIC0tY292LXJlcG9ydCB4bWwgLS1jb3YtcmVwb3J0IGFubm90YXRlIC0tY292IG15cHJvaiB0
ZXN0cy8KLQotCi1Db3ZlcmFnZSBEYXRhIEZpbGUKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUg
ZGF0YSBmaWxlIGlzIGVyYXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRlc3RpbmcgdG8gZW5zdXJl
IGNsZWFuIGRhdGEgZm9yIGVhY2ggdGVzdCBydW4uCi0KLVRoZSBkYXRhIGZpbGUgaXMgbGVmdCBh
dCB0aGUgZW5kIG9mIHRlc3Rpbmcgc28gdGhhdCBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugbm9ybWFs
IGNvdmVyYWdlIHRvb2xzIHRvCi1leGFtaW5lIGl0LgotCi0KLUxpbWl0YXRpb25zCi0tLS0tLS0t
LS0tLQotCi1Gb3IgZGlzdHJpYnV0ZWQgdGVzdGluZyB0aGUgc2xhdmVzIG11c3QgaGF2ZSB0aGUg
cHl0ZXN0LWNvdiBwYWNrYWdlIGluc3RhbGxlZC4gIFRoaXMgaXMgbmVlZGVkIHNpbmNlCi10aGUg
cGx1Z2luIG11c3QgYmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHNldHVwdG9vbHMgLyBkaXN0cmlidXRl
IGZvciBweXRlc3QgdG8gc3RhcnQgdGhlIHBsdWdpbiBvbiB0aGUKLXNsYXZlLgotCi1Gb3Igc3Vi
cHJvY2VzcyBtZWFzdXJlbWVudCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBtYWtlIGl0IGZy
b20gdGhlIG1haW4gcHJvY2VzcyB0byB0aGUKLXN1YnByb2Nlc3MuICBUaGUgcHl0aG9uIHVzZWQg
YnkgdGhlIHN1YnByb2Nlc3MgbXVzdCBoYXZlIHB5dGVzdC1jb3YgaW5zdGFsbGVkLiAgVGhlIHN1
YnByb2Nlc3MgbXVzdAotZG8gbm9ybWFsIHNpdGUgaW5pdGlhbGl6YXRpb24gc28gdGhhdCB0aGUg
ZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBiZSBkZXRlY3RlZCBhbmQgY292ZXJhZ2UKLXN0YXJ0
ZWQuCi0KLQotQWNrbm93bGVkZ21lbnRzCi0tLS0tLS0tLS0tLS0tLS0tCi0KLUhvbGdlciBLcmVr
ZWwgZm9yIHB5dGVzdCB3aXRoIGl0cyBkaXN0cmlidXRlZCB0ZXN0aW5nIHN1cHBvcnQuCi0KLU5l
ZCBCYXRjaGVsZGVyIGZvciBjb3ZlcmFnZSBhbmQgaXRzIGFiaWxpdHkgdG8gY29tYmluZSB0aGUg
Y292ZXJhZ2UgcmVzdWx0cyBvZiBwYXJhbGxlbCBydW5zLgotCi1XaGlsc3QgdGhpcyBwbHVnaW4g
aGFzIGJlZW4gYnVpbHQgZnJlc2ggZnJvbSB0aGUgZ3JvdW5kIHVwIHRvIHN1cHBvcnQgZGlzdHJp
YnV0ZWQgdGVzdGluZyBpdCBoYXMKLWJlZW4gaW5mbHVlbmNlZCBieSB0aGUgd29yayBkb25lIG9u
IHB5dGVzdC1jb3ZlcmFnZSAoUm9zcyBMYXdsZXksIEphbWVzIE1pbGxzLCBIb2xnZXIgS3Jla2Vs
KSBhbmQKLW5vc2UtY292ZXIgKEphc29uIFBlbGxlcmluKSB3aGljaCBhcmUgb3RoZXIgY292ZXJh
Z2UgcGx1Z2lucyBmb3IgcHl0ZXN0IGFuZCBub3NlIHJlc3BlY3RpdmVseS4KLQotTm8gZG91YnQg
b3RoZXJzIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlc2UgdG9vbHMgYXMgd2VsbC4KLQotY29tbWFu
ZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotYGAtLWNvdj1wYXRoYGAK
LSAgICBtZWFzdXJlIGNvdmVyYWdlIGZvciBmaWxlc3lzdGVtIHBhdGggKG11bHRpLWFsbG93ZWQp
Ci1gYC0tY292LXJlcG9ydD10eXBlYGAKLSAgICB0eXBlIG9mIHJlcG9ydCB0byBnZW5lcmF0ZTog
dGVybSwgdGVybS1taXNzaW5nLCBhbm5vdGF0ZSwgaHRtbCwgeG1sIChtdWx0aS1hbGxvd2VkKQot
YGAtLWNvdi1jb25maWc9cGF0aGBgCi0gICAgY29uZmlnIGZpbGUgZm9yIGNvdmVyYWdlLCBkZWZh
dWx0OiAuY292ZXJhZ2VyYwotCi0uLiBpbmNsdWRlOjogbGlua3MudHh0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292ZXJhZ2UucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3Rlc3QvcGx1Z2luL2NvdmVyYWdlLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzExMzlkMDA4YmEwLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL2NvdmVyYWdlLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAK
LQotV3JpdGUgYW5kIHJlcG9ydCBjb3ZlcmFnZSBkYXRhIHdpdGggdGhlICdjb3ZlcmFnZScgcGFj
a2FnZS4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0KLQotLi4gY29udGVudHM6OgotICA6bG9jYWw6Ci0KLU5vdGU6IE9yaWdpbmFs
IGNvZGUgYnkgUm9zcyBMYXdsZXkuIAotCi1JbnN0YWxsCi0tLS0tLS0tLS0tLS0tLQotCi1Vc2Ug
cGlwIHRvICh1bilpbnN0YWxsOjoKLQotICAgIHBpcCBpbnN0YWxsIHB5dGVzdC1jb3ZlcmFnZSAK
LSAgICBwaXAgdW5pbnN0YWxsIHB5dGVzdC1jb3ZlcmFnZSAKLQotb3IgYWx0ZXJuYXRpdmVseSB1
c2UgZWFzeV9pbnN0YWxsIHRvIGluc3RhbGw6OgotCi0gICAgZWFzeV9pbnN0YWxsIHB5dGVzdC1j
b3ZlcmFnZSAKLQotCi1Vc2FnZSAKLS0tLS0tLS0tLS0tLS0KLQotVG8gZ2V0IGZ1bGwgdGVzdCBj
b3ZlcmFnZSByZXBvcnRzIGZvciBhIHBhcnRpY3VsYXIgcGFja2FnZSB0eXBlOjoKLQotICAgIHB5
dGVzdCAtLWNvdmVyLXJlcG9ydD1yZXBvcnQKLQotY29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLQotYGAtLWNvdmVyPUNPVkVSUEFDS0FHRVNgYAotICAgIChtdWx0
aSBhbGxvd2VkKSBvbmx5IGluY2x1ZGUgaW5mbyBmcm9tIHNwZWNpZmllZCBwYWNrYWdlLgotYGAt
LWNvdmVyLXJlcG9ydD1SRVBPUlRfVFlQRWBgCi0gICAgaHRtbDogRGlyZWN0b3J5IGZvciBodG1s
IG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgcmVwb3J0OiBPdXRwdXQgYSB0ZXh0IHJlcG9y
dC4KLSAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGU6IEFubm90YXRlIHlvdXIgc291cmNlIGNv
ZGUgZm9yIHdoaWNoIGxpbmVzIHdlcmUgZXhlY3V0ZWQgYW5kIHdoaWNoIHdlcmUgbm90LgotICAg
ICAgICAgICAgICAgICAgICB4bWw6IE91dHB1dCBhbiB4bWwgcmVwb3J0IGNvbXBhdGlibGUgd2l0
aCB0aGUgY29iZXJ0dXJhIHBsdWdpbiBmb3IgaHVkc29uLgotYGAtLWNvdmVyLWRpcmVjdG9yeT1E
SVJFQ1RPUllgYAotICAgIERpcmVjdG9yeSBmb3IgdGhlIHJlcG9ydHMgKGh0bWwgLyBhbm5vdGF0
ZSByZXN1bHRzKSBkZWZhdWx0cyB0byAuL2NvdmVyYWdlCi1gYC0tY292ZXIteG1sLWZpbGU9WE1M
X0ZJTEVgYAotICAgIEZpbGUgZm9yIHRoZSB4bWwgcmVwb3J0IGRlZmF1bHRzIHRvIC4vY292ZXJh
Z2UueG1sCi1gYC0tY292ZXItc2hvdy1taXNzaW5nYGAKLSAgICBTaG93IG1pc3NpbmcgZmlsZXMK
LWBgLS1jb3Zlci1pZ25vcmUtZXJyb3JzPUlHTk9SRV9FUlJPUlNgYAotICAgIElnbm9yZSBlcnJv
cnMgb2YgZmluZGluZyBzb3VyY2UgZmlsZXMgZm9yIGNvZGUuCi0KLS4uIGluY2x1ZGU6OiBsaW5r
cy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9kamFuZ28u
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2RqYW5nby5yc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MTQ5N2IzODVlZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9kamFuZ28ucnN0CisrKyAvZGV2L251bGwKQEAg
LTEsNyArMCwwIEBACi1weXRlc3RfZGphbmdvIHBsdWdpbiAoRVhURVJOQUwpCi09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotcHl0ZXN0X2RqYW5nbyBpcyBhIHBs
dWdpbiBmb3IgYGBweXRlc3RgYCB0aGF0IHByb3ZpZGVzIGEgc2V0IG9mIHVzZWZ1bCB0b29scyBm
b3IgdGVzdGluZyBEamFuZ28gYXBwbGljYXRpb25zLCBjaGVja291dCBCZW4gRmlyc2htYW4ncyBg
cHl0ZXN0X2RqYW5nbyBnaXRodWIgcGFnZWBfLgotCi0uLiBfYHB5dGVzdF9kamFuZ28gZ2l0aHVi
IHBhZ2VgOiBodHRwOi8vZ2l0aHViLmNvbS9iZmlyc2gvcHl0ZXN0X2RqYW5nby90cmVlL21hc3Rl
cgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vZmlnbGVhZi5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vZmlnbGVhZi5yc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMTYwM2FkZTlmYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9maWdsZWFmLnJzdAorKysgL2Rldi9udWxsCkBA
IC0xLDQ0ICswLDAgQEAKLQotcmVwb3J0IHRlc3QgY292ZXJhZ2UgdXNpbmcgdGhlICdmaWdsZWFm
JyBwYWNrYWdlLgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2FsOgotCi1JbnN0YWxsCi0tLS0tLS0tLS0t
LS0tLS0KLQotVG8gaW5zdGFsbCB0aGUgcGx1Z2luIGlzc3VlOjoKLQotICAgIGVhc3lfaW5zdGFs
bCBweXRlc3QtZmlnbGVhZiAgIyBvcgotICAgIHBpcCBpbnN0YWxsIHB5dGVzdC1maWdsZWFmICAg
Ci0KLWFuZCBpZiB5b3UgYXJlIHVzaW5nIHBpcCB5b3UgY2FuIGFsc28gdW5pbnN0YWxsOjoKLQot
ICAgIHBpcCB1bmluc3RhbGwgcHl0ZXN0LWZpZ2xlYWYKLQotCi1Vc2FnZQotLS0tLS0tLS0tLS0t
LS0tCi0KLUFmdGVyIGluc3RhbGxhdGlvbiB5b3UgY2FuIHNpbXBseSB0eXBlOjoKLQotICAgIHB5
dGVzdCAtLWZpZ2xlYWYgWy4uLl0KLQotdG8gZW5hYmxlIGZpZ2xlYWYgY292ZXJhZ2UgaW4geW91
ciB0ZXN0IHJ1bi4gIEEgZGVmYXVsdCAiLmZpZ2xlYWYiIGRhdGEgZmlsZQotYW5kICJodG1sIiBk
aXJlY3Rvcnkgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIG9wdGlv
bnMKLXRvIGNvbnRyb2wgd2hlcmUgZGF0YSBhbmQgaHRtbCBmaWxlcyBhcmUgY3JlYXRlZC4KLQot
Y29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotYGAtLWZpZ2xl
YWZgYAotICAgIHRyYWNlIHB5dGhvbiBjb3ZlcmFnZSB3aXRoIGZpZ2xlYWYgYW5kIHdyaXRlIEhU
TUwgZm9yIGZpbGVzIGJlbG93IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyCi1gYC0tZmlnLWRhdGE9
ZGlyYGAKLSAgICBzZXQgdHJhY2luZyBmaWxlLCBkZWZhdWx0OiAiLmZpZ2xlYWYiLgotYGAtLWZp
Zy1odG1sPWRpcmBgCi0gICAgc2V0IGh0bWwgcmVwb3J0aW5nIGRpciwgZGVmYXVsdCAiaHRtbCIu
Ci0KLS4uIGluY2x1ZGU6OiBsaW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi90ZXN0L3BsdWdpbi9oZWxwY29uZmlnLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3Bs
dWdpbi9oZWxwY29uZmlnLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI2Yjc1
YzQ1NTJlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2lu
L2hlbHBjb25maWcucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotCi1wcm92aWRl
IHZlcnNpb24gaW5mbywgY29uZnRlc3QvZW52aXJvbm1lbnQgY29uZmlnIG5hbWVzLgotPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0u
LiBjb250ZW50czo6Ci0gIDpsb2NhbDoKLQotCi0KLWNvbW1hbmQgbGluZSBvcHRpb25zCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0KLWBgLS12ZXJzaW9uYGAKLSAgICBkaXNwbGF5IHB5IGxpYiB2
ZXJzaW9uIGFuZCBpbXBvcnQgaW5mb3JtYXRpb24uCi1gYC1wIG5hbWVgYAotICAgIGVhcmx5LWxv
YWQgZ2l2ZW4gcGx1Z2luIChtdWx0aS1hbGxvd2VkKS4KLWBgLS10cmFjZS1jb25maWdgYAotICAg
IHRyYWNlIGNvbnNpZGVyYXRpb25zIG9mIGNvbmZ0ZXN0LnB5IGZpbGVzLgotYGAtLWRlYnVnYGAK
LSAgICBnZW5lcmF0ZSBhbmQgc2hvdyBpbnRlcm5hbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCi1g
YC0taGVscC1jb25maWdgYAotICAgIHNob3cgYXZhaWxhYmxlIGNvbmZ0ZXN0LnB5IGFuZCBFTlYt
dmFyaWFibGUgbmFtZXMuCi0KLVN0YXJ0IGltcHJvdmluZyB0aGlzIHBsdWdpbiBpbiAzMCBzZWNv
bmRzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLTEuIERv
d25sb2FkIGBweXRlc3RfaGVscGNvbmZpZy5weWBfIHBsdWdpbiBzb3VyY2UgY29kZQotMi4gcHV0
IGl0IHNvbWV3aGVyZSBhcyBgYHB5dGVzdF9oZWxwY29uZmlnLnB5YGAgaW50byB5b3VyIGltcG9y
dCBwYXRoCi0zLiBhIHN1YnNlcXVlbnQgYGBweXRlc3RgYCBydW4gd2lsbCB1c2UgeW91ciBsb2Nh
bCB2ZXJzaW9uCi0KLUNoZWNrb3V0IGN1c3RvbWl6ZV8sIG90aGVyIHBsdWdpbnNfIG9yIGBnZXQg
aW4gY29udGFjdGBfLgotCi0uLiBpbmNsdWRlOjogbGlua3MudHh0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL2luZGV4LnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUz
YTRkY2U2ODFjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1
Z2luL2luZGV4LnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLQotYWR2YW5jZWQg
cHl0aG9uIHRlc3RpbmcKLT09PT09PT09PT09PT09PT09PT09PT09Ci0KLXNraXBwaW5nXyBhZHZh
bmNlZCBza2lwcGluZyBmb3IgcHl0aG9uIHRlc3QgZnVuY3Rpb25zLCBjbGFzc2VzIG9yIG1vZHVs
ZXMuCi0KLW1hcmtfIGdlbmVyaWMgbWVjaGFuaXNtIGZvciBtYXJraW5nIHB5dGhvbiBmdW5jdGlv
bnMuCi0KLXBkYl8gaW50ZXJhY3RpdmUgZGVidWdnaW5nIHdpdGggdGhlIFB5dGhvbiBEZWJ1Z2dl
ci4KLQotZmlnbGVhZl8gKGV4dGVybmFsKSByZXBvcnQgdGVzdCBjb3ZlcmFnZSB1c2luZyB0aGUg
J2ZpZ2xlYWYnIHBhY2thZ2UuCi0KLW1vbmtleXBhdGNoXyBzYWZlbHkgcGF0Y2ggb2JqZWN0IGF0
dHJpYnV0ZXMsIGRpY3RzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0KLWNvdmVyYWdlXyAo
ZXh0ZXJuYWwpIFdyaXRlIGFuZCByZXBvcnQgY292ZXJhZ2UgZGF0YSB3aXRoIHRoZSAnY292ZXJh
Z2UnIHBhY2thZ2UuCi0KLWNvdl8gKGV4dGVybmFsKSBwcm9kdWNlIGNvZGUgY292ZXJhZ2UgcmVw
b3J0cyB1c2luZyB0aGUgJ2NvdmVyYWdlJyBwYWNrYWdlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3Ig
ZGlzdHJpYnV0ZWQgdGVzdGluZy4KLQotY2FwdHVyZV8gY29uZmlndXJhYmxlIHBlci10ZXN0IHN0
ZG91dC9zdGRlcnIgY2FwdHVyaW5nIG1lY2hhbmlzbXMuCi0KLWNhcHR1cmVsb2dfIChleHRlcm5h
bCkgY2FwdHVyZSBvdXRwdXQgb2YgbG9nZ2luZyBtb2R1bGUuCi0KLXJlY3dhcm5fIGhlbHBlcnMg
Zm9yIGFzc2VydGluZyBkZXByZWNhdGlvbiBhbmQgb3RoZXIgd2FybmluZ3MuCi0KLXRtcGRpcl8g
cHJvdmlkZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdG8gdGVzdCBmdW5jdGlvbnMuCi0KLQotZGlz
dHJpYnV0ZWQgdGVzdGluZywgQ0kgYW5kIGRlcGxveW1lbnQKLT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLXhkaXN0XyAoZXh0ZXJuYWwpIGxvb3Agb24gZmFpbGluZyB0
ZXN0cywgZGlzdHJpYnV0ZSB0ZXN0IHJ1bnMgdG8gQ1BVcyBhbmQgaG9zdHMuCi0KLXBhc3RlYmlu
XyBzdWJtaXQgZmFpbHVyZSBvciB0ZXN0IHNlc3Npb24gaW5mb3JtYXRpb24gdG8gYSBwYXN0ZWJp
biBzZXJ2aWNlLgotCi1qdW5pdHhtbF8gbG9nZ2luZyBvZiB0ZXN0IHJlc3VsdHMgaW4gSlVuaXQt
WE1MIGZvcm1hdCwgZm9yIHVzZSB3aXRoIEh1ZHNvbgotCi1yZXN1bHRsb2dfIG5vbi14bWwgbWFj
aGluZS1yZWFkYWJsZSBsb2dnaW5nIG9mIHRlc3QgcmVzdWx0cy4KLQotZ2Vuc2NyaXB0XyBnZW5l
cmF0ZSBzdGFuZGFsb25lIHRlc3Qgc2NyaXB0IHRvIGJlIGRpc3RyaWJ1dGVkIGFsb25nIHdpdGgg
YW4gYXBwbGljYXRpb24uCi0KLQotdGVzdGluZyBkb21haW5zIGFuZCBjb252ZW50aW9ucyBjb2Rl
Y2hlY2tlcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0K
LW9lanNraXRfIChleHRlcm5hbCkgcnVuIGphdmFzY3JpcHQgdGVzdHMgaW4gcmVhbCBsaWZlIGJy
b3dzZXJzCi0KLWRqYW5nb18gKGV4dGVybmFsKSBmb3IgdGVzdGluZyBkamFuZ28gYXBwbGljYXRp
b25zCi0KLXVuaXR0ZXN0XyBhdXRvbWF0aWNhbGx5IGRpc2NvdmVyIGFuZCBydW4gdHJhZGl0aW9u
YWwgInVuaXR0ZXN0LnB5IiBzdHlsZSB0ZXN0cy4KLQotbm9zZV8gbm9zZS1jb21wYXRpYmlsaXR5
IHBsdWdpbjogYWxsb3cgdG8gcnVuIG5vc2UgdGVzdCBzdWl0ZXMgbmF0aXZlbHkuCi0KLWRvY3Rl
c3RfIGNvbGxlY3QgYW5kIGV4ZWN1dGUgZG9jdGVzdHMgZnJvbSBtb2R1bGVzIGFuZCB0ZXN0IGZp
bGVzLgotCi1yZXN0ZG9jXyBwZXJmb3JtIFJlU1Qgc3ludGF4LCBsb2NhbCBhbmQgcmVtb3RlIHJl
ZmVyZW5jZSB0ZXN0cyBvbiAucnN0Ly50eHQgZmlsZXMuCi0KLQotaW50ZXJuYWwsIGRlYnVnZ2lu
ZywgaGVscCBmdW5jdGlvbmFsaXR5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLQotaGVscGNvbmZpZ18gcHJvdmlkZSB2ZXJzaW9uIGluZm8sIGNvbmZ0ZXN0L2Vudmly
b25tZW50IGNvbmZpZyBuYW1lcy4KLQotdGVybWluYWxfIEltcGxlbWVudHMgdGVybWluYWwgcmVw
b3J0aW5nIG9mIHRoZSBmdWxsIHRlc3RpbmcgcHJvY2Vzcy4KLQotaG9va2xvZ18gbG9nIGludm9j
YXRpb25zIG9mIGV4dGVuc2lvbiBob29rcyB0byBhIGZpbGUuCi0KLQotLi4gaW5jbHVkZTo6IGxp
bmtzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2xpbmtz
LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9saW5rcy5yc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZWMyYjQ4NDhhNi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9saW5rcy5yc3QKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0uLiBfYGhlbHBjb25maWdgOiBoZWxwY29uZmlnLmh0bWwKLS4uIF9gcHl0
ZXN0X3JlY3dhcm4ucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcv
MS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfcmVjd2Fybi5weQotLi4gX2B1bml0dGVzdGA6IHVuaXR0
ZXN0Lmh0bWwKLS4uIF9gcHl0ZXN0X21vbmtleXBhdGNoLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5v
cmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X21vbmtleXBhdGNo
LnB5Ci0uLiBfYHBhc3RlYmluYDogcGFzdGViaW4uaHRtbAotLi4gX2Bza2lwcGluZ2A6IHNraXBw
aW5nLmh0bWwKLS4uIF9gcGx1Z2luc2A6IGluZGV4Lmh0bWwKLS4uIF9gbWFya2A6IG1hcmsuaHRt
bAotLi4gX2B0bXBkaXJgOiB0bXBkaXIuaHRtbAotLi4gX2BweXRlc3RfZG9jdGVzdC5weWA6IGh0
dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5
dGVzdF9kb2N0ZXN0LnB5Ci0uLiBfYGNhcHR1cmVgOiBjYXB0dXJlLmh0bWwKLS4uIF9gcHl0ZXN0
X25vc2UucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQv
cHkvX3BsdWdpbi9weXRlc3Rfbm9zZS5weQotLi4gX2BweXRlc3RfcmVzdGRvYy5weWA6IGh0dHA6
Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVz
dF9yZXN0ZG9jLnB5Ci0uLiBfYHJlc3Rkb2NgOiByZXN0ZG9jLmh0bWwKLS4uIF9geGRpc3RgOiB4
ZGlzdC5odG1sCi0uLiBfYHB5dGVzdF9wYXN0ZWJpbi5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9wYXN0ZWJpbi5weQot
Li4gX2BweXRlc3RfdG1wZGlyLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1
bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3RtcGRpci5weQotLi4gX2B0ZXJtaW5hbGA6
IHRlcm1pbmFsLmh0bWwKLS4uIF9gcHl0ZXN0X2hvb2tsb2cucHlgOiBodHRwOi8vYml0YnVja2V0
Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfaG9va2xvZy5w
eQotLi4gX2BjYXB0dXJlbG9nYDogY2FwdHVyZWxvZy5odG1sCi0uLiBfYGp1bml0eG1sYDoganVu
aXR4bWwuaHRtbAotLi4gX2BweXRlc3Rfc2tpcHBpbmcucHlgOiBodHRwOi8vYml0YnVja2V0Lm9y
Zy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3Rfc2tpcHBpbmcucHkK
LS4uIF9gY2hlY2tvdXQgdGhlIHB5dGVzdCBkZXZlbG9wbWVudCB2ZXJzaW9uYDogLi4vLi4vaW5z
dGFsbC5odG1sI2NoZWNrb3V0Ci0uLiBfYHB5dGVzdF9oZWxwY29uZmlnLnB5YDogaHR0cDovL2Jp
dGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X2hl
bHBjb25maWcucHkKLS4uIF9gb2Vqc2tpdGA6IG9lanNraXQuaHRtbAotLi4gX2Bkb2N0ZXN0YDog
ZG9jdGVzdC5odG1sCi0uLiBfYHB5dGVzdF9tYXJrLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcv
aHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X21hcmsucHkKLS4uIF9g
Z2V0IGluIGNvbnRhY3RgOiAuLi8uLi9jb250YWN0Lmh0bWwKLS4uIF9gcHl0ZXN0X2NhcHR1cmUu
cHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3Bs
dWdpbi9weXRlc3RfY2FwdHVyZS5weQotLi4gX2BmaWdsZWFmYDogZmlnbGVhZi5odG1sCi0uLiBf
YGN1c3RvbWl6ZWA6IC4uL2N1c3RvbWl6ZS5odG1sCi0uLiBfYGhvb2tsb2dgOiBob29rbG9nLmh0
bWwKLS4uIF9gcHl0ZXN0X3Rlcm1pbmFsLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIv
cHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3Rlcm1pbmFsLnB5Ci0uLiBfYHJl
Y3dhcm5gOiByZWN3YXJuLmh0bWwKLS4uIF9gcHl0ZXN0X3BkYi5weWA6IGh0dHA6Ly9iaXRidWNr
ZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9wZGIucHkK
LS4uIF9gbW9ua2V5cGF0Y2hgOiBtb25rZXlwYXRjaC5odG1sCi0uLiBfYGNvdmVyYWdlYDogY292
ZXJhZ2UuaHRtbAotLi4gX2ByZXN1bHRsb2dgOiByZXN1bHRsb2cuaHRtbAotLi4gX2Bjb3ZgOiBj
b3YuaHRtbAotLi4gX2BweXRlc3RfanVuaXR4bWwucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9o
cGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfanVuaXR4bWwucHkKLS4u
IF9gZGphbmdvYDogZGphbmdvLmh0bWwKLS4uIF9gcHl0ZXN0X3VuaXR0ZXN0LnB5YDogaHR0cDov
L2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0
X3VuaXR0ZXN0LnB5Ci0uLiBfYG5vc2VgOiBub3NlLmh0bWwKLS4uIF9gcHl0ZXN0X3Jlc3VsdGxv
Zy5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9f
cGx1Z2luL3B5dGVzdF9yZXN1bHRsb2cucHkKLS4uIF9gcGRiYDogcGRiLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9ub3NlLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi90ZXN0L3BsdWdpbi9ub3NlLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWVlYWU1ZmY2OTdmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rl
c3QvcGx1Z2luL25vc2UucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotCi1ub3Nl
LWNvbXBhdGliaWxpdHkgcGx1Z2luOiBhbGxvdyB0byBydW4gbm9zZSB0ZXN0IHN1aXRlcyBuYXRp
dmVseS4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2FsOgotCi1UaGlzIGlz
IGFuIGV4cGVyaW1lbnRhbCBwbHVnaW4gZm9yIGFsbG93aW5nIHRvIHJ1biB0ZXN0cyB3cml0dGVu
Ci1pbiAnbm9zZXRlc3RzJyBzdHlsZSB3aXRoIGBgcHl0ZXN0YGAuCi0KLVVzYWdlCi0tLS0tLS0t
LS0tLS0tCi0KLXR5cGU6OgotCi0gICAgcHl0ZXN0ICAjIGluc3RlYWQgb2YgJ25vc2V0ZXN0cycK
LQotYW5kIHlvdSBzaG91bGQgYmUgYWJsZSB0byBydW4gbm9zZSBzdHlsZSB0ZXN0cyBhbmQgYXQg
dGhlIHNhbWUKLXRpbWUgY2FuIG1ha2UgZnVsbCB1c2Ugb2YgcHl0ZXN0J3MgY2FwYWJpbGl0aWVz
LgotCi1TdXBwb3J0ZWQgbm9zZSBJZGlvbXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotKiBz
ZXR1cCBhbmQgdGVhcmRvd24gYXQgbW9kdWxlL2NsYXNzL21ldGhvZCBsZXZlbAotKiBTa2lwVGVz
dCBleGNlcHRpb25zIGFuZCBtYXJrZXJzCi0qIHNldHVwL3RlYXJkb3duIGRlY29yYXRvcnMKLSog
eWllbGQtYmFzZWQgdGVzdHMgYW5kIHRoZWlyIHNldHVwCi0qIGdlbmVyYWwgdXNhZ2Ugb2Ygbm9z
ZSB1dGlsaXRpZXMKLQotVW5zdXBwb3J0ZWQgaWRpb21zIC8gaXNzdWVzCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gbm9zZS1zdHlsZSBkb2N0ZXN0cyBhcmUgbm90IGNv
bGxlY3RlZCBhbmQgZXhlY3V0ZWQgY29ycmVjdGx5LAotICBhbHNvIGZpeHR1cmVzIGRvbid0IHdv
cmsuCi0KLS0gbm8gbm9zZS1jb25maWd1cmF0aW9uIGlzIHJlY29nbml6ZWQKLQotSWYgeW91IGZp
bmQgb3RoZXIgaXNzdWVzIG9yIGhhdmUgc3VnZ2VzdGlvbnMgcGxlYXNlIHJ1bjo6Ci0KLSAgICBw
eXRlc3QgLS1wYXN0ZWJpbj1hbGwKLQotYW5kIHNlbmQgdGhlIHJlc3VsdGluZyBVUkwgdG8gYSBg
YHB5dGVzdGBgIGNvbnRhY3QgY2hhbm5lbCwKLWF0IGJlc3QgdG8gdGhlIG1haWxpbmcgbGlzdC4K
LQotU3RhcnQgaW1wcm92aW5nIHRoaXMgcGx1Z2luIGluIDMwIHNlY29uZHMKLT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotMS4gRG93bmxvYWQgYHB5dGVzdF9u
b3NlLnB5YF8gcGx1Z2luIHNvdXJjZSBjb2RlCi0yLiBwdXQgaXQgc29tZXdoZXJlIGFzIGBgcHl0
ZXN0X25vc2UucHlgYCBpbnRvIHlvdXIgaW1wb3J0IHBhdGgKLTMuIGEgc3Vic2VxdWVudCBgYHB5
dGVzdGBgIHJ1biB3aWxsIHVzZSB5b3VyIGxvY2FsIHZlcnNpb24KLQotQ2hlY2tvdXQgY3VzdG9t
aXplXywgb3RoZXIgcGx1Z2luc18gb3IgYGdldCBpbiBjb250YWN0YF8uCi0KLS4uIGluY2x1ZGU6
OiBsaW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9v
ZWpza2l0LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9vZWpza2l0LnJzdApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk5NWFhMTdjNzJkLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL29lanNraXQucnN0CisrKyAvZGV2
L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcHl0ZXN0X29lanNraXQgcGx1Z2luIChFWFRFUk5BTCkK
LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgYG9lanNr
aXRgXyBvZmZlcnMgYSBgYHB5dGVzdGBgIHBsdWdpbiBmb3IgcnVubmluZyBKYXZhc2NyaXB0IHRl
c3RzIGluIGxpdmUgYnJvd3NlcnMuICAgUnVubmluZyBpbnNpZGUgdGhlIGJyb3dzZXJzIGNvbWVz
IHdpdGggc29tZSBzcGVlZCBjb3N0LCBvbiB0aGUgb3RoZXIgaGFuZCBpdCBtZWFucyBmb3IgZXhh
bXBsZSB0aGUgY29kZSBpcyB0ZXN0ZWQgYWdhaW5zdCB0aGUgcmVhbC13b3JkIERPTSBpbXBsZW1l
bnRhdGlvbnMuCi1UaGUgYXBwcm9hY2ggZW5hYmxlcyB0byB3cml0ZSBpbnRlZ3JhdGlvbiB0ZXN0
cyBzdWNoIHRoYXQgdGhlIEphdmFTY3JpcHQgY29kZSBpcyB0ZXN0ZWQgYWdhaW5zdCBzZXJ2ZXIt
c2lkZSBQeXRob24gY29kZSBtb2NrZWQgYXMgbmVjZXNzYXJ5LiBBbnkgc2VydmVyLXNpZGUgZnJh
bWV3b3JrIHRoYXQgY2FuIGFscmVhZHkgYmUgZXhwb3NlZCB0aHJvdWdoIFdTR0kgKG9yIGZvciB3
aGljaCBhIHN1YnNldCBvZiBXU0dJIGNhbiBiZSB3cml0dGVuIHRvIGFjY29tbW9kYXRlIHRoZSBq
c2tpdCBvd24gbmVlZHMpIGNhbiBwbGF5IGFsb25nLgotCi1Gb3IgbW9yZSBpbmZvIGFuZCBkb3du
bG9hZCBwbGVhc2UgdmlzaXQgdGhlIGBvZWpza2l0IFB5UElgXyBwYWdlLgotCi0uLiBfYG9lanNr
aXRgOgotLi4gX2BvZWpza2l0IFB5UElgOiBodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvb2Vq
c2tpdAotCi0uLiBzb3VyY2UgbGluayAnaHR0cDovL2JpdGJ1Y2tldC5vcmcvcGVkcm9uaXMvanMt
aW5mcmFzdHJ1Y3R1cmUvc3JjL3RpcC9weXRlc3RfanN0ZXN0cy5weScsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vdGVybWluYWwucnN0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3Rlc3QvcGx1Z2luL3Rlcm1pbmFsLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTA3ZDRmNzIxODNhLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3Rlc3QvcGx1Z2luL3Rlcm1pbmFsLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAK
LQotSW1wbGVtZW50cyB0ZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9j
ZXNzLgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2FsOgotCi1UaGlzIGlzIGEgZ29vZCBz
b3VyY2UgZm9yIGxvb2tpbmcgYXQgdGhlIHZhcmlvdXMgcmVwb3J0aW5nIGhvb2tzLgotCi1jb21t
YW5kIGxpbmUgb3B0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1gYC12LCAtLXZlcmJv
c2VgYAotICAgIGluY3JlYXNlIHZlcmJvc2l0eS4KLWBgLXIgY2hhcnNgYAotICAgIHNob3cgZXh0
cmEgdGVzdCBzdW1tYXJ5IGluZm8gYXMgc3BlY2lmaWVkIGJ5IGNoYXJzIChmKWFpbGVkLCAocylz
a2lwcGVkLCAoeClmYWlsZWQsIChYKXBhc3NlZC4KLWBgLWwsIC0tc2hvd2xvY2Fsc2BgCi0gICAg
c2hvdyBsb2NhbHMgaW4gdHJhY2ViYWNrcyAoZGlzYWJsZWQgYnkgZGVmYXVsdCkuCi1gYC0tdGI9
c3R5bGVgYAotICAgIHRyYWNlYmFjayBwcmludCBtb2RlIChsb25nL3Nob3J0L2xpbmUvbm8pLgot
YGAtLWZ1bGwtdHJhY2VgYAotICAgIGRvbid0IGN1dCBhbnkgdHJhY2ViYWNrcyAoZGVmYXVsdCBp
cyB0byBjdXQpLgotYGAtLWZpeHR1cmVzYGAKLSAgICBzaG93IGF2YWlsYWJsZSBmdW5jdGlvbiBh
cmd1bWVudHMsIHNvcnRlZCBieSBwbHVnaW4KLQotU3RhcnQgaW1wcm92aW5nIHRoaXMgcGx1Z2lu
IGluIDMwIHNlY29uZHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0KLQotMS4gRG93bmxvYWQgYHB5dGVzdF90ZXJtaW5hbC5weWBfIHBsdWdpbiBzb3VyY2UgY29k
ZQotMi4gcHV0IGl0IHNvbWV3aGVyZSBhcyBgYHB5dGVzdF90ZXJtaW5hbC5weWBgIGludG8geW91
ciBpbXBvcnQgcGF0aAotMy4gYSBzdWJzZXF1ZW50IGBgcHl0ZXN0YGAgcnVuIHdpbGwgdXNlIHlv
dXIgbG9jYWwgdmVyc2lvbgotCi1DaGVja291dCBjdXN0b21pemVfLCBvdGhlciBwbHVnaW5zXyBv
ciBgZ2V0IGluIGNvbnRhY3RgXy4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLnR4dApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmOTA2NzE3ZDRkM2YuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vdGVzdC9wbHVnaW4vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
NyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9jb3ZlcmFnZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vZGphbmdvLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90
ZXN0L3BsdWdpbi9maWdsZWFmLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9o
ZWxwY29uZmlnLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9pbmRleC5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vbGlua3MucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3Rlc3QvcGx1Z2luL25vc2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1
Z2luL29lanNraXQucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3Rlcm1pbmFs
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi94ZGlzdC5yc3QKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi94ZGlzdC5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vdGVzdC9wbHVnaW4veGRpc3QucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1MDZkMjQwYWVlMTMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGVzdC9wbHVnaW4veGRpc3QucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLQot
bG9vcCBvbiBmYWlsaW5nIHRlc3RzLCBkaXN0cmlidXRlIHRlc3QgcnVucyB0byBDUFVzIGFuZCBo
b3N0cy4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0KLQotLi4gY29udGVudHM6OgotICA6bG9jYWw6Ci0KLVRoZSBgcHl0ZXN0
LXhkaXN0YF8gcGx1Z2luIGV4dGVuZHMgYGBweXRlc3RgYCB3aXRoIHNvbWUgdW5pcXVlCi10ZXN0
IGV4ZWN1dGlvbiBtb2RlczoKLQotKiBMb29wb25mYWlsOiBydW4geW91ciB0ZXN0cyByZXBlYXRl
ZGx5IGluIGEgc3VicHJvY2Vzcy4gIEFmdGVyIGVhY2ggcnVuCi0gIGBgcHl0ZXN0YGAgd2FpdHMg
dW50aWwgYSBmaWxlIGluIHlvdXIgcHJvamVjdCBjaGFuZ2VzIGFuZCB0aGVuIHJlLXJ1bnMgdGhl
Ci0gIHByZXZpb3VzbHkgZmFpbGluZyB0ZXN0cy4gIFRoaXMgaXMgcmVwZWF0ZWQgdW50aWwgYWxs
IHRlc3RzIHBhc3MgYWZ0ZXIgd2hpY2gKLSAgYWdhaW4gYSBmdWxsIHJ1biBpcyBwZXJmb3JtZWQu
Ci0KLSogTG9hZC1iYWxhbmNpbmc6IGlmIHlvdSBoYXZlIG11bHRpcGxlIENQVXMgb3IgaG9zdHMg
eW91IGNhbiB1c2UKLSAgdGhvc2UgZm9yIGEgY29tYmluZWQgdGVzdCBydW4uICBUaGlzIGFsbG93
cyB0byBzcGVlZCB1cAotICBkZXZlbG9wbWVudCBvciB0byB1c2Ugc3BlY2lhbCByZXNvdXJjZXMg
b2YgcmVtb3RlIG1hY2hpbmVzLgotCi0qIE11bHRpLVBsYXRmb3JtIGNvdmVyYWdlOiB5b3UgY2Fu
IHNwZWNpZnkgZGlmZmVyZW50IFB5dGhvbiBpbnRlcnByZXRlcnMKLSAgb3IgZGlmZmVyZW50IHBs
YXRmb3JtcyBhbmQgcnVuIHRlc3RzIGluIHBhcmFsbGVsIG9uIGFsbCBvZiB0aGVtLgotCi1CZWZv
cmUgcnVubmluZyB0ZXN0cyByZW1vdGVseSwgYGBweXRlc3RgYCBlZmZpY2llbnRseSBzeW5jaHJv
bml6ZXMgeW91cgotcHJvZ3JhbSBzb3VyY2UgY29kZSB0byB0aGUgcmVtb3RlIHBsYWNlLiAgQWxs
IHRlc3QgcmVzdWx0cwotYXJlIHJlcG9ydGVkIGJhY2sgYW5kIGRpc3BsYXllZCB0byB5b3VyIGxv
Y2FsIHRlc3Qgc2Vzc2lvbi4KLVlvdSBtYXkgc3BlY2lmeSBkaWZmZXJlbnQgUHl0aG9uIHZlcnNp
b25zIGFuZCBpbnRlcnByZXRlcnMuCi0KLS4uIF9gcHl0ZXN0LXhkaXN0YDogaHR0cDovL3B5cGku
cHl0aG9uLm9yZy9weXBpL3B5dGVzdC14ZGlzdAotCi1Vc2FnZSBleGFtcGxlcwotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLVNwZWVkIHVwIHRlc3QgcnVucyBieSBzZW5kaW5nIHRlc3RzIHRvIG11
bHRpcGxlIENQVXMKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCi0KLVRvIHNlbmQgdGVzdHMgdG8gbXVsdGlwbGUgQ1BVcywgdHlwZTo6
Ci0KLSAgICBweXRlc3QgLW4gTlVNCi0KLUVzcGVjaWFsbHkgZm9yIGxvbmdlciBydW5uaW5nIHRl
c3RzIG9yIHRlc3RzIHJlcXVpcmluZwotYSBsb3Qgb2YgSU8gdGhpcyBjYW4gbGVhZCB0byBjb25z
aWRlcmFibGUgc3BlZWQgdXBzLgotCi0KLVJ1bm5pbmcgdGVzdHMgaW4gYSBQeXRob24gc3VicHJv
Y2VzcwotKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKLQotVG8gaW5zdGFudGlhdGUgYSBweXRob24yLjQgc3ViIHByb2Nlc3MgYW5kIHNl
bmQgdGVzdHMgdG8gaXQsIHlvdSBtYXkgdHlwZTo6Ci0KLSAgICBweXRlc3QgLWQgLS10eCBwb3Bl
bi8vcHl0aG9uPXB5dGhvbjIuNAotCi1UaGlzIHdpbGwgc3RhcnQgYSBzdWJwcm9jZXNzIHdoaWNo
IGlzIHJ1biB3aXRoIHRoZSAicHl0aG9uMi40IgotUHl0aG9uIGludGVycHJldGVyLCBmb3VuZCBp
biB5b3VyIHN5c3RlbSBiaW5hcnkgbG9va3VwIHBhdGguCi0KLUlmIHlvdSBwcmVmaXggdGhlIC0t
dHggb3B0aW9uIHZhbHVlIGxpa2UgdGhpczo6Ci0KLSAgICAtLXR4IDMqcG9wZW4vL3B5dGhvbj1w
eXRob24yLjQKLQotdGhlbiB0aHJlZSBzdWJwcm9jZXNzZXMgd291bGQgYmUgY3JlYXRlZCBhbmQg
dGVzdHMKLXdpbGwgYmUgbG9hZC1iYWxhbmNlZCBhY3Jvc3MgdGhlc2UgdGhyZWUgcHJvY2Vzc2Vz
LgotCi0KLVNlbmRpbmcgdGVzdHMgdG8gcmVtb3RlIFNTSCBhY2NvdW50cwotKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotU3VwcG9z
ZSB5b3UgaGF2ZSBhIHBhY2thZ2UgYGBteXBrZ2BgIHdoaWNoIGNvbnRhaW5zIHNvbWUKLXRlc3Rz
IHRoYXQgeW91IGNhbiBzdWNjZXNzZnVsbHkgcnVuIGxvY2FsbHkuIEFuZCB5b3UKLWhhdmUgYSBz
c2gtcmVhY2hhYmxlIG1hY2hpbmUgYGBteWhvc3RgYC4gIFRoZW4KLXlvdSBjYW4gYWQtaG9jIGRp
c3RyaWJ1dGUgeW91ciB0ZXN0cyBieSB0eXBpbmc6OgotCi0gICAgcHl0ZXN0IC1kIC0tdHggc3No
PW15aG9zdHBvcGVuIC0tcnN5bmNkaXIgbXlwa2cgbXlwa2cKLQotVGhpcyB3aWxsIHN5bmNocm9u
aXplIHlvdXIgYGBteXBrZ2BgIHBhY2thZ2UgZGlyZWN0b3J5Ci10byBhIHJlbW90ZSBzc2ggYWNj
b3VudCBhbmQgdGhlbiBsb2NhbGx5IGNvbGxlY3QgdGVzdHMKLWFuZCBzZW5kIHRoZW0gdG8gcmVt
b3RlIHBsYWNlcyBmb3IgZXhlY3V0aW9uLgotCi1Zb3UgY2FuIHNwZWNpZnkgbXVsdGlwbGUgYGAt
LXJzeW5jZGlyYGAgZGlyZWN0b3JpZXMKLXRvIGJlIHNlbnQgdG8gdGhlIHJlbW90ZSBzaWRlLgot
Ci0qKk5PVEU6KiogRm9yIGBgcHl0ZXN0YGAgdG8gY29sbGVjdCBhbmQgc2VuZCB0ZXN0cyBjb3Jy
ZWN0bHkKLXlvdSBub3Qgb25seSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgY29kZSBhbmQgdGVzdHMK
LWRpcmVjdG9yaWVzIGFyZSByc3luY2VkLCBidXQgdGhhdCBhbnkgdGVzdCAoc3ViKSBkaXJlY3Rv
cnkKLWFsc28gaGFzIGFuIGBgX19pbml0X18ucHlgYCBmaWxlIGJlY2F1c2UgaW50ZXJuYWxseQot
YGBweXRlc3RgYCByZWZlcmVuY2VzIHRlc3RzIHVzaW5nIHRoZWlyIGZ1bGx5IHF1YWxpZmllZCBw
eXRob24KLW1vZHVsZSBwYXRoLiAgKipZb3Ugd2lsbCBvdGhlcndpc2UgZ2V0IHN0cmFuZ2UgZXJy
b3JzKioKLWR1cmluZyBzZXR1cCBvZiB0aGUgcmVtb3RlIHNpZGUuCi0KLVNlbmRpbmcgdGVzdHMg
dG8gcmVtb3RlIFNvY2tldCBTZXJ2ZXJzCi0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1Eb3dubG9hZCB0aGUgc2luZ2xlLW1vZHVs
ZSBgc29ja2V0c2VydmVyLnB5YF8gUHl0aG9uIHByb2dyYW0KLWFuZCBydW4gaXQgbGlrZSB0aGlz
OjoKLQotICAgIHB5dGhvbiBzb2NrZXRzZXJ2ZXIucHkKLQotSXQgd2lsbCB0ZWxsIHlvdSB0aGF0
IGl0IHN0YXJ0cyBsaXN0ZW5pbmcgb24gdGhlIGRlZmF1bHQKLXBvcnQuICBZb3UgY2FuIG5vdyBv
biB5b3VyIGhvbWUgbWFjaGluZSBzcGVjaWZ5IHRoaXMKLW5ldyBzb2NrZXQgaG9zdCB3aXRoIHNv
bWV0aGluZyBsaWtlIHRoaXM6OgotCi0gICAgcHl0ZXN0IC1kIC0tdHggc29ja2V0PTE5Mi4xNjgu
MS4xMDI6ODg4OCAtLXJzeW5jZGlyIG15cGtnIG15cGtnCi0KLQotLi4gX2BhdG9uY2VgOgotCi1S
dW5uaW5nIHRlc3RzIG9uIG1hbnkgcGxhdGZvcm1zIGF0IG9uY2UKLSsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLVRoZSBiYXNpYyBj
b21tYW5kIHRvIHJ1biB0ZXN0cyBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMgaXM6OgotCi0gICAgcHl0
ZXN0IC0tZGlzdD1lYWNoIC0tdHg9c3BlYzEgLS10eD1zcGVjMgotCi1JZiB5b3Ugc3BlY2lmeSBh
IHdpbmRvd3MgaG9zdCwgYW4gT1NYIGhvc3QgYW5kIGEgTGludXgKLWVudmlyb25tZW50IHRoaXMg
Y29tbWFuZCB3aWxsIHNlbmQgZWFjaCB0ZXN0cyB0byBhbGwKLXBsYXRmb3JtcyAtIGFuZCByZXBv
cnQgYmFjayBmYWlsdXJlcyBmcm9tIGFsbCBwbGF0Zm9ybXMKLWF0IG9uY2UuICAgVGhlIHNwZWNp
ZmljYXRpb25zIHN0cmluZ3MgdXNlIHRoZSBgeHNwZWMgc3ludGF4YF8uCi0KLS4uIF9geHNwZWMg
c3ludGF4YDogaHR0cDovL2NvZGVzcGVhay5uZXQvZXhlY25ldC90cnVuay9iYXNpY3MuaHRtbCN4
c3BlYwotCi0uLiBfYHNvY2tldHNlcnZlci5weWA6IGh0dHA6Ly9jb2Rlc3BlYWsubmV0L3N2bi9w
eS9kaXN0L3B5L2V4ZWNuZXQvc2NyaXB0L3NvY2tldHNlcnZlci5weQotCi0uLiBfYGV4ZWNuZXRg
OiBodHRwOi8vY29kZXNwZWFrLm5ldC9leGVjbmV0Ci0KLVNwZWNpZnlpbmcgdGVzdCBleGVjIGVu
dmlyb25tZW50cyBpbiBhIGNvbmZ0ZXN0LnB5Ci0rKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1JbnN0ZWFkIG9mIHNwZWNpZnlpbmcg
Y29tbWFuZCBsaW5lIG9wdGlvbnMsIHlvdSBjYW4KLXB1dCBvcHRpb25zIHZhbHVlcyBpbiBhIGBg
Y29uZnRlc3QucHlgYCBmaWxlIGxpa2UgdGhpczo6Ci0KLSAgICBvcHRpb25fdHggPSBbJ3NzaD1t
eWhvc3QvL3B5dGhvbj1weXRob24yLjcnLCAncG9wZW4vL3B5dGhvbj1weXRob24yLjcnXQotICAg
IG9wdGlvbl9kaXN0ID0gVHJ1ZQotCi1BbnkgY29tbWFuZGxpbmUgYGAtLXR4YGAgc3BlY2lmaWNh
dGlvbnMgIHdpbGwgYWRkIHRvIHRoZSBsaXN0IG9mCi1hdmFpbGFibGUgZXhlY3V0aW9uIGVudmly
b25tZW50cy4KLQotU3BlY2lmeWluZyAicnN5bmMiIGRpcnMgaW4gYSBjb25mdGVzdC5weQotKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
LQotSW4geW91ciBgYG15cGtnL2NvbmZ0ZXN0LnB5YGAgeW91IG1heSBzcGVjaWZ5IGRpcmVjdG9y
aWVzIHRvIHN5bmNocm9uaXNlCi1vciB0byBleGNsdWRlOjoKLQotICAgIHJzeW5jZGlycyA9IFsn
LicsICcuLi9wbHVnaW5zJ10KLSAgICByc3luY2lnbm9yZSA9IFsnX2NhY2hlJ10KLQotVGhlc2Ug
ZGlyZWN0b3J5IHNwZWNpZmljYXRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5Ci13
aGVyZSB0aGUgYGBjb25mdGVzdC5weWBgIGlzIGZvdW5kLgotCi1jb21tYW5kIGxpbmUgb3B0aW9u
cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1gYC1mLCAtLWxvb3BvbmZhaWxgYAotICAgIHJ1
biB0ZXN0cyBpbiBzdWJwcm9jZXNzLCB3YWl0IGZvciBtb2RpZmllZCBmaWxlcyBhbmQgcmUtcnVu
IGZhaWxpbmcgdGVzdCBzZXQgdW50aWwgYWxsIHBhc3MuCi1gYC1uIG51bXByb2Nlc3Nlc2BgCi0g
ICAgc2hvcnRjdXQgZm9yICctLWRpc3Q9bG9hZCAtLXR4PU5VTSpwb3BlbicKLWBgLS1ib3hlZGBg
Ci0gICAgYm94IGVhY2ggdGVzdCBydW4gaW4gYSBzZXBhcmF0ZSBwcm9jZXNzICh1bml4KQotYGAt
LWRpc3Q9ZGlzdG1vZGVgYAotICAgIHNldCBtb2RlIGZvciBkaXN0cmlidXRpbmcgdGVzdHMgdG8g
ZXhlYyBlbnZpcm9ubWVudHMuCi0KLSAgICBlYWNoOiBzZW5kIGVhY2ggdGVzdCB0byBlYWNoIGF2
YWlsYWJsZSBlbnZpcm9ubWVudC4KLQotICAgIGxvYWQ6IHNlbmQgZWFjaCB0ZXN0IHRvIG9uZSBh
dmFpbGFibGUgZW52aXJvbm1lbnQgc28gaXQgaXMgcnVuIG9ubHkgb25jZS4KLQotICAgIChkZWZh
dWx0KSBubzogcnVuIHRlc3RzIGlucHJvY2VzcywgZG9uJ3QgZGlzdHJpYnV0ZS4KLWBgLS10eD14
c3BlY2BgCi0gICAgYWRkIGEgdGVzdCBleGVjdXRpb24gZW52aXJvbm1lbnQuIHNvbWUgZXhhbXBs
ZXM6IC0tdHggcG9wZW4vL3B5dGhvbj1weXRob24yLjcgLS10eCBzb2NrZXQ9MTkyLjE2OC4xLjEw
Mjo4ODg4IC0tdHggc3NoPXVzZXJAY29kZXNwZWFrLm5ldC8vY2hkaXI9dGVzdGNhY2hlCi1gYC1k
YGAKLSAgICBsb2FkLWJhbGFuY2UgdGVzdHMuICBzaG9ydGN1dCBmb3IgJy0tZGlzdD1sb2FkJwot
YGAtLXJzeW5jZGlyPWRpcjFgYAotICAgIGFkZCBkaXJlY3RvcnkgZm9yIHJzeW5jaW5nIHRvIHJl
bW90ZSB0eCBub2Rlcy4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3Rlc3QvdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
dGVzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDAwZjcxOGE2NzcuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC90ZXN0Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1l
dGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iIDEgOyBVUkw9aW5kZXguaHRtbCIgLz4K
LSAgICA8L2hlYWQ+Ci0KLSAgICA8Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KLXZhciBnYUpzSG9zdCA9ICgoImh0dHBzOiIgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9j
b2wpID8gImh0dHBzOi8vc3NsLiIgOiAiaHR0cDovL3d3dy4iKTsKLWRvY3VtZW50LndyaXRlKHVu
ZXNjYXBlKCIlM0NzY3JpcHQgc3JjPSciICsgZ2FKc0hvc3QgKyAiZ29vZ2xlLWFuYWx5dGljcy5j
b20vZ2EuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCclM0UlM0Mvc2NyaXB0JTNFIikpOwotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci10cnkgewotdmFyIHBhZ2VU
cmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcigiVUEtNzU5NzI3NC0zIik7Ci1wYWdlVHJhY2tlci5f
dHJhY2tQYWdldmlldygpOwotfSBjYXRjaChlcnIpIHt9PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+Ci0gICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4YWI5M2Y1ZjdjZmEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIz
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2F0dGljLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2NvbmZpZy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rl
c3QvZGlzdC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvZXh0ZW5kLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9t
aXNzaW9uLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3Rlc3QuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RpZGVsaWZ0LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90
aWRlbGlmdC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44Y2U1
NWU5N2IzODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGlkZWxpZnQu
cnN0CkBAIC0wLDAgKzEsNDUgQEAKK3B5dGVzdCBmb3IgZW50ZXJwcmlzZQorPT09PT09PT09PT09
PT09PT09PT09CisKK2BUaWRlbGlmdGBfIGlzIHdvcmtpbmcgd2l0aCB0aGUgbWFpbnRhaW5lcnMg
b2YgcHl0ZXN0IGFuZCB0aG91c2FuZHMgb2Ygb3RoZXIKK29wZW4gc291cmNlIHByb2plY3RzIHRv
IGRlbGl2ZXIgY29tbWVyY2lhbCBzdXBwb3J0IGFuZCBtYWludGVuYW5jZSBmb3IgdGhlIG9wZW4g
c291cmNlIGRlcGVuZGVuY2llcyB5b3UgdXNlCit0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4g
U2F2ZSB0aW1lLCByZWR1Y2UgcmlzaywgYW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBh
eWluZyB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlCitleGFjdCBkZXBlbmRlbmNpZXMgeW91IHVzZS4K
KworYEdldCBtb3JlIGRldGFpbHMgPGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9w
a2cvcHlwaS1weXRlc3Q/dXRtX3NvdXJjZT1weXBpLXB5dGVzdCZ1dG1fbWVkaXVtPXJlZmVycmFs
JnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlPmBfCisKK1RoZSBUaWRlbGlmdCBTdWJzY3JpcHRpb24g
aXMgYSBtYW5hZ2VkIG9wZW4gc291cmNlIHN1YnNjcmlwdGlvbiBmb3IgYXBwbGljYXRpb24gZGVw
ZW5kZW5jaWVzIGNvdmVyaW5nIG1pbGxpb25zIG9mIG9wZW4gc291cmNlIHByb2plY3RzIGFjcm9z
cyBKYXZhU2NyaXB0LCBQeXRob24sIEphdmEsIFBIUCwgUnVieSwgLk5FVCwgYW5kIG1vcmUuCisK
K1lvdXIgc3Vic2NyaXB0aW9uIGluY2x1ZGVzOgorCisqICoqU2VjdXJpdHkgdXBkYXRlcyoqCisK
KyAgLSBUaWRlbGlmdCdzIHNlY3VyaXR5IHJlc3BvbnNlIHRlYW0gY29vcmRpbmF0ZXMgcGF0Y2hl
cyBmb3IgbmV3IGJyZWFraW5nIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBhbmQgYWxlcnRzIGlt
bWVkaWF0ZWx5IHRocm91Z2ggYSBwcml2YXRlIGNoYW5uZWwsIHNvIHlvdXIgc29mdHdhcmUgc3Vw
cGx5IGNoYWluIGlzIGFsd2F5cyBzZWN1cmUuCisKKyogKipMaWNlbnNpbmcgdmVyaWZpY2F0aW9u
IGFuZCBpbmRlbW5pZmljYXRpb24qKgorCisgIC0gVGlkZWxpZnQgdmVyaWZpZXMgbGljZW5zZSBp
bmZvcm1hdGlvbiB0byBlbmFibGUgZWFzeSBwb2xpY3kgZW5mb3JjZW1lbnQgYW5kIGFkZHMgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IGluZGVtbmlmaWNhdGlvbiB0byBjb3ZlciBjcmVhdG9ycyBhbmQg
dXNlcnMgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZy4gWW91IGFsd2F5cyBoYXZlIGEgMTAw
JSB1cC10by1kYXRlIGJpbGwgb2YgbWF0ZXJpYWxzIGZvciB5b3VyIGRlcGVuZGVuY2llcyB0byBz
aGFyZSB3aXRoIHlvdXIgbGVnYWwgdGVhbSwgY3VzdG9tZXJzLCBvciBwYXJ0bmVycy4KKworKiAq
Kk1haW50ZW5hbmNlIGFuZCBjb2RlIGltcHJvdmVtZW50KioKKworICAtIFRpZGVsaWZ0IGVuc3Vy
ZXMgdGhlIHNvZnR3YXJlIHlvdSByZWx5IG9uIGtlZXBzIHdvcmtpbmcgYXMgbG9uZyBhcyB5b3Ug
bmVlZCBpdCB0byB3b3JrLiBZb3VyIG1hbmFnZWQgZGVwZW5kZW5jaWVzIGFyZSBhY3RpdmVseSBt
YWludGFpbmVkIGFuZCB3ZSByZWNydWl0IGFkZGl0aW9uYWwgbWFpbnRhaW5lcnMgd2hlcmUgcmVx
dWlyZWQuCisKKyogKipQYWNrYWdlIHNlbGVjdGlvbiBhbmQgdmVyc2lvbiBndWlkYW5jZSoqCisK
KyAgLSBUaWRlbGlmdCBoZWxwcyB5b3UgY2hvb3NlIHRoZSBiZXN0IG9wZW4gc291cmNlIHBhY2th
Z2VzIGZyb20gdGhlIHN0YXJ04oCUYW5kIHRoZW4gZ3VpZGUgeW91IHRocm91Z2ggdXBkYXRlcyB0
byBzdGF5IG9uIHRoZSBiZXN0IHJlbGVhc2VzIGFzIG5ldyBpc3N1ZXMgYXJpc2UuCisKKyogKipS
b2FkbWFwIGlucHV0KioKKworICAtIFRha2UgYSBzZWF0IGF0IHRoZSB0YWJsZSB3aXRoIHRoZSBj
cmVhdG9ycyBiZWhpbmQgdGhlIHNvZnR3YXJlIHlvdSB1c2UuIFRpZGVsaWZ0J3MgcGFydGljaXBh
dGluZyBtYWludGFpbmVycyBlYXJuIG1vcmUgaW5jb21lIGFzIHRoZWlyIHNvZnR3YXJlIGlzIHVz
ZWQgYnkgbW9yZSBzdWJzY3JpYmVycywgc28gdGhleSdyZSBpbnRlcmVzdGVkIGluIGtub3dpbmcg
d2hhdCB5b3UgbmVlZC4KKworKiAqKlRvb2xpbmcgYW5kIGNsb3VkIGludGVncmF0aW9uKioKKwor
ICAtIFRpZGVsaWZ0IHdvcmtzIHdpdGggR2l0SHViLCBHaXRMYWIsIEJpdEJ1Y2tldCwgYW5kIGV2
ZXJ5IGNsb3VkIHBsYXRmb3JtIChhbmQgb3RoZXIgZGVwbG95bWVudCB0YXJnZXRzLCB0b28pLgor
CitUaGUgZW5kIHJlc3VsdD8gQWxsIG9mIHRoZSBjYXBhYmlsaXRpZXMgeW91IGV4cGVjdCBmcm9t
IGNvbW1lcmNpYWwtZ3JhZGUgc29mdHdhcmUsIGZvciB0aGUgZnVsbCBicmVhZHRoIG9mIG9wZW4K
K3NvdXJjZSB5b3UgdXNlLiBUaGF0IG1lYW5zIGxlc3MgdGltZSBncmFwcGxpbmcgd2l0aCBlc290
ZXJpYyBvcGVuIHNvdXJjZSB0cml2aWEsIGFuZCBtb3JlIHRpbWUgYnVpbGRpbmcgeW91ciBvd24K
K2FwcGxpY2F0aW9uc+KAlGFuZCB5b3VyIGJ1c2luZXNzLgorCitgUmVxdWVzdCBhIGRlbW8gPGh0
dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9yZXF1ZXN0LWEtZGVtbz91dG1fc291cmNl
PXB5cGktcHl0ZXN0JnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWVudGVycHJpc2U+
YF8KKworLi4gX1RpZGVsaWZ0OiBodHRwczovL3RpZGVsaWZ0LmNvbQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3RtcGRpci5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdG1wZGlyLnJz
dAppbmRleCA0MjFiNGM4OThjNWEuLjVmODgyYjE0MDBmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3RtcGRpci5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RtcGRpci5yc3QK
QEAgLTUsNiArNSw4NSBAQAogVGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGFuZCBmaWxlcwogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKK1RoZSBgYHRtcF9w
YXRoYGAgZml4dHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCisKK1lvdSBjYW4g
dXNlIHRoZSBgYHRtcF9wYXRoYGAgZml4dHVyZSB3aGljaCB3aWxsCitwcm92aWRlIGEgdGVtcG9y
YXJ5IGRpcmVjdG9yeSB1bmlxdWUgdG8gdGhlIHRlc3QgaW52b2NhdGlvbiwKK2NyZWF0ZWQgaW4g
dGhlIGBiYXNlIHRlbXBvcmFyeSBkaXJlY3RvcnlgXy4KKworYGB0bXBfcGF0aGBgIGlzIGEgYGBw
YXRobGliL3BhdGhsaWIyLlBhdGhgYCBvYmplY3QuIEhlcmUgaXMgYW4gZXhhbXBsZSB0ZXN0IHVz
YWdlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRlbnQgb2YgdGVzdF90
bXBfcGF0aC5weQorICAgIGltcG9ydCBvcworCisgICAgQ09OVEVOVCA9ICJjb250ZW50IgorCisK
KyAgICBkZWYgdGVzdF9jcmVhdGVfZmlsZSh0bXBfcGF0aCk6CisgICAgICAgIGQgPSB0bXBfcGF0
aCAvICJzdWIiCisgICAgICAgIGQubWtkaXIoKQorICAgICAgICBwID0gZCAvICJoZWxsby50eHQi
CisgICAgICAgIHAud3JpdGVfdGV4dChDT05URU5UKQorICAgICAgICBhc3NlcnQgcC5yZWFkX3Rl
eHQoKSA9PSBDT05URU5UCisgICAgICAgIGFzc2VydCBsZW4obGlzdCh0bXBfcGF0aC5pdGVyZGly
KCkpKSA9PSAxCisgICAgICAgIGFzc2VydCAwCisKK1J1bm5pbmcgdGhpcyB3b3VsZCByZXN1bHQg
aW4gYSBwYXNzZWQgdGVzdCBleGNlcHQgZm9yIHRoZSBsYXN0CitgYGFzc2VydCAwYGAgbGluZSB3
aGljaCB3ZSB1c2UgdG8gbG9vayBhdCB2YWx1ZXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QK
KworICAgICQgcHl0ZXN0IHRlc3RfdG1wX3BhdGgucHkKKyAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEu
eC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9j
YWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIKKyAgICBjb2xsZWN0ZWQgMSBpdGVt
CisKKyAgICB0ZXN0X3RtcF9wYXRoLnB5IEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbMTAwJV0KKworICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg
ICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2NyZWF0ZV9maWxlIF9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCisKKyAgICB0bXBfcGF0aCA9IFBvc2l4UGF0aCgnUFlURVNU
X1RNUERJUi90ZXN0X2NyZWF0ZV9maWxlMCcpCisKKyAgICAgICAgZGVmIHRlc3RfY3JlYXRlX2Zp
bGUodG1wX3BhdGgpOgorICAgICAgICAgICAgZCA9IHRtcF9wYXRoIC8gInN1YiIKKyAgICAgICAg
ICAgIGQubWtkaXIoKQorICAgICAgICAgICAgcCA9IGQgLyAiaGVsbG8udHh0IgorICAgICAgICAg
ICAgcC53cml0ZV90ZXh0KENPTlRFTlQpCisgICAgICAgICAgICBhc3NlcnQgcC5yZWFkX3RleHQo
KSA9PSBDT05URU5UCisgICAgICAgICAgICBhc3NlcnQgbGVuKGxpc3QodG1wX3BhdGguaXRlcmRp
cigpKSkgPT0gMQorICAgID4gICAgICAgYXNzZXJ0IDAKKyAgICBFICAgICAgIGFzc2VydCAwCisK
KyAgICB0ZXN0X3RtcF9wYXRoLnB5OjEzOiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09
PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF90bXBfcGF0aC5weTo6dGVzdF9jcmVhdGVfZmlsZSAt
IGFzc2VydCAwCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAxIGZhaWxlZCBpbiAw
LjEycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBfYHRtcF9wYXRoX2ZhY3Rv
cnkgZXhhbXBsZWA6CisKK1RoZSBgYHRtcF9wYXRoX2ZhY3RvcnlgYCBmaXh0dXJlCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKworCitUaGUgYGB0bXBfcGF0aF9mYWN0b3J5
YGAgaXMgYSBzZXNzaW9uLXNjb3BlZCBmaXh0dXJlIHdoaWNoIGNhbiBiZSB1c2VkCit0byBjcmVh
dGUgYXJiaXRyYXJ5IHRlbXBvcmFyeSBkaXJlY3RvcmllcyBmcm9tIGFueSBvdGhlciBmaXh0dXJl
IG9yIHRlc3QuCisKK0l0IGlzIGludGVuZGVkIHRvIHJlcGxhY2UgYGB0bXBkaXJfZmFjdG9yeWBg
LCBhbmQgcmV0dXJucyA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAgaW5zdGFuY2VzLgorCitTZWUgOnJl
ZjpgdG1wX3BhdGhfZmFjdG9yeSBBUEkgPHRtcF9wYXRoX2ZhY3RvcnkgZmFjdG9yeSBhcGk+YCBm
b3IgZGV0YWlscy4KKworCiBUaGUgJ3RtcGRpcicgZml4dHVyZQogLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIApAQCAtMTMsMTAgKzkyLDE0IEBAIHByb3ZpZGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHVu
aXF1ZSB0byB0aGUgdGVzdCBpbnZvY2F0aW9uLAogY3JlYXRlZCBpbiB0aGUgYGJhc2UgdGVtcG9y
YXJ5IGRpcmVjdG9yeWBfLgogCiBgYHRtcGRpcmBgIGlzIGEgYHB5LnBhdGgubG9jYWxgXyBvYmpl
Y3Qgd2hpY2ggb2ZmZXJzIGBgb3MucGF0aGBgIG1ldGhvZHMKLWFuZCBtb3JlLiAgSGVyZSBpcyBh
biBleGFtcGxlIHRlc3QgdXNhZ2U6OgorYW5kIG1vcmUuICBIZXJlIGlzIGFuIGV4YW1wbGUgdGVz
dCB1c2FnZToKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgIyBjb250ZW50IG9mIHRl
c3RfdG1wZGlyLnB5CiAgICAgaW1wb3J0IG9zCisKKwogICAgIGRlZiB0ZXN0X2NyZWF0ZV9maWxl
KHRtcGRpcik6CiAgICAgICAgIHAgPSB0bXBkaXIubWtkaXIoInN1YiIpLmpvaW4oImhlbGxvLnR4
dCIpCiAgICAgICAgIHAud3JpdGUoImNvbnRlbnQiKQpAQCAtMjUsMTIgKzEwOCwxNSBAQCBhbmQg
bW9yZS4gIEhlcmUgaXMgYW4gZXhhbXBsZSB0ZXN0IHVzYWdlOjoKICAgICAgICAgYXNzZXJ0IDAK
IAogUnVubmluZyB0aGlzIHdvdWxkIHJlc3VsdCBpbiBhIHBhc3NlZCB0ZXN0IGV4Y2VwdCBmb3Ig
dGhlIGxhc3QKLWBgYXNzZXJ0IDBgYCBsaW5lIHdoaWNoIHdlIHVzZSB0byBsb29rIGF0IHZhbHVl
czo6CitgYGFzc2VydCAwYGAgbGluZSB3aGljaCB3ZSB1c2UgdG8gbG9vayBhdCB2YWx1ZXM6CisK
Ky4uIGNvZGUtYmxvY2s6OiBweXRlc3QKIAogICAgICQgcHl0ZXN0IHRlc3RfdG1wZGlyLnB5CiAg
ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngu
eSwgcHl0ZXN0LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJF
R0VORE9DX1RNUERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54
LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAk
UFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJ
UgogICAgIGNvbGxlY3RlZCAxIGl0ZW0KIAogICAgIHRlc3RfdG1wZGlyLnB5IEYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtNDgs
MTUgKzEzNCwxNyBAQCBSdW5uaW5nIHRoaXMgd291bGQgcmVzdWx0IGluIGEgcGFzc2VkIHRlc3Qg
ZXhjZXB0IGZvciB0aGUgbGFzdAogICAgID4gICAgICAgYXNzZXJ0IDAKICAgICBFICAgICAgIGFz
c2VydCAwCiAKLSAgICB0ZXN0X3RtcGRpci5weTo3OiBBc3NlcnRpb25FcnJvcgotICAgID09PT09
PT09PT09PT09PT09PT09PT09PT0gMSBmYWlsZWQgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09
PT09PT09PT09PT09PT0KKyAgICB0ZXN0X3RtcGRpci5weTo5OiBBc3NlcnRpb25FcnJvcgorICAg
ID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF90bXBkaXIucHk6OnRlc3RfY3Jl
YXRlX2ZpbGUgLSBhc3NlcnQgMAorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gMSBm
YWlsZWQgaW4gMC4xMnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gX2B0bXBk
aXIgZmFjdG9yeSBleGFtcGxlYDoKIAogVGhlICd0bXBkaXJfZmFjdG9yeScgZml4dHVyZQogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjgKKwogCiBU
aGUgYGB0bXBkaXJfZmFjdG9yeWBgIGlzIGEgc2Vzc2lvbi1zY29wZWQgZml4dHVyZSB3aGljaCBj
YW4gYmUgdXNlZAogdG8gY3JlYXRlIGFyYml0cmFyeSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgZnJv
bSBhbnkgb3RoZXIgZml4dHVyZSBvciB0ZXN0LgpAQCAtOTgsMTIgKzE4NiwxOSBAQCB0aGUgc3lz
dGVtIHRlbXBvcmFyeSBkaXJlY3RvcnkuICBUaGUgYmFzZSBuYW1lIHdpbGwgYmUgYGBweXRlc3Qt
TlVNYGAgd2hlcmUKIGBgTlVNYGAgd2lsbCBiZSBpbmNyZW1lbnRlZCB3aXRoIGVhY2ggdGVzdCBy
dW4uICBNb3Jlb3ZlciwgZW50cmllcyBvbGRlcgogdGhhbiAzIHRlbXBvcmFyeSBkaXJlY3Rvcmll
cyB3aWxsIGJlIHJlbW92ZWQuCiAKLVlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBzZXR0aW5nIGxpa2UgdGhpczo6CitZb3UgY2FuIG92ZXJyaWRlIHRoZSBk
ZWZhdWx0IHRlbXBvcmFyeSBkaXJlY3Rvcnkgc2V0dGluZyBsaWtlIHRoaXM6CisKKy4uIGNvZGUt
YmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLS1iYXNldGVtcD1teWRpcgogCi1XaGVuIGRpc3Ry
aWJ1dGluZyB0ZXN0cyBvbiB0aGUgbG9jYWwgbWFjaGluZSwgYGBweXRlc3RgYCB0YWtlcyBjYXJl
IHRvCi1jb25maWd1cmUgYSBiYXNldGVtcCBkaXJlY3RvcnkgZm9yIHRoZSBzdWIgcHJvY2Vzc2Vz
IHN1Y2ggdGhhdCBhbGwgdGVtcG9yYXJ5CisuLiB3YXJuaW5nOjoKKworICAgIFRoZSBjb250ZW50
cyBvZiBgYG15ZGlyYGAgd2lsbCBiZSBjb21wbGV0ZWx5IHJlbW92ZWQsIHNvIG1ha2Ugc3VyZSB0
byB1c2UgYSBkaXJlY3RvcnkKKyAgICBmb3IgdGhhdCBwdXJwb3NlIG9ubHkuCisKK1doZW4gZGlz
dHJpYnV0aW5nIHRlc3RzIG9uIHRoZSBsb2NhbCBtYWNoaW5lIHVzaW5nIGBgcHl0ZXN0LXhkaXN0
YGAsIGNhcmUgaXMgdGFrZW4gdG8KK2F1dG9tYXRpY2FsbHkgY29uZmlndXJlIGEgYmFzZXRlbXAg
ZGlyZWN0b3J5IGZvciB0aGUgc3ViIHByb2Nlc3NlcyBzdWNoIHRoYXQgYWxsIHRlbXBvcmFyeQog
ZGF0YSBsYW5kcyBiZWxvdyBhIHNpbmdsZSBwZXItdGVzdCBydW4gYmFzZXRlbXAgZGlyZWN0b3J5
LgogCiAuLiBfYHB5LnBhdGgubG9jYWxgOiBodHRwczovL3B5LnJlYWR0aGVkb2NzLmlvL2VuL2xh
dGVzdC9wYXRoLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi91bml0dGVzdC5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdW5pdHRlc3QucnN0CmluZGV4IDUzMTkyYjM0NjlkMy4u
MTMwZTc3MDViOGQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdW5pdHRlc3QucnN0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi91bml0dGVzdC5yc3QKQEAgLTEwLDcgKzEwLDkgQEAg
SXQncyBtZWFudCBmb3IgbGV2ZXJhZ2luZyBleGlzdGluZyBgYHVuaXR0ZXN0YGAtYmFzZWQgdGVz
dCBzdWl0ZXMKIHRvIHVzZSBweXRlc3QgYXMgYSB0ZXN0IHJ1bm5lciBhbmQgYWxzbyBhbGxvdyB0
byBpbmNyZW1lbnRhbGx5IGFkYXB0CiB0aGUgdGVzdCBzdWl0ZSB0byB0YWtlIGZ1bGwgYWR2YW50
YWdlIG9mIHB5dGVzdCdzIGZlYXR1cmVzLgogCi1UbyBydW4gYW4gZXhpc3RpbmcgYGB1bml0dGVz
dGBgLXN0eWxlIHRlc3Qgc3VpdGUgdXNpbmcgYGBweXRlc3RgYCwgdHlwZTo6CitUbyBydW4gYW4g
ZXhpc3RpbmcgYGB1bml0dGVzdGBgLXN0eWxlIHRlc3Qgc3VpdGUgdXNpbmcgYGBweXRlc3RgYCwg
dHlwZToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCB0ZXN0cwogCkBAIC0y
MiwxNiArMjQsMTUgQEAgQWxtb3N0IGFsbCBgYHVuaXR0ZXN0YGAgZmVhdHVyZXMgYXJlIHN1cHBv
cnRlZDoKIAogKiBgYEB1bml0dGVzdC5za2lwYGAgc3R5bGUgZGVjb3JhdG9yczsKICogYGBzZXRV
cC90ZWFyRG93bmBgOwotKiBgYHNldFVwQ2xhc3MvdGVhckRvd25DbGFzcygpYGA7CisqIGBgc2V0
VXBDbGFzcy90ZWFyRG93bkNsYXNzYGA7CisqIGBgc2V0VXBNb2R1bGUvdGVhckRvd25Nb2R1bGVg
YDsKIAogLi4gX2Bsb2FkX3Rlc3RzIHByb3RvY29sYDogaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcv
My9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWwjbG9hZC10ZXN0cy1wcm90b2NvbAotLi4gX2BzZXRVcE1v
ZHVsZS90ZWFyRG93bk1vZHVsZWA6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS91
bml0dGVzdC5odG1sI3NldHVwbW9kdWxlLWFuZC10ZWFyZG93bm1vZHVsZQogLi4gX2BzdWJ0ZXN0
c2A6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS91bml0dGVzdC5odG1sI2Rpc3Rp
bmd1aXNoaW5nLXRlc3QtaXRlcmF0aW9ucy11c2luZy1zdWJ0ZXN0cwogCiBVcCB0byB0aGlzIHBv
aW50IHB5dGVzdCBkb2VzIG5vdCBoYXZlIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZmVhdHVy
ZXM6CiAKICogYGxvYWRfdGVzdHMgcHJvdG9jb2xgXzsKLSogYHNldFVwTW9kdWxlL3RlYXJEb3du
TW9kdWxlYF87CiAqIGBzdWJ0ZXN0c2BfOwogCiBCZW5lZml0cyBvdXQgb2YgdGhlIGJveApAQCAt
NzksNyArODAsOSBAQCBSdW5uaW5nIHlvdXIgdW5pdHRlc3Qgd2l0aCBgYHB5dGVzdGBgIGFsbG93
cyB5b3UgdG8gdXNlIGl0cwogdGVzdHMuICBBc3N1bWluZyB5b3UgaGF2ZSBhdCBsZWFzdCBza2lt
bWVkIHRoZSBweXRlc3QgZml4dHVyZSBmZWF0dXJlcywKIGxldCdzIGp1bXAtc3RhcnQgaW50byBh
biBleGFtcGxlIHRoYXQgaW50ZWdyYXRlcyBhIHB5dGVzdCBgYGRiX2NsYXNzYGAKIGZpeHR1cmUs
IHNldHRpbmcgdXAgYSBjbGFzcy1jYWNoZWQgZGF0YWJhc2Ugb2JqZWN0LCBhbmQgdGhlbiByZWZl
cmVuY2UKLWl0IGZyb20gYSB1bml0dGVzdC1zdHlsZSB0ZXN0OjoKK2l0IGZyb20gYSB1bml0dGVz
dC1zdHlsZSB0ZXN0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQg
b2YgY29uZnRlc3QucHkKIApAQCAtODgsMTAgKzkxLDEyIEBAIGl0IGZyb20gYSB1bml0dGVzdC1z
dHlsZSB0ZXN0OjoKIAogICAgIGltcG9ydCBweXRlc3QKIAorCiAgICAgQHB5dGVzdC5maXh0dXJl
KHNjb3BlPSJjbGFzcyIpCiAgICAgZGVmIGRiX2NsYXNzKHJlcXVlc3QpOgotICAgICAgICBjbGFz
cyBEdW1teURCKG9iamVjdCk6CisgICAgICAgIGNsYXNzIER1bW15REI6CiAgICAgICAgICAgICBw
YXNzCisKICAgICAgICAgIyBzZXQgYSBjbGFzcyBhdHRyaWJ1dGUgb24gdGhlIGludm9raW5nIHRl
c3QgY29udGV4dAogICAgICAgICByZXF1ZXN0LmNscy5kYiA9IER1bW15REIoKQogCkBAIC0xMDQs
MzEgKzEwOSwzNyBAQCBhcyB0aGUgYGBjbHNgYCBhdHRyaWJ1dGUsIGRlbm90aW5nIHRoZSBjbGFz
cyBmcm9tIHdoaWNoIHRoZSBmaXh0dXJlCiBpcyB1c2VkLiAgVGhpcyBhcmNoaXRlY3R1cmUgZGUt
Y291cGxlcyBmaXh0dXJlIHdyaXRpbmcgZnJvbSBhY3R1YWwgdGVzdAogY29kZSBhbmQgYWxsb3dz
IHJlLXVzZSBvZiB0aGUgZml4dHVyZSBieSBhIG1pbmltYWwgcmVmZXJlbmNlLCB0aGUgZml4dHVy
ZQogbmFtZS4gIFNvIGxldCdzIHdyaXRlIGFuIGFjdHVhbCBgYHVuaXR0ZXN0LlRlc3RDYXNlYGAg
Y2xhc3MgdXNpbmcgb3VyCi1maXh0dXJlIGRlZmluaXRpb246OgorZml4dHVyZSBkZWZpbml0aW9u
OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF91bml0
dGVzdF9kYi5weQogCiAgICAgaW1wb3J0IHVuaXR0ZXN0CiAgICAgaW1wb3J0IHB5dGVzdAogCisK
ICAgICBAcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoImRiX2NsYXNzIikKICAgICBjbGFzcyBNeVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgdGVzdF9tZXRob2QxKHNlbGYpOgog
ICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoc2VsZiwgImRiIikKLSAgICAgICAgICAgIGFzc2Vy
dCAwLCBzZWxmLmRiICAgIyBmYWlsIGZvciBkZW1vIHB1cnBvc2VzCisgICAgICAgICAgICBhc3Nl
cnQgMCwgc2VsZi5kYiAgIyBmYWlsIGZvciBkZW1vIHB1cnBvc2VzCiAKICAgICAgICAgZGVmIHRl
c3RfbWV0aG9kMihzZWxmKToKLSAgICAgICAgICAgIGFzc2VydCAwLCBzZWxmLmRiICAgIyBmYWls
IGZvciBkZW1vIHB1cnBvc2VzCisgICAgICAgICAgICBhc3NlcnQgMCwgc2VsZi5kYiAgIyBmYWls
IGZvciBkZW1vIHB1cnBvc2VzCiAKIFRoZSBgYEBweXRlc3QubWFyay51c2VmaXh0dXJlcygiZGJf
Y2xhc3MiKWBgIGNsYXNzLWRlY29yYXRvciBtYWtlcyBzdXJlIHRoYXQKIHRoZSBweXRlc3QgZml4
dHVyZSBmdW5jdGlvbiBgYGRiX2NsYXNzYGAgaXMgY2FsbGVkIG9uY2UgcGVyIGNsYXNzLgogRHVl
IHRvIHRoZSBkZWxpYmVyYXRlbHkgZmFpbGluZyBhc3NlcnQgc3RhdGVtZW50cywgd2UgY2FuIHRh
a2UgYSBsb29rIGF0Ci10aGUgYGBzZWxmLmRiYGAgdmFsdWVzIGluIHRoZSB0cmFjZWJhY2s6Ogor
dGhlIGBgc2VsZi5kYmBgIHZhbHVlcyBpbiB0aGUgdHJhY2ViYWNrOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCB0ZXN0X3VuaXR0ZXN0X2RiLnB5CiAgICAgPT09PT09
PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lvbiBzdGFydHMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotICAgIHBsYXRmb3JtIGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0
LTMueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Ci0gICAgcm9vdGRpcjogJFJFR0VORE9DX1RN
UERJUiwgaW5pZmlsZToKKyAgICBwbGF0Zm9ybSBsaW51eCAtLSBQeXRob24gMy54LnksIHB5dGVz
dC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAgIGNhY2hlZGlyOiAkUFlUSE9OX1BS
RUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJFR0VORE9DX1RNUERJUgogICAgIGNv
bGxlY3RlZCAyIGl0ZW1zCiAKICAgICB0ZXN0X3VuaXR0ZXN0X2RiLnB5IEZGICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTAwJV0KQEAgLTE0MCwyMiArMTUx
LDI1IEBAIHRoZSBgYHNlbGYuZGJgYCB2YWx1ZXMgaW4gdGhlIHRyYWNlYmFjazo6CiAKICAgICAg
ICAgZGVmIHRlc3RfbWV0aG9kMShzZWxmKToKICAgICAgICAgICAgIGFzc2VydCBoYXNhdHRyKHNl
bGYsICJkYiIpCi0gICAgPiAgICAgICBhc3NlcnQgMCwgc2VsZi5kYiAgICMgZmFpbCBmb3IgZGVt
byBwdXJwb3NlcworICAgID4gICAgICAgYXNzZXJ0IDAsIHNlbGYuZGIgICMgZmFpbCBmb3IgZGVt
byBwdXJwb3NlcwogICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IDxjb25mdGVzdC5kYl9jbGFz
cy48bG9jYWxzPi5EdW1teURCIG9iamVjdCBhdCAweGRlYWRiZWVmPgogICAgIEUgICAgICAgYXNz
ZXJ0IDAKIAotICAgIHRlc3RfdW5pdHRlc3RfZGIucHk6OTogQXNzZXJ0aW9uRXJyb3IKKyAgICB0
ZXN0X3VuaXR0ZXN0X2RiLnB5OjEwOiBBc3NlcnRpb25FcnJvcgogICAgIF9fX19fX19fX19fX19f
X19fX19fX19fX19fXyBNeVRlc3QudGVzdF9tZXRob2QyIF9fX19fX19fX19fX19fX19fX19fX19f
X19fX18KIAogICAgIHNlbGYgPSA8dGVzdF91bml0dGVzdF9kYi5NeVRlc3QgdGVzdE1ldGhvZD10
ZXN0X21ldGhvZDI+CiAKICAgICAgICAgZGVmIHRlc3RfbWV0aG9kMihzZWxmKToKLSAgICA+ICAg
ICAgIGFzc2VydCAwLCBzZWxmLmRiICAgIyBmYWlsIGZvciBkZW1vIHB1cnBvc2VzCisgICAgPiAg
ICAgICBhc3NlcnQgMCwgc2VsZi5kYiAgIyBmYWlsIGZvciBkZW1vIHB1cnBvc2VzCiAgICAgRSAg
ICAgICBBc3NlcnRpb25FcnJvcjogPGNvbmZ0ZXN0LmRiX2NsYXNzLjxsb2NhbHM+LkR1bW15REIg
b2JqZWN0IGF0IDB4ZGVhZGJlZWY+CiAgICAgRSAgICAgICBhc3NlcnQgMAogCi0gICAgdGVzdF91
bml0dGVzdF9kYi5weToxMjogQXNzZXJ0aW9uRXJyb3IKLSAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09IDIgZmFpbGVkIGluIDAuMTIgc2Vjb25kcyA9PT09PT09PT09PT09PT09PT09PT09PT09
CisgICAgdGVzdF91bml0dGVzdF9kYi5weToxMzogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgRkFJTEVEIHRlc3RfdW5pdHRlc3RfZGIucHk6Ok15VGVzdDo6dGVz
dF9tZXRob2QxIC0gQXNzZXJ0aW9uRXJyb3I6IDxjb25mdC4uLgorICAgIEZBSUxFRCB0ZXN0X3Vu
aXR0ZXN0X2RiLnB5OjpNeVRlc3Q6OnRlc3RfbWV0aG9kMiAtIEFzc2VydGlvbkVycm9yOiA8Y29u
ZnQuLi4KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IDIgZmFpbGVkIGluIDAuMTJz
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFRoaXMgZGVmYXVsdCBweXRlc3QgdHJh
Y2ViYWNrIHNob3dzIHRoYXQgdGhlIHR3byB0ZXN0IG1ldGhvZHMKIHNoYXJlIHRoZSBzYW1lIGBg
c2VsZi5kYmBgIGluc3RhbmNlIHdoaWNoIHdhcyBvdXIgaW50ZW50aW9uCkBAIC0xNzcsMTcgKzE5
MSwxOSBAQCBMZXQncyBsb29rIGF0IGFuIGBgaW5pdGRpcmBgIGZpeHR1cmUgd2hpY2ggbWFrZXMg
YWxsIHRlc3QgbWV0aG9kcyBvZiBhCiBgYFRlc3RDYXNlYGAgY2xhc3MgZXhlY3V0ZSBpbiBhIHRl
bXBvcmFyeSBkaXJlY3Rvcnkgd2l0aCBhCiBwcmUtaW5pdGlhbGl6ZWQgYGBzYW1wbGVmaWxlLmlu
aWBgLiAgT3VyIGBgaW5pdGRpcmBgIGZpeHR1cmUgaXRzZWxmIHVzZXMKIHRoZSBweXRlc3QgYnVp
bHRpbiA6cmVmOmB0bXBkaXIgPHRtcGRpcj5gIGZpeHR1cmUgdG8gZGVsZWdhdGUgdGhlCi1jcmVh
dGlvbiBvZiBhIHBlci10ZXN0IHRlbXBvcmFyeSBkaXJlY3Rvcnk6OgorY3JlYXRpb24gb2YgYSBw
ZXItdGVzdCB0ZW1wb3JhcnkgZGlyZWN0b3J5OgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAK
ICAgICAjIGNvbnRlbnQgb2YgdGVzdF91bml0dGVzdF9jbGVhbmRpci5weQogICAgIGltcG9ydCBw
eXRlc3QKICAgICBpbXBvcnQgdW5pdHRlc3QKIAotICAgIGNsYXNzIE15VGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAKKyAgICBjbGFzcyBNeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBAcHl0ZXN0LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQogICAgICAgICBkZWYgaW5pdGRpcihzZWxm
LCB0bXBkaXIpOgotICAgICAgICAgICAgdG1wZGlyLmNoZGlyKCkgIyBjaGFuZ2UgdG8gcHl0ZXN0
LXByb3ZpZGVkIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICAgICAgIHRtcGRpci5jaGRpcigp
ICAjIGNoYW5nZSB0byBweXRlc3QtcHJvdmlkZWQgdGVtcG9yYXJ5IGRpcmVjdG9yeQogICAgICAg
ICAgICAgdG1wZGlyLmpvaW4oInNhbXBsZWZpbGUuaW5pIikud3JpdGUoIiMgdGVzdGRhdGEiKQog
CiAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKQEAgLTIwMCwxMSArMjE2LDEzIEBAIHVz
ZWQgZm9yIGFsbCBtZXRob2RzIG9mIHRoZSBjbGFzcyB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgVGhp
cyBpcyBhCiBzaG9ydGN1dCBmb3IgdXNpbmcgYSBgYEBweXRlc3QubWFyay51c2VmaXh0dXJlcygi
aW5pdGRpciIpYGAgbWFya2VyCiBvbiB0aGUgY2xhc3MgbGlrZSBpbiB0aGUgcHJldmlvdXMgZXhh
bXBsZS4KIAotUnVubmluZyB0aGlzIHRlc3QgbW9kdWxlIC4uLjo6CitSdW5uaW5nIHRoaXMgdGVz
dCBtb2R1bGUgLi4uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCAt
cSB0ZXN0X3VuaXR0ZXN0X2NsZWFuZGlyLnB5CiAgICAgLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCi0gICAg
MSBwYXNzZWQgaW4gMC4xMiBzZWNvbmRzCisgICAgMSBwYXNzZWQgaW4gMC4xMnMKIAogLi4uIGdp
dmVzIHVzIG9uZSBwYXNzZWQgdGVzdCBiZWNhdXNlIHRoZSBgYGluaXRkaXJgYCBmaXh0dXJlIGZ1
bmN0aW9uCiB3YXMgZXhlY3V0ZWQgYWhlYWQgb2YgdGhlIGBgdGVzdF9tZXRob2RgYC4KQEAgLTIy
MywxNyArMjQxLDYgQEAgd2FzIGV4ZWN1dGVkIGFoZWFkIG9mIHRoZSBgYHRlc3RfbWV0aG9kYGAu
CiAKIC4uIF9wZGItdW5pdHRlc3Qtbm90ZToKIAotLi4gbm90ZTo6Ci0KLSAgICBSdW5uaW5nIHRl
c3RzIGZyb20gYGB1bml0dGVzdC5UZXN0Q2FzZWBgIHN1YmNsYXNzZXMgd2l0aCBgYC0tcGRiYGAg
d2lsbAotICAgIGRpc2FibGUgdGVhckRvd24gYW5kIGNsZWFudXAgbWV0aG9kcyBmb3IgdGhlIGNh
c2UgdGhhdCBhbiBFeGNlcHRpb24KLSAgICBvY2N1cnMuIFRoaXMgYWxsb3dzIHByb3BlciBwb3N0
IG1vcnRlbSBkZWJ1Z2dpbmcgZm9yIGFsbCBhcHBsaWNhdGlvbnMKLSAgICB3aGljaCBoYXZlIHNp
Z25pZmljYW50IGxvZ2ljIGluIHRoZWlyIHRlYXJEb3duIG1hY2hpbmVyeS4gSG93ZXZlciwKLSAg
ICBzdXBwb3J0aW5nIHRoaXMgZmVhdHVyZSBoYXMgdGhlIGZvbGxvd2luZyBzaWRlIGVmZmVjdDog
SWYgcGVvcGxlCi0gICAgb3ZlcndyaXRlIGBgdW5pdHRlc3QuVGVzdENhc2VgYCBgYF9fY2FsbF9f
YGAgb3IgYGBydW5gYCwgdGhleSBuZWVkIHRvCi0gICAgdG8gb3ZlcndyaXRlIGBgZGVidWdgYCBp
biB0aGUgc2FtZSB3YXkgICh0aGlzIGlzIGFsc28gdHJ1ZSBmb3Igc3RhbmRhcmQKLSAgICB1bml0
dGVzdCkuCi0KIC4uIG5vdGU6OgogCiAgICAgRHVlIHRvIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5j
ZXMgYmV0d2VlbiB0aGUgdHdvIGZyYW1ld29ya3MsIHNldHVwIGFuZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3VzYWdlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi91c2FnZS5yc3QK
aW5kZXggMjViZTU0Mzk1YWY3Li4zYzAzZGI0NTQwZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi91c2FnZS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VzYWdlLnJzdApAQCAt
MTAsOSArMTAsMTEgQEAgVXNhZ2UgYW5kIEludm9jYXRpb25zCiBDYWxsaW5nIHB5dGVzdCB0aHJv
dWdoIGBgcHl0aG9uIC1tIHB5dGVzdGBgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKIAotWW91IGNh
biBpbnZva2UgdGVzdGluZyB0aHJvdWdoIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZnJvbSB0aGUg
Y29tbWFuZCBsaW5lOjoKKworWW91IGNhbiBpbnZva2UgdGVzdGluZyB0aHJvdWdoIHRoZSBQeXRo
b24gaW50ZXJwcmV0ZXIgZnJvbSB0aGUgY29tbWFuZCBsaW5lOgorCisuLiBjb2RlLWJsb2NrOjog
dGV4dAogCiAgICAgcHl0aG9uIC1tIHB5dGVzdCBbLi4uXQogCkBAIC0zMSwyNSArMzMsNDMgQEAg
UnVubmluZyBgYHB5dGVzdGBgIGNhbiByZXN1bHQgaW4gc2l4IGRpZmZlcmVudCBleGl0IGNvZGVz
OgogOkV4aXQgY29kZSA0OiBweXRlc3QgY29tbWFuZCBsaW5lIHVzYWdlIGVycm9yCiA6RXhpdCBj
b2RlIDU6IE5vIHRlc3RzIHdlcmUgY29sbGVjdGVkCiAKK1RoZXkgYXJlIHJlcHJlc2VudGVkIGJ5
IHRoZSA6Y2xhc3M6YHB5dGVzdC5FeGl0Q29kZWAgZW51bS4gVGhlIGV4aXQgY29kZXMgYmVpbmcg
YSBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGNhbiBiZSBpbXBvcnRlZCBhbmQgYWNjZXNzZWQgZGly
ZWN0bHkgdXNpbmc6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGZyb20gcHl0ZXN0
IGltcG9ydCBFeGl0Q29kZQorCisuLiBub3RlOjoKKworICAgIElmIHlvdSB3b3VsZCBsaWtlIHRv
IGN1c3RvbWl6ZSB0aGUgZXhpdCBjb2RlIGluIHNvbWUgc2NlbmFyaW9zLCBzcGVjaWFsbHkgd2hl
bgorICAgIG5vIHRlc3RzIGFyZSBjb2xsZWN0ZWQsIGNvbnNpZGVyIHVzaW5nIHRoZQorICAgIGBw
eXRlc3QtY3VzdG9tX2V4aXRfY29kZSA8aHR0cHM6Ly9naXRodWIuY29tL3lhc2h0b2RpOTQvcHl0
ZXN0LWN1c3RvbV9leGl0X2NvZGU+YF9fCisgICAgcGx1Z2luLgorCisKIEdldHRpbmcgaGVscCBv
biB2ZXJzaW9uLCBvcHRpb24gbmFtZXMsIGVudmlyb25tZW50IHZhcmlhYmxlcwogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
OjoKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLS12ZXJzaW9uICAgIyBzaG93
cyB3aGVyZSBweXRlc3Qgd2FzIGltcG9ydGVkIGZyb20KICAgICBweXRlc3QgLS1maXh0dXJlcyAg
IyBzaG93IGF2YWlsYWJsZSBidWlsdGluIGZ1bmN0aW9uIGFyZ3VtZW50cwogICAgIHB5dGVzdCAt
aCB8IC0taGVscCAjIHNob3cgaGVscCBvbiBjb21tYW5kIGxpbmUgYW5kIGNvbmZpZyBmaWxlIG9w
dGlvbnMKIAogCitUaGUgZnVsbCBjb21tYW5kLWxpbmUgZmxhZ3MgY2FuIGJlIGZvdW5kIGluIHRo
ZSA6cmVmOmByZWZlcmVuY2UgPGNvbW1hbmQtbGluZS1mbGFncz5gLgorCiAuLiBfbWF4ZmFpbDoK
IAogU3RvcHBpbmcgYWZ0ZXIgdGhlIGZpcnN0IChvciBOKSBmYWlsdXJlcwogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRvIHN0b3AgdGhlIHRl
c3RpbmcgcHJvY2VzcyBhZnRlciB0aGUgZmlyc3QgKE4pIGZhaWx1cmVzOjoKK1RvIHN0b3AgdGhl
IHRlc3RpbmcgcHJvY2VzcyBhZnRlciB0aGUgZmlyc3QgKE4pIGZhaWx1cmVzOgorCisuLiBjb2Rl
LWJsb2NrOjogYmFzaAogCi0gICAgcHl0ZXN0IC14ICAgICAgICAgICAgIyBzdG9wIGFmdGVyIGZp
cnN0IGZhaWx1cmUKLSAgICBweXRlc3QgLS1tYXhmYWlsPTIgICAgIyBzdG9wIGFmdGVyIHR3byBm
YWlsdXJlcworICAgIHB5dGVzdCAteCAgICAgICAgICAgIyBzdG9wIGFmdGVyIGZpcnN0IGZhaWx1
cmUKKyAgICBweXRlc3QgLS1tYXhmYWlsPTIgICMgc3RvcCBhZnRlciB0d28gZmFpbHVyZXMKIAog
Li4gX3NlbGVjdC10ZXN0czoKIApAQCAtNjAsMjQgKzgwLDI0IEBAIFB5dGVzdCBzdXBwb3J0cyBz
ZXZlcmFsIHdheXMgdG8gcnVuIGFuZCBzZWxlY3QgdGVzdHMgZnJvbSB0aGUgY29tbWFuZC1saW5l
LgogCiAqKlJ1biB0ZXN0cyBpbiBhIG1vZHVsZSoqCiAKLTo6CisuLiBjb2RlLWJsb2NrOjogYmFz
aAogCiAgICAgcHl0ZXN0IHRlc3RfbW9kLnB5CiAKICoqUnVuIHRlc3RzIGluIGEgZGlyZWN0b3J5
KioKIAotOjoKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgdGVzdGluZy8KIAog
KipSdW4gdGVzdHMgYnkga2V5d29yZCBleHByZXNzaW9ucyoqCiAKLTo6CisuLiBjb2RlLWJsb2Nr
OjogYmFzaAogCiAgICAgcHl0ZXN0IC1rICJNeUNsYXNzIGFuZCBub3QgbWV0aG9kIgogCi1UaGlz
IHdpbGwgcnVuIHRlc3RzIHdoaWNoIGNvbnRhaW4gbmFtZXMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4g
KnN0cmluZyBleHByZXNzaW9uKiwgd2hpY2ggY2FuCi1pbmNsdWRlIFB5dGhvbiBvcGVyYXRvcnMg
dGhhdCB1c2UgZmlsZW5hbWVzLCBjbGFzcyBuYW1lcyBhbmQgZnVuY3Rpb24gbmFtZXMgYXMgdmFy
aWFibGVzLgorVGhpcyB3aWxsIHJ1biB0ZXN0cyB3aGljaCBjb250YWluIG5hbWVzIHRoYXQgbWF0
Y2ggdGhlIGdpdmVuICpzdHJpbmcgZXhwcmVzc2lvbiogKGNhc2UtaW5zZW5zaXRpdmUpLAord2hp
Y2ggY2FuIGluY2x1ZGUgUHl0aG9uIG9wZXJhdG9ycyB0aGF0IHVzZSBmaWxlbmFtZXMsIGNsYXNz
IG5hbWVzIGFuZCBmdW5jdGlvbiBuYW1lcyBhcyB2YXJpYWJsZXMuCiBUaGUgZXhhbXBsZSBhYm92
ZSB3aWxsIHJ1biBgYFRlc3RNeUNsYXNzLnRlc3Rfc29tZXRoaW5nYGAgIGJ1dCBub3QgYGBUZXN0
TXlDbGFzcy50ZXN0X21ldGhvZF9zaW1wbGVgYC4KIAogLi4gX25vZGVpZHM6CkBAIC04NywxOCAr
MTA3LDIyIEBAIFRoZSBleGFtcGxlIGFib3ZlIHdpbGwgcnVuIGBgVGVzdE15Q2xhc3MudGVzdF9z
b21ldGhpbmdgYCAgYnV0IG5vdCBgYFRlc3RNeUNsYXNzCiBFYWNoIGNvbGxlY3RlZCB0ZXN0IGlz
IGFzc2lnbmVkIGEgdW5pcXVlIGBgbm9kZWlkYGAgd2hpY2ggY29uc2lzdCBvZiB0aGUgbW9kdWxl
IGZpbGVuYW1lIGZvbGxvd2VkCiBieSBzcGVjaWZpZXJzIGxpa2UgY2xhc3MgbmFtZXMsIGZ1bmN0
aW9uIG5hbWVzIGFuZCBwYXJhbWV0ZXJzIGZyb20gcGFyYW1ldHJpemF0aW9uLCBzZXBhcmF0ZWQg
YnkgYGA6OmBgIGNoYXJhY3RlcnMuCiAKLVRvIHJ1biBhIHNwZWNpZmljIHRlc3Qgd2l0aGluIGEg
bW9kdWxlOjoKK1RvIHJ1biBhIHNwZWNpZmljIHRlc3Qgd2l0aGluIGEgbW9kdWxlOgorCisuLiBj
b2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IHRlc3RfbW9kLnB5Ojp0ZXN0X2Z1bmMKIAog
Ci1Bbm90aGVyIGV4YW1wbGUgc3BlY2lmeWluZyBhIHRlc3QgbWV0aG9kIGluIHRoZSBjb21tYW5k
IGxpbmU6OgorQW5vdGhlciBleGFtcGxlIHNwZWNpZnlpbmcgYSB0ZXN0IG1ldGhvZCBpbiB0aGUg
Y29tbWFuZCBsaW5lOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IHRlc3Rf
bW9kLnB5OjpUZXN0Q2xhc3M6OnRlc3RfbWV0aG9kCiAKICoqUnVuIHRlc3RzIGJ5IG1hcmtlciBl
eHByZXNzaW9ucyoqCiAKLTo6CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC1t
IHNsb3cKIApAQCAtMTA4LDcgKzEzMiw3IEBAIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSA6cmVm
OmBtYXJrcyA8bWFyaz5gLgogCiAqKlJ1biB0ZXN0cyBmcm9tIHBhY2thZ2VzKioKIAotOjoKKy4u
IGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3QgLS1weWFyZ3MgcGtnLnRlc3RpbmcKIApA
QCAtMTE4LDcgKzE0Miw5IEBAIFRoaXMgd2lsbCBpbXBvcnQgYGBwa2cudGVzdGluZ2BgIGFuZCB1
c2UgaXRzIGZpbGVzeXN0ZW0gbG9jYXRpb24gdG8gZmluZCBhbmQgcnVuCiBNb2RpZnlpbmcgUHl0
aG9uIHRyYWNlYmFjayBwcmludGluZwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1FeGFtcGxlcyBmb3IgbW9kaWZ5aW5nIHRyYWNlYmFjayBwcmludGlu
Zzo6CitFeGFtcGxlcyBmb3IgbW9kaWZ5aW5nIHRyYWNlYmFjayBwcmludGluZzoKKworLi4gY29k
ZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLXNob3dsb2NhbHMgIyBzaG93IGxvY2FsIHZh
cmlhYmxlcyBpbiB0cmFjZWJhY2tzCiAgICAgcHl0ZXN0IC1sICAgICAgICAgICAjIHNob3cgbG9j
YWwgdmFyaWFibGVzIChzaG9ydGN1dCkKQEAgLTE0MCw2ICsxNjYsMTg0IEBAIHdpbGwgYmUgc2hv
d24gKGJlY2F1c2UgS2V5Ym9hcmRJbnRlcnJ1cHQgaXMgY2F1Z2h0IGJ5IHB5dGVzdCkuIEJ5IHVz
aW5nIHRoaXMKIG9wdGlvbiB5b3UgbWFrZSBzdXJlIGEgdHJhY2UgaXMgc2hvd24uCiAKIAorLi4g
X2BweXRlc3QuZGV0YWlsZWRfZmFpbGVkX3Rlc3RzX3VzYWdlYDoKKworRGV0YWlsZWQgc3VtbWFy
eSByZXBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBgYC1yYGAgZmxhZyBjYW4g
YmUgdXNlZCB0byBkaXNwbGF5IGEgInNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvIiBhdCB0aGUgZW5k
IG9mIHRoZSB0ZXN0IHNlc3Npb24sCittYWtpbmcgaXQgZWFzeSBpbiBsYXJnZSB0ZXN0IHN1aXRl
cyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGFsbCBmYWlsdXJlcywgc2tpcHMsIHhmYWlscywg
ZXRjLgorCitJdCBkZWZhdWx0cyB0byBgYGZFYGAgdG8gbGlzdCBmYWlsdXJlcyBhbmQgZXJyb3Jz
LgorCitFeGFtcGxlOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICAjIGNvbnRlbnQg
b2YgdGVzdF9leGFtcGxlLnB5CisgICAgaW1wb3J0IHB5dGVzdAorCisKKyAgICBAcHl0ZXN0LmZp
eHR1cmUKKyAgICBkZWYgZXJyb3JfZml4dHVyZSgpOgorICAgICAgICBhc3NlcnQgMAorCisKKyAg
ICBkZWYgdGVzdF9vaygpOgorICAgICAgICBwcmludCgib2siKQorCisKKyAgICBkZWYgdGVzdF9m
YWlsKCk6CisgICAgICAgIGFzc2VydCAwCisKKworICAgIGRlZiB0ZXN0X2Vycm9yKGVycm9yX2Zp
eHR1cmUpOgorICAgICAgICBwYXNzCisKKworICAgIGRlZiB0ZXN0X3NraXAoKToKKyAgICAgICAg
cHl0ZXN0LnNraXAoInNraXBwaW5nIHRoaXMgdGVzdCIpCisKKworICAgIGRlZiB0ZXN0X3hmYWls
KCk6CisgICAgICAgIHB5dGVzdC54ZmFpbCgieGZhaWxpbmcgdGhpcyB0ZXN0IikKKworCisgICAg
QHB5dGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0iYWx3YXlzIHhmYWlsIikKKyAgICBkZWYgdGVzdF94
cGFzcygpOgorICAgICAgICBwYXNzCisKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAorCisgICAg
JCBweXRlc3QgLXJhCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09IHRlc3Qgc2Vzc2lv
biBzdGFydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHBsYXRmb3JtIGxpbnV4
IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAueC55Cisg
ICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290ZGlyOiAk
UkVHRU5ET0NfVE1QRElSCisgICAgY29sbGVjdGVkIDYgaXRlbXMKKworICAgIHRlc3RfZXhhbXBs
ZS5weSAuRkVzeFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsxMDAlXQorCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFUlJPUlMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIF9fX19fX19fX19fX19fX19f
X19fX19fIEVSUk9SIGF0IHNldHVwIG9mIHRlc3RfZXJyb3IgX19fX19fX19fX19fX19fX19fX19f
X18KKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGVycm9yX2ZpeHR1cmUo
KToKKyAgICA+ICAgICAgIGFzc2VydCAwCisgICAgRSAgICAgICBhc3NlcnQgMAorCisgICAgdGVz
dF9leGFtcGxlLnB5OjY6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09IEZBSUxVUkVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
ICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIHRlc3RfZmFpbCBfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KKworICAgICAgICBkZWYgdGVzdF9mYWlsKCk6CisgICAg
PiAgICAgICBhc3NlcnQgMAorICAgIEUgICAgICAgYXNzZXJ0IDAKKworICAgIHRlc3RfZXhhbXBs
ZS5weToxNDogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09IHNo
b3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgU0tJ
UFBFRCBbMV0gdGVzdF9leGFtcGxlLnB5OjIyOiBza2lwcGluZyB0aGlzIHRlc3QKKyAgICBYRkFJ
TCB0ZXN0X2V4YW1wbGUucHk6OnRlc3RfeGZhaWwKKyAgICAgIHJlYXNvbjogeGZhaWxpbmcgdGhp
cyB0ZXN0CisgICAgWFBBU1MgdGVzdF9leGFtcGxlLnB5Ojp0ZXN0X3hwYXNzIGFsd2F5cyB4ZmFp
bAorICAgIEVSUk9SIHRlc3RfZXhhbXBsZS5weTo6dGVzdF9lcnJvciAtIGFzc2VydCAwCisgICAg
RkFJTEVEIHRlc3RfZXhhbXBsZS5weTo6dGVzdF9mYWlsIC0gYXNzZXJ0IDAKKyAgICA9PSAxIGZh
aWxlZCwgMSBwYXNzZWQsIDEgc2tpcHBlZCwgMSB4ZmFpbGVkLCAxIHhwYXNzZWQsIDEgZXJyb3Ig
aW4gMC4xMnMgPT09CisKK1RoZSBgYC1yYGAgb3B0aW9ucyBhY2NlcHRzIGEgbnVtYmVyIG9mIGNo
YXJhY3RlcnMgYWZ0ZXIgaXQsIHdpdGggYGBhYGAgdXNlZAorYWJvdmUgbWVhbmluZyAiYWxsIGV4
Y2VwdCBwYXNzZXMiLgorCitIZXJlIGlzIHRoZSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIGNoYXJh
Y3RlcnMgdGhhdCBjYW4gYmUgdXNlZDoKKworIC0gYGBmYGAgLSBmYWlsZWQKKyAtIGBgRWBgIC0g
ZXJyb3IKKyAtIGBgc2BgIC0gc2tpcHBlZAorIC0gYGB4YGAgLSB4ZmFpbGVkCisgLSBgYFhgYCAt
IHhwYXNzZWQKKyAtIGBgcGBgIC0gcGFzc2VkCisgLSBgYFBgYCAtIHBhc3NlZCB3aXRoIG91dHB1
dAorCitTcGVjaWFsIGNoYXJhY3RlcnMgZm9yIChkZSlzZWxlY3Rpb24gb2YgZ3JvdXBzOgorCisg
LSBgYGFgYCAtIGFsbCBleGNlcHQgYGBwUGBgCisgLSBgYEFgYCAtIGFsbAorIC0gYGBOYGAgLSBu
b25lLCB0aGlzIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgbm90aGluZyAoc2luY2UgYGBmRWBgIGlz
IHRoZSBkZWZhdWx0KQorCitNb3JlIHRoYW4gb25lIGNoYXJhY3RlciBjYW4gYmUgdXNlZCwgc28g
Zm9yIGV4YW1wbGUgdG8gb25seSBzZWUgZmFpbGVkIGFuZCBza2lwcGVkIHRlc3RzLCB5b3UgY2Fu
IGV4ZWN1dGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKKworICAgICQgcHl0ZXN0IC1yZnMK
KyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcGxhdGZvcm0gbGludXggLS0gUHl0aG9uIDMu
eC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54LnkKKyAgICBjYWNoZWRpcjog
JFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAgIHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBE
SVIKKyAgICBjb2xsZWN0ZWQgNiBpdGVtcworCisgICAgdGVzdF9leGFtcGxlLnB5IC5GRXN4WCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKKyAg
ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVSUk9SUyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisgICAgX19fX19fX19fX19fX19fX19fX19fX18gRVJST1Ig
YXQgc2V0dXAgb2YgdGVzdF9lcnJvciBfX19fX19fX19fX19fX19fX19fX19fXworCisgICAgICAg
IEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgZXJyb3JfZml4dHVyZSgpOgorICAgID4gICAg
ICAgYXNzZXJ0IDAKKyAgICBFICAgICAgIGFzc2VydCAwCisKKyAgICB0ZXN0X2V4YW1wbGUucHk6
NjogQXNzZXJ0aW9uRXJyb3IKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
RkFJTFVSRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18gdGVzdF9mYWlsIF9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXworCisgICAgICAgIGRlZiB0ZXN0X2ZhaWwoKToKKyAgICA+ICAgICAgIGFzc2Vy
dCAwCisgICAgRSAgICAgICBhc3NlcnQgMAorCisgICAgdGVzdF9leGFtcGxlLnB5OjE0OiBBc3Nl
cnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gc2hvcnQgdGVzdCBzdW1t
YXJ5IGluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBGQUlMRUQgdGVzdF9leGFt
cGxlLnB5Ojp0ZXN0X2ZhaWwgLSBhc3NlcnQgMAorICAgIFNLSVBQRUQgWzFdIHRlc3RfZXhhbXBs
ZS5weToyMjogc2tpcHBpbmcgdGhpcyB0ZXN0CisgICAgPT0gMSBmYWlsZWQsIDEgcGFzc2VkLCAx
IHNraXBwZWQsIDEgeGZhaWxlZCwgMSB4cGFzc2VkLCAxIGVycm9yIGluIDAuMTJzID09PQorCitV
c2luZyBgYHBgYCBsaXN0cyB0aGUgcGFzc2luZyB0ZXN0cywgd2hpbHN0IGBgUGBgIGFkZHMgYW4g
ZXh0cmEgc2VjdGlvbiAiUEFTU0VTIiB3aXRoIHRob3NlIHRlc3RzIHRoYXQgcGFzc2VkIGJ1dCBo
YWQKK2NhcHR1cmVkIG91dHB1dDoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAorCisgICAgJCBw
eXRlc3QgLXJwUAorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PSB0ZXN0IHNlc3Npb24g
c3RhcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwbGF0Zm9ybSBsaW51eCAt
LSBQeXRob24gMy54LnksIHB5dGVzdC02LngueSwgcHktMS54LnksIHBsdWdneS0wLngueQorICAg
IGNhY2hlZGlyOiAkUFlUSE9OX1BSRUZJWC8ucHl0ZXN0X2NhY2hlCisgICAgcm9vdGRpcjogJFJF
R0VORE9DX1RNUERJUgorICAgIGNvbGxlY3RlZCA2IGl0ZW1zCisKKyAgICB0ZXN0X2V4YW1wbGUu
cHkgLkZFc3hYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
MTAwJV0KKworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRVJST1JTID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBfX19fX19fX19fX19fX19fX19f
X19fXyBFUlJPUiBhdCBzZXR1cCBvZiB0ZXN0X2Vycm9yIF9fX19fX19fX19fX19fX19fX19fX19f
CisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgIGRlZiBlcnJvcl9maXh0dXJlKCk6
CisgICAgPiAgICAgICBhc3NlcnQgMAorICAgIEUgICAgICAgYXNzZXJ0IDAKKworICAgIHRlc3Rf
ZXhhbXBsZS5weTo2OiBBc3NlcnRpb25FcnJvcgorICAgID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg
ICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X2ZhaWwgX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCisKKyAgICAgICAgZGVmIHRlc3RfZmFpbCgpOgorICAgID4g
ICAgICAgYXNzZXJ0IDAKKyAgICBFICAgICAgIGFzc2VydCAwCisKKyAgICB0ZXN0X2V4YW1wbGUu
cHk6MTQ6IEFzc2VydGlvbkVycm9yCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSBQQVNTRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXyB0ZXN0X29rIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FwdHVyZWQg
c3Rkb3V0IGNhbGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgb2sKKyAgICA9PT09
PT09PT09PT09PT09PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgUEFTU0VEIHRlc3RfZXhhbXBsZS5weTo6dGVzdF9vaworICAg
ID09IDEgZmFpbGVkLCAxIHBhc3NlZCwgMSBza2lwcGVkLCAxIHhmYWlsZWQsIDEgeHBhc3NlZCwg
MSBlcnJvciBpbiAwLjEycyA9PT0KKwogLi4gX3BkYi1vcHRpb246CiAKIERyb3BwaW5nIHRvIFBE
Ql8gKFB5dGhvbiBEZWJ1Z2dlcikgb24gZmFpbHVyZXMKQEAgLTE0OCwxMyArMzUyLDE3IEBAIERy
b3BwaW5nIHRvIFBEQl8gKFB5dGhvbiBEZWJ1Z2dlcikgb24gZmFpbHVyZXMKIC4uIF9QREI6IGh0
dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS9wZGIuaHRtbAogCiBQeXRob24gY29tZXMgd2l0
aCBhIGJ1aWx0aW4gUHl0aG9uIGRlYnVnZ2VyIGNhbGxlZCBQREJfLiAgYGBweXRlc3RgYAotYWxs
b3dzIG9uZSB0byBkcm9wIGludG8gdGhlIFBEQl8gcHJvbXB0IHZpYSBhIGNvbW1hbmQgbGluZSBv
cHRpb246OgorYWxsb3dzIG9uZSB0byBkcm9wIGludG8gdGhlIFBEQl8gcHJvbXB0IHZpYSBhIGNv
bW1hbmQgbGluZSBvcHRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCiAKICAgICBweXRlc3Qg
LS1wZGIKIAogVGhpcyB3aWxsIGludm9rZSB0aGUgUHl0aG9uIGRlYnVnZ2VyIG9uIGV2ZXJ5IGZh
aWx1cmUgKG9yIEtleWJvYXJkSW50ZXJydXB0KS4KIE9mdGVuIHlvdSBtaWdodCBvbmx5IHdhbnQg
dG8gZG8gdGhpcyBmb3IgdGhlIGZpcnN0IGZhaWxpbmcgdGVzdCB0byB1bmRlcnN0YW5kCi1hIGNl
cnRhaW4gZmFpbHVyZSBzaXR1YXRpb246OgorYSBjZXJ0YWluIGZhaWx1cmUgc2l0dWF0aW9uOgor
CisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC14IC0tcGRiICAgIyBkcm9wIHRv
IFBEQiBvbiBmaXJzdCBmYWlsdXJlLCB0aGVuIGVuZCB0ZXN0IHNlc3Npb24KICAgICBweXRlc3Qg
LS1wZGIgLS1tYXhmYWlsPTMgICMgZHJvcCB0byBQREIgZm9yIGZpcnN0IHRocmVlIGZhaWx1cmVz
CkBAIC0xNzEsNiArMzc5LDIwIEBAIGZvciBleGFtcGxlOjoKICAgICA+Pj4gc3lzLmxhc3RfdmFs
dWUKICAgICBBc3NlcnRpb25FcnJvcignYXNzZXJ0IHJlc3VsdCA9PSAib2siJywpCiAKKy4uIF90
cmFjZS1vcHRpb246CisKK0Ryb3BwaW5nIHRvIFBEQl8gKFB5dGhvbiBEZWJ1Z2dlcikgYXQgdGhl
IHN0YXJ0IG9mIGEgdGVzdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2BgcHl0ZXN0YGAgYWxsb3dzIG9uZSB0byBkcm9wIGlu
dG8gdGhlIFBEQl8gcHJvbXB0IGltbWVkaWF0ZWx5IGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3Qg
dmlhIGEgY29tbWFuZCBsaW5lIG9wdGlvbjoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAg
IHB5dGVzdCAtLXRyYWNlCisKK1RoaXMgd2lsbCBpbnZva2UgdGhlIFB5dGhvbiBkZWJ1Z2dlciBh
dCB0aGUgc3RhcnQgb2YgZXZlcnkgdGVzdC4KKwogLi4gX2JyZWFrcG9pbnRzOgogCiBTZXR0aW5n
IGJyZWFrcG9pbnRzCkBAIC0xODQsMTAgKzQwNiw4IEBAIGluIHlvdXIgY29kZSBhbmQgcHl0ZXN0
IGF1dG9tYXRpY2FsbHkgZGlzYWJsZXMgaXRzIG91dHB1dCBjYXB0dXJlIGZvciB0aGF0IHRlc3Q6
CiAqIE91dHB1dCBjYXB0dXJlIGluIG90aGVyIHRlc3RzIGlzIG5vdCBhZmZlY3RlZC4KICogQW55
IHByaW9yIHRlc3Qgb3V0cHV0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjYXB0dXJlZCBhbmQgd2ls
bCBiZSBwcm9jZXNzZWQgYXMKICAgc3VjaC4KLSogQW55IGxhdGVyIG91dHB1dCBwcm9kdWNlZCB3
aXRoaW4gdGhlIHNhbWUgdGVzdCB3aWxsIG5vdCBiZSBjYXB0dXJlZCBhbmQgd2lsbAotICBpbnN0
ZWFkIGdldCBzZW50IGRpcmVjdGx5IHRvIGBgc3lzLnN0ZG91dGBgLiBOb3RlIHRoYXQgdGhpcyBo
b2xkcyB0cnVlIGV2ZW4KLSAgZm9yIHRlc3Qgb3V0cHV0IG9jY3VycmluZyBhZnRlciB5b3UgZXhp
dCB0aGUgaW50ZXJhY3RpdmUgUERCXyB0cmFjaW5nIHNlc3Npb24KLSAgYW5kIGNvbnRpbnVlIHdp
dGggdGhlIHJlZ3VsYXIgdGVzdCBydW4uCisqIE91dHB1dCBjYXB0dXJlIGdldHMgcmVzdW1lZCB3
aGVuIGVuZGluZyB0aGUgZGVidWdnZXIgc2Vzc2lvbiAodmlhIHRoZQorICBgYGNvbnRpbnVlYGAg
Y29tbWFuZCkuCiAKIAogLi4gX2BicmVha3BvaW50LWJ1aWx0aW5gOgpAQCAtMjAwLDMyICs0MjAs
NjkgQEAgUHl0ZXN0IHN1cHBvcnRzIHRoZSB1c2Ugb2YgYGBicmVha3BvaW50KClgYCB3aXRoIHRo
ZSBmb2xsb3dpbmcgYmVoYXZpb3VyczoKIAogIC0gV2hlbiBgYGJyZWFrcG9pbnQoKWBgIGlzIGNh
bGxlZCBhbmQgYGBQWVRIT05CUkVBS1BPSU5UYGAgaXMgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVl
LCBweXRlc3Qgd2lsbCB1c2UgdGhlIGN1c3RvbSBpbnRlcm5hbCBQREIgdHJhY2UgVUkgaW5zdGVh
ZCBvZiB0aGUgc3lzdGVtIGRlZmF1bHQgYGBQZGJgYC4KICAtIFdoZW4gdGVzdHMgYXJlIGNvbXBs
ZXRlLCB0aGUgc3lzdGVtIHdpbGwgZGVmYXVsdCBiYWNrIHRvIHRoZSBzeXN0ZW0gYGBQZGJgYCB0
cmFjZSBVSS4KLSAtIElmIGBgLS1wZGJgYCBpcyBjYWxsZWQgb24gZXhlY3V0aW9uIG9mIHB5dGVz
dCwgdGhlIGN1c3RvbSBpbnRlcm5hbCBQZGIgdHJhY2UgVUkgaXMgdXNlZCBvbiBgYGJvdGhicmVh
a3BvaW50KClgYCBhbmQgZmFpbGVkIHRlc3RzL3VuaGFuZGxlZCBleGNlcHRpb25zLgotIC0gSWYg
YGAtLXBkYmNsc2BgIGlzIHVzZWQsIHRoZSBjdXN0b20gY2xhc3MgZGVidWdnZXIgd2lsbCBiZSBl
eGVjdXRlZCB3aGVuIGEgdGVzdCBmYWlscyAoYXMgZXhwZWN0ZWQgd2l0aGluIGV4aXN0aW5nIGJl
aGF2aW91ciksIGJ1dCBhbHNvIHdoZW4gYGBicmVha3BvaW50KClgYCBpcyBjYWxsZWQgZnJvbSB3
aXRoaW4gYSB0ZXN0LCB0aGUgY3VzdG9tIGNsYXNzIGRlYnVnZ2VyIHdpbGwgYmUgaW5zdGFudGlh
dGVkLgorIC0gV2l0aCBgYC0tcGRiYGAgcGFzc2VkIHRvIHB5dGVzdCwgdGhlIGN1c3RvbSBpbnRl
cm5hbCBQZGIgdHJhY2UgVUkgaXMgdXNlZCB3aXRoIGJvdGggYGBicmVha3BvaW50KClgYCBhbmQg
ZmFpbGVkIHRlc3RzL3VuaGFuZGxlZCBleGNlcHRpb25zLgorIC0gYGAtLXBkYmNsc2BgIGNhbiBi
ZSB1c2VkIHRvIHNwZWNpZnkgYSBjdXN0b20gZGVidWdnZXIgY2xhc3MuCiAKIC4uIF9kdXJhdGlv
bnM6CiAKIFByb2ZpbGluZyB0ZXN0IGV4ZWN1dGlvbiBkdXJhdGlvbgogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6IDIuMgorLi4gdmVyc2lv
bmNoYW5nZWQ6OiA2LjAKKworVG8gZ2V0IGEgbGlzdCBvZiB0aGUgc2xvd2VzdCAxMCB0ZXN0IGR1
cmF0aW9ucyBvdmVyIDEuMHMgbG9uZzoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgIHB5
dGVzdCAtLWR1cmF0aW9ucz0xMCAtLWR1cmF0aW9ucy1taW49MS4wCisKK0J5IGRlZmF1bHQsIHB5
dGVzdCB3aWxsIG5vdCBzaG93IHRlc3QgZHVyYXRpb25zIHRoYXQgYXJlIHRvbyBzbWFsbCAoPDAu
MDA1cykgdW5sZXNzIGBgLXZ2YGAgaXMgcGFzc2VkIG9uIHRoZSBjb21tYW5kLWxpbmUuCiAKLVRv
IGdldCBhIGxpc3Qgb2YgdGhlIHNsb3dlc3QgMTAgdGVzdCBkdXJhdGlvbnM6OgogCi0gICAgcHl0
ZXN0IC0tZHVyYXRpb25zPTEwCisuLiBfZmF1bHRoYW5kbGVyOgorCitGYXVsdCBIYW5kbGVyCist
LS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDUuMAorCitUaGUgYGZhdWx0aGFuZGxl
ciA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5odG1sPmBf
XyBzdGFuZGFyZCBtb2R1bGUKK2NhbiBiZSB1c2VkIHRvIGR1bXAgUHl0aG9uIHRyYWNlYmFja3Mg
b24gYSBzZWdmYXVsdCBvciBhZnRlciBhIHRpbWVvdXQuCisKK1RoZSBtb2R1bGUgaXMgYXV0b21h
dGljYWxseSBlbmFibGVkIGZvciBweXRlc3QgcnVucywgdW5sZXNzIHRoZSBgYC1wIG5vOmZhdWx0
aGFuZGxlcmBgIGlzIGdpdmVuCitvbiB0aGUgY29tbWFuZC1saW5lLgorCitBbHNvIHRoZSA6Y29u
ZnZhbDpgZmF1bHRoYW5kbGVyX3RpbWVvdXQ9WDxmYXVsdGhhbmRsZXJfdGltZW91dD5gIGNvbmZp
Z3VyYXRpb24gb3B0aW9uIGNhbiBiZSB1c2VkCit0byBkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxs
IHRocmVhZHMgaWYgYSB0ZXN0IHRha2VzIGxvbmdlciB0aGFuIGBgWGBgCitzZWNvbmRzIHRvIGZp
bmlzaCAobm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzKS4KKworLi4gbm90ZTo6CisKKyAgICBUaGlz
IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gaW50ZWdyYXRlZCBmcm9tIHRoZSBleHRlcm5hbAorICAg
IGBweXRlc3QtZmF1bHRoYW5kbGVyIDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRl
c3QtZmF1bHRoYW5kbGVyPmBfXyBwbHVnaW4sIHdpdGggdHdvCisgICAgc21hbGwgZGlmZmVyZW5j
ZXM6CisKKyAgICAqIFRvIGRpc2FibGUgaXQsIHVzZSBgYC1wIG5vOmZhdWx0aGFuZGxlcmBgIGlu
c3RlYWQgb2YgYGAtLW5vLWZhdWx0aGFuZGxlcmBgOiB0aGUgZm9ybWVyCisgICAgICBjYW4gYmUg
dXNlZCB3aXRoIGFueSBwbHVnaW4sIHNvIGl0IHNhdmVzIG9uZSBvcHRpb24uCisKKyAgICAqIFRo
ZSBgYC0tZmF1bHRoYW5kbGVyLXRpbWVvdXRgYCBjb21tYW5kLWxpbmUgb3B0aW9uIGhhcyBiZWNv
bWUgdGhlCisgICAgICA6Y29uZnZhbDpgZmF1bHRoYW5kbGVyX3RpbWVvdXRgIGNvbmZpZ3VyYXRp
b24gb3B0aW9uLiBJdCBjYW4gc3RpbGwgYmUgY29uZmlndXJlZCBmcm9tCisgICAgICB0aGUgY29t
bWFuZC1saW5lIHVzaW5nIGBgLW8gZmF1bHRoYW5kbGVyX3RpbWVvdXQ9WGBgLgogCiAKIENyZWF0
aW5nIEpVbml0WE1MIGZvcm1hdCBmaWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUbyBjcmVhdGUgcmVzdWx0IGZpbGVzIHdoaWNoIGNh
biBiZSByZWFkIGJ5IEplbmtpbnNfIG9yIG90aGVyIENvbnRpbnVvdXMKLWludGVncmF0aW9uIHNl
cnZlcnMsIHVzZSB0aGlzIGludm9jYXRpb246OgoraW50ZWdyYXRpb24gc2VydmVycywgdXNlIHRo
aXMgaW52b2NhdGlvbjoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLWp1
bml0eG1sPXBhdGgKIAogdG8gY3JlYXRlIGFuIFhNTCBmaWxlIGF0IGBgcGF0aGBgLgogCi0uLiB2
ZXJzaW9uYWRkZWQ6OiAzLjEKKwogCiBUbyBzZXQgdGhlIG5hbWUgb2YgdGhlIHJvb3QgdGVzdCBz
dWl0ZSB4bWwgaXRlbSwgeW91IGNhbiBjb25maWd1cmUgdGhlIGBganVuaXRfc3VpdGVfbmFtZWBg
IG9wdGlvbiBpbiB5b3VyIGNvbmZpZyBmaWxlOgogCkBAIC0yMzQsMTggKzQ5MSwyNSBAQCBUbyBz
ZXQgdGhlIG5hbWUgb2YgdGhlIHJvb3QgdGVzdCBzdWl0ZSB4bWwgaXRlbSwgeW91IGNhbiBjb25m
aWd1cmUgdGhlIGBganVuaXRfcwogICAgIFtweXRlc3RdCiAgICAganVuaXRfc3VpdGVfbmFtZSA9
IG15X3N1aXRlCiAKKy4uIHZlcnNpb25hZGRlZDo6IDQuMAorCitKVW5pdCBYTUwgc3BlY2lmaWNh
dGlvbiBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IGBgInRpbWUiYGAgYXR0cmlidXRlCitzaG91bGQg
cmVwb3J0IHRvdGFsIHRlc3QgZXhlY3V0aW9uIHRpbWVzLCBpbmNsdWRpbmcgc2V0dXAgYW5kIHRl
YXJkb3duCisoYDEgPGh0dHA6Ly93aW5keXJvYWQuY29tLmF1L2RsL09wZW4lMjBTb3VyY2UvSlVu
aXQueHNkPmBfLCBgMgorPGh0dHBzOi8vd3d3LmlibS5jb20vc3VwcG9ydC9rbm93bGVkZ2VjZW50
ZXIvZW4vU1NRMlIyXzE0LjEuMC9jb20uaWJtLnJzYXIuYW5hbHlzaXMuY29kZXJldmlldy5jb2Jv
bC5kb2MvdG9waWNzL2NhY191c2VyZXN1bHRzX2p1bml0Lmh0bWw+YF8pLgorSXQgaXMgdGhlIGRl
ZmF1bHQgcHl0ZXN0IGJlaGF2aW9yLiBUbyByZXBvcnQganVzdCBjYWxsIGR1cmF0aW9ucworaW5z
dGVhZCwgY29uZmlndXJlIHRoZSBgYGp1bml0X2R1cmF0aW9uX3JlcG9ydGBgIG9wdGlvbiBsaWtl
IHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBpbmkKKworICAgIFtweXRlc3RdCisgICAganVuaXRf
ZHVyYXRpb25fcmVwb3J0ID0gY2FsbAorCiAuLiBfcmVjb3JkX3Byb3BlcnR5IGV4YW1wbGU6CiAK
IHJlY29yZF9wcm9wZXJ0eQogXl5eXl5eXl5eXl5eXl5eCiAKLS4uIHZlcnNpb25hZGRlZDo6IDIu
OAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLQotICAgRml4dHVyZSByZW5hbWVkIGZyb20gYGBy
ZWNvcmRfeG1sX3Byb3BlcnR5YGAgdG8gYGByZWNvcmRfcHJvcGVydHlgYCBhcyB1c2VyCi0gICBw
cm9wZXJ0aWVzIGFyZSBub3cgYXZhaWxhYmxlIHRvIGFsbCByZXBvcnRlcnMuCi0gICBgYHJlY29y
ZF94bWxfcHJvcGVydHlgYCBpcyBub3cgZGVwcmVjYXRlZC4KLQogSWYgeW91IHdhbnQgdG8gbG9n
IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIGEgdGVzdCwgeW91IGNhbiB1c2UgdGhlCiBgYHJl
Y29yZF9wcm9wZXJ0eWBgIGZpeHR1cmU6CiAKQEAgLTMwMywxNSArNTY3LDEzIEBAIFdpbGwgcmVz
dWx0IGluOgogCiAuLiB3YXJuaW5nOjoKIAotICAgIGBgcmVjb3JkX3Byb3BlcnR5YGAgaXMgYW4g
ZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLQotICAg
IEFsc28gcGxlYXNlIG5vdGUgdGhhdCB1c2luZyB0aGlzIGZlYXR1cmUgd2lsbCBicmVhayBhbnkg
c2NoZW1hIHZlcmlmaWNhdGlvbi4KKyAgICBQbGVhc2Ugbm90ZSB0aGF0IHVzaW5nIHRoaXMgZmVh
dHVyZSB3aWxsIGJyZWFrIHNjaGVtYSB2ZXJpZmljYXRpb25zIGZvciB0aGUgbGF0ZXN0IEpVbml0
WE1MIHNjaGVtYS4KICAgICBUaGlzIG1pZ2h0IGJlIGEgcHJvYmxlbSB3aGVuIHVzZWQgd2l0aCBz
b21lIENJIHNlcnZlcnMuCiAKIHJlY29yZF94bWxfYXR0cmlidXRlCiBeXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKwogCiBUbyBhZGQgYW4g
YWRkaXRpb25hbCB4bWwgYXR0cmlidXRlIHRvIGEgdGVzdGNhc2UgZWxlbWVudCwgeW91IGNhbiB1
c2UKIGBgcmVjb3JkX3htbF9hdHRyaWJ1dGVgYCBmaXh0dXJlLiBUaGlzIGNhbiBhbHNvIGJlIHVz
ZWQgdG8gb3ZlcnJpZGUgZXhpc3RpbmcgdmFsdWVzOgpAQCAtMzY4LDQzICs2MzAsNDUgQEAgSW5z
dGVhZCwgdGhpcyB3aWxsIGFkZCBhbiBhdHRyaWJ1dGUgYGBhc3NlcnRpb25zPSJSRVEtMTIzNCJg
YCBpbnNpZGUgdGhlIGdlbmVyYXQKICAgICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICAg
ICAgIDwveHM6ZWxlbWVudD4KIAotTG9nWE1MOiBhZGRfZ2xvYmFsX3Byb3BlcnR5Ci1eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorLi4gd2FybmluZzo6CiAKLS4uIHZlcnNpb25hZGRl
ZDo6IDMuMAorICAgIFBsZWFzZSBub3RlIHRoYXQgdXNpbmcgdGhpcyBmZWF0dXJlIHdpbGwgYnJl
YWsgc2NoZW1hIHZlcmlmaWNhdGlvbnMgZm9yIHRoZSBsYXRlc3QgSlVuaXRYTUwgc2NoZW1hLgor
ICAgIFRoaXMgbWlnaHQgYmUgYSBwcm9ibGVtIHdoZW4gdXNlZCB3aXRoIHNvbWUgQ0kgc2VydmVy
cy4KIAotSWYgeW91IHdhbnQgdG8gYWRkIGEgcHJvcGVydGllcyBub2RlIGluIHRoZSB0ZXN0c3Vp
dGUgbGV2ZWwsIHdoaWNoIG1heSBjb250YWlucyBwcm9wZXJ0aWVzIHRoYXQgYXJlIHJlbGV2YW50
Ci10byBhbGwgdGVzdGNhc2VzIHlvdSBjYW4gdXNlIGBgTG9nWE1MLmFkZF9nbG9iYWxfcHJvcGVy
dGllc2BgCisuLiBfcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSBleGFtcGxlOgogCi0uLiBjb2Rl
LWJsb2NrOjogcHl0aG9uCityZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5CiteXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eCiAKLSAgICBpbXBvcnQgcHl0ZXN0CisuLiB2ZXJzaW9uYWRkZWQ6OiA0LjUK
IAorSWYgeW91IHdhbnQgdG8gYWRkIGEgcHJvcGVydGllcyBub2RlIGF0IHRoZSB0ZXN0LXN1aXRl
IGxldmVsLCB3aGljaCBtYXkgY29udGFpbnMgcHJvcGVydGllcwordGhhdCBhcmUgcmVsZXZhbnQg
dG8gYWxsIHRlc3RzLCB5b3UgY2FuIHVzZSB0aGUgYGByZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5
YGAgc2Vzc2lvbi1zY29wZWQgZml4dHVyZToKIAotICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0i
c2Vzc2lvbiIpCi0gICAgZGVmIGxvZ19nbG9iYWxfZW52X2ZhY3RzKGYpOgorVGhlIGBgcmVjb3Jk
X3Rlc3RzdWl0ZV9wcm9wZXJ0eWBgIHNlc3Npb24tc2NvcGVkIGZpeHR1cmUgY2FuIGJlIHVzZWQg
dG8gYWRkIHByb3BlcnRpZXMgcmVsZXZhbnQKK3RvIGFsbCB0ZXN0cy4KIAotICAgICAgICBpZiBw
eXRlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuaGFzcGx1Z2luKCJqdW5pdHhtbCIpOgotICAgICAg
ICAgICAgbXlfanVuaXQgPSBnZXRhdHRyKHB5dGVzdC5jb25maWcsICJfeG1sIiwgTm9uZSkKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KIAotICAgICAgICBteV9qdW5pdC5hZGRfZ2xvYmFsX3Byb3Bl
cnR5KCJBUkNIIiwgIlBQQyIpCi0gICAgICAgIG15X2p1bml0LmFkZF9nbG9iYWxfcHJvcGVydHko
IlNUT1JBR0VfVFlQRSIsICJDRVBIIikKKyAgICBpbXBvcnQgcHl0ZXN0CiAKIAotICAgIEBweXRl
c3QubWFyay51c2VmaXh0dXJlcyhsb2dfZ2xvYmFsX2Vudl9mYWN0cy5fX25hbWVfXykKLSAgICBk
ZWYgc3RhcnRfYW5kX3ByZXBhcmVfZW52KCk6Ci0gICAgICAgIHBhc3MKKyAgICBAcHl0ZXN0LmZp
eHR1cmUoc2NvcGU9InNlc3Npb24iLCBhdXRvdXNlPVRydWUpCisgICAgZGVmIGxvZ19nbG9iYWxf
ZW52X2ZhY3RzKHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkpOgorICAgICAgICByZWNvcmRfdGVz
dHN1aXRlX3Byb3BlcnR5KCJBUkNIIiwgIlBQQyIpCisgICAgICAgIHJlY29yZF90ZXN0c3VpdGVf
cHJvcGVydHkoIlNUT1JBR0VfVFlQRSIsICJDRVBIIikKIAogCi0gICAgY2xhc3MgVGVzdE1lKG9i
amVjdCk6CisgICAgY2xhc3MgVGVzdE1lOgogICAgICAgICBkZWYgdGVzdF9mb28oc2VsZik6CiAg
ICAgICAgICAgICBhc3NlcnQgVHJ1ZQogCi1UaGlzIHdpbGwgYWRkIGEgcHJvcGVydHkgbm9kZSBi
ZWxvdyB0aGUgdGVzdHN1aXRlIG5vZGUgdG8gdGhlIGdlbmVyYXRlZCB4bWw6CitUaGUgZml4dHVy
ZSBpcyBhIGNhbGxhYmxlIHdoaWNoIHJlY2VpdmVzIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAgb2Yg
YSBgYDxwcm9wZXJ0eT5gYCB0YWcKK2FkZGVkIGF0IHRoZSB0ZXN0LXN1aXRlIGxldmVsIG9mIHRo
ZSBnZW5lcmF0ZWQgeG1sOgogCiAuLiBjb2RlLWJsb2NrOjogeG1sCiAKLSAgICA8dGVzdHN1aXRl
IGVycm9ycz0iMCIgZmFpbHVyZXM9IjAiIG5hbWU9InB5dGVzdCIgc2tpcHM9IjAiIHRlc3RzPSIx
IiB0aW1lPSIwLjAwNiI+CisgICAgPHRlc3RzdWl0ZSBlcnJvcnM9IjAiIGZhaWx1cmVzPSIwIiBu
YW1lPSJweXRlc3QiIHNraXBwZWQ9IjAiIHRlc3RzPSIxIiB0aW1lPSIwLjAwNiI+CiAgICAgICA8
cHJvcGVydGllcz4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkFSQ0giIHZhbHVlPSJQUEMiLz4K
ICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlNUT1JBR0VfVFlQRSIgdmFsdWU9IkNFUEgiLz4KQEAg
LTQxMiw0MCArNjc2LDQ0IEBAIFRoaXMgd2lsbCBhZGQgYSBwcm9wZXJ0eSBub2RlIGJlbG93IHRo
ZSB0ZXN0c3VpdGUgbm9kZSB0byB0aGUgZ2VuZXJhdGVkIHhtbDoKICAgICAgIDx0ZXN0Y2FzZSBj
bGFzc25hbWU9InRlc3RfbWUuVGVzdE1lIiBmaWxlPSJ0ZXN0X21lLnB5IiBsaW5lPSIxNiIgbmFt
ZT0idGVzdF9mb28iIHRpbWU9IjAuMDAwMjQzNjYzNzg3ODQyIi8+CiAgICAgPC90ZXN0c3VpdGU+
CiAKLS4uIHdhcm5pbmc6OgorYGBuYW1lYGAgbXVzdCBiZSBhIHN0cmluZywgYGB2YWx1ZWBgIHdp
bGwgYmUgY29udmVydGVkIHRvIGEgc3RyaW5nIGFuZCBwcm9wZXJseSB4bWwtZXNjYXBlZC4KKwor
VGhlIGdlbmVyYXRlZCBYTUwgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBsYXRlc3QgYGB4dW5pdGBg
IHN0YW5kYXJkLCBjb250cmFyeSB0byBgcmVjb3JkX3Byb3BlcnR5YF8KK2FuZCBgcmVjb3JkX3ht
bF9hdHRyaWJ1dGVgXy4KIAotICAgIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUsIGFu
ZCBpdHMgaW50ZXJmYWNlIG1pZ2h0IGJlIHJlcGxhY2VkCi0gICAgYnkgc29tZXRoaW5nIG1vcmUg
cG93ZXJmdWwgYW5kIGdlbmVyYWwgaW4gZnV0dXJlIHZlcnNpb25zLiBUaGUKLSAgICBmdW5jdGlv
bmFsaXR5IHBlci1zZSB3aWxsIGJlIGtlcHQuCiAKIENyZWF0aW5nIHJlc3VsdGxvZyBmb3JtYXQg
ZmlsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotLi4gZGVwcmVjYXRlZDo6IDMuMAotCi0gICAgVGhpcyBvcHRpb24gaXMgcmFyZWx5IHVz
ZWQgYW5kIGlzIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiA0LjAuCi0KLSAgICBBbiBhbHRlcm5h
dGl2ZSBmb3IgdXNlcnMgd2hpY2ggc3RpbGwgbmVlZCBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMg
dG8gdXNlIHRoZQotICAgIGBweXRlc3QtdGFwIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHl0
ZXN0LXRhcC8+YF8gcGx1Z2luIHdoaWNoIHByb3ZpZGVzCi0gICAgYSBzdHJlYW0gb2YgdGVzdCBk
YXRhLgogCi0gICAgSWYgeW91IGhhdmUgYW55IGNvbmNlcm5zLCBwbGVhc2UgZG9uJ3QgaGVzaXRh
dGUgdG8KLSAgICBgb3BlbiBhbiBpc3N1ZSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0L2lzc3Vlcz5gXy4KK1RvIGNyZWF0ZSBwbGFpbi10ZXh0IG1hY2hpbmUtcmVhZGFibGUg
cmVzdWx0IGZpbGVzIHlvdSBjYW4gaXNzdWU6CiAKLVRvIGNyZWF0ZSBwbGFpbi10ZXh0IG1hY2hp
bmUtcmVhZGFibGUgcmVzdWx0IGZpbGVzIHlvdSBjYW4gaXNzdWU6OgorLi4gY29kZS1ibG9jazo6
IGJhc2gKIAogICAgIHB5dGVzdCAtLXJlc3VsdGxvZz1wYXRoCiAKIGFuZCBsb29rIGF0IHRoZSBj
b250ZW50IGF0IHRoZSBgYHBhdGhgYCBsb2NhdGlvbi4gIFN1Y2ggZmlsZXMgYXJlIHVzZWQgZS5n
LgogYnkgdGhlIGBQeVB5LXRlc3RgXyB3ZWIgcGFnZSB0byBzaG93IHRlc3QgcmVzdWx0cyBvdmVy
IHNldmVyYWwgcmV2aXNpb25zLgogCisuLiB3YXJuaW5nOjoKKworICAgIFRoaXMgb3B0aW9uIGlz
IHJhcmVseSB1c2VkIGFuZCBpcyBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gcHl0ZXN0IDYuMC4K
KworICAgIElmIHlvdSB1c2UgdGhpcyBvcHRpb24sIGNvbnNpZGVyIHVzaW5nIHRoZSBuZXcgYHB5
dGVzdC1yZXBvcnRsb2cgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1yZXBv
cnRsb2c+YF9fIHBsdWdpbiBpbnN0ZWFkLgorCisgICAgU2VlIGB0aGUgZGVwcmVjYXRpb24gZG9j
cyA8aHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI3Jl
c3VsdC1sb2ctcmVzdWx0LWxvZz5gX18KKyAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCiAu
LiBfYFB5UHktdGVzdGA6IGh0dHA6Ly9idWlsZGJvdC5weXB5Lm9yZy9zdW1tYXJ5CiAKIAogU2Vu
ZGluZyB0ZXN0IHJlcG9ydCB0byBvbmxpbmUgcGFzdGViaW4gc2VydmljZQogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotKipDcmVhdGluZyBh
IFVSTCBmb3IgZWFjaCB0ZXN0IGZhaWx1cmUqKjo6CisqKkNyZWF0aW5nIGEgVVJMIGZvciBlYWNo
IHRlc3QgZmFpbHVyZSoqOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAogCiAgICAgcHl0ZXN0IC0t
cGFzdGViaW49ZmFpbGVkCiAKQEAgLTQ1MywxMiArNzIxLDM1IEBAIFRoaXMgd2lsbCBzdWJtaXQg
dGVzdCBydW4gaW5mb3JtYXRpb24gdG8gYSByZW1vdGUgUGFzdGUgc2VydmljZSBhbmQKIHByb3Zp
ZGUgYSBVUkwgZm9yIGVhY2ggZmFpbHVyZS4gIFlvdSBtYXkgc2VsZWN0IHRlc3RzIGFzIHVzdWFs
IG9yIGFkZAogZm9yIGV4YW1wbGUgYGAteGBgIGlmIHlvdSBvbmx5IHdhbnQgdG8gc2VuZCBvbmUg
cGFydGljdWxhciBmYWlsdXJlLgogCi0qKkNyZWF0aW5nIGEgVVJMIGZvciBhIHdob2xlIHRlc3Qg
c2Vzc2lvbiBsb2cqKjo6CisqKkNyZWF0aW5nIGEgVVJMIGZvciBhIHdob2xlIHRlc3Qgc2Vzc2lv
biBsb2cqKjoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtLXBhc3RlYmlu
PWFsbAogCiBDdXJyZW50bHkgb25seSBwYXN0aW5nIHRvIHRoZSBodHRwOi8vYnBhc3RlLm5ldCBz
ZXJ2aWNlIGlzIGltcGxlbWVudGVkLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDUuMgorCitJZiBj
cmVhdGluZyB0aGUgVVJMIGZhaWxzIGZvciBhbnkgcmVhc29uLCBhIHdhcm5pbmcgaXMgZ2VuZXJh
dGVkIGluc3RlYWQgb2YgZmFpbGluZyB0aGUKK2VudGlyZSB0ZXN0IHN1aXRlLgorCitFYXJseSBs
b2FkaW5nIHBsdWdpbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3UgY2FuIGVhcmx5LWxv
YWQgcGx1Z2lucyAoaW50ZXJuYWwgYW5kIGV4dGVybmFsKSBleHBsaWNpdGx5IGluIHRoZSBjb21t
YW5kLWxpbmUgd2l0aCB0aGUgYGAtcGBgIG9wdGlvbjo6CisKKyAgICBweXRlc3QgLXAgbXlwbHVn
aW5tb2R1bGUKKworVGhlIG9wdGlvbiByZWNlaXZlcyBhIGBgbmFtZWBgIHBhcmFtZXRlciwgd2hp
Y2ggY2FuIGJlOgorCisqIEEgZnVsbCBtb2R1bGUgZG90dGVkIG5hbWUsIGZvciBleGFtcGxlIGBg
bXlwcm9qZWN0LnBsdWdpbnNgYC4gVGhpcyBkb3R0ZWQgbmFtZSBtdXN0IGJlIGltcG9ydGFibGUu
CisqIFRoZSBlbnRyeS1wb2ludCBuYW1lIG9mIGEgcGx1Z2luLiBUaGlzIGlzIHRoZSBuYW1lIHBh
c3NlZCB0byBgYHNldHVwdG9vbHNgYCB3aGVuIHRoZSBwbHVnaW4gaXMKKyAgcmVnaXN0ZXJlZC4g
Rm9yIGV4YW1wbGUgdG8gZWFybHktbG9hZCB0aGUgYHB5dGVzdC1jb3YgPGh0dHBzOi8vcHlwaS5v
cmcvcHJvamVjdC9weXRlc3QtY292Lz5gX18gcGx1Z2luIHlvdSBjYW4gdXNlOjoKKworICAgIHB5
dGVzdCAtcCBweXRlc3RfY292CisKKwogRGlzYWJsaW5nIHBsdWdpbnMKIC0tLS0tLS0tLS0tLS0t
LS0tCiAKQEAgLTQ2Niw3ICs3NTcsOSBAQCBUbyBkaXNhYmxlIGxvYWRpbmcgc3BlY2lmaWMgcGx1
Z2lucyBhdCBpbnZvY2F0aW9uIHRpbWUsIHVzZSB0aGUgYGAtcGBgIG9wdGlvbgogdG9nZXRoZXIg
d2l0aCB0aGUgcHJlZml4IGBgbm86YGAuCiAKIEV4YW1wbGU6IHRvIGRpc2FibGUgbG9hZGluZyB0
aGUgcGx1Z2luIGBgZG9jdGVzdGBgLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IKLWV4ZWN1dGlu
ZyBkb2N0ZXN0IHRlc3RzIGZyb20gdGV4dCBmaWxlcywgaW52b2tlIHB5dGVzdCBsaWtlIHRoaXM6
OgorZXhlY3V0aW5nIGRvY3Rlc3QgdGVzdHMgZnJvbSB0ZXh0IGZpbGVzLCBpbnZva2UgcHl0ZXN0
IGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKIAogICAgIHB5dGVzdCAtcCBubzpk
b2N0ZXN0CiAKQEAgLTQ3NSwzNCArNzY4LDY1IEBAIGV4ZWN1dGluZyBkb2N0ZXN0IHRlc3RzIGZy
b20gdGV4dCBmaWxlcywgaW52b2tlIHB5dGVzdCBsaWtlIHRoaXM6OgogQ2FsbGluZyBweXRlc3Qg
ZnJvbSBQeXRob24gY29kZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKIAotWW91IGNhbiBpbnZva2Ug
YGBweXRlc3RgYCBmcm9tIFB5dGhvbiBjb2RlIGRpcmVjdGx5OjoKKworWW91IGNhbiBpbnZva2Ug
YGBweXRlc3RgYCBmcm9tIFB5dGhvbiBjb2RlIGRpcmVjdGx5OgorCisuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKICAgICBweXRlc3QubWFpbigpCiAKIHRoaXMgYWN0cyBhcyBpZiB5b3Ugd291bGQg
Y2FsbCAicHl0ZXN0IiBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiBJdCB3aWxsIG5vdCByYWlzZSBg
YFN5c3RlbUV4aXRgYCBidXQgcmV0dXJuIHRoZSBleGl0Y29kZSBpbnN0ZWFkLgotWW91IGNhbiBw
YXNzIGluIG9wdGlvbnMgYW5kIGFyZ3VtZW50czo6CitZb3UgY2FuIHBhc3MgaW4gb3B0aW9ucyBh
bmQgYXJndW1lbnRzOgogCi0gICAgcHl0ZXN0Lm1haW4oWycteCcsICdteXRlc3RkaXInXSkKKy4u
IGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIHB5dGVzdC5tYWluKFsiLXgiLCAibXl0ZXN0ZGly
Il0pCiAKLVlvdSBjYW4gc3BlY2lmeSBhZGRpdGlvbmFsIHBsdWdpbnMgdG8gYGBweXRlc3QubWFp
bmBgOjoKK1lvdSBjYW4gc3BlY2lmeSBhZGRpdGlvbmFsIHBsdWdpbnMgdG8gYGBweXRlc3QubWFp
bmBgOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgbXlpbnZv
a2UucHkKICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgY2xhc3MgTXlQbHVnaW4ob2JqZWN0KToKKwor
CisgICAgY2xhc3MgTXlQbHVnaW46CiAgICAgICAgIGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChz
ZWxmKToKICAgICAgICAgICAgIHByaW50KCIqKiogdGVzdCBydW4gcmVwb3J0aW5nIGZpbmlzaGlu
ZyIpCiAKKwogICAgIHB5dGVzdC5tYWluKFsiLXFxIl0sIHBsdWdpbnM9W015UGx1Z2luKCldKQog
CiBSdW5uaW5nIGl0IHdpbGwgc2hvdyB0aGF0IGBgTXlQbHVnaW5gYCB3YXMgYWRkZWQgYW5kIGl0
cwotaG9vayB3YXMgaW52b2tlZDo6Citob29rIHdhcyBpbnZva2VkOgorCisuLiBjb2RlLWJsb2Nr
OjogcHl0ZXN0CiAKICAgICAkIHB5dGhvbiBteWludm9rZS5weQotICAgIC4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsx
MDAlXSoqKiB0ZXN0IHJ1biByZXBvcnRpbmcgZmluaXNoaW5nCisgICAgLkZFc3hYLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEw
MCVdKioqIHRlc3QgcnVuIHJlcG9ydGluZyBmaW5pc2hpbmcKKworICAgID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0gRVJST1JTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKyAgICBfX19fX19fX19fX19fX19fX19fX19fXyBFUlJPUiBhdCBzZXR1cCBvZiB0ZXN0
X2Vycm9yIF9fX19fX19fX19fX19fX19fX19fX19fCiAKKyAgICAgICAgQHB5dGVzdC5maXh0dXJl
CisgICAgICAgIGRlZiBlcnJvcl9maXh0dXJlKCk6CisgICAgPiAgICAgICBhc3NlcnQgMAorICAg
IEUgICAgICAgYXNzZXJ0IDAKKworICAgIHRlc3RfZXhhbXBsZS5weTo2OiBBc3NlcnRpb25FcnJv
cgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBGQUlMVVJFUyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXyB0ZXN0X2ZhaWwgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKyAg
ICAgICAgZGVmIHRlc3RfZmFpbCgpOgorICAgID4gICAgICAgYXNzZXJ0IDAKKyAgICBFICAgICAg
IGFzc2VydCAwCisKKyAgICB0ZXN0X2V4YW1wbGUucHk6MTQ6IEFzc2VydGlvbkVycm9yCisgICAg
PT09PT09PT09PT09PT09PT09PT09PT09PSBzaG9ydCB0ZXN0IHN1bW1hcnkgaW5mbyA9PT09PT09
PT09PT09PT09PT09PT09PT09PQorICAgIEZBSUxFRCB0ZXN0X2V4YW1wbGUucHk6OnRlc3RfZmFp
bCAtIGFzc2VydCAwCisgICAgRVJST1IgdGVzdF9leGFtcGxlLnB5Ojp0ZXN0X2Vycm9yIC0gYXNz
ZXJ0IDAKIAogLi4gbm90ZTo6CiAKQEAgLTUxMyw1ICs4MzcsNCBAQCBob29rIHdhcyBpbnZva2Vk
OjoKICAgICBtdWx0aXBsZSBjYWxscyB0byBgYHB5dGVzdC5tYWluKClgYCBmcm9tIHRoZSBzYW1l
IHByb2Nlc3MgKGluIG9yZGVyIHRvIHJlLXJ1bgogICAgIHRlc3RzLCBmb3IgZXhhbXBsZSkgaXMg
bm90IHJlY29tbWVuZGVkLgogCi0KLS4uIGluY2x1ZGU6OiBsaW5rcy5pbmMKKy4uIF9qZW5raW5z
OiBodHRwOi8vamVua2lucy1jaS5vcmcvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZjFmNTdhNDg3Zi4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDY2
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9NYWtlZmlsZQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hZG9wdC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYXNzZXJ0LnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9iYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vYmFzaC1jb21wbGV0aW9uLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9idWlsdGlu
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYWNoZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
Y2FwdHVyZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY2hhbmdlbG9nLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbmZ0ZXN0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2NvbnRhY3QucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbnRlbnRz
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jb250cmlidXRpbmcucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2N1c3RvbWl6ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZGV2ZWxvcG1lbnRfZ3Vp
ZGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2RvY3Rlc3QucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4aXN0aW5ndGVzdHN1aXRlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9mYXEucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2ZpeHR1cmUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Z1bmNh
cmdfY29tcGFyZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZnVuY2FyZ3MucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2dldHRpbmctc3RhcnRlZC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZ29v
ZHByYWN0aWNlcy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaGlzdG9yaWNhbC1ub3Rlcy5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vaW5kZXgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2xpY2Vu
c2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2xpbmtzLmluYwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9sb2dnaW5nLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9tYXJrLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9tb25rZXlwYXRjaC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbmFtaW5nMjAucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL25vc2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3BhcmFt
ZXRyaXplLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9wbHVnaW5zLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9wcm9qZWN0cy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHl0ZXN0LmluaQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9weXRob25wYXRoLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZWN3
YXJuLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9yZWZlcmVuY2UucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3JlcXVpcmVtZW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vc2tpcHBpbmcucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RhbGtzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90bXBk
aXIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VuaXR0ZXN0LnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi91c2FnZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vd2FybmluZ3MucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3dyaXRpbmdfcGx1Z2lucy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4veHVu
aXRfc2V0dXAucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3lpZWxkZml4dHVyZS5yc3QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi93YXJuaW5ncy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vd2FybmluZ3MucnN0CmluZGV4IGRmOTNhMDJiNTQwYS4uNzIzMmI2NzZkMjQ5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vd2FybmluZ3MucnN0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi93YXJuaW5ncy5yc3QKQEAgLTMsNDMgKzMsNTAgQEAKIFdhcm5pbmdzIENhcHR1cmUKID09
PT09PT09PT09PT09PT0KIAotLi4gdmVyc2lvbmFkZGVkOjogMy4xCisKIAogU3RhcnRpbmcgZnJv
bSB2ZXJzaW9uIGBgMy4xYGAsIHB5dGVzdCBub3cgYXV0b21hdGljYWxseSBjYXRjaGVzIHdhcm5p
bmdzIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbgotYW5kIGRpc3BsYXlzIHRoZW0gYXQgdGhlIGVuZCBv
ZiB0aGUgc2Vzc2lvbjo6CithbmQgZGlzcGxheXMgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSBzZXNz
aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICAjIGNvbnRlbnQgb2YgdGVzdF9z
aG93X3dhcm5pbmdzLnB5CiAgICAgaW1wb3J0IHdhcm5pbmdzCiAKKwogICAgIGRlZiBhcGlfdjEo
KToKICAgICAgICAgd2FybmluZ3Mud2FybihVc2VyV2FybmluZygiYXBpIHYxLCBzaG91bGQgdXNl
IGZ1bmN0aW9ucyBmcm9tIHYyIikpCiAgICAgICAgIHJldHVybiAxCiAKKwogICAgIGRlZiB0ZXN0
X29uZSgpOgogICAgICAgICBhc3NlcnQgYXBpX3YxKCkgPT0gMQogCi1SdW5uaW5nIHB5dGVzdCBu
b3cgcHJvZHVjZXMgdGhpcyBvdXRwdXQ6OgorUnVubmluZyBweXRlc3Qgbm93IHByb2R1Y2VzIHRo
aXMgb3V0cHV0OgorCisuLiBjb2RlLWJsb2NrOjogcHl0ZXN0CiAKICAgICAkIHB5dGVzdCB0ZXN0
X3Nob3dfd2FybmluZ3MucHkKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gdGVzdCBz
ZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcGxhdGZvcm0g
bGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtMy54LnksIHB5LTEueC55LCBwbHVnZ3ktMC54
LnkKLSAgICByb290ZGlyOiAkUkVHRU5ET0NfVE1QRElSLCBpbmlmaWxlOgorICAgIHBsYXRmb3Jt
IGxpbnV4IC0tIFB5dGhvbiAzLngueSwgcHl0ZXN0LTYueC55LCBweS0xLngueSwgcGx1Z2d5LTAu
eC55CisgICAgY2FjaGVkaXI6ICRQWVRIT05fUFJFRklYLy5weXRlc3RfY2FjaGUKKyAgICByb290
ZGlyOiAkUkVHRU5ET0NfVE1QRElSCiAgICAgY29sbGVjdGVkIDEgaXRlbQogCiAgICAgdGVzdF9z
aG93X3dhcm5pbmdzLnB5IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWzEwMCVdCiAKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSB3YXJuaW5n
cyBzdW1tYXJ5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgdGVzdF9zaG93X3dh
cm5pbmdzLnB5Ojp0ZXN0X29uZQotICAgICAgJFJFR0VORE9DX1RNUERJUi90ZXN0X3Nob3dfd2Fy
bmluZ3MucHk6NDogVXNlcldhcm5pbmc6IGFwaSB2MSwgc2hvdWxkIHVzZSBmdW5jdGlvbnMgZnJv
bSB2MgorICAgICAgJFJFR0VORE9DX1RNUERJUi90ZXN0X3Nob3dfd2FybmluZ3MucHk6NTogVXNl
cldhcm5pbmc6IGFwaSB2MSwgc2hvdWxkIHVzZSBmdW5jdGlvbnMgZnJvbSB2MgogICAgICAgICB3
YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKCJhcGkgdjEsIHNob3VsZCB1c2UgZnVuY3Rpb25zIGZy
b20gdjIiKSkKIAotICAgIC0tIERvY3M6IGh0dHA6Ly9kb2MucHl0ZXN0Lm9yZy9lbi9sYXRlc3Qv
d2FybmluZ3MuaHRtbAotICAgID09PT09PT09PT09PT09PT09PT0gMSBwYXNzZWQsIDEgd2Fybmlu
Z3MgaW4gMC4xMiBzZWNvbmRzID09PT09PT09PT09PT09PT09PT0KLQotUHl0ZXN0IGJ5IGRlZmF1
bHQgY2F0Y2hlcyBhbGwgd2FybmluZ3MgZXhjZXB0IGZvciBgYERlcHJlY2F0aW9uV2FybmluZ2Bg
IGFuZCBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYC4KKyAgICAtLSBEb2NzOiBodHRwczov
L2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbAorICAgID09PT09PT09PT09
PT09PT09PT09PT09IDEgcGFzc2VkLCAxIHdhcm5pbmcgaW4gMC4xMnMgPT09PT09PT09PT09PT09
PT09PT09PT0KIAogVGhlIGBgLVdgYCBmbGFnIGNhbiBiZSBwYXNzZWQgdG8gY29udHJvbCB3aGlj
aCB3YXJuaW5ncyB3aWxsIGJlIGRpc3BsYXllZCBvciBldmVuIHR1cm4KLXRoZW0gaW50byBlcnJv
cnM6OgordGhlbSBpbnRvIGVycm9yczoKKworLi4gY29kZS1ibG9jazo6IHB5dGVzdAogCiAgICAg
JCBweXRlc3QgLXEgdGVzdF9zaG93X3dhcm5pbmdzLnB5IC1XIGVycm9yOjpVc2VyV2FybmluZwog
ICAgIEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsxMDAlXQpAQCAtNDksMjYgKzU2LDQyIEBAIHRoZW0gaW50byBlcnJv
cnM6OgogICAgICAgICBkZWYgdGVzdF9vbmUoKToKICAgICA+ICAgICAgIGFzc2VydCBhcGlfdjEo
KSA9PSAxCiAKLSAgICB0ZXN0X3Nob3dfd2FybmluZ3MucHk6ODoKKyAgICB0ZXN0X3Nob3dfd2Fy
bmluZ3MucHk6MTA6CiAgICAgXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfCiAKICAgICAgICAgZGVmIGFwaV92
MSgpOgogICAgID4gICAgICAgd2FybmluZ3Mud2FybihVc2VyV2FybmluZygiYXBpIHYxLCBzaG91
bGQgdXNlIGZ1bmN0aW9ucyBmcm9tIHYyIikpCiAgICAgRSAgICAgICBVc2VyV2FybmluZzogYXBp
IHYxLCBzaG91bGQgdXNlIGZ1bmN0aW9ucyBmcm9tIHYyCiAKLSAgICB0ZXN0X3Nob3dfd2Fybmlu
Z3MucHk6NDogVXNlcldhcm5pbmcKLSAgICAxIGZhaWxlZCBpbiAwLjEyIHNlY29uZHMKKyAgICB0
ZXN0X3Nob3dfd2FybmluZ3MucHk6NTogVXNlcldhcm5pbmcKKyAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID09PT09PT09PT09PT09PT09PT09PT09
PT09CisgICAgRkFJTEVEIHRlc3Rfc2hvd193YXJuaW5ncy5weTo6dGVzdF9vbmUgLSBVc2VyV2Fy
bmluZzogYXBpIHYxLCBzaG91bGQgdXNlIC4uLgorICAgIDEgZmFpbGVkIGluIDAuMTJzCiAKLVRo
ZSBzYW1lIG9wdGlvbiBjYW4gYmUgc2V0IGluIHRoZSBgYHB5dGVzdC5pbmlgYCBmaWxlIHVzaW5n
IHRoZSBgYGZpbHRlcndhcm5pbmdzYGAgaW5pIG9wdGlvbi4KLUZvciBleGFtcGxlLCB0aGUgY29u
ZmlndXJhdGlvbiBiZWxvdyB3aWxsIGlnbm9yZSBhbGwgdXNlciB3YXJuaW5ncywgYnV0IHdpbGwg
dHJhbnNmb3JtCitUaGUgc2FtZSBvcHRpb24gY2FuIGJlIHNldCBpbiB0aGUgYGBweXRlc3QuaW5p
YGAgb3IgYGBweXByb2plY3QudG9tbGBgIGZpbGUgdXNpbmcgdGhlCitgYGZpbHRlcndhcm5pbmdz
YGAgaW5pIG9wdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBjb25maWd1cmF0aW9uIGJlbG93IHdpbGwg
aWdub3JlIGFsbAordXNlciB3YXJuaW5ncyBhbmQgc3BlY2lmaWMgZGVwcmVjYXRpb24gd2Fybmlu
Z3MgbWF0Y2hpbmcgYSByZWdleCwgYnV0IHdpbGwgdHJhbnNmb3JtCiBhbGwgb3RoZXIgd2Fybmlu
Z3MgaW50byBlcnJvcnMuCiAKIC4uIGNvZGUtYmxvY2s6OiBpbmkKIAorICAgICMgcHl0ZXN0Lmlu
aQogICAgIFtweXRlc3RdCiAgICAgZmlsdGVyd2FybmluZ3MgPQogICAgICAgICBlcnJvcgogICAg
ICAgICBpZ25vcmU6OlVzZXJXYXJuaW5nCisgICAgICAgIGlnbm9yZTpmdW5jdGlvbiBoYW1cKFwp
IGlzIGRlcHJlY2F0ZWQ6RGVwcmVjYXRpb25XYXJuaW5nCisKKy4uIGNvZGUtYmxvY2s6OiB0b21s
CisKKyAgICAjIHB5cHJvamVjdC50b21sCisgICAgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXQor
ICAgIGZpbHRlcndhcm5pbmdzID0gWworICAgICAgICAiZXJyb3IiLAorICAgICAgICAiaWdub3Jl
OjpVc2VyV2FybmluZyIsCisgICAgICAgICMgbm90ZSB0aGUgdXNlIG9mIHNpbmdsZSBxdW90ZSBi
ZWxvdyB0byBkZW5vdGUgInJhdyIgc3RyaW5ncyBpbiBUT01MCisgICAgICAgICdpZ25vcmU6ZnVu
Y3Rpb24gaGFtXChcKSBpcyBkZXByZWNhdGVkOkRlcHJlY2F0aW9uV2FybmluZycsCisgICAgXQog
CiAKIFdoZW4gYSB3YXJuaW5nIG1hdGNoZXMgbW9yZSB0aGFuIG9uZSBvcHRpb24gaW4gdGhlIGxp
c3QsIHRoZSBhY3Rpb24gZm9yIHRoZSBsYXN0IG1hdGNoaW5nIG9wdGlvbgpAQCAtNzgsMTMgKzEw
MSwxMiBAQCBCb3RoIGBgLVdgYCBjb21tYW5kLWxpbmUgb3B0aW9uIGFuZCBgYGZpbHRlcndhcm5p
bmdzYGAgaW5pIG9wdGlvbiBhcmUgYmFzZWQgb24gUAogYC1XIG9wdGlvbmBfIGFuZCBgd2Fybmlu
Z3Muc2ltcGxlZmlsdGVyYF8sIHNvIHBsZWFzZSByZWZlciB0byB0aG9zZSBzZWN0aW9ucyBpbiB0
aGUgUHl0aG9uCiBkb2N1bWVudGF0aW9uIGZvciBvdGhlciBleGFtcGxlcyBhbmQgYWR2YW5jZWQg
dXNhZ2UuCiAKLQogLi4gX2BmaWx0ZXJ3YXJuaW5nc2A6CiAKIGBgQHB5dGVzdC5tYXJrLmZpbHRl
cndhcm5pbmdzYGAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gdmVyc2lv
bmFkZGVkOjogMy4yCisKIAogWW91IGNhbiB1c2UgdGhlIGBgQHB5dGVzdC5tYXJrLmZpbHRlcndh
cm5pbmdzYGAgdG8gYWRkIHdhcm5pbmcgZmlsdGVycyB0byBzcGVjaWZpYyB0ZXN0IGl0ZW1zLAog
YWxsb3dpbmcgeW91IHRvIGhhdmUgZmluZXIgY29udHJvbCBvZiB3aGljaCB3YXJuaW5ncyBzaG91
bGQgYmUgY2FwdHVyZWQgYXQgdGVzdCwgY2xhc3Mgb3IKQEAgLTEwOSw3ICsxMzEsNyBAQCBGaWx0
ZXJzIGFwcGxpZWQgdXNpbmcgYSBtYXJrIHRha2UgcHJlY2VkZW5jZSBvdmVyIGZpbHRlcnMgcGFz
c2VkIG9uIHRoZSBjb21tYW5kCiBieSB0aGUgYGBmaWx0ZXJ3YXJuaW5nc2BgIGluaSBvcHRpb24u
CiAKIFlvdSBtYXkgYXBwbHkgYSBmaWx0ZXIgdG8gYWxsIHRlc3RzIG9mIGEgY2xhc3MgYnkgdXNp
bmcgdGhlIGBgZmlsdGVyd2FybmluZ3NgYCBtYXJrIGFzIGEgY2xhc3MKLWRlY29yYXRvciBvciB0
byBhbGwgdGVzdHMgaW4gYSBtb2R1bGUgYnkgc2V0dGluZyB0aGUgYGBweXRlc3RtYXJrYGAgdmFy
aWFibGU6CitkZWNvcmF0b3Igb3IgdG8gYWxsIHRlc3RzIGluIGEgbW9kdWxlIGJ5IHNldHRpbmcg
dGhlIDpnbG9iYWx2YXI6YHB5dGVzdG1hcmtgIHZhcmlhYmxlOgogCiAuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKQEAgLTExNyw0NCArMTM5LDExOCBAQCBkZWNvcmF0b3Igb3IgdG8gYWxsIHRlc3Rz
IGluIGEgbW9kdWxlIGJ5IHNldHRpbmcgdGhlIGBgcHl0ZXN0bWFya2BgIHZhcmlhYmxlOgogICAg
IHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZXJyb3IiKQogCiAKLS4u
IG5vdGU6OgogCi0gICAgRXhjZXB0IGZvciB0aGVzZSBmZWF0dXJlcywgcHl0ZXN0IGRvZXMgbm90
IGNoYW5nZSB0aGUgcHl0aG9uIHdhcm5pbmcgZmlsdGVyOyBpdCBvbmx5IGNhcHR1cmVzCi0gICAg
YW5kIGRpc3BsYXlzIHRoZSB3YXJuaW5ncyB3aGljaCBhcmUgaXNzdWVkIHdpdGggcmVzcGVjdCB0
byB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgZmlsdGVyLAotICAgIGluY2x1ZGluZyBjaGFuZ2Vz
IHRvIHRoZSBmaWx0ZXIgbWFkZSBieSB0ZXN0IGZ1bmN0aW9ucyBvciBieSB0aGUgc3lzdGVtIHVu
ZGVyIHRlc3QuCisqQ3JlZGl0cyBnbyB0byBGbG9yaWFuIFNjaHVsemUgZm9yIHRoZSByZWZlcmVu
Y2UgaW1wbGVtZW50YXRpb24gaW4gdGhlKiBgcHl0ZXN0LXdhcm5pbmdzYF8KKypwbHVnaW4uKgor
CisuLiBfYC1XIG9wdGlvbmA6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvdXNpbmcvY21kbGlu
ZS5odG1sI2NtZG9wdGlvbi13CisuLiBfd2FybmluZ3Muc2ltcGxlZmlsdGVyOiBodHRwczovL2Rv
Y3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvd2FybmluZ3MuaHRtbCN3YXJuaW5ncy5zaW1wbGVmaWx0
ZXIKKy4uIF9gcHl0ZXN0LXdhcm5pbmdzYDogaHR0cHM6Ly9naXRodWIuY29tL2ZzY2h1bHplL3B5
dGVzdC13YXJuaW5ncwogCi0uLiBub3RlOjoKK0Rpc2FibGluZyB3YXJuaW5ncyBzdW1tYXJ5Cist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbHRob3VnaCBub3QgcmVjb21tZW5kZWQsIHlv
dSBjYW4gdXNlIHRoZSBgYC0tZGlzYWJsZS13YXJuaW5nc2BgIGNvbW1hbmQtbGluZSBvcHRpb24g
dG8gc3VwcHJlc3MgdGhlCit3YXJuaW5nIHN1bW1hcnkgZW50aXJlbHkgZnJvbSB0aGUgdGVzdCBy
dW4gb3V0cHV0LgorCitEaXNhYmxpbmcgd2FybmluZyBjYXB0dXJlIGVudGlyZWx5CistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICBgYERlcHJlY2F0aW9uV2FybmluZ2Bg
IGFuZCBgYFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgYCBhcmUgaGlkZGVuIGJ5IHRoZSBzdGFu
ZGFyZCBsaWJyYXJ5Ci0gICAgYnkgZGVmYXVsdCBzbyB5b3UgaGF2ZSB0byBleHBsaWNpdGx5IGNv
bmZpZ3VyZSB0aGVtIHRvIGJlIGRpc3BsYXllZCBpbiB5b3VyIGBgcHl0ZXN0LmluaWBgOgorVGhp
cyBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGJ1dCBjYW4gYmUgZGlzYWJsZWQgZW50aXJl
bHkgaW4geW91ciBgYHB5dGVzdC5pbmlgYCBmaWxlIHdpdGg6CiAKICAgICAuLiBjb2RlLWJsb2Nr
OjogaW5pCiAKICAgICAgICAgW3B5dGVzdF0KLSAgICAgICAgZmlsdGVyd2FybmluZ3MgPQotICAg
ICAgICAgICAgb25jZTo6RGVwcmVjYXRpb25XYXJuaW5nCi0gICAgICAgICAgICBvbmNlOjpQZW5k
aW5nRGVwcmVjYXRpb25XYXJuaW5nCisgICAgICAgIGFkZG9wdHMgPSAtcCBubzp3YXJuaW5ncwog
CitPciBwYXNzaW5nIGBgLXAgbm86d2FybmluZ3NgYCBpbiB0aGUgY29tbWFuZC1saW5lLiBUaGlz
IG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3VyIHRlc3Qgc3VpdGVzIGhhbmRsZXMgd2FybmluZ3MKK3Vz
aW5nIGFuIGV4dGVybmFsIHN5c3RlbS4KIAotKkNyZWRpdHMgZ28gdG8gRmxvcmlhbiBTY2h1bHpl
IGZvciB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGluIHRoZSogYHB5dGVzdC13YXJuaW5n
c2BfCi0qcGx1Z2luLioKIAotLi4gX2AtVyBvcHRpb25gOiBodHRwczovL2RvY3MucHl0aG9uLm9y
Zy8zL3VzaW5nL2NtZGxpbmUuaHRtbD9oaWdobGlnaHQ9I2NtZG9wdGlvbi1XCi0uLiBfd2Fybmlu
Z3Muc2ltcGxlZmlsdGVyOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvd2Fybmlu
Z3MuaHRtbCN3YXJuaW5ncy5zaW1wbGVmaWx0ZXIKLS4uIF9gcHl0ZXN0LXdhcm5pbmdzYDogaHR0
cHM6Ly9naXRodWIuY29tL2ZzY2h1bHplL3B5dGVzdC13YXJuaW5ncworLi4gX2BkZXByZWNhdGlv
bi13YXJuaW5nc2A6CiAKK0RlcHJlY2F0aW9uV2FybmluZyBhbmQgUGVuZGluZ0RlcHJlY2F0aW9u
V2FybmluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLURpc2FibGluZyB3YXJuaW5nIGNhcHR1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotVGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBidXQgY2FuIGJlIGRpc2FibGVk
IGVudGlyZWx5IGluIHlvdXIgYGBweXRlc3QuaW5pYGAgZmlsZSB3aXRoOgogCi0gICAgLi4gY29k
ZS1ibG9jazo6IGluaQogCi0gICAgICAgIFtweXRlc3RdCi0gICAgICAgIGFkZG9wdHMgPSAtcCBu
bzp3YXJuaW5ncworQnkgZGVmYXVsdCBweXRlc3Qgd2lsbCBkaXNwbGF5IGBgRGVwcmVjYXRpb25X
YXJuaW5nYGAgYW5kIGBgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2BgIHdhcm5pbmdzIGZyb20K
K3VzZXIgY29kZSBhbmQgdGhpcmQtcGFydHkgbGlicmFyaWVzLCBhcyByZWNvbW1lbmRlZCBieSBg
UEVQLTA1NjUgPGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1NjU+YF8uCitU
aGlzIGhlbHBzIHVzZXJzIGtlZXAgdGhlaXIgY29kZSBtb2Rlcm4gYW5kIGF2b2lkIGJyZWFrYWdl
cyB3aGVuIGRlcHJlY2F0ZWQgd2FybmluZ3MgYXJlIGVmZmVjdGl2ZWx5IHJlbW92ZWQuCisKK1Nv
bWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gaGlkZSBzb21lIHNwZWNpZmljIGRlcHJlY2F0aW9uIHdh
cm5pbmdzIHRoYXQgaGFwcGVuIGluIGNvZGUgdGhhdCB5b3UgaGF2ZSBubyBjb250cm9sIG92ZXIK
KyhzdWNoIGFzIHRoaXJkLXBhcnR5IGxpYnJhcmllcyksIGluIHdoaWNoIGNhc2UgeW91IG1pZ2h0
IHVzZSB0aGUgd2FybmluZyBmaWx0ZXJzIG9wdGlvbnMgKGluaSBvciBtYXJrcykgdG8gaWdub3Jl
Cit0aG9zZSB3YXJuaW5ncy4KKworRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBpbmkK
KworICAgIFtweXRlc3RdCisgICAgZmlsdGVyd2FybmluZ3MgPQorICAgICAgICBpZ25vcmU6LipV
Liptb2RlIGlzIGRlcHJlY2F0ZWQ6RGVwcmVjYXRpb25XYXJuaW5nCisKKworVGhpcyB3aWxsIGln
bm9yZSBhbGwgd2FybmluZ3Mgb2YgdHlwZSBgYERlcHJlY2F0aW9uV2FybmluZ2BgIHdoZXJlIHRo
ZSBzdGFydCBvZiB0aGUgbWVzc2FnZSBtYXRjaGVzCit0aGUgcmVndWxhciBleHByZXNzaW9uIGBg
Ii4qVS4qbW9kZSBpcyBkZXByZWNhdGVkImBgLgorCisuLiBub3RlOjoKKworICAgIElmIHdhcm5p
bmdzIGFyZSBjb25maWd1cmVkIGF0IHRoZSBpbnRlcnByZXRlciBsZXZlbCwgdXNpbmcKKyAgICB0
aGUgYFBZVEhPTldBUk5JTkdTIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL3VzaW5nL2NtZGxp
bmUuaHRtbCNlbnZ2YXItUFlUSE9OV0FSTklOR1M+YF8gZW52aXJvbm1lbnQgdmFyaWFibGUgb3Ig
dGhlCisgICAgYGAtV2BgIGNvbW1hbmQtbGluZSBvcHRpb24sIHB5dGVzdCB3aWxsIG5vdCBjb25m
aWd1cmUgYW55IGZpbHRlcnMgYnkgZGVmYXVsdC4KKworICAgIEFsc28gcHl0ZXN0IGRvZXNuJ3Qg
Zm9sbG93IGBgUEVQLTA1MDZgYCBzdWdnZXN0aW9uIG9mIHJlc2V0dGluZyBhbGwgd2FybmluZyBm
aWx0ZXJzIGJlY2F1c2UKKyAgICBpdCBtaWdodCBicmVhayB0ZXN0IHN1aXRlcyB0aGF0IGNvbmZp
Z3VyZSB3YXJuaW5nIGZpbHRlcnMgdGhlbXNlbHZlcworICAgIGJ5IGNhbGxpbmcgYGB3YXJuaW5n
cy5zaW1wbGVmaWx0ZXJgYCAoc2VlIGlzc3VlIGAjMjQzMCA8aHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yNDMwPmBfCisgICAgZm9yIGFuIGV4YW1wbGUgb2YgdGhh
dCkuCiAKLU9yIHBhc3NpbmcgYGAtcCBubzp3YXJuaW5nc2BgIGluIHRoZSBjb21tYW5kLWxpbmUu
CisKKy4uIF9gZW5zdXJpbmcgYSBmdW5jdGlvbiB0cmlnZ2VycyBhIGRlcHJlY2F0aW9uIHdhcm5p
bmdgOgorCisuLiBfZW5zdXJpbmdfZnVuY3Rpb25fdHJpZ2dlcnM6CisKK0Vuc3VyaW5nIGNvZGUg
dHJpZ2dlcnMgYSBkZXByZWNhdGlvbiB3YXJuaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3UgY2FuIGFsc28gdXNlIDpmdW5jOmBweXRlc3QuZGVw
cmVjYXRlZF9jYWxsYCBmb3IgY2hlY2tpbmcKK3RoYXQgYSBjZXJ0YWluIGZ1bmN0aW9uIGNhbGwg
dHJpZ2dlcnMgYSBgYERlcHJlY2F0aW9uV2FybmluZ2BgIG9yCitgYFBlbmRpbmdEZXByZWNhdGlv
bldhcm5pbmdgYDoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgaW1wb3J0IHB5dGVz
dAorCisKKyAgICBkZWYgdGVzdF9teWZ1bmN0aW9uX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgd2l0
aCBweXRlc3QuZGVwcmVjYXRlZF9jYWxsKCk6CisgICAgICAgICAgICBteWZ1bmN0aW9uKDE3KQor
CitUaGlzIHRlc3Qgd2lsbCBmYWlsIGlmIGBgbXlmdW5jdGlvbmBgIGRvZXMgbm90IGlzc3VlIGEg
ZGVwcmVjYXRpb24gd2FybmluZword2hlbiBjYWxsZWQgd2l0aCBhIGBgMTdgYCBhcmd1bWVudC4K
KworQnkgZGVmYXVsdCwgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBhbmQgYGBQZW5kaW5nRGVwcmVj
YXRpb25XYXJuaW5nYGAgd2lsbCBub3QgYmUKK2NhdWdodCB3aGVuIHVzaW5nIDpmdW5jOmBweXRl
c3Qud2FybnNgIG9yIDpyZWY6YHJlY3dhcm4gPHJlY3dhcm4+YCBiZWNhdXNlCit0aGUgZGVmYXVs
dCBQeXRob24gd2FybmluZ3MgZmlsdGVycyBoaWRlCit0aGVtLiBJZiB5b3Ugd2lzaCB0byByZWNv
cmQgdGhlbSBpbiB5b3VyIG93biBjb2RlLCB1c2UKK2Bgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdh
bHdheXMnKWBgOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBpbXBvcnQgd2Fybmlu
Z3MKKyAgICBpbXBvcnQgcHl0ZXN0CisKKworICAgIGRlZiB0ZXN0X2RlcHJlY2F0aW9uKHJlY3dh
cm4pOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCisgICAgICAgIG15
ZnVuY3Rpb24oMTcpCisgICAgICAgIGFzc2VydCBsZW4ocmVjd2FybikgPT0gMQorICAgICAgICBh
c3NlcnQgcmVjd2Fybi5wb3AoRGVwcmVjYXRpb25XYXJuaW5nKQorCisKK1RoZSA6cmVmOmByZWN3
YXJuIDxyZWN3YXJuPmAgZml4dHVyZSBhdXRvbWF0aWNhbGx5IGVuc3VyZXMgdG8gcmVzZXQgdGhl
IHdhcm5pbmdzCitmaWx0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCwgc28gbm8gZ2xvYmFsIHN0
YXRlIGlzIGxlYWtlZC4KIAogLi4gX2Bhc3NlcnRpbmcgd2FybmluZ3NgOgogCkBAIC0xNjUsMTYg
KzI2MSwxOSBAQCBPciBwYXNzaW5nIGBgLXAgbm86d2FybmluZ3NgYCBpbiB0aGUgY29tbWFuZC1s
aW5lLgogLi4gX3dhcm5zOgogCiBBc3NlcnRpbmcgd2FybmluZ3Mgd2l0aCB0aGUgd2FybnMgZnVu
Y3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogCi0uLiB2ZXJzaW9u
YWRkZWQ6OiAyLjgKIAogWW91IGNhbiBjaGVjayB0aGF0IGNvZGUgcmFpc2VzIGEgcGFydGljdWxh
ciB3YXJuaW5nIHVzaW5nIGBgcHl0ZXN0Lndhcm5zYGAsCi13aGljaCB3b3JrcyBpbiBhIHNpbWls
YXIgbWFubmVyIHRvIDpyZWY6YHJhaXNlcyA8YXNzZXJ0cmFpc2VzPmA6Ogord2hpY2ggd29ya3Mg
aW4gYSBzaW1pbGFyIG1hbm5lciB0byA6cmVmOmByYWlzZXMgPGFzc2VydHJhaXNlcz5gOgorCisu
LiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBpbXBvcnQgd2FybmluZ3MKICAgICBpbXBvcnQg
cHl0ZXN0CiAKKwogICAgIGRlZiB0ZXN0X3dhcm5pbmcoKToKICAgICAgICAgd2l0aCBweXRlc3Qu
d2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgd2FybmluZ3Mud2FybigibXkgd2Fybmlu
ZyIsIFVzZXJXYXJuaW5nKQpAQCAtMTk0LDE0ICsyOTMsMTggQEAgYXJndW1lbnQgYGBtYXRjaGBg
IHRvIGFzc2VydCB0aGF0IHRoZSBleGNlcHRpb24gbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXg6Ogog
ICAgICAgLi4uCiAgICAgRmFpbGVkOiBESUQgTk9UIFdBUk4uIE5vIHdhcm5pbmdzIG9mIHR5cGUg
Li4uVXNlcldhcm5pbmcuLi4gd2FzIGVtaXR0ZWQuLi4KIAotWW91IGNhbiBhbHNvIGNhbGwgYGBw
eXRlc3Qud2FybnNgYCBvbiBhIGZ1bmN0aW9uIG9yIGNvZGUgc3RyaW5nOjoKK1lvdSBjYW4gYWxz
byBjYWxsIGBgcHl0ZXN0Lndhcm5zYGAgb24gYSBmdW5jdGlvbiBvciBjb2RlIHN0cmluZzoKKwor
Li4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgcHl0ZXN0Lndhcm5zKGV4cGVjdGVkX3dhcm5p
bmcsIGZ1bmMsICphcmdzLCAqKmt3YXJncykKICAgICBweXRlc3Qud2FybnMoZXhwZWN0ZWRfd2Fy
bmluZywgImZ1bmMoKmFyZ3MsICoqa3dhcmdzKSIpCiAKIFRoZSBmdW5jdGlvbiBhbHNvIHJldHVy
bnMgYSBsaXN0IG9mIGFsbCByYWlzZWQgd2FybmluZ3MgKGFzCiBgYHdhcm5pbmdzLldhcm5pbmdN
ZXNzYWdlYGAgb2JqZWN0cyksIHdoaWNoIHlvdSBjYW4gcXVlcnkgZm9yCi1hZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uOjoKK2FkZGl0aW9uYWwgaW5mb3JtYXRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBw
eXRob24KIAogICAgIHdpdGggcHl0ZXN0Lndhcm5zKFJ1bnRpbWVXYXJuaW5nKSBhcyByZWNvcmQ6
CiAgICAgICAgIHdhcm5pbmdzLndhcm4oImFub3RoZXIgd2FybmluZyIsIFJ1bnRpbWVXYXJuaW5n
KQpAQCAtMjIzLDEzICszMjYsMTUgQEAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBleGFtaW5lIHJh
aXNlZCB3YXJuaW5ncyBpbiBkZXRhaWwgdXNpbmcgdGhlCiAuLiBfcmVjd2FybjoKIAogUmVjb3Jk
aW5nIHdhcm5pbmdzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0t
LQogCiBZb3UgY2FuIHJlY29yZCByYWlzZWQgd2FybmluZ3MgZWl0aGVyIHVzaW5nIGBgcHl0ZXN0
Lndhcm5zYGAgb3Igd2l0aAogdGhlIGBgcmVjd2FybmBgIGZpeHR1cmUuCiAKIFRvIHJlY29yZCB3
aXRoIGBgcHl0ZXN0Lndhcm5zYGAgd2l0aG91dCBhc3NlcnRpbmcgYW55dGhpbmcgYWJvdXQgdGhl
IHdhcm5pbmdzLAotcGFzcyBgYE5vbmVgYCBhcyB0aGUgZXhwZWN0ZWQgd2FybmluZyB0eXBlOjoK
K3Bhc3MgYGBOb25lYGAgYXMgdGhlIGV4cGVjdGVkIHdhcm5pbmcgdHlwZToKKworLi4gY29kZS1i
bG9jazo6IHB5dGhvbgogCiAgICAgd2l0aCBweXRlc3Qud2FybnMoTm9uZSkgYXMgcmVjb3JkOgog
ICAgICAgICB3YXJuaW5ncy53YXJuKCJ1c2VyIiwgVXNlcldhcm5pbmcpCkBAIC0yMzksMTAgKzM0
NCwxMyBAQCBwYXNzIGBgTm9uZWBgIGFzIHRoZSBleHBlY3RlZCB3YXJuaW5nIHR5cGU6OgogICAg
IGFzc2VydCBzdHIocmVjb3JkWzBdLm1lc3NhZ2UpID09ICJ1c2VyIgogICAgIGFzc2VydCBzdHIo
cmVjb3JkWzFdLm1lc3NhZ2UpID09ICJydW50aW1lIgogCi1UaGUgYGByZWN3YXJuYGAgZml4dHVy
ZSB3aWxsIHJlY29yZCB3YXJuaW5ncyBmb3IgdGhlIHdob2xlIGZ1bmN0aW9uOjoKK1RoZSBgYHJl
Y3dhcm5gYCBmaXh0dXJlIHdpbGwgcmVjb3JkIHdhcm5pbmdzIGZvciB0aGUgd2hvbGUgZnVuY3Rp
b246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGltcG9ydCB3YXJuaW5ncwogCisK
ICAgICBkZWYgdGVzdF9oZWxsbyhyZWN3YXJuKToKICAgICAgICAgd2FybmluZ3Mud2FybigiaGVs
bG8iLCBVc2VyV2FybmluZykKICAgICAgICAgYXNzZXJ0IGxlbihyZWN3YXJuKSA9PSAxCkBAIC0y
NTksNDAgKzM2Nyw2NCBAQCB3YXJuaW5ncywgb3IgaW5kZXggaW50byBpdCB0byBnZXQgYSBwYXJ0
aWN1bGFyIHJlY29yZGVkIHdhcm5pbmcuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBfcHl0ZXN0Lndh
cm5pbmdzCiAKLUZ1bGwgQVBJOiA6Y2xhc3M6YFdhcm5pbmdzUmVjb3JkZXJgLgorRnVsbCBBUEk6
IDpjbGFzczpgfl9weXRlc3QucmVjd2Fybi5XYXJuaW5nc1JlY29yZGVyYC4KIAotLi4gX2BlbnN1
cmluZyBhIGZ1bmN0aW9uIHRyaWdnZXJzIGEgZGVwcmVjYXRpb24gd2FybmluZ2A6CisuLiBfY3Vz
dG9tX2ZhaWx1cmVfbWVzc2FnZXM6CiAKLS4uIF9lbnN1cmluZ19mdW5jdGlvbl90cmlnZ2VyczoK
K0N1c3RvbSBmYWlsdXJlIG1lc3NhZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FbnN1
cmluZyBhIGZ1bmN0aW9uIHRyaWdnZXJzIGEgZGVwcmVjYXRpb24gd2FybmluZwotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVjb3JkaW5n
IHdhcm5pbmdzIHByb3ZpZGVzIGFuIG9wcG9ydHVuaXR5IHRvIHByb2R1Y2UgY3VzdG9tIHRlc3QK
K2ZhaWx1cmUgbWVzc2FnZXMgZm9yIHdoZW4gbm8gd2FybmluZ3MgYXJlIGlzc3VlZCBvciBvdGhl
ciBjb25kaXRpb25zCithcmUgbWV0LgogCi1Zb3UgY2FuIGFsc28gY2FsbCBhIGdsb2JhbCBoZWxw
ZXIgZm9yIGNoZWNraW5nCi10aGF0IGEgY2VydGFpbiBmdW5jdGlvbiBjYWxsIHRyaWdnZXJzIGEg
YGBEZXByZWNhdGlvbldhcm5pbmdgYCBvcgotYGBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYGA6
OgorLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCi0gICAgaW1wb3J0IHB5dGVzdAorICAgIGRlZiB0
ZXN0KCk6CisgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKFdhcm5pbmcpIGFzIHJlY29yZDoKKyAg
ICAgICAgICAgIGYoKQorICAgICAgICAgICAgaWYgbm90IHJlY29yZDoKKyAgICAgICAgICAgICAg
ICBweXRlc3QuZmFpbCgiRXhwZWN0ZWQgYSB3YXJuaW5nISIpCiAKLSAgICBkZWYgdGVzdF9nbG9i
YWwoKToKLSAgICAgICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChteWZ1bmN0aW9uLCAxNykKK0lm
IG5vIHdhcm5pbmdzIGFyZSBpc3N1ZWQgd2hlbiBjYWxsaW5nIGBgZmBgLCB0aGVuIGBgbm90IHJl
Y29yZGBgIHdpbGwKK2V2YWx1YXRlIHRvIGBgVHJ1ZWBgLiAgWW91IGNhbiB0aGVuIGNhbGwgYGBw
eXRlc3QuZmFpbGBgIHdpdGggYQorY3VzdG9tIGVycm9yIG1lc3NhZ2UuCiAKLUJ5IGRlZmF1bHQs
IGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgYW5kIGBgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2Bg
IHdpbGwgbm90IGJlCi1jYXVnaHQgd2hlbiB1c2luZyBgYHB5dGVzdC53YXJuc2BgIG9yIGBgcmVj
d2FybmBgIGJlY2F1c2UgZGVmYXVsdCBQeXRob24gd2FybmluZ3MgZmlsdGVycyBoaWRlCi10aGVt
LiBJZiB5b3Ugd2lzaCB0byByZWNvcmQgdGhlbSBpbiB5b3VyIG93biBjb2RlLCB1c2UgdGhlCi1j
b21tYW5kIGBgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKWBgOjoKKy4uIF9pbnRlcm5h
bC13YXJuaW5nczoKIAotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIGltcG9ydCBweXRlc3QKK0lu
dGVybmFsIHB5dGVzdCB3YXJuaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICBk
ZWYgdGVzdF9kZXByZWNhdGlvbihyZWN3YXJuKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmls
dGVyKCdhbHdheXMnKQotICAgICAgICB3YXJuaW5ncy53YXJuKCJkZXByZWNhdGVkIiwgRGVwcmVj
YXRpb25XYXJuaW5nKQotICAgICAgICBhc3NlcnQgbGVuKHJlY3dhcm4pID09IDEKLSAgICAgICAg
YXNzZXJ0IHJlY3dhcm4ucG9wKERlcHJlY2F0aW9uV2FybmluZykKK3B5dGVzdCBtYXkgZ2VuZXJh
dGUgaXRzIG93biB3YXJuaW5ncyBpbiBzb21lIHNpdHVhdGlvbnMsIHN1Y2ggYXMgaW1wcm9wZXIg
dXNhZ2Ugb3IgZGVwcmVjYXRlZCBmZWF0dXJlcy4KIAotWW91IGNhbiBhbHNvIHVzZSBpdCBhcyBh
IGNvbnRleHRtYW5hZ2VyOjoKK0ZvciBleGFtcGxlLCBweXRlc3Qgd2lsbCBlbWl0IGEgd2Fybmlu
ZyBpZiBpdCBlbmNvdW50ZXJzIGEgY2xhc3MgdGhhdCBtYXRjaGVzIDpjb25mdmFsOmBweXRob25f
Y2xhc3Nlc2AgYnV0IGFsc28KK2RlZmluZXMgYW4gYGBfX2luaXRfX2BgIGNvbnN0cnVjdG9yLCBh
cyB0aGlzIHByZXZlbnRzIHRoZSBjbGFzcyBmcm9tIGJlaW5nIGluc3RhbnRpYXRlZDoKIAotICAg
IGRlZiB0ZXN0X2dsb2JhbCgpOgotICAgICAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwo
KToKLSAgICAgICAgICAgIG15b2JqZWN0LmRlcHJlY2F0ZWRfbWV0aG9kKCkKKy4uIGNvZGUtYmxv
Y2s6OiBweXRob24KKworICAgICMgY29udGVudCBvZiB0ZXN0X3B5dGVzdF93YXJuaW5ncy5weQor
ICAgIGNsYXNzIFRlc3Q6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAg
IHBhc3MKKworICAgICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgICAgICAgICBhc3NlcnQg
MSA9PSAxCisKKy4uIGNvZGUtYmxvY2s6OiBweXRlc3QKKworICAgICQgcHl0ZXN0IHRlc3RfcHl0
ZXN0X3dhcm5pbmdzLnB5IC1xCisKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSB3
YXJuaW5ncyBzdW1tYXJ5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgdGVzdF9w
eXRlc3Rfd2FybmluZ3MucHk6MQorICAgICAgJFJFR0VORE9DX1RNUERJUi90ZXN0X3B5dGVzdF93
YXJuaW5ncy5weToxOiBQeXRlc3RDb2xsZWN0aW9uV2FybmluZzogY2Fubm90IGNvbGxlY3QgdGVz
dCBjbGFzcyAnVGVzdCcgYmVjYXVzZSBpdCBoYXMgYSBfX2luaXRfXyBjb25zdHJ1Y3RvciAoZnJv
bTogdGVzdF9weXRlc3Rfd2FybmluZ3MucHkpCisgICAgICAgIGNsYXNzIFRlc3Q6CisKKyAgICAt
LSBEb2NzOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbAor
ICAgIDEgd2FybmluZyBpbiAwLjEycworCitUaGVzZSB3YXJuaW5ncyBtaWdodCBiZSBmaWx0ZXJl
ZCB1c2luZyB0aGUgc2FtZSBidWlsdGluIG1lY2hhbmlzbXMgdXNlZCB0byBmaWx0ZXIgb3RoZXIg
dHlwZXMgb2Ygd2FybmluZ3MuCisKK1BsZWFzZSByZWFkIG91ciA6cmVmOmBiYWNrd2FyZHMtY29t
cGF0aWJpbGl0eWAgdG8gbGVhcm4gaG93IHdlIHByb2NlZWQgYWJvdXQgZGVwcmVjYXRpbmcgYW5k
IGV2ZW50dWFsbHkgcmVtb3ZpbmcKK2ZlYXR1cmVzLgorCitUaGUgZnVsbCBsaXN0IG9mIHdhcm5p
bmdzIGlzIGxpc3RlZCBpbiA6cmVmOmB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gPHdhcm5p
bmdzIHJlZj5gLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3dyaXRpbmdfcGx1Z2lu
cy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vd3JpdGluZ19wbHVnaW5zLnJzdAppbmRleCA5NWI4
MTBiY2IzNmYuLjA0OTJiNWZjZjdlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3dy
aXRpbmdfcGx1Z2lucy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3dyaXRpbmdfcGx1Z2lu
cy5yc3QKQEAgLTMzLDI2ICszMywzNCBAQCBQbHVnaW4gZGlzY292ZXJ5IG9yZGVyIGF0IHRvb2wg
c3RhcnR1cAogCiBgYHB5dGVzdGBgIGxvYWRzIHBsdWdpbiBtb2R1bGVzIGF0IHRvb2wgc3RhcnR1
cCBpbiB0aGUgZm9sbG93aW5nIHdheToKIAotKiBieSBsb2FkaW5nIGFsbCBidWlsdGluIHBsdWdp
bnMKKzEuIGJ5IHNjYW5uaW5nIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRoZSBgYC1wIG5vOm5hbWVg
YCBvcHRpb24KKyAgIGFuZCAqYmxvY2tpbmcqIHRoYXQgcGx1Z2luIGZyb20gYmVpbmcgbG9hZGVk
IChldmVuIGJ1aWx0aW4gcGx1Z2lucyBjYW4KKyAgIGJlIGJsb2NrZWQgdGhpcyB3YXkpLiBUaGlz
IGhhcHBlbnMgYmVmb3JlIG5vcm1hbCBjb21tYW5kLWxpbmUgcGFyc2luZy4KIAotKiBieSBsb2Fk
aW5nIGFsbCBwbHVnaW5zIHJlZ2lzdGVyZWQgdGhyb3VnaCBgc2V0dXB0b29scyBlbnRyeSBwb2lu
dHNgXy4KKzIuIGJ5IGxvYWRpbmcgYWxsIGJ1aWx0aW4gcGx1Z2lucy4KIAotKiBieSBwcmUtc2Nh
bm5pbmcgdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlIGBgLXAgbmFtZWBgIG9wdGlvbgotICBhbmQg
bG9hZGluZyB0aGUgc3BlY2lmaWVkIHBsdWdpbiBiZWZvcmUgYWN0dWFsIGNvbW1hbmQgbGluZSBw
YXJzaW5nLgorMy4gYnkgc2Nhbm5pbmcgdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlIGBgLXAgbmFt
ZWBgIG9wdGlvbgorICAgYW5kIGxvYWRpbmcgdGhlIHNwZWNpZmllZCBwbHVnaW4uIFRoaXMgaGFw
cGVucyBiZWZvcmUgbm9ybWFsIGNvbW1hbmQtbGluZSBwYXJzaW5nLgogCi0qIGJ5IGxvYWRpbmcg
YWxsIDpmaWxlOmBjb25mdGVzdC5weWAgZmlsZXMgYXMgaW5mZXJyZWQgYnkgdGhlIGNvbW1hbmQg
bGluZQotICBpbnZvY2F0aW9uOgorNC4gYnkgbG9hZGluZyBhbGwgcGx1Z2lucyByZWdpc3RlcmVk
IHRocm91Z2ggYHNldHVwdG9vbHMgZW50cnkgcG9pbnRzYF8uCiAKLSAgLSBpZiBubyB0ZXN0IHBh
dGhzIGFyZSBzcGVjaWZpZWQgdXNlIGN1cnJlbnQgZGlyIGFzIGEgdGVzdCBwYXRoCi0gIC0gaWYg
ZXhpc3RzLCBsb2FkIGBgY29uZnRlc3QucHlgYCBhbmQgYGB0ZXN0Ki9jb25mdGVzdC5weWBgIHJl
bGF0aXZlCi0gICAgdG8gdGhlIGRpcmVjdG9yeSBwYXJ0IG9mIHRoZSBmaXJzdCB0ZXN0IHBhdGgu
Cis1LiBieSBsb2FkaW5nIGFsbCBwbHVnaW5zIHNwZWNpZmllZCB0aHJvdWdoIHRoZSA6ZW52dmFy
OmBQWVRFU1RfUExVR0lOU2AgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKLSAgTm90ZSB0aGF0IHB5
dGVzdCBkb2VzIG5vdCBmaW5kIGBgY29uZnRlc3QucHlgYCBmaWxlcyBpbiBkZWVwZXIgbmVzdGVk
Ci0gIHN1YiBkaXJlY3RvcmllcyBhdCB0b29sIHN0YXJ0dXAuICBJdCBpcyB1c3VhbGx5IGEgZ29v
ZCBpZGVhIHRvIGtlZXAKLSAgeW91ciBgYGNvbmZ0ZXN0LnB5YGAgZmlsZSBpbiB0aGUgdG9wIGxl
dmVsIHRlc3Qgb3IgcHJvamVjdCByb290IGRpcmVjdG9yeS4KKzYuIGJ5IGxvYWRpbmcgYWxsIDpm
aWxlOmBjb25mdGVzdC5weWAgZmlsZXMgYXMgaW5mZXJyZWQgYnkgdGhlIGNvbW1hbmQgbGluZQor
ICAgaW52b2NhdGlvbjoKIAotKiBieSByZWN1cnNpdmVseSBsb2FkaW5nIGFsbCBwbHVnaW5zIHNw
ZWNpZmllZCBieSB0aGUKLSAgYGBweXRlc3RfcGx1Z2luc2BgIHZhcmlhYmxlIGluIGBgY29uZnRl
c3QucHlgYCBmaWxlcworICAgLSBpZiBubyB0ZXN0IHBhdGhzIGFyZSBzcGVjaWZpZWQsIHVzZSB0
aGUgY3VycmVudCBkaXIgYXMgYSB0ZXN0IHBhdGgKKyAgIC0gaWYgZXhpc3RzLCBsb2FkIGBgY29u
ZnRlc3QucHlgYCBhbmQgYGB0ZXN0Ki9jb25mdGVzdC5weWBgIHJlbGF0aXZlCisgICAgIHRvIHRo
ZSBkaXJlY3RvcnkgcGFydCBvZiB0aGUgZmlyc3QgdGVzdCBwYXRoLiBBZnRlciB0aGUgYGBjb25m
dGVzdC5weWBgCisgICAgIGZpbGUgaXMgbG9hZGVkLCBsb2FkIGFsbCBwbHVnaW5zIHNwZWNpZmll
ZCBpbiBpdHMKKyAgICAgOmdsb2JhbHZhcjpgcHl0ZXN0X3BsdWdpbnNgIHZhcmlhYmxlIGlmIHBy
ZXNlbnQuCisKKyAgIE5vdGUgdGhhdCBweXRlc3QgZG9lcyBub3QgZmluZCBgYGNvbmZ0ZXN0LnB5
YGAgZmlsZXMgaW4gZGVlcGVyIG5lc3RlZAorICAgc3ViIGRpcmVjdG9yaWVzIGF0IHRvb2wgc3Rh
cnR1cC4gIEl0IGlzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8ga2VlcAorICAgeW91ciBgYGNvbmZ0
ZXN0LnB5YGAgZmlsZSBpbiB0aGUgdG9wIGxldmVsIHRlc3Qgb3IgcHJvamVjdCByb290IGRpcmVj
dG9yeS4KKworNy4gYnkgcmVjdXJzaXZlbHkgbG9hZGluZyBhbGwgcGx1Z2lucyBzcGVjaWZpZWQg
YnkgdGhlCisgICA6Z2xvYmFsdmFyOmBweXRlc3RfcGx1Z2luc2AgdmFyaWFibGUgaW4gYGBjb25m
dGVzdC5weWBgIGZpbGVzLgogCiAKIC4uIF9gcHl0ZXN0L3BsdWdpbmA6IGh0dHA6Ly9iaXRidWNr
ZXQub3JnL3B5dGVzdC1kZXYvcHl0ZXN0L3NyYy90aXAvcHl0ZXN0L3BsdWdpbi8KQEAgLTczLDcg
KzgxLDcgQEAgc3ViIGRpcmVjdG9yeSBidXQgbm90IGZvciBvdGhlciBkaXJlY3Rvcmllczo6CiAg
ICAgYS9jb25mdGVzdC5weToKICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0p
OgogICAgICAgICAgICAgIyBjYWxsZWQgZm9yIHJ1bm5pbmcgZWFjaCB0ZXN0IGluICdhJyBkaXJl
Y3RvcnkKLSAgICAgICAgICAgIHByaW50ICgic2V0dGluZyB1cCIsIGl0ZW0pCisgICAgICAgICAg
ICBwcmludCgic2V0dGluZyB1cCIsIGl0ZW0pCiAKICAgICBhL3Rlc3Rfc3ViLnB5OgogICAgICAg
ICBkZWYgdGVzdF9zdWIoKToKQEAgLTE2NCw3ICsxNzIsNyBAQCBJZiBhIHBhY2thZ2UgaXMgaW5z
dGFsbGVkIHRoaXMgd2F5LCBgYHB5dGVzdGBgIHdpbGwgbG9hZAogLi4gbm90ZTo6CiAKICAgICBN
YWtlIHN1cmUgdG8gaW5jbHVkZSBgYEZyYW1ld29yayA6OiBQeXRlc3RgYCBpbiB5b3VyIGxpc3Qg
b2YKLSAgICBgUHlQSSBjbGFzc2lmaWVycyA8aHR0cHM6Ly9weXRob24tcGFja2FnaW5nLXVzZXIt
Z3VpZGUucmVhZHRoZWRvY3MuaW8vZGlzdHJpYnV0aW5nLyNjbGFzc2lmaWVycz5gXworICAgIGBQ
eVBJIGNsYXNzaWZpZXJzIDxodHRwczovL3B5cGkub3JnL2NsYXNzaWZpZXJzLz5gXwogICAgIHRv
IG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMgdG8gZmluZCB5b3VyIHBsdWdpbi4KIAogCkBAIC0xNzks
MTEgKzE4NywxMiBAQCBhc3NlcnRpb24gZmFpbHVyZXMuICBUaGlzIGlzIHByb3ZpZGVkIGJ5ICJh
c3NlcnRpb24gcmV3cml0aW5nIiB3aGljaAogbW9kaWZpZXMgdGhlIHBhcnNlZCBBU1QgYmVmb3Jl
IGl0IGdldHMgY29tcGlsZWQgdG8gYnl0ZWNvZGUuICBUaGlzIGlzCiBkb25lIHZpYSBhIDpwZXA6
YDMwMmAgaW1wb3J0IGhvb2sgd2hpY2ggZ2V0cyBpbnN0YWxsZWQgZWFybHkgb24gd2hlbgogYGBw
eXRlc3RgYCBzdGFydHMgdXAgYW5kIHdpbGwgcGVyZm9ybSB0aGlzIHJld3JpdGluZyB3aGVuIG1v
ZHVsZXMgZ2V0Ci1pbXBvcnRlZC4gIEhvd2V2ZXIgc2luY2Ugd2UgZG8gbm90IHdhbnQgdG8gdGVz
dCBkaWZmZXJlbnQgYnl0ZWNvZGUKLXRoZW4geW91IHdpbGwgcnVuIGluIHByb2R1Y3Rpb24gdGhp
cyBob29rIG9ubHkgcmV3cml0ZXMgdGVzdCBtb2R1bGVzCi10aGVtc2VsdmVzIGFzIHdlbGwgYXMg
YW55IG1vZHVsZXMgd2hpY2ggYXJlIHBhcnQgb2YgcGx1Z2lucy4gIEFueQotb3RoZXIgaW1wb3J0
ZWQgbW9kdWxlIHdpbGwgbm90IGJlIHJld3JpdHRlbiBhbmQgbm9ybWFsIGFzc2VydGlvbgotYmVo
YXZpb3VyIHdpbGwgaGFwcGVuLgoraW1wb3J0ZWQuICBIb3dldmVyLCBzaW5jZSB3ZSBkbyBub3Qg
d2FudCB0byB0ZXN0IGRpZmZlcmVudCBieXRlY29kZQorZnJvbSB3aGF0IHlvdSB3aWxsIHJ1biBp
biBwcm9kdWN0aW9uLCB0aGlzIGhvb2sgb25seSByZXdyaXRlcyB0ZXN0IG1vZHVsZXMKK3RoZW1z
ZWx2ZXMgKGFzIGRlZmluZWQgYnkgdGhlIDpjb25mdmFsOmBweXRob25fZmlsZXNgIGNvbmZpZ3Vy
YXRpb24gb3B0aW9uKSwKK2FuZCBhbnkgbW9kdWxlcyB3aGljaCBhcmUgcGFydCBvZiBwbHVnaW5z
LgorQW55IG90aGVyIGltcG9ydGVkIG1vZHVsZSB3aWxsIG5vdCBiZSByZXdyaXR0ZW4gYW5kIG5v
cm1hbCBhc3NlcnRpb24gYmVoYXZpb3VyCit3aWxsIGhhcHBlbi4KIAogSWYgeW91IGhhdmUgYXNz
ZXJ0aW9uIGhlbHBlcnMgaW4gb3RoZXIgbW9kdWxlcyB3aGVyZSB5b3Ugd291bGQgbmVlZAogYXNz
ZXJ0aW9uIHJld3JpdGluZyB0byBiZSBlbmFibGVkIHlvdSBuZWVkIHRvIGFzayBgYHB5dGVzdGBg
CkBAIC0yMjMsMTEgKzIzMiwxMCBAQCBpbXBvcnQgYGBoZWxwZXIucHlgYCBub3JtYWxseS4gIFRo
ZSBjb250ZW50cyBvZgogICAgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlKCJweXRlc3Rf
Zm9vLmhlbHBlciIpCiAKIAotCiBSZXF1aXJpbmcvTG9hZGluZyBwbHVnaW5zIGluIGEgdGVzdCBt
b2R1bGUgb3IgY29uZnRlc3QgZmlsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91IGNhbiByZXF1aXJlIHBsdWdpbnMgaW4g
YSB0ZXN0IG1vZHVsZSBvciBhIGBgY29uZnRlc3QucHlgYCBmaWxlIGxpa2UgdGhpczoKK1lvdSBj
YW4gcmVxdWlyZSBwbHVnaW5zIGluIGEgdGVzdCBtb2R1bGUgb3IgYSBgYGNvbmZ0ZXN0LnB5YGAg
ZmlsZSB1c2luZyA6Z2xvYmFsdmFyOmBweXRlc3RfcGx1Z2luc2A6CiAKIC4uIGNvZGUtYmxvY2s6
OiBweXRob24KIApAQCAtMjQxLDMxICsyNDksMzEgQEAgYXBwbGljYXRpb24gbW9kdWxlczoKIAog
ICAgIHB5dGVzdF9wbHVnaW5zID0gIm15YXBwLnRlc3RzdXBwb3J0Lm15cGx1Z2luIgogCi1gYHB5
dGVzdF9wbHVnaW5zYGAgdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgcmVjdXJzaXZlbHksIHNvIG5v
dGUgdGhhdCBpbiB0aGUgZXhhbXBsZSBhYm92ZQotaWYgYGBteWFwcC50ZXN0c3VwcG9ydC5teXBs
dWdpbmBgIGFsc28gZGVjbGFyZXMgYGBweXRlc3RfcGx1Z2luc2BgLCB0aGUgY29udGVudHMKKzpn
bG9iYWx2YXI6YHB5dGVzdF9wbHVnaW5zYCBhcmUgcHJvY2Vzc2VkIHJlY3Vyc2l2ZWx5LCBzbyBu
b3RlIHRoYXQgaW4gdGhlIGV4YW1wbGUgYWJvdmUKK2lmIGBgbXlhcHAudGVzdHN1cHBvcnQubXlw
bHVnaW5gYCBhbHNvIGRlY2xhcmVzIDpnbG9iYWx2YXI6YHB5dGVzdF9wbHVnaW5zYCwgdGhlIGNv
bnRlbnRzCiBvZiB0aGUgdmFyaWFibGUgd2lsbCBhbHNvIGJlIGxvYWRlZCBhcyBwbHVnaW5zLCBh
bmQgc28gb24uCiAKIC4uIF9gcmVxdWlyaW5nIHBsdWdpbnMgaW4gbm9uLXJvb3QgY29uZnRlc3Rz
YDoKIAogLi4gbm90ZTo6Ci0gICAgUmVxdWlyaW5nIHBsdWdpbnMgdXNpbmcgYSBgYHB5dGVzdF9w
bHVnaW5zYGAgdmFyaWFibGUgaW4gbm9uLXJvb3QKKyAgICBSZXF1aXJpbmcgcGx1Z2lucyB1c2lu
ZyA6Z2xvYmFsdmFyOmBweXRlc3RfcGx1Z2luc2AgdmFyaWFibGUgaW4gbm9uLXJvb3QKICAgICBg
YGNvbmZ0ZXN0LnB5YGAgZmlsZXMgaXMgZGVwcmVjYXRlZC4KIAogICAgIFRoaXMgaXMgaW1wb3J0
YW50IGJlY2F1c2UgYGBjb25mdGVzdC5weWBgIGZpbGVzIGltcGxlbWVudCBwZXItZGlyZWN0b3J5
CiAgICAgaG9vayBpbXBsZW1lbnRhdGlvbnMsIGJ1dCBvbmNlIGEgcGx1Z2luIGlzIGltcG9ydGVk
LCBpdCB3aWxsIGFmZmVjdCB0aGUKICAgICBlbnRpcmUgZGlyZWN0b3J5IHRyZWUuIEluIG9yZGVy
IHRvIGF2b2lkIGNvbmZ1c2lvbiwgZGVmaW5pbmcKLSAgICBgYHB5dGVzdF9wbHVnaW5zYGAgaW4g
YW55IGBgY29uZnRlc3QucHlgYCBmaWxlIHdoaWNoIGlzIG5vdCBsb2NhdGVkIGluIHRoZQorICAg
IDpnbG9iYWx2YXI6YHB5dGVzdF9wbHVnaW5zYCBpbiBhbnkgYGBjb25mdGVzdC5weWBgIGZpbGUg
d2hpY2ggaXMgbm90IGxvY2F0ZWQgaW4gdGhlCiAgICAgdGVzdHMgcm9vdCBkaXJlY3RvcnkgaXMg
ZGVwcmVjYXRlZCwgYW5kIHdpbGwgcmFpc2UgYSB3YXJuaW5nLgogCiBUaGlzIG1lY2hhbmlzbSBt
YWtlcyBpdCBlYXN5IHRvIHNoYXJlIGZpeHR1cmVzIHdpdGhpbiBhcHBsaWNhdGlvbnMgb3IgZXZl
bgogZXh0ZXJuYWwgYXBwbGljYXRpb25zIHdpdGhvdXQgdGhlIG5lZWQgdG8gY3JlYXRlIGV4dGVy
bmFsIHBsdWdpbnMgdXNpbmcKIHRoZSBgYHNldHVwdG9vbHNgYCdzIGVudHJ5IHBvaW50IHRlY2hu
aXF1ZS4KIAotUGx1Z2lucyBpbXBvcnRlZCBieSBgYHB5dGVzdF9wbHVnaW5zYGAgd2lsbCBhbHNv
IGF1dG9tYXRpY2FsbHkgYmUgbWFya2VkCitQbHVnaW5zIGltcG9ydGVkIGJ5IDpnbG9iYWx2YXI6
YHB5dGVzdF9wbHVnaW5zYCB3aWxsIGFsc28gYXV0b21hdGljYWxseSBiZSBtYXJrZWQKIGZvciBh
c3NlcnRpb24gcmV3cml0aW5nIChzZWUgOmZ1bmM6YHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRfcmV3
cml0ZWApLgogSG93ZXZlciBmb3IgdGhpcyB0byBoYXZlIGFueSBlZmZlY3QgdGhlIG1vZHVsZSBt
dXN0IG5vdCBiZQogaW1wb3J0ZWQgYWxyZWFkeTsgaWYgaXQgd2FzIGFscmVhZHkgaW1wb3J0ZWQg
YXQgdGhlIHRpbWUgdGhlCi1gYHB5dGVzdF9wbHVnaW5zYGAgc3RhdGVtZW50IGlzIHByb2Nlc3Nl
ZCwgYSB3YXJuaW5nIHdpbGwgcmVzdWx0IGFuZAorOmdsb2JhbHZhcjpgcHl0ZXN0X3BsdWdpbnNg
IHN0YXRlbWVudCBpcyBwcm9jZXNzZWQsIGEgd2FybmluZyB3aWxsIHJlc3VsdCBhbmQKIGFzc2Vy
dGlvbnMgaW5zaWRlIHRoZSBwbHVnaW4gd2lsbCBub3QgYmUgcmV3cml0dGVuLiAgVG8gZml4IHRo
aXMgeW91CiBjYW4gZWl0aGVyIGNhbGwgOmZ1bmM6YHB5dGVzdC5yZWdpc3Rlcl9hc3NlcnRfcmV3
cml0ZWAgeW91cnNlbGYgYmVmb3JlCiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkLCBvciB5b3UgY2Fu
IGFycmFuZ2UgdGhlIGNvZGUgdG8gZGVsYXkgdGhlCkBAIC0yODYsNiArMjk0LDI2IEBAIHRoZSBw
bHVnaW4gbWFuYWdlciBsaWtlIHRoaXM6CiBJZiB5b3Ugd2FudCB0byBsb29rIGF0IHRoZSBuYW1l
cyBvZiBleGlzdGluZyBwbHVnaW5zLCB1c2UKIHRoZSBgYC0tdHJhY2UtY29uZmlnYGAgb3B0aW9u
LgogCisKKy4uIF9yZWdpc3RlcmluZy1tYXJrZXJzOgorCitSZWdpc3RlcmluZyBjdXN0b20gbWFy
a2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91ciBwbHVnaW4gdXNlcyBh
bnkgbWFya2VycywgeW91IHNob3VsZCByZWdpc3RlciB0aGVtIHNvIHRoYXQgdGhleSBhcHBlYXIg
aW4KK3B5dGVzdCdzIGhlbHAgdGV4dCBhbmQgZG8gbm90IDpyZWY6YGNhdXNlIHNwdXJpb3VzIHdh
cm5pbmdzIDx1bmtub3duLW1hcmtzPmAuCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBwbHVn
aW4gd291bGQgcmVnaXN0ZXIgYGBjb29sX21hcmtlcmBgIGFuZAorYGBtYXJrX3dpdGhgYCBmb3Ig
YWxsIHVzZXJzOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgcHl0ZXN0X2Nv
bmZpZ3VyZShjb25maWcpOgorICAgICAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgibWFya2Vy
cyIsICJjb29sX21hcmtlcjogdGhpcyBvbmUgaXMgZm9yIGNvb2wgdGVzdHMuIikKKyAgICAgICAg
Y29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCisgICAgICAgICAgICAibWFya2VycyIsICJtYXJrX3dp
dGgoYXJnLCBhcmcyKTogdGhpcyBtYXJrZXIgdGFrZXMgYXJndW1lbnRzLiIKKyAgICAgICAgKQor
CisKIFRlc3RpbmcgcGx1Z2lucwogLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTMxNiw4ICszNDQsNiBA
QCBzdHJpbmcgdmFsdWUgb2YgYGBIZWxsbyBXb3JsZCFgYCBpZiB3ZSBkbyBub3Qgc3VwcGx5IGEg
dmFsdWUgb3IgYGBIZWxsbwogCiAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAgICAjIC0qLSBj
b2Rpbmc6IHV0Zi04IC0qLQotCiAgICAgaW1wb3J0IHB5dGVzdAogCiAKQEAgLTM4NiwxMSArNDEy
LDU0IEBAIHJldHVybiBhIHJlc3VsdCBvYmplY3QsIHdpdGggd2hpY2ggd2UgY2FuIGFzc2VydCB0
aGUgdGVzdHMnIG91dGNvbWVzLgogICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3Nl
ZD00KQogCiAKK0FkZGl0aW9uYWxseSBpdCBpcyBwb3NzaWJsZSB0byBjb3B5IGV4YW1wbGVzIGZv
ciBhbiBleGFtcGxlIGZvbGRlciBiZWZvcmUgcnVubmluZyBweXRlc3Qgb24gaXQuCisKKy4uIGNv
ZGUtYmxvY2s6OiBpbmkKKworICAjIGNvbnRlbnQgb2YgcHl0ZXN0LmluaQorICBbcHl0ZXN0XQor
ICBweXRlc3Rlcl9leGFtcGxlX2RpciA9IC4KKworCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisK
KyAgICAjIGNvbnRlbnQgb2YgdGVzdF9leGFtcGxlLnB5CisKKworICAgIGRlZiB0ZXN0X3BsdWdp
bih0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoInRlc3RfZXhhbXBsZS5w
eSIpCisgICAgICAgIHRlc3RkaXIucnVucHl0ZXN0KCItayIsICJ0ZXN0X2V4YW1wbGUiKQorCisK
KyAgICBkZWYgdGVzdF9leGFtcGxlKCk6CisgICAgICAgIHBhc3MKKworLi4gY29kZS1ibG9jazo6
IHB5dGVzdAorCisgICAgJCBweXRlc3QKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0g
dGVzdCBzZXNzaW9uIHN0YXJ0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcGxh
dGZvcm0gbGludXggLS0gUHl0aG9uIDMueC55LCBweXRlc3QtNi54LnksIHB5LTEueC55LCBwbHVn
Z3ktMC54LnkKKyAgICBjYWNoZWRpcjogJFBZVEhPTl9QUkVGSVgvLnB5dGVzdF9jYWNoZQorICAg
IHJvb3RkaXI6ICRSRUdFTkRPQ19UTVBESVIsIGNvbmZpZ2ZpbGU6IHB5dGVzdC5pbmkKKyAgICBj
b2xsZWN0ZWQgMiBpdGVtcworCisgICAgdGVzdF9leGFtcGxlLnB5IC4uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMCVdCisKKyAgICA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSB3YXJuaW5ncyBzdW1tYXJ5ID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisgICAgdGVzdF9leGFtcGxlLnB5Ojp0ZXN0X3BsdWdpbgorICAgICAgJFJF
R0VORE9DX1RNUERJUi90ZXN0X2V4YW1wbGUucHk6NDogUHl0ZXN0RXhwZXJpbWVudGFsQXBpV2Fy
bmluZzogdGVzdGRpci5jb3B5X2V4YW1wbGUgaXMgYW4gZXhwZXJpbWVudGFsIGFwaSB0aGF0IG1h
eSBjaGFuZ2Ugb3ZlciB0aW1lCisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJ0ZXN0X2V4
YW1wbGUucHkiKQorCisgICAgLS0gRG9jczogaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3Rh
YmxlL3dhcm5pbmdzLmh0bWwKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PSAyIHBhc3NlZCwg
MSB3YXJuaW5nIGluIDAuMTJzID09PT09PT09PT09PT09PT09PT09PT09CisKIEZvciBtb3JlIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSByZXN1bHQgb2JqZWN0IHRoYXQgYGBydW5weXRlc3QoKWBgIHJl
dHVybnMsIGFuZAogdGhlIG1ldGhvZHMgdGhhdCBpdCBwcm92aWRlcyBwbGVhc2UgY2hlY2sgb3V0
IHRoZSA6cHk6Y2xhc3M6YFJ1blJlc3VsdAogPF9weXRlc3QucHl0ZXN0ZXIuUnVuUmVzdWx0PmAg
ZG9jdW1lbnRhdGlvbi4KIAogCisKKwogLi4gX2B3cml0aW5naG9va3NgOgogCiBXcml0aW5nIGhv
b2sgZnVuY3Rpb25zCkBAIC00NDcsMTMgKzUxNiwxNCBAQCBjYWxsIG9ubHkgZXhlY3V0ZXMgdW50
aWwgdGhlIGZpcnN0IG9mIE4gcmVnaXN0ZXJlZCBmdW5jdGlvbnMgcmV0dXJucyBhCiBub24tTm9u
ZSByZXN1bHQgd2hpY2ggaXMgdGhlbiB0YWtlbiBhcyByZXN1bHQgb2YgdGhlIG92ZXJhbGwgaG9v
ayBjYWxsLgogVGhlIHJlbWFpbmluZyBob29rIGZ1bmN0aW9ucyB3aWxsIG5vdCBiZSBjYWxsZWQg
aW4gdGhpcyBjYXNlLgogCisuLiBfYGhvb2t3cmFwcGVyYDoKIAogaG9va3dyYXBwZXI6IGV4ZWN1
dGluZyBhcm91bmQgb3RoZXIgaG9va3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY3VycmVudG1vZHVsZTo6IF9weXRlc3QuY29yZQogCi0u
LiB2ZXJzaW9uYWRkZWQ6OiAyLjcKKwogCiBweXRlc3QgcGx1Z2lucyBjYW4gaW1wbGVtZW50IGhv
b2sgd3JhcHBlcnMgd2hpY2ggd3JhcCB0aGUgZXhlY3V0aW9uCiBvZiBvdGhlciBob29rIGltcGxl
bWVudGF0aW9ucy4gIEEgaG9vayB3cmFwcGVyIGlzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uCkBAIC00
NjYsMTAgKzUzNiwxMyBAQCBhIDpweTpjbGFzczpgUmVzdWx0IDxwbHVnZ3kuX1Jlc3VsdD5gIGlu
c3RhbmNlIHdoaWNoIGVuY2Fwc3VsYXRlcyBhIHJlc3VsdCBvcgogZXhjZXB0aW9uIGluZm8uICBU
aGUgeWllbGQgcG9pbnQgaXRzZWxmIHdpbGwgdGh1cyB0eXBpY2FsbHkgbm90IHJhaXNlCiBleGNl
cHRpb25zICh1bmxlc3MgdGhlcmUgYXJlIGJ1Z3MpLgogCi1IZXJlIGlzIGFuIGV4YW1wbGUgZGVm
aW5pdGlvbiBvZiBhIGhvb2sgd3JhcHBlcjo6CitIZXJlIGlzIGFuIGV4YW1wbGUgZGVmaW5pdGlv
biBvZiBhIGhvb2sgd3JhcHBlcjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgogCiAgICAgaW1w
b3J0IHB5dGVzdAogCisKICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCiAg
ICAgZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChweWZ1bmNpdGVtKToKICAgICAgICAgZG9fc29tZXRo
aW5nX2JlZm9yZV9uZXh0X2hvb2tfZXhlY3V0ZXMoKQpAQCAtNDg4LDggKzU2MSwxMCBAQCBwZXJm
b3JtIHRyYWNpbmcgb3Igb3RoZXIgc2lkZSBlZmZlY3RzIGFyb3VuZCB0aGUgYWN0dWFsIGhvb2sg
aW1wbGVtZW50YXRpb25zLgogSWYgdGhlIHJlc3VsdCBvZiB0aGUgdW5kZXJseWluZyBob29rIGlz
IGEgbXV0YWJsZSBvYmplY3QsIHRoZXkgbWF5IG1vZGlmeQogdGhhdCByZXN1bHQgYnV0IGl0J3Mg
cHJvYmFibHkgYmV0dGVyIHRvIGF2b2lkIGl0LgogCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgY29u
c3VsdCB0aGUgYHBsdWdneSBkb2N1bWVudGF0aW9uIDxodHRwOi8vcGx1Z2d5LnJlYWR0aGVkb2Nz
LmlvL2VuL2xhdGVzdC8jd3JhcHBlcnM+YF8uCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgY29uc3Vs
dCB0aGUKKzpyZWY6YHBsdWdneSBkb2N1bWVudGF0aW9uIGFib3V0IGhvb2t3cmFwcGVycyA8cGx1
Z2d5Omhvb2t3cmFwcGVycz5gLgogCisuLiBfcGx1Z2luLWhvb2tvcmRlcjoKIAogSG9vayBmdW5j
dGlvbiBvcmRlcmluZyAvIGNhbGwgZXhhbXBsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtNTQ3LDYgKzYyMiwxMSBAQCBhbW9uZyBlYWNoIG90aGVyLgogRGVjbGFy
aW5nIG5ldyBob29rcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIG5vdGU6OgorCisg
ICAgVGhpcyBpcyBhIHF1aWNrIG92ZXJ2aWV3IG9uIGhvdyB0byBhZGQgbmV3IGhvb2tzIGFuZCBo
b3cgdGhleSB3b3JrIGluIGdlbmVyYWwsIGJ1dCBhIG1vcmUgY29tcGxldGUKKyAgICBvdmVydmll
dyBjYW4gYmUgZm91bmQgaW4gYHRoZSBwbHVnZ3kgZG9jdW1lbnRhdGlvbiA8aHR0cHM6Ly9wbHVn
Z3kucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lz5gX18uCisKIC4uIGN1cnJlbnRtb2R1bGU6OiBf
cHl0ZXN0Lmhvb2tzcGVjCiAKIFBsdWdpbnMgYW5kIGBgY29uZnRlc3QucHlgYCBmaWxlcyBtYXkg
ZGVjbGFyZSBuZXcgaG9va3MgdGhhdCBjYW4gdGhlbiBiZQpAQCAtNTU4LDEyICs2MzgsMTExIEBA
IHRoZSBuZXcgcGx1Z2luOgogCiBIb29rcyBhcmUgdXN1YWxseSBkZWNsYXJlZCBhcyBkby1ub3Ro
aW5nIGZ1bmN0aW9ucyB0aGF0IGNvbnRhaW4gb25seQogZG9jdW1lbnRhdGlvbiBkZXNjcmliaW5n
IHdoZW4gdGhlIGhvb2sgd2lsbCBiZSBjYWxsZWQgYW5kIHdoYXQgcmV0dXJuIHZhbHVlcwotYXJl
IGV4cGVjdGVkLgorYXJlIGV4cGVjdGVkLiBUaGUgbmFtZXMgb2YgdGhlIGZ1bmN0aW9ucyBtdXN0
IHN0YXJ0IHdpdGggYHB5dGVzdF9gIG90aGVyd2lzZSBweXRlc3Qgd29uJ3QgcmVjb2duaXplIHRo
ZW0uCiAKLUZvciBhbiBleGFtcGxlLCBzZWUgYG5ld2hvb2tzLnB5YF8gZnJvbSBgeGRpc3QgPGh0
dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC14ZGlzdD5gXy4KK0hlcmUncyBhbiBl
eGFtcGxlLiBMZXQncyBhc3N1bWUgdGhpcyBjb2RlIGlzIGluIHRoZSBgYHNhbXBsZV9ob29rLnB5
YGAgbW9kdWxlLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBkZWYgcHl0ZXN0X215
X2hvb2soY29uZmlnKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlY2VpdmVzIHRoZSBweXRlc3Qg
Y29uZmlnIGFuZCBkb2VzIHRoaW5ncyB3aXRoIGl0CisgICAgICAgICIiIgorCitUbyByZWdpc3Rl
ciB0aGUgaG9va3Mgd2l0aCBweXRlc3QgdGhleSBuZWVkIHRvIGJlIHN0cnVjdHVyZWQgaW4gdGhl
aXIgb3duIG1vZHVsZSBvciBjbGFzcy4gVGhpcworY2xhc3Mgb3IgbW9kdWxlIGNhbiB0aGVuIGJl
IHBhc3NlZCB0byB0aGUgYGBwbHVnaW5tYW5hZ2VyYGAgdXNpbmcgdGhlIGBgcHl0ZXN0X2FkZGhv
b2tzYGAgZnVuY3Rpb24KKyh3aGljaCBpdHNlbGYgaXMgYSBob29rIGV4cG9zZWQgYnkgcHl0ZXN0
KS4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIHB5dGVzdF9hZGRob29rcyhw
bHVnaW5tYW5hZ2VyKToKKyAgICAgICAgIiIiIFRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZSBob29r
cyBhcmUgZ3JvdXBlZCBpbiB0aGUgJ3NhbXBsZV9ob29rJyBtb2R1bGUuICIiIgorICAgICAgICBm
cm9tIG15X2FwcC50ZXN0cyBpbXBvcnQgc2FtcGxlX2hvb2sKKworICAgICAgICBwbHVnaW5tYW5h
Z2VyLmFkZF9ob29rc3BlY3Moc2FtcGxlX2hvb2spCisKK0ZvciBhIHJlYWwgd29ybGQgZXhhbXBs
ZSwgc2VlIGBuZXdob29rcy5weWBfIGZyb20gYHhkaXN0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QteGRpc3Q+YF8uCiAKIC4uIF9gbmV3aG9va3MucHlgOiBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QteGRpc3QvYmxvYi85NzRiZDU2NmM1OTlkYzZhOWVh
MjkxODM4YzZmMjI2MTk3MjA4YjQ2L3hkaXN0L25ld2hvb2tzLnB5CiAKK0hvb2tzIG1heSBiZSBj
YWxsZWQgYm90aCBmcm9tIGZpeHR1cmVzIG9yIGZyb20gb3RoZXIgaG9va3MuIEluIGJvdGggY2Fz
ZXMsIGhvb2tzIGFyZSBjYWxsZWQKK3Rocm91Z2ggdGhlIGBgaG9va2BgIG9iamVjdCwgYXZhaWxh
YmxlIGluIHRoZSBgYGNvbmZpZ2BgIG9iamVjdC4gTW9zdCBob29rcyByZWNlaXZlIGEKK2BgY29u
ZmlnYGAgb2JqZWN0IGRpcmVjdGx5LCB3aGlsZSBmaXh0dXJlcyBtYXkgdXNlIHRoZSBgYHB5dGVz
dGNvbmZpZ2BgIGZpeHR1cmUgd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgb2JqZWN0LgorCisuLiBj
b2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUoKQorICAgIGRlZiBteV9m
aXh0dXJlKHB5dGVzdGNvbmZpZyk6CisgICAgICAgICMgY2FsbCB0aGUgaG9vayBjYWxsZWQgInB5
dGVzdF9teV9ob29rIgorICAgICAgICAjICdyZXN1bHQnIHdpbGwgYmUgYSBsaXN0IG9mIHJldHVy
biB2YWx1ZXMgZnJvbSBhbGwgcmVnaXN0ZXJlZCBmdW5jdGlvbnMuCisgICAgICAgIHJlc3VsdCA9
IHB5dGVzdGNvbmZpZy5ob29rLnB5dGVzdF9teV9ob29rKGNvbmZpZz1weXRlc3Rjb25maWcpCisK
Ky4uIG5vdGU6OgorICAgIEhvb2tzIHJlY2VpdmUgcGFyYW1ldGVycyB1c2luZyBvbmx5IGtleXdv
cmQgYXJndW1lbnRzLgorCitOb3cgeW91ciBob29rIGlzIHJlYWR5IHRvIGJlIHVzZWQuIFRvIHJl
Z2lzdGVyIGEgZnVuY3Rpb24gYXQgdGhlIGhvb2ssIG90aGVyIHBsdWdpbnMgb3IgdXNlcnMgbXVz
dAorbm93IHNpbXBseSBkZWZpbmUgdGhlIGZ1bmN0aW9uIGBgcHl0ZXN0X215X2hvb2tgYCB3aXRo
IHRoZSBjb3JyZWN0IHNpZ25hdHVyZSBpbiB0aGVpciBgYGNvbmZ0ZXN0LnB5YGAuCisKK0V4YW1w
bGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGRlZiBweXRlc3RfbXlfaG9vayhj
b25maWcpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJpbnQgYWxsIGFjdGl2ZSBob29rcyB0byB0
aGUgc2NyZWVuLgorICAgICAgICAiIiIKKyAgICAgICAgcHJpbnQoY29uZmlnLmhvb2spCisKKwor
Li4gX2BhZGRvcHRpb25ob29rc2A6CisKKworVXNpbmcgaG9va3MgaW4gcHl0ZXN0X2FkZG9wdGlv
bgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPY2Nhc2lvbmFsbHksIGl0IGlz
IG5lY2Vzc2FyeSB0byBjaGFuZ2UgdGhlIHdheSBpbiB3aGljaCBjb21tYW5kIGxpbmUgb3B0aW9u
cworYXJlIGRlZmluZWQgYnkgb25lIHBsdWdpbiBiYXNlZCBvbiBob29rcyBpbiBhbm90aGVyIHBs
dWdpbi4gRm9yIGV4YW1wbGUsCithIHBsdWdpbiBtYXkgZXhwb3NlIGEgY29tbWFuZCBsaW5lIG9w
dGlvbiBmb3Igd2hpY2ggYW5vdGhlciBwbHVnaW4gbmVlZHMKK3RvIGRlZmluZSB0aGUgZGVmYXVs
dCB2YWx1ZS4gVGhlIHBsdWdpbm1hbmFnZXIgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCBhbmQKK3Vz
ZSBob29rcyB0byBhY2NvbXBsaXNoIHRoaXMuIFRoZSBwbHVnaW4gd291bGQgZGVmaW5lIGFuZCBh
ZGQgdGhlIGhvb2tzCithbmQgdXNlIHB5dGVzdF9hZGRvcHRpb24gYXMgZm9sbG93czoKKworLi4g
Y29kZS1ibG9jazo6IHB5dGhvbgorCisgICAjIGNvbnRlbnRzIG9mIGhvb2tzLnB5CisKKyAgICMg
VXNlIGZpcnN0cmVzdWx0PVRydWUgYmVjYXVzZSB3ZSBvbmx5IHdhbnQgb25lIHBsdWdpbiB0byBk
ZWZpbmUgdGhpcworICAgIyBkZWZhdWx0IHZhbHVlCisgICBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9
VHJ1ZSkKKyAgIGRlZiBweXRlc3RfY29uZmlnX2ZpbGVfZGVmYXVsdF92YWx1ZSgpOgorICAgICAg
ICIiIiBSZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb25maWcgZmlsZSBjb21tYW5k
IGxpbmUgb3B0aW9uLiAiIiIKKworCisgICAjIGNvbnRlbnRzIG9mIG15cGx1Z2luLnB5CisKKwor
ICAgZGVmIHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKToKKyAgICAgICAiIiIgVGhpcyBl
eGFtcGxlIGFzc3VtZXMgdGhlIGhvb2tzIGFyZSBncm91cGVkIGluIHRoZSAnaG9va3MnIG1vZHVs
ZS4gIiIiCisgICAgICAgZnJvbSAuIGltcG9ydCBob29rCisKKyAgICAgICBwbHVnaW5tYW5hZ2Vy
LmFkZF9ob29rc3BlY3MoaG9vaykKKworCisgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIs
IHBsdWdpbm1hbmFnZXIpOgorICAgICAgIGRlZmF1bHRfdmFsdWUgPSBwbHVnaW5tYW5hZ2VyLmhv
b2sucHl0ZXN0X2NvbmZpZ19maWxlX2RlZmF1bHRfdmFsdWUoKQorICAgICAgIHBhcnNlci5hZGRv
cHRpb24oCisgICAgICAgICAgICItLWNvbmZpZy1maWxlIiwKKyAgICAgICAgICAgaGVscD0iQ29u
ZmlnIGZpbGUgdG8gdXNlLCBkZWZhdWx0cyB0byAlKGRlZmF1bHQpcyIsCisgICAgICAgICAgIGRl
ZmF1bHQ9ZGVmYXVsdF92YWx1ZSwKKyAgICAgICApCisKK1RoZSBjb25mdGVzdC5weSB0aGF0IGlz
IHVzaW5nIG15cGx1Z2luIHdvdWxkIHNpbXBseSBkZWZpbmUgdGhlIGhvb2sgYXMgZm9sbG93czoK
KworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgZGVmIHB5dGVzdF9jb25maWdfZmlsZV9k
ZWZhdWx0X3ZhbHVlKCk6CisgICAgICAgIHJldHVybiAiY29uZmlnLnlhbWwiCisKIAogT3B0aW9u
YWxseSB1c2luZyBob29rcyBmcm9tIDNyZCBwYXJ0eSBwbHVnaW5zCiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTU3NCwxOSArNzUzLDIzIEBAIGlmIHlv
dSBkZXBlbmQgb24gYSBwbHVnaW4gdGhhdCBpcyBub3QgaW5zdGFsbGVkLCB2YWxpZGF0aW9uIHdp
bGwgZmFpbCBhbmQKIHRoZSBlcnJvciBtZXNzYWdlIHdpbGwgbm90IG1ha2UgbXVjaCBzZW5zZSB0
byB5b3VyIHVzZXJzLgogCiBPbmUgYXBwcm9hY2ggaXMgdG8gZGVmZXIgdGhlIGhvb2sgaW1wbGVt
ZW50YXRpb24gdG8gYSBuZXcgcGx1Z2luIGluc3RlYWQgb2YKLWRlY2xhcmluZyB0aGUgaG9vayBm
dW5jdGlvbnMgZGlyZWN0bHkgaW4geW91ciBwbHVnaW4gbW9kdWxlLCBmb3IgZXhhbXBsZTo6Citk
ZWNsYXJpbmcgdGhlIGhvb2sgZnVuY3Rpb25zIGRpcmVjdGx5IGluIHlvdXIgcGx1Z2luIG1vZHVs
ZSwgZm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgICMgY29udGVu
dHMgb2YgbXlwbHVnaW4ucHkKIAotICAgIGNsYXNzIERlZmVyUGx1Z2luKG9iamVjdCk6CisKKyAg
ICBjbGFzcyBEZWZlclBsdWdpbjoKICAgICAgICAgIiIiU2ltcGxlIHBsdWdpbiB0byBkZWZlciBw
eXRlc3QteGRpc3QgaG9vayBmdW5jdGlvbnMuIiIiCiAKICAgICAgICAgZGVmIHB5dGVzdF90ZXN0
bm9kZWRvd24oc2VsZiwgbm9kZSwgZXJyb3IpOgogICAgICAgICAgICAgIiIic3RhbmRhcmQgeGRp
c3QgaG9vayBmdW5jdGlvbi4KICAgICAgICAgICAgICIiIgogCisKICAgICBkZWYgcHl0ZXN0X2Nv
bmZpZ3VyZShjb25maWcpOgotICAgICAgICBpZiBjb25maWcucGx1Z2lubWFuYWdlci5oYXNwbHVn
aW4oJ3hkaXN0Jyk6CisgICAgICAgIGlmIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmhhc3BsdWdpbigi
eGRpc3QiKToKICAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKERlZmVy
UGx1Z2luKCkpCiAKIFRoaXMgaGFzIHRoZSBhZGRlZCBiZW5lZml0IG9mIGFsbG93aW5nIHlvdSB0
byBjb25kaXRpb25hbGx5IGluc3RhbGwgaG9va3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi94dW5pdF9zZXR1cC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4veHVuaXRfc2V0dXAucnN0
CmluZGV4IDdhNmMwOTlmNTU5MC4uOGIzMzY2ZjYyYWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4veHVuaXRfc2V0dXAucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi94dW5pdF9z
ZXR1cC5yc3QKQEAgLTEyLDcgKzEyLDcgQEAgZml4dHVyZXMgKHNldHVwIGFuZCB0ZWFyZG93biB0
ZXN0IHN0YXRlKSBvbiBhIHBlci1tb2R1bGUvY2xhc3MvZnVuY3Rpb24gYmFzaXMuCiAuLiBub3Rl
OjoKIAogICAgIFdoaWxlIHRoZXNlIHNldHVwL3RlYXJkb3duIG1ldGhvZHMgYXJlIHNpbXBsZSBh
bmQgZmFtaWxpYXIgdG8gdGhvc2UKLSAgICBjb21pbmcgZnJvbSBhIGBgdW5pdHRlc3RgYCBvciBu
b3NlIGBgYmFja2dyb3VuZGBgLCB5b3UgbWF5IGFsc28gY29uc2lkZXIKKyAgICBjb21pbmcgZnJv
bSBhIGBgdW5pdHRlc3RgYCBvciBgYG5vc2VgYCBiYWNrZ3JvdW5kLCB5b3UgbWF5IGFsc28gY29u
c2lkZXIKICAgICB1c2luZyBweXRlc3QncyBtb3JlIHBvd2VyZnVsIDpyZWY6YGZpeHR1cmUgbWVj
aGFuaXNtCiAgICAgPGZpeHR1cmU+YCB3aGljaCBsZXZlcmFnZXMgdGhlIGNvbmNlcHQgb2YgZGVw
ZW5kZW5jeSBpbmplY3Rpb24sIGFsbG93aW5nCiAgICAgZm9yIGEgbW9yZSBtb2R1bGFyIGFuZCBt
b3JlIHNjYWxhYmxlIGFwcHJvYWNoIGZvciBtYW5hZ2luZyB0ZXN0IHN0YXRlLApAQCAtMjcsMTEg
KzI3LDE0IEBAIE1vZHVsZSBsZXZlbCBzZXR1cC90ZWFyZG93bgogCiBJZiB5b3UgaGF2ZSBtdWx0
aXBsZSB0ZXN0IGZ1bmN0aW9ucyBhbmQgdGVzdCBjbGFzc2VzIGluIGEgc2luZ2xlCiBtb2R1bGUg
eW91IGNhbiBvcHRpb25hbGx5IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGZpeHR1cmUgbWV0aG9k
cwotd2hpY2ggd2lsbCB1c3VhbGx5IGJlIGNhbGxlZCBvbmNlIGZvciBhbGwgdGhlIGZ1bmN0aW9u
czo6Cit3aGljaCB3aWxsIHVzdWFsbHkgYmUgY2FsbGVkIG9uY2UgZm9yIGFsbCB0aGUgZnVuY3Rp
b25zOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBkZWYgc2V0dXBfbW9kdWxlKG1v
ZHVsZSk6CiAgICAgICAgICIiIiBzZXR1cCBhbnkgc3RhdGUgc3BlY2lmaWMgdG8gdGhlIGV4ZWN1
dGlvbiBvZiB0aGUgZ2l2ZW4gbW9kdWxlLiIiIgogCisKICAgICBkZWYgdGVhcmRvd25fbW9kdWxl
KG1vZHVsZSk6CiAgICAgICAgICIiIiB0ZWFyZG93biBhbnkgc3RhdGUgdGhhdCB3YXMgcHJldmlv
dXNseSBzZXR1cCB3aXRoIGEgc2V0dXBfbW9kdWxlCiAgICAgICAgIG1ldGhvZC4KQEAgLTQzLDcg
KzQ2LDkgQEAgQ2xhc3MgbGV2ZWwgc2V0dXAvdGVhcmRvd24KIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogU2ltaWxhcmx5LCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGNh
bGxlZCBhdCBjbGFzcyBsZXZlbCBiZWZvcmUKLWFuZCBhZnRlciBhbGwgdGVzdCBtZXRob2RzIG9m
IHRoZSBjbGFzcyBhcmUgY2FsbGVkOjoKK2FuZCBhZnRlciBhbGwgdGVzdCBtZXRob2RzIG9mIHRo
ZSBjbGFzcyBhcmUgY2FsbGVkOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKICAgICBAY2xh
c3NtZXRob2QKICAgICBkZWYgc2V0dXBfY2xhc3MoY2xzKToKQEAgLTUxLDYgKzU2LDcgQEAgYW5k
IGFmdGVyIGFsbCB0ZXN0IG1ldGhvZHMgb2YgdGhlIGNsYXNzIGFyZSBjYWxsZWQ6OgogICAgICAg
ICB1c3VhbGx5IGNvbnRhaW5zIHRlc3RzKS4KICAgICAgICAgIiIiCiAKKwogICAgIEBjbGFzc21l
dGhvZAogICAgIGRlZiB0ZWFyZG93bl9jbGFzcyhjbHMpOgogICAgICAgICAiIiIgdGVhcmRvd24g
YW55IHN0YXRlIHRoYXQgd2FzIHByZXZpb3VzbHkgc2V0dXAgd2l0aCBhIGNhbGwgdG8KQEAgLTYw
LDEzICs2NiwxNiBAQCBhbmQgYWZ0ZXIgYWxsIHRlc3QgbWV0aG9kcyBvZiB0aGUgY2xhc3MgYXJl
IGNhbGxlZDo6CiBNZXRob2QgYW5kIGZ1bmN0aW9uIGxldmVsIHNldHVwL3RlYXJkb3duCiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TaW1pbGFybHks
IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgY2FsbGVkIGFyb3VuZCBlYWNoIG1ldGhvZCBpbnZv
Y2F0aW9uOjoKK1NpbWlsYXJseSwgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBjYWxsZWQgYXJv
dW5kIGVhY2ggbWV0aG9kIGludm9jYXRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAog
ICAgIGRlZiBzZXR1cF9tZXRob2Qoc2VsZiwgbWV0aG9kKToKICAgICAgICAgIiIiIHNldHVwIGFu
eSBzdGF0ZSB0aWVkIHRvIHRoZSBleGVjdXRpb24gb2YgdGhlIGdpdmVuIG1ldGhvZCBpbiBhCiAg
ICAgICAgIGNsYXNzLiAgc2V0dXBfbWV0aG9kIGlzIGludm9rZWQgZm9yIGV2ZXJ5IHRlc3QgbWV0
aG9kIG9mIGEgY2xhc3MuCiAgICAgICAgICIiIgogCisKICAgICBkZWYgdGVhcmRvd25fbWV0aG9k
KHNlbGYsIG1ldGhvZCk6CiAgICAgICAgICIiIiB0ZWFyZG93biBhbnkgc3RhdGUgdGhhdCB3YXMg
cHJldmlvdXNseSBzZXR1cCB3aXRoIGEgc2V0dXBfbWV0aG9kCiAgICAgICAgIGNhbGwuCkBAIC03
NSwxMyArODQsMTYgQEAgU2ltaWxhcmx5LCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGNhbGxl
ZCBhcm91bmQgZWFjaCBtZXRob2QgaW52b2NhdGlvbjo6CiBBcyBvZiBweXRlc3QtMy4wLCB0aGUg
YGBtZXRob2RgYCBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCiAKIElmIHlvdSB3b3VsZCByYXRoZXIg
ZGVmaW5lIHRlc3QgZnVuY3Rpb25zIGRpcmVjdGx5IGF0IG1vZHVsZSBsZXZlbAoteW91IGNhbiBh
bHNvIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQgZml4dHVyZXM6Ogor
eW91IGNhbiBhbHNvIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQgZml4
dHVyZXM6CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KIAogICAgIGRlZiBzZXR1cF9mdW5jdGlv
bihmdW5jdGlvbik6CiAgICAgICAgICIiIiBzZXR1cCBhbnkgc3RhdGUgdGllZCB0byB0aGUgZXhl
Y3V0aW9uIG9mIHRoZSBnaXZlbiBmdW5jdGlvbi4KICAgICAgICAgSW52b2tlZCBmb3IgZXZlcnkg
dGVzdCBmdW5jdGlvbiBpbiB0aGUgbW9kdWxlLgogICAgICAgICAiIiIKIAorCiAgICAgZGVmIHRl
YXJkb3duX2Z1bmN0aW9uKGZ1bmN0aW9uKToKICAgICAgICAgIiIiIHRlYXJkb3duIGFueSBzdGF0
ZSB0aGF0IHdhcyBwcmV2aW91c2x5IHNldHVwIHdpdGggYSBzZXR1cF9mdW5jdGlvbgogICAgICAg
ICBjYWxsLgpAQCAtOTMsNyArMTA1LDE1IEBAIFJlbWFya3M6CiAKICogSXQgaXMgcG9zc2libGUg
Zm9yIHNldHVwL3RlYXJkb3duIHBhaXJzIHRvIGJlIGludm9rZWQgbXVsdGlwbGUgdGltZXMKICAg
cGVyIHRlc3RpbmcgcHJvY2Vzcy4KKwogKiB0ZWFyZG93biBmdW5jdGlvbnMgYXJlIG5vdCBjYWxs
ZWQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc2V0dXAgZnVuY3Rpb24gZXhpc3RlZAogICBhbmQgZmFp
bGVkL3dhcyBza2lwcGVkLgogCisqIFByaW9yIHRvIHB5dGVzdC00LjIsIHh1bml0LXN0eWxlIGZ1
bmN0aW9ucyBkaWQgbm90IG9iZXkgdGhlIHNjb3BlIHJ1bGVzIG9mIGZpeHR1cmVzLCBzbworICBp
dCB3YXMgcG9zc2libGUsIGZvciBleGFtcGxlLCBmb3IgYSBgYHNldHVwX21ldGhvZGBgIHRvIGJl
IGNhbGxlZCBiZWZvcmUgYQorICBzZXNzaW9uLXNjb3BlZCBhdXRvdXNlIGZpeHR1cmUuCisKKyAg
Tm93IHRoZSB4dW5pdC1zdHlsZSBmdW5jdGlvbnMgYXJlIGludGVncmF0ZWQgd2l0aCB0aGUgZml4
dHVyZSBtZWNoYW5pc20gYW5kIG9iZXkgdGhlIHByb3BlcgorICBzY29wZSBydWxlcyBvZiBmaXh0
dXJlcyBpbnZvbHZlZCBpbiB0aGUgY2FsbC4KKwogLi4gX2B1bml0dGVzdC5weSBtb2R1bGVgOiBo
dHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdW5pdHRlc3QuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL3lpZWxkZml4dHVyZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
eWllbGRmaXh0dXJlLnJzdAppbmRleCA2ZmQxZWRhYzJmNWUuLjQ3NTkwZjlkYjk2ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3lpZWxkZml4dHVyZS5yc3QKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3lpZWxkZml4dHVyZS5yc3QKQEAgLTUsOSArNSw5IEBACiAieWllbGRfZml4dHVy
ZSIgZnVuY3Rpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZGVwcmVjYXRlZDo6IDMuMAogCi0uLiB2ZXJzaW9u
YWRkZWQ6OiAyLjQKKworCiAKIC4uIGltcG9ydGFudDo6CiAgICAgU2luY2UgcHl0ZXN0LTMuMCwg
Zml4dHVyZXMgdXNpbmcgdGhlIG5vcm1hbCBgYGZpeHR1cmVgYCBkZWNvcmF0b3IgY2FuIHVzZSBh
IGBgeWllbGRgYApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvZ2V0X2lzc3Vlcy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2V4dHJhL2dldF9pc3N1ZXMucHkKaW5kZXggYzAyNjk3MmIxNDVkLi40YWFh
M2MzZWMzMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2V4dHJhL2dldF9pc3N1ZXMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZXh0cmEvZ2V0X2lzc3Vlcy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9y
dCBqc29uCi1pbXBvcnQgcHkKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorCiBpbXBvcnQgcmVx
dWVzdHMKIAogaXNzdWVzX3VybCA9ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3VlcyIKQEAgLTMwLDEyICszMSwxMiBAQCBkZWYgZ2V0X2lzc3Vlcygp
OgogCiAKIGRlZiBtYWluKGFyZ3MpOgotICAgIGNhY2hlZmlsZSA9IHB5LnBhdGgubG9jYWwoYXJn
cy5jYWNoZSkKKyAgICBjYWNoZWZpbGUgPSBQYXRoKGFyZ3MuY2FjaGUpCiAgICAgaWYgbm90IGNh
Y2hlZmlsZS5leGlzdHMoKSBvciBhcmdzLnJlZnJlc2g6CiAgICAgICAgIGlzc3VlcyA9IGdldF9p
c3N1ZXMoKQotICAgICAgICBjYWNoZWZpbGUud3JpdGUoanNvbi5kdW1wcyhpc3N1ZXMpKQorICAg
ICAgICBjYWNoZWZpbGUud3JpdGVfdGV4dChqc29uLmR1bXBzKGlzc3VlcyksICJ1dGYtOCIpCiAg
ICAgZWxzZToKLSAgICAgICAgaXNzdWVzID0ganNvbi5sb2FkcyhjYWNoZWZpbGUucmVhZCgpKQor
ICAgICAgICBpc3N1ZXMgPSBqc29uLmxvYWRzKGNhY2hlZmlsZS5yZWFkX3RleHQoInV0Zi04Iikp
CiAKICAgICBvcGVuX2lzc3VlcyA9IFt4IGZvciB4IGluIGlzc3VlcyBpZiB4WyJzdGF0ZSJdID09
ICJvcGVuIl0KIApAQCAtNDQsNyArNDUsNyBAQCBkZWYgbWFpbihhcmdzKToKIAogCiBkZWYgX2dl
dF9raW5kKGlzc3VlKToKLSAgICBsYWJlbHMgPSBbbFsibmFtZSJdIGZvciBsIGluIGlzc3VlWyJs
YWJlbHMiXV0KKyAgICBsYWJlbHMgPSBbbGFiZWxbIm5hbWUiXSBmb3IgbGFiZWwgaW4gaXNzdWVb
ImxhYmVscyJdXQogICAgIGZvciBrZXkgaW4gKCJidWciLCAiZW5oYW5jZW1lbnQiLCAicHJvcG9z
YWwiKToKICAgICAgICAgaWYga2V5IGluIGxhYmVsczoKICAgICAgICAgICAgIHJldHVybiBrZXkK
QEAgLTY0LDkgKzY1LDkgQEAgZGVmIHJlcG9ydChpc3N1ZXMpOgogICAgICAgICBwcmludCh0aXRs
ZSkKICAgICAgICAgIyBwcmludCgpCiAgICAgICAgICMgbGluZXMgPSBib2R5LnNwbGl0KCJcbiIp
Ci0gICAgICAgICMgcHJpbnQgKCJcbiIuam9pbihsaW5lc1s6M10pKQorICAgICAgICAjIHByaW50
KCJcbiIuam9pbihsaW5lc1s6M10pKQogICAgICAgICAjIGlmIGxlbihsaW5lcykgPiAzIG9yIGxl
bihib2R5KSA+IDI0MDoKLSAgICAgICAgIyAgICBwcmludCAoIi4uLiIpCisgICAgICAgICMgICAg
cHJpbnQoIi4uLiIpCiAgICAgcHJpbnQoIlxuXG5Gb3VuZCAlcyBvcGVuIGlzc3VlcyIgJSBsZW4o
aXNzdWVzKSkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9leHRyYS9zZXR1cC1weS50ZXN0
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvc2V0dXAtcHkudGVzdC93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRjOGI4MzYwMTdjLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvc2V0dXAtcHkudGVzdC93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2V4dHJhL3NldHVwLXB5LnRlc3Qvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2V4
dHJhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMTVkM2ZlYjE2MC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2V4dHJhL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvZ2V0X2lzc3Vlcy5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvcHlwcm9qZWN0LnRvbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9weXByb2pl
Y3QudG9tbAppbmRleCA2NWU2YmY1OWJmMWMuLmFlZTQ2N2ZjZjEyZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvcHlwcm9qZWN0LnRvbWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvcHlwcm9qZWN0LnRvbWwK
QEAgLTEsMjAgKzEsNzQgQEAKIFtidWlsZC1zeXN0ZW1dCiByZXF1aXJlcyA9IFsKLSAgInNldHVw
dG9vbHMiLAotICAic2V0dXB0b29scy1zY20iLAorICAjIHN5bmMgd2l0aCBzZXR1cC5weSB1bnRp
bCB3ZSBkaXNjYXJkIG5vbi1wZXAtNTE3LzUxOAorICAic2V0dXB0b29scz49NDIuMCIsCisgICJz
ZXR1cHRvb2xzLXNjbVt0b21sXT49My40IiwKICAgIndoZWVsIiwKIF0KK2J1aWxkLWJhY2tlbmQg
PSAic2V0dXB0b29scy5idWlsZF9tZXRhIgorCitbdG9vbC5zZXR1cHRvb2xzX3NjbV0KK3dyaXRl
X3RvID0gInNyYy9fcHl0ZXN0L192ZXJzaW9uLnB5IgorCitbdG9vbC5weXRlc3QuaW5pX29wdGlv
bnNdCittaW52ZXJzaW9uID0gIjIuMCIKK2FkZG9wdHMgPSAiLXJmRVggLXAgcHl0ZXN0ZXIgLS1z
dHJpY3QtbWFya2VycyIKK3B5dGhvbl9maWxlcyA9IFsidGVzdF8qLnB5IiwgIipfdGVzdC5weSIs
ICJ0ZXN0aW5nL3B5dGhvbi8qLnB5Il0KK3B5dGhvbl9jbGFzc2VzID0gWyJUZXN0IiwgIkFjY2Vw
dGFuY2UiXQorcHl0aG9uX2Z1bmN0aW9ucyA9IFsidGVzdCJdCisjIE5PVEU6ICJkb2MiIGlzIG5v
dCBpbmNsdWRlZCBoZXJlLCBidXQgZ2V0cyB0ZXN0ZWQgZXhwbGljaXRseSB2aWEgImRvY3Rlc3Rp
bmciLgordGVzdHBhdGhzID0gWyJ0ZXN0aW5nIl0KK25vcmVjdXJzZWRpcnMgPSBbInRlc3Rpbmcv
ZXhhbXBsZV9zY3JpcHRzIl0KK3hmYWlsX3N0cmljdCA9IHRydWUKK2ZpbHRlcndhcm5pbmdzID0g
WworICAgICJlcnJvciIsCisgICAgImRlZmF1bHQ6VXNpbmcgb3IgaW1wb3J0aW5nIHRoZSBBQkNz
OkRlcHJlY2F0aW9uV2FybmluZzp1bml0dGVzdDIuKiIsCisgICAgImRlZmF1bHQ6dGhlIGltcCBt
b2R1bGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliOkRlcHJlY2F0aW9uV2Fy
bmluZzpub3NlLioiLAorICAgICJpZ25vcmU6TW9kdWxlIGFscmVhZHkgaW1wb3J0ZWQgc28gY2Fu
bm90IGJlIHJld3JpdHRlbjpweXRlc3QuUHl0ZXN0V2FybmluZyIsCisgICAgIyBwcm9kdWNlZCBi
eSBweXRob24zLjYvc2l0ZS5weSBpdHNlbGYgKDMuNi43IG9uIFRyYXZpcywgY291bGQgbm90IHRy
aWdnZXIgaXQgd2l0aCAzLjYuOCkuIgorICAgICJpZ25vcmU6LipVLiptb2RlIGlzIGRlcHJlY2F0
ZWQ6RGVwcmVjYXRpb25XYXJuaW5nOig/IShweXRlc3R8X3B5dGVzdCkpIiwKKyAgICAjIHByb2R1
Y2VkIGJ5IHB5dGVzdC14ZGlzdAorICAgICJpZ25vcmU6Lip0eXBlIGFyZ3VtZW50IHRvIGFkZG9w
dGlvbi4qOkRlcHJlY2F0aW9uV2FybmluZyIsCisgICAgIyBwcm9kdWNlZCBieSBweXRob24gPj0z
LjUgb24gZXhlY25ldCAocHl0ZXN0LXhkaXN0KQorICAgICJpZ25vcmU6LippbnNwZWN0LmdldGFy
Z3NwZWMuKmRlcHJlY2F0ZWQsIHVzZSBpbnNwZWN0LnNpZ25hdHVyZS4qOkRlcHJlY2F0aW9uV2Fy
bmluZyIsCisgICAgIyBweXRlc3QncyBvd24gZnV0dXJld2FybmluZ3MKKyAgICAiaWdub3JlOjpw
eXRlc3QuUHl0ZXN0RXhwZXJpbWVudGFsQXBpV2FybmluZyIsCisgICAgIyBEbyBub3QgY2F1c2Ug
U3ludGF4RXJyb3IgZm9yIGludmFsaWQgZXNjYXBlIHNlcXVlbmNlcyBpbiBweTM3LgorICAgICMg
VGhvc2UgYXJlIGNhdWdodC9oYW5kbGVkIGJ5IHB5dXBncmFkZSwgYW5kIG5vdCBlYXN5IHRvIGZp
bHRlciB3aXRoIHRoZQorICAgICMgbW9kdWxlIGJlaW5nIHRoZSBmaWxlbmFtZSAod2l0aCAucHkg
cmVtb3ZlZCkuCisgICAgImRlZmF1bHQ6aW52YWxpZCBlc2NhcGUgc2VxdWVuY2U6RGVwcmVjYXRp
b25XYXJuaW5nIiwKKyAgICAjIGlnbm9yZSB1c2Ugb2YgdW5yZWdpc3RlcmVkIG1hcmtzLCBiZWNh
dXNlIHdlIHVzZSBtYW55IHRvIHRlc3QgdGhlIGltcGxlbWVudGF0aW9uCisgICAgImlnbm9yZTo6
X3B5dGVzdC53YXJuaW5nX3R5cGVzLlB5dGVzdFVua25vd25NYXJrV2FybmluZyIsCitdCitweXRl
c3Rlcl9leGFtcGxlX2RpciA9ICJ0ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cyIKK21hcmtlcnMgPSBb
CisgICAgIyBkdW1teSBtYXJrZXJzIGZvciB0ZXN0aW5nCisgICAgImZvbyIsCisgICAgImJhciIs
CisgICAgImJheiIsCisgICAgIyBjb25mdGVzdC5weSByZW9yZGVycyB0ZXN0cyBtb3Zpbmcgc2xv
dyBvbmVzIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKKyAgICAic2xvdyIsCisgICAgIyBleHBlcmlt
ZW50YWwgbWFyayBmb3IgYWxsIHRlc3RzIHVzaW5nIHBleHBlY3QKKyAgICAidXNlc19wZXhwZWN0
IiwKK10KKwogCiBbdG9vbC50b3duY3JpZXJdCiBwYWNrYWdlID0gInB5dGVzdCIKIHBhY2thZ2Vf
ZGlyID0gInNyYyIKLWZpbGVuYW1lID0gIkNIQU5HRUxPRy5yc3QiCitmaWxlbmFtZSA9ICJkb2Mv
ZW4vY2hhbmdlbG9nLnJzdCIKIGRpcmVjdG9yeSA9ICJjaGFuZ2Vsb2cvIgordGl0bGVfZm9ybWF0
ID0gInB5dGVzdCB7dmVyc2lvbn0gKHtwcm9qZWN0X2RhdGV9KSIKIHRlbXBsYXRlID0gImNoYW5n
ZWxvZy9fdGVtcGxhdGUucnN0IgogCiAgIFtbdG9vbC50b3duY3JpZXIudHlwZV1dCi0gIGRpcmVj
dG9yeSA9ICJyZW1vdmFsIgotICBuYW1lID0gIkRlcHJlY2F0aW9ucyBhbmQgUmVtb3ZhbHMiCisg
IGRpcmVjdG9yeSA9ICJicmVha2luZyIKKyAgbmFtZSA9ICJCcmVha2luZyBDaGFuZ2VzIgorICBz
aG93Y29udGVudCA9IHRydWUKKworICBbW3Rvb2wudG93bmNyaWVyLnR5cGVdXQorICBkaXJlY3Rv
cnkgPSAiZGVwcmVjYXRpb24iCisgIG5hbWUgPSAiRGVwcmVjYXRpb25zIgogICBzaG93Y29udGVu
dCA9IHRydWUKIAogICBbW3Rvb2wudG93bmNyaWVyLnR5cGVdXQpAQCAtMjIsNiArNzYsMTEgQEAg
dGVtcGxhdGUgPSAiY2hhbmdlbG9nL190ZW1wbGF0ZS5yc3QiCiAgIG5hbWUgPSAiRmVhdHVyZXMi
CiAgIHNob3djb250ZW50ID0gdHJ1ZQogCisgIFtbdG9vbC50b3duY3JpZXIudHlwZV1dCisgIGRp
cmVjdG9yeSA9ICJpbXByb3ZlbWVudCIKKyAgbmFtZSA9ICJJbXByb3ZlbWVudHMiCisgIHNob3dj
b250ZW50ID0gdHJ1ZQorCiAgIFtbdG9vbC50b3duY3JpZXIudHlwZV1dCiAgIGRpcmVjdG9yeSA9
ICJidWdmaXgiCiAgIG5hbWUgPSAiQnVnIEZpeGVzIgpAQCAtNDEsMyArMTAwLDYgQEAgdGVtcGxh
dGUgPSAiY2hhbmdlbG9nL190ZW1wbGF0ZS5yc3QiCiAgIGRpcmVjdG9yeSA9ICJ0cml2aWFsIgog
ICBuYW1lID0gIlRyaXZpYWwvSW50ZXJuYWwgQ2hhbmdlcyIKICAgc2hvd2NvbnRlbnQgPSB0cnVl
CisKK1t0b29sLmJsYWNrXQordGFyZ2V0LXZlcnNpb24gPSBbJ3B5MzUnXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc2NyaXB0cy9hcHBlbmRfY29kZWNvdl90b2tlbi5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NjcmlwdHMvYXBwZW5kX2NvZGVjb3ZfdG9rZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi44ZWVjYjBmYTUxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zY3JpcHRzL2FwcGVuZF9jb2RlY292X3Rva2VuLnB5CkBAIC0wLDAgKzEsMzYgQEAKKyIi
IgorQXBwZW5kcyB0aGUgY29kZWNvdiB0b2tlbiB0byB0aGUgJ2NvZGVjb3YueW1sJyBmaWxlIGF0
IHRoZSByb290IG9mIHRoZSByZXBvc2l0b3J5LgorCitUaGlzIGlzIGRvbmUgYnkgQ0kgZHVyaW5n
IFBScyBhbmQgYnVpbGRzIG9uIHRoZSBweXRlc3QtZGV2IHJlcG9zaXRvcnkgc28gd2UgY2FuIHVw
bG9hZCBjb3ZlcmFnZSwgYXQgbGVhc3QKK3VudGlsIGNvZGVjb3YgZ3Jvd3Mgc29tZSBuYXRpdmUg
aW50ZWdyYXRpb24gbGlrZSBpdCBoYXMgd2l0aCBUcmF2aXMgYW5kIEFwcFZleW9yLgorCitTZWUg
ZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC82
NDQxIGZvciBtb3JlIGluZm9ybWF0aW9uLgorIiIiCitpbXBvcnQgb3MucGF0aAorZnJvbSB0ZXh0
d3JhcCBpbXBvcnQgZGVkZW50CisKKworZGVmIG1haW4oKToKKyAgICB0aGlzX2RpciA9IG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXykKKyAgICBjb3ZfZmlsZSA9IG9zLnBhdGguam9pbih0aGlzX2Rp
ciwgIi4uIiwgImNvZGVjb3YueW1sIikKKworICAgIGFzc2VydCBvcy5wYXRoLmlzZmlsZShjb3Zf
ZmlsZSksICJ7Y292X2ZpbGV9IGRvZXMgbm90IGV4aXN0Ii5mb3JtYXQoCisgICAgICAgIGNvdl9m
aWxlPWNvdl9maWxlCisgICAgKQorCisgICAgd2l0aCBvcGVuKGNvdl9maWxlLCAiYSIpIGFzIGY6
CisgICAgICAgICMgdG9rZW4gZnJvbTogaHR0cHM6Ly9jb2RlY292LmlvL2doL3B5dGVzdC1kZXYv
cHl0ZXN0L3NldHRpbmdzCisgICAgICAgICMgdXNlIHNhbWUgVVJMIHRvIHJlZ2VuZXJhdGUgaXQg
aWYgbmVlZGVkCisgICAgICAgIHRleHQgPSBkZWRlbnQoCisgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgIGNvZGVjb3Y6CisgICAgICAgICAgICAgIHRva2VuOiAiMWVjYTNiMWYtMzFhMi00ZmI4
LWE4YzMtMTM4YjQ0MWI1MGE3IgorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBmLndy
aXRlKHRleHQpCisKKyAgICBwcmludCgiVG9rZW4gdXBkYXRlZDoiLCBjb3ZfZmlsZSkKKworCitp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc2NyaXB0cy9jYWxsLXRveC5iYXQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL2NhbGwtdG94
LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZmYjI1YzFkZjFkLi4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9jYWxsLXRveC5iYXQKKysrIC9kZXYvbnVs
bApAQCAtMSw4ICswLDAgQEAKLVJFTSBza2lwICJjb3ZlcmFsbHMiIHJ1biBpbiBQUnMgb3IgZm9y
a3MKLWlmICIlVE9YRU5WJSIgPT0gImNvdmVyYWxscyIgKAotICAgIGlmIG5vdCBkZWZpbmVkIENP
VkVSQUxMU19SRVBPX1RPS0VOICgKLSAgICAgICAgZWNobyBza2lwcGluZyBjb3ZlcmFsbHMgcnVu
IGJlY2F1c2UgQ09WRVJBTExTX1JFUE9fVE9LRU4gaXMgbm90IGRlZmluZWQKLSAgICAgICAgZXhp
dCAvYiAwCi0gICAgKQotKQotQzpcUHl0aG9uMzZccHl0aG9uIC1tIHRveApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc2NyaXB0cy9pbnN0YWxsLXB5cHkuYmF0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0
cy9pbnN0YWxsLXB5cHkuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDEyZWE0
NmFjYTQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL2luc3RhbGwtcHlw
eS5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVJFTSBpbnN0YWxsIHB5cHkgdXNp
bmcgY2hvY28KLVJFTSByZWRpcmVjdCB0byBhIGZpbGUgYmVjYXVzZSBjaG9jbyBpbnN0YWxsIHB5
dGhvbi5weXB5IGlzIHRvbyBub2lzeS4gSWYgdGhlIGNvbW1hbmQgZmFpbHMsIHdyaXRlIG91dHB1
dCB0byBjb25zb2xlCi1jaG9jbyBpbnN0YWxsIHB5dGhvbi5weXB5ID4gcHlweS1pbnN0LmxvZyAy
PiYxIHx8ICh0eXBlIHB5cHktaW5zdC5sb2cgJiBleGl0IC9iIDEpCi1zZXQgUEFUSD1DOlx0b29s
c1xweXB5XHB5cHk7JVBBVEglICMgc28gdG94IGNhbiBmaW5kIHB5cHkKLWVjaG8gUHlQeSBpbnN0
YWxsZWQKLXB5cHkgLS12ZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3B1
Ymxpc2gtZ2gtcmVsZWFzZS1ub3Rlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcHVibGlzaC1n
aC1yZWxlYXNlLW5vdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMjUzMWIwMjIxYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9w
dWJsaXNoLWdoLXJlbGVhc2Utbm90ZXMucHkKQEAgLTAsMCArMSwxMDUgQEAKKyIiIgorU2NyaXB0
IHVzZWQgdG8gcHVibGlzaCBHaXRIdWIgcmVsZWFzZSBub3RlcyBleHRyYWN0ZWQgZnJvbSBDSEFO
R0VMT0cucnN0LgorCitUaGlzIHNjcmlwdCBpcyBtZWFudCB0byBiZSBleGVjdXRlZCBhZnRlciBh
IHN1Y2Nlc3NmdWwgZGVwbG95bWVudCBpbiBUcmF2aXMuCisKK1VzZXMgdGhlIGZvbGxvd2luZyBl
bnZpcm9ubWVudCB2YXJpYWJsZXM6CisKKyogR0lUX1RBRzogdGhlIG5hbWUgb2YgdGhlIHRhZyBv
ZiB0aGUgY3VycmVudCBjb21taXQuCisqIEdIX1JFTEVBU0VfTk9URVNfVE9LRU46IGEgcGVyc29u
YWwgYWNjZXNzIHRva2VuIHdpdGggJ3JlcG8nIHBlcm1pc3Npb25zLgorCisgIENyZWF0ZSBvbmUg
YXQ6CisKKyAgICBodHRwczovL2dpdGh1Yi5jb20vc2V0dGluZ3MvdG9rZW5zCisKKyAgSXQgc2hv
dWxkIGJlIGVuY3J5cHRlZCB1c2luZzoKKworICAgICR0cmF2aXMgZW5jcnlwdCBHSF9SRUxFQVNF
X05PVEVTX1RPS0VOPTx0b2tlbj4gLXIgcHl0ZXN0LWRldi9weXRlc3QKKworICBBbmQgdGhlIGNv
bnRlbnRzIHBhc3RlZCBpbiB0aGUgYGBkZXBsb3kuZW52LnNlY3VyZWBgIHNlY3Rpb24gaW4gdGhl
IGBgdHJhdmlzLnltbGBgIGZpbGUuCisKK1RoZSBzY3JpcHQgYWxzbyByZXF1aXJlcyBgYHBhbmRv
Y2BgIHRvIGJlIHByZXZpb3VzbHkgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVz
IFB5dGhvbjMuNisuCisiIiIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitmcm9t
IHBhdGhsaWIgaW1wb3J0IFBhdGgKKworaW1wb3J0IGdpdGh1YjMKK2ltcG9ydCBweXBhbmRvYwor
CisKK2RlZiBwdWJsaXNoX2dpdGh1Yl9yZWxlYXNlKHNsdWcsIHRva2VuLCB0YWdfbmFtZSwgYm9k
eSk6CisgICAgZ2l0aHViID0gZ2l0aHViMy5sb2dpbih0b2tlbj10b2tlbikKKyAgICBvd25lciwg
cmVwbyA9IHNsdWcuc3BsaXQoIi8iKQorICAgIHJlcG8gPSBnaXRodWIucmVwb3NpdG9yeShvd25l
ciwgcmVwbykKKyAgICByZXR1cm4gcmVwby5jcmVhdGVfcmVsZWFzZSh0YWdfbmFtZT10YWdfbmFt
ZSwgYm9keT1ib2R5KQorCisKK2RlZiBwYXJzZV9jaGFuZ2Vsb2codGFnX25hbWUpOgorICAgIHAg
PSBQYXRoKF9fZmlsZV9fKS5wYXJlbnQucGFyZW50IC8gImRvYy9lbi9jaGFuZ2Vsb2cucnN0Igor
ICAgIGNoYW5nZWxvZ19saW5lcyA9IHAucmVhZF90ZXh0KGVuY29kaW5nPSJVVEYtOCIpLnNwbGl0
bGluZXMoKQorCisgICAgdGl0bGVfcmVnZXggPSByZS5jb21waWxlKHIicHl0ZXN0IChcZFwuXGQr
XC5cZCspIFwoXGR7NH0tXGR7Mn0tXGR7Mn1cKSIpCisgICAgY29uc3VtaW5nX3ZlcnNpb24gPSBG
YWxzZQorICAgIHZlcnNpb25fbGluZXMgPSBbXQorICAgIGZvciBsaW5lIGluIGNoYW5nZWxvZ19s
aW5lczoKKyAgICAgICAgbSA9IHRpdGxlX3JlZ2V4Lm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG06
CisgICAgICAgICAgICAjIGZvdW5kIHRoZSB2ZXJzaW9uIHdlIHdhbnQ6IHN0YXJ0IHRvIGNvbnN1
bWUgbGluZXMgdW50aWwgd2UgZmluZCB0aGUgbmV4dCB2ZXJzaW9uIHRpdGxlCisgICAgICAgICAg
ICBpZiBtLmdyb3VwKDEpID09IHRhZ19uYW1lOgorICAgICAgICAgICAgICAgIGNvbnN1bWluZ192
ZXJzaW9uID0gVHJ1ZQorICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyB2ZXJzaW9uIHRpdGxlIHdo
aWxlIHBhcnNpbmcgdGhlIHZlcnNpb24gd2Ugd2FudDogYnJlYWsgb3V0CisgICAgICAgICAgICBl
bGlmIGNvbnN1bWluZ192ZXJzaW9uOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlm
IGNvbnN1bWluZ192ZXJzaW9uOgorICAgICAgICAgICAgdmVyc2lvbl9saW5lcy5hcHBlbmQobGlu
ZSkKKworICAgIHJldHVybiAiXG4iLmpvaW4odmVyc2lvbl9saW5lcykKKworCitkZWYgY29udmVy
dF9yc3RfdG9fbWQodGV4dCk6CisgICAgcmV0dXJuIHB5cGFuZG9jLmNvbnZlcnRfdGV4dCgKKyAg
ICAgICAgdGV4dCwgIm1kIiwgZm9ybWF0PSJyc3QiLCBleHRyYV9hcmdzPVsiLS13cmFwPXByZXNl
cnZlIl0KKyAgICApCisKKworZGVmIG1haW4oYXJndik6CisgICAgaWYgbGVuKGFyZ3YpID4gMToK
KyAgICAgICAgdGFnX25hbWUgPSBhcmd2WzFdCisgICAgZWxzZToKKyAgICAgICAgdGFnX25hbWUg
PSBvcy5lbnZpcm9uLmdldCgiR0lUSFVCX1JFRiIpCisgICAgICAgIGlmIG5vdCB0YWdfbmFtZToK
KyAgICAgICAgICAgIHByaW50KCJ0YWdfbmFtZSBub3QgZ2l2ZW4gYW5kICRHSVRIVUJfUkVGIG5v
dCBzZXQiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBp
ZiB0YWdfbmFtZS5zdGFydHN3aXRoKCJyZWZzL3RhZ3MvIik6CisgICAgICAgICAgICB0YWdfbmFt
ZSA9IHRhZ19uYW1lW2xlbigicmVmcy90YWdzLyIpIDpdCisKKyAgICB0b2tlbiA9IG9zLmVudmly
b24uZ2V0KCJHSF9SRUxFQVNFX05PVEVTX1RPS0VOIikKKyAgICBpZiBub3QgdG9rZW46CisgICAg
ICAgIHByaW50KCJHSF9SRUxFQVNFX05PVEVTX1RPS0VOIG5vdCBzZXQiLCBmaWxlPXN5cy5zdGRl
cnIpCisgICAgICAgIHJldHVybiAxCisKKyAgICBzbHVnID0gb3MuZW52aXJvbi5nZXQoIkdJVEhV
Ql9SRVBPU0lUT1JZIikKKyAgICBpZiBub3Qgc2x1ZzoKKyAgICAgICAgcHJpbnQoIkdJVEhVQl9S
RVBPU0lUT1JZIG5vdCBzZXQiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHJldHVybiAxCisK
KyAgICByc3RfYm9keSA9IHBhcnNlX2NoYW5nZWxvZyh0YWdfbmFtZSkKKyAgICBtZF9ib2R5ID0g
Y29udmVydF9yc3RfdG9fbWQocnN0X2JvZHkpCisgICAgaWYgbm90IHB1Ymxpc2hfZ2l0aHViX3Jl
bGVhc2Uoc2x1ZywgdG9rZW4sIHRhZ19uYW1lLCBtZF9ib2R5KToKKyAgICAgICAgcHJpbnQoIkNv
dWxkIG5vdCBwdWJsaXNoIHJlbGVhc2Ugbm90ZXM6IiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAg
ICBwcmludChtZF9ib2R5LCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHJldHVybiA1CisKKyAg
ICBwcmludCgpCisgICAgcHJpbnQoZiJSZWxlYXNlIG5vdGVzIGZvciB7dGFnX25hbWV9IHB1Ymxp
c2hlZCBzdWNjZXNzZnVsbHk6IikKKyAgICBwcmludChmImh0dHBzOi8vZ2l0aHViLmNvbS97c2x1
Z30vcmVsZWFzZXMvdGFnL3t0YWdfbmFtZX0iKQorICAgIHByaW50KCkKKyAgICByZXR1cm4gMAor
CisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJn
dikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3JlbGVhc2Utb24tY29tbWVudC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS1vbi1jb21tZW50LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2M2NjIxMTNlMDZlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9yZWxlYXNlLW9uLWNvbW1lbnQucHkKQEAgLTAsMCAr
MSwyNTQgQEAKKyIiIgorVGhpcyBzY3JpcHQgaXMgcGFydCBvZiB0aGUgcHl0ZXN0IHJlbGVhc2Ug
cHJvY2VzcyB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgY29tbWVudHMKK2luIGlzc3Vlcy4KKworVGhp
cyBzY3JpcHQgaXMgc3RhcnRlZCBieSB0aGUgYHJlbGVhc2Utb24tY29tbWVudC55bWxgIHdvcmtm
bG93LCB3aGljaCBhbHdheXMgZXhlY3V0ZXMgb24KK2BtYXN0ZXJgIGFuZCBpcyB0cmlnZ2VyZWQg
YnkgdHdvIGNvbW1lbnQgcmVsYXRlZCBldmVudHM6CisKKyogaHR0cHM6Ly9oZWxwLmdpdGh1Yi5j
b20vZW4vYWN0aW9ucy9yZWZlcmVuY2UvZXZlbnRzLXRoYXQtdHJpZ2dlci13b3JrZmxvd3MjaXNz
dWUtY29tbWVudC1ldmVudC1pc3N1ZV9jb21tZW50CisqIGh0dHBzOi8vaGVscC5naXRodWIuY29t
L2VuL2FjdGlvbnMvcmVmZXJlbmNlL2V2ZW50cy10aGF0LXRyaWdnZXItd29ya2Zsb3dzI2lzc3Vl
cy1ldmVudC1pc3N1ZXMKKworVGhpcyBzY3JpcHQgcmVjZWl2ZXMgdGhlIHBheWxvYWQgYW5kIGEg
c2VjcmV0cyBvbiB0aGUgY29tbWFuZCBsaW5lLgorCitUaGUgcGF5bG9hZCBtdXN0IGNvbnRhaW4g
YSBjb21tZW50IHdpdGggYSBwaHJhc2UgbWF0Y2hpbmcgdGhpcyBwc2V1ZG8tcmVndWxhciBleHBy
ZXNzaW9uOgorCisgICAgQHB5dGVzdGJvdCBwbGVhc2UgcHJlcGFyZSAobWFqb3IgKT8gcmVsZWFz
ZSBmcm9tIDxicmFuY2ggbmFtZT4KKworVGhlbiB0aGUgYXBwcm9wcmlhdGUgdmVyc2lvbiB3aWxs
IGJlIG9idGFpbmVkIGJhc2VkIG9uIHRoZSBnaXZlbiBicmFuY2ggbmFtZToKKworKiBhIG1ham9y
IHJlbGVhc2UgZnJvbSBtYXN0ZXIgaWYgIm1ham9yIiBhcHBlYXJzIGluIHRoZSBwaHJhc2UgaW4g
dGhhdCBwb3NpdGlvbgorKiBhIGZlYXR1cmUgb3IgYnVnIGZpeCByZWxlYXNlIGZyb20gbWFzdGVy
IChiYXNlZCBpZiB0aGVyZSBhcmUgZmVhdHVyZXMgaW4gdGhlIGN1cnJlbnQgY2hhbmdlbG9nCisg
IGZvbGRlcikKKyogYSBidWcgZml4IGZyb20gYSBtYWludGVuYW5jZSBicmFuY2gKKworQWZ0ZXIg
dGhhdCwgaXQgd2lsbCBjcmVhdGUgYSByZWxlYXNlIHVzaW5nIHRoZSBgcmVsZWFzZWAgdG94IGVu
dmlyb25tZW50LCBhbmQgcHVzaCBhIG5ldyBQUi4KKworKipTZWNyZXQqKjogY3VycmVudGx5IHRo
ZSBzZWNyZXQgaXMgZGVmaW5lZCBpbiB0aGUgQHB5dGVzdGJvdCBhY2NvdW50LCB3aGljaCB0aGUg
Y29yZSBtYWludGFpbmVycworaGF2ZSBhY2Nlc3MgdG8uIFRoZXJlIHdlIGNyZWF0ZWQgYSBuZXcg
c2VjcmV0IG5hbWVkIGBjaGF0b3BzYCB3aXRoIHdyaXRlIGFjY2VzcyB0byB0aGUgcmVwb3NpdG9y
eS4KKyIiIgoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQg
cmUKK2ltcG9ydCB0cmFjZWJhY2sKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBzdWJw
cm9jZXNzIGltcG9ydCBDYWxsZWRQcm9jZXNzRXJyb3IKK2Zyb20gc3VicHJvY2VzcyBpbXBvcnQg
Y2hlY2tfY2FsbAorZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBjaGVja19vdXRwdXQKK2Zyb20gc3Vi
cHJvY2VzcyBpbXBvcnQgcnVuCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKK2Zyb20gdHlw
aW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5n
IGltcG9ydCBUdXBsZQorCitmcm9tIGNvbG9yYW1hIGltcG9ydCBGb3JlCitmcm9tIGNvbG9yYW1h
IGltcG9ydCBpbml0Citmcm9tIGdpdGh1YjMucmVwb3MgaW1wb3J0IFJlcG9zaXRvcnkKKworCitj
bGFzcyBJbnZhbGlkRmVhdHVyZVJlbGVhc2UoRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworU0xV
RyA9ICJweXRlc3QtZGV2L3B5dGVzdCIKKworUFJfQk9EWSA9ICIiIlwKK0NyZWF0ZWQgYXV0b21h
dGljYWxseSBmcm9tIHtjb21tZW50X3VybH0uCisKK09uY2UgYWxsIGJ1aWxkcyBwYXNzIGFuZCBp
dCBoYXMgYmVlbiAqKmFwcHJvdmVkKiogYnkgb25lIG9yIG1vcmUgbWFpbnRhaW5lcnMsIHRoZSBi
dWlsZAorY2FuIGJlIHJlbGVhc2VkIGJ5IHB1c2hpbmcgYSB0YWcgYHt2ZXJzaW9ufWAgdG8gdGhp
cyByZXBvc2l0b3J5LgorIiIiCisKKworZGVmIGxvZ2luKHRva2VuOiBzdHIpIC0+IFJlcG9zaXRv
cnk6CisgICAgaW1wb3J0IGdpdGh1YjMKKworICAgIGdpdGh1YiA9IGdpdGh1YjMubG9naW4odG9r
ZW49dG9rZW4pCisgICAgb3duZXIsIHJlcG8gPSBTTFVHLnNwbGl0KCIvIikKKyAgICByZXR1cm4g
Z2l0aHViLnJlcG9zaXRvcnkob3duZXIsIHJlcG8pCisKKworZGVmIGdldF9jb21tZW50X2RhdGEo
cGF5bG9hZDogRGljdCkgLT4gc3RyOgorICAgIGlmICJjb21tZW50IiBpbiBwYXlsb2FkOgorICAg
ICAgICByZXR1cm4gcGF5bG9hZFsiY29tbWVudCJdCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJu
IHBheWxvYWRbImlzc3VlIl0KKworCitkZWYgdmFsaWRhdGVfYW5kX2dldF9pc3N1ZV9jb21tZW50
X3BheWxvYWQoCisgICAgaXNzdWVfcGF5bG9hZF9wYXRoOiBPcHRpb25hbFtQYXRoXSwKKykgLT4g
VHVwbGVbc3RyLCBzdHIsIGJvb2xdOgorICAgIHBheWxvYWQgPSBqc29uLmxvYWRzKGlzc3VlX3Bh
eWxvYWRfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9IlVURi04IikpCisgICAgYm9keSA9IGdldF9j
b21tZW50X2RhdGEocGF5bG9hZClbImJvZHkiXQorICAgIG0gPSByZS5tYXRjaChyIkBweXRlc3Ri
b3QgcGxlYXNlIHByZXBhcmUgKG1ham9yICk/cmVsZWFzZSBmcm9tIChbXHdcLV9cLl0rKSIsIGJv
ZHkpCisgICAgaWYgbToKKyAgICAgICAgaXNfbWFqb3IsIGJhc2VfYnJhbmNoID0gbS5ncm91cCgx
KSBpcyBub3QgTm9uZSwgbS5ncm91cCgyKQorICAgIGVsc2U6CisgICAgICAgIGlzX21ham9yLCBi
YXNlX2JyYW5jaCA9IEZhbHNlLCBOb25lCisgICAgcmV0dXJuIHBheWxvYWQsIGJhc2VfYnJhbmNo
LCBpc19tYWpvcgorCisKK2RlZiBwcmludF9hbmRfZXhpdChtc2cpIC0+IE5vbmU6CisgICAgcHJp
bnQobXNnKQorICAgIHJhaXNlIFN5c3RlbUV4aXQoMSkKKworCitkZWYgdHJpZ2dlcl9yZWxlYXNl
KHBheWxvYWRfcGF0aDogUGF0aCwgdG9rZW46IHN0cikgLT4gTm9uZToKKyAgICBwYXlsb2FkLCBi
YXNlX2JyYW5jaCwgaXNfbWFqb3IgPSB2YWxpZGF0ZV9hbmRfZ2V0X2lzc3VlX2NvbW1lbnRfcGF5
bG9hZCgKKyAgICAgICAgcGF5bG9hZF9wYXRoCisgICAgKQorICAgIGlmIGJhc2VfYnJhbmNoIGlz
IE5vbmU6CisgICAgICAgIHVybCA9IGdldF9jb21tZW50X2RhdGEocGF5bG9hZClbImh0bWxfdXJs
Il0KKyAgICAgICAgcHJpbnRfYW5kX2V4aXQoCisgICAgICAgICAgICBmIkNvbW1lbnQge0ZvcmUu
Q1lBTn17dXJsfXtGb3JlLlJFU0VUfSBkaWQgbm90IG1hdGNoIHRoZSB0cmlnZ2VyIGNvbW1hbmQu
IgorICAgICAgICApCisgICAgcHJpbnQoKQorICAgIHByaW50KGYiUHJlY2Vzc2luZyByZWxlYXNl
IGZvciBicmFuY2gge0ZvcmUuQ1lBTn17YmFzZV9icmFuY2h9IikKKworICAgIHJlcG8gPSBsb2dp
bih0b2tlbikKKworICAgIGlzc3VlX251bWJlciA9IHBheWxvYWRbImlzc3VlIl1bIm51bWJlciJd
CisgICAgaXNzdWUgPSByZXBvLmlzc3VlKGlzc3VlX251bWJlcikKKworICAgIGNoZWNrX2NhbGwo
WyJnaXQiLCAiY2hlY2tvdXQiLCBmIm9yaWdpbi97YmFzZV9icmFuY2h9Il0pCisKKyAgICB0cnk6
CisgICAgICAgIHZlcnNpb24gPSBmaW5kX25leHRfdmVyc2lvbihiYXNlX2JyYW5jaCwgaXNfbWFq
b3IpCisgICAgZXhjZXB0IEludmFsaWRGZWF0dXJlUmVsZWFzZSBhcyBlOgorICAgICAgICBpc3N1
ZS5jcmVhdGVfY29tbWVudChzdHIoZSkpCisgICAgICAgIHByaW50X2FuZF9leGl0KGYie0ZvcmUu
UkVEfXtlfSIpCisKKyAgICBlcnJvcl9jb250ZW50cyA9ICIiCisgICAgdHJ5OgorICAgICAgICBw
cmludChmIlZlcnNpb246IHtGb3JlLkNZQU59e3ZlcnNpb259IikKKworICAgICAgICByZWxlYXNl
X2JyYW5jaCA9IGYicmVsZWFzZS17dmVyc2lvbn0iCisKKyAgICAgICAgcnVuKAorICAgICAgICAg
ICAgWyJnaXQiLCAiY29uZmlnIiwgInVzZXIubmFtZSIsICJweXRlc3QgYm90Il0sCisgICAgICAg
ICAgICB0ZXh0PVRydWUsCisgICAgICAgICAgICBjaGVjaz1UcnVlLAorICAgICAgICAgICAgY2Fw
dHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgKQorICAgICAgICBydW4oCisgICAgICAgICAgICBb
ImdpdCIsICJjb25maWciLCAidXNlci5lbWFpbCIsICJweXRlc3Rib3RAZ21haWwuY29tIl0sCisg
ICAgICAgICAgICB0ZXh0PVRydWUsCisgICAgICAgICAgICBjaGVjaz1UcnVlLAorICAgICAgICAg
ICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgICAgIHJ1bigKKyAgICAg
ICAgICAgIFsiZ2l0IiwgImNoZWNrb3V0IiwgIi1iIiwgcmVsZWFzZV9icmFuY2gsIGYib3JpZ2lu
L3tiYXNlX2JyYW5jaH0iXSwKKyAgICAgICAgICAgIHRleHQ9VHJ1ZSwKKyAgICAgICAgICAgIGNo
ZWNrPVRydWUsCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICApCisK
KyAgICAgICAgcHJpbnQoZiJCcmFuY2gge0ZvcmUuQ1lBTn17cmVsZWFzZV9icmFuY2h9e0ZvcmUu
UkVTRVR9IGNyZWF0ZWQuIikKKworICAgICAgICAjIGltcG9ydGFudCB0byB1c2UgdG94IGhlcmUg
YmVjYXVzZSB3ZSBoYXZlIGNoYW5nZWQgYnJhbmNoZXMsIHNvIGRlcGVuZGVuY2llcworICAgICAg
ICAjIG1pZ2h0IGhhdmUgY2hhbmdlZCBhcyB3ZWxsCisgICAgICAgIGNtZGxpbmUgPSBbInRveCIs
ICItZSIsICJyZWxlYXNlIiwgIi0tIiwgdmVyc2lvbiwgIi0tc2tpcC1jaGVjay1saW5rcyJdCisg
ICAgICAgIHByaW50KCJSdW5uaW5nIiwgIiAiLmpvaW4oY21kbGluZSkpCisgICAgICAgIHJ1bigK
KyAgICAgICAgICAgIGNtZGxpbmUsIHRleHQ9VHJ1ZSwgY2hlY2s9VHJ1ZSwgY2FwdHVyZV9vdXRw
dXQ9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgICAgIG9hdXRoX3VybCA9IGYiaHR0cHM6Ly97dG9r
ZW59Ongtb2F1dGgtYmFzaWNAZ2l0aHViLmNvbS97U0xVR30uZ2l0IgorICAgICAgICBydW4oCisg
ICAgICAgICAgICBbImdpdCIsICJwdXNoIiwgb2F1dGhfdXJsLCBmIkhFQUQ6e3JlbGVhc2VfYnJh
bmNofSIsICItLWZvcmNlIl0sCisgICAgICAgICAgICB0ZXh0PVRydWUsCisgICAgICAgICAgICBj
aGVjaz1UcnVlLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgKQor
ICAgICAgICBwcmludChmIkJyYW5jaCB7Rm9yZS5DWUFOfXtyZWxlYXNlX2JyYW5jaH17Rm9yZS5S
RVNFVH0gcHVzaGVkLiIpCisKKyAgICAgICAgYm9keSA9IFBSX0JPRFkuZm9ybWF0KAorICAgICAg
ICAgICAgY29tbWVudF91cmw9Z2V0X2NvbW1lbnRfZGF0YShwYXlsb2FkKVsiaHRtbF91cmwiXSwg
dmVyc2lvbj12ZXJzaW9uCisgICAgICAgICkKKyAgICAgICAgcHIgPSByZXBvLmNyZWF0ZV9wdWxs
KAorICAgICAgICAgICAgZiJQcmVwYXJlIHJlbGVhc2Uge3ZlcnNpb259IiwKKyAgICAgICAgICAg
IGJhc2U9YmFzZV9icmFuY2gsCisgICAgICAgICAgICBoZWFkPXJlbGVhc2VfYnJhbmNoLAorICAg
ICAgICAgICAgYm9keT1ib2R5LAorICAgICAgICApCisgICAgICAgIHByaW50KGYiUHVsbCByZXF1
ZXN0IHtGb3JlLkNZQU59e3ByLnVybH17Rm9yZS5SRVNFVH0gY3JlYXRlZC4iKQorCisgICAgICAg
IGNvbW1lbnQgPSBpc3N1ZS5jcmVhdGVfY29tbWVudCgKKyAgICAgICAgICAgIGYiQXMgcmVxdWVz
dGVkLCBvcGVuZWQgYSBQUiBmb3IgcmVsZWFzZSBge3ZlcnNpb259YDogI3twci5udW1iZXJ9LiIK
KyAgICAgICAgKQorICAgICAgICBwcmludChmIk5vdGlmaWVkIGluIG9yaWdpbmFsIGNvbW1lbnQg
e0ZvcmUuQ1lBTn17Y29tbWVudC51cmx9e0ZvcmUuUkVTRVR9LiIpCisKKyAgICBleGNlcHQgQ2Fs
bGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgIGVycm9yX2NvbnRlbnRzID0gZiJDYWxsZWRQ
cm9jZXNzRXJyb3Jcbm91dHB1dDpcbntlLm91dHB1dH1cbnN0ZGVycjpcbntlLnN0ZGVycn0iCisg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgZXJyb3JfY29udGVudHMgPSBmIkV4Y2VwdGlv
bjpcbnt0cmFjZWJhY2suZm9ybWF0X2V4YygpfSIKKworICAgIGlmIGVycm9yX2NvbnRlbnRzOgor
ICAgICAgICBsaW5rID0gZiJodHRwczovL2dpdGh1Yi5jb20ve1NMVUd9L2FjdGlvbnMvcnVucy97
b3MuZW52aXJvblsnR0lUSFVCX1JVTl9JRCddfSIKKyAgICAgICAgbXNnID0gRVJST1JfQ09NTUVO
VC5mb3JtYXQoCisgICAgICAgICAgICB2ZXJzaW9uPXZlcnNpb24sIGJhc2VfYnJhbmNoPWJhc2Vf
YnJhbmNoLCBjb250ZW50cz1lcnJvcl9jb250ZW50cywgbGluaz1saW5rCisgICAgICAgICkKKyAg
ICAgICAgaXNzdWUuY3JlYXRlX2NvbW1lbnQobXNnKQorICAgICAgICBwcmludF9hbmRfZXhpdChm
IntGb3JlLlJFRH17ZXJyb3JfY29udGVudHN9IikKKyAgICBlbHNlOgorICAgICAgICBwcmludChm
IntGb3JlLkdSRUVOfVN1Y2Nlc3MuIikKKworCitFUlJPUl9DT01NRU5UID0gIiIiXAorVGhlIHJl
cXVlc3QgdG8gcHJlcGFyZSByZWxlYXNlIGB7dmVyc2lvbn1gIGZyb20ge2Jhc2VfYnJhbmNofSBm
YWlsZWQgd2l0aDoKKworYGBgCit7Y29udGVudHN9CitgYGAKKworU2VlOiB7bGlua30uCisiIiIK
KworCitkZWYgZmluZF9uZXh0X3ZlcnNpb24oYmFzZV9icmFuY2g6IHN0ciwgaXNfbWFqb3I6IGJv
b2wpIC0+IHN0cjoKKyAgICBvdXRwdXQgPSBjaGVja19vdXRwdXQoWyJnaXQiLCAidGFnIl0sIGVu
Y29kaW5nPSJVVEYtOCIpCisgICAgdmFsaWRfdmVyc2lvbnMgPSBbXQorICAgIGZvciB2IGluIG91
dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIG0gPSByZS5tYXRjaChyIlxkLlxkLlxkKyQiLCB2
LnN0cmlwKCkpCisgICAgICAgIGlmIG06CisgICAgICAgICAgICB2YWxpZF92ZXJzaW9ucy5hcHBl
bmQodHVwbGUoaW50KHgpIGZvciB4IGluIHYuc3BsaXQoIi4iKSkpCisKKyAgICB2YWxpZF92ZXJz
aW9ucy5zb3J0KCkKKyAgICBsYXN0X3ZlcnNpb24gPSB2YWxpZF92ZXJzaW9uc1stMV0KKworICAg
IGNoYW5nZWxvZyA9IFBhdGgoImNoYW5nZWxvZyIpCisKKyAgICBmZWF0dXJlcyA9IGxpc3QoY2hh
bmdlbG9nLmdsb2IoIiouZmVhdHVyZS5yc3QiKSkKKyAgICBicmVha2luZyA9IGxpc3QoY2hhbmdl
bG9nLmdsb2IoIiouYnJlYWtpbmcucnN0IikpCisgICAgaXNfZmVhdHVyZV9yZWxlYXNlID0gZmVh
dHVyZXMgb3IgYnJlYWtpbmcKKworICAgIGlmIGlzX2ZlYXR1cmVfcmVsZWFzZSBhbmQgYmFzZV9i
cmFuY2ggIT0gIm1hc3RlciI6CisgICAgICAgIG1zZyA9IGRlZGVudCgKKyAgICAgICAgICAgIGYi
IiIKKyAgICAgICAgICAgIEZvdW5kIGZlYXR1cmVzIG9yIGJyZWFraW5nIGNoYW5nZXMgaW4gYHti
YXNlX2JyYW5jaH1gLCBhbmQgZmVhdHVyZSByZWxlYXNlcyBjYW4gb25seSBiZQorICAgICAgICAg
ICAgY3JlYXRlZCBmcm9tIGBtYXN0ZXJgLiI6CisgICAgICAgICIiIgorICAgICAgICApCisgICAg
ICAgIG1zZyArPSAiXG4iLmpvaW4oZiIqIGB7eC5uYW1lfWAiIGZvciB4IGluIHNvcnRlZChmZWF0
dXJlcyArIGJyZWFraW5nKSkKKyAgICAgICAgcmFpc2UgSW52YWxpZEZlYXR1cmVSZWxlYXNlKG1z
ZykKKworICAgIGlmIGlzX21ham9yOgorICAgICAgICByZXR1cm4gZiJ7bGFzdF92ZXJzaW9uWzBd
KzF9LjAuMCIKKyAgICBlbGlmIGlzX2ZlYXR1cmVfcmVsZWFzZToKKyAgICAgICAgcmV0dXJuIGYi
e2xhc3RfdmVyc2lvblswXX0ue2xhc3RfdmVyc2lvblsxXSArIDF9LjAiCisgICAgZWxzZToKKyAg
ICAgICAgcmV0dXJuIGYie2xhc3RfdmVyc2lvblswXX0ue2xhc3RfdmVyc2lvblsxXX0ue2xhc3Rf
dmVyc2lvblsyXSArIDF9IgorCisKK2RlZiBtYWluKCkgLT4gTm9uZToKKyAgICBpbml0KGF1dG9y
ZXNldD1UcnVlKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCJwYXlsb2FkIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJ0
b2tlbiIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICB0cmlnZ2VyX3Jl
bGVhc2UoUGF0aChvcHRpb25zLnBheWxvYWQpLCBvcHRpb25zLnRva2VuKQorCisKK2lmIF9fbmFt
ZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
Y3JpcHRzL3JlbGVhc2UubWlub3IucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9yZWxlYXNlLm1p
bm9yLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc2ZTQ0N2Yw
YzZkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS5taW5v
ci5yc3QKQEAgLTAsMCArMSwyNCBAQAorcHl0ZXN0LXt2ZXJzaW9ufQorPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBweXRlc3QgdGVhbSBpcyBwcm91ZCB0byBh
bm5vdW5jZSB0aGUge3ZlcnNpb259IHJlbGVhc2UhCisKK1RoaXMgcmVsZWFzZSBjb250YWlucyBu
ZXcgZmVhdHVyZXMsIGltcHJvdmVtZW50cywgYnVnIGZpeGVzLCBhbmQgYnJlYWtpbmcgY2hhbmdl
cywgc28gdXNlcnMKK2FyZSBlbmNvdXJhZ2VkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBDSEFOR0VM
T0cgY2FyZWZ1bGx5OgorCisgICAgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2No
YW5nZWxvZy5odG1sCisKK0ZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQ6
CisKKyAgICBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvCisKK0FzIHVzdWFsLCB5
b3UgY2FuIHVwZ3JhZGUgZnJvbSBQeVBJIHZpYToKKworICAgIHBpcCBpbnN0YWxsIC1VIHB5dGVz
dAorCitUaGFua3MgdG8gYWxsIG9mIHRoZSBjb250cmlidXRvcnMgdG8gdGhpcyByZWxlYXNlOgor
Cit7Y29udHJpYnV0b3JzfQorCitIYXBweSB0ZXN0aW5nLAorVGhlIHB5dGVzdCBEZXZlbG9wbWVu
dCBUZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9yZWxlYXNlLnBhdGNoLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS5wYXRjaC5yc3QKc2ltaWxhcml0eSBpbmRleCA2
NSUKcmVuYW1lIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGFza3MvcmVsZWFzZS5wYXRjaC5yc3QKcmVuYW1l
IHRvIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS5wYXRjaC5yc3QKaW5kZXggMTk4MmRjMzUz
YzRiLi41OWZiZTUwY2UwZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3JlbGVhc2Uu
cGF0Y2gucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVsZWFzZS5wYXRjaC5yc3QKQEAg
LTcsOSArNyw5IEBAIFRoaXMgaXMgYSBidWctZml4IHJlbGVhc2UsIGJlaW5nIGEgZHJvcC1pbiBy
ZXBsYWNlbWVudC4gVG8gdXBncmFkZTo6CiAKICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHB5dGVz
dAogCi1UaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9kb2MucHl0ZXN0
Lm9yZy9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwuCitUaGUgZnVsbCBjaGFuZ2Vsb2cgaXMgYXZh
aWxhYmxlIGF0IGh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9jaGFuZ2Vsb2cuaHRt
bC4KIAotVGhhbmtzIHRvIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlLCBhbW9u
ZyB0aGVtOgorVGhhbmtzIHRvIGFsbCBvZiB0aGUgY29udHJpYnV0b3JzIHRvIHRoaXMgcmVsZWFz
ZToKIAoge2NvbnRyaWJ1dG9yc30KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9y
ZWxlYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9yZWxlYXNlLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWUzMTU4YWI1MmIzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9yZWxlYXNlLnB5CkBAIC0wLDAgKzEsMTI2IEBACisiIiJJ
bnZva2UgZGV2ZWxvcG1lbnQgdGFza3MuIiIiCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcwor
ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNhbGwKK2Zy
b20gc3VicHJvY2VzcyBpbXBvcnQgY2hlY2tfY2FsbAorZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBj
aGVja19vdXRwdXQKKworZnJvbSBjb2xvcmFtYSBpbXBvcnQgRm9yZQorZnJvbSBjb2xvcmFtYSBp
bXBvcnQgaW5pdAorCisKK2RlZiBhbm5vdW5jZSh2ZXJzaW9uKToKKyAgICAiIiJHZW5lcmF0ZXMg
YSBuZXcgcmVsZWFzZSBhbm5vdW5jZW1lbnQgZW50cnkgaW4gdGhlIGRvY3MuIiIiCisgICAgIyBH
ZXQgb3VyIGxpc3Qgb2YgYXV0aG9ycworICAgIHN0ZG91dCA9IGNoZWNrX291dHB1dChbImdpdCIs
ICJkZXNjcmliZSIsICItLWFiYnJldj0wIiwgIi0tdGFncyJdKQorICAgIHN0ZG91dCA9IHN0ZG91
dC5kZWNvZGUoInV0Zi04IikKKyAgICBsYXN0X3ZlcnNpb24gPSBzdGRvdXQuc3RyaXAoKQorCisg
ICAgc3Rkb3V0ID0gY2hlY2tfb3V0cHV0KAorICAgICAgICBbImdpdCIsICJsb2ciLCAie30uLkhF
QUQiLmZvcm1hdChsYXN0X3ZlcnNpb24pLCAiLS1mb3JtYXQ9JWFOIl0KKyAgICApCisgICAgc3Rk
b3V0ID0gc3Rkb3V0LmRlY29kZSgidXRmLTgiKQorCisgICAgY29udHJpYnV0b3JzID0gc2V0KHN0
ZG91dC5zcGxpdGxpbmVzKCkpCisKKyAgICB0ZW1wbGF0ZV9uYW1lID0gKAorICAgICAgICAicmVs
ZWFzZS5taW5vci5yc3QiIGlmIHZlcnNpb24uZW5kc3dpdGgoIi4wIikgZWxzZSAicmVsZWFzZS5w
YXRjaC5yc3QiCisgICAgKQorICAgIHRlbXBsYXRlX3RleHQgPSAoCisgICAgICAgIFBhdGgoX19m
aWxlX18pLnBhcmVudC5qb2lucGF0aCh0ZW1wbGF0ZV9uYW1lKS5yZWFkX3RleHQoZW5jb2Rpbmc9
IlVURi04IikKKyAgICApCisKKyAgICBjb250cmlidXRvcnNfdGV4dCA9ICgKKyAgICAgICAgIlxu
Ii5qb2luKCIqIHt9Ii5mb3JtYXQobmFtZSkgZm9yIG5hbWUgaW4gc29ydGVkKGNvbnRyaWJ1dG9y
cykpICsgIlxuIgorICAgICkKKyAgICB0ZXh0ID0gdGVtcGxhdGVfdGV4dC5mb3JtYXQodmVyc2lv
bj12ZXJzaW9uLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzX3RleHQpCisKKyAgICB0YXJnZXQg
PSBQYXRoKF9fZmlsZV9fKS5wYXJlbnQuam9pbnBhdGgoCisgICAgICAgICIuLi9kb2MvZW4vYW5u
b3VuY2UvcmVsZWFzZS17fS5yc3QiLmZvcm1hdCh2ZXJzaW9uKQorICAgICkKKyAgICB0YXJnZXQu
d3JpdGVfdGV4dCh0ZXh0LCBlbmNvZGluZz0iVVRGLTgiKQorICAgIHByaW50KGYie0ZvcmUuQ1lB
Tn1bZ2VuZXJhdGUuYW5ub3VuY2VdIHtGb3JlLlJFU0VUfUdlbmVyYXRlZCB7dGFyZ2V0Lm5hbWV9
IikKKworICAgICMgVXBkYXRlIGluZGV4IHdpdGggdGhlIG5ldyByZWxlYXNlIGVudHJ5CisgICAg
aW5kZXhfcGF0aCA9IFBhdGgoX19maWxlX18pLnBhcmVudC5qb2lucGF0aCgiLi4vZG9jL2VuL2Fu
bm91bmNlL2luZGV4LnJzdCIpCisgICAgbGluZXMgPSBpbmRleF9wYXRoLnJlYWRfdGV4dChlbmNv
ZGluZz0iVVRGLTgiKS5zcGxpdGxpbmVzKCkKKyAgICBpbmRlbnQgPSAiICAgIgorICAgIGZvciBp
bmRleCwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dp
dGgoInt9cmVsZWFzZS0iLmZvcm1hdChpbmRlbnQpKToKKyAgICAgICAgICAgIG5ld19saW5lID0g
aW5kZW50ICsgdGFyZ2V0LnN0ZW0KKyAgICAgICAgICAgIGlmIGxpbmUgIT0gbmV3X2xpbmU6Cisg
ICAgICAgICAgICAgICAgbGluZXMuaW5zZXJ0KGluZGV4LCBuZXdfbGluZSkKKyAgICAgICAgICAg
ICAgICBpbmRleF9wYXRoLndyaXRlX3RleHQoIlxuIi5qb2luKGxpbmVzKSArICJcbiIsIGVuY29k
aW5nPSJVVEYtOCIpCisgICAgICAgICAgICAgICAgcHJpbnQoCisgICAgICAgICAgICAgICAgICAg
IGYie0ZvcmUuQ1lBTn1bZ2VuZXJhdGUuYW5ub3VuY2VdIHtGb3JlLlJFU0VUfVVwZGF0ZWQge2lu
ZGV4X3BhdGgubmFtZX0iCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBwcmludCgKKyAgICAgICAgICAgICAgICAgICAgZiJ7Rm9yZS5DWUFOfVtn
ZW5lcmF0ZS5hbm5vdW5jZV0ge0ZvcmUuUkVTRVR9U2tpcCB7aW5kZXhfcGF0aC5uYW1lfSAoYWxy
ZWFkeSBjb250YWlucyByZWxlYXNlKSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBi
cmVhaworCisgICAgY2hlY2tfY2FsbChbImdpdCIsICJhZGQiLCBzdHIodGFyZ2V0KV0pCisKKwor
ZGVmIHJlZ2VuKHZlcnNpb24pOgorICAgICIiIkNhbGwgcmVnZW5kb2MgdG9vbCB0byB1cGRhdGUg
ZXhhbXBsZXMgYW5kIHB5dGVzdCBvdXRwdXQgaW4gdGhlIGRvY3MuIiIiCisgICAgcHJpbnQoZiJ7
Rm9yZS5DWUFOfVtnZW5lcmF0ZS5yZWdlbl0ge0ZvcmUuUkVTRVR9VXBkYXRpbmcgZG9jcyIpCisg
ICAgY2hlY2tfY2FsbCgKKyAgICAgICAgWyJ0b3giLCAiLWUiLCAicmVnZW4iXSwKKyAgICAgICAg
ZW52PXsqKm9zLmVudmlyb24sICJTRVRVUFRPT0xTX1NDTV9QUkVURU5EX1ZFUlNJT04iOiB2ZXJz
aW9ufSwKKyAgICApCisKKworZGVmIGZpeF9mb3JtYXR0aW5nKCk6CisgICAgIiIiUnVucyBwcmUt
Y29tbWl0IGluIGFsbCBmaWxlcyB0byBlbnN1cmUgdGhleSBhcmUgZm9ybWF0dGVkIGNvcnJlY3Rs
eSIiIgorICAgIHByaW50KAorICAgICAgICBmIntGb3JlLkNZQU59W2dlbmVyYXRlLmZpeCBsaW50
aW5nXSB7Rm9yZS5SRVNFVH1GaXhpbmcgZm9ybWF0dGluZyB1c2luZyBwcmUtY29tbWl0IgorICAg
ICkKKyAgICBjYWxsKFsicHJlLWNvbW1pdCIsICJydW4iLCAiLS1hbGwtZmlsZXMiXSkKKworCitk
ZWYgY2hlY2tfbGlua3MoKToKKyAgICAiIiJSdW5zIHNwaGlueC1idWlsZCB0byBjaGVjayBsaW5r
cyIiIgorICAgIHByaW50KGYie0ZvcmUuQ1lBTn1bZ2VuZXJhdGUuY2hlY2tfbGlua3NdIHtGb3Jl
LlJFU0VUfUNoZWNraW5nIGxpbmtzIikKKyAgICBjaGVja19jYWxsKFsidG94IiwgIi1lIiwgImRv
Y3MtY2hlY2tsaW5rcyJdKQorCisKK2RlZiBwcmVfcmVsZWFzZSh2ZXJzaW9uLCAqLCBza2lwX2No
ZWNrX2xpbmtzKToKKyAgICAiIiJHZW5lcmF0ZXMgbmV3IGRvY3MsIHJlbGVhc2UgYW5ub3VuY2Vt
ZW50cyBhbmQgY3JlYXRlcyBhIGxvY2FsIHRhZy4iIiIKKyAgICBhbm5vdW5jZSh2ZXJzaW9uKQor
ICAgIHJlZ2VuKHZlcnNpb24pCisgICAgY2hhbmdlbG9nKHZlcnNpb24sIHdyaXRlX291dD1UcnVl
KQorICAgIGZpeF9mb3JtYXR0aW5nKCkKKyAgICBpZiBub3Qgc2tpcF9jaGVja19saW5rczoKKyAg
ICAgICAgY2hlY2tfbGlua3MoKQorCisgICAgbXNnID0gIlByZXBhcmUgcmVsZWFzZSB2ZXJzaW9u
IHt9Ii5mb3JtYXQodmVyc2lvbikKKyAgICBjaGVja19jYWxsKFsiZ2l0IiwgImNvbW1pdCIsICIt
YSIsICItbSIsIG1zZ10pCisKKyAgICBwcmludCgpCisgICAgcHJpbnQoZiJ7Rm9yZS5DWUFOfVtn
ZW5lcmF0ZS5wcmVfcmVsZWFzZV0ge0ZvcmUuR1JFRU59QWxsIGRvbmUhIikKKyAgICBwcmludCgp
CisgICAgcHJpbnQoIlBsZWFzZSBwdXNoIHlvdXIgYnJhbmNoIGFuZCBvcGVuIGEgUFIuIikKKwor
CitkZWYgY2hhbmdlbG9nKHZlcnNpb24sIHdyaXRlX291dD1GYWxzZSk6CisgICAgaWYgd3JpdGVf
b3V0OgorICAgICAgICBhZGRvcHRzID0gW10KKyAgICBlbHNlOgorICAgICAgICBhZGRvcHRzID0g
WyItLWRyYWZ0Il0KKyAgICBjaGVja19jYWxsKFsidG93bmNyaWVyIiwgIi0teWVzIiwgIi0tdmVy
c2lvbiIsIHZlcnNpb25dICsgYWRkb3B0cykKKworCitkZWYgbWFpbigpOgorICAgIGluaXQoYXV0
b3Jlc2V0PVRydWUpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoInZlcnNpb24iLCBoZWxwPSJSZWxlYXNlIHZlcnNpb24iKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tc2tpcC1jaGVjay1saW5rcyIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdz
KCkKKyAgICBwcmVfcmVsZWFzZShvcHRpb25zLnZlcnNpb24sIHNraXBfY2hlY2tfbGlua3M9b3B0
aW9ucy5za2lwX2NoZWNrX2xpbmtzKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Cisg
ICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3JlcG9ydC1jb3ZlcmFn
ZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvcmVwb3J0LWNvdmVyYWdlLnNoCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmJjZjIwY2E5MjlmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9yZXBvcnQtY292ZXJhZ2Uuc2gKQEAgLTAsMCArMSwx
OCBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorCitzZXQgLWUKK3NldCAteAorCitpZiBbIC16ICIk
VE9YRU5WIiBdOyB0aGVuCisgIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCBjb3ZlcmFnZQorZWxzZQor
ICAjIEFkZCBsYXN0IFRPWEVOViB0byAkUEFUSC4KKyAgUEFUSD0iJFBXRC8udG94LyR7VE9YRU5W
IyMqLH0vYmluOiRQQVRIIgorZmkKKworcHl0aG9uIC1tIGNvdmVyYWdlIGNvbWJpbmUKK3B5dGhv
biAtbSBjb3ZlcmFnZSB4bWwKK3B5dGhvbiAtbSBjb3ZlcmFnZSByZXBvcnQgLW0KKyMgU2V0IC0t
Y29ubmVjdC10aW1lb3V0IHRvIHdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1
cmwvaXNzdWVzLzQ0NjEKK2N1cmwgLVMgLUwgLS1jb25uZWN0LXRpbWVvdXQgNSAtLXJldHJ5IDYg
LXMgaHR0cHM6Ly9jb2RlY292LmlvL2Jhc2ggLW8gY29kZWNvdi11cGxvYWQuc2gKK2Jhc2ggY29k
ZWNvdi11cGxvYWQuc2ggLVogLVggZml4IC1mIGNvdmVyYWdlLnhtbCAiJEAiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zY3JpcHRzL3Rvd25jcmllci1kcmFmdC10by1maWxlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc2NyaXB0cy90b3duY3JpZXItZHJhZnQtdG8tZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgxNTA3YjQwYjc1ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NjcmlwdHMvdG93bmNyaWVyLWRyYWZ0LXRvLWZpbGUucHkKQEAgLTAsMCAr
MSwxNSBAQAoraW1wb3J0IHN5cworZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBjYWxsCisKKworZGVm
IG1haW4oKToKKyAgICAiIiIKKyAgICBQbGF0Zm9ybSBhZ25vc3RpYyB3cmFwcGVyIHNjcmlwdCBm
b3IgdG93bmNyaWVyLgorICAgIEZpeGVzIHRoZSBpc3N1ZSAoIzcyNTEpIHdoZXJlIHdpbmRvd3Mg
dXNlcnMgYXJlIHVuYWJsZSB0byBuYXRpdmVseSBydW4gdG94IC1lIGRvY3MgdG8gYnVpbGQgcHl0
ZXN0IGRvY3MuCisgICAgIiIiCisgICAgd2l0aCBvcGVuKCJkb2MvZW4vX2NoYW5nZWxvZ190b3du
Y3JpZXJfZHJhZnQucnN0IiwgInciKSBhcyBkcmFmdF9maWxlOgorICAgICAgICByZXR1cm4gY2Fs
bCgoInRvd25jcmllciIsICItLWRyYWZ0IiksIHN0ZG91dD1kcmFmdF9maWxlKQorCisKK2lmIF9f
bmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc2NyaXB0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMTQ2M2VjZGU0
NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3Jp
cHRzL2NhbGwtdG94LmJhdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NjcmlwdHMvaW5zdGFsbC1weXB5LmJhdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2V0dXAuY2Zn
CmluZGV4IDgxNjUzOWUyZWM2Zi4uNjBmNjU2NDlhYWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zZXR1cC5jZmcKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2V0dXAuY2ZnCkBAIC0xLDMgKzEsODMgQEAK
K1ttZXRhZGF0YV0KK25hbWUgPSBweXRlc3QKK2Rlc2NyaXB0aW9uID0gcHl0ZXN0OiBzaW1wbGUg
cG93ZXJmdWwgdGVzdGluZyB3aXRoIFB5dGhvbgorbG9uZ19kZXNjcmlwdGlvbiA9IGZpbGU6IFJF
QURNRS5yc3QKK2xvbmdfZGVzY3JpcHRpb25fY29udGVudF90eXBlID0gdGV4dC94LXJzdAordXJs
ID0gaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0LworYXV0aG9yID0gSG9sZ2VyIEty
ZWtlbCwgQnJ1bm8gT2xpdmVpcmEsIFJvbm55IFBmYW5uc2NobWlkdCwgRmxvcmlzIEJydXlub29n
aGUsIEJyaWFubmEgTGF1Z2hlciwgRmxvcmlhbiBCcnVoaW4gYW5kIG90aGVycworbGljZW5zZSA9
IE1JVAorbGljZW5zZV9maWxlID0gTElDRU5TRQorcGxhdGZvcm1zID0gdW5peCwgbGludXgsIG9z
eCwgY3lnd2luLCB3aW4zMgorY2xhc3NpZmllcnMgPSAKKwlEZXZlbG9wbWVudCBTdGF0dXMgOjog
NiAtIE1hdHVyZQorCUludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMKKwlMaWNlbnNlIDo6
IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorCU9wZXJhdGluZyBTeXN0ZW0gOjogTWFjT1Mg
OjogTWFjT1MgWAorCU9wZXJhdGluZyBTeXN0ZW0gOjogTWljcm9zb2Z0IDo6IFdpbmRvd3MKKwlP
cGVyYXRpbmcgU3lzdGVtIDo6IFBPU0lYCisJUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9u
IDo6IDMKKwlQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyA6OiBPbmx5CisJUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNQorCVByb2dyYW1taW5nIExhbmd1YWdl
IDo6IFB5dGhvbiA6OiAzLjYKKwlQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43
CisJUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOAorCVByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiA6OiAzLjkKKwlUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6
OiBMaWJyYXJpZXMKKwlUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBUZXN0aW5nCisJ
VG9waWMgOjogVXRpbGl0aWVzCitrZXl3b3JkcyA9IHRlc3QsIHVuaXR0ZXN0Citwcm9qZWN0X3Vy
bHMgPSAKKwlTb3VyY2U9aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0CisJVHJh
Y2tlcj1odHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzCisKK1tvcHRp
b25zXQorcGFja2FnZXMgPSAKKwlfcHl0ZXN0CisJX3B5dGVzdC5fY29kZQorCV9weXRlc3QuX2lv
CisJX3B5dGVzdC5hc3NlcnRpb24KKwlfcHl0ZXN0LmNvbmZpZworCV9weXRlc3QubWFyaworCXB5
dGVzdAoraW5zdGFsbF9yZXF1aXJlcyA9IAorCWF0dHJzPj0xNy40LjAKKwlpbmljb25maWcKKwlw
YWNrYWdpbmcKKwlwbHVnZ3k+PTAuMTIsPDEuMAorCXB5Pj0xLjguMgorCXRvbWwKKwlhdG9taWN3
cml0ZXM+PTEuMDtzeXNfcGxhdGZvcm09PSJ3aW4zMiIKKwljb2xvcmFtYTtzeXNfcGxhdGZvcm09
PSJ3aW4zMiIKKwlpbXBvcnRsaWItbWV0YWRhdGE+PTAuMTI7cHl0aG9uX3ZlcnNpb248IjMuOCIK
KwlwYXRobGliMj49Mi4yLjA7cHl0aG9uX3ZlcnNpb248IjMuNiIKK3B5dGhvbl9yZXF1aXJlcyA9
ID49My41CitwYWNrYWdlX2RpciA9IAorCT1zcmMKK3NldHVwX3JlcXVpcmVzID0gCisJc2V0dXB0
b29scz49NDAuMAorCXNldHVwdG9vbHMtc2NtCit6aXBfc2FmZSA9IG5vCisKK1tvcHRpb25zLmVu
dHJ5X3BvaW50c10KK2NvbnNvbGVfc2NyaXB0cyA9IAorCXB5dGVzdD1weXRlc3Q6Y29uc29sZV9t
YWluCisJcHkudGVzdD1weXRlc3Q6Y29uc29sZV9tYWluCisKK1tvcHRpb25zLmV4dHJhc19yZXF1
aXJlXQorY2hlY2txYS1teXB5ID0gCisJbXlweT09MC43ODAKK3Rlc3RpbmcgPSAKKwlhcmdjb21w
bGV0ZQorCWh5cG90aGVzaXM+PTMuNTYKKwltb2NrCisJbm9zZQorCXJlcXVlc3RzCisJeG1sc2No
ZW1hCisKK1tvcHRpb25zLnBhY2thZ2VfZGF0YV0KK19weXRlc3QgPSBweS50eXBlZAorcHl0ZXN0
ID0gcHkudHlwZWQKKwogW2J1aWxkX3NwaGlueF0KIHNvdXJjZS1kaXIgPSBkb2MvZW4vCiBidWls
ZC1kaXIgPSBkb2MvYnVpbGQKQEAgLTYsMTUgKzg2LDI4IEBAIGFsbF9maWxlcyA9IDEKIFt1cGxv
YWRfc3BoaW54XQogdXBsb2FkLWRpciA9IGRvYy9lbi9idWlsZC9odG1sCiAKLVtiZGlzdF93aGVl
bF0KLXVuaXZlcnNhbCA9IDEKLQogW2NoZWNrLW1hbmlmZXN0XQotaWdub3JlID0KLSAgX3B5dGVz
dC9fdmVyc2lvbi5weQotCi1bbWV0YWRhdGFdCi1saWNlbnNlX2ZpbGUgPSBMSUNFTlNFCitpZ25v
cmUgPSAKKwlzcmMvX3B5dGVzdC9fdmVyc2lvbi5weQogCiBbZGV2cGk6dXBsb2FkXQogZm9ybWF0
cyA9IHNkaXN0LnRneixiZGlzdF93aGVlbAorCitbbXlweV0KK215cHlfcGF0aCA9IHNyYworY2hl
Y2tfdW50eXBlZF9kZWZzID0gVHJ1ZQorZGlzYWxsb3dfYW55X2dlbmVyaWNzID0gVHJ1ZQoraWdu
b3JlX21pc3NpbmdfaW1wb3J0cyA9IFRydWUKK25vX2ltcGxpY2l0X29wdGlvbmFsID0gVHJ1ZQor
c2hvd19lcnJvcl9jb2RlcyA9IFRydWUKK3N0cmljdF9lcXVhbGl0eSA9IFRydWUKK3dhcm5fcmVk
dW5kYW50X2Nhc3RzID0gVHJ1ZQord2Fybl9yZXR1cm5fYW55ID0gVHJ1ZQord2Fybl91bnJlYWNo
YWJsZSA9IFRydWUKK3dhcm5fdW51c2VkX2NvbmZpZ3MgPSBUcnVlCitub19pbXBsaWNpdF9yZWV4
cG9ydCA9IFRydWUKKworW2VnZ19pbmZvXQordGFnX2J1aWxkID0gCit0YWdfZGF0ZSA9IDAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zZXR1cC5weQpp
bmRleCAzZDYwZDZiZWNmODQuLjdmMWExNzYzY2E5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c2V0dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2V0dXAucHkKQEAgLTEsMTI0ICsxLDQgQEAKLWlt
cG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHNldHVwdG9vbHMKLWltcG9ydCBwa2dfcmVzb3Vy
Y2VzCiBmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCiAKLWNsYXNzaWZpZXJzID0gWwotICAg
ICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNiAtIE1hdHVyZSIsCi0gICAgIkludGVuZGVkIEF1ZGll
bmNlIDo6IERldmVsb3BlcnMiLAotICAgICJMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQg
TGljZW5zZSIsCi0gICAgIk9wZXJhdGluZyBTeXN0ZW0gOjogUE9TSVgiLAotICAgICJPcGVyYXRp
bmcgU3lzdGVtIDo6IE1pY3Jvc29mdCA6OiBXaW5kb3dzIiwKLSAgICAiT3BlcmF0aW5nIFN5c3Rl
bSA6OiBNYWNPUyA6OiBNYWNPUyBYIiwKLSAgICAiVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1l
bnQgOjogVGVzdGluZyIsCi0gICAgIlRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExp
YnJhcmllcyIsCi0gICAgIlRvcGljIDo6IFV0aWxpdGllcyIsCi1dICsgWwotICAgICgiUHJvZ3Jh
bW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6ICVzIiAlIHgpCi0gICAgZm9yIHggaW4gIjIgMi43
IDMgMy40IDMuNSAzLjYgMy43Ii5zcGxpdCgpCi1dCi0KLXdpdGggb3BlbigiUkVBRE1FLnJzdCIp
IGFzIGZkOgotICAgIGxvbmdfZGVzY3JpcHRpb24gPSBmZC5yZWFkKCkKLQotCi1kZWYgZ2V0X2Vu
dmlyb25tZW50X21hcmtlcl9zdXBwb3J0X2xldmVsKCk6Ci0gICAgIiIiCi0gICAgVGVzdHMgaG93
IHdlbGwgc2V0dXB0b29scyBzdXBwb3J0cyBQRVAtNDI2IGVudmlyb25tZW50IG1hcmtlci4KLQot
ICAgIFRoZSBmaXJzdCBrbm93biByZWxlYXNlIHRvIHN1cHBvcnQgaXQgaXMgMC43IChhbmQgdGhl
IGVhcmxpZXN0IG9uIFB5UEkgc2VlbXMgdG8gYmUgMC43LjIKLSAgICBzbyB3ZSdyZSB1c2luZyB0
aGF0KSwgc2VlOiBodHRwczovL3NldHVwdG9vbHMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2hp
c3RvcnkuaHRtbCNpZDM1MAotCi0gICAgVGhlIHN1cHBvcnQgaXMgbGF0ZXIgZW5oYW5jZWQgdG8g
YWxsb3cgZGlyZWN0IGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgaW5zaWRlIGluc3RhbGxfcmVxdWly
ZXMsCi0gICAgd2hpY2ggaXMgbm93IHJlY29tbWVuZGVkIGJ5IHNldHVwdG9vbHMuIEl0IGZpcnN0
IGFwcGVhcmVkIGluIDM2LjIuMCwgd2VudCBicm9rZW4gd2l0aCAzNi4yLjEsIGFuZAotICAgIGFn
YWluIHdvcmtlZCBzaW5jZSAzNi4yLjIsIHNvIHdlJ3JlIHVzaW5nIHRoYXQuIFNlZToKLSAgICBo
dHRwczovL3NldHVwdG9vbHMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2hpc3RvcnkuaHRtbCN2
MzYtMi0yCi0gICAgaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvc2V0dXB0b29scy9pc3N1ZXMvMTA5
OQotCi0gICAgUmVmZXJlbmNlczoKLQotICAgICogaHR0cHM6Ly93aGVlbC5yZWFkdGhlZG9jcy5p
by9lbi9sYXRlc3QvaW5kZXguaHRtbCNkZWZpbmluZy1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMK
LSAgICAqIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0MjYvI2Vudmlyb25t
ZW50LW1hcmtlcnMKLSAgICAqIGh0dHBzOi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9s
YXRlc3Qvc2V0dXB0b29scy5odG1sI2RlY2xhcmluZy1wbGF0Zm9ybS1zcGVjaWZpYy1kZXBlbmRl
bmNpZXMKLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHZlcnNpb24gPSBwa2dfcmVzb3VyY2Vz
LnBhcnNlX3ZlcnNpb24oc2V0dXB0b29scy5fX3ZlcnNpb25fXykKLSAgICAgICAgaWYgdmVyc2lv
biA+PSBwa2dfcmVzb3VyY2VzLnBhcnNlX3ZlcnNpb24oIjM2LjIuMiIpOgotICAgICAgICAgICAg
cmV0dXJuIDIKLSAgICAgICAgaWYgdmVyc2lvbiA+PSBwa2dfcmVzb3VyY2VzLnBhcnNlX3ZlcnNp
b24oIjAuNy4yIik6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZXhjOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDb3VsZCBub3QgdGVzdCBzZXR1cHRv
b2wncyB2ZXJzaW9uOiAlc1xuIiAlIGV4YykKLQotICAgICMgYXMgb2YgdGVzdGluZyBvbiAyMDE4
LTA1LTI2IGZlZG9yYSB3YXMgb24gdmVyc2lvbiAzNyogYW5kIGRlYmlhbiB3YXMgb24gdmVyc2lv
biAzMysKLSAgICAjIHdlIHNob3VsZCBjb25zaWRlciBlcnJvcmluZyBvbiB0aG9zZQotICAgIHJl
dHVybiAwCi0KLQotZGVmIG1haW4oKToKLSAgICBleHRyYXNfcmVxdWlyZSA9IHt9Ci0gICAgaW5z
dGFsbF9yZXF1aXJlcyA9IFsKLSAgICAgICAgInB5Pj0xLjUuMCIsCi0gICAgICAgICJzaXg+PTEu
MTAuMCIsCi0gICAgICAgICJzZXR1cHRvb2xzIiwKLSAgICAgICAgImF0dHJzPj0xNy40LjAiLAot
ICAgICAgICAibW9yZS1pdGVydG9vbHM+PTQuMC4wIiwKLSAgICAgICAgImF0b21pY3dyaXRlcz49
MS4wIiwKLSAgICBdCi0gICAgIyBpZiBfUFlURVNUX1NFVFVQX1NLSVBfUExVR0dZX0RFUCBpcyBz
ZXQsIHNraXAgaW5zdGFsbGluZyBwbHVnZ3k7Ci0gICAgIyB1c2VkIGJ5IHRveC5pbmkgdG8gdGVz
dCB3aXRoIHBsdWdneSBtYXN0ZXIKLSAgICBpZiAiX1BZVEVTVF9TRVRVUF9TS0lQX1BMVUdHWV9E
RVAiIG5vdCBpbiBvcy5lbnZpcm9uOgotICAgICAgICBpbnN0YWxsX3JlcXVpcmVzLmFwcGVuZCgi
cGx1Z2d5Pj0wLjUsPDAuNyIpCi0gICAgZW52aXJvbm1lbnRfbWFya2VyX3N1cHBvcnRfbGV2ZWwg
PSBnZXRfZW52aXJvbm1lbnRfbWFya2VyX3N1cHBvcnRfbGV2ZWwoKQotICAgIGlmIGVudmlyb25t
ZW50X21hcmtlcl9zdXBwb3J0X2xldmVsID49IDI6Ci0gICAgICAgIGluc3RhbGxfcmVxdWlyZXMu
YXBwZW5kKCdmdW5jc2lncztweXRob25fdmVyc2lvbjwiMy4wIicpCi0gICAgICAgIGluc3RhbGxf
cmVxdWlyZXMuYXBwZW5kKCdjb2xvcmFtYTtzeXNfcGxhdGZvcm09PSJ3aW4zMiInKQotICAgIGVs
aWYgZW52aXJvbm1lbnRfbWFya2VyX3N1cHBvcnRfbGV2ZWwgPT0gMToKLSAgICAgICAgZXh0cmFz
X3JlcXVpcmVbJzpweXRob25fdmVyc2lvbjwiMy4wIiddID0gWyJmdW5jc2lncyJdCi0gICAgICAg
IGV4dHJhc19yZXF1aXJlWyc6c3lzX3BsYXRmb3JtPT0id2luMzIiJ10gPSBbImNvbG9yYW1hIl0K
LSAgICBlbHNlOgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAgICAg
ICAgIGluc3RhbGxfcmVxdWlyZXMuYXBwZW5kKCJjb2xvcmFtYSIpCi0gICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm8gPCAoMywgMCk6Ci0gICAgICAgICAgICBpbnN0YWxsX3JlcXVpcmVzLmFwcGVu
ZCgiZnVuY3NpZ3MiKQotCi0gICAgc2V0dXAoCi0gICAgICAgIG5hbWU9InB5dGVzdCIsCi0gICAg
ICAgIGRlc2NyaXB0aW9uPSJweXRlc3Q6IHNpbXBsZSBwb3dlcmZ1bCB0ZXN0aW5nIHdpdGggUHl0
aG9uIiwKLSAgICAgICAgbG9uZ19kZXNjcmlwdGlvbj1sb25nX2Rlc2NyaXB0aW9uLAotICAgICAg
ICB1c2Vfc2NtX3ZlcnNpb249eyJ3cml0ZV90byI6ICJzcmMvX3B5dGVzdC9fdmVyc2lvbi5weSJ9
LAotICAgICAgICB1cmw9Imh0dHA6Ly9weXRlc3Qub3JnIiwKLSAgICAgICAgcHJvamVjdF91cmxz
PXsKLSAgICAgICAgICAgICJTb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYv
cHl0ZXN0IiwKLSAgICAgICAgICAgICJUcmFja2VyIjogImh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMiLAotICAgICAgICB9LAotICAgICAgICBsaWNlbnNlPSJNSVQg
bGljZW5zZSIsCi0gICAgICAgIHBsYXRmb3Jtcz1bInVuaXgiLCAibGludXgiLCAib3N4IiwgImN5
Z3dpbiIsICJ3aW4zMiJdLAotICAgICAgICBhdXRob3I9KAotICAgICAgICAgICAgIkhvbGdlciBL
cmVrZWwsIEJydW5vIE9saXZlaXJhLCBSb25ueSBQZmFubnNjaG1pZHQsICIKLSAgICAgICAgICAg
ICJGbG9yaXMgQnJ1eW5vb2doZSwgQnJpYW5uYSBMYXVnaGVyLCBGbG9yaWFuIEJydWhpbiBhbmQg
b3RoZXJzIgotICAgICAgICApLAotICAgICAgICBlbnRyeV9wb2ludHM9eyJjb25zb2xlX3Njcmlw
dHMiOiBbInB5dGVzdD1weXRlc3Q6bWFpbiIsICJweS50ZXN0PXB5dGVzdDptYWluIl19LAotICAg
ICAgICBjbGFzc2lmaWVycz1jbGFzc2lmaWVycywKLSAgICAgICAga2V5d29yZHM9InRlc3QgdW5p
dHRlc3QiLAotICAgICAgICAjIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHJl
bGVhc2UKLSAgICAgICAgc2V0dXBfcmVxdWlyZXM9WyJzZXR1cHRvb2xzLXNjbSJdLAotICAgICAg
ICBwYWNrYWdlX2Rpcj17IiI6ICJzcmMifSwKLSAgICAgICAgcHl0aG9uX3JlcXVpcmVzPSI+PTIu
NywgIT0zLjAuKiwgIT0zLjEuKiwgIT0zLjIuKiwgIT0zLjMuKiIsCi0gICAgICAgIGluc3RhbGxf
cmVxdWlyZXM9aW5zdGFsbF9yZXF1aXJlcywKLSAgICAgICAgZXh0cmFzX3JlcXVpcmU9ZXh0cmFz
X3JlcXVpcmUsCi0gICAgICAgIHBhY2thZ2VzPVsKLSAgICAgICAgICAgICJfcHl0ZXN0IiwKLSAg
ICAgICAgICAgICJfcHl0ZXN0LmFzc2VydGlvbiIsCi0gICAgICAgICAgICAiX3B5dGVzdC5fY29k
ZSIsCi0gICAgICAgICAgICAiX3B5dGVzdC5tYXJrIiwKLSAgICAgICAgICAgICJfcHl0ZXN0LmNv
bmZpZyIsCi0gICAgICAgIF0sCi0gICAgICAgIHB5X21vZHVsZXM9WyJweXRlc3QiXSwKLSAgICAg
ICAgemlwX3NhZmU9RmFsc2UsCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
Ci0gICAgbWFpbigpCisgICAgc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvX2FyZ2NvbXBsZXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2FyZ2NvbXBs
ZXRlLnB5CmluZGV4IDhmNDgwZDcxZDc5Zi4uM2RiZGY5MzE4YmU3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5CkBAIC0xLDggKzEsOCBAQAorIiIiQWxsb3cgYmFzaC1j
b21wbGV0aW9uIGZvciBhcmdwYXJzZSB3aXRoIGFyZ2NvbXBsZXRlIGlmIGluc3RhbGxlZC4KIAot
IiIiYWxsb3cgYmFzaC1jb21wbGV0aW9uIGZvciBhcmdwYXJzZSB3aXRoIGFyZ2NvbXBsZXRlIGlm
IGluc3RhbGxlZAotbmVlZHMgYXJnY29tcGxldGU+PTAuNS42IGZvciBweXRob24gMy4yLzMuMyAo
b2xkZXIgdmVyc2lvbnMgZmFpbAorTmVlZHMgYXJnY29tcGxldGU+PTAuNS42IGZvciBweXRob24g
My4yLzMuMyAob2xkZXIgdmVyc2lvbnMgZmFpbAogdG8gZmluZCB0aGUgbWFnaWMgc3RyaW5nLCBz
byBfQVJHQ09NUExFVEUgZW52LiB2YXIgaXMgbmV2ZXIgc2V0LCBhbmQKLXRoaXMgZG9lcyBub3Qg
bmVlZCBzcGVjaWFsIGNvZGUuCit0aGlzIGRvZXMgbm90IG5lZWQgc3BlY2lhbCBjb2RlKS4KIAog
RnVuY3Rpb24gdHJ5X2FyZ2NvbXBsZXRlKHBhcnNlcikgc2hvdWxkIGJlIGNhbGxlZCBkaXJlY3Rs
eSBiZWZvcmUKIHRoZSBjYWxsIHRvIEFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3MoKS4KQEAgLTEx
LDggKzExLDcgQEAgVGhlIGZpbGVzY29tcGxldGVyIGlzIHdoYXQgeW91IG5vcm1hbGx5IHdvdWxk
IHVzZSBvbiB0aGUgcG9zaXRpb25hbAogYXJndW1lbnRzIHNwZWNpZmljYXRpb24sIGluIG9yZGVy
IHRvIGdldCAiZGlybmFtZS8iIGFmdGVyICJkaXJuPFRBQj4iCiBpbnN0ZWFkIG9mIHRoZSBkZWZh
dWx0ICJkaXJuYW1lICI6CiAKLSAgIG9wdHBhcnNlci5hZGRfYXJndW1lbnQoQ29uZmlnLl9maWxl
X29yX2RpciwgbmFyZ3M9JyonCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5jb21w
bGV0ZXI9ZmlsZXNjb21wbGV0ZXIKKyAgIG9wdHBhcnNlci5hZGRfYXJndW1lbnQoQ29uZmlnLl9m
aWxlX29yX2RpciwgbmFyZ3M9JyonKS5jb21wbGV0ZXI9ZmlsZXNjb21wbGV0ZXIKIAogT3RoZXIs
IGFwcGxpY2F0aW9uIHNwZWNpZmljLCBjb21wbGV0ZXJzIHNob3VsZCBnbyBpbiB0aGUgZmlsZQog
ZG9pbmcgdGhlIGFkZF9hcmd1bWVudCBjYWxscyBhcyB0aGV5IG5lZWQgdG8gYmUgc3BlY2lmaWVk
IGFzIC5jb21wbGV0ZXIKQEAgLTIxLDUzICsyMCw2NCBAQCBhdHRyaWJ1dGUgcG9pbnRzIHRvIHdp
bGwgbm90IGJlIHVzZWQpLgogCiBTUEVFRFVQCiA9PT09PT09CisKIFRoZSBnZW5lcmljIGFyZ2Nv
bXBsZXRlIHNjcmlwdCBmb3IgYmFzaC1jb21wbGV0aW9uCi0oL2V0Yy9iYXNoX2NvbXBsZXRpb24u
ZC9weXRob24tYXJnY29tcGxldGUuc2ggKQorKC9ldGMvYmFzaF9jb21wbGV0aW9uLmQvcHl0aG9u
LWFyZ2NvbXBsZXRlLnNoKQogdXNlcyBhIHB5dGhvbiBwcm9ncmFtIHRvIGRldGVybWluZSBzdGFy
dHVwIHNjcmlwdCBnZW5lcmF0ZWQgYnkgcGlwLgogWW91IGNhbiBzcGVlZCB1cCBjb21wbGV0aW9u
IHNvbWV3aGF0IGJ5IGNoYW5naW5nIHRoaXMgc2NyaXB0IHRvIGluY2x1ZGUKICAgIyBQWVRIT05f
QVJHQ09NUExFVEVfT0sKIHNvIHRoZSB0aGUgcHl0aG9uLWFyZ2NvbXBsZXRlLWNoZWNrLWVhc3kt
aW5zdGFsbC1zY3JpcHQgZG9lcyBub3QKIG5lZWQgdG8gYmUgY2FsbGVkIHRvIGZpbmQgdGhlIGVu
dHJ5IHBvaW50IG9mIHRoZSBjb2RlIGFuZCBzZWUgaWYgdGhhdCBpcwotbWFya2VkICB3aXRoIFBZ
VEhPTl9BUkdDT01QTEVURV9PSworbWFya2VkICB3aXRoIFBZVEhPTl9BUkdDT01QTEVURV9PSy4K
IAogSU5TVEFMTC9ERUJVR0dJTkcKID09PT09PT09PT09PT09PT09CisKIFRvIGluY2x1ZGUgdGhp
cyBzdXBwb3J0IGluIGFub3RoZXIgYXBwbGljYXRpb24gdGhhdCBoYXMgc2V0dXAucHkgZ2VuZXJh
dGVkCiBzY3JpcHRzOgotLSBhZGQgdGhlIGxpbmU6CisKKy0gQWRkIHRoZSBsaW5lOgogICAgICMg
UFlUSE9OX0FSR0NPTVBMRVRFX09LCi0gIG5lYXIgdGhlIHRvcCBvZiB0aGUgbWFpbiBweXRob24g
ZW50cnkgcG9pbnQKLS0gaW5jbHVkZSBpbiB0aGUgZmlsZSBjYWxsaW5nIHBhcnNlX2FyZ3MoKToK
KyAgbmVhciB0aGUgdG9wIG9mIHRoZSBtYWluIHB5dGhvbiBlbnRyeSBwb2ludC4KKworLSBJbmNs
dWRlIGluIHRoZSBmaWxlIGNhbGxpbmcgcGFyc2VfYXJncygpOgogICAgIGZyb20gX2FyZ2NvbXBs
ZXRlIGltcG9ydCB0cnlfYXJnY29tcGxldGUsIGZpbGVzY29tcGxldGVyCi0gICAsIGNhbGwgdHJ5
X2FyZ2NvbXBsZXRlIGp1c3QgYmVmb3JlIHBhcnNlX2FyZ3MoKSwgYW5kIG9wdGlvbmFsbHkgYWRk
Ci0gICBmaWxlc2NvbXBsZXRlciB0byB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMnIGFkZF9hcmd1
bWVudCgpCisgIENhbGwgdHJ5X2FyZ2NvbXBsZXRlIGp1c3QgYmVmb3JlIHBhcnNlX2FyZ3MoKSwg
YW5kIG9wdGlvbmFsbHkgYWRkCisgIGZpbGVzY29tcGxldGVyIHRvIHRoZSBwb3NpdGlvbmFsIGFy
Z3VtZW50cycgYWRkX2FyZ3VtZW50KCkuCisKIElmIHRoaW5ncyBkbyBub3Qgd29yayByaWdodCBh
d2F5OgotLSBzd2l0Y2ggb24gYXJnY29tcGxldGUgZGVidWdnaW5nIHdpdGggKGFsc28gaGVscGZ1
bCB3aGVuIGRvaW5nIGN1c3RvbQorCistIFN3aXRjaCBvbiBhcmdjb21wbGV0ZSBkZWJ1Z2dpbmcg
d2l0aCAoYWxzbyBoZWxwZnVsIHdoZW4gZG9pbmcgY3VzdG9tCiAgIGNvbXBsZXRlcnMpOgogICAg
IGV4cG9ydCBfQVJDX0RFQlVHPTEKLS0gcnVuOgorCistIFJ1bjoKICAgICBweXRob24tYXJnY29t
cGxldGUtY2hlY2stZWFzeS1pbnN0YWxsLXNjcmlwdCAkKHdoaWNoIGFwcG5hbWUpCiAgICAgZWNo
byAkPwotICB3aWxsIGVjaG8gMCBpZiB0aGUgbWFnaWMgbGluZSBoYXMgYmVlbiBmb3VuZCwgMSBp
ZiBub3QKLS0gc29tZXRpbWVzIGl0IGhlbHBzIHRvIGZpbmQgZWFybHkgb24gZXJyb3JzIHVzaW5n
OgorICB3aWxsIGVjaG8gMCBpZiB0aGUgbWFnaWMgbGluZSBoYXMgYmVlbiBmb3VuZCwgMSBpZiBu
b3QuCisKKy0gU29tZXRpbWVzIGl0IGhlbHBzIHRvIGZpbmQgZWFybHkgb24gZXJyb3JzIHVzaW5n
OgogICAgIF9BUkdDT01QTEVURT0xIF9BUkNfREVCVUc9MSBhcHBuYW1lCiAgIHdoaWNoIHNob3Vs
ZCB0aHJvdyBhIEtleUVycm9yOiAnQ09NUExJTkUnICh3aGljaCBpcyBwcm9wZXJseSBzZXQgYnkg
dGhlCiAgIGdsb2JhbCBhcmdjb21wbGV0ZSBzY3JpcHQpLgogIiIiCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQg
c3lzCitpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBvcworaW1wb3J0IHN5cwogZnJvbSBnbG9iIGlt
cG9ydCBnbG9iCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgTGlz
dAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAKIAotY2xhc3MgRmFzdEZpbGVzQ29tcGxl
dGVyKG9iamVjdCk6Ci0gICAgIkZhc3QgZmlsZSBjb21wbGV0ZXIgY2xhc3MiCitjbGFzcyBGYXN0
RmlsZXNDb21wbGV0ZXI6CisgICAgIiIiRmFzdCBmaWxlIGNvbXBsZXRlciBjbGFzcy4iIiIKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXJlY3Rvcmllcz1UcnVlKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZGlyZWN0b3JpZXM6IGJvb2wgPSBUcnVlKSAtPiBOb25lOgogICAgICAgICBzZWxm
LmRpcmVjdG9yaWVzID0gZGlyZWN0b3JpZXMKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwcmVm
aXgsICoqa3dhcmdzKToKLSAgICAgICAgIiIib25seSBjYWxsZWQgb24gbm9uIG9wdGlvbiBjb21w
bGV0aW9ucyIiIgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwcmVmaXg6IHN0ciwgKiprd2FyZ3M6
IEFueSkgLT4gTGlzdFtzdHJdOgorICAgICAgICAjIE9ubHkgY2FsbGVkIG9uIG5vbiBvcHRpb24g
Y29tcGxldGlvbnMuCiAgICAgICAgIGlmIG9zLnBhdGguc2VwIGluIHByZWZpeFsxOl06CiAgICAg
ICAgICAgICBwcmVmaXhfZGlyID0gbGVuKG9zLnBhdGguZGlybmFtZShwcmVmaXgpICsgb3MucGF0
aC5zZXApCiAgICAgICAgIGVsc2U6CkBAIC03NSw3ICs4NSw3IEBAIGNsYXNzIEZhc3RGaWxlc0Nv
bXBsZXRlcihvYmplY3QpOgogICAgICAgICBjb21wbGV0aW9uID0gW10KICAgICAgICAgZ2xvYmJl
ZCA9IFtdCiAgICAgICAgIGlmICIqIiBub3QgaW4gcHJlZml4IGFuZCAiPyIgbm90IGluIHByZWZp
eDoKLSAgICAgICAgICAgICMgd2UgYXJlIG9uIHVuaXgsIG90aGVyd2lzZSBubyBiYXNoCisgICAg
ICAgICAgICAjIFdlIGFyZSBvbiB1bml4LCBvdGhlcndpc2Ugbm8gYmFzaC4KICAgICAgICAgICAg
IGlmIG5vdCBwcmVmaXggb3IgcHJlZml4Wy0xXSA9PSBvcy5wYXRoLnNlcDoKICAgICAgICAgICAg
ICAgICBnbG9iYmVkLmV4dGVuZChnbG9iKHByZWZpeCArICIuKiIpKQogICAgICAgICAgICAgcHJl
Zml4ICs9ICIqIgpAQCAtODMsNyArOTMsNyBAQCBjbGFzcyBGYXN0RmlsZXNDb21wbGV0ZXIob2Jq
ZWN0KToKICAgICAgICAgZm9yIHggaW4gc29ydGVkKGdsb2JiZWQpOgogICAgICAgICAgICAgaWYg
b3MucGF0aC5pc2Rpcih4KToKICAgICAgICAgICAgICAgICB4ICs9ICIvIgotICAgICAgICAgICAg
IyBhcHBlbmQgc3RyaXBwaW5nIHRoZSBwcmVmaXggKGxpa2UgYmFzaCwgbm90IGxpa2UgY29tcGdl
bikKKyAgICAgICAgICAgICMgQXBwZW5kIHN0cmlwcGluZyB0aGUgcHJlZml4IChsaWtlIGJhc2gs
IG5vdCBsaWtlIGNvbXBnZW4pLgogICAgICAgICAgICAgY29tcGxldGlvbi5hcHBlbmQoeFtwcmVm
aXhfZGlyOl0pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uCiAKQEAgLTkzLDE1ICsxMDMsMTUg
QEAgaWYgb3MuZW52aXJvbi5nZXQoIl9BUkdDT01QTEVURSIpOgogICAgICAgICBpbXBvcnQgYXJn
Y29tcGxldGUuY29tcGxldGVycwogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgc3lz
LmV4aXQoLTEpCi0gICAgZmlsZXNjb21wbGV0ZXIgPSBGYXN0RmlsZXNDb21wbGV0ZXIoKQorICAg
IGZpbGVzY29tcGxldGVyID0gRmFzdEZpbGVzQ29tcGxldGVyKCkgICMgdHlwZTogT3B0aW9uYWxb
RmFzdEZpbGVzQ29tcGxldGVyXQogCi0gICAgZGVmIHRyeV9hcmdjb21wbGV0ZShwYXJzZXIpOgor
ICAgIGRlZiB0cnlfYXJnY29tcGxldGUocGFyc2VyOiBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcikg
LT4gTm9uZToKICAgICAgICAgYXJnY29tcGxldGUuYXV0b2NvbXBsZXRlKHBhcnNlciwgYWx3YXlz
X2NvbXBsZXRlX29wdGlvbnM9RmFsc2UpCiAKIAogZWxzZToKIAotICAgIGRlZiB0cnlfYXJnY29t
cGxldGUocGFyc2VyKToKKyAgICBkZWYgdHJ5X2FyZ2NvbXBsZXRlKHBhcnNlcjogYXJncGFyc2Uu
QXJndW1lbnRQYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhc3MKIAogICAgIGZpbGVzY29tcGxl
dGVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvX19p
bml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weQppbmRl
eCA4MTVjMTNiNDJjMjUuLjUxMWQwZGRlNjYxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvX2NvZGUvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
X2NvZGUvX19pbml0X18ucHkKQEAgLTEsMTAgKzEsMjIgQEAKLSIiIiBweXRob24gaW5zcGVjdGlv
bi9jb2RlIGdlbmVyYXRpb24gQVBJICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotZnJvbSAuY29kZSBpbXBvcnQgQ29k
ZSAgIyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvICAjIG5vcWEKLWZyb20g
LmNvZGUgaW1wb3J0IEZyYW1lICAjIG5vcWEKLWZyb20gLmNvZGUgaW1wb3J0IFRyYWNlYmFjayAg
IyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBnZXRyYXdjb2RlICAjIG5vcWEKLWZyb20gLnNvdXJj
ZSBpbXBvcnQgU291cmNlICAjIG5vcWEKLWZyb20gLnNvdXJjZSBpbXBvcnQgY29tcGlsZV8gYXMg
Y29tcGlsZSAgIyBub3FhCi1mcm9tIC5zb3VyY2UgaW1wb3J0IGdldGZzbGluZW5vICAjIG5vcWEK
KyIiIlB5dGhvbiBpbnNwZWN0aW9uL2NvZGUgZ2VuZXJhdGlvbiBBUEkuIiIiCitmcm9tIC5jb2Rl
IGltcG9ydCBDb2RlCitmcm9tIC5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIC5jb2Rl
IGltcG9ydCBmaWx0ZXJfdHJhY2ViYWNrCitmcm9tIC5jb2RlIGltcG9ydCBGcmFtZQorZnJvbSAu
Y29kZSBpbXBvcnQgZ2V0ZnNsaW5lbm8KK2Zyb20gLmNvZGUgaW1wb3J0IFRyYWNlYmFjaworZnJv
bSAuY29kZSBpbXBvcnQgVHJhY2ViYWNrRW50cnkKK2Zyb20gLnNvdXJjZSBpbXBvcnQgZ2V0cmF3
Y29kZQorZnJvbSAuc291cmNlIGltcG9ydCBTb3VyY2UKKworX19hbGxfXyA9IFsKKyAgICAiQ29k
ZSIsCisgICAgIkV4Y2VwdGlvbkluZm8iLAorICAgICJmaWx0ZXJfdHJhY2ViYWNrIiwKKyAgICAi
RnJhbWUiLAorICAgICJnZXRmc2xpbmVubyIsCisgICAgImdldHJhd2NvZGUiLAorICAgICJUcmFj
ZWJhY2siLAorICAgICJUcmFjZWJhY2tFbnRyeSIsCisgICAgIlNvdXJjZSIsCitdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fcHkydHJhY2ViYWNrLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvX3B5MnRyYWNlYmFjay5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmRkMTAwYzMzYmRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvX3B5MnRyYWNlYmFjay5weQorKysgL2Rldi9udWxsCkBA
IC0xLDg5ICswLDAgQEAKLSMgY29waWVkIGZyb20gcHl0aG9uLTIuNy4zJ3MgdHJhY2ViYWNrLnB5
Ci0jIENIQU5HRVM6Ci0jIC0gc29tZV9zdHIgaXMgcmVwbGFjZWQsIHRyeWluZyB0byBjcmVhdGUg
dW5pY29kZSBzdHJpbmdzCi0jCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgdHlwZXMKLWZyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUKLQotCi1kZWYgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KGV0eXBlLCB2YWx1ZSk6
Ci0gICAgIiIiRm9ybWF0IHRoZSBleGNlcHRpb24gcGFydCBvZiBhIHRyYWNlYmFjay4KLQotICAg
IFRoZSBhcmd1bWVudHMgYXJlIHRoZSBleGNlcHRpb24gdHlwZSBhbmQgdmFsdWUgc3VjaCBhcyBn
aXZlbiBieQotICAgIHN5cy5sYXN0X3R5cGUgYW5kIHN5cy5sYXN0X3ZhbHVlLiBUaGUgcmV0dXJu
IHZhbHVlIGlzIGEgbGlzdCBvZgotICAgIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGlu
ZS4KLQotICAgIE5vcm1hbGx5LCB0aGUgbGlzdCBjb250YWlucyBhIHNpbmdsZSBzdHJpbmc7IGhv
d2V2ZXIsIGZvcgotICAgIFN5bnRheEVycm9yIGV4Y2VwdGlvbnMsIGl0IGNvbnRhaW5zIHNldmVy
YWwgbGluZXMgdGhhdCAod2hlbgotICAgIHByaW50ZWQpIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3Jt
YXRpb24gYWJvdXQgd2hlcmUgdGhlIHN5bnRheAotICAgIGVycm9yIG9jY3VycmVkLgotCi0gICAg
VGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlz
IHRoZSBsYXN0Ci0gICAgc3RyaW5nIGluIHRoZSBsaXN0LgotCi0gICAgIiIiCi0KLSAgICAjIEFu
IGluc3RhbmNlIHNob3VsZCBub3QgaGF2ZSBhIG1lYW5pbmdmdWwgdmFsdWUgcGFyYW1ldGVyLCBi
dXQKLSAgICAjIHNvbWV0aW1lcyBkb2VzLCBwYXJ0aWN1bGFybHkgZm9yIHN0cmluZyBleGNlcHRp
b25zLCBzdWNoIGFzCi0gICAgIyA+Pj4gcmFpc2Ugc3RyaW5nMSwgc3RyaW5nMiAgIyBkZXByZWNh
dGVkCi0gICAgIwotICAgICMgQ2xlYXIgdGhlc2Ugb3V0IGZpcnN0IGJlY2F1c2UgaXNzdWJ0eXBl
KHN0cmluZzEsIFN5bnRheEVycm9yKQotICAgICMgd291bGQgdGhyb3cgYW5vdGhlciBleGNlcHRp
b24gYW5kIG1hc2sgdGhlIG9yaWdpbmFsIHByb2JsZW0uCi0gICAgaWYgKAotICAgICAgICBpc2lu
c3RhbmNlKGV0eXBlLCBCYXNlRXhjZXB0aW9uKQotICAgICAgICBvciBpc2luc3RhbmNlKGV0eXBl
LCB0eXBlcy5JbnN0YW5jZVR5cGUpCi0gICAgICAgIG9yIGV0eXBlIGlzIE5vbmUKLSAgICAgICAg
b3IgdHlwZShldHlwZSkgaXMgc3RyCi0gICAgKToKLSAgICAgICAgcmV0dXJuIFtfZm9ybWF0X2Zp
bmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSldCi0KLSAgICBzdHlwZSA9IGV0eXBlLl9fbmFtZV9f
Ci0KLSAgICBpZiBub3QgaXNzdWJjbGFzcyhldHlwZSwgU3ludGF4RXJyb3IpOgotICAgICAgICBy
ZXR1cm4gW19mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUsIHZhbHVlKV0KLQotICAgICMgSXQg
d2FzIGEgc3ludGF4IGVycm9yOyBzaG93IGV4YWN0bHkgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZv
dW5kLgotICAgIGxpbmVzID0gW10KLSAgICB0cnk6Ci0gICAgICAgIG1zZywgKGZpbGVuYW1lLCBs
aW5lbm8sIG9mZnNldCwgYmFkbGluZSkgPSB2YWx1ZS5hcmdzCi0gICAgZXhjZXB0IEV4Y2VwdGlv
bjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUg
b3IgIjxzdHJpbmc+IgotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgRmlsZSAiJXMiLCBsaW5lICVk
XG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pKQotICAgICAgICBpZiBiYWRsaW5lIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShiYWRsaW5lLCBieXRlcyk6ICAjIHB5dGhvbiAy
IG9ubHkKLSAgICAgICAgICAgICAgICBiYWRsaW5lID0gYmFkbGluZS5kZWNvZGUoInV0Zi04Iiwg
InJlcGxhY2UiKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHUiICAgICVzXG4iICUgYmFkbGlu
ZS5zdHJpcCgpKQotICAgICAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgICAgIGNhcmV0c3BhY2UgPSBiYWRsaW5lLnJzdHJpcCgiXG4iKVs6b2Zmc2V0XS5sc3RyaXAo
KQotICAgICAgICAgICAgICAgICMgbm9uLXNwYWNlIHdoaXRlc3BhY2UgKGxpa2VzIHRhYnMpIG11
c3QgYmUga2VwdCBmb3IgYWxpZ25tZW50Ci0gICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9ICgo
Yy5pc3NwYWNlKCkgYW5kIGMgb3IgIiAiKSBmb3IgYyBpbiBjYXJldHNwYWNlKQotICAgICAgICAg
ICAgICAgICMgb25seSB0aHJlZSBzcGFjZXMgdG8gYWNjb3VudCBmb3Igb2Zmc2V0MSA9PSBwb3Mg
MAotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgJXNeXG4iICUgIiIuam9pbihjYXJl
dHNwYWNlKSkKLSAgICAgICAgdmFsdWUgPSBtc2cKLQotICAgIGxpbmVzLmFwcGVuZChfZm9ybWF0
X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2YWx1ZSkpCi0gICAgcmV0dXJuIGxpbmVzCi0KLQotZGVm
IF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoZXR5cGUsIHZhbHVlKToKLSAgICAiIiJSZXR1cm4gYSBs
aXN0IG9mIGEgc2luZ2xlIGxpbmUgLS0gbm9ybWFsIGNhc2UgZm9yIGZvcm1hdF9leGNlcHRpb25f
b25seSIiIgotICAgIHZhbHVlc3RyID0gX3NvbWVfc3RyKHZhbHVlKQotICAgIGlmIHZhbHVlIGlz
IE5vbmUgb3Igbm90IHZhbHVlc3RyOgotICAgICAgICBsaW5lID0gIiVzXG4iICUgZXR5cGUKLSAg
ICBlbHNlOgotICAgICAgICBsaW5lID0gIiVzOiAlc1xuIiAlIChldHlwZSwgdmFsdWVzdHIpCi0g
ICAgcmV0dXJuIGxpbmUKLQotCi1kZWYgX3NvbWVfc3RyKHZhbHVlKToKLSAgICB0cnk6Ci0gICAg
ICAgIHJldHVybiB0ZXh0X3R5cGUodmFsdWUpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbjoKLSAgICAgICAgICAgIHBhc3MKLSAgICByZXR1cm4gIjx1bnByaW50YWJsZSAlcyBv
YmplY3Q+IiAlIHR5cGUodmFsdWUpLl9fbmFtZV9fCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9fY29kZS9jb2RlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUv
Y29kZS5weQppbmRleCBjYjc4OGMxN2YwNGIuLjUwNjNlNjYwNDc3NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvY29kZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9fY29kZS9jb2RlLnB5CkBAIC0xLDg2ICsxLDExMSBAQAotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0
IGluc3BlY3QKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawotZnJvbSBp
bnNwZWN0IGltcG9ydCBDT19WQVJBUkdTLCBDT19WQVJLRVlXT1JEUworZnJvbSBpbnNwZWN0IGlt
cG9ydCBDT19WQVJBUkdTCitmcm9tIGluc3BlY3QgaW1wb3J0IENPX1ZBUktFWVdPUkRTCitmcm9t
IGlvIGltcG9ydCBTdHJpbmdJTworZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGNlcHRp
b25fb25seQorZnJvbSB0eXBlcyBpbXBvcnQgQ29kZVR5cGUKK2Zyb20gdHlwZXMgaW1wb3J0IEZy
YW1lVHlwZQorZnJvbSB0eXBlcyBpbXBvcnQgVHJhY2ViYWNrVHlwZQorZnJvbSB0eXBpbmcgaW1w
b3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQg
RGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVy
YWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBNYXBwaW5n
Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBQYXR0ZXJu
Citmcm9tIHR5cGluZyBpbXBvcnQgU2VxdWVuY2UKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXQKK2Zy
b20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKK2Zyb20g
dHlwaW5nIGltcG9ydCBVbmlvbgorZnJvbSB3ZWFrcmVmIGltcG9ydCByZWYKIAogaW1wb3J0IGF0
dHIKLWltcG9ydCByZQotZnJvbSB3ZWFrcmVmIGltcG9ydCByZWYKLWZyb20gX3B5dGVzdC5jb21w
YXQgaW1wb3J0IF9QWTIsIF9QWTMsIFBZMzUsIHNhZmVfc3RyCi1mcm9tIHNpeCBpbXBvcnQgdGV4
dF90eXBlCitpbXBvcnQgcGx1Z2d5CiBpbXBvcnQgcHkKIAotYnVpbHRpbl9yZXByID0gcmVwcgot
Ci1pZiBfUFkzOgotICAgIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjZXB0aW9uX29u
bHkKLWVsc2U6Ci0gICAgZnJvbSAuX3B5MnRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4Y2VwdGlv
bl9vbmx5Ci0KLQotY2xhc3MgQ29kZShvYmplY3QpOgotICAgICIiIiB3cmFwcGVyIGFyb3VuZCBQ
eXRob24gY29kZSBvYmplY3RzICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhd2NvZGUp
OgoraW1wb3J0IF9weXRlc3QKK2Zyb20gX3B5dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IGZpbmRz
b3VyY2UKK2Zyb20gX3B5dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IGdldHJhd2NvZGUKK2Zyb20g
X3B5dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IGdldHN0YXRlbWVudHJhbmdlX2FzdAorZnJvbSBf
cHl0ZXN0Ll9jb2RlLnNvdXJjZSBpbXBvcnQgU291cmNlCitmcm9tIF9weXRlc3QuX2lvIGltcG9y
dCBUZXJtaW5hbFdyaXRlcgorZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgc2FmZWZv
cm1hdAorZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgc2FmZXJlcHIKK2Zyb20gX3B5
dGVzdC5jb21wYXQgaW1wb3J0IEFUVFJTX0VRX0ZJRUxECitmcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBmaW5hbAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0X3JlYWxfZnVuYworZnJv
bSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgb3ZlcmxvYWQKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1w
b3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCisKK2lm
IFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKKyAgICBmcm9tIHR5
cGluZ19leHRlbnNpb25zIGltcG9ydCBMaXRlcmFsCisgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBS
ZWZlcmVuY2VUeXBlCisKKyAgICBfVHJhY2ViYWNrU3R5bGUgPSBMaXRlcmFsWyJsb25nIiwgInNo
b3J0IiwgImxpbmUiLCAibm8iLCAibmF0aXZlIiwgInZhbHVlIiwgImF1dG8iXQorCisKK2NsYXNz
IENvZGU6CisgICAgIiIiV3JhcHBlciBhcm91bmQgUHl0aG9uIGNvZGUgb2JqZWN0cy4iIiIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXdjb2RlKSAtPiBOb25lOgogICAgICAgICBpZiBub3Qg
aGFzYXR0cihyYXdjb2RlLCAiY29fZmlsZW5hbWUiKToKICAgICAgICAgICAgIHJhd2NvZGUgPSBn
ZXRyYXdjb2RlKHJhd2NvZGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuZmlsZW5h
bWUgPSByYXdjb2RlLmNvX2ZpbGVuYW1lCi0gICAgICAgICAgICBzZWxmLmZpcnN0bGluZW5vID0g
cmF3Y29kZS5jb19maXJzdGxpbmVubyAtIDEKLSAgICAgICAgICAgIHNlbGYubmFtZSA9IHJhd2Nv
ZGUuY29fbmFtZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoIm5vdCBhIGNvZGUgb2JqZWN0OiAlciIgJSAocmF3Y29kZSwpKQorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShyYXdjb2RlLCBDb2RlVHlwZSk6CisgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoIm5vdCBhIGNvZGUgb2JqZWN0OiB7IXJ9Ii5mb3JtYXQocmF3Y29kZSkp
CisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSByYXdjb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgIHNl
bGYuZmlyc3RsaW5lbm8gPSByYXdjb2RlLmNvX2ZpcnN0bGluZW5vIC0gMQorICAgICAgICBzZWxm
Lm5hbWUgPSByYXdjb2RlLmNvX25hbWUKICAgICAgICAgc2VsZi5yYXcgPSByYXdjb2RlCiAKICAg
ICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIHNlbGYucmF3ID09IG90
aGVyLnJhdwogCi0gICAgX19oYXNoX18gPSBOb25lCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90
aGVyKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmID09IG90aGVyCisgICAgIyBJZ25vcmUgdHlw
ZSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMvNDI2Ni4K
KyAgICBfX2hhc2hfXyA9IE5vbmUgICMgdHlwZTogaWdub3JlCiAKICAgICBAcHJvcGVydHkKLSAg
ICBkZWYgcGF0aChzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBhIHBhdGggb2JqZWN0IHBvaW50
aW5nIHRvIHNvdXJjZSBjb2RlIChub3RlIHRoYXQgaXQKLSAgICAgICAgbWlnaHQgbm90IHBvaW50
IHRvIGFuIGFjdHVhbGx5IGV4aXN0aW5nIGZpbGUpLiAiIiIKKyAgICBkZWYgcGF0aChzZWxmKSAt
PiBVbmlvbltweS5wYXRoLmxvY2FsLCBzdHJdOgorICAgICAgICAiIiJSZXR1cm4gYSBwYXRoIG9i
amVjdCBwb2ludGluZyB0byBzb3VyY2UgY29kZSwgb3IgYW4gYGBzdHJgYCBpbgorICAgICAgICBj
YXNlIG9mIGBgT1NFcnJvcmBgIC8gbm9uLWV4aXN0aW5nIGZpbGUuIiIiCisgICAgICAgIGlmIG5v
dCBzZWxmLnJhdy5jb19maWxlbmFtZToKKyAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICB0
cnk6CiAgICAgICAgICAgICBwID0gcHkucGF0aC5sb2NhbChzZWxmLnJhdy5jb19maWxlbmFtZSkK
ICAgICAgICAgICAgICMgbWF5YmUgZG9uJ3QgdHJ5IHRoaXMgY2hlY2tpbmcKICAgICAgICAgICAg
IGlmIG5vdCBwLmNoZWNrKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigicHkucGF0
aCBjaGVjayBmYWlsZWQuIikKKyAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgIGV4Y2VwdCBP
U0Vycm9yOgogICAgICAgICAgICAgIyBYWFggbWF5YmUgdHJ5IGhhcmRlciBsaWtlIHRoZSB3ZWly
ZCBsb2dpYwogICAgICAgICAgICAgIyBpbiB0aGUgc3RhbmRhcmQgbGliIFtsaW5lY2FjaGUudXBk
YXRlY2FjaGVdIGRvZXM/Ci0gICAgICAgICAgICBwID0gc2VsZi5yYXcuY29fZmlsZW5hbWUKLQot
ICAgICAgICByZXR1cm4gcAorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmF3LmNvX2ZpbGVuYW1l
CiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgZnVsbHNvdXJjZShzZWxmKToKLSAgICAgICAgIiIi
IHJldHVybiBhIF9weXRlc3QuX2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhlIGZ1bGwgc291cmNl
IGZpbGUgb2YgdGhlIGNvZGUKLSAgICAgICAgIiIiCi0gICAgICAgIGZyb20gX3B5dGVzdC5fY29k
ZSBpbXBvcnQgc291cmNlCi0KLSAgICAgICAgZnVsbCwgXyA9IHNvdXJjZS5maW5kc291cmNlKHNl
bGYucmF3KQorICAgIGRlZiBmdWxsc291cmNlKHNlbGYpIC0+IE9wdGlvbmFsWyJTb3VyY2UiXToK
KyAgICAgICAgIiIiUmV0dXJuIGEgX3B5dGVzdC5fY29kZS5Tb3VyY2Ugb2JqZWN0IGZvciB0aGUg
ZnVsbCBzb3VyY2UgZmlsZSBvZiB0aGUgY29kZS4iIiIKKyAgICAgICAgZnVsbCwgXyA9IGZpbmRz
b3VyY2Uoc2VsZi5yYXcpCiAgICAgICAgIHJldHVybiBmdWxsCiAKLSAgICBkZWYgc291cmNlKHNl
bGYpOgotICAgICAgICAiIiIgcmV0dXJuIGEgX3B5dGVzdC5fY29kZS5Tb3VyY2Ugb2JqZWN0IGZv
ciB0aGUgY29kZSBvYmplY3QncyBzb3VyY2Ugb25seQotICAgICAgICAiIiIKKyAgICBkZWYgc291
cmNlKHNlbGYpIC0+ICJTb3VyY2UiOgorICAgICAgICAiIiJSZXR1cm4gYSBfcHl0ZXN0Ll9jb2Rl
LlNvdXJjZSBvYmplY3QgZm9yIHRoZSBjb2RlIG9iamVjdCdzIHNvdXJjZSBvbmx5LiIiIgogICAg
ICAgICAjIHJldHVybiBzb3VyY2Ugb25seSBmb3IgdGhhdCBwYXJ0IG9mIGNvZGUKLSAgICAgICAg
aW1wb3J0IF9weXRlc3QuX2NvZGUKLQotICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5Tb3Vy
Y2Uoc2VsZi5yYXcpCisgICAgICAgIHJldHVybiBTb3VyY2Uoc2VsZi5yYXcpCiAKLSAgICBkZWYg
Z2V0YXJncyhzZWxmLCB2YXI9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIGEgdHVwbGUgd2l0
aCB0aGUgYXJndW1lbnQgbmFtZXMgZm9yIHRoZSBjb2RlIG9iamVjdAorICAgIGRlZiBnZXRhcmdz
KHNlbGYsIHZhcjogYm9vbCA9IEZhbHNlKSAtPiBUdXBsZVtzdHIsIC4uLl06CisgICAgICAgICIi
IlJldHVybiBhIHR1cGxlIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzIGZvciB0aGUgY29kZSBvYmpl
Y3QuCiAKLSAgICAgICAgICAgIGlmICd2YXInIGlzIHNldCBUcnVlIGFsc28gcmV0dXJuIHRoZSBu
YW1lcyBvZiB0aGUgdmFyaWFibGUgYW5kCi0gICAgICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyB3
aGVuIHByZXNlbnQKKyAgICAgICAgSWYgJ3ZhcicgaXMgc2V0IFRydWUgYWxzbyByZXR1cm4gdGhl
IG5hbWVzIG9mIHRoZSB2YXJpYWJsZSBhbmQKKyAgICAgICAga2V5d29yZCBhcmd1bWVudHMgd2hl
biBwcmVzZW50LgogICAgICAgICAiIiIKLSAgICAgICAgIyBoYW5kZnVsbCBzaG9ydGN1dCBmb3Ig
Z2V0dGluZyBhcmdzCisgICAgICAgICMgSGFuZHkgc2hvcnRjdXQgZm9yIGdldHRpbmcgYXJncy4K
ICAgICAgICAgcmF3ID0gc2VsZi5yYXcKICAgICAgICAgYXJnY291bnQgPSByYXcuY29fYXJnY291
bnQKICAgICAgICAgaWYgdmFyOgpAQCAtODksMTEgKzExNCwxMSBAQCBjbGFzcyBDb2RlKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiByYXcuY29fdmFybmFtZXNbOmFyZ2NvdW50XQogCiAKLWNsYXNz
IEZyYW1lKG9iamVjdCk6CitjbGFzcyBGcmFtZToKICAgICAiIiJXcmFwcGVyIGFyb3VuZCBhIFB5
dGhvbiBmcmFtZSBob2xkaW5nIGZfbG9jYWxzIGFuZCBmX2dsb2JhbHMKICAgICBpbiB3aGljaCBl
eHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZyYW1lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWU6IEZyYW1lVHlwZSkgLT4gTm9u
ZToKICAgICAgICAgc2VsZi5saW5lbm8gPSBmcmFtZS5mX2xpbmVubyAtIDEKICAgICAgICAgc2Vs
Zi5mX2dsb2JhbHMgPSBmcmFtZS5mX2dsb2JhbHMKICAgICAgICAgc2VsZi5mX2xvY2FscyA9IGZy
YW1lLmZfbG9jYWxzCkBAIC0xMDEsNDcgKzEyNiwzMiBAQCBjbGFzcyBGcmFtZShvYmplY3QpOgog
ICAgICAgICBzZWxmLmNvZGUgPSBDb2RlKGZyYW1lLmZfY29kZSkKIAogICAgIEBwcm9wZXJ0eQot
ICAgIGRlZiBzdGF0ZW1lbnQoc2VsZik6Ci0gICAgICAgICIiIiBzdGF0ZW1lbnQgdGhpcyBmcmFt
ZSBpcyBhdCAiIiIKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLQorICAgIGRlZiBzdGF0
ZW1lbnQoc2VsZikgLT4gIlNvdXJjZSI6CisgICAgICAgICIiIlN0YXRlbWVudCB0aGlzIGZyYW1l
IGlzIGF0LiIiIgogICAgICAgICBpZiBzZWxmLmNvZGUuZnVsbHNvdXJjZSBpcyBOb25lOgotICAg
ICAgICAgICAgcmV0dXJuIF9weXRlc3QuX2NvZGUuU291cmNlKCIiKQorICAgICAgICAgICAgcmV0
dXJuIFNvdXJjZSgiIikKICAgICAgICAgcmV0dXJuIHNlbGYuY29kZS5mdWxsc291cmNlLmdldHN0
YXRlbWVudChzZWxmLmxpbmVubykKIAogICAgIGRlZiBldmFsKHNlbGYsIGNvZGUsICoqdmFycyk6
Ci0gICAgICAgICIiIiBldmFsdWF0ZSAnY29kZScgaW4gdGhlIGZyYW1lCisgICAgICAgICIiIkV2
YWx1YXRlICdjb2RlJyBpbiB0aGUgZnJhbWUuCiAKLSAgICAgICAgICAgICd2YXJzJyBhcmUgb3B0
aW9uYWwgYWRkaXRpb25hbCBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgJ3ZhcnMnIGFyZSBvcHRp
b25hbCBhZGRpdGlvbmFsIGxvY2FsIHZhcmlhYmxlcy4KIAotICAgICAgICAgICAgcmV0dXJucyB0
aGUgcmVzdWx0IG9mIHRoZSBldmFsdWF0aW9uCisgICAgICAgIFJldHVybnMgdGhlIHJlc3VsdCBv
ZiB0aGUgZXZhbHVhdGlvbi4KICAgICAgICAgIiIiCiAgICAgICAgIGZfbG9jYWxzID0gc2VsZi5m
X2xvY2Fscy5jb3B5KCkKICAgICAgICAgZl9sb2NhbHMudXBkYXRlKHZhcnMpCiAgICAgICAgIHJl
dHVybiBldmFsKGNvZGUsIHNlbGYuZl9nbG9iYWxzLCBmX2xvY2FscykKIAotICAgIGRlZiBleGVj
XyhzZWxmLCBjb2RlLCAqKnZhcnMpOgotICAgICAgICAiIiIgZXhlYyAnY29kZScgaW4gdGhlIGZy
YW1lCisgICAgZGVmIHJlcHIoc2VsZiwgb2JqZWN0OiBvYmplY3QpIC0+IHN0cjoKKyAgICAgICAg
IiIiUmV0dXJuIGEgJ3NhZmUnIChub24tcmVjdXJzaXZlLCBvbmUtbGluZSkgc3RyaW5nIHJlcHIg
Zm9yICdvYmplY3QnLiIiIgorICAgICAgICByZXR1cm4gc2FmZXJlcHIob2JqZWN0KQogCi0gICAg
ICAgICAgICAndmFycycgYXJlIG9wdGlvbmE7IGFkZGl0aW9uYWwgbG9jYWwgdmFyaWFibGVzCi0g
ICAgICAgICIiIgotICAgICAgICBmX2xvY2FscyA9IHNlbGYuZl9sb2NhbHMuY29weSgpCi0gICAg
ICAgIGZfbG9jYWxzLnVwZGF0ZSh2YXJzKQotICAgICAgICBweS5idWlsdGluLmV4ZWNfKGNvZGUs
IHNlbGYuZl9nbG9iYWxzLCBmX2xvY2FscykKKyAgICBkZWYgZ2V0YXJncyhzZWxmLCB2YXI6IGJv
b2wgPSBGYWxzZSk6CisgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgdHVwbGVzIChuYW1lLCB2
YWx1ZSkgZm9yIGFsbCBhcmd1bWVudHMuCiAKLSAgICBkZWYgcmVwcihzZWxmLCBvYmplY3QpOgot
ICAgICAgICAiIiIgcmV0dXJuIGEgJ3NhZmUnIChub24tcmVjdXJzaXZlLCBvbmUtbGluZSkgc3Ry
aW5nIHJlcHIgZm9yICdvYmplY3QnCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gcHkuaW8u
c2FmZXJlcHIob2JqZWN0KQotCi0gICAgZGVmIGlzX3RydWUoc2VsZiwgb2JqZWN0KToKLSAgICAg
ICAgcmV0dXJuIG9iamVjdAotCi0gICAgZGVmIGdldGFyZ3Moc2VsZiwgdmFyPUZhbHNlKToKLSAg
ICAgICAgIiIiIHJldHVybiBhIGxpc3Qgb2YgdHVwbGVzIChuYW1lLCB2YWx1ZSkgZm9yIGFsbCBh
cmd1bWVudHMKLQotICAgICAgICAgICAgaWYgJ3ZhcicgaXMgc2V0IFRydWUgYWxzbyBpbmNsdWRl
IHRoZSB2YXJpYWJsZSBhbmQga2V5d29yZAotICAgICAgICAgICAgYXJndW1lbnRzIHdoZW4gcHJl
c2VudAorICAgICAgICBJZiAndmFyJyBpcyBzZXQgVHJ1ZSwgYWxzbyBpbmNsdWRlIHRoZSB2YXJp
YWJsZSBhbmQga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgd2hlbiBwcmVzZW50LgogICAgICAg
ICAiIiIKICAgICAgICAgcmV0dmFsID0gW10KICAgICAgICAgZm9yIGFyZyBpbiBzZWxmLmNvZGUu
Z2V0YXJncyh2YXIpOgpAQCAtMTUyLDYwICsxNjIsNjAgQEAgY2xhc3MgRnJhbWUob2JqZWN0KToK
ICAgICAgICAgcmV0dXJuIHJldHZhbAogCiAKLWNsYXNzIFRyYWNlYmFja0VudHJ5KG9iamVjdCk6
Ci0gICAgIiIiIGEgc2luZ2xlIGVudHJ5IGluIGEgdHJhY2ViYWNrICIiIgorY2xhc3MgVHJhY2Vi
YWNrRW50cnk6CisgICAgIiIiQSBzaW5nbGUgZW50cnkgaW4gYSBUcmFjZWJhY2suIiIiCiAKLSAg
ICBfcmVwcl9zdHlsZSA9IE5vbmUKKyAgICBfcmVwcl9zdHlsZSA9IE5vbmUgICMgdHlwZTogT3B0
aW9uYWxbTGl0ZXJhbFsic2hvcnQiLCAibG9uZyJdXQogICAgIGV4cHJpbmZvID0gTm9uZQogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhd2VudHJ5LCBleGNpbmZvPU5vbmUpOgorICAgIGRlZiBf
X2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcmF3ZW50cnk6IFRyYWNlYmFja1R5cGUs
CisgICAgICAgIGV4Y2luZm86IE9wdGlvbmFsWyJSZWZlcmVuY2VUeXBlW0V4Y2VwdGlvbkluZm9b
QmFzZUV4Y2VwdGlvbl1dIl0gPSBOb25lLAorICAgICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5f
ZXhjaW5mbyA9IGV4Y2luZm8KICAgICAgICAgc2VsZi5fcmF3ZW50cnkgPSByYXdlbnRyeQogICAg
ICAgICBzZWxmLmxpbmVubyA9IHJhd2VudHJ5LnRiX2xpbmVubyAtIDEKIAotICAgIGRlZiBzZXRf
cmVwcl9zdHlsZShzZWxmLCBtb2RlKToKKyAgICBkZWYgc2V0X3JlcHJfc3R5bGUoc2VsZiwgbW9k
ZTogIkxpdGVyYWxbJ3Nob3J0JywgJ2xvbmcnXSIpIC0+IE5vbmU6CiAgICAgICAgIGFzc2VydCBt
b2RlIGluICgic2hvcnQiLCAibG9uZyIpCiAgICAgICAgIHNlbGYuX3JlcHJfc3R5bGUgPSBtb2Rl
CiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgZnJhbWUoc2VsZik6Ci0gICAgICAgIGltcG9ydCBf
cHl0ZXN0Ll9jb2RlCi0KLSAgICAgICAgcmV0dXJuIF9weXRlc3QuX2NvZGUuRnJhbWUoc2VsZi5f
cmF3ZW50cnkudGJfZnJhbWUpCisgICAgZGVmIGZyYW1lKHNlbGYpIC0+IEZyYW1lOgorICAgICAg
ICByZXR1cm4gRnJhbWUoc2VsZi5fcmF3ZW50cnkudGJfZnJhbWUpCiAKICAgICBAcHJvcGVydHkK
LSAgICBkZWYgcmVsbGluZShzZWxmKToKKyAgICBkZWYgcmVsbGluZShzZWxmKSAtPiBpbnQ6CiAg
ICAgICAgIHJldHVybiBzZWxmLmxpbmVubyAtIHNlbGYuZnJhbWUuY29kZS5maXJzdGxpbmVubwog
Ci0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6
CiAgICAgICAgIHJldHVybiAiPFRyYWNlYmFja0VudHJ5ICVzOiVkPiIgJSAoc2VsZi5mcmFtZS5j
b2RlLnBhdGgsIHNlbGYubGluZW5vICsgMSkKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBzdGF0
ZW1lbnQoc2VsZik6Ci0gICAgICAgICIiIiBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9y
IHRoZSBjdXJyZW50IHN0YXRlbWVudCAiIiIKKyAgICBkZWYgc3RhdGVtZW50KHNlbGYpIC0+ICJT
b3VyY2UiOgorICAgICAgICAiIiJfcHl0ZXN0Ll9jb2RlLlNvdXJjZSBvYmplY3QgZm9yIHRoZSBj
dXJyZW50IHN0YXRlbWVudC4iIiIKICAgICAgICAgc291cmNlID0gc2VsZi5mcmFtZS5jb2RlLmZ1
bGxzb3VyY2UKKyAgICAgICAgYXNzZXJ0IHNvdXJjZSBpcyBub3QgTm9uZQogICAgICAgICByZXR1
cm4gc291cmNlLmdldHN0YXRlbWVudChzZWxmLmxpbmVubykKIAogICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBwYXRoKHNlbGYpOgotICAgICAgICAiIiIgcGF0aCB0byB0aGUgc291cmNlIGNvZGUgIiIi
CisgICAgZGVmIHBhdGgoc2VsZikgLT4gVW5pb25bcHkucGF0aC5sb2NhbCwgc3RyXToKKyAgICAg
ICAgIiIiUGF0aCB0byB0aGUgc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmZy
YW1lLmNvZGUucGF0aAogCi0gICAgZGVmIGdldGxvY2FscyhzZWxmKToKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgbG9jYWxzKHNlbGYpIC0+IERpY3Rbc3RyLCBBbnldOgorICAgICAgICAiIiJMb2Nh
bHMgb2YgdW5kZXJseWluZyBmcmFtZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZnJhbWUuZl9s
b2NhbHMKIAotICAgIGxvY2FscyA9IHByb3BlcnR5KGdldGxvY2FscywgTm9uZSwgTm9uZSwgImxv
Y2FscyBvZiB1bmRlcmxheWluZyBmcmFtZSIpCi0KLSAgICBkZWYgZ2V0Zmlyc3RsaW5lc291cmNl
KHNlbGYpOgotICAgICAgICAjIG9uIEp5dGhvbiB0aGlzIGZpcnN0bGluZW5vIGNhbiBiZSAtMSBh
cHBhcmVudGx5Ci0gICAgICAgIHJldHVybiBtYXgoc2VsZi5mcmFtZS5jb2RlLmZpcnN0bGluZW5v
LCAwKQorICAgIGRlZiBnZXRmaXJzdGxpbmVzb3VyY2Uoc2VsZikgLT4gaW50OgorICAgICAgICBy
ZXR1cm4gc2VsZi5mcmFtZS5jb2RlLmZpcnN0bGluZW5vCiAKLSAgICBkZWYgZ2V0c291cmNlKHNl
bGYsIGFzdGNhY2hlPU5vbmUpOgotICAgICAgICAiIiIgcmV0dXJuIGZhaWxpbmcgc291cmNlIGNv
ZGUuICIiIgorICAgIGRlZiBnZXRzb3VyY2Uoc2VsZiwgYXN0Y2FjaGU9Tm9uZSkgLT4gT3B0aW9u
YWxbIlNvdXJjZSJdOgorICAgICAgICAiIiJSZXR1cm4gZmFpbGluZyBzb3VyY2UgY29kZS4iIiIK
ICAgICAgICAgIyB3ZSB1c2UgdGhlIHBhc3NlZCBpbiBhc3RjYWNoZSB0byBub3QgcmVwYXJzZSBh
c3R0cmVlcwogICAgICAgICAjIHdpdGhpbiBleGNlcHRpb24gaW5mbyBwcmludGluZwotICAgICAg
ICBmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGltcG9ydCBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QK
LQogICAgICAgICBzb3VyY2UgPSBzZWxmLmZyYW1lLmNvZGUuZnVsbHNvdXJjZQogICAgICAgICBp
ZiBzb3VyY2UgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCkBAIC0yMjgsNzcgKzIz
OCw5NCBAQCBjbGFzcyBUcmFjZWJhY2tFbnRyeShvYmplY3QpOgogCiAgICAgc291cmNlID0gcHJv
cGVydHkoZ2V0c291cmNlKQogCi0gICAgZGVmIGlzaGlkZGVuKHNlbGYpOgotICAgICAgICAiIiIg
cmV0dXJuIFRydWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaGFzIGEgdmFyIF9fdHJhY2ViYWNraGlk
ZV9fCi0gICAgICAgICAgICByZXNvbHZpbmcgdG8gVHJ1ZQorICAgIGRlZiBpc2hpZGRlbihzZWxm
KSAtPiBib29sOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBo
YXMgYSB2YXIgX190cmFjZWJhY2toaWRlX18KKyAgICAgICAgcmVzb2x2aW5nIHRvIFRydWUuCiAK
LSAgICAgICAgICAgIElmIF9fdHJhY2ViYWNraGlkZV9fIGlzIGEgY2FsbGFibGUsIGl0IGdldHMg
Y2FsbGVkIHdpdGggdGhlCi0gICAgICAgICAgICBFeGNlcHRpb25JbmZvIGluc3RhbmNlIGFuZCBj
YW4gZGVjaWRlIHdoZXRoZXIgdG8gaGlkZSB0aGUgdHJhY2ViYWNrLgorICAgICAgICBJZiBfX3Ry
YWNlYmFja2hpZGVfXyBpcyBhIGNhbGxhYmxlLCBpdCBnZXRzIGNhbGxlZCB3aXRoIHRoZQorICAg
ICAgICBFeGNlcHRpb25JbmZvIGluc3RhbmNlIGFuZCBjYW4gZGVjaWRlIHdoZXRoZXIgdG8gaGlk
ZSB0aGUgdHJhY2ViYWNrLgogCi0gICAgICAgICAgICBtb3N0bHkgZm9yIGludGVybmFsIHVzZQor
ICAgICAgICBNb3N0bHkgZm9yIGludGVybmFsIHVzZS4KICAgICAgICAgIiIiCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHRiaCA9IHNlbGYuZnJhbWUuZl9sb2NhbHNbIl9fdHJhY2ViYWNraGlk
ZV9fIl0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICB0YmggPSAoCisgICAgICAg
ICAgICBGYWxzZQorICAgICAgICApICAjIHR5cGU6IFVuaW9uW2Jvb2wsIENhbGxhYmxlW1tPcHRp
b25hbFtFeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dXV0sIGJvb2xdXQorICAgICAgICBmb3Ig
bWF5YmVfbnNfZGN0IGluIChzZWxmLmZyYW1lLmZfbG9jYWxzLCBzZWxmLmZyYW1lLmZfZ2xvYmFs
cyk6CisgICAgICAgICAgICAjIGluIG5vcm1hbCBjYXNlcywgZl9sb2NhbHMgYW5kIGZfZ2xvYmFs
cyBhcmUgZGljdGlvbmFyaWVzCisgICAgICAgICAgICAjIGhvd2V2ZXIgdmlhIGBleGVjKC4uLilg
IC8gYGV2YWwoLi4uKWAgdGhleSBjYW4gYmUgb3RoZXIgdHlwZXMKKyAgICAgICAgICAgICMgKGV2
ZW4gaW5jb3JyZWN0IHR5cGVzISkuCisgICAgICAgICAgICAjIGFzIHN1Y2gsIHdlIHN1cHByZXNz
IGFsbCBleGNlcHRpb25zIHdoaWxlIGFjY2Vzc2luZyBfX3RyYWNlYmFja2hpZGVfXwogICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRiaCA9IHNlbGYuZnJhbWUuZl9nbG9iYWxzWyJf
X3RyYWNlYmFja2hpZGVfXyJdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgY2FsbGFibGUodGJoKToKKyAgICAg
ICAgICAgICAgICB0YmggPSBtYXliZV9uc19kY3RbIl9fdHJhY2ViYWNraGlkZV9fIl0KKyAgICAg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiB0YmggYW5kIGNhbGxh
YmxlKHRiaCk6CiAgICAgICAgICAgICByZXR1cm4gdGJoKE5vbmUgaWYgc2VsZi5fZXhjaW5mbyBp
cyBOb25lIGVsc2Ugc2VsZi5fZXhjaW5mbygpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmV0dXJuIHRiaAorICAgICAgICByZXR1cm4gdGJoCiAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm4gPSBzdHIoc2VsZi5wYXRoKQotICAgICAgICBl
eGNlcHQgcHkuZXJyb3IuRXJyb3I6Ci0gICAgICAgICAgICBmbiA9ICI/Pz8iCisgICAgZGVmIF9f
c3RyX18oc2VsZikgLT4gc3RyOgogICAgICAgICBuYW1lID0gc2VsZi5mcmFtZS5jb2RlLm5hbWUK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGluZSA9IHN0cihzZWxmLnN0YXRlbWVudCkubHN0
cmlwKCkKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgcmFp
c2UKLSAgICAgICAgZXhjZXB0OiAgIyBub3FhCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9u
OgogICAgICAgICAgICAgbGluZSA9ICI/Pz8iCi0gICAgICAgIHJldHVybiAiICBGaWxlICVyOiVk
IGluICVzXG4gICVzXG4iICUgKGZuLCBzZWxmLmxpbmVubyArIDEsIG5hbWUsIGxpbmUpCisgICAg
ICAgICMgVGhpcyBvdXRwdXQgZG9lcyBub3QgcXVpdGUgbWF0Y2ggUHl0aG9uJ3MgcmVwciBmb3Ig
dHJhY2ViYWNrIGVudHJpZXMsCisgICAgICAgICMgYnV0IGNoYW5naW5nIGl0IHRvIGRvIHNvIHdv
dWxkIGJyZWFrIGNlcnRhaW4gcGx1Z2lucy4gIFNlZQorICAgICAgICAjIGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzc1MzUvIGZvciBkZXRhaWxzLgorICAgICAgICBy
ZXR1cm4gIiAgRmlsZSAlcjolZCBpbiAlc1xuICAlc1xuIiAlICgKKyAgICAgICAgICAgIHN0cihz
ZWxmLnBhdGgpLAorICAgICAgICAgICAgc2VsZi5saW5lbm8gKyAxLAorICAgICAgICAgICAgbmFt
ZSwKKyAgICAgICAgICAgIGxpbmUsCisgICAgICAgICkKIAotICAgIGRlZiBuYW1lKHNlbGYpOgor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIiIiY29f
bmFtZSBvZiB1bmRlcmx5aW5nIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmZyYW1lLmNv
ZGUucmF3LmNvX25hbWUKIAotICAgIG5hbWUgPSBwcm9wZXJ0eShuYW1lLCBOb25lLCBOb25lLCAi
Y29fbmFtZSBvZiB1bmRlcmxheWluZyBjb2RlIikKLQogCi1jbGFzcyBUcmFjZWJhY2sobGlzdCk6
Ci0gICAgIiIiIFRyYWNlYmFjayBvYmplY3RzIGVuY2Fwc3VsYXRlIGFuZCBvZmZlciBoaWdoZXIg
bGV2ZWwKLSAgICAgICAgYWNjZXNzIHRvIFRyYWNlYmFjayBlbnRyaWVzLgotICAgICIiIgotICAg
IEVudHJ5ID0gVHJhY2ViYWNrRW50cnkKK2NsYXNzIFRyYWNlYmFjayhMaXN0W1RyYWNlYmFja0Vu
dHJ5XSk6CisgICAgIiIiVHJhY2ViYWNrIG9iamVjdHMgZW5jYXBzdWxhdGUgYW5kIG9mZmVyIGhp
Z2hlciBsZXZlbCBhY2Nlc3MgdG8gVHJhY2ViYWNrIGVudHJpZXMuIiIiCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGIsIGV4Y2luZm89Tm9uZSk6Ci0gICAgICAgICIiIiBpbml0aWFsaXplIGZy
b20gZ2l2ZW4gcHl0aG9uIHRyYWNlYmFjayBvYmplY3QgYW5kIEV4Y2VwdGlvbkluZm8gIiIiCisg
ICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICB0YjogVW5pb25bVHJhY2Vi
YWNrVHlwZSwgSXRlcmFibGVbVHJhY2ViYWNrRW50cnldXSwKKyAgICAgICAgZXhjaW5mbzogT3B0
aW9uYWxbIlJlZmVyZW5jZVR5cGVbRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXV0iXSA9IE5v
bmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJJbml0aWFsaXplIGZyb20gZ2l2ZW4gcHl0
aG9uIHRyYWNlYmFjayBvYmplY3QgYW5kIEV4Y2VwdGlvbkluZm8uIiIiCiAgICAgICAgIHNlbGYu
X2V4Y2luZm8gPSBleGNpbmZvCi0gICAgICAgIGlmIGhhc2F0dHIodGIsICJ0Yl9uZXh0Iik6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UodGIsIFRyYWNlYmFja1R5cGUpOgogCi0gICAgICAgICAgICBk
ZWYgZihjdXIpOgotICAgICAgICAgICAgICAgIHdoaWxlIGN1ciBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICAgICAgeWllbGQgc2VsZi5FbnRyeShjdXIsIGV4Y2luZm89ZXhjaW5mbykKLSAg
ICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnRiX25leHQKKyAgICAgICAgICAgIGRlZiBmKGN1
cjogVHJhY2ViYWNrVHlwZSkgLT4gSXRlcmFibGVbVHJhY2ViYWNrRW50cnldOgorICAgICAgICAg
ICAgICAgIGN1cl8gPSBjdXIgICMgdHlwZTogT3B0aW9uYWxbVHJhY2ViYWNrVHlwZV0KKyAgICAg
ICAgICAgICAgICB3aGlsZSBjdXJfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB5
aWVsZCBUcmFjZWJhY2tFbnRyeShjdXJfLCBleGNpbmZvPWV4Y2luZm8pCisgICAgICAgICAgICAg
ICAgICAgIGN1cl8gPSBjdXJfLnRiX25leHQKIAotICAgICAgICAgICAgbGlzdC5fX2luaXRfXyhz
ZWxmLCBmKHRiKSkKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oZih0YikpCiAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBsaXN0Ll9faW5pdF9fKHNlbGYsIHRiKQorICAgICAgICAgICAg
c3VwZXIoKS5fX2luaXRfXyh0YikKIAotICAgIGRlZiBjdXQoc2VsZiwgcGF0aD1Ob25lLCBsaW5l
bm89Tm9uZSwgZmlyc3RsaW5lbm89Tm9uZSwgZXhjbHVkZXBhdGg9Tm9uZSk6Ci0gICAgICAgICIi
IiByZXR1cm4gYSBUcmFjZWJhY2sgaW5zdGFuY2Ugd3JhcHBpbmcgcGFydCBvZiB0aGlzIFRyYWNl
YmFjawotCi0gICAgICAgICAgICBieSBwcm92ZGluZyBhbnkgY29tYmluYXRpb24gb2YgcGF0aCwg
bGluZW5vIGFuZCBmaXJzdGxpbmVubywgdGhlCi0gICAgICAgICAgICBmaXJzdCBmcmFtZSB0byBz
dGFydCB0aGUgdG8tYmUtcmV0dXJuZWQgdHJhY2ViYWNrIGlzIGRldGVybWluZWQKLQotICAgICAg
ICAgICAgdGhpcyBhbGxvd3MgY3V0dGluZyB0aGUgZmlyc3QgcGFydCBvZiBhIFRyYWNlYmFjayBp
bnN0YW5jZSBlLmcuCi0gICAgICAgICAgICBmb3IgZm9ybWF0dGluZyByZWFzb25zIChyZW1vdmlu
ZyBzb21lIHVuaW50ZXJlc3RpbmcgYml0cyB0aGF0IGRlYWwKLSAgICAgICAgICAgIHdpdGggaGFu
ZGxpbmcgb2YgdGhlIGV4Y2VwdGlvbi90cmFjZWJhY2spCisgICAgZGVmIGN1dCgKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgcGF0aD1Ob25lLAorICAgICAgICBsaW5lbm86IE9wdGlvbmFsW2ludF0g
PSBOb25lLAorICAgICAgICBmaXJzdGxpbmVubzogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAg
ICAgIGV4Y2x1ZGVwYXRoOiBPcHRpb25hbFtweS5wYXRoLmxvY2FsXSA9IE5vbmUsCisgICAgKSAt
PiAiVHJhY2ViYWNrIjoKKyAgICAgICAgIiIiUmV0dXJuIGEgVHJhY2ViYWNrIGluc3RhbmNlIHdy
YXBwaW5nIHBhcnQgb2YgdGhpcyBUcmFjZWJhY2suCisKKyAgICAgICAgQnkgcHJvdmlkaW5nIGFu
eSBjb21iaW5hdGlvbiBvZiBwYXRoLCBsaW5lbm8gYW5kIGZpcnN0bGluZW5vLCB0aGUKKyAgICAg
ICAgZmlyc3QgZnJhbWUgdG8gc3RhcnQgdGhlIHRvLWJlLXJldHVybmVkIHRyYWNlYmFjayBpcyBk
ZXRlcm1pbmVkLgorCisgICAgICAgIFRoaXMgYWxsb3dzIGN1dHRpbmcgdGhlIGZpcnN0IHBhcnQg
b2YgYSBUcmFjZWJhY2sgaW5zdGFuY2UgZS5nLgorICAgICAgICBmb3IgZm9ybWF0dGluZyByZWFz
b25zIChyZW1vdmluZyBzb21lIHVuaW50ZXJlc3RpbmcgYml0cyB0aGF0IGRlYWwKKyAgICAgICAg
d2l0aCBoYW5kbGluZyBvZiB0aGUgZXhjZXB0aW9uL3RyYWNlYmFjaykuCiAgICAgICAgICIiIgog
ICAgICAgICBmb3IgeCBpbiBzZWxmOgogICAgICAgICAgICAgY29kZSA9IHguZnJhbWUuY29kZQpA
QCAtMzA3LDcgKzMzNCw3IEBAIGNsYXNzIFRyYWNlYmFjayhsaXN0KToKICAgICAgICAgICAgICAg
ICAocGF0aCBpcyBOb25lIG9yIGNvZGVwYXRoID09IHBhdGgpCiAgICAgICAgICAgICAgICAgYW5k
ICgKICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZXBhdGggaXMgTm9uZQotICAgICAgICAgICAg
ICAgICAgICBvciBub3QgaGFzYXR0cihjb2RlcGF0aCwgInJlbHRvIikKKyAgICAgICAgICAgICAg
ICAgICAgb3Igbm90IGlzaW5zdGFuY2UoY29kZXBhdGgsIHB5LnBhdGgubG9jYWwpCiAgICAgICAg
ICAgICAgICAgICAgIG9yIG5vdCBjb2RlcGF0aC5yZWx0byhleGNsdWRlcGF0aCkKICAgICAgICAg
ICAgICAgICApCiAgICAgICAgICAgICAgICAgYW5kIChsaW5lbm8gaXMgTm9uZSBvciB4LmxpbmVu
byA9PSBsaW5lbm8pCkBAIC0zMTYsMzkgKzM0Myw0OCBAQCBjbGFzcyBUcmFjZWJhY2sobGlzdCk6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRyYWNlYmFjayh4Ll9yYXdlbnRyeSwgc2VsZi5fZXhj
aW5mbykKICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBr
ZXkpOgotICAgICAgICB2YWwgPSBzdXBlcihUcmFjZWJhY2ssIHNlbGYpLl9fZ2V0aXRlbV9fKGtl
eSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHR5cGUoc2xpY2UoMCkpKToKLSAgICAgICAg
ICAgIHZhbCA9IHNlbGYuX19jbGFzc19fKHZhbCkKLSAgICAgICAgcmV0dXJuIHZhbAorICAgIEBv
dmVybG9hZAorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IGludCkgLT4gVHJhY2ViYWNr
RW50cnk6CisgICAgICAgIC4uLgorCisgICAgQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICBk
ZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBzbGljZSkgLT4gIlRyYWNlYmFjayI6ICAjIG5vcWE6
IEY4MTEKKyAgICAgICAgLi4uCisKKyAgICBkZWYgX19nZXRpdGVtX18oICAjIG5vcWE6IEY4MTEK
KyAgICAgICAgc2VsZiwga2V5OiBVbmlvbltpbnQsIHNsaWNlXQorICAgICkgLT4gVW5pb25bVHJh
Y2ViYWNrRW50cnksICJUcmFjZWJhY2siXToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHNs
aWNlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdXBlcigpLl9fZ2V0aXRl
bV9fKGtleSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2dl
dGl0ZW1fXyhrZXkpCiAKLSAgICBkZWYgZmlsdGVyKHNlbGYsIGZuPWxhbWJkYSB4OiBub3QgeC5p
c2hpZGRlbigpKToKLSAgICAgICAgIiIiIHJldHVybiBhIFRyYWNlYmFjayBpbnN0YW5jZSB3aXRo
IGNlcnRhaW4gaXRlbXMgcmVtb3ZlZAorICAgIGRlZiBmaWx0ZXIoCisgICAgICAgIHNlbGYsIGZu
OiBDYWxsYWJsZVtbVHJhY2ViYWNrRW50cnldLCBib29sXSA9IGxhbWJkYSB4OiBub3QgeC5pc2hp
ZGRlbigpCisgICAgKSAtPiAiVHJhY2ViYWNrIjoKKyAgICAgICAgIiIiUmV0dXJuIGEgVHJhY2Vi
YWNrIGluc3RhbmNlIHdpdGggY2VydGFpbiBpdGVtcyByZW1vdmVkCiAKLSAgICAgICAgICAgIGZu
IGlzIGEgZnVuY3Rpb24gdGhhdCBnZXRzIGEgc2luZ2xlIGFyZ3VtZW50LCBhIFRyYWNlYmFja0Vu
dHJ5Ci0gICAgICAgICAgICBpbnN0YW5jZSwgYW5kIHNob3VsZCByZXR1cm4gVHJ1ZSB3aGVuIHRo
ZSBpdGVtIHNob3VsZCBiZSBhZGRlZAotICAgICAgICAgICAgdG8gdGhlIFRyYWNlYmFjaywgRmFs
c2Ugd2hlbiBub3QKKyAgICAgICAgZm4gaXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgYSBzaW5nbGUg
YXJndW1lbnQsIGEgVHJhY2ViYWNrRW50cnkKKyAgICAgICAgaW5zdGFuY2UsIGFuZCBzaG91bGQg
cmV0dXJuIFRydWUgd2hlbiB0aGUgaXRlbSBzaG91bGQgYmUgYWRkZWQKKyAgICAgICAgdG8gdGhl
IFRyYWNlYmFjaywgRmFsc2Ugd2hlbiBub3QuCiAKLSAgICAgICAgICAgIGJ5IGRlZmF1bHQgdGhp
cyByZW1vdmVzIGFsbCB0aGUgVHJhY2ViYWNrRW50cmllcyB3aGljaCBhcmUgaGlkZGVuCi0gICAg
ICAgICAgICAoc2VlIGlzaGlkZGVuKCkgYWJvdmUpCisgICAgICAgIEJ5IGRlZmF1bHQgdGhpcyBy
ZW1vdmVzIGFsbCB0aGUgVHJhY2ViYWNrRW50cmllcyB3aGljaCBhcmUgaGlkZGVuCisgICAgICAg
IChzZWUgaXNoaWRkZW4oKSBhYm92ZSkuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gVHJh
Y2ViYWNrKGZpbHRlcihmbiwgc2VsZiksIHNlbGYuX2V4Y2luZm8pCiAKLSAgICBkZWYgZ2V0Y3Jh
c2hlbnRyeShzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBsYXN0IG5vbi1oaWRkZW4gdHJhY2Vi
YWNrIGVudHJ5IHRoYXQgbGVhZAotICAgICAgICB0byB0aGUgZXhjZXB0aW9uIG9mIGEgdHJhY2Vi
YWNrLgotICAgICAgICAiIiIKKyAgICBkZWYgZ2V0Y3Jhc2hlbnRyeShzZWxmKSAtPiBUcmFjZWJh
Y2tFbnRyeToKKyAgICAgICAgIiIiUmV0dXJuIGxhc3Qgbm9uLWhpZGRlbiB0cmFjZWJhY2sgZW50
cnkgdGhhdCBsZWFkIHRvIHRoZSBleGNlcHRpb24gb2YgYSB0cmFjZWJhY2suIiIiCiAgICAgICAg
IGZvciBpIGluIHJhbmdlKC0xLCAtbGVuKHNlbGYpIC0gMSwgLTEpOgogICAgICAgICAgICAgZW50
cnkgPSBzZWxmW2ldCiAgICAgICAgICAgICBpZiBub3QgZW50cnkuaXNoaWRkZW4oKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gZW50cnkKICAgICAgICAgcmV0dXJuIHNlbGZbLTFdCiAKLSAgICBk
ZWYgcmVjdXJzaW9uaW5kZXgoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gdGhlIGluZGV4IG9m
IHRoZSBmcmFtZS9UcmFjZWJhY2tFbnRyeSB3aGVyZSByZWN1cnNpb24KLSAgICAgICAgICAgIG9y
aWdpbmF0ZXMgaWYgYXBwcm9wcmlhdGUsIE5vbmUgaWYgbm8gcmVjdXJzaW9uIG9jY3VycmVkCi0g
ICAgICAgICIiIgotICAgICAgICBjYWNoZSA9IHt9CisgICAgZGVmIHJlY3Vyc2lvbmluZGV4KHNl
bGYpIC0+IE9wdGlvbmFsW2ludF06CisgICAgICAgICIiIlJldHVybiB0aGUgaW5kZXggb2YgdGhl
IGZyYW1lL1RyYWNlYmFja0VudHJ5IHdoZXJlIHJlY3Vyc2lvbiBvcmlnaW5hdGVzIGlmCisgICAg
ICAgIGFwcHJvcHJpYXRlLCBOb25lIGlmIG5vIHJlY3Vyc2lvbiBvY2N1cnJlZC4iIiIKKyAgICAg
ICAgY2FjaGUgPSB7fSAgIyB0eXBlOiBEaWN0W1R1cGxlW0FueSwgaW50LCBpbnRdLCBMaXN0W0Rp
Y3Rbc3RyLCBBbnldXV0KICAgICAgICAgZm9yIGksIGVudHJ5IGluIGVudW1lcmF0ZShzZWxmKToK
ICAgICAgICAgICAgICMgaWQgZm9yIHRoZSBjb2RlLnJhdyBpcyBuZWVkZWQgdG8gd29yayBhcm91
bmQKICAgICAgICAgICAgICMgdGhlIHN0cmFuZ2UgbWV0YXByb2dyYW1taW5nIGluIHRoZSBkZWNv
cmF0b3IgbGliIGZyb20gcHlwaQpAQCAtMzYxLDEyICszOTcsMTAgQEAgY2xhc3MgVHJhY2ViYWNr
KGxpc3QpOgogICAgICAgICAgICAgICAgIGYgPSBlbnRyeS5mcmFtZQogICAgICAgICAgICAgICAg
IGxvYyA9IGYuZl9sb2NhbHMKICAgICAgICAgICAgICAgICBmb3Igb3RoZXJsb2MgaW4gdmFsdWVz
OgotICAgICAgICAgICAgICAgICAgICBpZiBmLmlzX3RydWUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBmLmV2YWwoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29fZXF1YWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZWN1cnNpb25jYWNoZV9sb2NhbHNfMT1sb2MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZWN1cnNpb25jYWNoZV9sb2NhbHNfMj1vdGhl
cmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgaWYg
Zi5ldmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgY29fZXF1YWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICBfX3JlY3Vyc2lvbmNhY2hlX2xvY2Fsc18xPWxvYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVjdXJzaW9uY2FjaGVfbG9jYWxzXzI9b3RoZXJsb2MsCiAgICAgICAgICAg
ICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZChlbnRyeS5mcmFtZS5mX2xvY2FscykKQEAgLTM3OCw2MCArNDEyLDE1
NSBAQCBjb19lcXVhbCA9IGNvbXBpbGUoCiApCiAKIAotY2xhc3MgRXhjZXB0aW9uSW5mbyhvYmpl
Y3QpOgotICAgICIiIiB3cmFwcyBzeXMuZXhjX2luZm8oKSBvYmplY3RzIGFuZCBvZmZlcnMKLSAg
ICAgICAgaGVscCBmb3IgbmF2aWdhdGluZyB0aGUgdHJhY2ViYWNrLgotICAgICIiIgotICAgIF9z
dHJpcHRleHQgPSAiIgotICAgIF9hc3NlcnRfc3RhcnRfcmVwciA9ICJBc3NlcnRpb25FcnJvcih1
J2Fzc2VydCAiIGlmIF9QWTIgZWxzZSAiQXNzZXJ0aW9uRXJyb3IoJ2Fzc2VydCAiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdHVwPU5vbmUsIGV4cHJpbmZvPU5vbmUpOgotICAgICAgICBpbXBv
cnQgX3B5dGVzdC5fY29kZQotCi0gICAgICAgIGlmIHR1cCBpcyBOb25lOgotICAgICAgICAgICAg
dHVwID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIGlmIGV4cHJpbmZvIGlzIE5vbmUgYW5k
IGlzaW5zdGFuY2UodHVwWzFdLCBBc3NlcnRpb25FcnJvcik6Ci0gICAgICAgICAgICAgICAgZXhw
cmluZm8gPSBnZXRhdHRyKHR1cFsxXSwgIm1zZyIsIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYg
ZXhwcmluZm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZXhwcmluZm8gPSBweS5pby5z
YWZlcmVwcih0dXBbMV0pCi0gICAgICAgICAgICAgICAgaWYgZXhwcmluZm8gYW5kIGV4cHJpbmZv
LnN0YXJ0c3dpdGgoc2VsZi5fYXNzZXJ0X3N0YXJ0X3JlcHIpOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zdHJpcHRleHQgPSAiQXNzZXJ0aW9uRXJyb3I6ICIKLSAgICAgICAgc2VsZi5fZXhj
aW5mbyA9IHR1cAotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIGNsYXNzCi0gICAgICAgIHNlbGYu
dHlwZSA9IHR1cFswXQotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIGluc3RhbmNlCi0gICAgICAg
IHNlbGYudmFsdWUgPSB0dXBbMV0KLSAgICAgICAgIzogdGhlIGV4Y2VwdGlvbiByYXcgdHJhY2Vi
YWNrCi0gICAgICAgIHNlbGYudGIgPSB0dXBbMl0KLSAgICAgICAgIzogdGhlIGV4Y2VwdGlvbiB0
eXBlIG5hbWUKLSAgICAgICAgc2VsZi50eXBlbmFtZSA9IHNlbGYudHlwZS5fX25hbWVfXwotICAg
ICAgICAjOiB0aGUgZXhjZXB0aW9uIHRyYWNlYmFjayAoX3B5dGVzdC5fY29kZS5UcmFjZWJhY2sg
aW5zdGFuY2UpCi0gICAgICAgIHNlbGYudHJhY2ViYWNrID0gX3B5dGVzdC5fY29kZS5UcmFjZWJh
Y2soc2VsZi50YiwgZXhjaW5mbz1yZWYoc2VsZikpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6
Ci0gICAgICAgIHJldHVybiAiPEV4Y2VwdGlvbkluZm8gJXMgdGJsZW49JWQ+IiAlIChzZWxmLnR5
cGVuYW1lLCBsZW4oc2VsZi50cmFjZWJhY2spKQotCi0gICAgZGVmIGV4Y29ubHkoc2VsZiwgdHJ5
c2hvcnQ9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIHRoZSBleGNlcHRpb24gYXMgYSBzdHJp
bmcKLQotICAgICAgICAgICAgd2hlbiAndHJ5c2hvcnQnIHJlc29sdmVzIHRvIFRydWUsIGFuZCB0
aGUgZXhjZXB0aW9uIGlzIGEKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuX0Fzc2VydGlvbkVy
cm9yLCBvbmx5IHRoZSBhY3R1YWwgZXhjZXB0aW9uIHBhcnQgb2YKLSAgICAgICAgICAgIHRoZSBl
eGNlcHRpb24gcmVwcmVzZW50YXRpb24gaXMgcmV0dXJuZWQgKHNvICdBc3NlcnRpb25FcnJvcjog
JyBpcwotICAgICAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBiZWdpbm5pbmcpCitfRSA9IFR5cGVW
YXIoIl9FIiwgYm91bmQ9QmFzZUV4Y2VwdGlvbiwgY292YXJpYW50PVRydWUpCisKKworQGZpbmFs
CitAYXR0ci5zKHJlcHI9RmFsc2UpCitjbGFzcyBFeGNlcHRpb25JbmZvKEdlbmVyaWNbX0VdKToK
KyAgICAiIiJXcmFwcyBzeXMuZXhjX2luZm8oKSBvYmplY3RzIGFuZCBvZmZlcnMgaGVscCBmb3Ig
bmF2aWdhdGluZyB0aGUgdHJhY2ViYWNrLiIiIgorCisgICAgX2Fzc2VydF9zdGFydF9yZXByID0g
IkFzc2VydGlvbkVycm9yKCdhc3NlcnQgIgorCisgICAgX2V4Y2luZm8gPSBhdHRyLmliKHR5cGU9
T3B0aW9uYWxbVHVwbGVbIlR5cGVbX0VdIiwgIl9FIiwgVHJhY2ViYWNrVHlwZV1dKQorICAgIF9z
dHJpcHRleHQgPSBhdHRyLmliKHR5cGU9c3RyLCBkZWZhdWx0PSIiKQorICAgIF90cmFjZWJhY2sg
PSBhdHRyLmliKHR5cGU9T3B0aW9uYWxbVHJhY2ViYWNrXSwgZGVmYXVsdD1Ob25lKQorCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZXhjX2luZm8oCisgICAgICAgIGNscywKKyAgICAg
ICAgZXhjX2luZm86IFR1cGxlWyJUeXBlW19FXSIsICJfRSIsIFRyYWNlYmFja1R5cGVdLAorICAg
ICAgICBleHByaW5mbzogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKSAtPiAiRXhjZXB0aW9u
SW5mb1tfRV0iOgorICAgICAgICAiIiJSZXR1cm4gYW4gRXhjZXB0aW9uSW5mbyBmb3IgYW4gZXhp
c3RpbmcgZXhjX2luZm8gdHVwbGUuCisKKyAgICAgICAgLi4gd2FybmluZzo6CisKKyAgICAgICAg
ICAgIEV4cGVyaW1lbnRhbCBBUEkKKworICAgICAgICA6cGFyYW0gZXhwcmluZm86CisgICAgICAg
ICAgICBBIHRleHQgc3RyaW5nIGhlbHBpbmcgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBzdHJp
cAorICAgICAgICAgICAgYGBBc3NlcnRpb25FcnJvcmBgIGZyb20gdGhlIG91dHB1dC4gRGVmYXVs
dHMgdG8gdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICAgbWVzc2FnZS9gYF9fc3RyX18oKWBgLgor
ICAgICAgICAiIiIKKyAgICAgICAgX3N0cmlwdGV4dCA9ICIiCisgICAgICAgIGlmIGV4cHJpbmZv
IGlzIE5vbmUgYW5kIGlzaW5zdGFuY2UoZXhjX2luZm9bMV0sIEFzc2VydGlvbkVycm9yKToKKyAg
ICAgICAgICAgIGV4cHJpbmZvID0gZ2V0YXR0cihleGNfaW5mb1sxXSwgIm1zZyIsIE5vbmUpCisg
ICAgICAgICAgICBpZiBleHByaW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGV4cHJpbmZv
ID0gc2FmZXJlcHIoZXhjX2luZm9bMV0pCisgICAgICAgICAgICBpZiBleHByaW5mbyBhbmQgZXhw
cmluZm8uc3RhcnRzd2l0aChjbHMuX2Fzc2VydF9zdGFydF9yZXByKToKKyAgICAgICAgICAgICAg
ICBfc3RyaXB0ZXh0ID0gIkFzc2VydGlvbkVycm9yOiAiCisKKyAgICAgICAgcmV0dXJuIGNscyhl
eGNfaW5mbywgX3N0cmlwdGV4dCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2N1
cnJlbnQoCisgICAgICAgIGNscywgZXhwcmluZm86IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAg
KSAtPiAiRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSI6CisgICAgICAgICIiIlJldHVybiBh
biBFeGNlcHRpb25JbmZvIG1hdGNoaW5nIHRoZSBjdXJyZW50IHRyYWNlYmFjay4KKworICAgICAg
ICAuLiB3YXJuaW5nOjoKKworICAgICAgICAgICAgRXhwZXJpbWVudGFsIEFQSQorCisgICAgICAg
IDpwYXJhbSBleHByaW5mbzoKKyAgICAgICAgICAgIEEgdGV4dCBzdHJpbmcgaGVscGluZyB0byBk
ZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN0cmlwCisgICAgICAgICAgICBgYEFzc2VydGlvbkVycm9y
YGAgZnJvbSB0aGUgb3V0cHV0LiBEZWZhdWx0cyB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgICAg
ICBtZXNzYWdlL2BgX19zdHJfXygpYGAuCisgICAgICAgICIiIgorICAgICAgICB0dXAgPSBzeXMu
ZXhjX2luZm8oKQorICAgICAgICBhc3NlcnQgdHVwWzBdIGlzIG5vdCBOb25lLCAibm8gY3VycmVu
dCBleGNlcHRpb24iCisgICAgICAgIGFzc2VydCB0dXBbMV0gaXMgbm90IE5vbmUsICJubyBjdXJy
ZW50IGV4Y2VwdGlvbiIKKyAgICAgICAgYXNzZXJ0IHR1cFsyXSBpcyBub3QgTm9uZSwgIm5vIGN1
cnJlbnQgZXhjZXB0aW9uIgorICAgICAgICBleGNfaW5mbyA9ICh0dXBbMF0sIHR1cFsxXSwgdHVw
WzJdKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uSW5mby5mcm9tX2V4Y19pbmZvKGV4Y19pbmZv
LCBleHByaW5mbykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmb3JfbGF0ZXIoY2xzKSAt
PiAiRXhjZXB0aW9uSW5mb1tfRV0iOgorICAgICAgICAiIiJSZXR1cm4gYW4gdW5maWxsZWQgRXhj
ZXB0aW9uSW5mby4iIiIKKyAgICAgICAgcmV0dXJuIGNscyhOb25lKQorCisgICAgZGVmIGZpbGxf
dW5maWxsZWQoc2VsZiwgZXhjX2luZm86IFR1cGxlWyJUeXBlW19FXSIsIF9FLCBUcmFjZWJhY2tU
eXBlXSkgLT4gTm9uZToKKyAgICAgICAgIiIiRmlsbCBhbiB1bmZpbGxlZCBFeGNlcHRpb25JbmZv
IGNyZWF0ZWQgd2l0aCBgYGZvcl9sYXRlcigpYGAuIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9l
eGNpbmZvIGlzIE5vbmUsICJFeGNlcHRpb25JbmZvIHdhcyBhbHJlYWR5IGZpbGxlZCIKKyAgICAg
ICAgc2VsZi5fZXhjaW5mbyA9IGV4Y19pbmZvCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdHlw
ZShzZWxmKSAtPiAiVHlwZVtfRV0iOgorICAgICAgICAiIiJUaGUgZXhjZXB0aW9uIGNsYXNzLiIi
IgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2VsZi5fZXhjaW5mbyBpcyBub3QgTm9u
ZQorICAgICAgICApLCAiLnR5cGUgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciB0aGUgY29udGV4dCBt
YW5hZ2VyIGV4aXRzIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhjaW5mb1swXQorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpIC0+IF9FOgorICAgICAgICAiIiJUaGUgZXhjZXB0
aW9uIHZhbHVlLiIiIgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2VsZi5fZXhjaW5m
byBpcyBub3QgTm9uZQorICAgICAgICApLCAiLnZhbHVlIGNhbiBvbmx5IGJlIHVzZWQgYWZ0ZXIg
dGhlIGNvbnRleHQgbWFuYWdlciBleGl0cyIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2luZm9b
MV0KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0YihzZWxmKSAtPiBUcmFjZWJhY2tUeXBlOgor
ICAgICAgICAiIiJUaGUgZXhjZXB0aW9uIHJhdyB0cmFjZWJhY2suIiIiCisgICAgICAgIGFzc2Vy
dCAoCisgICAgICAgICAgICBzZWxmLl9leGNpbmZvIGlzIG5vdCBOb25lCisgICAgICAgICksICIu
dGIgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciB0aGUgY29udGV4dCBtYW5hZ2VyIGV4aXRzIgorICAg
ICAgICByZXR1cm4gc2VsZi5fZXhjaW5mb1syXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHR5
cGVuYW1lKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIiIiVGhlIHR5cGUgbmFtZSBvZiB0aGUgZXhj
ZXB0aW9uLiIiIgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2VsZi5fZXhjaW5mbyBp
cyBub3QgTm9uZQorICAgICAgICApLCAiLnR5cGVuYW1lIGNhbiBvbmx5IGJlIHVzZWQgYWZ0ZXIg
dGhlIGNvbnRleHQgbWFuYWdlciBleGl0cyIKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZS5fX25h
bWVfXworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHRyYWNlYmFjayhzZWxmKSAtPiBUcmFjZWJh
Y2s6CisgICAgICAgICIiIlRoZSB0cmFjZWJhY2suIiIiCisgICAgICAgIGlmIHNlbGYuX3RyYWNl
YmFjayBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fdHJhY2ViYWNrID0gVHJhY2ViYWNrKHNl
bGYudGIsIGV4Y2luZm89cmVmKHNlbGYpKQorICAgICAgICByZXR1cm4gc2VsZi5fdHJhY2ViYWNr
CisKKyAgICBAdHJhY2ViYWNrLnNldHRlcgorICAgIGRlZiB0cmFjZWJhY2soc2VsZiwgdmFsdWU6
IFRyYWNlYmFjaykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fdHJhY2ViYWNrID0gdmFsdWUKKwor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIGlmIHNlbGYuX2V4Y2luZm8g
aXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAiPEV4Y2VwdGlvbkluZm8gZm9yIHJhaXNlcyBj
b250ZXh0bWFuYWdlcj4iCisgICAgICAgIHJldHVybiAiPHt9IHt9IHRibGVuPXt9PiIuZm9ybWF0
KAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNhZmVyZXByKHNlbGYuX2V4
Y2luZm9bMV0pLCBsZW4oc2VsZi50cmFjZWJhY2spCisgICAgICAgICkKKworICAgIGRlZiBleGNv
bmx5KHNlbGYsIHRyeXNob3J0OiBib29sID0gRmFsc2UpIC0+IHN0cjoKKyAgICAgICAgIiIiUmV0
dXJuIHRoZSBleGNlcHRpb24gYXMgYSBzdHJpbmcuCisKKyAgICAgICAgV2hlbiAndHJ5c2hvcnQn
IHJlc29sdmVzIHRvIFRydWUsIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGEKKyAgICAgICAgX3B5dGVz
dC5fY29kZS5fQXNzZXJ0aW9uRXJyb3IsIG9ubHkgdGhlIGFjdHVhbCBleGNlcHRpb24gcGFydCBv
ZgorICAgICAgICB0aGUgZXhjZXB0aW9uIHJlcHJlc2VudGF0aW9uIGlzIHJldHVybmVkIChzbyAn
QXNzZXJ0aW9uRXJyb3I6ICcgaXMKKyAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBiZWdpbm5pbmcp
LgogICAgICAgICAiIiIKICAgICAgICAgbGluZXMgPSBmb3JtYXRfZXhjZXB0aW9uX29ubHkoc2Vs
Zi50eXBlLCBzZWxmLnZhbHVlKQogICAgICAgICB0ZXh0ID0gIiIuam9pbihsaW5lcykKICAgICAg
ICAgdGV4dCA9IHRleHQucnN0cmlwKCkKICAgICAgICAgaWYgdHJ5c2hvcnQ6CiAgICAgICAgICAg
ICBpZiB0ZXh0LnN0YXJ0c3dpdGgoc2VsZi5fc3RyaXB0ZXh0KToKLSAgICAgICAgICAgICAgICB0
ZXh0ID0gdGV4dFtsZW4oc2VsZi5fc3RyaXB0ZXh0KTpdCisgICAgICAgICAgICAgICAgdGV4dCA9
IHRleHRbbGVuKHNlbGYuX3N0cmlwdGV4dCkgOl0KICAgICAgICAgcmV0dXJuIHRleHQKIAotICAg
IGRlZiBlcnJpc2luc3RhbmNlKHNlbGYsIGV4Yyk6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBp
ZiB0aGUgZXhjZXB0aW9uIGlzIGFuIGluc3RhbmNlIG9mIGV4YyAiIiIKKyAgICBkZWYgZXJyaXNp
bnN0YW5jZSgKKyAgICAgICAgc2VsZiwgZXhjOiBVbmlvblsiVHlwZVtCYXNlRXhjZXB0aW9uXSIs
IFR1cGxlWyJUeXBlW0Jhc2VFeGNlcHRpb25dIiwgLi4uXV0KKyAgICApIC0+IGJvb2w6CisgICAg
ICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBleGNlcHRpb24gaXMgYW4gaW5zdGFuY2Ugb2YgZXhj
LgorCisgICAgICAgIENvbnNpZGVyIHVzaW5nIGBgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBl
eGMpYGAgaW5zdGVhZC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKHNl
bGYudmFsdWUsIGV4YykKIAotICAgIGRlZiBfZ2V0cmVwcmNyYXNoKHNlbGYpOgorICAgIGRlZiBf
Z2V0cmVwcmNyYXNoKHNlbGYpIC0+ICJSZXByRmlsZUxvY2F0aW9uIjoKICAgICAgICAgZXhjb25s
eSA9IHNlbGYuZXhjb25seSh0cnlzaG9ydD1UcnVlKQogICAgICAgICBlbnRyeSA9IHNlbGYudHJh
Y2ViYWNrLmdldGNyYXNoZW50cnkoKQogICAgICAgICBwYXRoLCBsaW5lbm8gPSBlbnRyeS5mcmFt
ZS5jb2RlLnJhdy5jb19maWxlbmFtZSwgZW50cnkubGluZW5vCkBAIC00MzksMTggKzU2OCw0MiBA
QCBjbGFzcyBFeGNlcHRpb25JbmZvKG9iamVjdCk6CiAKICAgICBkZWYgZ2V0cmVwcigKICAgICAg
ICAgc2VsZiwKLSAgICAgICAgc2hvd2xvY2Fscz1GYWxzZSwKLSAgICAgICAgc3R5bGU9Imxvbmci
LAotICAgICAgICBhYnNwYXRoPUZhbHNlLAotICAgICAgICB0YmZpbHRlcj1UcnVlLAotICAgICAg
ICBmdW5jYXJncz1GYWxzZSwKLSAgICApOgotICAgICAgICAiIiIgcmV0dXJuIHN0cigpYWJsZSBy
ZXByZXNlbnRhdGlvbiBvZiB0aGlzIGV4Y2VwdGlvbiBpbmZvLgotICAgICAgICAgICAgc2hvd2xv
Y2Fsczogc2hvdyBsb2NhbHMgcGVyIHRyYWNlYmFjayBlbnRyeQotICAgICAgICAgICAgc3R5bGU6
IGxvbmd8c2hvcnR8bm98bmF0aXZlIHRyYWNlYmFjayBzdHlsZQotICAgICAgICAgICAgdGJmaWx0
ZXI6IGhpZGUgZW50cmllcyAod2hlcmUgX190cmFjZWJhY2toaWRlX18gaXMgdHJ1ZSkKLQotICAg
ICAgICAgICAgaW4gY2FzZSBvZiBzdHlsZT09bmF0aXZlLCB0YmZpbHRlciBhbmQgc2hvd2xvY2Fs
cyBpcyBpZ25vcmVkLgorICAgICAgICBzaG93bG9jYWxzOiBib29sID0gRmFsc2UsCisgICAgICAg
IHN0eWxlOiAiX1RyYWNlYmFja1N0eWxlIiA9ICJsb25nIiwKKyAgICAgICAgYWJzcGF0aDogYm9v
bCA9IEZhbHNlLAorICAgICAgICB0YmZpbHRlcjogYm9vbCA9IFRydWUsCisgICAgICAgIGZ1bmNh
cmdzOiBib29sID0gRmFsc2UsCisgICAgICAgIHRydW5jYXRlX2xvY2FsczogYm9vbCA9IFRydWUs
CisgICAgICAgIGNoYWluOiBib29sID0gVHJ1ZSwKKyAgICApIC0+IFVuaW9uWyJSZXByRXhjZXB0
aW9uSW5mbyIsICJFeGNlcHRpb25DaGFpblJlcHIiXToKKyAgICAgICAgIiIiUmV0dXJuIHN0cigp
YWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGV4Y2VwdGlvbiBpbmZvLgorCisgICAgICAgIDpw
YXJhbSBib29sIHNob3dsb2NhbHM6CisgICAgICAgICAgICBTaG93IGxvY2FscyBwZXIgdHJhY2Vi
YWNrIGVudHJ5LgorICAgICAgICAgICAgSWdub3JlZCBpZiBgYHN0eWxlPT0ibmF0aXZlImBgLgor
CisgICAgICAgIDpwYXJhbSBzdHIgc3R5bGU6CisgICAgICAgICAgICBsb25nfHNob3J0fG5vfG5h
dGl2ZXx2YWx1ZSB0cmFjZWJhY2sgc3R5bGUuCisKKyAgICAgICAgOnBhcmFtIGJvb2wgYWJzcGF0
aDoKKyAgICAgICAgICAgIElmIHBhdGhzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGFic29sdXRlIG9y
IGxlZnQgdW5jaGFuZ2VkLgorCisgICAgICAgIDpwYXJhbSBib29sIHRiZmlsdGVyOgorICAgICAg
ICAgICAgSGlkZSBlbnRyaWVzIHRoYXQgY29udGFpbiBhIGxvY2FsIHZhcmlhYmxlIGBgX190cmFj
ZWJhY2toaWRlX189PVRydWVgYC4KKyAgICAgICAgICAgIElnbm9yZWQgaWYgYGBzdHlsZT09Im5h
dGl2ZSJgYC4KKworICAgICAgICA6cGFyYW0gYm9vbCBmdW5jYXJnczoKKyAgICAgICAgICAgIFNo
b3cgZml4dHVyZXMgKCJmdW5jYXJncyIgZm9yIGxlZ2FjeSBwdXJwb3NlcykgcGVyIHRyYWNlYmFj
ayBlbnRyeS4KKworICAgICAgICA6cGFyYW0gYm9vbCB0cnVuY2F0ZV9sb2NhbHM6CisgICAgICAg
ICAgICBXaXRoIGBgc2hvd2xvY2Fscz09VHJ1ZWBgLCBtYWtlIHN1cmUgbG9jYWxzIGNhbiBiZSBz
YWZlbHkgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KKworICAgICAgICA6cGFyYW0gYm9vbCBjaGFp
bjoKKyAgICAgICAgICAgIElmIGNoYWluZWQgZXhjZXB0aW9ucyBpbiBQeXRob24gMyBzaG91bGQg
YmUgc2hvd24uCisKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjkKKworICAgICAgICAg
ICAgQWRkZWQgdGhlIGBgY2hhaW5gYCBwYXJhbWV0ZXIuCiAgICAgICAgICIiIgogICAgICAgICBp
ZiBzdHlsZSA9PSAibmF0aXZlIjoKICAgICAgICAgICAgIHJldHVybiBSZXByRXhjZXB0aW9uSW5m
bygKQEAgLTQ2OCw4NCArNjIxLDgzIEBAIGNsYXNzIEV4Y2VwdGlvbkluZm8ob2JqZWN0KToKICAg
ICAgICAgICAgIGFic3BhdGg9YWJzcGF0aCwKICAgICAgICAgICAgIHRiZmlsdGVyPXRiZmlsdGVy
LAogICAgICAgICAgICAgZnVuY2FyZ3M9ZnVuY2FyZ3MsCisgICAgICAgICAgICB0cnVuY2F0ZV9s
b2NhbHM9dHJ1bmNhdGVfbG9jYWxzLAorICAgICAgICAgICAgY2hhaW49Y2hhaW4sCiAgICAgICAg
ICkKICAgICAgICAgcmV0dXJuIGZtdC5yZXByX2V4Y2luZm8oc2VsZikKIAotICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgotICAgICAgICBlbnRyeSA9IHNlbGYudHJhY2ViYWNrWy0xXQotICAgICAgICBs
b2MgPSBSZXByRmlsZUxvY2F0aW9uKGVudHJ5LnBhdGgsIGVudHJ5LmxpbmVubyArIDEsIHNlbGYu
ZXhjb25seSgpKQotICAgICAgICByZXR1cm4gc3RyKGxvYykKLQotICAgIGRlZiBfX3VuaWNvZGVf
XyhzZWxmKToKLSAgICAgICAgZW50cnkgPSBzZWxmLnRyYWNlYmFja1stMV0KLSAgICAgICAgbG9j
ID0gUmVwckZpbGVMb2NhdGlvbihlbnRyeS5wYXRoLCBlbnRyeS5saW5lbm8gKyAxLCBzZWxmLmV4
Y29ubHkoKSkKLSAgICAgICAgcmV0dXJuIHRleHRfdHlwZShsb2MpCisgICAgZGVmIG1hdGNoKHNl
bGYsIHJlZ2V4cDogIlVuaW9uW3N0ciwgUGF0dGVybltzdHJdXSIpIC0+ICJMaXRlcmFsW1RydWVd
IjoKKyAgICAgICAgIiIiQ2hlY2sgd2hldGhlciB0aGUgcmVndWxhciBleHByZXNzaW9uIGByZWdl
eHBgIG1hdGNoZXMgdGhlIHN0cmluZworICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhj
ZXB0aW9uIHVzaW5nIDpmdW5jOmBweXRob246cmUuc2VhcmNoYC4KIAotICAgIGRlZiBtYXRjaChz
ZWxmLCByZWdleHApOgotICAgICAgICAiIiIKLSAgICAgICAgTWF0Y2ggdGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbiAncmVnZXhwJyBvbiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mCi0gICAgICAg
IHRoZSBleGNlcHRpb24uIElmIGl0IG1hdGNoZXMgdGhlbiBUcnVlIGlzIHJldHVybmVkIChzbyB0
aGF0IGl0IGlzCi0gICAgICAgIHBvc3NpYmxlIHRvIHdyaXRlICdhc3NlcnQgZXhjaW5mby5tYXRj
aCgpJykuIElmIGl0IGRvZXNuJ3QgbWF0Y2ggYW4KLSAgICAgICAgQXNzZXJ0aW9uRXJyb3IgaXMg
cmFpc2VkLgorICAgICAgICBJZiBpdCBtYXRjaGVzIGBUcnVlYCBpcyByZXR1cm5lZCwgb3RoZXJ3
aXNlIGFuIGBBc3NlcnRpb25FcnJvcmAgaXMgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIGlmIG5vdCByZS5zZWFyY2gocmVnZXhw
LCBzdHIoc2VsZi52YWx1ZSkpOgotICAgICAgICAgICAgYXNzZXJ0IDAsICJQYXR0ZXJuICd7IXN9
JyBub3QgZm91bmQgaW4gJ3shc30nIi5mb3JtYXQocmVnZXhwLCBzZWxmLnZhbHVlKQorICAgICAg
ICBtc2cgPSAiUmVnZXggcGF0dGVybiB7IXJ9IGRvZXMgbm90IG1hdGNoIHshcn0uIgorICAgICAg
ICBpZiByZWdleHAgPT0gc3RyKHNlbGYudmFsdWUpOgorICAgICAgICAgICAgbXNnICs9ICIgRGlk
IHlvdSBtZWFuIHRvIGByZS5lc2NhcGUoKWAgdGhlIHJlZ2V4PyIKKyAgICAgICAgYXNzZXJ0IHJl
LnNlYXJjaChyZWdleHAsIHN0cihzZWxmLnZhbHVlKSksIG1zZy5mb3JtYXQocmVnZXhwLCBzdHIo
c2VsZi52YWx1ZSkpCisgICAgICAgICMgUmV0dXJuIFRydWUgdG8gYWxsb3cgZm9yICJhc3NlcnQg
ZXhjaW5mby5tYXRjaCgpIi4KICAgICAgICAgcmV0dXJuIFRydWUKIAogCiBAYXR0ci5zCi1jbGFz
cyBGb3JtYXR0ZWRFeGNpbmZvKG9iamVjdCk6Ci0gICAgIiIiIHByZXNlbnRpbmcgaW5mb3JtYXRp
b24gYWJvdXQgZmFpbGluZyBGdW5jdGlvbnMgYW5kIEdlbmVyYXRvcnMuICIiIgorY2xhc3MgRm9y
bWF0dGVkRXhjaW5mbzoKKyAgICAiIiJQcmVzZW50aW5nIGluZm9ybWF0aW9uIGFib3V0IGZhaWxp
bmcgRnVuY3Rpb25zIGFuZCBHZW5lcmF0b3JzLiIiIgorCiAgICAgIyBmb3IgdHJhY2ViYWNrIGVu
dHJpZXMKICAgICBmbG93X21hcmtlciA9ICI+IgogICAgIGZhaWxfbWFya2VyID0gIkUiCiAKLSAg
ICBzaG93bG9jYWxzID0gYXR0ci5pYihkZWZhdWx0PUZhbHNlKQotICAgIHN0eWxlID0gYXR0ci5p
YihkZWZhdWx0PSJsb25nIikKLSAgICBhYnNwYXRoID0gYXR0ci5pYihkZWZhdWx0PVRydWUpCi0g
ICAgdGJmaWx0ZXIgPSBhdHRyLmliKGRlZmF1bHQ9VHJ1ZSkKLSAgICBmdW5jYXJncyA9IGF0dHIu
aWIoZGVmYXVsdD1GYWxzZSkKKyAgICBzaG93bG9jYWxzID0gYXR0ci5pYih0eXBlPWJvb2wsIGRl
ZmF1bHQ9RmFsc2UpCisgICAgc3R5bGUgPSBhdHRyLmliKHR5cGU9Il9UcmFjZWJhY2tTdHlsZSIs
IGRlZmF1bHQ9ImxvbmciKQorICAgIGFic3BhdGggPSBhdHRyLmliKHR5cGU9Ym9vbCwgZGVmYXVs
dD1UcnVlKQorICAgIHRiZmlsdGVyID0gYXR0ci5pYih0eXBlPWJvb2wsIGRlZmF1bHQ9VHJ1ZSkK
KyAgICBmdW5jYXJncyA9IGF0dHIuaWIodHlwZT1ib29sLCBkZWZhdWx0PUZhbHNlKQorICAgIHRy
dW5jYXRlX2xvY2FscyA9IGF0dHIuaWIodHlwZT1ib29sLCBkZWZhdWx0PVRydWUpCisgICAgY2hh
aW4gPSBhdHRyLmliKHR5cGU9Ym9vbCwgZGVmYXVsdD1UcnVlKQogICAgIGFzdGNhY2hlID0gYXR0
ci5pYihkZWZhdWx0PWF0dHIuRmFjdG9yeShkaWN0KSwgaW5pdD1GYWxzZSwgcmVwcj1GYWxzZSkK
IAotICAgIGRlZiBfZ2V0aW5kZW50KHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgICMgZmlndXJlIG91
dCBpbmRlbnQgZm9yIGdpdmVuIHNvdXJjZQorICAgIGRlZiBfZ2V0aW5kZW50KHNlbGYsIHNvdXJj
ZTogIlNvdXJjZSIpIC0+IGludDoKKyAgICAgICAgIyBGaWd1cmUgb3V0IGluZGVudCBmb3IgdGhl
IGdpdmVuIHNvdXJjZS4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IHN0cihzb3VyY2Uu
Z2V0c3RhdGVtZW50KGxlbihzb3VyY2UpIC0gMSkpCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZElu
dGVycnVwdDoKICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDogICMgbm9xYQorICAg
ICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBzID0gc3RyKHNvdXJjZVstMV0pCiAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRl
cnJ1cHQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdDogICMgbm9x
YQorICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmV0
dXJuIDAKICAgICAgICAgcmV0dXJuIDQgKyAobGVuKHMpIC0gbGVuKHMubHN0cmlwKCkpKQogCi0g
ICAgZGVmIF9nZXRlbnRyeXNvdXJjZShzZWxmLCBlbnRyeSk6CisgICAgZGVmIF9nZXRlbnRyeXNv
dXJjZShzZWxmLCBlbnRyeTogVHJhY2ViYWNrRW50cnkpIC0+IE9wdGlvbmFsWyJTb3VyY2UiXToK
ICAgICAgICAgc291cmNlID0gZW50cnkuZ2V0c291cmNlKHNlbGYuYXN0Y2FjaGUpCiAgICAgICAg
IGlmIHNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5kZWlu
ZGVudCgpCiAgICAgICAgIHJldHVybiBzb3VyY2UKIAotICAgIGRlZiBfc2FmZXJlcHIoc2VsZiwg
b2JqKToKLSAgICAgICAgcmV0dXJuIHB5LmlvLnNhZmVyZXByKG9iaikKLQotICAgIGRlZiByZXBy
X2FyZ3Moc2VsZiwgZW50cnkpOgorICAgIGRlZiByZXByX2FyZ3Moc2VsZiwgZW50cnk6IFRyYWNl
YmFja0VudHJ5KSAtPiBPcHRpb25hbFsiUmVwckZ1bmNBcmdzIl06CiAgICAgICAgIGlmIHNlbGYu
ZnVuY2FyZ3M6CiAgICAgICAgICAgICBhcmdzID0gW10KICAgICAgICAgICAgIGZvciBhcmduYW1l
LCBhcmd2YWx1ZSBpbiBlbnRyeS5mcmFtZS5nZXRhcmdzKHZhcj1UcnVlKToKLSAgICAgICAgICAg
ICAgICBhcmdzLmFwcGVuZCgoYXJnbmFtZSwgc2VsZi5fc2FmZXJlcHIoYXJndmFsdWUpKSkKKyAg
ICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgoYXJnbmFtZSwgc2FmZXJlcHIoYXJndmFsdWUpKSkK
ICAgICAgICAgICAgIHJldHVybiBSZXByRnVuY0FyZ3MoYXJncykKKyAgICAgICAgcmV0dXJuIE5v
bmUKIAotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIHNvdXJjZSwgbGluZV9pbmRleD0tMSwgZXhj
aW5mbz1Ob25lLCBzaG9ydD1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gZm9ybWF0dGVkIGFu
ZCBtYXJrZWQgdXAgc291cmNlIGxpbmVzLiAiIiIKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2Nv
ZGUKLQorICAgIGRlZiBnZXRfc291cmNlKAorICAgICAgICBzZWxmLAorICAgICAgICBzb3VyY2U6
IE9wdGlvbmFsWyJTb3VyY2UiXSwKKyAgICAgICAgbGluZV9pbmRleDogaW50ID0gLTEsCisgICAg
ICAgIGV4Y2luZm86IE9wdGlvbmFsW0V4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl1dID0gTm9u
ZSwKKyAgICAgICAgc2hvcnQ6IGJvb2wgPSBGYWxzZSwKKyAgICApIC0+IExpc3Rbc3RyXToKKyAg
ICAgICAgIiIiUmV0dXJuIGZvcm1hdHRlZCBhbmQgbWFya2VkIHVwIHNvdXJjZSBsaW5lcy4iIiIK
ICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZSBvciBsaW5lX2lu
ZGV4ID49IGxlbihzb3VyY2UubGluZXMpOgotICAgICAgICAgICAgc291cmNlID0gX3B5dGVzdC5f
Y29kZS5Tb3VyY2UoIj8/PyIpCisgICAgICAgICAgICBzb3VyY2UgPSBTb3VyY2UoIj8/PyIpCiAg
ICAgICAgICAgICBsaW5lX2luZGV4ID0gMAogICAgICAgICBpZiBsaW5lX2luZGV4IDwgMDoKICAg
ICAgICAgICAgIGxpbmVfaW5kZXggKz0gbGVuKHNvdXJjZSkKQEAgLTU1NiwyNiArNzA4LDMxIEBA
IGNsYXNzIEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKICAgICAgICAgICAgIGZvciBsaW5lIGlu
IHNvdXJjZS5saW5lc1s6bGluZV9pbmRleF06CiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5k
KHNwYWNlX3ByZWZpeCArIGxpbmUpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5mbG93
X21hcmtlciArICIgICAiICsgc291cmNlLmxpbmVzW2xpbmVfaW5kZXhdKQotICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gc291cmNlLmxpbmVzW2xpbmVfaW5kZXggKyAxOl06CisgICAgICAgICAgICBm
b3IgbGluZSBpbiBzb3VyY2UubGluZXNbbGluZV9pbmRleCArIDEgOl06CiAgICAgICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKHNwYWNlX3ByZWZpeCArIGxpbmUpCiAgICAgICAgIGlmIGV4Y2luZm8g
aXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbmRlbnQgPSA0IGlmIHNob3J0IGVsc2Ugc2VsZi5f
Z2V0aW5kZW50KHNvdXJjZSkKICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdldF9leGNv
bmx5KGV4Y2luZm8sIGluZGVudD1pbmRlbnQsIG1hcmthbGw9VHJ1ZSkpCiAgICAgICAgIHJldHVy
biBsaW5lcwogCi0gICAgZGVmIGdldF9leGNvbmx5KHNlbGYsIGV4Y2luZm8sIGluZGVudD00LCBt
YXJrYWxsPUZhbHNlKToKKyAgICBkZWYgZ2V0X2V4Y29ubHkoCisgICAgICAgIHNlbGYsCisgICAg
ICAgIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0sCisgICAgICAgIGluZGVu
dDogaW50ID0gNCwKKyAgICAgICAgbWFya2FsbDogYm9vbCA9IEZhbHNlLAorICAgICkgLT4gTGlz
dFtzdHJdOgogICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGluZGVudCA9ICIgIiAqIGluZGVu
dAotICAgICAgICAjIGdldCB0aGUgcmVhbCBleGNlcHRpb24gaW5mb3JtYXRpb24gb3V0CisgICAg
ICAgIGluZGVudHN0ciA9ICIgIiAqIGluZGVudAorICAgICAgICAjIEdldCB0aGUgcmVhbCBleGNl
cHRpb24gaW5mb3JtYXRpb24gb3V0LgogICAgICAgICBleGxpbmVzID0gZXhjaW5mby5leGNvbmx5
KHRyeXNob3J0PVRydWUpLnNwbGl0KCJcbiIpCi0gICAgICAgIGZhaWxpbmRlbnQgPSBzZWxmLmZh
aWxfbWFya2VyICsgaW5kZW50WzE6XQorICAgICAgICBmYWlsaW5kZW50ID0gc2VsZi5mYWlsX21h
cmtlciArIGluZGVudHN0clsxOl0KICAgICAgICAgZm9yIGxpbmUgaW4gZXhsaW5lczoKICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZChmYWlsaW5kZW50ICsgbGluZSkKICAgICAgICAgICAgIGlmIG5v
dCBtYXJrYWxsOgotICAgICAgICAgICAgICAgIGZhaWxpbmRlbnQgPSBpbmRlbnQKKyAgICAgICAg
ICAgICAgICBmYWlsaW5kZW50ID0gaW5kZW50c3RyCiAgICAgICAgIHJldHVybiBsaW5lcwogCi0g
ICAgZGVmIHJlcHJfbG9jYWxzKHNlbGYsIGxvY2Fscyk6CisgICAgZGVmIHJlcHJfbG9jYWxzKHNl
bGYsIGxvY2FsczogTWFwcGluZ1tzdHIsIG9iamVjdF0pIC0+IE9wdGlvbmFsWyJSZXByTG9jYWxz
Il06CiAgICAgICAgIGlmIHNlbGYuc2hvd2xvY2FsczoKICAgICAgICAgICAgIGxpbmVzID0gW10K
ICAgICAgICAgICAgIGtleXMgPSBbbG9jIGZvciBsb2MgaW4gbG9jYWxzIGlmIGxvY1swXSAhPSAi
QCJdCkBAIC01ODgsMzIgKzc0NSwzMyBAQCBjbGFzcyBGb3JtYXR0ZWRFeGNpbmZvKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBmb3JtYXR0aW5nIGNvdWxkIGFsbCBiZSBoYW5k
bGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICAjIF9yZXByKCkgZnVuY3Rpb24sIHdoaWNo
IGlzIG9ubHkgcmVwcmxpYi5SZXByIGluCiAgICAgICAgICAgICAgICAgICAgICMgZGlzZ3Vpc2Us
IHNvIGlzIHZlcnkgY29uZmlndXJhYmxlLgotICAgICAgICAgICAgICAgICAgICBzdHJfcmVwciA9
IHNlbGYuX3NhZmVyZXByKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICAjIGlmIGxlbihzdHJf
cmVwcikgPCA3MCBvciBub3QgaXNpbnN0YW5jZSh2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAg
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCwgdHVwbGUsIGRpY3QpKToKLSAgICAg
ICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIlLTEwcyA9ICVzIiAlIChuYW1lLCBzdHJfcmVw
cikpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudHJ1bmNhdGVfbG9jYWxzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyX3JlcHIgPSBzYWZlcmVwcih2YWx1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9yZXByID0gc2FmZWZv
cm1hdCh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgIyBpZiBsZW4oc3RyX3JlcHIpIDwgNzAg
b3Igbm90IGlzaW5zdGFuY2UodmFsdWUsIChsaXN0LCB0dXBsZSwgZGljdCkpOgorICAgICAgICAg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoIns6PDEwfSA9IHt9Ii5mb3JtYXQobmFtZSwgc3RyX3Jl
cHIpKQogICAgICAgICAgICAgICAgICAgICAjIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMg
ICAgc2VsZi5fbGluZSgiJS0xMHMgPVxcIiAlIChuYW1lLCkpCiAgICAgICAgICAgICAgICAgICAg
ICMgICAgIyBYWFgKICAgICAgICAgICAgICAgICAgICAgIyAgICBwcHJpbnQucHByaW50KHZhbHVl
LCBzdHJlYW09c2VsZi5leGNpbmZvd3JpdGVyKQogICAgICAgICAgICAgcmV0dXJuIFJlcHJMb2Nh
bHMobGluZXMpCisgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgcmVwcl90cmFjZWJhY2tf
ZW50cnkoc2VsZiwgZW50cnksIGV4Y2luZm89Tm9uZSk6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0
Ll9jb2RlCi0KLSAgICAgICAgc291cmNlID0gc2VsZi5fZ2V0ZW50cnlzb3VyY2UoZW50cnkpCi0g
ICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgotICAgICAgICAgICAgc291cmNlID0gX3B5dGVzdC5f
Y29kZS5Tb3VyY2UoIj8/PyIpCi0gICAgICAgICAgICBsaW5lX2luZGV4ID0gMAotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgIyBlbnRyeS5nZXRmaXJzdGxpbmVzb3VyY2UoKSBjYW4gYmUgLTEs
IHNob3VsZCBiZSAwIG9uIGp5dGhvbgotICAgICAgICAgICAgbGluZV9pbmRleCA9IGVudHJ5Lmxp
bmVubyAtIG1heChlbnRyeS5nZXRmaXJzdGxpbmVzb3VyY2UoKSwgMCkKLQotICAgICAgICBsaW5l
cyA9IFtdCi0gICAgICAgIHN0eWxlID0gZW50cnkuX3JlcHJfc3R5bGUKLSAgICAgICAgaWYgc3R5
bGUgaXMgTm9uZToKLSAgICAgICAgICAgIHN0eWxlID0gc2VsZi5zdHlsZQorICAgIGRlZiByZXBy
X3RyYWNlYmFja19lbnRyeSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZW50cnk6IFRyYWNlYmFj
a0VudHJ5LAorICAgICAgICBleGNpbmZvOiBPcHRpb25hbFtFeGNlcHRpb25JbmZvW0Jhc2VFeGNl
cHRpb25dXSA9IE5vbmUsCisgICAgKSAtPiAiUmVwckVudHJ5IjoKKyAgICAgICAgbGluZXMgPSBb
XSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgc3R5bGUgPSBlbnRyeS5fcmVwcl9zdHlsZSBp
ZiBlbnRyeS5fcmVwcl9zdHlsZSBpcyBub3QgTm9uZSBlbHNlIHNlbGYuc3R5bGUKICAgICAgICAg
aWYgc3R5bGUgaW4gKCJzaG9ydCIsICJsb25nIik6CisgICAgICAgICAgICBzb3VyY2UgPSBzZWxm
Ll9nZXRlbnRyeXNvdXJjZShlbnRyeSkKKyAgICAgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgor
ICAgICAgICAgICAgICAgIHNvdXJjZSA9IFNvdXJjZSgiPz8/IikKKyAgICAgICAgICAgICAgICBs
aW5lX2luZGV4ID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lX2lu
ZGV4ID0gZW50cnkubGluZW5vIC0gZW50cnkuZ2V0Zmlyc3RsaW5lc291cmNlKCkKICAgICAgICAg
ICAgIHNob3J0ID0gc3R5bGUgPT0gInNob3J0IgogICAgICAgICAgICAgcmVwcmFyZ3MgPSBzZWxm
LnJlcHJfYXJncyhlbnRyeSkgaWYgbm90IHNob3J0IGVsc2UgTm9uZQogICAgICAgICAgICAgcyA9
IHNlbGYuZ2V0X3NvdXJjZShzb3VyY2UsIGxpbmVfaW5kZXgsIGV4Y2luZm8sIHNob3J0PXNob3J0
KQpAQCAtNjIzLDE0ICs3ODEsMTcgQEAgY2xhc3MgRm9ybWF0dGVkRXhjaW5mbyhvYmplY3QpOgog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXhjaW5mbyBhbmQg
ZXhjaW5mby50eXBlbmFtZSBvciAiIgogICAgICAgICAgICAgcGF0aCA9IHNlbGYuX21ha2VwYXRo
KGVudHJ5LnBhdGgpCi0gICAgICAgICAgICBmaWxlbG9jcmVwciA9IFJlcHJGaWxlTG9jYXRpb24o
cGF0aCwgZW50cnkubGluZW5vICsgMSwgbWVzc2FnZSkKLSAgICAgICAgICAgIGxvY2Fsc3JlcHIg
PSBOb25lCi0gICAgICAgICAgICBpZiBub3Qgc2hvcnQ6Ci0gICAgICAgICAgICAgICAgbG9jYWxz
cmVwciA9IHNlbGYucmVwcl9sb2NhbHMoZW50cnkubG9jYWxzKQotICAgICAgICAgICAgcmV0dXJu
IFJlcHJFbnRyeShsaW5lcywgcmVwcmFyZ3MsIGxvY2Fsc3JlcHIsIGZpbGVsb2NyZXByLCBzdHls
ZSkKLSAgICAgICAgaWYgZXhjaW5mbzoKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdl
dF9leGNvbmx5KGV4Y2luZm8sIGluZGVudD00KSkKLSAgICAgICAgcmV0dXJuIFJlcHJFbnRyeShs
aW5lcywgTm9uZSwgTm9uZSwgTm9uZSwgc3R5bGUpCisgICAgICAgICAgICByZXByZmlsZWxvYyA9
IFJlcHJGaWxlTG9jYXRpb24ocGF0aCwgZW50cnkubGluZW5vICsgMSwgbWVzc2FnZSkKKyAgICAg
ICAgICAgIGxvY2Fsc3JlcHIgPSBzZWxmLnJlcHJfbG9jYWxzKGVudHJ5LmxvY2FscykKKyAgICAg
ICAgICAgIHJldHVybiBSZXByRW50cnkobGluZXMsIHJlcHJhcmdzLCBsb2NhbHNyZXByLCByZXBy
ZmlsZWxvYywgc3R5bGUpCisgICAgICAgIGVsaWYgc3R5bGUgPT0gInZhbHVlIjoKKyAgICAgICAg
ICAgIGlmIGV4Y2luZm86CisgICAgICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHN0cihleGNpbmZv
LnZhbHVlKS5zcGxpdCgiXG4iKSkKKyAgICAgICAgICAgIHJldHVybiBSZXByRW50cnkobGluZXMs
IE5vbmUsIE5vbmUsIE5vbmUsIHN0eWxlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYg
ZXhjaW5mbzoKKyAgICAgICAgICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZXRfZXhjb25seShl
eGNpbmZvLCBpbmRlbnQ9NCkpCisgICAgICAgICAgICByZXR1cm4gUmVwckVudHJ5KGxpbmVzLCBO
b25lLCBOb25lLCBOb25lLCBzdHlsZSkKIAogICAgIGRlZiBfbWFrZXBhdGgoc2VsZiwgcGF0aCk6
CiAgICAgICAgIGlmIG5vdCBzZWxmLmFic3BhdGg6CkBAIC02NDIsMzUgKzgwMyw0MyBAQCBjbGFz
cyBGb3JtYXR0ZWRFeGNpbmZvKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IG5wCiAg
ICAgICAgIHJldHVybiBwYXRoCiAKLSAgICBkZWYgcmVwcl90cmFjZWJhY2soc2VsZiwgZXhjaW5m
byk6CisgICAgZGVmIHJlcHJfdHJhY2ViYWNrKHNlbGYsIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9b
QmFzZUV4Y2VwdGlvbl0pIC0+ICJSZXByVHJhY2ViYWNrIjoKICAgICAgICAgdHJhY2ViYWNrID0g
ZXhjaW5mby50cmFjZWJhY2sKICAgICAgICAgaWYgc2VsZi50YmZpbHRlcjoKICAgICAgICAgICAg
IHRyYWNlYmFjayA9IHRyYWNlYmFjay5maWx0ZXIoKQogCi0gICAgICAgIGlmIGlzX3JlY3Vyc2lv
bl9lcnJvcihleGNpbmZvKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBS
ZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICB0cmFjZWJhY2ssIGV4dHJhbGluZSA9IHNlbGYu
X3RydW5jYXRlX3JlY3Vyc2l2ZV90cmFjZWJhY2sodHJhY2ViYWNrKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgZXh0cmFsaW5lID0gTm9uZQogCiAgICAgICAgIGxhc3QgPSB0cmFjZWJhY2tb
LTFdCiAgICAgICAgIGVudHJpZXMgPSBbXQorICAgICAgICBpZiBzZWxmLnN0eWxlID09ICJ2YWx1
ZSI6CisgICAgICAgICAgICByZXByZW50cnkgPSBzZWxmLnJlcHJfdHJhY2ViYWNrX2VudHJ5KGxh
c3QsIGV4Y2luZm8pCisgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZChyZXByZW50cnkpCisgICAg
ICAgICAgICByZXR1cm4gUmVwclRyYWNlYmFjayhlbnRyaWVzLCBOb25lLCBzdHlsZT1zZWxmLnN0
eWxlKQorCiAgICAgICAgIGZvciBpbmRleCwgZW50cnkgaW4gZW51bWVyYXRlKHRyYWNlYmFjayk6
CiAgICAgICAgICAgICBlaW5mbyA9IChsYXN0ID09IGVudHJ5KSBhbmQgZXhjaW5mbyBvciBOb25l
CiAgICAgICAgICAgICByZXByZW50cnkgPSBzZWxmLnJlcHJfdHJhY2ViYWNrX2VudHJ5KGVudHJ5
LCBlaW5mbykKICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKHJlcHJlbnRyeSkKICAgICAgICAg
cmV0dXJuIFJlcHJUcmFjZWJhY2soZW50cmllcywgZXh0cmFsaW5lLCBzdHlsZT1zZWxmLnN0eWxl
KQogCi0gICAgZGVmIF90cnVuY2F0ZV9yZWN1cnNpdmVfdHJhY2ViYWNrKHNlbGYsIHRyYWNlYmFj
ayk6Ci0gICAgICAgICIiIgotICAgICAgICBUcnVuY2F0ZSB0aGUgZ2l2ZW4gcmVjdXJzaXZlIHRy
YWNlYmFjayB0cnlpbmcgdG8gZmluZCB0aGUgc3RhcnRpbmcgcG9pbnQKLSAgICAgICAgb2YgdGhl
IHJlY3Vyc2lvbi4KKyAgICBkZWYgX3RydW5jYXRlX3JlY3Vyc2l2ZV90cmFjZWJhY2soCisgICAg
ICAgIHNlbGYsIHRyYWNlYmFjazogVHJhY2ViYWNrCisgICAgKSAtPiBUdXBsZVtUcmFjZWJhY2ss
IE9wdGlvbmFsW3N0cl1dOgorICAgICAgICAiIiJUcnVuY2F0ZSB0aGUgZ2l2ZW4gcmVjdXJzaXZl
IHRyYWNlYmFjayB0cnlpbmcgdG8gZmluZCB0aGUgc3RhcnRpbmcKKyAgICAgICAgcG9pbnQgb2Yg
dGhlIHJlY3Vyc2lvbi4KIAotICAgICAgICBUaGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgZ29pbmcg
dGhyb3VnaCBlYWNoIHRyYWNlYmFjayBlbnRyeSBhbmQgZmluZGluZyB0aGUKLSAgICAgICAgcG9p
bnQgaW4gd2hpY2ggdGhlIGxvY2FscyBvZiB0aGUgZnJhbWUgYXJlIGVxdWFsIHRvIHRoZSBsb2Nh
bHMgb2YgYSBwcmV2aW91cyBmcmFtZSAoc2VlIGBgcmVjdXJzaW9uaW5kZXgoKWBgLgorICAgICAg
ICBUaGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgZ29pbmcgdGhyb3VnaCBlYWNoIHRyYWNlYmFjayBl
bnRyeSBhbmQKKyAgICAgICAgZmluZGluZyB0aGUgcG9pbnQgaW4gd2hpY2ggdGhlIGxvY2FscyBv
ZiB0aGUgZnJhbWUgYXJlIGVxdWFsIHRvIHRoZQorICAgICAgICBsb2NhbHMgb2YgYSBwcmV2aW91
cyBmcmFtZSAoc2VlIGBgcmVjdXJzaW9uaW5kZXgoKWBgKS4KIAotICAgICAgICBIYW5kbGUgdGhl
IHNpdHVhdGlvbiB3aGVyZSB0aGUgcmVjdXJzaW9uIHByb2Nlc3MgbWlnaHQgcmFpc2UgYW4gZXhj
ZXB0aW9uIChmb3IgZXhhbXBsZQotICAgICAgICBjb21wYXJpbmcgbnVtcHkgYXJyYXlzIHVzaW5n
IGVxdWFsaXR5IHJhaXNlcyBhIFR5cGVFcnJvciksIGluIHdoaWNoIGNhc2Ugd2UgZG8gb3VyIGJl
c3QgdG8KLSAgICAgICAgd2FybiB0aGUgdXNlciBvZiB0aGUgZXJyb3IgYW5kIHNob3cgYSBsaW1p
dGVkIHRyYWNlYmFjay4KKyAgICAgICAgSGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIHJl
Y3Vyc2lvbiBwcm9jZXNzIG1pZ2h0IHJhaXNlIGFuCisgICAgICAgIGV4Y2VwdGlvbiAoZm9yIGV4
YW1wbGUgY29tcGFyaW5nIG51bXB5IGFycmF5cyB1c2luZyBlcXVhbGl0eSByYWlzZXMgYQorICAg
ICAgICBUeXBlRXJyb3IpLCBpbiB3aGljaCBjYXNlIHdlIGRvIG91ciBiZXN0IHRvIHdhcm4gdGhl
IHVzZXIgb2YgdGhlCisgICAgICAgIGVycm9yIGFuZCBzaG93IGEgbGltaXRlZCB0cmFjZWJhY2su
CiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWN1cnNpb25pbmRleCA9
IHRyYWNlYmFjay5yZWN1cnNpb25pbmRleCgpCkBAIC02ODMsMTM2ICs4NTIsMTUyIEBAIGNsYXNz
IEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKICAgICAgICAgICAgICAgICAiICBEaXNwbGF5aW5n
IGZpcnN0IGFuZCBsYXN0IHttYXhfZnJhbWVzfSBzdGFjayBmcmFtZXMgb3V0IG9mIHt0b3RhbH0u
IgogICAgICAgICAgICAgKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgZXhjX3R5cGU9dHlwZShl
KS5fX25hbWVfXywKLSAgICAgICAgICAgICAgICBleGNfbXNnPXNhZmVfc3RyKGUpLAorICAgICAg
ICAgICAgICAgIGV4Y19tc2c9c3RyKGUpLAogICAgICAgICAgICAgICAgIG1heF9mcmFtZXM9bWF4
X2ZyYW1lcywKICAgICAgICAgICAgICAgICB0b3RhbD1sZW4odHJhY2ViYWNrKSwKLSAgICAgICAg
ICAgICkKLSAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja1s6bWF4X2ZyYW1lc10gKyB0
cmFjZWJhY2tbLW1heF9mcmFtZXM6XQorICAgICAgICAgICAgKSAgIyB0eXBlOiBPcHRpb25hbFtz
dHJdCisgICAgICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIGFkZGluZyB0d28gaW5zdGFj
ZXMgb2YgYSBMaXN0IHN1YnR5cGUKKyAgICAgICAgICAgICMgY3VycmVudGx5IGluY29ycmVjdGx5
IGhhcyB0eXBlIExpc3QgaW5zdGVhZCBvZiB0aGUgc3VidHlwZS4KKyAgICAgICAgICAgIHRyYWNl
YmFjayA9IHRyYWNlYmFja1s6bWF4X2ZyYW1lc10gKyB0cmFjZWJhY2tbLW1heF9mcmFtZXM6XSAg
IyB0eXBlOiBpZ25vcmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHJlY3Vyc2lvbmlu
ZGV4IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGV4dHJhbGluZSA9ICIhISEgUmVjdXJz
aW9uIGRldGVjdGVkIChzYW1lIGxvY2FscyAmIHBvc2l0aW9uKSIKLSAgICAgICAgICAgICAgICB0
cmFjZWJhY2sgPSB0cmFjZWJhY2tbOnJlY3Vyc2lvbmluZGV4ICsgMV0KKyAgICAgICAgICAgICAg
ICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tbOiByZWN1cnNpb25pbmRleCArIDFdCiAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgIGV4dHJhbGluZSA9IE5vbmUKIAogICAgICAgICByZXR1
cm4gdHJhY2ViYWNrLCBleHRyYWxpbmUKIAotICAgIGRlZiByZXByX2V4Y2luZm8oc2VsZiwgZXhj
aW5mbyk6Ci0gICAgICAgIGlmIF9QWTI6Ci0gICAgICAgICAgICByZXBydHJhY2ViYWNrID0gc2Vs
Zi5yZXByX3RyYWNlYmFjayhleGNpbmZvKQotICAgICAgICAgICAgcmVwcmNyYXNoID0gZXhjaW5m
by5fZ2V0cmVwcmNyYXNoKCkKLQotICAgICAgICAgICAgcmV0dXJuIFJlcHJFeGNlcHRpb25JbmZv
KHJlcHJ0cmFjZWJhY2ssIHJlcHJjcmFzaCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJl
cHJfY2hhaW4gPSBbXQotICAgICAgICAgICAgZSA9IGV4Y2luZm8udmFsdWUKLSAgICAgICAgICAg
IGRlc2NyID0gTm9uZQotICAgICAgICAgICAgd2hpbGUgZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICBpZiBleGNpbmZvOgotICAgICAgICAgICAgICAgICAgICByZXBydHJhY2ViYWNrID0g
c2VsZi5yZXByX3RyYWNlYmFjayhleGNpbmZvKQotICAgICAgICAgICAgICAgICAgICByZXByY3Jh
c2ggPSBleGNpbmZvLl9nZXRyZXByY3Jhc2goKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICMgZmFsbGJhY2sgdG8gbmF0aXZlIHJlcHIgaWYgdGhlIGV4Y2VwdGlv
biBkb2Vzbid0IGhhdmUgYSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgICAgICMgRXhjZXB0
aW9uSW5mbyBvYmplY3RzIHJlcXVpcmUgYSBmdWxsIHRyYWNlYmFjayB0byB3b3JrCi0gICAgICAg
ICAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBSZXByVHJhY2ViYWNrTmF0aXZlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShlKSwgZSwg
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICByZXByY3Jh
c2ggPSBOb25lCi0KLSAgICAgICAgICAgICAgICByZXByX2NoYWluICs9IFsocmVwcnRyYWNlYmFj
aywgcmVwcmNyYXNoLCBkZXNjcildCi0gICAgICAgICAgICAgICAgaWYgZS5fX2NhdXNlX18gaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBlLl9fY2F1c2VfXwotICAgICAgICAg
ICAgICAgICAgICBleGNpbmZvID0gRXhjZXB0aW9uSW5mbygKLSAgICAgICAgICAgICAgICAgICAg
ICAgICh0eXBlKGUpLCBlLCBlLl9fdHJhY2ViYWNrX18pCi0gICAgICAgICAgICAgICAgICAgICkg
aWYgZS5fX3RyYWNlYmFja19fIGVsc2UgTm9uZQotICAgICAgICAgICAgICAgICAgICBkZXNjciA9
ICJUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dp
bmcgZXhjZXB0aW9uOiIKLSAgICAgICAgICAgICAgICBlbGlmIChlLl9fY29udGV4dF9fIGlzIG5v
dCBOb25lIGFuZCBub3QgZS5fX3N1cHByZXNzX2NvbnRleHRfXyk6Ci0gICAgICAgICAgICAgICAg
ICAgIGUgPSBlLl9fY29udGV4dF9fCi0gICAgICAgICAgICAgICAgICAgIGV4Y2luZm8gPSBFeGNl
cHRpb25JbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUoZSksIGUsIGUuX190cmFj
ZWJhY2tfXykKLSAgICAgICAgICAgICAgICAgICAgKSBpZiBlLl9fdHJhY2ViYWNrX18gZWxzZSBO
b25lCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyID0gIkR1cmluZyBoYW5kbGluZyBvZiB0aGUg
YWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoiCi0gICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZSA9IE5vbmUKLSAgICAgICAgICAgIHJl
cHJfY2hhaW4ucmV2ZXJzZSgpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uQ2hhaW5SZXBy
KHJlcHJfY2hhaW4pCi0KLQotY2xhc3MgVGVybWluYWxSZXByKG9iamVjdCk6CisgICAgZGVmIHJl
cHJfZXhjaW5mbygKKyAgICAgICAgc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9uSW5mb1tCYXNlRXhj
ZXB0aW9uXQorICAgICkgLT4gIkV4Y2VwdGlvbkNoYWluUmVwciI6CisgICAgICAgIHJlcHJfY2hh
aW4gPSAoCisgICAgICAgICAgICBbXQorICAgICAgICApICAjIHR5cGU6IExpc3RbVHVwbGVbUmVw
clRyYWNlYmFjaywgT3B0aW9uYWxbUmVwckZpbGVMb2NhdGlvbl0sIE9wdGlvbmFsW3N0cl1dXQor
ICAgICAgICBlID0gZXhjaW5mby52YWx1ZSAgIyB0eXBlOiBPcHRpb25hbFtCYXNlRXhjZXB0aW9u
XQorICAgICAgICBleGNpbmZvXyA9IGV4Y2luZm8gICMgdHlwZTogT3B0aW9uYWxbRXhjZXB0aW9u
SW5mb1tCYXNlRXhjZXB0aW9uXV0KKyAgICAgICAgZGVzY3IgPSBOb25lCisgICAgICAgIHNlZW4g
PSBzZXQoKSAgIyB0eXBlOiBTZXRbaW50XQorICAgICAgICB3aGlsZSBlIGlzIG5vdCBOb25lIGFu
ZCBpZChlKSBub3QgaW4gc2VlbjoKKyAgICAgICAgICAgIHNlZW4uYWRkKGlkKGUpKQorICAgICAg
ICAgICAgaWYgZXhjaW5mb186CisgICAgICAgICAgICAgICAgcmVwcnRyYWNlYmFjayA9IHNlbGYu
cmVwcl90cmFjZWJhY2soZXhjaW5mb18pCisgICAgICAgICAgICAgICAgcmVwcmNyYXNoID0gKAor
ICAgICAgICAgICAgICAgICAgICBleGNpbmZvXy5fZ2V0cmVwcmNyYXNoKCkgaWYgc2VsZi5zdHls
ZSAhPSAidmFsdWUiIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICkgICMgdHlwZTogT3B0aW9u
YWxbUmVwckZpbGVMb2NhdGlvbl0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
IyBGYWxsYmFjayB0byBuYXRpdmUgcmVwciBpZiB0aGUgZXhjZXB0aW9uIGRvZXNuJ3QgaGF2ZSBh
IHRyYWNlYmFjazoKKyAgICAgICAgICAgICAgICAjIEV4Y2VwdGlvbkluZm8gb2JqZWN0cyByZXF1
aXJlIGEgZnVsbCB0cmFjZWJhY2sgdG8gd29yay4KKyAgICAgICAgICAgICAgICByZXBydHJhY2Vi
YWNrID0gUmVwclRyYWNlYmFja05hdGl2ZSgKKyAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNr
LmZvcm1hdF9leGNlcHRpb24odHlwZShlKSwgZSwgTm9uZSkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgcmVwcmNyYXNoID0gTm9uZQorCisgICAgICAgICAgICByZXByX2NoYWlu
ICs9IFsocmVwcnRyYWNlYmFjaywgcmVwcmNyYXNoLCBkZXNjcildCisgICAgICAgICAgICBpZiBl
Ll9fY2F1c2VfXyBpcyBub3QgTm9uZSBhbmQgc2VsZi5jaGFpbjoKKyAgICAgICAgICAgICAgICBl
ID0gZS5fX2NhdXNlX18KKyAgICAgICAgICAgICAgICBleGNpbmZvXyA9ICgKKyAgICAgICAgICAg
ICAgICAgICAgRXhjZXB0aW9uSW5mbygodHlwZShlKSwgZSwgZS5fX3RyYWNlYmFja19fKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgZS5fX3RyYWNlYmFja19fCisgICAgICAgICAgICAgICAgICAg
IGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBkZXNjciA9ICJU
aGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcg
ZXhjZXB0aW9uOiIKKyAgICAgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgICAgIGUuX19jb250
ZXh0X18gaXMgbm90IE5vbmUgYW5kIG5vdCBlLl9fc3VwcHJlc3NfY29udGV4dF9fIGFuZCBzZWxm
LmNoYWluCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGUgPSBlLl9fY29udGV4dF9f
CisgICAgICAgICAgICAgICAgZXhjaW5mb18gPSAoCisgICAgICAgICAgICAgICAgICAgIEV4Y2Vw
dGlvbkluZm8oKHR5cGUoZSksIGUsIGUuX190cmFjZWJhY2tfXykpCisgICAgICAgICAgICAgICAg
ICAgIGlmIGUuX190cmFjZWJhY2tfXworICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZGVzY3IgPSAiRHVyaW5nIGhhbmRsaW5n
IG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOiIKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZSA9IE5vbmUKKyAgICAgICAgcmVwcl9j
aGFpbi5yZXZlcnNlKCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbkNoYWluUmVwcihyZXByX2No
YWluKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHMgPSBzZWxmLl9fdW5pY29k
ZV9fKCkKLSAgICAgICAgaWYgX1BZMjoKLSAgICAgICAgICAgIHMgPSBzLmVuY29kZSgidXRmLTgi
KQotICAgICAgICByZXR1cm4gcwogCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgorQGF0dHIu
cygqKntBVFRSU19FUV9GSUVMRDogRmFsc2V9KSAgIyB0eXBlOiBpZ25vcmUKK2NsYXNzIFRlcm1p
bmFsUmVwcjoKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgICMgRllJIHRo
aXMgaXMgY2FsbGVkIGZyb20gcHl0ZXN0LXhkaXN0J3Mgc2VyaWFsaXphdGlvbiBvZiBleGNlcHRp
b24KICAgICAgICAgIyBpbmZvcm1hdGlvbi4KLSAgICAgICAgaW8gPSBweS5pby5UZXh0SU8oKQot
ICAgICAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKGZpbGU9aW8pCisgICAgICAgIGlvID0g
U3RyaW5nSU8oKQorICAgICAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKGZpbGU9aW8pCiAgICAgICAg
IHNlbGYudG90ZXJtaW5hbCh0dykKICAgICAgICAgcmV0dXJuIGlvLmdldHZhbHVlKCkuc3RyaXAo
KQogCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjwlcyBpbnN0YW5j
ZSBhdCAlMHg+IiAlIChzZWxmLl9fY2xhc3NfXywgaWQoc2VsZikpCisgICAgZGVmIF9fcmVwcl9f
KHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8e30gaW5zdGFuY2UgYXQgezoweH0+Ii5m
b3JtYXQoc2VsZi5fX2NsYXNzX18sIGlkKHNlbGYpKQorCisgICAgZGVmIHRvdGVybWluYWwoc2Vs
ZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCkKIAogCisjIFRoaXMgY2xhc3MgaXMgYWJzdHJhY3QgLS0gb25seSBzdWJjbGFz
c2VzIGFyZSBpbnN0YW50aWF0ZWQuCitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBGYWxzZX0p
ICAjIHR5cGU6IGlnbm9yZQogY2xhc3MgRXhjZXB0aW9uUmVwcihUZXJtaW5hbFJlcHIpOgorICAg
ICMgUHJvdmlkZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICByZXByY3Jhc2ggPSBOb25lICAjIHR5cGU6
IE9wdGlvbmFsW1JlcHJGaWxlTG9jYXRpb25dCisgICAgcmVwcnRyYWNlYmFjayA9IE5vbmUgICMg
dHlwZTogUmVwclRyYWNlYmFjawogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBz
ZWxmLnNlY3Rpb25zID0gW10KKyAgICBkZWYgX19hdHRyc19wb3N0X2luaXRfXyhzZWxmKSAtPiBO
b25lOgorICAgICAgICBzZWxmLnNlY3Rpb25zID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIs
IHN0ciwgc3RyXV0KIAotICAgIGRlZiBhZGRzZWN0aW9uKHNlbGYsIG5hbWUsIGNvbnRlbnQsIHNl
cD0iLSIpOgorICAgIGRlZiBhZGRzZWN0aW9uKHNlbGYsIG5hbWU6IHN0ciwgY29udGVudDogc3Ry
LCBzZXA6IHN0ciA9ICItIikgLT4gTm9uZToKICAgICAgICAgc2VsZi5zZWN0aW9ucy5hcHBlbmQo
KG5hbWUsIGNvbnRlbnQsIHNlcCkpCiAKLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Cisg
ICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgogICAg
ICAgICBmb3IgbmFtZSwgY29udGVudCwgc2VwIGluIHNlbGYuc2VjdGlvbnM6CiAgICAgICAgICAg
ICB0dy5zZXAoc2VwLCBuYW1lKQogICAgICAgICAgICAgdHcubGluZShjb250ZW50KQogCiAKK0Bh
dHRyLnMoKip7QVRUUlNfRVFfRklFTEQ6IEZhbHNlfSkgICMgdHlwZTogaWdub3JlCiBjbGFzcyBF
eGNlcHRpb25DaGFpblJlcHIoRXhjZXB0aW9uUmVwcik6Ci0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY2hhaW4pOgotICAgICAgICBzdXBlcihFeGNlcHRpb25DaGFpblJlcHIsIHNlbGYpLl9faW5p
dF9fKCkKLSAgICAgICAgc2VsZi5jaGFpbiA9IGNoYWluCisgICAgY2hhaW4gPSBhdHRyLmliKAor
ICAgICAgICB0eXBlPVNlcXVlbmNlWworICAgICAgICAgICAgVHVwbGVbIlJlcHJUcmFjZWJhY2si
LCBPcHRpb25hbFsiUmVwckZpbGVMb2NhdGlvbiJdLCBPcHRpb25hbFtzdHJdXQorICAgICAgICBd
CisgICAgKQorCisgICAgZGVmIF9fYXR0cnNfcG9zdF9pbml0X18oc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgc3VwZXIoKS5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICAgICAgICAgIyByZXByY3Jhc2gg
YW5kIHJlcHJ0cmFjZWJhY2sgb2YgdGhlIG91dGVybW9zdCAodGhlIG5ld2VzdCkgZXhjZXB0aW9u
Ci0gICAgICAgICMgaW4gdGhlIGNoYWluCi0gICAgICAgIHNlbGYucmVwcnRyYWNlYmFjayA9IGNo
YWluWy0xXVswXQotICAgICAgICBzZWxmLnJlcHJjcmFzaCA9IGNoYWluWy0xXVsxXQorICAgICAg
ICAjIGluIHRoZSBjaGFpbi4KKyAgICAgICAgc2VsZi5yZXBydHJhY2ViYWNrID0gc2VsZi5jaGFp
blstMV1bMF0KKyAgICAgICAgc2VsZi5yZXByY3Jhc2ggPSBzZWxmLmNoYWluWy0xXVsxXQogCi0g
ICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgorICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3
OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9uZToKICAgICAgICAgZm9yIGVsZW1lbnQgaW4gc2VsZi5j
aGFpbjoKICAgICAgICAgICAgIGVsZW1lbnRbMF0udG90ZXJtaW5hbCh0dykKICAgICAgICAgICAg
IGlmIGVsZW1lbnRbMl0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHcubGluZSgiIikK
ICAgICAgICAgICAgICAgICB0dy5saW5lKGVsZW1lbnRbMl0sIHllbGxvdz1UcnVlKQotICAgICAg
ICBzdXBlcihFeGNlcHRpb25DaGFpblJlcHIsIHNlbGYpLnRvdGVybWluYWwodHcpCisgICAgICAg
IHN1cGVyKCkudG90ZXJtaW5hbCh0dykKIAogCitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBG
YWxzZX0pICAjIHR5cGU6IGlnbm9yZQogY2xhc3MgUmVwckV4Y2VwdGlvbkluZm8oRXhjZXB0aW9u
UmVwcik6CisgICAgcmVwcnRyYWNlYmFjayA9IGF0dHIuaWIodHlwZT0iUmVwclRyYWNlYmFjayIp
CisgICAgcmVwcmNyYXNoID0gYXR0ci5pYih0eXBlPSJSZXByRmlsZUxvY2F0aW9uIikKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXBydHJhY2ViYWNrLCByZXByY3Jhc2gpOgotICAgICAgICBz
dXBlcihSZXByRXhjZXB0aW9uSW5mbywgc2VsZikuX19pbml0X18oKQotICAgICAgICBzZWxmLnJl
cHJ0cmFjZWJhY2sgPSByZXBydHJhY2ViYWNrCi0gICAgICAgIHNlbGYucmVwcmNyYXNoID0gcmVw
cmNyYXNoCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6CisgICAgZGVmIHRvdGVybWlu
YWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgogICAgICAgICBzZWxmLnJlcHJ0
cmFjZWJhY2sudG90ZXJtaW5hbCh0dykKLSAgICAgICAgc3VwZXIoUmVwckV4Y2VwdGlvbkluZm8s
IHNlbGYpLnRvdGVybWluYWwodHcpCisgICAgICAgIHN1cGVyKCkudG90ZXJtaW5hbCh0dykKIAog
CitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBGYWxzZX0pICAjIHR5cGU6IGlnbm9yZQogY2xh
c3MgUmVwclRyYWNlYmFjayhUZXJtaW5hbFJlcHIpOgotICAgIGVudHJ5c2VwID0gIl8gIgorICAg
IHJlcHJlbnRyaWVzID0gYXR0ci5pYih0eXBlPVNlcXVlbmNlW1VuaW9uWyJSZXByRW50cnkiLCAi
UmVwckVudHJ5TmF0aXZlIl1dKQorICAgIGV4dHJhbGluZSA9IGF0dHIuaWIodHlwZT1PcHRpb25h
bFtzdHJdKQorICAgIHN0eWxlID0gYXR0ci5pYih0eXBlPSJfVHJhY2ViYWNrU3R5bGUiKQogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcHJlbnRyaWVzLCBleHRyYWxpbmUsIHN0eWxlKToKLSAg
ICAgICAgc2VsZi5yZXByZW50cmllcyA9IHJlcHJlbnRyaWVzCi0gICAgICAgIHNlbGYuZXh0cmFs
aW5lID0gZXh0cmFsaW5lCi0gICAgICAgIHNlbGYuc3R5bGUgPSBzdHlsZQorICAgIGVudHJ5c2Vw
ID0gIl8gIgogCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICAjIHRoZSBl
bnRyaWVzIG1pZ2h0IGhhdmUgZGlmZmVyZW50IHN0eWxlcworICAgIGRlZiB0b3Rlcm1pbmFsKHNl
bGYsIHR3OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9uZToKKyAgICAgICAgIyBUaGUgZW50cmllcyBt
aWdodCBoYXZlIGRpZmZlcmVudCBzdHlsZXMuCiAgICAgICAgIGZvciBpLCBlbnRyeSBpbiBlbnVt
ZXJhdGUoc2VsZi5yZXByZW50cmllcyk6CiAgICAgICAgICAgICBpZiBlbnRyeS5zdHlsZSA9PSAi
bG9uZyI6CiAgICAgICAgICAgICAgICAgdHcubGluZSgiIikKQEAgLTgzMSw0OCArMTAxNiw4OCBA
QCBjbGFzcyBSZXByVHJhY2ViYWNrKFRlcm1pbmFsUmVwcik6CiAKIAogY2xhc3MgUmVwclRyYWNl
YmFja05hdGl2ZShSZXByVHJhY2ViYWNrKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Ymxp
bmVzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGJsaW5lczogU2VxdWVuY2Vbc3RyXSkgLT4g
Tm9uZToKICAgICAgICAgc2VsZi5zdHlsZSA9ICJuYXRpdmUiCiAgICAgICAgIHNlbGYucmVwcmVu
dHJpZXMgPSBbUmVwckVudHJ5TmF0aXZlKHRibGluZXMpXQogICAgICAgICBzZWxmLmV4dHJhbGlu
ZSA9IE5vbmUKIAogCitAYXR0ci5zKCoqe0FUVFJTX0VRX0ZJRUxEOiBGYWxzZX0pICAjIHR5cGU6
IGlnbm9yZQogY2xhc3MgUmVwckVudHJ5TmF0aXZlKFRlcm1pbmFsUmVwcik6Ci0gICAgc3R5bGUg
PSAibmF0aXZlIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRibGluZXMpOgotICAgICAgICBz
ZWxmLmxpbmVzID0gdGJsaW5lcworICAgIGxpbmVzID0gYXR0ci5pYih0eXBlPVNlcXVlbmNlW3N0
cl0pCisgICAgc3R5bGUgPSAibmF0aXZlIiAgIyB0eXBlOiBfVHJhY2ViYWNrU3R5bGUKIAotICAg
IGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKKyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dzog
VGVybWluYWxXcml0ZXIpIC0+IE5vbmU6CiAgICAgICAgIHR3LndyaXRlKCIiLmpvaW4oc2VsZi5s
aW5lcykpCiAKIAorQGF0dHIucygqKntBVFRSU19FUV9GSUVMRDogRmFsc2V9KSAgIyB0eXBlOiBp
Z25vcmUKIGNsYXNzIFJlcHJFbnRyeShUZXJtaW5hbFJlcHIpOgotICAgIGxvY2Fsc3NlcCA9ICJf
ICIKKyAgICBsaW5lcyA9IGF0dHIuaWIodHlwZT1TZXF1ZW5jZVtzdHJdKQorICAgIHJlcHJmdW5j
YXJncyA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFsiUmVwckZ1bmNBcmdzIl0pCisgICAgcmVwcmxv
Y2FscyA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFsiUmVwckxvY2FscyJdKQorICAgIHJlcHJmaWxl
bG9jID0gYXR0ci5pYih0eXBlPU9wdGlvbmFsWyJSZXByRmlsZUxvY2F0aW9uIl0pCisgICAgc3R5
bGUgPSBhdHRyLmliKHR5cGU9Il9UcmFjZWJhY2tTdHlsZSIpCisKKyAgICBkZWYgX3dyaXRlX2Vu
dHJ5X2xpbmVzKHNlbGYsIHR3OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9uZToKKyAgICAgICAgIiIi
V3JpdGUgdGhlIHNvdXJjZSBjb2RlIHBvcnRpb25zIG9mIGEgbGlzdCBvZiB0cmFjZWJhY2sgZW50
cmllcyB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcuCisKKyAgICAgICAgVXN1YWxseSBlbnRyaWVz
IGFyZSBsaW5lcyBsaWtlIHRoZXNlOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzLCBy
ZXByZnVuY2FyZ3MsIHJlcHJsb2NhbHMsIGZpbGVsb2NyZXByLCBzdHlsZSk6Ci0gICAgICAgIHNl
bGYubGluZXMgPSBsaW5lcwotICAgICAgICBzZWxmLnJlcHJmdW5jYXJncyA9IHJlcHJmdW5jYXJn
cwotICAgICAgICBzZWxmLnJlcHJsb2NhbHMgPSByZXBybG9jYWxzCi0gICAgICAgIHNlbGYucmVw
cmZpbGVsb2MgPSBmaWxlbG9jcmVwcgotICAgICAgICBzZWxmLnN0eWxlID0gc3R5bGUKKyAgICAg
ICAgICAgICIgICAgIHggPSAxIgorICAgICAgICAgICAgIj4gICAgYXNzZXJ0IHggPT0gMiIKKyAg
ICAgICAgICAgICJFICAgIGFzc2VydCAxID09IDIiCiAKLSAgICBkZWYgdG90ZXJtaW5hbChzZWxm
LCB0dyk6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiByZW5kZXJpbmcgdGhl
ICJzb3VyY2UiIHBvcnRpb25zIG9mIGl0ICh0aGUgbGluZXMgd2l0aG91dAorICAgICAgICB0aGUg
IkUiIHByZWZpeCkgdXNpbmcgc3ludGF4IGhpZ2hsaWdodGluZywgdGFraW5nIGNhcmUgdG8gbm90
IGhpZ2hsaWdodGluZyB0aGUgIj4iCisgICAgICAgIGNoYXJhY3RlciwgYXMgZG9pbmcgc28gbWln
aHQgYnJlYWsgbGluZSBjb250aW51YXRpb25zLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBu
b3Qgc2VsZi5saW5lczoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgc2VwYXJhdGUg
aW5kZW50cyBhbmQgc291cmNlIGxpbmVzIHRoYXQgYXJlIG5vdCBmYWlsdXJlczogd2Ugd2FudCB0
bworICAgICAgICAjIGhpZ2hsaWdodCB0aGUgY29kZSBidXQgbm90IHRoZSBpbmRlbnRhdGlvbiwg
d2hpY2ggbWF5IGNvbnRhaW4gbWFya2VycworICAgICAgICAjIHN1Y2ggYXMgIj4gICBhc3NlcnQg
MCIKKyAgICAgICAgZmFpbF9tYXJrZXIgPSAie30gICAiLmZvcm1hdChGb3JtYXR0ZWRFeGNpbmZv
LmZhaWxfbWFya2VyKQorICAgICAgICBpbmRlbnRfc2l6ZSA9IGxlbihmYWlsX21hcmtlcikKKyAg
ICAgICAgaW5kZW50cyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgICAgICBzb3VyY2VfbGlu
ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgZmFpbHVyZV9saW5lcyA9IFtdICAj
IHR5cGU6IExpc3Rbc3RyXQorICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKHNl
bGYubGluZXMpOgorICAgICAgICAgICAgaXNfZmFpbHVyZV9saW5lID0gbGluZS5zdGFydHN3aXRo
KGZhaWxfbWFya2VyKQorICAgICAgICAgICAgaWYgaXNfZmFpbHVyZV9saW5lOgorICAgICAgICAg
ICAgICAgICMgZnJvbSB0aGlzIHBvaW50IG9uIGFsbCBsaW5lcyBhcmUgY29uc2lkZXJlZCBwYXJ0
IG9mIHRoZSBmYWlsdXJlCisgICAgICAgICAgICAgICAgZmFpbHVyZV9saW5lcy5leHRlbmQoc2Vs
Zi5saW5lc1tpbmRleDpdKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3R5bGUgPT0gInZhbHVlIjoKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlX2xpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgIGluZGVudHMuYXBwZW5kKGxpbmVbOmluZGVudF9zaXplXSkK
KyAgICAgICAgICAgICAgICAgICAgc291cmNlX2xpbmVzLmFwcGVuZChsaW5lW2luZGVudF9zaXpl
Ol0pCisKKyAgICAgICAgdHcuX3dyaXRlX3NvdXJjZShzb3VyY2VfbGluZXMsIGluZGVudHMpCisK
KyAgICAgICAgIyBmYWlsdXJlIGxpbmVzIGFyZSBhbHdheXMgY29tcGxldGVseSByZWQgYW5kIGJv
bGQKKyAgICAgICAgZm9yIGxpbmUgaW4gZmFpbHVyZV9saW5lczoKKyAgICAgICAgICAgIHR3Lmxp
bmUobGluZSwgYm9sZD1UcnVlLCByZWQ9VHJ1ZSkKKworICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYs
IHR3OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9uZToKICAgICAgICAgaWYgc2VsZi5zdHlsZSA9PSAi
c2hvcnQiOgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYucmVwcmZpbGVsb2MgaXMgbm90IE5vbmUK
ICAgICAgICAgICAgIHNlbGYucmVwcmZpbGVsb2MudG90ZXJtaW5hbCh0dykKLSAgICAgICAgICAg
IGZvciBsaW5lIGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICAgICAgcmVkID0gbGluZS5zdGFy
dHN3aXRoKCJFICAgIikKLSAgICAgICAgICAgICAgICB0dy5saW5lKGxpbmUsIGJvbGQ9VHJ1ZSwg
cmVkPXJlZCkKLSAgICAgICAgICAgICMgdHcubGluZSgiIikKKyAgICAgICAgICAgIHNlbGYuX3dy
aXRlX2VudHJ5X2xpbmVzKHR3KQorICAgICAgICAgICAgaWYgc2VsZi5yZXBybG9jYWxzOgorICAg
ICAgICAgICAgICAgIHNlbGYucmVwcmxvY2Fscy50b3Rlcm1pbmFsKHR3LCBpbmRlbnQ9IiAiICog
OCkKICAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGlmIHNlbGYucmVwcmZ1bmNhcmdzOgog
ICAgICAgICAgICAgc2VsZi5yZXByZnVuY2FyZ3MudG90ZXJtaW5hbCh0dykKLSAgICAgICAgZm9y
IGxpbmUgaW4gc2VsZi5saW5lczoKLSAgICAgICAgICAgIHJlZCA9IGxpbmUuc3RhcnRzd2l0aCgi
RSAgICIpCi0gICAgICAgICAgICB0dy5saW5lKGxpbmUsIGJvbGQ9VHJ1ZSwgcmVkPXJlZCkKKwor
ICAgICAgICBzZWxmLl93cml0ZV9lbnRyeV9saW5lcyh0dykKKwogICAgICAgICBpZiBzZWxmLnJl
cHJsb2NhbHM6Ci0gICAgICAgICAgICAjIHR3LnNlcChzZWxmLmxvY2Fsc3NlcCwgIkxvY2FscyIp
CiAgICAgICAgICAgICB0dy5saW5lKCIiKQogICAgICAgICAgICAgc2VsZi5yZXBybG9jYWxzLnRv
dGVybWluYWwodHcpCiAgICAgICAgIGlmIHNlbGYucmVwcmZpbGVsb2M6CkBAIC04ODAsNDggKzEx
MDUsNDcgQEAgY2xhc3MgUmVwckVudHJ5KFRlcm1pbmFsUmVwcik6CiAgICAgICAgICAgICAgICAg
dHcubGluZSgiIikKICAgICAgICAgICAgIHNlbGYucmVwcmZpbGVsb2MudG90ZXJtaW5hbCh0dykK
IAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzXG4lc1xuJXMiICUg
KCJcbiIuam9pbihzZWxmLmxpbmVzKSwgc2VsZi5yZXBybG9jYWxzLCBzZWxmLnJlcHJmaWxlbG9j
KQorICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJ7fVxue31c
bnt9Ii5mb3JtYXQoCisgICAgICAgICAgICAiXG4iLmpvaW4oc2VsZi5saW5lcyksIHNlbGYucmVw
cmxvY2Fscywgc2VsZi5yZXByZmlsZWxvYworICAgICAgICApCiAKIAorQGF0dHIucygqKntBVFRS
U19FUV9GSUVMRDogRmFsc2V9KSAgIyB0eXBlOiBpZ25vcmUKIGNsYXNzIFJlcHJGaWxlTG9jYXRp
b24oVGVybWluYWxSZXByKToKKyAgICBwYXRoID0gYXR0ci5pYih0eXBlPXN0ciwgY29udmVydGVy
PXN0cikKKyAgICBsaW5lbm8gPSBhdHRyLmliKHR5cGU9aW50KQorICAgIG1lc3NhZ2UgPSBhdHRy
LmliKHR5cGU9c3RyKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGxpbmVubywgbWVz
c2FnZSk6Ci0gICAgICAgIHNlbGYucGF0aCA9IHN0cihwYXRoKQotICAgICAgICBzZWxmLmxpbmVu
byA9IGxpbmVubwotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCi0KLSAgICBkZWYgdG90
ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgICMgZmlsZW5hbWUgYW5kIGxpbmVubyBvdXRwdXQg
Zm9yIGVhY2ggZW50cnksCi0gICAgICAgICMgdXNpbmcgYW4gb3V0cHV0IGZvcm1hdCB0aGF0IG1v
c3QgZWRpdG9ycyB1bnRlcnN0YW5kCisgICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHc6IFRlcm1p
bmFsV3JpdGVyKSAtPiBOb25lOgorICAgICAgICAjIEZpbGVuYW1lIGFuZCBsaW5lbm8gb3V0cHV0
IGZvciBlYWNoIGVudHJ5LCB1c2luZyBhbiBvdXRwdXQgZm9ybWF0CisgICAgICAgICMgdGhhdCBt
b3N0IGVkaXRvcnMgdW5kZXJzdGFuZC4KICAgICAgICAgbXNnID0gc2VsZi5tZXNzYWdlCiAgICAg
ICAgIGkgPSBtc2cuZmluZCgiXG4iKQogICAgICAgICBpZiBpICE9IC0xOgogICAgICAgICAgICAg
bXNnID0gbXNnWzppXQogICAgICAgICB0dy53cml0ZShzZWxmLnBhdGgsIGJvbGQ9VHJ1ZSwgcmVk
PVRydWUpCi0gICAgICAgIHR3LmxpbmUoIjolczogJXMiICUgKHNlbGYubGluZW5vLCBtc2cpKQor
ICAgICAgICB0dy5saW5lKCI6e306IHt9Ii5mb3JtYXQoc2VsZi5saW5lbm8sIG1zZykpCiAKIAor
QGF0dHIucygqKntBVFRSU19FUV9GSUVMRDogRmFsc2V9KSAgIyB0eXBlOiBpZ25vcmUKIGNsYXNz
IFJlcHJMb2NhbHMoVGVybWluYWxSZXByKToKKyAgICBsaW5lcyA9IGF0dHIuaWIodHlwZT1TZXF1
ZW5jZVtzdHJdKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2Vs
Zi5saW5lcyA9IGxpbmVzCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6CisgICAgZGVm
IHRvdGVybWluYWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyLCBpbmRlbnQ9IiIpIC0+IE5vbmU6
CiAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICB0dy5saW5lKGxp
bmUpCisgICAgICAgICAgICB0dy5saW5lKGluZGVudCArIGxpbmUpCiAKIAorQGF0dHIucygqKntB
VFRSU19FUV9GSUVMRDogRmFsc2V9KSAgIyB0eXBlOiBpZ25vcmUKIGNsYXNzIFJlcHJGdW5jQXJn
cyhUZXJtaW5hbFJlcHIpOgorICAgIGFyZ3MgPSBhdHRyLmliKHR5cGU9U2VxdWVuY2VbVHVwbGVb
c3RyLCBvYmplY3RdXSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKLSAgICAgICAg
c2VsZi5hcmdzID0gYXJncwotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcpOgorICAgIGRl
ZiB0b3Rlcm1pbmFsKHNlbGYsIHR3OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9uZToKICAgICAgICAg
aWYgc2VsZi5hcmdzOgogICAgICAgICAgICAgbGluZXNvZmFyID0gIiIKICAgICAgICAgICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBzZWxmLmFyZ3M6Ci0gICAgICAgICAgICAgICAgbnMgPSAiJXMgPSAl
cyIgJSAoc2FmZV9zdHIobmFtZSksIHNhZmVfc3RyKHZhbHVlKSkKKyAgICAgICAgICAgICAgICBu
cyA9ICJ7fSA9IHt9Ii5mb3JtYXQobmFtZSwgdmFsdWUpCiAgICAgICAgICAgICAgICAgaWYgbGVu
KG5zKSArIGxlbihsaW5lc29mYXIpICsgMiA+IHR3LmZ1bGx3aWR0aDoKICAgICAgICAgICAgICAg
ICAgICAgaWYgbGluZXNvZmFyOgogICAgICAgICAgICAgICAgICAgICAgICAgdHcubGluZShsaW5l
c29mYXIpCkBAIC05MzYsMzUgKzExNjAsNzkgQEAgY2xhc3MgUmVwckZ1bmNBcmdzKFRlcm1pbmFs
UmVwcik6CiAgICAgICAgICAgICB0dy5saW5lKCIiKQogCiAKLWRlZiBnZXRyYXdjb2RlKG9iaiwg
dHJ5Y2FsbD1UcnVlKToKLSAgICAiIiIgcmV0dXJuIGNvZGUgb2JqZWN0IGZvciBnaXZlbiBmdW5j
dGlvbi4gIiIiCitkZWYgZ2V0ZnNsaW5lbm8ob2JqOiBvYmplY3QpIC0+IFR1cGxlW1VuaW9uW3N0
ciwgcHkucGF0aC5sb2NhbF0sIGludF06CisgICAgIiIiUmV0dXJuIHNvdXJjZSBsb2NhdGlvbiAo
cGF0aCwgbGluZW5vKSBmb3IgdGhlIGdpdmVuIG9iamVjdC4KKworICAgIElmIHRoZSBzb3VyY2Ug
Y2Fubm90IGJlIGRldGVybWluZWQgcmV0dXJuICgiIiwgLTEpLgorCisgICAgVGhlIGxpbmUgbnVt
YmVyIGlzIDAtYmFzZWQuCisgICAgIiIiCisgICAgIyB4eHggbGV0IGRlY29yYXRvcnMgZXRjIHNw
ZWNpZnkgYSBzYW5lIG9yZGVyaW5nCisgICAgIyBOT1RFOiB0aGlzIHVzZWQgdG8gYmUgZG9uZSBp
biBfcHl0ZXN0LmNvbXBhdC5nZXRmc2xpbmVubywgaW5pdGlhbGx5IGFkZGVkCisgICAgIyAgICAg
ICBpbiA2ZWMxM2EyYjkuICBJdCAoInBsYWNlX2FzIikgYXBwZWFycyB0byBiZSBzb21ldGhpbmcg
dmVyeSBjdXN0b20uCisgICAgb2JqID0gZ2V0X3JlYWxfZnVuYyhvYmopCisgICAgaWYgaGFzYXR0
cihvYmosICJwbGFjZV9hcyIpOgorICAgICAgICBvYmogPSBvYmoucGxhY2VfYXMgICMgdHlwZTog
aWdub3JlW2F0dHItZGVmaW5lZF0KKwogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG9iai5fX2Nv
ZGVfXwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgb2JqID0gZ2V0YXR0cihv
YmosICJpbV9mdW5jIiwgb2JqKQotICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgImZ1bmNfY29k
ZSIsIG9iaikKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICJmX2NvZGUiLCBvYmopCi0gICAg
ICAgIG9iaiA9IGdldGF0dHIob2JqLCAiX19jb2RlX18iLCBvYmopCi0gICAgICAgIGlmIHRyeWNh
bGwgYW5kIG5vdCBoYXNhdHRyKG9iaiwgImNvX2ZpcnN0bGluZW5vIik6Ci0gICAgICAgICAgICBp
ZiBoYXNhdHRyKG9iaiwgIl9fY2FsbF9fIikgYW5kIG5vdCBpbnNwZWN0LmlzY2xhc3Mob2JqKToK
LSAgICAgICAgICAgICAgICB4ID0gZ2V0cmF3Y29kZShvYmouX19jYWxsX18sIHRyeWNhbGw9RmFs
c2UpCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cih4LCAiY29fZmlyc3RsaW5lbm8iKToKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgcmV0dXJuIG9iagorICAgICAgICBj
b2RlID0gQ29kZShvYmopCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgZm4gPSBpbnNwZWN0LmdldHNvdXJjZWZpbGUob2JqKSBvciBpbnNwZWN0LmdldGZp
bGUob2JqKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgICAgIGV4Y2VwdCBUeXBlRXJy
b3I6CisgICAgICAgICAgICByZXR1cm4gIiIsIC0xCiAKKyAgICAgICAgZnNwYXRoID0gZm4gYW5k
IHB5LnBhdGgubG9jYWwoZm4pIG9yICIiCisgICAgICAgIGxpbmVubyA9IC0xCisgICAgICAgIGlm
IGZzcGF0aDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfLCBsaW5lbm8gPSBm
aW5kc291cmNlKG9iaikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIGZzcGF0aCwgbGluZW5vCiAKLWlmIFBZMzU6ICAjIFJl
Y3Vyc2lvbkVycm9yIGludHJvZHVjZWQgaW4gMy41CisgICAgcmV0dXJuIGNvZGUucGF0aCwgY29k
ZS5maXJzdGxpbmVubwogCi0gICAgZGVmIGlzX3JlY3Vyc2lvbl9lcnJvcihleGNpbmZvKToKLSAg
ICAgICAgcmV0dXJuIGV4Y2luZm8uZXJyaXNpbnN0YW5jZShSZWN1cnNpb25FcnJvcikgICMgbm9x
YQogCisjIFJlbGF0aXZlIHBhdGhzIHRoYXQgd2UgdXNlIHRvIGZpbHRlciB0cmFjZWJhY2sgZW50
cmllcyBmcm9tIGFwcGVhcmluZyB0byB0aGUgdXNlcjsKKyMgc2VlIGZpbHRlcl90cmFjZWJhY2su
CisjIG5vdGU6IGlmIHdlIG5lZWQgdG8gYWRkIG1vcmUgcGF0aHMgdGhhbiB3aGF0IHdlIGhhdmUg
bm93IHdlIHNob3VsZCBwcm9iYWJseSB1c2UgYSBsaXN0CisjIGZvciBiZXR0ZXIgbWFpbnRlbmFu
Y2UuCiAKLWVsc2U6CitfUExVR0dZX0RJUiA9IFBhdGgocGx1Z2d5Ll9fZmlsZV9fLnJzdHJpcCgi
b2MiKSkKKyMgcGx1Z2d5IGlzIGVpdGhlciBhIHBhY2thZ2Ugb3IgYSBzaW5nbGUgbW9kdWxlIGRl
cGVuZGluZyBvbiB0aGUgdmVyc2lvbgoraWYgX1BMVUdHWV9ESVIubmFtZSA9PSAiX19pbml0X18u
cHkiOgorICAgIF9QTFVHR1lfRElSID0gX1BMVUdHWV9ESVIucGFyZW50CitfUFlURVNUX0RJUiA9
IFBhdGgoX3B5dGVzdC5fX2ZpbGVfXykucGFyZW50CitfUFlfRElSID0gUGF0aChweS5fX2ZpbGVf
XykucGFyZW50CiAKLSAgICBkZWYgaXNfcmVjdXJzaW9uX2Vycm9yKGV4Y2luZm8pOgotICAgICAg
ICBpZiBub3QgZXhjaW5mby5lcnJpc2luc3RhbmNlKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuICJtYXhpbXVt
IHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIgaW4gc3RyKGV4Y2luZm8udmFsdWUpCi0gICAgICAg
IGV4Y2VwdCBVbmljb2RlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKKworZGVmIGZp
bHRlcl90cmFjZWJhY2soZW50cnk6IFRyYWNlYmFja0VudHJ5KSAtPiBib29sOgorICAgICIiIlJl
dHVybiBUcnVlIGlmIGEgVHJhY2ViYWNrRW50cnkgaW5zdGFuY2Ugc2hvdWxkIGJlIGluY2x1ZGVk
IGluIHRyYWNlYmFja3MuCisKKyAgICBXZSBoaWRlIHRyYWNlYmFjayBlbnRyaWVzIG9mOgorCisg
ICAgKiBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSAobm8gY29kZSB0byBzaG93IHVwIGZvciBp
dCk7CisgICAgKiBpbnRlcm5hbCB0cmFjZWJhY2sgZnJvbSBweXRlc3Qgb3IgaXRzIGludGVybmFs
IGxpYnJhcmllcywgcHkgYW5kIHBsdWdneS4KKyAgICAiIiIKKyAgICAjIGVudHJ5LnBhdGggbWln
aHQgc29tZXRpbWVzIHJldHVybiBhIHN0ciBvYmplY3Qgd2hlbiB0aGUgZW50cnkKKyAgICAjIHBv
aW50cyB0byBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZS4KKyAgICAjIFNlZSBodHRwczovL2Jp
dGJ1Y2tldC5vcmcvcHl0ZXN0LWRldi9weS9pc3N1ZXMvNzEuCisgICAgcmF3X2ZpbGVuYW1lID0g
ZW50cnkuZnJhbWUuY29kZS5yYXcuY29fZmlsZW5hbWUKKyAgICBpc19nZW5lcmF0ZWQgPSAiPCIg
aW4gcmF3X2ZpbGVuYW1lIGFuZCAiPiIgaW4gcmF3X2ZpbGVuYW1lCisgICAgaWYgaXNfZ2VuZXJh
dGVkOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICMgZW50cnkucGF0aCBtaWdodCBwb2lu
dCB0byBhIG5vbi1leGlzdGluZyBmaWxlLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwKKyAgICAjIGFs
c28gcmV0dXJuIGEgc3RyIG9iamVjdC4gU2VlICMxMTMzLgorICAgIHAgPSBQYXRoKGVudHJ5LnBh
dGgpCisKKyAgICBwYXJlbnRzID0gcC5wYXJlbnRzCisgICAgaWYgX1BMVUdHWV9ESVIgaW4gcGFy
ZW50czoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgX1BZVEVTVF9ESVIgaW4gcGFyZW50
czoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgX1BZX0RJUiBpbiBwYXJlbnRzOgorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9zb3VyY2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9fY29kZS9zb3VyY2UucHkKaW5kZXggNmI5ODJhNGNhYzQ3Li40YmExOGFhNjM2MTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9zb3VyY2UucHkKQEAgLTEsNzUgKzEsNzMgQEAKLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgZ2VuZXJhdG9y
cywgcHJpbnRfZnVuY3Rpb24KLQogaW1wb3J0IGFzdAotZnJvbSBhc3QgaW1wb3J0IFB5Q0ZfT05M
WV9BU1QgYXMgX0FTVF9GTEFHCi1mcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0X3JpZ2h0Ci1pbXBv
cnQgbGluZWNhY2hlCi1pbXBvcnQgc3lzCi1pbXBvcnQgc2l4CiBpbXBvcnQgaW5zcGVjdAoraW1w
b3J0IHRleHR3cmFwCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBweQoraW1wb3J0IHdhcm5pbmdz
Citmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0X3JpZ2h0Citmcm9tIHR5cGluZyBpbXBvcnQgSXRl
cmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExp
c3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxl
Citmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAotY3B5X2NvbXBpbGUgPSBjb21waWxlCitmcm9t
IF9weXRlc3QuY29tcGF0IGltcG9ydCBvdmVybG9hZAogCiAKLWNsYXNzIFNvdXJjZShvYmplY3Qp
OgotICAgICIiIiBhbiBpbW11dGFibGUgb2JqZWN0IGhvbGRpbmcgYSBzb3VyY2UgY29kZSBmcmFn
bWVudCwKLSAgICAgICAgcG9zc2libHkgZGVpbmRlbnRpbmcgaXQuCitjbGFzcyBTb3VyY2U6Cisg
ICAgIiIiQW4gaW1tdXRhYmxlIG9iamVjdCBob2xkaW5nIGEgc291cmNlIGNvZGUgZnJhZ21lbnQu
CisKKyAgICBXaGVuIHVzaW5nIFNvdXJjZSguLi4pLCB0aGUgc291cmNlIGxpbmVzIGFyZSBkZWlu
ZGVudGVkLgogICAgICIiIgotICAgIF9jb21waWxlY291bnRlciA9IDAKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqcGFydHMsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVz
ID0gW10KLSAgICAgICAgZGUgPSBrd2FyZ3MuZ2V0KCJkZWluZGVudCIsIFRydWUpCi0gICAgICAg
IHJzdHJpcCA9IGt3YXJncy5nZXQoInJzdHJpcCIsIFRydWUpCi0gICAgICAgIGZvciBwYXJ0IGlu
IHBhcnRzOgotICAgICAgICAgICAgaWYgbm90IHBhcnQ6Ci0gICAgICAgICAgICAgICAgcGFydGxp
bmVzID0gW10KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXJ0LCBTb3VyY2UpOgotICAg
ICAgICAgICAgICAgIHBhcnRsaW5lcyA9IHBhcnQubGluZXMKLSAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShwYXJ0LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMg
PSBbeC5yc3RyaXAoIlxuIikgZm9yIHggaW4gcGFydF0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZShwYXJ0LCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMg
PSBwYXJ0LnNwbGl0KCJcbiIpCi0gICAgICAgICAgICAgICAgaWYgcnN0cmlwOgotICAgICAgICAg
ICAgICAgICAgICB3aGlsZSBwYXJ0bGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBw
YXJ0bGluZXNbLTFdLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRsaW5lcy5wb3AoKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBnZXRzb3VyY2UocGFydCwgZGVpbmRlbnQ9
ZGUpLmxpbmVzCi0gICAgICAgICAgICBpZiBkZToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMg
PSBkZWluZGVudChwYXJ0bGluZXMpCi0gICAgICAgICAgICBsaW5lcy5leHRlbmQocGFydGxpbmVz
KQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLmxpbmVzID09IG90aGVyLmxpbmVzCi0gICAgICAgIGV4Y2VwdCBBdHRy
aWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmKSA9PSBvdGhlcgotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAKLSAgICBfX2hhc2hfXyA9IE5vbmUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb2Jq
OiBvYmplY3QgPSBOb25lKSAtPiBOb25lOgorICAgICAgICBpZiBub3Qgb2JqOgorICAgICAgICAg
ICAgc2VsZi5saW5lcyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgICAgICBlbGlmIGlzaW5z
dGFuY2Uob2JqLCBTb3VyY2UpOgorICAgICAgICAgICAgc2VsZi5saW5lcyA9IG9iai5saW5lcwor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCAodHVwbGUsIGxpc3QpKToKKyAgICAgICAgICAg
IHNlbGYubGluZXMgPSBkZWluZGVudCh4LnJzdHJpcCgiXG4iKSBmb3IgeCBpbiBvYmopCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHN0cik6CisgICAgICAgICAgICBzZWxmLmxpbmVzID0g
ZGVpbmRlbnQob2JqLnNwbGl0KCJcbiIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmF3
Y29kZSA9IGdldHJhd2NvZGUob2JqKQorICAgICAgICAgICAgc3JjID0gaW5zcGVjdC5nZXRzb3Vy
Y2UocmF3Y29kZSkKKyAgICAgICAgICAgIHNlbGYubGluZXMgPSBkZWluZGVudChzcmMuc3BsaXQo
IlxuIikpCiAKLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICBkZWYgX19lcV9f
KHNlbGYsIG90aGVyOiBvYmplY3QpIC0+IGJvb2w6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KG90aGVyLCBTb3VyY2UpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAg
ICAgIHJldHVybiBzZWxmLmxpbmVzID09IG90aGVyLmxpbmVzCisKKyAgICAjIElnbm9yZSB0eXBl
IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy80MjY2Lgor
ICAgIF9faGFzaF9fID0gTm9uZSAgIyB0eXBlOiBpZ25vcmUKKworICAgIEBvdmVybG9hZAorICAg
IGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IGludCkgLT4gc3RyOgorICAgICAgICAuLi4KKwor
ICAgIEBvdmVybG9hZCAgIyBub3FhOiBGODExCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtl
eTogc2xpY2UpIC0+ICJTb3VyY2UiOiAgIyBub3FhOiBGODExCisgICAgICAgIC4uLgorCisgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogVW5pb25baW50LCBzbGljZV0pIC0+IFVuaW9uW3N0
ciwgIlNvdXJjZSJdOiAgIyBub3FhOiBGODExCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBp
bnQpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubGluZXNba2V5XQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgaWYga2V5LnN0ZXAgbm90IGluIChOb25lLCAxKToKICAgICAgICAgICAgICAg
ICByYWlzZSBJbmRleEVycm9yKCJjYW5ub3Qgc2xpY2UgYSBTb3VyY2Ugd2l0aCBhIHN0ZXAiKQog
ICAgICAgICAgICAgbmV3c291cmNlID0gU291cmNlKCkKLSAgICAgICAgICAgIG5ld3NvdXJjZS5s
aW5lcyA9IHNlbGYubGluZXNba2V5LnN0YXJ0OmtleS5zdG9wXQorICAgICAgICAgICAgbmV3c291
cmNlLmxpbmVzID0gc2VsZi5saW5lc1trZXkuc3RhcnQgOiBrZXkuc3RvcF0KICAgICAgICAgICAg
IHJldHVybiBuZXdzb3VyY2UKIAotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgIGRlZiBfX2l0
ZXJfXyhzZWxmKSAtPiBJdGVyYXRvcltzdHJdOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLmxp
bmVzKQorCisgICAgZGVmIF9fbGVuX18oc2VsZikgLT4gaW50OgogICAgICAgICByZXR1cm4gbGVu
KHNlbGYubGluZXMpCiAKLSAgICBkZWYgc3RyaXAoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4g
bmV3IHNvdXJjZSBvYmplY3Qgd2l0aCB0cmFpbGluZwotICAgICAgICAgICAgYW5kIGxlYWRpbmcg
YmxhbmsgbGluZXMgcmVtb3ZlZC4KLSAgICAgICAgIiIiCisgICAgZGVmIHN0cmlwKHNlbGYpIC0+
ICJTb3VyY2UiOgorICAgICAgICAiIiJSZXR1cm4gbmV3IFNvdXJjZSBvYmplY3Qgd2l0aCB0cmFp
bGluZyBhbmQgbGVhZGluZyBibGFuayBsaW5lcyByZW1vdmVkLiIiIgogICAgICAgICBzdGFydCwg
ZW5kID0gMCwgbGVuKHNlbGYpCiAgICAgICAgIHdoaWxlIHN0YXJ0IDwgZW5kIGFuZCBub3Qgc2Vs
Zi5saW5lc1tzdGFydF0uc3RyaXAoKToKICAgICAgICAgICAgIHN0YXJ0ICs9IDEKQEAgLTc5LDI1
NyArNzcsODIgQEAgY2xhc3MgU291cmNlKG9iamVjdCk6CiAgICAgICAgIHNvdXJjZS5saW5lc1s6
XSA9IHNlbGYubGluZXNbc3RhcnQ6ZW5kXQogICAgICAgICByZXR1cm4gc291cmNlCiAKLSAgICBk
ZWYgcHV0YXJvdW5kKHNlbGYsIGJlZm9yZT0iIiwgYWZ0ZXI9IiIsIGluZGVudD0iICIgKiA0KToK
LSAgICAgICAgIiIiIHJldHVybiBhIGNvcHkgb2YgdGhlIHNvdXJjZSBvYmplY3Qgd2l0aAotICAg
ICAgICAgICAgJ2JlZm9yZScgYW5kICdhZnRlcicgd3JhcHBlZCBhcm91bmQgaXQuCi0gICAgICAg
ICIiIgotICAgICAgICBiZWZvcmUgPSBTb3VyY2UoYmVmb3JlKQotICAgICAgICBhZnRlciA9IFNv
dXJjZShhZnRlcikKLSAgICAgICAgbmV3c291cmNlID0gU291cmNlKCkKLSAgICAgICAgbGluZXMg
PSBbKGluZGVudCArIGxpbmUpIGZvciBsaW5lIGluIHNlbGYubGluZXNdCi0gICAgICAgIG5ld3Nv
dXJjZS5saW5lcyA9IGJlZm9yZS5saW5lcyArIGxpbmVzICsgYWZ0ZXIubGluZXMKLSAgICAgICAg
cmV0dXJuIG5ld3NvdXJjZQotCi0gICAgZGVmIGluZGVudChzZWxmLCBpbmRlbnQ9IiAiICogNCk6
Ci0gICAgICAgICIiIiByZXR1cm4gYSBjb3B5IG9mIHRoZSBzb3VyY2Ugb2JqZWN0IHdpdGgKLSAg
ICAgICAgICAgIGFsbCBsaW5lcyBpbmRlbnRlZCBieSB0aGUgZ2l2ZW4gaW5kZW50LXN0cmluZy4K
LSAgICAgICAgIiIiCisgICAgZGVmIGluZGVudChzZWxmLCBpbmRlbnQ6IHN0ciA9ICIgIiAqIDQp
IC0+ICJTb3VyY2UiOgorICAgICAgICAiIiJSZXR1cm4gYSBjb3B5IG9mIHRoZSBzb3VyY2Ugb2Jq
ZWN0IHdpdGggYWxsIGxpbmVzIGluZGVudGVkIGJ5IHRoZQorICAgICAgICBnaXZlbiBpbmRlbnQt
c3RyaW5nLiIiIgogICAgICAgICBuZXdzb3VyY2UgPSBTb3VyY2UoKQogICAgICAgICBuZXdzb3Vy
Y2UubGluZXMgPSBbKGluZGVudCArIGxpbmUpIGZvciBsaW5lIGluIHNlbGYubGluZXNdCiAgICAg
ICAgIHJldHVybiBuZXdzb3VyY2UKIAotICAgIGRlZiBnZXRzdGF0ZW1lbnQoc2VsZiwgbGluZW5v
KToKLSAgICAgICAgIiIiIHJldHVybiBTb3VyY2Ugc3RhdGVtZW50IHdoaWNoIGNvbnRhaW5zIHRo
ZQotICAgICAgICAgICAgZ2l2ZW4gbGluZW51bWJlciAoY291bnRlZCBmcm9tIDApLgotICAgICAg
ICAiIiIKKyAgICBkZWYgZ2V0c3RhdGVtZW50KHNlbGYsIGxpbmVubzogaW50KSAtPiAiU291cmNl
IjoKKyAgICAgICAgIiIiUmV0dXJuIFNvdXJjZSBzdGF0ZW1lbnQgd2hpY2ggY29udGFpbnMgdGhl
IGdpdmVuIGxpbmVudW1iZXIKKyAgICAgICAgKGNvdW50ZWQgZnJvbSAwKS4iIiIKICAgICAgICAg
c3RhcnQsIGVuZCA9IHNlbGYuZ2V0c3RhdGVtZW50cmFuZ2UobGluZW5vKQogICAgICAgICByZXR1
cm4gc2VsZltzdGFydDplbmRdCiAKLSAgICBkZWYgZ2V0c3RhdGVtZW50cmFuZ2Uoc2VsZiwgbGlu
ZW5vKToKLSAgICAgICAgIiIiIHJldHVybiAoc3RhcnQsIGVuZCkgdHVwbGUgd2hpY2ggc3BhbnMg
dGhlIG1pbmltYWwKLSAgICAgICAgICAgIHN0YXRlbWVudCByZWdpb24gd2hpY2ggY29udGFpbmlu
ZyB0aGUgZ2l2ZW4gbGluZW5vLgotICAgICAgICAiIiIKKyAgICBkZWYgZ2V0c3RhdGVtZW50cmFu
Z2Uoc2VsZiwgbGluZW5vOiBpbnQpIC0+IFR1cGxlW2ludCwgaW50XToKKyAgICAgICAgIiIiUmV0
dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBzcGFucyB0aGUgbWluaW1hbCBzdGF0ZW1lbnQg
cmVnaW9uCisgICAgICAgIHdoaWNoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGxpbmVuby4iIiIKICAg
ICAgICAgaWYgbm90ICgwIDw9IGxpbmVubyA8IGxlbihzZWxmKSk6CiAgICAgICAgICAgICByYWlz
ZSBJbmRleEVycm9yKCJsaW5lbm8gb3V0IG9mIHJhbmdlIikKICAgICAgICAgYXN0LCBzdGFydCwg
ZW5kID0gZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KGxpbmVubywgc2VsZikKICAgICAgICAgcmV0dXJu
IHN0YXJ0LCBlbmQKIAotICAgIGRlZiBkZWluZGVudChzZWxmLCBvZmZzZXQ9Tm9uZSk6Ci0gICAg
ICAgICIiIiByZXR1cm4gYSBuZXcgc291cmNlIG9iamVjdCBkZWluZGVudGVkIGJ5IG9mZnNldC4K
LSAgICAgICAgICAgIElmIG9mZnNldCBpcyBOb25lIHRoZW4gZ3Vlc3MgYW4gaW5kZW50YXRpb24g
b2Zmc2V0IGZyb20KLSAgICAgICAgICAgIHRoZSBmaXJzdCBub24tYmxhbmsgbGluZS4gIFN1YnNl
cXVlbnQgbGluZXMgd2hpY2ggaGF2ZSBhCi0gICAgICAgICAgICBsb3dlciBpbmRlbnRhdGlvbiBv
ZmZzZXQgd2lsbCBiZSBjb3BpZWQgdmVyYmF0aW0gYXMKLSAgICAgICAgICAgIHRoZXkgYXJlIGFz
c3VtZWQgdG8gYmUgcGFydCBvZiBtdWx0aWxpbmVzLgotICAgICAgICAiIiIKLSAgICAgICAgIyBY
WFggbWF5YmUgdXNlIHRoZSB0b2tlbml6ZXIgdG8gcHJvcGVybHkgaGFuZGxlIG11bHRpbGluZQot
ICAgICAgICAjICAgICBzdHJpbmdzIGV0Yy5wcD8KKyAgICBkZWYgZGVpbmRlbnQoc2VsZikgLT4g
IlNvdXJjZSI6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBTb3VyY2Ugb2JqZWN0IGRlaW5kZW50
ZWQuIiIiCiAgICAgICAgIG5ld3NvdXJjZSA9IFNvdXJjZSgpCi0gICAgICAgIG5ld3NvdXJjZS5s
aW5lc1s6XSA9IGRlaW5kZW50KHNlbGYubGluZXMsIG9mZnNldCkKKyAgICAgICAgbmV3c291cmNl
LmxpbmVzWzpdID0gZGVpbmRlbnQoc2VsZi5saW5lcykKICAgICAgICAgcmV0dXJuIG5ld3NvdXJj
ZQogCi0gICAgZGVmIGlzcGFyc2VhYmxlKHNlbGYsIGRlaW5kZW50PVRydWUpOgotICAgICAgICAi
IiIgcmV0dXJuIFRydWUgaWYgc291cmNlIGlzIHBhcnNlYWJsZSwgaGV1cmlzdGljYWxseQotICAg
ICAgICAgICAgZGVpbmRlbnRpbmcgaXQgYnkgZGVmYXVsdC4KLSAgICAgICAgIiIiCi0gICAgICAg
IGZyb20gcGFyc2VyIGltcG9ydCBzdWl0ZSBhcyBzeW50YXhfY2hlY2tlcgotCi0gICAgICAgIGlm
IGRlaW5kZW50OgotICAgICAgICAgICAgc291cmNlID0gc3RyKHNlbGYuZGVpbmRlbnQoKSkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0cihzZWxmKQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAjIGNvbXBpbGUoc291cmNlKydcbicsICJ4IiwgImV4ZWMiKQotICAgICAg
ICAgICAgc3ludGF4X2NoZWNrZXIoc291cmNlICsgIlxuIikKLSAgICAgICAgZXhjZXB0IEtleWJv
YXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
bjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgIGRlZiBfX3N0cl9fKHNl
bGYpIC0+IHN0cjoKICAgICAgICAgcmV0dXJuICJcbiIuam9pbihzZWxmLmxpbmVzKQogCi0gICAg
ZGVmIGNvbXBpbGUoCi0gICAgICAgIHNlbGYsCi0gICAgICAgIGZpbGVuYW1lPU5vbmUsCi0gICAg
ICAgIG1vZGU9ImV4ZWMiLAotICAgICAgICBmbGFnPWdlbmVyYXRvcnMuY29tcGlsZXJfZmxhZywK
LSAgICAgICAgZG9udF9pbmhlcml0PTAsCi0gICAgICAgIF9nZW5mcmFtZT1Ob25lLAotICAgICk6
Ci0gICAgICAgICIiIiByZXR1cm4gY29tcGlsZWQgY29kZSBvYmplY3QuIGlmIGZpbGVuYW1lIGlz
IE5vbmUKLSAgICAgICAgICAgIGludmVudCBhbiBhcnRpZmljaWFsIGZpbGVuYW1lIHdoaWNoIGRp
c3BsYXlzCi0gICAgICAgICAgICB0aGUgc291cmNlL2xpbmUgcG9zaXRpb24gb2YgdGhlIGNhbGxl
ciBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBweS5wYXRo
LmxvY2FsKGZpbGVuYW1lKS5jaGVjayhmaWxlPTApOgotICAgICAgICAgICAgaWYgX2dlbmZyYW1l
IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX2dlbmZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKSAg
IyB0aGUgY2FsbGVyCi0gICAgICAgICAgICBmbiwgbGluZW5vID0gX2dlbmZyYW1lLmZfY29kZS5j
b19maWxlbmFtZSwgX2dlbmZyYW1lLmZfbGluZW5vCi0gICAgICAgICAgICBiYXNlID0gIjwlZC1j
b2RlZ2VuICIgJSBzZWxmLl9jb21waWxlY291bnRlcgotICAgICAgICAgICAgc2VsZi5fX2NsYXNz
X18uX2NvbXBpbGVjb3VudGVyICs9IDEKLSAgICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAg
ICAgICAgICAgICAgICBmaWxlbmFtZSA9IGJhc2UgKyAiJXM6JWQ+IiAlIChmbiwgbGluZW5vKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGJhc2UgKyAiJXIg
JXM6JWQ+IiAlIChmaWxlbmFtZSwgZm4sIGxpbmVubykKLSAgICAgICAgc291cmNlID0gIlxuIi5q
b2luKHNlbGYubGluZXMpICsgIlxuIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjbyA9IGNw
eV9jb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWcpCi0gICAgICAgIGV4Y2VwdCBT
eW50YXhFcnJvcjoKLSAgICAgICAgICAgIGV4ID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAg
ICAgICMgcmUtcmVwcmVzZW50IHN5bnRheCBlcnJvcnMgZnJvbSBwYXJzaW5nIHB5dGhvbiBzdHJp
bmdzCi0gICAgICAgICAgICBtc2dsaW5lcyA9IHNlbGYubGluZXNbOmV4LmxpbmVub10KLSAgICAg
ICAgICAgIGlmIGV4Lm9mZnNldDoKLSAgICAgICAgICAgICAgICBtc2dsaW5lcy5hcHBlbmQoIiAi
ICogZXgub2Zmc2V0ICsgIl4iKQotICAgICAgICAgICAgbXNnbGluZXMuYXBwZW5kKCIoY29kZSB3
YXMgY29tcGlsZWQgcHJvYmFibHkgZnJvbSBoZXJlOiAlcykiICUgZmlsZW5hbWUpCi0gICAgICAg
ICAgICBuZXdleCA9IFN5bnRheEVycm9yKCJcbiIuam9pbihtc2dsaW5lcykpCi0gICAgICAgICAg
ICBuZXdleC5vZmZzZXQgPSBleC5vZmZzZXQKLSAgICAgICAgICAgIG5ld2V4LmxpbmVubyA9IGV4
LmxpbmVubwotICAgICAgICAgICAgbmV3ZXgudGV4dCA9IGV4LnRleHQKLSAgICAgICAgICAgIHJh
aXNlIG5ld2V4Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBmbGFnICYgX0FTVF9GTEFH
OgotICAgICAgICAgICAgICAgIHJldHVybiBjbwotICAgICAgICAgICAgbGluZXMgPSBbKHggKyAi
XG4iKSBmb3IgeCBpbiBzZWxmLmxpbmVzXQotICAgICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2Zp
bGVuYW1lXSA9ICgxLCBOb25lLCBsaW5lcywgZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4g
Y28KLQotCi0jCi0jIHB1YmxpYyBBUEkgc2hvcnRjdXQgZnVuY3Rpb25zCi0jCi0KLQotZGVmIGNv
bXBpbGVfKAotICAgIHNvdXJjZSwgZmlsZW5hbWU9Tm9uZSwgbW9kZT0iZXhlYyIsIGZsYWdzPWdl
bmVyYXRvcnMuY29tcGlsZXJfZmxhZywgZG9udF9pbmhlcml0PTAKLSk6Ci0gICAgIiIiIGNvbXBp
bGUgdGhlIGdpdmVuIHNvdXJjZSB0byBhIHJhdyBjb2RlIG9iamVjdCwKLSAgICAgICAgYW5kIG1h
aW50YWluIGFuIGludGVybmFsIGNhY2hlIHdoaWNoIGFsbG93cyBsYXRlcgotICAgICAgICByZXRy
aWV2YWwgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgY29kZSBvYmplY3QKLSAgICAgICAgYW5k
IGFueSByZWN1cnNpdmVseSBjcmVhdGVkIGNvZGUgb2JqZWN0cy4KLSAgICAiIiIKLSAgICBpZiBp
c2luc3RhbmNlKHNvdXJjZSwgYXN0LkFTVCk6Ci0gICAgICAgICMgWFhYIHNob3VsZCBTb3VyY2Ug
c3VwcG9ydCBoYXZpbmcgQVNUPwotICAgICAgICByZXR1cm4gY3B5X2NvbXBpbGUoc291cmNlLCBm
aWxlbmFtZSwgbW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCkKLSAgICBfZ2VuZnJhbWUgPSBzeXMu
X2dldGZyYW1lKDEpICAjIHRoZSBjYWxsZXIKLSAgICBzID0gU291cmNlKHNvdXJjZSkKLSAgICBj
byA9IHMuY29tcGlsZShmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIF9nZW5mcmFtZT1fZ2VuZnJhbWUp
Ci0gICAgcmV0dXJuIGNvCi0KLQotZGVmIGdldGZzbGluZW5vKG9iaik6Ci0gICAgIiIiIFJldHVy
biBzb3VyY2UgbG9jYXRpb24gKHBhdGgsIGxpbmVubykgZm9yIHRoZSBnaXZlbiBvYmplY3QuCi0g
ICAgSWYgdGhlIHNvdXJjZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCByZXR1cm4gKCIiLCAtMSkKLSAg
ICAiIiIKLSAgICBmcm9tIC5jb2RlIGltcG9ydCBDb2RlCi0KLSAgICB0cnk6Ci0gICAgICAgIGNv
ZGUgPSBDb2RlKG9iaikKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBmbiA9IGluc3BlY3QuZ2V0c291cmNlZmlsZShvYmopIG9yIGluc3BlY3QuZ2V0Zmls
ZShvYmopCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gIiIs
IC0xCi0KLSAgICAgICAgZnNwYXRoID0gZm4gYW5kIHB5LnBhdGgubG9jYWwoZm4pIG9yIE5vbmUK
LSAgICAgICAgbGluZW5vID0gLTEKLSAgICAgICAgaWYgZnNwYXRoOgotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIF8sIGxpbmVubyA9IGZpbmRzb3VyY2Uob2JqKQotICAgICAgICAg
ICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAg
ICAgIGZzcGF0aCA9IGNvZGUucGF0aAotICAgICAgICBsaW5lbm8gPSBjb2RlLmZpcnN0bGluZW5v
Ci0gICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZW5vLCBpbnQpCi0gICAgcmV0dXJuIGZzcGF0aCwg
bGluZW5vCi0KIAogIwogIyBoZWxwZXIgZnVuY3Rpb25zCiAjCiAKIAotZGVmIGZpbmRzb3VyY2Uo
b2JqKToKK2RlZiBmaW5kc291cmNlKG9iaikgLT4gVHVwbGVbT3B0aW9uYWxbU291cmNlXSwgaW50
XToKICAgICB0cnk6CiAgICAgICAgIHNvdXJjZWxpbmVzLCBsaW5lbm8gPSBpbnNwZWN0LmZpbmRz
b3VyY2Uob2JqKQotICAgIGV4Y2VwdCBweS5idWlsdGluLl9zeXNleDoKLSAgICAgICAgcmFpc2UK
LSAgICBleGNlcHQ6ICAjIG5vcWEKKyAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICByZXR1
cm4gTm9uZSwgLTEKICAgICBzb3VyY2UgPSBTb3VyY2UoKQogICAgIHNvdXJjZS5saW5lcyA9IFts
aW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIHNvdXJjZWxpbmVzXQogICAgIHJldHVybiBzb3VyY2Us
IGxpbmVubwogCiAKLWRlZiBnZXRzb3VyY2Uob2JqLCAqKmt3YXJncyk6Ci0gICAgZnJvbSAuY29k
ZSBpbXBvcnQgZ2V0cmF3Y29kZQotCi0gICAgb2JqID0gZ2V0cmF3Y29kZShvYmopCi0gICAgdHJ5
OgotICAgICAgICBzdHJzcmMgPSBpbnNwZWN0LmdldHNvdXJjZShvYmopCi0gICAgZXhjZXB0IElu
ZGVudGF0aW9uRXJyb3I6Ci0gICAgICAgIHN0cnNyYyA9ICciQnVnZ3kgcHl0aG9uIHZlcnNpb24g
Y29uc2lkZXIgdXBncmFkaW5nLCBjYW5ub3QgZ2V0IHNvdXJjZSInCi0gICAgYXNzZXJ0IGlzaW5z
dGFuY2Uoc3Ryc3JjLCBzdHIpCi0gICAgcmV0dXJuIFNvdXJjZShzdHJzcmMsICoqa3dhcmdzKQot
Ci0KLWRlZiBkZWluZGVudChsaW5lcywgb2Zmc2V0PU5vbmUpOgotICAgIGlmIG9mZnNldCBpcyBO
b25lOgotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGxpbmUgPSBsaW5l
LmV4cGFuZHRhYnMoKQotICAgICAgICAgICAgcyA9IGxpbmUubHN0cmlwKCkKLSAgICAgICAgICAg
IGlmIHM6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbGVuKGxpbmUpIC0gbGVuKHMpCi0gICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9mZnNldCA9IDAK
LSAgICBpZiBvZmZzZXQgPT0gMDoKLSAgICAgICAgcmV0dXJuIGxpc3QobGluZXMpCi0gICAgbmV3
bGluZXMgPSBbXQotCi0gICAgZGVmIHJlYWRsaW5lX2dlbmVyYXRvcihsaW5lcyk6Ci0gICAgICAg
IGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgeWllbGQgbGluZSArICJcbiIKLQotICAg
IGl0ID0gcmVhZGxpbmVfZ2VuZXJhdG9yKGxpbmVzKQotCitkZWYgZ2V0cmF3Y29kZShvYmosIHRy
eWNhbGw6IGJvb2wgPSBUcnVlKToKKyAgICAiIiJSZXR1cm4gY29kZSBvYmplY3QgZm9yIGdpdmVu
IGZ1bmN0aW9uLiIiIgogICAgIHRyeToKLSAgICAgICAgZm9yIF8sIF8sIChzbGluZSwgXyksIChl
bGluZSwgXyksIF8gaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKAotICAgICAgICAgICAgbGFt
YmRhOiBuZXh0KGl0KQotICAgICAgICApOgotICAgICAgICAgICAgaWYgc2xpbmUgPiBsZW4obGlu
ZXMpOgotICAgICAgICAgICAgICAgIGJyZWFrICAjIEVuZCBvZiBpbnB1dCByZWFjaGVkCi0gICAg
ICAgICAgICBpZiBzbGluZSA+IGxlbihuZXdsaW5lcyk6Ci0gICAgICAgICAgICAgICAgbGluZSA9
IGxpbmVzW3NsaW5lIC0gMV0uZXhwYW5kdGFicygpCi0gICAgICAgICAgICAgICAgaWYgbGluZS5s
c3RyaXAoKSBhbmQgbGluZVs6b2Zmc2V0XS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgICAg
IGxpbmUgPSBsaW5lW29mZnNldDpdICAjIERlaW5kZW50Ci0gICAgICAgICAgICAgICAgbmV3bGlu
ZXMuYXBwZW5kKGxpbmUpCi0KLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNsaW5lLCBlbGlu
ZSk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCBkZWluZGVudCBjb250aW51aW5nIGxpbmVzIG9m
Ci0gICAgICAgICAgICAgICAgIyBtdWx0aWxpbmUgdG9rZW5zIChpLmUuIG11bHRpbGluZSBzdHJp
bmdzKQotICAgICAgICAgICAgICAgIG5ld2xpbmVzLmFwcGVuZChsaW5lc1tpXSkKLSAgICBleGNl
cHQgKEluZGVudGF0aW9uRXJyb3IsIHRva2VuaXplLlRva2VuRXJyb3IpOgotICAgICAgICBwYXNz
Ci0gICAgIyBBZGQgYW55IGxpbmVzIHdlIGRpZG4ndCBzZWUuIEUuZy4gaWYgYW4gZXhjZXB0aW9u
IHdhcyByYWlzZWQuCi0gICAgbmV3bGluZXMuZXh0ZW5kKGxpbmVzW2xlbihuZXdsaW5lcyk6XSkK
LSAgICByZXR1cm4gbmV3bGluZXMKLQotCi1kZWYgZ2V0X3N0YXRlbWVudF9zdGFydGVuZDIobGlu
ZW5vLCBub2RlKToKLSAgICBpbXBvcnQgYXN0Ci0KLSAgICAjIGZsYXR0ZW4gYWxsIHN0YXRlbWVu
dHMgYW5kIGV4Y2VwdCBoYW5kbGVycyBpbnRvIG9uZSBsaW5lbm8tbGlzdAotICAgICMgQVNUJ3Mg
bGluZSBudW1iZXJzIHN0YXJ0IGluZGV4aW5nIGF0IDEKLSAgICB2YWx1ZXMgPSBbXQorICAgICAg
ICByZXR1cm4gb2JqLl9fY29kZV9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAg
ICBvYmogPSBnZXRhdHRyKG9iaiwgImZfY29kZSIsIG9iaikKKyAgICAgICAgb2JqID0gZ2V0YXR0
cihvYmosICJfX2NvZGVfXyIsIG9iaikKKyAgICAgICAgaWYgdHJ5Y2FsbCBhbmQgbm90IGhhc2F0
dHIob2JqLCAiY29fZmlyc3RsaW5lbm8iKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIob2JqLCAi
X19jYWxsX18iKSBhbmQgbm90IGluc3BlY3QuaXNjbGFzcyhvYmopOgorICAgICAgICAgICAgICAg
IHggPSBnZXRyYXdjb2RlKG9iai5fX2NhbGxfXywgdHJ5Y2FsbD1GYWxzZSkKKyAgICAgICAgICAg
ICAgICBpZiBoYXNhdHRyKHgsICJjb19maXJzdGxpbmVubyIpOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geAorICAgICAgICByZXR1cm4gb2JqCisKKworZGVmIGRlaW5kZW50KGxpbmVzOiBJ
dGVyYWJsZVtzdHJdKSAtPiBMaXN0W3N0cl06CisgICAgcmV0dXJuIHRleHR3cmFwLmRlZGVudCgi
XG4iLmpvaW4obGluZXMpKS5zcGxpdGxpbmVzKCkKKworCitkZWYgZ2V0X3N0YXRlbWVudF9zdGFy
dGVuZDIobGluZW5vOiBpbnQsIG5vZGU6IGFzdC5BU1QpIC0+IFR1cGxlW2ludCwgT3B0aW9uYWxb
aW50XV06CisgICAgIyBGbGF0dGVuIGFsbCBzdGF0ZW1lbnRzIGFuZCBleGNlcHQgaGFuZGxlcnMg
aW50byBvbmUgbGluZW5vLWxpc3QuCisgICAgIyBBU1QncyBsaW5lIG51bWJlcnMgc3RhcnQgaW5k
ZXhpbmcgYXQgMS4KKyAgICB2YWx1ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W2ludF0KICAgICBmb3Ig
eCBpbiBhc3Qud2Fsayhub2RlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCAoYXN0LnN0bXQs
IGFzdC5FeGNlcHRIYW5kbGVyKSk6CiAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHgubGluZW5v
IC0gMSkKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZmluYWxib2R5IiwgIm9yZWxzZSIpOgot
ICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoeCwgbmFtZSwgTm9uZSkKKyAgICAgICAgICAg
ICAgICB2YWwgPSBnZXRhdHRyKHgsIG5hbWUsIE5vbmUpICAjIHR5cGU6IE9wdGlvbmFsW0xpc3Rb
YXN0LnN0bXRdXQogICAgICAgICAgICAgICAgIGlmIHZhbDoKLSAgICAgICAgICAgICAgICAgICAg
IyB0cmVhdCB0aGUgZmluYWxseS9vcmVsc2UgcGFydCBhcyBpdHMgb3duIHN0YXRlbWVudAorICAg
ICAgICAgICAgICAgICAgICAjIFRyZWF0IHRoZSBmaW5hbGx5L29yZWxzZSBwYXJ0IGFzIGl0cyBv
d24gc3RhdGVtZW50LgogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHZhbFswXS5s
aW5lbm8gLSAxIC0gMSkKICAgICB2YWx1ZXMuc29ydCgpCiAgICAgaW5zZXJ0X2luZGV4ID0gYmlz
ZWN0X3JpZ2h0KHZhbHVlcywgbGluZW5vKQpAQCAtMzQxLDEzICsxNjQsMjIgQEAgZGVmIGdldF9z
dGF0ZW1lbnRfc3RhcnRlbmQyKGxpbmVubywgbm9kZSk6CiAgICAgcmV0dXJuIHN0YXJ0LCBlbmQK
IAogCi1kZWYgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KGxpbmVubywgc291cmNlLCBhc3NlcnRpb249
RmFsc2UsIGFzdG5vZGU9Tm9uZSk6CitkZWYgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KAorICAgIGxp
bmVubzogaW50LAorICAgIHNvdXJjZTogU291cmNlLAorICAgIGFzc2VydGlvbjogYm9vbCA9IEZh
bHNlLAorICAgIGFzdG5vZGU6IE9wdGlvbmFsW2FzdC5BU1RdID0gTm9uZSwKKykgLT4gVHVwbGVb
YXN0LkFTVCwgaW50LCBpbnRdOgogICAgIGlmIGFzdG5vZGUgaXMgTm9uZToKICAgICAgICAgY29u
dGVudCA9IHN0cihzb3VyY2UpCi0gICAgICAgIGFzdG5vZGUgPSBjb21waWxlKGNvbnRlbnQsICJz
b3VyY2UiLCAiZXhlYyIsIDEwMjQpICAjIDEwMjQgZm9yIEFTVAorICAgICAgICAjIFNlZSAjNDI2
MDoKKyAgICAgICAgIyBEb24ndCBwcm9kdWNlIGR1cGxpY2F0ZSB3YXJuaW5ncyB3aGVuIGNvbXBp
bGluZyBzb3VyY2UgdG8gZmluZCBBU1QuCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2Fy
bmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAg
ICAgICAgICAgIGFzdG5vZGUgPSBhc3QucGFyc2UoY29udGVudCwgInNvdXJjZSIsICJleGVjIikK
IAogICAgIHN0YXJ0LCBlbmQgPSBnZXRfc3RhdGVtZW50X3N0YXJ0ZW5kMihsaW5lbm8sIGFzdG5v
ZGUpCi0gICAgIyB3ZSBuZWVkIHRvIGNvcnJlY3QgdGhlIGVuZDoKKyAgICAjIFdlIG5lZWQgdG8g
Y29ycmVjdCB0aGUgZW5kOgogICAgICMgLSBhc3QtcGFyc2luZyBzdHJpcHMgY29tbWVudHMKICAg
ICAjIC0gdGhlcmUgbWlnaHQgYmUgZW1wdHkgbGluZXMKICAgICAjIC0gd2UgbWlnaHQgaGF2ZSBs
ZXNzZXIgaW5kZW50ZWQgY29kZSBibG9ja3MgYXQgdGhlIGVuZApAQCAtMzU1LDEwICsxODcsMTAg
QEAgZGVmIGdldHN0YXRlbWVudHJhbmdlX2FzdChsaW5lbm8sIHNvdXJjZSwgYXNzZXJ0aW9uPUZh
bHNlLCBhc3Rub2RlPU5vbmUpOgogICAgICAgICBlbmQgPSBsZW4oc291cmNlLmxpbmVzKQogCiAg
ICAgaWYgZW5kID4gc3RhcnQgKyAxOgotICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBkb24ndCBzcGFu
IGRpZmZlcmVudGx5IGluZGVudGVkIGNvZGUgYmxvY2tzCi0gICAgICAgICMgYnkgdXNpbmcgdGhl
IEJsb2NrRmluZGVyIGhlbHBlciB1c2VkIHdoaWNoIGluc3BlY3QuZ2V0c291cmNlKCkgdXNlcyBp
dHNlbGYKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc3BhbiBkaWZmZXJlbnRseSBpbmRl
bnRlZCBjb2RlIGJsb2NrcworICAgICAgICAjIGJ5IHVzaW5nIHRoZSBCbG9ja0ZpbmRlciBoZWxw
ZXIgdXNlZCB3aGljaCBpbnNwZWN0LmdldHNvdXJjZSgpIHVzZXMgaXRzZWxmLgogICAgICAgICBi
bG9ja19maW5kZXIgPSBpbnNwZWN0LkJsb2NrRmluZGVyKCkKLSAgICAgICAgIyBpZiB3ZSBzdGFy
dCB3aXRoIGFuIGluZGVudGVkIGxpbmUsIHB1dCBibG9ja2ZpbmRlciB0byAic3RhcnRlZCIgbW9k
ZQorICAgICAgICAjIElmIHdlIHN0YXJ0IHdpdGggYW4gaW5kZW50ZWQgbGluZSwgcHV0IGJsb2Nr
ZmluZGVyIHRvICJzdGFydGVkIiBtb2RlLgogICAgICAgICBibG9ja19maW5kZXIuc3RhcnRlZCA9
IHNvdXJjZS5saW5lc1tzdGFydF1bMF0uaXNzcGFjZSgpCiAgICAgICAgIGl0ID0gKCh4ICsgIlxu
IikgZm9yIHggaW4gc291cmNlLmxpbmVzW3N0YXJ0OmVuZF0pCiAgICAgICAgIHRyeToKQEAgLTM2
OSw3ICsyMDEsNyBAQCBkZWYgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KGxpbmVubywgc291cmNlLCBh
c3NlcnRpb249RmFsc2UsIGFzdG5vZGU9Tm9uZSk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAjIHRoZSBlbmQgbWlnaHQgc3RpbGwgcG9pbnQgdG8g
YSBjb21tZW50IG9yIGVtcHR5IGxpbmUsIGNvcnJlY3QgaXQKKyAgICAjIFRoZSBlbmQgbWlnaHQg
c3RpbGwgcG9pbnQgdG8gYSBjb21tZW50IG9yIGVtcHR5IGxpbmUsIGNvcnJlY3QgaXQuCiAgICAg
d2hpbGUgZW5kOgogICAgICAgICBsaW5lID0gc291cmNlLmxpbmVzW2VuZCAtIDFdLmxzdHJpcCgp
CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiIyIpIG9yIG5vdCBsaW5lOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9fY29kZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTBiNjBjYjM3NjQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvX2NvZGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19jb2RlL19weTJ0cmFjZWJhY2sucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3QvX2NvZGUvc291cmNlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9f
aW8vX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8vX19pbml0X18ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjAwMWU5MThjYjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8vX19pbml0X18ucHkK
QEAgLTAsMCArMSw4IEBACitmcm9tIC50ZXJtaW5hbHdyaXRlciBpbXBvcnQgZ2V0X3Rlcm1pbmFs
X3dpZHRoCitmcm9tIC50ZXJtaW5hbHdyaXRlciBpbXBvcnQgVGVybWluYWxXcml0ZXIKKworCitf
X2FsbF9fID0gWworICAgICJUZXJtaW5hbFdyaXRlciIsCisgICAgImdldF90ZXJtaW5hbF93aWR0
aCIsCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8vc2FmZXJlcHIu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8vc2FmZXJlcHIucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YTQ5NzVmNjFhZDIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8vc2FmZXJlcHIucHkKQEAgLTAsMCArMSwx
MjkgQEAKK2ltcG9ydCBwcHJpbnQKK2ltcG9ydCByZXBybGliCitmcm9tIHR5cGluZyBpbXBvcnQg
QW55Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IElPCitmcm9t
IHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworCitkZWYgX3RyeV9yZXByX29yX3N0cihvYmo6IG9i
amVjdCkgLT4gc3RyOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHJlcHIob2JqKQorICAgIGV4
Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICByYWlzZQorICAg
IGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICByZXR1cm4gJ3t9KCJ7fSIpJy5mb3JtYXQo
dHlwZShvYmopLl9fbmFtZV9fLCBvYmopCisKKworZGVmIF9mb3JtYXRfcmVwcl9leGNlcHRpb24o
ZXhjOiBCYXNlRXhjZXB0aW9uLCBvYmo6IG9iamVjdCkgLT4gc3RyOgorICAgIHRyeToKKyAgICAg
ICAgZXhjX2luZm8gPSBfdHJ5X3JlcHJfb3Jfc3RyKGV4YykKKyAgICBleGNlcHQgKEtleWJvYXJk
SW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgcmFpc2UKKyAgICBleGNlcHQgQmFzZUV4
Y2VwdGlvbiBhcyBleGM6CisgICAgICAgIGV4Y19pbmZvID0gInVucHJlc2VudGFibGUgZXhjZXB0
aW9uICh7fSkiLmZvcm1hdChfdHJ5X3JlcHJfb3Jfc3RyKGV4YykpCisgICAgcmV0dXJuICI8W3t9
IHJhaXNlZCBpbiByZXByKCldIHt9IG9iamVjdCBhdCAweHs6eH0+Ii5mb3JtYXQoCisgICAgICAg
IGV4Y19pbmZvLCB0eXBlKG9iaikuX19uYW1lX18sIGlkKG9iaikKKyAgICApCisKKworZGVmIF9l
bGxpcHNpemUoczogc3RyLCBtYXhzaXplOiBpbnQpIC0+IHN0cjoKKyAgICBpZiBsZW4ocykgPiBt
YXhzaXplOgorICAgICAgICBpID0gbWF4KDAsIChtYXhzaXplIC0gMykgLy8gMikKKyAgICAgICAg
aiA9IG1heCgwLCBtYXhzaXplIC0gMyAtIGkpCisgICAgICAgIHJldHVybiBzWzppXSArICIuLi4i
ICsgc1tsZW4ocykgLSBqIDpdCisgICAgcmV0dXJuIHMKKworCitjbGFzcyBTYWZlUmVwcihyZXBy
bGliLlJlcHIpOgorICAgICIiInJlcHIuUmVwciB0aGF0IGxpbWl0cyB0aGUgcmVzdWx0aW5nIHNp
emUgb2YgcmVwcigpIGFuZCBpbmNsdWRlcworICAgIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMg
cmFpc2VkIGR1cmluZyB0aGUgY2FsbC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhz
aXplOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICBz
ZWxmLm1heHN0cmluZyA9IG1heHNpemUKKyAgICAgICAgc2VsZi5tYXhzaXplID0gbWF4c2l6ZQor
CisgICAgZGVmIHJlcHIoc2VsZiwgeDogb2JqZWN0KSAtPiBzdHI6CisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHMgPSBzdXBlcigpLnJlcHIoeCkKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZElu
dGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQg
QmFzZUV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBzID0gX2Zvcm1hdF9yZXByX2V4Y2Vw
dGlvbihleGMsIHgpCisgICAgICAgIHJldHVybiBfZWxsaXBzaXplKHMsIHNlbGYubWF4c2l6ZSkK
KworICAgIGRlZiByZXByX2luc3RhbmNlKHNlbGYsIHg6IG9iamVjdCwgbGV2ZWw6IGludCkgLT4g
c3RyOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzID0gcmVwcih4KQorICAgICAgICBleGNl
cHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgICAgIHJhaXNlCisg
ICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIHMgPSBfZm9y
bWF0X3JlcHJfZXhjZXB0aW9uKGV4YywgeCkKKyAgICAgICAgcmV0dXJuIF9lbGxpcHNpemUocywg
c2VsZi5tYXhzaXplKQorCisKK2RlZiBzYWZlZm9ybWF0KG9iajogb2JqZWN0KSAtPiBzdHI6Cisg
ICAgIiIiUmV0dXJuIGEgcHJldHR5IHByaW50ZWQgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gb2JqZWN0
LgorCisgICAgRmFpbGluZyBfX3JlcHJfXyBmdW5jdGlvbnMgb2YgdXNlciBpbnN0YW5jZXMgd2ls
bCBiZSByZXByZXNlbnRlZAorICAgIHdpdGggYSBzaG9ydCBleGNlcHRpb24gaW5mby4KKyAgICAi
IiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBwcHJpbnQucGZvcm1hdChvYmopCisgICAgZXhj
ZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgIHJldHVybiBfZm9ybWF0X3JlcHJfZXhjZXB0
aW9uKGV4Yywgb2JqKQorCisKK2RlZiBzYWZlcmVwcihvYmo6IG9iamVjdCwgbWF4c2l6ZTogaW50
ID0gMjQwKSAtPiBzdHI6CisgICAgIiIiUmV0dXJuIGEgc2l6ZS1saW1pdGVkIHNhZmUgcmVwci1z
dHJpbmcgZm9yIHRoZSBnaXZlbiBvYmplY3QuCisKKyAgICBGYWlsaW5nIF9fcmVwcl9fIGZ1bmN0
aW9ucyBvZiB1c2VyIGluc3RhbmNlcyB3aWxsIGJlIHJlcHJlc2VudGVkCisgICAgd2l0aCBhIHNo
b3J0IGV4Y2VwdGlvbiBpbmZvIGFuZCAnc2FmZXJlcHInIGdlbmVyYWxseSB0YWtlcworICAgIGNh
cmUgdG8gbmV2ZXIgcmFpc2UgZXhjZXB0aW9ucyBpdHNlbGYuCisKKyAgICBUaGlzIGZ1bmN0aW9u
IGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIFJlcHIvcmVwcmxpYiBmdW5jdGlvbmFsaXR5IG9mIHRo
ZQorICAgIHN0YW5kYXJkIDIuNiBsaWIuCisgICAgIiIiCisgICAgcmV0dXJuIFNhZmVSZXByKG1h
eHNpemUpLnJlcHIob2JqKQorCisKK2NsYXNzIEFsd2F5c0Rpc3BhdGNoaW5nUHJldHR5UHJpbnRl
cihwcHJpbnQuUHJldHR5UHJpbnRlcik6CisgICAgIiIiUHJldHR5UHJpbnRlciB0aGF0IGFsd2F5
cyBkaXNwYXRjaGVzIChyZWdhcmRsZXNzIG9mIHdpZHRoKS4iIiIKKworICAgIGRlZiBfZm9ybWF0
KAorICAgICAgICBzZWxmLAorICAgICAgICBvYmplY3Q6IG9iamVjdCwKKyAgICAgICAgc3RyZWFt
OiBJT1tzdHJdLAorICAgICAgICBpbmRlbnQ6IGludCwKKyAgICAgICAgYWxsb3dhbmNlOiBpbnQs
CisgICAgICAgIGNvbnRleHQ6IERpY3RbaW50LCBBbnldLAorICAgICAgICBsZXZlbDogaW50LAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBfZGlzcGF0Y2gg
aXMgcHJpdmF0ZS4KKyAgICAgICAgcCA9IHNlbGYuX2Rpc3BhdGNoLmdldCh0eXBlKG9iamVjdCku
X19yZXByX18sIE5vbmUpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisKKyAgICAgICAg
b2JqaWQgPSBpZChvYmplY3QpCisgICAgICAgIGlmIG9iamlkIGluIGNvbnRleHQgb3IgcCBpcyBO
b25lOgorICAgICAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBfZm9ybWF0IGlzIHByaXZh
dGUuCisgICAgICAgICAgICBzdXBlcigpLl9mb3JtYXQoICAjIHR5cGU6IGlnbm9yZVttaXNjXQor
ICAgICAgICAgICAgICAgIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4
dCwgbGV2ZWwsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBj
b250ZXh0W29iamlkXSA9IDEKKyAgICAgICAgcChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50
LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsICsgMSkKKyAgICAgICAgZGVsIGNvbnRleHRbb2Jq
aWRdCisKKworZGVmIF9wZm9ybWF0X2Rpc3BhdGNoKAorICAgIG9iamVjdDogb2JqZWN0LAorICAg
IGluZGVudDogaW50ID0gMSwKKyAgICB3aWR0aDogaW50ID0gODAsCisgICAgZGVwdGg6IE9wdGlv
bmFsW2ludF0gPSBOb25lLAorICAgICosCisgICAgY29tcGFjdDogYm9vbCA9IEZhbHNlCispIC0+
IHN0cjoKKyAgICByZXR1cm4gQWx3YXlzRGlzcGF0Y2hpbmdQcmV0dHlQcmludGVyKAorICAgICAg
ICBpbmRlbnQ9aW5kZW50LCB3aWR0aD13aWR0aCwgZGVwdGg9ZGVwdGgsIGNvbXBhY3Q9Y29tcGFj
dAorICAgICkucGZvcm1hdChvYmplY3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9faW8vdGVybWluYWx3cml0ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8v
dGVybWluYWx3cml0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5hOTQwNGViY2MxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9faW8vdGVybWluYWx3cml0ZXIucHkKQEAgLTAsMCArMSwyMTAgQEAKKyIiIkhlbHBlciBmdW5j
dGlvbnMgZm9yIHdyaXRpbmcgdG8gdGVybWluYWxzIGFuZCBmaWxlcy4iIiIKK2ltcG9ydCBvcwor
aW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitm
cm9tIHR5cGluZyBpbXBvcnQgU2VxdWVuY2UKK2Zyb20gdHlwaW5nIGltcG9ydCBUZXh0SU8KKwor
ZnJvbSAud2N3aWR0aCBpbXBvcnQgd2Nzd2lkdGgKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IGZpbmFsCisKKworIyBUaGlzIGNvZGUgd2FzIGluaXRpYWxseSBjb3BpZWQgZnJvbSBweSAxLjgu
MSwgZmlsZSBfaW8vdGVybWluYWx3cml0ZXIucHkuCisKKworZGVmIGdldF90ZXJtaW5hbF93aWR0
aCgpIC0+IGludDoKKyAgICB3aWR0aCwgXyA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZShmYWxs
YmFjaz0oODAsIDI0KSkKKworICAgICMgVGhlIFdpbmRvd3MgZ2V0X3Rlcm1pbmFsX3NpemUgbWF5
IGJlIGJvZ3VzLCBsZXQncyBzYW5pZnkgYSBiaXQuCisgICAgaWYgd2lkdGggPCA0MDoKKyAgICAg
ICAgd2lkdGggPSA4MAorCisgICAgcmV0dXJuIHdpZHRoCisKKworZGVmIHNob3VsZF9kb19tYXJr
dXAoZmlsZTogVGV4dElPKSAtPiBib29sOgorICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWV9DT0xP
UlMiKSA9PSAiMSI6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgaWYgb3MuZW52aXJvbi5nZXQo
IlBZX0NPTE9SUyIpID09ICIwIjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgIk5PX0NP
TE9SIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiAiRk9SQ0Vf
Q09MT1IiIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuICgK
KyAgICAgICAgaGFzYXR0cihmaWxlLCAiaXNhdHR5IikgYW5kIGZpbGUuaXNhdHR5KCkgYW5kIG9z
LmVudmlyb24uZ2V0KCJURVJNIikgIT0gImR1bWIiCisgICAgKQorCisKK0BmaW5hbAorY2xhc3Mg
VGVybWluYWxXcml0ZXI6CisgICAgX2VzY3RhYmxlID0gZGljdCgKKyAgICAgICAgYmxhY2s9MzAs
CisgICAgICAgIHJlZD0zMSwKKyAgICAgICAgZ3JlZW49MzIsCisgICAgICAgIHllbGxvdz0zMywK
KyAgICAgICAgYmx1ZT0zNCwKKyAgICAgICAgcHVycGxlPTM1LAorICAgICAgICBjeWFuPTM2LAor
ICAgICAgICB3aGl0ZT0zNywKKyAgICAgICAgQmxhY2s9NDAsCisgICAgICAgIFJlZD00MSwKKyAg
ICAgICAgR3JlZW49NDIsCisgICAgICAgIFllbGxvdz00MywKKyAgICAgICAgQmx1ZT00NCwKKyAg
ICAgICAgUHVycGxlPTQ1LAorICAgICAgICBDeWFuPTQ2LAorICAgICAgICBXaGl0ZT00NywKKyAg
ICAgICAgYm9sZD0xLAorICAgICAgICBsaWdodD0yLAorICAgICAgICBibGluaz01LAorICAgICAg
ICBpbnZlcnQ9NywKKyAgICApCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZTogT3B0aW9u
YWxbVGV4dElPXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKKyAg
ICAgICAgICAgIGZpbGUgPSBzeXMuc3Rkb3V0CisgICAgICAgIGlmIGhhc2F0dHIoZmlsZSwgImlz
YXR0eSIpIGFuZCBmaWxlLmlzYXR0eSgpIGFuZCBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbXBvcnQgY29sb3JhbWEKKyAgICAgICAg
ICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGZpbGUgPSBjb2xvcmFtYS5BbnNpVG9XaW4zMihmaWxl
KS5zdHJlYW0KKyAgICAgICAgICAgICAgICBhc3NlcnQgZmlsZSBpcyBub3QgTm9uZQorICAgICAg
ICBzZWxmLl9maWxlID0gZmlsZQorICAgICAgICBzZWxmLmhhc21hcmt1cCA9IHNob3VsZF9kb19t
YXJrdXAoZmlsZSkKKyAgICAgICAgc2VsZi5fY3VycmVudF9saW5lID0gIiIKKyAgICAgICAgc2Vs
Zi5fdGVybWluYWxfd2lkdGggPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW2ludF0KKyAgICAgICAg
c2VsZi5jb2RlX2hpZ2hsaWdodCA9IFRydWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmdWxs
d2lkdGgoc2VsZikgLT4gaW50OgorICAgICAgICBpZiBzZWxmLl90ZXJtaW5hbF93aWR0aCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXJtaW5hbF93aWR0aAorICAgICAg
ICByZXR1cm4gZ2V0X3Rlcm1pbmFsX3dpZHRoKCkKKworICAgIEBmdWxsd2lkdGguc2V0dGVyCisg
ICAgZGVmIGZ1bGx3aWR0aChzZWxmLCB2YWx1ZTogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll90ZXJtaW5hbF93aWR0aCA9IHZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2lkdGhf
b2ZfY3VycmVudF9saW5lKHNlbGYpIC0+IGludDoKKyAgICAgICAgIiIiUmV0dXJuIGFuIGVzdGlt
YXRlIG9mIHRoZSB3aWR0aCBzbyBmYXIgaW4gdGhlIGN1cnJlbnQgbGluZS4iIiIKKyAgICAgICAg
cmV0dXJuIHdjc3dpZHRoKHNlbGYuX2N1cnJlbnRfbGluZSkKKworICAgIGRlZiBtYXJrdXAoc2Vs
ZiwgdGV4dDogc3RyLCAqKm1hcmt1cDogYm9vbCkgLT4gc3RyOgorICAgICAgICBmb3IgbmFtZSBp
biBtYXJrdXA6CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9lc2N0YWJsZToKKyAg
ICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIG1hcmt1cDogeyFyfSIuZm9y
bWF0KG5hbWUpKQorICAgICAgICBpZiBzZWxmLmhhc21hcmt1cDoKKyAgICAgICAgICAgIGVzYyA9
IFtzZWxmLl9lc2N0YWJsZVtuYW1lXSBmb3IgbmFtZSwgb24gaW4gbWFya3VwLml0ZW1zKCkgaWYg
b25dCisgICAgICAgICAgICBpZiBlc2M6CisgICAgICAgICAgICAgICAgdGV4dCA9ICIiLmpvaW4o
Ilx4MWJbJXNtIiAlIGNvZCBmb3IgY29kIGluIGVzYykgKyB0ZXh0ICsgIlx4MWJbMG0iCisgICAg
ICAgIHJldHVybiB0ZXh0CisKKyAgICBkZWYgc2VwKAorICAgICAgICBzZWxmLAorICAgICAgICBz
ZXBjaGFyOiBzdHIsCisgICAgICAgIHRpdGxlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAg
ICAgZnVsbHdpZHRoOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgKiptYXJrdXA6IGJv
b2wKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIGZ1bGx3aWR0aCBpcyBOb25lOgorICAgICAg
ICAgICAgZnVsbHdpZHRoID0gc2VsZi5mdWxsd2lkdGgKKyAgICAgICAgIyBUaGUgZ29hbCBpcyB0
byBoYXZlIHRoZSBsaW5lIGJlIGFzIGxvbmcgYXMgcG9zc2libGUKKyAgICAgICAgIyB1bmRlciB0
aGUgY29uZGl0aW9uIHRoYXQgbGVuKGxpbmUpIDw9IGZ1bGx3aWR0aC4KKyAgICAgICAgaWYgc3lz
LnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICAgICAjIElmIHdlIHByaW50IGluIHRoZSBs
YXN0IGNvbHVtbiBvbiB3aW5kb3dzIHdlIGFyZSBvbiBhCisgICAgICAgICAgICAjIG5ldyBsaW5l
IGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gdmVyaWZ5L25ldXRyYWxpemUgdGhpcworICAgICAgICAg
ICAgIyAod2UgbWF5IG5vdCBrbm93IHRoZSBleGFjdCBsaW5lIHdpZHRoKS4KKyAgICAgICAgICAg
ICMgU28gbGV0J3MgYmUgZGVmZW5zaXZlIHRvIGF2b2lkIGVtcHR5IGxpbmVzIGluIHRoZSBvdXRw
dXQuCisgICAgICAgICAgICBmdWxsd2lkdGggLT0gMQorICAgICAgICBpZiB0aXRsZSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICMgd2Ugd2FudCAyICsgMipsZW4oZmlsbCkgKyBsZW4odGl0bGUp
IDw9IGZ1bGx3aWR0aAorICAgICAgICAgICAgIyBpLmUuICAgIDIgKyAyKmxlbihzZXBjaGFyKSpO
ICsgbGVuKHRpdGxlKSA8PSBmdWxsd2lkdGgKKyAgICAgICAgICAgICMgICAgICAgICAyKmxlbihz
ZXBjaGFyKSpOIDw9IGZ1bGx3aWR0aCAtIGxlbih0aXRsZSkgLSAyCisgICAgICAgICAgICAjICAg
ICAgICAgTiA8PSAoZnVsbHdpZHRoIC0gbGVuKHRpdGxlKSAtIDIpIC8vICgyKmxlbihzZXBjaGFy
KSkKKyAgICAgICAgICAgIE4gPSBtYXgoKGZ1bGx3aWR0aCAtIGxlbih0aXRsZSkgLSAyKSAvLyAo
MiAqIGxlbihzZXBjaGFyKSksIDEpCisgICAgICAgICAgICBmaWxsID0gc2VwY2hhciAqIE4KKyAg
ICAgICAgICAgIGxpbmUgPSAie30ge30ge30iLmZvcm1hdChmaWxsLCB0aXRsZSwgZmlsbCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgd2Ugd2FudCBsZW4oc2VwY2hhcikqTiA8PSBmdWxs
d2lkdGgKKyAgICAgICAgICAgICMgaS5lLiAgICBOIDw9IGZ1bGx3aWR0aCAvLyBsZW4oc2VwY2hh
cikKKyAgICAgICAgICAgIGxpbmUgPSBzZXBjaGFyICogKGZ1bGx3aWR0aCAvLyBsZW4oc2VwY2hh
cikpCisgICAgICAgICMgSW4gc29tZSBzaXR1YXRpb25zIHRoZXJlIGlzIHJvb20gZm9yIGFuIGV4
dHJhIHNlcGNoYXIgYXQgdGhlIHJpZ2h0LAorICAgICAgICAjIGluIHBhcnRpY3VsYXIgaWYgd2Ug
Y29uc2lkZXIgdGhhdCB3aXRoIGEgc2VwY2hhciBsaWtlICJfICIgdGhlCisgICAgICAgICMgdHJh
aWxpbmcgc3BhY2UgaXMgbm90IGltcG9ydGFudCBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAg
ICAgICBpZiBsZW4obGluZSkgKyBsZW4oc2VwY2hhci5yc3RyaXAoKSkgPD0gZnVsbHdpZHRoOgor
ICAgICAgICAgICAgbGluZSArPSBzZXBjaGFyLnJzdHJpcCgpCisKKyAgICAgICAgc2VsZi5saW5l
KGxpbmUsICoqbWFya3VwKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIG1zZzogc3RyLCAqLCBmbHVz
aDogYm9vbCA9IEZhbHNlLCAqKm1hcmt1cDogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgaWYgbXNn
OgorICAgICAgICAgICAgY3VycmVudF9saW5lID0gbXNnLnJzcGxpdCgiXG4iLCAxKVstMV0KKyAg
ICAgICAgICAgIGlmICJcbiIgaW4gbXNnOgorICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRf
bGluZSA9IGN1cnJlbnRfbGluZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9jdXJyZW50X2xpbmUgKz0gY3VycmVudF9saW5lCisKKyAgICAgICAgICAgIG1zZyA9IHNl
bGYubWFya3VwKG1zZywgKiptYXJrdXApCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9maWxlLndyaXRlKG1zZykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5j
b2RlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBTb21lIGVudmlyb25tZW50cyBkb24ndCBzdXBw
b3J0IHByaW50aW5nIGdlbmVyYWwgVW5pY29kZQorICAgICAgICAgICAgICAgICMgc3RyaW5ncywg
ZHVlIHRvIG1pc2NvbmZpZ3VyYXRpb24gb3Igb3RoZXJ3aXNlOyBpbiB0aGF0IGNhc2UsCisgICAg
ICAgICAgICAgICAgIyBwcmludCB0aGUgc3RyaW5nIGVzY2FwZWQgdG8gQVNDSUkuCisgICAgICAg
ICAgICAgICAgIyBXaGVuIHRoZSBVbmljb2RlIHNpdHVhdGlvbiBpbXByb3ZlcyB3ZSBzaG91bGQg
Y29uc2lkZXIKKyAgICAgICAgICAgICAgICAjIGxldHRpbmcgdGhlIGVycm9yIHByb3BhZ2F0ZSBp
bnN0ZWFkIG9mIG1hc2tpbmcgaXQgKHNlZSAjNzQ3NQorICAgICAgICAgICAgICAgICMgZm9yIG9u
ZSBicmllZiBhdHRlbXB0KS4KKyAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZW5jb2RlKCJ1bmlj
b2RlLWVzY2FwZSIpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUu
d3JpdGUobXNnKQorCisgICAgICAgICAgICBpZiBmbHVzaDoKKyAgICAgICAgICAgICAgICBzZWxm
LmZsdXNoKCkKKworICAgIGRlZiBsaW5lKHNlbGYsIHM6IHN0ciA9ICIiLCAqKm1hcmt1cDogYm9v
bCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi53cml0ZShzLCAqKm1hcmt1cCkKKyAgICAgICAgc2Vs
Zi53cml0ZSgiXG4iKQorCisgICAgZGVmIGZsdXNoKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuX2ZpbGUuZmx1c2goKQorCisgICAgZGVmIF93cml0ZV9zb3VyY2Uoc2VsZiwgbGluZXM6IFNl
cXVlbmNlW3N0cl0sIGluZGVudHM6IFNlcXVlbmNlW3N0cl0gPSAoKSkgLT4gTm9uZToKKyAgICAg
ICAgIiIiV3JpdGUgbGluZXMgb2Ygc291cmNlIGNvZGUgcG9zc2libHkgaGlnaGxpZ2h0ZWQuCisK
KyAgICAgICAgS2VlcGluZyB0aGlzIHByaXZhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZSBBUEkgaXMg
Y2x1bmt5LiBXZSBzaG91bGQgZGlzY3VzcyBob3cKKyAgICAgICAgdG8gZXZvbHZlIHRoZSB0ZXJt
aW5hbCB3cml0ZXIgc28gd2UgY2FuIGhhdmUgbW9yZSBwcmVjaXNlIGNvbG9yIHN1cHBvcnQsIGZv
ciBleGFtcGxlCisgICAgICAgIGJlaW5nIGFibGUgdG8gd3JpdGUgcGFydCBvZiBhIGxpbmUgaW4g
b25lIGNvbG9yIGFuZCB0aGUgcmVzdCBpbiBhbm90aGVyLCBhbmQgc28gb24uCisgICAgICAgICIi
IgorICAgICAgICBpZiBpbmRlbnRzIGFuZCBsZW4oaW5kZW50cykgIT0gbGVuKGxpbmVzKToKKyAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImluZGVudHMgc2l6
ZSAoe30pIHNob3VsZCBoYXZlIHNhbWUgc2l6ZSBhcyBsaW5lcyAoe30pIi5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgICAgIGxlbihpbmRlbnRzKSwgbGVuKGxpbmVzKQorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICkKKyAgICAgICAgaWYgbm90IGluZGVudHM6CisgICAgICAgICAgICBp
bmRlbnRzID0gWyIiXSAqIGxlbihsaW5lcykKKyAgICAgICAgc291cmNlID0gIlxuIi5qb2luKGxp
bmVzKQorICAgICAgICBuZXdfbGluZXMgPSBzZWxmLl9oaWdobGlnaHQoc291cmNlKS5zcGxpdGxp
bmVzKCkKKyAgICAgICAgZm9yIGluZGVudCwgbmV3X2xpbmUgaW4gemlwKGluZGVudHMsIG5ld19s
aW5lcyk6CisgICAgICAgICAgICBzZWxmLmxpbmUoaW5kZW50ICsgbmV3X2xpbmUpCisKKyAgICBk
ZWYgX2hpZ2hsaWdodChzZWxmLCBzb3VyY2U6IHN0cikgLT4gc3RyOgorICAgICAgICAiIiJIaWdo
bGlnaHQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIGlmIHdlIGhhdmUgbWFya3VwIHN1cHBvcnQuIiIi
CisgICAgICAgIGlmIG5vdCBzZWxmLmhhc21hcmt1cCBvciBub3Qgc2VsZi5jb2RlX2hpZ2hsaWdo
dDoKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ZnJvbSBweWdtZW50cy5mb3JtYXR0ZXJzLnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbEZvcm1hdHRl
cgorICAgICAgICAgICAgZnJvbSBweWdtZW50cy5sZXhlcnMucHl0aG9uIGltcG9ydCBQeXRob25M
ZXhlcgorICAgICAgICAgICAgZnJvbSBweWdtZW50cyBpbXBvcnQgaGlnaGxpZ2h0CisgICAgICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGhpZ2hsaWdodGVkID0gaGlnaGxpZ2h0KAorICAgICAgICAgICAg
ICAgIHNvdXJjZSwgUHl0aG9uTGV4ZXIoKSwgVGVybWluYWxGb3JtYXR0ZXIoYmc9ImRhcmsiKQor
ICAgICAgICAgICAgKSAgIyB0eXBlOiBzdHIKKyAgICAgICAgICAgIHJldHVybiBoaWdobGlnaHRl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2lvL3djd2lkdGgucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9faW8vd2N3aWR0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1YzdiZjRkODY4MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19pby93Y3dpZHRoLnB5CkBAIC0wLDAgKzEsNTUgQEAKK2lt
cG9ydCB1bmljb2RlZGF0YQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGxydV9jYWNoZQorCisKK0Bs
cnVfY2FjaGUoMTAwKQorZGVmIHdjd2lkdGgoYzogc3RyKSAtPiBpbnQ6CisgICAgIiIiRGV0ZXJt
aW5lIGhvdyBtYW55IGNvbHVtbnMgYXJlIG5lZWRlZCB0byBkaXNwbGF5IGEgY2hhcmFjdGVyIGlu
IGEgdGVybWluYWwuCisKKyAgICBSZXR1cm5zIC0xIGlmIHRoZSBjaGFyYWN0ZXIgaXMgbm90IHBy
aW50YWJsZS4KKyAgICBSZXR1cm5zIDAsIDEgb3IgMiBmb3Igb3RoZXIgY2hhcmFjdGVycy4KKyAg
ICAiIiIKKyAgICBvID0gb3JkKGMpCisKKyAgICAjIEFTQ0lJIGZhc3QgcGF0aC4KKyAgICBpZiAw
eDIwIDw9IG8gPCAweDA3RjoKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgU29tZSBDZi9acC9a
bCBjaGFyYWN0ZXJzIHdoaWNoIHNob3VsZCBiZSB6ZXJvLXdpZHRoLgorICAgIGlmICgKKyAgICAg
ICAgbyA9PSAweDAwMDAKKyAgICAgICAgb3IgMHgyMDBCIDw9IG8gPD0gMHgyMDBGCisgICAgICAg
IG9yIDB4MjAyOCA8PSBvIDw9IDB4MjAyRQorICAgICAgICBvciAweDIwNjAgPD0gbyA8PSAweDIw
NjMKKyAgICApOgorICAgICAgICByZXR1cm4gMAorCisgICAgY2F0ZWdvcnkgPSB1bmljb2RlZGF0
YS5jYXRlZ29yeShjKQorCisgICAgIyBDb250cm9sIGNoYXJhY3RlcnMuCisgICAgaWYgY2F0ZWdv
cnkgPT0gIkNjIjoKKyAgICAgICAgcmV0dXJuIC0xCisKKyAgICAjIENvbWJpbmluZyBjaGFyYWN0
ZXJzIHdpdGggemVybyB3aWR0aC4KKyAgICBpZiBjYXRlZ29yeSBpbiAoIk1lIiwgIk1uIik6Cisg
ICAgICAgIHJldHVybiAwCisKKyAgICAjIEZ1bGwvV2lkZSBlYXN0IGFzaWFuIGNoYXJhY3RlcnMu
CisgICAgaWYgdW5pY29kZWRhdGEuZWFzdF9hc2lhbl93aWR0aChjKSBpbiAoIkYiLCAiVyIpOgor
ICAgICAgICByZXR1cm4gMgorCisgICAgcmV0dXJuIDEKKworCitkZWYgd2Nzd2lkdGgoczogc3Ry
KSAtPiBpbnQ6CisgICAgIiIiRGV0ZXJtaW5lIGhvdyBtYW55IGNvbHVtbnMgYXJlIG5lZWRlZCB0
byBkaXNwbGF5IGEgc3RyaW5nIGluIGEgdGVybWluYWwuCisKKyAgICBSZXR1cm5zIC0xIGlmIHRo
ZSBzdHJpbmcgY29udGFpbnMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzLgorICAgICIiIgorICAg
IHdpZHRoID0gMAorICAgIGZvciBjIGluIHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgiTkZDIiwgcyk6
CisgICAgICAgIHdjID0gd2N3aWR0aChjKQorICAgICAgICBpZiB3YyA8IDA6CisgICAgICAgICAg
ICByZXR1cm4gLTEKKyAgICAgICAgd2lkdGggKz0gd2MKKyAgICByZXR1cm4gd2lkdGgKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi9fX2luaXRfXy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi9fX2luaXRfXy5weQppbmRleCAyYzlhODg5
MGM5YWYuLjA2MDU3ZDBjNGMxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
YXNzZXJ0aW9uL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2Vy
dGlvbi9fX2luaXRfXy5weQpAQCAtMSwxNiArMSwyNSBAQAotIiIiCi1zdXBwb3J0IGZvciBwcmVz
ZW50aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uIGluIGZhaWxpbmcgYXNzZXJ0aW9ucy4KLSIiIgot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9m
dW5jdGlvbgorIiIiU3VwcG9ydCBmb3IgcHJlc2VudGluZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBp
biBmYWlsaW5nIGFzc2VydGlvbnMuIiIiCiBpbXBvcnQgc3lzCi1pbXBvcnQgc2l4Citmcm9tIHR5
cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAKLWZyb20gX3B5dGVz
dC5hc3NlcnRpb24gaW1wb3J0IHV0aWwKIGZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHJl
d3JpdGUKIGZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHRydW5jYXRlCitmcm9tIF9weXRl
c3QuYXNzZXJ0aW9uIGltcG9ydCB1dGlsCitmcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUg
aW1wb3J0IGFzc2VydHN0YXRlX2tleQorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9D
SEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBob29raW1wbAorZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGlt
cG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRlbQorCitpZiBUWVBFX0NI
RUNLSU5HOgorICAgIGZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCiAKIAotZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFy
c2VyKSAtPiBOb25lOgogICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIp
CiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAiLS1hc3NlcnQiLApAQCAtMTksMTUgKzI4
LDIzIEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAgIGNob2ljZXM9KCJy
ZXdyaXRlIiwgInBsYWluIiksCiAgICAgICAgIGRlZmF1bHQ9InJld3JpdGUiLAogICAgICAgICBt
ZXRhdmFyPSJNT0RFIiwKLSAgICAgICAgaGVscD0iIiJDb250cm9sIGFzc2VydGlvbiBkZWJ1Z2dp
bmcgdG9vbHMuICAncGxhaW4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybXMg
bm8gYXNzZXJ0aW9uIGRlYnVnZ2luZy4gICdyZXdyaXRlJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh0aGUgZGVmYXVsdCkgcmV3cml0ZXMgYXNzZXJ0IHN0YXRlbWVudHMgaW4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IG1vZHVsZXMgb24gaW1wb3J0IHRvIHByb3ZpZGUg
YXNzZXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiBpbmZvcm1hdGlv
bi4iIiIsCisgICAgICAgIGhlbHA9KAorICAgICAgICAgICAgIkNvbnRyb2wgYXNzZXJ0aW9uIGRl
YnVnZ2luZyB0b29scy5cbiIKKyAgICAgICAgICAgICIncGxhaW4nIHBlcmZvcm1zIG5vIGFzc2Vy
dGlvbiBkZWJ1Z2dpbmcuXG4iCisgICAgICAgICAgICAiJ3Jld3JpdGUnICh0aGUgZGVmYXVsdCkg
cmV3cml0ZXMgYXNzZXJ0IHN0YXRlbWVudHMgaW4gdGVzdCBtb2R1bGVzIgorICAgICAgICAgICAg
IiBvbiBpbXBvcnQgdG8gcHJvdmlkZSBhc3NlcnQgZXhwcmVzc2lvbiBpbmZvcm1hdGlvbi4iCisg
ICAgICAgICksCisgICAgKQorICAgIHBhcnNlci5hZGRpbmkoCisgICAgICAgICJlbmFibGVfYXNz
ZXJ0aW9uX3Bhc3NfaG9vayIsCisgICAgICAgIHR5cGU9ImJvb2wiLAorICAgICAgICBkZWZhdWx0
PUZhbHNlLAorICAgICAgICBoZWxwPSJFbmFibGVzIHRoZSBweXRlc3RfYXNzZXJ0aW9uX3Bhc3Mg
aG9vay4iCisgICAgICAgICJNYWtlIHN1cmUgdG8gZGVsZXRlIGFueSBwcmV2aW91c2x5IGdlbmVy
YXRlZCBweWMgY2FjaGUgZmlsZXMuIiwKICAgICApCiAKIAotZGVmIHJlZ2lzdGVyX2Fzc2VydF9y
ZXdyaXRlKCpuYW1lcyk6CitkZWYgcmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoKm5hbWVzOiBzdHIp
IC0+IE5vbmU6CiAgICAgIiIiUmVnaXN0ZXIgb25lIG9yIG1vcmUgbW9kdWxlIG5hbWVzIHRvIGJl
IHJld3JpdHRlbiBvbiBpbXBvcnQuCiAKICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgbWFrZSBzdXJl
IHRoYXQgdGhpcyBtb2R1bGUgb3IgYWxsIG1vZHVsZXMgaW5zaWRlCkBAIC0zNiw1MCArNTMsNDgg
QEAgZGVmIHJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlKCpuYW1lcyk6CiAgICAgYWN0dWFsbHkgaW1w
b3J0ZWQsIHVzdWFsbHkgaW4geW91ciBfX2luaXRfXy5weSBpZiB5b3UgYXJlIGEgcGx1Z2luCiAg
ICAgdXNpbmcgYSBwYWNrYWdlLgogCi0gICAgOnJhaXNlIFR5cGVFcnJvcjogaWYgdGhlIGdpdmVu
IG1vZHVsZSBuYW1lcyBhcmUgbm90IHN0cmluZ3MuCisgICAgOnJhaXNlcyBUeXBlRXJyb3I6IElm
IHRoZSBnaXZlbiBtb2R1bGUgbmFtZXMgYXJlIG5vdCBzdHJpbmdzLgogICAgICIiIgogICAgIGZv
ciBuYW1lIGluIG5hbWVzOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgot
ICAgICAgICAgICAgbXNnID0gImV4cGVjdGVkIG1vZHVsZSBuYW1lcyBhcyAqYXJncywgZ290IHsw
fSBpbnN0ZWFkIgorICAgICAgICAgICAgbXNnID0gImV4cGVjdGVkIG1vZHVsZSBuYW1lcyBhcyAq
YXJncywgZ290IHswfSBpbnN0ZWFkIiAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCiAgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdChyZXByKG5hbWVzKSkpCiAgICAgZm9y
IGhvb2sgaW4gc3lzLm1ldGFfcGF0aDoKICAgICAgICAgaWYgaXNpbnN0YW5jZShob29rLCByZXdy
aXRlLkFzc2VydGlvblJld3JpdGluZ0hvb2spOgogICAgICAgICAgICAgaW1wb3J0aG9vayA9IGhv
b2sKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKLSAgICAgICAgaW1wb3J0aG9vayA9IER1
bW15UmV3cml0ZUhvb2soKQorICAgICAgICAjIFRPRE8odHlwaW5nKTogQWRkIGEgcHJvdG9jb2wg
Zm9yIG1hcmtfcmV3cml0ZSgpIGFuZCB1c2UgaXQKKyAgICAgICAgIyBmb3IgaW1wb3J0aG9vayBh
bmQgZm9yIFB5dGVzdFBsdWdpbk1hbmFnZXIucmV3cml0ZV9ob29rLgorICAgICAgICBpbXBvcnRo
b29rID0gRHVtbXlSZXdyaXRlSG9vaygpICAjIHR5cGU6IGlnbm9yZQogICAgIGltcG9ydGhvb2su
bWFya19yZXdyaXRlKCpuYW1lcykKIAogCi1jbGFzcyBEdW1teVJld3JpdGVIb29rKG9iamVjdCk6
CitjbGFzcyBEdW1teVJld3JpdGVIb29rOgogICAgICIiIkEgbm8tb3AgaW1wb3J0IGhvb2sgZm9y
IHdoZW4gcmV3cml0aW5nIGlzIGRpc2FibGVkLiIiIgogCi0gICAgZGVmIG1hcmtfcmV3cml0ZShz
ZWxmLCAqbmFtZXMpOgorICAgIGRlZiBtYXJrX3Jld3JpdGUoc2VsZiwgKm5hbWVzOiBzdHIpIC0+
IE5vbmU6CiAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBBc3NlcnRpb25TdGF0ZShvYmplY3QpOgor
Y2xhc3MgQXNzZXJ0aW9uU3RhdGU6CiAgICAgIiIiU3RhdGUgZm9yIHRoZSBhc3NlcnRpb24gcGx1
Z2luLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZywgbW9kZSk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNvbmZpZzogQ29uZmlnLCBtb2RlKSAtPiBOb25lOgogICAgICAgICBz
ZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYudHJhY2UgPSBjb25maWcudHJhY2Uucm9vdC5n
ZXQoImFzc2VydGlvbiIpCi0gICAgICAgIHNlbGYuaG9vayA9IE5vbmUKKyAgICAgICAgc2VsZi5o
b29rID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtyZXdyaXRlLkFzc2VydGlvblJld3JpdGluZ0hv
b2tdCiAKIAotZGVmIGluc3RhbGxfaW1wb3J0aG9vayhjb25maWcpOgorZGVmIGluc3RhbGxfaW1w
b3J0aG9vayhjb25maWc6IENvbmZpZykgLT4gcmV3cml0ZS5Bc3NlcnRpb25SZXdyaXRpbmdIb29r
OgogICAgICIiIlRyeSB0byBpbnN0YWxsIHRoZSByZXdyaXRlIGhvb2ssIHJhaXNlIFN5c3RlbUVy
cm9yIGlmIGl0IGZhaWxzLiIiIgotICAgICMgSnl0aG9uIGhhcyBhbiBBU1QgYnVnIHRoYXQgbWFr
ZSB0aGUgYXNzZXJ0aW9uIHJld3JpdGluZyBob29rIG1hbGZ1bmN0aW9uLgotICAgIGlmIHN5cy5w
bGF0Zm9ybS5zdGFydHN3aXRoKCJqYXZhIik6Ci0gICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCJy
ZXdyaXRlIG5vdCBzdXBwb3J0ZWQiKQotCi0gICAgY29uZmlnLl9hc3NlcnRzdGF0ZSA9IEFzc2Vy
dGlvblN0YXRlKGNvbmZpZywgInJld3JpdGUiKQotICAgIGNvbmZpZy5fYXNzZXJ0c3RhdGUuaG9v
ayA9IGhvb2sgPSByZXdyaXRlLkFzc2VydGlvblJld3JpdGluZ0hvb2soY29uZmlnKQorICAgIGNv
bmZpZy5fc3RvcmVbYXNzZXJ0c3RhdGVfa2V5XSA9IEFzc2VydGlvblN0YXRlKGNvbmZpZywgInJl
d3JpdGUiKQorICAgIGNvbmZpZy5fc3RvcmVbYXNzZXJ0c3RhdGVfa2V5XS5ob29rID0gaG9vayA9
IHJld3JpdGUuQXNzZXJ0aW9uUmV3cml0aW5nSG9vayhjb25maWcpCiAgICAgc3lzLm1ldGFfcGF0
aC5pbnNlcnQoMCwgaG9vaykKLSAgICBjb25maWcuX2Fzc2VydHN0YXRlLnRyYWNlKCJpbnN0YWxs
ZWQgcmV3cml0ZSBpbXBvcnQgaG9vayIpCisgICAgY29uZmlnLl9zdG9yZVthc3NlcnRzdGF0ZV9r
ZXldLnRyYWNlKCJpbnN0YWxsZWQgcmV3cml0ZSBpbXBvcnQgaG9vayIpCiAKLSAgICBkZWYgdW5k
bygpOgotICAgICAgICBob29rID0gY29uZmlnLl9hc3NlcnRzdGF0ZS5ob29rCisgICAgZGVmIHVu
ZG8oKSAtPiBOb25lOgorICAgICAgICBob29rID0gY29uZmlnLl9zdG9yZVthc3NlcnRzdGF0ZV9r
ZXldLmhvb2sKICAgICAgICAgaWYgaG9vayBpcyBub3QgTm9uZSBhbmQgaG9vayBpbiBzeXMubWV0
YV9wYXRoOgogICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5yZW1vdmUoaG9vaykKIApAQCAtODcs
MjcgKzEwMiwyOSBAQCBkZWYgaW5zdGFsbF9pbXBvcnRob29rKGNvbmZpZyk6CiAgICAgcmV0dXJu
IGhvb2sKIAogCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbik6Ci0gICAgIyB0aGlzIGhv
b2sgaXMgb25seSBjYWxsZWQgd2hlbiB0ZXN0IG1vZHVsZXMgYXJlIGNvbGxlY3RlZAorZGVmIHB5
dGVzdF9jb2xsZWN0aW9uKHNlc3Npb246ICJTZXNzaW9uIikgLT4gTm9uZToKKyAgICAjIFRoaXMg
aG9vayBpcyBvbmx5IGNhbGxlZCB3aGVuIHRlc3QgbW9kdWxlcyBhcmUgY29sbGVjdGVkCiAgICAg
IyBzbyBmb3IgZXhhbXBsZSBub3QgaW4gdGhlIG1hc3RlciBwcm9jZXNzIG9mIHB5dGVzdC14ZGlz
dAotICAgICMgKHdoaWNoIGRvZXMgbm90IGNvbGxlY3QgdGVzdCBtb2R1bGVzKQotICAgIGFzc2Vy
dHN0YXRlID0gZ2V0YXR0cihzZXNzaW9uLmNvbmZpZywgIl9hc3NlcnRzdGF0ZSIsIE5vbmUpCisg
ICAgIyAod2hpY2ggZG9lcyBub3QgY29sbGVjdCB0ZXN0IG1vZHVsZXMpLgorICAgIGFzc2VydHN0
YXRlID0gc2Vzc2lvbi5jb25maWcuX3N0b3JlLmdldChhc3NlcnRzdGF0ZV9rZXksIE5vbmUpCiAg
ICAgaWYgYXNzZXJ0c3RhdGU6CiAgICAgICAgIGlmIGFzc2VydHN0YXRlLmhvb2sgaXMgbm90IE5v
bmU6CiAgICAgICAgICAgICBhc3NlcnRzdGF0ZS5ob29rLnNldF9zZXNzaW9uKHNlc3Npb24pCiAK
IAotZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICIiIlNldHVwIHRoZSBweXRl
c3RfYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2sKK0Bob29raW1wbCh0cnlmaXJzdD1UcnVlLCBob29r
d3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW06IEl0ZW0pIC0+
IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAiIiJTZXR1cCB0aGUgcHl0ZXN0X2Fz
c2VydHJlcHJfY29tcGFyZSBhbmQgcHl0ZXN0X2Fzc2VydGlvbl9wYXNzIGhvb2tzLgogCi0gICAg
VGhlIG5ld2ludGVycHJldCBhbmQgcmV3cml0ZSBtb2R1bGVzIHdpbGwgdXNlIHV0aWwuX3JlcHJj
b21wYXJlIGlmCi0gICAgaXQgZXhpc3RzIHRvIHVzZSBjdXN0b20gcmVwb3J0aW5nIHZpYSB0aGUK
LSAgICBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2suICBUaGlzIHNldHMgdXAgdGhpcyBj
dXN0b20KKyAgICBUaGUgcmV3cml0ZSBtb2R1bGUgd2lsbCB1c2UgdXRpbC5fcmVwcmNvbXBhcmUg
aWYgaXQgZXhpc3RzIHRvIHVzZSBjdXN0b20KKyAgICByZXBvcnRpbmcgdmlhIHRoZSBweXRlc3Rf
YXNzZXJ0cmVwcl9jb21wYXJlIGhvb2suICBUaGlzIHNldHMgdXAgdGhpcyBjdXN0b20KICAgICBj
b21wYXJpc29uIGZvciB0aGUgdGVzdC4KICAgICAiIiIKIAotICAgIGRlZiBjYWxsYmlucmVwcihv
cCwgbGVmdCwgcmlnaHQpOgotICAgICAgICAiIiJDYWxsIHRoZSBweXRlc3RfYXNzZXJ0cmVwcl9j
b21wYXJlIGhvb2sgYW5kIHByZXBhcmUgdGhlIHJlc3VsdAorICAgIGlob29rID0gaXRlbS5paG9v
aworCisgICAgZGVmIGNhbGxiaW5yZXByKG9wLCBsZWZ0OiBvYmplY3QsIHJpZ2h0OiBvYmplY3Qp
IC0+IE9wdGlvbmFsW3N0cl06CisgICAgICAgICIiIkNhbGwgdGhlIHB5dGVzdF9hc3NlcnRyZXBy
X2NvbXBhcmUgaG9vayBhbmQgcHJlcGFyZSB0aGUgcmVzdWx0LgogCiAgICAgICAgIFRoaXMgdXNl
cyB0aGUgZmlyc3QgcmVzdWx0IGZyb20gdGhlIGhvb2sgYW5kIHRoZW4gZW5zdXJlcyB0aGUKICAg
ICAgICAgZm9sbG93aW5nOgpAQCAtMTIxLDMxICsxMzgsNDIgQEAgZGVmIHB5dGVzdF9ydW50ZXN0
X3NldHVwKGl0ZW0pOgogICAgICAgICBUaGUgcmVzdWx0IGNhbiBiZSBmb3JtYXR0ZWQgYnkgdXRp
bC5mb3JtYXRfZXhwbGFuYXRpb24oKSBmb3IKICAgICAgICAgcHJldHR5IHByaW50aW5nLgogICAg
ICAgICAiIiIKLSAgICAgICAgaG9va19yZXN1bHQgPSBpdGVtLmlob29rLnB5dGVzdF9hc3NlcnRy
ZXByX2NvbXBhcmUoCisgICAgICAgIGhvb2tfcmVzdWx0ID0gaWhvb2sucHl0ZXN0X2Fzc2VydHJl
cHJfY29tcGFyZSgKICAgICAgICAgICAgIGNvbmZpZz1pdGVtLmNvbmZpZywgb3A9b3AsIGxlZnQ9
bGVmdCwgcmlnaHQ9cmlnaHQKICAgICAgICAgKQogICAgICAgICBmb3IgbmV3X2V4cGwgaW4gaG9v
a19yZXN1bHQ6CiAgICAgICAgICAgICBpZiBuZXdfZXhwbDoKICAgICAgICAgICAgICAgICBuZXdf
ZXhwbCA9IHRydW5jYXRlLnRydW5jYXRlX2lmX3JlcXVpcmVkKG5ld19leHBsLCBpdGVtKQogICAg
ICAgICAgICAgICAgIG5ld19leHBsID0gW2xpbmUucmVwbGFjZSgiXG4iLCAiXFxuIikgZm9yIGxp
bmUgaW4gbmV3X2V4cGxdCi0gICAgICAgICAgICAgICAgcmVzID0gc2l4LnRleHRfdHlwZSgiXG5+
Iikuam9pbihuZXdfZXhwbCkKKyAgICAgICAgICAgICAgICByZXMgPSAiXG5+Ii5qb2luKG5ld19l
eHBsKQogICAgICAgICAgICAgICAgIGlmIGl0ZW0uY29uZmlnLmdldHZhbHVlKCJhc3NlcnRtb2Rl
IikgPT0gInJld3JpdGUiOgogICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMucmVwbGFjZSgi
JSIsICIlJSIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcworICAgICAgICByZXR1cm4gTm9u
ZQogCisgICAgc2F2ZWRfYXNzZXJ0X2hvb2tzID0gdXRpbC5fcmVwcmNvbXBhcmUsIHV0aWwuX2Fz
c2VydGlvbl9wYXNzCiAgICAgdXRpbC5fcmVwcmNvbXBhcmUgPSBjYWxsYmlucmVwcgogCisgICAg
aWYgaWhvb2sucHl0ZXN0X2Fzc2VydGlvbl9wYXNzLmdldF9ob29raW1wbHMoKToKKworICAgICAg
ICBkZWYgY2FsbF9hc3NlcnRpb25fcGFzc19ob29rKGxpbmVubzogaW50LCBvcmlnOiBzdHIsIGV4
cGw6IHN0cikgLT4gTm9uZToKKyAgICAgICAgICAgIGlob29rLnB5dGVzdF9hc3NlcnRpb25fcGFz
cyhpdGVtPWl0ZW0sIGxpbmVubz1saW5lbm8sIG9yaWc9b3JpZywgZXhwbD1leHBsKQorCisgICAg
ICAgIHV0aWwuX2Fzc2VydGlvbl9wYXNzID0gY2FsbF9hc3NlcnRpb25fcGFzc19ob29rCisKKyAg
ICB5aWVsZAogCi1kZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSk6Ci0gICAgdXRpbC5f
cmVwcmNvbXBhcmUgPSBOb25lCisgICAgdXRpbC5fcmVwcmNvbXBhcmUsIHV0aWwuX2Fzc2VydGlv
bl9wYXNzID0gc2F2ZWRfYXNzZXJ0X2hvb2tzCiAKIAotZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNo
KHNlc3Npb24pOgotICAgIGFzc2VydHN0YXRlID0gZ2V0YXR0cihzZXNzaW9uLmNvbmZpZywgIl9h
c3NlcnRzdGF0ZSIsIE5vbmUpCitkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbjogIlNl
c3Npb24iKSAtPiBOb25lOgorICAgIGFzc2VydHN0YXRlID0gc2Vzc2lvbi5jb25maWcuX3N0b3Jl
LmdldChhc3NlcnRzdGF0ZV9rZXksIE5vbmUpCiAgICAgaWYgYXNzZXJ0c3RhdGU6CiAgICAgICAg
IGlmIGFzc2VydHN0YXRlLmhvb2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnRzdGF0
ZS5ob29rLnNldF9zZXNzaW9uKE5vbmUpCiAKIAotIyBFeHBvc2UgdGhpcyBwbHVnaW4ncyBpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhlIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vawotcHl0ZXN0
X2Fzc2VydHJlcHJfY29tcGFyZSA9IHV0aWwuYXNzZXJ0cmVwcl9jb21wYXJlCitkZWYgcHl0ZXN0
X2Fzc2VydHJlcHJfY29tcGFyZSgKKyAgICBjb25maWc6IENvbmZpZywgb3A6IHN0ciwgbGVmdDog
QW55LCByaWdodDogQW55CispIC0+IE9wdGlvbmFsW0xpc3Rbc3RyXV06CisgICAgcmV0dXJuIHV0
aWwuYXNzZXJ0cmVwcl9jb21wYXJlKGNvbmZpZz1jb25maWcsIG9wPW9wLCBsZWZ0PWxlZnQsIHJp
Z2h0PXJpZ2h0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9u
L3Jld3JpdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vcmV3cml0ZS5w
eQppbmRleCBlY2VlZDYxMWZmYjEuLjVmZjU3ODI0NTc5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkKQEAgLTEsMTA2ICsxLDE0MCBAQAotIiIiUmV3
cml0ZSBhc3NlcnRpb24gQVNUIHRvIHByb2R1Y2UgbmljZSBlcnJvciBtZXNzYWdlcyIiIgotZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5j
dGlvbgorIiIiUmV3cml0ZSBhc3NlcnRpb24gQVNUIHRvIHByb2R1Y2UgbmljZSBlcnJvciBtZXNz
YWdlcy4iIiIKIGltcG9ydCBhc3QKIGltcG9ydCBlcnJubworaW1wb3J0IGZ1bmN0b29scworaW1w
b3J0IGltcG9ydGxpYi5hYmMKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1w
b3J0bGliLnV0aWwKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwotaW1wb3J0IGltcAogaW1w
b3J0IG1hcnNoYWwKIGltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2l4CiBpbXBvcnQgc3Ry
dWN0CiBpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0eXBlcworZnJvbSB0eXBp
bmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcg
aW1wb3J0IElPCitmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9y
dCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBT
ZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxl
Citmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAotaW1wb3J0IGF0b21pY3dyaXRlcwogaW1wb3J0
IHB5CiAKK2Zyb20gX3B5dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0IHNhZmVyZXByCitmcm9tIF9w
eXRlc3QuX3ZlcnNpb24gaW1wb3J0IHZlcnNpb24KIGZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1w
b3J0IHV0aWwKK2Zyb20gX3B5dGVzdC5hc3NlcnRpb24udXRpbCBpbXBvcnQgKCAgIyBub3FhOiBG
NDAxCisgICAgZm9ybWF0X2V4cGxhbmF0aW9uIGFzIF9mb3JtYXRfZXhwbGFuYXRpb24sCispCitm
cm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBmc3BhdGgKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1w
b3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJv
bSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9y
dCBmbm1hdGNoX2V4Citmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0
ZXN0LnBhdGhsaWIgaW1wb3J0IFB1cmVQYXRoCitmcm9tIF9weXRlc3Quc3RvcmUgaW1wb3J0IFN0
b3JlS2V5CiAKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBp
bXBvcnQgQXNzZXJ0aW9uU3RhdGUgICMgbm9xYTogRjQwMQogCi0jIHB5dGVzdCBjYWNoZXMgcmV3
cml0dGVuIHB5Y3MgaW4gX19weWNhY2hlX18uCi1pZiBoYXNhdHRyKGltcCwgImdldF90YWciKToK
LSAgICBQWVRFU1RfVEFHID0gaW1wLmdldF90YWcoKSArICItUFlURVNUIgotZWxzZToKLSAgICBp
ZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6Ci0gICAgICAgIGltcGwgPSAicHlw
eSIKLSAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAiamF2YSI6Ci0gICAgICAgIGltcGwgPSAianl0
aG9uIgotICAgIGVsc2U6Ci0gICAgICAgIGltcGwgPSAiY3B5dGhvbiIKLSAgICB2ZXIgPSBzeXMu
dmVyc2lvbl9pbmZvCi0gICAgUFlURVNUX1RBRyA9ICIlcy0lcyVzLVBZVEVTVCIgJSAoaW1wbCwg
dmVyWzBdLCB2ZXJbMV0pCi0gICAgZGVsIHZlciwgaW1wbAotCi1QWUNfRVhUID0gIi5weSIgKyAo
X19kZWJ1Z19fIGFuZCAiYyIgb3IgIm8iKQotUFlDX1RBSUwgPSAiLiIgKyBQWVRFU1RfVEFHICsg
UFlDX0VYVAogCi1BU0NJSV9JU19ERUZBVUxUX0VOQ09ESU5HID0gc3lzLnZlcnNpb25faW5mb1sw
XSA8IDMKK2Fzc2VydHN0YXRlX2tleSA9IFN0b3JlS2V5WyJBc3NlcnRpb25TdGF0ZSJdKCkKIAot
aWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNSk6Ci0gICAgYXN0X0NhbGwgPSBhc3QuQ2FsbAot
ZWxzZToKIAotICAgIGRlZiBhc3RfQ2FsbChhLCBiLCBjKToKLSAgICAgICAgcmV0dXJuIGFzdC5D
YWxsKGEsIGIsIGMsIE5vbmUsIE5vbmUpCisjIHB5dGVzdCBjYWNoZXMgcmV3cml0dGVuIHB5Y3Mg
aW4gcHljYWNoZSBkaXJzCitQWVRFU1RfVEFHID0gInt9LXB5dGVzdC17fSIuZm9ybWF0KHN5cy5p
bXBsZW1lbnRhdGlvbi5jYWNoZV90YWcsIHZlcnNpb24pCitQWUNfRVhUID0gIi5weSIgKyAoX19k
ZWJ1Z19fIGFuZCAiYyIgb3IgIm8iKQorUFlDX1RBSUwgPSAiLiIgKyBQWVRFU1RfVEFHICsgUFlD
X0VYVAogCiAKLWNsYXNzIEFzc2VydGlvblJld3JpdGluZ0hvb2sob2JqZWN0KToKLSAgICAiIiJQ
RVAzMDIgSW1wb3J0IGhvb2sgd2hpY2ggcmV3cml0ZXMgYXNzZXJ0cy4iIiIKK2NsYXNzIEFzc2Vy
dGlvblJld3JpdGluZ0hvb2soaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlciwgaW1wb3J0bGli
LmFiYy5Mb2FkZXIpOgorICAgICIiIlBFUDMwMi9QRVA0NTEgaW1wb3J0IGhvb2sgd2hpY2ggcmV3
cml0ZXMgYXNzZXJ0cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IENvbmZpZykgLT4gTm9uZToKICAgICAgICAgc2Vs
Zi5jb25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5mbnBhdHMgPSBjb25maWcuZ2V0aW5pKCJw
eXRob25fZmlsZXMiKQotICAgICAgICBzZWxmLnNlc3Npb24gPSBOb25lCi0gICAgICAgIHNlbGYu
bW9kdWxlcyA9IHt9Ci0gICAgICAgIHNlbGYuX3Jld3JpdHRlbl9uYW1lcyA9IHNldCgpCi0gICAg
ICAgIHNlbGYuX3JlZ2lzdGVyX3dpdGhfcGtnX3Jlc291cmNlcygpCi0gICAgICAgIHNlbGYuX211
c3RfcmV3cml0ZSA9IHNldCgpCi0KLSAgICBkZWYgc2V0X3Nlc3Npb24oc2VsZiwgc2Vzc2lvbik6
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuZm5wYXRzID0gY29uZmlnLmdldGluaSgi
cHl0aG9uX2ZpbGVzIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBz
ZWxmLmZucGF0cyA9IFsidGVzdF8qLnB5IiwgIipfdGVzdC5weSJdCisgICAgICAgIHNlbGYuc2Vz
c2lvbiA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbU2Vzc2lvbl0KKyAgICAgICAgc2VsZi5fcmV3
cml0dGVuX25hbWVzID0gc2V0KCkgICMgdHlwZTogU2V0W3N0cl0KKyAgICAgICAgc2VsZi5fbXVz
dF9yZXdyaXRlID0gc2V0KCkgICMgdHlwZTogU2V0W3N0cl0KKyAgICAgICAgIyBmbGFnIHRvIGd1
YXJkIGFnYWluc3QgdHJ5aW5nIHRvIHJld3JpdGUgYSBweWMgZmlsZSB3aGlsZSB3ZSBhcmUgYWxy
ZWFkeSB3cml0aW5nIGFub3RoZXIgcHljIGZpbGUsCisgICAgICAgICMgd2hpY2ggbWlnaHQgcmVz
dWx0IGluIGluZmluaXRlIHJlY3Vyc2lvbiAoIzM1MDYpCisgICAgICAgIHNlbGYuX3dyaXRpbmdf
cHljID0gRmFsc2UKKyAgICAgICAgc2VsZi5fYmFzZW5hbWVzX3RvX2NoZWNrX3Jld3JpdGUgPSB7
ImNvbmZ0ZXN0In0KKyAgICAgICAgc2VsZi5fbWFya2VkX2Zvcl9yZXdyaXRlX2NhY2hlID0ge30g
ICMgdHlwZTogRGljdFtzdHIsIGJvb2xdCisgICAgICAgIHNlbGYuX3Nlc3Npb25fcGF0aHNfY2hl
Y2tlZCA9IEZhbHNlCisKKyAgICBkZWYgc2V0X3Nlc3Npb24oc2VsZiwgc2Vzc2lvbjogT3B0aW9u
YWxbU2Vzc2lvbl0pIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24KLQot
ICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICBzdGF0
ZSA9IHNlbGYuY29uZmlnLl9hc3NlcnRzdGF0ZQorICAgICAgICBzZWxmLl9zZXNzaW9uX3BhdGhz
X2NoZWNrZWQgPSBGYWxzZQorCisgICAgIyBJbmRpcmVjdGlvbiBzbyB3ZSBjYW4gbW9jayBjYWxs
cyB0byBmaW5kX3NwZWMgb3JpZ2luYXRlZCBmcm9tIHRoZSBob29rIGR1cmluZyB0ZXN0aW5nCisg
ICAgX2ZpbmRfc3BlYyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMK
KworICAgIGRlZiBmaW5kX3NwZWMoCisgICAgICAgIHNlbGYsCisgICAgICAgIG5hbWU6IHN0ciwK
KyAgICAgICAgcGF0aDogT3B0aW9uYWxbU2VxdWVuY2VbVW5pb25bc3RyLCBieXRlc11dXSA9IE5v
bmUsCisgICAgICAgIHRhcmdldDogT3B0aW9uYWxbdHlwZXMuTW9kdWxlVHlwZV0gPSBOb25lLAor
ICAgICkgLT4gT3B0aW9uYWxbaW1wb3J0bGliLm1hY2hpbmVyeS5Nb2R1bGVTcGVjXToKKyAgICAg
ICAgaWYgc2VsZi5fd3JpdGluZ19weWM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICBzdGF0ZSA9IHNlbGYuY29uZmlnLl9zdG9yZVthc3NlcnRzdGF0ZV9rZXldCisgICAgICAgIGlm
IHNlbGYuX2Vhcmx5X3Jld3JpdGVfYmFpbG91dChuYW1lLCBzdGF0ZSk6CisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogICAgICAgICBzdGF0ZS50cmFjZSgiZmluZF9tb2R1bGUgY2FsbGVkIGZvcjog
JXMiICUgbmFtZSkKLSAgICAgICAgbmFtZXMgPSBuYW1lLnJzcGxpdCgiLiIsIDEpCi0gICAgICAg
IGxhc3RuYW1lID0gbmFtZXNbLTFdCi0gICAgICAgIHB0aCA9IE5vbmUKLSAgICAgICAgaWYgcGF0
aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCBQeXRob24gMy4zLCBw
YXRoIGlzIGEgX05hbWVzcGFjZVBhdGgoKSwgd2hpY2gKLSAgICAgICAgICAgICMgY2F1c2VzIHBy
b2JsZW1zIGlmIG5vdCBjb252ZXJ0ZWQgdG8gbGlzdC4KLSAgICAgICAgICAgIHBhdGggPSBsaXN0
KHBhdGgpCi0gICAgICAgICAgICBpZiBsZW4ocGF0aCkgPT0gMToKLSAgICAgICAgICAgICAgICBw
dGggPSBwYXRoWzBdCi0gICAgICAgIGlmIHB0aCBpcyBOb25lOgotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIGZkLCBmbiwgZGVzYyA9IGltcC5maW5kX21vZHVsZShsYXN0bmFtZSwg
cGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgZmQuY2xvc2UoKQotICAgICAgICAgICAgdHAgPSBkZXNjWzJdCi0gICAgICAgICAgICBpZiB0
cCA9PSBpbXAuUFlfQ09NUElMRUQ6Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihpbXAsICJz
b3VyY2VfZnJvbV9jYWNoZSIpOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmbiA9IGltcC5zb3VyY2VfZnJvbV9jYWNoZShmbikKLSAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB5
dGhvbiAzIGRvZXNuJ3QgbGlrZSBvcnBoYW5lZCBidXQgc3RpbGwtaW1wb3J0YWJsZQotICAgICAg
ICAgICAgICAgICAgICAgICAgIyAucHljIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAg
Zm4gPSBmbls6LTFdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
Zm4gPSBmbls6LTFdCi0gICAgICAgICAgICBlbGlmIHRwICE9IGltcC5QWV9TT1VSQ0U6Ci0gICAg
ICAgICAgICAgICAgIyBEb24ndCBrbm93IHdoYXQgdGhpcyBpcy4KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgbXlweSBpcyBjb25m
dXNlZCBhYm91dCB0aGUgYHNlbGZgIGJpbmRpbmcgaGVyZS4KKyAgICAgICAgc3BlYyA9IHNlbGYu
X2ZpbmRfc3BlYyhuYW1lLCBwYXRoKSAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgaWYgKAorICAg
ICAgICAgICAgIyB0aGUgaW1wb3J0IG1hY2hpbmVyeSBjb3VsZCBub3QgZmluZCBhIGZpbGUgdG8g
aW1wb3J0CisgICAgICAgICAgICBzcGVjIGlzIE5vbmUKKyAgICAgICAgICAgICMgdGhpcyBpcyBh
IG5hbWVzcGFjZSBwYWNrYWdlICh3aXRob3V0IGBfX2luaXRfXy5weWApCisgICAgICAgICAgICAj
IHRoZXJlJ3Mgbm90aGluZyB0byByZXdyaXRlIHRoZXJlCisgICAgICAgICAgICAjIHB5dGhvbjMu
NSAtIHB5dGhvbjMuNjogYG5hbWVzcGFjZWAKKyAgICAgICAgICAgICMgcHl0aG9uMy43KzogYE5v
bmVgCisgICAgICAgICAgICBvciBzcGVjLm9yaWdpbiA9PSAibmFtZXNwYWNlIgorICAgICAgICAg
ICAgb3Igc3BlYy5vcmlnaW4gaXMgTm9uZQorICAgICAgICAgICAgIyB3ZSBjYW4gb25seSByZXdy
aXRlIHNvdXJjZSBmaWxlcworICAgICAgICAgICAgb3Igbm90IGlzaW5zdGFuY2Uoc3BlYy5sb2Fk
ZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKKyAgICAgICAgICAgICMg
aWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgY2FuJ3QgcmV3cml0ZSBpdAorICAgICAgICAg
ICAgb3Igbm90IG9zLnBhdGguZXhpc3RzKHNwZWMub3JpZ2luKQorICAgICAgICApOgorICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZuID0gb3MucGF0
aC5qb2luKHB0aCwgbmFtZS5ycGFydGl0aW9uKCIuIilbMl0gKyAiLnB5IikKKyAgICAgICAgICAg
IGZuID0gc3BlYy5vcmlnaW4KIAotICAgICAgICBmbl9weXBhdGggPSBweS5wYXRoLmxvY2FsKGZu
KQotICAgICAgICBpZiBub3Qgc2VsZi5fc2hvdWxkX3Jld3JpdGUobmFtZSwgZm5fcHlwYXRoLCBz
dGF0ZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfcmV3cml0ZShuYW1lLCBmbiwgc3Rh
dGUpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBzZWxmLl9yZXdyaXR0ZW5f
bmFtZXMuYWRkKG5hbWUpCisgICAgICAgIHJldHVybiBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21f
ZmlsZV9sb2NhdGlvbigKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBmbiwKKyAgICAg
ICAgICAgIGxvYWRlcj1zZWxmLAorICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlv
bnM9c3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucywKKyAgICAgICAgKQorCisgICAgZGVm
IGNyZWF0ZV9tb2R1bGUoCisgICAgICAgIHNlbGYsIHNwZWM6IGltcG9ydGxpYi5tYWNoaW5lcnku
TW9kdWxlU3BlYworICAgICkgLT4gT3B0aW9uYWxbdHlwZXMuTW9kdWxlVHlwZV06CisgICAgICAg
IHJldHVybiBOb25lICAjIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGZpbmUKKworICAgIGRlZiBleGVj
X21vZHVsZShzZWxmLCBtb2R1bGU6IHR5cGVzLk1vZHVsZVR5cGUpIC0+IE5vbmU6CisgICAgICAg
IGFzc2VydCBtb2R1bGUuX19zcGVjX18gaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IG1vZHVs
ZS5fX3NwZWNfXy5vcmlnaW4gaXMgbm90IE5vbmUKKyAgICAgICAgZm4gPSBQYXRoKG1vZHVsZS5f
X3NwZWNfXy5vcmlnaW4pCisgICAgICAgIHN0YXRlID0gc2VsZi5jb25maWcuX3N0b3JlW2Fzc2Vy
dHN0YXRlX2tleV0KKworICAgICAgICBzZWxmLl9yZXdyaXR0ZW5fbmFtZXMuYWRkKG1vZHVsZS5f
X25hbWVfXykKIAogICAgICAgICAjIFRoZSByZXF1ZXN0ZWQgbW9kdWxlIGxvb2tzIGxpa2UgYSB0
ZXN0IGZpbGUsIHNvIHJld3JpdGUgaXQuIFRoaXMgaXMKICAgICAgICAgIyB0aGUgbW9zdCBtYWdp
Y2FsIHBhcnQgb2YgdGhlIHByb2Nlc3M6IGxvYWQgdGhlIHNvdXJjZSwgcmV3cml0ZSB0aGUKQEAg
LTExMSw3MSArMTQ1LDEwOSBAQCBjbGFzcyBBc3NlcnRpb25SZXdyaXRpbmdIb29rKG9iamVjdCk6
CiAgICAgICAgICMgY2FjaGVkIHB5YyBpcyBhbHdheXMgYSBjb21wbGV0ZSwgdmFsaWQgcHljLiBP
cGVyYXRpb25zIG9uIGl0IG11c3QgYmUKICAgICAgICAgIyBhdG9taWMuIFBPU0lYJ3MgYXRvbWlj
IHJlbmFtZSBjb21lcyBpbiBoYW5keS4KICAgICAgICAgd3JpdGUgPSBub3Qgc3lzLmRvbnRfd3Jp
dGVfYnl0ZWNvZGUKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5qb2luKGZuX3B5cGF0aC5k
aXJuYW1lLCAiX19weWNhY2hlX18iKQorICAgICAgICBjYWNoZV9kaXIgPSBnZXRfY2FjaGVfZGly
KGZuKQogICAgICAgICBpZiB3cml0ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBvcy5ta2RpcihjYWNoZV9kaXIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAg
ICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0uZXJybm8KLSAgICAgICAgICAgICAgICBp
ZiBlID09IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgIyBFaXRoZXIgdGhlIF9f
cHljYWNoZV9fIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyAodGhlCi0gICAgICAgICAgICAgICAg
ICAgICMgY29tbW9uIGNhc2UpIG9yIGl0J3MgYmxvY2tlZCBieSBhIG5vbi1kaXIgbm9kZS4gSW4g
dGhlCi0gICAgICAgICAgICAgICAgICAgICMgbGF0dGVyIGNhc2UsIHdlJ2xsIGlnbm9yZSBpdCBp
biBfd3JpdGVfcHljLgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAg
ZWxpZiBlIGluIFtlcnJuby5FTk9FTlQsIGVycm5vLkVOT1RESVJdOgotICAgICAgICAgICAgICAg
ICAgICAjIE9uZSBvZiB0aGUgcGF0aCBjb21wb25lbnRzIHdhcyBub3QgYSBkaXJlY3RvcnksIGxp
a2VseQotICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugd2UncmUgaW4gYSB6aXAgZmlsZS4K
LSAgICAgICAgICAgICAgICAgICAgd3JpdGUgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsaWYg
ZSBpbiBbZXJybm8uRUFDQ0VTLCBlcnJuby5FUk9GUywgZXJybm8uRVBFUk1dOgotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZS50cmFjZSgicmVhZCBvbmx5IGRpcmVjdG9yeTogJXIiICUgZm5fcHlw
YXRoLmRpcm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlID0gRmFsc2UKLSAgICAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBjYWNoZV9u
YW1lID0gZm5fcHlwYXRoLmJhc2VuYW1lWzotM10gKyBQWUNfVEFJTAotICAgICAgICBweWMgPSBv
cy5wYXRoLmpvaW4oY2FjaGVfZGlyLCBjYWNoZV9uYW1lKQorICAgICAgICAgICAgb2sgPSB0cnlf
bWFrZWRpcnMoY2FjaGVfZGlyKQorICAgICAgICAgICAgaWYgbm90IG9rOgorICAgICAgICAgICAg
ICAgIHdyaXRlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZSgicmVhZCBvbmx5
IGRpcmVjdG9yeToge30iLmZvcm1hdChjYWNoZV9kaXIpKQorCisgICAgICAgIGNhY2hlX25hbWUg
PSBmbi5uYW1lWzotM10gKyBQWUNfVEFJTAorICAgICAgICBweWMgPSBjYWNoZV9kaXIgLyBjYWNo
ZV9uYW1lCiAgICAgICAgICMgTm90aWNlIHRoYXQgZXZlbiBpZiB3ZSdyZSBpbiBhIHJlYWQtb25s
eSBkaXJlY3RvcnksIEknbSBnb2luZwogICAgICAgICAjIHRvIGNoZWNrIGZvciBhIGNhY2hlZCBw
eWMuIFRoaXMgbWF5IG5vdCBiZSBvcHRpbWFsLi4uCi0gICAgICAgIGNvID0gX3JlYWRfcHljKGZu
X3B5cGF0aCwgcHljLCBzdGF0ZS50cmFjZSkKKyAgICAgICAgY28gPSBfcmVhZF9weWMoZm4sIHB5
Yywgc3RhdGUudHJhY2UpCiAgICAgICAgIGlmIGNvIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0
ZS50cmFjZSgicmV3cml0aW5nICVyIiAlIChmbiwpKQotICAgICAgICAgICAgc291cmNlX3N0YXQs
IGNvID0gX3Jld3JpdGVfdGVzdChzZWxmLmNvbmZpZywgZm5fcHlwYXRoKQotICAgICAgICAgICAg
aWYgY28gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGEgU3ludGF4RXJyb3Ig
aW4gdGhlIHRlc3QuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHN0
YXRlLnRyYWNlKCJyZXdyaXRpbmcgeyFyfSIuZm9ybWF0KGZuKSkKKyAgICAgICAgICAgIHNvdXJj
ZV9zdGF0LCBjbyA9IF9yZXdyaXRlX3Rlc3QoZm4sIHNlbGYuY29uZmlnKQogICAgICAgICAgICAg
aWYgd3JpdGU6Ci0gICAgICAgICAgICAgICAgX3dyaXRlX3B5YyhzdGF0ZSwgY28sIHNvdXJjZV9z
dGF0LCBweWMpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGluZ19weWMgPSBUcnVlCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBfd3JpdGVfcHljKHN0YXRlLCBj
bywgc291cmNlX3N0YXQsIHB5YykKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl93cml0aW5nX3B5YyA9IEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzdGF0ZS50cmFjZSgiZm91bmQgY2FjaGVkIHJld3JpdHRlbiBweWMgZm9yICVyIiAl
IChmbiwpKQotICAgICAgICBzZWxmLm1vZHVsZXNbbmFtZV0gPSBjbywgcHljCi0gICAgICAgIHJl
dHVybiBzZWxmCisgICAgICAgICAgICBzdGF0ZS50cmFjZSgiZm91bmQgY2FjaGVkIHJld3JpdHRl
biBweWMgZm9yIHt9Ii5mb3JtYXQoZm4pKQorICAgICAgICBleGVjKGNvLCBtb2R1bGUuX19kaWN0
X18pCisKKyAgICBkZWYgX2Vhcmx5X3Jld3JpdGVfYmFpbG91dChzZWxmLCBuYW1lOiBzdHIsIHN0
YXRlOiAiQXNzZXJ0aW9uU3RhdGUiKSAtPiBib29sOgorICAgICAgICAiIiJBIGZhc3Qgd2F5IHRv
IGdldCBvdXQgb2YgcmV3cml0aW5nIG1vZHVsZXMuCisKKyAgICAgICAgUHJvZmlsaW5nIGhhcyBz
aG93biB0aGF0IHRoZSBjYWxsIHRvIFBhdGhGaW5kZXIuZmluZF9zcGVjIChpbnNpZGUgb2YKKyAg
ICAgICAgdGhlIGZpbmRfc3BlYyBmcm9tIHRoaXMgY2xhc3MpIGlzIGEgbWFqb3Igc2xvd2Rvd24s
IHNvLCB0aGlzIG1ldGhvZAorICAgICAgICB0cmllcyB0byBmaWx0ZXIgd2hhdCB3ZSdyZSBzdXJl
IHdvbid0IGJlIHJld3JpdHRlbiBiZWZvcmUgZ2V0dGluZyB0bworICAgICAgICBpdC4KKyAgICAg
ICAgIiIiCisgICAgICAgIGlmIHNlbGYuc2Vzc2lvbiBpcyBub3QgTm9uZSBhbmQgbm90IHNlbGYu
X3Nlc3Npb25fcGF0aHNfY2hlY2tlZDoKKyAgICAgICAgICAgIHNlbGYuX3Nlc3Npb25fcGF0aHNf
Y2hlY2tlZCA9IFRydWUKKyAgICAgICAgICAgIGZvciBpbml0aWFsX3BhdGggaW4gc2VsZi5zZXNz
aW9uLl9pbml0aWFscGF0aHM6CisgICAgICAgICAgICAgICAgIyBNYWtlIHNvbWV0aGluZyBhcyBj
Oi9wcm9qZWN0cy9teV9wcm9qZWN0L3BhdGgucHkgLT4KKyAgICAgICAgICAgICAgICAjICAgICBb
J2M6JywgJ3Byb2plY3RzJywgJ215X3Byb2plY3QnLCAncGF0aC5weSddCisgICAgICAgICAgICAg
ICAgcGFydHMgPSBzdHIoaW5pdGlhbF9wYXRoKS5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAg
ICAgICAgICAjIGFkZCAncGF0aCcgdG8gYmFzZW5hbWVzIHRvIGJlIGNoZWNrZWQuCisgICAgICAg
ICAgICAgICAgc2VsZi5fYmFzZW5hbWVzX3RvX2NoZWNrX3Jld3JpdGUuYWRkKG9zLnBhdGguc3Bs
aXRleHQocGFydHNbLTFdKVswXSkKKworICAgICAgICAjIE5vdGU6IGNvbmZ0ZXN0IGFscmVhZHkg
YnkgZGVmYXVsdCBpbiBfYmFzZW5hbWVzX3RvX2NoZWNrX3Jld3JpdGUuCisgICAgICAgIHBhcnRz
ID0gbmFtZS5zcGxpdCgiLiIpCisgICAgICAgIGlmIHBhcnRzWy0xXSBpbiBzZWxmLl9iYXNlbmFt
ZXNfdG9fY2hlY2tfcmV3cml0ZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVm
IF9zaG91bGRfcmV3cml0ZShzZWxmLCBuYW1lLCBmbl9weXBhdGgsIHN0YXRlKToKKyAgICAgICAg
IyBGb3IgbWF0Y2hpbmcgdGhlIG5hbWUgaXQgbXVzdCBiZSBhcyBpZiBpdCB3YXMgYSBmaWxlbmFt
ZS4KKyAgICAgICAgcGF0aCA9IFB1cmVQYXRoKG9zLnBhdGguc2VwLmpvaW4ocGFydHMpICsgIi5w
eSIpCisKKyAgICAgICAgZm9yIHBhdCBpbiBzZWxmLmZucGF0czoKKyAgICAgICAgICAgICMgaWYg
dGhlIHBhdHRlcm4gY29udGFpbnMgc3ViZGlyZWN0b3JpZXMgKCJ0ZXN0cy8qKi5weSIgZm9yIGV4
YW1wbGUpIHdlIGNhbid0IGJhaWwgb3V0IGJhc2VkCisgICAgICAgICAgICAjIG9uIHRoZSBuYW1l
IGFsb25lIGJlY2F1c2Ugd2UgbmVlZCB0byBtYXRjaCBhZ2FpbnN0IHRoZSBmdWxsIHBhdGgKKyAg
ICAgICAgICAgIGlmIG9zLnBhdGguZGlybmFtZShwYXQpOgorICAgICAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICAgICAgaWYgZm5tYXRjaF9leChwYXQsIHBhdGgpOgorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIHNlbGYuX2lzX21hcmtlZF9mb3JfcmV3
cml0ZShuYW1lLCBzdGF0ZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBz
dGF0ZS50cmFjZSgiZWFybHkgc2tpcCBvZiByZXdyaXRpbmcgbW9kdWxlOiB7fSIuZm9ybWF0KG5h
bWUpKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9zaG91bGRfcmV3cml0ZShzZWxm
LCBuYW1lOiBzdHIsIGZuOiBzdHIsIHN0YXRlOiAiQXNzZXJ0aW9uU3RhdGUiKSAtPiBib29sOgog
ICAgICAgICAjIGFsd2F5cyByZXdyaXRlIGNvbmZ0ZXN0IGZpbGVzCi0gICAgICAgIGZuID0gc3Ry
KGZuX3B5cGF0aCkKLSAgICAgICAgaWYgZm5fcHlwYXRoLmJhc2VuYW1lID09ICJjb25mdGVzdC5w
eSI6Ci0gICAgICAgICAgICBzdGF0ZS50cmFjZSgicmV3cml0aW5nIGNvbmZ0ZXN0IGZpbGU6ICVy
IiAlIChmbiwpKQorICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKGZuKSA9PSAiY29uZnRlc3Qu
cHkiOgorICAgICAgICAgICAgc3RhdGUudHJhY2UoInJld3JpdGluZyBjb25mdGVzdCBmaWxlOiB7
IXJ9Ii5mb3JtYXQoZm4pKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICBpZiBz
ZWxmLnNlc3Npb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLnNlc3Npb24uaXNp
bml0cGF0aChmbik6Ci0gICAgICAgICAgICAgICAgc3RhdGUudHJhY2UoIm1hdGNoZWQgdGVzdCBm
aWxlICh3YXMgc3BlY2lmaWVkIG9uIGNtZGxpbmUpOiAlciIgJSAoZm4sKSkKKyAgICAgICAgICAg
IGlmIHNlbGYuc2Vzc2lvbi5pc2luaXRwYXRoKHB5LnBhdGgubG9jYWwoZm4pKToKKyAgICAgICAg
ICAgICAgICBzdGF0ZS50cmFjZSgKKyAgICAgICAgICAgICAgICAgICAgIm1hdGNoZWQgdGVzdCBm
aWxlICh3YXMgc3BlY2lmaWVkIG9uIGNtZGxpbmUpOiB7IXJ9Ii5mb3JtYXQoZm4pCisgICAgICAg
ICAgICAgICAgKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgIyBtb2R1
bGVzIG5vdCBwYXNzZWQgZXhwbGljaXRseSBvbiB0aGUgY29tbWFuZCBsaW5lIGFyZSBvbmx5CiAg
ICAgICAgICMgcmV3cml0dGVuIGlmIHRoZXkgbWF0Y2ggdGhlIG5hbWluZyBjb252ZW50aW9uIGZv
ciB0ZXN0IGZpbGVzCisgICAgICAgIGZuX3BhdGggPSBQdXJlUGF0aChmbikKICAgICAgICAgZm9y
IHBhdCBpbiBzZWxmLmZucGF0czoKLSAgICAgICAgICAgIGlmIGZuX3B5cGF0aC5mbm1hdGNoKHBh
dCk6Ci0gICAgICAgICAgICAgICAgc3RhdGUudHJhY2UoIm1hdGNoZWQgdGVzdCBmaWxlICVyIiAl
IChmbiwpKQorICAgICAgICAgICAgaWYgZm5tYXRjaF9leChwYXQsIGZuX3BhdGgpOgorICAgICAg
ICAgICAgICAgIHN0YXRlLnRyYWNlKCJtYXRjaGVkIHRlc3QgZmlsZSB7IXJ9Ii5mb3JtYXQoZm4p
KQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgZm9yIG1hcmtlZCBpbiBz
ZWxmLl9tdXN0X3Jld3JpdGU6Ci0gICAgICAgICAgICBpZiBuYW1lID09IG1hcmtlZCBvciBuYW1l
LnN0YXJ0c3dpdGgobWFya2VkICsgIi4iKToKLSAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZSgi
bWF0Y2hlZCBtYXJrZWQgZmlsZSAlciAoZnJvbSAlcikiICUgKG5hbWUsIG1hcmtlZCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lzX21hcmtlZF9m
b3JfcmV3cml0ZShuYW1lLCBzdGF0ZSkKIAotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBkZWYg
X2lzX21hcmtlZF9mb3JfcmV3cml0ZShzZWxmLCBuYW1lOiBzdHIsIHN0YXRlOiAiQXNzZXJ0aW9u
U3RhdGUiKSAtPiBib29sOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5f
bWFya2VkX2Zvcl9yZXdyaXRlX2NhY2hlW25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoK
KyAgICAgICAgICAgIGZvciBtYXJrZWQgaW4gc2VsZi5fbXVzdF9yZXdyaXRlOgorICAgICAgICAg
ICAgICAgIGlmIG5hbWUgPT0gbWFya2VkIG9yIG5hbWUuc3RhcnRzd2l0aChtYXJrZWQgKyAiLiIp
OgorICAgICAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJtYXRjaGVkIG1hcmtlZCBmaWxlIHshcn0gKGZyb20geyFyfSkiLmZvcm1hdChuYW1lLCBt
YXJrZWQpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
bWFya2VkX2Zvcl9yZXdyaXRlX2NhY2hlW25hbWVdID0gVHJ1ZQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBzZWxmLl9tYXJrZWRfZm9yX3Jld3JpdGVfY2Fj
aGVbbmFtZV0gPSBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgbWFy
a19yZXdyaXRlKHNlbGYsICpuYW1lcyk6CisgICAgZGVmIG1hcmtfcmV3cml0ZShzZWxmLCAqbmFt
ZXM6IHN0cikgLT4gTm9uZToKICAgICAgICAgIiIiTWFyayBpbXBvcnQgbmFtZXMgYXMgbmVlZGlu
ZyB0byBiZSByZXdyaXR0ZW4uCiAKICAgICAgICAgVGhlIG5hbWVkIG1vZHVsZSBvciBwYWNrYWdl
IGFzIHdlbGwgYXMgYW55IG5lc3RlZCBtb2R1bGVzIHdpbGwKQEAgLTE4NSwxOTAgKzI1NywxNDEg
QEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0aW5nSG9vayhvYmplY3QpOgogICAgICAgICAgICAgc2V0
KG5hbWVzKS5pbnRlcnNlY3Rpb24oc3lzLm1vZHVsZXMpLmRpZmZlcmVuY2Uoc2VsZi5fcmV3cml0
dGVuX25hbWVzKQogICAgICAgICApCiAgICAgICAgIGZvciBuYW1lIGluIGFscmVhZHlfaW1wb3J0
ZWQ6CisgICAgICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1tuYW1lXQogICAgICAgICAgICAgaWYg
bm90IEFzc2VydGlvblJld3JpdGVyLmlzX3Jld3JpdGVfZGlzYWJsZWQoCi0gICAgICAgICAgICAg
ICAgc3lzLm1vZHVsZXNbbmFtZV0uX19kb2NfXyBvciAiIgotICAgICAgICAgICAgKToKKyAgICAg
ICAgICAgICAgICBtb2QuX19kb2NfXyBvciAiIgorICAgICAgICAgICAgKSBhbmQgbm90IGlzaW5z
dGFuY2UobW9kLl9fbG9hZGVyX18sIHR5cGUoc2VsZikpOgogICAgICAgICAgICAgICAgIHNlbGYu
X3dhcm5fYWxyZWFkeV9pbXBvcnRlZChuYW1lKQogICAgICAgICBzZWxmLl9tdXN0X3Jld3JpdGUu
dXBkYXRlKG5hbWVzKQorICAgICAgICBzZWxmLl9tYXJrZWRfZm9yX3Jld3JpdGVfY2FjaGUuY2xl
YXIoKQogCi0gICAgZGVmIF93YXJuX2FscmVhZHlfaW1wb3J0ZWQoc2VsZiwgbmFtZSk6Ci0gICAg
ICAgIHNlbGYuY29uZmlnLndhcm4oCi0gICAgICAgICAgICAiUDEiLCAiTW9kdWxlIGFscmVhZHkg
aW1wb3J0ZWQgc28gY2Fubm90IGJlIHJld3JpdHRlbjogJXMiICUgbmFtZQotICAgICAgICApCi0K
LSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbmFtZSk6Ci0gICAgICAgICMgSWYgdGhlcmUgaXMg
YW4gZXhpc3RpbmcgbW9kdWxlIG9iamVjdCBuYW1lZCAnZnVsbG5hbWUnIGluCi0gICAgICAgICMg
c3lzLm1vZHVsZXMsIHRoZSBsb2FkZXIgbXVzdCB1c2UgdGhhdCBleGlzdGluZyBtb2R1bGUuIChP
dGhlcndpc2UsCi0gICAgICAgICMgdGhlIHJlbG9hZCgpIGJ1aWx0aW4gd2lsbCBub3Qgd29yayBj
b3JyZWN0bHkuKQotICAgICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAg
cmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCi0KLSAgICAgICAgY28sIHB5YyA9IHNlbGYubW9kdWxl
cy5wb3AobmFtZSkKLSAgICAgICAgIyBJIHdpc2ggSSBjb3VsZCBqdXN0IGNhbGwgaW1wLmxvYWRf
Y29tcGlsZWQgaGVyZSwgYnV0IF9fZmlsZV9fIGhhcyB0bwotICAgICAgICAjIGJlIHNldCBwcm9w
ZXJseS4gSW4gUHl0aG9uIDMuMissIHRoaXMgYWxsIHdvdWxkIGJlIGhhbmRsZWQgY29ycmVjdGx5
Ci0gICAgICAgICMgYnkgbG9hZF9jb21waWxlZC4KLSAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNb
bmFtZV0gPSBpbXAubmV3X21vZHVsZShuYW1lKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBt
b2QuX19maWxlX18gPSBjby5jb19maWxlbmFtZQotICAgICAgICAgICAgIyBOb3JtYWxseSwgdGhp
cyBhdHRyaWJ1dGUgaXMgMy4yKy4KLSAgICAgICAgICAgIG1vZC5fX2NhY2hlZF9fID0gcHljCi0g
ICAgICAgICAgICBtb2QuX19sb2FkZXJfXyA9IHNlbGYKLSAgICAgICAgICAgIHB5LmJ1aWx0aW4u
ZXhlY18oY28sIG1vZC5fX2RpY3RfXykKLSAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAg
ICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9k
dWxlc1tuYW1lXQotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVz
W25hbWVdCi0KLSAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBuYW1lKToKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgZmQsIGZuLCBkZXNjID0gaW1wLmZpbmRfbW9kdWxlKG5hbWUpCi0gICAgICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBp
ZiBmZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZkLmNsb3NlKCkKLSAgICAgICAgdHAgPSBk
ZXNjWzJdCi0gICAgICAgIHJldHVybiB0cCA9PSBpbXAuUEtHX0RJUkVDVE9SWQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIF9yZWdpc3Rlcl93aXRoX3BrZ19yZXNvdXJjZXMoY2xzKToKLSAg
ICAgICAgIiIiCi0gICAgICAgIEVuc3VyZSBwYWNrYWdlIHJlc291cmNlcyBjYW4gYmUgbG9hZGVk
IGZyb20gdGhpcyBsb2FkZXIuIE1heSBiZSBjYWxsZWQKLSAgICAgICAgbXVsdGlwbGUgdGltZXMs
IGFzIHRoZSBvcGVyYXRpb24gaXMgaWRlbXBvdGVudC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIGltcG9ydCBwa2dfcmVzb3VyY2VzCi0KLSAgICAgICAgICAgICMgYWNj
ZXNzIGFuIGF0dHJpYnV0ZSBpbiBjYXNlIGEgZGVmZXJyZWQgaW1wb3J0ZXIgaXMgcHJlc2VudAot
ICAgICAgICAgICAgcGtnX3Jlc291cmNlcy5fX25hbWVfXwotICAgICAgICBleGNlcHQgSW1wb3J0
RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICBkZWYgX3dhcm5fYWxyZWFkeV9pbXBvcnRl
ZChzZWxmLCBuYW1lOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGZyb20gX3B5dGVzdC53YXJuaW5n
X3R5cGVzIGltcG9ydCBQeXRlc3RBc3NlcnRSZXdyaXRlV2FybmluZwogCi0gICAgICAgICMgU2lu
Y2UgcHl0ZXN0IHRlc3RzIGFyZSBhbHdheXMgbG9jYXRlZCBpbiB0aGUgZmlsZSBzeXN0ZW0sIHRo
ZQotICAgICAgICAjICBEZWZhdWx0UHJvdmlkZXIgaXMgYXBwcm9wcmlhdGUuCi0gICAgICAgIHBr
Z19yZXNvdXJjZXMucmVnaXN0ZXJfbG9hZGVyX3R5cGUoY2xzLCBwa2dfcmVzb3VyY2VzLkRlZmF1
bHRQcm92aWRlcikKKyAgICAgICAgc2VsZi5jb25maWcuaXNzdWVfY29uZmlnX3RpbWVfd2Fybmlu
ZygKKyAgICAgICAgICAgIFB5dGVzdEFzc2VydFJld3JpdGVXYXJuaW5nKAorICAgICAgICAgICAg
ICAgICJNb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBzbyBjYW5ub3QgYmUgcmV3cml0dGVuOiAlcyIg
JSBuYW1lCisgICAgICAgICAgICApLAorICAgICAgICAgICAgc3RhY2tsZXZlbD01LAorICAgICAg
ICApCiAKLSAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aG5hbWUpOgotICAgICAgICAiIiJPcHRp
b25hbCBQRVAzMDIgZ2V0X2RhdGEgQVBJLgotICAgICAgICAiIiIKKyAgICBkZWYgZ2V0X2RhdGEo
c2VsZiwgcGF0aG5hbWU6IFVuaW9uW3N0ciwgYnl0ZXNdKSAtPiBieXRlczoKKyAgICAgICAgIiIi
T3B0aW9uYWwgUEVQMzAyIGdldF9kYXRhIEFQSS4iIiIKICAgICAgICAgd2l0aCBvcGVuKHBhdGhu
YW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCiAKIAotZGVmIF93
cml0ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3RhdCwgcHljKToKK2RlZiBfd3JpdGVfcHljX2Zw
KAorICAgIGZwOiBJT1tieXRlc10sIHNvdXJjZV9zdGF0OiBvcy5zdGF0X3Jlc3VsdCwgY286IHR5
cGVzLkNvZGVUeXBlCispIC0+IE5vbmU6CiAgICAgIyBUZWNobmljYWxseSwgd2UgZG9uJ3QgaGF2
ZSB0byBoYXZlIHRoZSBzYW1lIHB5YyBmb3JtYXQgYXMKICAgICAjIChDKVB5dGhvbiwgc2luY2Ug
dGhlc2UgInB5Y3MiIHNob3VsZCBuZXZlciBiZSBzZWVuIGJ5IGJ1aWx0aW4KLSAgICAjIGltcG9y
dC4gSG93ZXZlciwgdGhlcmUncyBsaXR0bGUgcmVhc29uIGRldmlhdGUsIGFuZCBJIGhvcGUKLSAg
ICAjIHNvbWV0aW1lIHRvIGJlIGFibGUgdG8gdXNlIGltcC5sb2FkX2NvbXBpbGVkIHRvIGxvYWQg
dGhlbS4gKFNlZQotICAgICMgdGhlIGNvbW1lbnQgaW4gbG9hZF9tb2R1bGUgYWJvdmUuKQotICAg
IHRyeToKLSAgICAgICAgd2l0aCBhdG9taWN3cml0ZXMuYXRvbWljX3dyaXRlKHB5YywgbW9kZT0i
d2IiLCBvdmVyd3JpdGU9VHJ1ZSkgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShpbXAuZ2V0
X21hZ2ljKCkpCi0gICAgICAgICAgICBtdGltZSA9IGludChzb3VyY2Vfc3RhdC5tdGltZSkKLSAg
ICAgICAgICAgIHNpemUgPSBzb3VyY2Vfc3RhdC5zaXplICYgMHhGRkZGRkZGRgotICAgICAgICAg
ICAgZnAud3JpdGUoc3RydWN0LnBhY2soIjxsbCIsIG10aW1lLCBzaXplKSkKLSAgICAgICAgICAg
IGZwLndyaXRlKG1hcnNoYWwuZHVtcHMoY28pKQotICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9y
IGFzIGU6Ci0gICAgICAgIHN0YXRlLnRyYWNlKCJlcnJvciB3cml0aW5nIHB5YyBmaWxlIGF0ICVz
OiBlcnJubz0lcyIgJSAocHljLCBlLmVycm5vKSkKLSAgICAgICAgIyB3ZSBpZ25vcmUgYW55IGZh
aWx1cmUgdG8gd3JpdGUgdGhlIGNhY2hlIGZpbGUKLSAgICAgICAgIyB0aGVyZSBhcmUgbWFueSBy
ZWFzb25zLCBwZXJtaXNzaW9uLWRlbmllZCwgX19weWNhY2hlX18gYmVpbmcgYQotICAgICAgICAj
IGZpbGUgZXRjLgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCisgICAg
IyBpbXBvcnQuIEhvd2V2ZXIsIHRoZXJlJ3MgbGl0dGxlIHJlYXNvbiBkZXZpYXRlLgorICAgIGZw
LndyaXRlKGltcG9ydGxpYi51dGlsLk1BR0lDX05VTUJFUikKKyAgICAjIGFzIG9mIG5vdywgYnl0
ZWNvZGUgaGVhZGVyIGV4cGVjdHMgMzItYml0IG51bWJlcnMgZm9yIHNpemUgYW5kIG10aW1lICgj
NDkwMykKKyAgICBtdGltZSA9IGludChzb3VyY2Vfc3RhdC5zdF9tdGltZSkgJiAweEZGRkZGRkZG
CisgICAgc2l6ZSA9IHNvdXJjZV9zdGF0LnN0X3NpemUgJiAweEZGRkZGRkZGCisgICAgIyAiPExM
IiBzdGFuZHMgZm9yIDIgdW5zaWduZWQgbG9uZ3MsIGxpdHRsZS1lbmRpbmcKKyAgICBmcC53cml0
ZShzdHJ1Y3QucGFjaygiPExMIiwgbXRpbWUsIHNpemUpKQorICAgIGZwLndyaXRlKG1hcnNoYWwu
ZHVtcHMoY28pKQorCisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgIGZyb20gYXRv
bWljd3JpdGVzIGltcG9ydCBhdG9taWNfd3JpdGUKKworICAgIGRlZiBfd3JpdGVfcHljKAorICAg
ICAgICBzdGF0ZTogIkFzc2VydGlvblN0YXRlIiwKKyAgICAgICAgY286IHR5cGVzLkNvZGVUeXBl
LAorICAgICAgICBzb3VyY2Vfc3RhdDogb3Muc3RhdF9yZXN1bHQsCisgICAgICAgIHB5YzogUGF0
aCwKKyAgICApIC0+IGJvb2w6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggYXRvbWlj
X3dyaXRlKGZzcGF0aChweWMpLCBtb2RlPSJ3YiIsIG92ZXJ3cml0ZT1UcnVlKSBhcyBmcDoKKyAg
ICAgICAgICAgICAgICBfd3JpdGVfcHljX2ZwKGZwLCBzb3VyY2Vfc3RhdCwgY28pCisgICAgICAg
IGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBzdGF0ZS50cmFjZSgiZXJyb3Igd3Jp
dGluZyBweWMgZmlsZSBhdCB7fToge30iLmZvcm1hdChweWMsIGUpKQorICAgICAgICAgICAgIyB3
ZSBpZ25vcmUgYW55IGZhaWx1cmUgdG8gd3JpdGUgdGhlIGNhY2hlIGZpbGUKKyAgICAgICAgICAg
ICMgdGhlcmUgYXJlIG1hbnkgcmVhc29ucywgcGVybWlzc2lvbi1kZW5pZWQsIHB5Y2FjaGUgZGly
IGJlaW5nIGEKKyAgICAgICAgICAgICMgZmlsZSBldGMuCisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgcmV0dXJuIFRydWUKIAotUk4gPSAiXHJcbiIuZW5jb2RlKCJ1dGYtOCIpCi1O
ID0gIlxuIi5lbmNvZGUoInV0Zi04IikKIAotY29va2llX3JlID0gcmUuY29tcGlsZShyIl5bIFx0
XGZdKiMuKmNvZGluZ1s6PV1bIFx0XSpbLVx3Ll0rIikKLUJPTV9VVEY4ID0gIlx4ZWZceGJiXHhi
ZiIKK2Vsc2U6CiAKKyAgICBkZWYgX3dyaXRlX3B5YygKKyAgICAgICAgc3RhdGU6ICJBc3NlcnRp
b25TdGF0ZSIsCisgICAgICAgIGNvOiB0eXBlcy5Db2RlVHlwZSwKKyAgICAgICAgc291cmNlX3N0
YXQ6IG9zLnN0YXRfcmVzdWx0LAorICAgICAgICBweWM6IFBhdGgsCisgICAgKSAtPiBib29sOgor
ICAgICAgICBwcm9jX3B5YyA9ICJ7fS57fSIuZm9ybWF0KHB5Yywgb3MuZ2V0cGlkKCkpCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGZwID0gb3Blbihwcm9jX3B5YywgIndiIikKKyAgICAgICAg
ZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHN0YXRlLnRyYWNlKAorICAgICAgICAg
ICAgICAgICJlcnJvciB3cml0aW5nIHB5YyBmaWxlIGF0IHt9OiBlcnJubz17fSIuZm9ybWF0KHBy
b2NfcHljLCBlLmVycm5vKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CiAKLWRlZiBfcmV3cml0ZV90ZXN0KGNvbmZpZywgZm4pOgotICAgICIiIlRyeSB0byByZWFkIGFu
ZCByZXdyaXRlICpmbiogYW5kIHJldHVybiB0aGUgY29kZSBvYmplY3QuIiIiCi0gICAgc3RhdGUg
PSBjb25maWcuX2Fzc2VydHN0YXRlCi0gICAgdHJ5OgotICAgICAgICBzdGF0ID0gZm4uc3RhdCgp
Ci0gICAgICAgIHNvdXJjZSA9IGZuLnJlYWQoInJiIikKLSAgICBleGNlcHQgRW52aXJvbm1lbnRF
cnJvcjoKLSAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLSAgICBpZiBBU0NJSV9JU19ERUZBVUxU
X0VOQ09ESU5HOgotICAgICAgICAjIEFTQ0lJIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nIGluIFB5
dGhvbiAyLiBXaXRob3V0IGEgY29kaW5nCi0gICAgICAgICMgZGVjbGFyYXRpb24sIFB5dGhvbiAy
IHdpbGwgY29tcGxhaW4gYWJvdXQgYW55IGJ5dGVzIGluIHRoZSBmaWxlCi0gICAgICAgICMgb3V0
c2lkZSB0aGUgQVNDSUkgcmFuZ2UuIFNhZGx5LCB0aGlzIGJlaGF2aW9yIGRvZXMgbm90IGV4dGVu
ZCB0bwotICAgICAgICAjIGNvbXBpbGUoKSBvciBhc3QucGFyc2UoKSwgd2hpY2ggcHJlZmVyIHRv
IGludGVycHJldCB0aGUgYnl0ZXMgYXMKLSAgICAgICAgIyBsYXRpbi0xLiAoQXQgbGVhc3QgdGhl
eSBwcm9wZXJseSBoYW5kbGUgZXhwbGljaXQgY29kaW5nIGNvb2tpZXMuKSBUbwotICAgICAgICAj
IHByZXNlcnZlIHRoaXMgZXJyb3IgYmVoYXZpb3IsIHdlIGNvdWxkIGZvcmNlIGFzdC5wYXJzZSgp
IHRvIHVzZSBBU0NJSQotICAgICAgICAjIGFzIHRoZSBlbmNvZGluZyBieSBpbnNlcnRpbmcgYSBj
b2RpbmcgY29va2llLiBVbmZvcnR1bmF0ZWx5LCB0aGF0Ci0gICAgICAgICMgbWVzc2VzIHVwIGxp
bmUgbnVtYmVycy4gVGh1cywgd2UgaGF2ZSB0byBjaGVjayBvdXJzZWx2ZXMgaWYgYW55dGhpbmcK
LSAgICAgICAgIyBpcyBvdXRzaWRlIHRoZSBBU0NJSSByYW5nZSBpbiB0aGUgY2FzZSBubyBlbmNv
ZGluZyBpcyBleHBsaWNpdGx5Ci0gICAgICAgICMgZGVjbGFyZWQuIEZvciBtb3JlIGNvbnRleHQs
IHNlZSBpc3N1ZSAjMjY5LiBZYXkgZm9yIFB5dGhvbiAzIHdoaWNoCi0gICAgICAgICMgZ2V0cyB0
aGlzIHJpZ2h0LgotICAgICAgICBlbmQxID0gc291cmNlLmZpbmQoIlxuIikKLSAgICAgICAgZW5k
MiA9IHNvdXJjZS5maW5kKCJcbiIsIGVuZDEgKyAxKQotICAgICAgICBpZiAoCi0gICAgICAgICAg
ICBub3Qgc291cmNlLnN0YXJ0c3dpdGgoQk9NX1VURjgpCi0gICAgICAgICAgICBhbmQgY29va2ll
X3JlLm1hdGNoKHNvdXJjZVswOmVuZDFdKSBpcyBOb25lCi0gICAgICAgICAgICBhbmQgY29va2ll
X3JlLm1hdGNoKHNvdXJjZVtlbmQxICsgMTplbmQyXSkgaXMgTm9uZQotICAgICAgICApOgotICAg
ICAgICAgICAgaWYgaGFzYXR0cihzdGF0ZSwgIl9pbmRlY29kZSIpOgotICAgICAgICAgICAgICAg
ICMgZW5jb2RpbmdzIGltcG9ydGVkIHVzIGFnYWluLCBzbyBkb24ndCByZXdyaXRlLgotICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCi0gICAgICAgICAgICBzdGF0ZS5faW5kZWNvZGUg
PSBUcnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UuZGVjb2RlKCJhc2NpaSIpCi0gICAgICAgICAgICAgICAgZXhjZXB0
IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBMZXQgaXQgZmFpbCBp
biByZWFsIGltcG9ydC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLSAg
ICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIHN0YXRlLl9pbmRlY29kZQot
ICAgIHRyeToKLSAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShzb3VyY2UpCi0gICAgZXhjZXB0IFN5
bnRheEVycm9yOgotICAgICAgICAjIExldCB0aGlzIHBvcCB1cCBhZ2FpbiBpbiB0aGUgcmVhbCBp
bXBvcnQuCi0gICAgICAgIHN0YXRlLnRyYWNlKCJmYWlsZWQgdG8gcGFyc2U6ICVyIiAlIChmbiwp
KQotICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgIHJld3JpdGVfYXNzZXJ0cyh0cmVlLCBm
biwgY29uZmlnKQotICAgIHRyeToKLSAgICAgICAgY28gPSBjb21waWxlKHRyZWUsIGZuLnN0cnBh
dGgsICJleGVjIiwgZG9udF9pbmhlcml0PVRydWUpCi0gICAgZXhjZXB0IFN5bnRheEVycm9yOgot
ICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0aGlzIGVycm9yIGlzIGZyb20gc29tZSBidWcg
aW4gdGhlCi0gICAgICAgICMgYXNzZXJ0aW9uIHJld3JpdGluZywgYnV0IEkgZG9uJ3Qga25vdyBv
ZiBhIGZhc3Qgd2F5IHRvIHRlbGwuCi0gICAgICAgIHN0YXRlLnRyYWNlKCJmYWlsZWQgdG8gY29t
cGlsZTogJXIiICUgKGZuLCkpCi0gICAgICAgIHJldHVybiBOb25lLCBOb25lCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIF93cml0ZV9weWNfZnAoZnAsIHNvdXJjZV9zdGF0LCBjbykKKyAgICAg
ICAgICAgIG9zLnJlbmFtZShwcm9jX3B5YywgZnNwYXRoKHB5YykpCisgICAgICAgIGV4Y2VwdCBP
U0Vycm9yIGFzIGU6CisgICAgICAgICAgICBzdGF0ZS50cmFjZSgiZXJyb3Igd3JpdGluZyBweWMg
ZmlsZSBhdCB7fToge30iLmZvcm1hdChweWMsIGUpKQorICAgICAgICAgICAgIyB3ZSBpZ25vcmUg
YW55IGZhaWx1cmUgdG8gd3JpdGUgdGhlIGNhY2hlIGZpbGUKKyAgICAgICAgICAgICMgdGhlcmUg
YXJlIG1hbnkgcmVhc29ucywgcGVybWlzc2lvbi1kZW5pZWQsIHB5Y2FjaGUgZGlyIGJlaW5nIGEK
KyAgICAgICAgICAgICMgZmlsZSBldGMuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgZmluYWxseToKKyAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIFRydWUK
KworCitkZWYgX3Jld3JpdGVfdGVzdChmbjogUGF0aCwgY29uZmlnOiBDb25maWcpIC0+IFR1cGxl
W29zLnN0YXRfcmVzdWx0LCB0eXBlcy5Db2RlVHlwZV06CisgICAgIiIiUmVhZCBhbmQgcmV3cml0
ZSAqZm4qIGFuZCByZXR1cm4gdGhlIGNvZGUgb2JqZWN0LiIiIgorICAgIGZuXyA9IGZzcGF0aChm
bikKKyAgICBzdGF0ID0gb3Muc3RhdChmbl8pCisgICAgd2l0aCBvcGVuKGZuXywgInJiIikgYXMg
ZjoKKyAgICAgICAgc291cmNlID0gZi5yZWFkKCkKKyAgICB0cmVlID0gYXN0LnBhcnNlKHNvdXJj
ZSwgZmlsZW5hbWU9Zm5fKQorICAgIHJld3JpdGVfYXNzZXJ0cyh0cmVlLCBzb3VyY2UsIGZuXywg
Y29uZmlnKQorICAgIGNvID0gY29tcGlsZSh0cmVlLCBmbl8sICJleGVjIiwgZG9udF9pbmhlcml0
PVRydWUpCiAgICAgcmV0dXJuIHN0YXQsIGNvCiAKIAotZGVmIF9yZWFkX3B5Yyhzb3VyY2UsIHB5
YywgdHJhY2U9bGFtYmRhIHg6IE5vbmUpOgorZGVmIF9yZWFkX3B5YygKKyAgICBzb3VyY2U6IFBh
dGgsIHB5YzogUGF0aCwgdHJhY2U6IENhbGxhYmxlW1tzdHJdLCBOb25lXSA9IGxhbWJkYSB4OiBO
b25lCispIC0+IE9wdGlvbmFsW3R5cGVzLkNvZGVUeXBlXToKICAgICAiIiJQb3NzaWJseSByZWFk
IGEgcHl0ZXN0IHB5YyBjb250YWluaW5nIHJld3JpdHRlbiBjb2RlLgogCiAgICAgUmV0dXJuIHJl
d3JpdHRlbiBjb2RlIGlmIHN1Y2Nlc3NmdWwgb3IgTm9uZSBpZiBub3QuCiAgICAgIiIiCiAgICAg
dHJ5OgotICAgICAgICBmcCA9IG9wZW4ocHljLCAicmIiKQotICAgIGV4Y2VwdCBJT0Vycm9yOgor
ICAgICAgICBmcCA9IG9wZW4oZnNwYXRoKHB5YyksICJyYiIpCisgICAgZXhjZXB0IE9TRXJyb3I6
CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgd2l0aCBmcDoKICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgbXRpbWUgPSBpbnQoc291cmNlLm10aW1lKCkpCi0gICAgICAgICAgICBzaXplID0gc291
cmNlLnNpemUoKQorICAgICAgICAgICAgc3RhdF9yZXN1bHQgPSBvcy5zdGF0KGZzcGF0aChzb3Vy
Y2UpKQorICAgICAgICAgICAgbXRpbWUgPSBpbnQoc3RhdF9yZXN1bHQuc3RfbXRpbWUpCisgICAg
ICAgICAgICBzaXplID0gc3RhdF9yZXN1bHQuc3Rfc2l6ZQogICAgICAgICAgICAgZGF0YSA9IGZw
LnJlYWQoMTIpCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6Ci0gICAgICAg
ICAgICB0cmFjZSgiX3JlYWRfcHljKCVzKTogRW52aXJvbm1lbnRFcnJvciAlcyIgJSAoc291cmNl
LCBlKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRyYWNlKCJf
cmVhZF9weWMoe30pOiBPU0Vycm9yIHt9Ii5mb3JtYXQoc291cmNlLCBlKSkKICAgICAgICAgICAg
IHJldHVybiBOb25lCiAgICAgICAgICMgQ2hlY2sgZm9yIGludmFsaWQgb3Igb3V0IG9mIGRhdGUg
cHljIGZpbGUuCiAgICAgICAgIGlmICgKICAgICAgICAgICAgIGxlbihkYXRhKSAhPSAxMgotICAg
ICAgICAgICAgb3IgZGF0YVs6NF0gIT0gaW1wLmdldF9tYWdpYygpCi0gICAgICAgICAgICBvciBz
dHJ1Y3QudW5wYWNrKCI8bGwiLCBkYXRhWzQ6XSkgIT0gKG10aW1lLCBzaXplKQorICAgICAgICAg
ICAgb3IgZGF0YVs6NF0gIT0gaW1wb3J0bGliLnV0aWwuTUFHSUNfTlVNQkVSCisgICAgICAgICAg
ICBvciBzdHJ1Y3QudW5wYWNrKCI8TEwiLCBkYXRhWzQ6XSkgIT0gKG10aW1lICYgMHhGRkZGRkZG
Riwgc2l6ZSAmIDB4RkZGRkZGRkYpCiAgICAgICAgICk6CiAgICAgICAgICAgICB0cmFjZSgiX3Jl
YWRfcHljKCVzKTogaW52YWxpZCBvciBvdXQgb2YgZGF0ZSBweWMiICUgc291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY28gPSBtYXJzaGFs
LmxvYWQoZnApCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHRy
YWNlKCJfcmVhZF9weWMoJXMpOiBtYXJzaGFsLmxvYWQgZXJyb3IgJXMiICUgKHNvdXJjZSwgZSkp
CisgICAgICAgICAgICB0cmFjZSgiX3JlYWRfcHljKHt9KTogbWFyc2hhbC5sb2FkIGVycm9yIHt9
Ii5mb3JtYXQoc291cmNlLCBlKSkKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKGNvLCB0eXBlcy5Db2RlVHlwZSk6CiAgICAgICAgICAgICB0cmFjZSgi
X3JlYWRfcHljKCVzKTogbm90IGEgY29kZSBvYmplY3QiICUgc291cmNlKQpAQCAtMzc2LDEzICsz
OTksMTggQEAgZGVmIF9yZWFkX3B5Yyhzb3VyY2UsIHB5YywgdHJhY2U9bGFtYmRhIHg6IE5vbmUp
OgogICAgICAgICByZXR1cm4gY28KIAogCi1kZWYgcmV3cml0ZV9hc3NlcnRzKG1vZCwgbW9kdWxl
X3BhdGg9Tm9uZSwgY29uZmlnPU5vbmUpOgorZGVmIHJld3JpdGVfYXNzZXJ0cygKKyAgICBtb2Q6
IGFzdC5Nb2R1bGUsCisgICAgc291cmNlOiBieXRlcywKKyAgICBtb2R1bGVfcGF0aDogT3B0aW9u
YWxbc3RyXSA9IE5vbmUsCisgICAgY29uZmlnOiBPcHRpb25hbFtDb25maWddID0gTm9uZSwKKykg
LT4gTm9uZToKICAgICAiIiJSZXdyaXRlIHRoZSBhc3NlcnQgc3RhdGVtZW50cyBpbiBtb2QuIiIi
Ci0gICAgQXNzZXJ0aW9uUmV3cml0ZXIobW9kdWxlX3BhdGgsIGNvbmZpZykucnVuKG1vZCkKKyAg
ICBBc3NlcnRpb25SZXdyaXRlcihtb2R1bGVfcGF0aCwgY29uZmlnLCBzb3VyY2UpLnJ1bihtb2Qp
CiAKIAotZGVmIF9zYWZlcmVwcihvYmopOgotICAgICIiIkdldCBhIHNhZmUgcmVwciBvZiBhbiBv
YmplY3QgZm9yIGFzc2VydGlvbiBlcnJvciBtZXNzYWdlcy4KK2RlZiBfc2FmZXJlcHIob2JqOiBv
YmplY3QpIC0+IHN0cjoKKyAgICByIiIiR2V0IGEgc2FmZSByZXByIG9mIGFuIG9iamVjdCBmb3Ig
YXNzZXJ0aW9uIGVycm9yIG1lc3NhZ2VzLgogCiAgICAgVGhlIGFzc2VydGlvbiBmb3JtYXR0aW5n
ICh1dGlsLmZvcm1hdF9leHBsYW5hdGlvbigpKSByZXF1aXJlcwogICAgIG5ld2xpbmVzIHRvIGJl
IGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYSBzcGVjaWFsIGNoYXJhY3RlciBmb3IgaXQuCkBAIC0z
OTAsNjEgKzQxOCw1MyBAQCBkZWYgX3NhZmVyZXByKG9iaik6CiAgICAgY3VzdG9tIHJlcHIgaXQg
aXMgcG9zc2libGUgdG8gY29udGFpbiBvbmUgb2YgdGhlIHNwZWNpYWwgZXNjYXBlCiAgICAgc2Vx
dWVuY2VzLCBlc3BlY2lhbGx5ICdcbnsnIGFuZCAnXG59JyBhcmUgbGlrZWx5IHRvIGJlIHByZXNl
bnQgaW4KICAgICBKU09OIHJlcHJzLgotCiAgICAgIiIiCi0gICAgcmVwciA9IHB5LmlvLnNhZmVy
ZXByKG9iaikKLSAgICBpZiBpc2luc3RhbmNlKHJlcHIsIHNpeC50ZXh0X3R5cGUpOgotICAgICAg
ICB0ID0gc2l4LnRleHRfdHlwZQotICAgIGVsc2U6Ci0gICAgICAgIHQgPSBzaXguYmluYXJ5X3R5
cGUKLSAgICByZXR1cm4gcmVwci5yZXBsYWNlKHQoIlxuIiksIHQoIlxcbiIpKQotCi0KLWZyb20g
X3B5dGVzdC5hc3NlcnRpb24udXRpbCBpbXBvcnQgZm9ybWF0X2V4cGxhbmF0aW9uIGFzIF9mb3Jt
YXRfZXhwbGFuYXRpb24gICMgbm9xYQorICAgIHJldHVybiBzYWZlcmVwcihvYmopLnJlcGxhY2Uo
IlxuIiwgIlxcbiIpCiAKIAotZGVmIF9mb3JtYXRfYXNzZXJ0bXNnKG9iaik6Ci0gICAgIiIiRm9y
bWF0IHRoZSBjdXN0b20gYXNzZXJ0aW9uIG1lc3NhZ2UgZ2l2ZW4uCitkZWYgX2Zvcm1hdF9hc3Nl
cnRtc2cob2JqOiBvYmplY3QpIC0+IHN0cjoKKyAgICByIiIiRm9ybWF0IHRoZSBjdXN0b20gYXNz
ZXJ0aW9uIG1lc3NhZ2UgZ2l2ZW4uCiAKICAgICBGb3Igc3RyaW5ncyB0aGlzIHNpbXBseSByZXBs
YWNlcyBuZXdsaW5lcyB3aXRoICdcbn4nIHNvIHRoYXQKICAgICB1dGlsLmZvcm1hdF9leHBsYW5h
dGlvbigpIHdpbGwgcHJlc2VydmUgdGhlbSBpbnN0ZWFkIG9mIGVzY2FwaW5nCi0gICAgbmV3bGlu
ZXMuICBGb3Igb3RoZXIgb2JqZWN0cyBweS5pby5zYWZlcmVwcigpIGlzIHVzZWQgZmlyc3QuCi0K
KyAgICBuZXdsaW5lcy4gIEZvciBvdGhlciBvYmplY3RzIHNhZmVyZXByKCkgaXMgdXNlZCBmaXJz
dC4KICAgICAiIiIKICAgICAjIHJlcHJsaWIgYXBwZWFycyB0byBoYXZlIGEgYnVnIHdoaWNoIG1l
YW5zIHRoYXQgaWYgYSBzdHJpbmcKICAgICAjIGNvbnRhaW5zIGEgbmV3bGluZSBpdCBnZXRzIGVz
Y2FwZWQsIGhvd2V2ZXIgaWYgYW4gb2JqZWN0IGhhcyBhCiAgICAgIyAuX19yZXByX18oKSB3aGlj
aCBjb250YWlucyBuZXdsaW5lcyBpdCBkb2VzIG5vdCBnZXQgZXNjYXBlZC4KICAgICAjIEhvd2V2
ZXIgaW4gZWl0aGVyIGNhc2Ugd2Ugd2FudCB0byBwcmVzZXJ2ZSB0aGUgbmV3bGluZS4KLSAgICBp
ZiBpc2luc3RhbmNlKG9iaiwgc2l4LnRleHRfdHlwZSkgb3IgaXNpbnN0YW5jZShvYmosIHNpeC5i
aW5hcnlfdHlwZSk6Ci0gICAgICAgIHMgPSBvYmoKLSAgICAgICAgaXNfcmVwciA9IEZhbHNlCi0g
ICAgZWxzZToKLSAgICAgICAgcyA9IHB5LmlvLnNhZmVyZXByKG9iaikKLSAgICAgICAgaXNfcmVw
ciA9IFRydWUKLSAgICBpZiBpc2luc3RhbmNlKHMsIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICB0
ID0gc2l4LnRleHRfdHlwZQotICAgIGVsc2U6Ci0gICAgICAgIHQgPSBzaXguYmluYXJ5X3R5cGUK
LSAgICBzID0gcy5yZXBsYWNlKHQoIlxuIiksIHQoIlxufiIpKS5yZXBsYWNlKHQoIiUiKSwgdCgi
JSUiKSkKLSAgICBpZiBpc19yZXByOgotICAgICAgICBzID0gcy5yZXBsYWNlKHQoIlxcbiIpLCB0
KCJcbn4iKSkKLSAgICByZXR1cm4gcworICAgIHJlcGxhY2VzID0gWygiXG4iLCAiXG5+IiksICgi
JSIsICIlJSIpXQorICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgc3RyKToKKyAgICAgICAgb2Jq
ID0gc2FmZXJlcHIob2JqKQorICAgICAgICByZXBsYWNlcy5hcHBlbmQoKCJcXG4iLCAiXG5+Iikp
CiAKKyAgICBmb3IgcjEsIHIyIGluIHJlcGxhY2VzOgorICAgICAgICBvYmogPSBvYmoucmVwbGFj
ZShyMSwgcjIpCiAKLWRlZiBfc2hvdWxkX3JlcHJfZ2xvYmFsX25hbWUob2JqKToKLSAgICByZXR1
cm4gbm90IGhhc2F0dHIob2JqLCAiX19uYW1lX18iKSBhbmQgbm90IGNhbGxhYmxlKG9iaikKKyAg
ICByZXR1cm4gb2JqCiAKIAotZGVmIF9mb3JtYXRfYm9vbG9wKGV4cGxhbmF0aW9ucywgaXNfb3Ip
OgorZGVmIF9zaG91bGRfcmVwcl9nbG9iYWxfbmFtZShvYmo6IG9iamVjdCkgLT4gYm9vbDoKKyAg
ICBpZiBjYWxsYWJsZShvYmopOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHRyeToKKyAg
ICAgICAgcmV0dXJuIG5vdCBoYXNhdHRyKG9iaiwgIl9fbmFtZV9fIikKKyAgICBleGNlcHQgRXhj
ZXB0aW9uOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBfZm9ybWF0X2Jvb2xvcChleHBs
YW5hdGlvbnM6IEl0ZXJhYmxlW3N0cl0sIGlzX29yOiBib29sKSAtPiBzdHI6CiAgICAgZXhwbGFu
YXRpb24gPSAiKCIgKyAoaXNfb3IgYW5kICIgb3IgIiBvciAiIGFuZCAiKS5qb2luKGV4cGxhbmF0
aW9ucykgKyAiKSIKLSAgICBpZiBpc2luc3RhbmNlKGV4cGxhbmF0aW9uLCBzaXgudGV4dF90eXBl
KToKLSAgICAgICAgdCA9IHNpeC50ZXh0X3R5cGUKLSAgICBlbHNlOgotICAgICAgICB0ID0gc2l4
LmJpbmFyeV90eXBlCi0gICAgcmV0dXJuIGV4cGxhbmF0aW9uLnJlcGxhY2UodCgiJSIpLCB0KCIl
JSIpKQorICAgIHJldHVybiBleHBsYW5hdGlvbi5yZXBsYWNlKCIlIiwgIiUlIikKIAogCi1kZWYg
X2NhbGxfcmVwcmNvbXBhcmUob3BzLCByZXN1bHRzLCBleHBscywgZWFjaF9vYmopOgorZGVmIF9j
YWxsX3JlcHJjb21wYXJlKAorICAgIG9wczogU2VxdWVuY2Vbc3RyXSwKKyAgICByZXN1bHRzOiBT
ZXF1ZW5jZVtib29sXSwKKyAgICBleHBsczogU2VxdWVuY2Vbc3RyXSwKKyAgICBlYWNoX29iajog
U2VxdWVuY2Vbb2JqZWN0XSwKKykgLT4gc3RyOgogICAgIGZvciBpLCByZXMsIGV4cGwgaW4gemlw
KHJhbmdlKGxlbihvcHMpKSwgcmVzdWx0cywgZXhwbHMpOgogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBkb25lID0gbm90IHJlcwpAQCAtNDU5LDkgKzQ3OSwyMCBAQCBkZWYgX2NhbGxfcmVwcmNv
bXBhcmUob3BzLCByZXN1bHRzLCBleHBscywgZWFjaF9vYmopOgogICAgIHJldHVybiBleHBsCiAK
IAotdW5hcnlfbWFwID0ge2FzdC5Ob3Q6ICJub3QgJXMiLCBhc3QuSW52ZXJ0OiAifiVzIiwgYXN0
LlVTdWI6ICItJXMiLCBhc3QuVUFkZDogIislcyJ9CitkZWYgX2NhbGxfYXNzZXJ0aW9uX3Bhc3Mo
bGluZW5vOiBpbnQsIG9yaWc6IHN0ciwgZXhwbDogc3RyKSAtPiBOb25lOgorICAgIGlmIHV0aWwu
X2Fzc2VydGlvbl9wYXNzIGlzIG5vdCBOb25lOgorICAgICAgICB1dGlsLl9hc3NlcnRpb25fcGFz
cyhsaW5lbm8sIG9yaWcsIGV4cGwpCiAKLWJpbm9wX21hcCA9IHsKKworZGVmIF9jaGVja19pZl9h
c3NlcnRpb25fcGFzc19pbXBsKCkgLT4gYm9vbDoKKyAgICAiIiJDaGVjayBpZiBhbnkgcGx1Z2lu
cyBpbXBsZW1lbnQgdGhlIHB5dGVzdF9hc3NlcnRpb25fcGFzcyBob29rCisgICAgaW4gb3JkZXIg
bm90IHRvIGdlbmVyYXRlIGV4cGxhbmF0aW9uIHVuZWNlc3NhcmlseSAobWlnaHQgYmUgZXhwZW5z
aXZlKS4iIiIKKyAgICByZXR1cm4gVHJ1ZSBpZiB1dGlsLl9hc3NlcnRpb25fcGFzcyBlbHNlIEZh
bHNlCisKKworVU5BUllfTUFQID0ge2FzdC5Ob3Q6ICJub3QgJXMiLCBhc3QuSW52ZXJ0OiAifiVz
IiwgYXN0LlVTdWI6ICItJXMiLCBhc3QuVUFkZDogIislcyJ9CisKK0JJTk9QX01BUCA9IHsKICAg
ICBhc3QuQml0T3I6ICJ8IiwKICAgICBhc3QuQml0WG9yOiAiXiIsCiAgICAgYXN0LkJpdEFuZDog
IiYiLApAQCAtNDg0LDIwICs1MTUsOCBAQCBiaW5vcF9tYXAgPSB7CiAgICAgYXN0LklzTm90OiAi
aXMgbm90IiwKICAgICBhc3QuSW46ICJpbiIsCiAgICAgYXN0Lk5vdEluOiAibm90IGluIiwKKyAg
ICBhc3QuTWF0TXVsdDogIkAiLAogfQotIyBQeXRob24gMy41KyBjb21wYXRpYmlsaXR5Ci10cnk6
Ci0gICAgYmlub3BfbWFwW2FzdC5NYXRNdWx0XSA9ICJAIgotZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgotICAgIHBhc3MKLQotIyBQeXRob24gMy40KyBjb21wYXRpYmlsaXR5Ci1pZiBoYXNhdHRyKGFz
dCwgIk5hbWVDb25zdGFudCIpOgotICAgIF9OYW1lQ29uc3RhbnQgPSBhc3QuTmFtZUNvbnN0YW50
Ci1lbHNlOgotCi0gICAgZGVmIF9OYW1lQ29uc3RhbnQoYyk6Ci0gICAgICAgIHJldHVybiBhc3Qu
TmFtZShzdHIoYyksIGFzdC5Mb2FkKCkpCiAKIAogZGVmIHNldF9sb2NhdGlvbihub2RlLCBsaW5l
bm8sIGNvbF9vZmZzZXQpOgpAQCAtNTE1LDYgKzUzNCw2MCBAQCBkZWYgc2V0X2xvY2F0aW9uKG5v
ZGUsIGxpbmVubywgY29sX29mZnNldCk6CiAgICAgcmV0dXJuIG5vZGUKIAogCitkZWYgX2dldF9h
c3NlcnRpb25fZXhwcnMoc3JjOiBieXRlcykgLT4gRGljdFtpbnQsIHN0cl06CisgICAgIiIiUmV0
dXJuIGEgbWFwcGluZyBmcm9tIHtsaW5lbm86ICJhc3NlcnRpb24gdGVzdCBleHByZXNzaW9uIn0u
IiIiCisgICAgcmV0ID0ge30gICMgdHlwZTogRGljdFtpbnQsIHN0cl0KKworICAgIGRlcHRoID0g
MAorICAgIGxpbmVzID0gW10gICMgdHlwZTogTGlzdFtzdHJdCisgICAgYXNzZXJ0X2xpbmVubyA9
IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbaW50XQorICAgIHNlZW5fbGluZXMgPSBzZXQoKSAgIyB0
eXBlOiBTZXRbaW50XQorCisgICAgZGVmIF93cml0ZV9hbmRfcmVzZXQoKSAtPiBOb25lOgorICAg
ICAgICBub25sb2NhbCBkZXB0aCwgbGluZXMsIGFzc2VydF9saW5lbm8sIHNlZW5fbGluZXMKKyAg
ICAgICAgYXNzZXJ0IGFzc2VydF9saW5lbm8gaXMgbm90IE5vbmUKKyAgICAgICAgcmV0W2Fzc2Vy
dF9saW5lbm9dID0gIiIuam9pbihsaW5lcykucnN0cmlwKCkucnN0cmlwKCJcXCIpCisgICAgICAg
IGRlcHRoID0gMAorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGFzc2VydF9saW5lbm8gPSBO
b25lCisgICAgICAgIHNlZW5fbGluZXMgPSBzZXQoKQorCisgICAgdG9rZW5zID0gdG9rZW5pemUu
dG9rZW5pemUoaW8uQnl0ZXNJTyhzcmMpLnJlYWRsaW5lKQorICAgIGZvciB0cCwgc291cmNlLCAo
bGluZW5vLCBvZmZzZXQpLCBfLCBsaW5lIGluIHRva2VuczoKKyAgICAgICAgaWYgdHAgPT0gdG9r
ZW5pemUuTkFNRSBhbmQgc291cmNlID09ICJhc3NlcnQiOgorICAgICAgICAgICAgYXNzZXJ0X2xp
bmVubyA9IGxpbmVubworICAgICAgICBlbGlmIGFzc2VydF9saW5lbm8gaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAjIGtlZXAgdHJhY2sgb2YgZGVwdGggZm9yIHRoZSBhc3NlcnQtbWVzc2FnZSBg
LGAgbG9va3VwCisgICAgICAgICAgICBpZiB0cCA9PSB0b2tlbml6ZS5PUCBhbmQgc291cmNlIGlu
ICIoW3siOgorICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKyAgICAgICAgICAgIGVsaWYgdHAg
PT0gdG9rZW5pemUuT1AgYW5kIHNvdXJjZSBpbiAiKV19IjoKKyAgICAgICAgICAgICAgICBkZXB0
aCAtPSAxCisKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lczoKKyAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQobGluZVtvZmZzZXQ6XSkKKyAgICAgICAgICAgICAgICBzZWVuX2xpbmVzLmFkZChs
aW5lbm8pCisgICAgICAgICAgICAjIGEgbm9uLW5lc3RlZCBjb21tYSBzZXBhcmF0ZXMgdGhlIGV4
cHJlc3Npb24gZnJvbSB0aGUgbWVzc2FnZQorICAgICAgICAgICAgZWxpZiBkZXB0aCA9PSAwIGFu
ZCB0cCA9PSB0b2tlbml6ZS5PUCBhbmQgc291cmNlID09ICIsIjoKKyAgICAgICAgICAgICAgICAj
IG9uZSBsaW5lIGFzc2VydCB3aXRoIG1lc3NhZ2UKKyAgICAgICAgICAgICAgICBpZiBsaW5lbm8g
aW4gc2Vlbl9saW5lcyBhbmQgbGVuKGxpbmVzKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBv
ZmZzZXRfaW5fdHJpbW1lZCA9IG9mZnNldCArIGxlbihsaW5lc1stMV0pIC0gbGVuKGxpbmUpCisg
ICAgICAgICAgICAgICAgICAgIGxpbmVzWy0xXSA9IGxpbmVzWy0xXVs6b2Zmc2V0X2luX3RyaW1t
ZWRdCisgICAgICAgICAgICAgICAgIyBtdWx0aS1saW5lIGFzc2VydCB3aXRoIG1lc3NhZ2UKKyAg
ICAgICAgICAgICAgICBlbGlmIGxpbmVubyBpbiBzZWVuX2xpbmVzOgorICAgICAgICAgICAgICAg
ICAgICBsaW5lc1stMV0gPSBsaW5lc1stMV1bOm9mZnNldF0KKyAgICAgICAgICAgICAgICAjIG11
bHRpIGxpbmUgYXNzZXJ0IHdpdGggZXNjYXBkIG5ld2xpbmUgYmVmb3JlIG1lc3NhZ2UKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZVs6
b2Zmc2V0XSkKKyAgICAgICAgICAgICAgICBfd3JpdGVfYW5kX3Jlc2V0KCkKKyAgICAgICAgICAg
IGVsaWYgdHAgaW4ge3Rva2VuaXplLk5FV0xJTkUsIHRva2VuaXplLkVORE1BUktFUn06CisgICAg
ICAgICAgICAgICAgX3dyaXRlX2FuZF9yZXNldCgpCisgICAgICAgICAgICBlbGlmIGxpbmVzIGFu
ZCBsaW5lbm8gbm90IGluIHNlZW5fbGluZXM6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5k
KGxpbmUpCisgICAgICAgICAgICAgICAgc2Vlbl9saW5lcy5hZGQobGluZW5vKQorCisgICAgcmV0
dXJuIHJldAorCisKIGNsYXNzIEFzc2VydGlvblJld3JpdGVyKGFzdC5Ob2RlVmlzaXRvcik6CiAg
ICAgIiIiQXNzZXJ0aW9uIHJld3JpdGluZyBpbXBsZW1lbnRhdGlvbi4KIApAQCAtNTMxLDcgKzYw
NCw4IEBAIGNsYXNzIEFzc2VydGlvblJld3JpdGVyKGFzdC5Ob2RlVmlzaXRvcik6CiAgICAgb3Jp
Z2luYWwgYXNzZXJ0IHN0YXRlbWVudDogaXQgcmV3cml0ZXMgdGhlIHRlc3Qgb2YgYW4gYXNzZXJ0
aW9uCiAgICAgdG8gcHJvdmlkZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGFuZCByZXBsYWNlIGl0IHdp
dGggYW4gaWYgc3RhdGVtZW50CiAgICAgd2hpY2ggcmFpc2VzIGFuIGFzc2VydGlvbiBlcnJvciB3
aXRoIGEgZGV0YWlsZWQgZXhwbGFuYXRpb24gaW4KLSAgICBjYXNlIHRoZSBleHByZXNzaW9uIGlz
IGZhbHNlLgorICAgIGNhc2UgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgYW5kIGNhbGxzIHB5dGVz
dF9hc3NlcnRpb25fcGFzcyBob29rCisgICAgaWYgZXhwcmVzc2lvbiBpcyB0cnVlLgogCiAgICAg
Rm9yIHRoaXMgLnZpc2l0X0Fzc2VydCgpIHVzZXMgdGhlIHZpc2l0b3IgcGF0dGVybiB0byB2aXNp
dCBhbGwgdGhlCiAgICAgQVNUIG5vZGVzIG9mIHRoZSBhc3QuQXNzZXJ0LnRlc3QgZmllbGQsIGVh
Y2ggdmlzaXQgY2FsbCByZXR1cm5pbmcKQEAgLTU0OSw5ICs2MjMsMTAgQEAgY2xhc3MgQXNzZXJ0
aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICAgICBieSBzdGF0ZW1lbnRzLiAgVmFy
aWFibGVzIGFyZSBjcmVhdGVkIHVzaW5nIC52YXJpYWJsZSgpIGFuZAogICAgICAgIGhhdmUgdGhl
IGZvcm0gb2YgIkBweV9hc3NlcnQwIi4KIAotICAgIDpvbl9mYWlsdXJlOiBUaGUgQVNUIHN0YXRl
bWVudHMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBpZiB0aGUKLSAgICAgICBhc3NlcnRpb24gdGVz
dCBmYWlscy4gIFRoaXMgaXMgdGhlIGNvZGUgd2hpY2ggd2lsbCBjb25zdHJ1Y3QKLSAgICAgICB0
aGUgZmFpbHVyZSBtZXNzYWdlIGFuZCByYWlzZXMgdGhlIEFzc2VydGlvbkVycm9yLgorICAgIDpl
eHBsX3N0bXRzOiBUaGUgQVNUIHN0YXRlbWVudHMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCB0byBn
ZXQKKyAgICAgICBkYXRhIGZyb20gdGhlIGFzc2VydGlvbi4gIFRoaXMgaXMgdGhlIGNvZGUgd2hp
Y2ggd2lsbCBjb25zdHJ1Y3QKKyAgICAgICB0aGUgZGV0YWlsZWQgYXNzZXJ0aW9uIG1lc3NhZ2Ug
dGhhdCBpcyB1c2VkIGluIHRoZSBBc3NlcnRpb25FcnJvcgorICAgICAgIG9yIGZvciB0aGUgcHl0
ZXN0X2Fzc2VydGlvbl9wYXNzIGhvb2suCiAKICAgICA6ZXhwbGFuYXRpb25fc3BlY2lmaWVyczog
QSBkaWN0IGZpbGxlZCBieSAuZXhwbGFuYXRpb25fcGFyYW0oKQogICAgICAgIHdpdGggJS1mb3Jt
YXR0aW5nIHBsYWNlaG9sZGVycyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZwpAQCAtNTY0LDE1ICs2
MzksMjcgQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKIAogICAg
IFRoaXMgc3RhdGUgaXMgcmVzZXQgb24gZXZlcnkgbmV3IGFzc2VydCBzdGF0ZW1lbnQgdmlzaXRl
ZCBhbmQgdXNlZAogICAgIGJ5IHRoZSBvdGhlciB2aXNpdG9ycy4KLQogICAgICIiIgogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZV9wYXRoLCBjb25maWcpOgotICAgICAgICBzdXBlcihB
c3NlcnRpb25SZXdyaXRlciwgc2VsZikuX19pbml0X18oKQorICAgIGRlZiBfX2luaXRfXygKKyAg
ICAgICAgc2VsZiwgbW9kdWxlX3BhdGg6IE9wdGlvbmFsW3N0cl0sIGNvbmZpZzogT3B0aW9uYWxb
Q29uZmlnXSwgc291cmNlOiBieXRlcworICAgICkgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5f
X2luaXRfXygpCiAgICAgICAgIHNlbGYubW9kdWxlX3BhdGggPSBtb2R1bGVfcGF0aAogICAgICAg
ICBzZWxmLmNvbmZpZyA9IGNvbmZpZworICAgICAgICBpZiBjb25maWcgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBzZWxmLmVuYWJsZV9hc3NlcnRpb25fcGFzc19ob29rID0gY29uZmlnLmdldGlu
aSgKKyAgICAgICAgICAgICAgICAiZW5hYmxlX2Fzc2VydGlvbl9wYXNzX2hvb2siCisgICAgICAg
ICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmVuYWJsZV9hc3NlcnRpb25f
cGFzc19ob29rID0gRmFsc2UKKyAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKKworICAgIEBm
dW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MSkKKyAgICBkZWYgX2Fzc2VydF9leHByX3RvX2xp
bmVubyhzZWxmKSAtPiBEaWN0W2ludCwgc3RyXToKKyAgICAgICAgcmV0dXJuIF9nZXRfYXNzZXJ0
aW9uX2V4cHJzKHNlbGYuc291cmNlKQogCi0gICAgZGVmIHJ1bihzZWxmLCBtb2QpOgorICAgIGRl
ZiBydW4oc2VsZiwgbW9kOiBhc3QuTW9kdWxlKSAtPiBOb25lOgogICAgICAgICAiIiJGaW5kIGFs
bCBhc3NlcnQgc3RhdGVtZW50cyBpbiAqbW9kKiBhbmQgcmV3cml0ZSB0aGVtLiIiIgogICAgICAg
ICBpZiBub3QgbW9kLmJvZHk6CiAgICAgICAgICAgICAjIE5vdGhpbmcgdG8gZG8uCkBAIC01ODAs
NyArNjY3LDcgQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAg
ICAgICAgIyBJbnNlcnQgc29tZSBzcGVjaWFsIGltcG9ydHMgYXQgdGhlIHRvcCBvZiB0aGUgbW9k
dWxlIGJ1dCBhZnRlciBhbnkKICAgICAgICAgIyBkb2NzdHJpbmdzIGFuZCBfX2Z1dHVyZV9fIGlt
cG9ydHMuCiAgICAgICAgIGFsaWFzZXMgPSBbCi0gICAgICAgICAgICBhc3QuYWxpYXMocHkuYnVp
bHRpbi5idWlsdGlucy5fX25hbWVfXywgIkBweV9idWlsdGlucyIpLAorICAgICAgICAgICAgYXN0
LmFsaWFzKCJidWlsdGlucyIsICJAcHlfYnVpbHRpbnMiKSwKICAgICAgICAgICAgIGFzdC5hbGlh
cygiX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSIsICJAcHl0ZXN0X2FyIiksCiAgICAgICAgIF0K
ICAgICAgICAgZG9jID0gZ2V0YXR0cihtb2QsICJkb2NzdHJpbmciLCBOb25lKQpAQCAtNjAwLDEz
ICs2ODcsMTggQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgZXhwZWN0X2RvY3N0cmlu
ZyA9IEZhbHNlCiAgICAgICAgICAgICBlbGlmICgKLSAgICAgICAgICAgICAgICBub3QgaXNpbnN0
YW5jZShpdGVtLCBhc3QuSW1wb3J0RnJvbSkKLSAgICAgICAgICAgICAgICBvciBpdGVtLmxldmVs
ID4gMAotICAgICAgICAgICAgICAgIG9yIGl0ZW0ubW9kdWxlICE9ICJfX2Z1dHVyZV9fIgorICAg
ICAgICAgICAgICAgIGlzaW5zdGFuY2UoaXRlbSwgYXN0LkltcG9ydEZyb20pCisgICAgICAgICAg
ICAgICAgYW5kIGl0ZW0ubGV2ZWwgPT0gMAorICAgICAgICAgICAgICAgIGFuZCBpdGVtLm1vZHVs
ZSA9PSAiX19mdXR1cmVfXyIKICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgbGluZW5v
ID0gaXRlbS5saW5lbm8KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBwb3MgKz0gMQorICAgICAgICAjIFNw
ZWNpYWwgY2FzZTogZm9yIGEgZGVjb3JhdGVkIGZ1bmN0aW9uLCBzZXQgdGhlIGxpbmVubyB0byB0
aGF0IG9mIHRoZQorICAgICAgICAjIGZpcnN0IGRlY29yYXRvciwgbm90IHRoZSBgZGVmYC4gSXNz
dWUgIzQ5ODQuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgYXN0LkZ1bmN0aW9uRGVmKSBh
bmQgaXRlbS5kZWNvcmF0b3JfbGlzdDoKKyAgICAgICAgICAgIGxpbmVubyA9IGl0ZW0uZGVjb3Jh
dG9yX2xpc3RbMF0ubGluZW5vCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaW5lbm8gPSBp
dGVtLmxpbmVubwogICAgICAgICBpbXBvcnRzID0gWwpAQCAtNjE0LDEyICs3MDYsMTIgQEAgY2xh
c3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICAgICAgXQogICAgICAg
ICBtb2QuYm9keVtwb3M6cG9zXSA9IGltcG9ydHMKICAgICAgICAgIyBDb2xsZWN0IGFzc2VydHMu
Ci0gICAgICAgIG5vZGVzID0gW21vZF0KKyAgICAgICAgbm9kZXMgPSBbbW9kXSAgIyB0eXBlOiBM
aXN0W2FzdC5BU1RdCiAgICAgICAgIHdoaWxlIG5vZGVzOgogICAgICAgICAgICAgbm9kZSA9IG5v
ZGVzLnBvcCgpCiAgICAgICAgICAgICBmb3IgbmFtZSwgZmllbGQgaW4gYXN0Lml0ZXJfZmllbGRz
KG5vZGUpOgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmllbGQsIGxpc3QpOgotICAg
ICAgICAgICAgICAgICAgICBuZXcgPSBbXQorICAgICAgICAgICAgICAgICAgICBuZXcgPSBbXSAg
IyB0eXBlOiBMaXN0W2FzdC5BU1RdCiAgICAgICAgICAgICAgICAgICAgIGZvciBpLCBjaGlsZCBp
biBlbnVtZXJhdGUoZmllbGQpOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShjaGlsZCwgYXN0LkFzc2VydCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUcmFu
c2Zvcm0gYXNzZXJ0LgpAQCAtNjMxLDU5ICs3MjMsNTcgQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0
ZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihub2RlLCBu
YW1lLCBuZXcpCiAgICAgICAgICAgICAgICAgZWxpZiAoCiAgICAgICAgICAgICAgICAgICAgIGlz
aW5zdGFuY2UoZmllbGQsIGFzdC5BU1QpCi0gICAgICAgICAgICAgICAgICAgIGFuZAogICAgICAg
ICAgICAgICAgICAgICAjIERvbid0IHJlY3Vyc2UgaW50byBleHByZXNzaW9ucyBhcyB0aGV5IGNh
bid0IGNvbnRhaW4KICAgICAgICAgICAgICAgICAgICAgIyBhc3NlcnRzLgotICAgICAgICAgICAg
ICAgICAgICBub3QgaXNpbnN0YW5jZShmaWVsZCwgYXN0LmV4cHIpCisgICAgICAgICAgICAgICAg
ICAgIGFuZCBub3QgaXNpbnN0YW5jZShmaWVsZCwgYXN0LmV4cHIpCiAgICAgICAgICAgICAgICAg
KToKICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGZpZWxkKQogCiAgICAgQHN0YXRp
Y21ldGhvZAotICAgIGRlZiBpc19yZXdyaXRlX2Rpc2FibGVkKGRvY3N0cmluZyk6CisgICAgZGVm
IGlzX3Jld3JpdGVfZGlzYWJsZWQoZG9jc3RyaW5nOiBzdHIpIC0+IGJvb2w6CiAgICAgICAgIHJl
dHVybiAiUFlURVNUX0RPTlRfUkVXUklURSIgaW4gZG9jc3RyaW5nCiAKLSAgICBkZWYgdmFyaWFi
bGUoc2VsZik6CisgICAgZGVmIHZhcmlhYmxlKHNlbGYpIC0+IHN0cjoKICAgICAgICAgIiIiR2V0
IGEgbmV3IHZhcmlhYmxlLiIiIgogICAgICAgICAjIFVzZSBhIGNoYXJhY3RlciBpbnZhbGlkIGlu
IHB5dGhvbiBpZGVudGlmaWVycyB0byBhdm9pZCBjbGFzaGluZy4KICAgICAgICAgbmFtZSA9ICJA
cHlfYXNzZXJ0IiArIHN0cihuZXh0KHNlbGYudmFyaWFibGVfY291bnRlcikpCiAgICAgICAgIHNl
bGYudmFyaWFibGVzLmFwcGVuZChuYW1lKQogICAgICAgICByZXR1cm4gbmFtZQogCi0gICAgZGVm
IGFzc2lnbihzZWxmLCBleHByKToKKyAgICBkZWYgYXNzaWduKHNlbGYsIGV4cHI6IGFzdC5leHBy
KSAtPiBhc3QuTmFtZToKICAgICAgICAgIiIiR2l2ZSAqZXhwciogYSBuYW1lLiIiIgogICAgICAg
ICBuYW1lID0gc2VsZi52YXJpYWJsZSgpCiAgICAgICAgIHNlbGYuc3RhdGVtZW50cy5hcHBlbmQo
YXN0LkFzc2lnbihbYXN0Lk5hbWUobmFtZSwgYXN0LlN0b3JlKCkpXSwgZXhwcikpCiAgICAgICAg
IHJldHVybiBhc3QuTmFtZShuYW1lLCBhc3QuTG9hZCgpKQogCi0gICAgZGVmIGRpc3BsYXkoc2Vs
ZiwgZXhwcik6Ci0gICAgICAgICIiIkNhbGwgcHkuaW8uc2FmZXJlcHIgb24gdGhlIGV4cHJlc3Np
b24uIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmhlbHBlcigic2FmZXJlcHIiLCBleHByKQorICAg
IGRlZiBkaXNwbGF5KHNlbGYsIGV4cHI6IGFzdC5leHByKSAtPiBhc3QuZXhwcjoKKyAgICAgICAg
IiIiQ2FsbCBzYWZlcmVwciBvbiB0aGUgZXhwcmVzc2lvbi4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuaGVscGVyKCJfc2FmZXJlcHIiLCBleHByKQogCi0gICAgZGVmIGhlbHBlcihzZWxmLCBuYW1l
LCAqYXJncyk6CisgICAgZGVmIGhlbHBlcihzZWxmLCBuYW1lOiBzdHIsICphcmdzOiBhc3QuZXhw
cikgLT4gYXN0LmV4cHI6CiAgICAgICAgICIiIkNhbGwgYSBoZWxwZXIgaW4gdGhpcyBtb2R1bGUu
IiIiCiAgICAgICAgIHB5X25hbWUgPSBhc3QuTmFtZSgiQHB5dGVzdF9hciIsIGFzdC5Mb2FkKCkp
Ci0gICAgICAgIGF0dHIgPSBhc3QuQXR0cmlidXRlKHB5X25hbWUsICJfIiArIG5hbWUsIGFzdC5M
b2FkKCkpCi0gICAgICAgIHJldHVybiBhc3RfQ2FsbChhdHRyLCBsaXN0KGFyZ3MpLCBbXSkKKyAg
ICAgICAgYXR0ciA9IGFzdC5BdHRyaWJ1dGUocHlfbmFtZSwgbmFtZSwgYXN0LkxvYWQoKSkKKyAg
ICAgICAgcmV0dXJuIGFzdC5DYWxsKGF0dHIsIGxpc3QoYXJncyksIFtdKQogCi0gICAgZGVmIGJ1
aWx0aW4oc2VsZiwgbmFtZSk6CisgICAgZGVmIGJ1aWx0aW4oc2VsZiwgbmFtZTogc3RyKSAtPiBh
c3QuQXR0cmlidXRlOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGJ1aWx0aW4gY2FsbGVkICpuYW1l
Ki4iIiIKICAgICAgICAgYnVpbHRpbl9uYW1lID0gYXN0Lk5hbWUoIkBweV9idWlsdGlucyIsIGFz
dC5Mb2FkKCkpCiAgICAgICAgIHJldHVybiBhc3QuQXR0cmlidXRlKGJ1aWx0aW5fbmFtZSwgbmFt
ZSwgYXN0LkxvYWQoKSkKIAotICAgIGRlZiBleHBsYW5hdGlvbl9wYXJhbShzZWxmLCBleHByKToK
KyAgICBkZWYgZXhwbGFuYXRpb25fcGFyYW0oc2VsZiwgZXhwcjogYXN0LmV4cHIpIC0+IHN0cjoK
ICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IG5hbWVkICUtZm9ybWF0dGluZyBwbGFjZWhvbGRlciBm
b3IgZXhwci4KIAogICAgICAgICBUaGlzIGNyZWF0ZXMgYSAlLWZvcm1hdHRpbmcgcGxhY2Vob2xk
ZXIgZm9yIGV4cHIgaW4gdGhlCiAgICAgICAgIGN1cnJlbnQgZm9ybWF0dGluZyBjb250ZXh0LCBl
LmcuIGBgJShweTApc2BgLiAgVGhlIHBsYWNlaG9sZGVyCiAgICAgICAgIGFuZCBleHByIGFyZSBw
bGFjZWQgaW4gdGhlIGN1cnJlbnQgZm9ybWF0IGNvbnRleHQgc28gdGhhdCBpdAogICAgICAgICBj
YW4gYmUgdXNlZCBvbiB0aGUgbmV4dCBjYWxsIHRvIC5wb3BfZm9ybWF0X2NvbnRleHQoKS4KLQog
ICAgICAgICAiIiIKICAgICAgICAgc3BlY2lmaWVyID0gInB5IiArIHN0cihuZXh0KHNlbGYudmFy
aWFibGVfY291bnRlcikpCiAgICAgICAgIHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVyc1tzcGVj
aWZpZXJdID0gZXhwcgogICAgICAgICByZXR1cm4gIiUoIiArIHNwZWNpZmllciArICIpcyIKIAot
ICAgIGRlZiBwdXNoX2Zvcm1hdF9jb250ZXh0KHNlbGYpOgorICAgIGRlZiBwdXNoX2Zvcm1hdF9j
b250ZXh0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICIiIkNyZWF0ZSBhIG5ldyBmb3JtYXR0aW5n
IGNvbnRleHQuCiAKICAgICAgICAgVGhlIGZvcm1hdCBjb250ZXh0IGlzIHVzZWQgZm9yIHdoZW4g
YW4gZXhwbGFuYXRpb24gd2FudHMgdG8KQEAgLTY5MiwxOSArNzgyLDE3IEBAIGNsYXNzIEFzc2Vy
dGlvblJld3JpdGVyKGFzdC5Ob2RlVmlzaXRvcik6CiAgICAgICAgIC5leHBsYW5hdGlvbl9wYXJh
bSgpLiAgRmluYWxseSAucG9wX2Zvcm1hdF9jb250ZXh0KCkgaXMgdXNlZAogICAgICAgICB0byBm
b3JtYXQgYSBzdHJpbmcgb2YgJS1mb3JtYXR0ZWQgdmFsdWVzIGFzIGFkZGVkIGJ5CiAgICAgICAg
IC5leHBsYW5hdGlvbl9wYXJhbSgpLgotCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLmV4cGxh
bmF0aW9uX3NwZWNpZmllcnMgPSB7fQorICAgICAgICBzZWxmLmV4cGxhbmF0aW9uX3NwZWNpZmll
cnMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgYXN0LmV4cHJdCiAgICAgICAgIHNlbGYuc3RhY2su
YXBwZW5kKHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVycykKIAotICAgIGRlZiBwb3BfZm9ybWF0
X2NvbnRleHQoc2VsZiwgZXhwbF9leHByKToKKyAgICBkZWYgcG9wX2Zvcm1hdF9jb250ZXh0KHNl
bGYsIGV4cGxfZXhwcjogYXN0LmV4cHIpIC0+IGFzdC5OYW1lOgogICAgICAgICAiIiJGb3JtYXQg
dGhlICUtZm9ybWF0dGVkIHN0cmluZyB3aXRoIGN1cnJlbnQgZm9ybWF0IGNvbnRleHQuCiAKLSAg
ICAgICAgVGhlIGV4cGxfZXhwciBzaG91bGQgYmUgYW4gYXN0LlN0ciBpbnN0YW5jZSBjb25zdHJ1
Y3RlZCBmcm9tCisgICAgICAgIFRoZSBleHBsX2V4cHIgc2hvdWxkIGJlIGFuIHN0ciBhc3QuZXhw
ciBpbnN0YW5jZSBjb25zdHJ1Y3RlZCBmcm9tCiAgICAgICAgIHRoZSAlLXBsYWNlaG9sZGVycyBj
cmVhdGVkIGJ5IC5leHBsYW5hdGlvbl9wYXJhbSgpLiAgVGhpcyB3aWxsCi0gICAgICAgIGFkZCB0
aGUgcmVxdWlyZWQgY29kZSB0byBmb3JtYXQgc2FpZCBzdHJpbmcgdG8gLm9uX2ZhaWx1cmUgYW5k
CisgICAgICAgIGFkZCB0aGUgcmVxdWlyZWQgY29kZSB0byBmb3JtYXQgc2FpZCBzdHJpbmcgdG8g
LmV4cGxfc3RtdHMgYW5kCiAgICAgICAgIHJldHVybiB0aGUgYXN0Lk5hbWUgaW5zdGFuY2Ugb2Yg
dGhlIGZvcm1hdHRlZCBzdHJpbmcuCi0KICAgICAgICAgIiIiCiAgICAgICAgIGN1cnJlbnQgPSBz
ZWxmLnN0YWNrLnBvcCgpCiAgICAgICAgIGlmIHNlbGYuc3RhY2s6CkBAIC03MTMsMTMyICs4MDEs
MTkzIEBAIGNsYXNzIEFzc2VydGlvblJld3JpdGVyKGFzdC5Ob2RlVmlzaXRvcik6CiAgICAgICAg
IGZvcm1hdF9kaWN0ID0gYXN0LkRpY3Qoa2V5cywgbGlzdChjdXJyZW50LnZhbHVlcygpKSkKICAg
ICAgICAgZm9ybSA9IGFzdC5CaW5PcChleHBsX2V4cHIsIGFzdC5Nb2QoKSwgZm9ybWF0X2RpY3Qp
CiAgICAgICAgIG5hbWUgPSAiQHB5X2Zvcm1hdCIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2Nv
dW50ZXIpKQotICAgICAgICBzZWxmLm9uX2ZhaWx1cmUuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5O
YW1lKG5hbWUsIGFzdC5TdG9yZSgpKV0sIGZvcm0pKQorICAgICAgICBpZiBzZWxmLmVuYWJsZV9h
c3NlcnRpb25fcGFzc19ob29rOgorICAgICAgICAgICAgc2VsZi5mb3JtYXRfdmFyaWFibGVzLmFw
cGVuZChuYW1lKQorICAgICAgICBzZWxmLmV4cGxfc3RtdHMuYXBwZW5kKGFzdC5Bc3NpZ24oW2Fz
dC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKV0sIGZvcm0pKQogICAgICAgICByZXR1cm4gYXN0Lk5h
bWUobmFtZSwgYXN0LkxvYWQoKSkKIAotICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUp
OgorICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGU6IGFzdC5BU1QpIC0+IFR1cGxlW2Fz
dC5OYW1lLCBzdHJdOgogICAgICAgICAiIiJIYW5kbGUgZXhwcmVzc2lvbnMgd2UgZG9uJ3QgaGF2
ZSBjdXN0b20gY29kZSBmb3IuIiIiCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGFz
dC5leHByKQogICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihub2RlKQogICAgICAgICByZXR1cm4g
cmVzLCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYuZGlzcGxheShyZXMpKQogCi0gICAgZGVm
IHZpc2l0X0Fzc2VydChzZWxmLCBhc3NlcnRfKToKKyAgICBkZWYgdmlzaXRfQXNzZXJ0KHNlbGYs
IGFzc2VydF86IGFzdC5Bc3NlcnQpIC0+IExpc3RbYXN0LnN0bXRdOgogICAgICAgICAiIiJSZXR1
cm4gdGhlIEFTVCBzdGF0ZW1lbnRzIHRvIHJlcGxhY2UgdGhlIGFzdC5Bc3NlcnQgaW5zdGFuY2Uu
CiAKICAgICAgICAgVGhpcyByZXdyaXRlcyB0aGUgdGVzdCBvZiBhbiBhc3NlcnRpb24gdG8gcHJv
dmlkZQogICAgICAgICBpbnRlcm1lZGlhdGUgdmFsdWVzIGFuZCByZXBsYWNlIGl0IHdpdGggYW4g
aWYgc3RhdGVtZW50IHdoaWNoCiAgICAgICAgIHJhaXNlcyBhbiBhc3NlcnRpb24gZXJyb3Igd2l0
aCBhIGRldGFpbGVkIGV4cGxhbmF0aW9uIGluIGNhc2UKICAgICAgICAgdGhlIGV4cHJlc3Npb24g
aXMgZmFsc2UuCi0KICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYXNzZXJ0Xy50
ZXN0LCBhc3QuVHVwbGUpIGFuZCBzZWxmLmNvbmZpZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IGZzbG9jYXRpb24gPSAoc2VsZi5tb2R1bGVfcGF0aCwgYXNzZXJ0Xy5saW5lbm8pCi0gICAgICAg
ICAgICBzZWxmLmNvbmZpZy53YXJuKAotICAgICAgICAgICAgICAgICJSMSIsCi0gICAgICAgICAg
ICAgICAgImFzc2VydGlvbiBpcyBhbHdheXMgdHJ1ZSwgcGVyaGFwcyAiICJyZW1vdmUgcGFyZW50
aGVzZXM/IiwKLSAgICAgICAgICAgICAgICBmc2xvY2F0aW9uPWZzbG9jYXRpb24sCisgICAgICAg
IGlmIGlzaW5zdGFuY2UoYXNzZXJ0Xy50ZXN0LCBhc3QuVHVwbGUpIGFuZCBsZW4oYXNzZXJ0Xy50
ZXN0LmVsdHMpID49IDE6CisgICAgICAgICAgICBmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBp
bXBvcnQgUHl0ZXN0QXNzZXJ0UmV3cml0ZVdhcm5pbmcKKyAgICAgICAgICAgIGltcG9ydCB3YXJu
aW5ncworCisgICAgICAgICAgICAjIFRPRE86IFRoaXMgYXNzZXJ0IHNob3VsZCBub3QgYmUgbmVl
ZGVkLgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYubW9kdWxlX3BhdGggaXMgbm90IE5vbmUKKyAg
ICAgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAgICAgUHl0ZXN0
QXNzZXJ0UmV3cml0ZVdhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgICJhc3NlcnRpb24gaXMg
YWx3YXlzIHRydWUsIHBlcmhhcHMgcmVtb3ZlIHBhcmVudGhlc2VzPyIKKyAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgIGNhdGVnb3J5PU5vbmUsCisgICAgICAgICAgICAgICAgZmls
ZW5hbWU9ZnNwYXRoKHNlbGYubW9kdWxlX3BhdGgpLAorICAgICAgICAgICAgICAgIGxpbmVubz1h
c3NlcnRfLmxpbmVubywKICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0g
W10KLSAgICAgICAgc2VsZi52YXJpYWJsZXMgPSBbXQorCisgICAgICAgIHNlbGYuc3RhdGVtZW50
cyA9IFtdICAjIHR5cGU6IExpc3RbYXN0LnN0bXRdCisgICAgICAgIHNlbGYudmFyaWFibGVzID0g
W10gICMgdHlwZTogTGlzdFtzdHJdCiAgICAgICAgIHNlbGYudmFyaWFibGVfY291bnRlciA9IGl0
ZXJ0b29scy5jb3VudCgpCi0gICAgICAgIHNlbGYuc3RhY2sgPSBbXQotICAgICAgICBzZWxmLm9u
X2ZhaWx1cmUgPSBbXQorCisgICAgICAgIGlmIHNlbGYuZW5hYmxlX2Fzc2VydGlvbl9wYXNzX2hv
b2s6CisgICAgICAgICAgICBzZWxmLmZvcm1hdF92YXJpYWJsZXMgPSBbXSAgIyB0eXBlOiBMaXN0
W3N0cl0KKworICAgICAgICBzZWxmLnN0YWNrID0gW10gICMgdHlwZTogTGlzdFtEaWN0W3N0ciwg
YXN0LmV4cHJdXQorICAgICAgICBzZWxmLmV4cGxfc3RtdHMgPSBbXSAgIyB0eXBlOiBMaXN0W2Fz
dC5zdG10XQogICAgICAgICBzZWxmLnB1c2hfZm9ybWF0X2NvbnRleHQoKQogICAgICAgICAjIFJl
d3JpdGUgYXNzZXJ0IGludG8gYSBidW5jaCBvZiBzdGF0ZW1lbnRzLgogICAgICAgICB0b3BfY29u
ZGl0aW9uLCBleHBsYW5hdGlvbiA9IHNlbGYudmlzaXQoYXNzZXJ0Xy50ZXN0KQotICAgICAgICAj
IENyZWF0ZSBmYWlsdXJlIG1lc3NhZ2UuCi0gICAgICAgIGJvZHkgPSBzZWxmLm9uX2ZhaWx1cmUK
KwogICAgICAgICBuZWdhdGlvbiA9IGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgdG9wX2NvbmRpdGlv
bikKLSAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuSWYobmVnYXRpb24sIGJvZHks
IFtdKSkKLSAgICAgICAgaWYgYXNzZXJ0Xy5tc2c6Ci0gICAgICAgICAgICBhc3NlcnRtc2cgPSBz
ZWxmLmhlbHBlcigiZm9ybWF0X2Fzc2VydG1zZyIsIGFzc2VydF8ubXNnKQotICAgICAgICAgICAg
ZXhwbGFuYXRpb24gPSAiXG4+YXNzZXJ0ICIgKyBleHBsYW5hdGlvbgotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgYXNzZXJ0bXNnID0gYXN0LlN0cigiIikKLSAgICAgICAgICAgIGV4cGxhbmF0
aW9uID0gImFzc2VydCAiICsgZXhwbGFuYXRpb24KLSAgICAgICAgdGVtcGxhdGUgPSBhc3QuQmlu
T3AoYXNzZXJ0bXNnLCBhc3QuQWRkKCksIGFzdC5TdHIoZXhwbGFuYXRpb24pKQotICAgICAgICBt
c2cgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dCh0ZW1wbGF0ZSkKLSAgICAgICAgZm10ID0gc2Vs
Zi5oZWxwZXIoImZvcm1hdF9leHBsYW5hdGlvbiIsIG1zZykKLSAgICAgICAgZXJyX25hbWUgPSBh
c3QuTmFtZSgiQXNzZXJ0aW9uRXJyb3IiLCBhc3QuTG9hZCgpKQotICAgICAgICBleGMgPSBhc3Rf
Q2FsbChlcnJfbmFtZSwgW2ZtdF0sIFtdKQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBd
ID49IDM6CisKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9vazogICMg
RXhwZXJpbWVudGFsIHB5dGVzdF9hc3NlcnRpb25fcGFzcyBob29rCisgICAgICAgICAgICBtc2cg
PSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChhc3QuU3RyKGV4cGxhbmF0aW9uKSkKKworICAgICAg
ICAgICAgIyBGYWlsZWQKKyAgICAgICAgICAgIGlmIGFzc2VydF8ubXNnOgorICAgICAgICAgICAg
ICAgIGFzc2VydG1zZyA9IHNlbGYuaGVscGVyKCJfZm9ybWF0X2Fzc2VydG1zZyIsIGFzc2VydF8u
bXNnKQorICAgICAgICAgICAgICAgIGdsdWVzdHIgPSAiXG4+YXNzZXJ0ICIKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0bXNnID0gYXN0LlN0cigiIikKKyAgICAgICAg
ICAgICAgICBnbHVlc3RyID0gImFzc2VydCAiCisgICAgICAgICAgICBlcnJfZXhwbGFuYXRpb24g
PSBhc3QuQmluT3AoYXN0LlN0cihnbHVlc3RyKSwgYXN0LkFkZCgpLCBtc2cpCisgICAgICAgICAg
ICBlcnJfbXNnID0gYXN0LkJpbk9wKGFzc2VydG1zZywgYXN0LkFkZCgpLCBlcnJfZXhwbGFuYXRp
b24pCisgICAgICAgICAgICBlcnJfbmFtZSA9IGFzdC5OYW1lKCJBc3NlcnRpb25FcnJvciIsIGFz
dC5Mb2FkKCkpCisgICAgICAgICAgICBmbXQgPSBzZWxmLmhlbHBlcigiX2Zvcm1hdF9leHBsYW5h
dGlvbiIsIGVycl9tc2cpCisgICAgICAgICAgICBleGMgPSBhc3QuQ2FsbChlcnJfbmFtZSwgW2Zt
dF0sIFtdKQogICAgICAgICAgICAgcmFpc2VfID0gYXN0LlJhaXNlKGV4YywgTm9uZSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlXyA9IGFzdC5SYWlzZShleGMsIE5vbmUsIE5vbmUp
Ci0gICAgICAgIGJvZHkuYXBwZW5kKHJhaXNlXykKKyAgICAgICAgICAgIHN0YXRlbWVudHNfZmFp
bCA9IFtdCisgICAgICAgICAgICBzdGF0ZW1lbnRzX2ZhaWwuZXh0ZW5kKHNlbGYuZXhwbF9zdG10
cykKKyAgICAgICAgICAgIHN0YXRlbWVudHNfZmFpbC5hcHBlbmQocmFpc2VfKQorCisgICAgICAg
ICAgICAjIFBhc3NlZAorICAgICAgICAgICAgZm10X3Bhc3MgPSBzZWxmLmhlbHBlcigiX2Zvcm1h
dF9leHBsYW5hdGlvbiIsIG1zZykKKyAgICAgICAgICAgIG9yaWcgPSBzZWxmLl9hc3NlcnRfZXhw
cl90b19saW5lbm8oKVthc3NlcnRfLmxpbmVub10KKyAgICAgICAgICAgIGhvb2tfY2FsbF9wYXNz
ID0gYXN0LkV4cHIoCisgICAgICAgICAgICAgICAgc2VsZi5oZWxwZXIoCisgICAgICAgICAgICAg
ICAgICAgICJfY2FsbF9hc3NlcnRpb25fcGFzcyIsCisgICAgICAgICAgICAgICAgICAgIGFzdC5O
dW0oYXNzZXJ0Xy5saW5lbm8pLAorICAgICAgICAgICAgICAgICAgICBhc3QuU3RyKG9yaWcpLAor
ICAgICAgICAgICAgICAgICAgICBmbXRfcGFzcywKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICApCisgICAgICAgICAgICAjIElmIGFueSBob29rcyBpbXBsZW1lbnQgYXNzZXJ0X3Bhc3Mg
aG9vaworICAgICAgICAgICAgaG9va19pbXBsX3Rlc3QgPSBhc3QuSWYoCisgICAgICAgICAgICAg
ICAgc2VsZi5oZWxwZXIoIl9jaGVja19pZl9hc3NlcnRpb25fcGFzc19pbXBsIiksCisgICAgICAg
ICAgICAgICAgc2VsZi5leHBsX3N0bXRzICsgW2hvb2tfY2FsbF9wYXNzXSwKKyAgICAgICAgICAg
ICAgICBbXSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXRlbWVudHNfcGFzcyA9IFto
b29rX2ltcGxfdGVzdF0KKworICAgICAgICAgICAgIyBUZXN0IGZvciBhc3NlcnRpb24gY29uZGl0
aW9uCisgICAgICAgICAgICBtYWluX3Rlc3QgPSBhc3QuSWYobmVnYXRpb24sIHN0YXRlbWVudHNf
ZmFpbCwgc3RhdGVtZW50c19wYXNzKQorICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVu
ZChtYWluX3Rlc3QpCisgICAgICAgICAgICBpZiBzZWxmLmZvcm1hdF92YXJpYWJsZXM6CisgICAg
ICAgICAgICAgICAgdmFyaWFibGVzID0gWworICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZShu
YW1lLCBhc3QuU3RvcmUoKSkgZm9yIG5hbWUgaW4gc2VsZi5mb3JtYXRfdmFyaWFibGVzCisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIGNsZWFyX2Zvcm1hdCA9IGFzdC5Bc3NpZ24o
dmFyaWFibGVzLCBhc3QuTmFtZUNvbnN0YW50KE5vbmUpKQorICAgICAgICAgICAgICAgIHNlbGYu
c3RhdGVtZW50cy5hcHBlbmQoY2xlYXJfZm9ybWF0KQorCisgICAgICAgIGVsc2U6ICAjIE9yaWdp
bmFsIGFzc2VydGlvbiByZXdyaXRpbmcKKyAgICAgICAgICAgICMgQ3JlYXRlIGZhaWx1cmUgbWVz
c2FnZS4KKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLmV4cGxfc3RtdHMKKyAgICAgICAgICAgIHNl
bGYuc3RhdGVtZW50cy5hcHBlbmQoYXN0LklmKG5lZ2F0aW9uLCBib2R5LCBbXSkpCisgICAgICAg
ICAgICBpZiBhc3NlcnRfLm1zZzoKKyAgICAgICAgICAgICAgICBhc3NlcnRtc2cgPSBzZWxmLmhl
bHBlcigiX2Zvcm1hdF9hc3NlcnRtc2ciLCBhc3NlcnRfLm1zZykKKyAgICAgICAgICAgICAgICBl
eHBsYW5hdGlvbiA9ICJcbj5hc3NlcnQgIiArIGV4cGxhbmF0aW9uCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGFzc2VydG1zZyA9IGFzdC5TdHIoIiIpCisgICAgICAgICAgICAg
ICAgZXhwbGFuYXRpb24gPSAiYXNzZXJ0ICIgKyBleHBsYW5hdGlvbgorICAgICAgICAgICAgdGVt
cGxhdGUgPSBhc3QuQmluT3AoYXNzZXJ0bXNnLCBhc3QuQWRkKCksIGFzdC5TdHIoZXhwbGFuYXRp
b24pKQorICAgICAgICAgICAgbXNnID0gc2VsZi5wb3BfZm9ybWF0X2NvbnRleHQodGVtcGxhdGUp
CisgICAgICAgICAgICBmbXQgPSBzZWxmLmhlbHBlcigiX2Zvcm1hdF9leHBsYW5hdGlvbiIsIG1z
ZykKKyAgICAgICAgICAgIGVycl9uYW1lID0gYXN0Lk5hbWUoIkFzc2VydGlvbkVycm9yIiwgYXN0
LkxvYWQoKSkKKyAgICAgICAgICAgIGV4YyA9IGFzdC5DYWxsKGVycl9uYW1lLCBbZm10XSwgW10p
CisgICAgICAgICAgICByYWlzZV8gPSBhc3QuUmFpc2UoZXhjLCBOb25lKQorCisgICAgICAgICAg
ICBib2R5LmFwcGVuZChyYWlzZV8pCisKICAgICAgICAgIyBDbGVhciB0ZW1wb3JhcnkgdmFyaWFi
bGVzIGJ5IHNldHRpbmcgdGhlbSB0byBOb25lLgogICAgICAgICBpZiBzZWxmLnZhcmlhYmxlczoK
ICAgICAgICAgICAgIHZhcmlhYmxlcyA9IFthc3QuTmFtZShuYW1lLCBhc3QuU3RvcmUoKSkgZm9y
IG5hbWUgaW4gc2VsZi52YXJpYWJsZXNdCi0gICAgICAgICAgICBjbGVhciA9IGFzdC5Bc3NpZ24o
dmFyaWFibGVzLCBfTmFtZUNvbnN0YW50KE5vbmUpKQorICAgICAgICAgICAgY2xlYXIgPSBhc3Qu
QXNzaWduKHZhcmlhYmxlcywgYXN0Lk5hbWVDb25zdGFudChOb25lKSkKICAgICAgICAgICAgIHNl
bGYuc3RhdGVtZW50cy5hcHBlbmQoY2xlYXIpCiAgICAgICAgICMgRml4IGxpbmUgbnVtYmVycy4K
ICAgICAgICAgZm9yIHN0bXQgaW4gc2VsZi5zdGF0ZW1lbnRzOgogICAgICAgICAgICAgc2V0X2xv
Y2F0aW9uKHN0bXQsIGFzc2VydF8ubGluZW5vLCBhc3NlcnRfLmNvbF9vZmZzZXQpCiAgICAgICAg
IHJldHVybiBzZWxmLnN0YXRlbWVudHMKIAotICAgIGRlZiB2aXNpdF9OYW1lKHNlbGYsIG5hbWUp
OgorICAgIGRlZiB2aXNpdF9OYW1lKHNlbGYsIG5hbWU6IGFzdC5OYW1lKSAtPiBUdXBsZVthc3Qu
TmFtZSwgc3RyXToKICAgICAgICAgIyBEaXNwbGF5IHRoZSByZXByIG9mIHRoZSBuYW1lIGlmIGl0
J3MgYSBsb2NhbCB2YXJpYWJsZSBvcgogICAgICAgICAjIF9zaG91bGRfcmVwcl9nbG9iYWxfbmFt
ZSgpIHRoaW5rcyBpdCdzIGFjY2VwdGFibGUuCi0gICAgICAgIGxvY3MgPSBhc3RfQ2FsbChzZWxm
LmJ1aWx0aW4oImxvY2FscyIpLCBbXSwgW10pCisgICAgICAgIGxvY3MgPSBhc3QuQ2FsbChzZWxm
LmJ1aWx0aW4oImxvY2FscyIpLCBbXSwgW10pCiAgICAgICAgIGlubG9jcyA9IGFzdC5Db21wYXJl
KGFzdC5TdHIobmFtZS5pZCksIFthc3QuSW4oKV0sIFtsb2NzXSkKLSAgICAgICAgZG9yZXByID0g
c2VsZi5oZWxwZXIoInNob3VsZF9yZXByX2dsb2JhbF9uYW1lIiwgbmFtZSkKKyAgICAgICAgZG9y
ZXByID0gc2VsZi5oZWxwZXIoIl9zaG91bGRfcmVwcl9nbG9iYWxfbmFtZSIsIG5hbWUpCiAgICAg
ICAgIHRlc3QgPSBhc3QuQm9vbE9wKGFzdC5PcigpLCBbaW5sb2NzLCBkb3JlcHJdKQogICAgICAg
ICBleHByID0gYXN0LklmRXhwKHRlc3QsIHNlbGYuZGlzcGxheShuYW1lKSwgYXN0LlN0cihuYW1l
LmlkKSkKICAgICAgICAgcmV0dXJuIG5hbWUsIHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oZXhwcikK
IAotICAgIGRlZiB2aXNpdF9Cb29sT3Aoc2VsZiwgYm9vbG9wKToKKyAgICBkZWYgdmlzaXRfQm9v
bE9wKHNlbGYsIGJvb2xvcDogYXN0LkJvb2xPcCkgLT4gVHVwbGVbYXN0Lk5hbWUsIHN0cl06CiAg
ICAgICAgIHJlc192YXIgPSBzZWxmLnZhcmlhYmxlKCkKICAgICAgICAgZXhwbF9saXN0ID0gc2Vs
Zi5hc3NpZ24oYXN0Lkxpc3QoW10sIGFzdC5Mb2FkKCkpKQogICAgICAgICBhcHAgPSBhc3QuQXR0
cmlidXRlKGV4cGxfbGlzdCwgImFwcGVuZCIsIGFzdC5Mb2FkKCkpCiAgICAgICAgIGlzX29yID0g
aW50KGlzaW5zdGFuY2UoYm9vbG9wLm9wLCBhc3QuT3IpKQogICAgICAgICBib2R5ID0gc2F2ZSA9
IHNlbGYuc3RhdGVtZW50cwotICAgICAgICBmYWlsX3NhdmUgPSBzZWxmLm9uX2ZhaWx1cmUKKyAg
ICAgICAgZmFpbF9zYXZlID0gc2VsZi5leHBsX3N0bXRzCiAgICAgICAgIGxldmVscyA9IGxlbihi
b29sb3AudmFsdWVzKSAtIDEKICAgICAgICAgc2VsZi5wdXNoX2Zvcm1hdF9jb250ZXh0KCkKLSAg
ICAgICAgIyBQcm9jZXNzIGVhY2ggb3BlcmFuZCwgc2hvcnQtY2lyY3V0aW5nIGlmIG5lZWRlZC4K
KyAgICAgICAgIyBQcm9jZXNzIGVhY2ggb3BlcmFuZCwgc2hvcnQtY2lyY3VpdGluZyBpZiBuZWVk
ZWQuCiAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShib29sb3AudmFsdWVzKToKICAgICAg
ICAgICAgIGlmIGk6Ci0gICAgICAgICAgICAgICAgZmFpbF9pbm5lciA9IFtdCisgICAgICAgICAg
ICAgICAgZmFpbF9pbm5lciA9IFtdICAjIHR5cGU6IExpc3RbYXN0LnN0bXRdCiAgICAgICAgICAg
ICAgICAgIyBjb25kIGlzIHNldCBpbiBhIHByaW9yIGxvb3AgaXRlcmF0aW9uIGJlbG93Ci0gICAg
ICAgICAgICAgICAgc2VsZi5vbl9mYWlsdXJlLmFwcGVuZChhc3QuSWYoY29uZCwgZmFpbF9pbm5l
ciwgW10pKSAgIyBub3FhCi0gICAgICAgICAgICAgICAgc2VsZi5vbl9mYWlsdXJlID0gZmFpbF9p
bm5lcgorICAgICAgICAgICAgICAgIHNlbGYuZXhwbF9zdG10cy5hcHBlbmQoYXN0LklmKGNvbmQs
IGZhaWxfaW5uZXIsIFtdKSkgICMgbm9xYQorICAgICAgICAgICAgICAgIHNlbGYuZXhwbF9zdG10
cyA9IGZhaWxfaW5uZXIKICAgICAgICAgICAgIHNlbGYucHVzaF9mb3JtYXRfY29udGV4dCgpCiAg
ICAgICAgICAgICByZXMsIGV4cGwgPSBzZWxmLnZpc2l0KHYpCiAgICAgICAgICAgICBib2R5LmFw
cGVuZChhc3QuQXNzaWduKFthc3QuTmFtZShyZXNfdmFyLCBhc3QuU3RvcmUoKSldLCByZXMpKQog
ICAgICAgICAgICAgZXhwbF9mb3JtYXQgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChhc3QuU3Ry
KGV4cGwpKQotICAgICAgICAgICAgY2FsbCA9IGFzdF9DYWxsKGFwcCwgW2V4cGxfZm9ybWF0XSwg
W10pCi0gICAgICAgICAgICBzZWxmLm9uX2ZhaWx1cmUuYXBwZW5kKGFzdC5FeHByKGNhbGwpKQor
ICAgICAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFwcCwgW2V4cGxfZm9ybWF0XSwgW10pCisgICAg
ICAgICAgICBzZWxmLmV4cGxfc3RtdHMuYXBwZW5kKGFzdC5FeHByKGNhbGwpKQogICAgICAgICAg
ICAgaWYgaSA8IGxldmVsczoKLSAgICAgICAgICAgICAgICBjb25kID0gcmVzCisgICAgICAgICAg
ICAgICAgY29uZCA9IHJlcyAgIyB0eXBlOiBhc3QuZXhwcgogICAgICAgICAgICAgICAgIGlmIGlz
X29yOgogICAgICAgICAgICAgICAgICAgICBjb25kID0gYXN0LlVuYXJ5T3AoYXN0Lk5vdCgpLCBj
b25kKQotICAgICAgICAgICAgICAgIGlubmVyID0gW10KKyAgICAgICAgICAgICAgICBpbm5lciA9
IFtdICAjIHR5cGU6IExpc3RbYXN0LnN0bXRdCiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZW1l
bnRzLmFwcGVuZChhc3QuSWYoY29uZCwgaW5uZXIsIFtdKSkKICAgICAgICAgICAgICAgICBzZWxm
LnN0YXRlbWVudHMgPSBib2R5ID0gaW5uZXIKICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0gc2F2
ZQotICAgICAgICBzZWxmLm9uX2ZhaWx1cmUgPSBmYWlsX3NhdmUKLSAgICAgICAgZXhwbF90ZW1w
bGF0ZSA9IHNlbGYuaGVscGVyKCJmb3JtYXRfYm9vbG9wIiwgZXhwbF9saXN0LCBhc3QuTnVtKGlz
X29yKSkKKyAgICAgICAgc2VsZi5leHBsX3N0bXRzID0gZmFpbF9zYXZlCisgICAgICAgIGV4cGxf
dGVtcGxhdGUgPSBzZWxmLmhlbHBlcigiX2Zvcm1hdF9ib29sb3AiLCBleHBsX2xpc3QsIGFzdC5O
dW0oaXNfb3IpKQogICAgICAgICBleHBsID0gc2VsZi5wb3BfZm9ybWF0X2NvbnRleHQoZXhwbF90
ZW1wbGF0ZSkKICAgICAgICAgcmV0dXJuIGFzdC5OYW1lKHJlc192YXIsIGFzdC5Mb2FkKCkpLCBz
ZWxmLmV4cGxhbmF0aW9uX3BhcmFtKGV4cGwpCiAKLSAgICBkZWYgdmlzaXRfVW5hcnlPcChzZWxm
LCB1bmFyeSk6Ci0gICAgICAgIHBhdHRlcm4gPSB1bmFyeV9tYXBbdW5hcnkub3AuX19jbGFzc19f
XQorICAgIGRlZiB2aXNpdF9VbmFyeU9wKHNlbGYsIHVuYXJ5OiBhc3QuVW5hcnlPcCkgLT4gVHVw
bGVbYXN0Lk5hbWUsIHN0cl06CisgICAgICAgIHBhdHRlcm4gPSBVTkFSWV9NQVBbdW5hcnkub3Au
X19jbGFzc19fXQogICAgICAgICBvcGVyYW5kX3Jlcywgb3BlcmFuZF9leHBsID0gc2VsZi52aXNp
dCh1bmFyeS5vcGVyYW5kKQogICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihhc3QuVW5hcnlPcCh1
bmFyeS5vcCwgb3BlcmFuZF9yZXMpKQogICAgICAgICByZXR1cm4gcmVzLCBwYXR0ZXJuICUgKG9w
ZXJhbmRfZXhwbCwpCiAKLSAgICBkZWYgdmlzaXRfQmluT3Aoc2VsZiwgYmlub3ApOgotICAgICAg
ICBzeW1ib2wgPSBiaW5vcF9tYXBbYmlub3Aub3AuX19jbGFzc19fXQorICAgIGRlZiB2aXNpdF9C
aW5PcChzZWxmLCBiaW5vcDogYXN0LkJpbk9wKSAtPiBUdXBsZVthc3QuTmFtZSwgc3RyXToKKyAg
ICAgICAgc3ltYm9sID0gQklOT1BfTUFQW2Jpbm9wLm9wLl9fY2xhc3NfX10KICAgICAgICAgbGVm
dF9leHByLCBsZWZ0X2V4cGwgPSBzZWxmLnZpc2l0KGJpbm9wLmxlZnQpCiAgICAgICAgIHJpZ2h0
X2V4cHIsIHJpZ2h0X2V4cGwgPSBzZWxmLnZpc2l0KGJpbm9wLnJpZ2h0KQotICAgICAgICBleHBs
YW5hdGlvbiA9ICIoJXMgJXMgJXMpIiAlIChsZWZ0X2V4cGwsIHN5bWJvbCwgcmlnaHRfZXhwbCkK
KyAgICAgICAgZXhwbGFuYXRpb24gPSAiKHt9IHt9IHt9KSIuZm9ybWF0KGxlZnRfZXhwbCwgc3lt
Ym9sLCByaWdodF9leHBsKQogICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihhc3QuQmluT3AobGVm
dF9leHByLCBiaW5vcC5vcCwgcmlnaHRfZXhwcikpCiAgICAgICAgIHJldHVybiByZXMsIGV4cGxh
bmF0aW9uCiAKLSAgICBkZWYgdmlzaXRfQ2FsbF8zNShzZWxmLCBjYWxsKToKLSAgICAgICAgIiIi
Ci0gICAgICAgIHZpc2l0IGBhc3QuQ2FsbGAgbm9kZXMgb24gUHl0aG9uMy41IGFuZCBhZnRlcgot
ICAgICAgICAiIiIKKyAgICBkZWYgdmlzaXRfQ2FsbChzZWxmLCBjYWxsOiBhc3QuQ2FsbCkgLT4g
VHVwbGVbYXN0Lk5hbWUsIHN0cl06CiAgICAgICAgIG5ld19mdW5jLCBmdW5jX2V4cGwgPSBzZWxm
LnZpc2l0KGNhbGwuZnVuYykKICAgICAgICAgYXJnX2V4cGxzID0gW10KICAgICAgICAgbmV3X2Fy
Z3MgPSBbXQpAQCAtODU1LDU3ICsxMDA0LDIwIEBAIGNsYXNzIEFzc2VydGlvblJld3JpdGVyKGFz
dC5Ob2RlVmlzaXRvcik6CiAgICAgICAgICAgICBlbHNlOiAgIyAqKmFyZ3MgaGF2ZSBgYXJnYCBr
ZXl3b3JkcyB3aXRoIGFuIC5hcmcgb2YgTm9uZQogICAgICAgICAgICAgICAgIGFyZ19leHBscy5h
cHBlbmQoIioqIiArIGV4cGwpCiAKLSAgICAgICAgZXhwbCA9ICIlcyglcykiICUgKGZ1bmNfZXhw
bCwgIiwgIi5qb2luKGFyZ19leHBscykpCisgICAgICAgIGV4cGwgPSAie30oe30pIi5mb3JtYXQo
ZnVuY19leHBsLCAiLCAiLmpvaW4oYXJnX2V4cGxzKSkKICAgICAgICAgbmV3X2NhbGwgPSBhc3Qu
Q2FsbChuZXdfZnVuYywgbmV3X2FyZ3MsIG5ld19rd2FyZ3MpCiAgICAgICAgIHJlcyA9IHNlbGYu
YXNzaWduKG5ld19jYWxsKQogICAgICAgICByZXNfZXhwbCA9IHNlbGYuZXhwbGFuYXRpb25fcGFy
YW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAgIG91dGVyX2V4cGwgPSAiJXNcbnslcyA9ICVz
XG59IiAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4cGwpCisgICAgICAgIG91dGVyX2V4cGwgPSAi
e31cbnt7e30gPSB7fVxufX0iLmZvcm1hdChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4cGwpCiAgICAg
ICAgIHJldHVybiByZXMsIG91dGVyX2V4cGwKIAotICAgIGRlZiB2aXNpdF9TdGFycmVkKHNlbGYs
IHN0YXJyZWQpOgotICAgICAgICAjIEZyb20gUHl0aG9uIDMuNSwgYSBTdGFycmVkIG5vZGUgY2Fu
IGFwcGVhciBpbiBhIGZ1bmN0aW9uIGNhbGwKKyAgICBkZWYgdmlzaXRfU3RhcnJlZChzZWxmLCBz
dGFycmVkOiBhc3QuU3RhcnJlZCkgLT4gVHVwbGVbYXN0LlN0YXJyZWQsIHN0cl06CisgICAgICAg
ICMgRnJvbSBQeXRob24gMy41LCBhIFN0YXJyZWQgbm9kZSBjYW4gYXBwZWFyIGluIGEgZnVuY3Rp
b24gY2FsbC4KICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChzdGFycmVkLnZhbHVlKQot
ICAgICAgICByZXR1cm4gc3RhcnJlZCwgIioiICsgZXhwbAotCi0gICAgZGVmIHZpc2l0X0NhbGxf
bGVnYWN5KHNlbGYsIGNhbGwpOgotICAgICAgICAiIiIKLSAgICAgICAgdmlzaXQgYGFzdC5DYWxs
IG5vZGVzIG9uIDMuNCBhbmQgYmVsb3dgCi0gICAgICAgICIiIgotICAgICAgICBuZXdfZnVuYywg
ZnVuY19leHBsID0gc2VsZi52aXNpdChjYWxsLmZ1bmMpCi0gICAgICAgIGFyZ19leHBscyA9IFtd
Ci0gICAgICAgIG5ld19hcmdzID0gW10KLSAgICAgICAgbmV3X2t3YXJncyA9IFtdCi0gICAgICAg
IG5ld19zdGFyID0gbmV3X2t3YXJnID0gTm9uZQotICAgICAgICBmb3IgYXJnIGluIGNhbGwuYXJn
czoKLSAgICAgICAgICAgIHJlcywgZXhwbCA9IHNlbGYudmlzaXQoYXJnKQotICAgICAgICAgICAg
bmV3X2FyZ3MuYXBwZW5kKHJlcykKLSAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQoZXhwbCkK
LSAgICAgICAgZm9yIGtleXdvcmQgaW4gY2FsbC5rZXl3b3JkczoKLSAgICAgICAgICAgIHJlcywg
ZXhwbCA9IHNlbGYudmlzaXQoa2V5d29yZC52YWx1ZSkKLSAgICAgICAgICAgIG5ld19rd2FyZ3Mu
YXBwZW5kKGFzdC5rZXl3b3JkKGtleXdvcmQuYXJnLCByZXMpKQotICAgICAgICAgICAgYXJnX2V4
cGxzLmFwcGVuZChrZXl3b3JkLmFyZyArICI9IiArIGV4cGwpCi0gICAgICAgIGlmIGNhbGwuc3Rh
cmFyZ3M6Ci0gICAgICAgICAgICBuZXdfc3RhciwgZXhwbCA9IHNlbGYudmlzaXQoY2FsbC5zdGFy
YXJncykKLSAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQoIioiICsgZXhwbCkKLSAgICAgICAg
aWYgY2FsbC5rd2FyZ3M6Ci0gICAgICAgICAgICBuZXdfa3dhcmcsIGV4cGwgPSBzZWxmLnZpc2l0
KGNhbGwua3dhcmdzKQotICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZCgiKioiICsgZXhwbCkK
LSAgICAgICAgZXhwbCA9ICIlcyglcykiICUgKGZ1bmNfZXhwbCwgIiwgIi5qb2luKGFyZ19leHBs
cykpCi0gICAgICAgIG5ld19jYWxsID0gYXN0LkNhbGwobmV3X2Z1bmMsIG5ld19hcmdzLCBuZXdf
a3dhcmdzLCBuZXdfc3RhciwgbmV3X2t3YXJnKQotICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihu
ZXdfY2FsbCkKLSAgICAgICAgcmVzX2V4cGwgPSBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYu
ZGlzcGxheShyZXMpKQotICAgICAgICBvdXRlcl9leHBsID0gIiVzXG57JXMgPSAlc1xufSIgJSAo
cmVzX2V4cGwsIHJlc19leHBsLCBleHBsKQotICAgICAgICByZXR1cm4gcmVzLCBvdXRlcl9leHBs
CisgICAgICAgIG5ld19zdGFycmVkID0gYXN0LlN0YXJyZWQocmVzLCBzdGFycmVkLmN0eCkKKyAg
ICAgICAgcmV0dXJuIG5ld19zdGFycmVkLCAiKiIgKyBleHBsCiAKLSAgICAjIGFzdC5DYWxsIHNp
Z25hdHVyZSBjaGFuZ2VkIG9uIDMuNSwKLSAgICAjIGNvbmRpdGlvbmFsbHkgY2hhbmdlICB3aGlj
aCBtZXRob2RzIGlzIG5hbWVkCi0gICAgIyB2aXNpdF9DYWxsIGRlcGVuZGluZyBvbiBQeXRob24g
dmVyc2lvbgotICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDUpOgotICAgICAgICB2aXNp
dF9DYWxsID0gdmlzaXRfQ2FsbF8zNQotICAgIGVsc2U6Ci0gICAgICAgIHZpc2l0X0NhbGwgPSB2
aXNpdF9DYWxsX2xlZ2FjeQotCi0gICAgZGVmIHZpc2l0X0F0dHJpYnV0ZShzZWxmLCBhdHRyKToK
KyAgICBkZWYgdmlzaXRfQXR0cmlidXRlKHNlbGYsIGF0dHI6IGFzdC5BdHRyaWJ1dGUpIC0+IFR1
cGxlW2FzdC5OYW1lLCBzdHJdOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyLmN0eCwg
YXN0LkxvYWQpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2VuZXJpY192aXNpdChhdHRyKQog
ICAgICAgICB2YWx1ZSwgdmFsdWVfZXhwbCA9IHNlbGYudmlzaXQoYXR0ci52YWx1ZSkKQEAgLTkx
NSw3ICsxMDI3LDcgQEAgY2xhc3MgQXNzZXJ0aW9uUmV3cml0ZXIoYXN0Lk5vZGVWaXNpdG9yKToK
ICAgICAgICAgZXhwbCA9IHBhdCAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIHZhbHVlX2V4cGwsIGF0
dHIuYXR0cikKICAgICAgICAgcmV0dXJuIHJlcywgZXhwbAogCi0gICAgZGVmIHZpc2l0X0NvbXBh
cmUoc2VsZiwgY29tcCk6CisgICAgZGVmIHZpc2l0X0NvbXBhcmUoc2VsZiwgY29tcDogYXN0LkNv
bXBhcmUpIC0+IFR1cGxlW2FzdC5leHByLCBzdHJdOgogICAgICAgICBzZWxmLnB1c2hfZm9ybWF0
X2NvbnRleHQoKQogICAgICAgICBsZWZ0X3JlcywgbGVmdF9leHBsID0gc2VsZi52aXNpdChjb21w
LmxlZnQpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29tcC5sZWZ0LCAoYXN0LkNvbXBhcmUsIGFz
dC5Cb29sT3ApKToKQEAgLTkzMiwyMyArMTA0NCw1OSBAQCBjbGFzcyBBc3NlcnRpb25SZXdyaXRl
cihhc3QuTm9kZVZpc2l0b3IpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuZXh0X29wZXJh
bmQsIChhc3QuQ29tcGFyZSwgYXN0LkJvb2xPcCkpOgogICAgICAgICAgICAgICAgIG5leHRfZXhw
bCA9ICIoe30pIi5mb3JtYXQobmV4dF9leHBsKQogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
bmV4dF9yZXMpCi0gICAgICAgICAgICBzeW0gPSBiaW5vcF9tYXBbb3AuX19jbGFzc19fXQorICAg
ICAgICAgICAgc3ltID0gQklOT1BfTUFQW29wLl9fY2xhc3NfX10KICAgICAgICAgICAgIHN5bXMu
YXBwZW5kKGFzdC5TdHIoc3ltKSkKLSAgICAgICAgICAgIGV4cGwgPSAiJXMgJXMgJXMiICUgKGxl
ZnRfZXhwbCwgc3ltLCBuZXh0X2V4cGwpCisgICAgICAgICAgICBleHBsID0gInt9IHt9IHt9Ii5m
b3JtYXQobGVmdF9leHBsLCBzeW0sIG5leHRfZXhwbCkKICAgICAgICAgICAgIGV4cGxzLmFwcGVu
ZChhc3QuU3RyKGV4cGwpKQogICAgICAgICAgICAgcmVzX2V4cHIgPSBhc3QuQ29tcGFyZShsZWZ0
X3JlcywgW29wXSwgW25leHRfcmVzXSkKICAgICAgICAgICAgIHNlbGYuc3RhdGVtZW50cy5hcHBl
bmQoYXN0LkFzc2lnbihbc3RvcmVfbmFtZXNbaV1dLCByZXNfZXhwcikpCiAgICAgICAgICAgICBs
ZWZ0X3JlcywgbGVmdF9leHBsID0gbmV4dF9yZXMsIG5leHRfZXhwbAogICAgICAgICAjIFVzZSBw
eXRlc3QuYXNzZXJ0aW9uLnV0aWwuX3JlcHJjb21wYXJlIGlmIHRoYXQncyBhdmFpbGFibGUuCiAg
ICAgICAgIGV4cGxfY2FsbCA9IHNlbGYuaGVscGVyKAotICAgICAgICAgICAgImNhbGxfcmVwcmNv
bXBhcmUiLAorICAgICAgICAgICAgIl9jYWxsX3JlcHJjb21wYXJlIiwKICAgICAgICAgICAgIGFz
dC5UdXBsZShzeW1zLCBhc3QuTG9hZCgpKSwKICAgICAgICAgICAgIGFzdC5UdXBsZShsb2FkX25h
bWVzLCBhc3QuTG9hZCgpKSwKICAgICAgICAgICAgIGFzdC5UdXBsZShleHBscywgYXN0LkxvYWQo
KSksCiAgICAgICAgICAgICBhc3QuVHVwbGUocmVzdWx0cywgYXN0LkxvYWQoKSksCiAgICAgICAg
ICkKICAgICAgICAgaWYgbGVuKGNvbXAub3BzKSA+IDE6Ci0gICAgICAgICAgICByZXMgPSBhc3Qu
Qm9vbE9wKGFzdC5BbmQoKSwgbG9hZF9uYW1lcykKKyAgICAgICAgICAgIHJlcyA9IGFzdC5Cb29s
T3AoYXN0LkFuZCgpLCBsb2FkX25hbWVzKSAgIyB0eXBlOiBhc3QuZXhwcgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmVzID0gbG9hZF9uYW1lc1swXQogICAgICAgICByZXR1cm4gcmVzLCBz
ZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYucG9wX2Zvcm1hdF9jb250ZXh0KGV4cGxfY2FsbCkp
CisKKworZGVmIHRyeV9tYWtlZGlycyhjYWNoZV9kaXI6IFBhdGgpIC0+IGJvb2w6CisgICAgIiIi
QXR0ZW1wdCB0byBjcmVhdGUgdGhlIGdpdmVuIGRpcmVjdG9yeSBhbmQgc3ViLWRpcmVjdG9yaWVz
IGV4aXN0LgorCisgICAgUmV0dXJucyBUcnVlIGlmIHN1Y2Nlc3NmdWwgb3IgaWYgaXQgYWxyZWFk
eSBleGlzdHMuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBvcy5tYWtlZGlycyhmc3BhdGgo
Y2FjaGVfZGlyKSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9y
LCBOb3RBRGlyZWN0b3J5RXJyb3IsIEZpbGVFeGlzdHNFcnJvcik6CisgICAgICAgICMgT25lIG9m
IHRoZSBwYXRoIGNvbXBvbmVudHMgd2FzIG5vdCBhIGRpcmVjdG9yeToKKyAgICAgICAgIyAtIHdl
J3JlIGluIGEgemlwIGZpbGUKKyAgICAgICAgIyAtIGl0IGlzIGEgZmlsZQorICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAjIGFzIG9mIG5vdywgRVJPRlMg
ZG9lc24ndCBoYXZlIGFuIGVxdWl2YWxlbnQgT1NFcnJvci1zdWJjbGFzcworICAgICAgICBpZiBl
LmVycm5vID09IGVycm5vLkVST0ZTOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IHJhaXNlCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgZ2V0X2NhY2hlX2RpcihmaWxlX3BhdGg6
IFBhdGgpIC0+IFBhdGg6CisgICAgIiIiUmV0dXJuIHRoZSBjYWNoZSBkaXJlY3RvcnkgdG8gd3Jp
dGUgLnB5YyBmaWxlcyBmb3IgdGhlIGdpdmVuIC5weSBmaWxlIHBhdGguIiIiCisgICAgaWYgc3lz
LnZlcnNpb25faW5mbyA+PSAoMywgOCkgYW5kIHN5cy5weWNhY2hlX3ByZWZpeDoKKyAgICAgICAg
IyBnaXZlbjoKKyAgICAgICAgIyAgIHByZWZpeCA9ICcvdG1wL3B5Y3MnCisgICAgICAgICMgICBw
YXRoID0gJy9ob21lL3VzZXIvcHJvai90ZXN0X2FwcC5weScKKyAgICAgICAgIyB3ZSB3YW50Ogor
ICAgICAgICAjICAgJy90bXAvcHljcy9ob21lL3VzZXIvcHJvaicKKyAgICAgICAgcmV0dXJuIFBh
dGgoc3lzLnB5Y2FjaGVfcHJlZml4KSAvIFBhdGgoKmZpbGVfcGF0aC5wYXJ0c1sxOi0xXSkKKyAg
ICBlbHNlOgorICAgICAgICAjIGNsYXNzaWMgcHljYWNoZSBkaXJlY3RvcnkKKyAgICAgICAgcmV0
dXJuIGZpbGVfcGF0aC5wYXJlbnQgLyAiX19weWNhY2hlX18iCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUucHkKaW5kZXggNzlhZGVjYTZhOWFiLi5jNTcyY2M3
NDQ2MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi90cnVu
Y2F0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUu
cHkKQEAgLTEsMTMgKzEsMTMgQEAKLSIiIgotVXRpbGl0aWVzIGZvciB0cnVuY2F0aW5nIGFzc2Vy
dGlvbiBvdXRwdXQuCisiIiJVdGlsaXRpZXMgZm9yIHRydW5jYXRpbmcgYXNzZXJ0aW9uIG91dHB1
dC4KIAogQ3VycmVudCBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byB0cnVuY2F0ZSBhc3NlcnRpb24g
ZXhwbGFuYXRpb25zIGF0CiB+OCB0ZXJtaW5hbCBsaW5lcywgdW5sZXNzIHJ1bm5pbmcgaW4gIi12
diIgbW9kZSBvciBydW5uaW5nIG9uIENJLgogIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFi
c29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgb3MKK2Zyb20g
dHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKIAotaW1wb3J0
IHNpeAorZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCiAKIAogREVGQVVMVF9NQVhfTElO
RVMgPSA4CkBAIC0xNSwzMiArMTUsMzMgQEAgREVGQVVMVF9NQVhfQ0hBUlMgPSA4ICogODAKIFVT
QUdFX01TRyA9ICJ1c2UgJy12dicgdG8gc2hvdyIKIAogCi1kZWYgdHJ1bmNhdGVfaWZfcmVxdWly
ZWQoZXhwbGFuYXRpb24sIGl0ZW0sIG1heF9sZW5ndGg9Tm9uZSk6Ci0gICAgIiIiCi0gICAgVHJ1
bmNhdGUgdGhpcyBhc3NlcnRpb24gZXhwbGFuYXRpb24gaWYgdGhlIGdpdmVuIHRlc3QgaXRlbSBp
cyBlbGlnaWJsZS4KLSAgICAiIiIKK2RlZiB0cnVuY2F0ZV9pZl9yZXF1aXJlZCgKKyAgICBleHBs
YW5hdGlvbjogTGlzdFtzdHJdLCBpdGVtOiBJdGVtLCBtYXhfbGVuZ3RoOiBPcHRpb25hbFtpbnRd
ID0gTm9uZQorKSAtPiBMaXN0W3N0cl06CisgICAgIiIiVHJ1bmNhdGUgdGhpcyBhc3NlcnRpb24g
ZXhwbGFuYXRpb24gaWYgdGhlIGdpdmVuIHRlc3QgaXRlbSBpcyBlbGlnaWJsZS4iIiIKICAgICBp
ZiBfc2hvdWxkX3RydW5jYXRlX2l0ZW0oaXRlbSk6CiAgICAgICAgIHJldHVybiBfdHJ1bmNhdGVf
ZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pCiAgICAgcmV0dXJuIGV4cGxhbmF0aW9uCiAKIAotZGVm
IF9zaG91bGRfdHJ1bmNhdGVfaXRlbShpdGVtKToKLSAgICAiIiIKLSAgICBXaGV0aGVyIG9yIG5v
dCB0aGlzIHRlc3QgaXRlbSBpcyBlbGlnaWJsZSBmb3IgdHJ1bmNhdGlvbi4KLSAgICAiIiIKK2Rl
ZiBfc2hvdWxkX3RydW5jYXRlX2l0ZW0oaXRlbTogSXRlbSkgLT4gYm9vbDoKKyAgICAiIiJXaGV0
aGVyIG9yIG5vdCB0aGlzIHRlc3QgaXRlbSBpcyBlbGlnaWJsZSBmb3IgdHJ1bmNhdGlvbi4iIiIK
ICAgICB2ZXJib3NlID0gaXRlbS5jb25maWcub3B0aW9uLnZlcmJvc2UKICAgICByZXR1cm4gdmVy
Ym9zZSA8IDIgYW5kIG5vdCBfcnVubmluZ19vbl9jaSgpCiAKIAotZGVmIF9ydW5uaW5nX29uX2Np
KCk6CitkZWYgX3J1bm5pbmdfb25fY2koKSAtPiBib29sOgogICAgICIiIkNoZWNrIGlmIHdlJ3Jl
IGN1cnJlbnRseSBydW5uaW5nIG9uIGEgQ0kgc3lzdGVtLiIiIgogICAgIGVudl92YXJzID0gWyJD
SSIsICJCVUlMRF9OVU1CRVIiXQogICAgIHJldHVybiBhbnkodmFyIGluIG9zLmVudmlyb24gZm9y
IHZhciBpbiBlbnZfdmFycykKIAogCi1kZWYgX3RydW5jYXRlX2V4cGxhbmF0aW9uKGlucHV0X2xp
bmVzLCBtYXhfbGluZXM9Tm9uZSwgbWF4X2NoYXJzPU5vbmUpOgotICAgICIiIgotICAgIFRydW5j
YXRlIGdpdmVuIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IG1ha2VzIHVwIHRoZSBhc3NlcnRpb24gZXhw
bGFuYXRpb24uCitkZWYgX3RydW5jYXRlX2V4cGxhbmF0aW9uKAorICAgIGlucHV0X2xpbmVzOiBM
aXN0W3N0cl0sCisgICAgbWF4X2xpbmVzOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICBtYXhf
Y2hhcnM6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorKSAtPiBMaXN0W3N0cl06CisgICAgIiIiVHJ1
bmNhdGUgZ2l2ZW4gbGlzdCBvZiBzdHJpbmdzIHRoYXQgbWFrZXMgdXAgdGhlIGFzc2VydGlvbiBl
eHBsYW5hdGlvbi4KIAogICAgIFRydW5jYXRlcyB0byBlaXRoZXIgOCBsaW5lcywgb3IgNjQwIGNo
YXJhY3RlcnMgLSB3aGljaGV2ZXIgdGhlIGlucHV0IHJlYWNoZXMKICAgICBmaXJzdC4gVGhlIHJl
bWFpbmluZyBsaW5lcyB3aWxsIGJlIHJlcGxhY2VkIGJ5IGEgdXNhZ2UgbWVzc2FnZS4KQEAgLTcz
LDExICs3NCwxMSBAQCBkZWYgX3RydW5jYXRlX2V4cGxhbmF0aW9uKGlucHV0X2xpbmVzLCBtYXhf
bGluZXM9Tm9uZSwgbWF4X2NoYXJzPU5vbmUpOgogICAgIGVsc2U6CiAgICAgICAgIG1zZyArPSAi
ICh7fSBsaW5lcyBoaWRkZW4pIi5mb3JtYXQodHJ1bmNhdGVkX2xpbmVfY291bnQpCiAgICAgbXNn
ICs9ICIsIHt9Ii5mb3JtYXQoVVNBR0VfTVNHKQotICAgIHRydW5jYXRlZF9leHBsYW5hdGlvbi5l
eHRlbmQoW3NpeC50ZXh0X3R5cGUoIiIpLCBzaXgudGV4dF90eXBlKG1zZyldKQorICAgIHRydW5j
YXRlZF9leHBsYW5hdGlvbi5leHRlbmQoWyIiLCBzdHIobXNnKV0pCiAgICAgcmV0dXJuIHRydW5j
YXRlZF9leHBsYW5hdGlvbgogCiAKLWRlZiBfdHJ1bmNhdGVfYnlfY2hhcl9jb3VudChpbnB1dF9s
aW5lcywgbWF4X2NoYXJzKToKK2RlZiBfdHJ1bmNhdGVfYnlfY2hhcl9jb3VudChpbnB1dF9saW5l
czogTGlzdFtzdHJdLCBtYXhfY2hhcnM6IGludCkgLT4gTGlzdFtzdHJdOgogICAgICMgQ2hlY2sg
aWYgdHJ1bmNhdGlvbiByZXF1aXJlZAogICAgIGlmIGxlbigiIi5qb2luKGlucHV0X2xpbmVzKSkg
PD0gbWF4X2NoYXJzOgogICAgICAgICByZXR1cm4gaW5wdXRfbGluZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvYXNzZXJ0aW9uL3V0aWwucHkKaW5kZXggYmNiODAwYTRhMDdkLi5lODBlNDc2Yzg0
YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5CkBAIC0xLDMy
ICsxLDM2IEBACi0iIiJVdGlsaXRpZXMgZm9yIGFzc2VydGlvbiBkZWJ1Z2dpbmciIiIKLWZyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rp
b24KKyIiIlV0aWxpdGllcyBmb3IgYXNzZXJ0aW9uIGRlYnVnZ2luZy4iIiIKK2ltcG9ydCBjb2xs
ZWN0aW9ucy5hYmMKIGltcG9ydCBwcHJpbnQKK2Zyb20gdHlwaW5nIGltcG9ydCBBYnN0cmFjdFNl
dAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitm
cm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9t
IHR5cGluZyBpbXBvcnQgTWFwcGluZworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9t
IHR5cGluZyBpbXBvcnQgU2VxdWVuY2UKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQogCiBpbXBv
cnQgX3B5dGVzdC5fY29kZQotaW1wb3J0IHB5Ci1pbXBvcnQgc2l4Ci1mcm9tIC4uY29tcGF0IGlt
cG9ydCBTZXF1ZW5jZQotCi11ID0gc2l4LnRleHRfdHlwZQorZnJvbSBfcHl0ZXN0IGltcG9ydCBv
dXRjb21lcworZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgX3Bmb3JtYXRfZGlzcGF0
Y2gKK2Zyb20gX3B5dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0IHNhZmVmb3JtYXQKK2Zyb20gX3B5
dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0IHNhZmVyZXByCitmcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBBVFRSU19FUV9GSUVMRAogCiAjIFRoZSBfcmVwcmNvbXBhcmUgYXR0cmlidXRlIG9uIHRo
ZSB1dGlsIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBuZXcgYXNzZXJ0aW9uCiAjIGludGVycHJldGF0
aW9uIGNvZGUgYW5kIGFzc2VydGlvbiByZXdyaXRlciB0byBkZXRlY3QgdGhpcyBwbHVnaW4gd2Fz
CiAjIGxvYWRlZCBhbmQgaW4gdHVybiBjYWxsIHRoZSBob29rcyBkZWZpbmVkIGhlcmUgYXMgcGFy
dCBvZiB0aGUKICMgRGVidWdJbnRlcnByZXRlci4KLV9yZXByY29tcGFyZSA9IE5vbmUKK19yZXBy
Y29tcGFyZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbQ2FsbGFibGVbW3N0ciwgb2JqZWN0LCBv
YmplY3RdLCBPcHRpb25hbFtzdHJdXV0KIAorIyBXb3JrcyBzaW1pbGFybHkgYXMgX3JlcHJjb21w
YXJlIGF0dHJpYnV0ZS4gSXMgcG9wdWxhdGVkIHdpdGggdGhlIGhvb2sgY2FsbAorIyB3aGVuIHB5
dGVzdF9ydW50ZXN0X3NldHVwIGlzIGNhbGxlZC4KK19hc3NlcnRpb25fcGFzcyA9IE5vbmUgICMg
dHlwZTogT3B0aW9uYWxbQ2FsbGFibGVbW2ludCwgc3RyLCBzdHJdLCBOb25lXV0KIAotIyB0aGUg
cmUtZW5jb2RpbmcgaXMgbmVlZGVkIGZvciBweXRob24yIHJlcHIKLSMgd2l0aCBub24tYXNjaWkg
Y2hhcmFjdGVycyAoc2VlIGlzc3VlIDg3NyBhbmQgMTM3OSkKLWRlZiBlY3Uocyk6Ci0gICAgdHJ5
OgotICAgICAgICByZXR1cm4gdShzLCAidXRmLTgiLCAicmVwbGFjZSIpCi0gICAgZXhjZXB0IFR5
cGVFcnJvcjoKLSAgICAgICAgcmV0dXJuIHMKIAotCi1kZWYgZm9ybWF0X2V4cGxhbmF0aW9uKGV4
cGxhbmF0aW9uKToKLSAgICAiIiJUaGlzIGZvcm1hdHMgYW4gZXhwbGFuYXRpb24KK2RlZiBmb3Jt
YXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb246IHN0cikgLT4gc3RyOgorICAgIHIiIiJGb3JtYXQg
YW4gZXhwbGFuYXRpb24uCiAKICAgICBOb3JtYWxseSBhbGwgZW1iZWRkZWQgbmV3bGluZXMgYXJl
IGVzY2FwZWQsIGhvd2V2ZXIgdGhlcmUgYXJlCiAgICAgdGhyZWUgZXhjZXB0aW9uczogXG57LCBc
bn0gYW5kIFxufi4gIFRoZSBmaXJzdCB0d28gYXJlIGludGVuZGVkCkBAIC0zNSwyMCArMzksMTkg
QEAgZGVmIGZvcm1hdF9leHBsYW5hdGlvbihleHBsYW5hdGlvbik6CiAgICAgZm9yIHdoZW4gb25l
IGV4cGxhbmF0aW9uIG5lZWRzIHRvIHNwYW4gbXVsdGlwbGUgbGluZXMsIGUuZy4gd2hlbgogICAg
IGRpc3BsYXlpbmcgZGlmZnMuCiAgICAgIiIiCi0gICAgZXhwbGFuYXRpb24gPSBlY3UoZXhwbGFu
YXRpb24pCiAgICAgbGluZXMgPSBfc3BsaXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pCiAgICAg
cmVzdWx0ID0gX2Zvcm1hdF9saW5lcyhsaW5lcykKLSAgICByZXR1cm4gdSgiXG4iKS5qb2luKHJl
c3VsdCkKKyAgICByZXR1cm4gIlxuIi5qb2luKHJlc3VsdCkKIAogCi1kZWYgX3NwbGl0X2V4cGxh
bmF0aW9uKGV4cGxhbmF0aW9uKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGluZGl2aWR1YWwg
bGluZXMgaW4gdGhlIGV4cGxhbmF0aW9uCitkZWYgX3NwbGl0X2V4cGxhbmF0aW9uKGV4cGxhbmF0
aW9uOiBzdHIpIC0+IExpc3Rbc3RyXToKKyAgICByIiIiUmV0dXJuIGEgbGlzdCBvZiBpbmRpdmlk
dWFsIGxpbmVzIGluIHRoZSBleHBsYW5hdGlvbi4KIAogICAgIFRoaXMgd2lsbCByZXR1cm4gYSBs
aXN0IG9mIGxpbmVzIHNwbGl0IG9uICdcbnsnLCAnXG59JyBhbmQgJ1xuficuCiAgICAgQW55IG90
aGVyIG5ld2xpbmVzIHdpbGwgYmUgZXNjYXBlZCBhbmQgYXBwZWFyIGluIHRoZSBsaW5lIGFzIHRo
ZQogICAgIGxpdGVyYWwgJ1xuJyBjaGFyYWN0ZXJzLgogICAgICIiIgotICAgIHJhd19saW5lcyA9
IChleHBsYW5hdGlvbiBvciB1KCIiKSkuc3BsaXQoIlxuIikKKyAgICByYXdfbGluZXMgPSAoZXhw
bGFuYXRpb24gb3IgIiIpLnNwbGl0KCJcbiIpCiAgICAgbGluZXMgPSBbcmF3X2xpbmVzWzBdXQog
ICAgIGZvciB2YWx1ZXMgaW4gcmF3X2xpbmVzWzE6XToKICAgICAgICAgaWYgdmFsdWVzIGFuZCB2
YWx1ZXNbMF0gaW4gWyJ7IiwgIn0iLCAifiIsICI+Il06CkBAIC01OCwyOCArNjEsMjggQEAgZGVm
IF9zcGxpdF9leHBsYW5hdGlvbihleHBsYW5hdGlvbik6CiAgICAgcmV0dXJuIGxpbmVzCiAKIAot
ZGVmIF9mb3JtYXRfbGluZXMobGluZXMpOgotICAgICIiIkZvcm1hdCB0aGUgaW5kaXZpZHVhbCBs
aW5lcworZGVmIF9mb3JtYXRfbGluZXMobGluZXM6IFNlcXVlbmNlW3N0cl0pIC0+IExpc3Rbc3Ry
XToKKyAgICAiIiJGb3JtYXQgdGhlIGluZGl2aWR1YWwgbGluZXMuCiAKLSAgICBUaGlzIHdpbGwg
cmVwbGFjZSB0aGUgJ3snLCAnfScgYW5kICd+JyBjaGFyYWN0ZXJzIG9mIG91ciBtaW5pCi0gICAg
Zm9ybWF0dGluZyBsYW5ndWFnZSB3aXRoIHRoZSBwcm9wZXIgJ3doZXJlIC4uLicsICdhbmQgLi4u
JyBhbmQgJyArCi0gICAgLi4uJyB0ZXh0LCB0YWtpbmcgY2FyZSBvZiBpbmRlbnRhdGlvbiBhbG9u
ZyB0aGUgd2F5LgorICAgIFRoaXMgd2lsbCByZXBsYWNlIHRoZSAneycsICd9JyBhbmQgJ34nIGNo
YXJhY3RlcnMgb2Ygb3VyIG1pbmkgZm9ybWF0dGluZworICAgIGxhbmd1YWdlIHdpdGggdGhlIHBy
b3BlciAnd2hlcmUgLi4uJywgJ2FuZCAuLi4nIGFuZCAnICsgLi4uJyB0ZXh0LCB0YWtpbmcKKyAg
ICBjYXJlIG9mIGluZGVudGF0aW9uIGFsb25nIHRoZSB3YXkuCiAKICAgICBSZXR1cm4gYSBsaXN0
IG9mIGZvcm1hdHRlZCBsaW5lcy4KICAgICAiIiIKLSAgICByZXN1bHQgPSBsaW5lc1s6MV0KKyAg
ICByZXN1bHQgPSBsaXN0KGxpbmVzWzoxXSkKICAgICBzdGFjayA9IFswXQogICAgIHN0YWNrY250
ID0gWzBdCiAgICAgZm9yIGxpbmUgaW4gbGluZXNbMTpdOgogICAgICAgICBpZiBsaW5lLnN0YXJ0
c3dpdGgoInsiKToKICAgICAgICAgICAgIGlmIHN0YWNrY250Wy0xXToKLSAgICAgICAgICAgICAg
ICBzID0gdSgiYW5kICAgIikKKyAgICAgICAgICAgICAgICBzID0gImFuZCAgICIKICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcyA9IHUoIndoZXJlICIpCisgICAgICAgICAgICAg
ICAgcyA9ICJ3aGVyZSAiCiAgICAgICAgICAgICBzdGFjay5hcHBlbmQobGVuKHJlc3VsdCkpCiAg
ICAgICAgICAgICBzdGFja2NudFstMV0gKz0gMQogICAgICAgICAgICAgc3RhY2tjbnQuYXBwZW5k
KDApCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUoIiArIikgKyB1KCIgICIpICogKGxlbihz
dGFjaykgLSAxKSArIHMgKyBsaW5lWzE6XSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAr
IiArICIgICIgKiAobGVuKHN0YWNrKSAtIDEpICsgcyArIGxpbmVbMTpdKQogICAgICAgICBlbGlm
IGxpbmUuc3RhcnRzd2l0aCgifSIpOgogICAgICAgICAgICAgc3RhY2sucG9wKCkKICAgICAgICAg
ICAgIHN0YWNrY250LnBvcCgpCkBAIC04OCw3NCArOTEsNzUgQEAgZGVmIF9mb3JtYXRfbGluZXMo
bGluZXMpOgogICAgICAgICAgICAgYXNzZXJ0IGxpbmVbMF0gaW4gWyJ+IiwgIj4iXQogICAgICAg
ICAgICAgc3RhY2tbLTFdICs9IDEKICAgICAgICAgICAgIGluZGVudCA9IGxlbihzdGFjaykgaWYg
bGluZS5zdGFydHN3aXRoKCJ+IikgZWxzZSBsZW4oc3RhY2spIC0gMQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh1KCIgICIpICogaW5kZW50ICsgbGluZVsxOl0pCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCIgICIgKiBpbmRlbnQgKyBsaW5lWzE6XSkKICAgICBhc3NlcnQgbGVuKHN0YWNr
KSA9PSAxCiAgICAgcmV0dXJuIHJlc3VsdAogCiAKLSMgUHJvdmlkZSBiYXNlc3RyaW5nIGluIHB5
dGhvbjMKLXRyeToKLSAgICBiYXNlc3RyaW5nID0gYmFzZXN0cmluZwotZXhjZXB0IE5hbWVFcnJv
cjoKLSAgICBiYXNlc3RyaW5nID0gc3RyCitkZWYgaXNzZXF1ZW5jZSh4OiBBbnkpIC0+IGJvb2w6
CisgICAgcmV0dXJuIGlzaW5zdGFuY2UoeCwgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKSBhbmQg
bm90IGlzaW5zdGFuY2UoeCwgc3RyKQorCisKK2RlZiBpc3RleHQoeDogQW55KSAtPiBib29sOgor
ICAgIHJldHVybiBpc2luc3RhbmNlKHgsIHN0cikKKworCitkZWYgaXNkaWN0KHg6IEFueSkgLT4g
Ym9vbDoKKyAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCBkaWN0KQorCiAKK2RlZiBpc3NldCh4OiBB
bnkpIC0+IGJvb2w6CisgICAgcmV0dXJuIGlzaW5zdGFuY2UoeCwgKHNldCwgZnJvemVuc2V0KSkK
IAotZGVmIGFzc2VydHJlcHJfY29tcGFyZShjb25maWcsIG9wLCBsZWZ0LCByaWdodCk6Ci0gICAg
IiIiUmV0dXJuIHNwZWNpYWxpc2VkIGV4cGxhbmF0aW9ucyBmb3Igc29tZSBvcGVyYXRvcnMvb3Bl
cmFuZHMiIiIKLSAgICB3aWR0aCA9IDgwIC0gMTUgLSBsZW4ob3ApIC0gMiAgIyAxNSBjaGFycyBp
bmRlbnRhdGlvbiwgMSBzcGFjZSBhcm91bmQgb3AKLSAgICBsZWZ0X3JlcHIgPSBweS5pby5zYWZl
cmVwcihsZWZ0LCBtYXhzaXplPWludCh3aWR0aCAvLyAyKSkKLSAgICByaWdodF9yZXByID0gcHku
aW8uc2FmZXJlcHIocmlnaHQsIG1heHNpemU9d2lkdGggLSBsZW4obGVmdF9yZXByKSkKIAotICAg
IHN1bW1hcnkgPSB1KCIlcyAlcyAlcyIpICUgKGVjdShsZWZ0X3JlcHIpLCBvcCwgZWN1KHJpZ2h0
X3JlcHIpKQorZGVmIGlzZGF0YWNscyhvYmo6IEFueSkgLT4gYm9vbDoKKyAgICByZXR1cm4gZ2V0
YXR0cihvYmosICJfX2RhdGFjbGFzc19maWVsZHNfXyIsIE5vbmUpIGlzIG5vdCBOb25lCiAKLSAg
ICBkZWYgaXNzZXF1ZW5jZSh4KToKLSAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2UoeCwgU2VxdWVu
Y2UpIGFuZCBub3QgaXNpbnN0YW5jZSh4LCBiYXNlc3RyaW5nKQogCi0gICAgZGVmIGlzdGV4dCh4
KToKLSAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2UoeCwgYmFzZXN0cmluZykKK2RlZiBpc2F0dHJz
KG9iajogQW55KSAtPiBib29sOgorICAgIHJldHVybiBnZXRhdHRyKG9iaiwgIl9fYXR0cnNfYXR0
cnNfXyIsIE5vbmUpIGlzIG5vdCBOb25lCiAKLSAgICBkZWYgaXNkaWN0KHgpOgotICAgICAgICBy
ZXR1cm4gaXNpbnN0YW5jZSh4LCBkaWN0KQogCi0gICAgZGVmIGlzc2V0KHgpOgotICAgICAgICBy
ZXR1cm4gaXNpbnN0YW5jZSh4LCAoc2V0LCBmcm96ZW5zZXQpKQorZGVmIGlzaXRlcmFibGUob2Jq
OiBBbnkpIC0+IGJvb2w6CisgICAgdHJ5OgorICAgICAgICBpdGVyKG9iaikKKyAgICAgICAgcmV0
dXJuIG5vdCBpc3RleHQob2JqKQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHJldHVy
biBGYWxzZQogCi0gICAgZGVmIGlzaXRlcmFibGUob2JqKToKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgaXRlcihvYmopCi0gICAgICAgICAgICByZXR1cm4gbm90IGlzdGV4dChvYmopCi0gICAg
ICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorZGVmIGFz
c2VydHJlcHJfY29tcGFyZShjb25maWcsIG9wOiBzdHIsIGxlZnQ6IEFueSwgcmlnaHQ6IEFueSkg
LT4gT3B0aW9uYWxbTGlzdFtzdHJdXToKKyAgICAiIiJSZXR1cm4gc3BlY2lhbGlzZWQgZXhwbGFu
YXRpb25zIGZvciBzb21lIG9wZXJhdG9ycy9vcGVyYW5kcy4iIiIKICAgICB2ZXJib3NlID0gY29u
ZmlnLmdldG9wdGlvbigidmVyYm9zZSIpCisgICAgaWYgdmVyYm9zZSA+IDE6CisgICAgICAgIGxl
ZnRfcmVwciA9IHNhZmVmb3JtYXQobGVmdCkKKyAgICAgICAgcmlnaHRfcmVwciA9IHNhZmVmb3Jt
YXQocmlnaHQpCisgICAgZWxzZToKKyAgICAgICAgIyBYWFg6ICIxNSBjaGFycyBpbmRlbnRhdGlv
biIgaXMgd3JvbmcKKyAgICAgICAgIyAgICAgICgiRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNz
ZXJ0ICIpOyBzaG91bGQgdXNlIHRlcm0gd2lkdGguCisgICAgICAgIG1heHNpemUgPSAoCisgICAg
ICAgICAgICA4MCAtIDE1IC0gbGVuKG9wKSAtIDIKKyAgICAgICAgKSAvLyAyICAjIDE1IGNoYXJz
IGluZGVudGF0aW9uLCAxIHNwYWNlIGFyb3VuZCBvcAorICAgICAgICBsZWZ0X3JlcHIgPSBzYWZl
cmVwcihsZWZ0LCBtYXhzaXplPW1heHNpemUpCisgICAgICAgIHJpZ2h0X3JlcHIgPSBzYWZlcmVw
cihyaWdodCwgbWF4c2l6ZT1tYXhzaXplKQorCisgICAgc3VtbWFyeSA9ICJ7fSB7fSB7fSIuZm9y
bWF0KGxlZnRfcmVwciwgb3AsIHJpZ2h0X3JlcHIpCisKICAgICBleHBsYW5hdGlvbiA9IE5vbmUK
ICAgICB0cnk6CiAgICAgICAgIGlmIG9wID09ICI9PSI6Ci0gICAgICAgICAgICBpZiBpc3RleHQo
bGVmdCkgYW5kIGlzdGV4dChyaWdodCk6Ci0gICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBf
ZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBpZiBpc3NlcXVlbmNlKGxlZnQpIGFuZCBpc3NlcXVlbmNlKHJpZ2h0KToKLSAg
ICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXF1ZW5jZShsZWZ0
LCByaWdodCwgdmVyYm9zZSkKLSAgICAgICAgICAgICAgICBlbGlmIGlzc2V0KGxlZnQpIGFuZCBp
c3NldChyaWdodCk6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2NvbXBhcmVf
ZXFfc2V0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAgIGVsaWYgaXNkaWN0
KGxlZnQpIGFuZCBpc2RpY3QocmlnaHQpOgotICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlv
biA9IF9jb21wYXJlX2VxX2RpY3QobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0gICAgICAgICAgICAg
ICAgaWYgaXNpdGVyYWJsZShsZWZ0KSBhbmQgaXNpdGVyYWJsZShyaWdodCk6Ci0gICAgICAgICAg
ICAgICAgICAgIGV4cGwgPSBfY29tcGFyZV9lcV9pdGVyYWJsZShsZWZ0LCByaWdodCwgdmVyYm9z
ZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZXhwbGFuYXRpb24gaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbi5leHRlbmQoZXhwbCkKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gZXhw
bAorICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9hbnkobGVmdCwgcmlnaHQs
IHZlcmJvc2UpCiAgICAgICAgIGVsaWYgb3AgPT0gIm5vdCBpbiI6CiAgICAgICAgICAgICBpZiBp
c3RleHQobGVmdCkgYW5kIGlzdGV4dChyaWdodCk6CiAgICAgICAgICAgICAgICAgZXhwbGFuYXRp
b24gPSBfbm90aW5fdGV4dChsZWZ0LCByaWdodCwgdmVyYm9zZSkKKyAgICBleGNlcHQgb3V0Y29t
ZXMuRXhpdDoKKyAgICAgICAgcmFpc2UKICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICBl
eHBsYW5hdGlvbiA9IFsKLSAgICAgICAgICAgIHUoCi0gICAgICAgICAgICAgICAgIihweXRlc3Rf
YXNzZXJ0aW9uIHBsdWdpbjogcmVwcmVzZW50YXRpb24gb2YgZGV0YWlscyBmYWlsZWQuICAiCi0g
ICAgICAgICAgICAgICAgIlByb2JhYmx5IGFuIG9iamVjdCBoYXMgYSBmYXVsdHkgX19yZXByX18u
KSIKKyAgICAgICAgICAgICIocHl0ZXN0X2Fzc2VydGlvbiBwbHVnaW46IHJlcHJlc2VudGF0aW9u
IG9mIGRldGFpbHMgZmFpbGVkOiB7fS4iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBfcHl0ZXN0
Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkuX2dldHJlcHJjcmFzaCgpCiAgICAg
ICAgICAgICApLAotICAgICAgICAgICAgdShfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKSks
CisgICAgICAgICAgICAiIFByb2JhYmx5IGFuIG9iamVjdCBoYXMgYSBmYXVsdHkgX19yZXByX18u
KSIsCiAgICAgICAgIF0KIAogICAgIGlmIG5vdCBleHBsYW5hdGlvbjoKQEAgLTE2NCwzNCArMTY4
LDM5IEBAIGRlZiBhc3NlcnRyZXByX2NvbXBhcmUoY29uZmlnLCBvcCwgbGVmdCwgcmlnaHQpOgog
ICAgIHJldHVybiBbc3VtbWFyeV0gKyBleHBsYW5hdGlvbgogCiAKLWRlZiBfZGlmZl90ZXh0KGxl
ZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICAiIiJSZXR1cm4gdGhlIGV4cGxhbmF0aW9u
IGZvciB0aGUgZGlmZiBiZXR3ZWVuIHRleHQgb3IgYnl0ZXMKK2RlZiBfY29tcGFyZV9lcV9hbnko
bGVmdDogQW55LCByaWdodDogQW55LCB2ZXJib3NlOiBpbnQgPSAwKSAtPiBMaXN0W3N0cl06Cisg
ICAgZXhwbGFuYXRpb24gPSBbXQorICAgIGlmIGlzdGV4dChsZWZ0KSBhbmQgaXN0ZXh0KHJpZ2h0
KToKKyAgICAgICAgZXhwbGFuYXRpb24gPSBfZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3Nl
KQorICAgIGVsc2U6CisgICAgICAgIGlmIGlzc2VxdWVuY2UobGVmdCkgYW5kIGlzc2VxdWVuY2Uo
cmlnaHQpOgorICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXF1ZW5jZShs
ZWZ0LCByaWdodCwgdmVyYm9zZSkKKyAgICAgICAgZWxpZiBpc3NldChsZWZ0KSBhbmQgaXNzZXQo
cmlnaHQpOgorICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXQobGVmdCwg
cmlnaHQsIHZlcmJvc2UpCisgICAgICAgIGVsaWYgaXNkaWN0KGxlZnQpIGFuZCBpc2RpY3Qocmln
aHQpOgorICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9kaWN0KGxlZnQsIHJp
Z2h0LCB2ZXJib3NlKQorICAgICAgICBlbGlmIHR5cGUobGVmdCkgPT0gdHlwZShyaWdodCkgYW5k
IChpc2RhdGFjbHMobGVmdCkgb3IgaXNhdHRycyhsZWZ0KSk6CisgICAgICAgICAgICB0eXBlX2Zu
ID0gKGlzZGF0YWNscywgaXNhdHRycykKKyAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2NvbXBh
cmVfZXFfY2xzKGxlZnQsIHJpZ2h0LCB2ZXJib3NlLCB0eXBlX2ZuKQorICAgICAgICBlbGlmIHZl
cmJvc2UgPiAwOgorICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV92ZXJib3Nl
KGxlZnQsIHJpZ2h0KQorICAgICAgICBpZiBpc2l0ZXJhYmxlKGxlZnQpIGFuZCBpc2l0ZXJhYmxl
KHJpZ2h0KToKKyAgICAgICAgICAgIGV4cGwgPSBfY29tcGFyZV9lcV9pdGVyYWJsZShsZWZ0LCBy
aWdodCwgdmVyYm9zZSkKKyAgICAgICAgICAgIGV4cGxhbmF0aW9uLmV4dGVuZChleHBsKQorICAg
IHJldHVybiBleHBsYW5hdGlvbgorCisKK2RlZiBfZGlmZl90ZXh0KGxlZnQ6IHN0ciwgcmlnaHQ6
IHN0ciwgdmVyYm9zZTogaW50ID0gMCkgLT4gTGlzdFtzdHJdOgorICAgICIiIlJldHVybiB0aGUg
ZXhwbGFuYXRpb24gZm9yIHRoZSBkaWZmIGJldHdlZW4gdGV4dC4KIAogICAgIFVubGVzcyAtLXZl
cmJvc2UgaXMgdXNlZCB0aGlzIHdpbGwgc2tpcCBsZWFkaW5nIGFuZCB0cmFpbGluZwogICAgIGNo
YXJhY3RlcnMgd2hpY2ggYXJlIGlkZW50aWNhbCB0byBrZWVwIHRoZSBkaWZmIG1pbmltYWwuCi0K
LSAgICBJZiB0aGUgaW5wdXQgYXJlIGJ5dGVzIHRoZXkgd2lsbCBiZSBzYWZlbHkgY29udmVydGVk
IHRvIHRleHQuCiAgICAgIiIiCiAgICAgZnJvbSBkaWZmbGliIGltcG9ydCBuZGlmZgogCi0gICAg
ZXhwbGFuYXRpb24gPSBbXQorICAgIGV4cGxhbmF0aW9uID0gW10gICMgdHlwZTogTGlzdFtzdHJd
CiAKLSAgICBkZWYgZXNjYXBlX2Zvcl9yZWFkYWJsZV9kaWZmKGJpbmFyeV90ZXh0KToKLSAgICAg
ICAgIiIiCi0gICAgICAgIEVuc3VyZXMgdGhhdCB0aGUgaW50ZXJuYWwgc3RyaW5nIGlzIGFsd2F5
cyB2YWxpZCB1bmljb2RlLCBjb252ZXJ0aW5nIGFueSBieXRlcyBzYWZlbHkgdG8gdmFsaWQgdW5p
Y29kZS4KLSAgICAgICAgVGhpcyBpcyBkb25lIHVzaW5nIHJlcHIoKSB3aGljaCB0aGVuIG5lZWRz
IHBvc3QtcHJvY2Vzc2luZyB0byBmaXggdGhlIGVuY29tcGFzc2luZyBxdW90ZXMgYW5kIHVuLWVz
Y2FwZQotICAgICAgICBuZXdsaW5lcyBhbmQgY2FycmlhZ2UgcmV0dXJucyAoIzQyOSkuCi0gICAg
ICAgICIiIgotICAgICAgICByID0gc2l4LnRleHRfdHlwZShyZXByKGJpbmFyeV90ZXh0KVsxOi0x
XSkKLSAgICAgICAgciA9IHIucmVwbGFjZShyIlxuIiwgIlxuIikKLSAgICAgICAgciA9IHIucmVw
bGFjZShyIlxyIiwgIlxyIikKLSAgICAgICAgcmV0dXJuIHIKLQotICAgIGlmIGlzaW5zdGFuY2Uo
bGVmdCwgc2l4LmJpbmFyeV90eXBlKToKLSAgICAgICAgbGVmdCA9IGVzY2FwZV9mb3JfcmVhZGFi
bGVfZGlmZihsZWZ0KQotICAgIGlmIGlzaW5zdGFuY2UocmlnaHQsIHNpeC5iaW5hcnlfdHlwZSk6
Ci0gICAgICAgIHJpZ2h0ID0gZXNjYXBlX2Zvcl9yZWFkYWJsZV9kaWZmKHJpZ2h0KQotICAgIGlm
IG5vdCB2ZXJib3NlOgorICAgIGlmIHZlcmJvc2UgPCAxOgogICAgICAgICBpID0gMCAgIyBqdXN0
IGluIGNhc2UgbGVmdCBvciByaWdodCBoYXMgemVybyBsZW5ndGgKICAgICAgICAgZm9yIGkgaW4g
cmFuZ2UobWluKGxlbihsZWZ0KSwgbGVuKHJpZ2h0KSkpOgogICAgICAgICAgICAgaWYgbGVmdFtp
XSAhPSByaWdodFtpXToKQEAgLTE5OSw4ICsyMDgsNyBAQCBkZWYgX2RpZmZfdGV4dChsZWZ0LCBy
aWdodCwgdmVyYm9zZT1GYWxzZSk6CiAgICAgICAgIGlmIGkgPiA0MjoKICAgICAgICAgICAgIGkg
LT0gMTAgICMgUHJvdmlkZSBzb21lIGNvbnRleHQKICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0g
WwotICAgICAgICAgICAgICAgIHUoIlNraXBwaW5nICVzIGlkZW50aWNhbCBsZWFkaW5nICIgImNo
YXJhY3RlcnMgaW4gZGlmZiwgdXNlIC12IHRvIHNob3ciKQotICAgICAgICAgICAgICAgICUgaQor
ICAgICAgICAgICAgICAgICJTa2lwcGluZyAlcyBpZGVudGljYWwgbGVhZGluZyBjaGFyYWN0ZXJz
IGluIGRpZmYsIHVzZSAtdiB0byBzaG93IiAlIGkKICAgICAgICAgICAgIF0KICAgICAgICAgICAg
IGxlZnQgPSBsZWZ0W2k6XQogICAgICAgICAgICAgcmlnaHQgPSByaWdodFtpOl0KQEAgLTIxMSwx
MSArMjE5LDggQEAgZGVmIF9kaWZmX3RleHQobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpOgog
ICAgICAgICAgICAgaWYgaSA+IDQyOgogICAgICAgICAgICAgICAgIGkgLT0gMTAgICMgUHJvdmlk
ZSBzb21lIGNvbnRleHQKICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiArPSBbCi0gICAgICAg
ICAgICAgICAgICAgIHUoCi0gICAgICAgICAgICAgICAgICAgICAgICAiU2tpcHBpbmcgJXMgaWRl
bnRpY2FsIHRyYWlsaW5nICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXJzIGlu
IGRpZmYsIHVzZSAtdiB0byBzaG93IgotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICAgICAgICAgICUgaQorICAgICAgICAgICAgICAgICAgICAiU2tpcHBpbmcge30gaWRlbnRpY2Fs
IHRyYWlsaW5nICIKKyAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlcnMgaW4gZGlmZiwgdXNl
IC12IHRvIHNob3ciLmZvcm1hdChpKQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAg
ICBsZWZ0ID0gbGVmdFs6LWldCiAgICAgICAgICAgICAgICAgcmlnaHQgPSByaWdodFs6LWldCkBA
IC0yMjMsMTE2ICsyMjgsMjUxIEBAIGRlZiBfZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3Nl
PUZhbHNlKToKICAgICBpZiBsZWZ0Lmlzc3BhY2UoKSBvciByaWdodC5pc3NwYWNlKCk6CiAgICAg
ICAgIGxlZnQgPSByZXByKHN0cihsZWZ0KSkKICAgICAgICAgcmlnaHQgPSByZXByKHN0cihyaWdo
dCkpCi0gICAgICAgIGV4cGxhbmF0aW9uICs9IFt1IlN0cmluZ3MgY29udGFpbiBvbmx5IHdoaXRl
c3BhY2UsIGVzY2FwaW5nIHRoZW0gdXNpbmcgcmVwcigpIl0KKyAgICAgICAgZXhwbGFuYXRpb24g
Kz0gWyJTdHJpbmdzIGNvbnRhaW4gb25seSB3aGl0ZXNwYWNlLCBlc2NhcGluZyB0aGVtIHVzaW5n
IHJlcHIoKSJdCisgICAgIyAicmlnaHQiIGlzIHRoZSBleHBlY3RlZCBiYXNlIGFnYWluc3Qgd2hp
Y2ggd2UgY29tcGFyZSAibGVmdCIsCisgICAgIyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzMzCiAgICAgZXhwbGFuYXRpb24gKz0gWwogICAgICAgICBs
aW5lLnN0cmlwKCJcbiIpCi0gICAgICAgIGZvciBsaW5lIGluIG5kaWZmKGxlZnQuc3BsaXRsaW5l
cyhrZWVwZW5kcyksIHJpZ2h0LnNwbGl0bGluZXMoa2VlcGVuZHMpKQorICAgICAgICBmb3IgbGlu
ZSBpbiBuZGlmZihyaWdodC5zcGxpdGxpbmVzKGtlZXBlbmRzKSwgbGVmdC5zcGxpdGxpbmVzKGtl
ZXBlbmRzKSkKICAgICBdCiAgICAgcmV0dXJuIGV4cGxhbmF0aW9uCiAKIAotZGVmIF9jb21wYXJl
X2VxX2l0ZXJhYmxlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKK2RlZiBfY29tcGFyZV9l
cV92ZXJib3NlKGxlZnQ6IEFueSwgcmlnaHQ6IEFueSkgLT4gTGlzdFtzdHJdOgorICAgIGtlZXBl
bmRzID0gVHJ1ZQorICAgIGxlZnRfbGluZXMgPSByZXByKGxlZnQpLnNwbGl0bGluZXMoa2VlcGVu
ZHMpCisgICAgcmlnaHRfbGluZXMgPSByZXByKHJpZ2h0KS5zcGxpdGxpbmVzKGtlZXBlbmRzKQor
CisgICAgZXhwbGFuYXRpb24gPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICBleHBsYW5hdGlv
biArPSBbIisiICsgbGluZSBmb3IgbGluZSBpbiBsZWZ0X2xpbmVzXQorICAgIGV4cGxhbmF0aW9u
ICs9IFsiLSIgKyBsaW5lIGZvciBsaW5lIGluIHJpZ2h0X2xpbmVzXQorCisgICAgcmV0dXJuIGV4
cGxhbmF0aW9uCisKKworZGVmIF9zdXJyb3VuZGluZ19wYXJlbnNfb25fb3duX2xpbmVzKGxpbmVz
OiBMaXN0W3N0cl0pIC0+IE5vbmU6CisgICAgIiIiTW92ZSBvcGVuaW5nL2Nsb3NpbmcgcGFyZW50
aGVzaXMvYnJhY2tldCB0byBvd24gbGluZXMuIiIiCisgICAgb3BlbmluZyA9IGxpbmVzWzBdWzox
XQorICAgIGlmIG9wZW5pbmcgaW4gWyIoIiwgIlsiLCAieyJdOgorICAgICAgICBsaW5lc1swXSA9
ICIgIiArIGxpbmVzWzBdWzE6XQorICAgICAgICBsaW5lc1s6XSA9IFtvcGVuaW5nXSArIGxpbmVz
CisgICAgY2xvc2luZyA9IGxpbmVzWy0xXVstMTpdCisgICAgaWYgY2xvc2luZyBpbiBbIikiLCAi
XSIsICJ9Il06CisgICAgICAgIGxpbmVzWy0xXSA9IGxpbmVzWy0xXVs6LTFdICsgIiwiCisgICAg
ICAgIGxpbmVzWzpdID0gbGluZXMgKyBbY2xvc2luZ10KKworCitkZWYgX2NvbXBhcmVfZXFfaXRl
cmFibGUoCisgICAgbGVmdDogSXRlcmFibGVbQW55XSwgcmlnaHQ6IEl0ZXJhYmxlW0FueV0sIHZl
cmJvc2U6IGludCA9IDAKKykgLT4gTGlzdFtzdHJdOgogICAgIGlmIG5vdCB2ZXJib3NlOgotICAg
ICAgICByZXR1cm4gW3UoIlVzZSAtdiB0byBnZXQgdGhlIGZ1bGwgZGlmZiIpXQorICAgICAgICBy
ZXR1cm4gWyJVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYiXQogICAgICMgZHluYW1pYyBpbXBv
cnQgdG8gc3BlZWR1cCBweXRlc3QKICAgICBpbXBvcnQgZGlmZmxpYgogCi0gICAgdHJ5OgotICAg
ICAgICBsZWZ0X2Zvcm1hdHRpbmcgPSBwcHJpbnQucGZvcm1hdChsZWZ0KS5zcGxpdGxpbmVzKCkK
LSAgICAgICAgcmlnaHRfZm9ybWF0dGluZyA9IHBwcmludC5wZm9ybWF0KHJpZ2h0KS5zcGxpdGxp
bmVzKCkKLSAgICAgICAgZXhwbGFuYXRpb24gPSBbdSgiRnVsbCBkaWZmOiIpXQotICAgIGV4Y2Vw
dCBFeGNlcHRpb246Ci0gICAgICAgICMgaGFjazogUHJldHR5UHJpbnRlci5wZm9ybWF0KCkgaW4g
cHl0aG9uIDIgZmFpbHMgd2hlbiBmb3JtYXR0aW5nIGl0ZW1zIHRoYXQgY2FuJ3QgYmUgc29ydGVk
KCksIGllLCBjYWxsaW5nCi0gICAgICAgICMgc29ydGVkKCkgb24gYSBsaXN0IHdvdWxkIHJhaXNl
LiBTZWUgaXNzdWUgIzcxOC4KLSAgICAgICAgIyBBcyBhIHdvcmthcm91bmQsIHRoZSBmdWxsIGRp
ZmYgaXMgZ2VuZXJhdGVkIGJ5IHVzaW5nIHRoZSByZXByKCkgc3RyaW5nIG9mIGVhY2ggaXRlbSBv
ZiBlYWNoIGNvbnRhaW5lci4KLSAgICAgICAgbGVmdF9mb3JtYXR0aW5nID0gc29ydGVkKHJlcHIo
eCkgZm9yIHggaW4gbGVmdCkKLSAgICAgICAgcmlnaHRfZm9ybWF0dGluZyA9IHNvcnRlZChyZXBy
KHgpIGZvciB4IGluIHJpZ2h0KQotICAgICAgICBleHBsYW5hdGlvbiA9IFt1KCJGdWxsIGRpZmYg
KGZhbGxiYWNrIHRvIGNhbGxpbmcgcmVwciBvbiBlYWNoIGl0ZW0pOiIpXQorICAgIGxlZnRfZm9y
bWF0dGluZyA9IHBwcmludC5wZm9ybWF0KGxlZnQpLnNwbGl0bGluZXMoKQorICAgIHJpZ2h0X2Zv
cm1hdHRpbmcgPSBwcHJpbnQucGZvcm1hdChyaWdodCkuc3BsaXRsaW5lcygpCisKKyAgICAjIFJl
LWZvcm1hdCBmb3IgZGlmZmVyZW50IG91dHB1dCBsZW5ndGhzLgorICAgIGxpbmVzX2xlZnQgPSBs
ZW4obGVmdF9mb3JtYXR0aW5nKQorICAgIGxpbmVzX3JpZ2h0ID0gbGVuKHJpZ2h0X2Zvcm1hdHRp
bmcpCisgICAgaWYgbGluZXNfbGVmdCAhPSBsaW5lc19yaWdodDoKKyAgICAgICAgbGVmdF9mb3Jt
YXR0aW5nID0gX3Bmb3JtYXRfZGlzcGF0Y2gobGVmdCkuc3BsaXRsaW5lcygpCisgICAgICAgIHJp
Z2h0X2Zvcm1hdHRpbmcgPSBfcGZvcm1hdF9kaXNwYXRjaChyaWdodCkuc3BsaXRsaW5lcygpCisK
KyAgICBpZiBsaW5lc19sZWZ0ID4gMSBvciBsaW5lc19yaWdodCA+IDE6CisgICAgICAgIF9zdXJy
b3VuZGluZ19wYXJlbnNfb25fb3duX2xpbmVzKGxlZnRfZm9ybWF0dGluZykKKyAgICAgICAgX3N1
cnJvdW5kaW5nX3BhcmVuc19vbl9vd25fbGluZXMocmlnaHRfZm9ybWF0dGluZykKKworICAgIGV4
cGxhbmF0aW9uID0gWyJGdWxsIGRpZmY6Il0KKyAgICAjICJyaWdodCIgaXMgdGhlIGV4cGVjdGVk
IGJhc2UgYWdhaW5zdCB3aGljaCB3ZSBjb21wYXJlICJsZWZ0IiwKKyAgICAjIHNlZSBodHRwczov
L2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMzMKICAgICBleHBsYW5hdGlv
bi5leHRlbmQoCi0gICAgICAgIGxpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiBkaWZmbGliLm5kaWZm
KGxlZnRfZm9ybWF0dGluZywgcmlnaHRfZm9ybWF0dGluZykKKyAgICAgICAgbGluZS5yc3RyaXAo
KSBmb3IgbGluZSBpbiBkaWZmbGliLm5kaWZmKHJpZ2h0X2Zvcm1hdHRpbmcsIGxlZnRfZm9ybWF0
dGluZykKICAgICApCiAgICAgcmV0dXJuIGV4cGxhbmF0aW9uCiAKIAotZGVmIF9jb21wYXJlX2Vx
X3NlcXVlbmNlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICBleHBsYW5hdGlvbiA9
IFtdCi0gICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbihsZWZ0KSwgbGVuKHJpZ2h0KSkpOgorZGVm
IF9jb21wYXJlX2VxX3NlcXVlbmNlKAorICAgIGxlZnQ6IFNlcXVlbmNlW0FueV0sIHJpZ2h0OiBT
ZXF1ZW5jZVtBbnldLCB2ZXJib3NlOiBpbnQgPSAwCispIC0+IExpc3Rbc3RyXToKKyAgICBjb21w
YXJpbmdfYnl0ZXMgPSBpc2luc3RhbmNlKGxlZnQsIGJ5dGVzKSBhbmQgaXNpbnN0YW5jZShyaWdo
dCwgYnl0ZXMpCisgICAgZXhwbGFuYXRpb24gPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICBs
ZW5fbGVmdCA9IGxlbihsZWZ0KQorICAgIGxlbl9yaWdodCA9IGxlbihyaWdodCkKKyAgICBmb3Ig
aSBpbiByYW5nZShtaW4obGVuX2xlZnQsIGxlbl9yaWdodCkpOgogICAgICAgICBpZiBsZWZ0W2ld
ICE9IHJpZ2h0W2ldOgotICAgICAgICAgICAgZXhwbGFuYXRpb24gKz0gW3UoIkF0IGluZGV4ICVz
IGRpZmY6ICVyICE9ICVyIikgJSAoaSwgbGVmdFtpXSwgcmlnaHRbaV0pXQorICAgICAgICAgICAg
aWYgY29tcGFyaW5nX2J5dGVzOgorICAgICAgICAgICAgICAgICMgd2hlbiBjb21wYXJpbmcgYnl0
ZXMsIHdlIHdhbnQgdG8gc2VlIHRoZWlyIGFzY2lpIHJlcHJlc2VudGF0aW9uCisgICAgICAgICAg
ICAgICAgIyBpbnN0ZWFkIG9mIHRoZWlyIG51bWVyaWMgdmFsdWVzICgjNTI2MCkKKyAgICAgICAg
ICAgICAgICAjIHVzaW5nIGEgc2xpY2UgZ2l2ZXMgdXMgdGhlIGFzY2lpIHJlcHJlc2VudGF0aW9u
OgorICAgICAgICAgICAgICAgICMgPj4+IHMgPSBiJ2ZvbycKKyAgICAgICAgICAgICAgICAjID4+
PiBzWzBdCisgICAgICAgICAgICAgICAgIyAxMDIKKyAgICAgICAgICAgICAgICAjID4+PiBzWzA6
MV0KKyAgICAgICAgICAgICAgICAjIGInZicKKyAgICAgICAgICAgICAgICBsZWZ0X3ZhbHVlID0g
bGVmdFtpIDogaSArIDFdCisgICAgICAgICAgICAgICAgcmlnaHRfdmFsdWUgPSByaWdodFtpIDog
aSArIDFdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxlZnRfdmFsdWUgPSBs
ZWZ0W2ldCisgICAgICAgICAgICAgICAgcmlnaHRfdmFsdWUgPSByaWdodFtpXQorCisgICAgICAg
ICAgICBleHBsYW5hdGlvbiArPSBbCisgICAgICAgICAgICAgICAgIkF0IGluZGV4IHt9IGRpZmY6
IHshcn0gIT0geyFyfSIuZm9ybWF0KGksIGxlZnRfdmFsdWUsIHJpZ2h0X3ZhbHVlKQorICAgICAg
ICAgICAgXQogICAgICAgICAgICAgYnJlYWsKLSAgICBpZiBsZW4obGVmdCkgPiBsZW4ocmlnaHQp
OgotICAgICAgICBleHBsYW5hdGlvbiArPSBbCi0gICAgICAgICAgICB1KCJMZWZ0IGNvbnRhaW5z
IG1vcmUgaXRlbXMsIGZpcnN0IGV4dHJhIGl0ZW06ICVzIikKLSAgICAgICAgICAgICUgcHkuaW8u
c2FmZXJlcHIobGVmdFtsZW4ocmlnaHQpXSkKLSAgICAgICAgXQotICAgIGVsaWYgbGVuKGxlZnQp
IDwgbGVuKHJpZ2h0KToKLSAgICAgICAgZXhwbGFuYXRpb24gKz0gWwotICAgICAgICAgICAgdSgi
UmlnaHQgY29udGFpbnMgbW9yZSBpdGVtcywgZmlyc3QgZXh0cmEgaXRlbTogJXMiKQotICAgICAg
ICAgICAgJSBweS5pby5zYWZlcmVwcihyaWdodFtsZW4obGVmdCldKQotICAgICAgICBdCisKKyAg
ICBpZiBjb21wYXJpbmdfYnl0ZXM6CisgICAgICAgICMgd2hlbiBjb21wYXJpbmcgYnl0ZXMsIGl0
IGRvZXNuJ3QgaGVscCB0byBzaG93IHRoZSAic2lkZXMgY29udGFpbiBvbmUgb3IgbW9yZQorICAg
ICAgICAjIGl0ZW1zIiBsb25nZXIgZXhwbGFuYXRpb24sIHNvIHNraXAgaXQKKworICAgICAgICBy
ZXR1cm4gZXhwbGFuYXRpb24KKworICAgIGxlbl9kaWZmID0gbGVuX2xlZnQgLSBsZW5fcmlnaHQK
KyAgICBpZiBsZW5fZGlmZjoKKyAgICAgICAgaWYgbGVuX2RpZmYgPiAwOgorICAgICAgICAgICAg
ZGlyX3dpdGhfbW9yZSA9ICJMZWZ0IgorICAgICAgICAgICAgZXh0cmEgPSBzYWZlcmVwcihsZWZ0
W2xlbl9yaWdodF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsZW5fZGlmZiA9IDAgLSBs
ZW5fZGlmZgorICAgICAgICAgICAgZGlyX3dpdGhfbW9yZSA9ICJSaWdodCIKKyAgICAgICAgICAg
IGV4dHJhID0gc2FmZXJlcHIocmlnaHRbbGVuX2xlZnRdKQorCisgICAgICAgIGlmIGxlbl9kaWZm
ID09IDE6CisgICAgICAgICAgICBleHBsYW5hdGlvbiArPSBbCisgICAgICAgICAgICAgICAgInt9
IGNvbnRhaW5zIG9uZSBtb3JlIGl0ZW06IHt9Ii5mb3JtYXQoZGlyX3dpdGhfbW9yZSwgZXh0cmEp
CisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHBsYW5hdGlvbiAr
PSBbCisgICAgICAgICAgICAgICAgIiVzIGNvbnRhaW5zICVkIG1vcmUgaXRlbXMsIGZpcnN0IGV4
dHJhIGl0ZW06ICVzIgorICAgICAgICAgICAgICAgICUgKGRpcl93aXRoX21vcmUsIGxlbl9kaWZm
LCBleHRyYSkKKyAgICAgICAgICAgIF0KICAgICByZXR1cm4gZXhwbGFuYXRpb24KIAogCi1kZWYg
X2NvbXBhcmVfZXFfc2V0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKK2RlZiBfY29tcGFy
ZV9lcV9zZXQoCisgICAgbGVmdDogQWJzdHJhY3RTZXRbQW55XSwgcmlnaHQ6IEFic3RyYWN0U2V0
W0FueV0sIHZlcmJvc2U6IGludCA9IDAKKykgLT4gTGlzdFtzdHJdOgogICAgIGV4cGxhbmF0aW9u
ID0gW10KICAgICBkaWZmX2xlZnQgPSBsZWZ0IC0gcmlnaHQKICAgICBkaWZmX3JpZ2h0ID0gcmln
aHQgLSBsZWZ0CiAgICAgaWYgZGlmZl9sZWZ0OgotICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQo
dSgiRXh0cmEgaXRlbXMgaW4gdGhlIGxlZnQgc2V0OiIpKQorICAgICAgICBleHBsYW5hdGlvbi5h
cHBlbmQoIkV4dHJhIGl0ZW1zIGluIHRoZSBsZWZ0IHNldDoiKQogICAgICAgICBmb3IgaXRlbSBp
biBkaWZmX2xlZnQ6Ci0gICAgICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQocHkuaW8uc2FmZXJl
cHIoaXRlbSkpCisgICAgICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQoc2FmZXJlcHIoaXRlbSkp
CiAgICAgaWYgZGlmZl9yaWdodDoKLSAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHUoIkV4dHJh
IGl0ZW1zIGluIHRoZSByaWdodCBzZXQ6IikpCisgICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCgi
RXh0cmEgaXRlbXMgaW4gdGhlIHJpZ2h0IHNldDoiKQogICAgICAgICBmb3IgaXRlbSBpbiBkaWZm
X3JpZ2h0OgotICAgICAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHB5LmlvLnNhZmVyZXByKGl0
ZW0pKQorICAgICAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHNhZmVyZXByKGl0ZW0pKQogICAg
IHJldHVybiBleHBsYW5hdGlvbgogCiAKLWRlZiBfY29tcGFyZV9lcV9kaWN0KGxlZnQsIHJpZ2h0
LCB2ZXJib3NlPUZhbHNlKToKLSAgICBleHBsYW5hdGlvbiA9IFtdCi0gICAgY29tbW9uID0gc2V0
KGxlZnQpLmludGVyc2VjdGlvbihzZXQocmlnaHQpKQorZGVmIF9jb21wYXJlX2VxX2RpY3QoCisg
ICAgbGVmdDogTWFwcGluZ1tBbnksIEFueV0sIHJpZ2h0OiBNYXBwaW5nW0FueSwgQW55XSwgdmVy
Ym9zZTogaW50ID0gMAorKSAtPiBMaXN0W3N0cl06CisgICAgZXhwbGFuYXRpb24gPSBbXSAgIyB0
eXBlOiBMaXN0W3N0cl0KKyAgICBzZXRfbGVmdCA9IHNldChsZWZ0KQorICAgIHNldF9yaWdodCA9
IHNldChyaWdodCkKKyAgICBjb21tb24gPSBzZXRfbGVmdC5pbnRlcnNlY3Rpb24oc2V0X3JpZ2h0
KQogICAgIHNhbWUgPSB7azogbGVmdFtrXSBmb3IgayBpbiBjb21tb24gaWYgbGVmdFtrXSA9PSBy
aWdodFtrXX0KICAgICBpZiBzYW1lIGFuZCB2ZXJib3NlIDwgMjoKLSAgICAgICAgZXhwbGFuYXRp
b24gKz0gW3UoIk9taXR0aW5nICVzIGlkZW50aWNhbCBpdGVtcywgdXNlIC12diB0byBzaG93Iikg
JSBsZW4oc2FtZSldCisgICAgICAgIGV4cGxhbmF0aW9uICs9IFsiT21pdHRpbmcgJXMgaWRlbnRp
Y2FsIGl0ZW1zLCB1c2UgLXZ2IHRvIHNob3ciICUgbGVuKHNhbWUpXQogICAgIGVsaWYgc2FtZToK
LSAgICAgICAgZXhwbGFuYXRpb24gKz0gW3UoIkNvbW1vbiBpdGVtczoiKV0KKyAgICAgICAgZXhw
bGFuYXRpb24gKz0gWyJDb21tb24gaXRlbXM6Il0KICAgICAgICAgZXhwbGFuYXRpb24gKz0gcHBy
aW50LnBmb3JtYXQoc2FtZSkuc3BsaXRsaW5lcygpCiAgICAgZGlmZiA9IHtrIGZvciBrIGluIGNv
bW1vbiBpZiBsZWZ0W2tdICE9IHJpZ2h0W2tdfQogICAgIGlmIGRpZmY6Ci0gICAgICAgIGV4cGxh
bmF0aW9uICs9IFt1KCJEaWZmZXJpbmcgaXRlbXM6IildCisgICAgICAgIGV4cGxhbmF0aW9uICs9
IFsiRGlmZmVyaW5nIGl0ZW1zOiJdCiAgICAgICAgIGZvciBrIGluIGRpZmY6Ci0gICAgICAgICAg
ICBleHBsYW5hdGlvbiArPSBbCi0gICAgICAgICAgICAgICAgcHkuaW8uc2FmZXJlcHIoe2s6IGxl
ZnRba119KSArICIgIT0gIiArIHB5LmlvLnNhZmVyZXByKHtrOiByaWdodFtrXX0pCi0gICAgICAg
ICAgICBdCi0gICAgZXh0cmFfbGVmdCA9IHNldChsZWZ0KSAtIHNldChyaWdodCkKLSAgICBpZiBl
eHRyYV9sZWZ0OgotICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQodSgiTGVmdCBjb250YWlucyBt
b3JlIGl0ZW1zOiIpKQorICAgICAgICAgICAgZXhwbGFuYXRpb24gKz0gW3NhZmVyZXByKHtrOiBs
ZWZ0W2tdfSkgKyAiICE9ICIgKyBzYWZlcmVwcih7azogcmlnaHRba119KV0KKyAgICBleHRyYV9s
ZWZ0ID0gc2V0X2xlZnQgLSBzZXRfcmlnaHQKKyAgICBsZW5fZXh0cmFfbGVmdCA9IGxlbihleHRy
YV9sZWZ0KQorICAgIGlmIGxlbl9leHRyYV9sZWZ0OgorICAgICAgICBleHBsYW5hdGlvbi5hcHBl
bmQoCisgICAgICAgICAgICAiTGVmdCBjb250YWlucyAlZCBtb3JlIGl0ZW0lczoiCisgICAgICAg
ICAgICAlIChsZW5fZXh0cmFfbGVmdCwgIiIgaWYgbGVuX2V4dHJhX2xlZnQgPT0gMSBlbHNlICJz
IikKKyAgICAgICAgKQogICAgICAgICBleHBsYW5hdGlvbi5leHRlbmQoCiAgICAgICAgICAgICBw
cHJpbnQucGZvcm1hdCh7azogbGVmdFtrXSBmb3IgayBpbiBleHRyYV9sZWZ0fSkuc3BsaXRsaW5l
cygpCiAgICAgICAgICkKLSAgICBleHRyYV9yaWdodCA9IHNldChyaWdodCkgLSBzZXQobGVmdCkK
LSAgICBpZiBleHRyYV9yaWdodDoKLSAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHUoIlJpZ2h0
IGNvbnRhaW5zIG1vcmUgaXRlbXM6IikpCisgICAgZXh0cmFfcmlnaHQgPSBzZXRfcmlnaHQgLSBz
ZXRfbGVmdAorICAgIGxlbl9leHRyYV9yaWdodCA9IGxlbihleHRyYV9yaWdodCkKKyAgICBpZiBs
ZW5fZXh0cmFfcmlnaHQ6CisgICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCgKKyAgICAgICAgICAg
ICJSaWdodCBjb250YWlucyAlZCBtb3JlIGl0ZW0lczoiCisgICAgICAgICAgICAlIChsZW5fZXh0
cmFfcmlnaHQsICIiIGlmIGxlbl9leHRyYV9yaWdodCA9PSAxIGVsc2UgInMiKQorICAgICAgICAp
CiAgICAgICAgIGV4cGxhbmF0aW9uLmV4dGVuZCgKICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0
KHtrOiByaWdodFtrXSBmb3IgayBpbiBleHRyYV9yaWdodH0pLnNwbGl0bGluZXMoKQogICAgICAg
ICApCiAgICAgcmV0dXJuIGV4cGxhbmF0aW9uCiAKIAotZGVmIF9ub3Rpbl90ZXh0KHRlcm0sIHRl
eHQsIHZlcmJvc2U9RmFsc2UpOgorZGVmIF9jb21wYXJlX2VxX2NscygKKyAgICBsZWZ0OiBBbnks
CisgICAgcmlnaHQ6IEFueSwKKyAgICB2ZXJib3NlOiBpbnQsCisgICAgdHlwZV9mbnM6IFR1cGxl
W0NhbGxhYmxlW1tBbnldLCBib29sXSwgQ2FsbGFibGVbW0FueV0sIGJvb2xdXSwKKykgLT4gTGlz
dFtzdHJdOgorICAgIGlzZGF0YWNscywgaXNhdHRycyA9IHR5cGVfZm5zCisgICAgaWYgaXNkYXRh
Y2xzKGxlZnQpOgorICAgICAgICBhbGxfZmllbGRzID0gbGVmdC5fX2RhdGFjbGFzc19maWVsZHNf
XworICAgICAgICBmaWVsZHNfdG9fY2hlY2sgPSBbZmllbGQgZm9yIGZpZWxkLCBpbmZvIGluIGFs
bF9maWVsZHMuaXRlbXMoKSBpZiBpbmZvLmNvbXBhcmVdCisgICAgZWxpZiBpc2F0dHJzKGxlZnQp
OgorICAgICAgICBhbGxfZmllbGRzID0gbGVmdC5fX2F0dHJzX2F0dHJzX18KKyAgICAgICAgZmll
bGRzX3RvX2NoZWNrID0gWworICAgICAgICAgICAgZmllbGQubmFtZSBmb3IgZmllbGQgaW4gYWxs
X2ZpZWxkcyBpZiBnZXRhdHRyKGZpZWxkLCBBVFRSU19FUV9GSUVMRCkKKyAgICAgICAgXQorCisg
ICAgaW5kZW50ID0gIiAgIgorICAgIHNhbWUgPSBbXQorICAgIGRpZmYgPSBbXQorICAgIGZvciBm
aWVsZCBpbiBmaWVsZHNfdG9fY2hlY2s6CisgICAgICAgIGlmIGdldGF0dHIobGVmdCwgZmllbGQp
ID09IGdldGF0dHIocmlnaHQsIGZpZWxkKToKKyAgICAgICAgICAgIHNhbWUuYXBwZW5kKGZpZWxk
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlmZi5hcHBlbmQoZmllbGQpCisKKyAgICBl
eHBsYW5hdGlvbiA9IFtdCisgICAgaWYgc2FtZSBvciBkaWZmOgorICAgICAgICBleHBsYW5hdGlv
biArPSBbIiJdCisgICAgaWYgc2FtZSBhbmQgdmVyYm9zZSA8IDI6CisgICAgICAgIGV4cGxhbmF0
aW9uLmFwcGVuZCgiT21pdHRpbmcgJXMgaWRlbnRpY2FsIGl0ZW1zLCB1c2UgLXZ2IHRvIHNob3ci
ICUgbGVuKHNhbWUpKQorICAgIGVsaWYgc2FtZToKKyAgICAgICAgZXhwbGFuYXRpb24gKz0gWyJN
YXRjaGluZyBhdHRyaWJ1dGVzOiJdCisgICAgICAgIGV4cGxhbmF0aW9uICs9IHBwcmludC5wZm9y
bWF0KHNhbWUpLnNwbGl0bGluZXMoKQorICAgIGlmIGRpZmY6CisgICAgICAgIGV4cGxhbmF0aW9u
ICs9IFsiRGlmZmVyaW5nIGF0dHJpYnV0ZXM6Il0KKyAgICAgICAgZXhwbGFuYXRpb24gKz0gcHBy
aW50LnBmb3JtYXQoZGlmZikuc3BsaXRsaW5lcygpCisgICAgICAgIGZvciBmaWVsZCBpbiBkaWZm
OgorICAgICAgICAgICAgZmllbGRfbGVmdCA9IGdldGF0dHIobGVmdCwgZmllbGQpCisgICAgICAg
ICAgICBmaWVsZF9yaWdodCA9IGdldGF0dHIocmlnaHQsIGZpZWxkKQorICAgICAgICAgICAgZXhw
bGFuYXRpb24gKz0gWworICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJEcmls
bCBkb3duIGludG8gZGlmZmVyaW5nIGF0dHJpYnV0ZSAlczoiICUgZmllbGQsCisgICAgICAgICAg
ICAgICAgKCIlcyVzOiAlciAhPSAlciIpICUgKGluZGVudCwgZmllbGQsIGZpZWxkX2xlZnQsIGZp
ZWxkX3JpZ2h0KSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGV4cGxhbmF0aW9uICs9IFsK
KyAgICAgICAgICAgICAgICBpbmRlbnQgKyBsaW5lCisgICAgICAgICAgICAgICAgZm9yIGxpbmUg
aW4gX2NvbXBhcmVfZXFfYW55KGZpZWxkX2xlZnQsIGZpZWxkX3JpZ2h0LCB2ZXJib3NlKQorICAg
ICAgICAgICAgXQorICAgIHJldHVybiBleHBsYW5hdGlvbgorCisKK2RlZiBfbm90aW5fdGV4dCh0
ZXJtOiBzdHIsIHRleHQ6IHN0ciwgdmVyYm9zZTogaW50ID0gMCkgLT4gTGlzdFtzdHJdOgogICAg
IGluZGV4ID0gdGV4dC5maW5kKHRlcm0pCiAgICAgaGVhZCA9IHRleHRbOmluZGV4XQotICAgIHRh
aWwgPSB0ZXh0W2luZGV4ICsgbGVuKHRlcm0pOl0KKyAgICB0YWlsID0gdGV4dFtpbmRleCArIGxl
bih0ZXJtKSA6XQogICAgIGNvcnJlY3RfdGV4dCA9IGhlYWQgKyB0YWlsCi0gICAgZGlmZiA9IF9k
aWZmX3RleHQoY29ycmVjdF90ZXh0LCB0ZXh0LCB2ZXJib3NlKQotICAgIG5ld2RpZmYgPSBbdSgi
JXMgaXMgY29udGFpbmVkIGhlcmU6IikgJSBweS5pby5zYWZlcmVwcih0ZXJtLCBtYXhzaXplPTQy
KV0KKyAgICBkaWZmID0gX2RpZmZfdGV4dCh0ZXh0LCBjb3JyZWN0X3RleHQsIHZlcmJvc2UpCisg
ICAgbmV3ZGlmZiA9IFsiJXMgaXMgY29udGFpbmVkIGhlcmU6IiAlIHNhZmVyZXByKHRlcm0sIG1h
eHNpemU9NDIpXQogICAgIGZvciBsaW5lIGluIGRpZmY6Ci0gICAgICAgIGlmIGxpbmUuc3RhcnRz
d2l0aCh1KCJTa2lwcGluZyIpKToKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJTa2lwcGlu
ZyIpOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKHUo
Ii0gIikpOgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIi0gIik6CiAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodSgiKyAiKSk6Ci0gICAgICAgICAg
ICBuZXdkaWZmLmFwcGVuZCh1KCIgICIpICsgbGluZVsyOl0pCisgICAgICAgIGlmIGxpbmUuc3Rh
cnRzd2l0aCgiKyAiKToKKyAgICAgICAgICAgIG5ld2RpZmYuYXBwZW5kKCIgICIgKyBsaW5lWzI6
XSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5ld2RpZmYuYXBwZW5kKGxpbmUpCiAgICAg
cmV0dXJuIG5ld2RpZmYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2Vy
dGlvbi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Fzc2VydGlvbi93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVkYjNiYTJlZTE5
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9hc3NlcnRpb24vdHJ1bmNhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRp
b24vdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY2FjaGVwcm92
aWRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkKaW5kZXgg
ZWIwZmNjMDZmOWJkLi5iMDQzMDVlZDlkMjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY2Fj
aGVwcm92aWRlci5weQpAQCAtMSwxNDIgKzEsMjg3IEBACisiIiJJbXBsZW1lbnRhdGlvbiBvZiB0
aGUgY2FjaGUgcHJvdmlkZXIuIiIiCisjIFRoaXMgcGx1Z2luIHdhcyBub3QgbmFtZWQgImNhY2hl
IiB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgZXh0ZXJuYWwKKyMgcHl0ZXN0LWNhY2hlIHZl
cnNpb24uCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAor
ZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxl
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitm
cm9tIHR5cGluZyBpbXBvcnQgU2V0Citmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0
IGF0dHIKK2ltcG9ydCBweQorCitpbXBvcnQgcHl0ZXN0Citmcm9tIC5wYXRobGliIGltcG9ydCBQ
YXRoCitmcm9tIC5wYXRobGliIGltcG9ydCByZXNvbHZlX2Zyb21fc3RyCitmcm9tIC5wYXRobGli
IGltcG9ydCBybV9yZgorZnJvbSAucmVwb3J0cyBpbXBvcnQgQ29sbGVjdFJlcG9ydAorZnJvbSBf
cHl0ZXN0IGltcG9ydCBub2RlcworZnJvbSBfcHl0ZXN0Ll9pbyBpbXBvcnQgVGVybWluYWxXcml0
ZXIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBvcmRlcl9wcmVzZXJ2aW5nX2RpY3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0
IENvbmZpZworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVz
dC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZml4dHVyZXMg
aW1wb3J0IEZpeHR1cmVSZXF1ZXN0Citmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgor
ZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgTW9kdWxlCitmcm9tIF9weXRlc3QucmVwb3J0cyBp
bXBvcnQgVGVzdFJlcG9ydAorCisKK1JFQURNRV9DT05URU5UID0gIiIiXAorIyBweXRlc3QgY2Fj
aGUgZGlyZWN0b3J5ICMKKworVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZGF0YSBmcm9tIHRoZSBw
eXRlc3QncyBjYWNoZSBwbHVnaW4sCit3aGljaCBwcm92aWRlcyB0aGUgYC0tbGZgIGFuZCBgLS1m
ZmAgb3B0aW9ucywgYXMgd2VsbCBhcyB0aGUgYGNhY2hlYCBmaXh0dXJlLgorCisqKkRvIG5vdCoq
IGNvbW1pdCB0aGlzIHRvIHZlcnNpb24gY29udHJvbC4KKworU2VlIFt0aGUgZG9jc10oaHR0cHM6
Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlL2NhY2hlLmh0bWwpIGZvciBtb3JlIGluZm9ybWF0
aW9uLgogIiIiCi1tZXJnZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHByb3ZpZGVyCiAK
LXRoZSBuYW1lIGNhY2hlIHdhcyBub3QgY2hvc2VuIHRvIGVuc3VyZSBwbHVnZ3kgYXV0b21hdGlj
YWxseQotaWdub3JlcyB0aGUgZXh0ZXJuYWwgcHl0ZXN0LWNhY2hlCitDQUNIRURJUl9UQUdfQ09O
VEVOVCA9IGIiIiJcCitTaWduYXR1cmU6IDhhNDc3ZjU5N2QyOGQxNzI3ODlmMDY4ODY4MDZiYzU1
CisjIFRoaXMgZmlsZSBpcyBhIGNhY2hlIGRpcmVjdG9yeSB0YWcgY3JlYXRlZCBieSBweXRlc3Qu
CisjIEZvciBpbmZvcm1hdGlvbiBhYm91dCBjYWNoZSBkaXJlY3RvcnkgdGFncywgc2VlOgorIwlo
dHRwOi8vd3d3LmJmb3JkLmluZm8vY2FjaGVkaXIvc3BlYy5odG1sCiAiIiIKLWZyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KIAot
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIAotaW1wb3J0IHB5Ci1pbXBvcnQg
c2l4CitAZmluYWwKK0BhdHRyLnMKK2NsYXNzIENhY2hlOgorICAgIF9jYWNoZWRpciA9IGF0dHIu
aWIodHlwZT1QYXRoLCByZXByPUZhbHNlKQorICAgIF9jb25maWcgPSBhdHRyLmliKHR5cGU9Q29u
ZmlnLCByZXByPUZhbHNlKQogCi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQganNvbgotaW1wb3J0IG9z
Ci1mcm9tIG9zLnBhdGggaW1wb3J0IHNlcCBhcyBfc2VwLCBhbHRzZXAgYXMgX2FsdHNlcAorICAg
ICMgc3ViLWRpcmVjdG9yeSB1bmRlciBjYWNoZS1kaXIgZm9yIGRpcmVjdG9yaWVzIGNyZWF0ZWQg
YnkgIm1ha2VkaXIiCisgICAgX0NBQ0hFX1BSRUZJWF9ESVJTID0gImQiCiAKKyAgICAjIHN1Yi1k
aXJlY3RvcnkgdW5kZXIgY2FjaGUtZGlyIGZvciB2YWx1ZXMgY3JlYXRlZCBieSAic2V0IgorICAg
IF9DQUNIRV9QUkVGSVhfVkFMVUVTID0gInYiCiAKLWNsYXNzIENhY2hlKG9iamVjdCk6CisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGZvcl9jb25maWcoY2xzLCBjb25maWc6IENvbmZpZykgLT4g
IkNhY2hlIjoKKyAgICAgICAgY2FjaGVkaXIgPSBjbHMuY2FjaGVfZGlyX2Zyb21fY29uZmlnKGNv
bmZpZykKKyAgICAgICAgaWYgY29uZmlnLmdldG9wdGlvbigiY2FjaGVjbGVhciIpIGFuZCBjYWNo
ZWRpci5pc19kaXIoKToKKyAgICAgICAgICAgIGNscy5jbGVhcl9jYWNoZShjYWNoZWRpcikKKyAg
ICAgICAgcmV0dXJuIGNscyhjYWNoZWRpciwgY29uZmlnKQogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNvbmZpZyk6Ci0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0gICAgICAgIHNlbGYu
X2NhY2hlZGlyID0gQ2FjaGUuY2FjaGVfZGlyX2Zyb21fY29uZmlnKGNvbmZpZykKLSAgICAgICAg
c2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5yb290LmdldCgiY2FjaGUiKQotICAgICAgICBpZiBj
b25maWcuZ2V0b3B0aW9uKCJjYWNoZWNsZWFyIik6Ci0gICAgICAgICAgICBzZWxmLnRyYWNlKCJj
bGVhcmluZyBjYWNoZWRpciIpCi0gICAgICAgICAgICBpZiBzZWxmLl9jYWNoZWRpci5jaGVjaygp
OgotICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZGlyLnJlbW92ZSgpCi0gICAgICAgICAgICBz
ZWxmLl9jYWNoZWRpci5ta2RpcigpCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGNsZWFyX2Nh
Y2hlKGNscywgY2FjaGVkaXI6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIkNsZWFyIHRoZSBz
dWItZGlyZWN0b3JpZXMgdXNlZCB0byBob2xkIGNhY2hlZCBkaXJlY3RvcmllcyBhbmQgdmFsdWVz
LiIiIgorICAgICAgICBmb3IgcHJlZml4IGluIChjbHMuX0NBQ0hFX1BSRUZJWF9ESVJTLCBjbHMu
X0NBQ0hFX1BSRUZJWF9WQUxVRVMpOgorICAgICAgICAgICAgZCA9IGNhY2hlZGlyIC8gcHJlZml4
CisgICAgICAgICAgICBpZiBkLmlzX2RpcigpOgorICAgICAgICAgICAgICAgIHJtX3JmKGQpCiAK
ICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGNhY2hlX2Rpcl9mcm9tX2NvbmZpZyhjb25maWcp
OgotICAgICAgICBjYWNoZV9kaXIgPSBjb25maWcuZ2V0aW5pKCJjYWNoZV9kaXIiKQotICAgICAg
ICBjYWNoZV9kaXIgPSBvcy5wYXRoLmV4cGFuZHVzZXIoY2FjaGVfZGlyKQotICAgICAgICBjYWNo
ZV9kaXIgPSBvcy5wYXRoLmV4cGFuZHZhcnMoY2FjaGVfZGlyKQotICAgICAgICBpZiBvcy5wYXRo
LmlzYWJzKGNhY2hlX2Rpcik6Ci0gICAgICAgICAgICByZXR1cm4gcHkucGF0aC5sb2NhbChjYWNo
ZV9kaXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY29uZmlnLnJvb3RkaXIu
am9pbihjYWNoZV9kaXIpCi0KLSAgICBkZWYgbWFrZWRpcihzZWxmLCBuYW1lKToKLSAgICAgICAg
IiIiIHJldHVybiBhIGRpcmVjdG9yeSBwYXRoIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAg
SWYgdGhlCi0gICAgICAgIGRpcmVjdG9yeSBkb2VzIG5vdCB5ZXQgZXhpc3QsIGl0IHdpbGwgYmUg
Y3JlYXRlZC4gIFlvdSBjYW4gdXNlIGl0Ci0gICAgICAgIHRvIG1hbmFnZSBmaWxlcyBsaWtlcyBl
LiBnLiBzdG9yZS9yZXRyaWV2ZSBkYXRhYmFzZQotICAgICAgICBkdW1wcyBhY3Jvc3MgdGVzdCBz
ZXNzaW9ucy4KLQotICAgICAgICA6cGFyYW0gbmFtZTogbXVzdCBiZSBhIHN0cmluZyBub3QgY29u
dGFpbmluZyBhIGBgL2BgIHNlcGFyYXRvci4KLSAgICAgICAgICAgICBNYWtlIHN1cmUgdGhlIG5h
bWUgY29udGFpbnMgeW91ciBwbHVnaW4gb3IgYXBwbGljYXRpb24KLSAgICAgICAgICAgICBpZGVu
dGlmaWVycyB0byBwcmV2ZW50IGNsYXNoZXMgd2l0aCBvdGhlciBjYWNoZSB1c2Vycy4KKyAgICBk
ZWYgY2FjaGVfZGlyX2Zyb21fY29uZmlnKGNvbmZpZzogQ29uZmlnKSAtPiBQYXRoOgorICAgICAg
ICByZXR1cm4gcmVzb2x2ZV9mcm9tX3N0cihjb25maWcuZ2V0aW5pKCJjYWNoZV9kaXIiKSwgY29u
ZmlnLnJvb3RwYXRoKQorCisgICAgZGVmIHdhcm4oc2VsZiwgZm10OiBzdHIsICoqYXJnczogb2Jq
ZWN0KSAtPiBOb25lOgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgZnJvbSBfcHl0
ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdENhY2hlV2FybmluZworCisgICAgICAgIHdh
cm5pbmdzLndhcm4oCisgICAgICAgICAgICBQeXRlc3RDYWNoZVdhcm5pbmcoZm10LmZvcm1hdCgq
KmFyZ3MpIGlmIGFyZ3MgZWxzZSBmbXQpLAorICAgICAgICAgICAgc2VsZi5fY29uZmlnLmhvb2ss
CisgICAgICAgICAgICBzdGFja2xldmVsPTMsCisgICAgICAgICkKKworICAgIGRlZiBtYWtlZGly
KHNlbGYsIG5hbWU6IHN0cikgLT4gcHkucGF0aC5sb2NhbDoKKyAgICAgICAgIiIiUmV0dXJuIGEg
ZGlyZWN0b3J5IHBhdGggb2JqZWN0IHdpdGggdGhlIGdpdmVuIG5hbWUuCisKKyAgICAgICAgSWYg
dGhlIGRpcmVjdG9yeSBkb2VzIG5vdCB5ZXQgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC4gWW91
IGNhbiB1c2UKKyAgICAgICAgaXQgdG8gbWFuYWdlIGZpbGVzIHRvIGUuZy4gc3RvcmUvcmV0cmll
dmUgZGF0YWJhc2UgZHVtcHMgYWNyb3NzIHRlc3QKKyAgICAgICAgc2Vzc2lvbnMuCisKKyAgICAg
ICAgOnBhcmFtIG5hbWU6CisgICAgICAgICAgICBNdXN0IGJlIGEgc3RyaW5nIG5vdCBjb250YWlu
aW5nIGEgYGAvYGAgc2VwYXJhdG9yLgorICAgICAgICAgICAgTWFrZSBzdXJlIHRoZSBuYW1lIGNv
bnRhaW5zIHlvdXIgcGx1Z2luIG9yIGFwcGxpY2F0aW9uCisgICAgICAgICAgICBpZGVudGlmaWVy
cyB0byBwcmV2ZW50IGNsYXNoZXMgd2l0aCBvdGhlciBjYWNoZSB1c2Vycy4KICAgICAgICAgIiIi
Ci0gICAgICAgIGlmIF9zZXAgaW4gbmFtZSBvciBfYWx0c2VwIGlzIG5vdCBOb25lIGFuZCBfYWx0
c2VwIGluIG5hbWU6CisgICAgICAgIHBhdGggPSBQYXRoKG5hbWUpCisgICAgICAgIGlmIGxlbihw
YXRoLnBhcnRzKSA+IDE6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuYW1lIGlzIG5v
dCBhbGxvd2VkIHRvIGNvbnRhaW4gcGF0aCBzZXBhcmF0b3JzIikKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2NhY2hlZGlyLmVuc3VyZV9kaXIoImQiLCBuYW1lKQorICAgICAgICByZXMgPSBzZWxmLl9j
YWNoZWRpci5qb2lucGF0aChzZWxmLl9DQUNIRV9QUkVGSVhfRElSUywgcGF0aCkKKyAgICAgICAg
cmVzLm1rZGlyKGV4aXN0X29rPVRydWUsIHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIHB5
LnBhdGgubG9jYWwocmVzKQogCi0gICAgZGVmIF9nZXR2YWx1ZXBhdGgoc2VsZiwga2V5KToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZGlyLmpvaW4oInYiLCAqa2V5LnNwbGl0KCIvIikpCisg
ICAgZGVmIF9nZXR2YWx1ZXBhdGgoc2VsZiwga2V5OiBzdHIpIC0+IFBhdGg6CisgICAgICAgIHJl
dHVybiBzZWxmLl9jYWNoZWRpci5qb2lucGF0aChzZWxmLl9DQUNIRV9QUkVGSVhfVkFMVUVTLCBQ
YXRoKGtleSkpCiAKLSAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmYXVsdCk6Ci0gICAgICAgICIi
IiByZXR1cm4gY2FjaGVkIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LiAgSWYgbm8gdmFsdWUKLSAg
ICAgICAgd2FzIHlldCBjYWNoZWQgb3IgdGhlIHZhbHVlIGNhbm5vdCBiZSByZWFkLCB0aGUgc3Bl
Y2lmaWVkCi0gICAgICAgIGRlZmF1bHQgaXMgcmV0dXJuZWQuCisgICAgZGVmIGdldChzZWxmLCBr
ZXk6IHN0ciwgZGVmYXVsdCk6CisgICAgICAgICIiIlJldHVybiB0aGUgY2FjaGVkIHZhbHVlIGZv
ciB0aGUgZ2l2ZW4ga2V5LgogCi0gICAgICAgIDpwYXJhbSBrZXk6IG11c3QgYmUgYSBgYC9gYCBz
ZXBhcmF0ZWQgdmFsdWUuIFVzdWFsbHkgdGhlIGZpcnN0Ci0gICAgICAgICAgICAgbmFtZSBpcyB0
aGUgbmFtZSBvZiB5b3VyIHBsdWdpbiBvciB5b3VyIGFwcGxpY2F0aW9uLgotICAgICAgICA6cGFy
YW0gZGVmYXVsdDogbXVzdCBiZSBwcm92aWRlZCBpbiBjYXNlIG9mIGEgY2FjaGUtbWlzcyBvcgot
ICAgICAgICAgICAgIGludmFsaWQgY2FjaGUgdmFsdWVzLgorICAgICAgICBJZiBubyB2YWx1ZSB3
YXMgeWV0IGNhY2hlZCBvciB0aGUgdmFsdWUgY2Fubm90IGJlIHJlYWQsIHRoZSBzcGVjaWZpZWQK
KyAgICAgICAgZGVmYXVsdCBpcyByZXR1cm5lZC4KIAorICAgICAgICA6cGFyYW0ga2V5OgorICAg
ICAgICAgICAgTXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZS4gVXN1YWxseSB0aGUgZmly
c3QKKyAgICAgICAgICAgIG5hbWUgaXMgdGhlIG5hbWUgb2YgeW91ciBwbHVnaW4gb3IgeW91ciBh
cHBsaWNhdGlvbi4KKyAgICAgICAgOnBhcmFtIGRlZmF1bHQ6CisgICAgICAgICAgICBUaGUgdmFs
dWUgdG8gcmV0dXJuIGluIGNhc2Ugb2YgYSBjYWNoZS1taXNzIG9yIGludmFsaWQgY2FjaGUgdmFs
dWUuCiAgICAgICAgICIiIgogICAgICAgICBwYXRoID0gc2VsZi5fZ2V0dmFsdWVwYXRoKGtleSkK
LSAgICAgICAgaWYgcGF0aC5jaGVjaygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgIHdpdGggcGF0aC5vcGVuKCJyIikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGpzb24ubG9hZChmKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAg
ICAgICAgc2VsZi50cmFjZSgiY2FjaGUtaW52YWxpZCBhdCAlcyIgJSAocGF0aCwpKQotICAgICAg
ICByZXR1cm4gZGVmYXVsdAotCi0gICAgZGVmIHNldChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAg
ICAgIiIiIHNhdmUgdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkuCi0KLSAgICAgICAgOnBhcmFtIGtl
eTogbXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZS4gVXN1YWxseSB0aGUgZmlyc3QKLSAg
ICAgICAgICAgICBuYW1lIGlzIHRoZSBuYW1lIG9mIHlvdXIgcGx1Z2luIG9yIHlvdXIgYXBwbGlj
YXRpb24uCi0gICAgICAgIDpwYXJhbSB2YWx1ZTogbXVzdCBiZSBvZiBhbnkgY29tYmluYXRpb24g
b2YgYmFzaWMKLSAgICAgICAgICAgICAgIHB5dGhvbiB0eXBlcywgaW5jbHVkaW5nIG5lc3RlZCB0
eXBlcwotICAgICAgICAgICAgICAgbGlrZSBlLiBnLiBsaXN0cyBvZiBkaWN0aW9uYXJpZXMuCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggcGF0aC5vcGVuKCJyIikgYXMgZjoKKyAgICAg
ICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkKGYpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJv
ciwgT1NFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisgICAgZGVmIHNldChz
ZWxmLCBrZXk6IHN0ciwgdmFsdWU6IG9iamVjdCkgLT4gTm9uZToKKyAgICAgICAgIiIiU2F2ZSB2
YWx1ZSBmb3IgdGhlIGdpdmVuIGtleS4KKworICAgICAgICA6cGFyYW0ga2V5OgorICAgICAgICAg
ICAgTXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZS4gVXN1YWxseSB0aGUgZmlyc3QKKyAg
ICAgICAgICAgIG5hbWUgaXMgdGhlIG5hbWUgb2YgeW91ciBwbHVnaW4gb3IgeW91ciBhcHBsaWNh
dGlvbi4KKyAgICAgICAgOnBhcmFtIHZhbHVlOgorICAgICAgICAgICAgTXVzdCBiZSBvZiBhbnkg
Y29tYmluYXRpb24gb2YgYmFzaWMgcHl0aG9uIHR5cGVzLAorICAgICAgICAgICAgaW5jbHVkaW5n
IG5lc3RlZCB0eXBlcyBsaWtlIGxpc3RzIG9mIGRpY3Rpb25hcmllcy4KICAgICAgICAgIiIiCiAg
ICAgICAgIHBhdGggPSBzZWxmLl9nZXR2YWx1ZXBhdGgoa2V5KQogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBwYXRoLmRpcnBhdGgoKS5lbnN1cmVfZGlyKCkKLSAgICAgICAgZXhjZXB0IChweS5l
cnJvci5FRVhJU1QsIHB5LmVycm9yLkVBQ0NFUyk6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZy53
YXJuKAotICAgICAgICAgICAgICAgIGNvZGU9Ikk5IiwgbWVzc2FnZT0iY291bGQgbm90IGNyZWF0
ZSBjYWNoZSBwYXRoICVzIiAlIChwYXRoLCkKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlm
IHBhdGgucGFyZW50LmlzX2RpcigpOgorICAgICAgICAgICAgICAgIGNhY2hlX2Rpcl9leGlzdHNf
YWxyZWFkeSA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2FjaGVf
ZGlyX2V4aXN0c19hbHJlYWR5ID0gc2VsZi5fY2FjaGVkaXIuZXhpc3RzKCkKKyAgICAgICAgICAg
ICAgICBwYXRoLnBhcmVudC5ta2RpcihleGlzdF9vaz1UcnVlLCBwYXJlbnRzPVRydWUpCisgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgc2VsZi53YXJuKCJjb3VsZCBub3QgY3Jl
YXRlIGNhY2hlIHBhdGgge3BhdGh9IiwgcGF0aD1wYXRoKQogICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIGlmIG5vdCBjYWNoZV9kaXJfZXhpc3RzX2FscmVhZHk6CisgICAgICAgICAgICBzZWxm
Ll9lbnN1cmVfc3VwcG9ydGluZ19maWxlcygpCisgICAgICAgIGRhdGEgPSBqc29uLmR1bXBzKHZh
bHVlLCBpbmRlbnQ9Miwgc29ydF9rZXlzPVRydWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IGYgPSBwYXRoLm9wZW4oInciKQotICAgICAgICBleGNlcHQgcHkuZXJyb3IuRU5PVERJUjoKLSAg
ICAgICAgICAgIHNlbGYuY29uZmlnLndhcm4oCi0gICAgICAgICAgICAgICAgY29kZT0iSTkiLCBt
ZXNzYWdlPSJjYWNoZSBjb3VsZCBub3Qgd3JpdGUgcGF0aCAlcyIgJSAocGF0aCwpCi0gICAgICAg
ICAgICApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgc2VsZi53YXJuKCJj
YWNoZSBjb3VsZCBub3Qgd3JpdGUgcGF0aCB7cGF0aH0iLCBwYXRoPXBhdGgpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICB3aXRoIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi50cmFjZSgiY2Fj
aGUtd3JpdGUgJXM6ICVyIiAlIChrZXksIHZhbHVlKSkKLSAgICAgICAgICAgICAgICBqc29uLmR1
bXAodmFsdWUsIGYsIGluZGVudD0yLCBzb3J0X2tleXM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBm
LndyaXRlKGRhdGEpCisKKyAgICBkZWYgX2Vuc3VyZV9zdXBwb3J0aW5nX2ZpbGVzKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgICIiIkNyZWF0ZSBzdXBwb3J0aW5nIGZpbGVzIGluIHRoZSBjYWNoZSBk
aXIgdGhhdCBhcmUgbm90IHJlYWxseSBwYXJ0IG9mIHRoZSBjYWNoZS4iIiIKKyAgICAgICAgcmVh
ZG1lX3BhdGggPSBzZWxmLl9jYWNoZWRpciAvICJSRUFETUUubWQiCisgICAgICAgIHJlYWRtZV9w
YXRoLndyaXRlX3RleHQoUkVBRE1FX0NPTlRFTlQpCisKKyAgICAgICAgZ2l0aWdub3JlX3BhdGgg
PSBzZWxmLl9jYWNoZWRpci5qb2lucGF0aCgiLmdpdGlnbm9yZSIpCisgICAgICAgIG1zZyA9ICIj
IENyZWF0ZWQgYnkgcHl0ZXN0IGF1dG9tYXRpY2FsbHkuXG4qXG4iCisgICAgICAgIGdpdGlnbm9y
ZV9wYXRoLndyaXRlX3RleHQobXNnLCBlbmNvZGluZz0iVVRGLTgiKQorCisgICAgICAgIGNhY2hl
ZGlyX3RhZ19wYXRoID0gc2VsZi5fY2FjaGVkaXIuam9pbnBhdGgoIkNBQ0hFRElSLlRBRyIpCisg
ICAgICAgIGNhY2hlZGlyX3RhZ19wYXRoLndyaXRlX2J5dGVzKENBQ0hFRElSX1RBR19DT05URU5U
KQorCiAKK2NsYXNzIExGUGx1Z2luQ29sbFdyYXBwZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGxmcGx1Z2luOiAiTEZQbHVnaW4iKSAtPiBOb25lOgorICAgICAgICBzZWxmLmxmcGx1Z2luID0g
bGZwbHVnaW4KKyAgICAgICAgc2VsZi5fY29sbGVjdGVkX2F0X2xlYXN0X29uZV9mYWlsdXJlID0g
RmFsc2UKIAotY2xhc3MgTEZQbHVnaW4ob2JqZWN0KToKLSAgICAiIiIgUGx1Z2luIHdoaWNoIGlt
cGxlbWVudHMgdGhlIC0tbGYgKHJ1biBsYXN0LWZhaWxpbmcpIG9wdGlvbiAiIiIKKyAgICBAcHl0
ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgZGVmIHB5dGVzdF9tYWtlX2NvbGxl
Y3RfcmVwb3J0KHNlbGYsIGNvbGxlY3Rvcjogbm9kZXMuQ29sbGVjdG9yKToKKyAgICAgICAgaWYg
aXNpbnN0YW5jZShjb2xsZWN0b3IsIFNlc3Npb24pOgorICAgICAgICAgICAgb3V0ID0geWllbGQK
KyAgICAgICAgICAgIHJlcyA9IG91dC5nZXRfcmVzdWx0KCkgICMgdHlwZTogQ29sbGVjdFJlcG9y
dAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZyk6CisgICAgICAgICAgICAjIFNvcnQg
YW55IGxmLXBhdGhzIHRvIHRoZSBiZWdpbm5pbmcuCisgICAgICAgICAgICBsZl9wYXRocyA9IHNl
bGYubGZwbHVnaW4uX2xhc3RfZmFpbGVkX3BhdGhzCisgICAgICAgICAgICByZXMucmVzdWx0ID0g
c29ydGVkKAorICAgICAgICAgICAgICAgIHJlcy5yZXN1bHQsIGtleT1sYW1iZGEgeDogMCBpZiBQ
YXRoKHN0cih4LmZzcGF0aCkpIGluIGxmX3BhdGhzIGVsc2UgMSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjb2xsZWN0b3IsIE1v
ZHVsZSk6CisgICAgICAgICAgICBpZiBQYXRoKHN0cihjb2xsZWN0b3IuZnNwYXRoKSkgaW4gc2Vs
Zi5sZnBsdWdpbi5fbGFzdF9mYWlsZWRfcGF0aHM6CisgICAgICAgICAgICAgICAgb3V0ID0geWll
bGQKKyAgICAgICAgICAgICAgICByZXMgPSBvdXQuZ2V0X3Jlc3VsdCgpCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gcmVzLnJlc3VsdAorICAgICAgICAgICAgICAgIGxhc3RmYWlsZWQgPSBzZWxm
LmxmcGx1Z2luLmxhc3RmYWlsZWQKKworICAgICAgICAgICAgICAgICMgT25seSBmaWx0ZXIgd2l0
aCBrbm93biBmYWlsdXJlcy4KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29sbGVjdGVk
X2F0X2xlYXN0X29uZV9mYWlsdXJlOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYW55KHgu
bm9kZWlkIGluIGxhc3RmYWlsZWQgZm9yIHggaW4gcmVzdWx0KToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxmcGx1Z2luLmNvbmZpZy5w
bHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgTEZQbHVnaW5D
b2xsU2tpcGZpbGVzKHNlbGYubGZwbHVnaW4pLCAibGZwbHVnaW4tY29sbHNraXAiCisgICAgICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29sbGVjdGVkX2F0X2xl
YXN0X29uZV9mYWlsdXJlID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IGNvbGxl
Y3Rvci5zZXNzaW9uCisgICAgICAgICAgICAgICAgcmVzdWx0WzpdID0gWworICAgICAgICAgICAg
ICAgICAgICB4CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHJlc3VsdAorICAgICAgICAg
ICAgICAgICAgICBpZiB4Lm5vZGVpZCBpbiBsYXN0ZmFpbGVkCisgICAgICAgICAgICAgICAgICAg
ICMgSW5jbHVkZSBhbnkgcGFzc2VkIGFyZ3VtZW50cyAobm90IHRyaXZpYWwgdG8gZmlsdGVyKS4K
KyAgICAgICAgICAgICAgICAgICAgb3Igc2Vzc2lvbi5pc2luaXRwYXRoKHguZnNwYXRoKQorICAg
ICAgICAgICAgICAgICAgICAjIEtlZXAgYWxsIHN1Yi1jb2xsZWN0b3JzLgorICAgICAgICAgICAg
ICAgICAgICBvciBpc2luc3RhbmNlKHgsIG5vZGVzLkNvbGxlY3RvcikKKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHlpZWxkCisKKworY2xhc3MgTEZQ
bHVnaW5Db2xsU2tpcGZpbGVzOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsZnBsdWdpbjogIkxG
UGx1Z2luIikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5sZnBsdWdpbiA9IGxmcGx1Z2luCisKKyAg
ICBAcHl0ZXN0Lmhvb2tpbXBsCisgICAgZGVmIHB5dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KAor
ICAgICAgICBzZWxmLCBjb2xsZWN0b3I6IG5vZGVzLkNvbGxlY3RvcgorICAgICkgLT4gT3B0aW9u
YWxbQ29sbGVjdFJlcG9ydF06CisgICAgICAgIGlmIGlzaW5zdGFuY2UoY29sbGVjdG9yLCBNb2R1
bGUpOgorICAgICAgICAgICAgaWYgUGF0aChzdHIoY29sbGVjdG9yLmZzcGF0aCkpIG5vdCBpbiBz
ZWxmLmxmcGx1Z2luLl9sYXN0X2ZhaWxlZF9wYXRoczoKKyAgICAgICAgICAgICAgICBzZWxmLmxm
cGx1Z2luLl9za2lwcGVkX2ZpbGVzICs9IDEKKworICAgICAgICAgICAgICAgIHJldHVybiBDb2xs
ZWN0UmVwb3J0KAorICAgICAgICAgICAgICAgICAgICBjb2xsZWN0b3Iubm9kZWlkLCAicGFzc2Vk
IiwgbG9uZ3JlcHI9Tm9uZSwgcmVzdWx0PVtdCisgICAgICAgICAgICAgICAgKQorICAgICAgICBy
ZXR1cm4gTm9uZQorCisKK2NsYXNzIExGUGx1Z2luOgorICAgICIiIlBsdWdpbiB3aGljaCBpbXBs
ZW1lbnRzIHRoZSAtLWxmIChydW4gbGFzdC1mYWlsaW5nKSBvcHRpb24uIiIiCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuY29u
ZmlnID0gY29uZmlnCiAgICAgICAgIGFjdGl2ZV9rZXlzID0gImxmIiwgImZhaWxlZGZpcnN0Igog
ICAgICAgICBzZWxmLmFjdGl2ZSA9IGFueShjb25maWcuZ2V0b3B0aW9uKGtleSkgZm9yIGtleSBp
biBhY3RpdmVfa2V5cykKLSAgICAgICAgc2VsZi5sYXN0ZmFpbGVkID0gY29uZmlnLmNhY2hlLmdl
dCgiY2FjaGUvbGFzdGZhaWxlZCIsIHt9KQotICAgICAgICBzZWxmLl9wcmV2aW91c2x5X2ZhaWxl
ZF9jb3VudCA9IE5vbmUKLSAgICAgICAgc2VsZi5fbm9fZmFpbHVyZXNfYmVoYXZpb3IgPSBzZWxm
LmNvbmZpZy5nZXRvcHRpb24oImxhc3RfZmFpbGVkX25vX2ZhaWx1cmVzIikKKyAgICAgICAgYXNz
ZXJ0IGNvbmZpZy5jYWNoZQorICAgICAgICBzZWxmLmxhc3RmYWlsZWQgPSBjb25maWcuY2FjaGUu
Z2V0KAorICAgICAgICAgICAgImNhY2hlL2xhc3RmYWlsZWQiLCB7fQorICAgICAgICApICAjIHR5
cGU6IERpY3Rbc3RyLCBib29sXQorICAgICAgICBzZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3Vu
dCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbaW50XQorICAgICAgICBzZWxmLl9yZXBvcnRfc3Rh
dHVzID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCisgICAgICAgIHNlbGYuX3NraXBwZWRf
ZmlsZXMgPSAwICAjIGNvdW50IHNraXBwZWQgZmlsZXMgZHVyaW5nIGNvbGxlY3Rpb24gZHVlIHRv
IC0tbGYKKworICAgICAgICBpZiBjb25maWcuZ2V0b3B0aW9uKCJsZiIpOgorICAgICAgICAgICAg
c2VsZi5fbGFzdF9mYWlsZWRfcGF0aHMgPSBzZWxmLmdldF9sYXN0X2ZhaWxlZF9wYXRocygpCisg
ICAgICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcigKKyAgICAgICAgICAgICAg
ICBMRlBsdWdpbkNvbGxXcmFwcGVyKHNlbGYpLCAibGZwbHVnaW4tY29sbHdyYXBwZXIiCisgICAg
ICAgICAgICApCiAKLSAgICBkZWYgcHl0ZXN0X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoKHNlbGYp
OgotICAgICAgICBpZiBzZWxmLmFjdGl2ZToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcmV2
aW91c2x5X2ZhaWxlZF9jb3VudDoKLSAgICAgICAgICAgICAgICBtb2RlID0gInJ1biB7fSAobm8g
cmVjb3JkZWQgZmFpbHVyZXMpIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX25v
X2ZhaWx1cmVzX2JlaGF2aW9yCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBub3VuID0gImZhaWx1cmUiIGlmIHNlbGYuX3ByZXZpb3VzbHlfZmFp
bGVkX2NvdW50ID09IDEgZWxzZSAiZmFpbHVyZXMiCi0gICAgICAgICAgICAgICAgc3VmZml4ID0g
IiBmaXJzdCIgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJmYWlsZWRmaXJzdCIpIGVsc2UgIiIK
LSAgICAgICAgICAgICAgICBtb2RlID0gInJlcnVuIHByZXZpb3VzIHtjb3VudH0ge25vdW59e3N1
ZmZpeH0iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgY291bnQ9c2VsZi5fcHJldmlvdXNs
eV9mYWlsZWRfY291bnQsIHN1ZmZpeD1zdWZmaXgsIG5vdW49bm91bgotICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgICAgIHJldHVybiAicnVuLWxhc3QtZmFpbHVyZTogJXMiICUgbW9kZQorICAg
IGRlZiBnZXRfbGFzdF9mYWlsZWRfcGF0aHMoc2VsZikgLT4gU2V0W1BhdGhdOgorICAgICAgICAi
IiJSZXR1cm4gYSBzZXQgd2l0aCBhbGwgUGF0aHMoKXMgb2YgdGhlIHByZXZpb3VzbHkgZmFpbGVk
IG5vZGVpZHMuIiIiCisgICAgICAgIHJvb3RwYXRoID0gc2VsZi5jb25maWcucm9vdHBhdGgKKyAg
ICAgICAgcmVzdWx0ID0ge3Jvb3RwYXRoIC8gbm9kZWlkLnNwbGl0KCI6OiIpWzBdIGZvciBub2Rl
aWQgaW4gc2VsZi5sYXN0ZmFpbGVkfQorICAgICAgICByZXR1cm4ge3ggZm9yIHggaW4gcmVzdWx0
IGlmIHguZXhpc3RzKCl9CiAKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYs
IHJlcG9ydCk6CisgICAgZGVmIHB5dGVzdF9yZXBvcnRfY29sbGVjdGlvbmZpbmlzaChzZWxmKSAt
PiBPcHRpb25hbFtzdHJdOgorICAgICAgICBpZiBzZWxmLmFjdGl2ZSBhbmQgc2VsZi5jb25maWcu
Z2V0b3B0aW9uKCJ2ZXJib3NlIikgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiAicnVuLWxhc3Qt
ZmFpbHVyZTogJXMiICUgc2VsZi5fcmVwb3J0X3N0YXR1cworICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQ6IFRlc3RSZXBv
cnQpIC0+IE5vbmU6CiAgICAgICAgIGlmIChyZXBvcnQud2hlbiA9PSAiY2FsbCIgYW5kIHJlcG9y
dC5wYXNzZWQpIG9yIHJlcG9ydC5za2lwcGVkOgogICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVk
LnBvcChyZXBvcnQubm9kZWlkLCBOb25lKQogICAgICAgICBlbGlmIHJlcG9ydC5mYWlsZWQ6CiAg
ICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWRbcmVwb3J0Lm5vZGVpZF0gPSBUcnVlCiAKLSAgICBk
ZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQoc2VsZiwgcmVwb3J0KToKKyAgICBkZWYgcHl0ZXN0X2Nv
bGxlY3RyZXBvcnQoc2VsZiwgcmVwb3J0OiBDb2xsZWN0UmVwb3J0KSAtPiBOb25lOgogICAgICAg
ICBwYXNzZWQgPSByZXBvcnQub3V0Y29tZSBpbiAoInBhc3NlZCIsICJza2lwcGVkIikKICAgICAg
ICAgaWYgcGFzc2VkOgogICAgICAgICAgICAgaWYgcmVwb3J0Lm5vZGVpZCBpbiBzZWxmLmxhc3Rm
YWlsZWQ6CkBAIC0xNDUsNTIgKzI5MCw4NyBAQCBjbGFzcyBMRlBsdWdpbihvYmplY3QpOgogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkW3JlcG9ydC5ub2RlaWRdID0g
VHJ1ZQogCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYsIHNlc3Np
b24sIGNvbmZpZywgaXRlbXMpOgotICAgICAgICBpZiBzZWxmLmFjdGl2ZToKLSAgICAgICAgICAg
IGlmIHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgICAgICBwcmV2aW91c2x5X2ZhaWxlZCA9
IFtdCi0gICAgICAgICAgICAgICAgcHJldmlvdXNseV9wYXNzZWQgPSBbXQotICAgICAgICAgICAg
ICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLm5vZGVp
ZCBpbiBzZWxmLmxhc3RmYWlsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5
X2ZhaWxlZC5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXZpb3VzbHlfcGFzc2VkLmFwcGVuZChpdGVtKQotICAgICAgICAg
ICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50ID0gbGVuKHByZXZpb3VzbHlfZmFp
bGVkKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwcmV2aW91c2x5X2ZhaWxlZDoKLSAgICAgICAg
ICAgICAgICAgICAgIyBydW5uaW5nIGEgc3Vic2V0IG9mIGFsbCB0ZXN0cyB3aXRoIHJlY29yZGVk
IGZhaWx1cmVzIG91dHNpZGUKLSAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgc2V0IG9mIHRl
c3RzIGN1cnJlbnRseSBleGVjdXRpbmcKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAg
QHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlLCB0cnlmaXJzdD1UcnVlKQorICAgIGRl
ZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcygKKyAgICAgICAgc2VsZiwgY29uZmlnOiBD
b25maWcsIGl0ZW1zOiBMaXN0W25vZGVzLkl0ZW1dCisgICAgKSAtPiBHZW5lcmF0b3JbTm9uZSwg
Tm9uZSwgTm9uZV06CisgICAgICAgIHlpZWxkCisKKyAgICAgICAgaWYgbm90IHNlbGYuYWN0aXZl
OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgc2VsZi5sYXN0ZmFpbGVkOgorICAg
ICAgICAgICAgcHJldmlvdXNseV9mYWlsZWQgPSBbXQorICAgICAgICAgICAgcHJldmlvdXNseV9w
YXNzZWQgPSBbXQorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgICAgICAg
ICAgaWYgaXRlbS5ub2RlaWQgaW4gc2VsZi5sYXN0ZmFpbGVkOgorICAgICAgICAgICAgICAgICAg
ICBwcmV2aW91c2x5X2ZhaWxlZC5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5X3Bhc3NlZC5hcHBlbmQoaXRlbSkKKyAgICAg
ICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50ID0gbGVuKHByZXZpb3VzbHlfZmFp
bGVkKQorCisgICAgICAgICAgICBpZiBub3QgcHJldmlvdXNseV9mYWlsZWQ6CisgICAgICAgICAg
ICAgICAgIyBSdW5uaW5nIGEgc3Vic2V0IG9mIGFsbCB0ZXN0cyB3aXRoIHJlY29yZGVkIGZhaWx1
cmVzCisgICAgICAgICAgICAgICAgIyBvbmx5IG91dHNpZGUgb2YgaXQuCisgICAgICAgICAgICAg
ICAgc2VsZi5fcmVwb3J0X3N0YXR1cyA9ICIlZCBrbm93biBmYWlsdXJlcyBub3QgaW4gc2VsZWN0
ZWQgdGVzdHMiICUgKAorICAgICAgICAgICAgICAgICAgICBsZW4oc2VsZi5sYXN0ZmFpbGVkKSwK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlm
IHNlbGYuY29uZmlnLmdldG9wdGlvbigibGYiKToKICAgICAgICAgICAgICAgICAgICAgaXRlbXNb
Ol0gPSBwcmV2aW91c2x5X2ZhaWxlZAogICAgICAgICAgICAgICAgICAgICBjb25maWcuaG9vay5w
eXRlc3RfZGVzZWxlY3RlZChpdGVtcz1wcmV2aW91c2x5X3Bhc3NlZCkKLSAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGVsc2U6ICAjIC0tZmFpbGVkZmlyc3QKICAgICAgICAg
ICAgICAgICAgICAgaXRlbXNbOl0gPSBwcmV2aW91c2x5X2ZhaWxlZCArIHByZXZpb3VzbHlfcGFz
c2VkCi0gICAgICAgICAgICBlbGlmIHNlbGYuX25vX2ZhaWx1cmVzX2JlaGF2aW9yID09ICJub25l
IjoKLSAgICAgICAgICAgICAgICBjb25maWcuaG9vay5weXRlc3RfZGVzZWxlY3RlZChpdGVtcz1p
dGVtcykKKworICAgICAgICAgICAgICAgIG5vdW4gPSAiZmFpbHVyZSIgaWYgc2VsZi5fcHJldmlv
dXNseV9mYWlsZWRfY291bnQgPT0gMSBlbHNlICJmYWlsdXJlcyIKKyAgICAgICAgICAgICAgICBz
dWZmaXggPSAiIGZpcnN0IiBpZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImZhaWxlZGZpcnN0Iikg
ZWxzZSAiIgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9zdGF0dXMgPSAicmVydW4gcHJl
dmlvdXMge2NvdW50fSB7bm91bn17c3VmZml4fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICBjb3VudD1zZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudCwgc3VmZml4PXN1ZmZpeCwgbm91
bj1ub3VuCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBzZWxmLl9za2lwcGVk
X2ZpbGVzID4gMDoKKyAgICAgICAgICAgICAgICBmaWxlc19ub3VuID0gImZpbGUiIGlmIHNlbGYu
X3NraXBwZWRfZmlsZXMgPT0gMSBlbHNlICJmaWxlcyIKKyAgICAgICAgICAgICAgICBzZWxmLl9y
ZXBvcnRfc3RhdHVzICs9ICIgKHNraXBwZWQge2ZpbGVzfSB7ZmlsZXNfbm91bn0pIi5mb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgIGZpbGVzPXNlbGYuX3NraXBwZWRfZmlsZXMsIGZpbGVzX25v
dW49ZmlsZXNfbm91bgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX3JlcG9ydF9zdGF0dXMgPSAibm8gcHJldmlvdXNseSBmYWlsZWQgdGVzdHMsICIK
KyAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLmdldG9wdGlvbigibGFzdF9mYWlsZWRfbm9fZmFp
bHVyZXMiKSA9PSAibm9uZSI6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVwb3J0X3N0YXR1cyAr
PSAiZGVzZWxlY3RpbmcgYWxsIGl0ZW1zLiIKKyAgICAgICAgICAgICAgICBjb25maWcuaG9vay5w
eXRlc3RfZGVzZWxlY3RlZChpdGVtcz1pdGVtc1s6XSkKICAgICAgICAgICAgICAgICBpdGVtc1s6
XSA9IFtdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9z
dGF0dXMgKz0gIm5vdCBkZXNlbGVjdGluZyBpdGVtcy4iCiAKLSAgICBkZWYgcHl0ZXN0X3Nlc3Np
b25maW5pc2goc2VsZiwgc2Vzc2lvbik6CisgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNl
bGYsIHNlc3Npb246IFNlc3Npb24pIC0+IE5vbmU6CiAgICAgICAgIGNvbmZpZyA9IHNlbGYuY29u
ZmlnCi0gICAgICAgIGlmIGNvbmZpZy5nZXRvcHRpb24oImNhY2hlc2hvdyIpIG9yIGhhc2F0dHIo
Y29uZmlnLCAic2xhdmVpbnB1dCIpOgorICAgICAgICBpZiBjb25maWcuZ2V0b3B0aW9uKCJjYWNo
ZXNob3ciKSBvciBoYXNhdHRyKGNvbmZpZywgIndvcmtlcmlucHV0Iik6CiAgICAgICAgICAgICBy
ZXR1cm4KIAorICAgICAgICBhc3NlcnQgY29uZmlnLmNhY2hlIGlzIG5vdCBOb25lCiAgICAgICAg
IHNhdmVkX2xhc3RmYWlsZWQgPSBjb25maWcuY2FjaGUuZ2V0KCJjYWNoZS9sYXN0ZmFpbGVkIiwg
e30pCiAgICAgICAgIGlmIHNhdmVkX2xhc3RmYWlsZWQgIT0gc2VsZi5sYXN0ZmFpbGVkOgogICAg
ICAgICAgICAgY29uZmlnLmNhY2hlLnNldCgiY2FjaGUvbGFzdGZhaWxlZCIsIHNlbGYubGFzdGZh
aWxlZCkKIAogCi1jbGFzcyBORlBsdWdpbihvYmplY3QpOgotICAgICIiIiBQbHVnaW4gd2hpY2gg
aW1wbGVtZW50cyB0aGUgLS1uZiAocnVuIG5ldy1maXJzdCkgb3B0aW9uICIiIgorY2xhc3MgTkZQ
bHVnaW46CisgICAgIiIiUGx1Z2luIHdoaWNoIGltcGxlbWVudHMgdGhlIC0tbmYgKHJ1biBuZXct
Zmlyc3QpIG9wdGlvbi4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IENvbmZpZykgLT4gTm9uZToKICAgICAgICAgc2Vs
Zi5jb25maWcgPSBjb25maWcKICAgICAgICAgc2VsZi5hY3RpdmUgPSBjb25maWcub3B0aW9uLm5l
d2ZpcnN0Ci0gICAgICAgIHNlbGYuY2FjaGVkX25vZGVpZHMgPSBjb25maWcuY2FjaGUuZ2V0KCJj
YWNoZS9ub2RlaWRzIiwgW10pCisgICAgICAgIGFzc2VydCBjb25maWcuY2FjaGUgaXMgbm90IE5v
bmUKKyAgICAgICAgc2VsZi5jYWNoZWRfbm9kZWlkcyA9IHNldChjb25maWcuY2FjaGUuZ2V0KCJj
YWNoZS9ub2RlaWRzIiwgW10pKQorCisgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1U
cnVlLCB0cnlmaXJzdD1UcnVlKQorICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVt
cygKKyAgICAgICAgc2VsZiwgaXRlbXM6IExpc3Rbbm9kZXMuSXRlbV0KKyAgICApIC0+IEdlbmVy
YXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgeWllbGQKIAotICAgIGRlZiBweXRlc3Rf
Y29sbGVjdGlvbl9tb2RpZnlpdGVtcyhzZWxmLCBzZXNzaW9uLCBjb25maWcsIGl0ZW1zKToKICAg
ICAgICAgaWYgc2VsZi5hY3RpdmU6Ci0gICAgICAgICAgICBuZXdfaXRlbXMgPSBPcmRlcmVkRGlj
dCgpCi0gICAgICAgICAgICBvdGhlcl9pdGVtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgICAg
IG5ld19pdGVtcyA9IG9yZGVyX3ByZXNlcnZpbmdfZGljdCgpICAjIHR5cGU6IERpY3Rbc3RyLCBu
b2Rlcy5JdGVtXQorICAgICAgICAgICAgb3RoZXJfaXRlbXMgPSBvcmRlcl9wcmVzZXJ2aW5nX2Rp
Y3QoKSAgIyB0eXBlOiBEaWN0W3N0ciwgbm9kZXMuSXRlbV0KICAgICAgICAgICAgIGZvciBpdGVt
IGluIGl0ZW1zOgogICAgICAgICAgICAgICAgIGlmIGl0ZW0ubm9kZWlkIG5vdCBpbiBzZWxmLmNh
Y2hlZF9ub2RlaWRzOgogICAgICAgICAgICAgICAgICAgICBuZXdfaXRlbXNbaXRlbS5ub2RlaWRd
ID0gaXRlbQpAQCAtMTk4LDI0ICszNzgsMjggQEAgY2xhc3MgTkZQbHVnaW4ob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgb3RoZXJfaXRlbXNbaXRlbS5ub2RlaWRdID0gaXRlbQogCiAgICAg
ICAgICAgICBpdGVtc1s6XSA9IHNlbGYuX2dldF9pbmNyZWFzaW5nX29yZGVyKAotICAgICAgICAg
ICAgICAgIHNpeC5pdGVydmFsdWVzKG5ld19pdGVtcykKLSAgICAgICAgICAgICkgKyBzZWxmLl9n
ZXRfaW5jcmVhc2luZ19vcmRlcigKLSAgICAgICAgICAgICAgICBzaXguaXRlcnZhbHVlcyhvdGhl
cl9pdGVtcykKLSAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5jYWNoZWRfbm9kZWlkcyA9IFt4
Lm5vZGVpZCBmb3IgeCBpbiBpdGVtcyBpZiBpc2luc3RhbmNlKHgsIHB5dGVzdC5JdGVtKV0KKyAg
ICAgICAgICAgICAgICBuZXdfaXRlbXMudmFsdWVzKCkKKyAgICAgICAgICAgICkgKyBzZWxmLl9n
ZXRfaW5jcmVhc2luZ19vcmRlcihvdGhlcl9pdGVtcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHNl
bGYuY2FjaGVkX25vZGVpZHMudXBkYXRlKG5ld19pdGVtcykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHNlbGYuY2FjaGVkX25vZGVpZHMudXBkYXRlKGl0ZW0ubm9kZWlkIGZvciBpdGVtIGlu
IGl0ZW1zKQogCi0gICAgZGVmIF9nZXRfaW5jcmVhc2luZ19vcmRlcihzZWxmLCBpdGVtcyk6Cisg
ICAgZGVmIF9nZXRfaW5jcmVhc2luZ19vcmRlcihzZWxmLCBpdGVtczogSXRlcmFibGVbbm9kZXMu
SXRlbV0pIC0+IExpc3Rbbm9kZXMuSXRlbV06CiAgICAgICAgIHJldHVybiBzb3J0ZWQoaXRlbXMs
IGtleT1sYW1iZGEgaXRlbTogaXRlbS5mc3BhdGgubXRpbWUoKSwgcmV2ZXJzZT1UcnVlKQogCi0g
ICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYsIHNlc3Npb24pOgorICAgIGRlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaChzZWxmKSAtPiBOb25lOgogICAgICAgICBjb25maWcgPSBzZWxmLmNv
bmZpZwotICAgICAgICBpZiBjb25maWcuZ2V0b3B0aW9uKCJjYWNoZXNob3ciKSBvciBoYXNhdHRy
KGNvbmZpZywgInNsYXZlaW5wdXQiKToKKyAgICAgICAgaWYgY29uZmlnLmdldG9wdGlvbigiY2Fj
aGVzaG93Iikgb3IgaGFzYXR0cihjb25maWcsICJ3b3JrZXJpbnB1dCIpOgogICAgICAgICAgICAg
cmV0dXJuCiAKLSAgICAgICAgY29uZmlnLmNhY2hlLnNldCgiY2FjaGUvbm9kZWlkcyIsIHNlbGYu
Y2FjaGVkX25vZGVpZHMpCisgICAgICAgIGlmIGNvbmZpZy5nZXRvcHRpb24oImNvbGxlY3Rvbmx5
Iik6CisgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBhc3NlcnQgY29uZmlnLmNhY2hlIGlz
IG5vdCBOb25lCisgICAgICAgIGNvbmZpZy5jYWNoZS5zZXQoImNhY2hlL25vZGVpZHMiLCBzb3J0
ZWQoc2VsZi5jYWNoZWRfbm9kZWlkcykpCiAKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6
CisKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAgIGdy
b3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKICAgICBncm91cC5hZGRvcHRpb24oCiAg
ICAgICAgICItLWxmIiwKQEAgLTIzMCw5ICs0MTQsOSBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihw
YXJzZXIpOgogICAgICAgICAiLS1mYWlsZWQtZmlyc3QiLAogICAgICAgICBhY3Rpb249InN0b3Jl
X3RydWUiLAogICAgICAgICBkZXN0PSJmYWlsZWRmaXJzdCIsCi0gICAgICAgIGhlbHA9InJ1biBh
bGwgdGVzdHMgYnV0IHJ1biB0aGUgbGFzdCBmYWlsdXJlcyBmaXJzdC4gICIKKyAgICAgICAgaGVs
cD0icnVuIGFsbCB0ZXN0cywgYnV0IHJ1biB0aGUgbGFzdCBmYWlsdXJlcyBmaXJzdC5cbiIKICAg
ICAgICAgIlRoaXMgbWF5IHJlLW9yZGVyIHRlc3RzIGFuZCB0aHVzIGxlYWQgdG8gIgotICAgICAg
ICAicmVwZWF0ZWQgZml4dHVyZSBzZXR1cC90ZWFyZG93biIsCisgICAgICAgICJyZXBlYXRlZCBm
aXh0dXJlIHNldHVwL3RlYXJkb3duLiIsCiAgICAgKQogICAgIGdyb3VwLmFkZG9wdGlvbigKICAg
ICAgICAgIi0tbmYiLApAQCAtMjQ0LDkgKzQyOCwxMyBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihw
YXJzZXIpOgogICAgICkKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWNhY2hlLXNo
b3ciLAotICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBhY3Rpb249ImFwcGVu
ZCIsCisgICAgICAgIG5hcmdzPSI/IiwKICAgICAgICAgZGVzdD0iY2FjaGVzaG93IiwKLSAgICAg
ICAgaGVscD0ic2hvdyBjYWNoZSBjb250ZW50cywgZG9uJ3QgcGVyZm9ybSBjb2xsZWN0aW9uIG9y
IHRlc3RzIiwKKyAgICAgICAgaGVscD0oCisgICAgICAgICAgICAic2hvdyBjYWNoZSBjb250ZW50
cywgZG9uJ3QgcGVyZm9ybSBjb2xsZWN0aW9uIG9yIHRlc3RzLiAiCisgICAgICAgICAgICAiT3B0
aW9uYWwgYXJndW1lbnQ6IGdsb2IgKGRlZmF1bHQ6ICcqJykuIgorICAgICAgICApLAogICAgICkK
ICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWNhY2hlLWNsZWFyIiwKQEAgLTI1NCw3
ICs0NDIsMTAgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgZGVzdD0i
Y2FjaGVjbGVhciIsCiAgICAgICAgIGhlbHA9InJlbW92ZSBhbGwgY2FjaGUgY29udGVudHMgYXQg
c3RhcnQgb2YgdGVzdCBydW4uIiwKICAgICApCi0gICAgcGFyc2VyLmFkZGluaSgiY2FjaGVfZGly
IiwgZGVmYXVsdD0iLnB5dGVzdF9jYWNoZSIsIGhlbHA9ImNhY2hlIGRpcmVjdG9yeSBwYXRoLiIp
CisgICAgY2FjaGVfZGlyX2RlZmF1bHQgPSAiLnB5dGVzdF9jYWNoZSIKKyAgICBpZiAiVE9YX0VO
Vl9ESVIiIGluIG9zLmVudmlyb246CisgICAgICAgIGNhY2hlX2Rpcl9kZWZhdWx0ID0gb3MucGF0
aC5qb2luKG9zLmVudmlyb25bIlRPWF9FTlZfRElSIl0sIGNhY2hlX2Rpcl9kZWZhdWx0KQorICAg
IHBhcnNlci5hZGRpbmkoImNhY2hlX2RpciIsIGRlZmF1bHQ9Y2FjaGVfZGlyX2RlZmF1bHQsIGhl
bHA9ImNhY2hlIGRpcmVjdG9yeSBwYXRoLiIpCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAg
ICAiLS1sZm5mIiwKICAgICAgICAgIi0tbGFzdC1mYWlsZWQtbm8tZmFpbHVyZXMiLApAQCAtMjYy
LDc4ICs0NTMsOTQgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgZGVz
dD0ibGFzdF9mYWlsZWRfbm9fZmFpbHVyZXMiLAogICAgICAgICBjaG9pY2VzPSgiYWxsIiwgIm5v
bmUiKSwKICAgICAgICAgZGVmYXVsdD0iYWxsIiwKLSAgICAgICAgaGVscD0iY2hhbmdlIHRoZSBi
ZWhhdmlvciB3aGVuIG5vIHRlc3QgZmFpbGVkIGluIHRoZSBsYXN0IHJ1biBvciBubyAiCi0gICAg
ICAgICJpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFzdCBmYWlsdXJlcyB3YXMgZm91bmQgaW4gdGhl
IGNhY2hlIiwKKyAgICAgICAgaGVscD0id2hpY2ggdGVzdHMgdG8gcnVuIHdpdGggbm8gcHJldmlv
dXNseSAoa25vd24pIGZhaWx1cmVzLiIsCiAgICAgKQogCiAKLWRlZiBweXRlc3RfY21kbGluZV9t
YWluKGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWc6IENvbmZpZykgLT4g
T3B0aW9uYWxbVW5pb25baW50LCBFeGl0Q29kZV1dOgogICAgIGlmIGNvbmZpZy5vcHRpb24uY2Fj
aGVzaG93OgogICAgICAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgd3JhcF9zZXNzaW9uCiAK
ICAgICAgICAgcmV0dXJuIHdyYXBfc2Vzc2lvbihjb25maWcsIGNhY2hlc2hvdykKKyAgICByZXR1
cm4gTm9uZQogCiAKIEBweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3Rf
Y29uZmlndXJlKGNvbmZpZyk6Ci0gICAgY29uZmlnLmNhY2hlID0gQ2FjaGUoY29uZmlnKQorZGVm
IHB5dGVzdF9jb25maWd1cmUoY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CisgICAgY29uZmlnLmNh
Y2hlID0gQ2FjaGUuZm9yX2NvbmZpZyhjb25maWcpCiAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIu
cmVnaXN0ZXIoTEZQbHVnaW4oY29uZmlnKSwgImxmcGx1Z2luIikKICAgICBjb25maWcucGx1Z2lu
bWFuYWdlci5yZWdpc3RlcihORlBsdWdpbihjb25maWcpLCAibmZwbHVnaW4iKQogCiAKIEBweXRl
c3QuZml4dHVyZQotZGVmIGNhY2hlKHJlcXVlc3QpOgotICAgICIiIgotICAgIFJldHVybiBhIGNh
Y2hlIG9iamVjdCB0aGF0IGNhbiBwZXJzaXN0IHN0YXRlIGJldHdlZW4gdGVzdGluZyBzZXNzaW9u
cy4KK2RlZiBjYWNoZShyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCkgLT4gQ2FjaGU6CisgICAgIiIi
UmV0dXJuIGEgY2FjaGUgb2JqZWN0IHRoYXQgY2FuIHBlcnNpc3Qgc3RhdGUgYmV0d2VlbiB0ZXN0
aW5nIHNlc3Npb25zLgogCiAgICAgY2FjaGUuZ2V0KGtleSwgZGVmYXVsdCkKICAgICBjYWNoZS5z
ZXQoa2V5LCB2YWx1ZSkKIAotICAgIEtleXMgbXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1
ZSwgd2hlcmUgdGhlIGZpcnN0IHBhcnQgaXMgdXN1YWxseSB0aGUKKyAgICBLZXlzIG11c3QgYmUg
YGAvYGAgc2VwYXJhdGVkIHN0cmluZ3MsIHdoZXJlIHRoZSBmaXJzdCBwYXJ0IGlzIHVzdWFsbHkg
dGhlCiAgICAgbmFtZSBvZiB5b3VyIHBsdWdpbiBvciBhcHBsaWNhdGlvbiB0byBhdm9pZCBjbGFz
aGVzIHdpdGggb3RoZXIgY2FjaGUgdXNlcnMuCiAKICAgICBWYWx1ZXMgY2FuIGJlIGFueSBvYmpl
Y3QgaGFuZGxlZCBieSB0aGUganNvbiBzdGRsaWIgbW9kdWxlLgogICAgICIiIgorICAgIGFzc2Vy
dCByZXF1ZXN0LmNvbmZpZy5jYWNoZSBpcyBub3QgTm9uZQogICAgIHJldHVybiByZXF1ZXN0LmNv
bmZpZy5jYWNoZQogCiAKLWRlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihjb25maWcpOgotICAgIGlm
IGNvbmZpZy5vcHRpb24udmVyYm9zZToKLSAgICAgICAgcmVscGF0aCA9IHB5LnBhdGgubG9jYWwo
KS5iZXN0cmVscGF0aChjb25maWcuY2FjaGUuX2NhY2hlZGlyKQotICAgICAgICByZXR1cm4gImNh
Y2hlZGlyOiAlcyIgJSByZWxwYXRoCitkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnOiBD
b25maWcpIC0+IE9wdGlvbmFsW3N0cl06CisgICAgIiIiRGlzcGxheSBjYWNoZWRpciB3aXRoIC0t
Y2FjaGUtc2hvdyBhbmQgaWYgbm9uLWRlZmF1bHQuIiIiCisgICAgaWYgY29uZmlnLm9wdGlvbi52
ZXJib3NlID4gMCBvciBjb25maWcuZ2V0aW5pKCJjYWNoZV9kaXIiKSAhPSAiLnB5dGVzdF9jYWNo
ZSI6CisgICAgICAgIGFzc2VydCBjb25maWcuY2FjaGUgaXMgbm90IE5vbmUKKyAgICAgICAgY2Fj
aGVkaXIgPSBjb25maWcuY2FjaGUuX2NhY2hlZGlyCisgICAgICAgICMgVE9ETzogZXZhbHVhdGUg
Z2VuZXJhdGluZyB1cHdhcmQgcmVsYXRpdmUgcGF0aHMKKyAgICAgICAgIyBzdGFydGluZyB3aXRo
IC4uLCAuLi8uLiBpZiBzZW5zaWJsZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRpc3Bs
YXlwYXRoID0gY2FjaGVkaXIucmVsYXRpdmVfdG8oY29uZmlnLnJvb3RwYXRoKQorICAgICAgICBl
eGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGRpc3BsYXlwYXRoID0gY2FjaGVkaXIKKyAg
ICAgICAgcmV0dXJuICJjYWNoZWRpcjoge30iLmZvcm1hdChkaXNwbGF5cGF0aCkKKyAgICByZXR1
cm4gTm9uZQorCiAKK2RlZiBjYWNoZXNob3coY29uZmlnOiBDb25maWcsIHNlc3Npb246IFNlc3Np
b24pIC0+IGludDoKKyAgICBmcm9tIHBwcmludCBpbXBvcnQgcGZvcm1hdAogCi1kZWYgY2FjaGVz
aG93KGNvbmZpZywgc2Vzc2lvbik6Ci0gICAgZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludAorICAg
IGFzc2VydCBjb25maWcuY2FjaGUgaXMgbm90IE5vbmUKIAotICAgIHR3ID0gcHkuaW8uVGVybWlu
YWxXcml0ZXIoKQorICAgIHR3ID0gVGVybWluYWxXcml0ZXIoKQogICAgIHR3LmxpbmUoImNhY2hl
ZGlyOiAiICsgc3RyKGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIpKQotICAgIGlmIG5vdCBjb25maWcu
Y2FjaGUuX2NhY2hlZGlyLmNoZWNrKCk6CisgICAgaWYgbm90IGNvbmZpZy5jYWNoZS5fY2FjaGVk
aXIuaXNfZGlyKCk6CiAgICAgICAgIHR3LmxpbmUoImNhY2hlIGlzIGVtcHR5IikKICAgICAgICAg
cmV0dXJuIDAKKworICAgIGdsb2IgPSBjb25maWcub3B0aW9uLmNhY2hlc2hvd1swXQorICAgIGlm
IGdsb2IgaXMgTm9uZToKKyAgICAgICAgZ2xvYiA9ICIqIgorCiAgICAgZHVtbXkgPSBvYmplY3Qo
KQogICAgIGJhc2VkaXIgPSBjb25maWcuY2FjaGUuX2NhY2hlZGlyCi0gICAgdmRpciA9IGJhc2Vk
aXIuam9pbigidiIpCi0gICAgdHcuc2VwKCItIiwgImNhY2hlIHZhbHVlcyIpCi0gICAgZm9yIHZh
bHBhdGggaW4gc29ydGVkKHZkaXIudmlzaXQobGFtYmRhIHg6IHguaXNmaWxlKCkpKToKLSAgICAg
ICAga2V5ID0gdmFscGF0aC5yZWx0byh2ZGlyKS5yZXBsYWNlKHZhbHBhdGguc2VwLCAiLyIpCisg
ICAgdmRpciA9IGJhc2VkaXIgLyBDYWNoZS5fQ0FDSEVfUFJFRklYX1ZBTFVFUworICAgIHR3LnNl
cCgiLSIsICJjYWNoZSB2YWx1ZXMgZm9yICVyIiAlIGdsb2IpCisgICAgZm9yIHZhbHBhdGggaW4g
c29ydGVkKHggZm9yIHggaW4gdmRpci5yZ2xvYihnbG9iKSBpZiB4LmlzX2ZpbGUoKSk6CisgICAg
ICAgIGtleSA9IHN0cih2YWxwYXRoLnJlbGF0aXZlX3RvKHZkaXIpKQogICAgICAgICB2YWwgPSBj
b25maWcuY2FjaGUuZ2V0KGtleSwgZHVtbXkpCiAgICAgICAgIGlmIHZhbCBpcyBkdW1teToKLSAg
ICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zIHVucmVhZGFibGUgY29udGVudCwgIiAid2ls
bCBiZSBpZ25vcmVkIiAlIGtleSkKKyAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zIHVu
cmVhZGFibGUgY29udGVudCwgd2lsbCBiZSBpZ25vcmVkIiAlIGtleSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zOiIgJSBrZXkpCi0gICAgICAgICAgICBz
dHJlYW0gPSBweS5pby5UZXh0SU8oKQotICAgICAgICAgICAgcHByaW50KHZhbCwgc3RyZWFtPXN0
cmVhbSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHN0cmVhbS5nZXR2YWx1ZSgpLnNwbGl0bGlu
ZXMoKToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHBmb3JtYXQodmFsKS5zcGxpdGxpbmVzKCk6
CiAgICAgICAgICAgICAgICAgdHcubGluZSgiICAiICsgbGluZSkKIAotICAgIGRkaXIgPSBiYXNl
ZGlyLmpvaW4oImQiKQotICAgIGlmIGRkaXIuaXNkaXIoKSBhbmQgZGRpci5saXN0ZGlyKCk6Ci0g
ICAgICAgIHR3LnNlcCgiLSIsICJjYWNoZSBkaXJlY3RvcmllcyIpCi0gICAgICAgIGZvciBwIGlu
IHNvcnRlZChiYXNlZGlyLmpvaW4oImQiKS52aXNpdCgpKToKKyAgICBkZGlyID0gYmFzZWRpciAv
IENhY2hlLl9DQUNIRV9QUkVGSVhfRElSUworICAgIGlmIGRkaXIuaXNfZGlyKCk6CisgICAgICAg
IGNvbnRlbnRzID0gc29ydGVkKGRkaXIucmdsb2IoZ2xvYikpCisgICAgICAgIHR3LnNlcCgiLSIs
ICJjYWNoZSBkaXJlY3RvcmllcyBmb3IgJXIiICUgZ2xvYikKKyAgICAgICAgZm9yIHAgaW4gY29u
dGVudHM6CiAgICAgICAgICAgICAjIGlmIHAuY2hlY2soZGlyPTEpOgogICAgICAgICAgICAgIyAg
ICBwcmludCgiJXMvIiAlIHAucmVsdG8oYmFzZWRpcikpCi0gICAgICAgICAgICBpZiBwLmlzZmls
ZSgpOgotICAgICAgICAgICAgICAgIGtleSA9IHAucmVsdG8oYmFzZWRpcikKLSAgICAgICAgICAg
ICAgICB0dy5saW5lKCIlcyBpcyBhIGZpbGUgb2YgbGVuZ3RoICVkIiAlIChrZXksIHAuc2l6ZSgp
KSkKKyAgICAgICAgICAgIGlmIHAuaXNfZmlsZSgpOgorICAgICAgICAgICAgICAgIGtleSA9IHN0
cihwLnJlbGF0aXZlX3RvKGJhc2VkaXIpKQorICAgICAgICAgICAgICAgIHR3LmxpbmUoInt9IGlz
IGEgZmlsZSBvZiBsZW5ndGggezpkfSIuZm9ybWF0KGtleSwgcC5zdGF0KCkuc3Rfc2l6ZSkpCiAg
ICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NhcHR1cmUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jYXB0dXJlLnB5CmluZGV4IDdhNTdhZGI3NTJh
Ny4uMmQyYjM5MmFiYThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jYXB0
dXJlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NhcHR1cmUucHkKQEAgLTEsMzQg
KzEsNDUgQEAKLSIiIgotcGVyLXRlc3Qgc3Rkb3V0L3N0ZGVyciBjYXB0dXJpbmcgbWVjaGFuaXNt
LgotCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lv
biwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGNvbGxlY3Rpb25zCisiIiJQZXItdGVzdCBzdGRv
dXQvc3RkZXJyIGNhcHR1cmluZyBtZWNoYW5pc20uIiIiCiBpbXBvcnQgY29udGV4dGxpYgotaW1w
b3J0IHN5cwotaW1wb3J0IG9zCitpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KK2ltcG9ydCBv
cworaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgVW5zdXBwb3J0ZWRPcGVyYXRpb24KIGZyb20g
dGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zy
b20gdHlwaW5nIGltcG9ydCBBbnlTdHIKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zy
b20gdHlwaW5nIGltcG9ydCBHZW5lcmljCitmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmF0b3IKK2Zy
b20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFRleHRJTworZnJv
bSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAotaW1wb3J0
IHNpeAogaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgQ2FwdHVyZUlP
Citmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBp
bXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitm
cm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0ZXN0
LmZpeHR1cmVzIGltcG9ydCBTdWJSZXF1ZXN0Citmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IENv
bGxlY3RvcgorZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCiAKK2lmIFRZUEVfQ0hFQ0tJ
Tkc6CisgICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAogCi1wYXRjaHN5
c2RpY3QgPSB7MDogInN0ZGluIiwgMTogInN0ZG91dCIsIDI6ICJzdGRlcnIifQorICAgIF9DYXB0
dXJlTWV0aG9kID0gTGl0ZXJhbFsiZmQiLCAic3lzIiwgIm5vIiwgInRlZS1zeXMiXQogCiAKLWRl
ZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6
IFBhcnNlcikgLT4gTm9uZToKICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIp
CiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKICAgICAgICAgIi0tY2FwdHVyZSIsCiAgICAgICAgIGFj
dGlvbj0ic3RvcmUiLAotICAgICAgICBkZWZhdWx0PSJmZCIgaWYgaGFzYXR0cihvcywgImR1cCIp
IGVsc2UgInN5cyIsCisgICAgICAgIGRlZmF1bHQ9ImZkIiwKICAgICAgICAgbWV0YXZhcj0ibWV0
aG9kIiwKLSAgICAgICAgY2hvaWNlcz1bImZkIiwgInN5cyIsICJubyJdLAotICAgICAgICBoZWxw
PSJwZXItdGVzdCBjYXB0dXJpbmcgbWV0aG9kOiBvbmUgb2YgZmR8c3lzfG5vLiIsCisgICAgICAg
IGNob2ljZXM9WyJmZCIsICJzeXMiLCAibm8iLCAidGVlLXN5cyJdLAorICAgICAgICBoZWxwPSJw
ZXItdGVzdCBjYXB0dXJpbmcgbWV0aG9kOiBvbmUgb2YgZmR8c3lzfG5vfHRlZS1zeXMuIiwKICAg
ICApCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKICAgICAgICAgIi1zIiwKQEAgLTM5LDggKzUwLDEw
NyBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICkKIAogCitkZWYgX2NvbG9y
YW1hX3dvcmthcm91bmQoKSAtPiBOb25lOgorICAgICIiIkVuc3VyZSBjb2xvcmFtYSBpcyBpbXBv
cnRlZCBzbyB0aGF0IGl0IGF0dGFjaGVzIHRvIHRoZSBjb3JyZWN0IHN0ZGlvCisgICAgaGFuZGxl
cyBvbiBXaW5kb3dzLgorCisgICAgY29sb3JhbWEgdXNlcyB0aGUgdGVybWluYWwgb24gaW1wb3J0
IHRpbWUuIFNvIGlmIHNvbWV0aGluZyBkb2VzIHRoZQorICAgIGZpcnN0IGltcG9ydCBvZiBjb2xv
cmFtYSB3aGlsZSBJL08gY2FwdHVyZSBpcyBhY3RpdmUsIGNvbG9yYW1hIHdpbGwKKyAgICBmYWls
IGluIHZhcmlvdXMgd2F5cy4KKyAgICAiIiIKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgid2luMzIiKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGNvbG9yYW1hICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFz
cworCisKK2RlZiBfcmVhZGxpbmVfd29ya2Fyb3VuZCgpIC0+IE5vbmU6CisgICAgIiIiRW5zdXJl
IHJlYWRsaW5lIGlzIGltcG9ydGVkIHNvIHRoYXQgaXQgYXR0YWNoZXMgdG8gdGhlIGNvcnJlY3Qg
c3RkaW8KKyAgICBoYW5kbGVzIG9uIFdpbmRvd3MuCisKKyAgICBQZGIgdXNlcyByZWFkbGluZSBz
dXBwb3J0IHdoZXJlIGF2YWlsYWJsZS0td2hlbiBub3QgcnVubmluZyBmcm9tIHRoZSBQeXRob24K
KyAgICBwcm9tcHQsIHRoZSByZWFkbGluZSBtb2R1bGUgaXMgbm90IGltcG9ydGVkIHVudGlsIHJ1
bm5pbmcgdGhlIHBkYiBSRVBMLiAgSWYKKyAgICBydW5uaW5nIHB5dGVzdCB3aXRoIHRoZSAtLXBk
YiBvcHRpb24gdGhpcyBtZWFucyB0aGUgcmVhZGxpbmUgbW9kdWxlIGlzIG5vdAorICAgIGltcG9y
dGVkIHVudGlsIGFmdGVyIEkvTyBjYXB0dXJlIGhhcyBiZWVuIHN0YXJ0ZWQuCisKKyAgICBUaGlz
IGlzIGEgcHJvYmxlbSBmb3IgcHlyZWFkbGluZSwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCB0byBpbXBs
ZW1lbnQgcmVhZGxpbmUKKyAgICBzdXBwb3J0IG9uIFdpbmRvd3MsIGFzIGl0IGRvZXMgbm90IGF0
dGFjaCB0byB0aGUgY29ycmVjdCBoYW5kbGVzIGZvciBzdGRvdXQKKyAgICBhbmQvb3Igc3RkaW4g
aWYgdGhleSBoYXZlIGJlZW4gcmVkaXJlY3RlZCBieSB0aGUgRkRDYXB0dXJlIG1lY2hhbmlzbS4g
IFRoaXMKKyAgICB3b3JrYXJvdW5kIGVuc3VyZXMgdGhhdCByZWFkbGluZSBpcyBpbXBvcnRlZCBi
ZWZvcmUgSS9PIGNhcHR1cmUgaXMgc2V0dXAgc28KKyAgICB0aGF0IGl0IGNhbiBhdHRhY2ggdG8g
dGhlIGFjdHVhbCBzdGRpbi9vdXQgZm9yIHRoZSBjb25zb2xlLgorCisgICAgU2VlIGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLzEyODEuCisgICAgIiIiCisgICAgaWYg
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbjMyIik6CisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIGltcG9ydCByZWFkbGluZSAgIyBub3FhOiBGNDAxCisgICAgICAgIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworCitkZWYgX3B5MzZfd2luZG93c2NvbnNvbGVpb193
b3JrYXJvdW5kKHN0cmVhbTogVGV4dElPKSAtPiBOb25lOgorICAgICIiIldvcmthcm91bmQgZm9y
IFdpbmRvd3MgVW5pY29kZSBjb25zb2xlIGhhbmRsaW5nIG9uIFB5dGhvbj49My42LgorCisgICAg
UHl0aG9uIDMuNiBpbXBsZW1lbnRlZCBVbmljb2RlIGNvbnNvbGUgaGFuZGxpbmcgZm9yIFdpbmRv
d3MuIFRoaXMgd29ya3MKKyAgICBieSByZWFkaW5nL3dyaXRpbmcgdG8gdGhlIHJhdyBjb25zb2xl
IGhhbmRsZSB1c2luZworICAgIGBge1JlYWQsV3JpdGV9Q29uc29sZVdgYC4KKworICAgIFRoZSBw
cm9ibGVtIGlzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGBgZHVwMmBgIG92ZXIgdGhlIHN0ZGlvIGZp
bGUKKyAgICBkZXNjcmlwdG9ycyB3aGVuIGRvaW5nIGBgRkRDYXB0dXJlYGAgYW5kIHRoaXMgd2ls
bCBgYENsb3NlSGFuZGxlYGAgdGhlCisgICAgaGFuZGxlcyB1c2VkIGJ5IFB5dGhvbiB0byB3cml0
ZSB0byB0aGUgY29uc29sZS4gVGhvdWdoIHRoZXJlIGlzIHN0aWxsIHNvbWUKKyAgICB3ZWlyZG5l
c3MgYW5kIHRoZSBjb25zb2xlIGhhbmRsZSBzZWVtcyB0byBvbmx5IGJlIGNsb3NlZCByYW5kb21s
eSBhbmQgbm90CisgICAgb24gdGhlIGZpcnN0IGNhbGwgdG8gYGBDbG9zZUhhbmRsZWBgLCBvciBt
YXliZSBpdCBnZXRzIHJlb3BlbmVkIHdpdGggdGhlCisgICAgc2FtZSBoYW5kbGUgdmFsdWUgd2hl
biB3ZSBzdXNwZW5kIGNhcHR1cmluZy4KKworICAgIFRoZSB3b3JrYXJvdW5kIGluIHRoaXMgY2Fz
ZSB3aWxsIHJlb3BlbiBzdGRpbyB3aXRoIGEgZGlmZmVyZW50IGZkIHdoaWNoCisgICAgYWxzbyBt
ZWFucyBhIGRpZmZlcmVudCBoYW5kbGUgYnkgcmVwbGljYXRpbmcgdGhlIGxvZ2ljIGluCisgICAg
IlB5X2xpZmVjeWNsZS5jOmluaXRzdGRpby9jcmVhdGVfc3RkaW8iLgorCisgICAgOnBhcmFtIHN0
cmVhbToKKyAgICAgICAgSW4gcHJhY3RpY2UgYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJy
YGAsIGJ1dCBnaXZlbgorICAgICAgICBoZXJlIGFzIHBhcmFtZXRlciBmb3IgdW5pdHRlc3Rpbmcg
cHVycG9zZXMuCisKKyAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHkvaXNz
dWVzLzEwMy4KKyAgICAiIiIKKyAgICBpZiAoCisgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3Rh
cnRzd2l0aCgid2luMzIiKQorICAgICAgICBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA2
KQorICAgICAgICBvciBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIikKKyAgICApOgor
ICAgICAgICByZXR1cm4KKworICAgICMgQmFpbCBvdXQgaWYgYGBzdHJlYW1gYCBkb2Vzbid0IHNl
ZW0gbGlrZSBhIHByb3BlciBgYGlvYGAgc3RyZWFtICgjMjY2NikuCisgICAgaWYgbm90IGhhc2F0
dHIoc3RyZWFtLCAiYnVmZmVyIik6ICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KKyAgICAg
ICAgcmV0dXJuCisKKyAgICBidWZmZXJlZCA9IGhhc2F0dHIoc3RyZWFtLmJ1ZmZlciwgInJhdyIp
CisgICAgcmF3X3N0ZG91dCA9IHN0cmVhbS5idWZmZXIucmF3IGlmIGJ1ZmZlcmVkIGVsc2Ugc3Ry
ZWFtLmJ1ZmZlciAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorCisgICAgaWYgbm90IGlz
aW5zdGFuY2UocmF3X3N0ZG91dCwgaW8uX1dpbmRvd3NDb25zb2xlSU8pOiAgIyB0eXBlOiBpZ25v
cmVbYXR0ci1kZWZpbmVkXQorICAgICAgICByZXR1cm4KKworICAgIGRlZiBfcmVvcGVuX3N0ZGlv
KGYsIG1vZGUpOgorICAgICAgICBpZiBub3QgYnVmZmVyZWQgYW5kIG1vZGVbMF0gPT0gInciOgor
ICAgICAgICAgICAgYnVmZmVyaW5nID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVm
ZmVyaW5nID0gLTEKKworICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcigKKyAgICAgICAg
ICAgIG9wZW4ob3MuZHVwKGYuZmlsZW5vKCkpLCBtb2RlLCBidWZmZXJpbmcpLCAgIyB0eXBlOiBp
Z25vcmVbYXJnLXR5cGVdCisgICAgICAgICAgICBmLmVuY29kaW5nLAorICAgICAgICAgICAgZi5l
cnJvcnMsCisgICAgICAgICAgICBmLm5ld2xpbmVzLAorICAgICAgICAgICAgZi5saW5lX2J1ZmZl
cmluZywKKyAgICAgICAgKQorCisgICAgc3lzLnN0ZGluID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3Rk
aW4sICJyYiIpCisgICAgc3lzLnN0ZG91dCA9IF9yZW9wZW5fc3RkaW8oc3lzLnN0ZG91dCwgIndi
IikKKyAgICBzeXMuc3RkZXJyID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3RkZXJyLCAid2IiKQorCisK
IEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfbG9hZF9pbml0
aWFsX2NvbmZ0ZXN0cyhlYXJseV9jb25maWcsIHBhcnNlciwgYXJncyk6CitkZWYgcHl0ZXN0X2xv
YWRfaW5pdGlhbF9jb25mdGVzdHMoZWFybHlfY29uZmlnOiBDb25maWcpOgogICAgIG5zID0gZWFy
bHlfY29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlCiAgICAgaWYgbnMuY2FwdHVyZSA9PSAiZmQi
OgogICAgICAgICBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91bmQoc3lzLnN0ZG91dCkK
QEAgLTUwLDM0MSArMTYwLDQxMyBAQCBkZWYgcHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMo
ZWFybHlfY29uZmlnLCBwYXJzZXIsIGFyZ3MpOgogICAgIGNhcG1hbiA9IENhcHR1cmVNYW5hZ2Vy
KG5zLmNhcHR1cmUpCiAgICAgcGx1Z2lubWFuYWdlci5yZWdpc3RlcihjYXBtYW4sICJjYXB0dXJl
bWFuYWdlciIpCiAKLSAgICAjIG1ha2Ugc3VyZSB0aGF0IGNhcHR1cmVtYW5hZ2VyIGlzIHByb3Bl
cmx5IHJlc2V0IGF0IGZpbmFsIHNodXRkb3duCisgICAgIyBNYWtlIHN1cmUgdGhhdCBjYXB0dXJl
bWFuYWdlciBpcyBwcm9wZXJseSByZXNldCBhdCBmaW5hbCBzaHV0ZG93bi4KICAgICBlYXJseV9j
b25maWcuYWRkX2NsZWFudXAoY2FwbWFuLnN0b3BfZ2xvYmFsX2NhcHR1cmluZykKIAotICAgICMg
bWFrZSBzdXJlIGxvZ2dpbmcgZG9lcyBub3QgcmFpc2UgZXhjZXB0aW9ucyBhdCB0aGUgZW5kCi0g
ICAgZGVmIHNpbGVuY2VfbG9nZ2luZ19hdF9zaHV0ZG93bigpOgotICAgICAgICBpZiAibG9nZ2lu
ZyIgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICBzeXMubW9kdWxlc1sibG9nZ2luZyJdLnJh
aXNlRXhjZXB0aW9ucyA9IEZhbHNlCi0KLSAgICBlYXJseV9jb25maWcuYWRkX2NsZWFudXAoc2ls
ZW5jZV9sb2dnaW5nX2F0X3NodXRkb3duKQotCi0gICAgIyBmaW5hbGx5IHRyaWdnZXIgY29uZnRl
c3QgbG9hZGluZyBidXQgd2hpbGUgY2FwdHVyaW5nIChpc3N1ZTkzKQorICAgICMgRmluYWxseSB0
cmlnZ2VyIGNvbmZ0ZXN0IGxvYWRpbmcgYnV0IHdoaWxlIGNhcHR1cmluZyAoaXNzdWUgIzkzKS4K
ICAgICBjYXBtYW4uc3RhcnRfZ2xvYmFsX2NhcHR1cmluZygpCiAgICAgb3V0Y29tZSA9IHlpZWxk
Ci0gICAgb3V0LCBlcnIgPSBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCisgICAgY2Fw
bWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQogICAgIGlmIG91dGNvbWUuZXhjaW5mbyBpcyBu
b3QgTm9uZToKKyAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4ucmVhZF9nbG9iYWxfY2FwdHVyZSgp
CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3V0KQogICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KGVycikKIAogCi1jbGFzcyBDYXB0dXJlTWFuYWdlcihvYmplY3QpOgotICAgICIiIgotICAgIENh
cHR1cmUgcGx1Z2luLCBtYW5hZ2VzIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGNhcHR1cmUgbWV0aG9k
IGlzIGVuYWJsZWQvZGlzYWJsZWQgZHVyaW5nIGNvbGxlY3Rpb24gYW5kIGVhY2gKLSAgICB0ZXN0
IHBoYXNlIChzZXR1cCwgY2FsbCwgdGVhcmRvd24pLiBBZnRlciBlYWNoIG9mIHRob3NlIHBvaW50
cywgdGhlIGNhcHR1cmVkIG91dHB1dCBpcyBvYnRhaW5lZCBhbmQKLSAgICBhdHRhY2hlZCB0byB0
aGUgY29sbGVjdGlvbi9ydW50ZXN0IHJlcG9ydC4KKyMgSU8gSGVscGVycy4KIAotICAgIFRoZXJl
IGFyZSB0d28gbGV2ZWxzIG9mIGNhcHR1cmU6Ci0gICAgKiBnbG9iYWw6IHdoaWNoIGlzIGVuYWJs
ZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIHN1cHByZXNzZWQgYnkgdGhlIGBgLXNgYCBvcHRpb24u
IFRoaXMgaXMgYWx3YXlzIGVuYWJsZWQvZGlzYWJsZWQKLSAgICAgIGR1cmluZyBjb2xsZWN0aW9u
IGFuZCBlYWNoIHRlc3QgcGhhc2UuCi0gICAgKiBmaXh0dXJlOiB3aGVuIGEgdGVzdCBmdW5jdGlv
biBvciBvbmUgb2YgaXRzIGZpeHR1cmUgZGVwZW5kIG9uIHRoZSBgYGNhcHN5c2BgIG9yIGBgY2Fw
ZmRgYCBmaXh0dXJlcy4gSW4gdGhpcwotICAgICAgY2FzZSBzcGVjaWFsIGhhbmRsaW5nIGlzIG5l
ZWRlZCB0byBlbnN1cmUgdGhlIGZpeHR1cmVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBnbG9i
YWwgY2FwdHVyZS4KLSAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2QpOgot
ICAgICAgICBzZWxmLl9tZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1
cmluZyA9IE5vbmUKLQotICAgIGRlZiBfZ2V0Y2FwdHVyZShzZWxmLCBtZXRob2QpOgotICAgICAg
ICBpZiBtZXRob2QgPT0gImZkIjoKLSAgICAgICAgICAgIHJldHVybiBNdWx0aUNhcHR1cmUob3V0
PVRydWUsIGVycj1UcnVlLCBDYXB0dXJlPUZEQ2FwdHVyZSkKLSAgICAgICAgZWxpZiBtZXRob2Qg
PT0gInN5cyI6Ci0gICAgICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJlKG91dD1UcnVlLCBlcnI9
VHJ1ZSwgQ2FwdHVyZT1TeXNDYXB0dXJlKQotICAgICAgICBlbGlmIG1ldGhvZCA9PSAibm8iOgot
ICAgICAgICAgICAgcmV0dXJuIE11bHRpQ2FwdHVyZShvdXQ9RmFsc2UsIGVycj1GYWxzZSwgaW5f
PUZhbHNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5r
bm93biBjYXB0dXJpbmcgbWV0aG9kOiAlciIgJSBtZXRob2QpCitjbGFzcyBFbmNvZGVkRmlsZShp
by5UZXh0SU9XcmFwcGVyKToKKyAgICBfX3Nsb3RzX18gPSAoKQogCi0gICAgZGVmIHN0YXJ0X2ds
b2JhbF9jYXB0dXJpbmcoc2VsZik6Ci0gICAgICAgIGFzc2VydCBzZWxmLl9nbG9iYWxfY2FwdHVy
aW5nIGlzIE5vbmUKLSAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyA9IHNlbGYuX2dldGNh
cHR1cmUoc2VsZi5fbWV0aG9kKQotICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnN0YXJ0
X2NhcHR1cmluZygpCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZikgLT4gc3RyOgor
ICAgICAgICAjIEVuc3VyZSB0aGF0IGZpbGUubmFtZSBpcyBhIHN0cmluZy4gV29ya2Fyb3VuZCBm
b3IgYSBQeXRob24gYnVnCisgICAgICAgICMgZml4ZWQgaW4gPj0zLjcuNDogaHR0cHM6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUzNjAxNQorICAgICAgICByZXR1cm4gcmVwcihzZWxmLmJ1ZmZlcikK
IAotICAgIGRlZiBzdG9wX2dsb2JhbF9jYXB0dXJpbmcoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
X2dsb2JhbF9jYXB0dXJpbmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9nbG9iYWxf
Y2FwdHVyaW5nLnBvcF9vdXRlcnJfdG9fb3JpZygpCi0gICAgICAgICAgICBzZWxmLl9nbG9iYWxf
Y2FwdHVyaW5nLnN0b3BfY2FwdHVyaW5nKCkKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0
dXJpbmcgPSBOb25lCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1vZGUoc2VsZikgLT4gc3RyOgor
ICAgICAgICAjIFRleHRJT1dyYXBwZXIgZG9lc24ndCBleHBvc2UgYSBtb2RlLCBidXQgYXQgbGVh
c3Qgc29tZSBvZiBvdXIKKyAgICAgICAgIyB0ZXN0cyBjaGVjayBpdC4KKyAgICAgICAgcmV0dXJu
IHNlbGYuYnVmZmVyLm1vZGUucmVwbGFjZSgiYiIsICIiKQogCi0gICAgZGVmIHJlc3VtZV9nbG9i
YWxfY2FwdHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZy5yZXN1bWVf
Y2FwdHVyaW5nKCkKLQotICAgIGRlZiBzdXNwZW5kX2dsb2JhbF9jYXB0dXJlKHNlbGYsIGl0ZW09
Tm9uZSwgaW5fPUZhbHNlKToKLSAgICAgICAgaWYgaXRlbSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHNlbGYuZGVhY3RpdmF0ZV9maXh0dXJlKGl0ZW0pCi0gICAgICAgIGNhcCA9IGdldGF0dHIo
c2VsZiwgIl9nbG9iYWxfY2FwdHVyaW5nIiwgTm9uZSkKLSAgICAgICAgaWYgY2FwIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dGVyciA9IGNhcC5yZWFk
b3V0ZXJyKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2FwLnN1c3Bl
bmRfY2FwdHVyaW5nKGluXz1pbl8pCi0gICAgICAgICAgICByZXR1cm4gb3V0ZXJyCi0KLSAgICBk
ZWYgYWN0aXZhdGVfZml4dHVyZShzZWxmLCBpdGVtKToKLSAgICAgICAgIiIiSWYgdGhlIGN1cnJl
bnQgaXRlbSBpcyB1c2luZyBgYGNhcHN5c2BgIG9yIGBgY2FwZmRgYCwgYWN0aXZhdGUgdGhlbSBz
byB0aGV5IHRha2UgcHJlY2VkZW5jZSBvdmVyCi0gICAgICAgIHRoZSBnbG9iYWwgY2FwdHVyZS4K
LSAgICAgICAgIiIiCi0gICAgICAgIGZpeHR1cmUgPSBnZXRhdHRyKGl0ZW0sICJfY2FwdHVyZV9m
aXh0dXJlIiwgTm9uZSkKLSAgICAgICAgaWYgZml4dHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGZpeHR1cmUuX3N0YXJ0KCkKIAotICAgIGRlZiBkZWFjdGl2YXRlX2ZpeHR1cmUoc2VsZiwg
aXRlbSk6Ci0gICAgICAgICIiIkRlYWN0aXZhdGVzIHRoZSBgYGNhcHN5c2BgIG9yIGBgY2FwZmRg
YCBmaXh0dXJlIG9mIHRoaXMgaXRlbSwgaWYgYW55LiIiIgotICAgICAgICBmaXh0dXJlID0gZ2V0
YXR0cihpdGVtLCAiX2NhcHR1cmVfZml4dHVyZSIsIE5vbmUpCi0gICAgICAgIGlmIGZpeHR1cmUg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmaXh0dXJlLmNsb3NlKCkKK2NsYXNzIENhcHR1cmVJ
Tyhpby5UZXh0SU9XcmFwcGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgc3VwZXIoKS5fX2luaXRfXyhpby5CeXRlc0lPKCksIGVuY29kaW5nPSJVVEYtOCIsIG5l
d2xpbmU9IiIsIHdyaXRlX3Rocm91Z2g9VHJ1ZSkKIAotICAgIEBweXRlc3QuaG9va2ltcGwoaG9v
a3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoc2VsZiwg
Y29sbGVjdG9yKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShjb2xsZWN0b3IsIHB5dGVzdC5GaWxl
KToKLSAgICAgICAgICAgIHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgICAg
IG91dGNvbWUgPSB5aWVsZAotICAgICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnN1c3BlbmRfZ2xv
YmFsX2NhcHR1cmUoKQotICAgICAgICAgICAgcmVwID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAg
ICAgICAgICAgIGlmIG91dDoKLSAgICAgICAgICAgICAgICByZXAuc2VjdGlvbnMuYXBwZW5kKCgi
Q2FwdHVyZWQgc3Rkb3V0Iiwgb3V0KSkKLSAgICAgICAgICAgIGlmIGVycjoKLSAgICAgICAgICAg
ICAgICByZXAuc2VjdGlvbnMuYXBwZW5kKCgiQ2FwdHVyZWQgc3RkZXJyIiwgZXJyKSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkCisgICAgZGVmIGdldHZhbHVlKHNlbGYpIC0+IHN0
cjoKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2VsZi5idWZmZXIsIGlvLkJ5dGVzSU8pCisg
ICAgICAgIHJldHVybiBzZWxmLmJ1ZmZlci5nZXR2YWx1ZSgpLmRlY29kZSgiVVRGLTgiKQogCi0g
ICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVu
dGVzdF9zZXR1cChzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1
cmUoKQotICAgICAgICAjIG5vIG5lZWQgdG8gYWN0aXZhdGUgYSBjYXB0dXJlIGZpeHR1cmUgYmVj
YXVzZSB0aGV5IGFjdGl2YXRlIHRoZW1zZWx2ZXMgZHVyaW5nIGNyZWF0aW9uOyB0aGlzCi0gICAg
ICAgICMgb25seSBtYWtlcyBzZW5zZSB3aGVuIGEgZml4dHVyZSB1c2VzIGEgY2FwdHVyZSBmaXh0
dXJlLCBvdGhlcndpc2UgdGhlIGNhcHR1cmUgZml4dHVyZSB3aWxsCi0gICAgICAgICMgYmUgYWN0
aXZhdGVkIGR1cmluZyBweXRlc3RfcnVudGVzdF9jYWxsCi0gICAgICAgIHlpZWxkCi0gICAgICAg
IHNlbGYuc3VzcGVuZF9jYXB0dXJlX2l0ZW0oaXRlbSwgInNldHVwIikKIAotICAgIEBweXRlc3Qu
aG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChz
ZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAg
ICAjIGl0IGlzIGltcG9ydGFudCB0byBhY3RpdmF0ZSB0aGlzIGZpeHR1cmUgZHVyaW5nIHRoZSBj
YWxsIHBoYXNlIHNvIGl0IG92ZXJ3cml0ZXMgdGhlICJnbG9iYWwiCi0gICAgICAgICMgY2FwdHVy
ZQotICAgICAgICBzZWxmLmFjdGl2YXRlX2ZpeHR1cmUoaXRlbSkKLSAgICAgICAgeWllbGQKLSAg
ICAgICAgc2VsZi5zdXNwZW5kX2NhcHR1cmVfaXRlbShpdGVtLCAiY2FsbCIpCitjbGFzcyBUZWVD
YXB0dXJlSU8oQ2FwdHVyZUlPKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3RoZXI6IFRleHRJ
TykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fb3RoZXIgPSBvdGhlcgorICAgICAgICBzdXBlcigp
Ll9faW5pdF9fKCkKIAotICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAg
ICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oc2VsZiwgaXRlbSk6Ci0gICAgICAgIHNlbGYu
cmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgc2VsZi5hY3RpdmF0ZV9maXh0dXJlKGl0
ZW0pCi0gICAgICAgIHlpZWxkCi0gICAgICAgIHNlbGYuc3VzcGVuZF9jYXB0dXJlX2l0ZW0oaXRl
bSwgInRlYXJkb3duIikKKyAgICBkZWYgd3JpdGUoc2VsZiwgczogc3RyKSAtPiBpbnQ6CisgICAg
ICAgIHN1cGVyKCkud3JpdGUocykKKyAgICAgICAgcmV0dXJuIHNlbGYuX290aGVyLndyaXRlKHMp
CiAKLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIHB5dGVzdF9r
ZXlib2FyZF9pbnRlcnJ1cHQoc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIHNlbGYuc3RvcF9nbG9i
YWxfY2FwdHVyaW5nKCkKIAotICAgIEBweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAg
ICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIHNlbGYu
c3RvcF9nbG9iYWxfY2FwdHVyaW5nKCkKK2NsYXNzIERvbnRSZWFkRnJvbUlucHV0OgorICAgIGVu
Y29kaW5nID0gTm9uZQogCi0gICAgZGVmIHN1c3BlbmRfY2FwdHVyZV9pdGVtKHNlbGYsIGl0ZW0s
IHdoZW4sIGluXz1GYWxzZSk6Ci0gICAgICAgIG91dCwgZXJyID0gc2VsZi5zdXNwZW5kX2dsb2Jh
bF9jYXB0dXJlKGl0ZW0sIGluXz1pbl8pCi0gICAgICAgIGl0ZW0uYWRkX3JlcG9ydF9zZWN0aW9u
KHdoZW4sICJzdGRvdXQiLCBvdXQpCi0gICAgICAgIGl0ZW0uYWRkX3JlcG9ydF9zZWN0aW9uKHdo
ZW4sICJzdGRlcnIiLCBlcnIpCisgICAgZGVmIHJlYWQoc2VsZiwgKmFyZ3MpOgorICAgICAgICBy
YWlzZSBPU0Vycm9yKAorICAgICAgICAgICAgInB5dGVzdDogcmVhZGluZyBmcm9tIHN0ZGluIHdo
aWxlIG91dHB1dCBpcyBjYXB0dXJlZCEgIENvbnNpZGVyIHVzaW5nIGAtc2AuIgorICAgICAgICAp
CiAKKyAgICByZWFkbGluZSA9IHJlYWQKKyAgICByZWFkbGluZXMgPSByZWFkCisgICAgX19uZXh0
X18gPSByZWFkCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
CiAKLWNhcHR1cmVfZml4dHVyZXMgPSB7ImNhcGZkIiwgImNhcGZkYmluYXJ5IiwgImNhcHN5cyIs
ICJjYXBzeXNiaW5hcnkifQorICAgIGRlZiBmaWxlbm8oc2VsZikgLT4gaW50OgorICAgICAgICBy
YWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbigicmVkaXJlY3RlZCBzdGRpbiBpcyBwc2V1ZG9maWxl
LCBoYXMgbm8gZmlsZW5vKCkiKQogCisgICAgZGVmIGlzYXR0eShzZWxmKSAtPiBib29sOgorICAg
ICAgICByZXR1cm4gRmFsc2UKIAotZGVmIF9lbnN1cmVfb25seV9vbmVfY2FwdHVyZV9maXh0dXJl
KHJlcXVlc3QsIG5hbWUpOgotICAgIGZpeHR1cmVzID0gc2V0KHJlcXVlc3QuZml4dHVyZW5hbWVz
KSAmIGNhcHR1cmVfZml4dHVyZXMgLSB7bmFtZX0KLSAgICBpZiBmaXh0dXJlczoKLSAgICAgICAg
Zml4dHVyZXMgPSBzb3J0ZWQoZml4dHVyZXMpCi0gICAgICAgIGZpeHR1cmVzID0gZml4dHVyZXNb
MF0gaWYgbGVuKGZpeHR1cmVzKSA9PSAxIGVsc2UgZml4dHVyZXMKLSAgICAgICAgcmFpc2UgcmVx
dWVzdC5yYWlzZWVycm9yKAotICAgICAgICAgICAgImNhbm5vdCB1c2Uge30gYW5kIHt9IGF0IHRo
ZSBzYW1lIHRpbWUiLmZvcm1hdChmaXh0dXJlcywgbmFtZSkKLSAgICAgICAgKQorICAgIGRlZiBj
bG9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICBwYXNzCiAKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgYnVmZmVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgogCi1AcHl0ZXN0LmZpeHR1cmUK
LWRlZiBjYXBzeXMocmVxdWVzdCk6Ci0gICAgIiIiRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMg
dG8gYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFuZCBtYWtlCi0gICAgY2FwdHVy
ZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVhZG91dGVycigpYGAgbWV0aG9kIGNh
bGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgbmFtZWR0dXBsZS4gIGBgb3V0
YGAgYW5kIGBgZXJyYGAgd2lsbCBiZSBgYHRleHRgYAotICAgIG9iamVjdHMuCi0gICAgIiIiCi0g
ICAgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVxdWVzdCwgImNhcHN5cyIpCi0g
ICAgd2l0aCBfaW5zdGFsbF9jYXB0dXJlX2ZpeHR1cmVfb25faXRlbShyZXF1ZXN0LCBTeXNDYXB0
dXJlKSBhcyBmaXh0dXJlOgotICAgICAgICB5aWVsZCBmaXh0dXJlCiAKKyMgQ2FwdHVyZSBjbGFz
c2VzLgogCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBzeXNiaW5hcnkocmVxdWVzdCk6Ci0gICAg
IiIiRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lz
LnN0ZGVycmBgIGFuZCBtYWtlCi0gICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBj
YXBzeXMucmVhZG91dGVycigpYGAgbWV0aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAo
b3V0LCBlcnIpYGAgdHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGBieXRlc2Bg
Ci0gICAgb2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4
dHVyZShyZXF1ZXN0LCAiY2Fwc3lzYmluYXJ5IikKLSAgICAjIEN1cnJlbnRseSwgdGhlIGltcGxl
bWVudGF0aW9uIHVzZXMgdGhlIHB5dGhvbjMgc3BlY2lmaWMgYC5idWZmZXJgCi0gICAgIyBwcm9w
ZXJ0eSBvZiBDYXB0dXJlSU8uCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6Ci0gICAg
ICAgIHJhaXNlIHJlcXVlc3QucmFpc2VlcnJvcigiY2Fwc3lzYmluYXJ5IGlzIG9ubHkgc3VwcG9y
dGVkIG9uIHB5dGhvbiAzIikKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9p
dGVtKHJlcXVlc3QsIFN5c0NhcHR1cmVCaW5hcnkpIGFzIGZpeHR1cmU6Ci0gICAgICAgIHlpZWxk
IGZpeHR1cmUKIAorcGF0Y2hzeXNkaWN0ID0gezA6ICJzdGRpbiIsIDE6ICJzdGRvdXQiLCAyOiAi
c3RkZXJyIn0KIAotQHB5dGVzdC5maXh0dXJlCi1kZWYgY2FwZmQocmVxdWVzdCk6Ci0gICAgIiIi
RW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gZmlsZSBkZXNjcmlwdG9ycyBgYDFgYCBhbmQg
YGAyYGAgYW5kIG1ha2UKLSAgICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcGZk
LnJlYWRvdXRlcnIoKWBgIG1ldGhvZCBjYWxscwotICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwg
ZXJyKWBgIHR1cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgCi0gICAg
b2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShy
ZXF1ZXN0LCAiY2FwZmQiKQotICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAiZHVwIik6Ci0gICAgICAg
IHB5dGVzdC5za2lwKAotICAgICAgICAgICAgImNhcGZkIGZpeHR1cmUgbmVlZHMgb3MuZHVwIGZ1
bmN0aW9uIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBzeXN0ZW0iCisKK2NsYXNzIE5v
Q2FwdHVyZToKKyAgICBFTVBUWV9CVUZGRVIgPSBOb25lCisgICAgX19pbml0X18gPSBzdGFydCA9
IGRvbmUgPSBzdXNwZW5kID0gcmVzdW1lID0gbGFtYmRhICphcmdzOiBOb25lCisKKworY2xhc3Mg
U3lzQ2FwdHVyZUJpbmFyeToKKworICAgIEVNUFRZX0JVRkZFUiA9IGIiIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZkOiBpbnQsIHRtcGZpbGU9Tm9uZSwgKiwgdGVlOiBib29sID0gRmFsc2Up
IC0+IE5vbmU6CisgICAgICAgIG5hbWUgPSBwYXRjaHN5c2RpY3RbZmRdCisgICAgICAgIHNlbGYu
X29sZCA9IGdldGF0dHIoc3lzLCBuYW1lKQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAg
ICAgIGlmIHRtcGZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIG5hbWUgPT0gInN0ZGluIjoK
KyAgICAgICAgICAgICAgICB0bXBmaWxlID0gRG9udFJlYWRGcm9tSW5wdXQoKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICB0bXBmaWxlID0gQ2FwdHVyZUlPKCkgaWYgbm90IHRl
ZSBlbHNlIFRlZUNhcHR1cmVJTyhzZWxmLl9vbGQpCisgICAgICAgIHNlbGYudG1wZmlsZSA9IHRt
cGZpbGUKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAiaW5pdGlhbGl6ZWQiCisKKyAgICBkZWYgcmVw
cihzZWxmLCBjbGFzc19uYW1lOiBzdHIpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8e30ge30g
X29sZD17fSBfc3RhdGU9eyFyfSB0bXBmaWxlPXshcn0+Ii5mb3JtYXQoCisgICAgICAgICAgICBj
bGFzc19uYW1lLAorICAgICAgICAgICAgc2VsZi5uYW1lLAorICAgICAgICAgICAgaGFzYXR0cihz
ZWxmLCAiX29sZCIpIGFuZCByZXByKHNlbGYuX29sZCkgb3IgIjxVTlNFVD4iLAorICAgICAgICAg
ICAgc2VsZi5fc3RhdGUsCisgICAgICAgICAgICBzZWxmLnRtcGZpbGUsCiAgICAgICAgICkKLSAg
ICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIEZEQ2FwdHVy
ZSkgYXMgZml4dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQogCisgICAgZGVmIF9fcmVwcl9f
KHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8e30ge30gX29sZD17fSBfc3RhdGU9eyFy
fSB0bXBmaWxlPXshcn0+Ii5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25h
bWVfXywKKyAgICAgICAgICAgIHNlbGYubmFtZSwKKyAgICAgICAgICAgIGhhc2F0dHIoc2VsZiwg
Il9vbGQiKSBhbmQgcmVwcihzZWxmLl9vbGQpIG9yICI8VU5TRVQ+IiwKKyAgICAgICAgICAgIHNl
bGYuX3N0YXRlLAorICAgICAgICAgICAgc2VsZi50bXBmaWxlLAorICAgICAgICApCiAKLUBweXRl
c3QuZml4dHVyZQotZGVmIGNhcGZkYmluYXJ5KHJlcXVlc3QpOgotICAgICIiIkVuYWJsZSBjYXB0
dXJpbmcgb2Ygd3JpdGUgdG8gZmlsZSBkZXNjcmlwdG9ycyAxIGFuZCAyIGFuZCBtYWtlCi0gICAg
Y2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBmZGJpbmFyeS5yZWFkb3V0ZXJyYGAg
bWV0aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBg
YG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUKLSAgICBgYGJ5dGVzYGAgb2JqZWN0cy4KLSAgICAi
IiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShyZXF1ZXN0LCAiY2FwZmRi
aW5hcnkiKQotICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAiZHVwIik6Ci0gICAgICAgIHB5dGVzdC5z
a2lwKAotICAgICAgICAgICAgImNhcGZkYmluYXJ5IGZpeHR1cmUgbmVlZHMgb3MuZHVwIGZ1bmN0
aW9uIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBzeXN0ZW0iCisgICAgZGVmIF9hc3Nl
cnRfc3RhdGUoc2VsZiwgb3A6IHN0ciwgc3RhdGVzOiBUdXBsZVtzdHIsIC4uLl0pIC0+IE5vbmU6
CisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICBzZWxmLl9zdGF0ZSBpbiBzdGF0ZXMKKyAg
ICAgICAgKSwgImNhbm5vdCB7fSBpbiBzdGF0ZSB7IXJ9OiBleHBlY3RlZCBvbmUgb2Yge30iLmZv
cm1hdCgKKyAgICAgICAgICAgIG9wLCBzZWxmLl9zdGF0ZSwgIiwgIi5qb2luKHN0YXRlcykKICAg
ICAgICAgKQotICAgIHdpdGggX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVz
dCwgRkRDYXB0dXJlQmluYXJ5KSBhcyBmaXh0dXJlOgotICAgICAgICB5aWVsZCBmaXh0dXJlCiAK
KyAgICBkZWYgc3RhcnQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0YXRl
KCJzdGFydCIsICgiaW5pdGlhbGl6ZWQiLCkpCisgICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLm5h
bWUsIHNlbGYudG1wZmlsZSkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAic3RhcnRlZCIKIAotQGNv
bnRleHRsaWIuY29udGV4dG1hbmFnZXIKLWRlZiBfaW5zdGFsbF9jYXB0dXJlX2ZpeHR1cmVfb25f
aXRlbShyZXF1ZXN0LCBjYXB0dXJlX2NsYXNzKToKLSAgICAiIiIKLSAgICBDb250ZXh0IG1hbmFn
ZXIgd2hpY2ggY3JlYXRlcyBhIGBgQ2FwdHVyZUZpeHR1cmVgYCBpbnN0YW5jZSBhbmQgImluc3Rh
bGxzIiBpdCBvbgotICAgIHRoZSBpdGVtL25vZGUgb2YgdGhlIGdpdmVuIHJlcXVlc3QuIFVzZWQg
YnkgYGBjYXBzeXNgYCBhbmQgYGBjYXBmZGBgLgorICAgIGRlZiBzbmFwKHNlbGYpOgorICAgICAg
ICBzZWxmLl9hc3NlcnRfc3RhdGUoInNuYXAiLCAoInN0YXJ0ZWQiLCAic3VzcGVuZGVkIikpCisg
ICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCisgICAgICAgIHJlcyA9IHNlbGYudG1wZmlsZS5i
dWZmZXIucmVhZCgpCisgICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCisgICAgICAgIHNlbGYu
dG1wZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIHJldHVybiByZXMKIAotICAgIFRoZSBDYXB0dXJl
Rml4dHVyZSBpcyBhZGRlZCBhcyBhdHRyaWJ1dGUgb2YgdGhlIGl0ZW0gYmVjYXVzZSBpdCBuZWVk
cyB0byBhY2Nlc3NlZAotICAgIGJ5IGBgQ2FwdHVyZU1hbmFnZXJgYCBkdXJpbmcgaXRzIGBgcHl0
ZXN0X3J1bnRlc3RfKmBgIGhvb2tzLgotICAgICIiIgotICAgIHJlcXVlc3Qubm9kZS5fY2FwdHVy
ZV9maXh0dXJlID0gZml4dHVyZSA9IENhcHR1cmVGaXh0dXJlKGNhcHR1cmVfY2xhc3MsIHJlcXVl
c3QpCi0gICAgY2FwbWFuYWdlciA9IHJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1
Z2luKCJjYXB0dXJlbWFuYWdlciIpCi0gICAgIyBuZWVkIHRvIGFjdGl2ZSB0aGlzIGZpeHR1cmUg
cmlnaHQgYXdheSBpbiBjYXNlIGl0IGlzIGJlaW5nIHVzZWQgYnkgYW5vdGhlciBmaXh0dXJlIChz
ZXR1cCBwaGFzZSkKLSAgICAjIGlmIHRoaXMgZml4dHVyZSBpcyBiZWluZyB1c2VkIG9ubHkgYnkg
YSB0ZXN0IGZ1bmN0aW9uIChjYWxsIHBoYXNlKSwgdGhlbiB3ZSB3b3VsZG4ndCBuZWVkIHRoaXMK
LSAgICAjIGFjdGl2YXRpb24sIGJ1dCBpdCBkb2Vzbid0IGh1cnQKLSAgICBjYXBtYW5hZ2VyLmFj
dGl2YXRlX2ZpeHR1cmUocmVxdWVzdC5ub2RlKQotICAgIHlpZWxkIGZpeHR1cmUKLSAgICBmaXh0
dXJlLmNsb3NlKCkKLSAgICBkZWwgcmVxdWVzdC5ub2RlLl9jYXB0dXJlX2ZpeHR1cmUKLQotCi1j
bGFzcyBDYXB0dXJlRml4dHVyZShvYmplY3QpOgotICAgICIiIgotICAgIE9iamVjdCByZXR1cm5l
ZCBieSA6cHk6ZnVuYzpgY2Fwc3lzYCwgOnB5OmZ1bmM6YGNhcHN5c2JpbmFyeWAsIDpweTpmdW5j
OmBjYXBmZGAgYW5kIDpweTpmdW5jOmBjYXBmZGJpbmFyeWAKLSAgICBmaXh0dXJlcy4KKyAgICBk
ZWYgZG9uZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoImRvbmUi
LCAoImluaXRpYWxpemVkIiwgInN0YXJ0ZWQiLCAic3VzcGVuZGVkIiwgImRvbmUiKSkKKyAgICAg
ICAgaWYgc2VsZi5fc3RhdGUgPT0gImRvbmUiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IHNldGF0dHIoc3lzLCBzZWxmLm5hbWUsIHNlbGYuX29sZCkKKyAgICAgICAgZGVsIHNlbGYuX29s
ZAorICAgICAgICBzZWxmLnRtcGZpbGUuY2xvc2UoKQorICAgICAgICBzZWxmLl9zdGF0ZSA9ICJk
b25lIgorCisgICAgZGVmIHN1c3BlbmQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3N0YXRlKCJzdXNwZW5kIiwgKCJzdGFydGVkIiwgInN1c3BlbmRlZCIpKQorICAgICAgICBz
ZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBzZWxmLl9vbGQpCisgICAgICAgIHNlbGYuX3N0YXRlID0g
InN1c3BlbmRlZCIKKworICAgIGRlZiByZXN1bWUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5fYXNzZXJ0X3N0YXRlKCJyZXN1bWUiLCAoInN0YXJ0ZWQiLCAic3VzcGVuZGVkIikpCisgICAg
ICAgIGlmIHNlbGYuX3N0YXRlID09ICJzdGFydGVkIjoKKyAgICAgICAgICAgIHJldHVybgorICAg
ICAgICBzZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBzZWxmLnRtcGZpbGUpCisgICAgICAgIHNlbGYu
X3N0YXRlID0gInN0YXJ0ZWQiCisKKyAgICBkZWYgd3JpdGVvcmcoc2VsZiwgZGF0YSkgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0YXRlKCJ3cml0ZW9yZyIsICgic3RhcnRlZCIsICJz
dXNwZW5kZWQiKSkKKyAgICAgICAgc2VsZi5fb2xkLmZsdXNoKCkKKyAgICAgICAgc2VsZi5fb2xk
LmJ1ZmZlci53cml0ZShkYXRhKQorICAgICAgICBzZWxmLl9vbGQuYnVmZmVyLmZsdXNoKCkKKwor
CitjbGFzcyBTeXNDYXB0dXJlKFN5c0NhcHR1cmVCaW5hcnkpOgorICAgIEVNUFRZX0JVRkZFUiA9
ICIiICAjIHR5cGU6IGlnbm9yZVthc3NpZ25tZW50XQorCisgICAgZGVmIHNuYXAoc2VsZik6Cisg
ICAgICAgIHJlcyA9IHNlbGYudG1wZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYudG1wZmls
ZS5zZWVrKDApCisgICAgICAgIHNlbGYudG1wZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIHJldHVy
biByZXMKKworICAgIGRlZiB3cml0ZW9yZyhzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3N0YXRlKCJ3cml0ZW9yZyIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAg
c2VsZi5fb2xkLndyaXRlKGRhdGEpCisgICAgICAgIHNlbGYuX29sZC5mbHVzaCgpCisKKworY2xh
c3MgRkRDYXB0dXJlQmluYXJ5OgorICAgICIiIkNhcHR1cmUgSU8gdG8vZnJvbSBhIGdpdmVuIE9T
LWxldmVsIGZpbGUgZGVzY3JpcHRvci4KKworICAgIHNuYXAoKSBwcm9kdWNlcyBgYnl0ZXNgLgog
ICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcHR1cmVjbGFzcywgcmVxdWVzdCk6
Ci0gICAgICAgIHNlbGYuY2FwdHVyZWNsYXNzID0gY2FwdHVyZWNsYXNzCi0gICAgICAgIHNlbGYu
cmVxdWVzdCA9IHJlcXVlc3QKKyAgICBFTVBUWV9CVUZGRVIgPSBiIiIKIAotICAgIGRlZiBfc3Rh
cnQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmUgPSBNdWx0aUNhcHR1cmUoCi0gICAgICAg
ICAgICBvdXQ9VHJ1ZSwgZXJyPVRydWUsIGluXz1GYWxzZSwgQ2FwdHVyZT1zZWxmLmNhcHR1cmVj
bGFzcworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRmZDogaW50KSAtPiBOb25lOgorICAg
ICAgICBzZWxmLnRhcmdldGZkID0gdGFyZ2V0ZmQKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBvcy5mc3RhdCh0YXJnZXRmZCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAg
ICAjIEZEIGNhcHR1cmluZyBpcyBjb25jZXB0dWFsbHkgc2ltcGxlIC0tIGNyZWF0ZSBhIHRlbXBv
cmFyeSBmaWxlLAorICAgICAgICAgICAgIyByZWRpcmVjdCB0aGUgRkQgdG8gaXQsIHJlZGlyZWN0
IGJhY2sgd2hlbiBkb25lLiBCdXQgd2hlbiB0aGUKKyAgICAgICAgICAgICMgdGFyZ2V0IEZEIGlz
IGludmFsaWQgaXQgdGhyb3dzIGEgd3JlbmNoIGludG8gdGhpcyBsb3ZlbGV5IHNjaGVtZS4KKyAg
ICAgICAgICAgICMKKyAgICAgICAgICAgICMgVGVzdHMgdGhlbXNlbHZlcyBzaG91bGRuJ3QgY2Fy
ZSBpZiB0aGUgRkQgaXMgdmFsaWQsIEZEIGNhcHR1cmluZworICAgICAgICAgICAgIyBzaG91bGQg
d29yayByZWdhcmRsZXNzIG9mIGV4dGVybmFsIGNpcmN1bXN0YW5jZXMuIFNvIGZhbGxpbmcgYmFj
aworICAgICAgICAgICAgIyB0byBqdXN0IHN5cyBjYXB0dXJpbmcgaXMgbm90IGEgZ29vZCBvcHRp
b24uCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIEZ1cnRoZXIgY29tcGxpY2F0aW9ucyBh
cmUgdGhlIG5lZWQgdG8gc3VwcG9ydCBzdXNwZW5kKCkgYW5kIHRoZQorICAgICAgICAgICAgIyBw
b3NzaWJpbGl0eSBvZiBGRCByZXVzZSAoZS5nLiB0aGUgdG1wZmlsZSBnZXR0aW5nIHRoZSB2ZXJ5
IHNhbWUKKyAgICAgICAgICAgICMgdGFyZ2V0IEZEKS4gVGhlIGZvbGxvd2luZyBhcHByb2FjaCBp
cyByb2J1c3QsIEkgYmVsaWV2ZS4KKyAgICAgICAgICAgIHNlbGYudGFyZ2V0ZmRfaW52YWxpZCA9
IG9zLm9wZW4oCisgICAgICAgICAgICAgICAgb3MuZGV2bnVsbCwgb3MuT19SRFdSCisgICAgICAg
ICAgICApICAjIHR5cGU6IE9wdGlvbmFsW2ludF0KKyAgICAgICAgICAgIG9zLmR1cDIoc2VsZi50
YXJnZXRmZF9pbnZhbGlkLCB0YXJnZXRmZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYudGFyZ2V0ZmRfaW52YWxpZCA9IE5vbmUKKyAgICAgICAgc2VsZi50YXJnZXRmZF9zYXZlID0g
b3MuZHVwKHRhcmdldGZkKQorCisgICAgICAgIGlmIHRhcmdldGZkID09IDA6CisgICAgICAgICAg
ICBzZWxmLnRtcGZpbGUgPSBvcGVuKG9zLmRldm51bGwpCisgICAgICAgICAgICBzZWxmLnN5c2Nh
cHR1cmUgPSBTeXNDYXB0dXJlKHRhcmdldGZkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi50bXBmaWxlID0gRW5jb2RlZEZpbGUoCisgICAgICAgICAgICAgICAgIyBUT0RPOiBSZW1v
dmUgdHlwZSBpZ25vcmUsIGZpeGVkIGluIG5leHQgbXlweSByZWxlYXNlLgorICAgICAgICAgICAg
ICAgIFRlbXBvcmFyeUZpbGUoYnVmZmVyaW5nPTApLCAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVd
CisgICAgICAgICAgICAgICAgZW5jb2Rpbmc9InV0Zi04IiwKKyAgICAgICAgICAgICAgICBlcnJv
cnM9InJlcGxhY2UiLAorICAgICAgICAgICAgICAgIG5ld2xpbmU9IiIsCisgICAgICAgICAgICAg
ICAgd3JpdGVfdGhyb3VnaD1UcnVlLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgdGFy
Z2V0ZmQgaW4gcGF0Y2hzeXNkaWN0OgorICAgICAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9
IFN5c0NhcHR1cmUodGFyZ2V0ZmQsIHNlbGYudG1wZmlsZSkKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgc2VsZi5zeXNjYXB0dXJlID0gTm9DYXB0dXJlKCkKKworICAgICAgICBz
ZWxmLl9zdGF0ZSA9ICJpbml0aWFsaXplZCIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBz
dHI6CisgICAgICAgIHJldHVybiAiPHt9IHt9IG9sZGZkPXt9IF9zdGF0ZT17IXJ9IHRtcGZpbGU9
eyFyfT4iLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAg
ICAgICAgICAgc2VsZi50YXJnZXRmZCwKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0ZmRfc2F2ZSwK
KyAgICAgICAgICAgIHNlbGYuX3N0YXRlLAorICAgICAgICAgICAgc2VsZi50bXBmaWxlLAogICAg
ICAgICApCi0gICAgICAgIHNlbGYuX2NhcHR1cmUuc3RhcnRfY2FwdHVyaW5nKCkKIAotICAgIGRl
ZiBjbG9zZShzZWxmKToKLSAgICAgICAgY2FwID0gc2VsZi5fX2RpY3RfXy5wb3AoIl9jYXB0dXJl
IiwgTm9uZSkKLSAgICAgICAgaWYgY2FwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5f
b3V0ZXJyID0gY2FwLnBvcF9vdXRlcnJfdG9fb3JpZygpCi0gICAgICAgICAgICBjYXAuc3RvcF9j
YXB0dXJpbmcoKQorICAgIGRlZiBfYXNzZXJ0X3N0YXRlKHNlbGYsIG9wOiBzdHIsIHN0YXRlczog
VHVwbGVbc3RyLCAuLi5dKSAtPiBOb25lOgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAg
c2VsZi5fc3RhdGUgaW4gc3RhdGVzCisgICAgICAgICksICJjYW5ub3Qge30gaW4gc3RhdGUgeyFy
fTogZXhwZWN0ZWQgb25lIG9mIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICBvcCwgc2VsZi5fc3Rh
dGUsICIsICIuam9pbihzdGF0ZXMpCisgICAgICAgICkKIAotICAgIGRlZiByZWFkb3V0ZXJyKHNl
bGYpOgotICAgICAgICAiIiJSZWFkIGFuZCByZXR1cm4gdGhlIGNhcHR1cmVkIG91dHB1dCBzbyBm
YXIsIHJlc2V0dGluZyB0aGUgaW50ZXJuYWwgYnVmZmVyLgorICAgIGRlZiBzdGFydChzZWxmKSAt
PiBOb25lOgorICAgICAgICAiIiJTdGFydCBjYXB0dXJpbmcgb24gdGFyZ2V0ZmQgdXNpbmcgbWVt
b3JpemVkIHRtcGZpbGUuIiIiCisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGF0ZSgic3RhcnQiLCAo
ImluaXRpYWxpemVkIiwpKQorICAgICAgICBvcy5kdXAyKHNlbGYudG1wZmlsZS5maWxlbm8oKSwg
c2VsZi50YXJnZXRmZCkKKyAgICAgICAgc2VsZi5zeXNjYXB0dXJlLnN0YXJ0KCkKKyAgICAgICAg
c2VsZi5fc3RhdGUgPSAic3RhcnRlZCIKIAotICAgICAgICA6cmV0dXJuOiBjYXB0dXJlZCBjb250
ZW50IGFzIGEgbmFtZWR0dXBsZSB3aXRoICBgYG91dGBgIGFuZCBgYGVycmBgIHN0cmluZyBhdHRy
aWJ1dGVzCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fY2FwdHVyZS5yZWFkb3V0ZXJyKCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX291dGVycgorICAgIGRlZiBzbmFwKHNlbGYpOgorICAg
ICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoInNuYXAiLCAoInN0YXJ0ZWQiLCAic3VzcGVuZGVkIikp
CisgICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCisgICAgICAgIHJlcyA9IHNlbGYudG1wZmls
ZS5idWZmZXIucmVhZCgpCisgICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCisgICAgICAgIHNl
bGYudG1wZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIHJldHVybiByZXMKIAotICAgIEBjb250ZXh0
bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIGRpc2FibGVkKHNlbGYpOgotICAgICAgICAiIiJU
ZW1wb3JhcmlseSBkaXNhYmxlcyBjYXB0dXJlIHdoaWxlIGluc2lkZSB0aGUgJ3dpdGgnIGJsb2Nr
LiIiIgotICAgICAgICBzZWxmLl9jYXB0dXJlLnN1c3BlbmRfY2FwdHVyaW5nKCkKLSAgICAgICAg
Y2FwbWFuYWdlciA9IHNlbGYucmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4o
ImNhcHR1cmVtYW5hZ2VyIikKLSAgICAgICAgY2FwbWFuYWdlci5zdXNwZW5kX2dsb2JhbF9jYXB0
dXJlKGl0ZW09Tm9uZSwgaW5fPUZhbHNlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVs
ZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2FwbWFuYWdlci5yZXN1bWVfZ2xvYmFs
X2NhcHR1cmUoKQotICAgICAgICAgICAgc2VsZi5fY2FwdHVyZS5yZXN1bWVfY2FwdHVyaW5nKCkK
KyAgICBkZWYgZG9uZShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJTdG9wIGNhcHR1cmluZywg
cmVzdG9yZSBzdHJlYW1zLCByZXR1cm4gb3JpZ2luYWwgY2FwdHVyZSBmaWxlLAorICAgICAgICBz
ZWVrZWQgdG8gcG9zaXRpb24gemVyby4iIiIKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0YXRlKCJk
b25lIiwgKCJpbml0aWFsaXplZCIsICJzdGFydGVkIiwgInN1c3BlbmRlZCIsICJkb25lIikpCisg
ICAgICAgIGlmIHNlbGYuX3N0YXRlID09ICJkb25lIjoKKyAgICAgICAgICAgIHJldHVybgorICAg
ICAgICBvcy5kdXAyKHNlbGYudGFyZ2V0ZmRfc2F2ZSwgc2VsZi50YXJnZXRmZCkKKyAgICAgICAg
b3MuY2xvc2Uoc2VsZi50YXJnZXRmZF9zYXZlKQorICAgICAgICBpZiBzZWxmLnRhcmdldGZkX2lu
dmFsaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLnRhcmdldGZkX2ludmFsaWQg
IT0gc2VsZi50YXJnZXRmZDoKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLnRhcmdldGZk
KQorICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi50YXJnZXRmZF9pbnZhbGlkKQorICAgICAgICBz
ZWxmLnN5c2NhcHR1cmUuZG9uZSgpCisgICAgICAgIHNlbGYudG1wZmlsZS5jbG9zZSgpCisgICAg
ICAgIHNlbGYuX3N0YXRlID0gImRvbmUiCisKKyAgICBkZWYgc3VzcGVuZChzZWxmKSAtPiBOb25l
OgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdGUoInN1c3BlbmQiLCAoInN0YXJ0ZWQiLCAic3Vz
cGVuZGVkIikpCisgICAgICAgIGlmIHNlbGYuX3N0YXRlID09ICJzdXNwZW5kZWQiOgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuc3lzY2FwdHVyZS5zdXNwZW5kKCkKKyAgICAgICAg
b3MuZHVwMihzZWxmLnRhcmdldGZkX3NhdmUsIHNlbGYudGFyZ2V0ZmQpCisgICAgICAgIHNlbGYu
X3N0YXRlID0gInN1c3BlbmRlZCIKKworICAgIGRlZiByZXN1bWUoc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X3N0YXRlKCJyZXN1bWUiLCAoInN0YXJ0ZWQiLCAic3VzcGVuZGVk
IikpCisgICAgICAgIGlmIHNlbGYuX3N0YXRlID09ICJzdGFydGVkIjoKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBzZWxmLnN5c2NhcHR1cmUucmVzdW1lKCkKKyAgICAgICAgb3MuZHVwMihz
ZWxmLnRtcGZpbGUuZmlsZW5vKCksIHNlbGYudGFyZ2V0ZmQpCisgICAgICAgIHNlbGYuX3N0YXRl
ID0gInN0YXJ0ZWQiCisKKyAgICBkZWYgd3JpdGVvcmcoc2VsZiwgZGF0YSk6CisgICAgICAgICIi
IldyaXRlIHRvIG9yaWdpbmFsIGZpbGUgZGVzY3JpcHRvci4iIiIKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3N0YXRlKCJ3cml0ZW9yZyIsICgic3RhcnRlZCIsICJzdXNwZW5kZWQiKSkKKyAgICAgICAg
b3Mud3JpdGUoc2VsZi50YXJnZXRmZF9zYXZlLCBkYXRhKQogCiAKLWRlZiBzYWZlX3RleHRfZHVw
ZmlsZShmLCBtb2RlLCBkZWZhdWx0X2VuY29kaW5nPSJVVEY4Iik6Ci0gICAgIiIiIHJldHVybiBh
biBvcGVuIHRleHQgZmlsZSBvYmplY3QgdGhhdCdzIGEgZHVwbGljYXRlIG9mIGYgb24gdGhlCi0g
ICAgICAgIEZELWxldmVsIGlmIHBvc3NpYmxlLgorY2xhc3MgRkRDYXB0dXJlKEZEQ2FwdHVyZUJp
bmFyeSk6CisgICAgIiIiQ2FwdHVyZSBJTyB0by9mcm9tIGEgZ2l2ZW4gT1MtbGV2ZWwgZmlsZSBk
ZXNjcmlwdG9yLgorCisgICAgc25hcCgpIHByb2R1Y2VzIHRleHQuCiAgICAgIiIiCi0gICAgZW5j
b2RpbmcgPSBnZXRhdHRyKGYsICJlbmNvZGluZyIsIE5vbmUpCi0gICAgdHJ5OgotICAgICAgICBm
ZCA9IGYuZmlsZW5vKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBpZiAiYiIgbm90
IGluIGdldGF0dHIoZiwgIm1vZGUiLCAiIikgYW5kIGhhc2F0dHIoZiwgImVuY29kaW5nIik6Ci0g
ICAgICAgICAgICAjIHdlIHNlZW0gdG8gaGF2ZSBhIHRleHQgc3RyZWFtLCBsZXQncyBqdXN0IHVz
ZSBpdAotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICBlbHNlOgotICAgICAgICBuZXdmZCA9IG9z
LmR1cChmZCkKLSAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgbW9kZSAr
PSAiYiIKLSAgICAgICAgZiA9IG9zLmZkb3BlbihuZXdmZCwgbW9kZSwgMCkgICMgbm8gYnVmZmVy
aW5nCi0gICAgcmV0dXJuIEVuY29kZWRGaWxlKGYsIGVuY29kaW5nIG9yIGRlZmF1bHRfZW5jb2Rp
bmcpCi0KLQotY2xhc3MgRW5jb2RlZEZpbGUob2JqZWN0KToKLSAgICBlcnJvcnMgPSAic3RyaWN0
IiAgIyBwb3NzaWJseSBuZWVkZWQgYnkgcHkzIGNvZGUgKGlzc3VlNTU1KQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJ1ZmZlciwgZW5jb2RpbmcpOgotICAgICAgICBzZWxmLmJ1ZmZlciA9IGJ1
ZmZlcgotICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKLQotICAgIGRlZiB3cml0ZShz
ZWxmLCBvYmopOgotICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc2l4LnRleHRfdHlwZSk6Ci0g
ICAgICAgICAgICBvYmogPSBvYmouZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIikKLSAg
ICAgICAgc2VsZi5idWZmZXIud3JpdGUob2JqKQotCi0gICAgZGVmIHdyaXRlbGluZXMoc2VsZiwg
bGluZWxpc3QpOgotICAgICAgICBkYXRhID0gIiIuam9pbihsaW5lbGlzdCkKLSAgICAgICAgc2Vs
Zi53cml0ZShkYXRhKQogCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAg
ICAgICIiIkVuc3VyZSB0aGF0IGZpbGUubmFtZSBpcyBhIHN0cmluZy4iIiIKLSAgICAgICAgcmV0
dXJuIHJlcHIoc2VsZi5idWZmZXIpCisgICAgIyBJZ25vcmUgdHlwZSBiZWNhdXNlIGl0IGRvZXNu
J3QgbWF0Y2ggdGhlIHR5cGUgaW4gdGhlIHN1cGVyY2xhc3MgKGJ5dGVzKS4KKyAgICBFTVBUWV9C
VUZGRVIgPSAiIiAgIyB0eXBlOiBpZ25vcmUKKworICAgIGRlZiBzbmFwKHNlbGYpOgorICAgICAg
ICBzZWxmLl9hc3NlcnRfc3RhdGUoInNuYXAiLCAoInN0YXJ0ZWQiLCAic3VzcGVuZGVkIikpCisg
ICAgICAgIHNlbGYudG1wZmlsZS5zZWVrKDApCisgICAgICAgIHJlcyA9IHNlbGYudG1wZmlsZS5y
ZWFkKCkKKyAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKKyAgICAgICAgc2VsZi50bXBmaWxl
LnRydW5jYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNl
bGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmplY3QuX19nZXRhdHRyaWJ1dGVf
XyhzZWxmLCAiYnVmZmVyIiksIG5hbWUpCisgICAgZGVmIHdyaXRlb3JnKHNlbGYsIGRhdGEpOgor
ICAgICAgICAiIiJXcml0ZSB0byBvcmlnaW5hbCBmaWxlIGRlc2NyaXB0b3IuIiIiCisgICAgICAg
IHN1cGVyKCkud3JpdGVvcmcoZGF0YS5lbmNvZGUoInV0Zi04IikpICAjIFhYWCB1c2UgZW5jb2Rp
bmcgb2Ygb3JpZ2luYWwgc3RyZWFtCiAKIAotQ2FwdHVyZVJlc3VsdCA9IGNvbGxlY3Rpb25zLm5h
bWVkdHVwbGUoIkNhcHR1cmVSZXN1bHQiLCBbIm91dCIsICJlcnIiXSkKKyMgTXVsdGlDYXB0dXJl
CiAKIAotY2xhc3MgTXVsdGlDYXB0dXJlKG9iamVjdCk6Ci0gICAgb3V0ID0gZXJyID0gaW5fID0g
Tm9uZQorIyBUaGlzIGNsYXNzIHdhcyBhIG5hbWVkdHVwbGUsIGJ1dCBkdWUgdG8gbXlweSBsaW1p
dGF0aW9uWzBdIGl0IGNvdWxkIG5vdCBiZQorIyBtYWRlIGdlbmVyaWMsIHNvIHdhcyByZXBsYWNl
ZCBieSBhIHJlZ3VsYXIgY2xhc3Mgd2hpY2ggdHJpZXMgdG8gZW11bGF0ZSB0aGUKKyMgcGVydGlu
ZW50IHBhcnRzIG9mIGEgbmFtZWR0dXBsZS4gSWYgdGhlIG15cHkgbGltaXRhdGlvbiBpcyBldmVy
IGxpZnRlZCwgY2FuCisjIG1ha2UgaXQgYSBuYW1lZHR1cGxlIGFnYWluLgorIyBbMF06IGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMvNjg1CitAZmluYWwKK0BmdW5jdG9vbHMu
dG90YWxfb3JkZXJpbmcKK2NsYXNzIENhcHR1cmVSZXN1bHQoR2VuZXJpY1tBbnlTdHJdKToKKyAg
ICAiIiJUaGUgcmVzdWx0IG9mIDptZXRob2Q6YENhcHR1cmVGaXh0dXJlLnJlYWRvdXRlcnJgLiIi
IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dD1UcnVlLCBlcnI9VHJ1ZSwgaW5fPVRydWUs
IENhcHR1cmU9Tm9uZSk6Ci0gICAgICAgIGlmIGluXzoKLSAgICAgICAgICAgIHNlbGYuaW5fID0g
Q2FwdHVyZSgwKQotICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dCA9IENhcHR1
cmUoMSkKLSAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIgPSBDYXB0dXJlKDIp
CisgICAgIyBDYW4ndCB1c2Ugc2xvdHMgaW4gUHl0aG9uPDMuNS4zIGR1ZSB0byBodHRwczovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTMxMjcyCisgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywg
NSwgMyk6CisgICAgICAgIF9fc2xvdHNfXyA9ICgib3V0IiwgImVyciIpCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgb3V0OiBBbnlTdHIsIGVycjogQW55U3RyKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLm91dCA9IG91dCAgIyB0eXBlOiBBbnlTdHIKKyAgICAgICAgc2VsZi5lcnIgPSBlcnIgICMg
dHlwZTogQW55U3RyCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJl
dHVybiAyCisKKyAgICBkZWYgX19pdGVyX18oc2VsZikgLT4gSXRlcmF0b3JbQW55U3RyXToKKyAg
ICAgICAgcmV0dXJuIGl0ZXIoKHNlbGYub3V0LCBzZWxmLmVycikpCisKKyAgICBkZWYgX19nZXRp
dGVtX18oc2VsZiwgaXRlbTogaW50KSAtPiBBbnlTdHI6CisgICAgICAgIHJldHVybiB0dXBsZShz
ZWxmKVtpdGVtXQorCisgICAgZGVmIF9yZXBsYWNlKAorICAgICAgICBzZWxmLCAqLCBvdXQ6IE9w
dGlvbmFsW0FueVN0cl0gPSBOb25lLCBlcnI6IE9wdGlvbmFsW0FueVN0cl0gPSBOb25lCisgICAg
KSAtPiAiQ2FwdHVyZVJlc3VsdFtBbnlTdHJdIjoKKyAgICAgICAgcmV0dXJuIENhcHR1cmVSZXN1
bHQoCisgICAgICAgICAgICBvdXQ9c2VsZi5vdXQgaWYgb3V0IGlzIE5vbmUgZWxzZSBvdXQsIGVy
cj1zZWxmLmVyciBpZiBlcnIgaXMgTm9uZSBlbHNlIGVycgorICAgICAgICApCisKKyAgICBkZWYg
Y291bnQoc2VsZiwgdmFsdWU6IEFueVN0cikgLT4gaW50OgorICAgICAgICByZXR1cm4gdHVwbGUo
c2VsZikuY291bnQodmFsdWUpCisKKyAgICBkZWYgaW5kZXgoc2VsZiwgdmFsdWUpIC0+IGludDoK
KyAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYpLmluZGV4KHZhbHVlKQorCisgICAgZGVmIF9fZXFf
XyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShvdGhlciwgKENhcHR1cmVSZXN1bHQsIHR1cGxlKSk6CisgICAgICAgICAgICByZXR1cm4gTm90
SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYpID09IHR1cGxlKG90aGVyKQog
Ci0gICAgZGVmIHN0YXJ0X2NhcHR1cmluZyhzZWxmKToKKyAgICBkZWYgX19oYXNoX18oc2VsZikg
LT4gaW50OgorICAgICAgICByZXR1cm4gaGFzaCh0dXBsZShzZWxmKSkKKworICAgIGRlZiBfX2x0
X18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2Uob3RoZXIsIChDYXB0dXJlUmVzdWx0LCB0dXBsZSkpOgorICAgICAgICAgICAgcmV0dXJuIE5v
dEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiB0dXBsZShzZWxmKSA8IHR1cGxlKG90aGVyKQor
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJDYXB0dXJl
UmVzdWx0KG91dD17IXJ9LCBlcnI9eyFyfSkiLmZvcm1hdChzZWxmLm91dCwgc2VsZi5lcnIpCisK
KworY2xhc3MgTXVsdGlDYXB0dXJlKEdlbmVyaWNbQW55U3RyXSk6CisgICAgX3N0YXRlID0gTm9u
ZQorICAgIF9pbl9zdXNwZW5kZWQgPSBGYWxzZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlu
Xywgb3V0LCBlcnIpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaW5fID0gaW5fCisgICAgICAgIHNl
bGYub3V0ID0gb3V0CisgICAgICAgIHNlbGYuZXJyID0gZXJyCisKKyAgICBkZWYgX19yZXByX18o
c2VsZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIjxNdWx0aUNhcHR1cmUgb3V0PXshcn0gZXJy
PXshcn0gaW5fPXshcn0gX3N0YXRlPXshcn0gX2luX3N1c3BlbmRlZD17IXJ9PiIuZm9ybWF0KAor
ICAgICAgICAgICAgc2VsZi5vdXQsIHNlbGYuZXJyLCBzZWxmLmluXywgc2VsZi5fc3RhdGUsIHNl
bGYuX2luX3N1c3BlbmRlZCwKKyAgICAgICAgKQorCisgICAgZGVmIHN0YXJ0X2NhcHR1cmluZyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9zdGF0ZSA9ICJzdGFydGVkIgogICAgICAgICBp
ZiBzZWxmLmluXzoKICAgICAgICAgICAgIHNlbGYuaW5fLnN0YXJ0KCkKICAgICAgICAgaWYgc2Vs
Zi5vdXQ6CkBAIC0zOTIsOCArNTc0LDggQEAgY2xhc3MgTXVsdGlDYXB0dXJlKG9iamVjdCk6CiAg
ICAgICAgIGlmIHNlbGYuZXJyOgogICAgICAgICAgICAgc2VsZi5lcnIuc3RhcnQoKQogCi0gICAg
ZGVmIHBvcF9vdXRlcnJfdG9fb3JpZyhzZWxmKToKLSAgICAgICAgIiIiIHBvcCBjdXJyZW50IHNu
YXBzaG90IG91dC9lcnIgY2FwdHVyZSBhbmQgZmx1c2ggdG8gb3JpZyBzdHJlYW1zLiAiIiIKKyAg
ICBkZWYgcG9wX291dGVycl90b19vcmlnKHNlbGYpIC0+IFR1cGxlW0FueVN0ciwgQW55U3RyXToK
KyAgICAgICAgIiIiUG9wIGN1cnJlbnQgc25hcHNob3Qgb3V0L2VyciBjYXB0dXJlIGFuZCBmbHVz
aCB0byBvcmlnIHN0cmVhbXMuIiIiCiAgICAgICAgIG91dCwgZXJyID0gc2VsZi5yZWFkb3V0ZXJy
KCkKICAgICAgICAgaWYgb3V0OgogICAgICAgICAgICAgc2VsZi5vdXQud3JpdGVvcmcob3V0KQpA
QCAtNDAxLDcgKzU4Myw4IEBAIGNsYXNzIE11bHRpQ2FwdHVyZShvYmplY3QpOgogICAgICAgICAg
ICAgc2VsZi5lcnIud3JpdGVvcmcoZXJyKQogICAgICAgICByZXR1cm4gb3V0LCBlcnIKIAotICAg
IGRlZiBzdXNwZW5kX2NhcHR1cmluZyhzZWxmLCBpbl89RmFsc2UpOgorICAgIGRlZiBzdXNwZW5k
X2NhcHR1cmluZyhzZWxmLCBpbl86IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5fc3RhdGUgPSAic3VzcGVuZGVkIgogICAgICAgICBpZiBzZWxmLm91dDoKICAgICAgICAgICAg
IHNlbGYub3V0LnN1c3BlbmQoKQogICAgICAgICBpZiBzZWxmLmVycjoKQEAgLTQxMCwyMCArNTkz
LDIxIEBAIGNsYXNzIE11bHRpQ2FwdHVyZShvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5pbl8u
c3VzcGVuZCgpCiAgICAgICAgICAgICBzZWxmLl9pbl9zdXNwZW5kZWQgPSBUcnVlCiAKLSAgICBk
ZWYgcmVzdW1lX2NhcHR1cmluZyhzZWxmKToKKyAgICBkZWYgcmVzdW1lX2NhcHR1cmluZyhzZWxm
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9zdGF0ZSA9ICJzdGFydGVkIgogICAgICAgICBpZiBz
ZWxmLm91dDoKICAgICAgICAgICAgIHNlbGYub3V0LnJlc3VtZSgpCiAgICAgICAgIGlmIHNlbGYu
ZXJyOgogICAgICAgICAgICAgc2VsZi5lcnIucmVzdW1lKCkKLSAgICAgICAgaWYgaGFzYXR0cihz
ZWxmLCAiX2luX3N1c3BlbmRlZCIpOgorICAgICAgICBpZiBzZWxmLl9pbl9zdXNwZW5kZWQ6CiAg
ICAgICAgICAgICBzZWxmLmluXy5yZXN1bWUoKQotICAgICAgICAgICAgZGVsIHNlbGYuX2luX3N1
c3BlbmRlZAorICAgICAgICAgICAgc2VsZi5faW5fc3VzcGVuZGVkID0gRmFsc2UKIAotICAgIGRl
ZiBzdG9wX2NhcHR1cmluZyhzZWxmKToKLSAgICAgICAgIiIiIHN0b3AgY2FwdHVyaW5nIGFuZCBy
ZXNldCBjYXB0dXJpbmcgc3RyZWFtcyAiIiIKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX3Jl
c2V0Iik6CisgICAgZGVmIHN0b3BfY2FwdHVyaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IlN0b3AgY2FwdHVyaW5nIGFuZCByZXNldCBjYXB0dXJpbmcgc3RyZWFtcy4iIiIKKyAgICAgICAg
aWYgc2VsZi5fc3RhdGUgPT0gInN0b3BwZWQiOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigid2FzIGFscmVhZHkgc3RvcHBlZCIpCi0gICAgICAgIHNlbGYuX3Jlc2V0ID0gVHJ1ZQorICAg
ICAgICBzZWxmLl9zdGF0ZSA9ICJzdG9wcGVkIgogICAgICAgICBpZiBzZWxmLm91dDoKICAgICAg
ICAgICAgIHNlbGYub3V0LmRvbmUoKQogICAgICAgICBpZiBzZWxmLmVycjoKQEAgLTQzMSwyOTQg
KzYxNSwzNTYgQEAgY2xhc3MgTXVsdGlDYXB0dXJlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYu
aW5fOgogICAgICAgICAgICAgc2VsZi5pbl8uZG9uZSgpCiAKLSAgICBkZWYgcmVhZG91dGVycihz
ZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBzbmFwc2hvdCB1bmljb2RlIHZhbHVlIG9mIHN0ZG91
dC9zdGRlcnIgY2FwdHVyaW5ncy4gIiIiCi0gICAgICAgIHJldHVybiBDYXB0dXJlUmVzdWx0KAot
ICAgICAgICAgICAgc2VsZi5vdXQuc25hcCgpIGlmIHNlbGYub3V0IGlzIG5vdCBOb25lIGVsc2Ug
IiIsCi0gICAgICAgICAgICBzZWxmLmVyci5zbmFwKCkgaWYgc2VsZi5lcnIgaXMgbm90IE5vbmUg
ZWxzZSAiIiwKLSAgICAgICAgKQorICAgIGRlZiBpc19zdGFydGVkKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgICIiIldoZXRoZXIgYWN0aXZlbHkgY2FwdHVyaW5nIC0tIG5vdCBzdXNwZW5kZWQgb3Ig
c3RvcHBlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlID09ICJzdGFydGVkIgogCisg
ICAgZGVmIHJlYWRvdXRlcnIoc2VsZikgLT4gQ2FwdHVyZVJlc3VsdFtBbnlTdHJdOgorICAgICAg
ICBpZiBzZWxmLm91dDoKKyAgICAgICAgICAgIG91dCA9IHNlbGYub3V0LnNuYXAoKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgb3V0ID0gIiIKKyAgICAgICAgaWYgc2VsZi5lcnI6CisgICAg
ICAgICAgICBlcnIgPSBzZWxmLmVyci5zbmFwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGVyciA9ICIiCisgICAgICAgIHJldHVybiBDYXB0dXJlUmVzdWx0KG91dCwgZXJyKQorCisKK2Rl
ZiBfZ2V0X211bHRpY2FwdHVyZShtZXRob2Q6ICJfQ2FwdHVyZU1ldGhvZCIpIC0+IE11bHRpQ2Fw
dHVyZVtzdHJdOgorICAgIGlmIG1ldGhvZCA9PSAiZmQiOgorICAgICAgICByZXR1cm4gTXVsdGlD
YXB0dXJlKGluXz1GRENhcHR1cmUoMCksIG91dD1GRENhcHR1cmUoMSksIGVycj1GRENhcHR1cmUo
MikpCisgICAgZWxpZiBtZXRob2QgPT0gInN5cyI6CisgICAgICAgIHJldHVybiBNdWx0aUNhcHR1
cmUoaW5fPVN5c0NhcHR1cmUoMCksIG91dD1TeXNDYXB0dXJlKDEpLCBlcnI9U3lzQ2FwdHVyZSgy
KSkKKyAgICBlbGlmIG1ldGhvZCA9PSAibm8iOgorICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJl
KGluXz1Ob25lLCBvdXQ9Tm9uZSwgZXJyPU5vbmUpCisgICAgZWxpZiBtZXRob2QgPT0gInRlZS1z
eXMiOgorICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJlKAorICAgICAgICAgICAgaW5fPU5vbmUs
IG91dD1TeXNDYXB0dXJlKDEsIHRlZT1UcnVlKSwgZXJyPVN5c0NhcHR1cmUoMiwgdGVlPVRydWUp
CisgICAgICAgICkKKyAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGNhcHR1cmluZyBtZXRo
b2Q6IHshcn0iLmZvcm1hdChtZXRob2QpKQogCi1jbGFzcyBOb0NhcHR1cmUob2JqZWN0KToKLSAg
ICBfX2luaXRfXyA9IHN0YXJ0ID0gZG9uZSA9IHN1c3BlbmQgPSByZXN1bWUgPSBsYW1iZGEgKmFy
Z3M6IE5vbmUKIAorIyBDYXB0dXJlTWFuYWdlciBhbmQgQ2FwdHVyZUZpeHR1cmUKIAotY2xhc3Mg
RkRDYXB0dXJlQmluYXJ5KG9iamVjdCk6Ci0gICAgIiIiQ2FwdHVyZSBJTyB0by9mcm9tIGEgZ2l2
ZW4gb3MtbGV2ZWwgZmlsZWRlc2NyaXB0b3IuCiAKLSAgICBzbmFwKCkgcHJvZHVjZXMgYGJ5dGVz
YAotICAgICIiIgorY2xhc3MgQ2FwdHVyZU1hbmFnZXI6CisgICAgIiIiVGhlIGNhcHR1cmUgcGx1
Z2luLgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldGZkLCB0bXBmaWxlPU5vbmUpOgot
ICAgICAgICBzZWxmLnRhcmdldGZkID0gdGFyZ2V0ZmQKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgc2VsZi50YXJnZXRmZF9zYXZlID0gb3MuZHVwKHNlbGYudGFyZ2V0ZmQpCi0gICAgICAgIGV4
Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5zdGFydCA9IGxhbWJkYTogTm9uZQotICAg
ICAgICAgICAgc2VsZi5kb25lID0gbGFtYmRhOiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBpZiB0YXJnZXRmZCA9PSAwOgotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG1wZmls
ZSwgImNhbm5vdCBzZXQgdG1wZmlsZSB3aXRoIHN0ZGluIgotICAgICAgICAgICAgICAgIHRtcGZp
bGUgPSBvcGVuKG9zLmRldm51bGwsICJyIikKLSAgICAgICAgICAgICAgICBzZWxmLnN5c2NhcHR1
cmUgPSBTeXNDYXB0dXJlKHRhcmdldGZkKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBpZiB0bXBmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBUZW1wb3Jh
cnlGaWxlKCkKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBmOgotICAgICAgICAgICAgICAgICAg
ICAgICAgdG1wZmlsZSA9IHNhZmVfdGV4dF9kdXBmaWxlKGYsIG1vZGU9IndiKyIpCi0gICAgICAg
ICAgICAgICAgaWYgdGFyZ2V0ZmQgaW4gcGF0Y2hzeXNkaWN0OgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLnN5c2NhcHR1cmUgPSBTeXNDYXB0dXJlKHRhcmdldGZkLCB0bXBmaWxlKQotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc3lzY2FwdHVyZSA9IE5v
Q2FwdHVyZSgpCi0gICAgICAgICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlCi0gICAgICAgICAg
ICBzZWxmLnRtcGZpbGVfZmQgPSB0bXBmaWxlLmZpbGVubygpCi0KLSAgICBkZWYgX19yZXByX18o
c2VsZik6Ci0gICAgICAgIHJldHVybiAiPEZEQ2FwdHVyZSAlcyBvbGRmZD0lcz4iICUgKHNlbGYu
dGFyZ2V0ZmQsIHNlbGYudGFyZ2V0ZmRfc2F2ZSkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgIiIiIFN0YXJ0IGNhcHR1cmluZyBvbiB0YXJnZXRmZCB1c2luZyBtZW1vcml6ZWQgdG1w
ZmlsZS4gIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmZzdGF0KHNlbGYudGFyZ2V0
ZmRfc2F2ZSkKLSAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6Ci0gICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzYXZlZCBmaWxlZGVzY3JpcHRvciBub3QgdmFsaWQg
YW55bW9yZSIpCi0gICAgICAgIG9zLmR1cDIoc2VsZi50bXBmaWxlX2ZkLCBzZWxmLnRhcmdldGZk
KQotICAgICAgICBzZWxmLnN5c2NhcHR1cmUuc3RhcnQoKQorICAgIE1hbmFnZXMgdGhhdCB0aGUg
YXBwcm9wcmlhdGUgY2FwdHVyZSBtZXRob2QgaXMgZW5hYmxlZC9kaXNhYmxlZCBkdXJpbmcKKyAg
ICBjb2xsZWN0aW9uIGFuZCBlYWNoIHRlc3QgcGhhc2UgKHNldHVwLCBjYWxsLCB0ZWFyZG93biku
IEFmdGVyIGVhY2ggb2YKKyAgICB0aG9zZSBwb2ludHMsIHRoZSBjYXB0dXJlZCBvdXRwdXQgaXMg
b2J0YWluZWQgYW5kIGF0dGFjaGVkIHRvIHRoZQorICAgIGNvbGxlY3Rpb24vcnVudGVzdCByZXBv
cnQuCiAKLSAgICBkZWYgc25hcChzZWxmKToKLSAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkK
LSAgICAgICAgcmVzID0gc2VsZi50bXBmaWxlLnJlYWQoKQotICAgICAgICBzZWxmLnRtcGZpbGUu
c2VlaygwKQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQotICAgICAgICByZXR1cm4g
cmVzCisgICAgVGhlcmUgYXJlIHR3byBsZXZlbHMgb2YgY2FwdHVyZToKIAotICAgIGRlZiBkb25l
KHNlbGYpOgotICAgICAgICAiIiIgc3RvcCBjYXB0dXJpbmcsIHJlc3RvcmUgc3RyZWFtcywgcmV0
dXJuIG9yaWdpbmFsIGNhcHR1cmUgZmlsZSwKLSAgICAgICAgc2Vla2VkIHRvIHBvc2l0aW9uIHpl
cm8uICIiIgotICAgICAgICB0YXJnZXRmZF9zYXZlID0gc2VsZi5fX2RpY3RfXy5wb3AoInRhcmdl
dGZkX3NhdmUiKQotICAgICAgICBvcy5kdXAyKHRhcmdldGZkX3NhdmUsIHNlbGYudGFyZ2V0ZmQp
Ci0gICAgICAgIG9zLmNsb3NlKHRhcmdldGZkX3NhdmUpCi0gICAgICAgIHNlbGYuc3lzY2FwdHVy
ZS5kb25lKCkKLSAgICAgICAgX2F0dGVtcHRfdG9fY2xvc2VfY2FwdHVyZV9maWxlKHNlbGYudG1w
ZmlsZSkKKyAgICAqIGdsb2JhbDogZW5hYmxlZCBieSBkZWZhdWx0IGFuZCBjYW4gYmUgc3VwcHJl
c3NlZCBieSB0aGUgYGAtc2BgCisgICAgICBvcHRpb24uIFRoaXMgaXMgYWx3YXlzIGVuYWJsZWQv
ZGlzYWJsZWQgZHVyaW5nIGNvbGxlY3Rpb24gYW5kIGVhY2ggdGVzdAorICAgICAgcGhhc2UuCiAK
LSAgICBkZWYgc3VzcGVuZChzZWxmKToKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLnN1c3BlbmQo
KQotICAgICAgICBvcy5kdXAyKHNlbGYudGFyZ2V0ZmRfc2F2ZSwgc2VsZi50YXJnZXRmZCkKKyAg
ICAqIGZpeHR1cmU6IHdoZW4gYSB0ZXN0IGZ1bmN0aW9uIG9yIG9uZSBvZiBpdHMgZml4dHVyZSBk
ZXBlbmQgb24gdGhlCisgICAgICBgYGNhcHN5c2BgIG9yIGBgY2FwZmRgYCBmaXh0dXJlcy4gSW4g
dGhpcyBjYXNlIHNwZWNpYWwgaGFuZGxpbmcgaXMKKyAgICAgIG5lZWRlZCB0byBlbnN1cmUgdGhl
IGZpeHR1cmVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBnbG9iYWwgY2FwdHVyZS4KKyAgICAi
IiIKIAotICAgIGRlZiByZXN1bWUoc2VsZik6Ci0gICAgICAgIHNlbGYuc3lzY2FwdHVyZS5yZXN1
bWUoKQotICAgICAgICBvcy5kdXAyKHNlbGYudG1wZmlsZV9mZCwgc2VsZi50YXJnZXRmZCkKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kOiAiX0NhcHR1cmVNZXRob2QiKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl9tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1
cmluZyA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbTXVsdGlDYXB0dXJlW3N0cl1dCisgICAgICAg
IHNlbGYuX2NhcHR1cmVfZml4dHVyZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbQ2FwdHVyZUZp
eHR1cmVbQW55XV0KIAotICAgIGRlZiB3cml0ZW9yZyhzZWxmLCBkYXRhKToKLSAgICAgICAgIiIi
IHdyaXRlIHRvIG9yaWdpbmFsIGZpbGUgZGVzY3JpcHRvci4gIiIiCi0gICAgICAgIGlmIGlzaW5z
dGFuY2UoZGF0YSwgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgICAgICBkYXRhID0gZGF0YS5lbmNv
ZGUoInV0ZjgiKSAgIyBYWFggdXNlIGVuY29kaW5nIG9mIG9yaWdpbmFsIHN0cmVhbQotICAgICAg
ICBvcy53cml0ZShzZWxmLnRhcmdldGZkX3NhdmUsIGRhdGEpCisgICAgZGVmIF9fcmVwcl9fKHNl
bGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8Q2FwdHVyZU1hbmFnZXIgX21ldGhvZD17IXJ9
IF9nbG9iYWxfY2FwdHVyaW5nPXshcn0gX2NhcHR1cmVfZml4dHVyZT17IXJ9PiIuZm9ybWF0KAor
ICAgICAgICAgICAgc2VsZi5fbWV0aG9kLCBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLCBzZWxmLl9j
YXB0dXJlX2ZpeHR1cmUKKyAgICAgICAgKQogCisgICAgZGVmIGlzX2NhcHR1cmluZyhzZWxmKSAt
PiBVbmlvbltzdHIsIGJvb2xdOgorICAgICAgICBpZiBzZWxmLmlzX2dsb2JhbGx5X2NhcHR1cmlu
ZygpOgorICAgICAgICAgICAgcmV0dXJuICJnbG9iYWwiCisgICAgICAgIGlmIHNlbGYuX2NhcHR1
cmVfZml4dHVyZToKKyAgICAgICAgICAgIHJldHVybiAiZml4dHVyZSAlcyIgJSBzZWxmLl9jYXB0
dXJlX2ZpeHR1cmUucmVxdWVzdC5maXh0dXJlbmFtZQorICAgICAgICByZXR1cm4gRmFsc2UKIAot
Y2xhc3MgRkRDYXB0dXJlKEZEQ2FwdHVyZUJpbmFyeSk6Ci0gICAgIiIiQ2FwdHVyZSBJTyB0by9m
cm9tIGEgZ2l2ZW4gb3MtbGV2ZWwgZmlsZWRlc2NyaXB0b3IuCisgICAgIyBHbG9iYWwgY2FwdHVy
aW5nIGNvbnRyb2wKIAotICAgIHNuYXAoKSBwcm9kdWNlcyB0ZXh0Ci0gICAgIiIiCisgICAgZGVm
IGlzX2dsb2JhbGx5X2NhcHR1cmluZyhzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fbWV0aG9kICE9ICJubyIKIAotICAgIGRlZiBzbmFwKHNlbGYpOgotICAgICAgICByZXMgPSBG
RENhcHR1cmVCaW5hcnkuc25hcChzZWxmKQotICAgICAgICBlbmMgPSBnZXRhdHRyKHNlbGYudG1w
ZmlsZSwgImVuY29kaW5nIiwgTm9uZSkKLSAgICAgICAgaWYgZW5jIGFuZCBpc2luc3RhbmNlKHJl
cywgYnl0ZXMpOgotICAgICAgICAgICAgcmVzID0gc2l4LnRleHRfdHlwZShyZXMsIGVuYywgInJl
cGxhY2UiKQotICAgICAgICByZXR1cm4gcmVzCisgICAgZGVmIHN0YXJ0X2dsb2JhbF9jYXB0dXJp
bmcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcg
aXMgTm9uZQorICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gX2dldF9tdWx0aWNhcHR1
cmUoc2VsZi5fbWV0aG9kKQorICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnN0YXJ0X2Nh
cHR1cmluZygpCiAKKyAgICBkZWYgc3RvcF9nbG9iYWxfY2FwdHVyaW5nKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIGlmIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnBvcF9vdXRlcnJfdG9fb3JpZygpCisgICAgICAg
ICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnN0b3BfY2FwdHVyaW5nKCkKKyAgICAgICAgICAg
IHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcgPSBOb25lCiAKLWNsYXNzIFN5c0NhcHR1cmUob2JqZWN0
KToKKyAgICBkZWYgcmVzdW1lX2dsb2JhbF9jYXB0dXJlKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
ICMgRHVyaW5nIHRlYXJkb3duIG9mIHRoZSBweXRob24gcHJvY2VzcywgYW5kIG9uIHJhcmUgb2Nj
YXNpb25zLCBjYXB0dXJlCisgICAgICAgICMgYXR0cmlidXRlcyBjYW4gYmUgYE5vbmVgIHdoaWxl
IHRyeWluZyB0byByZXN1bWUgZ2xvYmFsIGNhcHR1cmUuCisgICAgICAgIGlmIHNlbGYuX2dsb2Jh
bF9jYXB0dXJpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVy
aW5nLnJlc3VtZV9jYXB0dXJpbmcoKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkLCB0bXBm
aWxlPU5vbmUpOgotICAgICAgICBuYW1lID0gcGF0Y2hzeXNkaWN0W2ZkXQotICAgICAgICBzZWxm
Ll9vbGQgPSBnZXRhdHRyKHN5cywgbmFtZSkKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAg
ICAgICBpZiB0bXBmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBuYW1lID09ICJzdGRpbiI6
Ci0gICAgICAgICAgICAgICAgdG1wZmlsZSA9IERvbnRSZWFkRnJvbUlucHV0KCkKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdG1wZmlsZSA9IENhcHR1cmVJTygpCi0gICAgICAg
IHNlbGYudG1wZmlsZSA9IHRtcGZpbGUKKyAgICBkZWYgc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShz
ZWxmLCBpbl86IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fZ2xvYmFs
X2NhcHR1cmluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJp
bmcuc3VzcGVuZF9jYXB0dXJpbmcoaW5fPWluXykKIAotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgc2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2VsZi50bXBmaWxlKQorICAgIGRlZiBzdXNw
ZW5kKHNlbGYsIGluXzogYm9vbCA9IEZhbHNlKSAtPiBOb25lOgorICAgICAgICAjIE5lZWQgdG8g
dW5kbyBsb2NhbCBjYXBzeXMtZXQtYWwgaWYgaXQgZXhpc3RzIGJlZm9yZSBkaXNhYmxpbmcgZ2xv
YmFsIGNhcHR1cmUuCisgICAgICAgIHNlbGYuc3VzcGVuZF9maXh0dXJlKCkKKyAgICAgICAgc2Vs
Zi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGluXykKIAotICAgIGRlZiBzbmFwKHNlbGYpOgotICAg
ICAgICByZXMgPSBzZWxmLnRtcGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICBzZWxmLnRtcGZpbGUu
c2VlaygwKQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQotICAgICAgICByZXR1cm4g
cmVzCisgICAgZGVmIHJlc3VtZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLnJlc3VtZV9n
bG9iYWxfY2FwdHVyZSgpCisgICAgICAgIHNlbGYucmVzdW1lX2ZpeHR1cmUoKQogCi0gICAgZGVm
IGRvbmUoc2VsZik6Ci0gICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLm5hbWUsIHNlbGYuX29sZCkK
LSAgICAgICAgZGVsIHNlbGYuX29sZAotICAgICAgICBfYXR0ZW1wdF90b19jbG9zZV9jYXB0dXJl
X2ZpbGUoc2VsZi50bXBmaWxlKQorICAgIGRlZiByZWFkX2dsb2JhbF9jYXB0dXJlKHNlbGYpIC0+
IENhcHR1cmVSZXN1bHRbc3RyXToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2dsb2JhbF9jYXB0dXJp
bmcgaXMgbm90IE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcucmVh
ZG91dGVycigpCiAKLSAgICBkZWYgc3VzcGVuZChzZWxmKToKLSAgICAgICAgc2V0YXR0cihzeXMs
IHNlbGYubmFtZSwgc2VsZi5fb2xkKQorICAgICMgRml4dHVyZSBDb250cm9sCiAKLSAgICBkZWYg
cmVzdW1lKHNlbGYpOgotICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5uYW1lLCBzZWxmLnRtcGZp
bGUpCisgICAgZGVmIHNldF9maXh0dXJlKHNlbGYsIGNhcHR1cmVfZml4dHVyZTogIkNhcHR1cmVG
aXh0dXJlW0FueV0iKSAtPiBOb25lOgorICAgICAgICBpZiBzZWxmLl9jYXB0dXJlX2ZpeHR1cmU6
CisgICAgICAgICAgICBjdXJyZW50X2ZpeHR1cmUgPSBzZWxmLl9jYXB0dXJlX2ZpeHR1cmUucmVx
dWVzdC5maXh0dXJlbmFtZQorICAgICAgICAgICAgcmVxdWVzdGVkX2ZpeHR1cmUgPSBjYXB0dXJl
X2ZpeHR1cmUucmVxdWVzdC5maXh0dXJlbmFtZQorICAgICAgICAgICAgY2FwdHVyZV9maXh0dXJl
LnJlcXVlc3QucmFpc2VlcnJvcigKKyAgICAgICAgICAgICAgICAiY2Fubm90IHVzZSB7fSBhbmQg
e30gYXQgdGhlIHNhbWUgdGltZSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
ZWRfZml4dHVyZSwgY3VycmVudF9maXh0dXJlCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKQorICAgICAgICBzZWxmLl9jYXB0dXJlX2ZpeHR1cmUgPSBjYXB0dXJlX2ZpeHR1cmUKIAot
ICAgIGRlZiB3cml0ZW9yZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5fb2xkLndyaXRlKGRh
dGEpCi0gICAgICAgIHNlbGYuX29sZC5mbHVzaCgpCisgICAgZGVmIHVuc2V0X2ZpeHR1cmUoc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fY2FwdHVyZV9maXh0dXJlID0gTm9uZQogCisgICAg
ZGVmIGFjdGl2YXRlX2ZpeHR1cmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiSWYgdGhlIGN1
cnJlbnQgaXRlbSBpcyB1c2luZyBgYGNhcHN5c2BgIG9yIGBgY2FwZmRgYCwgYWN0aXZhdGUKKyAg
ICAgICAgdGhlbSBzbyB0aGV5IHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBnbG9iYWwgY2FwdHVy
ZS4iIiIKKyAgICAgICAgaWYgc2VsZi5fY2FwdHVyZV9maXh0dXJlOgorICAgICAgICAgICAgc2Vs
Zi5fY2FwdHVyZV9maXh0dXJlLl9zdGFydCgpCiAKLWNsYXNzIFN5c0NhcHR1cmVCaW5hcnkoU3lz
Q2FwdHVyZSk6CisgICAgZGVmIGRlYWN0aXZhdGVfZml4dHVyZShzZWxmKSAtPiBOb25lOgorICAg
ICAgICAiIiJEZWFjdGl2YXRlIHRoZSBgYGNhcHN5c2BgIG9yIGBgY2FwZmRgYCBmaXh0dXJlIG9m
IHRoaXMgaXRlbSwgaWYgYW55LiIiIgorICAgICAgICBpZiBzZWxmLl9jYXB0dXJlX2ZpeHR1cmU6
CisgICAgICAgICAgICBzZWxmLl9jYXB0dXJlX2ZpeHR1cmUuY2xvc2UoKQogCi0gICAgZGVmIHNu
YXAoc2VsZik6Ci0gICAgICAgIHJlcyA9IHNlbGYudG1wZmlsZS5idWZmZXIuZ2V0dmFsdWUoKQot
ICAgICAgICBzZWxmLnRtcGZpbGUuc2VlaygwKQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNh
dGUoKQotICAgICAgICByZXR1cm4gcmVzCisgICAgZGVmIHN1c3BlbmRfZml4dHVyZShzZWxmKSAt
PiBOb25lOgorICAgICAgICBpZiBzZWxmLl9jYXB0dXJlX2ZpeHR1cmU6CisgICAgICAgICAgICBz
ZWxmLl9jYXB0dXJlX2ZpeHR1cmUuX3N1c3BlbmQoKQogCisgICAgZGVmIHJlc3VtZV9maXh0dXJl
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYuX2NhcHR1cmVfZml4dHVyZToKKyAgICAg
ICAgICAgIHNlbGYuX2NhcHR1cmVfZml4dHVyZS5fcmVzdW1lKCkKIAotY2xhc3MgRG9udFJlYWRG
cm9tSW5wdXQoc2l4Lkl0ZXJhdG9yKToKLSAgICAiIiJUZW1wb3Jhcnkgc3R1YiBjbGFzcy4gIElk
ZWFsbHkgd2hlbiBzdGRpbiBpcyBhY2Nlc3NlZCwgdGhlCi0gICAgY2FwdHVyaW5nIHNob3VsZCBi
ZSB0dXJuZWQgb2ZmLCB3aXRoIHBvc3NpYmx5IGFsbCBkYXRhIGNhcHR1cmVkCi0gICAgc28gZmFy
IHNlbnQgdG8gdGhlIHNjcmVlbi4gIFRoaXMgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSwgdGhvdWdo
LAotICAgIGJlY2F1c2UgaW4gYXV0b21hdGVkIHRlc3QgcnVucyBpdCBpcyBiZXR0ZXIgdG8gY3Jh
c2ggdGhhbgotICAgIGhhbmcgaW5kZWZpbml0ZWx5LgotICAgICIiIgorICAgICMgSGVscGVyIGNv
bnRleHQgbWFuYWdlcnMKIAotICAgIGVuY29kaW5nID0gTm9uZQorICAgIEBjb250ZXh0bGliLmNv
bnRleHRtYW5hZ2VyCisgICAgZGVmIGdsb2JhbF9hbmRfZml4dHVyZV9kaXNhYmxlZChzZWxmKSAt
PiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgICIiIkNvbnRleHQgbWFuYWdl
ciB0byB0ZW1wb3JhcmlseSBkaXNhYmxlIGdsb2JhbCBhbmQgY3VycmVudCBmaXh0dXJlIGNhcHR1
cmluZy4iIiIKKyAgICAgICAgZG9fZml4dHVyZSA9IHNlbGYuX2NhcHR1cmVfZml4dHVyZSBhbmQg
c2VsZi5fY2FwdHVyZV9maXh0dXJlLl9pc19zdGFydGVkKCkKKyAgICAgICAgaWYgZG9fZml4dHVy
ZToKKyAgICAgICAgICAgIHNlbGYuc3VzcGVuZF9maXh0dXJlKCkKKyAgICAgICAgZG9fZ2xvYmFs
ID0gc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyBhbmQgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZy5pc19z
dGFydGVkKCkKKyAgICAgICAgaWYgZG9fZ2xvYmFsOgorICAgICAgICAgICAgc2VsZi5zdXNwZW5k
X2dsb2JhbF9jYXB0dXJlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAg
ICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGRvX2dsb2JhbDoKKyAgICAgICAgICAgICAgICBz
ZWxmLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgpCisgICAgICAgICAgICBpZiBkb19maXh0dXJlOgor
ICAgICAgICAgICAgICAgIHNlbGYucmVzdW1lX2ZpeHR1cmUoKQogCi0gICAgZGVmIHJlYWQoc2Vs
ZiwgKmFyZ3MpOgotICAgICAgICByYWlzZSBJT0Vycm9yKCJyZWFkaW5nIGZyb20gc3RkaW4gd2hp
bGUgb3V0cHV0IGlzIGNhcHR1cmVkIikKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgor
ICAgIGRlZiBpdGVtX2NhcHR1cmUoc2VsZiwgd2hlbjogc3RyLCBpdGVtOiBJdGVtKSAtPiBHZW5l
cmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgIHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0
dXJlKCkKKyAgICAgICAgc2VsZi5hY3RpdmF0ZV9maXh0dXJlKCkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgeWllbGQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuZGVhY3Rp
dmF0ZV9maXh0dXJlKCkKKyAgICAgICAgICAgIHNlbGYuc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShp
bl89RmFsc2UpCiAKLSAgICByZWFkbGluZSA9IHJlYWQKLSAgICByZWFkbGluZXMgPSByZWFkCi0g
ICAgX19uZXh0X18gPSByZWFkCisgICAgICAgIG91dCwgZXJyID0gc2VsZi5yZWFkX2dsb2JhbF9j
YXB0dXJlKCkKKyAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZG91dCIs
IG91dCkKKyAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZGVyciIsIGVy
cikKIAotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAj
IEhvb2tzCiAKLSAgICBkZWYgZmlsZW5vKHNlbGYpOgotICAgICAgICByYWlzZSBVbnN1cHBvcnRl
ZE9wZXJhdGlvbigicmVkaXJlY3RlZCBzdGRpbiBpcyBwc2V1ZG9maWxlLCAiICJoYXMgbm8gZmls
ZW5vKCkiKQorICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKKyAgICBkZWYg
cHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoc2VsZiwgY29sbGVjdG9yOiBDb2xsZWN0b3IpOgor
ICAgICAgICBpZiBpc2luc3RhbmNlKGNvbGxlY3RvciwgcHl0ZXN0LkZpbGUpOgorICAgICAgICAg
ICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICAgICAgb3V0Y29tZSA9IHlp
ZWxkCisgICAgICAgICAgICBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICAg
ICAgb3V0LCBlcnIgPSBzZWxmLnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICAgICAgcmVw
ID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKKyAgICAgICAgICAgIGlmIG91dDoKKyAgICAgICAgICAg
ICAgICByZXAuc2VjdGlvbnMuYXBwZW5kKCgiQ2FwdHVyZWQgc3Rkb3V0Iiwgb3V0KSkKKyAgICAg
ICAgICAgIGlmIGVycjoKKyAgICAgICAgICAgICAgICByZXAuc2VjdGlvbnMuYXBwZW5kKCgiQ2Fw
dHVyZWQgc3RkZXJyIiwgZXJyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHlpZWxkCiAK
LSAgICBkZWYgaXNhdHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBAcHl0ZXN0
Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVw
KHNlbGYsIGl0ZW06IEl0ZW0pIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAg
ICAgd2l0aCBzZWxmLml0ZW1fY2FwdHVyZSgic2V0dXAiLCBpdGVtKToKKyAgICAgICAgICAgIHlp
ZWxkCiAKLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgIHBhc3MKKyAgICBAcHl0ZXN0Lmhv
b2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoc2Vs
ZiwgaXRlbTogSXRlbSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICB3
aXRoIHNlbGYuaXRlbV9jYXB0dXJlKCJjYWxsIiwgaXRlbSk6CisgICAgICAgICAgICB5aWVsZAog
Ci0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGJ1ZmZlcihzZWxmKToKLSAgICAgICAgaWYgc3lzLnZl
cnNpb25faW5mbyA+PSAoMywgMCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoInJlZGlyZWN0ZWQgc3RkaW4g
aGFzIG5vIGF0dHJpYnV0ZSBidWZmZXIiKQorICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBw
ZXI9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oc2VsZiwgaXRlbTogSXRl
bSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICB3aXRoIHNlbGYuaXRl
bV9jYXB0dXJlKCJ0ZWFyZG93biIsIGl0ZW0pOgorICAgICAgICAgICAgeWllbGQKIAorICAgIEBw
eXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X2tleWJvYXJkX2lu
dGVycnVwdChzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLnN0b3BfZ2xvYmFsX2NhcHR1cmlu
ZygpCiAKLWRlZiBfY29sb3JhbWFfd29ya2Fyb3VuZCgpOgotICAgICIiIgotICAgIEVuc3VyZSBj
b2xvcmFtYSBpcyBpbXBvcnRlZCBzbyB0aGF0IGl0IGF0dGFjaGVzIHRvIHRoZSBjb3JyZWN0IHN0
ZGlvCi0gICAgaGFuZGxlcyBvbiBXaW5kb3dzLgorICAgIEBweXRlc3QuaG9va2ltcGwodHJ5Zmly
c3Q9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5zdG9wX2dsb2JhbF9jYXB0dXJpbmcoKQogCi0gICAgY29sb3JhbWEgdXNlcyB0
aGUgdGVybWluYWwgb24gaW1wb3J0IHRpbWUuIFNvIGlmIHNvbWV0aGluZyBkb2VzIHRoZQotICAg
IGZpcnN0IGltcG9ydCBvZiBjb2xvcmFtYSB3aGlsZSBJL08gY2FwdHVyZSBpcyBhY3RpdmUsIGNv
bG9yYW1hIHdpbGwKLSAgICBmYWlsIGluIHZhcmlvdXMgd2F5cy4KLSAgICAiIiIKIAotICAgIGlm
IG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luMzIiKToKLSAgICAgICAgcmV0dXJuCi0g
ICAgdHJ5OgotICAgICAgICBpbXBvcnQgY29sb3JhbWEgICMgbm9xYQotICAgIGV4Y2VwdCBJbXBv
cnRFcnJvcjoKLSAgICAgICAgcGFzcworY2xhc3MgQ2FwdHVyZUZpeHR1cmUoR2VuZXJpY1tBbnlT
dHJdKToKKyAgICAiIiJPYmplY3QgcmV0dXJuZWQgYnkgdGhlIDpweTpmdW5jOmBjYXBzeXNgLCA6
cHk6ZnVuYzpgY2Fwc3lzYmluYXJ5YCwKKyAgICA6cHk6ZnVuYzpgY2FwZmRgIGFuZCA6cHk6ZnVu
YzpgY2FwZmRiaW5hcnlgIGZpeHR1cmVzLiIiIgogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNh
cHR1cmVjbGFzcywgcmVxdWVzdDogU3ViUmVxdWVzdCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5j
YXB0dXJlY2xhc3MgPSBjYXB0dXJlY2xhc3MKKyAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVz
dAorICAgICAgICBzZWxmLl9jYXB0dXJlID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtNdWx0aUNh
cHR1cmVbQW55U3RyXV0KKyAgICAgICAgc2VsZi5fY2FwdHVyZWRfb3V0ID0gc2VsZi5jYXB0dXJl
Y2xhc3MuRU1QVFlfQlVGRkVSCisgICAgICAgIHNlbGYuX2NhcHR1cmVkX2VyciA9IHNlbGYuY2Fw
dHVyZWNsYXNzLkVNUFRZX0JVRkZFUgorCisgICAgZGVmIF9zdGFydChzZWxmKSAtPiBOb25lOgor
ICAgICAgICBpZiBzZWxmLl9jYXB0dXJlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jYXB0
dXJlID0gTXVsdGlDYXB0dXJlKAorICAgICAgICAgICAgICAgIGluXz1Ob25lLCBvdXQ9c2VsZi5j
YXB0dXJlY2xhc3MoMSksIGVycj1zZWxmLmNhcHR1cmVjbGFzcygyKSwKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmUuc3RhcnRfY2FwdHVyaW5nKCkKKworICAgIGRlZiBj
bG9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICBpZiBzZWxmLl9jYXB0dXJlIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLl9jYXB0dXJlLnBvcF9vdXRlcnJfdG9fb3Jp
ZygpCisgICAgICAgICAgICBzZWxmLl9jYXB0dXJlZF9vdXQgKz0gb3V0CisgICAgICAgICAgICBz
ZWxmLl9jYXB0dXJlZF9lcnIgKz0gZXJyCisgICAgICAgICAgICBzZWxmLl9jYXB0dXJlLnN0b3Bf
Y2FwdHVyaW5nKCkKKyAgICAgICAgICAgIHNlbGYuX2NhcHR1cmUgPSBOb25lCisKKyAgICBkZWYg
cmVhZG91dGVycihzZWxmKSAtPiBDYXB0dXJlUmVzdWx0W0FueVN0cl06CisgICAgICAgICIiIlJl
YWQgYW5kIHJldHVybiB0aGUgY2FwdHVyZWQgb3V0cHV0IHNvIGZhciwgcmVzZXR0aW5nIHRoZSBp
bnRlcm5hbAorICAgICAgICBidWZmZXIuCisKKyAgICAgICAgOnJldHVybnM6CisgICAgICAgICAg
ICBUaGUgY2FwdHVyZWQgY29udGVudCBhcyBhIG5hbWVkdHVwbGUgd2l0aCBgYG91dGBgIGFuZCBg
YGVycmBgCisgICAgICAgICAgICBzdHJpbmcgYXR0cmlidXRlcy4KKyAgICAgICAgIiIiCisgICAg
ICAgIGNhcHR1cmVkX291dCwgY2FwdHVyZWRfZXJyID0gc2VsZi5fY2FwdHVyZWRfb3V0LCBzZWxm
Ll9jYXB0dXJlZF9lcnIKKyAgICAgICAgaWYgc2VsZi5fY2FwdHVyZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIG91dCwgZXJyID0gc2VsZi5fY2FwdHVyZS5yZWFkb3V0ZXJyKCkKKyAgICAgICAg
ICAgIGNhcHR1cmVkX291dCArPSBvdXQKKyAgICAgICAgICAgIGNhcHR1cmVkX2VyciArPSBlcnIK
KyAgICAgICAgc2VsZi5fY2FwdHVyZWRfb3V0ID0gc2VsZi5jYXB0dXJlY2xhc3MuRU1QVFlfQlVG
RkVSCisgICAgICAgIHNlbGYuX2NhcHR1cmVkX2VyciA9IHNlbGYuY2FwdHVyZWNsYXNzLkVNUFRZ
X0JVRkZFUgorICAgICAgICByZXR1cm4gQ2FwdHVyZVJlc3VsdChjYXB0dXJlZF9vdXQsIGNhcHR1
cmVkX2VycikKKworICAgIGRlZiBfc3VzcGVuZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJT
dXNwZW5kIHRoaXMgZml4dHVyZSdzIG93biBjYXB0dXJpbmcgdGVtcG9yYXJpbHkuIiIiCisgICAg
ICAgIGlmIHNlbGYuX2NhcHR1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jYXB0
dXJlLnN1c3BlbmRfY2FwdHVyaW5nKCkKKworICAgIGRlZiBfcmVzdW1lKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIlJlc3VtZSB0aGlzIGZpeHR1cmUncyBvd24gY2FwdHVyaW5nIHRlbXBvcmFy
aWx5LiIiIgorICAgICAgICBpZiBzZWxmLl9jYXB0dXJlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgc2VsZi5fY2FwdHVyZS5yZXN1bWVfY2FwdHVyaW5nKCkKIAotZGVmIF9yZWFkbGluZV93b3Jr
YXJvdW5kKCk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIHJlYWRsaW5lIGlzIGltcG9ydGVkIHNvIHRo
YXQgaXQgYXR0YWNoZXMgdG8gdGhlIGNvcnJlY3Qgc3RkaW8KLSAgICBoYW5kbGVzIG9uIFdpbmRv
d3MuCisgICAgZGVmIF9pc19zdGFydGVkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIiIldoZXRo
ZXIgYWN0aXZlbHkgY2FwdHVyaW5nIC0tIG5vdCBkaXNhYmxlZCBvciBjbG9zZWQuIiIiCisgICAg
ICAgIGlmIHNlbGYuX2NhcHR1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fY2FwdHVyZS5pc19zdGFydGVkKCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBQZGIg
dXNlcyByZWFkbGluZSBzdXBwb3J0IHdoZXJlIGF2YWlsYWJsZS0td2hlbiBub3QgcnVubmluZyBm
cm9tIHRoZSBQeXRob24KLSAgICBwcm9tcHQsIHRoZSByZWFkbGluZSBtb2R1bGUgaXMgbm90IGlt
cG9ydGVkIHVudGlsIHJ1bm5pbmcgdGhlIHBkYiBSRVBMLiAgSWYKLSAgICBydW5uaW5nIHB5dGVz
dCB3aXRoIHRoZSAtLXBkYiBvcHRpb24gdGhpcyBtZWFucyB0aGUgcmVhZGxpbmUgbW9kdWxlIGlz
IG5vdAotICAgIGltcG9ydGVkIHVudGlsIGFmdGVyIEkvTyBjYXB0dXJlIGhhcyBiZWVuIHN0YXJ0
ZWQuCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgZGlzYWJsZWQoc2Vs
ZikgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICAiIiJUZW1wb3Jhcmls
eSBkaXNhYmxlIGNhcHR1cmluZyB3aGlsZSBpbnNpZGUgdGhlIGBgd2l0aGBgIGJsb2NrLiIiIgor
ICAgICAgICBjYXBtYW5hZ2VyID0gc2VsZi5yZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdl
dHBsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQorICAgICAgICB3aXRoIGNhcG1hbmFnZXIuZ2xvYmFs
X2FuZF9maXh0dXJlX2Rpc2FibGVkKCk6CisgICAgICAgICAgICB5aWVsZAogCi0gICAgVGhpcyBp
cyBhIHByb2JsZW0gZm9yIHB5cmVhZGxpbmUsIHdoaWNoIGlzIG9mdGVuIHVzZWQgdG8gaW1wbGVt
ZW50IHJlYWRsaW5lCi0gICAgc3VwcG9ydCBvbiBXaW5kb3dzLCBhcyBpdCBkb2VzIG5vdCBhdHRh
Y2ggdG8gdGhlIGNvcnJlY3QgaGFuZGxlcyBmb3Igc3Rkb3V0Ci0gICAgYW5kL29yIHN0ZGluIGlm
IHRoZXkgaGF2ZSBiZWVuIHJlZGlyZWN0ZWQgYnkgdGhlIEZEQ2FwdHVyZSBtZWNoYW5pc20uICBU
aGlzCi0gICAgd29ya2Fyb3VuZCBlbnN1cmVzIHRoYXQgcmVhZGxpbmUgaXMgaW1wb3J0ZWQgYmVm
b3JlIEkvTyBjYXB0dXJlIGlzIHNldHVwIHNvCi0gICAgdGhhdCBpdCBjYW4gYXR0YWNoIHRvIHRo
ZSBhY3R1YWwgc3RkaW4vb3V0IGZvciB0aGUgY29uc29sZS4KIAotICAgIFNlZSBodHRwczovL2dp
dGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvcHVsbC8xMjgxCi0gICAgIiIiCisjIFRoZSBmaXh0
dXJlcy4KIAotICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luMzIiKToKLSAg
ICAgICAgcmV0dXJuCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgcmVhZGxpbmUgICMgbm9xYQot
ICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwogCitAcHl0ZXN0LmZpeHR1cmUK
K2RlZiBjYXBzeXMocmVxdWVzdDogU3ViUmVxdWVzdCkgLT4gR2VuZXJhdG9yW0NhcHR1cmVGaXh0
dXJlW3N0cl0sIE5vbmUsIE5vbmVdOgorICAgICIiIkVuYWJsZSB0ZXh0IGNhcHR1cmluZyBvZiB3
cml0ZXMgdG8gYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgLgogCi1kZWYgX3B5MzZf
d2luZG93c2NvbnNvbGVpb193b3JrYXJvdW5kKHN0cmVhbSk6CisgICAgVGhlIGNhcHR1cmVkIG91
dHB1dCBpcyBtYWRlIGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVhZG91dGVycigpYGAgbWV0aG9k
CisgICAgY2FsbHMsIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIG5hbWVkdHVwbGUuCisg
ICAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgIG9iamVjdHMuCiAgICAgIiIi
Ci0gICAgUHl0aG9uIDMuNiBpbXBsZW1lbnRlZCB1bmljb2RlIGNvbnNvbGUgaGFuZGxpbmcgZm9y
IFdpbmRvd3MuIFRoaXMgd29ya3MKLSAgICBieSByZWFkaW5nL3dyaXRpbmcgdG8gdGhlIHJhdyBj
b25zb2xlIGhhbmRsZSB1c2luZwotICAgIGBge1JlYWQsV3JpdGV9Q29uc29sZVdgYC4KKyAgICBj
YXBtYW4gPSByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigiY2FwdHVyZW1h
bmFnZXIiKQorICAgIGNhcHR1cmVfZml4dHVyZSA9IENhcHR1cmVGaXh0dXJlW3N0cl0oU3lzQ2Fw
dHVyZSwgcmVxdWVzdCkKKyAgICBjYXBtYW4uc2V0X2ZpeHR1cmUoY2FwdHVyZV9maXh0dXJlKQor
ICAgIGNhcHR1cmVfZml4dHVyZS5fc3RhcnQoKQorICAgIHlpZWxkIGNhcHR1cmVfZml4dHVyZQor
ICAgIGNhcHR1cmVfZml4dHVyZS5jbG9zZSgpCisgICAgY2FwbWFuLnVuc2V0X2ZpeHR1cmUoKQog
Ci0gICAgVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gYGBkdXAyYGAgb3ZlciB0
aGUgc3RkaW8gZmlsZQotICAgIGRlc2NyaXB0b3JzIHdoZW4gZG9pbmcgYGBGRENhcHR1cmVgYCBh
bmQgdGhpcyB3aWxsIGBgQ2xvc2VIYW5kbGVgYCB0aGUKLSAgICBoYW5kbGVzIHVzZWQgYnkgUHl0
aG9uIHRvIHdyaXRlIHRvIHRoZSBjb25zb2xlLiBUaG91Z2ggdGhlcmUgaXMgc3RpbGwgc29tZQot
ICAgIHdlaXJkbmVzcyBhbmQgdGhlIGNvbnNvbGUgaGFuZGxlIHNlZW1zIHRvIG9ubHkgYmUgY2xv
c2VkIHJhbmRvbWx5IGFuZCBub3QKLSAgICBvbiB0aGUgZmlyc3QgY2FsbCB0byBgYENsb3NlSGFu
ZGxlYGAsIG9yIG1heWJlIGl0IGdldHMgcmVvcGVuZWQgd2l0aCB0aGUKLSAgICBzYW1lIGhhbmRs
ZSB2YWx1ZSB3aGVuIHdlIHN1c3BlbmQgY2FwdHVyaW5nLgogCi0gICAgVGhlIHdvcmthcm91bmQg
aW4gdGhpcyBjYXNlIHdpbGwgcmVvcGVuIHN0ZGlvIHdpdGggYSBkaWZmZXJlbnQgZmQgd2hpY2gK
LSAgICBhbHNvIG1lYW5zIGEgZGlmZmVyZW50IGhhbmRsZSBieSByZXBsaWNhdGluZyB0aGUgbG9n
aWMgaW4KLSAgICAiUHlfbGlmZWN5Y2xlLmM6aW5pdHN0ZGlvL2NyZWF0ZV9zdGRpbyIuCi0KLSAg
ICA6cGFyYW0gc3RyZWFtOiBpbiBwcmFjdGljZSBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRl
cnJgYCwgYnV0IGdpdmVuCi0gICAgICAgIGhlcmUgYXMgcGFyYW1ldGVyIGZvciB1bml0dGVzdGlu
ZyBwdXJwb3Nlcy4KK0BweXRlc3QuZml4dHVyZQorZGVmIGNhcHN5c2JpbmFyeShyZXF1ZXN0OiBT
dWJSZXF1ZXN0KSAtPiBHZW5lcmF0b3JbQ2FwdHVyZUZpeHR1cmVbYnl0ZXNdLCBOb25lLCBOb25l
XToKKyAgICAiIiJFbmFibGUgYnl0ZXMgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBgYHN5cy5zdGRv
dXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAuCiAKLSAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHkvaXNzdWVzLzEwMworICAgIFRoZSBjYXB0dXJlZCBvdXRwdXQgaXMgbWFkZSBh
dmFpbGFibGUgdmlhIGBgY2Fwc3lzYmluYXJ5LnJlYWRvdXRlcnIoKWBgCisgICAgbWV0aG9kIGNh
bGxzLCB3aGljaCByZXR1cm4gYSBgYChvdXQsIGVycilgYCBuYW1lZHR1cGxlLgorICAgIGBgb3V0
YGAgYW5kIGBgZXJyYGAgd2lsbCBiZSBgYGJ5dGVzYGAgb2JqZWN0cy4KICAgICAiIiIKLSAgICBp
ZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbjMyIikgb3Igc3lzLnZlcnNpb25faW5m
b1s6Ml0gPCAoMywgNik6Ci0gICAgICAgIHJldHVybgotCi0gICAgIyBiYWlsIG91dCBpZiBgYHN0
cmVhbWBgIGRvZXNuJ3Qgc2VlbSBsaWtlIGEgcHJvcGVyIGBgaW9gYCBzdHJlYW0gKCMyNjY2KQot
ICAgIGlmIG5vdCBoYXNhdHRyKHN0cmVhbSwgImJ1ZmZlciIpOgotICAgICAgICByZXR1cm4KKyAg
ICBjYXBtYW4gPSByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigiY2FwdHVy
ZW1hbmFnZXIiKQorICAgIGNhcHR1cmVfZml4dHVyZSA9IENhcHR1cmVGaXh0dXJlW2J5dGVzXShT
eXNDYXB0dXJlQmluYXJ5LCByZXF1ZXN0KQorICAgIGNhcG1hbi5zZXRfZml4dHVyZShjYXB0dXJl
X2ZpeHR1cmUpCisgICAgY2FwdHVyZV9maXh0dXJlLl9zdGFydCgpCisgICAgeWllbGQgY2FwdHVy
ZV9maXh0dXJlCisgICAgY2FwdHVyZV9maXh0dXJlLmNsb3NlKCkKKyAgICBjYXBtYW4udW5zZXRf
Zml4dHVyZSgpCiAKLSAgICBidWZmZXJlZCA9IGhhc2F0dHIoc3RyZWFtLmJ1ZmZlciwgInJhdyIp
Ci0gICAgcmF3X3N0ZG91dCA9IHN0cmVhbS5idWZmZXIucmF3IGlmIGJ1ZmZlcmVkIGVsc2Ugc3Ry
ZWFtLmJ1ZmZlcgotCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocmF3X3N0ZG91dCwgaW8uX1dpbmRv
d3NDb25zb2xlSU8pOgotICAgICAgICByZXR1cm4KIAotICAgIGRlZiBfcmVvcGVuX3N0ZGlvKGYs
IG1vZGUpOgotICAgICAgICBpZiBub3QgYnVmZmVyZWQgYW5kIG1vZGVbMF0gPT0gInciOgotICAg
ICAgICAgICAgYnVmZmVyaW5nID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnVmZmVy
aW5nID0gLTEKK0BweXRlc3QuZml4dHVyZQorZGVmIGNhcGZkKHJlcXVlc3Q6IFN1YlJlcXVlc3Qp
IC0+IEdlbmVyYXRvcltDYXB0dXJlRml4dHVyZVtzdHJdLCBOb25lLCBOb25lXToKKyAgICAiIiJF
bmFibGUgdGV4dCBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRvIGZpbGUgZGVzY3JpcHRvcnMgYGAxYGAg
YW5kIGBgMmBgLgogCi0gICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFwcGVyKAotICAgICAgICAg
ICAgb3Blbihvcy5kdXAoZi5maWxlbm8oKSksIG1vZGUsIGJ1ZmZlcmluZyksCi0gICAgICAgICAg
ICBmLmVuY29kaW5nLAotICAgICAgICAgICAgZi5lcnJvcnMsCi0gICAgICAgICAgICBmLm5ld2xp
bmVzLAotICAgICAgICAgICAgZi5saW5lX2J1ZmZlcmluZywKLSAgICAgICAgKQorICAgIFRoZSBj
YXB0dXJlZCBvdXRwdXQgaXMgbWFkZSBhdmFpbGFibGUgdmlhIGBgY2FwZmQucmVhZG91dGVycigp
YGAgbWV0aG9kCisgICAgY2FsbHMsIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIG5hbWVk
dHVwbGUuCisgICAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgIG9iamVjdHMu
CisgICAgIiIiCisgICAgY2FwbWFuID0gcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRw
bHVnaW4oImNhcHR1cmVtYW5hZ2VyIikKKyAgICBjYXB0dXJlX2ZpeHR1cmUgPSBDYXB0dXJlRml4
dHVyZVtzdHJdKEZEQ2FwdHVyZSwgcmVxdWVzdCkKKyAgICBjYXBtYW4uc2V0X2ZpeHR1cmUoY2Fw
dHVyZV9maXh0dXJlKQorICAgIGNhcHR1cmVfZml4dHVyZS5fc3RhcnQoKQorICAgIHlpZWxkIGNh
cHR1cmVfZml4dHVyZQorICAgIGNhcHR1cmVfZml4dHVyZS5jbG9zZSgpCisgICAgY2FwbWFuLnVu
c2V0X2ZpeHR1cmUoKQogCi0gICAgc3lzLl9fc3RkaW5fXyA9IHN5cy5zdGRpbiA9IF9yZW9wZW5f
c3RkaW8oc3lzLnN0ZGluLCAicmIiKQotICAgIHN5cy5fX3N0ZG91dF9fID0gc3lzLnN0ZG91dCA9
IF9yZW9wZW5fc3RkaW8oc3lzLnN0ZG91dCwgIndiIikKLSAgICBzeXMuX19zdGRlcnJfXyA9IHN5
cy5zdGRlcnIgPSBfcmVvcGVuX3N0ZGlvKHN5cy5zdGRlcnIsICJ3YiIpCiAKK0BweXRlc3QuZml4
dHVyZQorZGVmIGNhcGZkYmluYXJ5KHJlcXVlc3Q6IFN1YlJlcXVlc3QpIC0+IEdlbmVyYXRvcltD
YXB0dXJlRml4dHVyZVtieXRlc10sIE5vbmUsIE5vbmVdOgorICAgICIiIkVuYWJsZSBieXRlcyBj
YXB0dXJpbmcgb2Ygd3JpdGVzIHRvIGZpbGUgZGVzY3JpcHRvcnMgYGAxYGAgYW5kIGBgMmBgLgog
Ci1kZWYgX2F0dGVtcHRfdG9fY2xvc2VfY2FwdHVyZV9maWxlKGYpOgotICAgICIiIlN1cHByZXNz
IElPRXJyb3Igd2hlbiBjbG9zaW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSB1c2VkIGZvciBjYXB0dXJp
bmcgc3RyZWFtcyBpbiBweTI3ICgjMjM3MCkiIiIKLSAgICBpZiBzaXguUFkyOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAg
ICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZi5jbG9zZSgpCisgICAgVGhlIGNhcHR1
cmVkIG91dHB1dCBpcyBtYWRlIGF2YWlsYWJsZSB2aWEgYGBjYXBmZC5yZWFkb3V0ZXJyKClgYCBt
ZXRob2QKKyAgICBjYWxscywgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAgbmFtZWR0dXBs
ZS4KKyAgICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGBieXRlYGAgb2JqZWN0cy4KKyAg
ICAiIiIKKyAgICBjYXBtYW4gPSByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdp
bigiY2FwdHVyZW1hbmFnZXIiKQorICAgIGNhcHR1cmVfZml4dHVyZSA9IENhcHR1cmVGaXh0dXJl
W2J5dGVzXShGRENhcHR1cmVCaW5hcnksIHJlcXVlc3QpCisgICAgY2FwbWFuLnNldF9maXh0dXJl
KGNhcHR1cmVfZml4dHVyZSkKKyAgICBjYXB0dXJlX2ZpeHR1cmUuX3N0YXJ0KCkKKyAgICB5aWVs
ZCBjYXB0dXJlX2ZpeHR1cmUKKyAgICBjYXB0dXJlX2ZpeHR1cmUuY2xvc2UoKQorICAgIGNhcG1h
bi51bnNldF9maXh0dXJlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Nv
bXBhdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbXBhdC5weQppbmRleCA3YWJkM2Q1
M2ZmOTEuLjdlYWIyZWEwYzg1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
Y29tcGF0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbXBhdC5weQpAQCAtMSwx
NjAgKzEsMjIxIEBACi0iIiIKLXB5dGhvbiB2ZXJzaW9uIGNvbXBhdGliaWxpdHkgY29kZQotIiIi
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50
X2Z1bmN0aW9uCi0KLWltcG9ydCBjb2RlY3MKKyIiIlB5dGhvbiB2ZXJzaW9uIGNvbXBhdGliaWxp
dHkgY29kZS4iIiIKK2ltcG9ydCBlbnVtCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW5zcGVj
dAoraW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLQotaW1wb3J0IHB5Ci0KLWltcG9y
dCBfcHl0ZXN0Citmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitmcm9tIGlu
c3BlY3QgaW1wb3J0IFBhcmFtZXRlcgorZnJvbSBpbnNwZWN0IGltcG9ydCBzaWduYXR1cmUKK2Zy
b20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0
eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0
eXBpbmcgaW1wb3J0IG92ZXJsb2FkIGFzIG92ZXJsb2FkCitmcm9tIHR5cGluZyBpbXBvcnQgVHVw
bGUKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24K
KworaW1wb3J0IGF0dHIKKworZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsCiBmcm9t
IF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IFRFU1RfT1VUQ09NRQotZnJvbSBzaXggaW1wb3J0IHRl
eHRfdHlwZQotaW1wb3J0IHNpeAogCi10cnk6Ci0gICAgaW1wb3J0IGVudW0KLWV4Y2VwdCBJbXBv
cnRFcnJvcjogICMgcHJhZ21hOiBubyBjb3ZlcgotICAgICMgT25seSBhdmFpbGFibGUgaW4gUHl0
aG9uIDMuNCsgb3IgYXMgYSBiYWNrcG9ydAotICAgIGVudW0gPSBOb25lCitpZiBzeXMudmVyc2lv
bl9pbmZvIDwgKDMsIDUsIDIpOgorICAgIFRZUEVfQ0hFQ0tJTkcgPSBGYWxzZSAgIyB0eXBlOiBi
b29sCitlbHNlOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5HCiAKIAotX1BZ
MyA9IHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkKLV9QWTIgPSBub3QgX1BZMworaWYgVFlQRV9D
SEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTm9SZXR1cm4KKyAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVHlwZQorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IEZpbmFsCiAK
IAotaWYgX1BZMzoKLSAgICBmcm9tIGluc3BlY3QgaW1wb3J0IHNpZ25hdHVyZSwgUGFyYW1ldGVy
IGFzIFBhcmFtZXRlcgotZWxzZToKLSAgICBmcm9tIGZ1bmNzaWdzIGltcG9ydCBzaWduYXR1cmUs
IFBhcmFtZXRlciBhcyBQYXJhbWV0ZXIKK19UID0gVHlwZVZhcigiX1QiKQorX1MgPSBUeXBlVmFy
KCJfUyIpCiAKIAotTm9uZVR5cGUgPSB0eXBlKE5vbmUpCi1OT1RTRVQgPSBvYmplY3QoKQorIyBm
bXQ6IG9mZgorIyBTaW5nbGV0b24gdHlwZSBmb3IgTk9UU0VULCBhcyBkZXNjcmliZWQgaW46Cisj
IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0ODQvI3N1cHBvcnQtZm9yLXNp
bmdsZXRvbi10eXBlcy1pbi11bmlvbnMKK2NsYXNzIE5vdFNldFR5cGUoZW51bS5FbnVtKToKKyAg
ICB0b2tlbiA9IDAKK05PVFNFVCA9IE5vdFNldFR5cGUudG9rZW4gICMgdHlwZTogRmluYWwgIyBu
b3FhOiBFMzA1CisjIGZtdDogb24KKworTU9EVUxFX05PVF9GT1VORF9FUlJPUiA9ICgKKyAgICAi
TW9kdWxlTm90Rm91bmRFcnJvciIgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDYpIGVs
c2UgIkltcG9ydEVycm9yIgorKQogCi1QWTM1ID0gc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMs
IDUpCi1QWTM2ID0gc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDYpCi1NT0RVTEVfTk9UX0ZP
VU5EX0VSUk9SID0gIk1vZHVsZU5vdEZvdW5kRXJyb3IiIGlmIFBZMzYgZWxzZSAiSW1wb3J0RXJy
b3IiCiAKLWlmIF9QWTM6Ci0gICAgZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVN
YXBwaW5nIGFzIE1hcHBpbmdNaXhpbiAgIyBub3FhCi0gICAgZnJvbSBjb2xsZWN0aW9ucy5hYmMg
aW1wb3J0IE1hcHBpbmcsIFNlcXVlbmNlICAjIG5vcWEKK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0g
KDMsIDgpOgorICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtZXRhZGF0YSBhcyBpbXBvcnRsaWJf
bWV0YWRhdGEKIGVsc2U6Ci0gICAgIyB0aG9zZSByYWlzZSBEZXByZWNhdGlvbldhcm5pbmdzIGlu
IFB5dGhvbiA+PTMuNwotICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5n
IGFzIE1hcHBpbmdNaXhpbiAgIyBub3FhCi0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTWFw
cGluZywgU2VxdWVuY2UgICMgbm9xYQorICAgIGltcG9ydCBpbXBvcnRsaWJfbWV0YWRhdGEgICMg
bm9xYTogRjQwMQogCiAKLWRlZiBfZm9ybWF0X2FyZ3MoZnVuYyk6CitkZWYgX2Zvcm1hdF9hcmdz
KGZ1bmM6IENhbGxhYmxlWy4uLiwgQW55XSkgLT4gc3RyOgogICAgIHJldHVybiBzdHIoc2lnbmF0
dXJlKGZ1bmMpKQogCiAKLWlzZnVuY3Rpb24gPSBpbnNwZWN0LmlzZnVuY3Rpb24KLWlzY2xhc3Mg
PSBpbnNwZWN0LmlzY2xhc3MKLSMgdXNlZCB0byB3b3JrIGFyb3VuZCBhIHB5dGhvbjIgZXhjZXB0
aW9uIGluZm8gbGVhawotZXhjX2NsZWFyID0gZ2V0YXR0cihzeXMsICJleGNfY2xlYXIiLCBsYW1i
ZGE6IE5vbmUpCiAjIFRoZSB0eXBlIG9mIHJlLmNvbXBpbGUgb2JqZWN0cyBpcyBub3QgZXhwb3Nl
ZCBpbiBQeXRob24uCiBSRUdFWF9UWVBFID0gdHlwZShyZS5jb21waWxlKCIiKSkKIAogCi1kZWYg
aXNfZ2VuZXJhdG9yKGZ1bmMpOgoraWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA2KToKKworICAg
IGRlZiBmc3BhdGgocCk6CisgICAgICAgICIiIm9zLmZzcGF0aCByZXBsYWNlbWVudCwgdXNlZnVs
IHRvIHBvaW50IG91dCB3aGVuIHdlIHNob3VsZCByZXBsYWNlIGl0IGJ5IHRoZQorICAgICAgICBy
ZWFsIGZ1bmN0aW9uIG9uY2Ugd2UgZHJvcCBweTM1LiIiIgorICAgICAgICByZXR1cm4gc3RyKHAp
CisKKworZWxzZToKKyAgICBmc3BhdGggPSBvcy5mc3BhdGgKKworCitkZWYgaXNfZ2VuZXJhdG9y
KGZ1bmM6IG9iamVjdCkgLT4gYm9vbDoKICAgICBnZW5mdW5jID0gaW5zcGVjdC5pc2dlbmVyYXRv
cmZ1bmN0aW9uKGZ1bmMpCiAgICAgcmV0dXJuIGdlbmZ1bmMgYW5kIG5vdCBpc2Nvcm91dGluZWZ1
bmN0aW9uKGZ1bmMpCiAKIAotZGVmIGlzY29yb3V0aW5lZnVuY3Rpb24oZnVuYyk6Ci0gICAgIiIi
UmV0dXJuIFRydWUgaWYgZnVuYyBpcyBhIGRlY29yYXRlZCBjb3JvdXRpbmUgZnVuY3Rpb24uCitk
ZWYgaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jOiBvYmplY3QpIC0+IGJvb2w6CisgICAgIiIiUmV0
dXJuIFRydWUgaWYgZnVuYyBpcyBhIGNvcm91dGluZSBmdW5jdGlvbiAoYSBmdW5jdGlvbiBkZWZp
bmVkIHdpdGggYXN5bmMKKyAgICBkZWYgc3ludGF4LCBhbmQgZG9lc24ndCBjb250YWluIHlpZWxk
KSwgb3IgYSBmdW5jdGlvbiBkZWNvcmF0ZWQgd2l0aAorICAgIEBhc3luY2lvLmNvcm91dGluZS4K
IAotICAgIE5vdGU6IGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBQeXRob24gMy41J3MgYnVpbHRp
biBjb3Vyb3V0aW5lcy5weSB0byBhdm9pZCBpbXBvcnQgYXN5bmNpbyBkaXJlY3RseSwKLSAgICB3
aGljaCBpbiB0dXJucyBhbHNvIGluaXRpYWxpemVzIHRoZSAibG9nZ2luZyIgbW9kdWxlIGFzIHNp
ZGUtZWZmZWN0IChzZWUgaXNzdWUgIzgpLgorICAgIE5vdGU6IGNvcGllZCBhbmQgbW9kaWZpZWQg
ZnJvbSBQeXRob24gMy41J3MgYnVpbHRpbiBjb3Vyb3V0aW5lcy5weSB0byBhdm9pZAorICAgIGlt
cG9ydGluZyBhc3luY2lvIGRpcmVjdGx5LCB3aGljaCBpbiB0dXJucyBhbHNvIGluaXRpYWxpemVz
IHRoZSAibG9nZ2luZyIKKyAgICBtb2R1bGUgYXMgYSBzaWRlLWVmZmVjdCAoc2VlIGlzc3VlICM4
KS4KICAgICAiIiIKLSAgICByZXR1cm4gKAotICAgICAgICBnZXRhdHRyKGZ1bmMsICJfaXNfY29y
b3V0aW5lIiwgRmFsc2UpCi0gICAgICAgIG9yICgKLSAgICAgICAgICAgIGhhc2F0dHIoaW5zcGVj
dCwgImlzY29yb3V0aW5lZnVuY3Rpb24iKQotICAgICAgICAgICAgYW5kIGluc3BlY3QuaXNjb3Jv
dXRpbmVmdW5jdGlvbihmdW5jKQotICAgICAgICApCisgICAgcmV0dXJuIGluc3BlY3QuaXNjb3Jv
dXRpbmVmdW5jdGlvbihmdW5jKSBvciBnZXRhdHRyKGZ1bmMsICJfaXNfY29yb3V0aW5lIiwgRmFs
c2UpCisKKworZGVmIGlzX2FzeW5jX2Z1bmN0aW9uKGZ1bmM6IG9iamVjdCkgLT4gYm9vbDoKKyAg
ICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZ2l2ZW4gZnVuY3Rpb24gc2VlbXMgdG8gYmUgYW4gYXN5
bmMgZnVuY3Rpb24gb3IKKyAgICBhbiBhc3luYyBnZW5lcmF0b3IuIiIiCisgICAgcmV0dXJuIGlz
Y29yb3V0aW5lZnVuY3Rpb24oZnVuYykgb3IgKAorICAgICAgICBzeXMudmVyc2lvbl9pbmZvID49
ICgzLCA2KSBhbmQgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb24oZnVuYykKICAgICApCiAKIAot
ZGVmIGdldGxvY2F0aW9uKGZ1bmN0aW9uLCBjdXJkaXIpOgotICAgIGZuID0gcHkucGF0aC5sb2Nh
bChpbnNwZWN0LmdldGZpbGUoZnVuY3Rpb24pKQorZGVmIGdldGxvY2F0aW9uKGZ1bmN0aW9uLCBj
dXJkaXI6IE9wdGlvbmFsW3N0cl0gPSBOb25lKSAtPiBzdHI6CisgICAgZnJvbSBfcHl0ZXN0LnBh
dGhsaWIgaW1wb3J0IFBhdGgKKworICAgIGZ1bmN0aW9uID0gZ2V0X3JlYWxfZnVuYyhmdW5jdGlv
bikKKyAgICBmbiA9IFBhdGgoaW5zcGVjdC5nZXRmaWxlKGZ1bmN0aW9uKSkKICAgICBsaW5lbm8g
PSBmdW5jdGlvbi5fX2NvZGVfXy5jb19maXJzdGxpbmVubwotICAgIGlmIGZuLnJlbHRvKGN1cmRp
cik6Ci0gICAgICAgIGZuID0gZm4ucmVsdG8oY3VyZGlyKQorICAgIGlmIGN1cmRpciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVsZm4gPSBmbi5yZWxhdGl2ZV90byhj
dXJkaXIpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIlczolZCIgJSAocmVsZm4sIGxpbmVubyAr
IDEpCiAgICAgcmV0dXJuICIlczolZCIgJSAoZm4sIGxpbmVubyArIDEpCiAKIAotZGVmIG51bV9t
b2NrX3BhdGNoX2FyZ3MoZnVuY3Rpb24pOgotICAgICIiIiByZXR1cm4gbnVtYmVyIG9mIGFyZ3Vt
ZW50cyB1c2VkIHVwIGJ5IG1vY2sgYXJndW1lbnRzIChpZiBhbnkpICIiIgorZGVmIG51bV9tb2Nr
X3BhdGNoX2FyZ3MoZnVuY3Rpb24pIC0+IGludDoKKyAgICAiIiJSZXR1cm4gbnVtYmVyIG9mIGFy
Z3VtZW50cyB1c2VkIHVwIGJ5IG1vY2sgYXJndW1lbnRzIChpZiBhbnkpLiIiIgogICAgIHBhdGNo
aW5ncyA9IGdldGF0dHIoZnVuY3Rpb24sICJwYXRjaGluZ3MiLCBOb25lKQogICAgIGlmIG5vdCBw
YXRjaGluZ3M6CiAgICAgICAgIHJldHVybiAwCi0gICAgbW9ja19tb2R1bGVzID0gW3N5cy5tb2R1
bGVzLmdldCgibW9jayIpLCBzeXMubW9kdWxlcy5nZXQoInVuaXR0ZXN0Lm1vY2siKV0KLSAgICBp
ZiBhbnkobW9ja19tb2R1bGVzKToKLSAgICAgICAgc2VudGluZWxzID0gW20uREVGQVVMVCBmb3Ig
bSBpbiBtb2NrX21vZHVsZXMgaWYgbSBpcyBub3QgTm9uZV0KLSAgICAgICAgcmV0dXJuIGxlbigK
LSAgICAgICAgICAgIFtwIGZvciBwIGluIHBhdGNoaW5ncyBpZiBub3QgcC5hdHRyaWJ1dGVfbmFt
ZSBhbmQgcC5uZXcgaW4gc2VudGluZWxzXQotICAgICAgICApCi0gICAgcmV0dXJuIGxlbihwYXRj
aGluZ3MpCiAKKyAgICBtb2NrX3NlbnRpbmVsID0gZ2V0YXR0cihzeXMubW9kdWxlcy5nZXQoIm1v
Y2siKSwgIkRFRkFVTFQiLCBvYmplY3QoKSkKKyAgICB1dF9tb2NrX3NlbnRpbmVsID0gZ2V0YXR0
cihzeXMubW9kdWxlcy5nZXQoInVuaXR0ZXN0Lm1vY2siKSwgIkRFRkFVTFQiLCBvYmplY3QoKSkK
KworICAgIHJldHVybiBsZW4oCisgICAgICAgIFsKKyAgICAgICAgICAgIHAKKyAgICAgICAgICAg
IGZvciBwIGluIHBhdGNoaW5ncworICAgICAgICAgICAgaWYgbm90IHAuYXR0cmlidXRlX25hbWUK
KyAgICAgICAgICAgIGFuZCAocC5uZXcgaXMgbW9ja19zZW50aW5lbCBvciBwLm5ldyBpcyB1dF9t
b2NrX3NlbnRpbmVsKQorICAgICAgICBdCisgICAgKQogCi1kZWYgZ2V0ZnVuY2FyZ25hbWVzKGZ1
bmN0aW9uLCBpc19tZXRob2Q9RmFsc2UsIGNscz1Ob25lKToKLSAgICAiIiJSZXR1cm5zIHRoZSBu
YW1lcyBvZiBhIGZ1bmN0aW9uJ3MgbWFuZGF0b3J5IGFyZ3VtZW50cy4KIAotICAgIFRoaXMgc2hv
dWxkIHJldHVybiB0aGUgbmFtZXMgb2YgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cyB0aGF0OgotICAg
ICAgICAqIEFyZW4ndCBib3VuZCB0byBhbiBpbnN0YW5jZSBvciB0eXBlIGFzIGluIGluc3RhbmNl
IG9yIGNsYXNzIG1ldGhvZHMuCi0gICAgICAgICogRG9uJ3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4K
LSAgICAgICAgKiBBcmVuJ3QgYm91bmQgd2l0aCBmdW5jdG9vbHMucGFydGlhbC4KLSAgICAgICAg
KiBBcmVuJ3QgcmVwbGFjZWQgd2l0aCBtb2Nrcy4KK2RlZiBnZXRmdW5jYXJnbmFtZXMoCisgICAg
ZnVuY3Rpb246IENhbGxhYmxlWy4uLiwgQW55XSwKKyAgICAqLAorICAgIG5hbWU6IHN0ciA9ICIi
LAorICAgIGlzX21ldGhvZDogYm9vbCA9IEZhbHNlLAorICAgIGNsczogT3B0aW9uYWxbdHlwZV0g
PSBOb25lCispIC0+IFR1cGxlW3N0ciwgLi4uXToKKyAgICAiIiJSZXR1cm4gdGhlIG5hbWVzIG9m
IGEgZnVuY3Rpb24ncyBtYW5kYXRvcnkgYXJndW1lbnRzLgorCisgICAgU2hvdWxkIHJldHVybiB0
aGUgbmFtZXMgb2YgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cyB0aGF0OgorICAgICogQXJlbid0IGJv
dW5kIHRvIGFuIGluc3RhbmNlIG9yIHR5cGUgYXMgaW4gaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9k
cy4KKyAgICAqIERvbid0IGhhdmUgZGVmYXVsdCB2YWx1ZXMuCisgICAgKiBBcmVuJ3QgYm91bmQg
d2l0aCBmdW5jdG9vbHMucGFydGlhbC4KKyAgICAqIEFyZW4ndCByZXBsYWNlZCB3aXRoIG1vY2tz
LgogCiAgICAgVGhlIGlzX21ldGhvZCBhbmQgY2xzIGFyZ3VtZW50cyBpbmRpY2F0ZSB0aGF0IHRo
ZSBmdW5jdGlvbiBzaG91bGQKICAgICBiZSB0cmVhdGVkIGFzIGEgYm91bmQgbWV0aG9kIGV2ZW4g
dGhvdWdoIGl0J3Mgbm90IHVubGVzcywgb25seSBpbgogICAgIHRoZSBjYXNlIG9mIGNscywgdGhl
IGZ1bmN0aW9uIGlzIGEgc3RhdGljIG1ldGhvZC4KIAotICAgIEBSb25ueVBmYW5uc2NobWlkdDog
VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVmYWN0b3JlZCB3aGVuIHdlCi0gICAgcmV2aXNpdCBm
aXh0dXJlcy4gVGhlIGZpeHR1cmUgbWVjaGFuaXNtIHNob3VsZCBhc2sgdGhlIG5vZGUgZm9yCi0g
ICAgdGhlIGZpeHR1cmUgbmFtZXMsIGFuZCBub3QgdHJ5IHRvIG9idGFpbiBkaXJlY3RseSBmcm9t
IHRoZQotICAgIGZ1bmN0aW9uIG9iamVjdCB3ZWxsIGFmdGVyIGNvbGxlY3Rpb24gaGFzIG9jY3Vy
cmVkLgotCisgICAgVGhlIG5hbWUgcGFyYW1ldGVyIHNob3VsZCBiZSB0aGUgb3JpZ2luYWwgbmFt
ZSBpbiB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4KICAgICAiIiIKKyAgICAjIFRP
RE8oUm9ubnlQZmFubnNjaG1pZHQpOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZWZhY3RvcmVk
IHdoZW4gd2UKKyAgICAjIHJldmlzaXQgZml4dHVyZXMuIFRoZSBmaXh0dXJlIG1lY2hhbmlzbSBz
aG91bGQgYXNrIHRoZSBub2RlIGZvcgorICAgICMgdGhlIGZpeHR1cmUgbmFtZXMsIGFuZCBub3Qg
dHJ5IHRvIG9idGFpbiBkaXJlY3RseSBmcm9tIHRoZQorICAgICMgZnVuY3Rpb24gb2JqZWN0IHdl
bGwgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgb2NjdXJyZWQuCisKICAgICAjIFRoZSBwYXJhbWV0ZXJz
IGF0dHJpYnV0ZSBvZiBhIFNpZ25hdHVyZSBvYmplY3QgY29udGFpbnMgYW4KICAgICAjIG9yZGVy
ZWQgbWFwcGluZyBvZiBwYXJhbWV0ZXIgbmFtZXMgdG8gUGFyYW1ldGVyIGluc3RhbmNlcy4gIFRo
aXMKICAgICAjIGNyZWF0ZXMgYSB0dXBsZSBvZiB0aGUgbmFtZXMgb2YgdGhlIHBhcmFtZXRlcnMg
dGhhdCBkb24ndCBoYXZlCiAgICAgIyBkZWZhdWx0cy4KKyAgICB0cnk6CisgICAgICAgIHBhcmFt
ZXRlcnMgPSBzaWduYXR1cmUoZnVuY3Rpb24pLnBhcmFtZXRlcnMKKyAgICBleGNlcHQgKFZhbHVl
RXJyb3IsIFR5cGVFcnJvcikgYXMgZToKKyAgICAgICAgZmFpbCgKKyAgICAgICAgICAgICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGFyZ3VtZW50cyBvZiB7IXJ9OiB7fSIuZm9ybWF0KGZ1bmN0aW9uLCBl
KSwKKyAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICkKKwogICAgIGFyZ19uYW1l
cyA9IHR1cGxlKAogICAgICAgICBwLm5hbWUKLSAgICAgICAgZm9yIHAgaW4gc2lnbmF0dXJlKGZ1
bmN0aW9uKS5wYXJhbWV0ZXJzLnZhbHVlcygpCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnMu
dmFsdWVzKCkKICAgICAgICAgaWYgKAotICAgICAgICAgICAgcC5raW5kIGlzIFBhcmFtZXRlci5Q
T1NJVElPTkFMX09SX0tFWVdPUkQKLSAgICAgICAgICAgIG9yIHAua2luZCBpcyBQYXJhbWV0ZXIu
S0VZV09SRF9PTkxZCisgICAgICAgICAgICAjIFRPRE86IFJlbW92ZSB0eXBlIGlnbm9yZSBhZnRl
ciBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGVzaGVkL3B1bGwvNDM4MworICAgICAgICAg
ICAgcC5raW5kIGlzIFBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQgICMgdHlwZTogaWdu
b3JlW3VucmVhY2hhYmxlXQorICAgICAgICAgICAgb3IgcC5raW5kIGlzIFBhcmFtZXRlci5LRVlX
T1JEX09OTFkgICMgdHlwZTogaWdub3JlW3VucmVhY2hhYmxlXQogICAgICAgICApCiAgICAgICAg
IGFuZCBwLmRlZmF1bHQgaXMgUGFyYW1ldGVyLmVtcHR5CiAgICAgKQorICAgIGlmIG5vdCBuYW1l
OgorICAgICAgICBuYW1lID0gZnVuY3Rpb24uX19uYW1lX18KKwogICAgICMgSWYgdGhpcyBmdW5j
dGlvbiBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGJvdW5kIG1ldGhvZCBldmVuIHRob3VnaAogICAg
ICMgaXQncyBwYXNzZWQgYXMgYW4gdW5ib3VuZCBtZXRob2Qgb3IgZnVuY3Rpb24sIHJlbW92ZSB0
aGUgZmlyc3QKICAgICAjIHBhcmFtZXRlciBuYW1lLgotICAgIGlmICgKLSAgICAgICAgaXNfbWV0
aG9kCi0gICAgICAgIG9yICgKLSAgICAgICAgICAgIGNscwotICAgICAgICAgICAgYW5kIG5vdCBp
c2luc3RhbmNlKGNscy5fX2RpY3RfXy5nZXQoZnVuY3Rpb24uX19uYW1lX18sIE5vbmUpLCBzdGF0
aWNtZXRob2QpCi0gICAgICAgICkKKyAgICBpZiBpc19tZXRob2Qgb3IgKAorICAgICAgICBjbHMg
YW5kIG5vdCBpc2luc3RhbmNlKGNscy5fX2RpY3RfXy5nZXQobmFtZSwgTm9uZSksIHN0YXRpY21l
dGhvZCkKICAgICApOgogICAgICAgICBhcmdfbmFtZXMgPSBhcmdfbmFtZXNbMTpdCiAgICAgIyBS
ZW1vdmUgYW55IG5hbWVzIHRoYXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG1vY2tzLgogICAgIGlm
IGhhc2F0dHIoZnVuY3Rpb24sICJfX3dyYXBwZWRfXyIpOgotICAgICAgICBhcmdfbmFtZXMgPSBh
cmdfbmFtZXNbbnVtX21vY2tfcGF0Y2hfYXJncyhmdW5jdGlvbik6XQorICAgICAgICBhcmdfbmFt
ZXMgPSBhcmdfbmFtZXNbbnVtX21vY2tfcGF0Y2hfYXJncyhmdW5jdGlvbikgOl0KICAgICByZXR1
cm4gYXJnX25hbWVzCiAKIAotZGVmIGdldF9kZWZhdWx0X2FyZ19uYW1lcyhmdW5jdGlvbik6Ci0g
ICAgIyBOb3RlOiB0aGlzIGNvZGUgaW50ZW50aW9uYWxseSBtaXJyb3JzIHRoZSBjb2RlIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgZ2V0ZnVuY2FyZ25hbWVzLAotICAgICMgdG8gZ2V0IHRoZSBhcmd1bWVu
dHMgd2hpY2ggd2VyZSBleGNsdWRlZCBmcm9tIGl0cyByZXN1bHQgYmVjYXVzZSB0aGV5IGhhZCBk
ZWZhdWx0IHZhbHVlcworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA3KToKKworICAgIEBjb250
ZXh0bWFuYWdlcgorICAgIGRlZiBudWxsY29udGV4dCgpOgorICAgICAgICB5aWVsZAorCisKK2Vs
c2U6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBudWxsY29udGV4dCBhcyBudWxsY29udGV4
dCAgIyBub3FhOiBGNDAxCisKKworZGVmIGdldF9kZWZhdWx0X2FyZ19uYW1lcyhmdW5jdGlvbjog
Q2FsbGFibGVbLi4uLCBBbnldKSAtPiBUdXBsZVtzdHIsIC4uLl06CisgICAgIyBOb3RlOiB0aGlz
IGNvZGUgaW50ZW50aW9uYWxseSBtaXJyb3JzIHRoZSBjb2RlIGF0IHRoZSBiZWdpbm5pbmcgb2YK
KyAgICAjIGdldGZ1bmNhcmduYW1lcywgdG8gZ2V0IHRoZSBhcmd1bWVudHMgd2hpY2ggd2VyZSBl
eGNsdWRlZCBmcm9tIGl0cyByZXN1bHQKKyAgICAjIGJlY2F1c2UgdGhleSBoYWQgZGVmYXVsdCB2
YWx1ZXMuCiAgICAgcmV0dXJuIHR1cGxlKAogICAgICAgICBwLm5hbWUKICAgICAgICAgZm9yIHAg
aW4gc2lnbmF0dXJlKGZ1bmN0aW9uKS5wYXJhbWV0ZXJzLnZhbHVlcygpCkBAIC0xNjMsODYgKzIy
NCw4MyBAQCBkZWYgZ2V0X2RlZmF1bHRfYXJnX25hbWVzKGZ1bmN0aW9uKToKICAgICApCiAKIAot
aWYgX1BZMzoKLSAgICBTVFJJTkdfVFlQRVMgPSBieXRlcywgc3RyCi0gICAgVU5JQ09ERV9UWVBF
UyA9IHNpeC50ZXh0X3R5cGUKK19ub25fcHJpbnRhYmxlX2FzY2lpX3RyYW5zbGF0ZV90YWJsZSA9
IHsKKyAgICBpOiAiXFx4ezowMnh9Ii5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMTI4KSBpZiBp
IG5vdCBpbiByYW5nZSgzMiwgMTI3KQorfQorX25vbl9wcmludGFibGVfYXNjaWlfdHJhbnNsYXRl
X3RhYmxlLnVwZGF0ZSgKKyAgICB7b3JkKCJcdCIpOiAiXFx0Iiwgb3JkKCJcciIpOiAiXFxyIiwg
b3JkKCJcbiIpOiAiXFxuIn0KKykKIAotICAgIGlmIFBZMzU6CiAKLSAgICAgICAgZGVmIF9ieXRl
c190b19hc2NpaSh2YWwpOgotICAgICAgICAgICAgcmV0dXJuIHZhbC5kZWNvZGUoImFzY2lpIiwg
ImJhY2tzbGFzaHJlcGxhY2UiKQorZGVmIF90cmFuc2xhdGVfbm9uX3ByaW50YWJsZShzOiBzdHIp
IC0+IHN0cjoKKyAgICByZXR1cm4gcy50cmFuc2xhdGUoX25vbl9wcmludGFibGVfYXNjaWlfdHJh
bnNsYXRlX3RhYmxlKQogCi0gICAgZWxzZToKIAotICAgICAgICBkZWYgX2J5dGVzX3RvX2FzY2lp
KHZhbCk6Ci0gICAgICAgICAgICBpZiB2YWw6Ci0gICAgICAgICAgICAgICAgIyBzb3VyY2U6IGh0
dHA6Ly9nb28uZ2wvYkdzbndDCi0gICAgICAgICAgICAgICAgZW5jb2RlZF9ieXRlcywgXyA9IGNv
ZGVjcy5lc2NhcGVfZW5jb2RlKHZhbCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZF9i
eXRlcy5kZWNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
IyBlbXB0eSBieXRlcyBjcmFzaGVzIGNvZGVjcy5lc2NhcGVfZW5jb2RlICgjMTA4NykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIiIKK1NUUklOR19UWVBFUyA9IGJ5dGVzLCBzdHIKIAotICAgIGRl
ZiBhc2NpaV9lc2NhcGVkKHZhbCk6Ci0gICAgICAgICIiIklmIHZhbCBpcyBwdXJlIGFzY2lpLCBy
ZXR1cm5zIGl0IGFzIGEgc3RyKCkuICBPdGhlcndpc2UsIGVzY2FwZXMKLSAgICAgICAgYnl0ZXMg
b2JqZWN0cyBpbnRvIGEgc2VxdWVuY2Ugb2YgZXNjYXBlZCBieXRlczoKIAotICAgICAgICBiJ1x4
YzNceGI0XHhjNVx4ZDYnIC0+IHUnXFx4YzNcXHhiNFxceGM1XFx4ZDYnCitkZWYgX2J5dGVzX3Rv
X2FzY2lpKHZhbDogYnl0ZXMpIC0+IHN0cjoKKyAgICByZXR1cm4gdmFsLmRlY29kZSgiYXNjaWki
LCAiYmFja3NsYXNocmVwbGFjZSIpCiAKLSAgICAgICAgYW5kIGVzY2FwZXMgdW5pY29kZSBvYmpl
Y3RzIGludG8gYSBzZXF1ZW5jZSBvZiBlc2NhcGVkIHVuaWNvZGUKLSAgICAgICAgaWRzLCBlLmcu
OgogCi0gICAgICAgICc0XFxuVlxcVTAwMDQzZWZhXFx4MGVNWFdCXFx4MWVcXHUzMDI4XFx1MTVm
ZFxceGNkXFxVMDAwN2Q5NDQnCitkZWYgYXNjaWlfZXNjYXBlZCh2YWw6IFVuaW9uW2J5dGVzLCBz
dHJdKSAtPiBzdHI6CisgICAgciIiIklmIHZhbCBpcyBwdXJlIEFTQ0lJLCByZXR1cm4gaXQgYXMg
YW4gc3RyLCBvdGhlcndpc2UsIGVzY2FwZQorICAgIGJ5dGVzIG9iamVjdHMgaW50byBhIHNlcXVl
bmNlIG9mIGVzY2FwZWQgYnl0ZXM6CiAKLSAgICAgICAgbm90ZToKLSAgICAgICAgICAgdGhlIG9i
dmlvdXMgInYuZGVjb2RlKCd1bmljb2RlLWVzY2FwZScpIiB3aWxsIHJldHVybgotICAgICAgICAg
ICB2YWxpZCB1dGYtOCB1bmljb2RlIGlmIGl0IGZpbmRzIHRoZW0gaW4gYnl0ZXMsIGJ1dCB3ZQot
ICAgICAgICAgICB3YW50IHRvIHJldHVybiBlc2NhcGVkIGJ5dGVzIGZvciBhbnkgYnl0ZSwgZXZl
biBpZiB0aGV5IG1hdGNoCi0gICAgICAgICAgIGEgdXRmLTggc3RyaW5nLgorICAgIGInXHhjM1x4
YjRceGM1XHhkNicgLT4gcidceGMzXHhiNFx4YzVceGQ2JwogCi0gICAgICAgICIiIgotICAgICAg
ICBpZiBpc2luc3RhbmNlKHZhbCwgYnl0ZXMpOgotICAgICAgICAgICAgcmV0dXJuIF9ieXRlc190
b19hc2NpaSh2YWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdmFsLmVuY29k
ZSgidW5pY29kZV9lc2NhcGUiKS5kZWNvZGUoImFzY2lpIikKKyAgICBhbmQgZXNjYXBlcyB1bmlj
b2RlIG9iamVjdHMgaW50byBhIHNlcXVlbmNlIG9mIGVzY2FwZWQgdW5pY29kZQorICAgIGlkcywg
ZS5nLjoKIAorICAgIHInNFxuVlxVMDAwNDNlZmFceDBlTVhXQlx4MWVcdTMwMjhcdTE1ZmRceGNk
XFUwMDA3ZDk0NCcKIAotZWxzZToKLSAgICBTVFJJTkdfVFlQRVMgPSBzaXguc3RyaW5nX3R5cGVz
Ci0gICAgVU5JQ09ERV9UWVBFUyA9IHNpeC50ZXh0X3R5cGUKLQotICAgIGRlZiBhc2NpaV9lc2Nh
cGVkKHZhbCk6Ci0gICAgICAgICIiIkluIHB5MiBieXRlcyBhbmQgc3RyIGFyZSB0aGUgc2FtZSB0
eXBlLCBzbyByZXR1cm4gaWYgaXQncyBhIGJ5dGVzCi0gICAgICAgIG9iamVjdCwgcmV0dXJuIGl0
IHVuY2hhbmdlZCBpZiBpdCBpcyBhIGZ1bGwgYXNjaWkgc3RyaW5nLAotICAgICAgICBvdGhlcndp
c2UgZXNjYXBlIGl0IGludG8gaXRzIGJpbmFyeSBmb3JtLgotCi0gICAgICAgIElmIGl0J3MgYSB1
bmljb2RlIHN0cmluZywgY2hhbmdlIHRoZSB1bmljb2RlIGNoYXJhY3RlcnMgaW50bwotICAgICAg
ICB1bmljb2RlIGVzY2FwZXMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uo
dmFsLCBieXRlcyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZh
bC5lbmNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbC5lbmNvZGUoInN0cmluZy1lc2NhcGUiKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHZhbC5lbmNvZGUoInVuaWNvZGUtZXNjYXBl
IikKKyAgICBOb3RlOgorICAgICAgIFRoZSBvYnZpb3VzICJ2LmRlY29kZSgndW5pY29kZS1lc2Nh
cGUnKSIgd2lsbCByZXR1cm4KKyAgICAgICB2YWxpZCBVVEYtOCB1bmljb2RlIGlmIGl0IGZpbmRz
IHRoZW0gaW4gYnl0ZXMsIGJ1dCB3ZQorICAgICAgIHdhbnQgdG8gcmV0dXJuIGVzY2FwZWQgYnl0
ZXMgZm9yIGFueSBieXRlLCBldmVuIGlmIHRoZXkgbWF0Y2gKKyAgICAgICBhIFVURi04IHN0cmlu
Zy4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHZhbCwgYnl0ZXMpOgorICAgICAgICByZXQg
PSBfYnl0ZXNfdG9fYXNjaWkodmFsKQorICAgIGVsc2U6CisgICAgICAgIHJldCA9IHZhbC5lbmNv
ZGUoInVuaWNvZGVfZXNjYXBlIikuZGVjb2RlKCJhc2NpaSIpCisgICAgcmV0dXJuIF90cmFuc2xh
dGVfbm9uX3ByaW50YWJsZShyZXQpCiAKIAotZGVmIGdldF9yZWFsX2Z1bmMob2JqKToKLSAgICAi
IiIgZ2V0cyB0aGUgcmVhbCBmdW5jdGlvbiBvYmplY3Qgb2YgdGhlIChwb3NzaWJseSkgd3JhcHBl
ZCBvYmplY3QgYnkKLSAgICBmdW5jdG9vbHMud3JhcHMgb3IgZnVuY3Rvb2xzLnBhcnRpYWwuCitA
YXR0ci5zCitjbGFzcyBfUHl0ZXN0V3JhcHBlcjoKKyAgICAiIiJEdW1teSB3cmFwcGVyIGFyb3Vu
ZCBhIGZ1bmN0aW9uIG9iamVjdCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisKKyAgICBVc2VkIHRv
IGNvcnJlY3RseSB1bndyYXAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0IHdoZW4gd2Ug
YXJlCisgICAgY3JlYXRpbmcgZml4dHVyZXMsIGJlY2F1c2Ugd2Ugd3JhcCB0aGUgZnVuY3Rpb24g
b2JqZWN0IG91cnNlbHZlcyB3aXRoIGEKKyAgICBkZWNvcmF0b3IgdG8gaXNzdWUgd2FybmluZ3Mg
d2hlbiB0aGUgZml4dHVyZSBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkuCiAgICAgIiIiCisK
KyAgICBvYmogPSBhdHRyLmliKCkKKworCitkZWYgZ2V0X3JlYWxfZnVuYyhvYmopOgorICAgICIi
IkdldCB0aGUgcmVhbCBmdW5jdGlvbiBvYmplY3Qgb2YgdGhlIChwb3NzaWJseSkgd3JhcHBlZCBv
YmplY3QgYnkKKyAgICBmdW5jdG9vbHMud3JhcHMgb3IgZnVuY3Rvb2xzLnBhcnRpYWwuIiIiCiAg
ICAgc3RhcnRfb2JqID0gb2JqCiAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgIyBf
X3B5dGVzdF93cmFwcGVkX18gaXMgc2V0IGJ5IEBweXRlc3QuZml4dHVyZSB3aGVuIHdyYXBwaW5n
IHRoZSBmaXh0dXJlIGZ1bmN0aW9uCisgICAgICAgICMgdG8gdHJpZ2dlciBhIHdhcm5pbmcgaWYg
aXQgZ2V0cyBjYWxsZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiBieSBweXRlc3Q6IHdlIGRvbid0Cisg
ICAgICAgICMgd2FudCB0byB1bndyYXAgZnVydGhlciB0aGFuIHRoaXMgb3RoZXJ3aXNlIHdlIGxv
c2UgdXNlZnVsIHdyYXBwaW5ncyBsaWtlIEBtb2NrLnBhdGNoICgjMzc3NCkKKyAgICAgICAgbmV3
X29iaiA9IGdldGF0dHIob2JqLCAiX19weXRlc3Rfd3JhcHBlZF9fIiwgTm9uZSkKKyAgICAgICAg
aWYgaXNpbnN0YW5jZShuZXdfb2JqLCBfUHl0ZXN0V3JhcHBlcik6CisgICAgICAgICAgICBvYmog
PSBuZXdfb2JqLm9iagorICAgICAgICAgICAgYnJlYWsKICAgICAgICAgbmV3X29iaiA9IGdldGF0
dHIob2JqLCAiX193cmFwcGVkX18iLCBOb25lKQogICAgICAgICBpZiBuZXdfb2JqIGlzIE5vbmU6
CiAgICAgICAgICAgICBicmVhawogICAgICAgICBvYmogPSBuZXdfb2JqCiAgICAgZWxzZToKKyAg
ICAgICAgZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgc2FmZXJlcHIKKwogICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgKCJjb3VsZCBub3QgZmluZCByZWFsIGZ1
bmN0aW9uIG9mIHtzdGFydH0iICJcbnN0b3BwZWQgYXQge2N1cnJlbnR9IikuZm9ybWF0KAotICAg
ICAgICAgICAgICAgIHN0YXJ0PXB5LmlvLnNhZmVyZXByKHN0YXJ0X29iaiksIGN1cnJlbnQ9cHku
aW8uc2FmZXJlcHIob2JqKQorICAgICAgICAgICAgKCJjb3VsZCBub3QgZmluZCByZWFsIGZ1bmN0
aW9uIG9mIHtzdGFydH1cbnN0b3BwZWQgYXQge2N1cnJlbnR9IikuZm9ybWF0KAorICAgICAgICAg
ICAgICAgIHN0YXJ0PXNhZmVyZXByKHN0YXJ0X29iaiksIGN1cnJlbnQ9c2FmZXJlcHIob2JqKQog
ICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGZ1bmN0b29s
cy5wYXJ0aWFsKToKQEAgLTI1MCwxNCArMzA4LDE4IEBAIGRlZiBnZXRfcmVhbF9mdW5jKG9iaik6
CiAgICAgcmV0dXJuIG9iagogCiAKLWRlZiBnZXRmc2xpbmVubyhvYmopOgotICAgICMgeHh4IGxl
dCBkZWNvcmF0b3JzIGV0YyBzcGVjaWZ5IGEgc2FuZSBvcmRlcmluZwotICAgIG9iaiA9IGdldF9y
ZWFsX2Z1bmMob2JqKQotICAgIGlmIGhhc2F0dHIob2JqLCAicGxhY2VfYXMiKToKLSAgICAgICAg
b2JqID0gb2JqLnBsYWNlX2FzCi0gICAgZnNsaW5lbm8gPSBfcHl0ZXN0Ll9jb2RlLmdldGZzbGlu
ZW5vKG9iaikKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShmc2xpbmVub1sxXSwgaW50KSwgb2JqCi0g
ICAgcmV0dXJuIGZzbGluZW5vCitkZWYgZ2V0X3JlYWxfbWV0aG9kKG9iaiwgaG9sZGVyKToKKyAg
ICAiIiJBdHRlbXB0IHRvIG9idGFpbiB0aGUgcmVhbCBmdW5jdGlvbiBvYmplY3QgdGhhdCBtaWdo
dCBiZSB3cmFwcGluZworICAgIGBgb2JqYGAsIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgcmV0dXJu
aW5nIGEgYm91bmQgbWV0aG9kIHRvIGBgaG9sZGVyYGAgaWYKKyAgICB0aGUgb3JpZ2luYWwgb2Jq
ZWN0IHdhcyBhIGJvdW5kIG1ldGhvZC4iIiIKKyAgICB0cnk6CisgICAgICAgIGlzX21ldGhvZCA9
IGhhc2F0dHIob2JqLCAiX19mdW5jX18iKQorICAgICAgICBvYmogPSBnZXRfcmVhbF9mdW5jKG9i
aikKKyAgICBleGNlcHQgRXhjZXB0aW9uOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgIHJl
dHVybiBvYmoKKyAgICBpZiBpc19tZXRob2QgYW5kIGhhc2F0dHIob2JqLCAiX19nZXRfXyIpIGFu
ZCBjYWxsYWJsZShvYmouX19nZXRfXyk6CisgICAgICAgIG9iaiA9IG9iai5fX2dldF9fKGhvbGRl
cikKKyAgICByZXR1cm4gb2JqCiAKIAogZGVmIGdldGltZnVuYyhmdW5jKToKQEAgLTI2NywxMyAr
MzI5LDE0IEBAIGRlZiBnZXRpbWZ1bmMoZnVuYyk6CiAgICAgICAgIHJldHVybiBmdW5jCiAKIAot
ZGVmIHNhZmVfZ2V0YXR0cihvYmplY3QsIG5hbWUsIGRlZmF1bHQpOgotICAgICIiIiBMaWtlIGdl
dGF0dHIgYnV0IHJldHVybiBkZWZhdWx0IHVwb24gYW55IEV4Y2VwdGlvbiBvciBhbnkgT3V0Y29t
ZUV4Y2VwdGlvbi4KK2RlZiBzYWZlX2dldGF0dHIob2JqZWN0OiBBbnksIG5hbWU6IHN0ciwgZGVm
YXVsdDogQW55KSAtPiBBbnk6CisgICAgIiIiTGlrZSBnZXRhdHRyIGJ1dCByZXR1cm4gZGVmYXVs
dCB1cG9uIGFueSBFeGNlcHRpb24gb3IgYW55IE91dGNvbWVFeGNlcHRpb24uCiAKICAgICBBdHRy
aWJ1dGUgYWNjZXNzIGNhbiBwb3RlbnRpYWxseSBmYWlsIGZvciAnZXZpbCcgUHl0aG9uIG9iamVj
dHMuCiAgICAgU2VlIGlzc3VlICMyMTQuCi0gICAgSXQgY2F0Y2hlcyBPdXRjb21lRXhjZXB0aW9u
IGJlY2F1c2Ugb2YgIzI0OTAgKGlzc3VlICM1ODApLCBuZXcgb3V0Y29tZXMgYXJlIGRlcml2ZWQg
ZnJvbSBCYXNlRXhjZXB0aW9uCi0gICAgaW5zdGVhZCBvZiBFeGNlcHRpb24gKGZvciBtb3JlIGRl
dGFpbHMgY2hlY2sgIzI3MDcpCisgICAgSXQgY2F0Y2hlcyBPdXRjb21lRXhjZXB0aW9uIGJlY2F1
c2Ugb2YgIzI0OTAgKGlzc3VlICM1ODApLCBuZXcgb3V0Y29tZXMKKyAgICBhcmUgZGVyaXZlZCBm
cm9tIEJhc2VFeGNlcHRpb24gaW5zdGVhZCBvZiBFeGNlcHRpb24gKGZvciBtb3JlIGRldGFpbHMK
KyAgICBjaGVjayAjMjcwNykuCiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gZ2V0
YXR0cihvYmplY3QsIG5hbWUsIGRlZmF1bHQpCkBAIC0yODEsOTEgKzM0NCwxMTEgQEAgZGVmIHNh
ZmVfZ2V0YXR0cihvYmplY3QsIG5hbWUsIGRlZmF1bHQpOgogICAgICAgICByZXR1cm4gZGVmYXVs
dAogCiAKLWRlZiBfaXNfdW5pdHRlc3RfdW5leHBlY3RlZF9zdWNjZXNzX2FfZmFpbHVyZSgpOgot
ICAgICIiIlJldHVybiBpZiB0aGUgdGVzdCBzdWl0ZSBzaG91bGQgZmFpbCBpZiBhbiBAZXhwZWN0
ZWRGYWlsdXJlIHVuaXR0ZXN0IHRlc3QgUEFTU0VTLgotCi0gICAgRnJvbSBodHRwczovL2RvY3Mu
cHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5pdHRlc3QuaHRtbD9oaWdobGlnaHQ9dW5pdHRlc3QjdW5p
dHRlc3QuVGVzdFJlc3VsdC53YXNTdWNjZXNzZnVsOgotICAgICAgICBDaGFuZ2VkIGluIHZlcnNp
b24gMy40OiBSZXR1cm5zIEZhbHNlIGlmIHRoZXJlIHdlcmUgYW55Ci0gICAgICAgIHVuZXhwZWN0
ZWRTdWNjZXNzZXMgZnJvbSB0ZXN0cyBtYXJrZWQgd2l0aCB0aGUgZXhwZWN0ZWRGYWlsdXJlKCkg
ZGVjb3JhdG9yLgotICAgICIiIgotICAgIHJldHVybiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA0
KQorZGVmIHNhZmVfaXNjbGFzcyhvYmo6IG9iamVjdCkgLT4gYm9vbDoKKyAgICAiIiJJZ25vcmUg
YW55IGV4Y2VwdGlvbiB2aWEgaXNpbnN0YW5jZSBvbiBQeXRob24gMy4iIiIKKyAgICB0cnk6Cisg
ICAgICAgIHJldHVybiBpbnNwZWN0LmlzY2xhc3Mob2JqKQorICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgIHJldHVybiBGYWxzZQogCiAKLWlmIF9QWTM6CitpZiBzeXMudmVyc2lvbl9pbmZv
IDwgKDMsIDUsIDIpOgogCi0gICAgZGVmIHNhZmVfc3RyKHYpOgotICAgICAgICAiIiJyZXR1cm5z
IHYgYXMgc3RyaW5nIiIiCi0gICAgICAgIHJldHVybiBzdHIodikKKyAgICBkZWYgb3ZlcmxvYWQo
Zik6ICAjIG5vcWE6IEY4MTEKKyAgICAgICAgcmV0dXJuIGYKIAogCitpZiBUWVBFX0NIRUNLSU5H
OgorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpOgorICAgICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgZmluYWwgYXMgZmluYWwKKyAgICBlbHNlOgorICAgICAgICBmcm9tIHR5cGluZ19l
eHRlbnNpb25zIGltcG9ydCBmaW5hbCBhcyBmaW5hbAorZWxpZiBzeXMudmVyc2lvbl9pbmZvID49
ICgzLCA4KToKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgZmluYWwgYXMgZmluYWwKIGVsc2U6CiAK
LSAgICBkZWYgc2FmZV9zdHIodik6Ci0gICAgICAgICIiInJldHVybnMgdiBhcyBzdHJpbmcsIGNv
bnZlcnRpbmcgdG8gYXNjaWkgaWYgbmVjZXNzYXJ5IiIiCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHJldHVybiBzdHIodikKLSAgICAgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKLSAgICAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHRleHRfdHlwZSk6Ci0gICAgICAgICAgICAgICAgdiA9
IHRleHRfdHlwZSh2KQotICAgICAgICAgICAgZXJyb3JzID0gInJlcGxhY2UiCi0gICAgICAgICAg
ICByZXR1cm4gdi5lbmNvZGUoInV0Zi04IiwgZXJyb3JzKQotCi0KLUNPTExFQ1RfRkFLRU1PRFVM
RV9BVFRSSUJVVEVTID0gKAotICAgICJDb2xsZWN0b3IiLAotICAgICJNb2R1bGUiLAotICAgICJH
ZW5lcmF0b3IiLAotICAgICJGdW5jdGlvbiIsCi0gICAgIkluc3RhbmNlIiwKLSAgICAiU2Vzc2lv
biIsCi0gICAgIkl0ZW0iLAotICAgICJDbGFzcyIsCi0gICAgIkZpbGUiLAotICAgICJfZmlsbGZ1
bmNhcmdzIiwKLSkKLQotCi1kZWYgX3NldHVwX2NvbGxlY3RfZmFrZW1vZHVsZSgpOgotICAgIGZy
b20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKLSAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICBweXRl
c3QuY29sbGVjdCA9IE1vZHVsZVR5cGUoInB5dGVzdC5jb2xsZWN0IikKLSAgICBweXRlc3QuY29s
bGVjdC5fX2FsbF9fID0gW10gICMgdXNlZCBmb3Igc2V0bnMKLSAgICBmb3IgYXR0ciBpbiBDT0xM
RUNUX0ZBS0VNT0RVTEVfQVRUUklCVVRFUzoKLSAgICAgICAgc2V0YXR0cihweXRlc3QuY29sbGVj
dCwgYXR0ciwgZ2V0YXR0cihweXRlc3QsIGF0dHIpKQotCi0KLWlmIF9QWTI6Ci0gICAgIyBXaXRo
b3V0IHRoaXMgdGhlIHRlc3RfZHVwZmlsZV9vbl90ZXh0aW8gd2lsbCBmYWlsLCBvdGhlcndpc2Ug
Q2FwdHVyZUlPIGNvdWxkIGRpcmVjdGx5IGluaGVyaXQgZnJvbSBTdHJpbmdJTy4KLSAgICBmcm9t
IHB5LmlvIGltcG9ydCBUZXh0SU8KLQotICAgIGNsYXNzIENhcHR1cmVJTyhUZXh0SU8pOgotCi0g
ICAgICAgIEBwcm9wZXJ0eQotICAgICAgICBkZWYgZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0YXR0cihzZWxmLCAiX2VuY29kaW5nIiwgIlVURi04IikKKyAgICBkZWYgZmlu
YWwoZik6ICAjIG5vcWE6IEY4MTEKKyAgICAgICAgcmV0dXJuIGYKIAogCitpZiBnZXRhdHRyKGF0
dHIsICJfX3ZlcnNpb25faW5mb19fIiwgKCkpID49ICgxOSwgMik6CisgICAgQVRUUlNfRVFfRklF
TEQgPSAiZXEiCiBlbHNlOgotICAgIGltcG9ydCBpbwotCi0gICAgY2xhc3MgQ2FwdHVyZUlPKGlv
LlRleHRJT1dyYXBwZXIpOgotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
ICAgIHN1cGVyKENhcHR1cmVJTywgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAgICAgaW8u
Qnl0ZXNJTygpLCBlbmNvZGluZz0iVVRGLTgiLCBuZXdsaW5lPSIiLCB3cml0ZV90aHJvdWdoPVRy
dWUKLSAgICAgICAgICAgICkKKyAgICBBVFRSU19FUV9GSUVMRCA9ICJjbXAiCiAKLSAgICAgICAg
ZGVmIGdldHZhbHVlKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnVmZmVyLmdldHZh
bHVlKCkuZGVjb2RlKCJVVEYtOCIpCiAKK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDgpOgor
ICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBjYWNoZWRfcHJvcGVydHkgYXMgY2FjaGVkX3Byb3Bl
cnR5CitlbHNlOgogCi1jbGFzcyBGdW5jYXJnbmFtZXNDb21wYXRBdHRyKG9iamVjdCk6Ci0gICAg
IiIiIGhlbHBlciBjbGFzcyBzbyB0aGF0IE1ldGFmdW5jLCBGdW5jdGlvbiBhbmQgRml4dHVyZVJl
cXVlc3QKLSAgICBkb24ndCBuZWVkIHRvIGVhY2ggZGVmaW5lIHRoZSAiZnVuY2FyZ25hbWVzIiBj
b21wYXRpYmlsaXR5IGF0dHJpYnV0ZS4KLSAgICAiIiIKLQotICAgIEBwcm9wZXJ0eQotICAgIGRl
ZiBmdW5jYXJnbmFtZXMoc2VsZik6Ci0gICAgICAgICIiIiBhbGlhcyBhdHRyaWJ1dGUgZm9yIGBg
Zml4dHVyZW5hbWVzYGAgZm9yIHByZS0yLjMgY29tcGF0aWJpbGl0eSIiIgotICAgICAgICByZXR1
cm4gc2VsZi5maXh0dXJlbmFtZXMKKyAgICBjbGFzcyBjYWNoZWRfcHJvcGVydHkoR2VuZXJpY1tf
UywgX1RdKToKKyAgICAgICAgX19zbG90c19fID0gKCJmdW5jIiwgIl9fZG9jX18iKQorCisgICAg
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jOiBDYWxsYWJsZVtbX1NdLCBfVF0pIC0+IE5vbmU6
CisgICAgICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgICAgICBzZWxmLl9fZG9jX18g
PSBmdW5jLl9fZG9jX18KKworICAgICAgICBAb3ZlcmxvYWQKKyAgICAgICAgZGVmIF9fZ2V0X18o
CisgICAgICAgICAgICBzZWxmLCBpbnN0YW5jZTogTm9uZSwgb3duZXI6IE9wdGlvbmFsWyJUeXBl
W19TXSJdID0gLi4uCisgICAgICAgICkgLT4gImNhY2hlZF9wcm9wZXJ0eVtfUywgX1RdIjoKKyAg
ICAgICAgICAgIC4uLgorCisgICAgICAgIEBvdmVybG9hZCAgIyBub3FhOiBGODExCisgICAgICAg
IGRlZiBfX2dldF9fKCAgIyBub3FhOiBGODExCisgICAgICAgICAgICBzZWxmLCBpbnN0YW5jZTog
X1MsIG93bmVyOiBPcHRpb25hbFsiVHlwZVtfU10iXSA9IC4uLgorICAgICAgICApIC0+IF9UOgor
ICAgICAgICAgICAgLi4uCisKKyAgICAgICAgZGVmIF9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93
bmVyPU5vbmUpOiAgIyBub3FhOiBGODExCisgICAgICAgICAgICBpZiBpbnN0YW5jZSBpcyBOb25l
OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICB2YWx1ZSA9IGluc3Rh
bmNlLl9fZGljdF9fW3NlbGYuZnVuYy5fX25hbWVfX10gPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUKKworCisjIFNvbWV0aW1lcyBhbiBhbGdvcml0aG0gbmVl
ZHMgYSBkaWN0IHdoaWNoIHlpZWxkcyBpdGVtcyBpbiB0aGUgb3JkZXIgaW4gd2hpY2gKKyMgdGhl
eSB3ZXJlIGluc2VydGVkIHdoZW4gaXRlcmF0ZWQuIFNpbmNlIFB5dGhvbiAzLjcsIGBkaWN0YCBw
cmVzZXJ2ZXMKKyMgaW5zZXJ0aW9uIG9yZGVyLiBTaW5jZSBgZGljdGAgaXMgZmFzdGVyIGFuZCB1
c2VzIGxlc3MgbWVtb3J5IHRoYW4KKyMgYE9yZGVyZWREaWN0YCwgcHJlZmVyIHRvIHVzZSBpdCBp
ZiBwb3NzaWJsZS4KK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDcpOgorICAgIG9yZGVyX3By
ZXNlcnZpbmdfZGljdCA9IGRpY3QKK2Vsc2U6CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
T3JkZXJlZERpY3QKKworICAgIG9yZGVyX3ByZXNlcnZpbmdfZGljdCA9IE9yZGVyZWREaWN0CisK
KworIyBQZXJmb3JtIGV4aGF1c3RpdmVuZXNzIGNoZWNraW5nLgorIworIyBDb25zaWRlciB0aGlz
IGV4YW1wbGU6CisjCisjICAgICBNeVVuaW9uID0gVW5pb25baW50LCBzdHJdCisjCisjICAgICBk
ZWYgaGFuZGxlKHg6IE15VW5pb24pIC0+IGludCB7CisjICAgICAgICAgaWYgaXNpbnN0YW5jZSh4
LCBpbnQpOgorIyAgICAgICAgICAgICByZXR1cm4gMQorIyAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZSh4LCBzdHIpOgorIyAgICAgICAgICAgICByZXR1cm4gMgorIyAgICAgICAgIGVsc2U6CisjICAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndW5yZWFjaGFibGUnKQorIworIyBOb3cgc3VwcG9z
ZSB3ZSBhZGQgYSBuZXcgdmFyaWFudDoKKyMKKyMgICAgIE15VW5pb24gPSBVbmlvbltpbnQsIHN0
ciwgYnl0ZXNdCisjCisjIEFmdGVyIGRvaW5nIHRoaXMsIHdlIG11c3QgcmVtZW1iZXIgb3Vyc2Vs
dmVzIHRvIGdvIGFuZCB1cGRhdGUgdGhlIGhhbmRsZQorIyBmdW5jdGlvbiB0byBoYW5kbGUgdGhl
IG5ldyB2YXJpYW50LgorIworIyBXaXRoIGBhc3NlcnRfbmV2ZXJgIHdlIGNhbiBkbyBiZXR0ZXI6
CisjCisjICAgICAvLyByYWlzZSBFeGNlcHRpb24oJ3VucmVhY2hhYmxlJykKKyMgICAgIHJldHVy
biBhc3NlcnRfbmV2ZXIoeCkKKyMKKyMgTm93LCBpZiB3ZSBmb3JnZXQgdG8gaGFuZGxlIHRoZSBu
ZXcgdmFyaWFudCwgdGhlIHR5cGUtY2hlY2tlciB3aWxsIGVtaXQgYQorIyBjb21waWxlLXRpbWUg
ZXJyb3IsIGluc3RlYWQgb2YgdGhlIHJ1bnRpbWUgZXJyb3Igd2Ugd291bGQgaGF2ZSBnb3R0ZW4K
KyMgcHJldmlvdXNseS4KKyMKKyMgVGhpcyBhbHNvIHdvcmsgZm9yIEVudW1zIChpZiB5b3UgdXNl
IGBpc2AgdG8gY29tcGFyZSkgYW5kIExpdGVyYWxzLgorZGVmIGFzc2VydF9uZXZlcih2YWx1ZTog
Ik5vUmV0dXJuIikgLT4gIk5vUmV0dXJuIjoKKyAgICBhc3NlcnQgRmFsc2UsICJVbmhhbmRsZWQg
dmFsdWU6IHt9ICh7fSkiLmZvcm1hdCh2YWx1ZSwgdHlwZSh2YWx1ZSkuX19uYW1lX18pCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvX19pbml0X18ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvX19pbml0X18ucHkKaW5kZXggMTEzNDhiODBkMGYw
Li5mODllZDM3MDI3YjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZp
Zy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvX19pbml0
X18ucHkKQEAgLTEsMTEwICsxLDIzOCBAQAotIiIiIGNvbW1hbmQgbGluZSBvcHRpb25zLCBpbmkt
ZmlsZSBhbmQgY29uZnRlc3QucHkgcHJvY2Vzc2luZy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisiIiJDb21tYW5k
IGxpbmUgb3B0aW9ucywgaW5pLWZpbGUgYW5kIGNvbmZ0ZXN0LnB5IHByb2Nlc3NpbmcuIiIiCiBp
bXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2ltcG9ydCBjb250ZXh0bGli
CitpbXBvcnQgY29weQoraW1wb3J0IGVudW0KK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgb3MKK2lt
cG9ydCByZQogaW1wb3J0IHNobGV4Ci1pbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgc3lzCiBpbXBv
cnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwotaW1wb3J0IGNvcHkKLWltcG9ydCBzaXgKK2Zyb20g
ZnVuY3Rvb2xzIGltcG9ydCBscnVfY2FjaGUKK2Zyb20gdHlwZXMgaW1wb3J0IFRyYWNlYmFja1R5
cGUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQor
ZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zy
b20gdHlwaW5nIGltcG9ydCBJTworZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCitmcm9tIHR5
cGluZyBpbXBvcnQgSXRlcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGlu
ZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBp
bmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0IFRleHRJTworZnJvbSB0eXBpbmcgaW1w
b3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0IGF0dHIKIGltcG9y
dCBweQorZnJvbSBwbHVnZ3kgaW1wb3J0IEhvb2tpbXBsTWFya2VyCitmcm9tIHBsdWdneSBpbXBv
cnQgSG9va3NwZWNNYXJrZXIKK2Zyb20gcGx1Z2d5IGltcG9ydCBQbHVnaW5NYW5hZ2VyCiAKLSMg
RE9OJ3QgaW1wb3J0IHB5dGVzdCBoZXJlIGJlY2F1c2UgaXQgY2F1c2VzIGltcG9ydCBjeWNsZSB0
cm91YmxlcwotaW1wb3J0IHN5cwotaW1wb3J0IG9zCitpbXBvcnQgX3B5dGVzdC5fY29kZQoraW1w
b3J0IF9weXRlc3QuZGVwcmVjYXRlZAoraW1wb3J0IF9weXRlc3QuaG9va3NwZWMKK2Zyb20gLmV4
Y2VwdGlvbnMgaW1wb3J0IFByaW50SGVscCBhcyBQcmludEhlbHAKK2Zyb20gLmV4Y2VwdGlvbnMg
aW1wb3J0IFVzYWdlRXJyb3IgYXMgVXNhZ2VFcnJvcgorZnJvbSAuZmluZHBhdGhzIGltcG9ydCBk
ZXRlcm1pbmVfc2V0dXAKK2Zyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbwor
ZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBmaWx0ZXJfdHJhY2ViYWNrCitmcm9tIF9weXRlc3Qu
X2lvIGltcG9ydCBUZXJtaW5hbFdyaXRlcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmlu
YWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGltcG9ydGxpYl9tZXRhZGF0YQorZnJvbSBf
cHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0Lm91dGNvbWVz
IGltcG9ydCBmYWlsCiBmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IFNraXBwZWQKK2Zyb20g
X3B5dGVzdC5wYXRobGliIGltcG9ydCBiZXN0cmVscGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIg
aW1wb3J0IGltcG9ydF9wYXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgSW1wb3J0TW9k
ZQorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5zdG9yZSBp
bXBvcnQgU3RvcmUKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RDb25m
aWdXYXJuaW5nCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5
cGUKKworICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBfVHJhY2ViYWNrU3R5bGUK
KyAgICBmcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0ZXIKKyAgICBm
cm9tIC5hcmdwYXJzaW5nIGltcG9ydCBBcmd1bWVudAorCisKK19QbHVnZ3lQbHVnaW4gPSBvYmpl
Y3QKKyIiIkEgdHlwZSB0byByZXByZXNlbnQgcGx1Z2luIG9iamVjdHMuCisKK1BsdWdpbnMgY2Fu
IGJlIGFueSBuYW1lc3BhY2UsIHNvIHdlIGNhbid0IG5hcnJvdyBpdCBkb3duIG11Y2gsIGJ1dCB3
ZSB1c2UgYW4KK2FsaWFzIHRvIG1ha2UgdGhlIGludGVudCBjbGVhci4KKworSWRlYWxseSB0aGlz
IHR5cGUgd291bGQgYmUgcHJvdmlkZWQgYnkgcGx1Z2d5IGl0c2VsZi4KKyIiIgogCi1pbXBvcnQg
X3B5dGVzdC5fY29kZQotaW1wb3J0IF9weXRlc3QuaG9va3NwZWMgICMgdGhlIGV4dGVuc2lvbiBw
b2ludCBkZWZpbml0aW9ucwotaW1wb3J0IF9weXRlc3QuYXNzZXJ0aW9uCi1mcm9tIHBsdWdneSBp
bXBvcnQgUGx1Z2luTWFuYWdlciwgSG9va2ltcGxNYXJrZXIsIEhvb2tzcGVjTWFya2VyCi1mcm9t
IF9weXRlc3QuY29tcGF0IGltcG9ydCBzYWZlX3N0cgotZnJvbSAuZXhjZXB0aW9ucyBpbXBvcnQg
VXNhZ2VFcnJvciwgUHJpbnRIZWxwCi1mcm9tIC5maW5kcGF0aHMgaW1wb3J0IGRldGVybWluZV9z
ZXR1cCwgZXhpc3RzCiAKIGhvb2tpbXBsID0gSG9va2ltcGxNYXJrZXIoInB5dGVzdCIpCiBob29r
c3BlYyA9IEhvb2tzcGVjTWFya2VyKCJweXRlc3QiKQogCi0jIHB5dGVzdCBzdGFydHVwCi0jCiAK
K0BmaW5hbAorY2xhc3MgRXhpdENvZGUoZW51bS5JbnRFbnVtKToKKyAgICAiIiJFbmNvZGVzIHRo
ZSB2YWxpZCBleGl0IGNvZGVzIGJ5IHB5dGVzdC4KIAotY2xhc3MgQ29uZnRlc3RJbXBvcnRGYWls
dXJlKEV4Y2VwdGlvbik6CisgICAgQ3VycmVudGx5IHVzZXJzIGFuZCBwbHVnaW5zIG1heSBzdXBw
bHkgb3RoZXIgZXhpdCBjb2RlcyBhcyB3ZWxsLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogNS4w
CisgICAgIiIiCisKKyAgICAjOiBUZXN0cyBwYXNzZWQuCisgICAgT0sgPSAwCisgICAgIzogVGVz
dHMgZmFpbGVkLgorICAgIFRFU1RTX0ZBSUxFRCA9IDEKKyAgICAjOiBweXRlc3Qgd2FzIGludGVy
cnVwdGVkLgorICAgIElOVEVSUlVQVEVEID0gMgorICAgICM6IEFuIGludGVybmFsIGVycm9yIGdv
dCBpbiB0aGUgd2F5LgorICAgIElOVEVSTkFMX0VSUk9SID0gMworICAgICM6IHB5dGVzdCB3YXMg
bWlzdXNlZC4KKyAgICBVU0FHRV9FUlJPUiA9IDQKKyAgICAjOiBweXRlc3QgY291bGRuJ3QgZmlu
ZCB0ZXN0cy4KKyAgICBOT19URVNUU19DT0xMRUNURUQgPSA1CiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcGF0aCwgZXhjaW5mbyk6Ci0gICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBw
YXRoLCBleGNpbmZvKQorCitjbGFzcyBDb25mdGVzdEltcG9ydEZhaWx1cmUoRXhjZXB0aW9uKToK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIHBhdGg6IHB5LnBhdGgu
bG9jYWwsCisgICAgICAgIGV4Y2luZm86IFR1cGxlWyJUeXBlW0V4Y2VwdGlvbl0iLCBFeGNlcHRp
b24sIFRyYWNlYmFja1R5cGVdLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2lu
aXRfXyhwYXRoLCBleGNpbmZvKQogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgICAgIHNl
bGYuZXhjaW5mbyA9IGV4Y2luZm8KIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBl
dHlwZSwgZXZhbHVlLCBldGIgPSBzZWxmLmV4Y2luZm8KLSAgICAgICAgZm9ybWF0dGVkID0gdHJh
Y2ViYWNrLmZvcm1hdF90YihldGIpCi0gICAgICAgICMgVGhlIGxldmVsIG9mIHRoZSB0cmFjZWJh
Y2tzIHdlIHdhbnQgdG8gcHJpbnQgaXMgaGFuZCBjcmFmdGVkIDooCi0gICAgICAgIHJldHVybiBy
ZXByKGV2YWx1ZSkgKyAiXG4iICsgIiIuam9pbihmb3JtYXR0ZWRbMjpdKQorICAgIGRlZiBfX3N0
cl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJ7fToge30gKGZyb20ge30pIi5mb3Jt
YXQoCisgICAgICAgICAgICBzZWxmLmV4Y2luZm9bMF0uX19uYW1lX18sIHNlbGYuZXhjaW5mb1sx
XSwgc2VsZi5wYXRoCisgICAgICAgICkKKworCitkZWYgZmlsdGVyX3RyYWNlYmFja19mb3JfY29u
ZnRlc3RfaW1wb3J0X2ZhaWx1cmUoCisgICAgZW50cnk6IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNr
RW50cnksCispIC0+IGJvb2w6CisgICAgIiIiRmlsdGVyIHRyYWNlYmFja3MgZW50cmllcyB3aGlj
aCBwb2ludCB0byBweXRlc3QgaW50ZXJuYWxzIG9yIGltcG9ydGxpYi4KKworICAgIE1ha2UgYSBz
cGVjaWFsIGNhc2UgZm9yIGltcG9ydGxpYiBiZWNhdXNlIHdlIHVzZSBpdCB0byBpbXBvcnQgdGVz
dCBtb2R1bGVzIGFuZCBjb25mdGVzdCBmaWxlcworICAgIGluIF9weXRlc3QucGF0aGxpYi5pbXBv
cnRfcGF0aC4KKyAgICAiIiIKKyAgICByZXR1cm4gZmlsdGVyX3RyYWNlYmFjayhlbnRyeSkgYW5k
ICJpbXBvcnRsaWIiIG5vdCBpbiBzdHIoZW50cnkucGF0aCkuc3BsaXQob3Muc2VwKQogCiAKLWRl
ZiBtYWluKGFyZ3M9Tm9uZSwgcGx1Z2lucz1Ob25lKToKLSAgICAiIiIgcmV0dXJuIGV4aXQgY29k
ZSwgYWZ0ZXIgcGVyZm9ybWluZyBhbiBpbi1wcm9jZXNzIHRlc3QgcnVuLgorZGVmIG1haW4oCisg
ICAgYXJnczogT3B0aW9uYWxbVW5pb25bTGlzdFtzdHJdLCBweS5wYXRoLmxvY2FsXV0gPSBOb25l
LAorICAgIHBsdWdpbnM6IE9wdGlvbmFsW1NlcXVlbmNlW1VuaW9uW3N0ciwgX1BsdWdneVBsdWdp
bl1dXSA9IE5vbmUsCispIC0+IFVuaW9uW2ludCwgRXhpdENvZGVdOgorICAgICIiIlBlcmZvcm0g
YW4gaW4tcHJvY2VzcyB0ZXN0IHJ1bi4KIAotICAgIDphcmcgYXJnczogbGlzdCBvZiBjb21tYW5k
IGxpbmUgYXJndW1lbnRzLgorICAgIDpwYXJhbSBhcmdzOiBMaXN0IG9mIGNvbW1hbmQgbGluZSBh
cmd1bWVudHMuCisgICAgOnBhcmFtIHBsdWdpbnM6IExpc3Qgb2YgcGx1Z2luIG9iamVjdHMgdG8g
YmUgYXV0by1yZWdpc3RlcmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIAotICAgIDphcmcgcGx1
Z2luczogbGlzdCBvZiBwbHVnaW4gb2JqZWN0cyB0byBiZSBhdXRvLXJlZ2lzdGVyZWQgZHVyaW5n
Ci0gICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbi4KKyAgICA6cmV0dXJuczogQW4gZXhp
dCBjb2RlLgogICAgICIiIgogICAgIHRyeToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY29u
ZmlnID0gX3ByZXBhcmVjb25maWcoYXJncywgcGx1Z2lucykKICAgICAgICAgZXhjZXB0IENvbmZ0
ZXN0SW1wb3J0RmFpbHVyZSBhcyBlOgotICAgICAgICAgICAgdHcgPSBweS5pby5UZXJtaW5hbFdy
aXRlcihzeXMuc3RkZXJyKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gdHJhY2ViYWNrLmZvcm1h
dF9leGNlcHRpb24oKmUuZXhjaW5mbyk6CisgICAgICAgICAgICBleGNfaW5mbyA9IEV4Y2VwdGlv
bkluZm8oZS5leGNpbmZvKQorICAgICAgICAgICAgdHcgPSBUZXJtaW5hbFdyaXRlcihzeXMuc3Rk
ZXJyKQorICAgICAgICAgICAgdHcubGluZSgKKyAgICAgICAgICAgICAgICAiSW1wb3J0RXJyb3Ig
d2hpbGUgbG9hZGluZyBjb25mdGVzdCAne2UucGF0aH0nLiIuZm9ybWF0KGU9ZSksIHJlZD1UcnVl
CisgICAgICAgICAgICApCisgICAgICAgICAgICBleGNfaW5mby50cmFjZWJhY2sgPSBleGNfaW5m
by50cmFjZWJhY2suZmlsdGVyKAorICAgICAgICAgICAgICAgIGZpbHRlcl90cmFjZWJhY2tfZm9y
X2NvbmZ0ZXN0X2ltcG9ydF9mYWlsdXJlCisgICAgICAgICAgICApCisgICAgICAgICAgICBleGNf
cmVwciA9ICgKKyAgICAgICAgICAgICAgICBleGNfaW5mby5nZXRyZXByKHN0eWxlPSJzaG9ydCIs
IGNoYWluPUZhbHNlKQorICAgICAgICAgICAgICAgIGlmIGV4Y19pbmZvLnRyYWNlYmFjaworICAg
ICAgICAgICAgICAgIGVsc2UgZXhjX2luZm8uZXhjb25seSgpCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBmb3JtYXR0ZWRfdGIgPSBzdHIoZXhjX3JlcHIpCisgICAgICAgICAgICBmb3IgbGlu
ZSBpbiBmb3JtYXR0ZWRfdGIuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgIHR3LmxpbmUo
bGluZS5yc3RyaXAoKSwgcmVkPVRydWUpCi0gICAgICAgICAgICB0dy5saW5lKCJFUlJPUjogY291
bGQgbm90IGxvYWQgJXNcbiIgJSAoZS5wYXRoLCksIHJlZD1UcnVlKQotICAgICAgICAgICAgcmV0
dXJuIDQKKyAgICAgICAgICAgIHJldHVybiBFeGl0Q29kZS5VU0FHRV9FUlJPUgogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBjb25maWcuaG9v
ay5weXRlc3RfY21kbGluZV9tYWluKGNvbmZpZz1jb25maWcpCisgICAgICAgICAgICAgICAgcmV0
ID0gY29uZmlnLmhvb2sucHl0ZXN0X2NtZGxpbmVfbWFpbigKKyAgICAgICAgICAgICAgICAgICAg
Y29uZmlnPWNvbmZpZworICAgICAgICAgICAgICAgICkgICMgdHlwZTogVW5pb25bRXhpdENvZGUs
IGludF0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBF
eGl0Q29kZShyZXQpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXQKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAg
ICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUoKQogICAgIGV4Y2VwdCBVc2FnZUVycm9y
IGFzIGU6Ci0gICAgICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoc3lzLnN0ZGVycikKKyAg
ICAgICAgdHcgPSBUZXJtaW5hbFdyaXRlcihzeXMuc3RkZXJyKQogICAgICAgICBmb3IgbXNnIGlu
IGUuYXJnczoKICAgICAgICAgICAgIHR3LmxpbmUoIkVSUk9SOiB7fVxuIi5mb3JtYXQobXNnKSwg
cmVkPVRydWUpCi0gICAgICAgIHJldHVybiA0CisgICAgICAgIHJldHVybiBFeGl0Q29kZS5VU0FH
RV9FUlJPUgogCiAKLWNsYXNzIGNtZGxpbmUob2JqZWN0KTogICMgTk9RQSBjb21wYXRpYmlsaXR5
IG5hbWVzcGFjZQorZGVmIGNvbnNvbGVfbWFpbigpIC0+IGludDoKKyAgICAiIiJUaGUgQ0xJIGVu
dHJ5IHBvaW50IG9mIHB5dGVzdC4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG1lYW50IGZv
ciBwcm9ncmFtbWFibGUgdXNlOyB1c2UgYG1haW4oKWAgaW5zdGVhZC4KKyAgICAiIiIKKyAgICAj
IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9zaWduYWwuaHRtbCNub3RlLW9uLXNp
Z3BpcGUKKyAgICB0cnk6CisgICAgICAgIGNvZGUgPSBtYWluKCkKKyAgICAgICAgc3lzLnN0ZG91
dC5mbHVzaCgpCisgICAgICAgIHJldHVybiBjb2RlCisgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJv
cjoKKyAgICAgICAgIyBQeXRob24gZmx1c2hlcyBzdGFuZGFyZCBzdHJlYW1zIG9uIGV4aXQ7IHJl
ZGlyZWN0IHJlbWFpbmluZyBvdXRwdXQKKyAgICAgICAgIyB0byBkZXZudWxsIHRvIGF2b2lkIGFu
b3RoZXIgQnJva2VuUGlwZUVycm9yIGF0IHNodXRkb3duCisgICAgICAgIGRldm51bGwgPSBvcy5v
cGVuKG9zLmRldm51bGwsIG9zLk9fV1JPTkxZKQorICAgICAgICBvcy5kdXAyKGRldm51bGwsIHN5
cy5zdGRvdXQuZmlsZW5vKCkpCisgICAgICAgIHJldHVybiAxICAjIFB5dGhvbiBleGl0cyB3aXRo
IGVycm9yIGNvZGUgMSBvbiBFUElQRQorCisKK2NsYXNzIGNtZGxpbmU6ICAjIGNvbXBhdGliaWxp
dHkgbmFtZXNwYWNlCiAgICAgbWFpbiA9IHN0YXRpY21ldGhvZChtYWluKQogCiAKLWRlZiBmaWxl
bmFtZV9hcmcocGF0aCwgb3B0bmFtZSk6Ci0gICAgIiIiIEFyZ3BhcnNlIHR5cGUgdmFsaWRhdG9y
IGZvciBmaWxlbmFtZSBhcmd1bWVudHMuCitkZWYgZmlsZW5hbWVfYXJnKHBhdGg6IHN0ciwgb3B0
bmFtZTogc3RyKSAtPiBzdHI6CisgICAgIiIiQXJncGFyc2UgdHlwZSB2YWxpZGF0b3IgZm9yIGZp
bGVuYW1lIGFyZ3VtZW50cy4KIAotICAgIDpwYXRoOiBwYXRoIG9mIGZpbGVuYW1lCi0gICAgOm9w
dG5hbWU6IG5hbWUgb2YgdGhlIG9wdGlvbgorICAgIDpwYXRoOiBQYXRoIG9mIGZpbGVuYW1lLgor
ICAgIDpvcHRuYW1lOiBOYW1lIG9mIHRoZSBvcHRpb24uCiAgICAgIiIiCiAgICAgaWYgb3MucGF0
aC5pc2RpcihwYXRoKToKICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigie30gbXVzdCBiZSBhIGZp
bGVuYW1lLCBnaXZlbjoge30iLmZvcm1hdChvcHRuYW1lLCBwYXRoKSkKICAgICByZXR1cm4gcGF0
aAogCiAKLWRlZiBkaXJlY3RvcnlfYXJnKHBhdGgsIG9wdG5hbWUpOgorZGVmIGRpcmVjdG9yeV9h
cmcocGF0aDogc3RyLCBvcHRuYW1lOiBzdHIpIC0+IHN0cjoKICAgICAiIiJBcmdwYXJzZSB0eXBl
IHZhbGlkYXRvciBmb3IgZGlyZWN0b3J5IGFyZ3VtZW50cy4KIAotICAgIDpwYXRoOiBwYXRoIG9m
IGRpcmVjdG9yeQotICAgIDpvcHRuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24KKyAgICA6cGF0aDog
UGF0aCBvZiBkaXJlY3RvcnkuCisgICAgOm9wdG5hbWU6IE5hbWUgb2YgdGhlIG9wdGlvbi4KICAg
ICAiIiIKICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAgcmFpc2UgVXNh
Z2VFcnJvcigie30gbXVzdCBiZSBhIGRpcmVjdG9yeSwgZ2l2ZW46IHt9Ii5mb3JtYXQob3B0bmFt
ZSwgcGF0aCkpCiAgICAgcmV0dXJuIHBhdGgKIAogCi1kZWZhdWx0X3BsdWdpbnMgPSAoCisjIFBs
dWdpbnMgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQgdmlhICItcCBubzpYIiBjdXJyZW50bHkuCitl
c3NlbnRpYWxfcGx1Z2lucyA9ICgKICAgICAibWFyayIsCiAgICAgIm1haW4iLAotICAgICJ0ZXJt
aW5hbCIsCiAgICAgInJ1bm5lciIsCi0gICAgInB5dGhvbiIsCiAgICAgImZpeHR1cmVzIiwKKyAg
ICAiaGVscGNvbmZpZyIsICAjIFByb3ZpZGVzIC1wLgorKQorCitkZWZhdWx0X3BsdWdpbnMgPSBl
c3NlbnRpYWxfcGx1Z2lucyArICgKKyAgICAicHl0aG9uIiwKKyAgICAidGVybWluYWwiLAogICAg
ICJkZWJ1Z2dpbmciLAogICAgICJ1bml0dGVzdCIsCiAgICAgImNhcHR1cmUiLApAQCAtMTEzLDM3
ICsyNDEsNTAgQEAgZGVmYXVsdF9wbHVnaW5zID0gKAogICAgICJtb25rZXlwYXRjaCIsCiAgICAg
InJlY3dhcm4iLAogICAgICJwYXN0ZWJpbiIsCi0gICAgImhlbHBjb25maWciLAogICAgICJub3Nl
IiwKICAgICAiYXNzZXJ0aW9uIiwKICAgICAianVuaXR4bWwiLAotICAgICJyZXN1bHRsb2ciLAog
ICAgICJkb2N0ZXN0IiwKICAgICAiY2FjaGVwcm92aWRlciIsCiAgICAgImZyZWV6ZV9zdXBwb3J0
IiwKICAgICAic2V0dXBvbmx5IiwKICAgICAic2V0dXBwbGFuIiwKKyAgICAic3RlcHdpc2UiLAog
ICAgICJ3YXJuaW5ncyIsCiAgICAgImxvZ2dpbmciLAorICAgICJyZXBvcnRzIiwKKyAgICAiZmF1
bHRoYW5kbGVyIiwKICkKIAotCiBidWlsdGluX3BsdWdpbnMgPSBzZXQoZGVmYXVsdF9wbHVnaW5z
KQogYnVpbHRpbl9wbHVnaW5zLmFkZCgicHl0ZXN0ZXIiKQogCiAKLWRlZiBnZXRfY29uZmlnKCk6
CitkZWYgZ2V0X2NvbmZpZygKKyAgICBhcmdzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0gTm9uZSwK
KyAgICBwbHVnaW5zOiBPcHRpb25hbFtTZXF1ZW5jZVtVbmlvbltzdHIsIF9QbHVnZ3lQbHVnaW5d
XV0gPSBOb25lLAorKSAtPiAiQ29uZmlnIjoKICAgICAjIHN1YnNlcXVlbnQgY2FsbHMgdG8gbWFp
biB3aWxsIGNyZWF0ZSBhIGZyZXNoIGluc3RhbmNlCiAgICAgcGx1Z2lubWFuYWdlciA9IFB5dGVz
dFBsdWdpbk1hbmFnZXIoKQotICAgIGNvbmZpZyA9IENvbmZpZyhwbHVnaW5tYW5hZ2VyKQorICAg
IGNvbmZpZyA9IENvbmZpZygKKyAgICAgICAgcGx1Z2lubWFuYWdlciwKKyAgICAgICAgaW52b2Nh
dGlvbl9wYXJhbXM9Q29uZmlnLkludm9jYXRpb25QYXJhbXMoCisgICAgICAgICAgICBhcmdzPWFy
Z3Mgb3IgKCksIHBsdWdpbnM9cGx1Z2lucywgZGlyPVBhdGguY3dkKCksCisgICAgICAgICksCisg
ICAgKQorCisgICAgaWYgYXJncyBpcyBub3QgTm9uZToKKyAgICAgICAgIyBIYW5kbGUgYW55ICIt
cCBubzpwbHVnaW4iIGFyZ3MuCisgICAgICAgIHBsdWdpbm1hbmFnZXIuY29uc2lkZXJfcHJlcGFy
c2UoYXJncywgZXhjbHVkZV9vbmx5PVRydWUpCisKICAgICBmb3Igc3BlYyBpbiBkZWZhdWx0X3Bs
dWdpbnM6CiAgICAgICAgIHBsdWdpbm1hbmFnZXIuaW1wb3J0X3BsdWdpbihzcGVjKQorCiAgICAg
cmV0dXJuIGNvbmZpZwogCiAKLWRlZiBnZXRfcGx1Z2luX21hbmFnZXIoKToKLSAgICAiIiIKLSAg
ICBPYnRhaW4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlCitkZWYgZ2V0X3BsdWdpbl9tYW5hZ2VyKCkg
LT4gIlB5dGVzdFBsdWdpbk1hbmFnZXIiOgorICAgICIiIk9idGFpbiBhIG5ldyBpbnN0YW5jZSBv
ZiB0aGUKICAgICA6cHk6Y2xhc3M6YF9weXRlc3QuY29uZmlnLlB5dGVzdFBsdWdpbk1hbmFnZXJg
LCB3aXRoIGRlZmF1bHQgcGx1Z2lucwogICAgIGFscmVhZHkgbG9hZGVkLgogCkBAIC0xNTMsNjYg
KzI5NCw3NiBAQCBkZWYgZ2V0X3BsdWdpbl9tYW5hZ2VyKCk6CiAgICAgcmV0dXJuIGdldF9jb25m
aWcoKS5wbHVnaW5tYW5hZ2VyCiAKIAotZGVmIF9wcmVwYXJlY29uZmlnKGFyZ3M9Tm9uZSwgcGx1
Z2lucz1Ob25lKToKLSAgICB3YXJuaW5nID0gTm9uZQorZGVmIF9wcmVwYXJlY29uZmlnKAorICAg
IGFyZ3M6IE9wdGlvbmFsW1VuaW9uW3B5LnBhdGgubG9jYWwsIExpc3Rbc3RyXV1dID0gTm9uZSwK
KyAgICBwbHVnaW5zOiBPcHRpb25hbFtTZXF1ZW5jZVtVbmlvbltzdHIsIF9QbHVnZ3lQbHVnaW5d
XV0gPSBOb25lLAorKSAtPiAiQ29uZmlnIjoKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAg
IGFyZ3MgPSBzeXMuYXJndlsxOl0KICAgICBlbGlmIGlzaW5zdGFuY2UoYXJncywgcHkucGF0aC5s
b2NhbCk6CiAgICAgICAgIGFyZ3MgPSBbc3RyKGFyZ3MpXQotICAgIGVsaWYgbm90IGlzaW5zdGFu
Y2UoYXJncywgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3Ms
IHN0cik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSBzdHJpbmcgb3IgYXJn
dW1lbnQgbGlzdDogJXIiICUgKGFyZ3MsKSkKLSAgICAgICAgYXJncyA9IHNobGV4LnNwbGl0KGFy
Z3MsIHBvc2l4PXN5cy5wbGF0Zm9ybSAhPSAid2luMzIiKQotICAgICAgICBmcm9tIF9weXRlc3Qg
aW1wb3J0IGRlcHJlY2F0ZWQKLQotICAgICAgICB3YXJuaW5nID0gZGVwcmVjYXRlZC5NQUlOX1NU
Ul9BUkdTCi0gICAgY29uZmlnID0gZ2V0X2NvbmZpZygpCisgICAgZWxpZiBub3QgaXNpbnN0YW5j
ZShhcmdzLCBsaXN0KToKKyAgICAgICAgbXNnID0gImBhcmdzYCBwYXJhbWV0ZXIgZXhwZWN0ZWQg
dG8gYmUgYSBsaXN0IG9mIHN0cmluZ3MsIGdvdDogeyFyfSAodHlwZToge30pIgorICAgICAgICBy
YWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdChhcmdzLCB0eXBlKGFyZ3MpKSkKKworICAgIGNvbmZp
ZyA9IGdldF9jb25maWcoYXJncywgcGx1Z2lucykKICAgICBwbHVnaW5tYW5hZ2VyID0gY29uZmln
LnBsdWdpbm1hbmFnZXIKICAgICB0cnk6CiAgICAgICAgIGlmIHBsdWdpbnM6CiAgICAgICAgICAg
ICBmb3IgcGx1Z2luIGluIHBsdWdpbnM6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShw
bHVnaW4sIHNpeC5zdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
cGx1Z2luLCBzdHIpOgogICAgICAgICAgICAgICAgICAgICBwbHVnaW5tYW5hZ2VyLmNvbnNpZGVy
X3BsdWdpbmFyZyhwbHVnaW4pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICAgICAgcGx1Z2lubWFuYWdlci5yZWdpc3RlcihwbHVnaW4pCi0gICAgICAgIGlmIHdhcm5pbmc6
Ci0gICAgICAgICAgICBjb25maWcud2FybigiQzEiLCB3YXJuaW5nKQotICAgICAgICByZXR1cm4g
cGx1Z2lubWFuYWdlci5ob29rLnB5dGVzdF9jbWRsaW5lX3BhcnNlKAorICAgICAgICBjb25maWcg
PSBwbHVnaW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2NtZGxpbmVfcGFyc2UoCiAgICAgICAgICAgICBw
bHVnaW5tYW5hZ2VyPXBsdWdpbm1hbmFnZXIsIGFyZ3M9YXJncwogICAgICAgICApCisgICAgICAg
IHJldHVybiBjb25maWcKICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgY29uZmln
Ll9lbnN1cmVfdW5jb25maWd1cmUoKQogICAgICAgICByYWlzZQogCiAKK0BmaW5hbAogY2xhc3Mg
UHl0ZXN0UGx1Z2luTWFuYWdlcihQbHVnaW5NYW5hZ2VyKToKLSAgICAiIiIKLSAgICBPdmVyd3Jp
dGVzIDpweTpjbGFzczpgcGx1Z2d5LlBsdWdpbk1hbmFnZXIgPHBsdWdneS5QbHVnaW5NYW5hZ2Vy
PmAgdG8gYWRkIHB5dGVzdC1zcGVjaWZpYwotICAgIGZ1bmN0aW9uYWxpdHk6CisgICAgIiIiQSA6
cHk6Y2xhc3M6YHBsdWdneS5QbHVnaW5NYW5hZ2VyIDxwbHVnZ3kuUGx1Z2luTWFuYWdlcj5gIHdp
dGgKKyAgICBhZGRpdGlvbmFsIHB5dGVzdC1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5OgogCi0gICAg
KiBsb2FkaW5nIHBsdWdpbnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBgYFBZVEVTVF9QTFVHSU5T
YGAgZW52IHZhcmlhYmxlIGFuZAotICAgICAgYGBweXRlc3RfcGx1Z2luc2BgIGdsb2JhbCB2YXJp
YWJsZXMgZm91bmQgaW4gcGx1Z2lucyBiZWluZyBsb2FkZWQ7Ci0gICAgKiBgYGNvbmZ0ZXN0LnB5
YGAgbG9hZGluZyBkdXJpbmcgc3RhcnQtdXA7CisgICAgKiBMb2FkaW5nIHBsdWdpbnMgZnJvbSB0
aGUgY29tbWFuZCBsaW5lLCBgYFBZVEVTVF9QTFVHSU5TYGAgZW52IHZhcmlhYmxlIGFuZAorICAg
ICAgYGBweXRlc3RfcGx1Z2luc2BgIGdsb2JhbCB2YXJpYWJsZXMgZm91bmQgaW4gcGx1Z2lucyBi
ZWluZyBsb2FkZWQuCisgICAgKiBgYGNvbmZ0ZXN0LnB5YGAgbG9hZGluZyBkdXJpbmcgc3RhcnQt
dXAuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHN1cGVyKFB5
dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCJweXRlc3QiKQotICAgICAgICBzZWxm
Ll9jb25mdGVzdF9wbHVnaW5zID0gc2V0KCkKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgaW1wb3J0IF9weXRlc3QuYXNzZXJ0aW9uCisKKyAgICAgICAgc3VwZXIoKS5f
X2luaXRfXygicHl0ZXN0IikKKyAgICAgICAgIyBUaGUgb2JqZWN0cyBhcmUgbW9kdWxlIG9iamVj
dHMsIG9ubHkgdXNlZCBnZW5lcmljYWxseS4KKyAgICAgICAgc2VsZi5fY29uZnRlc3RfcGx1Z2lu
cyA9IHNldCgpICAjIHR5cGU6IFNldFt0eXBlcy5Nb2R1bGVUeXBlXQogCi0gICAgICAgICMgc3Rh
dGUgcmVsYXRlZCB0byBsb2NhbCBjb25mdGVzdCBwbHVnaW5zCi0gICAgICAgIHNlbGYuX3BhdGgy
Y29uZm1vZHMgPSB7fQotICAgICAgICBzZWxmLl9jb25mdGVzdHBhdGgybW9kID0ge30KLSAgICAg
ICAgc2VsZi5fY29uZmN1dGRpciA9IE5vbmUKKyAgICAgICAgIyBTdGF0ZSByZWxhdGVkIHRvIGxv
Y2FsIGNvbmZ0ZXN0IHBsdWdpbnMuCisgICAgICAgIHNlbGYuX2RpcnBhdGgyY29uZm1vZHMgPSB7
fSAgIyB0eXBlOiBEaWN0W3B5LnBhdGgubG9jYWwsIExpc3RbdHlwZXMuTW9kdWxlVHlwZV1dCisg
ICAgICAgIHNlbGYuX2NvbmZ0ZXN0cGF0aDJtb2QgPSB7fSAgIyB0eXBlOiBEaWN0W1BhdGgsIHR5
cGVzLk1vZHVsZVR5cGVdCisgICAgICAgIHNlbGYuX2NvbmZjdXRkaXIgPSBOb25lICAjIHR5cGU6
IE9wdGlvbmFsW3B5LnBhdGgubG9jYWxdCiAgICAgICAgIHNlbGYuX25vY29uZnRlc3QgPSBGYWxz
ZQotICAgICAgICBzZWxmLl9kdXBsaWNhdGVwYXRocyA9IHNldCgpCisgICAgICAgIHNlbGYuX2R1
cGxpY2F0ZXBhdGhzID0gc2V0KCkgICMgdHlwZTogU2V0W3B5LnBhdGgubG9jYWxdCisKKyAgICAg
ICAgIyBwbHVnaW5zIHRoYXQgd2VyZSBleHBsaWNpdGx5IHNraXBwZWQgd2l0aCBweXRlc3Quc2tp
cAorICAgICAgICAjIGxpc3Qgb2YgKG1vZHVsZSBuYW1lLCBza2lwIHJlYXNvbikKKyAgICAgICAg
IyBwcmV2aW91c2x5IHdlIHdvdWxkIGlzc3VlIGEgd2FybmluZyB3aGVuIGEgcGx1Z2luIHdhcyBz
a2lwcGVkLCBidXQKKyAgICAgICAgIyBzaW5jZSB3ZSByZWZhY3RvcmVkIHdhcm5pbmdzIGFzIGZp
cnN0IGNpdGl6ZW5zIG9mIENvbmZpZywgdGhleSBhcmUKKyAgICAgICAgIyBqdXN0IHN0b3JlZCBo
ZXJlIHRvIGJlIHVzZWQgbGF0ZXIuCisgICAgICAgIHNlbGYuc2tpcHBlZF9wbHVnaW5zID0gW10g
ICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIHN0cl1dCiAKICAgICAgICAgc2VsZi5hZGRfaG9va3Nw
ZWNzKF9weXRlc3QuaG9va3NwZWMpCiAgICAgICAgIHNlbGYucmVnaXN0ZXIoc2VsZikKICAgICAg
ICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZVEVTVF9ERUJVRyIpOgotICAgICAgICAgICAgZXJyID0g
c3lzLnN0ZGVycgotICAgICAgICAgICAgZW5jb2RpbmcgPSBnZXRhdHRyKGVyciwgImVuY29kaW5n
IiwgInV0ZjgiKQorICAgICAgICAgICAgZXJyID0gc3lzLnN0ZGVyciAgIyB0eXBlOiBJT1tzdHJd
CisgICAgICAgICAgICBlbmNvZGluZyA9IGdldGF0dHIoZXJyLCAiZW5jb2RpbmciLCAidXRmOCIp
ICAjIHR5cGU6IHN0cgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVyciA9IHB5
LmlvLmR1cGZpbGUoZXJyLCBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgICAgICAgICBlcnIg
PSBvcGVuKAorICAgICAgICAgICAgICAgICAgICBvcy5kdXAoZXJyLmZpbGVubygpKSwgbW9kZT1l
cnIubW9kZSwgYnVmZmVyaW5nPTEsIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgcGFzcwog
ICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LnNldHdyaXRlcihlcnIud3JpdGUpCkBAIC0yMjAs
NzEgKzM3MSw2OSBAQCBjbGFzcyBQeXRlc3RQbHVnaW5NYW5hZ2VyKFBsdWdpbk1hbmFnZXIpOgog
CiAgICAgICAgICMgQ29uZmlnLl9jb25zaWRlcl9pbXBvcnRob29rIHdpbGwgc2V0IGEgcmVhbCBv
YmplY3QgaWYgcmVxdWlyZWQuCiAgICAgICAgIHNlbGYucmV3cml0ZV9ob29rID0gX3B5dGVzdC5h
c3NlcnRpb24uRHVtbXlSZXdyaXRlSG9vaygpCi0gICAgICAgICMgVXNlZCB0byBrbm93IHdoZW4g
d2UgYXJlIGltcG9ydGluZyBjb25mdGVzdHMgYWZ0ZXIgdGhlIHB5dGVzdF9jb25maWd1cmUgc3Rh
Z2UKKyAgICAgICAgIyBVc2VkIHRvIGtub3cgd2hlbiB3ZSBhcmUgaW1wb3J0aW5nIGNvbmZ0ZXN0
cyBhZnRlciB0aGUgcHl0ZXN0X2NvbmZpZ3VyZSBzdGFnZS4KICAgICAgICAgc2VsZi5fY29uZmln
dXJlZCA9IEZhbHNlCiAKLSAgICBkZWYgYWRkaG9va3Moc2VsZiwgbW9kdWxlX29yX2NsYXNzKToK
LSAgICAgICAgIiIiCi0gICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAyLjgKLQotICAgICAgICBVc2Ug
OnB5Om1ldGg6YHBsdWdneS5QbHVnaW5NYW5hZ2VyLmFkZF9ob29rc3BlY3MgPFBsdWdpbk1hbmFn
ZXIuYWRkX2hvb2tzcGVjcz5gCi0gICAgICAgIGluc3RlYWQuCi0gICAgICAgICIiIgotICAgICAg
ICB3YXJuaW5nID0gZGljdCgKLSAgICAgICAgICAgIGNvZGU9IkkyIiwKLSAgICAgICAgICAgIGZz
bG9jYXRpb249X3B5dGVzdC5fY29kZS5nZXRmc2xpbmVubyhzeXMuX2dldGZyYW1lKDEpKSwKLSAg
ICAgICAgICAgIG5vZGVpZD1Ob25lLAotICAgICAgICAgICAgbWVzc2FnZT0idXNlIHBsdWdpbm1h
bmFnZXIuYWRkX2hvb2tzcGVjcyBpbnN0ZWFkIG9mICIKLSAgICAgICAgICAgICJkZXByZWNhdGVk
IGFkZGhvb2tzKCkgbWV0aG9kLiIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5fd2Fybih3YXJu
aW5nKQotICAgICAgICByZXR1cm4gc2VsZi5hZGRfaG9va3NwZWNzKG1vZHVsZV9vcl9jbGFzcykK
LQotICAgIGRlZiBwYXJzZV9ob29raW1wbF9vcHRzKHNlbGYsIHBsdWdpbiwgbmFtZSk6Ci0gICAg
ICAgICMgcHl0ZXN0IGhvb2tzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCBweXRlc3RfCisgICAg
ZGVmIHBhcnNlX2hvb2tpbXBsX29wdHMoc2VsZiwgcGx1Z2luOiBfUGx1Z2d5UGx1Z2luLCBuYW1l
OiBzdHIpOgorICAgICAgICAjIHB5dGVzdCBob29rcyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGgg
InB5dGVzdF8iLAogICAgICAgICAjIHNvIHdlIGF2b2lkIGFjY2Vzc2luZyBwb3NzaWJseSBub24t
cmVhZGFibGUgYXR0cmlidXRlcwotICAgICAgICAjIChzZWUgaXNzdWUgIzEwNzMpCisgICAgICAg
ICMgKHNlZSBpc3N1ZSAjMTA3MykuCiAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoInB5
dGVzdF8iKToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIGlnbm9yZSBzb21lIGhpc3Rv
cmljIHNwZWNpYWwgbmFtZXMgd2hpY2ggY2FuIG5vdCBiZSBob29rcyBhbnl3YXkKLSAgICAgICAg
aWYgbmFtZSA9PSAicHl0ZXN0X3BsdWdpbnMiIG9yIG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0X2Z1
bmNhcmdfXyIpOgorICAgICAgICAjIElnbm9yZSBuYW1lcyB3aGljaCBjYW4gbm90IGJlIGhvb2tz
LgorICAgICAgICBpZiBuYW1lID09ICJweXRlc3RfcGx1Z2lucyI6CiAgICAgICAgICAgICByZXR1
cm4KIAogICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHBsdWdpbiwgbmFtZSkKLSAgICAgICAgb3B0
cyA9IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLnBhcnNlX2hvb2tpbXBsX29wdHMo
cGx1Z2luLCBuYW1lKQorICAgICAgICBvcHRzID0gc3VwZXIoKS5wYXJzZV9ob29raW1wbF9vcHRz
KHBsdWdpbiwgbmFtZSkKKworICAgICAgICAjIENvbnNpZGVyIG9ubHkgYWN0dWFsIGZ1bmN0aW9u
cyBmb3IgaG9va3MgKCMzNzc1KS4KKyAgICAgICAgaWYgbm90IGluc3BlY3QuaXNyb3V0aW5lKG1l
dGhvZCk6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIGNvbGxlY3QgdW5tYXJrZWQg
aG9va3MgYXMgbG9uZyBhcyB0aGV5IGhhdmUgdGhlIGBweXRlc3RfJyBwcmVmaXgKKyAgICAgICAg
IyBDb2xsZWN0IHVubWFya2VkIGhvb2tzIGFzIGxvbmcgYXMgdGhleSBoYXZlIHRoZSBgcHl0ZXN0
XycgcHJlZml4LgogICAgICAgICBpZiBvcHRzIGlzIE5vbmUgYW5kIG5hbWUuc3RhcnRzd2l0aCgi
cHl0ZXN0XyIpOgogICAgICAgICAgICAgb3B0cyA9IHt9Ci0KICAgICAgICAgaWYgb3B0cyBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICMgVE9ETzogRGVwcmVjYXRpb25XYXJuaW5nLCBwZW9wbGUg
c2hvdWxkIHVzZSBob29raW1wbAorICAgICAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0
ZXN0LWRldi9weXRlc3QvaXNzdWVzLzQ1NjIKKyAgICAgICAgICAgIGtub3duX21hcmtzID0ge20u
bmFtZSBmb3IgbSBpbiBnZXRhdHRyKG1ldGhvZCwgInB5dGVzdG1hcmsiLCBbXSl9CisKICAgICAg
ICAgICAgIGZvciBuYW1lIGluICgidHJ5Zmlyc3QiLCAidHJ5bGFzdCIsICJvcHRpb25hbGhvb2si
LCAiaG9va3dyYXBwZXIiKToKLSAgICAgICAgICAgICAgICBvcHRzLnNldGRlZmF1bHQobmFtZSwg
aGFzYXR0cihtZXRob2QsIG5hbWUpKQorICAgICAgICAgICAgICAgIG9wdHMuc2V0ZGVmYXVsdChu
YW1lLCBoYXNhdHRyKG1ldGhvZCwgbmFtZSkgb3IgbmFtZSBpbiBrbm93bl9tYXJrcykKICAgICAg
ICAgcmV0dXJuIG9wdHMKIAotICAgIGRlZiBwYXJzZV9ob29rc3BlY19vcHRzKHNlbGYsIG1vZHVs
ZV9vcl9jbGFzcywgbmFtZSk6Ci0gICAgICAgIG9wdHMgPSBzdXBlcihQeXRlc3RQbHVnaW5NYW5h
Z2VyLCBzZWxmKS5wYXJzZV9ob29rc3BlY19vcHRzKAotICAgICAgICAgICAgbW9kdWxlX29yX2Ns
YXNzLCBuYW1lCi0gICAgICAgICkKKyAgICBkZWYgcGFyc2VfaG9va3NwZWNfb3B0cyhzZWxmLCBt
b2R1bGVfb3JfY2xhc3MsIG5hbWU6IHN0cik6CisgICAgICAgIG9wdHMgPSBzdXBlcigpLnBhcnNl
X2hvb2tzcGVjX29wdHMobW9kdWxlX29yX2NsYXNzLCBuYW1lKQogICAgICAgICBpZiBvcHRzIGlz
IE5vbmU6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1vZHVsZV9vcl9jbGFzcywgbmFt
ZSkKKwogICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJweXRlc3RfIik6CisgICAgICAg
ICAgICAgICAgIyB0b2RvOiBkZXByZWNhdGUgaG9va3NwZWMgaGFja3MKKyAgICAgICAgICAgICAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNDU2MgorICAg
ICAgICAgICAgICAgIGtub3duX21hcmtzID0ge20ubmFtZSBmb3IgbSBpbiBnZXRhdHRyKG1ldGhv
ZCwgInB5dGVzdG1hcmsiLCBbXSl9CiAgICAgICAgICAgICAgICAgb3B0cyA9IHsKLSAgICAgICAg
ICAgICAgICAgICAgImZpcnN0cmVzdWx0IjogaGFzYXR0cihtZXRob2QsICJmaXJzdHJlc3VsdCIp
LAotICAgICAgICAgICAgICAgICAgICAiaGlzdG9yaWMiOiBoYXNhdHRyKG1ldGhvZCwgImhpc3Rv
cmljIiksCisgICAgICAgICAgICAgICAgICAgICJmaXJzdHJlc3VsdCI6IGhhc2F0dHIobWV0aG9k
LCAiZmlyc3RyZXN1bHQiKQorICAgICAgICAgICAgICAgICAgICBvciAiZmlyc3RyZXN1bHQiIGlu
IGtub3duX21hcmtzLAorICAgICAgICAgICAgICAgICAgICAiaGlzdG9yaWMiOiBoYXNhdHRyKG1l
dGhvZCwgImhpc3RvcmljIikKKyAgICAgICAgICAgICAgICAgICAgb3IgImhpc3RvcmljIiBpbiBr
bm93bl9tYXJrcywKICAgICAgICAgICAgICAgICB9CiAgICAgICAgIHJldHVybiBvcHRzCiAKLSAg
ICBkZWYgcmVnaXN0ZXIoc2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgotICAgICAgICBpZiBuYW1l
IGluIFsicHl0ZXN0X2NhdGNobG9nIiwgInB5dGVzdF9jYXB0dXJlbG9nIl06Ci0gICAgICAgICAg
ICBzZWxmLl93YXJuKAotICAgICAgICAgICAgICAgICJ7fSBwbHVnaW4gaGFzIGJlZW4gbWVyZ2Vk
IGludG8gdGhlIGNvcmUsICIKLSAgICAgICAgICAgICAgICAicGxlYXNlIHJlbW92ZSBpdCBmcm9t
IHlvdXIgcmVxdWlyZW1lbnRzLiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBuYW1lLnJl
cGxhY2UoIl8iLCAiLSIpCisgICAgZGVmIHJlZ2lzdGVyKAorICAgICAgICBzZWxmLCBwbHVnaW46
IF9QbHVnZ3lQbHVnaW4sIG5hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgKSAtPiBPcHRp
b25hbFtzdHJdOgorICAgICAgICBpZiBuYW1lIGluIF9weXRlc3QuZGVwcmVjYXRlZC5ERVBSRUNB
VEVEX0VYVEVSTkFMX1BMVUdJTlM6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAg
ICAgICAgICAgIFB5dGVzdENvbmZpZ1dhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgICJ7fSBw
bHVnaW4gaGFzIGJlZW4gbWVyZ2VkIGludG8gdGhlIGNvcmUsICIKKyAgICAgICAgICAgICAgICAg
ICAgInBsZWFzZSByZW1vdmUgaXQgZnJvbSB5b3VyIHJlcXVpcmVtZW50cy4iLmZvcm1hdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUucmVwbGFjZSgiXyIsICItIikKKyAgICAgICAgICAg
ICAgICAgICAgKQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKLSAgICAgICAgICAg
IHJldHVybgotICAgICAgICByZXQgPSBzdXBlcihQeXRlc3RQbHVnaW5NYW5hZ2VyLCBzZWxmKS5y
ZWdpc3RlcihwbHVnaW4sIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBy
ZXQgPSBzdXBlcigpLnJlZ2lzdGVyKHBsdWdpbiwgbmFtZSkgICMgdHlwZTogT3B0aW9uYWxbc3Ry
XQogICAgICAgICBpZiByZXQ6CiAgICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X3BsdWdpbl9y
ZWdpc3RlcmVkLmNhbGxfaGlzdG9yaWMoCiAgICAgICAgICAgICAgICAga3dhcmdzPWRpY3QocGx1
Z2luPXBsdWdpbiwgbWFuYWdlcj1zZWxmKQpAQCAtMjk0LDE3ICs0NDMsMTkgQEAgY2xhc3MgUHl0
ZXN0UGx1Z2luTWFuYWdlcihQbHVnaW5NYW5hZ2VyKToKICAgICAgICAgICAgICAgICBzZWxmLmNv
bnNpZGVyX21vZHVsZShwbHVnaW4pCiAgICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiBnZXRw
bHVnaW4oc2VsZiwgbmFtZSk6Ci0gICAgICAgICMgc3VwcG9ydCBkZXByZWNhdGVkIG5hbWluZyBi
ZWNhdXNlIHBsdWdpbnMgKHhkaXN0IGUuZy4pIHVzZSBpdAotICAgICAgICByZXR1cm4gc2VsZi5n
ZXRfcGx1Z2luKG5hbWUpCisgICAgZGVmIGdldHBsdWdpbihzZWxmLCBuYW1lOiBzdHIpOgorICAg
ICAgICAjIFN1cHBvcnQgZGVwcmVjYXRlZCBuYW1pbmcgYmVjYXVzZSBwbHVnaW5zICh4ZGlzdCBl
LmcuKSB1c2UgaXQuCisgICAgICAgIHBsdWdpbiA9IHNlbGYuZ2V0X3BsdWdpbihuYW1lKSAgIyB0
eXBlOiBPcHRpb25hbFtfUGx1Z2d5UGx1Z2luXQorICAgICAgICByZXR1cm4gcGx1Z2luCiAKLSAg
ICBkZWYgaGFzcGx1Z2luKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0
aGUgcGx1Z2luIHdpdGggdGhlIGdpdmVuIG5hbWUgaXMgcmVnaXN0ZXJlZC4iIiIKKyAgICBkZWYg
aGFzcGx1Z2luKHNlbGYsIG5hbWU6IHN0cikgLT4gYm9vbDoKKyAgICAgICAgIiIiUmV0dXJuIHdo
ZXRoZXIgYSBwbHVnaW4gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkLiIiIgogICAg
ICAgICByZXR1cm4gYm9vbChzZWxmLmdldF9wbHVnaW4obmFtZSkpCiAKLSAgICBkZWYgcHl0ZXN0
X2NvbmZpZ3VyZShzZWxmLCBjb25maWcpOgorICAgIGRlZiBweXRlc3RfY29uZmlndXJlKHNlbGYs
IGNvbmZpZzogIkNvbmZpZyIpIC0+IE5vbmU6CisgICAgICAgICIiIjptZXRhIHByaXZhdGU6IiIi
CiAgICAgICAgICMgWFhYIG5vdyB0aGF0IHRoZSBwbHVnaW5tYW5hZ2VyIGV4cG9zZXMgaG9va2lt
cGwodHJ5Zmlyc3QuLi4pCi0gICAgICAgICMgd2Ugc2hvdWxkIHJlbW92ZSB0cnlmaXJzdC90cnls
YXN0IGFzIG1hcmtlcnMKKyAgICAgICAgIyB3ZSBzaG91bGQgcmVtb3ZlIHRyeWZpcnN0L3RyeWxh
c3QgYXMgbWFya2Vycy4KICAgICAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCiAgICAgICAg
ICAgICAibWFya2VycyIsCiAgICAgICAgICAgICAidHJ5Zmlyc3Q6IG1hcmsgYSBob29rIGltcGxl
bWVudGF0aW9uIGZ1bmN0aW9uIHN1Y2ggdGhhdCB0aGUgIgpAQCAtMzE3LDc3ICs0NjgsODAgQEAg
Y2xhc3MgUHl0ZXN0UGx1Z2luTWFuYWdlcihQbHVnaW5NYW5hZ2VyKToKICAgICAgICAgKQogICAg
ICAgICBzZWxmLl9jb25maWd1cmVkID0gVHJ1ZQogCi0gICAgZGVmIF93YXJuKHNlbGYsIG1lc3Nh
Z2UpOgotICAgICAgICBrd2FyZ3MgPSBtZXNzYWdlIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgZGlj
dCkgZWxzZSB7Ci0gICAgICAgICAgICAiY29kZSI6ICJJMSIsICJtZXNzYWdlIjogbWVzc2FnZSwg
ImZzbG9jYXRpb24iOiBOb25lLCAibm9kZWlkIjogTm9uZQotICAgICAgICB9Ci0gICAgICAgIHNl
bGYuaG9vay5weXRlc3RfbG9nd2FybmluZy5jYWxsX2hpc3RvcmljKGt3YXJncz1rd2FyZ3MpCi0K
ICAgICAjCi0gICAgIyBpbnRlcm5hbCBBUEkgZm9yIGxvY2FsIGNvbmZ0ZXN0IHBsdWdpbiBoYW5k
bGluZworICAgICMgSW50ZXJuYWwgQVBJIGZvciBsb2NhbCBjb25mdGVzdCBwbHVnaW4gaGFuZGxp
bmcuCiAgICAgIwotICAgIGRlZiBfc2V0X2luaXRpYWxfY29uZnRlc3RzKHNlbGYsIG5hbWVzcGFj
ZSk6Ci0gICAgICAgICIiIiBsb2FkIGluaXRpYWwgY29uZnRlc3QgZmlsZXMgZ2l2ZW4gYSBwcmVw
YXJzZWQgIm5hbWVzcGFjZSIuCi0gICAgICAgICAgICBBcyBjb25mdGVzdCBmaWxlcyBtYXkgYWRk
IHRoZWlyIG93biBjb21tYW5kIGxpbmUgb3B0aW9ucwotICAgICAgICAgICAgd2hpY2ggaGF2ZSBh
cmd1bWVudHMgKCctLW15LW9wdCBzb21lcGF0aCcpIHdlIG1pZ2h0IGdldCBzb21lCi0gICAgICAg
ICAgICBmYWxzZSBwb3NpdGl2ZXMuICBBbGwgYnVpbHRpbiBhbmQgM3JkIHBhcnR5IHBsdWdpbnMg
d2lsbCBoYXZlCi0gICAgICAgICAgICBiZWVuIGxvYWRlZCwgaG93ZXZlciwgc28gY29tbW9uIG9w
dGlvbnMgd2lsbCBub3QgY29uZnVzZSBvdXIgbG9naWMKLSAgICAgICAgICAgIGhlcmUuCisgICAg
ZGVmIF9zZXRfaW5pdGlhbF9jb25mdGVzdHMoc2VsZiwgbmFtZXNwYWNlOiBhcmdwYXJzZS5OYW1l
c3BhY2UpIC0+IE5vbmU6CisgICAgICAgICIiIkxvYWQgaW5pdGlhbCBjb25mdGVzdCBmaWxlcyBn
aXZlbiBhIHByZXBhcnNlZCAibmFtZXNwYWNlIi4KKworICAgICAgICBBcyBjb25mdGVzdCBmaWxl
cyBtYXkgYWRkIHRoZWlyIG93biBjb21tYW5kIGxpbmUgb3B0aW9ucyB3aGljaCBoYXZlCisgICAg
ICAgIGFyZ3VtZW50cyAoJy0tbXktb3B0IHNvbWVwYXRoJykgd2UgbWlnaHQgZ2V0IHNvbWUgZmFs
c2UgcG9zaXRpdmVzLgorICAgICAgICBBbGwgYnVpbHRpbiBhbmQgM3JkIHBhcnR5IHBsdWdpbnMg
d2lsbCBoYXZlIGJlZW4gbG9hZGVkLCBob3dldmVyLCBzbworICAgICAgICBjb21tb24gb3B0aW9u
cyB3aWxsIG5vdCBjb25mdXNlIG91ciBsb2dpYyBoZXJlLgogICAgICAgICAiIiIKICAgICAgICAg
Y3VycmVudCA9IHB5LnBhdGgubG9jYWwoKQotICAgICAgICBzZWxmLl9jb25mY3V0ZGlyID0gY3Vy
cmVudC5qb2luKAotICAgICAgICAgICAgbmFtZXNwYWNlLmNvbmZjdXRkaXIsIGFicz1UcnVlCi0g
ICAgICAgICkgaWYgbmFtZXNwYWNlLmNvbmZjdXRkaXIgZWxzZSBOb25lCisgICAgICAgIHNlbGYu
X2NvbmZjdXRkaXIgPSAoCisgICAgICAgICAgICBjdXJyZW50LmpvaW4obmFtZXNwYWNlLmNvbmZj
dXRkaXIsIGFicz1UcnVlKQorICAgICAgICAgICAgaWYgbmFtZXNwYWNlLmNvbmZjdXRkaXIKKyAg
ICAgICAgICAgIGVsc2UgTm9uZQorICAgICAgICApCiAgICAgICAgIHNlbGYuX25vY29uZnRlc3Qg
PSBuYW1lc3BhY2Uubm9jb25mdGVzdAorICAgICAgICBzZWxmLl91c2luZ19weWFyZ3MgPSBuYW1l
c3BhY2UucHlhcmdzCiAgICAgICAgIHRlc3RwYXRocyA9IG5hbWVzcGFjZS5maWxlX29yX2Rpcgog
ICAgICAgICBmb3VuZGFuY2hvciA9IEZhbHNlCi0gICAgICAgIGZvciBwYXRoIGluIHRlc3RwYXRo
czoKLSAgICAgICAgICAgIHBhdGggPSBzdHIocGF0aCkKKyAgICAgICAgZm9yIHRlc3RwYXRoIGlu
IHRlc3RwYXRoczoKKyAgICAgICAgICAgIHBhdGggPSBzdHIodGVzdHBhdGgpCiAgICAgICAgICAg
ICAjIHJlbW92ZSBub2RlLWlkIHN5bnRheAogICAgICAgICAgICAgaSA9IHBhdGguZmluZCgiOjoi
KQogICAgICAgICAgICAgaWYgaSAhPSAtMToKICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs6
aV0KICAgICAgICAgICAgIGFuY2hvciA9IGN1cnJlbnQuam9pbihwYXRoLCBhYnM9MSkKLSAgICAg
ICAgICAgIGlmIGV4aXN0cyhhbmNob3IpOiAgIyB3ZSBmb3VuZCBzb21lIGZpbGUgb2JqZWN0Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fdHJ5X2xvYWRfY29uZnRlc3QoYW5jaG9yKQorICAgICAgICAg
ICAgaWYgYW5jaG9yLmV4aXN0cygpOiAgIyB3ZSBmb3VuZCBzb21lIGZpbGUgb2JqZWN0CisgICAg
ICAgICAgICAgICAgc2VsZi5fdHJ5X2xvYWRfY29uZnRlc3QoYW5jaG9yLCBuYW1lc3BhY2UuaW1w
b3J0bW9kZSkKICAgICAgICAgICAgICAgICBmb3VuZGFuY2hvciA9IFRydWUKICAgICAgICAgaWYg
bm90IGZvdW5kYW5jaG9yOgotICAgICAgICAgICAgc2VsZi5fdHJ5X2xvYWRfY29uZnRlc3QoY3Vy
cmVudCkKKyAgICAgICAgICAgIHNlbGYuX3RyeV9sb2FkX2NvbmZ0ZXN0KGN1cnJlbnQsIG5hbWVz
cGFjZS5pbXBvcnRtb2RlKQogCi0gICAgZGVmIF90cnlfbG9hZF9jb25mdGVzdChzZWxmLCBhbmNo
b3IpOgotICAgICAgICBzZWxmLl9nZXRjb25mdGVzdG1vZHVsZXMoYW5jaG9yKQorICAgIGRlZiBf
dHJ5X2xvYWRfY29uZnRlc3QoCisgICAgICAgIHNlbGYsIGFuY2hvcjogcHkucGF0aC5sb2NhbCwg
aW1wb3J0bW9kZTogVW5pb25bc3RyLCBJbXBvcnRNb2RlXQorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGFuY2hvciwgaW1wb3J0bW9kZSkKICAgICAgICAg
IyBsZXQncyBhbHNvIGNvbnNpZGVyIHRlc3QqIHN1YmRpcnMKICAgICAgICAgaWYgYW5jaG9yLmNo
ZWNrKGRpcj0xKToKICAgICAgICAgICAgIGZvciB4IGluIGFuY2hvci5saXN0ZGlyKCJ0ZXN0KiIp
OgogICAgICAgICAgICAgICAgIGlmIHguY2hlY2soZGlyPTEpOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9nZXRjb25mdGVzdG1vZHVsZXMoeCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Z2V0Y29uZnRlc3Rtb2R1bGVzKHgsIGltcG9ydG1vZGUpCiAKLSAgICBkZWYgX2dldGNvbmZ0ZXN0
bW9kdWxlcyhzZWxmLCBwYXRoKToKKyAgICBAbHJ1X2NhY2hlKG1heHNpemU9MTI4KQorICAgIGRl
ZiBfZ2V0Y29uZnRlc3Rtb2R1bGVzKAorICAgICAgICBzZWxmLCBwYXRoOiBweS5wYXRoLmxvY2Fs
LCBpbXBvcnRtb2RlOiBVbmlvbltzdHIsIEltcG9ydE1vZGVdLAorICAgICkgLT4gTGlzdFt0eXBl
cy5Nb2R1bGVUeXBlXToKICAgICAgICAgaWYgc2VsZi5fbm9jb25mdGVzdDoKICAgICAgICAgICAg
IHJldHVybiBbXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aDJj
b25mbW9kc1twYXRoXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBw
YXRoLmlzZmlsZSgpOgotICAgICAgICAgICAgICAgIGNsaXN0ID0gc2VsZi5fZ2V0Y29uZnRlc3Rt
b2R1bGVzKHBhdGguZGlycGF0aCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAjIFhYWCB0aGVzZSBkYXlzIHdlIG1heSByYXRoZXIgd2FudCB0byB1c2UgY29uZmlnLnJvb3Rk
aXIKLSAgICAgICAgICAgICAgICAjIGFuZCBhbGxvdyB1c2VycyB0byBvcHQgaW50byBsb29raW5n
IGludG8gdGhlIHJvb3RkaXIgcGFyZW50Ci0gICAgICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBp
bnN0ZWFkIG9mIHJlcXVpcmluZyB0byBzcGVjaWZ5IGNvbmZjdXRkaXIKLSAgICAgICAgICAgICAg
ICBjbGlzdCA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIHBhcmVudCBpbiBwYXRoLnBhcnRzKCk6
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NvbmZjdXRkaXIgYW5kIHNlbGYuX2NvbmZj
dXRkaXIucmVsdG8ocGFyZW50KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICAgICAgICAgIGNvbmZ0ZXN0cGF0aCA9IHBhcmVudC5qb2luKCJjb25mdGVzdC5w
eSIpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNvbmZ0ZXN0cGF0aC5pc2ZpbGUoKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZCA9IHNlbGYuX2ltcG9ydGNvbmZ0ZXN0KGNvbmZ0ZXN0cGF0
aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaXN0LmFwcGVuZChtb2QpCi0KLSAgICAgICAg
ICAgIHNlbGYuX3BhdGgyY29uZm1vZHNbcGF0aF0gPSBjbGlzdAotICAgICAgICAgICAgcmV0dXJu
IGNsaXN0Ci0KLSAgICBkZWYgX3JnZXRfd2l0aF9jb25mbW9kKHNlbGYsIG5hbWUsIHBhdGgpOgot
ICAgICAgICBtb2R1bGVzID0gc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHBhdGgpCisKKyAgICAg
ICAgaWYgcGF0aC5pc2ZpbGUoKToKKyAgICAgICAgICAgIGRpcmVjdG9yeSA9IHBhdGguZGlycGF0
aCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaXJlY3RvcnkgPSBwYXRoCisKKyAgICAg
ICAgIyBYWFggdGhlc2UgZGF5cyB3ZSBtYXkgcmF0aGVyIHdhbnQgdG8gdXNlIGNvbmZpZy5yb290
cGF0aAorICAgICAgICAjIGFuZCBhbGxvdyB1c2VycyB0byBvcHQgaW50byBsb29raW5nIGludG8g
dGhlIHJvb3RkaXIgcGFyZW50CisgICAgICAgICMgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiByZXF1
aXJpbmcgdG8gc3BlY2lmeSBjb25mY3V0ZGlyLgorICAgICAgICBjbGlzdCA9IFtdCisgICAgICAg
IGZvciBwYXJlbnQgaW4gZGlyZWN0b3J5LnBhcnRzKCk6CisgICAgICAgICAgICBpZiBzZWxmLl9j
b25mY3V0ZGlyIGFuZCBzZWxmLl9jb25mY3V0ZGlyLnJlbHRvKHBhcmVudCk6CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNvbmZ0ZXN0cGF0aCA9IHBhcmVudC5qb2luKCJj
b25mdGVzdC5weSIpCisgICAgICAgICAgICBpZiBjb25mdGVzdHBhdGguaXNmaWxlKCk6CisgICAg
ICAgICAgICAgICAgbW9kID0gc2VsZi5faW1wb3J0Y29uZnRlc3QoY29uZnRlc3RwYXRoLCBpbXBv
cnRtb2RlKQorICAgICAgICAgICAgICAgIGNsaXN0LmFwcGVuZChtb2QpCisgICAgICAgIHNlbGYu
X2RpcnBhdGgyY29uZm1vZHNbZGlyZWN0b3J5XSA9IGNsaXN0CisgICAgICAgIHJldHVybiBjbGlz
dAorCisgICAgZGVmIF9yZ2V0X3dpdGhfY29uZm1vZCgKKyAgICAgICAgc2VsZiwgbmFtZTogc3Ry
LCBwYXRoOiBweS5wYXRoLmxvY2FsLCBpbXBvcnRtb2RlOiBVbmlvbltzdHIsIEltcG9ydE1vZGVd
LAorICAgICkgLT4gVHVwbGVbdHlwZXMuTW9kdWxlVHlwZSwgQW55XToKKyAgICAgICAgbW9kdWxl
cyA9IHNlbGYuX2dldGNvbmZ0ZXN0bW9kdWxlcyhwYXRoLCBpbXBvcnRtb2RlKQogICAgICAgICBm
b3IgbW9kIGluIHJldmVyc2VkKG1vZHVsZXMpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgICAgIHJldHVybiBtb2QsIGdldGF0dHIobW9kLCBuYW1lKQpAQCAtMzk1LDEzMCArNTQ5LDIw
MCBAQCBjbGFzcyBQeXRlc3RQbHVnaW5NYW5hZ2VyKFBsdWdpbk1hbmFnZXIpOgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHJhaXNlIEtleUVycm9yKG5hbWUpCiAKLSAgICBkZWYg
X2ltcG9ydGNvbmZ0ZXN0KHNlbGYsIGNvbmZ0ZXN0cGF0aCk6Ci0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9jb25mdGVzdHBhdGgybW9kW2NvbmZ0ZXN0cGF0aF0KLSAgICAg
ICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGtncGF0aCA9IGNvbmZ0ZXN0cGF0aC5w
eXBrZ3BhdGgoKQotICAgICAgICAgICAgaWYgcGtncGF0aCBpcyBOb25lOgotICAgICAgICAgICAg
ICAgIF9lbnN1cmVfcmVtb3ZlZF9zeXNtb2R1bGUoY29uZnRlc3RwYXRoLnB1cmViYXNlbmFtZSkK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBjb25mdGVzdHBhdGgucHlp
bXBvcnQoKQotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kLCAicHl0ZXN0X3BsdWdpbnMi
KSBhbmQgc2VsZi5fY29uZmlndXJlZDoKLSAgICAgICAgICAgICAgICAgICAgZnJvbSBfcHl0ZXN0
LmRlcHJlY2F0ZWQgaW1wb3J0IFBZVEVTVF9QTFVHSU5TX0ZST01fTk9OX1RPUF9MRVZFTF9DT05G
VEVTVAorICAgIGRlZiBfaW1wb3J0Y29uZnRlc3QoCisgICAgICAgIHNlbGYsIGNvbmZ0ZXN0cGF0
aDogcHkucGF0aC5sb2NhbCwgaW1wb3J0bW9kZTogVW5pb25bc3RyLCBJbXBvcnRNb2RlXSwKKyAg
ICApIC0+IHR5cGVzLk1vZHVsZVR5cGU6CisgICAgICAgICMgVXNlIGEgcmVzb2x2ZWQgUGF0aCBv
YmplY3QgYXMga2V5IHRvIGF2b2lkIGxvYWRpbmcgdGhlIHNhbWUgY29uZnRlc3QKKyAgICAgICAg
IyB0d2ljZSB3aXRoIGJ1aWxkIHN5c3RlbXMgdGhhdCBjcmVhdGUgYnVpbGQgZGlyZWN0b3JpZXMg
Y29udGFpbmluZworICAgICAgICAjIHN5bWxpbmtzIHRvIGFjdHVhbCBmaWxlcy4KKyAgICAgICAg
IyBVc2luZyBQYXRoKCkucmVzb2x2ZSgpIGlzIGJldHRlciB0aGFuIHB5LnBhdGgucmVhbHBhdGgg
YmVjYXVzZQorICAgICAgICAjIGl0IHJlc29sdmVzIHRvIHRoZSBjb3JyZWN0IHBhdGgvZHJpdmUg
aW4gY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMgKCM1NzkyKQorICAgICAgICBrZXkgPSBQ
YXRoKHN0cihjb25mdGVzdHBhdGgpKS5yZXNvbHZlKCkKIAotICAgICAgICAgICAgICAgICAgICB3
YXJuaW5ncy53YXJuKFBZVEVTVF9QTFVHSU5TX0ZST01fTk9OX1RPUF9MRVZFTF9DT05GVEVTVCkK
LSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29u
ZnRlc3RJbXBvcnRGYWlsdXJlKGNvbmZ0ZXN0cGF0aCwgc3lzLmV4Y19pbmZvKCkpCi0KLSAgICAg
ICAgICAgIHNlbGYuX2NvbmZ0ZXN0X3BsdWdpbnMuYWRkKG1vZCkKLSAgICAgICAgICAgIHNlbGYu
X2NvbmZ0ZXN0cGF0aDJtb2RbY29uZnRlc3RwYXRoXSA9IG1vZAotICAgICAgICAgICAgZGlycGF0
aCA9IGNvbmZ0ZXN0cGF0aC5kaXJwYXRoKCkKLSAgICAgICAgICAgIGlmIGRpcnBhdGggaW4gc2Vs
Zi5fcGF0aDJjb25mbW9kczoKLSAgICAgICAgICAgICAgICBmb3IgcGF0aCwgbW9kcyBpbiBzZWxm
Ll9wYXRoMmNvbmZtb2RzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5k
IHBhdGgucmVsdG8oZGlycGF0aCkgb3IgcGF0aCA9PSBkaXJwYXRoOgotICAgICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0IG1vZCBub3QgaW4gbW9kcwotICAgICAgICAgICAgICAgICAgICAgICAg
bW9kcy5hcHBlbmQobW9kKQotICAgICAgICAgICAgc2VsZi50cmFjZSgibG9hZGVkIGNvbmZ0ZXN0
bW9kdWxlICVyIiAlIChtb2QpKQotICAgICAgICAgICAgc2VsZi5jb25zaWRlcl9jb25mdGVzdCht
b2QpCi0gICAgICAgICAgICByZXR1cm4gbW9kCisgICAgICAgIHdpdGggY29udGV4dGxpYi5zdXBw
cmVzcyhLZXlFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29uZnRlc3RwYXRoMm1v
ZFtrZXldCisKKyAgICAgICAgcGtncGF0aCA9IGNvbmZ0ZXN0cGF0aC5weXBrZ3BhdGgoKQorICAg
ICAgICBpZiBwa2dwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICBfZW5zdXJlX3JlbW92ZWRfc3lz
bW9kdWxlKGNvbmZ0ZXN0cGF0aC5wdXJlYmFzZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgbW9kID0gaW1wb3J0X3BhdGgoY29uZnRlc3RwYXRoLCBtb2RlPWltcG9ydG1vZGUpCisg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGFzc2VydCBlLl9fdHJh
Y2ViYWNrX18gaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGV4Y19pbmZvID0gKHR5cGUoZSksIGUs
IGUuX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgIHJhaXNlIENvbmZ0ZXN0SW1wb3J0RmFpbHVy
ZShjb25mdGVzdHBhdGgsIGV4Y19pbmZvKSBmcm9tIGUKKworICAgICAgICBzZWxmLl9jaGVja19u
b25fdG9wX3B5dGVzdF9wbHVnaW5zKG1vZCwgY29uZnRlc3RwYXRoKQorCisgICAgICAgIHNlbGYu
X2NvbmZ0ZXN0X3BsdWdpbnMuYWRkKG1vZCkKKyAgICAgICAgc2VsZi5fY29uZnRlc3RwYXRoMm1v
ZFtrZXldID0gbW9kCisgICAgICAgIGRpcnBhdGggPSBjb25mdGVzdHBhdGguZGlycGF0aCgpCisg
ICAgICAgIGlmIGRpcnBhdGggaW4gc2VsZi5fZGlycGF0aDJjb25mbW9kczoKKyAgICAgICAgICAg
IGZvciBwYXRoLCBtb2RzIGluIHNlbGYuX2RpcnBhdGgyY29uZm1vZHMuaXRlbXMoKToKKyAgICAg
ICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoLnJlbHRvKGRpcnBhdGgpIG9yIHBhdGggPT0gZGly
cGF0aDoKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1vZCBub3QgaW4gbW9kcworICAgICAg
ICAgICAgICAgICAgICBtb2RzLmFwcGVuZChtb2QpCisgICAgICAgIHNlbGYudHJhY2UoImxvYWRp
bmcgY29uZnRlc3Rtb2R1bGUgeyFyfSIuZm9ybWF0KG1vZCkpCisgICAgICAgIHNlbGYuY29uc2lk
ZXJfY29uZnRlc3QobW9kKQorICAgICAgICByZXR1cm4gbW9kCisKKyAgICBkZWYgX2NoZWNrX25v
bl90b3BfcHl0ZXN0X3BsdWdpbnMoCisgICAgICAgIHNlbGYsIG1vZDogdHlwZXMuTW9kdWxlVHlw
ZSwgY29uZnRlc3RwYXRoOiBweS5wYXRoLmxvY2FsLAorICAgICkgLT4gTm9uZToKKyAgICAgICAg
aWYgKAorICAgICAgICAgICAgaGFzYXR0cihtb2QsICJweXRlc3RfcGx1Z2lucyIpCisgICAgICAg
ICAgICBhbmQgc2VsZi5fY29uZmlndXJlZAorICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl91c2lu
Z19weWFyZ3MKKyAgICAgICAgKToKKyAgICAgICAgICAgIG1zZyA9ICgKKyAgICAgICAgICAgICAg
ICAiRGVmaW5pbmcgJ3B5dGVzdF9wbHVnaW5zJyBpbiBhIG5vbi10b3AtbGV2ZWwgY29uZnRlc3Qg
aXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDpcbiIKKyAgICAgICAgICAgICAgICAiSXQgYWZmZWN0cyB0
aGUgZW50aXJlIHRlc3Qgc3VpdGUgaW5zdGVhZCBvZiBqdXN0IGJlbG93IHRoZSBjb25mdGVzdCBh
cyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAiICB7fVxuIgorICAgICAgICAgICAgICAg
ICJQbGVhc2UgbW92ZSBpdCB0byBhIHRvcCBsZXZlbCBjb25mdGVzdCBmaWxlIGF0IHRoZSByb290
ZGlyOlxuIgorICAgICAgICAgICAgICAgICIgIHt9XG4iCisgICAgICAgICAgICAgICAgIkZvciBt
b3JlIGluZm9ybWF0aW9uLCB2aXNpdDpcbiIKKyAgICAgICAgICAgICAgICAiICBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvZGVwcmVjYXRpb25zLmh0bWwjcHl0ZXN0LXBsdWdpbnMt
aW4tbm9uLXRvcC1sZXZlbC1jb25mdGVzdC1maWxlcyIKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGZhaWwobXNnLmZvcm1hdChjb25mdGVzdHBhdGgsIHNlbGYuX2NvbmZjdXRkaXIpLCBweXRy
YWNlPUZhbHNlKQogCiAgICAgIwogICAgICMgQVBJIGZvciBib290c3RyYXBwaW5nIHBsdWdpbiBs
b2FkaW5nCiAgICAgIwogICAgICMKIAotICAgIGRlZiBjb25zaWRlcl9wcmVwYXJzZShzZWxmLCBh
cmdzKToKLSAgICAgICAgZm9yIG9wdDEsIG9wdDIgaW4gemlwKGFyZ3MsIGFyZ3NbMTpdKToKLSAg
ICAgICAgICAgIGlmIG9wdDEgPT0gIi1wIjoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnNpZGVy
X3BsdWdpbmFyZyhvcHQyKQorICAgIGRlZiBjb25zaWRlcl9wcmVwYXJzZSgKKyAgICAgICAgc2Vs
ZiwgYXJnczogU2VxdWVuY2Vbc3RyXSwgKiwgZXhjbHVkZV9vbmx5OiBib29sID0gRmFsc2UKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgIGkgPSAwCisgICAgICAgIG4gPSBsZW4oYXJncykKKyAgICAg
ICAgd2hpbGUgaSA8IG46CisgICAgICAgICAgICBvcHQgPSBhcmdzW2ldCisgICAgICAgICAgICBp
ICs9IDEKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3B0LCBzdHIpOgorICAgICAgICAgICAg
ICAgIGlmIG9wdCA9PSAiLXAiOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJnID0gYXJnc1tpXQorICAgICAgICAgICAgICAgICAgICBleGNlcHQg
SW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAg
ICAgICAgICBpICs9IDEKKyAgICAgICAgICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCItcCIp
OgorICAgICAgICAgICAgICAgICAgICBwYXJnID0gb3B0WzI6XQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgZXhj
bHVkZV9vbmx5IGFuZCBub3QgcGFyZy5zdGFydHN3aXRoKCJubzoiKToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnNpZGVyX3BsdWdpbmFyZyhw
YXJnKQogCi0gICAgZGVmIGNvbnNpZGVyX3BsdWdpbmFyZyhzZWxmLCBhcmcpOgorICAgIGRlZiBj
b25zaWRlcl9wbHVnaW5hcmcoc2VsZiwgYXJnOiBzdHIpIC0+IE5vbmU6CiAgICAgICAgIGlmIGFy
Zy5zdGFydHN3aXRoKCJubzoiKToKICAgICAgICAgICAgIG5hbWUgPSBhcmdbMzpdCisgICAgICAg
ICAgICBpZiBuYW1lIGluIGVzc2VudGlhbF9wbHVnaW5zOgorICAgICAgICAgICAgICAgIHJhaXNl
IFVzYWdlRXJyb3IoInBsdWdpbiAlcyBjYW5ub3QgYmUgZGlzYWJsZWQiICUgbmFtZSkKKworICAg
ICAgICAgICAgIyBQUiAjNDMwNDogcmVtb3ZlIHN0ZXB3aXNlIGlmIGNhY2hlcHJvdmlkZXIgaXMg
YmxvY2tlZC4KKyAgICAgICAgICAgIGlmIG5hbWUgPT0gImNhY2hlcHJvdmlkZXIiOgorICAgICAg
ICAgICAgICAgIHNlbGYuc2V0X2Jsb2NrZWQoInN0ZXB3aXNlIikKKyAgICAgICAgICAgICAgICBz
ZWxmLnNldF9ibG9ja2VkKCJweXRlc3Rfc3RlcHdpc2UiKQorCiAgICAgICAgICAgICBzZWxmLnNl
dF9ibG9ja2VkKG5hbWUpCiAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCJweXRl
c3RfIik6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXRfYmxvY2tlZCgicHl0ZXN0XyIgKyBuYW1l
KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5pbXBvcnRfcGx1Z2luKGFyZykKKyAg
ICAgICAgICAgIG5hbWUgPSBhcmcKKyAgICAgICAgICAgICMgVW5ibG9jayB0aGUgcGx1Z2luLiAg
Tm9uZSBpbmRpY2F0ZXMgdGhhdCBpdCBoYXMgYmVlbiBibG9ja2VkLgorICAgICAgICAgICAgIyBU
aGVyZSBpcyBubyBpbnRlcmZhY2Ugd2l0aCBwbHVnZ3kgZm9yIHRoaXMuCisgICAgICAgICAgICBp
ZiBzZWxmLl9uYW1lMnBsdWdpbi5nZXQobmFtZSwgLTEpIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgZGVsIHNlbGYuX25hbWUycGx1Z2luW25hbWVdCisgICAgICAgICAgICBpZiBub3QgbmFtZS5z
dGFydHN3aXRoKCJweXRlc3RfIik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fbmFtZTJwbHVn
aW4uZ2V0KCJweXRlc3RfIiArIG5hbWUsIC0xKSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAg
ICBkZWwgc2VsZi5fbmFtZTJwbHVnaW5bInB5dGVzdF8iICsgbmFtZV0KKyAgICAgICAgICAgIHNl
bGYuaW1wb3J0X3BsdWdpbihhcmcsIGNvbnNpZGVyX2VudHJ5X3BvaW50cz1UcnVlKQogCi0gICAg
ZGVmIGNvbnNpZGVyX2NvbmZ0ZXN0KHNlbGYsIGNvbmZ0ZXN0bW9kdWxlKToKKyAgICBkZWYgY29u
c2lkZXJfY29uZnRlc3Qoc2VsZiwgY29uZnRlc3Rtb2R1bGU6IHR5cGVzLk1vZHVsZVR5cGUpIC0+
IE5vbmU6CiAgICAgICAgIHNlbGYucmVnaXN0ZXIoY29uZnRlc3Rtb2R1bGUsIG5hbWU9Y29uZnRl
c3Rtb2R1bGUuX19maWxlX18pCiAKLSAgICBkZWYgY29uc2lkZXJfZW52KHNlbGYpOgorICAgIGRl
ZiBjb25zaWRlcl9lbnYoc2VsZikgLT4gTm9uZToKICAgICAgICAgc2VsZi5faW1wb3J0X3BsdWdp
bl9zcGVjcyhvcy5lbnZpcm9uLmdldCgiUFlURVNUX1BMVUdJTlMiKSkKIAotICAgIGRlZiBjb25z
aWRlcl9tb2R1bGUoc2VsZiwgbW9kKToKKyAgICBkZWYgY29uc2lkZXJfbW9kdWxlKHNlbGYsIG1v
ZDogdHlwZXMuTW9kdWxlVHlwZSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5faW1wb3J0X3BsdWdp
bl9zcGVjcyhnZXRhdHRyKG1vZCwgInB5dGVzdF9wbHVnaW5zIiwgW10pKQogCi0gICAgZGVmIF9p
bXBvcnRfcGx1Z2luX3NwZWNzKHNlbGYsIHNwZWMpOgorICAgIGRlZiBfaW1wb3J0X3BsdWdpbl9z
cGVjcygKKyAgICAgICAgc2VsZiwgc3BlYzogVW5pb25bTm9uZSwgdHlwZXMuTW9kdWxlVHlwZSwg
c3RyLCBTZXF1ZW5jZVtzdHJdXQorICAgICkgLT4gTm9uZToKICAgICAgICAgcGx1Z2lucyA9IF9n
ZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3Qoc3BlYykKICAgICAgICAgZm9yIGltcG9ydF9zcGVjIGlu
IHBsdWdpbnM6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF9wbHVnaW4oaW1wb3J0X3NwZWMpCiAK
LSAgICBkZWYgaW1wb3J0X3BsdWdpbihzZWxmLCBtb2RuYW1lKToKLSAgICAgICAgIyBtb3N0IG9m
dGVuIG1vZG5hbWUgcmVmZXJzIHRvIGJ1aWx0aW4gbW9kdWxlcywgZS5nLiAicHl0ZXN0ZXIiLAor
ICAgIGRlZiBpbXBvcnRfcGx1Z2luKHNlbGYsIG1vZG5hbWU6IHN0ciwgY29uc2lkZXJfZW50cnlf
cG9pbnRzOiBib29sID0gRmFsc2UpIC0+IE5vbmU6CisgICAgICAgICIiIkltcG9ydCBhIHBsdWdp
biB3aXRoIGBgbW9kbmFtZWBgLgorCisgICAgICAgIElmIGBgY29uc2lkZXJfZW50cnlfcG9pbnRz
YGAgaXMgVHJ1ZSwgZW50cnkgcG9pbnQgbmFtZXMgYXJlIGFsc28KKyAgICAgICAgY29uc2lkZXJl
ZCB0byBmaW5kIGEgcGx1Z2luLgorICAgICAgICAiIiIKKyAgICAgICAgIyBNb3N0IG9mdGVuIG1v
ZG5hbWUgcmVmZXJzIHRvIGJ1aWx0aW4gbW9kdWxlcywgZS5nLiAicHl0ZXN0ZXIiLAogICAgICAg
ICAjICJ0ZXJtaW5hbCIgb3IgImNhcHR1cmUiLiAgVGhvc2UgcGx1Z2lucyBhcmUgcmVnaXN0ZXJl
ZCB1bmRlciB0aGVpcgogICAgICAgICAjIGJhc2VuYW1lIGZvciBoaXN0b3JpYyBwdXJwb3NlcyBi
dXQgbXVzdCBiZSBpbXBvcnRlZCB3aXRoIHRoZQogICAgICAgICAjIF9weXRlc3QgcHJlZml4Lgot
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtb2RuYW1lLCAoc2l4LnRleHRfdHlwZSwgc3RyKSks
ICgKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobW9kbmFtZSwgc3RyKSwgKAogICAgICAgICAg
ICAgIm1vZHVsZSBuYW1lIGFzIHRleHQgcmVxdWlyZWQsIGdvdCAlciIgJSBtb2RuYW1lCiAgICAg
ICAgICkKLSAgICAgICAgbW9kbmFtZSA9IHN0cihtb2RuYW1lKQogICAgICAgICBpZiBzZWxmLmlz
X2Jsb2NrZWQobW9kbmFtZSkgb3Igc2VsZi5nZXRfcGx1Z2luKG1vZG5hbWUpIGlzIG5vdCBOb25l
OgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG1vZG5hbWUgaW4gYnVpbHRpbl9wbHVn
aW5zOgotICAgICAgICAgICAgaW1wb3J0c3BlYyA9ICJfcHl0ZXN0LiIgKyBtb2RuYW1lCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBpbXBvcnRzcGVjID0gbW9kbmFtZQorCisgICAgICAgIGlt
cG9ydHNwZWMgPSAiX3B5dGVzdC4iICsgbW9kbmFtZSBpZiBtb2RuYW1lIGluIGJ1aWx0aW5fcGx1
Z2lucyBlbHNlIG1vZG5hbWUKICAgICAgICAgc2VsZi5yZXdyaXRlX2hvb2subWFya19yZXdyaXRl
KGltcG9ydHNwZWMpCisKKyAgICAgICAgaWYgY29uc2lkZXJfZW50cnlfcG9pbnRzOgorICAgICAg
ICAgICAgbG9hZGVkID0gc2VsZi5sb2FkX3NldHVwdG9vbHNfZW50cnlwb2ludHMoInB5dGVzdDEx
IiwgbmFtZT1tb2RuYW1lKQorICAgICAgICAgICAgaWYgbG9hZGVkOgorICAgICAgICAgICAgICAg
IHJldHVybgorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9faW1wb3J0X18oaW1wb3J0c3Bl
YykKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBuZXdfZXhj
X3R5cGUgPSBJbXBvcnRFcnJvcgotICAgICAgICAgICAgbmV3X2V4Y19tZXNzYWdlID0gJ0Vycm9y
IGltcG9ydGluZyBwbHVnaW4gIiVzIjogJXMnICUgKAotICAgICAgICAgICAgICAgIG1vZG5hbWUs
IHNhZmVfc3RyKGUuYXJnc1swXSkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIG5ld19leGMg
PSBuZXdfZXhjX3R5cGUobmV3X2V4Y19tZXNzYWdlKQotCi0gICAgICAgICAgICBzaXgucmVyYWlz
ZShuZXdfZXhjX3R5cGUsIG5ld19leGMsIHN5cy5leGNfaW5mbygpWzJdKQorICAgICAgICAgICAg
cmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgJ0Vycm9yIGltcG9ydGluZyBwbHVn
aW4gInt9Ijoge30nLmZvcm1hdChtb2RuYW1lLCBzdHIoZS5hcmdzWzBdKSkKKyAgICAgICAgICAg
ICkud2l0aF90cmFjZWJhY2soZS5fX3RyYWNlYmFja19fKSBmcm9tIGUKIAogICAgICAgICBleGNl
cHQgU2tpcHBlZCBhcyBlOgotICAgICAgICAgICAgc2VsZi5fd2Fybigic2tpcHBlZCBwbHVnaW4g
JXI6ICVzIiAlICgobW9kbmFtZSwgZS5tc2cpKSkKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF9w
bHVnaW5zLmFwcGVuZCgobW9kbmFtZSwgZS5tc2cgb3IgIiIpKQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbaW1wb3J0c3BlY10KICAgICAgICAgICAgIHNlbGYu
cmVnaXN0ZXIobW9kLCBtb2RuYW1lKQogCiAKLWRlZiBfZ2V0X3BsdWdpbl9zcGVjc19hc19saXN0
KHNwZWNzKToKLSAgICAiIiIKLSAgICBQYXJzZXMgYSBsaXN0IG9mICJwbHVnaW4gc3BlY3MiIGFu
ZCByZXR1cm5zIGEgbGlzdCBvZiBwbHVnaW4gbmFtZXMuCi0KLSAgICBQbHVnaW4gc3BlY3MgY2Fu
IGJlIGdpdmVuIGFzIGEgbGlzdCBvZiBzdHJpbmdzIHNlcGFyYXRlZCBieSAiLCIgb3IgYWxyZWFk
eSBhcyBhIGxpc3QvdHVwbGUgaW4KLSAgICB3aGljaCBjYXNlIGl0IGlzIHJldHVybmVkIGFzIGEg
bGlzdC4gU3BlY3MgY2FuIGFsc28gYmUgYE5vbmVgIGluIHdoaWNoIGNhc2UgYW4KLSAgICBlbXB0
eSBsaXN0IGlzIHJldHVybmVkLgotICAgICIiIgotICAgIGlmIHNwZWNzIGlzIG5vdCBOb25lOgot
ICAgICAgICBpZiBpc2luc3RhbmNlKHNwZWNzLCBzdHIpOgotICAgICAgICAgICAgc3BlY3MgPSBz
cGVjcy5zcGxpdCgiLCIpIGlmIHNwZWNzIGVsc2UgW10KLSAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2Uoc3BlY3MsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigK
LSAgICAgICAgICAgICAgICAiUGx1Z2luIHNwZWNzIG11c3QgYmUgYSAnLCctc2VwYXJhdGVkIHN0
cmluZyBvciBhICIKLSAgICAgICAgICAgICAgICAibGlzdC90dXBsZSBvZiBzdHJpbmdzIGZvciBw
bHVnaW4gbmFtZXMuIEdpdmVuOiAlciIgJSBzcGVjcwotICAgICAgICAgICAgKQorZGVmIF9nZXRf
cGx1Z2luX3NwZWNzX2FzX2xpc3QoCisgICAgc3BlY3M6IFVuaW9uW05vbmUsIHR5cGVzLk1vZHVs
ZVR5cGUsIHN0ciwgU2VxdWVuY2Vbc3RyXV0KKykgLT4gTGlzdFtzdHJdOgorICAgICIiIlBhcnNl
IGEgcGx1Z2lucyBzcGVjaWZpY2F0aW9uIGludG8gYSBsaXN0IG9mIHBsdWdpbiBuYW1lcy4iIiIK
KyAgICAjIE5vbmUgbWVhbnMgZW1wdHkuCisgICAgaWYgc3BlY3MgaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIFtdCisgICAgIyBXb3JrYXJvdW5kIGZvciAjMzg5OSAtIGEgc3VibW9kdWxlIHdoaWNo
IGhhcHBlbnMgdG8gYmUgY2FsbGVkICJweXRlc3RfcGx1Z2lucyIuCisgICAgaWYgaXNpbnN0YW5j
ZShzcGVjcywgdHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgIHJldHVybiBbXQorICAgICMgQ29t
bWEtc2VwYXJhdGVkIGxpc3QuCisgICAgaWYgaXNpbnN0YW5jZShzcGVjcywgc3RyKToKKyAgICAg
ICAgcmV0dXJuIHNwZWNzLnNwbGl0KCIsIikgaWYgc3BlY3MgZWxzZSBbXQorICAgICMgRGlyZWN0
IHNwZWNpZmljYXRpb24uCisgICAgaWYgaXNpbnN0YW5jZShzcGVjcywgY29sbGVjdGlvbnMuYWJj
LlNlcXVlbmNlKToKICAgICAgICAgcmV0dXJuIGxpc3Qoc3BlY3MpCi0gICAgcmV0dXJuIFtdCisg
ICAgcmFpc2UgVXNhZ2VFcnJvcigKKyAgICAgICAgIlBsdWdpbnMgbWF5IGJlIHNwZWNpZmllZCBh
cyBhIHNlcXVlbmNlIG9yIGEgJywnLXNlcGFyYXRlZCBzdHJpbmcgb2YgcGx1Z2luIG5hbWVzLiBH
b3Q6ICVyIgorICAgICAgICAlIHNwZWNzCisgICAgKQogCiAKLWRlZiBfZW5zdXJlX3JlbW92ZWRf
c3lzbW9kdWxlKG1vZG5hbWUpOgorZGVmIF9lbnN1cmVfcmVtb3ZlZF9zeXNtb2R1bGUobW9kbmFt
ZTogc3RyKSAtPiBOb25lOgogICAgIHRyeToKICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW21vZG5h
bWVdCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICBwYXNzCiAKIAotY2xhc3MgTm90c2V0
KG9iamVjdCk6Ci0KK2NsYXNzIE5vdHNldDoKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAg
ICAgIHJldHVybiAiPE5PVFNFVD4iCiAKQEAgLTUyNiw2MyArNzUwLDIzOCBAQCBjbGFzcyBOb3Rz
ZXQob2JqZWN0KToKIG5vdHNldCA9IE5vdHNldCgpCiAKIAotZGVmIF9pdGVyX3Jld3JpdGFibGVf
bW9kdWxlcyhwYWNrYWdlX2ZpbGVzKToKK2RlZiBfaXRlcl9yZXdyaXRhYmxlX21vZHVsZXMocGFj
a2FnZV9maWxlczogSXRlcmFibGVbc3RyXSkgLT4gSXRlcmF0b3Jbc3RyXToKKyAgICAiIiJHaXZl
biBhbiBpdGVyYWJsZSBvZiBmaWxlIG5hbWVzIGluIGEgc291cmNlIGRpc3RyaWJ1dGlvbiwgcmV0
dXJuIHRoZSAibmFtZXMiIHRoYXQgc2hvdWxkCisgICAgYmUgbWFya2VkIGZvciBhc3NlcnRpb24g
cmV3cml0ZS4KKworICAgIEZvciBleGFtcGxlIHRoZSBwYWNrYWdlICJweXRlc3RfbW9jay9fX2lu
aXRfXy5weSIgc2hvdWxkIGJlIGFkZGVkIGFzICJweXRlc3RfbW9jayIgaW4KKyAgICB0aGUgYXNz
ZXJ0aW9uIHJld3JpdGUgbWVjaGFuaXNtLgorCisgICAgVGhpcyBmdW5jdGlvbiBoYXMgdG8gZGVh
bCB3aXRoIGRpc3QtaW5mbyBiYXNlZCBkaXN0cmlidXRpb25zIGFuZCBlZ2cgYmFzZWQgZGlzdHJp
YnV0aW9ucworICAgICh3aGljaCBhcmUgc3RpbGwgdmVyeSBtdWNoIGluIHVzZSBmb3IgImVkaXRh
YmxlIiBpbnN0YWxscykuCisKKyAgICBIZXJlIGFyZSB0aGUgZmlsZSBuYW1lcyBhcyBzZWVuIGlu
IGEgZGlzdC1pbmZvIGJhc2VkIGRpc3RyaWJ1dGlvbjoKKworICAgICAgICBweXRlc3RfbW9jay9f
X2luaXRfXy5weQorICAgICAgICBweXRlc3RfbW9jay9fdmVyc2lvbi5weQorICAgICAgICBweXRl
c3RfbW9jay9wbHVnaW4ucHkKKyAgICAgICAgcHl0ZXN0X21vY2suZWdnLWluZm8vUEtHLUlORk8K
KworICAgIEhlcmUgYXJlIHRoZSBmaWxlIG5hbWVzIGFzIHNlZW4gaW4gYW4gZWdnIGJhc2VkIGRp
c3RyaWJ1dGlvbjoKKworICAgICAgICBzcmMvcHl0ZXN0X21vY2svX19pbml0X18ucHkKKyAgICAg
ICAgc3JjL3B5dGVzdF9tb2NrL192ZXJzaW9uLnB5CisgICAgICAgIHNyYy9weXRlc3RfbW9jay9w
bHVnaW4ucHkKKyAgICAgICAgc3JjL3B5dGVzdF9tb2NrLmVnZy1pbmZvL1BLRy1JTkZPCisgICAg
ICAgIExJQ0VOU0UKKyAgICAgICAgc2V0dXAucHkKKworICAgIFdlIGhhdmUgdG8gdGFrZSBpbiBh
Y2NvdW50IHRob3NlIHR3byBkaXN0cmlidXRpb24gZmxhdm9ycyBpbiBvcmRlciB0byBkZXRlcm1p
bmUgd2hpY2gKKyAgICBuYW1lcyBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgYXNzZXJ0aW9uIHJl
d3JpdGluZy4KKworICAgIE1vcmUgaW5mb3JtYXRpb246CisgICAgICAgIGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC1tb2NrL2lzc3Vlcy8xNjcKKyAgICAiIiIKKyAgICBwYWNr
YWdlX2ZpbGVzID0gbGlzdChwYWNrYWdlX2ZpbGVzKQorICAgIHNlZW5fc29tZSA9IEZhbHNlCiAg
ICAgZm9yIGZuIGluIHBhY2thZ2VfZmlsZXM6CiAgICAgICAgIGlzX3NpbXBsZV9tb2R1bGUgPSAi
LyIgbm90IGluIGZuIGFuZCBmbi5lbmRzd2l0aCgiLnB5IikKICAgICAgICAgaXNfcGFja2FnZSA9
IGZuLmNvdW50KCIvIikgPT0gMSBhbmQgZm4uZW5kc3dpdGgoIl9faW5pdF9fLnB5IikKICAgICAg
ICAgaWYgaXNfc2ltcGxlX21vZHVsZToKICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBfID0gb3Mu
cGF0aC5zcGxpdGV4dChmbikKLSAgICAgICAgICAgIHlpZWxkIG1vZHVsZV9uYW1lCisgICAgICAg
ICAgICAjIHdlIGlnbm9yZSAic2V0dXAucHkiIGF0IHRoZSByb290IG9mIHRoZSBkaXN0cmlidXRp
b24KKyAgICAgICAgICAgIGlmIG1vZHVsZV9uYW1lICE9ICJzZXR1cCI6CisgICAgICAgICAgICAg
ICAgc2Vlbl9zb21lID0gVHJ1ZQorICAgICAgICAgICAgICAgIHlpZWxkIG1vZHVsZV9uYW1lCiAg
ICAgICAgIGVsaWYgaXNfcGFja2FnZToKICAgICAgICAgICAgIHBhY2thZ2VfbmFtZSA9IG9zLnBh
dGguZGlybmFtZShmbikKKyAgICAgICAgICAgIHNlZW5fc29tZSA9IFRydWUKICAgICAgICAgICAg
IHlpZWxkIHBhY2thZ2VfbmFtZQogCisgICAgaWYgbm90IHNlZW5fc29tZToKKyAgICAgICAgIyBB
dCB0aGlzIHBvaW50IHdlIGRpZCBub3QgZmluZCBhbnkgcGFja2FnZXMgb3IgbW9kdWxlcyBzdWl0
YWJsZSBmb3IgYXNzZXJ0aW9uCisgICAgICAgICMgcmV3cml0aW5nLCBzbyB3ZSB0cnkgYWdhaW4g
Ynkgc3RyaXBwaW5nIHRoZSBmaXJzdCBwYXRoIGNvbXBvbmVudCAodG8gYWNjb3VudCBmb3IKKyAg
ICAgICAgIyAic3JjIiBiYXNlZCBzb3VyY2UgdHJlZXMgZm9yIGV4YW1wbGUpLgorICAgICAgICAj
IFRoaXMgYXBwcm9hY2ggbGV0cyB1cyBoYXZlIHRoZSBjb21tb24gY2FzZSBjb250aW51ZSB0byBi
ZSBmYXN0LCBhcyBlZ2ctZGlzdHJpYnV0aW9ucworICAgICAgICAjIGFyZSByYXJlci4KKyAgICAg
ICAgbmV3X3BhY2thZ2VfZmlsZXMgPSBbXQorICAgICAgICBmb3IgZm4gaW4gcGFja2FnZV9maWxl
czoKKyAgICAgICAgICAgIHBhcnRzID0gZm4uc3BsaXQoIi8iKQorICAgICAgICAgICAgbmV3X2Zu
ID0gIi8iLmpvaW4ocGFydHNbMTpdKQorICAgICAgICAgICAgaWYgbmV3X2ZuOgorICAgICAgICAg
ICAgICAgIG5ld19wYWNrYWdlX2ZpbGVzLmFwcGVuZChuZXdfZm4pCisgICAgICAgIGlmIG5ld19w
YWNrYWdlX2ZpbGVzOgorICAgICAgICAgICAgeWllbGQgZnJvbSBfaXRlcl9yZXdyaXRhYmxlX21v
ZHVsZXMobmV3X3BhY2thZ2VfZmlsZXMpCiAKLWNsYXNzIENvbmZpZyhvYmplY3QpOgotICAgICIi
IiBhY2Nlc3MgdG8gY29uZmlndXJhdGlvbiB2YWx1ZXMsIHBsdWdpbm1hbmFnZXIgYW5kIHBsdWdp
biBob29rcy4gICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsdWdpbm1hbmFnZXIpOgot
ICAgICAgICAjOiBhY2Nlc3MgdG8gY29tbWFuZCBsaW5lIG9wdGlvbiBhcyBhdHRyaWJ1dGVzLgot
ICAgICAgICAjOiAoZGVwcmVjYXRlZCksIHVzZSA6cHk6ZnVuYzpgZ2V0b3B0aW9uKCkgPF9weXRl
c3QuY29uZmlnLkNvbmZpZy5nZXRvcHRpb24+YCBpbnN0ZWFkCi0gICAgICAgIHNlbGYub3B0aW9u
ID0gYXJncGFyc2UuTmFtZXNwYWNlKCkKK2RlZiBfYXJnc19jb252ZXJ0ZXIoYXJnczogSXRlcmFi
bGVbc3RyXSkgLT4gVHVwbGVbc3RyLCAuLi5dOgorICAgIHJldHVybiB0dXBsZShhcmdzKQorCisK
K0BmaW5hbAorY2xhc3MgQ29uZmlnOgorICAgICIiIkFjY2VzcyB0byBjb25maWd1cmF0aW9uIHZh
bHVlcywgcGx1Z2lubWFuYWdlciBhbmQgcGx1Z2luIGhvb2tzLgorCisgICAgOnBhcmFtIFB5dGVz
dFBsdWdpbk1hbmFnZXIgcGx1Z2lubWFuYWdlcjoKKworICAgIDpwYXJhbSBJbnZvY2F0aW9uUGFy
YW1zIGludm9jYXRpb25fcGFyYW1zOgorICAgICAgICBPYmplY3QgY29udGFpbmluZyBwYXJhbWV0
ZXJzIHJlZ2FyZGluZyB0aGUgOmZ1bmM6YHB5dGVzdC5tYWluYAorICAgICAgICBpbnZvY2F0aW9u
LgorICAgICIiIgorCisgICAgQGZpbmFsCisgICAgQGF0dHIucyhmcm96ZW49VHJ1ZSkKKyAgICBj
bGFzcyBJbnZvY2F0aW9uUGFyYW1zOgorICAgICAgICAiIiJIb2xkcyBwYXJhbWV0ZXJzIHBhc3Nl
ZCBkdXJpbmcgOmZ1bmM6YHB5dGVzdC5tYWluYC4KKworICAgICAgICBUaGUgb2JqZWN0IGF0dHJp
YnV0ZXMgYXJlIHJlYWQtb25seS4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiA1LjEKKwor
ICAgICAgICAuLiBub3RlOjoKKworICAgICAgICAgICAgTm90ZSB0aGF0IHRoZSBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBgYFBZVEVTVF9BRERPUFRTYGAgYW5kIHRoZSBgYGFkZG9wdHNgYAorICAgICAg
ICAgICAgaW5pIG9wdGlvbiBhcmUgaGFuZGxlZCBieSBweXRlc3QsIG5vdCBiZWluZyBpbmNsdWRl
ZCBpbiB0aGUgYGBhcmdzYGAgYXR0cmlidXRlLgorCisgICAgICAgICAgICBQbHVnaW5zIGFjY2Vz
c2luZyBgYEludm9jYXRpb25QYXJhbXNgYCBtdXN0IGJlIGF3YXJlIG9mIHRoYXQuCisgICAgICAg
ICIiIgorCisgICAgICAgIGFyZ3MgPSBhdHRyLmliKHR5cGU9VHVwbGVbc3RyLCAuLi5dLCBjb252
ZXJ0ZXI9X2FyZ3NfY29udmVydGVyKQorICAgICAgICAiIiJUaGUgY29tbWFuZC1saW5lIGFyZ3Vt
ZW50cyBhcyBwYXNzZWQgdG8gOmZ1bmM6YHB5dGVzdC5tYWluYC4KKworICAgICAgICA6dHlwZTog
VHVwbGVbc3RyLCAuLi5dCisgICAgICAgICIiIgorICAgICAgICBwbHVnaW5zID0gYXR0ci5pYih0
eXBlPU9wdGlvbmFsW1NlcXVlbmNlW1VuaW9uW3N0ciwgX1BsdWdneVBsdWdpbl1dXSkKKyAgICAg
ICAgIiIiRXh0cmEgcGx1Z2lucywgbWlnaHQgYmUgYE5vbmVgLgorCisgICAgICAgIDp0eXBlOiBP
cHRpb25hbFtTZXF1ZW5jZVtVbmlvbltzdHIsIHBsdWdpbl1dXQorICAgICAgICAiIiIKKyAgICAg
ICAgZGlyID0gYXR0ci5pYih0eXBlPVBhdGgpCisgICAgICAgICIiIlRoZSBkaXJlY3RvcnkgZnJv
bSB3aGljaCA6ZnVuYzpgcHl0ZXN0Lm1haW5gIHdhcyBpbnZva2VkLgorCisgICAgICAgIDp0eXBl
OiBwYXRobGliLlBhdGgKKyAgICAgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAg
IHNlbGYsCisgICAgICAgIHBsdWdpbm1hbmFnZXI6IFB5dGVzdFBsdWdpbk1hbmFnZXIsCisgICAg
ICAgICosCisgICAgICAgIGludm9jYXRpb25fcGFyYW1zOiBPcHRpb25hbFtJbnZvY2F0aW9uUGFy
YW1zXSA9IE5vbmUKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIGZyb20gLmFyZ3BhcnNpbmcgaW1w
b3J0IFBhcnNlciwgRklMRV9PUl9ESVIKIAorICAgICAgICBpZiBpbnZvY2F0aW9uX3BhcmFtcyBp
cyBOb25lOgorICAgICAgICAgICAgaW52b2NhdGlvbl9wYXJhbXMgPSBzZWxmLkludm9jYXRpb25Q
YXJhbXMoCisgICAgICAgICAgICAgICAgYXJncz0oKSwgcGx1Z2lucz1Ob25lLCBkaXI9UGF0aC5j
d2QoKQorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYub3B0aW9uID0gYXJncGFyc2UuTmFt
ZXNwYWNlKCkKKyAgICAgICAgIiIiQWNjZXNzIHRvIGNvbW1hbmQgbGluZSBvcHRpb24gYXMgYXR0
cmlidXRlcy4KKworICAgICAgICA6dHlwZTogYXJncGFyc2UuTmFtZXNwYWNlCisgICAgICAgICIi
IgorCisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9wYXJhbXMgPSBpbnZvY2F0aW9uX3BhcmFtcwor
ICAgICAgICAiIiJUaGUgcGFyYW1ldGVycyB3aXRoIHdoaWNoIHB5dGVzdCB3YXMgaW52b2tlZC4K
KworICAgICAgICA6dHlwZTogSW52b2NhdGlvblBhcmFtcworICAgICAgICAiIiIKKwogICAgICAg
ICBfYSA9IEZJTEVfT1JfRElSCiAgICAgICAgIHNlbGYuX3BhcnNlciA9IFBhcnNlcigKLSAgICAg
ICAgICAgIHVzYWdlPSIlJShwcm9nKXMgW29wdGlvbnNdIFslc10gWyVzXSBbLi4uXSIgJSAoX2Es
IF9hKSwKKyAgICAgICAgICAgIHVzYWdlPSIlKHByb2cpcyBbb3B0aW9uc10gW3t9XSBbe31dIFsu
Li5dIi5mb3JtYXQoX2EsIF9hKSwKICAgICAgICAgICAgIHByb2Nlc3NvcHQ9c2VsZi5fcHJvY2Vz
c29wdCwKICAgICAgICAgKQotICAgICAgICAjOiBhIHBsdWdpbm1hbmFnZXIgaW5zdGFuY2UKICAg
ICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyID0gcGx1Z2lubWFuYWdlcgorICAgICAgICAiIiJUaGUg
cGx1Z2luIG1hbmFnZXIgaGFuZGxlcyBwbHVnaW4gcmVnaXN0cmF0aW9uIGFuZCBob29rIGludm9j
YXRpb24uCisKKyAgICAgICAgOnR5cGU6IFB5dGVzdFBsdWdpbk1hbmFnZXIKKyAgICAgICAgIiIi
CisKICAgICAgICAgc2VsZi50cmFjZSA9IHNlbGYucGx1Z2lubWFuYWdlci50cmFjZS5yb290Lmdl
dCgiY29uZmlnIikKICAgICAgICAgc2VsZi5ob29rID0gc2VsZi5wbHVnaW5tYW5hZ2VyLmhvb2sK
LSAgICAgICAgc2VsZi5faW5pY2FjaGUgPSB7fQotICAgICAgICBzZWxmLl9vdmVycmlkZV9pbmkg
PSAoKQotICAgICAgICBzZWxmLl9vcHQyZGVzdCA9IHt9Ci0gICAgICAgIHNlbGYuX2NsZWFudXAg
PSBbXQotICAgICAgICBzZWxmLl93YXJuID0gc2VsZi5wbHVnaW5tYW5hZ2VyLl93YXJuCisgICAg
ICAgIHNlbGYuX2luaWNhY2hlID0ge30gICMgdHlwZTogRGljdFtzdHIsIEFueV0KKyAgICAgICAg
c2VsZi5fb3ZlcnJpZGVfaW5pID0gKCkgICMgdHlwZTogU2VxdWVuY2Vbc3RyXQorICAgICAgICBz
ZWxmLl9vcHQyZGVzdCA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBzdHJdCisgICAgICAgIHNlbGYu
X2NsZWFudXAgPSBbXSAgIyB0eXBlOiBMaXN0W0NhbGxhYmxlW1tdLCBOb25lXV0KKyAgICAgICAg
IyBBIHBsYWNlIHdoZXJlIHBsdWdpbnMgY2FuIHN0b3JlIGluZm9ybWF0aW9uIG9uIHRoZSBjb25m
aWcgZm9yIHRoZWlyCisgICAgICAgICMgb3duIHVzZS4gQ3VycmVudGx5IG9ubHkgaW50ZW5kZWQg
Zm9yIGludGVybmFsIHBsdWdpbnMuCisgICAgICAgIHNlbGYuX3N0b3JlID0gU3RvcmUoKQogICAg
ICAgICBzZWxmLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoc2VsZiwgInB5dGVzdGNvbmZpZyIpCiAg
ICAgICAgIHNlbGYuX2NvbmZpZ3VyZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmhvb2sucHl0ZXN0
X2FkZG9wdGlvbi5jYWxsX2hpc3RvcmljKAorICAgICAgICAgICAga3dhcmdzPWRpY3QocGFyc2Vy
PXNlbGYuX3BhcnNlciwgcGx1Z2lubWFuYWdlcj1zZWxmLnBsdWdpbm1hbmFnZXIpCisgICAgICAg
ICkKKworICAgICAgICBpZiBUWVBFX0NIRUNLSU5HOgorICAgICAgICAgICAgZnJvbSBfcHl0ZXN0
LmNhY2hlcHJvdmlkZXIgaW1wb3J0IENhY2hlCisKKyAgICAgICAgICAgIHNlbGYuY2FjaGUgPSBO
b25lICAjIHR5cGU6IE9wdGlvbmFsW0NhY2hlXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlu
dm9jYXRpb25fZGlyKHNlbGYpIC0+IHB5LnBhdGgubG9jYWw6CisgICAgICAgICIiIlRoZSBkaXJl
Y3RvcnkgZnJvbSB3aGljaCBweXRlc3Qgd2FzIGludm9rZWQuCisKKyAgICAgICAgUHJlZmVyIHRv
IHVzZSA6YXR0cjpgaW52b2NhdGlvbl9wYXJhbXMuZGlyIDxJbnZvY2F0aW9uUGFyYW1zLmRpcj5g
LAorICAgICAgICB3aGljaCBpcyBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4KIAotICAgICAgICBk
ZWYgZG9fc2V0bnMoZGljKToKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgOnR5
cGU6IHB5LnBhdGgubG9jYWwKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBweS5wYXRoLmxv
Y2FsKHN0cihzZWxmLmludm9jYXRpb25fcGFyYW1zLmRpcikpCisKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgcm9vdHBhdGgoc2VsZikgLT4gUGF0aDoKKyAgICAgICAgIiIiVGhlIHBhdGggdG8gdGhl
IDpyZWY6YHJvb3RkaXIgPHJvb3RkaXI+YC4KKworICAgICAgICA6dHlwZTogcGF0aGxpYi5QYXRo
CisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogNi4xCisgICAgICAgICIiIgorICAgICAgICBy
ZXR1cm4gc2VsZi5fcm9vdHBhdGgKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb290ZGlyKHNl
bGYpIC0+IHB5LnBhdGgubG9jYWw6CisgICAgICAgICIiIlRoZSBwYXRoIHRvIHRoZSA6cmVmOmBy
b290ZGlyIDxyb290ZGlyPmAuCisKKyAgICAgICAgUHJlZmVyIHRvIHVzZSA6YXR0cjpgcm9vdHBh
dGhgLCB3aGljaCBpcyBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4KKworICAgICAgICA6dHlwZTog
cHkucGF0aC5sb2NhbAorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHB5LnBhdGgubG9jYWwo
c3RyKHNlbGYucm9vdHBhdGgpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGluaXBhdGgoc2Vs
ZikgLT4gT3B0aW9uYWxbUGF0aF06CisgICAgICAgICIiIlRoZSBwYXRoIHRvIHRoZSA6cmVmOmBj
b25maWdmaWxlIDxjb25maWdmaWxlcz5gLgorCisgICAgICAgIDp0eXBlOiBPcHRpb25hbFtwYXRo
bGliLlBhdGhdCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogNi4xCisgICAgICAgICIiIgor
ICAgICAgICByZXR1cm4gc2VsZi5faW5pcGF0aAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlu
aWZpbGUoc2VsZikgLT4gT3B0aW9uYWxbcHkucGF0aC5sb2NhbF06CisgICAgICAgICIiIlRoZSBw
YXRoIHRvIHRoZSA6cmVmOmBjb25maWdmaWxlIDxjb25maWdmaWxlcz5gLgogCi0gICAgICAgICAg
ICBzZXRucyhweXRlc3QsIGRpYykKKyAgICAgICAgUHJlZmVyIHRvIHVzZSA6YXR0cjpgaW5pcGF0
aGAsIHdoaWNoIGlzIGEgOmNsYXNzOmBwYXRobGliLlBhdGhgLgogCi0gICAgICAgIHNlbGYuaG9v
ay5weXRlc3RfbmFtZXNwYWNlLmNhbGxfaGlzdG9yaWMoZG9fc2V0bnMsIHt9KQotICAgICAgICBz
ZWxmLmhvb2sucHl0ZXN0X2FkZG9wdGlvbi5jYWxsX2hpc3RvcmljKGt3YXJncz1kaWN0KHBhcnNl
cj1zZWxmLl9wYXJzZXIpKQorICAgICAgICA6dHlwZTogT3B0aW9uYWxbcHkucGF0aC5sb2NhbF0K
KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBweS5wYXRoLmxvY2FsKHN0cihzZWxmLmluaXBh
dGgpKSBpZiBzZWxmLmluaXBhdGggZWxzZSBOb25lCiAKLSAgICBkZWYgYWRkX2NsZWFudXAoc2Vs
ZiwgZnVuYyk6Ci0gICAgICAgICIiIiBBZGQgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0
aGUgY29uZmlnIG9iamVjdCBnZXRzIG91dCBvZgorICAgIGRlZiBhZGRfY2xlYW51cChzZWxmLCBm
dW5jOiBDYWxsYWJsZVtbXSwgTm9uZV0pIC0+IE5vbmU6CisgICAgICAgICIiIkFkZCBhIGZ1bmN0
aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb25maWcgb2JqZWN0IGdldHMgb3V0IG9mCiAgICAg
ICAgIHVzZSAodXN1YWxseSBjb25pbmNpZGluZyB3aXRoIHB5dGVzdF91bmNvbmZpZ3VyZSkuIiIi
CiAgICAgICAgIHNlbGYuX2NsZWFudXAuYXBwZW5kKGZ1bmMpCiAKLSAgICBkZWYgX2RvX2NvbmZp
Z3VyZShzZWxmKToKKyAgICBkZWYgX2RvX2NvbmZpZ3VyZShzZWxmKSAtPiBOb25lOgogICAgICAg
ICBhc3NlcnQgbm90IHNlbGYuX2NvbmZpZ3VyZWQKICAgICAgICAgc2VsZi5fY29uZmlndXJlZCA9
IFRydWUKLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9jb25maWd1cmUuY2FsbF9oaXN0b3JpYyhr
d2FyZ3M9ZGljdChjb25maWc9c2VsZikpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2Fy
bmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZGVmYXVsdCIpCisg
ICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2NvbmZpZ3VyZS5jYWxsX2hpc3RvcmljKGt3YXJn
cz1kaWN0KGNvbmZpZz1zZWxmKSkKIAotICAgIGRlZiBfZW5zdXJlX3VuY29uZmlndXJlKHNlbGYp
OgorICAgIGRlZiBfZW5zdXJlX3VuY29uZmlndXJlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGlm
IHNlbGYuX2NvbmZpZ3VyZWQ6CiAgICAgICAgICAgICBzZWxmLl9jb25maWd1cmVkID0gRmFsc2UK
ICAgICAgICAgICAgIHNlbGYuaG9vay5weXRlc3RfdW5jb25maWd1cmUoY29uZmlnPXNlbGYpCkBA
IC01OTEsMjUgKzk5MCw0NSBAQCBjbGFzcyBDb25maWcob2JqZWN0KToKICAgICAgICAgICAgIGZp
biA9IHNlbGYuX2NsZWFudXAucG9wKCkKICAgICAgICAgICAgIGZpbigpCiAKLSAgICBkZWYgd2Fy
bihzZWxmLCBjb2RlLCBtZXNzYWdlLCBmc2xvY2F0aW9uPU5vbmUsIG5vZGVpZD1Ob25lKToKLSAg
ICAgICAgIiIiIGdlbmVyYXRlIGEgd2FybmluZyBmb3IgdGhpcyB0ZXN0IHNlc3Npb24uICIiIgot
ICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2xvZ3dhcm5pbmcuY2FsbF9oaXN0b3JpYygKLSAgICAg
ICAgICAgIGt3YXJncz1kaWN0KAotICAgICAgICAgICAgICAgIGNvZGU9Y29kZSwgbWVzc2FnZT1t
ZXNzYWdlLCBmc2xvY2F0aW9uPWZzbG9jYXRpb24sIG5vZGVpZD1ub2RlaWQKLSAgICAgICAgICAg
ICkKLSAgICAgICAgKQorICAgIGRlZiBnZXRfdGVybWluYWxfd3JpdGVyKHNlbGYpIC0+IFRlcm1p
bmFsV3JpdGVyOgorICAgICAgICB0ZXJtaW5hbHJlcG9ydGVyID0gc2VsZi5wbHVnaW5tYW5hZ2Vy
LmdldF9wbHVnaW4oCisgICAgICAgICAgICAidGVybWluYWxyZXBvcnRlciIKKyAgICAgICAgKSAg
IyB0eXBlOiBUZXJtaW5hbFJlcG9ydGVyCisgICAgICAgIHJldHVybiB0ZXJtaW5hbHJlcG9ydGVy
Ll90dworCisgICAgZGVmIHB5dGVzdF9jbWRsaW5lX3BhcnNlKAorICAgICAgICBzZWxmLCBwbHVn
aW5tYW5hZ2VyOiBQeXRlc3RQbHVnaW5NYW5hZ2VyLCBhcmdzOiBMaXN0W3N0cl0KKyAgICApIC0+
ICJDb25maWciOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBhcnNlKGFyZ3MpCisg
ICAgICAgIGV4Y2VwdCBVc2FnZUVycm9yOgorCisgICAgICAgICAgICAjIEhhbmRsZSAtLXZlcnNp
b24gYW5kIC0taGVscCBoZXJlIGluIGEgbWluaW1hbCBmYXNoaW9uLgorICAgICAgICAgICAgIyBU
aGlzIGdldHMgZG9uZSB2aWEgaGVscGNvbmZpZyBub3JtYWxseSwgYnV0IGl0cworICAgICAgICAg
ICAgIyBweXRlc3RfY21kbGluZV9tYWluIGlzIG5vdCBjYWxsZWQgaW4gY2FzZSBvZiBlcnJvcnMu
CisgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYub3B0aW9uLCAidmVyc2lvbiIsIEZhbHNlKSBv
ciAiLS12ZXJzaW9uIiBpbiBhcmdzOgorICAgICAgICAgICAgICAgIGZyb20gX3B5dGVzdC5oZWxw
Y29uZmlnIGltcG9ydCBzaG93dmVyc2lvbgorCisgICAgICAgICAgICAgICAgc2hvd3ZlcnNpb24o
c2VsZikKKyAgICAgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZi5v
cHRpb24sICJoZWxwIiwgRmFsc2UpIG9yICItLWhlbHAiIGluIGFyZ3Mgb3IgIi1oIiBpbiBhcmdz
CisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5fZ2V0cGFyc2Vy
KCkucHJpbnRfaGVscCgpCisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgKKyAgICAg
ICAgICAgICAgICAgICAgIlxuTk9URTogZGlzcGxheWluZyBvbmx5IG1pbmltYWwgaGVscCBkdWUg
dG8gVXNhZ2VFcnJvci5cblxuIgorICAgICAgICAgICAgICAgICkKIAotICAgIGRlZiBnZXRfdGVy
bWluYWxfd3JpdGVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wbHVnaW5tYW5hZ2VyLmdl
dF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKS5fdHcKKyAgICAgICAgICAgIHJhaXNlCiAKLSAg
ICBkZWYgcHl0ZXN0X2NtZGxpbmVfcGFyc2Uoc2VsZiwgcGx1Z2lubWFuYWdlciwgYXJncyk6Ci0g
ICAgICAgICMgUkVGMSBhc3NlcnQgc2VsZiA9PSBwbHVnaW5tYW5hZ2VyLmNvbmZpZywgKHNlbGYs
IHBsdWdpbm1hbmFnZXIuY29uZmlnKQotICAgICAgICBzZWxmLnBhcnNlKGFyZ3MpCiAgICAgICAg
IHJldHVybiBzZWxmCiAKLSAgICBkZWYgbm90aWZ5X2V4Y2VwdGlvbihzZWxmLCBleGNpbmZvLCBv
cHRpb249Tm9uZSk6Ci0gICAgICAgIGlmIG9wdGlvbiBhbmQgb3B0aW9uLmZ1bGx0cmFjZToKLSAg
ICAgICAgICAgIHN0eWxlID0gImxvbmciCisgICAgZGVmIG5vdGlmeV9leGNlcHRpb24oCisgICAg
ICAgIHNlbGYsCisgICAgICAgIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0s
CisgICAgICAgIG9wdGlvbjogT3B0aW9uYWxbYXJncGFyc2UuTmFtZXNwYWNlXSA9IE5vbmUsCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBpZiBvcHRpb24gYW5kIGdldGF0dHIob3B0aW9uLCAiZnVs
bHRyYWNlIiwgRmFsc2UpOgorICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIgICMgdHlwZTogX1Ry
YWNlYmFja1N0eWxlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzdHlsZSA9ICJuYXRpdmUi
CiAgICAgICAgIGV4Y3JlcHIgPSBleGNpbmZvLmdldHJlcHIoCkBAIC02MjEsNTQgKzEwNDAsNjEg
QEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgiSU5URVJOQUxFUlJPUj4gJXNcbiIgJSBsaW5lKQogICAgICAgICAgICAgICAgIHN5cy5zdGRl
cnIuZmx1c2goKQogCi0gICAgZGVmIGN3ZF9yZWxhdGl2ZV9ub2RlaWQoc2VsZiwgbm9kZWlkKToK
LSAgICAgICAgIyBub2RlaWQncyBhcmUgcmVsYXRpdmUgdG8gdGhlIHJvb3RwYXRoLCBjb21wdXRl
IHJlbGF0aXZlIHRvIGN3ZAotICAgICAgICBpZiBzZWxmLmludm9jYXRpb25fZGlyICE9IHNlbGYu
cm9vdGRpcjoKLSAgICAgICAgICAgIGZ1bGxwYXRoID0gc2VsZi5yb290ZGlyLmpvaW4obm9kZWlk
KQotICAgICAgICAgICAgbm9kZWlkID0gc2VsZi5pbnZvY2F0aW9uX2Rpci5iZXN0cmVscGF0aChm
dWxscGF0aCkKKyAgICBkZWYgY3dkX3JlbGF0aXZlX25vZGVpZChzZWxmLCBub2RlaWQ6IHN0cikg
LT4gc3RyOgorICAgICAgICAjIG5vZGVpZCdzIGFyZSByZWxhdGl2ZSB0byB0aGUgcm9vdHBhdGgs
IGNvbXB1dGUgcmVsYXRpdmUgdG8gY3dkLgorICAgICAgICBpZiBzZWxmLmludm9jYXRpb25fcGFy
YW1zLmRpciAhPSBzZWxmLnJvb3RwYXRoOgorICAgICAgICAgICAgZnVsbHBhdGggPSBzZWxmLnJv
b3RwYXRoIC8gbm9kZWlkCisgICAgICAgICAgICBub2RlaWQgPSBiZXN0cmVscGF0aChzZWxmLmlu
dm9jYXRpb25fcGFyYW1zLmRpciwgZnVsbHBhdGgpCiAgICAgICAgIHJldHVybiBub2RlaWQKIAog
ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tZGljdGFyZ3MoY2xzLCBvcHRpb25fZGljdCwg
YXJncyk6Ci0gICAgICAgICIiIiBjb25zdHJ1Y3RvciB1c2VhYmxlIGZvciBzdWJwcm9jZXNzZXMu
ICIiIgotICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKCkKKyAgICBkZWYgZnJvbWRpY3Rhcmdz
KGNscywgb3B0aW9uX2RpY3QsIGFyZ3MpIC0+ICJDb25maWciOgorICAgICAgICAiIiJDb25zdHJ1
Y3RvciB1c2FibGUgZm9yIHN1YnByb2Nlc3Nlcy4iIiIKKyAgICAgICAgY29uZmlnID0gZ2V0X2Nv
bmZpZyhhcmdzKQogICAgICAgICBjb25maWcub3B0aW9uLl9fZGljdF9fLnVwZGF0ZShvcHRpb25f
ZGljdCkKICAgICAgICAgY29uZmlnLnBhcnNlKGFyZ3MsIGFkZG9wdHM9RmFsc2UpCiAgICAgICAg
IGZvciB4IGluIGNvbmZpZy5vcHRpb24ucGx1Z2luczoKICAgICAgICAgICAgIGNvbmZpZy5wbHVn
aW5tYW5hZ2VyLmNvbnNpZGVyX3BsdWdpbmFyZyh4KQogICAgICAgICByZXR1cm4gY29uZmlnCiAK
LSAgICBkZWYgX3Byb2Nlc3NvcHQoc2VsZiwgb3B0KToKKyAgICBkZWYgX3Byb2Nlc3NvcHQoc2Vs
Ziwgb3B0OiAiQXJndW1lbnQiKSAtPiBOb25lOgogICAgICAgICBmb3IgbmFtZSBpbiBvcHQuX3No
b3J0X29wdHMgKyBvcHQuX2xvbmdfb3B0czoKICAgICAgICAgICAgIHNlbGYuX29wdDJkZXN0W25h
bWVdID0gb3B0LmRlc3QKIAotICAgICAgICBpZiBoYXNhdHRyKG9wdCwgImRlZmF1bHQiKSBhbmQg
b3B0LmRlc3Q6CisgICAgICAgIGlmIGhhc2F0dHIob3B0LCAiZGVmYXVsdCIpOgogICAgICAgICAg
ICAgaWYgbm90IGhhc2F0dHIoc2VsZi5vcHRpb24sIG9wdC5kZXN0KToKICAgICAgICAgICAgICAg
ICBzZXRhdHRyKHNlbGYub3B0aW9uLCBvcHQuZGVzdCwgb3B0LmRlZmF1bHQpCiAKICAgICBAaG9v
a2ltcGwodHJ5bGFzdD1UcnVlKQotICAgIGRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0
cyhzZWxmLCBlYXJseV9jb25maWcpOgorICAgIGRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0
ZXN0cyhzZWxmLCBlYXJseV9jb25maWc6ICJDb25maWciKSAtPiBOb25lOgogICAgICAgICBzZWxm
LnBsdWdpbm1hbmFnZXIuX3NldF9pbml0aWFsX2NvbmZ0ZXN0cyhlYXJseV9jb25maWcua25vd25f
YXJnc19uYW1lc3BhY2UpCiAKLSAgICBkZWYgX2luaXRpbmkoc2VsZiwgYXJncyk6CisgICAgZGVm
IF9pbml0aW5pKHNlbGYsIGFyZ3M6IFNlcXVlbmNlW3N0cl0pIC0+IE5vbmU6CiAgICAgICAgIG5z
LCB1bmtub3duX2FyZ3MgPSBzZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYW5kX3Vua25vd25fYXJn
cygKICAgICAgICAgICAgIGFyZ3MsIG5hbWVzcGFjZT1jb3B5LmNvcHkoc2VsZi5vcHRpb24pCiAg
ICAgICAgICkKLSAgICAgICAgciA9IGRldGVybWluZV9zZXR1cCgKKyAgICAgICAgcm9vdHBhdGgs
IGluaXBhdGgsIGluaWNmZyA9IGRldGVybWluZV9zZXR1cCgKICAgICAgICAgICAgIG5zLmluaWZp
bGVuYW1lLAogICAgICAgICAgICAgbnMuZmlsZV9vcl9kaXIgKyB1bmtub3duX2FyZ3MsCi0gICAg
ICAgICAgICB3YXJuZnVuYz1zZWxmLndhcm4sCiAgICAgICAgICAgICByb290ZGlyX2NtZF9hcmc9
bnMucm9vdGRpciBvciBOb25lLAorICAgICAgICAgICAgY29uZmlnPXNlbGYsCiAgICAgICAgICkK
LSAgICAgICAgc2VsZi5yb290ZGlyLCBzZWxmLmluaWZpbGUsIHNlbGYuaW5pY2ZnID0gcgotICAg
ICAgICBzZWxmLl9wYXJzZXIuZXh0cmFfaW5mb1sicm9vdGRpciJdID0gc2VsZi5yb290ZGlyCi0g
ICAgICAgIHNlbGYuX3BhcnNlci5leHRyYV9pbmZvWyJpbmlmaWxlIl0gPSBzZWxmLmluaWZpbGUK
LSAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2RpciA9IHB5LnBhdGgubG9jYWwoKQorICAgICAgICBz
ZWxmLl9yb290cGF0aCA9IHJvb3RwYXRoCisgICAgICAgIHNlbGYuX2luaXBhdGggPSBpbmlwYXRo
CisgICAgICAgIHNlbGYuaW5pY2ZnID0gaW5pY2ZnCisgICAgICAgIHNlbGYuX3BhcnNlci5leHRy
YV9pbmZvWyJyb290ZGlyIl0gPSBzdHIoc2VsZi5yb290cGF0aCkKKyAgICAgICAgc2VsZi5fcGFy
c2VyLmV4dHJhX2luZm9bImluaWZpbGUiXSA9IHN0cihzZWxmLmluaXBhdGgpCiAgICAgICAgIHNl
bGYuX3BhcnNlci5hZGRpbmkoImFkZG9wdHMiLCAiZXh0cmEgY29tbWFuZCBsaW5lIG9wdGlvbnMi
LCAiYXJncyIpCiAgICAgICAgIHNlbGYuX3BhcnNlci5hZGRpbmkoIm1pbnZlcnNpb24iLCAibWlu
aW1hbGx5IHJlcXVpcmVkIHB5dGVzdCB2ZXJzaW9uIikKKyAgICAgICAgc2VsZi5fcGFyc2VyLmFk
ZGluaSgKKyAgICAgICAgICAgICJyZXF1aXJlZF9wbHVnaW5zIiwKKyAgICAgICAgICAgICJwbHVn
aW5zIHRoYXQgbXVzdCBiZSBwcmVzZW50IGZvciBweXRlc3QgdG8gcnVuIiwKKyAgICAgICAgICAg
IHR5cGU9ImFyZ3MiLAorICAgICAgICAgICAgZGVmYXVsdD1bXSwKKyAgICAgICAgKQogICAgICAg
ICBzZWxmLl9vdmVycmlkZV9pbmkgPSBucy5vdmVycmlkZV9pbmkgb3IgKCkKIAotICAgIGRlZiBf
Y29uc2lkZXJfaW1wb3J0aG9vayhzZWxmLCBhcmdzKToKKyAgICBkZWYgX2NvbnNpZGVyX2ltcG9y
dGhvb2soc2VsZiwgYXJnczogU2VxdWVuY2Vbc3RyXSkgLT4gTm9uZToKICAgICAgICAgIiIiSW5z
dGFsbCB0aGUgUEVQIDMwMiBpbXBvcnQgaG9vayBpZiB1c2luZyBhc3NlcnRpb24gcmV3cml0aW5n
LgogCiAgICAgICAgIE5lZWRzIHRvIHBhcnNlIHRoZSAtLWFzc2VydD08bW9kZT4gb3B0aW9uIGZy
b20gdGhlIGNvbW1hbmRsaW5lCkBAIC02NzYsMTQzICsxMTAyLDI2OSBAQCBjbGFzcyBDb25maWco
b2JqZWN0KToKICAgICAgICAgYnkgdGhlIGltcG9ydGhvb2suCiAgICAgICAgICIiIgogICAgICAg
ICBucywgdW5rbm93bl9hcmdzID0gc2VsZi5fcGFyc2VyLnBhcnNlX2tub3duX2FuZF91bmtub3du
X2FyZ3MoYXJncykKLSAgICAgICAgbW9kZSA9IG5zLmFzc2VydG1vZGUKKyAgICAgICAgbW9kZSA9
IGdldGF0dHIobnMsICJhc3NlcnRtb2RlIiwgInBsYWluIikKICAgICAgICAgaWYgbW9kZSA9PSAi
cmV3cml0ZSI6CisgICAgICAgICAgICBpbXBvcnQgX3B5dGVzdC5hc3NlcnRpb24KKwogICAgICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGhvb2sgPSBfcHl0ZXN0LmFzc2VydGlvbi5pbnN0
YWxsX2ltcG9ydGhvb2soc2VsZikKICAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvcjoKICAg
ICAgICAgICAgICAgICBtb2RlID0gInBsYWluIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICBzZWxmLl9tYXJrX3BsdWdpbnNfZm9yX3Jld3JpdGUoaG9vaykKLSAgICAgICAgX3dh
cm5fYWJvdXRfbWlzc2luZ19hc3NlcnRpb24obW9kZSkKKyAgICAgICAgc2VsZi5fd2Fybl9hYm91
dF9taXNzaW5nX2Fzc2VydGlvbihtb2RlKQogCi0gICAgZGVmIF9tYXJrX3BsdWdpbnNfZm9yX3Jl
d3JpdGUoc2VsZiwgaG9vayk6Ci0gICAgICAgICIiIgotICAgICAgICBHaXZlbiBhbiBpbXBvcnRo
b29rLCBtYXJrIGZvciByZXdyaXRlIGFueSB0b3AtbGV2ZWwKKyAgICBkZWYgX21hcmtfcGx1Z2lu
c19mb3JfcmV3cml0ZShzZWxmLCBob29rKSAtPiBOb25lOgorICAgICAgICAiIiJHaXZlbiBhbiBp
bXBvcnRob29rLCBtYXJrIGZvciByZXdyaXRlIGFueSB0b3AtbGV2ZWwKICAgICAgICAgbW9kdWxl
cyBvciBwYWNrYWdlcyBpbiB0aGUgZGlzdHJpYnV0aW9uIHBhY2thZ2UgZm9yCi0gICAgICAgIGFs
bCBweXRlc3QgcGx1Z2lucy4KLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBwa2dfcmVzb3Vy
Y2VzCi0KKyAgICAgICAgYWxsIHB5dGVzdCBwbHVnaW5zLiIiIgogICAgICAgICBzZWxmLnBsdWdp
bm1hbmFnZXIucmV3cml0ZV9ob29rID0gaG9vawogCi0gICAgICAgICMgJ1JFQ09SRCcgYXZhaWxh
YmxlIGZvciBwbHVnaW5zIGluc3RhbGxlZCBub3JtYWxseSAocGlwIGluc3RhbGwpCi0gICAgICAg
ICMgJ1NPVVJDRVMudHh0JyBhdmFpbGFibGUgZm9yIHBsdWdpbnMgaW5zdGFsbGVkIGluIGRldiBt
b2RlIChwaXAgaW5zdGFsbCAtZSkKLSAgICAgICAgIyBmb3IgaW5zdGFsbGVkIHBsdWdpbnMgJ1NP
VVJDRVMudHh0JyByZXR1cm5zIGFuIGVtcHR5IGxpc3QsIGFuZCB2aWNlLXZlcnNhCi0gICAgICAg
ICMgc28gaXQgc2hvdWxkbid0IGJlIGFuIGlzc3VlCi0gICAgICAgIG1ldGFkYXRhX2ZpbGVzID0g
IlJFQ09SRCIsICJTT1VSQ0VTLnR4dCIKKyAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZVEVT
VF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIpOgorICAgICAgICAgICAgIyBXZSBkb24ndCBhdXRv
bG9hZCBmcm9tIHNldHVwdG9vbHMgZW50cnkgcG9pbnRzLCBubyBuZWVkIHRvIGNvbnRpbnVlLgor
ICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgcGFja2FnZV9maWxlcyA9ICgKLSAgICAgICAg
ICAgIGVudHJ5LnNwbGl0KCIsIilbMF0KLSAgICAgICAgICAgIGZvciBlbnRyeXBvaW50IGluIHBr
Z19yZXNvdXJjZXMuaXRlcl9lbnRyeV9wb2ludHMoInB5dGVzdDExIikKLSAgICAgICAgICAgIGZv
ciBtZXRhZGF0YSBpbiBtZXRhZGF0YV9maWxlcwotICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVu
dHJ5cG9pbnQuZGlzdC5fZ2V0X21ldGFkYXRhKG1ldGFkYXRhKQorICAgICAgICAgICAgc3RyKGZp
bGUpCisgICAgICAgICAgICBmb3IgZGlzdCBpbiBpbXBvcnRsaWJfbWV0YWRhdGEuZGlzdHJpYnV0
aW9ucygpCisgICAgICAgICAgICBpZiBhbnkoZXAuZ3JvdXAgPT0gInB5dGVzdDExIiBmb3IgZXAg
aW4gZGlzdC5lbnRyeV9wb2ludHMpCisgICAgICAgICAgICBmb3IgZmlsZSBpbiBkaXN0LmZpbGVz
IG9yIFtdCiAgICAgICAgICkKIAogICAgICAgICBmb3IgbmFtZSBpbiBfaXRlcl9yZXdyaXRhYmxl
X21vZHVsZXMocGFja2FnZV9maWxlcyk6CiAgICAgICAgICAgICBob29rLm1hcmtfcmV3cml0ZShu
YW1lKQogCi0gICAgZGVmIF9wcmVwYXJzZShzZWxmLCBhcmdzLCBhZGRvcHRzPVRydWUpOgorICAg
IGRlZiBfdmFsaWRhdGVfYXJncyhzZWxmLCBhcmdzOiBMaXN0W3N0cl0sIHZpYTogc3RyKSAtPiBM
aXN0W3N0cl06CisgICAgICAgICIiIlZhbGlkYXRlIGtub3duIGFyZ3MuIiIiCisgICAgICAgIHNl
bGYuX3BhcnNlci5fY29uZmlnX3NvdXJjZV9oaW50ID0gdmlhICAjIHR5cGU6IGlnbm9yZQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYW5kX3Vua25v
d25fYXJncygKKyAgICAgICAgICAgICAgICBhcmdzLCBuYW1lc3BhY2U9Y29weS5jb3B5KHNlbGYu
b3B0aW9uKQorICAgICAgICAgICAgKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVs
IHNlbGYuX3BhcnNlci5fY29uZmlnX3NvdXJjZV9oaW50ICAjIHR5cGU6IGlnbm9yZQorCisgICAg
ICAgIHJldHVybiBhcmdzCisKKyAgICBkZWYgX3ByZXBhcnNlKHNlbGYsIGFyZ3M6IExpc3Rbc3Ry
XSwgYWRkb3B0czogYm9vbCA9IFRydWUpIC0+IE5vbmU6CiAgICAgICAgIGlmIGFkZG9wdHM6Ci0g
ICAgICAgICAgICBhcmdzWzpdID0gc2hsZXguc3BsaXQob3MuZW52aXJvbi5nZXQoIlBZVEVTVF9B
RERPUFRTIiwgIiIpKSArIGFyZ3MKKyAgICAgICAgICAgIGVudl9hZGRvcHRzID0gb3MuZW52aXJv
bi5nZXQoIlBZVEVTVF9BRERPUFRTIiwgIiIpCisgICAgICAgICAgICBpZiBsZW4oZW52X2FkZG9w
dHMpOgorICAgICAgICAgICAgICAgIGFyZ3NbOl0gPSAoCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3ZhbGlkYXRlX2FyZ3Moc2hsZXguc3BsaXQoZW52X2FkZG9wdHMpLCAidmlhIFBZVEVTVF9B
RERPUFRTIikKKyAgICAgICAgICAgICAgICAgICAgKyBhcmdzCisgICAgICAgICAgICAgICAgKQog
ICAgICAgICBzZWxmLl9pbml0aW5pKGFyZ3MpCiAgICAgICAgIGlmIGFkZG9wdHM6Ci0gICAgICAg
ICAgICBhcmdzWzpdID0gc2VsZi5nZXRpbmkoImFkZG9wdHMiKSArIGFyZ3MKKyAgICAgICAgICAg
IGFyZ3NbOl0gPSAoCisgICAgICAgICAgICAgICAgc2VsZi5fdmFsaWRhdGVfYXJncyhzZWxmLmdl
dGluaSgiYWRkb3B0cyIpLCAidmlhIGFkZG9wdHMgY29uZmlnIikgKyBhcmdzCisgICAgICAgICAg
ICApCisKKyAgICAgICAgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZSA9IHNlbGYuX3BhcnNlci5w
YXJzZV9rbm93bl9hcmdzKAorICAgICAgICAgICAgYXJncywgbmFtZXNwYWNlPWNvcHkuY29weShz
ZWxmLm9wdGlvbikKKyAgICAgICAgKQogICAgICAgICBzZWxmLl9jaGVja3ZlcnNpb24oKQogICAg
ICAgICBzZWxmLl9jb25zaWRlcl9pbXBvcnRob29rKGFyZ3MpCi0gICAgICAgIHNlbGYucGx1Z2lu
bWFuYWdlci5jb25zaWRlcl9wcmVwYXJzZShhcmdzKQotICAgICAgICBzZWxmLnBsdWdpbm1hbmFn
ZXIubG9hZF9zZXR1cHRvb2xzX2VudHJ5cG9pbnRzKCJweXRlc3QxMSIpCisgICAgICAgIHNlbGYu
cGx1Z2lubWFuYWdlci5jb25zaWRlcl9wcmVwYXJzZShhcmdzLCBleGNsdWRlX29ubHk9RmFsc2Up
CisgICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FV
VE9MT0FEIik6CisgICAgICAgICAgICAjIERvbid0IGF1dG9sb2FkIGZyb20gc2V0dXB0b29scyBl
bnRyeSBwb2ludC4gT25seSBleHBsaWNpdGx5IHNwZWNpZmllZAorICAgICAgICAgICAgIyBwbHVn
aW5zIGFyZSBnb2luZyB0byBiZSBsb2FkZWQuCisgICAgICAgICAgICBzZWxmLnBsdWdpbm1hbmFn
ZXIubG9hZF9zZXR1cHRvb2xzX2VudHJ5cG9pbnRzKCJweXRlc3QxMSIpCiAgICAgICAgIHNlbGYu
cGx1Z2lubWFuYWdlci5jb25zaWRlcl9lbnYoKQotICAgICAgICBzZWxmLmtub3duX2FyZ3NfbmFt
ZXNwYWNlID0gbnMgPSBzZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYXJncygKLSAgICAgICAgICAg
IGFyZ3MsIG5hbWVzcGFjZT1jb3B5LmNvcHkoc2VsZi5vcHRpb24pCisKKyAgICAgICAgc2VsZi5r
bm93bl9hcmdzX25hbWVzcGFjZSA9IHNlbGYuX3BhcnNlci5wYXJzZV9rbm93bl9hcmdzKAorICAg
ICAgICAgICAgYXJncywgbmFtZXNwYWNlPWNvcHkuY29weShzZWxmLmtub3duX2FyZ3NfbmFtZXNw
YWNlKQogICAgICAgICApCi0gICAgICAgIGlmIHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UuY29u
ZmN1dGRpciBpcyBOb25lIGFuZCBzZWxmLmluaWZpbGU6Ci0gICAgICAgICAgICBjb25mY3V0ZGly
ID0gcHkucGF0aC5sb2NhbChzZWxmLmluaWZpbGUpLmRpcm5hbWUKKworICAgICAgICBzZWxmLl92
YWxpZGF0ZV9wbHVnaW5zKCkKKyAgICAgICAgc2VsZi5fd2Fybl9hYm91dF9za2lwcGVkX3BsdWdp
bnMoKQorCisgICAgICAgIGlmIHNlbGYua25vd25fYXJnc19uYW1lc3BhY2UuY29uZmN1dGRpciBp
cyBOb25lIGFuZCBzZWxmLmluaXBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb25mY3V0
ZGlyID0gc3RyKHNlbGYuaW5pcGF0aC5wYXJlbnQpCiAgICAgICAgICAgICBzZWxmLmtub3duX2Fy
Z3NfbmFtZXNwYWNlLmNvbmZjdXRkaXIgPSBjb25mY3V0ZGlyCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHNlbGYuaG9vay5weXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cygKICAgICAgICAg
ICAgICAgICBlYXJseV9jb25maWc9c2VsZiwgYXJncz1hcmdzLCBwYXJzZXI9c2VsZi5fcGFyc2Vy
CiAgICAgICAgICAgICApCi0gICAgICAgIGV4Y2VwdCBDb25mdGVzdEltcG9ydEZhaWx1cmU6Ci0g
ICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAgICAgIGlmIG5zLmhlbHAg
b3IgbnMudmVyc2lvbjoKKyAgICAgICAgZXhjZXB0IENvbmZ0ZXN0SW1wb3J0RmFpbHVyZSBhcyBl
OgorICAgICAgICAgICAgaWYgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5oZWxwIG9yIHNlbGYu
a25vd25fYXJnc19uYW1lc3BhY2UudmVyc2lvbjoKICAgICAgICAgICAgICAgICAjIHdlIGRvbid0
IHdhbnQgdG8gcHJldmVudCAtLWhlbHAvLS12ZXJzaW9uIHRvIHdvcmsKICAgICAgICAgICAgICAg
ICAjIHNvIGp1c3QgbGV0IGlzIHBhc3MgYW5kIHByaW50IGEgd2FybmluZyBhdCB0aGUgZW5kCi0g
ICAgICAgICAgICAgICAgc2VsZi5fd2FybigiY291bGQgbm90IGxvYWQgaW5pdGlhbCBjb25mdGVz
dHMgKCVzKVxuIiAlIGUucGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmlzc3VlX2NvbmZpZ190
aW1lX3dhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgIFB5dGVzdENvbmZpZ1dhcm5pbmcoCisg
ICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgaW5pdGlhbCBjb25mdGVzdHM6
IHt9Ii5mb3JtYXQoZS5wYXRoKQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
ICAgICAgICBzdGFja2xldmVsPTIsCisgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICByYWlzZQogCi0gICAgZGVmIF9jaGVja3ZlcnNpb24oc2VsZik6
CisgICAgQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgZGVmIHB5dGVzdF9jb2xsZWN0
aW9uKHNlbGYpIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgIiIiVmFs
aWRhdGUgaW52YWxpZCBpbmkga2V5cyBhZnRlciBjb2xsZWN0aW9uIGlzIGRvbmUgc28gd2UgdGFr
ZSBpbiBhY2NvdW50CisgICAgICAgIG9wdGlvbnMgYWRkZWQgYnkgbGF0ZS1sb2FkaW5nIGNvbmZ0
ZXN0IGZpbGVzLiIiIgorICAgICAgICB5aWVsZAorICAgICAgICBzZWxmLl92YWxpZGF0ZV9jb25m
aWdfb3B0aW9ucygpCisKKyAgICBkZWYgX2NoZWNrdmVyc2lvbihzZWxmKSAtPiBOb25lOgogICAg
ICAgICBpbXBvcnQgcHl0ZXN0CiAKICAgICAgICAgbWludmVyID0gc2VsZi5pbmljZmcuZ2V0KCJt
aW52ZXJzaW9uIiwgTm9uZSkKICAgICAgICAgaWYgbWludmVyOgotICAgICAgICAgICAgdmVyID0g
bWludmVyLnNwbGl0KCIuIikKLSAgICAgICAgICAgIG15dmVyID0gcHl0ZXN0Ll9fdmVyc2lvbl9f
LnNwbGl0KCIuIikKLSAgICAgICAgICAgIGlmIG15dmVyIDwgdmVyOgorICAgICAgICAgICAgIyBJ
bXBvcnRlZCBsYXppbHkgdG8gaW1wcm92ZSBzdGFydC11cCB0aW1lLgorICAgICAgICAgICAgZnJv
bSBwYWNrYWdpbmcudmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorCisgICAgICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShtaW52ZXIsIHN0cik6CiAgICAgICAgICAgICAgICAgcmFpc2UgcHl0ZXN0LlVz
YWdlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICIlczolZDogcmVxdWlyZXMgcHl0ZXN0LSVz
LCBhY3R1YWwgcHl0ZXN0LSVzJyIKLSAgICAgICAgICAgICAgICAgICAgJSAoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluaWNmZy5jb25maWcucGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5pY2ZnLmxpbmVvZigibWludmVyc2lvbiIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbWludmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgcHl0ZXN0Ll9fdmVyc2lv
bl9fLAotICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICIlczogJ21p
bnZlcnNpb24nIG11c3QgYmUgYSBzaW5nbGUgdmFsdWUiICUgc2VsZi5pbmlwYXRoCiAgICAgICAg
ICAgICAgICAgKQogCi0gICAgZGVmIHBhcnNlKHNlbGYsIGFyZ3MsIGFkZG9wdHM9VHJ1ZSk6Ci0g
ICAgICAgICMgcGFyc2UgZ2l2ZW4gY21kbGluZSBhcmd1bWVudHMgaW50byB0aGlzIGNvbmZpZyBv
YmplY3QuCisgICAgICAgICAgICBpZiBWZXJzaW9uKG1pbnZlcikgPiBWZXJzaW9uKHB5dGVzdC5f
X3ZlcnNpb25fXyk6CisgICAgICAgICAgICAgICAgcmFpc2UgcHl0ZXN0LlVzYWdlRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgICIlczogJ21pbnZlcnNpb24nIHJlcXVpcmVzIHB5dGVzdC0lcywg
YWN0dWFsIHB5dGVzdC0lcyciCisgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuaW5pcGF0aCwg
bWludmVyLCBweXRlc3QuX192ZXJzaW9uX18sKQorICAgICAgICAgICAgICAgICkKKworICAgIGRl
ZiBfdmFsaWRhdGVfY29uZmlnX29wdGlvbnMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZm9yIGtl
eSBpbiBzb3J0ZWQoc2VsZi5fZ2V0X3Vua25vd25faW5pX2tleXMoKSk6CisgICAgICAgICAgICBz
ZWxmLl93YXJuX29yX2ZhaWxfaWZfc3RyaWN0KCJVbmtub3duIGNvbmZpZyBvcHRpb246IHt9XG4i
LmZvcm1hdChrZXkpKQorCisgICAgZGVmIF92YWxpZGF0ZV9wbHVnaW5zKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIHJlcXVpcmVkX3BsdWdpbnMgPSBzb3J0ZWQoc2VsZi5nZXRpbmkoInJlcXVpcmVk
X3BsdWdpbnMiKSkKKyAgICAgICAgaWYgbm90IHJlcXVpcmVkX3BsdWdpbnM6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICAjIEltcG9ydGVkIGxhemlseSB0byBpbXByb3ZlIHN0YXJ0LXVw
IHRpbWUuCisgICAgICAgIGZyb20gcGFja2FnaW5nLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KKyAg
ICAgICAgZnJvbSBwYWNrYWdpbmcucmVxdWlyZW1lbnRzIGltcG9ydCBJbnZhbGlkUmVxdWlyZW1l
bnQsIFJlcXVpcmVtZW50CisKKyAgICAgICAgcGx1Z2luX2luZm8gPSBzZWxmLnBsdWdpbm1hbmFn
ZXIubGlzdF9wbHVnaW5fZGlzdGluZm8oKQorICAgICAgICBwbHVnaW5fZGlzdF9pbmZvID0ge2Rp
c3QucHJvamVjdF9uYW1lOiBkaXN0LnZlcnNpb24gZm9yIF8sIGRpc3QgaW4gcGx1Z2luX2luZm99
CisKKyAgICAgICAgbWlzc2luZ19wbHVnaW5zID0gW10KKyAgICAgICAgZm9yIHJlcXVpcmVkX3Bs
dWdpbiBpbiByZXF1aXJlZF9wbHVnaW5zOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIHNwZWMgPSBSZXF1aXJlbWVudChyZXF1aXJlZF9wbHVnaW4pCisgICAgICAgICAgICBleGNl
cHQgSW52YWxpZFJlcXVpcmVtZW50OgorICAgICAgICAgICAgICAgIG1pc3NpbmdfcGx1Z2lucy5h
cHBlbmQocmVxdWlyZWRfcGx1Z2luKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIGlmIHNwZWMubmFtZSBub3QgaW4gcGx1Z2luX2Rpc3RfaW5mbzoKKyAgICAgICAgICAg
ICAgICBtaXNzaW5nX3BsdWdpbnMuYXBwZW5kKHJlcXVpcmVkX3BsdWdpbikKKyAgICAgICAgICAg
IGVsaWYgVmVyc2lvbihwbHVnaW5fZGlzdF9pbmZvW3NwZWMubmFtZV0pIG5vdCBpbiBzcGVjLnNw
ZWNpZmllcjoKKyAgICAgICAgICAgICAgICBtaXNzaW5nX3BsdWdpbnMuYXBwZW5kKHJlcXVpcmVk
X3BsdWdpbikKKworICAgICAgICBpZiBtaXNzaW5nX3BsdWdpbnM6CisgICAgICAgICAgICByYWlz
ZSBVc2FnZUVycm9yKAorICAgICAgICAgICAgICAgICJNaXNzaW5nIHJlcXVpcmVkIHBsdWdpbnM6
IHt9Ii5mb3JtYXQoIiwgIi5qb2luKG1pc3NpbmdfcGx1Z2lucykpLAorICAgICAgICAgICAgKQor
CisgICAgZGVmIF93YXJuX29yX2ZhaWxfaWZfc3RyaWN0KHNlbGYsIG1lc3NhZ2U6IHN0cikgLT4g
Tm9uZToKKyAgICAgICAgaWYgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5zdHJpY3RfY29uZmln
OgorICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcihtZXNzYWdlKQorCisgICAgICAgIHNlbGYu
aXNzdWVfY29uZmlnX3RpbWVfd2FybmluZyhQeXRlc3RDb25maWdXYXJuaW5nKG1lc3NhZ2UpLCBz
dGFja2xldmVsPTMpCisKKyAgICBkZWYgX2dldF91bmtub3duX2luaV9rZXlzKHNlbGYpIC0+IExp
c3Rbc3RyXToKKyAgICAgICAgcGFyc2VyX2luaWNmZyA9IHNlbGYuX3BhcnNlci5faW5pZGljdAor
ICAgICAgICByZXR1cm4gW25hbWUgZm9yIG5hbWUgaW4gc2VsZi5pbmljZmcgaWYgbmFtZSBub3Qg
aW4gcGFyc2VyX2luaWNmZ10KKworICAgIGRlZiBwYXJzZShzZWxmLCBhcmdzOiBMaXN0W3N0cl0s
IGFkZG9wdHM6IGJvb2wgPSBUcnVlKSAtPiBOb25lOgorICAgICAgICAjIFBhcnNlIGdpdmVuIGNt
ZGxpbmUgYXJndW1lbnRzIGludG8gdGhpcyBjb25maWcgb2JqZWN0LgogICAgICAgICBhc3NlcnQg
bm90IGhhc2F0dHIoCiAgICAgICAgICAgICBzZWxmLCAiYXJncyIKICAgICAgICAgKSwgImNhbiBv
bmx5IHBhcnNlIGNtZGxpbmUgYXJncyBhdCBtb3N0IG9uY2UgcGVyIENvbmZpZyBvYmplY3QiCi0g
ICAgICAgIHNlbGYuX29yaWdhcmdzID0gYXJncwogICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2Fk
ZGhvb2tzLmNhbGxfaGlzdG9yaWMoCiAgICAgICAgICAgICBrd2FyZ3M9ZGljdChwbHVnaW5tYW5h
Z2VyPXNlbGYucGx1Z2lubWFuYWdlcikKICAgICAgICAgKQogICAgICAgICBzZWxmLl9wcmVwYXJz
ZShhcmdzLCBhZGRvcHRzPWFkZG9wdHMpCiAgICAgICAgICMgWFhYIGRlcHJlY2F0ZWQgaG9vazoK
ICAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9jbWRsaW5lX3ByZXBhcnNlKGNvbmZpZz1zZWxmLCBh
cmdzPWFyZ3MpCi0gICAgICAgIHNlbGYuX3BhcnNlci5hZnRlcl9wcmVwYXJzZSA9IFRydWUKKyAg
ICAgICAgc2VsZi5fcGFyc2VyLmFmdGVyX3ByZXBhcnNlID0gVHJ1ZSAgIyB0eXBlOiBpZ25vcmUK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYXJncyA9IHNlbGYuX3BhcnNlci5wYXJzZV9zZXRv
cHRpb24oCiAgICAgICAgICAgICAgICAgYXJncywgc2VsZi5vcHRpb24sIG5hbWVzcGFjZT1zZWxm
Lm9wdGlvbgogICAgICAgICAgICAgKQogICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAg
ICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgICAgICBpZiBjd2QgPT0gc2Vs
Zi5yb290ZGlyOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuaW52b2NhdGlvbl9wYXJhbXMuZGly
ID09IHNlbGYucm9vdHBhdGg6CiAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWxmLmdldGlu
aSgidGVzdHBhdGhzIikKICAgICAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAg
ICAgICAgICAgYXJncyA9IFtjd2RdCisgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbc3RyKHNl
bGYuaW52b2NhdGlvbl9wYXJhbXMuZGlyKV0KICAgICAgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MK
ICAgICAgICAgZXhjZXB0IFByaW50SGVscDoKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiBh
ZGRpbml2YWx1ZV9saW5lKHNlbGYsIG5hbWUsIGxpbmUpOgotICAgICAgICAiIiIgYWRkIGEgbGlu
ZSB0byBhbiBpbmktZmlsZSBvcHRpb24uIFRoZSBvcHRpb24gbXVzdCBoYXZlIGJlZW4KLSAgICAg
ICAgZGVjbGFyZWQgYnV0IG1pZ2h0IG5vdCB5ZXQgYmUgc2V0IGluIHdoaWNoIGNhc2UgdGhlIGxp
bmUgYmVjb21lcyB0aGUKLSAgICAgICAgdGhlIGZpcnN0IGxpbmUgaW4gaXRzIHZhbHVlLiAiIiIK
KyAgICBkZWYgaXNzdWVfY29uZmlnX3RpbWVfd2FybmluZyhzZWxmLCB3YXJuaW5nOiBXYXJuaW5n
LCBzdGFja2xldmVsOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIklzc3VlIGFuZCBoYW5kbGUg
YSB3YXJuaW5nIGR1cmluZyB0aGUgImNvbmZpZ3VyZSIgc3RhZ2UuCisKKyAgICAgICAgRHVyaW5n
IGBgcHl0ZXN0X2NvbmZpZ3VyZWBgIHdlIGNhbid0IGNhcHR1cmUgd2FybmluZ3MgdXNpbmcgdGhl
IGBgY2F0Y2hfd2FybmluZ3NfZm9yX2l0ZW1gYAorICAgICAgICBmdW5jdGlvbiBiZWNhdXNlIGl0
IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIGhvb2t3cmFwcGVycyBhcm91bmQgYGBweXRlc3RfY29u
ZmlndXJlYGAuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBtYWlubHkgaW50ZW5kZWQgZm9y
IHBsdWdpbnMgdGhhdCBuZWVkIHRvIGlzc3VlIHdhcm5pbmdzIGR1cmluZworICAgICAgICBgYHB5
dGVzdF9jb25maWd1cmVgYCAob3Igc2ltaWxhciBzdGFnZXMpLgorCisgICAgICAgIDpwYXJhbSB3
YXJuaW5nOiBUaGUgd2FybmluZyBpbnN0YW5jZS4KKyAgICAgICAgOnBhcmFtIHN0YWNrbGV2ZWw6
IHN0YWNrbGV2ZWwgZm9yd2FyZGVkIHRvIHdhcm5pbmdzLndhcm4uCisgICAgICAgICIiIgorICAg
ICAgICBpZiBzZWxmLnBsdWdpbm1hbmFnZXIuaXNfYmxvY2tlZCgid2FybmluZ3MiKToKKyAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIGNtZGxpbmVfZmlsdGVycyA9IHNlbGYua25vd25fYXJn
c19uYW1lc3BhY2UucHl0aG9ud2FybmluZ3Mgb3IgW10KKyAgICAgICAgY29uZmlnX2ZpbHRlcnMg
PSBzZWxmLmdldGluaSgiZmlsdGVyd2FybmluZ3MiKQorCisgICAgICAgIHdpdGggd2FybmluZ3Mu
Y2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHJlY29yZHM6CisgICAgICAgICAgICB3YXJu
aW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIsIHR5cGUod2FybmluZykpCisgICAgICAgICAgICBh
cHBseV93YXJuaW5nX2ZpbHRlcnMoY29uZmlnX2ZpbHRlcnMsIGNtZGxpbmVfZmlsdGVycykKKyAg
ICAgICAgICAgIHdhcm5pbmdzLndhcm4od2FybmluZywgc3RhY2tsZXZlbD1zdGFja2xldmVsKQor
CisgICAgICAgIGlmIHJlY29yZHM6CisgICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUo
c3RhY2tsZXZlbCAtIDEpCisgICAgICAgICAgICBsb2NhdGlvbiA9IGZyYW1lLmZfY29kZS5jb19m
aWxlbmFtZSwgZnJhbWUuZl9saW5lbm8sIGZyYW1lLmZfY29kZS5jb19uYW1lCisgICAgICAgICAg
ICBzZWxmLmhvb2sucHl0ZXN0X3dhcm5pbmdfY2FwdHVyZWQuY2FsbF9oaXN0b3JpYygKKyAgICAg
ICAgICAgICAgICBrd2FyZ3M9ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ19tZXNz
YWdlPXJlY29yZHNbMF0sCisgICAgICAgICAgICAgICAgICAgIHdoZW49ImNvbmZpZyIsCisgICAg
ICAgICAgICAgICAgICAgIGl0ZW09Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAg
c2VsZi5ob29rLnB5dGVzdF93YXJuaW5nX3JlY29yZGVkLmNhbGxfaGlzdG9yaWMoCisgICAgICAg
ICAgICAgICAga3dhcmdzPWRpY3QoCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdfbWVzc2Fn
ZT1yZWNvcmRzWzBdLAorICAgICAgICAgICAgICAgICAgICB3aGVuPSJjb25maWciLAorICAgICAg
ICAgICAgICAgICAgICBub2RlaWQ9IiIsCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPWxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBhZGRp
bml2YWx1ZV9saW5lKHNlbGYsIG5hbWU6IHN0ciwgbGluZTogc3RyKSAtPiBOb25lOgorICAgICAg
ICAiIiJBZGQgYSBsaW5lIHRvIGFuIGluaS1maWxlIG9wdGlvbi4gVGhlIG9wdGlvbiBtdXN0IGhh
dmUgYmVlbgorICAgICAgICBkZWNsYXJlZCBidXQgbWlnaHQgbm90IHlldCBiZSBzZXQgaW4gd2hp
Y2ggY2FzZSB0aGUgbGluZSBiZWNvbWVzCisgICAgICAgIHRoZSBmaXJzdCBsaW5lIGluIGl0cyB2
YWx1ZS4iIiIKICAgICAgICAgeCA9IHNlbGYuZ2V0aW5pKG5hbWUpCiAgICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKHgsIGxpc3QpCiAgICAgICAgIHguYXBwZW5kKGxpbmUpICAjIG1vZGlmaWVzIHRo
ZSBjYWNoZWQgbGlzdCBpbmxpbmUKIAotICAgIGRlZiBnZXRpbmkoc2VsZiwgbmFtZSk6Ci0gICAg
ICAgICIiIiByZXR1cm4gY29uZmlndXJhdGlvbiB2YWx1ZSBmcm9tIGFuIDpyZWY6YGluaSBmaWxl
IDxpbmlmaWxlcz5gLiBJZiB0aGUKLSAgICAgICAgc3BlY2lmaWVkIG5hbWUgaGFzbid0IGJlZW4g
cmVnaXN0ZXJlZCB0aHJvdWdoIGEgcHJpb3IKLSAgICAgICAgOnB5OmZ1bmM6YHBhcnNlci5hZGRp
bmkgPF9weXRlc3QuY29uZmlnLlBhcnNlci5hZGRpbmk+YAotICAgICAgICBjYWxsICh1c3VhbGx5
IGZyb20gYSBwbHVnaW4pLCBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAiIiIKKyAgICBkZWYgZ2V0
aW5pKHNlbGYsIG5hbWU6IHN0cik6CisgICAgICAgICIiIlJldHVybiBjb25maWd1cmF0aW9uIHZh
bHVlIGZyb20gYW4gOnJlZjpgaW5pIGZpbGUgPGNvbmZpZ2ZpbGVzPmAuCisKKyAgICAgICAgSWYg
dGhlIHNwZWNpZmllZCBuYW1lIGhhc24ndCBiZWVuIHJlZ2lzdGVyZWQgdGhyb3VnaCBhIHByaW9y
CisgICAgICAgIDpweTpmdW5jOmBwYXJzZXIuYWRkaW5pIDxfcHl0ZXN0LmNvbmZpZy5hcmdwYXJz
aW5nLlBhcnNlci5hZGRpbmk+YAorICAgICAgICBjYWxsICh1c3VhbGx5IGZyb20gYSBwbHVnaW4p
LCBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX2luaWNhY2hlW25hbWVdCiAgICAgICAgIGV4Y2VwdCBLZXlF
cnJvcjoKICAgICAgICAgICAgIHNlbGYuX2luaWNhY2hlW25hbWVdID0gdmFsID0gc2VsZi5fZ2V0
aW5pKG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsCiAKLSAgICBkZWYgX2dldGluaShzZWxm
LCBuYW1lKToKKyAgICBkZWYgX2dldGluaShzZWxmLCBuYW1lOiBzdHIpOgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgdHlwZSwgZGVmYXVsdCA9IHNlbGYuX3BhcnNlci5f
aW5pZGljdFtuYW1lXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCJ1bmtub3duIGNvbmZpZ3VyYXRpb24gdmFsdWU6ICVyIiAlIChuYW1lLCkp
Ci0gICAgICAgIHZhbHVlID0gc2VsZi5fZ2V0X292ZXJyaWRlX2luaV92YWx1ZShuYW1lKQotICAg
ICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZToKKyAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gY29uZmlndXJhdGlvbiB2YWx1ZTog
eyFyfSIuZm9ybWF0KG5hbWUpKSBmcm9tIGUKKyAgICAgICAgb3ZlcnJpZGVfdmFsdWUgPSBzZWxm
Ll9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKG5hbWUpCisgICAgICAgIGlmIG92ZXJyaWRlX3ZhbHVl
IGlzIE5vbmU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxm
LmluaWNmZ1tuYW1lXQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtODIxLDU4ICsx
MzczLDg2IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIHR5cGUg
aXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFtdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB2YWx1ZSA9IG92ZXJyaWRlX3Zh
bHVlCisgICAgICAgICMgQ29lcmNlIHRoZSB2YWx1ZXMgYmFzZWQgb24gdHlwZXMuCisgICAgICAg
ICMKKyAgICAgICAgIyBOb3RlOiBzb21lIGNvZXJjaW9ucyBhcmUgb25seSByZXF1aXJlZCBpZiB3
ZSBhcmUgcmVhZGluZyBmcm9tIC5pbmkgZmlsZXMsIGJlY2F1c2UKKyAgICAgICAgIyB0aGUgZmls
ZSBmb3JtYXQgZG9lc24ndCBjb250YWluIHR5cGUgaW5mb3JtYXRpb24sIGJ1dCB3aGVuIHJlYWRp
bmcgZnJvbSB0b21sIHdlIHdpbGwKKyAgICAgICAgIyBnZXQgZWl0aGVyIHN0ciBvciBsaXN0IG9m
IHN0ciB2YWx1ZXMgKHNlZSBfcGFyc2VfaW5pX2NvbmZpZ19mcm9tX3B5cHJvamVjdF90b21sKS4K
KyAgICAgICAgIyBGb3IgZXhhbXBsZToKKyAgICAgICAgIworICAgICAgICAjICAgaW5pOgorICAg
ICAgICAjICAgICBhX2xpbmVfbGlzdCA9ICJ0ZXN0cyBhY2NlcHRhbmNlIgorICAgICAgICAjICAg
aW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNwbGl0IHRoZSBzdHJpbmcgdG8gb2J0YWluIGEgbGlz
dCBvZiBzdHJpbmdzLgorICAgICAgICAjCisgICAgICAgICMgICB0b21sOgorICAgICAgICAjICAg
ICBhX2xpbmVfbGlzdCA9IFsidGVzdHMiLCAiYWNjZXB0YW5jZSJdCisgICAgICAgICMgICBpbiB0
aGlzIGNhc2UsIHdlIGFscmVhZHkgaGF2ZSBhIGxpc3QgcmVhZHkgdG8gdXNlLgorICAgICAgICAj
CiAgICAgICAgIGlmIHR5cGUgPT0gInBhdGhsaXN0IjoKLSAgICAgICAgICAgIGRwID0gcHkucGF0
aC5sb2NhbChzZWxmLmluaWNmZy5jb25maWcucGF0aCkuZGlycGF0aCgpCi0gICAgICAgICAgICB2
YWx1ZXMgPSBbXQotICAgICAgICAgICAgZm9yIHJlbHBhdGggaW4gc2hsZXguc3BsaXQodmFsdWUp
OgotICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZHAuam9pbihyZWxwYXRoLCBhYnM9VHJ1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVzCisgICAgICAgICAgICAjIFRPRE86IFRoaXMg
YXNzZXJ0IGlzIHByb2JhYmx5IG5vdCB2YWxpZCBpbiBhbGwgY2FzZXMuCisgICAgICAgICAgICBh
c3NlcnQgc2VsZi5pbmlwYXRoIGlzIG5vdCBOb25lCisgICAgICAgICAgICBkcCA9IHNlbGYuaW5p
cGF0aC5wYXJlbnQKKyAgICAgICAgICAgIGlucHV0X3ZhbHVlcyA9IHNobGV4LnNwbGl0KHZhbHVl
KSBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpIGVsc2UgdmFsdWUKKyAgICAgICAgICAgIHJldHVy
biBbcHkucGF0aC5sb2NhbChzdHIoZHAgLyB4KSkgZm9yIHggaW4gaW5wdXRfdmFsdWVzXQogICAg
ICAgICBlbGlmIHR5cGUgPT0gImFyZ3MiOgotICAgICAgICAgICAgcmV0dXJuIHNobGV4LnNwbGl0
KHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHNobGV4LnNwbGl0KHZhbHVlKSBpZiBpc2luc3Rh
bmNlKHZhbHVlLCBzdHIpIGVsc2UgdmFsdWUKICAgICAgICAgZWxpZiB0eXBlID09ICJsaW5lbGlz
dCI6Ci0gICAgICAgICAgICByZXR1cm4gW3QgZm9yIHQgaW4gbWFwKGxhbWJkYSB4OiB4LnN0cmlw
KCksIHZhbHVlLnNwbGl0KCJcbiIpKSBpZiB0XQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2
YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gW3QgZm9yIHQgaW4gbWFwKGxhbWJk
YSB4OiB4LnN0cmlwKCksIHZhbHVlLnNwbGl0KCJcbiIpKSBpZiB0XQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgZWxpZiB0eXBlID09ICJi
b29sIjoKLSAgICAgICAgICAgIHJldHVybiBib29sKF9zdHJ0b2Jvb2wodmFsdWUuc3RyaXAoKSkp
CisgICAgICAgICAgICByZXR1cm4gX3N0cnRvYm9vbChzdHIodmFsdWUpLnN0cmlwKCkpCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBhc3NlcnQgdHlwZSBpcyBOb25lCiAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUKIAotICAgIGRlZiBfZ2V0Y29uZnRlc3RfcGF0aGxpc3Qoc2VsZiwgbmFtZSwg
cGF0aCk6CisgICAgZGVmIF9nZXRjb25mdGVzdF9wYXRobGlzdCgKKyAgICAgICAgc2VsZiwgbmFt
ZTogc3RyLCBwYXRoOiBweS5wYXRoLmxvY2FsCisgICAgKSAtPiBPcHRpb25hbFtMaXN0W3B5LnBh
dGgubG9jYWxdXToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kLCByZWxyb290cyA9IHNl
bGYucGx1Z2lubWFuYWdlci5fcmdldF93aXRoX2NvbmZtb2QobmFtZSwgcGF0aCkKKyAgICAgICAg
ICAgIG1vZCwgcmVscm9vdHMgPSBzZWxmLnBsdWdpbm1hbmFnZXIuX3JnZXRfd2l0aF9jb25mbW9k
KAorICAgICAgICAgICAgICAgIG5hbWUsIHBhdGgsIHNlbGYuZ2V0b3B0aW9uKCJpbXBvcnRtb2Rl
IikKKyAgICAgICAgICAgICkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAg
cmV0dXJuIE5vbmUKICAgICAgICAgbW9kcGF0aCA9IHB5LnBhdGgubG9jYWwobW9kLl9fZmlsZV9f
KS5kaXJwYXRoKCkKLSAgICAgICAgdmFsdWVzID0gW10KKyAgICAgICAgdmFsdWVzID0gW10gICMg
dHlwZTogTGlzdFtweS5wYXRoLmxvY2FsXQogICAgICAgICBmb3IgcmVscm9vdCBpbiByZWxyb290
czoKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJlbHJvb3QsIHB5LnBhdGgubG9jYWwp
OgotICAgICAgICAgICAgICAgIHJlbHJvb3QgPSByZWxyb290LnJlcGxhY2UoIi8iLCBweS5wYXRo
LmxvY2FsLnNlcCkKKyAgICAgICAgICAgICAgICByZWxyb290ID0gcmVscm9vdC5yZXBsYWNlKCIv
Iiwgb3Muc2VwKQogICAgICAgICAgICAgICAgIHJlbHJvb3QgPSBtb2RwYXRoLmpvaW4ocmVscm9v
dCwgYWJzPVRydWUpCiAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHJlbHJvb3QpCiAgICAgICAg
IHJldHVybiB2YWx1ZXMKIAotICAgIGRlZiBfZ2V0X292ZXJyaWRlX2luaV92YWx1ZShzZWxmLCBu
YW1lKToKKyAgICBkZWYgX2dldF9vdmVycmlkZV9pbmlfdmFsdWUoc2VsZiwgbmFtZTogc3RyKSAt
PiBPcHRpb25hbFtzdHJdOgogICAgICAgICB2YWx1ZSA9IE5vbmUKLSAgICAgICAgIyBvdmVycmlk
ZV9pbmkgaXMgYSBsaXN0IG9mICJpbmk9dmFsdWUiIG9wdGlvbnMKLSAgICAgICAgIyBhbHdheXMg
dXNlIHRoZSBsYXN0IGl0ZW0gaWYgbXVsdGlwbGUgdmFsdWVzIGFyZSBzZXQgZm9yIHNhbWUgaW5p
LW5hbWUsCi0gICAgICAgICMgZS5nLiAtbyBmb289YmFyMSAtbyBmb289YmFyMiB3aWxsIHNldCBm
b28gdG8gYmFyMgorICAgICAgICAjIG92ZXJyaWRlX2luaSBpcyBhIGxpc3Qgb2YgImluaT12YWx1
ZSIgb3B0aW9ucy4KKyAgICAgICAgIyBBbHdheXMgdXNlIHRoZSBsYXN0IGl0ZW0gaWYgbXVsdGlw
bGUgdmFsdWVzIGFyZSBzZXQgZm9yIHNhbWUgaW5pLW5hbWUsCisgICAgICAgICMgZS5nLiAtbyBm
b289YmFyMSAtbyBmb289YmFyMiB3aWxsIHNldCBmb28gdG8gYmFyMi4KICAgICAgICAgZm9yIGlu
aV9jb25maWcgaW4gc2VsZi5fb3ZlcnJpZGVfaW5pOgogICAgICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgICAgIGtleSwgdXNlcl9pbmlfdmFsdWUgPSBpbmlfY29uZmlnLnNwbGl0KCI9IiwgMSkK
LSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIFVz
YWdlRXJyb3IoIi1vLy0tb3ZlcnJpZGUtaW5pIGV4cGVjdHMgb3B0aW9uPXZhbHVlIHN0eWxlLiIp
CisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHJh
aXNlIFVzYWdlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICItby8tLW92ZXJyaWRlLWluaSBl
eHBlY3RzIG9wdGlvbj12YWx1ZSBzdHlsZSAoZ290OiB7IXJ9KS4iLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluaV9jb25maWcKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICkgZnJvbSBlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlm
IGtleSA9PSBuYW1lOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHVzZXJfaW5pX3ZhbHVl
CiAgICAgICAgIHJldHVybiB2YWx1ZQogCi0gICAgZGVmIGdldG9wdGlvbihzZWxmLCBuYW1lLCBk
ZWZhdWx0PW5vdHNldCwgc2tpcD1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gY29tbWFuZCBs
aW5lIG9wdGlvbiB2YWx1ZS4KKyAgICBkZWYgZ2V0b3B0aW9uKHNlbGYsIG5hbWU6IHN0ciwgZGVm
YXVsdD1ub3RzZXQsIHNraXA6IGJvb2wgPSBGYWxzZSk6CisgICAgICAgICIiIlJldHVybiBjb21t
YW5kIGxpbmUgb3B0aW9uIHZhbHVlLgogCi0gICAgICAgIDphcmcgbmFtZTogbmFtZSBvZiB0aGUg
b3B0aW9uLiAgWW91IG1heSBhbHNvIHNwZWNpZnkKKyAgICAgICAgOnBhcmFtIG5hbWU6IE5hbWUg
b2YgdGhlIG9wdGlvbi4gIFlvdSBtYXkgYWxzbyBzcGVjaWZ5CiAgICAgICAgICAgICB0aGUgbGl0
ZXJhbCBgYC0tT1BUYGAgb3B0aW9uIGluc3RlYWQgb2YgdGhlICJkZXN0IiBvcHRpb24gbmFtZS4K
LSAgICAgICAgOmFyZyBkZWZhdWx0OiBkZWZhdWx0IHZhbHVlIGlmIG5vIG9wdGlvbiBvZiB0aGF0
IG5hbWUgZXhpc3RzLgotICAgICAgICA6YXJnIHNraXA6IGlmIFRydWUgcmFpc2UgcHl0ZXN0LnNr
aXAgaWYgb3B0aW9uIGRvZXMgbm90IGV4aXN0cworICAgICAgICA6cGFyYW0gZGVmYXVsdDogRGVm
YXVsdCB2YWx1ZSBpZiBubyBvcHRpb24gb2YgdGhhdCBuYW1lIGV4aXN0cy4KKyAgICAgICAgOnBh
cmFtIHNraXA6IElmIFRydWUsIHJhaXNlIHB5dGVzdC5za2lwIGlmIG9wdGlvbiBkb2VzIG5vdCBl
eGlzdHMKICAgICAgICAgICAgIG9yIGhhcyBhIE5vbmUgdmFsdWUuCiAgICAgICAgICIiIgogICAg
ICAgICBuYW1lID0gc2VsZi5fb3B0MmRlc3QuZ2V0KG5hbWUsIG5hbWUpCkBAIC04ODEsOTkgKzE0
NjEsMTQ1IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgaWYgdmFsIGlzIE5v
bmUgYW5kIHNraXA6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkK
ICAgICAgICAgICAgIHJldHVybiB2YWwKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgor
ICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKICAgICAgICAgICAgIGlmIGRlZmF1
bHQgaXMgbm90IG5vdHNldDoKICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgICAg
ICAgICAgaWYgc2tpcDoKICAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAg
ICAgICAgICBweXRlc3Quc2tpcCgibm8gJXIgb3B0aW9uIGZvdW5kIiAlIChuYW1lLCkpCi0gICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBvcHRpb24gbmFtZWQgJXIiICUgKG5hbWUsKSkK
KyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgibm8geyFyfSBvcHRpb24gZm91bmQiLmZvcm1h
dChuYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIG9wdGlvbiBuYW1lZCB7
IXJ9Ii5mb3JtYXQobmFtZSkpIGZyb20gZQogCi0gICAgZGVmIGdldHZhbHVlKHNlbGYsIG5hbWUs
IHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCwgdXNlIGdldG9wdGlvbigpKSAi
IiIKKyAgICBkZWYgZ2V0dmFsdWUoc2VsZiwgbmFtZTogc3RyLCBwYXRoPU5vbmUpOgorICAgICAg
ICAiIiJEZXByZWNhdGVkLCB1c2UgZ2V0b3B0aW9uKCkgaW5zdGVhZC4iIiIKICAgICAgICAgcmV0
dXJuIHNlbGYuZ2V0b3B0aW9uKG5hbWUpCiAKLSAgICBkZWYgZ2V0dmFsdWVvcnNraXAoc2VsZiwg
bmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiIChkZXByZWNhdGVkLCB1c2UgZ2V0b3B0aW9u
KHNraXA9VHJ1ZSkpICIiIgorICAgIGRlZiBnZXR2YWx1ZW9yc2tpcChzZWxmLCBuYW1lOiBzdHIs
IHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkRlcHJlY2F0ZWQsIHVzZSBnZXRvcHRpb24oc2tpcD1U
cnVlKSBpbnN0ZWFkLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5nZXRvcHRpb24obmFtZSwgc2tp
cD1UcnVlKQogCisgICAgZGVmIF93YXJuX2Fib3V0X21pc3NpbmdfYXNzZXJ0aW9uKHNlbGYsIG1v
ZGU6IHN0cikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IF9hc3NlcnRpb25fc3VwcG9ydGVkKCk6
CisgICAgICAgICAgICBpZiBtb2RlID09ICJwbGFpbiI6CisgICAgICAgICAgICAgICAgd2Fybmlu
Z190ZXh0ID0gKAorICAgICAgICAgICAgICAgICAgICAiQVNTRVJUSU9OUyBBUkUgTk9UIEVYRUNV
VEVEIgorICAgICAgICAgICAgICAgICAgICAiIGFuZCBGQUlMSU5HIFRFU1RTIFdJTEwgUEFTUy4g
IEFyZSB5b3UiCisgICAgICAgICAgICAgICAgICAgICIgdXNpbmcgcHl0aG9uIC1PPyIKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdhcm5pbmdf
dGV4dCA9ICgKKyAgICAgICAgICAgICAgICAgICAgImFzc2VydGlvbnMgbm90IGluIHRlc3QgbW9k
dWxlcyBvciIKKyAgICAgICAgICAgICAgICAgICAgIiBwbHVnaW5zIHdpbGwgYmUgaWdub3JlZCIK
KyAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIGFzc2VydCBzdGF0ZW1lbnRzIGFyZSBub3Qg
ZXhlY3V0ZWQgIgorICAgICAgICAgICAgICAgICAgICAiYnkgdGhlIHVuZGVybHlpbmcgUHl0aG9u
IGludGVycHJldGVyICIKKyAgICAgICAgICAgICAgICAgICAgIihhcmUgeW91IHVzaW5nIHB5dGhv
biAtTz8pXG4iCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5pc3N1ZV9jb25m
aWdfdGltZV93YXJuaW5nKAorICAgICAgICAgICAgICAgIFB5dGVzdENvbmZpZ1dhcm5pbmcod2Fy
bmluZ190ZXh0KSwgc3RhY2tsZXZlbD0zLAorICAgICAgICAgICAgKQogCi1kZWYgX2Fzc2VydGlv
bl9zdXBwb3J0ZWQoKToKKyAgICBkZWYgX3dhcm5fYWJvdXRfc2tpcHBlZF9wbHVnaW5zKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgIGZvciBtb2R1bGVfbmFtZSwgbXNnIGluIHNlbGYucGx1Z2lubWFu
YWdlci5za2lwcGVkX3BsdWdpbnM6CisgICAgICAgICAgICBzZWxmLmlzc3VlX2NvbmZpZ190aW1l
X3dhcm5pbmcoCisgICAgICAgICAgICAgICAgUHl0ZXN0Q29uZmlnV2FybmluZygic2tpcHBlZCBw
bHVnaW4geyFyfToge30iLmZvcm1hdChtb2R1bGVfbmFtZSwgbXNnKSksCisgICAgICAgICAgICAg
ICAgc3RhY2tsZXZlbD0yLAorICAgICAgICAgICAgKQorCisKK2RlZiBfYXNzZXJ0aW9uX3N1cHBv
cnRlZCgpIC0+IGJvb2w6CiAgICAgdHJ5OgogICAgICAgICBhc3NlcnQgRmFsc2UKICAgICBleGNl
cHQgQXNzZXJ0aW9uRXJyb3I6CiAgICAgICAgIHJldHVybiBUcnVlCiAgICAgZWxzZToKLSAgICAg
ICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF93YXJuX2Fib3V0X21pc3NpbmdfYXNzZXJ0aW9uKG1v
ZGUpOgotICAgIGlmIG5vdCBfYXNzZXJ0aW9uX3N1cHBvcnRlZCgpOgotICAgICAgICBpZiBtb2Rl
ID09ICJwbGFpbiI6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAotICAgICAgICAgICAg
ICAgICJXQVJOSU5HOiBBU1NFUlRJT05TIEFSRSBOT1QgRVhFQ1VURUQiCi0gICAgICAgICAgICAg
ICAgIiBhbmQgRkFJTElORyBURVNUUyBXSUxMIFBBU1MuICBBcmUgeW91IgotICAgICAgICAgICAg
ICAgICIgdXNpbmcgcHl0aG9uIC1PPyIKLSAgICAgICAgICAgICkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCi0gICAgICAgICAgICAgICAgIldBUk5JTkc6IGFz
c2VydGlvbnMgbm90IGluIHRlc3QgbW9kdWxlcyBvciIKLSAgICAgICAgICAgICAgICAiIHBsdWdp
bnMgd2lsbCBiZSBpZ25vcmVkIgotICAgICAgICAgICAgICAgICIgYmVjYXVzZSBhc3NlcnQgc3Rh
dGVtZW50cyBhcmUgbm90IGV4ZWN1dGVkICIKLSAgICAgICAgICAgICAgICAiYnkgdGhlIHVuZGVy
bHlpbmcgUHl0aG9uIGludGVycHJldGVyICIKLSAgICAgICAgICAgICAgICAiKGFyZSB5b3UgdXNp
bmcgcHl0aG9uIC1PPylcbiIKLSAgICAgICAgICAgICkKLQotCi1kZWYgc2V0bnMob2JqLCBkaWMp
OgotICAgIGltcG9ydCBweXRlc3QKLQotICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBkaWMuaXRlbXMo
KToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6Ci0gICAgICAgICAgICBtb2Qg
PSBnZXRhdHRyKG9iaiwgbmFtZSwgTm9uZSkKLSAgICAgICAgICAgIGlmIG1vZCBpcyBOb25lOgot
ICAgICAgICAgICAgICAgIG1vZG5hbWUgPSAicHl0ZXN0LiVzIiAlIG5hbWUKLSAgICAgICAgICAg
ICAgICBtb2QgPSB0eXBlcy5Nb2R1bGVUeXBlKG1vZG5hbWUpCi0gICAgICAgICAgICAgICAgc3lz
Lm1vZHVsZXNbbW9kbmFtZV0gPSBtb2QKLSAgICAgICAgICAgICAgICBtb2QuX19hbGxfXyA9IFtd
Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIG1vZCkKLSAgICAgICAgICAgIG9i
ai5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2V0bnMobW9kLCB2YWx1ZSkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHNldGF0dHIob2JqLCBuYW1lLCB2YWx1ZSkKLSAgICAg
ICAgICAgIG9iai5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgIyBpZiBvYmogIT0g
cHl0ZXN0OgotICAgICAgICAgICAgIyAgICBweXRlc3QuX19hbGxfXy5hcHBlbmQobmFtZSkKLSAg
ICAgICAgICAgIHNldGF0dHIocHl0ZXN0LCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIEZh
bHNlICAjIHR5cGU6IGlnbm9yZVt1bnJlYWNoYWJsZV0KIAogCi1kZWYgY3JlYXRlX3Rlcm1pbmFs
X3dyaXRlcihjb25maWcsICphcmdzLCAqKmt3YXJncyk6CitkZWYgY3JlYXRlX3Rlcm1pbmFsX3dy
aXRlcigKKyAgICBjb25maWc6IENvbmZpZywgZmlsZTogT3B0aW9uYWxbVGV4dElPXSA9IE5vbmUK
KykgLT4gVGVybWluYWxXcml0ZXI6CiAgICAgIiIiQ3JlYXRlIGEgVGVybWluYWxXcml0ZXIgaW5z
dGFuY2UgY29uZmlndXJlZCBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMKLSAgICBpbiB0aGUgY29u
ZmlnIG9iamVjdC4gRXZlcnkgY29kZSB3aGljaCByZXF1aXJlcyBhIFRlcm1pbmFsV3JpdGVyIG9i
amVjdAotICAgIGFuZCBoYXMgYWNjZXNzIHRvIGEgY29uZmlnIG9iamVjdCBzaG91bGQgdXNlIHRo
aXMgZnVuY3Rpb24uCisgICAgaW4gdGhlIGNvbmZpZyBvYmplY3QuCisKKyAgICBFdmVyeSBjb2Rl
IHdoaWNoIHJlcXVpcmVzIGEgVGVybWluYWxXcml0ZXIgb2JqZWN0IGFuZCBoYXMgYWNjZXNzIHRv
IGEKKyAgICBjb25maWcgb2JqZWN0IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbi4KICAgICAiIiIK
LSAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKCphcmdzLCAqKmt3YXJncykKKyAgICB0dyA9
IFRlcm1pbmFsV3JpdGVyKGZpbGU9ZmlsZSkKKwogICAgIGlmIGNvbmZpZy5vcHRpb24uY29sb3Ig
PT0gInllcyI6CiAgICAgICAgIHR3Lmhhc21hcmt1cCA9IFRydWUKLSAgICBpZiBjb25maWcub3B0
aW9uLmNvbG9yID09ICJubyI6CisgICAgZWxpZiBjb25maWcub3B0aW9uLmNvbG9yID09ICJubyI6
CiAgICAgICAgIHR3Lmhhc21hcmt1cCA9IEZhbHNlCisKKyAgICBpZiBjb25maWcub3B0aW9uLmNv
ZGVfaGlnaGxpZ2h0ID09ICJ5ZXMiOgorICAgICAgICB0dy5jb2RlX2hpZ2hsaWdodCA9IFRydWUK
KyAgICBlbGlmIGNvbmZpZy5vcHRpb24uY29kZV9oaWdobGlnaHQgPT0gIm5vIjoKKyAgICAgICAg
dHcuY29kZV9oaWdobGlnaHQgPSBGYWxzZQorCiAgICAgcmV0dXJuIHR3CiAKIAotZGVmIF9zdHJ0
b2Jvb2wodmFsKToKLSAgICAiIiJDb252ZXJ0IGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRy
dXRoIHRvIHRydWUgKDEpIG9yIGZhbHNlICgwKS4KK2RlZiBfc3RydG9ib29sKHZhbDogc3RyKSAt
PiBib29sOgorICAgICIiIkNvbnZlcnQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdHJ1dGgg
dG8gVHJ1ZSBvciBGYWxzZS4KIAogICAgIFRydWUgdmFsdWVzIGFyZSAneScsICd5ZXMnLCAndCcs
ICd0cnVlJywgJ29uJywgYW5kICcxJzsgZmFsc2UgdmFsdWVzCiAgICAgYXJlICduJywgJ25vJywg
J2YnLCAnZmFsc2UnLCAnb2ZmJywgYW5kICcwJy4gIFJhaXNlcyBWYWx1ZUVycm9yIGlmCiAgICAg
J3ZhbCcgaXMgYW55dGhpbmcgZWxzZS4KIAotICAgIC4uIG5vdGU6OiBjb3BpZWQgZnJvbSBkaXN0
dXRpbHMudXRpbAorICAgIC4uIG5vdGU6OiBDb3BpZWQgZnJvbSBkaXN0dXRpbHMudXRpbC4KICAg
ICAiIiIKICAgICB2YWwgPSB2YWwubG93ZXIoKQogICAgIGlmIHZhbCBpbiAoInkiLCAieWVzIiwg
InQiLCAidHJ1ZSIsICJvbiIsICIxIik6Ci0gICAgICAgIHJldHVybiAxCisgICAgICAgIHJldHVy
biBUcnVlCiAgICAgZWxpZiB2YWwgaW4gKCJuIiwgIm5vIiwgImYiLCAiZmFsc2UiLCAib2ZmIiwg
IjAiKToKLSAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZWxzZToK
LSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB0cnV0aCB2YWx1ZSAlciIgJSAodmFs
LCkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgdHJ1dGggdmFsdWUgeyFyfSIu
Zm9ybWF0KHZhbCkpCisKKworQGxydV9jYWNoZShtYXhzaXplPTUwKQorZGVmIHBhcnNlX3dhcm5p
bmdfZmlsdGVyKAorICAgIGFyZzogc3RyLCAqLCBlc2NhcGU6IGJvb2wKKykgLT4gIlR1cGxlW3N0
ciwgc3RyLCBUeXBlW1dhcm5pbmddLCBzdHIsIGludF0iOgorICAgICIiIlBhcnNlIGEgd2Fybmlu
Z3MgZmlsdGVyIHN0cmluZy4KKworICAgIFRoaXMgaXMgY29waWVkIGZyb20gd2FybmluZ3MuX3Nl
dG9wdGlvbiwgYnV0IGRvZXMgbm90IGFwcGx5IHRoZSBmaWx0ZXIsCisgICAgb25seSBwYXJzZXMg
aXQsIGFuZCBtYWtlcyB0aGUgZXNjYXBpbmcgb3B0aW9uYWwuCisgICAgIiIiCisgICAgcGFydHMg
PSBhcmcuc3BsaXQoIjoiKQorICAgIGlmIGxlbihwYXJ0cykgPiA1OgorICAgICAgICByYWlzZSB3
YXJuaW5ncy5fT3B0aW9uRXJyb3IoInRvbyBtYW55IGZpZWxkcyAobWF4IDUpOiB7IXJ9Ii5mb3Jt
YXQoYXJnKSkKKyAgICB3aGlsZSBsZW4ocGFydHMpIDwgNToKKyAgICAgICAgcGFydHMuYXBwZW5k
KCIiKQorICAgIGFjdGlvbl8sIG1lc3NhZ2UsIGNhdGVnb3J5XywgbW9kdWxlLCBsaW5lbm9fID0g
W3Muc3RyaXAoKSBmb3IgcyBpbiBwYXJ0c10KKyAgICBhY3Rpb24gPSB3YXJuaW5ncy5fZ2V0YWN0
aW9uKGFjdGlvbl8pICAjIHR5cGU6IHN0ciAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisg
ICAgY2F0ZWdvcnkgPSB3YXJuaW5ncy5fZ2V0Y2F0ZWdvcnkoCisgICAgICAgIGNhdGVnb3J5Xwor
ICAgICkgICMgdHlwZTogVHlwZVtXYXJuaW5nXSAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRd
CisgICAgaWYgbWVzc2FnZSBhbmQgZXNjYXBlOgorICAgICAgICBtZXNzYWdlID0gcmUuZXNjYXBl
KG1lc3NhZ2UpCisgICAgaWYgbW9kdWxlIGFuZCBlc2NhcGU6CisgICAgICAgIG1vZHVsZSA9IHJl
LmVzY2FwZShtb2R1bGUpICsgciJcWiIKKyAgICBpZiBsaW5lbm9fOgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBsaW5lbm8gPSBpbnQobGluZW5vXykKKyAgICAgICAgICAgIGlmIGxpbmVubyA8
IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBleGNlcHQgKFZh
bHVlRXJyb3IsIE92ZXJmbG93RXJyb3IpIGFzIGU6CisgICAgICAgICAgICByYWlzZSB3YXJuaW5n
cy5fT3B0aW9uRXJyb3IoImludmFsaWQgbGluZW5vIHshcn0iLmZvcm1hdChsaW5lbm9fKSkgZnJv
bSBlCisgICAgZWxzZToKKyAgICAgICAgbGluZW5vID0gMAorICAgIHJldHVybiBhY3Rpb24sIG1l
c3NhZ2UsIGNhdGVnb3J5LCBtb2R1bGUsIGxpbmVubworCisKK2RlZiBhcHBseV93YXJuaW5nX2Zp
bHRlcnMoCisgICAgY29uZmlnX2ZpbHRlcnM6IEl0ZXJhYmxlW3N0cl0sIGNtZGxpbmVfZmlsdGVy
czogSXRlcmFibGVbc3RyXQorKSAtPiBOb25lOgorICAgICIiIkFwcGxpZXMgcHl0ZXN0LWNvbmZp
Z3VyZWQgZmlsdGVycyB0byB0aGUgd2FybmluZ3MgbW9kdWxlIiIiCisgICAgIyBGaWx0ZXJzIHNo
b3VsZCBoYXZlIHRoaXMgcHJlY2VkZW5jZTogY21kbGluZSBvcHRpb25zLCBjb25maWcuCisgICAg
IyBGaWx0ZXJzIHNob3VsZCBiZSBhcHBsaWVkIGluIHRoZSBpbnZlcnNlIG9yZGVyIG9mIHByZWNl
ZGVuY2UuCisgICAgZm9yIGFyZyBpbiBjb25maWdfZmlsdGVyczoKKyAgICAgICAgd2FybmluZ3Mu
ZmlsdGVyd2FybmluZ3MoKnBhcnNlX3dhcm5pbmdfZmlsdGVyKGFyZywgZXNjYXBlPUZhbHNlKSkK
KworICAgIGZvciBhcmcgaW4gY21kbGluZV9maWx0ZXJzOgorICAgICAgICB3YXJuaW5ncy5maWx0
ZXJ3YXJuaW5ncygqcGFyc2Vfd2FybmluZ19maWx0ZXIoYXJnLCBlc2NhcGU9VHJ1ZSkpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvYXJncGFyc2luZy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9hcmdwYXJzaW5nLnB5CmluZGV4IDc4MWQ4ZThj
NGVlNS4uNjM2MDIxZGY0NTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9j
b25maWcvYXJncGFyc2luZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcv
YXJncGFyc2luZy5weQpAQCAtMSw0MSArMSw3MiBAQAotaW1wb3J0IHNpeAotaW1wb3J0IHdhcm5p
bmdzCiBpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBzeXMKK2ltcG9ydCB3YXJuaW5ncworZnJvbSBn
ZXR0ZXh0IGltcG9ydCBnZXR0ZXh0Citmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGlu
ZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0Citmcm9tIHR5cGluZyBp
bXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBN
YXBwaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBT
ZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5p
b24KKworaW1wb3J0IHB5CisKK2ltcG9ydCBfcHl0ZXN0Ll9pbworZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcK
K2Zyb20gX3B5dGVzdC5jb25maWcuZXhjZXB0aW9ucyBpbXBvcnQgVXNhZ2VFcnJvcgorCitpZiBU
WVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBOb1JldHVybgorICAgIGZyb20g
dHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwKIAogRklMRV9PUl9ESVIgPSAiZmlsZV9v
cl9kaXIiCiAKIAotY2xhc3MgUGFyc2VyKG9iamVjdCk6Ci0gICAgIiIiIFBhcnNlciBmb3IgY29t
bWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgaW5pLWZpbGUgdmFsdWVzLgorQGZpbmFsCitjbGFzcyBQ
YXJzZXI6CisgICAgIiIiUGFyc2VyIGZvciBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBpbmkt
ZmlsZSB2YWx1ZXMuCiAKLSAgICA6aXZhciBleHRyYV9pbmZvOiBkaWN0IG9mIGdlbmVyaWMgcGFy
YW0gLT4gdmFsdWUgdG8gZGlzcGxheSBpbiBjYXNlCisgICAgOml2YXIgZXh0cmFfaW5mbzogRGlj
dCBvZiBnZW5lcmljIHBhcmFtIC0+IHZhbHVlIHRvIGRpc3BsYXkgaW4gY2FzZQogICAgICAgICB0
aGVyZSdzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCiAg
ICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXNhZ2U9Tm9uZSwgcHJvY2Vzc29wdD1O
b25lKToKKyAgICBwcm9nID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCisKKyAgICBkZWYg
X19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIHVzYWdlOiBPcHRpb25hbFtzdHJdID0g
Tm9uZSwKKyAgICAgICAgcHJvY2Vzc29wdDogT3B0aW9uYWxbQ2FsbGFibGVbWyJBcmd1bWVudCJd
LCBOb25lXV0gPSBOb25lLAorICAgICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5fYW5vbnltb3Vz
ID0gT3B0aW9uR3JvdXAoImN1c3RvbSBvcHRpb25zIiwgcGFyc2VyPXNlbGYpCi0gICAgICAgIHNl
bGYuX2dyb3VwcyA9IFtdCisgICAgICAgIHNlbGYuX2dyb3VwcyA9IFtdICAjIHR5cGU6IExpc3Rb
T3B0aW9uR3JvdXBdCiAgICAgICAgIHNlbGYuX3Byb2Nlc3NvcHQgPSBwcm9jZXNzb3B0CiAgICAg
ICAgIHNlbGYuX3VzYWdlID0gdXNhZ2UKLSAgICAgICAgc2VsZi5faW5pZGljdCA9IHt9Ci0gICAg
ICAgIHNlbGYuX2luaW5hbWVzID0gW10KLSAgICAgICAgc2VsZi5leHRyYV9pbmZvID0ge30KKyAg
ICAgICAgc2VsZi5faW5pZGljdCA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBUdXBsZVtzdHIsIE9w
dGlvbmFsW3N0cl0sIEFueV1dCisgICAgICAgIHNlbGYuX2luaW5hbWVzID0gW10gICMgdHlwZTog
TGlzdFtzdHJdCisgICAgICAgIHNlbGYuZXh0cmFfaW5mbyA9IHt9ICAjIHR5cGU6IERpY3Rbc3Ry
LCBBbnldCiAKLSAgICBkZWYgcHJvY2Vzc29wdGlvbihzZWxmLCBvcHRpb24pOgorICAgIGRlZiBw
cm9jZXNzb3B0aW9uKHNlbGYsIG9wdGlvbjogIkFyZ3VtZW50IikgLT4gTm9uZToKICAgICAgICAg
aWYgc2VsZi5fcHJvY2Vzc29wdDoKICAgICAgICAgICAgIGlmIG9wdGlvbi5kZXN0OgogICAgICAg
ICAgICAgICAgIHNlbGYuX3Byb2Nlc3NvcHQob3B0aW9uKQogCi0gICAgZGVmIGdldGdyb3VwKHNl
bGYsIG5hbWUsIGRlc2NyaXB0aW9uPSIiLCBhZnRlcj1Ob25lKToKLSAgICAgICAgIiIiIGdldCAo
b3IgY3JlYXRlKSBhIG5hbWVkIG9wdGlvbiBHcm91cC4KKyAgICBkZWYgZ2V0Z3JvdXAoCisgICAg
ICAgIHNlbGYsIG5hbWU6IHN0ciwgZGVzY3JpcHRpb246IHN0ciA9ICIiLCBhZnRlcjogT3B0aW9u
YWxbc3RyXSA9IE5vbmUKKyAgICApIC0+ICJPcHRpb25Hcm91cCI6CisgICAgICAgICIiIkdldCAo
b3IgY3JlYXRlKSBhIG5hbWVkIG9wdGlvbiBHcm91cC4KIAotICAgICAgICA6bmFtZTogbmFtZSBv
ZiB0aGUgb3B0aW9uIGdyb3VwLgotICAgICAgICA6ZGVzY3JpcHRpb246IGxvbmcgZGVzY3JpcHRp
b24gZm9yIC0taGVscCBvdXRwdXQuCi0gICAgICAgIDphZnRlcjogbmFtZSBvZiBvdGhlciBncm91
cCwgdXNlZCBmb3Igb3JkZXJpbmcgLS1oZWxwIG91dHB1dC4KKyAgICAgICAgOm5hbWU6IE5hbWUg
b2YgdGhlIG9wdGlvbiBncm91cC4KKyAgICAgICAgOmRlc2NyaXB0aW9uOiBMb25nIGRlc2NyaXB0
aW9uIGZvciAtLWhlbHAgb3V0cHV0LgorICAgICAgICA6YWZ0ZXI6IE5hbWUgb2YgYW5vdGhlciBn
cm91cCwgdXNlZCBmb3Igb3JkZXJpbmcgLS1oZWxwIG91dHB1dC4KIAogICAgICAgICBUaGUgcmV0
dXJuZWQgZ3JvdXAgb2JqZWN0IGhhcyBhbiBgYGFkZG9wdGlvbmBgIG1ldGhvZCB3aXRoIHRoZSBz
YW1lCiAgICAgICAgIHNpZ25hdHVyZSBhcyA6cHk6ZnVuYzpgcGFyc2VyLmFkZG9wdGlvbgotICAg
ICAgICA8X3B5dGVzdC5jb25maWcuUGFyc2VyLmFkZG9wdGlvbj5gIGJ1dCB3aWxsIGJlIHNob3du
IGluIHRoZQorICAgICAgICA8X3B5dGVzdC5jb25maWcuYXJncGFyc2luZy5QYXJzZXIuYWRkb3B0
aW9uPmAgYnV0IHdpbGwgYmUgc2hvd24gaW4gdGhlCiAgICAgICAgIHJlc3BlY3RpdmUgZ3JvdXAg
aW4gdGhlIG91dHB1dCBvZiBgYHB5dGVzdC4gLS1oZWxwYGAuCiAgICAgICAgICIiIgogICAgICAg
ICBmb3IgZ3JvdXAgaW4gc2VsZi5fZ3JvdXBzOgpAQCAtNDksMzMgKzgwLDM3IEBAIGNsYXNzIFBh
cnNlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9ncm91cHMuaW5zZXJ0KGkgKyAxLCBncm91cCkK
ICAgICAgICAgcmV0dXJuIGdyb3VwCiAKLSAgICBkZWYgYWRkb3B0aW9uKHNlbGYsICpvcHRzLCAq
KmF0dHJzKToKLSAgICAgICAgIiIiIHJlZ2lzdGVyIGEgY29tbWFuZCBsaW5lIG9wdGlvbi4KKyAg
ICBkZWYgYWRkb3B0aW9uKHNlbGYsICpvcHRzOiBzdHIsICoqYXR0cnM6IEFueSkgLT4gTm9uZToK
KyAgICAgICAgIiIiUmVnaXN0ZXIgYSBjb21tYW5kIGxpbmUgb3B0aW9uLgogCi0gICAgICAgIDpv
cHRzOiBvcHRpb24gbmFtZXMsIGNhbiBiZSBzaG9ydCBvciBsb25nIG9wdGlvbnMuCi0gICAgICAg
IDphdHRyczogc2FtZSBhdHRyaWJ1dGVzIHdoaWNoIHRoZSBgYGFkZF9vcHRpb24oKWBgIGZ1bmN0
aW9uIG9mIHRoZQotICAgICAgICAgICBgYXJncGFyc2UgbGlicmFyeQotICAgICAgICAgICA8aHR0
cDovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvYXJncGFyc2UuaHRtbD5gXworICAgICAgICA6
b3B0czogT3B0aW9uIG5hbWVzLCBjYW4gYmUgc2hvcnQgb3IgbG9uZyBvcHRpb25zLgorICAgICAg
ICA6YXR0cnM6IFNhbWUgYXR0cmlidXRlcyB3aGljaCB0aGUgYGBhZGRfYXJndW1lbnQoKWBgIGZ1
bmN0aW9uIG9mIHRoZQorICAgICAgICAgICBgYXJncGFyc2UgbGlicmFyeSA8aHR0cHM6Ly9kb2Nz
LnB5dGhvbi5vcmcvbGlicmFyeS9hcmdwYXJzZS5odG1sPmBfCiAgICAgICAgICAgIGFjY2VwdHMu
CiAKLSAgICAgICAgQWZ0ZXIgY29tbWFuZCBsaW5lIHBhcnNpbmcgb3B0aW9ucyBhcmUgYXZhaWxh
YmxlIG9uIHRoZSBweXRlc3QgY29uZmlnCisgICAgICAgIEFmdGVyIGNvbW1hbmQgbGluZSBwYXJz
aW5nLCBvcHRpb25zIGFyZSBhdmFpbGFibGUgb24gdGhlIHB5dGVzdCBjb25maWcKICAgICAgICAg
b2JqZWN0IHZpYSBgYGNvbmZpZy5vcHRpb24uTkFNRWBgIHdoZXJlIGBgTkFNRWBgIGlzIHVzdWFs
bHkgc2V0CiAgICAgICAgIGJ5IHBhc3NpbmcgYSBgYGRlc3RgYCBhdHRyaWJ1dGUsIGZvciBleGFt
cGxlCiAgICAgICAgIGBgYWRkb3B0aW9uKCItLWxvbmciLCBkZXN0PSJOQU1FIiwgLi4uKWBgLgog
ICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fYW5vbnltb3VzLmFkZG9wdGlvbigqb3B0cywgKiph
dHRycykKIAotICAgIGRlZiBwYXJzZShzZWxmLCBhcmdzLCBuYW1lc3BhY2U9Tm9uZSk6CisgICAg
ZGVmIHBhcnNlKAorICAgICAgICBzZWxmLAorICAgICAgICBhcmdzOiBTZXF1ZW5jZVtVbmlvbltz
dHIsIHB5LnBhdGgubG9jYWxdXSwKKyAgICAgICAgbmFtZXNwYWNlOiBPcHRpb25hbFthcmdwYXJz
ZS5OYW1lc3BhY2VdID0gTm9uZSwKKyAgICApIC0+IGFyZ3BhcnNlLk5hbWVzcGFjZToKICAgICAg
ICAgZnJvbSBfcHl0ZXN0Ll9hcmdjb21wbGV0ZSBpbXBvcnQgdHJ5X2FyZ2NvbXBsZXRlCiAKICAg
ICAgICAgc2VsZi5vcHRwYXJzZXIgPSBzZWxmLl9nZXRwYXJzZXIoKQogICAgICAgICB0cnlfYXJn
Y29tcGxldGUoc2VsZi5vcHRwYXJzZXIpCi0gICAgICAgIHJldHVybiBzZWxmLm9wdHBhcnNlci5w
YXJzZV9hcmdzKFtzdHIoeCkgZm9yIHggaW4gYXJnc10sIG5hbWVzcGFjZT1uYW1lc3BhY2UpCisg
ICAgICAgIHN0cmFyZ3MgPSBbc3RyKHgpIGlmIGlzaW5zdGFuY2UoeCwgcHkucGF0aC5sb2NhbCkg
ZWxzZSB4IGZvciB4IGluIGFyZ3NdCisgICAgICAgIHJldHVybiBzZWxmLm9wdHBhcnNlci5wYXJz
ZV9hcmdzKHN0cmFyZ3MsIG5hbWVzcGFjZT1uYW1lc3BhY2UpCiAKLSAgICBkZWYgX2dldHBhcnNl
cihzZWxmKToKKyAgICBkZWYgX2dldHBhcnNlcihzZWxmKSAtPiAiTXlPcHRpb25QYXJzZXIiOgog
ICAgICAgICBmcm9tIF9weXRlc3QuX2FyZ2NvbXBsZXRlIGltcG9ydCBmaWxlc2NvbXBsZXRlcgog
Ci0gICAgICAgIG9wdHBhcnNlciA9IE15T3B0aW9uUGFyc2VyKHNlbGYsIHNlbGYuZXh0cmFfaW5m
bykKKyAgICAgICAgb3B0cGFyc2VyID0gTXlPcHRpb25QYXJzZXIoc2VsZiwgc2VsZi5leHRyYV9p
bmZvLCBwcm9nPXNlbGYucHJvZykKICAgICAgICAgZ3JvdXBzID0gc2VsZi5fZ3JvdXBzICsgW3Nl
bGYuX2Fub255bW91c10KICAgICAgICAgZm9yIGdyb3VwIGluIGdyb3VwczoKICAgICAgICAgICAg
IGlmIGdyb3VwLm9wdGlvbnM6CkBAIC04NSwzNyArMTIwLDU1IEBAIGNsYXNzIFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICAgICBuID0gb3B0aW9uLm5hbWVzKCkKICAgICAgICAgICAg
ICAgICAgICAgYSA9IG9wdGlvbi5hdHRycygpCiAgICAgICAgICAgICAgICAgICAgIGFyZ2dyb3Vw
LmFkZF9hcmd1bWVudCgqbiwgKiphKQorICAgICAgICBmaWxlX29yX2Rpcl9hcmcgPSBvcHRwYXJz
ZXIuYWRkX2FyZ3VtZW50KEZJTEVfT1JfRElSLCBuYXJncz0iKiIpCiAgICAgICAgICMgYmFzaCBs
aWtlIGF1dG9jb21wbGV0aW9uIGZvciBkaXJzIChhcHBlbmRpbmcgJy8nKQotICAgICAgICBvcHRw
YXJzZXIuYWRkX2FyZ3VtZW50KEZJTEVfT1JfRElSLCBuYXJncz0iKiIpLmNvbXBsZXRlciA9IGZp
bGVzY29tcGxldGVyCisgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgdHlwZXNoZWQgZG9l
c24ndCBrbm93IGFib3V0IGFyZ2NvbXBsZXRlLgorICAgICAgICBmaWxlX29yX2Rpcl9hcmcuY29t
cGxldGVyID0gZmlsZXNjb21wbGV0ZXIgICMgdHlwZTogaWdub3JlCiAgICAgICAgIHJldHVybiBv
cHRwYXJzZXIKIAotICAgIGRlZiBwYXJzZV9zZXRvcHRpb24oc2VsZiwgYXJncywgb3B0aW9uLCBu
YW1lc3BhY2U9Tm9uZSk6CisgICAgZGVmIHBhcnNlX3NldG9wdGlvbigKKyAgICAgICAgc2VsZiwK
KyAgICAgICAgYXJnczogU2VxdWVuY2VbVW5pb25bc3RyLCBweS5wYXRoLmxvY2FsXV0sCisgICAg
ICAgIG9wdGlvbjogYXJncGFyc2UuTmFtZXNwYWNlLAorICAgICAgICBuYW1lc3BhY2U6IE9wdGlv
bmFsW2FyZ3BhcnNlLk5hbWVzcGFjZV0gPSBOb25lLAorICAgICkgLT4gTGlzdFtzdHJdOgogICAg
ICAgICBwYXJzZWRvcHRpb24gPSBzZWxmLnBhcnNlKGFyZ3MsIG5hbWVzcGFjZT1uYW1lc3BhY2Up
CiAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBwYXJzZWRvcHRpb24uX19kaWN0X18uaXRlbXMo
KToKICAgICAgICAgICAgIHNldGF0dHIob3B0aW9uLCBuYW1lLCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuIGdldGF0dHIocGFyc2Vkb3B0aW9uLCBGSUxFX09SX0RJUikKLQotICAgIGRlZiBwYXJzZV9r
bm93bl9hcmdzKHNlbGYsIGFyZ3MsIG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgIiIicGFyc2Vz
IGFuZCByZXR1cm5zIGEgbmFtZXNwYWNlIG9iamVjdCB3aXRoIGtub3duIGFyZ3VtZW50cyBhdCB0
aGlzCi0gICAgICAgIHBvaW50LgotICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNhc3QoTGlz
dFtzdHJdLCBnZXRhdHRyKHBhcnNlZG9wdGlvbiwgRklMRV9PUl9ESVIpKQorCisgICAgZGVmIHBh
cnNlX2tub3duX2FyZ3MoCisgICAgICAgIHNlbGYsCisgICAgICAgIGFyZ3M6IFNlcXVlbmNlW1Vu
aW9uW3N0ciwgcHkucGF0aC5sb2NhbF1dLAorICAgICAgICBuYW1lc3BhY2U6IE9wdGlvbmFsW2Fy
Z3BhcnNlLk5hbWVzcGFjZV0gPSBOb25lLAorICAgICkgLT4gYXJncGFyc2UuTmFtZXNwYWNlOgor
ICAgICAgICAiIiJQYXJzZSBhbmQgcmV0dXJuIGEgbmFtZXNwYWNlIG9iamVjdCB3aXRoIGtub3du
IGFyZ3VtZW50cyBhdCB0aGlzIHBvaW50LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9r
bm93bl9hbmRfdW5rbm93bl9hcmdzKGFyZ3MsIG5hbWVzcGFjZT1uYW1lc3BhY2UpWzBdCiAKLSAg
ICBkZWYgcGFyc2Vfa25vd25fYW5kX3Vua25vd25fYXJncyhzZWxmLCBhcmdzLCBuYW1lc3BhY2U9
Tm9uZSk6Ci0gICAgICAgICIiInBhcnNlcyBhbmQgcmV0dXJucyBhIG5hbWVzcGFjZSBvYmplY3Qg
d2l0aCBrbm93biBhcmd1bWVudHMsIGFuZAotICAgICAgICB0aGUgcmVtYWluaW5nIGFyZ3VtZW50
cyB1bmtub3duIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICIiIgorICAgIGRlZiBwYXJzZV9rbm93
bl9hbmRfdW5rbm93bl9hcmdzKAorICAgICAgICBzZWxmLAorICAgICAgICBhcmdzOiBTZXF1ZW5j
ZVtVbmlvbltzdHIsIHB5LnBhdGgubG9jYWxdXSwKKyAgICAgICAgbmFtZXNwYWNlOiBPcHRpb25h
bFthcmdwYXJzZS5OYW1lc3BhY2VdID0gTm9uZSwKKyAgICApIC0+IFR1cGxlW2FyZ3BhcnNlLk5h
bWVzcGFjZSwgTGlzdFtzdHJdXToKKyAgICAgICAgIiIiUGFyc2UgYW5kIHJldHVybiBhIG5hbWVz
cGFjZSBvYmplY3Qgd2l0aCBrbm93biBhcmd1bWVudHMsIGFuZAorICAgICAgICB0aGUgcmVtYWlu
aW5nIGFyZ3VtZW50cyB1bmtub3duIGF0IHRoaXMgcG9pbnQuIiIiCiAgICAgICAgIG9wdHBhcnNl
ciA9IHNlbGYuX2dldHBhcnNlcigpCi0gICAgICAgIGFyZ3MgPSBbc3RyKHgpIGZvciB4IGluIGFy
Z3NdCi0gICAgICAgIHJldHVybiBvcHRwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzLCBuYW1l
c3BhY2U9bmFtZXNwYWNlKQotCi0gICAgZGVmIGFkZGluaShzZWxmLCBuYW1lLCBoZWxwLCB0eXBl
PU5vbmUsIGRlZmF1bHQ9Tm9uZSk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhbiBpbmktZmlsZSBv
cHRpb24uCi0KLSAgICAgICAgOm5hbWU6IG5hbWUgb2YgdGhlIGluaS12YXJpYWJsZQotICAgICAg
ICA6dHlwZTogdHlwZSBvZiB0aGUgdmFyaWFibGUsIGNhbiBiZSBgYHBhdGhsaXN0YGAsIGBgYXJn
c2BgLCBgYGxpbmVsaXN0YGAKKyAgICAgICAgc3RyYXJncyA9IFtzdHIoeCkgaWYgaXNpbnN0YW5j
ZSh4LCBweS5wYXRoLmxvY2FsKSBlbHNlIHggZm9yIHggaW4gYXJnc10KKyAgICAgICAgcmV0dXJu
IG9wdHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKHN0cmFyZ3MsIG5hbWVzcGFjZT1uYW1lc3BhY2Up
CisKKyAgICBkZWYgYWRkaW5pKAorICAgICAgICBzZWxmLAorICAgICAgICBuYW1lOiBzdHIsCisg
ICAgICAgIGhlbHA6IHN0ciwKKyAgICAgICAgdHlwZTogT3B0aW9uYWxbIkxpdGVyYWxbJ3BhdGhs
aXN0JywgJ2FyZ3MnLCAnbGluZWxpc3QnLCAnYm9vbCddIl0gPSBOb25lLAorICAgICAgICBkZWZh
dWx0PU5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJSZWdpc3RlciBhbiBpbmktZmls
ZSBvcHRpb24uCisKKyAgICAgICAgOm5hbWU6IE5hbWUgb2YgdGhlIGluaS12YXJpYWJsZS4KKyAg
ICAgICAgOnR5cGU6IFR5cGUgb2YgdGhlIHZhcmlhYmxlLCBjYW4gYmUgYGBwYXRobGlzdGBgLCBg
YGFyZ3NgYCwgYGBsaW5lbGlzdGBgCiAgICAgICAgICAgICAgICBvciBgYGJvb2xgYC4KLSAgICAg
ICAgOmRlZmF1bHQ6IGRlZmF1bHQgdmFsdWUgaWYgbm8gaW5pLWZpbGUgb3B0aW9uIGV4aXN0cyBi
dXQgaXMgcXVlcmllZC4KKyAgICAgICAgOmRlZmF1bHQ6IERlZmF1bHQgdmFsdWUgaWYgbm8gaW5p
LWZpbGUgb3B0aW9uIGV4aXN0cyBidXQgaXMgcXVlcmllZC4KIAogICAgICAgICBUaGUgdmFsdWUg
b2YgaW5pLXZhcmlhYmxlcyBjYW4gYmUgcmV0cmlldmVkIHZpYSBhIGNhbGwgdG8KICAgICAgICAg
OnB5OmZ1bmM6YGNvbmZpZy5nZXRpbmkobmFtZSkgPF9weXRlc3QuY29uZmlnLkNvbmZpZy5nZXRp
bmk+YC4KQEAgLTEyNiwzNyArMTc5LDM2IEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgogCiAKIGNs
YXNzIEFyZ3VtZW50RXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiIKLSAgICBSYWlzZWQgaWYgYW4g
QXJndW1lbnQgaW5zdGFuY2UgaXMgY3JlYXRlZCB3aXRoIGludmFsaWQgb3IKLSAgICBpbmNvbnNp
c3RlbnQgYXJndW1lbnRzLgotICAgICIiIgorICAgICIiIlJhaXNlZCBpZiBhbiBBcmd1bWVudCBp
bnN0YW5jZSBpcyBjcmVhdGVkIHdpdGggaW52YWxpZCBvcgorICAgIGluY29uc2lzdGVudCBhcmd1
bWVudHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBvcHRpb24pOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtc2c6IHN0ciwgb3B0aW9uOiBVbmlvblsiQXJndW1lbnQiLCBzdHJd
KSAtPiBOb25lOgogICAgICAgICBzZWxmLm1zZyA9IG1zZwogICAgICAgICBzZWxmLm9wdGlvbl9p
ZCA9IHN0cihvcHRpb24pCiAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICBkZWYgX19zdHJf
XyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIGlmIHNlbGYub3B0aW9uX2lkOgotICAgICAgICAgICAg
cmV0dXJuICJvcHRpb24gJXM6ICVzIiAlIChzZWxmLm9wdGlvbl9pZCwgc2VsZi5tc2cpCisgICAg
ICAgICAgICByZXR1cm4gIm9wdGlvbiB7fToge30iLmZvcm1hdChzZWxmLm9wdGlvbl9pZCwgc2Vs
Zi5tc2cpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5tc2cKIAogCi1j
bGFzcyBBcmd1bWVudChvYmplY3QpOgotICAgICIiImNsYXNzIHRoYXQgbWltaWNzIHRoZSBuZWNl
c3NhcnkgYmVoYXZpb3VyIG9mIG9wdHBhcnNlLk9wdGlvbgorY2xhc3MgQXJndW1lbnQ6CisgICAg
IiIiQ2xhc3MgdGhhdCBtaW1pY3MgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvdXIgb2Ygb3B0cGFyc2Uu
T3B0aW9uLgorCisgICAgSXQncyBjdXJyZW50bHkgYSBsZWFzdCBlZmZvcnQgaW1wbGVtZW50YXRp
b24gYW5kIGlnbm9yaW5nIGNob2ljZXMKKyAgICBhbmQgaW50ZWdlciBwcmVmaXhlcy4KIAotICAg
IGl0cyBjdXJyZW50bHkgYSBsZWFzdCBlZmZvcnQgaW1wbGVtZW50YXRpb24KLSAgICBhbmQgaWdu
b3JpbmcgY2hvaWNlcyBhbmQgaW50ZWdlciBwcmVmaXhlcwogICAgIGh0dHBzOi8vZG9jcy5weXRo
b24ub3JnLzMvbGlicmFyeS9vcHRwYXJzZS5odG1sI29wdHBhcnNlLXN0YW5kYXJkLW9wdGlvbi10
eXBlcwogICAgICIiIgorCiAgICAgX3R5cF9tYXAgPSB7ImludCI6IGludCwgInN0cmluZyI6IHN0
ciwgImZsb2F0IjogZmxvYXQsICJjb21wbGV4IjogY29tcGxleH0KIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCAqbmFtZXMsICoqYXR0cnMpOgotICAgICAgICAiIiJzdG9yZSBwYXJtcyBpbiBwcml2
YXRlIHZhcnMgZm9yIHVzZSBpbiBhZGRfYXJndW1lbnQiIiIKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKm5hbWVzOiBzdHIsICoqYXR0cnM6IEFueSkgLT4gTm9uZToKKyAgICAgICAgIiIiU3RvcmUg
cGFybXMgaW4gcHJpdmF0ZSB2YXJzIGZvciB1c2UgaW4gYWRkX2FyZ3VtZW50LiIiIgogICAgICAg
ICBzZWxmLl9hdHRycyA9IGF0dHJzCi0gICAgICAgIHNlbGYuX3Nob3J0X29wdHMgPSBbXQotICAg
ICAgICBzZWxmLl9sb25nX29wdHMgPSBbXQotICAgICAgICBzZWxmLmRlc3QgPSBhdHRycy5nZXQo
ImRlc3QiKQorICAgICAgICBzZWxmLl9zaG9ydF9vcHRzID0gW10gICMgdHlwZTogTGlzdFtzdHJd
CisgICAgICAgIHNlbGYuX2xvbmdfb3B0cyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQogICAgICAg
ICBpZiAiJWRlZmF1bHQiIGluIChhdHRycy5nZXQoImhlbHAiKSBvciAiIik6CiAgICAgICAgICAg
ICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICdweXRlc3Qgbm93IHVzZXMgYXJncGFy
c2UuICIlZGVmYXVsdCIgc2hvdWxkIGJlJwpAQCAtMTY5LDU2ICsyMjEsNTggQEAgY2xhc3MgQXJn
dW1lbnQob2JqZWN0KToKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcGFz
cwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyB0aGlzIG1pZ2h0IHJhaXNlIGEga2V5ZXJy
b3IgYXMgd2VsbCwgZG9uJ3Qgd2FudCB0byBjYXRjaCB0aGF0Ci0gICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHR5cCwgc2l4LnN0cmluZ190eXBlcyk6CisgICAgICAgICAgICAjIFRoaXMgbWlnaHQg
cmFpc2UgYSBrZXllcnJvciBhcyB3ZWxsLCBkb24ndCB3YW50IHRvIGNhdGNoIHRoYXQuCisgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKHR5cCwgc3RyKToKICAgICAgICAgICAgICAgICBpZiB0eXAg
PT0gImNob2ljZSI6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAidHlwZSBhcmd1bWVudCB0byBhZGRvcHRpb24oKSBpcyBhIHN0cmlu
ZyAlci4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiIEZvciBwYXJzZWFyZyB0aGlzIGlzIG9w
dGlvbmFsIGFuZCB3aGVuIHN1cHBsaWVkIgotICAgICAgICAgICAgICAgICAgICAgICAgIiBzaG91
bGQgYmUgYSB0eXBlLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJgdHlwZWAgYXJndW1lbnQg
dG8gYWRkb3B0aW9uKCkgaXMgdGhlIHN0cmluZyAlci4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiIEZvciBjaG9pY2VzIHRoaXMgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSBvbWl0dGVkLCAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAiIGJ1dCB3aGVuIHN1cHBsaWVkIHNob3VsZCBiZSBhIHR5
cGUgKGZvciBleGFtcGxlIGBzdHJgIG9yIGBpbnRgKS4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAiIChvcHRpb25zOiAlcykiICUgKHR5cCwgbmFtZXMpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZl
bD0zLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD00LAogICAgICAgICAgICAg
ICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICMgYXJncGFyc2UgZXhwZWN0cyBhIHR5cGUg
aGVyZSB0YWtlIGl0IGZyb20KICAgICAgICAgICAgICAgICAgICAgIyB0aGUgdHlwZSBvZiB0aGUg
Zmlyc3QgZWxlbWVudAogICAgICAgICAgICAgICAgICAgICBhdHRyc1sidHlwZSJdID0gdHlwZShh
dHRyc1siY2hvaWNlcyJdWzBdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgICAgICAgICAidHlwZSBhcmd1
bWVudCB0byBhZGRvcHRpb24oKSBpcyBhIHN0cmluZyAlci4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiIEZvciBwYXJzZWFyZyB0aGlzIHNob3VsZCBiZSBhIHR5cGUuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImB0eXBlYCBhcmd1bWVudCB0byBhZGRvcHRpb24oKSBpcyB0aGUgc3RyaW5n
ICVyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiIGJ1dCB3aGVuIHN1cHBsaWVkIHNob3Vs
ZCBiZSBhIHR5cGUgKGZvciBleGFtcGxlIGBzdHJgIG9yIGBpbnRgKS4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAiIChvcHRpb25zOiAlcykiICUgKHR5cCwgbmFtZXMpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAg
c3RhY2tsZXZlbD0zLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD00LAogICAg
ICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgIGF0dHJzWyJ0eXBlIl0gPSBB
cmd1bWVudC5fdHlwX21hcFt0eXBdCi0gICAgICAgICAgICAgICAgIyB1c2VkIGluIHRlc3RfcGFy
c2VvcHQgLT4gdGVzdF9wYXJzZV9kZWZhdWx0Z2V0dGVyCisgICAgICAgICAgICAgICAgIyBVc2Vk
IGluIHRlc3RfcGFyc2VvcHQgLT4gdGVzdF9wYXJzZV9kZWZhdWx0Z2V0dGVyLgogICAgICAgICAg
ICAgICAgIHNlbGYudHlwZSA9IGF0dHJzWyJ0eXBlIl0KICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgc2VsZi50eXBlID0gdHlwCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
YXR0cmlidXRlIGV4aXN0ZW5jZSBpcyB0ZXN0ZWQgaW4gQ29uZmlnLl9wcm9jZXNzb3B0CisgICAg
ICAgICAgICAjIEF0dHJpYnV0ZSBleGlzdGVuY2UgaXMgdGVzdGVkIGluIENvbmZpZy5fcHJvY2Vz
c29wdC4KICAgICAgICAgICAgIHNlbGYuZGVmYXVsdCA9IGF0dHJzWyJkZWZhdWx0Il0KICAgICAg
ICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl9zZXRf
b3B0X3N0cmluZ3MobmFtZXMpCi0gICAgICAgIGlmIG5vdCBzZWxmLmRlc3Q6Ci0gICAgICAgICAg
ICBpZiBzZWxmLl9sb25nX29wdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5kZXN0ID0gc2VsZi5f
bG9uZ19vcHRzWzBdWzI6XS5yZXBsYWNlKCItIiwgIl8iKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGVzdCA9IHNlbGYu
X3Nob3J0X29wdHNbMF1bMTpdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoIm5lZWQgYSBsb25nIG9yIHNo
b3J0IG9wdGlvbiIsIHNlbGYpCisgICAgICAgIGRlc3QgPSBhdHRycy5nZXQoImRlc3QiKSAgIyB0
eXBlOiBPcHRpb25hbFtzdHJdCisgICAgICAgIGlmIGRlc3Q6CisgICAgICAgICAgICBzZWxmLmRl
c3QgPSBkZXN0CisgICAgICAgIGVsaWYgc2VsZi5fbG9uZ19vcHRzOgorICAgICAgICAgICAgc2Vs
Zi5kZXN0ID0gc2VsZi5fbG9uZ19vcHRzWzBdWzI6XS5yZXBsYWNlKCItIiwgIl8iKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuZGVzdCA9IHNl
bGYuX3Nob3J0X29wdHNbMF1bMTpdCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvciBhcyBl
OgorICAgICAgICAgICAgICAgIHNlbGYuZGVzdCA9ICI/Pz8iICAjIE5lZWRlZCBmb3IgdGhlIGVy
cm9yIHJlcHIuCisgICAgICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRFcnJvcigibmVlZCBhIGxv
bmcgb3Igc2hvcnQgb3B0aW9uIiwgc2VsZikgZnJvbSBlCiAKLSAgICBkZWYgbmFtZXMoc2VsZik6
CisgICAgZGVmIG5hbWVzKHNlbGYpIC0+IExpc3Rbc3RyXToKICAgICAgICAgcmV0dXJuIHNlbGYu
X3Nob3J0X29wdHMgKyBzZWxmLl9sb25nX29wdHMKIAotICAgIGRlZiBhdHRycyhzZWxmKToKLSAg
ICAgICAgIyB1cGRhdGUgYW55IGF0dHJpYnV0ZXMgc2V0IGJ5IHByb2Nlc3NvcHQKKyAgICBkZWYg
YXR0cnMoc2VsZikgLT4gTWFwcGluZ1tzdHIsIEFueV06CisgICAgICAgICMgVXBkYXRlIGFueSBh
dHRyaWJ1dGVzIHNldCBieSBwcm9jZXNzb3B0LgogICAgICAgICBhdHRycyA9ICJkZWZhdWx0IGRl
c3QgaGVscCIuc3BsaXQoKQotICAgICAgICBpZiBzZWxmLmRlc3Q6Ci0gICAgICAgICAgICBhdHRy
cy5hcHBlbmQoc2VsZi5kZXN0KQorICAgICAgICBhdHRycy5hcHBlbmQoc2VsZi5kZXN0KQogICAg
ICAgICBmb3IgYXR0ciBpbiBhdHRyczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICBzZWxmLl9hdHRyc1thdHRyXSA9IGdldGF0dHIoc2VsZiwgYXR0cikKQEAgLTIzMSwxMCArMjg1
LDExIEBAIGNsYXNzIEFyZ3VtZW50KG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9hdHRyc1si
aGVscCJdID0gYQogICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMKIAotICAgIGRlZiBfc2V0X29w
dF9zdHJpbmdzKHNlbGYsIG9wdHMpOgotICAgICAgICAiIiJkaXJlY3RseSBmcm9tIG9wdHBhcnNl
CisgICAgZGVmIF9zZXRfb3B0X3N0cmluZ3Moc2VsZiwgb3B0czogU2VxdWVuY2Vbc3RyXSkgLT4g
Tm9uZToKKyAgICAgICAgIiIiRGlyZWN0bHkgZnJvbSBvcHRwYXJzZS4KIAotICAgICAgICBtaWdo
dCBub3QgYmUgbmVjZXNzYXJ5IGFzIHRoaXMgaXMgcGFzc2VkIHRvIGFyZ3BhcnNlIGxhdGVyIG9u
IiIiCisgICAgICAgIE1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkgYXMgdGhpcyBpcyBwYXNzZWQgdG8g
YXJncGFyc2UgbGF0ZXIgb24uCisgICAgICAgICIiIgogICAgICAgICBmb3Igb3B0IGluIG9wdHM6
CiAgICAgICAgICAgICBpZiBsZW4ob3B0KSA8IDI6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXJn
dW1lbnRFcnJvcigKQEAgLTI1OSw4ICszMTQsOCBAQCBjbGFzcyBBcmd1bWVudChvYmplY3QpOgog
ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgc2VsZi5fbG9uZ19vcHRzLmFw
cGVuZChvcHQpCiAKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBbXQor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIGFyZ3MgPSBbXSAgIyB0eXBl
OiBMaXN0W3N0cl0KICAgICAgICAgaWYgc2VsZi5fc2hvcnRfb3B0czoKICAgICAgICAgICAgIGFy
Z3MgKz0gWyJfc2hvcnRfb3B0czogIiArIHJlcHIoc2VsZi5fc2hvcnRfb3B0cyldCiAgICAgICAg
IGlmIHNlbGYuX2xvbmdfb3B0czoKQEAgLTI3MywyMSArMzI4LDIyIEBAIGNsYXNzIEFyZ3VtZW50
KG9iamVjdCk6CiAgICAgICAgIHJldHVybiAiQXJndW1lbnQoe30pIi5mb3JtYXQoIiwgIi5qb2lu
KGFyZ3MpKQogCiAKLWNsYXNzIE9wdGlvbkdyb3VwKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbmFtZSwgZGVzY3JpcHRpb249IiIsIHBhcnNlcj1Ob25lKToKK2NsYXNzIE9wdGlv
bkdyb3VwOgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbmFtZTogc3RyLCBkZXNj
cmlwdGlvbjogc3RyID0gIiIsIHBhcnNlcjogT3B0aW9uYWxbUGFyc2VyXSA9IE5vbmUKKyAgICAp
IC0+IE5vbmU6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5kZXNjcmlw
dGlvbiA9IGRlc2NyaXB0aW9uCi0gICAgICAgIHNlbGYub3B0aW9ucyA9IFtdCisgICAgICAgIHNl
bGYub3B0aW9ucyA9IFtdICAjIHR5cGU6IExpc3RbQXJndW1lbnRdCiAgICAgICAgIHNlbGYucGFy
c2VyID0gcGFyc2VyCiAKLSAgICBkZWYgYWRkb3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiphdHRy
cyk6Ci0gICAgICAgICIiIiBhZGQgYW4gb3B0aW9uIHRvIHRoaXMgZ3JvdXAuCisgICAgZGVmIGFk
ZG9wdGlvbihzZWxmLCAqb3B0bmFtZXM6IHN0ciwgKiphdHRyczogQW55KSAtPiBOb25lOgorICAg
ICAgICAiIiJBZGQgYW4gb3B0aW9uIHRvIHRoaXMgZ3JvdXAuCiAKLSAgICAgICAgaWYgYSBzaG9y
dGVuZWQgdmVyc2lvbiBvZiBhIGxvbmcgb3B0aW9uIGlzIHNwZWNpZmllZCBpdCB3aWxsCisgICAg
ICAgIElmIGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgYSBsb25nIG9wdGlvbiBpcyBzcGVjaWZpZWQs
IGl0IHdpbGwKICAgICAgICAgYmUgc3VwcHJlc3NlZCBpbiB0aGUgaGVscC4gYWRkb3B0aW9uKCct
LXR3b3dvcmRzJywgJy0tdHdvLXdvcmRzJykKICAgICAgICAgcmVzdWx0cyBpbiBoZWxwIHNob3dp
bmcgJy0tdHdvLXdvcmRzJyBvbmx5LCBidXQgLS10d293b3JkcyBnZXRzCi0gICAgICAgIGFjY2Vw
dGVkICoqYW5kKiogdGhlIGF1dG9tYXRpYyBkZXN0aW5hdGlvbiBpcyBpbiBhcmdzLnR3b3dvcmRz
CisgICAgICAgIGFjY2VwdGVkICoqYW5kKiogdGhlIGF1dG9tYXRpYyBkZXN0aW5hdGlvbiBpcyBp
biBhcmdzLnR3b3dvcmRzLgogICAgICAgICAiIiIKICAgICAgICAgY29uZmxpY3QgPSBzZXQob3B0
bmFtZXMpLmludGVyc2VjdGlvbigKICAgICAgICAgICAgIG5hbWUgZm9yIG9wdCBpbiBzZWxmLm9w
dGlvbnMgZm9yIG5hbWUgaW4gb3B0Lm5hbWVzKCkKQEAgLTI5NywxMSArMzUzLDExIEBAIGNsYXNz
IE9wdGlvbkdyb3VwKG9iamVjdCk6CiAgICAgICAgIG9wdGlvbiA9IEFyZ3VtZW50KCpvcHRuYW1l
cywgKiphdHRycykKICAgICAgICAgc2VsZi5fYWRkb3B0aW9uX2luc3RhbmNlKG9wdGlvbiwgc2hv
cnR1cHBlcj1GYWxzZSkKIAotICAgIGRlZiBfYWRkb3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiph
dHRycyk6CisgICAgZGVmIF9hZGRvcHRpb24oc2VsZiwgKm9wdG5hbWVzOiBzdHIsICoqYXR0cnM6
IEFueSkgLT4gTm9uZToKICAgICAgICAgb3B0aW9uID0gQXJndW1lbnQoKm9wdG5hbWVzLCAqKmF0
dHJzKQogICAgICAgICBzZWxmLl9hZGRvcHRpb25faW5zdGFuY2Uob3B0aW9uLCBzaG9ydHVwcGVy
PVRydWUpCiAKLSAgICBkZWYgX2FkZG9wdGlvbl9pbnN0YW5jZShzZWxmLCBvcHRpb24sIHNob3J0
dXBwZXI9RmFsc2UpOgorICAgIGRlZiBfYWRkb3B0aW9uX2luc3RhbmNlKHNlbGYsIG9wdGlvbjog
IkFyZ3VtZW50Iiwgc2hvcnR1cHBlcjogYm9vbCA9IEZhbHNlKSAtPiBOb25lOgogICAgICAgICBp
ZiBub3Qgc2hvcnR1cHBlcjoKICAgICAgICAgICAgIGZvciBvcHQgaW4gb3B0aW9uLl9zaG9ydF9v
cHRzOgogICAgICAgICAgICAgICAgIGlmIG9wdFswXSA9PSAiLSIgYW5kIG9wdFsxXS5pc2xvd2Vy
KCk6CkBAIC0zMTIsNzcgKzM2OCwxMzUgQEAgY2xhc3MgT3B0aW9uR3JvdXAob2JqZWN0KToKIAog
CiBjbGFzcyBNeU9wdGlvblBhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6Ci0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBleHRyYV9pbmZvPU5vbmUpOgotICAgICAgICBpZiBu
b3QgZXh0cmFfaW5mbzoKLSAgICAgICAgICAgIGV4dHJhX2luZm8gPSB7fQorICAgIGRlZiBfX2lu
aXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcGFyc2VyOiBQYXJzZXIsCisgICAgICAgIGV4
dHJhX2luZm86IE9wdGlvbmFsW0RpY3Rbc3RyLCBBbnldXSA9IE5vbmUsCisgICAgICAgIHByb2c6
IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICkgLT4gTm9uZToKICAgICAgICAgc2VsZi5fcGFy
c2VyID0gcGFyc2VyCiAgICAgICAgIGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyLl9faW5pdF9fKAog
ICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgIHByb2c9cHJvZywKICAgICAgICAgICAgIHVz
YWdlPXBhcnNlci5fdXNhZ2UsCiAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKICAgICAgICAg
ICAgIGZvcm1hdHRlcl9jbGFzcz1Ecm9wU2hvcnRlckxvbmdIZWxwRm9ybWF0dGVyLAorICAgICAg
ICAgICAgYWxsb3dfYWJicmV2PUZhbHNlLAogICAgICAgICApCiAgICAgICAgICMgZXh0cmFfaW5m
byBpcyBhIGRpY3Qgb2YgKHBhcmFtIC0+IHZhbHVlKSB0byBkaXNwbGF5IGlmIHRoZXJlJ3MKLSAg
ICAgICAgIyBhbiB1c2FnZSBlcnJvciB0byBwcm92aWRlIG1vcmUgY29udGV4dHVhbCBpbmZvcm1h
dGlvbiB0byB0aGUgdXNlcgotICAgICAgICBzZWxmLmV4dHJhX2luZm8gPSBleHRyYV9pbmZvCi0K
LSAgICBkZWYgcGFyc2VfYXJncyhzZWxmLCBhcmdzPU5vbmUsIG5hbWVzcGFjZT1Ob25lKToKLSAg
ICAgICAgIiIiYWxsb3cgc3BsaXR0aW5nIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIiIiCi0gICAg
ICAgIGFyZ3MsIGFyZ3YgPSBzZWxmLnBhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlKQot
ICAgICAgICBpZiBhcmd2OgotICAgICAgICAgICAgZm9yIGFyZyBpbiBhcmd2OgorICAgICAgICAj
IGFuIHVzYWdlIGVycm9yIHRvIHByb3ZpZGUgbW9yZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHRv
IHRoZSB1c2VyLgorICAgICAgICBzZWxmLmV4dHJhX2luZm8gPSBleHRyYV9pbmZvIGlmIGV4dHJh
X2luZm8gZWxzZSB7fQorCisgICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2U6IHN0cikgLT4gIk5v
UmV0dXJuIjoKKyAgICAgICAgIiIiVHJhbnNmb3JtIGFyZ3BhcnNlIGVycm9yIG1lc3NhZ2UgaW50
byBVc2FnZUVycm9yLiIiIgorICAgICAgICBtc2cgPSAie306IGVycm9yOiB7fSIuZm9ybWF0KHNl
bGYucHJvZywgbWVzc2FnZSkKKworICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX3BhcnNlciwgIl9j
b25maWdfc291cmNlX2hpbnQiKToKKyAgICAgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2Ug
dGhlIGF0dHJpYnV0ZSBpcyBzZXQgZHluYW1pY2FsbHkuCisgICAgICAgICAgICBtc2cgPSAie30g
KHt9KSIuZm9ybWF0KG1zZywgc2VsZi5fcGFyc2VyLl9jb25maWdfc291cmNlX2hpbnQpICAjIHR5
cGU6IGlnbm9yZQorCisgICAgICAgIHJhaXNlIFVzYWdlRXJyb3Ioc2VsZi5mb3JtYXRfdXNhZ2Uo
KSArIG1zZykKKworICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgdHlwZXNoZWQgaGFzIGEgdmVy
eSBjb21wbGV4IHR5cGUgaW4gdGhlIHN1cGVyY2xhc3MuCisgICAgZGVmIHBhcnNlX2FyZ3MoICAj
IHR5cGU6IGlnbm9yZQorICAgICAgICBzZWxmLAorICAgICAgICBhcmdzOiBPcHRpb25hbFtTZXF1
ZW5jZVtzdHJdXSA9IE5vbmUsCisgICAgICAgIG5hbWVzcGFjZTogT3B0aW9uYWxbYXJncGFyc2Uu
TmFtZXNwYWNlXSA9IE5vbmUsCisgICAgKSAtPiBhcmdwYXJzZS5OYW1lc3BhY2U6CisgICAgICAg
ICIiIkFsbG93IHNwbGl0dGluZyBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cy4iIiIKKyAgICAgICAg
cGFyc2VkLCB1bnJlY29nbml6ZWQgPSBzZWxmLnBhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNw
YWNlKQorICAgICAgICBpZiB1bnJlY29nbml6ZWQ6CisgICAgICAgICAgICBmb3IgYXJnIGluIHVu
cmVjb2duaXplZDoKICAgICAgICAgICAgICAgICBpZiBhcmcgYW5kIGFyZ1swXSA9PSAiLSI6Ci0g
ICAgICAgICAgICAgICAgICAgIGxpbmVzID0gWyJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcyIg
JSAoIiAiLmpvaW4oYXJndikpXQorICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IFsidW5yZWNv
Z25pemVkIGFyZ3VtZW50czogJXMiICUgKCIgIi5qb2luKHVucmVjb2duaXplZCkpXQogICAgICAg
ICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzb3J0ZWQoc2VsZi5leHRyYV9pbmZvLml0ZW1zKCkp
OgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICVzOiAlcyIgJSAoaywg
dikpCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAge306IHt9Ii5mb3Jt
YXQoaywgdikpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoIlxuIi5qb2luKGxpbmVz
KSkKLSAgICAgICAgICAgIGdldGF0dHIoYXJncywgRklMRV9PUl9ESVIpLmV4dGVuZChhcmd2KQot
ICAgICAgICByZXR1cm4gYXJncworICAgICAgICAgICAgZ2V0YXR0cihwYXJzZWQsIEZJTEVfT1Jf
RElSKS5leHRlbmQodW5yZWNvZ25pemVkKQorICAgICAgICByZXR1cm4gcGFyc2VkCisKKyAgICBp
ZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA5KTogICMgcHJhZ21hOiBubyBjb3ZlcgorICAg
ICAgICAjIEJhY2twb3J0IG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxs
LzE0MzE2IHNvIHdlIGNhbgorICAgICAgICAjIGRpc2FibGUgbG9uZyAtLWFyZ3VtZW50IGFiYnJl
dmlhdGlvbnMgd2l0aG91dCBicmVha2luZyBzaG9ydCBmbGFncy4KKyAgICAgICAgZGVmIF9wYXJz
ZV9vcHRpb25hbCgKKyAgICAgICAgICAgIHNlbGYsIGFyZ19zdHJpbmc6IHN0cgorICAgICAgICAp
IC0+IE9wdGlvbmFsW1R1cGxlW09wdGlvbmFsW2FyZ3BhcnNlLkFjdGlvbl0sIHN0ciwgT3B0aW9u
YWxbc3RyXV1dOgorICAgICAgICAgICAgaWYgbm90IGFyZ19zdHJpbmc6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBhcmdfc3RyaW5nWzBdIGluIHNlbGYu
cHJlZml4X2NoYXJzOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBp
ZiBhcmdfc3RyaW5nIGluIHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9uczoKKyAgICAgICAgICAg
ICAgICBhY3Rpb24gPSBzZWxmLl9vcHRpb25fc3RyaW5nX2FjdGlvbnNbYXJnX3N0cmluZ10KKyAg
ICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uLCBhcmdfc3RyaW5nLCBOb25lCisgICAgICAgICAg
ICBpZiBsZW4oYXJnX3N0cmluZykgPT0gMToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICAgICAgaWYgIj0iIGluIGFyZ19zdHJpbmc6CisgICAgICAgICAgICAgICAgb3B0aW9u
X3N0cmluZywgZXhwbGljaXRfYXJnID0gYXJnX3N0cmluZy5zcGxpdCgiPSIsIDEpCisgICAgICAg
ICAgICAgICAgaWYgb3B0aW9uX3N0cmluZyBpbiBzZWxmLl9vcHRpb25fc3RyaW5nX2FjdGlvbnM6
CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9u
c1tvcHRpb25fc3RyaW5nXQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uLCBvcHRp
b25fc3RyaW5nLCBleHBsaWNpdF9hcmcKKyAgICAgICAgICAgIGlmIHNlbGYuYWxsb3dfYWJicmV2
IG9yIG5vdCBhcmdfc3RyaW5nLnN0YXJ0c3dpdGgoIi0tIik6CisgICAgICAgICAgICAgICAgb3B0
aW9uX3R1cGxlcyA9IHNlbGYuX2dldF9vcHRpb25fdHVwbGVzKGFyZ19zdHJpbmcpCisgICAgICAg
ICAgICAgICAgaWYgbGVuKG9wdGlvbl90dXBsZXMpID4gMToKKyAgICAgICAgICAgICAgICAgICAg
bXNnID0gZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbWJpZ3VvdXMgb3B0aW9u
OiAlKG9wdGlvbilzIGNvdWxkIG1hdGNoICUobWF0Y2hlcylzIgorICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAiLCAiLmpvaW4ob3B0aW9uIGZvciBf
LCBvcHRpb24sIF8gaW4gb3B0aW9uX3R1cGxlcykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5l
cnJvcihtc2cgJSB7Im9wdGlvbiI6IGFyZ19zdHJpbmcsICJtYXRjaGVzIjogb3B0aW9uc30pCisg
ICAgICAgICAgICAgICAgZWxpZiBsZW4ob3B0aW9uX3R1cGxlcykgPT0gMToKKyAgICAgICAgICAg
ICAgICAgICAgKG9wdGlvbl90dXBsZSwpID0gb3B0aW9uX3R1cGxlcworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCisgICAgICAgICAgICBpZiBzZWxmLl9uZWdhdGl2ZV9u
dW1iZXJfbWF0Y2hlci5tYXRjaChhcmdfc3RyaW5nKToKKyAgICAgICAgICAgICAgICBpZiBub3Qg
c2VsZi5faGFzX25lZ2F0aXZlX251bWJlcl9vcHRpb25hbHM6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCisgICAgICAgICAgICBpZiAiICIgaW4gYXJnX3N0cmluZzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIGFyZ19zdHJpbmcs
IE5vbmUKIAogCiBjbGFzcyBEcm9wU2hvcnRlckxvbmdIZWxwRm9ybWF0dGVyKGFyZ3BhcnNlLkhl
bHBGb3JtYXR0ZXIpOgotICAgICIiInNob3J0ZW4gaGVscCBmb3IgbG9uZyBvcHRpb25zIHRoYXQg
ZGlmZmVyIG9ubHkgaW4gZXh0cmEgaHlwaGVucworICAgICIiIlNob3J0ZW4gaGVscCBmb3IgbG9u
ZyBvcHRpb25zIHRoYXQgZGlmZmVyIG9ubHkgaW4gZXh0cmEgaHlwaGVucy4KIAotICAgIC0gY29s
bGFwc2UgKipsb25nKiogb3B0aW9ucyB0aGF0IGFyZSB0aGUgc2FtZSBleGNlcHQgZm9yIGV4dHJh
IGh5cGhlbnMKLSAgICAtIHNwZWNpYWwgYWN0aW9uIGF0dHJpYnV0ZSBtYXBfbG9uZ19vcHRpb24g
YWxsb3dzIHN1cnByZXNzaW5nIGFkZGl0aW9uYWwKLSAgICAgIGxvbmcgb3B0aW9ucwotICAgIC0g
c2hvcnRjdXQgaWYgdGhlcmUgYXJlIG9ubHkgdHdvIG9wdGlvbnMgYW5kIG9uZSBvZiB0aGVtIGlz
IGEgc2hvcnQgb25lCi0gICAgLSBjYWNoZSByZXN1bHQgb24gYWN0aW9uIG9iamVjdCBhcyB0aGlz
IGlzIGNhbGxlZCBhdCBsZWFzdCAyIHRpbWVzCisgICAgLSBDb2xsYXBzZSAqKmxvbmcqKiBvcHRp
b25zIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBmb3IgZXh0cmEgaHlwaGVucy4KKyAgICAtIFNo
b3J0Y3V0IGlmIHRoZXJlIGFyZSBvbmx5IHR3byBvcHRpb25zIGFuZCBvbmUgb2YgdGhlbSBpcyBh
IHNob3J0IG9uZS4KKyAgICAtIENhY2hlIHJlc3VsdCBvbiB0aGUgYWN0aW9uIG9iamVjdCBhcyB0
aGlzIGlzIGNhbGxlZCBhdCBsZWFzdCAyIHRpbWVzLgogICAgICIiIgogCi0gICAgZGVmIF9mb3Jt
YXRfYWN0aW9uX2ludm9jYXRpb24oc2VsZiwgYWN0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKmFyZ3M6IEFueSwgKiprd2FyZ3M6IEFueSkgLT4gTm9uZToKKyAgICAgICAgIyBVc2UgbW9y
ZSBhY2N1cmF0ZSB0ZXJtaW5hbCB3aWR0aC4KKyAgICAgICAgaWYgIndpZHRoIiBub3QgaW4ga3dh
cmdzOgorICAgICAgICAgICAga3dhcmdzWyJ3aWR0aCJdID0gX3B5dGVzdC5faW8uZ2V0X3Rlcm1p
bmFsX3dpZHRoKCkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisK
KyAgICBkZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rpb246IGFyZ3BhcnNl
LkFjdGlvbikgLT4gc3RyOgogICAgICAgICBvcmdzdHIgPSBhcmdwYXJzZS5IZWxwRm9ybWF0dGVy
Ll9mb3JtYXRfYWN0aW9uX2ludm9jYXRpb24oc2VsZiwgYWN0aW9uKQogICAgICAgICBpZiBvcmdz
dHIgYW5kIG9yZ3N0clswXSAhPSAiLSI6ICAjIG9ubHkgb3B0aW9uYWwgYXJndW1lbnRzCiAgICAg
ICAgICAgICByZXR1cm4gb3Jnc3RyCi0gICAgICAgIHJlcyA9IGdldGF0dHIoYWN0aW9uLCAiX2Zv
cm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiIsIE5vbmUpCisgICAgICAgIHJlcyA9IGdldGF0dHIo
CisgICAgICAgICAgICBhY3Rpb24sICJfZm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uIiwgTm9u
ZQorICAgICAgICApICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KICAgICAgICAgaWYgcmVzOgogICAg
ICAgICAgICAgcmV0dXJuIHJlcwogICAgICAgICBvcHRpb25zID0gb3Jnc3RyLnNwbGl0KCIsICIp
CiAgICAgICAgIGlmIGxlbihvcHRpb25zKSA9PSAyIGFuZCAobGVuKG9wdGlvbnNbMF0pID09IDIg
b3IgbGVuKG9wdGlvbnNbMV0pID09IDIpOgogICAgICAgICAgICAgIyBhIHNob3J0Y3V0IGZvciAn
LWgsIC0taGVscCcgb3IgJy0tYWJjJywgJy1hJwotICAgICAgICAgICAgYWN0aW9uLl9mb3JtYXR0
ZWRfYWN0aW9uX2ludm9jYXRpb24gPSBvcmdzdHIKKyAgICAgICAgICAgIGFjdGlvbi5fZm9ybWF0
dGVkX2FjdGlvbl9pbnZvY2F0aW9uID0gb3Jnc3RyICAjIHR5cGU6IGlnbm9yZQogICAgICAgICAg
ICAgcmV0dXJuIG9yZ3N0cgogICAgICAgICByZXR1cm5fbGlzdCA9IFtdCi0gICAgICAgIG9wdGlv
bl9tYXAgPSBnZXRhdHRyKGFjdGlvbiwgIm1hcF9sb25nX29wdGlvbiIsIHt9KQotICAgICAgICBp
ZiBvcHRpb25fbWFwIGlzIE5vbmU6Ci0gICAgICAgICAgICBvcHRpb25fbWFwID0ge30KLSAgICAg
ICAgc2hvcnRfbG9uZyA9IHt9CisgICAgICAgIHNob3J0X2xvbmcgPSB7fSAgIyB0eXBlOiBEaWN0
W3N0ciwgc3RyXQogICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6CiAgICAgICAgICAgICBp
ZiBsZW4ob3B0aW9uKSA9PSAyIG9yIG9wdGlvblsyXSA9PSAiICI6CiAgICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgIGlmIG5vdCBvcHRpb24uc3RhcnRzd2l0aCgiLS0iKToKICAg
ICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKAotICAgICAgICAgICAgICAgICAgICAn
bG9uZyBvcHRpb25hbCBhcmd1bWVudCB3aXRob3V0ICItLSI6IFslc10nICUgKG9wdGlvbiksIHNl
bGYKKyAgICAgICAgICAgICAgICAgICAgJ2xvbmcgb3B0aW9uYWwgYXJndW1lbnQgd2l0aG91dCAi
LS0iOiBbJXNdJyAlIChvcHRpb24pLCBvcHRpb24KICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICB4eG9wdGlvbiA9IG9wdGlvblsyOl0KLSAgICAgICAgICAgIGlmIHh4b3B0aW9uLnNwbGl0
KClbMF0gbm90IGluIG9wdGlvbl9tYXA6Ci0gICAgICAgICAgICAgICAgc2hvcnRlbmVkID0geHhv
cHRpb24ucmVwbGFjZSgiLSIsICIiKQotICAgICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAg
ICAgICAgICAgc2hvcnRlbmVkIG5vdCBpbiBzaG9ydF9sb25nCi0gICAgICAgICAgICAgICAgICAg
IG9yIGxlbihzaG9ydF9sb25nW3Nob3J0ZW5lZF0pIDwgbGVuKHh4b3B0aW9uKQotICAgICAgICAg
ICAgICAgICk6Ci0gICAgICAgICAgICAgICAgICAgIHNob3J0X2xvbmdbc2hvcnRlbmVkXSA9IHh4
b3B0aW9uCisgICAgICAgICAgICBzaG9ydGVuZWQgPSB4eG9wdGlvbi5yZXBsYWNlKCItIiwgIiIp
CisgICAgICAgICAgICBpZiBzaG9ydGVuZWQgbm90IGluIHNob3J0X2xvbmcgb3IgbGVuKHNob3J0
X2xvbmdbc2hvcnRlbmVkXSkgPCBsZW4oCisgICAgICAgICAgICAgICAgeHhvcHRpb24KKyAgICAg
ICAgICAgICk6CisgICAgICAgICAgICAgICAgc2hvcnRfbG9uZ1tzaG9ydGVuZWRdID0geHhvcHRp
b24KICAgICAgICAgIyBub3cgc2hvcnRfbG9uZyBoYXMgYmVlbiBmaWxsZWQgb3V0IHRvIHRoZSBs
b25nZXN0IHdpdGggZGFzaGVzCiAgICAgICAgICMgKiphbmQqKiB3ZSBrZWVwIHRoZSByaWdodCBv
cHRpb24gb3JkZXJpbmcgZnJvbSBhZGRfYXJndW1lbnQKICAgICAgICAgZm9yIG9wdGlvbiBpbiBv
cHRpb25zOgpAQCAtMzkwLDUgKzUwNCwxOCBAQCBjbGFzcyBEcm9wU2hvcnRlckxvbmdIZWxwRm9y
bWF0dGVyKGFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIpOgogICAgICAgICAgICAgICAgIHJldHVybl9s
aXN0LmFwcGVuZChvcHRpb24pCiAgICAgICAgICAgICBpZiBvcHRpb25bMjpdID09IHNob3J0X2xv
bmcuZ2V0KG9wdGlvbi5yZXBsYWNlKCItIiwgIiIpKToKICAgICAgICAgICAgICAgICByZXR1cm5f
bGlzdC5hcHBlbmQob3B0aW9uLnJlcGxhY2UoIiAiLCAiPSIsIDEpKQotICAgICAgICBhY3Rpb24u
X2Zvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiA9ICIsICIuam9pbihyZXR1cm5fbGlzdCkKLSAg
ICAgICAgcmV0dXJuIGFjdGlvbi5fZm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uCisgICAgICAg
IGZvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiA9ICIsICIuam9pbihyZXR1cm5fbGlzdCkKKyAg
ICAgICAgYWN0aW9uLl9mb3JtYXR0ZWRfYWN0aW9uX2ludm9jYXRpb24gPSBmb3JtYXR0ZWRfYWN0
aW9uX2ludm9jYXRpb24gICMgdHlwZTogaWdub3JlCisgICAgICAgIHJldHVybiBmb3JtYXR0ZWRf
YWN0aW9uX2ludm9jYXRpb24KKworICAgIGRlZiBfc3BsaXRfbGluZXMoc2VsZiwgdGV4dCwgd2lk
dGgpOgorICAgICAgICAiIiJXcmFwIGxpbmVzIGFmdGVyIHNwbGl0dGluZyBvbiBvcmlnaW5hbCBu
ZXdsaW5lcy4KKworICAgICAgICBUaGlzIGFsbG93cyB0byBoYXZlIGV4cGxpY2l0IGxpbmUgYnJl
YWtzIGluIHRoZSBoZWxwIHRleHQuCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgdGV4dHdy
YXAKKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRs
aW5lcygpOgorICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHRleHR3cmFwLndyYXAobGluZS5zdHJp
cCgpLCB3aWR0aCkpCisgICAgICAgIHJldHVybiBsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvY29uZmlnL2V4Y2VwdGlvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9jb25maWcvZXhjZXB0aW9ucy5weQppbmRleCA2NGJhZTgzNGQxY2UuLjRmMTMyMGU3NThk
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL2V4Y2VwdGlvbnMu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL2V4Y2VwdGlvbnMucHkKQEAg
LTEsOCArMSwxMSBAQAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKKworCitAZmlu
YWwKIGNsYXNzIFVzYWdlRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiIgZXJyb3IgaW4gcHl0ZXN0
IHVzYWdlIG9yIGludm9jYXRpb24iIiIKKyAgICAiIiJFcnJvciBpbiBweXRlc3QgdXNhZ2Ugb3Ig
aW52b2NhdGlvbi4iIiIKIAogCiBjbGFzcyBQcmludEhlbHAoRXhjZXB0aW9uKToKLSAgICAiIiJS
YWlzZWQgd2hlbiBweXRlc3Qgc2hvdWxkIHByaW50IGl0J3MgaGVscCB0byBza2lwIHRoZSByZXN0
IG9mIHRoZQorICAgICIiIlJhaXNlZCB3aGVuIHB5dGVzdCBzaG91bGQgcHJpbnQgaXRzIGhlbHAg
dG8gc2tpcCB0aGUgcmVzdCBvZiB0aGUKICAgICBhcmd1bWVudCBwYXJzaW5nIGFuZCB2YWxpZGF0
aW9uLiIiIgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2Nv
bmZpZy9maW5kcGF0aHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvZmluZHBh
dGhzLnB5CmluZGV4IGZkZTdiZGRiOTM5Yi4uMTY3YjllN2EwMDYxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvZmluZHBhdGhzLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L2NvbmZpZy9maW5kcGF0aHMucHkKQEAgLTEsMTQwICsxLDIxMSBAQAotaW1w
b3J0IHB5CiBpbXBvcnQgb3MKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBp
bXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBv
cnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1w
b3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0IGluaWNvbmZpZwor
CiBmcm9tIC5leGNlcHRpb25zIGltcG9ydCBVc2FnZUVycm9yCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwK
K2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBhYnNvbHV0ZXBhdGgKK2Zyb20gX3B5dGVzdC5w
YXRobGliIGltcG9ydCBjb21tb25wYXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0
aAogCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gLiBpbXBvcnQgQ29uZmlnCiAKLWRlZiBl
eGlzdHMocGF0aCwgaWdub3JlPUVudmlyb25tZW50RXJyb3IpOgotICAgIHRyeToKLSAgICAgICAg
cmV0dXJuIHBhdGguY2hlY2soKQotICAgIGV4Y2VwdCBpZ25vcmU6Ci0gICAgICAgIHJldHVybiBG
YWxzZQogCitkZWYgX3BhcnNlX2luaV9jb25maWcocGF0aDogUGF0aCkgLT4gaW5pY29uZmlnLklu
aUNvbmZpZzoKKyAgICAiIiJQYXJzZSB0aGUgZ2l2ZW4gZ2VuZXJpYyAnLmluaScgZmlsZSB1c2lu
ZyBsZWdhY3kgSW5pQ29uZmlnIHBhcnNlciwgcmV0dXJuaW5nCisgICAgdGhlIHBhcnNlZCBvYmpl
Y3QuCiAKLWRlZiBnZXRjZmcoYXJncywgd2FybmZ1bmM9Tm9uZSk6CisgICAgUmFpc2UgVXNhZ2VF
cnJvciBpZiB0aGUgZmlsZSBjYW5ub3QgYmUgcGFyc2VkLgogICAgICIiIgotICAgIFNlYXJjaCB0
aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIGEgdmFsaWQgaW5pLWZpbGUgZm9yIHB5dGVzdCwKLSAg
ICBhbmQgcmV0dXJuIGEgdHVwbGUgb2YgKHJvb3RkaXIsIGluaWZpbGUsIGNmZy1kaWN0KS4KKyAg
ICB0cnk6CisgICAgICAgIHJldHVybiBpbmljb25maWcuSW5pQ29uZmlnKHBhdGgpCisgICAgZXhj
ZXB0IGluaWNvbmZpZy5QYXJzZUVycm9yIGFzIGV4YzoKKyAgICAgICAgcmFpc2UgVXNhZ2VFcnJv
cihzdHIoZXhjKSkgZnJvbSBleGMKKworCitkZWYgbG9hZF9jb25maWdfZGljdF9mcm9tX2ZpbGUo
CisgICAgZmlsZXBhdGg6IFBhdGgsCispIC0+IE9wdGlvbmFsW0RpY3Rbc3RyLCBVbmlvbltzdHIs
IExpc3Rbc3RyXV1dXToKKyAgICAiIiJMb2FkIHB5dGVzdCBjb25maWd1cmF0aW9uIGZyb20gdGhl
IGdpdmVuIGZpbGUgcGF0aCwgaWYgc3VwcG9ydGVkLgogCi0gICAgbm90ZTogd2FybmZ1bmMgaXMg
YW4gb3B0aW9uYWwgZnVuY3Rpb24gdXNlZCB0byB3YXJuCi0gICAgICAgIGFib3V0IGluaS1maWxl
cyB0aGF0IHVzZSBkZXByZWNhdGVkIGZlYXR1cmVzLgotICAgICAgICBUaGlzIHBhcmFtZXRlciBz
aG91bGQgYmUgcmVtb3ZlZCB3aGVuIHB5dGVzdAotICAgICAgICBhZG9wdHMgc3RhbmRhcmQgZGVw
cmVjYXRpb24gd2FybmluZ3MgKCMxODA0KS4KKyAgICBSZXR1cm4gTm9uZSBpZiB0aGUgZmlsZSBk
b2VzIG5vdCBjb250YWluIHZhbGlkIHB5dGVzdCBjb25maWd1cmF0aW9uLgogICAgICIiIgotICAg
IGZyb20gX3B5dGVzdC5kZXByZWNhdGVkIGltcG9ydCBDRkdfUFlURVNUX1NFQ1RJT04KIAotICAg
IGluaWJhc2VuYW1lcyA9IFsicHl0ZXN0LmluaSIsICJ0b3guaW5pIiwgInNldHVwLmNmZyJdCisg
ICAgIyBDb25maWd1cmF0aW9uIGZyb20gaW5pIGZpbGVzIGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBb
cHl0ZXN0XSBzZWN0aW9uLCBpZiBwcmVzZW50LgorICAgIGlmIGZpbGVwYXRoLnN1ZmZpeCA9PSAi
LmluaSI6CisgICAgICAgIGluaWNvbmZpZyA9IF9wYXJzZV9pbmlfY29uZmlnKGZpbGVwYXRoKQor
CisgICAgICAgIGlmICJweXRlc3QiIGluIGluaWNvbmZpZzoKKyAgICAgICAgICAgIHJldHVybiBk
aWN0KGluaWNvbmZpZ1sicHl0ZXN0Il0uaXRlbXMoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICMgInB5dGVzdC5pbmkiIGZpbGVzIGFyZSBhbHdheXMgdGhlIHNvdXJjZSBvZiBjb25maWd1
cmF0aW9uLCBldmVuIGlmIGVtcHR5LgorICAgICAgICAgICAgaWYgZmlsZXBhdGgubmFtZSA9PSAi
cHl0ZXN0LmluaSI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHt9CisKKyAgICAjICcuY2ZnJyBm
aWxlcyBhcmUgY29uc2lkZXJlZCBpZiB0aGV5IGNvbnRhaW4gYSAiW3Rvb2w6cHl0ZXN0XSIgc2Vj
dGlvbi4KKyAgICBlbGlmIGZpbGVwYXRoLnN1ZmZpeCA9PSAiLmNmZyI6CisgICAgICAgIGluaWNv
bmZpZyA9IF9wYXJzZV9pbmlfY29uZmlnKGZpbGVwYXRoKQorCisgICAgICAgIGlmICJ0b29sOnB5
dGVzdCIgaW4gaW5pY29uZmlnLnNlY3Rpb25zOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QoaW5p
Y29uZmlnWyJ0b29sOnB5dGVzdCJdLml0ZW1zKCkpCisgICAgICAgIGVsaWYgInB5dGVzdCIgaW4g
aW5pY29uZmlnLnNlY3Rpb25zOgorICAgICAgICAgICAgIyBJZiBhIHNldHVwLmNmZyBjb250YWlu
cyBhICJbcHl0ZXN0XSIgc2VjdGlvbiwgd2UgcmFpc2UgYSBmYWlsdXJlIHRvIGluZGljYXRlIHVz
ZXJzIHRoYXQKKyAgICAgICAgICAgICMgcGxhaW4gIltweXRlc3RdIiBzZWN0aW9ucyBpbiBzZXR1
cC5jZmcgZmlsZXMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCAoIzMwODYpLgorICAgICAgICAgICAg
ZmFpbChDRkdfUFlURVNUX1NFQ1RJT04uZm9ybWF0KGZpbGVuYW1lPSJzZXR1cC5jZmciKSwgcHl0
cmFjZT1GYWxzZSkKKworICAgICMgJy50b21sJyBmaWxlcyBhcmUgY29uc2lkZXJlZCBpZiB0aGV5
IGNvbnRhaW4gYSBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdIHRhYmxlLgorICAgIGVsaWYgZmls
ZXBhdGguc3VmZml4ID09ICIudG9tbCI6CisgICAgICAgIGltcG9ydCB0b21sCisKKyAgICAgICAg
Y29uZmlnID0gdG9tbC5sb2FkKHN0cihmaWxlcGF0aCkpCisKKyAgICAgICAgcmVzdWx0ID0gY29u
ZmlnLmdldCgidG9vbCIsIHt9KS5nZXQoInB5dGVzdCIsIHt9KS5nZXQoImluaV9vcHRpb25zIiwg
Tm9uZSkKKyAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBUT01M
IHN1cHBvcnRzIHJpY2hlciBkYXRhIHR5cGVzIHRoYW4gaW5pIGZpbGVzIChzdHJpbmdzLCBhcnJh
eXMsIGZsb2F0cywgaW50cywgZXRjKSwKKyAgICAgICAgICAgICMgaG93ZXZlciB3ZSBuZWVkIHRv
IGNvbnZlcnQgYWxsIHNjYWxhciB2YWx1ZXMgdG8gc3RyIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
dGhlIHJlc3QKKyAgICAgICAgICAgICMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLCB3aGlj
aCBleHBlY3RzIHN0cmluZ3Mgb25seS4KKyAgICAgICAgICAgIGRlZiBtYWtlX3NjYWxhcih2OiBv
YmplY3QpIC0+IFVuaW9uW3N0ciwgTGlzdFtzdHJdXToKKyAgICAgICAgICAgICAgICByZXR1cm4g
diBpZiBpc2luc3RhbmNlKHYsIGxpc3QpIGVsc2Ugc3RyKHYpCisKKyAgICAgICAgICAgIHJldHVy
biB7azogbWFrZV9zY2FsYXIodikgZm9yIGssIHYgaW4gcmVzdWx0Lml0ZW1zKCl9CisKKyAgICBy
ZXR1cm4gTm9uZQorCisKK2RlZiBsb2NhdGVfY29uZmlnKAorICAgIGFyZ3M6IEl0ZXJhYmxlW1Bh
dGhdLAorKSAtPiBUdXBsZVsKKyAgICBPcHRpb25hbFtQYXRoXSwgT3B0aW9uYWxbUGF0aF0sIERp
Y3Rbc3RyLCBVbmlvbltzdHIsIExpc3Rbc3RyXV1dLAorXToKKyAgICAiIiJTZWFyY2ggaW4gdGhl
IGxpc3Qgb2YgYXJndW1lbnRzIGZvciBhIHZhbGlkIGluaS1maWxlIGZvciBweXRlc3QsCisgICAg
YW5kIHJldHVybiBhIHR1cGxlIG9mIChyb290ZGlyLCBpbmlmaWxlLCBjZmctZGljdCkuIiIiCisg
ICAgY29uZmlnX25hbWVzID0gWworICAgICAgICAicHl0ZXN0LmluaSIsCisgICAgICAgICJweXBy
b2plY3QudG9tbCIsCisgICAgICAgICJ0b3guaW5pIiwKKyAgICAgICAgInNldHVwLmNmZyIsCisg
ICAgXQogICAgIGFyZ3MgPSBbeCBmb3IgeCBpbiBhcmdzIGlmIG5vdCBzdHIoeCkuc3RhcnRzd2l0
aCgiLSIpXQogICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBhcmdzID0gW3B5LnBhdGgubG9jYWwo
KV0KKyAgICAgICAgYXJncyA9IFtQYXRoLmN3ZCgpXQogICAgIGZvciBhcmcgaW4gYXJnczoKLSAg
ICAgICAgYXJnID0gcHkucGF0aC5sb2NhbChhcmcpCi0gICAgICAgIGZvciBiYXNlIGluIGFyZy5w
YXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgZm9yIGluaWJhc2VuYW1lIGluIGluaWJh
c2VuYW1lczoKLSAgICAgICAgICAgICAgICBwID0gYmFzZS5qb2luKGluaWJhc2VuYW1lKQotICAg
ICAgICAgICAgICAgIGlmIGV4aXN0cyhwKToKLSAgICAgICAgICAgICAgICAgICAgaW5pY29uZmln
ID0gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhwKQotICAgICAgICAgICAgICAgICAgICBpZiAicHl0
ZXN0IiBpbiBpbmljb25maWcuc2VjdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBp
bmliYXNlbmFtZSA9PSAic2V0dXAuY2ZnIiBhbmQgd2FybmZ1bmM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2FybmZ1bmMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJD
MSIsIENGR19QWVRFU1RfU0VDVElPTi5mb3JtYXQoZmlsZW5hbWU9aW5pYmFzZW5hbWUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGJhc2UsIHAsIGluaWNvbmZpZ1sicHl0ZXN0Il0KLSAgICAgICAgICAgICAgICAgICAgaWYgKAot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5pYmFzZW5hbWUgPT0gInNldHVwLmNmZyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZCAidG9vbDpweXRlc3QiIGluIGluaWNvbmZpZy5zZWN0aW9u
cwotICAgICAgICAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGJhc2UsIHAsIGluaWNvbmZpZ1sidG9vbDpweXRlc3QiXQotICAgICAgICAgICAgICAgICAgICBl
bGlmIGluaWJhc2VuYW1lID09ICJweXRlc3QuaW5pIjoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICMgYWxsb3dlZCB0byBiZSBlbXB0eQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJh
c2UsIHAsIHt9Ci0gICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKLQotCi1kZWYgZ2V0X2NvbW1v
bl9hbmNlc3RvcihwYXRocyk6Ci0gICAgY29tbW9uX2FuY2VzdG9yID0gTm9uZQorICAgICAgICBh
cmdwYXRoID0gYWJzb2x1dGVwYXRoKGFyZykKKyAgICAgICAgZm9yIGJhc2UgaW4gKGFyZ3BhdGgs
ICphcmdwYXRoLnBhcmVudHMpOgorICAgICAgICAgICAgZm9yIGNvbmZpZ19uYW1lIGluIGNvbmZp
Z19uYW1lczoKKyAgICAgICAgICAgICAgICBwID0gYmFzZSAvIGNvbmZpZ19uYW1lCisgICAgICAg
ICAgICAgICAgaWYgcC5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgICAgIGluaV9jb25maWcg
PSBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShwKQorICAgICAgICAgICAgICAgICAgICBpZiBp
bmlfY29uZmlnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJh
c2UsIHAsIGluaV9jb25maWcKKyAgICByZXR1cm4gTm9uZSwgTm9uZSwge30KKworCitkZWYgZ2V0
X2NvbW1vbl9hbmNlc3RvcihwYXRoczogSXRlcmFibGVbUGF0aF0pIC0+IFBhdGg6CisgICAgY29t
bW9uX2FuY2VzdG9yID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtQYXRoXQogICAgIGZvciBwYXRo
IGluIHBhdGhzOgogICAgICAgICBpZiBub3QgcGF0aC5leGlzdHMoKToKICAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgIGlmIGNvbW1vbl9hbmNlc3RvciBpcyBOb25lOgogICAgICAgICAgICAg
Y29tbW9uX2FuY2VzdG9yID0gcGF0aAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgcGF0
aC5yZWx0byhjb21tb25fYW5jZXN0b3IpIG9yIHBhdGggPT0gY29tbW9uX2FuY2VzdG9yOgorICAg
ICAgICAgICAgaWYgY29tbW9uX2FuY2VzdG9yIGluIHBhdGgucGFyZW50cyBvciBwYXRoID09IGNv
bW1vbl9hbmNlc3RvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxp
ZiBjb21tb25fYW5jZXN0b3IucmVsdG8ocGF0aCk6CisgICAgICAgICAgICBlbGlmIHBhdGggaW4g
Y29tbW9uX2FuY2VzdG9yLnBhcmVudHM6CiAgICAgICAgICAgICAgICAgY29tbW9uX2FuY2VzdG9y
ID0gcGF0aAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzaGFyZWQgPSBwYXRo
LmNvbW1vbihjb21tb25fYW5jZXN0b3IpCisgICAgICAgICAgICAgICAgc2hhcmVkID0gY29tbW9u
cGF0aChwYXRoLCBjb21tb25fYW5jZXN0b3IpCiAgICAgICAgICAgICAgICAgaWYgc2hhcmVkIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBzaGFyZWQK
ICAgICBpZiBjb21tb25fYW5jZXN0b3IgaXMgTm9uZToKLSAgICAgICAgY29tbW9uX2FuY2VzdG9y
ID0gcHkucGF0aC5sb2NhbCgpCi0gICAgZWxpZiBjb21tb25fYW5jZXN0b3IuaXNmaWxlKCk6Ci0g
ICAgICAgIGNvbW1vbl9hbmNlc3RvciA9IGNvbW1vbl9hbmNlc3Rvci5kaXJwYXRoKCkKKyAgICAg
ICAgY29tbW9uX2FuY2VzdG9yID0gUGF0aC5jd2QoKQorICAgIGVsaWYgY29tbW9uX2FuY2VzdG9y
LmlzX2ZpbGUoKToKKyAgICAgICAgY29tbW9uX2FuY2VzdG9yID0gY29tbW9uX2FuY2VzdG9yLnBh
cmVudAogICAgIHJldHVybiBjb21tb25fYW5jZXN0b3IKIAogCi1kZWYgZ2V0X2RpcnNfZnJvbV9h
cmdzKGFyZ3MpOgotCi0gICAgZGVmIGlzX29wdGlvbih4KToKLSAgICAgICAgcmV0dXJuIHN0cih4
KS5zdGFydHN3aXRoKCItIikKK2RlZiBnZXRfZGlyc19mcm9tX2FyZ3MoYXJnczogSXRlcmFibGVb
c3RyXSkgLT4gTGlzdFtQYXRoXToKKyAgICBkZWYgaXNfb3B0aW9uKHg6IHN0cikgLT4gYm9vbDoK
KyAgICAgICAgcmV0dXJuIHguc3RhcnRzd2l0aCgiLSIpCiAKLSAgICBkZWYgZ2V0X2ZpbGVfcGFy
dF9mcm9tX25vZGVfaWQoeCk6Ci0gICAgICAgIHJldHVybiBzdHIoeCkuc3BsaXQoIjo6IilbMF0K
KyAgICBkZWYgZ2V0X2ZpbGVfcGFydF9mcm9tX25vZGVfaWQoeDogc3RyKSAtPiBzdHI6CisgICAg
ICAgIHJldHVybiB4LnNwbGl0KCI6OiIpWzBdCiAKLSAgICBkZWYgZ2V0X2Rpcl9mcm9tX3BhdGgo
cGF0aCk6Ci0gICAgICAgIGlmIHBhdGguaXNkaXIoKToKKyAgICBkZWYgZ2V0X2Rpcl9mcm9tX3Bh
dGgocGF0aDogUGF0aCkgLT4gUGF0aDoKKyAgICAgICAgaWYgcGF0aC5pc19kaXIoKToKICAgICAg
ICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgIHJldHVybiBweS5wYXRoLmxvY2FsKHBhdGguZGly
bmFtZSkKKyAgICAgICAgcmV0dXJuIHBhdGgucGFyZW50CisKKyAgICBkZWYgc2FmZV9leGlzdHMo
cGF0aDogUGF0aCkgLT4gYm9vbDoKKyAgICAgICAgIyBUaGlzIGNhbiB0aHJvdyBvbiBwYXRocyB0
aGF0IGNvbnRhaW4gY2hhcmFjdGVycyB1bnJlcHJlc2VudGFibGUgYXQgdGhlIE9TIGxldmVsLAor
ICAgICAgICAjIG9yIHdpdGggaW52YWxpZCBzeW50YXggb24gV2luZG93cyAoaHR0cHM6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUzNTMwNikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJu
IHBhdGguZXhpc3RzKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKIAogICAgICMgVGhlc2UgbG9vayBsaWtlIHBhdGhzIGJ1dCBtYXkgbm90IGV4aXN0
CiAgICAgcG9zc2libGVfcGF0aHMgPSAoCi0gICAgICAgIHB5LnBhdGgubG9jYWwoZ2V0X2ZpbGVf
cGFydF9mcm9tX25vZGVfaWQoYXJnKSkKKyAgICAgICAgYWJzb2x1dGVwYXRoKGdldF9maWxlX3Bh
cnRfZnJvbV9ub2RlX2lkKGFyZykpCiAgICAgICAgIGZvciBhcmcgaW4gYXJncwogICAgICAgICBp
ZiBub3QgaXNfb3B0aW9uKGFyZykKICAgICApCiAKLSAgICByZXR1cm4gW2dldF9kaXJfZnJvbV9w
YXRoKHBhdGgpIGZvciBwYXRoIGluIHBvc3NpYmxlX3BhdGhzIGlmIHBhdGguZXhpc3RzKCldCisg
ICAgcmV0dXJuIFtnZXRfZGlyX2Zyb21fcGF0aChwYXRoKSBmb3IgcGF0aCBpbiBwb3NzaWJsZV9w
YXRocyBpZiBzYWZlX2V4aXN0cyhwYXRoKV0KKworCitDRkdfUFlURVNUX1NFQ1RJT04gPSAiW3B5
dGVzdF0gc2VjdGlvbiBpbiB7ZmlsZW5hbWV9IGZpbGVzIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQs
IGNoYW5nZSB0byBbdG9vbDpweXRlc3RdIGluc3RlYWQuIgogCiAKLWRlZiBkZXRlcm1pbmVfc2V0
dXAoaW5pZmlsZSwgYXJncywgd2FybmZ1bmM9Tm9uZSwgcm9vdGRpcl9jbWRfYXJnPU5vbmUpOgor
ZGVmIGRldGVybWluZV9zZXR1cCgKKyAgICBpbmlmaWxlOiBPcHRpb25hbFtzdHJdLAorICAgIGFy
Z3M6IFNlcXVlbmNlW3N0cl0sCisgICAgcm9vdGRpcl9jbWRfYXJnOiBPcHRpb25hbFtzdHJdID0g
Tm9uZSwKKyAgICBjb25maWc6IE9wdGlvbmFsWyJDb25maWciXSA9IE5vbmUsCispIC0+IFR1cGxl
W1BhdGgsIE9wdGlvbmFsW1BhdGhdLCBEaWN0W3N0ciwgVW5pb25bc3RyLCBMaXN0W3N0cl1dXV06
CisgICAgcm9vdGRpciA9IE5vbmUKICAgICBkaXJzID0gZ2V0X2RpcnNfZnJvbV9hcmdzKGFyZ3Mp
CiAgICAgaWYgaW5pZmlsZToKLSAgICAgICAgaW5pY29uZmlnID0gcHkuaW5pY29uZmlnLkluaUNv
bmZpZyhpbmlmaWxlKQotICAgICAgICBpc19jZmdfZmlsZSA9IHN0cihpbmlmaWxlKS5lbmRzd2l0
aCgiLmNmZyIpCi0gICAgICAgICMgVE9ETzogW3B5dGVzdF0gc2VjdGlvbiBpbiAqLmNmZyBmaWxl
cyBpcyBkZXByaWNhdGVkLiBOZWVkIHJlZmFjdG9yaW5nLgotICAgICAgICBzZWN0aW9ucyA9IFsi
dG9vbDpweXRlc3QiLCAicHl0ZXN0Il0gaWYgaXNfY2ZnX2ZpbGUgZWxzZSBbInB5dGVzdCJdCi0g
ICAgICAgIGZvciBzZWN0aW9uIGluIHNlY3Rpb25zOgotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIGluaWNmZyA9IGluaWNvbmZpZ1tzZWN0aW9uXQotICAgICAgICAgICAgICAgIGlm
IGlzX2NmZ19maWxlIGFuZCBzZWN0aW9uID09ICJweXRlc3QiIGFuZCB3YXJuZnVuYzoKLSAgICAg
ICAgICAgICAgICAgICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IENGR19QWVRFU1Rf
U0VDVElPTgotCi0gICAgICAgICAgICAgICAgICAgIHdhcm5mdW5jKCJDMSIsIENGR19QWVRFU1Rf
U0VDVElPTi5mb3JtYXQoZmlsZW5hbWU9c3RyKGluaWZpbGUpKSkKLSAgICAgICAgICAgICAgICBi
cmVhawotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIGluaWNm
ZyA9IE5vbmUKLSAgICAgICAgcm9vdGRpciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKKyAg
ICAgICAgaW5pcGF0aF8gPSBhYnNvbHV0ZXBhdGgoaW5pZmlsZSkKKyAgICAgICAgaW5pcGF0aCA9
IGluaXBhdGhfICAjIHR5cGU6IE9wdGlvbmFsW1BhdGhdCisgICAgICAgIGluaWNmZyA9IGxvYWRf
Y29uZmlnX2RpY3RfZnJvbV9maWxlKGluaXBhdGhfKSBvciB7fQorICAgICAgICBpZiByb290ZGly
X2NtZF9hcmcgaXMgTm9uZToKKyAgICAgICAgICAgIHJvb3RkaXIgPSBnZXRfY29tbW9uX2FuY2Vz
dG9yKGRpcnMpCiAgICAgZWxzZToKICAgICAgICAgYW5jZXN0b3IgPSBnZXRfY29tbW9uX2FuY2Vz
dG9yKGRpcnMpCi0gICAgICAgIHJvb3RkaXIsIGluaWZpbGUsIGluaWNmZyA9IGdldGNmZyhbYW5j
ZXN0b3JdLCB3YXJuZnVuYz13YXJuZnVuYykKLSAgICAgICAgaWYgcm9vdGRpciBpcyBOb25lOgot
ICAgICAgICAgICAgZm9yIHJvb3RkaXIgaW4gYW5jZXN0b3IucGFydHMocmV2ZXJzZT1UcnVlKToK
LSAgICAgICAgICAgICAgICBpZiByb290ZGlyLmpvaW4oInNldHVwLnB5IikuZXhpc3RzKCk6Cisg
ICAgICAgIHJvb3RkaXIsIGluaXBhdGgsIGluaWNmZyA9IGxvY2F0ZV9jb25maWcoW2FuY2VzdG9y
XSkKKyAgICAgICAgaWYgcm9vdGRpciBpcyBOb25lIGFuZCByb290ZGlyX2NtZF9hcmcgaXMgTm9u
ZToKKyAgICAgICAgICAgIGZvciBwb3NzaWJsZV9yb290ZGlyIGluIChhbmNlc3RvciwgKmFuY2Vz
dG9yLnBhcmVudHMpOgorICAgICAgICAgICAgICAgIGlmIChwb3NzaWJsZV9yb290ZGlyIC8gInNl
dHVwLnB5IikuaXNfZmlsZSgpOgorICAgICAgICAgICAgICAgICAgICByb290ZGlyID0gcG9zc2li
bGVfcm9vdGRpcgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByb290ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBnZXRjZmcoZGlycywg
d2FybmZ1bmM9d2FybmZ1bmMpCisgICAgICAgICAgICAgICAgaWYgZGlycyAhPSBbYW5jZXN0b3Jd
OgorICAgICAgICAgICAgICAgICAgICByb290ZGlyLCBpbmlwYXRoLCBpbmljZmcgPSBsb2NhdGVf
Y29uZmlnKGRpcnMpCiAgICAgICAgICAgICAgICAgaWYgcm9vdGRpciBpcyBOb25lOgotICAgICAg
ICAgICAgICAgICAgICByb290ZGlyID0gZ2V0X2NvbW1vbl9hbmNlc3RvcihbcHkucGF0aC5sb2Nh
bCgpLCBhbmNlc3Rvcl0pCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbmZpZyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN3ZCA9IGNvbmZpZy5pbnZvY2F0aW9uX3BhcmFt
cy5kaXIKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IGN3ZCA9IFBhdGguY3dkKCkKKyAgICAgICAgICAgICAgICAgICAgcm9vdGRpciA9IGdldF9jb21t
b25fYW5jZXN0b3IoW2N3ZCwgYW5jZXN0b3JdKQogICAgICAgICAgICAgICAgICAgICBpc19mc19y
b290ID0gb3MucGF0aC5zcGxpdGRyaXZlKHN0cihyb290ZGlyKSlbMV0gPT0gIi8iCiAgICAgICAg
ICAgICAgICAgICAgIGlmIGlzX2ZzX3Jvb3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICByb290
ZGlyID0gYW5jZXN0b3IKICAgICBpZiByb290ZGlyX2NtZF9hcmc6Ci0gICAgICAgIHJvb3RkaXJf
YWJzX3BhdGggPSBweS5wYXRoLmxvY2FsKG9zLnBhdGguZXhwYW5kdmFycyhyb290ZGlyX2NtZF9h
cmcpKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihzdHIocm9vdGRpcl9hYnNfcGF0aCkp
OgorICAgICAgICByb290ZGlyID0gYWJzb2x1dGVwYXRoKG9zLnBhdGguZXhwYW5kdmFycyhyb290
ZGlyX2NtZF9hcmcpKQorICAgICAgICBpZiBub3Qgcm9vdGRpci5pc19kaXIoKToKICAgICAgICAg
ICAgIHJhaXNlIFVzYWdlRXJyb3IoCiAgICAgICAgICAgICAgICAgIkRpcmVjdG9yeSAne30nIG5v
dCBmb3VuZC4gQ2hlY2sgeW91ciAnLS1yb290ZGlyJyBvcHRpb24uIi5mb3JtYXQoCi0gICAgICAg
ICAgICAgICAgICAgIHJvb3RkaXJfYWJzX3BhdGgKKyAgICAgICAgICAgICAgICAgICAgcm9vdGRp
cgogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKLSAgICAgICAgcm9vdGRpciA9IHJv
b3RkaXJfYWJzX3BhdGgKLSAgICByZXR1cm4gcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnIG9yIHt9
CisgICAgYXNzZXJ0IHJvb3RkaXIgaXMgbm90IE5vbmUKKyAgICByZXR1cm4gcm9vdGRpciwgaW5p
cGF0aCwgaW5pY2ZnIG9yIHt9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9j
b25maWcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYmUxMWRhNTI3OS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L2NvbmZpZy9hcmdwYXJzaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmln
L2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvZmluZHBhdGhz
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kZWJ1Z2dpbmcucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kZWJ1Z2dpbmcucHkKaW5kZXggMmUyNTNhYWEyYWYzLi42
ZjY0MWZiMmQ5NjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2RlYnVnZ2lu
Zy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kZWJ1Z2dpbmcucHkKQEAgLTEsMTkg
KzEsNDcgQEAKLSIiIiBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcgd2l0aCBQREIsIHRoZSBQeXRob24g
RGVidWdnZXIuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHBkYgorIiIiSW50ZXJhY3RpdmUgZGVidWdn
aW5nIHdpdGggUERCLCB0aGUgUHl0aG9uIERlYnVnZ2VyLiIiIgoraW1wb3J0IGFyZ3BhcnNlCitp
bXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWZyb20gZG9jdGVzdCBpbXBv
cnQgVW5leHBlY3RlZEV4Y2VwdGlvbgotCi10cnk6Ci0gICAgZnJvbSBidWlsdGlucyBpbXBvcnQg
YnJlYWtwb2ludCAgIyBub3FhCi0KLSAgICBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4gPSBU
cnVlCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElO
ID0gRmFsc2UKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgoraW1wb3J0IHR5cGVz
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9t
IHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0
eXBpbmcgaW1wb3J0IFVuaW9uCisKK2Zyb20gX3B5dGVzdCBpbXBvcnQgb3V0Y29tZXMKK2Zyb20g
X3B5dGVzdC5fY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0ZXN0LmNvbXBhdCBp
bXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25mdGVzdEltcG9ydEZhaWx1cmUKK2Zyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBQ
eXRlc3RQbHVnaW5NYW5hZ2VyCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0
IFBhcnNlcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5leGNlcHRpb25zIGltcG9ydCBVc2FnZUVycm9y
Citmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IE5vZGUKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGlt
cG9ydCBCYXNlUmVwb3J0CisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1w
b3J0IFR5cGUKKworICAgIGZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBDYXB0dXJlTWFuYWdl
cgorICAgIGZyb20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0IENhbGxJbmZvCisKKworZGVmIF92YWxp
ZGF0ZV91c2VwZGJfY2xzKHZhbHVlOiBzdHIpIC0+IFR1cGxlW3N0ciwgc3RyXToKKyAgICAiIiJW
YWxpZGF0ZSBzeW50YXggb2YgLS1wZGJjbHMgb3B0aW9uLiIiIgorICAgIHRyeToKKyAgICAgICAg
bW9kbmFtZSwgY2xhc3NuYW1lID0gdmFsdWUuc3BsaXQoIjoiKQorICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKAorICAg
ICAgICAgICAgInshcn0gaXMgbm90IGluIHRoZSBmb3JtYXQgJ21vZG5hbWU6Y2xhc3NuYW1lJyIu
Zm9ybWF0KHZhbHVlKQorICAgICAgICApIGZyb20gZQorICAgIHJldHVybiAobW9kbmFtZSwgY2xh
c3NuYW1lKQorCisKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25l
OgogICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKICAgICBncm91cC5fYWRk
b3B0aW9uKAogICAgICAgICAiLS1wZGIiLApAQCAtMjUsODYgKzUzLDI4OSBAQCBkZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICAiLS1wZGJjbHMiLAogICAgICAgICBkZXN0PSJ1
c2VwZGJfY2xzIiwKICAgICAgICAgbWV0YXZhcj0ibW9kdWxlbmFtZTpjbGFzc25hbWUiLAorICAg
ICAgICB0eXBlPV92YWxpZGF0ZV91c2VwZGJfY2xzLAogICAgICAgICBoZWxwPSJzdGFydCBhIGN1
c3RvbSBpbnRlcmFjdGl2ZSBQeXRob24gZGVidWdnZXIgb24gZXJyb3JzLiAiCiAgICAgICAgICJG
b3IgZXhhbXBsZTogLS1wZGJjbHM9SVB5dGhvbi50ZXJtaW5hbC5kZWJ1Z2dlcjpUZXJtaW5hbFBk
YiIsCiAgICAgKQorICAgIGdyb3VwLl9hZGRvcHRpb24oCisgICAgICAgICItLXRyYWNlIiwKKyAg
ICAgICAgZGVzdD0idHJhY2UiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAg
ICBoZWxwPSJJbW1lZGlhdGVseSBicmVhayB3aGVuIHJ1bm5pbmcgZWFjaCB0ZXN0LiIsCisgICAg
KQogCiAKLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLmdldHZh
bHVlKCJ1c2VwZGJfY2xzIik6Ci0gICAgICAgIG1vZG5hbWUsIGNsYXNzbmFtZSA9IGNvbmZpZy5n
ZXR2YWx1ZSgidXNlcGRiX2NscyIpLnNwbGl0KCI6IikKLSAgICAgICAgX19pbXBvcnRfXyhtb2Ru
YW1lKQotICAgICAgICBwZGJfY2xzID0gZ2V0YXR0cihzeXMubW9kdWxlc1ttb2RuYW1lXSwgY2xh
c3NuYW1lKQotICAgIGVsc2U6Ci0gICAgICAgIHBkYl9jbHMgPSBwZGIuUGRiCitkZWYgcHl0ZXN0
X2NvbmZpZ3VyZShjb25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBpbXBvcnQgcGRiCiAKKyAg
ICBpZiBjb25maWcuZ2V0dmFsdWUoInRyYWNlIik6CisgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5h
Z2VyLnJlZ2lzdGVyKFBkYlRyYWNlKCksICJwZGJ0cmFjZSIpCiAgICAgaWYgY29uZmlnLmdldHZh
bHVlKCJ1c2VwZGIiKToKICAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoUGRi
SW52b2tlKCksICJwZGJpbnZva2UiKQogCi0gICAgIyBVc2UgY3VzdG9tIFBkYiBjbGFzcyBzZXRf
dHJhY2UgaW5zdGVhZCBvZiBkZWZhdWx0IFBkYiBvbiBicmVha3BvaW50KCkgY2FsbAotICAgIGlm
IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTjoKLSAgICAgICAgX2Vudmlyb25fcHl0aG9uYnJl
YWtwb2ludCA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05CUkVBS1BPSU5UIiwgIiIpCi0gICAgICAg
IGlmIF9lbnZpcm9uX3B5dGhvbmJyZWFrcG9pbnQgPT0gIiI6Ci0gICAgICAgICAgICBzeXMuYnJl
YWtwb2ludGhvb2sgPSBweXRlc3RQREIuc2V0X3RyYWNlCi0KLSAgICBvbGQgPSAocGRiLnNldF90
cmFjZSwgcHl0ZXN0UERCLl9wbHVnaW5tYW5hZ2VyKQotCi0gICAgZGVmIGZpbigpOgotICAgICAg
ICBwZGIuc2V0X3RyYWNlLCBweXRlc3RQREIuX3BsdWdpbm1hbmFnZXIgPSBvbGQKLSAgICAgICAg
cHl0ZXN0UERCLl9jb25maWcgPSBOb25lCi0gICAgICAgIHB5dGVzdFBEQi5fcGRiX2NscyA9IHBk
Yi5QZGIKLSAgICAgICAgaWYgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOOgotICAgICAgICAg
ICAgc3lzLmJyZWFrcG9pbnRob29rID0gc3lzLl9fYnJlYWtwb2ludGhvb2tfXwotCisgICAgcHl0
ZXN0UERCLl9zYXZlZC5hcHBlbmQoCisgICAgICAgIChwZGIuc2V0X3RyYWNlLCBweXRlc3RQREIu
X3BsdWdpbm1hbmFnZXIsIHB5dGVzdFBEQi5fY29uZmlnKQorICAgICkKICAgICBwZGIuc2V0X3Ry
YWNlID0gcHl0ZXN0UERCLnNldF90cmFjZQogICAgIHB5dGVzdFBEQi5fcGx1Z2lubWFuYWdlciA9
IGNvbmZpZy5wbHVnaW5tYW5hZ2VyCiAgICAgcHl0ZXN0UERCLl9jb25maWcgPSBjb25maWcKLSAg
ICBweXRlc3RQREIuX3BkYl9jbHMgPSBwZGJfY2xzCisKKyAgICAjIE5PVEU6IG5vdCB1c2luZyBw
eXRlc3RfdW5jb25maWd1cmUsIHNpbmNlIGl0IG1pZ2h0IGdldCBjYWxsZWQgYWx0aG91Z2gKKyAg
ICAjICAgICAgIHB5dGVzdF9jb25maWd1cmUgd2FzIG5vdCAoaWYgYW5vdGhlciBwbHVnaW4gcmFp
c2VzIFVzYWdlRXJyb3IpLgorICAgIGRlZiBmaW4oKSAtPiBOb25lOgorICAgICAgICAoCisgICAg
ICAgICAgICBwZGIuc2V0X3RyYWNlLAorICAgICAgICAgICAgcHl0ZXN0UERCLl9wbHVnaW5tYW5h
Z2VyLAorICAgICAgICAgICAgcHl0ZXN0UERCLl9jb25maWcsCisgICAgICAgICkgPSBweXRlc3RQ
REIuX3NhdmVkLnBvcCgpCisKICAgICBjb25maWcuX2NsZWFudXAuYXBwZW5kKGZpbikKIAogCi1j
bGFzcyBweXRlc3RQREIob2JqZWN0KToKLSAgICAiIiIgUHNldWRvIFBEQiB0aGF0IGRlZmVycyB0
byB0aGUgcmVhbCBwZGIuICIiIgotICAgIF9wbHVnaW5tYW5hZ2VyID0gTm9uZQotICAgIF9jb25m
aWcgPSBOb25lCi0gICAgX3BkYl9jbHMgPSBwZGIuUGRiCitjbGFzcyBweXRlc3RQREI6CisgICAg
IiIiUHNldWRvIFBEQiB0aGF0IGRlZmVycyB0byB0aGUgcmVhbCBwZGIuIiIiCisKKyAgICBfcGx1
Z2lubWFuYWdlciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbUHl0ZXN0UGx1Z2luTWFuYWdlcl0K
KyAgICBfY29uZmlnID0gTm9uZSAgIyB0eXBlOiBDb25maWcKKyAgICBfc2F2ZWQgPSAoCisgICAg
ICAgIFtdCisgICAgKSAgIyB0eXBlOiBMaXN0W1R1cGxlW0NhbGxhYmxlWy4uLiwgTm9uZV0sIE9w
dGlvbmFsW1B5dGVzdFBsdWdpbk1hbmFnZXJdLCBDb25maWddXQorICAgIF9yZWN1cnNpdmVfZGVi
dWcgPSAwCisgICAgX3dyYXBwZWRfcGRiX2NscyA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbVHVw
bGVbVHlwZVtBbnldLCBUeXBlW0FueV1dXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9p
c19jYXB0dXJpbmcoY2xzLCBjYXBtYW46IE9wdGlvbmFsWyJDYXB0dXJlTWFuYWdlciJdKSAtPiBV
bmlvbltzdHIsIGJvb2xdOgorICAgICAgICBpZiBjYXBtYW46CisgICAgICAgICAgICByZXR1cm4g
Y2FwbWFuLmlzX2NhcHR1cmluZygpCisgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIHNldF90cmFjZShjbHMpOgotICAgICAgICAiIiIgaW52b2tlIFBEQiBz
ZXRfdHJhY2UgZGVidWdnaW5nLCBkcm9wcGluZyBhbnkgSU8gY2FwdHVyaW5nLiAiIiIKKyAgICBk
ZWYgX2ltcG9ydF9wZGJfY2xzKGNscywgY2FwbWFuOiBPcHRpb25hbFsiQ2FwdHVyZU1hbmFnZXIi
XSk6CisgICAgICAgIGlmIG5vdCBjbHMuX2NvbmZpZzoKKyAgICAgICAgICAgIGltcG9ydCBwZGIK
KworICAgICAgICAgICAgIyBIYXBwZW5zIHdoZW4gdXNpbmcgcHl0ZXN0LnNldF90cmFjZSBvdXRz
aWRlIG9mIGEgdGVzdC4KKyAgICAgICAgICAgIHJldHVybiBwZGIuUGRiCisKKyAgICAgICAgdXNl
cGRiX2NscyA9IGNscy5fY29uZmlnLmdldHZhbHVlKCJ1c2VwZGJfY2xzIikKKworICAgICAgICBp
ZiBjbHMuX3dyYXBwZWRfcGRiX2NscyBhbmQgY2xzLl93cmFwcGVkX3BkYl9jbHNbMF0gPT0gdXNl
cGRiX2NsczoKKyAgICAgICAgICAgIHJldHVybiBjbHMuX3dyYXBwZWRfcGRiX2Nsc1sxXQorCisg
ICAgICAgIGlmIHVzZXBkYl9jbHM6CisgICAgICAgICAgICBtb2RuYW1lLCBjbGFzc25hbWUgPSB1
c2VwZGJfY2xzCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfX2ltcG9ydF9f
KG1vZG5hbWUpCisgICAgICAgICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KKwor
ICAgICAgICAgICAgICAgICMgSGFuZGxlIC0tcGRiY2xzPXBkYjpwZGIuUGRiICh1c2VmdWwgZS5n
LiB3aXRoIHBkYnBwKS4KKyAgICAgICAgICAgICAgICBwYXJ0cyA9IGNsYXNzbmFtZS5zcGxpdCgi
LiIpCisgICAgICAgICAgICAgICAgcGRiX2NscyA9IGdldGF0dHIobW9kLCBwYXJ0c1swXSkKKyAg
ICAgICAgICAgICAgICBmb3IgcGFydCBpbiBwYXJ0c1sxOl06CisgICAgICAgICAgICAgICAgICAg
IHBkYl9jbHMgPSBnZXRhdHRyKHBkYl9jbHMsIHBhcnQpCisgICAgICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgICAgICB2YWx1ZSA9ICI6Ii5qb2luKChtb2RuYW1l
LCBjbGFzc25hbWUpKQorICAgICAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoCisgICAgICAg
ICAgICAgICAgICAgICItLXBkYmNsczogY291bGQgbm90IGltcG9ydCB7IXJ9OiB7fSIuZm9ybWF0
KHZhbHVlLCBleGMpCisgICAgICAgICAgICAgICAgKSBmcm9tIGV4YworICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgaW1wb3J0IHBkYgorCisgICAgICAgICAgICBwZGJfY2xzID0gcGRiLlBkYgor
CisgICAgICAgIHdyYXBwZWRfY2xzID0gY2xzLl9nZXRfcGRiX3dyYXBwZXJfY2xhc3MocGRiX2Ns
cywgY2FwbWFuKQorICAgICAgICBjbHMuX3dyYXBwZWRfcGRiX2NscyA9ICh1c2VwZGJfY2xzLCB3
cmFwcGVkX2NscykKKyAgICAgICAgcmV0dXJuIHdyYXBwZWRfY2xzCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgX2dldF9wZGJfd3JhcHBlcl9jbGFzcyhjbHMsIHBkYl9jbHMsIGNhcG1hbjog
T3B0aW9uYWxbIkNhcHR1cmVNYW5hZ2VyIl0pOgogICAgICAgICBpbXBvcnQgX3B5dGVzdC5jb25m
aWcKIAotICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKLSAgICAgICAgaWYg
Y2xzLl9wbHVnaW5tYW5hZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAjIFR5cGUgaWdub3JlZCBi
ZWNhdXNlIG15cHkgZG9lc24ndCBzdXBwb3J0ICJkeW5hbWljIgorICAgICAgICAjIGluaGVyaXRh
bmNlIGxpa2UgdGhpcy4KKyAgICAgICAgY2xhc3MgUHl0ZXN0UGRiV3JhcHBlcihwZGJfY2xzKTog
ICMgdHlwZTogaWdub3JlW3ZhbGlkLXR5cGUsbWlzY10KKyAgICAgICAgICAgIF9weXRlc3RfY2Fw
bWFuID0gY2FwbWFuCisgICAgICAgICAgICBfY29udGludWVkID0gRmFsc2UKKworICAgICAgICAg
ICAgZGVmIGRvX2RlYnVnKHNlbGYsIGFyZyk6CisgICAgICAgICAgICAgICAgY2xzLl9yZWN1cnNp
dmVfZGVidWcgKz0gMQorICAgICAgICAgICAgICAgIHJldCA9IHN1cGVyKCkuZG9fZGVidWcoYXJn
KQorICAgICAgICAgICAgICAgIGNscy5fcmVjdXJzaXZlX2RlYnVnIC09IDEKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0CisKKyAgICAgICAgICAgIGRlZiBkb19jb250aW51ZShzZWxmLCBhcmcp
OgorICAgICAgICAgICAgICAgIHJldCA9IHN1cGVyKCkuZG9fY29udGludWUoYXJnKQorICAgICAg
ICAgICAgICAgIGlmIGNscy5fcmVjdXJzaXZlX2RlYnVnID09IDA6CisgICAgICAgICAgICAgICAg
ICAgIHR3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcihjbHMuX2NvbmZp
ZykKKyAgICAgICAgICAgICAgICAgICAgdHcubGluZSgpCisKKyAgICAgICAgICAgICAgICAgICAg
Y2FwbWFuID0gc2VsZi5fcHl0ZXN0X2NhcG1hbgorICAgICAgICAgICAgICAgICAgICBjYXB0dXJp
bmcgPSBweXRlc3RQREIuX2lzX2NhcHR1cmluZyhjYXBtYW4pCisgICAgICAgICAgICAgICAgICAg
IGlmIGNhcHR1cmluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNhcHR1cmluZyA9PSAi
Z2xvYmFsIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dy5zZXAoIj4iLCAiUERCIGNv
bnRpbnVlIChJTy1jYXB0dXJpbmcgcmVzdW1lZCkiKQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dy5zZXAoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlBEQiBjb250aW51ZSAoSU8tY2FwdHVyaW5nIHJlc3VtZWQgZm9yICVzKSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJSBjYXB0dXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGNhcG1hbiBpcyBub3QgTm9u
ZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FwbWFuLnJlc3VtZSgpCisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0dy5zZXAoIj4iLCAiUERCIGNv
bnRpbnVlIikKKyAgICAgICAgICAgICAgICBhc3NlcnQgY2xzLl9wbHVnaW5tYW5hZ2VyIGlzIG5v
dCBOb25lCisgICAgICAgICAgICAgICAgY2xzLl9wbHVnaW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2xl
YXZlX3BkYihjb25maWc9Y2xzLl9jb25maWcsIHBkYj1zZWxmKQorICAgICAgICAgICAgICAgIHNl
bGYuX2NvbnRpbnVlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0CisKKyAgICAg
ICAgICAgIGRvX2MgPSBkb19jb250ID0gZG9fY29udGludWUKKworICAgICAgICAgICAgZGVmIGRv
X3F1aXQoc2VsZiwgYXJnKToKKyAgICAgICAgICAgICAgICAiIiJSYWlzZSBFeGl0IG91dGNvbWUg
d2hlbiBxdWl0IGNvbW1hbmQgaXMgdXNlZCBpbiBwZGIuCisKKyAgICAgICAgICAgICAgICBUaGlz
IGlzIGEgYml0IG9mIGEgaGFjayAtIGl0IHdvdWxkIGJlIGJldHRlciBpZiBCZGJRdWl0CisgICAg
ICAgICAgICAgICAgY291bGQgYmUgaGFuZGxlZCwgYnV0IHRoaXMgd291bGQgcmVxdWlyZSB0byB3
cmFwIHRoZQorICAgICAgICAgICAgICAgIHdob2xlIHB5dGVzdCBydW4sIGFuZCBhZGp1c3QgdGhl
IHJlcG9ydCBldGMuCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgcmV0ID0g
c3VwZXIoKS5kb19xdWl0KGFyZykKKworICAgICAgICAgICAgICAgIGlmIGNscy5fcmVjdXJzaXZl
X2RlYnVnID09IDA6CisgICAgICAgICAgICAgICAgICAgIG91dGNvbWVzLmV4aXQoIlF1aXR0aW5n
IGRlYnVnZ2VyIikKKworICAgICAgICAgICAgICAgIHJldHVybiByZXQKKworICAgICAgICAgICAg
ZG9fcSA9IGRvX3F1aXQKKyAgICAgICAgICAgIGRvX2V4aXQgPSBkb19xdWl0CisKKyAgICAgICAg
ICAgIGRlZiBzZXR1cChzZWxmLCBmLCB0Yik6CisgICAgICAgICAgICAgICAgIiIiU3VzcGVuZCBv
biBzZXR1cCgpLgorCisgICAgICAgICAgICAgICAgTmVlZGVkIGFmdGVyIGRvX2NvbnRpbnVlIHJl
c3VtZWQsIGFuZCBlbnRlcmluZyBhbm90aGVyCisgICAgICAgICAgICAgICAgYnJlYWtwb2ludCBh
Z2Fpbi4KKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICByZXQgPSBzdXBlcigp
LnNldHVwKGYsIHRiKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXQgYW5kIHNlbGYuX2NvbnRp
bnVlZDoKKyAgICAgICAgICAgICAgICAgICAgIyBwZGIuc2V0dXAoKSByZXR1cm5zIFRydWUgaWYg
dGhlIGNvbW1hbmQgd2FudHMgdG8gZXhpdAorICAgICAgICAgICAgICAgICAgICAjIGZyb20gdGhl
IGludGVyYWN0aW9uOiBkbyBub3Qgc3VzcGVuZCBjYXB0dXJpbmcgdGhlbi4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgc2VsZi5fcHl0ZXN0X2NhcG1hbjoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3B5dGVzdF9jYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmV0CisKKyAgICAgICAgICAgIGRlZiBnZXRfc3RhY2soc2Vs
ZiwgZiwgdCk6CisgICAgICAgICAgICAgICAgc3RhY2ssIGkgPSBzdXBlcigpLmdldF9zdGFjayhm
LCB0KQorICAgICAgICAgICAgICAgIGlmIGYgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
IyBGaW5kIGxhc3Qgbm9uLWhpZGRlbiBmcmFtZS4KKyAgICAgICAgICAgICAgICAgICAgaSA9IG1h
eCgwLCBsZW4oc3RhY2spIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgaSBhbmQgc3Rh
Y2tbaV1bMF0uZl9sb2NhbHMuZ2V0KCJfX3RyYWNlYmFja2hpZGVfXyIsIEZhbHNlKToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGkgLT0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzdGFjaywg
aQorCisgICAgICAgIHJldHVybiBQeXRlc3RQZGJXcmFwcGVyCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgX2luaXRfcGRiKGNscywgbWV0aG9kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg
ICAiIiJJbml0aWFsaXplIFBEQiBkZWJ1Z2dpbmcsIGRyb3BwaW5nIGFueSBJTyBjYXB0dXJpbmcu
IiIiCisgICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZworCisgICAgICAgIGlmIGNscy5fcGx1
Z2lubWFuYWdlciBpcyBOb25lOgorICAgICAgICAgICAgY2FwbWFuID0gTm9uZSAgIyB0eXBlOiBP
cHRpb25hbFtDYXB0dXJlTWFuYWdlcl0KKyAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNhcG1h
biA9IGNscy5fcGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oImNhcHR1cmVtYW5hZ2VyIikKLSAgICAg
ICAgICAgIGlmIGNhcG1hbjoKLSAgICAgICAgICAgICAgICBjYXBtYW4uc3VzcGVuZF9nbG9iYWxf
Y2FwdHVyZShpbl89VHJ1ZSkKKyAgICAgICAgaWYgY2FwbWFuOgorICAgICAgICAgICAgY2FwbWFu
LnN1c3BlbmQoaW5fPVRydWUpCisKKyAgICAgICAgaWYgY2xzLl9jb25maWc6CiAgICAgICAgICAg
ICB0dyA9IF9weXRlc3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5hbF93cml0ZXIoY2xzLl9jb25maWcp
CiAgICAgICAgICAgICB0dy5saW5lKCkKLSAgICAgICAgICAgIHR3LnNlcCgiPiIsICJQREIgc2V0
X3RyYWNlIChJTy1jYXB0dXJpbmcgdHVybmVkIG9mZikiKQotICAgICAgICAgICAgY2xzLl9wbHVn
aW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2VudGVyX3BkYihjb25maWc9Y2xzLl9jb25maWcpCi0gICAg
ICAgIGNscy5fcGRiX2NscygpLnNldF90cmFjZShmcmFtZSkKIAorICAgICAgICAgICAgaWYgY2xz
Ll9yZWN1cnNpdmVfZGVidWcgPT0gMDoKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBoZWFkZXIg
c2ltaWxhciB0byBwZGIuc2V0X3RyYWNlIGluIHB5MzcrLgorICAgICAgICAgICAgICAgIGhlYWRl
ciA9IGt3YXJncy5wb3AoImhlYWRlciIsIE5vbmUpCisgICAgICAgICAgICAgICAgaWYgaGVhZGVy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0dy5zZXAoIj4iLCBoZWFkZXIpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyaW5nID0gY2xz
Ll9pc19jYXB0dXJpbmcoY2FwbWFuKQorICAgICAgICAgICAgICAgICAgICBpZiBjYXB0dXJpbmcg
PT0gImdsb2JhbCI6CisgICAgICAgICAgICAgICAgICAgICAgICB0dy5zZXAoIj4iLCAiUERCIHt9
IChJTy1jYXB0dXJpbmcgdHVybmVkIG9mZikiLmZvcm1hdChtZXRob2QpKQorICAgICAgICAgICAg
ICAgICAgICBlbGlmIGNhcHR1cmluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR3LnNlcCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlBEQiAlcyAoSU8tY2FwdHVyaW5nIHR1cm5lZCBvZmYgZm9yICVzKSIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAlIChtZXRob2QsIGNhcHR1cmluZyksCisgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICAgICB0dy5zZXAoIj4iLCAiUERCIHt9Ii5mb3JtYXQobWV0aG9kKSkKKworICAgICAgICBf
cGRiID0gY2xzLl9pbXBvcnRfcGRiX2NscyhjYXBtYW4pKCoqa3dhcmdzKQorCisgICAgICAgIGlm
IGNscy5fcGx1Z2lubWFuYWdlcjoKKyAgICAgICAgICAgIGNscy5fcGx1Z2lubWFuYWdlci5ob29r
LnB5dGVzdF9lbnRlcl9wZGIoY29uZmlnPWNscy5fY29uZmlnLCBwZGI9X3BkYikKKyAgICAgICAg
cmV0dXJuIF9wZGIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRfdHJhY2UoY2xzLCAq
YXJncywgKiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgICIiIkludm9rZSBkZWJ1Z2dpbmcgdmlh
IGBgUGRiLnNldF90cmFjZWBgLCBkcm9wcGluZyBhbnkgSU8gY2FwdHVyaW5nLiIiIgorICAgICAg
ICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKKyAgICAgICAgX3BkYiA9IGNscy5faW5p
dF9wZGIoInNldF90cmFjZSIsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgX3BkYi5zZXRfdHJh
Y2UoZnJhbWUpCiAKLWNsYXNzIFBkYkludm9rZShvYmplY3QpOgogCi0gICAgZGVmIHB5dGVzdF9l
eGNlcHRpb25faW50ZXJhY3Qoc2VsZiwgbm9kZSwgY2FsbCwgcmVwb3J0KToKK2NsYXNzIFBkYklu
dm9rZToKKyAgICBkZWYgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdCgKKyAgICAgICAgc2VsZiwg
bm9kZTogTm9kZSwgY2FsbDogIkNhbGxJbmZvW0FueV0iLCByZXBvcnQ6IEJhc2VSZXBvcnQKKyAg
ICApIC0+IE5vbmU6CiAgICAgICAgIGNhcG1hbiA9IG5vZGUuY29uZmlnLnBsdWdpbm1hbmFnZXIu
Z2V0cGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCiAgICAgICAgIGlmIGNhcG1hbjoKLSAgICAgICAg
ICAgIG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaW5fPVRydWUpCisg
ICAgICAgICAgICBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKKyAgICAg
ICAgICAgIG91dCwgZXJyID0gY2FwbWFuLnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQogICAgICAgICAg
ICAgc3lzLnN0ZG91dC53cml0ZShvdXQpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGVy
cikKKyAgICAgICAgYXNzZXJ0IGNhbGwuZXhjaW5mbyBpcyBub3QgTm9uZQogICAgICAgICBfZW50
ZXJfcGRiKG5vZGUsIGNhbGwuZXhjaW5mbywgcmVwb3J0KQogCi0gICAgZGVmIHB5dGVzdF9pbnRl
cm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIsIGV4Y2luZm8pOgotICAgICAgICBmb3IgbGluZSBpbiBz
dHIoZXhjcmVwcikuc3BsaXQoIlxuIik6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJJ
TlRFUk5BTEVSUk9SPiAlc1xuIiAlIGxpbmUpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNo
KCkKKyAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjaW5mbzogRXhjZXB0aW9u
SW5mb1tCYXNlRXhjZXB0aW9uXSkgLT4gTm9uZToKICAgICAgICAgdGIgPSBfcG9zdG1vcnRlbV90
cmFjZWJhY2soZXhjaW5mbykKICAgICAgICAgcG9zdF9tb3J0ZW0odGIpCiAKIAotZGVmIF9lbnRl
cl9wZGIobm9kZSwgZXhjaW5mbywgcmVwKToKK2NsYXNzIFBkYlRyYWNlOgorICAgIEBob29raW1w
bChob29rd3JhcHBlcj1UcnVlKQorICAgIGRlZiBweXRlc3RfcHlmdW5jX2NhbGwoc2VsZiwgcHlm
dW5jaXRlbSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICB3cmFwX3B5
dGVzdF9mdW5jdGlvbl9mb3JfdHJhY2luZyhweWZ1bmNpdGVtKQorICAgICAgICB5aWVsZAorCisK
K2RlZiB3cmFwX3B5dGVzdF9mdW5jdGlvbl9mb3JfdHJhY2luZyhweWZ1bmNpdGVtKToKKyAgICAi
IiJDaGFuZ2UgdGhlIFB5dGhvbiBmdW5jdGlvbiBvYmplY3Qgb2YgdGhlIGdpdmVuIEZ1bmN0aW9u
IGl0ZW0gYnkgYQorICAgIHdyYXBwZXIgd2hpY2ggYWN0dWFsbHkgZW50ZXJzIHBkYiBiZWZvcmUg
Y2FsbGluZyB0aGUgcHl0aG9uIGZ1bmN0aW9uCisgICAgaXRzZWxmLCBlZmZlY3RpdmVseSBsZWF2
aW5nIHRoZSB1c2VyIGluIHRoZSBwZGIgcHJvbXB0IGluIHRoZSBmaXJzdAorICAgIHN0YXRlbWVu
dCBvZiB0aGUgZnVuY3Rpb24uIiIiCisgICAgX3BkYiA9IHB5dGVzdFBEQi5faW5pdF9wZGIoInJ1
bmNhbGwiKQorICAgIHRlc3RmdW5jdGlvbiA9IHB5ZnVuY2l0ZW0ub2JqCisKKyAgICAjIHdlIGNh
bid0IGp1c3QgcmV0dXJuIGBwYXJ0aWFsKHBkYi5ydW5jYWxsLCB0ZXN0ZnVuY3Rpb24pYCBiZWNh
dXNlIChvbgorICAgICMgcHl0aG9uIDwgMy43LjQpIHJ1bmNhbGwncyBmaXJzdCBwYXJhbSBpcyBg
ZnVuY2AsIHdoaWNoIG1lYW5zIHdlJ2QgZ2V0CisgICAgIyBhbiBleGNlcHRpb24gaWYgb25lIG9m
IHRoZSBrd2FyZ3MgdG8gdGVzdGZ1bmN0aW9uIHdhcyBjYWxsZWQgYGZ1bmNgLgorICAgIEBmdW5j
dG9vbHMud3JhcHModGVzdGZ1bmN0aW9uKQorICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJn
cyk6CisgICAgICAgIGZ1bmMgPSBmdW5jdG9vbHMucGFydGlhbCh0ZXN0ZnVuY3Rpb24sICphcmdz
LCAqKmt3YXJncykKKyAgICAgICAgX3BkYi5ydW5jYWxsKGZ1bmMpCisKKyAgICBweWZ1bmNpdGVt
Lm9iaiA9IHdyYXBwZXIKKworCitkZWYgbWF5YmVfd3JhcF9weXRlc3RfZnVuY3Rpb25fZm9yX3Ry
YWNpbmcocHlmdW5jaXRlbSk6CisgICAgIiIiV3JhcCB0aGUgZ2l2ZW4gcHl0ZXN0ZnVuY3QgaXRl
bSBmb3IgdHJhY2luZyBzdXBwb3J0IGlmIC0tdHJhY2Ugd2FzIGdpdmVuIGluCisgICAgdGhlIGNv
bW1hbmQgbGluZS4iIiIKKyAgICBpZiBweWZ1bmNpdGVtLmNvbmZpZy5nZXR2YWx1ZSgidHJhY2Ui
KToKKyAgICAgICAgd3JhcF9weXRlc3RfZnVuY3Rpb25fZm9yX3RyYWNpbmcocHlmdW5jaXRlbSkK
KworCitkZWYgX2VudGVyX3BkYigKKyAgICBub2RlOiBOb2RlLCBleGNpbmZvOiBFeGNlcHRpb25J
bmZvW0Jhc2VFeGNlcHRpb25dLCByZXA6IEJhc2VSZXBvcnQKKykgLT4gQmFzZVJlcG9ydDoKICAg
ICAjIFhYWCB3ZSByZS11c2UgdGhlIFRlcm1pbmFsUmVwb3J0ZXIncyB0ZXJtaW5hbHdyaXRlcgog
ICAgICMgYmVjYXVzZSB0aGlzIHNlZW1zIHRvIGF2b2lkIHNvbWUgZW5jb2RpbmcgcmVsYXRlZCB0
cm91YmxlcwogICAgICMgZm9yIG5vdCBjb21wbGV0ZWx5IGNsZWFyIHJlYXNvbnMuCkBAIC0xMTQs
NyArMzQ1LDkgQEAgZGVmIF9lbnRlcl9wZGIobm9kZSwgZXhjaW5mbywgcmVwKToKICAgICBzaG93
Y2FwdHVyZSA9IG5vZGUuY29uZmlnLm9wdGlvbi5zaG93Y2FwdHVyZQogCiAgICAgZm9yIHNlY3Rp
b25uYW1lLCBjb250ZW50IGluICgKLSAgICAgICAgKCJzdGRvdXQiLCByZXAuY2Fwc3Rkb3V0KSwg
KCJzdGRlcnIiLCByZXAuY2Fwc3RkZXJyKSwgKCJsb2ciLCByZXAuY2FwbG9nKQorICAgICAgICAo
InN0ZG91dCIsIHJlcC5jYXBzdGRvdXQpLAorICAgICAgICAoInN0ZGVyciIsIHJlcC5jYXBzdGRl
cnIpLAorICAgICAgICAoImxvZyIsIHJlcC5jYXBsb2cpLAogICAgICk6CiAgICAgICAgIGlmIHNo
b3djYXB0dXJlIGluIChzZWN0aW9ubmFtZSwgImFsbCIpIGFuZCBjb250ZW50OgogICAgICAgICAg
ICAgdHcuc2VwKCI+IiwgImNhcHR1cmVkICIgKyBzZWN0aW9ubmFtZSkKQEAgLTEyNiwzNyArMzU5
LDMwIEBAIGRlZiBfZW50ZXJfcGRiKG5vZGUsIGV4Y2luZm8sIHJlcCk6CiAgICAgcmVwLnRvdGVy
bWluYWwodHcpCiAgICAgdHcuc2VwKCI+IiwgImVudGVyaW5nIFBEQiIpCiAgICAgdGIgPSBfcG9z
dG1vcnRlbV90cmFjZWJhY2soZXhjaW5mbykKKyAgICByZXAuX3BkYnNob3duID0gVHJ1ZSAgIyB0
eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgIHBvc3RfbW9ydGVtKHRiKQotICAgIHJlcC5f
cGRic2hvd24gPSBUcnVlCiAgICAgcmV0dXJuIHJlcAogCiAKLWRlZiBfcG9zdG1vcnRlbV90cmFj
ZWJhY2soZXhjaW5mbyk6CitkZWYgX3Bvc3Rtb3J0ZW1fdHJhY2ViYWNrKGV4Y2luZm86IEV4Y2Vw
dGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0pIC0+IHR5cGVzLlRyYWNlYmFja1R5cGU6CisgICAgZnJv
bSBkb2N0ZXN0IGltcG9ydCBVbmV4cGVjdGVkRXhjZXB0aW9uCisKICAgICBpZiBpc2luc3RhbmNl
KGV4Y2luZm8udmFsdWUsIFVuZXhwZWN0ZWRFeGNlcHRpb24pOgogICAgICAgICAjIEEgZG9jdGVz
dC5VbmV4cGVjdGVkRXhjZXB0aW9uIGlzIG5vdCB1c2VmdWwgZm9yIHBvc3RfbW9ydGVtLgogICAg
ICAgICAjIFVzZSB0aGUgdW5kZXJseWluZyBleGNlcHRpb24gaW5zdGVhZDoKICAgICAgICAgcmV0
dXJuIGV4Y2luZm8udmFsdWUuZXhjX2luZm9bMl0KKyAgICBlbGlmIGlzaW5zdGFuY2UoZXhjaW5m
by52YWx1ZSwgQ29uZnRlc3RJbXBvcnRGYWlsdXJlKToKKyAgICAgICAgIyBBIGNvbmZpZy5Db25m
dGVzdEltcG9ydEZhaWx1cmUgaXMgbm90IHVzZWZ1bCBmb3IgcG9zdF9tb3J0ZW0uCisgICAgICAg
ICMgVXNlIHRoZSB1bmRlcmx5aW5nIGV4Y2VwdGlvbiBpbnN0ZWFkOgorICAgICAgICByZXR1cm4g
ZXhjaW5mby52YWx1ZS5leGNpbmZvWzJdCiAgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IGV4Y2lu
Zm8uX2V4Y2luZm8gaXMgbm90IE5vbmUKICAgICAgICAgcmV0dXJuIGV4Y2luZm8uX2V4Y2luZm9b
Ml0KIAogCi1kZWYgX2ZpbmRfbGFzdF9ub25faGlkZGVuX2ZyYW1lKHN0YWNrKToKLSAgICBpID0g
bWF4KDAsIGxlbihzdGFjaykgLSAxKQotICAgIHdoaWxlIGkgYW5kIHN0YWNrW2ldWzBdLmZfbG9j
YWxzLmdldCgiX190cmFjZWJhY2toaWRlX18iLCBGYWxzZSk6Ci0gICAgICAgIGkgLT0gMQotICAg
IHJldHVybiBpCi0KLQotZGVmIHBvc3RfbW9ydGVtKHQpOgotCi0gICAgY2xhc3MgUGRiKHB5dGVz
dFBEQi5fcGRiX2Nscyk6Ci0KLSAgICAgICAgZGVmIGdldF9zdGFjayhzZWxmLCBmLCB0KToKLSAg
ICAgICAgICAgIHN0YWNrLCBpID0gcGRiLlBkYi5nZXRfc3RhY2soc2VsZiwgZiwgdCkKLSAgICAg
ICAgICAgIGlmIGYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpID0gX2ZpbmRfbGFzdF9ub25f
aGlkZGVuX2ZyYW1lKHN0YWNrKQotICAgICAgICAgICAgcmV0dXJuIHN0YWNrLCBpCi0KLSAgICBw
ID0gUGRiKCkKK2RlZiBwb3N0X21vcnRlbSh0OiB0eXBlcy5UcmFjZWJhY2tUeXBlKSAtPiBOb25l
OgorICAgIHAgPSBweXRlc3RQREIuX2luaXRfcGRiKCJwb3N0X21vcnRlbSIpCiAgICAgcC5yZXNl
dCgpCiAgICAgcC5pbnRlcmFjdGlvbihOb25lLCB0KQorICAgIGlmIHAucXVpdHRpbmc6CisgICAg
ICAgIG91dGNvbWVzLmV4aXQoIlF1aXR0aW5nIGRlYnVnZ2VyIikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L2RlcHJlY2F0ZWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9kZXByZWNhdGVkLnB5CmluZGV4IDdlYmRjZjk5OTcyMi4uZWNkYjYwZDM3ZjVjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kZXByZWNhdGVkLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L2RlcHJlY2F0ZWQucHkKQEAgLTEsNjUgKzEsNTIgQEAKLSIiIgotVGhp
cyBtb2R1bGUgY29udGFpbnMgZGVwcmVjYXRpb24gbWVzc2FnZXMgYW5kIGJpdHMgb2YgY29kZSB1
c2VkIGVsc2V3aGVyZSBpbiB0aGUgY29kZWJhc2UKLXRoYXQgaXMgcGxhbm5lZCB0byBiZSByZW1v
dmVkIGluIHRoZSBuZXh0IHB5dGVzdCByZWxlYXNlLgorIiIiRGVwcmVjYXRpb24gbWVzc2FnZXMg
YW5kIGJpdHMgb2YgY29kZSB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgY29kZWJhc2UgdGhhdAoraXMg
cGxhbm5lZCB0byBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHB5dGVzdCByZWxlYXNlLgogCiBLZWVw
aW5nIGl0IGluIGEgY2VudHJhbCBsb2NhdGlvbiBtYWtlcyBpdCBlYXN5IHRvIHRyYWNrIHdoYXQg
aXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkCiBiZSByZW1vdmVkIHdoZW4gdGhlIHRpbWUgY29tZXMu
Ci0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLQotCi1jbGFzcyBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZyhEZXByZWNh
dGlvbldhcm5pbmcpOgotICAgICIiIndhcm5pbmcgY2xhc3MgZm9yIGZlYXR1cmVzIHJlbW92ZWQg
aW4gcHl0ZXN0IDQuMCIiIgotCiAKLU1BSU5fU1RSX0FSR1MgPSAicGFzc2luZyBhIHN0cmluZyB0
byBweXRlc3QubWFpbigpIGlzIGRlcHJlY2F0ZWQsICIgInBhc3MgYSBsaXN0IG9mIGFyZ3VtZW50
cyBpbnN0ZWFkLiIKLQotWUlFTERfVEVTVFMgPSAieWllbGQgdGVzdHMgYXJlIGRlcHJlY2F0ZWQs
IGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QgNC4wIgotCi1GVU5DQVJHX1BS
RUZJWCA9ICgKLSAgICAne25hbWV9OiBkZWNsYXJpbmcgZml4dHVyZXMgdXNpbmcgInB5dGVzdF9m
dW5jYXJnX18iIHByZWZpeCBpcyBkZXByZWNhdGVkICcKLSAgICAiYW5kIHNjaGVkdWxlZCB0byBi
ZSByZW1vdmVkIGluIHB5dGVzdCA0LjAuICAiCi0gICAgIlBsZWFzZSByZW1vdmUgdGhlIHByZWZp
eCBhbmQgdXNlIHRoZSBAcHl0ZXN0LmZpeHR1cmUgZGVjb3JhdG9yIGluc3RlYWQuIgotKQorQWxs
IGNvbnN0YW50cyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIHNob3VsZCBiZSBlaXRoZXIgaW5zdGFu
Y2VzIG9mCis6Y2xhc3M6YFB5dGVzdFdhcm5pbmdgLCBvciA6Y2xhc3M6YFVuZm9ybWF0dGVkV2Fy
bmluZ2AKK2luIGNhc2Ugb2Ygd2FybmluZ3Mgd2hpY2ggbmVlZCB0byBmb3JtYXQgdGhlaXIgbWVz
c2FnZXMuCisiIiIKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3REZXBy
ZWNhdGlvbldhcm5pbmcKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBVbmZvcm1h
dHRlZFdhcm5pbmcKIAotQ0ZHX1BZVEVTVF9TRUNUSU9OID0gIltweXRlc3RdIHNlY3Rpb24gaW4g
e2ZpbGVuYW1lfSBmaWxlcyBpcyBkZXByZWNhdGVkLCB1c2UgW3Rvb2w6cHl0ZXN0XSBpbnN0ZWFk
LiIKKyMgc2V0IG9mIHBsdWdpbnMgd2hpY2ggaGF2ZSBiZWVuIGludGVncmF0ZWQgaW50byB0aGUg
Y29yZTsgd2UgdXNlIHRoaXMgbGlzdCB0byBpZ25vcmUKKyMgdGhlbSBkdXJpbmcgcmVnaXN0cmF0
aW9uIHRvIGF2b2lkIGNvbmZsaWN0cworREVQUkVDQVRFRF9FWFRFUk5BTF9QTFVHSU5TID0gewor
ICAgICJweXRlc3RfY2F0Y2hsb2ciLAorICAgICJweXRlc3RfY2FwdHVyZWxvZyIsCisgICAgInB5
dGVzdF9mYXVsdGhhbmRsZXIiLAorfQogCi1HRVRGVU5DQVJHVkFMVUUgPSAidXNlIG9mIGdldGZ1
bmNhcmd2YWx1ZSBpcyBkZXByZWNhdGVkLCB1c2UgZ2V0Zml4dHVyZXZhbHVlIgogCi1SRVNVTFRf
TE9HID0gKAotICAgICItLXJlc3VsdC1sb2cgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIGZv
ciByZW1vdmFsIGluIHB5dGVzdCA0LjAuXG4iCi0gICAgIlNlZSBodHRwczovL2RvY3MucHl0ZXN0
Lm9yZy9lbi9sYXRlc3QvdXNhZ2UuaHRtbCNjcmVhdGluZy1yZXN1bHRsb2ctZm9ybWF0LWZpbGVz
IGZvciBtb3JlIGluZm9ybWF0aW9uLiIKK0ZJTExGVU5DQVJHUyA9IFB5dGVzdERlcHJlY2F0aW9u
V2FybmluZygKKyAgICAiVGhlIGBfZmlsbGZ1bmNhcmdzYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVk
LCB1c2UgIgorICAgICJmdW5jdGlvbi5fcmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkgaW5zdGVhZCBp
ZiB5b3UgY2Fubm90IGF2b2lkIHJlYWNoaW5nIGludG8gaW50ZXJuYWxzLiIKICkKIAotTUFSS19J
TkZPX0FUVFJJQlVURSA9IFJlbW92ZWRJblB5dGVzdDRXYXJuaW5nKAotICAgICJNYXJrSW5mbyBv
YmplY3RzIGFyZSBkZXByZWNhdGVkIGFzIHRoZXkgY29udGFpbiBtZXJnZWQgbWFya3Mgd2hpY2gg
YXJlIGhhcmQgdG8gZGVhbCB3aXRoIGNvcnJlY3RseS5cbiIKLSAgICAiUGxlYXNlIHVzZSBub2Rl
LmdldF9jbG9zZXN0X21hcmtlcihuYW1lKSBvciBub2RlLml0ZXJfbWFya2VycyhuYW1lKS5cbiIK
LSAgICAiRG9jczogaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L21hcmsuaHRtbCN1
cGRhdGluZy1jb2RlIgorUFlURVNUX0NPTExFQ1RfTU9EVUxFID0gVW5mb3JtYXR0ZWRXYXJuaW5n
KAorICAgIFB5dGVzdERlcHJlY2F0aW9uV2FybmluZywKKyAgICAicHl0ZXN0LmNvbGxlY3Que25h
bWV9IHdhcyBtb3ZlZCB0byBweXRlc3Que25hbWV9XG4iCisgICAgIlBsZWFzZSB1cGRhdGUgdG8g
dGhlIG5ldyBuYW1lLiIsCiApCiAKLU1BUktfUEFSQU1FVEVSU0VUX1VOUEFDS0lORyA9IFJlbW92
ZWRJblB5dGVzdDRXYXJuaW5nKAotICAgICJBcHBseWluZyBtYXJrcyBkaXJlY3RseSB0byBwYXJh
bWV0ZXJzIGlzIGRlcHJlY2F0ZWQsIgotICAgICIgcGxlYXNlIHVzZSBweXRlc3QucGFyYW0oLi4u
LCBtYXJrcz0uLi4pIGluc3RlYWQuXG4iCi0gICAgIkZvciBtb3JlIGRldGFpbHMsIHNlZTogaHR0
cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3BhcmFtZXRyaXplLmh0bWwiCi0pCiAKLVJF
Q09SRF9YTUxfUFJPUEVSVFkgPSAoCi0gICAgJ0ZpeHR1cmUgcmVuYW1lZCBmcm9tICJyZWNvcmRf
eG1sX3Byb3BlcnR5IiB0byAicmVjb3JkX3Byb3BlcnR5IiBhcyB1c2VyICcKLSAgICAicHJvcGVy
dGllcyBhcmUgbm93IGF2YWlsYWJsZSB0byBhbGwgcmVwb3J0ZXJzLlxuIgotICAgICcicmVjb3Jk
X3htbF9wcm9wZXJ0eSIgaXMgbm93IGRlcHJlY2F0ZWQuJworTUlOVVNfS19EQVNIID0gUHl0ZXN0
RGVwcmVjYXRpb25XYXJuaW5nKAorICAgICJUaGUgYC1rICctZXhwcidgIHN5bnRheCB0byAtayBp
cyBkZXByZWNhdGVkLlxuVXNlIGAtayAnbm90IGV4cHInYCBpbnN0ZWFkLiIKICkKIAotQ09MTEVD
VE9SX01BS0VJVEVNID0gUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmcoCi0gICAgInB5Y29sbGVjdG9y
IG1ha2VpdGVtIHdhcyByZW1vdmVkICIgImFzIGl0IGlzIGFuIGFjY2lkZW50aWFsbHkgbGVha2Vk
IGludGVybmFsIGFwaSIKK01JTlVTX0tfQ09MT04gPSBQeXRlc3REZXByZWNhdGlvbldhcm5pbmco
CisgICAgIlRoZSBgLWsgJ2V4cHI6J2Agc3ludGF4IHRvIC1rIGlzIGRlcHJlY2F0ZWQuXG4iCisg
ICAgIlBsZWFzZSBvcGVuIGFuIGlzc3VlIGlmIHlvdSB1c2UgdGhpcyBhbmQgd2FudCBhIHJlcGxh
Y2VtZW50LiIKICkKIAotTUVUQUZVTkNfQUREX0NBTEwgPSAoCi0gICAgIk1ldGFmdW5jLmFkZGNh
bGwgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gcHl0ZXN0IDQu
MC5cbiIKLSAgICAiUGxlYXNlIHVzZSBNZXRhZnVuYy5wYXJhbWV0cml6ZSBpbnN0ZWFkLiIKK1dB
Uk5JTkdfQ0FQVFVSRURfSE9PSyA9IFB5dGVzdERlcHJlY2F0aW9uV2FybmluZygKKyAgICAiVGhl
IHB5dGVzdF93YXJuaW5nX2NhcHR1cmVkIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3Zl
ZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlxuIgorICAgICJQbGVhc2UgdXNlIHB5dGVzdF93YXJuaW5n
X3JlY29yZGVkIGluc3RlYWQuIgogKQogCi1QWVRFU1RfUExVR0lOU19GUk9NX05PTl9UT1BfTEVW
RUxfQ09ORlRFU1QgPSBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZygKLSAgICAiRGVmaW5pbmcgcHl0
ZXN0X3BsdWdpbnMgaW4gYSBub24tdG9wLWxldmVsIGNvbmZ0ZXN0IGlzIGRlcHJlY2F0ZWQsICIK
LSAgICAiYmVjYXVzZSBpdCBhZmZlY3RzIHRoZSBlbnRpcmUgZGlyZWN0b3J5IHRyZWUgaW4gYSBu
b24tZXhwbGljaXQgd2F5LlxuIgotICAgICJQbGVhc2UgbW92ZSBpdCB0byB0aGUgdG9wIGxldmVs
IGNvbmZ0ZXN0IGZpbGUgaW5zdGVhZC4iCitGU0NPTExFQ1RPUl9HRVRIT09LUFJPWFlfSVNJTklU
UEFUSCA9IFB5dGVzdERlcHJlY2F0aW9uV2FybmluZygKKyAgICAiVGhlIGdldGhvb2twcm94eSgp
IGFuZCBpc2luaXRwYXRoKCkgbWV0aG9kcyBvZiBGU0NvbGxlY3RvciBhbmQgUGFja2FnZSBhcmUg
ZGVwcmVjYXRlZDsgIgorICAgICJ1c2Ugc2VsZi5zZXNzaW9uLmdldGhvb2twcm94eSgpIGFuZCBz
ZWxmLnNlc3Npb24uaXNpbml0cGF0aCgpIGluc3RlYWQuICIKICkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L2RvY3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9k
b2N0ZXN0LnB5CmluZGV4IGIwYTNhZDA4ZGZjNC4uYzc0NGJiMzY5ZWEzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kb2N0ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L2RvY3Rlc3QucHkKQEAgLTEsMTQgKzEsNDYgQEAKLSIiIiBkaXNjb3ZlciBhbmQgcnVu
IGRvY3Rlc3RzIGluIG1vZHVsZXMgYW5kIHRlc3QgZmlsZXMuIiIiCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9y
dCB0cmFjZWJhY2sKLWltcG9ydCBzeXMKKyIiIkRpc2NvdmVyIGFuZCBydW4gZG9jdGVzdHMgaW4g
bW9kdWxlcyBhbmQgdGVzdCBmaWxlcy4iIiIKK2ltcG9ydCBiZGIKK2ltcG9ydCBpbnNwZWN0CiBp
bXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB0eXBl
cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2Vy
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitmcm9t
IHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5
cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBQYXR0ZXJuCitmcm9tIHR5
cGluZyBpbXBvcnQgU2VxdWVuY2UKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBp
bmcgaW1wb3J0IFVuaW9uCisKK2ltcG9ydCBweS5wYXRoCiAKIGltcG9ydCBweXRlc3QKLWZyb20g
X3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvLCBSZXByRmlsZUxvY2F0aW9u
LCBUZXJtaW5hbFJlcHIKK2Zyb20gX3B5dGVzdCBpbXBvcnQgb3V0Y29tZXMKK2Zyb20gX3B5dGVz
dC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvCitmcm9tIF9weXRlc3QuX2NvZGUuY29k
ZSBpbXBvcnQgUmVwckZpbGVMb2NhdGlvbgorZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0
IFRlcm1pbmFsUmVwcgorZnJvbSBfcHl0ZXN0Ll9pbyBpbXBvcnQgVGVybWluYWxXcml0ZXIKK2Zy
b20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IHNhZmVfZ2V0YXR0cgorZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmln
Citmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgogZnJvbSBfcHl0
ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVxdWVzdAorZnJvbSBfcHl0ZXN0Lm5vZGVzIGlt
cG9ydCBDb2xsZWN0b3IKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgT3V0Y29tZUV4Y2Vw
dGlvbgorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGltcG9ydF9wYXRoCitmcm9tIF9weXRl
c3QucHl0aG9uX2FwaSBpbXBvcnQgYXBwcm94Citmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBp
bXBvcnQgUHl0ZXN0V2FybmluZwogCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGltcG9ydCBkb2N0
ZXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKIAogRE9DVEVTVF9SRVBPUlRfQ0hPSUNF
X05PTkUgPSAibm9uZSIKIERPQ1RFU1RfUkVQT1JUX0NIT0lDRV9DRElGRiA9ICJjZGlmZiIKQEAg
LTI2LDkgKzU4LDExIEBAIERPQ1RFU1RfUkVQT1JUX0NIT0lDRVMgPSAoCiAKICMgTGF6eSBkZWZp
bml0aW9uIG9mIHJ1bm5lciBjbGFzcwogUlVOTkVSX0NMQVNTID0gTm9uZQorIyBMYXp5IGRlZmlu
aXRpb24gb2Ygb3V0cHV0IGNoZWNrZXIgY2xhc3MKK0NIRUNLRVJfQ0xBU1MgPSBOb25lICAjIHR5
cGU6IE9wdGlvbmFsW1R5cGVbZG9jdGVzdC5PdXRwdXRDaGVja2VyXV0KIAogCi1kZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIp
IC0+IE5vbmU6CiAgICAgcGFyc2VyLmFkZGluaSgKICAgICAgICAgImRvY3Rlc3Rfb3B0aW9uZmxh
Z3MiLAogICAgICAgICAib3B0aW9uIGZsYWdzIGZvciBkb2N0ZXN0cyIsCkBAIC03OCwyMyArMTEy
LDM0IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgKQogCiAKLWRlZiBweXRl
c3RfY29sbGVjdF9maWxlKHBhdGgsIHBhcmVudCk6CitkZWYgcHl0ZXN0X3VuY29uZmlndXJlKCkg
LT4gTm9uZToKKyAgICBnbG9iYWwgUlVOTkVSX0NMQVNTCisKKyAgICBSVU5ORVJfQ0xBU1MgPSBO
b25lCisKKworZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUoCisgICAgcGF0aDogcHkucGF0aC5sb2Nh
bCwgcGFyZW50OiBDb2xsZWN0b3IsCispIC0+IE9wdGlvbmFsW1VuaW9uWyJEb2N0ZXN0TW9kdWxl
IiwgIkRvY3Rlc3RUZXh0ZmlsZSJdXToKICAgICBjb25maWcgPSBwYXJlbnQuY29uZmlnCiAgICAg
aWYgcGF0aC5leHQgPT0gIi5weSI6Ci0gICAgICAgIGlmIGNvbmZpZy5vcHRpb24uZG9jdGVzdG1v
ZHVsZXMgYW5kIG5vdCBfaXNfc2V0dXBfcHkoY29uZmlnLCBwYXRoLCBwYXJlbnQpOgotICAgICAg
ICAgICAgcmV0dXJuIERvY3Rlc3RNb2R1bGUocGF0aCwgcGFyZW50KQorICAgICAgICBpZiBjb25m
aWcub3B0aW9uLmRvY3Rlc3Rtb2R1bGVzIGFuZCBub3QgX2lzX3NldHVwX3B5KHBhdGgpOgorICAg
ICAgICAgICAgbW9kID0gRG9jdGVzdE1vZHVsZS5mcm9tX3BhcmVudChwYXJlbnQsIGZzcGF0aD1w
YXRoKSAgIyB0eXBlOiBEb2N0ZXN0TW9kdWxlCisgICAgICAgICAgICByZXR1cm4gbW9kCiAgICAg
ZWxpZiBfaXNfZG9jdGVzdChjb25maWcsIHBhdGgsIHBhcmVudCk6Ci0gICAgICAgIHJldHVybiBE
b2N0ZXN0VGV4dGZpbGUocGF0aCwgcGFyZW50KQorICAgICAgICB0eHQgPSBEb2N0ZXN0VGV4dGZp
bGUuZnJvbV9wYXJlbnQocGFyZW50LCBmc3BhdGg9cGF0aCkgICMgdHlwZTogRG9jdGVzdFRleHRm
aWxlCisgICAgICAgIHJldHVybiB0eHQKKyAgICByZXR1cm4gTm9uZQogCiAKLWRlZiBfaXNfc2V0
dXBfcHkoY29uZmlnLCBwYXRoLCBwYXJlbnQpOgorZGVmIF9pc19zZXR1cF9weShwYXRoOiBweS5w
YXRoLmxvY2FsKSAtPiBib29sOgogICAgIGlmIHBhdGguYmFzZW5hbWUgIT0gInNldHVwLnB5IjoK
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgY29udGVudHMgPSBwYXRoLnJlYWQoKQotICAgIHJl
dHVybiAic2V0dXB0b29scyIgaW4gY29udGVudHMgb3IgImRpc3R1dGlscyIgaW4gY29udGVudHMK
KyAgICBjb250ZW50cyA9IHBhdGgucmVhZF9iaW5hcnkoKQorICAgIHJldHVybiBiInNldHVwdG9v
bHMiIGluIGNvbnRlbnRzIG9yIGIiZGlzdHV0aWxzIiBpbiBjb250ZW50cwogCiAKLWRlZiBfaXNf
ZG9jdGVzdChjb25maWcsIHBhdGgsIHBhcmVudCk6CitkZWYgX2lzX2RvY3Rlc3QoY29uZmlnOiBD
b25maWcsIHBhdGg6IHB5LnBhdGgubG9jYWwsIHBhcmVudCkgLT4gYm9vbDoKICAgICBpZiBwYXRo
LmV4dCBpbiAoIi50eHQiLCAiLnJzdCIpIGFuZCBwYXJlbnQuc2Vzc2lvbi5pc2luaXRwYXRoKHBh
dGgpOgogICAgICAgICByZXR1cm4gVHJ1ZQogICAgIGdsb2JzID0gY29uZmlnLmdldG9wdGlvbigi
ZG9jdGVzdGdsb2IiKSBvciBbInRlc3QqLnR4dCJdCkBAIC0xMDUsMTIgKzE1MCwxMiBAQCBkZWYg
X2lzX2RvY3Rlc3QoY29uZmlnLCBwYXRoLCBwYXJlbnQpOgogCiAKIGNsYXNzIFJlcHJGYWlsRG9j
dGVzdChUZXJtaW5hbFJlcHIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcHJsb2NhdGlv
bl9saW5lcyk6Ci0gICAgICAgICMgTGlzdCBvZiAocmVwcmxvY2F0aW9uLCBsaW5lcykgdHVwbGVz
CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCByZXBybG9jYXRpb25fbGluZXM6IFNl
cXVlbmNlW1R1cGxlW1JlcHJGaWxlTG9jYXRpb24sIFNlcXVlbmNlW3N0cl1dXQorICAgICkgLT4g
Tm9uZToKICAgICAgICAgc2VsZi5yZXBybG9jYXRpb25fbGluZXMgPSByZXBybG9jYXRpb25fbGlu
ZXMKIAotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKKyAgICBkZWYgdG90ZXJtaW5hbChz
ZWxmLCB0dzogVGVybWluYWxXcml0ZXIpIC0+IE5vbmU6CiAgICAgICAgIGZvciByZXBybG9jYXRp
b24sIGxpbmVzIGluIHNlbGYucmVwcmxvY2F0aW9uX2xpbmVzOgogICAgICAgICAgICAgZm9yIGxp
bmUgaW4gbGluZXM6CiAgICAgICAgICAgICAgICAgdHcubGluZShsaW5lKQpAQCAtMTE4LDM3ICsx
NjMsNTMgQEAgY2xhc3MgUmVwckZhaWxEb2N0ZXN0KFRlcm1pbmFsUmVwcik6CiAKIAogY2xhc3Mg
TXVsdGlwbGVEb2N0ZXN0RmFpbHVyZXMoRXhjZXB0aW9uKToKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmYWlsdXJlcyk6Ci0gICAgICAgIHN1cGVyKE11bHRpcGxlRG9jdGVzdEZhaWx1cmVzLCBz
ZWxmKS5fX2luaXRfXygpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVzOiAiU2VxdWVu
Y2VbZG9jdGVzdC5Eb2NUZXN0RmFpbHVyZV0iKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9f
aW5pdF9fKCkKICAgICAgICAgc2VsZi5mYWlsdXJlcyA9IGZhaWx1cmVzCiAKIAotZGVmIF9pbml0
X3J1bm5lcl9jbGFzcygpOgorZGVmIF9pbml0X3J1bm5lcl9jbGFzcygpIC0+ICJUeXBlW2RvY3Rl
c3QuRG9jVGVzdFJ1bm5lcl0iOgogICAgIGltcG9ydCBkb2N0ZXN0CiAKICAgICBjbGFzcyBQeXRl
c3REb2N0ZXN0UnVubmVyKGRvY3Rlc3QuRGVidWdSdW5uZXIpOgotICAgICAgICAiIiIKLSAgICAg
ICAgUnVubmVyIHRvIGNvbGxlY3QgZmFpbHVyZXMuICBOb3RlIHRoYXQgdGhlIG91dCB2YXJpYWJs
ZSBpbiB0aGlzIGNhc2UgaXMKLSAgICAgICAgYSBsaXN0IGluc3RlYWQgb2YgYSBzdGRvdXQtbGlr
ZSBvYmplY3QKKyAgICAgICAgIiIiUnVubmVyIHRvIGNvbGxlY3QgZmFpbHVyZXMuCisKKyAgICAg
ICAgTm90ZSB0aGF0IHRoZSBvdXQgdmFyaWFibGUgaW4gdGhpcyBjYXNlIGlzIGEgbGlzdCBpbnN0
ZWFkIG9mIGEKKyAgICAgICAgc3Rkb3V0LWxpa2Ugb2JqZWN0LgogICAgICAgICAiIiIKIAogICAg
ICAgICBkZWYgX19pbml0X18oCi0gICAgICAgICAgICBzZWxmLCBjaGVja2VyPU5vbmUsIHZlcmJv
c2U9Tm9uZSwgb3B0aW9uZmxhZ3M9MCwgY29udGludWVfb25fZmFpbHVyZT1UcnVlCi0gICAgICAg
ICk6CisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgY2hlY2tlcjogT3B0aW9uYWxbZG9j
dGVzdC5PdXRwdXRDaGVja2VyXSA9IE5vbmUsCisgICAgICAgICAgICB2ZXJib3NlOiBPcHRpb25h
bFtib29sXSA9IE5vbmUsCisgICAgICAgICAgICBvcHRpb25mbGFnczogaW50ID0gMCwKKyAgICAg
ICAgICAgIGNvbnRpbnVlX29uX2ZhaWx1cmU6IGJvb2wgPSBUcnVlLAorICAgICAgICApIC0+IE5v
bmU6CiAgICAgICAgICAgICBkb2N0ZXN0LkRlYnVnUnVubmVyLl9faW5pdF9fKAogICAgICAgICAg
ICAgICAgIHNlbGYsIGNoZWNrZXI9Y2hlY2tlciwgdmVyYm9zZT12ZXJib3NlLCBvcHRpb25mbGFn
cz1vcHRpb25mbGFncwogICAgICAgICAgICAgKQogICAgICAgICAgICAgc2VsZi5jb250aW51ZV9v
bl9mYWlsdXJlID0gY29udGludWVfb25fZmFpbHVyZQogCi0gICAgICAgIGRlZiByZXBvcnRfZmFp
bHVyZShzZWxmLCBvdXQsIHRlc3QsIGV4YW1wbGUsIGdvdCk6CisgICAgICAgIGRlZiByZXBvcnRf
ZmFpbHVyZSgKKyAgICAgICAgICAgIHNlbGYsIG91dCwgdGVzdDogImRvY3Rlc3QuRG9jVGVzdCIs
IGV4YW1wbGU6ICJkb2N0ZXN0LkV4YW1wbGUiLCBnb3Q6IHN0ciwKKyAgICAgICAgKSAtPiBOb25l
OgogICAgICAgICAgICAgZmFpbHVyZSA9IGRvY3Rlc3QuRG9jVGVzdEZhaWx1cmUodGVzdCwgZXhh
bXBsZSwgZ290KQogICAgICAgICAgICAgaWYgc2VsZi5jb250aW51ZV9vbl9mYWlsdXJlOgogICAg
ICAgICAgICAgICAgIG91dC5hcHBlbmQoZmFpbHVyZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgcmFpc2UgZmFpbHVyZQogCi0gICAgICAgIGRlZiByZXBvcnRfdW5leHBlY3Rl
ZF9leGNlcHRpb24oc2VsZiwgb3V0LCB0ZXN0LCBleGFtcGxlLCBleGNfaW5mbyk6CisgICAgICAg
IGRlZiByZXBvcnRfdW5leHBlY3RlZF9leGNlcHRpb24oCisgICAgICAgICAgICBzZWxmLAorICAg
ICAgICAgICAgb3V0LAorICAgICAgICAgICAgdGVzdDogImRvY3Rlc3QuRG9jVGVzdCIsCisgICAg
ICAgICAgICBleGFtcGxlOiAiZG9jdGVzdC5FeGFtcGxlIiwKKyAgICAgICAgICAgIGV4Y19pbmZv
OiAiVHVwbGVbVHlwZVtCYXNlRXhjZXB0aW9uXSwgQmFzZUV4Y2VwdGlvbiwgdHlwZXMuVHJhY2Vi
YWNrVHlwZV0iLAorICAgICAgICApIC0+IE5vbmU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KGV4Y19pbmZvWzFdLCBPdXRjb21lRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBl
eGNfaW5mb1sxXQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfaW5mb1sxXSwgYmRiLkJk
YlF1aXQpOgorICAgICAgICAgICAgICAgIG91dGNvbWVzLmV4aXQoIlF1aXR0aW5nIGRlYnVnZ2Vy
IikKICAgICAgICAgICAgIGZhaWx1cmUgPSBkb2N0ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb24odGVz
dCwgZXhhbXBsZSwgZXhjX2luZm8pCiAgICAgICAgICAgICBpZiBzZWxmLmNvbnRpbnVlX29uX2Zh
aWx1cmU6CiAgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChmYWlsdXJlKQpAQCAtMTU4LDEyICsy
MTksMTkgQEAgZGVmIF9pbml0X3J1bm5lcl9jbGFzcygpOgogICAgIHJldHVybiBQeXRlc3REb2N0
ZXN0UnVubmVyCiAKIAotZGVmIF9nZXRfcnVubmVyKGNoZWNrZXI9Tm9uZSwgdmVyYm9zZT1Ob25l
LCBvcHRpb25mbGFncz0wLCBjb250aW51ZV9vbl9mYWlsdXJlPVRydWUpOgorZGVmIF9nZXRfcnVu
bmVyKAorICAgIGNoZWNrZXI6IE9wdGlvbmFsWyJkb2N0ZXN0Lk91dHB1dENoZWNrZXIiXSA9IE5v
bmUsCisgICAgdmVyYm9zZTogT3B0aW9uYWxbYm9vbF0gPSBOb25lLAorICAgIG9wdGlvbmZsYWdz
OiBpbnQgPSAwLAorICAgIGNvbnRpbnVlX29uX2ZhaWx1cmU6IGJvb2wgPSBUcnVlLAorKSAtPiAi
ZG9jdGVzdC5Eb2NUZXN0UnVubmVyIjoKICAgICAjIFdlIG5lZWQgdGhpcyBpbiBvcmRlciB0byBk
byBhIGxhenkgaW1wb3J0IG9uIGRvY3Rlc3QKICAgICBnbG9iYWwgUlVOTkVSX0NMQVNTCiAgICAg
aWYgUlVOTkVSX0NMQVNTIGlzIE5vbmU6CiAgICAgICAgIFJVTk5FUl9DTEFTUyA9IF9pbml0X3J1
bm5lcl9jbGFzcygpCi0gICAgcmV0dXJuIFJVTk5FUl9DTEFTUygKKyAgICAjIFR5cGUgaWdub3Jl
ZCBiZWNhdXNlIHRoZSBjb250aW51ZV9vbl9mYWlsdXJlIGFyZ3VtZW50IGlzIG9ubHkgZGVmaW5l
ZCBvbgorICAgICMgUHl0ZXN0RG9jdGVzdFJ1bm5lciwgd2hpY2ggaXMgbGF6aWx5IGRlZmluZWQg
c28gY2FuJ3QgYmUgdXNlZCBhcyBhIHR5cGUuCisgICAgcmV0dXJuIFJVTk5FUl9DTEFTUyggICMg
dHlwZTogaWdub3JlCiAgICAgICAgIGNoZWNrZXI9Y2hlY2tlciwKICAgICAgICAgdmVyYm9zZT12
ZXJib3NlLAogICAgICAgICBvcHRpb25mbGFncz1vcHRpb25mbGFncywKQEAgLTE3MiwxNSArMjQw
LDMzIEBAIGRlZiBfZ2V0X3J1bm5lcihjaGVja2VyPU5vbmUsIHZlcmJvc2U9Tm9uZSwgb3B0aW9u
ZmxhZ3M9MCwgY29udGludWVfb25fZmFpbHVyZT1UCiAKIAogY2xhc3MgRG9jdGVzdEl0ZW0ocHl0
ZXN0Lkl0ZW0pOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhcmVudCwgcnVubmVy
PU5vbmUsIGR0ZXN0PU5vbmUpOgotICAgICAgICBzdXBlcihEb2N0ZXN0SXRlbSwgc2VsZikuX19p
bml0X18obmFtZSwgcGFyZW50KQorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAg
ICAgICAgbmFtZTogc3RyLAorICAgICAgICBwYXJlbnQ6ICJVbmlvbltEb2N0ZXN0VGV4dGZpbGUs
IERvY3Rlc3RNb2R1bGVdIiwKKyAgICAgICAgcnVubmVyOiBPcHRpb25hbFsiZG9jdGVzdC5Eb2NU
ZXN0UnVubmVyIl0gPSBOb25lLAorICAgICAgICBkdGVzdDogT3B0aW9uYWxbImRvY3Rlc3QuRG9j
VGVzdCJdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18o
bmFtZSwgcGFyZW50KQogICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgogICAgICAgICBzZWxm
LmR0ZXN0ID0gZHRlc3QKICAgICAgICAgc2VsZi5vYmogPSBOb25lCi0gICAgICAgIHNlbGYuZml4
dHVyZV9yZXF1ZXN0ID0gTm9uZQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgorICAgICAgICBzZWxm
LmZpeHR1cmVfcmVxdWVzdCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbRml4dHVyZVJlcXVlc3Rd
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9wYXJlbnQoICAjIHR5cGU6IGlnbm9y
ZQorICAgICAgICBjbHMsCisgICAgICAgIHBhcmVudDogIlVuaW9uW0RvY3Rlc3RUZXh0ZmlsZSwg
RG9jdGVzdE1vZHVsZV0iLAorICAgICAgICAqLAorICAgICAgICBuYW1lOiBzdHIsCisgICAgICAg
IHJ1bm5lcjogImRvY3Rlc3QuRG9jVGVzdFJ1bm5lciIsCisgICAgICAgIGR0ZXN0OiAiZG9jdGVz
dC5Eb2NUZXN0IgorICAgICk6CisgICAgICAgICMgaW5jb21wYXRpYmxlIHNpZ25hdHVyZSBkdWUg
dG8gdG8gaW1wb3NlZCBsaW1pdHMgb24gc3VibGNhc3MKKyAgICAgICAgIiIiVGhlIHB1YmxpYyBu
YW1lZCBjb25zdHJ1Y3Rvci4iIiIKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuZnJvbV9wYXJlbnQo
bmFtZT1uYW1lLCBwYXJlbnQ9cGFyZW50LCBydW5uZXI9cnVubmVyLCBkdGVzdD1kdGVzdCkKKwor
ICAgIGRlZiBzZXR1cChzZWxmKSAtPiBOb25lOgogICAgICAgICBpZiBzZWxmLmR0ZXN0IGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgc2VsZi5maXh0dXJlX3JlcXVlc3QgPSBfc2V0dXBfZml4dHVy
ZXMoc2VsZikKICAgICAgICAgICAgIGdsb2JzID0gZGljdChnZXRmaXh0dXJlPXNlbGYuZml4dHVy
ZV9yZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSkKQEAgLTE5MCwzMyArMjc2LDQzIEBAIGNsYXNzIERv
Y3Rlc3RJdGVtKHB5dGVzdC5JdGVtKToKICAgICAgICAgICAgICAgICBnbG9ic1tuYW1lXSA9IHZh
bHVlCiAgICAgICAgICAgICBzZWxmLmR0ZXN0Lmdsb2JzLnVwZGF0ZShnbG9icykKIAotICAgIGRl
ZiBydW50ZXN0KHNlbGYpOgorICAgIGRlZiBydW50ZXN0KHNlbGYpIC0+IE5vbmU6CisgICAgICAg
IGFzc2VydCBzZWxmLmR0ZXN0IGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBzZWxmLnJ1bm5l
ciBpcyBub3QgTm9uZQogICAgICAgICBfY2hlY2tfYWxsX3NraXBwZWQoc2VsZi5kdGVzdCkKICAg
ICAgICAgc2VsZi5fZGlzYWJsZV9vdXRwdXRfY2FwdHVyaW5nX2Zvcl9kYXJ3aW4oKQotICAgICAg
ICBmYWlsdXJlcyA9IFtdCi0gICAgICAgIHNlbGYucnVubmVyLnJ1bihzZWxmLmR0ZXN0LCBvdXQ9
ZmFpbHVyZXMpCisgICAgICAgIGZhaWx1cmVzID0gW10gICMgdHlwZTogTGlzdFtkb2N0ZXN0LkRv
Y1Rlc3RGYWlsdXJlXQorICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIHdlIGNoYW5nZSB0
aGUgdHlwZSBvZiBgb3V0YCBmcm9tIHdoYXQKKyAgICAgICAgIyBkb2N0ZXN0IGV4cGVjdHMuCisg
ICAgICAgIHNlbGYucnVubmVyLnJ1bihzZWxmLmR0ZXN0LCBvdXQ9ZmFpbHVyZXMpICAjIHR5cGU6
IGlnbm9yZVthcmctdHlwZV0KICAgICAgICAgaWYgZmFpbHVyZXM6CiAgICAgICAgICAgICByYWlz
ZSBNdWx0aXBsZURvY3Rlc3RGYWlsdXJlcyhmYWlsdXJlcykKIAotICAgIGRlZiBfZGlzYWJsZV9v
dXRwdXRfY2FwdHVyaW5nX2Zvcl9kYXJ3aW4oc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBE
aXNhYmxlIG91dHB1dCBjYXB0dXJpbmcuIE90aGVyd2lzZSwgc3Rkb3V0IGlzIGxvc3QgdG8gZG9j
dGVzdCAoIzk4NSkKLSAgICAgICAgIiIiCisgICAgZGVmIF9kaXNhYmxlX291dHB1dF9jYXB0dXJp
bmdfZm9yX2RhcndpbihzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJEaXNhYmxlIG91dHB1dCBj
YXB0dXJpbmcuIE90aGVyd2lzZSwgc3Rkb3V0IGlzIGxvc3QgdG8gZG9jdGVzdCAoIzk4NSkuIiIi
CiAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpICE9ICJEYXJ3aW4iOgogICAgICAgICAgICAg
cmV0dXJuCiAgICAgICAgIGNhcG1hbiA9IHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1
Z2luKCJjYXB0dXJlbWFuYWdlciIpCiAgICAgICAgIGlmIGNhcG1hbjoKLSAgICAgICAgICAgIG91
dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaW5fPVRydWUpCisgICAgICAg
ICAgICBjYXBtYW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShpbl89VHJ1ZSkKKyAgICAgICAgICAg
IG91dCwgZXJyID0gY2FwbWFuLnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQogICAgICAgICAgICAgc3lz
LnN0ZG91dC53cml0ZShvdXQpCiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycikKIAot
ICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6CisgICAgIyBUT0RPOiBUeXBlIGln
bm9yZWQgLS0gYnJlYWtzIExpc2tvdiBTdWJzdGl0dXRpb24uCisgICAgZGVmIHJlcHJfZmFpbHVy
ZSggICMgdHlwZTogaWdub3JlW292ZXJyaWRlXQorICAgICAgICBzZWxmLCBleGNpbmZvOiBFeGNl
cHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dLAorICAgICkgLT4gVW5pb25bc3RyLCBUZXJtaW5hbFJl
cHJdOgogICAgICAgICBpbXBvcnQgZG9jdGVzdAogCi0gICAgICAgIGZhaWx1cmVzID0gTm9uZQot
ICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoKGRvY3Rlc3QuRG9jVGVzdEZhaWx1cmUs
IGRvY3Rlc3QuVW5leHBlY3RlZEV4Y2VwdGlvbikpOgorICAgICAgICBmYWlsdXJlcyA9ICgKKyAg
ICAgICAgICAgIE5vbmUKKyAgICAgICAgKSAgIyB0eXBlOiBPcHRpb25hbFtTZXF1ZW5jZVtVbmlv
bltkb2N0ZXN0LkRvY1Rlc3RGYWlsdXJlLCBkb2N0ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb25dXV0K
KyAgICAgICAgaWYgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgIGV4Y2luZm8udmFsdWUsIChkb2N0
ZXN0LkRvY1Rlc3RGYWlsdXJlLCBkb2N0ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb24pCisgICAgICAg
ICk6CiAgICAgICAgICAgICBmYWlsdXJlcyA9IFtleGNpbmZvLnZhbHVlXQotICAgICAgICBlbGlm
IGV4Y2luZm8uZXJyaXNpbnN0YW5jZShNdWx0aXBsZURvY3Rlc3RGYWlsdXJlcyk6CisgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBNdWx0aXBsZURvY3Rlc3RGYWlsdXJlcyk6
CiAgICAgICAgICAgICBmYWlsdXJlcyA9IGV4Y2luZm8udmFsdWUuZmFpbHVyZXMKIAogICAgICAg
ICBpZiBmYWlsdXJlcyBpcyBub3QgTm9uZToKQEAgLTIzMCw0OCArMzI2LDUzIEBAIGNsYXNzIERv
Y3Rlc3RJdGVtKHB5dGVzdC5JdGVtKToKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgICAgICAgICBsaW5lbm8gPSB0ZXN0LmxpbmVubyArIGV4YW1wbGUubGluZW5vICsgMQogICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPSB0eXBlKGZhaWx1cmUpLl9fbmFtZV9fCi0gICAgICAgICAg
ICAgICAgcmVwcmxvY2F0aW9uID0gUmVwckZpbGVMb2NhdGlvbihmaWxlbmFtZSwgbGluZW5vLCBt
ZXNzYWdlKQorICAgICAgICAgICAgICAgICMgVE9ETzogUmVwckZpbGVMb2NhdGlvbiBkb2Vzbid0
IGV4cGVjdCBhIE5vbmUgbGluZW5vLgorICAgICAgICAgICAgICAgIHJlcHJsb2NhdGlvbiA9IFJl
cHJGaWxlTG9jYXRpb24oZmlsZW5hbWUsIGxpbmVubywgbWVzc2FnZSkgICMgdHlwZTogaWdub3Jl
W2FyZy10eXBlXQogICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBfZ2V0X2NoZWNrZXIoKQogICAg
ICAgICAgICAgICAgIHJlcG9ydF9jaG9pY2UgPSBfZ2V0X3JlcG9ydF9jaG9pY2UoCiAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuY29uZmlnLmdldG9wdGlvbigiZG9jdGVzdHJlcG9ydCIpCiAgICAg
ICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhaWx1cmUudGVzdC5kb2NzdHJpbmcgaXMgbm90IE5v
bmUKICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBmYWlsdXJlLnRlc3QuZG9jc3RyaW5nLnNw
bGl0bGluZXMoRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICMgYWRkIGxpbmUgbnVtYmVycyB0
byB0aGUgbGVmdCBvZiB0aGUgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQgdGVzdC5saW5lbm8gaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBb
CiAgICAgICAgICAgICAgICAgICAgICAgICAiJTAzZCAlcyIgJSAoaSArIHRlc3QubGluZW5vICsg
MSwgeCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSwgeCkgaW4gZW51bWVyYXRlKGxp
bmVzKQogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICMgdHJpbSBk
b2NzdHJpbmcgZXJyb3IgbGluZXMgdG8gMTAKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBs
aW5lc1ttYXgoZXhhbXBsZS5saW5lbm8gLSA5LCAwKTpleGFtcGxlLmxpbmVubyArIDFdCisgICAg
ICAgICAgICAgICAgICAgIGxpbmVzID0gbGluZXNbbWF4KGV4YW1wbGUubGluZW5vIC0gOSwgMCkg
OiBleGFtcGxlLmxpbmVubyArIDFdCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg
ICAgICAgICAgbGluZXMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAiRVhBTVBMRSBMT0NB
VElPTiBVTktOT1dOLCBub3Qgc2hvd2luZyBhbGwgdGVzdHMgb2YgdGhhdCBleGFtcGxlIgogICAg
ICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgIGluZGVudCA9ICI+Pj4iCiAg
ICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMo
KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiPz8/ICVzICVzIiAlIChp
bmRlbnQsIGxpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCI/Pz8g
e30ge30iLmZvcm1hdChpbmRlbnQsIGxpbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZW50ID0gIi4uLiIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZhaWx1cmUsIGRvY3Rl
c3QuRG9jVGVzdEZhaWx1cmUpOgogICAgICAgICAgICAgICAgICAgICBsaW5lcyArPSBjaGVja2Vy
Lm91dHB1dF9kaWZmZXJlbmNlKAogICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSwgZmFp
bHVyZS5nb3QsIHJlcG9ydF9jaG9pY2UKLSAgICAgICAgICAgICAgICAgICAgKS5zcGxpdCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICAgICApLnNwbGl0KCJcbiIpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICAgICAgaW5uZXJfZXhjaW5mbyA9IEV4Y2VwdGlvbkluZm8oZmFpbHVyZS5leGNf
aW5mbykKICAgICAgICAgICAgICAgICAgICAgbGluZXMgKz0gWyJVTkVYUEVDVEVEIEVYQ0VQVElP
TjogJXMiICUgcmVwcihpbm5lcl9leGNpbmZvLnZhbHVlKV0KLSAgICAgICAgICAgICAgICAgICAg
bGluZXMgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKmZhaWx1cmUuZXhjX2luZm8pCisg
ICAgICAgICAgICAgICAgICAgIGxpbmVzICs9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHgu
c3RyaXAoIlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHRyYWNlYmFjay5m
b3JtYXRfZXhjZXB0aW9uKCpmYWlsdXJlLmV4Y19pbmZvKQorICAgICAgICAgICAgICAgICAgICBd
CiAgICAgICAgICAgICAgICAgcmVwcmxvY2F0aW9uX2xpbmVzLmFwcGVuZCgocmVwcmxvY2F0aW9u
LCBsaW5lcykpCiAgICAgICAgICAgICByZXR1cm4gUmVwckZhaWxEb2N0ZXN0KHJlcHJsb2NhdGlv
bl9saW5lcykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzdXBlcihEb2N0ZXN0
SXRlbSwgc2VsZikucmVwcl9mYWlsdXJlKGV4Y2luZm8pCisgICAgICAgICAgICByZXR1cm4gc3Vw
ZXIoKS5yZXByX2ZhaWx1cmUoZXhjaW5mbykKIAogICAgIGRlZiByZXBvcnRpbmZvKHNlbGYpOgor
ICAgICAgICBhc3NlcnQgc2VsZi5kdGVzdCBpcyBub3QgTm9uZQogICAgICAgICByZXR1cm4gc2Vs
Zi5mc3BhdGgsIHNlbGYuZHRlc3QubGluZW5vLCAiW2RvY3Rlc3RdICVzIiAlIHNlbGYubmFtZQog
CiAKLWRlZiBfZ2V0X2ZsYWdfbG9va3VwKCk6CitkZWYgX2dldF9mbGFnX2xvb2t1cCgpIC0+IERp
Y3Rbc3RyLCBpbnRdOgogICAgIGltcG9ydCBkb2N0ZXN0CiAKICAgICByZXR1cm4gZGljdCgKQEAg
LTI4Myw2ICszODQsNyBAQCBkZWYgX2dldF9mbGFnX2xvb2t1cCgpOgogICAgICAgICBDT01QQVJJ
U09OX0ZMQUdTPWRvY3Rlc3QuQ09NUEFSSVNPTl9GTEFHUywKICAgICAgICAgQUxMT1dfVU5JQ09E
RT1fZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpLAogICAgICAgICBBTExPV19CWVRFUz1fZ2V0X2Fs
bG93X2J5dGVzX2ZsYWcoKSwKKyAgICAgICAgTlVNQkVSPV9nZXRfbnVtYmVyX2ZsYWcoKSwKICAg
ICApCiAKIApAQCAtMjk5LDcgKzQwMSw3IEBAIGRlZiBfZ2V0X2NvbnRpbnVlX29uX2ZhaWx1cmUo
Y29uZmlnKToKICAgICBjb250aW51ZV9vbl9mYWlsdXJlID0gY29uZmlnLmdldHZhbHVlKCJkb2N0
ZXN0X2NvbnRpbnVlX29uX2ZhaWx1cmUiKQogICAgIGlmIGNvbnRpbnVlX29uX2ZhaWx1cmU6CiAg
ICAgICAgICMgV2UgbmVlZCB0byB0dXJuIG9mZiB0aGlzIGlmIHdlIHVzZSBwZGIgc2luY2Ugd2Ug
c2hvdWxkIHN0b3AgYXQKLSAgICAgICAgIyB0aGUgZmlyc3QgZmFpbHVyZQorICAgICAgICAjIHRo
ZSBmaXJzdCBmYWlsdXJlLgogICAgICAgICBpZiBjb25maWcuZ2V0dmFsdWUoInVzZXBkYiIpOgog
ICAgICAgICAgICAgY29udGludWVfb25fZmFpbHVyZSA9IEZhbHNlCiAgICAgcmV0dXJuIGNvbnRp
bnVlX29uX2ZhaWx1cmUKQEAgLTMwOCwxMSArNDEwLDExIEBAIGRlZiBfZ2V0X2NvbnRpbnVlX29u
X2ZhaWx1cmUoY29uZmlnKToKIGNsYXNzIERvY3Rlc3RUZXh0ZmlsZShweXRlc3QuTW9kdWxlKToK
ICAgICBvYmogPSBOb25lCiAKLSAgICBkZWYgY29sbGVjdChzZWxmKToKKyAgICBkZWYgY29sbGVj
dChzZWxmKSAtPiBJdGVyYWJsZVtEb2N0ZXN0SXRlbV06CiAgICAgICAgIGltcG9ydCBkb2N0ZXN0
CiAKLSAgICAgICAgIyBpbnNwaXJlZCBieSBkb2N0ZXN0LnRlc3RmaWxlOyBpZGVhbGx5IHdlIHdv
dWxkIHVzZSBpdCBkaXJlY3RseSwKLSAgICAgICAgIyBidXQgaXQgZG9lc24ndCBzdXBwb3J0IHBh
c3NpbmcgYSBjdXN0b20gY2hlY2tlcgorICAgICAgICAjIEluc3BpcmVkIGJ5IGRvY3Rlc3QudGVz
dGZpbGU7IGlkZWFsbHkgd2Ugd291bGQgdXNlIGl0IGRpcmVjdGx5LAorICAgICAgICAjIGJ1dCBp
dCBkb2Vzbid0IHN1cHBvcnQgcGFzc2luZyBhIGN1c3RvbSBjaGVja2VyLgogICAgICAgICBlbmNv
ZGluZyA9IHNlbGYuY29uZmlnLmdldGluaSgiZG9jdGVzdF9lbmNvZGluZyIpCiAgICAgICAgIHRl
eHQgPSBzZWxmLmZzcGF0aC5yZWFkX3RleHQoZW5jb2RpbmcpCiAgICAgICAgIGZpbGVuYW1lID0g
c3RyKHNlbGYuZnNwYXRoKQpAQCAtMzIyLDIzICs0MjQsMjMgQEAgY2xhc3MgRG9jdGVzdFRleHRm
aWxlKHB5dGVzdC5Nb2R1bGUpOgogICAgICAgICBvcHRpb25mbGFncyA9IGdldF9vcHRpb25mbGFn
cyhzZWxmKQogCiAgICAgICAgIHJ1bm5lciA9IF9nZXRfcnVubmVyKAotICAgICAgICAgICAgdmVy
Ym9zZT0wLAorICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAgIG9wdGlvbmZs
YWdzPW9wdGlvbmZsYWdzLAogICAgICAgICAgICAgY2hlY2tlcj1fZ2V0X2NoZWNrZXIoKSwKICAg
ICAgICAgICAgIGNvbnRpbnVlX29uX2ZhaWx1cmU9X2dldF9jb250aW51ZV9vbl9mYWlsdXJlKHNl
bGYuY29uZmlnKSwKICAgICAgICAgKQotICAgICAgICBfZml4X3Nwb29mX3B5dGhvbjIocnVubmVy
LCBlbmNvZGluZykKIAogICAgICAgICBwYXJzZXIgPSBkb2N0ZXN0LkRvY1Rlc3RQYXJzZXIoKQog
ICAgICAgICB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KHRleHQsIGdsb2JzLCBuYW1lLCBmaWxl
bmFtZSwgMCkKICAgICAgICAgaWYgdGVzdC5leGFtcGxlczoKLSAgICAgICAgICAgIHlpZWxkIERv
Y3Rlc3RJdGVtKHRlc3QubmFtZSwgc2VsZiwgcnVubmVyLCB0ZXN0KQorICAgICAgICAgICAgeWll
bGQgRG9jdGVzdEl0ZW0uZnJvbV9wYXJlbnQoCisgICAgICAgICAgICAgICAgc2VsZiwgbmFtZT10
ZXN0Lm5hbWUsIHJ1bm5lcj1ydW5uZXIsIGR0ZXN0PXRlc3QKKyAgICAgICAgICAgICkKIAogCi1k
ZWYgX2NoZWNrX2FsbF9za2lwcGVkKHRlc3QpOgotICAgICIiInJhaXNlcyBweXRlc3Quc2tpcCgp
IGlmIGFsbCBleGFtcGxlcyBpbiB0aGUgZ2l2ZW4gRG9jVGVzdCBoYXZlIHRoZSBTS0lQCi0gICAg
b3B0aW9uIHNldC4KLSAgICAiIiIKK2RlZiBfY2hlY2tfYWxsX3NraXBwZWQodGVzdDogImRvY3Rl
c3QuRG9jVGVzdCIpIC0+IE5vbmU6CisgICAgIiIiUmFpc2UgcHl0ZXN0LnNraXAoKSBpZiBhbGwg
ZXhhbXBsZXMgaW4gdGhlIGdpdmVuIERvY1Rlc3QgaGF2ZSB0aGUgU0tJUAorICAgIG9wdGlvbiBz
ZXQuIiIiCiAgICAgaW1wb3J0IGRvY3Rlc3QKIAogICAgIGFsbF9za2lwcGVkID0gYWxsKHgub3B0
aW9ucy5nZXQoZG9jdGVzdC5TS0lQLCBGYWxzZSkgZm9yIHggaW4gdGVzdC5leGFtcGxlcykKQEAg
LTM0NiwyNiArNDQ4LDk4IEBAIGRlZiBfY2hlY2tfYWxsX3NraXBwZWQodGVzdCk6CiAgICAgICAg
IHB5dGVzdC5za2lwKCJhbGwgdGVzdHMgc2tpcHBlZCBieSArU0tJUCBvcHRpb24iKQogCiAKLWNs
YXNzIERvY3Rlc3RNb2R1bGUocHl0ZXN0Lk1vZHVsZSk6CitkZWYgX2lzX21vY2tlZChvYmo6IG9i
amVjdCkgLT4gYm9vbDoKKyAgICAiIiJSZXR1cm4gaWYgYW4gb2JqZWN0IGlzIHBvc3NpYmx5IGEg
bW9jayBvYmplY3QgYnkgY2hlY2tpbmcgdGhlCisgICAgZXhpc3RlbmNlIG9mIGEgaGlnaGx5IGlt
cHJvYmFibGUgYXR0cmlidXRlLiIiIgorICAgIHJldHVybiAoCisgICAgICAgIHNhZmVfZ2V0YXR0
cihvYmosICJweXRlc3RfbW9ja19leGFtcGxlX2F0dHJpYnV0ZV90aGF0X3Nob3VsZG50X2V4aXN0
IiwgTm9uZSkKKyAgICAgICAgaXMgbm90IE5vbmUKKyAgICApCisKIAotICAgIGRlZiBjb2xsZWN0
KHNlbGYpOgorQGNvbnRleHRtYW5hZ2VyCitkZWYgX3BhdGNoX3Vud3JhcF9tb2NrX2F3YXJlKCkg
LT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICIiIkNvbnRleHQgbWFuYWdlciB3
aGljaCByZXBsYWNlcyBgYGluc3BlY3QudW53cmFwYGAgd2l0aCBhIHZlcnNpb24KKyAgICB0aGF0
J3MgYXdhcmUgb2YgbW9jayBvYmplY3RzIGFuZCBkb2Vzbid0IHJlY3Vyc2UgaW50byB0aGVtLiIi
IgorICAgIHJlYWxfdW53cmFwID0gaW5zcGVjdC51bndyYXAKKworICAgIGRlZiBfbW9ja19hd2Fy
ZV91bndyYXAoCisgICAgICAgIGZ1bmM6IENhbGxhYmxlWy4uLiwgQW55XSwgKiwgc3RvcDogT3B0
aW9uYWxbQ2FsbGFibGVbW0FueV0sIEFueV1dID0gTm9uZQorICAgICkgLT4gQW55OgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBpZiBzdG9wIGlzIE5vbmUgb3Igc3RvcCBpcyBfaXNfbW9ja2Vk
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWFsX3Vud3JhcChmdW5jLCBzdG9wPV9pc19tb2Nr
ZWQpCisgICAgICAgICAgICBfc3RvcCA9IHN0b3AKKyAgICAgICAgICAgIHJldHVybiByZWFsX3Vu
d3JhcChmdW5jLCBzdG9wPWxhbWJkYSBvYmo6IF9pc19tb2NrZWQob2JqKSBvciBfc3RvcChmdW5j
KSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgd2FybmluZ3Mu
d2FybigKKyAgICAgICAgICAgICAgICAiR290ICVyIHdoZW4gdW53cmFwcGluZyAlci4gIFRoaXMg
aXMgdXN1YWxseSBjYXVzZWQgIgorICAgICAgICAgICAgICAgICJieSBhIHZpb2xhdGlvbiBvZiBQ
eXRob24ncyBvYmplY3QgcHJvdG9jb2w7IHNlZSBlLmcuICIKKyAgICAgICAgICAgICAgICAiaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDgwIiAlIChlLCBmdW5j
KSwKKyAgICAgICAgICAgICAgICBQeXRlc3RXYXJuaW5nLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgcmFpc2UKKworICAgIGluc3BlY3QudW53cmFwID0gX21vY2tfYXdhcmVfdW53cmFwCisg
ICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIGluc3BlY3QudW53
cmFwID0gcmVhbF91bndyYXAKKworCitjbGFzcyBEb2N0ZXN0TW9kdWxlKHB5dGVzdC5Nb2R1bGUp
OgorICAgIGRlZiBjb2xsZWN0KHNlbGYpIC0+IEl0ZXJhYmxlW0RvY3Rlc3RJdGVtXToKICAgICAg
ICAgaW1wb3J0IGRvY3Rlc3QKIAorICAgICAgICBjbGFzcyBNb2NrQXdhcmVEb2NUZXN0RmluZGVy
KGRvY3Rlc3QuRG9jVGVzdEZpbmRlcik6CisgICAgICAgICAgICAiIiJBIGhhY2tpc2ggZG9jdGVz
dCBmaW5kZXIgdGhhdCBvdmVycmlkZXMgc3RkbGliIGludGVybmFscyB0byBmaXggYSBzdGRsaWIg
YnVnLgorCisgICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3Qv
aXNzdWVzLzM0NTYKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjU1
MzIKKyAgICAgICAgICAgICIiIgorCisgICAgICAgICAgICBkZWYgX2ZpbmRfbGluZW5vKHNlbGYs
IG9iaiwgc291cmNlX2xpbmVzKToKKyAgICAgICAgICAgICAgICAiIiJEb2N0ZXN0IGNvZGUgZG9l
cyBub3QgdGFrZSBpbnRvIGFjY291bnQgYEBwcm9wZXJ0eWAsIHRoaXMKKyAgICAgICAgICAgICAg
ICBpcyBhIGhhY2tpc2ggd2F5IHRvIGZpeCBpdC4KKworICAgICAgICAgICAgICAgIGh0dHBzOi8v
YnVncy5weXRob24ub3JnL2lzc3VlMTc0NDYKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgcHJvcGVydHkpOgorICAgICAgICAgICAgICAgICAg
ICBvYmogPSBnZXRhdHRyKG9iaiwgImZnZXQiLCBvYmopCisgICAgICAgICAgICAgICAgIyBUeXBl
IGlnbm9yZWQgYmVjYXVzZSB0aGlzIGlzIGEgcHJpdmF0ZSBmdW5jdGlvbi4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gZG9jdGVzdC5Eb2NUZXN0RmluZGVyLl9maW5kX2xpbmVubyggICMgdHlwZTog
aWdub3JlCisgICAgICAgICAgICAgICAgICAgIHNlbGYsIG9iaiwgc291cmNlX2xpbmVzLAorICAg
ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgZGVmIF9maW5kKAorICAgICAgICAgICAgICAg
IHNlbGYsIHRlc3RzLCBvYmosIG5hbWUsIG1vZHVsZSwgc291cmNlX2xpbmVzLCBnbG9icywgc2Vl
bgorICAgICAgICAgICAgKSAtPiBOb25lOgorICAgICAgICAgICAgICAgIGlmIF9pc19tb2NrZWQo
b2JqKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgd2l0aCBf
cGF0Y2hfdW53cmFwX21vY2tfYXdhcmUoKToKKworICAgICAgICAgICAgICAgICAgICAjIFR5cGUg
aWdub3JlZCBiZWNhdXNlIHRoaXMgaXMgYSBwcml2YXRlIGZ1bmN0aW9uLgorICAgICAgICAgICAg
ICAgICAgICBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIuX2ZpbmQoICAjIHR5cGU6IGlnbm9yZQorICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZiwgdGVzdHMsIG9iaiwgbmFtZSwgbW9kdWxlLCBzb3Vy
Y2VfbGluZXMsIGdsb2JzLCBzZWVuCisgICAgICAgICAgICAgICAgICAgICkKKwogICAgICAgICBp
ZiBzZWxmLmZzcGF0aC5iYXNlbmFtZSA9PSAiY29uZnRlc3QucHkiOgotICAgICAgICAgICAgbW9k
dWxlID0gc2VsZi5jb25maWcucGx1Z2lubWFuYWdlci5faW1wb3J0Y29uZnRlc3Qoc2VsZi5mc3Bh
dGgpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBv
cnRjb25mdGVzdCgKKyAgICAgICAgICAgICAgICBzZWxmLmZzcGF0aCwgc2VsZi5jb25maWcuZ2V0
b3B0aW9uKCJpbXBvcnRtb2RlIikKKyAgICAgICAgICAgICkKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmZzcGF0aC5weWltcG9y
dCgpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3BhdGgoc2VsZi5mc3BhdGgpCiAg
ICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5j
b25maWcuZ2V0dmFsdWUoImRvY3Rlc3RfaWdub3JlX2ltcG9ydF9lcnJvcnMiKToKICAgICAgICAg
ICAgICAgICAgICAgcHl0ZXN0LnNraXAoInVuYWJsZSB0byBpbXBvcnQgbW9kdWxlICVyIiAlIHNl
bGYuZnNwYXRoKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJh
aXNlCi0gICAgICAgICMgdXNlcyBpbnRlcm5hbCBkb2N0ZXN0IG1vZHVsZSBwYXJzaW5nIG1lY2hh
bmlzbQotICAgICAgICBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoKQorICAgICAgICAj
IFVzZXMgaW50ZXJuYWwgZG9jdGVzdCBtb2R1bGUgcGFyc2luZyBtZWNoYW5pc20uCisgICAgICAg
IGZpbmRlciA9IE1vY2tBd2FyZURvY1Rlc3RGaW5kZXIoKQogICAgICAgICBvcHRpb25mbGFncyA9
IGdldF9vcHRpb25mbGFncyhzZWxmKQogICAgICAgICBydW5uZXIgPSBfZ2V0X3J1bm5lcigKLSAg
ICAgICAgICAgIHZlcmJvc2U9MCwKKyAgICAgICAgICAgIHZlcmJvc2U9RmFsc2UsCiAgICAgICAg
ICAgICBvcHRpb25mbGFncz1vcHRpb25mbGFncywKICAgICAgICAgICAgIGNoZWNrZXI9X2dldF9j
aGVja2VyKCksCiAgICAgICAgICAgICBjb250aW51ZV9vbl9mYWlsdXJlPV9nZXRfY29udGludWVf
b25fZmFpbHVyZShzZWxmLmNvbmZpZyksCkBAIC0zNzMsMjAgKzU0NywyMCBAQCBjbGFzcyBEb2N0
ZXN0TW9kdWxlKHB5dGVzdC5Nb2R1bGUpOgogCiAgICAgICAgIGZvciB0ZXN0IGluIGZpbmRlci5m
aW5kKG1vZHVsZSwgbW9kdWxlLl9fbmFtZV9fKToKICAgICAgICAgICAgIGlmIHRlc3QuZXhhbXBs
ZXM6ICAjIHNraXAgZW1wdHkgZG9jdGVzdHMKLSAgICAgICAgICAgICAgICB5aWVsZCBEb2N0ZXN0
SXRlbSh0ZXN0Lm5hbWUsIHNlbGYsIHJ1bm5lciwgdGVzdCkKKyAgICAgICAgICAgICAgICB5aWVs
ZCBEb2N0ZXN0SXRlbS5mcm9tX3BhcmVudCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgbmFt
ZT10ZXN0Lm5hbWUsIHJ1bm5lcj1ydW5uZXIsIGR0ZXN0PXRlc3QKKyAgICAgICAgICAgICAgICAp
CiAKIAotZGVmIF9zZXR1cF9maXh0dXJlcyhkb2N0ZXN0X2l0ZW0pOgotICAgICIiIgotICAgIFVz
ZWQgYnkgRG9jdGVzdFRleHRmaWxlIGFuZCBEb2N0ZXN0SXRlbSB0byBzZXR1cCBmaXh0dXJlIGlu
Zm9ybWF0aW9uLgotICAgICIiIgorZGVmIF9zZXR1cF9maXh0dXJlcyhkb2N0ZXN0X2l0ZW06IERv
Y3Rlc3RJdGVtKSAtPiBGaXh0dXJlUmVxdWVzdDoKKyAgICAiIiJVc2VkIGJ5IERvY3Rlc3RUZXh0
ZmlsZSBhbmQgRG9jdGVzdEl0ZW0gdG8gc2V0dXAgZml4dHVyZSBpbmZvcm1hdGlvbi4iIiIKIAot
ICAgIGRlZiBmdW5jKCk6CisgICAgZGVmIGZ1bmMoKSAtPiBOb25lOgogICAgICAgICBwYXNzCiAK
LSAgICBkb2N0ZXN0X2l0ZW0uZnVuY2FyZ3MgPSB7fQorICAgIGRvY3Rlc3RfaXRlbS5mdW5jYXJn
cyA9IHt9ICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAgICAgZm0gPSBkb2N0ZXN0X2l0
ZW0uc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAgICBkb2N0ZXN0X2l0ZW0uX2ZpeHR1cmVpbmZv
ID0gZm0uZ2V0Zml4dHVyZWluZm8oCisgICAgZG9jdGVzdF9pdGVtLl9maXh0dXJlaW5mbyA9IGZt
LmdldGZpeHR1cmVpbmZvKCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgICAgICBu
b2RlPWRvY3Rlc3RfaXRlbSwgZnVuYz1mdW5jLCBjbHM9Tm9uZSwgZnVuY2FyZ3M9RmFsc2UKICAg
ICApCiAgICAgZml4dHVyZV9yZXF1ZXN0ID0gRml4dHVyZVJlcXVlc3QoZG9jdGVzdF9pdGVtKQpA
QCAtMzk0LDgzICs1NjgsMTQzIEBAIGRlZiBfc2V0dXBfZml4dHVyZXMoZG9jdGVzdF9pdGVtKToK
ICAgICByZXR1cm4gZml4dHVyZV9yZXF1ZXN0CiAKIAotZGVmIF9nZXRfY2hlY2tlcigpOgotICAg
ICIiIgotICAgIFJldHVybnMgYSBkb2N0ZXN0Lk91dHB1dENoZWNrZXIgc3ViY2xhc3MgdGhhdCB0
YWtlcyBpbiBhY2NvdW50IHRoZQotICAgIEFMTE9XX1VOSUNPREUgb3B0aW9uIHRvIGlnbm9yZSB1
JycgcHJlZml4ZXMgaW4gc3RyaW5ncyBhbmQgQUxMT1dfQllURVMKLSAgICB0byBzdHJpcCBiJycg
cHJlZml4ZXMuCi0gICAgVXNlZnVsIHdoZW4gdGhlIHNhbWUgZG9jdGVzdCBzaG91bGQgcnVuIGlu
IFB5dGhvbiAyIGFuZCBQeXRob24gMy4KLQotICAgIEFuIGlubmVyIGNsYXNzIGlzIHVzZWQgdG8g
YXZvaWQgaW1wb3J0aW5nICJkb2N0ZXN0IiBhdCB0aGUgbW9kdWxlCi0gICAgbGV2ZWwuCi0gICAg
IiIiCi0gICAgaWYgaGFzYXR0cihfZ2V0X2NoZWNrZXIsICJMaXRlcmFsc091dHB1dENoZWNrZXIi
KToKLSAgICAgICAgcmV0dXJuIF9nZXRfY2hlY2tlci5MaXRlcmFsc091dHB1dENoZWNrZXIoKQot
CitkZWYgX2luaXRfY2hlY2tlcl9jbGFzcygpIC0+ICJUeXBlW2RvY3Rlc3QuT3V0cHV0Q2hlY2tl
cl0iOgogICAgIGltcG9ydCBkb2N0ZXN0CiAgICAgaW1wb3J0IHJlCiAKICAgICBjbGFzcyBMaXRl
cmFsc091dHB1dENoZWNrZXIoZG9jdGVzdC5PdXRwdXRDaGVja2VyKToKLSAgICAgICAgIiIiCi0g
ICAgICAgIENvcGllZCBmcm9tIGRvY3Rlc3Rfbm9zZV9wbHVnaW4ucHkgZnJvbSB0aGUgbmx0ayBw
cm9qZWN0OgotICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL25sdGsvbmx0awotCi0gICAg
ICAgIEZ1cnRoZXIgZXh0ZW5kZWQgdG8gYWxzbyBzdXBwb3J0IGJ5dGUgbGl0ZXJhbHMuCi0gICAg
ICAgICIiIgorICAgICAgICAjIEJhc2VkIG9uIGRvY3Rlc3Rfbm9zZV9wbHVnaW4ucHkgZnJvbSB0
aGUgbmx0ayBwcm9qZWN0CisgICAgICAgICMgKGh0dHBzOi8vZ2l0aHViLmNvbS9ubHRrL25sdGsp
IGFuZCBvbiB0aGUgIm51bXRlc3QiIGRvY3Rlc3QgZXh0ZW5zaW9uCisgICAgICAgICMgYnkgU2Vi
YXN0aWVuIEJvaXNnZXJhdWx0IChodHRwczovL2dpdGh1Yi5jb20vYm9pc2dlcmEvbnVtdGVzdCku
CiAKICAgICAgICAgX3VuaWNvZGVfbGl0ZXJhbF9yZSA9IHJlLmNvbXBpbGUociIoXFd8XilbdVVd
KFtyUl0/W1wnXCJdKSIsIHJlLlVOSUNPREUpCiAgICAgICAgIF9ieXRlc19saXRlcmFsX3JlID0g
cmUuY29tcGlsZShyIihcV3xeKVtiQl0oW3JSXT9bXCdcIl0pIiwgcmUuVU5JQ09ERSkKKyAgICAg
ICAgX251bWJlcl9yZSA9IHJlLmNvbXBpbGUoCisgICAgICAgICAgICByIiIiCisgICAgICAgICAg
ICAoP1A8bnVtYmVyPgorICAgICAgICAgICAgICAoP1A8bWFudGlzc2E+CisgICAgICAgICAgICAg
ICAgKD9QPGludGVnZXIxPiBbKy1dP1xkKilcLig/UDxmcmFjdGlvbj5cZCspCisgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgICAgICg/UDxpbnRlZ2VyMj4gWystXT9cZCspXC4KKyAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAoPzoKKyAgICAgICAgICAgICAgICBbRWVdCisgICAg
ICAgICAgICAgICAgKD9QPGV4cG9uZW50MT4gWystXT9cZCspCisgICAgICAgICAgICAgICk/Cisg
ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgKD9QPGludGVnZXIzPiBbKy1dP1xkKykKKyAg
ICAgICAgICAgICAgKD86CisgICAgICAgICAgICAgICAgW0VlXQorICAgICAgICAgICAgICAgICg/
UDxleHBvbmVudDI+IFsrLV0/XGQrKQorICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisg
ICAgICAgICAgICAiIiIsCisgICAgICAgICAgICByZS5WRVJCT1NFLAorICAgICAgICApCiAKLSAg
ICAgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsIG9wdGlvbmZsYWdzKToKLSAg
ICAgICAgICAgIHJlcyA9IGRvY3Rlc3QuT3V0cHV0Q2hlY2tlci5jaGVja19vdXRwdXQoc2VsZiwg
d2FudCwgZ290LCBvcHRpb25mbGFncykKLSAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgZGVm
IGNoZWNrX291dHB1dChzZWxmLCB3YW50OiBzdHIsIGdvdDogc3RyLCBvcHRpb25mbGFnczogaW50
KSAtPiBib29sOgorICAgICAgICAgICAgaWYgZG9jdGVzdC5PdXRwdXRDaGVja2VyLmNoZWNrX291
dHB1dChzZWxmLCB3YW50LCBnb3QsIG9wdGlvbmZsYWdzKToKICAgICAgICAgICAgICAgICByZXR1
cm4gVHJ1ZQogCiAgICAgICAgICAgICBhbGxvd191bmljb2RlID0gb3B0aW9uZmxhZ3MgJiBfZ2V0
X2FsbG93X3VuaWNvZGVfZmxhZygpCiAgICAgICAgICAgICBhbGxvd19ieXRlcyA9IG9wdGlvbmZs
YWdzICYgX2dldF9hbGxvd19ieXRlc19mbGFnKCkKLSAgICAgICAgICAgIGlmIG5vdCBhbGxvd191
bmljb2RlIGFuZCBub3QgYWxsb3dfYnl0ZXM6CisgICAgICAgICAgICBhbGxvd19udW1iZXIgPSBv
cHRpb25mbGFncyAmIF9nZXRfbnVtYmVyX2ZsYWcoKQorCisgICAgICAgICAgICBpZiBub3QgYWxs
b3dfdW5pY29kZSBhbmQgbm90IGFsbG93X2J5dGVzIGFuZCBub3QgYWxsb3dfbnVtYmVyOgogICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgICAgICBlbHNlOiAgIyBwcmFnbWE6
IG5vIGNvdmVyCisgICAgICAgICAgICBkZWYgcmVtb3ZlX3ByZWZpeGVzKHJlZ2V4OiBQYXR0ZXJu
W3N0cl0sIHR4dDogc3RyKSAtPiBzdHI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1Yihy
ZWdleCwgciJcMVwyIiwgdHh0KQorCisgICAgICAgICAgICBpZiBhbGxvd191bmljb2RlOgorICAg
ICAgICAgICAgICAgIHdhbnQgPSByZW1vdmVfcHJlZml4ZXMoc2VsZi5fdW5pY29kZV9saXRlcmFs
X3JlLCB3YW50KQorICAgICAgICAgICAgICAgIGdvdCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl91
bmljb2RlX2xpdGVyYWxfcmUsIGdvdCkKKworICAgICAgICAgICAgaWYgYWxsb3dfYnl0ZXM6Cisg
ICAgICAgICAgICAgICAgd2FudCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl9ieXRlc19saXRlcmFs
X3JlLCB3YW50KQorICAgICAgICAgICAgICAgIGdvdCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl9i
eXRlc19saXRlcmFsX3JlLCBnb3QpCisKKyAgICAgICAgICAgIGlmIGFsbG93X251bWJlcjoKKyAg
ICAgICAgICAgICAgICBnb3QgPSBzZWxmLl9yZW1vdmVfdW53YW50ZWRfcHJlY2lzaW9uKHdhbnQs
IGdvdCkKKworICAgICAgICAgICAgcmV0dXJuIGRvY3Rlc3QuT3V0cHV0Q2hlY2tlci5jaGVja19v
dXRwdXQoc2VsZiwgd2FudCwgZ290LCBvcHRpb25mbGFncykKKworICAgICAgICBkZWYgX3JlbW92
ZV91bndhbnRlZF9wcmVjaXNpb24oc2VsZiwgd2FudDogc3RyLCBnb3Q6IHN0cikgLT4gc3RyOgor
ICAgICAgICAgICAgd2FudHMgPSBsaXN0KHNlbGYuX251bWJlcl9yZS5maW5kaXRlcih3YW50KSkK
KyAgICAgICAgICAgIGdvdHMgPSBsaXN0KHNlbGYuX251bWJlcl9yZS5maW5kaXRlcihnb3QpKQor
ICAgICAgICAgICAgaWYgbGVuKHdhbnRzKSAhPSBsZW4oZ290cyk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdvdAorICAgICAgICAgICAgb2Zmc2V0ID0gMAorICAgICAgICAgICAgZm9yIHcsIGcg
aW4gemlwKHdhbnRzLCBnb3RzKToKKyAgICAgICAgICAgICAgICBmcmFjdGlvbiA9IHcuZ3JvdXAo
ImZyYWN0aW9uIikgICMgdHlwZTogT3B0aW9uYWxbc3RyXQorICAgICAgICAgICAgICAgIGV4cG9u
ZW50ID0gdy5ncm91cCgiZXhwb25lbnQxIikgICMgdHlwZTogT3B0aW9uYWxbc3RyXQorICAgICAg
ICAgICAgICAgIGlmIGV4cG9uZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGV4cG9u
ZW50ID0gdy5ncm91cCgiZXhwb25lbnQyIikKKyAgICAgICAgICAgICAgICBpZiBmcmFjdGlvbiBp
cyBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSAwCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gbGVuKGZyYWN0aW9uKQor
ICAgICAgICAgICAgICAgIGlmIGV4cG9uZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
ICAgICBwcmVjaXNpb24gLT0gaW50KGV4cG9uZW50KQorICAgICAgICAgICAgICAgIGlmIGZsb2F0
KHcuZ3JvdXAoKSkgPT0gYXBwcm94KGZsb2F0KGcuZ3JvdXAoKSksIGFicz0xMCAqKiAtcHJlY2lz
aW9uKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGV5J3JlIGNsb3NlIGVub3VnaC4gUmVwbGFj
ZSB0aGUgdGV4dCB3ZSBhY3R1YWxseQorICAgICAgICAgICAgICAgICAgICAjIGdvdCB3aXRoIHRo
ZSB0ZXh0IHdlIHdhbnQsIHNvIHRoYXQgaXQgd2lsbCBtYXRjaCB3aGVuIHdlCisgICAgICAgICAg
ICAgICAgICAgICMgY2hlY2sgdGhlIHN0cmluZyBsaXRlcmFsbHkuCisgICAgICAgICAgICAgICAg
ICAgIGdvdCA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdFs6IGcuc3RhcnQoKSArIG9m
ZnNldF0gKyB3Lmdyb3VwKCkgKyBnb3RbZy5lbmQoKSArIG9mZnNldCA6XQorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSB3LmVuZCgpIC0gdy5zdGFy
dCgpIC0gKGcuZW5kKCkgLSBnLnN0YXJ0KCkpCisgICAgICAgICAgICByZXR1cm4gZ290CisKKyAg
ICByZXR1cm4gTGl0ZXJhbHNPdXRwdXRDaGVja2VyCiAKLSAgICAgICAgICAgICAgICBkZWYgcmVt
b3ZlX3ByZWZpeGVzKHJlZ2V4LCB0eHQpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmUu
c3ViKHJlZ2V4LCByIlwxXDIiLCB0eHQpCiAKLSAgICAgICAgICAgICAgICBpZiBhbGxvd191bmlj
b2RlOgotICAgICAgICAgICAgICAgICAgICB3YW50ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3Vu
aWNvZGVfbGl0ZXJhbF9yZSwgd2FudCkKLSAgICAgICAgICAgICAgICAgICAgZ290ID0gcmVtb3Zl
X3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJhbF9yZSwgZ290KQotICAgICAgICAgICAgICAg
IGlmIGFsbG93X2J5dGVzOgotICAgICAgICAgICAgICAgICAgICB3YW50ID0gcmVtb3ZlX3ByZWZp
eGVzKHNlbGYuX2J5dGVzX2xpdGVyYWxfcmUsIHdhbnQpCi0gICAgICAgICAgICAgICAgICAgIGdv
dCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl9ieXRlc19saXRlcmFsX3JlLCBnb3QpCi0gICAgICAg
ICAgICAgICAgcmVzID0gZG9jdGVzdC5PdXRwdXRDaGVja2VyLmNoZWNrX291dHB1dChzZWxmLCB3
YW50LCBnb3QsIG9wdGlvbmZsYWdzKQotICAgICAgICAgICAgICAgIHJldHVybiByZXMKK2RlZiBf
Z2V0X2NoZWNrZXIoKSAtPiAiZG9jdGVzdC5PdXRwdXRDaGVja2VyIjoKKyAgICAiIiJSZXR1cm4g
YSBkb2N0ZXN0Lk91dHB1dENoZWNrZXIgc3ViY2xhc3MgdGhhdCBzdXBwb3J0cyBzb21lCisgICAg
YWRkaXRpb25hbCBvcHRpb25zOgogCi0gICAgX2dldF9jaGVja2VyLkxpdGVyYWxzT3V0cHV0Q2hl
Y2tlciA9IExpdGVyYWxzT3V0cHV0Q2hlY2tlcgotICAgIHJldHVybiBfZ2V0X2NoZWNrZXIuTGl0
ZXJhbHNPdXRwdXRDaGVja2VyKCkKKyAgICAqIEFMTE9XX1VOSUNPREUgYW5kIEFMTE9XX0JZVEVT
IG9wdGlvbnMgdG8gaWdub3JlIHUnJyBhbmQgYicnCisgICAgICBwcmVmaXhlcyAocmVzcGVjdGl2
ZWx5KSBpbiBzdHJpbmcgbGl0ZXJhbHMuIFVzZWZ1bCB3aGVuIHRoZSBzYW1lCisgICAgICBkb2N0
ZXN0IHNob3VsZCBydW4gaW4gUHl0aG9uIDIgYW5kIFB5dGhvbiAzLgogCisgICAgKiBOVU1CRVIg
dG8gaWdub3JlIGZsb2F0aW5nLXBvaW50IGRpZmZlcmVuY2VzIHNtYWxsZXIgdGhhbiB0aGUKKyAg
ICAgIHByZWNpc2lvbiBvZiB0aGUgbGl0ZXJhbCBudW1iZXIgaW4gdGhlIGRvY3Rlc3QuCiAKLWRl
ZiBfZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpOgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQg
cmV0dXJucyB0aGUgQUxMT1dfVU5JQ09ERSBmbGFnLgorICAgIEFuIGlubmVyIGNsYXNzIGlzIHVz
ZWQgdG8gYXZvaWQgaW1wb3J0aW5nICJkb2N0ZXN0IiBhdCB0aGUgbW9kdWxlCisgICAgbGV2ZWwu
CiAgICAgIiIiCisgICAgZ2xvYmFsIENIRUNLRVJfQ0xBU1MKKyAgICBpZiBDSEVDS0VSX0NMQVNT
IGlzIE5vbmU6CisgICAgICAgIENIRUNLRVJfQ0xBU1MgPSBfaW5pdF9jaGVja2VyX2NsYXNzKCkK
KyAgICByZXR1cm4gQ0hFQ0tFUl9DTEFTUygpCisKKworZGVmIF9nZXRfYWxsb3dfdW5pY29kZV9m
bGFnKCkgLT4gaW50OgorICAgICIiIlJlZ2lzdGVyIGFuZCByZXR1cm4gdGhlIEFMTE9XX1VOSUNP
REUgZmxhZy4iIiIKICAgICBpbXBvcnQgZG9jdGVzdAogCiAgICAgcmV0dXJuIGRvY3Rlc3QucmVn
aXN0ZXJfb3B0aW9uZmxhZygiQUxMT1dfVU5JQ09ERSIpCiAKIAotZGVmIF9nZXRfYWxsb3dfYnl0
ZXNfZmxhZygpOgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0dXJucyB0aGUgQUxMT1df
QllURVMgZmxhZy4KLSAgICAiIiIKK2RlZiBfZ2V0X2FsbG93X2J5dGVzX2ZsYWcoKSAtPiBpbnQ6
CisgICAgIiIiUmVnaXN0ZXIgYW5kIHJldHVybiB0aGUgQUxMT1dfQllURVMgZmxhZy4iIiIKICAg
ICBpbXBvcnQgZG9jdGVzdAogCiAgICAgcmV0dXJuIGRvY3Rlc3QucmVnaXN0ZXJfb3B0aW9uZmxh
ZygiQUxMT1dfQllURVMiKQogCiAKLWRlZiBfZ2V0X3JlcG9ydF9jaG9pY2Uoa2V5KToKLSAgICAi
IiIKLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFjdHVhbCBgZG9jdGVzdGAgbW9kdWxl
IGZsYWcgdmFsdWUsIHdlIHdhbnQgdG8gZG8gaXQgYXMgbGF0ZSBhcyBwb3NzaWJsZSB0byBhdm9p
ZAotICAgIGltcG9ydGluZyBgZG9jdGVzdGAgYW5kIGFsbCBpdHMgZGVwZW5kZW5jaWVzIHdoZW4g
cGFyc2luZyBvcHRpb25zLCBhcyBpdCBhZGRzIG92ZXJoZWFkIGFuZCBicmVha3MgdGVzdHMuCitk
ZWYgX2dldF9udW1iZXJfZmxhZygpIC0+IGludDoKKyAgICAiIiJSZWdpc3RlciBhbmQgcmV0dXJu
IHRoZSBOVU1CRVIgZmxhZy4iIiIKKyAgICBpbXBvcnQgZG9jdGVzdAorCisgICAgcmV0dXJuIGRv
Y3Rlc3QucmVnaXN0ZXJfb3B0aW9uZmxhZygiTlVNQkVSIikKKworCitkZWYgX2dldF9yZXBvcnRf
Y2hvaWNlKGtleTogc3RyKSAtPiBpbnQ6CisgICAgIiIiUmV0dXJuIHRoZSBhY3R1YWwgYGRvY3Rl
c3RgIG1vZHVsZSBmbGFnIHZhbHVlLgorCisgICAgV2Ugd2FudCB0byBkbyBpdCBhcyBsYXRlIGFz
IHBvc3NpYmxlIHRvIGF2b2lkIGltcG9ydGluZyBgZG9jdGVzdGAgYW5kIGFsbAorICAgIGl0cyBk
ZXBlbmRlbmNpZXMgd2hlbiBwYXJzaW5nIG9wdGlvbnMsIGFzIGl0IGFkZHMgb3ZlcmhlYWQgYW5k
IGJyZWFrcyB0ZXN0cy4KICAgICAiIiIKICAgICBpbXBvcnQgZG9jdGVzdAogCkBAIC00ODAsNDEg
KzcxNCwxMSBAQCBkZWYgX2dldF9yZXBvcnRfY2hvaWNlKGtleSk6CiAgICAgICAgIERPQ1RFU1Rf
UkVQT1JUX0NIT0lDRV9ORElGRjogZG9jdGVzdC5SRVBPUlRfTkRJRkYsCiAgICAgICAgIERPQ1RF
U1RfUkVQT1JUX0NIT0lDRV9PTkxZX0ZJUlNUX0ZBSUxVUkU6IGRvY3Rlc3QuUkVQT1JUX09OTFlf
RklSU1RfRkFJTFVSRSwKICAgICAgICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX05PTkU6IDAsCi0g
ICAgfVsKLSAgICAgICAga2V5Ci0gICAgXQotCi0KLWRlZiBfZml4X3Nwb29mX3B5dGhvbjIocnVu
bmVyLCBlbmNvZGluZyk6Ci0gICAgIiIiCi0gICAgSW5zdGFsbHMgYSAiU3Bvb2ZPdXQiIGludG8g
dGhlIGdpdmVuIERlYnVnUnVubmVyIHNvIGl0IHByb3Blcmx5IGRlYWxzIHdpdGggdW5pY29kZSBv
dXRwdXQuIFRoaXMKLSAgICBzaG91bGQgcGF0Y2ggb25seSBkb2N0ZXN0cyBmb3IgdGV4dCBmaWxl
cyBiZWNhdXNlIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0byBkZWNsYXJlIHRoZWlyCi0gICAgZW5j
b2RpbmcuIERvY3Rlc3RzIGluIGRvY3N0cmluZ3MgZnJvbSBQeXRob24gbW9kdWxlcyBkb24ndCBo
YXZlIHRoZSBzYW1lIHByb2JsZW0gZ2l2ZW4gdGhhdAotICAgIFB5dGhvbiBhbHJlYWR5IGRlY29k
ZWQgdGhlIHN0cmluZ3MuCi0KLSAgICBUaGlzIGZpeGVzIHRoZSBwcm9ibGVtIHJlbGF0ZWQgaW4g
aXNzdWUgIzI0MzQuCi0gICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX1BZ
MgotCi0gICAgaWYgbm90IF9QWTI6Ci0gICAgICAgIHJldHVybgotCi0gICAgZnJvbSBkb2N0ZXN0
IGltcG9ydCBfU3Bvb2ZPdXQKLQotICAgIGNsYXNzIFVuaWNvZGVTcG9vZihfU3Bvb2ZPdXQpOgot
Ci0gICAgICAgIGRlZiBnZXR2YWx1ZShzZWxmKToKLSAgICAgICAgICAgIHJlc3VsdCA9IF9TcG9v
Zk91dC5nZXR2YWx1ZShzZWxmKQotICAgICAgICAgICAgaWYgZW5jb2RpbmcgYW5kIGlzaW5zdGFu
Y2UocmVzdWx0LCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRlY29k
ZShlbmNvZGluZykKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIHJ1bm5lci5fZmFr
ZW91dCA9IFVuaWNvZGVTcG9vZigpCisgICAgfVtrZXldCiAKIAogQHB5dGVzdC5maXh0dXJlKHNj
b3BlPSJzZXNzaW9uIikKLWRlZiBkb2N0ZXN0X25hbWVzcGFjZSgpOgotICAgICIiIgotICAgIEZp
eHR1cmUgdGhhdCByZXR1cm5zIGEgOnB5OmNsYXNzOmBkaWN0YCB0aGF0IHdpbGwgYmUgaW5qZWN0
ZWQgaW50byB0aGUgbmFtZXNwYWNlIG9mIGRvY3Rlc3RzLgotICAgICIiIgorZGVmIGRvY3Rlc3Rf
bmFtZXNwYWNlKCkgLT4gRGljdFtzdHIsIEFueV06CisgICAgIiIiRml4dHVyZSB0aGF0IHJldHVy
bnMgYSA6cHk6Y2xhc3M6YGRpY3RgIHRoYXQgd2lsbCBiZSBpbmplY3RlZCBpbnRvIHRoZQorICAg
IG5hbWVzcGFjZSBvZiBkb2N0ZXN0cy4iIiIKICAgICByZXR1cm4gZGljdCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9mYXVsdGhhbmRsZXIucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9mYXVsdGhhbmRsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kMGNjMDQzMGM0OTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9mYXVsdGhhbmRsZXIucHkKQEAgLTAsMCArMSwxMTEgQEAKK2ltcG9ydCBpbwor
aW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitmcm9t
IHR5cGluZyBpbXBvcnQgVGV4dElPCisKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25m
aWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGltcG9ydCBQ
YXJzZXIKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRlbQorZnJvbSBfcHl0ZXN0LnN0b3Jl
IGltcG9ydCBTdG9yZUtleQorCisKK2ZhdWx0X2hhbmRsZXJfc3RkZXJyX2tleSA9IFN0b3JlS2V5
W1RleHRJT10oKQorCisKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBO
b25lOgorICAgIGhlbHAgPSAoCisgICAgICAgICJEdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRo
cmVhZHMgaWYgYSB0ZXN0IHRha2VzICIKKyAgICAgICAgIm1vcmUgdGhhbiBUSU1FT1VUIHNlY29u
ZHMgdG8gZmluaXNoLiIKKyAgICApCisgICAgcGFyc2VyLmFkZGluaSgiZmF1bHRoYW5kbGVyX3Rp
bWVvdXQiLCBoZWxwLCBkZWZhdWx0PTAuMCkKKworCitkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisKKyAgICBpZiBu
b3QgZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKToKKyAgICAgICAgIyBmYXVsdGhoYW5kbGVyIGlz
IG5vdCBlbmFibGVkLCBzbyBpbnN0YWxsIHBsdWdpbiB0aGF0IGRvZXMgdGhlIGFjdHVhbCB3b3Jr
CisgICAgICAgICMgb2YgZW5hYmxpbmcgZmF1bHRoYW5kbGVyIGJlZm9yZSBlYWNoIHRlc3QgZXhl
Y3V0ZXMuCisgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKEZhdWx0SGFuZGxl
ckhvb2tzKCksICJmYXVsdGhhbmRsZXItaG9va3MiKQorICAgIGVsc2U6CisgICAgICAgICMgRG8g
bm90IGhhbmRsZSBkdW1waW5nIHRvIHN0ZGVyciBpZiBmYXVsdGhhbmRsZXIgaXMgYWxyZWFkeSBl
bmFibGVkLCBzbyB3YXJuCisgICAgICAgICMgdXNlcnMgdGhhdCB0aGUgb3B0aW9uIGlzIGJlaW5n
IGlnbm9yZWQuCisgICAgICAgIHRpbWVvdXQgPSBGYXVsdEhhbmRsZXJIb29rcy5nZXRfdGltZW91
dF9jb25maWdfdmFsdWUoY29uZmlnKQorICAgICAgICBpZiB0aW1lb3V0ID4gMDoKKyAgICAgICAg
ICAgIGNvbmZpZy5pc3N1ZV9jb25maWdfdGltZV93YXJuaW5nKAorICAgICAgICAgICAgICAgIHB5
dGVzdC5QeXRlc3RDb25maWdXYXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5k
bGVyIG1vZHVsZSBlbmFibGVkIGJlZm9yZSBweXRlc3QgY29uZmlndXJhdGlvbiBzdGVwLCAiCisg
ICAgICAgICAgICAgICAgICAgICInZmF1bHRoYW5kbGVyX3RpbWVvdXQnIG9wdGlvbiBpZ25vcmVk
IgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yLAorICAg
ICAgICAgICAgKQorCisKK2NsYXNzIEZhdWx0SGFuZGxlckhvb2tzOgorICAgICIiIkltcGxlbWVu
dHMgaG9va3MgdGhhdCB3aWxsIGFjdHVhbGx5IGluc3RhbGwgZmF1bHQgaGFuZGxlciBiZWZvcmUg
dGVzdHMgZXhlY3V0ZSwKKyAgICBhcyB3ZWxsIGFzIGNvcnJlY3RseSBoYW5kbGUgcGRiIGFuZCBp
bnRlcm5hbCBlcnJvcnMuIiIiCisKKyAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShzZWxmLCBjb25m
aWc6IENvbmZpZykgLT4gTm9uZToKKyAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorCisgICAg
ICAgIHN0ZGVycl9mZF9jb3B5ID0gb3MuZHVwKHNlbGYuX2dldF9zdGRlcnJfZmlsZW5vKCkpCisg
ICAgICAgIGNvbmZpZy5fc3RvcmVbZmF1bHRfaGFuZGxlcl9zdGRlcnJfa2V5XSA9IG9wZW4oc3Rk
ZXJyX2ZkX2NvcHksICJ3IikKKyAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZShmaWxlPWNvbmZp
Zy5fc3RvcmVbZmF1bHRfaGFuZGxlcl9zdGRlcnJfa2V5XSkKKworICAgIGRlZiBweXRlc3RfdW5j
b25maWd1cmUoc2VsZiwgY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CisgICAgICAgIGltcG9ydCBm
YXVsdGhhbmRsZXIKKworICAgICAgICBmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCisgICAgICAgICMg
Y2xvc2Ugb3VyIGR1cCBmaWxlIGluc3RhbGxlZCBkdXJpbmcgcHl0ZXN0X2NvbmZpZ3VyZQorICAg
ICAgICAjIHJlLWVuYWJsZSB0aGUgZmF1bHRoYW5kbGVyLCBhdHRhY2hpbmcgaXQgdG8gdGhlIGRl
ZmF1bHQgc3lzLnN0ZGVycgorICAgICAgICAjIHNvIHdlIGNhbiBzZWUgY3Jhc2hlcyBhZnRlciBw
eXRlc3QgaGFzIGZpbmlzaGVkLCB1c3VhbGx5IGR1cmluZworICAgICAgICAjIGdhcmJhZ2UgY29s
bGVjdGlvbiBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24KKyAgICAgICAgY29uZmlnLl9zdG9y
ZVtmYXVsdF9oYW5kbGVyX3N0ZGVycl9rZXldLmNsb3NlKCkKKyAgICAgICAgZGVsIGNvbmZpZy5f
c3RvcmVbZmF1bHRfaGFuZGxlcl9zdGRlcnJfa2V5XQorICAgICAgICBmYXVsdGhhbmRsZXIuZW5h
YmxlKGZpbGU9c2VsZi5fZ2V0X3N0ZGVycl9maWxlbm8oKSkKKworICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgX2dldF9zdGRlcnJfZmlsZW5vKCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHJldHVybiBzeXMuc3RkZXJyLmZpbGVubygpCisgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJy
b3IsIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKToKKyAgICAgICAgICAgICMgcHl0ZXN0LXhkaXN0
IG1vbmtleXBhdGNoZXMgc3lzLnN0ZGVyciB3aXRoIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhbiBh
Y3R1YWwgZmlsZS4KKyAgICAgICAgICAgICMgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJy
YXJ5L2ZhdWx0aGFuZGxlci5odG1sI2lzc3VlLXdpdGgtZmlsZS1kZXNjcmlwdG9ycworICAgICAg
ICAgICAgIyBUaGlzIGlzIHBvdGVudGlhbGx5IGRhbmdlcm91cywgYnV0IHRoZSBiZXN0IHdlIGNh
biBkby4KKyAgICAgICAgICAgIHJldHVybiBzeXMuX19zdGRlcnJfXy5maWxlbm8oKQorCisgICAg
QHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfdGltZW91dF9jb25maWdfdmFsdWUoY29uZmlnKToK
KyAgICAgICAgcmV0dXJuIGZsb2F0KGNvbmZpZy5nZXRpbmkoImZhdWx0aGFuZGxlcl90aW1lb3V0
Iikgb3IgMC4wKQorCisgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlLCB0cnls
YXN0PVRydWUpCisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKHNlbGYsIGl0ZW06IEl0
ZW0pIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgdGltZW91dCA9IHNl
bGYuZ2V0X3RpbWVvdXRfY29uZmlnX3ZhbHVlKGl0ZW0uY29uZmlnKQorICAgICAgICBzdGRlcnIg
PSBpdGVtLmNvbmZpZy5fc3RvcmVbZmF1bHRfaGFuZGxlcl9zdGRlcnJfa2V5XQorICAgICAgICBp
ZiB0aW1lb3V0ID4gMCBhbmQgc3RkZXJyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaW1wb3J0
IGZhdWx0aGFuZGxlcgorCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tf
bGF0ZXIodGltZW91dCwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgeWllbGQKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZmF1bHRo
YW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICB5aWVsZAorCisgICAgQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQorICAg
IGRlZiBweXRlc3RfZW50ZXJfcGRiKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIkNhbmNlbCBh
bnkgdHJhY2ViYWNrIGR1bXBpbmcgZHVlIHRvIHRpbWVvdXQgYmVmb3JlIGVudGVyaW5nIHBkYi4i
IiIKKyAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorCisgICAgICAgIGZhdWx0aGFuZGxlci5j
YW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCisgICAgQHB5dGVzdC5ob29raW1wbCh0cnlm
aXJzdD1UcnVlKQorICAgIGRlZiBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KHNlbGYpIC0+IE5v
bmU6CisgICAgICAgICIiIkNhbmNlbCBhbnkgdHJhY2ViYWNrIGR1bXBpbmcgZHVlIHRvIGFuIGlu
dGVyYWN0aXZlIGV4Y2VwdGlvbiBiZWluZworICAgICAgICByYWlzZWQuIiIiCisgICAgICAgIGlt
cG9ydCBmYXVsdGhhbmRsZXIKKworICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJh
Y2ViYWNrX2xhdGVyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZpeHR1
cmVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZml4dHVyZXMucHkKaW5kZXggNDk1ZTZi
OWIzMzJhLi5mNTI2ZjQ4NGIyOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L2ZpeHR1cmVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZpeHR1cmVzLnB5CkBA
IC0xLDUwICsxLDExNCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW5z
cGVjdAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKLWZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZXF1ZSwgZGVmYXVsdGRpY3QKLWZyb20gbW9yZV9p
dGVydG9vbHMgaW1wb3J0IGZsYXR0ZW4KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRk
aWN0Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBlcyBpbXBvcnQgVHJh
Y2ViYWNrVHlwZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IENh
bGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QK
K2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmlj
Citmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRv
cgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAor
ZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgU2V0Citmcm9t
IHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCitmcm9tIHR5
cGluZyBpbXBvcnQgVW5pb24KIAogaW1wb3J0IGF0dHIKIGltcG9ydCBweQotZnJvbSBweS5fY29k
ZS5jb2RlIGltcG9ydCBGb3JtYXR0ZWRFeGNpbmZvCiAKIGltcG9ydCBfcHl0ZXN0Ci1mcm9tIF9w
eXRlc3QgaW1wb3J0IG5vZGVzCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGdldGZzbGluZW5v
Citmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRm9ybWF0dGVkRXhjaW5mbwogZnJvbSBf
cHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgotZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgKAotICAgIE5PVFNFVCwKLSAgICBleGNfY2xlYXIsCi0gICAgX2Zvcm1hdF9hcmdz
LAotICAgIGdldGZzbGluZW5vLAotICAgIGdldF9yZWFsX2Z1bmMsCi0gICAgaXNfZ2VuZXJhdG9y
LAotICAgIGlzY2xhc3MsCi0gICAgZ2V0aW1mdW5jLAotICAgIGdldGxvY2F0aW9uLAotICAgIGdl
dGZ1bmNhcmduYW1lcywKLSAgICBzYWZlX2dldGF0dHIsCi0gICAgRnVuY2FyZ25hbWVzQ29tcGF0
QXR0ciwKLSkKLWZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbCwgVEVTVF9PVVRDT01F
Ci0KLUZJWFRVUkVfTVNHID0gJ2ZpeHR1cmVzIGNhbm5vdCBoYXZlICJweXRlc3RfZnVuY2FyZ19f
IiBwcmVmaXggYW5kIGJlIGRlY29yYXRlZCB3aXRoIEBweXRlc3QuZml4dHVyZTpcbnt9JworZnJv
bSBfcHl0ZXN0Ll9pbyBpbXBvcnQgVGVybWluYWxXcml0ZXIKK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IF9mb3JtYXRfYXJncworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX1B5dGVzdFdy
YXBwZXIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFsCitmcm9tIF9weXRlc3QuY29t
cGF0IGltcG9ydCBnZXRfcmVhbF9mdW5jCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBnZXRf
cmVhbF9tZXRob2QKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldGZ1bmNhcmduYW1lcwor
ZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZ2V0aW1mdW5jCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBnZXRsb2NhdGlvbgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgaXNfZ2VuZXJh
dG9yCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBOT1RTRVQKK2Zyb20gX3B5dGVzdC5jb21w
YXQgaW1wb3J0IG9yZGVyX3ByZXNlcnZpbmdfZGljdAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBv
cnQgb3ZlcmxvYWQKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IHNhZmVfZ2V0YXR0cgorZnJv
bSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZp
ZyBpbXBvcnQgX1BsdWdneVBsdWdpbgorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmln
Citmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0
ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IEZJTExGVU5DQVJHUworZnJvbSBfcHl0ZXN0Lm1hcmsgaW1w
b3J0IE1hcmsKK2Zyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBQYXJhbWV0ZXJTZXQKK2Zyb20gX3B5
dGVzdC5vdXRjb21lcyBpbXBvcnQgZmFpbAorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBU
RVNUX09VVENPTUUKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBhYnNvbHV0ZXBhdGgKKwor
aWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgRGVxdWUKKyAgICBmcm9t
IHR5cGluZyBpbXBvcnQgTm9SZXR1cm4KKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQorICAg
IGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwKKworICAgIGZyb20gX3B5dGVz
dCBpbXBvcnQgbm9kZXMKKyAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgorICAg
IGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IENhbGxTcGVjMgorICAgIGZyb20gX3B5dGVzdC5w
eXRob24gaW1wb3J0IEZ1bmN0aW9uCisgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgTWV0
YWZ1bmMKKworICAgIF9TY29wZSA9IExpdGVyYWxbInNlc3Npb24iLCAicGFja2FnZSIsICJtb2R1
bGUiLCAiY2xhc3MiLCAiZnVuY3Rpb24iXQorCisKKyMgVGhlIHZhbHVlIG9mIHRoZSBmaXh0dXJl
IC0tIHJldHVybi95aWVsZCBvZiB0aGUgZml4dHVyZSBmdW5jdGlvbiAodHlwZSB2YXJpYWJsZSku
CitfRml4dHVyZVZhbHVlID0gVHlwZVZhcigiX0ZpeHR1cmVWYWx1ZSIpCisjIFRoZSB0eXBlIG9m
IHRoZSBmaXh0dXJlIGZ1bmN0aW9uICh0eXBlIHZhcmlhYmxlKS4KK19GaXh0dXJlRnVuY3Rpb24g
PSBUeXBlVmFyKCJfRml4dHVyZUZ1bmN0aW9uIiwgYm91bmQ9Q2FsbGFibGVbLi4uLCBvYmplY3Rd
KQorIyBUaGUgdHlwZSBvZiBhIGZpeHR1cmUgZnVuY3Rpb24gKHR5cGUgYWxpYXMgZ2VuZXJpYyBp
biBmaXh0dXJlIHZhbHVlKS4KK19GaXh0dXJlRnVuYyA9IFVuaW9uWworICAgIENhbGxhYmxlWy4u
LiwgX0ZpeHR1cmVWYWx1ZV0sIENhbGxhYmxlWy4uLiwgR2VuZXJhdG9yW19GaXh0dXJlVmFsdWUs
IE5vbmUsIE5vbmVdXQorXQorIyBUaGUgdHlwZSBvZiBGaXh0dXJlRGVmLmNhY2hlZF9yZXN1bHQg
KHR5cGUgYWxpYXMgZ2VuZXJpYyBpbiBmaXh0dXJlIHZhbHVlKS4KK19GaXh0dXJlQ2FjaGVkUmVz
dWx0ID0gVW5pb25bCisgICAgVHVwbGVbCisgICAgICAgICMgVGhlIHJlc3VsdC4KKyAgICAgICAg
X0ZpeHR1cmVWYWx1ZSwKKyAgICAgICAgIyBDYWNoZSBrZXkuCisgICAgICAgIG9iamVjdCwKKyAg
ICAgICAgTm9uZSwKKyAgICBdLAorICAgIFR1cGxlWworICAgICAgICBOb25lLAorICAgICAgICAj
IENhY2hlIGtleS4KKyAgICAgICAgb2JqZWN0LAorICAgICAgICAjIEV4YyBpbmZvIGlmIHJhaXNl
ZC4KKyAgICAgICAgVHVwbGVbIlR5cGVbQmFzZUV4Y2VwdGlvbl0iLCBCYXNlRXhjZXB0aW9uLCBU
cmFjZWJhY2tUeXBlXSwKKyAgICBdLAorXQogCiAKIEBhdHRyLnMoZnJvemVuPVRydWUpCi1jbGFz
cyBQc2V1ZG9GaXh0dXJlRGVmKG9iamVjdCk6Ci0gICAgY2FjaGVkX3Jlc3VsdCA9IGF0dHIuaWIo
KQotICAgIHNjb3BlID0gYXR0ci5pYigpCitjbGFzcyBQc2V1ZG9GaXh0dXJlRGVmKEdlbmVyaWNb
X0ZpeHR1cmVWYWx1ZV0pOgorICAgIGNhY2hlZF9yZXN1bHQgPSBhdHRyLmliKHR5cGU9Il9GaXh0
dXJlQ2FjaGVkUmVzdWx0W19GaXh0dXJlVmFsdWVdIikKKyAgICBzY29wZSA9IGF0dHIuaWIodHlw
ZT0iX1Njb3BlIikKIAogCi1kZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKK2RlZiBw
eXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb246ICJTZXNzaW9uIikgLT4gTm9uZToKICAgICBpbXBv
cnQgX3B5dGVzdC5weXRob24KICAgICBpbXBvcnQgX3B5dGVzdC5ub2RlcwogCiAgICAgc2NvcGVu
YW1lMmNsYXNzLnVwZGF0ZSgKICAgICAgICAgeworICAgICAgICAgICAgInBhY2thZ2UiOiBfcHl0
ZXN0LnB5dGhvbi5QYWNrYWdlLAogICAgICAgICAgICAgImNsYXNzIjogX3B5dGVzdC5weXRob24u
Q2xhc3MsCiAgICAgICAgICAgICAibW9kdWxlIjogX3B5dGVzdC5weXRob24uTW9kdWxlLAogICAg
ICAgICAgICAgImZ1bmN0aW9uIjogX3B5dGVzdC5ub2Rlcy5JdGVtLApAQCAtNTQsMzEgKzExOCwy
MiBAQCBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKICAgICBzZXNzaW9uLl9maXh0
dXJlbWFuYWdlciA9IEZpeHR1cmVNYW5hZ2VyKHNlc3Npb24pCiAKIAotc2NvcGVuYW1lMmNsYXNz
ID0ge30KLQotCi1zY29wZTJwcm9wcyA9IGRpY3Qoc2Vzc2lvbj0oKSkKLXNjb3BlMnByb3BzWyJt
b2R1bGUiXSA9ICgiZnNwYXRoIiwgIm1vZHVsZSIpCi1zY29wZTJwcm9wc1siY2xhc3MiXSA9IHNj
b3BlMnByb3BzWyJtb2R1bGUiXSArICgiY2xzIiwpCi1zY29wZTJwcm9wc1siaW5zdGFuY2UiXSA9
IHNjb3BlMnByb3BzWyJjbGFzcyJdICsgKCJpbnN0YW5jZSIsKQotc2NvcGUycHJvcHNbImZ1bmN0
aW9uIl0gPSBzY29wZTJwcm9wc1siaW5zdGFuY2UiXSArICgiZnVuY3Rpb24iLCAia2V5d29yZHMi
KQotCi0KLWRlZiBzY29wZXByb3BlcnR5KG5hbWU9Tm9uZSwgZG9jPU5vbmUpOgorc2NvcGVuYW1l
MmNsYXNzID0ge30gICMgdHlwZTogRGljdFtzdHIsIFR5cGVbbm9kZXMuTm9kZV1dCiAKLSAgICBk
ZWYgZGVjb3JhdGVzY29wZShmdW5jKToKLSAgICAgICAgc2NvcGVuYW1lID0gbmFtZSBvciBmdW5j
Ll9fbmFtZV9fCiAKLSAgICAgICAgZGVmIHByb3ZpZGUoc2VsZik6Ci0gICAgICAgICAgICBpZiBm
dW5jLl9fbmFtZV9fIGluIHNjb3BlMnByb3BzW3NlbGYuc2NvcGVdOgotICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jKHNlbGYpCi0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKLSAg
ICAgICAgICAgICAgICAiJXMgbm90IGF2YWlsYWJsZSBpbiAlcy1zY29wZWQgY29udGV4dCIgJSAo
c2NvcGVuYW1lLCBzZWxmLnNjb3BlKQotICAgICAgICAgICAgKQotCi0gICAgICAgIHJldHVybiBw
cm9wZXJ0eShwcm92aWRlLCBOb25lLCBOb25lLCBmdW5jLl9fZG9jX18pCitkZWYgZ2V0X3Njb3Bl
X3BhY2thZ2Uobm9kZSwgZml4dHVyZWRlZjogIkZpeHR1cmVEZWZbb2JqZWN0XSIpOgorICAgIGlt
cG9ydCBweXRlc3QKIAotICAgIHJldHVybiBkZWNvcmF0ZXNjb3BlCisgICAgY2xzID0gcHl0ZXN0
LlBhY2thZ2UKKyAgICBjdXJyZW50ID0gbm9kZQorICAgIGZpeHR1cmVfcGFja2FnZV9uYW1lID0g
Int9L3t9Ii5mb3JtYXQoZml4dHVyZWRlZi5iYXNlaWQsICJfX2luaXRfXy5weSIpCisgICAgd2hp
bGUgY3VycmVudCBhbmQgKAorICAgICAgICB0eXBlKGN1cnJlbnQpIGlzIG5vdCBjbHMgb3IgZml4
dHVyZV9wYWNrYWdlX25hbWUgIT0gY3VycmVudC5ub2RlaWQKKyAgICApOgorICAgICAgICBjdXJy
ZW50ID0gY3VycmVudC5wYXJlbnQKKyAgICBpZiBjdXJyZW50IGlzIE5vbmU6CisgICAgICAgIHJl
dHVybiBub2RlLnNlc3Npb24KKyAgICByZXR1cm4gY3VycmVudAogCiAKIGRlZiBnZXRfc2NvcGVf
bm9kZShub2RlLCBzY29wZSk6CkBAIC04OCwxOCArMTQzLDIxIEBAIGRlZiBnZXRfc2NvcGVfbm9k
ZShub2RlLCBzY29wZSk6CiAgICAgcmV0dXJuIG5vZGUuZ2V0cGFyZW50KGNscykKIAogCi1kZWYg
YWRkX2Z1bmNhcmdfcHNldWRvX2ZpeHR1cmVfZGVmKGNvbGxlY3RvciwgbWV0YWZ1bmMsIGZpeHR1
cmVtYW5hZ2VyKToKLSAgICAjIHRoaXMgZnVuY3Rpb24gd2lsbCB0cmFuc2Zvcm0gYWxsIGNvbGxl
Y3RlZCBjYWxscyB0byBhIGZ1bmN0aW9ucworZGVmIGFkZF9mdW5jYXJnX3BzZXVkb19maXh0dXJl
X2RlZigKKyAgICBjb2xsZWN0b3IsIG1ldGFmdW5jOiAiTWV0YWZ1bmMiLCBmaXh0dXJlbWFuYWdl
cjogIkZpeHR1cmVNYW5hZ2VyIgorKSAtPiBOb25lOgorICAgICMgVGhpcyBmdW5jdGlvbiB3aWxs
IHRyYW5zZm9ybSBhbGwgY29sbGVjdGVkIGNhbGxzIHRvIGZ1bmN0aW9ucwogICAgICMgaWYgdGhl
eSB1c2UgZGlyZWN0IGZ1bmNhcmdzIChpLmUuIGRpcmVjdCBwYXJhbWV0cml6YXRpb24pCiAgICAg
IyBiZWNhdXNlIHdlIHdhbnQgbGF0ZXIgdGVzdCBleGVjdXRpb24gdG8gYmUgYWJsZSB0byByZWx5
IG9uCiAgICAgIyBhbiBleGlzdGluZyBGaXh0dXJlRGVmIHN0cnVjdHVyZSBmb3IgYWxsIGFyZ3Vt
ZW50cy4KICAgICAjIFhYWCB3ZSBjYW4gcHJvYmFibHkgYXZvaWQgdGhpcyBhbGdvcml0aG0gIGlm
IHdlIG1vZGlmeSBDYWxsU3BlYzIKICAgICAjIHRvIGRpcmVjdGx5IGNhcmUgZm9yIGNyZWF0aW5n
IHRoZSBmaXh0dXJlZGVmcyB3aXRoaW4gaXRzIG1ldGhvZHMuCiAgICAgaWYgbm90IG1ldGFmdW5j
Ll9jYWxsc1swXS5mdW5jYXJnczoKLSAgICAgICAgcmV0dXJuICAjIHRoaXMgZnVuY3Rpb24gY2Fs
bCBkb2VzIG5vdCBoYXZlIGRpcmVjdCBwYXJhbWV0cml6YXRpb24KLSAgICAjIGNvbGxlY3QgZnVu
Y2FyZ3Mgb2YgYWxsIGNhbGxzcGVjcyBpbnRvIGEgbGlzdCBvZiB2YWx1ZXMKLSAgICBhcmcycGFy
YW1zID0ge30KLSAgICBhcmcyc2NvcGUgPSB7fQorICAgICAgICAjIFRoaXMgZnVuY3Rpb24gY2Fs
bCBkb2VzIG5vdCBoYXZlIGRpcmVjdCBwYXJhbWV0cml6YXRpb24uCisgICAgICAgIHJldHVybgor
ICAgICMgQ29sbGVjdCBmdW5jYXJncyBvZiBhbGwgY2FsbHNwZWNzIGludG8gYSBsaXN0IG9mIHZh
bHVlcy4KKyAgICBhcmcycGFyYW1zID0ge30gICMgdHlwZTogRGljdFtzdHIsIExpc3Rbb2JqZWN0
XV0KKyAgICBhcmcyc2NvcGUgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgX1Njb3BlXQogICAgIGZv
ciBjYWxsc3BlYyBpbiBtZXRhZnVuYy5fY2FsbHM6CiAgICAgICAgIGZvciBhcmduYW1lLCBhcmd2
YWx1ZSBpbiBjYWxsc3BlYy5mdW5jYXJncy5pdGVtcygpOgogICAgICAgICAgICAgYXNzZXJ0IGFy
Z25hbWUgbm90IGluIGNhbGxzcGVjLnBhcmFtcwpAQCAtMTEyLDExICsxNzAsMTEgQEAgZGVmIGFk
ZF9mdW5jYXJnX3BzZXVkb19maXh0dXJlX2RlZihjb2xsZWN0b3IsIG1ldGFmdW5jLCBmaXh0dXJl
bWFuYWdlcik6CiAgICAgICAgICAgICAgICAgYXJnMnNjb3BlW2FyZ25hbWVdID0gc2NvcGVzW3Nj
b3BlbnVtXQogICAgICAgICBjYWxsc3BlYy5mdW5jYXJncy5jbGVhcigpCiAKLSAgICAjIHJlZ2lz
dGVyIGFydGlmaWNpYWwgRml4dHVyZURlZidzIHNvIHRoYXQgbGF0ZXIgYXQgdGVzdCBleGVjdXRp
b24KKyAgICAjIFJlZ2lzdGVyIGFydGlmaWNpYWwgRml4dHVyZURlZidzIHNvIHRoYXQgbGF0ZXIg
YXQgdGVzdCBleGVjdXRpb24KICAgICAjIHRpbWUgd2UgY2FuIHJlbHkgb24gYSBwcm9wZXIgRml4
dHVyZURlZiB0byBleGlzdCBmb3IgZml4dHVyZSBzZXR1cC4KICAgICBhcmcyZml4dHVyZWRlZnMg
PSBtZXRhZnVuYy5fYXJnMmZpeHR1cmVkZWZzCiAgICAgZm9yIGFyZ25hbWUsIHZhbHVlbGlzdCBp
biBhcmcycGFyYW1zLml0ZW1zKCk6Ci0gICAgICAgICMgaWYgd2UgaGF2ZSBhIHNjb3BlIHRoYXQg
aXMgaGlnaGVyIHRoYW4gZnVuY3Rpb24gd2UgbmVlZAorICAgICAgICAjIElmIHdlIGhhdmUgYSBz
Y29wZSB0aGF0IGlzIGhpZ2hlciB0aGFuIGZ1bmN0aW9uLCB3ZSBuZWVkCiAgICAgICAgICMgdG8g
bWFrZSBzdXJlIHdlIG9ubHkgZXZlciBjcmVhdGUgYW4gYWNjb3JkaW5nIGZpeHR1cmVkZWYgb24K
ICAgICAgICAgIyBhIHBlci1zY29wZSBiYXNpcy4gV2UgdGh1cyBzdG9yZSBhbmQgY2FjaGUgdGhl
IGZpeHR1cmVkZWYgb24gdGhlCiAgICAgICAgICMgbm9kZSByZWxhdGVkIHRvIHRoZSBzY29wZS4K
QEAgLTEyNiw0NiArMTg0LDU0IEBAIGRlZiBhZGRfZnVuY2FyZ19wc2V1ZG9fZml4dHVyZV9kZWYo
Y29sbGVjdG9yLCBtZXRhZnVuYywgZml4dHVyZW1hbmFnZXIpOgogICAgICAgICAgICAgbm9kZSA9
IGdldF9zY29wZV9ub2RlKGNvbGxlY3Rvciwgc2NvcGUpCiAgICAgICAgICAgICBpZiBub2RlIGlz
IE5vbmU6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNjb3BlID09ICJjbGFzcyIgYW5kIGlzaW5z
dGFuY2UoY29sbGVjdG9yLCBfcHl0ZXN0LnB5dGhvbi5Nb2R1bGUpCi0gICAgICAgICAgICAgICAg
IyB1c2UgbW9kdWxlLWxldmVsIGNvbGxlY3RvciBmb3IgY2xhc3Mtc2NvcGUgKGZvciBub3cpCisg
ICAgICAgICAgICAgICAgIyBVc2UgbW9kdWxlLWxldmVsIGNvbGxlY3RvciBmb3IgY2xhc3Mtc2Nv
cGUgKGZvciBub3cpLgogICAgICAgICAgICAgICAgIG5vZGUgPSBjb2xsZWN0b3IKICAgICAgICAg
aWYgbm9kZSBhbmQgYXJnbmFtZSBpbiBub2RlLl9uYW1lMnBzZXVkb2ZpeHR1cmVkZWY6CiAgICAg
ICAgICAgICBhcmcyZml4dHVyZWRlZnNbYXJnbmFtZV0gPSBbbm9kZS5fbmFtZTJwc2V1ZG9maXh0
dXJlZGVmW2FyZ25hbWVdXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZml4dHVyZWRlZiA9
IEZpeHR1cmVEZWYoCi0gICAgICAgICAgICAgICAgZml4dHVyZW1hbmFnZXIsCi0gICAgICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICAgICAgYXJnbmFtZSwKLSAgICAgICAgICAgICAgICBnZXRf
ZGlyZWN0X3BhcmFtX2ZpeHR1cmVfZnVuYywKLSAgICAgICAgICAgICAgICBhcmcyc2NvcGVbYXJn
bmFtZV0sCi0gICAgICAgICAgICAgICAgdmFsdWVsaXN0LAotICAgICAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAgICAgICAgIGZpeHR1cmVtYW5hZ2Vy
PWZpeHR1cmVtYW5hZ2VyLAorICAgICAgICAgICAgICAgIGJhc2VpZD0iIiwKKyAgICAgICAgICAg
ICAgICBhcmduYW1lPWFyZ25hbWUsCisgICAgICAgICAgICAgICAgZnVuYz1nZXRfZGlyZWN0X3Bh
cmFtX2ZpeHR1cmVfZnVuYywKKyAgICAgICAgICAgICAgICBzY29wZT1hcmcyc2NvcGVbYXJnbmFt
ZV0sCisgICAgICAgICAgICAgICAgcGFyYW1zPXZhbHVlbGlzdCwKKyAgICAgICAgICAgICAgICB1
bml0dGVzdD1GYWxzZSwKKyAgICAgICAgICAgICAgICBpZHM9Tm9uZSwKICAgICAgICAgICAgICkK
ICAgICAgICAgICAgIGFyZzJmaXh0dXJlZGVmc1thcmduYW1lXSA9IFtmaXh0dXJlZGVmXQogICAg
ICAgICAgICAgaWYgbm9kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBub2RlLl9uYW1l
MnBzZXVkb2ZpeHR1cmVkZWZbYXJnbmFtZV0gPSBmaXh0dXJlZGVmCiAKIAotZGVmIGdldGZpeHR1
cmVtYXJrZXIob2JqKToKLSAgICAiIiIgcmV0dXJuIGZpeHR1cmVtYXJrZXIgb3IgTm9uZSBpZiBp
dCBkb2Vzbid0IGV4aXN0IG9yIHJhaXNlZAorZGVmIGdldGZpeHR1cmVtYXJrZXIob2JqOiBvYmpl
Y3QpIC0+IE9wdGlvbmFsWyJGaXh0dXJlRnVuY3Rpb25NYXJrZXIiXToKKyAgICAiIiJSZXR1cm4g
Zml4dHVyZW1hcmtlciBvciBOb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb3IgcmFpc2VkCiAgICAg
ZXhjZXB0aW9ucy4iIiIKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgIl9w
eXRlc3RmaXh0dXJlZnVuY3Rpb24iLCBOb25lKQorICAgICAgICBmaXh0dXJlbWFya2VyID0gZ2V0
YXR0cigKKyAgICAgICAgICAgIG9iaiwgIl9weXRlc3RmaXh0dXJlZnVuY3Rpb24iLCBOb25lCisg
ICAgICAgICkgICMgdHlwZTogT3B0aW9uYWxbRml4dHVyZUZ1bmN0aW9uTWFya2VyXQogICAgIGV4
Y2VwdCBURVNUX09VVENPTUU6CiAgICAgICAgICMgc29tZSBvYmplY3RzIHJhaXNlIGVycm9ycyBs
aWtlIHJlcXVlc3QgKGZyb20gZmxhc2sgaW1wb3J0IHJlcXVlc3QpCiAgICAgICAgICMgd2UgZG9u
J3QgZXhwZWN0IHRoZW0gdG8gYmUgZml4dHVyZSBmdW5jdGlvbnMKICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICByZXR1cm4gZml4dHVyZW1hcmtlcgogCiAKLWRlZiBnZXRfcGFyYW1ldHJpemVkX2Zp
eHR1cmVfa2V5cyhpdGVtLCBzY29wZW51bSk6Ci0gICAgIiIiIHJldHVybiBsaXN0IG9mIGtleXMg
Zm9yIGFsbCBwYXJhbWV0cml6ZWQgYXJndW1lbnRzIHdoaWNoIG1hdGNoCisjIFBhcmFtZXRyaXpl
ZCBmaXh0dXJlIGtleSwgaGVscGVyIGFsaWFzIGZvciBjb2RlIGJlbG93LgorX0tleSA9IFR1cGxl
W29iamVjdCwgLi4uXQorCisKK2RlZiBnZXRfcGFyYW1ldHJpemVkX2ZpeHR1cmVfa2V5cyhpdGVt
OiAibm9kZXMuSXRlbSIsIHNjb3BlbnVtOiBpbnQpIC0+IEl0ZXJhdG9yW19LZXldOgorICAgICIi
IlJldHVybiBsaXN0IG9mIGtleXMgZm9yIGFsbCBwYXJhbWV0cml6ZWQgYXJndW1lbnRzIHdoaWNo
IG1hdGNoCiAgICAgdGhlIHNwZWNpZmllZCBzY29wZS4gIiIiCiAgICAgYXNzZXJ0IHNjb3BlbnVt
IDwgc2NvcGVudW1fZnVuY3Rpb24gICMgZnVuY3Rpb24KICAgICB0cnk6Ci0gICAgICAgIGNzID0g
aXRlbS5jYWxsc3BlYworICAgICAgICBjYWxsc3BlYyA9IGl0ZW0uY2FsbHNwZWMgICMgdHlwZTog
aWdub3JlW2F0dHItZGVmaW5lZF0KICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAg
IHBhc3MKICAgICBlbHNlOgorICAgICAgICBjcyA9IGNhbGxzcGVjICAjIHR5cGU6IENhbGxTcGVj
MgogICAgICAgICAjIGNzLmluZGljZXMuaXRlbXMoKSBpcyByYW5kb20gb3JkZXIgb2YgYXJnbmFt
ZXMuICBOZWVkIHRvCiAgICAgICAgICMgc29ydCB0aGlzIHNvIHRoYXQgZGlmZmVyZW50IGNhbGxz
IHRvCiAgICAgICAgICMgZ2V0X3BhcmFtZXRyaXplZF9maXh0dXJlX2tleXMgd2lsbCBiZSBkZXRl
cm1pbmlzdGljLgpAQCAtMTczLDY1ICsyMzksODkgQEAgZGVmIGdldF9wYXJhbWV0cml6ZWRfZml4
dHVyZV9rZXlzKGl0ZW0sIHNjb3BlbnVtKToKICAgICAgICAgICAgIGlmIGNzLl9hcmcyc2NvcGVu
dW1bYXJnbmFtZV0gIT0gc2NvcGVudW06CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAg
ICAgICAgIGlmIHNjb3BlbnVtID09IDA6ICAjIHNlc3Npb24KLSAgICAgICAgICAgICAgICBrZXkg
PSAoYXJnbmFtZSwgcGFyYW1faW5kZXgpCi0gICAgICAgICAgICBlbGlmIHNjb3BlbnVtID09IDE6
ICAjIG1vZHVsZQorICAgICAgICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRleCkg
ICMgdHlwZTogX0tleQorICAgICAgICAgICAgZWxpZiBzY29wZW51bSA9PSAxOiAgIyBwYWNrYWdl
CisgICAgICAgICAgICAgICAga2V5ID0gKGFyZ25hbWUsIHBhcmFtX2luZGV4LCBpdGVtLmZzcGF0
aC5kaXJwYXRoKCkpCisgICAgICAgICAgICBlbGlmIHNjb3BlbnVtID09IDI6ICAjIG1vZHVsZQog
ICAgICAgICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRleCwgaXRlbS5mc3BhdGgp
Ci0gICAgICAgICAgICBlbGlmIHNjb3BlbnVtID09IDI6ICAjIGNsYXNzCi0gICAgICAgICAgICAg
ICAga2V5ID0gKGFyZ25hbWUsIHBhcmFtX2luZGV4LCBpdGVtLmZzcGF0aCwgaXRlbS5jbHMpCisg
ICAgICAgICAgICBlbGlmIHNjb3BlbnVtID09IDM6ICAjIGNsYXNzCisgICAgICAgICAgICAgICAg
aXRlbV9jbHMgPSBpdGVtLmNscyAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAg
ICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRleCwgaXRlbS5mc3BhdGgsIGl0ZW1f
Y2xzKQogICAgICAgICAgICAgeWllbGQga2V5CiAKIAotIyBhbGdvcml0aG0gZm9yIHNvcnRpbmcg
b24gYSBwZXItcGFyYW1ldHJpemVkIHJlc291cmNlIHNldHVwIGJhc2lzCi0jIGl0IGlzIGNhbGxl
ZCBmb3Igc2NvcGVudW09PTAgKHNlc3Npb24pIGZpcnN0IGFuZCBwZXJmb3JtcyBzb3J0aW5nCisj
IEFsZ29yaXRobSBmb3Igc29ydGluZyBvbiBhIHBlci1wYXJhbWV0cml6ZWQgcmVzb3VyY2Ugc2V0
dXAgYmFzaXMuCisjIEl0IGlzIGNhbGxlZCBmb3Igc2NvcGVudW09PTAgKHNlc3Npb24pIGZpcnN0
IGFuZCBwZXJmb3JtcyBzb3J0aW5nCiAjIGRvd24gdG8gdGhlIGxvd2VyIHNjb3BlcyBzdWNoIGFz
IHRvIG1pbmltaXplIG51bWJlciBvZiAiaGlnaCBzY29wZSIKLSMgc2V0dXBzIGFuZCB0ZWFyZG93
bnMKKyMgc2V0dXBzIGFuZCB0ZWFyZG93bnMuCiAKIAotZGVmIHJlb3JkZXJfaXRlbXMoaXRlbXMp
OgotICAgIGFyZ2tleXNfY2FjaGUgPSB7fQotICAgIGl0ZW1zX2J5X2FyZ2tleSA9IHt9CitkZWYg
cmVvcmRlcl9pdGVtcyhpdGVtczogIlNlcXVlbmNlW25vZGVzLkl0ZW1dIikgLT4gIkxpc3Rbbm9k
ZXMuSXRlbV0iOgorICAgIGFyZ2tleXNfY2FjaGUgPSB7fSAgIyB0eXBlOiBEaWN0W2ludCwgRGlj
dFtub2Rlcy5JdGVtLCBEaWN0W19LZXksIE5vbmVdXV0KKyAgICBpdGVtc19ieV9hcmdrZXkgPSB7
fSAgIyB0eXBlOiBEaWN0W2ludCwgRGljdFtfS2V5LCBEZXF1ZVtub2Rlcy5JdGVtXV1dCiAgICAg
Zm9yIHNjb3BlbnVtIGluIHJhbmdlKDAsIHNjb3BlbnVtX2Z1bmN0aW9uKToKLSAgICAgICAgYXJn
a2V5c19jYWNoZVtzY29wZW51bV0gPSBkID0ge30KLSAgICAgICAgaXRlbXNfYnlfYXJna2V5W3Nj
b3BlbnVtXSA9IGl0ZW1fZCA9IGRlZmF1bHRkaWN0KGRlcXVlKQorICAgICAgICBkID0ge30gICMg
dHlwZTogRGljdFtub2Rlcy5JdGVtLCBEaWN0W19LZXksIE5vbmVdXQorICAgICAgICBhcmdrZXlz
X2NhY2hlW3Njb3BlbnVtXSA9IGQKKyAgICAgICAgaXRlbV9kID0gZGVmYXVsdGRpY3QoZGVxdWUp
ICAjIHR5cGU6IERpY3RbX0tleSwgRGVxdWVbbm9kZXMuSXRlbV1dCisgICAgICAgIGl0ZW1zX2J5
X2FyZ2tleVtzY29wZW51bV0gPSBpdGVtX2QKICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0g
ICAgICAgICAgICBrZXlzID0gT3JkZXJlZERpY3QuZnJvbWtleXMoZ2V0X3BhcmFtZXRyaXplZF9m
aXh0dXJlX2tleXMoaXRlbSwgc2NvcGVudW0pKQorICAgICAgICAgICAgIyBjYXN0IGlzIGEgd29y
a2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBlc2hlZC9pc3N1ZXMvMzgw
MC4KKyAgICAgICAgICAgIGtleXMgPSBjYXN0KAorICAgICAgICAgICAgICAgICJEaWN0W19LZXks
IE5vbmVdIiwKKyAgICAgICAgICAgICAgICBvcmRlcl9wcmVzZXJ2aW5nX2RpY3QuZnJvbWtleXMo
CisgICAgICAgICAgICAgICAgICAgIGdldF9wYXJhbWV0cml6ZWRfZml4dHVyZV9rZXlzKGl0ZW0s
IHNjb3BlbnVtKSwgTm9uZQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCiAgICAg
ICAgICAgICBpZiBrZXlzOgogICAgICAgICAgICAgICAgIGRbaXRlbV0gPSBrZXlzCiAgICAgICAg
ICAgICAgICAgZm9yIGtleSBpbiBrZXlzOgogICAgICAgICAgICAgICAgICAgICBpdGVtX2Rba2V5
XS5hcHBlbmQoaXRlbSkKLSAgICBpdGVtcyA9IE9yZGVyZWREaWN0LmZyb21rZXlzKGl0ZW1zKQot
ICAgIHJldHVybiBsaXN0KHJlb3JkZXJfaXRlbXNfYXRzY29wZShpdGVtcywgYXJna2V5c19jYWNo
ZSwgaXRlbXNfYnlfYXJna2V5LCAwKSkKKyAgICAjIGNhc3QgaXMgYSB3b3JrYXJvdW5kIGZvciBo
dHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGVzaGVkL2lzc3Vlcy8zODAwLgorICAgIGl0ZW1z
X2RpY3QgPSBjYXN0KAorICAgICAgICAiRGljdFtub2Rlcy5JdGVtLCBOb25lXSIsIG9yZGVyX3By
ZXNlcnZpbmdfZGljdC5mcm9ta2V5cyhpdGVtcywgTm9uZSkKKyAgICApCisgICAgcmV0dXJuIGxp
c3QocmVvcmRlcl9pdGVtc19hdHNjb3BlKGl0ZW1zX2RpY3QsIGFyZ2tleXNfY2FjaGUsIGl0ZW1z
X2J5X2FyZ2tleSwgMCkpCiAKIAotZGVmIGZpeF9jYWNoZV9vcmRlcihpdGVtLCBhcmdrZXlzX2Nh
Y2hlLCBpdGVtc19ieV9hcmdrZXkpOgorZGVmIGZpeF9jYWNoZV9vcmRlcigKKyAgICBpdGVtOiAi
bm9kZXMuSXRlbSIsCisgICAgYXJna2V5c19jYWNoZTogIkRpY3RbaW50LCBEaWN0W25vZGVzLkl0
ZW0sIERpY3RbX0tleSwgTm9uZV1dXSIsCisgICAgaXRlbXNfYnlfYXJna2V5OiAiRGljdFtpbnQs
IERpY3RbX0tleSwgRGVxdWVbbm9kZXMuSXRlbV1dXSIsCispIC0+IE5vbmU6CiAgICAgZm9yIHNj
b3BlbnVtIGluIHJhbmdlKDAsIHNjb3BlbnVtX2Z1bmN0aW9uKToKICAgICAgICAgZm9yIGtleSBp
biBhcmdrZXlzX2NhY2hlW3Njb3BlbnVtXS5nZXQoaXRlbSwgW10pOgogICAgICAgICAgICAgaXRl
bXNfYnlfYXJna2V5W3Njb3BlbnVtXVtrZXldLmFwcGVuZGxlZnQoaXRlbSkKIAogCi1kZWYgcmVv
cmRlcl9pdGVtc19hdHNjb3BlKGl0ZW1zLCBhcmdrZXlzX2NhY2hlLCBpdGVtc19ieV9hcmdrZXks
IHNjb3BlbnVtKToKK2RlZiByZW9yZGVyX2l0ZW1zX2F0c2NvcGUoCisgICAgaXRlbXM6ICJEaWN0
W25vZGVzLkl0ZW0sIE5vbmVdIiwKKyAgICBhcmdrZXlzX2NhY2hlOiAiRGljdFtpbnQsIERpY3Rb
bm9kZXMuSXRlbSwgRGljdFtfS2V5LCBOb25lXV1dIiwKKyAgICBpdGVtc19ieV9hcmdrZXk6ICJE
aWN0W2ludCwgRGljdFtfS2V5LCBEZXF1ZVtub2Rlcy5JdGVtXV1dIiwKKyAgICBzY29wZW51bTog
aW50LAorKSAtPiAiRGljdFtub2Rlcy5JdGVtLCBOb25lXSI6CiAgICAgaWYgc2NvcGVudW0gPj0g
c2NvcGVudW1fZnVuY3Rpb24gb3IgbGVuKGl0ZW1zKSA8IDM6CiAgICAgICAgIHJldHVybiBpdGVt
cwotICAgIGlnbm9yZSA9IHNldCgpCisgICAgaWdub3JlID0gc2V0KCkgICMgdHlwZTogU2V0W09w
dGlvbmFsW19LZXldXQogICAgIGl0ZW1zX2RlcXVlID0gZGVxdWUoaXRlbXMpCi0gICAgaXRlbXNf
ZG9uZSA9IE9yZGVyZWREaWN0KCkKKyAgICBpdGVtc19kb25lID0gb3JkZXJfcHJlc2VydmluZ19k
aWN0KCkgICMgdHlwZTogRGljdFtub2Rlcy5JdGVtLCBOb25lXQogICAgIHNjb3BlZF9pdGVtc19i
eV9hcmdrZXkgPSBpdGVtc19ieV9hcmdrZXlbc2NvcGVudW1dCiAgICAgc2NvcGVkX2FyZ2tleXNf
Y2FjaGUgPSBhcmdrZXlzX2NhY2hlW3Njb3BlbnVtXQogICAgIHdoaWxlIGl0ZW1zX2RlcXVlOgot
ICAgICAgICBub19hcmdrZXlfZ3JvdXAgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIG5vX2FyZ2tl
eV9ncm91cCA9IG9yZGVyX3ByZXNlcnZpbmdfZGljdCgpICAjIHR5cGU6IERpY3Rbbm9kZXMuSXRl
bSwgTm9uZV0KICAgICAgICAgc2xpY2luZ19hcmdrZXkgPSBOb25lCiAgICAgICAgIHdoaWxlIGl0
ZW1zX2RlcXVlOgogICAgICAgICAgICAgaXRlbSA9IGl0ZW1zX2RlcXVlLnBvcGxlZnQoKQogICAg
ICAgICAgICAgaWYgaXRlbSBpbiBpdGVtc19kb25lIG9yIGl0ZW0gaW4gbm9fYXJna2V5X2dyb3Vw
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBhcmdrZXlzID0gT3JkZXJl
ZERpY3QuZnJvbWtleXMoCi0gICAgICAgICAgICAgICAgayBmb3IgayBpbiBzY29wZWRfYXJna2V5
c19jYWNoZS5nZXQoaXRlbSwgW10pIGlmIGsgbm90IGluIGlnbm9yZQorICAgICAgICAgICAgYXJn
a2V5cyA9IG9yZGVyX3ByZXNlcnZpbmdfZGljdC5mcm9ta2V5cygKKyAgICAgICAgICAgICAgICAo
ayBmb3IgayBpbiBzY29wZWRfYXJna2V5c19jYWNoZS5nZXQoaXRlbSwgW10pIGlmIGsgbm90IGlu
IGlnbm9yZSksIE5vbmUKICAgICAgICAgICAgICkKICAgICAgICAgICAgIGlmIG5vdCBhcmdrZXlz
OgogICAgICAgICAgICAgICAgIG5vX2FyZ2tleV9ncm91cFtpdGVtXSA9IE5vbmUKICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2xpY2luZ19hcmdrZXksIF8gPSBhcmdrZXlzLnBv
cGl0ZW0oKQotICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSB0byByZW1vdmUgcmVsZXZh
bnQgaXRlbXMgZnJvbSBsYXRlciBpbiB0aGUgZGVxdWUgYmVjYXVzZSB0aGV5J2xsIGp1c3QgYmUg
aWdub3JlZAorICAgICAgICAgICAgICAgICMgV2UgZG9uJ3QgaGF2ZSB0byByZW1vdmUgcmVsZXZh
bnQgaXRlbXMgZnJvbSBsYXRlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAjIGRlcXVlIGJlY2F1
c2UgdGhleSdsbCBqdXN0IGJlIGlnbm9yZWQuCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfaXRl
bXMgPSBbCiAgICAgICAgICAgICAgICAgICAgIGkgZm9yIGkgaW4gc2NvcGVkX2l0ZW1zX2J5X2Fy
Z2tleVtzbGljaW5nX2FyZ2tleV0gaWYgaSBpbiBpdGVtcwogICAgICAgICAgICAgICAgIF0KQEAg
LTI0OSw4ICszMzksOSBAQCBkZWYgcmVvcmRlcl9pdGVtc19hdHNjb3BlKGl0ZW1zLCBhcmdrZXlz
X2NhY2hlLCBpdGVtc19ieV9hcmdrZXksIHNjb3BlbnVtKToKICAgICByZXR1cm4gaXRlbXNfZG9u
ZQogCiAKLWRlZiBmaWxsZml4dHVyZXMoZnVuY3Rpb24pOgotICAgICIiIiBmaWxsIG1pc3Npbmcg
ZnVuY2FyZ3MgZm9yIGEgdGVzdCBmdW5jdGlvbi4gIiIiCitkZWYgZmlsbGZpeHR1cmVzKGZ1bmN0
aW9uOiAiRnVuY3Rpb24iKSAtPiBOb25lOgorICAgICIiIkZpbGwgbWlzc2luZyBmdW5jYXJncyBm
b3IgYSB0ZXN0IGZ1bmN0aW9uLiIiIgorICAgIHdhcm5pbmdzLndhcm4oRklMTEZVTkNBUkdTLCBz
dGFja2xldmVsPTIpCiAgICAgdHJ5OgogICAgICAgICByZXF1ZXN0ID0gZnVuY3Rpb24uX3JlcXVl
c3QKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CkBAIC0yNTgsMTEgKzM0OSwxMiBAQCBkZWYg
ZmlsbGZpeHR1cmVzKGZ1bmN0aW9uKToKICAgICAgICAgIyB3aXRoIHRoZSBvZWpza2l0IHBsdWdp
bi4gIEl0IHVzZXMgY2xhc3NlcyB3aXRoIGZ1bmNhcmdzCiAgICAgICAgICMgYW5kIHdlIHRodXMg
aGF2ZSB0byB3b3JrIGEgYml0IHRvIGFsbG93IHRoaXMuCiAgICAgICAgIGZtID0gZnVuY3Rpb24u
c2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKKyAgICAgICAgYXNzZXJ0IGZ1bmN0aW9uLnBhcmVudCBp
cyBub3QgTm9uZQogICAgICAgICBmaSA9IGZtLmdldGZpeHR1cmVpbmZvKGZ1bmN0aW9uLnBhcmVu
dCwgZnVuY3Rpb24ub2JqLCBOb25lKQogICAgICAgICBmdW5jdGlvbi5fZml4dHVyZWluZm8gPSBm
aQogICAgICAgICByZXF1ZXN0ID0gZnVuY3Rpb24uX3JlcXVlc3QgPSBGaXh0dXJlUmVxdWVzdChm
dW5jdGlvbikKICAgICAgICAgcmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkKLSAgICAgICAgIyBwcnVu
ZSBvdXQgZnVuY2FyZ3MgZm9yIGpzdGVzdHMKKyAgICAgICAgIyBQcnVuZSBvdXQgZnVuY2FyZ3Mg
Zm9yIGpzdGVzdHMuCiAgICAgICAgIG5ld2Z1bmNhcmdzID0ge30KICAgICAgICAgZm9yIG5hbWUg
aW4gZmkuYXJnbmFtZXM6CiAgICAgICAgICAgICBuZXdmdW5jYXJnc1tuYW1lXSA9IGZ1bmN0aW9u
LmZ1bmNhcmdzW25hbWVdCkBAIC0yNzUsNTQgKzM2Nyw5MiBAQCBkZWYgZ2V0X2RpcmVjdF9wYXJh
bV9maXh0dXJlX2Z1bmMocmVxdWVzdCk6CiAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KIAogCi1j
bGFzcyBGdW5jRml4dHVyZUluZm8ob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBh
cmduYW1lcywgbmFtZXNfY2xvc3VyZSwgbmFtZTJmaXh0dXJlZGVmcyk6Ci0gICAgICAgIHNlbGYu
YXJnbmFtZXMgPSBhcmduYW1lcwotICAgICAgICBzZWxmLm5hbWVzX2Nsb3N1cmUgPSBuYW1lc19j
bG9zdXJlCi0gICAgICAgIHNlbGYubmFtZTJmaXh0dXJlZGVmcyA9IG5hbWUyZml4dHVyZWRlZnMK
K0BhdHRyLnMoc2xvdHM9VHJ1ZSkKK2NsYXNzIEZ1bmNGaXh0dXJlSW5mbzoKKyAgICAjIE9yaWdp
bmFsIGZ1bmN0aW9uIGFyZ3VtZW50IG5hbWVzLgorICAgIGFyZ25hbWVzID0gYXR0ci5pYih0eXBl
PVR1cGxlW3N0ciwgLi4uXSkKKyAgICAjIEFyZ25hbWVzIHRoYXQgZnVuY3Rpb24gaW1tZWRpYXRl
bHkgcmVxdWlyZXMuIFRoZXNlIGluY2x1ZGUgYXJnbmFtZXMgKworICAgICMgZml4dHVyZSBuYW1l
cyBzcGVjaWZpZWQgdmlhIHVzZWZpeHR1cmVzIGFuZCB2aWEgYXV0b3VzZT1UcnVlIGluIGZpeHR1
cmUKKyAgICAjIGRlZmluaXRpb25zLgorICAgIGluaXRpYWxuYW1lcyA9IGF0dHIuaWIodHlwZT1U
dXBsZVtzdHIsIC4uLl0pCisgICAgbmFtZXNfY2xvc3VyZSA9IGF0dHIuaWIodHlwZT1MaXN0W3N0
cl0pCisgICAgbmFtZTJmaXh0dXJlZGVmcyA9IGF0dHIuaWIodHlwZT1EaWN0W3N0ciwgU2VxdWVu
Y2VbIkZpeHR1cmVEZWZbQW55XSJdXSkKIAorICAgIGRlZiBwcnVuZV9kZXBlbmRlbmN5X3RyZWUo
c2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiUmVjb21wdXRlIG5hbWVzX2Nsb3N1cmUgZnJvbSBp
bml0aWFsbmFtZXMgYW5kIG5hbWUyZml4dHVyZWRlZnMuCiAKLWNsYXNzIEZpeHR1cmVSZXF1ZXN0
KEZ1bmNhcmduYW1lc0NvbXBhdEF0dHIpOgotICAgICIiIiBBIHJlcXVlc3QgZm9yIGEgZml4dHVy
ZSBmcm9tIGEgdGVzdCBvciBmaXh0dXJlIGZ1bmN0aW9uLgorICAgICAgICBDYW4gb25seSByZWR1
Y2UgbmFtZXNfY2xvc3VyZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgbmV3IGNsb3N1cmUgd2lsbAor
ICAgICAgICBhbHdheXMgYmUgYSBzdWJzZXQgb2YgdGhlIG9sZCBvbmUuIFRoZSBvcmRlciBpcyBw
cmVzZXJ2ZWQuCiAKLSAgICBBIHJlcXVlc3Qgb2JqZWN0IGdpdmVzIGFjY2VzcyB0byB0aGUgcmVx
dWVzdGluZyB0ZXN0IGNvbnRleHQKLSAgICBhbmQgaGFzIGFuIG9wdGlvbmFsIGBgcGFyYW1gYCBh
dHRyaWJ1dGUgaW4gY2FzZQotICAgIHRoZSBmaXh0dXJlIGlzIHBhcmFtZXRyaXplZCBpbmRpcmVj
dGx5LgorICAgICAgICBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgYmVjYXVzZSBkaXJlY3QgcGFyYW1l
dHJpemF0aW9uIG1heSBzaGFkb3cgc29tZQorICAgICAgICBvZiB0aGUgZml4dHVyZXMgdGhhdCB3
ZXJlIGluY2x1ZGVkIGluIHRoZSBvcmlnaW5hbGx5IGJ1aWx0IGRlcGVuZGVuY3kKKyAgICAgICAg
dHJlZS4gSW4gdGhpcyB3YXkgdGhlIGRlcGVuZGVuY3kgdHJlZSBjYW4gZ2V0IHBydW5lZCwgYW5k
IHRoZSBjbG9zdXJlCisgICAgICAgIG9mIGFyZ25hbWVzIG1heSBnZXQgcmVkdWNlZC4KKyAgICAg
ICAgIiIiCisgICAgICAgIGNsb3N1cmUgPSBzZXQoKSAgIyB0eXBlOiBTZXRbc3RyXQorICAgICAg
ICB3b3JraW5nX3NldCA9IHNldChzZWxmLmluaXRpYWxuYW1lcykKKyAgICAgICAgd2hpbGUgd29y
a2luZ19zZXQ6CisgICAgICAgICAgICBhcmduYW1lID0gd29ya2luZ19zZXQucG9wKCkKKyAgICAg
ICAgICAgICMgQXJnbmFtZSBtYXkgYmUgc210aCBub3QgaW5jbHVkZWQgaW4gdGhlIG9yaWdpbmFs
IG5hbWVzX2Nsb3N1cmUsCisgICAgICAgICAgICAjIGluIHdoaWNoIGNhc2Ugd2UgaWdub3JlIGl0
LiBUaGlzIGN1cnJlbnRseSBoYXBwZW5zIHdpdGggcHNldWRvCisgICAgICAgICAgICAjIEZpeHR1
cmVEZWZzIHdoaWNoIHdyYXAgJ2dldF9kaXJlY3RfcGFyYW1fZml4dHVyZV9mdW5jKHJlcXVlc3Qp
Jy4KKyAgICAgICAgICAgICMgU28gdGhleSBpbnRyb2R1Y2UgdGhlIG5ldyBkZXBlbmRlbmN5ICdy
ZXF1ZXN0JyB3aGljaCBtaWdodCBoYXZlCisgICAgICAgICAgICAjIGJlZW4gbWlzc2luZyBpbiB0
aGUgb3JpZ2luYWwgdHJlZSAoY2xvc3VyZSkuCisgICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBp
biBjbG9zdXJlIGFuZCBhcmduYW1lIGluIHNlbGYubmFtZXNfY2xvc3VyZToKKyAgICAgICAgICAg
ICAgICBjbG9zdXJlLmFkZChhcmduYW1lKQorICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgaW4g
c2VsZi5uYW1lMmZpeHR1cmVkZWZzOgorICAgICAgICAgICAgICAgICAgICB3b3JraW5nX3NldC51
cGRhdGUoc2VsZi5uYW1lMmZpeHR1cmVkZWZzW2FyZ25hbWVdWy0xXS5hcmduYW1lcykKKworICAg
ICAgICBzZWxmLm5hbWVzX2Nsb3N1cmVbOl0gPSBzb3J0ZWQoY2xvc3VyZSwga2V5PXNlbGYubmFt
ZXNfY2xvc3VyZS5pbmRleCkKKworCitjbGFzcyBGaXh0dXJlUmVxdWVzdDoKKyAgICAiIiJBIHJl
cXVlc3QgZm9yIGEgZml4dHVyZSBmcm9tIGEgdGVzdCBvciBmaXh0dXJlIGZ1bmN0aW9uLgorCisg
ICAgQSByZXF1ZXN0IG9iamVjdCBnaXZlcyBhY2Nlc3MgdG8gdGhlIHJlcXVlc3RpbmcgdGVzdCBj
b250ZXh0IGFuZCBoYXMKKyAgICBhbiBvcHRpb25hbCBgYHBhcmFtYGAgYXR0cmlidXRlIGluIGNh
c2UgdGhlIGZpeHR1cmUgaXMgcGFyYW1ldHJpemVkCisgICAgaW5kaXJlY3RseS4KICAgICAiIiIK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBweWZ1bmNpdGVtKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcHlmdW5jaXRlbSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5fcHlmdW5jaXRlbSA9IHB5
ZnVuY2l0ZW0KLSAgICAgICAgIzogZml4dHVyZSBmb3Igd2hpY2ggdGhpcyByZXF1ZXN0IGlzIGJl
aW5nIHBlcmZvcm1lZAotICAgICAgICBzZWxmLmZpeHR1cmVuYW1lID0gTm9uZQotICAgICAgICAj
OiBTY29wZSBzdHJpbmcsIG9uZSBvZiAiZnVuY3Rpb24iLCAiY2xhc3MiLCAibW9kdWxlIiwgInNl
c3Npb24iCi0gICAgICAgIHNlbGYuc2NvcGUgPSAiZnVuY3Rpb24iCi0gICAgICAgIHNlbGYuX2Zp
eHR1cmVfZGVmcyA9IHt9ICAjIGFyZ25hbWUgLT4gRml4dHVyZURlZgotICAgICAgICBmaXh0dXJl
aW5mbyA9IHB5ZnVuY2l0ZW0uX2ZpeHR1cmVpbmZvCisgICAgICAgICM6IEZpeHR1cmUgZm9yIHdo
aWNoIHRoaXMgcmVxdWVzdCBpcyBiZWluZyBwZXJmb3JtZWQuCisgICAgICAgIHNlbGYuZml4dHVy
ZW5hbWUgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICAgICAgIzogU2NvcGUgc3Ry
aW5nLCBvbmUgb2YgImZ1bmN0aW9uIiwgImNsYXNzIiwgIm1vZHVsZSIsICJzZXNzaW9uIi4KKyAg
ICAgICAgc2VsZi5zY29wZSA9ICJmdW5jdGlvbiIgICMgdHlwZTogX1Njb3BlCisgICAgICAgIHNl
bGYuX2ZpeHR1cmVfZGVmcyA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBGaXh0dXJlRGVmW0FueV1d
CisgICAgICAgIGZpeHR1cmVpbmZvID0gcHlmdW5jaXRlbS5fZml4dHVyZWluZm8gICMgdHlwZTog
RnVuY0ZpeHR1cmVJbmZvCiAgICAgICAgIHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9IGZpeHR1cmVp
bmZvLm5hbWUyZml4dHVyZWRlZnMuY29weSgpCi0gICAgICAgIHNlbGYuX2FyZzJpbmRleCA9IHt9
Ci0gICAgICAgIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyID0gcHlmdW5jaXRlbS5zZXNzaW9uLl9maXh0
dXJlbWFuYWdlcgorICAgICAgICBzZWxmLl9hcmcyaW5kZXggPSB7fSAgIyB0eXBlOiBEaWN0W3N0
ciwgaW50XQorICAgICAgICBzZWxmLl9maXh0dXJlbWFuYWdlciA9ICgKKyAgICAgICAgICAgIHB5
ZnVuY2l0ZW0uc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKKyAgICAgICAgKSAgIyB0eXBlOiBGaXh0
dXJlTWFuYWdlcgogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIGZpeHR1cmVuYW1lcyhzZWxmKToK
LSAgICAgICAgIyBiYWNrd2FyZCBpbmNvbXBhdGlibGUgbm90ZTogbm93IGEgcmVhZG9ubHkgcHJv
cGVydHkKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fcHlmdW5jaXRlbS5fZml4dHVyZWluZm8u
bmFtZXNfY2xvc3VyZSkKKyAgICBkZWYgZml4dHVyZW5hbWVzKHNlbGYpIC0+IExpc3Rbc3RyXToK
KyAgICAgICAgIiIiTmFtZXMgb2YgYWxsIGFjdGl2ZSBmaXh0dXJlcyBpbiB0aGlzIHJlcXVlc3Qu
IiIiCisgICAgICAgIHJlc3VsdCA9IGxpc3Qoc2VsZi5fcHlmdW5jaXRlbS5fZml4dHVyZWluZm8u
bmFtZXNfY2xvc3VyZSkKKyAgICAgICAgcmVzdWx0LmV4dGVuZChzZXQoc2VsZi5fZml4dHVyZV9k
ZWZzKS5kaWZmZXJlbmNlKHJlc3VsdCkpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIEBw
cm9wZXJ0eQogICAgIGRlZiBub2RlKHNlbGYpOgotICAgICAgICAiIiIgdW5kZXJseWluZyBjb2xs
ZWN0aW9uIG5vZGUgKGRlcGVuZHMgb24gY3VycmVudCByZXF1ZXN0IHNjb3BlKSIiIgorICAgICAg
ICAiIiJVbmRlcmx5aW5nIGNvbGxlY3Rpb24gbm9kZSAoZGVwZW5kcyBvbiBjdXJyZW50IHJlcXVl
c3Qgc2NvcGUpLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0c2NvcGVpdGVtKHNlbGYuc2Nv
cGUpCiAKLSAgICBkZWYgX2dldG5leHRmaXh0dXJlZGVmKHNlbGYsIGFyZ25hbWUpOgorICAgIGRl
ZiBfZ2V0bmV4dGZpeHR1cmVkZWYoc2VsZiwgYXJnbmFtZTogc3RyKSAtPiAiRml4dHVyZURlZltB
bnldIjoKICAgICAgICAgZml4dHVyZWRlZnMgPSBzZWxmLl9hcmcyZml4dHVyZWRlZnMuZ2V0KGFy
Z25hbWUsIE5vbmUpCiAgICAgICAgIGlmIGZpeHR1cmVkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAjIHdlIGFycml2ZSBoZXJlIGJlY2F1c2Ugb2YgYSBkeW5hbWljIGNhbGwgdG8KKyAgICAgICAg
ICAgICMgV2UgYXJyaXZlIGhlcmUgYmVjYXVzZSBvZiBhIGR5bmFtaWMgY2FsbCB0bwogICAgICAg
ICAgICAgIyBnZXRmaXh0dXJldmFsdWUoYXJnbmFtZSkgdXNhZ2Ugd2hpY2ggd2FzIG5hdHVyYWxs
eQotICAgICAgICAgICAgIyBub3Qga25vd24gYXQgcGFyc2luZy9jb2xsZWN0aW9uIHRpbWUKKyAg
ICAgICAgICAgICMgbm90IGtub3duIGF0IHBhcnNpbmcvY29sbGVjdGlvbiB0aW1lLgorICAgICAg
ICAgICAgYXNzZXJ0IHNlbGYuX3B5ZnVuY2l0ZW0ucGFyZW50IGlzIG5vdCBOb25lCiAgICAgICAg
ICAgICBwYXJlbnRpZCA9IHNlbGYuX3B5ZnVuY2l0ZW0ucGFyZW50Lm5vZGVpZAogICAgICAgICAg
ICAgZml4dHVyZWRlZnMgPSBzZWxmLl9maXh0dXJlbWFuYWdlci5nZXRmaXh0dXJlZGVmcyhhcmdu
YW1lLCBwYXJlbnRpZCkKLSAgICAgICAgICAgIHNlbGYuX2FyZzJmaXh0dXJlZGVmc1thcmduYW1l
XSA9IGZpeHR1cmVkZWZzCi0gICAgICAgICMgZml4dHVyZWRlZnMgbGlzdCBpcyBpbW11dGFibGUg
c28gd2UgbWFpbnRhaW4gYSBkZWNyZWFzaW5nIGluZGV4CisgICAgICAgICAgICAjIFRPRE86IEZp
eCB0aGlzIHR5cGUgaWdub3JlLiBFaXRoZXIgYWRkIGFzc2VydCBvciBhZGp1c3QgdHlwZXMuCisg
ICAgICAgICAgICAjICAgICAgIENhbiB0aGlzIGJlIE5vbmUgaGVyZT8KKyAgICAgICAgICAgIHNl
bGYuX2FyZzJmaXh0dXJlZGVmc1thcmduYW1lXSA9IGZpeHR1cmVkZWZzICAjIHR5cGU6IGlnbm9y
ZVthc3NpZ25tZW50XQorICAgICAgICAjIGZpeHR1cmVkZWZzIGxpc3QgaXMgaW1tdXRhYmxlIHNv
IHdlIG1haW50YWluIGEgZGVjcmVhc2luZyBpbmRleC4KICAgICAgICAgaW5kZXggPSBzZWxmLl9h
cmcyaW5kZXguZ2V0KGFyZ25hbWUsIDApIC0gMQogICAgICAgICBpZiBmaXh0dXJlZGVmcyBpcyBO
b25lIG9yICgtaW5kZXggPiBsZW4oZml4dHVyZWRlZnMpKToKICAgICAgICAgICAgIHJhaXNlIEZp
eHR1cmVMb29rdXBFcnJvcihhcmduYW1lLCBzZWxmKQpAQCAtMzMwLDEzOCArNDYwLDEyMiBAQCBj
bGFzcyBGaXh0dXJlUmVxdWVzdChGdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKICAgICAgICAgcmV0
dXJuIGZpeHR1cmVkZWZzW2luZGV4XQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIGNvbmZpZyhz
ZWxmKToKLSAgICAgICAgIiIiIHRoZSBweXRlc3QgY29uZmlnIG9iamVjdCBhc3NvY2lhdGVkIHdp
dGggdGhpcyByZXF1ZXN0LiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uY29u
ZmlnCisgICAgZGVmIGNvbmZpZyhzZWxmKSAtPiBDb25maWc6CisgICAgICAgICIiIlRoZSBweXRl
c3QgY29uZmlnIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0LiIiIgorICAgICAg
ICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5jb25maWcgICMgdHlwZTogaWdub3JlW25vLWFueS1y
ZXR1cm5dICMgbm9xYTogRjcyMwogCi0gICAgQHNjb3BlcHJvcGVydHkoKQorICAgIEBwcm9wZXJ0
eQogICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSAgICAgICAgIiIiIHRlc3QgZnVuY3Rpb24gb2Jq
ZWN0IGlmIHRoZSByZXF1ZXN0IGhhcyBhIHBlci1mdW5jdGlvbiBzY29wZS4gIiIiCisgICAgICAg
ICIiIlRlc3QgZnVuY3Rpb24gb2JqZWN0IGlmIHRoZSByZXF1ZXN0IGhhcyBhIHBlci1mdW5jdGlv
biBzY29wZS4iIiIKKyAgICAgICAgaWYgc2VsZi5zY29wZSAhPSAiZnVuY3Rpb24iOgorICAgICAg
ICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG5v
dCBhdmFpbGFibGUgaW4ge30tc2NvcGVkIGNvbnRleHQiLmZvcm1hdChzZWxmLnNjb3BlKQorICAg
ICAgICAgICAgKQogICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5vYmoKIAotICAgIEBz
Y29wZXByb3BlcnR5KCJjbGFzcyIpCisgICAgQHByb3BlcnR5CiAgICAgZGVmIGNscyhzZWxmKToK
LSAgICAgICAgIiIiIGNsYXNzIChjYW4gYmUgTm9uZSkgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24g
d2FzIGNvbGxlY3RlZC4gIiIiCisgICAgICAgICIiIkNsYXNzIChjYW4gYmUgTm9uZSkgd2hlcmUg
dGhlIHRlc3QgZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4iIiIKKyAgICAgICAgaWYgc2VsZi5zY29w
ZSBub3QgaW4gKCJjbGFzcyIsICJmdW5jdGlvbiIpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmli
dXRlRXJyb3IoCisgICAgICAgICAgICAgICAgImNscyBub3QgYXZhaWxhYmxlIGluIHt9LXNjb3Bl
ZCBjb250ZXh0Ii5mb3JtYXQoc2VsZi5zY29wZSkKKyAgICAgICAgICAgICkKICAgICAgICAgY2xz
Y29sID0gc2VsZi5fcHlmdW5jaXRlbS5nZXRwYXJlbnQoX3B5dGVzdC5weXRob24uQ2xhc3MpCiAg
ICAgICAgIGlmIGNsc2NvbDoKICAgICAgICAgICAgIHJldHVybiBjbHNjb2wub2JqCiAKICAgICBA
cHJvcGVydHkKICAgICBkZWYgaW5zdGFuY2Uoc2VsZik6Ci0gICAgICAgICIiIiBpbnN0YW5jZSAo
Y2FuIGJlIE5vbmUpIG9uIHdoaWNoIHRlc3QgZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4gIiIiCi0g
ICAgICAgICMgdW5pdHRlc3Qgc3VwcG9ydCBoYWNrLCBzZWUgX3B5dGVzdC51bml0dGVzdC5UZXN0
Q2FzZUZ1bmN0aW9uCisgICAgICAgICIiIkluc3RhbmNlIChjYW4gYmUgTm9uZSkgb24gd2hpY2gg
dGVzdCBmdW5jdGlvbiB3YXMgY29sbGVjdGVkLiIiIgorICAgICAgICAjIHVuaXR0ZXN0IHN1cHBv
cnQgaGFjaywgc2VlIF9weXRlc3QudW5pdHRlc3QuVGVzdENhc2VGdW5jdGlvbi4KICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uX3Rlc3RjYXNlCiAgICAg
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2V0YXR0
cihzZWxmLCAiZnVuY3Rpb24iLCBOb25lKQogICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoZnVu
Y3Rpb24sICJfX3NlbGZfXyIsIE5vbmUpCiAKLSAgICBAc2NvcGVwcm9wZXJ0eSgpCisgICAgQHBy
b3BlcnR5CiAgICAgZGVmIG1vZHVsZShzZWxmKToKLSAgICAgICAgIiIiIHB5dGhvbiBtb2R1bGUg
b2JqZWN0IHdoZXJlIHRoZSB0ZXN0IGZ1bmN0aW9uIHdhcyBjb2xsZWN0ZWQuICIiIgorICAgICAg
ICAiIiJQeXRob24gbW9kdWxlIG9iamVjdCB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiB3YXMgY29s
bGVjdGVkLiIiIgorICAgICAgICBpZiBzZWxmLnNjb3BlIG5vdCBpbiAoImZ1bmN0aW9uIiwgImNs
YXNzIiwgIm1vZHVsZSIpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAg
ICAgICAgICAgICAgIm1vZHVsZSBub3QgYXZhaWxhYmxlIGluIHt9LXNjb3BlZCBjb250ZXh0Ii5m
b3JtYXQoc2VsZi5zY29wZSkKKyAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHNlbGYuX3B5
ZnVuY2l0ZW0uZ2V0cGFyZW50KF9weXRlc3QucHl0aG9uLk1vZHVsZSkub2JqCiAKLSAgICBAc2Nv
cGVwcm9wZXJ0eSgpCi0gICAgZGVmIGZzcGF0aChzZWxmKToKLSAgICAgICAgIiIiIHRoZSBmaWxl
IHN5c3RlbSBwYXRoIG9mIHRoZSB0ZXN0IG1vZHVsZSB3aGljaCBjb2xsZWN0ZWQgdGhpcyB0ZXN0
LiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uZnNwYXRoCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIGZzcGF0aChzZWxmKSAtPiBweS5wYXRoLmxvY2FsOgorICAgICAgICAiIiJU
aGUgZmlsZSBzeXN0ZW0gcGF0aCBvZiB0aGUgdGVzdCBtb2R1bGUgd2hpY2ggY29sbGVjdGVkIHRo
aXMgdGVzdC4iIiIKKyAgICAgICAgaWYgc2VsZi5zY29wZSBub3QgaW4gKCJmdW5jdGlvbiIsICJj
bGFzcyIsICJtb2R1bGUiLCAicGFja2FnZSIpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRl
RXJyb3IoCisgICAgICAgICAgICAgICAgIm1vZHVsZSBub3QgYXZhaWxhYmxlIGluIHt9LXNjb3Bl
ZCBjb250ZXh0Ii5mb3JtYXQoc2VsZi5zY29wZSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyBU
T0RPOiBSZW1vdmUgaWdub3JlIG9uY2UgX3B5ZnVuY2l0ZW0gaXMgcHJvcGVybHkgdHlwZWQuCisg
ICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVtLmZzcGF0aCAgIyB0eXBlOiBpZ25vcmUKIAog
ICAgIEBwcm9wZXJ0eQogICAgIGRlZiBrZXl3b3JkcyhzZWxmKToKLSAgICAgICAgIiIiIGtleXdv
cmRzL21hcmtlcnMgZGljdGlvbmFyeSBmb3IgdGhlIHVuZGVybHlpbmcgbm9kZS4gIiIiCisgICAg
ICAgICIiIktleXdvcmRzL21hcmtlcnMgZGljdGlvbmFyeSBmb3IgdGhlIHVuZGVybHlpbmcgbm9k
ZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYubm9kZS5rZXl3b3JkcwogCiAgICAgQHByb3BlcnR5
CiAgICAgZGVmIHNlc3Npb24oc2VsZik6Ci0gICAgICAgICIiIiBweXRlc3Qgc2Vzc2lvbiBvYmpl
Y3QuICIiIgorICAgICAgICAiIiJQeXRlc3Qgc2Vzc2lvbiBvYmplY3QuIiIiCiAgICAgICAgIHJl
dHVybiBzZWxmLl9weWZ1bmNpdGVtLnNlc3Npb24KIAotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2Vs
ZiwgZmluYWxpemVyKToKLSAgICAgICAgIiIiIGFkZCBmaW5hbGl6ZXIvdGVhcmRvd24gZnVuY3Rp
b24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZQotICAgICAgICBsYXN0IHRlc3Qgd2l0aGluIHRoZSBy
ZXF1ZXN0aW5nIHRlc3QgY29udGV4dCBmaW5pc2hlZAotICAgICAgICBleGVjdXRpb24uICIiIgot
ICAgICAgICAjIFhYWCB1c3VhbGx5IHRoaXMgbWV0aG9kIGlzIHNoYWRvd2VkIGJ5IGZpeHR1cmVk
ZWYgc3BlY2lmaWMgb25lcworICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyOiBD
YWxsYWJsZVtbXSwgb2JqZWN0XSkgLT4gTm9uZToKKyAgICAgICAgIiIiQWRkIGZpbmFsaXplci90
ZWFyZG93biBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdAorICAgICAg
ICB3aXRoaW4gdGhlIHJlcXVlc3RpbmcgdGVzdCBjb250ZXh0IGZpbmlzaGVkIGV4ZWN1dGlvbi4i
IiIKKyAgICAgICAgIyBYWFggdXN1YWxseSB0aGlzIG1ldGhvZCBpcyBzaGFkb3dlZCBieSBmaXh0
dXJlZGVmIHNwZWNpZmljIG9uZXMuCiAgICAgICAgIHNlbGYuX2FkZGZpbmFsaXplcihmaW5hbGl6
ZXIsIHNjb3BlPXNlbGYuc2NvcGUpCiAKLSAgICBkZWYgX2FkZGZpbmFsaXplcihzZWxmLCBmaW5h
bGl6ZXIsIHNjb3BlKToKKyAgICBkZWYgX2FkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXI6IENh
bGxhYmxlW1tdLCBvYmplY3RdLCBzY29wZSkgLT4gTm9uZToKICAgICAgICAgY29saXRlbSA9IHNl
bGYuX2dldHNjb3BlaXRlbShzY29wZSkKICAgICAgICAgc2VsZi5fcHlmdW5jaXRlbS5zZXNzaW9u
Ll9zZXR1cHN0YXRlLmFkZGZpbmFsaXplcigKICAgICAgICAgICAgIGZpbmFsaXplcj1maW5hbGl6
ZXIsIGNvbGl0ZW09Y29saXRlbQogICAgICAgICApCiAKLSAgICBkZWYgYXBwbHltYXJrZXIoc2Vs
ZiwgbWFya2VyKToKLSAgICAgICAgIiIiIEFwcGx5IGEgbWFya2VyIHRvIGEgc2luZ2xlIHRlc3Qg
ZnVuY3Rpb24gaW52b2NhdGlvbi4KKyAgICBkZWYgYXBwbHltYXJrZXIoc2VsZiwgbWFya2VyKSAt
PiBOb25lOgorICAgICAgICAiIiJBcHBseSBhIG1hcmtlciB0byBhIHNpbmdsZSB0ZXN0IGZ1bmN0
aW9uIGludm9jYXRpb24uCisKICAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSBk
b24ndCB3YW50IHRvIGhhdmUgYSBrZXl3b3JkL21hcmtlcgogICAgICAgICBvbiBhbGwgZnVuY3Rp
b24gaW52b2NhdGlvbnMuCiAKLSAgICAgICAgOmFyZyBtYXJrZXI6IGEgOnB5OmNsYXNzOmBfcHl0
ZXN0Lm1hcmsuTWFya0RlY29yYXRvcmAgb2JqZWN0Ci0gICAgICAgICAgICBjcmVhdGVkIGJ5IGEg
Y2FsbCB0byBgYHB5dGVzdC5tYXJrLk5BTUUoLi4uKWBgLgorICAgICAgICA6cGFyYW0gbWFya2Vy
OgorICAgICAgICAgICAgQSA6cHk6Y2xhc3M6YF9weXRlc3QubWFyay5NYXJrRGVjb3JhdG9yYCBv
YmplY3QgY3JlYXRlZCBieSBhIGNhbGwKKyAgICAgICAgICAgIHRvIGBgcHl0ZXN0Lm1hcmsuTkFN
RSguLi4pYGAuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLm5vZGUuYWRkX21hcmtlcihtYXJr
ZXIpCiAKLSAgICBkZWYgcmFpc2VlcnJvcihzZWxmLCBtc2cpOgotICAgICAgICAiIiIgcmFpc2Ug
YSBGaXh0dXJlTG9va3VwRXJyb3Igd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS4gIiIiCisgICAgZGVm
IHJhaXNlZXJyb3Ioc2VsZiwgbXNnOiBPcHRpb25hbFtzdHJdKSAtPiAiTm9SZXR1cm4iOgorICAg
ICAgICAiIiJSYWlzZSBhIEZpeHR1cmVMb29rdXBFcnJvciB3aXRoIHRoZSBnaXZlbiBtZXNzYWdl
LiIiIgogICAgICAgICByYWlzZSBzZWxmLl9maXh0dXJlbWFuYWdlci5GaXh0dXJlTG9va3VwRXJy
b3IoTm9uZSwgc2VsZiwgbXNnKQogCi0gICAgZGVmIF9maWxsZml4dHVyZXMoc2VsZik6CisgICAg
ZGVmIF9maWxsZml4dHVyZXMoc2VsZikgLT4gTm9uZToKICAgICAgICAgaXRlbSA9IHNlbGYuX3B5
ZnVuY2l0ZW0KICAgICAgICAgZml4dHVyZW5hbWVzID0gZ2V0YXR0cihpdGVtLCAiZml4dHVyZW5h
bWVzIiwgc2VsZi5maXh0dXJlbmFtZXMpCiAgICAgICAgIGZvciBhcmduYW1lIGluIGZpeHR1cmVu
YW1lczoKICAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGl0ZW0uZnVuY2FyZ3M6CiAgICAg
ICAgICAgICAgICAgaXRlbS5mdW5jYXJnc1thcmduYW1lXSA9IHNlbGYuZ2V0Zml4dHVyZXZhbHVl
KGFyZ25hbWUpCiAKLSAgICBkZWYgY2FjaGVkX3NldHVwKHNlbGYsIHNldHVwLCB0ZWFyZG93bj1O
b25lLCBzY29wZT0ibW9kdWxlIiwgZXh0cmFrZXk9Tm9uZSk6Ci0gICAgICAgICIiIiAoZGVwcmVj
YXRlZCkgUmV0dXJuIGEgdGVzdGluZyByZXNvdXJjZSBtYW5hZ2VkIGJ5IGBgc2V0dXBgYCAmCi0g
ICAgICAgIGBgdGVhcmRvd25gYCBjYWxscy4gIGBgc2NvcGVgYCBhbmQgYGBleHRyYWtleWBgIGRl
dGVybWluZSB3aGVuIHRoZQotICAgICAgICBgYHRlYXJkb3duYGAgZnVuY3Rpb24gd2lsbCBiZSBj
YWxsZWQgc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRvCi0gICAgICAgIGBgc2V0dXBgYCB3b3Vs
ZCByZWNyZWF0ZSB0aGUgcmVzb3VyY2UuICBXaXRoIHB5dGVzdC0yLjMgeW91IG9mdGVuCi0gICAg
ICAgIGRvIG5vdCBuZWVkIGBgY2FjaGVkX3NldHVwKClgYCBhcyB5b3UgY2FuIGRpcmVjdGx5IGRl
Y2xhcmUgYSBzY29wZQotICAgICAgICBvbiBhIGZpeHR1cmUgZnVuY3Rpb24gYW5kIHJlZ2lzdGVy
IGEgZmluYWxpemVyIHRocm91Z2gKLSAgICAgICAgYGByZXF1ZXN0LmFkZGZpbmFsaXplcigpYGAu
Ci0KLSAgICAgICAgOmFyZyB0ZWFyZG93bjogZnVuY3Rpb24gcmVjZWl2aW5nIGEgcHJldmlvdXNs
eSBzZXR1cCByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBzZXR1cDogYSBuby1hcmd1bWVudCBmdW5j
dGlvbiBjcmVhdGluZyBhIHJlc291cmNlLgotICAgICAgICA6YXJnIHNjb3BlOiBhIHN0cmluZyB2
YWx1ZSBvdXQgb2YgYGBmdW5jdGlvbmBgLCBgYGNsYXNzYGAsIGBgbW9kdWxlYGAKLSAgICAgICAg
ICAgIG9yIGBgc2Vzc2lvbmBgIGluZGljYXRpbmcgdGhlIGNhY2hpbmcgbGlmZWN5Y2xlIG9mIHRo
ZSByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBleHRyYWtleTogYWRkZWQgdG8gaW50ZXJuYWwgY2Fj
aGluZyBrZXkgb2YgKGZ1bmNhcmduYW1lLCBzY29wZSkuCi0gICAgICAgICIiIgotICAgICAgICBp
ZiBub3QgaGFzYXR0cihzZWxmLmNvbmZpZywgIl9zZXR1cGNhY2hlIik6Ci0gICAgICAgICAgICBz
ZWxmLmNvbmZpZy5fc2V0dXBjYWNoZSA9IHt9ICAjIFhYWCB3ZWFrcmVmPwotICAgICAgICBjYWNo
ZWtleSA9IChzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLl9nZXRzY29wZWl0ZW0oc2NvcGUpLCBleHRy
YWtleSkKLSAgICAgICAgY2FjaGUgPSBzZWxmLmNvbmZpZy5fc2V0dXBjYWNoZQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICB2YWwgPSBjYWNoZVtjYWNoZWtleV0KLSAgICAgICAgZXhjZXB0IEtl
eUVycm9yOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NvcGUoc2VsZi5maXh0dXJlbmFtZSwg
c2VsZi5zY29wZSwgc2NvcGUpCi0gICAgICAgICAgICB2YWwgPSBzZXR1cCgpCi0gICAgICAgICAg
ICBjYWNoZVtjYWNoZWtleV0gPSB2YWwKLSAgICAgICAgICAgIGlmIHRlYXJkb3duIGlzIG5vdCBO
b25lOgotCi0gICAgICAgICAgICAgICAgZGVmIGZpbmFsaXplcigpOgotICAgICAgICAgICAgICAg
ICAgICBkZWwgY2FjaGVbY2FjaGVrZXldCi0gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duKHZh
bCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2FkZGZpbmFsaXplcihmaW5hbGl6ZXIsIHNjb3Bl
PXNjb3BlKQotICAgICAgICByZXR1cm4gdmFsCi0KLSAgICBkZWYgZ2V0Zml4dHVyZXZhbHVlKHNl
bGYsIGFyZ25hbWUpOgotICAgICAgICAiIiIgRHluYW1pY2FsbHkgcnVuIGEgbmFtZWQgZml4dHVy
ZSBmdW5jdGlvbi4KKyAgICBkZWYgZ2V0Zml4dHVyZXZhbHVlKHNlbGYsIGFyZ25hbWU6IHN0cikg
LT4gQW55OgorICAgICAgICAiIiJEeW5hbWljYWxseSBydW4gYSBuYW1lZCBmaXh0dXJlIGZ1bmN0
aW9uLgogCiAgICAgICAgIERlY2xhcmluZyBmaXh0dXJlcyB2aWEgZnVuY3Rpb24gYXJndW1lbnQg
aXMgcmVjb21tZW5kZWQgd2hlcmUgcG9zc2libGUuCiAgICAgICAgIEJ1dCBpZiB5b3UgY2FuIG9u
bHkgZGVjaWRlIHdoZXRoZXIgdG8gdXNlIGFub3RoZXIgZml4dHVyZSBhdCB0ZXN0CiAgICAgICAg
IHNldHVwIHRpbWUsIHlvdSBtYXkgdXNlIHRoaXMgZnVuY3Rpb24gdG8gcmV0cmlldmUgaXQgaW5z
aWRlIGEgZml4dHVyZQogICAgICAgICBvciB0ZXN0IGZ1bmN0aW9uIGJvZHkuCi0gICAgICAgICIi
IgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVmKGFyZ25hbWUpLmNh
Y2hlZF9yZXN1bHRbMF0KLQotICAgIGRlZiBnZXRmdW5jYXJndmFsdWUoc2VsZiwgYXJnbmFtZSk6
Ci0gICAgICAgICIiIiBEZXByZWNhdGVkLCB1c2UgZ2V0Zml4dHVyZXZhbHVlLiAiIiIKLSAgICAg
ICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBkZXByZWNhdGVkCiAKLSAgICAgICAgd2FybmluZ3Mud2Fy
bihkZXByZWNhdGVkLkdFVEZVTkNBUkdWQUxVRSwgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xl
dmVsPTIpCi0gICAgICAgIHJldHVybiBzZWxmLmdldGZpeHR1cmV2YWx1ZShhcmduYW1lKQorICAg
ICAgICA6cmFpc2VzIHB5dGVzdC5GaXh0dXJlTG9va3VwRXJyb3I6CisgICAgICAgICAgICBJZiB0
aGUgZ2l2ZW4gZml4dHVyZSBjb3VsZCBub3QgYmUgZm91bmQuCisgICAgICAgICIiIgorICAgICAg
ICBmaXh0dXJlZGVmID0gc2VsZi5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVmKGFyZ25hbWUpCisgICAg
ICAgIGFzc2VydCBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQgaXMgbm90IE5vbmUKKyAgICAgICAg
cmV0dXJuIGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdFswXQogCi0gICAgZGVmIF9nZXRfYWN0aXZl
X2ZpeHR1cmVkZWYoc2VsZiwgYXJnbmFtZSk6CisgICAgZGVmIF9nZXRfYWN0aXZlX2ZpeHR1cmVk
ZWYoCisgICAgICAgIHNlbGYsIGFyZ25hbWU6IHN0cgorICAgICkgLT4gVW5pb25bIkZpeHR1cmVE
ZWZbb2JqZWN0XSIsIFBzZXVkb0ZpeHR1cmVEZWZbb2JqZWN0XV06CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9maXh0dXJlX2RlZnNbYXJnbmFtZV0KICAgICAgICAgZXhj
ZXB0IEtleUVycm9yOgpAQCAtNDcwLDMzICs1ODQsMzQgQEAgY2xhc3MgRml4dHVyZVJlcXVlc3Qo
RnVuY2FyZ25hbWVzQ29tcGF0QXR0cik6CiAgICAgICAgICAgICBleGNlcHQgRml4dHVyZUxvb2t1
cEVycm9yOgogICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgPT0gInJlcXVlc3QiOgogICAgICAg
ICAgICAgICAgICAgICBjYWNoZWRfcmVzdWx0ID0gKHNlbGYsIFswXSwgTm9uZSkKLSAgICAgICAg
ICAgICAgICAgICAgc2NvcGUgPSAiZnVuY3Rpb24iCisgICAgICAgICAgICAgICAgICAgIHNjb3Bl
ID0gImZ1bmN0aW9uIiAgIyB0eXBlOiBfU2NvcGUKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFBzZXVkb0ZpeHR1cmVEZWYoY2FjaGVkX3Jlc3VsdCwgc2NvcGUpCiAgICAgICAgICAgICAgICAg
cmFpc2UKLSAgICAgICAgIyByZW1vdmUgaW5kZW50IHRvIHByZXZlbnQgdGhlIHB5dGhvbjMgZXhj
ZXB0aW9uCi0gICAgICAgICMgZnJvbSBsZWFraW5nIGludG8gdGhlIGNhbGwKKyAgICAgICAgIyBS
ZW1vdmUgaW5kZW50IHRvIHByZXZlbnQgdGhlIHB5dGhvbjMgZXhjZXB0aW9uCisgICAgICAgICMg
ZnJvbSBsZWFraW5nIGludG8gdGhlIGNhbGwuCiAgICAgICAgIHNlbGYuX2NvbXB1dGVfZml4dHVy
ZV92YWx1ZShmaXh0dXJlZGVmKQogICAgICAgICBzZWxmLl9maXh0dXJlX2RlZnNbYXJnbmFtZV0g
PSBmaXh0dXJlZGVmCiAgICAgICAgIHJldHVybiBmaXh0dXJlZGVmCiAKLSAgICBkZWYgX2dldF9m
aXh0dXJlc3RhY2soc2VsZik6CisgICAgZGVmIF9nZXRfZml4dHVyZXN0YWNrKHNlbGYpIC0+IExp
c3RbIkZpeHR1cmVEZWZbQW55XSJdOgogICAgICAgICBjdXJyZW50ID0gc2VsZgotICAgICAgICB2
YWx1ZXMgPSBbXQorICAgICAgICB2YWx1ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W0ZpeHR1cmVEZWZb
QW55XV0KICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIGZpeHR1cmVkZWYgPSBnZXRhdHRy
KGN1cnJlbnQsICJfZml4dHVyZWRlZiIsIE5vbmUpCiAgICAgICAgICAgICBpZiBmaXh0dXJlZGVm
IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdmFsdWVzLnJldmVyc2UoKQogICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZXMKICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZml4dHVyZWRlZikK
KyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGN1cnJlbnQsIFN1YlJlcXVlc3QpCiAgICAg
ICAgICAgICBjdXJyZW50ID0gY3VycmVudC5fcGFyZW50X3JlcXVlc3QKIAotICAgIGRlZiBfY29t
cHV0ZV9maXh0dXJlX3ZhbHVlKHNlbGYsIGZpeHR1cmVkZWYpOgotICAgICAgICAiIiIKLSAgICAg
ICAgQ3JlYXRlcyBhIFN1YlJlcXVlc3QgYmFzZWQgb24gInNlbGYiIGFuZCBjYWxscyB0aGUgZXhl
Y3V0ZSBtZXRob2Qgb2YgdGhlIGdpdmVuIGZpeHR1cmVkZWYgb2JqZWN0LiBUaGlzIHdpbGwKLSAg
ICAgICAgZm9yY2UgdGhlIEZpeHR1cmVEZWYgb2JqZWN0IHRvIHRocm93IGF3YXkgYW55IHByZXZp
b3VzIHJlc3VsdHMgYW5kIGNvbXB1dGUgYSBuZXcgZml4dHVyZSB2YWx1ZSwgd2hpY2gKLSAgICAg
ICAgd2lsbCBiZSBzdG9yZWQgaW50byB0aGUgRml4dHVyZURlZiBvYmplY3QgaXRzZWxmLgorICAg
IGRlZiBfY29tcHV0ZV9maXh0dXJlX3ZhbHVlKHNlbGYsIGZpeHR1cmVkZWY6ICJGaXh0dXJlRGVm
W29iamVjdF0iKSAtPiBOb25lOgorICAgICAgICAiIiJDcmVhdGUgYSBTdWJSZXF1ZXN0IGJhc2Vk
IG9uICJzZWxmIiBhbmQgY2FsbCB0aGUgZXhlY3V0ZSBtZXRob2QKKyAgICAgICAgb2YgdGhlIGdp
dmVuIEZpeHR1cmVEZWYgb2JqZWN0LgogCi0gICAgICAgIDpwYXJhbSBGaXh0dXJlRGVmIGZpeHR1
cmVkZWY6CisgICAgICAgIFRoaXMgd2lsbCBmb3JjZSB0aGUgRml4dHVyZURlZiBvYmplY3QgdG8g
dGhyb3cgYXdheSBhbnkgcHJldmlvdXMKKyAgICAgICAgcmVzdWx0cyBhbmQgY29tcHV0ZSBhIG5l
dyBmaXh0dXJlIHZhbHVlLCB3aGljaCB3aWxsIGJlIHN0b3JlZCBpbnRvCisgICAgICAgIHRoZSBG
aXh0dXJlRGVmIG9iamVjdCBpdHNlbGYuCiAgICAgICAgICIiIgogICAgICAgICAjIHByZXBhcmUg
YSBzdWJyZXF1ZXN0IG9iamVjdCBiZWZvcmUgY2FsbGluZyBmaXh0dXJlIGZ1bmN0aW9uCiAgICAg
ICAgICMgKGxhdHRlciBtYW5hZ2VkIGJ5IGZpeHR1cmVkZWYpCkBAIC01MDgsNTcgKzYyMyw3MyBA
QCBjbGFzcyBGaXh0dXJlUmVxdWVzdChGdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKICAgICAgICAg
ZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBwYXJhbSA9
IE5PVFNFVAogICAgICAgICAgICAgcGFyYW1faW5kZXggPSAwCi0gICAgICAgICAgICBpZiBmaXh0
dXJlZGVmLnBhcmFtcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGhhc19wYXJhbXMgPSBmaXh0
dXJlZGVmLnBhcmFtcyBpcyBub3QgTm9uZQorICAgICAgICAgICAgZml4dHVyZXNfbm90X3N1cHBv
cnRlZCA9IGdldGF0dHIoZnVuY2l0ZW0sICJub2Z1bmNhcmdzIiwgRmFsc2UpCisgICAgICAgICAg
ICBpZiBoYXNfcGFyYW1zIGFuZCBmaXh0dXJlc19ub3Rfc3VwcG9ydGVkOgorICAgICAgICAgICAg
ICAgIG1zZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgIntuYW1lfSBkb2VzIG5vdCBzdXBwb3J0
IGZpeHR1cmVzLCBtYXliZSB1bml0dGVzdC5UZXN0Q2FzZSBzdWJjbGFzcz9cbiIKKyAgICAgICAg
ICAgICAgICAgICAgIk5vZGUgaWQ6IHtub2RlaWR9XG4iCisgICAgICAgICAgICAgICAgICAgICJG
dW5jdGlvbiB0eXBlOiB7dHlwZW5hbWV9IgorICAgICAgICAgICAgICAgICkuZm9ybWF0KAorICAg
ICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNpdGVtLm5hbWUsCisgICAgICAgICAgICAgICAgICAg
IG5vZGVpZD1mdW5jaXRlbS5ub2RlaWQsCisgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lPXR5
cGUoZnVuY2l0ZW0pLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICBmYWlsKG1zZywgcHl0cmFjZT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGhhc19wYXJhbXM6CiAg
ICAgICAgICAgICAgICAgZnJhbWUgPSBpbnNwZWN0LnN0YWNrKClbM10KICAgICAgICAgICAgICAg
ICBmcmFtZWluZm8gPSBpbnNwZWN0LmdldGZyYW1laW5mbyhmcmFtZVswXSkKLSAgICAgICAgICAg
ICAgICBzb3VyY2VfcGF0aCA9IGZyYW1laW5mby5maWxlbmFtZQorICAgICAgICAgICAgICAgIHNv
dXJjZV9wYXRoID0gcHkucGF0aC5sb2NhbChmcmFtZWluZm8uZmlsZW5hbWUpCiAgICAgICAgICAg
ICAgICAgc291cmNlX2xpbmVubyA9IGZyYW1laW5mby5saW5lbm8KLSAgICAgICAgICAgICAgICBz
b3VyY2VfcGF0aCA9IHB5LnBhdGgubG9jYWwoc291cmNlX3BhdGgpCi0gICAgICAgICAgICAgICAg
aWYgc291cmNlX3BhdGgucmVsdG8oZnVuY2l0ZW0uY29uZmlnLnJvb3RkaXIpOgotICAgICAgICAg
ICAgICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9wYXRoLnJlbHRvKGZ1bmNpdGVtLmNvbmZp
Zy5yb290ZGlyKQorICAgICAgICAgICAgICAgIHJlbF9zb3VyY2VfcGF0aCA9IHNvdXJjZV9wYXRo
LnJlbHRvKGZ1bmNpdGVtLmNvbmZpZy5yb290ZGlyKQorICAgICAgICAgICAgICAgIGlmIHJlbF9z
b3VyY2VfcGF0aDoKKyAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGhfc3RyID0gcmVsX3Nv
dXJjZV9wYXRoCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlX3BhdGhfc3RyID0gc3RyKHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgIG1zZyA9ICgK
LSAgICAgICAgICAgICAgICAgICAgIlRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1l
dGVyIGRlZmluZWQgZm9yIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICJjdXJyZW50IHRlc3Qu
XG5cblJlcXVlc3RlZCBmaXh0dXJlICd7fScgZGVmaW5lZCBpbjpcbnt9IgorICAgICAgICAgICAg
ICAgICAgICAiVGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBm
b3IgdGVzdDpcbiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICB7fVxuXG4iCisgICAgICAgICAg
ICAgICAgICAgICJSZXF1ZXN0ZWQgZml4dHVyZSAne30nIGRlZmluZWQgaW46XG57fSIKICAgICAg
ICAgICAgICAgICAgICAgIlxuXG5SZXF1ZXN0ZWQgaGVyZTpcbnt9Ont9Ii5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jaXRlbS5ub2RlaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXh0dXJlZGVmLmFyZ25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRsb2Nh
dGlvbihmaXh0dXJlZGVmLmZ1bmMsIGZ1bmNpdGVtLmNvbmZpZy5yb290ZGlyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlX3BhdGhfc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2xpbmVubywKICAg
ICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBm
YWlsKG1zZykKKyAgICAgICAgICAgICAgICBmYWlsKG1zZywgcHl0cmFjZT1GYWxzZSkKICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICMgaW5kaWNlcyBtaWdodCBub3QgYmUgc2V0IGlmIG9sZC1z
dHlsZSBtZXRhZnVuYy5hZGRjYWxsKCkgd2FzIHVzZWQKLSAgICAgICAgICAgIHBhcmFtX2luZGV4
ID0gZnVuY2l0ZW0uY2FsbHNwZWMuaW5kaWNlcy5nZXQoYXJnbmFtZSwgMCkKLSAgICAgICAgICAg
ICMgaWYgYSBwYXJhbWV0cml6ZSBpbnZvY2F0aW9uIHNldCBhIHNjb3BlIGl0IHdpbGwgb3ZlcnJp
ZGUKLSAgICAgICAgICAgICMgdGhlIHN0YXRpYyBzY29wZSBkZWZpbmVkIHdpdGggdGhlIGZpeHR1
cmUgZnVuY3Rpb24KKyAgICAgICAgICAgIHBhcmFtX2luZGV4ID0gZnVuY2l0ZW0uY2FsbHNwZWMu
aW5kaWNlc1thcmduYW1lXQorICAgICAgICAgICAgIyBJZiBhIHBhcmFtZXRyaXplIGludm9jYXRp
b24gc2V0IGEgc2NvcGUgaXQgd2lsbCBvdmVycmlkZQorICAgICAgICAgICAgIyB0aGUgc3RhdGlj
IHNjb3BlIGRlZmluZWQgd2l0aCB0aGUgZml4dHVyZSBmdW5jdGlvbi4KICAgICAgICAgICAgIHBh
cmFtc2NvcGVudW0gPSBmdW5jaXRlbS5jYWxsc3BlYy5fYXJnMnNjb3BlbnVtLmdldChhcmduYW1l
KQogICAgICAgICAgICAgaWYgcGFyYW1zY29wZW51bSBpcyBub3QgTm9uZToKICAgICAgICAgICAg
ICAgICBzY29wZSA9IHNjb3Blc1twYXJhbXNjb3BlbnVtXQogCiAgICAgICAgIHN1YnJlcXVlc3Qg
PSBTdWJSZXF1ZXN0KHNlbGYsIHNjb3BlLCBwYXJhbSwgcGFyYW1faW5kZXgsIGZpeHR1cmVkZWYp
CiAKLSAgICAgICAgIyBjaGVjayBpZiBhIGhpZ2hlci1sZXZlbCBzY29wZWQgZml4dHVyZSBhY2Nl
c3NlcyBhIGxvd2VyIGxldmVsIG9uZQorICAgICAgICAjIENoZWNrIGlmIGEgaGlnaGVyLWxldmVs
IHNjb3BlZCBmaXh0dXJlIGFjY2Vzc2VzIGEgbG93ZXIgbGV2ZWwgb25lLgogICAgICAgICBzdWJy
ZXF1ZXN0Ll9jaGVja19zY29wZShhcmduYW1lLCBzZWxmLnNjb3BlLCBzY29wZSkKLQotICAgICAg
ICAjIGNsZWFyIHN5cy5leGNfaW5mbyBiZWZvcmUgaW52b2tpbmcgdGhlIGZpeHR1cmUgKHB5dGhv
biBidWc/KQotICAgICAgICAjIGlmIGl0cyBub3QgZXhwbGljaXRseSBjbGVhcmVkIGl0IHdpbGwg
bGVhayBpbnRvIHRoZSBjYWxsCi0gICAgICAgIGV4Y19jbGVhcigpCiAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICMgY2FsbCB0aGUgZml4dHVyZSBmdW5jdGlvbgorICAgICAgICAgICAgIyBDYWxs
IHRoZSBmaXh0dXJlIGZ1bmN0aW9uLgogICAgICAgICAgICAgZml4dHVyZWRlZi5leGVjdXRlKHJl
cXVlc3Q9c3VicmVxdWVzdCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICMgaWYgZml4
dHVyZSBmdW5jdGlvbiBmYWlsZWQgaXQgbWlnaHQgaGF2ZSByZWdpc3RlcmVkIGZpbmFsaXplcnMK
LSAgICAgICAgICAgIHNlbGYuc2Vzc2lvbi5fc2V0dXBzdGF0ZS5hZGRmaW5hbGl6ZXIoCi0gICAg
ICAgICAgICAgICAgZnVuY3Rvb2xzLnBhcnRpYWwoZml4dHVyZWRlZi5maW5pc2gsIHJlcXVlc3Q9
c3VicmVxdWVzdCksCi0gICAgICAgICAgICAgICAgc3VicmVxdWVzdC5ub2RlLAotICAgICAgICAg
ICAgKQorICAgICAgICAgICAgc2VsZi5fc2NoZWR1bGVfZmluYWxpemVycyhmaXh0dXJlZGVmLCBz
dWJyZXF1ZXN0KQorCisgICAgZGVmIF9zY2hlZHVsZV9maW5hbGl6ZXJzKAorICAgICAgICBzZWxm
LCBmaXh0dXJlZGVmOiAiRml4dHVyZURlZltvYmplY3RdIiwgc3VicmVxdWVzdDogIlN1YlJlcXVl
c3QiCisgICAgKSAtPiBOb25lOgorICAgICAgICAjIElmIGZpeHR1cmUgZnVuY3Rpb24gZmFpbGVk
IGl0IG1pZ2h0IGhhdmUgcmVnaXN0ZXJlZCBmaW5hbGl6ZXJzLgorICAgICAgICBzZWxmLnNlc3Np
b24uX3NldHVwc3RhdGUuYWRkZmluYWxpemVyKAorICAgICAgICAgICAgZnVuY3Rvb2xzLnBhcnRp
YWwoZml4dHVyZWRlZi5maW5pc2gsIHJlcXVlc3Q9c3VicmVxdWVzdCksIHN1YnJlcXVlc3Qubm9k
ZQorICAgICAgICApCiAKLSAgICBkZWYgX2NoZWNrX3Njb3BlKHNlbGYsIGFyZ25hbWUsIGludm9r
aW5nX3Njb3BlLCByZXF1ZXN0ZWRfc2NvcGUpOgorICAgIGRlZiBfY2hlY2tfc2NvcGUoc2VsZiwg
YXJnbmFtZSwgaW52b2tpbmdfc2NvcGU6ICJfU2NvcGUiLCByZXF1ZXN0ZWRfc2NvcGUpIC0+IE5v
bmU6CiAgICAgICAgIGlmIGFyZ25hbWUgPT0gInJlcXVlc3QiOgogICAgICAgICAgICAgcmV0dXJu
CiAgICAgICAgIGlmIHNjb3BlbWlzbWF0Y2goaW52b2tpbmdfc2NvcGUsIHJlcXVlc3RlZF9zY29w
ZSk6Ci0gICAgICAgICAgICAjIHRyeSB0byByZXBvcnQgc29tZXRoaW5nIGhlbHBmdWwKKyAgICAg
ICAgICAgICMgVHJ5IHRvIHJlcG9ydCBzb21ldGhpbmcgaGVscGZ1bC4KICAgICAgICAgICAgIGxp
bmVzID0gc2VsZi5fZmFjdG9yeXRyYWNlYmFjaygpCiAgICAgICAgICAgICBmYWlsKAogICAgICAg
ICAgICAgICAgICJTY29wZU1pc21hdGNoOiBZb3UgdHJpZWQgdG8gYWNjZXNzIHRoZSAlciBzY29w
ZWQgIgpAQCAtNTY4LDM4ICs2OTksNTAgQEAgY2xhc3MgRml4dHVyZVJlcXVlc3QoRnVuY2FyZ25h
bWVzQ29tcGF0QXR0cik6CiAgICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSwKICAgICAgICAg
ICAgICkKIAotICAgIGRlZiBfZmFjdG9yeXRyYWNlYmFjayhzZWxmKToKKyAgICBkZWYgX2ZhY3Rv
cnl0cmFjZWJhY2soc2VsZikgLT4gTGlzdFtzdHJdOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAg
ICAgIGZvciBmaXh0dXJlZGVmIGluIHNlbGYuX2dldF9maXh0dXJlc3RhY2soKToKICAgICAgICAg
ICAgIGZhY3RvcnkgPSBmaXh0dXJlZGVmLmZ1bmMKICAgICAgICAgICAgIGZzLCBsaW5lbm8gPSBn
ZXRmc2xpbmVubyhmYWN0b3J5KQogICAgICAgICAgICAgcCA9IHNlbGYuX3B5ZnVuY2l0ZW0uc2Vz
c2lvbi5mc3BhdGguYmVzdHJlbHBhdGgoZnMpCiAgICAgICAgICAgICBhcmdzID0gX2Zvcm1hdF9h
cmdzKGZhY3RvcnkpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVzOiVkOiAgZGVmICVzJXMi
ICUgKHAsIGxpbmVubywgZmFjdG9yeS5fX25hbWVfXywgYXJncykpCisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoIiVzOiVkOiAgZGVmICVzJXMiICUgKHAsIGxpbmVubyArIDEsIGZhY3RvcnkuX19u
YW1lX18sIGFyZ3MpKQogICAgICAgICByZXR1cm4gbGluZXMKIAogICAgIGRlZiBfZ2V0c2NvcGVp
dGVtKHNlbGYsIHNjb3BlKToKICAgICAgICAgaWYgc2NvcGUgPT0gImZ1bmN0aW9uIjoKLSAgICAg
ICAgICAgICMgdGhpcyBtaWdodCBhbHNvIGJlIGEgbm9uLWZ1bmN0aW9uIEl0ZW0gZGVzcGl0ZSBp
dHMgYXR0cmlidXRlIG5hbWUKKyAgICAgICAgICAgICMgVGhpcyBtaWdodCBhbHNvIGJlIGEgbm9u
LWZ1bmN0aW9uIEl0ZW0gZGVzcGl0ZSBpdHMgYXR0cmlidXRlIG5hbWUuCiAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fcHlmdW5jaXRlbQotICAgICAgICBub2RlID0gZ2V0X3Njb3BlX25vZGUoc2Vs
Zi5fcHlmdW5jaXRlbSwgc2NvcGUpCisgICAgICAgIGlmIHNjb3BlID09ICJwYWNrYWdlIjoKKyAg
ICAgICAgICAgICMgRklYTUU6IF9maXh0dXJlZGVmIGlzIG5vdCBkZWZpbmVkIG9uIEZpeHR1cmVS
ZXF1ZXN0ICh0aGlzIGNsYXNzKSwKKyAgICAgICAgICAgICMgYnV0IG9uIEZpeHR1cmVSZXF1ZXN0
IChhIHN1YmNsYXNzKS4KKyAgICAgICAgICAgIG5vZGUgPSBnZXRfc2NvcGVfcGFja2FnZShzZWxm
Ll9weWZ1bmNpdGVtLCBzZWxmLl9maXh0dXJlZGVmKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZp
bmVkXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbm9kZSA9IGdldF9zY29wZV9ub2RlKHNl
bGYuX3B5ZnVuY2l0ZW0sIHNjb3BlKQogICAgICAgICBpZiBub2RlIGlzIE5vbmUgYW5kIHNjb3Bl
ID09ICJjbGFzcyI6Ci0gICAgICAgICAgICAjIGZhbGxiYWNrIHRvIGZ1bmN0aW9uIGl0ZW0gaXRz
ZWxmCisgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIGZ1bmN0aW9uIGl0ZW0gaXRzZWxmLgogICAg
ICAgICAgICAgbm9kZSA9IHNlbGYuX3B5ZnVuY2l0ZW0KICAgICAgICAgYXNzZXJ0IG5vZGUsICdD
b3VsZCBub3Qgb2J0YWluIGEgbm9kZSBmb3Igc2NvcGUgInt9IiBmb3IgZnVuY3Rpb24geyFyfScu
Zm9ybWF0KAogICAgICAgICAgICAgc2NvcGUsIHNlbGYuX3B5ZnVuY2l0ZW0KICAgICAgICAgKQog
ICAgICAgICByZXR1cm4gbm9kZQogCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIGRlZiBf
X3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIHJldHVybiAiPEZpeHR1cmVSZXF1ZXN0IGZv
ciAlcj4iICUgKHNlbGYubm9kZSkKIAogCitAZmluYWwKIGNsYXNzIFN1YlJlcXVlc3QoRml4dHVy
ZVJlcXVlc3QpOgotICAgICIiIiBhIHN1YiByZXF1ZXN0IGZvciBoYW5kbGluZyBnZXR0aW5nIGEg
Zml4dHVyZSBmcm9tIGEKLSAgICB0ZXN0IGZ1bmN0aW9uL2ZpeHR1cmUuICIiIgorICAgICIiIkEg
c3ViIHJlcXVlc3QgZm9yIGhhbmRsaW5nIGdldHRpbmcgYSBmaXh0dXJlIGZyb20gYSB0ZXN0IGZ1
bmN0aW9uL2ZpeHR1cmUuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgc2Nv
cGUsIHBhcmFtLCBwYXJhbV9pbmRleCwgZml4dHVyZWRlZik6CisgICAgZGVmIF9faW5pdF9fKAor
ICAgICAgICBzZWxmLAorICAgICAgICByZXF1ZXN0OiAiRml4dHVyZVJlcXVlc3QiLAorICAgICAg
ICBzY29wZTogIl9TY29wZSIsCisgICAgICAgIHBhcmFtLAorICAgICAgICBwYXJhbV9pbmRleDog
aW50LAorICAgICAgICBmaXh0dXJlZGVmOiAiRml4dHVyZURlZltvYmplY3RdIiwKKyAgICApIC0+
IE5vbmU6CiAgICAgICAgIHNlbGYuX3BhcmVudF9yZXF1ZXN0ID0gcmVxdWVzdAogICAgICAgICBz
ZWxmLmZpeHR1cmVuYW1lID0gZml4dHVyZWRlZi5hcmduYW1lCiAgICAgICAgIGlmIHBhcmFtIGlz
IG5vdCBOT1RTRVQ6CkBAIC02MTMsNjkgKzc1Niw3OSBAQCBjbGFzcyBTdWJSZXF1ZXN0KEZpeHR1
cmVSZXF1ZXN0KToKICAgICAgICAgc2VsZi5fYXJnMmluZGV4ID0gcmVxdWVzdC5fYXJnMmluZGV4
CiAgICAgICAgIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyID0gcmVxdWVzdC5fZml4dHVyZW1hbmFnZXIK
IAotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8U3ViUmVxdWVzdCAl
ciBmb3IgJXI+IiAlIChzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLl9weWZ1bmNpdGVtKQorICAgIGRl
ZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAiPFN1YlJlcXVlc3QgeyFy
fSBmb3IgeyFyfT4iLmZvcm1hdChzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLl9weWZ1bmNpdGVtKQog
Ci0gICAgZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXIpOgorICAgIGRlZiBhZGRmaW5h
bGl6ZXIoc2VsZiwgZmluYWxpemVyOiBDYWxsYWJsZVtbXSwgb2JqZWN0XSkgLT4gTm9uZToKICAg
ICAgICAgc2VsZi5fZml4dHVyZWRlZi5hZGRmaW5hbGl6ZXIoZmluYWxpemVyKQogCi0KLWNsYXNz
IFNjb3BlTWlzbWF0Y2hFcnJvcihFeGNlcHRpb24pOgotICAgICIiIiBBIGZpeHR1cmUgZnVuY3Rp
b24gdHJpZXMgdG8gdXNlIGEgZGlmZmVyZW50IGZpeHR1cmUgZnVuY3Rpb24gd2hpY2gKLSAgICB3
aGljaCBoYXMgYSBsb3dlciBzY29wZSAoZS5nLiBhIFNlc3Npb24gb25lIGNhbGxzIGEgZnVuY3Rp
b24gb25lKQotICAgICIiIgorICAgIGRlZiBfc2NoZWR1bGVfZmluYWxpemVycygKKyAgICAgICAg
c2VsZiwgZml4dHVyZWRlZjogIkZpeHR1cmVEZWZbb2JqZWN0XSIsIHN1YnJlcXVlc3Q6ICJTdWJS
ZXF1ZXN0IgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBJZiB0aGUgZXhlY3V0aW5nIGZpeHR1
cmVkZWYgd2FzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBpbiB0aGUgYXJndW1lbnQgbGlzdCAo
dmlhCisgICAgICAgICMgZ2V0Zml4dHVyZXZhbHVlIGluc2lkZSB0aGUgZml4dHVyZSBjYWxsKSB0
aGVuIGVuc3VyZSB0aGlzIGZpeHR1cmUgZGVmIHdpbGwgYmUgZmluaXNoZWQKKyAgICAgICAgIyBm
aXJzdC4KKyAgICAgICAgaWYgZml4dHVyZWRlZi5hcmduYW1lIG5vdCBpbiBzZWxmLmZpeHR1cmVu
YW1lczoKKyAgICAgICAgICAgIGZpeHR1cmVkZWYuYWRkZmluYWxpemVyKAorICAgICAgICAgICAg
ICAgIGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX2ZpeHR1cmVkZWYuZmluaXNoLCByZXF1ZXN0PXNl
bGYpCisgICAgICAgICAgICApCisgICAgICAgIHN1cGVyKCkuX3NjaGVkdWxlX2ZpbmFsaXplcnMo
Zml4dHVyZWRlZiwgc3VicmVxdWVzdCkKIAogCi1zY29wZXMgPSAic2Vzc2lvbiBtb2R1bGUgY2xh
c3MgZnVuY3Rpb24iLnNwbGl0KCkKK3Njb3BlcyA9IFsic2Vzc2lvbiIsICJwYWNrYWdlIiwgIm1v
ZHVsZSIsICJjbGFzcyIsICJmdW5jdGlvbiJdICAjIHR5cGU6IExpc3RbX1Njb3BlXQogc2NvcGVu
dW1fZnVuY3Rpb24gPSBzY29wZXMuaW5kZXgoImZ1bmN0aW9uIikKIAogCi1kZWYgc2NvcGVtaXNt
YXRjaChjdXJyZW50c2NvcGUsIG5ld3Njb3BlKToKK2RlZiBzY29wZW1pc21hdGNoKGN1cnJlbnRz
Y29wZTogIl9TY29wZSIsIG5ld3Njb3BlOiAiX1Njb3BlIikgLT4gYm9vbDoKICAgICByZXR1cm4g
c2NvcGVzLmluZGV4KG5ld3Njb3BlKSA+IHNjb3Blcy5pbmRleChjdXJyZW50c2NvcGUpCiAKIAot
ZGVmIHNjb3BlMmluZGV4KHNjb3BlLCBkZXNjciwgd2hlcmU9Tm9uZSk6CitkZWYgc2NvcGUyaW5k
ZXgoc2NvcGU6IHN0ciwgZGVzY3I6IHN0ciwgd2hlcmU6IE9wdGlvbmFsW3N0cl0gPSBOb25lKSAt
PiBpbnQ6CiAgICAgIiIiTG9vayB1cCB0aGUgaW5kZXggb2YgYGBzY29wZWBgIGFuZCByYWlzZSBh
IGRlc2NyaXB0aXZlIHZhbHVlIGVycm9yCi0gICAgaWYgbm90IGRlZmluZWQuCi0gICAgIiIiCisg
ICAgaWYgbm90IGRlZmluZWQuIiIiCisgICAgc3Ryc2NvcGVzID0gc2NvcGVzICAjIHR5cGU6IFNl
cXVlbmNlW3N0cl0KICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBzY29wZXMuaW5kZXgoc2NvcGUp
CisgICAgICAgIHJldHVybiBzdHJzY29wZXMuaW5kZXgoc2NvcGUpCiAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAie30ge31oYXMg
YW4gdW5zdXBwb3J0ZWQgc2NvcGUgdmFsdWUgJ3t9JyIuZm9ybWF0KAorICAgICAgICBmYWlsKAor
ICAgICAgICAgICAgInt9IHt9Z290IGFuIHVuZXhwZWN0ZWQgc2NvcGUgdmFsdWUgJ3t9JyIuZm9y
bWF0KAogICAgICAgICAgICAgICAgIGRlc2NyLCAiZnJvbSB7fSAiLmZvcm1hdCh3aGVyZSkgaWYg
d2hlcmUgZWxzZSAiIiwgc2NvcGUKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICBweXRyYWNlPUZhbHNlLAogICAgICAgICApCiAKIAorQGZpbmFsCiBjbGFzcyBGaXh0
dXJlTG9va3VwRXJyb3IoTG9va3VwRXJyb3IpOgotICAgICIiIiBjb3VsZCBub3QgcmV0dXJuIGEg
cmVxdWVzdGVkIEZpeHR1cmUgKG1pc3Npbmcgb3IgaW52YWxpZCkuICIiIgorICAgICIiIkNvdWxk
IG5vdCByZXR1cm4gYSByZXF1ZXN0ZWQgZml4dHVyZSAobWlzc2luZyBvciBpbnZhbGlkKS4iIiIK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmduYW1lLCByZXF1ZXN0LCBtc2c9Tm9uZSk6Cisg
ICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBhcmduYW1lOiBPcHRpb25hbFtzdHJdLCBy
ZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCwgbXNnOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgICkg
LT4gTm9uZToKICAgICAgICAgc2VsZi5hcmduYW1lID0gYXJnbmFtZQogICAgICAgICBzZWxmLnJl
cXVlc3QgPSByZXF1ZXN0CiAgICAgICAgIHNlbGYuZml4dHVyZXN0YWNrID0gcmVxdWVzdC5fZ2V0
X2ZpeHR1cmVzdGFjaygpCiAgICAgICAgIHNlbGYubXNnID0gbXNnCiAKLSAgICBkZWYgZm9ybWF0
cmVwcihzZWxmKToKLSAgICAgICAgdGJsaW5lcyA9IFtdCisgICAgZGVmIGZvcm1hdHJlcHIoc2Vs
ZikgLT4gIkZpeHR1cmVMb29rdXBFcnJvclJlcHIiOgorICAgICAgICB0YmxpbmVzID0gW10gICMg
dHlwZTogTGlzdFtzdHJdCiAgICAgICAgIGFkZGxpbmUgPSB0YmxpbmVzLmFwcGVuZAogICAgICAg
ICBzdGFjayA9IFtzZWxmLnJlcXVlc3QuX3B5ZnVuY2l0ZW0ub2JqXQogICAgICAgICBzdGFjay5l
eHRlbmQobWFwKGxhbWJkYSB4OiB4LmZ1bmMsIHNlbGYuZml4dHVyZXN0YWNrKSkKICAgICAgICAg
bXNnID0gc2VsZi5tc2cKICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
IyB0aGUgbGFzdCBmaXh0dXJlIHJhaXNlIGFuIGVycm9yLCBsZXQncyBwcmVzZW50Ci0gICAgICAg
ICAgICAjIGl0IGF0IHRoZSByZXF1ZXN0aW5nIHNpZGUKKyAgICAgICAgICAgICMgVGhlIGxhc3Qg
Zml4dHVyZSByYWlzZSBhbiBlcnJvciwgbGV0J3MgcHJlc2VudAorICAgICAgICAgICAgIyBpdCBh
dCB0aGUgcmVxdWVzdGluZyBzaWRlLgogICAgICAgICAgICAgc3RhY2sgPSBzdGFja1s6LTFdCiAg
ICAgICAgIGZvciBmdW5jdGlvbiBpbiBzdGFjazoKICAgICAgICAgICAgIGZzcGF0aCwgbGluZW5v
ID0gZ2V0ZnNsaW5lbm8oZnVuY3Rpb24pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAg
ICAgbGluZXMsIF8gPSBpbnNwZWN0LmdldHNvdXJjZWxpbmVzKGdldF9yZWFsX2Z1bmMoZnVuY3Rp
b24pKQotICAgICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBJbmRleEVycm9yLCBUeXBlRXJyb3Ip
OgorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJbmRleEVycm9yLCBUeXBlRXJyb3IpOgog
ICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICJmaWxlICVzLCBsaW5lICVzOiBzb3VyY2UgY29k
ZSBub3QgYXZhaWxhYmxlIgogICAgICAgICAgICAgICAgIGFkZGxpbmUoZXJyb3JfbXNnICUgKGZz
cGF0aCwgbGluZW5vICsgMSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFk
ZGxpbmUoImZpbGUgJXMsIGxpbmUgJXMiICUgKGZzcGF0aCwgbGluZW5vICsgMSkpCisgICAgICAg
ICAgICAgICAgYWRkbGluZSgiZmlsZSB7fSwgbGluZSB7fSIuZm9ybWF0KGZzcGF0aCwgbGluZW5v
ICsgMSkpCiAgICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToK
ICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKICAgICAgICAgICAgICAg
ICAgICAgYWRkbGluZSgiICAiICsgbGluZSkKQEAgLTY4NCwyOSArODM3LDQwIEBAIGNsYXNzIEZp
eHR1cmVMb29rdXBFcnJvcihMb29rdXBFcnJvcik6CiAKICAgICAgICAgaWYgbXNnIGlzIE5vbmU6
CiAgICAgICAgICAgICBmbSA9IHNlbGYucmVxdWVzdC5fZml4dHVyZW1hbmFnZXIKLSAgICAgICAg
ICAgIGF2YWlsYWJsZSA9IFtdCisgICAgICAgICAgICBhdmFpbGFibGUgPSBzZXQoKQogICAgICAg
ICAgICAgcGFyZW50aWQgPSBzZWxmLnJlcXVlc3QuX3B5ZnVuY2l0ZW0ucGFyZW50Lm5vZGVpZAog
ICAgICAgICAgICAgZm9yIG5hbWUsIGZpeHR1cmVkZWZzIGluIGZtLl9hcmcyZml4dHVyZWRlZnMu
aXRlbXMoKToKICAgICAgICAgICAgICAgICBmYWNsaXN0ID0gbGlzdChmbS5fbWF0Y2hmYWN0b3Jp
ZXMoZml4dHVyZWRlZnMsIHBhcmVudGlkKSkKLSAgICAgICAgICAgICAgICBpZiBmYWNsaXN0IGFu
ZCBuYW1lIG5vdCBpbiBhdmFpbGFibGU6Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZS5h
cHBlbmQobmFtZSkKLSAgICAgICAgICAgIG1zZyA9ICJmaXh0dXJlICVyIG5vdCBmb3VuZCIgJSAo
c2VsZi5hcmduYW1lLCkKLSAgICAgICAgICAgIG1zZyArPSAiXG4gYXZhaWxhYmxlIGZpeHR1cmVz
OiAlcyIgJSAoIiwgIi5qb2luKHNvcnRlZChhdmFpbGFibGUpKSwpCisgICAgICAgICAgICAgICAg
aWYgZmFjbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLmFkZChuYW1lKQorICAg
ICAgICAgICAgaWYgc2VsZi5hcmduYW1lIGluIGF2YWlsYWJsZToKKyAgICAgICAgICAgICAgICBt
c2cgPSAiIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGludm9sdmluZyBmaXh0dXJlICd7fScgZGV0ZWN0
ZWQiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcmduYW1lCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtc2cgPSAiZml4dHVy
ZSAne30nIG5vdCBmb3VuZCIuZm9ybWF0KHNlbGYuYXJnbmFtZSkKKyAgICAgICAgICAgIG1zZyAr
PSAiXG4gYXZhaWxhYmxlIGZpeHR1cmVzOiB7fSIuZm9ybWF0KCIsICIuam9pbihzb3J0ZWQoYXZh
aWxhYmxlKSkpCiAgICAgICAgICAgICBtc2cgKz0gIlxuIHVzZSAncHl0ZXN0IC0tZml4dHVyZXMg
W3Rlc3RwYXRoXScgZm9yIGhlbHAgb24gdGhlbS4iCiAKICAgICAgICAgcmV0dXJuIEZpeHR1cmVM
b29rdXBFcnJvclJlcHIoZnNwYXRoLCBsaW5lbm8sIHRibGluZXMsIG1zZywgc2VsZi5hcmduYW1l
KQogCiAKIGNsYXNzIEZpeHR1cmVMb29rdXBFcnJvclJlcHIoVGVybWluYWxSZXByKToKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlyc3RsaW5lbm8sIHRibGluZXMsIGVycm9y
c3RyaW5nLCBhcmduYW1lKToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAg
ICAgIGZpbGVuYW1lOiBVbmlvbltzdHIsIHB5LnBhdGgubG9jYWxdLAorICAgICAgICBmaXJzdGxp
bmVubzogaW50LAorICAgICAgICB0YmxpbmVzOiBTZXF1ZW5jZVtzdHJdLAorICAgICAgICBlcnJv
cnN0cmluZzogc3RyLAorICAgICAgICBhcmduYW1lOiBPcHRpb25hbFtzdHJdLAorICAgICkgLT4g
Tm9uZToKICAgICAgICAgc2VsZi50YmxpbmVzID0gdGJsaW5lcwogICAgICAgICBzZWxmLmVycm9y
c3RyaW5nID0gZXJyb3JzdHJpbmcKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAg
ICAgICAgIHNlbGYuZmlyc3RsaW5lbm8gPSBmaXJzdGxpbmVubwogICAgICAgICBzZWxmLmFyZ25h
bWUgPSBhcmduYW1lCiAKLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6CisgICAgZGVmIHRv
dGVybWluYWwoc2VsZiwgdHc6IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgogICAgICAgICAjIHR3
LmxpbmUoIkZpeHR1cmVMb29rdXBFcnJvcjogJXMiICUoc2VsZi5hcmduYW1lKSwgcmVkPVRydWUp
CiAgICAgICAgIGZvciB0YmxpbmUgaW4gc2VsZi50YmxpbmVzOgogICAgICAgICAgICAgdHcubGlu
ZSh0YmxpbmUucnN0cmlwKCkpCkBAIC03MjUsMjY2ICs4ODksNDg1IEBAIGNsYXNzIEZpeHR1cmVM
b29rdXBFcnJvclJlcHIoVGVybWluYWxSZXByKToKICAgICAgICAgdHcubGluZSgiJXM6JWQiICUg
KHNlbGYuZmlsZW5hbWUsIHNlbGYuZmlyc3RsaW5lbm8gKyAxKSkKIAogCi1kZWYgZmFpbF9maXh0
dXJlZnVuYyhmaXh0dXJlZnVuYywgbXNnKToKK2RlZiBmYWlsX2ZpeHR1cmVmdW5jKGZpeHR1cmVm
dW5jLCBtc2c6IHN0cikgLT4gIk5vUmV0dXJuIjoKICAgICBmcywgbGluZW5vID0gZ2V0ZnNsaW5l
bm8oZml4dHVyZWZ1bmMpCi0gICAgbG9jYXRpb24gPSAiJXM6JXMiICUgKGZzLCBsaW5lbm8gKyAx
KQorICAgIGxvY2F0aW9uID0gInt9Ont9Ii5mb3JtYXQoZnMsIGxpbmVubyArIDEpCiAgICAgc291
cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoZml4dHVyZWZ1bmMpCiAgICAgZmFpbChtc2cgKyAi
OlxuXG4iICsgc3RyKHNvdXJjZS5pbmRlbnQoKSkgKyAiXG4iICsgbG9jYXRpb24sIHB5dHJhY2U9
RmFsc2UpCiAKIAotZGVmIGNhbGxfZml4dHVyZV9mdW5jKGZpeHR1cmVmdW5jLCByZXF1ZXN0LCBr
d2FyZ3MpOgotICAgIHlpZWxkY3R4ID0gaXNfZ2VuZXJhdG9yKGZpeHR1cmVmdW5jKQotICAgIGlm
IHlpZWxkY3R4OgotICAgICAgICBpdCA9IGZpeHR1cmVmdW5jKCoqa3dhcmdzKQotICAgICAgICBy
ZXMgPSBuZXh0KGl0KQorZGVmIGNhbGxfZml4dHVyZV9mdW5jKAorICAgIGZpeHR1cmVmdW5jOiAi
X0ZpeHR1cmVGdW5jW19GaXh0dXJlVmFsdWVdIiwgcmVxdWVzdDogRml4dHVyZVJlcXVlc3QsIGt3
YXJncworKSAtPiBfRml4dHVyZVZhbHVlOgorICAgIGlmIGlzX2dlbmVyYXRvcihmaXh0dXJlZnVu
Yyk6CisgICAgICAgIGZpeHR1cmVmdW5jID0gY2FzdCgKKyAgICAgICAgICAgIENhbGxhYmxlWy4u
LiwgR2VuZXJhdG9yW19GaXh0dXJlVmFsdWUsIE5vbmUsIE5vbmVdXSwgZml4dHVyZWZ1bmMKKyAg
ICAgICAgKQorICAgICAgICBnZW5lcmF0b3IgPSBmaXh0dXJlZnVuYygqKmt3YXJncykKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgZml4dHVyZV9yZXN1bHQgPSBuZXh0KGdlbmVyYXRvcikKKyAg
ICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgICJ7fSBkaWQgbm90IHlpZWxkIGEgdmFsdWUiLmZvcm1hdChyZXF1
ZXN0LmZpeHR1cmVuYW1lKQorICAgICAgICAgICAgKSBmcm9tIE5vbmUKKyAgICAgICAgZmluYWxp
emVyID0gZnVuY3Rvb2xzLnBhcnRpYWwoX3RlYXJkb3duX3lpZWxkX2ZpeHR1cmUsIGZpeHR1cmVm
dW5jLCBnZW5lcmF0b3IpCisgICAgICAgIHJlcXVlc3QuYWRkZmluYWxpemVyKGZpbmFsaXplcikK
KyAgICBlbHNlOgorICAgICAgICBmaXh0dXJlZnVuYyA9IGNhc3QoQ2FsbGFibGVbLi4uLCBfRml4
dHVyZVZhbHVlXSwgZml4dHVyZWZ1bmMpCisgICAgICAgIGZpeHR1cmVfcmVzdWx0ID0gZml4dHVy
ZWZ1bmMoKiprd2FyZ3MpCisgICAgcmV0dXJuIGZpeHR1cmVfcmVzdWx0CiAKLSAgICAgICAgZGVm
IHRlYXJkb3duKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbmV4dChpdCkK
LSAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgICAgICAgICAgICAgIHBhc3MK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmFpbF9maXh0dXJlZnVuYygKLSAg
ICAgICAgICAgICAgICAgICAgZml4dHVyZWZ1bmMsICJ5aWVsZF9maXh0dXJlIGZ1bmN0aW9uIGhh
cyBtb3JlIHRoYW4gb25lICd5aWVsZCciCi0gICAgICAgICAgICAgICAgKQogCi0gICAgICAgIHJl
cXVlc3QuYWRkZmluYWxpemVyKHRlYXJkb3duKQorZGVmIF90ZWFyZG93bl95aWVsZF9maXh0dXJl
KGZpeHR1cmVmdW5jLCBpdCkgLT4gTm9uZToKKyAgICAiIiJFeGVjdXRlIHRoZSB0ZWFyZG93biBv
ZiBhIGZpeHR1cmUgZnVuY3Rpb24gYnkgYWR2YW5jaW5nIHRoZSBpdGVyYXRvcgorICAgIGFmdGVy
IHRoZSB5aWVsZCBhbmQgZW5zdXJlIHRoZSBpdGVyYXRpb24gZW5kcyAoaWYgbm90IGl0IG1lYW5z
IHRoZXJlIGlzCisgICAgbW9yZSB0aGFuIG9uZSB5aWVsZCBpbiB0aGUgZnVuY3Rpb24pLiIiIgor
ICAgIHRyeToKKyAgICAgICAgbmV4dChpdCkKKyAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAg
ICAgICAgcGFzcwogICAgIGVsc2U6Ci0gICAgICAgIHJlcyA9IGZpeHR1cmVmdW5jKCoqa3dhcmdz
KQotICAgIHJldHVybiByZXMKKyAgICAgICAgZmFpbF9maXh0dXJlZnVuYyhmaXh0dXJlZnVuYywg
ImZpeHR1cmUgZnVuY3Rpb24gaGFzIG1vcmUgdGhhbiBvbmUgJ3lpZWxkJyIpCisKKworZGVmIF9l
dmFsX3Njb3BlX2NhbGxhYmxlKAorICAgIHNjb3BlX2NhbGxhYmxlOiAiQ2FsbGFibGVbW3N0ciwg
Q29uZmlnXSwgX1Njb3BlXSIsCisgICAgZml4dHVyZV9uYW1lOiBzdHIsCisgICAgY29uZmlnOiBD
b25maWcsCispIC0+ICJfU2NvcGUiOgorICAgIHRyeToKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQg
YmVjYXVzZSB0aGVyZSBpcyBubyB0eXBpbmcgbWVjaGFuaXNtIHRvIHNwZWNpZnkKKyAgICAgICAg
IyBrZXl3b3JkIGFyZ3VtZW50cywgY3VycmVudGx5LgorICAgICAgICByZXN1bHQgPSBzY29wZV9j
YWxsYWJsZShmaXh0dXJlX25hbWU9Zml4dHVyZV9uYW1lLCBjb25maWc9Y29uZmlnKSAgIyB0eXBl
OiBpZ25vcmVbY2FsbC1hcmddCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAiRXJyb3IgZXZhbHVhdGluZyB7fSB3aGlsZSBk
ZWZpbmluZyBmaXh0dXJlICd7fScuXG4iCisgICAgICAgICAgICAiRXhwZWN0ZWQgYSBmdW5jdGlv
biB3aXRoIHRoZSBzaWduYXR1cmUgKCosIGZpeHR1cmVfbmFtZSwgY29uZmlnKSIuZm9ybWF0KAor
ICAgICAgICAgICAgICAgIHNjb3BlX2NhbGxhYmxlLCBmaXh0dXJlX25hbWUKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKSBmcm9tIGUKKyAgICBpZiBub3QgaXNpbnN0YW5jZShyZXN1bHQsIHN0cik6
CisgICAgICAgIGZhaWwoCisgICAgICAgICAgICAiRXhwZWN0ZWQge30gdG8gcmV0dXJuIGEgJ3N0
cicgd2hpbGUgZGVmaW5pbmcgZml4dHVyZSAne30nLCBidXQgaXQgcmV0dXJuZWQ6XG4iCisgICAg
ICAgICAgICAieyFyfSIuZm9ybWF0KHNjb3BlX2NhbGxhYmxlLCBmaXh0dXJlX25hbWUsIHJlc3Vs
dCksCisgICAgICAgICAgICBweXRyYWNlPUZhbHNlLAorICAgICAgICApCisgICAgcmV0dXJuIHJl
c3VsdAogCiAKLWNsYXNzIEZpeHR1cmVEZWYob2JqZWN0KToKLSAgICAiIiIgQSBjb250YWluZXIg
Zm9yIGEgZmFjdG9yeSBkZWZpbml0aW9uLiAiIiIKK0BmaW5hbAorY2xhc3MgRml4dHVyZURlZihH
ZW5lcmljW19GaXh0dXJlVmFsdWVdKToKKyAgICAiIiJBIGNvbnRhaW5lciBmb3IgYSBmYWN0b3J5
IGRlZmluaXRpb24uIiIiCiAKICAgICBkZWYgX19pbml0X18oCiAgICAgICAgIHNlbGYsCi0gICAg
ICAgIGZpeHR1cmVtYW5hZ2VyLAorICAgICAgICBmaXh0dXJlbWFuYWdlcjogIkZpeHR1cmVNYW5h
Z2VyIiwKICAgICAgICAgYmFzZWlkLAotICAgICAgICBhcmduYW1lLAotICAgICAgICBmdW5jLAot
ICAgICAgICBzY29wZSwKLSAgICAgICAgcGFyYW1zLAotICAgICAgICB1bml0dGVzdD1GYWxzZSwK
LSAgICAgICAgaWRzPU5vbmUsCi0gICAgKToKKyAgICAgICAgYXJnbmFtZTogc3RyLAorICAgICAg
ICBmdW5jOiAiX0ZpeHR1cmVGdW5jW19GaXh0dXJlVmFsdWVdIiwKKyAgICAgICAgc2NvcGU6ICJV
bmlvbltfU2NvcGUsIENhbGxhYmxlW1tzdHIsIENvbmZpZ10sIF9TY29wZV1dIiwKKyAgICAgICAg
cGFyYW1zOiBPcHRpb25hbFtTZXF1ZW5jZVtvYmplY3RdXSwKKyAgICAgICAgdW5pdHRlc3Q6IGJv
b2wgPSBGYWxzZSwKKyAgICAgICAgaWRzOiBPcHRpb25hbFsKKyAgICAgICAgICAgIFVuaW9uWwor
ICAgICAgICAgICAgICAgIFR1cGxlW1VuaW9uW05vbmUsIHN0ciwgZmxvYXQsIGludCwgYm9vbF0s
IC4uLl0sCisgICAgICAgICAgICAgICAgQ2FsbGFibGVbW0FueV0sIE9wdGlvbmFsW29iamVjdF1d
LAorICAgICAgICAgICAgXQorICAgICAgICBdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CiAgICAg
ICAgIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyID0gZml4dHVyZW1hbmFnZXIKICAgICAgICAgc2VsZi5i
YXNlaWQgPSBiYXNlaWQgb3IgIiIKICAgICAgICAgc2VsZi5oYXNfbG9jYXRpb24gPSBiYXNlaWQg
aXMgbm90IE5vbmUKICAgICAgICAgc2VsZi5mdW5jID0gZnVuYwogICAgICAgICBzZWxmLmFyZ25h
bWUgPSBhcmduYW1lCi0gICAgICAgIHNlbGYuc2NvcGUgPSBzY29wZQorICAgICAgICBpZiBjYWxs
YWJsZShzY29wZSk6CisgICAgICAgICAgICBzY29wZV8gPSBfZXZhbF9zY29wZV9jYWxsYWJsZShz
Y29wZSwgYXJnbmFtZSwgZml4dHVyZW1hbmFnZXIuY29uZmlnKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2NvcGVfID0gc2NvcGUKICAgICAgICAgc2VsZi5zY29wZW51bSA9IHNjb3BlMmlu
ZGV4KAotICAgICAgICAgICAgc2NvcGUgb3IgImZ1bmN0aW9uIiwgZGVzY3I9ImZpeHR1cmUge30i
LmZvcm1hdChmdW5jLl9fbmFtZV9fKSwgd2hlcmU9YmFzZWlkCisgICAgICAgICAgICAjIFRPRE86
IENoZWNrIGlmIHRoZSBgb3JgIGhlcmUgaXMgcmVhbGx5IG5lY2Vzc2FyeS4KKyAgICAgICAgICAg
IHNjb3BlXyBvciAiZnVuY3Rpb24iLCAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCisgICAg
ICAgICAgICBkZXNjcj0iRml4dHVyZSAne30nIi5mb3JtYXQoZnVuYy5fX25hbWVfXyksCisgICAg
ICAgICAgICB3aGVyZT1iYXNlaWQsCiAgICAgICAgICkKLSAgICAgICAgc2VsZi5wYXJhbXMgPSBw
YXJhbXMKLSAgICAgICAgc2VsZi5hcmduYW1lcyA9IGdldGZ1bmNhcmduYW1lcyhmdW5jLCBpc19t
ZXRob2Q9dW5pdHRlc3QpCisgICAgICAgIHNlbGYuc2NvcGUgPSBzY29wZV8KKyAgICAgICAgc2Vs
Zi5wYXJhbXMgPSBwYXJhbXMgICMgdHlwZTogT3B0aW9uYWxbU2VxdWVuY2Vbb2JqZWN0XV0KKyAg
ICAgICAgc2VsZi5hcmduYW1lcyA9IGdldGZ1bmNhcmduYW1lcygKKyAgICAgICAgICAgIGZ1bmMs
IG5hbWU9YXJnbmFtZSwgaXNfbWV0aG9kPXVuaXR0ZXN0CisgICAgICAgICkgICMgdHlwZTogVHVw
bGVbc3RyLCAuLi5dCiAgICAgICAgIHNlbGYudW5pdHRlc3QgPSB1bml0dGVzdAogICAgICAgICBz
ZWxmLmlkcyA9IGlkcwotICAgICAgICBzZWxmLl9maW5hbGl6ZXJzID0gW10KKyAgICAgICAgc2Vs
Zi5jYWNoZWRfcmVzdWx0ID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtfRml4dHVyZUNhY2hlZFJl
c3VsdFtfRml4dHVyZVZhbHVlXV0KKyAgICAgICAgc2VsZi5fZmluYWxpemVycyA9IFtdICAjIHR5
cGU6IExpc3RbQ2FsbGFibGVbW10sIG9iamVjdF1dCiAKLSAgICBkZWYgYWRkZmluYWxpemVyKHNl
bGYsIGZpbmFsaXplcik6CisgICAgZGVmIGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXI6IENh
bGxhYmxlW1tdLCBvYmplY3RdKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9maW5hbGl6ZXJzLmFw
cGVuZChmaW5hbGl6ZXIpCiAKLSAgICBkZWYgZmluaXNoKHNlbGYsIHJlcXVlc3QpOgotICAgICAg
ICBleGNlcHRpb25zID0gW10KKyAgICBkZWYgZmluaXNoKHNlbGYsIHJlcXVlc3Q6IFN1YlJlcXVl
c3QpIC0+IE5vbmU6CisgICAgICAgIGV4YyA9IE5vbmUKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgd2hpbGUgc2VsZi5fZmluYWxpemVyczoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAg
ICAgICAgICAgICAgIGZ1bmMgPSBzZWxmLl9maW5hbGl6ZXJzLnBvcCgpCiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmMoKQotICAgICAgICAgICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmFwcGVuZChzeXMuZXhjX2luZm8oKSkKLSAgICAgICAgICAg
IGlmIGV4Y2VwdGlvbnM6Ci0gICAgICAgICAgICAgICAgZSA9IGV4Y2VwdGlvbnNbMF0KLSAgICAg
ICAgICAgICAgICBkZWwgZXhjZXB0aW9ucyAgIyBlbnN1cmUgd2UgZG9uJ3Qga2VlcCBhbGwgZnJh
bWVzIGFsaXZlIGJlY2F1c2Ugb2YgdGhlIHRyYWNlYmFjawotICAgICAgICAgICAgICAgIHB5LmJ1
aWx0aW4uX3JlcmFpc2UoKmUpCi0KKyAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlv
biBhcyBlOgorICAgICAgICAgICAgICAgICAgICAjIFhYWCBPbmx5IGZpcnN0IGV4Y2VwdGlvbiB3
aWxsIGJlIHNlZW4gYnkgdXNlciwKKyAgICAgICAgICAgICAgICAgICAgIyAgICAgaWRlYWxseSBh
bGwgc2hvdWxkIGJlIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICBpZiBleGMgaXMgTm9u
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YyA9IGUKKyAgICAgICAgICAgIGlmIGV4YzoK
KyAgICAgICAgICAgICAgICByYWlzZSBleGMKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAg
IGhvb2sgPSBzZWxmLl9maXh0dXJlbWFuYWdlci5zZXNzaW9uLmdldGhvb2twcm94eShyZXF1ZXN0
Lm5vZGUuZnNwYXRoKQogICAgICAgICAgICAgaG9vay5weXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFs
aXplcihmaXh0dXJlZGVmPXNlbGYsIHJlcXVlc3Q9cmVxdWVzdCkKLSAgICAgICAgICAgICMgZXZl
biBpZiBmaW5hbGl6YXRpb24gZmFpbHMsIHdlIGludmFsaWRhdGUKLSAgICAgICAgICAgICMgdGhl
IGNhY2hlZCBmaXh0dXJlIHZhbHVlIGFuZCByZW1vdmUKLSAgICAgICAgICAgICMgYWxsIGZpbmFs
aXplcnMgYmVjYXVzZSB0aGV5IG1heSBiZSBib3VuZCBtZXRob2RzIHdoaWNoIHdpbGwKLSAgICAg
ICAgICAgICMga2VlcCBpbnN0YW5jZXMgYWxpdmUKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2Vs
ZiwgImNhY2hlZF9yZXN1bHQiKToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5jYWNoZWRfcmVz
dWx0CisgICAgICAgICAgICAjIEV2ZW4gaWYgZmluYWxpemF0aW9uIGZhaWxzLCB3ZSBpbnZhbGlk
YXRlIHRoZSBjYWNoZWQgZml4dHVyZQorICAgICAgICAgICAgIyB2YWx1ZSBhbmQgcmVtb3ZlIGFs
bCBmaW5hbGl6ZXJzIGJlY2F1c2UgdGhleSBtYXkgYmUgYm91bmQgbWV0aG9kcworICAgICAgICAg
ICAgIyB3aGljaCB3aWxsIGtlZXAgaW5zdGFuY2VzIGFsaXZlLgorICAgICAgICAgICAgc2VsZi5j
YWNoZWRfcmVzdWx0ID0gTm9uZQogICAgICAgICAgICAgc2VsZi5fZmluYWxpemVycyA9IFtdCiAK
LSAgICBkZWYgZXhlY3V0ZShzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIyBnZXQgcmVxdWlyZWQg
YXJndW1lbnRzIGFuZCByZWdpc3RlciBvdXIgb3duIGZpbmlzaCgpCi0gICAgICAgICMgd2l0aCB0
aGVpciBmaW5hbGl6YXRpb24KKyAgICBkZWYgZXhlY3V0ZShzZWxmLCByZXF1ZXN0OiBTdWJSZXF1
ZXN0KSAtPiBfRml4dHVyZVZhbHVlOgorICAgICAgICAjIEdldCByZXF1aXJlZCBhcmd1bWVudHMg
YW5kIHJlZ2lzdGVyIG91ciBvd24gZmluaXNoKCkKKyAgICAgICAgIyB3aXRoIHRoZWlyIGZpbmFs
aXphdGlvbi4KICAgICAgICAgZm9yIGFyZ25hbWUgaW4gc2VsZi5hcmduYW1lczoKICAgICAgICAg
ICAgIGZpeHR1cmVkZWYgPSByZXF1ZXN0Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkK
ICAgICAgICAgICAgIGlmIGFyZ25hbWUgIT0gInJlcXVlc3QiOgorICAgICAgICAgICAgICAgICMg
UHNldWRvRml4dHVyZURlZiBpcyBvbmx5IGZvciAicmVxdWVzdCIuCisgICAgICAgICAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoZml4dHVyZWRlZiwgRml4dHVyZURlZikKICAgICAgICAgICAgICAg
ICBmaXh0dXJlZGVmLmFkZGZpbmFsaXplcihmdW5jdG9vbHMucGFydGlhbChzZWxmLmZpbmlzaCwg
cmVxdWVzdD1yZXF1ZXN0KSkKIAotICAgICAgICBteV9jYWNoZV9rZXkgPSByZXF1ZXN0LnBhcmFt
X2luZGV4Ci0gICAgICAgIGNhY2hlZF9yZXN1bHQgPSBnZXRhdHRyKHNlbGYsICJjYWNoZWRfcmVz
dWx0IiwgTm9uZSkKLSAgICAgICAgaWYgY2FjaGVkX3Jlc3VsdCBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHJlc3VsdCwgY2FjaGVfa2V5LCBlcnIgPSBjYWNoZWRfcmVzdWx0Ci0gICAgICAgICAg
ICBpZiBteV9jYWNoZV9rZXkgPT0gY2FjaGVfa2V5OgotICAgICAgICAgICAgICAgIGlmIGVyciBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcHkuYnVpbHRpbi5fcmVyYWlzZSgqZXJy
KQorICAgICAgICBteV9jYWNoZV9rZXkgPSBzZWxmLmNhY2hlX2tleShyZXF1ZXN0KQorICAgICAg
ICBpZiBzZWxmLmNhY2hlZF9yZXN1bHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIG5vdGU6
IGNvbXBhcmlzb24gd2l0aCBgPT1gIGNhbiBmYWlsIChvciBiZSBleHBlbnNpdmUpIGZvciBlLmcu
CisgICAgICAgICAgICAjIG51bXB5IGFycmF5cyAoIzY0OTcpLgorICAgICAgICAgICAgY2FjaGVf
a2V5ID0gc2VsZi5jYWNoZWRfcmVzdWx0WzFdCisgICAgICAgICAgICBpZiBteV9jYWNoZV9rZXkg
aXMgY2FjaGVfa2V5OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY2FjaGVkX3Jlc3VsdFsyXSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgXywgdmFsLCB0YiA9IHNlbGYuY2FjaGVk
X3Jlc3VsdFsyXQorICAgICAgICAgICAgICAgICAgICByYWlzZSB2YWwud2l0aF90cmFjZWJhY2so
dGIpCiAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
c2VsZi5jYWNoZWRfcmVzdWx0WzBdCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQK
LSAgICAgICAgICAgICMgd2UgaGF2ZSBhIHByZXZpb3VzIGJ1dCBkaWZmZXJlbnRseSBwYXJhbWV0
cml6ZWQgZml4dHVyZSBpbnN0YW5jZQotICAgICAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHRlYXIg
aXQgZG93biBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgb25lCisgICAgICAgICAgICAjIFdlIGhhdmUg
YSBwcmV2aW91cyBidXQgZGlmZmVyZW50bHkgcGFyYW1ldHJpemVkIGZpeHR1cmUgaW5zdGFuY2UK
KyAgICAgICAgICAgICMgc28gd2UgbmVlZCB0byB0ZWFyIGl0IGRvd24gYmVmb3JlIGNyZWF0aW5n
IGEgbmV3IG9uZS4KICAgICAgICAgICAgIHNlbGYuZmluaXNoKHJlcXVlc3QpCi0gICAgICAgICAg
ICBhc3NlcnQgbm90IGhhc2F0dHIoc2VsZiwgImNhY2hlZF9yZXN1bHQiKQorICAgICAgICAgICAg
YXNzZXJ0IHNlbGYuY2FjaGVkX3Jlc3VsdCBpcyBOb25lCiAKICAgICAgICAgaG9vayA9IHNlbGYu
X2ZpeHR1cmVtYW5hZ2VyLnNlc3Npb24uZ2V0aG9va3Byb3h5KHJlcXVlc3Qubm9kZS5mc3BhdGgp
Ci0gICAgICAgIHJldHVybiBob29rLnB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1cmVkZWY9c2Vs
ZiwgcmVxdWVzdD1yZXF1ZXN0KQorICAgICAgICByZXN1bHQgPSBob29rLnB5dGVzdF9maXh0dXJl
X3NldHVwKGZpeHR1cmVkZWY9c2VsZiwgcmVxdWVzdD1yZXF1ZXN0KQorICAgICAgICByZXR1cm4g
cmVzdWx0CiAKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoCi0gICAg
ICAgICAgICAiPEZpeHR1cmVEZWYgbmFtZT0lciBzY29wZT0lciBiYXNlaWQ9JXIgPiIKLSAgICAg
ICAgICAgICUgKHNlbGYuYXJnbmFtZSwgc2VsZi5zY29wZSwgc2VsZi5iYXNlaWQpCisgICAgZGVm
IGNhY2hlX2tleShzZWxmLCByZXF1ZXN0OiBTdWJSZXF1ZXN0KSAtPiBvYmplY3Q6CisgICAgICAg
IHJldHVybiByZXF1ZXN0LnBhcmFtX2luZGV4IGlmIG5vdCBoYXNhdHRyKHJlcXVlc3QsICJwYXJh
bSIpIGVsc2UgcmVxdWVzdC5wYXJhbQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoK
KyAgICAgICAgcmV0dXJuICI8Rml4dHVyZURlZiBhcmduYW1lPXshcn0gc2NvcGU9eyFyfSBiYXNl
aWQ9eyFyfT4iLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuYXJnbmFtZSwgc2VsZi5zY29wZSwg
c2VsZi5iYXNlaWQKICAgICAgICAgKQogCiAKLWRlZiBweXRlc3RfZml4dHVyZV9zZXR1cChmaXh0
dXJlZGVmLCByZXF1ZXN0KToKLSAgICAiIiIgRXhlY3V0aW9uIG9mIGZpeHR1cmUgc2V0dXAuICIi
IgotICAgIGt3YXJncyA9IHt9Ci0gICAgZm9yIGFyZ25hbWUgaW4gZml4dHVyZWRlZi5hcmduYW1l
czoKLSAgICAgICAgZml4ZGVmID0gcmVxdWVzdC5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVmKGFyZ25h
bWUpCi0gICAgICAgIHJlc3VsdCwgYXJnX2NhY2hlX2tleSwgZXhjID0gZml4ZGVmLmNhY2hlZF9y
ZXN1bHQKLSAgICAgICAgcmVxdWVzdC5fY2hlY2tfc2NvcGUoYXJnbmFtZSwgcmVxdWVzdC5zY29w
ZSwgZml4ZGVmLnNjb3BlKQotICAgICAgICBrd2FyZ3NbYXJnbmFtZV0gPSByZXN1bHQKLQorZGVm
IHJlc29sdmVfZml4dHVyZV9mdW5jdGlvbigKKyAgICBmaXh0dXJlZGVmOiBGaXh0dXJlRGVmW19G
aXh0dXJlVmFsdWVdLCByZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdAorKSAtPiAiX0ZpeHR1cmVGdW5j
W19GaXh0dXJlVmFsdWVdIjoKKyAgICAiIiJHZXQgdGhlIGFjdHVhbCBjYWxsYWJsZSB0aGF0IGNh
biBiZSBjYWxsZWQgdG8gb2J0YWluIHRoZSBmaXh0dXJlCisgICAgdmFsdWUsIGRlYWxpbmcgd2l0
aCB1bml0dGVzdC1zcGVjaWZpYyBpbnN0YW5jZXMgYW5kIGJvdW5kIG1ldGhvZHMuIiIiCiAgICAg
Zml4dHVyZWZ1bmMgPSBmaXh0dXJlZGVmLmZ1bmMKICAgICBpZiBmaXh0dXJlZGVmLnVuaXR0ZXN0
OgogICAgICAgICBpZiByZXF1ZXN0Lmluc3RhbmNlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
IyBiaW5kIHRoZSB1bmJvdW5kIG1ldGhvZCB0byB0aGUgVGVzdENhc2UgaW5zdGFuY2UKLSAgICAg
ICAgICAgIGZpeHR1cmVmdW5jID0gZml4dHVyZWRlZi5mdW5jLl9fZ2V0X18ocmVxdWVzdC5pbnN0
YW5jZSkKKyAgICAgICAgICAgICMgQmluZCB0aGUgdW5ib3VuZCBtZXRob2QgdG8gdGhlIFRlc3RD
YXNlIGluc3RhbmNlLgorICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBmaXh0dXJlZGVmLmZ1bmMu
X19nZXRfXyhyZXF1ZXN0Lmluc3RhbmNlKSAgIyB0eXBlOiBpZ25vcmVbdW5pb24tYXR0cl0KICAg
ICBlbHNlOgotICAgICAgICAjIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGJvdW5k
IHRvIHRoZSBhY3R1YWwKKyAgICAgICAgIyBUaGUgZml4dHVyZSBmdW5jdGlvbiBuZWVkcyB0byBi
ZSBib3VuZCB0byB0aGUgYWN0dWFsCiAgICAgICAgICMgcmVxdWVzdC5pbnN0YW5jZSBzbyB0aGF0
IGNvZGUgd29ya2luZyB3aXRoICJmaXh0dXJlZGVmIiBiZWhhdmVzCiAgICAgICAgICMgYXMgZXhw
ZWN0ZWQuCiAgICAgICAgIGlmIHJlcXVlc3QuaW5zdGFuY2UgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAjIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBmaXh0dXJlIGlzIGRlZmluZWQgbm90IGluIGEg
dGVzdCBjbGFzcywgYnV0IHNvbWUgb3RoZXIgY2xhc3MKKyAgICAgICAgICAgICMgKGZvciBleGFt
cGxlIGEgcGx1Z2luIGNsYXNzIHdpdGggYSBmaXh0dXJlKSwgc2VlICMyMjcwLgorICAgICAgICAg
ICAgaWYgaGFzYXR0cihmaXh0dXJlZnVuYywgIl9fc2VsZl9fIikgYW5kIG5vdCBpc2luc3RhbmNl
KAorICAgICAgICAgICAgICAgIHJlcXVlc3QuaW5zdGFuY2UsIGZpeHR1cmVmdW5jLl9fc2VsZl9f
Ll9fY2xhc3NfXyAgIyB0eXBlOiBpZ25vcmVbdW5pb24tYXR0cl0KKyAgICAgICAgICAgICk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZpeHR1cmVmdW5jCiAgICAgICAgICAgICBmaXh0dXJlZnVu
YyA9IGdldGltZnVuYyhmaXh0dXJlZGVmLmZ1bmMpCiAgICAgICAgICAgICBpZiBmaXh0dXJlZnVu
YyAhPSBmaXh0dXJlZGVmLmZ1bmM6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBmaXh0
dXJlZnVuYy5fX2dldF9fKHJlcXVlc3QuaW5zdGFuY2UpCi0gICAgbXlfY2FjaGVfa2V5ID0gcmVx
dWVzdC5wYXJhbV9pbmRleAorICAgICAgICAgICAgICAgIGZpeHR1cmVmdW5jID0gZml4dHVyZWZ1
bmMuX19nZXRfXyhyZXF1ZXN0Lmluc3RhbmNlKSAgIyB0eXBlOiBpZ25vcmVbdW5pb24tYXR0cl0K
KyAgICByZXR1cm4gZml4dHVyZWZ1bmMKKworCitkZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoCisg
ICAgZml4dHVyZWRlZjogRml4dHVyZURlZltfRml4dHVyZVZhbHVlXSwgcmVxdWVzdDogU3ViUmVx
dWVzdAorKSAtPiBfRml4dHVyZVZhbHVlOgorICAgICIiIkV4ZWN1dGlvbiBvZiBmaXh0dXJlIHNl
dHVwLiIiIgorICAgIGt3YXJncyA9IHt9CisgICAgZm9yIGFyZ25hbWUgaW4gZml4dHVyZWRlZi5h
cmduYW1lczoKKyAgICAgICAgZml4ZGVmID0gcmVxdWVzdC5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVm
KGFyZ25hbWUpCisgICAgICAgIGFzc2VydCBmaXhkZWYuY2FjaGVkX3Jlc3VsdCBpcyBub3QgTm9u
ZQorICAgICAgICByZXN1bHQsIGFyZ19jYWNoZV9rZXksIGV4YyA9IGZpeGRlZi5jYWNoZWRfcmVz
dWx0CisgICAgICAgIHJlcXVlc3QuX2NoZWNrX3Njb3BlKGFyZ25hbWUsIHJlcXVlc3Quc2NvcGUs
IGZpeGRlZi5zY29wZSkKKyAgICAgICAga3dhcmdzW2FyZ25hbWVdID0gcmVzdWx0CisKKyAgICBm
aXh0dXJlZnVuYyA9IHJlc29sdmVfZml4dHVyZV9mdW5jdGlvbihmaXh0dXJlZGVmLCByZXF1ZXN0
KQorICAgIG15X2NhY2hlX2tleSA9IGZpeHR1cmVkZWYuY2FjaGVfa2V5KHJlcXVlc3QpCiAgICAg
dHJ5OgogICAgICAgICByZXN1bHQgPSBjYWxsX2ZpeHR1cmVfZnVuYyhmaXh0dXJlZnVuYywgcmVx
dWVzdCwga3dhcmdzKQogICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgIGZpeHR1cmVk
ZWYuY2FjaGVkX3Jlc3VsdCA9IChOb25lLCBteV9jYWNoZV9rZXksIHN5cy5leGNfaW5mbygpKQor
ICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgIGFzc2VydCBleGNfaW5m
b1swXSBpcyBub3QgTm9uZQorICAgICAgICBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQgPSAoTm9u
ZSwgbXlfY2FjaGVfa2V5LCBleGNfaW5mbykKICAgICAgICAgcmFpc2UKICAgICBmaXh0dXJlZGVm
LmNhY2hlZF9yZXN1bHQgPSAocmVzdWx0LCBteV9jYWNoZV9rZXksIE5vbmUpCiAgICAgcmV0dXJu
IHJlc3VsdAogCiAKLWRlZiBfZW5zdXJlX2ltbXV0YWJsZV9pZHMoaWRzKToKK2RlZiBfZW5zdXJl
X2ltbXV0YWJsZV9pZHMoCisgICAgaWRzOiBPcHRpb25hbFsKKyAgICAgICAgVW5pb25bCisgICAg
ICAgICAgICBJdGVyYWJsZVtVbmlvbltOb25lLCBzdHIsIGZsb2F0LCBpbnQsIGJvb2xdXSwKKyAg
ICAgICAgICAgIENhbGxhYmxlW1tBbnldLCBPcHRpb25hbFtvYmplY3RdXSwKKyAgICAgICAgXQor
ICAgIF0sCispIC0+IE9wdGlvbmFsWworICAgIFVuaW9uWworICAgICAgICBUdXBsZVtVbmlvbltO
b25lLCBzdHIsIGZsb2F0LCBpbnQsIGJvb2xdLCAuLi5dLAorICAgICAgICBDYWxsYWJsZVtbQW55
XSwgT3B0aW9uYWxbb2JqZWN0XV0sCisgICAgXQorXToKICAgICBpZiBpZHMgaXMgTm9uZToKLSAg
ICAgICAgcmV0dXJuCisgICAgICAgIHJldHVybiBOb25lCiAgICAgaWYgY2FsbGFibGUoaWRzKToK
ICAgICAgICAgcmV0dXJuIGlkcwogICAgIHJldHVybiB0dXBsZShpZHMpCiAKIAorZGVmIF9wYXJh
bXNfY29udmVydGVyKAorICAgIHBhcmFtczogT3B0aW9uYWxbSXRlcmFibGVbb2JqZWN0XV0sCisp
IC0+IE9wdGlvbmFsW1R1cGxlW29iamVjdCwgLi4uXV06CisgICAgcmV0dXJuIHR1cGxlKHBhcmFt
cykgaWYgcGFyYW1zIGlzIG5vdCBOb25lIGVsc2UgTm9uZQorCisKK2RlZiB3cmFwX2Z1bmN0aW9u
X3RvX2Vycm9yX291dF9pZl9jYWxsZWRfZGlyZWN0bHkoZnVuY3Rpb24sIGZpeHR1cmVfbWFya2Vy
KToKKyAgICAiIiJXcmFwIHRoZSBnaXZlbiBmaXh0dXJlIGZ1bmN0aW9uIHNvIHdlIGNhbiByYWlz
ZSBhbiBlcnJvciBhYm91dCBpdCBiZWluZyBjYWxsZWQgZGlyZWN0bHksCisgICAgaW5zdGVhZCBv
ZiB1c2VkIGFzIGFuIGFyZ3VtZW50IGluIGEgdGVzdCBmdW5jdGlvbi4iIiIKKyAgICBtZXNzYWdl
ID0gKAorICAgICAgICAnRml4dHVyZSAie25hbWV9IiBjYWxsZWQgZGlyZWN0bHkuIEZpeHR1cmVz
IGFyZSBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LFxuJworICAgICAgICAiYnV0IGFy
ZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0ZXN0IGZ1bmN0aW9ucyByZXF1ZXN0IHRoZW0g
YXMgcGFyYW1ldGVycy5cbiIKKyAgICAgICAgIlNlZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9l
bi9zdGFibGUvZml4dHVyZS5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGZpeHR1cmVz
LCBhbmRcbiIKKyAgICAgICAgImh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9kZXBy
ZWNhdGlvbnMuaHRtbCNjYWxsaW5nLWZpeHR1cmVzLWRpcmVjdGx5IGFib3V0IGhvdyB0byB1cGRh
dGUgeW91ciBjb2RlLiIKKyAgICApLmZvcm1hdChuYW1lPWZpeHR1cmVfbWFya2VyLm5hbWUgb3Ig
ZnVuY3Rpb24uX19uYW1lX18pCisKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmN0aW9uKQorICAg
IGRlZiByZXN1bHQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgZmFpbChtZXNzYWdlLCBweXRy
YWNlPUZhbHNlKQorCisgICAgIyBLZWVwIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgZnVuY3Rp
b24gaW4gb3VyIG93biBjdXN0b20gYXR0cmlidXRlIHNvIHdlIGRvbid0IHVud3JhcAorICAgICMg
ZnVydGhlciB0aGFuIHRoaXMgcG9pbnQgYW5kIGxvc2UgdXNlZnVsIHdyYXBwaW5ncyBsaWtlIEBt
b2NrLnBhdGNoICgjMzc3NCkuCisgICAgcmVzdWx0Ll9fcHl0ZXN0X3dyYXBwZWRfXyA9IF9QeXRl
c3RXcmFwcGVyKGZ1bmN0aW9uKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorCisgICAg
cmV0dXJuIHJlc3VsdAorCisKK0BmaW5hbAogQGF0dHIucyhmcm96ZW49VHJ1ZSkKLWNsYXNzIEZp
eHR1cmVGdW5jdGlvbk1hcmtlcihvYmplY3QpOgotICAgIHNjb3BlID0gYXR0ci5pYigpCi0gICAg
cGFyYW1zID0gYXR0ci5pYihjb252ZXJ0ZXI9YXR0ci5jb252ZXJ0ZXJzLm9wdGlvbmFsKHR1cGxl
KSkKLSAgICBhdXRvdXNlID0gYXR0ci5pYihkZWZhdWx0PUZhbHNlKQotICAgIGlkcyA9IGF0dHIu
aWIoZGVmYXVsdD1Ob25lLCBjb252ZXJ0ZXI9X2Vuc3VyZV9pbW11dGFibGVfaWRzKQotICAgIG5h
bWUgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkKK2NsYXNzIEZpeHR1cmVGdW5jdGlvbk1hcmtlcjoK
KyAgICBzY29wZSA9IGF0dHIuaWIodHlwZT0iVW5pb25bX1Njb3BlLCBDYWxsYWJsZVtbc3RyLCBD
b25maWddLCBfU2NvcGVdXSIpCisgICAgcGFyYW1zID0gYXR0ci5pYih0eXBlPU9wdGlvbmFsW1R1
cGxlW29iamVjdCwgLi4uXV0sIGNvbnZlcnRlcj1fcGFyYW1zX2NvbnZlcnRlcikKKyAgICBhdXRv
dXNlID0gYXR0ci5pYih0eXBlPWJvb2wsIGRlZmF1bHQ9RmFsc2UpCisgICAgaWRzID0gYXR0ci5p
YigKKyAgICAgICAgdHlwZT1VbmlvblsKKyAgICAgICAgICAgIFR1cGxlW1VuaW9uW05vbmUsIHN0
ciwgZmxvYXQsIGludCwgYm9vbF0sIC4uLl0sCisgICAgICAgICAgICBDYWxsYWJsZVtbQW55XSwg
T3B0aW9uYWxbb2JqZWN0XV0sCisgICAgICAgIF0sCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgY29udmVydGVyPV9lbnN1cmVfaW1tdXRhYmxlX2lkcywKKyAgICApCisgICAgbmFtZSA9
IGF0dHIuaWIodHlwZT1PcHRpb25hbFtzdHJdLCBkZWZhdWx0PU5vbmUpCiAKLSAgICBkZWYgX19j
YWxsX18oc2VsZiwgZnVuY3Rpb24pOgotICAgICAgICBpZiBpc2NsYXNzKGZ1bmN0aW9uKToKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNsYXNzIGZpeHR1cmVzIG5vdCBzdXBwb3J0ZWQg
KG1heSBiZSBpbiB0aGUgZnV0dXJlKSIpCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmN0aW9u
OiBfRml4dHVyZUZ1bmN0aW9uKSAtPiBfRml4dHVyZUZ1bmN0aW9uOgorICAgICAgICBpZiBpbnNw
ZWN0LmlzY2xhc3MoZnVuY3Rpb24pOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2xh
c3MgZml4dHVyZXMgbm90IHN1cHBvcnRlZCAobWF5YmUgaW4gdGhlIGZ1dHVyZSkiKQogCiAgICAg
ICAgIGlmIGdldGF0dHIoZnVuY3Rpb24sICJfcHl0ZXN0Zml4dHVyZWZ1bmN0aW9uIiwgRmFsc2Up
OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiZml4dHVy
ZSBpcyBiZWluZyBhcHBsaWVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBzYW1lIGZ1bmN0aW9uIgog
ICAgICAgICAgICAgKQogCi0gICAgICAgIGZ1bmN0aW9uLl9weXRlc3RmaXh0dXJlZnVuY3Rpb24g
PSBzZWxmCisgICAgICAgIGZ1bmN0aW9uID0gd3JhcF9mdW5jdGlvbl90b19lcnJvcl9vdXRfaWZf
Y2FsbGVkX2RpcmVjdGx5KGZ1bmN0aW9uLCBzZWxmKQorCisgICAgICAgIG5hbWUgPSBzZWxmLm5h
bWUgb3IgZnVuY3Rpb24uX19uYW1lX18KKyAgICAgICAgaWYgbmFtZSA9PSAicmVxdWVzdCI6Cisg
ICAgICAgICAgICBsb2NhdGlvbiA9IGdldGxvY2F0aW9uKGZ1bmN0aW9uKQorICAgICAgICAgICAg
ZmFpbCgKKyAgICAgICAgICAgICAgICAiJ3JlcXVlc3QnIGlzIGEgcmVzZXJ2ZWQgd29yZCBmb3Ig
Zml4dHVyZXMsIHVzZSBhbm90aGVyIG5hbWU6XG4gIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBweXRy
YWNlPUZhbHNlLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1
c2UgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy8yMDg3LgorICAgICAgICBm
dW5jdGlvbi5fcHl0ZXN0Zml4dHVyZWZ1bmN0aW9uID0gc2VsZiAgIyB0eXBlOiBpZ25vcmVbYXR0
ci1kZWZpbmVkXQogICAgICAgICByZXR1cm4gZnVuY3Rpb24KIAogCi1kZWYgZml4dHVyZShzY29w
ZT0iZnVuY3Rpb24iLCBwYXJhbXM9Tm9uZSwgYXV0b3VzZT1GYWxzZSwgaWRzPU5vbmUsIG5hbWU9
Tm9uZSk6CitAb3ZlcmxvYWQKK2RlZiBmaXh0dXJlKAorICAgIGZpeHR1cmVfZnVuY3Rpb246IF9G
aXh0dXJlRnVuY3Rpb24sCisgICAgKiwKKyAgICBzY29wZTogIlVuaW9uW19TY29wZSwgQ2FsbGFi
bGVbW3N0ciwgQ29uZmlnXSwgX1Njb3BlXV0iID0gLi4uLAorICAgIHBhcmFtczogT3B0aW9uYWxb
SXRlcmFibGVbb2JqZWN0XV0gPSAuLi4sCisgICAgYXV0b3VzZTogYm9vbCA9IC4uLiwKKyAgICBp
ZHM6IE9wdGlvbmFsWworICAgICAgICBVbmlvblsKKyAgICAgICAgICAgIEl0ZXJhYmxlW1VuaW9u
W05vbmUsIHN0ciwgZmxvYXQsIGludCwgYm9vbF1dLAorICAgICAgICAgICAgQ2FsbGFibGVbW0Fu
eV0sIE9wdGlvbmFsW29iamVjdF1dLAorICAgICAgICBdCisgICAgXSA9IC4uLiwKKyAgICBuYW1l
OiBPcHRpb25hbFtzdHJdID0gLi4uCispIC0+IF9GaXh0dXJlRnVuY3Rpb246CisgICAgLi4uCisK
KworQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKK2RlZiBmaXh0dXJlKCAgIyBub3FhOiBGODExCisg
ICAgZml4dHVyZV9mdW5jdGlvbjogTm9uZSA9IC4uLiwKKyAgICAqLAorICAgIHNjb3BlOiAiVW5p
b25bX1Njb3BlLCBDYWxsYWJsZVtbc3RyLCBDb25maWddLCBfU2NvcGVdXSIgPSAuLi4sCisgICAg
cGFyYW1zOiBPcHRpb25hbFtJdGVyYWJsZVtvYmplY3RdXSA9IC4uLiwKKyAgICBhdXRvdXNlOiBi
b29sID0gLi4uLAorICAgIGlkczogT3B0aW9uYWxbCisgICAgICAgIFVuaW9uWworICAgICAgICAg
ICAgSXRlcmFibGVbVW5pb25bTm9uZSwgc3RyLCBmbG9hdCwgaW50LCBib29sXV0sCisgICAgICAg
ICAgICBDYWxsYWJsZVtbQW55XSwgT3B0aW9uYWxbb2JqZWN0XV0sCisgICAgICAgIF0KKyAgICBd
ID0gLi4uLAorICAgIG5hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lCispIC0+IEZpeHR1cmVGdW5j
dGlvbk1hcmtlcjoKKyAgICAuLi4KKworCitkZWYgZml4dHVyZSggICMgbm9xYTogRjgxMQorICAg
IGZpeHR1cmVfZnVuY3Rpb246IE9wdGlvbmFsW19GaXh0dXJlRnVuY3Rpb25dID0gTm9uZSwKKyAg
ICAqLAorICAgIHNjb3BlOiAiVW5pb25bX1Njb3BlLCBDYWxsYWJsZVtbc3RyLCBDb25maWddLCBf
U2NvcGVdXSIgPSAiZnVuY3Rpb24iLAorICAgIHBhcmFtczogT3B0aW9uYWxbSXRlcmFibGVbb2Jq
ZWN0XV0gPSBOb25lLAorICAgIGF1dG91c2U6IGJvb2wgPSBGYWxzZSwKKyAgICBpZHM6IE9wdGlv
bmFsWworICAgICAgICBVbmlvblsKKyAgICAgICAgICAgIEl0ZXJhYmxlW1VuaW9uW05vbmUsIHN0
ciwgZmxvYXQsIGludCwgYm9vbF1dLAorICAgICAgICAgICAgQ2FsbGFibGVbW0FueV0sIE9wdGlv
bmFsW29iamVjdF1dLAorICAgICAgICBdCisgICAgXSA9IE5vbmUsCisgICAgbmFtZTogT3B0aW9u
YWxbc3RyXSA9IE5vbmUKKykgLT4gVW5pb25bRml4dHVyZUZ1bmN0aW9uTWFya2VyLCBfRml4dHVy
ZUZ1bmN0aW9uXToKICAgICAiIiJEZWNvcmF0b3IgdG8gbWFyayBhIGZpeHR1cmUgZmFjdG9yeSBm
dW5jdGlvbi4KIAotICAgIFRoaXMgZGVjb3JhdG9yIGNhbiBiZSB1c2VkICh3aXRoIG9yIHdpdGhv
dXQgcGFyYW1ldGVycykgdG8gZGVmaW5lIGEKLSAgICBmaXh0dXJlIGZ1bmN0aW9uLiAgVGhlIG5h
bWUgb2YgdGhlIGZpeHR1cmUgZnVuY3Rpb24gY2FuIGxhdGVyIGJlCi0gICAgcmVmZXJlbmNlZCB0
byBjYXVzZSBpdHMgaW52b2NhdGlvbiBhaGVhZCBvZiBydW5uaW5nIHRlc3RzOiB0ZXN0Ci0gICAg
bW9kdWxlcyBvciBjbGFzc2VzIGNhbiB1c2UgdGhlIHB5dGVzdC5tYXJrLnVzZWZpeHR1cmVzKGZp
eHR1cmVuYW1lKQotICAgIG1hcmtlci4gIFRlc3QgZnVuY3Rpb25zIGNhbiBkaXJlY3RseSB1c2Ug
Zml4dHVyZSBuYW1lcyBhcyBpbnB1dAotICAgIGFyZ3VtZW50cyBpbiB3aGljaCBjYXNlIHRoZSBm
aXh0dXJlIGluc3RhbmNlIHJldHVybmVkIGZyb20gdGhlIGZpeHR1cmUKLSAgICBmdW5jdGlvbiB3
aWxsIGJlIGluamVjdGVkLgotCi0gICAgOmFyZyBzY29wZTogdGhlIHNjb3BlIGZvciB3aGljaCB0
aGlzIGZpeHR1cmUgaXMgc2hhcmVkLCBvbmUgb2YKLSAgICAgICAgICAgICAgICAiZnVuY3Rpb24i
IChkZWZhdWx0KSwgImNsYXNzIiwgIm1vZHVsZSIgb3IgInNlc3Npb24iLgotCi0gICAgOmFyZyBw
YXJhbXM6IGFuIG9wdGlvbmFsIGxpc3Qgb2YgcGFyYW1ldGVycyB3aGljaCB3aWxsIGNhdXNlIG11
bHRpcGxlCi0gICAgICAgICAgICAgICAgaW52b2NhdGlvbnMgb2YgdGhlIGZpeHR1cmUgZnVuY3Rp
b24gYW5kIGFsbCBvZiB0aGUgdGVzdHMKLSAgICAgICAgICAgICAgICB1c2luZyBpdC4KLQotICAg
IDphcmcgYXV0b3VzZTogaWYgVHJ1ZSwgdGhlIGZpeHR1cmUgZnVuYyBpcyBhY3RpdmF0ZWQgZm9y
IGFsbCB0ZXN0cyB0aGF0Ci0gICAgICAgICAgICAgICAgY2FuIHNlZSBpdC4gIElmIEZhbHNlICh0
aGUgZGVmYXVsdCkgdGhlbiBhbiBleHBsaWNpdAotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBp
cyBuZWVkZWQgdG8gYWN0aXZhdGUgdGhlIGZpeHR1cmUuCi0KLSAgICA6YXJnIGlkczogbGlzdCBv
ZiBzdHJpbmcgaWRzIGVhY2ggY29ycmVzcG9uZGluZyB0byB0aGUgcGFyYW1zCi0gICAgICAgICAg
ICAgICAgc28gdGhhdCB0aGV5IGFyZSBwYXJ0IG9mIHRoZSB0ZXN0IGlkLiBJZiBubyBpZHMgYXJl
IHByb3ZpZGVkCi0gICAgICAgICAgICAgICAgdGhleSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0
aWNhbGx5IGZyb20gdGhlIHBhcmFtcy4KLQotICAgIDphcmcgbmFtZTogdGhlIG5hbWUgb2YgdGhl
IGZpeHR1cmUuIFRoaXMgZGVmYXVsdHMgdG8gdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAg
ICAgZGVjb3JhdGVkIGZ1bmN0aW9uLiBJZiBhIGZpeHR1cmUgaXMgdXNlZCBpbiB0aGUgc2FtZSBt
b2R1bGUgaW4KLSAgICAgICAgICAgICAgICB3aGljaCBpdCBpcyBkZWZpbmVkLCB0aGUgZnVuY3Rp
b24gbmFtZSBvZiB0aGUgZml4dHVyZSB3aWxsIGJlCi0gICAgICAgICAgICAgICAgc2hhZG93ZWQg
YnkgdGhlIGZ1bmN0aW9uIGFyZyB0aGF0IHJlcXVlc3RzIHRoZSBmaXh0dXJlOyBvbmUgd2F5Ci0g
ICAgICAgICAgICAgICAgdG8gcmVzb2x2ZSB0aGlzIGlzIHRvIG5hbWUgdGhlIGRlY29yYXRlZCBm
dW5jdGlvbgotICAgICAgICAgICAgICAgIGBgZml4dHVyZV88Zml4dHVyZW5hbWU+YGAgYW5kIHRo
ZW4gdXNlCi0gICAgICAgICAgICAgICAgYGBAcHl0ZXN0LmZpeHR1cmUobmFtZT0nPGZpeHR1cmVu
YW1lPicpYGAuCi0KLSAgICBGaXh0dXJlcyBjYW4gb3B0aW9uYWxseSBwcm92aWRlIHRoZWlyIHZh
bHVlcyB0byB0ZXN0IGZ1bmN0aW9ucyB1c2luZyBhIGBgeWllbGRgYCBzdGF0ZW1lbnQsCi0gICAg
aW5zdGVhZCBvZiBgYHJldHVybmBgLiBJbiB0aGlzIGNhc2UsIHRoZSBjb2RlIGJsb2NrIGFmdGVy
IHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkCi0gICAgYXMgdGVhcmRvd24gY29k
ZSByZWdhcmRsZXNzIG9mIHRoZSB0ZXN0IG91dGNvbWUuIEEgZml4dHVyZSBmdW5jdGlvbiBtdXN0
IHlpZWxkIGV4YWN0bHkgb25jZS4KKyAgICBUaGlzIGRlY29yYXRvciBjYW4gYmUgdXNlZCwgd2l0
aCBvciB3aXRob3V0IHBhcmFtZXRlcnMsIHRvIGRlZmluZSBhCisgICAgZml4dHVyZSBmdW5jdGlv
bi4KKworICAgIFRoZSBuYW1lIG9mIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIGNhbiBsYXRlciBiZSBy
ZWZlcmVuY2VkIHRvIGNhdXNlIGl0cworICAgIGludm9jYXRpb24gYWhlYWQgb2YgcnVubmluZyB0
ZXN0czogdGVzdCBtb2R1bGVzIG9yIGNsYXNzZXMgY2FuIHVzZSB0aGUKKyAgICBgYHB5dGVzdC5t
YXJrLnVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lKWBgIG1hcmtlci4KKworICAgIFRlc3QgZnVuY3Rp
b25zIGNhbiBkaXJlY3RseSB1c2UgZml4dHVyZSBuYW1lcyBhcyBpbnB1dCBhcmd1bWVudHMgaW4g
d2hpY2gKKyAgICBjYXNlIHRoZSBmaXh0dXJlIGluc3RhbmNlIHJldHVybmVkIGZyb20gdGhlIGZp
eHR1cmUgZnVuY3Rpb24gd2lsbCBiZQorICAgIGluamVjdGVkLgorCisgICAgRml4dHVyZXMgY2Fu
IHByb3ZpZGUgdGhlaXIgdmFsdWVzIHRvIHRlc3QgZnVuY3Rpb25zIHVzaW5nIGBgcmV0dXJuYGAg
b3IKKyAgICBgYHlpZWxkYGAgc3RhdGVtZW50cy4gV2hlbiB1c2luZyBgYHlpZWxkYGAgdGhlIGNv
ZGUgYmxvY2sgYWZ0ZXIgdGhlCisgICAgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBh
cyB0ZWFyZG93biBjb2RlIHJlZ2FyZGxlc3Mgb2YgdGhlIHRlc3QKKyAgICBvdXRjb21lLCBhbmQg
bXVzdCB5aWVsZCBleGFjdGx5IG9uY2UuCisKKyAgICA6cGFyYW0gc2NvcGU6CisgICAgICAgIFRo
ZSBzY29wZSBmb3Igd2hpY2ggdGhpcyBmaXh0dXJlIGlzIHNoYXJlZDsgb25lIG9mIGBgImZ1bmN0
aW9uImBgCisgICAgICAgIChkZWZhdWx0KSwgYGAiY2xhc3MiYGAsIGBgIm1vZHVsZSJgYCwgYGAi
cGFja2FnZSJgYCBvciBgYCJzZXNzaW9uImBgLgorCisgICAgICAgIFRoaXMgcGFyYW1ldGVyIG1h
eSBhbHNvIGJlIGEgY2FsbGFibGUgd2hpY2ggcmVjZWl2ZXMgYGAoZml4dHVyZV9uYW1lLCBjb25m
aWcpYGAKKyAgICAgICAgYXMgcGFyYW1ldGVycywgYW5kIG11c3QgcmV0dXJuIGEgYGBzdHJgYCB3
aXRoIG9uZSBvZiB0aGUgdmFsdWVzIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICBTZWUgOnJl
ZjpgZHluYW1pYyBzY29wZWAgaW4gdGhlIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAg
ICA6cGFyYW0gcGFyYW1zOgorICAgICAgICBBbiBvcHRpb25hbCBsaXN0IG9mIHBhcmFtZXRlcnMg
d2hpY2ggd2lsbCBjYXVzZSBtdWx0aXBsZSBpbnZvY2F0aW9ucworICAgICAgICBvZiB0aGUgZml4
dHVyZSBmdW5jdGlvbiBhbmQgYWxsIG9mIHRoZSB0ZXN0cyB1c2luZyBpdC4gVGhlIGN1cnJlbnQK
KyAgICAgICAgcGFyYW1ldGVyIGlzIGF2YWlsYWJsZSBpbiBgYHJlcXVlc3QucGFyYW1gYC4KKwor
ICAgIDpwYXJhbSBhdXRvdXNlOgorICAgICAgICBJZiBUcnVlLCB0aGUgZml4dHVyZSBmdW5jIGlz
IGFjdGl2YXRlZCBmb3IgYWxsIHRlc3RzIHRoYXQgY2FuIHNlZSBpdC4KKyAgICAgICAgSWYgRmFs
c2UgKHRoZSBkZWZhdWx0KSwgYW4gZXhwbGljaXQgcmVmZXJlbmNlIGlzIG5lZWRlZCB0byBhY3Rp
dmF0ZQorICAgICAgICB0aGUgZml4dHVyZS4KKworICAgIDpwYXJhbSBpZHM6CisgICAgICAgIExp
c3Qgb2Ygc3RyaW5nIGlkcyBlYWNoIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhcmFtcyBzbyB0aGF0
IHRoZXkgYXJlCisgICAgICAgIHBhcnQgb2YgdGhlIHRlc3QgaWQuIElmIG5vIGlkcyBhcmUgcHJv
dmlkZWQgdGhleSB3aWxsIGJlIGdlbmVyYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGZyb20g
dGhlIHBhcmFtcy4KKworICAgIDpwYXJhbSBuYW1lOgorICAgICAgICBUaGUgbmFtZSBvZiB0aGUg
Zml4dHVyZS4gVGhpcyBkZWZhdWx0cyB0byB0aGUgbmFtZSBvZiB0aGUgZGVjb3JhdGVkCisgICAg
ICAgIGZ1bmN0aW9uLiBJZiBhIGZpeHR1cmUgaXMgdXNlZCBpbiB0aGUgc2FtZSBtb2R1bGUgaW4g
d2hpY2ggaXQgaXMKKyAgICAgICAgZGVmaW5lZCwgdGhlIGZ1bmN0aW9uIG5hbWUgb2YgdGhlIGZp
eHR1cmUgd2lsbCBiZSBzaGFkb3dlZCBieSB0aGUKKyAgICAgICAgZnVuY3Rpb24gYXJnIHRoYXQg
cmVxdWVzdHMgdGhlIGZpeHR1cmU7IG9uZSB3YXkgdG8gcmVzb2x2ZSB0aGlzIGlzIHRvCisgICAg
ICAgIG5hbWUgdGhlIGRlY29yYXRlZCBmdW5jdGlvbiBgYGZpeHR1cmVfPGZpeHR1cmVuYW1lPmBg
IGFuZCB0aGVuIHVzZQorICAgICAgICBgYEBweXRlc3QuZml4dHVyZShuYW1lPSc8Zml4dHVyZW5h
bWU+JylgYC4KICAgICAiIiIKLSAgICBpZiBjYWxsYWJsZShzY29wZSkgYW5kIHBhcmFtcyBpcyBO
b25lIGFuZCBhdXRvdXNlIGlzIEZhbHNlOgotICAgICAgICAjIGRpcmVjdCBkZWNvcmF0aW9uCi0g
ICAgICAgIHJldHVybiBGaXh0dXJlRnVuY3Rpb25NYXJrZXIoImZ1bmN0aW9uIiwgcGFyYW1zLCBh
dXRvdXNlLCBuYW1lPW5hbWUpKHNjb3BlKQotICAgIGlmIHBhcmFtcyBpcyBub3QgTm9uZSBhbmQg
bm90IGlzaW5zdGFuY2UocGFyYW1zLCAobGlzdCwgdHVwbGUpKToKLSAgICAgICAgcGFyYW1zID0g
bGlzdChwYXJhbXMpCi0gICAgcmV0dXJuIEZpeHR1cmVGdW5jdGlvbk1hcmtlcihzY29wZSwgcGFy
YW1zLCBhdXRvdXNlLCBpZHM9aWRzLCBuYW1lPW5hbWUpCisgICAgZml4dHVyZV9tYXJrZXIgPSBG
aXh0dXJlRnVuY3Rpb25NYXJrZXIoCisgICAgICAgIHNjb3BlPXNjb3BlLCBwYXJhbXM9cGFyYW1z
LCBhdXRvdXNlPWF1dG91c2UsIGlkcz1pZHMsIG5hbWU9bmFtZSwKKyAgICApCisKKyAgICAjIERp
cmVjdCBkZWNvcmF0aW9uLgorICAgIGlmIGZpeHR1cmVfZnVuY3Rpb246CisgICAgICAgIHJldHVy
biBmaXh0dXJlX21hcmtlcihmaXh0dXJlX2Z1bmN0aW9uKQogCisgICAgcmV0dXJuIGZpeHR1cmVf
bWFya2VyCiAKLWRlZiB5aWVsZF9maXh0dXJlKHNjb3BlPSJmdW5jdGlvbiIsIHBhcmFtcz1Ob25l
LCBhdXRvdXNlPUZhbHNlLCBpZHM9Tm9uZSwgbmFtZT1Ob25lKToKLSAgICAiIiIgKHJldHVybiBh
KSBkZWNvcmF0b3IgdG8gbWFyayBhIHlpZWxkLWZpeHR1cmUgZmFjdG9yeSBmdW5jdGlvbi4KKwor
ZGVmIHlpZWxkX2ZpeHR1cmUoCisgICAgZml4dHVyZV9mdW5jdGlvbj1Ob25lLAorICAgICphcmdz
LAorICAgIHNjb3BlPSJmdW5jdGlvbiIsCisgICAgcGFyYW1zPU5vbmUsCisgICAgYXV0b3VzZT1G
YWxzZSwKKyAgICBpZHM9Tm9uZSwKKyAgICBuYW1lPU5vbmUKKyk6CisgICAgIiIiKFJldHVybiBh
KSBkZWNvcmF0b3IgdG8gbWFyayBhIHlpZWxkLWZpeHR1cmUgZmFjdG9yeSBmdW5jdGlvbi4KIAog
ICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjAKICAgICAgICAgVXNlIDpweTpmdW5jOmBweXRlc3QuZml4
dHVyZWAgZGlyZWN0bHkgaW5zdGVhZC4KICAgICAiIiIKLSAgICBpZiBjYWxsYWJsZShzY29wZSkg
YW5kIHBhcmFtcyBpcyBOb25lIGFuZCBub3QgYXV0b3VzZToKLSAgICAgICAgIyBkaXJlY3QgZGVj
b3JhdGlvbgotICAgICAgICByZXR1cm4gRml4dHVyZUZ1bmN0aW9uTWFya2VyKCJmdW5jdGlvbiIs
IHBhcmFtcywgYXV0b3VzZSwgaWRzPWlkcywgbmFtZT1uYW1lKSgKLSAgICAgICAgICAgIHNjb3Bl
Ci0gICAgICAgICkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gRml4dHVyZUZ1bmN0aW9uTWFy
a2VyKHNjb3BlLCBwYXJhbXMsIGF1dG91c2UsIGlkcz1pZHMsIG5hbWU9bmFtZSkKLQotCi1kZWZh
dWx0ZnVuY2FyZ3ByZWZpeG1hcmtlciA9IGZpeHR1cmUoKQorICAgIHJldHVybiBmaXh0dXJlKAor
ICAgICAgICBmaXh0dXJlX2Z1bmN0aW9uLAorICAgICAgICAqYXJncywKKyAgICAgICAgc2NvcGU9
c2NvcGUsCisgICAgICAgIHBhcmFtcz1wYXJhbXMsCisgICAgICAgIGF1dG91c2U9YXV0b3VzZSwK
KyAgICAgICAgaWRzPWlkcywKKyAgICAgICAgbmFtZT1uYW1lLAorICAgICkKIAogCiBAZml4dHVy
ZShzY29wZT0ic2Vzc2lvbiIpCi1kZWYgcHl0ZXN0Y29uZmlnKHJlcXVlc3QpOgorZGVmIHB5dGVz
dGNvbmZpZyhyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCkgLT4gQ29uZmlnOgogICAgICIiIlNlc3Np
b24tc2NvcGVkIGZpeHR1cmUgdGhhdCByZXR1cm5zIHRoZSA6Y2xhc3M6YF9weXRlc3QuY29uZmln
LkNvbmZpZ2Agb2JqZWN0LgogCiAgICAgRXhhbXBsZTo6CiAKICAgICAgICAgZGVmIHRlc3RfZm9v
KHB5dGVzdGNvbmZpZyk6Ci0gICAgICAgICAgICBpZiBweXRlc3Rjb25maWcuZ2V0b3B0aW9uKCJ2
ZXJib3NlIik6CisgICAgICAgICAgICBpZiBweXRlc3Rjb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3Nl
IikgPiAwOgogICAgICAgICAgICAgICAgIC4uLgogCiAgICAgIiIiCiAgICAgcmV0dXJuIHJlcXVl
c3QuY29uZmlnCiAKIAotY2xhc3MgRml4dHVyZU1hbmFnZXIob2JqZWN0KToKLSAgICAiIiIKLSAg
ICBweXRlc3QgZml4dHVyZXMgZGVmaW5pdGlvbnMgYW5kIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBh
bmQgbWFuYWdlZAorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6
CisgICAgcGFyc2VyLmFkZGluaSgKKyAgICAgICAgInVzZWZpeHR1cmVzIiwKKyAgICAgICAgdHlw
ZT0iYXJncyIsCisgICAgICAgIGRlZmF1bHQ9W10sCisgICAgICAgIGhlbHA9Imxpc3Qgb2YgZGVm
YXVsdCBmaXh0dXJlcyB0byBiZSB1c2VkIHdpdGggdGhpcyBwcm9qZWN0IiwKKyAgICApCisKKwor
Y2xhc3MgRml4dHVyZU1hbmFnZXI6CisgICAgIiIicHl0ZXN0IGZpeHR1cmUgZGVmaW5pdGlvbnMg
YW5kIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBhbmQgbWFuYWdlZAogICAgIGZyb20gdGhpcyBjbGFz
cy4KIAogICAgIER1cmluZyBjb2xsZWN0aW9uIGZtLnBhcnNlZmFjdG9yaWVzKCkgaXMgY2FsbGVk
IG11bHRpcGxlIHRpbWVzIHRvIHBhcnNlCkBAIC05OTcsNyArMTM4MCw3IEBAIGNsYXNzIEZpeHR1
cmVNYW5hZ2VyKG9iamVjdCk6CiAgICAgd2hpY2ggdGhlbXNlbHZlcyBvZmZlciBhIGZpeHR1cmVu
YW1lcyBhdHRyaWJ1dGUuCiAKICAgICBUaGUgRnVuY0ZpeHR1cmVJbmZvIG9iamVjdCBob2xkcyBp
bmZvcm1hdGlvbiBhYm91dCBmaXh0dXJlcyBhbmQgRml4dHVyZURlZnMKLSAgICByZWxldmFudCBm
b3IgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiAgQW4gaW5pdGlhbCBsaXN0IG9mIGZpeHR1cmVzIGlz
CisgICAgcmVsZXZhbnQgZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbi4gQW4gaW5pdGlhbCBsaXN0
IG9mIGZpeHR1cmVzIGlzCiAgICAgYXNzZW1ibGVkIGxpa2UgdGhpczoKIAogICAgIC0gaW5pLWRl
ZmluZWQgdXNlZml4dHVyZXMKQEAgLTEwMDcsOTEgKzEzOTAsMTMyIEBAIGNsYXNzIEZpeHR1cmVN
YW5hZ2VyKG9iamVjdCk6CiAKICAgICBTdWJzZXF1ZW50bHkgdGhlIGZ1bmNmaXh0dXJlaW5mby5m
aXh0dXJlbmFtZXMgYXR0cmlidXRlIGlzIGNvbXB1dGVkCiAgICAgYXMgdGhlIGNsb3N1cmUgb2Yg
dGhlIGZpeHR1cmVzIG5lZWRlZCB0byBzZXR1cCB0aGUgaW5pdGlhbCBmaXh0dXJlcywKLSAgICBp
LiBlLiBmaXh0dXJlcyBuZWVkZWQgYnkgZml4dHVyZSBmdW5jdGlvbnMgdGhlbXNlbHZlcyBhcmUg
YXBwZW5kZWQKKyAgICBpLmUuIGZpeHR1cmVzIG5lZWRlZCBieSBmaXh0dXJlIGZ1bmN0aW9ucyB0
aGVtc2VsdmVzIGFyZSBhcHBlbmRlZAogICAgIHRvIHRoZSBmaXh0dXJlbmFtZXMgbGlzdC4KIAog
ICAgIFVwb24gdGhlIHRlc3Qtc2V0dXAgcGhhc2VzIGFsbCBmaXh0dXJlbmFtZXMgYXJlIGluc3Rh
bnRpYXRlZCwgcmV0cmlldmVkCiAgICAgYnkgYSBsb29rdXAgb2YgdGhlaXIgRnVuY0ZpeHR1cmVJ
bmZvLgogICAgICIiIgogCi0gICAgX2FyZ3ByZWZpeCA9ICJweXRlc3RfZnVuY2FyZ19fIgogICAg
IEZpeHR1cmVMb29rdXBFcnJvciA9IEZpeHR1cmVMb29rdXBFcnJvcgogICAgIEZpeHR1cmVMb29r
dXBFcnJvclJlcHIgPSBGaXh0dXJlTG9va3VwRXJyb3JSZXByCiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgc2Vzc2lvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlc3Npb246ICJTZXNzaW9u
IikgLT4gTm9uZToKICAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgotICAgICAgICBzZWxm
LmNvbmZpZyA9IHNlc3Npb24uY29uZmlnCi0gICAgICAgIHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9
IHt9Ci0gICAgICAgIHNlbGYuX2hvbGRlcm9ianNlZW4gPSBzZXQoKQotICAgICAgICBzZWxmLl9h
cmcyZmluaXNoID0ge30KLSAgICAgICAgc2VsZi5fbm9kZWlkX2FuZF9hdXRvdXNlbmFtZXMgPSBb
KCIiLCBzZWxmLmNvbmZpZy5nZXRpbmkoInVzZWZpeHR1cmVzIikpXQorICAgICAgICBzZWxmLmNv
bmZpZyA9IHNlc3Npb24uY29uZmlnICAjIHR5cGU6IENvbmZpZworICAgICAgICBzZWxmLl9hcmcy
Zml4dHVyZWRlZnMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgTGlzdFtGaXh0dXJlRGVmW0FueV1d
XQorICAgICAgICBzZWxmLl9ob2xkZXJvYmpzZWVuID0gc2V0KCkgICMgdHlwZTogU2V0W29iamVj
dF0KKyAgICAgICAgc2VsZi5fbm9kZWlkX2FuZF9hdXRvdXNlbmFtZXMgPSBbCisgICAgICAgICAg
ICAoIiIsIHNlbGYuY29uZmlnLmdldGluaSgidXNlZml4dHVyZXMiKSkKKyAgICAgICAgXSAgIyB0
eXBlOiBMaXN0W1R1cGxlW3N0ciwgTGlzdFtzdHJdXV0KICAgICAgICAgc2Vzc2lvbi5jb25maWcu
cGx1Z2lubWFuYWdlci5yZWdpc3RlcihzZWxmLCAiZnVuY21hbmFnZSIpCiAKLSAgICBkZWYgZ2V0
Zml4dHVyZWluZm8oc2VsZiwgbm9kZSwgZnVuYywgY2xzLCBmdW5jYXJncz1UcnVlKToKKyAgICBk
ZWYgX2dldF9kaXJlY3RfcGFyYW1ldHJpemVfYXJncyhzZWxmLCBub2RlOiAibm9kZXMuTm9kZSIp
IC0+IExpc3Rbc3RyXToKKyAgICAgICAgIiIiUmV0dXJuIGFsbCBkaXJlY3QgcGFyYW1ldHJpemF0
aW9uIGFyZ3VtZW50cyBvZiBhIG5vZGUsIHNvIHdlIGRvbid0CisgICAgICAgIG1pc3Rha2UgdGhl
bSBmb3IgZml4dHVyZXMuCisKKyAgICAgICAgQ2hlY2sgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDM2LgorCisgICAgICAgIFRoZXNlIHRoaW5ncyBhcmUgZG9u
ZSBsYXRlciBhcyB3ZWxsIHdoZW4gZGVhbGluZyB3aXRoIHBhcmFtZXRyaXphdGlvbgorICAgICAg
ICBzbyB0aGlzIGNvdWxkIGJlIGltcHJvdmVkLgorICAgICAgICAiIiIKKyAgICAgICAgcGFyYW1l
dHJpemVfYXJnbmFtZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgZm9yIG1hcmtl
ciBpbiBub2RlLml0ZXJfbWFya2VycyhuYW1lPSJwYXJhbWV0cml6ZSIpOgorICAgICAgICAgICAg
aWYgbm90IG1hcmtlci5rd2FyZ3MuZ2V0KCJpbmRpcmVjdCIsIEZhbHNlKToKKyAgICAgICAgICAg
ICAgICBwX2FyZ25hbWVzLCBfID0gUGFyYW1ldGVyU2V0Ll9wYXJzZV9wYXJhbWV0cml6ZV9hcmdz
KAorICAgICAgICAgICAgICAgICAgICAqbWFya2VyLmFyZ3MsICoqbWFya2VyLmt3YXJncworICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBwYXJhbWV0cml6ZV9hcmduYW1lcy5leHRl
bmQocF9hcmduYW1lcykKKworICAgICAgICByZXR1cm4gcGFyYW1ldHJpemVfYXJnbmFtZXMKKwor
ICAgIGRlZiBnZXRmaXh0dXJlaW5mbygKKyAgICAgICAgc2VsZiwgbm9kZTogIm5vZGVzLk5vZGUi
LCBmdW5jLCBjbHMsIGZ1bmNhcmdzOiBib29sID0gVHJ1ZQorICAgICkgLT4gRnVuY0ZpeHR1cmVJ
bmZvOgogICAgICAgICBpZiBmdW5jYXJncyBhbmQgbm90IGdldGF0dHIobm9kZSwgIm5vZnVuY2Fy
Z3MiLCBGYWxzZSk6Ci0gICAgICAgICAgICBhcmduYW1lcyA9IGdldGZ1bmNhcmduYW1lcyhmdW5j
LCBjbHM9Y2xzKQorICAgICAgICAgICAgYXJnbmFtZXMgPSBnZXRmdW5jYXJnbmFtZXMoZnVuYywg
bmFtZT1ub2RlLm5hbWUsIGNscz1jbHMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcmdu
YW1lcyA9ICgpCi0gICAgICAgIHVzZWZpeHR1cmVzID0gZmxhdHRlbigKLSAgICAgICAgICAgIG1h
cmsuYXJncyBmb3IgbWFyayBpbiBub2RlLml0ZXJfbWFya2VycyhuYW1lPSJ1c2VmaXh0dXJlcyIp
CisKKyAgICAgICAgdXNlZml4dHVyZXMgPSB0dXBsZSgKKyAgICAgICAgICAgIGFyZyBmb3IgbWFy
ayBpbiBub2RlLml0ZXJfbWFya2VycyhuYW1lPSJ1c2VmaXh0dXJlcyIpIGZvciBhcmcgaW4gbWFy
ay5hcmdzCiAgICAgICAgICkKLSAgICAgICAgaW5pdGlhbG5hbWVzID0gYXJnbmFtZXMKLSAgICAg
ICAgaW5pdGlhbG5hbWVzID0gdHVwbGUodXNlZml4dHVyZXMpICsgaW5pdGlhbG5hbWVzCisgICAg
ICAgIGluaXRpYWxuYW1lcyA9IHVzZWZpeHR1cmVzICsgYXJnbmFtZXMKICAgICAgICAgZm0gPSBu
b2RlLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0gICAgICAgIG5hbWVzX2Nsb3N1cmUsIGFyZzJm
aXh0dXJlZGVmcyA9IGZtLmdldGZpeHR1cmVjbG9zdXJlKGluaXRpYWxuYW1lcywgbm9kZSkKLSAg
ICAgICAgcmV0dXJuIEZ1bmNGaXh0dXJlSW5mbyhhcmduYW1lcywgbmFtZXNfY2xvc3VyZSwgYXJn
MmZpeHR1cmVkZWZzKQorICAgICAgICBpbml0aWFsbmFtZXMsIG5hbWVzX2Nsb3N1cmUsIGFyZzJm
aXh0dXJlZGVmcyA9IGZtLmdldGZpeHR1cmVjbG9zdXJlKAorICAgICAgICAgICAgaW5pdGlhbG5h
bWVzLCBub2RlLCBpZ25vcmVfYXJncz1zZWxmLl9nZXRfZGlyZWN0X3BhcmFtZXRyaXplX2FyZ3Mo
bm9kZSkKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gRnVuY0ZpeHR1cmVJbmZvKGFyZ25hbWVz
LCBpbml0aWFsbmFtZXMsIG5hbWVzX2Nsb3N1cmUsIGFyZzJmaXh0dXJlZGVmcykKIAotICAgIGRl
ZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQoc2VsZiwgcGx1Z2luKToKKyAgICBkZWYgcHl0ZXN0
X3BsdWdpbl9yZWdpc3RlcmVkKHNlbGYsIHBsdWdpbjogX1BsdWdneVBsdWdpbikgLT4gTm9uZToK
ICAgICAgICAgbm9kZWlkID0gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwID0gcHku
cGF0aC5sb2NhbChwbHVnaW4uX19maWxlX18pCisgICAgICAgICAgICBwID0gYWJzb2x1dGVwYXRo
KHBsdWdpbi5fX2ZpbGVfXykgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KICAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgIyBjb25zdHJ1Y3QgdGhlIGJhc2Ugbm9kZWlkIHdoaWNoIGlzIGxhdGVyIHVz
ZWQgdG8gY2hlY2sKKyAgICAgICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKKworICAg
ICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIGJhc2Ugbm9kZWlkIHdoaWNoIGlzIGxhdGVyIHVzZWQg
dG8gY2hlY2sKICAgICAgICAgICAgICMgd2hhdCBmaXh0dXJlcyBhcmUgdmlzaWJsZSBmb3IgcGFy
dGljdWxhciB0ZXN0cyAoYXMgZGVub3RlZAotICAgICAgICAgICAgIyBieSB0aGVpciB0ZXN0IGlk
KQotICAgICAgICAgICAgaWYgcC5iYXNlbmFtZS5zdGFydHN3aXRoKCJjb25mdGVzdC5weSIpOgot
ICAgICAgICAgICAgICAgIG5vZGVpZCA9IHAuZGlycGF0aCgpLnJlbHRvKHNlbGYuY29uZmlnLnJv
b3RkaXIpCi0gICAgICAgICAgICAgICAgaWYgcC5zZXAgIT0gbm9kZXMuU0VQOgotICAgICAgICAg
ICAgICAgICAgICBub2RlaWQgPSBub2RlaWQucmVwbGFjZShwLnNlcCwgbm9kZXMuU0VQKQorICAg
ICAgICAgICAgIyBieSB0aGVpciB0ZXN0IGlkKS4KKyAgICAgICAgICAgIGlmIHAubmFtZS5zdGFy
dHN3aXRoKCJjb25mdGVzdC5weSIpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZWlkID0gc3RyKHAucGFyZW50LnJlbGF0aXZlX3RvKHNlbGYuY29uZmlnLnJv
b3RwYXRoKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZWlkID0gIiIKKyAgICAgICAgICAgICAgICBpZiBub2RlaWQgPT0gIi4iOgor
ICAgICAgICAgICAgICAgICAgICBub2RlaWQgPSAiIgorICAgICAgICAgICAgICAgIGlmIG9zLnNl
cCAhPSBub2Rlcy5TRVA6CisgICAgICAgICAgICAgICAgICAgIG5vZGVpZCA9IG5vZGVpZC5yZXBs
YWNlKG9zLnNlcCwgbm9kZXMuU0VQKQorCiAgICAgICAgIHNlbGYucGFyc2VmYWN0b3JpZXMocGx1
Z2luLCBub2RlaWQpCiAKLSAgICBkZWYgX2dldGF1dG91c2VuYW1lcyhzZWxmLCBub2RlaWQpOgot
ICAgICAgICAiIiIgcmV0dXJuIGEgdHVwbGUgb2YgZml4dHVyZSBuYW1lcyB0byBiZSB1c2VkLiAi
IiIKLSAgICAgICAgYXV0b3VzZW5hbWVzID0gW10KKyAgICBkZWYgX2dldGF1dG91c2VuYW1lcyhz
ZWxmLCBub2RlaWQ6IHN0cikgLT4gTGlzdFtzdHJdOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0
IG9mIGZpeHR1cmUgbmFtZXMgdG8gYmUgdXNlZC4iIiIKKyAgICAgICAgYXV0b3VzZW5hbWVzID0g
W10gICMgdHlwZTogTGlzdFtzdHJdCiAgICAgICAgIGZvciBiYXNlaWQsIGJhc2VuYW1lcyBpbiBz
ZWxmLl9ub2RlaWRfYW5kX2F1dG91c2VuYW1lczoKICAgICAgICAgICAgIGlmIG5vZGVpZC5zdGFy
dHN3aXRoKGJhc2VpZCk6CiAgICAgICAgICAgICAgICAgaWYgYmFzZWlkOgogICAgICAgICAgICAg
ICAgICAgICBpID0gbGVuKGJhc2VpZCkKLSAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBu
b2RlaWRbaTppICsgMV0KKyAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBub2RlaWRbaSA6
IGkgKyAxXQogICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBhbmQgbmV4dGNoYXIgbm90
IGluICI6LyI6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
ICAgIGF1dG91c2VuYW1lcy5leHRlbmQoYmFzZW5hbWVzKQogICAgICAgICByZXR1cm4gYXV0b3Vz
ZW5hbWVzCiAKLSAgICBkZWYgZ2V0Zml4dHVyZWNsb3N1cmUoc2VsZiwgZml4dHVyZW5hbWVzLCBw
YXJlbnRub2RlKToKLSAgICAgICAgIyBjb2xsZWN0IHRoZSBjbG9zdXJlIG9mIGFsbCBmaXh0dXJl
cyAsIHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuCisgICAgZGVmIGdldGZpeHR1cmVjbG9zdXJlKAor
ICAgICAgICBzZWxmLCBmaXh0dXJlbmFtZXM6IFR1cGxlW3N0ciwgLi4uXSwgcGFyZW50bm9kZSwg
aWdub3JlX2FyZ3M6IFNlcXVlbmNlW3N0cl0gPSAoKQorICAgICkgLT4gVHVwbGVbVHVwbGVbc3Ry
LCAuLi5dLCBMaXN0W3N0cl0sIERpY3Rbc3RyLCBTZXF1ZW5jZVtGaXh0dXJlRGVmW0FueV1dXV06
CisgICAgICAgICMgQ29sbGVjdCB0aGUgY2xvc3VyZSBvZiBhbGwgZml4dHVyZXMsIHN0YXJ0aW5n
IHdpdGggdGhlIGdpdmVuCiAgICAgICAgICMgZml4dHVyZW5hbWVzIGFzIHRoZSBpbml0aWFsIHNl
dC4gIEFzIHdlIGhhdmUgdG8gdmlzaXQgYWxsCiAgICAgICAgICMgZmFjdG9yeSBkZWZpbml0aW9u
cyBhbnl3YXksIHdlIGFsc28gcmV0dXJuIGFuIGFyZzJmaXh0dXJlZGVmcwogICAgICAgICAjIG1h
cHBpbmcgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiByZXVzZSBpdCBhbmQgZG9lcyBub3QgaGF2ZQog
ICAgICAgICAjIHRvIHJlLWRpc2NvdmVyIGZpeHR1cmVkZWZzIGFnYWluIGZvciBlYWNoIGZpeHR1
cmVuYW1lCi0gICAgICAgICMgKGRpc2NvdmVyaW5nIG1hdGNoaW5nIGZpeHR1cmVzIGZvciBhIGdp
dmVuIG5hbWUvbm9kZSBpcyBleHBlbnNpdmUpCisgICAgICAgICMgKGRpc2NvdmVyaW5nIG1hdGNo
aW5nIGZpeHR1cmVzIGZvciBhIGdpdmVuIG5hbWUvbm9kZSBpcyBleHBlbnNpdmUpLgogCiAgICAg
ICAgIHBhcmVudGlkID0gcGFyZW50bm9kZS5ub2RlaWQKICAgICAgICAgZml4dHVyZW5hbWVzX2Ns
b3N1cmUgPSBzZWxmLl9nZXRhdXRvdXNlbmFtZXMocGFyZW50aWQpCiAKLSAgICAgICAgZGVmIG1l
cmdlKG90aGVybGlzdCk6CisgICAgICAgIGRlZiBtZXJnZShvdGhlcmxpc3Q6IEl0ZXJhYmxlW3N0
cl0pIC0+IE5vbmU6CiAgICAgICAgICAgICBmb3IgYXJnIGluIG90aGVybGlzdDoKICAgICAgICAg
ICAgICAgICBpZiBhcmcgbm90IGluIGZpeHR1cmVuYW1lc19jbG9zdXJlOgogICAgICAgICAgICAg
ICAgICAgICBmaXh0dXJlbmFtZXNfY2xvc3VyZS5hcHBlbmQoYXJnKQogCiAgICAgICAgIG1lcmdl
KGZpeHR1cmVuYW1lcykKLSAgICAgICAgYXJnMmZpeHR1cmVkZWZzID0ge30KKworICAgICAgICAj
IEF0IHRoaXMgcG9pbnQsIGZpeHR1cmVuYW1lc19jbG9zdXJlIGNvbnRhaW5zIHdoYXQgd2UgY2Fs
bCAiaW5pdGlhbG5hbWVzIiwKKyAgICAgICAgIyB3aGljaCBpcyBhIHNldCBvZiBmaXh0dXJlbmFt
ZXMgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHJlcXVlc3RzLiBXZQorICAgICAgICAjIG5lZWQg
dG8gcmV0dXJuIGl0IGFzIHdlbGwsIHNvIHNhdmUgdGhpcy4KKyAgICAgICAgaW5pdGlhbG5hbWVz
ID0gdHVwbGUoZml4dHVyZW5hbWVzX2Nsb3N1cmUpCisKKyAgICAgICAgYXJnMmZpeHR1cmVkZWZz
ID0ge30gICMgdHlwZTogRGljdFtzdHIsIFNlcXVlbmNlW0ZpeHR1cmVEZWZbQW55XV1dCiAgICAg
ICAgIGxhc3RsZW4gPSAtMQogICAgICAgICB3aGlsZSBsYXN0bGVuICE9IGxlbihmaXh0dXJlbmFt
ZXNfY2xvc3VyZSk6CiAgICAgICAgICAgICBsYXN0bGVuID0gbGVuKGZpeHR1cmVuYW1lc19jbG9z
dXJlKQogICAgICAgICAgICAgZm9yIGFyZ25hbWUgaW4gZml4dHVyZW5hbWVzX2Nsb3N1cmU6Cisg
ICAgICAgICAgICAgICAgaWYgYXJnbmFtZSBpbiBpZ25vcmVfYXJnczoKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBhcmduYW1lIGluIGFyZzJmaXh0dXJl
ZGVmczoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBmaXh0
dXJlZGVmcyA9IHNlbGYuZ2V0Zml4dHVyZWRlZnMoYXJnbmFtZSwgcGFyZW50aWQpCkBAIC0xMDk5
LDcgKzE1MjMsNyBAQCBjbGFzcyBGaXh0dXJlTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICBhcmcyZml4dHVyZWRlZnNbYXJnbmFtZV0gPSBmaXh0dXJlZGVmcwogICAgICAgICAg
ICAgICAgICAgICBtZXJnZShmaXh0dXJlZGVmc1stMV0uYXJnbmFtZXMpCiAKLSAgICAgICAgZGVm
IHNvcnRfYnlfc2NvcGUoYXJnX25hbWUpOgorICAgICAgICBkZWYgc29ydF9ieV9zY29wZShhcmdf
bmFtZTogc3RyKSAtPiBpbnQ6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZml4
dHVyZWRlZnMgPSBhcmcyZml4dHVyZWRlZnNbYXJnX25hbWVdCiAgICAgICAgICAgICBleGNlcHQg
S2V5RXJyb3I6CkBAIC0xMTA4LDQyICsxNTMyLDYwIEBAIGNsYXNzIEZpeHR1cmVNYW5hZ2VyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZpeHR1cmVkZWZzWy0xXS5zY29wZW51bQog
CiAgICAgICAgIGZpeHR1cmVuYW1lc19jbG9zdXJlLnNvcnQoa2V5PXNvcnRfYnlfc2NvcGUpCi0g
ICAgICAgIHJldHVybiBmaXh0dXJlbmFtZXNfY2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzCisgICAg
ICAgIHJldHVybiBpbml0aWFsbmFtZXMsIGZpeHR1cmVuYW1lc19jbG9zdXJlLCBhcmcyZml4dHVy
ZWRlZnMKKworICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMoc2VsZiwgbWV0YWZ1bmM6ICJN
ZXRhZnVuYyIpIC0+IE5vbmU6CisgICAgICAgICIiIkdlbmVyYXRlIG5ldyB0ZXN0cyBiYXNlZCBv
biBwYXJhbWV0cml6ZWQgZml4dHVyZXMgdXNlZCBieSB0aGUgZ2l2ZW4gbWV0YWZ1bmMiIiIKKwor
ICAgICAgICBkZWYgZ2V0X3BhcmFtZXRyaXplX21hcmtfYXJnbmFtZXMobWFyazogTWFyaykgLT4g
U2VxdWVuY2Vbc3RyXToKKyAgICAgICAgICAgIGFyZ3MsIF8gPSBQYXJhbWV0ZXJTZXQuX3BhcnNl
X3BhcmFtZXRyaXplX2FyZ3MoKm1hcmsuYXJncywgKiptYXJrLmt3YXJncykKKyAgICAgICAgICAg
IHJldHVybiBhcmdzCiAKLSAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKHNlbGYsIG1ldGFm
dW5jKToKICAgICAgICAgZm9yIGFyZ25hbWUgaW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzOgotICAg
ICAgICAgICAgZmFjbGlzdCA9IG1ldGFmdW5jLl9hcmcyZml4dHVyZWRlZnMuZ2V0KGFyZ25hbWUp
Ci0gICAgICAgICAgICBpZiBmYWNsaXN0OgotICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYgPSBm
YWNsaXN0Wy0xXQorICAgICAgICAgICAgIyBHZXQgdGhlIEZpeHR1cmVEZWZzIGZvciB0aGUgYXJn
bmFtZS4KKyAgICAgICAgICAgIGZpeHR1cmVfZGVmcyA9IG1ldGFmdW5jLl9hcmcyZml4dHVyZWRl
ZnMuZ2V0KGFyZ25hbWUpCisgICAgICAgICAgICBpZiBub3QgZml4dHVyZV9kZWZzOgorICAgICAg
ICAgICAgICAgICMgV2lsbCByYWlzZSBGaXh0dXJlTG9va3VwRXJyb3IgYXQgc2V0dXAgdGltZSBp
ZiBub3QgcGFyYW1ldHJpemVkIHNvbWV3aGVyZQorICAgICAgICAgICAgICAgICMgZWxzZSAoZS5n
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGl0c2VsZiBwYXJhbWV0cml6ZXMgdXNpbmcgdGhpcyBh
cmduYW1lLCBnaXZlIGl0CisgICAgICAgICAgICAjIHByZWNlZGVuY2UuCisgICAgICAgICAgICBp
ZiBhbnkoCisgICAgICAgICAgICAgICAgYXJnbmFtZSBpbiBnZXRfcGFyYW1ldHJpemVfbWFya19h
cmduYW1lcyhtYXJrKQorICAgICAgICAgICAgICAgIGZvciBtYXJrIGluIG1ldGFmdW5jLmRlZmlu
aXRpb24uaXRlcl9tYXJrZXJzKCJwYXJhbWV0cml6ZSIpCisgICAgICAgICAgICApOgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgSW4gdGhlIGNvbW1vbiBjYXNlIHdl
IG9ubHkgbG9vayBhdCB0aGUgZml4dHVyZSBkZWYgd2l0aCB0aGUKKyAgICAgICAgICAgICMgY2xv
c2VzdCBzY29wZSAobGFzdCBpbiB0aGUgbGlzdCkuIEJ1dCBpZiB0aGUgZml4dHVyZSBvdmVycmlk
ZXMKKyAgICAgICAgICAgICMgYW5vdGhlciBmaXh0dXJlLCB3aGlsZSByZXF1ZXN0aW5nIHRoZSBz
dXBlciBmaXh0dXJlLCBrZWVwIGdvaW5nCisgICAgICAgICAgICAjIGluIGNhc2UgdGhlIHN1cGVy
IGZpeHR1cmUgaXMgcGFyYW1ldHJpemVkICgjMTk1MykuCisgICAgICAgICAgICBmb3IgZml4dHVy
ZWRlZiBpbiByZXZlcnNlZChmaXh0dXJlX2RlZnMpOgorICAgICAgICAgICAgICAgICMgRml4dHVy
ZSBpcyBwYXJhbWV0cml6ZWQsIGFwcGx5IGl0IGFuZCBzdG9wLgogICAgICAgICAgICAgICAgIGlm
IGZpeHR1cmVkZWYucGFyYW1zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBwYXJh
bWV0cml6ZV9mdW5jID0gZ2V0YXR0cihtZXRhZnVuYy5mdW5jdGlvbiwgInBhcmFtZXRyaXplIiwg
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW1ldHJpemVfZnVuYyBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRyaXplX2Z1bmMgPSBwYXJhbWV0cml6
ZV9mdW5jLmNvbWJpbmVkCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfcGFyYW1zID0gZ2V0YXR0
cihwYXJhbWV0cml6ZV9mdW5jLCAiYXJncyIsIFtbTm9uZV1dKQotICAgICAgICAgICAgICAgICAg
ICBmdW5jX2t3YXJncyA9IGdldGF0dHIocGFyYW1ldHJpemVfZnVuYywgImt3YXJncyIsIHt9KQot
ICAgICAgICAgICAgICAgICAgICAjIHNraXAgZGlyZWN0bHkgcGFyYW1ldHJpemVkIGFyZ3VtZW50
cwotICAgICAgICAgICAgICAgICAgICBpZiAiYXJnbmFtZXMiIGluIGZ1bmNfa3dhcmdzOgotICAg
ICAgICAgICAgICAgICAgICAgICAgYXJnbmFtZXMgPSBwYXJhbWV0cml6ZV9mdW5jLmt3YXJnc1si
YXJnbmFtZXMiXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnbmFtZXMgPSBmdW5jX3BhcmFtc1swXQotICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShhcmduYW1lcywgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhcmduYW1lcyA9IFt4LnN0cmlwKCkgZm9yIHggaW4gYXJnbmFtZXMuc3BsaXQoIiwi
KSBpZiB4LnN0cmlwKCldCi0gICAgICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGZ1
bmNfcGFyYW1zIGFuZCBhcmduYW1lIG5vdCBpbiBhcmduYW1lczoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dHVyZWRlZi5wYXJhbXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXJlY3Q9VHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY29wZT1maXh0dXJlZGVmLnNjb3BlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkcz1maXh0dXJlZGVmLmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29udGludWUgICMgd2lsbCBy
YWlzZSBGaXh0dXJlTG9va3VwRXJyb3IgYXQgc2V0dXAgdGltZQorICAgICAgICAgICAgICAgICAg
ICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ25hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmLnBhcmFtcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGlyZWN0PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBzY29w
ZT1maXh0dXJlZGVmLnNjb3BlLAorICAgICAgICAgICAgICAgICAgICAgICAgaWRzPWZpeHR1cmVk
ZWYuaWRzLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgICAgICAgICAjIE5vdCByZXF1ZXN0aW5nIHRoZSBvdmVycmlkZGVuIHN1cGVy
IGZpeHR1cmUsIHN0b3AuCisgICAgICAgICAgICAgICAgaWYgYXJnbmFtZSBub3QgaW4gZml4dHVy
ZWRlZi5hcmduYW1lczoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAg
ICAgICMgVHJ5IG5leHQgc3VwZXIgZml4dHVyZSwgaWYgYW55LgogCi0gICAgZGVmIHB5dGVzdF9j
b2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIyBzZXBhcmF0ZSBw
YXJhbWV0cml6ZWQgc2V0dXBzCisgICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1z
KHNlbGYsIGl0ZW1zOiAiTGlzdFtub2Rlcy5JdGVtXSIpIC0+IE5vbmU6CisgICAgICAgICMgU2Vw
YXJhdGUgcGFyYW1ldHJpemVkIHNldHVwcy4KICAgICAgICAgaXRlbXNbOl0gPSByZW9yZGVyX2l0
ZW1zKGl0ZW1zKQogCi0gICAgZGVmIHBhcnNlZmFjdG9yaWVzKHNlbGYsIG5vZGVfb3Jfb2JqLCBu
b2RlaWQ9Tk9UU0VULCB1bml0dGVzdD1GYWxzZSk6CisgICAgZGVmIHBhcnNlZmFjdG9yaWVzKAor
ICAgICAgICBzZWxmLCBub2RlX29yX29iaiwgbm9kZWlkPU5PVFNFVCwgdW5pdHRlc3Q6IGJvb2wg
PSBGYWxzZQorICAgICkgLT4gTm9uZToKICAgICAgICAgaWYgbm9kZWlkIGlzIG5vdCBOT1RTRVQ6
CiAgICAgICAgICAgICBob2xkZXJvYmogPSBub2RlX29yX29iagogICAgICAgICBlbHNlOgpAQCAt
MTE1MSw0MyArMTU5MywzNSBAQCBjbGFzcyBGaXh0dXJlTWFuYWdlcihvYmplY3QpOgogICAgICAg
ICAgICAgbm9kZWlkID0gbm9kZV9vcl9vYmoubm9kZWlkCiAgICAgICAgIGlmIGhvbGRlcm9iaiBp
biBzZWxmLl9ob2xkZXJvYmpzZWVuOgogICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgc2Vs
Zi5faG9sZGVyb2Jqc2Vlbi5hZGQoaG9sZGVyb2JqKQogICAgICAgICBhdXRvdXNlbmFtZXMgPSBb
XQogICAgICAgICBmb3IgbmFtZSBpbiBkaXIoaG9sZGVyb2JqKToKICAgICAgICAgICAgICMgVGhl
IGF0dHJpYnV0ZSBjYW4gYmUgYW4gYXJiaXRyYXJ5IGRlc2NyaXB0b3IsIHNvIHRoZSBhdHRyaWJ1
dGUKICAgICAgICAgICAgICMgYWNjZXNzIGJlbG93IGNhbiByYWlzZS4gc2FmZV9nZXRhdHQoKSBp
Z25vcmVzIHN1Y2ggZXhjZXB0aW9ucy4KICAgICAgICAgICAgIG9iaiA9IHNhZmVfZ2V0YXR0ciho
b2xkZXJvYmosIG5hbWUsIE5vbmUpCi0gICAgICAgICAgICAjIGZpeHR1cmUgZnVuY3Rpb25zIGhh
dmUgYSBweXRlc3RfZnVuY2FyZ19fIHByZWZpeCAocHJlLTIuMyBzdHlsZSkKLSAgICAgICAgICAg
ICMgb3IgYXJlICJAcHl0ZXN0LmZpeHR1cmUiIG1hcmtlZAogICAgICAgICAgICAgbWFya2VyID0g
Z2V0Zml4dHVyZW1hcmtlcihvYmopCi0gICAgICAgICAgICBpZiBtYXJrZXIgaXMgTm9uZToKLSAg
ICAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKHNlbGYuX2FyZ3ByZWZpeCk6Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IGNhbGxh
YmxlKG9iaik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAg
bWFya2VyID0gZGVmYXVsdGZ1bmNhcmdwcmVmaXhtYXJrZXIKLSAgICAgICAgICAgICAgICBmcm9t
IF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKLQotICAgICAgICAgICAgICAgIHNlbGYuY29uZmln
Lndhcm4oCi0gICAgICAgICAgICAgICAgICAgICJDMSIsIGRlcHJlY2F0ZWQuRlVOQ0FSR19QUkVG
SVguZm9ybWF0KG5hbWU9bmFtZSksIG5vZGVpZD1ub2RlaWQKLSAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbbGVuKHNlbGYuX2FyZ3ByZWZpeCk6XQotICAgICAg
ICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShtYXJrZXIsIEZpeHR1cmVGdW5jdGlvbk1hcmtlcik6
Ci0gICAgICAgICAgICAgICAgIyBtYWdpYyBnbG9iYWxzICB3aXRoIF9fZ2V0YXR0cl9fIG1pZ2h0
IGhhdmUgZ290IHVzIGEgd3JvbmcKLSAgICAgICAgICAgICAgICAjIGZpeHR1cmUgYXR0cmlidXRl
CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtYXJrZXIsIEZpeHR1cmVGdW5jdGlvbk1h
cmtlcik6CisgICAgICAgICAgICAgICAgIyBNYWdpYyBnbG9iYWxzICB3aXRoIF9fZ2V0YXR0cl9f
IG1pZ2h0IGhhdmUgZ290IHVzIGEgd3JvbmcKKyAgICAgICAgICAgICAgICAjIGZpeHR1cmUgYXR0
cmlidXRlLgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGlmIG1hcmtlci5uYW1lOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0g
bWFya2VyLm5hbWUKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IG5hbWUuc3RhcnRzd2l0aChz
ZWxmLl9hcmdwcmVmaXgpLCBGSVhUVVJFX01TRy5mb3JtYXQobmFtZSkKKworICAgICAgICAgICAg
aWYgbWFya2VyLm5hbWU6CisgICAgICAgICAgICAgICAgbmFtZSA9IG1hcmtlci5uYW1lCisKKyAg
ICAgICAgICAgICMgRHVyaW5nIGZpeHR1cmUgZGVmaW5pdGlvbiB3ZSB3cmFwIHRoZSBvcmlnaW5h
bCBmaXh0dXJlIGZ1bmN0aW9uCisgICAgICAgICAgICAjIHRvIGlzc3VlIGEgd2FybmluZyBpZiBj
YWxsZWQgZGlyZWN0bHksIHNvIGhlcmUgd2UgdW53cmFwIGl0IGluCisgICAgICAgICAgICAjIG9y
ZGVyIHRvIG5vdCBlbWl0IHRoZSB3YXJuaW5nIHdoZW4gcHl0ZXN0IGl0c2VsZiBjYWxscyB0aGUK
KyAgICAgICAgICAgICMgZml4dHVyZSBmdW5jdGlvbi4KKyAgICAgICAgICAgIG9iaiA9IGdldF9y
ZWFsX21ldGhvZChvYmosIGhvbGRlcm9iaikKIAogICAgICAgICAgICAgZml4dHVyZV9kZWYgPSBG
aXh0dXJlRGVmKAotICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgbm9kZWlk
LAotICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgb2JqLAotICAgICAgICAg
ICAgICAgIG1hcmtlci5zY29wZSwKLSAgICAgICAgICAgICAgICBtYXJrZXIucGFyYW1zLAorICAg
ICAgICAgICAgICAgIGZpeHR1cmVtYW5hZ2VyPXNlbGYsCisgICAgICAgICAgICAgICAgYmFzZWlk
PW5vZGVpZCwKKyAgICAgICAgICAgICAgICBhcmduYW1lPW5hbWUsCisgICAgICAgICAgICAgICAg
ZnVuYz1vYmosCisgICAgICAgICAgICAgICAgc2NvcGU9bWFya2VyLnNjb3BlLAorICAgICAgICAg
ICAgICAgIHBhcmFtcz1tYXJrZXIucGFyYW1zLAogICAgICAgICAgICAgICAgIHVuaXR0ZXN0PXVu
aXR0ZXN0LAogICAgICAgICAgICAgICAgIGlkcz1tYXJrZXIuaWRzLAogICAgICAgICAgICAgKQpA
QCAtMTIwOCwyMiArMTY0MiwyNiBAQCBjbGFzcyBGaXh0dXJlTWFuYWdlcihvYmplY3QpOgogICAg
ICAgICBpZiBhdXRvdXNlbmFtZXM6CiAgICAgICAgICAgICBzZWxmLl9ub2RlaWRfYW5kX2F1dG91
c2VuYW1lcy5hcHBlbmQoKG5vZGVpZCBvciAiIiwgYXV0b3VzZW5hbWVzKSkKIAotICAgIGRlZiBn
ZXRmaXh0dXJlZGVmcyhzZWxmLCBhcmduYW1lLCBub2RlaWQpOgotICAgICAgICAiIiIKLSAgICAg
ICAgR2V0cyBhIGxpc3Qgb2YgZml4dHVyZXMgd2hpY2ggYXJlIGFwcGxpY2FibGUgdG8gdGhlIGdp
dmVuIG5vZGUgaWQuCisgICAgZGVmIGdldGZpeHR1cmVkZWZzKAorICAgICAgICBzZWxmLCBhcmdu
YW1lOiBzdHIsIG5vZGVpZDogc3RyCisgICAgKSAtPiBPcHRpb25hbFtTZXF1ZW5jZVtGaXh0dXJl
RGVmW0FueV1dXToKKyAgICAgICAgIiIiR2V0IGEgbGlzdCBvZiBmaXh0dXJlcyB3aGljaCBhcmUg
YXBwbGljYWJsZSB0byB0aGUgZ2l2ZW4gbm9kZSBpZC4KIAotICAgICAgICA6cGFyYW0gc3RyIGFy
Z25hbWU6IG5hbWUgb2YgdGhlIGZpeHR1cmUgdG8gc2VhcmNoIGZvcgotICAgICAgICA6cGFyYW0g
c3RyIG5vZGVpZDogZnVsbCBub2RlIGlkIG9mIHRoZSByZXF1ZXN0aW5nIHRlc3QuCi0gICAgICAg
IDpyZXR1cm46IGxpc3RbRml4dHVyZURlZl0KKyAgICAgICAgOnBhcmFtIHN0ciBhcmduYW1lOiBO
YW1lIG9mIHRoZSBmaXh0dXJlIHRvIHNlYXJjaCBmb3IuCisgICAgICAgIDpwYXJhbSBzdHIgbm9k
ZWlkOiBGdWxsIG5vZGUgaWQgb2YgdGhlIHJlcXVlc3RpbmcgdGVzdC4KKyAgICAgICAgOnJ0eXBl
OiBTZXF1ZW5jZVtGaXh0dXJlRGVmXQogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgZml4dHVyZWRlZnMgPSBzZWxmLl9hcmcyZml4dHVyZWRlZnNbYXJnbmFtZV0KICAgICAg
ICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHJldHVybiB0dXBsZShzZWxmLl9tYXRjaGZhY3RvcmllcyhmaXh0dXJl
ZGVmcywgbm9kZWlkKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYuX21hdGNoZmFjdG9yaWVz
KGZpeHR1cmVkZWZzLCBub2RlaWQpKQorCisgICAgZGVmIF9tYXRjaGZhY3RvcmllcygKKyAgICAg
ICAgc2VsZiwgZml4dHVyZWRlZnM6IEl0ZXJhYmxlW0ZpeHR1cmVEZWZbQW55XV0sIG5vZGVpZDog
c3RyCisgICAgKSAtPiBJdGVyYXRvcltGaXh0dXJlRGVmW0FueV1dOgorICAgICAgICBmcm9tIF9w
eXRlc3QgaW1wb3J0IG5vZGVzCiAKLSAgICBkZWYgX21hdGNoZmFjdG9yaWVzKHNlbGYsIGZpeHR1
cmVkZWZzLCBub2RlaWQpOgogICAgICAgICBmb3IgZml4dHVyZWRlZiBpbiBmaXh0dXJlZGVmczoK
ICAgICAgICAgICAgIGlmIG5vZGVzLmlzY2hpbGRub2RlKGZpeHR1cmVkZWYuYmFzZWlkLCBub2Rl
aWQpOgogICAgICAgICAgICAgICAgIHlpZWxkIGZpeHR1cmVkZWYKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L2ZyZWV6ZV9zdXBwb3J0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvZnJlZXplX3N1cHBvcnQucHkKaW5kZXggMDAyZTA3NzMwMWY5Li44YjkzZWQ1ZjdmODYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZyZWV6ZV9zdXBwb3J0LnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2ZyZWV6ZV9zdXBwb3J0LnB5CkBAIC0xLDE1ICsx
LDE0IEBACi0iIiIKLVByb3ZpZGVzIGEgZnVuY3Rpb24gdG8gcmVwb3J0IGFsbCBpbnRlcm5hbCBt
b2R1bGVzIGZvciB1c2luZyBmcmVlemluZyB0b29scwotcHl0ZXN0Ci0iIiIKLWZyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyIi
IlByb3ZpZGVzIGEgZnVuY3Rpb24gdG8gcmVwb3J0IGFsbCBpbnRlcm5hbCBtb2R1bGVzIGZvciB1
c2luZyBmcmVlemluZwordG9vbHMuIiIiCitpbXBvcnQgdHlwZXMKK2Zyb20gdHlwaW5nIGltcG9y
dCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBV
bmlvbgogCiAKLWRlZiBmcmVlemVfaW5jbHVkZXMoKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEg
bGlzdCBvZiBtb2R1bGUgbmFtZXMgdXNlZCBieSBweXRlc3QgdGhhdCBzaG91bGQgYmUKLSAgICBp
bmNsdWRlZCBieSBjeF9mcmVlemUuCi0gICAgIiIiCitkZWYgZnJlZXplX2luY2x1ZGVzKCkgLT4g
TGlzdFtzdHJdOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgbW9kdWxlIG5hbWVzIHVzZWQgYnkg
cHl0ZXN0IHRoYXQgc2hvdWxkIGJlCisgICAgaW5jbHVkZWQgYnkgY3hfZnJlZXplLiIiIgogICAg
IGltcG9ydCBweQogICAgIGltcG9ydCBfcHl0ZXN0CiAKQEAgLTE4LDI1ICsxNywyNiBAQCBkZWYg
ZnJlZXplX2luY2x1ZGVzKCk6CiAgICAgcmV0dXJuIHJlc3VsdAogCiAKLWRlZiBfaXRlcl9hbGxf
bW9kdWxlcyhwYWNrYWdlLCBwcmVmaXg9IiIpOgotICAgICIiIgotICAgIEl0ZXJhdGVzIG92ZXIg
dGhlIG5hbWVzIG9mIGFsbCBtb2R1bGVzIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBnaXZlbgor
ZGVmIF9pdGVyX2FsbF9tb2R1bGVzKAorICAgIHBhY2thZ2U6IFVuaW9uW3N0ciwgdHlwZXMuTW9k
dWxlVHlwZV0sIHByZWZpeDogc3RyID0gIiIsCispIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgIiIi
SXRlcmF0ZSBvdmVyIHRoZSBuYW1lcyBvZiBhbGwgbW9kdWxlcyB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgZ2l2ZW4KICAgICBwYWNrYWdlLCByZWN1cnNpdmVseS4KLSAgICBFeGFtcGxlOgotICAg
ICAgICBfaXRlcl9hbGxfbW9kdWxlcyhfcHl0ZXN0KSAtPgotICAgICAgICAgICAgWydfcHl0ZXN0
LmFzc2VydGlvbi5uZXdpbnRlcnByZXQnLAotICAgICAgICAgICAgICdfcHl0ZXN0LmNhcHR1cmUn
LAotICAgICAgICAgICAgICdfcHl0ZXN0LmNvcmUnLAotICAgICAgICAgICAgIC4uLgotICAgICAg
ICAgICAgXQorCisgICAgICAgID4+PiBpbXBvcnQgX3B5dGVzdAorICAgICAgICA+Pj4gbGlzdChf
aXRlcl9hbGxfbW9kdWxlcyhfcHl0ZXN0KSkKKyAgICAgICAgWydfcHl0ZXN0Ll9hcmdjb21wbGV0
ZScsICdfcHl0ZXN0Ll9jb2RlLmNvZGUnLCAuLi5dCiAgICAgIiIiCiAgICAgaW1wb3J0IG9zCiAg
ICAgaW1wb3J0IHBrZ3V0aWwKIAotICAgIGlmIHR5cGUocGFja2FnZSkgaXMgbm90IHN0cjoKLSAg
ICAgICAgcGF0aCwgcHJlZml4ID0gcGFja2FnZS5fX3BhdGhfX1swXSwgcGFja2FnZS5fX25hbWVf
XyArICIuIgotICAgIGVsc2U6CisgICAgaWYgaXNpbnN0YW5jZShwYWNrYWdlLCBzdHIpOgogICAg
ICAgICBwYXRoID0gcGFja2FnZQorICAgIGVsc2U6CisgICAgICAgICMgVHlwZSBpZ25vcmVkIGJl
Y2F1c2UgdHlwZXNoZWQgZG9lc24ndCBkZWZpbmUgTW9kdWxlVHlwZS5fX3BhdGhfXworICAgICAg
ICAjIChvbmx5IGRlZmluZWQgb24gcGFja2FnZXMpLgorICAgICAgICBwYWNrYWdlX3BhdGggPSBw
YWNrYWdlLl9fcGF0aF9fICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgIHBh
dGgsIHByZWZpeCA9IHBhY2thZ2VfcGF0aFswXSwgcGFja2FnZS5fX25hbWVfXyArICIuIgogICAg
IGZvciBfLCBuYW1lLCBpc19wYWNrYWdlIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFtwYXRoXSk6
CiAgICAgICAgIGlmIGlzX3BhY2thZ2U6CiAgICAgICAgICAgICBmb3IgbSBpbiBfaXRlcl9hbGxf
bW9kdWxlcyhvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSksIHByZWZpeD1uYW1lICsgIi4iKToKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2hlbHBjb25maWcucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9oZWxwY29uZmlnLnB5CmluZGV4IDU1MTRmZWM0MDRkYS4uMzQ4YTY1
ZWRlYzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9oZWxwY29uZmlnLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2hlbHBjb25maWcucHkKQEAgLTEsMTcgKzEs
MjQgQEAKLSIiIiB2ZXJzaW9uIGluZm8sIGhlbHAgbWVzc2FnZXMsIHRyYWNpbmcgY29uZmlndXJh
dGlvbi4gICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlz
aW9uLCBwcmludF9mdW5jdGlvbgorIiIiVmVyc2lvbiBpbmZvLCBoZWxwIG1lc3NhZ2VzLCB0cmFj
aW5nIGNvbmZpZ3VyYXRpb24uIiIiCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2Zyb20gYXJncGFy
c2UgaW1wb3J0IEFjdGlvbgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKIGltcG9ydCBweQorCiBp
bXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCiBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBQ
cmludEhlbHAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotZnJvbSBhcmdwYXJzZSBpbXBvcnQgQWN0
aW9uCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgogCiAKIGNs
YXNzIEhlbHBBY3Rpb24oQWN0aW9uKToKLSAgICAiIiJUaGlzIGlzIGFuIGFyZ3BhcnNlIEFjdGlv
biB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGluCi0gICAgb3JkZXIgdG8gc2tpcCB0aGUg
cmVzdCBvZiB0aGUgYXJndW1lbnQgcGFyc2luZyB3aGVuIC0taGVscCBpcyBwYXNzZWQuCisgICAg
IiIiQW4gYXJncGFyc2UgQWN0aW9uIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4gb3Jk
ZXIgdG8gc2tpcCB0aGUKKyAgICByZXN0IG9mIHRoZSBhcmd1bWVudCBwYXJzaW5nIHdoZW4gLS1o
ZWxwIGlzIHBhc3NlZC4KKwogICAgIFRoaXMgcHJldmVudHMgYXJncGFyc2UgZnJvbSBxdWl0dGlu
ZyBkdWUgdG8gbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudHMKICAgICB3aGVuIGFueSBhcmUgZGVm
aW5lZCwgZm9yIGV4YW1wbGUgYnkgYGBweXRlc3RfYWRkb3B0aW9uYGAuCiAgICAgVGhpcyBpcyBz
aW1pbGFyIHRvIHRoZSB3YXkgdGhhdCB0aGUgYnVpbHRpbiBhcmdwYXJzZSAtLWhlbHAgb3B0aW9u
IGlzCkBAIC0xOSw3ICsyNiw3IEBAIGNsYXNzIEhlbHBBY3Rpb24oQWN0aW9uKToKICAgICAiIiIK
IAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25fc3RyaW5ncywgZGVzdD1Ob25lLCBkZWZh
dWx0PUZhbHNlLCBoZWxwPU5vbmUpOgotICAgICAgICBzdXBlcihIZWxwQWN0aW9uLCBzZWxmKS5f
X2luaXRfXygKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygKICAgICAgICAgICAgIG9wdGlvbl9z
dHJpbmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICAgZGVzdD1kZXN0LAogICAgICAgICAg
ICAgY29uc3Q9VHJ1ZSwKQEAgLTMxLDE3ICszOCwyMSBAQCBjbGFzcyBIZWxwQWN0aW9uKEFjdGlv
bik6CiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9w
dGlvbl9zdHJpbmc9Tm9uZSk6CiAgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3Qs
IHNlbGYuY29uc3QpCiAKLSAgICAgICAgIyBXZSBzaG91bGQgb25seSBza2lwIHRoZSByZXN0IG9m
IHRoZSBwYXJzaW5nIGFmdGVyIHByZXBhcnNlIGlzIGRvbmUKKyAgICAgICAgIyBXZSBzaG91bGQg
b25seSBza2lwIHRoZSByZXN0IG9mIHRoZSBwYXJzaW5nIGFmdGVyIHByZXBhcnNlIGlzIGRvbmUu
CiAgICAgICAgIGlmIGdldGF0dHIocGFyc2VyLl9wYXJzZXIsICJhZnRlcl9wcmVwYXJzZSIsIEZh
bHNlKToKICAgICAgICAgICAgIHJhaXNlIFByaW50SGVscAogCiAKLWRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6CitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXI6IFBhcnNlcikgLT4gTm9u
ZToKICAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZGVidWdjb25maWciKQogICAgIGdyb3Vw
LmFkZG9wdGlvbigKICAgICAgICAgIi0tdmVyc2lvbiIsCi0gICAgICAgIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCi0gICAgICAgIGhlbHA9ImRpc3BsYXkgcHl0ZXN0IGxpYiB2ZXJzaW9uIGFuZCBpbXBv
cnQgaW5mb3JtYXRpb24uIiwKKyAgICAgICAgIi1WIiwKKyAgICAgICAgYWN0aW9uPSJjb3VudCIs
CisgICAgICAgIGRlZmF1bHQ9MCwKKyAgICAgICAgZGVzdD0idmVyc2lvbiIsCisgICAgICAgIGhl
bHA9ImRpc3BsYXkgcHl0ZXN0IHZlcnNpb24gYW5kIGluZm9ybWF0aW9uIGFib3V0IHBsdWdpbnMu
IgorICAgICAgICAiV2hlbiBnaXZlbiB0d2ljZSwgYWxzbyBkaXNwbGF5IGluZm9ybWF0aW9uIGFi
b3V0IHBsdWdpbnMuIiwKICAgICApCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKICAgICAgICAgIi1o
IiwKQEAgLTU2LDcgKzY3LDcgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAg
ICAgZGVzdD0icGx1Z2lucyIsCiAgICAgICAgIGRlZmF1bHQ9W10sCiAgICAgICAgIG1ldGF2YXI9
Im5hbWUiLAotICAgICAgICBoZWxwPSJlYXJseS1sb2FkIGdpdmVuIHBsdWdpbiAobXVsdGktYWxs
b3dlZCkuICIKKyAgICAgICAgaGVscD0iZWFybHktbG9hZCBnaXZlbiBwbHVnaW4gbW9kdWxlIG5h
bWUgb3IgZW50cnkgcG9pbnQgKG11bHRpLWFsbG93ZWQpLlxuIgogICAgICAgICAiVG8gYXZvaWQg
bG9hZGluZyBvZiBwbHVnaW5zLCB1c2UgdGhlIGBubzpgIHByZWZpeCwgZS5nLiAiCiAgICAgICAg
ICJgbm86ZG9jdGVzdGAuIiwKICAgICApCkBAIC02Niw3ICs3Nyw3IEBAIGRlZiBweXRlc3RfYWRk
b3B0aW9uKHBhcnNlcik6CiAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgIGRl
ZmF1bHQ9RmFsc2UsCiAgICAgICAgIGhlbHA9InRyYWNlIGNvbnNpZGVyYXRpb25zIG9mIGNvbmZ0
ZXN0LnB5IGZpbGVzLiIsCi0gICAgKSwKKyAgICApCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAg
ICAgICAiLS1kZWJ1ZyIsCiAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCkBAIC04Niw3ICs5
Nyw3IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiBAcHl0ZXN0Lmhvb2tpbXBsKGhv
b2t3cmFwcGVyPVRydWUpCiBkZWYgcHl0ZXN0X2NtZGxpbmVfcGFyc2UoKToKICAgICBvdXRjb21l
ID0geWllbGQKLSAgICBjb25maWcgPSBvdXRjb21lLmdldF9yZXN1bHQoKQorICAgIGNvbmZpZyA9
IG91dGNvbWUuZ2V0X3Jlc3VsdCgpICAjIHR5cGU6IENvbmZpZwogICAgIGlmIGNvbmZpZy5vcHRp
b24uZGVidWc6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoInB5dGVzdGRlYnVnLmxv
ZyIpCiAgICAgICAgIGRlYnVnZmlsZSA9IG9wZW4ocGF0aCwgInciKQpAQCAtOTgsMTQgKzEwOSwx
NCBAQCBkZWYgcHl0ZXN0X2NtZGxpbmVfcGFyc2UoKToKICAgICAgICAgICAgICAgICBweS5fX3Zl
cnNpb25fXywKICAgICAgICAgICAgICAgICAiLiIuam9pbihtYXAoc3RyLCBzeXMudmVyc2lvbl9p
bmZvKSksCiAgICAgICAgICAgICAgICAgb3MuZ2V0Y3dkKCksCi0gICAgICAgICAgICAgICAgY29u
ZmlnLl9vcmlnYXJncywKKyAgICAgICAgICAgICAgICBjb25maWcuaW52b2NhdGlvbl9wYXJhbXMu
YXJncywKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICBjb25maWcudHJhY2Uucm9v
dC5zZXR3cml0ZXIoZGVidWdmaWxlLndyaXRlKQogICAgICAgICB1bmRvX3RyYWNpbmcgPSBjb25m
aWcucGx1Z2lubWFuYWdlci5lbmFibGVfdHJhY2luZygpCiAgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoIndyaXRpbmcgcHl0ZXN0ZGVidWcgaW5mb3JtYXRpb24gdG8gJXNcbiIgJSBwYXRoKQogCi0g
ICAgICAgIGRlZiB1bnNldF90cmFjaW5nKCk6CisgICAgICAgIGRlZiB1bnNldF90cmFjaW5nKCkg
LT4gTm9uZToKICAgICAgICAgICAgIGRlYnVnZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCJ3cm90ZSBweXRlc3RkZWJ1ZyBpbmZvcm1hdGlvbiB0byAlc1xuIiAlIGRl
YnVnZmlsZS5uYW1lKQogICAgICAgICAgICAgY29uZmlnLnRyYWNlLnJvb3Quc2V0d3JpdGVyKE5v
bmUpCkBAIC0xMTQsNTIgKzEyNSw5MCBAQCBkZWYgcHl0ZXN0X2NtZGxpbmVfcGFyc2UoKToKICAg
ICAgICAgY29uZmlnLmFkZF9jbGVhbnVwKHVuc2V0X3RyYWNpbmcpCiAKIAotZGVmIHB5dGVzdF9j
bWRsaW5lX21haW4oY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0aW9uLnZlcnNpb246Ci0gICAg
ICAgIHAgPSBweS5wYXRoLmxvY2FsKHB5dGVzdC5fX2ZpbGVfXykKK2RlZiBzaG93dmVyc2lvbihj
b25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBpZiBjb25maWcub3B0aW9uLnZlcnNpb24gPiAx
OgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAotICAgICAgICAgICAgIlRoaXMgaXMgcHl0ZXN0
IHZlcnNpb24gJXMsIGltcG9ydGVkIGZyb20gJXNcbiIgJSAocHl0ZXN0Ll9fdmVyc2lvbl9fLCBw
KQorICAgICAgICAgICAgIlRoaXMgaXMgcHl0ZXN0IHZlcnNpb24ge30sIGltcG9ydGVkIGZyb20g
e31cbiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHB5dGVzdC5fX3ZlcnNpb25fXywgcHl0ZXN0
Ll9fZmlsZV9fCisgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgcGx1Z2luaW5mbyA9
IGdldHBsdWdpbnZlcnNpb25pbmZvKGNvbmZpZykKICAgICAgICAgaWYgcGx1Z2luaW5mbzoKICAg
ICAgICAgICAgIGZvciBsaW5lIGluIHBsdWdpbmluZm86CiAgICAgICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZShsaW5lICsgIlxuIikKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCJweXRlc3Qge31cbiIuZm9ybWF0KHB5dGVzdC5fX3ZlcnNpb25fXykpCisKKworZGVmIHB5
dGVzdF9jbWRsaW5lX21haW4oY29uZmlnOiBDb25maWcpIC0+IE9wdGlvbmFsW1VuaW9uW2ludCwg
RXhpdENvZGVdXToKKyAgICBpZiBjb25maWcub3B0aW9uLnZlcnNpb24gPiAwOgorICAgICAgICBz
aG93dmVyc2lvbihjb25maWcpCiAgICAgICAgIHJldHVybiAwCiAgICAgZWxpZiBjb25maWcub3B0
aW9uLmhlbHA6CiAgICAgICAgIGNvbmZpZy5fZG9fY29uZmlndXJlKCkKICAgICAgICAgc2hvd2hl
bHAoY29uZmlnKQogICAgICAgICBjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3VyZSgpCiAgICAgICAg
IHJldHVybiAwCisgICAgcmV0dXJuIE5vbmUKIAogCi1kZWYgc2hvd2hlbHAoY29uZmlnKToKK2Rl
ZiBzaG93aGVscChjb25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBpbXBvcnQgdGV4dHdyYXAK
KwogICAgIHJlcG9ydGVyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigidGVybWlu
YWxyZXBvcnRlciIpCiAgICAgdHcgPSByZXBvcnRlci5fdHcKICAgICB0dy53cml0ZShjb25maWcu
X3BhcnNlci5vcHRwYXJzZXIuZm9ybWF0X2hlbHAoKSkKICAgICB0dy5saW5lKCkKLSAgICB0dy5s
aW5lKCkKICAgICB0dy5saW5lKAotICAgICAgICAiW3B5dGVzdF0gaW5pLW9wdGlvbnMgaW4gdGhl
IGZpcnN0ICIgInB5dGVzdC5pbml8dG94LmluaXxzZXR1cC5jZmcgZmlsZSBmb3VuZDoiCisgICAg
ICAgICJbcHl0ZXN0XSBpbmktb3B0aW9ucyBpbiB0aGUgZmlyc3QgcHl0ZXN0LmluaXx0b3guaW5p
fHNldHVwLmNmZyBmaWxlIGZvdW5kOiIKICAgICApCiAgICAgdHcubGluZSgpCiAKKyAgICBjb2x1
bW5zID0gdHcuZnVsbHdpZHRoICAjIGNvc3RseSBjYWxsCisgICAgaW5kZW50X2xlbiA9IDI0ICAj
IGJhc2VkIG9uIGFyZ3BhcnNlJ3MgbWF4X2hlbHBfcG9zaXRpb249MjQKKyAgICBpbmRlbnQgPSAi
ICIgKiBpbmRlbnRfbGVuCiAgICAgZm9yIG5hbWUgaW4gY29uZmlnLl9wYXJzZXIuX2luaW5hbWVz
OgogICAgICAgICBoZWxwLCB0eXBlLCBkZWZhdWx0ID0gY29uZmlnLl9wYXJzZXIuX2luaWRpY3Rb
bmFtZV0KICAgICAgICAgaWYgdHlwZSBpcyBOb25lOgogICAgICAgICAgICAgdHlwZSA9ICJzdHJp
bmciCi0gICAgICAgIHNwZWMgPSAiJXMgKCVzKSIgJSAobmFtZSwgdHlwZSkKLSAgICAgICAgbGlu
ZSA9ICIgICUtMjRzICVzIiAlIChzcGVjLCBoZWxwKQotICAgICAgICB0dy5saW5lKGxpbmVbOnR3
LmZ1bGx3aWR0aF0pCisgICAgICAgIGlmIGhlbHAgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcigiaGVscCBhcmd1bWVudCBjYW5ub3QgYmUgTm9uZSBmb3Ige30iLmZvcm1hdChu
YW1lKSkKKyAgICAgICAgc3BlYyA9ICJ7fSAoe30pOiIuZm9ybWF0KG5hbWUsIHR5cGUpCisgICAg
ICAgIHR3LndyaXRlKCIgICVzIiAlIHNwZWMpCisgICAgICAgIHNwZWNfbGVuID0gbGVuKHNwZWMp
CisgICAgICAgIGlmIHNwZWNfbGVuID4gKGluZGVudF9sZW4gLSAzKToKKyAgICAgICAgICAgICMg
RGlzcGxheSBoZWxwIHN0YXJ0aW5nIGF0IGEgbmV3IGxpbmUuCisgICAgICAgICAgICB0dy5saW5l
KCkKKyAgICAgICAgICAgIGhlbHBsaW5lcyA9IHRleHR3cmFwLndyYXAoCisgICAgICAgICAgICAg
ICAgaGVscCwKKyAgICAgICAgICAgICAgICBjb2x1bW5zLAorICAgICAgICAgICAgICAgIGluaXRp
YWxfaW5kZW50PWluZGVudCwKKyAgICAgICAgICAgICAgICBzdWJzZXF1ZW50X2luZGVudD1pbmRl
bnQsCisgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1GYWxzZSwKKyAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgZm9yIGxpbmUgaW4gaGVscGxpbmVzOgorICAgICAgICAgICAgICAg
IHR3LmxpbmUobGluZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRGlzcGxheSBoZWxw
IHN0YXJ0aW5nIGFmdGVyIHRoZSBzcGVjLCBmb2xsb3dpbmcgbGluZXMgaW5kZW50ZWQuCisgICAg
ICAgICAgICB0dy53cml0ZSgiICIgKiAoaW5kZW50X2xlbiAtIHNwZWNfbGVuIC0gMikpCisgICAg
ICAgICAgICB3cmFwcGVkID0gdGV4dHdyYXAud3JhcChoZWxwLCBjb2x1bW5zIC0gaW5kZW50X2xl
biwgYnJlYWtfb25faHlwaGVucz1GYWxzZSkKKworICAgICAgICAgICAgaWYgd3JhcHBlZDoKKyAg
ICAgICAgICAgICAgICB0dy5saW5lKHdyYXBwZWRbMF0pCisgICAgICAgICAgICAgICAgZm9yIGxp
bmUgaW4gd3JhcHBlZFsxOl06CisgICAgICAgICAgICAgICAgICAgIHR3LmxpbmUoaW5kZW50ICsg
bGluZSkKIAogICAgIHR3LmxpbmUoKQogICAgIHR3LmxpbmUoImVudmlyb25tZW50IHZhcmlhYmxl
czoiKQogICAgIHZhcnMgPSBbCiAgICAgICAgICgiUFlURVNUX0FERE9QVFMiLCAiZXh0cmEgY29t
bWFuZCBsaW5lIG9wdGlvbnMiKSwKICAgICAgICAgKCJQWVRFU1RfUExVR0lOUyIsICJjb21tYS1z
ZXBhcmF0ZWQgcGx1Z2lucyB0byBsb2FkIGR1cmluZyBzdGFydHVwIiksCisgICAgICAgICgiUFlU
RVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIiwgInNldCB0byBkaXNhYmxlIHBsdWdpbiBhdXRv
LWxvYWRpbmciKSwKICAgICAgICAgKCJQWVRFU1RfREVCVUciLCAic2V0IHRvIGVuYWJsZSBkZWJ1
ZyB0cmFjaW5nIG9mIHB5dGVzdCdzIGludGVybmFscyIpLAogICAgIF0KICAgICBmb3IgbmFtZSwg
aGVscCBpbiB2YXJzOgotICAgICAgICB0dy5saW5lKCIgICUtMjRzICVzIiAlIChuYW1lLCBoZWxw
KSkKKyAgICAgICAgdHcubGluZSgiICB7OjwyNH0ge30iLmZvcm1hdChuYW1lLCBoZWxwKSkKICAg
ICB0dy5saW5lKCkKICAgICB0dy5saW5lKCkKIApAQCAtMTc5LDIyICsyMjgsMjQgQEAgZGVmIHNo
b3doZWxwKGNvbmZpZyk6CiBjb25mdGVzdF9vcHRpb25zID0gWygicHl0ZXN0X3BsdWdpbnMiLCAi
bGlzdCBvZiBwbHVnaW4gbmFtZXMgdG8gbG9hZCIpXQogCiAKLWRlZiBnZXRwbHVnaW52ZXJzaW9u
aW5mbyhjb25maWcpOgorZGVmIGdldHBsdWdpbnZlcnNpb25pbmZvKGNvbmZpZzogQ29uZmlnKSAt
PiBMaXN0W3N0cl06CiAgICAgbGluZXMgPSBbXQogICAgIHBsdWdpbmluZm8gPSBjb25maWcucGx1
Z2lubWFuYWdlci5saXN0X3BsdWdpbl9kaXN0aW5mbygpCiAgICAgaWYgcGx1Z2luaW5mbzoKICAg
ICAgICAgbGluZXMuYXBwZW5kKCJzZXR1cHRvb2xzIHJlZ2lzdGVyZWQgcGx1Z2luczoiKQogICAg
ICAgICBmb3IgcGx1Z2luLCBkaXN0IGluIHBsdWdpbmluZm86CiAgICAgICAgICAgICBsb2MgPSBn
ZXRhdHRyKHBsdWdpbiwgIl9fZmlsZV9fIiwgcmVwcihwbHVnaW4pKQotICAgICAgICAgICAgY29u
dGVudCA9ICIlcy0lcyBhdCAlcyIgJSAoZGlzdC5wcm9qZWN0X25hbWUsIGRpc3QudmVyc2lvbiwg
bG9jKQorICAgICAgICAgICAgY29udGVudCA9ICJ7fS17fSBhdCB7fSIuZm9ybWF0KGRpc3QucHJv
amVjdF9uYW1lLCBkaXN0LnZlcnNpb24sIGxvYykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgi
ICAiICsgY29udGVudCkKICAgICByZXR1cm4gbGluZXMKIAogCi1kZWYgcHl0ZXN0X3JlcG9ydF9o
ZWFkZXIoY29uZmlnKToKK2RlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihjb25maWc6IENvbmZpZykg
LT4gTGlzdFtzdHJdOgogICAgIGxpbmVzID0gW10KICAgICBpZiBjb25maWcub3B0aW9uLmRlYnVn
IG9yIGNvbmZpZy5vcHRpb24udHJhY2Vjb25maWc6Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgidXNp
bmc6IHB5dGVzdC0lcyBweWxpYi0lcyIgJSAocHl0ZXN0Ll9fdmVyc2lvbl9fLCBweS5fX3ZlcnNp
b25fXykpCisgICAgICAgIGxpbmVzLmFwcGVuZCgKKyAgICAgICAgICAgICJ1c2luZzogcHl0ZXN0
LXt9IHB5bGliLXt9Ii5mb3JtYXQocHl0ZXN0Ll9fdmVyc2lvbl9fLCBweS5fX3ZlcnNpb25fXykK
KyAgICAgICAgKQogCiAgICAgICAgIHZlcmluZm8gPSBnZXRwbHVnaW52ZXJzaW9uaW5mbyhjb25m
aWcpCiAgICAgICAgIGlmIHZlcmluZm86CkBAIC0yMDgsNSArMjU5LDUgQEAgZGVmIHB5dGVzdF9y
ZXBvcnRfaGVhZGVyKGNvbmZpZyk6CiAgICAgICAgICAgICAgICAgciA9IHBsdWdpbi5fX2ZpbGVf
XwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByID0gcmVwcihwbHVnaW4pCi0g
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICAlLTIwczogJXMiICUgKG5hbWUsIHIpKQorICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgezo8MjB9OiB7fSIuZm9ybWF0KG5hbWUsIHIpKQog
ICAgIHJldHVybiBsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvaG9v
a3NwZWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ob29rc3BlYy5weQppbmRleCBmZWM0
M2E0MDA5OTEuLjJmMGEwNGEwNmE3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3QvaG9va3NwZWMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvaG9va3NwZWMucHkK
QEAgLTEsNyArMSw0OCBAQAotIiIiIGhvb2sgc3BlY2lmaWNhdGlvbnMgZm9yIHB5dGVzdCBwbHVn
aW5zLCBpbnZva2VkIGZyb20gbWFpbi5weSBhbmQgYnVpbHRpbiBwbHVnaW5zLiAgIiIiCi0KKyIi
Ikhvb2sgc3BlY2lmaWNhdGlvbnMgZm9yIHB5dGVzdCBwbHVnaW5zIHdoaWNoIGFyZSBpbnZva2Vk
IGJ5IHB5dGVzdCBpdHNlbGYKK2FuZCBieSBidWlsdGluIHBsdWdpbnMuIiIiCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0
IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBNYXBwaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0
aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR1
cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworaW1wb3J0IHB5LnBhdGgKIGZyb20gcGx1
Z2d5IGltcG9ydCBIb29rc3BlY01hcmtlcgogCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBU
WVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQgV0FSTklOR19DQVBU
VVJFRF9IT09LCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgaW1wb3J0IHBkYgorICAgIGltcG9y
dCB3YXJuaW5ncworICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwKKwor
ICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25SZXByCisgICAgZnJv
bSBfcHl0ZXN0LmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8KKyAgICBmcm9tIF9weXRlc3QuY29u
ZmlnIGltcG9ydCBDb25maWcKKyAgICBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29k
ZQorICAgIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFB5dGVzdFBsdWdpbk1hbmFnZXIKKyAg
ICBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBfUGx1Z2d5UGx1Z2luCisgICAgZnJvbSBfcHl0
ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGltcG9ydCBQYXJzZXIKKyAgICBmcm9tIF9weXRlc3QuZml4
dHVyZXMgaW1wb3J0IEZpeHR1cmVEZWYKKyAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0
IFN1YlJlcXVlc3QKKyAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgorICAgIGZy
b20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9yCisgICAgZnJvbSBfcHl0ZXN0Lm5vZGVz
IGltcG9ydCBJdGVtCisgICAgZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBFeGl0CisgICAg
ZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgRnVuY3Rpb24KKyAgICBmcm9tIF9weXRlc3QucHl0
aG9uIGltcG9ydCBNZXRhZnVuYworICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IE1vZHVs
ZQorICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IFB5Q29sbGVjdG9yCisgICAgZnJvbSBf
cHl0ZXN0LnJlcG9ydHMgaW1wb3J0IENvbGxlY3RSZXBvcnQKKyAgICBmcm9tIF9weXRlc3QucmVw
b3J0cyBpbXBvcnQgVGVzdFJlcG9ydAorICAgIGZyb20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0IENh
bGxJbmZvCisgICAgZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbFJlcG9ydGVy
CisKKwogaG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigicHl0ZXN0IikKIAogIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0xMCwxMiArNTEsMTEgQEAgaG9va3NwZWMgPSBIb29rc3BlY01hcmtlcigicHl0
ZXN0IikKIAogCiBAaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfYWRkaG9va3Mo
cGx1Z2lubWFuYWdlcik6Ci0gICAgIiIiY2FsbGVkIGF0IHBsdWdpbiByZWdpc3RyYXRpb24gdGlt
ZSB0byBhbGxvdyBhZGRpbmcgbmV3IGhvb2tzIHZpYSBhIGNhbGwgdG8KK2RlZiBweXRlc3RfYWRk
aG9va3MocGx1Z2lubWFuYWdlcjogIlB5dGVzdFBsdWdpbk1hbmFnZXIiKSAtPiBOb25lOgorICAg
ICIiIkNhbGxlZCBhdCBwbHVnaW4gcmVnaXN0cmF0aW9uIHRpbWUgdG8gYWxsb3cgYWRkaW5nIG5l
dyBob29rcyB2aWEgYSBjYWxsIHRvCiAgICAgYGBwbHVnaW5tYW5hZ2VyLmFkZF9ob29rc3BlY3Mo
bW9kdWxlX29yX2NsYXNzLCBwcmVmaXgpYGAuCiAKLQotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZp
Zy5QeXRlc3RQbHVnaW5NYW5hZ2VyIHBsdWdpbm1hbmFnZXI6IHB5dGVzdCBwbHVnaW4gbWFuYWdl
cgorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5QeXRlc3RQbHVnaW5NYW5hZ2VyIHBsdWdpbm1h
bmFnZXI6IHB5dGVzdCBwbHVnaW4gbWFuYWdlci4KIAogICAgIC4uIG5vdGU6OgogICAgICAgICBU
aGlzIGhvb2sgaXMgaW5jb21wYXRpYmxlIHdpdGggYGBob29rd3JhcHBlcj1UcnVlYGAuCkBAIC0y
MywxMyArNjMsMTMgQEAgZGVmIHB5dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKToKIAogCiBA
aG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfbmFtZXNwYWNlKCk6Ci0gICAgIiIi
Ci0gICAgKCoqRGVwcmVjYXRlZCoqKSB0aGlzIGhvb2sgY2F1c2VzIGRpcmVjdCBtb25rZXlwYXRj
aGluZyBvbiBweXRlc3QsIGl0cyB1c2UgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQKLSAgICByZXR1
cm4gZGljdCBvZiBuYW1lLT5vYmplY3QgdG8gYmUgbWFkZSBnbG9iYWxseSBhdmFpbGFibGUgaW4K
LSAgICB0aGUgcHl0ZXN0IG5hbWVzcGFjZS4KK2RlZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQo
CisgICAgcGx1Z2luOiAiX1BsdWdneVBsdWdpbiIsIG1hbmFnZXI6ICJQeXRlc3RQbHVnaW5NYW5h
Z2VyIgorKSAtPiBOb25lOgorICAgICIiIkEgbmV3IHB5dGVzdCBwbHVnaW4gZ290IHJlZ2lzdGVy
ZWQuCiAKLSAgICBUaGlzIGhvb2sgaXMgY2FsbGVkIGF0IHBsdWdpbiByZWdpc3RyYXRpb24gdGlt
ZS4KKyAgICA6cGFyYW0gcGx1Z2luOiBUaGUgcGx1Z2luIG1vZHVsZSBvciBpbnN0YW5jZS4KKyAg
ICA6cGFyYW0gX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlciBtYW5hZ2VyOiBweXRl
c3QgcGx1Z2luIG1hbmFnZXIuCiAKICAgICAuLiBub3RlOjoKICAgICAgICAgVGhpcyBob29rIGlz
IGluY29tcGF0aWJsZSB3aXRoIGBgaG9va3dyYXBwZXI9VHJ1ZWBgLgpAQCAtMzcsMjAgKzc3LDgg
QEAgZGVmIHB5dGVzdF9uYW1lc3BhY2UoKToKIAogCiBAaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkK
LWRlZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQocGx1Z2luLCBtYW5hZ2VyKToKLSAgICAiIiIg
YSBuZXcgcHl0ZXN0IHBsdWdpbiBnb3QgcmVnaXN0ZXJlZC4KLQotICAgIDpwYXJhbSBwbHVnaW46
IHRoZSBwbHVnaW4gbW9kdWxlIG9yIGluc3RhbmNlCi0gICAgOnBhcmFtIF9weXRlc3QuY29uZmln
LlB5dGVzdFBsdWdpbk1hbmFnZXIgbWFuYWdlcjogcHl0ZXN0IHBsdWdpbiBtYW5hZ2VyCi0KLSAg
ICAuLiBub3RlOjoKLSAgICAgICAgVGhpcyBob29rIGlzIGluY29tcGF0aWJsZSB3aXRoIGBgaG9v
a3dyYXBwZXI9VHJ1ZWBgLgotICAgICIiIgotCi0KLUBob29rc3BlYyhoaXN0b3JpYz1UcnVlKQot
ZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICAiIiJyZWdpc3RlciBhcmdwYXJzZS1z
dHlsZSBvcHRpb25zIGFuZCBpbmktc3R5bGUgY29uZmlnIHZhbHVlcywKK2RlZiBweXRlc3RfYWRk
b3B0aW9uKHBhcnNlcjogIlBhcnNlciIsIHBsdWdpbm1hbmFnZXI6ICJQeXRlc3RQbHVnaW5NYW5h
Z2VyIikgLT4gTm9uZToKKyAgICAiIiJSZWdpc3RlciBhcmdwYXJzZS1zdHlsZSBvcHRpb25zIGFu
ZCBpbmktc3R5bGUgY29uZmlnIHZhbHVlcywKICAgICBjYWxsZWQgb25jZSBhdCB0aGUgYmVnaW5u
aW5nIG9mIGEgdGVzdCBydW4uCiAKICAgICAuLiBub3RlOjoKQEAgLTU5LDEwICs4NywxNiBAQCBk
ZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBmaWxlcyBzaXR1YXRlZCBhdCB0
aGUgdGVzdHMgcm9vdCBkaXJlY3RvcnkgZHVlIHRvIGhvdyBweXRlc3QKICAgICAgICAgOnJlZjpg
ZGlzY292ZXJzIHBsdWdpbnMgZHVyaW5nIHN0YXJ0dXAgPHBsdWdpbm9yZGVyPmAuCiAKLSAgICA6
YXJnIF9weXRlc3QuY29uZmlnLlBhcnNlciBwYXJzZXI6IFRvIGFkZCBjb21tYW5kIGxpbmUgb3B0
aW9ucywgY2FsbAotICAgICAgICA6cHk6ZnVuYzpgcGFyc2VyLmFkZG9wdGlvbiguLi4pIDxfcHl0
ZXN0LmNvbmZpZy5QYXJzZXIuYWRkb3B0aW9uPmAuCisgICAgOnBhcmFtIF9weXRlc3QuY29uZmln
LmFyZ3BhcnNpbmcuUGFyc2VyIHBhcnNlcjoKKyAgICAgICAgVG8gYWRkIGNvbW1hbmQgbGluZSBv
cHRpb25zLCBjYWxsCisgICAgICAgIDpweTpmdW5jOmBwYXJzZXIuYWRkb3B0aW9uKC4uLikgPF9w
eXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcuUGFyc2VyLmFkZG9wdGlvbj5gLgogICAgICAgICBUbyBh
ZGQgaW5pLWZpbGUgdmFsdWVzIGNhbGwgOnB5OmZ1bmM6YHBhcnNlci5hZGRpbmkoLi4uKQotICAg
ICAgICA8X3B5dGVzdC5jb25maWcuUGFyc2VyLmFkZGluaT5gLgorICAgICAgICA8X3B5dGVzdC5j
b25maWcuYXJncGFyc2luZy5QYXJzZXIuYWRkaW5pPmAuCisKKyAgICA6cGFyYW0gX3B5dGVzdC5j
b25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlciBwbHVnaW5tYW5hZ2VyOgorICAgICAgICBweXRlc3Qg
cGx1Z2luIG1hbmFnZXIsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwgOnB5OmZ1bmM6YGhv
b2tzcGVjYCdzCisgICAgICAgIG9yIDpweTpmdW5jOmBob29raW1wbGAncyBhbmQgYWxsb3cgb25l
IHBsdWdpbiB0byBjYWxsIGFub3RoZXIgcGx1Z2luJ3MgaG9va3MKKyAgICAgICAgdG8gY2hhbmdl
IGhvdyBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcmUgYWRkZWQuCiAKICAgICBPcHRpb25zIGNhbiBs
YXRlciBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZQogICAgIDpweTpjbGFzczpgY29uZmlnIDxfcHl0
ZXN0LmNvbmZpZy5Db25maWc+YCBvYmplY3QsIHJlc3BlY3RpdmVseToKQEAgLTgyLDkgKzExNiw4
IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAKIAogQGhvb2tzcGVjKGhpc3Rvcmlj
PVRydWUpCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgICIiIgotICAgIEFsbG93
cyBwbHVnaW5zIGFuZCBjb25mdGVzdCBmaWxlcyB0byBwZXJmb3JtIGluaXRpYWwgY29uZmlndXJh
dGlvbi4KK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogIkNvbmZpZyIpIC0+IE5vbmU6Cisg
ICAgIiIiQWxsb3cgcGx1Z2lucyBhbmQgY29uZnRlc3QgZmlsZXMgdG8gcGVyZm9ybSBpbml0aWFs
IGNvbmZpZ3VyYXRpb24uCiAKICAgICBUaGlzIGhvb2sgaXMgY2FsbGVkIGZvciBldmVyeSBwbHVn
aW4gYW5kIGluaXRpYWwgY29uZnRlc3QgZmlsZQogICAgIGFmdGVyIGNvbW1hbmQgbGluZSBvcHRp
b25zIGhhdmUgYmVlbiBwYXJzZWQuCkBAIC05NSw3ICsxMjgsNyBAQCBkZWYgcHl0ZXN0X2NvbmZp
Z3VyZShjb25maWcpOgogICAgIC4uIG5vdGU6OgogICAgICAgICBUaGlzIGhvb2sgaXMgaW5jb21w
YXRpYmxlIHdpdGggYGBob29rd3JhcHBlcj1UcnVlYGAuCiAKLSAgICA6YXJnIF9weXRlc3QuY29u
ZmlnLkNvbmZpZyBjb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0CisgICAgOnBhcmFtIF9weXRl
c3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRoZSBweXRlc3QgY29uZmlnIG9iamVjdC4KICAgICAi
IiIKIAogCkBAIC0xMDYsMjAgKzEzOSwyNCBAQCBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcp
OgogCiAKIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9jbWRsaW5lX3Bh
cnNlKHBsdWdpbm1hbmFnZXIsIGFyZ3MpOgotICAgICIiInJldHVybiBpbml0aWFsaXplZCBjb25m
aWcgb2JqZWN0LCBwYXJzaW5nIHRoZSBzcGVjaWZpZWQgYXJncy4KK2RlZiBweXRlc3RfY21kbGlu
ZV9wYXJzZSgKKyAgICBwbHVnaW5tYW5hZ2VyOiAiUHl0ZXN0UGx1Z2luTWFuYWdlciIsIGFyZ3M6
IExpc3Rbc3RyXQorKSAtPiBPcHRpb25hbFsiQ29uZmlnIl06CisgICAgIiIiUmV0dXJuIGFuIGlu
aXRpYWxpemVkIGNvbmZpZyBvYmplY3QsIHBhcnNpbmcgdGhlIHNwZWNpZmllZCBhcmdzLgogCi0g
ICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRg
CisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1
bHRgLgogCiAgICAgLi4gbm90ZTo6Ci0gICAgICAgIFRoaXMgaG9vayB3aWxsIG5vdCBiZSBjYWxs
ZWQgZm9yIGBgY29uZnRlc3QucHlgYCBmaWxlcywgb25seSBmb3Igc2V0dXB0b29scyBwbHVnaW5z
LgorICAgICAgICBUaGlzIGhvb2sgd2lsbCBvbmx5IGJlIGNhbGxlZCBmb3IgcGx1Z2luIGNsYXNz
ZXMgcGFzc2VkIHRvIHRoZQorICAgICAgICBgYHBsdWdpbnNgYCBhcmcgd2hlbiB1c2luZyBgcHl0
ZXN0Lm1haW5gXyB0byBwZXJmb3JtIGFuIGluLXByb2Nlc3MKKyAgICAgICAgdGVzdCBydW4uCiAK
LSAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlciBwbHVnaW5tYW5h
Z2VyOiBweXRlc3QgcGx1Z2luIG1hbmFnZXIKLSAgICA6cGFyYW0gbGlzdFtzdHJdIGFyZ3M6IGxp
c3Qgb2YgYXJndW1lbnRzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lCisgICAgOnBhcmFtIF9w
eXRlc3QuY29uZmlnLlB5dGVzdFBsdWdpbk1hbmFnZXIgcGx1Z2lubWFuYWdlcjogUHl0ZXN0IHBs
dWdpbiBtYW5hZ2VyLgorICAgIDpwYXJhbSBMaXN0W3N0cl0gYXJnczogTGlzdCBvZiBhcmd1bWVu
dHMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgIiIiCiAKIAotZGVmIHB5dGVzdF9j
bWRsaW5lX3ByZXBhcnNlKGNvbmZpZywgYXJncyk6CitkZWYgcHl0ZXN0X2NtZGxpbmVfcHJlcGFy
c2UoY29uZmlnOiAiQ29uZmlnIiwgYXJnczogTGlzdFtzdHJdKSAtPiBOb25lOgogICAgICIiIigq
KkRlcHJlY2F0ZWQqKikgbW9kaWZ5IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYmVmb3JlIG9wdGlv
biBwYXJzaW5nLgogCiAgICAgVGhpcyBob29rIGlzIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhbmQg
d2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHB5dGVzdCB2ZXJzaW9uLiBDb25zaWRlcgpAQCAt
MTI4LDM1ICsxNjUsMzcgQEAgZGVmIHB5dGVzdF9jbWRsaW5lX3ByZXBhcnNlKGNvbmZpZywgYXJn
cyk6CiAgICAgLi4gbm90ZTo6CiAgICAgICAgIFRoaXMgaG9vayB3aWxsIG5vdCBiZSBjYWxsZWQg
Zm9yIGBgY29uZnRlc3QucHlgYCBmaWxlcywgb25seSBmb3Igc2V0dXB0b29scyBwbHVnaW5zLgog
Ci0gICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IHB5dGVzdCBjb25maWcg
b2JqZWN0Ci0gICAgOnBhcmFtIGxpc3Rbc3RyXSBhcmdzOiBsaXN0IG9mIGFyZ3VtZW50cyBwYXNz
ZWQgb24gdGhlIGNvbW1hbmQgbGluZQorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcg
Y29uZmlnOiBUaGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCisgICAgOnBhcmFtIExpc3Rbc3RyXSBh
cmdzOiBBcmd1bWVudHMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgIiIiCiAKIAog
QGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25m
aWcpOgotICAgICIiIiBjYWxsZWQgZm9yIHBlcmZvcm1pbmcgdGhlIG1haW4gY29tbWFuZCBsaW5l
IGFjdGlvbi4gVGhlIGRlZmF1bHQKK2RlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZzogIkNv
bmZpZyIpIC0+IE9wdGlvbmFsW1VuaW9uWyJFeGl0Q29kZSIsIGludF1dOgorICAgICIiIkNhbGxl
ZCBmb3IgcGVyZm9ybWluZyB0aGUgbWFpbiBjb21tYW5kIGxpbmUgYWN0aW9uLiBUaGUgZGVmYXVs
dAogICAgIGltcGxlbWVudGF0aW9uIHdpbGwgaW52b2tlIHRoZSBjb25maWd1cmUgaG9va3MgYW5k
IHJ1bnRlc3RfbWFpbmxvb3AuCiAKICAgICAuLiBub3RlOjoKICAgICAgICAgVGhpcyBob29rIHdp
bGwgbm90IGJlIGNhbGxlZCBmb3IgYGBjb25mdGVzdC5weWBgIGZpbGVzLCBvbmx5IGZvciBzZXR1
cHRvb2xzIHBsdWdpbnMuCiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNl
ZSA6cmVmOmBmaXJzdHJlc3VsdGAKKyAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQs
IHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCiAKLSAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29u
ZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKKyAgICA6cGFyYW0gX3B5dGVzdC5jb25m
aWcuQ29uZmlnIGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgogICAgICIiIgogCiAK
LWRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhlYXJseV9jb25maWcsIHBhcnNlciwg
YXJncyk6Ci0gICAgIiIiIGltcGxlbWVudHMgdGhlIGxvYWRpbmcgb2YgaW5pdGlhbCBjb25mdGVz
dCBmaWxlcyBhaGVhZAorZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKAorICAgIGVh
cmx5X2NvbmZpZzogIkNvbmZpZyIsIHBhcnNlcjogIlBhcnNlciIsIGFyZ3M6IExpc3Rbc3RyXQor
KSAtPiBOb25lOgorICAgICIiIkNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGxvYWRpbmcgb2YgaW5p
dGlhbCBjb25mdGVzdCBmaWxlcyBhaGVhZAogICAgIG9mIGNvbW1hbmQgbGluZSBvcHRpb24gcGFy
c2luZy4KIAogICAgIC4uIG5vdGU6OgogICAgICAgICBUaGlzIGhvb2sgd2lsbCBub3QgYmUgY2Fs
bGVkIGZvciBgYGNvbmZ0ZXN0LnB5YGAgZmlsZXMsIG9ubHkgZm9yIHNldHVwdG9vbHMgcGx1Z2lu
cy4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgZWFybHlfY29uZmlnOiBweXRl
c3QgY29uZmlnIG9iamVjdAotICAgIDpwYXJhbSBsaXN0W3N0cl0gYXJnczogbGlzdCBvZiBhcmd1
bWVudHMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUKLSAgICA6cGFyYW0gX3B5dGVzdC5jb25m
aWcuUGFyc2VyIHBhcnNlcjogdG8gYWRkIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgOnBhcmFt
IF9weXRlc3QuY29uZmlnLkNvbmZpZyBlYXJseV9jb25maWc6IFRoZSBweXRlc3QgY29uZmlnIG9i
amVjdC4KKyAgICA6cGFyYW0gTGlzdFtzdHJdIGFyZ3M6IEFyZ3VtZW50cyBwYXNzZWQgb24gdGhl
IGNvbW1hbmQgbGluZS4KKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuYXJncGFyc2luZy5QYXJz
ZXIgcGFyc2VyOiBUbyBhZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMuCiAgICAgIiIiCiAKIApAQCAt
MTY2LDg3ICsyMDUsMTE0IEBAIGRlZiBweXRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0cyhlYXJs
eV9jb25maWcsIHBhcnNlciwgYXJncyk6CiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUp
Ci1kZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbik6Ci0gICAgIiIiUGVyZm9ybSB0aGUgY29s
bGVjdGlvbiBwcm90b2NvbCBmb3IgdGhlIGdpdmVuIHNlc3Npb24uCitkZWYgcHl0ZXN0X2NvbGxl
Y3Rpb24oc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBPcHRpb25hbFtvYmplY3RdOgorICAgICIiIlBl
cmZvcm0gdGhlIGNvbGxlY3Rpb24gcGhhc2UgZm9yIHRoZSBnaXZlbiBzZXNzaW9uLgogCiAgICAg
U3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgor
ICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgbm90IHVzZWQsIGJ1dCBvbmx5IHN0b3BzIGZ1cnRoZXIg
cHJvY2Vzc2luZy4KKworICAgIFRoZSBkZWZhdWx0IGNvbGxlY3Rpb24gcGhhc2UgaXMgdGhpcyAo
c2VlIGluZGl2aWR1YWwgaG9va3MgZm9yIGZ1bGwgZGV0YWlscyk6CisKKyAgICAxLiBTdGFydGlu
ZyBmcm9tIGBgc2Vzc2lvbmBgIGFzIHRoZSBpbml0aWFsIGNvbGxlY3RvcjoKKworICAgICAgMS4g
YGBweXRlc3RfY29sbGVjdHN0YXJ0KGNvbGxlY3RvcilgYAorICAgICAgMi4gYGByZXBvcnQgPSBw
eXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3IpYGAKKyAgICAgIDMuIGBgcHl0ZXN0
X2V4Y2VwdGlvbl9pbnRlcmFjdChjb2xsZWN0b3IsIGNhbGwsIHJlcG9ydClgYCBpZiBhbiBpbnRl
cmFjdGl2ZSBleGNlcHRpb24gb2NjdXJyZWQKKyAgICAgIDQuIEZvciBlYWNoIGNvbGxlY3RlZCBu
b2RlOgorCisgICAgICAgIDEuIElmIGFuIGl0ZW0sIGBgcHl0ZXN0X2l0ZW1jb2xsZWN0ZWQoaXRl
bSlgYAorICAgICAgICAyLiBJZiBhIGNvbGxlY3RvciwgcmVjdXJzZSBpbnRvIGl0LgorCisgICAg
ICA1LiBgYHB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydClgYAorCisgICAgMi4gYGBweXRlc3Rf
Y29sbGVjdGlvbl9tb2RpZnlpdGVtcyhzZXNzaW9uLCBjb25maWcsIGl0ZW1zKWBgCisKKyAgICAg
IDEuIGBgcHl0ZXN0X2Rlc2VsZWN0ZWQoaXRlbXMpYGAgZm9yIGFueSBkZXNlbGVjdGVkIGl0ZW1z
IChtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzKQogCi0gICAgOnBhcmFtIF9weXRlc3QubWFp
bi5TZXNzaW9uIHNlc3Npb246IHRoZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QKKyAgICAzLiBgYHB5
dGVzdF9jb2xsZWN0aW9uX2ZpbmlzaChzZXNzaW9uKWBgCisgICAgNC4gU2V0IGBgc2Vzc2lvbi5p
dGVtc2BgIHRvIHRoZSBsaXN0IG9mIGNvbGxlY3RlZCBpdGVtcworICAgIDUuIFNldCBgYHNlc3Np
b24udGVzdHNjb2xsZWN0ZWRgYCB0byB0aGUgbnVtYmVyIG9mIGNvbGxlY3RlZCBpdGVtcworCisg
ICAgWW91IGNhbiBpbXBsZW1lbnQgdGhpcyBob29rIHRvIG9ubHkgcGVyZm9ybSBzb21lIGFjdGlv
biBiZWZvcmUgY29sbGVjdGlvbiwKKyAgICBmb3IgZXhhbXBsZSB0aGUgdGVybWluYWwgcGx1Z2lu
IHVzZXMgaXQgdG8gc3RhcnQgZGlzcGxheWluZyB0aGUgY29sbGVjdGlvbgorICAgIGNvdW50ZXIg
KGFuZCByZXR1cm5zIGBOb25lYCkuCisKKyAgICA6cGFyYW0gcHl0ZXN0LlNlc3Npb24gc2Vzc2lv
bjogVGhlIHB5dGVzdCBzZXNzaW9uIG9iamVjdC4KICAgICAiIiIKIAogCi1kZWYgcHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2Vzc2lvbiwgY29uZmlnLCBpdGVtcyk6Ci0gICAgIiIiIGNh
bGxlZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZCwgbWF5IGZpbHRlciBvciBy
ZS1vcmRlcgorZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKAorICAgIHNlc3Npb246
ICJTZXNzaW9uIiwgY29uZmlnOiAiQ29uZmlnIiwgaXRlbXM6IExpc3RbIkl0ZW0iXQorKSAtPiBO
b25lOgorICAgICIiIkNhbGxlZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZC4g
TWF5IGZpbHRlciBvciByZS1vcmRlcgogICAgIHRoZSBpdGVtcyBpbi1wbGFjZS4KIAotICAgIDpw
YXJhbSBfcHl0ZXN0Lm1haW4uU2Vzc2lvbiBzZXNzaW9uOiB0aGUgcHl0ZXN0IHNlc3Npb24gb2Jq
ZWN0Ci0gICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IHB5dGVzdCBjb25m
aWcgb2JqZWN0Ci0gICAgOnBhcmFtIExpc3RbX3B5dGVzdC5ub2Rlcy5JdGVtXSBpdGVtczogbGlz
dCBvZiBpdGVtIG9iamVjdHMKKyAgICA6cGFyYW0gcHl0ZXN0LlNlc3Npb24gc2Vzc2lvbjogVGhl
IHB5dGVzdCBzZXNzaW9uIG9iamVjdC4KKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29uZmln
IGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgorICAgIDpwYXJhbSBMaXN0W3B5dGVz
dC5JdGVtXSBpdGVtczogTGlzdCBvZiBpdGVtIG9iamVjdHMuCiAgICAgIiIiCiAKIAotZGVmIHB5
dGVzdF9jb2xsZWN0aW9uX2ZpbmlzaChzZXNzaW9uKToKLSAgICAiIiIgY2FsbGVkIGFmdGVyIGNv
bGxlY3Rpb24gaGFzIGJlZW4gcGVyZm9ybWVkIGFuZCBtb2RpZmllZC4KK2RlZiBweXRlc3RfY29s
bGVjdGlvbl9maW5pc2goc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBOb25lOgorICAgICIiIkNhbGxl
ZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZCBhbmQgbW9kaWZpZWQuCiAKLSAg
ICA6cGFyYW0gX3B5dGVzdC5tYWluLlNlc3Npb24gc2Vzc2lvbjogdGhlIHB5dGVzdCBzZXNzaW9u
IG9iamVjdAorICAgIDpwYXJhbSBweXRlc3QuU2Vzc2lvbiBzZXNzaW9uOiBUaGUgcHl0ZXN0IHNl
c3Npb24gb2JqZWN0LgogICAgICIiIgogCiAKIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQot
ZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoLCBjb25maWcpOgotICAgICIiIiByZXR1cm4g
VHJ1ZSB0byBwcmV2ZW50IGNvbnNpZGVyaW5nIHRoaXMgcGF0aCBmb3IgY29sbGVjdGlvbi4KK2Rl
ZiBweXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aDogcHkucGF0aC5sb2NhbCwgY29uZmlnOiAiQ29u
ZmlnIikgLT4gT3B0aW9uYWxbYm9vbF06CisgICAgIiIiUmV0dXJuIFRydWUgdG8gcHJldmVudCBj
b25zaWRlcmluZyB0aGlzIHBhdGggZm9yIGNvbGxlY3Rpb24uCisKICAgICBUaGlzIGhvb2sgaXMg
Y29uc3VsdGVkIGZvciBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHByaW9yIHRvIGNhbGxpbmcK
ICAgICBtb3JlIHNwZWNpZmljIGhvb2tzLgogCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUg
cmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgCisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5v
bmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgogCi0gICAgOnBhcmFtIHN0ciBwYXRo
OiB0aGUgcGF0aCB0byBhbmFseXplCi0gICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBj
b25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0CisgICAgOnBhcmFtIHB5LnBhdGgubG9jYWwgcGF0
aDogVGhlIHBhdGggdG8gYW5hbHl6ZS4KKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcuQ29uZmln
IGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgogICAgICIiIgogCiAKLUBob29rc3Bl
YyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeShwYXRoLCBw
YXJlbnQpOgotICAgICIiIiBjYWxsZWQgYmVmb3JlIHRyYXZlcnNpbmcgYSBkaXJlY3RvcnkgZm9y
IGNvbGxlY3Rpb24gZmlsZXMuCitkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZSgKKyAgICBwYXRoOiBw
eS5wYXRoLmxvY2FsLCBwYXJlbnQ6ICJDb2xsZWN0b3IiCispIC0+ICJPcHRpb25hbFtDb2xsZWN0
b3JdIjoKKyAgICAiIiJDcmVhdGUgYSBDb2xsZWN0b3IgZm9yIHRoZSBnaXZlbiBwYXRoLCBvciBO
b25lIGlmIG5vdCByZWxldmFudC4KIAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3Vs
dCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YAorICAgIFRoZSBuZXcgbm9kZSBuZWVkcyB0byBoYXZl
IHRoZSBzcGVjaWZpZWQgYGBwYXJlbnRgYCBhcyBhIHBhcmVudC4KIAotICAgIDpwYXJhbSBzdHIg
cGF0aDogdGhlIHBhdGggdG8gYW5hbHl6ZQotICAgICIiIgotCi0KLWRlZiBweXRlc3RfY29sbGVj
dF9maWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgIiIiIHJldHVybiBjb2xsZWN0aW9uIE5vZGUgb3Ig
Tm9uZSBmb3IgdGhlIGdpdmVuIHBhdGguIEFueSBuZXcgbm9kZQotICAgIG5lZWRzIHRvIGhhdmUg
dGhlIHNwZWNpZmllZCBgYHBhcmVudGBgIGFzIGEgcGFyZW50LgotCi0gICAgOnBhcmFtIHN0ciBw
YXRoOiB0aGUgcGF0aCB0byBjb2xsZWN0CisgICAgOnBhcmFtIHB5LnBhdGgubG9jYWwgcGF0aDog
VGhlIHBhdGggdG8gY29sbGVjdC4KICAgICAiIiIKIAogCiAjIGxvZ2dpbmcgaG9va3MgZm9yIGNv
bGxlY3Rpb24KIAogCi1kZWYgcHl0ZXN0X2NvbGxlY3RzdGFydChjb2xsZWN0b3IpOgotICAgICIi
IiBjb2xsZWN0b3Igc3RhcnRzIGNvbGxlY3RpbmcuICIiIgorZGVmIHB5dGVzdF9jb2xsZWN0c3Rh
cnQoY29sbGVjdG9yOiAiQ29sbGVjdG9yIikgLT4gTm9uZToKKyAgICAiIiJDb2xsZWN0b3Igc3Rh
cnRzIGNvbGxlY3RpbmcuIiIiCisKIAorZGVmIHB5dGVzdF9pdGVtY29sbGVjdGVkKGl0ZW06ICJJ
dGVtIikgLT4gTm9uZToKKyAgICAiIiJXZSBqdXN0IGNvbGxlY3RlZCBhIHRlc3QgaXRlbS4iIiIK
IAotZGVmIHB5dGVzdF9pdGVtY29sbGVjdGVkKGl0ZW0pOgotICAgICIiIiB3ZSBqdXN0IGNvbGxl
Y3RlZCBhIHRlc3QgaXRlbS4gIiIiCiAKK2RlZiBweXRlc3RfY29sbGVjdHJlcG9ydChyZXBvcnQ6
ICJDb2xsZWN0UmVwb3J0IikgLT4gTm9uZToKKyAgICAiIiJDb2xsZWN0b3IgZmluaXNoZWQgY29s
bGVjdGluZy4iIiIKIAotZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydCk6Ci0gICAgIiIi
IGNvbGxlY3RvciBmaW5pc2hlZCBjb2xsZWN0aW5nLiAiIiIKIAorZGVmIHB5dGVzdF9kZXNlbGVj
dGVkKGl0ZW1zOiBTZXF1ZW5jZVsiSXRlbSJdKSAtPiBOb25lOgorICAgICIiIkNhbGxlZCBmb3Ig
ZGVzZWxlY3RlZCB0ZXN0IGl0ZW1zLCBlLmcuIGJ5IGtleXdvcmQuCiAKLWRlZiBweXRlc3RfZGVz
ZWxlY3RlZChpdGVtcyk6Ci0gICAgIiIiIGNhbGxlZCBmb3IgdGVzdCBpdGVtcyBkZXNlbGVjdGVk
IGJ5IGtleXdvcmQuICIiIgorICAgIE1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisgICAg
IiIiCiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X21ha2VfY29s
bGVjdF9yZXBvcnQoY29sbGVjdG9yKToKLSAgICAiIiIgcGVyZm9ybSBgYGNvbGxlY3Rvci5jb2xs
ZWN0KClgYCBhbmQgcmV0dXJuIGEgQ29sbGVjdFJlcG9ydC4KK2RlZiBweXRlc3RfbWFrZV9jb2xs
ZWN0X3JlcG9ydChjb2xsZWN0b3I6ICJDb2xsZWN0b3IiKSAtPiAiT3B0aW9uYWxbQ29sbGVjdFJl
cG9ydF0iOgorICAgICIiIlBlcmZvcm0gYGBjb2xsZWN0b3IuY29sbGVjdCgpYGAgYW5kIHJldHVy
biBhIENvbGxlY3RSZXBvcnQuCiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQs
IHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUg
cmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgorICAgICIiIgogCiAKICMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMjU1LDEzNyArMzIxLDIxNiBAQCBkZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9y
ZXBvcnQoY29sbGVjdG9yKToKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBw
eXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aCwgcGFyZW50KToKLSAgICAiIiIgcmV0dXJu
IGEgTW9kdWxlIGNvbGxlY3RvciBvciBOb25lIGZvciB0aGUgZ2l2ZW4gcGF0aC4KK2RlZiBweXRl
c3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aDogcHkucGF0aC5sb2NhbCwgcGFyZW50KSAtPiBP
cHRpb25hbFsiTW9kdWxlIl06CisgICAgIiIiUmV0dXJuIGEgTW9kdWxlIGNvbGxlY3RvciBvciBO
b25lIGZvciB0aGUgZ2l2ZW4gcGF0aC4KKwogICAgIFRoaXMgaG9vayB3aWxsIGJlIGNhbGxlZCBm
b3IgZWFjaCBtYXRjaGluZyB0ZXN0IG1vZHVsZSBwYXRoLgogICAgIFRoZSBweXRlc3RfY29sbGVj
dF9maWxlIGhvb2sgbmVlZHMgdG8gYmUgdXNlZCBpZiB5b3Ugd2FudCB0bwogICAgIGNyZWF0ZSB0
ZXN0IG1vZHVsZXMgZm9yIGZpbGVzIHRoYXQgZG8gbm90IG1hdGNoIGFzIGEgdGVzdCBtb2R1bGUu
CiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJl
c3VsdGAgIiIiCisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpg
Zmlyc3RyZXN1bHRgLgorCisgICAgOnBhcmFtIHB5LnBhdGgubG9jYWwgcGF0aDogVGhlIHBhdGgg
b2YgbW9kdWxlIHRvIGNvbGxlY3QuCisgICAgIiIiCiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0
PVRydWUpCi1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3IsIG5hbWUsIG9i
aik6Ci0gICAgIiIiIHJldHVybiBjdXN0b20gaXRlbS9jb2xsZWN0b3IgZm9yIGEgcHl0aG9uIG9i
amVjdCBpbiBhIG1vZHVsZSwgb3IgTm9uZS4KK2RlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVt
KAorICAgIGNvbGxlY3RvcjogIlB5Q29sbGVjdG9yIiwgbmFtZTogc3RyLCBvYmo6IG9iamVjdAor
KSAtPiBVbmlvbltOb25lLCAiSXRlbSIsICJDb2xsZWN0b3IiLCBMaXN0W1VuaW9uWyJJdGVtIiwg
IkNvbGxlY3RvciJdXV06CisgICAgIiIiUmV0dXJuIGEgY3VzdG9tIGl0ZW0vY29sbGVjdG9yIGZv
ciBhIFB5dGhvbiBvYmplY3QgaW4gYSBtb2R1bGUsIG9yIE5vbmUuCiAKLSAgICBTdG9wcyBhdCBm
aXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCisgICAgU3Rv
cHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgorICAg
ICIiIgogCiAKIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9weWZ1bmNf
Y2FsbChweWZ1bmNpdGVtKToKLSAgICAiIiIgY2FsbCB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24u
CitkZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHB5ZnVuY2l0ZW06ICJGdW5jdGlvbiIpIC0+IE9wdGlv
bmFsW29iamVjdF06CisgICAgIiIiQ2FsbCB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24uCiAKLSAg
ICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAg
IiIiCisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3Ry
ZXN1bHRgLgorICAgICIiIgogCiAKLWRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMp
OgotICAgICIiIiBnZW5lcmF0ZSAobXVsdGlwbGUpIHBhcmFtZXRyaXplZCBjYWxscyB0byBhIHRl
c3QgZnVuY3Rpb24uIiIiCitkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jOiAiTWV0
YWZ1bmMiKSAtPiBOb25lOgorICAgICIiIkdlbmVyYXRlIChtdWx0aXBsZSkgcGFyYW1ldHJpemVk
IGNhbGxzIHRvIGEgdGVzdCBmdW5jdGlvbi4iIiIKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9
VHJ1ZSkKLWRlZiBweXRlc3RfbWFrZV9wYXJhbWV0cml6ZV9pZChjb25maWcsIHZhbCwgYXJnbmFt
ZSk6Ci0gICAgIiIiUmV0dXJuIGEgdXNlci1mcmllbmRseSBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGdpdmVuIGBgdmFsYGAgdGhhdCB3aWxsIGJlIHVzZWQKLSAgICBieSBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUgY2FsbHMuIFJldHVybiBOb25lIGlmIHRoZSBob29rIGRvZXNuJ3Qga25v
dyBhYm91dCBgYHZhbGBgLgorZGVmIHB5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKAorICAgIGNv
bmZpZzogIkNvbmZpZyIsIHZhbDogb2JqZWN0LCBhcmduYW1lOiBzdHIKKykgLT4gT3B0aW9uYWxb
c3RyXToKKyAgICAiIiJSZXR1cm4gYSB1c2VyLWZyaWVuZGx5IHN0cmluZyByZXByZXNlbnRhdGlv
biBvZiB0aGUgZ2l2ZW4gYGB2YWxgYAorICAgIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSBjYWxscywgb3IgTm9uZSBpZiB0aGUgaG9vaworICAgIGRvZXNuJ3Qg
a25vdyBhYm91dCBgYHZhbGBgLgorCiAgICAgVGhlIHBhcmFtZXRlciBuYW1lIGlzIGF2YWlsYWJs
ZSBhcyBgYGFyZ25hbWVgYCwgaWYgcmVxdWlyZWQuCiAKLSAgICBTdG9wcyBhdCBmaXJzdCBub24t
Tm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAKKyAgICBTdG9wcyBhdCBmaXJzdCBu
b24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCiAKLSAgICA6cGFyYW0gX3B5
dGVzdC5jb25maWcuQ29uZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKLSAgICA6cGFy
YW0gdmFsOiB0aGUgcGFyYW1ldHJpemVkIHZhbHVlCi0gICAgOnBhcmFtIHN0ciBhcmduYW1lOiB0
aGUgYXV0b21hdGljIHBhcmFtZXRlciBuYW1lIHByb2R1Y2VkIGJ5IHB5dGVzdAorICAgIDpwYXJh
bSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBUaGUgcHl0ZXN0IGNvbmZpZyBvYmplY3Qu
CisgICAgOnBhcmFtIHZhbDogVGhlIHBhcmFtZXRyaXplZCB2YWx1ZS4KKyAgICA6cGFyYW0gc3Ry
IGFyZ25hbWU6IFRoZSBhdXRvbWF0aWMgcGFyYW1ldGVyIG5hbWUgcHJvZHVjZWQgYnkgcHl0ZXN0
LgogICAgICIiIgogCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBnZW5lcmljIHJ1bnRlc3QgcmVs
YXRlZCBob29rcworIyBydW50ZXN0IHJlbGF0ZWQgaG9va3MKICMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAKIEBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChz
ZXNzaW9uKToKLSAgICAiIiIgY2FsbGVkIGZvciBwZXJmb3JtaW5nIHRoZSBtYWluIHJ1bnRlc3Qg
bG9vcAotICAgIChhZnRlciBjb2xsZWN0aW9uIGZpbmlzaGVkKS4KK2RlZiBweXRlc3RfcnVudGVz
dGxvb3Aoc2Vzc2lvbjogIlNlc3Npb24iKSAtPiBPcHRpb25hbFtvYmplY3RdOgorICAgICIiIlBl
cmZvcm0gdGhlIG1haW4gcnVudGVzdCBsb29wIChhZnRlciBjb2xsZWN0aW9uIGZpbmlzaGVkKS4K
IAotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVz
dWx0YAorICAgIFRoZSBkZWZhdWx0IGhvb2sgaW1wbGVtZW50YXRpb24gcGVyZm9ybXMgdGhlIHJ1
bnRlc3QgcHJvdG9jb2wgZm9yIGFsbCBpdGVtcworICAgIGNvbGxlY3RlZCBpbiB0aGUgc2Vzc2lv
biAoYGBzZXNzaW9uLml0ZW1zYGApLCB1bmxlc3MgdGhlIGNvbGxlY3Rpb24gZmFpbGVkCisgICAg
b3IgdGhlIGBgY29sbGVjdG9ubHlgYCBweXRlc3Qgb3B0aW9uIGlzIHNldC4KIAotICAgIDpwYXJh
bSBfcHl0ZXN0Lm1haW4uU2Vzc2lvbiBzZXNzaW9uOiB0aGUgcHl0ZXN0IHNlc3Npb24gb2JqZWN0
Ci0gICAgIiIiCisgICAgSWYgYXQgYW55IHBvaW50IDpweTpmdW5jOmBweXRlc3QuZXhpdGAgaXMg
Y2FsbGVkLCB0aGUgbG9vcCBpcworICAgIHRlcm1pbmF0ZWQgaW1tZWRpYXRlbHkuCiAKKyAgICBJ
ZiBhdCBhbnkgcG9pbnQgYGBzZXNzaW9uLnNob3VsZGZhaWxgYCBvciBgYHNlc3Npb24uc2hvdWxk
c3RvcGBgIGFyZSBzZXQsIHRoZQorICAgIGxvb3AgaXMgdGVybWluYXRlZCBhZnRlciB0aGUgcnVu
dGVzdCBwcm90b2NvbCBmb3IgdGhlIGN1cnJlbnQgaXRlbSBpcyBmaW5pc2hlZC4KIAotZGVmIHB5
dGVzdF9pdGVtc3RhcnQoaXRlbSwgbm9kZSk6Ci0gICAgIiIiKCoqRGVwcmVjYXRlZCoqKSB1c2Ug
cHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQuICIiIgorICAgIDpwYXJhbSBweXRlc3QuU2Vzc2lvbiBz
ZXNzaW9uOiBUaGUgcHl0ZXN0IHNlc3Npb24gb2JqZWN0LgorCisgICAgU3RvcHMgYXQgZmlyc3Qg
bm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgorICAgIFRoZSByZXR1cm4g
dmFsdWUgaXMgbm90IHVzZWQsIGJ1dCBvbmx5IHN0b3BzIGZ1cnRoZXIgcHJvY2Vzc2luZy4KKyAg
ICAiIiIKIAogCiBAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVz
dF9wcm90b2NvbChpdGVtLCBuZXh0aXRlbSk6Ci0gICAgIiIiIGltcGxlbWVudHMgdGhlIHJ1bnRl
c3Rfc2V0dXAvY2FsbC90ZWFyZG93biBwcm90b2NvbCBmb3IKLSAgICB0aGUgZ2l2ZW4gdGVzdCBp
dGVtLCBpbmNsdWRpbmcgY2FwdHVyaW5nIGV4Y2VwdGlvbnMgYW5kIGNhbGxpbmcKLSAgICByZXBv
cnRpbmcgaG9va3MuCitkZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woCisgICAgaXRlbTogIkl0
ZW0iLCBuZXh0aXRlbTogIk9wdGlvbmFsW0l0ZW1dIgorKSAtPiBPcHRpb25hbFtvYmplY3RdOgor
ICAgICIiIlBlcmZvcm0gdGhlIHJ1bnRlc3QgcHJvdG9jb2wgZm9yIGEgc2luZ2xlIHRlc3QgaXRl
bS4KKworICAgIFRoZSBkZWZhdWx0IHJ1bnRlc3QgcHJvdG9jb2wgaXMgdGhpcyAoc2VlIGluZGl2
aWR1YWwgaG9va3MgZm9yIGZ1bGwgZGV0YWlscyk6CiAKLSAgICA6YXJnIGl0ZW06IHRlc3QgaXRl
bSBmb3Igd2hpY2ggdGhlIHJ1bnRlc3QgcHJvdG9jb2wgaXMgcGVyZm9ybWVkLgorICAgIC0gYGBw
eXRlc3RfcnVudGVzdF9sb2dzdGFydChub2RlaWQsIGxvY2F0aW9uKWBgCiAKLSAgICA6YXJnIG5l
eHRpdGVtOiB0aGUgc2NoZWR1bGVkLXRvLWJlLW5leHQgdGVzdCBpdGVtIChvciBOb25lIGlmIHRo
aXMKLSAgICAgICAgICAgICAgICAgICBpcyB0aGUgZW5kIG15IGZyaWVuZCkuICBUaGlzIGFyZ3Vt
ZW50IGlzIHBhc3NlZCBvbiB0bwotICAgICAgICAgICAgICAgICAgIDpweTpmdW5jOmBweXRlc3Rf
cnVudGVzdF90ZWFyZG93bmAuCisgICAgLSBTZXR1cCBwaGFzZToKKyAgICAgICAgLSBgYGNhbGwg
PSBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKWBgICh3cmFwcGVkIGluIGBgQ2FsbEluZm8od2hl
bj0ic2V0dXAiKWBgKQorICAgICAgICAtIGBgcmVwb3J0ID0gcHl0ZXN0X3J1bnRlc3RfbWFrZXJl
cG9ydChpdGVtLCBjYWxsKWBgCisgICAgICAgIC0gYGBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQo
cmVwb3J0KWBgCisgICAgICAgIC0gYGBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KGNhbGwsIHJl
cG9ydClgYCBpZiBhbiBpbnRlcmFjdGl2ZSBleGNlcHRpb24gb2NjdXJyZWQKIAotICAgIDpyZXR1
cm4gYm9vbGVhbjogVHJ1ZSBpZiBubyBmdXJ0aGVyIGhvb2sgaW1wbGVtZW50YXRpb25zIHNob3Vs
ZCBiZSBpbnZva2VkLgorICAgIC0gQ2FsbCBwaGFzZSwgaWYgdGhlIHRoZSBzZXR1cCBwYXNzZWQg
YW5kIHRoZSBgYHNldHVwb25seWBgIHB5dGVzdCBvcHRpb24gaXMgbm90IHNldDoKKyAgICAgICAg
LSBgYGNhbGwgPSBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW0pYGAgKHdyYXBwZWQgaW4gYGBDYWxs
SW5mbyh3aGVuPSJjYWxsIilgYCkKKyAgICAgICAgLSBgYHJlcG9ydCA9IHB5dGVzdF9ydW50ZXN0
X21ha2VyZXBvcnQoaXRlbSwgY2FsbClgYAorICAgICAgICAtIGBgcHl0ZXN0X3J1bnRlc3RfbG9n
cmVwb3J0KHJlcG9ydClgYAorICAgICAgICAtIGBgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChj
YWxsLCByZXBvcnQpYGAgaWYgYW4gaW50ZXJhY3RpdmUgZXhjZXB0aW9uIG9jY3VycmVkCiAKKyAg
ICAtIFRlYXJkb3duIHBoYXNlOgorICAgICAgICAtIGBgY2FsbCA9IHB5dGVzdF9ydW50ZXN0X3Rl
YXJkb3duKGl0ZW0sIG5leHRpdGVtKWBgICh3cmFwcGVkIGluIGBgQ2FsbEluZm8od2hlbj0idGVh
cmRvd24iKWBgKQorICAgICAgICAtIGBgcmVwb3J0ID0gcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9y
dChpdGVtLCBjYWxsKWBgCisgICAgICAgIC0gYGBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVw
b3J0KWBgCisgICAgICAgIC0gYGBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KGNhbGwsIHJlcG9y
dClgYCBpZiBhbiBpbnRlcmFjdGl2ZSBleGNlcHRpb24gb2NjdXJyZWQKIAotICAgIFN0b3BzIGF0
IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKKyAgICAt
IGBgcHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoKG5vZGVpZCwgbG9jYXRpb24pYGAKKworICAgIDpw
YXJhbSBpdGVtOiBUZXN0IGl0ZW0gZm9yIHdoaWNoIHRoZSBydW50ZXN0IHByb3RvY29sIGlzIHBl
cmZvcm1lZC4KKyAgICA6cGFyYW0gbmV4dGl0ZW06IFRoZSBzY2hlZHVsZWQtdG8tYmUtbmV4dCB0
ZXN0IGl0ZW0gKG9yIE5vbmUgaWYgdGhpcyBpcyB0aGUgZW5kIG15IGZyaWVuZCkuCisKKyAgICBT
dG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCisg
ICAgVGhlIHJldHVybiB2YWx1ZSBpcyBub3QgdXNlZCwgYnV0IG9ubHkgc3RvcHMgZnVydGhlciBw
cm9jZXNzaW5nLgorICAgICIiIgogCiAKLWRlZiBweXRlc3RfcnVudGVzdF9sb2dzdGFydChub2Rl
aWQsIGxvY2F0aW9uKToKLSAgICAiIiIgc2lnbmFsIHRoZSBzdGFydCBvZiBydW5uaW5nIGEgc2lu
Z2xlIHRlc3QgaXRlbS4KK2RlZiBweXRlc3RfcnVudGVzdF9sb2dzdGFydCgKKyAgICBub2RlaWQ6
IHN0ciwgbG9jYXRpb246IFR1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXQorKSAtPiBOb25l
OgorICAgICIiIkNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgcnVubmluZyB0aGUgcnVudGVzdCBwcm90
b2NvbCBmb3IgYSBzaW5nbGUgaXRlbS4KIAotICAgIFRoaXMgaG9vayB3aWxsIGJlIGNhbGxlZCAq
KmJlZm9yZSoqIDpmdW5jOmBweXRlc3RfcnVudGVzdF9zZXR1cGAsIDpmdW5jOmBweXRlc3RfcnVu
dGVzdF9jYWxsYCBhbmQKLSAgICA6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd25gIGhvb2tz
LgorICAgIFNlZSA6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2xgIGZvciBhIGRlc2NyaXB0
aW9uIG9mIHRoZSBydW50ZXN0IHByb3RvY29sLgogCi0gICAgOnBhcmFtIHN0ciBub2RlaWQ6IGZ1
bGwgaWQgb2YgdGhlIGl0ZW0KLSAgICA6cGFyYW0gbG9jYXRpb246IGEgdHJpcGxlIG9mIGBgKGZp
bGVuYW1lLCBsaW5lbnVtLCB0ZXN0bmFtZSlgYAorICAgIDpwYXJhbSBzdHIgbm9kZWlkOiBGdWxs
IG5vZGUgSUQgb2YgdGhlIGl0ZW0uCisgICAgOnBhcmFtIGxvY2F0aW9uOiBBIHRyaXBsZSBvZiBg
YChmaWxlbmFtZSwgbGluZW5vLCB0ZXN0bmFtZSlgYC4KICAgICAiIiIKIAogCi1kZWYgcHl0ZXN0
X3J1bnRlc3RfbG9nZmluaXNoKG5vZGVpZCwgbG9jYXRpb24pOgotICAgICIiIiBzaWduYWwgdGhl
IGNvbXBsZXRlIGZpbmlzaCBvZiBydW5uaW5nIGEgc2luZ2xlIHRlc3QgaXRlbS4KK2RlZiBweXRl
c3RfcnVudGVzdF9sb2dmaW5pc2goCisgICAgbm9kZWlkOiBzdHIsIGxvY2F0aW9uOiBUdXBsZVtz
dHIsIE9wdGlvbmFsW2ludF0sIHN0cl0KKykgLT4gTm9uZToKKyAgICAiIiJDYWxsZWQgYXQgdGhl
IGVuZCBvZiBydW5uaW5nIHRoZSBydW50ZXN0IHByb3RvY29sIGZvciBhIHNpbmdsZSBpdGVtLgog
Ci0gICAgVGhpcyBob29rIHdpbGwgYmUgY2FsbGVkICoqYWZ0ZXIqKiA6ZnVuYzpgcHl0ZXN0X3J1
bnRlc3Rfc2V0dXBgLCA6ZnVuYzpgcHl0ZXN0X3J1bnRlc3RfY2FsbGAgYW5kCi0gICAgOmZ1bmM6
YHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duYCBob29rcy4KKyAgICBTZWUgOmZ1bmM6YHB5dGVzdF9y
dW50ZXN0X3Byb3RvY29sYCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcnVudGVzdCBwcm90b2Nv
bC4KIAotICAgIDpwYXJhbSBzdHIgbm9kZWlkOiBmdWxsIGlkIG9mIHRoZSBpdGVtCi0gICAgOnBh
cmFtIGxvY2F0aW9uOiBhIHRyaXBsZSBvZiBgYChmaWxlbmFtZSwgbGluZW51bSwgdGVzdG5hbWUp
YGAKKyAgICA6cGFyYW0gc3RyIG5vZGVpZDogRnVsbCBub2RlIElEIG9mIHRoZSBpdGVtLgorICAg
IDpwYXJhbSBsb2NhdGlvbjogQSB0cmlwbGUgb2YgYGAoZmlsZW5hbWUsIGxpbmVubywgdGVzdG5h
bWUpYGAuCiAgICAgIiIiCiAKIAotZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAg
ICIiIiBjYWxsZWQgYmVmb3JlIGBgcHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtKWBgLiAiIiIKK2Rl
ZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtOiAiSXRlbSIpIC0+IE5vbmU6CisgICAgIiIiQ2Fs
bGVkIHRvIHBlcmZvcm0gdGhlIHNldHVwIHBoYXNlIGZvciBhIHRlc3QgaXRlbS4KIAorICAgIFRo
ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJ1bnMgYGBzZXR1cCgpYGAgb24gYGBpdGVtYGAgYW5k
IGFsbCBvZiBpdHMKKyAgICBwYXJlbnRzICh3aGljaCBoYXZlbid0IGJlZW4gc2V0dXAgeWV0KS4g
VGhpcyBpbmNsdWRlcyBvYnRhaW5pbmcgdGhlCisgICAgdmFsdWVzIG9mIGZpeHR1cmVzIHJlcXVp
cmVkIGJ5IHRoZSBpdGVtICh3aGljaCBoYXZlbid0IGJlZW4gb2J0YWluZWQKKyAgICB5ZXQpLgor
ICAgICIiIgorCisKK2RlZiBweXRlc3RfcnVudGVzdF9jYWxsKGl0ZW06ICJJdGVtIikgLT4gTm9u
ZToKKyAgICAiIiJDYWxsZWQgdG8gcnVuIHRoZSB0ZXN0IGZvciB0ZXN0IGl0ZW0gKHRoZSBjYWxs
IHBoYXNlKS4KKworICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIGBgaXRlbS5y
dW50ZXN0KClgYC4KKyAgICAiIiIKIAotZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoaXRlbSk6Ci0g
ICAgIiIiIGNhbGxlZCB0byBleGVjdXRlIHRoZSB0ZXN0IGBgaXRlbWBgLiAiIiIKIAorZGVmIHB5
dGVzdF9ydW50ZXN0X3RlYXJkb3duKGl0ZW06ICJJdGVtIiwgbmV4dGl0ZW06IE9wdGlvbmFsWyJJ
dGVtIl0pIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIHRvIHBlcmZvcm0gdGhlIHRlYXJkb3duIHBo
YXNlIGZvciBhIHRlc3QgaXRlbS4KIAotZGVmIHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duKGl0ZW0s
IG5leHRpdGVtKToKLSAgICAiIiIgY2FsbGVkIGFmdGVyIGBgcHl0ZXN0X3J1bnRlc3RfY2FsbGBg
LgorICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJ1bnMgdGhlIGZpbmFsaXplcnMgYW5k
IGNhbGxzIGBgdGVhcmRvd24oKWBgCisgICAgb24gYGBpdGVtYGAgYW5kIGFsbCBvZiBpdHMgcGFy
ZW50cyAod2hpY2ggbmVlZCB0byBiZSB0b3JuIGRvd24pLiBUaGlzCisgICAgaW5jbHVkZXMgcnVu
bmluZyB0aGUgdGVhcmRvd24gcGhhc2Ugb2YgZml4dHVyZXMgcmVxdWlyZWQgYnkgdGhlIGl0ZW0g
KGlmCisgICAgdGhleSBnbyBvdXQgb2Ygc2NvcGUpLgogCi0gICAgOmFyZyBuZXh0aXRlbTogdGhl
IHNjaGVkdWxlZC10by1iZS1uZXh0IHRlc3QgaXRlbSAoTm9uZSBpZiBubyBmdXJ0aGVyCi0gICAg
ICAgICAgICAgICAgICAgdGVzdCBpdGVtIGlzIHNjaGVkdWxlZCkuICBUaGlzIGFyZ3VtZW50IGNh
biBiZSB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgcGVyZm9ybSBleGFjdCB0ZWFyZG93bnMs
IGkuZS4gY2FsbGluZyBqdXN0IGVub3VnaCBmaW5hbGl6ZXJzCi0gICAgICAgICAgICAgICAgICAg
c28gdGhhdCBuZXh0aXRlbSBvbmx5IG5lZWRzIHRvIGNhbGwgc2V0dXAtZnVuY3Rpb25zLgorICAg
IDpwYXJhbSBuZXh0aXRlbToKKyAgICAgICAgVGhlIHNjaGVkdWxlZC10by1iZS1uZXh0IHRlc3Qg
aXRlbSAoTm9uZSBpZiBubyBmdXJ0aGVyIHRlc3QgaXRlbSBpcworICAgICAgICBzY2hlZHVsZWQp
LiBUaGlzIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gZXhhY3QgdGVhcmRvd25zLAor
ICAgICAgICBpLmUuIGNhbGxpbmcganVzdCBlbm91Z2ggZmluYWxpemVycyBzbyB0aGF0IG5leHRp
dGVtIG9ubHkgbmVlZHMgdG8KKyAgICAgICAgY2FsbCBzZXR1cC1mdW5jdGlvbnMuCiAgICAgIiIi
CiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3J1bnRlc3RfbWFr
ZXJlcG9ydChpdGVtLCBjYWxsKToKLSAgICAiIiIgcmV0dXJuIGEgOnB5OmNsYXNzOmBfcHl0ZXN0
LnJ1bm5lci5UZXN0UmVwb3J0YCBvYmplY3QKLSAgICBmb3IgdGhlIGdpdmVuIDpweTpjbGFzczpg
cHl0ZXN0Lkl0ZW0gPF9weXRlc3QubWFpbi5JdGVtPmAgYW5kCi0gICAgOnB5OmNsYXNzOmBfcHl0
ZXN0LnJ1bm5lci5DYWxsSW5mb2AuCitkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydCgKKyAg
ICBpdGVtOiAiSXRlbSIsIGNhbGw6ICJDYWxsSW5mb1tOb25lXSIKKykgLT4gT3B0aW9uYWxbIlRl
c3RSZXBvcnQiXToKKyAgICAiIiJDYWxsZWQgdG8gY3JlYXRlIGEgOnB5OmNsYXNzOmBfcHl0ZXN0
LnJlcG9ydHMuVGVzdFJlcG9ydGAgZm9yIGVhY2ggb2YKKyAgICB0aGUgc2V0dXAsIGNhbGwgYW5k
IHRlYXJkb3duIHJ1bnRlc3QgcGhhc2VzIG9mIGEgdGVzdCBpdGVtLgorCisgICAgU2VlIDpmdW5j
OmBweXRlc3RfcnVudGVzdF9wcm90b2NvbGAgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bnRl
c3QgcHJvdG9jb2wuCisKKyAgICA6cGFyYW0gQ2FsbEluZm9bTm9uZV0gY2FsbDogVGhlIGBgQ2Fs
bEluZm9gYCBmb3IgdGhlIHBoYXNlLgorCisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVz
dWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgorICAgICIiIgorCiAKLSAgICBTdG9wcyBhdCBm
aXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCitkZWYgcHl0
ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHJlcG9ydDogIlRlc3RSZXBvcnQiKSAtPiBOb25lOgorICAg
ICIiIlByb2Nlc3MgdGhlIDpweTpjbGFzczpgX3B5dGVzdC5yZXBvcnRzLlRlc3RSZXBvcnRgIHBy
b2R1Y2VkIGZvciBlYWNoCisgICAgb2YgdGhlIHNldHVwLCBjYWxsIGFuZCB0ZWFyZG93biBydW50
ZXN0IHBoYXNlcyBvZiBhbiBpdGVtLgorCisgICAgU2VlIDpmdW5jOmBweXRlc3RfcnVudGVzdF9w
cm90b2NvbGAgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bnRlc3QgcHJvdG9jb2wuCisgICAg
IiIiCiAKIAotZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChyZXBvcnQpOgotICAgICIiIiBw
cm9jZXNzIGEgdGVzdCBzZXR1cC9jYWxsL3RlYXJkb3duIHJlcG9ydCByZWxhdGluZyB0bwotICAg
IHRoZSByZXNwZWN0aXZlIHBoYXNlIG9mIGV4ZWN1dGluZyBhIHRlc3QuICIiIgorQGhvb2tzcGVj
KGZpcnN0cmVzdWx0PVRydWUpCitkZWYgcHl0ZXN0X3JlcG9ydF90b19zZXJpYWxpemFibGUoCisg
ICAgY29uZmlnOiAiQ29uZmlnIiwgcmVwb3J0OiBVbmlvblsiQ29sbGVjdFJlcG9ydCIsICJUZXN0
UmVwb3J0Il0sCispIC0+IE9wdGlvbmFsW0RpY3Rbc3RyLCBBbnldXToKKyAgICAiIiJTZXJpYWxp
emUgdGhlIGdpdmVuIHJlcG9ydCBvYmplY3QgaW50byBhIGRhdGEgc3RydWN0dXJlIHN1aXRhYmxl
IGZvcgorICAgIHNlbmRpbmcgb3ZlciB0aGUgd2lyZSwgZS5nLiBjb252ZXJ0ZWQgdG8gSlNPTi4i
IiIKKworCitAaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKK2RlZiBweXRlc3RfcmVwb3J0X2Zy
b21fc2VyaWFsaXphYmxlKAorICAgIGNvbmZpZzogIkNvbmZpZyIsIGRhdGE6IERpY3Rbc3RyLCBB
bnldLAorKSAtPiBPcHRpb25hbFtVbmlvblsiQ29sbGVjdFJlcG9ydCIsICJUZXN0UmVwb3J0Il1d
OgorICAgICIiIlJlc3RvcmUgYSByZXBvcnQgb2JqZWN0IHByZXZpb3VzbHkgc2VyaWFsaXplZCB3
aXRoIHB5dGVzdF9yZXBvcnRfdG9fc2VyaWFsaXphYmxlKCkuIiIiCiAKIAogIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0zOTQsMTIgKzUzOSwxNCBAQCBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0
KHJlcG9ydCk6CiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2Zp
eHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0gICAgIiIiIHBlcmZvcm1zIGZpeHR1
cmUgc2V0dXAgZXhlY3V0aW9uLgorZGVmIHB5dGVzdF9maXh0dXJlX3NldHVwKAorICAgIGZpeHR1
cmVkZWY6ICJGaXh0dXJlRGVmW0FueV0iLCByZXF1ZXN0OiAiU3ViUmVxdWVzdCIKKykgLT4gT3B0
aW9uYWxbb2JqZWN0XToKKyAgICAiIiJQZXJmb3JtIGZpeHR1cmUgc2V0dXAgZXhlY3V0aW9uLgog
Ci0gICAgOnJldHVybjogVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY2FsbCB0byB0aGUgZml4dHVy
ZSBmdW5jdGlvbgorICAgIDpyZXR1cm5zOiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsIHRv
IHRoZSBmaXh0dXJlIGZ1bmN0aW9uLgogCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVz
dWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgCisgICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUg
cmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgLgogCiAgICAgLi4gbm90ZTo6CiAgICAgICAg
IElmIHRoZSBmaXh0dXJlIGZ1bmN0aW9uIHJldHVybnMgTm9uZSwgb3RoZXIgaW1wbGVtZW50YXRp
b25zIG9mCkBAIC00MDgsMTAgKzU1NSwxMiBAQCBkZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4
dHVyZWRlZiwgcmVxdWVzdCk6CiAgICAgIiIiCiAKIAotZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3Rf
ZmluYWxpemVyKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgotICAgICIiIiBjYWxsZWQgYWZ0ZXIgZml4
dHVyZSB0ZWFyZG93biwgYnV0IGJlZm9yZSB0aGUgY2FjaGUgaXMgY2xlYXJlZCBzbwotICAgIHRo
ZSBmaXh0dXJlIHJlc3VsdCBjYWNoZSBgYGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdGBgIGNhbgot
ICAgIHN0aWxsIGJlIGFjY2Vzc2VkLiIiIgorZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxp
emVyKAorICAgIGZpeHR1cmVkZWY6ICJGaXh0dXJlRGVmW0FueV0iLCByZXF1ZXN0OiAiU3ViUmVx
dWVzdCIKKykgLT4gTm9uZToKKyAgICAiIiJDYWxsZWQgYWZ0ZXIgZml4dHVyZSB0ZWFyZG93biwg
YnV0IGJlZm9yZSB0aGUgY2FjaGUgaXMgY2xlYXJlZCwgc28KKyAgICB0aGUgZml4dHVyZSByZXN1
bHQgYGBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHRgYCBpcyBzdGlsbCBhdmFpbGFibGUgKG5vdAor
ICAgIGBgTm9uZWBgKS4iIiIKIAogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQxOSwyNiArNTY4
LDI4IEBAIGRlZiBweXRlc3RfZml4dHVyZV9wb3N0X2ZpbmFsaXplcihmaXh0dXJlZGVmLCByZXF1
ZXN0KToKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKLWRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNl
c3Npb24pOgotICAgICIiIiBjYWxsZWQgYWZ0ZXIgdGhlIGBgU2Vzc2lvbmBgIG9iamVjdCBoYXMg
YmVlbiBjcmVhdGVkIGFuZCBiZWZvcmUgcGVyZm9ybWluZyBjb2xsZWN0aW9uCitkZWYgcHl0ZXN0
X3Nlc3Npb25zdGFydChzZXNzaW9uOiAiU2Vzc2lvbiIpIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVk
IGFmdGVyIHRoZSBgYFNlc3Npb25gYCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCBhbmQgYmVmb3Jl
IHBlcmZvcm1pbmcgY29sbGVjdGlvbgogICAgIGFuZCBlbnRlcmluZyB0aGUgcnVuIHRlc3QgbG9v
cC4KIAotICAgIDpwYXJhbSBfcHl0ZXN0Lm1haW4uU2Vzc2lvbiBzZXNzaW9uOiB0aGUgcHl0ZXN0
IHNlc3Npb24gb2JqZWN0CisgICAgOnBhcmFtIHB5dGVzdC5TZXNzaW9uIHNlc3Npb246IFRoZSBw
eXRlc3Qgc2Vzc2lvbiBvYmplY3QuCiAgICAgIiIiCiAKIAotZGVmIHB5dGVzdF9zZXNzaW9uZmlu
aXNoKHNlc3Npb24sIGV4aXRzdGF0dXMpOgotICAgICIiIiBjYWxsZWQgYWZ0ZXIgd2hvbGUgdGVz
dCBydW4gZmluaXNoZWQsIHJpZ2h0IGJlZm9yZSByZXR1cm5pbmcgdGhlIGV4aXQgc3RhdHVzIHRv
IHRoZSBzeXN0ZW0uCitkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goCisgICAgc2Vzc2lvbjogIlNl
c3Npb24iLCBleGl0c3RhdHVzOiBVbmlvbltpbnQsICJFeGl0Q29kZSJdLAorKSAtPiBOb25lOgor
ICAgICIiIkNhbGxlZCBhZnRlciB3aG9sZSB0ZXN0IHJ1biBmaW5pc2hlZCwgcmlnaHQgYmVmb3Jl
IHJldHVybmluZyB0aGUgZXhpdCBzdGF0dXMgdG8gdGhlIHN5c3RlbS4KIAotICAgIDpwYXJhbSBf
cHl0ZXN0Lm1haW4uU2Vzc2lvbiBzZXNzaW9uOiB0aGUgcHl0ZXN0IHNlc3Npb24gb2JqZWN0Ci0g
ICAgOnBhcmFtIGludCBleGl0c3RhdHVzOiB0aGUgc3RhdHVzIHdoaWNoIHB5dGVzdCB3aWxsIHJl
dHVybiB0byB0aGUgc3lzdGVtCisgICAgOnBhcmFtIHB5dGVzdC5TZXNzaW9uIHNlc3Npb246IFRo
ZSBweXRlc3Qgc2Vzc2lvbiBvYmplY3QuCisgICAgOnBhcmFtIGludCBleGl0c3RhdHVzOiBUaGUg
c3RhdHVzIHdoaWNoIHB5dGVzdCB3aWxsIHJldHVybiB0byB0aGUgc3lzdGVtLgogICAgICIiIgog
CiAKLWRlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKToKLSAgICAiIiIgY2FsbGVkIGJlZm9y
ZSB0ZXN0IHByb2Nlc3MgaXMgZXhpdGVkLgorZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWc6
ICJDb25maWciKSAtPiBOb25lOgorICAgICIiIkNhbGxlZCBiZWZvcmUgdGVzdCBwcm9jZXNzIGlz
IGV4aXRlZC4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBweXRl
c3QgY29uZmlnIG9iamVjdAorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmln
OiBUaGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCiAgICAgIiIiCiAKIApAQCAtNDQ3LDI4ICs1OTgs
NzQgQEAgZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgogIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIAotZGVmIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUoY29uZmlnLCBvcCwgbGVmdCwgcmln
aHQpOgotICAgICIiInJldHVybiBleHBsYW5hdGlvbiBmb3IgY29tcGFyaXNvbnMgaW4gZmFpbGlu
ZyBhc3NlcnQgZXhwcmVzc2lvbnMuCitkZWYgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSgKKyAg
ICBjb25maWc6ICJDb25maWciLCBvcDogc3RyLCBsZWZ0OiBvYmplY3QsIHJpZ2h0OiBvYmplY3QK
KykgLT4gT3B0aW9uYWxbTGlzdFtzdHJdXToKKyAgICAiIiJSZXR1cm4gZXhwbGFuYXRpb24gZm9y
IGNvbXBhcmlzb25zIGluIGZhaWxpbmcgYXNzZXJ0IGV4cHJlc3Npb25zLgogCiAgICAgUmV0dXJu
IE5vbmUgZm9yIG5vIGN1c3RvbSBleHBsYW5hdGlvbiwgb3RoZXJ3aXNlIHJldHVybiBhIGxpc3QK
LSAgICBvZiBzdHJpbmdzLiAgVGhlIHN0cmluZ3Mgd2lsbCBiZSBqb2luZWQgYnkgbmV3bGluZXMg
YnV0IGFueSBuZXdsaW5lcwotICAgICppbiogYSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVkLiAgTm90
ZSB0aGF0IGFsbCBidXQgdGhlIGZpcnN0IGxpbmUgd2lsbAorICAgIG9mIHN0cmluZ3MuIFRoZSBz
dHJpbmdzIHdpbGwgYmUgam9pbmVkIGJ5IG5ld2xpbmVzIGJ1dCBhbnkgbmV3bGluZXMKKyAgICAq
aW4qIGEgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZC4gTm90ZSB0aGF0IGFsbCBidXQgdGhlIGZpcnN0
IGxpbmUgd2lsbAogICAgIGJlIGluZGVudGVkIHNsaWdodGx5LCB0aGUgaW50ZW50aW9uIGlzIGZv
ciB0aGUgZmlyc3QgbGluZSB0byBiZSBhIHN1bW1hcnkuCiAKLSAgICA6cGFyYW0gX3B5dGVzdC5j
b25maWcuQ29uZmlnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKKyAgICA6cGFyYW0gX3B5
dGVzdC5jb25maWcuQ29uZmlnIGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgorICAg
ICIiIgorCisKK2RlZiBweXRlc3RfYXNzZXJ0aW9uX3Bhc3MoaXRlbTogIkl0ZW0iLCBsaW5lbm86
IGludCwgb3JpZzogc3RyLCBleHBsOiBzdHIpIC0+IE5vbmU6CisgICAgIiIiKiooRXhwZXJpbWVu
dGFsKSoqIENhbGxlZCB3aGVuZXZlciBhbiBhc3NlcnRpb24gcGFzc2VzLgorCisgICAgLi4gdmVy
c2lvbmFkZGVkOjogNS4wCisKKyAgICBVc2UgdGhpcyBob29rIHRvIGRvIHNvbWUgcHJvY2Vzc2lu
ZyBhZnRlciBhIHBhc3NpbmcgYXNzZXJ0aW9uLgorICAgIFRoZSBvcmlnaW5hbCBhc3NlcnRpb24g
aW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBgb3JpZ2Agc3RyaW5nCisgICAgYW5kIHRo
ZSBweXRlc3QgaW50cm9zcGVjdGVkIGFzc2VydGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUg
aW4gdGhlCisgICAgYGV4cGxgIHN0cmluZy4KKworICAgIFRoaXMgaG9vayBtdXN0IGJlIGV4cGxp
Y2l0bHkgZW5hYmxlZCBieSB0aGUgYGBlbmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9va2BgCisgICAg
aW5pLWZpbGUgb3B0aW9uOgorCisgICAgLi4gY29kZS1ibG9jazo6IGluaQorCisgICAgICAgIFtw
eXRlc3RdCisgICAgICAgIGVuYWJsZV9hc3NlcnRpb25fcGFzc19ob29rPXRydWUKKworICAgIFlv
dSBuZWVkIHRvICoqY2xlYW4gdGhlIC5weWMqKiBmaWxlcyBpbiB5b3VyIHByb2plY3QgZGlyZWN0
b3J5IGFuZCBpbnRlcnByZXRlciBsaWJyYXJpZXMKKyAgICB3aGVuIGVuYWJsaW5nIHRoaXMgb3B0
aW9uLCBhcyBhc3NlcnRpb25zIHdpbGwgcmVxdWlyZSB0byBiZSByZS13cml0dGVuLgorCisgICAg
OnBhcmFtIHB5dGVzdC5JdGVtIGl0ZW06IHB5dGVzdCBpdGVtIG9iamVjdCBvZiBjdXJyZW50IHRl
c3QuCisgICAgOnBhcmFtIGludCBsaW5lbm86IExpbmUgbnVtYmVyIG9mIHRoZSBhc3NlcnQgc3Rh
dGVtZW50LgorICAgIDpwYXJhbSBzdHIgb3JpZzogU3RyaW5nIHdpdGggdGhlIG9yaWdpbmFsIGFz
c2VydGlvbi4KKyAgICA6cGFyYW0gc3RyIGV4cGw6IFN0cmluZyB3aXRoIHRoZSBhc3NlcnQgZXhw
bGFuYXRpb24uCisKKyAgICAuLiBub3RlOjoKKworICAgICAgICBUaGlzIGhvb2sgaXMgKipleHBl
cmltZW50YWwqKiwgc28gaXRzIHBhcmFtZXRlcnMgb3IgZXZlbiB0aGUgaG9vayBpdHNlbGYgbWln
aHQKKyAgICAgICAgYmUgY2hhbmdlZC9yZW1vdmVkIHdpdGhvdXQgd2FybmluZyBpbiBhbnkgZnV0
dXJlIHB5dGVzdCByZWxlYXNlLgorCisgICAgICAgIElmIHlvdSBmaW5kIHRoaXMgaG9vayB1c2Vm
dWwsIHBsZWFzZSBzaGFyZSB5b3VyIGZlZWRiYWNrIGluIGFuIGlzc3VlLgogICAgICIiIgogCiAK
ICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotIyBob29rcyBmb3IgaW5mbHVlbmNpbmcgcmVwb3J0aW5nIChp
bnZva2VkIGZyb20gX3B5dGVzdF90ZXJtaW5hbCkKKyMgSG9va3MgZm9yIGluZmx1ZW5jaW5nIHJl
cG9ydGluZyAoaW52b2tlZCBmcm9tIF9weXRlc3RfdGVybWluYWwpLgogIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIAotZGVmIHB5dGVzdF9yZXBvcnRfaGVhZGVyKGNvbmZpZywgc3RhcnRkaXIpOgotICAg
ICIiIiByZXR1cm4gYSBzdHJpbmcgb3IgbGlzdCBvZiBzdHJpbmdzIHRvIGJlIGRpc3BsYXllZCBh
cyBoZWFkZXIgaW5mbyBmb3IgdGVybWluYWwgcmVwb3J0aW5nLgorZGVmIHB5dGVzdF9yZXBvcnRf
aGVhZGVyKAorICAgIGNvbmZpZzogIkNvbmZpZyIsIHN0YXJ0ZGlyOiBweS5wYXRoLmxvY2FsCisp
IC0+IFVuaW9uW3N0ciwgTGlzdFtzdHJdXToKKyAgICAiIiJSZXR1cm4gYSBzdHJpbmcgb3IgbGlz
dCBvZiBzdHJpbmdzIHRvIGJlIGRpc3BsYXllZCBhcyBoZWFkZXIgaW5mbyBmb3IgdGVybWluYWwg
cmVwb3J0aW5nLgorCisgICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRo
ZSBweXRlc3QgY29uZmlnIG9iamVjdC4KKyAgICA6cGFyYW0gcHkucGF0aC5sb2NhbCBzdGFydGRp
cjogVGhlIHN0YXJ0aW5nIGRpci4KIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcg
Y29uZmlnOiBweXRlc3QgY29uZmlnIG9iamVjdAotICAgIDpwYXJhbSBzdGFydGRpcjogcHkucGF0
aCBvYmplY3Qgd2l0aCB0aGUgc3RhcnRpbmcgZGlyCisgICAgLi4gbm90ZTo6CisKKyAgICAgICAg
TGluZXMgcmV0dXJuZWQgYnkgYSBwbHVnaW4gYXJlIGRpc3BsYXllZCBiZWZvcmUgdGhvc2Ugb2Yg
cGx1Z2lucyB3aGljaAorICAgICAgICByYW4gYmVmb3JlIGl0LgorICAgICAgICBJZiB5b3Ugd2Fu
dCB0byBoYXZlIHlvdXIgbGluZShzKSBkaXNwbGF5ZWQgZmlyc3QsIHVzZQorICAgICAgICA6cmVm
OmB0cnlsYXN0PVRydWUgPHBsdWdpbi1ob29rb3JkZXI+YC4KIAogICAgIC4uIG5vdGU6OgogCkBA
IC00NzgsNTkgKzY3NSwxMzcgQEAgZGVmIHB5dGVzdF9yZXBvcnRfaGVhZGVyKGNvbmZpZywgc3Rh
cnRkaXIpOgogICAgICIiIgogCiAKLWRlZiBweXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2go
Y29uZmlnLCBzdGFydGRpciwgaXRlbXMpOgotICAgICIiIgorZGVmIHB5dGVzdF9yZXBvcnRfY29s
bGVjdGlvbmZpbmlzaCgKKyAgICBjb25maWc6ICJDb25maWciLCBzdGFydGRpcjogcHkucGF0aC5s
b2NhbCwgaXRlbXM6IFNlcXVlbmNlWyJJdGVtIl0sCispIC0+IFVuaW9uW3N0ciwgTGlzdFtzdHJd
XToKKyAgICAiIiJSZXR1cm4gYSBzdHJpbmcgb3IgbGlzdCBvZiBzdHJpbmdzIHRvIGJlIGRpc3Bs
YXllZCBhZnRlciBjb2xsZWN0aW9uCisgICAgaGFzIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KKwor
ICAgIFRoZXNlIHN0cmluZ3Mgd2lsbCBiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIHN0YW5kYXJkICJj
b2xsZWN0ZWQgWCBpdGVtcyIgbWVzc2FnZS4KKwogICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgog
Ci0gICAgcmV0dXJuIGEgc3RyaW5nIG9yIGxpc3Qgb2Ygc3RyaW5ncyB0byBiZSBkaXNwbGF5ZWQg
YWZ0ZXIgY29sbGVjdGlvbiBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorICAgIDpwYXJhbSBf
cHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOiBUaGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCisg
ICAgOnBhcmFtIHB5LnBhdGgubG9jYWwgc3RhcnRkaXI6IFRoZSBzdGFydGluZyBkaXIuCisgICAg
OnBhcmFtIGl0ZW1zOiBMaXN0IG9mIHB5dGVzdCBpdGVtcyB0aGF0IGFyZSBnb2luZyB0byBiZSBl
eGVjdXRlZDsgdGhpcyBsaXN0IHNob3VsZCBub3QgYmUgbW9kaWZpZWQuCiAKLSAgICBUaGlzIHN0
cmluZ3Mgd2lsbCBiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIHN0YW5kYXJkICJjb2xsZWN0ZWQgWCBp
dGVtcyIgbWVzc2FnZS4KKyAgICAuLiBub3RlOjoKIAotICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZp
Zy5Db25maWcgY29uZmlnOiBweXRlc3QgY29uZmlnIG9iamVjdAotICAgIDpwYXJhbSBzdGFydGRp
cjogcHkucGF0aCBvYmplY3Qgd2l0aCB0aGUgc3RhcnRpbmcgZGlyCi0gICAgOnBhcmFtIGl0ZW1z
OiBsaXN0IG9mIHB5dGVzdCBpdGVtcyB0aGF0IGFyZSBnb2luZyB0byBiZSBleGVjdXRlZDsgdGhp
cyBsaXN0IHNob3VsZCBub3QgYmUgbW9kaWZpZWQuCisgICAgICAgIExpbmVzIHJldHVybmVkIGJ5
IGEgcGx1Z2luIGFyZSBkaXNwbGF5ZWQgYmVmb3JlIHRob3NlIG9mIHBsdWdpbnMgd2hpY2gKKyAg
ICAgICAgcmFuIGJlZm9yZSBpdC4KKyAgICAgICAgSWYgeW91IHdhbnQgdG8gaGF2ZSB5b3VyIGxp
bmUocykgZGlzcGxheWVkIGZpcnN0LCB1c2UKKyAgICAgICAgOnJlZjpgdHJ5bGFzdD1UcnVlIDxw
bHVnaW4taG9va29yZGVyPmAuCiAgICAgIiIiCiAKIAogQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRy
dWUpCi1kZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6Ci0gICAgIiIiIHJldHVy
biByZXN1bHQtY2F0ZWdvcnksIHNob3J0bGV0dGVyIGFuZCB2ZXJib3NlIHdvcmQgZm9yIHJlcG9y
dGluZy4KK2RlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMoCisgICAgcmVwb3J0OiBVbmlvblsi
Q29sbGVjdFJlcG9ydCIsICJUZXN0UmVwb3J0Il0sIGNvbmZpZzogIkNvbmZpZyIKKykgLT4gVHVw
bGVbCisgICAgc3RyLCBzdHIsIFVuaW9uW3N0ciwgTWFwcGluZ1tzdHIsIGJvb2xdXSwKK106Cisg
ICAgIiIiUmV0dXJuIHJlc3VsdC1jYXRlZ29yeSwgc2hvcnRsZXR0ZXIgYW5kIHZlcmJvc2Ugd29y
ZCBmb3Igc3RhdHVzCisgICAgcmVwb3J0aW5nLgorCisgICAgVGhlIHJlc3VsdC1jYXRlZ29yeSBp
cyBhIGNhdGVnb3J5IGluIHdoaWNoIHRvIGNvdW50IHRoZSByZXN1bHQsIGZvcgorICAgIGV4YW1w
bGUgInBhc3NlZCIsICJza2lwcGVkIiwgImVycm9yIiBvciB0aGUgZW1wdHkgc3RyaW5nLgorCisg
ICAgVGhlIHNob3J0bGV0dGVyIGlzIHNob3duIGFzIHRlc3RpbmcgcHJvZ3Jlc3NlcywgZm9yIGV4
YW1wbGUgIi4iLCAicyIsCisgICAgIkUiIG9yIHRoZSBlbXB0eSBzdHJpbmcuCiAKLSAgICBTdG9w
cyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCisg
ICAgVGhlIHZlcmJvc2Ugd29yZCBpcyBzaG93biBhcyB0ZXN0aW5nIHByb2dyZXNzZXMgaW4gdmVy
Ym9zZSBtb2RlLCBmb3IKKyAgICBleGFtcGxlICJQQVNTRUQiLCAiU0tJUFBFRCIsICJFUlJPUiIg
b3IgdGhlIGVtcHR5IHN0cmluZy4KIAorICAgIHB5dGVzdCBtYXkgc3R5bGUgdGhlc2UgaW1wbGlj
aXRseSBhY2NvcmRpbmcgdG8gdGhlIHJlcG9ydCBvdXRjb21lLgorICAgIFRvIHByb3ZpZGUgZXhw
bGljaXQgc3R5bGluZywgcmV0dXJuIGEgdHVwbGUgZm9yIHRoZSB2ZXJib3NlIHdvcmQsCisgICAg
Zm9yIGV4YW1wbGUgYGAicmVydW4iLCAiUiIsICgiUkVSVU4iLCB7InllbGxvdyI6IFRydWV9KWBg
LgogCi1kZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkodGVybWluYWxyZXBvcnRlciwgZXhpdHN0
YXR1cyk6CisgICAgOnBhcmFtIHJlcG9ydDogVGhlIHJlcG9ydCBvYmplY3Qgd2hvc2Ugc3RhdHVz
IGlzIHRvIGJlIHJldHVybmVkLgorICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29u
ZmlnOiBUaGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCisKKyAgICBTdG9wcyBhdCBmaXJzdCBub24t
Tm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAuCisgICAgIiIiCisKKworZGVmIHB5
dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KAorICAgIHRlcm1pbmFscmVwb3J0ZXI6ICJUZXJtaW5hbFJl
cG9ydGVyIiwgZXhpdHN0YXR1czogIkV4aXRDb2RlIiwgY29uZmlnOiAiQ29uZmlnIiwKKykgLT4g
Tm9uZToKICAgICAiIiJBZGQgYSBzZWN0aW9uIHRvIHRlcm1pbmFsIHN1bW1hcnkgcmVwb3J0aW5n
LgogCi0gICAgOnBhcmFtIF9weXRlc3QudGVybWluYWwuVGVybWluYWxSZXBvcnRlciB0ZXJtaW5h
bHJlcG9ydGVyOiB0aGUgaW50ZXJuYWwgdGVybWluYWwgcmVwb3J0ZXIgb2JqZWN0Ci0gICAgOnBh
cmFtIGludCBleGl0c3RhdHVzOiB0aGUgZXhpdCBzdGF0dXMgdGhhdCB3aWxsIGJlIHJlcG9ydGVk
IGJhY2sgdG8gdGhlIE9TCisgICAgOnBhcmFtIF9weXRlc3QudGVybWluYWwuVGVybWluYWxSZXBv
cnRlciB0ZXJtaW5hbHJlcG9ydGVyOiBUaGUgaW50ZXJuYWwgdGVybWluYWwgcmVwb3J0ZXIgb2Jq
ZWN0LgorICAgIDpwYXJhbSBpbnQgZXhpdHN0YXR1czogVGhlIGV4aXQgc3RhdHVzIHRoYXQgd2ls
bCBiZSByZXBvcnRlZCBiYWNrIHRvIHRoZSBPUy4KKyAgICA6cGFyYW0gX3B5dGVzdC5jb25maWcu
Q29uZmlnIGNvbmZpZzogVGhlIHB5dGVzdCBjb25maWcgb2JqZWN0LgogCi0gICAgLi4gdmVyc2lv
bmFkZGVkOjogMy41CisgICAgLi4gdmVyc2lvbmFkZGVkOjogNC4yCiAgICAgICAgIFRoZSBgYGNv
bmZpZ2BgIHBhcmFtZXRlci4KICAgICAiIiIKIAogCi1AaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkK
LWRlZiBweXRlc3RfbG9nd2FybmluZyhtZXNzYWdlLCBjb2RlLCBub2RlaWQsIGZzbG9jYXRpb24p
OgotICAgICIiIiBwcm9jZXNzIGEgd2FybmluZyBzcGVjaWZpZWQgYnkgYSBtZXNzYWdlLCBhIGNv
ZGUgc3RyaW5nLAotICAgIGEgbm9kZWlkIGFuZCBmc2xvY2F0aW9uIChib3RoIG9mIHdoaWNoIG1h
eSBiZSBOb25lCi0gICAgaWYgdGhlIHdhcm5pbmcgaXMgbm90IHRpZWQgdG8gYSBwYXJ0aWN1bGFy
IG5vZGUvbG9jYXRpb24pLgorQGhvb2tzcGVjKGhpc3RvcmljPVRydWUsIHdhcm5fb25faW1wbD1X
QVJOSU5HX0NBUFRVUkVEX0hPT0spCitkZWYgcHl0ZXN0X3dhcm5pbmdfY2FwdHVyZWQoCisgICAg
d2FybmluZ19tZXNzYWdlOiAid2FybmluZ3MuV2FybmluZ01lc3NhZ2UiLAorICAgIHdoZW46ICJM
aXRlcmFsWydjb25maWcnLCAnY29sbGVjdCcsICdydW50ZXN0J10iLAorICAgIGl0ZW06IE9wdGlv
bmFsWyJJdGVtIl0sCisgICAgbG9jYXRpb246IE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50LCBzdHJd
XSwKKykgLT4gTm9uZToKKyAgICAiIiIoKipEZXByZWNhdGVkKiopIFByb2Nlc3MgYSB3YXJuaW5n
IGNhcHR1cmVkIGJ5IHRoZSBpbnRlcm5hbCBweXRlc3Qgd2FybmluZ3MgcGx1Z2luLgogCi0gICAg
Li4gbm90ZTo6Ci0gICAgICAgIFRoaXMgaG9vayBpcyBpbmNvbXBhdGlibGUgd2l0aCBgYGhvb2t3
cmFwcGVyPVRydWVgYC4KKyAgICAuLiBkZXByZWNhdGVkOjogNi4wCisKKyAgICBUaGlzIGhvb2sg
aXMgY29uc2lkZXJlZCBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUg
cHl0ZXN0IHZlcnNpb24uCisgICAgVXNlIDpmdW5jOmBweXRlc3Rfd2FybmluZ19yZWNvcmRlZGAg
aW5zdGVhZC4KKworICAgIDpwYXJhbSB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSB3YXJuaW5nX21l
c3NhZ2U6CisgICAgICAgIFRoZSBjYXB0dXJlZCB3YXJuaW5nLiBUaGlzIGlzIHRoZSBzYW1lIG9i
amVjdCBwcm9kdWNlZCBieSA6cHk6ZnVuYzpgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3NgLCBhbmQg
Y29udGFpbnMKKyAgICAgICAgdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUgcGFyYW1ldGVycyBv
ZiA6cHk6ZnVuYzpgd2FybmluZ3Muc2hvd3dhcm5pbmdgLgorCisgICAgOnBhcmFtIHN0ciB3aGVu
OgorICAgICAgICBJbmRpY2F0ZXMgd2hlbiB0aGUgd2FybmluZyB3YXMgY2FwdHVyZWQuIFBvc3Np
YmxlIHZhbHVlczoKKworICAgICAgICAqIGBgImNvbmZpZyJgYDogZHVyaW5nIHB5dGVzdCBjb25m
aWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIHN0YWdlLgorICAgICAgICAqIGBgImNvbGxlY3QiYGA6
IGR1cmluZyB0ZXN0IGNvbGxlY3Rpb24uCisgICAgICAgICogYGAicnVudGVzdCJgYDogZHVyaW5n
IHRlc3QgZXhlY3V0aW9uLgorCisgICAgOnBhcmFtIHB5dGVzdC5JdGVtfE5vbmUgaXRlbToKKyAg
ICAgICAgVGhlIGl0ZW0gYmVpbmcgZXhlY3V0ZWQgaWYgYGB3aGVuYGAgaXMgYGAicnVudGVzdCJg
YCwgb3RoZXJ3aXNlIGBgTm9uZWBgLgorCisgICAgOnBhcmFtIHR1cGxlIGxvY2F0aW9uOgorICAg
ICAgICBXaGVuIGF2YWlsYWJsZSwgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4ZWN1dGlv
biBjb250ZXh0IG9mIHRoZSBjYXB0dXJlZAorICAgICAgICB3YXJuaW5nIChmaWxlbmFtZSwgbGlu
ZW51bWJlciwgZnVuY3Rpb24pLiBgYGZ1bmN0aW9uYGAgZXZhbHVhdGVzIHRvIDxtb2R1bGU+Cisg
ICAgICAgIHdoZW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGF0IHRoZSBtb2R1bGUgbGV2ZWwu
CiAgICAgIiIiCiAKIAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGRvY3Rlc3QgaG9va3MKLSMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCitkZWYgcHl0ZXN0X3dhcm5p
bmdfcmVjb3JkZWQoCisgICAgd2FybmluZ19tZXNzYWdlOiAid2FybmluZ3MuV2FybmluZ01lc3Nh
Z2UiLAorICAgIHdoZW46ICJMaXRlcmFsWydjb25maWcnLCAnY29sbGVjdCcsICdydW50ZXN0J10i
LAorICAgIG5vZGVpZDogc3RyLAorICAgIGxvY2F0aW9uOiBPcHRpb25hbFtUdXBsZVtzdHIsIGlu
dCwgc3RyXV0sCispIC0+IE5vbmU6CisgICAgIiIiUHJvY2VzcyBhIHdhcm5pbmcgY2FwdHVyZWQg
YnkgdGhlIGludGVybmFsIHB5dGVzdCB3YXJuaW5ncyBwbHVnaW4uCiAKKyAgICA6cGFyYW0gd2Fy
bmluZ3MuV2FybmluZ01lc3NhZ2Ugd2FybmluZ19tZXNzYWdlOgorICAgICAgICBUaGUgY2FwdHVy
ZWQgd2FybmluZy4gVGhpcyBpcyB0aGUgc2FtZSBvYmplY3QgcHJvZHVjZWQgYnkgOnB5OmZ1bmM6
YHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzYCwgYW5kIGNvbnRhaW5zCisgICAgICAgIHRoZSBzYW1l
IGF0dHJpYnV0ZXMgYXMgdGhlIHBhcmFtZXRlcnMgb2YgOnB5OmZ1bmM6YHdhcm5pbmdzLnNob3d3
YXJuaW5nYC4KIAotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2RvY3Rl
c3RfcHJlcGFyZV9jb250ZW50KGNvbnRlbnQpOgotICAgICIiIiByZXR1cm4gcHJvY2Vzc2VkIGNv
bnRlbnQgZm9yIGEgZ2l2ZW4gZG9jdGVzdAorICAgIDpwYXJhbSBzdHIgd2hlbjoKKyAgICAgICAg
SW5kaWNhdGVzIHdoZW4gdGhlIHdhcm5pbmcgd2FzIGNhcHR1cmVkLiBQb3NzaWJsZSB2YWx1ZXM6
CisKKyAgICAgICAgKiBgYCJjb25maWciYGA6IGR1cmluZyBweXRlc3QgY29uZmlndXJhdGlvbi9p
bml0aWFsaXphdGlvbiBzdGFnZS4KKyAgICAgICAgKiBgYCJjb2xsZWN0ImBgOiBkdXJpbmcgdGVz
dCBjb2xsZWN0aW9uLgorICAgICAgICAqIGBgInJ1bnRlc3QiYGA6IGR1cmluZyB0ZXN0IGV4ZWN1
dGlvbi4KKworICAgIDpwYXJhbSBzdHIgbm9kZWlkOgorICAgICAgICBGdWxsIGlkIG9mIHRoZSBp
dGVtLgogCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmly
c3RyZXN1bHRgICIiIgorICAgIDpwYXJhbSB0dXBsZXxOb25lIGxvY2F0aW9uOgorICAgICAgICBX
aGVuIGF2YWlsYWJsZSwgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4ZWN1dGlvbiBjb250
ZXh0IG9mIHRoZSBjYXB0dXJlZAorICAgICAgICB3YXJuaW5nIChmaWxlbmFtZSwgbGluZW51bWJl
ciwgZnVuY3Rpb24pLiBgYGZ1bmN0aW9uYGAgZXZhbHVhdGVzIHRvIDxtb2R1bGU+CisgICAgICAg
IHdoZW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGF0IHRoZSBtb2R1bGUgbGV2ZWwuCisKKyAg
ICAuLiB2ZXJzaW9uYWRkZWQ6OiA2LjAKKyAgICAiIiIKIAogCiAjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTUzOCwyNiArODEzLDU4IEBAIGRlZiBweXRlc3RfZG9jdGVzdF9wcmVwYXJlX2NvbnRlbnQo
Y29udGVudCk6CiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1kZWYgcHl0ZXN0X2ludGVybmFsZXJy
b3IoZXhjcmVwciwgZXhjaW5mbyk6Ci0gICAgIiIiIGNhbGxlZCBmb3IgaW50ZXJuYWwgZXJyb3Jz
LiAiIiIKK2RlZiBweXRlc3RfaW50ZXJuYWxlcnJvcigKKyAgICBleGNyZXByOiAiRXhjZXB0aW9u
UmVwciIsIGV4Y2luZm86ICJFeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRpb25dIiwKKykgLT4gT3B0
aW9uYWxbYm9vbF06CisgICAgIiIiQ2FsbGVkIGZvciBpbnRlcm5hbCBlcnJvcnMuCisKKyAgICBS
ZXR1cm4gVHJ1ZSB0byBzdXBwcmVzcyB0aGUgZmFsbGJhY2sgaGFuZGxpbmcgb2YgcHJpbnRpbmcg
YW4KKyAgICBJTlRFUk5BTEVSUk9SIG1lc3NhZ2UgZGlyZWN0bHkgdG8gc3lzLnN0ZGVyci4KKyAg
ICAiIiIKIAogCi1kZWYgcHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdChleGNpbmZvKToKLSAgICAi
IiIgY2FsbGVkIGZvciBrZXlib2FyZCBpbnRlcnJ1cHQuICIiIgorZGVmIHB5dGVzdF9rZXlib2Fy
ZF9pbnRlcnJ1cHQoCisgICAgZXhjaW5mbzogIkV4Y2VwdGlvbkluZm9bVW5pb25bS2V5Ym9hcmRJ
bnRlcnJ1cHQsIEV4aXRdXSIsCispIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIGZvciBrZXlib2Fy
ZCBpbnRlcnJ1cHQuIiIiCiAKIAotZGVmIHB5dGVzdF9leGNlcHRpb25faW50ZXJhY3Qobm9kZSwg
Y2FsbCwgcmVwb3J0KToKLSAgICAiIiJjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gd2FzIHJhaXNl
ZCB3aGljaCBjYW4gcG90ZW50aWFsbHkgYmUKK2RlZiBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0
KAorICAgIG5vZGU6IFVuaW9uWyJJdGVtIiwgIkNvbGxlY3RvciJdLAorICAgIGNhbGw6ICJDYWxs
SW5mb1tBbnldIiwKKyAgICByZXBvcnQ6IFVuaW9uWyJDb2xsZWN0UmVwb3J0IiwgIlRlc3RSZXBv
cnQiXSwKKykgLT4gTm9uZToKKyAgICAiIiJDYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gd2FzIHJh
aXNlZCB3aGljaCBjYW4gcG90ZW50aWFsbHkgYmUKICAgICBpbnRlcmFjdGl2ZWx5IGhhbmRsZWQu
CiAKLSAgICBUaGlzIGhvb2sgaXMgb25seSBjYWxsZWQgaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlz
ZWQKLSAgICB0aGF0IGlzIG5vdCBhbiBpbnRlcm5hbCBleGNlcHRpb24gbGlrZSBgYHNraXAuRXhj
ZXB0aW9uYGAuCisgICAgTWF5IGJlIGNhbGxlZCBkdXJpbmcgY29sbGVjdGlvbiAoc2VlIDpweTpm
dW5jOmBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydGApLAorICAgIGluIHdoaWNoIGNhc2UgYGBy
ZXBvcnRgYCBpcyBhIDpweTpjbGFzczpgX3B5dGVzdC5yZXBvcnRzLkNvbGxlY3RSZXBvcnRgLgor
CisgICAgTWF5IGJlIGNhbGxlZCBkdXJpbmcgcnVudGVzdCBvZiBhbiBpdGVtIChzZWUgOnB5OmZ1
bmM6YHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sYCksCisgICAgaW4gd2hpY2ggY2FzZSBgYHJlcG9y
dGBgIGlzIGEgOnB5OmNsYXNzOmBfcHl0ZXN0LnJlcG9ydHMuVGVzdFJlcG9ydGAuCisKKyAgICBU
aGlzIGhvb2sgaXMgbm90IGNhbGxlZCBpZiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzIHJhaXNlZCBp
cyBhbiBpbnRlcm5hbAorICAgIGV4Y2VwdGlvbiBsaWtlIGBgc2tpcC5FeGNlcHRpb25gYC4KKyAg
ICAiIiIKKworCitkZWYgcHl0ZXN0X2VudGVyX3BkYihjb25maWc6ICJDb25maWciLCBwZGI6ICJw
ZGIuUGRiIikgLT4gTm9uZToKKyAgICAiIiJDYWxsZWQgdXBvbiBwZGIuc2V0X3RyYWNlKCkuCisK
KyAgICBDYW4gYmUgdXNlZCBieSBwbHVnaW5zIHRvIHRha2Ugc3BlY2lhbCBhY3Rpb24ganVzdCBi
ZWZvcmUgdGhlIHB5dGhvbgorICAgIGRlYnVnZ2VyIGVudGVycyBpbnRlcmFjdGl2ZSBtb2RlLgor
CisgICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRoZSBweXRlc3QgY29u
ZmlnIG9iamVjdC4KKyAgICA6cGFyYW0gcGRiLlBkYiBwZGI6IFRoZSBQZGIgaW5zdGFuY2UuCiAg
ICAgIiIiCiAKIAotZGVmIHB5dGVzdF9lbnRlcl9wZGIoY29uZmlnKToKLSAgICAiIiIgY2FsbGVk
IHVwb24gcGRiLnNldF90cmFjZSgpLCBjYW4gYmUgdXNlZCBieSBwbHVnaW5zIHRvIHRha2Ugc3Bl
Y2lhbAotICAgIGFjdGlvbiBqdXN0IGJlZm9yZSB0aGUgcHl0aG9uIGRlYnVnZ2VyIGVudGVycyBp
biBpbnRlcmFjdGl2ZSBtb2RlLgorZGVmIHB5dGVzdF9sZWF2ZV9wZGIoY29uZmlnOiAiQ29uZmln
IiwgcGRiOiAicGRiLlBkYiIpIC0+IE5vbmU6CisgICAgIiIiQ2FsbGVkIHdoZW4gbGVhdmluZyBw
ZGIgKGUuZy4gd2l0aCBjb250aW51ZSBhZnRlciBwZGIuc2V0X3RyYWNlKCkpLgorCisgICAgQ2Fu
IGJlIHVzZWQgYnkgcGx1Z2lucyB0byB0YWtlIHNwZWNpYWwgYWN0aW9uIGp1c3QgYWZ0ZXIgdGhl
IHB5dGhvbgorICAgIGRlYnVnZ2VyIGxlYXZlcyBpbnRlcmFjdGl2ZSBtb2RlLgogCi0gICAgOnBh
cmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0Cisg
ICAgOnBhcmFtIF9weXRlc3QuY29uZmlnLkNvbmZpZyBjb25maWc6IFRoZSBweXRlc3QgY29uZmln
IG9iamVjdC4KKyAgICA6cGFyYW0gcGRiLlBkYiBwZGI6IFRoZSBQZGIgaW5zdGFuY2UuCiAgICAg
IiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9qdW5pdHhtbC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2p1bml0eG1sLnB5CmluZGV4IDI5ZGEyN2RlN2NjZi4uODc3
YjliZTc4YmNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9qdW5pdHhtbC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9qdW5pdHhtbC5weQpAQCAtMSwxMDggKzEs
MTIyIEBACi0iIiIKLSAgICByZXBvcnQgdGVzdCByZXN1bHRzIGluIEpVbml0LVhNTCBmb3JtYXQs
Ci0gICAgZm9yIHVzZSB3aXRoIEplbmtpbnMgYW5kIGJ1aWxkIGludGVncmF0aW9uIHNlcnZlcnMu
Ci0KKyIiIlJlcG9ydCB0ZXN0IHJlc3VsdHMgaW4gSlVuaXQtWE1MIGZvcm1hdCwgZm9yIHVzZSB3
aXRoIEplbmtpbnMgYW5kIGJ1aWxkCitpbnRlZ3JhdGlvbiBzZXJ2ZXJzLgogCiBCYXNlZCBvbiBp
bml0aWFsIGNvZGUgZnJvbSBSb3NzIExhd2xleS4KIAotT3V0cHV0IGNvbmZvcm1zIHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qZW5raW5zY2kveHVuaXQtcGx1Z2luL2Jsb2IvbWFzdGVyLwotc3JjL21h
aW4vcmVzb3VyY2VzL29yZy9qZW5raW5zY2kvcGx1Z2lucy94dW5pdC90eXBlcy9tb2RlbC94c2Qv
anVuaXQtMTAueHNkCitPdXRwdXQgY29uZm9ybXMgdG8KK2h0dHBzOi8vZ2l0aHViLmNvbS9qZW5r
aW5zY2kveHVuaXQtcGx1Z2luL2Jsb2IvbWFzdGVyL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvamVu
a2luc2NpL3BsdWdpbnMveHVuaXQvdHlwZXMvbW9kZWwveHNkL2p1bml0LTEwLnhzZAogIiIiCi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1
bmN0aW9uCi0KIGltcG9ydCBmdW5jdG9vbHMKLWltcG9ydCBweQogaW1wb3J0IG9zCitpbXBvcnQg
cGxhdGZvcm0KIGltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKK2ltcG9ydCB4bWwu
ZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitm
cm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hdGNoCitmcm9tIHR5cGlu
ZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcg
aW1wb3J0IFVuaW9uCisKIGltcG9ydCBweXRlc3QKIGZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMK
K2Zyb20gX3B5dGVzdCBpbXBvcnQgdGltaW5nCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBv
cnQgRXhjZXB0aW9uUmVwcgorZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFJlcHJGaWxl
TG9jYXRpb24KK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZwogZnJvbSBfcHl0ZXN0
LmNvbmZpZyBpbXBvcnQgZmlsZW5hbWVfYXJnCi0KLSMgUHl0aG9uIDIuWCBhbmQgMy5YIGNvbXBh
dGliaWxpdHkKLWlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPCAzOgotICAgIGZyb20gY29kZWNzIGlt
cG9ydCBvcGVuCi1lbHNlOgotICAgIHVuaWNociA9IGNocgotICAgIHVuaWNvZGUgPSBzdHIKLSAg
ICBsb25nID0gaW50Citmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNl
cgorZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVxdWVzdAorZnJvbSBfcHl0
ZXN0LnJlcG9ydHMgaW1wb3J0IFRlc3RSZXBvcnQKK2Zyb20gX3B5dGVzdC5zdG9yZSBpbXBvcnQg
U3RvcmVLZXkKK2Zyb20gX3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQgVGVybWluYWxSZXBvcnRlcgog
CiAKLWNsYXNzIEp1bml0KHB5LnhtbC5OYW1lc3BhY2UpOgotICAgIHBhc3MKK3htbF9rZXkgPSBT
dG9yZUtleVsiTG9nWE1MIl0oKQogCiAKLSMgV2UgbmVlZCB0byBnZXQgdGhlIHN1YnNldCBvZiB0
aGUgaW52YWxpZCB1bmljb2RlIHJhbmdlcyBhY2NvcmRpbmcgdG8KLSMgWE1MIDEuMCB3aGljaCBh
cmUgdmFsaWQgaW4gdGhpcyBweXRob24gYnVpbGQuICBIZW5jZSB3ZSBjYWxjdWxhdGUKLSMgdGhp
cyBkeW5hbWljYWxseSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgaXQuICBUaGUgc3BlYyByYW5nZSBv
ZiB2YWxpZAotIyBjaGFycyBpczogQ2hhciA6Oj0gI3g5IHwgI3hBIHwgI3hEIHwgWyN4MjAtI3hE
N0ZGXSB8IFsjeEUwMDAtI3hGRkZEXQotIyAgICAgICAgICAgICAgICAgICAgfCBbI3gxMDAwMC0j
eDEwRkZGRl0KLV9sZWdhbF9jaGFycyA9ICgweDA5LCAweDBBLCAweDBkKQotX2xlZ2FsX3Jhbmdl
cyA9ICgoMHgyMCwgMHg3RSksICgweDgwLCAweEQ3RkYpLCAoMHhFMDAwLCAweEZGRkQpLCAoMHgx
MDAwMCwgMHgxMEZGRkYpKQotX2xlZ2FsX3htbF9yZSA9IFsKLSAgICB1bmljb2RlKCIlcy0lcyIp
ICUgKHVuaWNocihsb3cpLCB1bmljaHIoaGlnaCkpCi0gICAgZm9yIChsb3csIGhpZ2gpIGluIF9s
ZWdhbF9yYW5nZXMKLSAgICBpZiBsb3cgPCBzeXMubWF4dW5pY29kZQotXQotX2xlZ2FsX3htbF9y
ZSA9IFt1bmljaHIoeCkgZm9yIHggaW4gX2xlZ2FsX2NoYXJzXSArIF9sZWdhbF94bWxfcmUKLWls
bGVnYWxfeG1sX3JlID0gcmUuY29tcGlsZSh1bmljb2RlKCJbXiVzXSIpICUgdW5pY29kZSgiIiku
am9pbihfbGVnYWxfeG1sX3JlKSkKLWRlbCBfbGVnYWxfY2hhcnMKLWRlbCBfbGVnYWxfcmFuZ2Vz
Ci1kZWwgX2xlZ2FsX3htbF9yZQorZGVmIGJpbl94bWxfZXNjYXBlKGFyZzogb2JqZWN0KSAtPiBz
dHI6CisgICAgciIiIlZpc3VhbGx5IGVzY2FwZSBpbnZhbGlkIFhNTCBjaGFyYWN0ZXJzLgogCi1f
cHlfZXh0X3JlID0gcmUuY29tcGlsZShyIlwucHkkIikKLQotCi1kZWYgYmluX3htbF9lc2NhcGUo
YXJnKToKKyAgICBGb3IgZXhhbXBsZSwgdHJhbnNmb3JtcworICAgICAgICAnaGVsbG9cYXdvcmxk
XGInCisgICAgaW50bworICAgICAgICAnaGVsbG8jeDA3d29ybGQjeDA4JworICAgIE5vdGUgdGhh
dCB0aGUgI3hBQnMgYXJlICpub3QqIFhNTCBlc2NhcGVzIC0gbWlzc2luZyB0aGUgYW1wZXJzYW5k
ICYjeEFCLgorICAgIFRoZSBpZGVhIGlzIHRvIGVzY2FwZSB2aXN1YWxseSBmb3IgdGhlIHVzZXIg
cmF0aGVyIHRoYW4gZm9yIFhNTCBpdHNlbGYuCisgICAgIiIiCiAKLSAgICBkZWYgcmVwbChtYXRj
aG9iaik6CisgICAgZGVmIHJlcGwobWF0Y2hvYmo6IE1hdGNoW3N0cl0pIC0+IHN0cjoKICAgICAg
ICAgaSA9IG9yZChtYXRjaG9iai5ncm91cCgpKQogICAgICAgICBpZiBpIDw9IDB4RkY6Ci0gICAg
ICAgICAgICByZXR1cm4gdW5pY29kZSgiI3glMDJYIikgJSBpCisgICAgICAgICAgICByZXR1cm4g
IiN4JTAyWCIgJSBpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdW5pY29kZSgi
I3glMDRYIikgJSBpCisgICAgICAgICAgICByZXR1cm4gIiN4JTA0WCIgJSBpCisKKyAgICAjIFRo
ZSBzcGVjIHJhbmdlIG9mIHZhbGlkIGNoYXJzIGlzOgorICAgICMgQ2hhciA6Oj0gI3g5IHwgI3hB
IHwgI3hEIHwgWyN4MjAtI3hEN0ZGXSB8IFsjeEUwMDAtI3hGRkZEXSB8IFsjeDEwMDAwLSN4MTBG
RkZGXQorICAgICMgRm9yIGFuIHVua25vd24oPykgcmVhc29uLCB3ZSBkaXNhbGxvdyAjeDdGIChE
RUwpIGFzIHdlbGwuCisgICAgaWxsZWdhbF94bWxfcmUgPSAoCisgICAgICAgICJbXlx1MDAwOVx1
MDAwQVx1MDAwRFx1MDAyMC1cdTAwN0VcdTAwODAtXHVEN0ZGXHVFMDAwLVx1RkZGRFx1MTAwMDAt
XHUxMEZGRkZdIgorICAgICkKKyAgICByZXR1cm4gcmUuc3ViKGlsbGVnYWxfeG1sX3JlLCByZXBs
LCBzdHIoYXJnKSkKIAotICAgIHJldHVybiBweS54bWwucmF3KGlsbGVnYWxfeG1sX3JlLnN1Yihy
ZXBsLCBweS54bWwuZXNjYXBlKGFyZykpKQogCitkZWYgbWVyZ2VfZmFtaWx5KGxlZnQsIHJpZ2h0
KSAtPiBOb25lOgorICAgIHJlc3VsdCA9IHt9CisgICAgZm9yIGtsLCB2bCBpbiBsZWZ0Lml0ZW1z
KCk6CisgICAgICAgIGZvciBrciwgdnIgaW4gcmlnaHQuaXRlbXMoKToKKyAgICAgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKHZsLCBsaXN0KToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IodHlwZSh2bCkpCisgICAgICAgICAgICByZXN1bHRba2xdID0gdmwgKyB2cgorICAgIGxlZnQu
dXBkYXRlKHJlc3VsdCkKIAotY2xhc3MgX05vZGVSZXBvcnRlcihvYmplY3QpOgogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5vZGVpZCwgeG1sKToKK2ZhbWlsaWVzID0ge30KK2ZhbWlsaWVzWyJf
YmFzZSJdID0geyJ0ZXN0Y2FzZSI6IFsiY2xhc3NuYW1lIiwgIm5hbWUiXX0KK2ZhbWlsaWVzWyJf
YmFzZV9sZWdhY3kiXSA9IHsidGVzdGNhc2UiOiBbImZpbGUiLCAibGluZSIsICJ1cmwiXX0KIAor
IyB4VW5pdCAxLnggaW5oZXJpdHMgbGVnYWN5IGF0dHJpYnV0ZXMuCitmYW1pbGllc1sieHVuaXQx
Il0gPSBmYW1pbGllc1siX2Jhc2UiXS5jb3B5KCkKK21lcmdlX2ZhbWlseShmYW1pbGllc1sieHVu
aXQxIl0sIGZhbWlsaWVzWyJfYmFzZV9sZWdhY3kiXSkKKworIyB4VW5pdCAyLnggdXNlcyBzdHJp
Y3QgYmFzZSBhdHRyaWJ1dGVzLgorZmFtaWxpZXNbInh1bml0MiJdID0gZmFtaWxpZXNbIl9iYXNl
Il0KKworCitjbGFzcyBfTm9kZVJlcG9ydGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2Rl
aWQ6IFVuaW9uW3N0ciwgVGVzdFJlcG9ydF0sIHhtbDogIkxvZ1hNTCIpIC0+IE5vbmU6CiAgICAg
ICAgIHNlbGYuaWQgPSBub2RlaWQKICAgICAgICAgc2VsZi54bWwgPSB4bWwKICAgICAgICAgc2Vs
Zi5hZGRfc3RhdHMgPSBzZWxmLnhtbC5hZGRfc3RhdHMKKyAgICAgICAgc2VsZi5mYW1pbHkgPSBz
ZWxmLnhtbC5mYW1pbHkKICAgICAgICAgc2VsZi5kdXJhdGlvbiA9IDAKLSAgICAgICAgc2VsZi5w
cm9wZXJ0aWVzID0gW10KLSAgICAgICAgc2VsZi5ub2RlcyA9IFtdCi0gICAgICAgIHNlbGYudGVz
dGNhc2UgPSBOb25lCi0gICAgICAgIHNlbGYuYXR0cnMgPSB7fQorICAgICAgICBzZWxmLnByb3Bl
cnRpZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgc3RyXV0KKyAgICAgICAgc2VsZi5u
b2RlcyA9IFtdICAjIHR5cGU6IExpc3RbRVQuRWxlbWVudF0KKyAgICAgICAgc2VsZi5hdHRycyA9
IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBzdHJdCiAKLSAgICBkZWYgYXBwZW5kKHNlbGYsIG5vZGUp
OgotICAgICAgICBzZWxmLnhtbC5hZGRfc3RhdHModHlwZShub2RlKS5fX25hbWVfXykKKyAgICBk
ZWYgYXBwZW5kKHNlbGYsIG5vZGU6IEVULkVsZW1lbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
eG1sLmFkZF9zdGF0cyhub2RlLnRhZykKICAgICAgICAgc2VsZi5ub2Rlcy5hcHBlbmQobm9kZSkK
IAotICAgIGRlZiBhZGRfcHJvcGVydHkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgIGRlZiBhZGRf
cHJvcGVydHkoc2VsZiwgbmFtZTogc3RyLCB2YWx1ZTogb2JqZWN0KSAtPiBOb25lOgogICAgICAg
ICBzZWxmLnByb3BlcnRpZXMuYXBwZW5kKChzdHIobmFtZSksIGJpbl94bWxfZXNjYXBlKHZhbHVl
KSkpCiAKLSAgICBkZWYgYWRkX2F0dHJpYnV0ZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgZGVm
IGFkZF9hdHRyaWJ1dGUoc2VsZiwgbmFtZTogc3RyLCB2YWx1ZTogb2JqZWN0KSAtPiBOb25lOgog
ICAgICAgICBzZWxmLmF0dHJzW3N0cihuYW1lKV0gPSBiaW5feG1sX2VzY2FwZSh2YWx1ZSkKIAot
ICAgIGRlZiBtYWtlX3Byb3BlcnRpZXNfbm9kZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEg
SnVuaXQgbm9kZSBjb250YWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzLCBpZiBhbnkuCi0gICAgICAg
ICIiIgorICAgIGRlZiBtYWtlX3Byb3BlcnRpZXNfbm9kZShzZWxmKSAtPiBPcHRpb25hbFtFVC5F
bGVtZW50XToKKyAgICAgICAgIiIiUmV0dXJuIGEgSnVuaXQgbm9kZSBjb250YWluaW5nIGN1c3Rv
bSBwcm9wZXJ0aWVzLCBpZiBhbnkuIiIiCiAgICAgICAgIGlmIHNlbGYucHJvcGVydGllczoKLSAg
ICAgICAgICAgIHJldHVybiBKdW5pdC5wcm9wZXJ0aWVzKAotICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgSnVuaXQucHJvcGVydHkobmFtZT1uYW1lLCB2YWx1ZT12YWx1ZSkK
LSAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYucHJvcGVydGllcwot
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuICIiCisgICAg
ICAgICAgICBwcm9wZXJ0aWVzID0gRVQuRWxlbWVudCgicHJvcGVydGllcyIpCisgICAgICAgICAg
ICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5wcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgIHBy
b3BlcnRpZXMuYXBwZW5kKEVULkVsZW1lbnQoInByb3BlcnR5IiwgbmFtZT1uYW1lLCB2YWx1ZT12
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gcHJvcGVydGllcworICAgICAgICByZXR1cm4gTm9u
ZQogCi0gICAgZGVmIHJlY29yZF90ZXN0cmVwb3J0KHNlbGYsIHRlc3RyZXBvcnQpOgotICAgICAg
ICBhc3NlcnQgbm90IHNlbGYudGVzdGNhc2UKKyAgICBkZWYgcmVjb3JkX3Rlc3RyZXBvcnQoc2Vs
ZiwgdGVzdHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKICAgICAgICAgbmFtZXMgPSBtYW5n
bGVfdGVzdF9hZGRyZXNzKHRlc3RyZXBvcnQubm9kZWlkKQogICAgICAgICBleGlzdGluZ19hdHRy
cyA9IHNlbGYuYXR0cnMKICAgICAgICAgY2xhc3NuYW1lcyA9IG5hbWVzWzotMV0KQEAgLTExMiwx
ODYgKzEyNiwyNTcgQEAgY2xhc3MgX05vZGVSZXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAg
ImNsYXNzbmFtZSI6ICIuIi5qb2luKGNsYXNzbmFtZXMpLAogICAgICAgICAgICAgIm5hbWUiOiBi
aW5feG1sX2VzY2FwZShuYW1lc1stMV0pLAogICAgICAgICAgICAgImZpbGUiOiB0ZXN0cmVwb3J0
LmxvY2F0aW9uWzBdLAotICAgICAgICB9CisgICAgICAgIH0gICMgdHlwZTogRGljdFtzdHIsIHN0
cl0KICAgICAgICAgaWYgdGVzdHJlcG9ydC5sb2NhdGlvblsxXSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIGF0dHJzWyJsaW5lIl0gPSB0ZXN0cmVwb3J0LmxvY2F0aW9uWzFdCisgICAgICAgICAg
ICBhdHRyc1sibGluZSJdID0gc3RyKHRlc3RyZXBvcnQubG9jYXRpb25bMV0pCiAgICAgICAgIGlm
IGhhc2F0dHIodGVzdHJlcG9ydCwgInVybCIpOgogICAgICAgICAgICAgYXR0cnNbInVybCJdID0g
dGVzdHJlcG9ydC51cmwKICAgICAgICAgc2VsZi5hdHRycyA9IGF0dHJzCi0gICAgICAgIHNlbGYu
YXR0cnMudXBkYXRlKGV4aXN0aW5nX2F0dHJzKSAgIyByZXN0b3JlIGFueSB1c2VyLWRlZmluZWQg
YXR0cmlidXRlcwotCi0gICAgZGVmIHRvX3htbChzZWxmKToKLSAgICAgICAgdGVzdGNhc2UgPSBK
dW5pdC50ZXN0Y2FzZSh0aW1lPXNlbGYuZHVyYXRpb24sICoqc2VsZi5hdHRycykKLSAgICAgICAg
dGVzdGNhc2UuYXBwZW5kKHNlbGYubWFrZV9wcm9wZXJ0aWVzX25vZGUoKSkKLSAgICAgICAgZm9y
IG5vZGUgaW4gc2VsZi5ub2RlczoKLSAgICAgICAgICAgIHRlc3RjYXNlLmFwcGVuZChub2RlKQor
ICAgICAgICBzZWxmLmF0dHJzLnVwZGF0ZShleGlzdGluZ19hdHRycykgICMgUmVzdG9yZSBhbnkg
dXNlci1kZWZpbmVkIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgIyBQcmVzZXJ2ZSBsZWdhY3kgdGVz
dGNhc2UgYmVoYXZpb3IuCisgICAgICAgIGlmIHNlbGYuZmFtaWx5ID09ICJ4dW5pdDEiOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBGaWx0ZXIgb3V0IGF0dHJpYnV0ZXMgbm90IHBl
cm1pdHRlZCBieSB0aGlzIHRlc3QgZmFtaWx5LgorICAgICAgICAjIEluY2x1ZGluZyBjdXN0b20g
YXR0cmlidXRlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB2YWxpZCBoZXJlLgorICAgICAgICB0ZW1w
X2F0dHJzID0ge30KKyAgICAgICAgZm9yIGtleSBpbiBzZWxmLmF0dHJzLmtleXMoKToKKyAgICAg
ICAgICAgIGlmIGtleSBpbiBmYW1pbGllc1tzZWxmLmZhbWlseV1bInRlc3RjYXNlIl06CisgICAg
ICAgICAgICAgICAgdGVtcF9hdHRyc1trZXldID0gc2VsZi5hdHRyc1trZXldCisgICAgICAgIHNl
bGYuYXR0cnMgPSB0ZW1wX2F0dHJzCisKKyAgICBkZWYgdG9feG1sKHNlbGYpIC0+IEVULkVsZW1l
bnQ6CisgICAgICAgIHRlc3RjYXNlID0gRVQuRWxlbWVudCgidGVzdGNhc2UiLCBzZWxmLmF0dHJz
LCB0aW1lPSIlLjNmIiAlIHNlbGYuZHVyYXRpb24pCisgICAgICAgIHByb3BlcnRpZXMgPSBzZWxm
Lm1ha2VfcHJvcGVydGllc19ub2RlKCkKKyAgICAgICAgaWYgcHJvcGVydGllcyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHRlc3RjYXNlLmFwcGVuZChwcm9wZXJ0aWVzKQorICAgICAgICB0ZXN0
Y2FzZS5leHRlbmQoc2VsZi5ub2RlcykKICAgICAgICAgcmV0dXJuIHRlc3RjYXNlCiAKLSAgICBk
ZWYgX2FkZF9zaW1wbGUoc2VsZiwga2luZCwgbWVzc2FnZSwgZGF0YT1Ob25lKToKLSAgICAgICAg
ZGF0YSA9IGJpbl94bWxfZXNjYXBlKGRhdGEpCi0gICAgICAgIG5vZGUgPSBraW5kKGRhdGEsIG1l
c3NhZ2U9bWVzc2FnZSkKKyAgICBkZWYgX2FkZF9zaW1wbGUoc2VsZiwgdGFnOiBzdHIsIG1lc3Nh
Z2U6IHN0ciwgZGF0YTogT3B0aW9uYWxbc3RyXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIG5v
ZGUgPSBFVC5FbGVtZW50KHRhZywgbWVzc2FnZT1tZXNzYWdlKQorICAgICAgICBub2RlLnRleHQg
PSBiaW5feG1sX2VzY2FwZShkYXRhKQogICAgICAgICBzZWxmLmFwcGVuZChub2RlKQogCi0gICAg
ZGVmIHdyaXRlX2NhcHR1cmVkX291dHB1dChzZWxmLCByZXBvcnQpOgorICAgIGRlZiB3cml0ZV9j
YXB0dXJlZF9vdXRwdXQoc2VsZiwgcmVwb3J0OiBUZXN0UmVwb3J0KSAtPiBOb25lOgorICAgICAg
ICBpZiBub3Qgc2VsZi54bWwubG9nX3Bhc3NpbmdfdGVzdHMgYW5kIHJlcG9ydC5wYXNzZWQ6Cisg
ICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBjb250ZW50X291dCA9IHJlcG9ydC5jYXBzdGRv
dXQKICAgICAgICAgY29udGVudF9sb2cgPSByZXBvcnQuY2FwbG9nCiAgICAgICAgIGNvbnRlbnRf
ZXJyID0gcmVwb3J0LmNhcHN0ZGVycgotCi0gICAgICAgIGlmIGNvbnRlbnRfbG9nIG9yIGNvbnRl
bnRfb3V0OgotICAgICAgICAgICAgaWYgY29udGVudF9sb2cgYW5kIHNlbGYueG1sLmxvZ2dpbmcg
PT0gInN5c3RlbS1vdXQiOgotICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfb3V0OgotICAgICAg
ICAgICAgICAgICAgICAjIHN5bmNpbmcgc3Rkb3V0IGFuZCB0aGUgbG9nLW91dHB1dCBpcyBub3Qg
ZG9uZSB5ZXQuIEl0J3MKLSAgICAgICAgICAgICAgICAgICAgIyBwcm9iYWJseSBub3Qgd29ydGgg
dGhlIGVmZm9ydC4gVGhlcmVmb3JlLCBmaXJzdCB0aGUgY2FwdHVyZWQKLSAgICAgICAgICAgICAg
ICAgICAgIyBzdGRvdXQgaXMgc2hvd24gYW5kIHRoZW4gdGhlIGNhcHR1cmVkIGxvZ3MuCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnQgPSAiXG4iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBDYXB0dXJlZCBTdGRvdXQgIi5j
ZW50ZXIoODAsICItIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF9vdXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiBDYXB0dXJlZCBMb2cgIi5jZW50ZXIoODAsICItIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICBjb250ZW50ID0gY29udGVudF9sb2cKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgY29udGVudCA9IGNvbnRlbnRfb3V0Ci0KLSAgICAgICAgICAgIGlmIGNvbnRlbnQ6Ci0g
ICAgICAgICAgICAgICAgdGFnID0gZ2V0YXR0cihKdW5pdCwgInN5c3RlbS1vdXQiKQotICAgICAg
ICAgICAgICAgIHNlbGYuYXBwZW5kKHRhZyhiaW5feG1sX2VzY2FwZShjb250ZW50KSkpCi0KLSAg
ICAgICAgaWYgY29udGVudF9sb2cgb3IgY29udGVudF9lcnI6Ci0gICAgICAgICAgICBpZiBjb250
ZW50X2xvZyBhbmQgc2VsZi54bWwubG9nZ2luZyA9PSAic3lzdGVtLWVyciI6Ci0gICAgICAgICAg
ICAgICAgaWYgY29udGVudF9lcnI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSAiXG4i
LmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiBDYXB0dXJlZCBTdGRlcnIgIi5jZW50ZXIoODAsICItIiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGVudF9lcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBDYXB0dXJlZCBMb2cgIi5jZW50ZXIo
ODAsICItIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF9sb2csCi0gICAg
ICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudF9sb2cKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnRfZXJyCi0K
LSAgICAgICAgICAgIGlmIGNvbnRlbnQ6Ci0gICAgICAgICAgICAgICAgdGFnID0gZ2V0YXR0cihK
dW5pdCwgInN5c3RlbS1lcnIiKQotICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kKHRhZyhiaW5f
eG1sX2VzY2FwZShjb250ZW50KSkpCi0KLSAgICBkZWYgYXBwZW5kX3Bhc3Moc2VsZiwgcmVwb3J0
KToKKyAgICAgICAgaWYgc2VsZi54bWwubG9nZ2luZyA9PSAibm8iOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIGNvbnRlbnRfYWxsID0gIiIKKyAgICAgICAgaWYgc2VsZi54bWwubG9nZ2lu
ZyBpbiBbImxvZyIsICJhbGwiXToKKyAgICAgICAgICAgIGNvbnRlbnRfYWxsID0gc2VsZi5fcHJl
cGFyZV9jb250ZW50KGNvbnRlbnRfbG9nLCAiIENhcHR1cmVkIExvZyAiKQorICAgICAgICBpZiBz
ZWxmLnhtbC5sb2dnaW5nIGluIFsic3lzdGVtLW91dCIsICJvdXQtZXJyIiwgImFsbCJdOgorICAg
ICAgICAgICAgY29udGVudF9hbGwgKz0gc2VsZi5fcHJlcGFyZV9jb250ZW50KGNvbnRlbnRfb3V0
LCAiIENhcHR1cmVkIE91dCAiKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29udGVudChyZXBv
cnQsIGNvbnRlbnRfYWxsLCAic3lzdGVtLW91dCIpCisgICAgICAgICAgICBjb250ZW50X2FsbCA9
ICIiCisgICAgICAgIGlmIHNlbGYueG1sLmxvZ2dpbmcgaW4gWyJzeXN0ZW0tZXJyIiwgIm91dC1l
cnIiLCAiYWxsIl06CisgICAgICAgICAgICBjb250ZW50X2FsbCArPSBzZWxmLl9wcmVwYXJlX2Nv
bnRlbnQoY29udGVudF9lcnIsICIgQ2FwdHVyZWQgRXJyICIpCisgICAgICAgICAgICBzZWxmLl93
cml0ZV9jb250ZW50KHJlcG9ydCwgY29udGVudF9hbGwsICJzeXN0ZW0tZXJyIikKKyAgICAgICAg
ICAgIGNvbnRlbnRfYWxsID0gIiIKKyAgICAgICAgaWYgY29udGVudF9hbGw6CisgICAgICAgICAg
ICBzZWxmLl93cml0ZV9jb250ZW50KHJlcG9ydCwgY29udGVudF9hbGwsICJzeXN0ZW0tb3V0IikK
KworICAgIGRlZiBfcHJlcGFyZV9jb250ZW50KHNlbGYsIGNvbnRlbnQ6IHN0ciwgaGVhZGVyOiBz
dHIpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihbaGVhZGVyLmNlbnRlcig4MCwg
Ii0iKSwgY29udGVudCwgIiJdKQorCisgICAgZGVmIF93cml0ZV9jb250ZW50KHNlbGYsIHJlcG9y
dDogVGVzdFJlcG9ydCwgY29udGVudDogc3RyLCBqaGVhZGVyOiBzdHIpIC0+IE5vbmU6CisgICAg
ICAgIHRhZyA9IEVULkVsZW1lbnQoamhlYWRlcikKKyAgICAgICAgdGFnLnRleHQgPSBiaW5feG1s
X2VzY2FwZShjb250ZW50KQorICAgICAgICBzZWxmLmFwcGVuZCh0YWcpCisKKyAgICBkZWYgYXBw
ZW5kX3Bhc3Moc2VsZiwgcmVwb3J0OiBUZXN0UmVwb3J0KSAtPiBOb25lOgogICAgICAgICBzZWxm
LmFkZF9zdGF0cygicGFzc2VkIikKIAotICAgIGRlZiBhcHBlbmRfZmFpbHVyZShzZWxmLCByZXBv
cnQpOgorICAgIGRlZiBhcHBlbmRfZmFpbHVyZShzZWxmLCByZXBvcnQ6IFRlc3RSZXBvcnQpIC0+
IE5vbmU6CiAgICAgICAgICMgbXNnID0gc3RyKHJlcG9ydC5sb25ncmVwci5yZXBydHJhY2ViYWNr
LmV4dHJhbGluZSkKICAgICAgICAgaWYgaGFzYXR0cihyZXBvcnQsICJ3YXN4ZmFpbCIpOgotICAg
ICAgICAgICAgc2VsZi5fYWRkX3NpbXBsZShKdW5pdC5za2lwcGVkLCAieGZhaWwtbWFya2VkIHRl
c3QgcGFzc2VzIHVuZXhwZWN0ZWRseSIpCisgICAgICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKCJz
a2lwcGVkIiwgInhmYWlsLW1hcmtlZCB0ZXN0IHBhc3NlcyB1bmV4cGVjdGVkbHkiKQogICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgaWYgaGFzYXR0cihyZXBvcnQubG9uZ3JlcHIsICJyZXByY3Jh
c2giKToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gcmVwb3J0LmxvbmdyZXByLnJlcHJjcmFz
aC5tZXNzYWdlCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVwb3J0LmxvbmdyZXByLCAo
dW5pY29kZSwgc3RyKSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlcG9ydC5sb25ncmVw
cgorICAgICAgICAgICAgYXNzZXJ0IHJlcG9ydC5sb25ncmVwciBpcyBub3QgTm9uZQorICAgICAg
ICAgICAgcmVwcmNyYXNoID0gZ2V0YXR0cigKKyAgICAgICAgICAgICAgICByZXBvcnQubG9uZ3Jl
cHIsICJyZXByY3Jhc2giLCBOb25lCisgICAgICAgICAgICApICAjIHR5cGU6IE9wdGlvbmFsW1Jl
cHJGaWxlTG9jYXRpb25dCisgICAgICAgICAgICBpZiByZXByY3Jhc2ggaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlcHJjcmFzaC5tZXNzYWdlCiAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIocmVwb3J0LmxvbmdyZXByKQogICAg
ICAgICAgICAgbWVzc2FnZSA9IGJpbl94bWxfZXNjYXBlKG1lc3NhZ2UpCi0gICAgICAgICAgICBm
YWlsID0gSnVuaXQuZmFpbHVyZShtZXNzYWdlPW1lc3NhZ2UpCi0gICAgICAgICAgICBmYWlsLmFw
cGVuZChiaW5feG1sX2VzY2FwZShyZXBvcnQubG9uZ3JlcHIpKQotICAgICAgICAgICAgc2VsZi5h
cHBlbmQoZmFpbCkKKyAgICAgICAgICAgIHNlbGYuX2FkZF9zaW1wbGUoImZhaWx1cmUiLCBtZXNz
YWdlLCBzdHIocmVwb3J0LmxvbmdyZXByKSkKIAotICAgIGRlZiBhcHBlbmRfY29sbGVjdF9lcnJv
cihzZWxmLCByZXBvcnQpOgorICAgIGRlZiBhcHBlbmRfY29sbGVjdF9lcnJvcihzZWxmLCByZXBv
cnQ6IFRlc3RSZXBvcnQpIC0+IE5vbmU6CiAgICAgICAgICMgbXNnID0gc3RyKHJlcG9ydC5sb25n
cmVwci5yZXBydHJhY2ViYWNrLmV4dHJhbGluZSkKLSAgICAgICAgc2VsZi5hcHBlbmQoCi0gICAg
ICAgICAgICBKdW5pdC5lcnJvcihiaW5feG1sX2VzY2FwZShyZXBvcnQubG9uZ3JlcHIpLCBtZXNz
YWdlPSJjb2xsZWN0aW9uIGZhaWx1cmUiKQotICAgICAgICApCi0KLSAgICBkZWYgYXBwZW5kX2Nv
bGxlY3Rfc2tpcHBlZChzZWxmLCByZXBvcnQpOgotICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKEp1
bml0LnNraXBwZWQsICJjb2xsZWN0aW9uIHNraXBwZWQiLCByZXBvcnQubG9uZ3JlcHIpCisgICAg
ICAgIGFzc2VydCByZXBvcnQubG9uZ3JlcHIgaXMgbm90IE5vbmUKKyAgICAgICAgc2VsZi5fYWRk
X3NpbXBsZSgiZXJyb3IiLCAiY29sbGVjdGlvbiBmYWlsdXJlIiwgc3RyKHJlcG9ydC5sb25ncmVw
cikpCisKKyAgICBkZWYgYXBwZW5kX2NvbGxlY3Rfc2tpcHBlZChzZWxmLCByZXBvcnQ6IFRlc3RS
ZXBvcnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2FkZF9zaW1wbGUoInNraXBwZWQiLCAiY29s
bGVjdGlvbiBza2lwcGVkIiwgc3RyKHJlcG9ydC5sb25ncmVwcikpCisKKyAgICBkZWYgYXBwZW5k
X2Vycm9yKHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0
IHJlcG9ydC5sb25ncmVwciBpcyBub3QgTm9uZQorICAgICAgICByZXByY3Jhc2ggPSBnZXRhdHRy
KAorICAgICAgICAgICAgcmVwb3J0LmxvbmdyZXByLCAicmVwcmNyYXNoIiwgTm9uZQorICAgICAg
ICApICAjIHR5cGU6IE9wdGlvbmFsW1JlcHJGaWxlTG9jYXRpb25dCisgICAgICAgIGlmIHJlcHJj
cmFzaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlYXNvbiA9IHJlcHJjcmFzaC5tZXNzYWdl
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWFzb24gPSBzdHIocmVwb3J0LmxvbmdyZXBy
KQogCi0gICAgZGVmIGFwcGVuZF9lcnJvcihzZWxmLCByZXBvcnQpOgotICAgICAgICBpZiBnZXRh
dHRyKHJlcG9ydCwgIndoZW4iLCBOb25lKSA9PSAidGVhcmRvd24iOgotICAgICAgICAgICAgbXNn
ID0gInRlc3QgdGVhcmRvd24gZmFpbHVyZSIKKyAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gInRl
YXJkb3duIjoKKyAgICAgICAgICAgIG1zZyA9ICdmYWlsZWQgb24gdGVhcmRvd24gd2l0aCAie30i
Jy5mb3JtYXQocmVhc29uKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gInRlc3Qg
c2V0dXAgZmFpbHVyZSIKLSAgICAgICAgc2VsZi5fYWRkX3NpbXBsZShKdW5pdC5lcnJvciwgbXNn
LCByZXBvcnQubG9uZ3JlcHIpCisgICAgICAgICAgICBtc2cgPSAnZmFpbGVkIG9uIHNldHVwIHdp
dGggInt9IicuZm9ybWF0KHJlYXNvbikKKyAgICAgICAgc2VsZi5fYWRkX3NpbXBsZSgiZXJyb3Ii
LCBtc2csIHN0cihyZXBvcnQubG9uZ3JlcHIpKQogCi0gICAgZGVmIGFwcGVuZF9za2lwcGVkKHNl
bGYsIHJlcG9ydCk6CisgICAgZGVmIGFwcGVuZF9za2lwcGVkKHNlbGYsIHJlcG9ydDogVGVzdFJl
cG9ydCkgLT4gTm9uZToKICAgICAgICAgaWYgaGFzYXR0cihyZXBvcnQsICJ3YXN4ZmFpbCIpOgot
ICAgICAgICAgICAgc2VsZi5fYWRkX3NpbXBsZShKdW5pdC5za2lwcGVkLCAiZXhwZWN0ZWQgdGVz
dCBmYWlsdXJlIiwgcmVwb3J0Lndhc3hmYWlsKQorICAgICAgICAgICAgeGZhaWxyZWFzb24gPSBy
ZXBvcnQud2FzeGZhaWwKKyAgICAgICAgICAgIGlmIHhmYWlscmVhc29uLnN0YXJ0c3dpdGgoInJl
YXNvbjogIik6CisgICAgICAgICAgICAgICAgeGZhaWxyZWFzb24gPSB4ZmFpbHJlYXNvbls4Ol0K
KyAgICAgICAgICAgIHhmYWlscmVhc29uID0gYmluX3htbF9lc2NhcGUoeGZhaWxyZWFzb24pCisg
ICAgICAgICAgICBza2lwcGVkID0gRVQuRWxlbWVudCgic2tpcHBlZCIsIHR5cGU9InB5dGVzdC54
ZmFpbCIsIG1lc3NhZ2U9eGZhaWxyZWFzb24pCisgICAgICAgICAgICBzZWxmLmFwcGVuZChza2lw
cGVkKQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVwb3J0
LmxvbmdyZXByLCB0dXBsZSkKICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8sIHNraXByZWFz
b24gPSByZXBvcnQubG9uZ3JlcHIKICAgICAgICAgICAgIGlmIHNraXByZWFzb24uc3RhcnRzd2l0
aCgiU2tpcHBlZDogIik6Ci0gICAgICAgICAgICAgICAgc2tpcHJlYXNvbiA9IGJpbl94bWxfZXNj
YXBlKHNraXByZWFzb25bOTpdKQotICAgICAgICAgICAgc2VsZi5hcHBlbmQoCi0gICAgICAgICAg
ICAgICAgSnVuaXQuc2tpcHBlZCgKLSAgICAgICAgICAgICAgICAgICAgIiVzOiVzOiAlcyIgJSAo
ZmlsZW5hbWUsIGxpbmVubywgc2tpcHJlYXNvbiksCi0gICAgICAgICAgICAgICAgICAgIHR5cGU9
InB5dGVzdC5za2lwIiwKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1za2lwcmVhc29uLAot
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBza2lwcmVh
c29uID0gc2tpcHJlYXNvbls5Ol0KKyAgICAgICAgICAgIGRldGFpbHMgPSAie306e306IHt9Ii5m
b3JtYXQoZmlsZW5hbWUsIGxpbmVubywgc2tpcHJlYXNvbikKKworICAgICAgICAgICAgc2tpcHBl
ZCA9IEVULkVsZW1lbnQoInNraXBwZWQiLCB0eXBlPSJweXRlc3Quc2tpcCIsIG1lc3NhZ2U9c2tp
cHJlYXNvbikKKyAgICAgICAgICAgIHNraXBwZWQudGV4dCA9IGJpbl94bWxfZXNjYXBlKGRldGFp
bHMpCisgICAgICAgICAgICBzZWxmLmFwcGVuZChza2lwcGVkKQogICAgICAgICAgICAgc2VsZi53
cml0ZV9jYXB0dXJlZF9vdXRwdXQocmVwb3J0KQogCi0gICAgZGVmIGZpbmFsaXplKHNlbGYpOgot
ICAgICAgICBkYXRhID0gc2VsZi50b194bWwoKS51bmljb2RlKGluZGVudD0wKQorICAgIGRlZiBm
aW5hbGl6ZShzZWxmKSAtPiBOb25lOgorICAgICAgICBkYXRhID0gc2VsZi50b194bWwoKQogICAg
ICAgICBzZWxmLl9fZGljdF9fLmNsZWFyKCkKLSAgICAgICAgc2VsZi50b194bWwgPSBsYW1iZGE6
IHB5LnhtbC5yYXcoZGF0YSkKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjdWFzZSBteXB5IGRv
ZXNuJ3QgbGlrZSBvdmVycmlkaW5nIGEgbWV0aG9kLgorICAgICAgICAjIEFsc28gdGhlIHJldHVy
biB2YWx1ZSBkb2Vzbid0IG1hdGNoLi4uCisgICAgICAgIHNlbGYudG9feG1sID0gbGFtYmRhOiBk
YXRhICAjIHR5cGU6IGlnbm9yZVthc3NpZ25tZW50XQorCisKK2RlZiBfd2Fybl9pbmNvbXBhdGli
aWxpdHlfd2l0aF94dW5pdDIoCisgICAgcmVxdWVzdDogRml4dHVyZVJlcXVlc3QsIGZpeHR1cmVf
bmFtZTogc3RyCispIC0+IE5vbmU6CisgICAgIiIiRW1pdCBhIFB5dGVzdFdhcm5pbmcgYWJvdXQg
dGhlIGdpdmVuIGZpeHR1cmUgYmVpbmcgaW5jb21wYXRpYmxlIHdpdGggbmV3ZXIgeHVuaXQgcmV2
aXNpb25zLiIiIgorICAgIGZyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RX
YXJuaW5nCisKKyAgICB4bWwgPSByZXF1ZXN0LmNvbmZpZy5fc3RvcmUuZ2V0KHhtbF9rZXksIE5v
bmUpCisgICAgaWYgeG1sIGlzIG5vdCBOb25lIGFuZCB4bWwuZmFtaWx5IG5vdCBpbiAoInh1bml0
MSIsICJsZWdhY3kiKToKKyAgICAgICAgcmVxdWVzdC5ub2RlLndhcm4oCisgICAgICAgICAgICBQ
eXRlc3RXYXJuaW5nKAorICAgICAgICAgICAgICAgICJ7Zml4dHVyZV9uYW1lfSBpcyBpbmNvbXBh
dGlibGUgd2l0aCBqdW5pdF9mYW1pbHkgJ3tmYW1pbHl9JyAodXNlICdsZWdhY3knIG9yICd4dW5p
dDEnKSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBmaXh0dXJlX25hbWU9Zml4dHVyZV9u
YW1lLCBmYW1pbHk9eG1sLmZhbWlseQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK
KyAgICAgICAgKQogCiAKIEBweXRlc3QuZml4dHVyZQotZGVmIHJlY29yZF9wcm9wZXJ0eShyZXF1
ZXN0KToKLSAgICAiIiJBZGQgYW4gZXh0cmEgcHJvcGVydGllcyB0aGUgY2FsbGluZyB0ZXN0Lgor
ZGVmIHJlY29yZF9wcm9wZXJ0eShyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCkgLT4gQ2FsbGFibGVb
W3N0ciwgb2JqZWN0XSwgTm9uZV06CisgICAgIiIiQWRkIGV4dHJhIHByb3BlcnRpZXMgdG8gdGhl
IGNhbGxpbmcgdGVzdC4KKwogICAgIFVzZXIgcHJvcGVydGllcyBiZWNvbWUgcGFydCBvZiB0aGUg
dGVzdCByZXBvcnQgYW5kIGFyZSBhdmFpbGFibGUgdG8gdGhlCiAgICAgY29uZmlndXJlZCByZXBv
cnRlcnMsIGxpa2UgSlVuaXQgWE1MLgotICAgIFRoZSBmaXh0dXJlIGlzIGNhbGxhYmxlIHdpdGgg
YGAobmFtZSwgdmFsdWUpYGAsIHdpdGggdmFsdWUgYmVpbmcgYXV0b21hdGljYWxseQotICAgIHht
bC1lbmNvZGVkLgorCisgICAgVGhlIGZpeHR1cmUgaXMgY2FsbGFibGUgd2l0aCBgYG5hbWUsIHZh
bHVlYGAuIFRoZSB2YWx1ZSBpcyBhdXRvbWF0aWNhbGx5CisgICAgWE1MLWVuY29kZWQuCiAKICAg
ICBFeGFtcGxlOjoKIAogICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihyZWNvcmRfcHJvcGVydHkp
OgogICAgICAgICAgICAgcmVjb3JkX3Byb3BlcnR5KCJleGFtcGxlX2tleSIsIDEpCiAgICAgIiIi
CisgICAgX3dhcm5faW5jb21wYXRpYmlsaXR5X3dpdGhfeHVuaXQyKHJlcXVlc3QsICJyZWNvcmRf
cHJvcGVydHkiKQogCi0gICAgZGVmIGFwcGVuZF9wcm9wZXJ0eShuYW1lLCB2YWx1ZSk6CisgICAg
ZGVmIGFwcGVuZF9wcm9wZXJ0eShuYW1lOiBzdHIsIHZhbHVlOiBvYmplY3QpIC0+IE5vbmU6CiAg
ICAgICAgIHJlcXVlc3Qubm9kZS51c2VyX3Byb3BlcnRpZXMuYXBwZW5kKChuYW1lLCB2YWx1ZSkp
CiAKICAgICByZXR1cm4gYXBwZW5kX3Byb3BlcnR5CiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYg
cmVjb3JkX3htbF9wcm9wZXJ0eShyZWNvcmRfcHJvcGVydHkpOgotICAgICIiIihEZXByZWNhdGVk
KSB1c2UgcmVjb3JkX3Byb3BlcnR5LiIiIgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIGZyb20g
X3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRlZAotCi0gICAgd2FybmluZ3Mud2FybihkZXByZWNhdGVk
LlJFQ09SRF9YTUxfUFJPUEVSVFksIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQot
Ci0gICAgcmV0dXJuIHJlY29yZF9wcm9wZXJ0eQotCi0KLUBweXRlc3QuZml4dHVyZQotZGVmIHJl
Y29yZF94bWxfYXR0cmlidXRlKHJlcXVlc3QpOgorZGVmIHJlY29yZF94bWxfYXR0cmlidXRlKHJl
cXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBDYWxsYWJsZVtbc3RyLCBvYmplY3RdLCBOb25lXToK
ICAgICAiIiJBZGQgZXh0cmEgeG1sIGF0dHJpYnV0ZXMgdG8gdGhlIHRhZyBmb3IgdGhlIGNhbGxp
bmcgdGVzdC4KLSAgICBUaGUgZml4dHVyZSBpcyBjYWxsYWJsZSB3aXRoIGBgKG5hbWUsIHZhbHVl
KWBgLCB3aXRoIHZhbHVlIGJlaW5nCi0gICAgYXV0b21hdGljYWxseSB4bWwtZW5jb2RlZAorCisg
ICAgVGhlIGZpeHR1cmUgaXMgY2FsbGFibGUgd2l0aCBgYG5hbWUsIHZhbHVlYGAuIFRoZSB2YWx1
ZSBpcworICAgIGF1dG9tYXRpY2FsbHkgWE1MLWVuY29kZWQuCiAgICAgIiIiCisgICAgZnJvbSBf
cHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdEV4cGVyaW1lbnRhbEFwaVdhcm5pbmcK
KwogICAgIHJlcXVlc3Qubm9kZS53YXJuKAotICAgICAgICBjb2RlPSJDMyIsIG1lc3NhZ2U9InJl
Y29yZF94bWxfYXR0cmlidXRlIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIgorICAgICAgICBQ
eXRlc3RFeHBlcmltZW50YWxBcGlXYXJuaW5nKCJyZWNvcmRfeG1sX2F0dHJpYnV0ZSBpcyBhbiBl
eHBlcmltZW50YWwgZmVhdHVyZSIpCiAgICAgKQotICAgIHhtbCA9IGdldGF0dHIocmVxdWVzdC5j
b25maWcsICJfeG1sIiwgTm9uZSkKKworICAgIF93YXJuX2luY29tcGF0aWJpbGl0eV93aXRoX3h1
bml0MihyZXF1ZXN0LCAicmVjb3JkX3htbF9hdHRyaWJ1dGUiKQorCisgICAgIyBEZWNsYXJlIG5v
b3AKKyAgICBkZWYgYWRkX2F0dHJfbm9vcChuYW1lOiBzdHIsIHZhbHVlOiBvYmplY3QpIC0+IE5v
bmU6CisgICAgICAgIHBhc3MKKworICAgIGF0dHJfZnVuYyA9IGFkZF9hdHRyX25vb3AKKworICAg
IHhtbCA9IHJlcXVlc3QuY29uZmlnLl9zdG9yZS5nZXQoeG1sX2tleSwgTm9uZSkKICAgICBpZiB4
bWwgaXMgbm90IE5vbmU6CiAgICAgICAgIG5vZGVfcmVwb3J0ZXIgPSB4bWwubm9kZV9yZXBvcnRl
cihyZXF1ZXN0Lm5vZGUubm9kZWlkKQotICAgICAgICByZXR1cm4gbm9kZV9yZXBvcnRlci5hZGRf
YXR0cmlidXRlCi0gICAgZWxzZToKKyAgICAgICAgYXR0cl9mdW5jID0gbm9kZV9yZXBvcnRlci5h
ZGRfYXR0cmlidXRlCisKKyAgICByZXR1cm4gYXR0cl9mdW5jCiAKLSAgICAgICAgZGVmIGFkZF9h
dHRyX25vb3AobmFtZSwgdmFsdWUpOgotICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIHJldHVy
biBhZGRfYXR0cl9ub29wCitkZWYgX2NoZWNrX3JlY29yZF9wYXJhbV90eXBlKHBhcmFtOiBzdHIs
IHY6IHN0cikgLT4gTm9uZToKKyAgICAiIiJVc2VkIGJ5IHJlY29yZF90ZXN0c3VpdGVfcHJvcGVy
dHkgdG8gY2hlY2sgdGhhdCB0aGUgZ2l2ZW4gcGFyYW1ldGVyIG5hbWUgaXMgb2YgdGhlIHByb3Bl
cgorICAgIHR5cGUuIiIiCisgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgaWYgbm90
IGlzaW5zdGFuY2Uodiwgc3RyKToKKyAgICAgICAgbXNnID0gIntwYXJhbX0gcGFyYW1ldGVyIG5l
ZWRzIHRvIGJlIGEgc3RyaW5nLCBidXQge2d9IGdpdmVuIiAgIyB0eXBlOiBpZ25vcmVbdW5yZWFj
aGFibGVdCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cuZm9ybWF0KHBhcmFtPXBhcmFtLCBn
PXR5cGUodikuX19uYW1lX18pKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIp
CitkZWYgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eShyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCkg
LT4gQ2FsbGFibGVbW3N0ciwgb2JqZWN0XSwgTm9uZV06CisgICAgIiIiUmVjb3JkIGEgbmV3IGBg
PHByb3BlcnR5PmBgIHRhZyBhcyBjaGlsZCBvZiB0aGUgcm9vdCBgYDx0ZXN0c3VpdGU+YGAuCisK
KyAgICBUaGlzIGlzIHN1aXRhYmxlIHRvIHdyaXRpbmcgZ2xvYmFsIGluZm9ybWF0aW9uIHJlZ2Fy
ZGluZyB0aGUgZW50aXJlIHRlc3QKKyAgICBzdWl0ZSwgYW5kIGlzIGNvbXBhdGlibGUgd2l0aCBg
YHh1bml0MmBgIEpVbml0IGZhbWlseS4KKworICAgIFRoaXMgaXMgYSBgYHNlc3Npb25gYC1zY29w
ZWQgZml4dHVyZSB3aGljaCBpcyBjYWxsZWQgd2l0aCBgYChuYW1lLCB2YWx1ZSlgYC4gRXhhbXBs
ZToKKworICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICBkZWYgdGVzdF9mb28o
cmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSk6CisgICAgICAgICAgICByZWNvcmRfdGVzdHN1aXRl
X3Byb3BlcnR5KCJBUkNIIiwgIlBQQyIpCisgICAgICAgICAgICByZWNvcmRfdGVzdHN1aXRlX3By
b3BlcnR5KCJTVE9SQUdFX1RZUEUiLCAiQ0VQSCIpCisKKyAgICBgYG5hbWVgYCBtdXN0IGJlIGEg
c3RyaW5nLCBgYHZhbHVlYGAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgYW5kIHByb3Bl
cmx5IHhtbC1lc2NhcGVkLgorCisgICAgLi4gd2FybmluZzo6CisKKyAgICAgICAgQ3VycmVudGx5
IHRoaXMgZml4dHVyZSAqKmRvZXMgbm90IHdvcmsqKiB3aXRoIHRoZQorICAgICAgICBgcHl0ZXN0
LXhkaXN0IDxodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QteGRpc3Q+YF9fIHBs
dWdpbi4gU2VlIGlzc3VlCisgICAgICAgIGAjNzc2NyA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGVz
dC1kZXYvcHl0ZXN0L2lzc3Vlcy83NzY3PmBfXyBmb3IgZGV0YWlscy4KKyAgICAiIiIKIAorICAg
IF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIp
OgorICAgIGRlZiByZWNvcmRfZnVuYyhuYW1lOiBzdHIsIHZhbHVlOiBvYmplY3QpIC0+IE5vbmU6
CisgICAgICAgICIiIk5vLW9wIGZ1bmN0aW9uIGluIGNhc2UgLS1qdW5pdHhtbCB3YXMgbm90IHBh
c3NlZCBpbiB0aGUgY29tbWFuZC1saW5lLiIiIgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9
IFRydWUKKyAgICAgICAgX2NoZWNrX3JlY29yZF9wYXJhbV90eXBlKCJuYW1lIiwgbmFtZSkKKwor
ICAgIHhtbCA9IHJlcXVlc3QuY29uZmlnLl9zdG9yZS5nZXQoeG1sX2tleSwgTm9uZSkKKyAgICBp
ZiB4bWwgaXMgbm90IE5vbmU6CisgICAgICAgIHJlY29yZF9mdW5jID0geG1sLmFkZF9nbG9iYWxf
cHJvcGVydHkgICMgbm9xYQorICAgIHJldHVybiByZWNvcmRfZnVuYworCisKK2RlZiBweXRlc3Rf
YWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAgIGdyb3VwID0gcGFyc2VyLmdl
dGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmciKQogICAgIGdyb3VwLmFkZG9wdGlvbigKICAgICAg
ICAgIi0tanVuaXR4bWwiLApAQCAtMzE3LDc5ICs0MDIsMTE5IEBAIGRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6CiAgICAgcGFyc2VyLmFkZGluaSgKICAgICAgICAgImp1bml0X2xvZ2dpbmci
LAogICAgICAgICAiV3JpdGUgY2FwdHVyZWQgbG9nIG1lc3NhZ2VzIHRvIEpVbml0IHJlcG9ydDog
IgotICAgICAgICAib25lIG9mIG5vfHN5c3RlbS1vdXR8c3lzdGVtLWVyciIsCisgICAgICAgICJv
bmUgb2Ygbm98bG9nfHN5c3RlbS1vdXR8c3lzdGVtLWVycnxvdXQtZXJyfGFsbCIsCiAgICAgICAg
IGRlZmF1bHQ9Im5vIiwKLSAgICApICAjIGNob2ljZXM9WydubycsICdzdGRvdXQnLCAnc3RkZXJy
J10pCisgICAgKQorICAgIHBhcnNlci5hZGRpbmkoCisgICAgICAgICJqdW5pdF9sb2dfcGFzc2lu
Z190ZXN0cyIsCisgICAgICAgICJDYXB0dXJlIGxvZyBpbmZvcm1hdGlvbiBmb3IgcGFzc2luZyB0
ZXN0cyB0byBKVW5pdCByZXBvcnQ6ICIsCisgICAgICAgIHR5cGU9ImJvb2wiLAorICAgICAgICBk
ZWZhdWx0PVRydWUsCisgICAgKQorICAgIHBhcnNlci5hZGRpbmkoCisgICAgICAgICJqdW5pdF9k
dXJhdGlvbl9yZXBvcnQiLAorICAgICAgICAiRHVyYXRpb24gdGltZSB0byByZXBvcnQ6IG9uZSBv
ZiB0b3RhbHxjYWxsIiwKKyAgICAgICAgZGVmYXVsdD0idG90YWwiLAorICAgICkgICMgY2hvaWNl
cz1bJ3RvdGFsJywgJ2NhbGwnXSkKKyAgICBwYXJzZXIuYWRkaW5pKAorICAgICAgICAianVuaXRf
ZmFtaWx5IiwKKyAgICAgICAgIkVtaXQgWE1MIGZvciBzY2hlbWE6IG9uZSBvZiBsZWdhY3l8eHVu
aXQxfHh1bml0MiIsCisgICAgICAgIGRlZmF1bHQ9Inh1bml0MiIsCisgICAgKQogCiAKLWRlZiBw
eXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWc6IENv
bmZpZykgLT4gTm9uZToKICAgICB4bWxwYXRoID0gY29uZmlnLm9wdGlvbi54bWxwYXRoCi0gICAg
IyBwcmV2ZW50IG9wZW5pbmcgeG1sbG9nIG9uIHNsYXZlIG5vZGVzICh4ZGlzdCkKLSAgICBpZiB4
bWxwYXRoIGFuZCBub3QgaGFzYXR0cihjb25maWcsICJzbGF2ZWlucHV0Iik6Ci0gICAgICAgIGNv
bmZpZy5feG1sID0gTG9nWE1MKAorICAgICMgUHJldmVudCBvcGVuaW5nIHhtbGxvZyBvbiB3b3Jr
ZXIgbm9kZXMgKHhkaXN0KS4KKyAgICBpZiB4bWxwYXRoIGFuZCBub3QgaGFzYXR0cihjb25maWcs
ICJ3b3JrZXJpbnB1dCIpOgorICAgICAgICBqdW5pdF9mYW1pbHkgPSBjb25maWcuZ2V0aW5pKCJq
dW5pdF9mYW1pbHkiKQorICAgICAgICBjb25maWcuX3N0b3JlW3htbF9rZXldID0gTG9nWE1MKAog
ICAgICAgICAgICAgeG1scGF0aCwKICAgICAgICAgICAgIGNvbmZpZy5vcHRpb24uanVuaXRwcmVm
aXgsCiAgICAgICAgICAgICBjb25maWcuZ2V0aW5pKCJqdW5pdF9zdWl0ZV9uYW1lIiksCiAgICAg
ICAgICAgICBjb25maWcuZ2V0aW5pKCJqdW5pdF9sb2dnaW5nIiksCisgICAgICAgICAgICBjb25m
aWcuZ2V0aW5pKCJqdW5pdF9kdXJhdGlvbl9yZXBvcnQiKSwKKyAgICAgICAgICAgIGp1bml0X2Zh
bWlseSwKKyAgICAgICAgICAgIGNvbmZpZy5nZXRpbmkoImp1bml0X2xvZ19wYXNzaW5nX3Rlc3Rz
IiksCiAgICAgICAgICkKLSAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoY29u
ZmlnLl94bWwpCisgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKGNvbmZpZy5f
c3RvcmVbeG1sX2tleV0pCiAKIAotZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShjb25maWcpOgotICAg
IHhtbCA9IGdldGF0dHIoY29uZmlnLCAiX3htbCIsIE5vbmUpCitkZWYgcHl0ZXN0X3VuY29uZmln
dXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgorICAgIHhtbCA9IGNvbmZpZy5fc3RvcmUuZ2V0
KHhtbF9rZXksIE5vbmUpCiAgICAgaWYgeG1sOgotICAgICAgICBkZWwgY29uZmlnLl94bWwKKyAg
ICAgICAgZGVsIGNvbmZpZy5fc3RvcmVbeG1sX2tleV0KICAgICAgICAgY29uZmlnLnBsdWdpbm1h
bmFnZXIudW5yZWdpc3Rlcih4bWwpCiAKIAotZGVmIG1hbmdsZV90ZXN0X2FkZHJlc3MoYWRkcmVz
cyk6CitkZWYgbWFuZ2xlX3Rlc3RfYWRkcmVzcyhhZGRyZXNzOiBzdHIpIC0+IExpc3Rbc3RyXToK
ICAgICBwYXRoLCBwb3NzaWJsZV9vcGVuX2JyYWNrZXQsIHBhcmFtcyA9IGFkZHJlc3MucGFydGl0
aW9uKCJbIikKICAgICBuYW1lcyA9IHBhdGguc3BsaXQoIjo6IikKICAgICB0cnk6CiAgICAgICAg
IG5hbWVzLnJlbW92ZSgiKCkiKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNz
Ci0gICAgIyBjb252ZXJ0IGZpbGUgcGF0aCB0byBkb3R0ZWQgcGF0aAorICAgICMgQ29udmVydCBm
aWxlIHBhdGggdG8gZG90dGVkIHBhdGguCiAgICAgbmFtZXNbMF0gPSBuYW1lc1swXS5yZXBsYWNl
KG5vZGVzLlNFUCwgIi4iKQotICAgIG5hbWVzWzBdID0gX3B5X2V4dF9yZS5zdWIoIiIsIG5hbWVz
WzBdKQotICAgICMgcHV0IGFueSBwYXJhbXMgYmFjaworICAgIG5hbWVzWzBdID0gcmUuc3ViKHIi
XC5weSQiLCAiIiwgbmFtZXNbMF0pCisgICAgIyBQdXQgYW55IHBhcmFtcyBiYWNrLgogICAgIG5h
bWVzWy0xXSArPSBwb3NzaWJsZV9vcGVuX2JyYWNrZXQgKyBwYXJhbXMKICAgICByZXR1cm4gbmFt
ZXMKIAogCi1jbGFzcyBMb2dYTUwob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2dmaWxlLCBwcmVmaXgsIHN1aXRlX25hbWU9InB5dGVzdCIsIGxvZ2dpbmc9Im5vIik6CitjbGFz
cyBMb2dYTUw6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBsb2dm
aWxlLAorICAgICAgICBwcmVmaXg6IE9wdGlvbmFsW3N0cl0sCisgICAgICAgIHN1aXRlX25hbWU6
IHN0ciA9ICJweXRlc3QiLAorICAgICAgICBsb2dnaW5nOiBzdHIgPSAibm8iLAorICAgICAgICBy
ZXBvcnRfZHVyYXRpb246IHN0ciA9ICJ0b3RhbCIsCisgICAgICAgIGZhbWlseT0ieHVuaXQxIiwK
KyAgICAgICAgbG9nX3Bhc3NpbmdfdGVzdHM6IGJvb2wgPSBUcnVlLAorICAgICkgLT4gTm9uZToK
ICAgICAgICAgbG9nZmlsZSA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmV4cGFuZHZhcnMo
bG9nZmlsZSkpCiAgICAgICAgIHNlbGYubG9nZmlsZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0
aC5hYnNwYXRoKGxvZ2ZpbGUpKQogICAgICAgICBzZWxmLnByZWZpeCA9IHByZWZpeAogICAgICAg
ICBzZWxmLnN1aXRlX25hbWUgPSBzdWl0ZV9uYW1lCiAgICAgICAgIHNlbGYubG9nZ2luZyA9IGxv
Z2dpbmcKLSAgICAgICAgc2VsZi5zdGF0cyA9IGRpY3QuZnJvbWtleXMoWyJlcnJvciIsICJwYXNz
ZWQiLCAiZmFpbHVyZSIsICJza2lwcGVkIl0sIDApCi0gICAgICAgIHNlbGYubm9kZV9yZXBvcnRl
cnMgPSB7fSAgIyBub2RlaWQgLT4gX05vZGVSZXBvcnRlcgotICAgICAgICBzZWxmLm5vZGVfcmVw
b3J0ZXJzX29yZGVyZWQgPSBbXQotICAgICAgICBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzID0gW10K
KyAgICAgICAgc2VsZi5sb2dfcGFzc2luZ190ZXN0cyA9IGxvZ19wYXNzaW5nX3Rlc3RzCisgICAg
ICAgIHNlbGYucmVwb3J0X2R1cmF0aW9uID0gcmVwb3J0X2R1cmF0aW9uCisgICAgICAgIHNlbGYu
ZmFtaWx5ID0gZmFtaWx5CisgICAgICAgIHNlbGYuc3RhdHMgPSBkaWN0LmZyb21rZXlzKAorICAg
ICAgICAgICAgWyJlcnJvciIsICJwYXNzZWQiLCAiZmFpbHVyZSIsICJza2lwcGVkIl0sIDAKKyAg
ICAgICAgKSAgIyB0eXBlOiBEaWN0W3N0ciwgaW50XQorICAgICAgICBzZWxmLm5vZGVfcmVwb3J0
ZXJzID0gKAorICAgICAgICAgICAge30KKyAgICAgICAgKSAgIyB0eXBlOiBEaWN0W1R1cGxlW1Vu
aW9uW3N0ciwgVGVzdFJlcG9ydF0sIG9iamVjdF0sIF9Ob2RlUmVwb3J0ZXJdCisgICAgICAgIHNl
bGYubm9kZV9yZXBvcnRlcnNfb3JkZXJlZCA9IFtdICAjIHR5cGU6IExpc3RbX05vZGVSZXBvcnRl
cl0KKyAgICAgICAgc2VsZi5nbG9iYWxfcHJvcGVydGllcyA9IFtdICAjIHR5cGU6IExpc3RbVHVw
bGVbc3RyLCBzdHJdXQorCiAgICAgICAgICMgTGlzdCBvZiByZXBvcnRzIHRoYXQgZmFpbGVkIG9u
IGNhbGwgYnV0IHRlYXJkb3duIGlzIHBlbmRpbmcuCi0gICAgICAgIHNlbGYub3Blbl9yZXBvcnRz
ID0gW10KKyAgICAgICAgc2VsZi5vcGVuX3JlcG9ydHMgPSBbXSAgIyB0eXBlOiBMaXN0W1Rlc3RS
ZXBvcnRdCiAgICAgICAgIHNlbGYuY250X2RvdWJsZV9mYWlsX3Rlc3RzID0gMAogCi0gICAgZGVm
IGZpbmFsaXplKHNlbGYsIHJlcG9ydCk6CisgICAgICAgICMgUmVwbGFjZXMgY29udmVuaWVuY2Ug
ZmFtaWx5IHdpdGggcmVhbCBmYW1pbHkuCisgICAgICAgIGlmIHNlbGYuZmFtaWx5ID09ICJsZWdh
Y3kiOgorICAgICAgICAgICAgc2VsZi5mYW1pbHkgPSAieHVuaXQxIgorCisgICAgZGVmIGZpbmFs
aXplKHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKICAgICAgICAgbm9kZWlkID0g
Z2V0YXR0cihyZXBvcnQsICJub2RlaWQiLCByZXBvcnQpCi0gICAgICAgICMgbG9jYWwgaGFjayB0
byBoYW5kbGUgeGRpc3QgcmVwb3J0IG9yZGVyCi0gICAgICAgIHNsYXZlbm9kZSA9IGdldGF0dHIo
cmVwb3J0LCAibm9kZSIsIE5vbmUpCi0gICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3JlcG9y
dGVycy5wb3AoKG5vZGVpZCwgc2xhdmVub2RlKSkKKyAgICAgICAgIyBMb2NhbCBoYWNrIHRvIGhh
bmRsZSB4ZGlzdCByZXBvcnQgb3JkZXIuCisgICAgICAgIHdvcmtlcm5vZGUgPSBnZXRhdHRyKHJl
cG9ydCwgIm5vZGUiLCBOb25lKQorICAgICAgICByZXBvcnRlciA9IHNlbGYubm9kZV9yZXBvcnRl
cnMucG9wKChub2RlaWQsIHdvcmtlcm5vZGUpKQogICAgICAgICBpZiByZXBvcnRlciBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgIHJlcG9ydGVyLmZpbmFsaXplKCkKIAotICAgIGRlZiBub2RlX3Jl
cG9ydGVyKHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIG5vZGVpZCA9IGdldGF0dHIocmVwb3J0LCAi
bm9kZWlkIiwgcmVwb3J0KQotICAgICAgICAjIGxvY2FsIGhhY2sgdG8gaGFuZGxlIHhkaXN0IHJl
cG9ydCBvcmRlcgotICAgICAgICBzbGF2ZW5vZGUgPSBnZXRhdHRyKHJlcG9ydCwgIm5vZGUiLCBO
b25lKQorICAgIGRlZiBub2RlX3JlcG9ydGVyKHNlbGYsIHJlcG9ydDogVW5pb25bVGVzdFJlcG9y
dCwgc3RyXSkgLT4gX05vZGVSZXBvcnRlcjoKKyAgICAgICAgbm9kZWlkID0gZ2V0YXR0cihyZXBv
cnQsICJub2RlaWQiLCByZXBvcnQpICAjIHR5cGU6IFVuaW9uW3N0ciwgVGVzdFJlcG9ydF0KKyAg
ICAgICAgIyBMb2NhbCBoYWNrIHRvIGhhbmRsZSB4ZGlzdCByZXBvcnQgb3JkZXIuCisgICAgICAg
IHdvcmtlcm5vZGUgPSBnZXRhdHRyKHJlcG9ydCwgIm5vZGUiLCBOb25lKQogCi0gICAgICAgIGtl
eSA9IG5vZGVpZCwgc2xhdmVub2RlCisgICAgICAgIGtleSA9IG5vZGVpZCwgd29ya2Vybm9kZQog
CiAgICAgICAgIGlmIGtleSBpbiBzZWxmLm5vZGVfcmVwb3J0ZXJzOgotICAgICAgICAgICAgIyBU
T0RPOiBicmVhc2tzIGZvciAtLWRpc3Q9ZWFjaAorICAgICAgICAgICAgIyBUT0RPOiBicmVha3Mg
Zm9yIC0tZGlzdD1lYWNoCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5ub2RlX3JlcG9ydGVyc1tr
ZXldCiAKICAgICAgICAgcmVwb3J0ZXIgPSBfTm9kZVJlcG9ydGVyKG5vZGVpZCwgc2VsZikKQEAg
LTM5OSwyMyArNTI0LDIzIEBAIGNsYXNzIExvZ1hNTChvYmplY3QpOgogCiAgICAgICAgIHJldHVy
biByZXBvcnRlcgogCi0gICAgZGVmIGFkZF9zdGF0cyhzZWxmLCBrZXkpOgorICAgIGRlZiBhZGRf
c3RhdHMoc2VsZiwga2V5OiBzdHIpIC0+IE5vbmU6CiAgICAgICAgIGlmIGtleSBpbiBzZWxmLnN0
YXRzOgogICAgICAgICAgICAgc2VsZi5zdGF0c1trZXldICs9IDEKIAotICAgIGRlZiBfb3BlbnRl
c3RjYXNlKHNlbGYsIHJlcG9ydCk6CisgICAgZGVmIF9vcGVudGVzdGNhc2Uoc2VsZiwgcmVwb3J0
OiBUZXN0UmVwb3J0KSAtPiBfTm9kZVJlcG9ydGVyOgogICAgICAgICByZXBvcnRlciA9IHNlbGYu
bm9kZV9yZXBvcnRlcihyZXBvcnQpCiAgICAgICAgIHJlcG9ydGVyLnJlY29yZF90ZXN0cmVwb3J0
KHJlcG9ydCkKICAgICAgICAgcmV0dXJuIHJlcG9ydGVyCiAKLSAgICBkZWYgcHl0ZXN0X3J1bnRl
c3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgICIiImhhbmRsZSBhIHNldHVwL2Nh
bGwvdGVhcmRvd24gcmVwb3J0LCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICB4
bWwgdGFncyBhcyBuZWNlc3NhcnkuCisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChz
ZWxmLCByZXBvcnQ6IFRlc3RSZXBvcnQpIC0+IE5vbmU6CisgICAgICAgICIiIkhhbmRsZSBhIHNl
dHVwL2NhbGwvdGVhcmRvd24gcmVwb3J0LCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZQorICAg
ICAgICBYTUwgdGFncyBhcyBuZWNlc3NhcnkuCiAKLSAgICAgICAgbm90ZTogZHVlIHRvIHBsdWdp
bnMgbGlrZSB4ZGlzdCwgdGhpcyBob29rIG1heSBiZSBjYWxsZWQgaW4gaW50ZXJsYWNlZAotICAg
ICAgICBvcmRlciB3aXRoIHJlcG9ydHMgZnJvbSBvdGhlciBub2Rlcy4gZm9yIGV4YW1wbGU6Cisg
ICAgICAgIE5vdGU6IGR1ZSB0byBwbHVnaW5zIGxpa2UgeGRpc3QsIHRoaXMgaG9vayBtYXkgYmUg
Y2FsbGVkIGluIGludGVybGFjZWQKKyAgICAgICAgb3JkZXIgd2l0aCByZXBvcnRzIGZyb20gb3Ro
ZXIgbm9kZXMuIEZvciBleGFtcGxlOgogCi0gICAgICAgIHVzdWFsIGNhbGwgb3JkZXI6CisgICAg
ICAgIFVzdWFsIGNhbGwgb3JkZXI6CiAgICAgICAgICAgICAtPiBzZXR1cCBub2RlMQogICAgICAg
ICAgICAgLT4gY2FsbCBub2RlMQogICAgICAgICAgICAgLT4gdGVhcmRvd24gbm9kZTEKQEAgLTQy
Myw3ICs1NDgsNyBAQCBjbGFzcyBMb2dYTUwob2JqZWN0KToKICAgICAgICAgICAgIC0+IGNhbGwg
bm9kZTIKICAgICAgICAgICAgIC0+IHRlYXJkb3duIG5vZGUyCiAKLSAgICAgICAgcG9zc2libGUg
Y2FsbCBvcmRlciBpbiB4ZGlzdDoKKyAgICAgICAgUG9zc2libGUgY2FsbCBvcmRlciBpbiB4ZGlz
dDoKICAgICAgICAgICAgIC0+IHNldHVwIG5vZGUxCiAgICAgICAgICAgICAtPiBjYWxsIG5vZGUx
CiAgICAgICAgICAgICAtPiBzZXR1cCBub2RlMgpAQCAtNDM4LDcgKzU2Myw3IEBAIGNsYXNzIExv
Z1hNTChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJlcG9ydGVyLmFwcGVuZF9wYXNzKHJlcG9y
dCkKICAgICAgICAgZWxpZiByZXBvcnQuZmFpbGVkOgogICAgICAgICAgICAgaWYgcmVwb3J0Lndo
ZW4gPT0gInRlYXJkb3duIjoKLSAgICAgICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgdmFycyBh
cmUgbmVlZGVkIHdoZW4geGRpc3QgcGx1Z2luIGlzIHVzZWQKKyAgICAgICAgICAgICAgICAjIFRo
ZSBmb2xsb3dpbmcgdmFycyBhcmUgbmVlZGVkIHdoZW4geGRpc3QgcGx1Z2luIGlzIHVzZWQuCiAg
ICAgICAgICAgICAgICAgcmVwb3J0X3dpZCA9IGdldGF0dHIocmVwb3J0LCAid29ya2VyX2lkIiwg
Tm9uZSkKICAgICAgICAgICAgICAgICByZXBvcnRfaWkgPSBnZXRhdHRyKHJlcG9ydCwgIml0ZW1f
aW5kZXgiLCBOb25lKQogICAgICAgICAgICAgICAgIGNsb3NlX3JlcG9ydCA9IG5leHQoCkBAIC00
NTYsMTMgKzU4MSwxNSBAQCBjbGFzcyBMb2dYTUwob2JqZWN0KToKICAgICAgICAgICAgICAgICBp
ZiBjbG9zZV9yZXBvcnQ6CiAgICAgICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBvcGVuIG5l
dyB0ZXN0Y2FzZSBpbiBjYXNlIHdlIGhhdmUgZmFpbHVyZSBpbgogICAgICAgICAgICAgICAgICAg
ICAjIGNhbGwgYW5kIGVycm9yIGluIHRlYXJkb3duIGluIG9yZGVyIHRvIGZvbGxvdyBqdW5pdAot
ICAgICAgICAgICAgICAgICAgICAjIHNjaGVtYQorICAgICAgICAgICAgICAgICAgICAjIHNjaGVt
YS4KICAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5hbGl6ZShjbG9zZV9yZXBvcnQpCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuY250X2RvdWJsZV9mYWlsX3Rlc3RzICs9IDEKICAgICAgICAg
ICAgIHJlcG9ydGVyID0gc2VsZi5fb3BlbnRlc3RjYXNlKHJlcG9ydCkKICAgICAgICAgICAgIGlm
IHJlcG9ydC53aGVuID09ICJjYWxsIjoKICAgICAgICAgICAgICAgICByZXBvcnRlci5hcHBlbmRf
ZmFpbHVyZShyZXBvcnQpCiAgICAgICAgICAgICAgICAgc2VsZi5vcGVuX3JlcG9ydHMuYXBwZW5k
KHJlcG9ydCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5sb2dfcGFzc2luZ190ZXN0czoK
KyAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIud3JpdGVfY2FwdHVyZWRfb3V0cHV0KHJlcG9y
dCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX2Vy
cm9yKHJlcG9ydCkKICAgICAgICAgZWxpZiByZXBvcnQuc2tpcHBlZDoKQEAgLTQ3NCw3ICs2MDEs
NyBAQCBjbGFzcyBMb2dYTUwob2JqZWN0KToKICAgICAgICAgICAgIHJlcG9ydGVyLndyaXRlX2Nh
cHR1cmVkX291dHB1dChyZXBvcnQpCiAKICAgICAgICAgICAgIGZvciBwcm9wbmFtZSwgcHJvcHZh
bHVlIGluIHJlcG9ydC51c2VyX3Byb3BlcnRpZXM6Ci0gICAgICAgICAgICAgICAgcmVwb3J0ZXIu
YWRkX3Byb3BlcnR5KHByb3BuYW1lLCBwcm9wdmFsdWUpCisgICAgICAgICAgICAgICAgcmVwb3J0
ZXIuYWRkX3Byb3BlcnR5KHByb3BuYW1lLCBzdHIocHJvcHZhbHVlKSkKIAogICAgICAgICAgICAg
c2VsZi5maW5hbGl6ZShyZXBvcnQpCiAgICAgICAgICAgICByZXBvcnRfd2lkID0gZ2V0YXR0cihy
ZXBvcnQsICJ3b3JrZXJfaWQiLCBOb25lKQpAQCAtNDk0LDE0ICs2MjEsMTQgQEAgY2xhc3MgTG9n
WE1MKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBjbG9zZV9yZXBvcnQ6CiAgICAgICAgICAgICAg
ICAgc2VsZi5vcGVuX3JlcG9ydHMucmVtb3ZlKGNsb3NlX3JlcG9ydCkKIAotICAgIGRlZiB1cGRh
dGVfdGVzdGNhc2VfZHVyYXRpb24oc2VsZiwgcmVwb3J0KToKLSAgICAgICAgIiIiYWNjdW11bGF0
ZXMgdG90YWwgZHVyYXRpb24gZm9yIG5vZGVpZCBmcm9tIGdpdmVuIHJlcG9ydCBhbmQgdXBkYXRl
cwotICAgICAgICB0aGUgSnVuaXQudGVzdGNhc2Ugd2l0aCB0aGUgbmV3IHRvdGFsIGlmIGFscmVh
ZHkgY3JlYXRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJlcG9ydGVyID0gc2VsZi5ub2RlX3Jl
cG9ydGVyKHJlcG9ydCkKLSAgICAgICAgcmVwb3J0ZXIuZHVyYXRpb24gKz0gZ2V0YXR0cihyZXBv
cnQsICJkdXJhdGlvbiIsIDAuMCkKKyAgICBkZWYgdXBkYXRlX3Rlc3RjYXNlX2R1cmF0aW9uKHNl
bGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKKyAgICAgICAgIiIiQWNjdW11bGF0ZSB0
b3RhbCBkdXJhdGlvbiBmb3Igbm9kZWlkIGZyb20gZ2l2ZW4gcmVwb3J0IGFuZCB1cGRhdGUKKyAg
ICAgICAgdGhlIEp1bml0LnRlc3RjYXNlIHdpdGggdGhlIG5ldyB0b3RhbCBpZiBhbHJlYWR5IGNy
ZWF0ZWQuIiIiCisgICAgICAgIGlmIHNlbGYucmVwb3J0X2R1cmF0aW9uID09ICJ0b3RhbCIgb3Ig
cmVwb3J0LndoZW4gPT0gc2VsZi5yZXBvcnRfZHVyYXRpb246CisgICAgICAgICAgICByZXBvcnRl
ciA9IHNlbGYubm9kZV9yZXBvcnRlcihyZXBvcnQpCisgICAgICAgICAgICByZXBvcnRlci5kdXJh
dGlvbiArPSBnZXRhdHRyKHJlcG9ydCwgImR1cmF0aW9uIiwgMC4wKQogCi0gICAgZGVmIHB5dGVz
dF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6CisgICAgZGVmIHB5dGVzdF9jb2xsZWN0cmVw
b3J0KHNlbGYsIHJlcG9ydDogVGVzdFJlcG9ydCkgLT4gTm9uZToKICAgICAgICAgaWYgbm90IHJl
cG9ydC5wYXNzZWQ6CiAgICAgICAgICAgICByZXBvcnRlciA9IHNlbGYuX29wZW50ZXN0Y2FzZShy
ZXBvcnQpCiAgICAgICAgICAgICBpZiByZXBvcnQuZmFpbGVkOgpAQCAtNTA5LDIwICs2MzYsMjAg
QEAgY2xhc3MgTG9nWE1MKG9iamVjdCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgIHJlcG9ydGVyLmFwcGVuZF9jb2xsZWN0X3NraXBwZWQocmVwb3J0KQogCi0gICAgZGVmIHB5
dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIpOgorICAgIGRlZiBweXRlc3RfaW50ZXJu
YWxlcnJvcihzZWxmLCBleGNyZXByOiBFeGNlcHRpb25SZXByKSAtPiBOb25lOgogICAgICAgICBy
ZXBvcnRlciA9IHNlbGYubm9kZV9yZXBvcnRlcigiaW50ZXJuYWwiKQogICAgICAgICByZXBvcnRl
ci5hdHRycy51cGRhdGUoY2xhc3NuYW1lPSJweXRlc3QiLCBuYW1lPSJpbnRlcm5hbCIpCi0gICAg
ICAgIHJlcG9ydGVyLl9hZGRfc2ltcGxlKEp1bml0LmVycm9yLCAiaW50ZXJuYWwgZXJyb3IiLCBl
eGNyZXByKQorICAgICAgICByZXBvcnRlci5fYWRkX3NpbXBsZSgiZXJyb3IiLCAiaW50ZXJuYWwg
ZXJyb3IiLCBzdHIoZXhjcmVwcikpCiAKLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxm
KToKLSAgICAgICAgc2VsZi5zdWl0ZV9zdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICBkZWYg
cHl0ZXN0X3Nlc3Npb25zdGFydChzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLnN1aXRlX3N0
YXJ0X3RpbWUgPSB0aW1pbmcudGltZSgpCiAKLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2go
c2VsZik6CisgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYpIC0+IE5vbmU6CiAgICAg
ICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHNlbGYubG9nZmls
ZSkpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcm5hbWUpOgogICAgICAgICAgICAg
b3MubWFrZWRpcnMoZGlybmFtZSkKICAgICAgICAgbG9nZmlsZSA9IG9wZW4oc2VsZi5sb2dmaWxl
LCAidyIsIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgICAgIHN1aXRlX3N0b3BfdGltZSA9IHRpbWUu
dGltZSgpCisgICAgICAgIHN1aXRlX3N0b3BfdGltZSA9IHRpbWluZy50aW1lKCkKICAgICAgICAg
c3VpdGVfdGltZV9kZWx0YSA9IHN1aXRlX3N0b3BfdGltZSAtIHNlbGYuc3VpdGVfc3RhcnRfdGlt
ZQogCiAgICAgICAgIG51bXRlc3RzID0gKApAQCAtNTM0LDM2ICs2NjEsNDAgQEAgY2xhc3MgTG9n
WE1MKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgbG9nZmlsZS53cml0ZSgnPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nKQogCi0gICAgICAgIGxvZ2ZpbGUud3JpdGUo
Ci0gICAgICAgICAgICBKdW5pdC50ZXN0c3VpdGUoCi0gICAgICAgICAgICAgICAgc2VsZi5fZ2V0
X2dsb2JhbF9wcm9wZXJ0aWVzX25vZGUoKSwKLSAgICAgICAgICAgICAgICBbeC50b194bWwoKSBm
b3IgeCBpbiBzZWxmLm5vZGVfcmVwb3J0ZXJzX29yZGVyZWRdLAotICAgICAgICAgICAgICAgIG5h
bWU9c2VsZi5zdWl0ZV9uYW1lLAotICAgICAgICAgICAgICAgIGVycm9ycz1zZWxmLnN0YXRzWyJl
cnJvciJdLAotICAgICAgICAgICAgICAgIGZhaWx1cmVzPXNlbGYuc3RhdHNbImZhaWx1cmUiXSwK
LSAgICAgICAgICAgICAgICBza2lwcz1zZWxmLnN0YXRzWyJza2lwcGVkIl0sCi0gICAgICAgICAg
ICAgICAgdGVzdHM9bnVtdGVzdHMsCi0gICAgICAgICAgICAgICAgdGltZT0iJS4zZiIgJSBzdWl0
ZV90aW1lX2RlbHRhLAotICAgICAgICAgICAgKS51bmljb2RlKAotICAgICAgICAgICAgICAgIGlu
ZGVudD0wCi0gICAgICAgICAgICApCisgICAgICAgIHN1aXRlX25vZGUgPSBFVC5FbGVtZW50KAor
ICAgICAgICAgICAgInRlc3RzdWl0ZSIsCisgICAgICAgICAgICBuYW1lPXNlbGYuc3VpdGVfbmFt
ZSwKKyAgICAgICAgICAgIGVycm9ycz1zdHIoc2VsZi5zdGF0c1siZXJyb3IiXSksCisgICAgICAg
ICAgICBmYWlsdXJlcz1zdHIoc2VsZi5zdGF0c1siZmFpbHVyZSJdKSwKKyAgICAgICAgICAgIHNr
aXBwZWQ9c3RyKHNlbGYuc3RhdHNbInNraXBwZWQiXSksCisgICAgICAgICAgICB0ZXN0cz1zdHIo
bnVtdGVzdHMpLAorICAgICAgICAgICAgdGltZT0iJS4zZiIgJSBzdWl0ZV90aW1lX2RlbHRhLAor
ICAgICAgICAgICAgdGltZXN0YW1wPWRhdGV0aW1lLmZyb210aW1lc3RhbXAoc2VsZi5zdWl0ZV9z
dGFydF90aW1lKS5pc29mb3JtYXQoKSwKKyAgICAgICAgICAgIGhvc3RuYW1lPXBsYXRmb3JtLm5v
ZGUoKSwKICAgICAgICAgKQorICAgICAgICBnbG9iYWxfcHJvcGVydGllcyA9IHNlbGYuX2dldF9n
bG9iYWxfcHJvcGVydGllc19ub2RlKCkKKyAgICAgICAgaWYgZ2xvYmFsX3Byb3BlcnRpZXMgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBzdWl0ZV9ub2RlLmFwcGVuZChnbG9iYWxfcHJvcGVydGll
cykKKyAgICAgICAgZm9yIG5vZGVfcmVwb3J0ZXIgaW4gc2VsZi5ub2RlX3JlcG9ydGVyc19vcmRl
cmVkOgorICAgICAgICAgICAgc3VpdGVfbm9kZS5hcHBlbmQobm9kZV9yZXBvcnRlci50b194bWwo
KSkKKyAgICAgICAgdGVzdHN1aXRlcyA9IEVULkVsZW1lbnQoInRlc3RzdWl0ZXMiKQorICAgICAg
ICB0ZXN0c3VpdGVzLmFwcGVuZChzdWl0ZV9ub2RlKQorICAgICAgICBsb2dmaWxlLndyaXRlKEVU
LnRvc3RyaW5nKHRlc3RzdWl0ZXMsIGVuY29kaW5nPSJ1bmljb2RlIikpCiAgICAgICAgIGxvZ2Zp
bGUuY2xvc2UoKQogCi0gICAgZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHNlbGYsIHRlcm1p
bmFscmVwb3J0ZXIpOgotICAgICAgICB0ZXJtaW5hbHJlcG9ydGVyLndyaXRlX3NlcCgiLSIsICJn
ZW5lcmF0ZWQgeG1sIGZpbGU6ICVzIiAlIChzZWxmLmxvZ2ZpbGUpKQorICAgIGRlZiBweXRlc3Rf
dGVybWluYWxfc3VtbWFyeShzZWxmLCB0ZXJtaW5hbHJlcG9ydGVyOiBUZXJtaW5hbFJlcG9ydGVy
KSAtPiBOb25lOgorICAgICAgICB0ZXJtaW5hbHJlcG9ydGVyLndyaXRlX3NlcCgiLSIsICJnZW5l
cmF0ZWQgeG1sIGZpbGU6IHt9Ii5mb3JtYXQoc2VsZi5sb2dmaWxlKSkKIAotICAgIGRlZiBhZGRf
Z2xvYmFsX3Byb3BlcnR5KHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgc2VsZi5nbG9iYWxf
cHJvcGVydGllcy5hcHBlbmQoKHN0cihuYW1lKSwgYmluX3htbF9lc2NhcGUodmFsdWUpKSkKKyAg
ICBkZWYgYWRkX2dsb2JhbF9wcm9wZXJ0eShzZWxmLCBuYW1lOiBzdHIsIHZhbHVlOiBvYmplY3Qp
IC0+IE5vbmU6CisgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQorICAgICAgICBfY2hl
Y2tfcmVjb3JkX3BhcmFtX3R5cGUoIm5hbWUiLCBuYW1lKQorICAgICAgICBzZWxmLmdsb2JhbF9w
cm9wZXJ0aWVzLmFwcGVuZCgobmFtZSwgYmluX3htbF9lc2NhcGUodmFsdWUpKSkKIAotICAgIGRl
ZiBfZ2V0X2dsb2JhbF9wcm9wZXJ0aWVzX25vZGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBh
IEp1bml0IG5vZGUgY29udGFpbmluZyBjdXN0b20gcHJvcGVydGllcywgaWYgYW55LgotICAgICAg
ICAiIiIKKyAgICBkZWYgX2dldF9nbG9iYWxfcHJvcGVydGllc19ub2RlKHNlbGYpIC0+IE9wdGlv
bmFsW0VULkVsZW1lbnRdOgorICAgICAgICAiIiJSZXR1cm4gYSBKdW5pdCBub2RlIGNvbnRhaW5p
bmcgY3VzdG9tIHByb3BlcnRpZXMsIGlmIGFueS4iIiIKICAgICAgICAgaWYgc2VsZi5nbG9iYWxf
cHJvcGVydGllczoKLSAgICAgICAgICAgIHJldHVybiBKdW5pdC5wcm9wZXJ0aWVzKAotICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgSnVuaXQucHJvcGVydHkobmFtZT1uYW1l
LCB2YWx1ZT12YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNl
bGYuZ2xvYmFsX3Byb3BlcnRpZXMKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICApCi0g
ICAgICAgIHJldHVybiAiIgorICAgICAgICAgICAgcHJvcGVydGllcyA9IEVULkVsZW1lbnQoInBy
b3BlcnRpZXMiKQorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuZ2xvYmFsX3By
b3BlcnRpZXM6CisgICAgICAgICAgICAgICAgcHJvcGVydGllcy5hcHBlbmQoRVQuRWxlbWVudCgi
cHJvcGVydHkiLCBuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBw
cm9wZXJ0aWVzCisgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9sb2dnaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbG9nZ2luZy5w
eQppbmRleCAwMGJiOWFlYjU0YTcuLmMyNzdiYTUzMjBjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvbG9nZ2luZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9s
b2dnaW5nLnB5CkBAIC0xLDI0ICsxLDUxIEBACi0iIiIgQWNjZXNzIGFuZCBjb250cm9sIGxvZyBj
YXB0dXJpbmcuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCBwcmludF9mdW5jdGlvbgotCisiIiJBY2Nlc3MgYW5kIGNvbnRyb2wgbG9nIGNhcHR1
cmluZy4iIiIKIGltcG9ydCBsb2dnaW5nCi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3Npbmcs
IGNvbnRleHRtYW5hZ2VyCitpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHNpeAoraW1wb3J0
IHN5cworZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorZnJvbSBpbyBpbXBv
cnQgU3RyaW5nSU8KK2Zyb20gdHlwaW5nIGltcG9ydCBBYnN0cmFjdFNldAorZnJvbSB0eXBpbmcg
aW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGlt
cG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQgTWFwcGluZworZnJvbSB0eXBpbmcgaW1wb3J0
IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBU
eXBlVmFyCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAotZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcgogaW1wb3J0IHB5dGVzdAotaW1wb3J0IHB5Citm
cm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCitmcm9tIF9weXRlc3QuX2lvIGltcG9ydCBUZXJtaW5h
bFdyaXRlcgorZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IENhcHR1cmVNYW5hZ2VyCitmcm9t
IF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQg
bnVsbGNvbnRleHQKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IF9zdHJ0b2Jvb2wKK2Zyb20g
X3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQg
Y3JlYXRlX3Rlcm1pbmFsX3dyaXRlcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGlt
cG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZVJlcXVlc3QK
K2Zyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCitmcm9tIF9weXRlc3QucGF0aGxpYiBp
bXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnN0b3JlIGltcG9ydCBTdG9yZUtleQorZnJvbSBfcHl0
ZXN0LnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbFJlcG9ydGVyCiAKIAotREVGQVVMVF9MT0dfRk9S
TUFUID0gIiUoZmlsZW5hbWUpLTI1cyAlKGxpbmVubyk0ZCAlKGxldmVsbmFtZSktOHMgJShtZXNz
YWdlKXMiCitERUZBVUxUX0xPR19GT1JNQVQgPSAiJShsZXZlbG5hbWUpLThzICUobmFtZSlzOiUo
ZmlsZW5hbWUpczolKGxpbmVubylkICUobWVzc2FnZSlzIgogREVGQVVMVF9MT0dfREFURV9GT1JN
QVQgPSAiJUg6JU06JVMiCitfQU5TSV9FU0NBUEVfU0VRID0gcmUuY29tcGlsZShyIlx4MWJcW1tc
ZDtdK20iKQorY2FwbG9nX2hhbmRsZXJfa2V5ID0gU3RvcmVLZXlbIkxvZ0NhcHR1cmVIYW5kbGVy
Il0oKQorY2FwbG9nX3JlY29yZHNfa2V5ID0gU3RvcmVLZXlbRGljdFtzdHIsIExpc3RbbG9nZ2lu
Zy5Mb2dSZWNvcmRdXV0oKQorCisKK2RlZiBfcmVtb3ZlX2Fuc2lfZXNjYXBlX3NlcXVlbmNlcyh0
ZXh0OiBzdHIpIC0+IHN0cjoKKyAgICByZXR1cm4gX0FOU0lfRVNDQVBFX1NFUS5zdWIoIiIsIHRl
eHQpCiAKIAogY2xhc3MgQ29sb3JlZExldmVsRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToK
LSAgICAiIiIKLSAgICBDb2xvcml6ZSB0aGUgJShsZXZlbG5hbWUpLi5zIHBhcnQgb2YgdGhlIGxv
ZyBmb3JtYXQgcGFzc2VkIHRvIF9faW5pdF9fLgotICAgICIiIgorICAgICIiIkEgbG9nZ2luZyBm
b3JtYXR0ZXIgd2hpY2ggY29sb3JpemVzIHRoZSAlKGxldmVsbmFtZSkuLnMgcGFydCBvZiB0aGUK
KyAgICBsb2cgZm9ybWF0IHBhc3NlZCB0byBfX2luaXRfXy4iIiIKIAogICAgIExPR0xFVkVMX0NP
TE9ST1BUUyA9IHsKICAgICAgICAgbG9nZ2luZy5DUklUSUNBTDogeyJyZWQifSwKQEAgLTI4LDE3
ICs1NSwxNSBAQCBjbGFzcyBDb2xvcmVkTGV2ZWxGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIp
OgogICAgICAgICBsb2dnaW5nLklORk86IHsiZ3JlZW4ifSwKICAgICAgICAgbG9nZ2luZy5ERUJV
RzogeyJwdXJwbGUifSwKICAgICAgICAgbG9nZ2luZy5OT1RTRVQ6IHNldCgpLAotICAgIH0KLSAg
ICBMRVZFTE5BTUVfRk1UX1JFR0VYID0gcmUuY29tcGlsZShyIiVcKGxldmVsbmFtZVwpKFsrLV0/
XGQqcykiKQorICAgIH0gICMgdHlwZTogTWFwcGluZ1tpbnQsIEFic3RyYWN0U2V0W3N0cl1dCisg
ICAgTEVWRUxOQU1FX0ZNVF9SRUdFWCA9IHJlLmNvbXBpbGUociIlXChsZXZlbG5hbWVcKShbKy0u
XT9cZCpzKSIpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVybWluYWx3cml0ZXIsICphcmdz
LCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKENvbG9yZWRMZXZlbEZvcm1hdHRlciwgc2VsZiku
X19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBpZiBzaXguUFkyOgotICAgICAgICAg
ICAgc2VsZi5fb3JpZ2luYWxfZm10ID0gc2VsZi5fZm10Ci0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLl9vcmlnaW5hbF9mbXQgPSBzZWxmLl9zdHlsZS5fZm10Ci0gICAgICAgIHNlbGYu
X2xldmVsX3RvX2ZtdF9tYXBwaW5nID0ge30KKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVybWlu
YWx3cml0ZXI6IFRlcm1pbmFsV3JpdGVyLCAqYXJncywgKiprd2FyZ3MpIC0+IE5vbmU6CisgICAg
ICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLl9vcmln
aW5hbF9mbXQgPSBzZWxmLl9zdHlsZS5fZm10CisgICAgICAgIHNlbGYuX2xldmVsX3RvX2ZtdF9t
YXBwaW5nID0ge30gICMgdHlwZTogRGljdFtpbnQsIHN0cl0KIAorICAgICAgICBhc3NlcnQgc2Vs
Zi5fZm10IGlzIG5vdCBOb25lCiAgICAgICAgIGxldmVsbmFtZV9mbXRfbWF0Y2ggPSBzZWxmLkxF
VkVMTkFNRV9GTVRfUkVHRVguc2VhcmNoKHNlbGYuX2ZtdCkKICAgICAgICAgaWYgbm90IGxldmVs
bmFtZV9mbXRfbWF0Y2g6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTU4LDE2ICs4MywxMTEgQEAg
Y2xhc3MgQ29sb3JlZExldmVsRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKICAgICAgICAg
ICAgICAgICBjb2xvcml6ZWRfZm9ybWF0dGVkX2xldmVsbmFtZSwgc2VsZi5fZm10CiAgICAgICAg
ICAgICApCiAKLSAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZCk6CisgICAgZGVmIGZvcm1hdChz
ZWxmLCByZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBzdHI6CiAgICAgICAgIGZtdCA9IHNl
bGYuX2xldmVsX3RvX2ZtdF9tYXBwaW5nLmdldChyZWNvcmQubGV2ZWxubywgc2VsZi5fb3JpZ2lu
YWxfZm10KQotICAgICAgICBpZiBzaXguUFkyOgotICAgICAgICAgICAgc2VsZi5fZm10ID0gZm10
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdHlsZS5fZm10ID0gZm10Ci0gICAg
ICAgIHJldHVybiBzdXBlcihDb2xvcmVkTGV2ZWxGb3JtYXR0ZXIsIHNlbGYpLmZvcm1hdChyZWNv
cmQpCisgICAgICAgIHNlbGYuX3N0eWxlLl9mbXQgPSBmbXQKKyAgICAgICAgcmV0dXJuIHN1cGVy
KCkuZm9ybWF0KHJlY29yZCkKIAogCi1kZWYgZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAqbmFtZXMp
OgorY2xhc3MgUGVyY2VudFN0eWxlTXVsdGlsaW5lKGxvZ2dpbmcuUGVyY2VudFN0eWxlKToKKyAg
ICAiIiJBIGxvZ2dpbmcgc3R5bGUgd2l0aCBzcGVjaWFsIHN1cHBvcnQgZm9yIG11bHRpbGluZSBt
ZXNzYWdlcy4KKworICAgIElmIHRoZSBtZXNzYWdlIG9mIGEgcmVjb3JkIGNvbnNpc3RzIG9mIG11
bHRpcGxlIGxpbmVzLCB0aGlzIHN0eWxlCisgICAgZm9ybWF0cyB0aGUgbWVzc2FnZSBhcyBpZiBl
YWNoIGxpbmUgd2VyZSBsb2dnZWQgc2VwYXJhdGVseS4KKyAgICAiIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmbXQ6IHN0ciwgYXV0b19pbmRlbnQ6IFVuaW9uW2ludCwgc3RyLCBib29sLCBO
b25lXSkgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmbXQpCisgICAgICAgIHNl
bGYuX2F1dG9faW5kZW50ID0gc2VsZi5fZ2V0X2F1dG9faW5kZW50KGF1dG9faW5kZW50KQorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfdXBkYXRlX21lc3NhZ2UoCisgICAgICAgIHJlY29y
ZF9kaWN0OiBEaWN0W3N0ciwgb2JqZWN0XSwgbWVzc2FnZTogc3RyCisgICAgKSAtPiBEaWN0W3N0
ciwgb2JqZWN0XToKKyAgICAgICAgdG1wID0gcmVjb3JkX2RpY3QuY29weSgpCisgICAgICAgIHRt
cFsibWVzc2FnZSJdID0gbWVzc2FnZQorICAgICAgICByZXR1cm4gdG1wCisKKyAgICBAc3RhdGlj
bWV0aG9kCisgICAgZGVmIF9nZXRfYXV0b19pbmRlbnQoYXV0b19pbmRlbnRfb3B0aW9uOiBVbmlv
bltpbnQsIHN0ciwgYm9vbCwgTm9uZV0pIC0+IGludDoKKyAgICAgICAgIiIiRGV0ZXJtaW5lIHRo
ZSBjdXJyZW50IGF1dG8gaW5kZW50YXRpb24gc2V0dGluZy4KKworICAgICAgICBTcGVjaWZ5IGF1
dG8gaW5kZW50IGJlaGF2aW9yIChvbi9vZmYvZml4ZWQpIGJ5IHBhc3NpbmcgaW4KKyAgICAgICAg
ZXh0cmE9eyJhdXRvX2luZGVudCI6IFt2YWx1ZV19IHRvIHRoZSBjYWxsIHRvIGxvZ2dpbmcubG9n
KCkgb3IKKyAgICAgICAgdXNpbmcgYSAtLWxvZy1hdXRvLWluZGVudCBbdmFsdWVdIGNvbW1hbmQg
bGluZSBvciB0aGUKKyAgICAgICAgbG9nX2F1dG9faW5kZW50IFt2YWx1ZV0gY29uZmlnIG9wdGlv
bi4KKworICAgICAgICBEZWZhdWx0IGJlaGF2aW9yIGlzIGF1dG8taW5kZW50IG9mZi4KKworICAg
ICAgICBVc2luZyB0aGUgc3RyaW5nICJUcnVlIiBvciAib24iIG9yIHRoZSBib29sZWFuIFRydWUg
YXMgdGhlIHZhbHVlCisgICAgICAgIHR1cm5zIGF1dG8gaW5kZW50IG9uLCB1c2luZyB0aGUgc3Ry
aW5nICJGYWxzZSIgb3IgIm9mZiIgb3IgdGhlCisgICAgICAgIGJvb2xlYW4gRmFsc2Ugb3IgdGhl
IGludCAwIHR1cm5zIGl0IG9mZiwgYW5kIHNwZWNpZnlpbmcgYQorICAgICAgICBwb3NpdGl2ZSBp
bnRlZ2VyIGZpeGVzIHRoZSBpbmRlbnRhdGlvbiBwb3NpdGlvbiB0byB0aGUgdmFsdWUKKyAgICAg
ICAgc3BlY2lmaWVkLgorCisgICAgICAgIEFueSBvdGhlciB2YWx1ZXMgZm9yIHRoZSBvcHRpb24g
YXJlIGludmFsaWQsIGFuZCB3aWxsIHNpbGVudGx5IGJlCisgICAgICAgIGNvbnZlcnRlZCB0byB0
aGUgZGVmYXVsdC4KKworICAgICAgICA6cGFyYW0gTm9uZXxib29sfGludHxzdHIgYXV0b19pbmRl
bnRfb3B0aW9uOgorICAgICAgICAgICAgVXNlciBzcGVjaWZpZWQgb3B0aW9uIGZvciBpbmRlbnRh
dGlvbiBmcm9tIGNvbW1hbmQgbGluZSwgY29uZmlnCisgICAgICAgICAgICBvciBleHRyYSBrd2Fy
Zy4gQWNjZXB0cyBpbnQsIGJvb2wgb3Igc3RyLiBzdHIgb3B0aW9uIGFjY2VwdHMgdGhlCisgICAg
ICAgICAgICBzYW1lIHJhbmdlIG9mIHZhbHVlcyBhcyBib29sZWFuIGNvbmZpZyBvcHRpb25zLCBh
cyB3ZWxsIGFzCisgICAgICAgICAgICBwb3NpdGl2ZSBpbnRlZ2VycyByZXByZXNlbnRlZCBpbiBz
dHIgZm9ybS4KKworICAgICAgICA6cmV0dXJuczoKKyAgICAgICAgICAgIEluZGVudGF0aW9uIHZh
bHVlLCB3aGljaCBjYW4gYmUKKyAgICAgICAgICAgIC0xIChhdXRvbWF0aWNhbGx5IGRldGVybWlu
ZSBpbmRlbnRhdGlvbikgb3IKKyAgICAgICAgICAgIDAgKGF1dG8taW5kZW50IHR1cm5lZCBvZmYp
IG9yCisgICAgICAgICAgICA+MCAoZXhwbGljaXRseSBzZXQgaW5kZW50YXRpb24gcG9zaXRpb24p
LgorICAgICAgICAiIiIKKworICAgICAgICBpZiBhdXRvX2luZGVudF9vcHRpb24gaXMgTm9uZToK
KyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhdXRvX2luZGVu
dF9vcHRpb24sIGJvb2wpOgorICAgICAgICAgICAgaWYgYXV0b19pbmRlbnRfb3B0aW9uOgorICAg
ICAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMAorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXV0b19pbmRlbnRfb3B0aW9uLCBp
bnQpOgorICAgICAgICAgICAgcmV0dXJuIGludChhdXRvX2luZGVudF9vcHRpb24pCisgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShhdXRvX2luZGVudF9vcHRpb24sIHN0cik6CisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludChhdXRvX2luZGVudF9vcHRpb24pCisgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgX3N0cnRvYm9vbChhdXRvX2luZGVudF9vcHRp
b24pOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgcmV0dXJuIDAK
KworICAgIGRlZiBmb3JtYXQoc2VsZiwgcmVjb3JkOiBsb2dnaW5nLkxvZ1JlY29yZCkgLT4gc3Ry
OgorICAgICAgICBpZiAiXG4iIGluIHJlY29yZC5tZXNzYWdlOgorICAgICAgICAgICAgaWYgaGFz
YXR0cihyZWNvcmQsICJhdXRvX2luZGVudCIpOgorICAgICAgICAgICAgICAgICMgUGFzc2VkIGlu
IGZyb20gdGhlICJleHRyYT17fSIga3dhcmcgb24gdGhlIGNhbGwgdG8gbG9nZ2luZy5sb2coKS4K
KyAgICAgICAgICAgICAgICBhdXRvX2luZGVudCA9IHNlbGYuX2dldF9hdXRvX2luZGVudChyZWNv
cmQuYXV0b19pbmRlbnQpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGF1dG9faW5kZW50ID0gc2VsZi5fYXV0b19pbmRlbnQK
KworICAgICAgICAgICAgaWYgYXV0b19pbmRlbnQ6CisgICAgICAgICAgICAgICAgbGluZXMgPSBy
ZWNvcmQubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSBz
ZWxmLl9mbXQgJSBzZWxmLl91cGRhdGVfbWVzc2FnZShyZWNvcmQuX19kaWN0X18sIGxpbmVzWzBd
KQorCisgICAgICAgICAgICAgICAgaWYgYXV0b19pbmRlbnQgPCAwOgorICAgICAgICAgICAgICAg
ICAgICBpbmRlbnRhdGlvbiA9IF9yZW1vdmVfYW5zaV9lc2NhcGVfc2VxdWVuY2VzKGZvcm1hdHRl
ZCkuZmluZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzWzBdCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIE9w
dGltaXplcyBsb2dnaW5nIGJ5IGFsbG93aW5nIGEgZml4ZWQgaW5kZW50YXRpb24uCisgICAgICAg
ICAgICAgICAgICAgIGluZGVudGF0aW9uID0gYXV0b19pbmRlbnQKKyAgICAgICAgICAgICAgICBs
aW5lc1swXSA9IGZvcm1hdHRlZAorICAgICAgICAgICAgICAgIHJldHVybiAoIlxuIiArICIgIiAq
IGluZGVudGF0aW9uKS5qb2luKGxpbmVzKQorICAgICAgICByZXR1cm4gc2VsZi5fZm10ICUgcmVj
b3JkLl9fZGljdF9fCisKKworZGVmIGdldF9vcHRpb25faW5pKGNvbmZpZzogQ29uZmlnLCAqbmFt
ZXM6IHN0cik6CiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgIHJldCA9IGNvbmZpZy5n
ZXRvcHRpb24obmFtZSkgICMgJ2RlZmF1bHQnIGFyZyB3b24ndCB3b3JrIGFzIGV4cGVjdGVkCiAg
ICAgICAgIGlmIHJldCBpcyBOb25lOgpAQCAtNzYsNyArMTk2LDcgQEAgZGVmIGdldF9vcHRpb25f
aW5pKGNvbmZpZywgKm5hbWVzKToKICAgICAgICAgICAgIHJldHVybiByZXQKIAogCi1kZWYgcHl0
ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJz
ZXIpIC0+IE5vbmU6CiAgICAgIiIiQWRkIG9wdGlvbnMgdG8gY29udHJvbCBsb2cgY2FwdHVyaW5n
LiIiIgogICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJsb2dnaW5nIikKIApAQCAtODYsMjAg
KzIwNiwxNiBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICApCiAgICAg
ICAgIGdyb3VwLmFkZG9wdGlvbihvcHRpb24sIGRlc3Q9ZGVzdCwgKiprd2FyZ3MpCiAKLSAgICBh
ZGRfb3B0aW9uX2luaSgKLSAgICAgICAgIi0tbm8tcHJpbnQtbG9ncyIsCi0gICAgICAgIGRlc3Q9
ImxvZ19wcmludCIsCi0gICAgICAgIGFjdGlvbj0ic3RvcmVfY29uc3QiLAotICAgICAgICBjb25z
dD1GYWxzZSwKLSAgICAgICAgZGVmYXVsdD1UcnVlLAotICAgICAgICB0eXBlPSJib29sIiwKLSAg
ICAgICAgaGVscD0iZGlzYWJsZSBwcmludGluZyBjYXVnaHQgbG9ncyBvbiBmYWlsZWQgdGVzdHMu
IiwKLSAgICApCiAgICAgYWRkX29wdGlvbl9pbmkoCiAgICAgICAgICItLWxvZy1sZXZlbCIsCiAg
ICAgICAgIGRlc3Q9ImxvZ19sZXZlbCIsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAg
aGVscD0ibG9nZ2luZyBsZXZlbCB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVsZSIsCisgICAgICAg
IG1ldGF2YXI9IkxFVkVMIiwKKyAgICAgICAgaGVscD0oCisgICAgICAgICAgICAibGV2ZWwgb2Yg
bWVzc2FnZXMgdG8gY2F0Y2gvZGlzcGxheS5cbiIKKyAgICAgICAgICAgICJOb3Qgc2V0IGJ5IGRl
ZmF1bHQsIHNvIGl0IGRlcGVuZHMgb24gdGhlIHJvb3QvcGFyZW50IGxvZyBoYW5kbGVyJ3MiCisg
ICAgICAgICAgICAnIGVmZmVjdGl2ZSBsZXZlbCwgd2hlcmUgaXQgaXMgIldBUk5JTkciIGJ5IGRl
ZmF1bHQuJworICAgICAgICApLAogICAgICkKICAgICBhZGRfb3B0aW9uX2luaSgKICAgICAgICAg
Ii0tbG9nLWZvcm1hdCIsCkBAIC0xNTgsMTEwICsyNzQsMTI4IEBAIGRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6CiAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9MT0dfREFURV9GT1JNQVQsCiAg
ICAgICAgIGhlbHA9ImxvZyBkYXRlIGZvcm1hdCBhcyB1c2VkIGJ5IHRoZSBsb2dnaW5nIG1vZHVs
ZS4iLAogICAgICkKKyAgICBhZGRfb3B0aW9uX2luaSgKKyAgICAgICAgIi0tbG9nLWF1dG8taW5k
ZW50IiwKKyAgICAgICAgZGVzdD0ibG9nX2F1dG9faW5kZW50IiwKKyAgICAgICAgZGVmYXVsdD1O
b25lLAorICAgICAgICBoZWxwPSJBdXRvLWluZGVudCBtdWx0aWxpbmUgbWVzc2FnZXMgcGFzc2Vk
IHRvIHRoZSBsb2dnaW5nIG1vZHVsZS4gQWNjZXB0cyB0cnVlfG9uLCBmYWxzZXxvZmYgb3IgYW4g
aW50ZWdlci4iLAorICAgICkKKwogCitfSGFuZGxlclR5cGUgPSBUeXBlVmFyKCJfSGFuZGxlclR5
cGUiLCBib3VuZD1sb2dnaW5nLkhhbmRsZXIpCiAKLUBjb250ZXh0bWFuYWdlcgotZGVmIGNhdGNo
aW5nX2xvZ3MoaGFuZGxlciwgZm9ybWF0dGVyPU5vbmUsIGxldmVsPU5vbmUpOgorCisjIE5vdCB1
c2luZyBAY29udGV4dG1hbmFnZXIgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCitjbGFzcyBjYXRj
aGluZ19sb2dzOgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHByZXBhcmVzIHRoZSB3aG9s
ZSBsb2dnaW5nIG1hY2hpbmVyeSBwcm9wZXJseS4iIiIKLSAgICByb290X2xvZ2dlciA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKCkKLQotICAgIGlmIGZvcm1hdHRlciBpcyBub3QgTm9uZToKLSAgICAgICAg
aGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGlmIGxldmVsIGlzIG5vdCBOb25l
OgotICAgICAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotCi0gICAgIyBBZGRpbmcgdGhlIHNh
bWUgaGFuZGxlciB0d2ljZSB3b3VsZCBjb25mdXNlIGxvZ2dpbmcgc3lzdGVtLgotICAgICMgSnVz
dCBkb24ndCBkbyB0aGF0LgotICAgIGFkZF9uZXdfaGFuZGxlciA9IGhhbmRsZXIgbm90IGluIHJv
b3RfbG9nZ2VyLmhhbmRsZXJzCi0KLSAgICBpZiBhZGRfbmV3X2hhbmRsZXI6Ci0gICAgICAgIHJv
b3RfbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKLSAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToK
LSAgICAgICAgb3JpZ19sZXZlbCA9IHJvb3RfbG9nZ2VyLmxldmVsCi0gICAgICAgIHJvb3RfbG9n
Z2VyLnNldExldmVsKG1pbihvcmlnX2xldmVsLCBsZXZlbCkpCi0gICAgdHJ5OgotICAgICAgICB5
aWVsZCBoYW5kbGVyCi0gICAgZmluYWxseToKLSAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICByb290X2xvZ2dlci5zZXRMZXZlbChvcmlnX2xldmVsKQotICAgICAgICBp
ZiBhZGRfbmV3X2hhbmRsZXI6Ci0gICAgICAgICAgICByb290X2xvZ2dlci5yZW1vdmVIYW5kbGVy
KGhhbmRsZXIpCisKKyAgICBfX3Nsb3RzX18gPSAoImhhbmRsZXIiLCAibGV2ZWwiLCAib3JpZ19s
ZXZlbCIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlcjogX0hhbmRsZXJUeXBlLCBs
ZXZlbDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaGFuZGxl
ciA9IGhhbmRsZXIKKyAgICAgICAgc2VsZi5sZXZlbCA9IGxldmVsCisKKyAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAg
ICAgICAgaWYgc2VsZi5sZXZlbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxl
ci5zZXRMZXZlbChzZWxmLmxldmVsKQorICAgICAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKHNl
bGYuaGFuZGxlcikKKyAgICAgICAgaWYgc2VsZi5sZXZlbCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYub3JpZ19sZXZlbCA9IHJvb3RfbG9nZ2VyLmxldmVsCisgICAgICAgICAgICByb290
X2xvZ2dlci5zZXRMZXZlbChtaW4oc2VsZi5vcmlnX2xldmVsLCBzZWxmLmxldmVsKSkKKyAgICAg
ICAgcmV0dXJuIHNlbGYuaGFuZGxlcgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZh
bHVlLCB0cmFjZWJhY2spOgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCkKKyAgICAgICAgaWYgc2VsZi5sZXZlbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJvb3Rf
bG9nZ2VyLnNldExldmVsKHNlbGYub3JpZ19sZXZlbCkKKyAgICAgICAgcm9vdF9sb2dnZXIucmVt
b3ZlSGFuZGxlcihzZWxmLmhhbmRsZXIpCiAKIAogY2xhc3MgTG9nQ2FwdHVyZUhhbmRsZXIobG9n
Z2luZy5TdHJlYW1IYW5kbGVyKToKICAgICAiIiJBIGxvZ2dpbmcgaGFuZGxlciB0aGF0IHN0b3Jl
cyBsb2cgcmVjb3JkcyBhbmQgdGhlIGxvZyB0ZXh0LiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IGxvZyBoYW5kbGVyLiIiIgotICAgICAgICBs
b2dnaW5nLlN0cmVhbUhhbmRsZXIuX19pbml0X18oc2VsZiwgcHkuaW8uVGV4dElPKCkpCi0gICAg
ICAgIHNlbGYucmVjb3JkcyA9IFtdCisgICAgc3RyZWFtID0gTm9uZSAgIyB0eXBlOiBTdHJpbmdJ
TwogCi0gICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICBkZWYgX19pbml0X18oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGxvZyBoYW5kbGVyLiIiIgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKFN0cmluZ0lPKCkpCisgICAgICAgIHNlbGYucmVjb3JkcyA9IFtd
ICAjIHR5cGU6IExpc3RbbG9nZ2luZy5Mb2dSZWNvcmRdCisKKyAgICBkZWYgZW1pdChzZWxmLCBy
ZWNvcmQ6IGxvZ2dpbmcuTG9nUmVjb3JkKSAtPiBOb25lOgogICAgICAgICAiIiJLZWVwIHRoZSBs
b2cgcmVjb3JkcyBpbiBhIGxpc3QgaW4gYWRkaXRpb24gdG8gdGhlIGxvZyB0ZXh0LiIiIgogICAg
ICAgICBzZWxmLnJlY29yZHMuYXBwZW5kKHJlY29yZCkKLSAgICAgICAgbG9nZ2luZy5TdHJlYW1I
YW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQorICAgICAgICBzdXBlcigpLmVtaXQocmVjb3JkKQog
Ci0gICAgZGVmIHJlc2V0KHNlbGYpOgorICAgIGRlZiByZXNldChzZWxmKSAtPiBOb25lOgogICAg
ICAgICBzZWxmLnJlY29yZHMgPSBbXQotICAgICAgICBzZWxmLnN0cmVhbSA9IHB5LmlvLlRleHRJ
TygpCisgICAgICAgIHNlbGYuc3RyZWFtID0gU3RyaW5nSU8oKQorCisgICAgZGVmIGhhbmRsZUVy
cm9yKHNlbGYsIHJlY29yZDogbG9nZ2luZy5Mb2dSZWNvcmQpIC0+IE5vbmU6CisgICAgICAgIGlm
IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zOgorICAgICAgICAgICAgIyBGYWlsIHRoZSB0ZXN0IGlm
IHRoZSBsb2cgbWVzc2FnZSBpcyBiYWQgKGVtaXQgZmFpbGVkKS4KKyAgICAgICAgICAgICMgVGhl
IGRlZmF1bHQgYmVoYXZpb3Igb2YgbG9nZ2luZyBpcyB0byBwcmludCAiTG9nZ2luZyBlcnJvciIK
KyAgICAgICAgICAgICMgdG8gc3RkZXJyIHdpdGggdGhlIGNhbGwgc3RhY2sgYW5kIHNvbWUgZXh0
cmEgZGV0YWlscy4KKyAgICAgICAgICAgICMgcHl0ZXN0IHdhbnRzIHRvIG1ha2Ugc3VjaCBtaXN0
YWtlcyB2aXNpYmxlIGR1cmluZyB0ZXN0aW5nLgorICAgICAgICAgICAgcmFpc2UKIAogCi1jbGFz
cyBMb2dDYXB0dXJlRml4dHVyZShvYmplY3QpOgorQGZpbmFsCitjbGFzcyBMb2dDYXB0dXJlRml4
dHVyZToKICAgICAiIiJQcm92aWRlcyBhY2Nlc3MgYW5kIGNvbnRyb2wgb2YgbG9nIGNhcHR1cmlu
Zy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtKToKLSAgICAgICAgIiIiQ3JlYXRl
cyBhIG5ldyBmdW5jYXJnLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtOiBub2Rlcy5O
b2RlKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9pdGVtID0gaXRlbQotICAgICAgICBzZWxmLl9p
bml0aWFsX2xvZ19sZXZlbHMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgaW50XSAjIGRpY3Qgb2Yg
bG9nIG5hbWUgLT4gbG9nIGxldmVsCisgICAgICAgIHNlbGYuX2luaXRpYWxfaGFuZGxlcl9sZXZl
bCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbaW50XQorICAgICAgICAjIERpY3Qgb2YgbG9nIG5h
bWUgLT4gbG9nIGxldmVsLgorICAgICAgICBzZWxmLl9pbml0aWFsX2xvZ2dlcl9sZXZlbHMgPSB7
fSAgIyB0eXBlOiBEaWN0W09wdGlvbmFsW3N0cl0sIGludF0KIAotICAgIGRlZiBfZmluYWxpemUo
c2VsZik6Ci0gICAgICAgICIiIkZpbmFsaXplcyB0aGUgZml4dHVyZS4KKyAgICBkZWYgX2ZpbmFs
aXplKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIkZpbmFsaXplIHRoZSBmaXh0dXJlLgogCiAg
ICAgICAgIFRoaXMgcmVzdG9yZXMgdGhlIGxvZyBsZXZlbHMgY2hhbmdlZCBieSA6bWV0aDpgc2V0
X2xldmVsYC4KICAgICAgICAgIiIiCi0gICAgICAgICMgcmVzdG9yZSBsb2cgbGV2ZWxzCi0gICAg
ICAgIGZvciBsb2dnZXJfbmFtZSwgbGV2ZWwgaW4gc2VsZi5faW5pdGlhbF9sb2dfbGV2ZWxzLml0
ZW1zKCk6CisgICAgICAgICMgUmVzdG9yZSBsb2cgbGV2ZWxzLgorICAgICAgICBpZiBzZWxmLl9p
bml0aWFsX2hhbmRsZXJfbGV2ZWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmhhbmRs
ZXIuc2V0TGV2ZWwoc2VsZi5faW5pdGlhbF9oYW5kbGVyX2xldmVsKQorICAgICAgICBmb3IgbG9n
Z2VyX25hbWUsIGxldmVsIGluIHNlbGYuX2luaXRpYWxfbG9nZ2VyX2xldmVscy5pdGVtcygpOgog
ICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIobG9nZ2VyX25hbWUpCiAgICAg
ICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYg
aGFuZGxlcihzZWxmKToKLSAgICAgICAgIiIiCisgICAgZGVmIGhhbmRsZXIoc2VsZikgLT4gTG9n
Q2FwdHVyZUhhbmRsZXI6CisgICAgICAgICIiIkdldCB0aGUgbG9nZ2luZyBoYW5kbGVyIHVzZWQg
YnkgdGhlIGZpeHR1cmUuCisKICAgICAgICAgOnJ0eXBlOiBMb2dDYXB0dXJlSGFuZGxlcgogICAg
ICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2l0ZW0uY2F0Y2hfbG9nX2hhbmRsZXIKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2l0ZW0uX3N0b3JlW2NhcGxvZ19oYW5kbGVyX2tleV0KIAotICAg
IGRlZiBnZXRfcmVjb3JkcyhzZWxmLCB3aGVuKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdldCB0
aGUgbG9nZ2luZyByZWNvcmRzIGZvciBvbmUgb2YgdGhlIHBvc3NpYmxlIHRlc3QgcGhhc2VzLgor
ICAgIGRlZiBnZXRfcmVjb3JkcyhzZWxmLCB3aGVuOiBzdHIpIC0+IExpc3RbbG9nZ2luZy5Mb2dS
ZWNvcmRdOgorICAgICAgICAiIiJHZXQgdGhlIGxvZ2dpbmcgcmVjb3JkcyBmb3Igb25lIG9mIHRo
ZSBwb3NzaWJsZSB0ZXN0IHBoYXNlcy4KIAogICAgICAgICA6cGFyYW0gc3RyIHdoZW46CiAgICAg
ICAgICAgICBXaGljaCB0ZXN0IHBoYXNlIHRvIG9idGFpbiB0aGUgcmVjb3JkcyBmcm9tLiBWYWxp
ZCB2YWx1ZXMgYXJlOiAic2V0dXAiLCAiY2FsbCIgYW5kICJ0ZWFyZG93biIuCiAKKyAgICAgICAg
OnJldHVybnM6IFRoZSBsaXN0IG9mIGNhcHR1cmVkIHJlY29yZHMgYXQgdGhlIGdpdmVuIHN0YWdl
LgogICAgICAgICA6cnR5cGU6IExpc3RbbG9nZ2luZy5Mb2dSZWNvcmRdCi0gICAgICAgIDpyZXR1
cm46IHRoZSBsaXN0IG9mIGNhcHR1cmVkIHJlY29yZHMgYXQgdGhlIGdpdmVuIHN0YWdlCiAKICAg
ICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICAgICAgICIiIgotICAgICAgICBoYW5kbGVy
ID0gc2VsZi5faXRlbS5jYXRjaF9sb2dfaGFuZGxlcnMuZ2V0KHdoZW4pCi0gICAgICAgIGlmIGhh
bmRsZXI6Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlci5yZWNvcmRzCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGYuX2l0ZW0uX3N0b3Jl
W2NhcGxvZ19yZWNvcmRzX2tleV0uZ2V0KHdoZW4sIFtdKQogCiAgICAgQHByb3BlcnR5Ci0gICAg
ZGVmIHRleHQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxvZyB0ZXh0LiIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5oYW5kbGVyLnN0cmVhbS5nZXR2YWx1ZSgpCisgICAgZGVmIHRleHQo
c2VsZikgLT4gc3RyOgorICAgICAgICAiIiJUaGUgZm9ybWF0dGVkIGxvZyB0ZXh0LiIiIgorICAg
ICAgICByZXR1cm4gX3JlbW92ZV9hbnNpX2VzY2FwZV9zZXF1ZW5jZXMoc2VsZi5oYW5kbGVyLnN0
cmVhbS5nZXR2YWx1ZSgpKQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHJlY29yZHMoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxpc3Qgb2YgbG9nIHJlY29yZHMuIiIiCisgICAgZGVm
IHJlY29yZHMoc2VsZikgLT4gTGlzdFtsb2dnaW5nLkxvZ1JlY29yZF06CisgICAgICAgICIiIlRo
ZSBsaXN0IG9mIGxvZyByZWNvcmRzLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVyLnJl
Y29yZHMKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiByZWNvcmRfdHVwbGVzKHNlbGYpOgotICAg
ICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhIHN0cmlwZWQgZG93biB2ZXJzaW9uIG9mIGxvZyBy
ZWNvcmRzIGludGVuZGVkCisgICAgZGVmIHJlY29yZF90dXBsZXMoc2VsZikgLT4gTGlzdFtUdXBs
ZVtzdHIsIGludCwgc3RyXV06CisgICAgICAgICIiIkEgbGlzdCBvZiBhIHN0cmlwcGVkIGRvd24g
dmVyc2lvbiBvZiBsb2cgcmVjb3JkcyBpbnRlbmRlZAogICAgICAgICBmb3IgdXNlIGluIGFzc2Vy
dGlvbiBjb21wYXJpc29uLgogCiAgICAgICAgIFRoZSBmb3JtYXQgb2YgdGhlIHR1cGxlIGlzOgpA
QCAtMjcwLDUwICs0MDQsNzcgQEAgY2xhc3MgTG9nQ2FwdHVyZUZpeHR1cmUob2JqZWN0KToKICAg
ICAgICAgIiIiCiAgICAgICAgIHJldHVybiBbKHIubmFtZSwgci5sZXZlbG5vLCByLmdldE1lc3Nh
Z2UoKSkgZm9yIHIgaW4gc2VsZi5yZWNvcmRzXQogCi0gICAgZGVmIGNsZWFyKHNlbGYpOgorICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBtZXNzYWdlcyhzZWxmKSAtPiBMaXN0W3N0cl06CisgICAgICAg
ICIiIkEgbGlzdCBvZiBmb3JtYXQtaW50ZXJwb2xhdGVkIGxvZyBtZXNzYWdlcy4KKworICAgICAg
ICBVbmxpa2UgJ3JlY29yZHMnLCB3aGljaCBjb250YWlucyB0aGUgZm9ybWF0IHN0cmluZyBhbmQg
cGFyYW1ldGVycyBmb3IKKyAgICAgICAgaW50ZXJwb2xhdGlvbiwgbG9nIG1lc3NhZ2VzIGluIHRo
aXMgbGlzdCBhcmUgYWxsIGludGVycG9sYXRlZC4KKworICAgICAgICBVbmxpa2UgJ3RleHQnLCB3
aGljaCBjb250YWlucyB0aGUgb3V0cHV0IGZyb20gdGhlIGhhbmRsZXIsIGxvZworICAgICAgICBt
ZXNzYWdlcyBpbiB0aGlzIGxpc3QgYXJlIHVuYWRvcm5lZCB3aXRoIGxldmVscywgdGltZXN0YW1w
cywgZXRjLAorICAgICAgICBtYWtpbmcgZXhhY3QgY29tcGFyaXNvbnMgbW9yZSByZWxpYWJsZS4K
KworICAgICAgICBOb3RlIHRoYXQgdHJhY2ViYWNrIG9yIHN0YWNrIGluZm8gKGZyb20gOmZ1bmM6
YGxvZ2dpbmcuZXhjZXB0aW9uYCBvcgorICAgICAgICB0aGUgYGV4Y19pbmZvYCBvciBgc3RhY2tf
aW5mb2AgYXJndW1lbnRzIHRvIHRoZSBsb2dnaW5nIGZ1bmN0aW9ucykgaXMKKyAgICAgICAgbm90
IGluY2x1ZGVkLCBhcyB0aGlzIGlzIGFkZGVkIGJ5IHRoZSBmb3JtYXR0ZXIgaW4gdGhlIGhhbmRs
ZXIuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy43CisgICAgICAgICIiIgorICAgICAg
ICByZXR1cm4gW3IuZ2V0TWVzc2FnZSgpIGZvciByIGluIHNlbGYucmVjb3Jkc10KKworICAgIGRl
ZiBjbGVhcihzZWxmKSAtPiBOb25lOgogICAgICAgICAiIiJSZXNldCB0aGUgbGlzdCBvZiBsb2cg
cmVjb3JkcyBhbmQgdGhlIGNhcHR1cmVkIGxvZyB0ZXh0LiIiIgogICAgICAgICBzZWxmLmhhbmRs
ZXIucmVzZXQoKQogCi0gICAgZGVmIHNldF9sZXZlbChzZWxmLCBsZXZlbCwgbG9nZ2VyPU5vbmUp
OgotICAgICAgICAiIiJTZXRzIHRoZSBsZXZlbCBmb3IgY2FwdHVyaW5nIG9mIGxvZ3MuIFRoZSBs
ZXZlbCB3aWxsIGJlIHJlc3RvcmVkIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSBhdCB0aGUgZW5kIG9m
Ci0gICAgICAgIHRoZSB0ZXN0LgotCi0gICAgICAgIDpwYXJhbSBpbnQgbGV2ZWw6IHRoZSBsb2dn
ZXIgdG8gbGV2ZWwuCi0gICAgICAgIDpwYXJhbSBzdHIgbG9nZ2VyOiB0aGUgbG9nZ2VyIHRvIHVw
ZGF0ZSB0aGUgbGV2ZWwuIElmIG5vdCBnaXZlbiwgdGhlIHJvb3QgbG9nZ2VyIGxldmVsIGlzIHVw
ZGF0ZWQuCisgICAgZGVmIHNldF9sZXZlbChzZWxmLCBsZXZlbDogVW5pb25baW50LCBzdHJdLCBs
b2dnZXI6IE9wdGlvbmFsW3N0cl0gPSBOb25lKSAtPiBOb25lOgorICAgICAgICAiIiJTZXQgdGhl
IGxldmVsIG9mIGEgbG9nZ2VyIGZvciB0aGUgZHVyYXRpb24gb2YgYSB0ZXN0LgogCiAgICAgICAg
IC4uIHZlcnNpb25jaGFuZ2VkOjogMy40Ci0gICAgICAgICAgICBUaGUgbGV2ZWxzIG9mIHRoZSBs
b2dnZXJzIGNoYW5nZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlc3RvcmVkIHRvIHRoZWly
IGluaXRpYWwgdmFsdWVzIGF0IHRoZQotICAgICAgICAgICAgZW5kIG9mIHRoZSB0ZXN0LgorICAg
ICAgICAgICAgVGhlIGxldmVscyBvZiB0aGUgbG9nZ2VycyBjaGFuZ2VkIGJ5IHRoaXMgZnVuY3Rp
b24gd2lsbCBiZQorICAgICAgICAgICAgcmVzdG9yZWQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMg
YXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKworICAgICAgICA6cGFyYW0gaW50IGxldmVsOiBUaGUg
bGV2ZWwuCisgICAgICAgIDpwYXJhbSBzdHIgbG9nZ2VyOiBUaGUgbG9nZ2VyIHRvIHVwZGF0ZS4g
SWYgbm90IGdpdmVuLCB0aGUgcm9vdCBsb2dnZXIuCiAgICAgICAgICIiIgotICAgICAgICBsb2dn
ZXJfbmFtZSA9IGxvZ2dlcgotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihsb2dn
ZXJfbmFtZSkKLSAgICAgICAgIyBzYXZlIHRoZSBvcmlnaW5hbCBsb2ctbGV2ZWwgdG8gcmVzdG9y
ZSBpdCBkdXJpbmcgdGVhcmRvd24KLSAgICAgICAgc2VsZi5faW5pdGlhbF9sb2dfbGV2ZWxzLnNl
dGRlZmF1bHQobG9nZ2VyX25hbWUsIGxvZ2dlci5sZXZlbCkKLSAgICAgICAgbG9nZ2VyLnNldExl
dmVsKGxldmVsKQorICAgICAgICBsb2dnZXJfb2JqID0gbG9nZ2luZy5nZXRMb2dnZXIobG9nZ2Vy
KQorICAgICAgICAjIFNhdmUgdGhlIG9yaWdpbmFsIGxvZy1sZXZlbCB0byByZXN0b3JlIGl0IGR1
cmluZyB0ZWFyZG93bi4KKyAgICAgICAgc2VsZi5faW5pdGlhbF9sb2dnZXJfbGV2ZWxzLnNldGRl
ZmF1bHQobG9nZ2VyLCBsb2dnZXJfb2JqLmxldmVsKQorICAgICAgICBsb2dnZXJfb2JqLnNldExl
dmVsKGxldmVsKQorICAgICAgICBpZiBzZWxmLl9pbml0aWFsX2hhbmRsZXJfbGV2ZWwgaXMgTm9u
ZToKKyAgICAgICAgICAgIHNlbGYuX2luaXRpYWxfaGFuZGxlcl9sZXZlbCA9IHNlbGYuaGFuZGxl
ci5sZXZlbAorICAgICAgICBzZWxmLmhhbmRsZXIuc2V0TGV2ZWwobGV2ZWwpCiAKICAgICBAY29u
dGV4dG1hbmFnZXIKLSAgICBkZWYgYXRfbGV2ZWwoc2VsZiwgbGV2ZWwsIGxvZ2dlcj1Ob25lKToK
LSAgICAgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgc2V0cyB0aGUgbGV2ZWwgZm9yIGNhcHR1
cmluZyBvZiBsb2dzLiBBZnRlciB0aGUgZW5kIG9mIHRoZSAnd2l0aCcgc3RhdGVtZW50IHRoZQot
ICAgICAgICBsZXZlbCBpcyByZXN0b3JlZCB0byBpdHMgb3JpZ2luYWwgdmFsdWUuCi0KLSAgICAg
ICAgOnBhcmFtIGludCBsZXZlbDogdGhlIGxvZ2dlciB0byBsZXZlbC4KLSAgICAgICAgOnBhcmFt
IHN0ciBsb2dnZXI6IHRoZSBsb2dnZXIgdG8gdXBkYXRlIHRoZSBsZXZlbC4gSWYgbm90IGdpdmVu
LCB0aGUgcm9vdCBsb2dnZXIgbGV2ZWwgaXMgdXBkYXRlZC4KKyAgICBkZWYgYXRfbGV2ZWwoCisg
ICAgICAgIHNlbGYsIGxldmVsOiBpbnQsIGxvZ2dlcjogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAg
ICApIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgIiIiQ29udGV4dCBt
YW5hZ2VyIHRoYXQgc2V0cyB0aGUgbGV2ZWwgZm9yIGNhcHR1cmluZyBvZiBsb2dzLiBBZnRlcgor
ICAgICAgICB0aGUgZW5kIG9mIHRoZSAnd2l0aCcgc3RhdGVtZW50IHRoZSBsZXZlbCBpcyByZXN0
b3JlZCB0byBpdHMgb3JpZ2luYWwKKyAgICAgICAgdmFsdWUuCisKKyAgICAgICAgOnBhcmFtIGlu
dCBsZXZlbDogVGhlIGxldmVsLgorICAgICAgICA6cGFyYW0gc3RyIGxvZ2dlcjogVGhlIGxvZ2dl
ciB0byB1cGRhdGUuIElmIG5vdCBnaXZlbiwgdGhlIHJvb3QgbG9nZ2VyLgogICAgICAgICAiIiIK
LSAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIobG9nZ2VyKQotICAgICAgICBvcmln
X2xldmVsID0gbG9nZ2VyLmxldmVsCi0gICAgICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKKyAg
ICAgICAgbG9nZ2VyX29iaiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcikKKyAgICAgICAgb3Jp
Z19sZXZlbCA9IGxvZ2dlcl9vYmoubGV2ZWwKKyAgICAgICAgbG9nZ2VyX29iai5zZXRMZXZlbChs
ZXZlbCkKKyAgICAgICAgaGFuZGxlcl9vcmlnX2xldmVsID0gc2VsZi5oYW5kbGVyLmxldmVsCisg
ICAgICAgIHNlbGYuaGFuZGxlci5zZXRMZXZlbChsZXZlbCkKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgeWllbGQKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZl
bChvcmlnX2xldmVsKQorICAgICAgICAgICAgbG9nZ2VyX29iai5zZXRMZXZlbChvcmlnX2xldmVs
KQorICAgICAgICAgICAgc2VsZi5oYW5kbGVyLnNldExldmVsKGhhbmRsZXJfb3JpZ19sZXZlbCkK
IAogCiBAcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBsb2cocmVxdWVzdCk6CitkZWYgY2FwbG9nKHJl
cXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBHZW5lcmF0b3JbTG9nQ2FwdHVyZUZpeHR1cmUsIE5v
bmUsIE5vbmVdOgogICAgICIiIkFjY2VzcyBhbmQgY29udHJvbCBsb2cgY2FwdHVyaW5nLgogCi0g
ICAgQ2FwdHVyZWQgbG9ncyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGZvbGxvd2luZyBtZXRo
b2RzOjoKKyAgICBDYXB0dXJlZCBsb2dzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgZm9sbG93
aW5nIHByb3BlcnRpZXMvbWV0aG9kczo6CiAKKyAgICAqIGNhcGxvZy5tZXNzYWdlcyAgICAgICAg
LT4gbGlzdCBvZiBmb3JtYXQtaW50ZXJwb2xhdGVkIGxvZyBtZXNzYWdlcwogICAgICogY2FwbG9n
LnRleHQgICAgICAgICAgICAtPiBzdHJpbmcgY29udGFpbmluZyBmb3JtYXR0ZWQgbG9nIG91dHB1
dAogICAgICogY2FwbG9nLnJlY29yZHMgICAgICAgICAtPiBsaXN0IG9mIGxvZ2dpbmcuTG9nUmVj
b3JkIGluc3RhbmNlcwogICAgICogY2FwbG9nLnJlY29yZF90dXBsZXMgICAtPiBsaXN0IG9mIChs
b2dnZXJfbmFtZSwgbGV2ZWwsIG1lc3NhZ2UpIHR1cGxlcwpAQCAtMzI0LDkgKzQ4NSw3IEBAIGRl
ZiBjYXBsb2cocmVxdWVzdCk6CiAgICAgcmVzdWx0Ll9maW5hbGl6ZSgpCiAKIAotZGVmIGdldF9h
Y3R1YWxfbG9nX2xldmVsKGNvbmZpZywgKnNldHRpbmdfbmFtZXMpOgotICAgICIiIlJldHVybiB0
aGUgYWN0dWFsIGxvZ2dpbmcgbGV2ZWwuIiIiCi0KK2RlZiBnZXRfbG9nX2xldmVsX2Zvcl9zZXR0
aW5nKGNvbmZpZzogQ29uZmlnLCAqc2V0dGluZ19uYW1lczogc3RyKSAtPiBPcHRpb25hbFtpbnRd
OgogICAgIGZvciBzZXR0aW5nX25hbWUgaW4gc2V0dGluZ19uYW1lczoKICAgICAgICAgbG9nX2xl
dmVsID0gY29uZmlnLmdldG9wdGlvbihzZXR0aW5nX25hbWUpCiAgICAgICAgIGlmIGxvZ19sZXZl
bCBpcyBOb25lOgpAQCAtMzM0LDIzMSArNDkzLDI5OSBAQCBkZWYgZ2V0X2FjdHVhbF9sb2dfbGV2
ZWwoY29uZmlnLCAqc2V0dGluZ19uYW1lcyk6CiAgICAgICAgIGlmIGxvZ19sZXZlbDoKICAgICAg
ICAgICAgIGJyZWFrCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuCisgICAgICAgIHJldHVybiBO
b25lCiAKLSAgICBpZiBpc2luc3RhbmNlKGxvZ19sZXZlbCwgc2l4LnN0cmluZ190eXBlcyk6Cisg
ICAgaWYgaXNpbnN0YW5jZShsb2dfbGV2ZWwsIHN0cik6CiAgICAgICAgIGxvZ19sZXZlbCA9IGxv
Z19sZXZlbC51cHBlcigpCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gaW50KGdldGF0dHIobG9n
Z2luZywgbG9nX2xldmVsLCBsb2dfbGV2ZWwpKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAg
IGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CiAgICAgICAgICMgUHl0aG9uIGxvZ2dpbmcgZG9lcyBu
b3QgcmVjb2duaXNlIHRoaXMgYXMgYSBsb2dnaW5nIGxldmVsCiAgICAgICAgIHJhaXNlIHB5dGVz
dC5Vc2FnZUVycm9yKAogICAgICAgICAgICAgIid7fScgaXMgbm90IHJlY29nbml6ZWQgYXMgYSBs
b2dnaW5nIGxldmVsIG5hbWUgZm9yICIKICAgICAgICAgICAgICIne30nLiBQbGVhc2UgY29uc2lk
ZXIgcGFzc2luZyB0aGUgIgogICAgICAgICAgICAgImxvZ2dpbmcgbGV2ZWwgbnVtIGluc3RlYWQu
Ii5mb3JtYXQobG9nX2xldmVsLCBzZXR0aW5nX25hbWUpCi0gICAgICAgICkKKyAgICAgICAgKSBm
cm9tIGUKIAogCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgorIyBydW4gYWZ0ZXIgdGVy
bWluYWxyZXBvcnRlci9jYXB0dXJlbWFuYWdlciBhcmUgY29uZmlndXJlZAorQHB5dGVzdC5ob29r
aW1wbCh0cnlsYXN0PVRydWUpCitkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWc6IENvbmZpZykg
LT4gTm9uZToKICAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3RlcihMb2dnaW5nUGx1Z2lu
KGNvbmZpZyksICJsb2dnaW5nLXBsdWdpbiIpCiAKIAotQGNvbnRleHRtYW5hZ2VyCi1kZWYgX2R1
bW15X2NvbnRleHRfbWFuYWdlcigpOgotICAgIHlpZWxkCitjbGFzcyBMb2dnaW5nUGx1Z2luOgor
ICAgICIiIkF0dGFjaGVzIHRvIHRoZSBsb2dnaW5nIG1vZHVsZSBhbmQgY2FwdHVyZXMgbG9nIG1l
c3NhZ2VzIGZvciBlYWNoIHRlc3QuIiIiCiAKLQotY2xhc3MgTG9nZ2luZ1BsdWdpbihvYmplY3Qp
OgotICAgICIiIkF0dGFjaGVzIHRvIHRoZSBsb2dnaW5nIG1vZHVsZSBhbmQgY2FwdHVyZXMgbG9n
IG1lc3NhZ2VzIGZvciBlYWNoIHRlc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY29uZmlnKToKLSAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBwbHVnaW4gdG8gY2FwdHVyZSBs
b2cgbWVzc2FnZXMuCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogQ29uZmlnKSAtPiBO
b25lOgorICAgICAgICAiIiJDcmVhdGUgYSBuZXcgcGx1Z2luIHRvIGNhcHR1cmUgbG9nIG1lc3Nh
Z2VzLgogCiAgICAgICAgIFRoZSBmb3JtYXR0ZXIgY2FuIGJlIHNhZmVseSBzaGFyZWQgYWNyb3Nz
IGFsbCBoYW5kbGVycyBzbwogICAgICAgICBjcmVhdGUgYSBzaW5nbGUgb25lIGZvciB0aGUgZW50
aXJlIHRlc3Qgc2Vzc2lvbiBoZXJlLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY29uZmln
ID0gY29uZmlnCiAKLSAgICAgICAgIyBlbmFibGUgdmVyYm9zZSBvdXRwdXQgYXV0b21hdGljYWxs
eSBpZiBsaXZlIGxvZ2dpbmcgaXMgZW5hYmxlZAotICAgICAgICBpZiBzZWxmLl9sb2dfY2xpX2Vu
YWJsZWQoKSBhbmQgbm90IGNvbmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKToKLSAgICAgICAgICAg
ICMgc2FuaXR5IGNoZWNrOiB0ZXJtaW5hbCByZXBvcnRlciBzaG91bGQgbm90IGhhdmUgYmVlbiBs
b2FkZWQgYXQgdGhpcyBwb2ludAotICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2NvbmZpZy5wbHVn
aW5tYW5hZ2VyLmdldF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKSBpcyBOb25lCi0gICAgICAg
ICAgICBjb25maWcub3B0aW9uLnZlcmJvc2UgPSAxCi0KLSAgICAgICAgc2VsZi5wcmludF9sb2dz
ID0gZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX3ByaW50IikKLSAgICAgICAgc2VsZi5mb3Jt
YXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigKKyAgICAgICAgIyBSZXBvcnQgbG9nZ2luZy4KKyAg
ICAgICAgc2VsZi5mb3JtYXR0ZXIgPSBzZWxmLl9jcmVhdGVfZm9ybWF0dGVyKAogICAgICAgICAg
ICAgZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2Zvcm1hdCIpLAogICAgICAgICAgICAgZ2V0
X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2RhdGVfZm9ybWF0IiksCisgICAgICAgICAgICBnZXRf
b3B0aW9uX2luaShjb25maWcsICJsb2dfYXV0b19pbmRlbnQiKSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmxvZ19sZXZlbCA9IGdldF9sb2dfbGV2ZWxfZm9yX3NldHRpbmcoY29uZmlnLCAibG9n
X2xldmVsIikKKyAgICAgICAgc2VsZi5jYXBsb2dfaGFuZGxlciA9IExvZ0NhcHR1cmVIYW5kbGVy
KCkKKyAgICAgICAgc2VsZi5jYXBsb2dfaGFuZGxlci5zZXRGb3JtYXR0ZXIoc2VsZi5mb3JtYXR0
ZXIpCisgICAgICAgIHNlbGYucmVwb3J0X2hhbmRsZXIgPSBMb2dDYXB0dXJlSGFuZGxlcigpCisg
ICAgICAgIHNlbGYucmVwb3J0X2hhbmRsZXIuc2V0Rm9ybWF0dGVyKHNlbGYuZm9ybWF0dGVyKQor
CisgICAgICAgICMgRmlsZSBsb2dnaW5nLgorICAgICAgICBzZWxmLmxvZ19maWxlX2xldmVsID0g
Z2V0X2xvZ19sZXZlbF9mb3Jfc2V0dGluZyhjb25maWcsICJsb2dfZmlsZV9sZXZlbCIpCisgICAg
ICAgIGxvZ19maWxlID0gZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2ZpbGUiKSBvciBvcy5k
ZXZudWxsCisgICAgICAgIGlmIGxvZ19maWxlICE9IG9zLmRldm51bGw6CisgICAgICAgICAgICBk
aXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKGxvZ19maWxlKSkKKyAg
ICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcmVjdG9yeSk6CisgICAgICAgICAgICAg
ICAgb3MubWFrZWRpcnMoZGlyZWN0b3J5KQorCisgICAgICAgIHNlbGYubG9nX2ZpbGVfaGFuZGxl
ciA9IF9GaWxlSGFuZGxlcihsb2dfZmlsZSwgbW9kZT0idyIsIGVuY29kaW5nPSJVVEYtOCIpCisg
ICAgICAgIGxvZ19maWxlX2Zvcm1hdCA9IGdldF9vcHRpb25faW5pKGNvbmZpZywgImxvZ19maWxl
X2Zvcm1hdCIsICJsb2dfZm9ybWF0IikKKyAgICAgICAgbG9nX2ZpbGVfZGF0ZV9mb3JtYXQgPSBn
ZXRfb3B0aW9uX2luaSgKKyAgICAgICAgICAgIGNvbmZpZywgImxvZ19maWxlX2RhdGVfZm9ybWF0
IiwgImxvZ19kYXRlX2Zvcm1hdCIKICAgICAgICAgKQotICAgICAgICBzZWxmLmxvZ19sZXZlbCA9
IGdldF9hY3R1YWxfbG9nX2xldmVsKGNvbmZpZywgImxvZ19sZXZlbCIpCiAKLSAgICAgICAgbG9n
X2ZpbGUgPSBnZXRfb3B0aW9uX2luaShjb25maWcsICJsb2dfZmlsZSIpCi0gICAgICAgIGlmIGxv
Z19maWxlOgotICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9sZXZlbCA9IGdldF9hY3R1YWxfbG9n
X2xldmVsKGNvbmZpZywgImxvZ19maWxlX2xldmVsIikKKyAgICAgICAgbG9nX2ZpbGVfZm9ybWF0
dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoCisgICAgICAgICAgICBsb2dfZmlsZV9mb3JtYXQsIGRh
dGVmbXQ9bG9nX2ZpbGVfZGF0ZV9mb3JtYXQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmxvZ19m
aWxlX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ19maWxlX2Zvcm1hdHRlcikKIAotICAgICAgICAg
ICAgbG9nX2ZpbGVfZm9ybWF0ID0gZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAibG9nX2ZpbGVfZm9y
bWF0IiwgImxvZ19mb3JtYXQiKQotICAgICAgICAgICAgbG9nX2ZpbGVfZGF0ZV9mb3JtYXQgPSBn
ZXRfb3B0aW9uX2luaSgKLSAgICAgICAgICAgICAgICBjb25maWcsICJsb2dfZmlsZV9kYXRlX2Zv
cm1hdCIsICJsb2dfZGF0ZV9mb3JtYXQiCi0gICAgICAgICAgICApCi0gICAgICAgICAgICAjIEVh
Y2ggcHl0ZXN0IHJ1bnRlc3RzIHNlc3Npb24gd2lsbCB3cml0ZSB0byBhIGNsZWFuIGxvZ2ZpbGUK
LSAgICAgICAgICAgIHNlbGYubG9nX2ZpbGVfaGFuZGxlciA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIo
bG9nX2ZpbGUsIG1vZGU9InciKQotICAgICAgICAgICAgbG9nX2ZpbGVfZm9ybWF0dGVyID0gbG9n
Z2luZy5Gb3JtYXR0ZXIoCi0gICAgICAgICAgICAgICAgbG9nX2ZpbGVfZm9ybWF0LCBkYXRlZm10
PWxvZ19maWxlX2RhdGVfZm9ybWF0Ci0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmxv
Z19maWxlX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ19maWxlX2Zvcm1hdHRlcikKKyAgICAgICAg
IyBDTEkvbGl2ZSBsb2dnaW5nLgorICAgICAgICBzZWxmLmxvZ19jbGlfbGV2ZWwgPSBnZXRfbG9n
X2xldmVsX2Zvcl9zZXR0aW5nKAorICAgICAgICAgICAgY29uZmlnLCAibG9nX2NsaV9sZXZlbCIs
ICJsb2dfbGV2ZWwiCisgICAgICAgICkKKyAgICAgICAgaWYgc2VsZi5fbG9nX2NsaV9lbmFibGVk
KCk6CisgICAgICAgICAgICB0ZXJtaW5hbF9yZXBvcnRlciA9IGNvbmZpZy5wbHVnaW5tYW5hZ2Vy
LmdldF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKQorICAgICAgICAgICAgY2FwdHVyZV9tYW5h
Z2VyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQor
ICAgICAgICAgICAgIyBpZiBjYXB0dXJlbWFuYWdlciBwbHVnaW4gaXMgZGlzYWJsZWQsIGxpdmUg
bG9nZ2luZyBzdGlsbCB3b3Jrcy4KKyAgICAgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyID0g
X0xpdmVMb2dnaW5nU3RyZWFtSGFuZGxlcigKKyAgICAgICAgICAgICAgICB0ZXJtaW5hbF9yZXBv
cnRlciwgY2FwdHVyZV9tYW5hZ2VyCisgICAgICAgICAgICApICAjIHR5cGU6IFVuaW9uW19MaXZl
TG9nZ2luZ1N0cmVhbUhhbmRsZXIsIF9MaXZlTG9nZ2luZ051bGxIYW5kbGVyXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIgPSBfTGl2ZUxvZ2dpbmdOdWxs
SGFuZGxlcigpCisgICAgICAgIGxvZ19jbGlfZm9ybWF0dGVyID0gc2VsZi5fY3JlYXRlX2Zvcm1h
dHRlcigKKyAgICAgICAgICAgIGdldF9vcHRpb25faW5pKGNvbmZpZywgImxvZ19jbGlfZm9ybWF0
IiwgImxvZ19mb3JtYXQiKSwKKyAgICAgICAgICAgIGdldF9vcHRpb25faW5pKGNvbmZpZywgImxv
Z19jbGlfZGF0ZV9mb3JtYXQiLCAibG9nX2RhdGVfZm9ybWF0IiksCisgICAgICAgICAgICBnZXRf
b3B0aW9uX2luaShjb25maWcsICJsb2dfYXV0b19pbmRlbnQiKSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmxvZ19jbGlfaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nX2NsaV9mb3JtYXR0ZXIpCisK
KyAgICBkZWYgX2NyZWF0ZV9mb3JtYXR0ZXIoc2VsZiwgbG9nX2Zvcm1hdCwgbG9nX2RhdGVfZm9y
bWF0LCBhdXRvX2luZGVudCk6CisgICAgICAgICMgQ29sb3Igb3B0aW9uIGRvZXNuJ3QgZXhpc3Qg
aWYgdGVybWluYWwgcGx1Z2luIGlzIGRpc2FibGVkLgorICAgICAgICBjb2xvciA9IGdldGF0dHIo
c2VsZi5fY29uZmlnLm9wdGlvbiwgImNvbG9yIiwgIm5vIikKKyAgICAgICAgaWYgY29sb3IgIT0g
Im5vIiBhbmQgQ29sb3JlZExldmVsRm9ybWF0dGVyLkxFVkVMTkFNRV9GTVRfUkVHRVguc2VhcmNo
KAorICAgICAgICAgICAgbG9nX2Zvcm1hdAorICAgICAgICApOgorICAgICAgICAgICAgZm9ybWF0
dGVyID0gQ29sb3JlZExldmVsRm9ybWF0dGVyKAorICAgICAgICAgICAgICAgIGNyZWF0ZV90ZXJt
aW5hbF93cml0ZXIoc2VsZi5fY29uZmlnKSwgbG9nX2Zvcm1hdCwgbG9nX2RhdGVfZm9ybWF0Cisg
ICAgICAgICAgICApICAjIHR5cGU6IGxvZ2dpbmcuRm9ybWF0dGVyCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBzZWxmLmxvZ19maWxlX2hhbmRsZXIgPSBOb25lCisgICAgICAgICAgICBmb3Jt
YXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcihsb2dfZm9ybWF0LCBsb2dfZGF0ZV9mb3JtYXQpCiAK
LSAgICAgICAgIyBpbml0aWFsaXplZCBkdXJpbmcgcHl0ZXN0X3J1bnRlc3Rsb29wCi0gICAgICAg
IHNlbGYubG9nX2NsaV9oYW5kbGVyID0gTm9uZQorICAgICAgICBmb3JtYXR0ZXIuX3N0eWxlID0g
UGVyY2VudFN0eWxlTXVsdGlsaW5lKAorICAgICAgICAgICAgZm9ybWF0dGVyLl9zdHlsZS5fZm10
LCBhdXRvX2luZGVudD1hdXRvX2luZGVudAorICAgICAgICApCiAKLSAgICBkZWYgX2xvZ19jbGlf
ZW5hYmxlZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgbG9nX2NsaSBzaG91bGQg
YmUgY29uc2lkZXJlZCBlbmFibGVkLCBlaXRoZXIgZXhwbGljaXRseQotICAgICAgICBvciBiZWNh
dXNlIC0tbG9nLWNsaS1sZXZlbCB3YXMgZ2l2ZW4gaW4gdGhlIGNvbW1hbmQtbGluZS4KKyAgICAg
ICAgcmV0dXJuIGZvcm1hdHRlcgorCisgICAgZGVmIHNldF9sb2dfcGF0aChzZWxmLCBmbmFtZTog
c3RyKSAtPiBOb25lOgorICAgICAgICAiIiJTZXQgdGhlIGZpbGVuYW1lIHBhcmFtZXRlciBmb3Ig
TG9nZ2luZy5GaWxlSGFuZGxlcigpLgorCisgICAgICAgIENyZWF0ZXMgcGFyZW50IGRpcmVjdG9y
eSBpZiBpdCBkb2VzIG5vdCBleGlzdC4KKworICAgICAgICAuLiB3YXJuaW5nOjoKKyAgICAgICAg
ICAgIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIEFQSS4KICAgICAgICAgIiIiCi0gICAgICAgIHJl
dHVybiBzZWxmLl9jb25maWcuZ2V0b3B0aW9uKAotICAgICAgICAgICAgIi0tbG9nLWNsaS1sZXZl
bCIKLSAgICAgICAgKSBpcyBub3QgTm9uZSBvciBzZWxmLl9jb25maWcuZ2V0aW5pKAotICAgICAg
ICAgICAgImxvZ19jbGkiCi0gICAgICAgICkKKyAgICAgICAgZnBhdGggPSBQYXRoKGZuYW1lKQog
Ci0gICAgQGNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIF9ydW50ZXN0X2ZvcihzZWxmLCBpdGVtLCB3
aGVuKToKLSAgICAgICAgIiIiSW1wbGVtZW50cyB0aGUgaW50ZXJuYWxzIG9mIHB5dGVzdF9ydW50
ZXN0X3h4eCgpIGhvb2suIiIiCi0gICAgICAgIHdpdGggY2F0Y2hpbmdfbG9ncygKLSAgICAgICAg
ICAgIExvZ0NhcHR1cmVIYW5kbGVyKCksIGZvcm1hdHRlcj1zZWxmLmZvcm1hdHRlciwgbGV2ZWw9
c2VsZi5sb2dfbGV2ZWwKLSAgICAgICAgKSBhcyBsb2dfaGFuZGxlcjoKLSAgICAgICAgICAgIGlm
IHNlbGYubG9nX2NsaV9oYW5kbGVyOgotICAgICAgICAgICAgICAgIHNlbGYubG9nX2NsaV9oYW5k
bGVyLnNldF93aGVuKHdoZW4pCi0KLSAgICAgICAgICAgIGlmIGl0ZW0gaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICB5aWVsZCAgIyBydW4gdGhlIHRlc3QKLSAgICAgICAgICAgICAgICByZXR1cm4K
LQotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoaXRlbSwgImNhdGNoX2xvZ19oYW5kbGVycyIp
OgotICAgICAgICAgICAgICAgIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXJzID0ge30KLSAgICAgICAg
ICAgIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXJzW3doZW5dID0gbG9nX2hhbmRsZXIKLSAgICAgICAg
ICAgIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXIgPSBsb2dfaGFuZGxlcgorICAgICAgICBpZiBub3Qg
ZnBhdGguaXNfYWJzb2x1dGUoKToKKyAgICAgICAgICAgIGZwYXRoID0gc2VsZi5fY29uZmlnLnJv
b3RwYXRoIC8gZnBhdGgKKworICAgICAgICBpZiBub3QgZnBhdGgucGFyZW50LmV4aXN0cygpOgor
ICAgICAgICAgICAgZnBhdGgucGFyZW50Lm1rZGlyKGV4aXN0X29rPVRydWUsIHBhcmVudHM9VHJ1
ZSkKKworICAgICAgICBzdHJlYW0gPSBmcGF0aC5vcGVuKG1vZGU9InciLCBlbmNvZGluZz0iVVRG
LTgiKQorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA3KToKKyAgICAgICAgICAg
IG9sZF9zdHJlYW0gPSBzZWxmLmxvZ19maWxlX2hhbmRsZXIuc2V0U3RyZWFtKHN0cmVhbSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIG9sZF9zdHJlYW0gPSBzZWxmLmxvZ19maWxlX2hhbmRs
ZXIuc3RyZWFtCisgICAgICAgICAgICBzZWxmLmxvZ19maWxlX2hhbmRsZXIuYWNxdWlyZSgpCiAg
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgeWllbGQgICMgcnVuIHRlc3QKKyAgICAg
ICAgICAgICAgICBzZWxmLmxvZ19maWxlX2hhbmRsZXIuZmx1c2goKQorICAgICAgICAgICAgICAg
IHNlbGYubG9nX2ZpbGVfaGFuZGxlci5zdHJlYW0gPSBzdHJlYW0KICAgICAgICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICAgICAgZGVsIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXIKLSAgICAgICAg
ICAgICAgICBpZiB3aGVuID09ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBp
dGVtLmNhdGNoX2xvZ19oYW5kbGVycworICAgICAgICAgICAgICAgIHNlbGYubG9nX2ZpbGVfaGFu
ZGxlci5yZWxlYXNlKCkKKyAgICAgICAgaWYgb2xkX3N0cmVhbToKKyAgICAgICAgICAgIG9sZF9z
dHJlYW0uY2xvc2UoKQogCi0gICAgICAgICAgICBpZiBzZWxmLnByaW50X2xvZ3M6Ci0gICAgICAg
ICAgICAgICAgIyBBZGQgYSBjYXB0dXJlZCBsb2cgc2VjdGlvbiB0byB0aGUgcmVwb3J0LgotICAg
ICAgICAgICAgICAgIGxvZyA9IGxvZ19oYW5kbGVyLnN0cmVhbS5nZXR2YWx1ZSgpLnN0cmlwKCkK
LSAgICAgICAgICAgICAgICBpdGVtLmFkZF9yZXBvcnRfc2VjdGlvbih3aGVuLCAibG9nIiwgbG9n
KQorICAgIGRlZiBfbG9nX2NsaV9lbmFibGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hl
dGhlciBsaXZlIGxvZ2dpbmcgaXMgZW5hYmxlZC4iIiIKKyAgICAgICAgZW5hYmxlZCA9IHNlbGYu
X2NvbmZpZy5nZXRvcHRpb24oCisgICAgICAgICAgICAiLS1sb2ctY2xpLWxldmVsIgorICAgICAg
ICApIGlzIG5vdCBOb25lIG9yIHNlbGYuX2NvbmZpZy5nZXRpbmkoImxvZ19jbGkiKQorICAgICAg
ICBpZiBub3QgZW5hYmxlZDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgQHB5dGVz
dC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1
cChzZWxmLCBpdGVtKToKLSAgICAgICAgd2l0aCBzZWxmLl9ydW50ZXN0X2ZvcihpdGVtLCAic2V0
dXAiKToKLSAgICAgICAgICAgIHlpZWxkCisgICAgICAgIHRlcm1pbmFsX3JlcG9ydGVyID0gc2Vs
Zi5fY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigidGVybWluYWxyZXBvcnRlciIpCisg
ICAgICAgIGlmIHRlcm1pbmFsX3JlcG9ydGVyIGlzIE5vbmU6CisgICAgICAgICAgICAjIHRlcm1p
bmFsIHJlcG9ydGVyIGlzIGRpc2FibGVkIGUuZy4gYnkgcHl0ZXN0LXhkaXN0LgorICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIEBweXRlc3QuaG9v
a2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5Zmlyc3Q9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X3Nl
c3Npb25zdGFydChzZWxmKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAg
IHNlbGYubG9nX2NsaV9oYW5kbGVyLnNldF93aGVuKCJzZXNzaW9uc3RhcnQiKQorCisgICAgICAg
IHdpdGggY2F0Y2hpbmdfbG9ncyhzZWxmLmxvZ19jbGlfaGFuZGxlciwgbGV2ZWw9c2VsZi5sb2df
Y2xpX2xldmVsKToKKyAgICAgICAgICAgIHdpdGggY2F0Y2hpbmdfbG9ncyhzZWxmLmxvZ19maWxl
X2hhbmRsZXIsIGxldmVsPXNlbGYubG9nX2ZpbGVfbGV2ZWwpOgorICAgICAgICAgICAgICAgIHlp
ZWxkCisKKyAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRy
dWUpCisgICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uKHNlbGYpIC0+IEdlbmVyYXRvcltOb25lLCBO
b25lLCBOb25lXToKKyAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIuc2V0X3doZW4oImNvbGxl
Y3Rpb24iKQorCisgICAgICAgIHdpdGggY2F0Y2hpbmdfbG9ncyhzZWxmLmxvZ19jbGlfaGFuZGxl
ciwgbGV2ZWw9c2VsZi5sb2dfY2xpX2xldmVsKToKKyAgICAgICAgICAgIHdpdGggY2F0Y2hpbmdf
bG9ncyhzZWxmLmxvZ19maWxlX2hhbmRsZXIsIGxldmVsPXNlbGYubG9nX2ZpbGVfbGV2ZWwpOgor
ICAgICAgICAgICAgICAgIHlpZWxkCiAKICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVy
PVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoc2VsZiwgaXRlbSk6Ci0gICAgICAg
IHdpdGggc2VsZi5fcnVudGVzdF9mb3IoaXRlbSwgImNhbGwiKToKKyAgICBkZWYgcHl0ZXN0X3J1
bnRlc3Rsb29wKHNlbGYsIHNlc3Npb246IFNlc3Npb24pIC0+IEdlbmVyYXRvcltOb25lLCBOb25l
LCBOb25lXToKKyAgICAgICAgaWYgc2Vzc2lvbi5jb25maWcub3B0aW9uLmNvbGxlY3Rvbmx5Ogog
ICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYu
X2xvZ19jbGlfZW5hYmxlZCgpIGFuZCBzZWxmLl9jb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3NlIikg
PCAxOgorICAgICAgICAgICAgIyBUaGUgdmVyYm9zZSBmbGFnIGlzIG5lZWRlZCB0byBhdm9pZCBt
ZXNzeSB0ZXN0IHByb2dyZXNzIG91dHB1dC4KKyAgICAgICAgICAgIHNlbGYuX2NvbmZpZy5vcHRp
b24udmVyYm9zZSA9IDEKKworICAgICAgICB3aXRoIGNhdGNoaW5nX2xvZ3Moc2VsZi5sb2dfY2xp
X2hhbmRsZXIsIGxldmVsPXNlbGYubG9nX2NsaV9sZXZlbCk6CisgICAgICAgICAgICB3aXRoIGNh
dGNoaW5nX2xvZ3Moc2VsZi5sb2dfZmlsZV9oYW5kbGVyLCBsZXZlbD1zZWxmLmxvZ19maWxlX2xl
dmVsKToKKyAgICAgICAgICAgICAgICB5aWVsZCAgIyBSdW4gYWxsIHRoZSB0ZXN0cy4KKworICAg
IEBweXRlc3QuaG9va2ltcGwKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQoc2VsZikg
LT4gTm9uZToKKyAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIucmVzZXQoKQorICAgICAgICBz
ZWxmLmxvZ19jbGlfaGFuZGxlci5zZXRfd2hlbigic3RhcnQiKQorCisgICAgQHB5dGVzdC5ob29r
aW1wbAorICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQoc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIuc2V0X3doZW4oImxvZ3JlcG9ydCIpCisKKyAgICBk
ZWYgX3J1bnRlc3RfZm9yKHNlbGYsIGl0ZW06IG5vZGVzLkl0ZW0sIHdoZW46IHN0cikgLT4gR2Vu
ZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICAiIiJJbXBsZW1lbnQgdGhlIGludGVy
bmFscyBvZiB0aGUgcHl0ZXN0X3J1bnRlc3RfeHh4KCkgaG9va3MuIiIiCisgICAgICAgIHdpdGgg
Y2F0Y2hpbmdfbG9ncygKKyAgICAgICAgICAgIHNlbGYuY2FwbG9nX2hhbmRsZXIsIGxldmVsPXNl
bGYubG9nX2xldmVsLAorICAgICAgICApIGFzIGNhcGxvZ19oYW5kbGVyLCBjYXRjaGluZ19sb2dz
KAorICAgICAgICAgICAgc2VsZi5yZXBvcnRfaGFuZGxlciwgbGV2ZWw9c2VsZi5sb2dfbGV2ZWws
CisgICAgICAgICkgYXMgcmVwb3J0X2hhbmRsZXI6CisgICAgICAgICAgICBjYXBsb2dfaGFuZGxl
ci5yZXNldCgpCisgICAgICAgICAgICByZXBvcnRfaGFuZGxlci5yZXNldCgpCisgICAgICAgICAg
ICBpdGVtLl9zdG9yZVtjYXBsb2dfcmVjb3Jkc19rZXldW3doZW5dID0gY2FwbG9nX2hhbmRsZXIu
cmVjb3JkcworICAgICAgICAgICAgaXRlbS5fc3RvcmVbY2FwbG9nX2hhbmRsZXJfa2V5XSA9IGNh
cGxvZ19oYW5kbGVyCiAKLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0g
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X3RlYXJkb3duKHNlbGYsIGl0ZW0pOgotICAgICAgICB3aXRo
IHNlbGYuX3J1bnRlc3RfZm9yKGl0ZW0sICJ0ZWFyZG93biIpOgogICAgICAgICAgICAgeWllbGQK
IAorICAgICAgICAgICAgbG9nID0gcmVwb3J0X2hhbmRsZXIuc3RyZWFtLmdldHZhbHVlKCkuc3Ry
aXAoKQorICAgICAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgImxvZyIsIGxv
ZykKKwogICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0
ZXN0X3J1bnRlc3RfbG9nc3RhcnQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubG9nX2NsaV9oYW5k
bGVyOgotICAgICAgICAgICAgc2VsZi5sb2dfY2xpX2hhbmRsZXIucmVzZXQoKQotICAgICAgICB3
aXRoIHNlbGYuX3J1bnRlc3RfZm9yKE5vbmUsICJzdGFydCIpOgotICAgICAgICAgICAgeWllbGQK
KyAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoc2VsZiwgaXRlbTogbm9kZXMuSXRlbSkgLT4g
R2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICBzZWxmLmxvZ19jbGlfaGFuZGxl
ci5zZXRfd2hlbigic2V0dXAiKQorCisgICAgICAgIGVtcHR5ID0ge30gICMgdHlwZTogRGljdFtz
dHIsIExpc3RbbG9nZ2luZy5Mb2dSZWNvcmRdXQorICAgICAgICBpdGVtLl9zdG9yZVtjYXBsb2df
cmVjb3Jkc19rZXldID0gZW1wdHkKKyAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9ydW50ZXN0X2Zv
cihpdGVtLCAic2V0dXAiKQogCiAgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVl
KQotICAgIGRlZiBweXRlc3RfcnVudGVzdF9sb2dmaW5pc2goc2VsZik6Ci0gICAgICAgIHdpdGgg
c2VsZi5fcnVudGVzdF9mb3IoTm9uZSwgImZpbmlzaCIpOgotICAgICAgICAgICAgeWllbGQKKyAg
ICBkZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChzZWxmLCBpdGVtOiBub2Rlcy5JdGVtKSAtPiBHZW5l
cmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyLnNl
dF93aGVuKCJjYWxsIikKKworICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX3J1bnRlc3RfZm9yKGl0
ZW0sICJjYWxsIikKIAogICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAg
ICBkZWYgcHl0ZXN0X3J1bnRlc3Rsb29wKHNlbGYsIHNlc3Npb24pOgotICAgICAgICAiIiJSdW5z
IGFsbCBjb2xsZWN0ZWQgdGVzdCBpdGVtcy4iIiIKLSAgICAgICAgc2VsZi5fc2V0dXBfY2xpX2xv
Z2dpbmcoKQotICAgICAgICB3aXRoIHNlbGYubGl2ZV9sb2dzX2NvbnRleHQ6Ci0gICAgICAgICAg
ICBpZiBzZWxmLmxvZ19maWxlX2hhbmRsZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
d2l0aCBjbG9zaW5nKHNlbGYubG9nX2ZpbGVfaGFuZGxlcik6Ci0gICAgICAgICAgICAgICAgICAg
IHdpdGggY2F0Y2hpbmdfbG9ncygKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nX2Zp
bGVfaGFuZGxlciwgbGV2ZWw9c2VsZi5sb2dfZmlsZV9sZXZlbAotICAgICAgICAgICAgICAgICAg
ICApOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgICMgcnVuIGFsbCB0aGUgdGVzdHMK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgeWllbGQgICMgcnVuIGFsbCB0aGUg
dGVzdHMKKyAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oc2VsZiwgaXRlbTogbm9kZXMu
SXRlbSkgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICBzZWxmLmxvZ19j
bGlfaGFuZGxlci5zZXRfd2hlbigidGVhcmRvd24iKQogCi0gICAgZGVmIF9zZXR1cF9jbGlfbG9n
Z2luZyhzZWxmKToKLSAgICAgICAgIiIiU2V0cyB1cCB0aGUgaGFuZGxlciBhbmQgbG9nZ2VyIGZv
ciB0aGUgTGl2ZSBMb2dzIGZlYXR1cmUsIGlmIGVuYWJsZWQuCisgICAgICAgIHlpZWxkIGZyb20g
c2VsZi5fcnVudGVzdF9mb3IoaXRlbSwgInRlYXJkb3duIikKKyAgICAgICAgZGVsIGl0ZW0uX3N0
b3JlW2NhcGxvZ19yZWNvcmRzX2tleV0KKyAgICAgICAgZGVsIGl0ZW0uX3N0b3JlW2NhcGxvZ19o
YW5kbGVyX2tleV0KIAotICAgICAgICBUaGlzIG11c3QgYmUgZG9uZSByaWdodCBiZWZvcmUgc3Rh
cnRpbmcgdGhlIGxvb3Agc28gd2UgY2FuIGFjY2VzcyB0aGUgdGVybWluYWwgcmVwb3J0ZXIgcGx1
Z2luLgotICAgICAgICAiIiIKLSAgICAgICAgdGVybWluYWxfcmVwb3J0ZXIgPSBzZWxmLl9jb25m
aWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2luKCJ0ZXJtaW5hbHJlcG9ydGVyIikKLSAgICAgICAg
aWYgc2VsZi5fbG9nX2NsaV9lbmFibGVkKCkgYW5kIHRlcm1pbmFsX3JlcG9ydGVyIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgY2FwdHVyZV9tYW5hZ2VyID0gc2VsZi5fY29uZmlnLnBsdWdpbm1h
bmFnZXIuZ2V0X3BsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQotICAgICAgICAgICAgbG9nX2NsaV9o
YW5kbGVyID0gX0xpdmVMb2dnaW5nU3RyZWFtSGFuZGxlcigKLSAgICAgICAgICAgICAgICB0ZXJt
aW5hbF9yZXBvcnRlciwgY2FwdHVyZV9tYW5hZ2VyCi0gICAgICAgICAgICApCi0gICAgICAgICAg
ICBsb2dfY2xpX2Zvcm1hdCA9IGdldF9vcHRpb25faW5pKAotICAgICAgICAgICAgICAgIHNlbGYu
X2NvbmZpZywgImxvZ19jbGlfZm9ybWF0IiwgImxvZ19mb3JtYXQiCi0gICAgICAgICAgICApCi0g
ICAgICAgICAgICBsb2dfY2xpX2RhdGVfZm9ybWF0ID0gZ2V0X29wdGlvbl9pbmkoCi0gICAgICAg
ICAgICAgICAgc2VsZi5fY29uZmlnLCAibG9nX2NsaV9kYXRlX2Zvcm1hdCIsICJsb2dfZGF0ZV9m
b3JtYXQiCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAgICAg
c2VsZi5fY29uZmlnLm9wdGlvbi5jb2xvciAhPSAibm8iCi0gICAgICAgICAgICAgICAgYW5kIENv
bG9yZWRMZXZlbEZvcm1hdHRlci5MRVZFTE5BTUVfRk1UX1JFR0VYLnNlYXJjaChsb2dfY2xpX2Zv
cm1hdCkKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgbG9nX2NsaV9mb3JtYXR0ZXIg
PSBDb2xvcmVkTGV2ZWxGb3JtYXR0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV90ZXJt
aW5hbF93cml0ZXIoc2VsZi5fY29uZmlnKSwKLSAgICAgICAgICAgICAgICAgICAgbG9nX2NsaV9m
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIGRhdGVmbXQ9bG9nX2NsaV9kYXRlX2Zvcm1hdCwK
LSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxv
Z19jbGlfZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoCi0gICAgICAgICAgICAgICAgICAg
IGxvZ19jbGlfZm9ybWF0LCBkYXRlZm10PWxvZ19jbGlfZGF0ZV9mb3JtYXQKLSAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICBsb2dfY2xpX2xldmVsID0gZ2V0X2FjdHVhbF9sb2dfbGV2ZWwo
Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29uZmlnLCAibG9nX2NsaV9sZXZlbCIsICJsb2dfbGV2
ZWwiCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmxvZ19jbGlfaGFuZGxlciA9IGxv
Z19jbGlfaGFuZGxlcgotICAgICAgICAgICAgc2VsZi5saXZlX2xvZ3NfY29udGV4dCA9IGNhdGNo
aW5nX2xvZ3MoCi0gICAgICAgICAgICAgICAgbG9nX2NsaV9oYW5kbGVyLCBmb3JtYXR0ZXI9bG9n
X2NsaV9mb3JtYXR0ZXIsIGxldmVsPWxvZ19jbGlfbGV2ZWwKLSAgICAgICAgICAgICkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubGl2ZV9sb2dzX2NvbnRleHQgPSBfZHVtbXlfY29u
dGV4dF9tYW5hZ2VyKCkKKyAgICBAcHl0ZXN0Lmhvb2tpbXBsCisgICAgZGVmIHB5dGVzdF9ydW50
ZXN0X2xvZ2ZpbmlzaChzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmxvZ19jbGlfaGFuZGxl
ci5zZXRfd2hlbigiZmluaXNoIikKKworICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9
VHJ1ZSwgdHJ5Zmlyc3Q9VHJ1ZSkKKyAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2VsZikg
LT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICAgICBzZWxmLmxvZ19jbGlfaGFu
ZGxlci5zZXRfd2hlbigic2Vzc2lvbmZpbmlzaCIpCisKKyAgICAgICAgd2l0aCBjYXRjaGluZ19s
b2dzKHNlbGYubG9nX2NsaV9oYW5kbGVyLCBsZXZlbD1zZWxmLmxvZ19jbGlfbGV2ZWwpOgorICAg
ICAgICAgICAgd2l0aCBjYXRjaGluZ19sb2dzKHNlbGYubG9nX2ZpbGVfaGFuZGxlciwgbGV2ZWw9
c2VsZi5sb2dfZmlsZV9sZXZlbCk6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgIEBweXRl
c3QuaG9va2ltcGwKKyAgICBkZWYgcHl0ZXN0X3VuY29uZmlndXJlKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgICMgQ2xvc2UgdGhlIEZpbGVIYW5kbGVyIGV4cGxpY2l0bHkuCisgICAgICAgICMgKGxv
Z2dpbmcuc2h1dGRvd24gbWlnaHQgaGF2ZSBsb3N0IHRoZSB3ZWFrcmVmPyEpCisgICAgICAgIHNl
bGYubG9nX2ZpbGVfaGFuZGxlci5jbG9zZSgpCisKKworY2xhc3MgX0ZpbGVIYW5kbGVyKGxvZ2dp
bmcuRmlsZUhhbmRsZXIpOgorICAgICIiIkEgbG9nZ2luZyBGaWxlSGFuZGxlciB3aXRoIHB5dGVz
dCB0d2Vha3MuIiIiCisKKyAgICBkZWYgaGFuZGxlRXJyb3Ioc2VsZiwgcmVjb3JkOiBsb2dnaW5n
LkxvZ1JlY29yZCkgLT4gTm9uZToKKyAgICAgICAgIyBIYW5kbGVkIGJ5IExvZ0NhcHR1cmVIYW5k
bGVyLgorICAgICAgICBwYXNzCiAKIAogY2xhc3MgX0xpdmVMb2dnaW5nU3RyZWFtSGFuZGxlcihs
b2dnaW5nLlN0cmVhbUhhbmRsZXIpOgotICAgICIiIgotICAgIEN1c3RvbSBTdHJlYW1IYW5kbGVy
IHVzZWQgYnkgdGhlIGxpdmUgbG9nZ2luZyBmZWF0dXJlOiBpdCB3aWxsIHdyaXRlIGEgbmV3bGlu
ZSBiZWZvcmUgdGhlIGZpcnN0IGxvZyBtZXNzYWdlCi0gICAgaW4gZWFjaCB0ZXN0LgorICAgICIi
IkEgbG9nZ2luZyBTdHJlYW1IYW5kbGVyIHVzZWQgYnkgdGhlIGxpdmUgbG9nZ2luZyBmZWF0dXJl
OiBpdCB3aWxsCisgICAgd3JpdGUgYSBuZXdsaW5lIGJlZm9yZSB0aGUgZmlyc3QgbG9nIG1lc3Nh
Z2UgaW4gZWFjaCB0ZXN0LgogCi0gICAgRHVyaW5nIGxpdmUgbG9nZ2luZyB3ZSBtdXN0IGFsc28g
ZXhwbGljaXRseSBkaXNhYmxlIHN0ZG91dC9zdGRlcnIgY2FwdHVyaW5nIG90aGVyd2lzZSBpdCB3
aWxsIGdldCBjYXB0dXJlZAotICAgIGFuZCB3b24ndCBhcHBlYXIgaW4gdGhlIHRlcm1pbmFsLgor
ICAgIER1cmluZyBsaXZlIGxvZ2dpbmcgd2UgbXVzdCBhbHNvIGV4cGxpY2l0bHkgZGlzYWJsZSBz
dGRvdXQvc3RkZXJyCisgICAgY2FwdHVyaW5nIG90aGVyd2lzZSBpdCB3aWxsIGdldCBjYXB0dXJl
ZCBhbmQgd29uJ3QgYXBwZWFyIGluIHRoZQorICAgIHRlcm1pbmFsLgogICAgICIiIgogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRlcm1pbmFsX3JlcG9ydGVyLCBjYXB0dXJlX21hbmFnZXIpOgot
ICAgICAgICAiIiIKLSAgICAgICAgOnBhcmFtIF9weXRlc3QudGVybWluYWwuVGVybWluYWxSZXBv
cnRlciB0ZXJtaW5hbF9yZXBvcnRlcjoKLSAgICAgICAgOnBhcmFtIF9weXRlc3QuY2FwdHVyZS5D
YXB0dXJlTWFuYWdlciBjYXB0dXJlX21hbmFnZXI6Ci0gICAgICAgICIiIgotICAgICAgICBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIuX19pbml0X18oc2VsZiwgc3RyZWFtPXRlcm1pbmFsX3JlcG9ydGVy
KQorICAgICMgT2ZmaWNpYWxseSBzdHJlYW0gbmVlZHMgdG8gYmUgYSBJT1tzdHJdLCBidXQgVGVy
bWluYWxSZXBvcnRlcgorICAgICMgaXNuJ3QuIFNvIGZvcmNlIGl0LgorICAgIHN0cmVhbSA9IE5v
bmUgICMgdHlwZTogVGVybWluYWxSZXBvcnRlciAjIHR5cGU6IGlnbm9yZQorCisgICAgZGVmIF9f
aW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICB0ZXJtaW5hbF9yZXBvcnRlcjogVGVybWlu
YWxSZXBvcnRlciwKKyAgICAgICAgY2FwdHVyZV9tYW5hZ2VyOiBPcHRpb25hbFtDYXB0dXJlTWFu
YWdlcl0sCisgICAgKSAtPiBOb25lOgorICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIuX19p
bml0X18oc2VsZiwgc3RyZWFtPXRlcm1pbmFsX3JlcG9ydGVyKSAgIyB0eXBlOiBpZ25vcmVbYXJn
LXR5cGVdCiAgICAgICAgIHNlbGYuY2FwdHVyZV9tYW5hZ2VyID0gY2FwdHVyZV9tYW5hZ2VyCiAg
ICAgICAgIHNlbGYucmVzZXQoKQogICAgICAgICBzZWxmLnNldF93aGVuKE5vbmUpCiAgICAgICAg
IHNlbGYuX3Rlc3Rfb3V0Y29tZV93cml0dGVuID0gRmFsc2UKIAotICAgIGRlZiByZXNldChzZWxm
KToKLSAgICAgICAgIiIiUmVzZXQgdGhlIGhhbmRsZXI7IHNob3VsZCBiZSBjYWxsZWQgYmVmb3Jl
IHRoZSBzdGFydCBvZiBlYWNoIHRlc3QiIiIKKyAgICBkZWYgcmVzZXQoc2VsZikgLT4gTm9uZToK
KyAgICAgICAgIiIiUmVzZXQgdGhlIGhhbmRsZXI7IHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRo
ZSBzdGFydCBvZiBlYWNoIHRlc3QuIiIiCiAgICAgICAgIHNlbGYuX2ZpcnN0X3JlY29yZF9lbWl0
dGVkID0gRmFsc2UKIAotICAgIGRlZiBzZXRfd2hlbihzZWxmLCB3aGVuKToKLSAgICAgICAgIiIi
UHJlcGFyZXMgZm9yIHRoZSBnaXZlbiB0ZXN0IHBoYXNlIChzZXR1cC9jYWxsL3RlYXJkb3duKSIi
IgorICAgIGRlZiBzZXRfd2hlbihzZWxmLCB3aGVuOiBPcHRpb25hbFtzdHJdKSAtPiBOb25lOgor
ICAgICAgICAiIiJQcmVwYXJlIGZvciB0aGUgZ2l2ZW4gdGVzdCBwaGFzZSAoc2V0dXAvY2FsbC90
ZWFyZG93bikuIiIiCiAgICAgICAgIHNlbGYuX3doZW4gPSB3aGVuCiAgICAgICAgIHNlbGYuX3Nl
Y3Rpb25fbmFtZV9zaG93biA9IEZhbHNlCiAgICAgICAgIGlmIHdoZW4gPT0gInN0YXJ0IjoKICAg
ICAgICAgICAgIHNlbGYuX3Rlc3Rfb3V0Y29tZV93cml0dGVuID0gRmFsc2UKIAotICAgIGRlZiBl
bWl0KHNlbGYsIHJlY29yZCk6Ci0gICAgICAgIGlmIHNlbGYuY2FwdHVyZV9tYW5hZ2VyIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgc2VsZi5jYXB0dXJlX21hbmFnZXIuc3VzcGVuZF9nbG9iYWxf
Y2FwdHVyZSgpCi0gICAgICAgIHRyeToKKyAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQ6IGxvZ2dp
bmcuTG9nUmVjb3JkKSAtPiBOb25lOgorICAgICAgICBjdHhfbWFuYWdlciA9ICgKKyAgICAgICAg
ICAgIHNlbGYuY2FwdHVyZV9tYW5hZ2VyLmdsb2JhbF9hbmRfZml4dHVyZV9kaXNhYmxlZCgpCisg
ICAgICAgICAgICBpZiBzZWxmLmNhcHR1cmVfbWFuYWdlcgorICAgICAgICAgICAgZWxzZSBudWxs
Y29udGV4dCgpCisgICAgICAgICkKKyAgICAgICAgd2l0aCBjdHhfbWFuYWdlcjoKICAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9maXJzdF9yZWNvcmRfZW1pdHRlZDoKICAgICAgICAgICAgICAgICBz
ZWxmLnN0cmVhbS53cml0ZSgiXG4iKQogICAgICAgICAgICAgICAgIHNlbGYuX2ZpcnN0X3JlY29y
ZF9lbWl0dGVkID0gVHJ1ZQpAQCAtNTY5LDcgKzc5NiwyMiBAQCBjbGFzcyBfTGl2ZUxvZ2dpbmdT
dHJlYW1IYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6CiAgICAgICAgICAgICBpZiBub3Qg
c2VsZi5fc2VjdGlvbl9uYW1lX3Nob3duIGFuZCBzZWxmLl93aGVuOgogICAgICAgICAgICAgICAg
IHNlbGYuc3RyZWFtLnNlY3Rpb24oImxpdmUgbG9nICIgKyBzZWxmLl93aGVuLCBzZXA9Ii0iLCBi
b2xkPVRydWUpCiAgICAgICAgICAgICAgICAgc2VsZi5fc2VjdGlvbl9uYW1lX3Nob3duID0gVHJ1
ZQotICAgICAgICAgICAgbG9nZ2luZy5TdHJlYW1IYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQot
ICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgc2VsZi5jYXB0dXJlX21hbmFnZXIgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5jYXB0dXJlX21hbmFnZXIucmVzdW1lX2ds
b2JhbF9jYXB0dXJlKCkKKyAgICAgICAgICAgIHN1cGVyKCkuZW1pdChyZWNvcmQpCisKKyAgICBk
ZWYgaGFuZGxlRXJyb3Ioc2VsZiwgcmVjb3JkOiBsb2dnaW5nLkxvZ1JlY29yZCkgLT4gTm9uZToK
KyAgICAgICAgIyBIYW5kbGVkIGJ5IExvZ0NhcHR1cmVIYW5kbGVyLgorICAgICAgICBwYXNzCisK
KworY2xhc3MgX0xpdmVMb2dnaW5nTnVsbEhhbmRsZXIobG9nZ2luZy5OdWxsSGFuZGxlcik6Cisg
ICAgIiIiQSBsb2dnaW5nIGhhbmRsZXIgdXNlZCB3aGVuIGxpdmUgbG9nZ2luZyBpcyBkaXNhYmxl
ZC4iIiIKKworICAgIGRlZiByZXNldChzZWxmKSAtPiBOb25lOgorICAgICAgICBwYXNzCisKKyAg
ICBkZWYgc2V0X3doZW4oc2VsZiwgd2hlbjogc3RyKSAtPiBOb25lOgorICAgICAgICBwYXNzCisK
KyAgICBkZWYgaGFuZGxlRXJyb3Ioc2VsZiwgcmVjb3JkOiBsb2dnaW5nLkxvZ1JlY29yZCkgLT4g
Tm9uZToKKyAgICAgICAgIyBIYW5kbGVkIGJ5IExvZ0NhcHR1cmVIYW5kbGVyLgorICAgICAgICBw
YXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tYWluLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3QvbWFpbi5weQppbmRleCAyMzU2MjM1OGQ3YzMuLmVmMTA2YzQ2YTQz
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFpbi5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9tYWluLnB5CkBAIC0xLDMzICsxLDU0IEBACi0iIiIgY29yZSBp
bXBsZW1lbnRhdGlvbiBvZiB0ZXN0aW5nIHByb2Nlc3M6IGluaXQsIHNlc3Npb24sIHJ1bnRlc3Qg
bG9vcC4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNp
b24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBjb250ZXh0bGliCisiIiJDb3JlIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSB0ZXN0aW5nIHByb2Nlc3M6IGluaXQsIHNlc3Npb24sIHJ1bnRlc3QgbG9v
cC4iIiIKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGZubWF0Y2gKIGltcG9ydCBmdW5jdG9vbHMK
K2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwotaW1wb3J0IHBrZ3V0aWwKLWltcG9ydCBzaXgK
IGltcG9ydCBzeXMKLQotaW1wb3J0IF9weXRlc3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMK
LWltcG9ydCBfcHl0ZXN0Ll9jb2RlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20g
dHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgRnJvemVuU2V0Citmcm9tIHR5
cGluZyBpbXBvcnQgSXRlcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGlu
ZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBp
bmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBv
cnQgVW5pb24KKworaW1wb3J0IGF0dHIKIGltcG9ydCBweQogCi1mcm9tIF9weXRlc3QuY29uZmln
IGltcG9ydCBkaXJlY3RvcnlfYXJnLCBVc2FnZUVycm9yLCBob29raW1wbAoraW1wb3J0IF9weXRl
c3QuX2NvZGUKK2Zyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBvdmVybG9hZAorZnJvbSBf
cHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBkaXJlY3RvcnlfYXJnCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgaG9va2ltcGwKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFB5dGVzdFBsdWdpbk1h
bmFnZXIKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFVzYWdlRXJyb3IKK2Zyb20gX3B5dGVz
dC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3QuZml4dHVyZXMg
aW1wb3J0IEZpeHR1cmVNYW5hZ2VyCiBmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGV4aXQK
K2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBhYnNvbHV0ZXBhdGgKK2Zyb20gX3B5dGVzdC5w
YXRobGliIGltcG9ydCBiZXN0cmVscGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBh
dGgKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCB2aXNpdAorZnJvbSBfcHl0ZXN0LnJlcG9y
dHMgaW1wb3J0IENvbGxlY3RSZXBvcnQKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBUZXN0
UmVwb3J0CiBmcm9tIF9weXRlc3QucnVubmVyIGltcG9ydCBjb2xsZWN0X29uZV9ub2RlCitmcm9t
IF9weXRlc3QucnVubmVyIGltcG9ydCBTZXR1cFN0YXRlCiAKIAotIyBleGl0Y29kZXMgZm9yIHRo
ZSBjb21tYW5kIGxpbmUKLUVYSVRfT0sgPSAwCi1FWElUX1RFU1RTRkFJTEVEID0gMQotRVhJVF9J
TlRFUlJVUFRFRCA9IDIKLUVYSVRfSU5URVJOQUxFUlJPUiA9IDMKLUVYSVRfVVNBR0VFUlJPUiA9
IDQKLUVYSVRfTk9URVNUU0NPTExFQ1RFRCA9IDUKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJv
bSB0eXBpbmcgaW1wb3J0IFR5cGUKKyAgICBmcm9tIHR5cGluZ19leHRlbnNpb25zIGltcG9ydCBM
aXRlcmFsCiAKIAotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKK2RlZiBweXRlc3RfYWRk
b3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAgIHBhcnNlci5hZGRpbmkoCiAgICAg
ICAgICJub3JlY3Vyc2VkaXJzIiwKICAgICAgICAgImRpcmVjdG9yeSBwYXR0ZXJucyB0byBhdm9p
ZCBmb3IgcmVjdXJzaW9uIiwKQEAgLTQxLDExICs2Miw2IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcik6CiAgICAgICAgIHR5cGU9ImFyZ3MiLAogICAgICAgICBkZWZhdWx0PVtdLAogICAg
ICkKLSAgICAjIHBhcnNlci5hZGRpbmkoImRpcnBhdHRlcm5zIiwKLSAgICAjICAgICJwYXR0ZXJu
cyBzcGVjaWZ5aW5nIHBvc3NpYmxlIGxvY2F0aW9ucyBvZiB0ZXN0IGZpbGVzIiwKLSAgICAjICAg
IHR5cGU9ImxpbmVsaXN0IiwgZGVmYXVsdD1bIioqL3Rlc3RfKi50eHQiLAotICAgICMgICAgICAg
ICAgICAiKiovdGVzdF8qLnB5IiwgIioqLypfdGVzdC5weSJdCi0gICAgIyApCiAgICAgZ3JvdXAg
PSBwYXJzZXIuZ2V0Z3JvdXAoImdlbmVyYWwiLCAicnVubmluZyBhbmQgc2VsZWN0aW9uIG9wdGlv
bnMiKQogICAgIGdyb3VwLl9hZGRvcHRpb24oCiAgICAgICAgICIteCIsCkBAIC01NCw3ICs3MCwy
MSBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBkZXN0PSJtYXhmYWls
IiwKICAgICAgICAgY29uc3Q9MSwKICAgICAgICAgaGVscD0iZXhpdCBpbnN0YW50bHkgb24gZmly
c3QgZXJyb3Igb3IgZmFpbGVkIHRlc3QuIiwKLSAgICApLAorICAgICkKKyAgICBncm91cCA9IHBh
cnNlci5nZXRncm91cCgicHl0ZXN0LXdhcm5pbmdzIikKKyAgICBncm91cC5hZGRvcHRpb24oCisg
ICAgICAgICItVyIsCisgICAgICAgICItLXB5dGhvbndhcm5pbmdzIiwKKyAgICAgICAgYWN0aW9u
PSJhcHBlbmQiLAorICAgICAgICBoZWxwPSJzZXQgd2hpY2ggd2FybmluZ3MgdG8gcmVwb3J0LCBz
ZWUgLVcgb3B0aW9uIG9mIHB5dGhvbiBpdHNlbGYuIiwKKyAgICApCisgICAgcGFyc2VyLmFkZGlu
aSgKKyAgICAgICAgImZpbHRlcndhcm5pbmdzIiwKKyAgICAgICAgdHlwZT0ibGluZWxpc3QiLAor
ICAgICAgICBoZWxwPSJFYWNoIGxpbmUgc3BlY2lmaWVzIGEgcGF0dGVybiBmb3IgIgorICAgICAg
ICAid2FybmluZ3MuZmlsdGVyd2FybmluZ3MuICIKKyAgICAgICAgIlByb2Nlc3NlZCBhZnRlciAt
Vy8tLXB5dGhvbndhcm5pbmdzLiIsCisgICAgKQogICAgIGdyb3VwLl9hZGRvcHRpb24oCiAgICAg
ICAgICItLW1heGZhaWwiLAogICAgICAgICBtZXRhdmFyPSJudW0iLApAQCAtNjUsOSArOTUsMTUg
QEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgaGVscD0iZXhpdCBhZnRl
ciBmaXJzdCBudW0gZmFpbHVyZXMgb3IgZXJyb3JzLiIsCiAgICAgKQogICAgIGdyb3VwLl9hZGRv
cHRpb24oCisgICAgICAgICItLXN0cmljdC1jb25maWciLAorICAgICAgICBhY3Rpb249InN0b3Jl
X3RydWUiLAorICAgICAgICBoZWxwPSJhbnkgd2FybmluZ3MgZW5jb3VudGVyZWQgd2hpbGUgcGFy
c2luZyB0aGUgYHB5dGVzdGAgc2VjdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJhaXNl
IGVycm9ycy4iLAorICAgICkKKyAgICBncm91cC5fYWRkb3B0aW9uKAorICAgICAgICAiLS1zdHJp
Y3QtbWFya2VycyIsCiAgICAgICAgICItLXN0cmljdCIsCiAgICAgICAgIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCi0gICAgICAgIGhlbHA9Im1hcmtzIG5vdCByZWdpc3RlcmVkIGluIGNvbmZpZ3VyYXRp
b24gZmlsZSByYWlzZSBlcnJvcnMuIiwKKyAgICAgICAgaGVscD0ibWFya2VycyBub3QgcmVnaXN0
ZXJlZCBpbiB0aGUgYG1hcmtlcnNgIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBy
YWlzZSBlcnJvcnMuIiwKICAgICApCiAgICAgZ3JvdXAuX2FkZG9wdGlvbigKICAgICAgICAgIi1j
IiwKQEAgLTk3LDkgKzEzMywxMCBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAg
IGdyb3VwLmFkZG9wdGlvbigKICAgICAgICAgIi0tY29sbGVjdG9ubHkiLAogICAgICAgICAiLS1j
b2xsZWN0LW9ubHkiLAorICAgICAgICAiLS1jbyIsCiAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCiAgICAgICAgIGhlbHA9Im9ubHkgY29sbGVjdCB0ZXN0cywgZG9uJ3QgZXhlY3V0ZSB0aGVt
LiIsCi0gICAgKSwKKyAgICApCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAiLS1weWFy
Z3MiLAogICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLApAQCAtMTExLDE0ICsxNDgsMTggQEAg
ZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAgbWV0YXZhcj0icGF0aCIsCiAg
ICAgICAgIGhlbHA9Imlnbm9yZSBwYXRoIGR1cmluZyBjb2xsZWN0aW9uIChtdWx0aS1hbGxvd2Vk
KS4iLAogICAgICkKKyAgICBncm91cC5hZGRvcHRpb24oCisgICAgICAgICItLWlnbm9yZS1nbG9i
IiwKKyAgICAgICAgYWN0aW9uPSJhcHBlbmQiLAorICAgICAgICBtZXRhdmFyPSJwYXRoIiwKKyAg
ICAgICAgaGVscD0iaWdub3JlIHBhdGggcGF0dGVybiBkdXJpbmcgY29sbGVjdGlvbiAobXVsdGkt
YWxsb3dlZCkuIiwKKyAgICApCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAgICAiLS1kZXNl
bGVjdCIsCiAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwKICAgICAgICAgbWV0YXZhcj0ibm9kZWlk
X3ByZWZpeCIsCi0gICAgICAgIGhlbHA9ImRlc2VsZWN0IGl0ZW0gZHVyaW5nIGNvbGxlY3Rpb24g
KG11bHRpLWFsbG93ZWQpLiIsCisgICAgICAgIGhlbHA9ImRlc2VsZWN0IGl0ZW0gKHZpYSBub2Rl
IGlkIHByZWZpeCkgZHVyaW5nIGNvbGxlY3Rpb24gKG11bHRpLWFsbG93ZWQpLiIsCiAgICAgKQot
ICAgICMgd2hlbiBjaGFuZ2luZyB0aGlzIHRvIC0tY29uZi1jdXQtZGlyLCBjb25maWcucHkgQ29u
ZnRlc3Quc2V0aW5pdGlhbAotICAgICMgbmVlZHMgdXBncmFkaW5nIGFzIHdlbGwKICAgICBncm91
cC5hZGRvcHRpb24oCiAgICAgICAgICItLWNvbmZjdXRkaXIiLAogICAgICAgICBkZXN0PSJjb25m
Y3V0ZGlyIiwKQEAgLTE0OSwyNSArMTkwLDYzIEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNl
cik6CiAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgIGhlbHA9IkRvbid0IGlnbm9yZSB0
ZXN0cyBpbiBhIGxvY2FsIHZpcnR1YWxlbnYgZGlyZWN0b3J5IiwKICAgICApCisgICAgZ3JvdXAu
YWRkb3B0aW9uKAorICAgICAgICAiLS1pbXBvcnQtbW9kZSIsCisgICAgICAgIGRlZmF1bHQ9InBy
ZXBlbmQiLAorICAgICAgICBjaG9pY2VzPVsicHJlcGVuZCIsICJhcHBlbmQiLCAiaW1wb3J0bGli
Il0sCisgICAgICAgIGRlc3Q9ImltcG9ydG1vZGUiLAorICAgICAgICBoZWxwPSJwcmVwZW5kL2Fw
cGVuZCB0byBzeXMucGF0aCB3aGVuIGltcG9ydGluZyB0ZXN0IG1vZHVsZXMgYW5kIGNvbmZ0ZXN0
IGZpbGVzLCAiCisgICAgICAgICJkZWZhdWx0IGlzIHRvIHByZXBlbmQuIiwKKyAgICApCiAKICAg
ICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZGVidWdjb25maWciLCAidGVzdCBzZXNzaW9uIGRl
YnVnZ2luZyBhbmQgY29uZmlndXJhdGlvbiIpCiAgICAgZ3JvdXAuYWRkb3B0aW9uKAogICAgICAg
ICAiLS1iYXNldGVtcCIsCiAgICAgICAgIGRlc3Q9ImJhc2V0ZW1wIiwKICAgICAgICAgZGVmYXVs
dD1Ob25lLAorICAgICAgICB0eXBlPXZhbGlkYXRlX2Jhc2V0ZW1wLAogICAgICAgICBtZXRhdmFy
PSJkaXIiLAotICAgICAgICBoZWxwPSJiYXNlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIHRoaXMg
dGVzdCBydW4uIiwKKyAgICAgICAgaGVscD0oCisgICAgICAgICAgICAiYmFzZSB0ZW1wb3Jhcnkg
ZGlyZWN0b3J5IGZvciB0aGlzIHRlc3QgcnVuLiIKKyAgICAgICAgICAgICIod2FybmluZzogdGhp
cyBkaXJlY3RvcnkgaXMgcmVtb3ZlZCBpZiBpdCBleGlzdHMpIgorICAgICAgICApLAogICAgICkK
IAogCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIF9faW1wb3J0X18oInB5dGVz
dCIpLmNvbmZpZyA9IGNvbmZpZyAgIyBjb21wYXRpYmlsaXR5CitkZWYgdmFsaWRhdGVfYmFzZXRl
bXAocGF0aDogc3RyKSAtPiBzdHI6CisgICAgIyBHSCA3MTE5CisgICAgbXNnID0gImJhc2V0ZW1w
IG11c3Qgbm90IGJlIGVtcHR5LCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvciBhbnkg
cGFyZW50IGRpcmVjdG9yeSBvZiBpdCIKKworICAgICMgZW1wdHkgcGF0aAorICAgIGlmIG5vdCBw
YXRoOgorICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcihtc2cpCisKKyAg
ICBkZWYgaXNfYW5jZXN0b3IoYmFzZTogUGF0aCwgcXVlcnk6IFBhdGgpIC0+IGJvb2w6CisgICAg
ICAgICIiIlJldHVybiB3aGV0aGVyIHF1ZXJ5IGlzIGFuIGFuY2VzdG9yIG9mIGJhc2UuIiIiCisg
ICAgICAgIGlmIGJhc2UgPT0gcXVlcnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg
ICBmb3IgcGFyZW50IGluIGJhc2UucGFyZW50czoKKyAgICAgICAgICAgIGlmIHBhcmVudCA9PSBx
dWVyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICMgY2hlY2sgaWYgcGF0aCBpcyBhbiBhbmNlc3RvciBvZiBjd2QKKyAgICBpZiBpc19h
bmNlc3RvcihQYXRoLmN3ZCgpLCBQYXRoKHBhdGgpLmFic29sdXRlKCkpOgorICAgICAgICByYWlz
ZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcihtc2cpCiAKKyAgICAjIGNoZWNrIHN5bWxpbmtz
IGZvciBhbmNlc3RvcnMKKyAgICBpZiBpc19hbmNlc3RvcihQYXRoLmN3ZCgpLnJlc29sdmUoKSwg
UGF0aChwYXRoKS5yZXNvbHZlKCkpOgorICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5
cGVFcnJvcihtc2cpCiAKLWRlZiB3cmFwX3Nlc3Npb24oY29uZmlnLCBkb2l0KToKLSAgICAiIiJT
a2VsZXRvbiBjb21tYW5kIGxpbmUgcHJvZ3JhbSIiIgotICAgIHNlc3Npb24gPSBTZXNzaW9uKGNv
bmZpZykKLSAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFWElUX09LCisgICAgcmV0dXJuIHBhdGgK
KworCitkZWYgd3JhcF9zZXNzaW9uKAorICAgIGNvbmZpZzogQ29uZmlnLCBkb2l0OiBDYWxsYWJs
ZVtbQ29uZmlnLCAiU2Vzc2lvbiJdLCBPcHRpb25hbFtVbmlvbltpbnQsIEV4aXRDb2RlXV1dCisp
IC0+IFVuaW9uW2ludCwgRXhpdENvZGVdOgorICAgICIiIlNrZWxldG9uIGNvbW1hbmQgbGluZSBw
cm9ncmFtLiIiIgorICAgIHNlc3Npb24gPSBTZXNzaW9uLmZyb21fY29uZmlnKGNvbmZpZykKKyAg
ICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFeGl0Q29kZS5PSwogICAgIGluaXRzdGF0ZSA9IDAKICAg
ICB0cnk6CiAgICAgICAgIHRyeToKQEAgLTE3Nyw1NiArMjU2LDc5IEBAIGRlZiB3cmFwX3Nlc3Np
b24oY29uZmlnLCBkb2l0KToKICAgICAgICAgICAgIGluaXRzdGF0ZSA9IDIKICAgICAgICAgICAg
IHNlc3Npb24uZXhpdHN0YXR1cyA9IGRvaXQoY29uZmlnLCBzZXNzaW9uKSBvciAwCiAgICAgICAg
IGV4Y2VwdCBVc2FnZUVycm9yOgorICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gRXhp
dENvZGUuVVNBR0VfRVJST1IKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBGYWls
ZWQ6Ci0gICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBFWElUX1RFU1RTRkFJTEVECi0g
ICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIGV4Y2luZm8gPSBf
cHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAgICAgICAgICAgaWYgaW5pdHN0YXRlIDwg
MiBhbmQgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBleGl0LkV4Y2VwdGlvbik6Ci0gICAgICAg
ICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgie306IHt9XG4iLmZvcm1hdChleGNpbmZvLnR5cGVu
YW1lLCBleGNpbmZvLnZhbHVlLm1zZykpCisgICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMg
PSBFeGl0Q29kZS5URVNUU19GQUlMRUQKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVw
dCwgZXhpdC5FeGNlcHRpb24pOgorICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUu
RXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQorICAgICAgICAgICAgZXhpdHN0YXR1cyA9IEV4
aXRDb2RlLklOVEVSUlVQVEVEICAjIHR5cGU6IFVuaW9uW2ludCwgRXhpdENvZGVdCisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIGV4aXQuRXhjZXB0aW9uKToKKyAgICAg
ICAgICAgICAgICBpZiBleGNpbmZvLnZhbHVlLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIGV4aXRzdGF0dXMgPSBleGNpbmZvLnZhbHVlLnJldHVybmNvZGUKKyAg
ICAgICAgICAgICAgICBpZiBpbml0c3RhdGUgPCAyOgorICAgICAgICAgICAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgInt9OiB7fVxuIi5mb3JtYXQo
ZXhjaW5mby50eXBlbmFtZSwgZXhjaW5mby52YWx1ZS5tc2cpCisgICAgICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQoZXhj
aW5mbz1leGNpbmZvKQotICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gRVhJVF9JTlRF
UlJVUFRFRAotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIGV4Y2luZm8gPSBf
cHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAgICAgICAgICAgY29uZmlnLm5vdGlmeV9l
eGNlcHRpb24oZXhjaW5mbywgY29uZmlnLm9wdGlvbikKLSAgICAgICAgICAgIHNlc3Npb24uZXhp
dHN0YXR1cyA9IEVYSVRfSU5URVJOQUxFUlJPUgotICAgICAgICAgICAgaWYgZXhjaW5mby5lcnJp
c2luc3RhbmNlKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
Im1haW5sb29wOiBjYXVnaHQgU3B1cmlvdXMgU3lzdGVtRXhpdCFcbiIpCisgICAgICAgICAgICBz
ZXNzaW9uLmV4aXRzdGF0dXMgPSBleGl0c3RhdHVzCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0
aW9uOgorICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVzID0gRXhpdENvZGUuSU5URVJOQUxf
RVJST1IKKyAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8u
ZnJvbV9jdXJyZW50KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb25maWcu
bm90aWZ5X2V4Y2VwdGlvbihleGNpbmZvLCBjb25maWcub3B0aW9uKQorICAgICAgICAgICAgZXhj
ZXB0IGV4aXQuRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBpZiBleGMucmV0dXJu
Y29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5leGl0c3RhdHVz
ID0gZXhjLnJldHVybmNvZGUKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJ7fTog
e31cbiIuZm9ybWF0KHR5cGUoZXhjKS5fX25hbWVfXywgZXhjKSkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBTeXN0ZW1FeGl0
KToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgibWFpbmxvb3A6IGNhdWdo
dCB1bmV4cGVjdGVkIFN5c3RlbUV4aXQhXG4iKQogCiAgICAgZmluYWxseToKLSAgICAgICAgZXhj
aW5mbyA9IE5vbmUgICMgRXhwbGljaXRseSBicmVhayByZWZlcmVuY2UgY3ljbGUuCisgICAgICAg
ICMgRXhwbGljaXRseSBicmVhayByZWZlcmVuY2UgY3ljbGUuCisgICAgICAgIGV4Y2luZm8gPSBO
b25lICAjIHR5cGU6IGlnbm9yZQogICAgICAgICBzZXNzaW9uLnN0YXJ0ZGlyLmNoZGlyKCkKICAg
ICAgICAgaWYgaW5pdHN0YXRlID49IDI6Ci0gICAgICAgICAgICBjb25maWcuaG9vay5weXRlc3Rf
c2Vzc2lvbmZpbmlzaCgKLSAgICAgICAgICAgICAgICBzZXNzaW9uPXNlc3Npb24sIGV4aXRzdGF0
dXM9c2Vzc2lvbi5leGl0c3RhdHVzCi0gICAgICAgICAgICApCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25maW5pc2goCisgICAgICAg
ICAgICAgICAgICAgIHNlc3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1cz1zZXNzaW9uLmV4aXRzdGF0
dXMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgZXhpdC5FeGNlcHRpb24g
YXMgZXhjOgorICAgICAgICAgICAgICAgIGlmIGV4Yy5yZXR1cm5jb2RlIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBleGMucmV0dXJuY29kZQor
ICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoInt9OiB7fVxuIi5mb3JtYXQodHlwZShl
eGMpLl9fbmFtZV9fLCBleGMpKQogICAgICAgICBjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3VyZSgp
CiAgICAgcmV0dXJuIHNlc3Npb24uZXhpdHN0YXR1cwogCiAKLWRlZiBweXRlc3RfY21kbGluZV9t
YWluKGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWc6IENvbmZpZykgLT4g
VW5pb25baW50LCBFeGl0Q29kZV06CiAgICAgcmV0dXJuIHdyYXBfc2Vzc2lvbihjb25maWcsIF9t
YWluKQogCiAKLWRlZiBfbWFpbihjb25maWcsIHNlc3Npb24pOgotICAgICIiIiBkZWZhdWx0IGNv
bW1hbmQgbGluZSBwcm90b2NvbCBmb3IgaW5pdGlhbGl6YXRpb24sIHNlc3Npb24sCi0gICAgcnVu
bmluZyB0ZXN0cyBhbmQgcmVwb3J0aW5nLiAiIiIKK2RlZiBfbWFpbihjb25maWc6IENvbmZpZywg
c2Vzc2lvbjogIlNlc3Npb24iKSAtPiBPcHRpb25hbFtVbmlvbltpbnQsIEV4aXRDb2RlXV06Cisg
ICAgIiIiRGVmYXVsdCBjb21tYW5kIGxpbmUgcHJvdG9jb2wgZm9yIGluaXRpYWxpemF0aW9uLCBz
ZXNzaW9uLAorICAgIHJ1bm5pbmcgdGVzdHMgYW5kIHJlcG9ydGluZy4iIiIKICAgICBjb25maWcu
aG9vay5weXRlc3RfY29sbGVjdGlvbihzZXNzaW9uPXNlc3Npb24pCiAgICAgY29uZmlnLmhvb2su
cHl0ZXN0X3J1bnRlc3Rsb29wKHNlc3Npb249c2Vzc2lvbikKIAogICAgIGlmIHNlc3Npb24udGVz
dHNmYWlsZWQ6Ci0gICAgICAgIHJldHVybiBFWElUX1RFU1RTRkFJTEVECisgICAgICAgIHJldHVy
biBFeGl0Q29kZS5URVNUU19GQUlMRUQKICAgICBlbGlmIHNlc3Npb24udGVzdHNjb2xsZWN0ZWQg
PT0gMDoKLSAgICAgICAgcmV0dXJuIEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAgICByZXR1
cm4gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECisgICAgcmV0dXJuIE5vbmUKIAogCi1kZWYg
cHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbik6Ci0gICAgcmV0dXJuIHNlc3Npb24ucGVyZm9ybV9j
b2xsZWN0KCkKK2RlZiBweXRlc3RfY29sbGVjdGlvbihzZXNzaW9uOiAiU2Vzc2lvbiIpIC0+IE5v
bmU6CisgICAgc2Vzc2lvbi5wZXJmb3JtX2NvbGxlY3QoKQogCiAKLWRlZiBweXRlc3RfcnVudGVz
dGxvb3Aoc2Vzc2lvbik6CitkZWYgcHl0ZXN0X3J1bnRlc3Rsb29wKHNlc3Npb246ICJTZXNzaW9u
IikgLT4gYm9vbDoKICAgICBpZiBzZXNzaW9uLnRlc3RzZmFpbGVkIGFuZCBub3Qgc2Vzc2lvbi5j
b25maWcub3B0aW9uLmNvbnRpbnVlX29uX2NvbGxlY3Rpb25fZXJyb3JzOgotICAgICAgICByYWlz
ZSBzZXNzaW9uLkludGVycnVwdGVkKCIlZCBlcnJvcnMgZHVyaW5nIGNvbGxlY3Rpb24iICUgc2Vz
c2lvbi50ZXN0c2ZhaWxlZCkKKyAgICAgICAgcmFpc2Ugc2Vzc2lvbi5JbnRlcnJ1cHRlZCgKKyAg
ICAgICAgICAgICIlZCBlcnJvciVzIGR1cmluZyBjb2xsZWN0aW9uIgorICAgICAgICAgICAgJSAo
c2Vzc2lvbi50ZXN0c2ZhaWxlZCwgInMiIGlmIHNlc3Npb24udGVzdHNmYWlsZWQgIT0gMSBlbHNl
ICIiKQorICAgICAgICApCiAKICAgICBpZiBzZXNzaW9uLmNvbmZpZy5vcHRpb24uY29sbGVjdG9u
bHk6CiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0yNDEsOSArMzQzLDkgQEAgZGVmIHB5dGVzdF9y
dW50ZXN0bG9vcChzZXNzaW9uKToKICAgICByZXR1cm4gVHJ1ZQogCiAKLWRlZiBfaW5fdmVudihw
YXRoKToKLSAgICAiIiJBdHRlbXB0cyB0byBkZXRlY3QgaWYgYGBwYXRoYGAgaXMgdGhlIHJvb3Qg
b2YgYSBWaXJ0dWFsIEVudmlyb25tZW50IGJ5Ci0gICAgY2hlY2tpbmcgZm9yIHRoZSBleGlzdGVu
Y2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFjdGl2YXRlIHNjcmlwdCIiIgorZGVmIF9pbl92ZW52KHBh
dGg6IHB5LnBhdGgubG9jYWwpIC0+IGJvb2w6CisgICAgIiIiQXR0ZW1wdCB0byBkZXRlY3QgaWYg
YGBwYXRoYGAgaXMgdGhlIHJvb3Qgb2YgYSBWaXJ0dWFsIEVudmlyb25tZW50IGJ5CisgICAgY2hl
Y2tpbmcgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFjdGl2YXRlIHNjcmlw
dC4iIiIKICAgICBiaW5kaXIgPSBwYXRoLmpvaW4oIlNjcmlwdHMiIGlmIHN5cy5wbGF0Zm9ybS5z
dGFydHN3aXRoKCJ3aW4iKSBlbHNlICJiaW4iKQogICAgIGlmIG5vdCBiaW5kaXIuaXNkaXIoKToK
ICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNTgsNyArMzYwLDcgQEAgZGVmIF9pbl92ZW52KHBh
dGgpOgogICAgIHJldHVybiBhbnkoW2ZuYW1lLmJhc2VuYW1lIGluIGFjdGl2YXRlcyBmb3IgZm5h
bWUgaW4gYmluZGlyLmxpc3RkaXIoKV0pCiAKIAotZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVjdChw
YXRoLCBjb25maWcpOgorZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoOiBweS5wYXRoLmxv
Y2FsLCBjb25maWc6IENvbmZpZykgLT4gT3B0aW9uYWxbYm9vbF06CiAgICAgaWdub3JlX3BhdGhz
ID0gY29uZmlnLl9nZXRjb25mdGVzdF9wYXRobGlzdCgiY29sbGVjdF9pZ25vcmUiLCBwYXRoPXBh
dGguZGlycGF0aCgpKQogICAgIGlnbm9yZV9wYXRocyA9IGlnbm9yZV9wYXRocyBvciBbXQogICAg
IGV4Y2x1ZGVvcHQgPSBjb25maWcuZ2V0b3B0aW9uKCJpZ25vcmUiKQpAQCAtMjY4LDIzICszNzAs
MjQgQEAgZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoLCBjb25maWcpOgogICAgIGlmIHB5
LnBhdGgubG9jYWwocGF0aCkgaW4gaWdub3JlX3BhdGhzOgogICAgICAgICByZXR1cm4gVHJ1ZQog
Ci0gICAgYWxsb3dfaW5fdmVudiA9IGNvbmZpZy5nZXRvcHRpb24oImNvbGxlY3RfaW5fdmlydHVh
bGVudiIpCi0gICAgaWYgX2luX3ZlbnYocGF0aCkgYW5kIG5vdCBhbGxvd19pbl92ZW52OgotICAg
ICAgICByZXR1cm4gVHJ1ZQorICAgIGlnbm9yZV9nbG9icyA9IGNvbmZpZy5fZ2V0Y29uZnRlc3Rf
cGF0aGxpc3QoCisgICAgICAgICJjb2xsZWN0X2lnbm9yZV9nbG9iIiwgcGF0aD1wYXRoLmRpcnBh
dGgoKQorICAgICkKKyAgICBpZ25vcmVfZ2xvYnMgPSBpZ25vcmVfZ2xvYnMgb3IgW10KKyAgICBl
eGNsdWRlZ2xvYm9wdCA9IGNvbmZpZy5nZXRvcHRpb24oImlnbm9yZV9nbG9iIikKKyAgICBpZiBl
eGNsdWRlZ2xvYm9wdDoKKyAgICAgICAgaWdub3JlX2dsb2JzLmV4dGVuZChbcHkucGF0aC5sb2Nh
bCh4KSBmb3IgeCBpbiBleGNsdWRlZ2xvYm9wdF0pCiAKLSAgICAjIFNraXAgZHVwbGljYXRlIHBh
dGhzLgotICAgIGtlZXBkdXBsaWNhdGVzID0gY29uZmlnLmdldG9wdGlvbigia2VlcGR1cGxpY2F0
ZXMiKQotICAgIGR1cGxpY2F0ZV9wYXRocyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9kdXBsaWNh
dGVwYXRocwotICAgIGlmIG5vdCBrZWVwZHVwbGljYXRlczoKLSAgICAgICAgaWYgcGF0aCBpbiBk
dXBsaWNhdGVfcGF0aHM6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgZHVwbGljYXRlX3BhdGhzLmFkZChwYXRoKQorICAgIGlmIGFueShmbm1hdGNo
LmZubWF0Y2goc3RyKHBhdGgpLCBzdHIoZ2xvYikpIGZvciBnbG9iIGluIGlnbm9yZV9nbG9icyk6
CisgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICByZXR1cm4gRmFsc2UKKyAgICBhbGxvd19pbl92
ZW52ID0gY29uZmlnLmdldG9wdGlvbigiY29sbGVjdF9pbl92aXJ0dWFsZW52IikKKyAgICBpZiBu
b3QgYWxsb3dfaW5fdmVudiBhbmQgX2luX3ZlbnYocGF0aCk6CisgICAgICAgIHJldHVybiBUcnVl
CisgICAgcmV0dXJuIE5vbmUKIAogCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMo
aXRlbXMsIGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoaXRlbXM6
IExpc3Rbbm9kZXMuSXRlbV0sIGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIGRlc2VsZWN0
X3ByZWZpeGVzID0gdHVwbGUoY29uZmlnLmdldG9wdGlvbigiZGVzZWxlY3QiKSBvciBbXSkKICAg
ICBpZiBub3QgZGVzZWxlY3RfcHJlZml4ZXM6CiAgICAgICAgIHJldHVybgpAQCAtMzAyLDk5ICs0
MDUsOTQgQEAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKGl0ZW1zLCBjb25maWcp
OgogICAgICAgICBpdGVtc1s6XSA9IHJlbWFpbmluZwogCiAKLUBjb250ZXh0bGliLmNvbnRleHRt
YW5hZ2VyCi1kZWYgX3BhdGNoZWRfZmluZF9tb2R1bGUoKToKLSAgICAiIiJQYXRjaCBidWcgaW4g
cGtndXRpbC5JbXBJbXBvcnRlci5maW5kX21vZHVsZQotCi0gICAgV2hlbiB1c2luZyBwa2d1dGls
LmZpbmRfbG9hZGVyIG9uIHB5dGhvbjwzLjQgaXQgcmVtb3ZlcyBzeW1saW5rcwotICAgIGZyb20g
dGhlIHBhdGggZHVlIHRvIGEgY2FsbCB0byBvcy5wYXRoLnJlYWxwYXRoLiBUaGlzIGlzIG5vdCBj
b25zaXN0ZW50Ci0gICAgd2l0aCBhY3R1YWxseSBkb2luZyB0aGUgaW1wb3J0IChpbiB0aGVzZSB2
ZXJzaW9ucywgcGtndXRpbCBhbmQgX19pbXBvcnRfXwotICAgIGRpZCBub3Qgc2hhcmUgdGhlIHNh
bWUgdW5kZXJseWluZyBjb2RlKS4gVGhpcyBjYW4gYnJlYWsgY29uZnRlc3QKLSAgICBkaXNjb3Zl
cnkgZm9yIHB5dGVzdCB3aGVyZSBzeW1saW5rcyBhcmUgaW52b2x2ZWQuCi0KLSAgICBUaGUgb25s
eSBzdXBwb3J0ZWQgcHl0aG9uPDMuNCBieSBweXRlc3QgaXMgcHl0aG9uIDIuNy4KLSAgICAiIiIK
LSAgICBpZiBzaXguUFkyOiAgIyBweXRob24gMy40KyB1c2VzIGltcG9ydGxpYiBpbnN0ZWFkCi0K
LSAgICAgICAgZGVmIGZpbmRfbW9kdWxlX3BhdGNoZWQoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9u
ZSk6Ci0gICAgICAgICAgICAjIE5vdGU6IHdlIGlnbm9yZSAncGF0aCcgYXJndW1lbnQgc2luY2Ug
aXQgaXMgb25seSB1c2VkIHZpYSBtZXRhX3BhdGgKLSAgICAgICAgICAgIHN1Ym5hbWUgPSBmdWxs
bmFtZS5zcGxpdCgiLiIpWy0xXQotICAgICAgICAgICAgaWYgc3VibmFtZSAhPSBmdWxsbmFtZSBh
bmQgc2VsZi5wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgICAgIGlmIHNlbGYucGF0aCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHBhdGggPSBOb25l
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgb3JpZ2luYWw6IHBhdGggPSBb
b3MucGF0aC5yZWFscGF0aChzZWxmLnBhdGgpXQotICAgICAgICAgICAgICAgIHBhdGggPSBbc2Vs
Zi5wYXRoXQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZpbGUsIGZpbGVuYW1l
LCBldGMgPSBwa2d1dGlsLmltcC5maW5kX21vZHVsZShzdWJuYW1lLCBwYXRoKQotICAgICAgICAg
ICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgICAgICByZXR1cm4gcGtndXRpbC5JbXBMb2FkZXIoZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1l
LCBldGMpCi0KLSAgICAgICAgb2xkX2ZpbmRfbW9kdWxlID0gcGtndXRpbC5JbXBJbXBvcnRlci5m
aW5kX21vZHVsZQotICAgICAgICBwa2d1dGlsLkltcEltcG9ydGVyLmZpbmRfbW9kdWxlID0gZmlu
ZF9tb2R1bGVfcGF0Y2hlZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZAotICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgcGtndXRpbC5JbXBJbXBvcnRlci5maW5kX21vZHVsZSA9
IG9sZF9maW5kX21vZHVsZQotICAgIGVsc2U6Ci0gICAgICAgIHlpZWxkCi0KLQotY2xhc3MgRlNI
b29rUHJveHkob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmc3BhdGgsIHBtLCBy
ZW1vdmVfbW9kcyk6Ci0gICAgICAgIHNlbGYuZnNwYXRoID0gZnNwYXRoCitjbGFzcyBGU0hvb2tQ
cm94eToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG06IFB5dGVzdFBsdWdpbk1hbmFnZXIsIHJl
bW92ZV9tb2RzKSAtPiBOb25lOgogICAgICAgICBzZWxmLnBtID0gcG0KICAgICAgICAgc2VsZi5y
ZW1vdmVfbW9kcyA9IHJlbW92ZV9tb2RzCiAKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFt
ZSk6CisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWU6IHN0cik6CiAgICAgICAgIHggPSBz
ZWxmLnBtLnN1YnNldF9ob29rX2NhbGxlcihuYW1lLCByZW1vdmVfcGx1Z2lucz1zZWxmLnJlbW92
ZV9tb2RzKQogICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0geAogICAgICAgICByZXR1cm4g
eAogCiAKLWNsYXNzIE5vTWF0Y2goRXhjZXB0aW9uKToKLSAgICAiIiIgcmFpc2VkIGlmIG1hdGNo
aW5nIGNhbm5vdCBsb2NhdGUgYSBtYXRjaGluZyBuYW1lcy4gIiIiCi0KLQogY2xhc3MgSW50ZXJy
dXB0ZWQoS2V5Ym9hcmRJbnRlcnJ1cHQpOgotICAgICIiIiBzaWduYWxzIGFuIGludGVycnVwdGVk
IHRlc3QgcnVuLiAiIiIKLSAgICBfX21vZHVsZV9fID0gImJ1aWx0aW5zIiAgIyBmb3IgcHkzCisg
ICAgIiIiU2lnbmFscyB0aGF0IHRoZSB0ZXN0IHJ1biB3YXMgaW50ZXJydXB0ZWQuIiIiCisKKyAg
ICBfX21vZHVsZV9fID0gImJ1aWx0aW5zIiAgIyBGb3IgcHkzLgogCiAKIGNsYXNzIEZhaWxlZChF
eGNlcHRpb24pOgotICAgICIiIiBzaWduYWxzIGEgc3RvcCBhcyBmYWlsZWQgdGVzdCBydW4uICIi
IgorICAgICIiIlNpZ25hbHMgYSBzdG9wIGFzIGZhaWxlZCB0ZXN0IHJ1bi4iIiIKIAogCitAYXR0
ci5zCitjbGFzcyBfYmVzdHJlbHBhdGhfY2FjaGUoRGljdFtQYXRoLCBzdHJdKToKKyAgICBwYXRo
ID0gYXR0ci5pYih0eXBlPVBhdGgpCisKKyAgICBkZWYgX19taXNzaW5nX18oc2VsZiwgcGF0aDog
UGF0aCkgLT4gc3RyOgorICAgICAgICByID0gYmVzdHJlbHBhdGgoc2VsZi5wYXRoLCBwYXRoKQor
ICAgICAgICBzZWxmW3BhdGhdID0gcgorICAgICAgICByZXR1cm4gcgorCisKK0BmaW5hbAogY2xh
c3MgU2Vzc2lvbihub2Rlcy5GU0NvbGxlY3Rvcik6CiAgICAgSW50ZXJydXB0ZWQgPSBJbnRlcnJ1
cHRlZAogICAgIEZhaWxlZCA9IEZhaWxlZAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZp
Zyk6Ci0gICAgICAgIG5vZGVzLkZTQ29sbGVjdG9yLl9faW5pdF9fKAotICAgICAgICAgICAgc2Vs
ZiwgY29uZmlnLnJvb3RkaXIsIHBhcmVudD1Ob25lLCBjb25maWc9Y29uZmlnLCBzZXNzaW9uPXNl
bGYsIG5vZGVpZD0iIgorICAgICMgU2V0IG9uIHRoZSBzZXNzaW9uIGJ5IHJ1bm5lci5weXRlc3Rf
c2Vzc2lvbnN0YXJ0LgorICAgIF9zZXR1cHN0YXRlID0gTm9uZSAgIyB0eXBlOiBTZXR1cFN0YXRl
CisgICAgIyBTZXQgb24gdGhlIHNlc3Npb24gYnkgZml4dHVyZXMucHl0ZXN0X3Nlc3Npb25zdGFy
dC4KKyAgICBfZml4dHVyZW1hbmFnZXIgPSBOb25lICAjIHR5cGU6IEZpeHR1cmVNYW5hZ2VyCisg
ICAgZXhpdHN0YXR1cyA9IE5vbmUgICMgdHlwZTogVW5pb25baW50LCBFeGl0Q29kZV0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICAgICAgc3Vw
ZXIoKS5fX2luaXRfXygKKyAgICAgICAgICAgIGNvbmZpZy5yb290ZGlyLCBwYXJlbnQ9Tm9uZSwg
Y29uZmlnPWNvbmZpZywgc2Vzc2lvbj1zZWxmLCBub2RlaWQ9IiIKICAgICAgICAgKQogICAgICAg
ICBzZWxmLnRlc3RzZmFpbGVkID0gMAogICAgICAgICBzZWxmLnRlc3RzY29sbGVjdGVkID0gMAot
ICAgICAgICBzZWxmLnNob3VsZHN0b3AgPSBGYWxzZQotICAgICAgICBzZWxmLnNob3VsZGZhaWwg
PSBGYWxzZQorICAgICAgICBzZWxmLnNob3VsZHN0b3AgPSBGYWxzZSAgIyB0eXBlOiBVbmlvblti
b29sLCBzdHJdCisgICAgICAgIHNlbGYuc2hvdWxkZmFpbCA9IEZhbHNlICAjIHR5cGU6IFVuaW9u
W2Jvb2wsIHN0cl0KICAgICAgICAgc2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5yb290LmdldCgi
Y29sbGVjdGlvbiIpCi0gICAgICAgIHNlbGYuX25vcmVjdXJzZXBhdHRlcm5zID0gY29uZmlnLmdl
dGluaSgibm9yZWN1cnNlZGlycyIpCi0gICAgICAgIHNlbGYuc3RhcnRkaXIgPSBweS5wYXRoLmxv
Y2FsKCkKKyAgICAgICAgc2VsZi5zdGFydGRpciA9IGNvbmZpZy5pbnZvY2F0aW9uX2RpcgorICAg
ICAgICBzZWxmLl9pbml0aWFscGF0aHMgPSBmcm96ZW5zZXQoKSAgIyB0eXBlOiBGcm96ZW5TZXRb
cHkucGF0aC5sb2NhbF0KKworICAgICAgICBzZWxmLl9iZXN0cmVscGF0aGNhY2hlID0gX2Jlc3Ry
ZWxwYXRoX2NhY2hlKAorICAgICAgICAgICAgY29uZmlnLnJvb3RwYXRoCisgICAgICAgICkgICMg
dHlwZTogRGljdFtQYXRoLCBzdHJdCiAKICAgICAgICAgc2VsZi5jb25maWcucGx1Z2lubWFuYWdl
ci5yZWdpc3RlcihzZWxmLCBuYW1lPSJzZXNzaW9uIikKIAorICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBmcm9tX2NvbmZpZyhjbHMsIGNvbmZpZzogQ29uZmlnKSAtPiAiU2Vzc2lvbiI6CisgICAg
ICAgIHNlc3Npb24gPSBjbHMuX2NyZWF0ZShjb25maWcpICAjIHR5cGU6IFNlc3Npb24KKyAgICAg
ICAgcmV0dXJuIHNlc3Npb24KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAg
ICAgIHJldHVybiAiPCVzICVzIGV4aXRzdGF0dXM9JXIgdGVzdHNmYWlsZWQ9JWQgdGVzdHNjb2xs
ZWN0ZWQ9JWQ+IiAlICgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAg
ICAgICAgICAgc2VsZi5uYW1lLAorICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCAiZXhpdHN0YXR1
cyIsICI8VU5TRVQ+IiksCisgICAgICAgICAgICBzZWxmLnRlc3RzZmFpbGVkLAorICAgICAgICAg
ICAgc2VsZi50ZXN0c2NvbGxlY3RlZCwKKyAgICAgICAgKQorCisgICAgZGVmIF9ub2RlX2xvY2F0
aW9uX3RvX3JlbHBhdGgoc2VsZiwgbm9kZV9wYXRoOiBQYXRoKSAtPiBzdHI6CisgICAgICAgICMg
YmVzdHJlbHBhdGggaXMgYSBxdWl0ZSBzbG93IGZ1bmN0aW9uLgorICAgICAgICByZXR1cm4gc2Vs
Zi5fYmVzdHJlbHBhdGhjYWNoZVtub2RlX3BhdGhdCisKICAgICBAaG9va2ltcGwodHJ5Zmlyc3Q9
VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3RzdGFydChzZWxmKToKKyAgICBkZWYgcHl0ZXN0
X2NvbGxlY3RzdGFydChzZWxmKSAtPiBOb25lOgogICAgICAgICBpZiBzZWxmLnNob3VsZGZhaWw6
CiAgICAgICAgICAgICByYWlzZSBzZWxmLkZhaWxlZChzZWxmLnNob3VsZGZhaWwpCiAgICAgICAg
IGlmIHNlbGYuc2hvdWxkc3RvcDoKICAgICAgICAgICAgIHJhaXNlIHNlbGYuSW50ZXJydXB0ZWQo
c2VsZi5zaG91bGRzdG9wKQogCiAgICAgQGhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi0gICAgZGVm
IHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQpOgorICAgIGRlZiBweXRlc3Rf
cnVudGVzdF9sb2dyZXBvcnQoCisgICAgICAgIHNlbGYsIHJlcG9ydDogVW5pb25bVGVzdFJlcG9y
dCwgQ29sbGVjdFJlcG9ydF0KKyAgICApIC0+IE5vbmU6CiAgICAgICAgIGlmIHJlcG9ydC5mYWls
ZWQgYW5kIG5vdCBoYXNhdHRyKHJlcG9ydCwgIndhc3hmYWlsIik6CiAgICAgICAgICAgICBzZWxm
LnRlc3RzZmFpbGVkICs9IDEKICAgICAgICAgICAgIG1heGZhaWwgPSBzZWxmLmNvbmZpZy5nZXR2
YWx1ZSgibWF4ZmFpbCIpCkBAIC00MDMsMjAwICs1MDEsMjk2IEBAIGNsYXNzIFNlc3Npb24obm9k
ZXMuRlNDb2xsZWN0b3IpOgogCiAgICAgcHl0ZXN0X2NvbGxlY3RyZXBvcnQgPSBweXRlc3RfcnVu
dGVzdF9sb2dyZXBvcnQKIAotICAgIGRlZiBpc2luaXRwYXRoKHNlbGYsIHBhdGgpOgorICAgIGRl
ZiBpc2luaXRwYXRoKHNlbGYsIHBhdGg6IHB5LnBhdGgubG9jYWwpIC0+IGJvb2w6CiAgICAgICAg
IHJldHVybiBwYXRoIGluIHNlbGYuX2luaXRpYWxwYXRocwogCi0gICAgZGVmIGdldGhvb2twcm94
eShzZWxmLCBmc3BhdGgpOgotICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgdGhlIGNvbW1vbiBj
YXNlIG9mIHJ1bm5pbmcKLSAgICAgICAgIyBob29rcyB3aXRoIGFsbCBjb25mdGVzdC5weSBmaWxl
cworICAgIGRlZiBnZXRob29rcHJveHkoc2VsZiwgZnNwYXRoOiBweS5wYXRoLmxvY2FsKToKKyAg
ICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIHRoZSBjb21tb24gY2FzZSBvZiBydW5uaW5nCisgICAg
ICAgICMgaG9va3Mgd2l0aCBhbGwgY29uZnRlc3QucHkgZmlsZXMuCiAgICAgICAgIHBtID0gc2Vs
Zi5jb25maWcucGx1Z2lubWFuYWdlcgotICAgICAgICBteV9jb25mdGVzdG1vZHVsZXMgPSBwbS5f
Z2V0Y29uZnRlc3Rtb2R1bGVzKGZzcGF0aCkKKyAgICAgICAgbXlfY29uZnRlc3Rtb2R1bGVzID0g
cG0uX2dldGNvbmZ0ZXN0bW9kdWxlcygKKyAgICAgICAgICAgIGZzcGF0aCwgc2VsZi5jb25maWcu
Z2V0b3B0aW9uKCJpbXBvcnRtb2RlIikKKyAgICAgICAgKQogICAgICAgICByZW1vdmVfbW9kcyA9
IHBtLl9jb25mdGVzdF9wbHVnaW5zLmRpZmZlcmVuY2UobXlfY29uZnRlc3Rtb2R1bGVzKQogICAg
ICAgICBpZiByZW1vdmVfbW9kczoKLSAgICAgICAgICAgICMgb25lIG9yIG1vcmUgY29uZnRlc3Rz
IGFyZSBub3QgaW4gdXNlIGF0IHRoaXMgZnNwYXRoCi0gICAgICAgICAgICBwcm94eSA9IEZTSG9v
a1Byb3h5KGZzcGF0aCwgcG0sIHJlbW92ZV9tb2RzKQorICAgICAgICAgICAgIyBPbmUgb3IgbW9y
ZSBjb25mdGVzdHMgYXJlIG5vdCBpbiB1c2UgYXQgdGhpcyBmc3BhdGguCisgICAgICAgICAgICBw
cm94eSA9IEZTSG9va1Byb3h5KHBtLCByZW1vdmVfbW9kcykKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICMgYWxsIHBsdWdpcyBhcmUgYWN0aXZlIGZvciB0aGlzIGZzcGF0aAorICAgICAgICAg
ICAgIyBBbGwgcGx1Z2lucyBhcmUgYWN0aXZlIGZvciB0aGlzIGZzcGF0aC4KICAgICAgICAgICAg
IHByb3h5ID0gc2VsZi5jb25maWcuaG9vawogICAgICAgICByZXR1cm4gcHJveHkKIAotICAgIGRl
ZiBwZXJmb3JtX2NvbGxlY3Qoc2VsZiwgYXJncz1Ob25lLCBnZW5pdGVtcz1UcnVlKToKKyAgICBk
ZWYgX3JlY3Vyc2Uoc2VsZiwgZGlyZW50cnk6ICJvcy5EaXJFbnRyeVtzdHJdIikgLT4gYm9vbDoK
KyAgICAgICAgaWYgZGlyZW50cnkubmFtZSA9PSAiX19weWNhY2hlX18iOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgIHBhdGggPSBweS5wYXRoLmxvY2FsKGRpcmVudHJ5LnBhdGgp
CisgICAgICAgIGlob29rID0gc2VsZi5nZXRob29rcHJveHkocGF0aC5kaXJwYXRoKCkpCisgICAg
ICAgIGlmIGlob29rLnB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoPXBhdGgsIGNvbmZpZz1zZWxm
LmNvbmZpZyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgbm9yZWN1cnNlcGF0
dGVybnMgPSBzZWxmLmNvbmZpZy5nZXRpbmkoIm5vcmVjdXJzZWRpcnMiKQorICAgICAgICBpZiBh
bnkocGF0aC5jaGVjayhmbm1hdGNoPXBhdCkgZm9yIHBhdCBpbiBub3JlY3Vyc2VwYXR0ZXJucyk6
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRl
ZiBfY29sbGVjdGZpbGUoCisgICAgICAgIHNlbGYsIHBhdGg6IHB5LnBhdGgubG9jYWwsIGhhbmRs
ZV9kdXBlczogYm9vbCA9IFRydWUKKyAgICApIC0+IFNlcXVlbmNlW25vZGVzLkNvbGxlY3Rvcl06
CisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICBwYXRoLmlzZmlsZSgpCisgICAgICAgICks
ICJ7IXJ9IGlzIG5vdCBhIGZpbGUgKGlzZGlyPXshcn0sIGV4aXN0cz17IXJ9LCBpc2xpbms9eyFy
fSkiLmZvcm1hdCgKKyAgICAgICAgICAgIHBhdGgsIHBhdGguaXNkaXIoKSwgcGF0aC5leGlzdHMo
KSwgcGF0aC5pc2xpbmsoKQorICAgICAgICApCisgICAgICAgIGlob29rID0gc2VsZi5nZXRob29r
cHJveHkocGF0aCkKKyAgICAgICAgaWYgbm90IHNlbGYuaXNpbml0cGF0aChwYXRoKToKKyAgICAg
ICAgICAgIGlmIGlob29rLnB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoPXBhdGgsIGNvbmZpZz1z
ZWxmLmNvbmZpZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisKKyAgICAgICAgaWYgaGFu
ZGxlX2R1cGVzOgorICAgICAgICAgICAga2VlcGR1cGxpY2F0ZXMgPSBzZWxmLmNvbmZpZy5nZXRv
cHRpb24oImtlZXBkdXBsaWNhdGVzIikKKyAgICAgICAgICAgIGlmIG5vdCBrZWVwZHVwbGljYXRl
czoKKyAgICAgICAgICAgICAgICBkdXBsaWNhdGVfcGF0aHMgPSBzZWxmLmNvbmZpZy5wbHVnaW5t
YW5hZ2VyLl9kdXBsaWNhdGVwYXRocworICAgICAgICAgICAgICAgIGlmIHBhdGggaW4gZHVwbGlj
YXRlX3BhdGhzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVfcGF0aHMuYWRkKHBhdGgpCisK
KyAgICAgICAgcmV0dXJuIGlob29rLnB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aD1wYXRoLCBwYXJl
bnQ9c2VsZikgICMgdHlwZTogaWdub3JlW25vLWFueS1yZXR1cm5dCisKKyAgICBAb3ZlcmxvYWQK
KyAgICBkZWYgcGVyZm9ybV9jb2xsZWN0KAorICAgICAgICBzZWxmLCBhcmdzOiBPcHRpb25hbFtT
ZXF1ZW5jZVtzdHJdXSA9IC4uLiwgZ2VuaXRlbXM6ICJMaXRlcmFsW1RydWVdIiA9IC4uLgorICAg
ICkgLT4gU2VxdWVuY2Vbbm9kZXMuSXRlbV06CisgICAgICAgIC4uLgorCisgICAgQG92ZXJsb2Fk
ICAjIG5vcWE6IEY4MTEKKyAgICBkZWYgcGVyZm9ybV9jb2xsZWN0KCAgIyBub3FhOiBGODExCisg
ICAgICAgIHNlbGYsIGFyZ3M6IE9wdGlvbmFsW1NlcXVlbmNlW3N0cl1dID0gLi4uLCBnZW5pdGVt
czogYm9vbCA9IC4uLgorICAgICkgLT4gU2VxdWVuY2VbVW5pb25bbm9kZXMuSXRlbSwgbm9kZXMu
Q29sbGVjdG9yXV06CisgICAgICAgIC4uLgorCisgICAgZGVmIHBlcmZvcm1fY29sbGVjdCggICMg
bm9xYTogRjgxMQorICAgICAgICBzZWxmLCBhcmdzOiBPcHRpb25hbFtTZXF1ZW5jZVtzdHJdXSA9
IE5vbmUsIGdlbml0ZW1zOiBib29sID0gVHJ1ZQorICAgICkgLT4gU2VxdWVuY2VbVW5pb25bbm9k
ZXMuSXRlbSwgbm9kZXMuQ29sbGVjdG9yXV06CisgICAgICAgICIiIlBlcmZvcm0gdGhlIGNvbGxl
Y3Rpb24gcGhhc2UgZm9yIHRoaXMgc2Vzc2lvbi4KKworICAgICAgICBUaGlzIGlzIGNhbGxlZCBi
eSB0aGUgZGVmYXVsdAorICAgICAgICA6ZnVuYzpgcHl0ZXN0X2NvbGxlY3Rpb24gPF9weXRlc3Qu
aG9va3NwZWMucHl0ZXN0X2NvbGxlY3Rpb24+YCBob29rCisgICAgICAgIGltcGxlbWVudGF0aW9u
OyBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBob29rIGZvciBtb3JlIGRldGFpbHMuCisg
ICAgICAgIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBpdCBtYXkgYWxzbyBiZSBjYWxsZWQgZGlyZWN0
bHkgb24gYSBmcmVzaAorICAgICAgICBgYFNlc3Npb25gYC4KKworICAgICAgICBUaGlzIGZ1bmN0
aW9uIG5vcm1hbGx5IHJlY3Vyc2l2ZWx5IGV4cGFuZHMgYW55IGNvbGxlY3RvcnMgY29sbGVjdGVk
CisgICAgICAgIGZyb20gdGhlIHNlc3Npb24gdG8gdGhlaXIgaXRlbXMsIGFuZCBvbmx5IGl0ZW1z
IGFyZSByZXR1cm5lZC4gRm9yCisgICAgICAgIHRlc3RpbmcgcHVycG9zZXMsIHRoaXMgbWF5IGJl
IHN1cHByZXNzZWQgYnkgcGFzc2luZyBgYGdlbml0ZW1zPUZhbHNlYGAsCisgICAgICAgIGluIHdo
aWNoIGNhc2UgdGhlIHJldHVybiB2YWx1ZSBjb250YWlucyB0aGVzZSBjb2xsZWN0b3JzIHVuZXhw
YW5kZWQsCisgICAgICAgIGFuZCBgYHNlc3Npb24uaXRlbXNgYCBpcyBlbXB0eS4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBzZWxmLmNv
bmZpZy5hcmdzCisKKyAgICAgICAgc2VsZi50cmFjZSgicGVyZm9ybV9jb2xsZWN0Iiwgc2VsZiwg
YXJncykKKyAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCArPSAxCisKKyAgICAgICAgc2Vs
Zi5fbm90Zm91bmQgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgU2VxdWVuY2Vbbm9kZXMu
Q29sbGVjdG9yXV1dCisgICAgICAgIHNlbGYuX2luaXRpYWxfcGFydHMgPSBbXSAgIyB0eXBlOiBM
aXN0W1R1cGxlW3B5LnBhdGgubG9jYWwsIExpc3Rbc3RyXV1dCisgICAgICAgIHNlbGYuaXRlbXMg
PSBbXSAgIyB0eXBlOiBMaXN0W25vZGVzLkl0ZW1dCisKICAgICAgICAgaG9vayA9IHNlbGYuY29u
ZmlnLmhvb2sKKworICAgICAgICBpdGVtcyA9IHNlbGYuaXRlbXMgICMgdHlwZTogU2VxdWVuY2Vb
VW5pb25bbm9kZXMuSXRlbSwgbm9kZXMuQ29sbGVjdG9yXV0KICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgaXRlbXMgPSBzZWxmLl9wZXJmb3JtX2NvbGxlY3QoYXJncywgZ2VuaXRlbXMpCisgICAg
ICAgICAgICBpbml0aWFscGF0aHMgPSBbXSAgIyB0eXBlOiBMaXN0W3B5LnBhdGgubG9jYWxdCisg
ICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CisgICAgICAgICAgICAgICAgZnNwYXRoLCBwYXJ0
cyA9IHJlc29sdmVfY29sbGVjdGlvbl9hcmd1bWVudCgKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5jb25maWcuaW52b2NhdGlvbl9wYXJhbXMuZGlyLAorICAgICAgICAgICAgICAgICAgICBhcmcs
CisgICAgICAgICAgICAgICAgICAgIGFzX3B5cGF0aD1zZWxmLmNvbmZpZy5vcHRpb24ucHlhcmdz
LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9pbml0aWFsX3BhcnRz
LmFwcGVuZCgoZnNwYXRoLCBwYXJ0cykpCisgICAgICAgICAgICAgICAgaW5pdGlhbHBhdGhzLmFw
cGVuZChmc3BhdGgpCisgICAgICAgICAgICBzZWxmLl9pbml0aWFscGF0aHMgPSBmcm96ZW5zZXQo
aW5pdGlhbHBhdGhzKQorICAgICAgICAgICAgcmVwID0gY29sbGVjdF9vbmVfbm9kZShzZWxmKQor
ICAgICAgICAgICAgc2VsZi5paG9vay5weXRlc3RfY29sbGVjdHJlcG9ydChyZXBvcnQ9cmVwKQor
ICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LmluZGVudCAtPSAxCisgICAgICAgICAgICBpZiBz
ZWxmLl9ub3Rmb3VuZDoKKyAgICAgICAgICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICAgICAg
ICAgIGZvciBhcmcsIGNvbHMgaW4gc2VsZi5fbm90Zm91bmQ6CisgICAgICAgICAgICAgICAgICAg
IGxpbmUgPSAiKG5vIG5hbWUgeyFyfSBpbiBhbnkgb2YgeyFyfSkiLmZvcm1hdChhcmcsIGNvbHMp
CisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIm5vdCBmb3VuZDoge31cbnt9Ii5m
b3JtYXQoYXJnLCBsaW5lKSkKKyAgICAgICAgICAgICAgICByYWlzZSBVc2FnZUVycm9yKCplcnJv
cnMpCisgICAgICAgICAgICBpZiBub3QgZ2VuaXRlbXM6CisgICAgICAgICAgICAgICAgaXRlbXMg
PSByZXAucmVzdWx0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHJlcC5w
YXNzZWQ6CisgICAgICAgICAgICAgICAgICAgIGZvciBub2RlIGluIHJlcC5yZXN1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLml0ZW1zLmV4dGVuZChzZWxmLmdlbml0ZW1zKG5vZGUp
KQorCiAgICAgICAgICAgICBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmNoZWNrX3BlbmRpbmco
KQogICAgICAgICAgICAgaG9vay5weXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcygKICAgICAg
ICAgICAgICAgICBzZXNzaW9uPXNlbGYsIGNvbmZpZz1zZWxmLmNvbmZpZywgaXRlbXM9aXRlbXMK
ICAgICAgICAgICAgICkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGhvb2sucHl0ZXN0
X2NvbGxlY3Rpb25fZmluaXNoKHNlc3Npb249c2VsZikKKwogICAgICAgICBzZWxmLnRlc3RzY29s
bGVjdGVkID0gbGVuKGl0ZW1zKQogICAgICAgICByZXR1cm4gaXRlbXMKIAotICAgIGRlZiBfcGVy
Zm9ybV9jb2xsZWN0KHNlbGYsIGFyZ3MsIGdlbml0ZW1zKToKLSAgICAgICAgaWYgYXJncyBpcyBO
b25lOgotICAgICAgICAgICAgYXJncyA9IHNlbGYuY29uZmlnLmFyZ3MKLSAgICAgICAgc2VsZi50
cmFjZSgicGVyZm9ybV9jb2xsZWN0Iiwgc2VsZiwgYXJncykKLSAgICAgICAgc2VsZi50cmFjZS5y
b290LmluZGVudCArPSAxCi0gICAgICAgIHNlbGYuX25vdGZvdW5kID0gW10KLSAgICAgICAgc2Vs
Zi5faW5pdGlhbHBhdGhzID0gc2V0KCkKLSAgICAgICAgc2VsZi5faW5pdGlhbHBhcnRzID0gW10K
LSAgICAgICAgc2VsZi5pdGVtcyA9IGl0ZW1zID0gW10KLSAgICAgICAgZm9yIGFyZyBpbiBhcmdz
OgotICAgICAgICAgICAgcGFydHMgPSBzZWxmLl9wYXJzZWFyZyhhcmcpCi0gICAgICAgICAgICBz
ZWxmLl9pbml0aWFscGFydHMuYXBwZW5kKHBhcnRzKQotICAgICAgICAgICAgc2VsZi5faW5pdGlh
bHBhdGhzLmFkZChwYXJ0c1swXSkKLSAgICAgICAgcmVwID0gY29sbGVjdF9vbmVfbm9kZShzZWxm
KQotICAgICAgICBzZWxmLmlob29rLnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydD1yZXApCi0g
ICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgLT0gMQotICAgICAgICBpZiBzZWxmLl9ub3Rm
b3VuZDoKLSAgICAgICAgICAgIGVycm9ycyA9IFtdCi0gICAgICAgICAgICBmb3IgYXJnLCBleGMg
aW4gc2VsZi5fbm90Zm91bmQ6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICIobm8gbmFtZSAlciBp
biBhbnkgb2YgJXIpIiAlIChhcmcsIGV4Yy5hcmdzWzBdKQotICAgICAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQoIm5vdCBmb3VuZDogJXNcbiVzIiAlIChhcmcsIGxpbmUpKQotICAgICAgICAgICAg
ICAgICMgWFhYOiB0ZXN0IHRoaXMKLSAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoKmVycm9y
cykKLSAgICAgICAgaWYgbm90IGdlbml0ZW1zOgotICAgICAgICAgICAgcmV0dXJuIHJlcC5yZXN1
bHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAg
ICAgICAgZm9yIG5vZGUgaW4gcmVwLnJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5p
dGVtcy5leHRlbmQoc2VsZi5nZW5pdGVtcyhub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBpdGVt
cwotCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgIGZvciBwYXJ0cyBpbiBzZWxmLl9p
bml0aWFscGFydHM6Ci0gICAgICAgICAgICBhcmcgPSAiOjoiLmpvaW4obWFwKHN0ciwgcGFydHMp
KQotICAgICAgICAgICAgc2VsZi50cmFjZSgicHJvY2Vzc2luZyBhcmd1bWVudCIsIGFyZykKLSAg
ICAgICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgKz0gMQotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYuX2NvbGxlY3QoYXJnKToKLSAgICAgICAgICAg
ICAgICAgICAgeWllbGQgeAotICAgICAgICAgICAgZXhjZXB0IE5vTWF0Y2g6Ci0gICAgICAgICAg
ICAgICAgIyB3ZSBhcmUgaW5zaWRlIGEgbWFrZV9yZXBvcnQgaG9vayBzbwotICAgICAgICAgICAg
ICAgICMgd2UgY2Fubm90IGRpcmVjdGx5IHBhc3MgdGhyb3VnaCB0aGUgZXhjZXB0aW9uCi0gICAg
ICAgICAgICAgICAgc2VsZi5fbm90Zm91bmQuYXBwZW5kKChhcmcsIHN5cy5leGNfaW5mbygpWzFd
KSkKKyAgICBkZWYgY29sbGVjdChzZWxmKSAtPiBJdGVyYXRvcltVbmlvbltub2Rlcy5JdGVtLCBu
b2Rlcy5Db2xsZWN0b3JdXToKKyAgICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgUGFj
a2FnZQogCi0gICAgICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50IC09IDEKKyAgICAgICAg
IyBLZWVwIHRyYWNrIG9mIGFueSBjb2xsZWN0ZWQgbm9kZXMgaW4gaGVyZSwgc28gd2UgZG9uJ3Qg
ZHVwbGljYXRlIGZpeHR1cmVzLgorICAgICAgICBub2RlX2NhY2hlMSA9IHt9ICAjIHR5cGU6IERp
Y3RbcHkucGF0aC5sb2NhbCwgU2VxdWVuY2Vbbm9kZXMuQ29sbGVjdG9yXV0KKyAgICAgICAgbm9k
ZV9jYWNoZTIgPSAoCisgICAgICAgICAgICB7fQorICAgICAgICApICAjIHR5cGU6IERpY3RbVHVw
bGVbVHlwZVtub2Rlcy5Db2xsZWN0b3JdLCBweS5wYXRoLmxvY2FsXSwgbm9kZXMuQ29sbGVjdG9y
XQogCi0gICAgZGVmIF9jb2xsZWN0KHNlbGYsIGFyZyk6Ci0gICAgICAgIG5hbWVzID0gc2VsZi5f
cGFyc2VhcmcoYXJnKQotICAgICAgICBwYXRoID0gbmFtZXMucG9wKDApCi0gICAgICAgIGlmIHBh
dGguY2hlY2soZGlyPTEpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBuYW1lcywgImludmFsaWQg
YXJnICVyIiAlIChhcmcsKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gcGF0aC52aXNpdCgKLSAg
ICAgICAgICAgICAgICBmaWw9bGFtYmRhIHg6IHguY2hlY2soZmlsZT0xKSwgcmVjPXNlbGYuX3Jl
Y3Vyc2UsIGJmPVRydWUsIHNvcnQ9VHJ1ZQotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAg
ICBmb3IgeCBpbiBzZWxmLl9jb2xsZWN0ZmlsZShwYXRoKToKLSAgICAgICAgICAgICAgICAgICAg
eWllbGQgeAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IHBhdGguY2hlY2soZmls
ZT0xKQotICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5tYXRjaG5vZGVzKHNlbGYuX2NvbGxlY3Rm
aWxlKHBhdGgpLCBuYW1lcyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgeAorICAgICAgICAjIEtl
ZXAgdHJhY2sgb2YgYW55IGNvbGxlY3RlZCBjb2xsZWN0b3JzIGluIG1hdGNobm9kZXMgcGF0aHMs
IHNvIHRoZXkKKyAgICAgICAgIyBhcmUgbm90IGNvbGxlY3RlZCBtb3JlIHRoYW4gb25jZS4KKyAg
ICAgICAgbWF0Y2hub2Rlc19jYWNoZSA9ICgKKyAgICAgICAgICAgIHt9CisgICAgICAgICkgICMg
dHlwZTogRGljdFtUdXBsZVtUeXBlW25vZGVzLkNvbGxlY3Rvcl0sIHN0cl0sIENvbGxlY3RSZXBv
cnRdCiAKLSAgICBkZWYgX2NvbGxlY3RmaWxlKHNlbGYsIHBhdGgpOgotICAgICAgICBpaG9vayA9
IHNlbGYuZ2V0aG9va3Byb3h5KHBhdGgpCi0gICAgICAgIGlmIG5vdCBzZWxmLmlzaW5pdHBhdGgo
cGF0aCk6Ci0gICAgICAgICAgICBpZiBpaG9vay5weXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aD1w
YXRoLCBjb25maWc9c2VsZi5jb25maWcpOgotICAgICAgICAgICAgICAgIHJldHVybiAoKQotICAg
ICAgICByZXR1cm4gaWhvb2sucHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoPXBhdGgsIHBhcmVudD1z
ZWxmKQorICAgICAgICAjIERpcm5hbWVzIG9mIHBrZ3Mgd2l0aCBkdW5kZXItaW5pdCBmaWxlcy4K
KyAgICAgICAgcGtnX3Jvb3RzID0ge30gICMgdHlwZTogRGljdFtzdHIsIFBhY2thZ2VdCiAKLSAg
ICBkZWYgX3JlY3Vyc2Uoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlob29rID0gc2VsZi5nZXRob29r
cHJveHkocGF0aC5kaXJwYXRoKCkpCi0gICAgICAgIGlmIGlob29rLnB5dGVzdF9pZ25vcmVfY29s
bGVjdChwYXRoPXBhdGgsIGNvbmZpZz1zZWxmLmNvbmZpZyk6Ci0gICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgZm9yIHBhdCBpbiBzZWxmLl9ub3JlY3Vyc2VwYXR0ZXJuczoKLSAgICAgICAgICAg
IGlmIHBhdGguY2hlY2soZm5tYXRjaD1wYXQpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICBpaG9vayA9IHNlbGYuZ2V0aG9va3Byb3h5KHBhdGgpCi0gICAgICAgIGlob29r
LnB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeShwYXRoPXBhdGgsIHBhcmVudD1zZWxmKQotICAgICAg
ICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF90cnljb252ZXJ0cHlhcmcoc2VsZiwgeCk6Ci0gICAg
ICAgICIiIkNvbnZlcnQgYSBkb3R0ZWQgbW9kdWxlIG5hbWUgdG8gcGF0aC4KLQotICAgICAgICAi
IiIKKyAgICAgICAgZm9yIGFyZ3BhdGgsIG5hbWVzIGluIHNlbGYuX2luaXRpYWxfcGFydHM6Cisg
ICAgICAgICAgICBzZWxmLnRyYWNlKCJwcm9jZXNzaW5nIGFyZ3VtZW50IiwgKGFyZ3BhdGgsIG5h
bWVzKSkKKyAgICAgICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgKz0gMQogCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHdpdGggX3BhdGNoZWRfZmluZF9tb2R1bGUoKToKLSAgICAgICAg
ICAgICAgICBsb2FkZXIgPSBwa2d1dGlsLmZpbmRfbG9hZGVyKHgpCi0gICAgICAgIGV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGlmIGxvYWRlciBpcyBO
b25lOgotICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgIyBUaGlzIG1ldGhvZCBpcyBzb21l
dGltZXMgaW52b2tlZCB3aGVuIEFzc2VydGlvblJld3JpdGluZ0hvb2ssIHdoaWNoCi0gICAgICAg
ICMgZG9lcyBub3QgZGVmaW5lIGEgZ2V0X2ZpbGVuYW1lIG1ldGhvZCwgaXMgYWxyZWFkeSBpbiBw
bGFjZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBfcGF0Y2hlZF9maW5kX21vZHVs
ZSgpOgotICAgICAgICAgICAgICAgIHBhdGggPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKHgpCi0gICAg
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICMgUmV0cmlldmUgcGF0aCBm
cm9tIEFzc2VydGlvblJld3JpdGluZ0hvb2s6Ci0gICAgICAgICAgICBwYXRoID0gbG9hZGVyLm1v
ZHVsZXNbeF1bMF0uY29fZmlsZW5hbWUKLSAgICAgICAgaWYgbG9hZGVyLmlzX3BhY2thZ2UoeCk6
Ci0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCi0gICAgICAgIHJldHVy
biBwYXRoCi0KLSAgICBkZWYgX3BhcnNlYXJnKHNlbGYsIGFyZyk6Ci0gICAgICAgICIiIiByZXR1
cm4gKGZzcGF0aCwgbmFtZXMpIHR1cGxlIGFmdGVyIGNoZWNraW5nIHRoZSBmaWxlIGV4aXN0cy4g
IiIiCi0gICAgICAgIHBhcnRzID0gc3RyKGFyZykuc3BsaXQoIjo6IikKLSAgICAgICAgaWYgc2Vs
Zi5jb25maWcub3B0aW9uLnB5YXJnczoKLSAgICAgICAgICAgIHBhcnRzWzBdID0gc2VsZi5fdHJ5
Y29udmVydHB5YXJnKHBhcnRzWzBdKQotICAgICAgICByZWxwYXRoID0gcGFydHNbMF0ucmVwbGFj
ZSgiLyIsIG9zLnNlcCkKLSAgICAgICAgcGF0aCA9IHNlbGYuY29uZmlnLmludm9jYXRpb25fZGly
LmpvaW4ocmVscGF0aCwgYWJzPVRydWUpCi0gICAgICAgIGlmIG5vdCBwYXRoLmNoZWNrKCk6Ci0g
ICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24ucHlhcmdzOgotICAgICAgICAgICAgICAg
IHJhaXNlIFVzYWdlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICJmaWxlIG9yIHBhY2thZ2Ug
bm90IGZvdW5kOiAiICsgYXJnICsgIiAobWlzc2luZyBfX2luaXRfXy5weT8pIgotICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICMgU3RhcnQgd2l0aCBhIFNlc3Npb24gcm9vdCwgYW5kIGRl
bHZlIHRvIGFyZ3BhdGggaXRlbSAoZGlyIG9yIGZpbGUpCisgICAgICAgICAgICAjIGFuZCBzdGFj
ayBhbGwgUGFja2FnZXMgZm91bmQgb24gdGhlIHdheS4KKyAgICAgICAgICAgICMgTm8gcG9pbnQg
aW4gZmluZGluZyBwYWNrYWdlcyB3aGVuIGNvbGxlY3RpbmcgZG9jdGVzdHMuCisgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJkb2N0ZXN0bW9kdWxlcyIsIEZhbHNlKToK
KyAgICAgICAgICAgICAgICBwbSA9IHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIKKyAgICAgICAg
ICAgICAgICBmb3IgcGFyZW50IGluIHJldmVyc2VkKGFyZ3BhdGgucGFydHMoKSk6CisgICAgICAg
ICAgICAgICAgICAgIGlmIHBtLl9jb25mY3V0ZGlyIGFuZCBwbS5fY29uZmN1dGRpci5yZWx0byhw
YXJlbnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAg
ICAgICBpZiBwYXJlbnQuaXNkaXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ2luaXQg
PSBwYXJlbnQuam9pbigiX19pbml0X18ucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
cGtnaW5pdC5pc2ZpbGUoKSBhbmQgcGtnaW5pdCBub3QgaW4gbm9kZV9jYWNoZTE6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29sID0gc2VsZi5fY29sbGVjdGZpbGUocGtnaW5pdCwgaGFu
ZGxlX2R1cGVzPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb2xbMF0sIFBhY2th
Z2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX3Jvb3RzW3N0cihw
YXJlbnQpXSA9IGNvbFswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlX2Nh
Y2hlMVtjb2xbMF0uZnNwYXRoXSA9IFtjb2xbMF1dCisKKyAgICAgICAgICAgICMgSWYgaXQncyBh
IGRpcmVjdG9yeSBhcmd1bWVudCwgcmVjdXJzZSBhbmQgbG9vayBmb3IgYW55IFN1YnBhY2thZ2Vz
LgorICAgICAgICAgICAgIyBMZXQgdGhlIFBhY2thZ2UgY29sbGVjdG9yIGRlYWwgd2l0aCBzdWJu
b2RlcywgZG9uJ3QgY29sbGVjdCBoZXJlLgorICAgICAgICAgICAgaWYgYXJncGF0aC5jaGVjayhk
aXI9MSk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBuYW1lcywgImludmFsaWQgYXJnIHsh
cn0iLmZvcm1hdCgoYXJncGF0aCwgbmFtZXMpKQorCisgICAgICAgICAgICAgICAgc2Vlbl9kaXJz
ID0gc2V0KCkgICMgdHlwZTogU2V0W3B5LnBhdGgubG9jYWxdCisgICAgICAgICAgICAgICAgZm9y
IGRpcmVudHJ5IGluIHZpc2l0KHN0cihhcmdwYXRoKSwgc2VsZi5fcmVjdXJzZSk6CisgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBkaXJlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBweS5wYXRoLmxv
Y2FsKGRpcmVudHJ5LnBhdGgpCisgICAgICAgICAgICAgICAgICAgIGRpcnBhdGggPSBwYXRoLmRp
cnBhdGgoKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGRpcnBhdGggbm90IGluIHNlZW5fZGly
czoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQ29sbGVjdCBwYWNrYWdlcyBmaXJzdC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlZW5fZGlycy5hZGQoZGlycGF0aCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBrZ2luaXQgPSBkaXJwYXRoLmpvaW4oIl9faW5pdF9fLnB5IikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIHBrZ2luaXQuZXhpc3RzKCk6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5fY29sbGVjdGZpbGUocGtnaW5pdCk6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCBQYWNrYWdlKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBrZ19yb290c1tzdHIoZGlycGF0aCldID0geAorICAgICAgICAgICAg
ICAgICAgICBpZiBzdHIoZGlycGF0aCkgaW4gcGtnX3Jvb3RzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgIyBEbyBub3QgY29sbGVjdCBwYWNrYWdlcyBoZXJlLgorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmLl9jb2xs
ZWN0ZmlsZShwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9ICh0eXBlKHgpLCB4
LmZzcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBub2RlX2NhY2hlMjoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBub2RlX2NhY2hlMltrZXldCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGVfY2FjaGUyW2tleV0gPSB4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgeAog
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJmaWxl
IG5vdCBmb3VuZDogIiArIGFyZykKLSAgICAgICAgcGFydHNbMF0gPSBwYXRoCi0gICAgICAgIHJl
dHVybiBwYXJ0cworICAgICAgICAgICAgICAgIGFzc2VydCBhcmdwYXRoLmNoZWNrKGZpbGU9MSkK
KworICAgICAgICAgICAgICAgIGlmIGFyZ3BhdGggaW4gbm9kZV9jYWNoZTE6CisgICAgICAgICAg
ICAgICAgICAgIGNvbCA9IG5vZGVfY2FjaGUxW2FyZ3BhdGhdCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdF9yb290ID0gcGtnX3Jvb3RzLmdldChhcmdw
YXRoLmRpcm5hbWUsIHNlbGYpCisgICAgICAgICAgICAgICAgICAgIGNvbCA9IGNvbGxlY3Rfcm9v
dC5fY29sbGVjdGZpbGUoYXJncGF0aCwgaGFuZGxlX2R1cGVzPUZhbHNlKQorICAgICAgICAgICAg
ICAgICAgICBpZiBjb2w6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlX2NhY2hlMVthcmdw
YXRoXSA9IGNvbAorCisgICAgICAgICAgICAgICAgbWF0Y2hpbmcgPSBbXQorICAgICAgICAgICAg
ICAgIHdvcmsgPSBbCisgICAgICAgICAgICAgICAgICAgIChjb2wsIG5hbWVzKQorICAgICAgICAg
ICAgICAgIF0gICMgdHlwZTogTGlzdFtUdXBsZVtTZXF1ZW5jZVtVbmlvbltub2Rlcy5JdGVtLCBu
b2Rlcy5Db2xsZWN0b3JdXSwgU2VxdWVuY2Vbc3RyXV1dCisgICAgICAgICAgICAgICAgd2hpbGUg
d29yazoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50cmFjZSgibWF0Y2hub2RlcyIsIGNvbCwg
bmFtZXMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgKz0gMQor
CisgICAgICAgICAgICAgICAgICAgIG1hdGNobm9kZXMsIG1hdGNobmFtZXMgPSB3b3JrLnBvcCgp
CisgICAgICAgICAgICAgICAgICAgIGZvciBub2RlIGluIG1hdGNobm9kZXM6CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgbWF0Y2huYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaGluZy5hcHBlbmQobm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwg
bm9kZXMuQ29sbGVjdG9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gKHR5cGUobm9kZSksIG5vZGUubm9kZWlkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIG1hdGNobm9kZXNfY2FjaGU6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwID0gbWF0Y2hub2Rlc19jYWNoZVtrZXldCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cCA9IGNvbGxlY3Rfb25lX25vZGUobm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaG5vZGVzX2NhY2hlW2tleV0gPSByZXAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJl
cC5wYXNzZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWF0Y2hub2RlcyA9IFtd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVwLnJlc3VsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBSZW1vdmUgcGFyYW1ldHJpemVkIHdv
cmthcm91bmQgb25jZSBjb2xsZWN0aW9uIHN0cnVjdHVyZSBjb250YWlucworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIHBhcmFtZXRyaXphdGlvbi4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ci5uYW1lID09IG1hdGNobmFtZXNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9yIHIubmFtZS5zcGxpdCgiWyIpWzBdID09IG1hdGNobmFtZXNbMF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1Ym1hdGNobm9kZXMuYXBwZW5kKHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgc3VibWF0Y2hub2RlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yay5h
cHBlbmQoKHN1Ym1hdGNobm9kZXMsIG1hdGNobmFtZXNbMTpdKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIFhYWCBBY2NlcHQgSURzIHRoYXQgZG9uJ3QgaGF2ZSAiKCkiIGZvciBjbGFz
cyBpbnN0YW5jZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsZW4ocmVwLnJl
c3VsdCkgPT0gMSBhbmQgcmVwLnJlc3VsdFswXS5uYW1lID09ICIoKSI6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdvcmsuYXBwZW5kKChyZXAucmVzdWx0LCBtYXRjaG5hbWVzKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyBSZXBvcnQgY29sbGVjdGlvbiBmYWlsdXJlcyBoZXJlIHRvIGF2b2lkIGZhaWxpbmcgdG8g
cnVuIHNvbWUgdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lmaWVkIGlu
IHRoZSBjb21tYW5kIGxpbmUgYmVjYXVzZSB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgaW1wb3J0ZWQgKCMxMzQpLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUuaWhvb2sucHl0ZXN0X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcCkK
KworICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYWNlKCJtYXRjaG5vZGVzIGZpbmlzaGVkIC0+
ICIsIGxlbihtYXRjaGluZyksICJub2RlcyIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudHJh
Y2Uucm9vdC5pbmRlbnQgLT0gMQorCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoaW5nOgor
ICAgICAgICAgICAgICAgICAgICByZXBvcnRfYXJnID0gIjo6Ii5qb2luKChzdHIoYXJncGF0aCks
ICpuYW1lcykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGZvdW5kLmFwcGVuZCgocmVw
b3J0X2FyZywgY29sKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgICAgICMgSWYgX19pbml0X18ucHkgd2FzIHRoZSBvbmx5IGZpbGUgcmVxdWVzdGVkLCB0aGVu
IHRoZSBtYXRjaGVkIG5vZGUgd2lsbCBiZQorICAgICAgICAgICAgICAgICMgdGhlIGNvcnJlc3Bv
bmRpbmcgUGFja2FnZSwgYW5kIHRoZSBmaXJzdCB5aWVsZGVkIGl0ZW0gd2lsbCBiZSB0aGUgX19p
bml0X18KKyAgICAgICAgICAgICAgICAjIE1vZHVsZSBpdHNlbGYsIHNvIGp1c3QgdXNlIHRoYXQu
IElmIHRoaXMgc3BlY2lhbCBjYXNlIGlzbid0IHRha2VuLCB0aGVuIGFsbAorICAgICAgICAgICAg
ICAgICMgdGhlIGZpbGVzIGluIHRoZSBwYWNrYWdlIHdpbGwgYmUgeWllbGRlZC4KKyAgICAgICAg
ICAgICAgICBpZiBhcmdwYXRoLmJhc2VuYW1lID09ICJfX2luaXRfXy5weSI6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1hdGNoaW5nWzBdLCBub2Rlcy5Db2xsZWN0b3Ip
CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxk
IG5leHQoaXRlcihtYXRjaGluZ1swXS5jb2xsZWN0KCkpKQorICAgICAgICAgICAgICAgICAgICBl
eGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIHBhY2th
Z2UgY29sbGVjdHMgbm90aGluZyB3aXRoIG9ubHkgYW4gX19pbml0X18ucHkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgZmlsZSBpbiBpdCwgd2hpY2ggZ2V0cyBpZ25vcmVkIGJ5IHRoZSBkZWZh
dWx0CisgICAgICAgICAgICAgICAgICAgICAgICAjICJweXRob25fZmlsZXMiIG9wdGlvbi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gbWF0Y2hpbmcKIAotICAgIGRlZiBtYXRjaG5v
ZGVzKHNlbGYsIG1hdGNoaW5nLCBuYW1lcyk6Ci0gICAgICAgIHNlbGYudHJhY2UoIm1hdGNobm9k
ZXMiLCBtYXRjaGluZywgbmFtZXMpCi0gICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgKz0g
MQotICAgICAgICBub2RlcyA9IHNlbGYuX21hdGNobm9kZXMobWF0Y2hpbmcsIG5hbWVzKQotICAg
ICAgICBudW0gPSBsZW4obm9kZXMpCi0gICAgICAgIHNlbGYudHJhY2UoIm1hdGNobm9kZXMgZmlu
aXNoZWQgLT4gIiwgbnVtLCAibm9kZXMiKQotICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50
IC09IDEKLSAgICAgICAgaWYgbnVtID09IDA6Ci0gICAgICAgICAgICByYWlzZSBOb01hdGNoKG1h
dGNoaW5nLCBuYW1lc1s6MV0pCi0gICAgICAgIHJldHVybiBub2RlcwotCi0gICAgZGVmIF9tYXRj
aG5vZGVzKHNlbGYsIG1hdGNoaW5nLCBuYW1lcyk6Ci0gICAgICAgIGlmIG5vdCBtYXRjaGluZyBv
ciBub3QgbmFtZXM6Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmcKLSAgICAgICAgbmFtZSA9
IG5hbWVzWzBdCi0gICAgICAgIGFzc2VydCBuYW1lCi0gICAgICAgIG5leHRuYW1lcyA9IG5hbWVz
WzE6XQotICAgICAgICByZXN1bHRub2RlcyA9IFtdCi0gICAgICAgIGZvciBub2RlIGluIG1hdGNo
aW5nOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBub2Rlcy5JdGVtKToKLSAgICAg
ICAgICAgICAgICBpZiBub3QgbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdG5vZGVz
LmFwcGVuZChub2RlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShub2RlLCBub2Rlcy5Db2xsZWN0b3IpCi0gICAgICAgICAgICByZXAgPSBj
b2xsZWN0X29uZV9ub2RlKG5vZGUpCi0gICAgICAgICAgICBpZiByZXAucGFzc2VkOgotICAgICAg
ICAgICAgICAgIGhhc19tYXRjaGVkID0gRmFsc2UKLSAgICAgICAgICAgICAgICBmb3IgeCBpbiBy
ZXAucmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAjIFRPRE86IHJlbW92ZSBwYXJhbWV0cml6
ZWQgd29ya2Fyb3VuZCBvbmNlIGNvbGxlY3Rpb24gc3RydWN0dXJlIGNvbnRhaW5zIHBhcmFtZXRy
aXphdGlvbgotICAgICAgICAgICAgICAgICAgICBpZiB4Lm5hbWUgPT0gbmFtZSBvciB4Lm5hbWUu
c3BsaXQoIlsiKVswXSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0bm9k
ZXMuZXh0ZW5kKHNlbGYubWF0Y2hub2RlcyhbeF0sIG5leHRuYW1lcykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBoYXNfbWF0Y2hlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAjIFhYWCBhY2Nl
cHQgSURzIHRoYXQgZG9uJ3QgaGF2ZSAiKCkiIGZvciBjbGFzcyBpbnN0YW5jZXMKLSAgICAgICAg
ICAgICAgICBpZiBub3QgaGFzX21hdGNoZWQgYW5kIGxlbihyZXAucmVzdWx0KSA9PSAxIGFuZCB4
Lm5hbWUgPT0gIigpIjoKLSAgICAgICAgICAgICAgICAgICAgbmV4dG5hbWVzLmluc2VydCgwLCBu
YW1lKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRub2Rlcy5leHRlbmQoc2VsZi5tYXRjaG5v
ZGVzKFt4XSwgbmV4dG5hbWVzKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
IyByZXBvcnQgY29sbGVjdGlvbiBmYWlsdXJlcyBoZXJlIHRvIGF2b2lkIGZhaWxpbmcgdG8gcnVu
IHNvbWUgdGVzdAotICAgICAgICAgICAgICAgICMgc3BlY2lmaWVkIGluIHRoZSBjb21tYW5kIGxp
bmUgYmVjYXVzZSB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZQotICAgICAgICAgICAgICAgICMgaW1w
b3J0ZWQgKCMxMzQpCi0gICAgICAgICAgICAgICAgbm9kZS5paG9vay5weXRlc3RfY29sbGVjdHJl
cG9ydChyZXBvcnQ9cmVwKQotICAgICAgICByZXR1cm4gcmVzdWx0bm9kZXMKKyAgICAgICAgICAg
IHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgLT0gMQogCi0gICAgZGVmIGdlbml0ZW1zKHNlbGYsIG5v
ZGUpOgorICAgIGRlZiBnZW5pdGVtcygKKyAgICAgICAgc2VsZiwgbm9kZTogVW5pb25bbm9kZXMu
SXRlbSwgbm9kZXMuQ29sbGVjdG9yXQorICAgICkgLT4gSXRlcmF0b3Jbbm9kZXMuSXRlbV06CiAg
ICAgICAgIHNlbGYudHJhY2UoImdlbml0ZW1zIiwgbm9kZSkKICAgICAgICAgaWYgaXNpbnN0YW5j
ZShub2RlLCBub2Rlcy5JdGVtKToKICAgICAgICAgICAgIG5vZGUuaWhvb2sucHl0ZXN0X2l0ZW1j
b2xsZWN0ZWQoaXRlbT1ub2RlKQpAQCAtNjA2LDYgKzgwMCw2OSBAQCBjbGFzcyBTZXNzaW9uKG5v
ZGVzLkZTQ29sbGVjdG9yKToKICAgICAgICAgICAgIHJlcCA9IGNvbGxlY3Rfb25lX25vZGUobm9k
ZSkKICAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6CiAgICAgICAgICAgICAgICAgZm9yIHN1Ym5v
ZGUgaW4gcmVwLnJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5nZW5p
dGVtcyhzdWJub2RlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAg
ICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLmdlbml0ZW1zKHN1Ym5vZGUpCiAgICAgICAgICAg
ICBub2RlLmlob29rLnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydD1yZXApCisKKworZGVmIHNl
YXJjaF9weXBhdGgobW9kdWxlX25hbWU6IHN0cikgLT4gc3RyOgorICAgICIiIlNlYXJjaCBzeXMu
cGF0aCBmb3IgdGhlIGdpdmVuIGEgZG90dGVkIG1vZHVsZSBuYW1lLCBhbmQgcmV0dXJuIGl0cyBm
aWxlIHN5c3RlbSBwYXRoLiIiIgorICAgIHRyeToKKyAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51
dGlsLmZpbmRfc3BlYyhtb2R1bGVfbmFtZSkKKyAgICAjIEF0dHJpYnV0ZUVycm9yOiBsb29rcyBs
aWtlIHBhY2thZ2UgbW9kdWxlLCBidXQgYWN0dWFsbHkgZmlsZW5hbWUKKyAgICAjIEltcG9ydEVy
cm9yOiBtb2R1bGUgZG9lcyBub3QgZXhpc3QKKyAgICAjIFZhbHVlRXJyb3I6IG5vdCBhIG1vZHVs
ZSBuYW1lCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgSW1wb3J0RXJyb3IsIFZhbHVlRXJy
b3IpOgorICAgICAgICByZXR1cm4gbW9kdWxlX25hbWUKKyAgICBpZiBzcGVjIGlzIE5vbmUgb3Ig
c3BlYy5vcmlnaW4gaXMgTm9uZSBvciBzcGVjLm9yaWdpbiA9PSAibmFtZXNwYWNlIjoKKyAgICAg
ICAgcmV0dXJuIG1vZHVsZV9uYW1lCisgICAgZWxpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9j
YXRpb25zOgorICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKHNwZWMub3JpZ2luKQorICAg
IGVsc2U6CisgICAgICAgIHJldHVybiBzcGVjLm9yaWdpbgorCisKK2RlZiByZXNvbHZlX2NvbGxl
Y3Rpb25fYXJndW1lbnQoCisgICAgaW52b2NhdGlvbl9wYXRoOiBQYXRoLCBhcmc6IHN0ciwgKiwg
YXNfcHlwYXRoOiBib29sID0gRmFsc2UKKykgLT4gVHVwbGVbcHkucGF0aC5sb2NhbCwgTGlzdFtz
dHJdXToKKyAgICAiIiJQYXJzZSBwYXRoIGFyZ3VtZW50cyBvcHRpb25hbGx5IGNvbnRhaW5pbmcg
c2VsZWN0aW9uIHBhcnRzIGFuZCByZXR1cm4gKGZzcGF0aCwgbmFtZXMpLgorCisgICAgQ29tbWFu
ZC1saW5lIGFyZ3VtZW50cyBjYW4gcG9pbnQgdG8gZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzLCBh
bmQgb3B0aW9uYWxseSBjb250YWluCisgICAgcGFydHMgZm9yIHNwZWNpZmljIHRlc3RzIHNlbGVj
dGlvbiwgZm9yIGV4YW1wbGU6CisKKyAgICAgICAgInBrZy90ZXN0cy90ZXN0X2Zvby5weTo6VGVz
dENsYXNzOjp0ZXN0X2ZvbyIKKworICAgIFRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGUgcGF0aCBl
eGlzdHMsIGFuZCByZXR1cm5zIGEgdHVwbGU6CisKKyAgICAgICAgKHB5LnBhdGgucGF0aCgiL2Z1
bGwvcGF0aC90by9wa2cvdGVzdHMvdGVzdF9mb28ucHkiKSwgWyJUZXN0Q2xhc3MiLCAidGVzdF9m
b28iXSkKKworICAgIFdoZW4gYXNfcHlwYXRoIGlzIFRydWUsIGV4cGVjdHMgdGhhdCB0aGUgY29t
bWFuZC1saW5lIGFyZ3VtZW50IGFjdHVhbGx5IGNvbnRhaW5zCisgICAgbW9kdWxlIHBhdGhzIGlu
c3RlYWQgb2YgZmlsZS1zeXN0ZW0gcGF0aHM6CisKKyAgICAgICAgInBrZy50ZXN0cy50ZXN0X2Zv
bzo6VGVzdENsYXNzOjp0ZXN0X2ZvbyIKKworICAgIEluIHdoaWNoIGNhc2Ugd2Ugc2VhcmNoIHN5
cy5wYXRoIGZvciBhIG1hdGNoaW5nIG1vZHVsZSwgYW5kIHRoZW4gcmV0dXJuIHRoZSAqcGF0aCog
dG8gdGhlCisgICAgZm91bmQgbW9kdWxlLgorCisgICAgSWYgdGhlIHBhdGggZG9lc24ndCBleGlz
dCwgcmFpc2UgVXNhZ2VFcnJvci4KKyAgICBJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSBhbmQg
c2VsZWN0aW9uIHBhcnRzIGFyZSBwcmVzZW50LCByYWlzZSBVc2FnZUVycm9yLgorICAgICIiIgor
ICAgIHN0cnBhdGgsICpwYXJ0cyA9IHN0cihhcmcpLnNwbGl0KCI6OiIpCisgICAgaWYgYXNfcHlw
YXRoOgorICAgICAgICBzdHJwYXRoID0gc2VhcmNoX3B5cGF0aChzdHJwYXRoKQorICAgIGZzcGF0
aCA9IGludm9jYXRpb25fcGF0aCAvIHN0cnBhdGgKKyAgICBmc3BhdGggPSBhYnNvbHV0ZXBhdGgo
ZnNwYXRoKQorICAgIGlmIG5vdCBmc3BhdGguZXhpc3RzKCk6CisgICAgICAgIG1zZyA9ICgKKyAg
ICAgICAgICAgICJtb2R1bGUgb3IgcGFja2FnZSBub3QgZm91bmQ6IHthcmd9IChtaXNzaW5nIF9f
aW5pdF9fLnB5PykiCisgICAgICAgICAgICBpZiBhc19weXBhdGgKKyAgICAgICAgICAgIGVsc2Ug
ImZpbGUgb3IgZGlyZWN0b3J5IG5vdCBmb3VuZDoge2FyZ30iCisgICAgICAgICkKKyAgICAgICAg
cmFpc2UgVXNhZ2VFcnJvcihtc2cuZm9ybWF0KGFyZz1hcmcpKQorICAgIGlmIHBhcnRzIGFuZCBm
c3BhdGguaXNfZGlyKCk6CisgICAgICAgIG1zZyA9ICgKKyAgICAgICAgICAgICJwYWNrYWdlIGFy
Z3VtZW50IGNhbm5vdCBjb250YWluIDo6IHNlbGVjdGlvbiBwYXJ0czoge2FyZ30iCisgICAgICAg
ICAgICBpZiBhc19weXBhdGgKKyAgICAgICAgICAgIGVsc2UgImRpcmVjdG9yeSBhcmd1bWVudCBj
YW5ub3QgY29udGFpbiA6OiBzZWxlY3Rpb24gcGFydHM6IHthcmd9IgorICAgICAgICApCisgICAg
ICAgIHJhaXNlIFVzYWdlRXJyb3IobXNnLmZvcm1hdChhcmc9YXJnKSkKKyAgICByZXR1cm4gcHku
cGF0aC5sb2NhbChzdHIoZnNwYXRoKSksIHBhcnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9tYXJrL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFy
ay9fX2luaXRfXy5weQppbmRleCBlMzkxOGNhNmE0ZmIuLjZhOWIyNjIzMDdlZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9fX2luaXRfXy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9tYXJrL19faW5pdF9fLnB5CkBAIC0xLDU1ICsxLDc0IEBACi0iIiIg
Z2VuZXJpYyBtZWNoYW5pc20gZm9yIG1hcmtpbmcgYW5kIHNlbGVjdGluZyBweXRob24gZnVuY3Rp
b25zLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lv
biwgcHJpbnRfZnVuY3Rpb24KKyIiIkdlbmVyaWMgbWVjaGFuaXNtIGZvciBtYXJraW5nIGFuZCBz
ZWxlY3RpbmcgcHl0aG9uIGZ1bmN0aW9ucy4iIiIKK2ltcG9ydCB0eXBpbmcKK2ltcG9ydCB3YXJu
aW5ncworZnJvbSB0eXBpbmcgaW1wb3J0IEFic3RyYWN0U2V0Citmcm9tIHR5cGluZyBpbXBvcnQg
TGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVW5p
b24KKworaW1wb3J0IGF0dHIKKworZnJvbSAuZXhwcmVzc2lvbiBpbXBvcnQgRXhwcmVzc2lvbgor
ZnJvbSAuZXhwcmVzc2lvbiBpbXBvcnQgUGFyc2VFcnJvcgorZnJvbSAuc3RydWN0dXJlcyBpbXBv
cnQgRU1QVFlfUEFSQU1FVEVSU0VUX09QVElPTgorZnJvbSAuc3RydWN0dXJlcyBpbXBvcnQgZ2V0
X2VtcHR5X3BhcmFtZXRlcnNldF9tYXJrCitmcm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCBNYXJrCitm
cm9tIC5zdHJ1Y3R1cmVzIGltcG9ydCBNQVJLX0dFTgorZnJvbSAuc3RydWN0dXJlcyBpbXBvcnQg
TWFya0RlY29yYXRvcgorZnJvbSAuc3RydWN0dXJlcyBpbXBvcnQgTWFya0dlbmVyYXRvcgorZnJv
bSAuc3RydWN0dXJlcyBpbXBvcnQgUGFyYW1ldGVyU2V0Citmcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zy
b20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3QuY29uZmlnIGlt
cG9ydCBob29raW1wbAogZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgVXNhZ2VFcnJvcgotZnJv
bSAuc3RydWN0dXJlcyBpbXBvcnQgKAotICAgIFBhcmFtZXRlclNldCwKLSAgICBFTVBUWV9QQVJB
TUVURVJTRVRfT1BUSU9OLAotICAgIE1BUktfR0VOLAotICAgIE1hcmssCi0gICAgTWFya0luZm8s
Ci0gICAgTWFya0RlY29yYXRvciwKLSAgICBNYXJrR2VuZXJhdG9yLAotICAgIHRyYW5zZmVyX21h
cmtlcnMsCi0gICAgZ2V0X2VtcHR5X3BhcmFtZXRlcnNldF9tYXJrLAotKQotZnJvbSAubGVnYWN5
IGltcG9ydCBtYXRjaGtleXdvcmQsIG1hdGNobWFyaworZnJvbSBfcHl0ZXN0LmNvbmZpZy5hcmdw
YXJzaW5nIGltcG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5kZXByZWNhdGVkIGltcG9ydCBNSU5V
U19LX0NPTE9OCitmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQgTUlOVVNfS19EQVNICitm
cm9tIF9weXRlc3Quc3RvcmUgaW1wb3J0IFN0b3JlS2V5CisKK2lmIFRZUEVfQ0hFQ0tJTkc6Cisg
ICAgZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCisKIAogX19hbGxfXyA9IFsKKyAgICAi
TUFSS19HRU4iLAogICAgICJNYXJrIiwKLSAgICAiTWFya0luZm8iLAogICAgICJNYXJrRGVjb3Jh
dG9yIiwKICAgICAiTWFya0dlbmVyYXRvciIsCi0gICAgInRyYW5zZmVyX21hcmtlcnMiLAorICAg
ICJQYXJhbWV0ZXJTZXQiLAogICAgICJnZXRfZW1wdHlfcGFyYW1ldGVyc2V0X21hcmsiLAogXQog
CiAKLWNsYXNzIE1hcmtlckVycm9yKEV4Y2VwdGlvbik6CitvbGRfbWFya19jb25maWdfa2V5ID0g
U3RvcmVLZXlbT3B0aW9uYWxbQ29uZmlnXV0oKQogCi0gICAgIiIiRXJyb3IgaW4gdXNlIG9mIGEg
cHl0ZXN0IG1hcmtlci9hdHRyaWJ1dGUuIiIiCiAKLQotZGVmIHBhcmFtKCp2YWx1ZXMsICoqa3cp
OgorZGVmIHBhcmFtKAorICAgICp2YWx1ZXM6IG9iamVjdCwKKyAgICBtYXJrczogIlVuaW9uW01h
cmtEZWNvcmF0b3IsIHR5cGluZy5Db2xsZWN0aW9uW1VuaW9uW01hcmtEZWNvcmF0b3IsIE1hcmtd
XV0iID0gKCksCisgICAgaWQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lCispIC0+IFBhcmFtZXRlclNl
dDoKICAgICAiIiJTcGVjaWZ5IGEgcGFyYW1ldGVyIGluIGBweXRlc3QubWFyay5wYXJhbWV0cml6
ZWBfIGNhbGxzIG9yCiAgICAgOnJlZjpgcGFyYW1ldHJpemVkIGZpeHR1cmVzIDxmaXh0dXJlLXBh
cmFtZXRyaXplLW1hcmtzPmAuCiAKICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCiAKLSAgICAg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ0ZXN0X2lucHV0LGV4cGVjdGVkIiwgWwotICAg
ICAgICAgICAgKCIzKzUiLCA4KSwKLSAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgiNio5IiwgNDIs
IG1hcmtzPXB5dGVzdC5tYXJrLnhmYWlsKSwKLSAgICAgICAgXSkKKyAgICAgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICAgICAgICAgInRlc3RfaW5wdXQsZXhwZWN0ZWQiLAorICAg
ICAgICAgICAgWygiMys1IiwgOCksIHB5dGVzdC5wYXJhbSgiNio5IiwgNDIsIG1hcmtzPXB5dGVz
dC5tYXJrLnhmYWlsKSxdLAorICAgICAgICApCiAgICAgICAgIGRlZiB0ZXN0X2V2YWwodGVzdF9p
bnB1dCwgZXhwZWN0ZWQpOgogICAgICAgICAgICAgYXNzZXJ0IGV2YWwodGVzdF9pbnB1dCkgPT0g
ZXhwZWN0ZWQKIAotICAgIDpwYXJhbSB2YWx1ZXM6IHZhcmlhYmxlIGFyZ3Mgb2YgdGhlIHZhbHVl
cyBvZiB0aGUgcGFyYW1ldGVyIHNldCwgaW4gb3JkZXIuCi0gICAgOmtleXdvcmQgbWFya3M6IGEg
c2luZ2xlIG1hcmsgb3IgYSBsaXN0IG9mIG1hcmtzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBwYXJh
bWV0ZXIgc2V0LgotICAgIDprZXl3b3JkIHN0ciBpZDogdGhlIGlkIHRvIGF0dHJpYnV0ZSB0byB0
aGlzIHBhcmFtZXRlciBzZXQuCisgICAgOnBhcmFtIHZhbHVlczogVmFyaWFibGUgYXJncyBvZiB0
aGUgdmFsdWVzIG9mIHRoZSBwYXJhbWV0ZXIgc2V0LCBpbiBvcmRlci4KKyAgICA6a2V5d29yZCBt
YXJrczogQSBzaW5nbGUgbWFyayBvciBhIGxpc3Qgb2YgbWFya3MgdG8gYmUgYXBwbGllZCB0byB0
aGlzIHBhcmFtZXRlciBzZXQuCisgICAgOmtleXdvcmQgc3RyIGlkOiBUaGUgaWQgdG8gYXR0cmli
dXRlIHRvIHRoaXMgcGFyYW1ldGVyIHNldC4KICAgICAiIiIKLSAgICByZXR1cm4gUGFyYW1ldGVy
U2V0LnBhcmFtKCp2YWx1ZXMsICoqa3cpCisgICAgcmV0dXJuIFBhcmFtZXRlclNldC5wYXJhbSgq
dmFsdWVzLCBtYXJrcz1tYXJrcywgaWQ9aWQpCiAKIAotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFy
c2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAg
IGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKICAgICBncm91cC5fYWRkb3B0aW9u
KAogICAgICAgICAiLWsiLApAQCAtNjQsOSArODMsMTEgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24o
cGFyc2VyKToKICAgICAgICAgIm90aGVyJyBtYXRjaGVzIGFsbCB0ZXN0IGZ1bmN0aW9ucyBhbmQg
Y2xhc3NlcyB3aG9zZSBuYW1lICIKICAgICAgICAgImNvbnRhaW5zICd0ZXN0X21ldGhvZCcgb3Ig
J3Rlc3Rfb3RoZXInLCB3aGlsZSAtayAnbm90IHRlc3RfbWV0aG9kJyAiCiAgICAgICAgICJtYXRj
aGVzIHRob3NlIHRoYXQgZG9uJ3QgY29udGFpbiAndGVzdF9tZXRob2QnIGluIHRoZWlyIG5hbWVz
LiAiCisgICAgICAgICItayAnbm90IHRlc3RfbWV0aG9kIGFuZCBub3QgdGVzdF9vdGhlcicgd2ls
bCBlbGltaW5hdGUgdGhlIG1hdGNoZXMuICIKICAgICAgICAgIkFkZGl0aW9uYWxseSBrZXl3b3Jk
cyBhcmUgbWF0Y2hlZCB0byBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgIgogICAgICAgICAiY29udGFp
bmluZyBleHRyYSBuYW1lcyBpbiB0aGVpciAnZXh0cmFfa2V5d29yZF9tYXRjaGVzJyBzZXQsICIK
LSAgICAgICAgImFzIHdlbGwgYXMgZnVuY3Rpb25zIHdoaWNoIGhhdmUgbmFtZXMgYXNzaWduZWQg
ZGlyZWN0bHkgdG8gdGhlbS4iLAorICAgICAgICAiYXMgd2VsbCBhcyBmdW5jdGlvbnMgd2hpY2gg
aGF2ZSBuYW1lcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVtLiAiCisgICAgICAgICJUaGUgbWF0
Y2hpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZS4iLAogICAgICkKIAogICAgIGdyb3VwLl9hZGRvcHRp
b24oCkBAIC03NSw4ICs5Niw4IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAg
ICAgIGRlc3Q9Im1hcmtleHByIiwKICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgbWV0YXZh
cj0iTUFSS0VYUFIiLAotICAgICAgICBoZWxwPSJvbmx5IHJ1biB0ZXN0cyBtYXRjaGluZyBnaXZl
biBtYXJrIGV4cHJlc3Npb24uICAiCi0gICAgICAgICJleGFtcGxlOiAtbSAnbWFyazEgYW5kIG5v
dCBtYXJrMicuIiwKKyAgICAgICAgaGVscD0ib25seSBydW4gdGVzdHMgbWF0Y2hpbmcgZ2l2ZW4g
bWFyayBleHByZXNzaW9uLlxuIgorICAgICAgICAiRm9yIGV4YW1wbGU6IC1tICdtYXJrMSBhbmQg
bm90IG1hcmsyJy4iLAogICAgICkKIAogICAgIGdyb3VwLmFkZG9wdGlvbigKQEAgLTg5LDcgKzEx
MCw4IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgcGFyc2VyLmFkZGluaShF
TVBUWV9QQVJBTUVURVJTRVRfT1BUSU9OLCAiZGVmYXVsdCBtYXJrZXIgZm9yIGVtcHR5IHBhcmFt
ZXRlcnNldHMiKQogCiAKLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6CitAaG9va2lt
cGwodHJ5Zmlyc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZzogQ29uZmln
KSAtPiBPcHRpb25hbFtVbmlvbltpbnQsIEV4aXRDb2RlXV06CiAgICAgaW1wb3J0IF9weXRlc3Qu
Y29uZmlnCiAKICAgICBpZiBjb25maWcub3B0aW9uLm1hcmtlcnM6CkBAIC0xMDUsMjMgKzEyNyw4
NyBAQCBkZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgogICAgICAgICBjb25maWcuX2Vu
c3VyZV91bmNvbmZpZ3VyZSgpCiAgICAgICAgIHJldHVybiAwCiAKKyAgICByZXR1cm4gTm9uZQor
CisKK0BhdHRyLnMoc2xvdHM9VHJ1ZSkKK2NsYXNzIEtleXdvcmRNYXRjaGVyOgorICAgICIiIkEg
bWF0Y2hlciBmb3Iga2V5d29yZHMuCisKKyAgICBHaXZlbiBhIGxpc3Qgb2YgbmFtZXMsIG1hdGNo
ZXMgYW55IHN1YnN0cmluZyBvZiBvbmUgb2YgdGhlc2UgbmFtZXMuIFRoZQorICAgIHN0cmluZyBp
bmNsdXNpb24gY2hlY2sgaXMgY2FzZS1pbnNlbnNpdGl2ZS4KKworICAgIFdpbGwgbWF0Y2ggb24g
dGhlIG5hbWUgb2YgY29saXRlbSwgaW5jbHVkaW5nIHRoZSBuYW1lcyBvZiBpdHMgcGFyZW50cy4K
KyAgICBPbmx5IG1hdGNoZXMgbmFtZXMgb2YgaXRlbXMgd2hpY2ggYXJlIGVpdGhlciBhIDpjbGFz
czpgQ2xhc3NgIG9yIGEKKyAgICA6Y2xhc3M6YEZ1bmN0aW9uYC4KKworICAgIEFkZGl0aW9uYWxs
eSwgbWF0Y2hlcyBvbiBuYW1lcyBpbiB0aGUgJ2V4dHJhX2tleXdvcmRfbWF0Y2hlcycgc2V0IG9m
CisgICAgYW55IGl0ZW0sIGFzIHdlbGwgYXMgbmFtZXMgZGlyZWN0bHkgYXNzaWduZWQgdG8gdGVz
dCBmdW5jdGlvbnMuCisgICAgIiIiCisKKyAgICBfbmFtZXMgPSBhdHRyLmliKHR5cGU9QWJzdHJh
Y3RTZXRbc3RyXSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2l0ZW0oY2xzLCBp
dGVtOiAiSXRlbSIpIC0+ICJLZXl3b3JkTWF0Y2hlciI6CisgICAgICAgIG1hcHBlZF9uYW1lcyA9
IHNldCgpCisKKyAgICAgICAgIyBBZGQgdGhlIG5hbWVzIG9mIHRoZSBjdXJyZW50IGl0ZW0gYW5k
IGFueSBwYXJlbnQgaXRlbXMuCisgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBmb3Ig
bm9kZSBpbiBpdGVtLmxpc3RjaGFpbigpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
bm9kZSwgKHB5dGVzdC5JbnN0YW5jZSwgcHl0ZXN0LlNlc3Npb24pKToKKyAgICAgICAgICAgICAg
ICBtYXBwZWRfbmFtZXMuYWRkKG5vZGUubmFtZSkKKworICAgICAgICAjIEFkZCB0aGUgbmFtZXMg
YWRkZWQgYXMgZXh0cmEga2V5d29yZHMgdG8gY3VycmVudCBvciBwYXJlbnQgaXRlbXMuCisgICAg
ICAgIG1hcHBlZF9uYW1lcy51cGRhdGUoaXRlbS5saXN0ZXh0cmFrZXl3b3JkcygpKQorCisgICAg
ICAgICMgQWRkIHRoZSBuYW1lcyBhdHRhY2hlZCB0byB0aGUgY3VycmVudCBmdW5jdGlvbiB0aHJv
dWdoIGRpcmVjdCBhc3NpZ25tZW50LgorICAgICAgICBmdW5jdGlvbl9vYmogPSBnZXRhdHRyKGl0
ZW0sICJmdW5jdGlvbiIsIE5vbmUpCisgICAgICAgIGlmIGZ1bmN0aW9uX29iajoKKyAgICAgICAg
ICAgIG1hcHBlZF9uYW1lcy51cGRhdGUoZnVuY3Rpb25fb2JqLl9fZGljdF9fKQogCi1weXRlc3Rf
Y21kbGluZV9tYWluLnRyeWZpcnN0ID0gVHJ1ZQorICAgICAgICAjIEFkZCB0aGUgbWFya2VycyB0
byB0aGUga2V5d29yZHMgYXMgd2Ugbm8gbG9uZ2VyIGhhbmRsZSB0aGVtIGNvcnJlY3RseS4KKyAg
ICAgICAgbWFwcGVkX25hbWVzLnVwZGF0ZShtYXJrLm5hbWUgZm9yIG1hcmsgaW4gaXRlbS5pdGVy
X21hcmtlcnMoKSkKIAorICAgICAgICByZXR1cm4gY2xzKG1hcHBlZF9uYW1lcykKIAotZGVmIGRl
c2VsZWN0X2J5X2tleXdvcmQoaXRlbXMsIGNvbmZpZyk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYs
IHN1Ym5hbWU6IHN0cikgLT4gYm9vbDoKKyAgICAgICAgc3VibmFtZSA9IHN1Ym5hbWUubG93ZXIo
KQorICAgICAgICBuYW1lcyA9IChuYW1lLmxvd2VyKCkgZm9yIG5hbWUgaW4gc2VsZi5fbmFtZXMp
CisKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICBpZiBzdWJuYW1lIGlu
IG5hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKworZGVmIGRlc2VsZWN0X2J5X2tleXdvcmQoaXRlbXM6ICJMaXN0W0l0ZW1dIiwgY29uZmln
OiBDb25maWcpIC0+IE5vbmU6CiAgICAga2V5d29yZGV4cHIgPSBjb25maWcub3B0aW9uLmtleXdv
cmQubHN0cmlwKCkKKyAgICBpZiBub3Qga2V5d29yZGV4cHI6CisgICAgICAgIHJldHVybgorCiAg
ICAgaWYga2V5d29yZGV4cHIuc3RhcnRzd2l0aCgiLSIpOgorICAgICAgICAjIFRvIGJlIHJlbW92
ZWQgaW4gcHl0ZXN0IDcuMC4wLgorICAgICAgICB3YXJuaW5ncy53YXJuKE1JTlVTX0tfREFTSCwg
c3RhY2tsZXZlbD0yKQogICAgICAgICBrZXl3b3JkZXhwciA9ICJub3QgIiArIGtleXdvcmRleHBy
WzE6XQogICAgIHNlbGVjdHVudGlsID0gRmFsc2UKICAgICBpZiBrZXl3b3JkZXhwclstMTpdID09
ICI6IjoKKyAgICAgICAgIyBUbyBiZSByZW1vdmVkIGluIHB5dGVzdCA3LjAuMC4KKyAgICAgICAg
d2FybmluZ3Mud2FybihNSU5VU19LX0NPTE9OLCBzdGFja2xldmVsPTIpCiAgICAgICAgIHNlbGVj
dHVudGlsID0gVHJ1ZQogICAgICAgICBrZXl3b3JkZXhwciA9IGtleXdvcmRleHByWzotMV0KIAor
ICAgIHRyeToKKyAgICAgICAgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb24uY29tcGlsZShrZXl3b3Jk
ZXhwcikKKyAgICBleGNlcHQgUGFyc2VFcnJvciBhcyBlOgorICAgICAgICByYWlzZSBVc2FnZUVy
cm9yKAorICAgICAgICAgICAgIldyb25nIGV4cHJlc3Npb24gcGFzc2VkIHRvICctayc6IHt9OiB7
fSIuZm9ybWF0KGtleXdvcmRleHByLCBlKQorICAgICAgICApIGZyb20gTm9uZQorCiAgICAgcmVt
YWluaW5nID0gW10KICAgICBkZXNlbGVjdGVkID0gW10KICAgICBmb3IgY29saXRlbSBpbiBpdGVt
czoKLSAgICAgICAgaWYga2V5d29yZGV4cHIgYW5kIG5vdCBtYXRjaGtleXdvcmQoY29saXRlbSwg
a2V5d29yZGV4cHIpOgorICAgICAgICBpZiBrZXl3b3JkZXhwciBhbmQgbm90IGV4cHJlc3Npb24u
ZXZhbHVhdGUoS2V5d29yZE1hdGNoZXIuZnJvbV9pdGVtKGNvbGl0ZW0pKToKICAgICAgICAgICAg
IGRlc2VsZWN0ZWQuYXBwZW5kKGNvbGl0ZW0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBp
ZiBzZWxlY3R1bnRpbDoKQEAgLTEzMywxNSArMjE5LDQwIEBAIGRlZiBkZXNlbGVjdF9ieV9rZXl3
b3JkKGl0ZW1zLCBjb25maWcpOgogICAgICAgICBpdGVtc1s6XSA9IHJlbWFpbmluZwogCiAKLWRl
ZiBkZXNlbGVjdF9ieV9tYXJrKGl0ZW1zLCBjb25maWcpOgorQGF0dHIucyhzbG90cz1UcnVlKQor
Y2xhc3MgTWFya01hdGNoZXI6CisgICAgIiIiQSBtYXRjaGVyIGZvciBtYXJrZXJzIHdoaWNoIGFy
ZSBwcmVzZW50LgorCisgICAgVHJpZXMgdG8gbWF0Y2ggb24gYW55IG1hcmtlciBuYW1lcywgYXR0
YWNoZWQgdG8gdGhlIGdpdmVuIGNvbGl0ZW0uCisgICAgIiIiCisKKyAgICBvd25fbWFya19uYW1l
cyA9IGF0dHIuaWIoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21faXRlbShjbHMs
IGl0ZW0pIC0+ICJNYXJrTWF0Y2hlciI6CisgICAgICAgIG1hcmtfbmFtZXMgPSB7bWFyay5uYW1l
IGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJrZXJzKCl9CisgICAgICAgIHJldHVybiBjbHMobWFy
a19uYW1lcykKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBuYW1lOiBzdHIpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBuYW1lIGluIHNlbGYub3duX21hcmtfbmFtZXMKKworCitkZWYgZGVzZWxl
Y3RfYnlfbWFyayhpdGVtczogIkxpc3RbSXRlbV0iLCBjb25maWc6IENvbmZpZykgLT4gTm9uZToK
ICAgICBtYXRjaGV4cHIgPSBjb25maWcub3B0aW9uLm1hcmtleHByCiAgICAgaWYgbm90IG1hdGNo
ZXhwcjoKICAgICAgICAgcmV0dXJuCiAKKyAgICB0cnk6CisgICAgICAgIGV4cHJlc3Npb24gPSBF
eHByZXNzaW9uLmNvbXBpbGUobWF0Y2hleHByKQorICAgIGV4Y2VwdCBQYXJzZUVycm9yIGFzIGU6
CisgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoCisgICAgICAgICAgICAiV3JvbmcgZXhwcmVzc2lv
biBwYXNzZWQgdG8gJy1tJzoge306IHt9Ii5mb3JtYXQobWF0Y2hleHByLCBlKQorICAgICAgICAp
IGZyb20gTm9uZQorCiAgICAgcmVtYWluaW5nID0gW10KICAgICBkZXNlbGVjdGVkID0gW10KICAg
ICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgaWYgbWF0Y2htYXJrKGl0ZW0sIG1hdGNoZXhw
cik6CisgICAgICAgIGlmIGV4cHJlc3Npb24uZXZhbHVhdGUoTWFya01hdGNoZXIuZnJvbV9pdGVt
KGl0ZW0pKToKICAgICAgICAgICAgIHJlbWFpbmluZy5hcHBlbmQoaXRlbSkKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGRlc2VsZWN0ZWQuYXBwZW5kKGl0ZW0pCkBAIC0xNTEsMjQgKzI2Miwy
MyBAQCBkZWYgZGVzZWxlY3RfYnlfbWFyayhpdGVtcywgY29uZmlnKToKICAgICAgICAgaXRlbXNb
Ol0gPSByZW1haW5pbmcKIAogCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoaXRl
bXMsIGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoaXRlbXM6ICJM
aXN0W0l0ZW1dIiwgY29uZmlnOiBDb25maWcpIC0+IE5vbmU6CiAgICAgZGVzZWxlY3RfYnlfa2V5
d29yZChpdGVtcywgY29uZmlnKQogICAgIGRlc2VsZWN0X2J5X21hcmsoaXRlbXMsIGNvbmZpZykK
IAogCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGNvbmZpZy5fb2xkX21hcmtf
Y29uZmlnID0gTUFSS19HRU4uX2NvbmZpZwotICAgIGlmIGNvbmZpZy5vcHRpb24uc3RyaWN0Ogot
ICAgICAgICBNQVJLX0dFTi5fY29uZmlnID0gY29uZmlnCitkZWYgcHl0ZXN0X2NvbmZpZ3VyZShj
b25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBjb25maWcuX3N0b3JlW29sZF9tYXJrX2NvbmZp
Z19rZXldID0gTUFSS19HRU4uX2NvbmZpZworICAgIE1BUktfR0VOLl9jb25maWcgPSBjb25maWcK
IAogICAgIGVtcHR5X3BhcmFtZXRlcnNldCA9IGNvbmZpZy5nZXRpbmkoRU1QVFlfUEFSQU1FVEVS
U0VUX09QVElPTikKIAotICAgIGlmIGVtcHR5X3BhcmFtZXRlcnNldCBub3QgaW4gKCJza2lwIiwg
InhmYWlsIiwgTm9uZSwgIiIpOgorICAgIGlmIGVtcHR5X3BhcmFtZXRlcnNldCBub3QgaW4gKCJz
a2lwIiwgInhmYWlsIiwgImZhaWxfYXRfY29sbGVjdCIsIE5vbmUsICIiKToKICAgICAgICAgcmFp
c2UgVXNhZ2VFcnJvcigKLSAgICAgICAgICAgICJ7IXN9IG11c3QgYmUgb25lIG9mIHNraXAgYW5k
IHhmYWlsLCIKKyAgICAgICAgICAgICJ7IXN9IG11c3QgYmUgb25lIG9mIHNraXAsIHhmYWlsIG9y
IGZhaWxfYXRfY29sbGVjdCIKICAgICAgICAgICAgICIgYnV0IGl0IGlzIHshcn0iLmZvcm1hdChF
TVBUWV9QQVJBTUVURVJTRVRfT1BUSU9OLCBlbXB0eV9wYXJhbWV0ZXJzZXQpCiAgICAgICAgICkK
IAogCi1kZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgTUFSS19HRU4uX2NvbmZp
ZyA9IGdldGF0dHIoY29uZmlnLCAiX29sZF9tYXJrX2NvbmZpZyIsIE5vbmUpCitkZWYgcHl0ZXN0
X3VuY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgorICAgIE1BUktfR0VOLl9jb25m
aWcgPSBjb25maWcuX3N0b3JlLmdldChvbGRfbWFya19jb25maWdfa2V5LCBOb25lKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9ldmFsdWF0ZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L21hcmsvZXZhbHVhdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEzZDExZWUwZjgxYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L21hcmsvZXZhbHVhdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAot
aW1wb3J0IG9zCi1pbXBvcnQgc2l4Ci1pbXBvcnQgc3lzCi1pbXBvcnQgcGxhdGZvcm0KLWltcG9y
dCB0cmFjZWJhY2sKLQotZnJvbSAuLm91dGNvbWVzIGltcG9ydCBmYWlsLCBURVNUX09VVENPTUUK
LQotCi1kZWYgY2FjaGVkX2V2YWwoY29uZmlnLCBleHByLCBkKToKLSAgICBpZiBub3QgaGFzYXR0
cihjb25maWcsICJfZXZhbGNhY2hlIik6Ci0gICAgICAgIGNvbmZpZy5fZXZhbGNhY2hlID0ge30K
LSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBjb25maWcuX2V2YWxjYWNoZVtleHByXQotICAgIGV4
Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLQotICAgICAgICBl
eHByY29kZSA9IF9weXRlc3QuX2NvZGUuY29tcGlsZShleHByLCBtb2RlPSJldmFsIikKLSAgICAg
ICAgY29uZmlnLl9ldmFsY2FjaGVbZXhwcl0gPSB4ID0gZXZhbChleHByY29kZSwgZCkKLSAgICAg
ICAgcmV0dXJuIHgKLQotCi1jbGFzcyBNYXJrRXZhbHVhdG9yKG9iamVjdCk6Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgaXRlbSwgbmFtZSk6Ci0gICAgICAgIHNlbGYuaXRlbSA9IGl0ZW0KLSAg
ICAgICAgc2VsZi5fbWFya3MgPSBOb25lCi0gICAgICAgIHNlbGYuX21hcmsgPSBOb25lCi0gICAg
ICAgIHNlbGYuX21hcmtfbmFtZSA9IG5hbWUKLQotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAg
ICAgICAgIyBkb250IGNhY2hlIGhlcmUgdG8gcHJldmVudCBzdGFsZW5lc3MKLSAgICAgICAgcmV0
dXJuIGJvb2woc2VsZi5fZ2V0X21hcmtzKCkpCi0KLSAgICBfX25vbnplcm9fXyA9IF9fYm9vbF9f
Ci0KLSAgICBkZWYgd2FzdmFsaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3QgaGFzYXR0cihz
ZWxmLCAiZXhjIikKLQotICAgIGRlZiBfZ2V0X21hcmtzKHNlbGYpOgotICAgICAgICByZXR1cm4g
bGlzdChzZWxmLml0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9c2VsZi5fbWFya19uYW1lKSkKLQotICAg
IGRlZiBpbnZhbGlkcmFpc2Uoc2VsZiwgZXhjKToKLSAgICAgICAgcmFpc2VzID0gc2VsZi5nZXQo
InJhaXNlcyIpCi0gICAgICAgIGlmIG5vdCByYWlzZXM6Ci0gICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKGV4YywgcmFpc2VzKQotCi0gICAgZGVmIGlzdHJ1
ZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lzdHJ1ZSgp
Ci0gICAgICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgICAgICBzZWxmLmV4YyA9IHN5
cy5leGNfaW5mbygpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXhjWzFdLCBTeW50
YXhFcnJvcik6Ci0gICAgICAgICAgICAgICAgbXNnID0gWyIgIiAqIChzZWxmLmV4Y1sxXS5vZmZz
ZXQgKyA0KSArICJeIl0KLSAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKCJTeW50YXhFcnJvcjog
aW52YWxpZCBzeW50YXgiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtc2cg
PSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCpzZWxmLmV4Y1s6Ml0pCi0gICAgICAg
ICAgICBmYWlsKAotICAgICAgICAgICAgICAgICJFcnJvciBldmFsdWF0aW5nICVyIGV4cHJlc3Np
b25cbiIKLSAgICAgICAgICAgICAgICAiICAgICVzXG4iCi0gICAgICAgICAgICAgICAgIiVzIiAl
IChzZWxmLl9tYXJrX25hbWUsIHNlbGYuZXhwciwgIlxuIi5qb2luKG1zZykpLAotICAgICAgICAg
ICAgICAgIHB5dHJhY2U9RmFsc2UsCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgX2dldGdsb2Jh
bHMoc2VsZik6Ci0gICAgICAgIGQgPSB7Im9zIjogb3MsICJzeXMiOiBzeXMsICJwbGF0Zm9ybSI6
IHBsYXRmb3JtLCAiY29uZmlnIjogc2VsZi5pdGVtLmNvbmZpZ30KLSAgICAgICAgaWYgaGFzYXR0
cihzZWxmLml0ZW0sICJvYmoiKToKLSAgICAgICAgICAgIGQudXBkYXRlKHNlbGYuaXRlbS5vYmou
X19nbG9iYWxzX18pCi0gICAgICAgIHJldHVybiBkCi0KLSAgICBkZWYgX2lzdHJ1ZShzZWxmKToK
LSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAicmVzdWx0Iik6Ci0gICAgICAgICAgICByZXR1cm4g
c2VsZi5yZXN1bHQKLSAgICAgICAgc2VsZi5fbWFya3MgPSBzZWxmLl9nZXRfbWFya3MoKQotCi0g
ICAgICAgIGlmIHNlbGYuX21hcmtzOgotICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZQot
ICAgICAgICAgICAgZm9yIG1hcmsgaW4gc2VsZi5fbWFya3M6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fbWFyayA9IG1hcmsKLSAgICAgICAgICAgICAgICBpZiAiY29uZGl0aW9uIiBpbiBtYXJrLmt3
YXJnczoKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IChtYXJrLmt3YXJnc1siY29uZGl0aW9u
Il0sKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBt
YXJrLmFyZ3MKLQotICAgICAgICAgICAgICAgIGZvciBleHByIGluIGFyZ3M6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuZXhwciA9IGV4cHIKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZShleHByLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGQg
PSBzZWxmLl9nZXRnbG9iYWxzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNh
Y2hlZF9ldmFsKHNlbGYuaXRlbS5jb25maWcsIGV4cHIsIGQpCi0gICAgICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAicmVhc29uIiBub3QgaW4gbWFyay5r
d2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFggYmV0dGVyIGJlIGNoZWNr
ZWQgYXQgY29sbGVjdGlvbiB0aW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0g
InlvdSBuZWVkIHRvIHNwZWNpZnkgcmVhc29uPVNUUklORyAiICJ3aGVuIHVzaW5nIGJvb2xlYW5z
IGFzIGNvbmRpdGlvbnMuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwobXNnKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYm9vbChleHByKQotICAgICAgICAgICAg
ICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9
IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVhc29uID0gbWFyay5rd2FyZ3Mu
Z2V0KCJyZWFzb24iLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHByID0g
ZXhwcgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0Ci0KLSAgICAg
ICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVhc29uID0gbWFyay5rd2FyZ3MuZ2V0
KCJyZWFzb24iLCBOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQK
LSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGF0dHIsIGRlZmF1bHQ9
Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYuX21hcmsgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYXJrLmt3YXJncy5nZXQoYXR0ciwgZGVm
YXVsdCkKLQotICAgIGRlZiBnZXRleHBsYW5hdGlvbihzZWxmKToKLSAgICAgICAgZXhwbCA9IGdl
dGF0dHIoc2VsZiwgInJlYXNvbiIsIE5vbmUpIG9yIHNlbGYuZ2V0KCJyZWFzb24iLCBOb25lKQot
ICAgICAgICBpZiBub3QgZXhwbDoKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICJl
eHByIik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHJldHVybiAiY29uZGl0aW9uOiAiICsgc3RyKHNlbGYuZXhwcikKLSAgICAg
ICAgcmV0dXJuIGV4cGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsv
ZXhwcmVzc2lvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvZXhwcmVzc2lvbi5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY1NzAwMTA5NzU3MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvZXhwcmVzc2lv
bi5weQpAQCAtMCwwICsxLDIyNCBAQAorciIiIkV2YWx1YXRlIG1hdGNoIGV4cHJlc3Npb25zLCBh
cyB1c2VkIGJ5IGAta2AgYW5kIGAtbWAuCisKK1RoZSBncmFtbWFyIGlzOgorCitleHByZXNzaW9u
OiBleHByPyBFT0YKK2V4cHI6ICAgICAgIGFuZF9leHByICgnb3InIGFuZF9leHByKSoKK2FuZF9l
eHByOiAgIG5vdF9leHByICgnYW5kJyBub3RfZXhwcikqCitub3RfZXhwcjogICAnbm90JyBub3Rf
ZXhwciB8ICcoJyBleHByICcpJyB8IGlkZW50CitpZGVudDogICAgICAoXHd8OnxcK3wtfFwufFxb
fFxdKSsKKworVGhlIHNlbWFudGljcyBhcmU6CisKKy0gRW1wdHkgZXhwcmVzc2lvbiBldmFsdWF0
ZXMgdG8gRmFsc2UuCistIGlkZW50IGV2YWx1YXRlcyB0byBUcnVlIG9mIEZhbHNlIGFjY29yZGlu
ZyB0byBhIHByb3ZpZGVkIG1hdGNoZXIgZnVuY3Rpb24uCistIG9yL2FuZC9ub3QgZXZhbHVhdGUg
YWNjb3JkaW5nIHRvIHRoZSB1c3VhbCBib29sZWFuIHNlbWFudGljcy4KKyIiIgoraW1wb3J0IGFz
dAoraW1wb3J0IGVudW0KK2ltcG9ydCByZQoraW1wb3J0IHR5cGVzCitmcm9tIHR5cGluZyBpbXBv
cnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1w
b3J0IE1hcHBpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1w
b3J0IFNlcXVlbmNlCisKK2ltcG9ydCBhdHRyCisKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IFRZUEVfQ0hFQ0tJTkcKKworaWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBv
cnQgTm9SZXR1cm4KKworCitfX2FsbF9fID0gWworICAgICJFeHByZXNzaW9uIiwKKyAgICAiUGFy
c2VFcnJvciIsCitdCisKKworY2xhc3MgVG9rZW5UeXBlKGVudW0uRW51bSk6CisgICAgTFBBUkVO
ID0gImxlZnQgcGFyZW50aGVzaXMiCisgICAgUlBBUkVOID0gInJpZ2h0IHBhcmVudGhlc2lzIgor
ICAgIE9SID0gIm9yIgorICAgIEFORCA9ICJhbmQiCisgICAgTk9UID0gIm5vdCIKKyAgICBJREVO
VCA9ICJpZGVudGlmaWVyIgorICAgIEVPRiA9ICJlbmQgb2YgaW5wdXQiCisKKworQGF0dHIucyhm
cm96ZW49VHJ1ZSwgc2xvdHM9VHJ1ZSkKK2NsYXNzIFRva2VuOgorICAgIHR5cGUgPSBhdHRyLmli
KHR5cGU9VG9rZW5UeXBlKQorICAgIHZhbHVlID0gYXR0ci5pYih0eXBlPXN0cikKKyAgICBwb3Mg
PSBhdHRyLmliKHR5cGU9aW50KQorCisKK2NsYXNzIFBhcnNlRXJyb3IoRXhjZXB0aW9uKToKKyAg
ICAiIiJUaGUgZXhwcmVzc2lvbiBjb250YWlucyBpbnZhbGlkIHN5bnRheC4KKworICAgIDpwYXJh
bSBjb2x1bW46IFRoZSBjb2x1bW4gaW4gdGhlIGxpbmUgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVk
ICgxLWJhc2VkKS4KKyAgICA6cGFyYW0gbWVzc2FnZTogQSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJy
b3IuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29sdW1uOiBpbnQsIG1lc3Nh
Z2U6IHN0cikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jb2x1bW4gPSBjb2x1bW4KKyAgICAgICAg
c2VsZi5tZXNzYWdlID0gbWVzc2FnZQorCisgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgor
ICAgICAgICByZXR1cm4gImF0IGNvbHVtbiB7fToge30iLmZvcm1hdChzZWxmLmNvbHVtbiwgc2Vs
Zi5tZXNzYWdlKQorCisKK2NsYXNzIFNjYW5uZXI6CisgICAgX19zbG90c19fID0gKCJ0b2tlbnMi
LCAiY3VycmVudCIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5wdXQ6IHN0cikgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi50b2tlbnMgPSBzZWxmLmxleChpbnB1dCkKKyAgICAgICAgc2VsZi5j
dXJyZW50ID0gbmV4dChzZWxmLnRva2VucykKKworICAgIGRlZiBsZXgoc2VsZiwgaW5wdXQ6IHN0
cikgLT4gSXRlcmF0b3JbVG9rZW5dOgorICAgICAgICBwb3MgPSAwCisgICAgICAgIHdoaWxlIHBv
cyA8IGxlbihpbnB1dCk6CisgICAgICAgICAgICBpZiBpbnB1dFtwb3NdIGluICgiICIsICJcdCIp
OgorICAgICAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgICAgICBlbGlmIGlucHV0W3Bvc10g
PT0gIigiOgorICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuVHlwZS5MUEFSRU4sICIo
IiwgcG9zKQorICAgICAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgICAgICBlbGlmIGlucHV0
W3Bvc10gPT0gIikiOgorICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuVHlwZS5SUEFS
RU4sICIpIiwgcG9zKQorICAgICAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2gociIoOj9cd3w6fFwrfC18XC58XFt8
XF0pKyIsIGlucHV0W3BvczpdKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IG1hdGNoLmdyb3VwKDApCisgICAgICAgICAgICAgICAgICAgIGlm
IHZhbHVlID09ICJvciI6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihUb2tl
blR5cGUuT1IsIHZhbHVlLCBwb3MpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgdmFsdWUgPT0g
ImFuZCI6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihUb2tlblR5cGUuQU5E
LCB2YWx1ZSwgcG9zKQorICAgICAgICAgICAgICAgICAgICBlbGlmIHZhbHVlID09ICJub3QiOgor
ICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW4oVG9rZW5UeXBlLk5PVCwgdmFsdWUs
IHBvcykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHlpZWxkIFRva2VuKFRva2VuVHlwZS5JREVOVCwgdmFsdWUsIHBvcykKKyAgICAgICAgICAgICAg
ICAgICAgcG9zICs9IGxlbih2YWx1ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICByYWlzZSBQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgcG9z
ICsgMSwgJ3VuZXhwZWN0ZWQgY2hhcmFjdGVyICJ7fSInLmZvcm1hdChpbnB1dFtwb3NdKSwKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICB5aWVsZCBUb2tlbihUb2tlblR5cGUuRU9GLCAi
IiwgcG9zKQorCisgICAgZGVmIGFjY2VwdChzZWxmLCB0eXBlOiBUb2tlblR5cGUsICosIHJlamVj
dDogYm9vbCA9IEZhbHNlKSAtPiBPcHRpb25hbFtUb2tlbl06CisgICAgICAgIGlmIHNlbGYuY3Vy
cmVudC50eXBlIGlzIHR5cGU6CisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuY3VycmVudAorICAg
ICAgICAgICAgaWYgdG9rZW4udHlwZSBpcyBub3QgVG9rZW5UeXBlLkVPRjoKKyAgICAgICAgICAg
ICAgICBzZWxmLmN1cnJlbnQgPSBuZXh0KHNlbGYudG9rZW5zKQorICAgICAgICAgICAgcmV0dXJu
IHRva2VuCisgICAgICAgIGlmIHJlamVjdDoKKyAgICAgICAgICAgIHNlbGYucmVqZWN0KCh0eXBl
LCkpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVqZWN0KHNlbGYsIGV4cGVjdGVk
OiBTZXF1ZW5jZVtUb2tlblR5cGVdKSAtPiAiTm9SZXR1cm4iOgorICAgICAgICByYWlzZSBQYXJz
ZUVycm9yKAorICAgICAgICAgICAgc2VsZi5jdXJyZW50LnBvcyArIDEsCisgICAgICAgICAgICAi
ZXhwZWN0ZWQge307IGdvdCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICIgT1IgIi5qb2lu
KHR5cGUudmFsdWUgZm9yIHR5cGUgaW4gZXhwZWN0ZWQpLCBzZWxmLmN1cnJlbnQudHlwZS52YWx1
ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworCisjIFRydWUsIEZhbHNlIGFuZCBOb25l
IGFyZSBsZWdhbCBtYXRjaCBleHByZXNzaW9uIGlkZW50aWZpZXJzLAorIyBidXQgaWxsZWdhbCBh
cyBQeXRob24gaWRlbnRpZmllcnMuIFRvIGZpeCB0aGlzLCB0aGlzIHByZWZpeAorIyBpcyBhZGRl
ZCB0byBpZGVudGlmaWVycyBpbiB0aGUgY29udmVyc2lvbiB0byBQeXRob24gQVNULgorSURFTlRf
UFJFRklYID0gIiQiCisKKworZGVmIGV4cHJlc3Npb24oczogU2Nhbm5lcikgLT4gYXN0LkV4cHJl
c3Npb246CisgICAgaWYgcy5hY2NlcHQoVG9rZW5UeXBlLkVPRik6CisgICAgICAgIHJldCA9IGFz
dC5OYW1lQ29uc3RhbnQoRmFsc2UpICAjIHR5cGU6IGFzdC5leHByCisgICAgZWxzZToKKyAgICAg
ICAgcmV0ID0gZXhwcihzKQorICAgICAgICBzLmFjY2VwdChUb2tlblR5cGUuRU9GLCByZWplY3Q9
VHJ1ZSkKKyAgICByZXR1cm4gYXN0LmZpeF9taXNzaW5nX2xvY2F0aW9ucyhhc3QuRXhwcmVzc2lv
bihyZXQpKQorCisKK2RlZiBleHByKHM6IFNjYW5uZXIpIC0+IGFzdC5leHByOgorICAgIHJldCA9
IGFuZF9leHByKHMpCisgICAgd2hpbGUgcy5hY2NlcHQoVG9rZW5UeXBlLk9SKToKKyAgICAgICAg
cmhzID0gYW5kX2V4cHIocykKKyAgICAgICAgcmV0ID0gYXN0LkJvb2xPcChhc3QuT3IoKSwgW3Jl
dCwgcmhzXSkKKyAgICByZXR1cm4gcmV0CisKKworZGVmIGFuZF9leHByKHM6IFNjYW5uZXIpIC0+
IGFzdC5leHByOgorICAgIHJldCA9IG5vdF9leHByKHMpCisgICAgd2hpbGUgcy5hY2NlcHQoVG9r
ZW5UeXBlLkFORCk6CisgICAgICAgIHJocyA9IG5vdF9leHByKHMpCisgICAgICAgIHJldCA9IGFz
dC5Cb29sT3AoYXN0LkFuZCgpLCBbcmV0LCByaHNdKQorICAgIHJldHVybiByZXQKKworCitkZWYg
bm90X2V4cHIoczogU2Nhbm5lcikgLT4gYXN0LmV4cHI6CisgICAgaWYgcy5hY2NlcHQoVG9rZW5U
eXBlLk5PVCk6CisgICAgICAgIHJldHVybiBhc3QuVW5hcnlPcChhc3QuTm90KCksIG5vdF9leHBy
KHMpKQorICAgIGlmIHMuYWNjZXB0KFRva2VuVHlwZS5MUEFSRU4pOgorICAgICAgICByZXQgPSBl
eHByKHMpCisgICAgICAgIHMuYWNjZXB0KFRva2VuVHlwZS5SUEFSRU4sIHJlamVjdD1UcnVlKQor
ICAgICAgICByZXR1cm4gcmV0CisgICAgaWRlbnQgPSBzLmFjY2VwdChUb2tlblR5cGUuSURFTlQp
CisgICAgaWYgaWRlbnQ6CisgICAgICAgIHJldHVybiBhc3QuTmFtZShJREVOVF9QUkVGSVggKyBp
ZGVudC52YWx1ZSwgYXN0LkxvYWQoKSkKKyAgICBzLnJlamVjdCgoVG9rZW5UeXBlLk5PVCwgVG9r
ZW5UeXBlLkxQQVJFTiwgVG9rZW5UeXBlLklERU5UKSkKKworCitjbGFzcyBNYXRjaGVyQWRhcHRl
cihNYXBwaW5nW3N0ciwgYm9vbF0pOgorICAgICIiIkFkYXB0cyBhIG1hdGNoZXIgZnVuY3Rpb24g
dG8gYSBsb2NhbHMgbWFwcGluZyBhcyByZXF1aXJlZCBieSBldmFsKCkuIiIiCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgbWF0Y2hlcjogQ2FsbGFibGVbW3N0cl0sIGJvb2xdKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLm1hdGNoZXIgPSBtYXRjaGVyCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2Vs
Ziwga2V5OiBzdHIpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLm1hdGNoZXIoa2V5W2xl
bihJREVOVF9QUkVGSVgpIDpdKQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9y
W3N0cl06CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgZGVmIF9f
bGVuX18oc2VsZikgLT4gaW50OgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkK
KworCitjbGFzcyBFeHByZXNzaW9uOgorICAgICIiIkEgY29tcGlsZWQgbWF0Y2ggZXhwcmVzc2lv
biBhcyB1c2VkIGJ5IC1rIGFuZCAtbS4KKworICAgIFRoZSBleHByZXNzaW9uIGNhbiBiZSBldmF1
bGF0ZWQgYWdhaW5zdCBkaWZmZXJlbnQgbWF0Y2hlcnMuCisgICAgIiIiCisKKyAgICBfX3Nsb3Rz
X18gPSAoImNvZGUiLCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlOiB0eXBlcy5Db2Rl
VHlwZSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jb2RlID0gY29kZQorCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIGNvbXBpbGUoc2VsZiwgaW5wdXQ6IHN0cikgLT4gIkV4cHJlc3Npb24iOgor
ICAgICAgICAiIiJDb21waWxlIGEgbWF0Y2ggZXhwcmVzc2lvbi4KKworICAgICAgICA6cGFyYW0g
aW5wdXQ6IFRoZSBpbnB1dCBleHByZXNzaW9uIC0gb25lIGxpbmUuCisgICAgICAgICIiIgorICAg
ICAgICBhc3RleHByID0gZXhwcmVzc2lvbihTY2FubmVyKGlucHV0KSkKKyAgICAgICAgY29kZSA9
IGNvbXBpbGUoCisgICAgICAgICAgICBhc3RleHByLCBmaWxlbmFtZT0iPHB5dGVzdCBtYXRjaCBl
eHByZXNzaW9uPiIsIG1vZGU9ImV2YWwiLAorICAgICAgICApICAjIHR5cGU6IHR5cGVzLkNvZGVU
eXBlCisgICAgICAgIHJldHVybiBFeHByZXNzaW9uKGNvZGUpCisKKyAgICBkZWYgZXZhbHVhdGUo
c2VsZiwgbWF0Y2hlcjogQ2FsbGFibGVbW3N0cl0sIGJvb2xdKSAtPiBib29sOgorICAgICAgICAi
IiJFdmFsdWF0ZSB0aGUgbWF0Y2ggZXhwcmVzc2lvbi4KKworICAgICAgICA6cGFyYW0gbWF0Y2hl
cjoKKyAgICAgICAgICAgIEdpdmVuIGFuIGlkZW50aWZpZXIsIHNob3VsZCByZXR1cm4gd2hldGhl
ciBpdCBtYXRjaGVzIG9yIG5vdC4KKyAgICAgICAgICAgIFNob3VsZCBiZSBwcmVwYXJlZCB0byBo
YW5kbGUgYXJiaXRyYXJ5IHN0cmluZ3MgYXMgaW5wdXQuCisKKyAgICAgICAgOnJldHVybnM6IFdo
ZXRoZXIgdGhlIGV4cHJlc3Npb24gbWF0Y2hlcyBvciBub3QuCisgICAgICAgICIiIgorICAgICAg
ICByZXQgPSBldmFsKAorICAgICAgICAgICAgc2VsZi5jb2RlLCB7Il9fYnVpbHRpbnNfXyI6IHt9
fSwgTWF0Y2hlckFkYXB0ZXIobWF0Y2hlcikKKyAgICAgICAgKSAgIyB0eXBlOiBib29sCisgICAg
ICAgIHJldHVybiByZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsv
bGVnYWN5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9sZWdhY3kucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMDE2YTAzNTViNy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvbGVnYWN5LnB5CisrKyAvZGV2L251bGwKQEAg
LTEsOTcgKzAsMCBAQAotIiIiCi10aGlzIGlzIGEgcGxhY2Ugd2hlcmUgd2UgcHV0IGRhdGFzdHJ1
Y3R1cmVzIHVzZWQgYnkgbGVnYWN5IGFwaXMKLXdlIGhvcGUgb3QgcmVtb3ZlCi0iIiIKLWltcG9y
dCBhdHRyCi1pbXBvcnQga2V5d29yZAotCi1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBVc2Fn
ZUVycm9yCi0KLQotQGF0dHIucwotY2xhc3MgTWFya01hcHBpbmcob2JqZWN0KToKLSAgICAiIiJQ
cm92aWRlcyBhIGxvY2FsIG1hcHBpbmcgZm9yIG1hcmtlcnMgd2hlcmUgaXRlbSBhY2Nlc3MKLSAg
ICByZXNvbHZlcyB0byBUcnVlIGlmIHRoZSBtYXJrZXIgaXMgcHJlc2VudC4gIiIiCi0KLSAgICBv
d25fbWFya19uYW1lcyA9IGF0dHIuaWIoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZy
b21faXRlbShjbHMsIGl0ZW0pOgotICAgICAgICBtYXJrX25hbWVzID0ge21hcmsubmFtZSBmb3Ig
bWFyayBpbiBpdGVtLml0ZXJfbWFya2VycygpfQotICAgICAgICByZXR1cm4gY2xzKG1hcmtfbmFt
ZXMpCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBu
YW1lIGluIHNlbGYub3duX21hcmtfbmFtZXMKLQotCi1jbGFzcyBLZXl3b3JkTWFwcGluZyhvYmpl
Y3QpOgotICAgICIiIlByb3ZpZGVzIGEgbG9jYWwgbWFwcGluZyBmb3Iga2V5d29yZHMuCi0gICAg
R2l2ZW4gYSBsaXN0IG9mIG5hbWVzLCBtYXAgYW55IHN1YnN0cmluZyBvZiBvbmUgb2YgdGhlc2Ug
bmFtZXMgdG8gVHJ1ZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lcyk6
Ci0gICAgICAgIHNlbGYuX25hbWVzID0gbmFtZXMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBmcm9tX2l0ZW0oY2xzLCBpdGVtKToKLSAgICAgICAgbWFwcGVkX25hbWVzID0gc2V0KCkKLQot
ICAgICAgICAjIEFkZCB0aGUgbmFtZXMgb2YgdGhlIGN1cnJlbnQgaXRlbSBhbmQgYW55IHBhcmVu
dCBpdGVtcwotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRl
bS5saXN0Y2hhaW4oKToKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0ZW0sIHB5dGVz
dC5JbnN0YW5jZSk6Ci0gICAgICAgICAgICAgICAgbWFwcGVkX25hbWVzLmFkZChpdGVtLm5hbWUp
Ci0KLSAgICAgICAgIyBBZGQgdGhlIG5hbWVzIGFkZGVkIGFzIGV4dHJhIGtleXdvcmRzIHRvIGN1
cnJlbnQgb3IgcGFyZW50IGl0ZW1zCi0gICAgICAgIGZvciBuYW1lIGluIGl0ZW0ubGlzdGV4dHJh
a2V5d29yZHMoKToKLSAgICAgICAgICAgIG1hcHBlZF9uYW1lcy5hZGQobmFtZSkKLQotICAgICAg
ICAjIEFkZCB0aGUgbmFtZXMgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnQgZnVuY3Rpb24gdGhyb3Vn
aCBkaXJlY3QgYXNzaWdubWVudAotICAgICAgICBpZiBoYXNhdHRyKGl0ZW0sICJmdW5jdGlvbiIp
OgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gaXRlbS5mdW5jdGlvbi5fX2RpY3RfXzoKLSAgICAg
ICAgICAgICAgICBtYXBwZWRfbmFtZXMuYWRkKG5hbWUpCi0KLSAgICAgICAgcmV0dXJuIGNscyht
YXBwZWRfbmFtZXMpCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgc3VibmFtZSk6Ci0gICAg
ICAgIGZvciBuYW1lIGluIHNlbGYuX25hbWVzOgotICAgICAgICAgICAgaWYgc3VibmFtZSBpbiBu
YW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0KLXB5dGhvbl9rZXl3b3Jkc19hbGxvd2VkX2xpc3QgPSBbIm9yIiwgImFuZCIsICJub3QiXQot
Ci0KLWRlZiBtYXRjaG1hcmsoY29saXRlbSwgbWFya2V4cHIpOgotICAgICIiIlRyaWVzIHRvIG1h
dGNoIG9uIGFueSBtYXJrZXIgbmFtZXMsIGF0dGFjaGVkIHRvIHRoZSBnaXZlbiBjb2xpdGVtLiIi
IgotICAgIHJldHVybiBldmFsKG1hcmtleHByLCB7fSwgTWFya01hcHBpbmcuZnJvbV9pdGVtKGNv
bGl0ZW0pKQotCi0KLWRlZiBtYXRjaGtleXdvcmQoY29saXRlbSwga2V5d29yZGV4cHIpOgotICAg
ICIiIlRyaWVzIHRvIG1hdGNoIGdpdmVuIGtleXdvcmQgZXhwcmVzc2lvbiB0byBnaXZlbiBjb2xs
ZWN0b3IgaXRlbS4KLQotICAgIFdpbGwgbWF0Y2ggb24gdGhlIG5hbWUgb2YgY29saXRlbSwgaW5j
bHVkaW5nIHRoZSBuYW1lcyBvZiBpdHMgcGFyZW50cy4KLSAgICBPbmx5IG1hdGNoZXMgbmFtZXMg
b2YgaXRlbXMgd2hpY2ggYXJlIGVpdGhlciBhIDpjbGFzczpgQ2xhc3NgIG9yIGEKLSAgICA6Y2xh
c3M6YEZ1bmN0aW9uYC4KLSAgICBBZGRpdGlvbmFsbHksIG1hdGNoZXMgb24gbmFtZXMgaW4gdGhl
ICdleHRyYV9rZXl3b3JkX21hdGNoZXMnIHNldCBvZgotICAgIGFueSBpdGVtLCBhcyB3ZWxsIGFz
IG5hbWVzIGRpcmVjdGx5IGFzc2lnbmVkIHRvIHRlc3QgZnVuY3Rpb25zLgotICAgICIiIgotICAg
IG1hcHBpbmcgPSBLZXl3b3JkTWFwcGluZy5mcm9tX2l0ZW0oY29saXRlbSkKLSAgICBpZiAiICIg
bm90IGluIGtleXdvcmRleHByOgotICAgICAgICAjIHNwZWNpYWwgY2FzZSB0byBhbGxvdyBmb3Ig
c2ltcGxlICItayBwYXNzIiBhbmQgIi1rIDEuMyIKLSAgICAgICAgcmV0dXJuIG1hcHBpbmdba2V5
d29yZGV4cHJdCi0gICAgZWxpZiBrZXl3b3JkZXhwci5zdGFydHN3aXRoKCJub3QgIikgYW5kICIg
IiBub3QgaW4ga2V5d29yZGV4cHJbNDpdOgotICAgICAgICByZXR1cm4gbm90IG1hcHBpbmdba2V5
d29yZGV4cHJbNDpdXQotICAgIGZvciBrd2QgaW4ga2V5d29yZGV4cHIuc3BsaXQoKToKLSAgICAg
ICAgaWYga2V5d29yZC5pc2tleXdvcmQoa3dkKSBhbmQga3dkIG5vdCBpbiBweXRob25fa2V5d29y
ZHNfYWxsb3dlZF9saXN0OgotICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigKLSAgICAgICAg
ICAgICAgICAiUHl0aG9uIGtleXdvcmQgJ3t9JyBub3QgYWNjZXB0ZWQgaW4gZXhwcmVzc2lvbnMg
cGFzc2VkIHRvICctayciLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAga3dkCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGV2YWwo
a2V5d29yZGV4cHIsIHt9LCBtYXBwaW5nKQotICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoKLSAgICAg
ICAgcmFpc2UgVXNhZ2VFcnJvcigiV3JvbmcgZXhwcmVzc2lvbiBwYXNzZWQgdG8gJy1rJzoge30i
LmZvcm1hdChrZXl3b3JkZXhwcikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9tYXJrL3N0cnVjdHVyZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tYXJrL3N0cnVj
dHVyZXMucHkKaW5kZXggMWEyYmQ3M2RlNTY4Li4zOWEyMzIxYjNmZjkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvc3RydWN0dXJlcy5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvX3B5dGVzdC9tYXJrL3N0cnVjdHVyZXMucHkKQEAgLTEsMTEzICsxLDE5OCBAQAoraW1w
b3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IGluc3BlY3QKK2ltcG9ydCB0eXBpbmcKIGltcG9y
dCB3YXJuaW5ncwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBvcGVy
YXRvciBpbXBvcnQgYXR0cmdldHRlcgorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBp
bmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlw
aW5nIGltcG9ydCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5n
IGltcG9ydCBNYXBwaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgTmFtZWRUdXBsZQorZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgU2VxdWVuY2UKK2Zyb20gdHlw
aW5nIGltcG9ydCBTZXQKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1w
b3J0IFR5cGVWYXIKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogCiBpbXBvcnQgYXR0cgogCi1m
cm9tIC4uZGVwcmVjYXRlZCBpbXBvcnQgTUFSS19QQVJBTUVURVJTRVRfVU5QQUNLSU5HLCBNQVJL
X0lORk9fQVRUUklCVVRFCi1mcm9tIC4uY29tcGF0IGltcG9ydCBOT1RTRVQsIGdldGZzbGluZW5v
LCBNYXBwaW5nTWl4aW4KLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBtYXAsIHJlZHVjZQorZnJvbSAu
Ll9jb2RlIGltcG9ydCBnZXRmc2xpbmVubworZnJvbSAuLmNvbXBhdCBpbXBvcnQgYXNjaWlfZXNj
YXBlZAorZnJvbSAuLmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gLi5jb21wYXQgaW1wb3J0IE5P
VFNFVAorZnJvbSAuLmNvbXBhdCBpbXBvcnQgTm90U2V0VHlwZQorZnJvbSAuLmNvbXBhdCBpbXBv
cnQgb3ZlcmxvYWQKK2Zyb20gLi5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBm
YWlsCitmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0VW5rbm93bk1hcmtX
YXJuaW5nCiAKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUK
IAotRU1QVFlfUEFSQU1FVEVSU0VUX09QVElPTiA9ICJlbXB0eV9wYXJhbWV0ZXJfc2V0X21hcmsi
CisgICAgZnJvbSAuLm5vZGVzIGltcG9ydCBOb2RlCiAKIAotZGVmIGFsaWFzKG5hbWUsIHdhcm5p
bmc9Tm9uZSk6Ci0gICAgZ2V0dGVyID0gYXR0cmdldHRlcihuYW1lKQorRU1QVFlfUEFSQU1FVEVS
U0VUX09QVElPTiA9ICJlbXB0eV9wYXJhbWV0ZXJfc2V0X21hcmsiCiAKLSAgICBkZWYgd2FybmVk
KHNlbGYpOgotICAgICAgICB3YXJuaW5ncy53YXJuKHdhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAg
ICAgICAgcmV0dXJuIGdldHRlcihzZWxmKQogCi0gICAgcmV0dXJuIHByb3BlcnR5KGdldHRlciBp
ZiB3YXJuaW5nIGlzIE5vbmUgZWxzZSB3YXJuZWQsIGRvYz0iYWxpYXMgZm9yICIgKyBuYW1lKQor
ZGVmIGlzdGVzdGZ1bmMoZnVuYykgLT4gYm9vbDoKKyAgICByZXR1cm4gKAorICAgICAgICBoYXNh
dHRyKGZ1bmMsICJfX2NhbGxfXyIpCisgICAgICAgIGFuZCBnZXRhdHRyKGZ1bmMsICJfX25hbWVf
XyIsICI8bGFtYmRhPiIpICE9ICI8bGFtYmRhPiIKKyAgICApCiAKIAotZGVmIGlzdGVzdGZ1bmMo
ZnVuYyk6Ci0gICAgcmV0dXJuIGhhc2F0dHIoZnVuYywgIl9fY2FsbF9fIikgYW5kIGdldGF0dHIo
Ci0gICAgICAgIGZ1bmMsICJfX25hbWVfXyIsICI8bGFtYmRhPiIKLSAgICApICE9ICI8bGFtYmRh
PiIKK2RlZiBnZXRfZW1wdHlfcGFyYW1ldGVyc2V0X21hcmsoCisgICAgY29uZmlnOiBDb25maWcs
IGFyZ25hbWVzOiBTZXF1ZW5jZVtzdHJdLCBmdW5jCispIC0+ICJNYXJrRGVjb3JhdG9yIjoKKyAg
ICBmcm9tIC4ubm9kZXMgaW1wb3J0IENvbGxlY3RvcgogCisgICAgZnMsIGxpbmVubyA9IGdldGZz
bGluZW5vKGZ1bmMpCisgICAgcmVhc29uID0gImdvdCBlbXB0eSBwYXJhbWV0ZXIgc2V0ICVyLCBm
dW5jdGlvbiAlcyBhdCAlczolZCIgJSAoCisgICAgICAgIGFyZ25hbWVzLAorICAgICAgICBmdW5j
Ll9fbmFtZV9fLAorICAgICAgICBmcywKKyAgICAgICAgbGluZW5vLAorICAgICkKIAotZGVmIGdl
dF9lbXB0eV9wYXJhbWV0ZXJzZXRfbWFyayhjb25maWcsIGFyZ25hbWVzLCBmdW5jKToKICAgICBy
ZXF1ZXN0ZWRfbWFyayA9IGNvbmZpZy5nZXRpbmkoRU1QVFlfUEFSQU1FVEVSU0VUX09QVElPTikK
ICAgICBpZiByZXF1ZXN0ZWRfbWFyayBpbiAoIiIsIE5vbmUsICJza2lwIik6Ci0gICAgICAgIG1h
cmsgPSBNQVJLX0dFTi5za2lwCisgICAgICAgIG1hcmsgPSBNQVJLX0dFTi5za2lwKHJlYXNvbj1y
ZWFzb24pCiAgICAgZWxpZiByZXF1ZXN0ZWRfbWFyayA9PSAieGZhaWwiOgotICAgICAgICBtYXJr
ID0gTUFSS19HRU4ueGZhaWwocnVuPUZhbHNlKQorICAgICAgICBtYXJrID0gTUFSS19HRU4ueGZh
aWwocmVhc29uPXJlYXNvbiwgcnVuPUZhbHNlKQorICAgIGVsaWYgcmVxdWVzdGVkX21hcmsgPT0g
ImZhaWxfYXRfY29sbGVjdCI6CisgICAgICAgIGZfbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAg
ICAgXywgbGluZW5vID0gZ2V0ZnNsaW5lbm8oZnVuYykKKyAgICAgICAgcmFpc2UgQ29sbGVjdG9y
LkNvbGxlY3RFcnJvcigKKyAgICAgICAgICAgICJFbXB0eSBwYXJhbWV0ZXIgc2V0IGluICclcycg
YXQgbGluZSAlZCIgJSAoZl9uYW1lLCBsaW5lbm8gKyAxKQorICAgICAgICApCiAgICAgZWxzZToK
ICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IocmVxdWVzdGVkX21hcmspCi0gICAgZnMsIGxpbmVu
byA9IGdldGZzbGluZW5vKGZ1bmMpCi0gICAgcmVhc29uID0gImdvdCBlbXB0eSBwYXJhbWV0ZXIg
c2V0ICVyLCBmdW5jdGlvbiAlcyBhdCAlczolZCIgJSAoCi0gICAgICAgIGFyZ25hbWVzLCBmdW5j
Ll9fbmFtZV9fLCBmcywgbGluZW5vCi0gICAgKQotICAgIHJldHVybiBtYXJrKHJlYXNvbj1yZWFz
b24pCisgICAgcmV0dXJuIG1hcmsKIAogCi1jbGFzcyBQYXJhbWV0ZXJTZXQobmFtZWR0dXBsZSgi
UGFyYW1ldGVyU2V0IiwgInZhbHVlcywgbWFya3MsIGlkIikpOgotCitjbGFzcyBQYXJhbWV0ZXJT
ZXQoCisgICAgTmFtZWRUdXBsZSgKKyAgICAgICAgIlBhcmFtZXRlclNldCIsCisgICAgICAgIFsK
KyAgICAgICAgICAgICgidmFsdWVzIiwgU2VxdWVuY2VbVW5pb25bb2JqZWN0LCBOb3RTZXRUeXBl
XV0pLAorICAgICAgICAgICAgKCJtYXJrcyIsICJ0eXBpbmcuQ29sbGVjdGlvbltVbmlvbltNYXJr
RGVjb3JhdG9yLCBNYXJrXV0iKSwKKyAgICAgICAgICAgICgiaWQiLCBPcHRpb25hbFtzdHJdKSwK
KyAgICAgICAgXSwKKyAgICApCispOgogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwYXJhbShj
bHMsICp2YWx1ZXMsICoqa3cpOgotICAgICAgICBtYXJrcyA9IGt3LnBvcCgibWFya3MiLCAoKSkK
KyAgICBkZWYgcGFyYW0oCisgICAgICAgIGNscywKKyAgICAgICAgKnZhbHVlczogb2JqZWN0LAor
ICAgICAgICBtYXJrczogIlVuaW9uW01hcmtEZWNvcmF0b3IsIHR5cGluZy5Db2xsZWN0aW9uW1Vu
aW9uW01hcmtEZWNvcmF0b3IsIE1hcmtdXV0iID0gKCksCisgICAgICAgIGlkOiBPcHRpb25hbFtz
dHJdID0gTm9uZQorICAgICkgLT4gIlBhcmFtZXRlclNldCI6CiAgICAgICAgIGlmIGlzaW5zdGFu
Y2UobWFya3MsIE1hcmtEZWNvcmF0b3IpOgotICAgICAgICAgICAgbWFya3MgPSBtYXJrcywKKyAg
ICAgICAgICAgIG1hcmtzID0gKG1hcmtzLCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKG1hcmtzLCAodHVwbGUsIGxpc3QsIHNldCkpCi0KLSAgICAgICAgZGVm
IHBhcmFtX2V4dHJhY3RfaWQoaWQ9Tm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4gaWQKKyAgICAg
ICAgICAgICMgVE9ETyhweTM2KTogQ2hhbmdlIHRvIGNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9u
LgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWFya3MsIChjb2xsZWN0aW9ucy5hYmMu
U2VxdWVuY2UsIHNldCkpCiAKLSAgICAgICAgaWRfID0gcGFyYW1fZXh0cmFjdF9pZCgqKmt3KQot
ICAgICAgICByZXR1cm4gY2xzKHZhbHVlcywgbWFya3MsIGlkXykKKyAgICAgICAgaWYgaWQgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpZCwgc3RyKToKKyAgICAg
ICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZCBpZCB0byBiZSBhIHN0cmluZywgZ290IHt9OiB7IXJ9Ii5mb3JtYXQodHlwZShpZCksIGlkKQor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlkID0gYXNjaWlfZXNjYXBlZChpZCkKKyAg
ICAgICAgcmV0dXJuIGNscyh2YWx1ZXMsIG1hcmtzLCBpZCkKIAogICAgIEBjbGFzc21ldGhvZAot
ICAgIGRlZiBleHRyYWN0X2Zyb20oY2xzLCBwYXJhbWV0ZXJzZXQsIGxlZ2FjeV9mb3JjZV90dXBs
ZT1GYWxzZSk6Ci0gICAgICAgICIiIgotICAgICAgICA6cGFyYW0gcGFyYW1ldGVyc2V0OgotICAg
ICAgICAgICAgYSBsZWdhY3kgc3R5bGUgcGFyYW1ldGVyc2V0IHRoYXQgbWF5IG9yIG1heSBub3Qg
YmUgYSB0dXBsZSwKLSAgICAgICAgICAgIGFuZCBtYXkgb3IgbWF5IG5vdCBiZSB3cmFwcGVkIGlu
dG8gYSBtZXNzIG9mIG1hcmsgb2JqZWN0cworICAgIGRlZiBleHRyYWN0X2Zyb20oCisgICAgICAg
IGNscywKKyAgICAgICAgcGFyYW1ldGVyc2V0OiBVbmlvblsiUGFyYW1ldGVyU2V0IiwgU2VxdWVu
Y2Vbb2JqZWN0XSwgb2JqZWN0XSwKKyAgICAgICAgZm9yY2VfdHVwbGU6IGJvb2wgPSBGYWxzZSwK
KyAgICApIC0+ICJQYXJhbWV0ZXJTZXQiOgorICAgICAgICAiIiJFeHRyYWN0IGZyb20gYW4gb2Jq
ZWN0IG9yIG9iamVjdHMuCiAKLSAgICAgICAgOnBhcmFtIGxlZ2FjeV9mb3JjZV90dXBsZToKLSAg
ICAgICAgICAgIGVuZm9yY2UgdHVwbGUgd3JhcHBpbmcgc28gc2luZ2xlIGFyZ3VtZW50IHR1cGxl
IHZhbHVlcwotICAgICAgICAgICAgZG9uJ3QgZ2V0IGRlY29tcG9zZWQgYW5kIGJyZWFrIHRlc3Rz
CisgICAgICAgIDpwYXJhbSBwYXJhbWV0ZXJzZXQ6CisgICAgICAgICAgICBBIGxlZ2FjeSBzdHls
ZSBwYXJhbWV0ZXJzZXQgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBhIHR1cGxlLAorICAgICAgICAg
ICAgYW5kIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQgaW50byBhIG1lc3Mgb2YgbWFyayBvYmpl
Y3RzLgogCisgICAgICAgIDpwYXJhbSBmb3JjZV90dXBsZToKKyAgICAgICAgICAgIEVuZm9yY2Ug
dHVwbGUgd3JhcHBpbmcgc28gc2luZ2xlIGFyZ3VtZW50IHR1cGxlIHZhbHVlcworICAgICAgICAg
ICAgZG9uJ3QgZ2V0IGRlY29tcG9zZWQgYW5kIGJyZWFrIHRlc3RzLgogICAgICAgICAiIiIKIAog
ICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlcnNldCwgY2xzKToKICAgICAgICAgICAgIHJl
dHVybiBwYXJhbWV0ZXJzZXQKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVyc2V0
LCBNYXJrRGVjb3JhdG9yKSBhbmQgbGVnYWN5X2ZvcmNlX3R1cGxlOgorICAgICAgICBpZiBmb3Jj
ZV90dXBsZToKICAgICAgICAgICAgIHJldHVybiBjbHMucGFyYW0ocGFyYW1ldGVyc2V0KQotCi0g
ICAgICAgIG5ld21hcmtzID0gW10KLSAgICAgICAgYXJndmFsID0gcGFyYW1ldGVyc2V0Ci0gICAg
ICAgIHdoaWxlIGlzaW5zdGFuY2UoYXJndmFsLCBNYXJrRGVjb3JhdG9yKToKLSAgICAgICAgICAg
IG5ld21hcmtzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBNYXJrRGVjb3JhdG9yKE1hcmsoYXJn
dmFsLm1hcmtuYW1lLCBhcmd2YWwuYXJnc1s6LTFdLCBhcmd2YWwua3dhcmdzKSkKLSAgICAgICAg
ICAgICkKLSAgICAgICAgICAgIGFyZ3ZhbCA9IGFyZ3ZhbC5hcmdzWy0xXQotICAgICAgICBhc3Nl
cnQgbm90IGlzaW5zdGFuY2UoYXJndmFsLCBQYXJhbWV0ZXJTZXQpCi0gICAgICAgIGlmIGxlZ2Fj
eV9mb3JjZV90dXBsZToKLSAgICAgICAgICAgIGFyZ3ZhbCA9IGFyZ3ZhbCwKLQotICAgICAgICBp
ZiBuZXdtYXJrczoKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oTUFSS19QQVJBTUVURVJTRVRf
VU5QQUNLSU5HKQotCi0gICAgICAgIHJldHVybiBjbHMoYXJndmFsLCBtYXJrcz1uZXdtYXJrcywg
aWQ9Tm9uZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfZm9yX3BhcmFtZXRyaXplKGNs
cywgYXJnbmFtZXMsIGFyZ3ZhbHVlcywgZnVuYywgY29uZmlnKToKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICMgVE9ETzogUmVmYWN0b3IgdG8gZml4IHRoaXMgdHlwZS1pZ25vcmUuIEN1cnJl
bnRseSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAjIHR5cGUtY2hlY2tzIGJ1dCBjcmFzaGVz
OgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgoJ3gnLCAneScpLCBbMSwgMl0pCisgICAgICAgICAgICAjICAgZGVmIHRlc3RfZm9vKHgsIHkp
OiBwYXNzCisgICAgICAgICAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnNldCwgbWFya3M9W10sIGlk
PU5vbmUpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKworICAgIEBzdGF0aWNtZXRob2QKKyAg
ICBkZWYgX3BhcnNlX3BhcmFtZXRyaXplX2FyZ3MoCisgICAgICAgIGFyZ25hbWVzOiBVbmlvbltz
dHIsIExpc3Rbc3RyXSwgVHVwbGVbc3RyLCAuLi5dXSwKKyAgICAgICAgYXJndmFsdWVzOiBJdGVy
YWJsZVtVbmlvblsiUGFyYW1ldGVyU2V0IiwgU2VxdWVuY2Vbb2JqZWN0XSwgb2JqZWN0XV0sCisg
ICAgICAgICphcmdzLAorICAgICAgICAqKmt3YXJncworICAgICkgLT4gVHVwbGVbVW5pb25bTGlz
dFtzdHJdLCBUdXBsZVtzdHIsIC4uLl1dLCBib29sXToKICAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2UoYXJnbmFtZXMsICh0dXBsZSwgbGlzdCkpOgogICAgICAgICAgICAgYXJnbmFtZXMgPSBbeC5z
dHJpcCgpIGZvciB4IGluIGFyZ25hbWVzLnNwbGl0KCIsIikgaWYgeC5zdHJpcCgpXQogICAgICAg
ICAgICAgZm9yY2VfdHVwbGUgPSBsZW4oYXJnbmFtZXMpID09IDEKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIGZvcmNlX3R1cGxlID0gRmFsc2UKLSAgICAgICAgcGFyYW1ldGVycyA9IFsKLSAg
ICAgICAgICAgIFBhcmFtZXRlclNldC5leHRyYWN0X2Zyb20oeCwgbGVnYWN5X2ZvcmNlX3R1cGxl
PWZvcmNlX3R1cGxlKQotICAgICAgICAgICAgZm9yIHggaW4gYXJndmFsdWVzCisgICAgICAgIHJl
dHVybiBhcmduYW1lcywgZm9yY2VfdHVwbGUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
X3BhcnNlX3BhcmFtZXRyaXplX3BhcmFtZXRlcnMoCisgICAgICAgIGFyZ3ZhbHVlczogSXRlcmFi
bGVbVW5pb25bIlBhcmFtZXRlclNldCIsIFNlcXVlbmNlW29iamVjdF0sIG9iamVjdF1dLAorICAg
ICAgICBmb3JjZV90dXBsZTogYm9vbCwKKyAgICApIC0+IExpc3RbIlBhcmFtZXRlclNldCJdOgor
ICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgUGFyYW1ldGVyU2V0LmV4dHJhY3RfZnJvbSh4
LCBmb3JjZV90dXBsZT1mb3JjZV90dXBsZSkgZm9yIHggaW4gYXJndmFsdWVzCiAgICAgICAgIF0K
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZm9yX3BhcmFtZXRyaXplKAorICAgICAgICBj
bHMsCisgICAgICAgIGFyZ25hbWVzOiBVbmlvbltzdHIsIExpc3Rbc3RyXSwgVHVwbGVbc3RyLCAu
Li5dXSwKKyAgICAgICAgYXJndmFsdWVzOiBJdGVyYWJsZVtVbmlvblsiUGFyYW1ldGVyU2V0Iiwg
U2VxdWVuY2Vbb2JqZWN0XSwgb2JqZWN0XV0sCisgICAgICAgIGZ1bmMsCisgICAgICAgIGNvbmZp
ZzogQ29uZmlnLAorICAgICAgICBub2RlaWQ6IHN0ciwKKyAgICApIC0+IFR1cGxlW1VuaW9uW0xp
c3Rbc3RyXSwgVHVwbGVbc3RyLCAuLi5dXSwgTGlzdFsiUGFyYW1ldGVyU2V0Il1dOgorICAgICAg
ICBhcmduYW1lcywgZm9yY2VfdHVwbGUgPSBjbHMuX3BhcnNlX3BhcmFtZXRyaXplX2FyZ3MoYXJn
bmFtZXMsIGFyZ3ZhbHVlcykKKyAgICAgICAgcGFyYW1ldGVycyA9IGNscy5fcGFyc2VfcGFyYW1l
dHJpemVfcGFyYW1ldGVycyhhcmd2YWx1ZXMsIGZvcmNlX3R1cGxlKQogICAgICAgICBkZWwgYXJn
dmFsdWVzCiAKLSAgICAgICAgaWYgbm90IHBhcmFtZXRlcnM6CisgICAgICAgIGlmIHBhcmFtZXRl
cnM6CisgICAgICAgICAgICAjIENoZWNrIGFsbCBwYXJhbWV0ZXIgc2V0cyBoYXZlIHRoZSBjb3Jy
ZWN0IG51bWJlciBvZiB2YWx1ZXMuCisgICAgICAgICAgICBmb3IgcGFyYW0gaW4gcGFyYW1ldGVy
czoKKyAgICAgICAgICAgICAgICBpZiBsZW4ocGFyYW0udmFsdWVzKSAhPSBsZW4oYXJnbmFtZXMp
OgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAn
e25vZGVpZH06IGluICJwYXJhbWV0cml6ZSIgdGhlIG51bWJlciBvZiBuYW1lcyAoe25hbWVzX2xl
bn0pOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgIiAge25hbWVzfVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgIm11c3QgYmUgZXF1YWwgdG8gdGhlIG51bWJlciBvZiB2YWx1ZXMgKHt2
YWx1ZXNfbGVufSk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICB7dmFsdWVzfSIKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmYWlsKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbXNnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlaWQ9bm9kZWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1wYXJhbS52
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXM9YXJnbmFtZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfbGVuPWxlbihhcmduYW1lcyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWVzX2xlbj1sZW4ocGFyYW0udmFsdWVzKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICBweXRyYWNlPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAj
IEVtcHR5IHBhcmFtZXRlciBzZXQgKGxpa2VseSBjb21wdXRlZCBhdCBydW50aW1lKTogY3JlYXRl
IGEgc2luZ2xlCisgICAgICAgICAgICAjIHBhcmFtZXRlciBzZXQgd2l0aCBOT1RTRVQgdmFsdWVz
LCB3aXRoIHRoZSAiZW1wdHkgcGFyYW1ldGVyIHNldCIgbWFyayBhcHBsaWVkIHRvIGl0LgogICAg
ICAgICAgICAgbWFyayA9IGdldF9lbXB0eV9wYXJhbWV0ZXJzZXRfbWFyayhjb25maWcsIGFyZ25h
bWVzLCBmdW5jKQogICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgUGFyYW1ldGVyU2V0KHZhbHVlcz0oTk9UU0VULCkgKiBsZW4oYXJnbmFtZXMpLCBtYXJrcz1b
bWFya10sIGlkPU5vbmUpCkBAIC0xMTUsMzggKzIwMCw2NyBAQCBjbGFzcyBQYXJhbWV0ZXJTZXQo
bmFtZWR0dXBsZSgiUGFyYW1ldGVyU2V0IiwgInZhbHVlcywgbWFya3MsIGlkIikpOgogICAgICAg
ICByZXR1cm4gYXJnbmFtZXMsIHBhcmFtZXRlcnMKIAogCitAZmluYWwKIEBhdHRyLnMoZnJvemVu
PVRydWUpCi1jbGFzcyBNYXJrKG9iamVjdCk6Ci0gICAgIzogbmFtZSBvZiB0aGUgbWFyaworY2xh
c3MgTWFyazoKKyAgICAjOiBOYW1lIG9mIHRoZSBtYXJrLgogICAgIG5hbWUgPSBhdHRyLmliKHR5
cGU9c3RyKQotICAgICM6IHBvc2l0aW9uYWwgYXJndW1lbnRzIG9mIHRoZSBtYXJrIGRlY29yYXRv
cgotICAgIGFyZ3MgPSBhdHRyLmliKHR5cGU9Ikxpc3Rbb2JqZWN0XSIpCi0gICAgIzoga2V5d29y
ZCBhcmd1bWVudHMgb2YgdGhlIG1hcmsgZGVjb3JhdG9yCi0gICAga3dhcmdzID0gYXR0ci5pYih0
eXBlPSJEaWN0W3N0ciwgb2JqZWN0XSIpCisgICAgIzogUG9zaXRpb25hbCBhcmd1bWVudHMgb2Yg
dGhlIG1hcmsgZGVjb3JhdG9yLgorICAgIGFyZ3MgPSBhdHRyLmliKHR5cGU9VHVwbGVbQW55LCAu
Li5dKQorICAgICM6IEtleXdvcmQgYXJndW1lbnRzIG9mIHRoZSBtYXJrIGRlY29yYXRvci4KKyAg
ICBrd2FyZ3MgPSBhdHRyLmliKHR5cGU9TWFwcGluZ1tzdHIsIEFueV0pCisKKyAgICAjOiBTb3Vy
Y2UgTWFyayBmb3IgaWRzIHdpdGggcGFyYW1ldHJpemUgTWFya3MuCisgICAgX3BhcmFtX2lkc19m
cm9tID0gYXR0ci5pYih0eXBlPU9wdGlvbmFsWyJNYXJrIl0sIGRlZmF1bHQ9Tm9uZSwgcmVwcj1G
YWxzZSkKKyAgICAjOiBSZXNvbHZlZC9nZW5lcmF0ZWQgaWRzIHdpdGggcGFyYW1ldHJpemUgTWFy
a3MuCisgICAgX3BhcmFtX2lkc19nZW5lcmF0ZWQgPSBhdHRyLmliKAorICAgICAgICB0eXBlPU9w
dGlvbmFsW1NlcXVlbmNlW3N0cl1dLCBkZWZhdWx0PU5vbmUsIHJlcHI9RmFsc2UKKyAgICApCiAK
LSAgICBkZWYgY29tYmluZWRfd2l0aChzZWxmLCBvdGhlcik6Ci0gICAgICAgICIiIgotICAgICAg
ICA6cGFyYW0gb3RoZXI6IHRoZSBtYXJrIHRvIGNvbWJpbmUgd2l0aAotICAgICAgICA6dHlwZSBv
dGhlcjogTWFyawotICAgICAgICA6cnR5cGU6IE1hcmsKKyAgICBkZWYgX2hhc19wYXJhbV9pZHMo
c2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuICJpZHMiIGluIHNlbGYua3dhcmdzIG9yIGxl
bihzZWxmLmFyZ3MpID49IDQKKworICAgIGRlZiBjb21iaW5lZF93aXRoKHNlbGYsIG90aGVyOiAi
TWFyayIpIC0+ICJNYXJrIjoKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3IE1hcmsgd2hpY2ggaXMg
YSBjb21iaW5hdGlvbiBvZiB0aGlzCisgICAgICAgIE1hcmsgYW5kIGFub3RoZXIgTWFyay4KIAot
ICAgICAgICBjb21iaW5lcyBieSBhcHBlbmRpbmcgYWFyZ3MgYW5kIG1lcmdpbmcgdGhlIG1hcHBp
bmdzCisgICAgICAgIENvbWJpbmVzIGJ5IGFwcGVuZGluZyBhcmdzIGFuZCBtZXJnaW5nIGt3YXJn
cy4KKworICAgICAgICA6cGFyYW0gTWFyayBvdGhlcjogVGhlIG1hcmsgdG8gY29tYmluZSB3aXRo
LgorICAgICAgICA6cnR5cGU6IE1hcmsKICAgICAgICAgIiIiCiAgICAgICAgIGFzc2VydCBzZWxm
Lm5hbWUgPT0gb3RoZXIubmFtZQorCisgICAgICAgICMgUmVtZW1iZXIgc291cmNlIG9mIGlkcyB3
aXRoIHBhcmFtZXRyaXplIE1hcmtzLgorICAgICAgICBwYXJhbV9pZHNfZnJvbSA9IE5vbmUgICMg
dHlwZTogT3B0aW9uYWxbTWFya10KKyAgICAgICAgaWYgc2VsZi5uYW1lID09ICJwYXJhbWV0cml6
ZSI6CisgICAgICAgICAgICBpZiBvdGhlci5faGFzX3BhcmFtX2lkcygpOgorICAgICAgICAgICAg
ICAgIHBhcmFtX2lkc19mcm9tID0gb3RoZXIKKyAgICAgICAgICAgIGVsaWYgc2VsZi5faGFzX3Bh
cmFtX2lkcygpOgorICAgICAgICAgICAgICAgIHBhcmFtX2lkc19mcm9tID0gc2VsZgorCiAgICAg
ICAgIHJldHVybiBNYXJrKAotICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLmFyZ3MgKyBvdGhl
ci5hcmdzLCBkaWN0KHNlbGYua3dhcmdzLCAqKm90aGVyLmt3YXJncykKKyAgICAgICAgICAgIHNl
bGYubmFtZSwKKyAgICAgICAgICAgIHNlbGYuYXJncyArIG90aGVyLmFyZ3MsCisgICAgICAgICAg
ICBkaWN0KHNlbGYua3dhcmdzLCAqKm90aGVyLmt3YXJncyksCisgICAgICAgICAgICBwYXJhbV9p
ZHNfZnJvbT1wYXJhbV9pZHNfZnJvbSwKICAgICAgICAgKQogCiAKKyMgQSBnZW5lcmljIHBhcmFt
ZXRlciBkZXNpZ25hdGluZyBhbiBvYmplY3QgdG8gd2hpY2ggYSBNYXJrIG1heQorIyBiZSBhcHBs
aWVkIC0tIGEgdGVzdCBmdW5jdGlvbiAoY2FsbGFibGUpIG9yIGNsYXNzLgorIyBOb3RlOiBhIGxh
bWJkYSBpcyBub3QgYWxsb3dlZCwgYnV0IHRoaXMgY2FuJ3QgYmUgcmVwcmVzZW50ZWQuCitfTWFy
a2FibGUgPSBUeXBlVmFyKCJfTWFya2FibGUiLCBib3VuZD1VbmlvbltDYWxsYWJsZVsuLi4sIG9i
amVjdF0sIHR5cGVdKQorCisKIEBhdHRyLnMKLWNsYXNzIE1hcmtEZWNvcmF0b3Iob2JqZWN0KToK
LSAgICAiIiIgQSBkZWNvcmF0b3IgZm9yIHRlc3QgZnVuY3Rpb25zIGFuZCB0ZXN0IGNsYXNzZXMu
ICBXaGVuIGFwcGxpZWQKLSAgICBpdCB3aWxsIGNyZWF0ZSA6Y2xhc3M6YE1hcmtJbmZvYCBvYmpl
Y3RzIHdoaWNoIG1heSBiZQotICAgIDpyZWY6YHJldHJpZXZlZCBieSBob29rcyBhcyBpdGVtIGtl
eXdvcmRzIDxleGNvbnRyb2xza2lwPmAuCi0gICAgTWFya0RlY29yYXRvciBpbnN0YW5jZXMgYXJl
IG9mdGVuIGNyZWF0ZWQgbGlrZSB0aGlzOjoKK2NsYXNzIE1hcmtEZWNvcmF0b3I6CisgICAgIiIi
QSBkZWNvcmF0b3IgZm9yIGFwcGx5aW5nIGEgbWFyayBvbiB0ZXN0IGZ1bmN0aW9ucyBhbmQgY2xh
c3Nlcy4KIAotICAgICAgICBtYXJrMSA9IHB5dGVzdC5tYXJrLk5BTUUgICAgICAgICAgICAgICMg
c2ltcGxlIE1hcmtEZWNvcmF0b3IKLSAgICAgICAgbWFyazIgPSBweXRlc3QubWFyay5OQU1FKG5h
bWUxPXZhbHVlKSAjIHBhcmFtZXRyaXplZCBNYXJrRGVjb3JhdG9yCisgICAgTWFya0RlY29yYXRv
cnMgYXJlIGNyZWF0ZWQgd2l0aCBgYHB5dGVzdC5tYXJrYGA6OgorCisgICAgICAgIG1hcmsxID0g
cHl0ZXN0Lm1hcmsuTkFNRSAgICAgICAgICAgICAgIyBTaW1wbGUgTWFya0RlY29yYXRvcgorICAg
ICAgICBtYXJrMiA9IHB5dGVzdC5tYXJrLk5BTUUobmFtZTE9dmFsdWUpICMgUGFyYW1ldHJpemVk
IE1hcmtEZWNvcmF0b3IKIAogICAgIGFuZCBjYW4gdGhlbiBiZSBhcHBsaWVkIGFzIGRlY29yYXRv
cnMgdG8gdGVzdCBmdW5jdGlvbnM6OgogCkBAIC0xNTQsMjIwICsyNjgsMjc0IEBAIGNsYXNzIE1h
cmtEZWNvcmF0b3Iob2JqZWN0KToKICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKICAgICAg
ICAgICAgIHBhc3MKIAotICAgIFdoZW4gYSBNYXJrRGVjb3JhdG9yIGluc3RhbmNlIGlzIGNhbGxl
ZCBpdCBkb2VzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAxLiBJZiBjYWxsZWQgd2l0aCBhIHNpbmds
ZSBjbGFzcyBhcyBpdHMgb25seSBwb3NpdGlvbmFsIGFyZ3VtZW50IGFuZCBubwotICAgICAgICAg
YWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgYXR0YWNoZXMgaXRzZWxmIHRvIHRoZSBj
bGFzcyBzbyBpdAotICAgICAgICAgZ2V0cyBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gYWxsIHRl
c3QgY2FzZXMgZm91bmQgaW4gdGhhdCBjbGFzcy4KLSAgICAgIDIuIElmIGNhbGxlZCB3aXRoIGEg
c2luZ2xlIGZ1bmN0aW9uIGFzIGl0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kCi0gICAg
ICAgICBubyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpdCBhdHRhY2hlcyBhIE1hcmtJ
bmZvIG9iamVjdCB0byB0aGUKLSAgICAgICAgIGZ1bmN0aW9uLCBjb250YWluaW5nIGFsbCB0aGUg
YXJndW1lbnRzIGFscmVhZHkgc3RvcmVkIGludGVybmFsbHkgaW4KLSAgICAgICAgIHRoZSBNYXJr
RGVjb3JhdG9yLgotICAgICAgMy4gV2hlbiBjYWxsZWQgaW4gYW55IG90aGVyIGNhc2UsIGl0IHBl
cmZvcm1zIGEgJ2Zha2UgY29uc3RydWN0aW9uJyBjYWxsLAotICAgICAgICAgaS5lLiBpdCByZXR1
cm5zIGEgbmV3IE1hcmtEZWNvcmF0b3IgaW5zdGFuY2Ugd2l0aCB0aGUgb3JpZ2luYWwKLSAgICAg
ICAgIE1hcmtEZWNvcmF0b3IncyBjb250ZW50IHVwZGF0ZWQgd2l0aCB0aGUgYXJndW1lbnRzIHBh
c3NlZCB0byB0aGlzCi0gICAgICAgICBjYWxsLgotCi0gICAgTm90ZTogVGhlIHJ1bGVzIGFib3Zl
IHByZXZlbnQgTWFya0RlY29yYXRvciBvYmplY3RzIGZyb20gc3RvcmluZyBvbmx5IGEKLSAgICBz
aW5nbGUgZnVuY3Rpb24gb3IgY2xhc3MgcmVmZXJlbmNlIGFzIHRoZWlyIHBvc2l0aW9uYWwgYXJn
dW1lbnQgd2l0aCBubwotICAgIGFkZGl0aW9uYWwga2V5d29yZCBvciBwb3NpdGlvbmFsIGFyZ3Vt
ZW50cy4KKyAgICBXaGVuIGEgTWFya0RlY29yYXRvciBpcyBjYWxsZWQgaXQgZG9lcyB0aGUgZm9s
bG93aW5nOgorCisgICAgMS4gSWYgY2FsbGVkIHdpdGggYSBzaW5nbGUgY2xhc3MgYXMgaXRzIG9u
bHkgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgbm8KKyAgICAgICBhZGRpdGlvbmFsIGtleXdvcmQg
YXJndW1lbnRzLCBpdCBhdHRhY2hlcyB0aGUgbWFyayB0byB0aGUgY2xhc3Mgc28gaXQKKyAgICAg
ICBnZXRzIGFwcGxpZWQgYXV0b21hdGljYWxseSB0byBhbGwgdGVzdCBjYXNlcyBmb3VuZCBpbiB0
aGF0IGNsYXNzLgorCisgICAgMi4gSWYgY2FsbGVkIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gYXMg
aXRzIG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQKKyAgICAgICBubyBhZGRpdGlvbmFsIGtl
eXdvcmQgYXJndW1lbnRzLCBpdCBhdHRhY2hlcyB0aGUgbWFyayB0byB0aGUgZnVuY3Rpb24sCisg
ICAgICAgY29udGFpbmluZyBhbGwgdGhlIGFyZ3VtZW50cyBhbHJlYWR5IHN0b3JlZCBpbnRlcm5h
bGx5IGluIHRoZQorICAgICAgIE1hcmtEZWNvcmF0b3IuCisKKyAgICAzLiBXaGVuIGNhbGxlZCBp
biBhbnkgb3RoZXIgY2FzZSwgaXQgcmV0dXJucyBhIG5ldyBNYXJrRGVjb3JhdG9yIGluc3RhbmNl
CisgICAgICAgd2l0aCB0aGUgb3JpZ2luYWwgTWFya0RlY29yYXRvcidzIGNvbnRlbnQgdXBkYXRl
ZCB3aXRoIHRoZSBhcmd1bWVudHMKKyAgICAgICBwYXNzZWQgdG8gdGhpcyBjYWxsLgogCisgICAg
Tm90ZTogVGhlIHJ1bGVzIGFib3ZlIHByZXZlbnQgTWFya0RlY29yYXRvcnMgZnJvbSBzdG9yaW5n
IG9ubHkgYSBzaW5nbGUKKyAgICBmdW5jdGlvbiBvciBjbGFzcyByZWZlcmVuY2UgYXMgdGhlaXIg
cG9zaXRpb25hbCBhcmd1bWVudCB3aXRoIG5vCisgICAgYWRkaXRpb25hbCBrZXl3b3JkIG9yIHBv
c2l0aW9uYWwgYXJndW1lbnRzLiBZb3UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkKKyAgICB1c2lu
ZyBgd2l0aF9hcmdzKClgLgogICAgICIiIgogCi0gICAgbWFyayA9IGF0dHIuaWIodmFsaWRhdG9y
PWF0dHIudmFsaWRhdG9ycy5pbnN0YW5jZV9vZihNYXJrKSkKKyAgICBtYXJrID0gYXR0ci5pYih0
eXBlPU1hcmssIHZhbGlkYXRvcj1hdHRyLnZhbGlkYXRvcnMuaW5zdGFuY2Vfb2YoTWFyaykpCiAK
LSAgICBuYW1lID0gYWxpYXMoIm1hcmsubmFtZSIpCi0gICAgYXJncyA9IGFsaWFzKCJtYXJrLmFy
Z3MiKQotICAgIGt3YXJncyA9IGFsaWFzKCJtYXJrLmt3YXJncyIpCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIG5hbWUoc2VsZikgLT4gc3RyOgorICAgICAgICAiIiJBbGlhcyBmb3IgbWFyay5uYW1l
LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5tYXJrLm5hbWUKIAogICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBtYXJrbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYubmFtZSAgIyBmb3IgYmFj
a3dhcmQtY29tcGF0ICgyLjQuMSBoYWQgdGhpcyBhdHRyKQorICAgIGRlZiBhcmdzKHNlbGYpIC0+
IFR1cGxlW0FueSwgLi4uXToKKyAgICAgICAgIiIiQWxpYXMgZm9yIG1hcmsuYXJncy4iIiIKKyAg
ICAgICAgcmV0dXJuIHNlbGYubWFyay5hcmdzCiAKLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVy
KToKLSAgICAgICAgcmV0dXJuIHNlbGYubWFyayA9PSBvdGhlci5tYXJrIGlmIGlzaW5zdGFuY2Uo
b3RoZXIsIE1hcmtEZWNvcmF0b3IpIGVsc2UgRmFsc2UKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
a3dhcmdzKHNlbGYpIC0+IE1hcHBpbmdbc3RyLCBBbnldOgorICAgICAgICAiIiJBbGlhcyBmb3Ig
bWFyay5rd2FyZ3MuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm1hcmsua3dhcmdzCiAKLSAgICBk
ZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPE1hcmtEZWNvcmF0b3IgJXI+IiAl
IChzZWxmLm1hcmssKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYXJrbmFtZShzZWxmKSAtPiBz
dHI6CisgICAgICAgIHJldHVybiBzZWxmLm5hbWUgICMgZm9yIGJhY2t3YXJkLWNvbXBhdCAoMi40
LjEgaGFkIHRoaXMgYXR0cikKIAotICAgIGRlZiB3aXRoX2FyZ3Moc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAgIiIiIHJldHVybiBhIE1hcmtEZWNvcmF0b3Igd2l0aCBleHRyYSBhcmd1
bWVudHMgYWRkZWQKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICByZXR1
cm4gIjxNYXJrRGVjb3JhdG9yIHshcn0+Ii5mb3JtYXQoc2VsZi5tYXJrKQogCi0gICAgICAgIHVu
bGlrZSBjYWxsIHRoaXMgY2FuIGJlIHVzZWQgZXZlbiBpZiB0aGUgc29sZSBhcmd1bWVudCBpcyBh
IGNhbGxhYmxlL2NsYXNzCisgICAgZGVmIHdpdGhfYXJncyhzZWxmLCAqYXJnczogb2JqZWN0LCAq
Kmt3YXJnczogb2JqZWN0KSAtPiAiTWFya0RlY29yYXRvciI6CisgICAgICAgICIiIlJldHVybiBh
IE1hcmtEZWNvcmF0b3Igd2l0aCBleHRyYSBhcmd1bWVudHMgYWRkZWQuCiAKLSAgICAgICAgOnJl
dHVybjogTWFya0RlY29yYXRvcgotICAgICAgICAiIiIKKyAgICAgICAgVW5saWtlIGNhbGxpbmcg
dGhlIE1hcmtEZWNvcmF0b3IsIHdpdGhfYXJncygpIGNhbiBiZSB1c2VkIGV2ZW4KKyAgICAgICAg
aWYgdGhlIHNvbGUgYXJndW1lbnQgaXMgYSBjYWxsYWJsZS9jbGFzcy4KIAorICAgICAgICA6cnR5
cGU6IE1hcmtEZWNvcmF0b3IKKyAgICAgICAgIiIiCiAgICAgICAgIG1hcmsgPSBNYXJrKHNlbGYu
bmFtZSwgYXJncywga3dhcmdzKQogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5t
YXJrLmNvbWJpbmVkX3dpdGgobWFyaykpCiAKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAgIiIiIGlmIHBhc3NlZCBhIHNpbmdsZSBjYWxsYWJsZSBhcmd1
bWVudDogZGVjb3JhdGUgaXQgd2l0aCBtYXJrIGluZm8uCi0gICAgICAgICAgICBvdGhlcndpc2Ug
YWRkICphcmdzLyoqa3dhcmdzIGluLXBsYWNlIHRvIG1hcmsgaW5mb3JtYXRpb24uICIiIgorICAg
ICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgdGhlIG92ZXJsb2FkcyBvdmVybGFwIHdpdGggYW4gaW5j
b21wYXRpYmxlCisgICAgIyByZXR1cm4gdHlwZS4gTm90IG11Y2ggd2UgY2FuIGRvIGFib3V0IHRo
YXQuIFRoYW5rZnVsbHkgbXlweSBwaWNrcworICAgICMgdGhlIGZpcnN0IG1hdGNoIHNvIGl0IHdv
cmtzIG91dCBldmVuIGlmIHdlIGJyZWFrIHRoZSBydWxlcy4KKyAgICBAb3ZlcmxvYWQKKyAgICBk
ZWYgX19jYWxsX18oc2VsZiwgYXJnOiBfTWFya2FibGUpIC0+IF9NYXJrYWJsZTogICMgdHlwZTog
aWdub3JlW21pc2NdCisgICAgICAgIHBhc3MKKworICAgIEBvdmVybG9hZCAgIyBub3FhOiBGODEx
CisgICAgZGVmIF9fY2FsbF9fKCAgIyBub3FhOiBGODExCisgICAgICAgIHNlbGYsICphcmdzOiBv
YmplY3QsICoqa3dhcmdzOiBvYmplY3QKKyAgICApIC0+ICJNYXJrRGVjb3JhdG9yIjoKKyAgICAg
ICAgcGFzcworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzOiBvYmplY3QsICoqa3dhcmdz
OiBvYmplY3QpOiAgIyBub3FhOiBGODExCisgICAgICAgICIiIkNhbGwgdGhlIE1hcmtEZWNvcmF0
b3IuIiIiCiAgICAgICAgIGlmIGFyZ3MgYW5kIG5vdCBrd2FyZ3M6CiAgICAgICAgICAgICBmdW5j
ID0gYXJnc1swXQogICAgICAgICAgICAgaXNfY2xhc3MgPSBpbnNwZWN0LmlzY2xhc3MoZnVuYykK
ICAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxIGFuZCAoaXN0ZXN0ZnVuYyhmdW5jKSBvciBp
c19jbGFzcyk6Ci0gICAgICAgICAgICAgICAgaWYgaXNfY2xhc3M6Ci0gICAgICAgICAgICAgICAg
ICAgIHN0b3JlX21hcmsoZnVuYywgc2VsZi5tYXJrKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgIHN0b3JlX2xlZ2FjeV9tYXJraW5mbyhmdW5jLCBzZWxmLm1hcmsp
Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlX21hcmsoZnVuYywgc2VsZi5tYXJrKQorICAgICAg
ICAgICAgICAgIHN0b3JlX21hcmsoZnVuYywgc2VsZi5tYXJrKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmdW5jCiAgICAgICAgIHJldHVybiBzZWxmLndpdGhfYXJncygqYXJncywgKiprd2FyZ3Mp
CiAKIAotZGVmIGdldF91bnBhY2tlZF9tYXJrcyhvYmopOgotICAgICIiIgotICAgIG9idGFpbiB0
aGUgdW5wYWNrZWQgbWFya3MgdGhhdCBhcmUgc3RvcmVkIG9uIGFuIG9iamVjdAotICAgICIiIgor
ZGVmIGdldF91bnBhY2tlZF9tYXJrcyhvYmopIC0+IExpc3RbTWFya106CisgICAgIiIiT2J0YWlu
IHRoZSB1bnBhY2tlZCBtYXJrcyB0aGF0IGFyZSBzdG9yZWQgb24gYW4gb2JqZWN0LiIiIgogICAg
IG1hcmtfbGlzdCA9IGdldGF0dHIob2JqLCAicHl0ZXN0bWFyayIsIFtdKQotCiAgICAgaWYgbm90
IGlzaW5zdGFuY2UobWFya19saXN0LCBsaXN0KToKICAgICAgICAgbWFya19saXN0ID0gW21hcmtf
bGlzdF0KLSAgICByZXR1cm4gW2dldGF0dHIobWFyaywgIm1hcmsiLCBtYXJrKSBmb3IgbWFyayBp
biBtYXJrX2xpc3RdICAjIHVucGFjayBNYXJrRGVjb3JhdG9yCisgICAgcmV0dXJuIG5vcm1hbGl6
ZV9tYXJrX2xpc3QobWFya19saXN0KQogCiAKLWRlZiBzdG9yZV9tYXJrKG9iaiwgbWFyayk6Ci0g
ICAgIiIic3RvcmUgYSBNYXJrIG9uIGFuIG9iamVjdAotICAgIHRoaXMgaXMgdXNlZCB0byBpbXBs
ZW1lbnQgdGhlIE1hcmsgZGVjbGFyYXRpb25zL2RlY29yYXRvcnMgY29ycmVjdGx5Ci0gICAgIiIi
Ci0gICAgYXNzZXJ0IGlzaW5zdGFuY2UobWFyaywgTWFyayksIG1hcmsKLSAgICAjIGFsd2F5cyBy
ZWFzc2lnbiBuYW1lIHRvIGF2b2lkIHVwZGF0aW5nIHB5dGVzdG1hcmsKLSAgICAjIGluIGEgcmVm
ZXJlbmNlIHRoYXQgd2FzIG9ubHkgYm9ycm93ZWQKLSAgICBvYmoucHl0ZXN0bWFyayA9IGdldF91
bnBhY2tlZF9tYXJrcyhvYmopICsgW21hcmtdCitkZWYgbm9ybWFsaXplX21hcmtfbGlzdChtYXJr
X2xpc3Q6IEl0ZXJhYmxlW1VuaW9uW01hcmssIE1hcmtEZWNvcmF0b3JdXSkgLT4gTGlzdFtNYXJr
XToKKyAgICAiIiJOb3JtYWxpemUgbWFya2VyIGRlY29yYXRpbmcgaGVscGVycyB0byBtYXJrIG9i
amVjdHMuCiAKLQotZGVmIHN0b3JlX2xlZ2FjeV9tYXJraW5mbyhmdW5jLCBtYXJrKToKLSAgICAi
IiJjcmVhdGUgdGhlIGxlZ2FjeSBNYXJrSW5mbyBvYmplY3RzIGFuZCBwdXQgdGhlbSBvbnRvIHRo
ZSBmdW5jdGlvbgorICAgIDp0eXBlIExpc3RbVW5pb25bTWFyaywgTWFya2RlY29yYXRvcl1dIG1h
cmtfbGlzdDoKKyAgICA6cnR5cGU6IExpc3RbTWFya10KICAgICAiIiIKLSAgICBpZiBub3QgaXNp
bnN0YW5jZShtYXJrLCBNYXJrKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJnb3Qge21hcmsh
cn0gaW5zdGVhZCBvZiBhIE1hcmsiLmZvcm1hdChtYXJrPW1hcmspKQotICAgIGhvbGRlciA9IGdl
dGF0dHIoZnVuYywgbWFyay5uYW1lLCBOb25lKQotICAgIGlmIGhvbGRlciBpcyBOb25lOgotICAg
ICAgICBob2xkZXIgPSBNYXJrSW5mby5mb3JfbWFyayhtYXJrKQotICAgICAgICBzZXRhdHRyKGZ1
bmMsIG1hcmsubmFtZSwgaG9sZGVyKQotICAgIGVsc2U6Ci0gICAgICAgIGhvbGRlci5hZGRfbWFy
ayhtYXJrKQorICAgIGV4dHJhY3RlZCA9IFsKKyAgICAgICAgZ2V0YXR0cihtYXJrLCAibWFyayIs
IG1hcmspIGZvciBtYXJrIGluIG1hcmtfbGlzdAorICAgIF0gICMgdW5wYWNrIE1hcmtEZWNvcmF0
b3IKKyAgICBmb3IgbWFyayBpbiBleHRyYWN0ZWQ6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KG1hcmssIE1hcmspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJnb3QgeyFyfSBpbnN0
ZWFkIG9mIE1hcmsiLmZvcm1hdChtYXJrKSkKKyAgICByZXR1cm4gW3ggZm9yIHggaW4gZXh0cmFj
dGVkIGlmIGlzaW5zdGFuY2UoeCwgTWFyayldCiAKIAotZGVmIHRyYW5zZmVyX21hcmtlcnMoZnVu
Y29iaiwgY2xzLCBtb2QpOgotICAgICIiIgotICAgIHRoaXMgZnVuY3Rpb24gdHJhbnNmZXJzIGNs
YXNzIGxldmVsIG1hcmtlcnMgYW5kIG1vZHVsZSBsZXZlbCBtYXJrZXJzCi0gICAgaW50byBmdW5j
dGlvbiBsZXZlbCBtYXJraW5mbyBvYmplY3RzCitkZWYgc3RvcmVfbWFyayhvYmosIG1hcms6IE1h
cmspIC0+IE5vbmU6CisgICAgIiIiU3RvcmUgYSBNYXJrIG9uIGFuIG9iamVjdC4KIAotICAgIHRo
aXMgaXMgdGhlIG1haW4gcmVhc29uIHdoeSBtYXJrcyBhcmUgc28gYnJva2VuCi0gICAgdGhlIHJl
c29sdXRpb24gd2lsbCBpbnZvbHZlIHBoYXNpbmcgb3V0IGZ1bmN0aW9uIGxldmVsIE1hcmtJbmZv
IG9iamVjdHMKLQotICAgICIiIgotICAgIGZvciBvYmogaW4gKGNscywgbW9kKToKLSAgICAgICAg
Zm9yIG1hcmsgaW4gZ2V0X3VucGFja2VkX21hcmtzKG9iaik6Ci0gICAgICAgICAgICBpZiBub3Qg
X21hcmtlZChmdW5jb2JqLCBtYXJrKToKLSAgICAgICAgICAgICAgICBzdG9yZV9sZWdhY3lfbWFy
a2luZm8oZnVuY29iaiwgbWFyaykKLQotCi1kZWYgX21hcmtlZChmdW5jLCBtYXJrKToKLSAgICAi
IiIgUmV0dXJucyBUcnVlIGlmIDpmdW5jOiBpcyBhbHJlYWR5IG1hcmtlZCB3aXRoIDptYXJrOiwg
RmFsc2Ugb3RoZXJ3aXNlLgotICAgIFRoaXMgY2FuIGhhcHBlbiBpZiBtYXJrZXIgaXMgYXBwbGll
ZCB0byBjbGFzcyBhbmQgdGhlIHRlc3QgZmlsZSBpcwotICAgIGludm9rZWQgbW9yZSB0aGFuIG9u
Y2UuCisgICAgVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgTWFyayBkZWNsYXJhdGlvbnMv
ZGVjb3JhdG9ycyBjb3JyZWN0bHkuCiAgICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBmdW5jX21h
cmsgPSBnZXRhdHRyKGZ1bmMsIGdldGF0dHIobWFyaywgImNvbWJpbmVkIiwgbWFyaykubmFtZSkK
LSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJl
dHVybiBhbnkobWFyayA9PSBpbmZvLmNvbWJpbmVkIGZvciBpbmZvIGluIGZ1bmNfbWFyaykKLQot
Ci1AYXR0ci5zCi1jbGFzcyBNYXJrSW5mbyhvYmplY3QpOgotICAgICIiIiBNYXJraW5nIG9iamVj
dCBjcmVhdGVkIGJ5IDpjbGFzczpgTWFya0RlY29yYXRvcmAgaW5zdGFuY2VzLiAiIiIKLQotICAg
IF9tYXJrcyA9IGF0dHIuaWIoY29udmVydD1saXN0KQotCi0gICAgQF9tYXJrcy52YWxpZGF0b3IK
LSAgICBkZWYgdmFsaWRhdGVfbWFya3Moc2VsZiwgYXR0cmlidXRlLCB2YWx1ZSk6Ci0gICAgICAg
IGZvciBpdGVtIGluIHZhbHVlOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwg
TWFyayk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAg
ICAgICAgIk1hcmtJbmZvIGV4cGVjdHMgTWFyayBpbnN0YW5jZXMsIGdvdCB7IXJ9ICh7IXJ9KSIu
Zm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgdHlwZShpdGVtKQotICAgICAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgKQotCi0gICAgY29tYmluZWQgPSBhdHRy
LmliKAotICAgICAgICByZXByPUZhbHNlLAotICAgICAgICBkZWZhdWx0PWF0dHIuRmFjdG9yeSgK
LSAgICAgICAgICAgIGxhbWJkYSBzZWxmOiByZWR1Y2UoTWFyay5jb21iaW5lZF93aXRoLCBzZWxm
Ll9tYXJrcyksIHRha2VzX3NlbGY9VHJ1ZQotICAgICAgICApLAotICAgICkKLQotICAgIG5hbWUg
PSBhbGlhcygiY29tYmluZWQubmFtZSIsIHdhcm5pbmc9TUFSS19JTkZPX0FUVFJJQlVURSkKLSAg
ICBhcmdzID0gYWxpYXMoImNvbWJpbmVkLmFyZ3MiLCB3YXJuaW5nPU1BUktfSU5GT19BVFRSSUJV
VEUpCi0gICAga3dhcmdzID0gYWxpYXMoImNvbWJpbmVkLmt3YXJncyIsIHdhcm5pbmc9TUFSS19J
TkZPX0FUVFJJQlVURSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmb3JfbWFyayhjbHMs
IG1hcmspOgotICAgICAgICByZXR1cm4gY2xzKFttYXJrXSkKLQotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuICI8TWFya0luZm8geyFyfT4iLmZvcm1hdChzZWxmLmNvbWJp
bmVkKQotCi0gICAgZGVmIGFkZF9tYXJrKHNlbGYsIG1hcmspOgotICAgICAgICAiIiIgYWRkIGEg
TWFya0luZm8gd2l0aCB0aGUgZ2l2ZW4gYXJncyBhbmQga3dhcmdzLiAiIiIKLSAgICAgICAgc2Vs
Zi5fbWFya3MuYXBwZW5kKG1hcmspCi0gICAgICAgIHNlbGYuY29tYmluZWQgPSBzZWxmLmNvbWJp
bmVkLmNvbWJpbmVkX3dpdGgobWFyaykKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAg
ICAgIiIiIHlpZWxkIE1hcmtJbmZvIG9iamVjdHMgZWFjaCByZWxhdGluZyB0byBhIG1hcmtpbmct
Y2FsbC4gIiIiCi0gICAgICAgIHJldHVybiBtYXAoTWFya0luZm8uZm9yX21hcmssIHNlbGYuX21h
cmtzKQorICAgIGFzc2VydCBpc2luc3RhbmNlKG1hcmssIE1hcmspLCBtYXJrCisgICAgIyBBbHdh
eXMgcmVhc3NpZ24gbmFtZSB0byBhdm9pZCB1cGRhdGluZyBweXRlc3RtYXJrIGluIGEgcmVmZXJl
bmNlIHRoYXQKKyAgICAjIHdhcyBvbmx5IGJvcnJvd2VkLgorICAgIG9iai5weXRlc3RtYXJrID0g
Z2V0X3VucGFja2VkX21hcmtzKG9iaikgKyBbbWFya10KIAogCi1jbGFzcyBNYXJrR2VuZXJhdG9y
KG9iamVjdCk6Ci0gICAgIiIiIEZhY3RvcnkgZm9yIDpjbGFzczpgTWFya0RlY29yYXRvcmAgb2Jq
ZWN0cyAtIGV4cG9zZWQgYXMKLSAgICBhIGBgcHl0ZXN0Lm1hcmtgYCBzaW5nbGV0b24gaW5zdGFu
Y2UuICBFeGFtcGxlOjoKKyMgVHlwaW5nIGZvciBidWlsdGluIHB5dGVzdCBtYXJrcy4gVGhpcyBp
cyBjaGVhdGluZzsgaXQgZ2l2ZXMgYnVpbHRpbiBtYXJrcworIyBzcGVjaWFsIHByaXZpbGVnZSwg
YW5kIGJyZWFrcyBtb2R1bGFyaXR5LiBCdXQgcHJhY3RpY2FsaXR5IGJlYXRzIHB1cml0eS4uLgor
aWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IF9TY29w
ZQorCisgICAgY2xhc3MgX1NraXBNYXJrRGVjb3JhdG9yKE1hcmtEZWNvcmF0b3IpOgorICAgICAg
ICBAb3ZlcmxvYWQgICMgdHlwZTogaWdub3JlW292ZXJyaWRlLG1pc2NdCisgICAgICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBhcmc6IF9NYXJrYWJsZSkgLT4gX01hcmthYmxlOgorICAgICAgICAgICAg
Li4uCisKKyAgICAgICAgQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICAgICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHJlYXNvbjogc3RyID0gLi4uKSAtPiAiTWFya0RlY29yYXRvciI6ICAjIG5vcWE6
IEY4MTEKKyAgICAgICAgICAgIC4uLgorCisgICAgY2xhc3MgX1NraXBpZk1hcmtEZWNvcmF0b3Io
TWFya0RlY29yYXRvcik6CisgICAgICAgIGRlZiBfX2NhbGxfXyggICMgdHlwZTogaWdub3JlW292
ZXJyaWRlXQorICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgIGNvbmRpdGlvbjogVW5pb25b
c3RyLCBib29sXSA9IC4uLiwKKyAgICAgICAgICAgICpjb25kaXRpb25zOiBVbmlvbltzdHIsIGJv
b2xdLAorICAgICAgICAgICAgcmVhc29uOiBzdHIgPSAuLi4KKyAgICAgICAgKSAtPiBNYXJrRGVj
b3JhdG9yOgorICAgICAgICAgICAgLi4uCisKKyAgICBjbGFzcyBfWGZhaWxNYXJrRGVjb3JhdG9y
KE1hcmtEZWNvcmF0b3IpOgorICAgICAgICBAb3ZlcmxvYWQgICMgdHlwZTogaWdub3JlW292ZXJy
aWRlLG1pc2NdCisgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhcmc6IF9NYXJrYWJsZSkgLT4g
X01hcmthYmxlOgorICAgICAgICAgICAgLi4uCisKKyAgICAgICAgQG92ZXJsb2FkICAjIG5vcWE6
IEY4MTEKKyAgICAgICAgZGVmIF9fY2FsbF9fKCAgIyBub3FhOiBGODExCisgICAgICAgICAgICBz
ZWxmLAorICAgICAgICAgICAgY29uZGl0aW9uOiBVbmlvbltzdHIsIGJvb2xdID0gLi4uLAorICAg
ICAgICAgICAgKmNvbmRpdGlvbnM6IFVuaW9uW3N0ciwgYm9vbF0sCisgICAgICAgICAgICByZWFz
b246IHN0ciA9IC4uLiwKKyAgICAgICAgICAgIHJ1bjogYm9vbCA9IC4uLiwKKyAgICAgICAgICAg
IHJhaXNlczogVW5pb25bCisgICAgICAgICAgICAgICAgIlR5cGVbQmFzZUV4Y2VwdGlvbl0iLCBU
dXBsZVsiVHlwZVtCYXNlRXhjZXB0aW9uXSIsIC4uLl0KKyAgICAgICAgICAgIF0gPSAuLi4sCisg
ICAgICAgICAgICBzdHJpY3Q6IGJvb2wgPSAuLi4KKyAgICAgICAgKSAtPiBNYXJrRGVjb3JhdG9y
OgorICAgICAgICAgICAgLi4uCisKKyAgICBjbGFzcyBfUGFyYW1ldHJpemVNYXJrRGVjb3JhdG9y
KE1hcmtEZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19jYWxsX18oICAjIHR5cGU6IGlnbm9yZVtv
dmVycmlkZV0KKyAgICAgICAgICAgIHNlbGYsCisgICAgICAgICAgICBhcmduYW1lczogVW5pb25b
c3RyLCBMaXN0W3N0cl0sIFR1cGxlW3N0ciwgLi4uXV0sCisgICAgICAgICAgICBhcmd2YWx1ZXM6
IEl0ZXJhYmxlW1VuaW9uW1BhcmFtZXRlclNldCwgU2VxdWVuY2Vbb2JqZWN0XSwgb2JqZWN0XV0s
CisgICAgICAgICAgICAqLAorICAgICAgICAgICAgaW5kaXJlY3Q6IFVuaW9uW2Jvb2wsIFNlcXVl
bmNlW3N0cl1dID0gLi4uLAorICAgICAgICAgICAgaWRzOiBPcHRpb25hbFsKKyAgICAgICAgICAg
ICAgICBVbmlvblsKKyAgICAgICAgICAgICAgICAgICAgSXRlcmFibGVbVW5pb25bTm9uZSwgc3Ry
LCBmbG9hdCwgaW50LCBib29sXV0sCisgICAgICAgICAgICAgICAgICAgIENhbGxhYmxlW1tBbnld
LCBPcHRpb25hbFtvYmplY3RdXSwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdID0g
Li4uLAorICAgICAgICAgICAgc2NvcGU6IE9wdGlvbmFsW19TY29wZV0gPSAuLi4KKyAgICAgICAg
KSAtPiBNYXJrRGVjb3JhdG9yOgorICAgICAgICAgICAgLi4uCisKKyAgICBjbGFzcyBfVXNlZml4
dHVyZXNNYXJrRGVjb3JhdG9yKE1hcmtEZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19jYWxsX18o
ICAjIHR5cGU6IGlnbm9yZVtvdmVycmlkZV0KKyAgICAgICAgICAgIHNlbGYsICpmaXh0dXJlczog
c3RyCisgICAgICAgICkgLT4gTWFya0RlY29yYXRvcjoKKyAgICAgICAgICAgIC4uLgorCisgICAg
Y2xhc3MgX0ZpbHRlcndhcm5pbmdzTWFya0RlY29yYXRvcihNYXJrRGVjb3JhdG9yKToKKyAgICAg
ICAgZGVmIF9fY2FsbF9fKCAgIyB0eXBlOiBpZ25vcmVbb3ZlcnJpZGVdCisgICAgICAgICAgICBz
ZWxmLCAqZmlsdGVyczogc3RyCisgICAgICAgICkgLT4gTWFya0RlY29yYXRvcjoKKyAgICAgICAg
ICAgIC4uLgorCisKK0BmaW5hbAorY2xhc3MgTWFya0dlbmVyYXRvcjoKKyAgICAiIiJGYWN0b3J5
IGZvciA6Y2xhc3M6YE1hcmtEZWNvcmF0b3JgIG9iamVjdHMgLSBleHBvc2VkIGFzCisgICAgYSBg
YHB5dGVzdC5tYXJrYGAgc2luZ2xldG9uIGluc3RhbmNlLgorCisgICAgRXhhbXBsZTo6CiAKICAg
ICAgICAgIGltcG9ydCBweXRlc3QKKwogICAgICAgICAgQHB5dGVzdC5tYXJrLnNsb3d0ZXN0CiAg
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgd2ls
bCBzZXQgYSAnc2xvd3Rlc3QnIDpjbGFzczpgTWFya0luZm9gIG9iamVjdAotICAgIG9uIHRoZSBg
YHRlc3RfZnVuY3Rpb25gYCBvYmplY3QuICIiIgotICAgIF9jb25maWcgPSBOb25lCisgICAgYXBw
bGllcyBhICdzbG93dGVzdCcgOmNsYXNzOmBNYXJrYCBvbiBgYHRlc3RfZnVuY3Rpb25gYC4KKyAg
ICAiIiIKKworICAgIF9jb25maWcgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW0NvbmZpZ10KKyAg
ICBfbWFya2VycyA9IHNldCgpICAjIHR5cGU6IFNldFtzdHJdCisKKyAgICAjIFNlZSBUWVBFX0NI
RUNLSU5HIGFib3ZlLgorICAgIGlmIFRZUEVfQ0hFQ0tJTkc6CisgICAgICAgICMgVE9ETyhweTM2
KTogQ2hhbmdlIHRvIGJ1aWx0aW4gYW5ub3RhdGlvbiBzeW50YXguCisgICAgICAgIHNraXAgPSBf
U2tpcE1hcmtEZWNvcmF0b3IoTWFyaygic2tpcCIsICgpLCB7fSkpCisgICAgICAgIHNraXBpZiA9
IF9Ta2lwaWZNYXJrRGVjb3JhdG9yKE1hcmsoInNraXBpZiIsICgpLCB7fSkpCisgICAgICAgIHhm
YWlsID0gX1hmYWlsTWFya0RlY29yYXRvcihNYXJrKCJ4ZmFpbCIsICgpLCB7fSkpCisgICAgICAg
IHBhcmFtZXRyaXplID0gX1BhcmFtZXRyaXplTWFya0RlY29yYXRvcihNYXJrKCJwYXJhbWV0cml6
ZSIsICgpLCB7fSkpCisgICAgICAgIHVzZWZpeHR1cmVzID0gX1VzZWZpeHR1cmVzTWFya0RlY29y
YXRvcihNYXJrKCJ1c2VmaXh0dXJlcyIsICgpLCB7fSkpCisgICAgICAgIGZpbHRlcndhcm5pbmdz
ID0gX0ZpbHRlcndhcm5pbmdzTWFya0RlY29yYXRvcihNYXJrKCJmaWx0ZXJ3YXJuaW5ncyIsICgp
LCB7fSkpCiAKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgZGVmIF9fZ2V0
YXR0cl9fKHNlbGYsIG5hbWU6IHN0cikgLT4gTWFya0RlY29yYXRvcjoKICAgICAgICAgaWYgbmFt
ZVswXSA9PSAiXyI6CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTWFya2VyIG5h
bWUgbXVzdCBOT1Qgc3RhcnQgd2l0aCB1bmRlcnNjb3JlIikKKwogICAgICAgICBpZiBzZWxmLl9j
b25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9jaGVjayhuYW1lKQotICAgICAg
ICByZXR1cm4gTWFya0RlY29yYXRvcihNYXJrKG5hbWUsICgpLCB7fSkpCisgICAgICAgICAgICAj
IFdlIHN0b3JlIGEgc2V0IG9mIG1hcmtlcnMgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWlzYXRpb24g
LSBpZiBhIG1hcmsKKyAgICAgICAgICAgICMgbmFtZSBpcyBpbiB0aGUgc2V0IHdlIGRlZmluaXRl
bHkga25vdyBpdCwgYnV0IGEgbWFyayBtYXkgYmUga25vd24gYW5kCisgICAgICAgICAgICAjIG5v
dCBpbiB0aGUgc2V0LiAgV2UgdGhlcmVmb3JlIHN0YXJ0IGJ5IHVwZGF0aW5nIHRoZSBzZXQhCisg
ICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tYXJrZXJzOgorICAgICAgICAgICAgICAg
IGZvciBsaW5lIGluIHNlbGYuX2NvbmZpZy5nZXRpbmkoIm1hcmtlcnMiKToKKyAgICAgICAgICAg
ICAgICAgICAgIyBleGFtcGxlIGxpbmVzOiAic2tpcGlmKGNvbmRpdGlvbik6IHNraXAgdGhlIGdp
dmVuIHRlc3QgaWYuLi4iCisgICAgICAgICAgICAgICAgICAgICMgb3IgImh5cG90aGVzaXM6IHRl
c3RzIHdoaWNoIHVzZSBIeXBvdGhlc2lzIiwgc28gdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAg
ICAgICAjIG1hcmtlciBuYW1lIHdlIHNwbGl0IG9uIGJvdGggYDpgIGFuZCBgKGAuCisgICAgICAg
ICAgICAgICAgICAgIG1hcmtlciA9IGxpbmUuc3BsaXQoIjoiKVswXS5zcGxpdCgiKCIpWzBdLnN0
cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFya2Vycy5hZGQobWFya2VyKQorCisg
ICAgICAgICAgICAjIElmIHRoZSBuYW1lIGlzIG5vdCBpbiB0aGUgc2V0IG9mIGtub3duIG1hcmtz
IGFmdGVyIHVwZGF0aW5nLAorICAgICAgICAgICAgIyB0aGVuIGl0IHJlYWxseSBpcyB0aW1lIHRv
IGlzc3VlIGEgd2FybmluZyBvciBhbiBlcnJvci4KKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGlu
IHNlbGYuX21hcmtlcnM6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29uZmlnLm9wdGlvbi5z
dHJpY3RfbWFya2VyczoKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ7IXJ9IG5vdCBmb3VuZCBpbiBgbWFya2Vyc2AgY29uZmlndXJhdGlvbiBvcHRp
b24iLmZvcm1hdChuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICkKIAotICAgIGRlZiBfY2hlY2soc2VsZiwgbmFtZSk6Ci0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5fbWFya2VyczoKLSAgICAg
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAg
ICAgICAgcGFzcwotICAgICAgICBzZWxmLl9tYXJrZXJzID0gdmFsdWVzID0gc2V0KCkKLSAgICAg
ICAgZm9yIGxpbmUgaW4gc2VsZi5fY29uZmlnLmdldGluaSgibWFya2VycyIpOgotICAgICAgICAg
ICAgbWFya2VyID0gbGluZS5zcGxpdCgiOiIsIDEpWzBdCi0gICAgICAgICAgICBtYXJrZXIgPSBt
YXJrZXIucnN0cmlwKCkKLSAgICAgICAgICAgIHggPSBtYXJrZXIuc3BsaXQoIigiLCAxKVswXQot
ICAgICAgICAgICAgdmFsdWVzLmFkZCh4KQotICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9t
YXJrZXJzOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVyIG5vdCBhIHJlZ2lz
dGVyZWQgbWFya2VyIiAlIChuYW1lLCkpCisgICAgICAgICAgICAgICAgIyBSYWlzZSBhIHNwZWNp
ZmljIGVycm9yIGZvciBjb21tb24gbWlzc3BlbGxpbmdzIG9mICJwYXJhbWV0cml6ZSIuCisgICAg
ICAgICAgICAgICAgaWYgbmFtZSBpbiBbInBhcmFtZXRlcml6ZSIsICJwYXJhbWV0cmlzZSIsICJw
YXJhbWV0ZXJpc2UiXToKKyAgICAgICAgICAgICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBU
cnVlCisgICAgICAgICAgICAgICAgICAgIGZhaWwoIlVua25vd24gJ3t9JyBtYXJrLCBkaWQgeW91
IG1lYW4gJ3BhcmFtZXRyaXplJz8iLmZvcm1hdChuYW1lKSkKKworICAgICAgICAgICAgICAgIHdh
cm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICJVbmtub3duIHB5dGVzdC5tYXJrLiVz
IC0gaXMgdGhpcyBhIHR5cG8/ICBZb3UgY2FuIHJlZ2lzdGVyICIKKyAgICAgICAgICAgICAgICAg
ICAgImN1c3RvbSBtYXJrcyB0byBhdm9pZCB0aGlzIHdhcm5pbmcgLSBmb3IgZGV0YWlscywgc2Vl
ICIKKyAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJs
ZS9tYXJrLmh0bWwiICUgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgUHl0ZXN0VW5rbm93bk1h
cmtXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAyLAorICAgICAgICAgICAgICAgICkKIAor
ICAgICAgICByZXR1cm4gTWFya0RlY29yYXRvcihNYXJrKG5hbWUsICgpLCB7fSkpCiAKLU1BUktf
R0VOID0gTWFya0dlbmVyYXRvcigpCiAKK01BUktfR0VOID0gTWFya0dlbmVyYXRvcigpCiAKLWNs
YXNzIE5vZGVLZXl3b3JkcyhNYXBwaW5nTWl4aW4pOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5vZGUpOgorIyBUT0RPKHB5MzYpOiBpbmhlcml0IGZyb20gdHlwaW5nLk11dGFibGVNYXBwaW5n
W3N0ciwgQW55XS4KK0BmaW5hbAorY2xhc3MgTm9kZUtleXdvcmRzKGNvbGxlY3Rpb25zLmFiYy5N
dXRhYmxlTWFwcGluZyk6ICAjIHR5cGU6IGlnbm9yZVt0eXBlLWFyZ10KKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbm9kZTogIk5vZGUiKSAtPiBOb25lOgogICAgICAgICBzZWxmLm5vZGUgPSBub2Rl
CiAgICAgICAgIHNlbGYucGFyZW50ID0gbm9kZS5wYXJlbnQKICAgICAgICAgc2VsZi5fbWFya2Vy
cyA9IHtub2RlLm5hbWU6IFRydWV9CiAKLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToK
KyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBzdHIpIC0+IEFueToKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21hcmtlcnNba2V5XQogICAgICAgICBleGNlcHQg
S2V5RXJyb3I6CkBAIC0zNzUsNTQgKzU0MywyNCBAQCBjbGFzcyBOb2RlS2V5d29yZHMoTWFwcGlu
Z01peGluKToKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cGFyZW50LmtleXdvcmRzW2tleV0KIAotICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZh
bHVlKToKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBzdHIsIHZhbHVlOiBBbnkpIC0+
IE5vbmU6CiAgICAgICAgIHNlbGYuX21hcmtlcnNba2V5XSA9IHZhbHVlCiAKLSAgICBkZWYgX19k
ZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5OiBzdHIp
IC0+IE5vbmU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCBkZWxldGUga2V5IGlu
IGtleXdvcmRzIGRpY3QiKQogCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgIGRlZiBfX2l0
ZXJfXyhzZWxmKSAtPiBJdGVyYXRvcltzdHJdOgogICAgICAgICBzZWVuID0gc2VsZi5fc2Vlbigp
CiAgICAgICAgIHJldHVybiBpdGVyKHNlZW4pCiAKLSAgICBkZWYgX3NlZW4oc2VsZik6CisgICAg
ZGVmIF9zZWVuKHNlbGYpIC0+IFNldFtzdHJdOgogICAgICAgICBzZWVuID0gc2V0KHNlbGYuX21h
cmtlcnMpCiAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAg
c2Vlbi51cGRhdGUoc2VsZi5wYXJlbnQua2V5d29yZHMpCiAgICAgICAgIHJldHVybiBzZWVuCiAK
LSAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICBkZWYgX19sZW5fXyhzZWxmKSAtPiBpbnQ6CiAg
ICAgICAgIHJldHVybiBsZW4oc2VsZi5fc2VlbigpKQogCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYp
OgotICAgICAgICByZXR1cm4gIjxOb2RlS2V5d29yZHMgZm9yIG5vZGUgJXM+IiAlIChzZWxmLm5v
ZGUsKQotCi0KLUBhdHRyLnMoY21wPUZhbHNlLCBoYXNoPUZhbHNlKQotY2xhc3MgTm9kZU1hcmtl
cnMob2JqZWN0KToKLSAgICAiIiIKLSAgICBpbnRlcm5hbCBzdHJ1Y3V0cmUgZm9yIHN0b3Jpbmcg
bWFya3MgYmVsb25nb25nIHRvIGEgbm9kZQotCi0gICAgLi53YXJuaW5nOjoKLQotICAgICAgICB1
bnN0YWJsZSBhcGkKLQotICAgICIiIgotICAgIG93bl9tYXJrZXJzID0gYXR0ci5pYihkZWZhdWx0
PWF0dHIuRmFjdG9yeShsaXN0KSkKLQotICAgIGRlZiB1cGRhdGUoc2VsZiwgYWRkX21hcmtlcnMp
OgotICAgICAgICAiIiJ1cGRhdGUgdGhlIG93biBtYXJrZXJzCi0gICAgICAgICIiIgotICAgICAg
ICBzZWxmLm93bl9tYXJrZXJzLmV4dGVuZChhZGRfbWFya2VycykKLQotICAgIGRlZiBmaW5kKHNl
bGYsIG5hbWUpOgotICAgICAgICAiIiIKLSAgICAgICAgZmluZCBtYXJrZXJzIGluIG93biBub2Rl
cyBvciBwYXJlbnQgbm9kZXMKLSAgICAgICAgbmVlZHMgYSBiZXR0ZXIgcGxhY2UKLSAgICAgICAg
IiIiCi0gICAgICAgIGZvciBtYXJrIGluIHNlbGYub3duX21hcmtlcnM6Ci0gICAgICAgICAgICBp
ZiBtYXJrLm5hbWUgPT0gbmFtZToKLSAgICAgICAgICAgICAgICB5aWVsZCBtYXJrCi0KLSAgICBk
ZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBpdGVyKHNlbGYub3duX21hcmtlcnMp
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8Tm9kZUtl
eXdvcmRzIGZvciBub2RlIHt9PiIuZm9ybWF0KHNlbGYubm9kZSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9tYXJrL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzNjEwYzAxODYwNGQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9tYXJrL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L21hcmsvZXZhbHVhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9tYXJrL2xlZ2FjeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvc3RydWN0dXJl
cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbW9ua2V5cGF0Y2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tb25rZXlwYXRjaC5weQppbmRleCAxNjA4MGI1ZDVj
YjIuLmJiZDk2Nzc5ZGE1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbW9u
a2V5cGF0Y2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbW9ua2V5cGF0Y2gucHkK
QEAgLTEsNDMgKzEsNTggQEAKLSIiIiBtb25rZXlwYXRjaGluZyBhbmQgbW9ja2luZyBmdW5jdGlv
bmFsaXR5LiAgIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KKyIiIk1vbmtleXBhdGNoaW5nIGFuZCBtb2NraW5nIGZ1
bmN0aW9uYWxpdHkuIiIiCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCByZQoraW1wb3J0
IHN5cworaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5h
Z2VyCi0KLWltcG9ydCBzaXgKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGlt
cG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBv
cnQgTXV0YWJsZU1hcHBpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBp
bmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcg
aW1wb3J0IFVuaW9uCisKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBvdmVybG9hZAogZnJvbSBfcHl0ZXN0
LmZpeHR1cmVzIGltcG9ydCBmaXh0dXJlCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0
aAogCi1SRV9JTVBPUlRfRVJST1JfTkFNRSA9IHJlLmNvbXBpbGUoIl5ObyBtb2R1bGUgbmFtZWQg
KC4qKSQiKQorUkVfSU1QT1JUX0VSUk9SX05BTUUgPSByZS5jb21waWxlKHIiXk5vIG1vZHVsZSBu
YW1lZCAoLiopJCIpCisKKworSyA9IFR5cGVWYXIoIksiKQorViA9IFR5cGVWYXIoIlYiKQogCiAK
IEBmaXh0dXJlCi1kZWYgbW9ua2V5cGF0Y2goKToKLSAgICAiIiJUaGUgcmV0dXJuZWQgYGBtb25r
ZXlwYXRjaGBgIGZpeHR1cmUgcHJvdmlkZXMgdGhlc2UKLSAgICBoZWxwZXIgbWV0aG9kcyB0byBt
b2RpZnkgb2JqZWN0cywgZGljdGlvbmFyaWVzIG9yIG9zLmVudmlyb246OgorZGVmIG1vbmtleXBh
dGNoKCkgLT4gR2VuZXJhdG9yWyJNb25rZXlQYXRjaCIsIE5vbmUsIE5vbmVdOgorICAgICIiIkEg
Y29udmVuaWVudCBmaXh0dXJlIGZvciBtb25rZXktcGF0Y2hpbmcuCisKKyAgICBUaGUgZml4dHVy
ZSBwcm92aWRlcyB0aGVzZSBtZXRob2RzIHRvIG1vZGlmeSBvYmplY3RzLCBkaWN0aW9uYXJpZXMg
b3IKKyAgICBvcy5lbnZpcm9uOjoKIAogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9iaiwg
bmFtZSwgdmFsdWUsIHJhaXNpbmc9VHJ1ZSkKICAgICAgICAgbW9ua2V5cGF0Y2guZGVsYXR0cihv
YmosIG5hbWUsIHJhaXNpbmc9VHJ1ZSkKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShtYXBw
aW5nLCBuYW1lLCB2YWx1ZSkKICAgICAgICAgbW9ua2V5cGF0Y2guZGVsaXRlbShvYmosIG5hbWUs
IHJhaXNpbmc9VHJ1ZSkKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KG5hbWUsIHZhbHVlLCBw
cmVwZW5kPUZhbHNlKQotICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYobmFtZSwgdmFsdWUsIHJh
aXNpbmc9VHJ1ZSkKKyAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KG5hbWUsIHJhaXNpbmc9VHJ1
ZSkKICAgICAgICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5kKHBhdGgpCiAgICAgICAgIG1v
bmtleXBhdGNoLmNoZGlyKHBhdGgpCiAKLSAgICBBbGwgbW9kaWZpY2F0aW9ucyB3aWxsIGJlIHVu
ZG9uZSBhZnRlciB0aGUgcmVxdWVzdGluZwotICAgIHRlc3QgZnVuY3Rpb24gb3IgZml4dHVyZSBo
YXMgZmluaXNoZWQuIFRoZSBgYHJhaXNpbmdgYAotICAgIHBhcmFtZXRlciBkZXRlcm1pbmVzIGlm
IGEgS2V5RXJyb3Igb3IgQXR0cmlidXRlRXJyb3IKLSAgICB3aWxsIGJlIHJhaXNlZCBpZiB0aGUg
c2V0L2RlbGV0aW9uIG9wZXJhdGlvbiBoYXMgbm8gdGFyZ2V0LgorICAgIEFsbCBtb2RpZmljYXRp
b25zIHdpbGwgYmUgdW5kb25lIGFmdGVyIHRoZSByZXF1ZXN0aW5nIHRlc3QgZnVuY3Rpb24gb3IK
KyAgICBmaXh0dXJlIGhhcyBmaW5pc2hlZC4gVGhlIGBgcmFpc2luZ2BgIHBhcmFtZXRlciBkZXRl
cm1pbmVzIGlmIGEgS2V5RXJyb3IKKyAgICBvciBBdHRyaWJ1dGVFcnJvciB3aWxsIGJlIHJhaXNl
ZCBpZiB0aGUgc2V0L2RlbGV0aW9uIG9wZXJhdGlvbiBoYXMgbm8gdGFyZ2V0LgogICAgICIiIgog
ICAgIG1wYXRjaCA9IE1vbmtleVBhdGNoKCkKICAgICB5aWVsZCBtcGF0Y2gKICAgICBtcGF0Y2gu
dW5kbygpCiAKIAotZGVmIHJlc29sdmUobmFtZSk6Ci0gICAgIyBzaW1wbGlmaWVkIGZyb20gem9w
ZS5kb3R0ZWRuYW1lCitkZWYgcmVzb2x2ZShuYW1lOiBzdHIpIC0+IG9iamVjdDoKKyAgICAjIFNp
bXBsaWZpZWQgZnJvbSB6b3BlLmRvdHRlZG5hbWUuCiAgICAgcGFydHMgPSBuYW1lLnNwbGl0KCIu
IikKIAogICAgIHVzZWQgPSBwYXJ0cy5wb3AoMCkKQEAgLTUwLDM0ICs2NSwzNyBAQCBkZWYgcmVz
b2x2ZShuYW1lKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICMgd2UgdXNlIGV4cGxpY2l0IHVuLW5lc3Rpbmcgb2YgdGhlIGhh
bmRsaW5nIGJsb2NrIGluIG9yZGVyCi0gICAgICAgICMgdG8gYXZvaWQgbmVzdGVkIGV4Y2VwdGlv
bnMgb24gcHl0aG9uIDMKKyAgICAgICAgIyBXZSB1c2UgZXhwbGljaXQgdW4tbmVzdGluZyBvZiB0
aGUgaGFuZGxpbmcgYmxvY2sgaW4gb3JkZXIKKyAgICAgICAgIyB0byBhdm9pZCBuZXN0ZWQgZXhj
ZXB0aW9ucy4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX19pbXBvcnRfXyh1c2VkKQogICAg
ICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAjIHN0ciBpcyB1c2Vk
IGZvciBweTIgdnMgcHkzCiAgICAgICAgICAgICBleHBlY3RlZCA9IHN0cihleCkuc3BsaXQoKVst
MV0KICAgICAgICAgICAgIGlmIGV4cGVjdGVkID09IHVzZWQ6CiAgICAgICAgICAgICAgICAgcmFp
c2UKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3Io
ImltcG9ydCBlcnJvciBpbiAlczogJXMiICUgKHVzZWQsIGV4KSkKKyAgICAgICAgICAgICAgICBy
YWlzZSBJbXBvcnRFcnJvcigiaW1wb3J0IGVycm9yIGluIHt9OiB7fSIuZm9ybWF0KHVzZWQsIGV4
KSkgZnJvbSBleAogICAgICAgICBmb3VuZCA9IGFubm90YXRlZF9nZXRhdHRyKGZvdW5kLCBwYXJ0
LCB1c2VkKQogICAgIHJldHVybiBmb3VuZAogCiAKLWRlZiBhbm5vdGF0ZWRfZ2V0YXR0cihvYmos
IG5hbWUsIGFubik6CitkZWYgYW5ub3RhdGVkX2dldGF0dHIob2JqOiBvYmplY3QsIG5hbWU6IHN0
ciwgYW5uOiBzdHIpIC0+IG9iamVjdDoKICAgICB0cnk6CiAgICAgICAgIG9iaiA9IGdldGF0dHIo
b2JqLCBuYW1lKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICBleGNlcHQgQXR0cmli
dXRlRXJyb3IgYXMgZToKICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCi0gICAgICAgICAg
ICAiJXIgb2JqZWN0IGF0ICVzIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKHR5cGUob2JqKS5fX25h
bWVfXywgYW5uLCBuYW1lKQotICAgICAgICApCisgICAgICAgICAgICAieyFyfSBvYmplY3QgYXQg
e30gaGFzIG5vIGF0dHJpYnV0ZSB7IXJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgdHlwZShv
YmopLl9fbmFtZV9fLCBhbm4sIG5hbWUKKyAgICAgICAgICAgICkKKyAgICAgICAgKSBmcm9tIGUK
ICAgICByZXR1cm4gb2JqCiAKIAotZGVmIGRlcml2ZV9pbXBvcnRwYXRoKGltcG9ydF9wYXRoLCBy
YWlzaW5nKToKLSAgICBpZiBub3QgaXNpbnN0YW5jZShpbXBvcnRfcGF0aCwgc2l4LnN0cmluZ190
eXBlcykgb3IgIi4iIG5vdCBpbiBpbXBvcnRfcGF0aDoKLSAgICAgICAgcmFpc2UgVHlwZUVycm9y
KCJtdXN0IGJlIGFic29sdXRlIGltcG9ydCBwYXRoIHN0cmluZywgbm90ICVyIiAlIChpbXBvcnRf
cGF0aCwpKQorZGVmIGRlcml2ZV9pbXBvcnRwYXRoKGltcG9ydF9wYXRoOiBzdHIsIHJhaXNpbmc6
IGJvb2wpIC0+IFR1cGxlW3N0ciwgb2JqZWN0XToKKyAgICBpZiBub3QgaXNpbnN0YW5jZShpbXBv
cnRfcGF0aCwgc3RyKSBvciAiLiIgbm90IGluIGltcG9ydF9wYXRoOiAgIyB0eXBlOiBpZ25vcmVb
dW5yZWFjaGFibGVdCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICJtdXN0
IGJlIGFic29sdXRlIGltcG9ydCBwYXRoIHN0cmluZywgbm90IHshcn0iLmZvcm1hdChpbXBvcnRf
cGF0aCkKKyAgICAgICAgKQogICAgIG1vZHVsZSwgYXR0ciA9IGltcG9ydF9wYXRoLnJzcGxpdCgi
LiIsIDEpCiAgICAgdGFyZ2V0ID0gcmVzb2x2ZShtb2R1bGUpCiAgICAgaWYgcmFpc2luZzoKQEAg
LTg1LDM0ICsxMDMsMzkgQEAgZGVmIGRlcml2ZV9pbXBvcnRwYXRoKGltcG9ydF9wYXRoLCByYWlz
aW5nKToKICAgICByZXR1cm4gYXR0ciwgdGFyZ2V0CiAKIAotY2xhc3MgTm90c2V0KG9iamVjdCk6
Ci0KLSAgICBkZWYgX19yZXByX18oc2VsZik6CitjbGFzcyBOb3RzZXQ6CisgICAgZGVmIF9fcmVw
cl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICAgcmV0dXJuICI8bm90c2V0PiIKIAogCiBub3RzZXQg
PSBOb3RzZXQoKQogCiAKLWNsYXNzIE1vbmtleVBhdGNoKG9iamVjdCk6Ci0gICAgIiIiIE9iamVj
dCByZXR1cm5lZCBieSB0aGUgYGBtb25rZXlwYXRjaGBgIGZpeHR1cmUga2VlcGluZyBhIHJlY29y
ZCBvZiBzZXRhdHRyL2l0ZW0vZW52L3N5c3BhdGggY2hhbmdlcy4KLSAgICAiIiIKK0BmaW5hbAor
Y2xhc3MgTW9ua2V5UGF0Y2g6CisgICAgIiIiT2JqZWN0IHJldHVybmVkIGJ5IHRoZSBgYG1vbmtl
eXBhdGNoYGAgZml4dHVyZSBrZWVwaW5nIGEgcmVjb3JkIG9mCisgICAgc2V0YXR0ci9pdGVtL2Vu
di9zeXNwYXRoIGNoYW5nZXMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
IHNlbGYuX3NldGF0dHIgPSBbXQotICAgICAgICBzZWxmLl9zZXRpdGVtID0gW10KLSAgICAgICAg
c2VsZi5fY3dkID0gTm9uZQotICAgICAgICBzZWxmLl9zYXZlc3lzcGF0aCA9IE5vbmUKKyAgICBk
ZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fc2V0YXR0ciA9IFtdICAj
IHR5cGU6IExpc3RbVHVwbGVbb2JqZWN0LCBzdHIsIG9iamVjdF1dCisgICAgICAgIHNlbGYuX3Nl
dGl0ZW0gPSAoCisgICAgICAgICAgICBbXQorICAgICAgICApICAjIHR5cGU6IExpc3RbVHVwbGVb
TXV0YWJsZU1hcHBpbmdbQW55LCBBbnldLCBvYmplY3QsIG9iamVjdF1dCisgICAgICAgIHNlbGYu
X2N3ZCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbc3RyXQorICAgICAgICBzZWxmLl9zYXZlc3lz
cGF0aCA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbTGlzdFtzdHJdXQogCiAgICAgQGNvbnRleHRt
YW5hZ2VyCi0gICAgZGVmIGNvbnRleHQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBDb250
ZXh0IG1hbmFnZXIgdGhhdCByZXR1cm5zIGEgbmV3IDpjbGFzczpgTW9ua2V5UGF0Y2hgIG9iamVj
dCB3aGljaAotICAgICAgICB1bmRvZXMgYW55IHBhdGNoaW5nIGRvbmUgaW5zaWRlIHRoZSBgYHdp
dGhgYCBibG9jayB1cG9uIGV4aXQ6CisgICAgZGVmIGNvbnRleHQoc2VsZikgLT4gR2VuZXJhdG9y
WyJNb25rZXlQYXRjaCIsIE5vbmUsIE5vbmVdOgorICAgICAgICAiIiJDb250ZXh0IG1hbmFnZXIg
dGhhdCByZXR1cm5zIGEgbmV3IDpjbGFzczpgTW9ua2V5UGF0Y2hgIG9iamVjdAorICAgICAgICB3
aGljaCB1bmRvZXMgYW55IHBhdGNoaW5nIGRvbmUgaW5zaWRlIHRoZSBgYHdpdGhgYCBibG9jayB1
cG9uIGV4aXQuCisKKyAgICAgICAgRXhhbXBsZToKIAogICAgICAgICAuLiBjb2RlLWJsb2NrOjog
cHl0aG9uCiAKICAgICAgICAgICAgIGltcG9ydCBmdW5jdG9vbHMKKworCiAgICAgICAgICAgICBk
ZWYgdGVzdF9wYXJ0aWFsKG1vbmtleXBhdGNoKToKICAgICAgICAgICAgICAgICB3aXRoIG1vbmtl
eXBhdGNoLmNvbnRleHQoKSBhcyBtOgogICAgICAgICAgICAgICAgICAgICBtLnNldGF0dHIoZnVu
Y3Rvb2xzLCAicGFydGlhbCIsIDMpCkBAIC0xMjcsMjUgKzE1MCw0MSBAQCBjbGFzcyBNb25rZXlQ
YXRjaChvYmplY3QpOgogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbS51bmRvKCkKIAot
ICAgIGRlZiBzZXRhdHRyKHNlbGYsIHRhcmdldCwgbmFtZSwgdmFsdWU9bm90c2V0LCByYWlzaW5n
PVRydWUpOgotICAgICAgICAiIiIgU2V0IGF0dHJpYnV0ZSB2YWx1ZSBvbiB0YXJnZXQsIG1lbW9y
aXppbmcgdGhlIG9sZCB2YWx1ZS4KLSAgICAgICAgQnkgZGVmYXVsdCByYWlzZSBBdHRyaWJ1dGVF
cnJvciBpZiB0aGUgYXR0cmlidXRlIGRpZCBub3QgZXhpc3QuCisgICAgQG92ZXJsb2FkCisgICAg
ZGVmIHNldGF0dHIoCisgICAgICAgIHNlbGYsIHRhcmdldDogc3RyLCBuYW1lOiBvYmplY3QsIHZh
bHVlOiBOb3RzZXQgPSAuLi4sIHJhaXNpbmc6IGJvb2wgPSAuLi4sCisgICAgKSAtPiBOb25lOgor
ICAgICAgICAuLi4KKworICAgIEBvdmVybG9hZCAgIyBub3FhOiBGODExCisgICAgZGVmIHNldGF0
dHIoICAjIG5vcWE6IEY4MTEKKyAgICAgICAgc2VsZiwgdGFyZ2V0OiBvYmplY3QsIG5hbWU6IHN0
ciwgdmFsdWU6IG9iamVjdCwgcmFpc2luZzogYm9vbCA9IC4uLiwKKyAgICApIC0+IE5vbmU6Cisg
ICAgICAgIC4uLgorCisgICAgZGVmIHNldGF0dHIoICAjIG5vcWE6IEY4MTEKKyAgICAgICAgc2Vs
ZiwKKyAgICAgICAgdGFyZ2V0OiBVbmlvbltzdHIsIG9iamVjdF0sCisgICAgICAgIG5hbWU6IFVu
aW9uW29iamVjdCwgc3RyXSwKKyAgICAgICAgdmFsdWU6IG9iamVjdCA9IG5vdHNldCwKKyAgICAg
ICAgcmFpc2luZzogYm9vbCA9IFRydWUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJTZXQg
YXR0cmlidXRlIHZhbHVlIG9uIHRhcmdldCwgbWVtb3JpemluZyB0aGUgb2xkIHZhbHVlLgogCiAg
ICAgICAgIEZvciBjb252ZW5pZW5jZSB5b3UgY2FuIHNwZWNpZnkgYSBzdHJpbmcgYXMgYGB0YXJn
ZXRgYCB3aGljaAogICAgICAgICB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgZG90dGVkIGltcG9y
dCBwYXRoLCB3aXRoIHRoZSBsYXN0IHBhcnQKLSAgICAgICAgYmVpbmcgdGhlIGF0dHJpYnV0ZSBu
YW1lLiAgRXhhbXBsZToKKyAgICAgICAgYmVpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lLiBGb3IgZXhh
bXBsZSwKICAgICAgICAgYGBtb25rZXlwYXRjaC5zZXRhdHRyKCJvcy5nZXRjd2QiLCBsYW1iZGE6
ICIvIilgYAogICAgICAgICB3b3VsZCBzZXQgdGhlIGBgZ2V0Y3dkYGAgZnVuY3Rpb24gb2YgdGhl
IGBgb3NgYCBtb2R1bGUuCiAKLSAgICAgICAgVGhlIGBgcmFpc2luZ2BgIHZhbHVlIGRldGVybWlu
ZXMgaWYgdGhlIHNldGF0dHIgc2hvdWxkIGZhaWwKLSAgICAgICAgaWYgdGhlIGF0dHJpYnV0ZSBp
cyBub3QgYWxyZWFkeSBwcmVzZW50IChkZWZhdWx0cyB0byBUcnVlCi0gICAgICAgIHdoaWNoIG1l
YW5zIGl0IHdpbGwgcmFpc2UpLgorICAgICAgICBSYWlzZXMgQXR0cmlidXRlRXJyb3IgaWYgdGhl
IGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgdW5sZXNzCisgICAgICAgIGBgcmFpc2luZ2BgIGlz
IHNldCB0byBGYWxzZS4KICAgICAgICAgIiIiCiAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0g
VHJ1ZQogICAgICAgICBpbXBvcnQgaW5zcGVjdAogCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdHNl
dDoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgc2l4LnN0cmluZ190eXBl
cyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIE5vdHNldCk6CisgICAgICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIHN0cik6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAidXNlIHNldGF0dHIodGFyZ2V0LCBuYW1lLCB2
YWx1ZSkgb3IgIgogICAgICAgICAgICAgICAgICAgICAic2V0YXR0cih0YXJnZXQsIHZhbHVlKSB3
aXRoIHRhcmdldCBiZWluZyBhIGRvdHRlZCAiCkBAIC0xNTMsMTAgKzE5MiwxNyBAQCBjbGFzcyBN
b25rZXlQYXRjaChvYmplY3QpOgogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgIHZhbHVl
ID0gbmFtZQogICAgICAgICAgICAgbmFtZSwgdGFyZ2V0ID0gZGVyaXZlX2ltcG9ydHBhdGgodGFy
Z2V0LCByYWlzaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2UobmFtZSwgc3RyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAg
ICAgICAgICAgICAgICJ1c2Ugc2V0YXR0cih0YXJnZXQsIG5hbWUsIHZhbHVlKSB3aXRoIG5hbWUg
YmVpbmcgYSBzdHJpbmcgb3IgIgorICAgICAgICAgICAgICAgICAgICAic2V0YXR0cih0YXJnZXQs
IHZhbHVlKSB3aXRoIHRhcmdldCBiZWluZyBhIGRvdHRlZCAiCisgICAgICAgICAgICAgICAgICAg
ICJpbXBvcnQgc3RyaW5nIgorICAgICAgICAgICAgICAgICkKIAogICAgICAgICBvbGR2YWwgPSBn
ZXRhdHRyKHRhcmdldCwgbmFtZSwgbm90c2V0KQogICAgICAgICBpZiByYWlzaW5nIGFuZCBvbGR2
YWwgaXMgbm90c2V0OgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVyIGhhcyBu
byBhdHRyaWJ1dGUgJXIiICUgKHRhcmdldCwgbmFtZSkpCisgICAgICAgICAgICByYWlzZSBBdHRy
aWJ1dGVFcnJvcigieyFyfSBoYXMgbm8gYXR0cmlidXRlIHshcn0iLmZvcm1hdCh0YXJnZXQsIG5h
bWUpKQogCiAgICAgICAgICMgYXZvaWQgY2xhc3MgZGVzY3JpcHRvcnMgbGlrZSBzdGF0aWNtZXRo
b2QvY2xhc3NtZXRob2QKICAgICAgICAgaWYgaW5zcGVjdC5pc2NsYXNzKHRhcmdldCk6CkBAIC0x
NjQsMjAgKzIxMCwyNiBAQCBjbGFzcyBNb25rZXlQYXRjaChvYmplY3QpOgogICAgICAgICBzZWxm
Ll9zZXRhdHRyLmFwcGVuZCgodGFyZ2V0LCBuYW1lLCBvbGR2YWwpKQogICAgICAgICBzZXRhdHRy
KHRhcmdldCwgbmFtZSwgdmFsdWUpCiAKLSAgICBkZWYgZGVsYXR0cihzZWxmLCB0YXJnZXQsIG5h
bWU9bm90c2V0LCByYWlzaW5nPVRydWUpOgotICAgICAgICAiIiIgRGVsZXRlIGF0dHJpYnV0ZSBg
YG5hbWVgYCBmcm9tIGBgdGFyZ2V0YGAsIGJ5IGRlZmF1bHQgcmFpc2UKLSAgICAgICAgQXR0cmli
dXRlRXJyb3IgaXQgdGhlIGF0dHJpYnV0ZSBkaWQgbm90IHByZXZpb3VzbHkgZXhpc3QuCisgICAg
ZGVmIGRlbGF0dHIoCisgICAgICAgIHNlbGYsCisgICAgICAgIHRhcmdldDogVW5pb25bb2JqZWN0
LCBzdHJdLAorICAgICAgICBuYW1lOiBVbmlvbltzdHIsIE5vdHNldF0gPSBub3RzZXQsCisgICAg
ICAgIHJhaXNpbmc6IGJvb2wgPSBUcnVlLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiRGVs
ZXRlIGF0dHJpYnV0ZSBgYG5hbWVgYCBmcm9tIGBgdGFyZ2V0YGAuCiAKICAgICAgICAgSWYgbm8g
YGBuYW1lYGAgaXMgc3BlY2lmaWVkIGFuZCBgYHRhcmdldGBgIGlzIGEgc3RyaW5nCiAgICAgICAg
IGl0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSBkb3R0ZWQgaW1wb3J0IHBhdGggd2l0aCB0aGUK
ICAgICAgICAgbGFzdCBwYXJ0IGJlaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZS4KIAotICAgICAgICBJ
ZiBgYHJhaXNpbmdgYCBpcyBzZXQgdG8gRmFsc2UsIG5vIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNl
ZCBpZiB0aGUKLSAgICAgICAgYXR0cmlidXRlIGlzIG1pc3NpbmcuCisgICAgICAgIFJhaXNlcyBB
dHRyaWJ1dGVFcnJvciBpdCB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCB1bmxlc3MKKyAg
ICAgICAgYGByYWlzaW5nYGAgaXMgc2V0IHRvIEZhbHNlLgogICAgICAgICAiIiIKICAgICAgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIGlmIG5hbWUgaXMgbm90c2V0OgotICAg
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBzaXguc3RyaW5nX3R5cGVzKToKKyAg
ICAgICAgaW1wb3J0IGluc3BlY3QKKworICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIE5vdHNl
dCk6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIHN0cik6CiAgICAgICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAidXNlIGRlbGF0
dHIodGFyZ2V0LCBuYW1lKSBvciAiCiAgICAgICAgICAgICAgICAgICAgICJkZWxhdHRyKHRhcmdl
dCkgd2l0aCB0YXJnZXQgYmVpbmcgYSBkb3R0ZWQgIgpAQCAtMTg5LDE5ICsyNDEsMjMgQEAgY2xh
c3MgTW9ua2V5UGF0Y2gob2JqZWN0KToKICAgICAgICAgICAgIGlmIHJhaXNpbmc6CiAgICAgICAg
ICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX3NldGF0dHIuYXBwZW5kKCh0YXJnZXQsIG5hbWUsIGdldGF0dHIodGFyZ2V0
LCBuYW1lLCBub3RzZXQpKSkKKyAgICAgICAgICAgIG9sZHZhbCA9IGdldGF0dHIodGFyZ2V0LCBu
YW1lLCBub3RzZXQpCisgICAgICAgICAgICAjIEF2b2lkIGNsYXNzIGRlc2NyaXB0b3JzIGxpa2Ug
c3RhdGljbWV0aG9kL2NsYXNzbWV0aG9kLgorICAgICAgICAgICAgaWYgaW5zcGVjdC5pc2NsYXNz
KHRhcmdldCk6CisgICAgICAgICAgICAgICAgb2xkdmFsID0gdGFyZ2V0Ll9fZGljdF9fLmdldChu
YW1lLCBub3RzZXQpCisgICAgICAgICAgICBzZWxmLl9zZXRhdHRyLmFwcGVuZCgodGFyZ2V0LCBu
YW1lLCBvbGR2YWwpKQogICAgICAgICAgICAgZGVsYXR0cih0YXJnZXQsIG5hbWUpCiAKLSAgICBk
ZWYgc2V0aXRlbShzZWxmLCBkaWMsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgIiIiIFNldCBkaWN0
aW9uYXJ5IGVudHJ5IGBgbmFtZWBgIHRvIHZhbHVlLiAiIiIKKyAgICBkZWYgc2V0aXRlbShzZWxm
LCBkaWM6IE11dGFibGVNYXBwaW5nW0ssIFZdLCBuYW1lOiBLLCB2YWx1ZTogVikgLT4gTm9uZToK
KyAgICAgICAgIiIiU2V0IGRpY3Rpb25hcnkgZW50cnkgYGBuYW1lYGAgdG8gdmFsdWUuIiIiCiAg
ICAgICAgIHNlbGYuX3NldGl0ZW0uYXBwZW5kKChkaWMsIG5hbWUsIGRpYy5nZXQobmFtZSwgbm90
c2V0KSkpCiAgICAgICAgIGRpY1tuYW1lXSA9IHZhbHVlCiAKLSAgICBkZWYgZGVsaXRlbShzZWxm
LCBkaWMsIG5hbWUsIHJhaXNpbmc9VHJ1ZSk6Ci0gICAgICAgICIiIiBEZWxldGUgYGBuYW1lYGAg
ZnJvbSBkaWN0LiBSYWlzZSBLZXlFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LgorICAgIGRlZiBk
ZWxpdGVtKHNlbGYsIGRpYzogTXV0YWJsZU1hcHBpbmdbSywgVl0sIG5hbWU6IEssIHJhaXNpbmc6
IGJvb2wgPSBUcnVlKSAtPiBOb25lOgorICAgICAgICAiIiJEZWxldGUgYGBuYW1lYGAgZnJvbSBk
aWN0LgogCi0gICAgICAgIElmIGBgcmFpc2luZ2BgIGlzIHNldCB0byBGYWxzZSwgbm8gZXhjZXB0
aW9uIHdpbGwgYmUgcmFpc2VkIGlmIHRoZQotICAgICAgICBrZXkgaXMgbWlzc2luZy4KKyAgICAg
ICAgUmFpc2VzIGBgS2V5RXJyb3JgYCBpZiBpdCBkb2Vzbid0IGV4aXN0LCB1bmxlc3MgYGByYWlz
aW5nYGAgaXMgc2V0IHRvCisgICAgICAgIEZhbHNlLgogICAgICAgICAiIiIKICAgICAgICAgaWYg
bmFtZSBub3QgaW4gZGljOgogICAgICAgICAgICAgaWYgcmFpc2luZzoKQEAgLTIxMCw0NSArMjY2
LDc5IEBAIGNsYXNzIE1vbmtleVBhdGNoKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9zZXRp
dGVtLmFwcGVuZCgoZGljLCBuYW1lLCBkaWMuZ2V0KG5hbWUsIG5vdHNldCkpKQogICAgICAgICAg
ICAgZGVsIGRpY1tuYW1lXQogCi0gICAgZGVmIHNldGVudihzZWxmLCBuYW1lLCB2YWx1ZSwgcHJl
cGVuZD1Ob25lKToKLSAgICAgICAgIiIiIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYG5hbWVg
YCB0byBgYHZhbHVlYGAuICBJZiBgYHByZXBlbmRgYAotICAgICAgICBpcyBhIGNoYXJhY3Rlciwg
cmVhZCB0aGUgY3VycmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZQotICAgICAgICBhbmQg
cHJlcGVuZCB0aGUgYGB2YWx1ZWBgIGFkam9pbmVkIHdpdGggdGhlIGBgcHJlcGVuZGBgIGNoYXJh
Y3Rlci4iIiIKLSAgICAgICAgdmFsdWUgPSBzdHIodmFsdWUpCisgICAgZGVmIHNldGVudihzZWxm
LCBuYW1lOiBzdHIsIHZhbHVlOiBzdHIsIHByZXBlbmQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lKSAt
PiBOb25lOgorICAgICAgICAiIiJTZXQgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBuYW1lYGAgdG8g
YGB2YWx1ZWBgLgorCisgICAgICAgIElmIGBgcHJlcGVuZGBgIGlzIGEgY2hhcmFjdGVyLCByZWFk
IHRoZSBjdXJyZW50IGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgIHZhbHVlIGFuZCBwcmVw
ZW5kIHRoZSBgYHZhbHVlYGAgYWRqb2luZWQgd2l0aCB0aGUgYGBwcmVwZW5kYGAKKyAgICAgICAg
Y2hhcmFjdGVyLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUs
IHN0cik6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCAgIyB0eXBlOiBpZ25vcmVbdW5yZWFj
aGFibGVdCisgICAgICAgICAgICAgICAgcHl0ZXN0LlB5dGVzdFdhcm5pbmcoCisgICAgICAgICAg
ICAgICAgICAgICJWYWx1ZSBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSB7bmFtZX0gdHlwZSBzaG91
bGQgYmUgc3RyLCBidXQgZ290ICIKKyAgICAgICAgICAgICAgICAgICAgInt2YWx1ZSFyfSAodHlw
ZToge3R5cGV9KTsgY29udmVydGVkIHRvIHN0ciBpbXBsaWNpdGx5Ii5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lPW5hbWUsIHZhbHVlPXZhbHVlLCB0eXBlPXR5cGUodmFsdWUp
Ll9fbmFtZV9fCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHZh
bHVlID0gc3RyKHZhbHVlKQogICAgICAgICBpZiBwcmVwZW5kIGFuZCBuYW1lIGluIG9zLmVudmly
b246CiAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgcHJlcGVuZCArIG9zLmVudmlyb25bbmFt
ZV0KICAgICAgICAgc2VsZi5zZXRpdGVtKG9zLmVudmlyb24sIG5hbWUsIHZhbHVlKQogCi0gICAg
ZGVmIGRlbGVudihzZWxmLCBuYW1lLCByYWlzaW5nPVRydWUpOgotICAgICAgICAiIiIgRGVsZXRl
IGBgbmFtZWBgIGZyb20gdGhlIGVudmlyb25tZW50LiBSYWlzZSBLZXlFcnJvciBpdCBkb2VzIG5v
dAotICAgICAgICBleGlzdC4KKyAgICBkZWYgZGVsZW52KHNlbGYsIG5hbWU6IHN0ciwgcmFpc2lu
ZzogYm9vbCA9IFRydWUpIC0+IE5vbmU6CisgICAgICAgICIiIkRlbGV0ZSBgYG5hbWVgYCBmcm9t
IHRoZSBlbnZpcm9ubWVudC4KIAotICAgICAgICBJZiBgYHJhaXNpbmdgYCBpcyBzZXQgdG8gRmFs
c2UsIG5vIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0aGUKLSAgICAgICAgZW52aXJvbm1l
bnQgdmFyaWFibGUgaXMgbWlzc2luZy4KKyAgICAgICAgUmFpc2VzIGBgS2V5RXJyb3JgYCBpZiBp
dCBkb2VzIG5vdCBleGlzdCwgdW5sZXNzIGBgcmFpc2luZ2BgIGlzIHNldCB0bworICAgICAgICBG
YWxzZS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZGVsaXRlbShvcy5lbnZpcm9uLCBuYW1l
LCByYWlzaW5nPXJhaXNpbmcpCisgICAgICAgIGVudmlyb24gPSBvcy5lbnZpcm9uICAjIHR5cGU6
IE11dGFibGVNYXBwaW5nW3N0ciwgc3RyXQorICAgICAgICBzZWxmLmRlbGl0ZW0oZW52aXJvbiwg
bmFtZSwgcmFpc2luZz1yYWlzaW5nKQorCisgICAgZGVmIHN5c3BhdGhfcHJlcGVuZChzZWxmLCBw
YXRoKSAtPiBOb25lOgorICAgICAgICAiIiJQcmVwZW5kIGBgcGF0aGBgIHRvIGBgc3lzLnBhdGhg
YCBsaXN0IG9mIGltcG9ydCBsb2NhdGlvbnMuIiIiCisgICAgICAgIGZyb20gcGtnX3Jlc291cmNl
cyBpbXBvcnQgZml4dXBfbmFtZXNwYWNlX3BhY2thZ2VzCiAKLSAgICBkZWYgc3lzcGF0aF9wcmVw
ZW5kKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiIgUHJlcGVuZCBgYHBhdGhgYCB0byBgYHN5cy5w
YXRoYGAgbGlzdCBvZiBpbXBvcnQgbG9jYXRpb25zLiAiIiIKICAgICAgICAgaWYgc2VsZi5fc2F2
ZXN5c3BhdGggaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3NhdmVzeXNwYXRoID0gc3lzLnBh
dGhbOl0KICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHN0cihwYXRoKSkKIAotICAgIGRlZiBj
aGRpcihzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5n
IGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguCisgICAgICAgICMgaHR0cHM6Ly9naXRo
dWIuY29tL3B5cGEvc2V0dXB0b29scy9ibG9iL2Q4YjkwMWJjL2RvY3MvcGtnX3Jlc291cmNlcy50
eHQjTDE2Mi1MMTcxCisgICAgICAgIGZpeHVwX25hbWVzcGFjZV9wYWNrYWdlcyhzdHIocGF0aCkp
CisKKyAgICAgICAgIyBBIGNhbGwgdG8gc3lzcGF0aGluc2VydCgpIHVzdWFsbHkgbWVhbnMgdGhh
dCB0aGUgY2FsbGVyIHdhbnRzIHRvCisgICAgICAgICMgaW1wb3J0IHNvbWUgZHluYW1pY2FsbHkg
Y3JlYXRlZCBmaWxlcywgdGh1cyB3aXRoIHB5dGhvbjMgd2UKKyAgICAgICAgIyBpbnZhbGlkYXRl
IGl0cyBpbXBvcnQgY2FjaGVzLgorICAgICAgICAjIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRh
bnQgd2hlbiBhbnkgbmFtZXNwYWNlIHBhY2thZ2UgaXMgaW4gdXNlLAorICAgICAgICAjIHNpbmNl
IHRoZW4gdGhlIG10aW1lIGJhc2VkIEZpbGVGaW5kZXIgY2FjaGUgKHRoYXQgZ2V0cyBjcmVhdGVk
IGluCisgICAgICAgICMgdGhpcyBjYXNlIGFscmVhZHkpIGdldHMgbm90IGludmFsaWRhdGVkIHdo
ZW4gd3JpdGluZyB0aGUgbmV3IGZpbGVzCisgICAgICAgICMgcXVpY2tseSBhZnRlcndhcmRzLgor
ICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW52YWxpZGF0ZV9jYWNoZXMKKworICAgICAg
ICBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICBkZWYgY2hkaXIoc2VsZiwgcGF0aCkgLT4gTm9u
ZToKKyAgICAgICAgIiIiQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRo
ZSBzcGVjaWZpZWQgcGF0aC4KKwogICAgICAgICBQYXRoIGNhbiBiZSBhIHN0cmluZyBvciBhIHB5
LnBhdGgubG9jYWwgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fY3dkIGlz
IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9jd2QgPSBvcy5nZXRjd2QoKQogICAgICAgICBpZiBo
YXNhdHRyKHBhdGgsICJjaGRpciIpOgogICAgICAgICAgICAgcGF0aC5jaGRpcigpCisgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShwYXRoLCBQYXRoKToKKyAgICAgICAgICAgICMgTW9kZXJuIHB5dGhv
biB1c2VzIHRoZSBmc3BhdGggcHJvdG9jb2wgaGVyZSBMRUdBQ1kKKyAgICAgICAgICAgIG9zLmNo
ZGlyKHN0cihwYXRoKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLmNoZGlyKHBhdGgp
CiAKLSAgICBkZWYgdW5kbyhzZWxmKToKLSAgICAgICAgIiIiIFVuZG8gcHJldmlvdXMgY2hhbmdl
cy4gIFRoaXMgY2FsbCBjb25zdW1lcyB0aGUKLSAgICAgICAgdW5kbyBzdGFjay4gQ2FsbGluZyBp
dCBhIHNlY29uZCB0aW1lIGhhcyBubyBlZmZlY3QgdW5sZXNzCi0gICAgICAgIHlvdSBkbyBtb3Jl
IG1vbmtleXBhdGNoaW5nIGFmdGVyIHRoZSB1bmRvIGNhbGwuCisgICAgZGVmIHVuZG8oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIiIiVW5kbyBwcmV2aW91cyBjaGFuZ2VzLgorCisgICAgICAgIFRo
aXMgY2FsbCBjb25zdW1lcyB0aGUgdW5kbyBzdGFjay4gQ2FsbGluZyBpdCBhIHNlY29uZCB0aW1l
IGhhcyBubworICAgICAgICBlZmZlY3QgdW5sZXNzIHlvdSBkbyBtb3JlIG1vbmtleXBhdGNoaW5n
IGFmdGVyIHRoZSB1bmRvIGNhbGwuCiAKICAgICAgICAgVGhlcmUgaXMgZ2VuZXJhbGx5IG5vIG5l
ZWQgdG8gY2FsbCBgdW5kbygpYCwgc2luY2UgaXQgaXMKICAgICAgICAgY2FsbGVkIGF1dG9tYXRp
Y2FsbHkgZHVyaW5nIHRlYXItZG93bi4KQEAgLTI2NSwxNCArMzU1LDE0IEBAIGNsYXNzIE1vbmtl
eVBhdGNoKG9iamVjdCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRlbGF0
dHIob2JqLCBuYW1lKQogICAgICAgICBzZWxmLl9zZXRhdHRyWzpdID0gW10KLSAgICAgICAgZm9y
IGRpY3Rpb25hcnksIG5hbWUsIHZhbHVlIGluIHJldmVyc2VkKHNlbGYuX3NldGl0ZW0pOgorICAg
ICAgICBmb3IgZGljdGlvbmFyeSwga2V5LCB2YWx1ZSBpbiByZXZlcnNlZChzZWxmLl9zZXRpdGVt
KToKICAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdHNldDoKICAgICAgICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBkaWN0aW9uYXJ5W25hbWVdCisgICAgICAgICAgICAg
ICAgICAgIGRlbCBkaWN0aW9uYXJ5W2tleV0KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJy
b3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MgICMgd2FzIGFscmVhZHkgZGVsZXRlZCwgc28g
d2UgaGF2ZSB0aGUgZGVzaXJlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICBwYXNzICAjIFdh
cyBhbHJlYWR5IGRlbGV0ZWQsIHNvIHdlIGhhdmUgdGhlIGRlc2lyZWQgc3RhdGUuCiAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlbbmFtZV0gPSB2YWx1ZQorICAg
ICAgICAgICAgICAgIGRpY3Rpb25hcnlba2V5XSA9IHZhbHVlCiAgICAgICAgIHNlbGYuX3NldGl0
ZW1bOl0gPSBbXQogICAgICAgICBpZiBzZWxmLl9zYXZlc3lzcGF0aCBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5fc2F2ZXN5c3BhdGgKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L25vZGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
bm9kZXMucHkKaW5kZXggZWY3NGM1M2ViYTRlLi4zNjY1ZDhkNWVmNGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L25vZGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L25vZGVzLnB5CkBAIC0xLDMyNSArMSw0OTAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBvcworaW1w
b3J0IHdhcm5pbmdzCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgbHJ1X2NhY2hlCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGlt
cG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9y
dCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBP
cHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxl
Citmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAK
LWltcG9ydCBzaXgKIGltcG9ydCBweQotaW1wb3J0IGF0dHIKIAotaW1wb3J0IF9weXRlc3QKIGlt
cG9ydCBfcHl0ZXN0Ll9jb2RlCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGdldGZzbGluZW5v
Citmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0
ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBp
bXBvcnQgY2FjaGVkX3Byb3BlcnR5Citmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBvdmVybG9h
ZAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORworZnJvbSBfcHl0ZXN0
LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25mdGVz
dEltcG9ydEZhaWx1cmUKK2Zyb20gX3B5dGVzdC5kZXByZWNhdGVkIGltcG9ydCBGU0NPTExFQ1RP
Ul9HRVRIT09LUFJPWFlfSVNJTklUUEFUSAorZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBG
aXh0dXJlRGVmCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZpeHR1cmVMb29rdXBFcnJv
cgorZnJvbSBfcHl0ZXN0Lm1hcmsuc3RydWN0dXJlcyBpbXBvcnQgTWFyaworZnJvbSBfcHl0ZXN0
Lm1hcmsuc3RydWN0dXJlcyBpbXBvcnQgTWFya0RlY29yYXRvcgorZnJvbSBfcHl0ZXN0Lm1hcmsu
c3RydWN0dXJlcyBpbXBvcnQgTm9kZUtleXdvcmRzCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1w
b3J0IGZhaWwKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBhYnNvbHV0ZXBhdGgKK2Zyb20g
X3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3Quc3RvcmUgaW1wb3J0IFN0
b3JlCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKKwor
ICAgICMgSW1wb3J0ZWQgaGVyZSBkdWUgdG8gY2lyY3VsYXIgaW1wb3J0LgorICAgIGZyb20gX3B5
dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCisgICAgZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMg
aW1wb3J0IFB5dGVzdFdhcm5pbmcKKyAgICBmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQg
X1RyYWNlYmFja1N0eWxlCiAKLWZyb20gX3B5dGVzdC5tYXJrLnN0cnVjdHVyZXMgaW1wb3J0IE5v
ZGVLZXl3b3JkcywgTWFya0luZm8KIAogU0VQID0gIi8iCiAKIHRyYWNlYmFja2N1dGRpciA9IHB5
LnBhdGgubG9jYWwoX3B5dGVzdC5fX2ZpbGVfXykuZGlycGF0aCgpCiAKIAotZGVmIF9zcGxpdG5v
ZGUobm9kZWlkKToKK0BscnVfY2FjaGUobWF4c2l6ZT1Ob25lKQorZGVmIF9zcGxpdG5vZGUobm9k
ZWlkOiBzdHIpIC0+IFR1cGxlW3N0ciwgLi4uXToKICAgICAiIiJTcGxpdCBhIG5vZGVpZCBpbnRv
IGNvbnN0aXR1ZW50ICdwYXJ0cycuCiAKICAgICBOb2RlIElEcyBhcmUgc3RyaW5ncywgYW5kIGNh
biBiZSB0aGluZ3MgbGlrZToKICAgICAgICAgJycKICAgICAgICAgJ3Rlc3RpbmcvY29kZScKICAg
ICAgICAgJ3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2luZm8ucHknCi0gICAgICAgICd0ZXN0aW5nL2Nv
ZGUvdGVzdF9leGNpbmZvLnB5OjpUZXN0Rm9ybWF0dGVkRXhjaW5mbzo6KCknCisgICAgICAgICd0
ZXN0aW5nL2NvZGUvdGVzdF9leGNpbmZvLnB5OjpUZXN0Rm9ybWF0dGVkRXhjaW5mbycKIAogICAg
IFJldHVybiB2YWx1ZXMgYXJlIGxpc3RzIGUuZy4KICAgICAgICAgW10KICAgICAgICAgWyd0ZXN0
aW5nJywgJ2NvZGUnXQogICAgICAgICBbJ3Rlc3RpbmcnLCAnY29kZScsICd0ZXN0X2V4Y2luZm8u
cHknXQotICAgICAgICBbJ3Rlc3RpbmcnLCAnY29kZScsICd0ZXN0X2V4Y2luZm8ucHknLCAnVGVz
dEZvcm1hdHRlZEV4Y2luZm8nLCAnKCknXQorICAgICAgICBbJ3Rlc3RpbmcnLCAnY29kZScsICd0
ZXN0X2V4Y2luZm8ucHknLCAnVGVzdEZvcm1hdHRlZEV4Y2luZm8nXQogICAgICIiIgogICAgIGlm
IG5vZGVpZCA9PSAiIjoKLSAgICAgICAgIyBJZiB0aGVyZSBpcyBubyByb290IG5vZGUgYXQgYWxs
LCByZXR1cm4gYW4gZW1wdHkgbGlzdCBzbyB0aGUgY2FsbGVyJ3MgbG9naWMgY2FuIHJlbWFpbiBz
YW5lCi0gICAgICAgIHJldHVybiBbXQorICAgICAgICAjIElmIHRoZXJlIGlzIG5vIHJvb3Qgbm9k
ZSBhdCBhbGwsIHJldHVybiBhbiBlbXB0eSBsaXN0IHNvIHRoZSBjYWxsZXIncworICAgICAgICAj
IGxvZ2ljIGNhbiByZW1haW4gc2FuZS4KKyAgICAgICAgcmV0dXJuICgpCiAgICAgcGFydHMgPSBu
b2RlaWQuc3BsaXQoU0VQKQotICAgICMgUmVwbGFjZSBzaW5nbGUgbGFzdCBlbGVtZW50ICd0ZXN0
X2Zvby5weTo6QmFyOjooKScgd2l0aCBtdWx0aXBsZSBlbGVtZW50cyAndGVzdF9mb28ucHknLCAn
QmFyJywgJygpJworICAgICMgUmVwbGFjZSBzaW5nbGUgbGFzdCBlbGVtZW50ICd0ZXN0X2Zvby5w
eTo6QmFyJyB3aXRoIG11bHRpcGxlIGVsZW1lbnRzCisgICAgIyAndGVzdF9mb28ucHknLCAnQmFy
Jy4KICAgICBwYXJ0c1stMTpdID0gcGFydHNbLTFdLnNwbGl0KCI6OiIpCi0gICAgcmV0dXJuIHBh
cnRzCisgICAgIyBDb252ZXJ0IHBhcnRzIGludG8gYSB0dXBsZSB0byBhdm9pZCBwb3NzaWJsZSBl
cnJvcnMgd2l0aCBjYWNoaW5nIG9mIGEKKyAgICAjIG11dGFibGUgdHlwZS4KKyAgICByZXR1cm4g
dHVwbGUocGFydHMpCiAKIAotZGVmIGlzY2hpbGRub2RlKGJhc2VpZCwgbm9kZWlkKToKK2RlZiBp
c2NoaWxkbm9kZShiYXNlaWQ6IHN0ciwgbm9kZWlkOiBzdHIpIC0+IGJvb2w6CiAgICAgIiIiUmV0
dXJuIFRydWUgaWYgdGhlIG5vZGVpZCBpcyBhIGNoaWxkIG5vZGUgb2YgdGhlIGJhc2VpZC4KIAot
ICAgIEUuZy4gJ2Zvby9iYXI6OkJhejo6KCknIGlzIGEgY2hpbGQgb2YgJ2ZvbycsICdmb28vYmFy
JyBhbmQgJ2Zvby9iYXI6OkJheicsIGJ1dCBub3Qgb2YgJ2Zvby9ibG9ycCcKKyAgICBFLmcuICdm
b28vYmFyOjpCYXonIGlzIGEgY2hpbGQgb2YgJ2ZvbycsICdmb28vYmFyJyBhbmQgJ2Zvby9iYXI6
OkJheicsCisgICAgYnV0IG5vdCBvZiAnZm9vL2Jsb3JwJy4KICAgICAiIiIKICAgICBiYXNlX3Bh
cnRzID0gX3NwbGl0bm9kZShiYXNlaWQpCiAgICAgbm9kZV9wYXJ0cyA9IF9zcGxpdG5vZGUobm9k
ZWlkKQogICAgIGlmIGxlbihub2RlX3BhcnRzKSA8IGxlbihiYXNlX3BhcnRzKToKICAgICAgICAg
cmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIG5vZGVfcGFydHNbOmxlbihiYXNlX3BhcnRzKV0gPT0g
YmFzZV9wYXJ0cworICAgIHJldHVybiBub2RlX3BhcnRzWzogbGVuKGJhc2VfcGFydHMpXSA9PSBi
YXNlX3BhcnRzCiAKIAotQGF0dHIucwotY2xhc3MgX0NvbXBhdFByb3BlcnR5KG9iamVjdCk6Ci0g
ICAgbmFtZSA9IGF0dHIuaWIoKQorX05vZGVUeXBlID0gVHlwZVZhcigiX05vZGVUeXBlIiwgYm91
bmQ9Ik5vZGUiKQogCi0gICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCBvd25lcik6Ci0gICAgICAg
IGlmIG9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgICAgICAjIFRP
RE86IHJlZW5hYmxlIGluIHRoZSBmZWF0dXJlcyBicmFuY2gKLSAgICAgICAgIyB3YXJuaW5ncy53
YXJuKAotICAgICAgICAjICAgICAidXNhZ2Ugb2Yge293bmVyIXJ9LntuYW1lfSBpcyBkZXByZWNh
dGVkLCBwbGVhc2UgdXNlIHB5dGVzdC57bmFtZX0gaW5zdGVhZCIuZm9ybWF0KAotICAgICAgICAj
ICAgICAgICAgbmFtZT1zZWxmLm5hbWUsIG93bmVyPXR5cGUob3duZXIpLl9fbmFtZV9fKSwKLSAg
ICAgICAgIyAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAg
ICAgICByZXR1cm4gZ2V0YXR0cihfX2ltcG9ydF9fKCJweXRlc3QiKSwgc2VsZi5uYW1lKQorY2xh
c3MgTm9kZU1ldGEodHlwZSk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICprLCAqKmt3KToKKyAg
ICAgICAgbXNnID0gKAorICAgICAgICAgICAgIkRpcmVjdCBjb25zdHJ1Y3Rpb24gb2Yge25hbWV9
IGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Uge25hbWV9LmZyb21fcGFyZW50LlxuIgor
ICAgICAgICAgICAgIlNlZSAiCisgICAgICAgICAgICAiaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcv
ZW4vc3RhYmxlL2RlcHJlY2F0aW9ucy5odG1sI25vZGUtY29uc3RydWN0aW9uLWNoYW5nZWQtdG8t
bm9kZS1mcm9tLXBhcmVudCIKKyAgICAgICAgICAgICIgZm9yIG1vcmUgZGV0YWlscy4iCisgICAg
ICAgICkuZm9ybWF0KG5hbWU9c2VsZi5fX25hbWVfXykKKyAgICAgICAgZmFpbChtc2csIHB5dHJh
Y2U9RmFsc2UpCiAKKyAgICBkZWYgX2NyZWF0ZShzZWxmLCAqaywgKiprdyk6CisgICAgICAgIHJl
dHVybiBzdXBlcigpLl9fY2FsbF9fKCprLCAqKmt3KQogCi1jbGFzcyBOb2RlKG9iamVjdCk6Ci0g
ICAgIiIiIGJhc2UgY2xhc3MgZm9yIENvbGxlY3RvciBhbmQgSXRlbSB0aGUgdGVzdCBjb2xsZWN0
aW9uIHRyZWUuCi0gICAgQ29sbGVjdG9yIHN1YmNsYXNzZXMgaGF2ZSBjaGlsZHJlbiwgSXRlbXMg
YXJlIHRlcm1pbmFsIG5vZGVzLiIiIgorCitjbGFzcyBOb2RlKG1ldGFjbGFzcz1Ob2RlTWV0YSk6
CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgQ29sbGVjdG9yIGFuZCBJdGVtLCB0aGUgY29tcG9uZW50
cyBvZiB0aGUgdGVzdAorICAgIGNvbGxlY3Rpb24gdHJlZS4KKworICAgIENvbGxlY3RvciBzdWJj
bGFzc2VzIGhhdmUgY2hpbGRyZW47IEl0ZW1zIGFyZSBsZWFmIG5vZGVzLgorICAgICIiIgorCisg
ICAgIyBVc2UgX19zbG90c19fIHRvIG1ha2UgYXR0cmlidXRlIGFjY2VzcyBmYXN0ZXIuCisgICAg
IyBOb3RlIHRoYXQgX19kaWN0X18gaXMgc3RpbGwgYXZhaWxhYmxlLgorICAgIF9fc2xvdHNfXyA9
ICgKKyAgICAgICAgIm5hbWUiLAorICAgICAgICAicGFyZW50IiwKKyAgICAgICAgImNvbmZpZyIs
CisgICAgICAgICJzZXNzaW9uIiwKKyAgICAgICAgImZzcGF0aCIsCisgICAgICAgICJfbm9kZWlk
IiwKKyAgICAgICAgIl9zdG9yZSIsCisgICAgICAgICJfX2RpY3RfXyIsCisgICAgKQogCiAgICAg
ZGVmIF9faW5pdF9fKAotICAgICAgICBzZWxmLCBuYW1lLCBwYXJlbnQ9Tm9uZSwgY29uZmlnPU5v
bmUsIHNlc3Npb249Tm9uZSwgZnNwYXRoPU5vbmUsIG5vZGVpZD1Ob25lCi0gICAgKToKLSAgICAg
ICAgIzogYSB1bmlxdWUgbmFtZSB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBwYXJlbnQgbm9kZQor
ICAgICAgICBzZWxmLAorICAgICAgICBuYW1lOiBzdHIsCisgICAgICAgIHBhcmVudDogIk9wdGlv
bmFsW05vZGVdIiA9IE5vbmUsCisgICAgICAgIGNvbmZpZzogT3B0aW9uYWxbQ29uZmlnXSA9IE5v
bmUsCisgICAgICAgIHNlc3Npb246ICJPcHRpb25hbFtTZXNzaW9uXSIgPSBOb25lLAorICAgICAg
ICBmc3BhdGg6IE9wdGlvbmFsW3B5LnBhdGgubG9jYWxdID0gTm9uZSwKKyAgICAgICAgbm9kZWlk
OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgICM6IEEgdW5p
cXVlIG5hbWUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgcGFyZW50IG5vZGUuCiAgICAgICAgIHNl
bGYubmFtZSA9IG5hbWUKIAotICAgICAgICAjOiB0aGUgcGFyZW50IGNvbGxlY3RvciBub2RlLgor
ICAgICAgICAjOiBUaGUgcGFyZW50IGNvbGxlY3RvciBub2RlLgogICAgICAgICBzZWxmLnBhcmVu
dCA9IHBhcmVudAogCi0gICAgICAgICM6IHRoZSBweXRlc3QgY29uZmlnIG9iamVjdAotICAgICAg
ICBzZWxmLmNvbmZpZyA9IGNvbmZpZyBvciBwYXJlbnQuY29uZmlnCisgICAgICAgICM6IFRoZSBw
eXRlc3QgY29uZmlnIG9iamVjdC4KKyAgICAgICAgaWYgY29uZmlnOgorICAgICAgICAgICAgc2Vs
Zi5jb25maWcgPSBjb25maWcgICMgdHlwZTogQ29uZmlnCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBpZiBub3QgcGFyZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY29u
ZmlnIG9yIHBhcmVudCBtdXN0IGJlIHByb3ZpZGVkIikKKyAgICAgICAgICAgIHNlbGYuY29uZmln
ID0gcGFyZW50LmNvbmZpZwogCi0gICAgICAgICM6IHRoZSBzZXNzaW9uIHRoaXMgbm9kZSBpcyBw
YXJ0IG9mCi0gICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24gb3IgcGFyZW50LnNlc3Npb24K
KyAgICAgICAgIzogVGhlIHB5dGVzdCBzZXNzaW9uIHRoaXMgbm9kZSBpcyBwYXJ0IG9mLgorICAg
ICAgICBpZiBzZXNzaW9uOgorICAgICAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IHBhcmVudDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoInNlc3Npb24gb3IgcGFyZW50IG11c3QgYmUgcHJvdmlkZWQiKQorICAg
ICAgICAgICAgc2VsZi5zZXNzaW9uID0gcGFyZW50LnNlc3Npb24KIAotICAgICAgICAjOiBmaWxl
c3lzdGVtIHBhdGggd2hlcmUgdGhpcyBub2RlIHdhcyBjb2xsZWN0ZWQgZnJvbSAoY2FuIGJlIE5v
bmUpCisgICAgICAgICM6IEZpbGVzeXN0ZW0gcGF0aCB3aGVyZSB0aGlzIG5vZGUgd2FzIGNvbGxl
Y3RlZCBmcm9tIChjYW4gYmUgTm9uZSkuCiAgICAgICAgIHNlbGYuZnNwYXRoID0gZnNwYXRoIG9y
IGdldGF0dHIocGFyZW50LCAiZnNwYXRoIiwgTm9uZSkKIAotICAgICAgICAjOiBrZXl3b3Jkcy9t
YXJrZXJzIGNvbGxlY3RlZCBmcm9tIGFsbCBzY29wZXMKKyAgICAgICAgIzogS2V5d29yZHMvbWFy
a2VycyBjb2xsZWN0ZWQgZnJvbSBhbGwgc2NvcGVzLgogICAgICAgICBzZWxmLmtleXdvcmRzID0g
Tm9kZUtleXdvcmRzKHNlbGYpCiAKLSAgICAgICAgIzogdGhlIG1hcmtlciBvYmplY3RzIGJlbG9u
Z2luZyB0byB0aGlzIG5vZGUKLSAgICAgICAgc2VsZi5vd25fbWFya2VycyA9IFtdCisgICAgICAg
ICM6IFRoZSBtYXJrZXIgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhpcyBub2RlLgorICAgICAgICBz
ZWxmLm93bl9tYXJrZXJzID0gW10gICMgdHlwZTogTGlzdFtNYXJrXQogCi0gICAgICAgICM6IGFs
bG93IGFkZGluZyBvZiBleHRyYSBrZXl3b3JkcyB0byB1c2UgZm9yIG1hdGNoaW5nCi0gICAgICAg
IHNlbGYuZXh0cmFfa2V5d29yZF9tYXRjaGVzID0gc2V0KCkKKyAgICAgICAgIzogQWxsb3cgYWRk
aW5nIG9mIGV4dHJhIGtleXdvcmRzIHRvIHVzZSBmb3IgbWF0Y2hpbmcuCisgICAgICAgIHNlbGYu
ZXh0cmFfa2V5d29yZF9tYXRjaGVzID0gc2V0KCkgICMgdHlwZTogU2V0W3N0cl0KIAotICAgICAg
ICAjIHVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZpY2lhbCBmaXh0dXJlZGVmcyBmb3IgZGlyZWN0IHBh
cmFtZXRyaXphdGlvbgotICAgICAgICBzZWxmLl9uYW1lMnBzZXVkb2ZpeHR1cmVkZWYgPSB7fQor
ICAgICAgICAjIFVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZpY2lhbCBmaXh0dXJlZGVmcyBmb3IgZGly
ZWN0IHBhcmFtZXRyaXphdGlvbi4KKyAgICAgICAgc2VsZi5fbmFtZTJwc2V1ZG9maXh0dXJlZGVm
ID0ge30gICMgdHlwZTogRGljdFtzdHIsIEZpeHR1cmVEZWZbQW55XV0KIAogICAgICAgICBpZiBu
b2RlaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhc3NlcnQgIjo6KCkiIG5vdCBpbiBub2Rl
aWQKICAgICAgICAgICAgIHNlbGYuX25vZGVpZCA9IG5vZGVpZAogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgYXNzZXJ0IHBhcmVudCBpcyBub3QgTm9uZQotICAgICAgICAgICAgc2VsZi5fbm9k
ZWlkID0gc2VsZi5wYXJlbnQubm9kZWlkICsgIjo6IiArIHNlbGYubmFtZQorICAgICAgICAgICAg
aWYgbm90IHNlbGYucGFyZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9k
ZWlkIG9yIHBhcmVudCBtdXN0IGJlIHByb3ZpZGVkIikKKyAgICAgICAgICAgIHNlbGYuX25vZGVp
ZCA9IHNlbGYucGFyZW50Lm5vZGVpZAorICAgICAgICAgICAgaWYgc2VsZi5uYW1lICE9ICIoKSI6
CisgICAgICAgICAgICAgICAgc2VsZi5fbm9kZWlkICs9ICI6OiIgKyBzZWxmLm5hbWUKKworICAg
ICAgICAjIEEgcGxhY2Ugd2hlcmUgcGx1Z2lucyBjYW4gc3RvcmUgaW5mb3JtYXRpb24gb24gdGhl
IG5vZGUgZm9yIHRoZWlyCisgICAgICAgICMgb3duIHVzZS4gQ3VycmVudGx5IG9ubHkgaW50ZW5k
ZWQgZm9yIGludGVybmFsIHBsdWdpbnMuCisgICAgICAgIHNlbGYuX3N0b3JlID0gU3RvcmUoKQor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fcGFyZW50KGNscywgcGFyZW50OiAiTm9k
ZSIsICoqa3cpOgorICAgICAgICAiIiJQdWJsaWMgY29uc3RydWN0b3IgZm9yIE5vZGVzLgorCisg
ICAgICAgIFRoaXMgaW5kaXJlY3Rpb24gZ290IGludHJvZHVjZWQgaW4gb3JkZXIgdG8gZW5hYmxl
IHJlbW92aW5nCisgICAgICAgIHRoZSBmcmFnaWxlIGxvZ2ljIGZyb20gdGhlIG5vZGUgY29uc3Ry
dWN0b3JzLgorCisgICAgICAgIFN1YmNsYXNzZXMgY2FuIHVzZSBgYHN1cGVyKCkuZnJvbV9wYXJl
bnQoLi4uKWBgIHdoZW4gb3ZlcnJpZGluZyB0aGUKKyAgICAgICAgY29uc3RydWN0aW9uLgorCisg
ICAgICAgIDpwYXJhbSBwYXJlbnQ6IFRoZSBwYXJlbnQgbm9kZSBvZiB0aGlzIE5vZGUuCisgICAg
ICAgICIiIgorICAgICAgICBpZiAiY29uZmlnIiBpbiBrdzoKKyAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcigiY29uZmlnIGlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciBmcm9tX3BhcmVudCIp
CisgICAgICAgIGlmICJzZXNzaW9uIiBpbiBrdzoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJv
cigic2Vzc2lvbiBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgZnJvbV9wYXJlbnQiKQorICAg
ICAgICByZXR1cm4gY2xzLl9jcmVhdGUocGFyZW50PXBhcmVudCwgKiprdykKIAogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBpaG9vayhzZWxmKToKLSAgICAgICAgIiIiIGZzcGF0aCBzZW5zaXRpdmUg
aG9vayBwcm94eSB1c2VkIHRvIGNhbGwgcHl0ZXN0IGhvb2tzIiIiCisgICAgICAgICIiImZzcGF0
aC1zZW5zaXRpdmUgaG9vayBwcm94eSB1c2VkIHRvIGNhbGwgcHl0ZXN0IGhvb2tzLiIiIgogICAg
ICAgICByZXR1cm4gc2VsZi5zZXNzaW9uLmdldGhvb2twcm94eShzZWxmLmZzcGF0aCkKIAotICAg
IE1vZHVsZSA9IF9Db21wYXRQcm9wZXJ0eSgiTW9kdWxlIikKLSAgICBDbGFzcyA9IF9Db21wYXRQ
cm9wZXJ0eSgiQ2xhc3MiKQotICAgIEluc3RhbmNlID0gX0NvbXBhdFByb3BlcnR5KCJJbnN0YW5j
ZSIpCi0gICAgRnVuY3Rpb24gPSBfQ29tcGF0UHJvcGVydHkoIkZ1bmN0aW9uIikKLSAgICBGaWxl
ID0gX0NvbXBhdFByb3BlcnR5KCJGaWxlIikKLSAgICBJdGVtID0gX0NvbXBhdFByb3BlcnR5KCJJ
dGVtIikKLQotICAgIGRlZiBfZ2V0Y3VzdG9tY2xhc3Moc2VsZiwgbmFtZSk6Ci0gICAgICAgIG1h
eWJlX2NvbXBhdHByb3AgPSBnZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUpCi0gICAgICAgIGlmIGlz
aW5zdGFuY2UobWF5YmVfY29tcGF0cHJvcCwgX0NvbXBhdFByb3BlcnR5KToKLSAgICAgICAgICAg
IHJldHVybiBnZXRhdHRyKF9faW1wb3J0X18oInB5dGVzdCIpLCBuYW1lKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgY2xzID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgIyBU
T0RPOiByZWVuYWJsZSBpbiB0aGUgZmVhdHVyZXMgYnJhbmNoCi0gICAgICAgICAgICAjIHdhcm5p
bmdzLndhcm4oInVzZSBvZiBub2RlLiVzIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICMg
ICAgInVzZSBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKC4uLikgdG8gY3JlYXRlIGN1c3RvbSAi
Ci0gICAgICAgICAgICAjICAgICJjb2xsZWN0aW9uIG5vZGVzIiAlIG5hbWUsIGNhdGVnb3J5PURl
cHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgcmV0dXJuIGNscwotCi0gICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gIjwlcyAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFt
ZV9fLCBnZXRhdHRyKHNlbGYsICJuYW1lIiwgTm9uZSkpCi0KLSAgICBkZWYgd2FybihzZWxmLCBj
b2RlLCBtZXNzYWdlKToKLSAgICAgICAgIiIiIGdlbmVyYXRlIGEgd2FybmluZyB3aXRoIHRoZSBn
aXZlbiBjb2RlIGFuZCBtZXNzYWdlIGZvciB0aGlzCi0gICAgICAgIGl0ZW0uICIiIgotICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShjb2RlLCBzdHIpCi0gICAgICAgIGZzbG9jYXRpb24gPSBnZXRh
dHRyKHNlbGYsICJsb2NhdGlvbiIsIE5vbmUpCi0gICAgICAgIGlmIGZzbG9jYXRpb24gaXMgTm9u
ZToKLSAgICAgICAgICAgIGZzbG9jYXRpb24gPSBnZXRhdHRyKHNlbGYsICJmc3BhdGgiLCBOb25l
KQotICAgICAgICBzZWxmLmlob29rLnB5dGVzdF9sb2d3YXJuaW5nLmNhbGxfaGlzdG9yaWMoCi0g
ICAgICAgICAgICBrd2FyZ3M9ZGljdCgKLSAgICAgICAgICAgICAgICBjb2RlPWNvZGUsIG1lc3Nh
Z2U9bWVzc2FnZSwgbm9kZWlkPXNlbGYubm9kZWlkLCBmc2xvY2F0aW9uPWZzbG9jYXRpb24KKyAg
ICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gIjx7fSB7fT4iLmZv
cm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgZ2V0YXR0cihzZWxmLCAibmFtZSIsIE5vbmUp
KQorCisgICAgZGVmIHdhcm4oc2VsZiwgd2FybmluZzogIlB5dGVzdFdhcm5pbmciKSAtPiBOb25l
OgorICAgICAgICAiIiJJc3N1ZSBhIHdhcm5pbmcgZm9yIHRoaXMgTm9kZS4KKworICAgICAgICBX
YXJuaW5ncyB3aWxsIGJlIGRpc3BsYXllZCBhZnRlciB0aGUgdGVzdCBzZXNzaW9uLCB1bmxlc3Mg
ZXhwbGljaXRseSBzdXBwcmVzc2VkLgorCisgICAgICAgIDpwYXJhbSBXYXJuaW5nIHdhcm5pbmc6
CisgICAgICAgICAgICBUaGUgd2FybmluZyBpbnN0YW5jZSB0byBpc3N1ZS4gTXVzdCBiZSBhIHN1
YmNsYXNzIG9mIFB5dGVzdFdhcm5pbmcuCisKKyAgICAgICAgOnJhaXNlcyBWYWx1ZUVycm9yOiBJ
ZiBgYHdhcm5pbmdgYCBpbnN0YW5jZSBpcyBub3QgYSBzdWJjbGFzcyBvZiBQeXRlc3RXYXJuaW5n
LgorCisgICAgICAgIEV4YW1wbGUgdXNhZ2U6CisKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5
dGhvbgorCisgICAgICAgICAgICBub2RlLndhcm4oUHl0ZXN0V2FybmluZygic29tZSBtZXNzYWdl
IikpCisgICAgICAgICIiIgorICAgICAgICBmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBv
cnQgUHl0ZXN0V2FybmluZworCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHdhcm5pbmcsIFB5
dGVzdFdhcm5pbmcpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAg
ICAgICAid2FybmluZyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFB5dGVzdFdhcm5pbmcgb3Igc3Vi
Y2xhc3MsIGdvdCB7IXJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcKKyAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCisgICAgICAgIHBhdGgsIGxpbmVubyA9IGdl
dF9mc2xvY2F0aW9uX2Zyb21faXRlbShzZWxmKQorICAgICAgICBhc3NlcnQgbGluZW5vIGlzIG5v
dCBOb25lCisgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICB3YXJu
aW5nLCBjYXRlZ29yeT1Ob25lLCBmaWxlbmFtZT1zdHIocGF0aCksIGxpbmVubz1saW5lbm8gKyAx
LAogICAgICAgICApCiAKLSAgICAjIG1ldGhvZHMgZm9yIG9yZGVyaW5nIG5vZGVzCisgICAgIyBN
ZXRob2RzIGZvciBvcmRlcmluZyBub2Rlcy4KKwogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBub2Rl
aWQoc2VsZik6Ci0gICAgICAgICIiIiBhIDo6LXNlcGFyYXRlZCBzdHJpbmcgZGVub3RpbmcgaXRz
IGNvbGxlY3Rpb24gdHJlZSBhZGRyZXNzLiAiIiIKKyAgICBkZWYgbm9kZWlkKHNlbGYpIC0+IHN0
cjoKKyAgICAgICAgIiIiQSA6Oi1zZXBhcmF0ZWQgc3RyaW5nIGRlbm90aW5nIGl0cyBjb2xsZWN0
aW9uIHRyZWUgYWRkcmVzcy4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX25vZGVpZAogCi0gICAg
ZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5vZGVpZCkKKyAg
ICBkZWYgX19oYXNoX18oc2VsZikgLT4gaW50OgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9u
b2RlaWQpCiAKLSAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgZGVmIHNldHVwKHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiB0ZWFyZG93bihzZWxmKToKKyAgICBkZWYgdGVh
cmRvd24oc2VsZikgLT4gTm9uZToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIGxpc3RjaGFpbihz
ZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBsaXN0IG9mIGFsbCBwYXJlbnQgY29sbGVjdG9ycyB1
cCB0byBzZWxmLAotICAgICAgICAgICAgc3RhcnRpbmcgZnJvbSByb290IG9mIGNvbGxlY3Rpb24g
dHJlZS4gIiIiCisgICAgZGVmIGxpc3RjaGFpbihzZWxmKSAtPiBMaXN0WyJOb2RlIl06CisgICAg
ICAgICIiIlJldHVybiBsaXN0IG9mIGFsbCBwYXJlbnQgY29sbGVjdG9ycyB1cCB0byBzZWxmLCBz
dGFydGluZyBmcm9tCisgICAgICAgIHRoZSByb290IG9mIGNvbGxlY3Rpb24gdHJlZS4iIiIKICAg
ICAgICAgY2hhaW4gPSBbXQotICAgICAgICBpdGVtID0gc2VsZgorICAgICAgICBpdGVtID0gc2Vs
ZiAgIyB0eXBlOiBPcHRpb25hbFtOb2RlXQogICAgICAgICB3aGlsZSBpdGVtIGlzIG5vdCBOb25l
OgogICAgICAgICAgICAgY2hhaW4uYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICBpdGVtID0gaXRl
bS5wYXJlbnQKICAgICAgICAgY2hhaW4ucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBjaGFpbgog
Ci0gICAgZGVmIGFkZF9tYXJrZXIoc2VsZiwgbWFya2VyKToKLSAgICAgICAgIiIiZHluYW1pY2Fs
bHkgYWRkIGEgbWFya2VyIG9iamVjdCB0byB0aGUgbm9kZS4KKyAgICBkZWYgYWRkX21hcmtlcigK
KyAgICAgICAgc2VsZiwgbWFya2VyOiBVbmlvbltzdHIsIE1hcmtEZWNvcmF0b3JdLCBhcHBlbmQ6
IGJvb2wgPSBUcnVlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJEeW5hbWljYWxseSBhZGQg
YSBtYXJrZXIgb2JqZWN0IHRvIHRoZSBub2RlLgogCi0gICAgICAgIDp0eXBlIG1hcmtlcjogc3Ry
IG9yIHB5dGVzdC5tYXJrLioKKyAgICAgICAgOnBhcmFtIGFwcGVuZDoKKyAgICAgICAgICAgIFdo
ZXRoZXIgdG8gYXBwZW5kIHRoZSBtYXJrZXIsIG9yIHByZXBlbmQgaXQuCiAgICAgICAgICIiIgot
ICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgTWFya0RlY29yYXRvciwgTUFSS19HRU4K
KyAgICAgICAgZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1BUktfR0VOCiAKLSAgICAgICAgaWYg
aXNpbnN0YW5jZShtYXJrZXIsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgbWFya2Vy
ID0gZ2V0YXR0cihNQVJLX0dFTiwgbWFya2VyKQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNl
KG1hcmtlciwgTWFya0RlY29yYXRvcik6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobWFya2VyLCBN
YXJrRGVjb3JhdG9yKToKKyAgICAgICAgICAgIG1hcmtlcl8gPSBtYXJrZXIKKyAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKG1hcmtlciwgc3RyKToKKyAgICAgICAgICAgIG1hcmtlcl8gPSBnZXRhdHRy
KE1BUktfR0VOLCBtYXJrZXIpCisgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJpcyBub3QgYSBzdHJpbmcgb3IgcHl0ZXN0Lm1hcmsuKiBNYXJrZXIiKQotICAgICAg
ICBzZWxmLmtleXdvcmRzW21hcmtlci5uYW1lXSA9IG1hcmtlcgotICAgICAgICBzZWxmLm93bl9t
YXJrZXJzLmFwcGVuZChtYXJrZXIubWFyaykKKyAgICAgICAgc2VsZi5rZXl3b3Jkc1ttYXJrZXJf
Lm5hbWVdID0gbWFya2VyXworICAgICAgICBpZiBhcHBlbmQ6CisgICAgICAgICAgICBzZWxmLm93
bl9tYXJrZXJzLmFwcGVuZChtYXJrZXJfLm1hcmspCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBzZWxmLm93bl9tYXJrZXJzLmluc2VydCgwLCBtYXJrZXJfLm1hcmspCiAKLSAgICBkZWYgaXRl
cl9tYXJrZXJzKHNlbGYsIG5hbWU9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICA6cGFyYW0g
bmFtZTogaWYgZ2l2ZW4sIGZpbHRlciB0aGUgcmVzdWx0cyBieSB0aGUgbmFtZSBhdHRyaWJ1dGUK
KyAgICBkZWYgaXRlcl9tYXJrZXJzKHNlbGYsIG5hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lKSAt
PiBJdGVyYXRvcltNYXJrXToKKyAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIGFsbCBtYXJrZXJzIG9m
IHRoZSBub2RlLgogCi0gICAgICAgIGl0ZXJhdGUgb3ZlciBhbGwgbWFya2VycyBvZiB0aGUgbm9k
ZQorICAgICAgICA6cGFyYW0gbmFtZTogSWYgZ2l2ZW4sIGZpbHRlciB0aGUgcmVzdWx0cyBieSB0
aGUgbmFtZSBhdHRyaWJ1dGUuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gKHhbMV0gZm9y
IHggaW4gc2VsZi5pdGVyX21hcmtlcnNfd2l0aF9ub2RlKG5hbWU9bmFtZSkpCiAKLSAgICBkZWYg
aXRlcl9tYXJrZXJzX3dpdGhfbm9kZShzZWxmLCBuYW1lPU5vbmUpOgotICAgICAgICAiIiIKLSAg
ICAgICAgOnBhcmFtIG5hbWU6IGlmIGdpdmVuLCBmaWx0ZXIgdGhlIHJlc3VsdHMgYnkgdGhlIG5h
bWUgYXR0cmlidXRlCisgICAgZGVmIGl0ZXJfbWFya2Vyc193aXRoX25vZGUoCisgICAgICAgIHNl
bGYsIG5hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgKSAtPiBJdGVyYXRvcltUdXBsZVsi
Tm9kZSIsIE1hcmtdXToKKyAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIGFsbCBtYXJrZXJzIG9mIHRo
ZSBub2RlLgogCi0gICAgICAgIGl0ZXJhdGUgb3ZlciBhbGwgbWFya2VycyBvZiB0aGUgbm9kZQot
ICAgICAgICByZXR1cm5zIHNlcXVlbmNlIG9mIHR1cGxlcyAobm9kZSwgbWFyaykKKyAgICAgICAg
OnBhcmFtIG5hbWU6IElmIGdpdmVuLCBmaWx0ZXIgdGhlIHJlc3VsdHMgYnkgdGhlIG5hbWUgYXR0
cmlidXRlLgorICAgICAgICA6cmV0dXJuczogQW4gaXRlcmF0b3Igb2YgKG5vZGUsIG1hcmspIHR1
cGxlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGZvciBub2RlIGluIHJldmVyc2VkKHNlbGYubGlz
dGNoYWluKCkpOgogICAgICAgICAgICAgZm9yIG1hcmsgaW4gbm9kZS5vd25fbWFya2VyczoKICAg
ICAgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmUgb3IgZ2V0YXR0cihtYXJrLCAibmFtZSIsIE5v
bmUpID09IG5hbWU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIG5vZGUsIG1hcmsKIAotICAg
IGRlZiBnZXRfY2xvc2VzdF9tYXJrZXIoc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKLSAgICAg
ICAgIiIicmV0dXJuIHRoZSBmaXJzdCBtYXJrZXIgbWF0Y2hpbmcgdGhlIG5hbWUsIGZyb20gY2xv
c2VzdCAoZm9yIGV4YW1wbGUgZnVuY3Rpb24pIHRvIGZhcnRoZXIgbGV2ZWwgKGZvciBleGFtcGxl
Ci0gICAgICAgIG1vZHVsZSBsZXZlbCkuCisgICAgQG92ZXJsb2FkCisgICAgZGVmIGdldF9jbG9z
ZXN0X21hcmtlcihzZWxmLCBuYW1lOiBzdHIpIC0+IE9wdGlvbmFsW01hcmtdOgorICAgICAgICAu
Li4KIAotICAgICAgICA6cGFyYW0gZGVmYXVsdDogZmFsbGJhY2sgcmV0dXJuIHZhbHVlIG9mIG5v
IG1hcmtlciB3YXMgZm91bmQKLSAgICAgICAgOnBhcmFtIG5hbWU6IG5hbWUgdG8gZmlsdGVyIGJ5
Ci0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gbmV4dChzZWxmLml0ZXJfbWFya2VycyhuYW1l
PW5hbWUpLCBkZWZhdWx0KQorICAgIEBvdmVybG9hZCAgIyBub3FhOiBGODExCisgICAgZGVmIGdl
dF9jbG9zZXN0X21hcmtlcihzZWxmLCBuYW1lOiBzdHIsIGRlZmF1bHQ6IE1hcmspIC0+IE1hcms6
ICAjIG5vcWE6IEY4MTEKKyAgICAgICAgLi4uCiAKLSAgICBkZWYgZ2V0X21hcmtlcihzZWxmLCBu
YW1lKToKLSAgICAgICAgIiIiIGdldCBhIG1hcmtlciBvYmplY3QgZnJvbSB0aGlzIG5vZGUgb3Ig
Tm9uZSBpZgotICAgICAgICB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYSBtYXJrZXIgd2l0aCB0aGF0
IG5hbWUuCisgICAgZGVmIGdldF9jbG9zZXN0X21hcmtlciggICMgbm9xYTogRjgxMQorICAgICAg
ICBzZWxmLCBuYW1lOiBzdHIsIGRlZmF1bHQ6IE9wdGlvbmFsW01hcmtdID0gTm9uZQorICAgICkg
LT4gT3B0aW9uYWxbTWFya106CisgICAgICAgICIiIlJldHVybiB0aGUgZmlyc3QgbWFya2VyIG1h
dGNoaW5nIHRoZSBuYW1lLCBmcm9tIGNsb3Nlc3QgKGZvcgorICAgICAgICBleGFtcGxlIGZ1bmN0
aW9uKSB0byBmYXJ0aGVyIGxldmVsIChmb3IgZXhhbXBsZSBtb2R1bGUgbGV2ZWwpLgogCi0gICAg
ICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKLSAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJl
ZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZgotICAgICAgICAgICAgOm1ldGg6YE5vZGUuZ2V0X2Ns
b3Nlc3RfbWFya2VyIDxfcHl0ZXN0Lm5vZGVzLk5vZGUuZ2V0X2Nsb3Nlc3RfbWFya2VyPmAgYW5k
Ci0gICAgICAgICAgICA6bWV0aDpgTm9kZS5pdGVyX21hcmtlcnMgPF9weXRlc3Qubm9kZXMuTm9k
ZS5pdGVyX21hcmtlcnM+YCwgc2VlIDpyZWY6YHVwZGF0ZSBtYXJrZXIgY29kZWAKLSAgICAgICAg
ICAgIGZvciBtb3JlIGRldGFpbHMuCisgICAgICAgIDpwYXJhbSBkZWZhdWx0OiBGYWxsYmFjayBy
ZXR1cm4gdmFsdWUgaWYgbm8gbWFya2VyIHdhcyBmb3VuZC4KKyAgICAgICAgOnBhcmFtIG5hbWU6
IE5hbWUgdG8gZmlsdGVyIGJ5LgogICAgICAgICAiIiIKLSAgICAgICAgbWFya2VycyA9IGxpc3Qo
c2VsZi5pdGVyX21hcmtlcnMobmFtZT1uYW1lKSkKLSAgICAgICAgaWYgbWFya2VyczoKLSAgICAg
ICAgICAgIHJldHVybiBNYXJrSW5mbyhtYXJrZXJzKQorICAgICAgICByZXR1cm4gbmV4dChzZWxm
Lml0ZXJfbWFya2VycyhuYW1lPW5hbWUpLCBkZWZhdWx0KQogCi0gICAgZGVmIGxpc3RleHRyYWtl
eXdvcmRzKHNlbGYpOgotICAgICAgICAiIiIgUmV0dXJuIGEgc2V0IG9mIGFsbCBleHRyYSBrZXl3
b3JkcyBpbiBzZWxmIGFuZCBhbnkgcGFyZW50cy4iIiIKLSAgICAgICAgZXh0cmFfa2V5d29yZHMg
PSBzZXQoKQorICAgIGRlZiBsaXN0ZXh0cmFrZXl3b3JkcyhzZWxmKSAtPiBTZXRbc3RyXToKKyAg
ICAgICAgIiIiUmV0dXJuIGEgc2V0IG9mIGFsbCBleHRyYSBrZXl3b3JkcyBpbiBzZWxmIGFuZCBh
bnkgcGFyZW50cy4iIiIKKyAgICAgICAgZXh0cmFfa2V5d29yZHMgPSBzZXQoKSAgIyB0eXBlOiBT
ZXRbc3RyXQogICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLmxpc3RjaGFpbigpOgogICAgICAgICAg
ICAgZXh0cmFfa2V5d29yZHMudXBkYXRlKGl0ZW0uZXh0cmFfa2V5d29yZF9tYXRjaGVzKQogICAg
ICAgICByZXR1cm4gZXh0cmFfa2V5d29yZHMKIAotICAgIGRlZiBsaXN0bmFtZXMoc2VsZik6Cisg
ICAgZGVmIGxpc3RuYW1lcyhzZWxmKSAtPiBMaXN0W3N0cl06CiAgICAgICAgIHJldHVybiBbeC5u
YW1lIGZvciB4IGluIHNlbGYubGlzdGNoYWluKCldCiAKLSAgICBkZWYgYWRkZmluYWxpemVyKHNl
bGYsIGZpbik6Ci0gICAgICAgICIiIiByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3
aGVuIHRoaXMgbm9kZSBpcyBmaW5hbGl6ZWQuCisgICAgZGVmIGFkZGZpbmFsaXplcihzZWxmLCBm
aW46IENhbGxhYmxlW1tdLCBvYmplY3RdKSAtPiBOb25lOgorICAgICAgICAiIiJSZWdpc3RlciBh
IGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoaXMgbm9kZSBpcyBmaW5hbGl6ZWQuCiAKICAg
ICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhpcyBub2RlIGlzIGFj
dGl2ZQogICAgICAgICBpbiBhIHNldHVwIGNoYWluLCBmb3IgZXhhbXBsZSBkdXJpbmcgc2VsZi5z
ZXR1cCgpLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5zZXNzaW9uLl9zZXR1cHN0YXRlLmFk
ZGZpbmFsaXplcihmaW4sIHNlbGYpCiAKLSAgICBkZWYgZ2V0cGFyZW50KHNlbGYsIGNscyk6Ci0g
ICAgICAgICIiIiBnZXQgdGhlIG5leHQgcGFyZW50IG5vZGUgKGluY2x1ZGluZyBvdXJzZWxmKQot
ICAgICAgICB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gY2xhc3MiIiIKLSAgICAg
ICAgY3VycmVudCA9IHNlbGYKKyAgICBkZWYgZ2V0cGFyZW50KHNlbGYsIGNsczogIlR5cGVbX05v
ZGVUeXBlXSIpIC0+IE9wdGlvbmFsW19Ob2RlVHlwZV06CisgICAgICAgICIiIkdldCB0aGUgbmV4
dCBwYXJlbnQgbm9kZSAoaW5jbHVkaW5nIHNlbGYpIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mCisg
ICAgICAgIHRoZSBnaXZlbiBjbGFzcy4iIiIKKyAgICAgICAgY3VycmVudCA9IHNlbGYgICMgdHlw
ZTogT3B0aW9uYWxbTm9kZV0KICAgICAgICAgd2hpbGUgY3VycmVudCBhbmQgbm90IGlzaW5zdGFu
Y2UoY3VycmVudCwgY2xzKToKICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudAor
ICAgICAgICBhc3NlcnQgY3VycmVudCBpcyBOb25lIG9yIGlzaW5zdGFuY2UoY3VycmVudCwgY2xz
KQogICAgICAgICByZXR1cm4gY3VycmVudAogCi0gICAgZGVmIF9wcnVuZXRyYWNlYmFjayhzZWxm
LCBleGNpbmZvKToKKyAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2luZm86IEV4Y2Vw
dGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0pIC0+IE5vbmU6CiAgICAgICAgIHBhc3MKIAotICAgIGRl
ZiBfcmVwcl9mYWlsdXJlX3B5KHNlbGYsIGV4Y2luZm8sIHN0eWxlPU5vbmUpOgotICAgICAgICBm
bSA9IHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAgICAgICAgaWYgZXhjaW5mby5lcnJp
c2luc3RhbmNlKGZtLkZpeHR1cmVMb29rdXBFcnJvcik6CisgICAgZGVmIF9yZXByX2ZhaWx1cmVf
cHkoCisgICAgICAgIHNlbGYsCisgICAgICAgIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4
Y2VwdGlvbl0sCisgICAgICAgIHN0eWxlOiAiT3B0aW9uYWxbX1RyYWNlYmFja1N0eWxlXSIgPSBO
b25lLAorICAgICkgLT4gVGVybWluYWxSZXByOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y2lu
Zm8udmFsdWUsIENvbmZ0ZXN0SW1wb3J0RmFpbHVyZSk6CisgICAgICAgICAgICBleGNpbmZvID0g
RXhjZXB0aW9uSW5mbyhleGNpbmZvLnZhbHVlLmV4Y2luZm8pCisgICAgICAgIGlmIGlzaW5zdGFu
Y2UoZXhjaW5mby52YWx1ZSwgZmFpbC5FeGNlcHRpb24pOgorICAgICAgICAgICAgaWYgbm90IGV4
Y2luZm8udmFsdWUucHl0cmFjZToKKyAgICAgICAgICAgICAgICBzdHlsZSA9ICJ2YWx1ZSIKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBGaXh0dXJlTG9va3VwRXJyb3IpOgog
ICAgICAgICAgICAgcmV0dXJuIGV4Y2luZm8udmFsdWUuZm9ybWF0cmVwcigpCi0gICAgICAgIHRi
ZmlsdGVyID0gVHJ1ZQotICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24uZnVsbHRyYWNlOgor
ICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImZ1bGx0cmFjZSIsIEZhbHNlKToKICAg
ICAgICAgICAgIHN0eWxlID0gImxvbmciCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0YiA9
IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKFtleGNpbmZvLnRyYWNlYmFja1stMV1dKQogICAgICAg
ICAgICAgc2VsZi5fcHJ1bmV0cmFjZWJhY2soZXhjaW5mbykKICAgICAgICAgICAgIGlmIGxlbihl
eGNpbmZvLnRyYWNlYmFjaykgPT0gMDoKICAgICAgICAgICAgICAgICBleGNpbmZvLnRyYWNlYmFj
ayA9IHRiCi0gICAgICAgICAgICB0YmZpbHRlciA9IEZhbHNlICAjIHBydW5ldHJhY2ViYWNrIGFs
cmVhZHkgZG9lcyBpdAogICAgICAgICAgICAgaWYgc3R5bGUgPT0gImF1dG8iOgogICAgICAgICAg
ICAgICAgIHN0eWxlID0gImxvbmciCiAgICAgICAgICMgWFhYIHNob3VsZCBleGNpbmZvLmdldHJl
cHIgcmVjb3JkIGFsbCBkYXRhIGFuZCB0b3Rlcm1pbmFsKCkgcHJvY2VzcyBpdD8KICAgICAgICAg
aWYgc3R5bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi50YnN0
eWxlID09ICJzaG9ydCI6CisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oInRi
c3R5bGUiLCAiYXV0byIpID09ICJzaG9ydCI6CiAgICAgICAgICAgICAgICAgc3R5bGUgPSAic2hv
cnQiCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN0eWxlID0gImxvbmciCiAK
KyAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3NlIiwgMCkgPiAxOgorICAg
ICAgICAgICAgdHJ1bmNhdGVfbG9jYWxzID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHRydW5jYXRlX2xvY2FscyA9IFRydWUKKworICAgICAgICAjIGV4Y2luZm8uZ2V0cmVwcigp
IGZvcm1hdHMgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIENXRCBpZiBgYWJzcGF0aGAgaXMgRmFsc2Uu
CisgICAgICAgICMgSXQgaXMgcG9zc2libGUgZm9yIGEgZml4dHVyZS90ZXN0IHRvIGNoYW5nZSB0
aGUgQ1dEIHdoaWxlIHRoaXMgY29kZSBydW5zLCB3aGljaAorICAgICAgICAjIHdvdWxkIHRoZW4g
cmVzdWx0IGluIHRoZSB1c2VyIHNlZWluZyBjb25mdXNpbmcgcGF0aHMgaW4gdGhlIGZhaWx1cmUg
bWVzc2FnZS4KKyAgICAgICAgIyBUbyBmaXggdGhpcywgaWYgdGhlIENXRCBjaGFuZ2VkLCBhbHdh
eXMgZGlzcGxheSB0aGUgZnVsbCBhYnNvbHV0ZSBwYXRoLgorICAgICAgICAjIEl0IHdpbGwgYmUg
YmV0dGVyIHRvIGp1c3QgYWx3YXlzIGRpc3BsYXkgcGF0aHMgcmVsYXRpdmUgdG8gaW52b2NhdGlv
bl9kaXIsIGJ1dAorICAgICAgICAjIHRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YgcGx1bWJpbmcgKCM2
NDI4KS4KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAg
IGFic3BhdGggPSBGYWxzZQorICAgICAgICAgICAgYWJzcGF0aCA9IFBhdGgob3MuZ2V0Y3dkKCkp
ICE9IHNlbGYuY29uZmlnLmludm9jYXRpb25fcGFyYW1zLmRpcgogICAgICAgICBleGNlcHQgT1NF
cnJvcjoKICAgICAgICAgICAgIGFic3BhdGggPSBUcnVlCiAKICAgICAgICAgcmV0dXJuIGV4Y2lu
Zm8uZ2V0cmVwcigKICAgICAgICAgICAgIGZ1bmNhcmdzPVRydWUsCiAgICAgICAgICAgICBhYnNw
YXRoPWFic3BhdGgsCi0gICAgICAgICAgICBzaG93bG9jYWxzPXNlbGYuY29uZmlnLm9wdGlvbi5z
aG93bG9jYWxzLAorICAgICAgICAgICAgc2hvd2xvY2Fscz1zZWxmLmNvbmZpZy5nZXRvcHRpb24o
InNob3dsb2NhbHMiLCBGYWxzZSksCiAgICAgICAgICAgICBzdHlsZT1zdHlsZSwKLSAgICAgICAg
ICAgIHRiZmlsdGVyPXRiZmlsdGVyLAorICAgICAgICAgICAgdGJmaWx0ZXI9RmFsc2UsICAjIHBy
dW5lZCBhbHJlYWR5LCBvciBpbiAtLWZ1bGx0cmFjZSBtb2RlLgorICAgICAgICAgICAgdHJ1bmNh
dGVfbG9jYWxzPXRydW5jYXRlX2xvY2FscywKICAgICAgICAgKQogCi0gICAgcmVwcl9mYWlsdXJl
ID0gX3JlcHJfZmFpbHVyZV9weQorICAgIGRlZiByZXByX2ZhaWx1cmUoCisgICAgICAgIHNlbGYs
CisgICAgICAgIGV4Y2luZm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0sCisgICAgICAg
IHN0eWxlOiAiT3B0aW9uYWxbX1RyYWNlYmFja1N0eWxlXSIgPSBOb25lLAorICAgICkgLT4gVW5p
b25bc3RyLCBUZXJtaW5hbFJlcHJdOgorICAgICAgICAiIiJSZXR1cm4gYSByZXByZXNlbnRhdGlv
biBvZiBhIGNvbGxlY3Rpb24gb3IgdGVzdCBmYWlsdXJlLgogCisgICAgICAgIDpwYXJhbSBleGNp
bmZvOiBFeGNlcHRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBmYWlsdXJlLgorICAgICAgICAiIiIK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfZmFpbHVyZV9weShleGNpbmZvLCBzdHlsZSkKIAot
Y2xhc3MgQ29sbGVjdG9yKE5vZGUpOgotICAgICIiIiBDb2xsZWN0b3IgaW5zdGFuY2VzIGNyZWF0
ZSBjaGlsZHJlbiB0aHJvdWdoIGNvbGxlY3QoKQotICAgICAgICBhbmQgdGh1cyBpdGVyYXRpdmVs
eSBidWlsZCBhIHRyZWUuCisKK2RlZiBnZXRfZnNsb2NhdGlvbl9mcm9tX2l0ZW0oCisgICAgbm9k
ZTogIk5vZGUiLAorKSAtPiBUdXBsZVtVbmlvbltzdHIsIHB5LnBhdGgubG9jYWxdLCBPcHRpb25h
bFtpbnRdXToKKyAgICAiIiJUcnkgdG8gZXh0cmFjdCB0aGUgYWN0dWFsIGxvY2F0aW9uIGZyb20g
YSBub2RlLCBkZXBlbmRpbmcgb24gYXZhaWxhYmxlIGF0dHJpYnV0ZXM6CisKKyAgICAqICJsb2Nh
dGlvbiI6IGEgcGFpciAocGF0aCwgbGluZW5vKQorICAgICogIm9iaiI6IGEgUHl0aG9uIG9iamVj
dCB0aGF0IHRoZSBub2RlIHdyYXBzLgorICAgICogImZzcGF0aCI6IGp1c3QgYSBwYXRoCisKKyAg
ICA6cnR5cGU6IEEgdHVwbGUgb2YgKHN0cnxweS5wYXRoLmxvY2FsLCBpbnQpIHdpdGggZmlsZW5h
bWUgYW5kIGxpbmUgbnVtYmVyLgogICAgICIiIgorICAgICMgU2VlIEl0ZW0ubG9jYXRpb24uCisg
ICAgbG9jYXRpb24gPSBnZXRhdHRyKAorICAgICAgICBub2RlLCAibG9jYXRpb24iLCBOb25lCisg
ICAgKSAgIyB0eXBlOiBPcHRpb25hbFtUdXBsZVtzdHIsIE9wdGlvbmFsW2ludF0sIHN0cl1dCisg
ICAgaWYgbG9jYXRpb24gaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBsb2NhdGlvbls6Ml0K
KyAgICBvYmogPSBnZXRhdHRyKG5vZGUsICJvYmoiLCBOb25lKQorICAgIGlmIG9iaiBpcyBub3Qg
Tm9uZToKKyAgICAgICAgcmV0dXJuIGdldGZzbGluZW5vKG9iaikKKyAgICByZXR1cm4gZ2V0YXR0
cihub2RlLCAiZnNwYXRoIiwgInVua25vd24gbG9jYXRpb24iKSwgLTEKKworCitjbGFzcyBDb2xs
ZWN0b3IoTm9kZSk6CisgICAgIiIiQ29sbGVjdG9yIGluc3RhbmNlcyBjcmVhdGUgY2hpbGRyZW4g
dGhyb3VnaCBjb2xsZWN0KCkgYW5kIHRodXMKKyAgICBpdGVyYXRpdmVseSBidWlsZCBhIHRyZWUu
IiIiCiAKICAgICBjbGFzcyBDb2xsZWN0RXJyb3IoRXhjZXB0aW9uKToKLSAgICAgICAgIiIiIGFu
IGVycm9yIGR1cmluZyBjb2xsZWN0aW9uLCBjb250YWlucyBhIGN1c3RvbSBtZXNzYWdlLiAiIiIK
KyAgICAgICAgIiIiQW4gZXJyb3IgZHVyaW5nIGNvbGxlY3Rpb24sIGNvbnRhaW5zIGEgY3VzdG9t
IG1lc3NhZ2UuIiIiCiAKLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgIiIiIHJldHVy
bnMgYSBsaXN0IG9mIGNoaWxkcmVuIChpdGVtcyBhbmQgY29sbGVjdG9ycykKLSAgICAgICAgICAg
IGZvciB0aGlzIGNvbGxlY3Rpb24gbm9kZS4KLSAgICAgICAgIiIiCisgICAgZGVmIGNvbGxlY3Qo
c2VsZikgLT4gSXRlcmFibGVbVW5pb25bIkl0ZW0iLCAiQ29sbGVjdG9yIl1dOgorICAgICAgICAi
IiJSZXR1cm4gYSBsaXN0IG9mIGNoaWxkcmVuIChpdGVtcyBhbmQgY29sbGVjdG9ycykgZm9yIHRo
aXMKKyAgICAgICAgY29sbGVjdGlvbiBub2RlLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCJhYnN0cmFjdCIpCiAKLSAgICBkZWYgcmVwcl9mYWlsdXJlKHNlbGYsIGV4Y2lu
Zm8pOgotICAgICAgICAiIiIgcmVwcmVzZW50IGEgY29sbGVjdGlvbiBmYWlsdXJlLiAiIiIKLSAg
ICAgICAgaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKHNlbGYuQ29sbGVjdEVycm9yKToKKyAgICAj
IFRPRE86IFRoaXMgb21pdHMgdGhlIHN0eWxlPSBwYXJhbWV0ZXIgd2hpY2ggYnJlYWtzIExpc2tv
diBTdWJzdGl0dXRpb24uCisgICAgZGVmIHJlcHJfZmFpbHVyZSggICMgdHlwZTogaWdub3JlW292
ZXJyaWRlXQorICAgICAgICBzZWxmLCBleGNpbmZvOiBFeGNlcHRpb25JbmZvW0Jhc2VFeGNlcHRp
b25dCisgICAgKSAtPiBVbmlvbltzdHIsIFRlcm1pbmFsUmVwcl06CisgICAgICAgICIiIlJldHVy
biBhIHJlcHJlc2VudGF0aW9uIG9mIGEgY29sbGVjdGlvbiBmYWlsdXJlLgorCisgICAgICAgIDpw
YXJhbSBleGNpbmZvOiBFeGNlcHRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBmYWlsdXJlLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVlLCBzZWxmLkNvbGxl
Y3RFcnJvcikgYW5kIG5vdCBzZWxmLmNvbmZpZy5nZXRvcHRpb24oCisgICAgICAgICAgICAiZnVs
bHRyYWNlIiwgRmFsc2UKKyAgICAgICAgKToKICAgICAgICAgICAgIGV4YyA9IGV4Y2luZm8udmFs
dWUKICAgICAgICAgICAgIHJldHVybiBzdHIoZXhjLmFyZ3NbMF0pCi0gICAgICAgIHJldHVybiBz
ZWxmLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywgc3R5bGU9InNob3J0IikKIAotICAgIGRlZiBf
cHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbyk6CisgICAgICAgICMgUmVzcGVjdCBleHBsaWNp
dCB0YnN0eWxlIG9wdGlvbiwgYnV0IGRlZmF1bHQgdG8gInNob3J0IgorICAgICAgICAjIChfcmVw
cl9mYWlsdXJlX3B5IHVzZXMgImxvbmciIHdpdGggImZ1bGx0cmFjZSIgb3B0aW9uIGFsd2F5cyku
CisgICAgICAgIHRic3R5bGUgPSBzZWxmLmNvbmZpZy5nZXRvcHRpb24oInRic3R5bGUiLCAiYXV0
byIpCisgICAgICAgIGlmIHRic3R5bGUgPT0gImF1dG8iOgorICAgICAgICAgICAgdGJzdHlsZSA9
ICJzaG9ydCIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9mYWlsdXJlX3B5KGV4Y2luZm8s
IHN0eWxlPXRic3R5bGUpCisKKyAgICBkZWYgX3BydW5ldHJhY2ViYWNrKHNlbGYsIGV4Y2luZm86
IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0pIC0+IE5vbmU6CiAgICAgICAgIGlmIGhhc2F0
dHIoc2VsZiwgImZzcGF0aCIpOgogICAgICAgICAgICAgdHJhY2ViYWNrID0gZXhjaW5mby50cmFj
ZWJhY2sKICAgICAgICAgICAgIG50cmFjZWJhY2sgPSB0cmFjZWJhY2suY3V0KHBhdGg9c2VsZi5m
c3BhdGgpCkBAIC0zMzEsMTMgKzQ5NiwxOCBAQCBjbGFzcyBDb2xsZWN0b3IoTm9kZSk6CiBkZWYg
X2NoZWNrX2luaXRpYWxwYXRoc19mb3JfcmVscGF0aChzZXNzaW9uLCBmc3BhdGgpOgogICAgIGZv
ciBpbml0aWFsX3BhdGggaW4gc2Vzc2lvbi5faW5pdGlhbHBhdGhzOgogICAgICAgICBpZiBmc3Bh
dGguY29tbW9uKGluaXRpYWxfcGF0aCkgPT0gaW5pdGlhbF9wYXRoOgotICAgICAgICAgICAgcmV0
dXJuIGZzcGF0aC5yZWx0byhpbml0aWFsX3BhdGguZGlybmFtZSkKKyAgICAgICAgICAgIHJldHVy
biBmc3BhdGgucmVsdG8oaW5pdGlhbF9wYXRoKQogCiAKIGNsYXNzIEZTQ29sbGVjdG9yKENvbGxl
Y3Rvcik6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnNwYXRoLCBwYXJlbnQ9Tm9uZSwgY29u
ZmlnPU5vbmUsIHNlc3Npb249Tm9uZSwgbm9kZWlkPU5vbmUpOgotICAgICAgICBmc3BhdGggPSBw
eS5wYXRoLmxvY2FsKGZzcGF0aCkgICMgeHh4IG9ubHkgZm9yIHRlc3RfcmVzdWx0bG9nLnB5Pwor
ICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnNwYXRoOiBweS5wYXRo
LmxvY2FsLAorICAgICAgICBwYXJlbnQ9Tm9uZSwKKyAgICAgICAgY29uZmlnOiBPcHRpb25hbFtD
b25maWddID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbjogT3B0aW9uYWxbIlNlc3Npb24iXSA9IE5v
bmUsCisgICAgICAgIG5vZGVpZDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKSAtPiBOb25l
OgogICAgICAgICBuYW1lID0gZnNwYXRoLmJhc2VuYW1lCiAgICAgICAgIGlmIHBhcmVudCBpcyBu
b3QgTm9uZToKICAgICAgICAgICAgIHJlbCA9IGZzcGF0aC5yZWx0byhwYXJlbnQuZnNwYXRoKQpA
QCAtMzUzLDM2ICs1MjMsNjEgQEAgY2xhc3MgRlNDb2xsZWN0b3IoQ29sbGVjdG9yKToKIAogICAg
ICAgICAgICAgaWYgbm90IG5vZGVpZDoKICAgICAgICAgICAgICAgICBub2RlaWQgPSBfY2hlY2tf
aW5pdGlhbHBhdGhzX2Zvcl9yZWxwYXRoKHNlc3Npb24sIGZzcGF0aCkKLSAgICAgICAgICAgIGlm
IG9zLnNlcCAhPSBTRVA6CisgICAgICAgICAgICBpZiBub2RlaWQgYW5kIG9zLnNlcCAhPSBTRVA6
CiAgICAgICAgICAgICAgICAgbm9kZWlkID0gbm9kZWlkLnJlcGxhY2Uob3Muc2VwLCBTRVApCiAK
LSAgICAgICAgc3VwZXIoRlNDb2xsZWN0b3IsIHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAg
bmFtZSwgcGFyZW50LCBjb25maWcsIHNlc3Npb24sIG5vZGVpZD1ub2RlaWQsIGZzcGF0aD1mc3Bh
dGgKLSAgICAgICAgKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIHBhcmVudCwgY29u
ZmlnLCBzZXNzaW9uLCBub2RlaWQ9bm9kZWlkLCBmc3BhdGg9ZnNwYXRoKQorCisgICAgQGNsYXNz
bWV0aG9kCisgICAgZGVmIGZyb21fcGFyZW50KGNscywgcGFyZW50LCAqLCBmc3BhdGgsICoqa3cp
OgorICAgICAgICAiIiJUaGUgcHVibGljIGNvbnN0cnVjdG9yLiIiIgorICAgICAgICByZXR1cm4g
c3VwZXIoKS5mcm9tX3BhcmVudChwYXJlbnQ9cGFyZW50LCBmc3BhdGg9ZnNwYXRoLCAqKmt3KQor
CisgICAgZGVmIGdldGhvb2twcm94eShzZWxmLCBmc3BhdGg6IHB5LnBhdGgubG9jYWwpOgorICAg
ICAgICB3YXJuaW5ncy53YXJuKEZTQ09MTEVDVE9SX0dFVEhPT0tQUk9YWV9JU0lOSVRQQVRILCBz
dGFja2xldmVsPTIpCisgICAgICAgIHJldHVybiBzZWxmLnNlc3Npb24uZ2V0aG9va3Byb3h5KGZz
cGF0aCkKKworICAgIGRlZiBpc2luaXRwYXRoKHNlbGYsIHBhdGg6IHB5LnBhdGgubG9jYWwpIC0+
IGJvb2w6CisgICAgICAgIHdhcm5pbmdzLndhcm4oRlNDT0xMRUNUT1JfR0VUSE9PS1BST1hZX0lT
SU5JVFBBVEgsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vzc2lvbi5pc2lu
aXRwYXRoKHBhdGgpCiAKIAogY2xhc3MgRmlsZShGU0NvbGxlY3Rvcik6Ci0gICAgIiIiIGJhc2Ug
Y2xhc3MgZm9yIGNvbGxlY3RpbmcgdGVzdHMgZnJvbSBhIGZpbGUuICIiIgorICAgICIiIkJhc2Ug
Y2xhc3MgZm9yIGNvbGxlY3RpbmcgdGVzdHMgZnJvbSBhIGZpbGUuCisKKyAgICA6cmVmOmBub24t
cHl0aG9uIHRlc3RzYC4KKyAgICAiIiIKIAogCiBjbGFzcyBJdGVtKE5vZGUpOgotICAgICIiIiBh
IGJhc2ljIHRlc3QgaW52b2NhdGlvbiBpdGVtLiBOb3RlIHRoYXQgZm9yIGEgc2luZ2xlIGZ1bmN0
aW9uCi0gICAgdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgdGVzdCBpbnZvY2F0aW9uIGl0ZW1zLgot
ICAgICIiIgotICAgIG5leHRpdGVtID0gTm9uZQorICAgICIiIkEgYmFzaWMgdGVzdCBpbnZvY2F0
aW9uIGl0ZW0uCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50PU5vbmUsIGNv
bmZpZz1Ob25lLCBzZXNzaW9uPU5vbmUsIG5vZGVpZD1Ob25lKToKLSAgICAgICAgc3VwZXIoSXRl
bSwgc2VsZikuX19pbml0X18obmFtZSwgcGFyZW50LCBjb25maWcsIHNlc3Npb24sIG5vZGVpZD1u
b2RlaWQpCi0gICAgICAgIHNlbGYuX3JlcG9ydF9zZWN0aW9ucyA9IFtdCisgICAgTm90ZSB0aGF0
IGZvciBhIHNpbmdsZSBmdW5jdGlvbiB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSB0ZXN0IGludm9j
YXRpb24gaXRlbXMuCisgICAgIiIiCiAKLSAgICAgICAgIzogdXNlciBwcm9wZXJ0aWVzIGlzIGEg
bGlzdCBvZiB0dXBsZXMgKG5hbWUsIHZhbHVlKSB0aGF0IGhvbGRzIHVzZXIKLSAgICAgICAgIzog
ZGVmaW5lZCBwcm9wZXJ0aWVzIGZvciB0aGlzIHRlc3QuCi0gICAgICAgIHNlbGYudXNlcl9wcm9w
ZXJ0aWVzID0gW10KKyAgICBuZXh0aXRlbSA9IE5vbmUKIAotICAgIGRlZiBhZGRfcmVwb3J0X3Nl
Y3Rpb24oc2VsZiwgd2hlbiwga2V5LCBjb250ZW50KToKLSAgICAgICAgIiIiCi0gICAgICAgIEFk
ZHMgYSBuZXcgcmVwb3J0IHNlY3Rpb24sIHNpbWlsYXIgdG8gd2hhdCdzIGRvbmUgaW50ZXJuYWxs
eSB0byBhZGQgc3Rkb3V0IGFuZAotICAgICAgICBzdGRlcnIgY2FwdHVyZWQgb3V0cHV0OjoKKyAg
ICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIG5hbWUsCisgICAgICAgIHBh
cmVudD1Ob25lLAorICAgICAgICBjb25maWc6IE9wdGlvbmFsW0NvbmZpZ10gPSBOb25lLAorICAg
ICAgICBzZXNzaW9uOiBPcHRpb25hbFsiU2Vzc2lvbiJdID0gTm9uZSwKKyAgICAgICAgbm9kZWlk
OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCku
X19pbml0X18obmFtZSwgcGFyZW50LCBjb25maWcsIHNlc3Npb24sIG5vZGVpZD1ub2RlaWQpCisg
ICAgICAgIHNlbGYuX3JlcG9ydF9zZWN0aW9ucyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbc3Ry
LCBzdHIsIHN0cl1dCisKKyAgICAgICAgIzogQSBsaXN0IG9mIHR1cGxlcyAobmFtZSwgdmFsdWUp
IHRoYXQgaG9sZHMgdXNlciBkZWZpbmVkIHByb3BlcnRpZXMKKyAgICAgICAgIzogZm9yIHRoaXMg
dGVzdC4KKyAgICAgICAgc2VsZi51c2VyX3Byb3BlcnRpZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1
cGxlW3N0ciwgb2JqZWN0XV0KKworICAgIGRlZiBydW50ZXN0KHNlbGYpIC0+IE5vbmU6CisgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInJ1bnRlc3QgbXVzdCBiZSBpbXBsZW1lbnRl
ZCBieSBJdGVtIHN1YmNsYXNzIikKKworICAgIGRlZiBhZGRfcmVwb3J0X3NlY3Rpb24oc2VsZiwg
d2hlbjogc3RyLCBrZXk6IHN0ciwgY29udGVudDogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiJB
ZGQgYSBuZXcgcmVwb3J0IHNlY3Rpb24sIHNpbWlsYXIgdG8gd2hhdCdzIGRvbmUgaW50ZXJuYWxs
eSB0byBhZGQKKyAgICAgICAgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyZWQgb3V0cHV0OjoKIAog
ICAgICAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24oImNhbGwiLCAic3Rkb3V0IiwgInJl
cG9ydCBzZWN0aW9uIGNvbnRlbnRzIikKIApAQCAtMzkxLDI5ICs1ODYsMTkgQEAgY2xhc3MgSXRl
bShOb2RlKToKICAgICAgICAgOnBhcmFtIHN0ciBrZXk6CiAgICAgICAgICAgICBOYW1lIG9mIHRo
ZSBzZWN0aW9uLCBjYW4gYmUgY3VzdG9taXplZCBhdCB3aWxsLiBQeXRlc3QgdXNlcyBgYCJzdGRv
dXQiYGAgYW5kCiAgICAgICAgICAgICBgYCJzdGRlcnIiYGAgaW50ZXJuYWxseS4KLQogICAgICAg
ICA6cGFyYW0gc3RyIGNvbnRlbnQ6CiAgICAgICAgICAgICBUaGUgZnVsbCBjb250ZW50cyBhcyBh
IHN0cmluZy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIGNvbnRlbnQ6CiAgICAgICAgICAgICBz
ZWxmLl9yZXBvcnRfc2VjdGlvbnMuYXBwZW5kKCh3aGVuLCBrZXksIGNvbnRlbnQpKQogCi0gICAg
ZGVmIHJlcG9ydGluZm8oc2VsZik6CisgICAgZGVmIHJlcG9ydGluZm8oc2VsZikgLT4gVHVwbGVb
VW5pb25bcHkucGF0aC5sb2NhbCwgc3RyXSwgT3B0aW9uYWxbaW50XSwgc3RyXToKICAgICAgICAg
cmV0dXJuIHNlbGYuZnNwYXRoLCBOb25lLCAiIgogCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGxv
Y2F0aW9uKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9j
YXRpb24KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgbG9jYXRp
b24gPSBzZWxmLnJlcG9ydGluZm8oKQotICAgICAgICAgICAgIyBiZXN0cmVscGF0aCBpcyBhIHF1
aXRlIHNsb3cgZnVuY3Rpb24KLSAgICAgICAgICAgIGNhY2hlID0gc2VsZi5jb25maWcuX19kaWN0
X18uc2V0ZGVmYXVsdCgiX2Jlc3RyZWxwYXRoY2FjaGUiLCB7fSkKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICBmc3BhdGggPSBjYWNoZVtsb2NhdGlvblswXV0KLSAgICAgICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBmc3BhdGggPSBzZWxmLnNlc3Npb24u
ZnNwYXRoLmJlc3RyZWxwYXRoKGxvY2F0aW9uWzBdKQotICAgICAgICAgICAgICAgIGNhY2hlW2xv
Y2F0aW9uWzBdXSA9IGZzcGF0aAotICAgICAgICAgICAgbG9jYXRpb24gPSAoZnNwYXRoLCBsb2Nh
dGlvblsxXSwgc3RyKGxvY2F0aW9uWzJdKSkKLSAgICAgICAgICAgIHNlbGYuX2xvY2F0aW9uID0g
bG9jYXRpb24KLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbgorICAgIEBjYWNoZWRfcHJvcGVy
dHkKKyAgICBkZWYgbG9jYXRpb24oc2VsZikgLT4gVHVwbGVbc3RyLCBPcHRpb25hbFtpbnRdLCBz
dHJdOgorICAgICAgICBsb2NhdGlvbiA9IHNlbGYucmVwb3J0aW5mbygpCisgICAgICAgIGZzcGF0
aCA9IGFic29sdXRlcGF0aChzdHIobG9jYXRpb25bMF0pKQorICAgICAgICByZWxmc3BhdGggPSBz
ZWxmLnNlc3Npb24uX25vZGVfbG9jYXRpb25fdG9fcmVscGF0aChmc3BhdGgpCisgICAgICAgIGFz
c2VydCB0eXBlKGxvY2F0aW9uWzJdKSBpcyBzdHIKKyAgICAgICAgcmV0dXJuIChyZWxmc3BhdGgs
IGxvY2F0aW9uWzFdLCBsb2NhdGlvblsyXSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9f
cHl0ZXN0L25vc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ub3NlLnB5CmluZGV4IGJi
MmU0Mjc3ZDFjOC4uYmI4Zjk5NzcyYWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9ub3NlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L25vc2UucHkKQEAgLTEs
NDIgKzEsMTcgQEAKLSIiIiBydW4gdGVzdCBzdWl0ZXMgd3JpdHRlbiBmb3Igbm9zZS4gIiIiCi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1
bmN0aW9uCi0KLWltcG9ydCBzeXMKLQotZnJvbSBfcHl0ZXN0IGltcG9ydCB1bml0dGVzdCwgcnVu
bmVyLCBweXRob24KKyIiIlJ1biB0ZXN0c3VpdGVzIHdyaXR0ZW4gZm9yIG5vc2UuIiIiCitmcm9t
IF9weXRlc3QgaW1wb3J0IHB5dGhvbgorZnJvbSBfcHl0ZXN0IGltcG9ydCB1bml0dGVzdAogZnJv
bSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va2ltcGwKLQotCi1kZWYgZ2V0X3NraXBfZXhjZXB0
aW9ucygpOgotICAgIHNraXBfY2xhc3NlcyA9IHNldCgpCi0gICAgZm9yIG1vZHVsZV9uYW1lIGlu
ICgidW5pdHRlc3QiLCAidW5pdHRlc3QyIiwgIm5vc2UiKToKLSAgICAgICAgbW9kID0gc3lzLm1v
ZHVsZXMuZ2V0KG1vZHVsZV9uYW1lKQotICAgICAgICBpZiBoYXNhdHRyKG1vZCwgIlNraXBUZXN0
Iik6Ci0gICAgICAgICAgICBza2lwX2NsYXNzZXMuYWRkKG1vZC5Ta2lwVGVzdCkKLSAgICByZXR1
cm4gdHVwbGUoc2tpcF9jbGFzc2VzKQotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0
KGl0ZW0sIGNhbGwpOgotICAgIGlmIGNhbGwuZXhjaW5mbyBhbmQgY2FsbC5leGNpbmZvLmVycmlz
aW5zdGFuY2UoZ2V0X3NraXBfZXhjZXB0aW9ucygpKToKLSAgICAgICAgIyBsZXQncyBzdWJzdGl0
dXRlIHRoZSBleGNpbmZvIHdpdGggYSBweXRlc3Quc2tpcCBvbmUKLSAgICAgICAgY2FsbDIgPSBj
YWxsLl9fY2xhc3NfXyhsYW1iZGE6IHJ1bm5lci5za2lwKHN0cihjYWxsLmV4Y2luZm8udmFsdWUp
KSwgY2FsbC53aGVuKQotICAgICAgICBjYWxsLmV4Y2luZm8gPSBjYWxsMi5leGNpbmZvCitmcm9t
IF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0KIAogCiBAaG9va2ltcGwodHJ5bGFzdD1UcnVlKQog
ZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgogICAgIGlmIGlzX3BvdGVudGlhbF9ub3Nl
dGVzdChpdGVtKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLnBhcmVudCwgcHl0aG9uLkdl
bmVyYXRvcik6Ci0gICAgICAgICAgICBnZW4gPSBpdGVtLnBhcmVudAotICAgICAgICAgICAgaWYg
bm90IGhhc2F0dHIoZ2VuLCAiX25vc2VnZW5zZXR1cCIpOgotICAgICAgICAgICAgICAgIGNhbGxf
b3B0aW9uYWwoZ2VuLm9iaiwgInNldHVwIikKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KGdlbi5wYXJlbnQsIHB5dGhvbi5JbnN0YW5jZSk6Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxf
b3B0aW9uYWwoZ2VuLnBhcmVudC5vYmosICJzZXR1cCIpCi0gICAgICAgICAgICAgICAgZ2VuLl9u
b3NlZ2Vuc2V0dXAgPSBUcnVlCiAgICAgICAgIGlmIG5vdCBjYWxsX29wdGlvbmFsKGl0ZW0ub2Jq
LCAic2V0dXAiKToKLSAgICAgICAgICAgICMgY2FsbCBtb2R1bGUgbGV2ZWwgc2V0dXAgaWYgdGhl
cmUgaXMgbm8gb2JqZWN0IGxldmVsIG9uZQorICAgICAgICAgICAgIyBDYWxsIG1vZHVsZSBsZXZl
bCBzZXR1cCBpZiB0aGVyZSBpcyBubyBvYmplY3QgbGV2ZWwgb25lLgogICAgICAgICAgICAgY2Fs
bF9vcHRpb25hbChpdGVtLnBhcmVudC5vYmosICJzZXR1cCIpCi0gICAgICAgICMgWFhYIHRoaXMg
aW1wbGllcyB3ZSBvbmx5IGNhbGwgdGVhcmRvd24gd2hlbiBzZXR1cCB3b3JrZWQKKyAgICAgICAg
IyBYWFggVGhpcyBpbXBsaWVzIHdlIG9ubHkgY2FsbCB0ZWFyZG93biB3aGVuIHNldHVwIHdvcmtl
ZC4KICAgICAgICAgaXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlLmFkZGZpbmFsaXplcigobGFtYmRh
OiB0ZWFyZG93bl9ub3NlKGl0ZW0pKSwgaXRlbSkKIAogCkBAIC00NCwxOSArMTksMTEgQEAgZGVm
IHRlYXJkb3duX25vc2UoaXRlbSk6CiAgICAgaWYgaXNfcG90ZW50aWFsX25vc2V0ZXN0KGl0ZW0p
OgogICAgICAgICBpZiBub3QgY2FsbF9vcHRpb25hbChpdGVtLm9iaiwgInRlYXJkb3duIik6CiAg
ICAgICAgICAgICBjYWxsX29wdGlvbmFsKGl0ZW0ucGFyZW50Lm9iaiwgInRlYXJkb3duIikKLSAg
ICAgICAgIyBpZiBoYXNhdHRyKGl0ZW0ucGFyZW50LCAnX25vc2VnZW5zZXR1cCcpOgotICAgICAg
ICAjICAgICNjYWxsX29wdGlvbmFsKGl0ZW0uX25vc2VnZW5zZXR1cCwgJ3RlYXJkb3duJykKLSAg
ICAgICAgIyAgICBkZWwgaXRlbS5wYXJlbnQuX25vc2VnZW5zZXR1cAotCi0KLWRlZiBweXRlc3Rf
bWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3IpOgotICAgIGlmIGlzaW5zdGFuY2UoY29sbGVj
dG9yLCBweXRob24uR2VuZXJhdG9yKToKLSAgICAgICAgY2FsbF9vcHRpb25hbChjb2xsZWN0b3Iu
b2JqLCAic2V0dXAiKQogCiAKLWRlZiBpc19wb3RlbnRpYWxfbm9zZXRlc3QoaXRlbSk6Ci0gICAg
IyBleHRyYSBjaGVjayBuZWVkZWQgc2luY2Ugd2UgZG8gbm90IGRvIG5vc2Ugc3R5bGUgc2V0dXAv
dGVhcmRvd24KLSAgICAjIG9uIGRpcmVjdCB1bml0dGVzdCBzdHlsZSBjbGFzc2VzCitkZWYgaXNf
cG90ZW50aWFsX25vc2V0ZXN0KGl0ZW06IEl0ZW0pIC0+IGJvb2w6CisgICAgIyBFeHRyYSBjaGVj
ayBuZWVkZWQgc2luY2Ugd2UgZG8gbm90IGRvIG5vc2Ugc3R5bGUgc2V0dXAvdGVhcmRvd24KKyAg
ICAjIG9uIGRpcmVjdCB1bml0dGVzdCBzdHlsZSBjbGFzc2VzLgogICAgIHJldHVybiBpc2luc3Rh
bmNlKGl0ZW0sIHB5dGhvbi5GdW5jdGlvbikgYW5kIG5vdCBpc2luc3RhbmNlKAogICAgICAgICBp
dGVtLCB1bml0dGVzdC5UZXN0Q2FzZUZ1bmN0aW9uCiAgICAgKQpAQCAtNjcsNiArMzQsNiBAQCBk
ZWYgY2FsbF9vcHRpb25hbChvYmosIG5hbWUpOgogICAgIGlzZml4dHVyZSA9IGhhc2F0dHIobWV0
aG9kLCAiX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiIpCiAgICAgaWYgbWV0aG9kIGlzIG5vdCBOb25l
IGFuZCBub3QgaXNmaXh0dXJlIGFuZCBjYWxsYWJsZShtZXRob2QpOgogICAgICAgICAjIElmIHRo
ZXJlJ3MgYW55IHByb2JsZW1zIGFsbG93IHRoZSBleGNlcHRpb24gdG8gcmFpc2UgcmF0aGVyIHRo
YW4KLSAgICAgICAgIyBzaWxlbnRseSBpZ25vcmluZyB0aGVtCisgICAgICAgICMgc2lsZW50bHkg
aWdub3JpbmcgdGhlbS4KICAgICAgICAgbWV0aG9kKCkKICAgICAgICAgcmV0dXJuIFRydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L291dGNvbWVzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3Qvb3V0Y29tZXMucHkKaW5kZXggOGEzNjYyZTFiM2U3Li5hMmRkYzNhMWYx
YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L291dGNvbWVzLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L291dGNvbWVzLnB5CkBAIC0xLDI5ICsxLDQ2IEBACi0i
IiIKLWV4Y2VwdGlvbiBjbGFzc2VzIGFuZCBjb25zdGFudHMgaGFuZGxpbmcgdGVzdCBvdXRjb21l
cwotYXMgd2VsbCBhcyBmdW5jdGlvbnMgY3JlYXRpbmcgdGhlbQotIiIiCi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBv
cnQgcHkKKyIiIkV4Y2VwdGlvbiBjbGFzc2VzIGFuZCBjb25zdGFudHMgaGFuZGxpbmcgdGVzdCBv
dXRjb21lcyBhcyB3ZWxsIGFzCitmdW5jdGlvbnMgY3JlYXRpbmcgdGhlbS4iIiIKIGltcG9ydCBz
eXMKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQor
ZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJv
bSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKIAorVFlQRV9DSEVDS0lORyA9IEZhbHNlICAjIEF2b2lk
IGNpcmN1bGFyIGltcG9ydCB0aHJvdWdoIGNvbXBhdC4KKworaWYgVFlQRV9DSEVDS0lORzoKKyAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgTm9SZXR1cm4KKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlw
ZSAgIyBub3FhOiBGNDAxICh1c2VkIGluIHR5cGUgc3RyaW5nKQorICAgIGZyb20gdHlwaW5nX2V4
dGVuc2lvbnMgaW1wb3J0IFByb3RvY29sCitlbHNlOgorICAgICMgdHlwaW5nLlByb3RvY29sIGlz
IG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIGZyb20gUHl0aG9uIDMuOC4gSXQgaXMgYWxzbworICAg
ICMgYXZhaWxhYmxlIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMsIGJ1dCB3ZSBkb24ndCB3YW50IGEg
cnVudGltZSBkZXBlbmRlbmN5CisgICAgIyBvbiB0aGF0LiBTbyB1c2UgYSBkdW1teSBydW50aW1l
IGltcGxlbWVudGF0aW9uLgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBHZW5lcmljCisKKyAgICBQ
cm90b2NvbCA9IEdlbmVyaWMKIAotY2xhc3MgT3V0Y29tZUV4Y2VwdGlvbihCYXNlRXhjZXB0aW9u
KToKLSAgICAiIiIgT3V0Y29tZUV4Y2VwdGlvbiBhbmQgaXRzIHN1YmNsYXNzIGluc3RhbmNlcyBp
bmRpY2F0ZSBhbmQKLSAgICAgICAgY29udGFpbiBpbmZvIGFib3V0IHRlc3QgYW5kIGNvbGxlY3Rp
b24gb3V0Y29tZXMuCi0gICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnPU5vbmUs
IHB5dHJhY2U9VHJ1ZSk6CitjbGFzcyBPdXRjb21lRXhjZXB0aW9uKEJhc2VFeGNlcHRpb24pOgor
ICAgICIiIk91dGNvbWVFeGNlcHRpb24gYW5kIGl0cyBzdWJjbGFzcyBpbnN0YW5jZXMgaW5kaWNh
dGUgYW5kIGNvbnRhaW4gaW5mbworICAgIGFib3V0IHRlc3QgYW5kIGNvbGxlY3Rpb24gb3V0Y29t
ZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnOiBPcHRpb25hbFtzdHJdID0gTm9u
ZSwgcHl0cmFjZTogYm9vbCA9IFRydWUpIC0+IE5vbmU6CisgICAgICAgIGlmIG1zZyBpcyBub3Qg
Tm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobXNnLCBzdHIpOgorICAgICAgICAgICAgZXJyb3JfbXNn
ID0gKCAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCisgICAgICAgICAgICAgICAgInt9IGV4
cGVjdGVkIHN0cmluZyBhcyAnbXNnJyBwYXJhbWV0ZXIsIGdvdCAne30nIGluc3RlYWQuXG4iCisg
ICAgICAgICAgICAgICAgIlBlcmhhcHMgeW91IG1lYW50IHRvIHVzZSBhIG1hcms/IgorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGVycm9yX21zZy5mb3JtYXQodHlw
ZShzZWxmKS5fX25hbWVfXywgdHlwZShtc2cpLl9fbmFtZV9fKSkKICAgICAgICAgQmFzZUV4Y2Vw
dGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCiAgICAgICAgIHNlbGYubXNnID0gbXNnCiAgICAgICAg
IHNlbGYucHl0cmFjZSA9IHB5dHJhY2UKIAotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICBk
ZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgICBpZiBzZWxmLm1zZzoKLSAgICAgICAg
ICAgIHZhbCA9IHNlbGYubXNnCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgYnl0ZXMp
OgotICAgICAgICAgICAgICAgIHZhbCA9IHB5Ll9idWlsdGluLl90b3RleHQodmFsLCBlcnJvcnM9
InJlcGxhY2UiKQotICAgICAgICAgICAgcmV0dXJuIHZhbAotICAgICAgICByZXR1cm4gIjwlcyBp
bnN0YW5jZT4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCkKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLm1zZworICAgICAgICByZXR1cm4gIjx7fSBpbnN0YW5jZT4iLmZvcm1hdChzZWxmLl9f
Y2xhc3NfXy5fX25hbWVfXykKIAogICAgIF9fc3RyX18gPSBfX3JlcHJfXwogCkBAIC0zNiwxMTkg
KzUzLDE3MiBAQCBjbGFzcyBTa2lwcGVkKE91dGNvbWVFeGNlcHRpb24pOgogICAgICMgaW4gb3Jk
ZXIgdG8gaGF2ZSBTa2lwcGVkIGV4Y2VwdGlvbiBwcmludGluZyBzaG9ydGVyL25pY2VyCiAgICAg
X19tb2R1bGVfXyA9ICJidWlsdGlucyIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2c9Tm9u
ZSwgcHl0cmFjZT1UcnVlLCBhbGxvd19tb2R1bGVfbGV2ZWw9RmFsc2UpOgorICAgIGRlZiBfX2lu
aXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgbXNnOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK
KyAgICAgICAgcHl0cmFjZTogYm9vbCA9IFRydWUsCisgICAgICAgIGFsbG93X21vZHVsZV9sZXZl
bDogYm9vbCA9IEZhbHNlLAorICAgICkgLT4gTm9uZToKICAgICAgICAgT3V0Y29tZUV4Y2VwdGlv
bi5fX2luaXRfXyhzZWxmLCBtc2c9bXNnLCBweXRyYWNlPXB5dHJhY2UpCiAgICAgICAgIHNlbGYu
YWxsb3dfbW9kdWxlX2xldmVsID0gYWxsb3dfbW9kdWxlX2xldmVsCiAKIAogY2xhc3MgRmFpbGVk
KE91dGNvbWVFeGNlcHRpb24pOgotICAgICIiIiByYWlzZWQgZnJvbSBhbiBleHBsaWNpdCBjYWxs
IHRvIHB5dGVzdC5mYWlsKCkgIiIiCisgICAgIiIiUmFpc2VkIGZyb20gYW4gZXhwbGljaXQgY2Fs
bCB0byBweXRlc3QuZmFpbCgpLiIiIgorCiAgICAgX19tb2R1bGVfXyA9ICJidWlsdGlucyIKIAog
Ci1jbGFzcyBFeGl0KEtleWJvYXJkSW50ZXJydXB0KToKLSAgICAiIiIgcmFpc2VkIGZvciBpbW1l
ZGlhdGUgcHJvZ3JhbSBleGl0cyAobm8gdHJhY2ViYWNrcy9zdW1tYXJpZXMpIiIiCitjbGFzcyBF
eGl0KEV4Y2VwdGlvbik6CisgICAgIiIiUmFpc2VkIGZvciBpbW1lZGlhdGUgcHJvZ3JhbSBleGl0
cyAobm8gdHJhY2ViYWNrcy9zdW1tYXJpZXMpLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG1zZz0idW5rbm93biByZWFzb24iKToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYs
IG1zZzogc3RyID0gInVua25vd24gcmVhc29uIiwgcmV0dXJuY29kZTogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIHNlbGYubXNnID0gbXNnCi0gICAgICAgIEtl
eWJvYXJkSW50ZXJydXB0Ll9faW5pdF9fKHNlbGYsIG1zZykKKyAgICAgICAgc2VsZi5yZXR1cm5j
b2RlID0gcmV0dXJuY29kZQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1zZykKIAogCi0jIGV4
cG9zZWQgaGVscGVyIG1ldGhvZHMKKyMgRWxhYm9yYXRlIGhhY2sgdG8gd29yayBhcm91bmQgaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy8yMDg3LgorIyBJZGVhbGx5IHdvdWxk
IGp1c3QgYmUgYGV4aXQuRXhjZXB0aW9uID0gRXhpdGAgZXRjLgogCitfRiA9IFR5cGVWYXIoIl9G
IiwgYm91bmQ9Q2FsbGFibGVbLi4uLCBvYmplY3RdKQorX0VUID0gVHlwZVZhcigiX0VUIiwgYm91
bmQ9IlR5cGVbQmFzZUV4Y2VwdGlvbl0iKQogCi1kZWYgZXhpdChtc2cpOgotICAgICIiIiBleGl0
IHRlc3RpbmcgcHJvY2VzcyBhcyBpZiBLZXlib2FyZEludGVycnVwdCB3YXMgdHJpZ2dlcmVkLiAi
IiIKLSAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICByYWlzZSBFeGl0KG1zZykKIAor
Y2xhc3MgX1dpdGhFeGNlcHRpb24oUHJvdG9jb2xbX0YsIF9FVF0pOgorICAgIEV4Y2VwdGlvbiA9
IE5vbmUgICMgdHlwZTogX0VUCisgICAgX19jYWxsX18gPSBOb25lICAjIHR5cGU6IF9GCisKKwor
ZGVmIF93aXRoX2V4Y2VwdGlvbihleGNlcHRpb25fdHlwZTogX0VUKSAtPiBDYWxsYWJsZVtbX0Zd
LCBfV2l0aEV4Y2VwdGlvbltfRiwgX0VUXV06CisgICAgZGVmIGRlY29yYXRlKGZ1bmM6IF9GKSAt
PiBfV2l0aEV4Y2VwdGlvbltfRiwgX0VUXToKKyAgICAgICAgZnVuY193aXRoX2V4Y2VwdGlvbiA9
IGNhc3QoX1dpdGhFeGNlcHRpb25bX0YsIF9FVF0sIGZ1bmMpCisgICAgICAgIGZ1bmNfd2l0aF9l
eGNlcHRpb24uRXhjZXB0aW9uID0gZXhjZXB0aW9uX3R5cGUKKyAgICAgICAgcmV0dXJuIGZ1bmNf
d2l0aF9leGNlcHRpb24KKworICAgIHJldHVybiBkZWNvcmF0ZQogCi1leGl0LkV4Y2VwdGlvbiA9
IEV4aXQKIAorIyBFeHBvc2VkIGhlbHBlciBtZXRob2RzLgogCi1kZWYgc2tpcChtc2c9IiIsICoq
a3dhcmdzKToKLSAgICAiIiIgc2tpcCBhbiBleGVjdXRpbmcgdGVzdCB3aXRoIHRoZSBnaXZlbiBt
ZXNzYWdlLiAgTm90ZTogaXQncyB1c3VhbGx5Ci0gICAgYmV0dGVyIHRvIHVzZSB0aGUgcHl0ZXN0
Lm1hcmsuc2tpcGlmIG1hcmtlciB0byBkZWNsYXJlIGEgdGVzdCB0byBiZQotICAgIHNraXBwZWQg
dW5kZXIgY2VydGFpbiBjb25kaXRpb25zIGxpa2UgbWlzbWF0Y2hpbmcgcGxhdGZvcm1zIG9yCi0g
ICAgZGVwZW5kZW5jaWVzLiAgU2VlIHRoZSBweXRlc3Rfc2tpcHBpbmcgcGx1Z2luIGZvciBkZXRh
aWxzLgogCi0gICAgOmt3YXJnIGJvb2wgYWxsb3dfbW9kdWxlX2xldmVsOiBhbGxvd3MgdGhpcyBm
dW5jdGlvbiB0byBiZSBjYWxsZWQgYXQKLSAgICAgICAgbW9kdWxlIGxldmVsLCBza2lwcGluZyB0
aGUgcmVzdCBvZiB0aGUgbW9kdWxlLiBEZWZhdWx0IHRvIEZhbHNlLgorQF93aXRoX2V4Y2VwdGlv
bihFeGl0KQorZGVmIGV4aXQobXNnOiBzdHIsIHJldHVybmNvZGU6IE9wdGlvbmFsW2ludF0gPSBO
b25lKSAtPiAiTm9SZXR1cm4iOgorICAgICIiIkV4aXQgdGVzdGluZyBwcm9jZXNzLgorCisgICAg
OnBhcmFtIHN0ciBtc2c6IE1lc3NhZ2UgdG8gZGlzcGxheSB1cG9uIGV4aXQuCisgICAgOnBhcmFt
IGludCByZXR1cm5jb2RlOiBSZXR1cm4gY29kZSB0byBiZSB1c2VkIHdoZW4gZXhpdGluZyBweXRl
c3QuCiAgICAgIiIiCiAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgYWxsb3dfbW9k
dWxlX2xldmVsID0ga3dhcmdzLnBvcCgiYWxsb3dfbW9kdWxlX2xldmVsIiwgRmFsc2UpCi0gICAg
aWYga3dhcmdzOgotICAgICAgICBrZXlzID0gW2sgZm9yIGsgaW4ga3dhcmdzLmtleXMoKV0KLSAg
ICAgICAgcmFpc2UgVHlwZUVycm9yKCJ1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnRzOiB7fSIu
Zm9ybWF0KGtleXMpKQotICAgIHJhaXNlIFNraXBwZWQobXNnPW1zZywgYWxsb3dfbW9kdWxlX2xl
dmVsPWFsbG93X21vZHVsZV9sZXZlbCkKKyAgICByYWlzZSBFeGl0KG1zZywgcmV0dXJuY29kZSkK
IAogCi1za2lwLkV4Y2VwdGlvbiA9IFNraXBwZWQKK0Bfd2l0aF9leGNlcHRpb24oU2tpcHBlZCkK
K2RlZiBza2lwKG1zZzogc3RyID0gIiIsICosIGFsbG93X21vZHVsZV9sZXZlbDogYm9vbCA9IEZh
bHNlKSAtPiAiTm9SZXR1cm4iOgorICAgICIiIlNraXAgYW4gZXhlY3V0aW5nIHRlc3Qgd2l0aCB0
aGUgZ2l2ZW4gbWVzc2FnZS4KIAorICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBv
bmx5IGR1cmluZyB0ZXN0aW5nIChzZXR1cCwgY2FsbCBvciB0ZWFyZG93bikgb3IKKyAgICBkdXJp
bmcgY29sbGVjdGlvbiBieSB1c2luZyB0aGUgYGBhbGxvd19tb2R1bGVfbGV2ZWxgYCBmbGFnLiAg
VGhpcyBmdW5jdGlvbiBjYW4KKyAgICBiZSBjYWxsZWQgaW4gZG9jdGVzdHMgYXMgd2VsbC4KIAot
ZGVmIGZhaWwobXNnPSIiLCBweXRyYWNlPVRydWUpOgotICAgICIiIiBleHBsaWNpdGx5IGZhaWwg
YSBjdXJyZW50bHktZXhlY3V0aW5nIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gTWVzc2FnZS4KKyAgICA6
cGFyYW0gYm9vbCBhbGxvd19tb2R1bGVfbGV2ZWw6CisgICAgICAgIEFsbG93cyB0aGlzIGZ1bmN0
aW9uIHRvIGJlIGNhbGxlZCBhdCBtb2R1bGUgbGV2ZWwsIHNraXBwaW5nIHRoZSByZXN0CisgICAg
ICAgIG9mIHRoZSBtb2R1bGUuIERlZmF1bHRzIHRvIEZhbHNlLgogCi0gICAgOmFyZyBweXRyYWNl
OiBpZiBmYWxzZSB0aGUgbXNnIHJlcHJlc2VudHMgdGhlIGZ1bGwgZmFpbHVyZSBpbmZvcm1hdGlv
bgotICAgICAgICAgICAgICAgICAgYW5kIG5vIHB5dGhvbiB0cmFjZWJhY2sgd2lsbCBiZSByZXBv
cnRlZC4KKyAgICAuLiBub3RlOjoKKyAgICAgICAgSXQgaXMgYmV0dGVyIHRvIHVzZSB0aGUgOnJl
ZjpgcHl0ZXN0Lm1hcmsuc2tpcGlmIHJlZmAgbWFya2VyIHdoZW4KKyAgICAgICAgcG9zc2libGUg
dG8gZGVjbGFyZSBhIHRlc3QgdG8gYmUgc2tpcHBlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMK
KyAgICAgICAgbGlrZSBtaXNtYXRjaGluZyBwbGF0Zm9ybXMgb3IgZGVwZW5kZW5jaWVzLgorICAg
ICAgICBTaW1pbGFybHksIHVzZSB0aGUgYGAjIGRvY3Rlc3Q6ICtTS0lQYGAgZGlyZWN0aXZlIChz
ZWUgYGRvY3Rlc3QuU0tJUAorICAgICAgICA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJy
YXJ5L2RvY3Rlc3QuaHRtbCNkb2N0ZXN0LlNLSVA+YF8pCisgICAgICAgIHRvIHNraXAgYSBkb2N0
ZXN0IHN0YXRpY2FsbHkuCisgICAgIiIiCisgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisg
ICAgcmFpc2UgU2tpcHBlZChtc2c9bXNnLCBhbGxvd19tb2R1bGVfbGV2ZWw9YWxsb3dfbW9kdWxl
X2xldmVsKQorCisKK0Bfd2l0aF9leGNlcHRpb24oRmFpbGVkKQorZGVmIGZhaWwobXNnOiBzdHIg
PSAiIiwgcHl0cmFjZTogYm9vbCA9IFRydWUpIC0+ICJOb1JldHVybiI6CisgICAgIiIiRXhwbGlj
aXRseSBmYWlsIGFuIGV4ZWN1dGluZyB0ZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuCisKKyAg
ICA6cGFyYW0gc3RyIG1zZzoKKyAgICAgICAgVGhlIG1lc3NhZ2UgdG8gc2hvdyB0aGUgdXNlciBh
cyByZWFzb24gZm9yIHRoZSBmYWlsdXJlLgorICAgIDpwYXJhbSBib29sIHB5dHJhY2U6CisgICAg
ICAgIElmIEZhbHNlLCBtc2cgcmVwcmVzZW50cyB0aGUgZnVsbCBmYWlsdXJlIGluZm9ybWF0aW9u
IGFuZCBubworICAgICAgICBweXRob24gdHJhY2ViYWNrIHdpbGwgYmUgcmVwb3J0ZWQuCiAgICAg
IiIiCiAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAgcmFpc2UgRmFpbGVkKG1zZz1t
c2csIHB5dHJhY2U9cHl0cmFjZSkKIAogCi1mYWlsLkV4Y2VwdGlvbiA9IEZhaWxlZAorY2xhc3Mg
WEZhaWxlZChGYWlsZWQpOgorICAgICIiIlJhaXNlZCBmcm9tIGFuIGV4cGxpY2l0IGNhbGwgdG8g
cHl0ZXN0LnhmYWlsKCkuIiIiCiAKIAotY2xhc3MgWEZhaWxlZChmYWlsLkV4Y2VwdGlvbik6Ci0g
ICAgIiIiIHJhaXNlZCBmcm9tIGFuIGV4cGxpY2l0IGNhbGwgdG8gcHl0ZXN0LnhmYWlsKCkgIiIi
CitAX3dpdGhfZXhjZXB0aW9uKFhGYWlsZWQpCitkZWYgeGZhaWwocmVhc29uOiBzdHIgPSAiIikg
LT4gIk5vUmV0dXJuIjoKKyAgICAiIiJJbXBlcmF0aXZlbHkgeGZhaWwgYW4gZXhlY3V0aW5nIHRl
c3Qgb3Igc2V0dXAgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcmVhc29uLgogCisgICAgVGhpcyBm
dW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZHVyaW5nIHRlc3RpbmcgKHNldHVwLCBjYWxs
IG9yIHRlYXJkb3duKS4KIAotZGVmIHhmYWlsKHJlYXNvbj0iIik6Ci0gICAgIiIiIHhmYWlsIGFu
IGV4ZWN1dGluZyB0ZXN0IG9yIHNldHVwIGZ1bmN0aW9ucyB3aXRoIHRoZSBnaXZlbiByZWFzb24u
IiIiCisgICAgLi4gbm90ZTo6CisgICAgICAgIEl0IGlzIGJldHRlciB0byB1c2UgdGhlIDpyZWY6
YHB5dGVzdC5tYXJrLnhmYWlsIHJlZmAgbWFya2VyIHdoZW4KKyAgICAgICAgcG9zc2libGUgdG8g
ZGVjbGFyZSBhIHRlc3QgdG8gYmUgeGZhaWxlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMKKyAg
ICAgICAgbGlrZSBrbm93biBidWdzIG9yIG1pc3NpbmcgZmVhdHVyZXMuCisgICAgIiIiCiAgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCiAgICAgcmFpc2UgWEZhaWxlZChyZWFzb24pCiAKIAot
eGZhaWwuRXhjZXB0aW9uID0gWEZhaWxlZAorZGVmIGltcG9ydG9yc2tpcCgKKyAgICBtb2RuYW1l
OiBzdHIsIG1pbnZlcnNpb246IE9wdGlvbmFsW3N0cl0gPSBOb25lLCByZWFzb246IE9wdGlvbmFs
W3N0cl0gPSBOb25lCispIC0+IEFueToKKyAgICAiIiJJbXBvcnQgYW5kIHJldHVybiB0aGUgcmVx
dWVzdGVkIG1vZHVsZSBgYG1vZG5hbWVgYCwgb3Igc2tpcCB0aGUKKyAgICBjdXJyZW50IHRlc3Qg
aWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgaW1wb3J0ZWQuCisKKyAgICA6cGFyYW0gc3RyIG1vZG5h
bWU6CisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gaW1wb3J0LgorICAgIDpwYXJh
bSBzdHIgbWludmVyc2lvbjoKKyAgICAgICAgSWYgZ2l2ZW4sIHRoZSBpbXBvcnRlZCBtb2R1bGUn
cyBgYF9fdmVyc2lvbl9fYGAgYXR0cmlidXRlIG11c3QgYmUgYXQKKyAgICAgICAgbGVhc3QgdGhp
cyBtaW5pbWFsIHZlcnNpb24sIG90aGVyd2lzZSB0aGUgdGVzdCBpcyBzdGlsbCBza2lwcGVkLgor
ICAgIDpwYXJhbSBzdHIgcmVhc29uOgorICAgICAgICBJZiBnaXZlbiwgdGhpcyByZWFzb24gaXMg
c2hvd24gYXMgdGhlIG1lc3NhZ2Ugd2hlbiB0aGUgbW9kdWxlIGNhbm5vdAorICAgICAgICBiZSBp
bXBvcnRlZC4KIAorICAgIDpyZXR1cm5zOgorICAgICAgICBUaGUgaW1wb3J0ZWQgbW9kdWxlLiBU
aGlzIHNob3VsZCBiZSBhc3NpZ25lZCB0byBpdHMgY2Fub25pY2FsIG5hbWUuCiAKLWRlZiBpbXBv
cnRvcnNraXAobW9kbmFtZSwgbWludmVyc2lvbj1Ob25lKToKLSAgICAiIiIgcmV0dXJuIGltcG9y
dGVkIG1vZHVsZSBpZiBpdCBoYXMgYXQgbGVhc3QgIm1pbnZlcnNpb24iIGFzIGl0cwotICAgIF9f
dmVyc2lvbl9fIGF0dHJpYnV0ZS4gIElmIG5vIG1pbnZlcnNpb24gaXMgc3BlY2lmaWVkIHRoZSBh
IHNraXAKLSAgICBpcyBvbmx5IHRyaWdnZXJlZCBpZiB0aGUgbW9kdWxlIGNhbiBub3QgYmUgaW1w
b3J0ZWQuCisgICAgRXhhbXBsZTo6CisKKyAgICAgICAgZG9jdXRpbHMgPSBweXRlc3QuaW1wb3J0
b3Jza2lwKCJkb2N1dGlscyIpCiAgICAgIiIiCiAgICAgaW1wb3J0IHdhcm5pbmdzCiAKICAgICBf
X3RyYWNlYmFja2hpZGVfXyA9IFRydWUKICAgICBjb21waWxlKG1vZG5hbWUsICIiLCAiZXZhbCIp
ICAjIHRvIGNhdGNoIHN5bnRheGVycm9ycwotICAgIHNob3VsZF9za2lwID0gRmFsc2UKIAogICAg
IHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdG8g
aWdub3JlIEltcG9ydFdhcm5pbmdzIHRoYXQgbWlnaHQgaGFwcGVuIGJlY2F1c2UKKyAgICAgICAg
IyBNYWtlIHN1cmUgdG8gaWdub3JlIEltcG9ydFdhcm5pbmdzIHRoYXQgbWlnaHQgaGFwcGVuIGJl
Y2F1c2UKICAgICAgICAgIyBvZiBleGlzdGluZyBkaXJlY3RvcmllcyB3aXRoIHRoZSBzYW1lIG5h
bWUgd2UncmUgdHJ5aW5nIHRvCi0gICAgICAgICMgaW1wb3J0IGJ1dCB3aXRob3V0IGEgX19pbml0
X18ucHkgZmlsZQorICAgICAgICAjIGltcG9ydCBidXQgd2l0aG91dCBhIF9faW5pdF9fLnB5IGZp
bGUuCiAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0
RXJyb3I6Ci0gICAgICAgICAgICAjIERvIG5vdCByYWlzZSBjaGFpbmVkIGV4Y2VwdGlvbiBoZXJl
KCMxNDg1KQotICAgICAgICAgICAgc2hvdWxkX3NraXAgPSBUcnVlCi0gICAgaWYgc2hvdWxkX3Nr
aXA6Ci0gICAgICAgIHJhaXNlIFNraXBwZWQoImNvdWxkIG5vdCBpbXBvcnQgJXIiICUgKG1vZG5h
bWUsKSwgYWxsb3dfbW9kdWxlX2xldmVsPVRydWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJv
ciBhcyBleGM6CisgICAgICAgICAgICBpZiByZWFzb24gaXMgTm9uZToKKyAgICAgICAgICAgICAg
ICByZWFzb24gPSAiY291bGQgbm90IGltcG9ydCB7IXJ9OiB7fSIuZm9ybWF0KG1vZG5hbWUsIGV4
YykKKyAgICAgICAgICAgIHJhaXNlIFNraXBwZWQocmVhc29uLCBhbGxvd19tb2R1bGVfbGV2ZWw9
VHJ1ZSkgZnJvbSBOb25lCiAgICAgbW9kID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KICAgICBpZiBt
aW52ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtb2QKICAgICB2ZXJhdHRyID0gZ2V0
YXR0cihtb2QsICJfX3ZlcnNpb25fXyIsIE5vbmUpCiAgICAgaWYgbWludmVyc2lvbiBpcyBub3Qg
Tm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnJvbSBwa2dfcmVzb3VyY2VzIGltcG9y
dCBwYXJzZV92ZXJzaW9uIGFzIHB2Ci0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAg
ICAgICAgIHJhaXNlIFNraXBwZWQoCi0gICAgICAgICAgICAgICAgIndlIGhhdmUgYSByZXF1aXJl
ZCB2ZXJzaW9uIGZvciAlciBidXQgY2FuIG5vdCBpbXBvcnQgIgotICAgICAgICAgICAgICAgICJw
a2dfcmVzb3VyY2VzIHRvIHBhcnNlIHZlcnNpb24gc3RyaW5ncy4iICUgKG1vZG5hbWUsKSwKLSAg
ICAgICAgICAgICAgICBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSwKLSAgICAgICAgICAgICkKLSAg
ICAgICAgaWYgdmVyYXR0ciBpcyBOb25lIG9yIHB2KHZlcmF0dHIpIDwgcHYobWludmVyc2lvbik6
CisgICAgICAgICMgSW1wb3J0ZWQgbGF6aWx5IHRvIGltcHJvdmUgc3RhcnQtdXAgdGltZS4KKyAg
ICAgICAgZnJvbSBwYWNrYWdpbmcudmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorCisgICAgICAgIGlm
IHZlcmF0dHIgaXMgTm9uZSBvciBWZXJzaW9uKHZlcmF0dHIpIDwgVmVyc2lvbihtaW52ZXJzaW9u
KToKICAgICAgICAgICAgIHJhaXNlIFNraXBwZWQoCiAgICAgICAgICAgICAgICAgIm1vZHVsZSAl
ciBoYXMgX192ZXJzaW9uX18gJXIsIHJlcXVpcmVkIGlzOiAlciIKICAgICAgICAgICAgICAgICAl
IChtb2RuYW1lLCB2ZXJhdHRyLCBtaW52ZXJzaW9uKSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L3Bhc3RlYmluLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGFzdGVi
aW4ucHkKaW5kZXggNmFmMjAyZDFmMGE5Li4wNTQ2ZDIzNzc2MjIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L3Bhc3RlYmluLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3Bhc3RlYmluLnB5CkBAIC0xLDEzICsxLDIxIEBACi0iIiIgc3VibWl0IGZhaWx1cmUgb3Ig
dGVzdCBzZXNzaW9uIGluZm9ybWF0aW9uIHRvIGEgcGFzdGViaW4gc2VydmljZS4gIiIiCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCisiIiJTdWJtaXQgZmFpbHVyZSBvciB0ZXN0IHNlc3Npb24gaW5mb3JtYXRpb24gdG8gYSBw
YXN0ZWJpbiBzZXJ2aWNlLiIiIgoraW1wb3J0IHRlbXBmaWxlCitmcm9tIGlvIGltcG9ydCBTdHJp
bmdJTworZnJvbSB0eXBpbmcgaW1wb3J0IElPCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAog
aW1wb3J0IHB5dGVzdAotaW1wb3J0IHNpeAotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IGNyZWF0ZV90ZXJtaW5hbF93cml0ZXIKK2Zyb20gX3B5dGVzdC5jb25maWcuYXJncGFyc2lu
ZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3Quc3RvcmUgaW1wb3J0IFN0b3JlS2V5Citmcm9t
IF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0ZXIKKworCitwYXN0ZWJpbmZp
bGVfa2V5ID0gU3RvcmVLZXlbSU9bYnl0ZXNdXSgpCiAKIAotZGVmIHB5dGVzdF9hZGRvcHRpb24o
cGFyc2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgog
ICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmciKQogICAgIGdy
b3VwLl9hZGRvcHRpb24oCiAgICAgICAgICItLXBhc3RlYmluIiwKQEAgLTIxLDg5ICsyOSw4MiBA
QCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogCiAKIEBweXRlc3QuaG9va2ltcGwodHJ5
bGFzdD1UcnVlKQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKK2RlZiBweXRlc3RfY29u
ZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIGlmIGNvbmZpZy5vcHRpb24ucGFz
dGViaW4gPT0gImFsbCI6CiAgICAgICAgIHRyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1
Z2luKCJ0ZXJtaW5hbHJlcG9ydGVyIikKLSAgICAgICAgIyBpZiBubyB0ZXJtaW5hbCByZXBvcnRl
ciBwbHVnaW4gaXMgcHJlc2VudCwgbm90aGluZyB3ZSBjYW4gZG8gaGVyZTsKLSAgICAgICAgIyB0
aGlzIGNhbiBoYXBwZW4gd2hlbiB0aGlzIGZ1bmN0aW9uIGV4ZWN1dGVzIGluIGEgc2xhdmUgbm9k
ZQotICAgICAgICAjIHdoZW4gdXNpbmcgcHl0ZXN0LXhkaXN0LCBmb3IgZXhhbXBsZQorICAgICAg
ICAjIElmIG5vIHRlcm1pbmFsIHJlcG9ydGVyIHBsdWdpbiBpcyBwcmVzZW50LCBub3RoaW5nIHdl
IGNhbiBkbyBoZXJlOworICAgICAgICAjIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoaXMgZnVuY3Rp
b24gZXhlY3V0ZXMgaW4gYSB3b3JrZXIgbm9kZQorICAgICAgICAjIHdoZW4gdXNpbmcgcHl0ZXN0
LXhkaXN0LCBmb3IgZXhhbXBsZS4KICAgICAgICAgaWYgdHIgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAjIHBhc3RlYmluIGZpbGUgd2lsbCBiZSB1dGYtOCBlbmNvZGVkIGJpbmFyeSBmaWxlCi0g
ICAgICAgICAgICBjb25maWcuX3Bhc3RlYmluZmlsZSA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUo
IncrYiIpCisgICAgICAgICAgICAjIHBhc3RlYmluIGZpbGUgd2lsbCBiZSBVVEYtOCBlbmNvZGVk
IGJpbmFyeSBmaWxlLgorICAgICAgICAgICAgY29uZmlnLl9zdG9yZVtwYXN0ZWJpbmZpbGVfa2V5
XSA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoIncrYiIpCiAgICAgICAgICAgICBvbGR3cml0ZSA9
IHRyLl90dy53cml0ZQogCiAgICAgICAgICAgICBkZWYgdGVlX3dyaXRlKHMsICoqa3dhcmdzKToK
ICAgICAgICAgICAgICAgICBvbGR3cml0ZShzLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKHMsIHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uocywgc3RyKToKICAgICAgICAgICAgICAgICAgICAgcyA9IHMuZW5jb2RlKCJ1dGYtOCIp
Ci0gICAgICAgICAgICAgICAgY29uZmlnLl9wYXN0ZWJpbmZpbGUud3JpdGUocykKKyAgICAgICAg
ICAgICAgICBjb25maWcuX3N0b3JlW3Bhc3RlYmluZmlsZV9rZXldLndyaXRlKHMpCiAKICAgICAg
ICAgICAgIHRyLl90dy53cml0ZSA9IHRlZV93cml0ZQogCiAKLWRlZiBweXRlc3RfdW5jb25maWd1
cmUoY29uZmlnKToKLSAgICBpZiBoYXNhdHRyKGNvbmZpZywgIl9wYXN0ZWJpbmZpbGUiKToKLSAg
ICAgICAgIyBnZXQgdGVybWluYWwgY29udGVudHMgYW5kIGRlbGV0ZSBmaWxlCi0gICAgICAgIGNv
bmZpZy5fcGFzdGViaW5maWxlLnNlZWsoMCkKLSAgICAgICAgc2Vzc2lvbmxvZyA9IGNvbmZpZy5f
cGFzdGViaW5maWxlLnJlYWQoKQotICAgICAgICBjb25maWcuX3Bhc3RlYmluZmlsZS5jbG9zZSgp
Ci0gICAgICAgIGRlbCBjb25maWcuX3Bhc3RlYmluZmlsZQotICAgICAgICAjIHVuZG8gb3VyIHBh
dGNoaW5nIGluIHRoZSB0ZXJtaW5hbCByZXBvcnRlcgorZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShj
b25maWc6IENvbmZpZykgLT4gTm9uZToKKyAgICBpZiBwYXN0ZWJpbmZpbGVfa2V5IGluIGNvbmZp
Zy5fc3RvcmU6CisgICAgICAgIHBhc3RlYmluZmlsZSA9IGNvbmZpZy5fc3RvcmVbcGFzdGViaW5m
aWxlX2tleV0KKyAgICAgICAgIyBHZXQgdGVybWluYWwgY29udGVudHMgYW5kIGRlbGV0ZSBmaWxl
LgorICAgICAgICBwYXN0ZWJpbmZpbGUuc2VlaygwKQorICAgICAgICBzZXNzaW9ubG9nID0gcGFz
dGViaW5maWxlLnJlYWQoKQorICAgICAgICBwYXN0ZWJpbmZpbGUuY2xvc2UoKQorICAgICAgICBk
ZWwgY29uZmlnLl9zdG9yZVtwYXN0ZWJpbmZpbGVfa2V5XQorICAgICAgICAjIFVuZG8gb3VyIHBh
dGNoaW5nIGluIHRoZSB0ZXJtaW5hbCByZXBvcnRlci4KICAgICAgICAgdHIgPSBjb25maWcucGx1
Z2lubWFuYWdlci5nZXRwbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKQogICAgICAgICBkZWwgdHIu
X3R3Ll9fZGljdF9fWyJ3cml0ZSJdCi0gICAgICAgICMgd3JpdGUgc3VtbWFyeQorICAgICAgICAj
IFdyaXRlIHN1bW1hcnkuCiAgICAgICAgIHRyLndyaXRlX3NlcCgiPSIsICJTZW5kaW5nIGluZm9y
bWF0aW9uIHRvIFBhc3RlIFNlcnZpY2UiKQogICAgICAgICBwYXN0ZWJpbnVybCA9IGNyZWF0ZV9u
ZXdfcGFzdGUoc2Vzc2lvbmxvZykKICAgICAgICAgdHIud3JpdGVfbGluZSgicGFzdGViaW4gc2Vz
c2lvbi1sb2c6ICVzXG4iICUgcGFzdGViaW51cmwpCiAKIAotZGVmIGNyZWF0ZV9uZXdfcGFzdGUo
Y29udGVudHMpOgotICAgICIiIgotICAgIENyZWF0ZXMgYSBuZXcgcGFzdGUgdXNpbmcgYnBhc3Rl
Lm5ldCBzZXJ2aWNlLgorZGVmIGNyZWF0ZV9uZXdfcGFzdGUoY29udGVudHM6IFVuaW9uW3N0ciwg
Ynl0ZXNdKSAtPiBzdHI6CisgICAgIiIiQ3JlYXRlIGEgbmV3IHBhc3RlIHVzaW5nIHRoZSBicGFz
dGUubmV0IHNlcnZpY2UuCiAKLSAgICA6Y29udGVudHM6IHBhc3RlIGNvbnRlbnRzIGFzIHV0Zi04
IGVuY29kZWQgYnl0ZXMKLSAgICA6cmV0dXJuczogdXJsIHRvIHRoZSBwYXN0ZWQgY29udGVudHMK
KyAgICA6Y29udGVudHM6IFBhc3RlIGNvbnRlbnRzIHN0cmluZy4KKyAgICA6cmV0dXJuczogVVJM
IHRvIHRoZSBwYXN0ZWQgY29udGVudHMsIG9yIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAgIiIiCiAg
ICAgaW1wb3J0IHJlCisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorICAg
IGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxlbmNvZGUKIAotICAgIGlmIHN5cy52ZXJzaW9u
X2luZm8gPCAoMywgMCk6Ci0gICAgICAgIGZyb20gdXJsbGliIGltcG9ydCB1cmxvcGVuLCB1cmxl
bmNvZGUKLSAgICBlbHNlOgotICAgICAgICBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxv
cGVuCi0gICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxlbmNvZGUKLQotICAgIHBh
cmFtcyA9IHsKLSAgICAgICAgImNvZGUiOiBjb250ZW50cywKLSAgICAgICAgImxleGVyIjogInB5
dGhvbjMiIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMyBlbHNlICJweXRob24iLAotICAgICAg
ICAiZXhwaXJ5IjogIjF3ZWVrIiwKLSAgICB9CisgICAgcGFyYW1zID0geyJjb2RlIjogY29udGVu
dHMsICJsZXhlciI6ICJ0ZXh0IiwgImV4cGlyeSI6ICIxd2VlayJ9CiAgICAgdXJsID0gImh0dHBz
Oi8vYnBhc3RlLm5ldCIKLSAgICByZXNwb25zZSA9IHVybG9wZW4odXJsLCBkYXRhPXVybGVuY29k
ZShwYXJhbXMpLmVuY29kZSgiYXNjaWkiKSkucmVhZCgpCi0gICAgbSA9IHJlLnNlYXJjaChyJ2hy
ZWY9Ii9yYXcvKFx3KykiJywgcmVzcG9uc2UuZGVjb2RlKCJ1dGYtOCIpKQorICAgIHRyeToKKyAg
ICAgICAgcmVzcG9uc2UgPSAoCisgICAgICAgICAgICB1cmxvcGVuKHVybCwgZGF0YT11cmxlbmNv
ZGUocGFyYW1zKS5lbmNvZGUoImFzY2lpIikpLnJlYWQoKS5kZWNvZGUoInV0Zi04IikKKyAgICAg
ICAgKSAgIyB0eXBlOiBzdHIKKyAgICBleGNlcHQgT1NFcnJvciBhcyBleGNfaW5mbzogICMgdXJs
bGliIGVycm9ycworICAgICAgICByZXR1cm4gImJhZCByZXNwb25zZTogJXMiICUgZXhjX2luZm8K
KyAgICBtID0gcmUuc2VhcmNoKHInaHJlZj0iL3Jhdy8oXHcrKSInLCByZXNwb25zZSkKICAgICBp
ZiBtOgotICAgICAgICByZXR1cm4gIiVzL3Nob3cvJXMiICUgKHVybCwgbS5ncm91cCgxKSkKKyAg
ICAgICAgcmV0dXJuICJ7fS9zaG93L3t9Ii5mb3JtYXQodXJsLCBtLmdyb3VwKDEpKQogICAgIGVs
c2U6Ci0gICAgICAgIHJldHVybiAiYmFkIHJlc3BvbnNlOiAiICsgcmVzcG9uc2UKLQorICAgICAg
ICByZXR1cm4gImJhZCByZXNwb25zZTogaW52YWxpZCBmb3JtYXQgKCciICsgcmVzcG9uc2UgKyAi
JykiCiAKLWRlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5hbHJlcG9ydGVyKToKLSAg
ICBpbXBvcnQgX3B5dGVzdC5jb25maWcKIAorZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRl
cm1pbmFscmVwb3J0ZXI6IFRlcm1pbmFsUmVwb3J0ZXIpIC0+IE5vbmU6CiAgICAgaWYgdGVybWlu
YWxyZXBvcnRlci5jb25maWcub3B0aW9uLnBhc3RlYmluICE9ICJmYWlsZWQiOgogICAgICAgICBy
ZXR1cm4KLSAgICB0ciA9IHRlcm1pbmFscmVwb3J0ZXIKLSAgICBpZiAiZmFpbGVkIiBpbiB0ci5z
dGF0czoKKyAgICBpZiAiZmFpbGVkIiBpbiB0ZXJtaW5hbHJlcG9ydGVyLnN0YXRzOgogICAgICAg
ICB0ZXJtaW5hbHJlcG9ydGVyLndyaXRlX3NlcCgiPSIsICJTZW5kaW5nIGluZm9ybWF0aW9uIHRv
IFBhc3RlIFNlcnZpY2UiKQotICAgICAgICBmb3IgcmVwIGluIHRlcm1pbmFscmVwb3J0ZXIuc3Rh
dHMuZ2V0KCJmYWlsZWQiKToKKyAgICAgICAgZm9yIHJlcCBpbiB0ZXJtaW5hbHJlcG9ydGVyLnN0
YXRzWyJmYWlsZWQiXToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtc2cgPSBy
ZXAubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5yZXByZW50cmllc1stMV0ucmVwcmZpbGVsb2MKICAg
ICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBtc2cgPSB0
ci5fZ2V0ZmFpbHVyZWhlYWRsaW5lKHJlcCkKLSAgICAgICAgICAgIHR3ID0gX3B5dGVzdC5jb25m
aWcuY3JlYXRlX3Rlcm1pbmFsX3dyaXRlcigKLSAgICAgICAgICAgICAgICB0ZXJtaW5hbHJlcG9y
dGVyLmNvbmZpZywgc3RyaW5naW89VHJ1ZQotICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IG1zZyA9IHRlcm1pbmFscmVwb3J0ZXIuX2dldGZhaWx1cmVoZWFkbGluZShyZXApCisgICAgICAg
ICAgICBmaWxlID0gU3RyaW5nSU8oKQorICAgICAgICAgICAgdHcgPSBjcmVhdGVfdGVybWluYWxf
d3JpdGVyKHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLCBmaWxlKQogICAgICAgICAgICAgcmVwLnRv
dGVybWluYWwodHcpCi0gICAgICAgICAgICBzID0gdHcuc3RyaW5naW8uZ2V0dmFsdWUoKQorICAg
ICAgICAgICAgcyA9IGZpbGUuZ2V0dmFsdWUoKQogICAgICAgICAgICAgYXNzZXJ0IGxlbihzKQog
ICAgICAgICAgICAgcGFzdGViaW51cmwgPSBjcmVhdGVfbmV3X3Bhc3RlKHMpCi0gICAgICAgICAg
ICB0ci53cml0ZV9saW5lKCIlcyAtLT4gJXMiICUgKG1zZywgcGFzdGViaW51cmwpKQorICAgICAg
ICAgICAgdGVybWluYWxyZXBvcnRlci53cml0ZV9saW5lKCJ7fSAtLT4ge30iLmZvcm1hdChtc2cs
IHBhc3RlYmludXJsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3BhdGhs
aWIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9wYXRobGliLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzU1MjgxMDM5ZmQxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGF0aGxpYi5weQpAQCAtMCwwICsxLDYxMSBAQAor
aW1wb3J0IGF0ZXhpdAoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQg
aW1wb3J0bGliLnV0aWwKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcworaW1wb3J0IHNodXRp
bAoraW1wb3J0IHN5cworaW1wb3J0IHV1aWQKK2ltcG9ydCB3YXJuaW5ncworZnJvbSBlbnVtIGlt
cG9ydCBFbnVtCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJvbSBvcy5wYXRoIGlt
cG9ydCBleHBhbmR1c2VyCitmcm9tIG9zLnBhdGggaW1wb3J0IGV4cGFuZHZhcnMKK2Zyb20gb3Mu
cGF0aCBpbXBvcnQgaXNhYnMKK2Zyb20gb3MucGF0aCBpbXBvcnQgc2VwCitmcm9tIHBvc2l4cGF0
aCBpbXBvcnQgc2VwIGFzIHBvc2l4X3NlcAorZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQor
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUK
K2Zyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFs
Citmcm9tIHR5cGluZyBpbXBvcnQgU2V0Citmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJv
bSB0eXBpbmcgaW1wb3J0IFVuaW9uCisKK2ltcG9ydCBweQorCitmcm9tIF9weXRlc3QuY29tcGF0
IGltcG9ydCBhc3NlcnRfbmV2ZXIKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgc2tpcAor
ZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdFdhcm5pbmcKKworaWYgc3lz
LnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDYpOgorICAgIGZyb20gcGF0aGxpYiBpbXBvcnQgUGF0
aCwgUHVyZVBhdGgKK2Vsc2U6CisgICAgZnJvbSBwYXRobGliMiBpbXBvcnQgUGF0aCwgUHVyZVBh
dGgKKworX19hbGxfXyA9IFsiUGF0aCIsICJQdXJlUGF0aCJdCisKKworTE9DS19USU1FT1VUID0g
NjAgKiA2MCAqIDMKKworCitfQW55UHVyZVBhdGggPSBUeXBlVmFyKCJfQW55UHVyZVBhdGgiLCBi
b3VuZD1QdXJlUGF0aCkKKworCitkZWYgZ2V0X2xvY2tfcGF0aChwYXRoOiBfQW55UHVyZVBhdGgp
IC0+IF9BbnlQdXJlUGF0aDoKKyAgICByZXR1cm4gcGF0aC5qb2lucGF0aCgiLmxvY2siKQorCisK
K2RlZiBlbnN1cmVfcmVzZXRfZGlyKHBhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgIiIiRW5zdXJl
IHRoZSBnaXZlbiBwYXRoIGlzIGFuIGVtcHR5IGRpcmVjdG9yeS4iIiIKKyAgICBpZiBwYXRoLmV4
aXN0cygpOgorICAgICAgICBybV9yZihwYXRoKQorICAgIHBhdGgubWtkaXIoKQorCisKK2RlZiBv
bl9ybV9yZl9lcnJvcihmdW5jLCBwYXRoOiBzdHIsIGV4YywgKiwgc3RhcnRfcGF0aDogUGF0aCkg
LT4gYm9vbDoKKyAgICAiIiJIYW5kbGUga25vd24gcmVhZC1vbmx5IGVycm9ycyBkdXJpbmcgcm10
cmVlLgorCisgICAgVGhlIHJldHVybmVkIHZhbHVlIGlzIHVzZWQgb25seSBieSBvdXIgb3duIHRl
c3RzLgorICAgICIiIgorICAgIGV4Y3R5cGUsIGV4Y3ZhbHVlID0gZXhjWzoyXQorCisgICAgIyBB
bm90aGVyIHByb2Nlc3MgcmVtb3ZlZCB0aGUgZmlsZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSAicm1f
cmYiICh4ZGlzdCBmb3IgZXhhbXBsZSkuCisgICAgIyBNb3JlIGNvbnRleHQ6IGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTk3NCNpc3N1ZWNvbW1lbnQtNTQzNzk5
MDE4CisgICAgaWYgaXNpbnN0YW5jZShleGN2YWx1ZSwgRmlsZU5vdEZvdW5kRXJyb3IpOgorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIG5vdCBpc2luc3RhbmNlKGV4Y3ZhbHVlLCBQZXJt
aXNzaW9uRXJyb3IpOgorICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgUHl0ZXN0
V2FybmluZygKKyAgICAgICAgICAgICAgICAiKHJtX3JmKSBlcnJvciByZW1vdmluZyB7fVxue306
IHt9Ii5mb3JtYXQocGF0aCwgZXhjdHlwZSwgZXhjdmFsdWUpCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBpZiBmdW5jIG5vdCBpbiAob3Mucm1k
aXIsIG9zLnJlbW92ZSwgb3MudW5saW5rKToKKyAgICAgICAgaWYgZnVuYyBub3QgaW4gKG9zLm9w
ZW4sKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgUHl0ZXN0
V2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgIihybV9yZikgdW5rbm93biBmdW5jdGlvbiB7
fSB3aGVuIHJlbW92aW5nIHt9Olxue306IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg
ICAgICBmdW5jLCBwYXRoLCBleGN0eXBlLCBleGN2YWx1ZQorICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICMgQ2htb2QgKyByZXRyeS4KKyAgICBpbXBvcnQgc3RhdAorCisgICAgZGVmIGNobW9k
X3J3KHA6IHN0cikgLT4gTm9uZToKKyAgICAgICAgbW9kZSA9IG9zLnN0YXQocCkuc3RfbW9kZQor
ICAgICAgICBvcy5jaG1vZChwLCBtb2RlIHwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSKQor
CisgICAgIyBGb3IgZmlsZXMsIHdlIG5lZWQgdG8gcmVjdXJzaXZlbHkgZ28gdXB3YXJkcyBpbiB0
aGUgZGlyZWN0b3JpZXMgdG8KKyAgICAjIGVuc3VyZSB0aGV5IGFsbCBhcmUgYWxzbyB3cml0YWJs
ZS4KKyAgICBwID0gUGF0aChwYXRoKQorICAgIGlmIHAuaXNfZmlsZSgpOgorICAgICAgICBmb3Ig
cGFyZW50IGluIHAucGFyZW50czoKKyAgICAgICAgICAgIGNobW9kX3J3KHN0cihwYXJlbnQpKQor
ICAgICAgICAgICAgIyBTdG9wIHdoZW4gd2UgcmVhY2ggdGhlIG9yaWdpbmFsIHBhdGggcGFzc2Vk
IHRvIHJtX3JmLgorICAgICAgICAgICAgaWYgcGFyZW50ID09IHN0YXJ0X3BhdGg6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICBjaG1vZF9ydyhzdHIocGF0aCkpCisKKyAgICBmdW5jKHBhdGgp
CisgICAgcmV0dXJuIFRydWUKKworCitkZWYgZW5zdXJlX2V4dGVuZGVkX2xlbmd0aF9wYXRoKHBh
dGg6IFBhdGgpIC0+IFBhdGg6CisgICAgIiIiR2V0IHRoZSBleHRlbmRlZC1sZW5ndGggdmVyc2lv
biBvZiBhIHBhdGggKFdpbmRvd3MpLgorCisgICAgT24gV2luZG93cywgYnkgZGVmYXVsdCwgdGhl
IG1heGltdW0gbGVuZ3RoIG9mIGEgcGF0aCAoTUFYX1BBVEgpIGlzIDI2MAorICAgIGNoYXJhY3Rl
cnMsIGFuZCBvcGVyYXRpb25zIG9uIHBhdGhzIGxvbmdlciB0aGFuIHRoYXQgZmFpbC4gQnV0IGl0
IGlzIHBvc3NpYmxlCisgICAgdG8gb3ZlcmNvbWUgdGhpcyBieSBjb252ZXJ0aW5nIHRoZSBwYXRo
IHRvICJleHRlbmRlZC1sZW5ndGgiIGZvcm0gYmVmb3JlCisgICAgcGVyZm9ybWluZyB0aGUgb3Bl
cmF0aW9uOgorICAgIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd2lu
MzIvZmlsZWlvL25hbWluZy1hLWZpbGUjbWF4aW11bS1wYXRoLWxlbmd0aC1saW1pdGF0aW9uCisK
KyAgICBPbiBXaW5kb3dzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGV4dGVuZGVkLWxlbmd0
aCBhYnNvbHV0ZSB2ZXJzaW9uIG9mIHBhdGguCisgICAgT24gb3RoZXIgcGxhdGZvcm1zIGl0IHJl
dHVybnMgcGF0aCB1bmNoYW5nZWQuCisgICAgIiIiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0
c3dpdGgoIndpbjMyIik6CisgICAgICAgIHBhdGggPSBwYXRoLnJlc29sdmUoKQorICAgICAgICBw
YXRoID0gUGF0aChnZXRfZXh0ZW5kZWRfbGVuZ3RoX3BhdGhfc3RyKHN0cihwYXRoKSkpCisgICAg
cmV0dXJuIHBhdGgKKworCitkZWYgZ2V0X2V4dGVuZGVkX2xlbmd0aF9wYXRoX3N0cihwYXRoOiBz
dHIpIC0+IHN0cjoKKyAgICAiIiJDb252ZXJ0IGEgcGF0aCB0byBhIFdpbmRvd3MgZXh0ZW5kZWQg
bGVuZ3RoIHBhdGguIiIiCisgICAgbG9uZ19wYXRoX3ByZWZpeCA9ICJcXFxcP1xcIgorICAgIHVu
Y19sb25nX3BhdGhfcHJlZml4ID0gIlxcXFw/XFxVTkNcXCIKKyAgICBpZiBwYXRoLnN0YXJ0c3dp
dGgoKGxvbmdfcGF0aF9wcmVmaXgsIHVuY19sb25nX3BhdGhfcHJlZml4KSk6CisgICAgICAgIHJl
dHVybiBwYXRoCisgICAgIyBVTkMKKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoIlxcXFwiKToKKyAg
ICAgICAgcmV0dXJuIHVuY19sb25nX3BhdGhfcHJlZml4ICsgcGF0aFsyOl0KKyAgICByZXR1cm4g
bG9uZ19wYXRoX3ByZWZpeCArIHBhdGgKKworCitkZWYgcm1fcmYocGF0aDogUGF0aCkgLT4gTm9u
ZToKKyAgICAiIiJSZW1vdmUgdGhlIHBhdGggY29udGVudHMgcmVjdXJzaXZlbHksIGV2ZW4gaWYg
c29tZSBlbGVtZW50cworICAgIGFyZSByZWFkLW9ubHkuIiIiCisgICAgcGF0aCA9IGVuc3VyZV9l
eHRlbmRlZF9sZW5ndGhfcGF0aChwYXRoKQorICAgIG9uZXJyb3IgPSBwYXJ0aWFsKG9uX3JtX3Jm
X2Vycm9yLCBzdGFydF9wYXRoPXBhdGgpCisgICAgc2h1dGlsLnJtdHJlZShzdHIocGF0aCksIG9u
ZXJyb3I9b25lcnJvcikKKworCitkZWYgZmluZF9wcmVmaXhlZChyb290OiBQYXRoLCBwcmVmaXg6
IHN0cikgLT4gSXRlcmF0b3JbUGF0aF06CisgICAgIiIiRmluZCBhbGwgZWxlbWVudHMgaW4gcm9v
dCB0aGF0IGJlZ2luIHdpdGggdGhlIHByZWZpeCwgY2FzZSBpbnNlbnNpdGl2ZS4iIiIKKyAgICBs
X3ByZWZpeCA9IHByZWZpeC5sb3dlcigpCisgICAgZm9yIHggaW4gcm9vdC5pdGVyZGlyKCk6Cisg
ICAgICAgIGlmIHgubmFtZS5sb3dlcigpLnN0YXJ0c3dpdGgobF9wcmVmaXgpOgorICAgICAgICAg
ICAgeWllbGQgeAorCisKK2RlZiBleHRyYWN0X3N1ZmZpeGVzKGl0ZXI6IEl0ZXJhYmxlW1B1cmVQ
YXRoXSwgcHJlZml4OiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CisgICAgIiIiUmV0dXJuIHRoZSBw
YXJ0cyBvZiB0aGUgcGF0aHMgZm9sbG93aW5nIHRoZSBwcmVmaXguCisKKyAgICA6cGFyYW0gaXRl
cjogSXRlcmF0b3Igb3ZlciBwYXRoIG5hbWVzLgorICAgIDpwYXJhbSBwcmVmaXg6IEV4cGVjdGVk
IHByZWZpeCBvZiB0aGUgcGF0aCBuYW1lcy4KKyAgICAiIiIKKyAgICBwX2xlbiA9IGxlbihwcmVm
aXgpCisgICAgZm9yIHAgaW4gaXRlcjoKKyAgICAgICAgeWllbGQgcC5uYW1lW3BfbGVuOl0KKwor
CitkZWYgZmluZF9zdWZmaXhlcyhyb290OiBQYXRoLCBwcmVmaXg6IHN0cikgLT4gSXRlcmF0b3Jb
c3RyXToKKyAgICAiIiJDb21iaW5lIGZpbmRfcHJlZml4ZXMgYW5kIGV4dHJhY3Rfc3VmZml4ZXMu
IiIiCisgICAgcmV0dXJuIGV4dHJhY3Rfc3VmZml4ZXMoZmluZF9wcmVmaXhlZChyb290LCBwcmVm
aXgpLCBwcmVmaXgpCisKKworZGVmIHBhcnNlX251bShtYXliZV9udW0pIC0+IGludDoKKyAgICAi
IiJQYXJzZSBudW1iZXIgcGF0aCBzdWZmaXhlcywgcmV0dXJucyAtMSBvbiBlcnJvci4iIiIKKyAg
ICB0cnk6CisgICAgICAgIHJldHVybiBpbnQobWF5YmVfbnVtKQorICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yOgorICAgICAgICByZXR1cm4gLTEKKworCitkZWYgX2ZvcmNlX3N5bWxpbmsoCisgICAgcm9v
dDogUGF0aCwgdGFyZ2V0OiBVbmlvbltzdHIsIFB1cmVQYXRoXSwgbGlua190bzogVW5pb25bc3Ry
LCBQYXRoXQorKSAtPiBOb25lOgorICAgICIiIkhlbHBlciB0byBjcmVhdGUgdGhlIGN1cnJlbnQg
c3ltbGluay4KKworICAgIEl0J3MgZnVsbCBvZiByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgcmVh
c29uYWJseSBPSyB0byBpZ25vcmUKKyAgICBmb3IgdGhlIGNvbnRleHQgb2YgYmVzdCBlZmZvcnQg
bGlua2luZyB0byB0aGUgbGF0ZXN0IHRlc3QgcnVuLgorCisgICAgVGhlIHByZXN1bXB0aW9uIGJl
aW5nIHRoYXQgaW4gY2FzZSBvZiBtdWNoIHBhcmFsbGVsaXNtCisgICAgdGhlIGluYWNjdXJhY3kg
aXMgZ29pbmcgdG8gYmUgYWNjZXB0YWJsZS4KKyAgICAiIiIKKyAgICBjdXJyZW50X3N5bWxpbmsg
PSByb290LmpvaW5wYXRoKHRhcmdldCkKKyAgICB0cnk6CisgICAgICAgIGN1cnJlbnRfc3ltbGlu
ay51bmxpbmsoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5Ogor
ICAgICAgICBjdXJyZW50X3N5bWxpbmsuc3ltbGlua190byhsaW5rX3RvKQorICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgIHBhc3MKKworCitkZWYgbWFrZV9udW1iZXJlZF9kaXIocm9vdDog
UGF0aCwgcHJlZml4OiBzdHIpIC0+IFBhdGg6CisgICAgIiIiQ3JlYXRlIGEgZGlyZWN0b3J5IHdp
dGggYW4gaW5jcmVhc2VkIG51bWJlciBhcyBzdWZmaXggZm9yIHRoZSBnaXZlbiBwcmVmaXguIiIi
CisgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAjIHRyeSB1cCB0byAxMCB0aW1lcyB0
byBjcmVhdGUgdGhlIGZvbGRlcgorICAgICAgICBtYXhfZXhpc3RpbmcgPSBtYXgobWFwKHBhcnNl
X251bSwgZmluZF9zdWZmaXhlcyhyb290LCBwcmVmaXgpKSwgZGVmYXVsdD0tMSkKKyAgICAgICAg
bmV3X251bWJlciA9IG1heF9leGlzdGluZyArIDEKKyAgICAgICAgbmV3X3BhdGggPSByb290Lmpv
aW5wYXRoKCJ7fXt9Ii5mb3JtYXQocHJlZml4LCBuZXdfbnVtYmVyKSkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgbmV3X3BhdGgubWtkaXIoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgor
ICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgX2ZvcmNlX3N5bWxp
bmsocm9vdCwgcHJlZml4ICsgImN1cnJlbnQiLCBuZXdfcGF0aCkKKyAgICAgICAgICAgIHJldHVy
biBuZXdfcGF0aAorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIE9TRXJyb3IoCisgICAgICAgICAg
ICAiY291bGQgbm90IGNyZWF0ZSBudW1iZXJlZCBkaXIgd2l0aCBwcmVmaXggIgorICAgICAgICAg
ICAgIntwcmVmaXh9IGluIHtyb290fSBhZnRlciAxMCB0cmllcyIuZm9ybWF0KHByZWZpeD1wcmVm
aXgsIHJvb3Q9cm9vdCkKKyAgICAgICAgKQorCisKK2RlZiBjcmVhdGVfY2xlYW51cF9sb2NrKHA6
IFBhdGgpIC0+IFBhdGg6CisgICAgIiIiQ3JlYXRlIGEgbG9jayB0byBwcmV2ZW50IHByZW1hdHVy
ZSBmb2xkZXIgY2xlYW51cC4iIiIKKyAgICBsb2NrX3BhdGggPSBnZXRfbG9ja19wYXRoKHApCisg
ICAgdHJ5OgorICAgICAgICBmZCA9IG9zLm9wZW4oc3RyKGxvY2tfcGF0aCksIG9zLk9fV1JPTkxZ
IHwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCwgMG82NDQpCisgICAgZXhjZXB0IEZpbGVFeGlzdHNF
cnJvciBhcyBlOgorICAgICAgICByYWlzZSBPU0Vycm9yKCJjYW5ub3QgY3JlYXRlIGxvY2tmaWxl
IGluIHtwYXRofSIuZm9ybWF0KHBhdGg9cCkpIGZyb20gZQorICAgIGVsc2U6CisgICAgICAgIHBp
ZCA9IG9zLmdldHBpZCgpCisgICAgICAgIHNwaWQgPSBzdHIocGlkKS5lbmNvZGUoKQorICAgICAg
ICBvcy53cml0ZShmZCwgc3BpZCkKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIGlmIG5v
dCBsb2NrX3BhdGguaXNfZmlsZSgpOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigibG9jayBw
YXRoIGdvdCByZW5hbWVkIGFmdGVyIHN1Y2Nlc3NmdWwgY3JlYXRpb24iKQorICAgICAgICByZXR1
cm4gbG9ja19wYXRoCisKKworZGVmIHJlZ2lzdGVyX2NsZWFudXBfbG9ja19yZW1vdmFsKGxvY2tf
cGF0aDogUGF0aCwgcmVnaXN0ZXI9YXRleGl0LnJlZ2lzdGVyKToKKyAgICAiIiJSZWdpc3RlciBh
IGNsZWFudXAgZnVuY3Rpb24gZm9yIHJlbW92aW5nIGEgbG9jaywgYnkgZGVmYXVsdCBvbiBhdGV4
aXQuIiIiCisgICAgcGlkID0gb3MuZ2V0cGlkKCkKKworICAgIGRlZiBjbGVhbnVwX29uX2V4aXQo
bG9ja19wYXRoOiBQYXRoID0gbG9ja19wYXRoLCBvcmlnaW5hbF9waWQ6IGludCA9IHBpZCkgLT4g
Tm9uZToKKyAgICAgICAgY3VycmVudF9waWQgPSBvcy5nZXRwaWQoKQorICAgICAgICBpZiBjdXJy
ZW50X3BpZCAhPSBvcmlnaW5hbF9waWQ6CisgICAgICAgICAgICAjIGZvcmsKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2NrX3BhdGgudW5saW5rKCkKKyAg
ICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICByZXR1cm4gcmVn
aXN0ZXIoY2xlYW51cF9vbl9leGl0KQorCisKK2RlZiBtYXliZV9kZWxldGVfYV9udW1iZXJlZF9k
aXIocGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAiIiJSZW1vdmUgYSBudW1iZXJlZCBkaXJlY3Rv
cnkgaWYgaXRzIGxvY2sgY2FuIGJlIG9idGFpbmVkIGFuZCBpdCBkb2VzCisgICAgbm90IHNlZW0g
dG8gYmUgaW4gdXNlLiIiIgorICAgIHBhdGggPSBlbnN1cmVfZXh0ZW5kZWRfbGVuZ3RoX3BhdGgo
cGF0aCkKKyAgICBsb2NrX3BhdGggPSBOb25lCisgICAgdHJ5OgorICAgICAgICBsb2NrX3BhdGgg
PSBjcmVhdGVfY2xlYW51cF9sb2NrKHBhdGgpCisgICAgICAgIHBhcmVudCA9IHBhdGgucGFyZW50
CisKKyAgICAgICAgZ2FyYmFnZSA9IHBhcmVudC5qb2lucGF0aCgiZ2FyYmFnZS17fSIuZm9ybWF0
KHV1aWQudXVpZDQoKSkpCisgICAgICAgIHBhdGgucmVuYW1lKGdhcmJhZ2UpCisgICAgICAgIHJt
X3JmKGdhcmJhZ2UpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICMgIGtub3duIHJhY2Vz
OgorICAgICAgICAjICAqIG90aGVyIHByb2Nlc3MgZGlkIGEgY2xlYW51cCBhdCB0aGUgc2FtZSB0
aW1lCisgICAgICAgICMgICogZGVsZXRhYmxlIGZvbGRlciB3YXMgZm91bmQKKyAgICAgICAgIyAg
KiBwcm9jZXNzIGN3ZCAoV2luZG93cykKKyAgICAgICAgcmV0dXJuCisgICAgZmluYWxseToKKyAg
ICAgICAgIyBJZiB3ZSBjcmVhdGVkIHRoZSBsb2NrLCBlbnN1cmUgd2UgcmVtb3ZlIGl0IGV2ZW4g
aWYgd2UgZmFpbGVkCisgICAgICAgICMgdG8gcHJvcGVybHkgcmVtb3ZlIHRoZSBudW1iZXJlZCBk
aXIuCisgICAgICAgIGlmIGxvY2tfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBsb2NrX3BhdGgudW5saW5rKCkKKyAgICAgICAgICAgIGV4Y2VwdCBP
U0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworCitkZWYgZW5zdXJlX2RlbGV0YWJsZShw
YXRoOiBQYXRoLCBjb25zaWRlcl9sb2NrX2RlYWRfaWZfY3JlYXRlZF9iZWZvcmU6IGZsb2F0KSAt
PiBib29sOgorICAgICIiIkNoZWNrIGlmIGBwYXRoYCBpcyBkZWxldGFibGUgYmFzZWQgb24gd2hl
dGhlciB0aGUgbG9jayBmaWxlIGlzIGV4cGlyZWQuIiIiCisgICAgaWYgcGF0aC5pc19zeW1saW5r
KCk6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGxvY2sgPSBnZXRfbG9ja19wYXRoKHBhdGgp
CisgICAgdHJ5OgorICAgICAgICBpZiBub3QgbG9jay5pc19maWxlKCk6CisgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIHdlIG1pZ2h0IG5vdCBo
YXZlIGFjY2VzcyB0byB0aGUgbG9jayBmaWxlIGF0IGFsbCwgaW4gdGhpcyBjYXNlIGFzc3VtZQor
ICAgICAgICAjIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBlbnRpcmUgZGlyZWN0b3J5ICgj
NzQ5MSkuCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHRyeToKKyAgICAgICAgbG9ja190aW1l
ID0gbG9jay5zdGF0KCkuc3RfbXRpbWUKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBpZiBsb2NrX3RpbWUgPCBjb25zaWRlcl9s
b2NrX2RlYWRfaWZfY3JlYXRlZF9iZWZvcmU6CisgICAgICAgICAgICAjIFdlIHdhbnQgdG8gaWdu
b3JlIGFueSBlcnJvcnMgd2hpbGUgdHJ5aW5nIHRvIHJlbW92ZSB0aGUgbG9jayBzdWNoIGFzOgor
ICAgICAgICAgICAgIyAtIFBlcm1pc3Npb25EZW5pZWQsIGxpa2UgdGhlIGZpbGUgcGVybWlzc2lv
bnMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsb2NrIGNyZWF0aW9uOworICAgICAgICAgICAgIyAt
IEZpbGVOb3RGb3VuZEVycm9yLCBpbiBjYXNlIGFub3RoZXIgcHl0ZXN0IHByb2Nlc3MgZ290IGhl
cmUgZmlyc3Q7CisgICAgICAgICAgICAjIGFuZCBhbnkgb3RoZXIgY2F1c2Ugb2YgZmFpbHVyZS4K
KyAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5zdXBwcmVzcyhPU0Vycm9yKToKKyAgICAgICAg
ICAgICAgICBsb2NrLnVubGluaygpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKworZGVmIHRyeV9jbGVhbnVwKHBhdGg6IFBhdGgsIGNvbnNpZGVy
X2xvY2tfZGVhZF9pZl9jcmVhdGVkX2JlZm9yZTogZmxvYXQpIC0+IE5vbmU6CisgICAgIiIiVHJ5
IHRvIGNsZWFudXAgYSBmb2xkZXIgaWYgd2UgY2FuIGVuc3VyZSBpdCdzIGRlbGV0YWJsZS4iIiIK
KyAgICBpZiBlbnN1cmVfZGVsZXRhYmxlKHBhdGgsIGNvbnNpZGVyX2xvY2tfZGVhZF9pZl9jcmVh
dGVkX2JlZm9yZSk6CisgICAgICAgIG1heWJlX2RlbGV0ZV9hX251bWJlcmVkX2RpcihwYXRoKQor
CisKK2RlZiBjbGVhbnVwX2NhbmRpZGF0ZXMocm9vdDogUGF0aCwgcHJlZml4OiBzdHIsIGtlZXA6
IGludCkgLT4gSXRlcmF0b3JbUGF0aF06CisgICAgIiIiTGlzdCBjYW5kaWRhdGVzIGZvciBudW1i
ZXJlZCBkaXJlY3RvcmllcyB0byBiZSByZW1vdmVkIC0gZm9sbG93cyBweS5wYXRoLiIiIgorICAg
IG1heF9leGlzdGluZyA9IG1heChtYXAocGFyc2VfbnVtLCBmaW5kX3N1ZmZpeGVzKHJvb3QsIHBy
ZWZpeCkpLCBkZWZhdWx0PS0xKQorICAgIG1heF9kZWxldGUgPSBtYXhfZXhpc3RpbmcgLSBrZWVw
CisgICAgcGF0aHMgPSBmaW5kX3ByZWZpeGVkKHJvb3QsIHByZWZpeCkKKyAgICBwYXRocywgcGF0
aHMyID0gaXRlcnRvb2xzLnRlZShwYXRocykKKyAgICBudW1iZXJzID0gbWFwKHBhcnNlX251bSwg
ZXh0cmFjdF9zdWZmaXhlcyhwYXRoczIsIHByZWZpeCkpCisgICAgZm9yIHBhdGgsIG51bWJlciBp
biB6aXAocGF0aHMsIG51bWJlcnMpOgorICAgICAgICBpZiBudW1iZXIgPD0gbWF4X2RlbGV0ZToK
KyAgICAgICAgICAgIHlpZWxkIHBhdGgKKworCitkZWYgY2xlYW51cF9udW1iZXJlZF9kaXIoCisg
ICAgcm9vdDogUGF0aCwgcHJlZml4OiBzdHIsIGtlZXA6IGludCwgY29uc2lkZXJfbG9ja19kZWFk
X2lmX2NyZWF0ZWRfYmVmb3JlOiBmbG9hdAorKSAtPiBOb25lOgorICAgICIiIkNsZWFudXAgZm9y
IGxvY2sgZHJpdmVuIG51bWJlcmVkIGRpcmVjdG9yaWVzLiIiIgorICAgIGZvciBwYXRoIGluIGNs
ZWFudXBfY2FuZGlkYXRlcyhyb290LCBwcmVmaXgsIGtlZXApOgorICAgICAgICB0cnlfY2xlYW51
cChwYXRoLCBjb25zaWRlcl9sb2NrX2RlYWRfaWZfY3JlYXRlZF9iZWZvcmUpCisgICAgZm9yIHBh
dGggaW4gcm9vdC5nbG9iKCJnYXJiYWdlLSoiKToKKyAgICAgICAgdHJ5X2NsZWFudXAocGF0aCwg
Y29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVmb3JlKQorCisKK2RlZiBtYWtlX251bWJl
cmVkX2Rpcl93aXRoX2NsZWFudXAoCisgICAgcm9vdDogUGF0aCwgcHJlZml4OiBzdHIsIGtlZXA6
IGludCwgbG9ja190aW1lb3V0OiBmbG9hdAorKSAtPiBQYXRoOgorICAgICIiIkNyZWF0ZSBhIG51
bWJlcmVkIGRpciB3aXRoIGEgY2xlYW51cCBsb2NrIGFuZCByZW1vdmUgb2xkIG9uZXMuIiIiCisg
ICAgZSA9IE5vbmUKKyAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHAgPSBtYWtlX251bWJlcmVkX2Rpcihyb290LCBwcmVmaXgpCisgICAgICAgICAgICBs
b2NrX3BhdGggPSBjcmVhdGVfY2xlYW51cF9sb2NrKHApCisgICAgICAgICAgICByZWdpc3Rlcl9j
bGVhbnVwX2xvY2tfcmVtb3ZhbChsb2NrX3BhdGgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZXhjOgorICAgICAgICAgICAgZSA9IGV4YworICAgICAgICBlbHNlOgorICAgICAgICAgICAg
Y29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVmb3JlID0gcC5zdGF0KCkuc3RfbXRpbWUg
LSBsb2NrX3RpbWVvdXQKKyAgICAgICAgICAgICMgUmVnaXN0ZXIgYSBjbGVhbnVwIGZvciBwcm9n
cmFtIGV4aXQKKyAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcigKKyAgICAgICAgICAgICAgICBj
bGVhbnVwX251bWJlcmVkX2RpciwKKyAgICAgICAgICAgICAgICByb290LAorICAgICAgICAgICAg
ICAgIHByZWZpeCwKKyAgICAgICAgICAgICAgICBrZWVwLAorICAgICAgICAgICAgICAgIGNvbnNp
ZGVyX2xvY2tfZGVhZF9pZl9jcmVhdGVkX2JlZm9yZSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHJldHVybiBwCisgICAgYXNzZXJ0IGUgaXMgbm90IE5vbmUKKyAgICByYWlzZSBlCisKKwor
ZGVmIHJlc29sdmVfZnJvbV9zdHIoaW5wdXQ6IHN0ciwgcm9vdHBhdGg6IFBhdGgpIC0+IFBhdGg6
CisgICAgaW5wdXQgPSBleHBhbmR1c2VyKGlucHV0KQorICAgIGlucHV0ID0gZXhwYW5kdmFycyhp
bnB1dCkKKyAgICBpZiBpc2FicyhpbnB1dCk6CisgICAgICAgIHJldHVybiBQYXRoKGlucHV0KQor
ICAgIGVsc2U6CisgICAgICAgIHJldHVybiByb290cGF0aC5qb2lucGF0aChpbnB1dCkKKworCitk
ZWYgZm5tYXRjaF9leChwYXR0ZXJuOiBzdHIsIHBhdGgpIC0+IGJvb2w6CisgICAgIiIiQSBwb3J0
IG9mIEZOTWF0Y2hlciBmcm9tIHB5LnBhdGguY29tbW9uIHdoaWNoIHdvcmtzIHdpdGggUHVyZVBh
dGgoKSBpbnN0YW5jZXMuCisKKyAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYWxnb3Jp
dGhtIGFuZCBQdXJlUGF0aC5tYXRjaCgpIGlzIHRoYXQgdGhlCisgICAgbGF0dGVyIG1hdGNoZXMg
IioqIiBnbG9iIGV4cHJlc3Npb25zIGZvciBlYWNoIHBhcnQgb2YgdGhlIHBhdGgsIHdoaWxlCisg
ICAgdGhpcyBhbGdvcml0aG0gdXNlcyB0aGUgd2hvbGUgcGF0aCBpbnN0ZWFkLgorCisgICAgRm9y
IGV4YW1wbGU6CisgICAgICAgICJ0ZXN0cy9mb28vYmFyL2RvYy90ZXN0X2Zvby5weSIgbWF0Y2hl
cyBwYXR0ZXJuICJ0ZXN0cy8qKi9kb2MvdGVzdCoucHkiCisgICAgICAgIHdpdGggdGhpcyBhbGdv
cml0aG0sIGJ1dCBub3Qgd2l0aCBQdXJlUGF0aC5tYXRjaCgpLgorCisgICAgVGhpcyBhbGdvcml0
aG0gd2FzIHBvcnRlZCB0byBrZWVwIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGlu
ZworICAgIHNldHRpbmdzIHdoaWNoIGFzc3VtZSBwYXRocyBtYXRjaCBhY2NvcmRpbmcgdGhpcyBs
b2dpYy4KKworICAgIFJlZmVyZW5jZXM6CisgICAgKiBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9p
c3N1ZTI5MjQ5CisgICAgKiBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0NzMxCisgICAg
IiIiCisgICAgcGF0aCA9IFB1cmVQYXRoKHBhdGgpCisgICAgaXN3aW4zMiA9IHN5cy5wbGF0Zm9y
bS5zdGFydHN3aXRoKCJ3aW4iKQorCisgICAgaWYgaXN3aW4zMiBhbmQgc2VwIG5vdCBpbiBwYXR0
ZXJuIGFuZCBwb3NpeF9zZXAgaW4gcGF0dGVybjoKKyAgICAgICAgIyBSdW5uaW5nIG9uIFdpbmRv
d3MsIHRoZSBwYXR0ZXJuIGhhcyBubyBXaW5kb3dzIHBhdGggc2VwYXJhdG9ycywKKyAgICAgICAg
IyBhbmQgdGhlIHBhdHRlcm4gaGFzIG9uZSBvciBtb3JlIFBvc2l4IHBhdGggc2VwYXJhdG9ycy4g
UmVwbGFjZQorICAgICAgICAjIHRoZSBQb3NpeCBwYXRoIHNlcGFyYXRvcnMgd2l0aCB0aGUgV2lu
ZG93cyBwYXRoIHNlcGFyYXRvci4KKyAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZShw
b3NpeF9zZXAsIHNlcCkKKworICAgIGlmIHNlcCBub3QgaW4gcGF0dGVybjoKKyAgICAgICAgbmFt
ZSA9IHBhdGgubmFtZQorICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSBzdHIocGF0aCkKKyAgICAg
ICAgaWYgcGF0aC5pc19hYnNvbHV0ZSgpIGFuZCBub3Qgb3MucGF0aC5pc2FicyhwYXR0ZXJuKToK
KyAgICAgICAgICAgIHBhdHRlcm4gPSAiKnt9e30iLmZvcm1hdChvcy5zZXAsIHBhdHRlcm4pCisg
ICAgcmV0dXJuIGZubWF0Y2guZm5tYXRjaChuYW1lLCBwYXR0ZXJuKQorCisKK2RlZiBwYXJ0cyhz
OiBzdHIpIC0+IFNldFtzdHJdOgorICAgIHBhcnRzID0gcy5zcGxpdChzZXApCisgICAgcmV0dXJu
IHtzZXAuam9pbihwYXJ0c1s6IGkgKyAxXSkgb3Igc2VwIGZvciBpIGluIHJhbmdlKGxlbihwYXJ0
cykpfQorCisKK2RlZiBzeW1saW5rX29yX3NraXAoc3JjLCBkc3QsICoqa3dhcmdzKToKKyAgICAi
IiJNYWtlIGEgc3ltbGluaywgb3Igc2tpcCB0aGUgdGVzdCBpbiBjYXNlIHN5bWxpbmtzIGFyZSBu
b3Qgc3VwcG9ydGVkLiIiIgorICAgIHRyeToKKyAgICAgICAgb3Muc3ltbGluayhzdHIoc3JjKSwg
c3RyKGRzdCksICoqa3dhcmdzKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgIHNr
aXAoInN5bWxpbmtzIG5vdCBzdXBwb3J0ZWQ6IHt9Ii5mb3JtYXQoZSkpCisKKworY2xhc3MgSW1w
b3J0TW9kZShFbnVtKToKKyAgICAiIiJQb3NzaWJsZSB2YWx1ZXMgZm9yIGBtb2RlYCBwYXJhbWV0
ZXIgb2YgYGltcG9ydF9wYXRoYC4iIiIKKworICAgIHByZXBlbmQgPSAicHJlcGVuZCIKKyAgICBh
cHBlbmQgPSAiYXBwZW5kIgorICAgIGltcG9ydGxpYiA9ICJpbXBvcnRsaWIiCisKKworY2xhc3Mg
SW1wb3J0UGF0aE1pc21hdGNoRXJyb3IoSW1wb3J0RXJyb3IpOgorICAgICIiIlJhaXNlZCBvbiBp
bXBvcnRfcGF0aCgpIGlmIHRoZXJlIGlzIGEgbWlzbWF0Y2ggb2YgX19maWxlX18ncy4KKworICAg
IFRoaXMgY2FuIGhhcHBlbiB3aGVuIGBpbXBvcnRfcGF0aGAgaXMgY2FsbGVkIG11bHRpcGxlIHRp
bWVzIHdpdGggZGlmZmVyZW50IGZpbGVuYW1lcyB0aGF0IGhhcworICAgIHRoZSBzYW1lIGJhc2Vu
YW1lIGJ1dCByZXNpZGUgaW4gcGFja2FnZXMKKyAgICAoZm9yIGV4YW1wbGUgIi90ZXN0czEvdGVz
dF9mb28ucHkiIGFuZCAiL3Rlc3RzMi90ZXN0X2Zvby5weSIpLgorICAgICIiIgorCisKK2RlZiBp
bXBvcnRfcGF0aCgKKyAgICBwOiBVbmlvbltzdHIsIHB5LnBhdGgubG9jYWwsIFBhdGhdLAorICAg
ICosCisgICAgbW9kZTogVW5pb25bc3RyLCBJbXBvcnRNb2RlXSA9IEltcG9ydE1vZGUucHJlcGVu
ZAorKSAtPiBNb2R1bGVUeXBlOgorICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIGEgbW9kdWxlIGZy
b20gdGhlIGdpdmVuIHBhdGgsIHdoaWNoIGNhbiBiZSBhIGZpbGUgKGEgbW9kdWxlKSBvcgorICAg
IGEgZGlyZWN0b3J5IChhIHBhY2thZ2UpLgorCisgICAgVGhlIGltcG9ydCBtZWNoYW5pc20gdXNl
ZCBpcyBjb250cm9sbGVkIGJ5IHRoZSBgbW9kZWAgcGFyYW1ldGVyOgorCisgICAgKiBgbW9kZSA9
PSBJbXBvcnRNb2RlLnByZXBlbmRgOiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIG1vZHVs
ZSAob3IgcGFja2FnZSwgdGFraW5nCisgICAgICBgX19pbml0X18ucHlgIGZpbGVzIGludG8gYWNj
b3VudCkgd2lsbCBiZSBwdXQgYXQgdGhlICpzdGFydCogb2YgYHN5cy5wYXRoYCBiZWZvcmUKKyAg
ICAgIGJlaW5nIGltcG9ydGVkIHdpdGggYF9faW1wb3J0X18uCisKKyAgICAqIGBtb2RlID09IElt
cG9ydE1vZGUuYXBwZW5kYDogc2FtZSBhcyBgcHJlcGVuZGAsIGJ1dCB0aGUgZGlyZWN0b3J5IHdp
bGwgYmUgYXBwZW5kZWQKKyAgICAgIHRvIHRoZSBlbmQgb2YgYHN5cy5wYXRoYCwgaWYgbm90IGFs
cmVhZHkgaW4gYHN5cy5wYXRoYC4KKworICAgICogYG1vZGUgPT0gSW1wb3J0TW9kZS5pbXBvcnRs
aWJgOiB1c2VzIG1vcmUgZmluZSBjb250cm9sIG1lY2hhbmlzbXMgcHJvdmlkZWQgYnkgYGltcG9y
dGxpYmAKKyAgICAgIHRvIGltcG9ydCB0aGUgbW9kdWxlLCB3aGljaCBhdm9pZHMgaGF2aW5nIHRv
IHVzZSBgX19pbXBvcnRfX2AgYW5kIG11Y2sgd2l0aCBgc3lzLnBhdGhgCisgICAgICBhdCBhbGwu
IEl0IGVmZmVjdGl2ZWx5IGFsbG93cyBoYXZpbmcgc2FtZS1uYW1lZCB0ZXN0IG1vZHVsZXMgaW4g
ZGlmZmVyZW50IHBsYWNlcy4KKworICAgIDpyYWlzZXMgSW1wb3J0UGF0aE1pc21hdGNoRXJyb3I6
CisgICAgICAgIElmIGFmdGVyIGltcG9ydGluZyB0aGUgZ2l2ZW4gYHBhdGhgIGFuZCB0aGUgbW9k
dWxlIGBfX2ZpbGVfX2AKKyAgICAgICAgYXJlIGRpZmZlcmVudC4gT25seSByYWlzZWQgaW4gYHBy
ZXBlbmRgIGFuZCBgYXBwZW5kYCBtb2Rlcy4KKyAgICAiIiIKKyAgICBtb2RlID0gSW1wb3J0TW9k
ZShtb2RlKQorCisgICAgcGF0aCA9IFBhdGgoc3RyKHApKQorCisgICAgaWYgbm90IHBhdGguZXhp
c3RzKCk6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKHBhdGgpCisKKyAgICBpZiBtb2RlIGlz
IEltcG9ydE1vZGUuaW1wb3J0bGliOgorICAgICAgICBtb2R1bGVfbmFtZSA9IHBhdGguc3RlbQor
CisgICAgICAgIGZvciBtZXRhX2ltcG9ydGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgICAgICAg
ICBzcGVjID0gbWV0YV9pbXBvcnRlci5maW5kX3NwZWMobW9kdWxlX25hbWUsIFtzdHIocGF0aC5w
YXJlbnQpXSkKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRp
bC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihtb2R1bGVfbmFtZSwgc3RyKHBhdGgpKQorCisgICAg
ICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAg
ICAgICAgICAgICAgICJDYW4ndCBmaW5kIG1vZHVsZSB7fSBhdCBsb2NhdGlvbiB7fSIuZm9ybWF0
KG1vZHVsZV9uYW1lLCBzdHIocGF0aCkpCisgICAgICAgICAgICApCisgICAgICAgIG1vZCA9IGlt
cG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc3BlYy5sb2FkZXIu
ZXhlY19tb2R1bGUobW9kKSAgIyB0eXBlOiBpZ25vcmVbdW5pb24tYXR0cl0KKyAgICAgICAgcmV0
dXJuIG1vZAorCisgICAgcGtnX3BhdGggPSByZXNvbHZlX3BhY2thZ2VfcGF0aChwYXRoKQorICAg
IGlmIHBrZ19wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICBwa2dfcm9vdCA9IHBrZ19wYXRoLnBh
cmVudAorICAgICAgICBuYW1lcyA9IGxpc3QocGF0aC53aXRoX3N1ZmZpeCgiIikucmVsYXRpdmVf
dG8ocGtnX3Jvb3QpLnBhcnRzKQorICAgICAgICBpZiBuYW1lc1stMV0gPT0gIl9faW5pdF9fIjoK
KyAgICAgICAgICAgIG5hbWVzLnBvcCgpCisgICAgICAgIG1vZHVsZV9uYW1lID0gIi4iLmpvaW4o
bmFtZXMpCisgICAgZWxzZToKKyAgICAgICAgcGtnX3Jvb3QgPSBwYXRoLnBhcmVudAorICAgICAg
ICBtb2R1bGVfbmFtZSA9IHBhdGguc3RlbQorCisgICAgIyBDaGFuZ2Ugc3lzLnBhdGggcGVybWFu
ZW50bHk6IHJlc3RvcmluZyBpdCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gd291bGQgY2F1
c2Ugc3VycHJpc2luZworICAgICMgcHJvYmxlbXMgYmVjYXVzZSBvZiBkZWxheWVkIGltcG9ydHM6
IGZvciBleGFtcGxlLCBhIGNvbmZ0ZXN0LnB5IGZpbGUgaW1wb3J0ZWQgYnkgdGhpcyBmdW5jdGlv
bgorICAgICMgbWlnaHQgaGF2ZSBsb2NhbCBpbXBvcnRzLCB3aGljaCB3b3VsZCBmYWlsIGF0IHJ1
bnRpbWUgaWYgd2UgcmVzdG9yZWQgc3lzLnBhdGguCisgICAgaWYgbW9kZSBpcyBJbXBvcnRNb2Rl
LmFwcGVuZDoKKyAgICAgICAgaWYgc3RyKHBrZ19yb290KSBub3QgaW4gc3lzLnBhdGg6CisgICAg
ICAgICAgICBzeXMucGF0aC5hcHBlbmQoc3RyKHBrZ19yb290KSkKKyAgICBlbGlmIG1vZGUgaXMg
SW1wb3J0TW9kZS5wcmVwZW5kOgorICAgICAgICBpZiBzdHIocGtnX3Jvb3QpICE9IHN5cy5wYXRo
WzBdOgorICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHN0cihwa2dfcm9vdCkpCisgICAg
ZWxzZToKKyAgICAgICAgYXNzZXJ0X25ldmVyKG1vZGUpCisKKyAgICBpbXBvcnRsaWIuaW1wb3J0
X21vZHVsZShtb2R1bGVfbmFtZSkKKworICAgIG1vZCA9IHN5cy5tb2R1bGVzW21vZHVsZV9uYW1l
XQorICAgIGlmIHBhdGgubmFtZSA9PSAiX19pbml0X18ucHkiOgorICAgICAgICByZXR1cm4gbW9k
CisKKyAgICBpZ25vcmUgPSBvcy5lbnZpcm9uLmdldCgiUFlfSUdOT1JFX0lNUE9SVE1JU01BVENI
IiwgIiIpCisgICAgaWYgaWdub3JlICE9ICIxIjoKKyAgICAgICAgbW9kdWxlX2ZpbGUgPSBtb2Qu
X19maWxlX18KKyAgICAgICAgaWYgbW9kdWxlX2ZpbGUuZW5kc3dpdGgoKCIucHljIiwgIi5weW8i
KSk6CisgICAgICAgICAgICBtb2R1bGVfZmlsZSA9IG1vZHVsZV9maWxlWzotMV0KKyAgICAgICAg
aWYgbW9kdWxlX2ZpbGUuZW5kc3dpdGgob3MucGF0aC5zZXAgKyAiX19pbml0X18ucHkiKToKKyAg
ICAgICAgICAgIG1vZHVsZV9maWxlID0gbW9kdWxlX2ZpbGVbOiAtKGxlbihvcy5wYXRoLnNlcCAr
ICJfX2luaXRfXy5weSIpKV0KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpc19zYW1lID0g
b3MucGF0aC5zYW1lZmlsZShzdHIocGF0aCksIG1vZHVsZV9maWxlKQorICAgICAgICBleGNlcHQg
RmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBpc19zYW1lID0gRmFsc2UKKworICAgICAg
ICBpZiBub3QgaXNfc2FtZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydFBhdGhNaXNtYXRjaEVy
cm9yKG1vZHVsZV9uYW1lLCBtb2R1bGVfZmlsZSwgcGF0aCkKKworICAgIHJldHVybiBtb2QKKwor
CitkZWYgcmVzb2x2ZV9wYWNrYWdlX3BhdGgocGF0aDogUGF0aCkgLT4gT3B0aW9uYWxbUGF0aF06
CisgICAgIiIiUmV0dXJuIHRoZSBQeXRob24gcGFja2FnZSBwYXRoIGJ5IGxvb2tpbmcgZm9yIHRo
ZSBsYXN0CisgICAgZGlyZWN0b3J5IHVwd2FyZHMgd2hpY2ggc3RpbGwgY29udGFpbnMgYW4gX19p
bml0X18ucHkuCisKKyAgICBSZXR1cm5zIE5vbmUgaWYgaXQgY2FuIG5vdCBiZSBkZXRlcm1pbmVk
LgorICAgICIiIgorICAgIHJlc3VsdCA9IE5vbmUKKyAgICBmb3IgcGFyZW50IGluIGl0ZXJ0b29s
cy5jaGFpbigocGF0aCwpLCBwYXRoLnBhcmVudHMpOgorICAgICAgICBpZiBwYXJlbnQuaXNfZGly
KCk6CisgICAgICAgICAgICBpZiBub3QgcGFyZW50LmpvaW5wYXRoKCJfX2luaXRfXy5weSIpLmlz
X2ZpbGUoKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm90IHBhcmVu
dC5uYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg
ICByZXN1bHQgPSBwYXJlbnQKKyAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIHZpc2l0KAorICAg
IHBhdGg6IHN0ciwgcmVjdXJzZTogQ2FsbGFibGVbWyJvcy5EaXJFbnRyeVtzdHJdIl0sIGJvb2xd
CispIC0+IEl0ZXJhdG9yWyJvcy5EaXJFbnRyeVtzdHJdIl06CisgICAgIiIiV2FsayBhIGRpcmVj
dG9yeSByZWN1cnNpdmVseSwgaW4gYnJlYWR0aC1maXJzdCBvcmRlci4KKworICAgIEVudHJpZXMg
YXQgZWFjaCBkaXJlY3RvcnkgbGV2ZWwgYXJlIHNvcnRlZC4KKyAgICAiIiIKKyAgICBlbnRyaWVz
ID0gc29ydGVkKG9zLnNjYW5kaXIocGF0aCksIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5Lm5hbWUp
CisgICAgeWllbGQgZnJvbSBlbnRyaWVzCisgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAg
ICAgIGlmIGVudHJ5LmlzX2Rpcihmb2xsb3dfc3ltbGlua3M9RmFsc2UpIGFuZCByZWN1cnNlKGVu
dHJ5KToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gdmlzaXQoZW50cnkucGF0aCwgcmVjdXJzZSkK
KworCitkZWYgYWJzb2x1dGVwYXRoKHBhdGg6IFVuaW9uW1BhdGgsIHN0cl0pIC0+IFBhdGg6Cisg
ICAgIiIiQ29udmVydCBhIHBhdGggdG8gYW4gYWJzb2x1dGUgcGF0aCB1c2luZyBvcy5wYXRoLmFi
c3BhdGguCisKKyAgICBQcmVmZXIgdGhpcyBvdmVyIFBhdGgucmVzb2x2ZSgpIChzZWUgIzY1MjMp
LgorICAgIFByZWZlciB0aGlzIG92ZXIgUGF0aC5hYnNvbHV0ZSgpIChub3QgcHVibGljLCBkb2Vz
bid0IG5vcm1hbGl6ZSkuCisgICAgIiIiCisgICAgcmV0dXJuIFBhdGgob3MucGF0aC5hYnNwYXRo
KHN0cihwYXRoKSkpCisKKworZGVmIGNvbW1vbnBhdGgocGF0aDE6IFBhdGgsIHBhdGgyOiBQYXRo
KSAtPiBPcHRpb25hbFtQYXRoXToKKyAgICAiIiJSZXR1cm4gdGhlIGNvbW1vbiBwYXJ0IHNoYXJl
ZCB3aXRoIHRoZSBvdGhlciBwYXRoLCBvciBOb25lIGlmIHRoZXJlIGlzCisgICAgbm8gY29tbW9u
IHBhcnQuIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gUGF0aChvcy5wYXRoLmNvbW1vbnBh
dGgoKHN0cihwYXRoMSksIHN0cihwYXRoMikpKSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworCitkZWYgYmVzdHJlbHBhdGgoZGlyZWN0b3J5OiBQYXRoLCBk
ZXN0OiBQYXRoKSAtPiBzdHI6CisgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIGEgcmVs
YXRpdmUgcGF0aCBmcm9tIGRpcmVjdG9yeSB0byBkZXN0IHN1Y2gKKyAgICB0aGF0IGRpcmVjdG9y
eS9iZXN0cmVscGF0aCA9PSBkZXN0LgorCisgICAgSWYgbm8gc3VjaCBwYXRoIGNhbiBiZSBkZXRl
cm1pbmVkLCByZXR1cm5zIGRlc3QuCisgICAgIiIiCisgICAgaWYgZGVzdCA9PSBkaXJlY3Rvcnk6
CisgICAgICAgIHJldHVybiBvcy5jdXJkaXIKKyAgICAjIEZpbmQgdGhlIGxvbmdlc3QgY29tbW9u
IGRpcmVjdG9yeS4KKyAgICBiYXNlID0gY29tbW9ucGF0aChkaXJlY3RvcnksIGRlc3QpCisgICAg
IyBDYW4gYmUgdGhlIGNhc2Ugb24gV2luZG93cy4KKyAgICBpZiBub3QgYmFzZToKKyAgICAgICAg
cmV0dXJuIHN0cihkZXN0KQorICAgIHJlbGRpcmVjdG9yeSA9IGRpcmVjdG9yeS5yZWxhdGl2ZV90
byhiYXNlKQorICAgIHJlbGRlc3QgPSBkZXN0LnJlbGF0aXZlX3RvKGJhc2UpCisgICAgcmV0dXJu
IG9zLnBhdGguam9pbigKKyAgICAgICAgIyBCYWNrIGZyb20gZGlyZWN0b3J5IHRvIGJhc2UuCisg
ICAgICAgICooW29zLnBhcmRpcl0gKiBsZW4ocmVsZGlyZWN0b3J5LnBhcnRzKSksCisgICAgICAg
ICMgRm9yd2FyZCBmcm9tIGJhc2UgdG8gZGVzdC4KKyAgICAgICAgKnJlbGRlc3QucGFydHMsCisg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHkudHlwZWQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9weS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvcHl0ZXN0ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRlc3Rlci5weQpp
bmRleCBjOWRlZmUwM2E2NjguLmQ3ODA2MmE4NmNlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvcHl0ZXN0ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHl0
ZXN0ZXIucHkKQEAgLTEsNDUgKzEsNzIgQEAKLSIiIihkaXNhYmxlZCBieSBkZWZhdWx0KSBzdXBw
b3J0IGZvciB0ZXN0aW5nIHB5dGVzdCBhbmQgcHl0ZXN0IHBsdWdpbnMuIiIiCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0K
LWltcG9ydCBjb2RlY3MKKyIiIihEaXNhYmxlZCBieSBkZWZhdWx0KSBzdXBwb3J0IGZvciB0ZXN0
aW5nIHB5dGVzdCBhbmQgcHl0ZXN0IHBsdWdpbnMuIiIiCitpbXBvcnQgY29sbGVjdGlvbnMuYWJj
CiBpbXBvcnQgZ2MKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3Jt
CiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc2l4CiBpbXBvcnQgc3lzCi1p
bXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNo
Ci0KK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUK
K2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitm
cm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9t
IHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJv
bSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIGZyb20gd2Vh
a3JlZiBpbXBvcnQgV2Vha0tleURpY3Rpb25hcnkKIAotZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1w
b3J0IE11bHRpQ2FwdHVyZSwgU3lzQ2FwdHVyZQotZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBT
b3VyY2UKIGltcG9ydCBweQotaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0
IFNlc3Npb24sIEVYSVRfT0sKLWZyb20gX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQg
QXNzZXJ0aW9uUmV3cml0aW5nSG9vaworZnJvbSBpbmljb25maWcgaW1wb3J0IEluaUNvbmZpZwog
Ci0KLVBZVEVTVF9GVUxMUEFUSCA9IG9zLnBhdGguYWJzcGF0aChweXRlc3QuX19maWxlX18ucnN0
cmlwKCJvYyIpKS5yZXBsYWNlKAotICAgICIkcHkuY2xhc3MiLCAiLnB5IgotKQoraW1wb3J0IHB5
dGVzdAorZnJvbSBfcHl0ZXN0IGltcG9ydCB0aW1pbmcKK2Zyb20gX3B5dGVzdC5fY29kZSBpbXBv
cnQgU291cmNlCitmcm9tIF9weXRlc3QuY2FwdHVyZSBpbXBvcnQgX2dldF9tdWx0aWNhcHR1cmUK
K2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGlt
cG9ydCBvdmVybG9hZAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORwor
ZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgX1BsdWdneVBsdWdpbgorZnJvbSBfcHl0ZXN0LmNv
bmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQor
ZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgUHl0ZXN0UGx1Z2luTWFuYWdlcgorZnJvbSBfcHl0
ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGltcG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5maXh0dXJl
cyBpbXBvcnQgRml4dHVyZVJlcXVlc3QKK2Zyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9u
Citmcm9tIF9weXRlc3QubW9ua2V5cGF0Y2ggaW1wb3J0IE1vbmtleVBhdGNoCitmcm9tIF9weXRl
c3Qubm9kZXMgaW1wb3J0IENvbGxlY3RvcgorZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVt
Citmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgbWFrZV9udW1iZXJlZF9kaXIKK2Zyb20gX3B5
dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBNb2R1
bGUKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBDb2xsZWN0UmVwb3J0Citmcm9tIF9weXRl
c3QucmVwb3J0cyBpbXBvcnQgVGVzdFJlcG9ydAorZnJvbSBfcHl0ZXN0LnRtcGRpciBpbXBvcnQg
VGVtcGRpckZhY3RvcnkKKworaWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBv
cnQgVHlwZQorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwKKworICAg
IGltcG9ydCBwZXhwZWN0CiAKIAogSUdOT1JFX1BBTSA9IFsgICMgZmlsZW5hbWVzIGFkZGVkIHdo
ZW4gb2J0YWluaW5nIGRldGFpbHMgYWJvdXQgdGhlIGN1cnJlbnQgdXNlcgotICAgIHUiL3Zhci9s
aWIvc3NzL21jL3Bhc3N3ZCIKKyAgICAiL3Zhci9saWIvc3NzL21jL3Bhc3N3ZCIKIF0KIAogCi1k
ZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2Vy
OiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgcGFyc2VyLmFkZG9wdGlvbigKICAgICAgICAgIi0tbHNv
ZiIsCiAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgIGRlc3Q9Imxzb2YiLAog
ICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSgicnVuIEZEIGNoZWNrcyBpZiBs
c29mIGlzIGF2YWlsYWJsZSIpLAorICAgICAgICBoZWxwPSJydW4gRkQgY2hlY2tzIGlmIGxzb2Yg
aXMgYXZhaWxhYmxlIiwKICAgICApCiAKICAgICBwYXJzZXIuYWRkb3B0aW9uKApAQCAtNTMsMjgg
KzgwLDM1IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAgICksCiAgICAg
KQogCisgICAgcGFyc2VyLmFkZGluaSgKKyAgICAgICAgInB5dGVzdGVyX2V4YW1wbGVfZGlyIiwg
aGVscD0iZGlyZWN0b3J5IHRvIHRha2UgdGhlIHB5dGVzdGVyIGV4YW1wbGUgZmlsZXMgZnJvbSIK
KyAgICApCiAKLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisKK2RlZiBweXRlc3RfY29u
ZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIGlmIGNvbmZpZy5nZXR2YWx1ZSgi
bHNvZiIpOgogICAgICAgICBjaGVja2VyID0gTHNvZkZkTGVha0NoZWNrZXIoKQogICAgICAgICBp
ZiBjaGVja2VyLm1hdGNoaW5nX3BsYXRmb3JtKCk6CiAgICAgICAgICAgICBjb25maWcucGx1Z2lu
bWFuYWdlci5yZWdpc3RlcihjaGVja2VyKQogCisgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUo
CisgICAgICAgICJtYXJrZXJzIiwKKyAgICAgICAgInB5dGVzdGVyX2V4YW1wbGVfcGF0aCgqcGF0
aF9zZWdtZW50cyk6IGpvaW4gdGhlIGdpdmVuIHBhdGggIgorICAgICAgICAic2VnbWVudHMgdG8g
YHB5dGVzdGVyX2V4YW1wbGVfZGlyYCBmb3IgdGhpcyB0ZXN0LiIsCisgICAgKQogCi1jbGFzcyBM
c29mRmRMZWFrQ2hlY2tlcihvYmplY3QpOgotCi0gICAgZGVmIGdldF9vcGVuX2ZpbGVzKHNlbGYp
OgotICAgICAgICBvdXQgPSBzZWxmLl9leGVjX2xzb2YoKQotICAgICAgICBvcGVuX2ZpbGVzID0g
c2VsZi5fcGFyc2VfbHNvZl9vdXRwdXQob3V0KQotICAgICAgICByZXR1cm4gb3Blbl9maWxlcwot
Ci0gICAgZGVmIF9leGVjX2xzb2Yoc2VsZik6Ci0gICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCi0g
ICAgICAgIHJldHVybiBweS5wcm9jZXNzLmNtZGV4ZWMoImxzb2YgLUZmbjAgLXAgJWQiICUgcGlk
KQogCi0gICAgZGVmIF9wYXJzZV9sc29mX291dHB1dChzZWxmLCBvdXQpOgorY2xhc3MgTHNvZkZk
TGVha0NoZWNrZXI6CisgICAgZGVmIGdldF9vcGVuX2ZpbGVzKHNlbGYpIC0+IExpc3RbVHVwbGVb
c3RyLCBzdHJdXToKKyAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5ydW4oCisgICAgICAgICAgICAo
Imxzb2YiLCAiLUZmbjAiLCAiLXAiLCBzdHIob3MuZ2V0cGlkKCkpKSwKKyAgICAgICAgICAgIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZO
VUxMLAorICAgICAgICAgICAgY2hlY2s9VHJ1ZSwKKyAgICAgICAgICAgIHVuaXZlcnNhbF9uZXds
aW5lcz1UcnVlLAorICAgICAgICApLnN0ZG91dAogCi0gICAgICAgIGRlZiBpc29wZW4obGluZSk6
CisgICAgICAgIGRlZiBpc29wZW4obGluZTogc3RyKSAtPiBib29sOgogICAgICAgICAgICAgcmV0
dXJuIGxpbmUuc3RhcnRzd2l0aCgiZiIpIGFuZCAoCiAgICAgICAgICAgICAgICAgImRlbGV0ZWQi
IG5vdCBpbiBsaW5lCiAgICAgICAgICAgICAgICAgYW5kICJtZW0iIG5vdCBpbiBsaW5lCkBAIC05
NiwxOSArMTMwLDE2IEBAIGNsYXNzIExzb2ZGZExlYWtDaGVja2VyKG9iamVjdCk6CiAKICAgICAg
ICAgcmV0dXJuIG9wZW5fZmlsZXMKIAotICAgIGRlZiBtYXRjaGluZ19wbGF0Zm9ybShzZWxmKToK
KyAgICBkZWYgbWF0Y2hpbmdfcGxhdGZvcm0oc2VsZikgLT4gYm9vbDoKICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgcHkucHJvY2Vzcy5jbWRleGVjKCJsc29mIC12IikKLSAgICAgICAgZXhjZXB0
IChweS5wcm9jZXNzLmNtZGV4ZWMuRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAg
ICAgICAjIGNtZGV4ZWMgbWF5IHJhaXNlIFVuaWNvZGVEZWNvZGVFcnJvciBvbiBXaW5kb3dzIHN5
c3RlbXMgd2l0aAotICAgICAgICAgICAgIyBsb2NhbGUgb3RoZXIgdGhhbiBFbmdsaXNoOgotICAg
ICAgICAgICAgIyBodHRwczovL2JpdGJ1Y2tldC5vcmcvcHl0ZXN0LWRldi9weS9pc3N1ZXMvNjYK
KyAgICAgICAgICAgIHN1YnByb2Nlc3MucnVuKCgibHNvZiIsICItdiIpLCBjaGVjaz1UcnVlKQor
ICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToK
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0
dXJuIFRydWUKIAogICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5Zmly
c3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woc2VsZiwgaXRlbSk6Cisg
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKHNlbGYsIGl0ZW06IEl0ZW0pIC0+IEdlbmVy
YXRvcltOb25lLCBOb25lLCBOb25lXToKICAgICAgICAgbGluZXMxID0gc2VsZi5nZXRfb3Blbl9m
aWxlcygpCiAgICAgICAgIHlpZWxkCiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAicHlweV92ZXJz
aW9uX2luZm8iKToKQEAgLTExOCwxMzkgKzE0OSw5MSBAQCBjbGFzcyBMc29mRmRMZWFrQ2hlY2tl
cihvYmplY3QpOgogICAgICAgICBuZXdfZmRzID0ge3RbMF0gZm9yIHQgaW4gbGluZXMyfSAtIHt0
WzBdIGZvciB0IGluIGxpbmVzMX0KICAgICAgICAgbGVha2VkX2ZpbGVzID0gW3QgZm9yIHQgaW4g
bGluZXMyIGlmIHRbMF0gaW4gbmV3X2Zkc10KICAgICAgICAgaWYgbGVha2VkX2ZpbGVzOgotICAg
ICAgICAgICAgZXJyb3IgPSBbXQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKioqKiAlcyBG
RCBsZWFrYWdlIGRldGVjdGVkIiAlIGxlbihsZWFrZWRfZmlsZXMpKQotICAgICAgICAgICAgZXJy
b3IuZXh0ZW5kKFtzdHIoZikgZm9yIGYgaW4gbGVha2VkX2ZpbGVzXSkKLSAgICAgICAgICAgIGVy
cm9yLmFwcGVuZCgiKioqIEJlZm9yZToiKQotICAgICAgICAgICAgZXJyb3IuZXh0ZW5kKFtzdHIo
ZikgZm9yIGYgaW4gbGluZXMxXSkKLSAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiKioqIEFmdGVy
OiIpCi0gICAgICAgICAgICBlcnJvci5leHRlbmQoW3N0cihmKSBmb3IgZiBpbiBsaW5lczJdKQot
ICAgICAgICAgICAgZXJyb3IuYXBwZW5kKGVycm9yWzBdKQotICAgICAgICAgICAgZXJyb3IuYXBw
ZW5kKCIqKiogZnVuY3Rpb24gJXM6JXM6ICVzICIgJSBpdGVtLmxvY2F0aW9uKQotICAgICAgICAg
ICAgZXJyb3IuYXBwZW5kKCJTZWUgaXNzdWUgIzIzNjYiKQotICAgICAgICAgICAgaXRlbS53YXJu
KCIiLCAiXG4iLmpvaW4oZXJyb3IpKQotCi0KLSMgWFhYIGNvcGllZCBmcm9tIGV4ZWNuZXQncyBj
b25mdGVzdC5weSAtIG5lZWRzIHRvIGJlIG1lcmdlZAotd2lucHltYXAgPSB7Ci0gICAgInB5dGhv
bjIuNyI6IHIiQzpcUHl0aG9uMjdccHl0aG9uLmV4ZSIsCi0gICAgInB5dGhvbjMuNCI6IHIiQzpc
UHl0aG9uMzRccHl0aG9uLmV4ZSIsCi0gICAgInB5dGhvbjMuNSI6IHIiQzpcUHl0aG9uMzVccHl0
aG9uLmV4ZSIsCi0gICAgInB5dGhvbjMuNiI6IHIiQzpcUHl0aG9uMzZccHl0aG9uLmV4ZSIsCi19
Ci0KLQotZGVmIGdldGV4ZWN1dGFibGUobmFtZSwgY2FjaGU9e30pOgotICAgIHRyeToKLSAgICAg
ICAgcmV0dXJuIGNhY2hlW25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBleGVj
dXRhYmxlID0gcHkucGF0aC5sb2NhbC5zeXNmaW5kKG5hbWUpCi0gICAgICAgIGlmIGV4ZWN1dGFi
bGU6Ci0gICAgICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwotCi0gICAgICAgICAgICBwb3BlbiA9
IHN1YnByb2Nlc3MuUG9wZW4oCi0gICAgICAgICAgICAgICAgW3N0cihleGVjdXRhYmxlKSwgIi0t
dmVyc2lvbiJdLAotICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotICAg
ICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICApCi0gICAg
ICAgICAgICBvdXQsIGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIGlmIG5h
bWUgPT0gImp5dGhvbiI6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGVyciBvciAiMi41IiBub3Qg
aW4gZXJyOgotICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gTm9uZQotICAgICAgICAg
ICAgICAgIGlmICIyLjUuMiIgaW4gZXJyOgotICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxl
ID0gTm9uZSAgIyBodHRwOi8vYnVncy5qeXRob24ub3JnL2lzc3VlMTc5MAotICAgICAgICAgICAg
ZWxpZiBwb3Blbi5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAgICAgICAgICAgIyBoYW5kbGUgcHll
bnYncyAxMjcKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gTm9uZQotICAgICAgICBjYWNo
ZVtuYW1lXSA9IGV4ZWN1dGFibGUKLSAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUKLQotCi1AcHl0
ZXN0LmZpeHR1cmUocGFyYW1zPVsicHl0aG9uMi43IiwgInB5dGhvbjMuNCIsICJweXB5IiwgInB5
cHkzIl0pCi1kZWYgYW55cHl0aG9uKHJlcXVlc3QpOgotICAgIG5hbWUgPSByZXF1ZXN0LnBhcmFt
Ci0gICAgZXhlY3V0YWJsZSA9IGdldGV4ZWN1dGFibGUobmFtZSkKLSAgICBpZiBleGVjdXRhYmxl
IGlzIE5vbmU6Ci0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAg
ICAgZXhlY3V0YWJsZSA9IHdpbnB5bWFwLmdldChuYW1lLCBOb25lKQotICAgICAgICAgICAgaWYg
ZXhlY3V0YWJsZToKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gcHkucGF0aC5sb2NhbChl
eGVjdXRhYmxlKQotICAgICAgICAgICAgICAgIGlmIGV4ZWN1dGFibGUuY2hlY2soKToKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUKLSAgICAgICAgcHl0ZXN0LnNraXAoIm5v
IHN1aXRhYmxlICVzIGZvdW5kIiAlIChuYW1lLCkpCi0gICAgcmV0dXJuIGV4ZWN1dGFibGUKKyAg
ICAgICAgICAgIGVycm9yID0gWworICAgICAgICAgICAgICAgICIqKioqKiAlcyBGRCBsZWFrYWdl
IGRldGVjdGVkIiAlIGxlbihsZWFrZWRfZmlsZXMpLAorICAgICAgICAgICAgICAgICooc3RyKGYp
IGZvciBmIGluIGxlYWtlZF9maWxlcyksCisgICAgICAgICAgICAgICAgIioqKiBCZWZvcmU6IiwK
KyAgICAgICAgICAgICAgICAqKHN0cihmKSBmb3IgZiBpbiBsaW5lczEpLAorICAgICAgICAgICAg
ICAgICIqKiogQWZ0ZXI6IiwKKyAgICAgICAgICAgICAgICAqKHN0cihmKSBmb3IgZiBpbiBsaW5l
czIpLAorICAgICAgICAgICAgICAgICIqKioqKiAlcyBGRCBsZWFrYWdlIGRldGVjdGVkIiAlIGxl
bihsZWFrZWRfZmlsZXMpLAorICAgICAgICAgICAgICAgICIqKiogZnVuY3Rpb24gJXM6JXM6ICVz
ICIgJSBpdGVtLmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICJTZWUgaXNzdWUgIzIzNjYiLAor
ICAgICAgICAgICAgXQorICAgICAgICAgICAgaXRlbS53YXJuKHB5dGVzdC5QeXRlc3RXYXJuaW5n
KCJcbiIuam9pbihlcnJvcikpKQogCiAKICMgdXNlZCBhdCBsZWFzdCBieSBweXRlc3QteGRpc3Qg
cGx1Z2luCiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYgX3B5dGVzdChyZXF1ZXN0KToKK2RlZiBf
cHl0ZXN0KHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiAiUHl0ZXN0QXJnIjoKICAgICAiIiJS
ZXR1cm4gYSBoZWxwZXIgd2hpY2ggb2ZmZXJzIGEgZ2V0aG9va3JlY29yZGVyKGhvb2spIG1ldGhv
ZCB3aGljaAogICAgIHJldHVybnMgYSBIb29rUmVjb3JkZXIgaW5zdGFuY2Ugd2hpY2ggaGVscHMg
dG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IGNhbGxlZAotICAgIGhvb2tzLgotCi0gICAgIiIiCisg
ICAgaG9va3MuIiIiCiAgICAgcmV0dXJuIFB5dGVzdEFyZyhyZXF1ZXN0KQogCiAKLWNsYXNzIFB5
dGVzdEFyZyhvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorY2xh
c3MgUHl0ZXN0QXJnOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0OiBGaXh0dXJlUmVx
dWVzdCkgLT4gTm9uZToKICAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAogCi0gICAgZGVm
IGdldGhvb2tyZWNvcmRlcihzZWxmLCBob29rKToKKyAgICBkZWYgZ2V0aG9va3JlY29yZGVyKHNl
bGYsIGhvb2spIC0+ICJIb29rUmVjb3JkZXIiOgogICAgICAgICBob29rcmVjb3JkZXIgPSBIb29r
UmVjb3JkZXIoaG9vay5fcG0pCiAgICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIoaG9v
a3JlY29yZGVyLmZpbmlzaF9yZWNvcmRpbmcpCiAgICAgICAgIHJldHVybiBob29rcmVjb3JkZXIK
IAogCi1kZWYgZ2V0X3B1YmxpY19uYW1lcyh2YWx1ZXMpOgorZGVmIGdldF9wdWJsaWNfbmFtZXMo
dmFsdWVzOiBJdGVyYWJsZVtzdHJdKSAtPiBMaXN0W3N0cl06CiAgICAgIiIiT25seSByZXR1cm4g
bmFtZXMgZnJvbSBpdGVyYXRvciB2YWx1ZXMgd2l0aG91dCBhIGxlYWRpbmcgdW5kZXJzY29yZS4i
IiIKICAgICByZXR1cm4gW3ggZm9yIHggaW4gdmFsdWVzIGlmIHhbMF0gIT0gIl8iXQogCiAKLWNs
YXNzIFBhcnNlZENhbGwob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBr
d2FyZ3MpOgorY2xhc3MgUGFyc2VkQ2FsbDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTog
c3RyLCBrd2FyZ3MpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3YXJn
cykKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKIAotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
KyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgICBkID0gc2VsZi5fX2RpY3Rf
Xy5jb3B5KCkKICAgICAgICAgZGVsIGRbIl9uYW1lIl0KLSAgICAgICAgcmV0dXJuICI8UGFyc2Vk
Q2FsbCAlcigqKiVyKT4iICUgKHNlbGYuX25hbWUsIGQpCisgICAgICAgIHJldHVybiAiPFBhcnNl
ZENhbGwgeyFyfSgqKnshcn0pPiIuZm9ybWF0KHNlbGYuX25hbWUsIGQpCisKKyAgICBpZiBUWVBF
X0NIRUNLSU5HOgorICAgICAgICAjIFRoZSBjbGFzcyBoYXMgdW5kZXRlcm1pbmVkIGF0dHJpYnV0
ZXMsIHRoaXMgdGVsbHMgbXlweSBhYm91dCBpdC4KKyAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNl
bGYsIGtleTogc3RyKToKKyAgICAgICAgICAgIC4uLgogCiAKLWNsYXNzIEhvb2tSZWNvcmRlcihv
YmplY3QpOgorY2xhc3MgSG9va1JlY29yZGVyOgogICAgICIiIlJlY29yZCBhbGwgaG9va3MgY2Fs
bGVkIGluIGEgcGx1Z2luIG1hbmFnZXIuCiAKICAgICBUaGlzIHdyYXBzIGFsbCB0aGUgaG9vayBj
YWxscyBpbiB0aGUgcGx1Z2luIG1hbmFnZXIsIHJlY29yZGluZyBlYWNoIGNhbGwKICAgICBiZWZv
cmUgcHJvcGFnYXRpbmcgdGhlIG5vcm1hbCBjYWxscy4KLQogICAgICIiIgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBsdWdpbm1hbmFnZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbHVn
aW5tYW5hZ2VyOiBQeXRlc3RQbHVnaW5NYW5hZ2VyKSAtPiBOb25lOgogICAgICAgICBzZWxmLl9w
bHVnaW5tYW5hZ2VyID0gcGx1Z2lubWFuYWdlcgotICAgICAgICBzZWxmLmNhbGxzID0gW10KKyAg
ICAgICAgc2VsZi5jYWxscyA9IFtdICAjIHR5cGU6IExpc3RbUGFyc2VkQ2FsbF0KKyAgICAgICAg
c2VsZi5yZXQgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW1VuaW9uW2ludCwgRXhpdENvZGVdXQog
Ci0gICAgICAgIGRlZiBiZWZvcmUoaG9va19uYW1lLCBob29rX2ltcGxzLCBrd2FyZ3MpOgorICAg
ICAgICBkZWYgYmVmb3JlKGhvb2tfbmFtZTogc3RyLCBob29rX2ltcGxzLCBrd2FyZ3MpIC0+IE5v
bmU6CiAgICAgICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZChQYXJzZWRDYWxsKGhvb2tfbmFtZSwg
a3dhcmdzKSkKIAotICAgICAgICBkZWYgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lLCBob29rX2lt
cGxzLCBrd2FyZ3MpOgorICAgICAgICBkZWYgYWZ0ZXIob3V0Y29tZSwgaG9va19uYW1lOiBzdHIs
IGhvb2tfaW1wbHMsIGt3YXJncykgLT4gTm9uZToKICAgICAgICAgICAgIHBhc3MKIAogICAgICAg
ICBzZWxmLl91bmRvX3dyYXBwaW5nID0gcGx1Z2lubWFuYWdlci5hZGRfaG9va2NhbGxfbW9uaXRv
cmluZyhiZWZvcmUsIGFmdGVyKQogCi0gICAgZGVmIGZpbmlzaF9yZWNvcmRpbmcoc2VsZik6Cisg
ICAgZGVmIGZpbmlzaF9yZWNvcmRpbmcoc2VsZikgLT4gTm9uZToKICAgICAgICAgc2VsZi5fdW5k
b193cmFwcGluZygpCiAKLSAgICBkZWYgZ2V0Y2FsbHMoc2VsZiwgbmFtZXMpOgorICAgIGRlZiBn
ZXRjYWxscyhzZWxmLCBuYW1lczogVW5pb25bc3RyLCBJdGVyYWJsZVtzdHJdXSkgLT4gTGlzdFtQ
YXJzZWRDYWxsXToKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKICAgICAgICAg
ICAgIG5hbWVzID0gbmFtZXMuc3BsaXQoKQogICAgICAgICByZXR1cm4gW2NhbGwgZm9yIGNhbGwg
aW4gc2VsZi5jYWxscyBpZiBjYWxsLl9uYW1lIGluIG5hbWVzXQogCi0gICAgZGVmIGFzc2VydF9j
b250YWlucyhzZWxmLCBlbnRyaWVzKToKKyAgICBkZWYgYXNzZXJ0X2NvbnRhaW5zKHNlbGYsIGVu
dHJpZXM6IFNlcXVlbmNlW1R1cGxlW3N0ciwgc3RyXV0pIC0+IE5vbmU6CiAgICAgICAgIF9fdHJh
Y2ViYWNraGlkZV9fID0gVHJ1ZQogICAgICAgICBpID0gMAogICAgICAgICBlbnRyaWVzID0gbGlz
dChlbnRyaWVzKQpAQCAtMjY5LDQ0ICsyNTIsNzIgQEAgY2xhc3MgSG9va1JlY29yZGVyKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgcHJpbnQoIk5P
TkFNRU1BVENIIiwgbmFtZSwgIndpdGgiLCBjYWxsKQogICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBweXRlc3QuZmFpbCgiY291bGQgbm90IGZpbmQgJXIgY2hlY2sgJXIiICUgKG5h
bWUsIGNoZWNrKSkKKyAgICAgICAgICAgICAgICBweXRlc3QuZmFpbCgiY291bGQgbm90IGZpbmQg
eyFyfSBjaGVjayB7IXJ9Ii5mb3JtYXQobmFtZSwgY2hlY2spKQogCi0gICAgZGVmIHBvcGNhbGwo
c2VsZiwgbmFtZSk6CisgICAgZGVmIHBvcGNhbGwoc2VsZiwgbmFtZTogc3RyKSAtPiBQYXJzZWRD
YWxsOgogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKICAgICAgICAgZm9yIGksIGNh
bGwgaW4gZW51bWVyYXRlKHNlbGYuY2FsbHMpOgogICAgICAgICAgICAgaWYgY2FsbC5fbmFtZSA9
PSBuYW1lOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNhbGxzW2ldCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhbGwKLSAgICAgICAgbGluZXMgPSBbImNvdWxkIG5vdCBmaW5kIGNhbGwgJXIs
IGluOiIgJSAobmFtZSwpXQotICAgICAgICBsaW5lcy5leHRlbmQoWyIgICVzIiAlIHN0cih4KSBm
b3IgeCBpbiBzZWxmLmNhbGxzXSkKKyAgICAgICAgbGluZXMgPSBbImNvdWxkIG5vdCBmaW5kIGNh
bGwgeyFyfSwgaW46Ii5mb3JtYXQobmFtZSldCisgICAgICAgIGxpbmVzLmV4dGVuZChbIiAgJXMi
ICUgeCBmb3IgeCBpbiBzZWxmLmNhbGxzXSkKICAgICAgICAgcHl0ZXN0LmZhaWwoIlxuIi5qb2lu
KGxpbmVzKSkKIAotICAgIGRlZiBnZXRjYWxsKHNlbGYsIG5hbWUpOgorICAgIGRlZiBnZXRjYWxs
KHNlbGYsIG5hbWU6IHN0cikgLT4gUGFyc2VkQ2FsbDoKICAgICAgICAgdmFsdWVzID0gc2VsZi5n
ZXRjYWxscyhuYW1lKQogICAgICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMSwgKG5hbWUsIHZh
bHVlcykKICAgICAgICAgcmV0dXJuIHZhbHVlc1swXQogCiAgICAgIyBmdW5jdGlvbmFsaXR5IGZv
ciB0ZXN0IHJlcG9ydHMKIAotICAgIGRlZiBnZXRyZXBvcnRzKHNlbGYsIG5hbWVzPSJweXRlc3Rf
cnVudGVzdF9sb2dyZXBvcnQgcHl0ZXN0X2NvbGxlY3RyZXBvcnQiKToKKyAgICBAb3ZlcmxvYWQK
KyAgICBkZWYgZ2V0cmVwb3J0cygKKyAgICAgICAgc2VsZiwgbmFtZXM6ICJMaXRlcmFsWydweXRl
c3RfY29sbGVjdHJlcG9ydCddIiwKKyAgICApIC0+IFNlcXVlbmNlW0NvbGxlY3RSZXBvcnRdOgor
ICAgICAgICAuLi4KKworICAgIEBvdmVybG9hZCAgIyBub3FhOiBGODExCisgICAgZGVmIGdldHJl
cG9ydHMoICAjIG5vcWE6IEY4MTEKKyAgICAgICAgc2VsZiwgbmFtZXM6ICJMaXRlcmFsWydweXRl
c3RfcnVudGVzdF9sb2dyZXBvcnQnXSIsCisgICAgKSAtPiBTZXF1ZW5jZVtUZXN0UmVwb3J0XToK
KyAgICAgICAgLi4uCisKKyAgICBAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorICAgIGRlZiBnZXRy
ZXBvcnRzKCAgIyBub3FhOiBGODExCisgICAgICAgIHNlbGYsCisgICAgICAgIG5hbWVzOiBVbmlv
bltzdHIsIEl0ZXJhYmxlW3N0cl1dID0gKAorICAgICAgICAgICAgInB5dGVzdF9jb2xsZWN0cmVw
b3J0IiwKKyAgICAgICAgICAgICJweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQiLAorICAgICAgICAp
LAorICAgICkgLT4gU2VxdWVuY2VbVW5pb25bQ29sbGVjdFJlcG9ydCwgVGVzdFJlcG9ydF1dOgor
ICAgICAgICAuLi4KKworICAgIGRlZiBnZXRyZXBvcnRzKCAgIyBub3FhOiBGODExCisgICAgICAg
IHNlbGYsCisgICAgICAgIG5hbWVzOiBVbmlvbltzdHIsIEl0ZXJhYmxlW3N0cl1dID0gKAorICAg
ICAgICAgICAgInB5dGVzdF9jb2xsZWN0cmVwb3J0IiwKKyAgICAgICAgICAgICJweXRlc3RfcnVu
dGVzdF9sb2dyZXBvcnQiLAorICAgICAgICApLAorICAgICkgLT4gU2VxdWVuY2VbVW5pb25bQ29s
bGVjdFJlcG9ydCwgVGVzdFJlcG9ydF1dOgogICAgICAgICByZXR1cm4gW3gucmVwb3J0IGZvciB4
IGluIHNlbGYuZ2V0Y2FsbHMobmFtZXMpXQogCiAgICAgZGVmIG1hdGNocmVwb3J0KAogICAgICAg
ICBzZWxmLAotICAgICAgICBpbmFtZXBhcnQ9IiIsCi0gICAgICAgIG5hbWVzPSJweXRlc3RfcnVu
dGVzdF9sb2dyZXBvcnQgcHl0ZXN0X2NvbGxlY3RyZXBvcnQiLAotICAgICAgICB3aGVuPU5vbmUs
Ci0gICAgKToKLSAgICAgICAgIiIicmV0dXJuIGEgdGVzdHJlcG9ydCB3aG9zZSBkb3R0ZWQgaW1w
b3J0IHBhdGggbWF0Y2hlcyIiIgorICAgICAgICBpbmFtZXBhcnQ6IHN0ciA9ICIiLAorICAgICAg
ICBuYW1lczogVW5pb25bc3RyLCBJdGVyYWJsZVtzdHJdXSA9ICgKKyAgICAgICAgICAgICJweXRl
c3RfcnVudGVzdF9sb2dyZXBvcnQiLAorICAgICAgICAgICAgInB5dGVzdF9jb2xsZWN0cmVwb3J0
IiwKKyAgICAgICAgKSwKKyAgICAgICAgd2hlbjogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAg
KSAtPiBVbmlvbltDb2xsZWN0UmVwb3J0LCBUZXN0UmVwb3J0XToKKyAgICAgICAgIiIiUmV0dXJu
IGEgdGVzdHJlcG9ydCB3aG9zZSBkb3R0ZWQgaW1wb3J0IHBhdGggbWF0Y2hlcy4iIiIKICAgICAg
ICAgdmFsdWVzID0gW10KICAgICAgICAgZm9yIHJlcCBpbiBzZWxmLmdldHJlcG9ydHMobmFtZXM9
bmFtZXMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIG5vdCB3aGVuIGFu
ZCByZXAud2hlbiAhPSAiY2FsbCIgYW5kIHJlcC5wYXNzZWQ6Ci0gICAgICAgICAgICAgICAgICAg
ICMgc2V0dXAvdGVhcmRvd24gcGFzc2luZyByZXBvcnRzIC0gbGV0J3MgaWdub3JlIHRob3NlCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgaWYgd2hlbiBhbmQgZ2V0
YXR0cihyZXAsICJ3aGVuIiwgTm9uZSkgIT0gd2hlbjoKKyAgICAgICAgICAgIGlmIG5vdCB3aGVu
IGFuZCByZXAud2hlbiAhPSAiY2FsbCIgYW5kIHJlcC5wYXNzZWQ6CisgICAgICAgICAgICAgICAg
IyBzZXR1cC90ZWFyZG93biBwYXNzaW5nIHJlcG9ydHMgLSBsZXQncyBpZ25vcmUgdGhvc2UKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgd2hlbiBhbmQgcmVwLndoZW4g
IT0gd2hlbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbm90IGlu
YW1lcGFydCBvciBpbmFtZXBhcnQgaW4gcmVwLm5vZGVpZC5zcGxpdCgiOjoiKToKICAgICAgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKHJlcCkKQEAgLTMxNywxMzMgKzMyOCwyNjAgQEAgY2xhc3Mg
SG9va1JlY29yZGVyKG9iamVjdCk6CiAgICAgICAgICAgICApCiAgICAgICAgIGlmIGxlbih2YWx1
ZXMpID4gMToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAg
ImZvdW5kIDIgb3IgbW9yZSB0ZXN0cmVwb3J0cyBtYXRjaGluZyAlcjogJXMiICUgKGluYW1lcGFy
dCwgdmFsdWVzKQorICAgICAgICAgICAgICAgICJmb3VuZCAyIG9yIG1vcmUgdGVzdHJlcG9ydHMg
bWF0Y2hpbmcgeyFyfToge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgaW5hbWVwYXJ0
LCB2YWx1ZXMKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgIHJldHVy
biB2YWx1ZXNbMF0KIAotICAgIGRlZiBnZXRmYWlsdXJlcyhzZWxmLCBuYW1lcz0icHl0ZXN0X3J1
bnRlc3RfbG9ncmVwb3J0IHB5dGVzdF9jb2xsZWN0cmVwb3J0Iik6CisgICAgQG92ZXJsb2FkCisg
ICAgZGVmIGdldGZhaWx1cmVzKAorICAgICAgICBzZWxmLCBuYW1lczogIkxpdGVyYWxbJ3B5dGVz
dF9jb2xsZWN0cmVwb3J0J10iLAorICAgICkgLT4gU2VxdWVuY2VbQ29sbGVjdFJlcG9ydF06Cisg
ICAgICAgIC4uLgorCisgICAgQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKKyAgICBkZWYgZ2V0ZmFp
bHVyZXMoICAjIG5vcWE6IEY4MTEKKyAgICAgICAgc2VsZiwgbmFtZXM6ICJMaXRlcmFsWydweXRl
c3RfcnVudGVzdF9sb2dyZXBvcnQnXSIsCisgICAgKSAtPiBTZXF1ZW5jZVtUZXN0UmVwb3J0XToK
KyAgICAgICAgLi4uCisKKyAgICBAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorICAgIGRlZiBnZXRm
YWlsdXJlcyggICMgbm9xYTogRjgxMQorICAgICAgICBzZWxmLAorICAgICAgICBuYW1lczogVW5p
b25bc3RyLCBJdGVyYWJsZVtzdHJdXSA9ICgKKyAgICAgICAgICAgICJweXRlc3RfY29sbGVjdHJl
cG9ydCIsCisgICAgICAgICAgICAicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IiwKKyAgICAgICAg
KSwKKyAgICApIC0+IFNlcXVlbmNlW1VuaW9uW0NvbGxlY3RSZXBvcnQsIFRlc3RSZXBvcnRdXToK
KyAgICAgICAgLi4uCisKKyAgICBkZWYgZ2V0ZmFpbHVyZXMoICAjIG5vcWE6IEY4MTEKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgbmFtZXM6IFVuaW9uW3N0ciwgSXRlcmFibGVbc3RyXV0gPSAoCisg
ICAgICAgICAgICAicHl0ZXN0X2NvbGxlY3RyZXBvcnQiLAorICAgICAgICAgICAgInB5dGVzdF9y
dW50ZXN0X2xvZ3JlcG9ydCIsCisgICAgICAgICksCisgICAgKSAtPiBTZXF1ZW5jZVtVbmlvbltD
b2xsZWN0UmVwb3J0LCBUZXN0UmVwb3J0XV06CiAgICAgICAgIHJldHVybiBbcmVwIGZvciByZXAg
aW4gc2VsZi5nZXRyZXBvcnRzKG5hbWVzKSBpZiByZXAuZmFpbGVkXQogCi0gICAgZGVmIGdldGZh
aWxlZGNvbGxlY3Rpb25zKHNlbGYpOgorICAgIGRlZiBnZXRmYWlsZWRjb2xsZWN0aW9ucyhzZWxm
KSAtPiBTZXF1ZW5jZVtDb2xsZWN0UmVwb3J0XToKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0ZmFp
bHVyZXMoInB5dGVzdF9jb2xsZWN0cmVwb3J0IikKIAotICAgIGRlZiBsaXN0b3V0Y29tZXMoc2Vs
Zik6CisgICAgZGVmIGxpc3RvdXRjb21lcygKKyAgICAgICAgc2VsZiwKKyAgICApIC0+IFR1cGxl
WworICAgICAgICBTZXF1ZW5jZVtUZXN0UmVwb3J0XSwKKyAgICAgICAgU2VxdWVuY2VbVW5pb25b
Q29sbGVjdFJlcG9ydCwgVGVzdFJlcG9ydF1dLAorICAgICAgICBTZXF1ZW5jZVtVbmlvbltDb2xs
ZWN0UmVwb3J0LCBUZXN0UmVwb3J0XV0sCisgICAgXToKICAgICAgICAgcGFzc2VkID0gW10KICAg
ICAgICAgc2tpcHBlZCA9IFtdCiAgICAgICAgIGZhaWxlZCA9IFtdCi0gICAgICAgIGZvciByZXAg
aW4gc2VsZi5nZXRyZXBvcnRzKCJweXRlc3RfY29sbGVjdHJlcG9ydCBweXRlc3RfcnVudGVzdF9s
b2dyZXBvcnQiKToKKyAgICAgICAgZm9yIHJlcCBpbiBzZWxmLmdldHJlcG9ydHMoCisgICAgICAg
ICAgICAoInB5dGVzdF9jb2xsZWN0cmVwb3J0IiwgInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIp
CisgICAgICAgICk6CiAgICAgICAgICAgICBpZiByZXAucGFzc2VkOgotICAgICAgICAgICAgICAg
IGlmIGdldGF0dHIocmVwLCAid2hlbiIsIE5vbmUpID09ICJjYWxsIjoKKyAgICAgICAgICAgICAg
ICBpZiByZXAud2hlbiA9PSAiY2FsbCI6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJlcCwgVGVzdFJlcG9ydCkKICAgICAgICAgICAgICAgICAgICAgcGFzc2VkLmFwcGVu
ZChyZXApCiAgICAgICAgICAgICBlbGlmIHJlcC5za2lwcGVkOgogICAgICAgICAgICAgICAgIHNr
aXBwZWQuYXBwZW5kKHJlcCkKLSAgICAgICAgICAgIGVsaWYgcmVwLmZhaWxlZDoKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlcC5mYWlsZWQsICJVbmV4cGVjdGVk
IG91dGNvbWU6IHshcn0iLmZvcm1hdChyZXApCiAgICAgICAgICAgICAgICAgZmFpbGVkLmFwcGVu
ZChyZXApCiAgICAgICAgIHJldHVybiBwYXNzZWQsIHNraXBwZWQsIGZhaWxlZAogCi0gICAgZGVm
IGNvdW50b3V0Y29tZXMoc2VsZik6CisgICAgZGVmIGNvdW50b3V0Y29tZXMoc2VsZikgLT4gTGlz
dFtpbnRdOgogICAgICAgICByZXR1cm4gW2xlbih4KSBmb3IgeCBpbiBzZWxmLmxpc3RvdXRjb21l
cygpXQogCi0gICAgZGVmIGFzc2VydG91dGNvbWUoc2VsZiwgcGFzc2VkPTAsIHNraXBwZWQ9MCwg
ZmFpbGVkPTApOgotICAgICAgICByZWFscGFzc2VkLCByZWFsc2tpcHBlZCwgcmVhbGZhaWxlZCA9
IHNlbGYubGlzdG91dGNvbWVzKCkKLSAgICAgICAgYXNzZXJ0IHBhc3NlZCA9PSBsZW4ocmVhbHBh
c3NlZCkKLSAgICAgICAgYXNzZXJ0IHNraXBwZWQgPT0gbGVuKHJlYWxza2lwcGVkKQotICAgICAg
ICBhc3NlcnQgZmFpbGVkID09IGxlbihyZWFsZmFpbGVkKQorICAgIGRlZiBhc3NlcnRvdXRjb21l
KHNlbGYsIHBhc3NlZDogaW50ID0gMCwgc2tpcHBlZDogaW50ID0gMCwgZmFpbGVkOiBpbnQgPSAw
KSAtPiBOb25lOgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKworICAgICAgICBv
dXRjb21lcyA9IHNlbGYubGlzdG91dGNvbWVzKCkKKyAgICAgICAgcmVhbHBhc3NlZCwgcmVhbHNr
aXBwZWQsIHJlYWxmYWlsZWQgPSBvdXRjb21lcworICAgICAgICBvYnRhaW5lZCA9IHsKKyAgICAg
ICAgICAgICJwYXNzZWQiOiBsZW4ocmVhbHBhc3NlZCksCisgICAgICAgICAgICAic2tpcHBlZCI6
IGxlbihyZWFsc2tpcHBlZCksCisgICAgICAgICAgICAiZmFpbGVkIjogbGVuKHJlYWxmYWlsZWQp
LAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkID0geyJwYXNzZWQiOiBwYXNzZWQsICJza2lw
cGVkIjogc2tpcHBlZCwgImZhaWxlZCI6IGZhaWxlZH0KKyAgICAgICAgYXNzZXJ0IG9idGFpbmVk
ID09IGV4cGVjdGVkLCBvdXRjb21lcwogCi0gICAgZGVmIGNsZWFyKHNlbGYpOgorICAgIGRlZiBj
bGVhcihzZWxmKSAtPiBOb25lOgogICAgICAgICBzZWxmLmNhbGxzWzpdID0gW10KIAogCiBAcHl0
ZXN0LmZpeHR1cmUKLWRlZiBsaW5lY29tcChyZXF1ZXN0KToKK2RlZiBsaW5lY29tcCgpIC0+ICJM
aW5lQ29tcCI6CisgICAgIiIiQSA6Y2xhc3M6IGBMaW5lQ29tcGAgaW5zdGFuY2UgZm9yIGNoZWNr
aW5nIHRoYXQgYW4gaW5wdXQgbGluZWFybHkKKyAgICBjb250YWlucyBhIHNlcXVlbmNlIG9mIHN0
cmluZ3MuIiIiCiAgICAgcmV0dXJuIExpbmVDb21wKCkKIAogCiBAcHl0ZXN0LmZpeHR1cmUobmFt
ZT0iTGluZU1hdGNoZXIiKQotZGVmIExpbmVNYXRjaGVyX2ZpeHR1cmUocmVxdWVzdCk6CitkZWYg
TGluZU1hdGNoZXJfZml4dHVyZShyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCkgLT4gIlR5cGVbTGlu
ZU1hdGNoZXJdIjoKKyAgICAiIiJBIHJlZmVyZW5jZSB0byB0aGUgOmNsYXNzOiBgTGluZU1hdGNo
ZXJgLgorCisgICAgVGhpcyBpcyBpbnN0YW50aWFibGUgd2l0aCBhIGxpc3Qgb2YgbGluZXMgKHdp
dGhvdXQgdGhlaXIgdHJhaWxpbmcgbmV3bGluZXMpLgorICAgIFRoaXMgaXMgdXNlZnVsIGZvciB0
ZXN0aW5nIGxhcmdlIHRleHRzLCBzdWNoIGFzIHRoZSBvdXRwdXQgb2YgY29tbWFuZHMuCisgICAg
IiIiCiAgICAgcmV0dXJuIExpbmVNYXRjaGVyCiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYgdGVz
dGRpcihyZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSk6CitkZWYgdGVzdGRpcihyZXF1ZXN0OiBGaXh0
dXJlUmVxdWVzdCwgdG1wZGlyX2ZhY3Rvcnk6IFRlbXBkaXJGYWN0b3J5KSAtPiAiVGVzdGRpciI6
CisgICAgIiIiQSA6Y2xhc3M6IGBUZXN0RGlyYCBpbnN0YW5jZSwgdGhhdCBjYW4gYmUgdXNlZCB0
byBydW4gYW5kIHRlc3QgcHl0ZXN0IGl0c2VsZi4KKworICAgIEl0IGlzIHBhcnRpY3VsYXJseSB1
c2VmdWwgZm9yIHRlc3RpbmcgcGx1Z2lucy4gSXQgaXMgc2ltaWxhciB0byB0aGUgYHRtcGRpcmAg
Zml4dHVyZQorICAgIGJ1dCBwcm92aWRlcyBtZXRob2RzIHdoaWNoIGFpZCBpbiB0ZXN0aW5nIHB5
dGVzdCBpdHNlbGYuCisgICAgIiIiCiAgICAgcmV0dXJuIFRlc3RkaXIocmVxdWVzdCwgdG1wZGly
X2ZhY3RvcnkpCiAKIAotcmV4X291dGNvbWUgPSByZS5jb21waWxlKHIiKFxkKykgKFtcdy1dKyki
KQorQHB5dGVzdC5maXh0dXJlCitkZWYgX3N5c19zbmFwc2hvdCgpIC0+IEdlbmVyYXRvcltOb25l
LCBOb25lLCBOb25lXToKKyAgICBzbmFwcGF0aHMgPSBTeXNQYXRoc1NuYXBzaG90KCkKKyAgICBz
bmFwbW9kcyA9IFN5c01vZHVsZXNTbmFwc2hvdCgpCisgICAgeWllbGQKKyAgICBzbmFwbW9kcy5y
ZXN0b3JlKCkKKyAgICBzbmFwcGF0aHMucmVzdG9yZSgpCisKIAorQHB5dGVzdC5maXh0dXJlCitk
ZWYgX2NvbmZpZ19mb3JfdGVzdCgpIC0+IEdlbmVyYXRvcltDb25maWcsIE5vbmUsIE5vbmVdOgor
ICAgIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGdldF9jb25maWcKIAotY2xhc3MgUnVuUmVz
dWx0KG9iamVjdCk6Ci0gICAgIiIiVGhlIHJlc3VsdCBvZiBydW5uaW5nIGEgY29tbWFuZC4KKyAg
ICBjb25maWcgPSBnZXRfY29uZmlnKCkKKyAgICB5aWVsZCBjb25maWcKKyAgICBjb25maWcuX2Vu
c3VyZV91bmNvbmZpZ3VyZSgpICAjIGNsZWFudXAsIGUuZy4gY2FwbWFuIGNsb3NpbmcgdG1wZmls
ZXMuCiAKLSAgICBBdHRyaWJ1dGVzOgogCi0gICAgOnJldDogdGhlIHJldHVybiB2YWx1ZQotICAg
IDpvdXRsaW5lczogbGlzdCBvZiBsaW5lcyBjYXB0dXJlZCBmcm9tIHN0ZG91dAotICAgIDplcnJs
aW5lczogbGlzdCBvZiBsaW5lcyBjYXB0dXJlcyBmcm9tIHN0ZGVycgotICAgIDpzdGRvdXQ6IDpw
eTpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZG91dCwgdXNlIGBgc3Rkb3V0LnN0cigpYGAgdG8K
LSAgICAgICByZWNvbnN0cnVjdCBzdGRvdXQgb3IgdGhlIGNvbW1vbmx5IHVzZWQgYGBzdGRvdXQu
Zm5tYXRjaF9saW5lcygpYGAKLSAgICAgICBtZXRob2QKLSAgICA6c3RkZXJyOiA6cHk6Y2xhc3M6
YExpbmVNYXRjaGVyYCBvZiBzdGRlcnIKLSAgICA6ZHVyYXRpb246IGR1cmF0aW9uIGluIHNlY29u
ZHMKKyMgUmVnZXggdG8gbWF0Y2ggdGhlIHNlc3Npb24gZHVyYXRpb24gc3RyaW5nIGluIHRoZSBz
dW1tYXJ5OiAiNzQuMzRzIi4KK3JleF9zZXNzaW9uX2R1cmF0aW9uID0gcmUuY29tcGlsZShyIlxk
K1wuXGRcZHMiKQorIyBSZWdleCB0byBtYXRjaCBhbGwgdGhlIGNvdW50cyBhbmQgcGhyYXNlcyBp
biB0aGUgc3VtbWFyeSBsaW5lOiAiMzQgcGFzc2VkLCAxMTEgc2tpcHBlZCIuCityZXhfb3V0Y29t
ZSA9IHJlLmNvbXBpbGUociIoXGQrKSAoXHcrKSIpCiAKLSAgICAiIiIKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXQsIG91dGxpbmVzLCBlcnJsaW5lcywgZHVyYXRpb24pOgotICAgICAgICBz
ZWxmLnJldCA9IHJldAorY2xhc3MgUnVuUmVzdWx0OgorICAgICIiIlRoZSByZXN1bHQgb2YgcnVu
bmluZyBhIGNvbW1hbmQuIiIiCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIHJldDogVW5pb25baW50LCBFeGl0Q29kZV0sCisgICAgICAgIG91dGxpbmVzOiBMaXN0
W3N0cl0sCisgICAgICAgIGVycmxpbmVzOiBMaXN0W3N0cl0sCisgICAgICAgIGR1cmF0aW9uOiBm
bG9hdCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucmV0
ID0gcHl0ZXN0LkV4aXRDb2RlKHJldCkgICMgdHlwZTogVW5pb25baW50LCBFeGl0Q29kZV0KKyAg
ICAgICAgICAgICIiIlRoZSByZXR1cm4gdmFsdWUuIiIiCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yOgorICAgICAgICAgICAgc2VsZi5yZXQgPSByZXQKICAgICAgICAgc2VsZi5vdXRsaW5lcyA9
IG91dGxpbmVzCisgICAgICAgICIiIkxpc3Qgb2YgbGluZXMgY2FwdHVyZWQgZnJvbSBzdGRvdXQu
IiIiCiAgICAgICAgIHNlbGYuZXJybGluZXMgPSBlcnJsaW5lcworICAgICAgICAiIiJMaXN0IG9m
IGxpbmVzIGNhcHR1cmVkIGZyb20gc3RkZXJyLiIiIgogICAgICAgICBzZWxmLnN0ZG91dCA9IExp
bmVNYXRjaGVyKG91dGxpbmVzKQorICAgICAgICAiIiI6Y2xhc3M6YExpbmVNYXRjaGVyYCBvZiBz
dGRvdXQuCisKKyAgICAgICAgVXNlIGUuZy4gOmZ1bmM6YHN0ZG91dC5zdHIoKSA8TGluZU1hdGNo
ZXIuc3RyKCk+YCB0byByZWNvbnN0cnVjdCBzdGRvdXQsIG9yIHRoZSBjb21tb25seSB1c2VkCisg
ICAgICAgIDpmdW5jOmBzdGRvdXQuZm5tYXRjaF9saW5lcygpIDxMaW5lTWF0Y2hlci5mbm1hdGNo
X2xpbmVzKCk+YCBtZXRob2QuCisgICAgICAgICIiIgogICAgICAgICBzZWxmLnN0ZGVyciA9IExp
bmVNYXRjaGVyKGVycmxpbmVzKQorICAgICAgICAiIiI6Y2xhc3M6YExpbmVNYXRjaGVyYCBvZiBz
dGRlcnIuIiIiCiAgICAgICAgIHNlbGYuZHVyYXRpb24gPSBkdXJhdGlvbgorICAgICAgICAiIiJE
dXJhdGlvbiBpbiBzZWNvbmRzLiIiIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoK
KyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgICI8UnVuUmVzdWx0IHJldD0lcyBsZW4oc3Rk
b3V0LmxpbmVzKT0lZCBsZW4oc3RkZXJyLmxpbmVzKT0lZCBkdXJhdGlvbj0lLjJmcz4iCisgICAg
ICAgICAgICAlIChzZWxmLnJldCwgbGVuKHNlbGYuc3Rkb3V0LmxpbmVzKSwgbGVuKHNlbGYuc3Rk
ZXJyLmxpbmVzKSwgc2VsZi5kdXJhdGlvbikKKyAgICAgICAgKQogCi0gICAgZGVmIHBhcnNlb3V0
Y29tZXMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIGRpY3Rpb25hcnkgb2Ygb3V0Y29tZXN0
cmluZy0+bnVtIGZyb20gcGFyc2luZyB0aGUgdGVybWluYWwKKyAgICBkZWYgcGFyc2VvdXRjb21l
cyhzZWxmKSAtPiBEaWN0W3N0ciwgaW50XToKKyAgICAgICAgIiIiUmV0dXJuIGEgZGljdGlvbmFy
eSBvZiBvdXRjb21lIG5vdW4gLT4gY291bnQgZnJvbSBwYXJzaW5nIHRoZSB0ZXJtaW5hbAogICAg
ICAgICBvdXRwdXQgdGhhdCB0aGUgdGVzdCBwcm9jZXNzIHByb2R1Y2VkLgogCisgICAgICAgIFRo
ZSByZXR1cm5lZCBub3VucyB3aWxsIGFsd2F5cyBiZSBpbiBwbHVyYWwgZm9ybTo6CisKKyAgICAg
ICAgICAgID09PT09PT0gMSBmYWlsZWQsIDEgcGFzc2VkLCAxIHdhcm5pbmcsIDEgZXJyb3IgaW4g
MC4xM3MgPT09PQorCisgICAgICAgIFdpbGwgcmV0dXJuIGBgeyJmYWlsZWQiOiAxLCAicGFzc2Vk
IjogMSwgIndhcm5pbmdzIjogMSwgImVycm9ycyI6IDF9YGAuCisgICAgICAgICIiIgorICAgICAg
ICByZXR1cm4gc2VsZi5wYXJzZV9zdW1tYXJ5X25vdW5zKHNlbGYub3V0bGluZXMpCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2Vfc3VtbWFyeV9ub3VucyhjbHMsIGxpbmVzKSAtPiBE
aWN0W3N0ciwgaW50XToKKyAgICAgICAgIiIiRXh0cmFjdCB0aGUgbm91bnMgZnJvbSBhIHB5dGVz
dCB0ZXJtaW5hbCBzdW1tYXJ5IGxpbmUuCisKKyAgICAgICAgSXQgYWx3YXlzIHJldHVybnMgdGhl
IHBsdXJhbCBub3VuIGZvciBjb25zaXN0ZW5jeTo6CisKKyAgICAgICAgICAgID09PT09PT0gMSBm
YWlsZWQsIDEgcGFzc2VkLCAxIHdhcm5pbmcsIDEgZXJyb3IgaW4gMC4xM3MgPT09PQorCisgICAg
ICAgIFdpbGwgcmV0dXJuIGBgeyJmYWlsZWQiOiAxLCAicGFzc2VkIjogMSwgIndhcm5pbmdzIjog
MSwgImVycm9ycyI6IDF9YGAuCiAgICAgICAgICIiIgotICAgICAgICBmb3IgbGluZSBpbiByZXZl
cnNlZChzZWxmLm91dGxpbmVzKToKLSAgICAgICAgICAgIGlmICJzZWNvbmRzIiBpbiBsaW5lOgor
ICAgICAgICBmb3IgbGluZSBpbiByZXZlcnNlZChsaW5lcyk6CisgICAgICAgICAgICBpZiByZXhf
c2Vzc2lvbl9kdXJhdGlvbi5zZWFyY2gobGluZSk6CiAgICAgICAgICAgICAgICAgb3V0Y29tZXMg
PSByZXhfb3V0Y29tZS5maW5kYWxsKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgb3V0Y29tZXM6
Ci0gICAgICAgICAgICAgICAgICAgIGQgPSB7fQotICAgICAgICAgICAgICAgICAgICBmb3IgbnVt
LCBjYXQgaW4gb3V0Y29tZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkW2NhdF0gPSBpbnQo
bnVtKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZAotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJQeXRlc3QgdGVybWluYWwgcmVwb3J0IG5vdCBmb3VuZCIpCi0KLSAgICBkZWYgYXNzZXJ0
X291dGNvbWVzKHNlbGYsIHBhc3NlZD0wLCBza2lwcGVkPTAsIGZhaWxlZD0wLCBlcnJvcj0wKToK
KyAgICAgICAgICAgICAgICByZXQgPSB7bm91bjogaW50KGNvdW50KSBmb3IgKGNvdW50LCBub3Vu
KSBpbiBvdXRjb21lc30KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHl0ZXN0IHRlcm1pbmFsIHN1bW1hcnkgcmVwb3J0
IG5vdCBmb3VuZCIpCisKKyAgICAgICAgdG9fcGx1cmFsID0geworICAgICAgICAgICAgIndhcm5p
bmciOiAid2FybmluZ3MiLAorICAgICAgICAgICAgImVycm9yIjogImVycm9ycyIsCisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHt0b19wbHVyYWwuZ2V0KGssIGspOiB2IGZvciBrLCB2IGluIHJl
dC5pdGVtcygpfQorCisgICAgZGVmIGFzc2VydF9vdXRjb21lcygKKyAgICAgICAgc2VsZiwKKyAg
ICAgICAgcGFzc2VkOiBpbnQgPSAwLAorICAgICAgICBza2lwcGVkOiBpbnQgPSAwLAorICAgICAg
ICBmYWlsZWQ6IGludCA9IDAsCisgICAgICAgIGVycm9yczogaW50ID0gMCwKKyAgICAgICAgeHBh
c3NlZDogaW50ID0gMCwKKyAgICAgICAgeGZhaWxlZDogaW50ID0gMCwKKyAgICApIC0+IE5vbmU6
CiAgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBzcGVjaWZpZWQgb3V0Y29tZXMgYXBwZWFyIHdp
dGggdGhlIHJlc3BlY3RpdmUKLSAgICAgICAgbnVtYmVycyAoMCBtZWFucyBpdCBkaWRuJ3Qgb2Nj
dXIpIGluIHRoZSB0ZXh0IG91dHB1dCBmcm9tIGEgdGVzdCBydW4uCisgICAgICAgIG51bWJlcnMg
KDAgbWVhbnMgaXQgZGlkbid0IG9jY3VyKSBpbiB0aGUgdGV4dCBvdXRwdXQgZnJvbSBhIHRlc3Qg
cnVuLiIiIgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKIAotICAgICAgICAiIiIK
ICAgICAgICAgZCA9IHNlbGYucGFyc2VvdXRjb21lcygpCiAgICAgICAgIG9idGFpbmVkID0gewog
ICAgICAgICAgICAgInBhc3NlZCI6IGQuZ2V0KCJwYXNzZWQiLCAwKSwKICAgICAgICAgICAgICJz
a2lwcGVkIjogZC5nZXQoInNraXBwZWQiLCAwKSwKICAgICAgICAgICAgICJmYWlsZWQiOiBkLmdl
dCgiZmFpbGVkIiwgMCksCi0gICAgICAgICAgICAiZXJyb3IiOiBkLmdldCgiZXJyb3IiLCAwKSwK
KyAgICAgICAgICAgICJlcnJvcnMiOiBkLmdldCgiZXJyb3JzIiwgMCksCisgICAgICAgICAgICAi
eHBhc3NlZCI6IGQuZ2V0KCJ4cGFzc2VkIiwgMCksCisgICAgICAgICAgICAieGZhaWxlZCI6IGQu
Z2V0KCJ4ZmFpbGVkIiwgMCksCiAgICAgICAgIH0KLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAg
ICAgIG9idGFpbmVkID09IGRpY3QocGFzc2VkPXBhc3NlZCwgc2tpcHBlZD1za2lwcGVkLCBmYWls
ZWQ9ZmFpbGVkLCBlcnJvcj1lcnJvcikKLSAgICAgICAgKQotCisgICAgICAgIGV4cGVjdGVkID0g
eworICAgICAgICAgICAgInBhc3NlZCI6IHBhc3NlZCwKKyAgICAgICAgICAgICJza2lwcGVkIjog
c2tpcHBlZCwKKyAgICAgICAgICAgICJmYWlsZWQiOiBmYWlsZWQsCisgICAgICAgICAgICAiZXJy
b3JzIjogZXJyb3JzLAorICAgICAgICAgICAgInhwYXNzZWQiOiB4cGFzc2VkLAorICAgICAgICAg
ICAgInhmYWlsZWQiOiB4ZmFpbGVkLAorICAgICAgICB9CisgICAgICAgIGFzc2VydCBvYnRhaW5l
ZCA9PSBleHBlY3RlZAogCi1jbGFzcyBDd2RTbmFwc2hvdChvYmplY3QpOgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgorY2xhc3MgQ3dkU25hcHNob3Q6CisgICAgZGVmIF9faW5pdF9fKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX19zYXZlZCA9IG9zLmdldGN3ZCgpCiAKLSAgICBkZWYg
cmVzdG9yZShzZWxmKToKKyAgICBkZWYgcmVzdG9yZShzZWxmKSAtPiBOb25lOgogICAgICAgICBv
cy5jaGRpcihzZWxmLl9fc2F2ZWQpCiAKIAotY2xhc3MgU3lzTW9kdWxlc1NuYXBzaG90KG9iamVj
dCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlc2VydmU9Tm9uZSk6CitjbGFzcyBTeXNN
b2R1bGVzU25hcHNob3Q6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZXNlcnZlOiBPcHRpb25h
bFtDYWxsYWJsZVtbc3RyXSwgYm9vbF1dID0gTm9uZSkgLT4gTm9uZToKICAgICAgICAgc2VsZi5f
X3ByZXNlcnZlID0gcHJlc2VydmUKICAgICAgICAgc2VsZi5fX3NhdmVkID0gZGljdChzeXMubW9k
dWxlcykKIAotICAgIGRlZiByZXN0b3JlKHNlbGYpOgorICAgIGRlZiByZXN0b3JlKHNlbGYpIC0+
IE5vbmU6CiAgICAgICAgIGlmIHNlbGYuX19wcmVzZXJ2ZToKICAgICAgICAgICAgIHNlbGYuX19z
YXZlZC51cGRhdGUoCiAgICAgICAgICAgICAgICAgKGssIG0pIGZvciBrLCBtIGluIHN5cy5tb2R1
bGVzLml0ZW1zKCkgaWYgc2VsZi5fX3ByZXNlcnZlKGspCkBAIC00NTIsMTI0ICs1OTAsMTU1IEBA
IGNsYXNzIFN5c01vZHVsZXNTbmFwc2hvdChvYmplY3QpOgogICAgICAgICBzeXMubW9kdWxlcy51
cGRhdGUoc2VsZi5fX3NhdmVkKQogCiAKLWNsYXNzIFN5c1BhdGhzU25hcHNob3Qob2JqZWN0KToK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKK2NsYXNzIFN5c1BhdGhzU25hcHNob3Q6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX19zYXZlZCA9IGxpc3Qo
c3lzLnBhdGgpLCBsaXN0KHN5cy5tZXRhX3BhdGgpCiAKLSAgICBkZWYgcmVzdG9yZShzZWxmKToK
KyAgICBkZWYgcmVzdG9yZShzZWxmKSAtPiBOb25lOgogICAgICAgICBzeXMucGF0aFs6XSwgc3lz
Lm1ldGFfcGF0aFs6XSA9IHNlbGYuX19zYXZlZAogCiAKLWNsYXNzIFRlc3RkaXIob2JqZWN0KToK
K0BmaW5hbAorY2xhc3MgVGVzdGRpcjoKICAgICAiIiJUZW1wb3JhcnkgdGVzdCBkaXJlY3Rvcnkg
d2l0aCB0b29scyB0byB0ZXN0L3J1biBweXRlc3QgaXRzZWxmLgogCi0gICAgVGhpcyBpcyBiYXNl
ZCBvbiB0aGUgYGB0bXBkaXJgYCBmaXh0dXJlIGJ1dCBwcm92aWRlcyBhIG51bWJlciBvZiBtZXRo
b2RzCisgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgOmZpeHR1cmU6YHRtcGRpcmAgZml4dHVyZSBi
dXQgcHJvdmlkZXMgYSBudW1iZXIgb2YgbWV0aG9kcwogICAgIHdoaWNoIGFpZCB3aXRoIHRlc3Rp
bmcgcHl0ZXN0IGl0c2VsZi4gIFVubGVzcyA6cHk6bWV0aDpgY2hkaXJgIGlzIHVzZWQgYWxsCiAg
ICAgbWV0aG9kcyB3aWxsIHVzZSA6cHk6YXR0cjpgdG1wZGlyYCBhcyB0aGVpciBjdXJyZW50IHdv
cmtpbmcgZGlyZWN0b3J5LgogCiAgICAgQXR0cmlidXRlczoKIAotICAgIDp0bXBkaXI6IFRoZSA6
cHk6Y2xhc3M6YHB5LnBhdGgubG9jYWxgIGluc3RhbmNlIG9mIHRoZSB0ZW1wb3JhcnkgZGlyZWN0
b3J5LgorICAgIDppdmFyIHRtcGRpcjogVGhlIDpweTpjbGFzczpgcHkucGF0aC5sb2NhbGAgaW5z
dGFuY2Ugb2YgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkuCiAKLSAgICA6cGx1Z2luczogQSBsaXN0
IG9mIHBsdWdpbnMgdG8gdXNlIHdpdGggOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBhbmQKKyAgICA6
aXZhciBwbHVnaW5zOgorICAgICAgIEEgbGlzdCBvZiBwbHVnaW5zIHRvIHVzZSB3aXRoIDpweTpt
ZXRoOmBwYXJzZWNvbmZpZ2AgYW5kCiAgICAgICAgOnB5Om1ldGg6YHJ1bnB5dGVzdGAuICBJbml0
aWFsbHkgdGhpcyBpcyBhbiBlbXB0eSBsaXN0IGJ1dCBwbHVnaW5zIGNhbgogICAgICAgIGJlIGFk
ZGVkIHRvIHRoZSBsaXN0LiAgVGhlIHR5cGUgb2YgaXRlbXMgdG8gYWRkIHRvIHRoZSBsaXN0IGRl
cGVuZHMgb24KICAgICAgICB0aGUgbWV0aG9kIHVzaW5nIHRoZW0gc28gcmVmZXIgdG8gdGhlbSBm
b3IgZGV0YWlscy4KLQogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Qs
IHRtcGRpcl9mYWN0b3J5KToKKyAgICBfX3Rlc3RfXyA9IEZhbHNlCisKKyAgICBDTE9TRV9TVERJ
TiA9IG9iamVjdAorCisgICAgY2xhc3MgVGltZW91dEV4cGlyZWQoRXhjZXB0aW9uKToKKyAgICAg
ICAgcGFzcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0
LCB0bXBkaXJfZmFjdG9yeTogVGVtcGRpckZhY3RvcnkpIC0+IE5vbmU6CiAgICAgICAgIHNlbGYu
cmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fbW9kX2NvbGxlY3Rpb25zID0gV2Vha0tl
eURpY3Rpb25hcnkoKQotICAgICAgICBuYW1lID0gcmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXwor
ICAgICAgICBzZWxmLl9tb2RfY29sbGVjdGlvbnMgPSAoCisgICAgICAgICAgICBXZWFrS2V5RGlj
dGlvbmFyeSgpCisgICAgICAgICkgICMgdHlwZTogV2Vha0tleURpY3Rpb25hcnlbTW9kdWxlLCBM
aXN0W1VuaW9uW0l0ZW0sIENvbGxlY3Rvcl1dXQorICAgICAgICBpZiByZXF1ZXN0LmZ1bmN0aW9u
OgorICAgICAgICAgICAgbmFtZSA9IHJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX18gICMgdHlwZTog
c3RyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lID0gcmVxdWVzdC5ub2RlLm5hbWUK
KyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi50bXBkaXIgPSB0bXBkaXJf
ZmFjdG9yeS5ta3RlbXAobmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5wbHVnaW5z
ID0gW10KKyAgICAgICAgc2VsZi50ZXN0X3RtcHJvb3QgPSB0bXBkaXJfZmFjdG9yeS5ta3RlbXAo
InRtcC0iICsgbmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5wbHVnaW5zID0gW10g
ICMgdHlwZTogTGlzdFtVbmlvbltzdHIsIF9QbHVnZ3lQbHVnaW5dXQogICAgICAgICBzZWxmLl9j
d2Rfc25hcHNob3QgPSBDd2RTbmFwc2hvdCgpCiAgICAgICAgIHNlbGYuX3N5c19wYXRoX3NuYXBz
aG90ID0gU3lzUGF0aHNTbmFwc2hvdCgpCiAgICAgICAgIHNlbGYuX3N5c19tb2R1bGVzX3NuYXBz
aG90ID0gc2VsZi5fX3Rha2Vfc3lzX21vZHVsZXNfc25hcHNob3QoKQogICAgICAgICBzZWxmLmNo
ZGlyKCkKICAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihzZWxmLmZpbmFsaXplKQot
ICAgICAgICBtZXRob2QgPSBzZWxmLnJlcXVlc3QuY29uZmlnLmdldG9wdGlvbigiLS1ydW5weXRl
c3QiKQotICAgICAgICBpZiBtZXRob2QgPT0gImlucHJvY2VzcyI6Ci0gICAgICAgICAgICBzZWxm
Ll9ydW5weXRlc3RfbWV0aG9kID0gc2VsZi5ydW5weXRlc3RfaW5wcm9jZXNzCi0gICAgICAgIGVs
aWYgbWV0aG9kID09ICJzdWJwcm9jZXNzIjoKLSAgICAgICAgICAgIHNlbGYuX3J1bnB5dGVzdF9t
ZXRob2QgPSBzZWxmLnJ1bnB5dGVzdF9zdWJwcm9jZXNzCi0KLSAgICBkZWYgX19yZXByX18oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAiPFRlc3RkaXIgJXI+IiAlIChzZWxmLnRtcGRpciwpCi0KLSAg
ICBkZWYgZmluYWxpemUoc2VsZik6CisgICAgICAgIHNlbGYuX21ldGhvZCA9IHNlbGYucmVxdWVz
dC5jb25maWcuZ2V0b3B0aW9uKCItLXJ1bnB5dGVzdCIpCisKKyAgICAgICAgbXAgPSBzZWxmLm1v
bmtleXBhdGNoID0gTW9ua2V5UGF0Y2goKQorICAgICAgICBtcC5zZXRlbnYoIlBZVEVTVF9ERUJV
R19URU1QUk9PVCIsIHN0cihzZWxmLnRlc3RfdG1wcm9vdCkpCisgICAgICAgICMgRW5zdXJlIG5v
IHVuZXhwZWN0ZWQgY2FjaGluZyB2aWEgdG94LgorICAgICAgICBtcC5kZWxlbnYoIlRPWF9FTlZf
RElSIiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgIyBEaXNjYXJkIG91dGVyIHB5dGVzdCBvcHRp
b25zLgorICAgICAgICBtcC5kZWxlbnYoIlBZVEVTVF9BRERPUFRTIiwgcmFpc2luZz1GYWxzZSkK
KyAgICAgICAgIyBFbnN1cmUgbm8gdXNlciBjb25maWcgaXMgdXNlZC4KKyAgICAgICAgdG1waG9t
ZSA9IHN0cihzZWxmLnRtcGRpcikKKyAgICAgICAgbXAuc2V0ZW52KCJIT01FIiwgdG1waG9tZSkK
KyAgICAgICAgbXAuc2V0ZW52KCJVU0VSUFJPRklMRSIsIHRtcGhvbWUpCisgICAgICAgICMgRG8g
bm90IHVzZSBjb2xvcnMgZm9yIGlubmVyIHJ1bnMgYnkgZGVmYXVsdC4KKyAgICAgICAgbXAuc2V0
ZW52KCJQWV9DT0xPUlMiLCAiMCIpCisKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgor
ICAgICAgICByZXR1cm4gIjxUZXN0ZGlyIHshcn0+Ii5mb3JtYXQoc2VsZi50bXBkaXIpCisKKyAg
ICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi50bXBk
aXIpCisKKyAgICBkZWYgZmluYWxpemUoc2VsZikgLT4gTm9uZToKICAgICAgICAgIiIiQ2xlYW4g
dXAgZ2xvYmFsIHN0YXRlIGFydGlmYWN0cy4KIAogICAgICAgICBTb21lIG1ldGhvZHMgbW9kaWZ5
IHRoZSBnbG9iYWwgaW50ZXJwcmV0ZXIgc3RhdGUgYW5kIHRoaXMgdHJpZXMgdG8KICAgICAgICAg
Y2xlYW4gdGhpcyB1cC4gIEl0IGRvZXMgbm90IHJlbW92ZSB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9y
eSBob3dldmVyIHNvCiAgICAgICAgIGl0IGNhbiBiZSBsb29rZWQgYXQgYWZ0ZXIgdGhlIHRlc3Qg
cnVuIGhhcyBmaW5pc2hlZC4KLQogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fc3lzX21vZHVs
ZXNfc25hcHNob3QucmVzdG9yZSgpCiAgICAgICAgIHNlbGYuX3N5c19wYXRoX3NuYXBzaG90LnJl
c3RvcmUoKQogICAgICAgICBzZWxmLl9jd2Rfc25hcHNob3QucmVzdG9yZSgpCisgICAgICAgIHNl
bGYubW9ua2V5cGF0Y2gudW5kbygpCiAKLSAgICBkZWYgX190YWtlX3N5c19tb2R1bGVzX3NuYXBz
aG90KHNlbGYpOgotICAgICAgICAjIHNvbWUgem9wZSBtb2R1bGVzIHVzZWQgYnkgdHdpc3RlZC1y
ZWxhdGVkIHRlc3RzIGtlZXAgaW50ZXJuYWwgc3RhdGUKKyAgICBkZWYgX190YWtlX3N5c19tb2R1
bGVzX3NuYXBzaG90KHNlbGYpIC0+IFN5c01vZHVsZXNTbmFwc2hvdDoKKyAgICAgICAgIyBTb21l
IHpvcGUgbW9kdWxlcyB1c2VkIGJ5IHR3aXN0ZWQtcmVsYXRlZCB0ZXN0cyBrZWVwIGludGVybmFs
IHN0YXRlCiAgICAgICAgICMgYW5kIGNhbid0IGJlIGRlbGV0ZWQ7IHdlIGhhZCBzb21lIHRyb3Vi
bGUgaW4gdGhlIHBhc3Qgd2l0aAotICAgICAgICAjIGB6b3BlLmludGVyZmFjZWAgZm9yIGV4YW1w
bGUKKyAgICAgICAgIyBgem9wZS5pbnRlcmZhY2VgIGZvciBleGFtcGxlLgogICAgICAgICBkZWYg
cHJlc2VydmVfbW9kdWxlKG5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3RhcnRzd2l0
aCgiem9wZSIpCiAKICAgICAgICAgcmV0dXJuIFN5c01vZHVsZXNTbmFwc2hvdChwcmVzZXJ2ZT1w
cmVzZXJ2ZV9tb2R1bGUpCiAKLSAgICBkZWYgbWFrZV9ob29rX3JlY29yZGVyKHNlbGYsIHBsdWdp
bm1hbmFnZXIpOgorICAgIGRlZiBtYWtlX2hvb2tfcmVjb3JkZXIoc2VsZiwgcGx1Z2lubWFuYWdl
cjogUHl0ZXN0UGx1Z2luTWFuYWdlcikgLT4gSG9va1JlY29yZGVyOgogICAgICAgICAiIiJDcmVh
dGUgYSBuZXcgOnB5OmNsYXNzOmBIb29rUmVjb3JkZXJgIGZvciBhIFBsdWdpbk1hbmFnZXIuIiIi
Ci0gICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihwbHVnaW5tYW5hZ2VyLCAicmVwcmVjIikKICAg
ICAgICAgcGx1Z2lubWFuYWdlci5yZXByZWMgPSByZXByZWMgPSBIb29rUmVjb3JkZXIocGx1Z2lu
bWFuYWdlcikKICAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihyZXByZWMuZmluaXNo
X3JlY29yZGluZykKICAgICAgICAgcmV0dXJuIHJlcHJlYwogCi0gICAgZGVmIGNoZGlyKHNlbGYp
OgorICAgIGRlZiBjaGRpcihzZWxmKSAtPiBOb25lOgogICAgICAgICAiIiJDZCBpbnRvIHRoZSB0
ZW1wb3JhcnkgZGlyZWN0b3J5LgogCiAgICAgICAgIFRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5
IHVwb24gaW5zdGFudGlhdGlvbi4KLQogICAgICAgICAiIiIKICAgICAgICAgc2VsZi50bXBkaXIu
Y2hkaXIoKQogCi0gICAgZGVmIF9tYWtlZmlsZShzZWxmLCBleHQsIGFyZ3MsIGt3YXJncywgZW5j
b2Rpbmc9InV0Zi04Iik6Ci0gICAgICAgIGl0ZW1zID0gbGlzdChrd2FyZ3MuaXRlbXMoKSkKKyAg
ICBkZWYgX21ha2VmaWxlKHNlbGYsIGV4dDogc3RyLCBsaW5lcywgZmlsZXMsIGVuY29kaW5nOiBz
dHIgPSAidXRmLTgiKToKKyAgICAgICAgaXRlbXMgPSBsaXN0KGZpbGVzLml0ZW1zKCkpCiAKICAg
ICAgICAgZGVmIHRvX3RleHQocyk6Ci0gICAgICAgICAgICByZXR1cm4gcy5kZWNvZGUoZW5jb2Rp
bmcpIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpIGVsc2Ugc2l4LnRleHRfdHlwZShzKQorICAgICAg
ICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nKSBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKSBl
bHNlIHN0cihzKQogCi0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICBzb3VyY2UgPSB1Ilxu
Ii5qb2luKHRvX3RleHQoeCkgZm9yIHggaW4gYXJncykKLSAgICAgICAgICAgIGJhc2VuYW1lID0g
c2VsZi5yZXF1ZXN0LmZ1bmN0aW9uLl9fbmFtZV9fCisgICAgICAgIGlmIGxpbmVzOgorICAgICAg
ICAgICAgc291cmNlID0gIlxuIi5qb2luKHRvX3RleHQoeCkgZm9yIHggaW4gbGluZXMpCisgICAg
ICAgICAgICBiYXNlbmFtZSA9IHNlbGYuX25hbWUKICAgICAgICAgICAgIGl0ZW1zLmluc2VydCgw
LCAoYmFzZW5hbWUsIHNvdXJjZSkpCiAKICAgICAgICAgcmV0ID0gTm9uZQogICAgICAgICBmb3Ig
YmFzZW5hbWUsIHZhbHVlIGluIGl0ZW1zOgogICAgICAgICAgICAgcCA9IHNlbGYudG1wZGlyLmpv
aW4oYmFzZW5hbWUpLm5ldyhleHQ9ZXh0KQogICAgICAgICAgICAgcC5kaXJwYXRoKCkuZW5zdXJl
X2RpcigpCi0gICAgICAgICAgICBzb3VyY2UgPSBTb3VyY2UodmFsdWUpCi0gICAgICAgICAgICBz
b3VyY2UgPSB1IlxuIi5qb2luKHRvX3RleHQobGluZSkgZm9yIGxpbmUgaW4gc291cmNlLmxpbmVz
KQorICAgICAgICAgICAgc291cmNlXyA9IFNvdXJjZSh2YWx1ZSkKKyAgICAgICAgICAgIHNvdXJj
ZSA9ICJcbiIuam9pbih0b190ZXh0KGxpbmUpIGZvciBsaW5lIGluIHNvdXJjZV8ubGluZXMpCiAg
ICAgICAgICAgICBwLndyaXRlKHNvdXJjZS5zdHJpcCgpLmVuY29kZShlbmNvZGluZyksICJ3YiIp
CiAgICAgICAgICAgICBpZiByZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXQgPSBwCiAg
ICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiBtYWtlZmlsZShzZWxmLCBleHQsICphcmdzLCAq
Kmt3YXJncyk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyBmaWxlIGluIHRoZSB0ZXN0ZGlyLgor
ICAgIGRlZiBtYWtlZmlsZShzZWxmLCBleHQ6IHN0ciwgKmFyZ3M6IHN0ciwgKiprd2FyZ3MpOgor
ICAgICAgICByIiIiQ3JlYXRlIG5ldyBmaWxlKHMpIGluIHRoZSB0ZXN0ZGlyLgorCisgICAgICAg
IDpwYXJhbSBzdHIgZXh0OgorICAgICAgICAgICAgVGhlIGV4dGVuc2lvbiB0aGUgZmlsZShzKSBz
aG91bGQgdXNlLCBpbmNsdWRpbmcgdGhlIGRvdCwgZS5nLiBgLnB5YC4KKyAgICAgICAgOnBhcmFt
IGFyZ3M6CisgICAgICAgICAgICBBbGwgYXJncyBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzIGFuZCBq
b2luZWQgdXNpbmcgbmV3bGluZXMuCisgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHdyaXR0ZW4g
YXMgY29udGVudHMgdG8gdGhlIGZpbGUuICBUaGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgIGZp
bGUgaXMgYmFzZWQgb24gdGhlIHRlc3QgZnVuY3Rpb24gcmVxdWVzdGluZyB0aGlzIGZpeHR1cmUu
CisgICAgICAgIDpwYXJhbSBrd2FyZ3M6CisgICAgICAgICAgICBFYWNoIGtleXdvcmQgaXMgdGhl
IG5hbWUgb2YgYSBmaWxlLCB3aGlsZSB0aGUgdmFsdWUgb2YgaXQgd2lsbAorICAgICAgICAgICAg
YmUgd3JpdHRlbiBhcyBjb250ZW50cyBvZiB0aGUgZmlsZS4KIAotICAgICAgICBleHQ6IFRoZSBl
eHRlbnNpb24gdGhlIGZpbGUgc2hvdWxkIHVzZSwgaW5jbHVkaW5nIHRoZSBkb3QsIGUuZy4gYC5w
eWAuCisgICAgICAgIEV4YW1wbGVzOgogCi0gICAgICAgIGFyZ3M6IEFsbCBhcmdzIHdpbGwgYmUg
dHJlYXRlZCBhcyBzdHJpbmdzIGFuZCBqb2luZWQgdXNpbmcgbmV3bGluZXMuCi0gICAgICAgICAg
IFRoZSByZXN1bHQgd2lsbCBiZSB3cml0dGVuIGFzIGNvbnRlbnRzIHRvIHRoZSBmaWxlLiAgVGhl
IG5hbWUgb2YgdGhlCi0gICAgICAgICAgIGZpbGUgd2lsbCBiZSBiYXNlZCBvbiB0aGUgdGVzdCBm
dW5jdGlvbiByZXF1ZXN0aW5nIHRoaXMgZml4dHVyZS4KLSAgICAgICAgICAgRS5nLiAidGVzdGRp
ci5tYWtlZmlsZSgnLnR4dCcsICdsaW5lMScsICdsaW5lMicpIgorICAgICAgICAuLiBjb2RlLWJs
b2NrOjogcHl0aG9uCiAKLSAgICAgICAga3dhcmdzOiBFYWNoIGtleXdvcmQgaXMgdGhlIG5hbWUg
b2YgYSBmaWxlLCB3aGlsZSB0aGUgdmFsdWUgb2YgaXQgd2lsbAotICAgICAgICAgICBiZSB3cml0
dGVuIGFzIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgotICAgICAgICAgICBFLmcuICJ0ZXN0ZGlyLm1h
a2VmaWxlKCcuaW5pJywgcHl0ZXN0PSdbcHl0ZXN0XVxuYWRkb3B0cz0tcnNcbicpIgorICAgICAg
ICAgICAgdGVzdGRpci5tYWtlZmlsZSgiLnR4dCIsICJsaW5lMSIsICJsaW5lMiIpCisKKyAgICAg
ICAgICAgIHRlc3RkaXIubWFrZWZpbGUoIi5pbmkiLCBweXRlc3Q9IltweXRlc3RdXG5hZGRvcHRz
PS1yc1xuIikKIAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKGV4
dCwgYXJncywga3dhcmdzKQpAQCAtNTgyLDc3ICs3NTEsMTQ5IEBAIGNsYXNzIFRlc3RkaXIob2Jq
ZWN0KToKICAgICAgICAgIiIiV3JpdGUgYSB0b3guaW5pIGZpbGUgd2l0aCAnc291cmNlJyBhcyBj
b250ZW50cy4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYubWFrZWZpbGUoIi5pbmkiLCB0b3g9c291
cmNlKQogCi0gICAgZGVmIGdldGluaWNmZyhzZWxmLCBzb3VyY2UpOgorICAgIGRlZiBnZXRpbmlj
Zmcoc2VsZiwgc291cmNlKSAtPiBJbmlDb25maWc6CiAgICAgICAgICIiIlJldHVybiB0aGUgcHl0
ZXN0IHNlY3Rpb24gZnJvbSB0aGUgdG94LmluaSBjb25maWcgZmlsZS4iIiIKICAgICAgICAgcCA9
IHNlbGYubWFrZWluaShzb3VyY2UpCi0gICAgICAgIHJldHVybiBweS5pbmljb25maWcuSW5pQ29u
ZmlnKHApWyJweXRlc3QiXQorICAgICAgICByZXR1cm4gSW5pQ29uZmlnKHApWyJweXRlc3QiXQor
CisgICAgZGVmIG1ha2VweXByb2plY3R0b21sKHNlbGYsIHNvdXJjZSk6CisgICAgICAgICIiIldy
aXRlIGEgcHlwcm9qZWN0LnRvbWwgZmlsZSB3aXRoICdzb3VyY2UnIGFzIGNvbnRlbnRzLgorCisg
ICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDYuMAorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu
IHNlbGYubWFrZWZpbGUoIi50b21sIiwgcHlwcm9qZWN0PXNvdXJjZSkKIAogICAgIGRlZiBtYWtl
cHlmaWxlKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlNob3J0Y3V0IGZvciAu
bWFrZWZpbGUoKSB3aXRoIGEgLnB5IGV4dGVuc2lvbi4iIiIKKyAgICAgICAgciIiIlNob3J0Y3V0
IGZvciAubWFrZWZpbGUoKSB3aXRoIGEgLnB5IGV4dGVuc2lvbi4KKworICAgICAgICBEZWZhdWx0
cyB0byB0aGUgdGVzdCBuYW1lIHdpdGggYSAnLnB5JyBleHRlbnNpb24sIGUuZyB0ZXN0X2Zvb2Jh
ci5weSwgb3ZlcndyaXRpbmcKKyAgICAgICAgZXhpc3RpbmcgZmlsZXMuCisKKyAgICAgICAgRXhh
bXBsZXM6CisKKyAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgICAgICAgICBk
ZWYgdGVzdF9zb21ldGhpbmcodGVzdGRpcik6CisgICAgICAgICAgICAgICAgIyBJbml0aWFsIGZp
bGUgaXMgY3JlYXRlZCB0ZXN0X3NvbWV0aGluZy5weS4KKyAgICAgICAgICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoImZvb2JhciIpCisgICAgICAgICAgICAgICAgIyBUbyBjcmVhdGUgbXVsdGlw
bGUgZmlsZXMsIHBhc3Mga3dhcmdzIGFjY29yZGluZ2x5LgorICAgICAgICAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZShjdXN0b209ImZvb2JhciIpCisgICAgICAgICAgICAgICAgIyBBdCB0aGlz
IHBvaW50LCBib3RoICd0ZXN0X3NvbWV0aGluZy5weScgJiAnY3VzdG9tLnB5JyBleGlzdCBpbiB0
aGUgdGVzdCBkaXJlY3RvcnkuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9t
YWtlZmlsZSgiLnB5IiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIG1ha2V0eHRmaWxlKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlNob3J0Y3V0IGZvciAubWFrZWZpbGUoKSB3
aXRoIGEgLnR4dCBleHRlbnNpb24uIiIiCisgICAgICAgIHIiIiJTaG9ydGN1dCBmb3IgLm1ha2Vm
aWxlKCkgd2l0aCBhIC50eHQgZXh0ZW5zaW9uLgorCisgICAgICAgIERlZmF1bHRzIHRvIHRoZSB0
ZXN0IG5hbWUgd2l0aCBhICcudHh0JyBleHRlbnNpb24sIGUuZyB0ZXN0X2Zvb2Jhci50eHQsIG92
ZXJ3cml0aW5nCisgICAgICAgIGV4aXN0aW5nIGZpbGVzLgorCisgICAgICAgIEV4YW1wbGVzOgor
CisgICAgICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICAgICAgZGVmIHRlc3Rf
c29tZXRoaW5nKHRlc3RkaXIpOgorICAgICAgICAgICAgICAgICMgSW5pdGlhbCBmaWxlIGlzIGNy
ZWF0ZWQgdGVzdF9zb21ldGhpbmcudHh0LgorICAgICAgICAgICAgICAgIHRlc3RkaXIubWFrZXR4
dGZpbGUoImZvb2JhciIpCisgICAgICAgICAgICAgICAgIyBUbyBjcmVhdGUgbXVsdGlwbGUgZmls
ZXMsIHBhc3Mga3dhcmdzIGFjY29yZGluZ2x5LgorICAgICAgICAgICAgICAgIHRlc3RkaXIubWFr
ZXR4dGZpbGUoY3VzdG9tPSJmb29iYXIiKQorICAgICAgICAgICAgICAgICMgQXQgdGhpcyBwb2lu
dCwgYm90aCAndGVzdF9zb21ldGhpbmcudHh0JyAmICdjdXN0b20udHh0JyBleGlzdCBpbiB0aGUg
dGVzdCBkaXJlY3RvcnkuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9tYWtl
ZmlsZSgiLnR4dCIsIGFyZ3MsIGt3YXJncykKIAotICAgIGRlZiBzeXNwYXRoaW5zZXJ0KHNlbGYs
IHBhdGg9Tm9uZSk6CisgICAgZGVmIHN5c3BhdGhpbnNlcnQoc2VsZiwgcGF0aD1Ob25lKSAtPiBO
b25lOgogICAgICAgICAiIiJQcmVwZW5kIGEgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLCBkZWZhdWx0
cyB0byA6cHk6YXR0cjpgdG1wZGlyYC4KIAogICAgICAgICBUaGlzIGlzIHVuZG9uZSBhdXRvbWF0
aWNhbGx5IHdoZW4gdGhpcyBvYmplY3QgZGllcyBhdCB0aGUgZW5kIG9mIGVhY2gKICAgICAgICAg
dGVzdC4KLQogICAgICAgICAiIiIKICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAg
ICAgcGF0aCA9IHNlbGYudG1wZGlyCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBzdHIocGF0
aCkpCi0gICAgICAgICMgYSBjYWxsIHRvIHN5c3BhdGhpbnNlcnQoKSB1c3VhbGx5IG1lYW5zIHRo
YXQgdGhlIGNhbGxlciB3YW50cyB0bwotICAgICAgICAjIGltcG9ydCBzb21lIGR5bmFtaWNhbGx5
IGNyZWF0ZWQgZmlsZXMsIHRodXMgd2l0aCBweXRob24zIHdlCi0gICAgICAgICMgaW52YWxpZGF0
ZSBpdHMgaW1wb3J0IGNhY2hlcwotICAgICAgICBzZWxmLl9wb3NzaWJseV9pbnZhbGlkYXRlX2lt
cG9ydF9jYWNoZXMoKQotCi0gICAgZGVmIF9wb3NzaWJseV9pbnZhbGlkYXRlX2ltcG9ydF9jYWNo
ZXMoc2VsZik6Ci0gICAgICAgICMgaW52YWxpZGF0ZSBjYWNoZXMgaWYgd2UgY2FuIChweTMzIGFu
ZCBhYm92ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IGltcG9ydGxpYgotICAg
ICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKGltcG9ydGxpYiwgImludmFsaWRhdGVfY2FjaGVzIik6
Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAotICAgIGRl
ZiBta2RpcihzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5tb25rZXlwYXRjaC5zeXNwYXRoX3By
ZXBlbmQoc3RyKHBhdGgpKQorCisgICAgZGVmIG1rZGlyKHNlbGYsIG5hbWUpIC0+IHB5LnBhdGgu
bG9jYWw6CiAgICAgICAgICIiIkNyZWF0ZSBhIG5ldyAoc3ViKWRpcmVjdG9yeS4iIiIKICAgICAg
ICAgcmV0dXJuIHNlbGYudG1wZGlyLm1rZGlyKG5hbWUpCiAKLSAgICBkZWYgbWtweWRpcihzZWxm
LCBuYW1lKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IHB5dGhvbiBwYWNrYWdlLgorICAgIGRl
ZiBta3B5ZGlyKHNlbGYsIG5hbWUpIC0+IHB5LnBhdGgubG9jYWw6CisgICAgICAgICIiIkNyZWF0
ZSBhIG5ldyBQeXRob24gcGFja2FnZS4KIAogICAgICAgICBUaGlzIGNyZWF0ZXMgYSAoc3ViKWRp
cmVjdG9yeSB3aXRoIGFuIGVtcHR5IGBgX19pbml0X18ucHlgYCBmaWxlIHNvIGl0Ci0gICAgICAg
IGdldHMgcmVjb2duaXNlZCBhcyBhIHB5dGhvbiBwYWNrYWdlLgotCisgICAgICAgIGdldHMgcmVj
b2duaXNlZCBhcyBhIFB5dGhvbiBwYWNrYWdlLgogICAgICAgICAiIiIKICAgICAgICAgcCA9IHNl
bGYubWtkaXIobmFtZSkKICAgICAgICAgcC5lbnN1cmUoIl9faW5pdF9fLnB5IikKICAgICAgICAg
cmV0dXJuIHAKIAotICAgIFNlc3Npb24gPSBTZXNzaW9uCisgICAgZGVmIGNvcHlfZXhhbXBsZShz
ZWxmLCBuYW1lPU5vbmUpIC0+IHB5LnBhdGgubG9jYWw6CisgICAgICAgICIiIkNvcHkgZmlsZSBm
cm9tIHByb2plY3QncyBkaXJlY3RvcnkgaW50byB0aGUgdGVzdGRpci4KIAotICAgIGRlZiBnZXRu
b2RlKHNlbGYsIGNvbmZpZywgYXJnKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2xsZWN0aW9u
IG5vZGUgb2YgYSBmaWxlLgorICAgICAgICA6cGFyYW0gc3RyIG5hbWU6IFRoZSBuYW1lIG9mIHRo
ZSBmaWxlIHRvIGNvcHkuCisgICAgICAgIDpyZXR1cm5zOiBQYXRoIHRvIHRoZSBjb3BpZWQgZGly
ZWN0b3J5IChpbnNpZGUgYGBzZWxmLnRtcGRpcmBgKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlt
cG9ydCB3YXJuaW5ncworICAgICAgICBmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQg
UFlURVNURVJfQ09QWV9FWEFNUExFCisKKyAgICAgICAgd2FybmluZ3Mud2FybihQWVRFU1RFUl9D
T1BZX0VYQU1QTEUsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgZXhhbXBsZV9kaXIgPSBzZWxmLnJl
cXVlc3QuY29uZmlnLmdldGluaSgicHl0ZXN0ZXJfZXhhbXBsZV9kaXIiKQorICAgICAgICBpZiBl
eGFtcGxlX2RpciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHl0ZXN0
ZXJfZXhhbXBsZV9kaXIgaXMgdW5zZXQsIGNhbid0IGNvcHkgZXhhbXBsZXMiKQorICAgICAgICBl
eGFtcGxlX2RpciA9IHNlbGYucmVxdWVzdC5jb25maWcucm9vdGRpci5qb2luKGV4YW1wbGVfZGly
KQorCisgICAgICAgIGZvciBleHRyYV9lbGVtZW50IGluIHNlbGYucmVxdWVzdC5ub2RlLml0ZXJf
bWFya2VycygicHl0ZXN0ZXJfZXhhbXBsZV9wYXRoIik6CisgICAgICAgICAgICBhc3NlcnQgZXh0
cmFfZWxlbWVudC5hcmdzCisgICAgICAgICAgICBleGFtcGxlX2RpciA9IGV4YW1wbGVfZGlyLmpv
aW4oKmV4dHJhX2VsZW1lbnQuYXJncykKKworICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAg
ICAgICAgICBmdW5jX25hbWUgPSBzZWxmLl9uYW1lCisgICAgICAgICAgICBtYXliZV9kaXIgPSBl
eGFtcGxlX2RpciAvIGZ1bmNfbmFtZQorICAgICAgICAgICAgbWF5YmVfZmlsZSA9IGV4YW1wbGVf
ZGlyIC8gKGZ1bmNfbmFtZSArICIucHkiKQorCisgICAgICAgICAgICBpZiBtYXliZV9kaXIuaXNk
aXIoKToKKyAgICAgICAgICAgICAgICBleGFtcGxlX3BhdGggPSBtYXliZV9kaXIKKyAgICAgICAg
ICAgIGVsaWYgbWF5YmVfZmlsZS5pc2ZpbGUoKToKKyAgICAgICAgICAgICAgICBleGFtcGxlX3Bh
dGggPSBtYXliZV9maWxlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNl
IExvb2t1cEVycm9yKAorICAgICAgICAgICAgICAgICAgICAie30gY2FudCBiZSBmb3VuZCBhcyBt
b2R1bGUgb3IgcGFja2FnZSBpbiB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnVuY19uYW1lLCBleGFtcGxlX2Rpci5iZXN0cmVscGF0aChzZWxmLnJlcXVlc3QuY29uZmlnLnJv
b3RkaXIpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBleGFtcGxlX3BhdGggPSBleGFtcGxlX2Rpci5qb2luKG5hbWUp
CisKKyAgICAgICAgaWYgZXhhbXBsZV9wYXRoLmlzZGlyKCkgYW5kIG5vdCBleGFtcGxlX3BhdGgu
am9pbigiX19pbml0X18ucHkiKS5pc2ZpbGUoKToKKyAgICAgICAgICAgIGV4YW1wbGVfcGF0aC5j
b3B5KHNlbGYudG1wZGlyKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYudG1wZGlyCisgICAgICAg
IGVsaWYgZXhhbXBsZV9wYXRoLmlzZmlsZSgpOgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi50
bXBkaXIuam9pbihleGFtcGxlX3BhdGguYmFzZW5hbWUpCisgICAgICAgICAgICBleGFtcGxlX3Bh
dGguY29weShyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICByYWlzZSBMb29rdXBFcnJvcigKKyAgICAgICAgICAgICAgICAnZXhhbXBs
ZSAie30iIGlzIG5vdCBmb3VuZCBhcyBhIGZpbGUgb3IgZGlyZWN0b3J5Jy5mb3JtYXQoZXhhbXBs
ZV9wYXRoKQorICAgICAgICAgICAgKQogCi0gICAgICAgIDpwYXJhbSBjb25maWc6IDpweTpjbGFz
czpgX3B5dGVzdC5jb25maWcuQ29uZmlnYCBpbnN0YW5jZSwgc2VlCi0gICAgICAgICAgIDpweTpt
ZXRoOmBwYXJzZWNvbmZpZ2AgYW5kIDpweTptZXRoOmBwYXJzZWNvbmZpZ3VyZWAgdG8gY3JlYXRl
IHRoZQotICAgICAgICAgICBjb25maWd1cmF0aW9uCisgICAgU2Vzc2lvbiA9IFNlc3Npb24KIAot
ICAgICAgICA6cGFyYW0gYXJnOiBhIDpweTpjbGFzczpgcHkucGF0aC5sb2NhbGAgaW5zdGFuY2Ug
b2YgdGhlIGZpbGUKKyAgICBkZWYgZ2V0bm9kZShzZWxmLCBjb25maWc6IENvbmZpZywgYXJnKToK
KyAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2xsZWN0aW9uIG5vZGUgb2YgYSBmaWxlLgogCisgICAg
ICAgIDpwYXJhbSBfcHl0ZXN0LmNvbmZpZy5Db25maWcgY29uZmlnOgorICAgICAgICAgICBBIHB5
dGVzdCBjb25maWcuCisgICAgICAgICAgIFNlZSA6cHk6bWV0aDpgcGFyc2Vjb25maWdgIGFuZCA6
cHk6bWV0aDpgcGFyc2Vjb25maWd1cmVgIGZvciBjcmVhdGluZyBpdC4KKyAgICAgICAgOnBhcmFt
IHB5LnBhdGgubG9jYWwgYXJnOgorICAgICAgICAgICAgUGF0aCB0byB0aGUgZmlsZS4KICAgICAg
ICAgIiIiCi0gICAgICAgIHNlc3Npb24gPSBTZXNzaW9uKGNvbmZpZykKKyAgICAgICAgc2Vzc2lv
biA9IFNlc3Npb24uZnJvbV9jb25maWcoY29uZmlnKQogICAgICAgICBhc3NlcnQgIjo6IiBub3Qg
aW4gc3RyKGFyZykKICAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwoYXJnKQogICAgICAgICBjb25m
aWcuaG9vay5weXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb249c2Vzc2lvbikKICAgICAgICAgcmVz
ID0gc2Vzc2lvbi5wZXJmb3JtX2NvbGxlY3QoW3N0cihwKV0sIGdlbml0ZW1zPUZhbHNlKVswXQot
ICAgICAgICBjb25maWcuaG9vay5weXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uPXNlc3Npb24s
IGV4aXRzdGF0dXM9RVhJVF9PSykKKyAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25m
aW5pc2goc2Vzc2lvbj1zZXNzaW9uLCBleGl0c3RhdHVzPUV4aXRDb2RlLk9LKQogICAgICAgICBy
ZXR1cm4gcmVzCiAKICAgICBkZWYgZ2V0cGF0aG5vZGUoc2VsZiwgcGF0aCk6CkBAIC02NjEsMjYg
KzkwMiwyNCBAQCBjbGFzcyBUZXN0ZGlyKG9iamVjdCk6CiAgICAgICAgIFRoaXMgaXMgbGlrZSA6
cHk6bWV0aDpgZ2V0bm9kZWAgYnV0IHVzZXMgOnB5Om1ldGg6YHBhcnNlY29uZmlndXJlYCB0bwog
ICAgICAgICBjcmVhdGUgdGhlIChjb25maWd1cmVkKSBweXRlc3QgQ29uZmlnIGluc3RhbmNlLgog
Ci0gICAgICAgIDpwYXJhbSBwYXRoOiBhIDpweTpjbGFzczpgcHkucGF0aC5sb2NhbGAgaW5zdGFu
Y2Ugb2YgdGhlIGZpbGUKLQorICAgICAgICA6cGFyYW0gcHkucGF0aC5sb2NhbCBwYXRoOiBQYXRo
IHRvIHRoZSBmaWxlLgogICAgICAgICAiIiIKICAgICAgICAgY29uZmlnID0gc2VsZi5wYXJzZWNv
bmZpZ3VyZShwYXRoKQotICAgICAgICBzZXNzaW9uID0gU2Vzc2lvbihjb25maWcpCisgICAgICAg
IHNlc3Npb24gPSBTZXNzaW9uLmZyb21fY29uZmlnKGNvbmZpZykKICAgICAgICAgeCA9IHNlc3Np
b24uZnNwYXRoLmJlc3RyZWxwYXRoKHBhdGgpCiAgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9z
ZXNzaW9uc3RhcnQoc2Vzc2lvbj1zZXNzaW9uKQogICAgICAgICByZXMgPSBzZXNzaW9uLnBlcmZv
cm1fY29sbGVjdChbeF0sIGdlbml0ZW1zPUZhbHNlKVswXQotICAgICAgICBjb25maWcuaG9vay5w
eXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uPXNlc3Npb24sIGV4aXRzdGF0dXM9RVhJVF9PSykK
KyAgICAgICAgY29uZmlnLmhvb2sucHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbj1zZXNzaW9u
LCBleGl0c3RhdHVzPUV4aXRDb2RlLk9LKQogICAgICAgICByZXR1cm4gcmVzCiAKLSAgICBkZWYg
Z2VuaXRlbXMoc2VsZiwgY29saXRlbXMpOgorICAgIGRlZiBnZW5pdGVtcyhzZWxmLCBjb2xpdGVt
czogU2VxdWVuY2VbVW5pb25bSXRlbSwgQ29sbGVjdG9yXV0pIC0+IExpc3RbSXRlbV06CiAgICAg
ICAgICIiIkdlbmVyYXRlIGFsbCB0ZXN0IGl0ZW1zIGZyb20gYSBjb2xsZWN0aW9uIG5vZGUuCiAK
ICAgICAgICAgVGhpcyByZWN1cnNlcyBpbnRvIHRoZSBjb2xsZWN0aW9uIG5vZGUgYW5kIHJldHVy
bnMgYSBsaXN0IG9mIGFsbCB0aGUKICAgICAgICAgdGVzdCBpdGVtcyBjb250YWluZWQgd2l0aGlu
LgotCiAgICAgICAgICIiIgogICAgICAgICBzZXNzaW9uID0gY29saXRlbXNbMF0uc2Vzc2lvbgot
ICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICByZXN1bHQgPSBbXSAgIyB0eXBlOiBMaXN0W0l0
ZW1dCiAgICAgICAgIGZvciBjb2xpdGVtIGluIGNvbGl0ZW1zOgogICAgICAgICAgICAgcmVzdWx0
LmV4dGVuZChzZXNzaW9uLmdlbml0ZW1zKGNvbGl0ZW0pKQogICAgICAgICByZXR1cm4gcmVzdWx0
CkBAIC02OTIsNyArOTMxLDYgQEAgY2xhc3MgVGVzdGRpcihvYmplY3QpOgogICAgICAgICBwcm92
aWRlIGEgYGAuZ2V0cnVubmVyKClgYCBtZXRob2Qgd2hpY2ggc2hvdWxkIHJldHVybiBhIHJ1bm5l
ciB3aGljaAogICAgICAgICBjYW4gcnVuIHRoZSB0ZXN0IHByb3RvY29sIGZvciBhIHNpbmdsZSBp
dGVtLCBlLmcuCiAgICAgICAgIDpweTpmdW5jOmBfcHl0ZXN0LnJ1bm5lci5ydW50ZXN0cHJvdG9j
b2xgLgotCiAgICAgICAgICIiIgogICAgICAgICAjIHVzZWQgZnJvbSBydW5uZXIgZnVuY3Rpb25h
bCB0ZXN0cwogICAgICAgICBpdGVtID0gc2VsZi5nZXRpdGVtKHNvdXJjZSkKQEAgLTcwMSwzNyAr
OTM5LDM3IEBAIGNsYXNzIFRlc3RkaXIob2JqZWN0KToKICAgICAgICAgcnVubmVyID0gdGVzdGNs
YXNzaW5zdGFuY2UuZ2V0cnVubmVyKCkKICAgICAgICAgcmV0dXJuIHJ1bm5lcihpdGVtKQogCi0g
ICAgZGVmIGlubGluZV9ydW5zb3VyY2Uoc2VsZiwgc291cmNlLCAqY21kbGluZWFyZ3MpOgorICAg
IGRlZiBpbmxpbmVfcnVuc291cmNlKHNlbGYsIHNvdXJjZSwgKmNtZGxpbmVhcmdzKSAtPiBIb29r
UmVjb3JkZXI6CiAgICAgICAgICIiIlJ1biBhIHRlc3QgbW9kdWxlIGluIHByb2Nlc3MgdXNpbmcg
YGBweXRlc3QubWFpbigpYGAuCiAKICAgICAgICAgVGhpcyBydW4gd3JpdGVzICJzb3VyY2UiIGlu
dG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgcnVucwogICAgICAgICBgYHB5dGVzdC5tYWluKClgYCBv
biBpdCwgcmV0dXJuaW5nIGEgOnB5OmNsYXNzOmBIb29rUmVjb3JkZXJgIGluc3RhbmNlCiAgICAg
ICAgIGZvciB0aGUgcmVzdWx0LgogCi0gICAgICAgIDpwYXJhbSBzb3VyY2U6IHRoZSBzb3VyY2Ug
Y29kZSBvZiB0aGUgdGVzdCBtb2R1bGUKLQotICAgICAgICA6cGFyYW0gY21kbGluZWFyZ3M6IGFu
eSBleHRyYSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIHVzZQorICAgICAgICA6cGFyYW0gc291
cmNlOiBUaGUgc291cmNlIGNvZGUgb2YgdGhlIHRlc3QgbW9kdWxlLgogCi0gICAgICAgIDpyZXR1
cm46IDpweTpjbGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0CisgICAg
ICAgIDpwYXJhbSBjbWRsaW5lYXJnczogQW55IGV4dHJhIGNvbW1hbmQgbGluZSBhcmd1bWVudHMg
dG8gdXNlLgogCisgICAgICAgIDpyZXR1cm5zOiA6cHk6Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5z
dGFuY2Ugb2YgdGhlIHJlc3VsdC4KICAgICAgICAgIiIiCiAgICAgICAgIHAgPSBzZWxmLm1ha2Vw
eWZpbGUoc291cmNlKQogICAgICAgICB2YWx1ZXMgPSBsaXN0KGNtZGxpbmVhcmdzKSArIFtwXQog
ICAgICAgICByZXR1cm4gc2VsZi5pbmxpbmVfcnVuKCp2YWx1ZXMpCiAKLSAgICBkZWYgaW5saW5l
X2dlbml0ZW1zKHNlbGYsICphcmdzKToKKyAgICBkZWYgaW5saW5lX2dlbml0ZW1zKHNlbGYsICph
cmdzKSAtPiBUdXBsZVtMaXN0W0l0ZW1dLCBIb29rUmVjb3JkZXJdOgogICAgICAgICAiIiJSdW4g
YGBweXRlc3QubWFpbihbJy0tY29sbGVjdG9ubHknXSlgYCBpbi1wcm9jZXNzLgogCiAgICAgICAg
IFJ1bnMgdGhlIDpweTpmdW5jOmBweXRlc3QubWFpbmAgZnVuY3Rpb24gdG8gcnVuIGFsbCBvZiBw
eXRlc3QgaW5zaWRlCiAgICAgICAgIHRoZSB0ZXN0IHByb2Nlc3MgaXRzZWxmIGxpa2UgOnB5Om1l
dGg6YGlubGluZV9ydW5gLCBidXQgcmV0dXJucyBhCiAgICAgICAgIHR1cGxlIG9mIHRoZSBjb2xs
ZWN0ZWQgaXRlbXMgYW5kIGEgOnB5OmNsYXNzOmBIb29rUmVjb3JkZXJgIGluc3RhbmNlLgotCiAg
ICAgICAgICIiIgogICAgICAgICByZWMgPSBzZWxmLmlubGluZV9ydW4oIi0tY29sbGVjdC1vbmx5
IiwgKmFyZ3MpCiAgICAgICAgIGl0ZW1zID0gW3guaXRlbSBmb3IgeCBpbiByZWMuZ2V0Y2FsbHMo
InB5dGVzdF9pdGVtY29sbGVjdGVkIildCiAgICAgICAgIHJldHVybiBpdGVtcywgcmVjCiAKLSAg
ICBkZWYgaW5saW5lX3J1bihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBpbmxpbmVf
cnVuKAorICAgICAgICBzZWxmLCAqYXJncywgcGx1Z2lucz0oKSwgbm9fcmVyYWlzZV9jdHJsYzog
Ym9vbCA9IEZhbHNlCisgICAgKSAtPiBIb29rUmVjb3JkZXI6CiAgICAgICAgICIiIlJ1biBgYHB5
dGVzdC5tYWluKClgYCBpbi1wcm9jZXNzLCByZXR1cm5pbmcgYSBIb29rUmVjb3JkZXIuCiAKICAg
ICAgICAgUnVucyB0aGUgOnB5OmZ1bmM6YHB5dGVzdC5tYWluYCBmdW5jdGlvbiB0byBydW4gYWxs
IG9mIHB5dGVzdCBpbnNpZGUKQEAgLTc0MCwyOCArOTc4LDI0IEBAIGNsYXNzIFRlc3RkaXIob2Jq
ZWN0KToKICAgICAgICAgZnJvbSB0aGF0IHJ1biB0aGFuIGNhbiBiZSBkb25lIGJ5IG1hdGNoaW5n
IHN0ZG91dC9zdGRlcnIgZnJvbQogICAgICAgICA6cHk6bWV0aDpgcnVucHl0ZXN0YC4KIAotICAg
ICAgICA6cGFyYW0gYXJnczogY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBwYXNzIHRvIDpweTpm
dW5jOmBweXRlc3QubWFpbmAKLQotICAgICAgICA6cGFyYW0gcGx1Z2luOiAoa2V5d29yZC1vbmx5
KSBleHRyYSBwbHVnaW4gaW5zdGFuY2VzIHRoZQotICAgICAgICAgICBgYHB5dGVzdC5tYWluKClg
YCBpbnN0YW5jZSBzaG91bGQgdXNlCi0KLSAgICAgICAgOnJldHVybjogYSA6cHk6Y2xhc3M6YEhv
b2tSZWNvcmRlcmAgaW5zdGFuY2UKKyAgICAgICAgOnBhcmFtIGFyZ3M6CisgICAgICAgICAgICBD
b21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIHBhc3MgdG8gOnB5OmZ1bmM6YHB5dGVzdC5tYWluYC4K
KyAgICAgICAgOnBhcmFtIHBsdWdpbnM6CisgICAgICAgICAgICBFeHRyYSBwbHVnaW4gaW5zdGFu
Y2VzIHRoZSBgYHB5dGVzdC5tYWluKClgYCBpbnN0YW5jZSBzaG91bGQgdXNlLgorICAgICAgICA6
cGFyYW0gbm9fcmVyYWlzZV9jdHJsYzoKKyAgICAgICAgICAgIFR5cGljYWxseSB3ZSByZXJhaXNl
IGtleWJvYXJkIGludGVycnVwdHMgZnJvbSB0aGUgY2hpbGQgcnVuLiBJZgorICAgICAgICAgICAg
VHJ1ZSwgdGhlIEtleWJvYXJkSW50ZXJydXB0IGV4Y2VwdGlvbiBpcyBjYXB0dXJlZC4KIAorICAg
ICAgICA6cmV0dXJuczogQSA6cHk6Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5zdGFuY2UuCiAgICAg
ICAgICIiIgorICAgICAgICAjIChtYXliZSBhIGNweXRob24gYnVnPykgdGhlIGltcG9ydGxpYiBj
YWNoZSBzb21ldGltZXMgaXNuJ3QgdXBkYXRlZAorICAgICAgICAjIHByb3Blcmx5IGJldHdlZW4g
ZmlsZSBjcmVhdGlvbiBhbmQgaW5saW5lX3J1biAoZXNwZWNpYWxseSBpZiBpbXBvcnRzCisgICAg
ICAgICMgYXJlIGludGVyc3BlcnNlZCB3aXRoIGZpbGUgY3JlYXRpb24pCisgICAgICAgIGltcG9y
dGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgICAgcGx1Z2lucyA9IGxpc3QocGx1Z2lu
cykKICAgICAgICAgZmluYWxpemVycyA9IFtdCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
V2hlbiBydW5uaW5nIHB5dGVzdCBpbmxpbmUgYW55IHBsdWdpbnMgYWN0aXZlIGluIHRoZSBtYWlu
IHRlc3QKLSAgICAgICAgICAgICMgcHJvY2VzcyBhcmUgYWxyZWFkeSBpbXBvcnRlZC4gIFNvIHRo
aXMgZGlzYWJsZXMgdGhlIHdhcm5pbmcgd2hpY2gKLSAgICAgICAgICAgICMgd2lsbCB0cmlnZ2Vy
IHRvIHNheSB0aGV5IGNhbiBubyBsb25nZXIgYmUgcmV3cml0dGVuLCB3aGljaCBpcwotICAgICAg
ICAgICAgIyBmaW5lIGFzIHRoZXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmV3cml0dGVuLgotICAgICAg
ICAgICAgb3JpZ193YXJuID0gQXNzZXJ0aW9uUmV3cml0aW5nSG9vay5fd2Fybl9hbHJlYWR5X2lt
cG9ydGVkCi0KLSAgICAgICAgICAgIGRlZiByZXZlcnRfd2Fybl9hbHJlYWR5X2ltcG9ydGVkKCk6
Ci0gICAgICAgICAgICAgICAgQXNzZXJ0aW9uUmV3cml0aW5nSG9vay5fd2Fybl9hbHJlYWR5X2lt
cG9ydGVkID0gb3JpZ193YXJuCi0KLSAgICAgICAgICAgIGZpbmFsaXplcnMuYXBwZW5kKHJldmVy
dF93YXJuX2FscmVhZHlfaW1wb3J0ZWQpCi0gICAgICAgICAgICBBc3NlcnRpb25SZXdyaXRpbmdI
b29rLl93YXJuX2FscmVhZHlfaW1wb3J0ZWQgPSBsYW1iZGEgKmE6IE5vbmUKLQogICAgICAgICAg
ICAgIyBBbnkgc3lzLm1vZHVsZSBvciBzeXMucGF0aCBjaGFuZ2VzIGRvbmUgd2hpbGUgcnVubmlu
ZyBweXRlc3QKICAgICAgICAgICAgICMgaW5saW5lIHNob3VsZCBiZSByZXZlcnRlZCBhZnRlciB0
aGUgdGVzdCBydW4gY29tcGxldGVzIHRvIGF2b2lkCiAgICAgICAgICAgICAjIGNsYXNoaW5nIHdp
dGggbGF0ZXIgaW5saW5lIHRlc3RzIHJ1biB3aXRoaW4gdGhlIHNhbWUgcHl0ZXN0IHRlc3QsCkBA
IC03NzcsMjYgKzEwMTEsMjQgQEAgY2xhc3MgVGVzdGRpcihvYmplY3QpOgogCiAgICAgICAgICAg
ICByZWMgPSBbXQogCi0gICAgICAgICAgICBjbGFzcyBDb2xsZWN0KG9iamVjdCk6Ci0KLSAgICAg
ICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZSh4LCBjb25maWcpOgorICAgICAgICAgICAg
Y2xhc3MgQ29sbGVjdDoKKyAgICAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZSh4LCBj
b25maWc6IENvbmZpZykgLT4gTm9uZToKICAgICAgICAgICAgICAgICAgICAgcmVjLmFwcGVuZChz
ZWxmLm1ha2VfaG9va19yZWNvcmRlcihjb25maWcucGx1Z2lubWFuYWdlcikpCiAKLSAgICAgICAg
ICAgIHBsdWdpbnMgPSBrd2FyZ3MuZ2V0KCJwbHVnaW5zIikgb3IgW10KICAgICAgICAgICAgIHBs
dWdpbnMuYXBwZW5kKENvbGxlY3QoKSkKICAgICAgICAgICAgIHJldCA9IHB5dGVzdC5tYWluKGxp
c3QoYXJncyksIHBsdWdpbnM9cGx1Z2lucykKICAgICAgICAgICAgIGlmIGxlbihyZWMpID09IDE6
CiAgICAgICAgICAgICAgICAgcmVwcmVjID0gcmVjLnBvcCgpCiAgICAgICAgICAgICBlbHNlOgog
Ci0gICAgICAgICAgICAgICAgY2xhc3MgcmVwcmVjKG9iamVjdCk6CisgICAgICAgICAgICAgICAg
Y2xhc3MgcmVwcmVjOiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgICAgICAgICAgICAgcGFzcwog
CiAgICAgICAgICAgICByZXByZWMucmV0ID0gcmV0CiAKLSAgICAgICAgICAgICMgdHlwaWNhbGx5
IHdlIHJlcmFpc2Uga2V5Ym9hcmQgaW50ZXJydXB0cyBmcm9tIHRoZSBjaGlsZCBydW4KLSAgICAg
ICAgICAgICMgYmVjYXVzZSBpdCdzIG91ciB1c2VyIHJlcXVlc3RpbmcgaW50ZXJydXB0aW9uIG9m
IHRoZSB0ZXN0aW5nCi0gICAgICAgICAgICBpZiByZXQgPT0gMiBhbmQgbm90IGt3YXJncy5nZXQo
Im5vX3JlcmFpc2VfY3RybGMiKToKKyAgICAgICAgICAgICMgVHlwaWNhbGx5IHdlIHJlcmFpc2Ug
a2V5Ym9hcmQgaW50ZXJydXB0cyBmcm9tIHRoZSBjaGlsZCBydW4KKyAgICAgICAgICAgICMgYmVj
YXVzZSBpdCdzIG91ciB1c2VyIHJlcXVlc3RpbmcgaW50ZXJydXB0aW9uIG9mIHRoZSB0ZXN0aW5n
LgorICAgICAgICAgICAgaWYgcmV0ID09IEV4aXRDb2RlLklOVEVSUlVQVEVEIGFuZCBub3Qgbm9f
cmVyYWlzZV9jdHJsYzoKICAgICAgICAgICAgICAgICBjYWxscyA9IHJlcHJlYy5nZXRjYWxscygi
cHl0ZXN0X2tleWJvYXJkX2ludGVycnVwdCIpCiAgICAgICAgICAgICAgICAgaWYgY2FsbHMgYW5k
IGNhbGxzWy0xXS5leGNpbmZvLnR5cGUgPT0gS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkKQEAgLTgwNSwyOSArMTAzNywzNCBA
QCBjbGFzcyBUZXN0ZGlyKG9iamVjdCk6CiAgICAgICAgICAgICBmb3IgZmluYWxpemVyIGluIGZp
bmFsaXplcnM6CiAgICAgICAgICAgICAgICAgZmluYWxpemVyKCkKIAotICAgIGRlZiBydW5weXRl
c3RfaW5wcm9jZXNzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHJ1bnB5dGVzdF9p
bnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3dhcmdzKSAtPiBSdW5SZXN1bHQ6CiAgICAgICAgICIi
IlJldHVybiByZXN1bHQgb2YgcnVubmluZyBweXRlc3QgaW4tcHJvY2VzcywgcHJvdmlkaW5nIGEg
c2ltaWxhcgotICAgICAgICBpbnRlcmZhY2UgdG8gd2hhdCBzZWxmLnJ1bnB5dGVzdCgpIHByb3Zp
ZGVzLgorICAgICAgICBpbnRlcmZhY2UgdG8gd2hhdCBzZWxmLnJ1bnB5dGVzdCgpIHByb3ZpZGVz
LiIiIgorICAgICAgICBzeXNwYXRoaW5zZXJ0ID0ga3dhcmdzLnBvcCgic3lzcGF0aGluc2VydCIs
IEZhbHNlKQogCi0gICAgICAgICIiIgotICAgICAgICBpZiBrd2FyZ3MuZ2V0KCJzeXNwYXRoaW5z
ZXJ0Iik6CisgICAgICAgIGlmIHN5c3BhdGhpbnNlcnQ6CiAgICAgICAgICAgICBzZWxmLnN5c3Bh
dGhpbnNlcnQoKQotICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQotICAgICAgICBjYXB0dXJlID0g
TXVsdGlDYXB0dXJlKENhcHR1cmU9U3lzQ2FwdHVyZSkKKyAgICAgICAgbm93ID0gdGltaW5nLnRp
bWUoKQorICAgICAgICBjYXB0dXJlID0gX2dldF9tdWx0aWNhcHR1cmUoInN5cyIpCiAgICAgICAg
IGNhcHR1cmUuc3RhcnRfY2FwdHVyaW5nKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgICAgIHJlcHJlYyA9IHNlbGYuaW5saW5lX3J1bigqYXJncywgKiprd2Fy
Z3MpCiAgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXhpdCBhcyBlOgorICAgICAgICAgICAgICAg
IHJldCA9IGUuYXJnc1swXQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0ID0gRXhpdENvZGUoZS5hcmdzWzBdKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1
ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgICAgICBjbGFz
cyByZXByZWMob2JqZWN0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gZS5hcmdzWzBdCisg
ICAgICAgICAgICAgICAgY2xhc3MgcmVwcmVjOiAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAg
ICAgICAgICAgcmV0ID0gcmV0CiAKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAg
ICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAKLSAgICAgICAgICAgICAgICBjbGFz
cyByZXByZWMob2JqZWN0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gMworICAgICAgICAg
ICAgICAgIGNsYXNzIHJlcHJlYzogICMgdHlwZTogaWdub3JlCisgICAgICAgICAgICAgICAgICAg
IHJldCA9IEV4aXRDb2RlKDMpCiAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG91dCwg
ZXJyID0gY2FwdHVyZS5yZWFkb3V0ZXJyKCkKQEAgLTgzNSwzMCArMTA3MiwzMyBAQCBjbGFzcyBU
ZXN0ZGlyKG9iamVjdCk6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKG91dCkKICAgICAg
ICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQogCi0gICAgICAgIHJlcyA9IFJ1blJlc3VsdChy
ZXByZWMucmV0LCBvdXQuc3BsaXQoIlxuIiksIGVyci5zcGxpdCgiXG4iKSwgdGltZS50aW1lKCkg
LSBub3cpCi0gICAgICAgIHJlcy5yZXByZWMgPSByZXByZWMKKyAgICAgICAgYXNzZXJ0IHJlcHJl
Yy5yZXQgaXMgbm90IE5vbmUKKyAgICAgICAgcmVzID0gUnVuUmVzdWx0KAorICAgICAgICAgICAg
cmVwcmVjLnJldCwgb3V0LnNwbGl0bGluZXMoKSwgZXJyLnNwbGl0bGluZXMoKSwgdGltaW5nLnRp
bWUoKSAtIG5vdworICAgICAgICApCisgICAgICAgIHJlcy5yZXByZWMgPSByZXByZWMgICMgdHlw
ZTogaWdub3JlCiAgICAgICAgIHJldHVybiByZXMKIAotICAgIGRlZiBydW5weXRlc3Qoc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgcnVucHl0ZXN0KHNlbGYsICphcmdzLCAqKmt3YXJn
cykgLT4gUnVuUmVzdWx0OgogICAgICAgICAiIiJSdW4gcHl0ZXN0IGlubGluZSBvciBpbiBhIHN1
YnByb2Nlc3MsIGRlcGVuZGluZyBvbiB0aGUgY29tbWFuZCBsaW5lCi0gICAgICAgIG9wdGlvbiAi
LS1ydW5weXRlc3QiIGFuZCByZXR1cm4gYSA6cHk6Y2xhc3M6YFJ1blJlc3VsdGAuCi0KLSAgICAg
ICAgIiIiCisgICAgICAgIG9wdGlvbiAiLS1ydW5weXRlc3QiIGFuZCByZXR1cm4gYSA6cHk6Y2xh
c3M6YFJ1blJlc3VsdGAuIiIiCiAgICAgICAgIGFyZ3MgPSBzZWxmLl9lbnN1cmVfYmFzZXRlbXAo
YXJncykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bnB5dGVzdF9tZXRob2QoKmFyZ3MsICoqa3dh
cmdzKQorICAgICAgICBpZiBzZWxmLl9tZXRob2QgPT0gImlucHJvY2VzcyI6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5ydW5weXRlc3RfaW5wcm9jZXNzKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgZWxpZiBzZWxmLl9tZXRob2QgPT0gInN1YnByb2Nlc3MiOgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYucnVucHl0ZXN0X3N1YnByb2Nlc3MoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoIlVucmVjb2duaXplZCBydW5weXRlc3Qgb3B0aW9uOiB7fSIuZm9ybWF0
KHNlbGYuX21ldGhvZCkpCiAKICAgICBkZWYgX2Vuc3VyZV9iYXNldGVtcChzZWxmLCBhcmdzKToK
LSAgICAgICAgYXJncyA9IFtzdHIoeCkgZm9yIHggaW4gYXJnc10KKyAgICAgICAgYXJncyA9IGxp
c3QoYXJncykKICAgICAgICAgZm9yIHggaW4gYXJnczoKICAgICAgICAgICAgIGlmIHN0cih4KS5z
dGFydHN3aXRoKCItLWJhc2V0ZW1wIik6Ci0gICAgICAgICAgICAgICAgIyBwcmludCgiYmFzZWR0
ZW1wIGV4aXN0czogJXMiICUoYXJncywpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1iYXNldGVtcD0lcyIgJSBzZWxmLnRt
cGRpci5kaXJwYXRoKCJiYXNldGVtcCIpKQotICAgICAgICAgICAgIyBwcmludCgiYWRkZWQgYmFz
ZXRlbXA6ICVzIiAlKGFyZ3MsKSkKICAgICAgICAgcmV0dXJuIGFyZ3MKIAotICAgIGRlZiBwYXJz
ZWNvbmZpZyhzZWxmLCAqYXJncyk6CisgICAgZGVmIHBhcnNlY29uZmlnKHNlbGYsICphcmdzKSAt
PiBDb25maWc6CiAgICAgICAgICIiIlJldHVybiBhIG5ldyBweXRlc3QgQ29uZmlnIGluc3RhbmNl
IGZyb20gZ2l2ZW4gY29tbWFuZGxpbmUgYXJncy4KIAogICAgICAgICBUaGlzIGludm9rZXMgdGhl
IHB5dGVzdCBib290c3RyYXBwaW5nIGNvZGUgaW4gX3B5dGVzdC5jb25maWcgdG8gY3JlYXRlCkBA
IC04NjgsMTU1ICsxMTA4LDIwOCBAQCBjbGFzcyBUZXN0ZGlyKG9iamVjdCk6CiAKICAgICAgICAg
SWYgOnB5OmF0dHI6YHBsdWdpbnNgIGhhcyBiZWVuIHBvcHVsYXRlZCB0aGV5IHNob3VsZCBiZSBw
bHVnaW4gbW9kdWxlcwogICAgICAgICB0byBiZSByZWdpc3RlcmVkIHdpdGggdGhlIFBsdWdpbk1h
bmFnZXIuCi0KICAgICAgICAgIiIiCiAgICAgICAgIGFyZ3MgPSBzZWxmLl9lbnN1cmVfYmFzZXRl
bXAoYXJncykKIAogICAgICAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcKIAotICAgICAgICBjb25m
aWcgPSBfcHl0ZXN0LmNvbmZpZy5fcHJlcGFyZWNvbmZpZyhhcmdzLCBzZWxmLnBsdWdpbnMpCisg
ICAgICAgIGNvbmZpZyA9IF9weXRlc3QuY29uZmlnLl9wcmVwYXJlY29uZmlnKGFyZ3MsIHNlbGYu
cGx1Z2lucykgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQogICAgICAgICAjIHdlIGRvbid0IGtu
b3cgd2hhdCB0aGUgdGVzdCB3aWxsIGRvIHdpdGggdGhpcyBoYWxmLXNldHVwIGNvbmZpZwogICAg
ICAgICAjIG9iamVjdCBhbmQgdGh1cyB3ZSBtYWtlIHN1cmUgaXQgZ2V0cyB1bmNvbmZpZ3VyZWQg
cHJvcGVybHkgaW4gYW55CiAgICAgICAgICMgY2FzZSAob3RoZXJ3aXNlIGNhcHR1cmluZyBjb3Vs
ZCBzdGlsbCBiZSBhY3RpdmUsIGZvciBleGFtcGxlKQogICAgICAgICBzZWxmLnJlcXVlc3QuYWRk
ZmluYWxpemVyKGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKQogICAgICAgICByZXR1cm4gY29u
ZmlnCiAKLSAgICBkZWYgcGFyc2Vjb25maWd1cmUoc2VsZiwgKmFyZ3MpOgorICAgIGRlZiBwYXJz
ZWNvbmZpZ3VyZShzZWxmLCAqYXJncykgLT4gQ29uZmlnOgogICAgICAgICAiIiJSZXR1cm4gYSBu
ZXcgcHl0ZXN0IGNvbmZpZ3VyZWQgQ29uZmlnIGluc3RhbmNlLgogCi0gICAgICAgIFRoaXMgcmV0
dXJucyBhIG5ldyA6cHk6Y2xhc3M6YF9weXRlc3QuY29uZmlnLkNvbmZpZ2AgaW5zdGFuY2UgbGlr
ZQorICAgICAgICBSZXR1cm5zIGEgbmV3IDpweTpjbGFzczpgX3B5dGVzdC5jb25maWcuQ29uZmln
YCBpbnN0YW5jZSBsaWtlCiAgICAgICAgIDpweTptZXRoOmBwYXJzZWNvbmZpZ2AsIGJ1dCBhbHNv
IGNhbGxzIHRoZSBweXRlc3RfY29uZmlndXJlIGhvb2suCi0KICAgICAgICAgIiIiCiAgICAgICAg
IGNvbmZpZyA9IHNlbGYucGFyc2Vjb25maWcoKmFyZ3MpCiAgICAgICAgIGNvbmZpZy5fZG9fY29u
ZmlndXJlKCkKLSAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihjb25maWcuX2Vuc3Vy
ZV91bmNvbmZpZ3VyZSkKICAgICAgICAgcmV0dXJuIGNvbmZpZwogCi0gICAgZGVmIGdldGl0ZW0o
c2VsZiwgc291cmNlLCBmdW5jbmFtZT0idGVzdF9mdW5jIik6CisgICAgZGVmIGdldGl0ZW0oc2Vs
Ziwgc291cmNlLCBmdW5jbmFtZTogc3RyID0gInRlc3RfZnVuYyIpIC0+IEl0ZW06CiAgICAgICAg
ICIiIlJldHVybiB0aGUgdGVzdCBpdGVtIGZvciBhIHRlc3QgZnVuY3Rpb24uCiAKLSAgICAgICAg
VGhpcyB3cml0ZXMgdGhlIHNvdXJjZSB0byBhIHB5dGhvbiBmaWxlIGFuZCBydW5zIHB5dGVzdCdz
IGNvbGxlY3Rpb24gb24KKyAgICAgICAgV3JpdGVzIHRoZSBzb3VyY2UgdG8gYSBweXRob24gZmls
ZSBhbmQgcnVucyBweXRlc3QncyBjb2xsZWN0aW9uIG9uCiAgICAgICAgIHRoZSByZXN1bHRpbmcg
bW9kdWxlLCByZXR1cm5pbmcgdGhlIHRlc3QgaXRlbSBmb3IgdGhlIHJlcXVlc3RlZAogICAgICAg
ICBmdW5jdGlvbiBuYW1lLgogCi0gICAgICAgIDpwYXJhbSBzb3VyY2U6IHRoZSBtb2R1bGUgc291
cmNlCi0KLSAgICAgICAgOnBhcmFtIGZ1bmNuYW1lOiB0aGUgbmFtZSBvZiB0aGUgdGVzdCBmdW5j
dGlvbiBmb3Igd2hpY2ggdG8gcmV0dXJuIGEKLSAgICAgICAgICAgIHRlc3QgaXRlbQotCisgICAg
ICAgIDpwYXJhbSBzb3VyY2U6CisgICAgICAgICAgICBUaGUgbW9kdWxlIHNvdXJjZS4KKyAgICAg
ICAgOnBhcmFtIGZ1bmNuYW1lOgorICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRlc3QgZnVu
Y3Rpb24gZm9yIHdoaWNoIHRvIHJldHVybiBhIHRlc3QgaXRlbS4KICAgICAgICAgIiIiCiAgICAg
ICAgIGl0ZW1zID0gc2VsZi5nZXRpdGVtcyhzb3VyY2UpCiAgICAgICAgIGZvciBpdGVtIGluIGl0
ZW1zOgogICAgICAgICAgICAgaWYgaXRlbS5uYW1lID09IGZ1bmNuYW1lOgogICAgICAgICAgICAg
ICAgIHJldHVybiBpdGVtCi0gICAgICAgIGFzc2VydCAwLCAoCi0gICAgICAgICAgICAiJXIgaXRl
bSBub3QgZm91bmQgaW4gbW9kdWxlOlxuJXNcbml0ZW1zOiAlcyIgJSAoZnVuY25hbWUsIHNvdXJj
ZSwgaXRlbXMpCisgICAgICAgIGFzc2VydCAwLCAieyFyfSBpdGVtIG5vdCBmb3VuZCBpbiBtb2R1
bGU6XG57fVxuaXRlbXM6IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICBmdW5jbmFtZSwgc291cmNl
LCBpdGVtcwogICAgICAgICApCiAKLSAgICBkZWYgZ2V0aXRlbXMoc2VsZiwgc291cmNlKToKKyAg
ICBkZWYgZ2V0aXRlbXMoc2VsZiwgc291cmNlKSAtPiBMaXN0W0l0ZW1dOgogICAgICAgICAiIiJS
ZXR1cm4gYWxsIHRlc3QgaXRlbXMgY29sbGVjdGVkIGZyb20gdGhlIG1vZHVsZS4KIAotICAgICAg
ICBUaGlzIHdyaXRlcyB0aGUgc291cmNlIHRvIGEgcHl0aG9uIGZpbGUgYW5kIHJ1bnMgcHl0ZXN0
J3MgY29sbGVjdGlvbiBvbgorICAgICAgICBXcml0ZXMgdGhlIHNvdXJjZSB0byBhIFB5dGhvbiBm
aWxlIGFuZCBydW5zIHB5dGVzdCdzIGNvbGxlY3Rpb24gb24KICAgICAgICAgdGhlIHJlc3VsdGlu
ZyBtb2R1bGUsIHJldHVybmluZyBhbGwgdGVzdCBpdGVtcyBjb250YWluZWQgd2l0aGluLgotCiAg
ICAgICAgICIiIgogICAgICAgICBtb2Rjb2wgPSBzZWxmLmdldG1vZHVsZWNvbChzb3VyY2UpCiAg
ICAgICAgIHJldHVybiBzZWxmLmdlbml0ZW1zKFttb2Rjb2xdKQogCi0gICAgZGVmIGdldG1vZHVs
ZWNvbChzZWxmLCBzb3VyY2UsIGNvbmZpZ2FyZ3M9KCksIHdpdGhpbml0PUZhbHNlKToKKyAgICBk
ZWYgZ2V0bW9kdWxlY29sKHNlbGYsIHNvdXJjZSwgY29uZmlnYXJncz0oKSwgd2l0aGluaXQ6IGJv
b2wgPSBGYWxzZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbW9kdWxlIGNvbGxlY3Rpb24gbm9k
ZSBmb3IgYGBzb3VyY2VgYC4KIAotICAgICAgICBUaGlzIHdyaXRlcyBgYHNvdXJjZWBgIHRvIGEg
ZmlsZSB1c2luZyA6cHk6bWV0aDpgbWFrZXB5ZmlsZWAgYW5kIHRoZW4KKyAgICAgICAgV3JpdGVz
IGBgc291cmNlYGAgdG8gYSBmaWxlIHVzaW5nIDpweTptZXRoOmBtYWtlcHlmaWxlYCBhbmQgdGhl
bgogICAgICAgICBydW5zIHRoZSBweXRlc3QgY29sbGVjdGlvbiBvbiBpdCwgcmV0dXJuaW5nIHRo
ZSBjb2xsZWN0aW9uIG5vZGUgZm9yIHRoZQogICAgICAgICB0ZXN0IG1vZHVsZS4KIAotICAgICAg
ICA6cGFyYW0gc291cmNlOiB0aGUgc291cmNlIGNvZGUgb2YgdGhlIG1vZHVsZSB0byBjb2xsZWN0
Ci0KLSAgICAgICAgOnBhcmFtIGNvbmZpZ2FyZ3M6IGFueSBleHRyYSBhcmd1bWVudHMgdG8gcGFz
cyB0bwotICAgICAgICAgICAgOnB5Om1ldGg6YHBhcnNlY29uZmlndXJlYAorICAgICAgICA6cGFy
YW0gc291cmNlOgorICAgICAgICAgICAgVGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBtb2R1bGUgdG8g
Y29sbGVjdC4KIAotICAgICAgICA6cGFyYW0gd2l0aGluaXQ6IHdoZXRoZXIgdG8gYWxzbyB3cml0
ZSBhbiBgYF9faW5pdF9fLnB5YGAgZmlsZSB0byB0aGUKLSAgICAgICAgICAgIHNhbWUgZGlyZWN0
b3J5IHRvIGVuc3VyZSBpdCBpcyBhIHBhY2thZ2UKKyAgICAgICAgOnBhcmFtIGNvbmZpZ2FyZ3M6
CisgICAgICAgICAgICBBbnkgZXh0cmEgYXJndW1lbnRzIHRvIHBhc3MgdG8gOnB5Om1ldGg6YHBh
cnNlY29uZmlndXJlYC4KIAorICAgICAgICA6cGFyYW0gd2l0aGluaXQ6CisgICAgICAgICAgICBX
aGV0aGVyIHRvIGFsc28gd3JpdGUgYW4gYGBfX2luaXRfXy5weWBgIGZpbGUgdG8gdGhlIHNhbWUK
KyAgICAgICAgICAgIGRpcmVjdG9yeSB0byBlbnN1cmUgaXQgaXMgYSBwYWNrYWdlLgogICAgICAg
ICAiIiIKLSAgICAgICAga3cgPSB7c2VsZi5yZXF1ZXN0LmZ1bmN0aW9uLl9fbmFtZV9fOiBTb3Vy
Y2Uoc291cmNlKS5zdHJpcCgpfQotICAgICAgICBwYXRoID0gc2VsZi5tYWtlcHlmaWxlKCoqa3cp
CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc291cmNlLCBQYXRoKToKKyAgICAgICAgICAgIHBhdGgg
PSBzZWxmLnRtcGRpci5qb2luKHN0cihzb3VyY2UpKQorICAgICAgICAgICAgYXNzZXJ0IG5vdCB3
aXRoaW5pdCwgIm5vdCBzdXBwb3J0ZWQgZm9yIHBhdGhzIgorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAga3cgPSB7c2VsZi5fbmFtZTogU291cmNlKHNvdXJjZSkuc3RyaXAoKX0KKyAgICAgICAg
ICAgIHBhdGggPSBzZWxmLm1ha2VweWZpbGUoKiprdykKICAgICAgICAgaWYgd2l0aGluaXQ6CiAg
ICAgICAgICAgICBzZWxmLm1ha2VweWZpbGUoX19pbml0X189IiMiKQogICAgICAgICBzZWxmLmNv
bmZpZyA9IGNvbmZpZyA9IHNlbGYucGFyc2Vjb25maWd1cmUocGF0aCwgKmNvbmZpZ2FyZ3MpCi0g
ICAgICAgIG5vZGUgPSBzZWxmLmdldG5vZGUoY29uZmlnLCBwYXRoKQorICAgICAgICByZXR1cm4g
c2VsZi5nZXRub2RlKGNvbmZpZywgcGF0aCkKIAotICAgICAgICByZXR1cm4gbm9kZQotCi0gICAg
ZGVmIGNvbGxlY3RfYnlfbmFtZShzZWxmLCBtb2Rjb2wsIG5hbWUpOgorICAgIGRlZiBjb2xsZWN0
X2J5X25hbWUoCisgICAgICAgIHNlbGYsIG1vZGNvbDogTW9kdWxlLCBuYW1lOiBzdHIKKyAgICAp
IC0+IE9wdGlvbmFsW1VuaW9uW0l0ZW0sIENvbGxlY3Rvcl1dOgogICAgICAgICAiIiJSZXR1cm4g
dGhlIGNvbGxlY3Rpb24gbm9kZSBmb3IgbmFtZSBmcm9tIHRoZSBtb2R1bGUgY29sbGVjdGlvbi4K
IAotICAgICAgICBUaGlzIHdpbGwgc2VhcmNoIGEgbW9kdWxlIGNvbGxlY3Rpb24gbm9kZSBmb3Ig
YSBjb2xsZWN0aW9uIG5vZGUKLSAgICAgICAgbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWUuCi0KLSAg
ICAgICAgOnBhcmFtIG1vZGNvbDogYSBtb2R1bGUgY29sbGVjdGlvbiBub2RlOyBzZWUgOnB5Om1l
dGg6YGdldG1vZHVsZWNvbGAKLQotICAgICAgICA6cGFyYW0gbmFtZTogdGhlIG5hbWUgb2YgdGhl
IG5vZGUgdG8gcmV0dXJuCisgICAgICAgIFNlYXJjaHMgYSBtb2R1bGUgY29sbGVjdGlvbiBub2Rl
IGZvciBhIGNvbGxlY3Rpb24gbm9kZSBtYXRjaGluZyB0aGUKKyAgICAgICAgZ2l2ZW4gbmFtZS4K
IAorICAgICAgICA6cGFyYW0gbW9kY29sOiBBIG1vZHVsZSBjb2xsZWN0aW9uIG5vZGU7IHNlZSA6
cHk6bWV0aDpgZ2V0bW9kdWxlY29sYC4KKyAgICAgICAgOnBhcmFtIG5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBub2RlIHRvIHJldHVybi4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1vZGNvbCBub3Qg
aW4gc2VsZi5fbW9kX2NvbGxlY3Rpb25zOgogICAgICAgICAgICAgc2VsZi5fbW9kX2NvbGxlY3Rp
b25zW21vZGNvbF0gPSBsaXN0KG1vZGNvbC5jb2xsZWN0KCkpCiAgICAgICAgIGZvciBjb2xpdGVt
IGluIHNlbGYuX21vZF9jb2xsZWN0aW9uc1ttb2Rjb2xdOgogICAgICAgICAgICAgaWYgY29saXRl
bS5uYW1lID09IG5hbWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGl0ZW0KKyAgICAgICAg
cmV0dXJuIE5vbmUKIAotICAgIGRlZiBwb3BlbihzZWxmLCBjbWRhcmdzLCBzdGRvdXQsIHN0ZGVy
ciwgKiprdyk6CisgICAgZGVmIHBvcGVuKAorICAgICAgICBzZWxmLAorICAgICAgICBjbWRhcmdz
LAorICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICBzdGRlcnI9c3VicHJv
Y2Vzcy5QSVBFLAorICAgICAgICBzdGRpbj1DTE9TRV9TVERJTiwKKyAgICAgICAgKiprdworICAg
ICk6CiAgICAgICAgICIiIkludm9rZSBzdWJwcm9jZXNzLlBvcGVuLgogCi0gICAgICAgIFRoaXMg
Y2FsbHMgc3VicHJvY2Vzcy5Qb3BlbiBtYWtpbmcgc3VyZSB0aGUgY3VycmVudCB3b3JraW5nIGRp
cmVjdG9yeQotICAgICAgICBpcyBpbiB0aGUgUFlUSE9OUEFUSC4KKyAgICAgICAgQ2FsbHMgc3Vi
cHJvY2Vzcy5Qb3BlbiBtYWtpbmcgc3VyZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBp
cworICAgICAgICBpbiB0aGUgUFlUSE9OUEFUSC4KIAogICAgICAgICBZb3UgcHJvYmFibHkgd2Fu
dCB0byB1c2UgOnB5Om1ldGg6YHJ1bmAgaW5zdGVhZC4KLQogICAgICAgICAiIiIKICAgICAgICAg
ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WyJQWVRIT05QQVRIIl0gPSBvcy5w
YXRoc2VwLmpvaW4oCi0gICAgICAgICAgICBmaWx0ZXIoTm9uZSwgW3N0cihvcy5nZXRjd2QoKSks
IGVudi5nZXQoIlBZVEhPTlBBVEgiLCAiIildKQorICAgICAgICAgICAgZmlsdGVyKE5vbmUsIFtv
cy5nZXRjd2QoKSwgZW52LmdldCgiUFlUSE9OUEFUSCIsICIiKV0pCiAgICAgICAgICkKICAgICAg
ICAga3dbImVudiJdID0gZW52CiAKLSAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKAot
ICAgICAgICAgICAgY21kYXJncywgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3Rkb3V0
LCBzdGRlcnI9c3RkZXJyLCAqKmt3Ci0gICAgICAgICkKLSAgICAgICAgcG9wZW4uc3RkaW4uY2xv
c2UoKQorICAgICAgICBpZiBzdGRpbiBpcyBUZXN0ZGlyLkNMT1NFX1NURElOOgorICAgICAgICAg
ICAga3dbInN0ZGluIl0gPSBzdWJwcm9jZXNzLlBJUEUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNl
KHN0ZGluLCBieXRlcyk6CisgICAgICAgICAgICBrd1sic3RkaW4iXSA9IHN1YnByb2Nlc3MuUElQ
RQorICAgICAgICBlbHNlOgorICAgICAgICAgICAga3dbInN0ZGluIl0gPSBzdGRpbgorCisgICAg
ICAgIHBvcGVuID0gc3VicHJvY2Vzcy5Qb3BlbihjbWRhcmdzLCBzdGRvdXQ9c3Rkb3V0LCBzdGRl
cnI9c3RkZXJyLCAqKmt3KQorICAgICAgICBpZiBzdGRpbiBpcyBUZXN0ZGlyLkNMT1NFX1NURElO
OgorICAgICAgICAgICAgYXNzZXJ0IHBvcGVuLnN0ZGluIGlzIG5vdCBOb25lCisgICAgICAgICAg
ICBwb3Blbi5zdGRpbi5jbG9zZSgpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRpbiwgYnl0
ZXMpOgorICAgICAgICAgICAgYXNzZXJ0IHBvcGVuLnN0ZGluIGlzIG5vdCBOb25lCisgICAgICAg
ICAgICBwb3Blbi5zdGRpbi53cml0ZShzdGRpbikKIAogICAgICAgICByZXR1cm4gcG9wZW4KIAot
ICAgIGRlZiBydW4oc2VsZiwgKmNtZGFyZ3MpOgorICAgIGRlZiBydW4oCisgICAgICAgIHNlbGYs
ICpjbWRhcmdzLCB0aW1lb3V0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lLCBzdGRpbj1DTE9TRV9T
VERJTgorICAgICkgLT4gUnVuUmVzdWx0OgogICAgICAgICAiIiJSdW4gYSBjb21tYW5kIHdpdGgg
YXJndW1lbnRzLgogCiAgICAgICAgIFJ1biBhIHByb2Nlc3MgdXNpbmcgc3VicHJvY2Vzcy5Qb3Bl
biBzYXZpbmcgdGhlIHN0ZG91dCBhbmQgc3RkZXJyLgogCi0gICAgICAgIFJldHVybnMgYSA6cHk6
Y2xhc3M6YFJ1blJlc3VsdGAuCi0KKyAgICAgICAgOnBhcmFtIGFyZ3M6CisgICAgICAgICAgICBU
aGUgc2VxdWVuY2Ugb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gYHN1YnByb2Nlc3MuUG9wZW4oKWAu
CisgICAgICAgIDpwYXJhbSB0aW1lb3V0OgorICAgICAgICAgICAgVGhlIHBlcmlvZCBpbiBzZWNv
bmRzIGFmdGVyIHdoaWNoIHRvIHRpbWVvdXQgYW5kIHJhaXNlCisgICAgICAgICAgICA6cHk6Y2xh
c3M6YFRlc3RkaXIuVGltZW91dEV4cGlyZWRgLgorICAgICAgICA6cGFyYW0gc3RkaW46CisgICAg
ICAgICAgICBPcHRpb25hbCBzdGFuZGFyZCBpbnB1dC4gIEJ5dGVzIGFyZSBiZWluZyBzZW5kLCBj
bG9zaW5nCisgICAgICAgICAgICB0aGUgcGlwZSwgb3RoZXJ3aXNlIGl0IGlzIHBhc3NlZCB0aHJv
dWdoIHRvIGBgcG9wZW5gYC4KKyAgICAgICAgICAgIERlZmF1bHRzIHRvIGBgQ0xPU0VfU1RESU5g
YCwgd2hpY2ggdHJhbnNsYXRlcyB0byB1c2luZyBhIHBpcGUKKyAgICAgICAgICAgIChgYHN1YnBy
b2Nlc3MuUElQRWBgKSB0aGF0IGdldHMgY2xvc2VkLgorCisgICAgICAgIDpydHlwZTogUnVuUmVz
dWx0CiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcnVuKCpjbWRhcmdzKQorICAg
ICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKIAotICAgIGRlZiBfcnVuKHNlbGYsICpjbWRh
cmdzKToKLSAgICAgICAgY21kYXJncyA9IFtzdHIoeCkgZm9yIHggaW4gY21kYXJnc10KKyAgICAg
ICAgY21kYXJncyA9IHR1cGxlKAorICAgICAgICAgICAgc3RyKGFyZykgaWYgaXNpbnN0YW5jZShh
cmcsIHB5LnBhdGgubG9jYWwpIGVsc2UgYXJnIGZvciBhcmcgaW4gY21kYXJncworICAgICAgICAp
CiAgICAgICAgIHAxID0gc2VsZi50bXBkaXIuam9pbigic3Rkb3V0IikKICAgICAgICAgcDIgPSBz
ZWxmLnRtcGRpci5qb2luKCJzdGRlcnIiKQotICAgICAgICBwcmludCgicnVubmluZzoiLCAiICIu
am9pbihjbWRhcmdzKSkKLSAgICAgICAgcHJpbnQoIiAgICAgaW46Iiwgc3RyKHB5LnBhdGgubG9j
YWwoKSkpCi0gICAgICAgIGYxID0gY29kZWNzLm9wZW4oc3RyKHAxKSwgInciLCBlbmNvZGluZz0i
dXRmOCIpCi0gICAgICAgIGYyID0gY29kZWNzLm9wZW4oc3RyKHAyKSwgInciLCBlbmNvZGluZz0i
dXRmOCIpCisgICAgICAgIHByaW50KCJydW5uaW5nOiIsICpjbWRhcmdzKQorICAgICAgICBwcmlu
dCgiICAgICBpbjoiLCBweS5wYXRoLmxvY2FsKCkpCisgICAgICAgIGYxID0gb3BlbihzdHIocDEp
LCAidyIsIGVuY29kaW5nPSJ1dGY4IikKKyAgICAgICAgZjIgPSBvcGVuKHN0cihwMiksICJ3Iiwg
ZW5jb2Rpbmc9InV0ZjgiKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBub3cgPSB0aW1lLnRp
bWUoKQorICAgICAgICAgICAgbm93ID0gdGltaW5nLnRpbWUoKQogICAgICAgICAgICAgcG9wZW4g
PSBzZWxmLnBvcGVuKAotICAgICAgICAgICAgICAgIGNtZGFyZ3MsIHN0ZG91dD1mMSwgc3RkZXJy
PWYyLCBjbG9zZV9mZHM9KHN5cy5wbGF0Zm9ybSAhPSAid2luMzIiKQorICAgICAgICAgICAgICAg
IGNtZGFyZ3MsCisgICAgICAgICAgICAgICAgc3RkaW49c3RkaW4sCisgICAgICAgICAgICAgICAg
c3Rkb3V0PWYxLAorICAgICAgICAgICAgICAgIHN0ZGVycj1mMiwKKyAgICAgICAgICAgICAgICBj
bG9zZV9mZHM9KHN5cy5wbGF0Zm9ybSAhPSAid2luMzIiKSwKICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgIHJldCA9IHBvcGVuLndhaXQoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzdGRp
biwgYnl0ZXMpOgorICAgICAgICAgICAgICAgIHBvcGVuLnN0ZGluLmNsb3NlKCkKKworICAgICAg
ICAgICAgZGVmIGhhbmRsZV90aW1lb3V0KCkgLT4gTm9uZToKKyAgICAgICAgICAgICAgICBfX3Ry
YWNlYmFja2hpZGVfXyA9IFRydWUKKworICAgICAgICAgICAgICAgIHRpbWVvdXRfbWVzc2FnZSA9
ICgKKyAgICAgICAgICAgICAgICAgICAgIntzZWNvbmRzfSBzZWNvbmQgdGltZW91dCBleHBpcmVk
IHJ1bm5pbmc6IgorICAgICAgICAgICAgICAgICAgICAiIHtjb21tYW5kfSIuZm9ybWF0KHNlY29u
ZHM9dGltZW91dCwgY29tbWFuZD1jbWRhcmdzKQorICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgICAgIHBvcGVuLmtpbGwoKQorICAgICAgICAgICAgICAgIHBvcGVuLndhaXQoKQorICAg
ICAgICAgICAgICAgIHJhaXNlIHNlbGYuVGltZW91dEV4cGlyZWQodGltZW91dF9tZXNzYWdlKQor
CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0ID0g
cG9wZW4ud2FpdCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0ID0gcG9wZW4ud2FpdCh0aW1lb3V0KQorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVfdGltZW91dCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmMS5jbG9z
ZSgpCiAgICAgICAgICAgICBmMi5jbG9zZSgpCi0gICAgICAgIGYxID0gY29kZWNzLm9wZW4oc3Ry
KHAxKSwgInIiLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIGYyID0gY29kZWNzLm9wZW4oc3Ry
KHAyKSwgInIiLCBlbmNvZGluZz0idXRmOCIpCisgICAgICAgIGYxID0gb3BlbihzdHIocDEpLCBl
bmNvZGluZz0idXRmOCIpCisgICAgICAgIGYyID0gb3BlbihzdHIocDIpLCBlbmNvZGluZz0idXRm
OCIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG91dCA9IGYxLnJlYWQoKS5zcGxpdGxpbmVz
KCkKICAgICAgICAgICAgIGVyciA9IGYyLnJlYWQoKS5zcGxpdGxpbmVzKCkKQEAgLTEwMjUsMTE1
ICsxMzE4LDExNCBAQCBjbGFzcyBUZXN0ZGlyKG9iamVjdCk6CiAgICAgICAgICAgICBmMi5jbG9z
ZSgpCiAgICAgICAgIHNlbGYuX2R1bXBfbGluZXMob3V0LCBzeXMuc3Rkb3V0KQogICAgICAgICBz
ZWxmLl9kdW1wX2xpbmVzKGVyciwgc3lzLnN0ZGVycikKLSAgICAgICAgcmV0dXJuIFJ1blJlc3Vs
dChyZXQsIG91dCwgZXJyLCB0aW1lLnRpbWUoKSAtIG5vdykKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgcmV0ID0gRXhpdENvZGUocmV0KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIFJ1blJlc3VsdChyZXQsIG91dCwgZXJyLCB0
aW1pbmcudGltZSgpIC0gbm93KQogCiAgICAgZGVmIF9kdW1wX2xpbmVzKHNlbGYsIGxpbmVzLCBm
cCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgogICAgICAg
ICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZnApCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5j
b2RlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiY291bGRuJ3QgcHJpbnQgdG8gJXMgYmVjYXVz
ZSBvZiBlbmNvZGluZyIgJSAoZnAsKSkKKyAgICAgICAgICAgIHByaW50KCJjb3VsZG4ndCBwcmlu
dCB0byB7fSBiZWNhdXNlIG9mIGVuY29kaW5nIi5mb3JtYXQoZnApKQogCi0gICAgZGVmIF9nZXRw
eXRlc3RhcmdzKHNlbGYpOgotICAgICAgICAjIHdlIGNhbm5vdCB1c2UgYChzeXMuZXhlY3V0YWJs
ZSwgc2NyaXB0KWAgYmVjYXVzZSBvbiBXaW5kb3dzIHRoZQotICAgICAgICAjIHNjcmlwdCBpcyBl
LmcuIGBweXRlc3QuZXhlYAotICAgICAgICByZXR1cm4gKHN5cy5leGVjdXRhYmxlLCBQWVRFU1Rf
RlVMTFBBVEgpICAjIG5vcWEKKyAgICBkZWYgX2dldHB5dGVzdGFyZ3Moc2VsZikgLT4gVHVwbGVb
c3RyLCAuLi5dOgorICAgICAgICByZXR1cm4gc3lzLmV4ZWN1dGFibGUsICItbXB5dGVzdCIKIAot
ICAgIGRlZiBydW5weXRob24oc2VsZiwgc2NyaXB0KToKKyAgICBkZWYgcnVucHl0aG9uKHNlbGYs
IHNjcmlwdCkgLT4gUnVuUmVzdWx0OgogICAgICAgICAiIiJSdW4gYSBweXRob24gc2NyaXB0IHVz
aW5nIHN5cy5leGVjdXRhYmxlIGFzIGludGVycHJldGVyLgogCi0gICAgICAgIFJldHVybnMgYSA6
cHk6Y2xhc3M6YFJ1blJlc3VsdGAuCi0KKyAgICAgICAgOnJ0eXBlOiBSdW5SZXN1bHQKICAgICAg
ICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bihzeXMuZXhlY3V0YWJsZSwgc2NyaXB0KQog
CiAgICAgZGVmIHJ1bnB5dGhvbl9jKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICAiIiJSdW4gcHl0
aG9uIC1jICJjb21tYW5kIiwgcmV0dXJuIGEgOnB5OmNsYXNzOmBSdW5SZXN1bHRgLiIiIgorICAg
ICAgICAiIiJSdW4gcHl0aG9uIC1jICJjb21tYW5kIi4KKworICAgICAgICA6cnR5cGU6IFJ1blJl
c3VsdAorICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYucnVuKHN5cy5leGVjdXRhYmxl
LCAiLWMiLCBjb21tYW5kKQogCi0gICAgZGVmIHJ1bnB5dGVzdF9zdWJwcm9jZXNzKHNlbGYsICph
cmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHJ1bnB5dGVzdF9zdWJwcm9jZXNzKHNlbGYsICphcmdz
LCB0aW1lb3V0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lKSAtPiBSdW5SZXN1bHQ6CiAgICAgICAg
ICIiIlJ1biBweXRlc3QgYXMgYSBzdWJwcm9jZXNzIHdpdGggZ2l2ZW4gYXJndW1lbnRzLgogCi0g
ICAgICAgIEFueSBwbHVnaW5zIGFkZGVkIHRvIHRoZSA6cHk6YXR0cjpgcGx1Z2luc2AgbGlzdCB3
aWxsIGFkZGVkIHVzaW5nIHRoZQotICAgICAgICBgYC1wYGAgY29tbWFuZCBsaW5lIG9wdGlvbi4g
IEFkZGl0aW9uYWxseSBgYC0tYmFzZXRlbXBgYCBpcyB1c2VkIHB1dAorICAgICAgICBBbnkgcGx1
Z2lucyBhZGRlZCB0byB0aGUgOnB5OmF0dHI6YHBsdWdpbnNgIGxpc3Qgd2lsbCBiZSBhZGRlZCB1
c2luZyB0aGUKKyAgICAgICAgYGAtcGBgIGNvbW1hbmQgbGluZSBvcHRpb24uICBBZGRpdGlvbmFs
bHkgYGAtLWJhc2V0ZW1wYGAgaXMgdXNlZCB0byBwdXQKICAgICAgICAgYW55IHRlbXBvcmFyeSBm
aWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gYSBudW1iZXJlZCBkaXJlY3RvcnkgcHJlZml4ZWQKLSAg
ICAgICAgd2l0aCAicnVucHl0ZXN0LSIgc28gdGhleSBkbyBub3QgY29uZmxpY3Qgd2l0aCB0aGUg
bm9ybWFsIG51bWJlcmVkCi0gICAgICAgIHB5dGVzdCBsb2NhdGlvbiBmb3IgdGVtcG9yYXJ5IGZp
bGVzIGFuZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgd2l0aCAicnVucHl0ZXN0LSIgdG8gbm90IGNv
bmZsaWN0IHdpdGggdGhlIG5vcm1hbCBudW1iZXJlZCBweXRlc3QKKyAgICAgICAgbG9jYXRpb24g
Zm9yIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCiAKLSAgICAgICAgUmV0dXJucyBh
IDpweTpjbGFzczpgUnVuUmVzdWx0YC4KKyAgICAgICAgOnBhcmFtIGFyZ3M6CisgICAgICAgICAg
ICBUaGUgc2VxdWVuY2Ugb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHB5dGVzdCBzdWJwcm9j
ZXNzLgorICAgICAgICA6cGFyYW0gdGltZW91dDoKKyAgICAgICAgICAgIFRoZSBwZXJpb2QgaW4g
c2Vjb25kcyBhZnRlciB3aGljaCB0byB0aW1lb3V0IGFuZCByYWlzZQorICAgICAgICAgICAgOnB5
OmNsYXNzOmBUZXN0ZGlyLlRpbWVvdXRFeHBpcmVkYC4KIAorICAgICAgICA6cnR5cGU6IFJ1blJl
c3VsdAogICAgICAgICAiIiIKLSAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwubWFrZV9udW1iZXJl
ZF9kaXIoCi0gICAgICAgICAgICBwcmVmaXg9InJ1bnB5dGVzdC0iLCBrZWVwPU5vbmUsIHJvb3Rk
aXI9c2VsZi50bXBkaXIKLSAgICAgICAgKQorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRy
dWUKKyAgICAgICAgcCA9IG1ha2VfbnVtYmVyZWRfZGlyKHJvb3Q9UGF0aChzdHIoc2VsZi50bXBk
aXIpKSwgcHJlZml4PSJydW5weXRlc3QtIikKICAgICAgICAgYXJncyA9ICgiLS1iYXNldGVtcD0l
cyIgJSBwLCkgKyBhcmdzCiAgICAgICAgIHBsdWdpbnMgPSBbeCBmb3IgeCBpbiBzZWxmLnBsdWdp
bnMgaWYgaXNpbnN0YW5jZSh4LCBzdHIpXQogICAgICAgICBpZiBwbHVnaW5zOgogICAgICAgICAg
ICAgYXJncyA9ICgiLXAiLCBwbHVnaW5zWzBdKSArIGFyZ3MKICAgICAgICAgYXJncyA9IHNlbGYu
X2dldHB5dGVzdGFyZ3MoKSArIGFyZ3MKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuKCphcmdzKQor
ICAgICAgICByZXR1cm4gc2VsZi5ydW4oKmFyZ3MsIHRpbWVvdXQ9dGltZW91dCkKIAotICAgIGRl
ZiBzcGF3bl9weXRlc3Qoc2VsZiwgc3RyaW5nLCBleHBlY3RfdGltZW91dD0xMC4wKToKKyAgICBk
ZWYgc3Bhd25fcHl0ZXN0KAorICAgICAgICBzZWxmLCBzdHJpbmc6IHN0ciwgZXhwZWN0X3RpbWVv
dXQ6IGZsb2F0ID0gMTAuMAorICAgICkgLT4gInBleHBlY3Quc3Bhd24iOgogICAgICAgICAiIiJS
dW4gcHl0ZXN0IHVzaW5nIHBleHBlY3QuCiAKICAgICAgICAgVGhpcyBtYWtlcyBzdXJlIHRvIHVz
ZSB0aGUgcmlnaHQgcHl0ZXN0IGFuZCBzZXRzIHVwIHRoZSB0ZW1wb3JhcnkKICAgICAgICAgZGly
ZWN0b3J5IGxvY2F0aW9ucy4KIAogICAgICAgICBUaGUgcGV4cGVjdCBjaGlsZCBpcyByZXR1cm5l
ZC4KLQogICAgICAgICAiIiIKICAgICAgICAgYmFzZXRlbXAgPSBzZWxmLnRtcGRpci5ta2Rpcigi
dGVtcC1wZXhwZWN0IikKICAgICAgICAgaW52b2tlID0gIiAiLmpvaW4obWFwKHN0ciwgc2VsZi5f
Z2V0cHl0ZXN0YXJncygpKSkKLSAgICAgICAgY21kID0gIiVzIC0tYmFzZXRlbXA9JXMgJXMiICUg
KGludm9rZSwgYmFzZXRlbXAsIHN0cmluZykKKyAgICAgICAgY21kID0gInt9IC0tYmFzZXRlbXA9
e30ge30iLmZvcm1hdChpbnZva2UsIGJhc2V0ZW1wLCBzdHJpbmcpCiAgICAgICAgIHJldHVybiBz
ZWxmLnNwYXduKGNtZCwgZXhwZWN0X3RpbWVvdXQ9ZXhwZWN0X3RpbWVvdXQpCiAKLSAgICBkZWYg
c3Bhd24oc2VsZiwgY21kLCBleHBlY3RfdGltZW91dD0xMC4wKToKKyAgICBkZWYgc3Bhd24oc2Vs
ZiwgY21kOiBzdHIsIGV4cGVjdF90aW1lb3V0OiBmbG9hdCA9IDEwLjApIC0+ICJwZXhwZWN0LnNw
YXduIjoKICAgICAgICAgIiIiUnVuIGEgY29tbWFuZCB1c2luZyBwZXhwZWN0LgogCiAgICAgICAg
IFRoZSBwZXhwZWN0IGNoaWxkIGlzIHJldHVybmVkLgotCiAgICAgICAgICIiIgogICAgICAgICBw
ZXhwZWN0ID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgicGV4cGVjdCIsICIzLjAiKQogICAgICAgICBp
ZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIikgYW5kICI2NCIgaW4gcGxhdGZvcm0u
bWFjaGluZSgpOgogICAgICAgICAgICAgcHl0ZXN0LnNraXAoInB5cHktNjQgYml0IG5vdCBzdXBw
b3J0ZWQiKQotICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZnJlZWJzZCIpOgot
ICAgICAgICAgICAgcHl0ZXN0LnhmYWlsKCJwZXhwZWN0IGRvZXMgbm90IHdvcmsgcmVsaWFibHkg
b24gZnJlZWJzZCIpCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHBleHBlY3QsICJzcGF3biIpOgor
ICAgICAgICAgICAgcHl0ZXN0LnNraXAoInBleHBlY3Quc3Bhd24gbm90IGF2YWlsYWJsZSIpCiAg
ICAgICAgIGxvZ2ZpbGUgPSBzZWxmLnRtcGRpci5qb2luKCJzcGF3bi5vdXQiKS5vcGVuKCJ3YiIp
CisKICAgICAgICAgY2hpbGQgPSBwZXhwZWN0LnNwYXduKGNtZCwgbG9nZmlsZT1sb2dmaWxlKQog
ICAgICAgICBzZWxmLnJlcXVlc3QuYWRkZmluYWxpemVyKGxvZ2ZpbGUuY2xvc2UpCiAgICAgICAg
IGNoaWxkLnRpbWVvdXQgPSBleHBlY3RfdGltZW91dAogICAgICAgICByZXR1cm4gY2hpbGQKIAog
Ci1kZWYgZ2V0ZGVjb2RlZChvdXQpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG91dC5kZWNv
ZGUoInV0Zi04IikKLSAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICByZXR1
cm4gIklOVEVSTkFMIG5vdC11dGY4LWRlY29kZWFibGUsIHRydW5jYXRlZCBzdHJpbmc6XG4lcyIg
JSAoCi0gICAgICAgICAgICBweS5pby5zYWZlcmVwcihvdXQpLAotICAgICAgICApCi0KLQotY2xh
c3MgTGluZUNvbXAob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
c2VsZi5zdHJpbmdpbyA9IHB5LmlvLlRleHRJTygpCi0KLSAgICBkZWYgYXNzZXJ0X2NvbnRhaW5z
X2xpbmVzKHNlbGYsIGxpbmVzMik6Ci0gICAgICAgICIiIkFzc2VydCB0aGF0IGxpbmVzMiBhcmUg
Y29udGFpbmVkIChsaW5lYXJseSkgaW4gbGluZXMxLgorY2xhc3MgTGluZUNvbXA6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuc3RyaW5naW8gPSBTdHJpbmdJ
TygpCisgICAgICAgICIiIjpjbGFzczpgcHl0aG9uOmlvLlN0cmluZ0lPKClgIGluc3RhbmNlIHVz
ZWQgZm9yIGlucHV0LiIiIgogCi0gICAgICAgIFJldHVybiBhIGxpc3Qgb2YgZXh0cmFsaW5lcyBm
b3VuZC4KKyAgICBkZWYgYXNzZXJ0X2NvbnRhaW5zX2xpbmVzKHNlbGYsIGxpbmVzMjogU2VxdWVu
Y2Vbc3RyXSkgLT4gTm9uZToKKyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgYGBsaW5lczJgYCBhcmUg
Y29udGFpbmVkIChsaW5lYXJseSkgaW4gOmF0dHI6YHN0cmluZ2lvYCdzIHZhbHVlLgogCisgICAg
ICAgIExpbmVzIGFyZSBtYXRjaGVkIHVzaW5nIDpmdW5jOmBMaW5lTWF0Y2hlci5mbm1hdGNoX2xp
bmVzYC4KICAgICAgICAgIiIiCiAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogICAg
ICAgICB2YWwgPSBzZWxmLnN0cmluZ2lvLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5zdHJpbmdp
by50cnVuY2F0ZSgwKQogICAgICAgICBzZWxmLnN0cmluZ2lvLnNlZWsoMCkKICAgICAgICAgbGlu
ZXMxID0gdmFsLnNwbGl0KCJcbiIpCi0gICAgICAgIHJldHVybiBMaW5lTWF0Y2hlcihsaW5lczEp
LmZubWF0Y2hfbGluZXMobGluZXMyKQorICAgICAgICBMaW5lTWF0Y2hlcihsaW5lczEpLmZubWF0
Y2hfbGluZXMobGluZXMyKQogCiAKLWNsYXNzIExpbmVNYXRjaGVyKG9iamVjdCk6CitjbGFzcyBM
aW5lTWF0Y2hlcjoKICAgICAiIiJGbGV4aWJsZSBtYXRjaGluZyBvZiB0ZXh0LgogCiAgICAgVGhp
cyBpcyBhIGNvbnZlbmllbmNlIGNsYXNzIHRvIHRlc3QgbGFyZ2UgdGV4dHMgbGlrZSB0aGUgb3V0
cHV0IG9mCkBAIC0xMTQxLDQ5ICsxNDMzLDMzIEBAIGNsYXNzIExpbmVNYXRjaGVyKG9iamVjdCk6
CiAKICAgICBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBsaXN0IG9mIGxpbmVzIHdpdGhvdXQgdGhl
aXIgdHJhaWxpbmcgbmV3bGluZXMsIGkuZS4KICAgICBgYHRleHQuc3BsaXRsaW5lcygpYGAuCi0K
ICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcyk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxpbmVzOiBMaXN0W3N0cl0pIC0+IE5vbmU6CiAgICAgICAgIHNlbGYubGluZXMg
PSBsaW5lcwotICAgICAgICBzZWxmLl9sb2dfb3V0cHV0ID0gW10KLQotICAgIGRlZiBzdHIoc2Vs
Zik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIG9yaWdpbmFsIHRleHQuIiIiCi0gICAg
ICAgIHJldHVybiAiXG4iLmpvaW4oc2VsZi5saW5lcykKKyAgICAgICAgc2VsZi5fbG9nX291dHB1
dCA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQogCi0gICAgZGVmIF9nZXRsaW5lcyhzZWxmLCBsaW5l
czIpOgorICAgIGRlZiBfZ2V0bGluZXMoc2VsZiwgbGluZXMyOiBVbmlvbltzdHIsIFNlcXVlbmNl
W3N0cl0sIFNvdXJjZV0pIC0+IFNlcXVlbmNlW3N0cl06CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bGluZXMyLCBzdHIpOgogICAgICAgICAgICAgbGluZXMyID0gU291cmNlKGxpbmVzMikKICAgICAg
ICAgaWYgaXNpbnN0YW5jZShsaW5lczIsIFNvdXJjZSk6CiAgICAgICAgICAgICBsaW5lczIgPSBs
aW5lczIuc3RyaXAoKS5saW5lcwogICAgICAgICByZXR1cm4gbGluZXMyCiAKLSAgICBkZWYgZm5t
YXRjaF9saW5lc19yYW5kb20oc2VsZiwgbGluZXMyKToKLSAgICAgICAgIiIiQ2hlY2sgbGluZXMg
ZXhpc3QgaW4gdGhlIG91dHB1dCB1c2luZyBpbiBhbnkgb3JkZXIuCi0KLSAgICAgICAgTGluZXMg
YXJlIGNoZWNrZWQgdXNpbmcgYGBmbm1hdGNoLmZubWF0Y2hgYC4gVGhlIGFyZ3VtZW50IGlzIGEg
bGlzdCBvZgotICAgICAgICBsaW5lcyB3aGljaCBoYXZlIHRvIG9jY3VyIGluIHRoZSBvdXRwdXQs
IGluIGFueSBvcmRlci4KLQotICAgICAgICAiIiIKKyAgICBkZWYgZm5tYXRjaF9saW5lc19yYW5k
b20oc2VsZiwgbGluZXMyOiBTZXF1ZW5jZVtzdHJdKSAtPiBOb25lOgorICAgICAgICAiIiJDaGVj
ayBsaW5lcyBleGlzdCBpbiB0aGUgb3V0cHV0IGluIGFueSBvcmRlciAodXNpbmcgOmZ1bmM6YHB5
dGhvbjpmbm1hdGNoLmZubWF0Y2hgKS4iIiIKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBU
cnVlCiAgICAgICAgIHNlbGYuX21hdGNoX2xpbmVzX3JhbmRvbShsaW5lczIsIGZubWF0Y2gpCiAK
LSAgICBkZWYgcmVfbWF0Y2hfbGluZXNfcmFuZG9tKHNlbGYsIGxpbmVzMik6Ci0gICAgICAgICIi
IkNoZWNrIGxpbmVzIGV4aXN0IGluIHRoZSBvdXRwdXQgdXNpbmcgYGByZS5tYXRjaGBgLCBpbiBh
bnkgb3JkZXIuCi0KLSAgICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgbGlzdCBvZiBsaW5lcyB3aGlj
aCBoYXZlIHRvIG9jY3VyIGluIHRoZSBvdXRwdXQsIGluCi0gICAgICAgIGFueSBvcmRlci4KLQot
ICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWF0Y2hfbGluZXNfcmFuZG9tKGxpbmVzMiwgbGFt
YmRhIG5hbWUsIHBhdDogcmUubWF0Y2gocGF0LCBuYW1lKSkKLQotICAgIGRlZiBfbWF0Y2hfbGlu
ZXNfcmFuZG9tKHNlbGYsIGxpbmVzMiwgbWF0Y2hfZnVuYyk6Ci0gICAgICAgICIiIkNoZWNrIGxp
bmVzIGV4aXN0IGluIHRoZSBvdXRwdXQuCi0KLSAgICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgbGlz
dCBvZiBsaW5lcyB3aGljaCBoYXZlIHRvIG9jY3VyIGluIHRoZSBvdXRwdXQsIGluCi0gICAgICAg
IGFueSBvcmRlci4gIEVhY2ggbGluZSBjYW4gY29udGFpbiBnbG9iIHdoaWxkY2FyZHMuCisgICAg
ZGVmIHJlX21hdGNoX2xpbmVzX3JhbmRvbShzZWxmLCBsaW5lczI6IFNlcXVlbmNlW3N0cl0pIC0+
IE5vbmU6CisgICAgICAgICIiIkNoZWNrIGxpbmVzIGV4aXN0IGluIHRoZSBvdXRwdXQgaW4gYW55
IG9yZGVyICh1c2luZyA6ZnVuYzpgcHl0aG9uOnJlLm1hdGNoYCkuIiIiCisgICAgICAgIF9fdHJh
Y2ViYWNraGlkZV9fID0gVHJ1ZQorICAgICAgICBzZWxmLl9tYXRjaF9saW5lc19yYW5kb20obGlu
ZXMyLCBsYW1iZGEgbmFtZSwgcGF0OiBib29sKHJlLm1hdGNoKHBhdCwgbmFtZSkpKQogCi0gICAg
ICAgICIiIgorICAgIGRlZiBfbWF0Y2hfbGluZXNfcmFuZG9tKAorICAgICAgICBzZWxmLCBsaW5l
czI6IFNlcXVlbmNlW3N0cl0sIG1hdGNoX2Z1bmM6IENhbGxhYmxlW1tzdHIsIHN0cl0sIGJvb2xd
CisgICAgKSAtPiBOb25lOgorICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKICAgICAg
ICAgbGluZXMyID0gc2VsZi5fZ2V0bGluZXMobGluZXMyKQogICAgICAgICBmb3IgbGluZSBpbiBs
aW5lczI6CiAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmLmxpbmVzOgpAQCAtMTE5MSw4MiArMTQ2
NywxNzggQEAgY2xhc3MgTGluZU1hdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fbG9nKCJtYXRjaGVkOiAiLCByZXByKGxpbmUpKQogICAgICAgICAgICAgICAgICAgICBi
cmVhawogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2coImxpbmUg
JXIgbm90IGZvdW5kIGluIG91dHB1dCIgJSBsaW5lKQotICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3Ioc2VsZi5fbG9nX3RleHQpCisgICAgICAgICAgICAgICAgbXNnID0gImxpbmUgJXIg
bm90IGZvdW5kIGluIG91dHB1dCIgJSBsaW5lCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nKG1z
ZykKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWlsKG1zZykKIAotICAgIGRlZiBnZXRfbGluZXNf
YWZ0ZXIoc2VsZiwgZm5saW5lKToKKyAgICBkZWYgZ2V0X2xpbmVzX2FmdGVyKHNlbGYsIGZubGlu
ZTogc3RyKSAtPiBTZXF1ZW5jZVtzdHJdOgogICAgICAgICAiIiJSZXR1cm4gYWxsIGxpbmVzIGZv
bGxvd2luZyB0aGUgZ2l2ZW4gbGluZSBpbiB0aGUgdGV4dC4KIAogICAgICAgICBUaGUgZ2l2ZW4g
bGluZSBjYW4gY29udGFpbiBnbG9iIHdpbGRjYXJkcy4KLQogICAgICAgICAiIiIKICAgICAgICAg
Zm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKHNlbGYubGluZXMpOgogICAgICAgICAgICAgaWYgZm5s
aW5lID09IGxpbmUgb3IgZm5tYXRjaChsaW5lLCBmbmxpbmUpOgotICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLmxpbmVzW2kgKyAxOl0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5saW5l
c1tpICsgMSA6XQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJsaW5lICVyIG5vdCBmb3VuZCBp
biBvdXRwdXQiICUgZm5saW5lKQogCi0gICAgZGVmIF9sb2coc2VsZiwgKmFyZ3MpOgotICAgICAg
ICBzZWxmLl9sb2dfb3V0cHV0LmFwcGVuZCgiICIuam9pbigoc3RyKHgpIGZvciB4IGluIGFyZ3Mp
KSkKKyAgICBkZWYgX2xvZyhzZWxmLCAqYXJncykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fbG9n
X291dHB1dC5hcHBlbmQoIiAiLmpvaW4oc3RyKHgpIGZvciB4IGluIGFyZ3MpKQogCiAgICAgQHBy
b3BlcnR5Ci0gICAgZGVmIF9sb2dfdGV4dChzZWxmKToKKyAgICBkZWYgX2xvZ190ZXh0KHNlbGYp
IC0+IHN0cjoKICAgICAgICAgcmV0dXJuICJcbiIuam9pbihzZWxmLl9sb2dfb3V0cHV0KQogCi0g
ICAgZGVmIGZubWF0Y2hfbGluZXMoc2VsZiwgbGluZXMyKToKLSAgICAgICAgIiIiU2VhcmNoIGNh
cHR1cmVkIHRleHQgZm9yIG1hdGNoaW5nIGxpbmVzIHVzaW5nIGBgZm5tYXRjaC5mbm1hdGNoYGAu
CisgICAgZGVmIGZubWF0Y2hfbGluZXMoCisgICAgICAgIHNlbGYsIGxpbmVzMjogU2VxdWVuY2Vb
c3RyXSwgKiwgY29uc2VjdXRpdmU6IGJvb2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgIiIiQ2hlY2sgbGluZXMgZXhpc3QgaW4gdGhlIG91dHB1dCAodXNpbmcgOmZ1bmM6YHB5dGhv
bjpmbm1hdGNoLmZubWF0Y2hgKS4KIAogICAgICAgICBUaGUgYXJndW1lbnQgaXMgYSBsaXN0IG9m
IGxpbmVzIHdoaWNoIGhhdmUgdG8gbWF0Y2ggYW5kIGNhbiB1c2UgZ2xvYgogICAgICAgICB3aWxk
Y2FyZHMuICBJZiB0aGV5IGRvIG5vdCBtYXRjaCBhIHB5dGVzdC5mYWlsKCkgaXMgY2FsbGVkLiAg
VGhlCi0gICAgICAgIG1hdGNoZXMgYW5kIG5vbi1tYXRjaGVzIGFyZSBhbHNvIHByaW50ZWQgb24g
c3Rkb3V0LgorICAgICAgICBtYXRjaGVzIGFuZCBub24tbWF0Y2hlcyBhcmUgYWxzbyBzaG93biBh
cyBwYXJ0IG9mIHRoZSBlcnJvciBtZXNzYWdlLgogCisgICAgICAgIDpwYXJhbSBsaW5lczI6IFN0
cmluZyBwYXR0ZXJucyB0byBtYXRjaC4KKyAgICAgICAgOnBhcmFtIGNvbnNlY3V0aXZlOiBNYXRj
aCBsaW5lcyBjb25zZWN1dGl2ZWx5PwogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWF0Y2hf
bGluZXMobGluZXMyLCBmbm1hdGNoLCAiZm5tYXRjaCIpCisgICAgICAgIF9fdHJhY2ViYWNraGlk
ZV9fID0gVHJ1ZQorICAgICAgICBzZWxmLl9tYXRjaF9saW5lcyhsaW5lczIsIGZubWF0Y2gsICJm
bm1hdGNoIiwgY29uc2VjdXRpdmU9Y29uc2VjdXRpdmUpCiAKLSAgICBkZWYgcmVfbWF0Y2hfbGlu
ZXMoc2VsZiwgbGluZXMyKToKLSAgICAgICAgIiIiU2VhcmNoIGNhcHR1cmVkIHRleHQgZm9yIG1h
dGNoaW5nIGxpbmVzIHVzaW5nIGBgcmUubWF0Y2hgYC4KKyAgICBkZWYgcmVfbWF0Y2hfbGluZXMo
CisgICAgICAgIHNlbGYsIGxpbmVzMjogU2VxdWVuY2Vbc3RyXSwgKiwgY29uc2VjdXRpdmU6IGJv
b2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiQ2hlY2sgbGluZXMgZXhpc3Qg
aW4gdGhlIG91dHB1dCAodXNpbmcgOmZ1bmM6YHB5dGhvbjpyZS5tYXRjaGApLgogCiAgICAgICAg
IFRoZSBhcmd1bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBtYXRjaCB1c2lu
ZyBgYHJlLm1hdGNoYGAuCiAgICAgICAgIElmIHRoZXkgZG8gbm90IG1hdGNoIGEgcHl0ZXN0LmZh
aWwoKSBpcyBjYWxsZWQuCiAKLSAgICAgICAgVGhlIG1hdGNoZXMgYW5kIG5vbi1tYXRjaGVzIGFy
ZSBhbHNvIHByaW50ZWQgb24gc3Rkb3V0LgorICAgICAgICBUaGUgbWF0Y2hlcyBhbmQgbm9uLW1h
dGNoZXMgYXJlIGFsc28gc2hvd24gYXMgcGFydCBvZiB0aGUgZXJyb3IgbWVzc2FnZS4KIAorICAg
ICAgICA6cGFyYW0gbGluZXMyOiBzdHJpbmcgcGF0dGVybnMgdG8gbWF0Y2guCisgICAgICAgIDpw
YXJhbSBjb25zZWN1dGl2ZTogbWF0Y2ggbGluZXMgY29uc2VjdXRpdmVseT8KICAgICAgICAgIiIi
Ci0gICAgICAgIHNlbGYuX21hdGNoX2xpbmVzKGxpbmVzMiwgbGFtYmRhIG5hbWUsIHBhdDogcmUu
bWF0Y2gocGF0LCBuYW1lKSwgInJlLm1hdGNoIikKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18g
PSBUcnVlCisgICAgICAgIHNlbGYuX21hdGNoX2xpbmVzKAorICAgICAgICAgICAgbGluZXMyLAor
ICAgICAgICAgICAgbGFtYmRhIG5hbWUsIHBhdDogYm9vbChyZS5tYXRjaChwYXQsIG5hbWUpKSwK
KyAgICAgICAgICAgICJyZS5tYXRjaCIsCisgICAgICAgICAgICBjb25zZWN1dGl2ZT1jb25zZWN1
dGl2ZSwKKyAgICAgICAgKQogCi0gICAgZGVmIF9tYXRjaF9saW5lcyhzZWxmLCBsaW5lczIsIG1h
dGNoX2Z1bmMsIG1hdGNoX25pY2tuYW1lKToKKyAgICBkZWYgX21hdGNoX2xpbmVzKAorICAgICAg
ICBzZWxmLAorICAgICAgICBsaW5lczI6IFNlcXVlbmNlW3N0cl0sCisgICAgICAgIG1hdGNoX2Z1
bmM6IENhbGxhYmxlW1tzdHIsIHN0cl0sIGJvb2xdLAorICAgICAgICBtYXRjaF9uaWNrbmFtZTog
c3RyLAorICAgICAgICAqLAorICAgICAgICBjb25zZWN1dGl2ZTogYm9vbCA9IEZhbHNlCisgICAg
KSAtPiBOb25lOgogICAgICAgICAiIiJVbmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIG9mIGBgZm5t
YXRjaF9saW5lc2BgIGFuZCBgYHJlX21hdGNoX2xpbmVzYGAuCiAKLSAgICAgICAgOnBhcmFtIGxp
c3Rbc3RyXSBsaW5lczI6IGxpc3Qgb2Ygc3RyaW5nIHBhdHRlcm5zIHRvIG1hdGNoLiBUaGUgYWN0
dWFsCi0gICAgICAgICAgICBmb3JtYXQgZGVwZW5kcyBvbiBgYG1hdGNoX2Z1bmNgYAotICAgICAg
ICA6cGFyYW0gbWF0Y2hfZnVuYzogYSBjYWxsYWJsZSBgYG1hdGNoX2Z1bmMobGluZSwgcGF0dGVy
bilgYCB3aGVyZSBsaW5lCi0gICAgICAgICAgICBpcyB0aGUgY2FwdHVyZWQgbGluZSBmcm9tIHN0
ZG91dC9zdGRlcnIgYW5kIHBhdHRlcm4gaXMgdGhlIG1hdGNoaW5nCi0gICAgICAgICAgICBwYXR0
ZXJuCi0gICAgICAgIDpwYXJhbSBzdHIgbWF0Y2hfbmlja25hbWU6IHRoZSBuaWNrbmFtZSBmb3Ig
dGhlIG1hdGNoIGZ1bmN0aW9uIHRoYXQKLSAgICAgICAgICAgIHdpbGwgYmUgbG9nZ2VkIHRvIHN0
ZG91dCB3aGVuIGEgbWF0Y2ggb2NjdXJzCi0KKyAgICAgICAgOnBhcmFtIFNlcXVlbmNlW3N0cl0g
bGluZXMyOgorICAgICAgICAgICAgTGlzdCBvZiBzdHJpbmcgcGF0dGVybnMgdG8gbWF0Y2guIFRo
ZSBhY3R1YWwgZm9ybWF0IGRlcGVuZHMgb24KKyAgICAgICAgICAgIGBgbWF0Y2hfZnVuY2BgLgor
ICAgICAgICA6cGFyYW0gbWF0Y2hfZnVuYzoKKyAgICAgICAgICAgIEEgY2FsbGFibGUgYGBtYXRj
aF9mdW5jKGxpbmUsIHBhdHRlcm4pYGAgd2hlcmUgbGluZSBpcyB0aGUKKyAgICAgICAgICAgIGNh
cHR1cmVkIGxpbmUgZnJvbSBzdGRvdXQvc3RkZXJyIGFuZCBwYXR0ZXJuIGlzIHRoZSBtYXRjaGlu
ZworICAgICAgICAgICAgcGF0dGVybi4KKyAgICAgICAgOnBhcmFtIHN0ciBtYXRjaF9uaWNrbmFt
ZToKKyAgICAgICAgICAgIFRoZSBuaWNrbmFtZSBmb3IgdGhlIG1hdGNoIGZ1bmN0aW9uIHRoYXQg
d2lsbCBiZSBsb2dnZWQgdG8gc3Rkb3V0CisgICAgICAgICAgICB3aGVuIGEgbWF0Y2ggb2NjdXJz
LgorICAgICAgICA6cGFyYW0gY29uc2VjdXRpdmU6CisgICAgICAgICAgICBNYXRjaCBsaW5lcyBj
b25zZWN1dGl2ZWx5PwogICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGlu
ZXMyLCBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKCJpbnZhbGlkIHR5cGUgZm9yIGxpbmVzMjoge30iLmZvcm1hdCh0eXBlKGxpbmVzMikuX19u
YW1lX18pKQogICAgICAgICBsaW5lczIgPSBzZWxmLl9nZXRsaW5lcyhsaW5lczIpCiAgICAgICAg
IGxpbmVzMSA9IHNlbGYubGluZXNbOl0KICAgICAgICAgbmV4dGxpbmUgPSBOb25lCiAgICAgICAg
IGV4dHJhbGluZXMgPSBbXQogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKKyAgICAg
ICAgd25pY2sgPSBsZW4obWF0Y2hfbmlja25hbWUpICsgMQorICAgICAgICBzdGFydGVkID0gRmFs
c2UKICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXMyOgogICAgICAgICAgICAgbm9tYXRjaHByaW50
ZWQgPSBGYWxzZQogICAgICAgICAgICAgd2hpbGUgbGluZXMxOgogICAgICAgICAgICAgICAgIG5l
eHRsaW5lID0gbGluZXMxLnBvcCgwKQogICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gbmV4dGxp
bmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZygiZXhhY3QgbWF0Y2g6IiwgcmVwcihs
aW5lKSkKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCA9IFRydWUKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbGlmIG1hdGNoX2Z1bmMobmV4dGxpbmUsIGxp
bmUpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2coIiVzOiIgJSBtYXRjaF9uaWNrbmFt
ZSwgcmVwcihsaW5lKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nKCIgICB3aXRoOiIs
IHJlcHIobmV4dGxpbmUpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2coCisgICAgICAg
ICAgICAgICAgICAgICAgICAiezo+e3dpZHRofX0iLmZvcm1hdCgid2l0aDoiLCB3aWR0aD13bmlj
ayksIHJlcHIobmV4dGxpbmUpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICAgc3RhcnRlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBjb25zZWN1dGl2ZSBhbmQgc3Rh
cnRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJubyBjb25zZWN1dGl2ZSBtYXRj
aDogeyFyfSIuZm9ybWF0KGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2co
bXNnKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ7Oj57d2lkdGh9fSIuZm9ybWF0KCJ3aXRoOiIsIHdpZHRoPXduaWNrKSwg
cmVwcihuZXh0bGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2ZhaWwobXNnKQogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgbm9t
YXRjaHByaW50ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2coIm5vbWF0Y2g6
IiwgcmVwcihsaW5lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZygKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiezo+e3dpZHRofX0iLmZvcm1hdCgibm9tYXRjaDoiLCB3
aWR0aD13bmljayksIHJlcHIobGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vbWF0Y2hwcmludGVkID0gVHJ1ZQotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9sb2coIiAgICBhbmQ6IiwgcmVwcihuZXh0bGluZSkpCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZygiezo+e3dpZHRofX0iLmZvcm1hdCgiYW5kOiIsIHdpZHRoPXduaWNr
KSwgcmVwcihuZXh0bGluZSkpCiAgICAgICAgICAgICAgICAgZXh0cmFsaW5lcy5hcHBlbmQobmV4
dGxpbmUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZygicmVt
YWlucyB1bm1hdGNoZWQ6ICVyIiAlIChsaW5lLCkpCi0gICAgICAgICAgICAgICAgcHl0ZXN0LmZh
aWwoc2VsZi5fbG9nX3RleHQpCisgICAgICAgICAgICAgICAgbXNnID0gInJlbWFpbnMgdW5tYXRj
aGVkOiB7IXJ9Ii5mb3JtYXQobGluZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2cobXNnKQor
ICAgICAgICAgICAgICAgIHNlbGYuX2ZhaWwobXNnKQorICAgICAgICBzZWxmLl9sb2dfb3V0cHV0
ID0gW10KKworICAgIGRlZiBub19mbm1hdGNoX2xpbmUoc2VsZiwgcGF0OiBzdHIpIC0+IE5vbmU6
CisgICAgICAgICIiIkVuc3VyZSBjYXB0dXJlZCBsaW5lcyBkbyBub3QgbWF0Y2ggdGhlIGdpdmVu
IHBhdHRlcm4sIHVzaW5nIGBgZm5tYXRjaC5mbm1hdGNoYGAuCisKKyAgICAgICAgOnBhcmFtIHN0
ciBwYXQ6IFRoZSBwYXR0ZXJuIHRvIG1hdGNoIGxpbmVzLgorICAgICAgICAiIiIKKyAgICAgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIHNlbGYuX25vX21hdGNoX2xpbmUocGF0
LCBmbm1hdGNoLCAiZm5tYXRjaCIpCisKKyAgICBkZWYgbm9fcmVfbWF0Y2hfbGluZShzZWxmLCBw
YXQ6IHN0cikgLT4gTm9uZToKKyAgICAgICAgIiIiRW5zdXJlIGNhcHR1cmVkIGxpbmVzIGRvIG5v
dCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybiwgdXNpbmcgYGByZS5tYXRjaGBgLgorCisgICAgICAg
IDpwYXJhbSBzdHIgcGF0OiBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGxpbmVzLgor
ICAgICAgICAiIiIKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIHNl
bGYuX25vX21hdGNoX2xpbmUoCisgICAgICAgICAgICBwYXQsIGxhbWJkYSBuYW1lLCBwYXQ6IGJv
b2wocmUubWF0Y2gocGF0LCBuYW1lKSksICJyZS5tYXRjaCIKKyAgICAgICAgKQorCisgICAgZGVm
IF9ub19tYXRjaF9saW5lKAorICAgICAgICBzZWxmLCBwYXQ6IHN0ciwgbWF0Y2hfZnVuYzogQ2Fs
bGFibGVbW3N0ciwgc3RyXSwgYm9vbF0sIG1hdGNoX25pY2tuYW1lOiBzdHIKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIkVuc3VyZSBjYXB0dXJlZCBsaW5lcyBkb2VzIG5vdCBoYXZlIGEgdGhl
IGdpdmVuIHBhdHRlcm4sIHVzaW5nIGBgZm5tYXRjaC5mbm1hdGNoYGAuCisKKyAgICAgICAgOnBh
cmFtIHN0ciBwYXQ6IFRoZSBwYXR0ZXJuIHRvIG1hdGNoIGxpbmVzLgorICAgICAgICAiIiIKKyAg
ICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIG5vbWF0Y2hfcHJpbnRlZCA9
IEZhbHNlCisgICAgICAgIHduaWNrID0gbGVuKG1hdGNoX25pY2tuYW1lKSArIDEKKyAgICAgICAg
Zm9yIGxpbmUgaW4gc2VsZi5saW5lczoKKyAgICAgICAgICAgIGlmIG1hdGNoX2Z1bmMobGluZSwg
cGF0KToKKyAgICAgICAgICAgICAgICBtc2cgPSAie306IHshcn0iLmZvcm1hdChtYXRjaF9uaWNr
bmFtZSwgcGF0KQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZyhtc2cpCisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nKCJ7Oj57d2lkdGh9fSIuZm9ybWF0KCJ3aXRoOiIsIHdpZHRoPXduaWNrKSwg
cmVwcihsaW5lKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWlsKG1zZykKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgaWYgbm90IG5vbWF0Y2hfcHJpbnRlZDoKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nKCJ7Oj57d2lkdGh9fSIuZm9ybWF0KCJub21hdGNoOiIsIHdp
ZHRoPXduaWNrKSwgcmVwcihwYXQpKQorICAgICAgICAgICAgICAgICAgICBub21hdGNoX3ByaW50
ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nKCJ7Oj57d2lkdGh9fSIuZm9ybWF0
KCJhbmQ6Iiwgd2lkdGg9d25pY2spLCByZXByKGxpbmUpKQorICAgICAgICBzZWxmLl9sb2dfb3V0
cHV0ID0gW10KKworICAgIGRlZiBfZmFpbChzZWxmLCBtc2c6IHN0cikgLT4gTm9uZToKKyAgICAg
ICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIGxvZ190ZXh0ID0gc2VsZi5fbG9n
X3RleHQKKyAgICAgICAgc2VsZi5fbG9nX291dHB1dCA9IFtdCisgICAgICAgIHB5dGVzdC5mYWls
KGxvZ190ZXh0KQorCisgICAgZGVmIHN0cihzZWxmKSAtPiBzdHI6CisgICAgICAgICIiIlJldHVy
biB0aGUgZW50aXJlIG9yaWdpbmFsIHRleHQuIiIiCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4o
c2VsZi5saW5lcykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbi5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbi5weQppbmRleCA0ODUxNjE5OWZmZjcu
LjdkM2UzMDFjMDc2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcHl0aG9u
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbi5weQpAQCAtMSw5MyArMSw4
NCBAQAotIiIiIFB5dGhvbiB0ZXN0IGRpc2NvdmVyeSwgc2V0dXAgYW5kIHJ1biBvZiB0ZXN0IGZ1
bmN0aW9ucy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KKyIiIlB5dGhvbiB0ZXN0IGRpc2NvdmVyeSwgc2V0dXAg
YW5kIHJ1biBvZiB0ZXN0IGZ1bmN0aW9ucy4iIiIKK2ltcG9ydCBlbnVtCiBpbXBvcnQgZm5tYXRj
aAogaW1wb3J0IGluc3BlY3QKLWltcG9ydCBzeXMKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBv
cwotaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB0
eXBpbmcKIGltcG9ydCB3YXJuaW5ncwotZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50Ci1mcm9t
IGl0ZXJ0b29scyBpbXBvcnQgY291bnQKLQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRl
cgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKK2Zyb20gY29sbGVjdGlvbnMu
YWJjIGltcG9ydCBTZXF1ZW5jZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKK2Zyb20g
dHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBp
bmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0
IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAogaW1wb3J0IHB5Ci1pbXBvcnQgc2l4
Ci1mcm9tIF9weXRlc3QubWFyayBpbXBvcnQgTWFya2VyRXJyb3IKLWZyb20gX3B5dGVzdC5jb25m
aWcgaW1wb3J0IGhvb2tpbXBsCiAKIGltcG9ydCBfcHl0ZXN0Ci1pbXBvcnQgcGx1Z2d5CiBmcm9t
IF9weXRlc3QgaW1wb3J0IGZpeHR1cmVzCiBmcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCi1mcm9t
IF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0ICgK
LSAgICBpc2NsYXNzLAotICAgIGlzZnVuY3Rpb24sCi0gICAgaXNfZ2VuZXJhdG9yLAotICAgIGFz
Y2lpX2VzY2FwZWQsCi0gICAgUkVHRVhfVFlQRSwKLSAgICBTVFJJTkdfVFlQRVMsCi0gICAgTm9u
ZVR5cGUsCi0gICAgTk9UU0VULAotICAgIGdldF9yZWFsX2Z1bmMsCi0gICAgZ2V0ZnNsaW5lbm8s
Ci0gICAgc2FmZV9nZXRhdHRyLAotICAgIHNhZmVfc3RyLAotICAgIGdldGxvY2F0aW9uLAotICAg
IGVudW0sCi0gICAgZ2V0X2RlZmF1bHRfYXJnX25hbWVzLAotKQorZnJvbSBfcHl0ZXN0Ll9jb2Rl
IGltcG9ydCBmaWx0ZXJfdHJhY2ViYWNrCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGdldGZz
bGluZW5vCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJv
bSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgorZnJvbSBfcHl0ZXN0Ll9p
byBpbXBvcnQgVGVybWluYWxXcml0ZXIKK2Zyb20gX3B5dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0
IHNhZmVyZXByCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBhc2NpaV9lc2NhcGVkCitmcm9t
IF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQg
Z2V0X2RlZmF1bHRfYXJnX25hbWVzCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBnZXRfcmVh
bF9mdW5jCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBnZXRpbWZ1bmMKK2Zyb20gX3B5dGVz
dC5jb21wYXQgaW1wb3J0IGdldGxvY2F0aW9uCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBp
c19hc3luY19mdW5jdGlvbgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgaXNfZ2VuZXJhdG9y
Citmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBOT1RTRVQKK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IFJFR0VYX1RZUEUKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IHNhZmVfZ2V0YXR0
cgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgc2FmZV9pc2NsYXNzCitmcm9tIF9weXRlc3Qu
Y29tcGF0IGltcG9ydCBTVFJJTkdfVFlQRVMKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZ
UEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZpZworZnJvbSBfcHl0
ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhv
b2tpbXBsCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJv
bSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IEZTQ09MTEVDVE9SX0dFVEhPT0tQUk9YWV9JU0lO
SVRQQVRICitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZ1bmNGaXh0dXJlSW5mbworZnJv
bSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBN
QVJLX0dFTgorZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IFBhcmFtZXRlclNldAorZnJvbSBfcHl0
ZXN0Lm1hcmsuc3RydWN0dXJlcyBpbXBvcnQgZ2V0X3VucGFja2VkX21hcmtzCitmcm9tIF9weXRl
c3QubWFyay5zdHJ1Y3R1cmVzIGltcG9ydCBNYXJrCitmcm9tIF9weXRlc3QubWFyay5zdHJ1Y3R1
cmVzIGltcG9ydCBNYXJrRGVjb3JhdG9yCitmcm9tIF9weXRlc3QubWFyay5zdHJ1Y3R1cmVzIGlt
cG9ydCBub3JtYWxpemVfbWFya19saXN0CiBmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZh
aWwKLWZyb20gX3B5dGVzdC5tYXJrLnN0cnVjdHVyZXMgaW1wb3J0IHRyYW5zZmVyX21hcmtlcnMs
IGdldF91bnBhY2tlZF9tYXJrcwotCi0KLSMgcmVsYXRpdmUgcGF0aHMgdGhhdCB3ZSB1c2UgdG8g
ZmlsdGVyIHRyYWNlYmFjayBlbnRyaWVzIGZyb20gYXBwZWFyaW5nIHRvIHRoZSB1c2VyOwotIyBz
ZWUgZmlsdGVyX3RyYWNlYmFjawotIyBub3RlOiBpZiB3ZSBuZWVkIHRvIGFkZCBtb3JlIHBhdGhz
IHRoYW4gd2hhdCB3ZSBoYXZlIG5vdyB3ZSBzaG91bGQgcHJvYmFibHkgdXNlIGEgbGlzdAotIyBm
b3IgYmV0dGVyIG1haW50ZW5hbmNlCi1fcGx1Z2d5X2RpciA9IHB5LnBhdGgubG9jYWwocGx1Z2d5
Ll9fZmlsZV9fLnJzdHJpcCgib2MiKSkKLSMgcGx1Z2d5IGlzIGVpdGhlciBhIHBhY2thZ2Ugb3Ig
YSBzaW5nbGUgbW9kdWxlIGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbgotaWYgX3BsdWdneV9kaXIu
YmFzZW5hbWUgPT0gIl9faW5pdF9fLnB5IjoKLSAgICBfcGx1Z2d5X2RpciA9IF9wbHVnZ3lfZGly
LmRpcnBhdGgoKQotX3B5dGVzdF9kaXIgPSBweS5wYXRoLmxvY2FsKF9weXRlc3QuX19maWxlX18p
LmRpcnBhdGgoKQotX3B5X2RpciA9IHB5LnBhdGgubG9jYWwocHkuX19maWxlX18pLmRpcnBhdGgo
KQotCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IHNraXAKK2Zyb20gX3B5dGVzdC5wYXRo
bGliIGltcG9ydCBpbXBvcnRfcGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IEltcG9y
dFBhdGhNaXNtYXRjaEVycm9yCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgcGFydHMKK2Zy
b20gX3B5dGVzdC5wYXRobGliIGltcG9ydCB2aXNpdAorZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlw
ZXMgaW1wb3J0IFB5dGVzdENvbGxlY3Rpb25XYXJuaW5nCitmcm9tIF9weXRlc3Qud2FybmluZ190
eXBlcyBpbXBvcnQgUHl0ZXN0VW5oYW5kbGVkQ29yb3V0aW5lV2FybmluZwogCi1kZWYgZmlsdGVy
X3RyYWNlYmFjayhlbnRyeSk6Ci0gICAgIiIiUmV0dXJuIFRydWUgaWYgYSBUcmFjZWJhY2tFbnRy
eSBpbnN0YW5jZSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRyYWNlYmFja3M6Ci0gICAgKiBkeW5h
bWljYWxseSBnZW5lcmF0ZWQgY29kZSAobm8gY29kZSB0byBzaG93IHVwIGZvciBpdCk7Ci0gICAg
KiBpbnRlcm5hbCB0cmFjZWJhY2sgZnJvbSBweXRlc3Qgb3IgaXRzIGludGVybmFsIGxpYnJhcmll
cywgcHkgYW5kIHBsdWdneS4KLSAgICAiIiIKLSAgICAjIGVudHJ5LnBhdGggbWlnaHQgc29tZXRp
bWVzIHJldHVybiBhIHN0ciBvYmplY3Qgd2hlbiB0aGUgZW50cnkKLSAgICAjIHBvaW50cyB0byBk
eW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZQotICAgICMgc2VlIGh0dHBzOi8vYml0YnVja2V0Lm9y
Zy9weXRlc3QtZGV2L3B5L2lzc3Vlcy83MQotICAgIHJhd19maWxlbmFtZSA9IGVudHJ5LmZyYW1l
LmNvZGUucmF3LmNvX2ZpbGVuYW1lCi0gICAgaXNfZ2VuZXJhdGVkID0gIjwiIGluIHJhd19maWxl
bmFtZSBhbmQgIj4iIGluIHJhd19maWxlbmFtZQotICAgIGlmIGlzX2dlbmVyYXRlZDoKLSAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgIyBlbnRyeS5wYXRoIG1pZ2h0IHBvaW50IHRvIGEgbm9uLWV4
aXN0aW5nIGZpbGUsIGluIHdoaWNoIGNhc2UgaXQgd2lsbAotICAgICMgYWxzbyByZXR1cm4gYSBz
dHIgb2JqZWN0LiBzZWUgIzExMzMKLSAgICBwID0gcHkucGF0aC5sb2NhbChlbnRyeS5wYXRoKQot
ICAgIHJldHVybiBub3QgcC5yZWx0byhfcGx1Z2d5X2RpcikgYW5kIG5vdCBwLnJlbHRvKF9weXRl
c3RfZGlyKSBhbmQgbm90IHAucmVsdG8oCi0gICAgICAgIF9weV9kaXIKLSAgICApCi0KLQotZGVm
IHB5b2JqX3Byb3BlcnR5KG5hbWUpOgoraWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVHlwZQorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwK
KyAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IF9TY29wZQogCi0gICAgZGVmIGdldChz
ZWxmKToKLSAgICAgICAgbm9kZSA9IHNlbGYuZ2V0cGFyZW50KGdldGF0dHIoX19pbXBvcnRfXygi
cHl0ZXN0IiksIG5hbWUpKQotICAgICAgICBpZiBub2RlIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuIG5vZGUub2JqCiAKLSAgICBkb2MgPSAicHl0aG9uICVzIG9iamVjdCB0aGlzIG5v
ZGUgd2FzIGNvbGxlY3RlZCBmcm9tIChjYW4gYmUgTm9uZSkuIiAlICgKLSAgICAgICAgbmFtZS5s
b3dlcigpLAotICAgICkKLSAgICByZXR1cm4gcHJvcGVydHkoZ2V0LCBOb25lLCBOb25lLCBkb2Mp
Ci0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcjogUGFyc2VyKSAtPiBOb25lOgogICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJn
ZW5lcmFsIikKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLWZpeHR1cmVzIiwKQEAg
LTEwNSwxNSArOTYsMTAgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwKICAgICAgICAgaGVscD0ic2hvdyBmaXh0dXJlcyBwZXIgdGVzdCIsCiAg
ICAgKQotICAgIHBhcnNlci5hZGRpbmkoCi0gICAgICAgICJ1c2VmaXh0dXJlcyIsCi0gICAgICAg
IHR5cGU9ImFyZ3MiLAotICAgICAgICBkZWZhdWx0PVtdLAotICAgICAgICBoZWxwPSJsaXN0IG9m
IGRlZmF1bHQgZml4dHVyZXMgdG8gYmUgdXNlZCB3aXRoIHRoaXMgcHJvamVjdCIsCi0gICAgKQog
ICAgIHBhcnNlci5hZGRpbmkoCiAgICAgICAgICJweXRob25fZmlsZXMiLAogICAgICAgICB0eXBl
PSJhcmdzIiwKKyAgICAgICAgIyBOT1RFOiBkZWZhdWx0IGlzIGFsc28gdXNlZCBpbiBBc3NlcnRp
b25SZXdyaXRpbmdIb29rLgogICAgICAgICBkZWZhdWx0PVsidGVzdF8qLnB5IiwgIipfdGVzdC5w
eSJdLAogICAgICAgICBoZWxwPSJnbG9iLXN0eWxlIGZpbGUgcGF0dGVybnMgZm9yIFB5dGhvbiB0
ZXN0IG1vZHVsZSBkaXNjb3ZlcnkiLAogICAgICkKQEAgLTEyNyw0MSArMTEzLDM0IEBAIGRlZiBw
eXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgICAgICJweXRob25fZnVuY3Rpb25zIiwKICAg
ICAgICAgdHlwZT0iYXJncyIsCiAgICAgICAgIGRlZmF1bHQ9WyJ0ZXN0Il0sCi0gICAgICAgIGhl
bHA9InByZWZpeGVzIG9yIGdsb2IgbmFtZXMgZm9yIFB5dGhvbiB0ZXN0IGZ1bmN0aW9uIGFuZCAi
ICJtZXRob2QgZGlzY292ZXJ5IiwKKyAgICAgICAgaGVscD0icHJlZml4ZXMgb3IgZ2xvYiBuYW1l
cyBmb3IgUHl0aG9uIHRlc3QgZnVuY3Rpb24gYW5kIG1ldGhvZCBkaXNjb3ZlcnkiLAogICAgICkK
LQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgIi0taW1wb3J0LW1vZGUiLAotICAgICAg
ICBkZWZhdWx0PSJwcmVwZW5kIiwKLSAgICAgICAgY2hvaWNlcz1bInByZXBlbmQiLCAiYXBwZW5k
Il0sCi0gICAgICAgIGRlc3Q9ImltcG9ydG1vZGUiLAotICAgICAgICBoZWxwPSJwcmVwZW5kL2Fw
cGVuZCB0byBzeXMucGF0aCB3aGVuIGltcG9ydGluZyB0ZXN0IG1vZHVsZXMsICIKLSAgICAgICAg
ImRlZmF1bHQgaXMgdG8gcHJlcGVuZC4iLAorICAgIHBhcnNlci5hZGRpbmkoCisgICAgICAgICJk
aXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxsX3JpZ2h0c190b19jb21tdW5p
dHlfc3VwcG9ydCIsCisgICAgICAgIHR5cGU9ImJvb2wiLAorICAgICAgICBkZWZhdWx0PUZhbHNl
LAorICAgICAgICBoZWxwPSJkaXNhYmxlIHN0cmluZyBlc2NhcGUgbm9uLWFzY2lpIGNoYXJhY3Rl
cnMsIG1pZ2h0IGNhdXNlIHVud2FudGVkICIKKyAgICAgICAgInNpZGUgZWZmZWN0cyh1c2UgYXQg
eW91ciBvd24gcmlzaykiLAogICAgICkKIAogCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25m
aWcpOgorZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnOiBDb25maWcpIC0+IE9wdGlvbmFs
W1VuaW9uW2ludCwgRXhpdENvZGVdXToKICAgICBpZiBjb25maWcub3B0aW9uLnNob3dmaXh0dXJl
czoKICAgICAgICAgc2hvd2ZpeHR1cmVzKGNvbmZpZykKICAgICAgICAgcmV0dXJuIDAKICAgICBp
ZiBjb25maWcub3B0aW9uLnNob3dfZml4dHVyZXNfcGVyX3Rlc3Q6CiAgICAgICAgIHNob3dfZml4
dHVyZXNfcGVyX3Rlc3QoY29uZmlnKQogICAgICAgICByZXR1cm4gMAorICAgIHJldHVybiBOb25l
CiAKIAotZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgIyB0aG9zZSBh
bHRlcm5hdGl2ZSBzcGVsbGluZ3MgYXJlIGNvbW1vbiAtIHJhaXNlIGEgc3BlY2lmaWMgZXJyb3Ig
dG8gYWxlcnQKLSAgICAjIHRoZSB1c2VyCi0gICAgYWx0X3NwZWxsaW5ncyA9IFsicGFyYW1ldGVy
aXplIiwgInBhcmFtZXRyaXNlIiwgInBhcmFtZXRlcmlzZSJdCi0gICAgZm9yIGF0dHIgaW4gYWx0
X3NwZWxsaW5nczoKLSAgICAgICAgaWYgaGFzYXR0cihtZXRhZnVuYy5mdW5jdGlvbiwgYXR0cik6
Ci0gICAgICAgICAgICBtc2cgPSAiezB9IGhhcyAnezF9Jywgc3BlbGxpbmcgc2hvdWxkIGJlICdw
YXJhbWV0cml6ZSciCi0gICAgICAgICAgICByYWlzZSBNYXJrZXJFcnJvcihtc2cuZm9ybWF0KG1l
dGFmdW5jLmZ1bmN0aW9uLl9fbmFtZV9fLCBhdHRyKSkKK2RlZiBweXRlc3RfZ2VuZXJhdGVfdGVz
dHMobWV0YWZ1bmM6ICJNZXRhZnVuYyIpIC0+IE5vbmU6CiAgICAgZm9yIG1hcmtlciBpbiBtZXRh
ZnVuYy5kZWZpbml0aW9uLml0ZXJfbWFya2VycyhuYW1lPSJwYXJhbWV0cml6ZSIpOgotICAgICAg
ICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgqbWFya2VyLmFyZ3MsICoqbWFya2VyLmt3YXJncykKKyAg
ICAgICAgIyBUT0RPOiBGaXggdGhpcyB0eXBlLWlnbm9yZSAob3ZlcmxhcHBpbmcga3dhcmdzKS4K
KyAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoKm1hcmtlci5hcmdzLCAqKm1hcmtlci5rd2Fy
Z3MsIF9wYXJhbV9tYXJrPW1hcmtlcikgICMgdHlwZTogaWdub3JlW21pc2NdCiAKIAotZGVmIHB5
dGVzdF9jb25maWd1cmUoY29uZmlnKToKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29u
ZmlnKSAtPiBOb25lOgogICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKAogICAgICAgICAibWFy
a2VycyIsCiAgICAgICAgICJwYXJhbWV0cml6ZShhcmduYW1lcywgYXJndmFsdWVzKTogY2FsbCBh
IHRlc3QgZnVuY3Rpb24gbXVsdGlwbGUgIgpAQCAtMTcwLDExNyArMTQ5LDE2OCBAQCBkZWYgcHl0
ZXN0X2NvbmZpZ3VyZShjb25maWcpOgogICAgICAgICAib3IgYSBsaXN0IG9mIHR1cGxlcyBvZiB2
YWx1ZXMgaWYgYXJnbmFtZXMgc3BlY2lmaWVzIG11bHRpcGxlIG5hbWVzLiAiCiAgICAgICAgICJF
eGFtcGxlOiBAcGFyYW1ldHJpemUoJ2FyZzEnLCBbMSwyXSkgd291bGQgbGVhZCB0byB0d28gY2Fs
bHMgb2YgdGhlICIKICAgICAgICAgImRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9uLCBvbmUgd2l0aCBh
cmcxPTEgYW5kIGFub3RoZXIgd2l0aCBhcmcxPTIuIgotICAgICAgICAic2VlIGh0dHA6Ly9weXRl
c3Qub3JnL2xhdGVzdC9wYXJhbWV0cml6ZS5odG1sIGZvciBtb3JlIGluZm8gYW5kICIKLSAgICAg
ICAgImV4YW1wbGVzLiIsCisgICAgICAgICJzZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
c3RhYmxlL3BhcmFtZXRyaXplLmh0bWwgZm9yIG1vcmUgaW5mbyAiCisgICAgICAgICJhbmQgZXhh
bXBsZXMuIiwKICAgICApCiAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCiAgICAgICAgICJt
YXJrZXJzIiwKICAgICAgICAgInVzZWZpeHR1cmVzKGZpeHR1cmVuYW1lMSwgZml4dHVyZW5hbWUy
LCAuLi4pOiBtYXJrIHRlc3RzIGFzIG5lZWRpbmcgIgotICAgICAgICAiYWxsIG9mIHRoZSBzcGVj
aWZpZWQgZml4dHVyZXMuIHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZml4dHVyZS5odG1s
I3VzZWZpeHR1cmVzICIsCisgICAgICAgICJhbGwgb2YgdGhlIHNwZWNpZmllZCBmaXh0dXJlcy4g
c2VlICIKKyAgICAgICAgImh0dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS9maXh0dXJl
Lmh0bWwjdXNlZml4dHVyZXMgIiwKICAgICApCiAKIAorZGVmIGFzeW5jX3dhcm5fYW5kX3NraXAo
bm9kZWlkOiBzdHIpIC0+IE5vbmU6CisgICAgbXNnID0gImFzeW5jIGRlZiBmdW5jdGlvbnMgYXJl
IG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQgYW5kIGhhdmUgYmVlbiBza2lwcGVkLlxuIgorICAgIG1z
ZyArPSAoCisgICAgICAgICJZb3UgbmVlZCB0byBpbnN0YWxsIGEgc3VpdGFibGUgcGx1Z2luIGZv
ciB5b3VyIGFzeW5jIGZyYW1ld29yaywgZm9yIGV4YW1wbGU6XG4iCisgICAgKQorICAgIG1zZyAr
PSAiICAtIGFueWlvXG4iCisgICAgbXNnICs9ICIgIC0gcHl0ZXN0LWFzeW5jaW9cbiIKKyAgICBt
c2cgKz0gIiAgLSBweXRlc3QtdG9ybmFzeW5jXG4iCisgICAgbXNnICs9ICIgIC0gcHl0ZXN0LXRy
aW9cbiIKKyAgICBtc2cgKz0gIiAgLSBweXRlc3QtdHdpc3RlZCIKKyAgICB3YXJuaW5ncy53YXJu
KFB5dGVzdFVuaGFuZGxlZENvcm91dGluZVdhcm5pbmcobXNnLmZvcm1hdChub2RlaWQpKSkKKyAg
ICBza2lwKG1zZz0iYXN5bmMgZGVmIGZ1bmN0aW9uIGFuZCBubyBhc3luYyBwbHVnaW4gaW5zdGFs
bGVkIChzZWUgd2FybmluZ3MpIikKKworCiBAaG9va2ltcGwodHJ5bGFzdD1UcnVlKQotZGVmIHB5
dGVzdF9weWZ1bmNfY2FsbChweWZ1bmNpdGVtKToKK2RlZiBweXRlc3RfcHlmdW5jX2NhbGwocHlm
dW5jaXRlbTogIkZ1bmN0aW9uIikgLT4gT3B0aW9uYWxbb2JqZWN0XToKICAgICB0ZXN0ZnVuY3Rp
b24gPSBweWZ1bmNpdGVtLm9iagotICAgIGlmIHB5ZnVuY2l0ZW0uX2lzeWllbGRlZGZ1bmN0aW9u
KCk6Ci0gICAgICAgIHRlc3RmdW5jdGlvbigqcHlmdW5jaXRlbS5fYXJncykKLSAgICBlbHNlOgot
ICAgICAgICBmdW5jYXJncyA9IHB5ZnVuY2l0ZW0uZnVuY2FyZ3MKLSAgICAgICAgdGVzdGFyZ3Mg
PSB7fQotICAgICAgICBmb3IgYXJnIGluIHB5ZnVuY2l0ZW0uX2ZpeHR1cmVpbmZvLmFyZ25hbWVz
OgotICAgICAgICAgICAgdGVzdGFyZ3NbYXJnXSA9IGZ1bmNhcmdzW2FyZ10KLSAgICAgICAgdGVz
dGZ1bmN0aW9uKCoqdGVzdGFyZ3MpCisgICAgaWYgaXNfYXN5bmNfZnVuY3Rpb24odGVzdGZ1bmN0
aW9uKToKKyAgICAgICAgYXN5bmNfd2Fybl9hbmRfc2tpcChweWZ1bmNpdGVtLm5vZGVpZCkKKyAg
ICBmdW5jYXJncyA9IHB5ZnVuY2l0ZW0uZnVuY2FyZ3MKKyAgICB0ZXN0YXJncyA9IHthcmc6IGZ1
bmNhcmdzW2FyZ10gZm9yIGFyZyBpbiBweWZ1bmNpdGVtLl9maXh0dXJlaW5mby5hcmduYW1lc30K
KyAgICByZXN1bHQgPSB0ZXN0ZnVuY3Rpb24oKip0ZXN0YXJncykKKyAgICBpZiBoYXNhdHRyKHJl
c3VsdCwgIl9fYXdhaXRfXyIpIG9yIGhhc2F0dHIocmVzdWx0LCAiX19haXRlcl9fIik6CisgICAg
ICAgIGFzeW5jX3dhcm5fYW5kX3NraXAocHlmdW5jaXRlbS5ub2RlaWQpCiAgICAgcmV0dXJuIFRy
dWUKIAogCi1kZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgorZGVmIHB5dGVz
dF9jb2xsZWN0X2ZpbGUoCisgICAgcGF0aDogcHkucGF0aC5sb2NhbCwgcGFyZW50OiBub2Rlcy5D
b2xsZWN0b3IKKykgLT4gT3B0aW9uYWxbIk1vZHVsZSJdOgogICAgIGV4dCA9IHBhdGguZXh0CiAg
ICAgaWYgZXh0ID09ICIucHkiOgogICAgICAgICBpZiBub3QgcGFyZW50LnNlc3Npb24uaXNpbml0
cGF0aChwYXRoKToKLSAgICAgICAgICAgIGZvciBwYXQgaW4gcGFyZW50LmNvbmZpZy5nZXRpbmko
InB5dGhvbl9maWxlcyIpOgotICAgICAgICAgICAgICAgIGlmIHBhdGguZm5tYXRjaChwYXQpOgot
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIG5vdCBwYXRoX21hdGNoZXNfcGF0dGVybnMoCisg
ICAgICAgICAgICAgICAgcGF0aCwgcGFyZW50LmNvbmZpZy5nZXRpbmkoInB5dGhvbl9maWxlcyIp
ICsgWyJfX2luaXRfXy5weSJdCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCiAgICAgICAgIGlob29rID0gcGFyZW50LnNlc3Npb24uZ2V0aG9va3Byb3h5KHBhdGgp
Ci0gICAgICAgIHJldHVybiBpaG9vay5weXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aD1w
YXRoLCBwYXJlbnQ9cGFyZW50KQorICAgICAgICBtb2R1bGUgPSBpaG9vay5weXRlc3RfcHljb2xs
ZWN0X21ha2Vtb2R1bGUoCisgICAgICAgICAgICBwYXRoPXBhdGgsIHBhcmVudD1wYXJlbnQKKyAg
ICAgICAgKSAgIyB0eXBlOiBNb2R1bGUKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgIHJldHVy
biBOb25lCiAKIAotZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZShwYXRoLCBwYXJlbnQp
OgotICAgIHJldHVybiBNb2R1bGUocGF0aCwgcGFyZW50KQorZGVmIHBhdGhfbWF0Y2hlc19wYXR0
ZXJucyhwYXRoOiBweS5wYXRoLmxvY2FsLCBwYXR0ZXJuczogSXRlcmFibGVbc3RyXSkgLT4gYm9v
bDoKKyAgICAiIiJSZXR1cm4gd2hldGhlciBwYXRoIG1hdGNoZXMgYW55IG9mIHRoZSBwYXR0ZXJu
cyBpbiB0aGUgbGlzdCBvZiBnbG9icyBnaXZlbi4iIiIKKyAgICByZXR1cm4gYW55KHBhdGguZm5t
YXRjaChwYXR0ZXJuKSBmb3IgcGF0dGVybiBpbiBwYXR0ZXJucykKIAogCi1AaG9va2ltcGwoaG9v
a3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3Rvciwg
bmFtZSwgb2JqKToKLSAgICBvdXRjb21lID0geWllbGQKLSAgICByZXMgPSBvdXRjb21lLmdldF9y
ZXN1bHQoKQotICAgIGlmIHJlcyBpcyBub3QgTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAgIyBu
b3RoaW5nIHdhcyBjb2xsZWN0ZWQgZWxzZXdoZXJlLCBsZXQncyBkbyBpdCBoZXJlCi0gICAgaWYg
aXNjbGFzcyhvYmopOgorZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZShwYXRoOiBweS5w
YXRoLmxvY2FsLCBwYXJlbnQpIC0+ICJNb2R1bGUiOgorICAgIGlmIHBhdGguYmFzZW5hbWUgPT0g
Il9faW5pdF9fLnB5IjoKKyAgICAgICAgcGtnID0gUGFja2FnZS5mcm9tX3BhcmVudChwYXJlbnQs
IGZzcGF0aD1wYXRoKSAgIyB0eXBlOiBQYWNrYWdlCisgICAgICAgIHJldHVybiBwa2cKKyAgICBt
b2QgPSBNb2R1bGUuZnJvbV9wYXJlbnQocGFyZW50LCBmc3BhdGg9cGF0aCkgICMgdHlwZTogTW9k
dWxlCisgICAgcmV0dXJuIG1vZAorCisKK0Bob29raW1wbCh0cnlsYXN0PVRydWUpCitkZWYgcHl0
ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3I6ICJQeUNvbGxlY3RvciIsIG5hbWU6IHN0
ciwgb2JqOiBvYmplY3QpOgorICAgICMgTm90aGluZyB3YXMgY29sbGVjdGVkIGVsc2V3aGVyZSwg
bGV0J3MgZG8gaXQgaGVyZS4KKyAgICBpZiBzYWZlX2lzY2xhc3Mob2JqKToKICAgICAgICAgaWYg
Y29sbGVjdG9yLmlzdGVzdGNsYXNzKG9iaiwgbmFtZSk6Ci0gICAgICAgICAgICBDbGFzcyA9IGNv
bGxlY3Rvci5fZ2V0Y3VzdG9tY2xhc3MoIkNsYXNzIikKLSAgICAgICAgICAgIG91dGNvbWUuZm9y
Y2VfcmVzdWx0KENsYXNzKG5hbWUsIHBhcmVudD1jb2xsZWN0b3IpKQorICAgICAgICAgICAgcmV0
dXJuIENsYXNzLmZyb21fcGFyZW50KGNvbGxlY3RvciwgbmFtZT1uYW1lLCBvYmo9b2JqKQogICAg
IGVsaWYgY29sbGVjdG9yLmlzdGVzdGZ1bmN0aW9uKG9iaiwgbmFtZSk6Ci0gICAgICAgICMgbW9j
ayBzZWVtcyB0byBzdG9yZSB1bmJvdW5kIG1ldGhvZHMgKGlzc3VlNDczKSwgbm9ybWFsaXplIGl0
CisgICAgICAgICMgbW9jayBzZWVtcyB0byBzdG9yZSB1bmJvdW5kIG1ldGhvZHMgKGlzc3VlNDcz
KSwgbm9ybWFsaXplIGl0LgogICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgIl9fZnVuY19fIiwg
b2JqKQogICAgICAgICAjIFdlIG5lZWQgdG8gdHJ5IGFuZCB1bndyYXAgdGhlIGZ1bmN0aW9uIGlm
IGl0J3MgYSBmdW5jdG9vbHMucGFydGlhbAotICAgICAgICAjIG9yIGEgZnVudG9vbHMud3JhcHBl
ZC4KLSAgICAgICAgIyBXZSBtdXNuJ3QgaWYgaXQncyBiZWVuIHdyYXBwZWQgd2l0aCBtb2NrLnBh
dGNoIChweXRob24gMiBvbmx5KQotICAgICAgICBpZiBub3QgKGlzZnVuY3Rpb24ob2JqKSBvciBp
c2Z1bmN0aW9uKGdldF9yZWFsX2Z1bmMob2JqKSkpOgotICAgICAgICAgICAgY29sbGVjdG9yLndh
cm4oCi0gICAgICAgICAgICAgICAgY29kZT0iQzIiLAotICAgICAgICAgICAgICAgIG1lc3NhZ2U9
ImNhbm5vdCBjb2xsZWN0ICVyIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIiAlIG5hbWUs
CisgICAgICAgICMgb3IgYSBmdW5jdG9vbHMud3JhcHBlZC4KKyAgICAgICAgIyBXZSBtdXN0bid0
IGlmIGl0J3MgYmVlbiB3cmFwcGVkIHdpdGggbW9jay5wYXRjaCAocHl0aG9uIDIgb25seSkuCisg
ICAgICAgIGlmIG5vdCAoaW5zcGVjdC5pc2Z1bmN0aW9uKG9iaikgb3IgaW5zcGVjdC5pc2Z1bmN0
aW9uKGdldF9yZWFsX2Z1bmMob2JqKSkpOgorICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubyA9
IGdldGZzbGluZW5vKG9iaikKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisg
ICAgICAgICAgICAgICAgbWVzc2FnZT1QeXRlc3RDb2xsZWN0aW9uV2FybmluZygKKyAgICAgICAg
ICAgICAgICAgICAgImNhbm5vdCBjb2xsZWN0ICVyIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rp
b24uIiAlIG5hbWUKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGNhdGVnb3J5
PU5vbmUsCisgICAgICAgICAgICAgICAgZmlsZW5hbWU9c3RyKGZpbGVuYW1lKSwKKyAgICAgICAg
ICAgICAgICBsaW5lbm89bGluZW5vICsgMSwKICAgICAgICAgICAgICkKICAgICAgICAgZWxpZiBn
ZXRhdHRyKG9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6CiAgICAgICAgICAgICBpZiBpc19nZW5lcmF0
b3Iob2JqKToKLSAgICAgICAgICAgICAgICByZXMgPSBHZW5lcmF0b3IobmFtZSwgcGFyZW50PWNv
bGxlY3RvcikKKyAgICAgICAgICAgICAgICByZXMgPSBGdW5jdGlvbi5mcm9tX3BhcmVudChjb2xs
ZWN0b3IsIG5hbWU9bmFtZSkKKyAgICAgICAgICAgICAgICByZWFzb24gPSAieWllbGQgdGVzdHMg
d2VyZSByZW1vdmVkIGluIHB5dGVzdCA0LjAgLSB7bmFtZX0gd2lsbCBiZSBpZ25vcmVkIi5mb3Jt
YXQoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9bmFtZQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICByZXMuYWRkX21hcmtlcihNQVJLX0dFTi54ZmFpbChydW49RmFsc2UsIHJl
YXNvbj1yZWFzb24pKQorICAgICAgICAgICAgICAgIHJlcy53YXJuKFB5dGVzdENvbGxlY3Rpb25X
YXJuaW5nKHJlYXNvbikpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlcyA9
IGxpc3QoY29sbGVjdG9yLl9nZW5mdW5jdGlvbnMobmFtZSwgb2JqKSkKLSAgICAgICAgICAgIG91
dGNvbWUuZm9yY2VfcmVzdWx0KHJlcykKKyAgICAgICAgICAgIHJldHVybiByZXMKIAogCi1kZWYg
cHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQoY29uZmlnLCB2YWwsIGFyZ25hbWU9Tm9uZSk6Ci0g
ICAgcmV0dXJuIE5vbmUKLQotCi1jbGFzcyBQeW9iakNvbnRleHQob2JqZWN0KToKLSAgICBtb2R1
bGUgPSBweW9ial9wcm9wZXJ0eSgiTW9kdWxlIikKLSAgICBjbHMgPSBweW9ial9wcm9wZXJ0eSgi
Q2xhc3MiKQotICAgIGluc3RhbmNlID0gcHlvYmpfcHJvcGVydHkoIkluc3RhbmNlIikKLQotCi1j
bGFzcyBQeW9iak1peGluKFB5b2JqQ29udGV4dCk6CitjbGFzcyBQeW9iak1peGluOgogICAgIF9B
TExPV19NQVJLRVJTID0gVHJ1ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICprLCAqKmt3KToK
LSAgICAgICAgc3VwZXIoUHlvYmpNaXhpbiwgc2VsZikuX19pbml0X18oKmssICoqa3cpCisgICAg
IyBGdW5jdGlvbiBhbmQgYXR0cmlidXRlcyB0aGF0IHRoZSBtaXhpbiBuZWVkcyAoZm9yIHR5cGUt
Y2hlY2tpbmcgb25seSkuCisgICAgaWYgVFlQRV9DSEVDS0lORzoKKyAgICAgICAgbmFtZSA9ICIi
ICAjIHR5cGU6IHN0cgorICAgICAgICBwYXJlbnQgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW25v
ZGVzLk5vZGVdCisgICAgICAgIG93bl9tYXJrZXJzID0gW10gICMgdHlwZTogTGlzdFtNYXJrXQor
CisgICAgICAgIGRlZiBnZXRwYXJlbnQoc2VsZiwgY2xzOiBUeXBlW25vZGVzLl9Ob2RlVHlwZV0p
IC0+IE9wdGlvbmFsW25vZGVzLl9Ob2RlVHlwZV06CisgICAgICAgICAgICAuLi4KIAotICAgIGRl
ZiBvYmooKToKKyAgICAgICAgZGVmIGxpc3RjaGFpbihzZWxmKSAtPiBMaXN0W25vZGVzLk5vZGVd
OgorICAgICAgICAgICAgLi4uCiAKLSAgICAgICAgZGVmIGZnZXQoc2VsZik6Ci0gICAgICAgICAg
ICBvYmogPSBnZXRhdHRyKHNlbGYsICJfb2JqIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIG9iaiBp
cyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX29iaiA9IG9iaiA9IHNlbGYuX2dldG9iaigp
Ci0gICAgICAgICAgICAgICAgIyBYWFggZXZpbCBoYWNrCi0gICAgICAgICAgICAgICAgIyB1c2Vk
IHRvIGF2b2lkIEluc3RhbmNlIGNvbGxlY3RvciBtYXJrZXIgZHVwbGljYXRpb24KLSAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9BTExPV19NQVJLRVJTOgotICAgICAgICAgICAgICAgICAgICBzZWxm
Lm93bl9tYXJrZXJzLmV4dGVuZChnZXRfdW5wYWNrZWRfbWFya3Moc2VsZi5vYmopKQotICAgICAg
ICAgICAgcmV0dXJuIG9iagorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2R1bGUoc2VsZik6Cisg
ICAgICAgICIiIlB5dGhvbiBtb2R1bGUgb2JqZWN0IHRoaXMgbm9kZSB3YXMgY29sbGVjdGVkIGZy
b20gKGNhbiBiZSBOb25lKS4iIiIKKyAgICAgICAgbm9kZSA9IHNlbGYuZ2V0cGFyZW50KE1vZHVs
ZSkKKyAgICAgICAgcmV0dXJuIG5vZGUub2JqIGlmIG5vZGUgaXMgbm90IE5vbmUgZWxzZSBOb25l
CiAKLSAgICAgICAgZGVmIGZzZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICAgICAgc2VsZi5fb2Jq
ID0gdmFsdWUKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xzKHNlbGYpOgorICAgICAgICAiIiJQ
eXRob24gY2xhc3Mgb2JqZWN0IHRoaXMgbm9kZSB3YXMgY29sbGVjdGVkIGZyb20gKGNhbiBiZSBO
b25lKS4iIiIKKyAgICAgICAgbm9kZSA9IHNlbGYuZ2V0cGFyZW50KENsYXNzKQorICAgICAgICBy
ZXR1cm4gbm9kZS5vYmogaWYgbm9kZSBpcyBub3QgTm9uZSBlbHNlIE5vbmUKIAotICAgICAgICBy
ZXR1cm4gcHJvcGVydHkoZmdldCwgZnNldCwgTm9uZSwgInVuZGVybHlpbmcgcHl0aG9uIG9iamVj
dCIpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGluc3RhbmNlKHNlbGYpOgorICAgICAgICAiIiJQ
eXRob24gaW5zdGFuY2Ugb2JqZWN0IHRoaXMgbm9kZSB3YXMgY29sbGVjdGVkIGZyb20gKGNhbiBi
ZSBOb25lKS4iIiIKKyAgICAgICAgbm9kZSA9IHNlbGYuZ2V0cGFyZW50KEluc3RhbmNlKQorICAg
ICAgICByZXR1cm4gbm9kZS5vYmogaWYgbm9kZSBpcyBub3QgTm9uZSBlbHNlIE5vbmUKIAotICAg
IG9iaiA9IG9iaigpCisgICAgQHByb3BlcnR5CisgICAgZGVmIG9iaihzZWxmKToKKyAgICAgICAg
IiIiVW5kZXJseWluZyBQeXRob24gb2JqZWN0LiIiIgorICAgICAgICBvYmogPSBnZXRhdHRyKHNl
bGYsICJfb2JqIiwgTm9uZSkKKyAgICAgICAgaWYgb2JqIGlzIE5vbmU6CisgICAgICAgICAgICBz
ZWxmLl9vYmogPSBvYmogPSBzZWxmLl9nZXRvYmooKQorICAgICAgICAgICAgIyBYWFggZXZpbCBo
YWNrCisgICAgICAgICAgICAjIHVzZWQgdG8gYXZvaWQgSW5zdGFuY2UgY29sbGVjdG9yIG1hcmtl
ciBkdXBsaWNhdGlvbgorICAgICAgICAgICAgaWYgc2VsZi5fQUxMT1dfTUFSS0VSUzoKKyAgICAg
ICAgICAgICAgICBzZWxmLm93bl9tYXJrZXJzLmV4dGVuZChnZXRfdW5wYWNrZWRfbWFya3Moc2Vs
Zi5vYmopKQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBAb2JqLnNldHRlcgorICAgIGRlZiBv
Ymooc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9vYmogPSB2YWx1ZQogCiAgICAgZGVmIF9n
ZXRvYmooc2VsZik6Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYucGFyZW50Lm9iaiwgc2Vs
Zi5uYW1lKQotCi0gICAgZGVmIGdldG1vZHBhdGgoc2VsZiwgc3RvcGF0bW9kdWxlPVRydWUsIGlu
Y2x1ZGVtb2R1bGU9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIHB5dGhvbiBwYXRoIHJlbGF0
aXZlIHRvIHRoZSBjb250YWluaW5nIG1vZHVsZS4gIiIiCisgICAgICAgICIiIkdldCB0aGUgdW5k
ZXJseWluZyBQeXRob24gb2JqZWN0LiBNYXkgYmUgb3ZlcndyaXR0ZW4gYnkgc3ViY2xhc3Nlcy4i
IiIKKyAgICAgICAgIyBUT0RPOiBJbXByb3ZlIHRoZSB0eXBlIG9mIGBwYXJlbnRgIHN1Y2ggdGhh
dCBhc3NlcnQvaWdub3JlIGFyZW4ndCBuZWVkZWQuCisgICAgICAgIGFzc2VydCBzZWxmLnBhcmVu
dCBpcyBub3QgTm9uZQorICAgICAgICBvYmogPSBzZWxmLnBhcmVudC5vYmogICMgdHlwZTogaWdu
b3JlW2F0dHItZGVmaW5lZF0KKyAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCBzZWxmLm5hbWUp
CisKKyAgICBkZWYgZ2V0bW9kcGF0aChzZWxmLCBzdG9wYXRtb2R1bGU6IGJvb2wgPSBUcnVlLCBp
bmNsdWRlbW9kdWxlOiBib29sID0gRmFsc2UpIC0+IHN0cjoKKyAgICAgICAgIiIiUmV0dXJuIFB5
dGhvbiBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIG1vZHVsZS4iIiIKICAgICAgICAg
Y2hhaW4gPSBzZWxmLmxpc3RjaGFpbigpCiAgICAgICAgIGNoYWluLnJldmVyc2UoKQogICAgICAg
ICBwYXJ0cyA9IFtdCkBAIC0yOTYsMjEgKzMyNiwxOCBAQCBjbGFzcyBQeW9iak1peGluKFB5b2Jq
Q29udGV4dCk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBwYXJ0cy5h
cHBlbmQobmFtZSkKICAgICAgICAgcGFydHMucmV2ZXJzZSgpCi0gICAgICAgIHMgPSAiLiIuam9p
bihwYXJ0cykKLSAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgiLlsiLCAiWyIpCisgICAgICAgIHJl
dHVybiAiLiIuam9pbihwYXJ0cykKIAotICAgIGRlZiBfZ2V0ZnNsaW5lbm8oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBnZXRmc2xpbmVubyhzZWxmLm9iaikKLQotICAgIGRlZiByZXBvcnRpbmZvKHNl
bGYpOgorICAgIGRlZiByZXBvcnRpbmZvKHNlbGYpIC0+IFR1cGxlW1VuaW9uW3B5LnBhdGgubG9j
YWwsIHN0cl0sIGludCwgc3RyXToKICAgICAgICAgIyBYWFggY2FjaGluZz8KICAgICAgICAgb2Jq
ID0gc2VsZi5vYmoKICAgICAgICAgY29tcGF0X2NvX2ZpcnN0bGluZW5vID0gZ2V0YXR0cihvYmos
ICJjb21wYXRfY29fZmlyc3RsaW5lbm8iLCBOb25lKQogICAgICAgICBpZiBpc2luc3RhbmNlKGNv
bXBhdF9jb19maXJzdGxpbmVubywgaW50KToKICAgICAgICAgICAgICMgbm9zZSBjb21wYXRpYmls
aXR5Ci0gICAgICAgICAgICBmc3BhdGggPSBzeXMubW9kdWxlc1tvYmouX19tb2R1bGVfX10uX19m
aWxlX18KLSAgICAgICAgICAgIGlmIGZzcGF0aC5lbmRzd2l0aCgiLnB5YyIpOgotICAgICAgICAg
ICAgICAgIGZzcGF0aCA9IGZzcGF0aFs6LTFdCisgICAgICAgICAgICBmaWxlX3BhdGggPSBzeXMu
bW9kdWxlc1tvYmouX19tb2R1bGVfX10uX19maWxlX18KKyAgICAgICAgICAgIGlmIGZpbGVfcGF0
aC5lbmRzd2l0aCgiLnB5YyIpOgorICAgICAgICAgICAgICAgIGZpbGVfcGF0aCA9IGZpbGVfcGF0
aFs6LTFdCisgICAgICAgICAgICBmc3BhdGggPSBmaWxlX3BhdGggICMgdHlwZTogVW5pb25bcHku
cGF0aC5sb2NhbCwgc3RyXQogICAgICAgICAgICAgbGluZW5vID0gY29tcGF0X2NvX2ZpcnN0bGlu
ZW5vCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmc3BhdGgsIGxpbmVubyA9IGdldGZzbGlu
ZW5vKG9iaikKQEAgLTMxOSwzMyArMzQ2LDQ3IEBAIGNsYXNzIFB5b2JqTWl4aW4oUHlvYmpDb250
ZXh0KToKICAgICAgICAgcmV0dXJuIGZzcGF0aCwgbGluZW5vLCBtb2RwYXRoCiAKIAotY2xhc3Mg
UHlDb2xsZWN0b3IoUHlvYmpNaXhpbiwgbm9kZXMuQ29sbGVjdG9yKToKKyMgQXMgYW4gb3B0aW1p
emF0aW9uLCB0aGVzZSBidWlsdGluIGF0dHJpYnV0ZSBuYW1lcyBhcmUgcHJlLWlnbm9yZWQgd2hl
bgorIyBpdGVyYXRpbmcgb3ZlciBhbiBvYmplY3QgZHVyaW5nIGNvbGxlY3Rpb24gLS0gdGhlIHB5
dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0KKyMgaG9vayBpcyBub3QgY2FsbGVkIGZvciB0aGVtLgor
IyBmbXQ6IG9mZgorY2xhc3MgX0VtcHR5Q2xhc3M6IHBhc3MgICMgbm9xYTogRTcwMQorSUdOT1JF
RF9BVFRSSUJVVEVTID0gZnJvemVuc2V0LnVuaW9uKCAgIyBub3FhOiBFMzA1CisgICAgZnJvemVu
c2V0KCksCisgICAgIyBNb2R1bGUuCisgICAgZGlyKHR5cGVzLk1vZHVsZVR5cGUoImVtcHR5X21v
ZHVsZSIpKSwKKyAgICAjIFNvbWUgZXh0cmEgbW9kdWxlIGF0dHJpYnV0ZXMgdGhlIGFib3ZlIGRv
ZXNuJ3QgY2F0Y2guCisgICAgeyJfX2J1aWx0aW5zX18iLCAiX19maWxlX18iLCAiX19jYWNoZWRf
XyJ9LAorICAgICMgQ2xhc3MuCisgICAgZGlyKF9FbXB0eUNsYXNzKSwKKyAgICAjIEluc3RhbmNl
LgorICAgIGRpcihfRW1wdHlDbGFzcygpKSwKKykKK2RlbCBfRW1wdHlDbGFzcworIyBmbXQ6IG9u
CiAKLSAgICBkZWYgZnVuY25hbWVmaWx0ZXIoc2VsZiwgbmFtZSk6CisKK2NsYXNzIFB5Q29sbGVj
dG9yKFB5b2JqTWl4aW4sIG5vZGVzLkNvbGxlY3Rvcik6CisgICAgZGVmIGZ1bmNuYW1lZmlsdGVy
KHNlbGYsIG5hbWU6IHN0cikgLT4gYm9vbDoKICAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoZXNf
cHJlZml4X29yX2dsb2Jfb3B0aW9uKCJweXRob25fZnVuY3Rpb25zIiwgbmFtZSkKIAotICAgIGRl
ZiBpc25vc2V0ZXN0KHNlbGYsIG9iaik6Ci0gICAgICAgICIiIiBMb29rIGZvciB0aGUgX190ZXN0
X18gYXR0cmlidXRlLCB3aGljaCBpcyBhcHBsaWVkIGJ5IHRoZQotICAgICAgICBAbm9zZS50b29s
cy5pc3Rlc3QgZGVjb3JhdG9yCisgICAgZGVmIGlzbm9zZXRlc3Qoc2VsZiwgb2JqOiBvYmplY3Qp
IC0+IGJvb2w6CisgICAgICAgICIiIkxvb2sgZm9yIHRoZSBfX3Rlc3RfXyBhdHRyaWJ1dGUsIHdo
aWNoIGlzIGFwcGxpZWQgYnkgdGhlCisgICAgICAgIEBub3NlLnRvb2xzLmlzdGVzdCBkZWNvcmF0
b3IuCiAgICAgICAgICIiIgogICAgICAgICAjIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yICJpcyBU
cnVlIiBoZXJlIHRvIG5vdCBtaXN0YWtlbmx5IHRyZWF0CiAgICAgICAgICMgY2xhc3NlcyB3aXRo
IGEgY3VzdG9tIF9fZ2V0YXR0cl9fIHJldHVybmluZyBzb21ldGhpbmcgdHJ1dGh5IChsaWtlIGEK
ICAgICAgICAgIyBmdW5jdGlvbikgYXMgdGVzdCBjbGFzc2VzLgogICAgICAgICByZXR1cm4gc2Fm
ZV9nZXRhdHRyKG9iaiwgIl9fdGVzdF9fIiwgRmFsc2UpIGlzIFRydWUKIAotICAgIGRlZiBjbGFz
c25hbWVmaWx0ZXIoc2VsZiwgbmFtZSk6CisgICAgZGVmIGNsYXNzbmFtZWZpbHRlcihzZWxmLCBu
YW1lOiBzdHIpIC0+IGJvb2w6CiAgICAgICAgIHJldHVybiBzZWxmLl9tYXRjaGVzX3ByZWZpeF9v
cl9nbG9iX29wdGlvbigicHl0aG9uX2NsYXNzZXMiLCBuYW1lKQogCi0gICAgZGVmIGlzdGVzdGZ1
bmN0aW9uKHNlbGYsIG9iaiwgbmFtZSk6CisgICAgZGVmIGlzdGVzdGZ1bmN0aW9uKHNlbGYsIG9i
ajogb2JqZWN0LCBuYW1lOiBzdHIpIC0+IGJvb2w6CiAgICAgICAgIGlmIHNlbGYuZnVuY25hbWVm
aWx0ZXIobmFtZSkgb3Igc2VsZi5pc25vc2V0ZXN0KG9iaik6CiAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKG9iaiwgc3RhdGljbWV0aG9kKToKLSAgICAgICAgICAgICAgICAjIHN0YXRpYyBtZXRo
b2RzIG5lZWQgdG8gYmUgdW53cmFwcGVkCisgICAgICAgICAgICAgICAgIyBzdGF0aWNtZXRob2Rz
IG5lZWQgdG8gYmUgdW53cmFwcGVkLgogICAgICAgICAgICAgICAgIG9iaiA9IHNhZmVfZ2V0YXR0
cihvYmosICJfX2Z1bmNfXyIsIEZhbHNlKQotICAgICAgICAgICAgICAgIGlmIG9iaiBpcyBGYWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgIyBQeXRob24gMi42IHdyYXBzIGluIGEgZGlmZmVyZW50
IHdheSB0aGF0IHdlIHdvbid0IHRyeSB0byBoYW5kbGUKLSAgICAgICAgICAgICAgICAgICAgbXNn
ID0gImNhbm5vdCBjb2xsZWN0IHN0YXRpYyBtZXRob2QgJXIgYmVjYXVzZSBpdCBpcyBub3QgYSBm
dW5jdGlvbiIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53YXJuKGNvZGU9IkMyIiwgbWVzc2Fn
ZT1tc2cgJSBuYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAg
ICAgIHJldHVybiAoCiAgICAgICAgICAgICAgICAgc2FmZV9nZXRhdHRyKG9iaiwgIl9fY2FsbF9f
IiwgRmFsc2UpCiAgICAgICAgICAgICAgICAgYW5kIGZpeHR1cmVzLmdldGZpeHR1cmVtYXJrZXIo
b2JqKSBpcyBOb25lCkBAIC0zNTMsNjggKzM5NCw3MiBAQCBjbGFzcyBQeUNvbGxlY3RvcihQeW9i
ak1peGluLCBub2Rlcy5Db2xsZWN0b3IpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAKLSAgICBkZWYgaXN0ZXN0Y2xhc3Moc2VsZiwgb2JqLCBuYW1lKToKKyAgICBk
ZWYgaXN0ZXN0Y2xhc3Moc2VsZiwgb2JqOiBvYmplY3QsIG5hbWU6IHN0cikgLT4gYm9vbDoKICAg
ICAgICAgcmV0dXJuIHNlbGYuY2xhc3NuYW1lZmlsdGVyKG5hbWUpIG9yIHNlbGYuaXNub3NldGVz
dChvYmopCiAKLSAgICBkZWYgX21hdGNoZXNfcHJlZml4X29yX2dsb2Jfb3B0aW9uKHNlbGYsIG9w
dGlvbl9uYW1lLCBuYW1lKToKLSAgICAgICAgIiIiCi0gICAgICAgIGNoZWNrcyBpZiB0aGUgZ2l2
ZW4gbmFtZSBtYXRjaGVzIHRoZSBwcmVmaXggb3IgZ2xvYi1wYXR0ZXJuIGRlZmluZWQKLSAgICAg
ICAgaW4gaW5pIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICIiIgorICAgIGRlZiBfbWF0Y2hlc19w
cmVmaXhfb3JfZ2xvYl9vcHRpb24oc2VsZiwgb3B0aW9uX25hbWU6IHN0ciwgbmFtZTogc3RyKSAt
PiBib29sOgorICAgICAgICAiIiJDaGVjayBpZiB0aGUgZ2l2ZW4gbmFtZSBtYXRjaGVzIHRoZSBw
cmVmaXggb3IgZ2xvYi1wYXR0ZXJuIGRlZmluZWQKKyAgICAgICAgaW4gaW5pIGNvbmZpZ3VyYXRp
b24uIiIiCiAgICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5jb25maWcuZ2V0aW5pKG9wdGlvbl9u
YW1lKToKICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aChvcHRpb24pOgogICAgICAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAjIGNoZWNrIHRoYXQgbmFtZSBsb29rcyBs
aWtlIGEgZ2xvYi1zdHJpbmcgYmVmb3JlIGNhbGxpbmcgZm5tYXRjaAorICAgICAgICAgICAgIyBD
aGVjayB0aGF0IG5hbWUgbG9va3MgbGlrZSBhIGdsb2Itc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGZu
bWF0Y2gKICAgICAgICAgICAgICMgYmVjYXVzZSB0aGlzIGlzIGNhbGxlZCBmb3IgZXZlcnkgbmFt
ZSBpbiBlYWNoIGNvbGxlY3RlZCBtb2R1bGUsCi0gICAgICAgICAgICAjIGFuZCBmbm1hdGNoIGlz
IHNvbWV3aGF0IGV4cGVuc2l2ZSB0byBjYWxsCisgICAgICAgICAgICAjIGFuZCBmbm1hdGNoIGlz
IHNvbWV3aGF0IGV4cGVuc2l2ZSB0byBjYWxsLgogICAgICAgICAgICAgZWxpZiAoIioiIGluIG9w
dGlvbiBvciAiPyIgaW4gb3B0aW9uIG9yICJbIiBpbiBvcHRpb24pIGFuZCBmbm1hdGNoLmZubWF0
Y2goCiAgICAgICAgICAgICAgICAgbmFtZSwgb3B0aW9uCiAgICAgICAgICAgICApOgogICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIGNv
bGxlY3Qoc2VsZik6CisgICAgZGVmIGNvbGxlY3Qoc2VsZikgLT4gSXRlcmFibGVbVW5pb25bbm9k
ZXMuSXRlbSwgbm9kZXMuQ29sbGVjdG9yXV06CiAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYu
b2JqLCAiX190ZXN0X18iLCBUcnVlKToKICAgICAgICAgICAgIHJldHVybiBbXQogCiAgICAgICAg
ICMgTkIuIHdlIGF2b2lkIHJhbmRvbSBnZXRhdHRycyBhbmQgcGVlayBpbiB0aGUgX19kaWN0X18g
aW5zdGVhZAogICAgICAgICAjIChYWFggb3JpZ2luYWxseSBpbnRyb2R1Y2VkIGZyb20gYSBQeVB5
IG5lZWQsIHN0aWxsIHRydWU/KQogICAgICAgICBkaWN0cyA9IFtnZXRhdHRyKHNlbGYub2JqLCAi
X19kaWN0X18iLCB7fSldCi0gICAgICAgIGZvciBiYXNlY2xzIGluIGluc3BlY3QuZ2V0bXJvKHNl
bGYub2JqLl9fY2xhc3NfXyk6CisgICAgICAgIGZvciBiYXNlY2xzIGluIHNlbGYub2JqLl9fY2xh
c3NfXy5fX21yb19fOgogICAgICAgICAgICAgZGljdHMuYXBwZW5kKGJhc2VjbHMuX19kaWN0X18p
Ci0gICAgICAgIHNlZW4gPSB7fQotICAgICAgICB2YWx1ZXMgPSBbXQorICAgICAgICBzZWVuID0g
c2V0KCkgICMgdHlwZTogU2V0W3N0cl0KKyAgICAgICAgdmFsdWVzID0gW10gICMgdHlwZTogTGlz
dFtVbmlvbltub2Rlcy5JdGVtLCBub2Rlcy5Db2xsZWN0b3JdXQorICAgICAgICBpaG9vayA9IHNl
bGYuaWhvb2sKICAgICAgICAgZm9yIGRpYyBpbiBkaWN0czoKKyAgICAgICAgICAgICMgTm90ZTog
c2VlbXMgbGlrZSB0aGUgZGljdCBjYW4gY2hhbmdlIGR1cmluZyBpdGVyYXRpb24gLQorICAgICAg
ICAgICAgIyBiZSBjYXJlZnVsIG5vdCB0byByZW1vdmUgdGhlIGxpc3QoKSB3aXRob3V0IGNvbnNp
ZGVyYXRpb24uCiAgICAgICAgICAgICBmb3IgbmFtZSwgb2JqIGluIGxpc3QoZGljLml0ZW1zKCkp
OgorICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gSUdOT1JFRF9BVFRSSUJVVEVTOgorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gc2VlbjoK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBzZWVuW25hbWVd
ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYuX21ha2VpdGVtKG5hbWUsIG9iaikK
KyAgICAgICAgICAgICAgICBzZWVuLmFkZChuYW1lKQorICAgICAgICAgICAgICAgIHJlcyA9IGlo
b29rLnB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oCisgICAgICAgICAgICAgICAgICAgIGNvbGxl
Y3Rvcj1zZWxmLCBuYW1lPW5hbWUsIG9iaj1vYmoKKyAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgaWYgcmVzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVzLCBsaXN0KToKLSAgICAgICAgICAg
ICAgICAgICAgcmVzID0gW3Jlc10KLSAgICAgICAgICAgICAgICB2YWx1ZXMuZXh0ZW5kKHJlcykK
LSAgICAgICAgdmFsdWVzLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnJlcG9ydGluZm8oKVs6
Ml0pCi0gICAgICAgIHJldHVybiB2YWx1ZXMKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFu
Y2UocmVzLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmV4dGVuZChyZXMpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChy
ZXMpCiAKLSAgICBkZWYgbWFrZWl0ZW0oc2VsZiwgbmFtZSwgb2JqKToKLSAgICAgICAgd2Fybmlu
Z3Mud2FybihkZXByZWNhdGVkLkNPTExFQ1RPUl9NQUtFSVRFTSwgc3RhY2tsZXZlbD0yKQotICAg
ICAgICBzZWxmLl9tYWtlaXRlbShuYW1lLCBvYmopCisgICAgICAgIGRlZiBzb3J0X2tleShpdGVt
KToKKyAgICAgICAgICAgIGZzcGF0aCwgbGluZW5vLCBfID0gaXRlbS5yZXBvcnRpbmZvKCkKKyAg
ICAgICAgICAgIHJldHVybiAoc3RyKGZzcGF0aCksIGxpbmVubykKIAotICAgIGRlZiBfbWFrZWl0
ZW0oc2VsZiwgbmFtZSwgb2JqKToKLSAgICAgICAgIyBhc3NlcnQgc2VsZi5paG9vay5mc3BhdGgg
PT0gc2VsZi5mc3BhdGgsIHNlbGYKLSAgICAgICAgcmV0dXJuIHNlbGYuaWhvb2sucHl0ZXN0X3B5
Y29sbGVjdF9tYWtlaXRlbShjb2xsZWN0b3I9c2VsZiwgbmFtZT1uYW1lLCBvYmo9b2JqKQorICAg
ICAgICB2YWx1ZXMuc29ydChrZXk9c29ydF9rZXkpCisgICAgICAgIHJldHVybiB2YWx1ZXMKIAot
ICAgIGRlZiBfZ2VuZnVuY3Rpb25zKHNlbGYsIG5hbWUsIGZ1bmNvYmopOgotICAgICAgICBtb2R1
bGUgPSBzZWxmLmdldHBhcmVudChNb2R1bGUpLm9iagorICAgIGRlZiBfZ2VuZnVuY3Rpb25zKHNl
bGYsIG5hbWU6IHN0ciwgZnVuY29iaikgLT4gSXRlcmF0b3JbIkZ1bmN0aW9uIl06CisgICAgICAg
IG1vZHVsZWNvbCA9IHNlbGYuZ2V0cGFyZW50KE1vZHVsZSkKKyAgICAgICAgYXNzZXJ0IG1vZHVs
ZWNvbCBpcyBub3QgTm9uZQorICAgICAgICBtb2R1bGUgPSBtb2R1bGVjb2wub2JqCiAgICAgICAg
IGNsc2NvbCA9IHNlbGYuZ2V0cGFyZW50KENsYXNzKQogICAgICAgICBjbHMgPSBjbHNjb2wgYW5k
IGNsc2NvbC5vYmogb3IgTm9uZQotICAgICAgICB0cmFuc2Zlcl9tYXJrZXJzKGZ1bmNvYmosIGNs
cywgbW9kdWxlKQogICAgICAgICBmbSA9IHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKIAot
ICAgICAgICBkZWZpbml0aW9uID0gRnVuY3Rpb25EZWZpbml0aW9uKG5hbWU9bmFtZSwgcGFyZW50
PXNlbGYsIGNhbGxvYmo9ZnVuY29iaikKLSAgICAgICAgZml4dHVyZWluZm8gPSBmbS5nZXRmaXh0
dXJlaW5mbyhkZWZpbml0aW9uLCBmdW5jb2JqLCBjbHMpCisgICAgICAgIGRlZmluaXRpb24gPSBG
dW5jdGlvbkRlZmluaXRpb24uZnJvbV9wYXJlbnQoc2VsZiwgbmFtZT1uYW1lLCBjYWxsb2JqPWZ1
bmNvYmopCisgICAgICAgIGZpeHR1cmVpbmZvID0gZGVmaW5pdGlvbi5fZml4dHVyZWluZm8KIAog
ICAgICAgICBtZXRhZnVuYyA9IE1ldGFmdW5jKAogICAgICAgICAgICAgZGVmaW5pdGlvbiwgZml4
dHVyZWluZm8sIHNlbGYuY29uZmlnLCBjbHM9Y2xzLCBtb2R1bGU9bW9kdWxlCkBAIC00MjIsMjcg
KzQ2NywyNyBAQCBjbGFzcyBQeUNvbGxlY3RvcihQeW9iak1peGluLCBub2Rlcy5Db2xsZWN0b3Ip
OgogICAgICAgICBtZXRob2RzID0gW10KICAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICJweXRl
c3RfZ2VuZXJhdGVfdGVzdHMiKToKICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1vZHVsZS5w
eXRlc3RfZ2VuZXJhdGVfdGVzdHMpCi0gICAgICAgIGlmIGhhc2F0dHIoY2xzLCAicHl0ZXN0X2dl
bmVyYXRlX3Rlc3RzIik6CisgICAgICAgIGlmIGNscyBpcyBub3QgTm9uZSBhbmQgaGFzYXR0cihj
bHMsICJweXRlc3RfZ2VuZXJhdGVfdGVzdHMiKToKICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5k
KGNscygpLnB5dGVzdF9nZW5lcmF0ZV90ZXN0cykKLSAgICAgICAgaWYgbWV0aG9kczoKLSAgICAg
ICAgICAgIHNlbGYuaWhvb2sucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzLmNhbGxfZXh0cmEoCi0gICAg
ICAgICAgICAgICAgbWV0aG9kcywgZGljdChtZXRhZnVuYz1tZXRhZnVuYykKLSAgICAgICAgICAg
ICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaWhvb2sucHl0ZXN0X2dlbmVyYXRl
X3Rlc3RzKG1ldGFmdW5jPW1ldGFmdW5jKQogCi0gICAgICAgIEZ1bmN0aW9uID0gc2VsZi5fZ2V0
Y3VzdG9tY2xhc3MoIkZ1bmN0aW9uIikKKyAgICAgICAgc2VsZi5paG9vay5weXRlc3RfZ2VuZXJh
dGVfdGVzdHMuY2FsbF9leHRyYShtZXRob2RzLCBkaWN0KG1ldGFmdW5jPW1ldGFmdW5jKSkKKwog
ICAgICAgICBpZiBub3QgbWV0YWZ1bmMuX2NhbGxzOgotICAgICAgICAgICAgeWllbGQgRnVuY3Rp
b24obmFtZSwgcGFyZW50PXNlbGYsIGZpeHR1cmVpbmZvPWZpeHR1cmVpbmZvKQorICAgICAgICAg
ICAgeWllbGQgRnVuY3Rpb24uZnJvbV9wYXJlbnQoc2VsZiwgbmFtZT1uYW1lLCBmaXh0dXJlaW5m
bz1maXh0dXJlaW5mbykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgYWRkIGZ1bmNhcmdz
KCkgYXMgZml4dHVyZWRlZnMgdG8gZml4dHVyZWluZm8uYXJnMmZpeHR1cmVkZWZzCisgICAgICAg
ICAgICAjIEFkZCBmdW5jYXJncygpIGFzIGZpeHR1cmVkZWZzIHRvIGZpeHR1cmVpbmZvLmFyZzJm
aXh0dXJlZGVmcy4KICAgICAgICAgICAgIGZpeHR1cmVzLmFkZF9mdW5jYXJnX3BzZXVkb19maXh0
dXJlX2RlZihzZWxmLCBtZXRhZnVuYywgZm0pCiAKKyAgICAgICAgICAgICMgQWRkX2Z1bmNhcmdf
cHNldWRvX2ZpeHR1cmVfZGVmIG1heSBoYXZlIHNoYWRvd2VkIHNvbWUgZml4dHVyZXMKKyAgICAg
ICAgICAgICMgd2l0aCBkaXJlY3QgcGFyYW1ldHJpemF0aW9uLCBzbyBtYWtlIHN1cmUgd2UgdXBk
YXRlIHdoYXQgdGhlCisgICAgICAgICAgICAjIGZ1bmN0aW9uIHJlYWxseSBuZWVkcy4KKyAgICAg
ICAgICAgIGZpeHR1cmVpbmZvLnBydW5lX2RlcGVuZGVuY3lfdHJlZSgpCisKICAgICAgICAgICAg
IGZvciBjYWxsc3BlYyBpbiBtZXRhZnVuYy5fY2FsbHM6Ci0gICAgICAgICAgICAgICAgc3VibmFt
ZSA9ICIlc1slc10iICUgKG5hbWUsIGNhbGxzcGVjLmlkKQotICAgICAgICAgICAgICAgIHlpZWxk
IEZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHN1Ym5hbWUgPSAie31be31dIi5mb3JtYXQobmFt
ZSwgY2FsbHNwZWMuaWQpCisgICAgICAgICAgICAgICAgeWllbGQgRnVuY3Rpb24uZnJvbV9wYXJl
bnQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgIG5hbWU9
c3VibmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYsCiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxzcGVjPWNhbGxzcGVjLAogICAgICAgICAgICAgICAgICAgICBjYWxsb2JqPWZ1
bmNvYmosCiAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVpbmZvPWZpeHR1cmVpbmZvLApAQCAt
NDUyLDI2ICs0OTcsODMgQEAgY2xhc3MgUHlDb2xsZWN0b3IoUHlvYmpNaXhpbiwgbm9kZXMuQ29s
bGVjdG9yKToKIAogCiBjbGFzcyBNb2R1bGUobm9kZXMuRmlsZSwgUHlDb2xsZWN0b3IpOgotICAg
ICIiIiBDb2xsZWN0b3IgZm9yIHRlc3QgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAiIiIKKyAgICAi
IiJDb2xsZWN0b3IgZm9yIHRlc3QgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiIiIgogCiAgICAgZGVm
IF9nZXRvYmooc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9pbXBvcnR0ZXN0bW9kdWxlKCkK
IAotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgorICAgIGRlZiBjb2xsZWN0KHNlbGYpIC0+IEl0ZXJh
YmxlW1VuaW9uW25vZGVzLkl0ZW0sIG5vZGVzLkNvbGxlY3Rvcl1dOgorICAgICAgICBzZWxmLl9p
bmplY3Rfc2V0dXBfbW9kdWxlX2ZpeHR1cmUoKQorICAgICAgICBzZWxmLl9pbmplY3Rfc2V0dXBf
ZnVuY3Rpb25fZml4dHVyZSgpCiAgICAgICAgIHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIu
cGFyc2VmYWN0b3JpZXMoc2VsZikKLSAgICAgICAgcmV0dXJuIHN1cGVyKE1vZHVsZSwgc2VsZiku
Y29sbGVjdCgpCisgICAgICAgIHJldHVybiBzdXBlcigpLmNvbGxlY3QoKQorCisgICAgZGVmIF9p
bmplY3Rfc2V0dXBfbW9kdWxlX2ZpeHR1cmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiSW5q
ZWN0IGEgaGlkZGVuIGF1dG91c2UsIG1vZHVsZSBzY29wZWQgZml4dHVyZSBpbnRvIHRoZSBjb2xs
ZWN0ZWQgbW9kdWxlIG9iamVjdAorICAgICAgICB0aGF0IGludm9rZXMgc2V0VXBNb2R1bGUvdGVh
ckRvd25Nb2R1bGUgaWYgZWl0aGVyIG9yIGJvdGggYXJlIGF2YWlsYWJsZS4KKworICAgICAgICBV
c2luZyBhIGZpeHR1cmUgdG8gaW52b2tlIHRoaXMgbWV0aG9kcyBlbnN1cmVzIHdlIHBsYXkgbmlj
ZWx5IGFuZCB1bnN1cnByaXNpbmdseSB3aXRoCisgICAgICAgIG90aGVyIGZpeHR1cmVzICgjNTE3
KS4KKyAgICAgICAgIiIiCisgICAgICAgIHNldHVwX21vZHVsZSA9IF9nZXRfZmlyc3Rfbm9uX2Zp
eHR1cmVfZnVuYygKKyAgICAgICAgICAgIHNlbGYub2JqLCAoInNldFVwTW9kdWxlIiwgInNldHVw
X21vZHVsZSIpCisgICAgICAgICkKKyAgICAgICAgdGVhcmRvd25fbW9kdWxlID0gX2dldF9maXJz
dF9ub25fZml4dHVyZV9mdW5jKAorICAgICAgICAgICAgc2VsZi5vYmosICgidGVhckRvd25Nb2R1
bGUiLCAidGVhcmRvd25fbW9kdWxlIikKKyAgICAgICAgKQorCisgICAgICAgIGlmIHNldHVwX21v
ZHVsZSBpcyBOb25lIGFuZCB0ZWFyZG93bl9tb2R1bGUgaXMgTm9uZToKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIEBmaXh0dXJlcy5maXh0dXJlKGF1dG91c2U9VHJ1ZSwgc2NvcGU9Im1v
ZHVsZSIpCisgICAgICAgIGRlZiB4dW5pdF9zZXR1cF9tb2R1bGVfZml4dHVyZShyZXF1ZXN0KSAt
PiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgICAgICBpZiBzZXR1cF9tb2R1
bGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9vcHRpb25hbF9hcmd1
bWVudChzZXR1cF9tb2R1bGUsIHJlcXVlc3QubW9kdWxlKQorICAgICAgICAgICAgeWllbGQKKyAg
ICAgICAgICAgIGlmIHRlYXJkb3duX21vZHVsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBfY2FsbF93aXRoX29wdGlvbmFsX2FyZ3VtZW50KHRlYXJkb3duX21vZHVsZSwgcmVxdWVzdC5t
b2R1bGUpCisKKyAgICAgICAgc2VsZi5vYmouX19weXRlc3Rfc2V0dXBfbW9kdWxlID0geHVuaXRf
c2V0dXBfbW9kdWxlX2ZpeHR1cmUKKworICAgIGRlZiBfaW5qZWN0X3NldHVwX2Z1bmN0aW9uX2Zp
eHR1cmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiSW5qZWN0IGEgaGlkZGVuIGF1dG91c2Us
IGZ1bmN0aW9uIHNjb3BlZCBmaXh0dXJlIGludG8gdGhlIGNvbGxlY3RlZCBtb2R1bGUgb2JqZWN0
CisgICAgICAgIHRoYXQgaW52b2tlcyBzZXR1cF9mdW5jdGlvbi90ZWFyZG93bl9mdW5jdGlvbiBp
ZiBlaXRoZXIgb3IgYm90aCBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgIFVzaW5nIGEgZml4dHVy
ZSB0byBpbnZva2UgdGhpcyBtZXRob2RzIGVuc3VyZXMgd2UgcGxheSBuaWNlbHkgYW5kIHVuc3Vy
cHJpc2luZ2x5IHdpdGgKKyAgICAgICAgb3RoZXIgZml4dHVyZXMgKCM1MTcpLgorICAgICAgICAi
IiIKKyAgICAgICAgc2V0dXBfZnVuY3Rpb24gPSBfZ2V0X2ZpcnN0X25vbl9maXh0dXJlX2Z1bmMo
c2VsZi5vYmosICgic2V0dXBfZnVuY3Rpb24iLCkpCisgICAgICAgIHRlYXJkb3duX2Z1bmN0aW9u
ID0gX2dldF9maXJzdF9ub25fZml4dHVyZV9mdW5jKAorICAgICAgICAgICAgc2VsZi5vYmosICgi
dGVhcmRvd25fZnVuY3Rpb24iLCkKKyAgICAgICAgKQorICAgICAgICBpZiBzZXR1cF9mdW5jdGlv
biBpcyBOb25lIGFuZCB0ZWFyZG93bl9mdW5jdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgQGZpeHR1cmVzLmZpeHR1cmUoYXV0b3VzZT1UcnVlLCBzY29wZT0iZnVu
Y3Rpb24iKQorICAgICAgICBkZWYgeHVuaXRfc2V0dXBfZnVuY3Rpb25fZml4dHVyZShyZXF1ZXN0
KSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAgICAgICAgICBpZiByZXF1ZXN0
Lmluc3RhbmNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgaW4gdGhpcyBjYXNlIHdl
IGFyZSBib3VuZCB0byBhbiBpbnN0YW5jZSwgc28gd2UgbmVlZCB0byBsZXQKKyAgICAgICAgICAg
ICAgICAjIHNldHVwX21ldGhvZCBoYW5kbGUgdGhpcworICAgICAgICAgICAgICAgIHlpZWxkCisg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpZiBzZXR1cF9mdW5jdGlvbiBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBfY2FsbF93aXRoX29wdGlvbmFsX2FyZ3VtZW50KHNl
dHVwX2Z1bmN0aW9uLCByZXF1ZXN0LmZ1bmN0aW9uKQorICAgICAgICAgICAgeWllbGQKKyAgICAg
ICAgICAgIGlmIHRlYXJkb3duX2Z1bmN0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
IF9jYWxsX3dpdGhfb3B0aW9uYWxfYXJndW1lbnQodGVhcmRvd25fZnVuY3Rpb24sIHJlcXVlc3Qu
ZnVuY3Rpb24pCisKKyAgICAgICAgc2VsZi5vYmouX19weXRlc3Rfc2V0dXBfZnVuY3Rpb24gPSB4
dW5pdF9zZXR1cF9mdW5jdGlvbl9maXh0dXJlCiAKICAgICBkZWYgX2ltcG9ydHRlc3Rtb2R1bGUo
c2VsZik6Ci0gICAgICAgICMgd2UgYXNzdW1lIHdlIGFyZSBvbmx5IGNhbGxlZCBvbmNlIHBlciBt
b2R1bGUKKyAgICAgICAgIyBXZSBhc3N1bWUgd2UgYXJlIG9ubHkgY2FsbGVkIG9uY2UgcGVyIG1v
ZHVsZS4KICAgICAgICAgaW1wb3J0bW9kZSA9IHNlbGYuY29uZmlnLmdldG9wdGlvbigiLS1pbXBv
cnQtbW9kZSIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZCA9IHNlbGYuZnNwYXRoLnB5
aW1wb3J0KGVuc3VyZXN5c3BhdGg9aW1wb3J0bW9kZSkKLSAgICAgICAgZXhjZXB0IFN5bnRheEVy
cm9yOgorICAgICAgICAgICAgbW9kID0gaW1wb3J0X3BhdGgoc2VsZi5mc3BhdGgsIG1vZGU9aW1w
b3J0bW9kZSkKKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGU6CiAgICAgICAgICAgICBy
YWlzZSBzZWxmLkNvbGxlY3RFcnJvcigKLSAgICAgICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLkV4
Y2VwdGlvbkluZm8oKS5nZXRyZXByKHN0eWxlPSJzaG9ydCIpCi0gICAgICAgICAgICApCi0gICAg
ICAgIGV4Y2VwdCBzZWxmLmZzcGF0aC5JbXBvcnRNaXNtYXRjaEVycm9yOgotICAgICAgICAgICAg
ZSA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgICAgICAgICAgRXhjZXB0aW9uSW5mby5mcm9t
X2N1cnJlbnQoKS5nZXRyZXByKHN0eWxlPSJzaG9ydCIpCisgICAgICAgICAgICApIGZyb20gZQor
ICAgICAgICBleGNlcHQgSW1wb3J0UGF0aE1pc21hdGNoRXJyb3IgYXMgZToKICAgICAgICAgICAg
IHJhaXNlIHNlbGYuQ29sbGVjdEVycm9yKAogICAgICAgICAgICAgICAgICJpbXBvcnQgZmlsZSBt
aXNtYXRjaDpcbiIKICAgICAgICAgICAgICAgICAiaW1wb3J0ZWQgbW9kdWxlICVyIGhhcyB0aGlz
IF9fZmlsZV9fIGF0dHJpYnV0ZTpcbiIKQEAgLTQ4MCwyNCArNTgyLDI0IEBAIGNsYXNzIE1vZHVs
ZShub2Rlcy5GaWxlLCBQeUNvbGxlY3Rvcik6CiAgICAgICAgICAgICAgICAgIiAgJXNcbiIKICAg
ICAgICAgICAgICAgICAiSElOVDogcmVtb3ZlIF9fcHljYWNoZV9fIC8gLnB5YyBmaWxlcyBhbmQv
b3IgdXNlIGEgIgogICAgICAgICAgICAgICAgICJ1bmlxdWUgYmFzZW5hbWUgZm9yIHlvdXIgdGVz
dCBmaWxlIG1vZHVsZXMiICUgZS5hcmdzCi0gICAgICAgICAgICApCi0gICAgICAgIGV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgICAgICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBF
eGNlcHRpb25JbmZvCi0KLSAgICAgICAgICAgIGV4Y19pbmZvID0gRXhjZXB0aW9uSW5mbygpCisg
ICAgICAgICAgICApIGZyb20gZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKKyAg
ICAgICAgICAgIGV4Y19pbmZvID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAgICAg
ICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3NlIikgPCAyOgogICAgICAgICAg
ICAgICAgIGV4Y19pbmZvLnRyYWNlYmFjayA9IGV4Y19pbmZvLnRyYWNlYmFjay5maWx0ZXIoZmls
dGVyX3RyYWNlYmFjaykKLSAgICAgICAgICAgIGV4Y19yZXByID0gZXhjX2luZm8uZ2V0cmVwcigK
LSAgICAgICAgICAgICAgICBzdHlsZT0ic2hvcnQiCi0gICAgICAgICAgICApIGlmIGV4Y19pbmZv
LnRyYWNlYmFjayBlbHNlIGV4Y19pbmZvLmV4Y29ubHkoKQotICAgICAgICAgICAgZm9ybWF0dGVk
X3RiID0gc2FmZV9zdHIoZXhjX3JlcHIpCisgICAgICAgICAgICBleGNfcmVwciA9ICgKKyAgICAg
ICAgICAgICAgICBleGNfaW5mby5nZXRyZXByKHN0eWxlPSJzaG9ydCIpCisgICAgICAgICAgICAg
ICAgaWYgZXhjX2luZm8udHJhY2ViYWNrCisgICAgICAgICAgICAgICAgZWxzZSBleGNfaW5mby5l
eGNvbmx5KCkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvcm1hdHRlZF90YiA9IHN0cihl
eGNfcmVwcikKICAgICAgICAgICAgIHJhaXNlIHNlbGYuQ29sbGVjdEVycm9yKAogICAgICAgICAg
ICAgICAgICJJbXBvcnRFcnJvciB3aGlsZSBpbXBvcnRpbmcgdGVzdCBtb2R1bGUgJ3tmc3BhdGh9
Jy5cbiIKICAgICAgICAgICAgICAgICAiSGludDogbWFrZSBzdXJlIHlvdXIgdGVzdCBtb2R1bGVz
L3BhY2thZ2VzIGhhdmUgdmFsaWQgUHl0aG9uIG5hbWVzLlxuIgogICAgICAgICAgICAgICAgICJU
cmFjZWJhY2s6XG4iCiAgICAgICAgICAgICAgICAgInt0cmFjZWJhY2t9Ii5mb3JtYXQoZnNwYXRo
PXNlbGYuZnNwYXRoLCB0cmFjZWJhY2s9Zm9ybWF0dGVkX3RiKQotICAgICAgICAgICAgKQotICAg
ICAgICBleGNlcHQgX3B5dGVzdC5ydW5uZXIuU2tpcHBlZCBhcyBlOgorICAgICAgICAgICAgKSBm
cm9tIGUKKyAgICAgICAgZXhjZXB0IHNraXAuRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBp
ZiBlLmFsbG93X21vZHVsZV9sZXZlbDoKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5Db2xsZWN0RXJyb3IoCkBAIC01MDUsMjQzICs2MDcsMjc3IEBAIGNsYXNz
IE1vZHVsZShub2Rlcy5GaWxlLCBQeUNvbGxlY3Rvcik6CiAgICAgICAgICAgICAgICAgIlRvIGRl
Y29yYXRlIGEgdGVzdCBmdW5jdGlvbiwgdXNlIHRoZSBAcHl0ZXN0Lm1hcmsuc2tpcCAiCiAgICAg
ICAgICAgICAgICAgIm9yIEBweXRlc3QubWFyay5za2lwaWYgZGVjb3JhdG9ycyBpbnN0ZWFkLCBh
bmQgdG8gc2tpcCBhICIKICAgICAgICAgICAgICAgICAibW9kdWxlIHVzZSBgcHl0ZXN0bWFyayA9
IHB5dGVzdC5tYXJrLntza2lwLHNraXBpZn0uIgotICAgICAgICAgICAgKQorICAgICAgICAgICAg
KSBmcm9tIGUKICAgICAgICAgc2VsZi5jb25maWcucGx1Z2lubWFuYWdlci5jb25zaWRlcl9tb2R1
bGUobW9kKQogICAgICAgICByZXR1cm4gbW9kCiAKLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAg
ICAgIHNldHVwX21vZHVsZSA9IF9nZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24oc2VsZi5vYmosICJz
ZXRVcE1vZHVsZSIpCi0gICAgICAgIGlmIHNldHVwX21vZHVsZSBpcyBOb25lOgotICAgICAgICAg
ICAgc2V0dXBfbW9kdWxlID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihzZWxmLm9iaiwgInNl
dHVwX21vZHVsZSIpCisKK2NsYXNzIFBhY2thZ2UoTW9kdWxlKToKKyAgICBkZWYgX19pbml0X18o
CisgICAgICAgIHNlbGYsCisgICAgICAgIGZzcGF0aDogcHkucGF0aC5sb2NhbCwKKyAgICAgICAg
cGFyZW50OiBub2Rlcy5Db2xsZWN0b3IsCisgICAgICAgICMgTk9URTogZm9sbG93aW5nIGFyZ3Mg
YXJlIHVudXNlZDoKKyAgICAgICAgY29uZmlnPU5vbmUsCisgICAgICAgIHNlc3Npb249Tm9uZSwK
KyAgICAgICAgbm9kZWlkPU5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAjIE5PVEU6IENv
dWxkIGJlIGp1c3QgdGhlIGZvbGxvd2luZywgYnV0IGtlcHQgYXMtaXMgZm9yIGNvbXBhdC4KKyAg
ICAgICAgIyBub2Rlcy5GU0NvbGxlY3Rvci5fX2luaXRfXyhzZWxmLCBmc3BhdGgsIHBhcmVudD1w
YXJlbnQpCisgICAgICAgIHNlc3Npb24gPSBwYXJlbnQuc2Vzc2lvbgorICAgICAgICBub2Rlcy5G
U0NvbGxlY3Rvci5fX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIGZzcGF0aCwgcGFyZW50PXBh
cmVudCwgY29uZmlnPWNvbmZpZywgc2Vzc2lvbj1zZXNzaW9uLCBub2RlaWQ9bm9kZWlkCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5uYW1lID0gb3MucGF0aC5iYXNlbmFtZShzdHIoZnNwYXRoLmRp
cm5hbWUpKQorCisgICAgZGVmIHNldHVwKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICMgTm90IHVz
aW5nIGZpeHR1cmVzIHRvIGNhbGwgc2V0dXBfbW9kdWxlIGhlcmUgYmVjYXVzZSBhdXRvdXNlIGZp
eHR1cmVzCisgICAgICAgICMgZnJvbSBwYWNrYWdlcyBhcmUgbm90IGNhbGxlZCBhdXRvbWF0aWNh
bGx5ICgjNDA4NSkuCisgICAgICAgIHNldHVwX21vZHVsZSA9IF9nZXRfZmlyc3Rfbm9uX2ZpeHR1
cmVfZnVuYygKKyAgICAgICAgICAgIHNlbGYub2JqLCAoInNldFVwTW9kdWxlIiwgInNldHVwX21v
ZHVsZSIpCisgICAgICAgICkKICAgICAgICAgaWYgc2V0dXBfbW9kdWxlIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgc2V0dXBfbW9kdWxlKCkKKyAgICAgICAgICAgIF9jYWxsX3dpdGhfb3B0aW9u
YWxfYXJndW1lbnQoc2V0dXBfbW9kdWxlLCBzZWxmLm9iaikKIAotICAgICAgICB0ZWFyZG93bl9t
b2R1bGUgPSBfZ2V0X3h1bml0X3NldHVwX3RlYXJkb3duKHNlbGYub2JqLCAidGVhckRvd25Nb2R1
bGUiKQotICAgICAgICBpZiB0ZWFyZG93bl9tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIHRl
YXJkb3duX21vZHVsZSA9IF9nZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24oc2VsZi5vYmosICJ0ZWFy
ZG93bl9tb2R1bGUiKQorICAgICAgICB0ZWFyZG93bl9tb2R1bGUgPSBfZ2V0X2ZpcnN0X25vbl9m
aXh0dXJlX2Z1bmMoCisgICAgICAgICAgICBzZWxmLm9iaiwgKCJ0ZWFyRG93bk1vZHVsZSIsICJ0
ZWFyZG93bl9tb2R1bGUiKQorICAgICAgICApCiAgICAgICAgIGlmIHRlYXJkb3duX21vZHVsZSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuYWRkZmluYWxpemVyKHRlYXJkb3duX21vZHVs
ZSkKKyAgICAgICAgICAgIGZ1bmMgPSBwYXJ0aWFsKF9jYWxsX3dpdGhfb3B0aW9uYWxfYXJndW1l
bnQsIHRlYXJkb3duX21vZHVsZSwgc2VsZi5vYmopCisgICAgICAgICAgICBzZWxmLmFkZGZpbmFs
aXplcihmdW5jKQogCisgICAgZGVmIGdldGhvb2twcm94eShzZWxmLCBmc3BhdGg6IHB5LnBhdGgu
bG9jYWwpOgorICAgICAgICB3YXJuaW5ncy53YXJuKEZTQ09MTEVDVE9SX0dFVEhPT0tQUk9YWV9J
U0lOSVRQQVRILCBzdGFja2xldmVsPTIpCisgICAgICAgIHJldHVybiBzZWxmLnNlc3Npb24uZ2V0
aG9va3Byb3h5KGZzcGF0aCkKIAotZGVmIF9nZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24oaG9sZGVy
LCBhdHRyX25hbWUsIHBhcmFtX29iaj1Ob25lKToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBjYWxs
YWJsZSB0byBwZXJmb3JtIHh1bml0LXN0eWxlIHNldHVwIG9yIHRlYXJkb3duIGlmCi0gICAgdGhl
IGZ1bmN0aW9uIGV4aXN0cyBpbiB0aGUgYGBob2xkZXJgYCBvYmplY3QuCi0gICAgVGhlIGBgcGFy
YW1fb2JqYGAgcGFyYW1ldGVyIGlzIHRoZSBwYXJhbWV0ZXIgd2hpY2ggd2lsbCBiZSBwYXNzZWQg
dG8gdGhlIGZ1bmN0aW9uCi0gICAgd2hlbiB0aGUgY2FsbGFibGUgaXMgY2FsbGVkIHdpdGhvdXQg
YXJndW1lbnRzLCBkZWZhdWx0cyB0byB0aGUgYGBob2xkZXJgYCBvYmplY3QuCi0gICAgUmV0dXJu
IGBgTm9uZWBgIGlmIGEgc3VpdGFibGUgY2FsbGFibGUgaXMgbm90IGZvdW5kLgotICAgICIiIgot
ICAgIHBhcmFtX29iaiA9IHBhcmFtX29iaiBpZiBwYXJhbV9vYmogaXMgbm90IE5vbmUgZWxzZSBo
b2xkZXIKLSAgICByZXN1bHQgPSBfZ2V0X3h1bml0X2Z1bmMoaG9sZGVyLCBhdHRyX25hbWUpCi0g
ICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgotICAgICAgICBhcmdfY291bnQgPSByZXN1bHQuX19j
b2RlX18uY29fYXJnY291bnQKLSAgICAgICAgaWYgaW5zcGVjdC5pc21ldGhvZChyZXN1bHQpOgot
ICAgICAgICAgICAgYXJnX2NvdW50IC09IDEKLSAgICAgICAgaWYgYXJnX2NvdW50OgotICAgICAg
ICAgICAgcmV0dXJuIGxhbWJkYTogcmVzdWx0KHBhcmFtX29iaikKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBkZWYgaXNpbml0cGF0aChzZWxmLCBwYXRoOiBw
eS5wYXRoLmxvY2FsKSAtPiBib29sOgorICAgICAgICB3YXJuaW5ncy53YXJuKEZTQ09MTEVDVE9S
X0dFVEhPT0tQUk9YWV9JU0lOSVRQQVRILCBzdGFja2xldmVsPTIpCisgICAgICAgIHJldHVybiBz
ZWxmLnNlc3Npb24uaXNpbml0cGF0aChwYXRoKQorCisgICAgZGVmIF9yZWN1cnNlKHNlbGYsIGRp
cmVudHJ5OiAib3MuRGlyRW50cnlbc3RyXSIpIC0+IGJvb2w6CisgICAgICAgIGlmIGRpcmVudHJ5
Lm5hbWUgPT0gIl9fcHljYWNoZV9fIjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICBwYXRoID0gcHkucGF0aC5sb2NhbChkaXJlbnRyeS5wYXRoKQorICAgICAgICBpaG9vayA9IHNl
bGYuc2Vzc2lvbi5nZXRob29rcHJveHkocGF0aC5kaXJwYXRoKCkpCisgICAgICAgIGlmIGlob29r
LnB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoPXBhdGgsIGNvbmZpZz1zZWxmLmNvbmZpZyk6Cisg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgbm9yZWN1cnNlcGF0dGVybnMgPSBzZWxm
LmNvbmZpZy5nZXRpbmkoIm5vcmVjdXJzZWRpcnMiKQorICAgICAgICBpZiBhbnkocGF0aC5jaGVj
ayhmbm1hdGNoPXBhdCkgZm9yIHBhdCBpbiBub3JlY3Vyc2VwYXR0ZXJucyk6CisgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfY29sbGVjdGZp
bGUoCisgICAgICAgIHNlbGYsIHBhdGg6IHB5LnBhdGgubG9jYWwsIGhhbmRsZV9kdXBlczogYm9v
bCA9IFRydWUKKyAgICApIC0+IHR5cGluZy5TZXF1ZW5jZVtub2Rlcy5Db2xsZWN0b3JdOgorICAg
ICAgICBhc3NlcnQgKAorICAgICAgICAgICAgcGF0aC5pc2ZpbGUoKQorICAgICAgICApLCAieyFy
fSBpcyBub3QgYSBmaWxlIChpc2Rpcj17IXJ9LCBleGlzdHM9eyFyfSwgaXNsaW5rPXshcn0pIi5m
b3JtYXQoCisgICAgICAgICAgICBwYXRoLCBwYXRoLmlzZGlyKCksIHBhdGguZXhpc3RzKCksIHBh
dGguaXNsaW5rKCkKKyAgICAgICAgKQorICAgICAgICBpaG9vayA9IHNlbGYuc2Vzc2lvbi5nZXRo
b29rcHJveHkocGF0aCkKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vzc2lvbi5pc2luaXRwYXRoKHBh
dGgpOgorICAgICAgICAgICAgaWYgaWhvb2sucHl0ZXN0X2lnbm9yZV9jb2xsZWN0KHBhdGg9cGF0
aCwgY29uZmlnPXNlbGYuY29uZmlnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKworICAg
ICAgICBpZiBoYW5kbGVfZHVwZXM6CisgICAgICAgICAgICBrZWVwZHVwbGljYXRlcyA9IHNlbGYu
Y29uZmlnLmdldG9wdGlvbigia2VlcGR1cGxpY2F0ZXMiKQorICAgICAgICAgICAgaWYgbm90IGtl
ZXBkdXBsaWNhdGVzOgorICAgICAgICAgICAgICAgIGR1cGxpY2F0ZV9wYXRocyA9IHNlbGYuY29u
ZmlnLnBsdWdpbm1hbmFnZXIuX2R1cGxpY2F0ZXBhdGhzCisgICAgICAgICAgICAgICAgaWYgcGF0
aCBpbiBkdXBsaWNhdGVfcGF0aHM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZV9wYXRocy5h
ZGQocGF0aCkKKworICAgICAgICByZXR1cm4gaWhvb2sucHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRo
PXBhdGgsIHBhcmVudD1zZWxmKSAgIyB0eXBlOiBpZ25vcmVbbm8tYW55LXJldHVybl0KKworICAg
IGRlZiBjb2xsZWN0KHNlbGYpIC0+IEl0ZXJhYmxlW1VuaW9uW25vZGVzLkl0ZW0sIG5vZGVzLkNv
bGxlY3Rvcl1dOgorICAgICAgICB0aGlzX3BhdGggPSBzZWxmLmZzcGF0aC5kaXJwYXRoKCkKKyAg
ICAgICAgaW5pdF9tb2R1bGUgPSB0aGlzX3BhdGguam9pbigiX19pbml0X18ucHkiKQorICAgICAg
ICBpZiBpbml0X21vZHVsZS5jaGVjayhmaWxlPTEpIGFuZCBwYXRoX21hdGNoZXNfcGF0dGVybnMo
CisgICAgICAgICAgICBpbml0X21vZHVsZSwgc2VsZi5jb25maWcuZ2V0aW5pKCJweXRob25fZmls
ZXMiKQorICAgICAgICApOgorICAgICAgICAgICAgeWllbGQgTW9kdWxlLmZyb21fcGFyZW50KHNl
bGYsIGZzcGF0aD1pbml0X21vZHVsZSkKKyAgICAgICAgcGtnX3ByZWZpeGVzID0gc2V0KCkgICMg
dHlwZTogU2V0W3B5LnBhdGgubG9jYWxdCisgICAgICAgIGZvciBkaXJlbnRyeSBpbiB2aXNpdChz
dHIodGhpc19wYXRoKSwgcmVjdXJzZT1zZWxmLl9yZWN1cnNlKToKKyAgICAgICAgICAgIHBhdGgg
PSBweS5wYXRoLmxvY2FsKGRpcmVudHJ5LnBhdGgpCisKKyAgICAgICAgICAgICMgV2Ugd2lsbCB2
aXNpdCBvdXIgb3duIF9faW5pdF9fLnB5IGZpbGUsIGluIHdoaWNoIGNhc2Ugd2Ugc2tpcCBpdC4K
KyAgICAgICAgICAgIGlmIGRpcmVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICBpZiBk
aXJlbnRyeS5uYW1lID09ICJfX2luaXRfXy5weSIgYW5kIHBhdGguZGlycGF0aCgpID09IHRoaXNf
cGF0aDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGFydHNf
ID0gcGFydHMoZGlyZW50cnkucGF0aCkKKyAgICAgICAgICAgIGlmIGFueSgKKyAgICAgICAgICAg
ICAgICBzdHIocGtnX3ByZWZpeCkgaW4gcGFydHNfIGFuZCBwa2dfcHJlZml4LmpvaW4oIl9faW5p
dF9fLnB5IikgIT0gcGF0aAorICAgICAgICAgICAgICAgIGZvciBwa2dfcHJlZml4IGluIHBrZ19w
cmVmaXhlcworICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBpZiBkaXJlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJv
bSBzZWxmLl9jb2xsZWN0ZmlsZShwYXRoKQorICAgICAgICAgICAgZWxpZiBub3QgZGlyZW50cnku
aXNfZGlyKCk6CisgICAgICAgICAgICAgICAgIyBCcm9rZW4gc3ltbGluayBvciBpbnZhbGlkL21p
c3NpbmcgZmlsZS4KKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBw
YXRoLmpvaW4oIl9faW5pdF9fLnB5IikuY2hlY2soZmlsZT0xKToKKyAgICAgICAgICAgICAgICBw
a2dfcHJlZml4ZXMuYWRkKHBhdGgpCisKKworZGVmIF9jYWxsX3dpdGhfb3B0aW9uYWxfYXJndW1l
bnQoZnVuYywgYXJnKSAtPiBOb25lOgorICAgICIiIkNhbGwgdGhlIGdpdmVuIGZ1bmN0aW9uIHdp
dGggdGhlIGdpdmVuIGFyZ3VtZW50IGlmIGZ1bmMgYWNjZXB0cyBvbmUgYXJndW1lbnQsIG90aGVy
d2lzZQorICAgIGNhbGxzIGZ1bmMgd2l0aG91dCBhcmd1bWVudHMuIiIiCisgICAgYXJnX2NvdW50
ID0gZnVuYy5fX2NvZGVfXy5jb19hcmdjb3VudAorICAgIGlmIGluc3BlY3QuaXNtZXRob2QoZnVu
Yyk6CisgICAgICAgIGFyZ19jb3VudCAtPSAxCisgICAgaWYgYXJnX2NvdW50OgorICAgICAgICBm
dW5jKGFyZykKKyAgICBlbHNlOgorICAgICAgICBmdW5jKCkKIAogCi1kZWYgX2dldF94dW5pdF9m
dW5jKG9iaiwgbmFtZSk6CitkZWYgX2dldF9maXJzdF9ub25fZml4dHVyZV9mdW5jKG9iajogb2Jq
ZWN0LCBuYW1lczogSXRlcmFibGVbc3RyXSk6CiAgICAgIiIiUmV0dXJuIHRoZSBhdHRyaWJ1dGUg
ZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IHRvIGJlIHVzZWQgYXMgYSBzZXR1cC90ZWFyZG93bgotICAg
IHh1bml0LXN0eWxlIGZ1bmN0aW9uLCBidXQgb25seSBpZiBub3QgbWFya2VkIGFzIGEgZml4dHVy
ZSB0bwotICAgIGF2b2lkIGNhbGxpbmcgaXQgdHdpY2UuCi0gICAgIiIiCi0gICAgbWV0aCA9IGdl
dGF0dHIob2JqLCBuYW1lLCBOb25lKQotICAgIGlmIGZpeHR1cmVzLmdldGZpeHR1cmVtYXJrZXIo
bWV0aCkgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIG1ldGgKKyAgICB4dW5pdC1zdHlsZSBmdW5j
dGlvbiwgYnV0IG9ubHkgaWYgbm90IG1hcmtlZCBhcyBhIGZpeHR1cmUgdG8gYXZvaWQgY2FsbGlu
ZyBpdCB0d2ljZS4iIiIKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgbWV0aCA9IGdl
dGF0dHIob2JqLCBuYW1lLCBOb25lKQorICAgICAgICBpZiBtZXRoIGlzIG5vdCBOb25lIGFuZCBm
aXh0dXJlcy5nZXRmaXh0dXJlbWFya2VyKG1ldGgpIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1
cm4gbWV0aAogCiAKIGNsYXNzIENsYXNzKFB5Q29sbGVjdG9yKToKLSAgICAiIiIgQ29sbGVjdG9y
IGZvciB0ZXN0IG1ldGhvZHMuICIiIgorICAgICIiIkNvbGxlY3RvciBmb3IgdGVzdCBtZXRob2Rz
LiIiIgogCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGZyb21fcGFyZW50KGNscywgcGFyZW50LCAqLCBuYW1lLCBvYmo9Tm9uZSk6CisgICAgICAgICIi
IlRoZSBwdWJsaWMgY29uc3RydWN0b3IuIiIiCisgICAgICAgIHJldHVybiBzdXBlcigpLmZyb21f
cGFyZW50KG5hbWU9bmFtZSwgcGFyZW50PXBhcmVudCkKKworICAgIGRlZiBjb2xsZWN0KHNlbGYp
IC0+IEl0ZXJhYmxlW1VuaW9uW25vZGVzLkl0ZW0sIG5vZGVzLkNvbGxlY3Rvcl1dOgogICAgICAg
ICBpZiBub3Qgc2FmZV9nZXRhdHRyKHNlbGYub2JqLCAiX190ZXN0X18iLCBUcnVlKToKICAgICAg
ICAgICAgIHJldHVybiBbXQogICAgICAgICBpZiBoYXNpbml0KHNlbGYub2JqKToKKyAgICAgICAg
ICAgIGFzc2VydCBzZWxmLnBhcmVudCBpcyBub3QgTm9uZQogICAgICAgICAgICAgc2VsZi53YXJu
KAotICAgICAgICAgICAgICAgICJDMSIsCi0gICAgICAgICAgICAgICAgImNhbm5vdCBjb2xsZWN0
IHRlc3QgY2xhc3MgJXIgYmVjYXVzZSBpdCBoYXMgYSAiCi0gICAgICAgICAgICAgICAgIl9faW5p
dF9fIGNvbnN0cnVjdG9yIiAlIHNlbGYub2JqLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIFB5
dGVzdENvbGxlY3Rpb25XYXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbGxl
Y3QgdGVzdCBjbGFzcyAlciBiZWNhdXNlIGl0IGhhcyBhICIKKyAgICAgICAgICAgICAgICAgICAg
Il9faW5pdF9fIGNvbnN0cnVjdG9yIChmcm9tOiAlcykiCisgICAgICAgICAgICAgICAgICAgICUg
KHNlbGYub2JqLl9fbmFtZV9fLCBzZWxmLnBhcmVudC5ub2RlaWQpCisgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgKQogICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgIGVsaWYgaGFz
bmV3KHNlbGYub2JqKToKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudCBpcyBub3QgTm9u
ZQogICAgICAgICAgICAgc2VsZi53YXJuKAotICAgICAgICAgICAgICAgICJDMSIsCi0gICAgICAg
ICAgICAgICAgImNhbm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJXIgYmVjYXVzZSBpdCBoYXMgYSAi
Ci0gICAgICAgICAgICAgICAgIl9fbmV3X18gY29uc3RydWN0b3IiICUgc2VsZi5vYmouX19uYW1l
X18sCisgICAgICAgICAgICAgICAgUHl0ZXN0Q29sbGVjdGlvbldhcm5pbmcoCisgICAgICAgICAg
ICAgICAgICAgICJjYW5ub3QgY29sbGVjdCB0ZXN0IGNsYXNzICVyIGJlY2F1c2UgaXQgaGFzIGEg
IgorICAgICAgICAgICAgICAgICAgICAiX19uZXdfXyBjb25zdHJ1Y3RvciAoZnJvbTogJXMpIgor
ICAgICAgICAgICAgICAgICAgICAlIChzZWxmLm9iai5fX25hbWVfXywgc2VsZi5wYXJlbnQubm9k
ZWlkKQorICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAgICAgICAgICAgIHJldHVy
biBbXQotICAgICAgICByZXR1cm4gW3NlbGYuX2dldGN1c3RvbWNsYXNzKCJJbnN0YW5jZSIpKG5h
bWU9IigpIiwgcGFyZW50PXNlbGYpXQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBz
ZXR1cF9jbGFzcyA9IF9nZXRfeHVuaXRfZnVuYyhzZWxmLm9iaiwgInNldHVwX2NsYXNzIikKLSAg
ICAgICAgaWYgc2V0dXBfY2xhc3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cF9jbGFz
cyA9IGdldGF0dHIoc2V0dXBfY2xhc3MsICJpbV9mdW5jIiwgc2V0dXBfY2xhc3MpCi0gICAgICAg
ICAgICBzZXR1cF9jbGFzcyA9IGdldGF0dHIoc2V0dXBfY2xhc3MsICJfX2Z1bmNfXyIsIHNldHVw
X2NsYXNzKQotICAgICAgICAgICAgc2V0dXBfY2xhc3Moc2VsZi5vYmopCi0KLSAgICAgICAgZmlu
X2NsYXNzID0gZ2V0YXR0cihzZWxmLm9iaiwgInRlYXJkb3duX2NsYXNzIiwgTm9uZSkKLSAgICAg
ICAgaWYgZmluX2NsYXNzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmluX2NsYXNzID0gZ2V0
YXR0cihmaW5fY2xhc3MsICJpbV9mdW5jIiwgZmluX2NsYXNzKQotICAgICAgICAgICAgZmluX2Ns
YXNzID0gZ2V0YXR0cihmaW5fY2xhc3MsICJfX2Z1bmNfXyIsIGZpbl9jbGFzcykKLSAgICAgICAg
ICAgIHNlbGYuYWRkZmluYWxpemVyKGxhbWJkYTogZmluX2NsYXNzKHNlbGYub2JqKSkKIAorICAg
ICAgICBzZWxmLl9pbmplY3Rfc2V0dXBfY2xhc3NfZml4dHVyZSgpCisgICAgICAgIHNlbGYuX2lu
amVjdF9zZXR1cF9tZXRob2RfZml4dHVyZSgpCiAKLWNsYXNzIEluc3RhbmNlKFB5Q29sbGVjdG9y
KToKLSAgICBfQUxMT1dfTUFSS0VSUyA9IEZhbHNlICAjIGhhY2ssIGRlc3Ryb3kgbGF0ZXIKLSAg
ICAjIGluc3RhbmNlcyBzaGFyZSB0aGUgb2JqZWN0IHdpdGggdGhlaXIgcGFyZW50cyBpbiBhIHdh
eQotICAgICMgdGhhdCBkdXBsaWNhdGVzIG1hcmtlcnMgaW5zdGFuY2VzIGlmIG5vdCB0YWtlbiBv
dXQKLSAgICAjIGNhbiBiZSByZW1vdmVkIGF0IG5vZGUgc3RydWN1dHJlIHJlb3JnYW5pemF0aW9u
IHRpbWUKKyAgICAgICAgcmV0dXJuIFtJbnN0YW5jZS5mcm9tX3BhcmVudChzZWxmLCBuYW1lPSIo
KSIpXQogCi0gICAgZGVmIF9nZXRvYmooc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnBhcmVu
dC5vYmooKQorICAgIGRlZiBfaW5qZWN0X3NldHVwX2NsYXNzX2ZpeHR1cmUoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgIiIiSW5qZWN0IGEgaGlkZGVuIGF1dG91c2UsIGNsYXNzIHNjb3BlZCBmaXh0
dXJlIGludG8gdGhlIGNvbGxlY3RlZCBjbGFzcyBvYmplY3QKKyAgICAgICAgdGhhdCBpbnZva2Vz
IHNldHVwX2NsYXNzL3RlYXJkb3duX2NsYXNzIGlmIGVpdGhlciBvciBib3RoIGFyZSBhdmFpbGFi
bGUuCiAKLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgc2VsZi5zZXNzaW9uLl9maXh0
dXJlbWFuYWdlci5wYXJzZWZhY3RvcmllcyhzZWxmKQotICAgICAgICByZXR1cm4gc3VwZXIoSW5z
dGFuY2UsIHNlbGYpLmNvbGxlY3QoKQorICAgICAgICBVc2luZyBhIGZpeHR1cmUgdG8gaW52b2tl
IHRoaXMgbWV0aG9kcyBlbnN1cmVzIHdlIHBsYXkgbmljZWx5IGFuZCB1bnN1cnByaXNpbmdseSB3
aXRoCisgICAgICAgIG90aGVyIGZpeHR1cmVzICgjNTE3KS4KKyAgICAgICAgIiIiCisgICAgICAg
IHNldHVwX2NsYXNzID0gX2dldF9maXJzdF9ub25fZml4dHVyZV9mdW5jKHNlbGYub2JqLCAoInNl
dHVwX2NsYXNzIiwpKQorICAgICAgICB0ZWFyZG93bl9jbGFzcyA9IGdldGF0dHIoc2VsZi5vYmos
ICJ0ZWFyZG93bl9jbGFzcyIsIE5vbmUpCisgICAgICAgIGlmIHNldHVwX2NsYXNzIGlzIE5vbmUg
YW5kIHRlYXJkb3duX2NsYXNzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KIAotICAgIGRl
ZiBuZXdpbnN0YW5jZShzZWxmKToKLSAgICAgICAgc2VsZi5vYmogPSBzZWxmLl9nZXRvYmooKQot
ICAgICAgICByZXR1cm4gc2VsZi5vYmoKKyAgICAgICAgQGZpeHR1cmVzLmZpeHR1cmUoYXV0b3Vz
ZT1UcnVlLCBzY29wZT0iY2xhc3MiKQorICAgICAgICBkZWYgeHVuaXRfc2V0dXBfY2xhc3NfZml4
dHVyZShjbHMpIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICAgICAgICAgIGlm
IHNldHVwX2NsYXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRpbWZ1
bmMoc2V0dXBfY2xhc3MpCisgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9vcHRpb25hbF9hcmd1
bWVudChmdW5jLCBzZWxmLm9iaikKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBpZiB0
ZWFyZG93bl9jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmdW5jID0gZ2V0aW1m
dW5jKHRlYXJkb3duX2NsYXNzKQorICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfb3B0aW9uYWxf
YXJndW1lbnQoZnVuYywgc2VsZi5vYmopCiAKKyAgICAgICAgc2VsZi5vYmouX19weXRlc3Rfc2V0
dXBfY2xhc3MgPSB4dW5pdF9zZXR1cF9jbGFzc19maXh0dXJlCiAKLWNsYXNzIEZ1bmN0aW9uTWl4
aW4oUHlvYmpNaXhpbik6Ci0gICAgIiIiIG1peGluIGZvciB0aGUgY29kZSBjb21tb24gdG8gRnVu
Y3Rpb24gYW5kIEdlbmVyYXRvci4KLSAgICAiIiIKKyAgICBkZWYgX2luamVjdF9zZXR1cF9tZXRo
b2RfZml4dHVyZShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiJJbmplY3QgYSBoaWRkZW4gYXV0
b3VzZSwgZnVuY3Rpb24gc2NvcGVkIGZpeHR1cmUgaW50byB0aGUgY29sbGVjdGVkIGNsYXNzIG9i
amVjdAorICAgICAgICB0aGF0IGludm9rZXMgc2V0dXBfbWV0aG9kL3RlYXJkb3duX21ldGhvZCBp
ZiBlaXRoZXIgb3IgYm90aCBhcmUgYXZhaWxhYmxlLgogCi0gICAgZGVmIHNldHVwKHNlbGYpOgot
ICAgICAgICAiIiIgcGVyZm9ybSBzZXR1cCBmb3IgdGhpcyB0ZXN0IGZ1bmN0aW9uLiAiIiIKLSAg
ICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX3ByZXNlcnZlZHBhcmVudCIpOgotICAgICAgICAgICAg
b2JqID0gc2VsZi5fcHJlc2VydmVkcGFyZW50Ci0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxm
LnBhcmVudCwgSW5zdGFuY2UpOgotICAgICAgICAgICAgb2JqID0gc2VsZi5wYXJlbnQubmV3aW5z
dGFuY2UoKQotICAgICAgICAgICAgc2VsZi5vYmogPSBzZWxmLl9nZXRvYmooKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgb2JqID0gc2VsZi5wYXJlbnQub2JqCi0gICAgICAgIGlmIGluc3Bl
Y3QuaXNtZXRob2Qoc2VsZi5vYmopOgotICAgICAgICAgICAgc2V0dXBfbmFtZSA9ICJzZXR1cF9t
ZXRob2QiCi0gICAgICAgICAgICB0ZWFyZG93bl9uYW1lID0gInRlYXJkb3duX21ldGhvZCIKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHNldHVwX25hbWUgPSAic2V0dXBfZnVuY3Rpb24iCi0g
ICAgICAgICAgICB0ZWFyZG93bl9uYW1lID0gInRlYXJkb3duX2Z1bmN0aW9uIgotICAgICAgICBz
ZXR1cF9mdW5jX29yX21ldGhvZCA9IF9nZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24oCi0gICAgICAg
ICAgICBvYmosIHNldHVwX25hbWUsIHBhcmFtX29iaj1zZWxmLm9iagotICAgICAgICApCi0gICAg
ICAgIGlmIHNldHVwX2Z1bmNfb3JfbWV0aG9kIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2V0
dXBfZnVuY19vcl9tZXRob2QoKQotICAgICAgICB0ZWFyZG93bl9mdW5jX29yX21ldGhvZCA9IF9n
ZXRfeHVuaXRfc2V0dXBfdGVhcmRvd24oCi0gICAgICAgICAgICBvYmosIHRlYXJkb3duX25hbWUs
IHBhcmFtX29iaj1zZWxmLm9iagotICAgICAgICApCi0gICAgICAgIGlmIHRlYXJkb3duX2Z1bmNf
b3JfbWV0aG9kIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5hZGRmaW5hbGl6ZXIodGVh
cmRvd25fZnVuY19vcl9tZXRob2QpCisgICAgICAgIFVzaW5nIGEgZml4dHVyZSB0byBpbnZva2Ug
dGhpcyBtZXRob2RzIGVuc3VyZXMgd2UgcGxheSBuaWNlbHkgYW5kIHVuc3VycHJpc2luZ2x5IHdp
dGgKKyAgICAgICAgb3RoZXIgZml4dHVyZXMgKCM1MTcpLgorICAgICAgICAiIiIKKyAgICAgICAg
c2V0dXBfbWV0aG9kID0gX2dldF9maXJzdF9ub25fZml4dHVyZV9mdW5jKHNlbGYub2JqLCAoInNl
dHVwX21ldGhvZCIsKSkKKyAgICAgICAgdGVhcmRvd25fbWV0aG9kID0gZ2V0YXR0cihzZWxmLm9i
aiwgInRlYXJkb3duX21ldGhvZCIsIE5vbmUpCisgICAgICAgIGlmIHNldHVwX21ldGhvZCBpcyBO
b25lIGFuZCB0ZWFyZG93bl9tZXRob2QgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgogCi0g
ICAgZGVmIF9wcnVuZXRyYWNlYmFjayhzZWxmLCBleGNpbmZvKToKLSAgICAgICAgaWYgaGFzYXR0
cihzZWxmLCAiX29iaiIpIGFuZCBub3Qgc2VsZi5jb25maWcub3B0aW9uLmZ1bGx0cmFjZToKLSAg
ICAgICAgICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoZ2V0X3JlYWxfZnVuYyhzZWxmLm9i
aikpCi0gICAgICAgICAgICBwYXRoLCBmaXJzdGxpbmVubyA9IGNvZGUucGF0aCwgY29kZS5maXJz
dGxpbmVubwotICAgICAgICAgICAgdHJhY2ViYWNrID0gZXhjaW5mby50cmFjZWJhY2sKLSAgICAg
ICAgICAgIG50cmFjZWJhY2sgPSB0cmFjZWJhY2suY3V0KHBhdGg9cGF0aCwgZmlyc3RsaW5lbm89
Zmlyc3RsaW5lbm8pCi0gICAgICAgICAgICBpZiBudHJhY2ViYWNrID09IHRyYWNlYmFjazoKLSAg
ICAgICAgICAgICAgICBudHJhY2ViYWNrID0gbnRyYWNlYmFjay5jdXQocGF0aD1wYXRoKQotICAg
ICAgICAgICAgICAgIGlmIG50cmFjZWJhY2sgPT0gdHJhY2ViYWNrOgotICAgICAgICAgICAgICAg
ICAgICBudHJhY2ViYWNrID0gbnRyYWNlYmFjay5maWx0ZXIoZmlsdGVyX3RyYWNlYmFjaykKLSAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IG50cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBudHJhY2ViYWNrID0gdHJhY2ViYWNrCisgICAgICAgIEBmaXh0dXJlcy5maXh0dXJlKGF1
dG91c2U9VHJ1ZSwgc2NvcGU9ImZ1bmN0aW9uIikKKyAgICAgICAgZGVmIHh1bml0X3NldHVwX21l
dGhvZF9maXh0dXJlKHNlbGYsIHJlcXVlc3QpIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25l
XToKKyAgICAgICAgICAgIG1ldGhvZCA9IHJlcXVlc3QuZnVuY3Rpb24KKyAgICAgICAgICAgIGlm
IHNldHVwX21ldGhvZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0
cihzZWxmLCAic2V0dXBfbWV0aG9kIikKKyAgICAgICAgICAgICAgICBfY2FsbF93aXRoX29wdGlv
bmFsX2FyZ3VtZW50KGZ1bmMsIG1ldGhvZCkKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAg
ICBpZiB0ZWFyZG93bl9tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZnVuYyA9
IGdldGF0dHIoc2VsZiwgInRlYXJkb3duX21ldGhvZCIpCisgICAgICAgICAgICAgICAgX2NhbGxf
d2l0aF9vcHRpb25hbF9hcmd1bWVudChmdW5jLCBtZXRob2QpCiAKLSAgICAgICAgICAgIGV4Y2lu
Zm8udHJhY2ViYWNrID0gbnRyYWNlYmFjay5maWx0ZXIoKQotICAgICAgICAgICAgIyBpc3N1ZTM2
NDogbWFyayBhbGwgYnV0IGZpcnN0IGFuZCBsYXN0IGZyYW1lcyB0bwotICAgICAgICAgICAgIyBv
bmx5IHNob3cgYSBzaW5nbGUtbGluZSBtZXNzYWdlIGZvciBlYWNoIGZyYW1lCi0gICAgICAgICAg
ICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSA9PSAiYXV0byI6Ci0gICAgICAgICAgICAg
ICAgaWYgbGVuKGV4Y2luZm8udHJhY2ViYWNrKSA+IDI6Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciBlbnRyeSBpbiBleGNpbmZvLnRyYWNlYmFja1sxOi0xXToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVudHJ5LnNldF9yZXByX3N0eWxlKCJzaG9ydCIpCisgICAgICAgIHNlbGYub2JqLl9fcHl0
ZXN0X3NldHVwX21ldGhvZCA9IHh1bml0X3NldHVwX21ldGhvZF9maXh0dXJlCiAKLSAgICBkZWYg
X3JlcHJfZmFpbHVyZV9weShzZWxmLCBleGNpbmZvLCBzdHlsZT0ibG9uZyIpOgotICAgICAgICBp
ZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoZmFpbC5FeGNlcHRpb24pOgotICAgICAgICAgICAgaWYg
bm90IGV4Y2luZm8udmFsdWUucHl0cmFjZToKLSAgICAgICAgICAgICAgICByZXR1cm4gcHkuX2J1
aWx0aW4uX3RvdGV4dChleGNpbmZvLnZhbHVlKQotICAgICAgICByZXR1cm4gc3VwZXIoRnVuY3Rp
b25NaXhpbiwgc2VsZikuX3JlcHJfZmFpbHVyZV9weShleGNpbmZvLCBzdHlsZT1zdHlsZSkKIAot
ICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbywgb3V0ZXJyPU5vbmUpOgotICAgICAg
ICBhc3NlcnQgb3V0ZXJyIGlzIE5vbmUsICJYWFggb3V0ZXJyIHVzYWdlIGlzIGRlcHJlY2F0ZWQi
Ci0gICAgICAgIHN0eWxlID0gc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUKLSAgICAgICAgaWYg
c3R5bGUgPT0gImF1dG8iOgotICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX3JlcHJfZmFpbHVyZV9weShleGNpbmZvLCBzdHlsZT1zdHlsZSkKK2NsYXNzIElu
c3RhbmNlKFB5Q29sbGVjdG9yKToKKyAgICBfQUxMT1dfTUFSS0VSUyA9IEZhbHNlICAjIGhhY2ss
IGRlc3Ryb3kgbGF0ZXIKKyAgICAjIEluc3RhbmNlcyBzaGFyZSB0aGUgb2JqZWN0IHdpdGggdGhl
aXIgcGFyZW50cyBpbiBhIHdheQorICAgICMgdGhhdCBkdXBsaWNhdGVzIG1hcmtlcnMgaW5zdGFu
Y2VzIGlmIG5vdCB0YWtlbiBvdXQKKyAgICAjIGNhbiBiZSByZW1vdmVkIGF0IG5vZGUgc3RydWN0
dXJlIHJlb3JnYW5pemF0aW9uIHRpbWUuCiAKKyAgICBkZWYgX2dldG9iaihzZWxmKToKKyAgICAg
ICAgIyBUT0RPOiBJbXByb3ZlIHRoZSB0eXBlIG9mIGBwYXJlbnRgIHN1Y2ggdGhhdCBhc3NlcnQv
aWdub3JlIGFyZW4ndCBuZWVkZWQuCisgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudCBpcyBub3Qg
Tm9uZQorICAgICAgICBvYmogPSBzZWxmLnBhcmVudC5vYmogICMgdHlwZTogaWdub3JlW2F0dHIt
ZGVmaW5lZF0KKyAgICAgICAgcmV0dXJuIG9iaigpCiAKLWNsYXNzIEdlbmVyYXRvcihGdW5jdGlv
bk1peGluLCBQeUNvbGxlY3Rvcik6Ci0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAg
IyB0ZXN0IGdlbmVyYXRvcnMgYXJlIHNlZW4gYXMgY29sbGVjdG9ycyBidXQgdGhleSBhbHNvCi0g
ICAgICAgICMgaW52b2tlIHNldHVwL3RlYXJkb3duIG9uIHBvcHVsYXIgcmVxdWVzdAotICAgICAg
ICAjIChpbmR1Y2VkIGJ5IHRoZSBjb21tb24gInRlc3RfKiIgbmFtaW5nIHNoYXJlZCB3aXRoIG5v
cm1hbCB0ZXN0cykKLSAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBkZXByZWNhdGVkCi0KLSAg
ICAgICAgc2VsZi5zZXNzaW9uLl9zZXR1cHN0YXRlLnByZXBhcmUoc2VsZikKLSAgICAgICAgIyBz
ZWUgRnVuY3Rpb25NaXhpbi5zZXR1cCBhbmQgdGVzdF9zZXR1cHN0YXRlX2lzX3ByZXNlcnZlZF8x
MzQKLSAgICAgICAgc2VsZi5fcHJlc2VydmVkcGFyZW50ID0gc2VsZi5wYXJlbnQub2JqCi0gICAg
ICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIHNlZW4gPSB7fQotICAgICAgICBmb3IgaSwgeCBpbiBl
bnVtZXJhdGUoc2VsZi5vYmooKSk6Ci0gICAgICAgICAgICBuYW1lLCBjYWxsLCBhcmdzID0gc2Vs
Zi5nZXRjYWxsYXJncyh4KQotICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKGNhbGwpOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXIgeWllbGRlZCBub24gY2FsbGFibGUgdGVz
dCAlciIgJSAoc2VsZi5vYmosIGNhbGwpKQotICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgot
ICAgICAgICAgICAgICAgIG5hbWUgPSAiWyVkXSIgJSBpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIG5hbWUgPSAiWyclcyddIiAlIG5hbWUKLSAgICAgICAgICAgIGlmIG5hbWUg
aW4gc2VlbjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAg
ICAgICAgICAiJXIgZ2VuZXJhdGVkIHRlc3RzIHdpdGggbm9uLXVuaXF1ZSBuYW1lICVyIiAlIChz
ZWxmLCBuYW1lKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlZW5bbmFtZV0gPSBU
cnVlCi0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHNlbGYuRnVuY3Rpb24obmFtZSwgc2VsZiwg
YXJncz1hcmdzLCBjYWxsb2JqPWNhbGwpKQotICAgICAgICBzZWxmLndhcm4oIkMxIiwgZGVwcmVj
YXRlZC5ZSUVMRF9URVNUUykKLSAgICAgICAgcmV0dXJuIHZhbHVlcworICAgIGRlZiBjb2xsZWN0
KHNlbGYpIC0+IEl0ZXJhYmxlW1VuaW9uW25vZGVzLkl0ZW0sIG5vZGVzLkNvbGxlY3Rvcl1dOgor
ICAgICAgICBzZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLnBhcnNlZmFjdG9yaWVzKHNlbGYp
CisgICAgICAgIHJldHVybiBzdXBlcigpLmNvbGxlY3QoKQogCi0gICAgZGVmIGdldGNhbGxhcmdz
KHNlbGYsIG9iaik6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgKHR1cGxlLCBsaXN0
KSk6Ci0gICAgICAgICAgICBvYmogPSAob2JqLCkKLSAgICAgICAgIyBleHBsaWNpdCBuYW1pbmcK
LSAgICAgICAgaWYgaXNpbnN0YW5jZShvYmpbMF0sIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAg
ICAgICAgbmFtZSA9IG9ialswXQotICAgICAgICAgICAgb2JqID0gb2JqWzE6XQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgbmFtZSA9IE5vbmUKLSAgICAgICAgY2FsbCwgYXJncyA9IG9ialsw
XSwgb2JqWzE6XQotICAgICAgICByZXR1cm4gbmFtZSwgY2FsbCwgYXJncworICAgIGRlZiBuZXdp
bnN0YW5jZShzZWxmKToKKyAgICAgICAgc2VsZi5vYmogPSBzZWxmLl9nZXRvYmooKQorICAgICAg
ICByZXR1cm4gc2VsZi5vYmoKIAogCi1kZWYgaGFzaW5pdChvYmopOgotICAgIGluaXQgPSBnZXRh
dHRyKG9iaiwgIl9faW5pdF9fIiwgTm9uZSkKK2RlZiBoYXNpbml0KG9iajogb2JqZWN0KSAtPiBi
b29sOgorICAgIGluaXQgPSBnZXRhdHRyKG9iaiwgIl9faW5pdF9fIiwgTm9uZSkgICMgdHlwZTog
b2JqZWN0CiAgICAgaWYgaW5pdDoKICAgICAgICAgcmV0dXJuIGluaXQgIT0gb2JqZWN0Ll9faW5p
dF9fCisgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIGhhc25ldyhvYmopOgotICAgIG5ldyA9IGdl
dGF0dHIob2JqLCAiX19uZXdfXyIsIE5vbmUpCitkZWYgaGFzbmV3KG9iajogb2JqZWN0KSAtPiBi
b29sOgorICAgIG5ldyA9IGdldGF0dHIob2JqLCAiX19uZXdfXyIsIE5vbmUpICAjIHR5cGU6IG9i
amVjdAogICAgIGlmIG5ldzoKICAgICAgICAgcmV0dXJuIG5ldyAhPSBvYmplY3QuX19uZXdfXwor
ICAgIHJldHVybiBGYWxzZQogCiAKLWNsYXNzIENhbGxTcGVjMihvYmplY3QpOgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIG1ldGFmdW5jKToKK0BmaW5hbAorY2xhc3MgQ2FsbFNwZWMyOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtZXRhZnVuYzogIk1ldGFmdW5jIikgLT4gTm9uZToKICAgICAg
ICAgc2VsZi5tZXRhZnVuYyA9IG1ldGFmdW5jCi0gICAgICAgIHNlbGYuZnVuY2FyZ3MgPSB7fQot
ICAgICAgICBzZWxmLl9pZGxpc3QgPSBbXQotICAgICAgICBzZWxmLnBhcmFtcyA9IHt9Ci0gICAg
ICAgIHNlbGYuX2dsb2JhbGlkID0gTk9UU0VUCi0gICAgICAgIHNlbGYuX2dsb2JhbGlkX2FyZ3Mg
PSBzZXQoKQotICAgICAgICBzZWxmLl9nbG9iYWxwYXJhbSA9IE5PVFNFVAotICAgICAgICBzZWxm
Ll9hcmcyc2NvcGVudW0gPSB7fSAgIyB1c2VkIGZvciBzb3J0aW5nIHBhcmFtZXRyaXplZCByZXNv
dXJjZXMKLSAgICAgICAgc2VsZi5tYXJrcyA9IFtdCi0gICAgICAgIHNlbGYuaW5kaWNlcyA9IHt9
Ci0KLSAgICBkZWYgY29weShzZWxmLCBtZXRhZnVuYyk6CisgICAgICAgIHNlbGYuZnVuY2FyZ3Mg
PSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgb2JqZWN0XQorICAgICAgICBzZWxmLl9pZGxpc3QgPSBb
XSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICAgICAgc2VsZi5wYXJhbXMgPSB7fSAgIyB0eXBlOiBE
aWN0W3N0ciwgb2JqZWN0XQorICAgICAgICAjIFVzZWQgZm9yIHNvcnRpbmcgcGFyYW1ldHJpemVk
IHJlc291cmNlcy4KKyAgICAgICAgc2VsZi5fYXJnMnNjb3BlbnVtID0ge30gICMgdHlwZTogRGlj
dFtzdHIsIGludF0KKyAgICAgICAgc2VsZi5tYXJrcyA9IFtdICAjIHR5cGU6IExpc3RbTWFya10K
KyAgICAgICAgc2VsZi5pbmRpY2VzID0ge30gICMgdHlwZTogRGljdFtzdHIsIGludF0KKworICAg
IGRlZiBjb3B5KHNlbGYpIC0+ICJDYWxsU3BlYzIiOgogICAgICAgICBjcyA9IENhbGxTcGVjMihz
ZWxmLm1ldGFmdW5jKQogICAgICAgICBjcy5mdW5jYXJncy51cGRhdGUoc2VsZi5mdW5jYXJncykK
ICAgICAgICAgY3MucGFyYW1zLnVwZGF0ZShzZWxmLnBhcmFtcykKQEAgLTc0OSwyNDkgKzg4NSwz
NjAgQEAgY2xhc3MgQ2FsbFNwZWMyKG9iamVjdCk6CiAgICAgICAgIGNzLmluZGljZXMudXBkYXRl
KHNlbGYuaW5kaWNlcykKICAgICAgICAgY3MuX2FyZzJzY29wZW51bS51cGRhdGUoc2VsZi5fYXJn
MnNjb3BlbnVtKQogICAgICAgICBjcy5faWRsaXN0ID0gbGlzdChzZWxmLl9pZGxpc3QpCi0gICAg
ICAgIGNzLl9nbG9iYWxpZCA9IHNlbGYuX2dsb2JhbGlkCi0gICAgICAgIGNzLl9nbG9iYWxpZF9h
cmdzID0gc2VsZi5fZ2xvYmFsaWRfYXJncwotICAgICAgICBjcy5fZ2xvYmFscGFyYW0gPSBzZWxm
Ll9nbG9iYWxwYXJhbQogICAgICAgICByZXR1cm4gY3MKIAotICAgIGRlZiBfY2hlY2thcmdub3Rj
b250YWluZWQoc2VsZiwgYXJnKToKKyAgICBkZWYgX2NoZWNrYXJnbm90Y29udGFpbmVkKHNlbGYs
IGFyZzogc3RyKSAtPiBOb25lOgogICAgICAgICBpZiBhcmcgaW4gc2VsZi5wYXJhbXMgb3IgYXJn
IGluIHNlbGYuZnVuY2FyZ3M6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdXBsaWNh
dGUgJXIiICUgKGFyZywpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRl
IHshcn0iLmZvcm1hdChhcmcpKQogCi0gICAgZGVmIGdldHBhcmFtKHNlbGYsIG5hbWUpOgorICAg
IGRlZiBnZXRwYXJhbShzZWxmLCBuYW1lOiBzdHIpIC0+IG9iamVjdDoKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyYW1zW25hbWVdCi0gICAgICAgIGV4Y2VwdCBLZXlF
cnJvcjoKLSAgICAgICAgICAgIGlmIHNlbGYuX2dsb2JhbHBhcmFtIGlzIE5PVFNFVDoKLSAgICAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fZ2xvYmFscGFyYW0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGU6CisgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKG5hbWUpIGZyb20gZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVm
IGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gIi0iLmpvaW4obWFwKHN0ciwgZmlsdGVyKE5vbmUs
IHNlbGYuX2lkbGlzdCkpKQorICAgIGRlZiBpZChzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVy
biAiLSIuam9pbihtYXAoc3RyLCBzZWxmLl9pZGxpc3QpKQogCi0gICAgZGVmIHNldG11bHRpMihz
ZWxmLCB2YWx0eXBlcywgYXJnbmFtZXMsIHZhbHNldCwgaWQsIG1hcmtzLCBzY29wZW51bSwgcGFy
YW1faW5kZXgpOgorICAgIGRlZiBzZXRtdWx0aTIoCisgICAgICAgIHNlbGYsCisgICAgICAgIHZh
bHR5cGVzOiBNYXBwaW5nW3N0ciwgIkxpdGVyYWxbJ3BhcmFtcycsICdmdW5jYXJncyddIl0sCisg
ICAgICAgIGFyZ25hbWVzOiB0eXBpbmcuU2VxdWVuY2Vbc3RyXSwKKyAgICAgICAgdmFsc2V0OiBJ
dGVyYWJsZVtvYmplY3RdLAorICAgICAgICBpZDogc3RyLAorICAgICAgICBtYXJrczogSXRlcmFi
bGVbVW5pb25bTWFyaywgTWFya0RlY29yYXRvcl1dLAorICAgICAgICBzY29wZW51bTogaW50LAor
ICAgICAgICBwYXJhbV9pbmRleDogaW50LAorICAgICkgLT4gTm9uZToKICAgICAgICAgZm9yIGFy
ZywgdmFsIGluIHppcChhcmduYW1lcywgdmFsc2V0KToKICAgICAgICAgICAgIHNlbGYuX2NoZWNr
YXJnbm90Y29udGFpbmVkKGFyZykKICAgICAgICAgICAgIHZhbHR5cGVfZm9yX2FyZyA9IHZhbHR5
cGVzW2FyZ10KLSAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgdmFsdHlwZV9mb3JfYXJnKVthcmdd
ID0gdmFsCisgICAgICAgICAgICBpZiB2YWx0eXBlX2Zvcl9hcmcgPT0gInBhcmFtcyI6CisgICAg
ICAgICAgICAgICAgc2VsZi5wYXJhbXNbYXJnXSA9IHZhbAorICAgICAgICAgICAgZWxpZiB2YWx0
eXBlX2Zvcl9hcmcgPT0gImZ1bmNhcmdzIjoKKyAgICAgICAgICAgICAgICBzZWxmLmZ1bmNhcmdz
W2FyZ10gPSB2YWwKKyAgICAgICAgICAgIGVsc2U6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJVbmhhbmRsZWQgdmFsdHlwZSBmb3IgYXJnOiB7fSIu
Zm9ybWF0KHZhbHR5cGVfZm9yX2FyZykKICAgICAgICAgICAgIHNlbGYuaW5kaWNlc1thcmddID0g
cGFyYW1faW5kZXgKICAgICAgICAgICAgIHNlbGYuX2FyZzJzY29wZW51bVthcmddID0gc2NvcGVu
dW0KICAgICAgICAgc2VsZi5faWRsaXN0LmFwcGVuZChpZCkKLSAgICAgICAgc2VsZi5tYXJrcy5l
eHRlbmQobWFya3MpCi0KLSAgICBkZWYgc2V0YWxsKHNlbGYsIGZ1bmNhcmdzLCBpZCwgcGFyYW0p
OgotICAgICAgICBmb3IgeCBpbiBmdW5jYXJnczoKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrYXJn
bm90Y29udGFpbmVkKHgpCi0gICAgICAgIHNlbGYuZnVuY2FyZ3MudXBkYXRlKGZ1bmNhcmdzKQot
ICAgICAgICBpZiBpZCBpcyBub3QgTk9UU0VUOgotICAgICAgICAgICAgc2VsZi5faWRsaXN0LmFw
cGVuZChpZCkKLSAgICAgICAgaWYgcGFyYW0gaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIGFz
c2VydCBzZWxmLl9nbG9iYWxwYXJhbSBpcyBOT1RTRVQKLSAgICAgICAgICAgIHNlbGYuX2dsb2Jh
bHBhcmFtID0gcGFyYW0KLSAgICAgICAgZm9yIGFyZyBpbiBmdW5jYXJnczoKLSAgICAgICAgICAg
IHNlbGYuX2FyZzJzY29wZW51bVthcmddID0gZml4dHVyZXMuc2NvcGVudW1fZnVuY3Rpb24KLQot
Ci1jbGFzcyBNZXRhZnVuYyhmaXh0dXJlcy5GdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKLSAgICAi
IiIKLSAgICBNZXRhZnVuYyBvYmplY3RzIGFyZSBwYXNzZWQgdG8gdGhlIDpmdW5jOmBweXRlc3Rf
Z2VuZXJhdGVfdGVzdHMgPF9weXRlc3QuaG9va3NwZWMucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzPmAg
aG9vay4KKyAgICAgICAgc2VsZi5tYXJrcy5leHRlbmQobm9ybWFsaXplX21hcmtfbGlzdChtYXJr
cykpCisKKworQGZpbmFsCitjbGFzcyBNZXRhZnVuYzoKKyAgICAiIiJPYmplY3RzIHBhc3NlZCB0
byB0aGUgOmZ1bmM6YHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyA8X3B5dGVzdC5ob29rc3BlYy5weXRl
c3RfZ2VuZXJhdGVfdGVzdHM+YCBob29rLgorCiAgICAgVGhleSBoZWxwIHRvIGluc3BlY3QgYSB0
ZXN0IGZ1bmN0aW9uIGFuZCB0byBnZW5lcmF0ZSB0ZXN0cyBhY2NvcmRpbmcgdG8KICAgICB0ZXN0
IGNvbmZpZ3VyYXRpb24gb3IgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGUgY2xhc3Mgb3IgbW9kdWxl
IHdoZXJlIGEKICAgICB0ZXN0IGZ1bmN0aW9uIGlzIGRlZmluZWQuCiAgICAgIiIiCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgZGVmaW5pdGlvbiwgZml4dHVyZWluZm8sIGNvbmZpZywgY2xzPU5v
bmUsIG1vZHVsZT1Ob25lKToKLSAgICAgICAgIzogYWNjZXNzIHRvIHRoZSA6Y2xhc3M6YF9weXRl
c3QuY29uZmlnLkNvbmZpZ2Agb2JqZWN0IGZvciB0aGUgdGVzdCBzZXNzaW9uCi0gICAgICAgIGFz
c2VydCAoCi0gICAgICAgICAgICBpc2luc3RhbmNlKGRlZmluaXRpb24sIEZ1bmN0aW9uRGVmaW5p
dGlvbikKLSAgICAgICAgICAgIG9yIHR5cGUoZGVmaW5pdGlvbikuX19uYW1lX18gPT0gIkRlZmlu
aXRpb25Nb2NrIgotICAgICAgICApCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAor
ICAgICAgICBkZWZpbml0aW9uOiAiRnVuY3Rpb25EZWZpbml0aW9uIiwKKyAgICAgICAgZml4dHVy
ZWluZm86IGZpeHR1cmVzLkZ1bmNGaXh0dXJlSW5mbywKKyAgICAgICAgY29uZmlnOiBDb25maWcs
CisgICAgICAgIGNscz1Ob25lLAorICAgICAgICBtb2R1bGU9Tm9uZSwKKyAgICApIC0+IE5vbmU6
CiAgICAgICAgIHNlbGYuZGVmaW5pdGlvbiA9IGRlZmluaXRpb24KKworICAgICAgICAjOiBBY2Nl
c3MgdG8gdGhlIDpjbGFzczpgX3B5dGVzdC5jb25maWcuQ29uZmlnYCBvYmplY3QgZm9yIHRoZSB0
ZXN0IHNlc3Npb24uCiAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCiAKLSAgICAgICAgIzog
dGhlIG1vZHVsZSBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbi4K
KyAgICAgICAgIzogVGhlIG1vZHVsZSBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24gaXMg
ZGVmaW5lZCBpbi4KICAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKIAotICAgICAgICAjOiB1
bmRlcmx5aW5nIHB5dGhvbiB0ZXN0IGZ1bmN0aW9uCisgICAgICAgICM6IFVuZGVybHlpbmcgUHl0
aG9uIHRlc3QgZnVuY3Rpb24uCiAgICAgICAgIHNlbGYuZnVuY3Rpb24gPSBkZWZpbml0aW9uLm9i
agogCi0gICAgICAgICM6IHNldCBvZiBmaXh0dXJlIG5hbWVzIHJlcXVpcmVkIGJ5IHRoZSB0ZXN0
IGZ1bmN0aW9uCisgICAgICAgICM6IFNldCBvZiBmaXh0dXJlIG5hbWVzIHJlcXVpcmVkIGJ5IHRo
ZSB0ZXN0IGZ1bmN0aW9uLgogICAgICAgICBzZWxmLmZpeHR1cmVuYW1lcyA9IGZpeHR1cmVpbmZv
Lm5hbWVzX2Nsb3N1cmUKIAotICAgICAgICAjOiBjbGFzcyBvYmplY3Qgd2hlcmUgdGhlIHRlc3Qg
ZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYC4KKyAgICAgICAgIzogQ2xhc3Mgb2Jq
ZWN0IHdoZXJlIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gb3IgYGBOb25lYGAuCiAg
ICAgICAgIHNlbGYuY2xzID0gY2xzCiAKLSAgICAgICAgc2VsZi5fY2FsbHMgPSBbXQotICAgICAg
ICBzZWxmLl9pZHMgPSBzZXQoKQorICAgICAgICBzZWxmLl9jYWxscyA9IFtdICAjIHR5cGU6IExp
c3RbQ2FsbFNwZWMyXQogICAgICAgICBzZWxmLl9hcmcyZml4dHVyZWRlZnMgPSBmaXh0dXJlaW5m
by5uYW1lMmZpeHR1cmVkZWZzCiAKLSAgICBkZWYgcGFyYW1ldHJpemUoc2VsZiwgYXJnbmFtZXMs
IGFyZ3ZhbHVlcywgaW5kaXJlY3Q9RmFsc2UsIGlkcz1Ob25lLCBzY29wZT1Ob25lKToKLSAgICAg
ICAgIiIiIEFkZCBuZXcgaW52b2NhdGlvbnMgdG8gdGhlIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlv
biB1c2luZyB0aGUgbGlzdAorICAgIGRlZiBwYXJhbWV0cml6ZSgKKyAgICAgICAgc2VsZiwKKyAg
ICAgICAgYXJnbmFtZXM6IFVuaW9uW3N0ciwgTGlzdFtzdHJdLCBUdXBsZVtzdHIsIC4uLl1dLAor
ICAgICAgICBhcmd2YWx1ZXM6IEl0ZXJhYmxlW1VuaW9uW1BhcmFtZXRlclNldCwgdHlwaW5nLlNl
cXVlbmNlW29iamVjdF0sIG9iamVjdF1dLAorICAgICAgICBpbmRpcmVjdDogVW5pb25bYm9vbCwg
dHlwaW5nLlNlcXVlbmNlW3N0cl1dID0gRmFsc2UsCisgICAgICAgIGlkczogT3B0aW9uYWxbCisg
ICAgICAgICAgICBVbmlvblsKKyAgICAgICAgICAgICAgICBJdGVyYWJsZVtVbmlvbltOb25lLCBz
dHIsIGZsb2F0LCBpbnQsIGJvb2xdXSwKKyAgICAgICAgICAgICAgICBDYWxsYWJsZVtbQW55XSwg
T3B0aW9uYWxbb2JqZWN0XV0sCisgICAgICAgICAgICBdCisgICAgICAgIF0gPSBOb25lLAorICAg
ICAgICBzY29wZTogIk9wdGlvbmFsW19TY29wZV0iID0gTm9uZSwKKyAgICAgICAgKiwKKyAgICAg
ICAgX3BhcmFtX21hcms6IE9wdGlvbmFsW01hcmtdID0gTm9uZQorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiQWRkIG5ldyBpbnZvY2F0aW9ucyB0byB0aGUgdW5kZXJseWluZyB0ZXN0IGZ1bmN0
aW9uIHVzaW5nIHRoZSBsaXN0CiAgICAgICAgIG9mIGFyZ3ZhbHVlcyBmb3IgdGhlIGdpdmVuIGFy
Z25hbWVzLiAgUGFyYW1ldHJpemF0aW9uIGlzIHBlcmZvcm1lZAogICAgICAgICBkdXJpbmcgdGhl
IGNvbGxlY3Rpb24gcGhhc2UuICBJZiB5b3UgbmVlZCB0byBzZXR1cCBleHBlbnNpdmUgcmVzb3Vy
Y2VzCiAgICAgICAgIHNlZSBhYm91dCBzZXR0aW5nIGluZGlyZWN0IHRvIGRvIGl0IHJhdGhlciBh
dCB0ZXN0IHNldHVwIHRpbWUuCiAKLSAgICAgICAgOmFyZyBhcmduYW1lczogYSBjb21tYS1zZXBh
cmF0ZWQgc3RyaW5nIGRlbm90aW5nIG9uZSBvciBtb3JlIGFyZ3VtZW50Ci0gICAgICAgICAgICAg
ICAgICAgICAgIG5hbWVzLCBvciBhIGxpc3QvdHVwbGUgb2YgYXJndW1lbnQgc3RyaW5ncy4KKyAg
ICAgICAgOnBhcmFtIGFyZ25hbWVzOgorICAgICAgICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgc3Ry
aW5nIGRlbm90aW5nIG9uZSBvciBtb3JlIGFyZ3VtZW50IG5hbWVzLCBvcgorICAgICAgICAgICAg
YSBsaXN0L3R1cGxlIG9mIGFyZ3VtZW50IHN0cmluZ3MuCisKKyAgICAgICAgOnBhcmFtIGFyZ3Zh
bHVlczoKKyAgICAgICAgICAgIFRoZSBsaXN0IG9mIGFyZ3ZhbHVlcyBkZXRlcm1pbmVzIGhvdyBv
ZnRlbiBhIHRlc3QgaXMgaW52b2tlZCB3aXRoCisgICAgICAgICAgICBkaWZmZXJlbnQgYXJndW1l
bnQgdmFsdWVzLgogCi0gICAgICAgIDphcmcgYXJndmFsdWVzOiBUaGUgbGlzdCBvZiBhcmd2YWx1
ZXMgZGV0ZXJtaW5lcyBob3cgb2Z0ZW4gYQotICAgICAgICAgICAgdGVzdCBpcyBpbnZva2VkIHdp
dGggZGlmZmVyZW50IGFyZ3VtZW50IHZhbHVlcy4gIElmIG9ubHkgb25lCi0gICAgICAgICAgICBh
cmduYW1lIHdhcyBzcGVjaWZpZWQgYXJndmFsdWVzIGlzIGEgbGlzdCBvZiB2YWx1ZXMuICBJZiBO
Ci0gICAgICAgICAgICBhcmduYW1lcyB3ZXJlIHNwZWNpZmllZCwgYXJndmFsdWVzIG11c3QgYmUg
YSBsaXN0IG9mIE4tdHVwbGVzLAotICAgICAgICAgICAgd2hlcmUgZWFjaCB0dXBsZS1lbGVtZW50
IHNwZWNpZmllcyBhIHZhbHVlIGZvciBpdHMgcmVzcGVjdGl2ZQotICAgICAgICAgICAgYXJnbmFt
ZS4KKyAgICAgICAgICAgIElmIG9ubHkgb25lIGFyZ25hbWUgd2FzIHNwZWNpZmllZCBhcmd2YWx1
ZXMgaXMgYSBsaXN0IG9mIHZhbHVlcy4KKyAgICAgICAgICAgIElmIE4gYXJnbmFtZXMgd2VyZSBz
cGVjaWZpZWQsIGFyZ3ZhbHVlcyBtdXN0IGJlIGEgbGlzdCBvZgorICAgICAgICAgICAgTi10dXBs
ZXMsIHdoZXJlIGVhY2ggdHVwbGUtZWxlbWVudCBzcGVjaWZpZXMgYSB2YWx1ZSBmb3IgaXRzCisg
ICAgICAgICAgICByZXNwZWN0aXZlIGFyZ25hbWUuCiAKLSAgICAgICAgOmFyZyBpbmRpcmVjdDog
VGhlIGxpc3Qgb2YgYXJnbmFtZXMgb3IgYm9vbGVhbi4gQSBsaXN0IG9mIGFyZ3VtZW50cycKLSAg
ICAgICAgICAgIG5hbWVzIChzdWJzZXQgb2YgYXJnbmFtZXMpLiBJZiBUcnVlIHRoZSBsaXN0IGNv
bnRhaW5zIGFsbCBuYW1lcyBmcm9tCi0gICAgICAgICAgICB0aGUgYXJnbmFtZXMuIEVhY2ggYXJn
dmFsdWUgY29ycmVzcG9uZGluZyB0byBhbiBhcmduYW1lIGluIHRoaXMgbGlzdCB3aWxsCisgICAg
ICAgIDpwYXJhbSBpbmRpcmVjdDoKKyAgICAgICAgICAgIEEgbGlzdCBvZiBhcmd1bWVudHMnIG5h
bWVzIChzdWJzZXQgb2YgYXJnbmFtZXMpIG9yIGEgYm9vbGVhbi4KKyAgICAgICAgICAgIElmIFRy
dWUgdGhlIGxpc3QgY29udGFpbnMgYWxsIG5hbWVzIGZyb20gdGhlIGFyZ25hbWVzLiBFYWNoCisg
ICAgICAgICAgICBhcmd2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGFyZ25hbWUgaW4gdGhpcyBs
aXN0IHdpbGwKICAgICAgICAgICAgIGJlIHBhc3NlZCBhcyByZXF1ZXN0LnBhcmFtIHRvIGl0cyBy
ZXNwZWN0aXZlIGFyZ25hbWUgZml4dHVyZQogICAgICAgICAgICAgZnVuY3Rpb24gc28gdGhhdCBp
dCBjYW4gcGVyZm9ybSBtb3JlIGV4cGVuc2l2ZSBzZXR1cHMgZHVyaW5nIHRoZQogICAgICAgICAg
ICAgc2V0dXAgcGhhc2Ugb2YgYSB0ZXN0IHJhdGhlciB0aGFuIGF0IGNvbGxlY3Rpb24gdGltZS4K
IAotICAgICAgICA6YXJnIGlkczogbGlzdCBvZiBzdHJpbmcgaWRzLCBvciBhIGNhbGxhYmxlLgot
ICAgICAgICAgICAgSWYgc3RyaW5ncywgZWFjaCBpcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhcmd2
YWx1ZXMgc28gdGhhdCB0aGV5IGFyZQotICAgICAgICAgICAgcGFydCBvZiB0aGUgdGVzdCBpZC4g
SWYgTm9uZSBpcyBnaXZlbiBhcyBpZCBvZiBzcGVjaWZpYyB0ZXN0LCB0aGUKLSAgICAgICAgICAg
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlkIGZvciB0aGF0IGFyZ3VtZW50IHdpbGwgYmUgdXNl
ZC4KLSAgICAgICAgICAgIElmIGNhbGxhYmxlLCBpdCBzaG91bGQgdGFrZSBvbmUgYXJndW1lbnQg
KGEgc2luZ2xlIGFyZ3ZhbHVlKSBhbmQgcmV0dXJuCi0gICAgICAgICAgICBhIHN0cmluZyBvciBy
ZXR1cm4gTm9uZS4gSWYgTm9uZSwgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlkIGZvciB0
aGF0Ci0gICAgICAgICAgICBhcmd1bWVudCB3aWxsIGJlIHVzZWQuCisgICAgICAgIDpwYXJhbSBp
ZHM6CisgICAgICAgICAgICBTZXF1ZW5jZSBvZiAob3IgZ2VuZXJhdG9yIGZvcikgaWRzIGZvciBg
YGFyZ3ZhbHVlc2BgLAorICAgICAgICAgICAgb3IgYSBjYWxsYWJsZSB0byByZXR1cm4gcGFydCBv
ZiB0aGUgaWQgZm9yIGVhY2ggYXJndmFsdWUuCisKKyAgICAgICAgICAgIFdpdGggc2VxdWVuY2Vz
IChhbmQgZ2VuZXJhdG9ycyBsaWtlIGBgaXRlcnRvb2xzLmNvdW50KClgYCkgdGhlCisgICAgICAg
ICAgICByZXR1cm5lZCBpZHMgc2hvdWxkIGJlIG9mIHR5cGUgYGBzdHJpbmdgYCwgYGBpbnRgYCwg
YGBmbG9hdGBgLAorICAgICAgICAgICAgYGBib29sYGAsIG9yIGBgTm9uZWBgLgorICAgICAgICAg
ICAgVGhleSBhcmUgbWFwcGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4IGluIGBgYXJndmFs
dWVzYGAuCisgICAgICAgICAgICBgYE5vbmVgYCBtZWFucyB0byB1c2UgdGhlIGF1dG8tZ2VuZXJh
dGVkIGlkLgorCisgICAgICAgICAgICBJZiBpdCBpcyBhIGNhbGxhYmxlIGl0IHdpbGwgYmUgY2Fs
bGVkIGZvciBlYWNoIGVudHJ5IGluCisgICAgICAgICAgICBgYGFyZ3ZhbHVlc2BgLCBhbmQgdGhl
IHJldHVybiB2YWx1ZSBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICBhdXRvLWdl
bmVyYXRlZCBpZCBmb3IgdGhlIHdob2xlIHNldCAod2hlcmUgcGFydHMgYXJlIGpvaW5lZCB3aXRo
CisgICAgICAgICAgICBkYXNoZXMgKCItIikpLgorICAgICAgICAgICAgVGhpcyBpcyB1c2VmdWwg
dG8gcHJvdmlkZSBtb3JlIHNwZWNpZmljIGlkcyBmb3IgY2VydGFpbiBpdGVtcywgZS5nLgorICAg
ICAgICAgICAgZGF0ZXMuICBSZXR1cm5pbmcgYGBOb25lYGAgd2lsbCB1c2UgYW4gYXV0by1nZW5l
cmF0ZWQgaWQuCisKICAgICAgICAgICAgIElmIG5vIGlkcyBhcmUgcHJvdmlkZWQgdGhleSB3aWxs
IGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20KICAgICAgICAgICAgIHRoZSBhcmd2YWx1
ZXMuCiAKLSAgICAgICAgOmFyZyBzY29wZTogaWYgc3BlY2lmaWVkIGl0IGRlbm90ZXMgdGhlIHNj
b3BlIG9mIHRoZSBwYXJhbWV0ZXJzLgorICAgICAgICA6cGFyYW0gc2NvcGU6CisgICAgICAgICAg
ICBJZiBzcGVjaWZpZWQgaXQgZGVub3RlcyB0aGUgc2NvcGUgb2YgdGhlIHBhcmFtZXRlcnMuCiAg
ICAgICAgICAgICBUaGUgc2NvcGUgaXMgdXNlZCBmb3IgZ3JvdXBpbmcgdGVzdHMgYnkgcGFyYW1l
dGVyIGluc3RhbmNlcy4KICAgICAgICAgICAgIEl0IHdpbGwgYWxzbyBvdmVycmlkZSBhbnkgZml4
dHVyZS1mdW5jdGlvbiBkZWZpbmVkIHNjb3BlLCBhbGxvd2luZwogICAgICAgICAgICAgdG8gc2V0
IGEgZHluYW1pYyBzY29wZSB1c2luZyB0ZXN0IGNvbnRleHQgb3IgY29uZmlndXJhdGlvbi4KICAg
ICAgICAgIiIiCiAgICAgICAgIGZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgc2NvcGUyaW5k
ZXgKLSAgICAgICAgZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IFBhcmFtZXRlclNldAotICAgICAg
ICBmcm9tIHB5LmlvIGltcG9ydCBzYWZlcmVwcgogCiAgICAgICAgIGFyZ25hbWVzLCBwYXJhbWV0
ZXJzID0gUGFyYW1ldGVyU2V0Ll9mb3JfcGFyYW1ldHJpemUoCi0gICAgICAgICAgICBhcmduYW1l
cywgYXJndmFsdWVzLCBzZWxmLmZ1bmN0aW9uLCBzZWxmLmNvbmZpZworICAgICAgICAgICAgYXJn
bmFtZXMsCisgICAgICAgICAgICBhcmd2YWx1ZXMsCisgICAgICAgICAgICBzZWxmLmZ1bmN0aW9u
LAorICAgICAgICAgICAgc2VsZi5jb25maWcsCisgICAgICAgICAgICBub2RlaWQ9c2VsZi5kZWZp
bml0aW9uLm5vZGVpZCwKICAgICAgICAgKQogICAgICAgICBkZWwgYXJndmFsdWVzCi0gICAgICAg
IGRlZmF1bHRfYXJnX25hbWVzID0gc2V0KGdldF9kZWZhdWx0X2FyZ19uYW1lcyhzZWxmLmZ1bmN0
aW9uKSkKKworICAgICAgICBpZiAicmVxdWVzdCIgaW4gYXJnbmFtZXM6CisgICAgICAgICAgICBm
YWlsKAorICAgICAgICAgICAgICAgICIncmVxdWVzdCcgaXMgYSByZXNlcnZlZCBuYW1lIGFuZCBj
YW5ub3QgYmUgdXNlZCBpbiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUiLAorICAgICAgICAgICAg
ICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAgICApCiAKICAgICAgICAgaWYgc2NvcGUgaXMg
Tm9uZToKICAgICAgICAgICAgIHNjb3BlID0gX2ZpbmRfcGFyYW1ldHJpemVkX3Njb3BlKGFyZ25h
bWVzLCBzZWxmLl9hcmcyZml4dHVyZWRlZnMsIGluZGlyZWN0KQogCi0gICAgICAgIHNjb3BlbnVt
ID0gc2NvcGUyaW5kZXgoc2NvcGUsIGRlc2NyPSJjYWxsIHRvIHt9Ii5mb3JtYXQoc2VsZi5wYXJh
bWV0cml6ZSkpCi0gICAgICAgIHZhbHR5cGVzID0ge30KLSAgICAgICAgZm9yIGFyZyBpbiBhcmdu
YW1lczoKLSAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gc2VsZi5maXh0dXJlbmFtZXM6Ci0gICAg
ICAgICAgICAgICAgaWYgYXJnIGluIGRlZmF1bHRfYXJnX25hbWVzOgotICAgICAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgIiVyIGFscmVh
ZHkgdGFrZXMgYW4gYXJndW1lbnQgJXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAlIChzZWxmLmZ1bmN0aW9uLCBhcmcpCi0gICAgICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKGluZGlyZWN0LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWUgPSAiZml4dHVyZSIgaWYgYXJnIGluIGluZGlyZWN0IGVsc2UgImFyZ3VtZW50IgotICAgICAg
ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJmaXh0
dXJlIiBpZiBpbmRpcmVjdCBlbHNlICJhcmd1bWVudCIKLSAgICAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiJXIgdXNlcyBubyAlcyAlciIgJSAoc2VsZi5mdW5jdGlvbiwgbmFtZSwg
YXJnKSkKKyAgICAgICAgc2VsZi5fdmFsaWRhdGVfaWZfdXNpbmdfYXJnX25hbWVzKGFyZ25hbWVz
LCBpbmRpcmVjdCkKIAotICAgICAgICBpZiBpbmRpcmVjdCBpcyBUcnVlOgotICAgICAgICAgICAg
dmFsdHlwZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAicGFyYW1zIikKLSAgICAgICAgZWxp
ZiBpbmRpcmVjdCBpcyBGYWxzZToKLSAgICAgICAgICAgIHZhbHR5cGVzID0gZGljdC5mcm9ta2V5
cyhhcmduYW1lcywgImZ1bmNhcmdzIikKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGluZGlyZWN0
LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHZhbHR5cGVzID0gZGljdC5mcm9ta2V5cyhh
cmduYW1lcywgImZ1bmNhcmdzIikKLSAgICAgICAgICAgIGZvciBhcmcgaW4gaW5kaXJlY3Q6Ci0g
ICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBhcmduYW1lczoKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbmRpcmVjdCBn
aXZlbiB0byAlcjogZml4dHVyZSAlciBkb2Vzbid0IGV4aXN0IgotICAgICAgICAgICAgICAgICAg
ICAgICAgJSAoc2VsZi5mdW5jdGlvbiwgYXJnKQotICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICAgICAgdmFsdHlwZXNbYXJnXSA9ICJwYXJhbXMiCi0gICAgICAgIGlkZm4gPSBOb25l
Ci0gICAgICAgIGlmIGNhbGxhYmxlKGlkcyk6Ci0gICAgICAgICAgICBpZGZuID0gaWRzCi0gICAg
ICAgICAgICBpZHMgPSBOb25lCi0gICAgICAgIGlmIGlkczoKLSAgICAgICAgICAgIGlmIGxlbihp
ZHMpICE9IGxlbihwYXJhbWV0ZXJzKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAotICAgICAgICAgICAgICAgICAgICAiJWQgdGVzdHMgc3BlY2lmaWVkIHdpdGggJWQgaWRzIiAl
IChsZW4ocGFyYW1ldGVycyksIGxlbihpZHMpKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgIGZvciBpZF92YWx1ZSBpbiBpZHM6Ci0gICAgICAgICAgICAgICAgaWYgaWRfdmFsdWUgaXMg
bm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGlkX3ZhbHVlLCBzaXguc3RyaW5nX3R5cGVzKToK
LSAgICAgICAgICAgICAgICAgICAgbXNnID0gImlkcyBtdXN0IGJlIGxpc3Qgb2Ygc3RyaW5ncywg
Zm91bmQ6ICVzICh0eXBlOiAlcykiCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgJSAoc2FmZXJlcHIoaWRfdmFsdWUpLCB0
eXBlKGlkX3ZhbHVlKS5fX25hbWVfXykKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBp
ZHMgPSBpZG1ha2VyKGFyZ25hbWVzLCBwYXJhbWV0ZXJzLCBpZGZuLCBpZHMsIHNlbGYuY29uZmln
KQorICAgICAgICBhcmdfdmFsdWVzX3R5cGVzID0gc2VsZi5fcmVzb2x2ZV9hcmdfdmFsdWVfdHlw
ZXMoYXJnbmFtZXMsIGluZGlyZWN0KQorCisgICAgICAgICMgVXNlIGFueSBhbHJlYWR5IChwb3Nz
aWJseSkgZ2VuZXJhdGVkIGlkcyB3aXRoIHBhcmFtZXRyaXplIE1hcmtzLgorICAgICAgICBpZiBf
cGFyYW1fbWFyayBhbmQgX3BhcmFtX21hcmsuX3BhcmFtX2lkc19mcm9tOgorICAgICAgICAgICAg
Z2VuZXJhdGVkX2lkcyA9IF9wYXJhbV9tYXJrLl9wYXJhbV9pZHNfZnJvbS5fcGFyYW1faWRzX2dl
bmVyYXRlZAorICAgICAgICAgICAgaWYgZ2VuZXJhdGVkX2lkcyBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBpZHMgPSBnZW5lcmF0ZWRfaWRzCisKKyAgICAgICAgaWRzID0gc2VsZi5fcmVz
b2x2ZV9hcmdfaWRzKAorICAgICAgICAgICAgYXJnbmFtZXMsIGlkcywgcGFyYW1ldGVycywgbm9k
ZWlkPXNlbGYuZGVmaW5pdGlvbi5ub2RlaWQKKyAgICAgICAgKQorCisgICAgICAgICMgU3RvcmUg
dXNlZCAocG9zc2libHkgZ2VuZXJhdGVkKSBpZHMgd2l0aCBwYXJhbWV0cml6ZSBNYXJrcy4KKyAg
ICAgICAgaWYgX3BhcmFtX21hcmsgYW5kIF9wYXJhbV9tYXJrLl9wYXJhbV9pZHNfZnJvbSBhbmQg
Z2VuZXJhdGVkX2lkcyBpcyBOb25lOgorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKF9w
YXJhbV9tYXJrLl9wYXJhbV9pZHNfZnJvbSwgIl9wYXJhbV9pZHNfZ2VuZXJhdGVkIiwgaWRzKQor
CisgICAgICAgIHNjb3BlbnVtID0gc2NvcGUyaW5kZXgoCisgICAgICAgICAgICBzY29wZSwgZGVz
Y3I9InBhcmFtZXRyaXplKCkgY2FsbCBpbiB7fSIuZm9ybWF0KHNlbGYuZnVuY3Rpb24uX19uYW1l
X18pCisgICAgICAgICkKKworICAgICAgICAjIENyZWF0ZSB0aGUgbmV3IGNhbGxzOiBpZiB3ZSBh
cmUgcGFyYW1ldHJpemUoKSBtdWx0aXBsZSB0aW1lcyAoYnkgYXBwbHlpbmcgdGhlIGRlY29yYXRv
cgorICAgICAgICAjIG1vcmUgdGhhbiBvbmNlKSB0aGVuIHdlIGFjY3VtdWxhdGUgdGhvc2UgY2Fs
bHMgZ2VuZXJhdGluZyB0aGUgY2FydGVzaWFuIHByb2R1Y3QKKyAgICAgICAgIyBvZiBhbGwgY2Fs
bHMuCiAgICAgICAgIG5ld2NhbGxzID0gW10KICAgICAgICAgZm9yIGNhbGxzcGVjIGluIHNlbGYu
X2NhbGxzIG9yIFtDYWxsU3BlYzIoc2VsZildOgotICAgICAgICAgICAgZWxlbWVudHMgPSB6aXAo
aWRzLCBwYXJhbWV0ZXJzLCBjb3VudCgpKQotICAgICAgICAgICAgZm9yIGFfaWQsIHBhcmFtLCBw
YXJhbV9pbmRleCBpbiBlbGVtZW50czoKLSAgICAgICAgICAgICAgICBpZiBsZW4ocGFyYW0udmFs
dWVzKSAhPSBsZW4oYXJnbmFtZXMpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0luICJwYXJhbWV0cml6ZSIgdGhlIG51bWJl
ciBvZiB2YWx1ZXMgKHt9KSBtdXN0IGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICJlcXVh
bCB0byB0aGUgbnVtYmVyIG9mIG5hbWVzICh7fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbS52YWx1ZXMsIGFyZ25hbWVzCi0gICAgICAgICAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBuZXdjYWxsc3BlYyA9
IGNhbGxzcGVjLmNvcHkoc2VsZikKKyAgICAgICAgICAgIGZvciBwYXJhbV9pbmRleCwgKHBhcmFt
X2lkLCBwYXJhbV9zZXQpIGluIGVudW1lcmF0ZSh6aXAoaWRzLCBwYXJhbWV0ZXJzKSk6CisgICAg
ICAgICAgICAgICAgbmV3Y2FsbHNwZWMgPSBjYWxsc3BlYy5jb3B5KCkKICAgICAgICAgICAgICAg
ICBuZXdjYWxsc3BlYy5zZXRtdWx0aTIoCi0gICAgICAgICAgICAgICAgICAgIHZhbHR5cGVzLAor
ICAgICAgICAgICAgICAgICAgICBhcmdfdmFsdWVzX3R5cGVzLAogICAgICAgICAgICAgICAgICAg
ICBhcmduYW1lcywKLSAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWVzLAotICAgICAgICAg
ICAgICAgICAgICBhX2lkLAotICAgICAgICAgICAgICAgICAgICBwYXJhbS5tYXJrcywKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1fc2V0LnZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgcGFy
YW1faWQsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtX3NldC5tYXJrcywKICAgICAgICAgICAg
ICAgICAgICAgc2NvcGVudW0sCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtX2luZGV4LAogICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBuZXdjYWxscy5hcHBlbmQobmV3Y2FsbHNw
ZWMpCiAgICAgICAgIHNlbGYuX2NhbGxzID0gbmV3Y2FsbHMKIAotICAgIGRlZiBhZGRjYWxsKHNl
bGYsIGZ1bmNhcmdzPU5vbmUsIGlkPU5PVFNFVCwgcGFyYW09Tk9UU0VUKToKLSAgICAgICAgIiIi
IEFkZCBhIG5ldyBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24gZHVyaW5nIHRo
ZSBjb2xsZWN0aW9uIHBoYXNlIG9mIGEgdGVzdCBydW4uCi0KLSAgICAgICAgLi4gZGVwcmVjYXRl
ZDo6IDMuMworICAgIGRlZiBfcmVzb2x2ZV9hcmdfaWRzKAorICAgICAgICBzZWxmLAorICAgICAg
ICBhcmduYW1lczogdHlwaW5nLlNlcXVlbmNlW3N0cl0sCisgICAgICAgIGlkczogT3B0aW9uYWxb
CisgICAgICAgICAgICBVbmlvblsKKyAgICAgICAgICAgICAgICBJdGVyYWJsZVtVbmlvbltOb25l
LCBzdHIsIGZsb2F0LCBpbnQsIGJvb2xdXSwKKyAgICAgICAgICAgICAgICBDYWxsYWJsZVtbQW55
XSwgT3B0aW9uYWxbb2JqZWN0XV0sCisgICAgICAgICAgICBdCisgICAgICAgIF0sCisgICAgICAg
IHBhcmFtZXRlcnM6IHR5cGluZy5TZXF1ZW5jZVtQYXJhbWV0ZXJTZXRdLAorICAgICAgICBub2Rl
aWQ6IHN0ciwKKyAgICApIC0+IExpc3Rbc3RyXToKKyAgICAgICAgIiIiUmVzb2x2ZSB0aGUgYWN0
dWFsIGlkcyBmb3IgdGhlIGdpdmVuIGFyZ25hbWVzLCBiYXNlZCBvbiB0aGUgYGBpZHNgYCBwYXJh
bWV0ZXIgZ2l2ZW4KKyAgICAgICAgdG8gYGBwYXJhbWV0cml6ZWBgLgorCisgICAgICAgIDpwYXJh
bSBMaXN0W3N0cl0gYXJnbmFtZXM6IExpc3Qgb2YgYXJndW1lbnQgbmFtZXMgcGFzc2VkIHRvIGBg
cGFyYW1ldHJpemUoKWBgLgorICAgICAgICA6cGFyYW0gaWRzOiBUaGUgaWRzIHBhcmFtZXRlciBv
ZiB0aGUgcGFyYW1ldHJpemVkIGNhbGwgKHNlZSBkb2NzKS4KKyAgICAgICAgOnBhcmFtIExpc3Rb
UGFyYW1ldGVyU2V0XSBwYXJhbWV0ZXJzOiBUaGUgbGlzdCBvZiBwYXJhbWV0ZXIgdmFsdWVzLCBz
YW1lIHNpemUgYXMgYGBhcmduYW1lc2BgLgorICAgICAgICA6cGFyYW0gc3RyIHN0cjogVGhlIG5v
ZGVpZCBvZiB0aGUgaXRlbSB0aGF0IGdlbmVyYXRlZCB0aGlzIHBhcmFtZXRyaXplZCBjYWxsLgor
ICAgICAgICA6cnR5cGU6IExpc3Rbc3RyXQorICAgICAgICA6cmV0dXJuczogVGhlIGxpc3Qgb2Yg
aWRzIGZvciBlYWNoIGFyZ25hbWUgZ2l2ZW4uCisgICAgICAgICIiIgorICAgICAgICBpZiBpZHMg
aXMgTm9uZToKKyAgICAgICAgICAgIGlkZm4gPSBOb25lCisgICAgICAgICAgICBpZHNfID0gTm9u
ZQorICAgICAgICBlbGlmIGNhbGxhYmxlKGlkcyk6CisgICAgICAgICAgICBpZGZuID0gaWRzCisg
ICAgICAgICAgICBpZHNfID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWRmbiA9
IE5vbmUKKyAgICAgICAgICAgIGlkc18gPSBzZWxmLl92YWxpZGF0ZV9pZHMoaWRzLCBwYXJhbWV0
ZXJzLCBzZWxmLmZ1bmN0aW9uLl9fbmFtZV9fKQorICAgICAgICByZXR1cm4gaWRtYWtlcihhcmdu
YW1lcywgcGFyYW1ldGVycywgaWRmbiwgaWRzXywgc2VsZi5jb25maWcsIG5vZGVpZD1ub2RlaWQp
CiAKLSAgICAgICAgICAgIFVzZSA6bWV0aDpgcGFyYW1ldHJpemVgIGluc3RlYWQuCisgICAgZGVm
IF92YWxpZGF0ZV9pZHMoCisgICAgICAgIHNlbGYsCisgICAgICAgIGlkczogSXRlcmFibGVbVW5p
b25bTm9uZSwgc3RyLCBmbG9hdCwgaW50LCBib29sXV0sCisgICAgICAgIHBhcmFtZXRlcnM6IHR5
cGluZy5TZXF1ZW5jZVtQYXJhbWV0ZXJTZXRdLAorICAgICAgICBmdW5jX25hbWU6IHN0ciwKKyAg
ICApIC0+IExpc3RbVW5pb25bTm9uZSwgc3RyXV06CisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IG51bV9pZHMgPSBsZW4oaWRzKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgICAgIGV4
Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXRlcihp
ZHMpCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCJpZHMgbXVzdCBiZSBhIGNhbGxhYmxlIG9yIGFuIGl0ZXJhYmxlIikg
ZnJvbSBlCisgICAgICAgICAgICBudW1faWRzID0gbGVuKHBhcmFtZXRlcnMpCisKKyAgICAgICAg
IyBudW1faWRzID09IDAgaXMgYSBzcGVjaWFsIGNhc2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMTg0OQorICAgICAgICBpZiBudW1faWRzICE9IGxlbihwYXJh
bWV0ZXJzKSBhbmQgbnVtX2lkcyAhPSAwOgorICAgICAgICAgICAgbXNnID0gIkluIHt9OiB7fSBw
YXJhbWV0ZXIgc2V0cyBzcGVjaWZpZWQsIHdpdGggZGlmZmVyZW50IG51bWJlciBvZiBpZHM6IHt9
IgorICAgICAgICAgICAgZmFpbChtc2cuZm9ybWF0KGZ1bmNfbmFtZSwgbGVuKHBhcmFtZXRlcnMp
LCBudW1faWRzKSwgcHl0cmFjZT1GYWxzZSkKKworICAgICAgICBuZXdfaWRzID0gW10KKyAgICAg
ICAgZm9yIGlkeCwgaWRfdmFsdWUgaW4gZW51bWVyYXRlKGl0ZXJ0b29scy5pc2xpY2UoaWRzLCBu
dW1faWRzKSk6CisgICAgICAgICAgICBpZiBpZF92YWx1ZSBpcyBOb25lIG9yIGlzaW5zdGFuY2Uo
aWRfdmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgbmV3X2lkcy5hcHBlbmQoaWRfdmFsdWUp
CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoaWRfdmFsdWUsIChmbG9hdCwgaW50LCBib29s
KSk6CisgICAgICAgICAgICAgICAgbmV3X2lkcy5hcHBlbmQoc3RyKGlkX3ZhbHVlKSkKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbXNnID0gKCAgIyB0eXBlOiBpZ25vcmVbdW5y
ZWFjaGFibGVdCisgICAgICAgICAgICAgICAgICAgICJJbiB7fTogaWRzIG11c3QgYmUgbGlzdCBv
ZiBzdHJpbmcvZmxvYXQvaW50L2Jvb2wsICIKKyAgICAgICAgICAgICAgICAgICAgImZvdW5kOiB7
fSAodHlwZTogeyFyfSkgYXQgaW5kZXgge30iCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgIGZhaWwoCisgICAgICAgICAgICAgICAgICAgIG1zZy5mb3JtYXQoZnVuY19uYW1lLCBz
YWZlcmVwcihpZF92YWx1ZSksIHR5cGUoaWRfdmFsdWUpLCBpZHgpLAorICAgICAgICAgICAgICAg
ICAgICBweXRyYWNlPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIG5l
d19pZHMKIAotICAgICAgICBOb3RlIHRoYXQgcmVxdWVzdC5hZGRjYWxsKCkgaXMgY2FsbGVkIGR1
cmluZyB0aGUgdGVzdCBjb2xsZWN0aW9uIHBoYXNlIHByaW9yIGFuZAotICAgICAgICBpbmRlcGVu
ZGVudGx5IHRvIGFjdHVhbCB0ZXN0IGV4ZWN1dGlvbi4gIFlvdSBzaG91bGQgb25seSB1c2UgYWRk
Y2FsbCgpCi0gICAgICAgIGlmIHlvdSBuZWVkIHRvIHNwZWNpZnkgbXVsdGlwbGUgYXJndW1lbnRz
IG9mIGEgdGVzdCBmdW5jdGlvbi4KKyAgICBkZWYgX3Jlc29sdmVfYXJnX3ZhbHVlX3R5cGVzKAor
ICAgICAgICBzZWxmLAorICAgICAgICBhcmduYW1lczogdHlwaW5nLlNlcXVlbmNlW3N0cl0sCisg
ICAgICAgIGluZGlyZWN0OiBVbmlvbltib29sLCB0eXBpbmcuU2VxdWVuY2Vbc3RyXV0sCisgICAg
KSAtPiBEaWN0W3N0ciwgIkxpdGVyYWxbJ3BhcmFtcycsICdmdW5jYXJncyddIl06CisgICAgICAg
ICIiIlJlc29sdmUgaWYgZWFjaCBwYXJhbWV0cml6ZWQgYXJndW1lbnQgbXVzdCBiZSBjb25zaWRl
cmVkIGEKKyAgICAgICAgcGFyYW1ldGVyIHRvIGEgZml4dHVyZSBvciBhICJmdW5jYXJnIiB0byB0
aGUgZnVuY3Rpb24sIGJhc2VkIG9uIHRoZQorICAgICAgICBgYGluZGlyZWN0YGAgcGFyYW1ldGVy
IG9mIHRoZSBwYXJhbWV0cml6ZWQoKSBjYWxsLgorCisgICAgICAgIDpwYXJhbSBMaXN0W3N0cl0g
YXJnbmFtZXM6IExpc3Qgb2YgYXJndW1lbnQgbmFtZXMgcGFzc2VkIHRvIGBgcGFyYW1ldHJpemUo
KWBgLgorICAgICAgICA6cGFyYW0gaW5kaXJlY3Q6IFNhbWUgYXMgdGhlIGBgaW5kaXJlY3RgYCBw
YXJhbWV0ZXIgb2YgYGBwYXJhbWV0cml6ZSgpYGAuCisgICAgICAgIDpydHlwZTogRGljdFtzdHIs
IHN0cl0KKyAgICAgICAgICAgIEEgZGljdCBtYXBwaW5nIGVhY2ggYXJnIG5hbWUgdG8gZWl0aGVy
OgorICAgICAgICAgICAgKiAicGFyYW1zIiBpZiB0aGUgYXJnbmFtZSBzaG91bGQgYmUgdGhlIHBh
cmFtZXRlciBvZiBhIGZpeHR1cmUgb2YgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgICAgICogImZ1
bmNhcmdzIiBpZiB0aGUgYXJnbmFtZSBzaG91bGQgYmUgYSBwYXJhbWV0ZXIgdG8gdGhlIHBhcmFt
ZXRyaXplZCB0ZXN0IGZ1bmN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZShpbmRpcmVjdCwgYm9vbCk6CisgICAgICAgICAgICB2YWx0eXBlcyA9IGRpY3QuZnJvbWtleXMo
CisgICAgICAgICAgICAgICAgYXJnbmFtZXMsICJwYXJhbXMiIGlmIGluZGlyZWN0IGVsc2UgImZ1
bmNhcmdzIgorICAgICAgICAgICAgKSAgIyB0eXBlOiBEaWN0W3N0ciwgTGl0ZXJhbFsicGFyYW1z
IiwgImZ1bmNhcmdzIl1dCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShpbmRpcmVjdCwgU2VxdWVu
Y2UpOgorICAgICAgICAgICAgdmFsdHlwZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVu
Y2FyZ3MiKQorICAgICAgICAgICAgZm9yIGFyZyBpbiBpbmRpcmVjdDoKKyAgICAgICAgICAgICAg
ICBpZiBhcmcgbm90IGluIGFyZ25hbWVzOgorICAgICAgICAgICAgICAgICAgICBmYWlsKAorICAg
ICAgICAgICAgICAgICAgICAgICAgIkluIHt9OiBpbmRpcmVjdCBmaXh0dXJlICd7fScgZG9lc24n
dCBleGlzdCIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnVuY3Rp
b24uX19uYW1lX18sIGFyZworICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICB2YWx0eXBlc1thcmddID0gInBhcmFtcyIKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGZhaWwoCisgICAgICAgICAgICAgICAgIkluIHtmdW5jfTogZXhwZWN0ZWQgU2VxdWVu
Y2Ugb3IgYm9vbGVhbiBmb3IgaW5kaXJlY3QsIGdvdCB7dHlwZX0iLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgdHlwZT10eXBlKGluZGlyZWN0KS5fX25hbWVfXywgZnVuYz1zZWxmLmZ1bmN0
aW9uLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBweXRyYWNl
PUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gdmFsdHlwZXMKIAotICAgICAg
ICA6YXJnIGZ1bmNhcmdzOiBhcmd1bWVudCBrZXl3b3JkIGRpY3Rpb25hcnkgdXNlZCB3aGVuIGlu
dm9raW5nCi0gICAgICAgICAgICB0aGUgdGVzdCBmdW5jdGlvbi4KKyAgICBkZWYgX3ZhbGlkYXRl
X2lmX3VzaW5nX2FyZ19uYW1lcygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgYXJnbmFtZXM6IHR5
cGluZy5TZXF1ZW5jZVtzdHJdLAorICAgICAgICBpbmRpcmVjdDogVW5pb25bYm9vbCwgdHlwaW5n
LlNlcXVlbmNlW3N0cl1dLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiQ2hlY2sgaWYgYWxs
IGFyZ25hbWVzIGFyZSBiZWluZyB1c2VkLCBieSBkZWZhdWx0IHZhbHVlcywgb3IgZGlyZWN0bHkv
aW5kaXJlY3RseS4KKworICAgICAgICA6cGFyYW0gTGlzdFtzdHJdIGFyZ25hbWVzOiBMaXN0IG9m
IGFyZ3VtZW50IG5hbWVzIHBhc3NlZCB0byBgYHBhcmFtZXRyaXplKClgYC4KKyAgICAgICAgOnBh
cmFtIGluZGlyZWN0OiBTYW1lIGFzIHRoZSBgYGluZGlyZWN0YGAgcGFyYW1ldGVyIG9mIGBgcGFy
YW1ldHJpemUoKWBgLgorICAgICAgICA6cmFpc2VzIFZhbHVlRXJyb3I6IElmIHZhbGlkYXRpb24g
ZmFpbHMuCisgICAgICAgICIiIgorICAgICAgICBkZWZhdWx0X2FyZ19uYW1lcyA9IHNldChnZXRf
ZGVmYXVsdF9hcmdfbmFtZXMoc2VsZi5mdW5jdGlvbikpCisgICAgICAgIGZ1bmNfbmFtZSA9IHNl
bGYuZnVuY3Rpb24uX19uYW1lX18KKyAgICAgICAgZm9yIGFyZyBpbiBhcmduYW1lczoKKyAgICAg
ICAgICAgIGlmIGFyZyBub3QgaW4gc2VsZi5maXh0dXJlbmFtZXM6CisgICAgICAgICAgICAgICAg
aWYgYXJnIGluIGRlZmF1bHRfYXJnX25hbWVzOgorICAgICAgICAgICAgICAgICAgICBmYWlsKAor
ICAgICAgICAgICAgICAgICAgICAgICAgIkluIHt9OiBmdW5jdGlvbiBhbHJlYWR5IHRha2VzIGFu
IGFyZ3VtZW50ICd7fScgd2l0aCBhIGRlZmF1bHQgdmFsdWUiLmZvcm1hdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jX25hbWUsIGFyZworICAgICAgICAgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKGluZGlyZWN0LCBTZXF1ZW5jZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lID0gImZpeHR1cmUiIGlmIGFyZyBpbiBpbmRpcmVjdCBlbHNlICJhcmd1bWVudCIKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiZml4
dHVyZSIgaWYgaW5kaXJlY3QgZWxzZSAiYXJndW1lbnQiCisgICAgICAgICAgICAgICAgICAgIGZh
aWwoCisgICAgICAgICAgICAgICAgICAgICAgICAiSW4ge306IGZ1bmN0aW9uIHVzZXMgbm8ge30g
J3t9JyIuZm9ybWF0KGZ1bmNfbmFtZSwgbmFtZSwgYXJnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB5dHJhY2U9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICkKIAotICAgICAgICA6YXJn
IGlkOiB1c2VkIGZvciByZXBvcnRpbmcgYW5kIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLiAgSWYg
eW91Ci0gICAgICAgICAgICBkb24ndCBzdXBwbHkgYW4gYGlkYCBhbiBhdXRvbWF0aWMgdW5pcXVl
IGlkIHdpbGwgYmUgZ2VuZXJhdGVkLgogCi0gICAgICAgIDphcmcgcGFyYW06IGEgcGFyYW1ldGVy
IHdoaWNoIHdpbGwgYmUgZXhwb3NlZCB0byBhIGxhdGVyIGZpeHR1cmUgZnVuY3Rpb24KLSAgICAg
ICAgICAgIGludm9jYXRpb24gdGhyb3VnaCB0aGUgYGByZXF1ZXN0LnBhcmFtYGAgYXR0cmlidXRl
LgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jb25maWc6Ci0gICAgICAgICAgICBzZWxm
LmNvbmZpZy53YXJuKAotICAgICAgICAgICAgICAgICJDMSIsIG1lc3NhZ2U9ZGVwcmVjYXRlZC5N
RVRBRlVOQ19BRERfQ0FMTCwgZnNsb2NhdGlvbj1Ob25lCi0gICAgICAgICAgICApCi0gICAgICAg
IGFzc2VydCBmdW5jYXJncyBpcyBOb25lIG9yIGlzaW5zdGFuY2UoZnVuY2FyZ3MsIGRpY3QpCi0g
ICAgICAgIGlmIGZ1bmNhcmdzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4g
ZnVuY2FyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5maXh0dXJlbmFt
ZXM6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWwoImZ1bmNhcmcgJXIgbm90IHVzZWQgaW4gdGhp
cyBmdW5jdGlvbi4iICUgbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmNhcmdz
ID0ge30KLSAgICAgICAgaWYgaWQgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoImlkPU5vbmUgbm90IGFsbG93ZWQiKQotICAgICAgICBpZiBpZCBpcyBOT1RTRVQ6Ci0gICAg
ICAgICAgICBpZCA9IGxlbihzZWxmLl9jYWxscykKLSAgICAgICAgaWQgPSBzdHIoaWQpCi0gICAg
ICAgIGlmIGlkIGluIHNlbGYuX2lkczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1
cGxpY2F0ZSBpZCAlciIgJSBpZCkKLSAgICAgICAgc2VsZi5faWRzLmFkZChpZCkKLQotICAgICAg
ICBjcyA9IENhbGxTcGVjMihzZWxmKQotICAgICAgICBjcy5zZXRhbGwoZnVuY2FyZ3MsIGlkLCBw
YXJhbSkKLSAgICAgICAgc2VsZi5fY2FsbHMuYXBwZW5kKGNzKQotCi0KLWRlZiBfZmluZF9wYXJh
bWV0cml6ZWRfc2NvcGUoYXJnbmFtZXMsIGFyZzJmaXh0dXJlZGVmcywgaW5kaXJlY3QpOgorZGVm
IF9maW5kX3BhcmFtZXRyaXplZF9zY29wZSgKKyAgICBhcmduYW1lczogdHlwaW5nLlNlcXVlbmNl
W3N0cl0sCisgICAgYXJnMmZpeHR1cmVkZWZzOiBNYXBwaW5nW3N0ciwgdHlwaW5nLlNlcXVlbmNl
W2ZpeHR1cmVzLkZpeHR1cmVEZWZbb2JqZWN0XV1dLAorICAgIGluZGlyZWN0OiBVbmlvbltib29s
LCB0eXBpbmcuU2VxdWVuY2Vbc3RyXV0sCispIC0+ICJmaXh0dXJlcy5fU2NvcGUiOgogICAgICIi
IkZpbmQgdGhlIG1vc3QgYXBwcm9wcmlhdGUgc2NvcGUgZm9yIGEgcGFyYW1ldHJpemVkIGNhbGwg
YmFzZWQgb24gaXRzIGFyZ3VtZW50cy4KIAogICAgIFdoZW4gdGhlcmUncyBhdCBsZWFzdCBvbmUg
ZGlyZWN0IGFyZ3VtZW50LCBhbHdheXMgdXNlICJmdW5jdGlvbiIgc2NvcGUuCkBAIC0xMDAxLDg4
ICsxMjQ4LDEzNyBAQCBkZWYgX2ZpbmRfcGFyYW1ldHJpemVkX3Njb3BlKGFyZ25hbWVzLCBhcmcy
Zml4dHVyZWRlZnMsIGluZGlyZWN0KToKIAogICAgIFJlbGF0ZWQgdG8gaXNzdWUgIzE4MzIsIGJh
c2VkIG9uIGNvZGUgcG9zdGVkIGJ5IEBLaW5nZHJlYWQuCiAgICAgIiIiCi0gICAgZnJvbSBfcHl0
ZXN0LmZpeHR1cmVzIGltcG9ydCBzY29wZXMKKyAgICBpZiBpc2luc3RhbmNlKGluZGlyZWN0LCBT
ZXF1ZW5jZSk6CisgICAgICAgIGFsbF9hcmd1bWVudHNfYXJlX2ZpeHR1cmVzID0gbGVuKGluZGly
ZWN0KSA9PSBsZW4oYXJnbmFtZXMpCisgICAgZWxzZToKKyAgICAgICAgYWxsX2FyZ3VtZW50c19h
cmVfZml4dHVyZXMgPSBib29sKGluZGlyZWN0KQogCi0gICAgaW5kaXJlY3RfYXNfbGlzdCA9IGlz
aW5zdGFuY2UoaW5kaXJlY3QsIChsaXN0LCB0dXBsZSkpCi0gICAgYWxsX2FyZ3VtZW50c19hcmVf
Zml4dHVyZXMgPSBpbmRpcmVjdCBpcyBUcnVlIG9yIGluZGlyZWN0X2FzX2xpc3QgYW5kIGxlbigK
LSAgICAgICAgaW5kaXJlY3QKLSAgICApID09IGFyZ25hbWVzCiAgICAgaWYgYWxsX2FyZ3VtZW50
c19hcmVfZml4dHVyZXM6CiAgICAgICAgIGZpeHR1cmVkZWZzID0gYXJnMmZpeHR1cmVkZWZzIG9y
IHt9Ci0gICAgICAgIHVzZWRfc2NvcGVzID0gW2ZpeHR1cmVkZWZbMF0uc2NvcGUgZm9yIG5hbWUs
IGZpeHR1cmVkZWYgaW4gZml4dHVyZWRlZnMuaXRlbXMoKV0KKyAgICAgICAgdXNlZF9zY29wZXMg
PSBbCisgICAgICAgICAgICBmaXh0dXJlZGVmWzBdLnNjb3BlCisgICAgICAgICAgICBmb3IgbmFt
ZSwgZml4dHVyZWRlZiBpbiBmaXh0dXJlZGVmcy5pdGVtcygpCisgICAgICAgICAgICBpZiBuYW1l
IGluIGFyZ25hbWVzCisgICAgICAgIF0KICAgICAgICAgaWYgdXNlZF9zY29wZXM6Ci0gICAgICAg
ICAgICAjIFRha2VzIHRoZSBtb3N0IG5hcnJvdyBzY29wZSBmcm9tIHVzZWQgZml4dHVyZXMKLSAg
ICAgICAgICAgIGZvciBzY29wZSBpbiByZXZlcnNlZChzY29wZXMpOgorICAgICAgICAgICAgIyBU
YWtlcyB0aGUgbW9zdCBuYXJyb3cgc2NvcGUgZnJvbSB1c2VkIGZpeHR1cmVzLgorICAgICAgICAg
ICAgZm9yIHNjb3BlIGluIHJldmVyc2VkKGZpeHR1cmVzLnNjb3Blcyk6CiAgICAgICAgICAgICAg
ICAgaWYgc2NvcGUgaW4gdXNlZF9zY29wZXM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
Y29wZQogCiAgICAgcmV0dXJuICJmdW5jdGlvbiIKIAogCi1kZWYgX2lkdmFsKHZhbCwgYXJnbmFt
ZSwgaWR4LCBpZGZuLCBjb25maWc9Tm9uZSk6CitkZWYgX2FzY2lpX2VzY2FwZWRfYnlfY29uZmln
KHZhbDogVW5pb25bc3RyLCBieXRlc10sIGNvbmZpZzogT3B0aW9uYWxbQ29uZmlnXSkgLT4gc3Ry
OgorICAgIGlmIGNvbmZpZyBpcyBOb25lOgorICAgICAgICBlc2NhcGVfb3B0aW9uID0gRmFsc2UK
KyAgICBlbHNlOgorICAgICAgICBlc2NhcGVfb3B0aW9uID0gY29uZmlnLmdldGluaSgKKyAgICAg
ICAgICAgICJkaXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxsX3JpZ2h0c190
b19jb21tdW5pdHlfc3VwcG9ydCIKKyAgICAgICAgKQorICAgICMgVE9ETzogSWYgZXNjYXBpbmcg
aXMgdHVybmVkIG9mZiBhbmQgdGhlIHVzZXIgcGFzc2VzIGJ5dGVzLAorICAgICMgICAgICAgd2ls
bCByZXR1cm4gYSBieXRlcy4gRm9yIG5vdyB3ZSBpZ25vcmUgdGhpcyBidXQgdGhlCisgICAgIyAg
ICAgICBjb2RlICpwcm9iYWJseSogZG9lc24ndCBoYW5kbGUgdGhpcyBjYXNlLgorICAgIHJldHVy
biB2YWwgaWYgZXNjYXBlX29wdGlvbiBlbHNlIGFzY2lpX2VzY2FwZWQodmFsKSAgIyB0eXBlOiBp
Z25vcmUKKworCitkZWYgX2lkdmFsKAorICAgIHZhbDogb2JqZWN0LAorICAgIGFyZ25hbWU6IHN0
ciwKKyAgICBpZHg6IGludCwKKyAgICBpZGZuOiBPcHRpb25hbFtDYWxsYWJsZVtbQW55XSwgT3B0
aW9uYWxbb2JqZWN0XV1dLAorICAgIG5vZGVpZDogT3B0aW9uYWxbc3RyXSwKKyAgICBjb25maWc6
IE9wdGlvbmFsW0NvbmZpZ10sCispIC0+IHN0cjoKICAgICBpZiBpZGZuOgotICAgICAgICBzID0g
Tm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzID0gaWRmbih2YWwpCi0gICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAjIFNlZSBpc3N1ZSBodHRwczovL2dpdGh1Yi5j
b20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzIxNjkKLSAgICAgICAgICAgIGltcG9ydCB3YXJu
aW5ncwotCi0gICAgICAgICAgICBtc2cgPSAiUmFpc2VkIHdoaWxlIHRyeWluZyB0byBkZXRlcm1p
bmUgaWQgb2YgcGFyYW1ldGVyICVzIGF0IHBvc2l0aW9uICVkLiIgJSAoCi0gICAgICAgICAgICAg
ICAgYXJnbmFtZSwgaWR4Ci0gICAgICAgICAgICApCi0gICAgICAgICAgICBtc2cgKz0gIlxuVXBk
YXRlIHlvdXIgY29kZSBhcyB0aGlzIHdpbGwgcmFpc2UgYW4gZXJyb3IgaW4gcHl0ZXN0LTQuMC4i
Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAg
ICAgICBpZiBzOgotICAgICAgICAgICAgcmV0dXJuIGFzY2lpX2VzY2FwZWQocykKLQotICAgIGlm
IGNvbmZpZzoKKyAgICAgICAgICAgIGdlbmVyYXRlZF9pZCA9IGlkZm4odmFsKQorICAgICAgICAg
ICAgaWYgZ2VuZXJhdGVkX2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHZhbCA9IGdl
bmVyYXRlZF9pZAorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBw
cmVmaXggPSAie306ICIuZm9ybWF0KG5vZGVpZCkgaWYgbm9kZWlkIGlzIG5vdCBOb25lIGVsc2Ug
IiIKKyAgICAgICAgICAgIG1zZyA9ICJlcnJvciByYWlzZWQgd2hpbGUgdHJ5aW5nIHRvIGRldGVy
bWluZSBpZCBvZiBwYXJhbWV0ZXIgJ3t9JyBhdCBwb3NpdGlvbiB7fSIKKyAgICAgICAgICAgIG1z
ZyA9IHByZWZpeCArIG1zZy5mb3JtYXQoYXJnbmFtZSwgaWR4KQorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcihtc2cpIGZyb20gZQorICAgIGVsaWYgY29uZmlnOgogICAgICAgICBob29rX2lk
ID0gY29uZmlnLmhvb2sucHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQoCiAgICAgICAgICAgICBj
b25maWc9Y29uZmlnLCB2YWw9dmFsLCBhcmduYW1lPWFyZ25hbWUKLSAgICAgICAgKQorICAgICAg
ICApICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KICAgICAgICAgaWYgaG9va19pZDoKICAgICAgICAg
ICAgIHJldHVybiBob29rX2lkCiAKICAgICBpZiBpc2luc3RhbmNlKHZhbCwgU1RSSU5HX1RZUEVT
KToKLSAgICAgICAgcmV0dXJuIGFzY2lpX2VzY2FwZWQodmFsKQotICAgIGVsaWYgaXNpbnN0YW5j
ZSh2YWwsIChmbG9hdCwgaW50LCBib29sLCBOb25lVHlwZSkpOgorICAgICAgICByZXR1cm4gX2Fz
Y2lpX2VzY2FwZWRfYnlfY29uZmlnKHZhbCwgY29uZmlnKQorICAgIGVsaWYgdmFsIGlzIE5vbmUg
b3IgaXNpbnN0YW5jZSh2YWwsIChmbG9hdCwgaW50LCBib29sKSk6CiAgICAgICAgIHJldHVybiBz
dHIodmFsKQogICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIFJFR0VYX1RZUEUpOgogICAgICAgICBy
ZXR1cm4gYXNjaWlfZXNjYXBlZCh2YWwucGF0dGVybikKLSAgICBlbGlmIGVudW0gaXMgbm90IE5v
bmUgYW5kIGlzaW5zdGFuY2UodmFsLCBlbnVtLkVudW0pOgorICAgIGVsaWYgdmFsIGlzIE5PVFNF
VDoKKyAgICAgICAgIyBGYWxsYmFjayB0byBkZWZhdWx0LiBOb3RlIHRoYXQgTk9UU0VUIGlzIGFu
IGVudW0uRW51bS4KKyAgICAgICAgcGFzcworICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIGVudW0u
RW51bSk6CiAgICAgICAgIHJldHVybiBzdHIodmFsKQotICAgIGVsaWYgKGlzY2xhc3ModmFsKSBv
ciBpc2Z1bmN0aW9uKHZhbCkpIGFuZCBoYXNhdHRyKHZhbCwgIl9fbmFtZV9fIik6Ci0gICAgICAg
IHJldHVybiB2YWwuX19uYW1lX18KKyAgICBlbGlmIGlzaW5zdGFuY2UoZ2V0YXR0cih2YWwsICJf
X25hbWVfXyIsIE5vbmUpLCBzdHIpOgorICAgICAgICAjIE5hbWUgb2YgYSBjbGFzcywgZnVuY3Rp
b24sIG1vZHVsZSwgZXRjLgorICAgICAgICBuYW1lID0gZ2V0YXR0cih2YWwsICJfX25hbWVfXyIp
ICAjIHR5cGU6IHN0cgorICAgICAgICByZXR1cm4gbmFtZQogICAgIHJldHVybiBzdHIoYXJnbmFt
ZSkgKyBzdHIoaWR4KQogCiAKLWRlZiBfaWR2YWxzZXQoaWR4LCBwYXJhbWV0ZXJzZXQsIGFyZ25h
bWVzLCBpZGZuLCBpZHMsIGNvbmZpZz1Ob25lKToKK2RlZiBfaWR2YWxzZXQoCisgICAgaWR4OiBp
bnQsCisgICAgcGFyYW1ldGVyc2V0OiBQYXJhbWV0ZXJTZXQsCisgICAgYXJnbmFtZXM6IEl0ZXJh
YmxlW3N0cl0sCisgICAgaWRmbjogT3B0aW9uYWxbQ2FsbGFibGVbW0FueV0sIE9wdGlvbmFsW29i
amVjdF1dXSwKKyAgICBpZHM6IE9wdGlvbmFsW0xpc3RbVW5pb25bTm9uZSwgc3RyXV1dLAorICAg
IG5vZGVpZDogT3B0aW9uYWxbc3RyXSwKKyAgICBjb25maWc6IE9wdGlvbmFsW0NvbmZpZ10sCisp
IC0+IHN0cjoKICAgICBpZiBwYXJhbWV0ZXJzZXQuaWQgaXMgbm90IE5vbmU6CiAgICAgICAgIHJl
dHVybiBwYXJhbWV0ZXJzZXQuaWQKLSAgICBpZiBpZHMgaXMgTm9uZSBvciAoaWR4ID49IGxlbihp
ZHMpIG9yIGlkc1tpZHhdIGlzIE5vbmUpOgorICAgIGlkID0gTm9uZSBpZiBpZHMgaXMgTm9uZSBv
ciBpZHggPj0gbGVuKGlkcykgZWxzZSBpZHNbaWR4XQorICAgIGlmIGlkIGlzIE5vbmU6CiAgICAg
ICAgIHRoaXNfaWQgPSBbCi0gICAgICAgICAgICBfaWR2YWwodmFsLCBhcmduYW1lLCBpZHgsIGlk
Zm4sIGNvbmZpZykKKyAgICAgICAgICAgIF9pZHZhbCh2YWwsIGFyZ25hbWUsIGlkeCwgaWRmbiwg
bm9kZWlkPW5vZGVpZCwgY29uZmlnPWNvbmZpZykKICAgICAgICAgICAgIGZvciB2YWwsIGFyZ25h
bWUgaW4gemlwKHBhcmFtZXRlcnNldC52YWx1ZXMsIGFyZ25hbWVzKQogICAgICAgICBdCiAgICAg
ICAgIHJldHVybiAiLSIuam9pbih0aGlzX2lkKQogICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBh
c2NpaV9lc2NhcGVkKGlkc1tpZHhdKQotCi0KLWRlZiBpZG1ha2VyKGFyZ25hbWVzLCBwYXJhbWV0
ZXJzZXRzLCBpZGZuPU5vbmUsIGlkcz1Ob25lLCBjb25maWc9Tm9uZSk6Ci0gICAgaWRzID0gWwot
ICAgICAgICBfaWR2YWxzZXQodmFsaW5kZXgsIHBhcmFtZXRlcnNldCwgYXJnbmFtZXMsIGlkZm4s
IGlkcywgY29uZmlnKQorICAgICAgICByZXR1cm4gX2FzY2lpX2VzY2FwZWRfYnlfY29uZmlnKGlk
LCBjb25maWcpCisKKworZGVmIGlkbWFrZXIoCisgICAgYXJnbmFtZXM6IEl0ZXJhYmxlW3N0cl0s
CisgICAgcGFyYW1ldGVyc2V0czogSXRlcmFibGVbUGFyYW1ldGVyU2V0XSwKKyAgICBpZGZuOiBP
cHRpb25hbFtDYWxsYWJsZVtbQW55XSwgT3B0aW9uYWxbb2JqZWN0XV1dID0gTm9uZSwKKyAgICBp
ZHM6IE9wdGlvbmFsW0xpc3RbVW5pb25bTm9uZSwgc3RyXV1dID0gTm9uZSwKKyAgICBjb25maWc6
IE9wdGlvbmFsW0NvbmZpZ10gPSBOb25lLAorICAgIG5vZGVpZDogT3B0aW9uYWxbc3RyXSA9IE5v
bmUsCispIC0+IExpc3Rbc3RyXToKKyAgICByZXNvbHZlZF9pZHMgPSBbCisgICAgICAgIF9pZHZh
bHNldCgKKyAgICAgICAgICAgIHZhbGluZGV4LCBwYXJhbWV0ZXJzZXQsIGFyZ25hbWVzLCBpZGZu
LCBpZHMsIGNvbmZpZz1jb25maWcsIG5vZGVpZD1ub2RlaWQKKyAgICAgICAgKQogICAgICAgICBm
b3IgdmFsaW5kZXgsIHBhcmFtZXRlcnNldCBpbiBlbnVtZXJhdGUocGFyYW1ldGVyc2V0cykKICAg
ICBdCi0gICAgaWYgbGVuKHNldChpZHMpKSAhPSBsZW4oaWRzKToKLSAgICAgICAgIyBUaGUgaWRz
IGFyZSBub3QgdW5pcXVlCi0gICAgICAgIGR1cGxpY2F0ZXMgPSBbdGVzdGlkIGZvciB0ZXN0aWQg
aW4gaWRzIGlmIGlkcy5jb3VudCh0ZXN0aWQpID4gMV0KLSAgICAgICAgY291bnRlcnMgPSBjb2xs
ZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGE6IDApCi0gICAgICAgIGZvciBpbmRleCwgdGVzdGlk
IGluIGVudW1lcmF0ZShpZHMpOgotICAgICAgICAgICAgaWYgdGVzdGlkIGluIGR1cGxpY2F0ZXM6
Ci0gICAgICAgICAgICAgICAgaWRzW2luZGV4XSA9IHRlc3RpZCArIHN0cihjb3VudGVyc1t0ZXN0
aWRdKQotICAgICAgICAgICAgICAgIGNvdW50ZXJzW3Rlc3RpZF0gKz0gMQotICAgIHJldHVybiBp
ZHMKKworICAgICMgQWxsIElEcyBtdXN0IGJlIHVuaXF1ZSEKKyAgICB1bmlxdWVfaWRzID0gc2V0
KHJlc29sdmVkX2lkcykKKyAgICBpZiBsZW4odW5pcXVlX2lkcykgIT0gbGVuKHJlc29sdmVkX2lk
cyk6CisKKyAgICAgICAgIyBSZWNvcmQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBlYWNo
IHRlc3QgSUQuCisgICAgICAgIHRlc3RfaWRfY291bnRzID0gQ291bnRlcihyZXNvbHZlZF9pZHMp
CisKKyAgICAgICAgIyBNYXAgdGhlIHRlc3QgSUQgdG8gaXRzIG5leHQgc3VmZml4LgorICAgICAg
ICB0ZXN0X2lkX3N1ZmZpeGVzID0gZGVmYXVsdGRpY3QoaW50KSAgIyB0eXBlOiBEaWN0W3N0ciwg
aW50XQorCisgICAgICAgICMgU3VmZml4IG5vbi11bmlxdWUgSURzIHRvIG1ha2UgdGhlbSB1bmlx
dWUuCisgICAgICAgIGZvciBpbmRleCwgdGVzdF9pZCBpbiBlbnVtZXJhdGUocmVzb2x2ZWRfaWRz
KToKKyAgICAgICAgICAgIGlmIHRlc3RfaWRfY291bnRzW3Rlc3RfaWRdID4gMToKKyAgICAgICAg
ICAgICAgICByZXNvbHZlZF9pZHNbaW5kZXhdID0gInt9e30iLmZvcm1hdCh0ZXN0X2lkLCB0ZXN0
X2lkX3N1ZmZpeGVzW3Rlc3RfaWRdKQorICAgICAgICAgICAgICAgIHRlc3RfaWRfc3VmZml4ZXNb
dGVzdF9pZF0gKz0gMQorCisgICAgcmV0dXJuIHJlc29sdmVkX2lkcwogCiAKIGRlZiBzaG93X2Zp
eHR1cmVzX3Blcl90ZXN0KGNvbmZpZyk6CkBAIC0xMDkxLDcgKzEzODcsNyBAQCBkZWYgc2hvd19m
aXh0dXJlc19wZXJfdGVzdChjb25maWcpOgogICAgIHJldHVybiB3cmFwX3Nlc3Npb24oY29uZmln
LCBfc2hvd19maXh0dXJlc19wZXJfdGVzdCkKIAogCi1kZWYgX3Nob3dfZml4dHVyZXNfcGVyX3Rl
c3QoY29uZmlnLCBzZXNzaW9uKToKK2RlZiBfc2hvd19maXh0dXJlc19wZXJfdGVzdChjb25maWc6
IENvbmZpZywgc2Vzc2lvbjogU2Vzc2lvbikgLT4gTm9uZToKICAgICBpbXBvcnQgX3B5dGVzdC5j
b25maWcKIAogICAgIHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KCkKQEAgLTExMDAsMTAgKzEzOTYs
MTAgQEAgZGVmIF9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0KGNvbmZpZywgc2Vzc2lvbik6CiAgICAg
dmVyYm9zZSA9IGNvbmZpZy5nZXR2YWx1ZSgidmVyYm9zZSIpCiAKICAgICBkZWYgZ2V0X2Jlc3Rf
cmVscGF0aChmdW5jKToKLSAgICAgICAgbG9jID0gZ2V0bG9jYXRpb24oZnVuYywgY3VyZGlyKQot
ICAgICAgICByZXR1cm4gY3VyZGlyLmJlc3RyZWxwYXRoKGxvYykKKyAgICAgICAgbG9jID0gZ2V0
bG9jYXRpb24oZnVuYywgc3RyKGN1cmRpcikpCisgICAgICAgIHJldHVybiBjdXJkaXIuYmVzdHJl
bHBhdGgocHkucGF0aC5sb2NhbChsb2MpKQogCi0gICAgZGVmIHdyaXRlX2ZpeHR1cmUoZml4dHVy
ZV9kZWYpOgorICAgIGRlZiB3cml0ZV9maXh0dXJlKGZpeHR1cmVfZGVmOiBmaXh0dXJlcy5GaXh0
dXJlRGVmW29iamVjdF0pIC0+IE5vbmU6CiAgICAgICAgIGFyZ25hbWUgPSBmaXh0dXJlX2RlZi5h
cmduYW1lCiAgICAgICAgIGlmIHZlcmJvc2UgPD0gMCBhbmQgYXJnbmFtZS5zdGFydHN3aXRoKCJf
Iik6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTExMTMsNDMgKzE0MDksNDEgQEAgZGVmIF9zaG93
X2ZpeHR1cmVzX3Blcl90ZXN0KGNvbmZpZywgc2Vzc2lvbik6CiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBmdW5jYXJnc3BlYyA9IGFyZ25hbWUKICAgICAgICAgdHcubGluZShmdW5jYXJnc3Bl
YywgZ3JlZW49VHJ1ZSkKLSAgICAgICAgZml4dHVyZV9kb2MgPSBmaXh0dXJlX2RlZi5mdW5jLl9f
ZG9jX18KKyAgICAgICAgZml4dHVyZV9kb2MgPSBpbnNwZWN0LmdldGRvYyhmaXh0dXJlX2RlZi5m
dW5jKQogICAgICAgICBpZiBmaXh0dXJlX2RvYzoKICAgICAgICAgICAgIHdyaXRlX2RvY3N0cmlu
Zyh0dywgZml4dHVyZV9kb2MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0dy5saW5lKCIg
ICAgbm8gZG9jc3RyaW5nIGF2YWlsYWJsZSIsIHJlZD1UcnVlKQogCi0gICAgZGVmIHdyaXRlX2l0
ZW0oaXRlbSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGluZm8gPSBpdGVtLl9maXh0dXJl
aW5mbwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIGRvY3Rl
c3RzIGl0ZW1zIGhhdmUgbm8gX2ZpeHR1cmVpbmZvIGF0dHJpYnV0ZQotICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgIGlmIG5vdCBpbmZvLm5hbWUyZml4dHVyZWRlZnM6Ci0gICAgICAgICAgICAj
IHRoaXMgdGVzdCBpdGVtIGRvZXMgbm90IHVzZSBhbnkgZml4dHVyZXMKKyAgICBkZWYgd3JpdGVf
aXRlbShpdGVtOiBub2Rlcy5JdGVtKSAtPiBOb25lOgorICAgICAgICAjIE5vdCBhbGwgaXRlbXMg
aGF2ZSBfZml4dHVyZWluZm8gYXR0cmlidXRlLgorICAgICAgICBpbmZvID0gZ2V0YXR0cihpdGVt
LCAiX2ZpeHR1cmVpbmZvIiwgTm9uZSkgICMgdHlwZTogT3B0aW9uYWxbRnVuY0ZpeHR1cmVJbmZv
XQorICAgICAgICBpZiBpbmZvIGlzIE5vbmUgb3Igbm90IGluZm8ubmFtZTJmaXh0dXJlZGVmczoK
KyAgICAgICAgICAgICMgVGhpcyB0ZXN0IGl0ZW0gZG9lcyBub3QgdXNlIGFueSBmaXh0dXJlcy4K
ICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0dy5saW5lKCkKICAgICAgICAgdHcuc2VwKCIt
IiwgImZpeHR1cmVzIHVzZWQgYnkge30iLmZvcm1hdChpdGVtLm5hbWUpKQotICAgICAgICB0dy5z
ZXAoIi0iLCAiKHt9KSIuZm9ybWF0KGdldF9iZXN0X3JlbHBhdGgoaXRlbS5mdW5jdGlvbikpKQot
ICAgICAgICAjIGRpY3Qga2V5IG5vdCB1c2VkIGluIGxvb3AgYnV0IG5lZWRlZCBmb3Igc29ydGlu
ZworICAgICAgICAjIFRPRE86IEZpeCB0aGlzIHR5cGUgaWdub3JlLgorICAgICAgICB0dy5zZXAo
Ii0iLCAiKHt9KSIuZm9ybWF0KGdldF9iZXN0X3JlbHBhdGgoaXRlbS5mdW5jdGlvbikpKSAgIyB0
eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAgICAjIGRpY3Qga2V5IG5vdCB1c2VkIGlu
IGxvb3AgYnV0IG5lZWRlZCBmb3Igc29ydGluZy4KICAgICAgICAgZm9yIF8sIGZpeHR1cmVkZWZz
IGluIHNvcnRlZChpbmZvLm5hbWUyZml4dHVyZWRlZnMuaXRlbXMoKSk6CiAgICAgICAgICAgICBh
c3NlcnQgZml4dHVyZWRlZnMgaXMgbm90IE5vbmUKICAgICAgICAgICAgIGlmIG5vdCBmaXh0dXJl
ZGVmczoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgIyBsYXN0IGl0ZW0g
aXMgZXhwZWN0ZWQgdG8gYmUgdGhlIG9uZSB1c2VkIGJ5IHRoZSB0ZXN0IGl0ZW0KKyAgICAgICAg
ICAgICMgTGFzdCBpdGVtIGlzIGV4cGVjdGVkIHRvIGJlIHRoZSBvbmUgdXNlZCBieSB0aGUgdGVz
dCBpdGVtLgogICAgICAgICAgICAgd3JpdGVfZml4dHVyZShmaXh0dXJlZGVmc1stMV0pCiAKICAg
ICBmb3Igc2Vzc2lvbl9pdGVtIGluIHNlc3Npb24uaXRlbXM6CiAgICAgICAgIHdyaXRlX2l0ZW0o
c2Vzc2lvbl9pdGVtKQogCiAKLWRlZiBzaG93Zml4dHVyZXMoY29uZmlnKToKK2RlZiBzaG93Zml4
dHVyZXMoY29uZmlnOiBDb25maWcpIC0+IFVuaW9uW2ludCwgRXhpdENvZGVdOgogICAgIGZyb20g
X3B5dGVzdC5tYWluIGltcG9ydCB3cmFwX3Nlc3Npb24KIAogICAgIHJldHVybiB3cmFwX3Nlc3Np
b24oY29uZmlnLCBfc2hvd2ZpeHR1cmVzX21haW4pCiAKIAotZGVmIF9zaG93Zml4dHVyZXNfbWFp
bihjb25maWcsIHNlc3Npb24pOgorZGVmIF9zaG93Zml4dHVyZXNfbWFpbihjb25maWc6IENvbmZp
Zywgc2Vzc2lvbjogU2Vzc2lvbikgLT4gTm9uZToKICAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcK
IAogICAgIHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KCkKQEAgLTExNjAsMTQgKzE0NTQsMTQgQEAg
ZGVmIF9zaG93Zml4dHVyZXNfbWFpbihjb25maWcsIHNlc3Npb24pOgogICAgIGZtID0gc2Vzc2lv
bi5fZml4dHVyZW1hbmFnZXIKIAogICAgIGF2YWlsYWJsZSA9IFtdCi0gICAgc2VlbiA9IHNldCgp
CisgICAgc2VlbiA9IHNldCgpICAjIHR5cGU6IFNldFtUdXBsZVtzdHIsIHN0cl1dCiAKICAgICBm
b3IgYXJnbmFtZSwgZml4dHVyZWRlZnMgaW4gZm0uX2FyZzJmaXh0dXJlZGVmcy5pdGVtcygpOgog
ICAgICAgICBhc3NlcnQgZml4dHVyZWRlZnMgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IGZp
eHR1cmVkZWZzOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZm9yIGZpeHR1cmVkZWYg
aW4gZml4dHVyZWRlZnM6Ci0gICAgICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihmaXh0dXJlZGVm
LmZ1bmMsIGN1cmRpcikKKyAgICAgICAgICAgIGxvYyA9IGdldGxvY2F0aW9uKGZpeHR1cmVkZWYu
ZnVuYywgc3RyKGN1cmRpcikpCiAgICAgICAgICAgICBpZiAoZml4dHVyZWRlZi5hcmduYW1lLCBs
b2MpIGluIHNlZW46CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNlZW4u
YWRkKChmaXh0dXJlZGVmLmFyZ25hbWUsIGxvYykpCkBAIC0xMTc1LDcgKzE0NjksNyBAQCBkZWYg
X3Nob3dmaXh0dXJlc19tYWluKGNvbmZpZywgc2Vzc2lvbik6CiAgICAgICAgICAgICAgICAgKAog
ICAgICAgICAgICAgICAgICAgICBsZW4oZml4dHVyZWRlZi5iYXNlaWQpLAogICAgICAgICAgICAg
ICAgICAgICBmaXh0dXJlZGVmLmZ1bmMuX19tb2R1bGVfXywKLSAgICAgICAgICAgICAgICAgICAg
Y3VyZGlyLmJlc3RyZWxwYXRoKGxvYyksCisgICAgICAgICAgICAgICAgICAgIGN1cmRpci5iZXN0
cmVscGF0aChweS5wYXRoLmxvY2FsKGxvYykpLAogICAgICAgICAgICAgICAgICAgICBmaXh0dXJl
ZGVmLmFyZ25hbWUsCiAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYsCiAgICAgICAgICAg
ICAgICAgKQpAQCAtMTE4Nyw2NSArMTQ4MSw5MCBAQCBkZWYgX3Nob3dmaXh0dXJlc19tYWluKGNv
bmZpZywgc2Vzc2lvbik6CiAgICAgICAgIGlmIGN1cnJlbnRtb2R1bGUgIT0gbW9kdWxlOgogICAg
ICAgICAgICAgaWYgbm90IG1vZHVsZS5zdGFydHN3aXRoKCJfcHl0ZXN0LiIpOgogICAgICAgICAg
ICAgICAgIHR3LmxpbmUoKQotICAgICAgICAgICAgICAgIHR3LnNlcCgiLSIsICJmaXh0dXJlcyBk
ZWZpbmVkIGZyb20gJXMiICUgKG1vZHVsZSwpKQorICAgICAgICAgICAgICAgIHR3LnNlcCgiLSIs
ICJmaXh0dXJlcyBkZWZpbmVkIGZyb20ge30iLmZvcm1hdChtb2R1bGUpKQogICAgICAgICAgICAg
ICAgIGN1cnJlbnRtb2R1bGUgPSBtb2R1bGUKICAgICAgICAgaWYgdmVyYm9zZSA8PSAwIGFuZCBh
cmduYW1lWzBdID09ICJfIjoKICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHR3LndyaXRl
KGFyZ25hbWUsIGdyZWVuPVRydWUpCisgICAgICAgIGlmIGZpeHR1cmVkZWYuc2NvcGUgIT0gImZ1
bmN0aW9uIjoKKyAgICAgICAgICAgIHR3LndyaXRlKCIgWyVzIHNjb3BlXSIgJSBmaXh0dXJlZGVm
LnNjb3BlLCBjeWFuPVRydWUpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAwOgotICAgICAgICAgICAg
ZnVuY2FyZ3NwZWMgPSAiJXMgLS0gJXMiICUgKGFyZ25hbWUsIGJlc3RyZWwpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBmdW5jYXJnc3BlYyA9IGFyZ25hbWUKLSAgICAgICAgdHcubGluZShm
dW5jYXJnc3BlYywgZ3JlZW49VHJ1ZSkKLSAgICAgICAgbG9jID0gZ2V0bG9jYXRpb24oZml4dHVy
ZWRlZi5mdW5jLCBjdXJkaXIpCi0gICAgICAgIGRvYyA9IGZpeHR1cmVkZWYuZnVuYy5fX2RvY19f
IG9yICIiCisgICAgICAgICAgICB0dy53cml0ZSgiIC0tICVzIiAlIGJlc3RyZWwsIHllbGxvdz1U
cnVlKQorICAgICAgICB0dy53cml0ZSgiXG4iKQorICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihm
aXh0dXJlZGVmLmZ1bmMsIHN0cihjdXJkaXIpKQorICAgICAgICBkb2MgPSBpbnNwZWN0LmdldGRv
YyhmaXh0dXJlZGVmLmZ1bmMpCiAgICAgICAgIGlmIGRvYzoKICAgICAgICAgICAgIHdyaXRlX2Rv
Y3N0cmluZyh0dywgZG9jKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHcubGluZSgiICAg
ICVzOiBubyBkb2NzdHJpbmcgYXZhaWxhYmxlIiAlIChsb2MsKSwgcmVkPVRydWUpCi0KLQotZGVm
IHdyaXRlX2RvY3N0cmluZyh0dywgZG9jKToKLSAgICBJTkRFTlQgPSAiICAgICIKLSAgICBkb2Mg
PSBkb2MucnN0cmlwKCkKLSAgICBpZiAiXG4iIGluIGRvYzoKLSAgICAgICAgZmlyc3RsaW5lLCBy
ZXN0ID0gZG9jLnNwbGl0KCJcbiIsIDEpCi0gICAgZWxzZToKLSAgICAgICAgZmlyc3RsaW5lLCBy
ZXN0ID0gZG9jLCAiIgotCi0gICAgaWYgZmlyc3RsaW5lLnN0cmlwKCk6Ci0gICAgICAgIHR3Lmxp
bmUoSU5ERU5UICsgZmlyc3RsaW5lLnN0cmlwKCkpCi0KLSAgICBpZiByZXN0OgotICAgICAgICBm
b3IgbGluZSBpbiBkZWRlbnQocmVzdCkuc3BsaXQoIlxuIik6Ci0gICAgICAgICAgICB0dy53cml0
ZShJTkRFTlQgKyBsaW5lICsgIlxuIikKKyAgICAgICAgICAgIHR3LmxpbmUoIiAgICB7fTogbm8g
ZG9jc3RyaW5nIGF2YWlsYWJsZSIuZm9ybWF0KGxvYyksIHJlZD1UcnVlKQorICAgICAgICB0dy5s
aW5lKCkKIAogCi1jbGFzcyBGdW5jdGlvbihGdW5jdGlvbk1peGluLCBub2Rlcy5JdGVtLCBmaXh0
dXJlcy5GdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKLSAgICAiIiIgYSBGdW5jdGlvbiBJdGVtIGlz
IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuZCBleGVjdXRpbmcgYQotICAgIFB5dGhvbiB0
ZXN0IGZ1bmN0aW9uLgorZGVmIHdyaXRlX2RvY3N0cmluZyh0dzogVGVybWluYWxXcml0ZXIsIGRv
Yzogc3RyLCBpbmRlbnQ6IHN0ciA9ICIgICAgIikgLT4gTm9uZToKKyAgICBmb3IgbGluZSBpbiBk
b2Muc3BsaXQoIlxuIik6CisgICAgICAgIHR3LmxpbmUoaW5kZW50ICsgbGluZSkKKworCitjbGFz
cyBGdW5jdGlvbihQeW9iak1peGluLCBub2Rlcy5JdGVtKToKKyAgICAiIiJBbiBJdGVtIHJlc3Bv
bnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuZCBleGVjdXRpbmcgYSBQeXRob24gdGVzdCBmdW5jdGlv
bi4KKworICAgIHBhcmFtIG5hbWU6CisgICAgICAgIFRoZSBmdWxsIGZ1bmN0aW9uIG5hbWUsIGlu
Y2x1ZGluZyBhbnkgZGVjb3JhdGlvbnMgbGlrZSB0aG9zZQorICAgICAgICBhZGRlZCBieSBwYXJh
bWV0cml6YXRpb24gKGBgbXlfZnVuY1tteV9wYXJhbV1gYCkuCisgICAgcGFyYW0gcGFyZW50Ogor
ICAgICAgICBUaGUgcGFyZW50IE5vZGUuCisgICAgcGFyYW0gY29uZmlnOgorICAgICAgICBUaGUg
cHl0ZXN0IENvbmZpZyBvYmplY3QuCisgICAgcGFyYW0gY2FsbHNwZWM6CisgICAgICAgIElmIGdp
dmVuLCB0aGlzIGlzIGZ1bmN0aW9uIGhhcyBiZWVuIHBhcmFtZXRyaXplZCBhbmQgdGhlIGNhbGxz
cGVjIGNvbnRhaW5zCisgICAgICAgIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhcmFtZXRy
aXphdGlvbi4KKyAgICBwYXJhbSBjYWxsb2JqOgorICAgICAgICBJZiBnaXZlbiwgdGhlIG9iamVj
dCB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBGdW5jdGlvbiBpcyBpbnZva2VkLAorICAg
ICAgICBvdGhlcndpc2UgdGhlIGNhbGxvYmogd2lsbCBiZSBvYnRhaW5lZCBmcm9tIGBgcGFyZW50
YGAgdXNpbmcgYGBvcmlnaW5hbG5hbWVgYC4KKyAgICBwYXJhbSBrZXl3b3JkczoKKyAgICAgICAg
S2V5d29yZHMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG9iamVjdCBmb3IgIi1rIiBtYXRjaGluZy4K
KyAgICBwYXJhbSBzZXNzaW9uOgorICAgICAgICBUaGUgcHl0ZXN0IFNlc3Npb24gb2JqZWN0Lgor
ICAgIHBhcmFtIGZpeHR1cmVpbmZvOgorICAgICAgICBGaXh0dXJlIGluZm9ybWF0aW9uIGFscmVh
ZHkgcmVzb2x2ZWQgYXQgdGhpcyBmaXh0dXJlIG5vZGUuLgorICAgIHBhcmFtIG9yaWdpbmFsbmFt
ZToKKyAgICAgICAgVGhlIGF0dHJpYnV0ZSBuYW1lIHRvIHVzZSBmb3IgYWNjZXNzaW5nIHRoZSB1
bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC4KKyAgICAgICAgRGVmYXVsdHMgdG8gYGBuYW1lYGAu
IFNldCB0aGlzIGlmIG5hbWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIG5hbWUsCisg
ICAgICAgIGZvciBleGFtcGxlIHdoZW4gaXQgY29udGFpbnMgZGVjb3JhdGlvbnMgbGlrZSB0aG9z
ZSBhZGRlZCBieSBwYXJhbWV0cml6YXRpb24KKyAgICAgICAgKGBgbXlfZnVuY1tteV9wYXJhbV1g
YCkuCiAgICAgIiIiCi0gICAgX2dlbmlkID0gTm9uZQotICAgICMgZGlzYWJsZSBzaW5jZSBmdW5j
dGlvbnMgaGFuZGxlIGl0IHRoZW1zZWxmZXMKKworICAgICMgRGlzYWJsZSBzaW5jZSBmdW5jdGlv
bnMgaGFuZGxlIGl0IHRoZW1zZWx2ZXMuCiAgICAgX0FMTE9XX01BUktFUlMgPSBGYWxzZQogCiAg
ICAgZGVmIF9faW5pdF9fKAogICAgICAgICBzZWxmLAotICAgICAgICBuYW1lLAorICAgICAgICBu
YW1lOiBzdHIsCiAgICAgICAgIHBhcmVudCwKLSAgICAgICAgYXJncz1Ob25lLAotICAgICAgICBj
b25maWc9Tm9uZSwKLSAgICAgICAgY2FsbHNwZWM9Tm9uZSwKKyAgICAgICAgY29uZmlnOiBPcHRp
b25hbFtDb25maWddID0gTm9uZSwKKyAgICAgICAgY2FsbHNwZWM6IE9wdGlvbmFsW0NhbGxTcGVj
Ml0gPSBOb25lLAogICAgICAgICBjYWxsb2JqPU5PVFNFVCwKICAgICAgICAga2V5d29yZHM9Tm9u
ZSwKLSAgICAgICAgc2Vzc2lvbj1Ob25lLAotICAgICAgICBmaXh0dXJlaW5mbz1Ob25lLAotICAg
ICAgICBvcmlnaW5hbG5hbWU9Tm9uZSwKLSAgICApOgotICAgICAgICBzdXBlcihGdW5jdGlvbiwg
c2VsZikuX19pbml0X18obmFtZSwgcGFyZW50LCBjb25maWc9Y29uZmlnLCBzZXNzaW9uPXNlc3Np
b24pCi0gICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzCisgICAgICAgIHNlc3Npb246IE9wdGlvbmFs
W1Nlc3Npb25dID0gTm9uZSwKKyAgICAgICAgZml4dHVyZWluZm86IE9wdGlvbmFsW0Z1bmNGaXh0
dXJlSW5mb10gPSBOb25lLAorICAgICAgICBvcmlnaW5hbG5hbWU6IE9wdGlvbmFsW3N0cl0gPSBO
b25lLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBwYXJl
bnQsIGNvbmZpZz1jb25maWcsIHNlc3Npb249c2Vzc2lvbikKKwogICAgICAgICBpZiBjYWxsb2Jq
IGlzIG5vdCBOT1RTRVQ6CiAgICAgICAgICAgICBzZWxmLm9iaiA9IGNhbGxvYmoKIAorICAgICAg
ICAjOiBPcmlnaW5hbCBmdW5jdGlvbiBuYW1lLCB3aXRob3V0IGFueSBkZWNvcmF0aW9ucyAoZm9y
IGV4YW1wbGUKKyAgICAgICAgIzogcGFyYW1ldHJpemF0aW9uIGFkZHMgYSBgYCJbLi4uXSJgYCBz
dWZmaXggdG8gZnVuY3Rpb24gbmFtZXMpLCB1c2VkIHRvIGFjY2VzcworICAgICAgICAjOiB0aGUg
dW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgZnJvbSBgYHBhcmVudGBgIChpbiBjYXNlIGBgY2Fs
bG9iamBgIGlzIG5vdCBnaXZlbgorICAgICAgICAjOiBleHBsaWNpdGx5KS4KKyAgICAgICAgIzoK
KyAgICAgICAgIzogLi4gdmVyc2lvbmFkZGVkOjogMy4wCisgICAgICAgIHNlbGYub3JpZ2luYWxu
YW1lID0gb3JpZ2luYWxuYW1lIG9yIG5hbWUKKworICAgICAgICAjIE5vdGU6IHdoZW4gRnVuY3Rp
b25EZWZpbml0aW9uIGlzIGludHJvZHVjZWQsIHdlIHNob3VsZCBjaGFuZ2UgYGBvcmlnaW5hbG5h
bWVgYAorICAgICAgICAjIHRvIGEgcmVhZG9ubHkgcHJvcGVydHkgdGhhdCByZXR1cm5zIEZ1bmN0
aW9uRGVmaW5pdGlvbi5uYW1lLgorCiAgICAgICAgIHNlbGYua2V5d29yZHMudXBkYXRlKHNlbGYu
b2JqLl9fZGljdF9fKQogICAgICAgICBzZWxmLm93bl9tYXJrZXJzLmV4dGVuZChnZXRfdW5wYWNr
ZWRfbWFya3Moc2VsZi5vYmopKQogICAgICAgICBpZiBjYWxsc3BlYzoKQEAgLTEyNTcsNzUgKzE1
NzYsOTggQEAgY2xhc3MgRnVuY3Rpb24oRnVuY3Rpb25NaXhpbiwgbm9kZXMuSXRlbSwgZml4dHVy
ZXMuRnVuY2FyZ25hbWVzQ29tcGF0QXR0cik6CiAgICAgICAgICAgICAgICAgIyBmZWVsIGZyZWUg
dG8gY3J5LCB0aGlzIHdhcyBicm9rZW4gZm9yIHllYXJzIGJlZm9yZQogICAgICAgICAgICAgICAg
ICMgYW5kIGtleXdvcmRzIGNhbnQgZml4IGl0IHBlciBkZXNpZ24KICAgICAgICAgICAgICAgICBz
ZWxmLmtleXdvcmRzW21hcmsubmFtZV0gPSBtYXJrCi0gICAgICAgICAgICBzZWxmLm93bl9tYXJr
ZXJzLmV4dGVuZChjYWxsc3BlYy5tYXJrcykKKyAgICAgICAgICAgIHNlbGYub3duX21hcmtlcnMu
ZXh0ZW5kKG5vcm1hbGl6ZV9tYXJrX2xpc3QoY2FsbHNwZWMubWFya3MpKQogICAgICAgICBpZiBr
ZXl3b3JkczoKICAgICAgICAgICAgIHNlbGYua2V5d29yZHMudXBkYXRlKGtleXdvcmRzKQogCisg
ICAgICAgICMgdG9kbzogdGhpcyBpcyBhIGhlbGwgb2YgYSBoYWNrCisgICAgICAgICMgaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy80NTY5CisKKyAgICAgICAgc2Vs
Zi5rZXl3b3Jkcy51cGRhdGUoCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWFyay5u
YW1lOiBUcnVlCisgICAgICAgICAgICAgICAgZm9yIG1hcmsgaW4gc2VsZi5pdGVyX21hcmtlcnMo
KQorICAgICAgICAgICAgICAgIGlmIG1hcmsubmFtZSBub3QgaW4gc2VsZi5rZXl3b3JkcworICAg
ICAgICAgICAgfQorICAgICAgICApCisKICAgICAgICAgaWYgZml4dHVyZWluZm8gaXMgTm9uZToK
ICAgICAgICAgICAgIGZpeHR1cmVpbmZvID0gc2VsZi5zZXNzaW9uLl9maXh0dXJlbWFuYWdlci5n
ZXRmaXh0dXJlaW5mbygKLSAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLm9iaiwgc2VsZi5jbHMs
IGZ1bmNhcmdzPW5vdCBzZWxmLl9pc3lpZWxkZWRmdW5jdGlvbigpCisgICAgICAgICAgICAgICAg
c2VsZiwgc2VsZi5vYmosIHNlbGYuY2xzLCBmdW5jYXJncz1UcnVlCiAgICAgICAgICAgICApCi0g
ICAgICAgIHNlbGYuX2ZpeHR1cmVpbmZvID0gZml4dHVyZWluZm8KKyAgICAgICAgc2VsZi5fZml4
dHVyZWluZm8gPSBmaXh0dXJlaW5mbyAgIyB0eXBlOiBGdW5jRml4dHVyZUluZm8KICAgICAgICAg
c2VsZi5maXh0dXJlbmFtZXMgPSBmaXh0dXJlaW5mby5uYW1lc19jbG9zdXJlCiAgICAgICAgIHNl
bGYuX2luaXRyZXF1ZXN0KCkKIAotICAgICAgICAjOiBvcmlnaW5hbCBmdW5jdGlvbiBuYW1lLCB3
aXRob3V0IGFueSBkZWNvcmF0aW9ucyAoZm9yIGV4YW1wbGUKLSAgICAgICAgIzogcGFyYW1ldHJp
emF0aW9uIGFkZHMgYSBgYCJbLi4uXSJgYCBzdWZmaXggdG8gZnVuY3Rpb24gbmFtZXMpLgotICAg
ICAgICAjOgotICAgICAgICAjOiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjAKLSAgICAgICAgc2VsZi5v
cmlnaW5hbG5hbWUgPSBvcmlnaW5hbG5hbWUKLQotICAgIGRlZiBfaW5pdHJlcXVlc3Qoc2VsZik6
Ci0gICAgICAgIHNlbGYuZnVuY2FyZ3MgPSB7fQotICAgICAgICBpZiBzZWxmLl9pc3lpZWxkZWRm
dW5jdGlvbigpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKAotICAgICAgICAgICAg
ICAgIHNlbGYsICJjYWxsc3BlYyIKLSAgICAgICAgICAgICksICJ5aWVsZGVkIGZ1bmN0aW9ucyAo
ZGVwcmVjYXRlZCkgY2Fubm90IGhhdmUgZnVuY2FyZ3MiCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBpZiBoYXNhdHRyKHNlbGYsICJjYWxsc3BlYyIpOgotICAgICAgICAgICAgICAgIGNhbGxz
cGVjID0gc2VsZi5jYWxsc3BlYwotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgY2FsbHNwZWMu
ZnVuY2FyZ3MKLSAgICAgICAgICAgICAgICBzZWxmLl9nZW5pZCA9IGNhbGxzcGVjLmlkCi0gICAg
ICAgICAgICAgICAgaWYgaGFzYXR0cihjYWxsc3BlYywgInBhcmFtIik6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYucGFyYW0gPSBjYWxsc3BlYy5wYXJhbQorICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBmcm9tX3BhcmVudChjbHMsIHBhcmVudCwgKiprdyk6ICAjIHRvZG86IGRldGVybWluZSBz
b3VuZCB0eXBlIGxpbWl0YXRpb25zCisgICAgICAgICIiIlRoZSBwdWJsaWMgY29uc3RydWN0b3Iu
IiIiCisgICAgICAgIHJldHVybiBzdXBlcigpLmZyb21fcGFyZW50KHBhcmVudD1wYXJlbnQsICoq
a3cpCisKKyAgICBkZWYgX2luaXRyZXF1ZXN0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
ZnVuY2FyZ3MgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgb2JqZWN0XQogICAgICAgICBzZWxmLl9y
ZXF1ZXN0ID0gZml4dHVyZXMuRml4dHVyZVJlcXVlc3Qoc2VsZikKIAogICAgIEBwcm9wZXJ0eQog
ICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSAgICAgICAgInVuZGVybHlpbmcgcHl0aG9uICdmdW5j
dGlvbicgb2JqZWN0IgotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLm9iaiwgImltX2Z1bmMi
LCBzZWxmLm9iaikKKyAgICAgICAgIiIiVW5kZXJseWluZyBweXRob24gJ2Z1bmN0aW9uJyBvYmpl
Y3QuIiIiCisgICAgICAgIHJldHVybiBnZXRpbWZ1bmMoc2VsZi5vYmopCiAKICAgICBkZWYgX2dl
dG9iaihzZWxmKToKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZQotICAgICAgICBpID0gbmFtZS5m
aW5kKCJbIikgICMgcGFyYW1ldHJpemF0aW9uCi0gICAgICAgIGlmIGkgIT0gLTE6Ci0gICAgICAg
ICAgICBuYW1lID0gbmFtZVs6aV0KLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5wYXJlbnQu
b2JqLCBuYW1lKQorICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmUKKyAgICAg
ICAgcmV0dXJuIGdldGF0dHIoc2VsZi5wYXJlbnQub2JqLCBzZWxmLm9yaWdpbmFsbmFtZSkgICMg
dHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfcHlm
dW5jaXRlbShzZWxmKToKLSAgICAgICAgIihjb21wYXRvbmx5KSBmb3IgY29kZSBleHBlY3Rpbmcg
cHl0ZXN0LTIuMiBzdHlsZSByZXF1ZXN0IG9iamVjdHMiCisgICAgICAgICIiIihjb21wYXRvbmx5
KSBmb3IgY29kZSBleHBlY3RpbmcgcHl0ZXN0LTIuMiBzdHlsZSByZXF1ZXN0IG9iamVjdHMuIiIi
CiAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgX2lzeWllbGRlZGZ1bmN0aW9uKHNlbGYp
OgotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCAiX2FyZ3MiLCBOb25lKSBpcyBub3QgTm9u
ZQotCi0gICAgZGVmIHJ1bnRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBleGVjdXRlIHRoZSB1bmRl
cmx5aW5nIHRlc3QgZnVuY3Rpb24uICIiIgorICAgIGRlZiBydW50ZXN0KHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIkV4ZWN1dGUgdGhlIHVuZGVybHlpbmcgdGVzdCBmdW5jdGlvbi4iIiIKICAg
ICAgICAgc2VsZi5paG9vay5weXRlc3RfcHlmdW5jX2NhbGwocHlmdW5jaXRlbT1zZWxmKQogCi0g
ICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBzdXBlcihGdW5jdGlvbiwgc2VsZikuc2V0dXAo
KQotICAgICAgICBmaXh0dXJlcy5maWxsZml4dHVyZXMoc2VsZikKKyAgICBkZWYgc2V0dXAoc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhcmVudCwgSW5zdGFuY2Up
OgorICAgICAgICAgICAgc2VsZi5wYXJlbnQubmV3aW5zdGFuY2UoKQorICAgICAgICAgICAgc2Vs
Zi5vYmogPSBzZWxmLl9nZXRvYmooKQorICAgICAgICBzZWxmLl9yZXF1ZXN0Ll9maWxsZml4dHVy
ZXMoKQorCisgICAgZGVmIF9wcnVuZXRyYWNlYmFjayhzZWxmLCBleGNpbmZvOiBFeGNlcHRpb25J
bmZvW0Jhc2VFeGNlcHRpb25dKSAtPiBOb25lOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJf
b2JqIikgYW5kIG5vdCBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImZ1bGx0cmFjZSIsIEZhbHNlKToK
KyAgICAgICAgICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoZ2V0X3JlYWxfZnVuYyhzZWxm
Lm9iaikpCisgICAgICAgICAgICBwYXRoLCBmaXJzdGxpbmVubyA9IGNvZGUucGF0aCwgY29kZS5m
aXJzdGxpbmVubworICAgICAgICAgICAgdHJhY2ViYWNrID0gZXhjaW5mby50cmFjZWJhY2sKKyAg
ICAgICAgICAgIG50cmFjZWJhY2sgPSB0cmFjZWJhY2suY3V0KHBhdGg9cGF0aCwgZmlyc3RsaW5l
bm89Zmlyc3RsaW5lbm8pCisgICAgICAgICAgICBpZiBudHJhY2ViYWNrID09IHRyYWNlYmFjazoK
KyAgICAgICAgICAgICAgICBudHJhY2ViYWNrID0gbnRyYWNlYmFjay5jdXQocGF0aD1wYXRoKQor
ICAgICAgICAgICAgICAgIGlmIG50cmFjZWJhY2sgPT0gdHJhY2ViYWNrOgorICAgICAgICAgICAg
ICAgICAgICBudHJhY2ViYWNrID0gbnRyYWNlYmFjay5maWx0ZXIoZmlsdGVyX3RyYWNlYmFjaykK
KyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG50cmFjZWJhY2s6CisgICAgICAgICAgICAgICAg
ICAgICAgICBudHJhY2ViYWNrID0gdHJhY2ViYWNrCisKKyAgICAgICAgICAgIGV4Y2luZm8udHJh
Y2ViYWNrID0gbnRyYWNlYmFjay5maWx0ZXIoKQorICAgICAgICAgICAgIyBpc3N1ZTM2NDogbWFy
ayBhbGwgYnV0IGZpcnN0IGFuZCBsYXN0IGZyYW1lcyB0bworICAgICAgICAgICAgIyBvbmx5IHNo
b3cgYSBzaW5nbGUtbGluZSBtZXNzYWdlIGZvciBlYWNoIGZyYW1lLgorICAgICAgICAgICAgaWYg
c2VsZi5jb25maWcuZ2V0b3B0aW9uKCJ0YnN0eWxlIiwgImF1dG8iKSA9PSAiYXV0byI6CisgICAg
ICAgICAgICAgICAgaWYgbGVuKGV4Y2luZm8udHJhY2ViYWNrKSA+IDI6CisgICAgICAgICAgICAg
ICAgICAgIGZvciBlbnRyeSBpbiBleGNpbmZvLnRyYWNlYmFja1sxOi0xXToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVudHJ5LnNldF9yZXByX3N0eWxlKCJzaG9ydCIpCisKKyAgICAjIFRPRE86
IFR5cGUgaWdub3JlZCAtLSBicmVha3MgTGlza292IFN1YnN0aXR1dGlvbi4KKyAgICBkZWYgcmVw
cl9mYWlsdXJlKCAgIyB0eXBlOiBpZ25vcmVbb3ZlcnJpZGVdCisgICAgICAgIHNlbGYsIGV4Y2lu
Zm86IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0sCisgICAgKSAtPiBVbmlvbltzdHIsIFRl
cm1pbmFsUmVwcl06CisgICAgICAgIHN0eWxlID0gc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJ0YnN0
eWxlIiwgImF1dG8iKQorICAgICAgICBpZiBzdHlsZSA9PSAiYXV0byI6CisgICAgICAgICAgICBz
dHlsZSA9ICJsb25nIgorICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9mYWlsdXJlX3B5KGV4Y2lu
Zm8sIHN0eWxlPXN0eWxlKQogCiAKIGNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbik6
Ci0gICAgIiIiCi0gICAgaW50ZXJuYWwgaGFjayB1bnRpbCB3ZSBnZXQgYWN0dWFsIGRlZmluaXRp
b24gbm9kZXMgaW5zdGVhZCBvZiB0aGUKLSAgICBjcmFwcHkgbWV0YWZ1bmMgaGFjawotICAgICIi
IgorICAgICIiIkludGVybmFsIGhhY2sgdW50aWwgd2UgZ2V0IGFjdHVhbCBkZWZpbml0aW9uIG5v
ZGVzIGluc3RlYWQgb2YgdGhlCisgICAgY3JhcHB5IG1ldGFmdW5jIGhhY2suIiIiCiAKLSAgICBk
ZWYgcnVudGVzdChzZWxmKToKKyAgICBkZWYgcnVudGVzdChzZWxmKSAtPiBOb25lOgogICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoImZ1bmN0aW9uIGRlZmluaXRpb25zIGFyZSBub3Qgc3VwcG9z
ZWQgdG8gYmUgdXNlZCIpCiAKICAgICBzZXR1cCA9IHJ1bnRlc3QKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbl9hcGkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9weXRob25fYXBpLnB5CmluZGV4IDkyNTdkMjEwYzI3MC4uZjVhZDA0YTEyYzlkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRob25fYXBpLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbl9hcGkucHkKQEAgLTEsMTA4ICsxLDEyMCBAQAogaW1wb3J0
IG1hdGgKLWltcG9ydCBzeXMKK2ltcG9ydCBwcHJpbnQKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGlt
cG9ydCBJdGVyYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcKK2Zyb20g
Y29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZAorZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFs
Citmcm9tIG51bWJlcnMgaW1wb3J0IE51bWJlcgorZnJvbSB0eXBlcyBpbXBvcnQgVHJhY2ViYWNr
VHlwZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxl
Citmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zy
b20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFBhdHRlcm4KK2Zy
b20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKK2Zyb20g
dHlwaW5nIGltcG9ydCBVbmlvbgogCi1pbXBvcnQgcHkKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCB6
aXAsIGZpbHRlcmZhbHNlCi1mcm9tIG1vcmVfaXRlcnRvb2xzLm1vcmUgaW1wb3J0IGFsd2F5c19p
dGVyYWJsZQotCi1mcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBpc2NsYXNzCi0KLWZyb20gX3B5
dGVzdC5jb21wYXQgaW1wb3J0IE1hcHBpbmcsIFNlcXVlbmNlCitpbXBvcnQgX3B5dGVzdC5fY29k
ZQorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IG92ZXJsb2FkCiBmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBTVFJJTkdfVFlQRVMK
LQorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVDS0lORwogZnJvbSBfcHl0ZXN0
Lm91dGNvbWVzIGltcG9ydCBmYWlsCi1pbXBvcnQgX3B5dGVzdC5fY29kZQotCi1CQVNFX1RZUEUg
PSAodHlwZSwgU1RSSU5HX1RZUEVTKQogCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBUeXBlCiAKLWRlZiBfY21wX3JhaXNlc190eXBlX2Vycm9yKHNlbGYsIG90aGVy
KToKLSAgICAiIiJfX2NtcF9fIGltcGxlbWVudGF0aW9uIHdoaWNoIHJhaXNlcyBUeXBlRXJyb3Iu
IFVzZWQKLSAgICBieSBBcHByb3ggYmFzZSBjbGFzc2VzIHRvIGltcGxlbWVudCBvbmx5ID09IGFu
ZCAhPSBhbmQgcmFpc2UgYQotICAgIFR5cGVFcnJvciBmb3Igb3RoZXIgY29tcGFyaXNvbnMuCiAK
LSAgICBOZWVkZWQgaW4gUHl0aG9uIDIgb25seSwgUHl0aG9uIDMgYWxsIGl0IHRha2VzIGlzIG5v
dCBpbXBsZW1lbnRpbmcgdGhlCi0gICAgb3RoZXIgb3BlcmF0b3JzIGF0IGFsbC4KLSAgICAiIiIK
LSAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICByYWlzZSBUeXBlRXJyb3IoCi0gICAg
ICAgICJDb21wYXJpc29uIG9wZXJhdG9ycyBvdGhlciB0aGFuID09IGFuZCAhPSBub3Qgc3VwcG9y
dGVkIGJ5IGFwcHJveCBvYmplY3RzIgorZGVmIF9ub25fbnVtZXJpY190eXBlX2Vycm9yKHZhbHVl
LCBhdDogT3B0aW9uYWxbc3RyXSkgLT4gVHlwZUVycm9yOgorICAgIGF0X3N0ciA9ICIgYXQge30i
LmZvcm1hdChhdCkgaWYgYXQgZWxzZSAiIgorICAgIHJldHVybiBUeXBlRXJyb3IoCisgICAgICAg
ICJjYW5ub3QgbWFrZSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyB0byBub24tbnVtZXJpYyB2YWx1
ZXM6IHshcn0ge30iLmZvcm1hdCgKKyAgICAgICAgICAgIHZhbHVlLCBhdF9zdHIKKyAgICAgICAg
KQogICAgICkKIAogCiAjIGJ1aWx0aW4gcHl0ZXN0LmFwcHJveCBoZWxwZXIKIAogCi1jbGFzcyBB
cHByb3hCYXNlKG9iamVjdCk6Ci0gICAgIiIiCi0gICAgUHJvdmlkZSBzaGFyZWQgdXRpbGl0aWVz
IGZvciBtYWtpbmcgYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgYmV0d2VlbiBudW1iZXJzCi0gICAg
b3Igc2VxdWVuY2VzIG9mIG51bWJlcnMuCi0gICAgIiIiCitjbGFzcyBBcHByb3hCYXNlOgorICAg
ICIiIlByb3ZpZGUgc2hhcmVkIHV0aWxpdGllcyBmb3IgbWFraW5nIGFwcHJveGltYXRlIGNvbXBh
cmlzb25zIGJldHdlZW4KKyAgICBudW1iZXJzIG9yIHNlcXVlbmNlcyBvZiBudW1iZXJzLiIiIgog
Ci0gICAgIyBUZWxsIG51bXB5IHRvIHVzZSBvdXIgYF9fZXFfX2Agb3BlcmF0b3IgaW5zdGVhZCBv
ZiBpdHMKKyAgICAjIFRlbGwgbnVtcHkgdG8gdXNlIG91ciBgX19lcV9fYCBvcGVyYXRvciBpbnN0
ZWFkIG9mIGl0cy4KICAgICBfX2FycmF5X3VmdW5jX18gPSBOb25lCiAgICAgX19hcnJheV9wcmlv
cml0eV9fID0gMTAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHJlbD1Ob25l
LCBhYnM9Tm9uZSwgbmFuX29rPUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0
ZWQsIHJlbD1Ob25lLCBhYnM9Tm9uZSwgbmFuX29rOiBib29sID0gRmFsc2UpIC0+IE5vbmU6Cisg
ICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogICAgICAgICBzZWxmLmV4cGVjdGVkID0g
ZXhwZWN0ZWQKICAgICAgICAgc2VsZi5hYnMgPSBhYnMKICAgICAgICAgc2VsZi5yZWwgPSByZWwK
ICAgICAgICAgc2VsZi5uYW5fb2sgPSBuYW5fb2sKKyAgICAgICAgc2VsZi5fY2hlY2tfdHlwZSgp
CiAKLSAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0
cjoKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIF9fZXFfXyhz
ZWxmLCBhY3R1YWwpOgorICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKSAtPiBib29sOgogICAg
ICAgICByZXR1cm4gYWxsKAogICAgICAgICAgICAgYSA9PSBzZWxmLl9hcHByb3hfc2NhbGFyKHgp
IGZvciBhLCB4IGluIHNlbGYuX3lpZWxkX2NvbXBhcmlzb25zKGFjdHVhbCkKICAgICAgICAgKQog
Ci0gICAgX19oYXNoX18gPSBOb25lCisgICAgIyBJZ25vcmUgdHlwZSBiZWNhdXNlIG9mIGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMvNDI2Ni4KKyAgICBfX2hhc2hfXyA9IE5v
bmUgICMgdHlwZTogaWdub3JlCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIGFjdHVhbCk6CisgICAg
ZGVmIF9fbmVfXyhzZWxmLCBhY3R1YWwpIC0+IGJvb2w6CiAgICAgICAgIHJldHVybiBub3QgKGFj
dHVhbCA9PSBzZWxmKQogCi0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAyOgotICAgICAg
ICBfX2NtcF9fID0gX2NtcF9yYWlzZXNfdHlwZV9lcnJvcgotCi0gICAgZGVmIF9hcHByb3hfc2Nh
bGFyKHNlbGYsIHgpOgorICAgIGRlZiBfYXBwcm94X3NjYWxhcihzZWxmLCB4KSAtPiAiQXBwcm94
U2NhbGFyIjoKICAgICAgICAgcmV0dXJuIEFwcHJveFNjYWxhcih4LCByZWw9c2VsZi5yZWwsIGFi
cz1zZWxmLmFicywgbmFuX29rPXNlbGYubmFuX29rKQogCiAgICAgZGVmIF95aWVsZF9jb21wYXJp
c29ucyhzZWxmLCBhY3R1YWwpOgotICAgICAgICAiIiIKLSAgICAgICAgWWllbGQgYWxsIHRoZSBw
YWlycyBvZiBudW1iZXJzIHRvIGJlIGNvbXBhcmVkLiAgVGhpcyBpcyB1c2VkIHRvCi0gICAgICAg
IGltcGxlbWVudCB0aGUgYF9fZXFfX2AgbWV0aG9kLgorICAgICAgICAiIiJZaWVsZCBhbGwgdGhl
IHBhaXJzIG9mIG51bWJlcnMgdG8gYmUgY29tcGFyZWQuCisKKyAgICAgICAgVGhpcyBpcyB1c2Vk
IHRvIGltcGxlbWVudCB0aGUgYF9fZXFfX2AgbWV0aG9kLgogICAgICAgICAiIiIKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCisgICAgZGVmIF9jaGVja190eXBlKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgICIiIlJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZSBleHBlY3RlZCB2YWx1
ZSBpcyBub3QgYSB2YWxpZCB0eXBlLiIiIgorICAgICAgICAjIFRoaXMgaXMgb25seSBhIGNvbmNl
cm4gaWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgc2VxdWVuY2UuICBJbiBldmVyeQorICAgICAg
ICAjIG90aGVyIGNhc2UsIHRoZSBhcHByb3goKSBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIGV4
cGVjdGVkIHZhbHVlIGhhcworICAgICAgICAjIGEgbnVtZXJpYyB0eXBlLiAgRm9yIHRoaXMgcmVh
c29uLCB0aGUgZGVmYXVsdCBpcyB0byBkbyBub3RoaW5nLiAgVGhlCisgICAgICAgICMgY2xhc3Nl
cyB0aGF0IGRlYWwgd2l0aCBzZXF1ZW5jZXMgc2hvdWxkIHJlaW1wbGVtZW50IHRoaXMgbWV0aG9k
IHRvCisgICAgICAgICMgcmFpc2UgaWYgdGhlcmUgYXJlIGFueSBub24tbnVtZXJpYyBlbGVtZW50
cyBpbiB0aGUgc2VxdWVuY2UuCisgICAgICAgIHBhc3MKIAotY2xhc3MgQXBwcm94TnVtcHkoQXBw
cm94QmFzZSk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyBm
b3IgbnVtcHkgYXJyYXlzLgotICAgICIiIgogCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAg
ICAgICAjIEl0IG1pZ2h0IGJlIG5pY2UgdG8gcmV3cml0ZSB0aGlzIGZ1bmN0aW9uIHRvIGFjY291
bnQgZm9yIHRoZQotICAgICAgICAjIHNoYXBlIG9mIHRoZSBhcnJheS4uLgotICAgICAgICBpbXBv
cnQgbnVtcHkgYXMgbnAKK2RlZiBfcmVjdXJzaXZlX2xpc3RfbWFwKGYsIHgpOgorICAgIGlmIGlz
aW5zdGFuY2UoeCwgbGlzdCk6CisgICAgICAgIHJldHVybiBsaXN0KF9yZWN1cnNpdmVfbGlzdF9t
YXAoZiwgeGkpIGZvciB4aSBpbiB4KQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmKHgpCiAK
LSAgICAgICAgcmV0dXJuICJhcHByb3goeyFyfSkiLmZvcm1hdCgKLSAgICAgICAgICAgIGxpc3Qo
c2VsZi5fYXBwcm94X3NjYWxhcih4KSBmb3IgeCBpbiBucC5hc2FycmF5KHNlbGYuZXhwZWN0ZWQp
KQotICAgICAgICApCiAKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID09IDI6Ci0gICAgICAg
IF9fY21wX18gPSBfY21wX3JhaXNlc190eXBlX2Vycm9yCitjbGFzcyBBcHByb3hOdW1weShBcHBy
b3hCYXNlKToKKyAgICAiIiJQZXJmb3JtIGFwcHJveGltYXRlIGNvbXBhcmlzb25zIHdoZXJlIHRo
ZSBleHBlY3RlZCB2YWx1ZSBpcyBudW1weSBhcnJheS4iIiIKKworICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKSAtPiBzdHI6CisgICAgICAgIGxpc3Rfc2NhbGFycyA9IF9yZWN1cnNpdmVfbGlzdF9tYXAo
c2VsZi5fYXBwcm94X3NjYWxhciwgc2VsZi5leHBlY3RlZC50b2xpc3QoKSkKKyAgICAgICAgcmV0
dXJuICJhcHByb3goeyFyfSkiLmZvcm1hdChsaXN0X3NjYWxhcnMpCiAKLSAgICBkZWYgX19lcV9f
KHNlbGYsIGFjdHVhbCk6CisgICAgZGVmIF9fZXFfXyhzZWxmLCBhY3R1YWwpIC0+IGJvb2w6CiAg
ICAgICAgIGltcG9ydCBudW1weSBhcyBucAogCi0gICAgICAgICMgc2VsZi5leHBlY3RlZCBpcyBz
dXBwb3NlZCB0byBhbHdheXMgYmUgYW4gYXJyYXkgaGVyZQorICAgICAgICAjIHNlbGYuZXhwZWN0
ZWQgaXMgc3VwcG9zZWQgdG8gYWx3YXlzIGJlIGFuIGFycmF5IGhlcmUuCiAKICAgICAgICAgaWYg
bm90IG5wLmlzc2NhbGFyKGFjdHVhbCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAg
ICAgYWN0dWFsID0gbnAuYXNhcnJheShhY3R1YWwpCi0gICAgICAgICAgICBleGNlcHQ6ICAjIG5v
cWEKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlICd7fScg
dG8gbnVtcHkubmRhcnJheSIuZm9ybWF0KGFjdHVhbCkpCisgICAgICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAg
ICAgICAgICAgICAiY2Fubm90IGNvbXBhcmUgJ3t9JyB0byBudW1weS5uZGFycmF5Ii5mb3JtYXQo
YWN0dWFsKQorICAgICAgICAgICAgICAgICkgZnJvbSBlCiAKICAgICAgICAgaWYgbm90IG5wLmlz
c2NhbGFyKGFjdHVhbCkgYW5kIGFjdHVhbC5zaGFwZSAhPSBzZWxmLmV4cGVjdGVkLnNoYXBlOgog
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xMTgsMjQgKzEzMCwyMiBAQCBjbGFzcyBBcHBy
b3hOdW1weShBcHByb3hCYXNlKToKIAogICAgICAgICBpZiBucC5pc3NjYWxhcihhY3R1YWwpOgog
ICAgICAgICAgICAgZm9yIGkgaW4gbnAubmRpbmRleChzZWxmLmV4cGVjdGVkLnNoYXBlKToKLSAg
ICAgICAgICAgICAgICB5aWVsZCBhY3R1YWwsIG5wLmFzc2NhbGFyKHNlbGYuZXhwZWN0ZWRbaV0p
CisgICAgICAgICAgICAgICAgeWllbGQgYWN0dWFsLCBzZWxmLmV4cGVjdGVkW2ldLml0ZW0oKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIGkgaW4gbnAubmRpbmRleChzZWxmLmV4cGVj
dGVkLnNoYXBlKToKLSAgICAgICAgICAgICAgICB5aWVsZCBucC5hc3NjYWxhcihhY3R1YWxbaV0p
LCBucC5hc3NjYWxhcihzZWxmLmV4cGVjdGVkW2ldKQorICAgICAgICAgICAgICAgIHlpZWxkIGFj
dHVhbFtpXS5pdGVtKCksIHNlbGYuZXhwZWN0ZWRbaV0uaXRlbSgpCiAKIAogY2xhc3MgQXBwcm94
TWFwcGluZyhBcHByb3hCYXNlKToKLSAgICAiIiIKLSAgICBQZXJmb3JtIGFwcHJveGltYXRlIGNv
bXBhcmlzb25zIGZvciBtYXBwaW5ncyB3aGVyZSB0aGUgdmFsdWVzIGFyZSBudW1iZXJzCi0gICAg
KHRoZSBrZXlzIGNhbiBiZSBhbnl0aGluZykuCi0gICAgIiIiCisgICAgIiIiUGVyZm9ybSBhcHBy
b3hpbWF0ZSBjb21wYXJpc29ucyB3aGVyZSB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBtYXBwaW5n
CisgICAgd2l0aCBudW1lcmljIHZhbHVlcyAodGhlIGtleXMgY2FuIGJlIGFueXRoaW5nKS4iIiIK
IAotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3Ry
OgogICAgICAgICByZXR1cm4gImFwcHJveCh7IXJ9KSIuZm9ybWF0KAogICAgICAgICAgICAge2s6
IHNlbGYuX2FwcHJveF9zY2FsYXIodikgZm9yIGssIHYgaW4gc2VsZi5leHBlY3RlZC5pdGVtcygp
fQogICAgICAgICApCiAKLSAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCk6CisgICAgZGVmIF9f
ZXFfXyhzZWxmLCBhY3R1YWwpIC0+IGJvb2w6CiAgICAgICAgIGlmIHNldChhY3R1YWwua2V5cygp
KSAhPSBzZXQoc2VsZi5leHBlY3RlZC5rZXlzKCkpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CiAKQEAgLTE0NSwxMyArMTU1LDIwIEBAIGNsYXNzIEFwcHJveE1hcHBpbmcoQXBwcm94QmFzZSk6
CiAgICAgICAgIGZvciBrIGluIHNlbGYuZXhwZWN0ZWQua2V5cygpOgogICAgICAgICAgICAgeWll
bGQgYWN0dWFsW2tdLCBzZWxmLmV4cGVjdGVkW2tdCiAKKyAgICBkZWYgX2NoZWNrX3R5cGUoc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisgICAgICAgIGZv
ciBrZXksIHZhbHVlIGluIHNlbGYuZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodmFsdWUsIHR5cGUoc2VsZi5leHBlY3RlZCkpOgorICAgICAgICAgICAgICAgIG1z
ZyA9ICJweXRlc3QuYXBwcm94KCkgZG9lcyBub3Qgc3VwcG9ydCBuZXN0ZWQgZGljdGlvbmFyaWVz
OiBrZXk9eyFyfSB2YWx1ZT17IXJ9XG4gIGZ1bGwgbWFwcGluZz17fSIKKyAgICAgICAgICAgICAg
ICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdChrZXksIHZhbHVlLCBwcHJpbnQucGZvcm1hdChz
ZWxmLmV4cGVjdGVkKSkpCisgICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBO
dW1iZXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIF9ub25fbnVtZXJpY190eXBlX2Vycm9yKHNl
bGYuZXhwZWN0ZWQsIGF0PSJrZXk9eyFyfSIuZm9ybWF0KGtleSkpCiAKLWNsYXNzIEFwcHJveFNl
cXVlbmNlKEFwcHJveEJhc2UpOgotICAgICIiIgotICAgIFBlcmZvcm0gYXBwcm94aW1hdGUgY29t
cGFyaXNvbnMgZm9yIHNlcXVlbmNlcyBvZiBudW1iZXJzLgotICAgICIiIgogCi0gICAgZGVmIF9f
cmVwcl9fKHNlbGYpOgorY2xhc3MgQXBwcm94U2VxdWVuY2VsaWtlKEFwcHJveEJhc2UpOgorICAg
ICIiIlBlcmZvcm0gYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgd2hlcmUgdGhlIGV4cGVjdGVkIHZh
bHVlIGlzIGEgc2VxdWVuY2Ugb2YgbnVtYmVycy4iIiIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxm
KSAtPiBzdHI6CiAgICAgICAgIHNlcV90eXBlID0gdHlwZShzZWxmLmV4cGVjdGVkKQogICAgICAg
ICBpZiBzZXFfdHlwZSBub3QgaW4gKHR1cGxlLCBsaXN0LCBzZXQpOgogICAgICAgICAgICAgc2Vx
X3R5cGUgPSBsaXN0CkBAIC0xNTksNyArMTc2LDcgQEAgY2xhc3MgQXBwcm94U2VxdWVuY2UoQXBw
cm94QmFzZSk6CiAgICAgICAgICAgICBzZXFfdHlwZShzZWxmLl9hcHByb3hfc2NhbGFyKHgpIGZv
ciB4IGluIHNlbGYuZXhwZWN0ZWQpCiAgICAgICAgICkKIAotICAgIGRlZiBfX2VxX18oc2VsZiwg
YWN0dWFsKToKKyAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCkgLT4gYm9vbDoKICAgICAgICAg
aWYgbGVuKGFjdHVhbCkgIT0gbGVuKHNlbGYuZXhwZWN0ZWQpOgogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAgICAgICAgIHJldHVybiBBcHByb3hCYXNlLl9fZXFfXyhzZWxmLCBhY3R1YWwpCkBA
IC0xNjcsNDggKzE4NCw1NiBAQCBjbGFzcyBBcHByb3hTZXF1ZW5jZShBcHByb3hCYXNlKToKICAg
ICBkZWYgX3lpZWxkX2NvbXBhcmlzb25zKHNlbGYsIGFjdHVhbCk6CiAgICAgICAgIHJldHVybiB6
aXAoYWN0dWFsLCBzZWxmLmV4cGVjdGVkKQogCisgICAgZGVmIF9jaGVja190eXBlKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQorICAgICAgICBmb3IgaW5k
ZXgsIHggaW4gZW51bWVyYXRlKHNlbGYuZXhwZWN0ZWQpOgorICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZSh4LCB0eXBlKHNlbGYuZXhwZWN0ZWQpKToKKyAgICAgICAgICAgICAgICBtc2cgPSAicHl0
ZXN0LmFwcHJveCgpIGRvZXMgbm90IHN1cHBvcnQgbmVzdGVkIGRhdGEgc3RydWN0dXJlczogeyFy
fSBhdCBpbmRleCB7fVxuICBmdWxsIHNlcXVlbmNlOiB7fSIKKyAgICAgICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IobXNnLmZvcm1hdCh4LCBpbmRleCwgcHByaW50LnBmb3JtYXQoc2VsZi5leHBl
Y3RlZCkpKQorICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh4LCBOdW1iZXIpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIF9ub25fbnVtZXJpY190eXBlX2Vycm9yKAorICAgICAgICAgICAg
ICAgICAgICBzZWxmLmV4cGVjdGVkLCBhdD0iaW5kZXgge30iLmZvcm1hdChpbmRleCkKKyAgICAg
ICAgICAgICAgICApCisKIAogY2xhc3MgQXBwcm94U2NhbGFyKEFwcHJveEJhc2UpOgotICAgICIi
IgotICAgIFBlcmZvcm0gYXBwcm94aW1hdGUgY29tcGFyaXNvbnMgZm9yIHNpbmdsZSBudW1iZXJz
IG9ubHkuCi0gICAgIiIiCi0gICAgREVGQVVMVF9BQlNPTFVURV9UT0xFUkFOQ0UgPSAxZS0xMgot
ICAgIERFRkFVTFRfUkVMQVRJVkVfVE9MRVJBTkNFID0gMWUtNgorICAgICIiIlBlcmZvcm0gYXBw
cm94aW1hdGUgY29tcGFyaXNvbnMgd2hlcmUgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgc2luZ2xl
IG51bWJlci4iIiIKIAotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAg
ICAgIFJldHVybiBhIHN0cmluZyBjb21tdW5pY2F0aW5nIGJvdGggdGhlIGV4cGVjdGVkIHZhbHVl
IGFuZCB0aGUgdG9sZXJhbmNlCi0gICAgICAgIGZvciB0aGUgY29tcGFyaXNvbiBiZWluZyBtYWRl
LCBlLmcuICcxLjAgKy0gMWUtNicuICBVc2UgdGhlIHVuaWNvZGUKLSAgICAgICAgcGx1cy9taW51
cyBzeW1ib2wgaWYgdGhpcyBpcyBweXRob24zIChpdCdzIHRvbyBoYXJkIHRvIGdldCByaWdodCBm
b3IKLSAgICAgICAgcHl0aG9uMikuCisgICAgIyBVc2luZyBSZWFsIHNob3VsZCBiZSBiZXR0ZXIg
dGhhbiB0aGlzIFVuaW9uLCBidXQgbm90IHBvc3NpYmxlIHlldDoKKyAgICAjIGh0dHBzOi8vZ2l0
aHViLmNvbS9weXRob24vdHlwZXNoZWQvcHVsbC8zMTA4CisgICAgREVGQVVMVF9BQlNPTFVURV9U
T0xFUkFOQ0UgPSAxZS0xMiAgIyB0eXBlOiBVbmlvbltmbG9hdCwgRGVjaW1hbF0KKyAgICBERUZB
VUxUX1JFTEFUSVZFX1RPTEVSQU5DRSA9IDFlLTYgICMgdHlwZTogVW5pb25bZmxvYXQsIERlY2lt
YWxdCisKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAgICAiIiJSZXR1cm4g
YSBzdHJpbmcgY29tbXVuaWNhdGluZyBib3RoIHRoZSBleHBlY3RlZCB2YWx1ZSBhbmQgdGhlCisg
ICAgICAgIHRvbGVyYW5jZSBmb3IgdGhlIGNvbXBhcmlzb24gYmVpbmcgbWFkZS4KKworICAgICAg
ICBGb3IgZXhhbXBsZSwgYGAxLjAgwrEgMWUtNmBgLCBgYCgzKzRqKSDCsSA1ZS02IOKIoCDCsTE4
MMKwYGAuCiAgICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXhwZWN0ZWQs
IGNvbXBsZXgpOgotICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmV4cGVjdGVkKQogCiAgICAg
ICAgICMgSW5maW5pdGllcyBhcmVuJ3QgY29tcGFyZWQgdXNpbmcgdG9sZXJhbmNlcywgc28gZG9u
J3Qgc2hvdyBhCi0gICAgICAgICMgdG9sZXJhbmNlLgotICAgICAgICBpZiBtYXRoLmlzaW5mKHNl
bGYuZXhwZWN0ZWQpOgorICAgICAgICAjIHRvbGVyYW5jZS4gTmVlZCB0byBjYWxsIGFicyB0byBo
YW5kbGUgY29tcGxleCBudW1iZXJzLCBlLmcuIChpbmYgKyAxaikuCisgICAgICAgIGlmIG1hdGgu
aXNpbmYoYWJzKHNlbGYuZXhwZWN0ZWQpKToKICAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5l
eHBlY3RlZCkKIAogICAgICAgICAjIElmIGEgc2Vuc2libGUgdG9sZXJhbmNlIGNhbid0IGJlIGNh
bGN1bGF0ZWQsIHNlbGYudG9sZXJhbmNlIHdpbGwKICAgICAgICAgIyByYWlzZSBhIFZhbHVlRXJy
b3IuICBJbiB0aGlzIGNhc2UsIGRpc3BsYXkgJz8/PycuCiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIHZldHRlZF90b2xlcmFuY2UgPSAiezouMWV9Ii5mb3JtYXQoc2VsZi50b2xlcmFuY2UpCisg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXhwZWN0ZWQsIGNvbXBsZXgpIGFuZCBub3Qg
bWF0aC5pc2luZihzZWxmLnRvbGVyYW5jZSk6CisgICAgICAgICAgICAgICAgdmV0dGVkX3RvbGVy
YW5jZSArPSAiIOKIoCDCsTE4MMKwIgogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAg
ICAgICAgIHZldHRlZF90b2xlcmFuY2UgPSAiPz8/IgogCi0gICAgICAgIGlmIHN5cy52ZXJzaW9u
X2luZm9bMF0gPT0gMjoKLSAgICAgICAgICAgIHJldHVybiAie30gKy0ge30iLmZvcm1hdChzZWxm
LmV4cGVjdGVkLCB2ZXR0ZWRfdG9sZXJhbmNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmV0dXJuIHUie30gXHUwMGIxIHt9Ii5mb3JtYXQoc2VsZi5leHBlY3RlZCwgdmV0dGVkX3RvbGVy
YW5jZSkKKyAgICAgICAgcmV0dXJuICJ7fSDCsSB7fSIuZm9ybWF0KHNlbGYuZXhwZWN0ZWQsIHZl
dHRlZF90b2xlcmFuY2UpCiAKLSAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAg
ICIiIgotICAgICAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgZXF1YWwgdG8g
dGhlIGV4cGVjdGVkIHZhbHVlIHdpdGhpbgotICAgICAgICB0aGUgcHJlLXNwZWNpZmllZCB0b2xl
cmFuY2UuCi0gICAgICAgICIiIgorICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKSAtPiBib29s
OgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgZXF1YWwgdG8g
dGhlIGV4cGVjdGVkIHZhbHVlCisgICAgICAgIHdpdGhpbiB0aGUgcHJlLXNwZWNpZmllZCB0b2xl
cmFuY2UuIiIiCiAgICAgICAgIGlmIF9pc19udW1weV9hcnJheShhY3R1YWwpOgotICAgICAgICAg
ICAgcmV0dXJuIEFwcHJveE51bXB5KGFjdHVhbCwgc2VsZi5hYnMsIHNlbGYucmVsLCBzZWxmLm5h
bl9vaykgPT0gc2VsZi5leHBlY3RlZAorICAgICAgICAgICAgIyBDYWxsIGBgX19lcV9fKClgYCBt
YW51YWxseSB0byBwcmV2ZW50IGluZmluaXRlLXJlY3Vyc2lvbiB3aXRoCisgICAgICAgICAgICAj
IG51bXB5PDEuMTMuICBTZWUgIzM3NDguCisgICAgICAgICAgICByZXR1cm4gYWxsKHNlbGYuX19l
cV9fKGEpIGZvciBhIGluIGFjdHVhbC5mbGF0KQogCiAgICAgICAgICMgU2hvcnQtY2lyY3VpdCBl
eGFjdCBlcXVhbGl0eS4KICAgICAgICAgaWYgYWN0dWFsID09IHNlbGYuZXhwZWN0ZWQ6CkBAIC0y
MzAsMTYgKzI1NSwxOCBAQCBjbGFzcyBBcHByb3hTY2FsYXIoQXBwcm94QmFzZSk6CiAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICAjIFJldHVybiB0cnVlIGlmIHRoZSB0d28gbnVt
YmVycyBhcmUgd2l0aGluIHRoZSB0b2xlcmFuY2UuCi0gICAgICAgIHJldHVybiBhYnMoc2VsZi5l
eHBlY3RlZCAtIGFjdHVhbCkgPD0gc2VsZi50b2xlcmFuY2UKKyAgICAgICAgcmVzdWx0ID0gYWJz
KHNlbGYuZXhwZWN0ZWQgLSBhY3R1YWwpIDw9IHNlbGYudG9sZXJhbmNlICAjIHR5cGU6IGJvb2wK
KyAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgX19oYXNoX18gPSBOb25lCisgICAgIyBJZ25v
cmUgdHlwZSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMv
NDI2Ni4KKyAgICBfX2hhc2hfXyA9IE5vbmUgICMgdHlwZTogaWdub3JlCiAKICAgICBAcHJvcGVy
dHkKICAgICBkZWYgdG9sZXJhbmNlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJu
IHRoZSB0b2xlcmFuY2UgZm9yIHRoZSBjb21wYXJpc29uLiAgVGhpcyBjb3VsZCBiZSBlaXRoZXIg
YW4KLSAgICAgICAgYWJzb2x1dGUgdG9sZXJhbmNlIG9yIGEgcmVsYXRpdmUgdG9sZXJhbmNlLCBk
ZXBlbmRpbmcgb24gd2hhdCB0aGUgdXNlcgotICAgICAgICBzcGVjaWZpZWQgb3Igd2hpY2ggd291
bGQgYmUgbGFyZ2VyLgorICAgICAgICAiIiJSZXR1cm4gdGhlIHRvbGVyYW5jZSBmb3IgdGhlIGNv
bXBhcmlzb24uCisKKyAgICAgICAgVGhpcyBjb3VsZCBiZSBlaXRoZXIgYW4gYWJzb2x1dGUgdG9s
ZXJhbmNlIG9yIGEgcmVsYXRpdmUgdG9sZXJhbmNlLAorICAgICAgICBkZXBlbmRpbmcgb24gd2hh
dCB0aGUgdXNlciBzcGVjaWZpZWQgb3Igd2hpY2ggd291bGQgYmUgbGFyZ2VyLgogICAgICAgICAi
IiIKIAogICAgICAgICBkZWYgc2V0X2RlZmF1bHQoeCwgZGVmYXVsdCk6CkBAIC0yNjksOSArMjk2
LDcgQEAgY2xhc3MgQXBwcm94U2NhbGFyKEFwcHJveEJhc2UpOgogICAgICAgICAjIHdlIGFyZW4n
dCBldmVuIGdvaW5nIHRvIHVzZSBpdC4KICAgICAgICAgcmVsYXRpdmVfdG9sZXJhbmNlID0gc2V0
X2RlZmF1bHQoCiAgICAgICAgICAgICBzZWxmLnJlbCwgc2VsZi5ERUZBVUxUX1JFTEFUSVZFX1RP
TEVSQU5DRQotICAgICAgICApICogYWJzKAotICAgICAgICAgICAgc2VsZi5leHBlY3RlZAotICAg
ICAgICApCisgICAgICAgICkgKiBhYnMoc2VsZi5leHBlY3RlZCkKIAogICAgICAgICBpZiByZWxh
dGl2ZV90b2xlcmFuY2UgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKQEAgLTI4
NSwxNSArMzEwLDE0IEBAIGNsYXNzIEFwcHJveFNjYWxhcihBcHByb3hCYXNlKToKIAogCiBjbGFz
cyBBcHByb3hEZWNpbWFsKEFwcHJveFNjYWxhcik6Ci0gICAgZnJvbSBkZWNpbWFsIGltcG9ydCBE
ZWNpbWFsCisgICAgIiIiUGVyZm9ybSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyB3aGVyZSB0aGUg
ZXhwZWN0ZWQgdmFsdWUgaXMgYSBEZWNpbWFsLiIiIgogCiAgICAgREVGQVVMVF9BQlNPTFVURV9U
T0xFUkFOQ0UgPSBEZWNpbWFsKCIxZS0xMiIpCiAgICAgREVGQVVMVF9SRUxBVElWRV9UT0xFUkFO
Q0UgPSBEZWNpbWFsKCIxZS02IikKIAogCi1kZWYgYXBwcm94KGV4cGVjdGVkLCByZWw9Tm9uZSwg
YWJzPU5vbmUsIG5hbl9vaz1GYWxzZSk6Ci0gICAgIiIiCi0gICAgQXNzZXJ0IHRoYXQgdHdvIG51
bWJlcnMgKG9yIHR3byBzZXRzIG9mIG51bWJlcnMpIGFyZSBlcXVhbCB0byBlYWNoIG90aGVyCitk
ZWYgYXBwcm94KGV4cGVjdGVkLCByZWw9Tm9uZSwgYWJzPU5vbmUsIG5hbl9vazogYm9vbCA9IEZh
bHNlKSAtPiBBcHByb3hCYXNlOgorICAgICIiIkFzc2VydCB0aGF0IHR3byBudW1iZXJzIChvciB0
d28gc2V0cyBvZiBudW1iZXJzKSBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlcgogICAgIHdpdGhpbiBz
b21lIHRvbGVyYW5jZS4KIAogICAgIER1ZSB0byB0aGUgYGludHJpY2FjaWVzIG9mIGZsb2F0aW5n
LXBvaW50IGFyaXRobWV0aWNgX18sIG51bWJlcnMgdGhhdCB3ZQpAQCAtNDQ0LDg0ICs0NjgsMTMw
IEBAIGRlZiBhcHByb3goZXhwZWN0ZWQsIHJlbD1Ob25lLCBhYnM9Tm9uZSwgbmFuX29rPUZhbHNl
KToKICAgICAgICBfXyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL3JlZmVyZW5jZS9kYXRhbW9k
ZWwuaHRtbCNvYmplY3QuX19nZV9fCiAgICAgIiIiCiAKLSAgICBmcm9tIGRlY2ltYWwgaW1wb3J0
IERlY2ltYWwKLQogICAgICMgRGVsZWdhdGUgdGhlIGNvbXBhcmlzb24gdG8gYSBjbGFzcyB0aGF0
IGtub3dzIGhvdyB0byBkZWFsIHdpdGggdGhlIHR5cGUKICAgICAjIG9mIHRoZSBleHBlY3RlZCB2
YWx1ZSAoZS5nLiBpbnQsIGZsb2F0LCBsaXN0LCBkaWN0LCBudW1weS5hcnJheSwgZXRjKS4KICAg
ICAjCi0gICAgIyBUaGlzIGFyY2hpdGVjdHVyZSBpcyByZWFsbHkgZHJpdmVuIGJ5IHRoZSBuZWVk
IHRvIHN1cHBvcnQgbnVtcHkgYXJyYXlzLgotICAgICMgVGhlIG9ubHkgd2F5IHRvIG92ZXJyaWRl
IGA9PWAgZm9yIGFycmF5cyB3aXRob3V0IHJlcXVpcmluZyB0aGF0IGFwcHJveCBiZQotICAgICMg
dGhlIGxlZnQgb3BlcmFuZCBpcyB0byBpbmhlcml0IHRoZSBhcHByb3ggb2JqZWN0IGZyb20gYG51
bXB5Lm5kYXJyYXlgLgotICAgICMgQnV0IHRoYXQgY2FuJ3QgYmUgYSBnZW5lcmFsIHNvbHV0aW9u
LCBiZWNhdXNlIGl0IHJlcXVpcmVzICgxKSBudW1weSB0byBiZQotICAgICMgaW5zdGFsbGVkIGFu
ZCAoMikgdGhlIGV4cGVjdGVkIHZhbHVlIHRvIGJlIGEgbnVtcHkgYXJyYXkuICBTbyB0aGUgZ2Vu
ZXJhbAotICAgICMgc29sdXRpb24gaXMgdG8gZGVsZWdhdGUgZWFjaCB0eXBlIG9mIGV4cGVjdGVk
IHZhbHVlIHRvIGEgZGlmZmVyZW50IGNsYXNzLgorICAgICMgVGhlIHByaW1hcnkgcmVzcG9uc2li
aWxpdHkgb2YgdGhlc2UgY2xhc3NlcyBpcyB0byBpbXBsZW1lbnQgYGBfX2VxX18oKWBgCisgICAg
IyBhbmQgYGBfX3JlcHJfXygpYGAuICBUaGUgZm9ybWVyIGlzIHVzZWQgdG8gYWN0dWFsbHkgY2hl
Y2sgaWYgc29tZQorICAgICMgImFjdHVhbCIgdmFsdWUgaXMgZXF1aXZhbGVudCB0byB0aGUgZ2l2
ZW4gZXhwZWN0ZWQgdmFsdWUgd2l0aGluIHRoZQorICAgICMgYWxsb3dlZCB0b2xlcmFuY2UuICBU
aGUgbGF0dGVyIGlzIHVzZWQgdG8gc2hvdyB0aGUgdXNlciB0aGUgZXhwZWN0ZWQKKyAgICAjIHZh
bHVlIGFuZCB0b2xlcmFuY2UsIGluIHRoZSBjYXNlIHRoYXQgYSB0ZXN0IGZhaWxlZC4KICAgICAj
Ci0gICAgIyBUaGlzIGhhcyB0aGUgYWR2YW50YWdlIHRoYXQgaXQgbWFkZSBpdCBlYXN5IHRvIHN1
cHBvcnQgbWFwcGluZyB0eXBlcwotICAgICMgKGkuZS4gZGljdCkuICBUaGUgb2xkIGNvZGUgYWNj
ZXB0ZWQgbWFwcGluZyB0eXBlcywgYnV0IHdvdWxkIG9ubHkgY29tcGFyZQotICAgICMgdGhlaXIg
a2V5cywgd2hpY2ggaXMgcHJvYmFibHkgbm90IHdoYXQgbW9zdCBwZW9wbGUgd291bGQgZXhwZWN0
LgorICAgICMgVGhlIGFjdHVhbCBsb2dpYyBmb3IgbWFraW5nIGFwcHJveGltYXRlIGNvbXBhcmlz
b25zIGNhbiBiZSBmb3VuZCBpbgorICAgICMgQXBwcm94U2NhbGFyLCB3aGljaCBpcyB1c2VkIHRv
IGNvbXBhcmUgaW5kaXZpZHVhbCBudW1iZXJzLiAgQWxsIG9mIHRoZQorICAgICMgb3RoZXIgQXBw
cm94IGNsYXNzZXMgZXZlbnR1YWxseSBkZWxlZ2F0ZSB0byB0aGlzIGNsYXNzLiAgVGhlIEFwcHJv
eEJhc2UKKyAgICAjIGNsYXNzIHByb3ZpZGVzIHNvbWUgY29udmVuaWVudCBtZXRob2RzIGFuZCBv
dmVybG9hZHMsIGJ1dCBpc24ndCByZWFsbHkKKyAgICAjIGVzc2VudGlhbC4KIAotICAgIGlmIF9p
c19udW1weV9hcnJheShleHBlY3RlZCk6Ci0gICAgICAgIGNscyA9IEFwcHJveE51bXB5CisgICAg
X190cmFjZWJhY2toaWRlX18gPSBUcnVlCisKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBE
ZWNpbWFsKToKKyAgICAgICAgY2xzID0gQXBwcm94RGVjaW1hbCAgIyB0eXBlOiBUeXBlW0FwcHJv
eEJhc2VdCisgICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBOdW1iZXIpOgorICAgICAgICBj
bHMgPSBBcHByb3hTY2FsYXIKICAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIE1hcHBpbmcp
OgogICAgICAgICBjbHMgPSBBcHByb3hNYXBwaW5nCi0gICAgZWxpZiBpc2luc3RhbmNlKGV4cGVj
dGVkLCBTZXF1ZW5jZSkgYW5kIG5vdCBpc2luc3RhbmNlKGV4cGVjdGVkLCBTVFJJTkdfVFlQRVMp
OgotICAgICAgICBjbHMgPSBBcHByb3hTZXF1ZW5jZQotICAgIGVsaWYgaXNpbnN0YW5jZShleHBl
Y3RlZCwgRGVjaW1hbCk6Ci0gICAgICAgIGNscyA9IEFwcHJveERlY2ltYWwKKyAgICBlbGlmIF9p
c19udW1weV9hcnJheShleHBlY3RlZCk6CisgICAgICAgIGNscyA9IEFwcHJveE51bXB5CisgICAg
ZWxpZiAoCisgICAgICAgIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIEl0ZXJhYmxlKQorICAgICAgICBh
bmQgaXNpbnN0YW5jZShleHBlY3RlZCwgU2l6ZWQpCisgICAgICAgICMgVHlwZSBpZ25vcmVkIGJl
Y2F1c2UgdGhlIGVycm9yIGlzIHdyb25nIC0tIG5vdCB1bnJlYWNoYWJsZS4KKyAgICAgICAgYW5k
IG5vdCBpc2luc3RhbmNlKGV4cGVjdGVkLCBTVFJJTkdfVFlQRVMpICAjIHR5cGU6IGlnbm9yZVt1
bnJlYWNoYWJsZV0KKyAgICApOgorICAgICAgICBjbHMgPSBBcHByb3hTZXF1ZW5jZWxpa2UKICAg
ICBlbHNlOgotICAgICAgICBjbHMgPSBBcHByb3hTY2FsYXIKKyAgICAgICAgcmFpc2UgX25vbl9u
dW1lcmljX3R5cGVfZXJyb3IoZXhwZWN0ZWQsIGF0PU5vbmUpCiAKICAgICByZXR1cm4gY2xzKGV4
cGVjdGVkLCByZWwsIGFicywgbmFuX29rKQogCiAKLWRlZiBfaXNfbnVtcHlfYXJyYXkob2JqKToK
LSAgICAiIiIKLSAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgbnVtcHkg
YXJyYXkuICBNYWtlIGEgc3BlY2lhbCBlZmZvcnQgdG8KLSAgICBhdm9pZCBpbXBvcnRpbmcgbnVt
cHkgdW5sZXNzIGl0J3MgcmVhbGx5IG5lY2Vzc2FyeS4KLSAgICAiIiIKLSAgICBpbXBvcnQgaW5z
cGVjdAotCi0gICAgZm9yIGNscyBpbiBpbnNwZWN0LmdldG1ybyh0eXBlKG9iaikpOgotICAgICAg
ICBpZiBjbHMuX19tb2R1bGVfXyA9PSAibnVtcHkiOgotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIGltcG9ydCBudW1weSBhcyBucAorZGVmIF9pc19udW1weV9hcnJheShvYmo6IG9i
amVjdCkgLT4gYm9vbDoKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlz
IGEgbnVtcHkgYXJyYXkuCiAKLSAgICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmos
IG5wLm5kYXJyYXkpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAg
ICAgICAgcGFzcworICAgIEEgc3BlY2lhbCBlZmZvcnQgaXMgbWFkZSB0byBhdm9pZCBpbXBvcnRp
bmcgbnVtcHkgdW5sZXNzIGl0J3MgcmVhbGx5IG5lY2Vzc2FyeS4KKyAgICAiIiIKKyAgICBpbXBv
cnQgc3lzCiAKKyAgICBucCA9IHN5cy5tb2R1bGVzLmdldCgibnVtcHkiKSAgIyB0eXBlOiBBbnkK
KyAgICBpZiBucCBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqLCBu
cC5uZGFycmF5KQogICAgIHJldHVybiBGYWxzZQogCiAKICMgYnVpbHRpbiBweXRlc3QucmFpc2Vz
IGhlbHBlcgogCitfRSA9IFR5cGVWYXIoIl9FIiwgYm91bmQ9QmFzZUV4Y2VwdGlvbikKKworCitA
b3ZlcmxvYWQKK2RlZiByYWlzZXMoCisgICAgZXhwZWN0ZWRfZXhjZXB0aW9uOiBVbmlvblsiVHlw
ZVtfRV0iLCBUdXBsZVsiVHlwZVtfRV0iLCAuLi5dXSwKKyAgICAqLAorICAgIG1hdGNoOiAiT3B0
aW9uYWxbVW5pb25bc3RyLCBQYXR0ZXJuW3N0cl1dXSIgPSAuLi4KKykgLT4gIlJhaXNlc0NvbnRl
eHRbX0VdIjoKKyAgICAuLi4KKworCitAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorZGVmIHJhaXNl
cyggICMgbm9xYTogRjgxMQorICAgIGV4cGVjdGVkX2V4Y2VwdGlvbjogVW5pb25bIlR5cGVbX0Vd
IiwgVHVwbGVbIlR5cGVbX0VdIiwgLi4uXV0sCisgICAgZnVuYzogQ2FsbGFibGVbLi4uLCBBbnld
LAorICAgICphcmdzOiBBbnksCisgICAgKiprd2FyZ3M6IEFueQorKSAtPiBfcHl0ZXN0Ll9jb2Rl
LkV4Y2VwdGlvbkluZm9bX0VdOgorICAgIC4uLgorCiAKLWRlZiByYWlzZXMoZXhwZWN0ZWRfZXhj
ZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHIiIiIKLSAgICBBc3NlcnQgdGhhdCBhIGNv
ZGUgYmxvY2svZnVuY3Rpb24gY2FsbCByYWlzZXMgYGBleHBlY3RlZF9leGNlcHRpb25gYAotICAg
IGFuZCByYWlzZSBhIGZhaWx1cmUgZXhjZXB0aW9uIG90aGVyd2lzZS4KK2RlZiByYWlzZXMoICAj
IG5vcWE6IEY4MTEKKyAgICBleHBlY3RlZF9leGNlcHRpb246IFVuaW9uWyJUeXBlW19FXSIsIFR1
cGxlWyJUeXBlW19FXSIsIC4uLl1dLAorICAgICphcmdzOiBBbnksCisgICAgKiprd2FyZ3M6IEFu
eQorKSAtPiBVbmlvblsiUmFpc2VzQ29udGV4dFtfRV0iLCBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlv
bkluZm9bX0VdXToKKyAgICByIiIiQXNzZXJ0IHRoYXQgYSBjb2RlIGJsb2NrL2Z1bmN0aW9uIGNh
bGwgcmFpc2VzIGBgZXhwZWN0ZWRfZXhjZXB0aW9uYGAKKyAgICBvciByYWlzZSBhIGZhaWx1cmUg
ZXhjZXB0aW9uIG90aGVyd2lzZS4KIAotICAgIDphcmcgbWVzc2FnZTogaWYgc3BlY2lmaWVkLCBw
cm92aWRlcyBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UgaWYgdGhlCi0gICAgICAgIGV4Y2VwdGlv
biBpcyBub3QgcmFpc2VkCi0gICAgOmFyZyBtYXRjaDogaWYgc3BlY2lmaWVkLCBhc3NlcnRzIHRo
YXQgdGhlIGV4Y2VwdGlvbiBtYXRjaGVzIGEgdGV4dCBvciByZWdleAorICAgIDprd3BhcmFtIG1h
dGNoOgorICAgICAgICBJZiBzcGVjaWZpZWQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSByZWd1bGFy
IGV4cHJlc3Npb24sCisgICAgICAgIG9yIGEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCwgdGhh
dCBpcyB0ZXN0ZWQgYWdhaW5zdCB0aGUgc3RyaW5nCisgICAgICAgIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSBleGNlcHRpb24gdXNpbmcgYGByZS5zZWFyY2hgYC4gVG8gbWF0Y2ggYSBsaXRlcmFsCisg
ICAgICAgIHN0cmluZyB0aGF0IG1heSBjb250YWluIGBzcGVjaWFsIGNoYXJhY3RlcnNgX18sIHRo
ZSBwYXR0ZXJuIGNhbgorICAgICAgICBmaXJzdCBiZSBlc2NhcGVkIHdpdGggYGByZS5lc2NhcGVg
YC4KIAotICAgIFRoaXMgaGVscGVyIHByb2R1Y2VzIGEgYGBFeGNlcHRpb25JbmZvKClgYCBvYmpl
Y3QgKHNlZSBiZWxvdykuCisgICAgICAgIChUaGlzIGlzIG9ubHkgdXNlZCB3aGVuIGBgcHl0ZXN0
LnJhaXNlc2BgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsCisgICAgICAgIGFuZCBwYXNz
ZWQgdGhyb3VnaCB0byB0aGUgZnVuY3Rpb24gb3RoZXJ3aXNlLgorICAgICAgICBXaGVuIHVzaW5n
IGBgcHl0ZXN0LnJhaXNlc2BgIGFzIGEgZnVuY3Rpb24sIHlvdSBjYW4gdXNlOgorICAgICAgICBg
YHB5dGVzdC5yYWlzZXMoRXhjLCBmdW5jLCBtYXRjaD0icGFzc2VkIG9uIikubWF0Y2goIm15IHBh
dHRlcm4iKWBgLikKIAotICAgIFlvdSBtYXkgdXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBjb250ZXh0
IG1hbmFnZXI6OgorICAgICAgICBfXyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkv
cmUuaHRtbCNyZWd1bGFyLWV4cHJlc3Npb24tc3ludGF4CisKKyAgICAuLiBjdXJyZW50bW9kdWxl
OjogX3B5dGVzdC5fY29kZQorCisgICAgVXNlIGBgcHl0ZXN0LnJhaXNlc2BgIGFzIGEgY29udGV4
dCBtYW5hZ2VyLCB3aGljaCB3aWxsIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4K
KyAgICB0eXBlOjoKIAogICAgICAgICA+Pj4gd2l0aCByYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3Ip
OgogICAgICAgICAuLi4gICAgMS8wCiAKLSAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMTAKKyAg
ICBJZiB0aGUgY29kZSBibG9jayBkb2VzIG5vdCByYWlzZSB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9u
IChgYFplcm9EaXZpc2lvbkVycm9yYGAgaW4gdGhlIGV4YW1wbGUKKyAgICBhYm92ZSksIG9yIG5v
IGV4Y2VwdGlvbiBhdCBhbGwsIHRoZSBjaGVjayB3aWxsIGZhaWwgaW5zdGVhZC4KKworICAgIFlv
dSBjYW4gYWxzbyB1c2UgdGhlIGtleXdvcmQgYXJndW1lbnQgYGBtYXRjaGBgIHRvIGFzc2VydCB0
aGF0IHRoZQorICAgIGV4Y2VwdGlvbiBtYXRjaGVzIGEgdGV4dCBvciByZWdleDo6CisKKyAgICAg
ICAgPj4+IHdpdGggcmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNoPSdtdXN0IGJlIDAgb3IgTm9uZScp
OgorICAgICAgICAuLi4gICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUgMCBvciBO
b25lIikKKworICAgICAgICA+Pj4gd2l0aCByYWlzZXMoVmFsdWVFcnJvciwgbWF0Y2g9cidtdXN0
IGJlIFxkKyQnKToKKyAgICAgICAgLi4uICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBtdXN0
IGJlIDQyIikKIAotICAgIEluIHRoZSBjb250ZXh0IG1hbmFnZXIgZm9ybSB5b3UgbWF5IHVzZSB0
aGUga2V5d29yZCBhcmd1bWVudAotICAgIGBgbWVzc2FnZWBgIHRvIHNwZWNpZnkgYSBjdXN0b20g
ZmFpbHVyZSBtZXNzYWdlOjoKKyAgICBUaGUgY29udGV4dCBtYW5hZ2VyIHByb2R1Y2VzIGFuIDpj
bGFzczpgRXhjZXB0aW9uSW5mb2Agb2JqZWN0IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGluc3BlY3Qg
dGhlCisgICAgZGV0YWlscyBvZiB0aGUgY2FwdHVyZWQgZXhjZXB0aW9uOjoKIAotICAgICAgICA+
Pj4gd2l0aCByYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIG1lc3NhZ2U9IkV4cGVjdGluZyBaZXJv
RGl2aXNpb25FcnJvciIpOgotICAgICAgICAuLi4gICAgcGFzcwotICAgICAgICBUcmFjZWJhY2sg
KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgLi4uCi0gICAgICAgIEZhaWxlZDog
RXhwZWN0aW5nIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgID4+PiB3aXRoIHJhaXNlcyhWYWx1
ZUVycm9yKSBhcyBleGNfaW5mbzoKKyAgICAgICAgLi4uICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2
YWx1ZSBtdXN0IGJlIDQyIikKKyAgICAgICAgPj4+IGFzc2VydCBleGNfaW5mby50eXBlIGlzIFZh
bHVlRXJyb3IKKyAgICAgICAgPj4+IGFzc2VydCBleGNfaW5mby52YWx1ZS5hcmdzWzBdID09ICJ2
YWx1ZSBtdXN0IGJlIDQyIgogCiAgICAgLi4gbm90ZTo6CiAKQEAgLTUzNSw3ICs2MDUsNyBAQCBk
ZWYgcmFpc2VzKGV4cGVjdGVkX2V4Y2VwdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAg
ICAgPj4+IHdpdGggcmFpc2VzKFZhbHVlRXJyb3IpIGFzIGV4Y19pbmZvOgogICAgICAgICAgICAu
Li4gICAgIGlmIHZhbHVlID4gMTA6CiAgICAgICAgICAgIC4uLiAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoInZhbHVlIG11c3QgYmUgPD0gMTAiKQotICAgICAgICAgICAuLi4gICAgIGFzc2VydCBl
eGNfaW5mby50eXBlID09IFZhbHVlRXJyb3IgICMgdGhpcyB3aWxsIG5vdCBleGVjdXRlCisgICAg
ICAgICAgIC4uLiAgICAgYXNzZXJ0IGV4Y19pbmZvLnR5cGUgaXMgVmFsdWVFcnJvciAgIyB0aGlz
IHdpbGwgbm90IGV4ZWN1dGUKIAogICAgICAgIEluc3RlYWQsIHRoZSBmb2xsb3dpbmcgYXBwcm9h
Y2ggbXVzdCBiZSB0YWtlbiAobm90ZSB0aGUgZGlmZmVyZW5jZSBpbgogICAgICAgIHNjb3BlKTo6
CkBAIC01NDQsMjIgKzYxNCwxNyBAQCBkZWYgcmFpc2VzKGV4cGVjdGVkX2V4Y2VwdGlvbiwgKmFy
Z3MsICoqa3dhcmdzKToKICAgICAgICAgICAgLi4uICAgICBpZiB2YWx1ZSA+IDEwOgogICAgICAg
ICAgICAuLi4gICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBtdXN0IGJlIDw9IDEwIikK
ICAgICAgICAgICAgLi4uCi0gICAgICAgICAgID4+PiBhc3NlcnQgZXhjX2luZm8udHlwZSA9PSBW
YWx1ZUVycm9yCisgICAgICAgICAgID4+PiBhc3NlcnQgZXhjX2luZm8udHlwZSBpcyBWYWx1ZUVy
cm9yCiAKKyAgICAqKlVzaW5nIHdpdGgqKiBgYHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplYGAKIAot
ICAgIFNpbmNlIHZlcnNpb24gYGAzLjFgYCB5b3UgY2FuIHVzZSB0aGUga2V5d29yZCBhcmd1bWVu
dCBgYG1hdGNoYGAgdG8gYXNzZXJ0IHRoYXQgdGhlCi0gICAgZXhjZXB0aW9uIG1hdGNoZXMgYSB0
ZXh0IG9yIHJlZ2V4OjoKKyAgICBXaGVuIHVzaW5nIDpyZWY6YHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplIHJlZmAKKyAgICBpdCBpcyBwb3NzaWJsZSB0byBwYXJhbWV0cml6ZSB0ZXN0cyBzdWNoIHRo
YXQKKyAgICBzb21lIHJ1bnMgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCBvdGhlcnMgZG8gbm90Lgog
Ci0gICAgICAgID4+PiB3aXRoIHJhaXNlcyhWYWx1ZUVycm9yLCBtYXRjaD0nbXVzdCBiZSAwIG9y
IE5vbmUnKToKLSAgICAgICAgLi4uICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBtdXN0IGJl
IDAgb3IgTm9uZSIpCisgICAgU2VlIDpyZWY6YHBhcmFtZXRyaXppbmdfY29uZGl0aW9uYWxfcmFp
c2luZ2AgZm9yIGFuIGV4YW1wbGUuCiAKLSAgICAgICAgPj4+IHdpdGggcmFpc2VzKFZhbHVlRXJy
b3IsIG1hdGNoPXInbXVzdCBiZSBcZCskJyk6Ci0gICAgICAgIC4uLiAgICAgcmFpc2UgVmFsdWVF
cnJvcigidmFsdWUgbXVzdCBiZSA0MiIpCi0KLSAgICAqKkxlZ2FjeSBmb3JtcyoqCi0KLSAgICBU
aGUgZm9ybXMgYmVsb3cgYXJlIGZ1bGx5IHN1cHBvcnRlZCBidXQgYXJlIGRpc2NvdXJhZ2VkIGZv
ciBuZXcgY29kZSBiZWNhdXNlIHRoZQotICAgIGNvbnRleHQgbWFuYWdlciBmb3JtIGlzIHJlZ2Fy
ZGVkIGFzIG1vcmUgcmVhZGFibGUgYW5kIGxlc3MgZXJyb3ItcHJvbmUuCisgICAgKipMZWdhY3kg
Zm9ybSoqCiAKICAgICBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2FsbGFibGUgYnkgcGFz
c2luZyBhIHRvLWJlLWNhbGxlZCBsYW1iZGE6OgogCkBAIC01NzUsMTcgKzY0MCw4IEBAIGRlZiBy
YWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICA+Pj4g
cmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBmLCB4PTApCiAgICAgICAgIDxFeGNlcHRpb25JbmZv
IC4uLj4KIAotICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gcGFzcyBhIHN0cmluZyB0byBiZSBl
dmFsdWF0ZWQgYXQgcnVudGltZTo6Ci0KLSAgICAgICAgPj4+IHJhaXNlcyhaZXJvRGl2aXNpb25F
cnJvciwgImYoMCkiKQotICAgICAgICA8RXhjZXB0aW9uSW5mbyAuLi4+Ci0KLSAgICBUaGUgc3Ry
aW5nIHdpbGwgYmUgZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIGBgbG9jYWxzKClgYCBhbmQgYGBn
bG9iYWxzKClgYAotICAgIGF0IHRoZSBtb21lbnQgb2YgdGhlIGBgcmFpc2VzYGAgY2FsbC4KLQot
ICAgIC4uIGN1cnJlbnRtb2R1bGU6OiBfcHl0ZXN0Ll9jb2RlCi0KLSAgICBDb25zdWx0IHRoZSBB
UEkgb2YgYGBleGNpbmZvYGAgb2JqZWN0czogOmNsYXNzOmBFeGNlcHRpb25JbmZvYC4KKyAgICBU
aGUgZm9ybSBhYm92ZSBpcyBmdWxseSBzdXBwb3J0ZWQgYnV0IGRpc2NvdXJhZ2VkIGZvciBuZXcg
Y29kZSBiZWNhdXNlIHRoZQorICAgIGNvbnRleHQgbWFuYWdlciBmb3JtIGlzIHJlZ2FyZGVkIGFz
IG1vcmUgcmVhZGFibGUgYW5kIGxlc3MgZXJyb3ItcHJvbmUuCiAKICAgICAuLiBub3RlOjoKICAg
ICAgICAgU2ltaWxhciB0byBjYXVnaHQgZXhjZXB0aW9uIG9iamVjdHMgaW4gUHl0aG9uLCBleHBs
aWNpdGx5IGNsZWFyaW5nCkBAIC01OTcsNzggKzY1Myw4NyBAQCBkZWYgcmFpc2VzKGV4cGVjdGVk
X2V4Y2VwdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgdGhlIGV4Y2VwdGlvbiAtLT4g
Y3VycmVudCBmcmFtZSBzdGFjayAtLT4gbG9jYWwgdmFyaWFibGVzIC0tPgogICAgICAgICBgYEV4
Y2VwdGlvbkluZm9gYCkgd2hpY2ggbWFrZXMgUHl0aG9uIGtlZXAgYWxsIG9iamVjdHMgcmVmZXJl
bmNlZAogICAgICAgICBmcm9tIHRoYXQgY3ljbGUgKGluY2x1ZGluZyBhbGwgbG9jYWwgdmFyaWFi
bGVzIGluIHRoZSBjdXJyZW50Ci0gICAgICAgIGZyYW1lKSBhbGl2ZSB1bnRpbCB0aGUgbmV4dCBj
eWNsaWMgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bi4gU2VlIHRoZQotICAgICAgICBvZmZpY2lhbCBQ
eXRob24gYGB0cnlgYCBzdGF0ZW1lbnQgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxlZAot
ICAgICAgICBpbmZvcm1hdGlvbi4KLQorICAgICAgICBmcmFtZSkgYWxpdmUgdW50aWwgdGhlIG5l
eHQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbiBydW4uCisgICAgICAgIE1vcmUgZGV0YWlsZWQg
aW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBvZmZpY2lhbCBQeXRob24KKyAgICAgICAg
ZG9jdW1lbnRhdGlvbiBmb3IgOnJlZjpgdGhlIHRyeSBzdGF0ZW1lbnQgPHB5dGhvbjp0cnk+YC4K
ICAgICAiIiIKICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICBmb3IgZXhjIGluIGZp
bHRlcmZhbHNlKGlzY2xhc3MsIGFsd2F5c19pdGVyYWJsZShleHBlY3RlZF9leGNlcHRpb24sIEJB
U0VfVFlQRSkpOgotICAgICAgICBtc2cgPSAoCi0gICAgICAgICAgICAiZXhjZXB0aW9ucyBtdXN0
IGJlIG9sZC1zdHlsZSBjbGFzc2VzIG9yIgotICAgICAgICAgICAgIiBkZXJpdmVkIGZyb20gQmFz
ZUV4Y2VwdGlvbiwgbm90ICVzIgotICAgICAgICApCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvciht
c2cgJSB0eXBlKGV4YykpCisKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkX2V4Y2VwdGlvbiwg
dHlwZSk6CisgICAgICAgIGV4Y2VwdGVkX2V4Y2VwdGlvbnMgPSAoZXhwZWN0ZWRfZXhjZXB0aW9u
LCkgICMgdHlwZTogVHVwbGVbVHlwZVtfRV0sIC4uLl0KKyAgICBlbHNlOgorICAgICAgICBleGNl
cHRlZF9leGNlcHRpb25zID0gZXhwZWN0ZWRfZXhjZXB0aW9uCisgICAgZm9yIGV4YyBpbiBleGNl
cHRlZF9leGNlcHRpb25zOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGMsIHR5cGUpIG9y
IG5vdCBpc3N1YmNsYXNzKGV4YywgQmFzZUV4Y2VwdGlvbik6ICAjIHR5cGU6IGlnbm9yZVt1bnJl
YWNoYWJsZV0KKyAgICAgICAgICAgIG1zZyA9ICJleHBlY3RlZCBleGNlcHRpb24gbXVzdCBiZSBh
IEJhc2VFeGNlcHRpb24gdHlwZSwgbm90IHt9IiAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVd
CisgICAgICAgICAgICBub3RfYSA9IGV4Yy5fX25hbWVfXyBpZiBpc2luc3RhbmNlKGV4YywgdHlw
ZSkgZWxzZSB0eXBlKGV4YykuX19uYW1lX18KKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvciht
c2cuZm9ybWF0KG5vdF9hKSkKIAogICAgIG1lc3NhZ2UgPSAiRElEIE5PVCBSQUlTRSB7fSIuZm9y
bWF0KGV4cGVjdGVkX2V4Y2VwdGlvbikKLSAgICBtYXRjaF9leHByID0gTm9uZQogCiAgICAgaWYg
bm90IGFyZ3M6Ci0gICAgICAgIGlmICJtZXNzYWdlIiBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBt
ZXNzYWdlID0ga3dhcmdzLnBvcCgibWVzc2FnZSIpCi0gICAgICAgIGlmICJtYXRjaCIgaW4ga3dh
cmdzOgotICAgICAgICAgICAgbWF0Y2hfZXhwciA9IGt3YXJncy5wb3AoIm1hdGNoIikKKyAgICAg
ICAgbWF0Y2ggPSBrd2FyZ3MucG9wKCJtYXRjaCIsIE5vbmUpICAjIHR5cGU6IE9wdGlvbmFsW1Vu
aW9uW3N0ciwgUGF0dGVybltzdHJdXV0KICAgICAgICAgaWYga3dhcmdzOgogICAgICAgICAgICAg
bXNnID0gIlVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIHRvIHB5dGVzdC5yYWlz
ZXM6ICIKLSAgICAgICAgICAgIG1zZyArPSAiLCAiLmpvaW4oa3dhcmdzLmtleXMoKSkKKyAgICAg
ICAgICAgIG1zZyArPSAiLCAiLmpvaW4oc29ydGVkKGt3YXJncykpCisgICAgICAgICAgICBtc2cg
Kz0gIlxuVXNlIGNvbnRleHQtbWFuYWdlciBmb3JtIGluc3RlYWQ/IgogICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKG1zZykKLSAgICAgICAgcmV0dXJuIFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRf
ZXhjZXB0aW9uLCBtZXNzYWdlLCBtYXRjaF9leHByKQotICAgIGVsaWYgaXNpbnN0YW5jZShhcmdz
WzBdLCBzdHIpOgotICAgICAgICBjb2RlLCA9IGFyZ3MKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoY29kZSwgc3RyKQotICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKLSAgICAgICAg
bG9jID0gZnJhbWUuZl9sb2NhbHMuY29weSgpCi0gICAgICAgIGxvYy51cGRhdGUoa3dhcmdzKQot
ICAgICAgICAjIHByaW50ICJyYWlzZXMgZnJhbWUgc2NvcGU6ICVyIiAlIGZyYW1lLmZfbG9jYWxz
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShj
b2RlKS5jb21waWxlKCkKLSAgICAgICAgICAgIHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgZnJhbWUu
Zl9nbG9iYWxzLCBsb2MpCi0gICAgICAgICAgICAjIFhYWCBkaWRuJ1QgbWVhbiBmX2dsb2JhbHMg
PT0gZl9sb2NhbHMgc29tZXRoaW5nIHNwZWNpYWw/Ci0gICAgICAgICAgICAjICAgICB0aGlzIGlz
IGRlc3Ryb3llZCBoZXJlIC4uLgotICAgICAgICBleGNlcHQgZXhwZWN0ZWRfZXhjZXB0aW9uOgot
ICAgICAgICAgICAgcmV0dXJuIF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCisgICAgICAg
IHJldHVybiBSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgbWVzc2FnZSwgbWF0Y2gp
CiAgICAgZWxzZToKICAgICAgICAgZnVuYyA9IGFyZ3NbMF0KKyAgICAgICAgaWYgbm90IGNhbGxh
YmxlKGZ1bmMpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAg
ICJ7IXJ9IG9iamVjdCAodHlwZToge30pIG11c3QgYmUgY2FsbGFibGUiLmZvcm1hdChmdW5jLCB0
eXBlKGZ1bmMpKQorICAgICAgICAgICAgKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmdW5j
KCphcmdzWzE6XSwgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBleHBlY3RlZF9leGNlcHRpb246
Ci0gICAgICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAg
ICAgZXhjZXB0IGV4cGVjdGVkX2V4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgIyBXZSBqdXN0
IGNhdWdodCB0aGUgZXhjZXB0aW9uIC0gdGhlcmUgaXMgYSB0cmFjZWJhY2suCisgICAgICAgICAg
ICBhc3NlcnQgZS5fX3RyYWNlYmFja19fIGlzIG5vdCBOb25lCisgICAgICAgICAgICByZXR1cm4g
X3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fZXhjX2luZm8oCisgICAgICAgICAgICAg
ICAgKHR5cGUoZSksIGUsIGUuX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgICkKICAgICBmYWls
KG1lc3NhZ2UpCiAKIAotcmFpc2VzLkV4Y2VwdGlvbiA9IGZhaWwuRXhjZXB0aW9uCisjIFRoaXMg
ZG9lc24ndCB3b3JrIHdpdGggbXlweSBmb3Igbm93LiBVc2UgZmFpbC5FeGNlcHRpb24gaW5zdGVh
ZC4KK3JhaXNlcy5FeGNlcHRpb24gPSBmYWlsLkV4Y2VwdGlvbiAgIyB0eXBlOiBpZ25vcmUKIAog
Ci1jbGFzcyBSYWlzZXNDb250ZXh0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
ZXhwZWN0ZWRfZXhjZXB0aW9uLCBtZXNzYWdlLCBtYXRjaF9leHByKToKK0BmaW5hbAorY2xhc3Mg
UmFpc2VzQ29udGV4dChHZW5lcmljW19FXSk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBz
ZWxmLAorICAgICAgICBleHBlY3RlZF9leGNlcHRpb246IFVuaW9uWyJUeXBlW19FXSIsIFR1cGxl
WyJUeXBlW19FXSIsIC4uLl1dLAorICAgICAgICBtZXNzYWdlOiBzdHIsCisgICAgICAgIG1hdGNo
X2V4cHI6IE9wdGlvbmFsW1VuaW9uW3N0ciwgIlBhdHRlcm5bc3RyXSJdXSA9IE5vbmUsCisgICAg
KSAtPiBOb25lOgogICAgICAgICBzZWxmLmV4cGVjdGVkX2V4Y2VwdGlvbiA9IGV4cGVjdGVkX2V4
Y2VwdGlvbgogICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCiAgICAgICAgIHNlbGYubWF0
Y2hfZXhwciA9IG1hdGNoX2V4cHIKLSAgICAgICAgc2VsZi5leGNpbmZvID0gTm9uZQorICAgICAg
ICBzZWxmLmV4Y2luZm8gPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW19weXRlc3QuX2NvZGUuRXhj
ZXB0aW9uSW5mb1tfRV1dCiAKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxm
LmV4Y2luZm8gPSBvYmplY3QuX19uZXdfXyhfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8pCisg
ICAgZGVmIF9fZW50ZXJfXyhzZWxmKSAtPiBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm9bX0Vd
OgorICAgICAgICBzZWxmLmV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZm9y
X2xhdGVyKCkKICAgICAgICAgcmV0dXJuIHNlbGYuZXhjaW5mbwogCi0gICAgZGVmIF9fZXhpdF9f
KHNlbGYsICp0cCk6CisgICAgZGVmIF9fZXhpdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBl
eGNfdHlwZTogT3B0aW9uYWxbIlR5cGVbQmFzZUV4Y2VwdGlvbl0iXSwKKyAgICAgICAgZXhjX3Zh
bDogT3B0aW9uYWxbQmFzZUV4Y2VwdGlvbl0sCisgICAgICAgIGV4Y190YjogT3B0aW9uYWxbVHJh
Y2ViYWNrVHlwZV0sCisgICAgKSAtPiBib29sOgogICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9
IFRydWUKLSAgICAgICAgaWYgdHBbMF0gaXMgTm9uZToKKyAgICAgICAgaWYgZXhjX3R5cGUgaXMg
Tm9uZToKICAgICAgICAgICAgIGZhaWwoc2VsZi5tZXNzYWdlKQotICAgICAgICBzZWxmLmV4Y2lu
Zm8uX19pbml0X18odHApCi0gICAgICAgIHN1cHByZXNzX2V4Y2VwdGlvbiA9IGlzc3ViY2xhc3Mo
c2VsZi5leGNpbmZvLnR5cGUsIHNlbGYuZXhwZWN0ZWRfZXhjZXB0aW9uKQotICAgICAgICBpZiBz
eXMudmVyc2lvbl9pbmZvWzBdID09IDIgYW5kIHN1cHByZXNzX2V4Y2VwdGlvbjoKLSAgICAgICAg
ICAgIHN5cy5leGNfY2xlYXIoKQotICAgICAgICBpZiBzZWxmLm1hdGNoX2V4cHIgYW5kIHN1cHBy
ZXNzX2V4Y2VwdGlvbjoKKyAgICAgICAgYXNzZXJ0IHNlbGYuZXhjaW5mbyBpcyBub3QgTm9uZQor
ICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhleGNfdHlwZSwgc2VsZi5leHBlY3RlZF9leGNlcHRp
b24pOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgQ2FzdCB0byBuYXJyb3cg
dGhlIGV4Y2VwdGlvbiB0eXBlIG5vdyB0aGF0IGl0J3MgdmVyaWZpZWQuCisgICAgICAgIGV4Y19p
bmZvID0gY2FzdCgKKyAgICAgICAgICAgIFR1cGxlWyJUeXBlW19FXSIsIF9FLCBUcmFjZWJhY2tU
eXBlXSwgKGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5leGNpbmZvLmZpbGxfdW5maWxsZWQoZXhjX2luZm8pCisgICAgICAgIGlmIHNlbGYubWF0Y2hf
ZXhwciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuZXhjaW5mby5tYXRjaChzZWxmLm1h
dGNoX2V4cHIpCi0gICAgICAgIHJldHVybiBzdXBwcmVzc19leGNlcHRpb24KKyAgICAgICAgcmV0
dXJuIFRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3JlY3dhcm4ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZWN3YXJuLnB5CmluZGV4IDc4MzlmNTcwMGM4Ny4u
MzlkNmRlOTE0NTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZWN3YXJu
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3JlY3dhcm4ucHkKQEAgLTEsMjEgKzEs
MzMgQEAKLSIiIiByZWNvcmRpbmcgd2FybmluZ3MgZHVyaW5nIHRlc3QgZnVuY3Rpb24gZXhlY3V0
aW9uLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lv
biwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGluc3BlY3QKLQotaW1wb3J0IF9weXRlc3QuX2Nv
ZGUKLWltcG9ydCBweQotaW1wb3J0IHN5cworIiIiUmVjb3JkIHdhcm5pbmdzIGR1cmluZyB0ZXN0
IGZ1bmN0aW9uIGV4ZWN1dGlvbi4iIiIKK2ltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCitmcm9t
IHR5cGVzIGltcG9ydCBUcmFjZWJhY2tUeXBlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9t
IHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zy
b20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20g
dHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFBhdHRlcm4KK2Zyb20g
dHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIKK2Zyb20gdHlw
aW5nIGltcG9ydCBVbmlvbgorCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBmaW5hbAorZnJv
bSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgb3ZlcmxvYWQKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1w
b3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgZml4dHVyZQor
ZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsCiAKLWltcG9ydCByZQoraWYgVFlQRV9D
SEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQogCi1mcm9tIF9weXRlc3QuZml4
dHVyZXMgaW1wb3J0IHlpZWxkX2ZpeHR1cmUKLWZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQg
ZmFpbAogCitUID0gVHlwZVZhcigiVCIpCiAKLUB5aWVsZF9maXh0dXJlCi1kZWYgcmVjd2Fybigp
OgorCitAZml4dHVyZQorZGVmIHJlY3dhcm4oKSAtPiBHZW5lcmF0b3JbIldhcm5pbmdzUmVjb3Jk
ZXIiLCBOb25lLCBOb25lXToKICAgICAiIiJSZXR1cm4gYSA6Y2xhc3M6YFdhcm5pbmdzUmVjb3Jk
ZXJgIGluc3RhbmNlIHRoYXQgcmVjb3JkcyBhbGwgd2FybmluZ3MgZW1pdHRlZCBieSB0ZXN0IGZ1
bmN0aW9ucy4KIAogICAgIFNlZSBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvd2Fybmlu
Z3MuaHRtbCBmb3IgaW5mb3JtYXRpb24KQEAgLTI3LDkgKzM5LDI2IEBAIGRlZiByZWN3YXJuKCk6
CiAgICAgICAgIHlpZWxkIHdyZWMKIAogCi1kZWYgZGVwcmVjYXRlZF9jYWxsKGZ1bmM9Tm9uZSwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiJjb250ZXh0IG1hbmFnZXIgdGhhdCBjYW4gYmUgdXNl
ZCB0byBlbnN1cmUgYSBibG9jayBvZiBjb2RlIHRyaWdnZXJzIGEKLSAgICBgYERlcHJlY2F0aW9u
V2FybmluZ2BgIG9yIGBgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2BgOjoKK0BvdmVybG9hZAor
ZGVmIGRlcHJlY2F0ZWRfY2FsbCgKKyAgICAqLCBtYXRjaDogT3B0aW9uYWxbVW5pb25bc3RyLCAi
UGF0dGVybltzdHJdIl1dID0gLi4uCispIC0+ICJXYXJuaW5nc1JlY29yZGVyIjoKKyAgICAuLi4K
KworCitAb3ZlcmxvYWQgICMgbm9xYTogRjgxMQorZGVmIGRlcHJlY2F0ZWRfY2FsbCggICMgbm9x
YTogRjgxMQorICAgIGZ1bmM6IENhbGxhYmxlWy4uLiwgVF0sICphcmdzOiBBbnksICoqa3dhcmdz
OiBBbnkKKykgLT4gVDoKKyAgICAuLi4KKworCitkZWYgZGVwcmVjYXRlZF9jYWxsKCAgIyBub3Fh
OiBGODExCisgICAgZnVuYzogT3B0aW9uYWxbQ2FsbGFibGVbLi4uLCBBbnldXSA9IE5vbmUsICph
cmdzOiBBbnksICoqa3dhcmdzOiBBbnkKKykgLT4gVW5pb25bIldhcm5pbmdzUmVjb3JkZXIiLCBB
bnldOgorICAgICIiIkFzc2VydCB0aGF0IGNvZGUgcHJvZHVjZXMgYSBgYERlcHJlY2F0aW9uV2Fy
bmluZ2BgIG9yIGBgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2BgLgorCisgICAgVGhpcyBmdW5j
dGlvbiBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlcjo6CiAKICAgICAgICAgPj4+IGlt
cG9ydCB3YXJuaW5ncwogICAgICAgICA+Pj4gZGVmIGFwaV9jYWxsX3YyKCk6CkBAIC0zOSw1MiAr
NjgsNDcgQEAgZGVmIGRlcHJlY2F0ZWRfY2FsbChmdW5jPU5vbmUsICphcmdzLCAqKmt3YXJncyk6
CiAgICAgICAgID4+PiB3aXRoIGRlcHJlY2F0ZWRfY2FsbCgpOgogICAgICAgICAuLi4gICAgYXNz
ZXJ0IGFwaV9jYWxsX3YyKCkgPT0gMjAwCiAKLSAgICBgYGRlcHJlY2F0ZWRfY2FsbGBgIGNhbiBh
bHNvIGJlIHVzZWQgYnkgcGFzc2luZyBhIGZ1bmN0aW9uIGFuZCBgYCphcmdzYGAgYW5kIGBgKmt3
YXJnc2BgLAotICAgIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBlbnN1cmUgY2FsbGluZyBgYGZ1bmMo
KmFyZ3MsICoqa3dhcmdzKWBgIHByb2R1Y2VzIG9uZSBvZiB0aGUgd2FybmluZ3MKLSAgICB0eXBl
cyBhYm92ZS4KLSAgICAiIiIKLSAgICBpZiBub3QgZnVuYzoKLSAgICAgICAgcmV0dXJuIF9EZXBy
ZWNhdGVkQ2FsbENvbnRleHQoKQotICAgIGVsc2U6Ci0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9f
ID0gVHJ1ZQotICAgICAgICB3aXRoIF9EZXByZWNhdGVkQ2FsbENvbnRleHQoKToKLSAgICAgICAg
ICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKLQotCi1jbGFzcyBfRGVwcmVjYXRlZENh
bGxDb250ZXh0KG9iamVjdCk6Ci0gICAgIiIiSW1wbGVtZW50cyB0aGUgbG9naWMgdG8gY2FwdHVy
ZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBhcyBhIGNvbnRleHQgbWFuYWdlci4iIiIKLQotICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMgPSBb
XQotICAgICAgICBzZWxmLl9vbGRfd2FybiA9IHdhcm5pbmdzLndhcm4KLSAgICAgICAgc2VsZi5f
b2xkX3dhcm5fZXhwbGljaXQgPSB3YXJuaW5ncy53YXJuX2V4cGxpY2l0Ci0gICAgICAgIHdhcm5p
bmdzLndhcm5fZXhwbGljaXQgPSBzZWxmLl93YXJuX2V4cGxpY2l0Ci0gICAgICAgIHdhcm5pbmdz
Lndhcm4gPSBzZWxmLl93YXJuCi0KLSAgICBkZWYgX3dhcm5fZXhwbGljaXQoc2VsZiwgbWVzc2Fn
ZSwgY2F0ZWdvcnksICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmVkX2Nh
dGVnb3JpZXMuYXBwZW5kKGNhdGVnb3J5KQotCi0gICAgZGVmIF93YXJuKHNlbGYsIG1lc3NhZ2Us
IGNhdGVnb3J5PU5vbmUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uo
bWVzc2FnZSwgV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLl9jYXB0dXJlZF9jYXRlZ29yaWVz
LmFwcGVuZChtZXNzYWdlLl9fY2xhc3NfXykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
bGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMuYXBwZW5kKGNhdGVnb3J5KQotCi0gICAgZGVmIF9fZXhp
dF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgotICAgICAgICB3YXJuaW5ncy53
YXJuX2V4cGxpY2l0ID0gc2VsZi5fb2xkX3dhcm5fZXhwbGljaXQKLSAgICAgICAgd2FybmluZ3Mu
d2FybiA9IHNlbGYuX29sZF93YXJuCi0KLSAgICAgICAgaWYgZXhjX3R5cGUgaXMgTm9uZToKLSAg
ICAgICAgICAgIGRlcHJlY2F0aW9uX2NhdGVnb3JpZXMgPSAoRGVwcmVjYXRpb25XYXJuaW5nLCBQ
ZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgaWYgbm90IGFueSgKLSAgICAg
ICAgICAgICAgICBpc3N1YmNsYXNzKGMsIGRlcHJlY2F0aW9uX2NhdGVnb3JpZXMpIGZvciBjIGlu
IHNlbGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAg
ICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgICAgICAgICAgbXNnID0gIkRpZCBu
b3QgcHJvZHVjZSBEZXByZWNhdGlvbldhcm5pbmcgb3IgUGVuZGluZ0RlcHJlY2F0aW9uV2Fybmlu
ZyIKLSAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisgICAgSXQgY2Fu
IGFsc28gYmUgdXNlZCBieSBwYXNzaW5nIGEgZnVuY3Rpb24gYW5kIGBgKmFyZ3NgYCBhbmQgYGAq
Kmt3YXJnc2BgLAorICAgIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBlbnN1cmUgY2FsbGluZyBgYGZ1
bmMoKmFyZ3MsICoqa3dhcmdzKWBgIHByb2R1Y2VzIG9uZSBvZgorICAgIHRoZSB3YXJuaW5ncyB0
eXBlcyBhYm92ZS4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBm
dW5jdGlvbi4KIAorICAgIEluIHRoZSBjb250ZXh0IG1hbmFnZXIgZm9ybSB5b3UgbWF5IHVzZSB0
aGUga2V5d29yZCBhcmd1bWVudCBgYG1hdGNoYGAgdG8gYXNzZXJ0CisgICAgdGhhdCB0aGUgd2Fy
bmluZyBtYXRjaGVzIGEgdGV4dCBvciByZWdleC4KIAotZGVmIHdhcm5zKGV4cGVjdGVkX3dhcm5p
bmcsICphcmdzLCAqKmt3YXJncyk6CisgICAgVGhlIGNvbnRleHQgbWFuYWdlciBwcm9kdWNlcyBh
IGxpc3Qgb2YgOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAgb2JqZWN0cywKKyAgICBv
bmUgZm9yIGVhY2ggd2FybmluZyByYWlzZWQuCisgICAgIiIiCisgICAgX190cmFjZWJhY2toaWRl
X18gPSBUcnVlCisgICAgaWYgZnVuYyBpcyBub3QgTm9uZToKKyAgICAgICAgYXJncyA9IChmdW5j
LCkgKyBhcmdzCisgICAgcmV0dXJuIHdhcm5zKChEZXByZWNhdGlvbldhcm5pbmcsIFBlbmRpbmdE
ZXByZWNhdGlvbldhcm5pbmcpLCAqYXJncywgKiprd2FyZ3MpCisKKworQG92ZXJsb2FkCitkZWYg
d2FybnMoCisgICAgZXhwZWN0ZWRfd2FybmluZzogT3B0aW9uYWxbVW5pb25bIlR5cGVbV2Fybmlu
Z10iLCBUdXBsZVsiVHlwZVtXYXJuaW5nXSIsIC4uLl1dXSwKKyAgICAqLAorICAgIG1hdGNoOiAi
T3B0aW9uYWxbVW5pb25bc3RyLCBQYXR0ZXJuW3N0cl1dXSIgPSAuLi4KKykgLT4gIldhcm5pbmdz
Q2hlY2tlciI6CisgICAgLi4uCisKKworQG92ZXJsb2FkICAjIG5vcWE6IEY4MTEKK2RlZiB3YXJu
cyggICMgbm9xYTogRjgxMQorICAgIGV4cGVjdGVkX3dhcm5pbmc6IE9wdGlvbmFsW1VuaW9uWyJU
eXBlW1dhcm5pbmddIiwgVHVwbGVbIlR5cGVbV2FybmluZ10iLCAuLi5dXV0sCisgICAgZnVuYzog
Q2FsbGFibGVbLi4uLCBUXSwKKyAgICAqYXJnczogQW55LAorICAgICoqa3dhcmdzOiBBbnkKKykg
LT4gVDoKKyAgICAuLi4KKworCitkZWYgd2FybnMoICAjIG5vcWE6IEY4MTEKKyAgICBleHBlY3Rl
ZF93YXJuaW5nOiBPcHRpb25hbFtVbmlvblsiVHlwZVtXYXJuaW5nXSIsIFR1cGxlWyJUeXBlW1dh
cm5pbmddIiwgLi4uXV1dLAorICAgICphcmdzOiBBbnksCisgICAgbWF0Y2g6IE9wdGlvbmFsW1Vu
aW9uW3N0ciwgIlBhdHRlcm5bc3RyXSJdXSA9IE5vbmUsCisgICAgKiprd2FyZ3M6IEFueQorKSAt
PiBVbmlvblsiV2FybmluZ3NDaGVja2VyIiwgQW55XToKICAgICByIiIiQXNzZXJ0IHRoYXQgY29k
ZSByYWlzZXMgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHdhcm5pbmcuCiAKICAgICBTcGVjaWZpY2Fs
bHksIHRoZSBwYXJhbWV0ZXIgYGBleHBlY3RlZF93YXJuaW5nYGAgY2FuIGJlIGEgd2FybmluZyBj
bGFzcyBvcgpAQCAtMTAxLDcgKzEyNSw3IEBAIGRlZiB3YXJucyhleHBlY3RlZF93YXJuaW5nLCAq
YXJncywgKiprd2FyZ3MpOgogICAgICAgICAuLi4gICAgd2FybmluZ3Mud2FybigibXkgd2Fybmlu
ZyIsIFJ1bnRpbWVXYXJuaW5nKQogCiAgICAgSW4gdGhlIGNvbnRleHQgbWFuYWdlciBmb3JtIHlv
dSBtYXkgdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBgbWF0Y2hgYCB0byBhc3NlcnQKLSAgICB0
aGF0IHRoZSBleGNlcHRpb24gbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXg6OgorICAgIHRoYXQgdGhl
IHdhcm5pbmcgbWF0Y2hlcyBhIHRleHQgb3IgcmVnZXg6OgogCiAgICAgICAgID4+PiB3aXRoIHdh
cm5zKFVzZXJXYXJuaW5nLCBtYXRjaD0nbXVzdCBiZSAwIG9yIE5vbmUnKToKICAgICAgICAgLi4u
ICAgICB3YXJuaW5ncy53YXJuKCJ2YWx1ZSBtdXN0IGJlIDAgb3IgTm9uZSIsIFVzZXJXYXJuaW5n
KQpAQCAtMTE2LDI0ICsxNDAsMjEgQEAgZGVmIHdhcm5zKGV4cGVjdGVkX3dhcm5pbmcsICphcmdz
LCAqKmt3YXJncyk6CiAgICAgICAgIEZhaWxlZDogRElEIE5PVCBXQVJOLiBObyB3YXJuaW5ncyBv
ZiB0eXBlIC4uLlVzZXJXYXJuaW5nLi4uIHdhcyBlbWl0dGVkLi4uCiAKICAgICAiIiIKLSAgICBt
YXRjaF9leHByID0gTm9uZQorICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogICAgIGlmIG5v
dCBhcmdzOgotICAgICAgICBpZiAibWF0Y2giIGluIGt3YXJnczoKLSAgICAgICAgICAgIG1hdGNo
X2V4cHIgPSBrd2FyZ3MucG9wKCJtYXRjaCIpCi0gICAgICAgIHJldHVybiBXYXJuaW5nc0NoZWNr
ZXIoZXhwZWN0ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaF9leHByKQotICAgIGVsaWYgaXNp
bnN0YW5jZShhcmdzWzBdLCBzdHIpOgotICAgICAgICBjb2RlLCA9IGFyZ3MKLSAgICAgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UoY29kZSwgc3RyKQotICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUo
MSkKLSAgICAgICAgbG9jID0gZnJhbWUuZl9sb2NhbHMuY29weSgpCi0gICAgICAgIGxvYy51cGRh
dGUoa3dhcmdzKQotCi0gICAgICAgIHdpdGggV2FybmluZ3NDaGVja2VyKGV4cGVjdGVkX3dhcm5p
bmcsIG1hdGNoX2V4cHI9bWF0Y2hfZXhwcik6Ci0gICAgICAgICAgICBjb2RlID0gX3B5dGVzdC5f
Y29kZS5Tb3VyY2UoY29kZSkuY29tcGlsZSgpCi0gICAgICAgICAgICBweS5idWlsdGluLmV4ZWNf
KGNvZGUsIGZyYW1lLmZfZ2xvYmFscywgbG9jKQorICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAg
ICAgICBtc2cgPSAiVW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8gcHl0ZXN0
Lndhcm5zOiAiCisgICAgICAgICAgICBtc2cgKz0gIiwgIi5qb2luKHNvcnRlZChrd2FyZ3MpKQor
ICAgICAgICAgICAgbXNnICs9ICJcblVzZSBjb250ZXh0LW1hbmFnZXIgZm9ybSBpbnN0ZWFkPyIK
KyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCisgICAgICAgIHJldHVybiBXYXJuaW5n
c0NoZWNrZXIoZXhwZWN0ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaCkKICAgICBlbHNlOgog
ICAgICAgICBmdW5jID0gYXJnc1swXQotICAgICAgICB3aXRoIFdhcm5pbmdzQ2hlY2tlcihleHBl
Y3RlZF93YXJuaW5nLCBtYXRjaF9leHByPW1hdGNoX2V4cHIpOgorICAgICAgICBpZiBub3QgY2Fs
bGFibGUoZnVuYyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAg
ICAgInshcn0gb2JqZWN0ICh0eXBlOiB7fSkgbXVzdCBiZSBjYWxsYWJsZSIuZm9ybWF0KGZ1bmMs
IHR5cGUoZnVuYykpCisgICAgICAgICAgICApCisgICAgICAgIHdpdGggV2FybmluZ3NDaGVja2Vy
KGV4cGVjdGVkX3dhcm5pbmcpOgogICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3NbMTpdLCAq
Kmt3YXJncykKIAogCkBAIC0xNDMsMjkgKzE2NCwzMCBAQCBjbGFzcyBXYXJuaW5nc1JlY29yZGVy
KHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKToKICAgICBBZGFwdGVkIGZyb20gYHdhcm5pbmdzLmNh
dGNoX3dhcm5pbmdzYC4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc3VwZXIoV2FybmluZ3NSZWNvcmRlciwgc2VsZikuX19pbml0X18ocmVjb3JkPVRydWUpCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICMgVHlwZSBpZ25vcmVkIGR1
ZSB0byB0aGUgd2F5IHR5cGVzaGVkIGhhbmRsZXMgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MuCisg
ICAgICAgIHN1cGVyKCkuX19pbml0X18ocmVjb3JkPVRydWUpICAjIHR5cGU6IGlnbm9yZVtjYWxs
LWFyZ10KICAgICAgICAgc2VsZi5fZW50ZXJlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2xpc3Qg
PSBbXQorICAgICAgICBzZWxmLl9saXN0ID0gW10gICMgdHlwZTogTGlzdFt3YXJuaW5ncy5XYXJu
aW5nTWVzc2FnZV0KIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBsaXN0KHNlbGYpOgorICAgIGRl
ZiBsaXN0KHNlbGYpIC0+IExpc3RbIndhcm5pbmdzLldhcm5pbmdNZXNzYWdlIl06CiAgICAgICAg
ICIiIlRoZSBsaXN0IG9mIHJlY29yZGVkIHdhcm5pbmdzLiIiIgogICAgICAgICByZXR1cm4gc2Vs
Zi5fbGlzdAogCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorICAgIGRlZiBfX2dldGl0
ZW1fXyhzZWxmLCBpOiBpbnQpIC0+ICJ3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSI6CiAgICAgICAg
ICIiIkdldCBhIHJlY29yZGVkIHdhcm5pbmcgYnkgaW5kZXguIiIiCiAgICAgICAgIHJldHVybiBz
ZWxmLl9saXN0W2ldCiAKLSAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgZGVmIF9faXRlcl9f
KHNlbGYpIC0+IEl0ZXJhdG9yWyJ3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSJdOgogICAgICAgICAi
IiJJdGVyYXRlIHRocm91Z2ggdGhlIHJlY29yZGVkIHdhcm5pbmdzLiIiIgogICAgICAgICByZXR1
cm4gaXRlcihzZWxmLl9saXN0KQogCi0gICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgZGVmIF9f
bGVuX18oc2VsZikgLT4gaW50OgogICAgICAgICAiIiJUaGUgbnVtYmVyIG9mIHJlY29yZGVkIHdh
cm5pbmdzLiIiIgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2xpc3QpCiAKLSAgICBkZWYgcG9w
KHNlbGYsIGNscz1XYXJuaW5nKToKKyAgICBkZWYgcG9wKHNlbGYsIGNsczogIlR5cGVbV2Fybmlu
Z10iID0gV2FybmluZykgLT4gIndhcm5pbmdzLldhcm5pbmdNZXNzYWdlIjoKICAgICAgICAgIiIi
UG9wIHRoZSBmaXJzdCByZWNvcmRlZCB3YXJuaW5nLCByYWlzZSBleGNlcHRpb24gaWYgbm90IGV4
aXN0cy4iIiIKICAgICAgICAgZm9yIGksIHcgaW4gZW51bWVyYXRlKHNlbGYuX2xpc3QpOgogICAg
ICAgICAgICAgaWYgaXNzdWJjbGFzcyh3LmNhdGVnb3J5LCBjbHMpOgpAQCAtMTczLDUwICsxOTUs
NzkgQEAgY2xhc3MgV2FybmluZ3NSZWNvcmRlcih3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyk6CiAg
ICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogICAgICAgICByYWlzZSBBc3NlcnRpb25F
cnJvcigiJXIgbm90IGZvdW5kIGluIHdhcm5pbmcgbGlzdCIgJSBjbHMpCiAKLSAgICBkZWYgY2xl
YXIoc2VsZik6CisgICAgZGVmIGNsZWFyKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICIiIkNsZWFy
IHRoZSBsaXN0IG9mIHJlY29yZGVkIHdhcm5pbmdzLiIiIgogICAgICAgICBzZWxmLl9saXN0Wzpd
ID0gW10KIAotICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgIyBUeXBlIGlnbm9yZWQgYmVj
YXVzZSBpdCBkb2Vzbid0IGV4YWN0bHkgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MuX19lbnRlcl9f
CisgICAgIyAtLSBpdCByZXR1cm5zIGEgTGlzdCBidXQgd2Ugb25seSBlbXVsYXRlIG9uZS4KKyAg
ICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICJXYXJuaW5nc1JlY29yZGVyIjogICMgdHlwZTogaWdu
b3JlCiAgICAgICAgIGlmIHNlbGYuX2VudGVyZWQ6CiAgICAgICAgICAgICBfX3RyYWNlYmFja2hp
ZGVfXyA9IFRydWUKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGVudGVy
ICVyIHR3aWNlIiAlIHNlbGYpCi0gICAgICAgIHNlbGYuX2xpc3QgPSBzdXBlcihXYXJuaW5nc1Jl
Y29yZGVyLCBzZWxmKS5fX2VudGVyX18oKQorICAgICAgICBfbGlzdCA9IHN1cGVyKCkuX19lbnRl
cl9fKCkKKyAgICAgICAgIyByZWNvcmQ9VHJ1ZSBtZWFucyBpdCdzIE5vbmUuCisgICAgICAgIGFz
c2VydCBfbGlzdCBpcyBub3QgTm9uZQorICAgICAgICBzZWxmLl9saXN0ID0gX2xpc3QKICAgICAg
ICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQogICAgICAgICByZXR1cm4gc2VsZgog
Ci0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CisgICAgZGVmIF9fZXhpdF9fKAor
ICAgICAgICBzZWxmLAorICAgICAgICBleGNfdHlwZTogT3B0aW9uYWxbIlR5cGVbQmFzZUV4Y2Vw
dGlvbl0iXSwKKyAgICAgICAgZXhjX3ZhbDogT3B0aW9uYWxbQmFzZUV4Y2VwdGlvbl0sCisgICAg
ICAgIGV4Y190YjogT3B0aW9uYWxbVHJhY2ViYWNrVHlwZV0sCisgICAgKSAtPiBOb25lOgogICAg
ICAgICBpZiBub3Qgc2VsZi5fZW50ZXJlZDoKICAgICAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9f
ID0gVHJ1ZQogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW5ub3QgZXhpdCAlciB3
aXRob3V0IGVudGVyaW5nIGZpcnN0IiAlIHNlbGYpCi0gICAgICAgIHN1cGVyKFdhcm5pbmdzUmVj
b3JkZXIsIHNlbGYpLl9fZXhpdF9fKCpleGNfaW5mbykKIAorICAgICAgICBzdXBlcigpLl9fZXhp
dF9fKGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpCiAKLWNsYXNzIFdhcm5pbmdzQ2hlY2tlcihX
YXJuaW5nc1JlY29yZGVyKToKKyAgICAgICAgIyBCdWlsdC1pbiBjYXRjaF93YXJuaW5ncyBkb2Vz
IG5vdCByZXNldCBlbnRlcmVkIHN0YXRlIHNvIHdlIGRvIGl0CisgICAgICAgICMgbWFudWFsbHkg
aGVyZSBmb3IgdGhpcyBjb250ZXh0IG1hbmFnZXIgdG8gYmVjb21lIHJldXNhYmxlLgorICAgICAg
ICBzZWxmLl9lbnRlcmVkID0gRmFsc2UKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3Rl
ZF93YXJuaW5nPU5vbmUsIG1hdGNoX2V4cHI9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKFdhcm5pbmdz
Q2hlY2tlciwgc2VsZikuX19pbml0X18oKQogCi0gICAgICAgIG1zZyA9ICgKLSAgICAgICAgICAg
ICJleGNlcHRpb25zIG11c3QgYmUgb2xkLXN0eWxlIGNsYXNzZXMgb3IgIiAiZGVyaXZlZCBmcm9t
IFdhcm5pbmcsIG5vdCAlcyIKLSAgICAgICAgKQotICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVj
dGVkX3dhcm5pbmcsIHR1cGxlKToKK0BmaW5hbAorY2xhc3MgV2FybmluZ3NDaGVja2VyKFdhcm5p
bmdzUmVjb3JkZXIpOgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAg
ZXhwZWN0ZWRfd2FybmluZzogT3B0aW9uYWxbCisgICAgICAgICAgICBVbmlvblsiVHlwZVtXYXJu
aW5nXSIsIFR1cGxlWyJUeXBlW1dhcm5pbmddIiwgLi4uXV0KKyAgICAgICAgXSA9IE5vbmUsCisg
ICAgICAgIG1hdGNoX2V4cHI6IE9wdGlvbmFsW1VuaW9uW3N0ciwgIlBhdHRlcm5bc3RyXSJdXSA9
IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAg
ICAgICBtc2cgPSAiZXhjZXB0aW9ucyBtdXN0IGJlIGRlcml2ZWQgZnJvbSBXYXJuaW5nLCBub3Qg
JXMiCisgICAgICAgIGlmIGV4cGVjdGVkX3dhcm5pbmcgaXMgTm9uZToKKyAgICAgICAgICAgIGV4
cGVjdGVkX3dhcm5pbmdfdHVwID0gTm9uZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0
ZWRfd2FybmluZywgdHVwbGUpOgogICAgICAgICAgICAgZm9yIGV4YyBpbiBleHBlY3RlZF93YXJu
aW5nOgotICAgICAgICAgICAgICAgIGlmIG5vdCBpbnNwZWN0LmlzY2xhc3MoZXhjKToKKyAgICAg
ICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhleGMsIFdhcm5pbmcpOgogICAgICAgICAgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnICUgdHlwZShleGMpKQotICAgICAgICBlbGlmIGlu
c3BlY3QuaXNjbGFzcyhleHBlY3RlZF93YXJuaW5nKToKLSAgICAgICAgICAgIGV4cGVjdGVkX3dh
cm5pbmcgPSAoZXhwZWN0ZWRfd2FybmluZywpCi0gICAgICAgIGVsaWYgZXhwZWN0ZWRfd2Fybmlu
ZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGV4cGVjdGVkX3dhcm5pbmdfdHVwID0gZXhwZWN0
ZWRfd2FybmluZworICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhwZWN0ZWRfd2FybmluZywgV2Fy
bmluZyk6CisgICAgICAgICAgICBleHBlY3RlZF93YXJuaW5nX3R1cCA9IChleHBlY3RlZF93YXJu
aW5nLCkKKyAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cgJSB0
eXBlKGV4cGVjdGVkX3dhcm5pbmcpKQogCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRfd2FybmluZyA9
IGV4cGVjdGVkX3dhcm5pbmcKKyAgICAgICAgc2VsZi5leHBlY3RlZF93YXJuaW5nID0gZXhwZWN0
ZWRfd2FybmluZ190dXAKICAgICAgICAgc2VsZi5tYXRjaF9leHByID0gbWF0Y2hfZXhwcgogCi0g
ICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6Ci0gICAgICAgIHN1cGVyKFdhcm5pbmdz
Q2hlY2tlciwgc2VsZikuX19leGl0X18oKmV4Y19pbmZvKQorICAgIGRlZiBfX2V4aXRfXygKKyAg
ICAgICAgc2VsZiwKKyAgICAgICAgZXhjX3R5cGU6IE9wdGlvbmFsWyJUeXBlW0Jhc2VFeGNlcHRp
b25dIl0sCisgICAgICAgIGV4Y192YWw6IE9wdGlvbmFsW0Jhc2VFeGNlcHRpb25dLAorICAgICAg
ICBleGNfdGI6IE9wdGlvbmFsW1RyYWNlYmFja1R5cGVdLAorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgc3VwZXIoKS5fX2V4aXRfXyhleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKQorCisgICAgICAg
IF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQogCiAgICAgICAgICMgb25seSBjaGVjayBpZiB3ZSdy
ZSBub3QgY3VycmVudGx5IGhhbmRsaW5nIGFuIGV4Y2VwdGlvbgotICAgICAgICBpZiBhbGwoYSBp
cyBOb25lIGZvciBhIGluIGV4Y19pbmZvKToKKyAgICAgICAgaWYgZXhjX3R5cGUgaXMgTm9uZSBh
bmQgZXhjX3ZhbCBpcyBOb25lIGFuZCBleGNfdGIgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHNl
bGYuZXhwZWN0ZWRfd2FybmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBub3Qg
YW55KGlzc3ViY2xhc3Moci5jYXRlZ29yeSwgc2VsZi5leHBlY3RlZF93YXJuaW5nKSBmb3IgciBp
biBzZWxmKToKICAgICAgICAgICAgICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZXBvcnRzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvcmVwb3J0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmM0MmY3NzhlYzQwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L3JlcG9ydHMucHkKQEAgLTAsMCArMSw1NjggQEAKK2Zyb20gaW8gaW1wb3J0IFN0
cmluZ0lPCitmcm9tIHBwcmludCBpbXBvcnQgcHByaW50Citmcm9tIHR5cGluZyBpbXBvcnQgQW55
Citmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20g
dHlwaW5nIGltcG9ydCBJdGVyYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5
cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCitmcm9tIHR5cGlu
ZyBpbXBvcnQgVW5pb24KKworaW1wb3J0IGF0dHIKK2ltcG9ydCBweQorCitmcm9tIF9weXRlc3Qu
X2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uQ2hhaW5SZXByCitmcm9tIF9weXRlc3QuX2NvZGUu
Y29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0
IEV4Y2VwdGlvblJlcHIKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRW50cnkK
K2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRW50cnlOYXRpdmUKK2Zyb20gX3B5
dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXByRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0ZXN0Ll9j
b2RlLmNvZGUgaW1wb3J0IFJlcHJGaWxlTG9jYXRpb24KK2Zyb20gX3B5dGVzdC5fY29kZS5jb2Rl
IGltcG9ydCBSZXByRnVuY0FyZ3MKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBSZXBy
TG9jYWxzCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgUmVwclRyYWNlYmFjaworZnJv
bSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgorZnJvbSBfcHl0ZXN0Ll9p
byBpbXBvcnQgVGVybWluYWxXcml0ZXIKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFs
Citmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9y
Citmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0KK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBp
bXBvcnQgc2tpcAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKKworaWYgVFlQRV9D
SEVDS0lORzoKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTm9SZXR1cm4KKyAgICBmcm9tIHR5cGlu
Z19leHRlbnNpb25zIGltcG9ydCBUeXBlCisgICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBv
cnQgTGl0ZXJhbAorCisgICAgZnJvbSBfcHl0ZXN0LnJ1bm5lciBpbXBvcnQgQ2FsbEluZm8KKwor
CitkZWYgZ2V0d29ya2VyaW5mb2xpbmUobm9kZSk6CisgICAgdHJ5OgorICAgICAgICByZXR1cm4g
bm9kZS5fd29ya2VyaW5mb2NhY2hlCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAg
ICBkID0gbm9kZS53b3JrZXJpbmZvCisgICAgICAgIHZlciA9ICIlcy4lcy4lcyIgJSBkWyJ2ZXJz
aW9uX2luZm8iXVs6M10KKyAgICAgICAgbm9kZS5fd29ya2VyaW5mb2NhY2hlID0gcyA9ICJbe31d
IHt9IC0tIFB5dGhvbiB7fSB7fSIuZm9ybWF0KAorICAgICAgICAgICAgZFsiaWQiXSwgZFsic3lz
cGxhdGZvcm0iXSwgdmVyLCBkWyJleGVjdXRhYmxlIl0KKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gcworCisKK19SID0gVHlwZVZhcigiX1IiLCBib3VuZD0iQmFzZVJlcG9ydCIpCisKKworY2xh
c3MgQmFzZVJlcG9ydDoKKyAgICB3aGVuID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCisg
ICAgbG9jYXRpb24gPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW1R1cGxlW3N0ciwgT3B0aW9uYWxb
aW50XSwgc3RyXV0KKyAgICBsb25ncmVwciA9ICgKKyAgICAgICAgTm9uZQorICAgICkgICMgdHlw
ZTogVW5pb25bTm9uZSwgRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXSwgVHVwbGVbc3RyLCBp
bnQsIHN0cl0sIHN0ciwgVGVybWluYWxSZXByXQorICAgIHNlY3Rpb25zID0gW10gICMgdHlwZTog
TGlzdFtUdXBsZVtzdHIsIHN0cl1dCisgICAgbm9kZWlkID0gTm9uZSAgIyB0eXBlOiBzdHIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3OiBBbnkpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
X19kaWN0X18udXBkYXRlKGt3KQorCisgICAgaWYgVFlQRV9DSEVDS0lORzoKKyAgICAgICAgIyBD
YW4gaGF2ZSBhcmJpdHJhcnkgZmllbGRzIGdpdmVuIHRvIF9faW5pdF9fKCkuCisgICAgICAgIGRl
ZiBfX2dldGF0dHJfXyhzZWxmLCBrZXk6IHN0cikgLT4gQW55OgorICAgICAgICAgICAgLi4uCisK
KyAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCBvdXQ6IFRlcm1pbmFsV3JpdGVyKSAtPiBOb25lOgor
ICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJub2RlIik6CisgICAgICAgICAgICBvdXQubGluZShn
ZXR3b3JrZXJpbmZvbGluZShzZWxmLm5vZGUpKQorCisgICAgICAgIGxvbmdyZXByID0gc2VsZi5s
b25ncmVwcgorICAgICAgICBpZiBsb25ncmVwciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
CisKKyAgICAgICAgaWYgaGFzYXR0cihsb25ncmVwciwgInRvdGVybWluYWwiKToKKyAgICAgICAg
ICAgIGxvbmdyZXByX3Rlcm1pbmFsID0gY2FzdChUZXJtaW5hbFJlcHIsIGxvbmdyZXByKQorICAg
ICAgICAgICAgbG9uZ3JlcHJfdGVybWluYWwudG90ZXJtaW5hbChvdXQpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcyA9IHN0cihsb25ncmVwcikKKyAg
ICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgcyA9
ICI8dW5wcmludGFibGUgbG9uZ3JlcHI+IgorICAgICAgICAgICAgb3V0LmxpbmUocykKKworICAg
IGRlZiBnZXRfc2VjdGlvbnMoc2VsZiwgcHJlZml4OiBzdHIpIC0+IEl0ZXJhdG9yW1R1cGxlW3N0
ciwgc3RyXV06CisgICAgICAgIGZvciBuYW1lLCBjb250ZW50IGluIHNlbGYuc2VjdGlvbnM6Cisg
ICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgICAgICAgICB5
aWVsZCBwcmVmaXgsIGNvbnRlbnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb25ncmVwcnRl
eHQoc2VsZikgLT4gc3RyOgorICAgICAgICAiIiJSZWFkLW9ubHkgcHJvcGVydHkgdGhhdCByZXR1
cm5zIHRoZSBmdWxsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZgorICAgICAgICBgYGxvbmdyZXBy
YGAuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4wCisgICAgICAgICIiIgorICAgICAg
ICBmaWxlID0gU3RyaW5nSU8oKQorICAgICAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKGZpbGUpCisg
ICAgICAgIHR3Lmhhc21hcmt1cCA9IEZhbHNlCisgICAgICAgIHNlbGYudG90ZXJtaW5hbCh0dykK
KyAgICAgICAgZXhjID0gZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgIHJldHVybiBleGMuc3RyaXAo
KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNhcGxvZyhzZWxmKSAtPiBzdHI6CisgICAgICAg
ICIiIlJldHVybiBjYXB0dXJlZCBsb2cgbGluZXMsIGlmIGxvZyBjYXB0dXJpbmcgaXMgZW5hYmxl
ZC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgICAgIiIiCisgICAgICAg
IHJldHVybiAiXG4iLmpvaW4oCisgICAgICAgICAgICBjb250ZW50IGZvciAocHJlZml4LCBjb250
ZW50KSBpbiBzZWxmLmdldF9zZWN0aW9ucygiQ2FwdHVyZWQgbG9nIikKKyAgICAgICAgKQorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGNhcHN0ZG91dChzZWxmKSAtPiBzdHI6CisgICAgICAgICIi
IlJldHVybiBjYXB0dXJlZCB0ZXh0IGZyb20gc3Rkb3V0LCBpZiBjYXB0dXJpbmcgaXMgZW5hYmxl
ZC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjAKKyAgICAgICAgIiIiCisgICAgICAg
IHJldHVybiAiIi5qb2luKAorICAgICAgICAgICAgY29udGVudCBmb3IgKHByZWZpeCwgY29udGVu
dCkgaW4gc2VsZi5nZXRfc2VjdGlvbnMoIkNhcHR1cmVkIHN0ZG91dCIpCisgICAgICAgICkKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjYXBzdGRlcnIoc2VsZikgLT4gc3RyOgorICAgICAgICAi
IiJSZXR1cm4gY2FwdHVyZWQgdGV4dCBmcm9tIHN0ZGVyciwgaWYgY2FwdHVyaW5nIGlzIGVuYWJs
ZWQuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4wCisgICAgICAgICIiIgorICAgICAg
ICByZXR1cm4gIiIuam9pbigKKyAgICAgICAgICAgIGNvbnRlbnQgZm9yIChwcmVmaXgsIGNvbnRl
bnQpIGluIHNlbGYuZ2V0X3NlY3Rpb25zKCJDYXB0dXJlZCBzdGRlcnIiKQorICAgICAgICApCisK
KyAgICBwYXNzZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21lID09ICJwYXNzZWQiKQor
ICAgIGZhaWxlZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0gImZhaWxlZCIpCisg
ICAgc2tpcHBlZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0gInNraXBwZWQiKQor
CisgICAgQHByb3BlcnR5CisgICAgZGVmIGZzcGF0aChzZWxmKSAtPiBzdHI6CisgICAgICAgIHJl
dHVybiBzZWxmLm5vZGVpZC5zcGxpdCgiOjoiKVswXQorCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGNvdW50X3Rvd2FyZHNfc3VtbWFyeShzZWxmKSAtPiBib29sOgorICAgICAgICAiIiIqKkV4cGVy
aW1lbnRhbCoqIFdoZXRoZXIgdGhpcyByZXBvcnQgc2hvdWxkIGJlIGNvdW50ZWQgdG93YXJkcyB0
aGUKKyAgICAgICAgdG90YWxzIHNob3duIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3Qgc2Vzc2lvbjog
IjEgcGFzc2VkLCAxIGZhaWx1cmUsIGV0YyIuCisKKyAgICAgICAgLi4gbm90ZTo6CisKKyAgICAg
ICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCAqKmV4cGVyaW1lbnRhbCoqLCBzbyBi
ZXdhcmUgdGhhdCBpdCBpcyBzdWJqZWN0IHRvIGNoYW5nZXMKKyAgICAgICAgICAgIGV2ZW4gaW4g
cGF0Y2ggcmVsZWFzZXMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIGhlYWRfbGluZShzZWxmKSAtPiBPcHRpb25hbFtzdHJdOgorICAg
ICAgICAiIiIqKkV4cGVyaW1lbnRhbCoqIFRoZSBoZWFkIGxpbmUgc2hvd24gd2l0aCBsb25ncmVw
ciBvdXRwdXQgZm9yIHRoaXMKKyAgICAgICAgcmVwb3J0LCBtb3JlIGNvbW1vbmx5IGR1cmluZyB0
cmFjZWJhY2sgcmVwcmVzZW50YXRpb24gZHVyaW5nCisgICAgICAgIGZhaWx1cmVzOjoKKworICAg
ICAgICAgICAgX19fX19fX18gVGVzdC5mb28gX19fX19fX18KKworCisgICAgICAgIEluIHRoZSBl
eGFtcGxlIGFib3ZlLCB0aGUgaGVhZF9saW5lIGlzICJUZXN0LmZvbyIuCisKKyAgICAgICAgLi4g
bm90ZTo6CisKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCAqKmV4cGVy
aW1lbnRhbCoqLCBzbyBiZXdhcmUgdGhhdCBpdCBpcyBzdWJqZWN0IHRvIGNoYW5nZXMKKyAgICAg
ICAgICAgIGV2ZW4gaW4gcGF0Y2ggcmVsZWFzZXMuCisgICAgICAgICIiIgorICAgICAgICBpZiBz
ZWxmLmxvY2F0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZnNwYXRoLCBsaW5lbm8sIGRv
bWFpbiA9IHNlbGYubG9jYXRpb24KKyAgICAgICAgICAgIHJldHVybiBkb21haW4KKyAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgIGRlZiBfZ2V0X3ZlcmJvc2Vfd29yZChzZWxmLCBjb25maWc6IENv
bmZpZyk6CisgICAgICAgIF9jYXRlZ29yeSwgX3Nob3J0LCB2ZXJib3NlID0gY29uZmlnLmhvb2su
cHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKAorICAgICAgICAgICAgcmVwb3J0PXNlbGYsIGNvbmZp
Zz1jb25maWcKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gdmVyYm9zZQorCisgICAgZGVmIF90
b19qc29uKHNlbGYpIC0+IERpY3Rbc3RyLCBBbnldOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNv
bnRlbnRzIG9mIHRoaXMgcmVwb3J0IGFzIGEgZGljdCBvZiBidWlsdGluIGVudHJpZXMsCisgICAg
ICAgIHN1aXRhYmxlIGZvciBzZXJpYWxpemF0aW9uLgorCisgICAgICAgIFRoaXMgd2FzIG9yaWdp
bmFsbHkgdGhlIHNlcmlhbGl6ZV9yZXBvcnQoKSBmdW5jdGlvbiBmcm9tIHhkaXN0IChjYTAzMjY5
KS4KKworICAgICAgICBFeHBlcmltZW50YWwgbWV0aG9kLgorICAgICAgICAiIiIKKyAgICAgICAg
cmV0dXJuIF9yZXBvcnRfdG9fanNvbihzZWxmKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IF9mcm9tX2pzb24oY2xzOiAiVHlwZVtfUl0iLCByZXBvcnRkaWN0OiBEaWN0W3N0ciwgb2JqZWN0
XSkgLT4gX1I6CisgICAgICAgICIiIkNyZWF0ZSBlaXRoZXIgYSBUZXN0UmVwb3J0IG9yIENvbGxl
Y3RSZXBvcnQsIGRlcGVuZGluZyBvbiB0aGUgY2FsbGluZyBjbGFzcy4KKworICAgICAgICBJdCBp
cyB0aGUgY2FsbGVycyByZXNwb25zaWJpbGl0eSB0byBrbm93IHdoaWNoIGNsYXNzIHRvIHBhc3Mg
aGVyZS4KKworICAgICAgICBUaGlzIHdhcyBvcmlnaW5hbGx5IHRoZSBzZXJpYWxpemVfcmVwb3J0
KCkgZnVuY3Rpb24gZnJvbSB4ZGlzdCAoY2EwMzI2OSkuCisKKyAgICAgICAgRXhwZXJpbWVudGFs
IG1ldGhvZC4KKyAgICAgICAgIiIiCisgICAgICAgIGt3YXJncyA9IF9yZXBvcnRfa3dhcmdzX2Zy
b21fanNvbihyZXBvcnRkaWN0KQorICAgICAgICByZXR1cm4gY2xzKCoqa3dhcmdzKQorCisKK2Rl
ZiBfcmVwb3J0X3Vuc2VyaWFsaXphdGlvbl9mYWlsdXJlKAorICAgIHR5cGVfbmFtZTogc3RyLCBy
ZXBvcnRfY2xhc3M6ICJUeXBlW0Jhc2VSZXBvcnRdIiwgcmVwb3J0ZGljdAorKSAtPiAiTm9SZXR1
cm4iOgorICAgIHVybCA9ICJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNz
dWVzIgorICAgIHN0cmVhbSA9IFN0cmluZ0lPKCkKKyAgICBwcHJpbnQoIi0iICogMTAwLCBzdHJl
YW09c3RyZWFtKQorICAgIHBwcmludCgiSU5URVJOQUxFUlJPUjogVW5rbm93biBlbnRyeSB0eXBl
IHJldHVybmVkOiAlcyIgJSB0eXBlX25hbWUsIHN0cmVhbT1zdHJlYW0pCisgICAgcHByaW50KCJy
ZXBvcnRfbmFtZTogJXMiICUgcmVwb3J0X2NsYXNzLCBzdHJlYW09c3RyZWFtKQorICAgIHBwcmlu
dChyZXBvcnRkaWN0LCBzdHJlYW09c3RyZWFtKQorICAgIHBwcmludCgiUGxlYXNlIHJlcG9ydCB0
aGlzIGJ1ZyBhdCAlcyIgJSB1cmwsIHN0cmVhbT1zdHJlYW0pCisgICAgcHByaW50KCItIiAqIDEw
MCwgc3RyZWFtPXN0cmVhbSkKKyAgICByYWlzZSBSdW50aW1lRXJyb3Ioc3RyZWFtLmdldHZhbHVl
KCkpCisKKworQGZpbmFsCitjbGFzcyBUZXN0UmVwb3J0KEJhc2VSZXBvcnQpOgorICAgICIiIkJh
c2ljIHRlc3QgcmVwb3J0IG9iamVjdCAoYWxzbyB1c2VkIGZvciBzZXR1cCBhbmQgdGVhcmRvd24g
Y2FsbHMgaWYKKyAgICB0aGV5IGZhaWwpLiIiIgorCisgICAgX190ZXN0X18gPSBGYWxzZQorCisg
ICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBub2RlaWQ6IHN0ciwKKyAg
ICAgICAgbG9jYXRpb246IFR1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXSwKKyAgICAgICAg
a2V5d29yZHMsCisgICAgICAgIG91dGNvbWU6ICJMaXRlcmFsWydwYXNzZWQnLCAnZmFpbGVkJywg
J3NraXBwZWQnXSIsCisgICAgICAgIGxvbmdyZXByOiBVbmlvblsKKyAgICAgICAgICAgIE5vbmUs
IEV4Y2VwdGlvbkluZm9bQmFzZUV4Y2VwdGlvbl0sIFR1cGxlW3N0ciwgaW50LCBzdHJdLCBzdHIs
IFRlcm1pbmFsUmVwcgorICAgICAgICBdLAorICAgICAgICB3aGVuOiAiTGl0ZXJhbFsnc2V0dXAn
LCAnY2FsbCcsICd0ZWFyZG93biddIiwKKyAgICAgICAgc2VjdGlvbnM6IEl0ZXJhYmxlW1R1cGxl
W3N0ciwgc3RyXV0gPSAoKSwKKyAgICAgICAgZHVyYXRpb246IGZsb2F0ID0gMCwKKyAgICAgICAg
dXNlcl9wcm9wZXJ0aWVzOiBPcHRpb25hbFtJdGVyYWJsZVtUdXBsZVtzdHIsIG9iamVjdF1dXSA9
IE5vbmUsCisgICAgICAgICoqZXh0cmEKKyAgICApIC0+IE5vbmU6CisgICAgICAgICM6IE5vcm1h
bGl6ZWQgY29sbGVjdGlvbiBub2RlaWQuCisgICAgICAgIHNlbGYubm9kZWlkID0gbm9kZWlkCisK
KyAgICAgICAgIzogQSAoZmlsZXN5c3RlbXBhdGgsIGxpbmVubywgZG9tYWluaW5mbykgdHVwbGUg
aW5kaWNhdGluZyB0aGUKKyAgICAgICAgIzogYWN0dWFsIGxvY2F0aW9uIG9mIGEgdGVzdCBpdGVt
IC0gaXQgbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gdGhlCisgICAgICAgICM6IGNvbGxlY3RlZCBv
bmUgZS5nLiBpZiBhIG1ldGhvZCBpcyBpbmhlcml0ZWQgZnJvbSBhIGRpZmZlcmVudCBtb2R1bGUu
CisgICAgICAgIHNlbGYubG9jYXRpb24gPSBsb2NhdGlvbiAgIyB0eXBlOiBUdXBsZVtzdHIsIE9w
dGlvbmFsW2ludF0sIHN0cl0KKworICAgICAgICAjOiBBIG5hbWUgLT4gdmFsdWUgZGljdGlvbmFy
eSBjb250YWluaW5nIGFsbCBrZXl3b3JkcyBhbmQKKyAgICAgICAgIzogbWFya2VycyBhc3NvY2lh
dGVkIHdpdGggYSB0ZXN0IGludm9jYXRpb24uCisgICAgICAgIHNlbGYua2V5d29yZHMgPSBrZXl3
b3JkcworCisgICAgICAgICM6IFRlc3Qgb3V0Y29tZSwgYWx3YXlzIG9uZSBvZiAicGFzc2VkIiwg
ImZhaWxlZCIsICJza2lwcGVkIi4KKyAgICAgICAgc2VsZi5vdXRjb21lID0gb3V0Y29tZQorCisg
ICAgICAgICM6IE5vbmUgb3IgYSBmYWlsdXJlIHJlcHJlc2VudGF0aW9uLgorICAgICAgICBzZWxm
LmxvbmdyZXByID0gbG9uZ3JlcHIKKworICAgICAgICAjOiBPbmUgb2YgJ3NldHVwJywgJ2NhbGwn
LCAndGVhcmRvd24nIHRvIGluZGljYXRlIHJ1bnRlc3QgcGhhc2UuCisgICAgICAgIHNlbGYud2hl
biA9IHdoZW4KKworICAgICAgICAjOiBVc2VyIHByb3BlcnRpZXMgaXMgYSBsaXN0IG9mIHR1cGxl
cyAobmFtZSwgdmFsdWUpIHRoYXQgaG9sZHMgdXNlcgorICAgICAgICAjOiBkZWZpbmVkIHByb3Bl
cnRpZXMgb2YgdGhlIHRlc3QuCisgICAgICAgIHNlbGYudXNlcl9wcm9wZXJ0aWVzID0gbGlzdCh1
c2VyX3Byb3BlcnRpZXMgb3IgW10pCisKKyAgICAgICAgIzogTGlzdCBvZiBwYWlycyBgYChzdHIs
IHN0cilgYCBvZiBleHRyYSBpbmZvcm1hdGlvbiB3aGljaCBuZWVkcyB0bworICAgICAgICAjOiBt
YXJzaGFsbGFibGUuIFVzZWQgYnkgcHl0ZXN0IHRvIGFkZCBjYXB0dXJlZCB0ZXh0CisgICAgICAg
ICM6IGZyb20gYGBzdGRvdXRgYCBhbmQgYGBzdGRlcnJgYCwgYnV0IG1heSBiZSB1c2VkIGJ5IG90
aGVyIHBsdWdpbnMKKyAgICAgICAgIzogdG8gYWRkIGFyYml0cmFyeSBpbmZvcm1hdGlvbiB0byBy
ZXBvcnRzLgorICAgICAgICBzZWxmLnNlY3Rpb25zID0gbGlzdChzZWN0aW9ucykKKworICAgICAg
ICAjOiBUaW1lIGl0IHRvb2sgdG8gcnVuIGp1c3QgdGhlIHRlc3QuCisgICAgICAgIHNlbGYuZHVy
YXRpb24gPSBkdXJhdGlvbgorCisgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGV4dHJhKQor
CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICI8e30geyFy
fSB3aGVuPXshcn0gb3V0Y29tZT17IXJ9PiIuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18sIHNlbGYubm9kZWlkLCBzZWxmLndoZW4sIHNlbGYub3V0Y29tZQorICAg
ICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9pdGVtX2FuZF9jYWxsKGNs
cywgaXRlbTogSXRlbSwgY2FsbDogIkNhbGxJbmZvW05vbmVdIikgLT4gIlRlc3RSZXBvcnQiOgor
ICAgICAgICAiIiJDcmVhdGUgYW5kIGZpbGwgYSBUZXN0UmVwb3J0IHdpdGggc3RhbmRhcmQgaXRl
bSBhbmQgY2FsbCBpbmZvLiIiIgorICAgICAgICB3aGVuID0gY2FsbC53aGVuCisgICAgICAgICMg
UmVtb3ZlICJjb2xsZWN0IiBmcm9tIHRoZSBMaXRlcmFsIHR5cGUgLS0gb25seSBmb3IgY29sbGVj
dGlvbiBjYWxscy4KKyAgICAgICAgYXNzZXJ0IHdoZW4gIT0gImNvbGxlY3QiCisgICAgICAgIGR1
cmF0aW9uID0gY2FsbC5kdXJhdGlvbgorICAgICAgICBrZXl3b3JkcyA9IHt4OiAxIGZvciB4IGlu
IGl0ZW0ua2V5d29yZHN9CisgICAgICAgIGV4Y2luZm8gPSBjYWxsLmV4Y2luZm8KKyAgICAgICAg
c2VjdGlvbnMgPSBbXQorICAgICAgICBpZiBub3QgY2FsbC5leGNpbmZvOgorICAgICAgICAgICAg
b3V0Y29tZSA9ICJwYXNzZWQiICAjIHR5cGU6IExpdGVyYWxbInBhc3NlZCIsICJmYWlsZWQiLCAi
c2tpcHBlZCJdCisgICAgICAgICAgICBsb25ncmVwciA9ICgKKyAgICAgICAgICAgICAgICBOb25l
CisgICAgICAgICAgICApICAjIHR5cGU6IFVuaW9uW05vbmUsIEV4Y2VwdGlvbkluZm9bQmFzZUV4
Y2VwdGlvbl0sIFR1cGxlW3N0ciwgaW50LCBzdHJdLCBzdHIsIFRlcm1pbmFsUmVwcl0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGV4Y2luZm8sIEV4Y2VwdGlv
bkluZm8pOgorICAgICAgICAgICAgICAgIG91dGNvbWUgPSAiZmFpbGVkIgorICAgICAgICAgICAg
ICAgIGxvbmdyZXByID0gZXhjaW5mbworICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV4Y2lu
Zm8udmFsdWUsIHNraXAuRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBvdXRjb21lID0gInNr
aXBwZWQiCisgICAgICAgICAgICAgICAgciA9IGV4Y2luZm8uX2dldHJlcHJjcmFzaCgpCisgICAg
ICAgICAgICAgICAgbG9uZ3JlcHIgPSAoc3RyKHIucGF0aCksIHIubGluZW5vLCByLm1lc3NhZ2Up
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG91dGNvbWUgPSAiZmFpbGVkIgor
ICAgICAgICAgICAgICAgIGlmIGNhbGwud2hlbiA9PSAiY2FsbCI6CisgICAgICAgICAgICAgICAg
ICAgIGxvbmdyZXByID0gaXRlbS5yZXByX2ZhaWx1cmUoZXhjaW5mbykKKyAgICAgICAgICAgICAg
ICBlbHNlOiAgIyBleGNlcHRpb24gaW4gc2V0dXAgb3IgdGVhcmRvd24KKyAgICAgICAgICAgICAg
ICAgICAgbG9uZ3JlcHIgPSBpdGVtLl9yZXByX2ZhaWx1cmVfcHkoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGNpbmZvLCBzdHlsZT1pdGVtLmNvbmZpZy5nZXRvcHRpb24oInRic3R5bGUiLCAi
YXV0byIpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIHJ3aGVuLCBrZXksIGNv
bnRlbnQgaW4gaXRlbS5fcmVwb3J0X3NlY3Rpb25zOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKCgiQ2FwdHVyZWQge30ge30iLmZvcm1hdChrZXksIHJ3aGVuKSwgY29udGVudCkpCisgICAg
ICAgIHJldHVybiBjbHMoCisgICAgICAgICAgICBpdGVtLm5vZGVpZCwKKyAgICAgICAgICAgIGl0
ZW0ubG9jYXRpb24sCisgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgIG91dGNvbWUs
CisgICAgICAgICAgICBsb25ncmVwciwKKyAgICAgICAgICAgIHdoZW4sCisgICAgICAgICAgICBz
ZWN0aW9ucywKKyAgICAgICAgICAgIGR1cmF0aW9uLAorICAgICAgICAgICAgdXNlcl9wcm9wZXJ0
aWVzPWl0ZW0udXNlcl9wcm9wZXJ0aWVzLAorICAgICAgICApCisKKworQGZpbmFsCitjbGFzcyBD
b2xsZWN0UmVwb3J0KEJhc2VSZXBvcnQpOgorICAgICIiIkNvbGxlY3Rpb24gcmVwb3J0IG9iamVj
dC4iIiIKKworICAgIHdoZW4gPSAiY29sbGVjdCIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgbm9kZWlkOiBzdHIsCisgICAgICAgIG91dGNvbWU6ICJMaXRlcmFs
WydwYXNzZWQnLCAnc2tpcHBlZCcsICdmYWlsZWQnXSIsCisgICAgICAgIGxvbmdyZXByLAorICAg
ICAgICByZXN1bHQ6IE9wdGlvbmFsW0xpc3RbVW5pb25bSXRlbSwgQ29sbGVjdG9yXV1dLAorICAg
ICAgICBzZWN0aW9uczogSXRlcmFibGVbVHVwbGVbc3RyLCBzdHJdXSA9ICgpLAorICAgICAgICAq
KmV4dHJhCisgICAgKSAtPiBOb25lOgorICAgICAgICAjOiBOb3JtYWxpemVkIGNvbGxlY3Rpb24g
bm9kZWlkLgorICAgICAgICBzZWxmLm5vZGVpZCA9IG5vZGVpZAorCisgICAgICAgICM6IFRlc3Qg
b3V0Y29tZSwgYWx3YXlzIG9uZSBvZiAicGFzc2VkIiwgImZhaWxlZCIsICJza2lwcGVkIi4KKyAg
ICAgICAgc2VsZi5vdXRjb21lID0gb3V0Y29tZQorCisgICAgICAgICM6IE5vbmUgb3IgYSBmYWls
dXJlIHJlcHJlc2VudGF0aW9uLgorICAgICAgICBzZWxmLmxvbmdyZXByID0gbG9uZ3JlcHIKKwor
ICAgICAgICAjOiBUaGUgY29sbGVjdGVkIGl0ZW1zIGFuZCBjb2xsZWN0aW9uIG5vZGVzLgorICAg
ICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdCBvciBbXQorCisgICAgICAgICM6IExpc3Qgb2YgcGFp
cnMgYGAoc3RyLCBzdHIpYGAgb2YgZXh0cmEgaW5mb3JtYXRpb24gd2hpY2ggbmVlZHMgdG8KKyAg
ICAgICAgIzogbWFyc2hhbGxhYmxlLgorICAgICAgICAjIFVzZWQgYnkgcHl0ZXN0IHRvIGFkZCBj
YXB0dXJlZCB0ZXh0IDogZnJvbSBgYHN0ZG91dGBgIGFuZCBgYHN0ZGVycmBgLAorICAgICAgICAj
IGJ1dCBtYXkgYmUgdXNlZCBieSBvdGhlciBwbHVnaW5zIDogdG8gYWRkIGFyYml0cmFyeSBpbmZv
cm1hdGlvbiB0bworICAgICAgICAjIHJlcG9ydHMuCisgICAgICAgIHNlbGYuc2VjdGlvbnMgPSBs
aXN0KHNlY3Rpb25zKQorCisgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGV4dHJhKQorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2F0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNl
bGYuZnNwYXRoLCBOb25lLCBzZWxmLmZzcGF0aCkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAt
PiBzdHI6CisgICAgICAgIHJldHVybiAiPENvbGxlY3RSZXBvcnQgeyFyfSBsZW5yZXN1bHQ9e30g
b3V0Y29tZT17IXJ9PiIuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5ub2RlaWQsIGxlbihzZWxm
LnJlc3VsdCksIHNlbGYub3V0Y29tZQorICAgICAgICApCisKKworY2xhc3MgQ29sbGVjdEVycm9y
UmVwcihUZXJtaW5hbFJlcHIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2c6IHN0cikgLT4g
Tm9uZToKKyAgICAgICAgc2VsZi5sb25ncmVwciA9IG1zZworCisgICAgZGVmIHRvdGVybWluYWwo
c2VsZiwgb3V0OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9uZToKKyAgICAgICAgb3V0LmxpbmUoc2Vs
Zi5sb25ncmVwciwgcmVkPVRydWUpCisKKworZGVmIHB5dGVzdF9yZXBvcnRfdG9fc2VyaWFsaXph
YmxlKAorICAgIHJlcG9ydDogVW5pb25bQ29sbGVjdFJlcG9ydCwgVGVzdFJlcG9ydF0KKykgLT4g
T3B0aW9uYWxbRGljdFtzdHIsIEFueV1dOgorICAgIGlmIGlzaW5zdGFuY2UocmVwb3J0LCAoVGVz
dFJlcG9ydCwgQ29sbGVjdFJlcG9ydCkpOgorICAgICAgICBkYXRhID0gcmVwb3J0Ll90b19qc29u
KCkKKyAgICAgICAgZGF0YVsiJHJlcG9ydF90eXBlIl0gPSByZXBvcnQuX19jbGFzc19fLl9fbmFt
ZV9fCisgICAgICAgIHJldHVybiBkYXRhCisgICAgIyBUT0RPOiBDaGVjayBpZiB0aGlzIGlzIGFj
dHVhbGx5IHJlYWNoYWJsZS4KKyAgICByZXR1cm4gTm9uZSAgIyB0eXBlOiBpZ25vcmVbdW5yZWFj
aGFibGVdCisKKworZGVmIHB5dGVzdF9yZXBvcnRfZnJvbV9zZXJpYWxpemFibGUoCisgICAgZGF0
YTogRGljdFtzdHIsIEFueV0sCispIC0+IE9wdGlvbmFsW1VuaW9uW0NvbGxlY3RSZXBvcnQsIFRl
c3RSZXBvcnRdXToKKyAgICBpZiAiJHJlcG9ydF90eXBlIiBpbiBkYXRhOgorICAgICAgICBpZiBk
YXRhWyIkcmVwb3J0X3R5cGUiXSA9PSAiVGVzdFJlcG9ydCI6CisgICAgICAgICAgICByZXR1cm4g
VGVzdFJlcG9ydC5fZnJvbV9qc29uKGRhdGEpCisgICAgICAgIGVsaWYgZGF0YVsiJHJlcG9ydF90
eXBlIl0gPT0gIkNvbGxlY3RSZXBvcnQiOgorICAgICAgICAgICAgcmV0dXJuIENvbGxlY3RSZXBv
cnQuX2Zyb21fanNvbihkYXRhKQorICAgICAgICBhc3NlcnQgRmFsc2UsICJVbmtub3duIHJlcG9y
dF90eXBlIHVuc2VyaWFsaXplIGRhdGE6IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICBkYXRhWyIk
cmVwb3J0X3R5cGUiXQorICAgICAgICApCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgX3JlcG9y
dF90b19qc29uKHJlcG9ydDogQmFzZVJlcG9ydCkgLT4gRGljdFtzdHIsIEFueV06CisgICAgIiIi
UmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGlzIHJlcG9ydCBhcyBhIGRpY3Qgb2YgYnVpbHRpbiBl
bnRyaWVzLAorICAgIHN1aXRhYmxlIGZvciBzZXJpYWxpemF0aW9uLgorCisgICAgVGhpcyB3YXMg
b3JpZ2luYWxseSB0aGUgc2VyaWFsaXplX3JlcG9ydCgpIGZ1bmN0aW9uIGZyb20geGRpc3QgKGNh
MDMyNjkpLgorICAgICIiIgorCisgICAgZGVmIHNlcmlhbGl6ZV9yZXByX2VudHJ5KAorICAgICAg
ICBlbnRyeTogVW5pb25bUmVwckVudHJ5LCBSZXByRW50cnlOYXRpdmVdCisgICAgKSAtPiBEaWN0
W3N0ciwgQW55XToKKyAgICAgICAgZGF0YSA9IGF0dHIuYXNkaWN0KGVudHJ5KQorICAgICAgICBm
b3Iga2V5LCB2YWx1ZSBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHZh
bHVlLCAiX19kaWN0X18iKToKKyAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBhdHRyLmFzZGlj
dCh2YWx1ZSkKKyAgICAgICAgZW50cnlfZGF0YSA9IHsidHlwZSI6IHR5cGUoZW50cnkpLl9fbmFt
ZV9fLCAiZGF0YSI6IGRhdGF9CisgICAgICAgIHJldHVybiBlbnRyeV9kYXRhCisKKyAgICBkZWYg
c2VyaWFsaXplX3JlcHJfdHJhY2ViYWNrKHJlcHJ0cmFjZWJhY2s6IFJlcHJUcmFjZWJhY2spIC0+
IERpY3Rbc3RyLCBBbnldOgorICAgICAgICByZXN1bHQgPSBhdHRyLmFzZGljdChyZXBydHJhY2Vi
YWNrKQorICAgICAgICByZXN1bHRbInJlcHJlbnRyaWVzIl0gPSBbCisgICAgICAgICAgICBzZXJp
YWxpemVfcmVwcl9lbnRyeSh4KSBmb3IgeCBpbiByZXBydHJhY2ViYWNrLnJlcHJlbnRyaWVzCisg
ICAgICAgIF0KKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHNlcmlhbGl6ZV9yZXBy
X2NyYXNoKAorICAgICAgICByZXByY3Jhc2g6IE9wdGlvbmFsW1JlcHJGaWxlTG9jYXRpb25dLAor
ICAgICkgLT4gT3B0aW9uYWxbRGljdFtzdHIsIEFueV1dOgorICAgICAgICBpZiByZXByY3Jhc2gg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gYXR0ci5hc2RpY3QocmVwcmNyYXNoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZXJpYWxp
emVfZXhjZXB0aW9uX2xvbmdyZXByKHJlcDogQmFzZVJlcG9ydCkgLT4gRGljdFtzdHIsIEFueV06
CisgICAgICAgIGFzc2VydCByZXAubG9uZ3JlcHIgaXMgbm90IE5vbmUKKyAgICAgICAgIyBUT0RP
OiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZSBkdWNrIHR5cGluZyBpcyByZWFsbHkgbmVjZXNzYXJ5
IGhlcmUuCisgICAgICAgIGxvbmdyZXByID0gY2FzdChFeGNlcHRpb25SZXByLCByZXAubG9uZ3Jl
cHIpCisgICAgICAgIHJlc3VsdCA9IHsKKyAgICAgICAgICAgICJyZXByY3Jhc2giOiBzZXJpYWxp
emVfcmVwcl9jcmFzaChsb25ncmVwci5yZXByY3Jhc2gpLAorICAgICAgICAgICAgInJlcHJ0cmFj
ZWJhY2siOiBzZXJpYWxpemVfcmVwcl90cmFjZWJhY2sobG9uZ3JlcHIucmVwcnRyYWNlYmFjayks
CisgICAgICAgICAgICAic2VjdGlvbnMiOiBsb25ncmVwci5zZWN0aW9ucywKKyAgICAgICAgfSAg
IyB0eXBlOiBEaWN0W3N0ciwgQW55XQorICAgICAgICBpZiBpc2luc3RhbmNlKGxvbmdyZXByLCBF
eGNlcHRpb25DaGFpblJlcHIpOgorICAgICAgICAgICAgcmVzdWx0WyJjaGFpbiJdID0gW10KKyAg
ICAgICAgICAgIGZvciByZXByX3RyYWNlYmFjaywgcmVwcl9jcmFzaCwgZGVzY3JpcHRpb24gaW4g
bG9uZ3JlcHIuY2hhaW46CisgICAgICAgICAgICAgICAgcmVzdWx0WyJjaGFpbiJdLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXpl
X3JlcHJfdHJhY2ViYWNrKHJlcHJfdHJhY2ViYWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlcmlhbGl6ZV9yZXByX2NyYXNoKHJlcHJfY3Jhc2gpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHRbImNoYWluIl0gPSBOb25lCisgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgIGQgPSByZXBvcnQuX19kaWN0X18uY29weSgpCisgICAg
aWYgaGFzYXR0cihyZXBvcnQubG9uZ3JlcHIsICJ0b3Rlcm1pbmFsIik6CisgICAgICAgIGlmIGhh
c2F0dHIocmVwb3J0LmxvbmdyZXByLCAicmVwcnRyYWNlYmFjayIpIGFuZCBoYXNhdHRyKAorICAg
ICAgICAgICAgcmVwb3J0LmxvbmdyZXByLCAicmVwcmNyYXNoIgorICAgICAgICApOgorICAgICAg
ICAgICAgZFsibG9uZ3JlcHIiXSA9IHNlcmlhbGl6ZV9leGNlcHRpb25fbG9uZ3JlcHIocmVwb3J0
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZFsibG9uZ3JlcHIiXSA9IHN0cihyZXBvcnQu
bG9uZ3JlcHIpCisgICAgZWxzZToKKyAgICAgICAgZFsibG9uZ3JlcHIiXSA9IHJlcG9ydC5sb25n
cmVwcgorICAgIGZvciBuYW1lIGluIGQ6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZFtuYW1lXSwg
KHB5LnBhdGgubG9jYWwsIFBhdGgpKToKKyAgICAgICAgICAgIGRbbmFtZV0gPSBzdHIoZFtuYW1l
XSkKKyAgICAgICAgZWxpZiBuYW1lID09ICJyZXN1bHQiOgorICAgICAgICAgICAgZFtuYW1lXSA9
IE5vbmUgICMgZm9yIG5vdworICAgIHJldHVybiBkCisKKworZGVmIF9yZXBvcnRfa3dhcmdzX2Zy
b21fanNvbihyZXBvcnRkaWN0OiBEaWN0W3N0ciwgQW55XSkgLT4gRGljdFtzdHIsIEFueV06Cisg
ICAgIiIiUmV0dXJuICoqa3dhcmdzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgVGVz
dFJlcG9ydCBvcgorICAgIENvbGxlY3RSZXBvcnQgaW5zdGFuY2UuCisKKyAgICBUaGlzIHdhcyBv
cmlnaW5hbGx5IHRoZSBzZXJpYWxpemVfcmVwb3J0KCkgZnVuY3Rpb24gZnJvbSB4ZGlzdCAoY2Ew
MzI2OSkuCisgICAgIiIiCisKKyAgICBkZWYgZGVzZXJpYWxpemVfcmVwcl9lbnRyeShlbnRyeV9k
YXRhKToKKyAgICAgICAgZGF0YSA9IGVudHJ5X2RhdGFbImRhdGEiXQorICAgICAgICBlbnRyeV90
eXBlID0gZW50cnlfZGF0YVsidHlwZSJdCisgICAgICAgIGlmIGVudHJ5X3R5cGUgPT0gIlJlcHJF
bnRyeSI6CisgICAgICAgICAgICByZXByZnVuY2FyZ3MgPSBOb25lCisgICAgICAgICAgICByZXBy
ZmlsZWxvYyA9IE5vbmUKKyAgICAgICAgICAgIHJlcHJsb2NhbHMgPSBOb25lCisgICAgICAgICAg
ICBpZiBkYXRhWyJyZXByZnVuY2FyZ3MiXToKKyAgICAgICAgICAgICAgICByZXByZnVuY2FyZ3Mg
PSBSZXByRnVuY0FyZ3MoKipkYXRhWyJyZXByZnVuY2FyZ3MiXSkKKyAgICAgICAgICAgIGlmIGRh
dGFbInJlcHJmaWxlbG9jIl06CisgICAgICAgICAgICAgICAgcmVwcmZpbGVsb2MgPSBSZXByRmls
ZUxvY2F0aW9uKCoqZGF0YVsicmVwcmZpbGVsb2MiXSkKKyAgICAgICAgICAgIGlmIGRhdGFbInJl
cHJsb2NhbHMiXToKKyAgICAgICAgICAgICAgICByZXBybG9jYWxzID0gUmVwckxvY2FscyhkYXRh
WyJyZXBybG9jYWxzIl1bImxpbmVzIl0pCisKKyAgICAgICAgICAgIHJlcHJlbnRyeSA9IFJlcHJF
bnRyeSgKKyAgICAgICAgICAgICAgICBsaW5lcz1kYXRhWyJsaW5lcyJdLAorICAgICAgICAgICAg
ICAgIHJlcHJmdW5jYXJncz1yZXByZnVuY2FyZ3MsCisgICAgICAgICAgICAgICAgcmVwcmxvY2Fs
cz1yZXBybG9jYWxzLAorICAgICAgICAgICAgICAgIHJlcHJmaWxlbG9jPXJlcHJmaWxlbG9jLAor
ICAgICAgICAgICAgICAgIHN0eWxlPWRhdGFbInN0eWxlIl0sCisgICAgICAgICAgICApICAjIHR5
cGU6IFVuaW9uW1JlcHJFbnRyeSwgUmVwckVudHJ5TmF0aXZlXQorICAgICAgICBlbGlmIGVudHJ5
X3R5cGUgPT0gIlJlcHJFbnRyeU5hdGl2ZSI6CisgICAgICAgICAgICByZXByZW50cnkgPSBSZXBy
RW50cnlOYXRpdmUoZGF0YVsibGluZXMiXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9y
ZXBvcnRfdW5zZXJpYWxpemF0aW9uX2ZhaWx1cmUoZW50cnlfdHlwZSwgVGVzdFJlcG9ydCwgcmVw
b3J0ZGljdCkKKyAgICAgICAgcmV0dXJuIHJlcHJlbnRyeQorCisgICAgZGVmIGRlc2VyaWFsaXpl
X3JlcHJfdHJhY2ViYWNrKHJlcHJfdHJhY2ViYWNrX2RpY3QpOgorICAgICAgICByZXByX3RyYWNl
YmFja19kaWN0WyJyZXByZW50cmllcyJdID0gWworICAgICAgICAgICAgZGVzZXJpYWxpemVfcmVw
cl9lbnRyeSh4KSBmb3IgeCBpbiByZXByX3RyYWNlYmFja19kaWN0WyJyZXByZW50cmllcyJdCisg
ICAgICAgIF0KKyAgICAgICAgcmV0dXJuIFJlcHJUcmFjZWJhY2soKipyZXByX3RyYWNlYmFja19k
aWN0KQorCisgICAgZGVmIGRlc2VyaWFsaXplX3JlcHJfY3Jhc2gocmVwcl9jcmFzaF9kaWN0OiBP
cHRpb25hbFtEaWN0W3N0ciwgQW55XV0pOgorICAgICAgICBpZiByZXByX2NyYXNoX2RpY3QgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gUmVwckZpbGVMb2NhdGlvbigqKnJlcHJfY3Jh
c2hfZGljdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBp
ZiAoCisgICAgICAgIHJlcG9ydGRpY3RbImxvbmdyZXByIl0KKyAgICAgICAgYW5kICJyZXByY3Jh
c2giIGluIHJlcG9ydGRpY3RbImxvbmdyZXByIl0KKyAgICAgICAgYW5kICJyZXBydHJhY2ViYWNr
IiBpbiByZXBvcnRkaWN0WyJsb25ncmVwciJdCisgICAgKToKKworICAgICAgICByZXBydHJhY2Vi
YWNrID0gZGVzZXJpYWxpemVfcmVwcl90cmFjZWJhY2soCisgICAgICAgICAgICByZXBvcnRkaWN0
WyJsb25ncmVwciJdWyJyZXBydHJhY2ViYWNrIl0KKyAgICAgICAgKQorICAgICAgICByZXByY3Jh
c2ggPSBkZXNlcmlhbGl6ZV9yZXByX2NyYXNoKHJlcG9ydGRpY3RbImxvbmdyZXByIl1bInJlcHJj
cmFzaCJdKQorICAgICAgICBpZiByZXBvcnRkaWN0WyJsb25ncmVwciJdWyJjaGFpbiJdOgorICAg
ICAgICAgICAgY2hhaW4gPSBbXQorICAgICAgICAgICAgZm9yIHJlcHJfdHJhY2ViYWNrX2RhdGEs
IHJlcHJfY3Jhc2hfZGF0YSwgZGVzY3JpcHRpb24gaW4gcmVwb3J0ZGljdFsKKyAgICAgICAgICAg
ICAgICAibG9uZ3JlcHIiCisgICAgICAgICAgICBdWyJjaGFpbiJdOgorICAgICAgICAgICAgICAg
IGNoYWluLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzZXJpYWxpemVfcmVwcl90cmFjZWJhY2socmVwcl90cmFjZWJhY2tfZGF0YSksCisg
ICAgICAgICAgICAgICAgICAgICAgICBkZXNlcmlhbGl6ZV9yZXByX2NyYXNoKHJlcHJfY3Jhc2hf
ZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9pbmZv
ID0gRXhjZXB0aW9uQ2hhaW5SZXByKAorICAgICAgICAgICAgICAgIGNoYWluCisgICAgICAgICAg
ICApICAjIHR5cGU6IFVuaW9uW0V4Y2VwdGlvbkNoYWluUmVwcixSZXByRXhjZXB0aW9uSW5mb10K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9pbmZvID0gUmVwckV4Y2VwdGlv
bkluZm8ocmVwcnRyYWNlYmFjaywgcmVwcmNyYXNoKQorCisgICAgICAgIGZvciBzZWN0aW9uIGlu
IHJlcG9ydGRpY3RbImxvbmdyZXByIl1bInNlY3Rpb25zIl06CisgICAgICAgICAgICBleGNlcHRp
b25faW5mby5hZGRzZWN0aW9uKCpzZWN0aW9uKQorICAgICAgICByZXBvcnRkaWN0WyJsb25ncmVw
ciJdID0gZXhjZXB0aW9uX2luZm8KKworICAgIHJldHVybiByZXBvcnRkaWN0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZXN1bHRsb2cucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9yZXN1bHRsb2cucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMzAw
Yzk4MzAwMS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3Jlc3Vs
dGxvZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0iIiIgbG9nIG1hY2hpbmUt
cGFyc2VhYmxlIHRlc3Qgc2Vzc2lvbiByZXN1bHQgaW5mb3JtYXRpb24gaW4gYSBwbGFpbgotdGV4
dCBmaWxlLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBweQotaW1wb3J0IG9zCi0KLQotZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgidGVy
bWluYWwgcmVwb3J0aW5nIiwgInJlc3VsdGxvZyBwbHVnaW4gb3B0aW9ucyIpCi0gICAgZ3JvdXAu
YWRkb3B0aW9uKAotICAgICAgICAiLS1yZXN1bHRsb2ciLAotICAgICAgICAiLS1yZXN1bHQtbG9n
IiwKLSAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgIG1ldGF2YXI9InBhdGgiLAotICAg
ICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9IkRFUFJFQ0FURUQgcGF0aCBmb3IgbWFj
aGluZS1yZWFkYWJsZSByZXN1bHQgbG9nLiIsCi0gICAgKQotCi0KLWRlZiBweXRlc3RfY29uZmln
dXJlKGNvbmZpZyk6Ci0gICAgcmVzdWx0bG9nID0gY29uZmlnLm9wdGlvbi5yZXN1bHRsb2cKLSAg
ICAjIHByZXZlbnQgb3BlbmluZyByZXN1bHRsb2cgb24gc2xhdmUgbm9kZXMgKHhkaXN0KQotICAg
IGlmIHJlc3VsdGxvZyBhbmQgbm90IGhhc2F0dHIoY29uZmlnLCAic2xhdmVpbnB1dCIpOgotICAg
ICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChyZXN1bHRsb2cp
KQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXJuYW1lKToKLSAgICAgICAgICAgIG9z
Lm1ha2VkaXJzKGRpcm5hbWUpCi0gICAgICAgIGxvZ2ZpbGUgPSBvcGVuKHJlc3VsdGxvZywgInci
LCAxKSAgIyBsaW5lIGJ1ZmZlcmVkCi0gICAgICAgIGNvbmZpZy5fcmVzdWx0bG9nID0gUmVzdWx0
TG9nKGNvbmZpZywgbG9nZmlsZSkKLSAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0
ZXIoY29uZmlnLl9yZXN1bHRsb2cpCi0KLSAgICAgICAgZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQg
aW1wb3J0IFJFU1VMVF9MT0cKLQotICAgICAgICBjb25maWcud2FybigiQzEiLCBSRVNVTFRfTE9H
KQotCi0KLWRlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKToKLSAgICByZXN1bHRsb2cgPSBn
ZXRhdHRyKGNvbmZpZywgIl9yZXN1bHRsb2ciLCBOb25lKQotICAgIGlmIHJlc3VsdGxvZzoKLSAg
ICAgICAgcmVzdWx0bG9nLmxvZ2ZpbGUuY2xvc2UoKQotICAgICAgICBkZWwgY29uZmlnLl9yZXN1
bHRsb2cKLSAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIudW5yZWdpc3RlcihyZXN1bHRsb2cp
Ci0KLQotZGVmIGdlbmVyaWNfcGF0aChpdGVtKToKLSAgICBjaGFpbiA9IGl0ZW0ubGlzdGNoYWlu
KCkKLSAgICBncGF0aCA9IFtjaGFpblswXS5uYW1lXQotICAgIGZzcGF0aCA9IGNoYWluWzBdLmZz
cGF0aAotICAgIGZzcGFydCA9IEZhbHNlCi0gICAgZm9yIG5vZGUgaW4gY2hhaW5bMTpdOgotICAg
ICAgICBuZXdmc3BhdGggPSBub2RlLmZzcGF0aAotICAgICAgICBpZiBuZXdmc3BhdGggPT0gZnNw
YXRoOgotICAgICAgICAgICAgaWYgZnNwYXJ0OgotICAgICAgICAgICAgICAgIGdwYXRoLmFwcGVu
ZCgiOiIpCi0gICAgICAgICAgICAgICAgZnNwYXJ0ID0gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgZ3BhdGguYXBwZW5kKCIuIikKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGdwYXRoLmFwcGVuZCgiLyIpCi0gICAgICAgICAgICBmc3BhcnQgPSBUcnVlCi0gICAg
ICAgIG5hbWUgPSBub2RlLm5hbWUKLSAgICAgICAgaWYgbmFtZVswXSBpbiAiKFsiOgotICAgICAg
ICAgICAgZ3BhdGgucG9wKCkKLSAgICAgICAgZ3BhdGguYXBwZW5kKG5hbWUpCi0gICAgICAgIGZz
cGF0aCA9IG5ld2ZzcGF0aAotICAgIHJldHVybiAiIi5qb2luKGdwYXRoKQotCi0KLWNsYXNzIFJl
c3VsdExvZyhvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZywgbG9nZmls
ZSk6Ci0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0gICAgICAgIHNlbGYubG9nZmlsZSA9
IGxvZ2ZpbGUgICMgcHJlZmVyYWJseSBsaW5lIGJ1ZmZlcmVkCi0KLSAgICBkZWYgd3JpdGVfbG9n
X2VudHJ5KHNlbGYsIHRlc3RwYXRoLCBsZXR0ZXJjb2RlLCBsb25ncmVwcik6Ci0gICAgICAgIHBy
aW50KCIlcyAlcyIgJSAobGV0dGVyY29kZSwgdGVzdHBhdGgpLCBmaWxlPXNlbGYubG9nZmlsZSkK
LSAgICAgICAgZm9yIGxpbmUgaW4gbG9uZ3JlcHIuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAg
cHJpbnQoIiAlcyIgJSBsaW5lLCBmaWxlPXNlbGYubG9nZmlsZSkKLQotICAgIGRlZiBsb2dfb3V0
Y29tZShzZWxmLCByZXBvcnQsIGxldHRlcmNvZGUsIGxvbmdyZXByKToKLSAgICAgICAgdGVzdHBh
dGggPSBnZXRhdHRyKHJlcG9ydCwgIm5vZGVpZCIsIE5vbmUpCi0gICAgICAgIGlmIHRlc3RwYXRo
IGlzIE5vbmU6Ci0gICAgICAgICAgICB0ZXN0cGF0aCA9IHJlcG9ydC5mc3BhdGgKLSAgICAgICAg
c2VsZi53cml0ZV9sb2dfZW50cnkodGVzdHBhdGgsIGxldHRlcmNvZGUsIGxvbmdyZXByKQotCi0g
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQpOgotICAgICAgICBp
ZiByZXBvcnQud2hlbiAhPSAiY2FsbCIgYW5kIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgcmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3Rlc3Rz
dGF0dXMocmVwb3J0PXJlcG9ydCkKLSAgICAgICAgY29kZSA9IHJlc1sxXQotICAgICAgICBpZiBj
b2RlID09ICJ4IjoKLSAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwcikK
LSAgICAgICAgZWxpZiBjb2RlID09ICJYIjoKLSAgICAgICAgICAgIGxvbmdyZXByID0gIiIKLSAg
ICAgICAgZWxpZiByZXBvcnQucGFzc2VkOgotICAgICAgICAgICAgbG9uZ3JlcHIgPSAiIgotICAg
ICAgICBlbGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICBsb25ncmVwciA9IHN0cihyZXBv
cnQubG9uZ3JlcHIpCi0gICAgICAgIGVsaWYgcmVwb3J0LnNraXBwZWQ6Ci0gICAgICAgICAgICBs
b25ncmVwciA9IHN0cihyZXBvcnQubG9uZ3JlcHJbMl0pCi0gICAgICAgIHNlbGYubG9nX291dGNv
bWUocmVwb3J0LCBjb2RlLCBsb25ncmVwcikKLQotICAgIGRlZiBweXRlc3RfY29sbGVjdHJlcG9y
dChzZWxmLCByZXBvcnQpOgotICAgICAgICBpZiBub3QgcmVwb3J0LnBhc3NlZDoKLSAgICAgICAg
ICAgIGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgY29kZSA9ICJGIgotICAgICAg
ICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwcikKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHJlcG9ydC5za2lwcGVkCi0gICAgICAgICAgICAg
ICAgY29kZSA9ICJTIgotICAgICAgICAgICAgICAgIGxvbmdyZXByID0gIiVzOiVkOiAlcyIgJSBy
ZXBvcnQubG9uZ3JlcHIKLSAgICAgICAgICAgIHNlbGYubG9nX291dGNvbWUocmVwb3J0LCBjb2Rl
LCBsb25ncmVwcikKLQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCBleGNyZXBy
KToKLSAgICAgICAgcmVwcmNyYXNoID0gZ2V0YXR0cihleGNyZXByLCAicmVwcmNyYXNoIiwgTm9u
ZSkKLSAgICAgICAgcGF0aCA9IGdldGF0dHIocmVwcmNyYXNoLCAicGF0aCIsIE5vbmUpCi0gICAg
ICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHBhdGggPSAiY3dkOiVzIiAlIHB5LnBh
dGgubG9jYWwoKQotICAgICAgICBzZWxmLndyaXRlX2xvZ19lbnRyeShwYXRoLCAiISIsIHN0cihl
eGNyZXByKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3J1bm5lci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3J1bm5lci5weQppbmRleCAxOGU5MjU1MDllY2MuLmYy
OWQzNTZmZTA3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcnVubmVyLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3J1bm5lci5weQpAQCAtMSwyMCArMSw0OSBA
QAotIiIiIGJhc2ljIGNvbGxlY3QgYW5kIHJ1bnRlc3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb25z
ICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBw
cmludF9mdW5jdGlvbgotCisiIiJCYXNpYyBjb2xsZWN0IGFuZCBydW50ZXN0IHByb3RvY29sIGlt
cGxlbWVudGF0aW9ucy4iIiIKIGltcG9ydCBiZGIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJv
bSB0aW1lIGltcG9ydCB0aW1lCi0KLWltcG9ydCBweQotZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUg
aW1wb3J0IFRlcm1pbmFsUmVwciwgRXhjZXB0aW9uSW5mbwotZnJvbSBfcHl0ZXN0Lm91dGNvbWVz
IGltcG9ydCBza2lwLCBTa2lwcGVkLCBURVNUX09VVENPTUUKK2Zyb20gdHlwaW5nIGltcG9ydCBD
YWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0
Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJpYworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zy
b20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9t
IHR5cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCisKK2ltcG9y
dCBhdHRyCisKK2Zyb20gLnJlcG9ydHMgaW1wb3J0IEJhc2VSZXBvcnQKK2Zyb20gLnJlcG9ydHMg
aW1wb3J0IENvbGxlY3RFcnJvclJlcHIKK2Zyb20gLnJlcG9ydHMgaW1wb3J0IENvbGxlY3RSZXBv
cnQKK2Zyb20gLnJlcG9ydHMgaW1wb3J0IFRlc3RSZXBvcnQKK2Zyb20gX3B5dGVzdCBpbXBvcnQg
dGltaW5nCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uQ2hhaW5SZXBy
Citmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJvbSBfcHl0
ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IFRlcm1pbmFsUmVwcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBp
bXBvcnQgZmluYWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zy
b20gX3B5dGVzdC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3Qu
bm9kZXMgaW1wb3J0IENvbGxlY3RvcgorZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9ydCBJdGVtCitm
cm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IE5vZGUKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBv
cnQgRXhpdAorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBTa2lwcGVkCitmcm9tIF9weXRl
c3Qub3V0Y29tZXMgaW1wb3J0IFRFU1RfT1VUQ09NRQorCitpZiBUWVBFX0NIRUNLSU5HOgorICAg
IGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCisgICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBv
cnQgTGl0ZXJhbAorCisgICAgZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KKyAgICBm
cm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0ZXIKIAogIwotIyBweXRl
c3QgcGx1Z2luIGhvb2tzCisjIHB5dGVzdCBwbHVnaW4gaG9va3MuCiAKIAotZGVmIHB5dGVzdF9h
ZGRvcHRpb24ocGFyc2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2VyKSAt
PiBOb25lOgogICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmci
LCAicmVwb3J0aW5nIiwgYWZ0ZXI9ImdlbmVyYWwiKQogICAgIGdyb3VwLmFkZG9wdGlvbigKICAg
ICAgICAgIi0tZHVyYXRpb25zIiwKQEAgLTIzLDExICs1MiwyMSBAQCBkZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgogICAgICAgICBkZWZhdWx0PU5vbmUsCiAgICAgICAgIG1ldGF2YXI9Ik4i
LAogICAgICAgICBoZWxwPSJzaG93IE4gc2xvd2VzdCBzZXR1cC90ZXN0IGR1cmF0aW9ucyAoTj0w
IGZvciBhbGwpLiIsCi0gICAgKSwKKyAgICApCisgICAgZ3JvdXAuYWRkb3B0aW9uKAorICAgICAg
ICAiLS1kdXJhdGlvbnMtbWluIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZSIsCisgICAgICAgIHR5
cGU9ZmxvYXQsCisgICAgICAgIGRlZmF1bHQ9MC4wMDUsCisgICAgICAgIG1ldGF2YXI9Ik4iLAor
ICAgICAgICBoZWxwPSJNaW5pbWFsIGR1cmF0aW9uIGluIHNlY29uZHMgZm9yIGluY2x1c2lvbiBp
biBzbG93ZXN0IGxpc3QuIERlZmF1bHQgMC4wMDUiLAorICAgICkKIAogCi1kZWYgcHl0ZXN0X3Rl
cm1pbmFsX3N1bW1hcnkodGVybWluYWxyZXBvcnRlcik6CitkZWYgcHl0ZXN0X3Rlcm1pbmFsX3N1
bW1hcnkodGVybWluYWxyZXBvcnRlcjogIlRlcm1pbmFsUmVwb3J0ZXIiKSAtPiBOb25lOgogICAg
IGR1cmF0aW9ucyA9IHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLm9wdGlvbi5kdXJhdGlvbnMKKyAg
ICBkdXJhdGlvbnNfbWluID0gdGVybWluYWxyZXBvcnRlci5jb25maWcub3B0aW9uLmR1cmF0aW9u
c19taW4KKyAgICB2ZXJib3NlID0gdGVybWluYWxyZXBvcnRlci5jb25maWcuZ2V0dmFsdWUoInZl
cmJvc2UiKQogICAgIGlmIGR1cmF0aW9ucyBpcyBOb25lOgogICAgICAgICByZXR1cm4KICAgICB0
ciA9IHRlcm1pbmFscmVwb3J0ZXIKQEAgLTQxLDk0ICs4MCwxMDkgQEAgZGVmIHB5dGVzdF90ZXJt
aW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXIpOgogICAgIGRsaXN0LnNvcnQoa2V5PWxhbWJk
YSB4OiB4LmR1cmF0aW9uKQogICAgIGRsaXN0LnJldmVyc2UoKQogICAgIGlmIG5vdCBkdXJhdGlv
bnM6Ci0gICAgICAgIHRyLndyaXRlX3NlcCgiPSIsICJzbG93ZXN0IHRlc3QgZHVyYXRpb25zIikK
KyAgICAgICAgdHIud3JpdGVfc2VwKCI9IiwgInNsb3dlc3QgZHVyYXRpb25zIikKICAgICBlbHNl
OgotICAgICAgICB0ci53cml0ZV9zZXAoIj0iLCAic2xvd2VzdCAlcyB0ZXN0IGR1cmF0aW9ucyIg
JSBkdXJhdGlvbnMpCisgICAgICAgIHRyLndyaXRlX3NlcCgiPSIsICJzbG93ZXN0ICVzIGR1cmF0
aW9ucyIgJSBkdXJhdGlvbnMpCiAgICAgICAgIGRsaXN0ID0gZGxpc3RbOmR1cmF0aW9uc10KIAot
ICAgIGZvciByZXAgaW4gZGxpc3Q6Ci0gICAgICAgIG5vZGVpZCA9IHJlcC5ub2RlaWQucmVwbGFj
ZSgiOjooKTo6IiwgIjo6IikKLSAgICAgICAgdHIud3JpdGVfbGluZSgiJTAyLjJmcyAlLThzICVz
IiAlIChyZXAuZHVyYXRpb24sIHJlcC53aGVuLCBub2RlaWQpKQorICAgIGZvciBpLCByZXAgaW4g
ZW51bWVyYXRlKGRsaXN0KToKKyAgICAgICAgaWYgdmVyYm9zZSA8IDIgYW5kIHJlcC5kdXJhdGlv
biA8IGR1cmF0aW9uc19taW46CisgICAgICAgICAgICB0ci53cml0ZV9saW5lKCIiKQorICAgICAg
ICAgICAgdHIud3JpdGVfbGluZSgKKyAgICAgICAgICAgICAgICAiKCVzIGR1cmF0aW9ucyA8ICVn
cyBoaWRkZW4uICBVc2UgLXZ2IHRvIHNob3cgdGhlc2UgZHVyYXRpb25zLikiCisgICAgICAgICAg
ICAgICAgJSAobGVuKGRsaXN0KSAtIGksIGR1cmF0aW9uc19taW4pCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBicmVhaworICAgICAgICB0ci53cml0ZV9saW5lKCJ7OjAyLjJmfXMgezo8OH0g
e30iLmZvcm1hdChyZXAuZHVyYXRpb24sIHJlcC53aGVuLCByZXAubm9kZWlkKSkKIAogCi1kZWYg
cHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKK2RlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNl
c3Npb246ICJTZXNzaW9uIikgLT4gTm9uZToKICAgICBzZXNzaW9uLl9zZXR1cHN0YXRlID0gU2V0
dXBTdGF0ZSgpCiAKIAotZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb24pOgorZGVmIHB5
dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb246ICJTZXNzaW9uIikgLT4gTm9uZToKICAgICBzZXNz
aW9uLl9zZXR1cHN0YXRlLnRlYXJkb3duX2FsbCgpCiAKIAotZGVmIHB5dGVzdF9ydW50ZXN0X3By
b3RvY29sKGl0ZW0sIG5leHRpdGVtKToKLSAgICBpdGVtLmlob29rLnB5dGVzdF9ydW50ZXN0X2xv
Z3N0YXJ0KG5vZGVpZD1pdGVtLm5vZGVpZCwgbG9jYXRpb249aXRlbS5sb2NhdGlvbikKK2RlZiBw
eXRlc3RfcnVudGVzdF9wcm90b2NvbChpdGVtOiBJdGVtLCBuZXh0aXRlbTogT3B0aW9uYWxbSXRl
bV0pIC0+IGJvb2w6CisgICAgaWhvb2sgPSBpdGVtLmlob29rCisgICAgaWhvb2sucHl0ZXN0X3J1
bnRlc3RfbG9nc3RhcnQobm9kZWlkPWl0ZW0ubm9kZWlkLCBsb2NhdGlvbj1pdGVtLmxvY2F0aW9u
KQogICAgIHJ1bnRlc3Rwcm90b2NvbChpdGVtLCBuZXh0aXRlbT1uZXh0aXRlbSkKLSAgICBpdGVt
Lmlob29rLnB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaChub2RlaWQ9aXRlbS5ub2RlaWQsIGxvY2F0
aW9uPWl0ZW0ubG9jYXRpb24pCisgICAgaWhvb2sucHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoKG5v
ZGVpZD1pdGVtLm5vZGVpZCwgbG9jYXRpb249aXRlbS5sb2NhdGlvbikKICAgICByZXR1cm4gVHJ1
ZQogCiAKLWRlZiBydW50ZXN0cHJvdG9jb2woaXRlbSwgbG9nPVRydWUsIG5leHRpdGVtPU5vbmUp
OgorZGVmIHJ1bnRlc3Rwcm90b2NvbCgKKyAgICBpdGVtOiBJdGVtLCBsb2c6IGJvb2wgPSBUcnVl
LCBuZXh0aXRlbTogT3B0aW9uYWxbSXRlbV0gPSBOb25lCispIC0+IExpc3RbVGVzdFJlcG9ydF06
CiAgICAgaGFzcmVxdWVzdCA9IGhhc2F0dHIoaXRlbSwgIl9yZXF1ZXN0IikKLSAgICBpZiBoYXNy
ZXF1ZXN0IGFuZCBub3QgaXRlbS5fcmVxdWVzdDoKLSAgICAgICAgaXRlbS5faW5pdHJlcXVlc3Qo
KQorICAgIGlmIGhhc3JlcXVlc3QgYW5kIG5vdCBpdGVtLl9yZXF1ZXN0OiAgIyB0eXBlOiBpZ25v
cmVbYXR0ci1kZWZpbmVkXQorICAgICAgICBpdGVtLl9pbml0cmVxdWVzdCgpICAjIHR5cGU6IGln
bm9yZVthdHRyLWRlZmluZWRdCiAgICAgcmVwID0gY2FsbF9hbmRfcmVwb3J0KGl0ZW0sICJzZXR1
cCIsIGxvZykKICAgICByZXBvcnRzID0gW3JlcF0KICAgICBpZiByZXAucGFzc2VkOgotICAgICAg
ICBpZiBpdGVtLmNvbmZpZy5vcHRpb24uc2V0dXBzaG93OgorICAgICAgICBpZiBpdGVtLmNvbmZp
Zy5nZXRvcHRpb24oInNldHVwc2hvdyIsIEZhbHNlKToKICAgICAgICAgICAgIHNob3dfdGVzdF9p
dGVtKGl0ZW0pCi0gICAgICAgIGlmIG5vdCBpdGVtLmNvbmZpZy5vcHRpb24uc2V0dXBvbmx5Ogor
ICAgICAgICBpZiBub3QgaXRlbS5jb25maWcuZ2V0b3B0aW9uKCJzZXR1cG9ubHkiLCBGYWxzZSk6
CiAgICAgICAgICAgICByZXBvcnRzLmFwcGVuZChjYWxsX2FuZF9yZXBvcnQoaXRlbSwgImNhbGwi
LCBsb2cpKQogICAgIHJlcG9ydHMuYXBwZW5kKGNhbGxfYW5kX3JlcG9ydChpdGVtLCAidGVhcmRv
d24iLCBsb2csIG5leHRpdGVtPW5leHRpdGVtKSkKLSAgICAjIGFmdGVyIGFsbCB0ZWFyZG93biBo
b29rcyBoYXZlIGJlZW4gY2FsbGVkCi0gICAgIyB3YW50IGZ1bmNhcmdzIGFuZCByZXF1ZXN0IGlu
Zm8gdG8gZ28gYXdheQorICAgICMgQWZ0ZXIgYWxsIHRlYXJkb3duIGhvb2tzIGhhdmUgYmVlbiBj
YWxsZWQKKyAgICAjIHdhbnQgZnVuY2FyZ3MgYW5kIHJlcXVlc3QgaW5mbyB0byBnbyBhd2F5Lgog
ICAgIGlmIGhhc3JlcXVlc3Q6Ci0gICAgICAgIGl0ZW0uX3JlcXVlc3QgPSBGYWxzZQotICAgICAg
ICBpdGVtLmZ1bmNhcmdzID0gTm9uZQorICAgICAgICBpdGVtLl9yZXF1ZXN0ID0gRmFsc2UgICMg
dHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICAgICAgaXRlbS5mdW5jYXJncyA9IE5vbmUg
ICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KICAgICByZXR1cm4gcmVwb3J0cwogCiAKLWRl
ZiBzaG93X3Rlc3RfaXRlbShpdGVtKToKK2RlZiBzaG93X3Rlc3RfaXRlbShpdGVtOiBJdGVtKSAt
PiBOb25lOgogICAgICIiIlNob3cgdGVzdCBmdW5jdGlvbiwgcGFyYW1ldGVycyBhbmQgdGhlIGZp
eHR1cmVzIG9mIHRoZSB0ZXN0IGl0ZW0uIiIiCiAgICAgdHcgPSBpdGVtLmNvbmZpZy5nZXRfdGVy
bWluYWxfd3JpdGVyKCkKICAgICB0dy5saW5lKCkKICAgICB0dy53cml0ZSgiICIgKiA4KQotICAg
IHR3LndyaXRlKGl0ZW0uX25vZGVpZCkKLSAgICB1c2VkX2ZpeHR1cmVzID0gc29ydGVkKGl0ZW0u
X2ZpeHR1cmVpbmZvLm5hbWUyZml4dHVyZWRlZnMua2V5cygpKQorICAgIHR3LndyaXRlKGl0ZW0u
bm9kZWlkKQorICAgIHVzZWRfZml4dHVyZXMgPSBzb3J0ZWQoZ2V0YXR0cihpdGVtLCAiZml4dHVy
ZW5hbWVzIiwgW10pKQogICAgIGlmIHVzZWRfZml4dHVyZXM6CiAgICAgICAgIHR3LndyaXRlKCIg
KGZpeHR1cmVzIHVzZWQ6IHt9KSIuZm9ybWF0KCIsICIuam9pbih1c2VkX2ZpeHR1cmVzKSkpCisg
ICAgdHcuZmx1c2goKQogCiAKLWRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKK2RlZiBw
eXRlc3RfcnVudGVzdF9zZXR1cChpdGVtOiBJdGVtKSAtPiBOb25lOgogICAgIF91cGRhdGVfY3Vy
cmVudF90ZXN0X3ZhcihpdGVtLCAic2V0dXAiKQogICAgIGl0ZW0uc2Vzc2lvbi5fc2V0dXBzdGF0
ZS5wcmVwYXJlKGl0ZW0pCiAKIAotZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoaXRlbSk6CitkZWYg
cHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtOiBJdGVtKSAtPiBOb25lOgogICAgIF91cGRhdGVfY3Vy
cmVudF90ZXN0X3ZhcihpdGVtLCAiY2FsbCIpCi0gICAgc3lzLmxhc3RfdHlwZSwgc3lzLmxhc3Rf
dmFsdWUsIHN5cy5sYXN0X3RyYWNlYmFjayA9IChOb25lLCBOb25lLCBOb25lKQorICAgIHRyeToK
KyAgICAgICAgZGVsIHN5cy5sYXN0X3R5cGUKKyAgICAgICAgZGVsIHN5cy5sYXN0X3ZhbHVlCisg
ICAgICAgIGRlbCBzeXMubGFzdF90cmFjZWJhY2sKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
CisgICAgICAgIHBhc3MKICAgICB0cnk6CiAgICAgICAgIGl0ZW0ucnVudGVzdCgpCi0gICAgZXhj
ZXB0IEV4Y2VwdGlvbjoKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICMgU3Rv
cmUgdHJhY2UgaW5mbyB0byBhbGxvdyBwb3N0bW9ydGVtIGRlYnVnZ2luZwotICAgICAgICB0eXBl
LCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICB0YiA9IHRiLnRiX25leHQgICMg
U2tpcCAqdGhpcyogZnJhbWUKLSAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cGUKLSAgICAgICAg
c3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSB0Ygot
ICAgICAgICBkZWwgdHlwZSwgdmFsdWUsIHRiICAjIEdldCByaWQgb2YgdGhlc2UgaW4gdGhpcyBm
cmFtZQotICAgICAgICByYWlzZQorICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZShlKQorICAg
ICAgICBzeXMubGFzdF92YWx1ZSA9IGUKKyAgICAgICAgYXNzZXJ0IGUuX190cmFjZWJhY2tfXyBp
cyBub3QgTm9uZQorICAgICAgICAjIFNraXAgKnRoaXMqIGZyYW1lCisgICAgICAgIHN5cy5sYXN0
X3RyYWNlYmFjayA9IGUuX190cmFjZWJhY2tfXy50Yl9uZXh0CisgICAgICAgIHJhaXNlIGUKIAog
Ci1kZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSwgbmV4dGl0ZW0pOgorZGVmIHB5dGVz
dF9ydW50ZXN0X3RlYXJkb3duKGl0ZW06IEl0ZW0sIG5leHRpdGVtOiBPcHRpb25hbFtJdGVtXSkg
LT4gTm9uZToKICAgICBfdXBkYXRlX2N1cnJlbnRfdGVzdF92YXIoaXRlbSwgInRlYXJkb3duIikK
ICAgICBpdGVtLnNlc3Npb24uX3NldHVwc3RhdGUudGVhcmRvd25fZXhhY3QoaXRlbSwgbmV4dGl0
ZW0pCiAgICAgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sIE5vbmUpCiAKIAotZGVmIF91
cGRhdGVfY3VycmVudF90ZXN0X3ZhcihpdGVtLCB3aGVuKToKLSAgICAiIiIKLSAgICBVcGRhdGUg
UFlURVNUX0NVUlJFTlRfVEVTVCB0byByZWZsZWN0IHRoZSBjdXJyZW50IGl0ZW0gYW5kIHN0YWdl
LgorZGVmIF91cGRhdGVfY3VycmVudF90ZXN0X3ZhcigKKyAgICBpdGVtOiBJdGVtLCB3aGVuOiBP
cHRpb25hbFsiTGl0ZXJhbFsnc2V0dXAnLCAnY2FsbCcsICd0ZWFyZG93biddIl0KKykgLT4gTm9u
ZToKKyAgICAiIiJVcGRhdGUgOmVudnZhcjpgUFlURVNUX0NVUlJFTlRfVEVTVGAgdG8gcmVmbGVj
dCB0aGUgY3VycmVudCBpdGVtIGFuZCBzdGFnZS4KIAotICAgIElmIGBgd2hlbmBgIGlzIE5vbmUs
IGRlbGV0ZSBQWVRFU1RfQ1VSUkVOVF9URVNUIGZyb20gdGhlIGVudmlyb25tZW50LgorICAgIElm
IGBgd2hlbmBgIGlzIE5vbmUsIGRlbGV0ZSBgYFBZVEVTVF9DVVJSRU5UX1RFU1RgYCBmcm9tIHRo
ZSBlbnZpcm9ubWVudC4KICAgICAiIiIKICAgICB2YXJfbmFtZSA9ICJQWVRFU1RfQ1VSUkVOVF9U
RVNUIgogICAgIGlmIHdoZW46CkBAIC0xNDAsNyArMTk0LDcgQEAgZGVmIF91cGRhdGVfY3VycmVu
dF90ZXN0X3ZhcihpdGVtLCB3aGVuKToKICAgICAgICAgb3MuZW52aXJvbi5wb3AodmFyX25hbWUp
CiAKIAotZGVmIHB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQpOgorZGVmIHB5dGVzdF9y
ZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQ6IEJhc2VSZXBvcnQpIC0+IE9wdGlvbmFsW1R1cGxlW3N0
ciwgc3RyLCBzdHJdXToKICAgICBpZiByZXBvcnQud2hlbiBpbiAoInNldHVwIiwgInRlYXJkb3du
Iik6CiAgICAgICAgIGlmIHJlcG9ydC5mYWlsZWQ6CiAgICAgICAgICAgICAjICAgICAgY2F0ZWdv
cnksIHNob3J0bGV0dGVyLCB2ZXJib3NlLXdvcmQKQEAgLTE0OSwxNiArMjAzLDE5IEBAIGRlZiBw
eXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0KToKICAgICAgICAgICAgIHJldHVybiAic2tp
cHBlZCIsICJzIiwgIlNLSVBQRUQiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4g
IiIsICIiLCAiIgorICAgIHJldHVybiBOb25lCiAKIAogIwogIyBJbXBsZW1lbnRhdGlvbgogCiAK
LWRlZiBjYWxsX2FuZF9yZXBvcnQoaXRlbSwgd2hlbiwgbG9nPVRydWUsICoqa3dkcyk6CitkZWYg
Y2FsbF9hbmRfcmVwb3J0KAorICAgIGl0ZW06IEl0ZW0sIHdoZW46ICJMaXRlcmFsWydzZXR1cCcs
ICdjYWxsJywgJ3RlYXJkb3duJ10iLCBsb2c6IGJvb2wgPSBUcnVlLCAqKmt3ZHMKKykgLT4gVGVz
dFJlcG9ydDoKICAgICBjYWxsID0gY2FsbF9ydW50ZXN0X2hvb2soaXRlbSwgd2hlbiwgKiprd2Rz
KQogICAgIGhvb2sgPSBpdGVtLmlob29rCi0gICAgcmVwb3J0ID0gaG9vay5weXRlc3RfcnVudGVz
dF9tYWtlcmVwb3J0KGl0ZW09aXRlbSwgY2FsbD1jYWxsKQorICAgIHJlcG9ydCA9IGhvb2sucHl0
ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtPWl0ZW0sIGNhbGw9Y2FsbCkgICMgdHlwZTogVGVz
dFJlcG9ydAogICAgIGlmIGxvZzoKICAgICAgICAgaG9vay5weXRlc3RfcnVudGVzdF9sb2dyZXBv
cnQocmVwb3J0PXJlcG9ydCkKICAgICBpZiBjaGVja19pbnRlcmFjdGl2ZV9leGNlcHRpb24oY2Fs
bCwgcmVwb3J0KToKQEAgLTE2NiwzMjIgKzIyMywxNTkgQEAgZGVmIGNhbGxfYW5kX3JlcG9ydChp
dGVtLCB3aGVuLCBsb2c9VHJ1ZSwgKiprd2RzKToKICAgICByZXR1cm4gcmVwb3J0CiAKIAotZGVm
IGNoZWNrX2ludGVyYWN0aXZlX2V4Y2VwdGlvbihjYWxsLCByZXBvcnQpOgotICAgIHJldHVybiBj
YWxsLmV4Y2luZm8gYW5kIG5vdCAoCi0gICAgICAgIGhhc2F0dHIocmVwb3J0LCAid2FzeGZhaWwi
KQotICAgICAgICBvciBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZShza2lwLkV4Y2VwdGlvbikK
LSAgICAgICAgb3IgY2FsbC5leGNpbmZvLmVycmlzaW5zdGFuY2UoYmRiLkJkYlF1aXQpCi0gICAg
KQorZGVmIGNoZWNrX2ludGVyYWN0aXZlX2V4Y2VwdGlvbihjYWxsOiAiQ2FsbEluZm9bb2JqZWN0
XSIsIHJlcG9ydDogQmFzZVJlcG9ydCkgLT4gYm9vbDoKKyAgICAiIiJDaGVjayB3aGV0aGVyIHRo
ZSBjYWxsIHJhaXNlZCBhbiBleGNlcHRpb24gdGhhdCBzaG91bGQgYmUgcmVwb3J0ZWQgYXMKKyAg
ICBpbnRlcmFjdGl2ZS4iIiIKKyAgICBpZiBjYWxsLmV4Y2luZm8gaXMgTm9uZToKKyAgICAgICAg
IyBEaWRuJ3QgcmFpc2UuCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIGhhc2F0dHIocmVw
b3J0LCAid2FzeGZhaWwiKToKKyAgICAgICAgIyBFeGNlcHRpb24gd2FzIGV4cGVjdGVkLgorICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBpc2luc3RhbmNlKGNhbGwuZXhjaW5mby52YWx1ZSwg
KFNraXBwZWQsIGJkYi5CZGJRdWl0KSk6CisgICAgICAgICMgU3BlY2lhbCBjb250cm9sIGZsb3cg
ZXhjZXB0aW9uLgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQogCiAKLWRl
ZiBjYWxsX3J1bnRlc3RfaG9vayhpdGVtLCB3aGVuLCAqKmt3ZHMpOgotICAgIGhvb2tuYW1lID0g
InB5dGVzdF9ydW50ZXN0XyIgKyB3aGVuCi0gICAgaWhvb2sgPSBnZXRhdHRyKGl0ZW0uaWhvb2ss
IGhvb2tuYW1lKQotICAgIHJldHVybiBDYWxsSW5mbygKLSAgICAgICAgbGFtYmRhOiBpaG9vayhp
dGVtPWl0ZW0sICoqa3dkcyksCi0gICAgICAgIHdoZW49d2hlbiwKLSAgICAgICAgdHJlYXRfa2V5
Ym9hcmRfaW50ZXJydXB0X2FzX2V4Y2VwdGlvbj1pdGVtLmNvbmZpZy5nZXR2YWx1ZSgidXNlcGRi
IiksCitkZWYgY2FsbF9ydW50ZXN0X2hvb2soCisgICAgaXRlbTogSXRlbSwgd2hlbjogIkxpdGVy
YWxbJ3NldHVwJywgJ2NhbGwnLCAndGVhcmRvd24nXSIsICoqa3dkcworKSAtPiAiQ2FsbEluZm9b
Tm9uZV0iOgorICAgIGlmIHdoZW4gPT0gInNldHVwIjoKKyAgICAgICAgaWhvb2sgPSBpdGVtLmlo
b29rLnB5dGVzdF9ydW50ZXN0X3NldHVwICAjIHR5cGU6IENhbGxhYmxlWy4uLiwgTm9uZV0KKyAg
ICBlbGlmIHdoZW4gPT0gImNhbGwiOgorICAgICAgICBpaG9vayA9IGl0ZW0uaWhvb2sucHl0ZXN0
X3J1bnRlc3RfY2FsbAorICAgIGVsaWYgd2hlbiA9PSAidGVhcmRvd24iOgorICAgICAgICBpaG9v
ayA9IGl0ZW0uaWhvb2sucHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24KKyAgICBlbHNlOgorICAgICAg
ICBhc3NlcnQgRmFsc2UsICJVbmhhbmRsZWQgcnVudGVzdCBob29rIGNhc2U6IHt9Ii5mb3JtYXQo
d2hlbikKKyAgICByZXJhaXNlID0gKEV4aXQsKSAgIyB0eXBlOiBUdXBsZVtUeXBlW0Jhc2VFeGNl
cHRpb25dLCAuLi5dCisgICAgaWYgbm90IGl0ZW0uY29uZmlnLmdldG9wdGlvbigidXNlcGRiIiwg
RmFsc2UpOgorICAgICAgICByZXJhaXNlICs9IChLZXlib2FyZEludGVycnVwdCwpCisgICAgcmV0
dXJuIENhbGxJbmZvLmZyb21fY2FsbCgKKyAgICAgICAgbGFtYmRhOiBpaG9vayhpdGVtPWl0ZW0s
ICoqa3dkcyksIHdoZW49d2hlbiwgcmVyYWlzZT1yZXJhaXNlCiAgICAgKQogCiAKLWNsYXNzIENh
bGxJbmZvKG9iamVjdCk6Ci0gICAgIiIiIFJlc3VsdC9FeGNlcHRpb24gaW5mbyBhIGZ1bmN0aW9u
IGludm9jYXRpb24uICIiIgotICAgICM6IE5vbmUgb3IgRXhjZXB0aW9uSW5mbyBvYmplY3QuCi0g
ICAgZXhjaW5mbyA9IE5vbmUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCB3aGVuLCB0
cmVhdF9rZXlib2FyZF9pbnRlcnJ1cHRfYXNfZXhjZXB0aW9uPUZhbHNlKToKLSAgICAgICAgIzog
Y29udGV4dCBvZiBpbnZvY2F0aW9uOiBvbmUgb2YgInNldHVwIiwgImNhbGwiLAotICAgICAgICAj
OiAidGVhcmRvd24iLCAibWVtb2NvbGxlY3QiCi0gICAgICAgIHNlbGYud2hlbiA9IHdoZW4KLSAg
ICAgICAgc2VsZi5zdGFydCA9IHRpbWUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxm
LnJlc3VsdCA9IGZ1bmMoKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAg
ICAgICAgICBpZiB0cmVhdF9rZXlib2FyZF9pbnRlcnJ1cHRfYXNfZXhjZXB0aW9uOgotICAgICAg
ICAgICAgICAgIHNlbGYuZXhjaW5mbyA9IEV4Y2VwdGlvbkluZm8oKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBzZWxmLnN0b3AgPSB0aW1lKCkKLSAgICAgICAgICAgICAgICBy
YWlzZQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIHNlbGYuZXhjaW5mbyA9
IEV4Y2VwdGlvbkluZm8oKQotICAgICAgICBzZWxmLnN0b3AgPSB0aW1lKCkKLQotICAgIGRlZiBf
X3JlcHJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5leGNpbmZvOgotICAgICAgICAgICAgc3Rh
dHVzID0gImV4Y2VwdGlvbjogJXMiICUgc3RyKHNlbGYuZXhjaW5mby52YWx1ZSkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHN0YXR1cyA9ICJyZXN1bHQ6ICVyIiAlIChzZWxmLnJlc3VsdCwp
Ci0gICAgICAgIHJldHVybiAiPENhbGxJbmZvIHdoZW49JXIgJXM+IiAlIChzZWxmLndoZW4sIHN0
YXR1cykKK1RSZXN1bHQgPSBUeXBlVmFyKCJUUmVzdWx0IiwgY292YXJpYW50PVRydWUpCiAKIAot
ZGVmIGdldHNsYXZlaW5mb2xpbmUobm9kZSk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gbm9k
ZS5fc2xhdmVpbmZvY2FjaGUKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGQg
PSBub2RlLnNsYXZlaW5mbwotICAgICAgICB2ZXIgPSAiJXMuJXMuJXMiICUgZFsidmVyc2lvbl9p
bmZvIl1bOjNdCi0gICAgICAgIG5vZGUuX3NsYXZlaW5mb2NhY2hlID0gcyA9ICJbJXNdICVzIC0t
IFB5dGhvbiAlcyAlcyIgJSAoCi0gICAgICAgICAgICBkWyJpZCJdLCBkWyJzeXNwbGF0Zm9ybSJd
LCB2ZXIsIGRbImV4ZWN1dGFibGUiXQotICAgICAgICApCi0gICAgICAgIHJldHVybiBzCi0KLQot
Y2xhc3MgQmFzZVJlcG9ydChvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3cp
OgotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrdykKLQotICAgIGRlZiB0b3Rlcm1pbmFs
KHNlbGYsIG91dCk6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIm5vZGUiKToKLSAgICAgICAg
ICAgIG91dC5saW5lKGdldHNsYXZlaW5mb2xpbmUoc2VsZi5ub2RlKSkKLQotICAgICAgICBsb25n
cmVwciA9IHNlbGYubG9uZ3JlcHIKLSAgICAgICAgaWYgbG9uZ3JlcHIgaXMgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIGhhc2F0dHIobG9uZ3JlcHIsICJ0b3Rlcm1pbmFs
Iik6Ci0gICAgICAgICAgICBsb25ncmVwci50b3Rlcm1pbmFsKG91dCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXQubGluZShsb25ncmVwcikKLSAg
ICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgb3V0
LmxpbmUoIjx1bnByaW50YWJsZSBsb25ncmVwcj4iKQotCi0gICAgZGVmIGdldF9zZWN0aW9ucyhz
ZWxmLCBwcmVmaXgpOgotICAgICAgICBmb3IgbmFtZSwgY29udGVudCBpbiBzZWxmLnNlY3Rpb25z
OgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICAg
ICAgeWllbGQgcHJlZml4LCBjb250ZW50Ci0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbG9uZ3Jl
cHJ0ZXh0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmVhZC1vbmx5IHByb3BlcnR5IHRo
YXQgcmV0dXJucyB0aGUgZnVsbCBzdHJpbmcgcmVwcmVzZW50YXRpb24KLSAgICAgICAgb2YgYGBs
b25ncmVwcmBgLgotCi0gICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMAotICAgICAgICAiIiIK
LSAgICAgICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcihzdHJpbmdpbz1UcnVlKQotICAgICAg
ICB0dy5oYXNtYXJrdXAgPSBGYWxzZQotICAgICAgICBzZWxmLnRvdGVybWluYWwodHcpCi0gICAg
ICAgIGV4YyA9IHR3LnN0cmluZ2lvLmdldHZhbHVlKCkKLSAgICAgICAgcmV0dXJuIGV4Yy5zdHJp
cCgpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgY2FwbG9nKHNlbGYpOgotICAgICAgICAiIiJS
ZXR1cm4gY2FwdHVyZWQgbG9nIGxpbmVzLCBpZiBsb2cgY2FwdHVyaW5nIGlzIGVuYWJsZWQKLQot
ICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVy
biAiXG4iLmpvaW4oCi0gICAgICAgICAgICBjb250ZW50IGZvciAocHJlZml4LCBjb250ZW50KSBp
biBzZWxmLmdldF9zZWN0aW9ucygiQ2FwdHVyZWQgbG9nIikKLSAgICAgICAgKQotCi0gICAgQHBy
b3BlcnR5Ci0gICAgZGVmIGNhcHN0ZG91dChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGNhcHR1
cmVkIHRleHQgZnJvbSBzdGRvdXQsIGlmIGNhcHR1cmluZyBpcyBlbmFibGVkCi0KLSAgICAgICAg
Li4gdmVyc2lvbmFkZGVkOjogMy4wCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gIiIuam9p
bigKLSAgICAgICAgICAgIGNvbnRlbnQgZm9yIChwcmVmaXgsIGNvbnRlbnQpIGluIHNlbGYuZ2V0
X3NlY3Rpb25zKCJDYXB0dXJlZCBzdGRvdXQiKQotICAgICAgICApCitAZmluYWwKK0BhdHRyLnMo
cmVwcj1GYWxzZSkKK2NsYXNzIENhbGxJbmZvKEdlbmVyaWNbVFJlc3VsdF0pOgorICAgICIiIlJl
c3VsdC9FeGNlcHRpb24gaW5mbyBhIGZ1bmN0aW9uIGludm9jYXRpb24uCiAKLSAgICBAcHJvcGVy
dHkKLSAgICBkZWYgY2Fwc3RkZXJyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gY2FwdHVyZWQg
dGV4dCBmcm9tIHN0ZGVyciwgaWYgY2FwdHVyaW5nIGlzIGVuYWJsZWQKLQotICAgICAgICAuLiB2
ZXJzaW9uYWRkZWQ6OiAzLjAKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAiIi5qb2luKAot
ICAgICAgICAgICAgY29udGVudCBmb3IgKHByZWZpeCwgY29udGVudCkgaW4gc2VsZi5nZXRfc2Vj
dGlvbnMoIkNhcHR1cmVkIHN0ZGVyciIpCi0gICAgICAgICkKKyAgICA6cGFyYW0gVCByZXN1bHQ6
CisgICAgICAgIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGwsIGlmIGl0IGRpZG4ndCByYWlz
ZS4gQ2FuIG9ubHkgYmUKKyAgICAgICAgYWNjZXNzZWQgaWYgZXhjaW5mbyBpcyBOb25lLgorICAg
IDpwYXJhbSBPcHRpb25hbFtFeGNlcHRpb25JbmZvXSBleGNpbmZvOgorICAgICAgICBUaGUgY2Fw
dHVyZWQgZXhjZXB0aW9uIG9mIHRoZSBjYWxsLCBpZiBpdCByYWlzZWQuCisgICAgOnBhcmFtIGZs
b2F0IHN0YXJ0OgorICAgICAgICBUaGUgc3lzdGVtIHRpbWUgd2hlbiB0aGUgY2FsbCBzdGFydGVk
LCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4KKyAgICA6cGFyYW0gZmxvYXQgc3RvcDoKKyAg
ICAgICAgVGhlIHN5c3RlbSB0aW1lIHdoZW4gdGhlIGNhbGwgZW5kZWQsIGluIHNlY29uZHMgc2lu
Y2UgdGhlIGVwb2NoLgorICAgIDpwYXJhbSBmbG9hdCBkdXJhdGlvbjoKKyAgICAgICAgVGhlIGNh
bGwgZHVyYXRpb24sIGluIHNlY29uZHMuCisgICAgOnBhcmFtIHN0ciB3aGVuOgorICAgICAgICBU
aGUgY29udGV4dCBvZiBpbnZvY2F0aW9uOiAic2V0dXAiLCAiY2FsbCIsICJ0ZWFyZG93biIsIC4u
LgorICAgICIiIgogCi0gICAgcGFzc2VkID0gcHJvcGVydHkobGFtYmRhIHg6IHgub3V0Y29tZSA9
PSAicGFzc2VkIikKLSAgICBmYWlsZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21lID09
ICJmYWlsZWQiKQotICAgIHNraXBwZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21lID09
ICJza2lwcGVkIikKKyAgICBfcmVzdWx0ID0gYXR0ci5pYih0eXBlPSJPcHRpb25hbFtUUmVzdWx0
XSIpCisgICAgZXhjaW5mbyA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFtFeGNlcHRpb25JbmZvW0Jh
c2VFeGNlcHRpb25dXSkKKyAgICBzdGFydCA9IGF0dHIuaWIodHlwZT1mbG9hdCkKKyAgICBzdG9w
ID0gYXR0ci5pYih0eXBlPWZsb2F0KQorICAgIGR1cmF0aW9uID0gYXR0ci5pYih0eXBlPWZsb2F0
KQorICAgIHdoZW4gPSBhdHRyLmliKHR5cGU9IkxpdGVyYWxbJ2NvbGxlY3QnLCAnc2V0dXAnLCAn
Y2FsbCcsICd0ZWFyZG93biddIikKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBmc3BhdGgoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLm5vZGVpZC5zcGxpdCgiOjoiKVswXQotCi0KLWRlZiBw
eXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgotICAgIHdoZW4gPSBjYWxsLndo
ZW4KLSAgICBkdXJhdGlvbiA9IGNhbGwuc3RvcCAtIGNhbGwuc3RhcnQKLSAgICBrZXl3b3JkcyA9
IHt4OiAxIGZvciB4IGluIGl0ZW0ua2V5d29yZHN9Ci0gICAgZXhjaW5mbyA9IGNhbGwuZXhjaW5m
bwotICAgIHNlY3Rpb25zID0gW10KLSAgICBpZiBub3QgY2FsbC5leGNpbmZvOgotICAgICAgICBv
dXRjb21lID0gInBhc3NlZCIKLSAgICAgICAgbG9uZ3JlcHIgPSBOb25lCi0gICAgZWxzZToKLSAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjaW5mbywgRXhjZXB0aW9uSW5mbyk6Ci0gICAgICAg
ICAgICBvdXRjb21lID0gImZhaWxlZCIKLSAgICAgICAgICAgIGxvbmdyZXByID0gZXhjaW5mbwot
ICAgICAgICBlbGlmIGV4Y2luZm8uZXJyaXNpbnN0YW5jZShza2lwLkV4Y2VwdGlvbik6Ci0gICAg
ICAgICAgICBvdXRjb21lID0gInNraXBwZWQiCi0gICAgICAgICAgICByID0gZXhjaW5mby5fZ2V0
cmVwcmNyYXNoKCkKLSAgICAgICAgICAgIGxvbmdyZXByID0gKHN0cihyLnBhdGgpLCByLmxpbmVu
bywgci5tZXNzYWdlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0Y29tZSA9ICJmYWls
ZWQiCi0gICAgICAgICAgICBpZiBjYWxsLndoZW4gPT0gImNhbGwiOgotICAgICAgICAgICAgICAg
IGxvbmdyZXByID0gaXRlbS5yZXByX2ZhaWx1cmUoZXhjaW5mbykKLSAgICAgICAgICAgIGVsc2U6
ICAjIGV4Y2VwdGlvbiBpbiBzZXR1cCBvciB0ZWFyZG93bgotICAgICAgICAgICAgICAgIGxvbmdy
ZXByID0gaXRlbS5fcmVwcl9mYWlsdXJlX3B5KAotICAgICAgICAgICAgICAgICAgICBleGNpbmZv
LCBzdHlsZT1pdGVtLmNvbmZpZy5vcHRpb24udGJzdHlsZQotICAgICAgICAgICAgICAgICkKLSAg
ICBmb3IgcndoZW4sIGtleSwgY29udGVudCBpbiBpdGVtLl9yZXBvcnRfc2VjdGlvbnM6Ci0gICAg
ICAgIHNlY3Rpb25zLmFwcGVuZCgoIkNhcHR1cmVkICVzICVzIiAlIChrZXksIHJ3aGVuKSwgY29u
dGVudCkpCi0gICAgcmV0dXJuIFRlc3RSZXBvcnQoCi0gICAgICAgIGl0ZW0ubm9kZWlkLAotICAg
ICAgICBpdGVtLmxvY2F0aW9uLAotICAgICAgICBrZXl3b3JkcywKLSAgICAgICAgb3V0Y29tZSwK
LSAgICAgICAgbG9uZ3JlcHIsCi0gICAgICAgIHdoZW4sCi0gICAgICAgIHNlY3Rpb25zLAotICAg
ICAgICBkdXJhdGlvbiwKLSAgICAgICAgdXNlcl9wcm9wZXJ0aWVzPWl0ZW0udXNlcl9wcm9wZXJ0
aWVzLAotICAgICkKLQotCi1jbGFzcyBUZXN0UmVwb3J0KEJhc2VSZXBvcnQpOgotICAgICIiIiBC
YXNpYyB0ZXN0IHJlcG9ydCBvYmplY3QgKGFsc28gdXNlZCBmb3Igc2V0dXAgYW5kIHRlYXJkb3du
IGNhbGxzIGlmCi0gICAgdGhleSBmYWlsKS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXygK
LSAgICAgICAgc2VsZiwKLSAgICAgICAgbm9kZWlkLAotICAgICAgICBsb2NhdGlvbiwKLSAgICAg
ICAga2V5d29yZHMsCi0gICAgICAgIG91dGNvbWUsCi0gICAgICAgIGxvbmdyZXByLAotICAgICAg
ICB3aGVuLAotICAgICAgICBzZWN0aW9ucz0oKSwKLSAgICAgICAgZHVyYXRpb249MCwKLSAgICAg
ICAgdXNlcl9wcm9wZXJ0aWVzPSgpLAotICAgICAgICAqKmV4dHJhCi0gICAgKToKLSAgICAgICAg
Izogbm9ybWFsaXplZCBjb2xsZWN0aW9uIG5vZGUgaWQKLSAgICAgICAgc2VsZi5ub2RlaWQgPSBu
b2RlaWQKLQotICAgICAgICAjOiBhIChmaWxlc3lzdGVtcGF0aCwgbGluZW5vLCBkb21haW5pbmZv
KSB0dXBsZSBpbmRpY2F0aW5nIHRoZQotICAgICAgICAjOiBhY3R1YWwgbG9jYXRpb24gb2YgYSB0
ZXN0IGl0ZW0gLSBpdCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUKLSAgICAgICAgIzogY29s
bGVjdGVkIG9uZSBlLmcuIGlmIGEgbWV0aG9kIGlzIGluaGVyaXRlZCBmcm9tIGEgZGlmZmVyZW50
IG1vZHVsZS4KLSAgICAgICAgc2VsZi5sb2NhdGlvbiA9IGxvY2F0aW9uCi0KLSAgICAgICAgIzog
YSBuYW1lIC0+IHZhbHVlIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwga2V5d29yZHMgYW5kCi0g
ICAgICAgICM6IG1hcmtlcnMgYXNzb2NpYXRlZCB3aXRoIGEgdGVzdCBpbnZvY2F0aW9uLgotICAg
ICAgICBzZWxmLmtleXdvcmRzID0ga2V5d29yZHMKLQotICAgICAgICAjOiB0ZXN0IG91dGNvbWUs
IGFsd2F5cyBvbmUgb2YgInBhc3NlZCIsICJmYWlsZWQiLCAic2tpcHBlZCIuCi0gICAgICAgIHNl
bGYub3V0Y29tZSA9IG91dGNvbWUKLQotICAgICAgICAjOiBOb25lIG9yIGEgZmFpbHVyZSByZXBy
ZXNlbnRhdGlvbi4KLSAgICAgICAgc2VsZi5sb25ncmVwciA9IGxvbmdyZXByCi0KLSAgICAgICAg
Izogb25lIG9mICdzZXR1cCcsICdjYWxsJywgJ3RlYXJkb3duJyB0byBpbmRpY2F0ZSBydW50ZXN0
IHBoYXNlLgotICAgICAgICBzZWxmLndoZW4gPSB3aGVuCi0KLSAgICAgICAgIzogdXNlciBwcm9w
ZXJ0aWVzIGlzIGEgbGlzdCBvZiB0dXBsZXMgKG5hbWUsIHZhbHVlKSB0aGF0IGhvbGRzIHVzZXIK
LSAgICAgICAgIzogZGVmaW5lZCBwcm9wZXJ0aWVzIG9mIHRoZSB0ZXN0Ci0gICAgICAgIHNlbGYu
dXNlcl9wcm9wZXJ0aWVzID0gdXNlcl9wcm9wZXJ0aWVzCi0KLSAgICAgICAgIzogbGlzdCBvZiBw
YWlycyBgYChzdHIsIHN0cilgYCBvZiBleHRyYSBpbmZvcm1hdGlvbiB3aGljaCBuZWVkcyB0bwot
ICAgICAgICAjOiBtYXJzaGFsbGFibGUuIFVzZWQgYnkgcHl0ZXN0IHRvIGFkZCBjYXB0dXJlZCB0
ZXh0Ci0gICAgICAgICM6IGZyb20gYGBzdGRvdXRgYCBhbmQgYGBzdGRlcnJgYCwgYnV0IG1heSBi
ZSB1c2VkIGJ5IG90aGVyIHBsdWdpbnMKLSAgICAgICAgIzogdG8gYWRkIGFyYml0cmFyeSBpbmZv
cm1hdGlvbiB0byByZXBvcnRzLgotICAgICAgICBzZWxmLnNlY3Rpb25zID0gbGlzdChzZWN0aW9u
cykKLQotICAgICAgICAjOiB0aW1lIGl0IHRvb2sgdG8gcnVuIGp1c3QgdGhlIHRlc3QKLSAgICAg
ICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0KLSAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRh
dGUoZXh0cmEpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFRl
c3RSZXBvcnQgJXIgd2hlbj0lciBvdXRjb21lPSVyPiIgJSAoCi0gICAgICAgICAgICBzZWxmLm5v
ZGVpZCwgc2VsZi53aGVuLCBzZWxmLm91dGNvbWUKKyAgICBkZWYgcmVzdWx0KHNlbGYpIC0+IFRS
ZXN1bHQ6CisgICAgICAgIGlmIHNlbGYuZXhjaW5mbyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJ7IXJ9IGhhcyBubyB2YWxpZCByZXN1bHQiLmZvcm1hdChz
ZWxmKSkKKyAgICAgICAgIyBUaGUgY2FzdCBpcyBzYWZlIGJlY2F1c2UgYW4gZXhjZXB0aW9uIHdh
c24ndCByYWlzZWQsIGhlbmNlCisgICAgICAgICMgX3Jlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIGZ1
bmN0aW9uIHJldHVybiB0eXBlICh3aGljaCBtYXkgYmUKKyAgICAgICAgIyAgTm9uZSwgdGhhdCdz
IHdoeSBhIGNhc3QgYW5kIG5vdCBhbiBhc3NlcnQpLgorICAgICAgICByZXR1cm4gY2FzdChUUmVz
dWx0LCBzZWxmLl9yZXN1bHQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9jYWxs
KAorICAgICAgICBjbHMsCisgICAgICAgIGZ1bmM6ICJDYWxsYWJsZVtbXSwgVFJlc3VsdF0iLAor
ICAgICAgICB3aGVuOiAiTGl0ZXJhbFsnY29sbGVjdCcsICdzZXR1cCcsICdjYWxsJywgJ3RlYXJk
b3duJ10iLAorICAgICAgICByZXJhaXNlOiAiT3B0aW9uYWxbVW5pb25bVHlwZVtCYXNlRXhjZXB0
aW9uXSwgVHVwbGVbVHlwZVtCYXNlRXhjZXB0aW9uXSwgLi4uXV1dIiA9IE5vbmUsCisgICAgKSAt
PiAiQ2FsbEluZm9bVFJlc3VsdF0iOgorICAgICAgICBleGNpbmZvID0gTm9uZQorICAgICAgICBz
dGFydCA9IHRpbWluZy50aW1lKCkKKyAgICAgICAgcHJlY2lzZV9zdGFydCA9IHRpbWluZy5wZXJm
X2NvdW50ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBmdW5jKCkgICMg
dHlwZTogT3B0aW9uYWxbVFJlc3VsdF0KKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Cisg
ICAgICAgICAgICBleGNpbmZvID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQorICAgICAg
ICAgICAgaWYgcmVyYWlzZSBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShleGNpbmZvLnZhbHVl
LCByZXJhaXNlKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmVzdWx0ID0g
Tm9uZQorICAgICAgICAjIHVzZSB0aGUgcGVyZiBjb3VudGVyCisgICAgICAgIHByZWNpc2Vfc3Rv
cCA9IHRpbWluZy5wZXJmX2NvdW50ZXIoKQorICAgICAgICBkdXJhdGlvbiA9IHByZWNpc2Vfc3Rv
cCAtIHByZWNpc2Vfc3RhcnQKKyAgICAgICAgc3RvcCA9IHRpbWluZy50aW1lKCkKKyAgICAgICAg
cmV0dXJuIGNscygKKyAgICAgICAgICAgIHN0YXJ0PXN0YXJ0LAorICAgICAgICAgICAgc3RvcD1z
dG9wLAorICAgICAgICAgICAgZHVyYXRpb249ZHVyYXRpb24sCisgICAgICAgICAgICB3aGVuPXdo
ZW4sCisgICAgICAgICAgICByZXN1bHQ9cmVzdWx0LAorICAgICAgICAgICAgZXhjaW5mbz1leGNp
bmZvLAogICAgICAgICApCiAKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorICAgICAg
ICBpZiBzZWxmLmV4Y2luZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAiPENhbGxJbmZv
IHdoZW49eyFyfSByZXN1bHQ6IHshcn0+Ii5mb3JtYXQoc2VsZi53aGVuLCBzZWxmLl9yZXN1bHQp
CisgICAgICAgIHJldHVybiAiPENhbGxJbmZvIHdoZW49eyFyfSBleGNpbmZvPXshcn0+Ii5mb3Jt
YXQoc2VsZi53aGVuLCBzZWxmLmV4Y2luZm8pCiAKLWNsYXNzIFRlYXJkb3duRXJyb3JSZXBvcnQo
QmFzZVJlcG9ydCk6Ci0gICAgb3V0Y29tZSA9ICJmYWlsZWQiCi0gICAgd2hlbiA9ICJ0ZWFyZG93
biIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb25ncmVwciwgKipleHRyYSk6Ci0gICAgICAg
IHNlbGYubG9uZ3JlcHIgPSBsb25ncmVwcgotICAgICAgICBzZWxmLnNlY3Rpb25zID0gW10KLSAg
ICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZXh0cmEpCitkZWYgcHl0ZXN0X3J1bnRlc3RfbWFr
ZXJlcG9ydChpdGVtOiBJdGVtLCBjYWxsOiBDYWxsSW5mb1tOb25lXSkgLT4gVGVzdFJlcG9ydDoK
KyAgICByZXR1cm4gVGVzdFJlcG9ydC5mcm9tX2l0ZW1fYW5kX2NhbGwoaXRlbSwgY2FsbCkKIAog
Ci1kZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVjdG9yKToKLSAgICBjYWxsID0g
Q2FsbEluZm8obGFtYmRhOiBsaXN0KGNvbGxlY3Rvci5jb2xsZWN0KCkpLCAiY29sbGVjdCIpCi0g
ICAgbG9uZ3JlcHIgPSBOb25lCitkZWYgcHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVj
dG9yOiBDb2xsZWN0b3IpIC0+IENvbGxlY3RSZXBvcnQ6CisgICAgY2FsbCA9IENhbGxJbmZvLmZy
b21fY2FsbChsYW1iZGE6IGxpc3QoY29sbGVjdG9yLmNvbGxlY3QoKSksICJjb2xsZWN0IikKKyAg
ICBsb25ncmVwciA9IE5vbmUgICMgdHlwZTogVW5pb25bTm9uZSwgVHVwbGVbc3RyLCBpbnQsIHN0
cl0sIHN0ciwgVGVybWluYWxSZXByXQogICAgIGlmIG5vdCBjYWxsLmV4Y2luZm86Ci0gICAgICAg
IG91dGNvbWUgPSAicGFzc2VkIgorICAgICAgICBvdXRjb21lID0gInBhc3NlZCIgICMgdHlwZTog
TGl0ZXJhbFsicGFzc2VkIiwgInNraXBwZWQiLCAiZmFpbGVkIl0KICAgICBlbHNlOgotICAgICAg
ICBmcm9tIF9weXRlc3QgaW1wb3J0IG5vc2UKLQotICAgICAgICBza2lwX2V4Y2VwdGlvbnMgPSAo
U2tpcHBlZCwpICsgbm9zZS5nZXRfc2tpcF9leGNlcHRpb25zKCkKLSAgICAgICAgaWYgY2FsbC5l
eGNpbmZvLmVycmlzaW5zdGFuY2Uoc2tpcF9leGNlcHRpb25zKToKKyAgICAgICAgc2tpcF9leGNl
cHRpb25zID0gW1NraXBwZWRdCisgICAgICAgIHVuaXR0ZXN0ID0gc3lzLm1vZHVsZXMuZ2V0KCJ1
bml0dGVzdCIpCisgICAgICAgIGlmIHVuaXR0ZXN0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
IyBUeXBlIGlnbm9yZWQgYmVjYXVzZSB1bml0dGVzdCBpcyBsb2FkZWQgZHluYW1pY2FsbHkuCisg
ICAgICAgICAgICBza2lwX2V4Y2VwdGlvbnMuYXBwZW5kKHVuaXR0ZXN0LlNraXBUZXN0KSAgIyB0
eXBlOiBpZ25vcmUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjYWxsLmV4Y2luZm8udmFsdWUsIHR1
cGxlKHNraXBfZXhjZXB0aW9ucykpOgogICAgICAgICAgICAgb3V0Y29tZSA9ICJza2lwcGVkIgot
ICAgICAgICAgICAgciA9IGNvbGxlY3Rvci5fcmVwcl9mYWlsdXJlX3B5KGNhbGwuZXhjaW5mbywg
ImxpbmUiKS5yZXByY3Jhc2gKKyAgICAgICAgICAgIHJfID0gY29sbGVjdG9yLl9yZXByX2ZhaWx1
cmVfcHkoY2FsbC5leGNpbmZvLCAibGluZSIpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShyXywgRXhjZXB0aW9uQ2hhaW5SZXByKSwgcmVwcihyXykKKyAgICAgICAgICAgIHIgPSByXy5y
ZXByY3Jhc2gKKyAgICAgICAgICAgIGFzc2VydCByCiAgICAgICAgICAgICBsb25ncmVwciA9IChz
dHIoci5wYXRoKSwgci5saW5lbm8sIHIubWVzc2FnZSkKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIG91dGNvbWUgPSAiZmFpbGVkIgogICAgICAgICAgICAgZXJyb3JpbmZvID0gY29sbGVjdG9y
LnJlcHJfZmFpbHVyZShjYWxsLmV4Y2luZm8pCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihl
cnJvcmluZm8sICJ0b3Rlcm1pbmFsIik6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoZXJyb3JpbmZvLCBzdHIpCiAgICAgICAgICAgICAgICAgZXJyb3JpbmZvID0gQ29sbGVjdEVy
cm9yUmVwcihlcnJvcmluZm8pCiAgICAgICAgICAgICBsb25ncmVwciA9IGVycm9yaW5mbwotICAg
IHJlcCA9IENvbGxlY3RSZXBvcnQoCi0gICAgICAgIGNvbGxlY3Rvci5ub2RlaWQsIG91dGNvbWUs
IGxvbmdyZXByLCBnZXRhdHRyKGNhbGwsICJyZXN1bHQiLCBOb25lKQotICAgICkKLSAgICByZXAu
Y2FsbCA9IGNhbGwgICMgc2VlIGNvbGxlY3Rfb25lX25vZGUKKyAgICByZXN1bHQgPSBjYWxsLnJl
c3VsdCBpZiBub3QgY2FsbC5leGNpbmZvIGVsc2UgTm9uZQorICAgIHJlcCA9IENvbGxlY3RSZXBv
cnQoY29sbGVjdG9yLm5vZGVpZCwgb3V0Y29tZSwgbG9uZ3JlcHIsIHJlc3VsdCkKKyAgICByZXAu
Y2FsbCA9IGNhbGwgICMgdHlwZTogaWdub3JlICMgc2VlIGNvbGxlY3Rfb25lX25vZGUKICAgICBy
ZXR1cm4gcmVwCiAKIAotY2xhc3MgQ29sbGVjdFJlcG9ydChCYXNlUmVwb3J0KToKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBub2RlaWQsIG91dGNvbWUsIGxvbmdyZXByLCByZXN1bHQsIHNlY3Rp
b25zPSgpLCAqKmV4dHJhKToKLSAgICAgICAgc2VsZi5ub2RlaWQgPSBub2RlaWQKLSAgICAgICAg
c2VsZi5vdXRjb21lID0gb3V0Y29tZQotICAgICAgICBzZWxmLmxvbmdyZXByID0gbG9uZ3JlcHIK
LSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQgb3IgW10KLSAgICAgICAgc2VsZi5zZWN0aW9u
cyA9IGxpc3Qoc2VjdGlvbnMpCi0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGV4dHJhKQot
Ci0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGxvY2F0aW9uKHNlbGYpOgotICAgICAgICByZXR1cm4g
KHNlbGYuZnNwYXRoLCBOb25lLCBzZWxmLmZzcGF0aCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICI8Q29sbGVjdFJlcG9ydCAlciBsZW5yZXN1bHQ9JXMgb3V0Y29t
ZT0lcj4iICUgKAotICAgICAgICAgICAgc2VsZi5ub2RlaWQsIGxlbihzZWxmLnJlc3VsdCksIHNl
bGYub3V0Y29tZQotICAgICAgICApCi0KLQotY2xhc3MgQ29sbGVjdEVycm9yUmVwcihUZXJtaW5h
bFJlcHIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6Ci0gICAgICAgIHNlbGYubG9u
Z3JlcHIgPSBtc2cKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIG91dCk6Ci0gICAgICAgIG91
dC5saW5lKHNlbGYubG9uZ3JlcHIsIHJlZD1UcnVlKQotCi0KLWNsYXNzIFNldHVwU3RhdGUob2Jq
ZWN0KToKLSAgICAiIiIgc2hhcmVkIHN0YXRlIGZvciBzZXR0aW5nIHVwL3RlYXJpbmcgZG93biB0
ZXN0IGl0ZW1zIG9yIGNvbGxlY3RvcnMuICIiIgorY2xhc3MgU2V0dXBTdGF0ZToKKyAgICAiIiJT
aGFyZWQgc3RhdGUgZm9yIHNldHRpbmcgdXAvdGVhcmluZyBkb3duIHRlc3QgaXRlbXMgb3IgY29s
bGVjdG9ycy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdGFj
ayA9IFtdCi0gICAgICAgIHNlbGYuX2ZpbmFsaXplcnMgPSB7fQotCi0gICAgZGVmIGFkZGZpbmFs
aXplcihzZWxmLCBmaW5hbGl6ZXIsIGNvbGl0ZW0pOgotICAgICAgICAiIiIgYXR0YWNoIGEgZmlu
YWxpemVyIHRvIHRoZSBnaXZlbiBjb2xpdGVtLgotICAgICAgICBpZiBjb2xpdGVtIGlzIE5vbmUs
IHRoaXMgd2lsbCBhZGQgYSBmaW5hbGl6ZXIgdGhhdAotICAgICAgICBpcyBjYWxsZWQgYXQgdGhl
IGVuZCBvZiB0ZWFyZG93bl9hbGwoKS4KLSAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc3RhY2sg
PSBbXSAgIyB0eXBlOiBMaXN0W05vZGVdCisgICAgICAgIHNlbGYuX2ZpbmFsaXplcnMgPSB7fSAg
IyB0eXBlOiBEaWN0W05vZGUsIExpc3RbQ2FsbGFibGVbW10sIG9iamVjdF1dXQorCisgICAgZGVm
IGFkZGZpbmFsaXplcihzZWxmLCBmaW5hbGl6ZXI6IENhbGxhYmxlW1tdLCBvYmplY3RdLCBjb2xp
dGVtKSAtPiBOb25lOgorICAgICAgICAiIiJBdHRhY2ggYSBmaW5hbGl6ZXIgdG8gdGhlIGdpdmVu
IGNvbGl0ZW0uIiIiCiAgICAgICAgIGFzc2VydCBjb2xpdGVtIGFuZCBub3QgaXNpbnN0YW5jZShj
b2xpdGVtLCB0dXBsZSkKICAgICAgICAgYXNzZXJ0IGNhbGxhYmxlKGZpbmFsaXplcikKICAgICAg
ICAgIyBhc3NlcnQgY29saXRlbSBpbiBzZWxmLnN0YWNrICAjIHNvbWUgdW5pdCB0ZXN0cyBkb24n
dCBzZXR1cCBzdGFjayA6LwpAQCAtNDkxLDc5ICszODUsNzYgQEAgY2xhc3MgU2V0dXBTdGF0ZShv
YmplY3QpOgogICAgICAgICBjb2xpdGVtID0gc2VsZi5zdGFjay5wb3AoKQogICAgICAgICBzZWxm
Ll90ZWFyZG93bl93aXRoX2ZpbmFsaXphdGlvbihjb2xpdGVtKQogCi0gICAgZGVmIF9jYWxsZmlu
YWxpemVycyhzZWxmLCBjb2xpdGVtKToKKyAgICBkZWYgX2NhbGxmaW5hbGl6ZXJzKHNlbGYsIGNv
bGl0ZW0pIC0+IE5vbmU6CiAgICAgICAgIGZpbmFsaXplcnMgPSBzZWxmLl9maW5hbGl6ZXJzLnBv
cChjb2xpdGVtLCBOb25lKQogICAgICAgICBleGMgPSBOb25lCiAgICAgICAgIHdoaWxlIGZpbmFs
aXplcnM6CiAgICAgICAgICAgICBmaW4gPSBmaW5hbGl6ZXJzLnBvcCgpCiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgZmluKCkKLSAgICAgICAgICAgIGV4Y2VwdCBURVNUX09VVENP
TUU6CisgICAgICAgICAgICBleGNlcHQgVEVTVF9PVVRDT01FIGFzIGU6CiAgICAgICAgICAgICAg
ICAgIyBYWFggT25seSBmaXJzdCBleGNlcHRpb24gd2lsbCBiZSBzZWVuIGJ5IHVzZXIsCiAgICAg
ICAgICAgICAgICAgIyAgICAgaWRlYWxseSBhbGwgc2hvdWxkIGJlIHJlcG9ydGVkLgogICAgICAg
ICAgICAgICAgIGlmIGV4YyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBleGMgPSBzeXMu
ZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICAgICBleGMgPSBlCiAgICAgICAgIGlmIGV4YzoK
LSAgICAgICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoKmV4YykKKyAgICAgICAgICAgIHJhaXNl
IGV4YwogCi0gICAgZGVmIF90ZWFyZG93bl93aXRoX2ZpbmFsaXphdGlvbihzZWxmLCBjb2xpdGVt
KToKKyAgICBkZWYgX3RlYXJkb3duX3dpdGhfZmluYWxpemF0aW9uKHNlbGYsIGNvbGl0ZW0pIC0+
IE5vbmU6CiAgICAgICAgIHNlbGYuX2NhbGxmaW5hbGl6ZXJzKGNvbGl0ZW0pCi0gICAgICAgIGlm
IGhhc2F0dHIoY29saXRlbSwgInRlYXJkb3duIik6Ci0gICAgICAgICAgICBjb2xpdGVtLnRlYXJk
b3duKCkKKyAgICAgICAgY29saXRlbS50ZWFyZG93bigpCiAgICAgICAgIGZvciBjb2xpdGVtIGlu
IHNlbGYuX2ZpbmFsaXplcnM6Ci0gICAgICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgICAg
IGNvbGl0ZW0gaXMgTm9uZSBvciBjb2xpdGVtIGluIHNlbGYuc3RhY2sgb3IgaXNpbnN0YW5jZShj
b2xpdGVtLCB0dXBsZSkKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCBjb2xpdGVt
IGluIHNlbGYuc3RhY2sKIAotICAgIGRlZiB0ZWFyZG93bl9hbGwoc2VsZik6CisgICAgZGVmIHRl
YXJkb3duX2FsbChzZWxmKSAtPiBOb25lOgogICAgICAgICB3aGlsZSBzZWxmLnN0YWNrOgogICAg
ICAgICAgICAgc2VsZi5fcG9wX2FuZF90ZWFyZG93bigpCiAgICAgICAgIGZvciBrZXkgaW4gbGlz
dChzZWxmLl9maW5hbGl6ZXJzKToKICAgICAgICAgICAgIHNlbGYuX3RlYXJkb3duX3dpdGhfZmlu
YWxpemF0aW9uKGtleSkKICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9maW5hbGl6ZXJzCiAKLSAg
ICBkZWYgdGVhcmRvd25fZXhhY3Qoc2VsZiwgaXRlbSwgbmV4dGl0ZW0pOgorICAgIGRlZiB0ZWFy
ZG93bl9leGFjdChzZWxmLCBpdGVtLCBuZXh0aXRlbSkgLT4gTm9uZToKICAgICAgICAgbmVlZGVk
X2NvbGxlY3RvcnMgPSBuZXh0aXRlbSBhbmQgbmV4dGl0ZW0ubGlzdGNoYWluKCkgb3IgW10KICAg
ICAgICAgc2VsZi5fdGVhcmRvd25fdG93YXJkcyhuZWVkZWRfY29sbGVjdG9ycykKIAotICAgIGRl
ZiBfdGVhcmRvd25fdG93YXJkcyhzZWxmLCBuZWVkZWRfY29sbGVjdG9ycyk6CisgICAgZGVmIF90
ZWFyZG93bl90b3dhcmRzKHNlbGYsIG5lZWRlZF9jb2xsZWN0b3JzKSAtPiBOb25lOgogICAgICAg
ICBleGMgPSBOb25lCiAgICAgICAgIHdoaWxlIHNlbGYuc3RhY2s6Ci0gICAgICAgICAgICBpZiBz
ZWxmLnN0YWNrID09IG5lZWRlZF9jb2xsZWN0b3JzWzpsZW4oc2VsZi5zdGFjayldOgorICAgICAg
ICAgICAgaWYgc2VsZi5zdGFjayA9PSBuZWVkZWRfY29sbGVjdG9yc1s6IGxlbihzZWxmLnN0YWNr
KV06CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBzZWxmLl9wb3BfYW5kX3RlYXJkb3duKCkKLSAgICAgICAgICAgIGV4Y2VwdCBURVNUX09V
VENPTUU6CisgICAgICAgICAgICBleGNlcHQgVEVTVF9PVVRDT01FIGFzIGU6CiAgICAgICAgICAg
ICAgICAgIyBYWFggT25seSBmaXJzdCBleGNlcHRpb24gd2lsbCBiZSBzZWVuIGJ5IHVzZXIsCiAg
ICAgICAgICAgICAgICAgIyAgICAgaWRlYWxseSBhbGwgc2hvdWxkIGJlIHJlcG9ydGVkLgogICAg
ICAgICAgICAgICAgIGlmIGV4YyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBleGMgPSBz
eXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICAgICBleGMgPSBlCiAgICAgICAgIGlmIGV4
YzoKLSAgICAgICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoKmV4YykKKyAgICAgICAgICAgIHJh
aXNlIGV4YwogCi0gICAgZGVmIHByZXBhcmUoc2VsZiwgY29saXRlbSk6Ci0gICAgICAgICIiIiBz
ZXR1cCBvYmplY3RzIGFsb25nIHRoZSBjb2xsZWN0b3IgY2hhaW4gdG8gdGhlIHRlc3QtbWV0aG9k
Ci0gICAgICAgICAgICBhbmQgdGVhcmRvd24gcHJldmlvdXNseSBzZXR1cCBvYmplY3RzLiIiIgot
ICAgICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IGNvbGl0ZW0ubGlzdGNoYWluKCkKLSAgICAgICAg
c2VsZi5fdGVhcmRvd25fdG93YXJkcyhuZWVkZWRfY29sbGVjdG9ycykKKyAgICBkZWYgcHJlcGFy
ZShzZWxmLCBjb2xpdGVtKSAtPiBOb25lOgorICAgICAgICAiIiJTZXR1cCBvYmplY3RzIGFsb25n
IHRoZSBjb2xsZWN0b3IgY2hhaW4gdG8gdGhlIHRlc3QtbWV0aG9kLiIiIgogCi0gICAgICAgICMg
Y2hlY2sgaWYgdGhlIGxhc3QgY29sbGVjdGlvbiBub2RlIGhhcyByYWlzZWQgYW4gZXJyb3IKKyAg
ICAgICAgIyBDaGVjayBpZiB0aGUgbGFzdCBjb2xsZWN0aW9uIG5vZGUgaGFzIHJhaXNlZCBhbiBl
cnJvci4KICAgICAgICAgZm9yIGNvbCBpbiBzZWxmLnN0YWNrOgogICAgICAgICAgICAgaWYgaGFz
YXR0cihjb2wsICJfcHJlcGFyZV9leGMiKToKLSAgICAgICAgICAgICAgICBweS5idWlsdGluLl9y
ZXJhaXNlKCpjb2wuX3ByZXBhcmVfZXhjKQotICAgICAgICBmb3IgY29sIGluIG5lZWRlZF9jb2xs
ZWN0b3JzW2xlbihzZWxmLnN0YWNrKTpdOgorICAgICAgICAgICAgICAgIGV4YyA9IGNvbC5fcHJl
cGFyZV9leGMgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKyAgICAgICAgICAgICAgICBy
YWlzZSBleGMKKworICAgICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IGNvbGl0ZW0ubGlzdGNoYWlu
KCkKKyAgICAgICAgZm9yIGNvbCBpbiBuZWVkZWRfY29sbGVjdG9yc1tsZW4oc2VsZi5zdGFjaykg
Ol06CiAgICAgICAgICAgICBzZWxmLnN0YWNrLmFwcGVuZChjb2wpCiAgICAgICAgICAgICB0cnk6
CiAgICAgICAgICAgICAgICAgY29sLnNldHVwKCkKLSAgICAgICAgICAgIGV4Y2VwdCBURVNUX09V
VENPTUU6Ci0gICAgICAgICAgICAgICAgY29sLl9wcmVwYXJlX2V4YyA9IHN5cy5leGNfaW5mbygp
Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2VwdCBURVNUX09VVENPTUUg
YXMgZToKKyAgICAgICAgICAgICAgICBjb2wuX3ByZXBhcmVfZXhjID0gZSAgIyB0eXBlOiBpZ25v
cmVbYXR0ci1kZWZpbmVkXQorICAgICAgICAgICAgICAgIHJhaXNlIGUKIAogCi1kZWYgY29sbGVj
dF9vbmVfbm9kZShjb2xsZWN0b3IpOgorZGVmIGNvbGxlY3Rfb25lX25vZGUoY29sbGVjdG9yOiBD
b2xsZWN0b3IpIC0+IENvbGxlY3RSZXBvcnQ6CiAgICAgaWhvb2sgPSBjb2xsZWN0b3IuaWhvb2sK
ICAgICBpaG9vay5weXRlc3RfY29sbGVjdHN0YXJ0KGNvbGxlY3Rvcj1jb2xsZWN0b3IpCi0gICAg
cmVwID0gaWhvb2sucHl0ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVjdG9yPWNvbGxlY3Rv
cikKKyAgICByZXAgPSBpaG9vay5weXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3I9
Y29sbGVjdG9yKSAgIyB0eXBlOiBDb2xsZWN0UmVwb3J0CiAgICAgY2FsbCA9IHJlcC5fX2RpY3Rf
Xy5wb3AoImNhbGwiLCBOb25lKQogICAgIGlmIGNhbGwgYW5kIGNoZWNrX2ludGVyYWN0aXZlX2V4
Y2VwdGlvbihjYWxsLCByZXApOgogICAgICAgICBpaG9vay5weXRlc3RfZXhjZXB0aW9uX2ludGVy
YWN0KG5vZGU9Y29sbGVjdG9yLCBjYWxsPWNhbGwsIHJlcG9ydD1yZXApCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9zZXR1cG9ubHkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9zZXR1cG9ubHkucHkKaW5kZXggODEyNDBkOWQwNTVlLi40NGExMDk0YzBkMjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVwb25seS5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9zZXR1cG9ubHkucHkKQEAgLTEsMTAgKzEsMTcgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
K2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bAorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKIGltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMK
K2Zyb20gX3B5dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0IHNhZmVyZXByCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2Rl
Citmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0
ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlRGVmCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1w
b3J0IFN1YlJlcXVlc3QKIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJz
ZXIuZ2V0Z3JvdXAoImRlYnVnY29uZmlnIikKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAg
ICItLXNldHVwb25seSIsCkBAIC0yMSwzNyArMjgsMzkgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24o
cGFyc2VyKToKIAogCiBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0
ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6CitkZWYgcHl0ZXN0X2ZpeHR1
cmVfc2V0dXAoCisgICAgZml4dHVyZWRlZjogRml4dHVyZURlZltvYmplY3RdLCByZXF1ZXN0OiBT
dWJSZXF1ZXN0CispIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKICAgICB5aWVsZAot
ICAgIGNvbmZpZyA9IHJlcXVlc3QuY29uZmlnCi0gICAgaWYgY29uZmlnLm9wdGlvbi5zZXR1cHNo
b3c6CisgICAgaWYgcmVxdWVzdC5jb25maWcub3B0aW9uLnNldHVwc2hvdzoKICAgICAgICAgaWYg
aGFzYXR0cihyZXF1ZXN0LCAicGFyYW0iKToKICAgICAgICAgICAgICMgU2F2ZSB0aGUgZml4dHVy
ZSBwYXJhbWV0ZXIgc28gLl9zaG93X2ZpeHR1cmVfYWN0aW9uKCkgY2FuCiAgICAgICAgICAgICAj
IGRpc3BsYXkgaXQgbm93IGFuZCBkdXJpbmcgdGhlIHRlYXJkb3duIChpbiAuZmluaXNoKCkpLgog
ICAgICAgICAgICAgaWYgZml4dHVyZWRlZi5pZHM6CiAgICAgICAgICAgICAgICAgaWYgY2FsbGFi
bGUoZml4dHVyZWRlZi5pZHMpOgotICAgICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmLmNhY2hl
ZF9wYXJhbSA9IGZpeHR1cmVkZWYuaWRzKHJlcXVlc3QucGFyYW0pCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtID0gZml4dHVyZWRlZi5pZHMocmVxdWVzdC5wYXJhbSkKICAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmLmNhY2hlZF9wYXJhbSA9IGZp
eHR1cmVkZWYuaWRzW3JlcXVlc3QucGFyYW1faW5kZXhdCisgICAgICAgICAgICAgICAgICAgIHBh
cmFtID0gZml4dHVyZWRlZi5pZHNbcmVxdWVzdC5wYXJhbV9pbmRleF0KICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcGFyYW0gPSByZXF1ZXN0LnBh
cmFtCisgICAgICAgICAgICAgICAgcGFyYW0gPSByZXF1ZXN0LnBhcmFtCisgICAgICAgICAgICBm
aXh0dXJlZGVmLmNhY2hlZF9wYXJhbSA9IHBhcmFtICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmlu
ZWRdCiAgICAgICAgIF9zaG93X2ZpeHR1cmVfYWN0aW9uKGZpeHR1cmVkZWYsICJTRVRVUCIpCiAK
IAotZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3RfZmluYWxpemVyKGZpeHR1cmVkZWYpOgotICAgIGlm
IGhhc2F0dHIoZml4dHVyZWRlZiwgImNhY2hlZF9yZXN1bHQiKToKK2RlZiBweXRlc3RfZml4dHVy
ZV9wb3N0X2ZpbmFsaXplcihmaXh0dXJlZGVmOiBGaXh0dXJlRGVmW29iamVjdF0pIC0+IE5vbmU6
CisgICAgaWYgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0IGlzIG5vdCBOb25lOgogICAgICAgICBj
b25maWcgPSBmaXh0dXJlZGVmLl9maXh0dXJlbWFuYWdlci5jb25maWcKICAgICAgICAgaWYgY29u
ZmlnLm9wdGlvbi5zZXR1cHNob3c6CiAgICAgICAgICAgICBfc2hvd19maXh0dXJlX2FjdGlvbihm
aXh0dXJlZGVmLCAiVEVBUkRPV04iKQogICAgICAgICAgICAgaWYgaGFzYXR0cihmaXh0dXJlZGVm
LCAiY2FjaGVkX3BhcmFtIik6Ci0gICAgICAgICAgICAgICAgZGVsIGZpeHR1cmVkZWYuY2FjaGVk
X3BhcmFtCisgICAgICAgICAgICAgICAgZGVsIGZpeHR1cmVkZWYuY2FjaGVkX3BhcmFtICAjIHR5
cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAKIAotZGVmIF9zaG93X2ZpeHR1cmVfYWN0aW9uKGZp
eHR1cmVkZWYsIG1zZyk6CitkZWYgX3Nob3dfZml4dHVyZV9hY3Rpb24oZml4dHVyZWRlZjogRml4
dHVyZURlZltvYmplY3RdLCBtc2c6IHN0cikgLT4gTm9uZToKICAgICBjb25maWcgPSBmaXh0dXJl
ZGVmLl9maXh0dXJlbWFuYWdlci5jb25maWcKICAgICBjYXBtYW4gPSBjb25maWcucGx1Z2lubWFu
YWdlci5nZXRwbHVnaW4oImNhcHR1cmVtYW5hZ2VyIikKICAgICBpZiBjYXBtYW46Ci0gICAgICAg
IG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICBjYXBt
YW4uc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCiAKICAgICB0dyA9IGNvbmZpZy5nZXRfdGVybWlu
YWxfd3JpdGVyKCkKICAgICB0dy5saW5lKCkKQEAgLTcwLDE1ICs3OSwxNiBAQCBkZWYgX3Nob3df
Zml4dHVyZV9hY3Rpb24oZml4dHVyZWRlZiwgbXNnKToKICAgICAgICAgICAgIHR3LndyaXRlKCIg
KGZpeHR1cmVzIHVzZWQ6IHt9KSIuZm9ybWF0KCIsICIuam9pbihkZXBzKSkpCiAKICAgICBpZiBo
YXNhdHRyKGZpeHR1cmVkZWYsICJjYWNoZWRfcGFyYW0iKToKLSAgICAgICAgdHcud3JpdGUoIlt7
fV0iLmZvcm1hdChmaXh0dXJlZGVmLmNhY2hlZF9wYXJhbSkpCisgICAgICAgIHR3LndyaXRlKCJb
e31dIi5mb3JtYXQoc2FmZXJlcHIoZml4dHVyZWRlZi5jYWNoZWRfcGFyYW0sIG1heHNpemU9NDIp
KSkgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworICAgIHR3LmZsdXNoKCkKIAogICAg
IGlmIGNhcG1hbjoKICAgICAgICAgY2FwbWFuLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgpCi0gICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUob3V0KQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycikK
IAogCiBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X2NtZGxpbmVf
bWFpbihjb25maWcpOgorZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnOiBDb25maWcpIC0+
IE9wdGlvbmFsW1VuaW9uW2ludCwgRXhpdENvZGVdXToKICAgICBpZiBjb25maWcub3B0aW9uLnNl
dHVwb25seToKICAgICAgICAgY29uZmlnLm9wdGlvbi5zZXR1cHNob3cgPSBUcnVlCisgICAgcmV0
dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVwcGxhbi5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVwcGxhbi5weQppbmRleCAyM2Y0Zjk3ZTZk
OTcuLjliYTgxY2NhZjBhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2V0
dXBwbGFuLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVwcGxhbi5weQpAQCAt
MSw5ICsxLDE1IEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIHByaW50X2Z1bmN0aW9uCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20g
dHlwaW5nIGltcG9ydCBVbmlvbgogCiBpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29uZmln
IGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9t
IF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0ZXN0LmZp
eHR1cmVzIGltcG9ydCBGaXh0dXJlRGVmCitmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IFN1
YlJlcXVlc3QKIAogCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9h
ZGRvcHRpb24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0
Z3JvdXAoImRlYnVnY29uZmlnIikKICAgICBncm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLXNl
dHVwcGxhbiIsCkBAIC0xNSwxNSArMjEsMjAgQEAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2Vy
KToKIAogCiBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X2ZpeHR1
cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6CitkZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAo
CisgICAgZml4dHVyZWRlZjogRml4dHVyZURlZltvYmplY3RdLCByZXF1ZXN0OiBTdWJSZXF1ZXN0
CispIC0+IE9wdGlvbmFsW29iamVjdF06CiAgICAgIyBXaWxsIHJldHVybiBhIGR1bW15IGZpeHR1
cmUgaWYgdGhlIHNldHVwb25seSBvcHRpb24gaXMgcHJvdmlkZWQuCiAgICAgaWYgcmVxdWVzdC5j
b25maWcub3B0aW9uLnNldHVwcGxhbjoKLSAgICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0
ID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgIG15X2NhY2hlX2tleSA9IGZpeHR1cmVkZWYu
Y2FjaGVfa2V5KHJlcXVlc3QpCisgICAgICAgIGZpeHR1cmVkZWYuY2FjaGVkX3Jlc3VsdCA9IChO
b25lLCBteV9jYWNoZV9rZXksIE5vbmUpCiAgICAgICAgIHJldHVybiBmaXh0dXJlZGVmLmNhY2hl
ZF9yZXN1bHQKKyAgICByZXR1cm4gTm9uZQogCiAKIEBweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9
VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NtZGxp
bmVfbWFpbihjb25maWc6IENvbmZpZykgLT4gT3B0aW9uYWxbVW5pb25baW50LCBFeGl0Q29kZV1d
OgogICAgIGlmIGNvbmZpZy5vcHRpb24uc2V0dXBwbGFuOgogICAgICAgICBjb25maWcub3B0aW9u
LnNldHVwb25seSA9IFRydWUKICAgICAgICAgY29uZmlnLm9wdGlvbi5zZXR1cHNob3cgPSBUcnVl
CisgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3Nr
aXBwaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2tpcHBpbmcucHkKaW5kZXggYTM0
OGQ1NDg0Y2RiLi5jNWI0ZmYzOWU4NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3NraXBwaW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NraXBwaW5nLnB5
CkBAIC0xLDE5ICsxLDM5IEBACi0iIiIgc3VwcG9ydCBmb3Igc2tpcC94ZmFpbCBmdW5jdGlvbnMg
YW5kIG1hcmtlcnMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCisiIiJTdXBwb3J0IGZvciBza2lwL3hmYWlsIGZ1
bmN0aW9ucyBhbmQgbWFya2Vycy4iIiIKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCitpbXBv
cnQgc3lzCitpbXBvcnQgdHJhY2ViYWNrCitmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitm
cm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorCitp
bXBvcnQgYXR0cgorCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitm
cm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKIGZyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IGhvb2tpbXBsCi1mcm9tIF9weXRlc3QubWFyay5ldmFsdWF0ZSBpbXBvcnQgTWFya0V2YWx1
YXRvcgotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsLCBza2lwLCB4ZmFpbAorZnJv
bSBfcHl0ZXN0LmNvbmZpZy5hcmdwYXJzaW5nIGltcG9ydCBQYXJzZXIKK2Zyb20gX3B5dGVzdC5t
YXJrLnN0cnVjdHVyZXMgaW1wb3J0IE1hcmsKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRl
bQorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsCitmcm9tIF9weXRlc3Qub3V0Y29t
ZXMgaW1wb3J0IHNraXAKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgeGZhaWwKK2Zyb20g
X3B5dGVzdC5yZXBvcnRzIGltcG9ydCBCYXNlUmVwb3J0Citmcm9tIF9weXRlc3QucnVubmVyIGlt
cG9ydCBDYWxsSW5mbworZnJvbSBfcHl0ZXN0LnN0b3JlIGltcG9ydCBTdG9yZUtleQorCitpZiBU
WVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCiAKIAotZGVmIHB5dGVz
dF9hZGRvcHRpb24ocGFyc2VyKToKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcjogUGFyc2Vy
KSAtPiBOb25lOgogICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKICAgICBn
cm91cC5hZGRvcHRpb24oCiAgICAgICAgICItLXJ1bnhmYWlsIiwKICAgICAgICAgYWN0aW9uPSJz
dG9yZV90cnVlIiwKICAgICAgICAgZGVzdD0icnVueGZhaWwiLAogICAgICAgICBkZWZhdWx0PUZh
bHNlLAotICAgICAgICBoZWxwPSJydW4gdGVzdHMgZXZlbiBpZiB0aGV5IGFyZSBtYXJrZWQgeGZh
aWwiLAorICAgICAgICBoZWxwPSJyZXBvcnQgdGhlIHJlc3VsdHMgb2YgeGZhaWwgdGVzdHMgYXMg
aWYgdGhleSB3ZXJlIG5vdCBtYXJrZWQiLAogICAgICkKIAogICAgIHBhcnNlci5hZGRpbmkoCkBA
IC0yNSw3ICs0NSw3IEBAIGRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CiAgICAgKQogCiAK
LWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CitkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWc6IENvbmZpZykgLT4gTm9uZToKICAgICBpZiBjb25maWcub3B0aW9uLnJ1bnhmYWlsOgogICAg
ICAgICAjIHlheSBhIGhhY2sKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMzYsNyArNTYsNyBA
QCBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgogICAgICAgICBkZWYgbm9wKCphcmdzLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgbm9wLkV4Y2VwdGlvbiA9IHhm
YWlsLkV4Y2VwdGlvbgorICAgICAgICBub3AuRXhjZXB0aW9uID0geGZhaWwuRXhjZXB0aW9uICAj
IHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAgICAgICAgIHNldGF0dHIocHl0ZXN0LCAieGZh
aWwiLCBub3ApCiAKICAgICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgKQEAgLTQ3LDI0NyArNjcs
MjUwIEBAIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CiAgICAgKQogICAgIGNvbmZpZy5h
ZGRpbml2YWx1ZV9saW5lKAogICAgICAgICAibWFya2VycyIsCi0gICAgICAgICJza2lwaWYoY29u
ZGl0aW9uKTogc2tpcCB0aGUgZ2l2ZW4gdGVzdCBmdW5jdGlvbiBpZiBldmFsKGNvbmRpdGlvbikg
IgotICAgICAgICAicmVzdWx0cyBpbiBhIFRydWUgdmFsdWUuICBFdmFsdWF0aW9uIGhhcHBlbnMg
d2l0aGluIHRoZSAiCi0gICAgICAgICJtb2R1bGUgZ2xvYmFsIGNvbnRleHQuIEV4YW1wbGU6IHNr
aXBpZignc3lzLnBsYXRmb3JtID09IFwid2luMzJcIicpICIKLSAgICAgICAgInNraXBzIHRoZSB0
ZXN0IGlmIHdlIGFyZSBvbiB0aGUgd2luMzIgcGxhdGZvcm0uIHNlZSAiCi0gICAgICAgICJodHRw
Oi8vcHl0ZXN0Lm9yZy9sYXRlc3Qvc2tpcHBpbmcuaHRtbCIsCisgICAgICAgICJza2lwaWYoY29u
ZGl0aW9uLCAuLi4sICosIHJlYXNvbj0uLi4pOiAiCisgICAgICAgICJza2lwIHRoZSBnaXZlbiB0
ZXN0IGZ1bmN0aW9uIGlmIGFueSBvZiB0aGUgY29uZGl0aW9ucyBldmFsdWF0ZSB0byBUcnVlLiAi
CisgICAgICAgICJFeGFtcGxlOiBza2lwaWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicpIHNraXBz
IHRoZSB0ZXN0IGlmIHdlIGFyZSBvbiB0aGUgd2luMzIgcGxhdGZvcm0uICIKKyAgICAgICAgIlNl
ZSBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvcmVmZXJlbmNlLmh0bWwjcHl0ZXN0
LW1hcmstc2tpcGlmIiwKICAgICApCiAgICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoCiAgICAg
ICAgICJtYXJrZXJzIiwKLSAgICAgICAgInhmYWlsKGNvbmRpdGlvbiwgcmVhc29uPU5vbmUsIHJ1
bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3RyaWN0PUZhbHNlKTogIgotICAgICAgICAibWFyayB0aGUg
dGVzdCBmdW5jdGlvbiBhcyBhbiBleHBlY3RlZCBmYWlsdXJlIGlmIGV2YWwoY29uZGl0aW9uKSAi
Ci0gICAgICAgICJoYXMgYSBUcnVlIHZhbHVlLiBPcHRpb25hbGx5IHNwZWNpZnkgYSByZWFzb24g
Zm9yIGJldHRlciByZXBvcnRpbmcgIgorICAgICAgICAieGZhaWwoY29uZGl0aW9uLCAuLi4sICos
IHJlYXNvbj0uLi4sIHJ1bj1UcnVlLCByYWlzZXM9Tm9uZSwgc3RyaWN0PXhmYWlsX3N0cmljdCk6
ICIKKyAgICAgICAgIm1hcmsgdGhlIHRlc3QgZnVuY3Rpb24gYXMgYW4gZXhwZWN0ZWQgZmFpbHVy
ZSBpZiBhbnkgb2YgdGhlIGNvbmRpdGlvbnMgIgorICAgICAgICAiZXZhbHVhdGUgdG8gVHJ1ZS4g
T3B0aW9uYWxseSBzcGVjaWZ5IGEgcmVhc29uIGZvciBiZXR0ZXIgcmVwb3J0aW5nICIKICAgICAg
ICAgImFuZCBydW49RmFsc2UgaWYgeW91IGRvbid0IGV2ZW4gd2FudCB0byBleGVjdXRlIHRoZSB0
ZXN0IGZ1bmN0aW9uLiAiCiAgICAgICAgICJJZiBvbmx5IHNwZWNpZmljIGV4Y2VwdGlvbihzKSBh
cmUgZXhwZWN0ZWQsIHlvdSBjYW4gbGlzdCB0aGVtIGluICIKICAgICAgICAgInJhaXNlcywgYW5k
IGlmIHRoZSB0ZXN0IGZhaWxzIGluIG90aGVyIHdheXMsIGl0IHdpbGwgYmUgcmVwb3J0ZWQgYXMg
IgotICAgICAgICAiYSB0cnVlIGZhaWx1cmUuIFNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3Qv
c2tpcHBpbmcuaHRtbCIsCisgICAgICAgICJhIHRydWUgZmFpbHVyZS4gU2VlIGh0dHBzOi8vZG9j
cy5weXRlc3Qub3JnL2VuL3N0YWJsZS9yZWZlcmVuY2UuaHRtbCNweXRlc3QtbWFyay14ZmFpbCIs
CiAgICAgKQogCiAKLUBob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0
X3NldHVwKGl0ZW0pOgotICAgICMgQ2hlY2sgaWYgc2tpcCBvciBza2lwaWYgYXJlIHNwZWNpZmll
ZCBhcyBweXRlc3QgbWFya3MKLSAgICBpdGVtLl9za2lwcGVkX2J5X21hcmsgPSBGYWxzZQotICAg
IGV2YWxfc2tpcGlmID0gTWFya0V2YWx1YXRvcihpdGVtLCAic2tpcGlmIikKLSAgICBpZiBldmFs
X3NraXBpZi5pc3RydWUoKToKLSAgICAgICAgaXRlbS5fc2tpcHBlZF9ieV9tYXJrID0gVHJ1ZQot
ICAgICAgICBza2lwKGV2YWxfc2tpcGlmLmdldGV4cGxhbmF0aW9uKCkpCi0KLSAgICBmb3Igc2tp
cF9pbmZvIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9InNraXAiKToKLSAgICAgICAgaXRlbS5f
c2tpcHBlZF9ieV9tYXJrID0gVHJ1ZQotICAgICAgICBpZiAicmVhc29uIiBpbiBza2lwX2luZm8u
a3dhcmdzOgotICAgICAgICAgICAgc2tpcChza2lwX2luZm8ua3dhcmdzWyJyZWFzb24iXSkKLSAg
ICAgICAgZWxpZiBza2lwX2luZm8uYXJnczoKLSAgICAgICAgICAgIHNraXAoc2tpcF9pbmZvLmFy
Z3NbMF0pCitkZWYgZXZhbHVhdGVfY29uZGl0aW9uKGl0ZW06IEl0ZW0sIG1hcms6IE1hcmssIGNv
bmRpdGlvbjogb2JqZWN0KSAtPiBUdXBsZVtib29sLCBzdHJdOgorICAgICIiIkV2YWx1YXRlIGEg
c2luZ2xlIHNraXBpZi94ZmFpbCBjb25kaXRpb24uCisKKyAgICBJZiBhbiBvbGQtc3R5bGUgc3Ry
aW5nIGNvbmRpdGlvbiBpcyBnaXZlbiwgaXQgaXMgZXZhbCgpJ2QsIG90aGVyd2lzZSB0aGUKKyAg
ICBjb25kaXRpb24gaXMgYm9vbCgpJ2QuIElmIHRoaXMgZmFpbHMsIGFuIGFwcHJvcHJpYXRlbHkg
Zm9ybWF0dGVkIHB5dGVzdC5mYWlsCisgICAgaXMgcmFpc2VkLgorCisgICAgUmV0dXJucyAocmVz
dWx0LCByZWFzb24pLiBUaGUgcmVhc29uIGlzIG9ubHkgcmVsZXZhbnQgaWYgdGhlIHJlc3VsdCBp
cyBUcnVlLgorICAgICIiIgorICAgICMgU3RyaW5nIGNvbmRpdGlvbi4KKyAgICBpZiBpc2luc3Rh
bmNlKGNvbmRpdGlvbiwgc3RyKToKKyAgICAgICAgZ2xvYmFsc18gPSB7CisgICAgICAgICAgICAi
b3MiOiBvcywKKyAgICAgICAgICAgICJzeXMiOiBzeXMsCisgICAgICAgICAgICAicGxhdGZvcm0i
OiBwbGF0Zm9ybSwKKyAgICAgICAgICAgICJjb25maWciOiBpdGVtLmNvbmZpZywKKyAgICAgICAg
fQorICAgICAgICBpZiBoYXNhdHRyKGl0ZW0sICJvYmoiKToKKyAgICAgICAgICAgIGdsb2JhbHNf
LnVwZGF0ZShpdGVtLm9iai5fX2dsb2JhbHNfXykgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5l
ZF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZW5hbWUgPSAiPHt9IGNvbmRpdGlvbj4i
LmZvcm1hdChtYXJrLm5hbWUpCisgICAgICAgICAgICBjb25kaXRpb25fY29kZSA9IGNvbXBpbGUo
Y29uZGl0aW9uLCBmaWxlbmFtZSwgImV2YWwiKQorICAgICAgICAgICAgcmVzdWx0ID0gZXZhbChj
b25kaXRpb25fY29kZSwgZ2xvYmFsc18pCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBl
eGM6CisgICAgICAgICAgICBtc2dsaW5lcyA9IFsKKyAgICAgICAgICAgICAgICAiRXJyb3IgZXZh
bHVhdGluZyAlciBjb25kaXRpb24iICUgbWFyay5uYW1lLAorICAgICAgICAgICAgICAgICIgICAg
IiArIGNvbmRpdGlvbiwKKyAgICAgICAgICAgICAgICAiICAgICIgKyAiICIgKiAoZXhjLm9mZnNl
dCBvciAwKSArICJeIiwKKyAgICAgICAgICAgICAgICAiU3ludGF4RXJyb3I6IGludmFsaWQgc3lu
dGF4IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGZhaWwoIlxuIi5qb2luKG1zZ2xpbmVz
KSwgcHl0cmFjZT1GYWxzZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAg
ICAgICAgICBtc2dsaW5lcyA9IFsKKyAgICAgICAgICAgICAgICAiRXJyb3IgZXZhbHVhdGluZyAl
ciBjb25kaXRpb24iICUgbWFyay5uYW1lLAorICAgICAgICAgICAgICAgICIgICAgIiArIGNvbmRp
dGlvbiwKKyAgICAgICAgICAgICAgICAqdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0
eXBlKGV4YyksIGV4YyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBmYWlsKCJcbiIuam9p
bihtc2dsaW5lcyksIHB5dHJhY2U9RmFsc2UpCisKKyAgICAjIEJvb2xlYW4gY29uZGl0aW9uLgor
ICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGJvb2woY29uZGl0
aW9uKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIG1zZ2xp
bmVzID0gWworICAgICAgICAgICAgICAgICJFcnJvciBldmFsdWF0aW5nICVyIGNvbmRpdGlvbiBh
cyBhIGJvb2xlYW4iICUgbWFyay5uYW1lLAorICAgICAgICAgICAgICAgICp0cmFjZWJhY2suZm9y
bWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUoZXhjKSwgZXhjKSwKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIGZhaWwoIlxuIi5qb2luKG1zZ2xpbmVzKSwgcHl0cmFjZT1GYWxzZSkKKworICAgIHJl
YXNvbiA9IG1hcmsua3dhcmdzLmdldCgicmVhc29uIiwgTm9uZSkKKyAgICBpZiByZWFzb24gaXMg
Tm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb25kaXRpb24sIHN0cik6CisgICAgICAgICAg
ICByZWFzb24gPSAiY29uZGl0aW9uOiAiICsgY29uZGl0aW9uCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBza2lwKCJ1bmNvbmRpdGlvbmFsIHNraXAiKQorICAgICAgICAgICAgIyBYWFggYmV0
dGVyIGJlIGNoZWNrZWQgYXQgY29sbGVjdGlvbiB0aW1lCisgICAgICAgICAgICBtc2cgPSAoCisg
ICAgICAgICAgICAgICAgIkVycm9yIGV2YWx1YXRpbmcgJXI6ICIgJSBtYXJrLm5hbWUKKyAgICAg
ICAgICAgICAgICArICJ5b3UgbmVlZCB0byBzcGVjaWZ5IHJlYXNvbj1TVFJJTkcgd2hlbiB1c2lu
ZyBib29sZWFucyBhcyBjb25kaXRpb25zLiIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZh
aWwobXNnLCBweXRyYWNlPUZhbHNlKQogCi0gICAgaXRlbS5fZXZhbHhmYWlsID0gTWFya0V2YWx1
YXRvcihpdGVtLCAieGZhaWwiKQotICAgIGNoZWNrX3hmYWlsX25vX3J1bihpdGVtKQorICAgIHJl
dHVybiByZXN1bHQsIHJlYXNvbgogCiAKLUBob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVm
IHB5dGVzdF9weWZ1bmNfY2FsbChweWZ1bmNpdGVtKToKLSAgICBjaGVja194ZmFpbF9ub19ydW4o
cHlmdW5jaXRlbSkKLSAgICBvdXRjb21lID0geWllbGQKLSAgICBwYXNzZWQgPSBvdXRjb21lLmV4
Y2luZm8gaXMgTm9uZQotICAgIGlmIHBhc3NlZDoKLSAgICAgICAgY2hlY2tfc3RyaWN0X3hmYWls
KHB5ZnVuY2l0ZW0pCitAYXR0ci5zKHNsb3RzPVRydWUsIGZyb3plbj1UcnVlKQorY2xhc3MgU2tp
cDoKKyAgICAiIiJUaGUgcmVzdWx0IG9mIGV2YWx1YXRlX3NraXBfbWFya3MoKS4iIiIKKworICAg
IHJlYXNvbiA9IGF0dHIuaWIodHlwZT1zdHIpCisKKworZGVmIGV2YWx1YXRlX3NraXBfbWFya3Mo
aXRlbTogSXRlbSkgLT4gT3B0aW9uYWxbU2tpcF06CisgICAgIiIiRXZhbHVhdGUgc2tpcCBhbmQg
c2tpcGlmIG1hcmtzIG9uIGl0ZW0sIHJldHVybmluZyBTa2lwIGlmIHRyaWdnZXJlZC4iIiIKKyAg
ICBmb3IgbWFyayBpbiBpdGVtLml0ZXJfbWFya2VycyhuYW1lPSJza2lwaWYiKToKKyAgICAgICAg
aWYgImNvbmRpdGlvbiIgbm90IGluIG1hcmsua3dhcmdzOgorICAgICAgICAgICAgY29uZGl0aW9u
cyA9IG1hcmsuYXJncworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZGl0aW9ucyA9ICht
YXJrLmt3YXJnc1siY29uZGl0aW9uIl0sKQorCisgICAgICAgICMgVW5jb25kaXRpb25hbC4KKyAg
ICAgICAgaWYgbm90IGNvbmRpdGlvbnM6CisgICAgICAgICAgICByZWFzb24gPSBtYXJrLmt3YXJn
cy5nZXQoInJlYXNvbiIsICIiKQorICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhc29uKQorCisg
ICAgICAgICMgSWYgYW55IG9mIHRoZSBjb25kaXRpb25zIGFyZSB0cnVlLgorICAgICAgICBmb3Ig
Y29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICByZXN1bHQsIHJlYXNvbiA9IGV2
YWx1YXRlX2NvbmRpdGlvbihpdGVtLCBtYXJrLCBjb25kaXRpb24pCisgICAgICAgICAgICBpZiBy
ZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhc29uKQorCisgICAgZm9yIG1h
cmsgaW4gaXRlbS5pdGVyX21hcmtlcnMobmFtZT0ic2tpcCIpOgorICAgICAgICBpZiAicmVhc29u
IiBpbiBtYXJrLmt3YXJnczoKKyAgICAgICAgICAgIHJlYXNvbiA9IG1hcmsua3dhcmdzWyJyZWFz
b24iXQorICAgICAgICBlbGlmIG1hcmsuYXJnczoKKyAgICAgICAgICAgIHJlYXNvbiA9IG1hcmsu
YXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVhc29uID0gInVuY29uZGl0aW9u
YWwgc2tpcCIKKyAgICAgICAgcmV0dXJuIFNraXAocmVhc29uKQorCisgICAgcmV0dXJuIE5vbmUK
KworCitAYXR0ci5zKHNsb3RzPVRydWUsIGZyb3plbj1UcnVlKQorY2xhc3MgWGZhaWw6CisgICAg
IiIiVGhlIHJlc3VsdCBvZiBldmFsdWF0ZV94ZmFpbF9tYXJrcygpLiIiIgorCisgICAgcmVhc29u
ID0gYXR0ci5pYih0eXBlPXN0cikKKyAgICBydW4gPSBhdHRyLmliKHR5cGU9Ym9vbCkKKyAgICBz
dHJpY3QgPSBhdHRyLmliKHR5cGU9Ym9vbCkKKyAgICByYWlzZXMgPSBhdHRyLmliKHR5cGU9T3B0
aW9uYWxbVHVwbGVbIlR5cGVbQmFzZUV4Y2VwdGlvbl0iLCAuLi5dXSkKKworCitkZWYgZXZhbHVh
dGVfeGZhaWxfbWFya3MoaXRlbTogSXRlbSkgLT4gT3B0aW9uYWxbWGZhaWxdOgorICAgICIiIkV2
YWx1YXRlIHhmYWlsIG1hcmtzIG9uIGl0ZW0sIHJldHVybmluZyBYZmFpbCBpZiB0cmlnZ2VyZWQu
IiIiCisgICAgZm9yIG1hcmsgaW4gaXRlbS5pdGVyX21hcmtlcnMobmFtZT0ieGZhaWwiKToKKyAg
ICAgICAgcnVuID0gbWFyay5rd2FyZ3MuZ2V0KCJydW4iLCBUcnVlKQorICAgICAgICBzdHJpY3Qg
PSBtYXJrLmt3YXJncy5nZXQoInN0cmljdCIsIGl0ZW0uY29uZmlnLmdldGluaSgieGZhaWxfc3Ry
aWN0IikpCisgICAgICAgIHJhaXNlcyA9IG1hcmsua3dhcmdzLmdldCgicmFpc2VzIiwgTm9uZSkK
KyAgICAgICAgaWYgImNvbmRpdGlvbiIgbm90IGluIG1hcmsua3dhcmdzOgorICAgICAgICAgICAg
Y29uZGl0aW9ucyA9IG1hcmsuYXJncworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZGl0
aW9ucyA9IChtYXJrLmt3YXJnc1siY29uZGl0aW9uIl0sKQogCisgICAgICAgICMgVW5jb25kaXRp
b25hbC4KKyAgICAgICAgaWYgbm90IGNvbmRpdGlvbnM6CisgICAgICAgICAgICByZWFzb24gPSBt
YXJrLmt3YXJncy5nZXQoInJlYXNvbiIsICIiKQorICAgICAgICAgICAgcmV0dXJuIFhmYWlsKHJl
YXNvbiwgcnVuLCBzdHJpY3QsIHJhaXNlcykKIAotZGVmIGNoZWNrX3hmYWlsX25vX3J1bihpdGVt
KToKLSAgICAiIiJjaGVjayB4ZmFpbChydW49RmFsc2UpIiIiCi0gICAgaWYgbm90IGl0ZW0uY29u
ZmlnLm9wdGlvbi5ydW54ZmFpbDoKLSAgICAgICAgZXZhbHhmYWlsID0gaXRlbS5fZXZhbHhmYWls
Ci0gICAgICAgIGlmIGV2YWx4ZmFpbC5pc3RydWUoKToKLSAgICAgICAgICAgIGlmIG5vdCBldmFs
eGZhaWwuZ2V0KCJydW4iLCBUcnVlKToKLSAgICAgICAgICAgICAgICB4ZmFpbCgiW05PVFJVTl0g
IiArIGV2YWx4ZmFpbC5nZXRleHBsYW5hdGlvbigpKQorICAgICAgICAjIElmIGFueSBvZiB0aGUg
Y29uZGl0aW9ucyBhcmUgdHJ1ZS4KKyAgICAgICAgZm9yIGNvbmRpdGlvbiBpbiBjb25kaXRpb25z
OgorICAgICAgICAgICAgcmVzdWx0LCByZWFzb24gPSBldmFsdWF0ZV9jb25kaXRpb24oaXRlbSwg
bWFyaywgY29uZGl0aW9uKQorICAgICAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgICAg
IHJldHVybiBYZmFpbChyZWFzb24sIHJ1biwgc3RyaWN0LCByYWlzZXMpCiAKKyAgICByZXR1cm4g
Tm9uZQogCi1kZWYgY2hlY2tfc3RyaWN0X3hmYWlsKHB5ZnVuY2l0ZW0pOgotICAgICIiImNoZWNr
IHhmYWlsKHN0cmljdD1UcnVlKSBmb3IgdGhlIGdpdmVuIFBBU1NJTkcgdGVzdCIiIgotICAgIGV2
YWx4ZmFpbCA9IHB5ZnVuY2l0ZW0uX2V2YWx4ZmFpbAotICAgIGlmIGV2YWx4ZmFpbC5pc3RydWUo
KToKLSAgICAgICAgc3RyaWN0X2RlZmF1bHQgPSBweWZ1bmNpdGVtLmNvbmZpZy5nZXRpbmkoInhm
YWlsX3N0cmljdCIpCi0gICAgICAgIGlzX3N0cmljdF94ZmFpbCA9IGV2YWx4ZmFpbC5nZXQoInN0
cmljdCIsIHN0cmljdF9kZWZhdWx0KQotICAgICAgICBpZiBpc19zdHJpY3RfeGZhaWw6Ci0gICAg
ICAgICAgICBkZWwgcHlmdW5jaXRlbS5fZXZhbHhmYWlsCi0gICAgICAgICAgICBleHBsYW5hdGlv
biA9IGV2YWx4ZmFpbC5nZXRleHBsYW5hdGlvbigpCi0gICAgICAgICAgICBmYWlsKCJbWFBBU1Mo
c3RyaWN0KV0gIiArIGV4cGxhbmF0aW9uLCBweXRyYWNlPUZhbHNlKQorCisjIFdoZXRoZXIgc2tp
cHBlZCBkdWUgdG8gc2tpcCBvciBza2lwaWYgbWFya3MuCitza2lwcGVkX2J5X21hcmtfa2V5ID0g
U3RvcmVLZXlbYm9vbF0oKQorIyBTYXZlcyB0aGUgeGZhaWwgbWFyayBldmFsdWF0aW9uLiBDYW4g
YmUgcmVmcmVzaGVkIGR1cmluZyBjYWxsIGlmIE5vbmUuCit4ZmFpbGVkX2tleSA9IFN0b3JlS2V5
W09wdGlvbmFsW1hmYWlsXV0oKQordW5leHBlY3RlZHN1Y2Nlc3Nfa2V5ID0gU3RvcmVLZXlbc3Ry
XSgpCisKKworQGhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCitkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0
dXAoaXRlbTogSXRlbSkgLT4gTm9uZToKKyAgICBza2lwcGVkID0gZXZhbHVhdGVfc2tpcF9tYXJr
cyhpdGVtKQorICAgIGl0ZW0uX3N0b3JlW3NraXBwZWRfYnlfbWFya19rZXldID0gc2tpcHBlZCBp
cyBub3QgTm9uZQorICAgIGlmIHNraXBwZWQ6CisgICAgICAgIHNraXAoc2tpcHBlZC5yZWFzb24p
CisKKyAgICBpdGVtLl9zdG9yZVt4ZmFpbGVkX2tleV0gPSB4ZmFpbGVkID0gZXZhbHVhdGVfeGZh
aWxfbWFya3MoaXRlbSkKKyAgICBpZiB4ZmFpbGVkIGFuZCBub3QgaXRlbS5jb25maWcub3B0aW9u
LnJ1bnhmYWlsIGFuZCBub3QgeGZhaWxlZC5ydW46CisgICAgICAgIHhmYWlsKCJbTk9UUlVOXSAi
ICsgeGZhaWxlZC5yZWFzb24pCiAKIAogQGhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYg
cHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxsKToKK2RlZiBweXRlc3RfcnVudGVz
dF9jYWxsKGl0ZW06IEl0ZW0pIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKKyAgICB4
ZmFpbGVkID0gaXRlbS5fc3RvcmUuZ2V0KHhmYWlsZWRfa2V5LCBOb25lKQorICAgIGlmIHhmYWls
ZWQgaXMgTm9uZToKKyAgICAgICAgaXRlbS5fc3RvcmVbeGZhaWxlZF9rZXldID0geGZhaWxlZCA9
IGV2YWx1YXRlX3hmYWlsX21hcmtzKGl0ZW0pCisKKyAgICBpZiB4ZmFpbGVkIGFuZCBub3QgaXRl
bS5jb25maWcub3B0aW9uLnJ1bnhmYWlsIGFuZCBub3QgeGZhaWxlZC5ydW46CisgICAgICAgIHhm
YWlsKCJbTk9UUlVOXSAiICsgeGZhaWxlZC5yZWFzb24pCisKKyAgICB5aWVsZAorCisgICAgIyBU
aGUgdGVzdCBydW4gbWF5IGhhdmUgYWRkZWQgYW4geGZhaWwgbWFyayBkeW5hbWljYWxseS4KKyAg
ICB4ZmFpbGVkID0gaXRlbS5fc3RvcmUuZ2V0KHhmYWlsZWRfa2V5LCBOb25lKQorICAgIGlmIHhm
YWlsZWQgaXMgTm9uZToKKyAgICAgICAgaXRlbS5fc3RvcmVbeGZhaWxlZF9rZXldID0geGZhaWxl
ZCA9IGV2YWx1YXRlX3hmYWlsX21hcmtzKGl0ZW0pCisKKworQGhvb2tpbXBsKGhvb2t3cmFwcGVy
PVRydWUpCitkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtOiBJdGVtLCBjYWxsOiBD
YWxsSW5mb1tOb25lXSk6CiAgICAgb3V0Y29tZSA9IHlpZWxkCiAgICAgcmVwID0gb3V0Y29tZS5n
ZXRfcmVzdWx0KCkKLSAgICBldmFseGZhaWwgPSBnZXRhdHRyKGl0ZW0sICJfZXZhbHhmYWlsIiwg
Tm9uZSkKLSAgICAjIHVuaXR0dGVzdCBzcGVjaWFsIGNhc2UsIHNlZSBzZXR0aW5nIG9mIF91bmV4
cGVjdGVkc3VjY2VzcwotICAgIGlmIGhhc2F0dHIoaXRlbSwgIl91bmV4cGVjdGVkc3VjY2VzcyIp
IGFuZCByZXAud2hlbiA9PSAiY2FsbCI6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5jb21wYXQgaW1w
b3J0IF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWlsdXJlCi0KLSAgICAgICAg
aWYgaXRlbS5fdW5leHBlY3RlZHN1Y2Nlc3M6Ci0gICAgICAgICAgICByZXAubG9uZ3JlcHIgPSAi
VW5leHBlY3RlZCBzdWNjZXNzOiB7fSIuZm9ybWF0KGl0ZW0uX3VuZXhwZWN0ZWRzdWNjZXNzKQor
ICAgIHhmYWlsZWQgPSBpdGVtLl9zdG9yZS5nZXQoeGZhaWxlZF9rZXksIE5vbmUpCisgICAgIyB1
bml0dGVzdCBzcGVjaWFsIGNhc2UsIHNlZSBzZXR0aW5nIG9mIHVuZXhwZWN0ZWRzdWNjZXNzX2tl
eQorICAgIGlmIHVuZXhwZWN0ZWRzdWNjZXNzX2tleSBpbiBpdGVtLl9zdG9yZSBhbmQgcmVwLndo
ZW4gPT0gImNhbGwiOgorICAgICAgICByZWFzb24gPSBpdGVtLl9zdG9yZVt1bmV4cGVjdGVkc3Vj
Y2Vzc19rZXldCisgICAgICAgIGlmIHJlYXNvbjoKKyAgICAgICAgICAgIHJlcC5sb25ncmVwciA9
ICJVbmV4cGVjdGVkIHN1Y2Nlc3M6IHt9Ii5mb3JtYXQocmVhc29uKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgcmVwLmxvbmdyZXByID0gIlVuZXhwZWN0ZWQgc3VjY2VzcyIKLSAgICAgICAg
aWYgX2lzX3VuaXR0ZXN0X3VuZXhwZWN0ZWRfc3VjY2Vzc19hX2ZhaWx1cmUoKToKLSAgICAgICAg
ICAgIHJlcC5vdXRjb21lID0gImZhaWxlZCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJl
cC5vdXRjb21lID0gInBhc3NlZCIKLSAgICAgICAgICAgIHJlcC53YXN4ZmFpbCA9IHJlcC5sb25n
cmVwcgorICAgICAgICByZXAub3V0Y29tZSA9ICJmYWlsZWQiCiAgICAgZWxpZiBpdGVtLmNvbmZp
Zy5vcHRpb24ucnVueGZhaWw6Ci0gICAgICAgIHBhc3MgICMgZG9uJ3QgaW50ZXJlZmVyZQotICAg
IGVsaWYgY2FsbC5leGNpbmZvIGFuZCBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZSh4ZmFpbC5F
eGNlcHRpb24pOgorICAgICAgICBwYXNzICAjIGRvbid0IGludGVyZmVyZQorICAgIGVsaWYgY2Fs
bC5leGNpbmZvIGFuZCBpc2luc3RhbmNlKGNhbGwuZXhjaW5mby52YWx1ZSwgeGZhaWwuRXhjZXB0
aW9uKToKKyAgICAgICAgYXNzZXJ0IGNhbGwuZXhjaW5mby52YWx1ZS5tc2cgaXMgbm90IE5vbmUK
ICAgICAgICAgcmVwLndhc3hmYWlsID0gInJlYXNvbjogIiArIGNhbGwuZXhjaW5mby52YWx1ZS5t
c2cKICAgICAgICAgcmVwLm91dGNvbWUgPSAic2tpcHBlZCIKLSAgICBlbGlmIGV2YWx4ZmFpbCBh
bmQgbm90IHJlcC5za2lwcGVkIGFuZCBldmFseGZhaWwud2FzdmFsaWQoKSBhbmQgZXZhbHhmYWls
LmlzdHJ1ZSgpOgorICAgIGVsaWYgbm90IHJlcC5za2lwcGVkIGFuZCB4ZmFpbGVkOgogICAgICAg
ICBpZiBjYWxsLmV4Y2luZm86Ci0gICAgICAgICAgICBpZiBldmFseGZhaWwuaW52YWxpZHJhaXNl
KGNhbGwuZXhjaW5mby52YWx1ZSk6CisgICAgICAgICAgICByYWlzZXMgPSB4ZmFpbGVkLnJhaXNl
cworICAgICAgICAgICAgaWYgcmFpc2VzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShj
YWxsLmV4Y2luZm8udmFsdWUsIHJhaXNlcyk6CiAgICAgICAgICAgICAgICAgcmVwLm91dGNvbWUg
PSAiZmFpbGVkIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXAub3V0Y29t
ZSA9ICJza2lwcGVkIgotICAgICAgICAgICAgICAgIHJlcC53YXN4ZmFpbCA9IGV2YWx4ZmFpbC5n
ZXRleHBsYW5hdGlvbigpCisgICAgICAgICAgICAgICAgcmVwLndhc3hmYWlsID0geGZhaWxlZC5y
ZWFzb24KICAgICAgICAgZWxpZiBjYWxsLndoZW4gPT0gImNhbGwiOgotICAgICAgICAgICAgc3Ry
aWN0X2RlZmF1bHQgPSBpdGVtLmNvbmZpZy5nZXRpbmkoInhmYWlsX3N0cmljdCIpCi0gICAgICAg
ICAgICBpc19zdHJpY3RfeGZhaWwgPSBldmFseGZhaWwuZ2V0KCJzdHJpY3QiLCBzdHJpY3RfZGVm
YXVsdCkKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gZXZhbHhmYWlsLmdldGV4cGxhbmF0aW9u
KCkKLSAgICAgICAgICAgIGlmIGlzX3N0cmljdF94ZmFpbDoKKyAgICAgICAgICAgIGlmIHhmYWls
ZWQuc3RyaWN0OgogICAgICAgICAgICAgICAgIHJlcC5vdXRjb21lID0gImZhaWxlZCIKLSAgICAg
ICAgICAgICAgICByZXAubG9uZ3JlcHIgPSAiW1hQQVNTKHN0cmljdCldIHt9Ii5mb3JtYXQoZXhw
bGFuYXRpb24pCisgICAgICAgICAgICAgICAgcmVwLmxvbmdyZXByID0gIltYUEFTUyhzdHJpY3Qp
XSAiICsgeGZhaWxlZC5yZWFzb24KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAg
cmVwLm91dGNvbWUgPSAicGFzc2VkIgotICAgICAgICAgICAgICAgIHJlcC53YXN4ZmFpbCA9IGV4
cGxhbmF0aW9uCi0gICAgZWxpZiBnZXRhdHRyKGl0ZW0sICJfc2tpcHBlZF9ieV9tYXJrIiwgRmFs
c2UpIGFuZCByZXAuc2tpcHBlZCBhbmQgdHlwZSgKLSAgICAgICAgcmVwLmxvbmdyZXByCi0gICAg
KSBpcyB0dXBsZToKLSAgICAgICAgIyBza2lwcGVkIGJ5IG1hcmsuc2tpcGlmOyBjaGFuZ2UgdGhl
IGxvY2F0aW9uIG9mIHRoZSBmYWlsdXJlCisgICAgICAgICAgICAgICAgcmVwLndhc3hmYWlsID0g
eGZhaWxlZC5yZWFzb24KKworICAgIGlmICgKKyAgICAgICAgaXRlbS5fc3RvcmUuZ2V0KHNraXBw
ZWRfYnlfbWFya19rZXksIFRydWUpCisgICAgICAgIGFuZCByZXAuc2tpcHBlZAorICAgICAgICBh
bmQgdHlwZShyZXAubG9uZ3JlcHIpIGlzIHR1cGxlCisgICAgKToKKyAgICAgICAgIyBTa2lwcGVk
IGJ5IG1hcmsuc2tpcGlmOyBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBmYWlsdXJlCiAgICAg
ICAgICMgdG8gcG9pbnQgdG8gdGhlIGl0ZW0gZGVmaW5pdGlvbiwgb3RoZXJ3aXNlIGl0IHdpbGwg
ZGlzcGxheQotICAgICAgICAjIHRoZSBsb2NhdGlvbiBvZiB3aGVyZSB0aGUgc2tpcCBleGNlcHRp
b24gd2FzIHJhaXNlZCB3aXRoaW4gcHl0ZXN0Ci0gICAgICAgIGZpbGVuYW1lLCBsaW5lLCByZWFz
b24gPSByZXAubG9uZ3JlcHIKLSAgICAgICAgZmlsZW5hbWUsIGxpbmUgPSBpdGVtLmxvY2F0aW9u
WzoyXQotICAgICAgICByZXAubG9uZ3JlcHIgPSBmaWxlbmFtZSwgbGluZSwgcmVhc29uCi0KKyAg
ICAgICAgIyB0aGUgbG9jYXRpb24gb2Ygd2hlcmUgdGhlIHNraXAgZXhjZXB0aW9uIHdhcyByYWlz
ZWQgd2l0aGluIHB5dGVzdC4KKyAgICAgICAgXywgXywgcmVhc29uID0gcmVwLmxvbmdyZXByCisg
ICAgICAgIGZpbGVuYW1lLCBsaW5lID0gaXRlbS5yZXBvcnRpbmZvKClbOjJdCisgICAgICAgIGFz
c2VydCBsaW5lIGlzIG5vdCBOb25lCisgICAgICAgIHJlcC5sb25ncmVwciA9IHN0cihmaWxlbmFt
ZSksIGxpbmUgKyAxLCByZWFzb24KIAotIyBjYWxsZWQgYnkgdGVybWluYWxyZXBvcnRlciBwcm9n
cmVzcyByZXBvcnRpbmcKIAotCi1kZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6
CitkZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydDogQmFzZVJlcG9ydCkgLT4gT3B0
aW9uYWxbVHVwbGVbc3RyLCBzdHIsIHN0cl1dOgogICAgIGlmIGhhc2F0dHIocmVwb3J0LCAid2Fz
eGZhaWwiKToKICAgICAgICAgaWYgcmVwb3J0LnNraXBwZWQ6Ci0gICAgICAgICAgICByZXR1cm4g
InhmYWlsZWQiLCAieCIsICJ4ZmFpbCIKKyAgICAgICAgICAgIHJldHVybiAieGZhaWxlZCIsICJ4
IiwgIlhGQUlMIgogICAgICAgICBlbGlmIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAgICAgICByZXR1
cm4gInhwYXNzZWQiLCAiWCIsICgiWFBBU1MiLCB7InllbGxvdyI6IFRydWV9KQotCi0KLSMgY2Fs
bGVkIGJ5IHRoZSB0ZXJtaW5hbHJlcG9ydGVyIGluc3RhbmNlL3BsdWdpbgotCi0KLWRlZiBweXRl
c3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5hbHJlcG9ydGVyKToKLSAgICB0ciA9IHRlcm1pbmFs
cmVwb3J0ZXIKLSAgICBpZiBub3QgdHIucmVwb3J0Y2hhcnM6Ci0gICAgICAgICMgZm9yIG5hbWUg
aW4gInhmYWlsZWQgc2tpcHBlZCBmYWlsZWQgeHBhc3NlZCI6Ci0gICAgICAgICMgICAgaWYgbm90
IHRyLnN0YXRzLmdldChuYW1lLCAwKToKLSAgICAgICAgIyAgICAgICAgdHIud3JpdGVfbGluZSgi
SElOVDogdXNlICctcicgb3B0aW9uIHRvIHNlZSBleHRyYSAiCi0gICAgICAgICMgICAgICAgICAg
ICAgICJzdW1tYXJ5IGluZm8gYWJvdXQgdGVzdHMiKQotICAgICAgICAjICAgICAgICBicmVhawot
ICAgICAgICByZXR1cm4KLQotICAgIGxpbmVzID0gW10KLSAgICBmb3IgY2hhciBpbiB0ci5yZXBv
cnRjaGFyczoKLSAgICAgICAgYWN0aW9uID0gUkVQT1JUQ0hBUl9BQ1RJT05TLmdldChjaGFyLCBs
YW1iZGEgdHIsIGxpbmVzOiBOb25lKQotICAgICAgICBhY3Rpb24odGVybWluYWxyZXBvcnRlciwg
bGluZXMpCi0KLSAgICBpZiBsaW5lczoKLSAgICAgICAgdHIuX3R3LnNlcCgiPSIsICJzaG9ydCB0
ZXN0IHN1bW1hcnkgaW5mbyIpCi0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAg
ICAgdHIuX3R3LmxpbmUobGluZSkKLQotCi1kZWYgc2hvd19zaW1wbGUodGVybWluYWxyZXBvcnRl
ciwgbGluZXMsIHN0YXQsIGZvcm1hdCk6Ci0gICAgZmFpbGVkID0gdGVybWluYWxyZXBvcnRlci5z
dGF0cy5nZXQoc3RhdCkKLSAgICBpZiBmYWlsZWQ6Ci0gICAgICAgIGZvciByZXAgaW4gZmFpbGVk
OgotICAgICAgICAgICAgcG9zID0gdGVybWluYWxyZXBvcnRlci5jb25maWcuY3dkX3JlbGF0aXZl
X25vZGVpZChyZXAubm9kZWlkKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKGZvcm1hdCAlIChw
b3MsKSkKLQotCi1kZWYgc2hvd194ZmFpbGVkKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzKToKLSAg
ICB4ZmFpbGVkID0gdGVybWluYWxyZXBvcnRlci5zdGF0cy5nZXQoInhmYWlsZWQiKQotICAgIGlm
IHhmYWlsZWQ6Ci0gICAgICAgIGZvciByZXAgaW4geGZhaWxlZDoKLSAgICAgICAgICAgIHBvcyA9
IHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLmN3ZF9yZWxhdGl2ZV9ub2RlaWQocmVwLm5vZGVpZCkK
LSAgICAgICAgICAgIHJlYXNvbiA9IHJlcC53YXN4ZmFpbAotICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCJYRkFJTCAlcyIgJSAocG9zLCkpCi0gICAgICAgICAgICBpZiByZWFzb246Ci0gICAgICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCIgICIgKyBzdHIocmVhc29uKSkKLQotCi1kZWYgc2hvd194
cGFzc2VkKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzKToKLSAgICB4cGFzc2VkID0gdGVybWluYWxy
ZXBvcnRlci5zdGF0cy5nZXQoInhwYXNzZWQiKQotICAgIGlmIHhwYXNzZWQ6Ci0gICAgICAgIGZv
ciByZXAgaW4geHBhc3NlZDoKLSAgICAgICAgICAgIHBvcyA9IHRlcm1pbmFscmVwb3J0ZXIuY29u
ZmlnLmN3ZF9yZWxhdGl2ZV9ub2RlaWQocmVwLm5vZGVpZCkKLSAgICAgICAgICAgIHJlYXNvbiA9
IHJlcC53YXN4ZmFpbAotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJYUEFTUyAlcyAlcyIgJSAo
cG9zLCByZWFzb24pKQotCi0KLWRlZiBmb2xkZWRfc2tpcHMoc2tpcHBlZCk6Ci0gICAgZCA9IHt9
Ci0gICAgZm9yIGV2ZW50IGluIHNraXBwZWQ6Ci0gICAgICAgIGtleSA9IGV2ZW50LmxvbmdyZXBy
Ci0gICAgICAgIGFzc2VydCBsZW4oa2V5KSA9PSAzLCAoZXZlbnQsIGtleSkKLSAgICAgICAga2V5
d29yZHMgPSBnZXRhdHRyKGV2ZW50LCAia2V5d29yZHMiLCB7fSkKLSAgICAgICAgIyBmb2xkaW5n
IHJlcG9ydHMgd2l0aCBnbG9iYWwgcHl0ZXN0bWFyayB2YXJpYWJsZQotICAgICAgICAjIHRoaXMg
aXMgd29ya2Fyb3VuZCwgYmVjYXVzZSBmb3Igbm93IHdlIGNhbm5vdCBpZGVudGlmeSB0aGUgc2Nv
cGUgb2YgYSBza2lwIG1hcmtlcgotICAgICAgICAjIFRPRE86IHJldmlzaXQgYWZ0ZXIgbWFya3Mg
c2NvcGUgd291bGQgYmUgZml4ZWQKLSAgICAgICAgd2hlbiA9IGdldGF0dHIoZXZlbnQsICJ3aGVu
IiwgTm9uZSkKLSAgICAgICAgaWYgd2hlbiA9PSAic2V0dXAiIGFuZCAic2tpcCIgaW4ga2V5d29y
ZHMgYW5kICJweXRlc3RtYXJrIiBub3QgaW4ga2V5d29yZHM6Ci0gICAgICAgICAgICBrZXkgPSAo
a2V5WzBdLCBOb25lLCBrZXlbMl0pCi0gICAgICAgIGQuc2V0ZGVmYXVsdChrZXksIFtdKS5hcHBl
bmQoZXZlbnQpCi0gICAgdmFsdWVzID0gW10KLSAgICBmb3Iga2V5LCBldmVudHMgaW4gZC5pdGVt
cygpOgotICAgICAgICB2YWx1ZXMuYXBwZW5kKChsZW4oZXZlbnRzKSwpICsga2V5KQotICAgIHJl
dHVybiB2YWx1ZXMKLQotCi1kZWYgc2hvd19za2lwcGVkKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVz
KToKLSAgICB0ciA9IHRlcm1pbmFscmVwb3J0ZXIKLSAgICBza2lwcGVkID0gdHIuc3RhdHMuZ2V0
KCJza2lwcGVkIiwgW10pCi0gICAgaWYgc2tpcHBlZDoKLSAgICAgICAgIyBpZiBub3QgdHIuaGFz
b3B0KCdza2lwcGVkJyk6Ci0gICAgICAgICMgICAgdHIud3JpdGVfbGluZSgKLSAgICAgICAgIyAg
ICAgICAgIiVkIHNraXBwZWQgdGVzdHMsIHNwZWNpZnkgLXJzIGZvciBtb3JlIGluZm8iICUKLSAg
ICAgICAgIyAgICAgICAgbGVuKHNraXBwZWQpKQotICAgICAgICAjICAgIHJldHVybgotICAgICAg
ICBmc2tpcHMgPSBmb2xkZWRfc2tpcHMoc2tpcHBlZCkKLSAgICAgICAgaWYgZnNraXBzOgotICAg
ICAgICAgICAgIyB0ci53cml0ZV9zZXAoIl8iLCAic2tpcHBlZCB0ZXN0IHN1bW1hcnkiKQotICAg
ICAgICAgICAgZm9yIG51bSwgZnNwYXRoLCBsaW5lbm8sIHJlYXNvbiBpbiBmc2tpcHM6Ci0gICAg
ICAgICAgICAgICAgaWYgcmVhc29uLnN0YXJ0c3dpdGgoIlNraXBwZWQ6ICIpOgotICAgICAgICAg
ICAgICAgICAgICByZWFzb24gPSByZWFzb25bOTpdCi0gICAgICAgICAgICAgICAgaWYgbGluZW5v
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiU0tJUCBbJWRdICVzOiVkOiAlcyIgJSAobnVtLCBmc3BhdGgsIGxp
bmVubyArIDEsIHJlYXNvbikKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiU0tJUCBbJWRdICVzOiAl
cyIgJSAobnVtLCBmc3BhdGgsIHJlYXNvbikpCi0KLQotZGVmIHNob3dlcihzdGF0LCBmb3JtYXQp
OgotCi0gICAgZGVmIHNob3dfKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzKToKLSAgICAgICAgcmV0
dXJuIHNob3dfc2ltcGxlKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzLCBzdGF0LCBmb3JtYXQpCi0K
LSAgICByZXR1cm4gc2hvd18KLQotCi1SRVBPUlRDSEFSX0FDVElPTlMgPSB7Ci0gICAgIngiOiBz
aG93X3hmYWlsZWQsCi0gICAgIlgiOiBzaG93X3hwYXNzZWQsCi0gICAgImYiOiBzaG93ZXIoImZh
aWxlZCIsICJGQUlMICVzIiksCi0gICAgIkYiOiBzaG93ZXIoImZhaWxlZCIsICJGQUlMICVzIiks
Ci0gICAgInMiOiBzaG93X3NraXBwZWQsCi0gICAgIlMiOiBzaG93X3NraXBwZWQsCi0gICAgInAi
OiBzaG93ZXIoInBhc3NlZCIsICJQQVNTRUQgJXMiKSwKLSAgICAiRSI6IHNob3dlcigiZXJyb3Ii
LCAiRVJST1IgJXMiKSwKLX0KKyAgICAgICAgICAgIHJldHVybiAieHBhc3NlZCIsICJYIiwgIlhQ
QVNTIgorICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9zdGVwd2lzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3N0ZXB3aXNlLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODVjYmUyOTMxNTE4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc3RlcHdpc2UucHkKQEAgLTAsMCAr
MSwxMjIgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0
aW9uYWwKKworaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0IGltcG9ydCBub2RlcworZnJvbSBf
cHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNp
bmcgaW1wb3J0IFBhcnNlcgorZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zyb20g
X3B5dGVzdC5yZXBvcnRzIGltcG9ydCBUZXN0UmVwb3J0CisKKworZGVmIHB5dGVzdF9hZGRvcHRp
b24ocGFyc2VyOiBQYXJzZXIpIC0+IE5vbmU6CisgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAo
ImdlbmVyYWwiKQorICAgIGdyb3VwLmFkZG9wdGlvbigKKyAgICAgICAgIi0tc3ciLAorICAgICAg
ICAiLS1zdGVwd2lzZSIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGRl
c3Q9InN0ZXB3aXNlIiwKKyAgICAgICAgaGVscD0iZXhpdCBvbiB0ZXN0IGZhaWx1cmUgYW5kIGNv
bnRpbnVlIGZyb20gbGFzdCBmYWlsaW5nIHRlc3QgbmV4dCB0aW1lIiwKKyAgICApCisgICAgZ3Jv
dXAuYWRkb3B0aW9uKAorICAgICAgICAiLS1zdGVwd2lzZS1za2lwIiwKKyAgICAgICAgYWN0aW9u
PSJzdG9yZV90cnVlIiwKKyAgICAgICAgZGVzdD0ic3RlcHdpc2Vfc2tpcCIsCisgICAgICAgIGhl
bHA9Imlnbm9yZSB0aGUgZmlyc3QgZmFpbGluZyB0ZXN0IGJ1dCBzdG9wIG9uIHRoZSBuZXh0IGZh
aWxpbmcgdGVzdCIsCisgICAgKQorCisKK0BweXRlc3QuaG9va2ltcGwKK2RlZiBweXRlc3RfY29u
ZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgorICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2Vy
LnJlZ2lzdGVyKFN0ZXB3aXNlUGx1Z2luKGNvbmZpZyksICJzdGVwd2lzZXBsdWdpbiIpCisKKwor
Y2xhc3MgU3RlcHdpc2VQbHVnaW46CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogQ29u
ZmlnKSAtPiBOb25lOgorICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZworICAgICAgICBzZWxm
LmFjdGl2ZSA9IGNvbmZpZy5nZXR2YWx1ZSgic3RlcHdpc2UiKQorICAgICAgICBzZWxmLnNlc3Np
b24gPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW1Nlc3Npb25dCisgICAgICAgIHNlbGYucmVwb3J0
X3N0YXR1cyA9ICIiCisKKyAgICAgICAgaWYgc2VsZi5hY3RpdmU6CisgICAgICAgICAgICBhc3Nl
cnQgY29uZmlnLmNhY2hlIGlzIG5vdCBOb25lCisgICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWQg
PSBjb25maWcuY2FjaGUuZ2V0KCJjYWNoZS9zdGVwd2lzZSIsIE5vbmUpCisgICAgICAgICAgICBz
ZWxmLnNraXAgPSBjb25maWcuZ2V0dmFsdWUoInN0ZXB3aXNlX3NraXAiKQorCisgICAgZGVmIHB5
dGVzdF9zZXNzaW9uc3RhcnQoc2VsZiwgc2Vzc2lvbjogU2Vzc2lvbikgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgorCisgICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21v
ZGlmeWl0ZW1zKAorICAgICAgICBzZWxmLCBzZXNzaW9uOiBTZXNzaW9uLCBjb25maWc6IENvbmZp
ZywgaXRlbXM6IExpc3Rbbm9kZXMuSXRlbV0KKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIG5v
dCBzZWxmLmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5s
YXN0ZmFpbGVkOgorICAgICAgICAgICAgc2VsZi5yZXBvcnRfc3RhdHVzID0gIm5vIHByZXZpb3Vz
bHkgZmFpbGVkIHRlc3RzLCBub3Qgc2tpcHBpbmcuIgorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgYWxyZWFkeV9wYXNzZWQgPSBbXQorICAgICAgICBmb3VuZCA9IEZhbHNlCisKKyAgICAg
ICAgIyBNYWtlIGEgbGlzdCBvZiBhbGwgdGVzdHMgdGhhdCBoYXZlIGJlZW4gcnVuIGJlZm9yZSB0
aGUgbGFzdCBmYWlsaW5nIG9uZS4KKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAg
ICAgICBpZiBpdGVtLm5vZGVpZCA9PSBzZWxmLmxhc3RmYWlsZWQ6CisgICAgICAgICAgICAgICAg
Zm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgYWxyZWFkeV9wYXNzZWQuYXBwZW5kKGl0ZW0pCisKKyAgICAgICAgIyBJ
ZiB0aGUgcHJldmlvdXNseSBmYWlsZWQgdGVzdCB3YXMgbm90IGZvdW5kIGFtb25nIHRoZSB0ZXN0
IGl0ZW1zLAorICAgICAgICAjIGRvIG5vdCBza2lwIGFueSB0ZXN0cy4KKyAgICAgICAgaWYgbm90
IGZvdW5kOgorICAgICAgICAgICAgc2VsZi5yZXBvcnRfc3RhdHVzID0gInByZXZpb3VzbHkgZmFp
bGVkIHRlc3Qgbm90IGZvdW5kLCBub3Qgc2tpcHBpbmcuIgorICAgICAgICAgICAgYWxyZWFkeV9w
YXNzZWQgPSBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5yZXBvcnRfc3RhdHVz
ID0gInNraXBwaW5nIHt9IGFscmVhZHkgcGFzc2VkIGl0ZW1zLiIuZm9ybWF0KAorICAgICAgICAg
ICAgICAgIGxlbihhbHJlYWR5X3Bhc3NlZCkKKyAgICAgICAgICAgICkKKworICAgICAgICBmb3Ig
aXRlbSBpbiBhbHJlYWR5X3Bhc3NlZDoKKyAgICAgICAgICAgIGl0ZW1zLnJlbW92ZShpdGVtKQor
CisgICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9kZXNlbGVjdGVkKGl0ZW1zPWFscmVhZHlfcGFz
c2VkKQorCisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQ6IFRl
c3RSZXBvcnQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdCBzZWxmLmFjdGl2ZToKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIGlmIHJlcG9ydC5mYWlsZWQ6CisgICAgICAgICAgICBpZiBz
ZWxmLnNraXA6CisgICAgICAgICAgICAgICAgIyBSZW1vdmUgdGVzdCBmcm9tIHRoZSBmYWlsZWQg
b25lcyAoaWYgaXQgZXhpc3RzKSBhbmQgdW5zZXQgdGhlIHNraXAgb3B0aW9uCisgICAgICAgICAg
ICAgICAgIyB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyB0ZXN0cyB3aWxsIG5vdCBiZSBza2lw
cGVkLgorICAgICAgICAgICAgICAgIGlmIHJlcG9ydC5ub2RlaWQgPT0gc2VsZi5sYXN0ZmFpbGVk
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWQgPSBOb25lCisKKyAgICAgICAg
ICAgICAgICBzZWxmLnNraXAgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAjIE1hcmsgdGVzdCBhcyB0aGUgbGFzdCBmYWlsaW5nIGFuZCBpbnRlcnJ1cHQgdGhlIHRl
c3Qgc2Vzc2lvbi4KKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWQgPSByZXBvcnQubm9k
ZWlkCisgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2Vzc2lvbiBpcyBub3QgTm9uZQorICAg
ICAgICAgICAgICAgIHNlbGYuc2Vzc2lvbi5zaG91bGRzdG9wID0gKAorICAgICAgICAgICAgICAg
ICAgICAiVGVzdCBmYWlsZWQsIGNvbnRpbnVpbmcgZnJvbSB0aGlzIHRlc3QgbmV4dCBydW4uIgor
ICAgICAgICAgICAgICAgICkKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiB0aGUg
dGVzdCB3YXMgYWN0dWFsbHkgcnVuIGFuZCBkaWQgcGFzcy4KKyAgICAgICAgICAgIGlmIHJlcG9y
dC53aGVuID09ICJjYWxsIjoKKyAgICAgICAgICAgICAgICAjIFJlbW92ZSB0ZXN0IGZyb20gdGhl
IGZhaWxlZCBvbmVzLCBpZiBleGlzdHMuCisgICAgICAgICAgICAgICAgaWYgcmVwb3J0Lm5vZGVp
ZCA9PSBzZWxmLmxhc3RmYWlsZWQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubGFzdGZhaWxl
ZCA9IE5vbmUKKworICAgIGRlZiBweXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2goc2VsZikg
LT4gT3B0aW9uYWxbc3RyXToKKyAgICAgICAgaWYgc2VsZi5hY3RpdmUgYW5kIHNlbGYuY29uZmln
LmdldG9wdGlvbigidmVyYm9zZSIpID49IDAgYW5kIHNlbGYucmVwb3J0X3N0YXR1czoKKyAgICAg
ICAgICAgIHJldHVybiAic3RlcHdpc2U6ICVzIiAlIHNlbGYucmVwb3J0X3N0YXR1cworICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlbGYsIHNlc3Np
b246IFNlc3Npb24pIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBzZWxmLmNvbmZpZy5jYWNoZSBp
cyBub3QgTm9uZQorICAgICAgICBpZiBzZWxmLmFjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuY29u
ZmlnLmNhY2hlLnNldCgiY2FjaGUvc3RlcHdpc2UiLCBzZWxmLmxhc3RmYWlsZWQpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAjIENsZWFyIHRoZSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMgaWYg
dGhlIHBsdWdpbiBpcyBub3QgYWN0aXZlLgorICAgICAgICAgICAgc2VsZi5jb25maWcuY2FjaGUu
c2V0KCJjYWNoZS9zdGVwd2lzZSIsIFtdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3Qvc3RvcmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9zdG9yZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiZjNjNTg4ZjM2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3N0b3JlLnB5CkBAIC0wLDAgKzEsMTI1
IEBACitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZnJv
bSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmljCitmcm9tIHR5
cGluZyBpbXBvcnQgVHlwZVZhcgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCisKKworX19hbGxf
XyA9IFsiU3RvcmUiLCAiU3RvcmVLZXkiXQorCisKK1QgPSBUeXBlVmFyKCJUIikKK0QgPSBUeXBl
VmFyKCJEIikKKworCitjbGFzcyBTdG9yZUtleShHZW5lcmljW1RdKToKKyAgICAiIiJTdG9yZUtl
eSBpcyBhbiBvYmplY3QgdXNlZCBhcyBhIGtleSB0byBhIFN0b3JlLgorCisgICAgQSBTdG9yZUtl
eSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGUgVCBvZiB0aGUgdmFsdWUgb2YgdGhlIGtleS4K
KworICAgIEEgU3RvcmVLZXkgaXMgdW5pcXVlIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCBhbm90
aGVyIGtleS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgU3RvcmU6
CisgICAgIiIiU3RvcmUgaXMgYSB0eXBlLXNhZmUgaGV0ZXJvZ2Vub3VzIG11dGFibGUgbWFwcGlu
ZyB0aGF0CisgICAgYWxsb3dzIGtleXMgYW5kIHZhbHVlIHR5cGVzIHRvIGJlIGRlZmluZWQgc2Vw
YXJhdGVseSBmcm9tCisgICAgd2hlcmUgaXQgKHRoZSBTdG9yZSkgaXMgY3JlYXRlZC4KKworICAg
IFVzdWFsbHkgeW91IHdpbGwgYmUgZ2l2ZW4gYW4gb2JqZWN0IHdoaWNoIGhhcyBhIGBgU3RvcmVg
YDoKKworICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICBzdG9yZTogU3RvcmUg
PSBzb21lX29iamVjdC5zdG9yZQorCisgICAgSWYgYSBtb2R1bGUgd2FudHMgdG8gc3RvcmUgZGF0
YSBpbiB0aGlzIFN0b3JlLCBpdCBjcmVhdGVzIFN0b3JlS2V5cworICAgIGZvciBpdHMga2V5cyAo
YXQgdGhlIG1vZHVsZSBsZXZlbCk6CisKKyAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAg
ICAgICAgc29tZV9zdHJfa2V5ID0gU3RvcmVLZXlbc3RyXSgpCisgICAgICAgIHNvbWVfYm9vbF9r
ZXkgPSBTdG9yZUtleVtib29sXSgpCisKKyAgICBUbyBzdG9yZSBpbmZvcm1hdGlvbjoKKworICAg
IC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICAjIFZhbHVlIHR5cGUgbXVzdCBtYXRj
aCB0aGUga2V5LgorICAgICAgICBzdG9yZVtzb21lX3N0cl9rZXldID0gInZhbHVlIgorICAgICAg
ICBzdG9yZVtzb21lX2Jvb2xfa2V5XSA9IFRydWUKKworICAgIFRvIHJldHJpZXZlIHRoZSBpbmZv
cm1hdGlvbjoKKworICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgICAgICAjIFRoZSBz
dGF0aWMgdHlwZSBvZiBzb21lX3N0ciBpcyBzdHIuCisgICAgICAgIHNvbWVfc3RyID0gc3RvcmVb
c29tZV9zdHJfa2V5XQorICAgICAgICAjIFRoZSBzdGF0aWMgdHlwZSBvZiBzb21lX2Jvb2wgaXMg
Ym9vbC4KKyAgICAgICAgc29tZV9ib29sID0gc3RvcmVbc29tZV9ib29sX2tleV0KKworICAgIFdo
eSB1c2UgdGhpcz8KKyAgICAtLS0tLS0tLS0tLS0tCisKKyAgICBQcm9ibGVtOiBtb2R1bGUgSW50
ZXJuYWwgZGVmaW5lcyBhbiBvYmplY3QuIE1vZHVsZSBFeHRlcm5hbCwgd2hpY2gKKyAgICBtb2R1
bGUgSW50ZXJuYWwgZG9lc24ndCBrbm93IGFib3V0LCByZWNlaXZlcyB0aGUgb2JqZWN0IGFuZCB3
YW50cyB0bworICAgIGF0dGFjaCBpbmZvcm1hdGlvbiB0byBpdCwgdG8gYmUgcmV0cmlldmVkIGxh
dGVyIGdpdmVuIHRoZSBvYmplY3QuCisKKyAgICBCYWQgc29sdXRpb24gMTogTW9kdWxlIEV4dGVy
bmFsIGFzc2lnbnMgcHJpdmF0ZSBhdHRyaWJ1dGVzIGRpcmVjdGx5IG9uCisgICAgdGhlIG9iamVj
dC4gVGhpcyBkb2Vzbid0IHdvcmsgd2VsbCBiZWNhdXNlIHRoZSB0eXBlIGNoZWNrZXIgZG9lc24n
dAorICAgIGtub3cgYWJvdXQgdGhlc2UgYXR0cmlidXRlcyBhbmQgaXQgY29tcGxhaW5zIGFib3V0
IHVuZGVmaW5lZCBhdHRyaWJ1dGVzLgorCisgICAgQmFkIHNvbHV0aW9uIDI6IG1vZHVsZSBJbnRl
cm5hbCBhZGRzIGEgYGBEaWN0W3N0ciwgQW55XWBgIGF0dHJpYnV0ZSB0bworICAgIHRoZSBvYmpl
Y3QuIE1vZHVsZSBFeHRlcm5hbCBzdG9yZXMgaXRzIGRhdGEgaW4gcHJpdmF0ZSBrZXlzIG9mIHRo
aXMgZGljdC4KKyAgICBUaGlzIGRvZXNuJ3Qgd29yayB3ZWxsIGJlY2F1c2UgcmV0cmlldmVkIHZh
bHVlcyBhcmUgdW50eXBlZC4KKworICAgIEdvb2Qgc29sdXRpb246IG1vZHVsZSBJbnRlcm5hbCBh
ZGRzIGEgYGBTdG9yZWBgIHRvIHRoZSBvYmplY3QuIE1vZHVsZQorICAgIEV4dGVybmFsIG1pbnRz
IFN0b3JlS2V5cyBmb3IgaXRzIG93biBrZXlzLiBNb2R1bGUgRXh0ZXJuYWwgc3RvcmVzIGFuZAor
ICAgIHJldHJpZXZlcyBpdHMgZGF0YSB1c2luZyB0aGVzZSBrZXlzLgorICAgICIiIgorCisgICAg
X19zbG90c19fID0gKCJfc3RvcmUiLCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25l
OgorICAgICAgICBzZWxmLl9zdG9yZSA9IHt9ICAjIHR5cGU6IERpY3RbU3RvcmVLZXlbQW55XSwg
b2JqZWN0XQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleTogU3RvcmVLZXlbVF0sIHZh
bHVlOiBUKSAtPiBOb25lOgorICAgICAgICAiIiJTZXQgYSB2YWx1ZSBmb3Iga2V5LiIiIgorICAg
ICAgICBzZWxmLl9zdG9yZVtrZXldID0gdmFsdWUKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxm
LCBrZXk6IFN0b3JlS2V5W1RdKSAtPiBUOgorICAgICAgICAiIiJHZXQgdGhlIHZhbHVlIGZvciBr
ZXkuCisKKyAgICAgICAgUmFpc2VzIGBgS2V5RXJyb3JgYCBpZiB0aGUga2V5IHdhc24ndCBzZXQg
YmVmb3JlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNhc3QoVCwgc2VsZi5fc3RvcmVb
a2V5XSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5OiBTdG9yZUtleVtUXSwgZGVmYXVsdDogRCkg
LT4gVW5pb25bVCwgRF06CisgICAgICAgICIiIkdldCB0aGUgdmFsdWUgZm9yIGtleSwgb3IgcmV0
dXJuIGRlZmF1bHQgaWYgdGhlIGtleSB3YXNuJ3Qgc2V0CisgICAgICAgIGJlZm9yZS4iIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGZba2V5XQorICAgICAgICBleGNlcHQg
S2V5RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisgICAgZGVmIHNldGRlZmF1
bHQoc2VsZiwga2V5OiBTdG9yZUtleVtUXSwgZGVmYXVsdDogVCkgLT4gVDoKKyAgICAgICAgIiIi
UmV0dXJuIHRoZSB2YWx1ZSBvZiBrZXkgaWYgYWxyZWFkeSBzZXQsIG90aGVyd2lzZSBzZXQgdGhl
IHZhbHVlCisgICAgICAgIG9mIGtleSB0byBkZWZhdWx0IGFuZCByZXR1cm4gZGVmYXVsdC4iIiIK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGZba2V5XQorICAgICAgICBleGNl
cHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmW2tleV0gPSBkZWZhdWx0CisgICAgICAgICAg
ICByZXR1cm4gZGVmYXVsdAorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleTogU3RvcmVL
ZXlbVF0pIC0+IE5vbmU6CisgICAgICAgICIiIkRlbGV0ZSB0aGUgdmFsdWUgZm9yIGtleS4KKwor
ICAgICAgICBSYWlzZXMgYGBLZXlFcnJvcmBgIGlmIHRoZSBrZXkgd2Fzbid0IHNldCBiZWZvcmUu
CisgICAgICAgICIiIgorICAgICAgICBkZWwgc2VsZi5fc3RvcmVba2V5XQorCisgICAgZGVmIF9f
Y29udGFpbnNfXyhzZWxmLCBrZXk6IFN0b3JlS2V5W1RdKSAtPiBib29sOgorICAgICAgICAiIiJS
ZXR1cm4gd2hldGhlciBrZXkgd2FzIHNldC4iIiIKKyAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxm
Ll9zdG9yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdGVybWluYWwucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90ZXJtaW5hbC5weQppbmRleCA5YzRlZWM3NTMxYTku
LjM0OTMzYWQyMTg1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdGVybWlu
YWwucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdGVybWluYWwucHkKQEAgLTEsNDMg
KzEsOTEgQEAKLSIiIiB0ZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9j
ZXNzLgorIiIiVGVybWluYWwgcmVwb3J0aW5nIG9mIHRoZSBmdWxsIHRlc3RpbmcgcHJvY2Vzcy4K
IAogVGhpcyBpcyBhIGdvb2Qgc291cmNlIGZvciBsb29raW5nIGF0IHRoZSB2YXJpb3VzIHJlcG9y
dGluZyBob29rcy4KICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgYXJn
cGFyc2UKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGluc3BlY3QKIGltcG9ydCBwbGF0Zm9ybQog
aW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQoraW1wb3J0IHdhcm5pbmdzCitmcm9tIGZ1bmN0b29s
cyBpbXBvcnQgcGFydGlhbAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1w
b3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0
IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBN
YXBwaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBT
ZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorZnJvbSB0eXBpbmcgaW1wb3J0IFRleHRJ
TworZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKwor
aW1wb3J0IGF0dHIKIGltcG9ydCBwbHVnZ3kKIGltcG9ydCBweQotaW1wb3J0IHNpeAotZnJvbSBt
b3JlX2l0ZXJ0b29scyBpbXBvcnQgY29sbGFwc2UKIAogaW1wb3J0IHB5dGVzdAogZnJvbSBfcHl0
ZXN0IGltcG9ydCBub2RlcwotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0ICgKLSAgICBFWElUX09L
LAotICAgIEVYSVRfVEVTVFNGQUlMRUQsCi0gICAgRVhJVF9JTlRFUlJVUFRFRCwKLSAgICBFWElU
X1VTQUdFRVJST1IsCi0gICAgRVhJVF9OT1RFU1RTQ09MTEVDVEVELAorZnJvbSBfcHl0ZXN0IGlt
cG9ydCB0aW1pbmcKK2Zyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5mbworZnJv
bSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvblJlcHIKK2Zyb20gX3B5dGVzdC5f
aW8ud2N3aWR0aCBpbXBvcnQgd2Nzd2lkdGgKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZp
bmFsCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBvcmRlcl9wcmVzZXJ2aW5nX2RpY3QKK2Zy
b20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25m
aWcgaW1wb3J0IF9QbHVnZ3lQbHVnaW4KK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENvbmZp
ZworZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5jb25m
aWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitmcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0
ZW0KK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgTm9kZQorZnJvbSBfcHl0ZXN0LnBhdGhsaWIg
aW1wb3J0IGFic29sdXRlcGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGJlc3RyZWxw
YXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnJlcG9y
dHMgaW1wb3J0IEJhc2VSZXBvcnQKK2Zyb20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBDb2xsZWN0
UmVwb3J0Citmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBvcnQgVGVzdFJlcG9ydAorCitpZiBUWVBF
X0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExpdGVyYWwKKwor
ICAgIGZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9uCisKKworUkVQT1JUX0NPTExFQ1RJ
TkdfUkVTT0xVVElPTiA9IDAuNQorCitLTk9XTl9UWVBFUyA9ICgKKyAgICAiZmFpbGVkIiwKKyAg
ICAicGFzc2VkIiwKKyAgICAic2tpcHBlZCIsCisgICAgImRlc2VsZWN0ZWQiLAorICAgICJ4ZmFp
bGVkIiwKKyAgICAieHBhc3NlZCIsCisgICAgIndhcm5pbmdzIiwKKyAgICAiZXJyb3IiLAogKQog
Ci0KLWltcG9ydCBhcmdwYXJzZQorX1JFUE9SVENIQVJTX0RFRkFVTFQgPSAiZkUiCiAKIAogY2xh
c3MgTW9yZVF1aWV0QWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6Ci0gICAgIiIiCi0gICAgYSBtb2Rp
ZmllZCBjb3B5IG9mIHRoZSBhcmdwYXJzZSBjb3VudCBhY3Rpb24gd2hpY2ggY291bnRzIGRvd24g
YW5kIHVwZGF0ZXMKLSAgICB0aGUgbGVnYWN5IHF1aWV0IGF0dHJpYnV0ZSBhdCB0aGUgc2FtZSB0
aW1lCisgICAgIiIiQSBtb2RpZmllZCBjb3B5IG9mIHRoZSBhcmdwYXJzZSBjb3VudCBhY3Rpb24g
d2hpY2ggY291bnRzIGRvd24gYW5kIHVwZGF0ZXMKKyAgICB0aGUgbGVnYWN5IHF1aWV0IGF0dHJp
YnV0ZSBhdCB0aGUgc2FtZSB0aW1lLgogCi0gICAgdXNlZCB0byB1bmlmeSB2ZXJib3NpdHkgaGFu
ZGxpbmcKKyAgICBVc2VkIHRvIHVuaWZ5IHZlcmJvc2l0eSBoYW5kbGluZy4KICAgICAiIiIKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25fc3RyaW5ncywgZGVzdCwgZGVmYXVsdD1Ob25l
LCByZXF1aXJlZD1GYWxzZSwgaGVscD1Ob25lKToKLSAgICAgICAgc3VwZXIoTW9yZVF1aWV0QWN0
aW9uLCBzZWxmKS5fX2luaXRfXygKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIG9wdGlvbl9zdHJpbmdzOiBTZXF1ZW5jZVtzdHJdLAorICAgICAgICBkZXN0OiBzdHIs
CisgICAgICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUsCisgICAgICAgIHJlcXVpcmVkOiBib29s
ID0gRmFsc2UsCisgICAgICAgIGhlbHA6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICkgLT4g
Tm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygKICAgICAgICAgICAgIG9wdGlvbl9zdHJp
bmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICAgZGVzdD1kZXN0LAogICAgICAgICAgICAg
bmFyZ3M9MCwKQEAgLTQ2LDE0ICs5NCwyMCBAQCBjbGFzcyBNb3JlUXVpZXRBY3Rpb24oYXJncGFy
c2UuQWN0aW9uKToKICAgICAgICAgICAgIGhlbHA9aGVscCwKICAgICAgICAgKQogCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9
Tm9uZSk6CisgICAgZGVmIF9fY2FsbF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBwYXJzZXI6
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyLAorICAgICAgICBuYW1lc3BhY2U6IGFyZ3BhcnNlLk5h
bWVzcGFjZSwKKyAgICAgICAgdmFsdWVzOiBVbmlvbltzdHIsIFNlcXVlbmNlW29iamVjdF0sIE5v
bmVdLAorICAgICAgICBvcHRpb25fc3RyaW5nOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAp
IC0+IE5vbmU6CiAgICAgICAgIG5ld19jb3VudCA9IGdldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRl
c3QsIDApIC0gMQogICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBuZXdfY291
bnQpCiAgICAgICAgICMgdG9kbyBEZXByZWNhdGUgY29uZmlnLnF1aWV0CiAgICAgICAgIG5hbWVz
cGFjZS5xdWlldCA9IGdldGF0dHIobmFtZXNwYWNlLCAicXVpZXQiLCAwKSArIDEKIAogCi1kZWYg
cHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyOiBQ
YXJzZXIpIC0+IE5vbmU6CiAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoInRlcm1pbmFsIHJl
cG9ydGluZyIsICJyZXBvcnRpbmciLCBhZnRlcj0iZ2VuZXJhbCIpCiAgICAgZ3JvdXAuX2FkZG9w
dGlvbigKICAgICAgICAgIi12IiwKQEAgLTYyLDcgKzExNiwyMSBAQCBkZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgogICAgICAgICBkZWZhdWx0PTAsCiAgICAgICAgIGRlc3Q9InZlcmJvc2Ui
LAogICAgICAgICBoZWxwPSJpbmNyZWFzZSB2ZXJib3NpdHkuIiwKLSAgICApLAorICAgICkKKyAg
ICBncm91cC5fYWRkb3B0aW9uKAorICAgICAgICAiLS1uby1oZWFkZXIiLAorICAgICAgICBhY3Rp
b249InN0b3JlX3RydWUiLAorICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICBkZXN0PSJu
b19oZWFkZXIiLAorICAgICAgICBoZWxwPSJkaXNhYmxlIGhlYWRlciIsCisgICAgKQorICAgIGdy
b3VwLl9hZGRvcHRpb24oCisgICAgICAgICItLW5vLXN1bW1hcnkiLAorICAgICAgICBhY3Rpb249
InN0b3JlX3RydWUiLAorICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICBkZXN0PSJub19z
dW1tYXJ5IiwKKyAgICAgICAgaGVscD0iZGlzYWJsZSBzdW1tYXJ5IiwKKyAgICApCiAgICAgZ3Jv
dXAuX2FkZG9wdGlvbigKICAgICAgICAgIi1xIiwKICAgICAgICAgIi0tcXVpZXQiLApAQCAtNzAs
MjEgKzEzOCwyNSBAQCBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICBkZWZh
dWx0PTAsCiAgICAgICAgIGRlc3Q9InZlcmJvc2UiLAogICAgICAgICBoZWxwPSJkZWNyZWFzZSB2
ZXJib3NpdHkuIiwKLSAgICApLAorICAgICkKICAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAg
ICAiLS12ZXJib3NpdHkiLCBkZXN0PSJ2ZXJib3NlIiwgdHlwZT1pbnQsIGRlZmF1bHQ9MCwgaGVs
cD0ic2V0IHZlcmJvc2l0eSIKKyAgICAgICAgIi0tdmVyYm9zaXR5IiwKKyAgICAgICAgZGVzdD0i
dmVyYm9zZSIsCisgICAgICAgIHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTAsCisgICAgICAg
IGhlbHA9InNldCB2ZXJib3NpdHkuIERlZmF1bHQgaXMgMC4iLAogICAgICkKICAgICBncm91cC5f
YWRkb3B0aW9uKAogICAgICAgICAiLXIiLAogICAgICAgICBhY3Rpb249InN0b3JlIiwKICAgICAg
ICAgZGVzdD0icmVwb3J0Y2hhcnMiLAotICAgICAgICBkZWZhdWx0PSIiLAorICAgICAgICBkZWZh
dWx0PV9SRVBPUlRDSEFSU19ERUZBVUxULAogICAgICAgICBtZXRhdmFyPSJjaGFycyIsCi0gICAg
ICAgIGhlbHA9InNob3cgZXh0cmEgdGVzdCBzdW1tYXJ5IGluZm8gYXMgc3BlY2lmaWVkIGJ5IGNo
YXJzIChmKWFpbGVkLCAiCi0gICAgICAgICIoRSllcnJvciwgKHMpc2tpcHBlZCwgKHgpZmFpbGVk
LCAoWClwYXNzZWQsICIKLSAgICAgICAgIihwKXBhc3NlZCwgKFApcGFzc2VkIHdpdGggb3V0cHV0
LCAoYSlhbGwgZXhjZXB0IHBQLiAiCi0gICAgICAgICJXYXJuaW5ncyBhcmUgZGlzcGxheWVkIGF0
IGFsbCB0aW1lcyBleGNlcHQgd2hlbiAiCi0gICAgICAgICItLWRpc2FibGUtd2FybmluZ3MgaXMg
c2V0IiwKKyAgICAgICAgaGVscD0ic2hvdyBleHRyYSB0ZXN0IHN1bW1hcnkgaW5mbyBhcyBzcGVj
aWZpZWQgYnkgY2hhcnM6IChmKWFpbGVkLCAiCisgICAgICAgICIoRSlycm9yLCAocylraXBwZWQs
ICh4KWZhaWxlZCwgKFgpcGFzc2VkLCAiCisgICAgICAgICIocClhc3NlZCwgKFApYXNzZWQgd2l0
aCBvdXRwdXQsIChhKWxsIGV4Y2VwdCBwYXNzZWQgKHAvUCksIG9yIChBKWxsLiAiCisgICAgICAg
ICIodylhcm5pbmdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgKHNlZSAtLWRpc2FibGUtd2Fybmlu
Z3MpLCAiCisgICAgICAgICInTicgY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIGxpc3QuIChkZWZh
dWx0OiAnZkUnKS4iLAogICAgICkKICAgICBncm91cC5fYWRkb3B0aW9uKAogICAgICAgICAiLS1k
aXNhYmxlLXdhcm5pbmdzIiwKQEAgLTEzNiwxNSArMjA4LDIxIEBAIGRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6CiAgICAgICAgIGNob2ljZXM9WyJ5ZXMiLCAibm8iLCAiYXV0byJdLAogICAg
ICAgICBoZWxwPSJjb2xvciB0ZXJtaW5hbCBvdXRwdXQgKHllcy9uby9hdXRvKS4iLAogICAgICkK
KyAgICBncm91cC5fYWRkb3B0aW9uKAorICAgICAgICAiLS1jb2RlLWhpZ2hsaWdodCIsCisgICAg
ICAgIGRlZmF1bHQ9InllcyIsCisgICAgICAgIGNob2ljZXM9WyJ5ZXMiLCAibm8iXSwKKyAgICAg
ICAgaGVscD0iV2hldGhlciBjb2RlIHNob3VsZCBiZSBoaWdobGlnaHRlZCAob25seSBpZiAtLWNv
bG9yIGlzIGFsc28gZW5hYmxlZCkiLAorICAgICkKIAogICAgIHBhcnNlci5hZGRpbmkoCiAgICAg
ICAgICJjb25zb2xlX291dHB1dF9zdHlsZSIsCi0gICAgICAgIGhlbHA9ImNvbnNvbGUgb3V0cHV0
OiBjbGFzc2ljIG9yIHdpdGggYWRkaXRpb25hbCBwcm9ncmVzcyBpbmZvcm1hdGlvbiAoY2xhc3Np
Y3xwcm9ncmVzcykuIiwKKyAgICAgICAgaGVscD0nY29uc29sZSBvdXRwdXQ6ICJjbGFzc2ljIiwg
b3Igd2l0aCBhZGRpdGlvbmFsIHByb2dyZXNzIGluZm9ybWF0aW9uICgicHJvZ3Jlc3MiIChwZXJj
ZW50YWdlKSB8ICJjb3VudCIpLicsCiAgICAgICAgIGRlZmF1bHQ9InByb2dyZXNzIiwKICAgICAp
CiAKIAotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKK2RlZiBweXRlc3RfY29uZmlndXJl
KGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgIHJlcG9ydGVyID0gVGVybWluYWxSZXBvcnRl
cihjb25maWcsIHN5cy5zdGRvdXQpCiAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIo
cmVwb3J0ZXIsICJ0ZXJtaW5hbHJlcG9ydGVyIikKICAgICBpZiBjb25maWcub3B0aW9uLmRlYnVn
IG9yIGNvbmZpZy5vcHRpb24udHJhY2Vjb25maWc6CkBAIC0xNTYsMTIzICsyMzQsMTc0IEBAIGRl
ZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CiAgICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNl
dHByb2Nlc3NvcigicHl0ZXN0OmNvbmZpZyIsIG15d3JpdGVyKQogCiAKLWRlZiBnZXRyZXBvcnRv
cHQoY29uZmlnKToKK2RlZiBnZXRyZXBvcnRvcHQoY29uZmlnOiBDb25maWcpIC0+IHN0cjoKKyAg
ICByZXBvcnRjaGFycyA9IGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMgICMgdHlwZTogc3RyCisK
KyAgICBvbGRfYWxpYXNlcyA9IHsiRiIsICJTIn0KICAgICByZXBvcnRvcHRzID0gIiIKLSAgICBy
ZXBvcnRjaGFycyA9IGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMKLSAgICBpZiBub3QgY29uZmln
Lm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdzIGFuZCAidyIgbm90IGluIHJlcG9ydGNoYXJzOgotICAg
ICAgICByZXBvcnRjaGFycyArPSAidyIKLSAgICBlbGlmIGNvbmZpZy5vcHRpb24uZGlzYWJsZV93
YXJuaW5ncyBhbmQgInciIGluIHJlcG9ydGNoYXJzOgotICAgICAgICByZXBvcnRjaGFycyA9IHJl
cG9ydGNoYXJzLnJlcGxhY2UoInciLCAiIikKLSAgICBpZiByZXBvcnRjaGFyczoKLSAgICAgICAg
Zm9yIGNoYXIgaW4gcmVwb3J0Y2hhcnM6Ci0gICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiByZXBv
cnRvcHRzIGFuZCBjaGFyICE9ICJhIjoKLSAgICAgICAgICAgICAgICByZXBvcnRvcHRzICs9IGNo
YXIKLSAgICAgICAgICAgIGVsaWYgY2hhciA9PSAiYSI6Ci0gICAgICAgICAgICAgICAgcmVwb3J0
b3B0cyA9ICJmRXN4WHciCisgICAgZm9yIGNoYXIgaW4gcmVwb3J0Y2hhcnM6CisgICAgICAgIGlm
IGNoYXIgaW4gb2xkX2FsaWFzZXM6CisgICAgICAgICAgICBjaGFyID0gY2hhci5sb3dlcigpCisg
ICAgICAgIGlmIGNoYXIgPT0gImEiOgorICAgICAgICAgICAgcmVwb3J0b3B0cyA9ICJzeFhFZiIK
KyAgICAgICAgZWxpZiBjaGFyID09ICJBIjoKKyAgICAgICAgICAgIHJlcG9ydG9wdHMgPSAiUHBz
eFhFZiIKKyAgICAgICAgZWxpZiBjaGFyID09ICJOIjoKKyAgICAgICAgICAgIHJlcG9ydG9wdHMg
PSAiIgorICAgICAgICBlbGlmIGNoYXIgbm90IGluIHJlcG9ydG9wdHM6CisgICAgICAgICAgICBy
ZXBvcnRvcHRzICs9IGNoYXIKKworICAgIGlmIG5vdCBjb25maWcub3B0aW9uLmRpc2FibGVfd2Fy
bmluZ3MgYW5kICJ3IiBub3QgaW4gcmVwb3J0b3B0czoKKyAgICAgICAgcmVwb3J0b3B0cyA9ICJ3
IiArIHJlcG9ydG9wdHMKKyAgICBlbGlmIGNvbmZpZy5vcHRpb24uZGlzYWJsZV93YXJuaW5ncyBh
bmQgInciIGluIHJlcG9ydG9wdHM6CisgICAgICAgIHJlcG9ydG9wdHMgPSByZXBvcnRvcHRzLnJl
cGxhY2UoInciLCAiIikKKwogICAgIHJldHVybiByZXBvcnRvcHRzCiAKIAotZGVmIHB5dGVzdF9y
ZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQpOgorQHB5dGVzdC5ob29raW1wbCh0cnlsYXN0PVRydWUp
ICAjIGFmdGVyIF9weXRlc3QucnVubmVyCitkZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJl
cG9ydDogQmFzZVJlcG9ydCkgLT4gVHVwbGVbc3RyLCBzdHIsIHN0cl06CisgICAgbGV0dGVyID0g
IkYiCiAgICAgaWYgcmVwb3J0LnBhc3NlZDoKICAgICAgICAgbGV0dGVyID0gIi4iCiAgICAgZWxp
ZiByZXBvcnQuc2tpcHBlZDoKICAgICAgICAgbGV0dGVyID0gInMiCi0gICAgZWxpZiByZXBvcnQu
ZmFpbGVkOgotICAgICAgICBsZXR0ZXIgPSAiRiIKLSAgICAgICAgaWYgcmVwb3J0LndoZW4gIT0g
ImNhbGwiOgotICAgICAgICAgICAgbGV0dGVyID0gImYiCi0gICAgcmV0dXJuIHJlcG9ydC5vdXRj
b21lLCBsZXR0ZXIsIHJlcG9ydC5vdXRjb21lLnVwcGVyKCkKIAorICAgIG91dGNvbWUgPSByZXBv
cnQub3V0Y29tZSAgIyB0eXBlOiBzdHIKKyAgICBpZiByZXBvcnQud2hlbiBpbiAoImNvbGxlY3Qi
LCAic2V0dXAiLCAidGVhcmRvd24iKSBhbmQgb3V0Y29tZSA9PSAiZmFpbGVkIjoKKyAgICAgICAg
b3V0Y29tZSA9ICJlcnJvciIKKyAgICAgICAgbGV0dGVyID0gIkUiCiAKLWNsYXNzIFdhcm5pbmdS
ZXBvcnQob2JqZWN0KToKLSAgICAiIiIKLSAgICBTaW1wbGUgc3RydWN0dXJlIHRvIGhvbGQgd2Fy
bmluZ3MgaW5mb3JtYXRpb24gY2FwdHVyZWQgYnkgYGBweXRlc3RfbG9nd2FybmluZ2BgLgorICAg
IHJldHVybiBvdXRjb21lLCBsZXR0ZXIsIG91dGNvbWUudXBwZXIoKQorCisKK0BhdHRyLnMKK2Ns
YXNzIFdhcm5pbmdSZXBvcnQ6CisgICAgIiIiU2ltcGxlIHN0cnVjdHVyZSB0byBob2xkIHdhcm5p
bmdzIGluZm9ybWF0aW9uIGNhcHR1cmVkIGJ5IGBgcHl0ZXN0X3dhcm5pbmdfcmVjb3JkZWRgYC4K
KworICAgIDppdmFyIHN0ciBtZXNzYWdlOgorICAgICAgICBVc2VyIGZyaWVuZGx5IG1lc3NhZ2Ug
YWJvdXQgdGhlIHdhcm5pbmcuCisgICAgOml2YXIgc3RyfE5vbmUgbm9kZWlkOgorICAgICAgICBu
b2RlaWQgdGhhdCBnZW5lcmF0ZWQgdGhlIHdhcm5pbmcgKHNlZSBgYGdldF9sb2NhdGlvbmBgKS4K
KyAgICA6aXZhciB0dXBsZXxweS5wYXRoLmxvY2FsIGZzbG9jYXRpb246CisgICAgICAgIEZpbGUg
c3lzdGVtIGxvY2F0aW9uIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcgKHNlZSBgYGdldF9s
b2NhdGlvbmBgKS4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlLCBtZXNz
YWdlLCBub2RlaWQ9Tm9uZSwgZnNsb2NhdGlvbj1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAg
IDpwYXJhbSBjb2RlOiB1bnVzZWQKLSAgICAgICAgOnBhcmFtIHN0ciBtZXNzYWdlOiB1c2VyIGZy
aWVuZGx5IG1lc3NhZ2UgYWJvdXQgdGhlIHdhcm5pbmcKLSAgICAgICAgOnBhcmFtIHN0cnxOb25l
IG5vZGVpZDogbm9kZSBpZCB0aGF0IGdlbmVyYXRlZCB0aGUgd2FybmluZyAoc2VlIGBgZ2V0X2xv
Y2F0aW9uYGApLgotICAgICAgICA6cGFyYW0gdHVwbGV8cHkucGF0aC5sb2NhbCBmc2xvY2F0aW9u
OgotICAgICAgICAgICAgZmlsZSBzeXN0ZW0gbG9jYXRpb24gb2YgdGhlIHNvdXJjZSBvZiB0aGUg
d2FybmluZyAoc2VlIGBgZ2V0X2xvY2F0aW9uYGApLgotICAgICAgICAiIiIKLSAgICAgICAgc2Vs
Zi5jb2RlID0gY29kZQotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCi0gICAgICAgIHNl
bGYubm9kZWlkID0gbm9kZWlkCi0gICAgICAgIHNlbGYuZnNsb2NhdGlvbiA9IGZzbG9jYXRpb24K
KyAgICBtZXNzYWdlID0gYXR0ci5pYih0eXBlPXN0cikKKyAgICBub2RlaWQgPSBhdHRyLmliKHR5
cGU9T3B0aW9uYWxbc3RyXSwgZGVmYXVsdD1Ob25lKQorICAgIGZzbG9jYXRpb24gPSBhdHRyLmli
KAorICAgICAgICB0eXBlPU9wdGlvbmFsW1VuaW9uW1R1cGxlW3N0ciwgaW50XSwgcHkucGF0aC5s
b2NhbF1dLCBkZWZhdWx0PU5vbmUKKyAgICApCisgICAgY291bnRfdG93YXJkc19zdW1tYXJ5ID0g
VHJ1ZQogCi0gICAgZGVmIGdldF9sb2NhdGlvbihzZWxmLCBjb25maWcpOgotICAgICAgICAiIiIK
LSAgICAgICAgUmV0dXJucyB0aGUgbW9yZSB1c2VyLWZyaWVuZGx5IGluZm9ybWF0aW9uIGFib3V0
IHRoZSBsb2NhdGlvbgotICAgICAgICBvZiBhIHdhcm5pbmcsIG9yIE5vbmUuCi0gICAgICAgICIi
IgorICAgIGRlZiBnZXRfbG9jYXRpb24oc2VsZiwgY29uZmlnOiBDb25maWcpIC0+IE9wdGlvbmFs
W3N0cl06CisgICAgICAgICIiIlJldHVybiB0aGUgbW9yZSB1c2VyLWZyaWVuZGx5IGluZm9ybWF0
aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiBhIHdhcm5pbmcsIG9yIE5vbmUuIiIiCiAgICAgICAg
IGlmIHNlbGYubm9kZWlkOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubm9kZWlkCiAgICAgICAg
IGlmIHNlbGYuZnNsb2NhdGlvbjoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5mc2xv
Y2F0aW9uLCB0dXBsZSkgYW5kIGxlbihzZWxmLmZzbG9jYXRpb24pID49IDI6CiAgICAgICAgICAg
ICAgICAgZmlsZW5hbWUsIGxpbmVudW0gPSBzZWxmLmZzbG9jYXRpb25bOjJdCi0gICAgICAgICAg
ICAgICAgcmVscGF0aCA9IHB5LnBhdGgubG9jYWwoZmlsZW5hbWUpLnJlbHRvKGNvbmZpZy5pbnZv
Y2F0aW9uX2RpcikKLSAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiVzIiAlIChyZWxwYXRoLCBs
aW5lbnVtKQorICAgICAgICAgICAgICAgIHJlbHBhdGggPSBiZXN0cmVscGF0aCgKKyAgICAgICAg
ICAgICAgICAgICAgY29uZmlnLmludm9jYXRpb25fcGFyYW1zLmRpciwgYWJzb2x1dGVwYXRoKGZp
bGVuYW1lKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4gInt9Ont9
Ii5mb3JtYXQocmVscGF0aCwgbGluZW51bSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0cihzZWxmLmZzbG9jYXRpb24pCiAgICAgICAgIHJldHVybiBOb25lCiAK
IAotY2xhc3MgVGVybWluYWxSZXBvcnRlcihvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNvbmZpZywgZmlsZT1Ob25lKToKK0BmaW5hbAorY2xhc3MgVGVybWluYWxSZXBvcnRlcjoK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnOiBDb25maWcsIGZpbGU6IE9wdGlvbmFsW1Rl
eHRJT10gPSBOb25lKSAtPiBOb25lOgogICAgICAgICBpbXBvcnQgX3B5dGVzdC5jb25maWcKIAog
ICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwotICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHNl
bGYuY29uZmlnLm9wdGlvbi52ZXJib3NlCi0gICAgICAgIHNlbGYuc2hvd2hlYWRlciA9IHNlbGYu
dmVyYm9zaXR5ID49IDAKLSAgICAgICAgc2VsZi5zaG93ZnNwYXRoID0gc2VsZi52ZXJib3NpdHkg
Pj0gMAotICAgICAgICBzZWxmLnNob3dsb25ndGVzdGluZm8gPSBzZWxmLnZlcmJvc2l0eSA+IDAK
ICAgICAgICAgc2VsZi5fbnVtY29sbGVjdGVkID0gMAotICAgICAgICBzZWxmLl9zZXNzaW9uID0g
Tm9uZQotCi0gICAgICAgIHNlbGYuc3RhdHMgPSB7fQotICAgICAgICBzZWxmLnN0YXJ0ZGlyID0g
cHkucGF0aC5sb2NhbCgpCisgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBOb25lICAjIHR5cGU6IE9w
dGlvbmFsW1Nlc3Npb25dCisgICAgICAgIHNlbGYuX3Nob3dmc3BhdGggPSBOb25lICAjIHR5cGU6
IE9wdGlvbmFsW2Jvb2xdCisKKyAgICAgICAgc2VsZi5zdGF0cyA9IHt9ICAjIHR5cGU6IERpY3Rb
c3RyLCBMaXN0W0FueV1dCisgICAgICAgIHNlbGYuX21haW5fY29sb3IgPSBOb25lICAjIHR5cGU6
IE9wdGlvbmFsW3N0cl0KKyAgICAgICAgc2VsZi5fa25vd25fdHlwZXMgPSBOb25lICAjIHR5cGU6
IE9wdGlvbmFsW0xpc3Rbc3RyXV0KKyAgICAgICAgc2VsZi5zdGFydGRpciA9IGNvbmZpZy5pbnZv
Y2F0aW9uX2RpcgorICAgICAgICBzZWxmLnN0YXJ0cGF0aCA9IGNvbmZpZy5pbnZvY2F0aW9uX3Bh
cmFtcy5kaXIKICAgICAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICAgICAgZmlsZSA9IHN5
cy5zdGRvdXQKICAgICAgICAgc2VsZi5fdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWlu
YWxfd3JpdGVyKGNvbmZpZywgZmlsZSkKLSAgICAgICAgIyBzZWxmLndyaXRlciB3aWxsIGJlIGRl
cHJlY2F0ZWQgaW4gcHl0ZXN0LTMuNAotICAgICAgICBzZWxmLndyaXRlciA9IHNlbGYuX3R3CiAg
ICAgICAgIHNlbGYuX3NjcmVlbl93aWR0aCA9IHNlbGYuX3R3LmZ1bGx3aWR0aAotICAgICAgICBz
ZWxmLmN1cnJlbnRmc3BhdGggPSBOb25lCisgICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IE5v
bmUgICMgdHlwZTogVW5pb25bTm9uZSwgUGF0aCwgc3RyLCBpbnRdCiAgICAgICAgIHNlbGYucmVw
b3J0Y2hhcnMgPSBnZXRyZXBvcnRvcHQoY29uZmlnKQogICAgICAgICBzZWxmLmhhc21hcmt1cCA9
IHNlbGYuX3R3Lmhhc21hcmt1cAogICAgICAgICBzZWxmLmlzYXR0eSA9IGZpbGUuaXNhdHR5KCkK
LSAgICAgICAgc2VsZi5fcHJvZ3Jlc3Nfbm9kZWlkc19yZXBvcnRlZCA9IHNldCgpCisgICAgICAg
IHNlbGYuX3Byb2dyZXNzX25vZGVpZHNfcmVwb3J0ZWQgPSBzZXQoKSAgIyB0eXBlOiBTZXRbc3Ry
XQogICAgICAgICBzZWxmLl9zaG93X3Byb2dyZXNzX2luZm8gPSBzZWxmLl9kZXRlcm1pbmVfc2hv
d19wcm9ncmVzc19pbmZvKCkKKyAgICAgICAgc2VsZi5fY29sbGVjdF9yZXBvcnRfbGFzdF93cml0
ZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbZmxvYXRdCisgICAgICAgIHNlbGYuX2FscmVhZHlf
ZGlzcGxheWVkX3dhcm5pbmdzID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtpbnRdCisgICAgICAg
IHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8gPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW0V4
Y2VwdGlvblJlcHJdCiAKLSAgICBkZWYgX2RldGVybWluZV9zaG93X3Byb2dyZXNzX2luZm8oc2Vs
Zik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHdlIHNob3VsZCBkaXNwbGF5IHByb2dyZXNz
IGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZyIiIgorICAgIGRlZiBfZGV0
ZXJtaW5lX3Nob3dfcHJvZ3Jlc3NfaW5mbyhzZWxmKSAtPiAiTGl0ZXJhbFsncHJvZ3Jlc3MnLCAn
Y291bnQnLCBGYWxzZV0iOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB3ZSBzaG91bGQgZGlz
cGxheSBwcm9ncmVzcyBpbmZvcm1hdGlvbiBiYXNlZCBvbiB0aGUgY3VycmVudCBjb25maWcuIiIi
CiAgICAgICAgICMgZG8gbm90IHNob3cgcHJvZ3Jlc3MgaWYgd2UgYXJlIG5vdCBjYXB0dXJpbmcg
b3V0cHV0ICgjMzAzOCkKLSAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJjYXB0dXJl
IikgPT0gIm5vIjoKKyAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJjYXB0dXJlIiwg
Im5vIikgPT0gIm5vIjoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAjIGRvIG5v
dCBzaG93IHByb2dyZXNzIGlmIHdlIGFyZSBzaG93aW5nIGZpeHR1cmUgc2V0dXAvdGVhcmRvd24K
LSAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJzZXR1cHNob3ciKToKKyAgICAgICAg
aWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJzZXR1cHNob3ciLCBGYWxzZSk6CisgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2ZnID0gc2VsZi5jb25maWcuZ2V0aW5pKCJjb25zb2xl
X291dHB1dF9zdHlsZSIpICAjIHR5cGU6IHN0cgorICAgICAgICBpZiBjZmcgPT0gInByb2dyZXNz
IjoKKyAgICAgICAgICAgIHJldHVybiAicHJvZ3Jlc3MiCisgICAgICAgIGVsaWYgY2ZnID09ICJj
b3VudCI6CisgICAgICAgICAgICByZXR1cm4gImNvdW50IgorICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLmNvbmZpZy5nZXRpbmkoImNv
bnNvbGVfb3V0cHV0X3N0eWxlIikgPT0gInByb2dyZXNzIgogCi0gICAgZGVmIGhhc29wdChzZWxm
LCBjaGFyKToKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyYm9zaXR5KHNlbGYpIC0+IGludDoK
KyAgICAgICAgdmVyYm9zaXR5ID0gc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgICMgdHlwZTog
aW50CisgICAgICAgIHJldHVybiB2ZXJib3NpdHkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBz
aG93aGVhZGVyKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLnZlcmJvc2l0eSA+
PSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9faGVhZGVyKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIHJldHVybiBib29sKHNlbGYuY29uZmlnLm9wdGlvbi5ub19oZWFkZXIpCisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgbm9fc3VtbWFyeShzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1
cm4gYm9vbChzZWxmLmNvbmZpZy5vcHRpb24ubm9fc3VtbWFyeSkKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBzaG93ZnNwYXRoKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIGlmIHNlbGYuX3Nob3dm
c3BhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnZlcmJvc2l0eSA+PSAwCisg
ICAgICAgIHJldHVybiBzZWxmLl9zaG93ZnNwYXRoCisKKyAgICBAc2hvd2ZzcGF0aC5zZXR0ZXIK
KyAgICBkZWYgc2hvd2ZzcGF0aChzZWxmLCB2YWx1ZTogT3B0aW9uYWxbYm9vbF0pIC0+IE5vbmU6
CisgICAgICAgIHNlbGYuX3Nob3dmc3BhdGggPSB2YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIHNob3dsb25ndGVzdGluZm8oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYu
dmVyYm9zaXR5ID4gMAorCisgICAgZGVmIGhhc29wdChzZWxmLCBjaGFyOiBzdHIpIC0+IGJvb2w6
CiAgICAgICAgIGNoYXIgPSB7InhmYWlsZWQiOiAieCIsICJza2lwcGVkIjogInMifS5nZXQoY2hh
ciwgY2hhcikKICAgICAgICAgcmV0dXJuIGNoYXIgaW4gc2VsZi5yZXBvcnRjaGFycwogCi0gICAg
ZGVmIHdyaXRlX2ZzcGF0aF9yZXN1bHQoc2VsZiwgbm9kZWlkLCByZXMpOgotICAgICAgICBmc3Bh
dGggPSBzZWxmLmNvbmZpZy5yb290ZGlyLmpvaW4obm9kZWlkLnNwbGl0KCI6OiIpWzBdKQotICAg
ICAgICBpZiBmc3BhdGggIT0gc2VsZi5jdXJyZW50ZnNwYXRoOgotICAgICAgICAgICAgaWYgc2Vs
Zi5jdXJyZW50ZnNwYXRoIGlzIG5vdCBOb25lOgorICAgIGRlZiB3cml0ZV9mc3BhdGhfcmVzdWx0
KHNlbGYsIG5vZGVpZDogc3RyLCByZXMsICoqbWFya3VwOiBib29sKSAtPiBOb25lOgorICAgICAg
ICBmc3BhdGggPSBzZWxmLmNvbmZpZy5yb290cGF0aCAvIG5vZGVpZC5zcGxpdCgiOjoiKVswXQor
ICAgICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGggaXMgTm9uZSBvciBmc3BhdGggIT0gc2VsZi5j
dXJyZW50ZnNwYXRoOgorICAgICAgICAgICAgaWYgc2VsZi5jdXJyZW50ZnNwYXRoIGlzIG5vdCBO
b25lIGFuZCBzZWxmLl9zaG93X3Byb2dyZXNzX2luZm86CiAgICAgICAgICAgICAgICAgc2VsZi5f
d3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZSgpCiAgICAgICAgICAgICBz
ZWxmLmN1cnJlbnRmc3BhdGggPSBmc3BhdGgKLSAgICAgICAgICAgIGZzcGF0aCA9IHNlbGYuc3Rh
cnRkaXIuYmVzdHJlbHBhdGgoZnNwYXRoKQorICAgICAgICAgICAgcmVsZnNwYXRoID0gYmVzdHJl
bHBhdGgoc2VsZi5zdGFydHBhdGgsIGZzcGF0aCkKICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUo
KQotICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUoZnNwYXRoICsgIiAiKQotICAgICAgICBzZWxm
Ll90dy53cml0ZShyZXMpCisgICAgICAgICAgICBzZWxmLl90dy53cml0ZShyZWxmc3BhdGggKyAi
ICIpCisgICAgICAgIHNlbGYuX3R3LndyaXRlKHJlcywgZmx1c2g9VHJ1ZSwgKiptYXJrdXApCiAK
LSAgICBkZWYgd3JpdGVfZW5zdXJlX3ByZWZpeChzZWxmLCBwcmVmaXgsIGV4dHJhPSIiLCAqKmt3
YXJncyk6CisgICAgZGVmIHdyaXRlX2Vuc3VyZV9wcmVmaXgoc2VsZiwgcHJlZml4OiBzdHIsIGV4
dHJhOiBzdHIgPSAiIiwgKiprd2FyZ3MpIC0+IE5vbmU6CiAgICAgICAgIGlmIHNlbGYuY3VycmVu
dGZzcGF0aCAhPSBwcmVmaXg6CiAgICAgICAgICAgICBzZWxmLl90dy5saW5lKCkKICAgICAgICAg
ICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IHByZWZpeApAQCAtMjgxLDI1ICs0MTAsMjggQEAgY2xh
c3MgVGVybWluYWxSZXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUo
ZXh0cmEsICoqa3dhcmdzKQogICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0gLTIKIAot
ICAgIGRlZiBlbnN1cmVfbmV3bGluZShzZWxmKToKKyAgICBkZWYgZW5zdXJlX25ld2xpbmUoc2Vs
ZikgLT4gTm9uZToKICAgICAgICAgaWYgc2VsZi5jdXJyZW50ZnNwYXRoOgogICAgICAgICAgICAg
c2VsZi5fdHcubGluZSgpCiAgICAgICAgICAgICBzZWxmLmN1cnJlbnRmc3BhdGggPSBOb25lCiAK
LSAgICBkZWYgd3JpdGUoc2VsZiwgY29udGVudCwgKiptYXJrdXApOgotICAgICAgICBzZWxmLl90
dy53cml0ZShjb250ZW50LCAqKm1hcmt1cCkKKyAgICBkZWYgd3JpdGUoc2VsZiwgY29udGVudDog
c3RyLCAqLCBmbHVzaDogYm9vbCA9IEZhbHNlLCAqKm1hcmt1cDogYm9vbCkgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5fdHcud3JpdGUoY29udGVudCwgZmx1c2g9Zmx1c2gsICoqbWFya3VwKQorCisg
ICAgZGVmIGZsdXNoKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3R3LmZsdXNoKCkKIAot
ICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGxpbmUsICoqbWFya3VwKToKLSAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgICAgICBsaW5lID0gc2l4
LnRleHRfdHlwZShsaW5lLCBlcnJvcnM9InJlcGxhY2UiKQorICAgIGRlZiB3cml0ZV9saW5lKHNl
bGYsIGxpbmU6IFVuaW9uW3N0ciwgYnl0ZXNdLCAqKm1hcmt1cDogYm9vbCkgLT4gTm9uZToKKyAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGluZSwgc3RyKToKKyAgICAgICAgICAgIGxpbmUgPSBz
dHIobGluZSwgZXJyb3JzPSJyZXBsYWNlIikKICAgICAgICAgc2VsZi5lbnN1cmVfbmV3bGluZSgp
CiAgICAgICAgIHNlbGYuX3R3LmxpbmUobGluZSwgKiptYXJrdXApCiAKLSAgICBkZWYgcmV3cml0
ZShzZWxmLCBsaW5lLCAqKm1hcmt1cCk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXdpbmRzIHRo
ZSB0ZXJtaW5hbCBjdXJzb3IgdG8gdGhlIGJlZ2lubmluZyBhbmQgd3JpdGVzIHRoZSBnaXZlbiBs
aW5lLgorICAgIGRlZiByZXdyaXRlKHNlbGYsIGxpbmU6IHN0ciwgKiptYXJrdXA6IGJvb2wpIC0+
IE5vbmU6CisgICAgICAgICIiIlJld2luZHMgdGhlIHRlcm1pbmFsIGN1cnNvciB0byB0aGUgYmVn
aW5uaW5nIGFuZCB3cml0ZXMgdGhlIGdpdmVuIGxpbmUuCiAKLSAgICAgICAgOmt3YXJnIGVyYXNl
OiBpZiBUcnVlLCB3aWxsIGFsc28gYWRkIHNwYWNlcyB1bnRpbCB0aGUgZnVsbCB0ZXJtaW5hbCB3
aWR0aCB0byBlbnN1cmUKKyAgICAgICAgOnBhcmFtIGVyYXNlOgorICAgICAgICAgICAgSWYgVHJ1
ZSwgd2lsbCBhbHNvIGFkZCBzcGFjZXMgdW50aWwgdGhlIGZ1bGwgdGVybWluYWwgd2lkdGggdG8g
ZW5zdXJlCiAgICAgICAgICAgICBwcmV2aW91cyBsaW5lcyBhcmUgcHJvcGVybHkgZXJhc2VkLgog
CiAgICAgICAgIFRoZSByZXN0IG9mIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgbWFya3VwIGlu
c3RydWN0aW9ucy4KQEAgLTMxMyw3OSArNDQ1LDEwMiBAQCBjbGFzcyBUZXJtaW5hbFJlcG9ydGVy
KG9iamVjdCk6CiAgICAgICAgIGxpbmUgPSBzdHIobGluZSkKICAgICAgICAgc2VsZi5fdHcud3Jp
dGUoIlxyIiArIGxpbmUgKyBmaWxsLCAqKm1hcmt1cCkKIAotICAgIGRlZiB3cml0ZV9zZXAoc2Vs
Ziwgc2VwLCB0aXRsZT1Ob25lLCAqKm1hcmt1cCk6CisgICAgZGVmIHdyaXRlX3NlcCgKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgc2VwOiBzdHIsCisgICAgICAgIHRpdGxlOiBPcHRpb25hbFtzdHJd
ID0gTm9uZSwKKyAgICAgICAgZnVsbHdpZHRoOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAg
ICAgKiptYXJrdXA6IGJvb2wKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuZW5zdXJlX25l
d2xpbmUoKQotICAgICAgICBzZWxmLl90dy5zZXAoc2VwLCB0aXRsZSwgKiptYXJrdXApCisgICAg
ICAgIHNlbGYuX3R3LnNlcChzZXAsIHRpdGxlLCBmdWxsd2lkdGgsICoqbWFya3VwKQogCi0gICAg
ZGVmIHNlY3Rpb24oc2VsZiwgdGl0bGUsIHNlcD0iPSIsICoqa3cpOgorICAgIGRlZiBzZWN0aW9u
KHNlbGYsIHRpdGxlOiBzdHIsIHNlcDogc3RyID0gIj0iLCAqKmt3OiBib29sKSAtPiBOb25lOgog
ICAgICAgICBzZWxmLl90dy5zZXAoc2VwLCB0aXRsZSwgKiprdykKIAotICAgIGRlZiBsaW5lKHNl
bGYsIG1zZywgKiprdyk6CisgICAgZGVmIGxpbmUoc2VsZiwgbXNnOiBzdHIsICoqa3c6IGJvb2wp
IC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX3R3LmxpbmUobXNnLCAqKmt3KQogCi0gICAgZGVmIHB5
dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIpOgotICAgICAgICBmb3IgbGluZSBpbiBz
aXgudGV4dF90eXBlKGV4Y3JlcHIpLnNwbGl0KCJcbiIpOgorICAgIGRlZiBfYWRkX3N0YXRzKHNl
bGYsIGNhdGVnb3J5OiBzdHIsIGl0ZW1zOiBTZXF1ZW5jZVtBbnldKSAtPiBOb25lOgorICAgICAg
ICBzZXRfbWFpbl9jb2xvciA9IGNhdGVnb3J5IG5vdCBpbiBzZWxmLnN0YXRzCisgICAgICAgIHNl
bGYuc3RhdHMuc2V0ZGVmYXVsdChjYXRlZ29yeSwgW10pLmV4dGVuZChpdGVtcykKKyAgICAgICAg
aWYgc2V0X21haW5fY29sb3I6CisgICAgICAgICAgICBzZWxmLl9zZXRfbWFpbl9jb2xvcigpCisK
KyAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZiwgZXhjcmVwcjogRXhjZXB0aW9uUmVw
cikgLT4gYm9vbDoKKyAgICAgICAgZm9yIGxpbmUgaW4gc3RyKGV4Y3JlcHIpLnNwbGl0KCJcbiIp
OgogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKCJJTlRFUk5BTEVSUk9SPiAiICsgbGluZSkK
LSAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBweXRlc3Rf
d2FybmluZ19yZWNvcmRlZCgKKyAgICAgICAgc2VsZiwgd2FybmluZ19tZXNzYWdlOiB3YXJuaW5n
cy5XYXJuaW5nTWVzc2FnZSwgbm9kZWlkOiBzdHIsCisgICAgKSAtPiBOb25lOgorICAgICAgICBm
cm9tIF9weXRlc3Qud2FybmluZ3MgaW1wb3J0IHdhcm5pbmdfcmVjb3JkX3RvX3N0cgogCi0gICAg
ZGVmIHB5dGVzdF9sb2d3YXJuaW5nKHNlbGYsIGNvZGUsIGZzbG9jYXRpb24sIG1lc3NhZ2UsIG5v
ZGVpZCk6Ci0gICAgICAgIHdhcm5pbmdzID0gc2VsZi5zdGF0cy5zZXRkZWZhdWx0KCJ3YXJuaW5n
cyIsIFtdKQotICAgICAgICB3YXJuaW5nID0gV2FybmluZ1JlcG9ydCgKLSAgICAgICAgICAgIGNv
ZGU9Y29kZSwgZnNsb2NhdGlvbj1mc2xvY2F0aW9uLCBtZXNzYWdlPW1lc3NhZ2UsIG5vZGVpZD1u
b2RlaWQKKyAgICAgICAgZnNsb2NhdGlvbiA9IHdhcm5pbmdfbWVzc2FnZS5maWxlbmFtZSwgd2Fy
bmluZ19tZXNzYWdlLmxpbmVubworICAgICAgICBtZXNzYWdlID0gd2FybmluZ19yZWNvcmRfdG9f
c3RyKHdhcm5pbmdfbWVzc2FnZSkKKworICAgICAgICB3YXJuaW5nX3JlcG9ydCA9IFdhcm5pbmdS
ZXBvcnQoCisgICAgICAgICAgICBmc2xvY2F0aW9uPWZzbG9jYXRpb24sIG1lc3NhZ2U9bWVzc2Fn
ZSwgbm9kZWlkPW5vZGVpZAogICAgICAgICApCi0gICAgICAgIHdhcm5pbmdzLmFwcGVuZCh3YXJu
aW5nKQorICAgICAgICBzZWxmLl9hZGRfc3RhdHMoIndhcm5pbmdzIiwgW3dhcm5pbmdfcmVwb3J0
XSkKIAotICAgIGRlZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQoc2VsZiwgcGx1Z2luKToKKyAg
ICBkZWYgcHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkKHNlbGYsIHBsdWdpbjogX1BsdWdneVBsdWdp
bikgLT4gTm9uZToKICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRyYWNlY29uZmlnOgot
ICAgICAgICAgICAgbXNnID0gIlBMVUdJTiByZWdpc3RlcmVkOiAlcyIgJSAocGx1Z2luLCkKLSAg
ICAgICAgICAgICMgWFhYIHRoaXMgZXZlbnQgbWF5IGhhcHBlbiBkdXJpbmcgc2V0dXAvdGVhcmRv
d24gdGltZQorICAgICAgICAgICAgbXNnID0gIlBMVUdJTiByZWdpc3RlcmVkOiB7fSIuZm9ybWF0
KHBsdWdpbikKKyAgICAgICAgICAgICMgWFhYIFRoaXMgZXZlbnQgbWF5IGhhcHBlbiBkdXJpbmcg
c2V0dXAvdGVhcmRvd24gdGltZQogICAgICAgICAgICAgIyAgICAgd2hpY2ggdW5mb3J0dW5hdGVs
eSBjYXB0dXJlcyBvdXIgb3V0cHV0IGhlcmUKLSAgICAgICAgICAgICMgICAgIHdoaWNoIGdhcmJs
ZXMgb3VyIG91dHB1dCBpZiB3ZSB1c2Ugc2VsZi53cml0ZV9saW5lCisgICAgICAgICAgICAjICAg
ICB3aGljaCBnYXJibGVzIG91ciBvdXRwdXQgaWYgd2UgdXNlIHNlbGYud3JpdGVfbGluZS4KICAg
ICAgICAgICAgIHNlbGYud3JpdGVfbGluZShtc2cpCiAKLSAgICBkZWYgcHl0ZXN0X2Rlc2VsZWN0
ZWQoc2VsZiwgaXRlbXMpOgotICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoImRlc2VsZWN0
ZWQiLCBbXSkuZXh0ZW5kKGl0ZW1zKQorICAgIGRlZiBweXRlc3RfZGVzZWxlY3RlZChzZWxmLCBp
dGVtczogU2VxdWVuY2VbSXRlbV0pIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2FkZF9zdGF0cygi
ZGVzZWxlY3RlZCIsIGl0ZW1zKQogCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KHNl
bGYsIG5vZGVpZCwgbG9jYXRpb24pOgotICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZSBwYXRoIGlz
IHByaW50ZWQgYmVmb3JlIHRoZQotICAgICAgICAjIDFzdCB0ZXN0IG9mIGEgbW9kdWxlIHN0YXJ0
cyBydW5uaW5nCisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KAorICAgICAgICBzZWxm
LCBub2RlaWQ6IHN0ciwgbG9jYXRpb246IFR1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXQor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgcGF0aCBpcyBwcmludGVk
IGJlZm9yZSB0aGUKKyAgICAgICAgIyAxc3QgdGVzdCBvZiBhIG1vZHVsZSBzdGFydHMgcnVubmlu
Zy4KICAgICAgICAgaWYgc2VsZi5zaG93bG9uZ3Rlc3RpbmZvOgogICAgICAgICAgICAgbGluZSA9
IHNlbGYuX2xvY2F0aW9ubGluZShub2RlaWQsICpsb2NhdGlvbikKICAgICAgICAgICAgIHNlbGYu
d3JpdGVfZW5zdXJlX3ByZWZpeChsaW5lLCAiIikKKyAgICAgICAgICAgIHNlbGYuZmx1c2goKQog
ICAgICAgICBlbGlmIHNlbGYuc2hvd2ZzcGF0aDoKLSAgICAgICAgICAgIGZzaWQgPSBub2RlaWQu
c3BsaXQoIjo6IilbMF0KLSAgICAgICAgICAgIHNlbGYud3JpdGVfZnNwYXRoX3Jlc3VsdChmc2lk
LCAiIikKKyAgICAgICAgICAgIHNlbGYud3JpdGVfZnNwYXRoX3Jlc3VsdChub2RlaWQsICIiKQor
ICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVw
b3J0KHNlbGYsIHJlcG9ydCk6CisgICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxm
LCByZXBvcnQ6IFRlc3RSZXBvcnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3Rlc3RzX3JhbiA9
IFRydWUKICAgICAgICAgcmVwID0gcmVwb3J0Ci0gICAgICAgIHJlcyA9IHNlbGYuY29uZmlnLmhv
b2sucHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydD1yZXApCi0gICAgICAgIGNhdCwgbGV0
dGVyLCB3b3JkID0gcmVzCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uod29yZCwgdHVwbGUpOgotICAg
ICAgICAgICAgd29yZCwgbWFya3VwID0gd29yZAotICAgICAgICBlbHNlOgorICAgICAgICByZXMg
PSBzZWxmLmNvbmZpZy5ob29rLnB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cygKKyAgICAgICAgICAg
IHJlcG9ydD1yZXAsIGNvbmZpZz1zZWxmLmNvbmZpZworICAgICAgICApICAjIHR5cGU6IFR1cGxl
W3N0ciwgc3RyLCBVbmlvbltzdHIsIFR1cGxlW3N0ciwgTWFwcGluZ1tzdHIsIGJvb2xdXV1dCisg
ICAgICAgIGNhdGVnb3J5LCBsZXR0ZXIsIHdvcmQgPSByZXMKKyAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2Uod29yZCwgdHVwbGUpOgogICAgICAgICAgICAgbWFya3VwID0gTm9uZQotICAgICAgICBz
ZWxmLnN0YXRzLnNldGRlZmF1bHQoY2F0LCBbXSkuYXBwZW5kKHJlcCkKLSAgICAgICAgc2VsZi5f
dGVzdHNfcmFuID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd29yZCwgbWFya3Vw
ID0gd29yZAorICAgICAgICBzZWxmLl9hZGRfc3RhdHMoY2F0ZWdvcnksIFtyZXBdKQogICAgICAg
ICBpZiBub3QgbGV0dGVyIGFuZCBub3Qgd29yZDoKLSAgICAgICAgICAgICMgcHJvYmFibHkgcGFz
c2VkIHNldHVwL3RlYXJkb3duCisgICAgICAgICAgICAjIFByb2JhYmx5IHBhc3NlZCBzZXR1cC90
ZWFyZG93bi4KICAgICAgICAgICAgIHJldHVybgogICAgICAgICBydW5uaW5nX3hkaXN0ID0gaGFz
YXR0cihyZXAsICJub2RlIikKLSAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPD0gMDoKLSAgICAg
ICAgICAgIGlmIG5vdCBydW5uaW5nX3hkaXN0IGFuZCBzZWxmLnNob3dmc3BhdGg6Ci0gICAgICAg
ICAgICAgICAgc2VsZi53cml0ZV9mc3BhdGhfcmVzdWx0KHJlcC5ub2RlaWQsIGxldHRlcikKKyAg
ICAgICAgaWYgbWFya3VwIGlzIE5vbmU6CisgICAgICAgICAgICB3YXNfeGZhaWwgPSBoYXNhdHRy
KHJlcG9ydCwgIndhc3hmYWlsIikKKyAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQgYW5kIG5vdCB3
YXNfeGZhaWw6CisgICAgICAgICAgICAgICAgbWFya3VwID0geyJncmVlbiI6IFRydWV9CisgICAg
ICAgICAgICBlbGlmIHJlcC5wYXNzZWQgYW5kIHdhc194ZmFpbDoKKyAgICAgICAgICAgICAgICBt
YXJrdXAgPSB7InllbGxvdyI6IFRydWV9CisgICAgICAgICAgICBlbGlmIHJlcC5mYWlsZWQ6Cisg
ICAgICAgICAgICAgICAgbWFya3VwID0geyJyZWQiOiBUcnVlfQorICAgICAgICAgICAgZWxpZiBy
ZXAuc2tpcHBlZDoKKyAgICAgICAgICAgICAgICBtYXJrdXAgPSB7InllbGxvdyI6IFRydWV9CiAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LndyaXRlKGxldHRlcikK
KyAgICAgICAgICAgICAgICBtYXJrdXAgPSB7fQorICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA8
PSAwOgorICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUobGV0dGVyLCAqKm1hcmt1cCkKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3Byb2dyZXNzX25vZGVpZHNfcmVwb3J0ZWQuYWRk
KHJlcC5ub2RlaWQpCi0gICAgICAgICAgICBpZiBtYXJrdXAgaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICBpZiByZXAucGFzc2VkOgotICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7ImdyZWVu
IjogVHJ1ZX0KLSAgICAgICAgICAgICAgICBlbGlmIHJlcC5mYWlsZWQ6Ci0gICAgICAgICAgICAg
ICAgICAgIG1hcmt1cCA9IHsicmVkIjogVHJ1ZX0KLSAgICAgICAgICAgICAgICBlbGlmIHJlcC5z
a2lwcGVkOgotICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7InllbGxvdyI6IFRydWV9Ci0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbWFya3VwID0ge30KICAg
ICAgICAgICAgIGxpbmUgPSBzZWxmLl9sb2NhdGlvbmxpbmUocmVwLm5vZGVpZCwgKnJlcC5sb2Nh
dGlvbikKICAgICAgICAgICAgIGlmIG5vdCBydW5uaW5nX3hkaXN0OgogICAgICAgICAgICAgICAg
IHNlbGYud3JpdGVfZW5zdXJlX3ByZWZpeChsaW5lLCB3b3JkLCAqKm1hcmt1cCkKQEAgLTQwMyw3
NCArNTU4LDExNCBAQCBjbGFzcyBUZXJtaW5hbFJlcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgc2VsZi5fdHcud3JpdGUod29yZCwgKiptYXJrdXApCiAgICAgICAgICAgICAgICAgc2Vs
Zi5fdHcud3JpdGUoIiAiICsgbGluZSkKICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRmc3Bh
dGggPSAtMgorICAgICAgICBzZWxmLmZsdXNoKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBf
aXNfbGFzdF9pdGVtKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIGFzc2VydCBzZWxmLl9zZXNzaW9u
IGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fcHJvZ3Jlc3Nfbm9kZWlkc19y
ZXBvcnRlZCkgPT0gc2VsZi5fc2Vzc2lvbi50ZXN0c2NvbGxlY3RlZAogCi0gICAgZGVmIHB5dGVz
dF9ydW50ZXN0X2xvZ2ZpbmlzaChzZWxmLCBub2RlaWQpOgorICAgIGRlZiBweXRlc3RfcnVudGVz
dF9sb2dmaW5pc2goc2VsZiwgbm9kZWlkOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBz
ZWxmLl9zZXNzaW9uCiAgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5IDw9IDAgYW5kIHNlbGYuX3No
b3dfcHJvZ3Jlc3NfaW5mbzoKKyAgICAgICAgICAgIGlmIHNlbGYuX3Nob3dfcHJvZ3Jlc3NfaW5m
byA9PSAiY291bnQiOgorICAgICAgICAgICAgICAgIG51bV90ZXN0cyA9IHNlbGYuX3Nlc3Npb24u
dGVzdHNjb2xsZWN0ZWQKKyAgICAgICAgICAgICAgICBwcm9ncmVzc19sZW5ndGggPSBsZW4oIiBb
e30ve31dIi5mb3JtYXQoc3RyKG51bV90ZXN0cyksIHN0cihudW1fdGVzdHMpKSkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NfbGVuZ3RoID0gbGVuKCIgWzEwMCVd
IikKKwogICAgICAgICAgICAgc2VsZi5fcHJvZ3Jlc3Nfbm9kZWlkc19yZXBvcnRlZC5hZGQobm9k
ZWlkKQotICAgICAgICAgICAgbGFzdF9pdGVtID0gbGVuKAotICAgICAgICAgICAgICAgIHNlbGYu
X3Byb2dyZXNzX25vZGVpZHNfcmVwb3J0ZWQKLSAgICAgICAgICAgICkgPT0gc2VsZi5fc2Vzc2lv
bi50ZXN0c2NvbGxlY3RlZAotICAgICAgICAgICAgaWYgbGFzdF9pdGVtOgorCisgICAgICAgICAg
ICBpZiBzZWxmLl9pc19sYXN0X2l0ZW06CiAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcHJv
Z3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZSgpCiAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHBhc3RfZWRnZSA9IHNlbGYuX3R3LmNoYXJzX29uX2N1cnJlbnRfbGluZSAr
IHNlbGYuX1BST0dSRVNTX0xFTkdUSCArIDEgPj0gc2VsZi5fc2NyZWVuX3dpZHRoCisgICAgICAg
ICAgICAgICAgbWFpbl9jb2xvciwgXyA9IHNlbGYuX2dldF9tYWluX2NvbG9yKCkKKyAgICAgICAg
ICAgICAgICB3ID0gc2VsZi5fd2lkdGhfb2ZfY3VycmVudF9saW5lCisgICAgICAgICAgICAgICAg
cGFzdF9lZGdlID0gdyArIHByb2dyZXNzX2xlbmd0aCArIDEgPj0gc2VsZi5fc2NyZWVuX3dpZHRo
CiAgICAgICAgICAgICAgICAgaWYgcGFzdF9lZGdlOgogICAgICAgICAgICAgICAgICAgICBtc2cg
PSBzZWxmLl9nZXRfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fbWVzc2FnZSgpCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3R3LndyaXRlKG1zZyArICJcbiIsIGN5YW49VHJ1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fdHcud3JpdGUobXNnICsgIlxuIiwgKip7bWFpbl9jb2xvcjogVHJ1ZX0p
CiAKLSAgICBfUFJPR1JFU1NfTEVOR1RIID0gbGVuKCIgWzEwMCVdIikKLQotICAgIGRlZiBfZ2V0
X3Byb2dyZXNzX2luZm9ybWF0aW9uX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY29u
ZmlnLmdldG9wdGlvbigiY2FwdHVyZSIpID09ICJubyI6Ci0gICAgICAgICAgICByZXR1cm4gIiIK
KyAgICBkZWYgX2dldF9wcm9ncmVzc19pbmZvcm1hdGlvbl9tZXNzYWdlKHNlbGYpIC0+IHN0cjoK
KyAgICAgICAgYXNzZXJ0IHNlbGYuX3Nlc3Npb24KICAgICAgICAgY29sbGVjdGVkID0gc2VsZi5f
c2Vzc2lvbi50ZXN0c2NvbGxlY3RlZAotICAgICAgICBpZiBjb2xsZWN0ZWQ6Ci0gICAgICAgICAg
ICBwcm9ncmVzcyA9IGxlbihzZWxmLl9wcm9ncmVzc19ub2RlaWRzX3JlcG9ydGVkKSAqIDEwMCAv
LyBjb2xsZWN0ZWQKLSAgICAgICAgICAgIHJldHVybiAiIFt7OjNkfSVdIi5mb3JtYXQocHJvZ3Jl
c3MpCi0gICAgICAgIHJldHVybiAiIFsxMDAlXSIKKyAgICAgICAgaWYgc2VsZi5fc2hvd19wcm9n
cmVzc19pbmZvID09ICJjb3VudCI6CisgICAgICAgICAgICBpZiBjb2xsZWN0ZWQ6CisgICAgICAg
ICAgICAgICAgcHJvZ3Jlc3MgPSBzZWxmLl9wcm9ncmVzc19ub2RlaWRzX3JlcG9ydGVkCisgICAg
ICAgICAgICAgICAgY291bnRlcl9mb3JtYXQgPSAie3s6e31kfX0iLmZvcm1hdChsZW4oc3RyKGNv
bGxlY3RlZCkpKQorICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSAiIFt7fS97e319XSIu
Zm9ybWF0KGNvdW50ZXJfZm9ybWF0KQorICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRfc3Ry
aW5nLmZvcm1hdChsZW4ocHJvZ3Jlc3MpLCBjb2xsZWN0ZWQpCisgICAgICAgICAgICByZXR1cm4g
IiBbIHt9IC8ge30gXSIuZm9ybWF0KGNvbGxlY3RlZCwgY29sbGVjdGVkKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgaWYgY29sbGVjdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAiIFt7
OjNkfSVdIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLl9wcm9ncmVzc19u
b2RlaWRzX3JlcG9ydGVkKSAqIDEwMCAvLyBjb2xsZWN0ZWQKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICByZXR1cm4gIiBbMTAwJV0iCiAKLSAgICBkZWYgX3dyaXRlX3Byb2dyZXNzX2lu
Zm9ybWF0aW9uX2ZpbGxpbmdfc3BhY2Uoc2VsZik6CisgICAgZGVmIF93cml0ZV9wcm9ncmVzc19p
bmZvcm1hdGlvbl9maWxsaW5nX3NwYWNlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGNvbG9yLCBf
ID0gc2VsZi5fZ2V0X21haW5fY29sb3IoKQogICAgICAgICBtc2cgPSBzZWxmLl9nZXRfcHJvZ3Jl
c3NfaW5mb3JtYXRpb25fbWVzc2FnZSgpCi0gICAgICAgIGZpbGwgPSAiICIgKiAoCi0gICAgICAg
ICAgICBzZWxmLl90dy5mdWxsd2lkdGggLSBzZWxmLl90dy5jaGFyc19vbl9jdXJyZW50X2xpbmUg
LSBsZW4obXNnKSAtIDEKLSAgICAgICAgKQotICAgICAgICBzZWxmLndyaXRlKGZpbGwgKyBtc2cs
IGN5YW49VHJ1ZSkKKyAgICAgICAgdyA9IHNlbGYuX3dpZHRoX29mX2N1cnJlbnRfbGluZQorICAg
ICAgICBmaWxsID0gc2VsZi5fdHcuZnVsbHdpZHRoIC0gdyAtIDEKKyAgICAgICAgc2VsZi53cml0
ZShtc2cucmp1c3QoZmlsbCksIGZsdXNoPVRydWUsICoqe2NvbG9yOiBUcnVlfSkKIAotICAgIGRl
ZiBweXRlc3RfY29sbGVjdGlvbihzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNhdHR5IGFu
ZCBzZWxmLmNvbmZpZy5vcHRpb24udmVyYm9zZSA+PSAxOgotICAgICAgICAgICAgc2VsZi53cml0
ZSgiY29sbGVjdGluZyAuLi4gIiwgYm9sZD1UcnVlKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBf
d2lkdGhfb2ZfY3VycmVudF9saW5lKHNlbGYpIC0+IGludDoKKyAgICAgICAgIiIiUmV0dXJuIHRo
ZSB3aWR0aCBvZiB0aGUgY3VycmVudCBsaW5lLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fdHcu
d2lkdGhfb2ZfY3VycmVudF9saW5lCiAKLSAgICBkZWYgcHl0ZXN0X2NvbGxlY3RyZXBvcnQoc2Vs
ZiwgcmVwb3J0KToKKyAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgaWYgc2VsZi5pc2F0dHk6CisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24u
dmVyYm9zZSA+PSAwOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoImNvbGxlY3RpbmcgLi4u
ICIsIGZsdXNoPVRydWUsIGJvbGQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb2xsZWN0
X3JlcG9ydF9sYXN0X3dyaXRlID0gdGltaW5nLnRpbWUoKQorICAgICAgICBlbGlmIHNlbGYuY29u
ZmlnLm9wdGlvbi52ZXJib3NlID49IDE6CisgICAgICAgICAgICBzZWxmLndyaXRlKCJjb2xsZWN0
aW5nIC4uLiAiLCBmbHVzaD1UcnVlLCBib2xkPVRydWUpCisKKyAgICBkZWYgcHl0ZXN0X2NvbGxl
Y3RyZXBvcnQoc2VsZiwgcmVwb3J0OiBDb2xsZWN0UmVwb3J0KSAtPiBOb25lOgogICAgICAgICBp
ZiByZXBvcnQuZmFpbGVkOgotICAgICAgICAgICAgc2VsZi5zdGF0cy5zZXRkZWZhdWx0KCJlcnJv
ciIsIFtdKS5hcHBlbmQocmVwb3J0KQorICAgICAgICAgICAgc2VsZi5fYWRkX3N0YXRzKCJlcnJv
ciIsIFtyZXBvcnRdKQogICAgICAgICBlbGlmIHJlcG9ydC5za2lwcGVkOgotICAgICAgICAgICAg
c2VsZi5zdGF0cy5zZXRkZWZhdWx0KCJza2lwcGVkIiwgW10pLmFwcGVuZChyZXBvcnQpCisgICAg
ICAgICAgICBzZWxmLl9hZGRfc3RhdHMoInNraXBwZWQiLCBbcmVwb3J0XSkKICAgICAgICAgaXRl
bXMgPSBbeCBmb3IgeCBpbiByZXBvcnQucmVzdWx0IGlmIGlzaW5zdGFuY2UoeCwgcHl0ZXN0Lkl0
ZW0pXQogICAgICAgICBzZWxmLl9udW1jb2xsZWN0ZWQgKz0gbGVuKGl0ZW1zKQogICAgICAgICBp
ZiBzZWxmLmlzYXR0eToKLSAgICAgICAgICAgICMgc2VsZi53cml0ZV9mc3BhdGhfcmVzdWx0KHJl
cG9ydC5ub2RlaWQsICdFJykKICAgICAgICAgICAgIHNlbGYucmVwb3J0X2NvbGxlY3QoKQogCi0g
ICAgZGVmIHJlcG9ydF9jb2xsZWN0KHNlbGYsIGZpbmFsPUZhbHNlKToKKyAgICBkZWYgcmVwb3J0
X2NvbGxlY3Qoc2VsZiwgZmluYWw6IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKICAgICAgICAgaWYg
c2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPCAwOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAg
ICAgICAgaWYgbm90IGZpbmFsOgorICAgICAgICAgICAgIyBPbmx5IHdyaXRlICJjb2xsZWN0aW5n
IiByZXBvcnQgZXZlcnkgMC41cy4KKyAgICAgICAgICAgIHQgPSB0aW1pbmcudGltZSgpCisgICAg
ICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5fY29sbGVjdF9yZXBvcnRfbGFzdF93
cml0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9jb2xsZWN0X3JlcG9y
dF9sYXN0X3dyaXRlID4gdCAtIFJFUE9SVF9DT0xMRUNUSU5HX1JFU09MVVRJT04KKyAgICAgICAg
ICAgICk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxmLl9jb2xsZWN0
X3JlcG9ydF9sYXN0X3dyaXRlID0gdAorCiAgICAgICAgIGVycm9ycyA9IGxlbihzZWxmLnN0YXRz
LmdldCgiZXJyb3IiLCBbXSkpCiAgICAgICAgIHNraXBwZWQgPSBsZW4oc2VsZi5zdGF0cy5nZXQo
InNraXBwZWQiLCBbXSkpCiAgICAgICAgIGRlc2VsZWN0ZWQgPSBsZW4oc2VsZi5zdGF0cy5nZXQo
ImRlc2VsZWN0ZWQiLCBbXSkpCisgICAgICAgIHNlbGVjdGVkID0gc2VsZi5fbnVtY29sbGVjdGVk
IC0gZXJyb3JzIC0gc2tpcHBlZCAtIGRlc2VsZWN0ZWQKICAgICAgICAgaWYgZmluYWw6CiAgICAg
ICAgICAgICBsaW5lID0gImNvbGxlY3RlZCAiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBs
aW5lID0gImNvbGxlY3RpbmcgIgotICAgICAgICBsaW5lICs9IHN0cihzZWxmLl9udW1jb2xsZWN0
ZWQpICsgIiBpdGVtIiArICgKLSAgICAgICAgICAgICIiIGlmIHNlbGYuX251bWNvbGxlY3RlZCA9
PSAxIGVsc2UgInMiCisgICAgICAgIGxpbmUgKz0gKAorICAgICAgICAgICAgc3RyKHNlbGYuX251
bWNvbGxlY3RlZCkgKyAiIGl0ZW0iICsgKCIiIGlmIHNlbGYuX251bWNvbGxlY3RlZCA9PSAxIGVs
c2UgInMiKQogICAgICAgICApCiAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgIGxpbmUg
Kz0gIiAvICVkIGVycm9ycyIgJSBlcnJvcnMKKyAgICAgICAgICAgIGxpbmUgKz0gIiAvICVkIGVy
cm9yJXMiICUgKGVycm9ycywgInMiIGlmIGVycm9ycyAhPSAxIGVsc2UgIiIpCiAgICAgICAgIGlm
IGRlc2VsZWN0ZWQ6CiAgICAgICAgICAgICBsaW5lICs9ICIgLyAlZCBkZXNlbGVjdGVkIiAlIGRl
c2VsZWN0ZWQKICAgICAgICAgaWYgc2tpcHBlZDoKICAgICAgICAgICAgIGxpbmUgKz0gIiAvICVk
IHNraXBwZWQiICUgc2tpcHBlZAorICAgICAgICBpZiBzZWxmLl9udW1jb2xsZWN0ZWQgPiBzZWxl
Y3RlZCA+IDA6CisgICAgICAgICAgICBsaW5lICs9ICIgLyAlZCBzZWxlY3RlZCIgJSBzZWxlY3Rl
ZAogICAgICAgICBpZiBzZWxmLmlzYXR0eToKICAgICAgICAgICAgIHNlbGYucmV3cml0ZShsaW5l
LCBib2xkPVRydWUsIGVyYXNlPVRydWUpCiAgICAgICAgICAgICBpZiBmaW5hbDoKQEAgLTQ3OSw3
NCArNjc0LDg4IEBAIGNsYXNzIFRlcm1pbmFsUmVwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAg
IHNlbGYud3JpdGVfbGluZShsaW5lKQogCiAgICAgQHB5dGVzdC5ob29raW1wbCh0cnlsYXN0PVRy
dWUpCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYpOgotICAgICAg
ICBzZWxmLnJlcG9ydF9jb2xsZWN0KFRydWUpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxh
c3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxmLCBzZXNzaW9uKToKKyAg
ICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxmLCBzZXNzaW9uOiAiU2Vzc2lvbiIpIC0+IE5v
bmU6CiAgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBzZXNzaW9uCi0gICAgICAgIHNlbGYuX3Nlc3Np
b25zdGFydHRpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLl9zZXNzaW9uc3RhcnR0aW1l
ID0gdGltaW5nLnRpbWUoKQogICAgICAgICBpZiBub3Qgc2VsZi5zaG93aGVhZGVyOgogICAgICAg
ICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgInRlc3Qgc2Vzc2lvbiBz
dGFydHMiLCBib2xkPVRydWUpCiAgICAgICAgIHZlcmluZm8gPSBwbGF0Zm9ybS5weXRob25fdmVy
c2lvbigpCi0gICAgICAgIG1zZyA9ICJwbGF0Zm9ybSAlcyAtLSBQeXRob24gJXMiICUgKHN5cy5w
bGF0Zm9ybSwgdmVyaW5mbykKLSAgICAgICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25f
aW5mbyIpOgotICAgICAgICAgICAgdmVyaW5mbyA9ICIuIi5qb2luKG1hcChzdHIsIHN5cy5weXB5
X3ZlcnNpb25faW5mb1s6M10pKQotICAgICAgICAgICAgbXNnICs9ICJbcHlweS0lcy0lc10iICUg
KHZlcmluZm8sIHN5cy5weXB5X3ZlcnNpb25faW5mb1szXSkKLSAgICAgICAgbXNnICs9ICIsIHB5
dGVzdC0lcywgcHktJXMsIHBsdWdneS0lcyIgJSAoCi0gICAgICAgICAgICBweXRlc3QuX192ZXJz
aW9uX18sIHB5Ll9fdmVyc2lvbl9fLCBwbHVnZ3kuX192ZXJzaW9uX18KLSAgICAgICAgKQotICAg
ICAgICBpZiAoCi0gICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA+IDAKLSAgICAgICAgICAgIG9y
IHNlbGYuY29uZmlnLm9wdGlvbi5kZWJ1ZwotICAgICAgICAgICAgb3IgZ2V0YXR0cihzZWxmLmNv
bmZpZy5vcHRpb24sICJwYXN0ZWJpbiIsIE5vbmUpCi0gICAgICAgICk6Ci0gICAgICAgICAgICBt
c2cgKz0gIiAtLSAiICsgc3RyKHN5cy5leGVjdXRhYmxlKQotICAgICAgICBzZWxmLndyaXRlX2xp
bmUobXNnKQotICAgICAgICBsaW5lcyA9IHNlbGYuY29uZmlnLmhvb2sucHl0ZXN0X3JlcG9ydF9o
ZWFkZXIoCi0gICAgICAgICAgICBjb25maWc9c2VsZi5jb25maWcsIHN0YXJ0ZGlyPXNlbGYuc3Rh
cnRkaXIKLSAgICAgICAgKQotICAgICAgICBzZWxmLl93cml0ZV9yZXBvcnRfbGluZXNfZnJvbV9o
b29rcyhsaW5lcykKKyAgICAgICAgaWYgbm90IHNlbGYubm9faGVhZGVyOgorICAgICAgICAgICAg
bXNnID0gInBsYXRmb3JtIHt9IC0tIFB5dGhvbiB7fSIuZm9ybWF0KHN5cy5wbGF0Zm9ybSwgdmVy
aW5mbykKKyAgICAgICAgICAgIHB5cHlfdmVyc2lvbl9pbmZvID0gZ2V0YXR0cihzeXMsICJweXB5
X3ZlcnNpb25faW5mbyIsIE5vbmUpCisgICAgICAgICAgICBpZiBweXB5X3ZlcnNpb25faW5mbzoK
KyAgICAgICAgICAgICAgICB2ZXJpbmZvID0gIi4iLmpvaW4obWFwKHN0ciwgcHlweV92ZXJzaW9u
X2luZm9bOjNdKSkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIltweXB5LXt9LXt9XSIuZm9ybWF0
KHZlcmluZm8sIHB5cHlfdmVyc2lvbl9pbmZvWzNdKQorICAgICAgICAgICAgbXNnICs9ICIsIHB5
dGVzdC17fSwgcHkte30sIHBsdWdneS17fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHB5dGVz
dC5fX3ZlcnNpb25fXywgcHkuX192ZXJzaW9uX18sIHBsdWdneS5fX3ZlcnNpb25fXworICAgICAg
ICAgICAgKQorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5
ID4gMAorICAgICAgICAgICAgICAgIG9yIHNlbGYuY29uZmlnLm9wdGlvbi5kZWJ1ZworICAgICAg
ICAgICAgICAgIG9yIGdldGF0dHIoc2VsZi5jb25maWcub3B0aW9uLCAicGFzdGViaW4iLCBOb25l
KQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBtc2cgKz0gIiAtLSAiICsgc3RyKHN5
cy5leGVjdXRhYmxlKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKG1zZykKKyAgICAgICAg
ICAgIGxpbmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X2hlYWRlcigKKyAgICAg
ICAgICAgICAgICBjb25maWc9c2VsZi5jb25maWcsIHN0YXJ0ZGlyPXNlbGYuc3RhcnRkaXIKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hv
b2tzKGxpbmVzKQorCisgICAgZGVmIF93cml0ZV9yZXBvcnRfbGluZXNfZnJvbV9ob29rcygKKyAg
ICAgICAgc2VsZiwgbGluZXM6IFNlcXVlbmNlW1VuaW9uW3N0ciwgU2VxdWVuY2Vbc3RyXV1dCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBmb3IgbGluZV9vcl9saW5lcyBpbiByZXZlcnNlZChsaW5l
cyk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmVfb3JfbGluZXMsIHN0cik6CisgICAg
ICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGxpbmVfb3JfbGluZXMpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVfb3JfbGluZXM6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShsaW5lKQogCi0gICAgZGVmIF93cml0ZV9yZXBv
cnRfbGluZXNfZnJvbV9ob29rcyhzZWxmLCBsaW5lcyk6Ci0gICAgICAgIGxpbmVzLnJldmVyc2Uo
KQotICAgICAgICBmb3IgbGluZSBpbiBjb2xsYXBzZShsaW5lcyk6Ci0gICAgICAgICAgICBzZWxm
LndyaXRlX2xpbmUobGluZSkKKyAgICBkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoc2VsZiwgY29u
ZmlnOiBDb25maWcpIC0+IExpc3Rbc3RyXToKKyAgICAgICAgbGluZSA9ICJyb290ZGlyOiAlcyIg
JSBjb25maWcucm9vdHBhdGgKKworICAgICAgICBpZiBjb25maWcuaW5pcGF0aDoKKyAgICAgICAg
ICAgIGxpbmUgKz0gIiwgY29uZmlnZmlsZTogIiArIGJlc3RyZWxwYXRoKGNvbmZpZy5yb290cGF0
aCwgY29uZmlnLmluaXBhdGgpCiAKLSAgICBkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoc2VsZiwg
Y29uZmlnKToKLSAgICAgICAgaW5pZmlsZSA9ICIiCi0gICAgICAgIGlmIGNvbmZpZy5pbmlmaWxl
OgotICAgICAgICAgICAgaW5pZmlsZSA9ICIgIiArIGNvbmZpZy5yb290ZGlyLmJlc3RyZWxwYXRo
KGNvbmZpZy5pbmlmaWxlKQotICAgICAgICBsaW5lcyA9IFsicm9vdGRpcjogJXMsIGluaWZpbGU6
JXMiICUgKGNvbmZpZy5yb290ZGlyLCBpbmlmaWxlKV0KKyAgICAgICAgdGVzdHBhdGhzID0gY29u
ZmlnLmdldGluaSgidGVzdHBhdGhzIikgICMgdHlwZTogTGlzdFtzdHJdCisgICAgICAgIGlmIHRl
c3RwYXRocyBhbmQgY29uZmlnLmFyZ3MgPT0gdGVzdHBhdGhzOgorICAgICAgICAgICAgbGluZSAr
PSAiLCB0ZXN0cGF0aHM6IHt9Ii5mb3JtYXQoIiwgIi5qb2luKHRlc3RwYXRocykpCisKKyAgICAg
ICAgcmVzdWx0ID0gW2xpbmVdCiAKICAgICAgICAgcGx1Z2luaW5mbyA9IGNvbmZpZy5wbHVnaW5t
YW5hZ2VyLmxpc3RfcGx1Z2luX2Rpc3RpbmZvKCkKICAgICAgICAgaWYgcGx1Z2luaW5mbzoKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInBsdWdpbnM6ICVzIiAlICIsICIuam9pbihfcGx1Z2lu
X25hbWV2ZXJzaW9ucyhwbHVnaW5pbmZvKSkpCisgICAgICAgIHJldHVybiByZXN1bHQKIAotICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCJwbHVnaW5zOiAlcyIgJSAiLCAiLmpvaW4oX3BsdWdpbl9u
YW1ldmVyc2lvbnMocGx1Z2luaW5mbykpKQotICAgICAgICByZXR1cm4gbGluZXMKKyAgICBkZWYg
cHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNoKHNlbGYsIHNlc3Npb246ICJTZXNzaW9uIikgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5yZXBvcnRfY29sbGVjdChUcnVlKQogCi0gICAgZGVmIHB5dGVzdF9j
b2xsZWN0aW9uX2ZpbmlzaChzZWxmLCBzZXNzaW9uKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcu
b3B0aW9uLmNvbGxlY3Rvbmx5OgotICAgICAgICAgICAgc2VsZi5fcHJpbnRjb2xsZWN0ZWRpdGVt
cyhzZXNzaW9uLml0ZW1zKQotICAgICAgICAgICAgaWYgc2VsZi5zdGF0cy5nZXQoImZhaWxlZCIp
OgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LnNlcCgiISIsICJjb2xsZWN0aW9uIGZhaWx1cmVz
IikKLSAgICAgICAgICAgICAgICBmb3IgcmVwIGluIHNlbGYuc3RhdHMuZ2V0KCJmYWlsZWQiKToK
LSAgICAgICAgICAgICAgICAgICAgcmVwLnRvdGVybWluYWwoc2VsZi5fdHcpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIDEKLSAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgIGxpbmVzID0gc2Vs
Zi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2goCiAgICAgICAgICAg
ICBjb25maWc9c2VsZi5jb25maWcsIHN0YXJ0ZGlyPXNlbGYuc3RhcnRkaXIsIGl0ZW1zPXNlc3Np
b24uaXRlbXMKICAgICAgICAgKQogICAgICAgICBzZWxmLl93cml0ZV9yZXBvcnRfbGluZXNfZnJv
bV9ob29rcyhsaW5lcykKIAotICAgIGRlZiBfcHJpbnRjb2xsZWN0ZWRpdGVtcyhzZWxmLCBpdGVt
cyk6Ci0gICAgICAgICMgdG8gcHJpbnQgb3V0IGl0ZW1zIGFuZCB0aGVpciBwYXJlbnQgY29sbGVj
dG9ycworICAgICAgICBpZiBzZWxmLmNvbmZpZy5nZXRvcHRpb24oImNvbGxlY3Rvbmx5Iik6Cisg
ICAgICAgICAgICBpZiBzZXNzaW9uLml0ZW1zOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29u
ZmlnLm9wdGlvbi52ZXJib3NlID4gLTE6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3R3Lmxp
bmUoIiIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRjb2xsZWN0ZWRpdGVtcyhzZXNzaW9u
Lml0ZW1zKQorCisgICAgICAgICAgICBmYWlsZWQgPSBzZWxmLnN0YXRzLmdldCgiZmFpbGVkIikK
KyAgICAgICAgICAgIGlmIGZhaWxlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl90dy5zZXAoIiEi
LCAiY29sbGVjdGlvbiBmYWlsdXJlcyIpCisgICAgICAgICAgICAgICAgZm9yIHJlcCBpbiBmYWls
ZWQ6CisgICAgICAgICAgICAgICAgICAgIHJlcC50b3Rlcm1pbmFsKHNlbGYuX3R3KQorCisgICAg
ZGVmIF9wcmludGNvbGxlY3RlZGl0ZW1zKHNlbGYsIGl0ZW1zOiBTZXF1ZW5jZVtJdGVtXSkgLT4g
Tm9uZToKKyAgICAgICAgIyBUbyBwcmludCBvdXQgaXRlbXMgYW5kIHRoZWlyIHBhcmVudCBjb2xs
ZWN0b3JzCiAgICAgICAgICMgd2UgdGFrZSBjYXJlIHRvIGxlYXZlIG91dCBJbnN0YW5jZXMgYWth
ICgpCi0gICAgICAgICMgYmVjYXVzZSBsYXRlciB2ZXJzaW9ucyBhcmUgZ29pbmcgdG8gZ2V0IHJp
ZCBvZiB0aGVtIGFueXdheQorICAgICAgICAjIGJlY2F1c2UgbGF0ZXIgdmVyc2lvbnMgYXJlIGdv
aW5nIHRvIGdldCByaWQgb2YgdGhlbSBhbnl3YXkuCiAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9w
dGlvbi52ZXJib3NlIDwgMDoKICAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi52ZXJi
b3NlIDwgLTE6Ci0gICAgICAgICAgICAgICAgY291bnRzID0ge30KKyAgICAgICAgICAgICAgICBj
b3VudHMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgaW50XQogICAgICAgICAgICAgICAgIGZvciBp
dGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgICAgICBuYW1lID0gaXRlbS5ub2RlaWQuc3Bs
aXQoIjo6IiwgMSlbMF0KICAgICAgICAgICAgICAgICAgICAgY291bnRzW25hbWVdID0gY291bnRz
LmdldChuYW1lLCAwKSArIDEKQEAgLTU1NCw2MyArNzYzLDc4IEBAIGNsYXNzIFRlcm1pbmFsUmVw
b3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZSgiJXM6ICVk
IiAlIChuYW1lLCBjb3VudCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgICAgICAgICBub2RlaWQgPSBpdGVtLm5vZGVp
ZAotICAgICAgICAgICAgICAgICAgICBub2RlaWQgPSBub2RlaWQucmVwbGFjZSgiOjooKTo6Iiwg
Ijo6IikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZShub2RlaWQpCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoaXRlbS5ub2RlaWQpCiAgICAgICAgICAgICByZXR1
cm4KLSAgICAgICAgc3RhY2sgPSBbXQorICAgICAgICBzdGFjayA9IFtdICAjIHR5cGU6IExpc3Rb
Tm9kZV0KICAgICAgICAgaW5kZW50ID0gIiIKICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAg
ICAgICAgICAgICBuZWVkZWRfY29sbGVjdG9ycyA9IGl0ZW0ubGlzdGNoYWluKClbMTpdICAjIHN0
cmlwIHJvb3Qgbm9kZQogICAgICAgICAgICAgd2hpbGUgc3RhY2s6Ci0gICAgICAgICAgICAgICAg
aWYgc3RhY2sgPT0gbmVlZGVkX2NvbGxlY3RvcnNbOmxlbihzdGFjayldOgorICAgICAgICAgICAg
ICAgIGlmIHN0YWNrID09IG5lZWRlZF9jb2xsZWN0b3JzWzogbGVuKHN0YWNrKV06CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgc3RhY2sucG9wKCkKLSAgICAgICAg
ICAgIGZvciBjb2wgaW4gbmVlZGVkX2NvbGxlY3RvcnNbbGVuKHN0YWNrKTpdOgorICAgICAgICAg
ICAgZm9yIGNvbCBpbiBuZWVkZWRfY29sbGVjdG9yc1tsZW4oc3RhY2spIDpdOgogICAgICAgICAg
ICAgICAgIHN0YWNrLmFwcGVuZChjb2wpCi0gICAgICAgICAgICAgICAgIyBpZiBjb2wubmFtZSA9
PSAiKCkiOgotICAgICAgICAgICAgICAgICMgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBp
ZiBjb2wubmFtZSA9PSAiKCkiOiAgIyBTa2lwIEluc3RhbmNlcy4KKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKICAgICAgICAgICAgICAgICBpbmRlbnQgPSAobGVuKHN0YWNrKSAtIDEpICog
IiAgIgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoIiVzJXMiICUgKGluZGVudCwgY29s
KSkKKyAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKCJ7fXt9Ii5mb3JtYXQoaW5kZW50LCBj
b2wpKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi52ZXJib3NlID49IDE6
CisgICAgICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIoY29sLCAib2JqIiwgTm9uZSkKKyAg
ICAgICAgICAgICAgICAgICAgZG9jID0gaW5zcGVjdC5nZXRkb2Mob2JqKSBpZiBvYmogZWxzZSBO
b25lCisgICAgICAgICAgICAgICAgICAgIGlmIGRvYzoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBsaW5lIGluIGRvYy5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fdHcubGluZSgie317fSIuZm9ybWF0KGluZGVudCArICIgICIsIGxpbmUpKQogCiAg
ICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3Rfc2Vz
c2lvbmZpbmlzaChzZWxmLCBleGl0c3RhdHVzKToKKyAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5p
c2goCisgICAgICAgIHNlbGYsIHNlc3Npb246ICJTZXNzaW9uIiwgZXhpdHN0YXR1czogVW5pb25b
aW50LCBFeGl0Q29kZV0KKyAgICApOgogICAgICAgICBvdXRjb21lID0geWllbGQKICAgICAgICAg
b3V0Y29tZS5nZXRfcmVzdWx0KCkKICAgICAgICAgc2VsZi5fdHcubGluZSgiIikKICAgICAgICAg
c3VtbWFyeV9leGl0X2NvZGVzID0gKAotICAgICAgICAgICAgRVhJVF9PSywKLSAgICAgICAgICAg
IEVYSVRfVEVTVFNGQUlMRUQsCi0gICAgICAgICAgICBFWElUX0lOVEVSUlVQVEVELAotICAgICAg
ICAgICAgRVhJVF9VU0FHRUVSUk9SLAotICAgICAgICAgICAgRVhJVF9OT1RFU1RTQ09MTEVDVEVE
LAorICAgICAgICAgICAgRXhpdENvZGUuT0ssCisgICAgICAgICAgICBFeGl0Q29kZS5URVNUU19G
QUlMRUQsCisgICAgICAgICAgICBFeGl0Q29kZS5JTlRFUlJVUFRFRCwKKyAgICAgICAgICAgIEV4
aXRDb2RlLlVTQUdFX0VSUk9SLAorICAgICAgICAgICAgRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVD
VEVELAogICAgICAgICApCi0gICAgICAgIGlmIGV4aXRzdGF0dXMgaW4gc3VtbWFyeV9leGl0X2Nv
ZGVzOgorICAgICAgICBpZiBleGl0c3RhdHVzIGluIHN1bW1hcnlfZXhpdF9jb2RlcyBhbmQgbm90
IHNlbGYubm9fc3VtbWFyeToKICAgICAgICAgICAgIHNlbGYuY29uZmlnLmhvb2sucHl0ZXN0X3Rl
cm1pbmFsX3N1bW1hcnkoCi0gICAgICAgICAgICAgICAgdGVybWluYWxyZXBvcnRlcj1zZWxmLCBl
eGl0c3RhdHVzPWV4aXRzdGF0dXMKKyAgICAgICAgICAgICAgICB0ZXJtaW5hbHJlcG9ydGVyPXNl
bGYsIGV4aXRzdGF0dXM9ZXhpdHN0YXR1cywgY29uZmlnPXNlbGYuY29uZmlnCiAgICAgICAgICAg
ICApCi0gICAgICAgIGlmIGV4aXRzdGF0dXMgPT0gRVhJVF9JTlRFUlJVUFRFRDoKKyAgICAgICAg
aWYgc2Vzc2lvbi5zaG91bGRmYWlsOgorICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIiEiLCBz
dHIoc2Vzc2lvbi5zaG91bGRmYWlsKSwgcmVkPVRydWUpCisgICAgICAgIGlmIGV4aXRzdGF0dXMg
PT0gRXhpdENvZGUuSU5URVJSVVBURUQ6CiAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfa2V5Ym9h
cmRpbnRlcnJ1cHQoKQotICAgICAgICAgICAgZGVsIHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21l
bW8KKyAgICAgICAgICAgIHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8gPSBOb25lCisgICAg
ICAgIGVsaWYgc2Vzc2lvbi5zaG91bGRzdG9wOgorICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAo
IiEiLCBzdHIoc2Vzc2lvbi5zaG91bGRzdG9wKSwgcmVkPVRydWUpCiAgICAgICAgIHNlbGYuc3Vt
bWFyeV9zdGF0cygpCiAKICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0g
ICAgZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHNlbGYpOgorICAgIGRlZiBweXRlc3RfdGVy
bWluYWxfc3VtbWFyeShzZWxmKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CiAgICAg
ICAgIHNlbGYuc3VtbWFyeV9lcnJvcnMoKQogICAgICAgICBzZWxmLnN1bW1hcnlfZmFpbHVyZXMo
KQotICAgICAgICB5aWVsZAogICAgICAgICBzZWxmLnN1bW1hcnlfd2FybmluZ3MoKQogICAgICAg
ICBzZWxmLnN1bW1hcnlfcGFzc2VzKCkKKyAgICAgICAgeWllbGQKKyAgICAgICAgc2VsZi5zaG9y
dF90ZXN0X3N1bW1hcnkoKQorICAgICAgICAjIERpc3BsYXkgYW55IGV4dHJhIHdhcm5pbmdzIGZy
b20gdGVhcmRvd24gaGVyZSAoaWYgYW55KS4KKyAgICAgICAgc2VsZi5zdW1tYXJ5X3dhcm5pbmdz
KCkKIAotICAgIGRlZiBweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KHNlbGYsIGV4Y2luZm8pOgor
ICAgIGRlZiBweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KHNlbGYsIGV4Y2luZm86IEV4Y2VwdGlv
bkluZm9bQmFzZUV4Y2VwdGlvbl0pIC0+IE5vbmU6CiAgICAgICAgIHNlbGYuX2tleWJvYXJkaW50
ZXJydXB0X21lbW8gPSBleGNpbmZvLmdldHJlcHIoZnVuY2FyZ3M9VHJ1ZSkKIAotICAgIGRlZiBw
eXRlc3RfdW5jb25maWd1cmUoc2VsZik6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIl9rZXli
b2FyZGludGVycnVwdF9tZW1vIik6CisgICAgZGVmIHB5dGVzdF91bmNvbmZpZ3VyZShzZWxmKSAt
PiBOb25lOgorICAgICAgICBpZiBzZWxmLl9rZXlib2FyZGludGVycnVwdF9tZW1vIGlzIG5vdCBO
b25lOgogICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2tleWJvYXJkaW50ZXJydXB0KCkKIAotICAg
IGRlZiBfcmVwb3J0X2tleWJvYXJkaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiBfcmVwb3J0X2tl
eWJvYXJkaW50ZXJydXB0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGV4Y3JlcHIgPSBzZWxmLl9r
ZXlib2FyZGludGVycnVwdF9tZW1vCisgICAgICAgIGFzc2VydCBleGNyZXByIGlzIG5vdCBOb25l
CisgICAgICAgIGFzc2VydCBleGNyZXByLnJlcHJjcmFzaCBpcyBub3QgTm9uZQogICAgICAgICBt
c2cgPSBleGNyZXByLnJlcHJjcmFzaC5tZXNzYWdlCiAgICAgICAgIHNlbGYud3JpdGVfc2VwKCIh
IiwgbXNnKQogICAgICAgICBpZiAiS2V5Ym9hcmRJbnRlcnJ1cHQiIGluIG1zZzoKQEAgLTYxOSwz
NyArODQzLDM3IEBAIGNsYXNzIFRlcm1pbmFsUmVwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICAgICAgZXhjcmVwci5yZXByY3Jhc2gudG90ZXJtaW5hbChzZWxm
Ll90dykKICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKAotICAgICAgICAgICAgICAgICAg
ICAiKHRvIHNob3cgYSBmdWxsIHRyYWNlYmFjayBvbiBLZXlib2FyZEludGVycnVwdCB1c2UgLS1m
dWxsdHJhY2UpIiwKKyAgICAgICAgICAgICAgICAgICAgIih0byBzaG93IGEgZnVsbCB0cmFjZWJh
Y2sgb24gS2V5Ym9hcmRJbnRlcnJ1cHQgdXNlIC0tZnVsbC10cmFjZSkiLAogICAgICAgICAgICAg
ICAgICAgICB5ZWxsb3c9VHJ1ZSwKICAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgX2xvY2F0
aW9ubGluZShzZWxmLCBub2RlaWQsIGZzcGF0aCwgbGluZW5vLCBkb21haW4pOgotCiAgICAgICAg
IGRlZiBta3JlbChub2RlaWQpOgogICAgICAgICAgICAgbGluZSA9IHNlbGYuY29uZmlnLmN3ZF9y
ZWxhdGl2ZV9ub2RlaWQobm9kZWlkKQogICAgICAgICAgICAgaWYgZG9tYWluIGFuZCBsaW5lLmVu
ZHN3aXRoKGRvbWFpbik6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi1sZW4oZG9tYWlu
KV0KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6IC1sZW4oZG9tYWluKV0KICAgICAgICAg
ICAgICAgICB2YWx1ZXMgPSBkb21haW4uc3BsaXQoIlsiKQogICAgICAgICAgICAgICAgIHZhbHVl
c1swXSA9IHZhbHVlc1swXS5yZXBsYWNlKCIuIiwgIjo6IikgICMgZG9uJ3QgcmVwbGFjZSAnLicg
aW4gcGFyYW1zCiAgICAgICAgICAgICAgICAgbGluZSArPSAiWyIuam9pbih2YWx1ZXMpCiAgICAg
ICAgICAgICByZXR1cm4gbGluZQogCi0gICAgICAgICMgY29sbGVjdF9mc3BhdGggY29tZXMgZnJv
bSB0ZXN0aWQgd2hpY2ggaGFzIGEgIi8iLW5vcm1hbGl6ZWQgcGF0aAorICAgICAgICAjIGNvbGxl
Y3RfZnNwYXRoIGNvbWVzIGZyb20gdGVzdGlkIHdoaWNoIGhhcyBhICIvIi1ub3JtYWxpemVkIHBh
dGguCiAKICAgICAgICAgaWYgZnNwYXRoOgotICAgICAgICAgICAgcmVzID0gbWtyZWwobm9kZWlk
KS5yZXBsYWNlKCI6OigpIiwgIiIpICAjIHBhcmVucy1ub3JtYWxpemF0aW9uCi0gICAgICAgICAg
ICBpZiBub2RlaWQuc3BsaXQoIjo6IilbMF0gIT0gZnNwYXRoLnJlcGxhY2UoIlxcIiwgbm9kZXMu
U0VQKToKLSAgICAgICAgICAgICAgICByZXMgKz0gIiA8LSAiICsgc2VsZi5zdGFydGRpci5iZXN0
cmVscGF0aChmc3BhdGgpCisgICAgICAgICAgICByZXMgPSBta3JlbChub2RlaWQpCisgICAgICAg
ICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+PSAyIGFuZCBub2RlaWQuc3BsaXQoIjo6IilbMF0gIT0g
ZnNwYXRoLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgIlxcIiwgbm9kZXMuU0VQCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIHJlcyArPSAiIDwtICIgKyBiZXN0cmVscGF0aChzZWxm
LnN0YXJ0cGF0aCwgZnNwYXRoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzID0gIlts
b2NhdGlvbl0iCiAgICAgICAgIHJldHVybiByZXMgKyAiICIKIAogICAgIGRlZiBfZ2V0ZmFpbHVy
ZWhlYWRsaW5lKHNlbGYsIHJlcCk6Ci0gICAgICAgIGlmIGhhc2F0dHIocmVwLCAibG9jYXRpb24i
KToKLSAgICAgICAgICAgIGZzcGF0aCwgbGluZW5vLCBkb21haW4gPSByZXAubG9jYXRpb24KLSAg
ICAgICAgICAgIHJldHVybiBkb21haW4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVy
biAidGVzdCBzZXNzaW9uIiAgIyBYWFg/CisgICAgICAgIGhlYWRfbGluZSA9IHJlcC5oZWFkX2xp
bmUKKyAgICAgICAgaWYgaGVhZF9saW5lOgorICAgICAgICAgICAgcmV0dXJuIGhlYWRfbGluZQor
ICAgICAgICByZXR1cm4gInRlc3Qgc2Vzc2lvbiIgICMgWFhYPwogCiAgICAgZGVmIF9nZXRjcmFz
aGxpbmUoc2VsZiwgcmVwKToKICAgICAgICAgdHJ5OgpAQCAtNjYxLDkzICs4ODUsMTQ0IEBAIGNs
YXNzIFRlcm1pbmFsUmVwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICByZXR1cm4gIiIK
IAogICAgICMKLSAgICAjIHN1bW1hcmllcyBmb3Igc2Vzc2lvbmZpbmlzaAorICAgICMgU3VtbWFy
aWVzIGZvciBzZXNzaW9uZmluaXNoLgogICAgICMKLSAgICBkZWYgZ2V0cmVwb3J0cyhzZWxmLCBu
YW1lKToKKyAgICBkZWYgZ2V0cmVwb3J0cyhzZWxmLCBuYW1lOiBzdHIpOgogICAgICAgICB2YWx1
ZXMgPSBbXQogICAgICAgICBmb3IgeCBpbiBzZWxmLnN0YXRzLmdldChuYW1lLCBbXSk6CiAgICAg
ICAgICAgICBpZiBub3QgaGFzYXR0cih4LCAiX3BkYnNob3duIik6CiAgICAgICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZCh4KQogICAgICAgICByZXR1cm4gdmFsdWVzCiAKLSAgICBkZWYgc3VtbWFy
eV93YXJuaW5ncyhzZWxmKToKKyAgICBkZWYgc3VtbWFyeV93YXJuaW5ncyhzZWxmKSAtPiBOb25l
OgogICAgICAgICBpZiBzZWxmLmhhc29wdCgidyIpOgotICAgICAgICAgICAgYWxsX3dhcm5pbmdz
ID0gc2VsZi5zdGF0cy5nZXQoIndhcm5pbmdzIikKKyAgICAgICAgICAgIGFsbF93YXJuaW5ncyA9
IHNlbGYuc3RhdHMuZ2V0KAorICAgICAgICAgICAgICAgICJ3YXJuaW5ncyIKKyAgICAgICAgICAg
ICkgICMgdHlwZTogT3B0aW9uYWxbTGlzdFtXYXJuaW5nUmVwb3J0XV0KICAgICAgICAgICAgIGlm
IG5vdCBhbGxfd2FybmluZ3M6CiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAg
IGdyb3VwZWQgPSBpdGVydG9vbHMuZ3JvdXBieSgKLSAgICAgICAgICAgICAgICBhbGxfd2Fybmlu
Z3MsIGtleT1sYW1iZGEgd3I6IHdyLmdldF9sb2NhdGlvbihzZWxmLmNvbmZpZykKLSAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIGZpbmFsID0gc2VsZi5fYWxyZWFkeV9kaXNwbGF5ZWRfd2Fybmlu
Z3MgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGlmIGZpbmFsOgorICAgICAgICAgICAgICAgIHdh
cm5pbmdfcmVwb3J0cyA9IGFsbF93YXJuaW5nc1tzZWxmLl9hbHJlYWR5X2Rpc3BsYXllZF93YXJu
aW5ncyA6XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3YXJuaW5nX3JlcG9y
dHMgPSBhbGxfd2FybmluZ3MKKyAgICAgICAgICAgIHNlbGYuX2FscmVhZHlfZGlzcGxheWVkX3dh
cm5pbmdzID0gbGVuKHdhcm5pbmdfcmVwb3J0cykKKyAgICAgICAgICAgIGlmIG5vdCB3YXJuaW5n
X3JlcG9ydHM6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIHJlcG9ydHNf
Z3JvdXBlZF9ieV9tZXNzYWdlID0gKAorICAgICAgICAgICAgICAgIG9yZGVyX3ByZXNlcnZpbmdf
ZGljdCgpCisgICAgICAgICAgICApICAjIHR5cGU6IERpY3Rbc3RyLCBMaXN0W1dhcm5pbmdSZXBv
cnRdXQorICAgICAgICAgICAgZm9yIHdyIGluIHdhcm5pbmdfcmVwb3J0czoKKyAgICAgICAgICAg
ICAgICByZXBvcnRzX2dyb3VwZWRfYnlfbWVzc2FnZS5zZXRkZWZhdWx0KHdyLm1lc3NhZ2UsIFtd
KS5hcHBlbmQod3IpCisKKyAgICAgICAgICAgIGRlZiBjb2xsYXBzZWRfbG9jYXRpb25fcmVwb3J0
KHJlcG9ydHM6IExpc3RbV2FybmluZ1JlcG9ydF0pIC0+IHN0cjoKKyAgICAgICAgICAgICAgICBs
b2NhdGlvbnMgPSBbXQorICAgICAgICAgICAgICAgIGZvciB3IGluIHJlcG9ydHM6CisgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uID0gdy5nZXRfbG9jYXRpb24oc2VsZi5jb25maWcpCisgICAg
ICAgICAgICAgICAgICAgIGlmIGxvY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb25zLmFwcGVuZChsb2NhdGlvbikKKworICAgICAgICAgICAgICAgIGlmIGxlbihsb2NhdGlv
bnMpIDwgMTA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAiXG4iLmpvaW4obWFwKHN0ciwg
bG9jYXRpb25zKSkKKworICAgICAgICAgICAgICAgIGNvdW50c19ieV9maWxlbmFtZSA9IG9yZGVy
X3ByZXNlcnZpbmdfZGljdCgpICAjIHR5cGU6IERpY3Rbc3RyLCBpbnRdCisgICAgICAgICAgICAg
ICAgZm9yIGxvYyBpbiBsb2NhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGtleSA9IHN0cihs
b2MpLnNwbGl0KCI6OiIsIDEpWzBdCisgICAgICAgICAgICAgICAgICAgIGNvdW50c19ieV9maWxl
bmFtZVtrZXldID0gY291bnRzX2J5X2ZpbGVuYW1lLmdldChrZXksIDApICsgMQorICAgICAgICAg
ICAgICAgIHJldHVybiAiXG4iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICJ7fToge30gd2Fy
bmluZ3t9Ii5mb3JtYXQoaywgdiwgInMiIGlmIHYgPiAxIGVsc2UgIiIpCisgICAgICAgICAgICAg
ICAgICAgIGZvciBrLCB2IGluIGNvdW50c19ieV9maWxlbmFtZS5pdGVtcygpCisgICAgICAgICAg
ICAgICAgKQogCi0gICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiPSIsICJ3YXJuaW5ncyBzdW1t
YXJ5IiwgeWVsbG93PVRydWUsIGJvbGQ9RmFsc2UpCi0gICAgICAgICAgICBmb3IgbG9jYXRpb24s
IHdhcm5pbmdfcmVjb3JkcyBpbiBncm91cGVkOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3Lmxp
bmUoc3RyKGxvY2F0aW9uKSBpZiBsb2NhdGlvbiBlbHNlICI8dW5kZXRlcm1pbmVkIGxvY2F0aW9u
PiIpCi0gICAgICAgICAgICAgICAgZm9yIHcgaW4gd2FybmluZ19yZWNvcmRzOgotICAgICAgICAg
ICAgICAgICAgICBsaW5lcyA9IHcubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgIHRp
dGxlID0gIndhcm5pbmdzIHN1bW1hcnkgKGZpbmFsKSIgaWYgZmluYWwgZWxzZSAid2FybmluZ3Mg
c3VtbWFyeSIKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgdGl0bGUsIHllbGxvdz1U
cnVlLCBib2xkPUZhbHNlKQorICAgICAgICAgICAgZm9yIG1lc3NhZ2UsIG1lc3NhZ2VfcmVwb3J0
cyBpbiByZXBvcnRzX2dyb3VwZWRfYnlfbWVzc2FnZS5pdGVtcygpOgorICAgICAgICAgICAgICAg
IG1heWJlX2xvY2F0aW9uID0gY29sbGFwc2VkX2xvY2F0aW9uX3JlcG9ydChtZXNzYWdlX3JlcG9y
dHMpCisgICAgICAgICAgICAgICAgaWYgbWF5YmVfbG9jYXRpb246CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3R3LmxpbmUobWF5YmVfbG9jYXRpb24pCisgICAgICAgICAgICAgICAgICAgIGxp
bmVzID0gbWVzc2FnZS5zcGxpdGxpbmVzKCkKICAgICAgICAgICAgICAgICAgICAgaW5kZW50ZWQg
PSAiXG4iLmpvaW4oIiAgIiArIHggZm9yIHggaW4gbGluZXMpCi0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX3R3LmxpbmUoaW5kZW50ZWQpCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBp
bmRlbnRlZC5yc3RyaXAoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgc2VsZi5fdHcu
bGluZShtZXNzYWdlKQogICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoKQotICAgICAgICAg
ICAgc2VsZi5fdHcubGluZSgiLS0gRG9jczogaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVz
dC93YXJuaW5ncy5odG1sIikKKyAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoIi0tIERvY3M6IGh0
dHBzOi8vZG9jcy5weXRlc3Qub3JnL2VuL3N0YWJsZS93YXJuaW5ncy5odG1sIikKIAotICAgIGRl
ZiBzdW1tYXJ5X3Bhc3NlcyhzZWxmKToKKyAgICBkZWYgc3VtbWFyeV9wYXNzZXMoc2VsZikgLT4g
Tm9uZToKICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgIT0gIm5vIjoKICAg
ICAgICAgICAgIGlmIHNlbGYuaGFzb3B0KCJQIik6Ci0gICAgICAgICAgICAgICAgcmVwb3J0cyA9
IHNlbGYuZ2V0cmVwb3J0cygicGFzc2VkIikKKyAgICAgICAgICAgICAgICByZXBvcnRzID0gc2Vs
Zi5nZXRyZXBvcnRzKCJwYXNzZWQiKSAgIyB0eXBlOiBMaXN0W1Rlc3RSZXBvcnRdCiAgICAgICAg
ICAgICAgICAgaWYgbm90IHJlcG9ydHM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAg
ICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgIlBBU1NFUyIpCiAgICAgICAgICAgICAg
ICAgZm9yIHJlcCBpbiByZXBvcnRzOgotICAgICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9n
ZXRmYWlsdXJlaGVhZGxpbmUocmVwKQotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3Nl
cCgiXyIsIG1zZykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cmVwX3N1bW1hcnkocmVw
KQotCi0gICAgZGVmIHByaW50X3RlYXJkb3duX3NlY3Rpb25zKHNlbGYsIHJlcCk6CisgICAgICAg
ICAgICAgICAgICAgIGlmIHJlcC5zZWN0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1z
ZyA9IHNlbGYuX2dldGZhaWx1cmVoZWFkbGluZShyZXApCisgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLndyaXRlX3NlcCgiXyIsIG1zZywgZ3JlZW49VHJ1ZSwgYm9sZD1UcnVlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cmVwX3N1bW1hcnkocmVwKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kbGVfdGVhcmRvd25fc2VjdGlvbnMocmVwLm5vZGVpZCkKKworICAg
IGRlZiBfZ2V0X3RlYXJkb3duX3JlcG9ydHMoc2VsZiwgbm9kZWlkOiBzdHIpIC0+IExpc3RbVGVz
dFJlcG9ydF06CisgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoIiIpCisgICAgICAg
IHJldHVybiBbCisgICAgICAgICAgICByZXBvcnQKKyAgICAgICAgICAgIGZvciByZXBvcnQgaW4g
cmVwb3J0cworICAgICAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gInRlYXJkb3duIiBhbmQgcmVw
b3J0Lm5vZGVpZCA9PSBub2RlaWQKKyAgICAgICAgXQorCisgICAgZGVmIF9oYW5kbGVfdGVhcmRv
d25fc2VjdGlvbnMoc2VsZiwgbm9kZWlkOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGZvciByZXBv
cnQgaW4gc2VsZi5fZ2V0X3RlYXJkb3duX3JlcG9ydHMobm9kZWlkKToKKyAgICAgICAgICAgIHNl
bGYucHJpbnRfdGVhcmRvd25fc2VjdGlvbnMocmVwb3J0KQorCisgICAgZGVmIHByaW50X3RlYXJk
b3duX3NlY3Rpb25zKHNlbGYsIHJlcDogVGVzdFJlcG9ydCkgLT4gTm9uZToKKyAgICAgICAgc2hv
d2NhcHR1cmUgPSBzZWxmLmNvbmZpZy5vcHRpb24uc2hvd2NhcHR1cmUKKyAgICAgICAgaWYgc2hv
d2NhcHR1cmUgPT0gIm5vIjoKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBmb3Igc2VjbmFt
ZSwgY29udGVudCBpbiByZXAuc2VjdGlvbnM6CisgICAgICAgICAgICBpZiBzaG93Y2FwdHVyZSAh
PSAiYWxsIiBhbmQgc2hvd2NhcHR1cmUgbm90IGluIHNlY25hbWU6CisgICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgIGlmICJ0ZWFyZG93biIgaW4gc2VjbmFtZToKICAgICAgICAg
ICAgICAgICBzZWxmLl90dy5zZXAoIi0iLCBzZWNuYW1lKQogICAgICAgICAgICAgICAgIGlmIGNv
bnRlbnRbLTE6XSA9PSAiXG4iOgogICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVu
dFs6LTFdCiAgICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZShjb250ZW50KQogCi0gICAgZGVm
IHN1bW1hcnlfZmFpbHVyZXMoc2VsZik6CisgICAgZGVmIHN1bW1hcnlfZmFpbHVyZXMoc2VsZikg
LT4gTm9uZToKICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgIT0gIm5vIjoK
LSAgICAgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoImZhaWxlZCIpCisgICAgICAg
ICAgICByZXBvcnRzID0gc2VsZi5nZXRyZXBvcnRzKCJmYWlsZWQiKSAgIyB0eXBlOiBMaXN0W0Jh
c2VSZXBvcnRdCiAgICAgICAgICAgICBpZiBub3QgcmVwb3J0czoKICAgICAgICAgICAgICAgICBy
ZXR1cm4KICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgIkZBSUxVUkVTIikKLSAgICAg
ICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbmZp
Zy5vcHRpb24udGJzdHlsZSA9PSAibGluZSI6CisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5v
cHRpb24udGJzdHlsZSA9PSAibGluZSI6CisgICAgICAgICAgICAgICAgZm9yIHJlcCBpbiByZXBv
cnRzOgogICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5fZ2V0Y3Jhc2hsaW5lKHJlcCkK
ICAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGxpbmUpCi0gICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIHJlcCBpbiBy
ZXBvcnRzOgogICAgICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRmYWlsdXJlaGVhZGxp
bmUocmVwKQotICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7InJlZCI6IFRydWUsICJib2xk
IjogVHJ1ZX0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIl8iLCBtc2csICoq
bWFya3VwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3NlcCgiXyIsIG1zZywgcmVk
PVRydWUsIGJvbGQ9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cmVwX3N1bW1h
cnkocmVwKQotICAgICAgICAgICAgICAgICAgICBmb3IgcmVwb3J0IGluIHNlbGYuZ2V0cmVwb3J0
cygiIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiByZXBvcnQubm9kZWlkID09IHJlcC5u
b2RlaWQgYW5kIHJlcG9ydC53aGVuID09ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5wcmludF90ZWFyZG93bl9zZWN0aW9ucyhyZXBvcnQpCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2hhbmRsZV90ZWFyZG93bl9zZWN0aW9ucyhyZXAubm9kZWlkKQogCi0g
ICAgZGVmIHN1bW1hcnlfZXJyb3JzKHNlbGYpOgorICAgIGRlZiBzdW1tYXJ5X2Vycm9ycyhzZWxm
KSAtPiBOb25lOgogICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSAhPSAibm8i
OgotICAgICAgICAgICAgcmVwb3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygiZXJyb3IiKQorICAgICAg
ICAgICAgcmVwb3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygiZXJyb3IiKSAgIyB0eXBlOiBMaXN0W0Jh
c2VSZXBvcnRdCiAgICAgICAgICAgICBpZiBub3QgcmVwb3J0czoKICAgICAgICAgICAgICAgICBy
ZXR1cm4KICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgIkVSUk9SUyIpCiAgICAgICAg
ICAgICBmb3IgcmVwIGluIHNlbGYuc3RhdHNbImVycm9yIl06CiAgICAgICAgICAgICAgICAgbXNn
ID0gc2VsZi5fZ2V0ZmFpbHVyZWhlYWRsaW5lKHJlcCkKLSAgICAgICAgICAgICAgICBpZiBub3Qg
aGFzYXR0cihyZXAsICJ3aGVuIik6Ci0gICAgICAgICAgICAgICAgICAgICMgY29sbGVjdAorICAg
ICAgICAgICAgICAgIGlmIHJlcC53aGVuID09ICJjb2xsZWN0IjoKICAgICAgICAgICAgICAgICAg
ICAgbXNnID0gIkVSUk9SIGNvbGxlY3RpbmcgIiArIG1zZwotICAgICAgICAgICAgICAgIGVsaWYg
cmVwLndoZW4gPT0gInNldHVwIjoKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gIkVSUk9SIGF0
IHNldHVwIG9mICIgKyBtc2cKLSAgICAgICAgICAgICAgICBlbGlmIHJlcC53aGVuID09ICJ0ZWFy
ZG93biI6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9ICJFUlJPUiBhdCB0ZWFyZG93biBvZiAi
ICsgbXNnCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIl8iLCBtc2cpCisgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIkVSUk9SIGF0IHt9IG9m
IHt9Ii5mb3JtYXQocmVwLndoZW4sIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3Nl
cCgiXyIsIG1zZywgcmVkPVRydWUsIGJvbGQ9VHJ1ZSkKICAgICAgICAgICAgICAgICBzZWxmLl9v
dXRyZXBfc3VtbWFyeShyZXApCiAKLSAgICBkZWYgX291dHJlcF9zdW1tYXJ5KHNlbGYsIHJlcCk6
CisgICAgZGVmIF9vdXRyZXBfc3VtbWFyeShzZWxmLCByZXA6IEJhc2VSZXBvcnQpIC0+IE5vbmU6
CiAgICAgICAgIHJlcC50b3Rlcm1pbmFsKHNlbGYuX3R3KQogICAgICAgICBzaG93Y2FwdHVyZSA9
IHNlbGYuY29uZmlnLm9wdGlvbi5zaG93Y2FwdHVyZQogICAgICAgICBpZiBzaG93Y2FwdHVyZSA9
PSAibm8iOgpAQCAtNzYwLDcwICsxMDM1LDI3NCBAQCBjbGFzcyBUZXJtaW5hbFJlcG9ydGVyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnRbOi0xXQogICAgICAgICAg
ICAgc2VsZi5fdHcubGluZShjb250ZW50KQogCi0gICAgZGVmIHN1bW1hcnlfc3RhdHMoc2VsZik6
Ci0gICAgICAgIHNlc3Npb25fZHVyYXRpb24gPSB0aW1lLnRpbWUoKSAtIHNlbGYuX3Nlc3Npb25z
dGFydHRpbWUKLSAgICAgICAgKGxpbmUsIGNvbG9yKSA9IGJ1aWxkX3N1bW1hcnlfc3RhdHNfbGlu
ZShzZWxmLnN0YXRzKQotICAgICAgICBtc2cgPSAiJXMgaW4gJS4yZiBzZWNvbmRzIiAlIChsaW5l
LCBzZXNzaW9uX2R1cmF0aW9uKQotICAgICAgICBtYXJrdXAgPSB7Y29sb3I6IFRydWUsICJib2xk
IjogVHJ1ZX0KKyAgICBkZWYgc3VtbWFyeV9zdGF0cyhzZWxmKSAtPiBOb25lOgorICAgICAgICBp
ZiBzZWxmLnZlcmJvc2l0eSA8IC0xOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2Vz
c2lvbl9kdXJhdGlvbiA9IHRpbWluZy50aW1lKCkgLSBzZWxmLl9zZXNzaW9uc3RhcnR0aW1lCisg
ICAgICAgIChwYXJ0cywgbWFpbl9jb2xvcikgPSBzZWxmLmJ1aWxkX3N1bW1hcnlfc3RhdHNfbGlu
ZSgpCisgICAgICAgIGxpbmVfcGFydHMgPSBbXQorCisgICAgICAgIGRpc3BsYXlfc2VwID0gc2Vs
Zi52ZXJib3NpdHkgPj0gMAorICAgICAgICBpZiBkaXNwbGF5X3NlcDoKKyAgICAgICAgICAgIGZ1
bGx3aWR0aCA9IHNlbGYuX3R3LmZ1bGx3aWR0aAorICAgICAgICBmb3IgdGV4dCwgbWFya3VwIGlu
IHBhcnRzOgorICAgICAgICAgICAgd2l0aF9tYXJrdXAgPSBzZWxmLl90dy5tYXJrdXAodGV4dCwg
KiptYXJrdXApCisgICAgICAgICAgICBpZiBkaXNwbGF5X3NlcDoKKyAgICAgICAgICAgICAgICBm
dWxsd2lkdGggKz0gbGVuKHdpdGhfbWFya3VwKSAtIGxlbih0ZXh0KQorICAgICAgICAgICAgbGlu
ZV9wYXJ0cy5hcHBlbmQod2l0aF9tYXJrdXApCisgICAgICAgIG1zZyA9ICIsICIuam9pbihsaW5l
X3BhcnRzKQorCisgICAgICAgIG1haW5fbWFya3VwID0ge21haW5fY29sb3I6IFRydWV9CisgICAg
ICAgIGR1cmF0aW9uID0gIiBpbiB7fSIuZm9ybWF0KGZvcm1hdF9zZXNzaW9uX2R1cmF0aW9uKHNl
c3Npb25fZHVyYXRpb24pKQorICAgICAgICBkdXJhdGlvbl93aXRoX21hcmt1cCA9IHNlbGYuX3R3
Lm1hcmt1cChkdXJhdGlvbiwgKiptYWluX21hcmt1cCkKKyAgICAgICAgaWYgZGlzcGxheV9zZXA6
CisgICAgICAgICAgICBmdWxsd2lkdGggKz0gbGVuKGR1cmF0aW9uX3dpdGhfbWFya3VwKSAtIGxl
bihkdXJhdGlvbikKKyAgICAgICAgbXNnICs9IGR1cmF0aW9uX3dpdGhfbWFya3VwCisKKyAgICAg
ICAgaWYgZGlzcGxheV9zZXA6CisgICAgICAgICAgICBtYXJrdXBfZm9yX2VuZF9zZXAgPSBzZWxm
Ll90dy5tYXJrdXAoIiIsICoqbWFpbl9tYXJrdXApCisgICAgICAgICAgICBpZiBtYXJrdXBfZm9y
X2VuZF9zZXAuZW5kc3dpdGgoIlx4MWJbMG0iKToKKyAgICAgICAgICAgICAgICBtYXJrdXBfZm9y
X2VuZF9zZXAgPSBtYXJrdXBfZm9yX2VuZF9zZXBbOi00XQorICAgICAgICAgICAgZnVsbHdpZHRo
ICs9IGxlbihtYXJrdXBfZm9yX2VuZF9zZXApCisgICAgICAgICAgICBtc2cgKz0gbWFya3VwX2Zv
cl9lbmRfc2VwCisKKyAgICAgICAgaWYgZGlzcGxheV9zZXA6CisgICAgICAgICAgICBzZWxmLndy
aXRlX3NlcCgiPSIsIG1zZywgZnVsbHdpZHRoPWZ1bGx3aWR0aCwgKiptYWluX21hcmt1cCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShtc2csICoqbWFpbl9tYXJr
dXApCisKKyAgICBkZWYgc2hvcnRfdGVzdF9zdW1tYXJ5KHNlbGYpIC0+IE5vbmU6CisgICAgICAg
IGlmIG5vdCBzZWxmLnJlcG9ydGNoYXJzOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
ZGVmIHNob3dfc2ltcGxlKHN0YXQsIGxpbmVzOiBMaXN0W3N0cl0pIC0+IE5vbmU6CisgICAgICAg
ICAgICBmYWlsZWQgPSBzZWxmLnN0YXRzLmdldChzdGF0LCBbXSkKKyAgICAgICAgICAgIGlmIG5v
dCBmYWlsZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0ZXJtd2lkdGgg
PSBzZWxmLl90dy5mdWxsd2lkdGgKKyAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuY29uZmlnCisg
ICAgICAgICAgICBmb3IgcmVwIGluIGZhaWxlZDoKKyAgICAgICAgICAgICAgICBsaW5lID0gX2dl
dF9saW5lX3dpdGhfcmVwcmNyYXNoX21lc3NhZ2UoY29uZmlnLCByZXAsIHRlcm13aWR0aCkKKyAg
ICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICBkZWYgc2hvd194ZmFp
bGVkKGxpbmVzOiBMaXN0W3N0cl0pIC0+IE5vbmU6CisgICAgICAgICAgICB4ZmFpbGVkID0gc2Vs
Zi5zdGF0cy5nZXQoInhmYWlsZWQiLCBbXSkKKyAgICAgICAgICAgIGZvciByZXAgaW4geGZhaWxl
ZDoKKyAgICAgICAgICAgICAgICB2ZXJib3NlX3dvcmQgPSByZXAuX2dldF92ZXJib3NlX3dvcmQo
c2VsZi5jb25maWcpCisgICAgICAgICAgICAgICAgcG9zID0gX2dldF9wb3Moc2VsZi5jb25maWcs
IHJlcCkKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoInt9IHt9Ii5mb3JtYXQodmVyYm9z
ZV93b3JkLCBwb3MpKQorICAgICAgICAgICAgICAgIHJlYXNvbiA9IHJlcC53YXN4ZmFpbAorICAg
ICAgICAgICAgICAgIGlmIHJlYXNvbjoKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCIgICIgKyBzdHIocmVhc29uKSkKKworICAgICAgICBkZWYgc2hvd194cGFzc2VkKGxpbmVzOiBM
aXN0W3N0cl0pIC0+IE5vbmU6CisgICAgICAgICAgICB4cGFzc2VkID0gc2VsZi5zdGF0cy5nZXQo
InhwYXNzZWQiLCBbXSkKKyAgICAgICAgICAgIGZvciByZXAgaW4geHBhc3NlZDoKKyAgICAgICAg
ICAgICAgICB2ZXJib3NlX3dvcmQgPSByZXAuX2dldF92ZXJib3NlX3dvcmQoc2VsZi5jb25maWcp
CisgICAgICAgICAgICAgICAgcG9zID0gX2dldF9wb3Moc2VsZi5jb25maWcsIHJlcCkKKyAgICAg
ICAgICAgICAgICByZWFzb24gPSByZXAud2FzeGZhaWwKKyAgICAgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoInt9IHt9IHt9Ii5mb3JtYXQodmVyYm9zZV93b3JkLCBwb3MsIHJlYXNvbikpCisKKyAg
ICAgICAgZGVmIHNob3dfc2tpcHBlZChsaW5lczogTGlzdFtzdHJdKSAtPiBOb25lOgorICAgICAg
ICAgICAgc2tpcHBlZCA9IHNlbGYuc3RhdHMuZ2V0KCJza2lwcGVkIiwgW10pICAjIHR5cGU6IExp
c3RbQ29sbGVjdFJlcG9ydF0KKyAgICAgICAgICAgIGZza2lwcyA9IF9mb2xkZWRfc2tpcHMoc2Vs
Zi5zdGFydHBhdGgsIHNraXBwZWQpIGlmIHNraXBwZWQgZWxzZSBbXQorICAgICAgICAgICAgaWYg
bm90IGZza2lwczoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHZlcmJvc2Vf
d29yZCA9IHNraXBwZWRbMF0uX2dldF92ZXJib3NlX3dvcmQoc2VsZi5jb25maWcpCisgICAgICAg
ICAgICBmb3IgbnVtLCBmc3BhdGgsIGxpbmVubywgcmVhc29uIGluIGZza2lwczoKKyAgICAgICAg
ICAgICAgICBpZiByZWFzb24uc3RhcnRzd2l0aCgiU2tpcHBlZDogIik6CisgICAgICAgICAgICAg
ICAgICAgIHJlYXNvbiA9IHJlYXNvbls5Ol0KKyAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIlcyBbJWRdICVzOiVkOiAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICUgKHZlcmJvc2Vfd29yZCwgbnVtLCBmc3BhdGgsIGxpbmVubywgcmVhc29uKQorICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCIlcyBbJWRdICVzOiAlcyIgJSAodmVyYm9zZV93b3JkLCBudW0sIGZzcGF0
aCwgcmVhc29uKSkKKworICAgICAgICBSRVBPUlRDSEFSX0FDVElPTlMgPSB7CisgICAgICAgICAg
ICAieCI6IHNob3dfeGZhaWxlZCwKKyAgICAgICAgICAgICJYIjogc2hvd194cGFzc2VkLAorICAg
ICAgICAgICAgImYiOiBwYXJ0aWFsKHNob3dfc2ltcGxlLCAiZmFpbGVkIiksCisgICAgICAgICAg
ICAicyI6IHNob3dfc2tpcHBlZCwKKyAgICAgICAgICAgICJwIjogcGFydGlhbChzaG93X3NpbXBs
ZSwgInBhc3NlZCIpLAorICAgICAgICAgICAgIkUiOiBwYXJ0aWFsKHNob3dfc2ltcGxlLCAiZXJy
b3IiKSwKKyAgICAgICAgfSAgIyB0eXBlOiBNYXBwaW5nW3N0ciwgQ2FsbGFibGVbW0xpc3Rbc3Ry
XV0sIE5vbmVdXQorCisgICAgICAgIGxpbmVzID0gW10gICMgdHlwZTogTGlzdFtzdHJdCisgICAg
ICAgIGZvciBjaGFyIGluIHNlbGYucmVwb3J0Y2hhcnM6CisgICAgICAgICAgICBhY3Rpb24gPSBS
RVBPUlRDSEFSX0FDVElPTlMuZ2V0KGNoYXIpCisgICAgICAgICAgICBpZiBhY3Rpb246ICAjIHNr
aXBwaW5nIGUuZy4gIlAiIChwYXNzZWQgd2l0aCBvdXRwdXQpIGhlcmUuCisgICAgICAgICAgICAg
ICAgYWN0aW9uKGxpbmVzKQorCisgICAgICAgIGlmIGxpbmVzOgorICAgICAgICAgICAgc2VsZi53
cml0ZV9zZXAoIj0iLCAic2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8iKQorICAgICAgICAgICAgZm9y
IGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGxpbmUpCisK
KyAgICBkZWYgX2dldF9tYWluX2NvbG9yKHNlbGYpIC0+IFR1cGxlW3N0ciwgTGlzdFtzdHJdXToK
KyAgICAgICAgaWYgc2VsZi5fbWFpbl9jb2xvciBpcyBOb25lIG9yIHNlbGYuX2tub3duX3R5cGVz
IGlzIE5vbmUgb3Igc2VsZi5faXNfbGFzdF9pdGVtOgorICAgICAgICAgICAgc2VsZi5fc2V0X21h
aW5fY29sb3IoKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX21haW5fY29sb3IKKyAgICAgICAg
ICAgIGFzc2VydCBzZWxmLl9rbm93bl90eXBlcworICAgICAgICByZXR1cm4gc2VsZi5fbWFpbl9j
b2xvciwgc2VsZi5fa25vd25fdHlwZXMKKworICAgIGRlZiBfZGV0ZXJtaW5lX21haW5fY29sb3Io
c2VsZiwgdW5rbm93bl90eXBlX3NlZW46IGJvb2wpIC0+IHN0cjoKKyAgICAgICAgc3RhdHMgPSBz
ZWxmLnN0YXRzCisgICAgICAgIGlmICJmYWlsZWQiIGluIHN0YXRzIG9yICJlcnJvciIgaW4gc3Rh
dHM6CisgICAgICAgICAgICBtYWluX2NvbG9yID0gInJlZCIKKyAgICAgICAgZWxpZiAid2Fybmlu
Z3MiIGluIHN0YXRzIG9yICJ4cGFzc2VkIiBpbiBzdGF0cyBvciB1bmtub3duX3R5cGVfc2VlbjoK
KyAgICAgICAgICAgIG1haW5fY29sb3IgPSAieWVsbG93IgorICAgICAgICBlbGlmICJwYXNzZWQi
IGluIHN0YXRzIG9yIG5vdCBzZWxmLl9pc19sYXN0X2l0ZW06CisgICAgICAgICAgICBtYWluX2Nv
bG9yID0gImdyZWVuIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFpbl9jb2xvciA9ICJ5
ZWxsb3ciCisgICAgICAgIHJldHVybiBtYWluX2NvbG9yCisKKyAgICBkZWYgX3NldF9tYWluX2Nv
bG9yKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHVua25vd25fdHlwZXMgPSBbXSAgIyB0eXBlOiBM
aXN0W3N0cl0KKyAgICAgICAgZm9yIGZvdW5kX3R5cGUgaW4gc2VsZi5zdGF0cy5rZXlzKCk6Cisg
ICAgICAgICAgICBpZiBmb3VuZF90eXBlOiAgIyBzZXR1cC90ZWFyZG93biByZXBvcnRzIGhhdmUg
YW4gZW1wdHkga2V5LCBpZ25vcmUgdGhlbQorICAgICAgICAgICAgICAgIGlmIGZvdW5kX3R5cGUg
bm90IGluIEtOT1dOX1RZUEVTIGFuZCBmb3VuZF90eXBlIG5vdCBpbiB1bmtub3duX3R5cGVzOgor
ICAgICAgICAgICAgICAgICAgICB1bmtub3duX3R5cGVzLmFwcGVuZChmb3VuZF90eXBlKQorICAg
ICAgICBzZWxmLl9rbm93bl90eXBlcyA9IGxpc3QoS05PV05fVFlQRVMpICsgdW5rbm93bl90eXBl
cworICAgICAgICBzZWxmLl9tYWluX2NvbG9yID0gc2VsZi5fZGV0ZXJtaW5lX21haW5fY29sb3Io
Ym9vbCh1bmtub3duX3R5cGVzKSkKKworICAgIGRlZiBidWlsZF9zdW1tYXJ5X3N0YXRzX2xpbmUo
c2VsZikgLT4gVHVwbGVbTGlzdFtUdXBsZVtzdHIsIERpY3Rbc3RyLCBib29sXV1dLCBzdHJdOgor
ICAgICAgICBtYWluX2NvbG9yLCBrbm93bl90eXBlcyA9IHNlbGYuX2dldF9tYWluX2NvbG9yKCkK
KworICAgICAgICBwYXJ0cyA9IFtdCisgICAgICAgIGZvciBrZXkgaW4ga25vd25fdHlwZXM6Cisg
ICAgICAgICAgICByZXBvcnRzID0gc2VsZi5zdGF0cy5nZXQoa2V5LCBOb25lKQorICAgICAgICAg
ICAgaWYgcmVwb3J0czoKKyAgICAgICAgICAgICAgICBjb3VudCA9IHN1bSgKKyAgICAgICAgICAg
ICAgICAgICAgMSBmb3IgcmVwIGluIHJlcG9ydHMgaWYgZ2V0YXR0cihyZXAsICJjb3VudF90b3dh
cmRzX3N1bW1hcnkiLCBUcnVlKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBj
b2xvciA9IF9jb2xvcl9mb3JfdHlwZS5nZXQoa2V5LCBfY29sb3JfZm9yX3R5cGVfZGVmYXVsdCkK
KyAgICAgICAgICAgICAgICBtYXJrdXAgPSB7Y29sb3I6IFRydWUsICJib2xkIjogY29sb3IgPT0g
bWFpbl9jb2xvcn0KKyAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoKCIlZCAlcyIgJSBfbWFr
ZV9wbHVyYWwoY291bnQsIGtleSksIG1hcmt1cCkpCisKKyAgICAgICAgaWYgbm90IHBhcnRzOgor
ICAgICAgICAgICAgcGFydHMgPSBbKCJubyB0ZXN0cyByYW4iLCB7X2NvbG9yX2Zvcl90eXBlX2Rl
ZmF1bHQ6IFRydWV9KV0KKworICAgICAgICByZXR1cm4gcGFydHMsIG1haW5fY29sb3IKKworCitk
ZWYgX2dldF9wb3MoY29uZmlnOiBDb25maWcsIHJlcDogQmFzZVJlcG9ydCk6CisgICAgbm9kZWlk
ID0gY29uZmlnLmN3ZF9yZWxhdGl2ZV9ub2RlaWQocmVwLm5vZGVpZCkKKyAgICByZXR1cm4gbm9k
ZWlkCisKIAotICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+PSAwOgotICAgICAgICAgICAgc2Vs
Zi53cml0ZV9zZXAoIj0iLCBtc2csICoqbWFya3VwKQotICAgICAgICBpZiBzZWxmLnZlcmJvc2l0
eSA9PSAtMToKLSAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShtc2csICoqbWFya3VwKQorZGVm
IF9nZXRfbGluZV93aXRoX3JlcHJjcmFzaF9tZXNzYWdlKAorICAgIGNvbmZpZzogQ29uZmlnLCBy
ZXA6IEJhc2VSZXBvcnQsIHRlcm13aWR0aDogaW50CispIC0+IHN0cjoKKyAgICAiIiJHZXQgc3Vt
bWFyeSBsaW5lIGZvciBhIHJlcG9ydCwgdHJ5aW5nIHRvIGFkZCByZXByY3Jhc2ggbWVzc2FnZS4i
IiIKKyAgICB2ZXJib3NlX3dvcmQgPSByZXAuX2dldF92ZXJib3NlX3dvcmQoY29uZmlnKQorICAg
IHBvcyA9IF9nZXRfcG9zKGNvbmZpZywgcmVwKQogCisgICAgbGluZSA9ICJ7fSB7fSIuZm9ybWF0
KHZlcmJvc2Vfd29yZCwgcG9zKQorICAgIGxlbl9saW5lID0gd2Nzd2lkdGgobGluZSkKKyAgICBl
bGxpcHNpcywgbGVuX2VsbGlwc2lzID0gIi4uLiIsIDMKKyAgICBpZiBsZW5fbGluZSA+IHRlcm13
aWR0aCAtIGxlbl9lbGxpcHNpczoKKyAgICAgICAgIyBObyBzcGFjZSBmb3IgYW4gYWRkaXRpb25h
bCBtZXNzYWdlLgorICAgICAgICByZXR1cm4gbGluZQogCi1kZWYgcmVwcl9weXRob252ZXJzaW9u
KHY9Tm9uZSk6Ci0gICAgaWYgdiBpcyBOb25lOgotICAgICAgICB2ID0gc3lzLnZlcnNpb25faW5m
bwogICAgIHRyeToKLSAgICAgICAgcmV0dXJuICIlcy4lcy4lcy0lcy0lcyIgJSB2Ci0gICAgZXhj
ZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICByZXR1cm4gc3RyKHYpCi0KLQot
ZGVmIGJ1aWxkX3N1bW1hcnlfc3RhdHNfbGluZShzdGF0cyk6Ci0gICAga2V5cyA9ICgKLSAgICAg
ICAgImZhaWxlZCBwYXNzZWQgc2tpcHBlZCBkZXNlbGVjdGVkICIgInhmYWlsZWQgeHBhc3NlZCB3
YXJuaW5ncyBlcnJvciIKLSAgICApLnNwbGl0KCkKLSAgICB1bmtub3duX2tleV9zZWVuID0gRmFs
c2UKLSAgICBmb3Iga2V5IGluIHN0YXRzLmtleXMoKToKLSAgICAgICAgaWYga2V5IG5vdCBpbiBr
ZXlzOgotICAgICAgICAgICAgaWYga2V5OiAgIyBzZXR1cC90ZWFyZG93biByZXBvcnRzIGhhdmUg
YW4gZW1wdHkga2V5LCBpZ25vcmUgdGhlbQotICAgICAgICAgICAgICAgIGtleXMuYXBwZW5kKGtl
eSkKLSAgICAgICAgICAgICAgICB1bmtub3duX2tleV9zZWVuID0gVHJ1ZQotICAgIHBhcnRzID0g
W10KLSAgICBmb3Iga2V5IGluIGtleXM6Ci0gICAgICAgIHZhbCA9IHN0YXRzLmdldChrZXksIE5v
bmUpCi0gICAgICAgIGlmIHZhbDoKLSAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgiJWQgJXMiICUg
KGxlbih2YWwpLCBrZXkpKQotCi0gICAgaWYgcGFydHM6Ci0gICAgICAgIGxpbmUgPSAiLCAiLmpv
aW4ocGFydHMpCisgICAgICAgICMgVHlwZSBpZ25vcmVkIGludGVudGlvbmFsbHkgLS0gcG9zc2li
bGUgQXR0cmlidXRlRXJyb3IgZXhwZWN0ZWQuCisgICAgICAgIG1zZyA9IHJlcC5sb25ncmVwci5y
ZXByY3Jhc2gubWVzc2FnZSAgIyB0eXBlOiBpZ25vcmVbdW5pb24tYXR0cl0KKyAgICBleGNlcHQg
QXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKICAgICBlbHNlOgotICAgICAgICBsaW5lID0g
Im5vIHRlc3RzIHJhbiIKLQotICAgIGlmICJmYWlsZWQiIGluIHN0YXRzIG9yICJlcnJvciIgaW4g
c3RhdHM6Ci0gICAgICAgIGNvbG9yID0gInJlZCIKLSAgICBlbGlmICJ3YXJuaW5ncyIgaW4gc3Rh
dHMgb3IgdW5rbm93bl9rZXlfc2VlbjoKLSAgICAgICAgY29sb3IgPSAieWVsbG93IgotICAgIGVs
aWYgInBhc3NlZCIgaW4gc3RhdHM6Ci0gICAgICAgIGNvbG9yID0gImdyZWVuIgotICAgIGVsc2U6
Ci0gICAgICAgIGNvbG9yID0gInllbGxvdyIKKyAgICAgICAgIyBPbmx5IHVzZSB0aGUgZmlyc3Qg
bGluZS4KKyAgICAgICAgaSA9IG1zZy5maW5kKCJcbiIpCisgICAgICAgIGlmIGkgIT0gLTE6Cisg
ICAgICAgICAgICBtc2cgPSBtc2dbOmldCisgICAgICAgIGxlbl9tc2cgPSB3Y3N3aWR0aChtc2cp
CisKKyAgICAgICAgc2VwLCBsZW5fc2VwID0gIiAtICIsIDMKKyAgICAgICAgbWF4X2xlbl9tc2cg
PSB0ZXJtd2lkdGggLSBsZW5fbGluZSAtIGxlbl9zZXAKKyAgICAgICAgaWYgbWF4X2xlbl9tc2cg
Pj0gbGVuX2VsbGlwc2lzOgorICAgICAgICAgICAgaWYgbGVuX21zZyA+IG1heF9sZW5fbXNnOgor
ICAgICAgICAgICAgICAgIG1heF9sZW5fbXNnIC09IGxlbl9lbGxpcHNpcworICAgICAgICAgICAg
ICAgIG1zZyA9IG1zZ1s6bWF4X2xlbl9tc2ddCisgICAgICAgICAgICAgICAgd2hpbGUgd2Nzd2lk
dGgobXNnKSA+IG1heF9sZW5fbXNnOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2dbOi0x
XQorICAgICAgICAgICAgICAgIG1zZyArPSBlbGxpcHNpcworICAgICAgICAgICAgbGluZSArPSBz
ZXAgKyBtc2cKKyAgICByZXR1cm4gbGluZQorCisKK2RlZiBfZm9sZGVkX3NraXBzKAorICAgIHN0
YXJ0cGF0aDogUGF0aCwgc2tpcHBlZDogU2VxdWVuY2VbQ29sbGVjdFJlcG9ydF0sCispIC0+IExp
c3RbVHVwbGVbaW50LCBzdHIsIE9wdGlvbmFsW2ludF0sIHN0cl1dOgorICAgIGQgPSB7fSAgIyB0
eXBlOiBEaWN0W1R1cGxlW3N0ciwgT3B0aW9uYWxbaW50XSwgc3RyXSwgTGlzdFtDb2xsZWN0UmVw
b3J0XV0KKyAgICBmb3IgZXZlbnQgaW4gc2tpcHBlZDoKKyAgICAgICAgYXNzZXJ0IGV2ZW50Lmxv
bmdyZXByIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50Lmxvbmdy
ZXByLCB0dXBsZSksIChldmVudCwgZXZlbnQubG9uZ3JlcHIpCisgICAgICAgIGFzc2VydCBsZW4o
ZXZlbnQubG9uZ3JlcHIpID09IDMsIChldmVudCwgZXZlbnQubG9uZ3JlcHIpCisgICAgICAgIGZz
cGF0aCwgbGluZW5vLCByZWFzb24gPSBldmVudC5sb25ncmVwcgorICAgICAgICAjIEZvciBjb25z
aXN0ZW5jeSwgcmVwb3J0IGFsbCBmc3BhdGhzIGluIHJlbGF0aXZlIGZvcm0uCisgICAgICAgIGZz
cGF0aCA9IGJlc3RyZWxwYXRoKHN0YXJ0cGF0aCwgUGF0aChmc3BhdGgpKQorICAgICAgICBrZXl3
b3JkcyA9IGdldGF0dHIoZXZlbnQsICJrZXl3b3JkcyIsIHt9KQorICAgICAgICAjIEZvbGRpbmcg
cmVwb3J0cyB3aXRoIGdsb2JhbCBweXRlc3RtYXJrIHZhcmlhYmxlLgorICAgICAgICAjIFRoaXMg
aXMgYSB3b3JrYXJvdW5kLCBiZWNhdXNlIGZvciBub3cgd2UgY2Fubm90IGlkZW50aWZ5IHRoZSBz
Y29wZSBvZiBhIHNraXAgbWFya2VyCisgICAgICAgICMgVE9ETzogUmV2aXNpdCBhZnRlciBtYXJr
cyBzY29wZSB3b3VsZCBiZSBmaXhlZC4KKyAgICAgICAgaWYgKAorICAgICAgICAgICAgZXZlbnQu
d2hlbiA9PSAic2V0dXAiCisgICAgICAgICAgICBhbmQgInNraXAiIGluIGtleXdvcmRzCisgICAg
ICAgICAgICBhbmQgInB5dGVzdG1hcmsiIG5vdCBpbiBrZXl3b3JkcworICAgICAgICApOgorICAg
ICAgICAgICAga2V5ID0gKGZzcGF0aCwgTm9uZSwgcmVhc29uKSAgIyB0eXBlOiBUdXBsZVtzdHIs
IE9wdGlvbmFsW2ludF0sIHN0cl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGtleSA9IChm
c3BhdGgsIGxpbmVubywgcmVhc29uKQorICAgICAgICBkLnNldGRlZmF1bHQoa2V5LCBbXSkuYXBw
ZW5kKGV2ZW50KQorICAgIHZhbHVlcyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbaW50LCBzdHIs
IE9wdGlvbmFsW2ludF0sIHN0cl1dCisgICAgZm9yIGtleSwgZXZlbnRzIGluIGQuaXRlbXMoKToK
KyAgICAgICAgdmFsdWVzLmFwcGVuZCgobGVuKGV2ZW50cyksICprZXkpKQorICAgIHJldHVybiB2
YWx1ZXMKKworCitfY29sb3JfZm9yX3R5cGUgPSB7CisgICAgImZhaWxlZCI6ICJyZWQiLAorICAg
ICJlcnJvciI6ICJyZWQiLAorICAgICJ3YXJuaW5ncyI6ICJ5ZWxsb3ciLAorICAgICJwYXNzZWQi
OiAiZ3JlZW4iLAorfQorX2NvbG9yX2Zvcl90eXBlX2RlZmF1bHQgPSAieWVsbG93IgorCisKK2Rl
ZiBfbWFrZV9wbHVyYWwoY291bnQ6IGludCwgbm91bjogc3RyKSAtPiBUdXBsZVtpbnQsIHN0cl06
CisgICAgIyBObyBuZWVkIHRvIHBsdXJhbGl6ZSB3b3JkcyBzdWNoIGFzIGBmYWlsZWRgIG9yIGBw
YXNzZWRgLgorICAgIGlmIG5vdW4gbm90IGluIFsiZXJyb3IiLCAid2FybmluZ3MiXToKKyAgICAg
ICAgcmV0dXJuIGNvdW50LCBub3VuCiAKLSAgICByZXR1cm4gKGxpbmUsIGNvbG9yKQorICAgICMg
VGhlIGB3YXJuaW5nc2Aga2V5IGlzIHBsdXJhbC4gVG8gYXZvaWQgQVBJIGJyZWFrYWdlLCB3ZSBr
ZWVwIGl0IHRoYXQgd2F5IGJ1dAorICAgICMgc2V0IGl0IHRvIHNpbmd1bGFyIGhlcmUgc28gd2Ug
Y2FuIGRldGVybWluZSBwbHVyYWxpdHkgaW4gdGhlIHNhbWUgd2F5IGFzIHdlIGRvCisgICAgIyBm
b3IgYGVycm9yYC4KKyAgICBub3VuID0gbm91bi5yZXBsYWNlKCJ3YXJuaW5ncyIsICJ3YXJuaW5n
IikKIAorICAgIHJldHVybiBjb3VudCwgbm91biArICJzIiBpZiBjb3VudCAhPSAxIGVsc2Ugbm91
bgogCi1kZWYgX3BsdWdpbl9uYW1ldmVyc2lvbnMocGx1Z2luaW5mbyk6Ci0gICAgdmFsdWVzID0g
W10KKworZGVmIF9wbHVnaW5fbmFtZXZlcnNpb25zKHBsdWdpbmluZm8pIC0+IExpc3Rbc3RyXToK
KyAgICB2YWx1ZXMgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KICAgICBmb3IgcGx1Z2luLCBkaXN0
IGluIHBsdWdpbmluZm86Ci0gICAgICAgICMgZ2V0cyB1cyBuYW1lIGFuZCB2ZXJzaW9uIQorICAg
ICAgICAjIEdldHMgdXMgbmFtZSBhbmQgdmVyc2lvbiEKICAgICAgICAgbmFtZSA9ICJ7ZGlzdC5w
cm9qZWN0X25hbWV9LXtkaXN0LnZlcnNpb259Ii5mb3JtYXQoZGlzdD1kaXN0KQotICAgICAgICAj
IHF1ZXN0aW9uYWJsZSBjb252ZW5pZW5jZSwgYnV0IGl0IGtlZXBzIHRoaW5ncyBzaG9ydAorICAg
ICAgICAjIFF1ZXN0aW9uYWJsZSBjb252ZW5pZW5jZSwgYnV0IGl0IGtlZXBzIHRoaW5ncyBzaG9y
dC4KICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJweXRlc3QtIik6CiAgICAgICAgICAgICBu
YW1lID0gbmFtZVs3Ol0KLSAgICAgICAgIyB3ZSBkZWNpZGVkIHRvIHByaW50IHB5dGhvbiBwYWNr
YWdlIG5hbWVzCi0gICAgICAgICMgdGhleSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lIHBsdWdpbgor
ICAgICAgICAjIFdlIGRlY2lkZWQgdG8gcHJpbnQgcHl0aG9uIHBhY2thZ2UgbmFtZXMgdGhleSBj
YW4gaGF2ZSBtb3JlIHRoYW4gb25lIHBsdWdpbi4KICAgICAgICAgaWYgbmFtZSBub3QgaW4gdmFs
dWVzOgogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChuYW1lKQogICAgIHJldHVybiB2YWx1ZXMK
KworCitkZWYgZm9ybWF0X3Nlc3Npb25fZHVyYXRpb24oc2Vjb25kczogZmxvYXQpIC0+IHN0cjoK
KyAgICAiIiJGb3JtYXQgdGhlIGdpdmVuIHNlY29uZHMgaW4gYSBodW1hbiByZWFkYWJsZSBtYW5u
ZXIgdG8gc2hvdyBpbiB0aGUgZmluYWwgc3VtbWFyeS4iIiIKKyAgICBpZiBzZWNvbmRzIDwgNjA6
CisgICAgICAgIHJldHVybiAiezouMmZ9cyIuZm9ybWF0KHNlY29uZHMpCisgICAgZWxzZToKKyAg
ICAgICAgZHQgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1pbnQoc2Vjb25kcykpCisgICAg
ICAgIHJldHVybiAiezouMmZ9cyAoe30pIi5mb3JtYXQoc2Vjb25kcywgZHQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90aW1pbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC90aW1pbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42
MjQ0MmRlNzUyODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90
aW1pbmcucHkKQEAgLTAsMCArMSwxMiBAQAorIiIiSW5kaXJlY3Rpb24gZm9yIHRpbWUgZnVuY3Rp
b25zLgorCitXZSBpbnRlbnRpb25hbGx5IGdyYWIgc29tZSAidGltZSIgZnVuY3Rpb25zIGludGVy
bmFsbHkgdG8gYXZvaWQgdGVzdHMgbW9ja2luZyAidGltZSIgdG8gYWZmZWN0CitweXRlc3QgcnVu
dGltZSBpbmZvcm1hdGlvbiAoaXNzdWUgIzE4NSkuCisKK0ZpeHR1cmUgIm1vY2tfdGltaW5pZyIg
YWxzbyBpbnRlcmFjdHMgd2l0aCB0aGlzIG1vZHVsZSBmb3IgcHl0ZXN0J3Mgb3duIHRlc3RzLgor
IiIiCitmcm9tIHRpbWUgaW1wb3J0IHBlcmZfY291bnRlcgorZnJvbSB0aW1lIGltcG9ydCBzbGVl
cAorZnJvbSB0aW1lIGltcG9ydCB0aW1lCisKK19fYWxsX18gPSBbInBlcmZfY291bnRlciIsICJz
bGVlcCIsICJ0aW1lIl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3RtcGRp
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3RtcGRpci5weQppbmRleCAyNjBkMjg0MjIz
NDMuLmViOGFhOWY5MTA0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdG1w
ZGlyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3RtcGRpci5weQpAQCAtMSw4NCAr
MSwxMzAgQEAKLSIiIiBzdXBwb3J0IGZvciBwcm92aWRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yaWVz
IHRvIHRlc3QgZnVuY3Rpb25zLiAgIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KKyIiIlN1cHBvcnQgZm9yIHByb3Zp
ZGluZyB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdG8gdGVzdCBmdW5jdGlvbnMuIiIiCitpbXBvcnQg
b3MKIGltcG9ydCByZQoraW1wb3J0IHRlbXBmaWxlCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9u
YWwKIAotaW1wb3J0IHB5dGVzdAoraW1wb3J0IGF0dHIKIGltcG9ydCBweQorCitpbXBvcnQgcHl0
ZXN0Citmcm9tIC5wYXRobGliIGltcG9ydCBlbnN1cmVfcmVzZXRfZGlyCitmcm9tIC5wYXRobGli
IGltcG9ydCBMT0NLX1RJTUVPVVQKK2Zyb20gLnBhdGhsaWIgaW1wb3J0IG1ha2VfbnVtYmVyZWRf
ZGlyCitmcm9tIC5wYXRobGliIGltcG9ydCBtYWtlX251bWJlcmVkX2Rpcl93aXRoX2NsZWFudXAK
K2Zyb20gLnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZp
bmFsCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5maXh0
dXJlcyBpbXBvcnQgRml4dHVyZVJlcXVlc3QKIGZyb20gX3B5dGVzdC5tb25rZXlwYXRjaCBpbXBv
cnQgTW9ua2V5UGF0Y2gKIAogCi1jbGFzcyBUZW1wZGlyRmFjdG9yeShvYmplY3QpOgorQGZpbmFs
CitAYXR0ci5zCitjbGFzcyBUZW1wUGF0aEZhY3Rvcnk6CiAgICAgIiIiRmFjdG9yeSBmb3IgdGVt
cG9yYXJ5IGRpcmVjdG9yaWVzIHVuZGVyIHRoZSBjb21tb24gYmFzZSB0ZW1wIGRpcmVjdG9yeS4K
IAogICAgIFRoZSBiYXNlIGRpcmVjdG9yeSBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgYGAt
LWJhc2V0ZW1wYGAgb3B0aW9uLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZyk6Ci0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0gICAgICAgIHNlbGYudHJhY2Ug
PSBjb25maWcudHJhY2UuZ2V0KCJ0bXBkaXIiKQorICAgIF9naXZlbl9iYXNldGVtcCA9IGF0dHIu
aWIoCisgICAgICAgIHR5cGU9T3B0aW9uYWxbUGF0aF0sCisgICAgICAgICMgVXNlIG9zLnBhdGgu
YWJzcGF0aCgpIHRvIGdldCBhYnNvbHV0ZSBwYXRoIGluc3RlYWQgb2YgcmVzb2x2ZSgpIGFzIGl0
CisgICAgICAgICMgZG9lcyBub3Qgd29yayB0aGUgc2FtZSBpbiBhbGwgcGxhdGZvcm1zIChzZWUg
IzQ0MjcpLgorICAgICAgICAjIFBhdGguYWJzb2x1dGUoKSBleGlzdHMsIGJ1dCBpdCBpcyBub3Qg
cHVibGljIChzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTAxMikuCisgICAgICAg
ICMgSWdub3JlIHR5cGUgYmVjYXVzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL215cHkv
aXNzdWVzLzYxNzIuCisgICAgICAgIGNvbnZlcnRlcj1hdHRyLmNvbnZlcnRlcnMub3B0aW9uYWwo
CisgICAgICAgICAgICBsYW1iZGEgcDogUGF0aChvcy5wYXRoLmFic3BhdGgoc3RyKHApKSkgICMg
dHlwZTogaWdub3JlCisgICAgICAgICksCisgICAgKQorICAgIF90cmFjZSA9IGF0dHIuaWIoKQor
ICAgIF9iYXNldGVtcCA9IGF0dHIuaWIodHlwZT1PcHRpb25hbFtQYXRoXSwgZGVmYXVsdD1Ob25l
KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fY29uZmlnKGNscywgY29uZmlnOiBD
b25maWcpIC0+ICJUZW1wUGF0aEZhY3RvcnkiOgorICAgICAgICAiIiJDcmVhdGUgYSBmYWN0b3J5
IGFjY29yZGluZyB0byBweXRlc3QgY29uZmlndXJhdGlvbi4iIiIKKyAgICAgICAgcmV0dXJuIGNs
cygKKyAgICAgICAgICAgIGdpdmVuX2Jhc2V0ZW1wPWNvbmZpZy5vcHRpb24uYmFzZXRlbXAsIHRy
YWNlPWNvbmZpZy50cmFjZS5nZXQoInRtcGRpciIpCisgICAgICAgICkKKworICAgIGRlZiBfZW5z
dXJlX3JlbGF0aXZlX3RvX2Jhc2V0ZW1wKHNlbGYsIGJhc2VuYW1lOiBzdHIpIC0+IHN0cjoKKyAg
ICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKGJhc2VuYW1lKQorICAgICAgICBpZiAo
c2VsZi5nZXRiYXNldGVtcCgpIC8gYmFzZW5hbWUpLnJlc29sdmUoKS5wYXJlbnQgIT0gc2VsZi5n
ZXRiYXNldGVtcCgpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAg
ICAgICAie30gaXMgbm90IGEgbm9ybWFsaXplZCBhbmQgcmVsYXRpdmUgcGF0aCIuZm9ybWF0KGJh
c2VuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gYmFzZW5hbWUKIAotICAgIGRl
ZiBlbnN1cmV0ZW1wKHNlbGYsIHN0cmluZywgZGlyPTEpOgotICAgICAgICAiIiIgKGRlcHJlY2F0
ZWQpIHJldHVybiB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGggd2l0aAotICAgICAgICAgICAgdGhl
IGdpdmVuIHN0cmluZyBhcyB0aGUgdHJhaWxpbmcgcGFydC4gIEl0IGlzIHVzdWFsbHkKLSAgICAg
ICAgICAgIGJldHRlciB0byB1c2UgdGhlICd0bXBkaXInIGZ1bmN0aW9uIGFyZ3VtZW50IHdoaWNo
Ci0gICAgICAgICAgICBwcm92aWRlcyBhbiBlbXB0eSB1bmlxdWUtcGVyLXRlc3QtaW52b2NhdGlv
biBkaXJlY3RvcnkKLSAgICAgICAgICAgIGFuZCBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5Lgot
ICAgICAgICAiIiIKLSAgICAgICAgIyBweS5sb2cuX2FwaXdhcm4oIj4xLjEiLCAidXNlIHRtcGRp
ciBmdW5jdGlvbiBhcmd1bWVudCIpCi0gICAgICAgIHJldHVybiBzZWxmLmdldGJhc2V0ZW1wKCku
ZW5zdXJlKHN0cmluZywgZGlyPWRpcikKKyAgICBkZWYgbWt0ZW1wKHNlbGYsIGJhc2VuYW1lOiBz
dHIsIG51bWJlcmVkOiBib29sID0gVHJ1ZSkgLT4gUGF0aDoKKyAgICAgICAgIiIiQ3JlYXRlIGEg
bmV3IHRlbXBvcmFyeSBkaXJlY3RvcnkgbWFuYWdlZCBieSB0aGUgZmFjdG9yeS4KIAotICAgIGRl
ZiBta3RlbXAoc2VsZiwgYmFzZW5hbWUsIG51bWJlcmVkPVRydWUpOgotICAgICAgICAiIiJDcmVh
dGUgYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIGJhc2UgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhbmQgcmV0
dXJuIGl0LgotICAgICAgICBJZiBgYG51bWJlcmVkYGAsIGVuc3VyZSB0aGUgZGlyZWN0b3J5IGlz
IHVuaXF1ZSBieSBhZGRpbmcgYSBudW1iZXIKLSAgICAgICAgcHJlZml4IGdyZWF0ZXIgdGhhbiBh
bnkgZXhpc3Rpbmcgb25lLgorICAgICAgICA6cGFyYW0gYmFzZW5hbWU6CisgICAgICAgICAgICBE
aXJlY3RvcnkgYmFzZSBuYW1lLCBtdXN0IGJlIGEgcmVsYXRpdmUgcGF0aC4KKworICAgICAgICA6
cGFyYW0gbnVtYmVyZWQ6CisgICAgICAgICAgICBJZiBgYFRydWVgYCwgZW5zdXJlIHRoZSBkaXJl
Y3RvcnkgaXMgdW5pcXVlIGJ5IGFkZGluZyBhIG51bWJlcmVkCisgICAgICAgICAgICBzdWZmaXgg
Z3JlYXRlciB0aGFuIGFueSBleGlzdGluZyBvbmU6IGBgYmFzZW5hbWU9ImZvby0iYGAgYW5kIGBg
bnVtYmVyZWQ9VHJ1ZWBgCisgICAgICAgICAgICBtZWFucyB0aGF0IHRoaXMgZnVuY3Rpb24gd2ls
bCBjcmVhdGUgZGlyZWN0b3JpZXMgbmFtZWQgYGAiZm9vLTAiYGAsCisgICAgICAgICAgICBgYCJm
b28tMSJgYCwgYGAiZm9vLTIiYGAgYW5kIHNvIG9uLgorCisgICAgICAgIDpyZXR1cm5zOgorICAg
ICAgICAgICAgVGhlIHBhdGggdG8gdGhlIG5ldyBkaXJlY3RvcnkuCiAgICAgICAgICIiIgotICAg
ICAgICBiYXNldGVtcCA9IHNlbGYuZ2V0YmFzZXRlbXAoKQorICAgICAgICBiYXNlbmFtZSA9IHNl
bGYuX2Vuc3VyZV9yZWxhdGl2ZV90b19iYXNldGVtcChiYXNlbmFtZSkKICAgICAgICAgaWYgbm90
IG51bWJlcmVkOgotICAgICAgICAgICAgcCA9IGJhc2V0ZW1wLm1rZGlyKGJhc2VuYW1lKQorICAg
ICAgICAgICAgcCA9IHNlbGYuZ2V0YmFzZXRlbXAoKS5qb2lucGF0aChiYXNlbmFtZSkKKyAgICAg
ICAgICAgIHAubWtkaXIoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcCA9IHB5LnBhdGgu
bG9jYWwubWFrZV9udW1iZXJlZF9kaXIoCi0gICAgICAgICAgICAgICAgcHJlZml4PWJhc2VuYW1l
LCBrZWVwPTAsIHJvb3RkaXI9YmFzZXRlbXAsIGxvY2tfdGltZW91dD1Ob25lCi0gICAgICAgICAg
ICApCi0gICAgICAgIHNlbGYudHJhY2UoIm1rdGVtcCIsIHApCisgICAgICAgICAgICBwID0gbWFr
ZV9udW1iZXJlZF9kaXIocm9vdD1zZWxmLmdldGJhc2V0ZW1wKCksIHByZWZpeD1iYXNlbmFtZSkK
KyAgICAgICAgICAgIHNlbGYuX3RyYWNlKCJta3RlbXAiLCBwKQogICAgICAgICByZXR1cm4gcAog
Ci0gICAgZGVmIGdldGJhc2V0ZW1wKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIGJhc2UgdGVt
cG9yYXJ5IGRpcmVjdG9yeS4gIiIiCi0gICAgICAgIHRyeToKKyAgICBkZWYgZ2V0YmFzZXRlbXAo
c2VsZikgLT4gUGF0aDoKKyAgICAgICAgIiIiUmV0dXJuIGJhc2UgdGVtcG9yYXJ5IGRpcmVjdG9y
eS4iIiIKKyAgICAgICAgaWYgc2VsZi5fYmFzZXRlbXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fYmFzZXRlbXAKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgot
ICAgICAgICAgICAgYmFzZXRlbXAgPSBzZWxmLmNvbmZpZy5vcHRpb24uYmFzZXRlbXAKLSAgICAg
ICAgICAgIGlmIGJhc2V0ZW1wOgotICAgICAgICAgICAgICAgIGJhc2V0ZW1wID0gcHkucGF0aC5s
b2NhbChiYXNldGVtcCkKLSAgICAgICAgICAgICAgICBpZiBiYXNldGVtcC5jaGVjaygpOgotICAg
ICAgICAgICAgICAgICAgICBiYXNldGVtcC5yZW1vdmUoKQotICAgICAgICAgICAgICAgIGJhc2V0
ZW1wLm1rZGlyKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVtcHJvb3Qg
PSBweS5wYXRoLmxvY2FsLmdldF90ZW1wcm9vdCgpCi0gICAgICAgICAgICAgICAgdXNlciA9IGdl
dF91c2VyKCkKLSAgICAgICAgICAgICAgICBpZiB1c2VyOgotICAgICAgICAgICAgICAgICAgICAj
IHVzZSBhIHN1Yi1kaXJlY3RvcnkgaW4gdGhlIHRlbXByb290IHRvIHNwZWVkLXVwCi0gICAgICAg
ICAgICAgICAgICAgICMgbWFrZV9udW1iZXJlZF9kaXIoKSBjYWxsCi0gICAgICAgICAgICAgICAg
ICAgIHJvb3RkaXIgPSB0ZW1wcm9vdC5qb2luKCJweXRlc3Qtb2YtJXMiICUgdXNlcikKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByb290ZGlyID0gdGVtcHJvb3QK
LSAgICAgICAgICAgICAgICByb290ZGlyLmVuc3VyZShkaXI9MSkKLSAgICAgICAgICAgICAgICBi
YXNldGVtcCA9IHB5LnBhdGgubG9jYWwubWFrZV9udW1iZXJlZF9kaXIoCi0gICAgICAgICAgICAg
ICAgICAgIHByZWZpeD0icHl0ZXN0LSIsIHJvb3RkaXI9cm9vdGRpcgotICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgICAgIHNlbGYuX2Jhc2V0ZW1wID0gdCA9IGJhc2V0ZW1wLnJlYWxwYXRoKCkK
LSAgICAgICAgICAgIHNlbGYudHJhY2UoIm5ldyBiYXNldGVtcCIsIHQpCi0gICAgICAgICAgICBy
ZXR1cm4gdAotCi0gICAgZGVmIGZpbmlzaChzZWxmKToKLSAgICAgICAgc2VsZi50cmFjZSgiZmlu
aXNoIikKLQotCi1kZWYgZ2V0X3VzZXIoKToKKworICAgICAgICBpZiBzZWxmLl9naXZlbl9iYXNl
dGVtcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJhc2V0ZW1wID0gc2VsZi5fZ2l2ZW5fYmFz
ZXRlbXAKKyAgICAgICAgICAgIGVuc3VyZV9yZXNldF9kaXIoYmFzZXRlbXApCisgICAgICAgICAg
ICBiYXNldGVtcCA9IGJhc2V0ZW1wLnJlc29sdmUoKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgZnJvbV9lbnYgPSBvcy5lbnZpcm9uLmdldCgiUFlURVNUX0RFQlVHX1RFTVBST09UIikKKyAg
ICAgICAgICAgIHRlbXByb290ID0gUGF0aChmcm9tX2VudiBvciB0ZW1wZmlsZS5nZXR0ZW1wZGly
KCkpLnJlc29sdmUoKQorICAgICAgICAgICAgdXNlciA9IGdldF91c2VyKCkgb3IgInVua25vd24i
CisgICAgICAgICAgICAjIHVzZSBhIHN1Yi1kaXJlY3RvcnkgaW4gdGhlIHRlbXByb290IHRvIHNw
ZWVkLXVwCisgICAgICAgICAgICAjIG1ha2VfbnVtYmVyZWRfZGlyKCkgY2FsbAorICAgICAgICAg
ICAgcm9vdGRpciA9IHRlbXByb290LmpvaW5wYXRoKCJweXRlc3Qtb2Yte30iLmZvcm1hdCh1c2Vy
KSkKKyAgICAgICAgICAgIHJvb3RkaXIubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgICAg
IGJhc2V0ZW1wID0gbWFrZV9udW1iZXJlZF9kaXJfd2l0aF9jbGVhbnVwKAorICAgICAgICAgICAg
ICAgIHByZWZpeD0icHl0ZXN0LSIsIHJvb3Q9cm9vdGRpciwga2VlcD0zLCBsb2NrX3RpbWVvdXQ9
TE9DS19USU1FT1VUCisgICAgICAgICAgICApCisgICAgICAgIGFzc2VydCBiYXNldGVtcCBpcyBu
b3QgTm9uZSwgYmFzZXRlbXAKKyAgICAgICAgc2VsZi5fYmFzZXRlbXAgPSB0ID0gYmFzZXRlbXAK
KyAgICAgICAgc2VsZi5fdHJhY2UoIm5ldyBiYXNldGVtcCIsIHQpCisgICAgICAgIHJldHVybiB0
CisKKworQGZpbmFsCitAYXR0ci5zCitjbGFzcyBUZW1wZGlyRmFjdG9yeToKKyAgICAiIiJCYWNr
d2FyZCBjb21wdGliaWxpdHkgd3JhcHBlciB0aGF0IGltcGxlbWVudHMgOmNsYXNzOmBgcHkucGF0
aC5sb2NhbGBgCisgICAgZm9yIDpjbGFzczpgYFRlbXBQYXRoRmFjdG9yeWBgLiIiIgorCisgICAg
X3RtcHBhdGhfZmFjdG9yeSA9IGF0dHIuaWIodHlwZT1UZW1wUGF0aEZhY3RvcnkpCisKKyAgICBk
ZWYgbWt0ZW1wKHNlbGYsIGJhc2VuYW1lOiBzdHIsIG51bWJlcmVkOiBib29sID0gVHJ1ZSkgLT4g
cHkucGF0aC5sb2NhbDoKKyAgICAgICAgIiIiU2FtZSBhcyA6bWV0aDpgVGVtcFBhdGhGYWN0b3J5
Lm1rdGVtcGAsIGJ1dCByZXR1cm5zIGEgYGBweS5wYXRoLmxvY2FsYGAgb2JqZWN0LiIiIgorICAg
ICAgICByZXR1cm4gcHkucGF0aC5sb2NhbChzZWxmLl90bXBwYXRoX2ZhY3RvcnkubWt0ZW1wKGJh
c2VuYW1lLCBudW1iZXJlZCkucmVzb2x2ZSgpKQorCisgICAgZGVmIGdldGJhc2V0ZW1wKHNlbGYp
IC0+IHB5LnBhdGgubG9jYWw6CisgICAgICAgICIiIkJhY2t3YXJkIGNvbXBhdCB3cmFwcGVyIGZv
ciBgYF90bXBwYXRoX2ZhY3RvcnkuZ2V0YmFzZXRlbXBgYC4iIiIKKyAgICAgICAgcmV0dXJuIHB5
LnBhdGgubG9jYWwoc2VsZi5fdG1wcGF0aF9mYWN0b3J5LmdldGJhc2V0ZW1wKCkucmVzb2x2ZSgp
KQorCisKK2RlZiBnZXRfdXNlcigpIC0+IE9wdGlvbmFsW3N0cl06CiAgICAgIiIiUmV0dXJuIHRo
ZSBjdXJyZW50IHVzZXIgbmFtZSwgb3IgTm9uZSBpZiBnZXR1c2VyKCkgZG9lcyBub3Qgd29yawot
ICAgIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50IChzZWUgIzEwMTApLgotICAgICIiIgorICAg
IGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50IChzZWUgIzEwMTApLiIiIgogICAgIGltcG9ydCBn
ZXRwYXNzCiAKICAgICB0cnk6CkBAIC04NywxMSArMTMzLDcgQEAgZGVmIGdldF91c2VyKCk6CiAg
ICAgICAgIHJldHVybiBOb25lCiAKIAotIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci1UZW1wZGly
SGFuZGxlciA9IFRlbXBkaXJGYWN0b3J5Ci0KLQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmln
KToKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZzogQ29uZmlnKSAtPiBOb25lOgogICAgICIi
IkNyZWF0ZSBhIFRlbXBkaXJGYWN0b3J5IGFuZCBhdHRhY2ggaXQgdG8gdGhlIGNvbmZpZyBvYmpl
Y3QuCiAKICAgICBUaGlzIGlzIHRvIGNvbXBseSB3aXRoIGV4aXN0aW5nIHBsdWdpbnMgd2hpY2gg
ZXhwZWN0IHRoZSBoYW5kbGVyIHRvIGJlCkBAIC05OSwzMyArMTQxLDU5IEBAIGRlZiBweXRlc3Rf
Y29uZmlndXJlKGNvbmZpZyk6CiAgICAgdG8gdGhlIHRtcGRpcl9mYWN0b3J5IHNlc3Npb24gZml4
dHVyZS4KICAgICAiIiIKICAgICBtcCA9IE1vbmtleVBhdGNoKCkKLSAgICB0ID0gVGVtcGRpckZh
Y3RvcnkoY29uZmlnKQotICAgIGNvbmZpZy5fY2xlYW51cC5leHRlbmQoW21wLnVuZG8sIHQuZmlu
aXNoXSkKKyAgICB0bXBwYXRoX2hhbmRsZXIgPSBUZW1wUGF0aEZhY3RvcnkuZnJvbV9jb25maWco
Y29uZmlnKQorICAgIHQgPSBUZW1wZGlyRmFjdG9yeSh0bXBwYXRoX2hhbmRsZXIpCisgICAgY29u
ZmlnLl9jbGVhbnVwLmFwcGVuZChtcC51bmRvKQorICAgIG1wLnNldGF0dHIoY29uZmlnLCAiX3Rt
cF9wYXRoX2ZhY3RvcnkiLCB0bXBwYXRoX2hhbmRsZXIsIHJhaXNpbmc9RmFsc2UpCiAgICAgbXAu
c2V0YXR0cihjb25maWcsICJfdG1wZGlyaGFuZGxlciIsIHQsIHJhaXNpbmc9RmFsc2UpCi0gICAg
bXAuc2V0YXR0cihweXRlc3QsICJlbnN1cmV0ZW1wIiwgdC5lbnN1cmV0ZW1wLCByYWlzaW5nPUZh
bHNlKQogCiAKIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCi1kZWYgdG1wZGlyX2Zh
Y3RvcnkocmVxdWVzdCk6Ci0gICAgIiIiUmV0dXJuIGEgVGVtcGRpckZhY3RvcnkgaW5zdGFuY2Ug
Zm9yIHRoZSB0ZXN0IHNlc3Npb24uCi0gICAgIiIiCi0gICAgcmV0dXJuIHJlcXVlc3QuY29uZmln
Ll90bXBkaXJoYW5kbGVyCitkZWYgdG1wZGlyX2ZhY3RvcnkocmVxdWVzdDogRml4dHVyZVJlcXVl
c3QpIC0+IFRlbXBkaXJGYWN0b3J5OgorICAgICIiIlJldHVybiBhIDpjbGFzczpgX3B5dGVzdC50
bXBkaXIuVGVtcGRpckZhY3RvcnlgIGluc3RhbmNlIGZvciB0aGUgdGVzdCBzZXNzaW9uLiIiIgor
ICAgICMgU2V0IGR5bmFtaWNhbGx5IGJ5IHB5dGVzdF9jb25maWd1cmUoKSBhYm92ZS4KKyAgICBy
ZXR1cm4gcmVxdWVzdC5jb25maWcuX3RtcGRpcmhhbmRsZXIgICMgdHlwZTogaWdub3JlCiAKIAot
QHB5dGVzdC5maXh0dXJlCi1kZWYgdG1wZGlyKHJlcXVlc3QsIHRtcGRpcl9mYWN0b3J5KToKLSAg
ICAiIiJSZXR1cm4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGggb2JqZWN0Ci0gICAgd2hpY2gg
aXMgdW5pcXVlIHRvIGVhY2ggdGVzdCBmdW5jdGlvbiBpbnZvY2F0aW9uLAotICAgIGNyZWF0ZWQg
YXMgYSBzdWIgZGlyZWN0b3J5IG9mIHRoZSBiYXNlIHRlbXBvcmFyeQotICAgIGRpcmVjdG9yeS4g
IFRoZSByZXR1cm5lZCBvYmplY3QgaXMgYSBgcHkucGF0aC5sb2NhbGBfCi0gICAgcGF0aCBvYmpl
Y3QuCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHRtcF9wYXRoX2ZhY3Rv
cnkocmVxdWVzdDogRml4dHVyZVJlcXVlc3QpIC0+IFRlbXBQYXRoRmFjdG9yeToKKyAgICAiIiJS
ZXR1cm4gYSA6Y2xhc3M6YF9weXRlc3QudG1wZGlyLlRlbXBQYXRoRmFjdG9yeWAgaW5zdGFuY2Ug
Zm9yIHRoZSB0ZXN0IHNlc3Npb24uIiIiCisgICAgIyBTZXQgZHluYW1pY2FsbHkgYnkgcHl0ZXN0
X2NvbmZpZ3VyZSgpIGFib3ZlLgorICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5fdG1wX3BhdGhf
ZmFjdG9yeSAgIyB0eXBlOiBpZ25vcmUKIAotICAgIC4uIF9gcHkucGF0aC5sb2NhbGA6IGh0dHBz
Oi8vcHkucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3BhdGguaHRtbAotICAgICIiIgorCitkZWYg
X21rX3RtcChyZXF1ZXN0OiBGaXh0dXJlUmVxdWVzdCwgZmFjdG9yeTogVGVtcFBhdGhGYWN0b3J5
KSAtPiBQYXRoOgogICAgIG5hbWUgPSByZXF1ZXN0Lm5vZGUubmFtZQogICAgIG5hbWUgPSByZS5z
dWIociJbXFddIiwgIl8iLCBuYW1lKQogICAgIE1BWFZBTCA9IDMwCi0gICAgaWYgbGVuKG5hbWUp
ID4gTUFYVkFMOgotICAgICAgICBuYW1lID0gbmFtZVs6TUFYVkFMXQotICAgIHggPSB0bXBkaXJf
ZmFjdG9yeS5ta3RlbXAobmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKLSAgICByZXR1cm4geAorICAgIG5h
bWUgPSBuYW1lWzpNQVhWQUxdCisgICAgcmV0dXJuIGZhY3RvcnkubWt0ZW1wKG5hbWUsIG51bWJl
cmVkPVRydWUpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgdG1wZGlyKHRtcF9wYXRoOiBQYXRo
KSAtPiBweS5wYXRoLmxvY2FsOgorICAgICIiIlJldHVybiBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkg
cGF0aCBvYmplY3Qgd2hpY2ggaXMgdW5pcXVlIHRvIGVhY2ggdGVzdAorICAgIGZ1bmN0aW9uIGlu
dm9jYXRpb24sIGNyZWF0ZWQgYXMgYSBzdWIgZGlyZWN0b3J5IG9mIHRoZSBiYXNlIHRlbXBvcmFy
eQorICAgIGRpcmVjdG9yeS4KKworICAgIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgYSBgcHkucGF0
aC5sb2NhbGBfIHBhdGggb2JqZWN0LgorCisgICAgLi4gX2BweS5wYXRoLmxvY2FsYDogaHR0cHM6
Ly9weS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcGF0aC5odG1sCisgICAgIiIiCisgICAgcmV0
dXJuIHB5LnBhdGgubG9jYWwodG1wX3BhdGgpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgdG1w
X3BhdGgocmVxdWVzdDogRml4dHVyZVJlcXVlc3QsIHRtcF9wYXRoX2ZhY3Rvcnk6IFRlbXBQYXRo
RmFjdG9yeSkgLT4gUGF0aDoKKyAgICAiIiJSZXR1cm4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBh
dGggb2JqZWN0IHdoaWNoIGlzIHVuaXF1ZSB0byBlYWNoIHRlc3QKKyAgICBmdW5jdGlvbiBpbnZv
Y2F0aW9uLCBjcmVhdGVkIGFzIGEgc3ViIGRpcmVjdG9yeSBvZiB0aGUgYmFzZSB0ZW1wb3JhcnkK
KyAgICBkaXJlY3RvcnkuCisKKyAgICBUaGUgcmV0dXJuZWQgb2JqZWN0IGlzIGEgOmNsYXNzOmBw
YXRobGliLlBhdGhgIG9iamVjdC4KKworICAgIC4uIG5vdGU6OgorCisgICAgICAgIEluIHB5dGhv
biA8IDMuNiB0aGlzIGlzIGEgcGF0aGxpYjIuUGF0aC4KKyAgICAiIiIKKworICAgIHJldHVybiBf
bWtfdG1wKHJlcXVlc3QsIHRtcF9wYXRoX2ZhY3RvcnkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zcmMvX3B5dGVzdC91bml0dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3VuaXR0
ZXN0LnB5CmluZGV4IDZhZDlmZGE4ODcwNS4uMDlhYTAxNGM1OGE0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC91bml0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC91bml0dGVzdC5weQpAQCAtMSwxMTIgKzEsMTc3IEBACi0iIiIgZGlzY292ZXJ5IGFuZCBy
dW5uaW5nIG9mIHN0ZC1saWJyYXJ5ICJ1bml0dGVzdCIgc3R5bGUgdGVzdHMuICIiIgotZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlv
bgotCisiIiJEaXNjb3ZlciBhbmQgcnVuIHN0ZC1saWJyYXJ5ICJ1bml0dGVzdCIgc3R5bGUgdGVz
dHMuIiIiCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdHlwZXMKK2Zyb20g
dHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBp
bmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCitmcm9tIHR5
cGluZyBpbXBvcnQgTGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGlu
ZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogCi0jIGZvciB0cmFuc2Zl
cnJpbmcgbWFya2VycwogaW1wb3J0IF9weXRlc3QuX2NvZGUKK2ltcG9ydCBweXRlc3QKK2Zyb20g
X3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldGltZnVuYworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBv
cnQgaXNfYXN5bmNfZnVuY3Rpb24KK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hF
Q0tJTkcKIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCi1mcm9tIF9weXRlc3Qu
b3V0Y29tZXMgaW1wb3J0IGZhaWwsIHNraXAsIHhmYWlsCi1mcm9tIF9weXRlc3QucHl0aG9uIGlt
cG9ydCB0cmFuc2Zlcl9tYXJrZXJzLCBDbGFzcywgTW9kdWxlLCBGdW5jdGlvbgotCi0KLWRlZiBw
eXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2JqKToKLSAgICAjIGhh
cyB1bml0dGVzdCBiZWVuIGltcG9ydGVkIGFuZCBpcyBvYmogYSBzdWJjbGFzcyBvZiBpdHMgVGVz
dENhc2U/Citmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IEZpeHR1cmVSZXF1ZXN0Citmcm9t
IF9weXRlc3Qubm9kZXMgaW1wb3J0IENvbGxlY3RvcgorZnJvbSBfcHl0ZXN0Lm5vZGVzIGltcG9y
dCBJdGVtCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGV4aXQKK2Zyb20gX3B5dGVzdC5v
dXRjb21lcyBpbXBvcnQgZmFpbAorZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBza2lwCitm
cm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IHhmYWlsCitmcm9tIF9weXRlc3QucHl0aG9uIGlt
cG9ydCBDbGFzcworZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgRnVuY3Rpb24KK2Zyb20gX3B5
dGVzdC5weXRob24gaW1wb3J0IFB5Q29sbGVjdG9yCitmcm9tIF9weXRlc3QucnVubmVyIGltcG9y
dCBDYWxsSW5mbworZnJvbSBfcHl0ZXN0LnNraXBwaW5nIGltcG9ydCBza2lwcGVkX2J5X21hcmtf
a2V5Citmcm9tIF9weXRlc3Quc2tpcHBpbmcgaW1wb3J0IHVuZXhwZWN0ZWRzdWNjZXNzX2tleQor
CitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIGZyb20gdHlwaW5n
IGltcG9ydCBUeXBlCisKKyAgICBmcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IF9TY29wZQor
CisgICAgX1N5c0V4Y0luZm9UeXBlID0gVW5pb25bCisgICAgICAgIFR1cGxlW1R5cGVbQmFzZUV4
Y2VwdGlvbl0sIEJhc2VFeGNlcHRpb24sIHR5cGVzLlRyYWNlYmFja1R5cGVdLAorICAgICAgICBU
dXBsZVtOb25lLCBOb25lLCBOb25lXSwKKyAgICBdCisKKworZGVmIHB5dGVzdF9weWNvbGxlY3Rf
bWFrZWl0ZW0oCisgICAgY29sbGVjdG9yOiBQeUNvbGxlY3RvciwgbmFtZTogc3RyLCBvYmo6IG9i
amVjdAorKSAtPiBPcHRpb25hbFsiVW5pdFRlc3RDYXNlIl06CisgICAgIyBIYXMgdW5pdHRlc3Qg
YmVlbiBpbXBvcnRlZCBhbmQgaXMgb2JqIGEgc3ViY2xhc3Mgb2YgaXRzIFRlc3RDYXNlPwogICAg
IHRyeToKLSAgICAgICAgaWYgbm90IGlzc3ViY2xhc3Mob2JqLCBzeXMubW9kdWxlc1sidW5pdHRl
c3QiXS5UZXN0Q2FzZSk6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdXQgPSBzeXMubW9k
dWxlc1sidW5pdHRlc3QiXQorICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIGB1dGAgaXMg
YW4gb3BhcXVlIG1vZHVsZS4KKyAgICAgICAgaWYgbm90IGlzc3ViY2xhc3Mob2JqLCB1dC5UZXN0
Q2FzZSk6ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICBleGNl
cHQgRXhjZXB0aW9uOgotICAgICAgICByZXR1cm4KLSAgICAjIHllcywgc28gbGV0J3MgY29sbGVj
dCBpdAotICAgIHJldHVybiBVbml0VGVzdENhc2UobmFtZSwgcGFyZW50PWNvbGxlY3RvcikKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKyAgICAjIFllcywgc28gbGV0J3MgY29sbGVjdCBpdC4KKyAgICBp
dGVtID0gVW5pdFRlc3RDYXNlLmZyb21fcGFyZW50KGNvbGxlY3RvciwgbmFtZT1uYW1lLCBvYmo9
b2JqKSAgIyB0eXBlOiBVbml0VGVzdENhc2UKKyAgICByZXR1cm4gaXRlbQogCiAKIGNsYXNzIFVu
aXRUZXN0Q2FzZShDbGFzcyk6Ci0gICAgIyBtYXJrZXIgZm9yIGZpeHR1cmVtYW5nZXIuZ2V0Zml4
dHVyZWluZm8oKQotICAgICMgdG8gZGVjbGFyZSB0aGF0IG91ciBjaGlsZHJlbiBkbyBub3Qgc3Vw
cG9ydCBmdW5jYXJncworICAgICMgTWFya2VyIGZvciBmaXh0dXJlbWFuZ2VyLmdldGZpeHR1cmVp
bmZvKCkKKyAgICAjIHRvIGRlY2xhcmUgdGhhdCBvdXIgY2hpbGRyZW4gZG8gbm90IHN1cHBvcnQg
ZnVuY2FyZ3MuCiAgICAgbm9mdW5jYXJncyA9IFRydWUKIAotICAgIGRlZiBzZXR1cChzZWxmKToK
LSAgICAgICAgY2xzID0gc2VsZi5vYmoKLSAgICAgICAgaWYgZ2V0YXR0cihjbHMsICJfX3VuaXR0
ZXN0X3NraXBfXyIsIEZhbHNlKToKLSAgICAgICAgICAgIHJldHVybiAgIyBza2lwcGVkCi0gICAg
ICAgIHNldHVwID0gZ2V0YXR0cihjbHMsICJzZXRVcENsYXNzIiwgTm9uZSkKLSAgICAgICAgaWYg
c2V0dXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cCgpCi0gICAgICAgIHRlYXJkb3du
ID0gZ2V0YXR0cihjbHMsICJ0ZWFyRG93bkNsYXNzIiwgTm9uZSkKLSAgICAgICAgaWYgdGVhcmRv
d24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFkZGZpbmFsaXplcih0ZWFyZG93bikK
LSAgICAgICAgc3VwZXIoVW5pdFRlc3RDYXNlLCBzZWxmKS5zZXR1cCgpCi0KLSAgICBkZWYgY29s
bGVjdChzZWxmKToKKyAgICBkZWYgY29sbGVjdChzZWxmKSAtPiBJdGVyYWJsZVtVbmlvbltJdGVt
LCBDb2xsZWN0b3JdXToKICAgICAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdExvYWRlcgog
CiAgICAgICAgIGNscyA9IHNlbGYub2JqCiAgICAgICAgIGlmIG5vdCBnZXRhdHRyKGNscywgIl9f
dGVzdF9fIiwgVHJ1ZSk6CiAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBza2lwcGVkID0g
X2lzX3NraXBwZWQoY2xzKQorICAgICAgICBpZiBub3Qgc2tpcHBlZDoKKyAgICAgICAgICAgIHNl
bGYuX2luamVjdF9zZXR1cF90ZWFyZG93bl9maXh0dXJlcyhjbHMpCisgICAgICAgICAgICBzZWxm
Ll9pbmplY3Rfc2V0dXBfY2xhc3NfZml4dHVyZSgpCisKICAgICAgICAgc2VsZi5zZXNzaW9uLl9m
aXh0dXJlbWFuYWdlci5wYXJzZWZhY3RvcmllcyhzZWxmLCB1bml0dGVzdD1UcnVlKQogICAgICAg
ICBsb2FkZXIgPSBUZXN0TG9hZGVyKCkKLSAgICAgICAgbW9kdWxlID0gc2VsZi5nZXRwYXJlbnQo
TW9kdWxlKS5vYmoKICAgICAgICAgZm91bmRzb21ldGhpbmcgPSBGYWxzZQogICAgICAgICBmb3Ig
bmFtZSBpbiBsb2FkZXIuZ2V0VGVzdENhc2VOYW1lcyhzZWxmLm9iaik6CiAgICAgICAgICAgICB4
ID0gZ2V0YXR0cihzZWxmLm9iaiwgbmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHgs
ICJfX3Rlc3RfXyIsIFRydWUpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAg
ICBmdW5jb2JqID0gZ2V0YXR0cih4LCAiaW1fZnVuYyIsIHgpCi0gICAgICAgICAgICB0cmFuc2Zl
cl9tYXJrZXJzKGZ1bmNvYmosIGNscywgbW9kdWxlKQotICAgICAgICAgICAgeWllbGQgVGVzdENh
c2VGdW5jdGlvbihuYW1lLCBwYXJlbnQ9c2VsZiwgY2FsbG9iaj1mdW5jb2JqKQorICAgICAgICAg
ICAgZnVuY29iaiA9IGdldGltZnVuYyh4KQorICAgICAgICAgICAgeWllbGQgVGVzdENhc2VGdW5j
dGlvbi5mcm9tX3BhcmVudChzZWxmLCBuYW1lPW5hbWUsIGNhbGxvYmo9ZnVuY29iaikKICAgICAg
ICAgICAgIGZvdW5kc29tZXRoaW5nID0gVHJ1ZQogCiAgICAgICAgIGlmIG5vdCBmb3VuZHNvbWV0
aGluZzoKICAgICAgICAgICAgIHJ1bnRlc3QgPSBnZXRhdHRyKHNlbGYub2JqLCAicnVuVGVzdCIs
IE5vbmUpCiAgICAgICAgICAgICBpZiBydW50ZXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAg
ICAgIHV0ID0gc3lzLm1vZHVsZXMuZ2V0KCJ0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0IiwgTm9uZSkK
LSAgICAgICAgICAgICAgICBpZiB1dCBpcyBOb25lIG9yIHJ1bnRlc3QgIT0gdXQuVGVzdENhc2Uu
cnVuVGVzdDoKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgVGVzdENhc2VGdW5jdGlvbigicnVu
VGVzdCIsIHBhcmVudD1zZWxmKQorICAgICAgICAgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1
c2UgYHV0YCBpcyBhbiBvcGFxdWUgbW9kdWxlLgorICAgICAgICAgICAgICAgIGlmIHV0IGlzIE5v
bmUgb3IgcnVudGVzdCAhPSB1dC5UZXN0Q2FzZS5ydW5UZXN0OiAgIyB0eXBlOiBpZ25vcmUKKyAg
ICAgICAgICAgICAgICAgICAgeWllbGQgVGVzdENhc2VGdW5jdGlvbi5mcm9tX3BhcmVudChzZWxm
LCBuYW1lPSJydW5UZXN0IikKKworICAgIGRlZiBfaW5qZWN0X3NldHVwX3RlYXJkb3duX2ZpeHR1
cmVzKHNlbGYsIGNsczogdHlwZSkgLT4gTm9uZToKKyAgICAgICAgIiIiSW5qZWN0cyBhIGhpZGRl
biBhdXRvLXVzZSBmaXh0dXJlIHRvIGludm9rZSBzZXRVcENsYXNzL3NldHVwX21ldGhvZCBhbmQg
Y29ycmVzcG9uZGluZworICAgICAgICB0ZWFyZG93biBmdW5jdGlvbnMgKCM1MTcpLiIiIgorICAg
ICAgICBjbGFzc19maXh0dXJlID0gX21ha2VfeHVuaXRfZml4dHVyZSgKKyAgICAgICAgICAgIGNs
cywgInNldFVwQ2xhc3MiLCAidGVhckRvd25DbGFzcyIsIHNjb3BlPSJjbGFzcyIsIHBhc3Nfc2Vs
Zj1GYWxzZQorICAgICAgICApCisgICAgICAgIGlmIGNsYXNzX2ZpeHR1cmU6CisgICAgICAgICAg
ICBjbHMuX19weXRlc3RfY2xhc3Nfc2V0dXAgPSBjbGFzc19maXh0dXJlICAjIHR5cGU6IGlnbm9y
ZVthdHRyLWRlZmluZWRdCisKKyAgICAgICAgbWV0aG9kX2ZpeHR1cmUgPSBfbWFrZV94dW5pdF9m
aXh0dXJlKAorICAgICAgICAgICAgY2xzLCAic2V0dXBfbWV0aG9kIiwgInRlYXJkb3duX21ldGhv
ZCIsIHNjb3BlPSJmdW5jdGlvbiIsIHBhc3Nfc2VsZj1UcnVlCisgICAgICAgICkKKyAgICAgICAg
aWYgbWV0aG9kX2ZpeHR1cmU6CisgICAgICAgICAgICBjbHMuX19weXRlc3RfbWV0aG9kX3NldHVw
ID0gbWV0aG9kX2ZpeHR1cmUgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworCitkZWYg
X21ha2VfeHVuaXRfZml4dHVyZSgKKyAgICBvYmo6IHR5cGUsIHNldHVwX25hbWU6IHN0ciwgdGVh
cmRvd25fbmFtZTogc3RyLCBzY29wZTogIl9TY29wZSIsIHBhc3Nfc2VsZjogYm9vbAorKToKKyAg
ICBzZXR1cCA9IGdldGF0dHIob2JqLCBzZXR1cF9uYW1lLCBOb25lKQorICAgIHRlYXJkb3duID0g
Z2V0YXR0cihvYmosIHRlYXJkb3duX25hbWUsIE5vbmUpCisgICAgaWYgc2V0dXAgaXMgTm9uZSBh
bmQgdGVhcmRvd24gaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBweXRlc3Qu
Zml4dHVyZShzY29wZT1zY29wZSwgYXV0b3VzZT1UcnVlKQorICAgIGRlZiBmaXh0dXJlKHNlbGYs
IHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06
CisgICAgICAgIGlmIF9pc19za2lwcGVkKHNlbGYpOgorICAgICAgICAgICAgcmVhc29uID0gc2Vs
Zi5fX3VuaXR0ZXN0X3NraXBfd2h5X18KKyAgICAgICAgICAgIHB5dGVzdC5za2lwKHJlYXNvbikK
KyAgICAgICAgaWYgc2V0dXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBwYXNzX3NlbGY6
CisgICAgICAgICAgICAgICAgc2V0dXAoc2VsZiwgcmVxdWVzdC5mdW5jdGlvbikKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2V0dXAoKQorICAgICAgICB5aWVsZAorICAgICAg
ICBpZiB0ZWFyZG93biBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHBhc3Nfc2VsZjoKKyAg
ICAgICAgICAgICAgICB0ZWFyZG93bihzZWxmLCByZXF1ZXN0LmZ1bmN0aW9uKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZWFyZG93bigpCisKKyAgICByZXR1cm4gZml4dHVy
ZQogCiAKIGNsYXNzIFRlc3RDYXNlRnVuY3Rpb24oRnVuY3Rpb24pOgogICAgIG5vZnVuY2FyZ3Mg
PSBUcnVlCi0gICAgX2V4Y2luZm8gPSBOb25lCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3Rlc3RjYXNlID0gc2VsZi5wYXJlbnQub2JqKHNlbGYubmFtZSkKLSAgICAgICAg
c2VsZi5fZml4X3VuaXR0ZXN0X3NraXBfZGVjb3JhdG9yKCkKKyAgICBfZXhjaW5mbyA9IE5vbmUg
ICMgdHlwZTogT3B0aW9uYWxbTGlzdFtfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm9bQmFzZUV4
Y2VwdGlvbl1dXQorICAgIF90ZXN0Y2FzZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbdW5pdHRl
c3QuVGVzdENhc2VdCisKKyAgICBkZWYgc2V0dXAoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIyBB
IGJvdW5kIG1ldGhvZCB0byBiZSBjYWxsZWQgZHVyaW5nIHRlYXJkb3duKCkgaWYgc2V0IChzZWUg
J3J1bnRlc3QoKScpLgorICAgICAgICBzZWxmLl9leHBsaWNpdF90ZWFyRG93biA9IE5vbmUgICMg
dHlwZTogT3B0aW9uYWxbQ2FsbGFibGVbW10sIE5vbmVdXQorICAgICAgICBhc3NlcnQgc2VsZi5w
YXJlbnQgaXMgbm90IE5vbmUKKyAgICAgICAgc2VsZi5fdGVzdGNhc2UgPSBzZWxmLnBhcmVudC5v
Ymooc2VsZi5uYW1lKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgICAgICBzZWxm
Ll9vYmogPSBnZXRhdHRyKHNlbGYuX3Rlc3RjYXNlLCBzZWxmLm5hbWUpCi0gICAgICAgIGlmIGhh
c2F0dHIoc2VsZi5fdGVzdGNhc2UsICJzZXR1cF9tZXRob2QiKToKLSAgICAgICAgICAgIHNlbGYu
X3Rlc3RjYXNlLnNldHVwX21ldGhvZChzZWxmLl9vYmopCiAgICAgICAgIGlmIGhhc2F0dHIoc2Vs
ZiwgIl9yZXF1ZXN0Iik6CiAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Ll9maWxsZml4dHVyZXMo
KQogCi0gICAgZGVmIF9maXhfdW5pdHRlc3Rfc2tpcF9kZWNvcmF0b3Ioc2VsZik6Ci0gICAgICAg
ICIiIgotICAgICAgICBUaGUgQHVuaXR0ZXN0LnNraXAgZGVjb3JhdG9yIGNhbGxzIGZ1bmN0b29s
cy53cmFwcyhzZWxmLl90ZXN0Y2FzZSkKLSAgICAgICAgVGhlIGNhbGwgdG8gZnVuY3Rvb2xzLndy
YXBzKCkgZmFpbHMgdW5sZXNzIHNlbGYuX3Rlc3RjYXNlCi0gICAgICAgIGhhcyBhIF9fbmFtZV9f
IGF0dHJpYnV0ZS4gVGhpcyBpcyB1c3VhbGx5IGF1dG9tYXRpY2FsbHkgc3VwcGxpZWQKLSAgICAg
ICAgaWYgdGhlIHRlc3QgaXMgYSBmdW5jdGlvbiBvciBtZXRob2QsIGJ1dCB3ZSBuZWVkIHRvIGFk
ZCBtYW51YWxseQotICAgICAgICBoZXJlLgotCi0gICAgICAgIFNlZSBpc3N1ZSAjMTE2OQotICAg
ICAgICAiIiIKLSAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAyOgotICAgICAgICAg
ICAgc2V0YXR0cihzZWxmLl90ZXN0Y2FzZSwgIl9fbmFtZV9fIiwgc2VsZi5uYW1lKQotCi0gICAg
ZGVmIHRlYXJkb3duKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX3Rlc3RjYXNlLCAi
dGVhcmRvd25fbWV0aG9kIik6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS50ZWFyZG93bl9t
ZXRob2Qoc2VsZi5fb2JqKQotICAgICAgICAjIEFsbG93IGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBU
ZXN0Q2FzZSBpbnN0YW5jZSBhdHRyaWJ1dGVzLgorICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBO
b25lOgorICAgICAgICBpZiBzZWxmLl9leHBsaWNpdF90ZWFyRG93biBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYuX2V4cGxpY2l0X3RlYXJEb3duKCkKKyAgICAgICAgICAgIHNlbGYuX2V4
cGxpY2l0X3RlYXJEb3duID0gTm9uZQogICAgICAgICBzZWxmLl90ZXN0Y2FzZSA9IE5vbmUKICAg
ICAgICAgc2VsZi5fb2JqID0gTm9uZQogCi0gICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0Y2Fz
ZSk6CisgICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0Y2FzZTogInVuaXR0ZXN0LlRlc3RDYXNl
IikgLT4gTm9uZToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIF9hZGRleGNpbmZvKHNlbGYsIHJh
d2V4Y2luZm8pOgotICAgICAgICAjIHVud3JhcCBwb3RlbnRpYWwgZXhjZXB0aW9uIGluZm8gKHNl
ZSB0d2lzdGVkIHRyaWFsIHN1cHBvcnQgYmVsb3cpCisgICAgZGVmIF9hZGRleGNpbmZvKHNlbGYs
IHJhd2V4Y2luZm86ICJfU3lzRXhjSW5mb1R5cGUiKSAtPiBOb25lOgorICAgICAgICAjIFVud3Jh
cCBwb3RlbnRpYWwgZXhjZXB0aW9uIGluZm8gKHNlZSB0d2lzdGVkIHRyaWFsIHN1cHBvcnQgYmVs
b3cpLgogICAgICAgICByYXdleGNpbmZvID0gZ2V0YXR0cihyYXdleGNpbmZvLCAiX3Jhd2V4Y2lu
Zm8iLCByYXdleGNpbmZvKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGNpbmZvID0gX3B5
dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKHJhd2V4Y2luZm8pCisgICAgICAgICAgICBleGNpbmZv
ID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKHJhd2V4Y2luZm8pICAjIHR5cGU6IGlnbm9y
ZVthcmctdHlwZV0KKyAgICAgICAgICAgICMgSW52b2tlIHRoZSBhdHRyaWJ1dGVzIHRvIHRyaWdn
ZXIgc3RvcmluZyB0aGUgdHJhY2ViYWNrCisgICAgICAgICAgICAjIHRyaWFsIGNhdXNlcyBzb21l
IGlzc3VlIHRoZXJlLgorICAgICAgICAgICAgZXhjaW5mby52YWx1ZQorICAgICAgICAgICAgZXhj
aW5mby50cmFjZWJhY2sKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIHRy
eToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xMTksNyArMTg0LDcgQEAgY2xhc3MgVGVzdENh
c2VGdW5jdGlvbihGdW5jdGlvbik6CiAgICAgICAgICAgICAgICAgICAgIGZhaWwoIiIuam9pbih2
YWx1ZXMpLCBweXRyYWNlPUZhbHNlKQogICAgICAgICAgICAgICAgIGV4Y2VwdCAoZmFpbC5FeGNl
cHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAg
ICAgICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWEKKyAgICAgICAgICAgICAgICBleGNlcHQgQmFz
ZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgZmFpbCgKICAgICAgICAgICAgICAgICAg
ICAgICAgICJFUlJPUjogVW5rbm93biBJbmNvbXBhdGlibGUgRXhjZXB0aW9uICIKICAgICAgICAg
ICAgICAgICAgICAgICAgICJyZXByZXNlbnRhdGlvbjpcbiVyIiAlIChyYXdleGNpbmZvLCksCkBA
IC0xMjgsNjkgKzE5Myw5NSBAQCBjbGFzcyBUZXN0Q2FzZUZ1bmN0aW9uKEZ1bmN0aW9uKToKICAg
ICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICByYWlz
ZQogICAgICAgICAgICAgZXhjZXB0IGZhaWwuRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGV4
Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICAgICAgICAgIGV4
Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkKICAgICAg
ICAgc2VsZi5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfZXhjaW5mbyIsIFtdKS5hcHBlbmQoZXhjaW5m
bykKIAotICAgIGRlZiBhZGRFcnJvcihzZWxmLCB0ZXN0Y2FzZSwgcmF3ZXhjaW5mbyk6CisgICAg
ZGVmIGFkZEVycm9yKAorICAgICAgICBzZWxmLCB0ZXN0Y2FzZTogInVuaXR0ZXN0LlRlc3RDYXNl
IiwgcmF3ZXhjaW5mbzogIl9TeXNFeGNJbmZvVHlwZSIKKyAgICApIC0+IE5vbmU6CisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmF3ZXhjaW5mb1sxXSwgZXhpdC5FeGNl
cHRpb24pOgorICAgICAgICAgICAgICAgIGV4aXQocmF3ZXhjaW5mb1sxXS5tc2cpCisgICAgICAg
IGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX2FkZGV4
Y2luZm8ocmF3ZXhjaW5mbykKIAotICAgIGRlZiBhZGRGYWlsdXJlKHNlbGYsIHRlc3RjYXNlLCBy
YXdleGNpbmZvKToKKyAgICBkZWYgYWRkRmFpbHVyZSgKKyAgICAgICAgc2VsZiwgdGVzdGNhc2U6
ICJ1bml0dGVzdC5UZXN0Q2FzZSIsIHJhd2V4Y2luZm86ICJfU3lzRXhjSW5mb1R5cGUiCisgICAg
KSAtPiBOb25lOgogICAgICAgICBzZWxmLl9hZGRleGNpbmZvKHJhd2V4Y2luZm8pCiAKLSAgICBk
ZWYgYWRkU2tpcChzZWxmLCB0ZXN0Y2FzZSwgcmVhc29uKToKKyAgICBkZWYgYWRkU2tpcChzZWxm
LCB0ZXN0Y2FzZTogInVuaXR0ZXN0LlRlc3RDYXNlIiwgcmVhc29uOiBzdHIpIC0+IE5vbmU6CiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIHNraXAocmVhc29uKQogICAgICAgICBleGNlcHQgc2tp
cC5FeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLl9za2lwcGVkX2J5X21hcmsgPSBUcnVlCisg
ICAgICAgICAgICBzZWxmLl9zdG9yZVtza2lwcGVkX2J5X21hcmtfa2V5XSA9IFRydWUKICAgICAg
ICAgICAgIHNlbGYuX2FkZGV4Y2luZm8oc3lzLmV4Y19pbmZvKCkpCiAKLSAgICBkZWYgYWRkRXhw
ZWN0ZWRGYWlsdXJlKHNlbGYsIHRlc3RjYXNlLCByYXdleGNpbmZvLCByZWFzb249IiIpOgorICAg
IGRlZiBhZGRFeHBlY3RlZEZhaWx1cmUoCisgICAgICAgIHNlbGYsCisgICAgICAgIHRlc3RjYXNl
OiAidW5pdHRlc3QuVGVzdENhc2UiLAorICAgICAgICByYXdleGNpbmZvOiAiX1N5c0V4Y0luZm9U
eXBlIiwKKyAgICAgICAgcmVhc29uOiBzdHIgPSAiIiwKKyAgICApIC0+IE5vbmU6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHhmYWlsKHN0cihyZWFzb24pKQogICAgICAgICBleGNlcHQgeGZh
aWwuRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5fYWRkZXhjaW5mbyhzeXMuZXhjX2luZm8o
KSkKIAotICAgIGRlZiBhZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmLCB0ZXN0Y2FzZSwgcmVhc29u
PSIiKToKLSAgICAgICAgc2VsZi5fdW5leHBlY3RlZHN1Y2Nlc3MgPSByZWFzb24KKyAgICBkZWYg
YWRkVW5leHBlY3RlZFN1Y2Nlc3MoCisgICAgICAgIHNlbGYsIHRlc3RjYXNlOiAidW5pdHRlc3Qu
VGVzdENhc2UiLCByZWFzb246IHN0ciA9ICIiCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll9zdG9yZVt1bmV4cGVjdGVkc3VjY2Vzc19rZXldID0gcmVhc29uCiAKLSAgICBkZWYgYWRkU3Vj
Y2VzcyhzZWxmLCB0ZXN0Y2FzZSk6CisgICAgZGVmIGFkZFN1Y2Nlc3Moc2VsZiwgdGVzdGNhc2U6
ICJ1bml0dGVzdC5UZXN0Q2FzZSIpIC0+IE5vbmU6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBz
dG9wVGVzdChzZWxmLCB0ZXN0Y2FzZSk6CisgICAgZGVmIHN0b3BUZXN0KHNlbGYsIHRlc3RjYXNl
OiAidW5pdHRlc3QuVGVzdENhc2UiKSAtPiBOb25lOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYg
X2hhbmRsZV9za2lwKHNlbGYpOgotICAgICAgICAjIGltcGxlbWVudHMgdGhlIHNraXBwaW5nIG1h
Y2hpbmVyeSAoc2VlICMyMTM3KQotICAgICAgICAjIGFuYWxvZyB0byBweXRob25zIExpYi91bml0
dGVzdC9jYXNlLnB5OnJ1bgotICAgICAgICB0ZXN0TWV0aG9kID0gZ2V0YXR0cihzZWxmLl90ZXN0
Y2FzZSwgc2VsZi5fdGVzdGNhc2UuX3Rlc3RNZXRob2ROYW1lKQotICAgICAgICBpZiAoCi0gICAg
ICAgICAgICBnZXRhdHRyKHNlbGYuX3Rlc3RjYXNlLl9fY2xhc3NfXywgIl9fdW5pdHRlc3Rfc2tp
cF9fIiwgRmFsc2UpCi0gICAgICAgICAgICBvciBnZXRhdHRyKHRlc3RNZXRob2QsICJfX3VuaXR0
ZXN0X3NraXBfXyIsIEZhbHNlKQotICAgICAgICApOgotICAgICAgICAgICAgIyBJZiB0aGUgY2xh
c3Mgb3IgbWV0aG9kIHdhcyBza2lwcGVkLgotICAgICAgICAgICAgc2tpcF93aHkgPSAoCi0gICAg
ICAgICAgICAgICAgZ2V0YXR0cihzZWxmLl90ZXN0Y2FzZS5fX2NsYXNzX18sICJfX3VuaXR0ZXN0
X3NraXBfd2h5X18iLCAiIikKLSAgICAgICAgICAgICAgICBvciBnZXRhdHRyKHRlc3RNZXRob2Qs
ICJfX3VuaXR0ZXN0X3NraXBfd2h5X18iLCAiIikKLSAgICAgICAgICAgICkKLSAgICAgICAgICAg
IHRyeTogICMgUFkzLCB1bml0dGVzdDIgb24gUFkyCi0gICAgICAgICAgICAgICAgc2VsZi5fdGVz
dGNhc2UuX2FkZFNraXAoc2VsZiwgc2VsZi5fdGVzdGNhc2UsIHNraXBfd2h5KQotICAgICAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvcjogICMgUFkyCi0gICAgICAgICAgICAgICAgaWYgc3lzLnZlcnNp
b25faW5mb1swXSAhPSAyOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAg
ICAgIHNlbGYuX3Rlc3RjYXNlLl9hZGRTa2lwKHNlbGYsIHNraXBfd2h5KQotICAgICAgICAgICAg
cmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZGVmIF9leHBlY3RpbmdfZmFp
bHVyZShzZWxmLCB0ZXN0X21ldGhvZCkgLT4gYm9vbDoKKyAgICAgICAgIiIiUmV0dXJuIFRydWUg
aWYgdGhlIGdpdmVuIHVuaXR0ZXN0IG1ldGhvZCAob3IgdGhlIGVudGlyZSBjbGFzcykgaXMgbWFy
a2VkCisgICAgICAgIHdpdGggQGV4cGVjdGVkRmFpbHVyZS4iIiIKKyAgICAgICAgZXhwZWN0aW5n
X2ZhaWx1cmVfbWV0aG9kID0gZ2V0YXR0cigKKyAgICAgICAgICAgIHRlc3RfbWV0aG9kLCAiX191
bml0dGVzdF9leHBlY3RpbmdfZmFpbHVyZV9fIiwgRmFsc2UKKyAgICAgICAgKQorICAgICAgICBl
eHBlY3RpbmdfZmFpbHVyZV9jbGFzcyA9IGdldGF0dHIoc2VsZiwgIl9fdW5pdHRlc3RfZXhwZWN0
aW5nX2ZhaWx1cmVfXyIsIEZhbHNlKQorICAgICAgICByZXR1cm4gYm9vbChleHBlY3RpbmdfZmFp
bHVyZV9jbGFzcyBvciBleHBlY3RpbmdfZmFpbHVyZV9tZXRob2QpCiAKLSAgICBkZWYgcnVudGVz
dChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2lu
KCJwZGJpbnZva2UiKSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2UocmVzdWx0
PXNlbGYpCisgICAgZGVmIHJ1bnRlc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZnJvbSBfcHl0
ZXN0LmRlYnVnZ2luZyBpbXBvcnQgbWF5YmVfd3JhcF9weXRlc3RfZnVuY3Rpb25fZm9yX3RyYWNp
bmcKKworICAgICAgICBhc3NlcnQgc2VsZi5fdGVzdGNhc2UgaXMgbm90IE5vbmUKKworICAgICAg
ICBtYXliZV93cmFwX3B5dGVzdF9mdW5jdGlvbl9mb3JfdHJhY2luZyhzZWxmKQorCisgICAgICAg
ICMgTGV0IHRoZSB1bml0dGVzdCBmcmFtZXdvcmsgaGFuZGxlIGFzeW5jIGZ1bmN0aW9ucy4KKyAg
ICAgICAgaWYgaXNfYXN5bmNfZnVuY3Rpb24oc2VsZi5vYmopOgorICAgICAgICAgICAgIyBUeXBl
IGlnbm9yZWQgYmVjYXVzZSBzZWxmIGFjdHMgYXMgdGhlIFRlc3RSZXN1bHQsIGJ1dCBpcyBub3Qg
YWN0dWFsbHkgb25lLgorICAgICAgICAgICAgc2VsZi5fdGVzdGNhc2UocmVzdWx0PXNlbGYpICAj
IHR5cGU6IGlnbm9yZVthcmctdHlwZV0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZGlz
YWJsZXMgdGVhckRvd24gYW5kIGNsZWFudXBzIGZvciBwb3N0IG1vcnRlbSBkZWJ1Z2dpbmcgKHNl
ZSAjMTg5MCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRsZV9za2lwKCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS5kZWJ1ZygpCisgICAgICAg
ICAgICAjIFdoZW4gLS1wZGIgaXMgZ2l2ZW4sIHdlIHdhbnQgdG8gcG9zdHBvbmUgY2FsbGluZyB0
ZWFyRG93bigpIG90aGVyd2lzZQorICAgICAgICAgICAgIyB3aGVuIGVudGVyaW5nIHRoZSBwZGIg
cHJvbXB0LCB0ZWFyRG93bigpIHdvdWxkIGhhdmUgcHJvYmFibHkgY2xlYW5lZCB1cAorICAgICAg
ICAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZXMsIHdoaWNoIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBk
ZWJ1Zy4KKyAgICAgICAgICAgICMgQXJndWFibHkgd2UgY291bGQgYWx3YXlzIHBvc3Rwb25lIHRl
YXJEb3duKCksIGJ1dCB0aGlzIGNoYW5nZXMgdGhlIG1vbWVudCB3aGVyZSB0aGUKKyAgICAgICAg
ICAgICMgVGVzdENhc2UgaW5zdGFuY2UgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3VsdHMgb2JqZWN0
LCBzbyBiZXR0ZXIgdG8gb25seSBkbyBpdAorICAgICAgICAgICAgIyB3aGVuIGFic29sdXRlbHkg
bmVlZGVkLgorICAgICAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0b3B0aW9uKCJ1c2VwZGIiKSBh
bmQgbm90IF9pc19za2lwcGVkKHNlbGYub2JqKToKKyAgICAgICAgICAgICAgICBzZWxmLl9leHBs
aWNpdF90ZWFyRG93biA9IHNlbGYuX3Rlc3RjYXNlLnRlYXJEb3duCisgICAgICAgICAgICAgICAg
c2V0YXR0cihzZWxmLl90ZXN0Y2FzZSwgInRlYXJEb3duIiwgbGFtYmRhICphcmdzOiBOb25lKQor
CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBhY3R1YWwgYm91bmQgbWV0aG9k
IHdpdGggc2VsZi5vYmosIGJlY2F1c2UKKyAgICAgICAgICAgICMgd3JhcF9weXRlc3RfZnVuY3Rp
b25fZm9yX3RyYWNpbmcgcmVwbGFjZXMgc2VsZi5vYmogYnkgYSB3cmFwcGVyLgorICAgICAgICAg
ICAgc2V0YXR0cihzZWxmLl90ZXN0Y2FzZSwgc2VsZi5uYW1lLCBzZWxmLm9iaikKKyAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZShyZXN1bHQ9c2VsZikgICMg
dHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
ICAgICBkZWxhdHRyKHNlbGYuX3Rlc3RjYXNlLCBzZWxmLm5hbWUpCiAKLSAgICBkZWYgX3BydW5l
dHJhY2ViYWNrKHNlbGYsIGV4Y2luZm8pOgorICAgIGRlZiBfcHJ1bmV0cmFjZWJhY2soCisgICAg
ICAgIHNlbGYsIGV4Y2luZm86IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0
aW9uXQorICAgICkgLT4gTm9uZToKICAgICAgICAgRnVuY3Rpb24uX3BydW5ldHJhY2ViYWNrKHNl
bGYsIGV4Y2luZm8pCiAgICAgICAgIHRyYWNlYmFjayA9IGV4Y2luZm8udHJhY2ViYWNrLmZpbHRl
cigKICAgICAgICAgICAgIGxhbWJkYSB4OiBub3QgeC5mcmFtZS5mX2dsb2JhbHMuZ2V0KCJfX3Vu
aXR0ZXN0IikKQEAgLTIwMCw3ICsyOTEsNyBAQCBjbGFzcyBUZXN0Q2FzZUZ1bmN0aW9uKEZ1bmN0
aW9uKToKIAogCiBAaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9t
YWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgorZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRl
bTogSXRlbSwgY2FsbDogQ2FsbEluZm9bTm9uZV0pIC0+IE5vbmU6CiAgICAgaWYgaXNpbnN0YW5j
ZShpdGVtLCBUZXN0Q2FzZUZ1bmN0aW9uKToKICAgICAgICAgaWYgaXRlbS5fZXhjaW5mbzoKICAg
ICAgICAgICAgIGNhbGwuZXhjaW5mbyA9IGl0ZW0uX2V4Y2luZm8ucG9wKDApCkBAIC0yMDksMTQg
KzMwMCwyNyBAQCBkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxsKToKICAg
ICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAK
KyAgICB1bml0dGVzdCA9IHN5cy5tb2R1bGVzLmdldCgidW5pdHRlc3QiKQorICAgIGlmICgKKyAg
ICAgICAgdW5pdHRlc3QKKyAgICAgICAgYW5kIGNhbGwuZXhjaW5mbworICAgICAgICBhbmQgaXNp
bnN0YW5jZShjYWxsLmV4Y2luZm8udmFsdWUsIHVuaXR0ZXN0LlNraXBUZXN0KSAgIyB0eXBlOiBp
Z25vcmVbYXR0ci1kZWZpbmVkXQorICAgICk6CisgICAgICAgIGV4Y2luZm8gPSBjYWxsLmV4Y2lu
Zm8KKyAgICAgICAgIyBMZXQncyBzdWJzdGl0dXRlIHRoZSBleGNpbmZvIHdpdGggYSBweXRlc3Qu
c2tpcCBvbmUuCisgICAgICAgIGNhbGwyID0gQ2FsbEluZm9bTm9uZV0uZnJvbV9jYWxsKAorICAg
ICAgICAgICAgbGFtYmRhOiBweXRlc3Quc2tpcChzdHIoZXhjaW5mby52YWx1ZSkpLCBjYWxsLndo
ZW4KKyAgICAgICAgKQorICAgICAgICBjYWxsLmV4Y2luZm8gPSBjYWxsMi5leGNpbmZvCisKIAot
IyB0d2lzdGVkIHRyaWFsIHN1cHBvcnQKKyMgVHdpc3RlZCB0cmlhbCBzdXBwb3J0LgogCiAKIEBo
b29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0
ZW0pOgorZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW06IEl0ZW0pIC0+IEdlbmVyYXRv
cltOb25lLCBOb25lLCBOb25lXToKICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFRlc3RDYXNlRnVu
Y3Rpb24pIGFuZCAidHdpc3RlZC50cmlhbC51bml0dGVzdCIgaW4gc3lzLm1vZHVsZXM6Ci0gICAg
ICAgIHV0ID0gc3lzLm1vZHVsZXNbInR3aXN0ZWQucHl0aG9uLmZhaWx1cmUiXQorICAgICAgICB1
dCA9IHN5cy5tb2R1bGVzWyJ0d2lzdGVkLnB5dGhvbi5mYWlsdXJlIl0gICMgdHlwZTogQW55CiAg
ICAgICAgIEZhaWx1cmVfX2luaXRfXyA9IHV0LkZhaWx1cmUuX19pbml0X18KICAgICAgICAgY2hl
Y2tfdGVzdGNhc2VfaW1wbGVtZW50c190cmlhbF9yZXBvcnRlcigpCiAKQEAgLTI0Myw3ICszNDcs
NyBAQCBkZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSk6CiAgICAgICAgIHlpZWxkCiAK
IAotZGVmIGNoZWNrX3Rlc3RjYXNlX2ltcGxlbWVudHNfdHJpYWxfcmVwb3J0ZXIoZG9uZT1bXSk6
CitkZWYgY2hlY2tfdGVzdGNhc2VfaW1wbGVtZW50c190cmlhbF9yZXBvcnRlcihkb25lOiBMaXN0
W2ludF0gPSBbXSkgLT4gTm9uZToKICAgICBpZiBkb25lOgogICAgICAgICByZXR1cm4KICAgICBm
cm9tIHpvcGUuaW50ZXJmYWNlIGltcG9ydCBjbGFzc0ltcGxlbWVudHMKQEAgLTI1MSwzICszNTUs
OCBAQCBkZWYgY2hlY2tfdGVzdGNhc2VfaW1wbGVtZW50c190cmlhbF9yZXBvcnRlcihkb25lPVtd
KToKIAogICAgIGNsYXNzSW1wbGVtZW50cyhUZXN0Q2FzZUZ1bmN0aW9uLCBJUmVwb3J0ZXIpCiAg
ICAgZG9uZS5hcHBlbmQoMSkKKworCitkZWYgX2lzX3NraXBwZWQob2JqKSAtPiBib29sOgorICAg
ICIiIlJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGJlZW4gbWFya2VkIHdpdGgg
QHVuaXR0ZXN0LnNraXAuIiIiCisgICAgcmV0dXJuIGJvb2woZ2V0YXR0cihvYmosICJfX3VuaXR0
ZXN0X3NraXBfXyIsIEZhbHNlKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzJiOTUzYThjMy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsNDkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9jYWNoZXByb3ZpZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19w
eXRlc3QvY2FwdHVyZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbXBhdC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2RlYnVnZ2luZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L2RlcHJlY2F0ZWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kb2N0ZXN0LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZml4dHVyZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5
dGVzdC9mcmVlemVfc3VwcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2hlbHBjb25m
aWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ob29rc3BlYy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L2p1bml0eG1sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbG9nZ2lu
Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21haW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9tb25rZXlwYXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L25vZGVzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvbm9zZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L291dGNvbWVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcGFzdGViaW4ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRlc3Rlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3B5dGhvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3B5dGhvbl9hcGkucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9yZWN3YXJuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3QvcmVzdWx0bG9nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvcnVubmVyLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3Qvc2V0dXBvbmx5LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3Qvc2V0dXBwbGFuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qvc2tpcHBpbmcucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90ZXJtaW5hbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L3RtcGRpci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3VuaXR0ZXN0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3Qvd2FybmluZ3MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L3dhcm5pbmdfdHlwZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93
YXJuaW5nX3R5cGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NTJlNGQyYjE0Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
d2FybmluZ190eXBlcy5weQpAQCAtMCwwICsxLDExNiBAQAorZnJvbSB0eXBpbmcgaW1wb3J0IEFu
eQorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFy
CisKK2ltcG9ydCBhdHRyCisKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGZpbmFsCitmcm9t
IF9weXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCisKK2lmIFRZUEVfQ0hFQ0tJTkc6
CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUgICMgbm9xYTogRjQwMSAodXNlZCBpbiB0eXBl
IHN0cmluZykKKworCitjbGFzcyBQeXRlc3RXYXJuaW5nKFVzZXJXYXJuaW5nKToKKyAgICAiIiJC
YXNlIGNsYXNzIGZvciBhbGwgd2FybmluZ3MgZW1pdHRlZCBieSBweXRlc3QuIiIiCisKKyAgICBf
X21vZHVsZV9fID0gInB5dGVzdCIKKworCitAZmluYWwKK2NsYXNzIFB5dGVzdEFzc2VydFJld3Jp
dGVXYXJuaW5nKFB5dGVzdFdhcm5pbmcpOgorICAgICIiIldhcm5pbmcgZW1pdHRlZCBieSB0aGUg
cHl0ZXN0IGFzc2VydCByZXdyaXRlIG1vZHVsZS4iIiIKKworICAgIF9fbW9kdWxlX18gPSAicHl0
ZXN0IgorCisKK0BmaW5hbAorY2xhc3MgUHl0ZXN0Q2FjaGVXYXJuaW5nKFB5dGVzdFdhcm5pbmcp
OgorICAgICIiIldhcm5pbmcgZW1pdHRlZCBieSB0aGUgY2FjaGUgcGx1Z2luIGluIHZhcmlvdXMg
c2l0dWF0aW9ucy4iIiIKKworICAgIF9fbW9kdWxlX18gPSAicHl0ZXN0IgorCisKK0BmaW5hbAor
Y2xhc3MgUHl0ZXN0Q29uZmlnV2FybmluZyhQeXRlc3RXYXJuaW5nKToKKyAgICAiIiJXYXJuaW5n
IGVtaXR0ZWQgZm9yIGNvbmZpZ3VyYXRpb24gaXNzdWVzLiIiIgorCisgICAgX19tb2R1bGVfXyA9
ICJweXRlc3QiCisKKworQGZpbmFsCitjbGFzcyBQeXRlc3RDb2xsZWN0aW9uV2FybmluZyhQeXRl
c3RXYXJuaW5nKToKKyAgICAiIiJXYXJuaW5nIGVtaXR0ZWQgd2hlbiBweXRlc3QgaXMgbm90IGFi
bGUgdG8gY29sbGVjdCBhIGZpbGUgb3Igc3ltYm9sIGluIGEgbW9kdWxlLiIiIgorCisgICAgX19t
b2R1bGVfXyA9ICJweXRlc3QiCisKKworQGZpbmFsCitjbGFzcyBQeXRlc3REZXByZWNhdGlvbldh
cm5pbmcoUHl0ZXN0V2FybmluZywgRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAiIiJXYXJuaW5n
IGNsYXNzIGZvciBmZWF0dXJlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJz
aW9uLiIiIgorCisgICAgX19tb2R1bGVfXyA9ICJweXRlc3QiCisKKworQGZpbmFsCitjbGFzcyBQ
eXRlc3RFeHBlcmltZW50YWxBcGlXYXJuaW5nKFB5dGVzdFdhcm5pbmcsIEZ1dHVyZVdhcm5pbmcp
OgorICAgICIiIldhcm5pbmcgY2F0ZWdvcnkgdXNlZCB0byBkZW5vdGUgZXhwZXJpbWVudHMgaW4g
cHl0ZXN0LgorCisgICAgVXNlIHNwYXJpbmdseSBhcyB0aGUgQVBJIG1pZ2h0IGNoYW5nZSBvciBl
dmVuIGJlIHJlbW92ZWQgY29tcGxldGVseSBpbiBhCisgICAgZnV0dXJlIHZlcnNpb24uCisgICAg
IiIiCisKKyAgICBfX21vZHVsZV9fID0gInB5dGVzdCIKKworICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBzaW1wbGUoY2xzLCBhcGluYW1lOiBzdHIpIC0+ICJQeXRlc3RFeHBlcmltZW50YWxBcGlX
YXJuaW5nIjoKKyAgICAgICAgcmV0dXJuIGNscygKKyAgICAgICAgICAgICJ7YXBpbmFtZX0gaXMg
YW4gZXhwZXJpbWVudGFsIGFwaSB0aGF0IG1heSBjaGFuZ2Ugb3ZlciB0aW1lIi5mb3JtYXQoCisg
ICAgICAgICAgICAgICAgYXBpbmFtZT1hcGluYW1lCisgICAgICAgICAgICApCisgICAgICAgICkK
KworCitAZmluYWwKK2NsYXNzIFB5dGVzdFVuaGFuZGxlZENvcm91dGluZVdhcm5pbmcoUHl0ZXN0
V2FybmluZyk6CisgICAgIiIiV2FybmluZyBlbWl0dGVkIGZvciBhbiB1bmhhbmRsZWQgY29yb3V0
aW5lLgorCisgICAgQSBjb3JvdXRpbmUgd2FzIGVuY291bnRlcmVkIHdoZW4gY29sbGVjdGluZyB0
ZXN0IGZ1bmN0aW9ucywgYnV0IHdhcyBub3QKKyAgICBoYW5kbGVkIGJ5IGFueSBhc3luYy1hd2Fy
ZSBwbHVnaW4uCisgICAgQ29yb3V0aW5lIHRlc3QgZnVuY3Rpb25zIGFyZSBub3QgbmF0aXZlbHkg
c3VwcG9ydGVkLgorICAgICIiIgorCisgICAgX19tb2R1bGVfXyA9ICJweXRlc3QiCisKKworQGZp
bmFsCitjbGFzcyBQeXRlc3RVbmtub3duTWFya1dhcm5pbmcoUHl0ZXN0V2FybmluZyk6CisgICAg
IiIiV2FybmluZyBlbWl0dGVkIG9uIHVzZSBvZiB1bmtub3duIG1hcmtlcnMuCisKKyAgICBTZWUg
OnJlZjpgbWFya2AgZm9yIGRldGFpbHMuCisgICAgIiIiCisKKyAgICBfX21vZHVsZV9fID0gInB5
dGVzdCIKKworCitfVyA9IFR5cGVWYXIoIl9XIiwgYm91bmQ9UHl0ZXN0V2FybmluZykKKworCitA
ZmluYWwKK0BhdHRyLnMKK2NsYXNzIFVuZm9ybWF0dGVkV2FybmluZyhHZW5lcmljW19XXSk6Cisg
ICAgIiIiQSB3YXJuaW5nIG1lYW50IHRvIGJlIGZvcm1hdHRlZCBkdXJpbmcgcnVudGltZS4KKwor
ICAgIFRoaXMgaXMgdXNlZCB0byBob2xkIHdhcm5pbmdzIHRoYXQgbmVlZCB0byBmb3JtYXQgdGhl
aXIgbWVzc2FnZSBhdCBydW50aW1lLAorICAgIGFzIG9wcG9zZWQgdG8gYSBkaXJlY3QgbWVzc2Fn
ZS4KKyAgICAiIiIKKworICAgIGNhdGVnb3J5ID0gYXR0ci5pYih0eXBlPSJUeXBlW19XXSIpCisg
ICAgdGVtcGxhdGUgPSBhdHRyLmliKHR5cGU9c3RyKQorCisgICAgZGVmIGZvcm1hdChzZWxmLCAq
Kmt3YXJnczogQW55KSAtPiBfVzoKKyAgICAgICAgIiIiUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRo
ZSB3YXJuaW5nIGNhdGVnb3J5LCBmb3JtYXR0ZWQgd2l0aCBnaXZlbiBrd2FyZ3MuIiIiCisgICAg
ICAgIHJldHVybiBzZWxmLmNhdGVnb3J5KHNlbGYudGVtcGxhdGUuZm9ybWF0KCoqa3dhcmdzKSkK
KworCitQWVRFU1RFUl9DT1BZX0VYQU1QTEUgPSBQeXRlc3RFeHBlcmltZW50YWxBcGlXYXJuaW5n
LnNpbXBsZSgidGVzdGRpci5jb3B5X2V4YW1wbGUiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3Qvd2FybmluZ3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93YXJuaW5n
cy5weQppbmRleCBlMDIzZDBhYjQ5MWIuLjk1MGQwYmIzODU5MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL19weXRlc3Qvd2FybmluZ3MucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRl
c3Qvd2FybmluZ3MucHkKQEAgLTEsMTEyICsxLDEzOSBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCitpbXBvcnQgc3lz
CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIK
K2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bAogCiBpbXBvcnQgcHl0ZXN0Ci0KLWZyb20gX3B5dGVzdCBpbXBvcnQgY29tcGF0Ci0KLQotZGVm
IF9zZXRvcHRpb24od21vZCwgYXJnKToKLSAgICAiIiIKLSAgICBDb3B5IG9mIHRoZSB3YXJuaW5n
Ll9zZXRvcHRpb24gZnVuY3Rpb24gYnV0IGRvZXMgbm90IGVzY2FwZSBhcmd1bWVudHMuCi0gICAg
IiIiCi0gICAgcGFydHMgPSBhcmcuc3BsaXQoIjoiKQotICAgIGlmIGxlbihwYXJ0cykgPiA1Ogot
ICAgICAgICByYWlzZSB3bW9kLl9PcHRpb25FcnJvcigidG9vIG1hbnkgZmllbGRzIChtYXggNSk6
ICVyIiAlIChhcmcsKSkKLSAgICB3aGlsZSBsZW4ocGFydHMpIDwgNToKLSAgICAgICAgcGFydHMu
YXBwZW5kKCIiKQotICAgIGFjdGlvbiwgbWVzc2FnZSwgY2F0ZWdvcnksIG1vZHVsZSwgbGluZW5v
ID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBwYXJ0c10KLSAgICBhY3Rpb24gPSB3bW9kLl9nZXRhY3Rp
b24oYWN0aW9uKQotICAgIGNhdGVnb3J5ID0gd21vZC5fZ2V0Y2F0ZWdvcnkoY2F0ZWdvcnkpCi0g
ICAgaWYgbGluZW5vOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsaW5lbm8gPSBpbnQobGlu
ZW5vKQotICAgICAgICAgICAgaWYgbGluZW5vIDwgMDoKLSAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcik6Ci0g
ICAgICAgICAgICByYWlzZSB3bW9kLl9PcHRpb25FcnJvcigiaW52YWxpZCBsaW5lbm8gJXIiICUg
KGxpbmVubywpKQotICAgIGVsc2U6Ci0gICAgICAgIGxpbmVubyA9IDAKLSAgICB3bW9kLmZpbHRl
cndhcm5pbmdzKGFjdGlvbiwgbWVzc2FnZSwgY2F0ZWdvcnksIG1vZHVsZSwgbGluZW5vKQotCi0K
LWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3Jv
dXAoInB5dGVzdC13YXJuaW5ncyIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAiLVci
LAotICAgICAgICAiLS1weXRob253YXJuaW5ncyIsCi0gICAgICAgIGFjdGlvbj0iYXBwZW5kIiwK
LSAgICAgICAgaGVscD0ic2V0IHdoaWNoIHdhcm5pbmdzIHRvIHJlcG9ydCwgc2VlIC1XIG9wdGlv
biBvZiBweXRob24gaXRzZWxmLiIsCi0gICAgKQotICAgIHBhcnNlci5hZGRpbmkoCi0gICAgICAg
ICJmaWx0ZXJ3YXJuaW5ncyIsCi0gICAgICAgIHR5cGU9ImxpbmVsaXN0IiwKLSAgICAgICAgaGVs
cD0iRWFjaCBsaW5lIHNwZWNpZmllcyBhIHBhdHRlcm4gZm9yICIKLSAgICAgICAgIndhcm5pbmdz
LmZpbHRlcndhcm5pbmdzLiAiCi0gICAgICAgICJQcm9jZXNzZWQgYWZ0ZXIgLVcgYW5kIC0tcHl0
aG9ud2FybmluZ3MuIiwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcK
K2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGFwcGx5X3dhcm5pbmdfZmlsdGVycworZnJvbSBf
cHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBw
YXJzZV93YXJuaW5nX2ZpbHRlcgorZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zy
b20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRlbQorZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGltcG9y
dCBUZXJtaW5hbFJlcG9ydGVyCisKK2lmIFRZUEVfQ0hFQ0tJTkc6CisgICAgZnJvbSB0eXBpbmdf
ZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbAorCisKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZp
ZzogQ29uZmlnKSAtPiBOb25lOgorICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKAorICAgICAg
ICAibWFya2VycyIsCisgICAgICAgICJmaWx0ZXJ3YXJuaW5ncyh3YXJuaW5nKTogYWRkIGEgd2Fy
bmluZyBmaWx0ZXIgdG8gdGhlIGdpdmVuIHRlc3QuICIKKyAgICAgICAgInNlZSBodHRwczovL2Rv
Y3MucHl0ZXN0Lm9yZy9lbi9zdGFibGUvd2FybmluZ3MuaHRtbCNweXRlc3QtbWFyay1maWx0ZXJ3
YXJuaW5ncyAiLAogICAgICkKIAogCiBAY29udGV4dG1hbmFnZXIKLWRlZiBjYXRjaF93YXJuaW5n
c19mb3JfaXRlbShpdGVtKToKLSAgICAiIiIKLSAgICBjYXRjaGVzIHRoZSB3YXJuaW5ncyBnZW5l
cmF0ZWQgZHVyaW5nIHNldHVwL2NhbGwvdGVhcmRvd24gZXhlY3V0aW9uCi0gICAgb2YgdGhlIGdp
dmVuIGl0ZW0gYW5kIGFmdGVyIGl0IGlzIGRvbmUgcG9zdHMgdGhlbSBhcyB3YXJuaW5ncyB0byB0
aGlzCi0gICAgaXRlbS4KK2RlZiBjYXRjaF93YXJuaW5nc19mb3JfaXRlbSgKKyAgICBjb25maWc6
IENvbmZpZywKKyAgICBpaG9vaywKKyAgICB3aGVuOiAiTGl0ZXJhbFsnY29uZmlnJywgJ2NvbGxl
Y3QnLCAncnVudGVzdCddIiwKKyAgICBpdGVtOiBPcHRpb25hbFtJdGVtXSwKKykgLT4gR2VuZXJh
dG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IGNhdGNo
ZXMgd2FybmluZ3MgZ2VuZXJhdGVkIGluIHRoZSBjb250YWluZWQgZXhlY3V0aW9uIGJsb2NrLgor
CisgICAgYGBpdGVtYGAgY2FuIGJlIE5vbmUgaWYgd2UgYXJlIG5vdCBpbiB0aGUgY29udGV4dCBv
ZiBhbiBpdGVtIGV4ZWN1dGlvbi4KKworICAgIEVhY2ggd2FybmluZyBjYXB0dXJlZCB0cmlnZ2Vy
cyB0aGUgYGBweXRlc3Rfd2FybmluZ19yZWNvcmRlZGBgIGhvb2suCiAgICAgIiIiCi0gICAgYXJn
cyA9IGl0ZW0uY29uZmlnLmdldG9wdGlvbigicHl0aG9ud2FybmluZ3MiKSBvciBbXQotICAgIGlu
aWZpbHRlcnMgPSBpdGVtLmNvbmZpZy5nZXRpbmkoImZpbHRlcndhcm5pbmdzIikKKyAgICBjb25m
aWdfZmlsdGVycyA9IGNvbmZpZy5nZXRpbmkoImZpbHRlcndhcm5pbmdzIikKKyAgICBjbWRsaW5l
X2ZpbHRlcnMgPSBjb25maWcua25vd25fYXJnc19uYW1lc3BhY2UucHl0aG9ud2FybmluZ3Mgb3Ig
W10KICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyBsb2c6
Ci0gICAgICAgIGZvciBhcmcgaW4gYXJnczoKLSAgICAgICAgICAgIHdhcm5pbmdzLl9zZXRvcHRp
b24oYXJnKQorICAgICAgICAjIG15cHkgY2FuJ3QgaW5mZXIgdGhhdCByZWNvcmQ9VHJ1ZSBtZWFu
cyBsb2cgaXMgbm90IE5vbmU7IGhlbHAgaXQuCisgICAgICAgIGFzc2VydCBsb2cgaXMgbm90IE5v
bmUKIAotICAgICAgICBmb3IgYXJnIGluIGluaWZpbHRlcnM6Ci0gICAgICAgICAgICBfc2V0b3B0
aW9uKHdhcm5pbmdzLCBhcmcpCisgICAgICAgIGlmIG5vdCBzeXMud2Fybm9wdGlvbnM6CisgICAg
ICAgICAgICAjIElmIHVzZXIgaXMgbm90IGV4cGxpY2l0bHkgY29uZmlndXJpbmcgd2FybmluZyBm
aWx0ZXJzLCBzaG93IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGJ5IGRlZmF1bHQgKCMyOTA4KS4KKyAg
ICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1EZXBy
ZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiYWx3
YXlzIiwgY2F0ZWdvcnk9UGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKIAotICAgICAgICBmb3Ig
bWFyayBpbiBpdGVtLml0ZXJfbWFya2VycyhuYW1lPSJmaWx0ZXJ3YXJuaW5ncyIpOgotICAgICAg
ICAgICAgZm9yIGFyZyBpbiBtYXJrLmFyZ3M6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuX3Nl
dG9wdGlvbihhcmcpCisgICAgICAgIGFwcGx5X3dhcm5pbmdfZmlsdGVycyhjb25maWdfZmlsdGVy
cywgY21kbGluZV9maWx0ZXJzKQorCisgICAgICAgICMgYXBwbHkgZmlsdGVycyBmcm9tICJmaWx0
ZXJ3YXJuaW5ncyIgbWFya3MKKyAgICAgICAgbm9kZWlkID0gIiIgaWYgaXRlbSBpcyBOb25lIGVs
c2UgaXRlbS5ub2RlaWQKKyAgICAgICAgaWYgaXRlbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGZvciBtYXJrIGluIGl0ZW0uaXRlcl9tYXJrZXJzKG5hbWU9ImZpbHRlcndhcm5pbmdzIik6Cisg
ICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBtYXJrLmFyZ3M6CisgICAgICAgICAgICAgICAgICAg
IHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCpwYXJzZV93YXJuaW5nX2ZpbHRlcihhcmcsIGVzY2Fw
ZT1GYWxzZSkpCiAKICAgICAgICAgeWllbGQKIAotICAgICAgICBmb3Igd2FybmluZyBpbiBsb2c6
Ci0gICAgICAgICAgICB3YXJuX21zZyA9IHdhcm5pbmcubWVzc2FnZQotICAgICAgICAgICAgdW5p
Y29kZV93YXJuaW5nID0gRmFsc2UKLQotICAgICAgICAgICAgaWYgKAotICAgICAgICAgICAgICAg
IGNvbXBhdC5fUFkyCi0gICAgICAgICAgICAgICAgYW5kIGFueShpc2luc3RhbmNlKG0sIGNvbXBh
dC5VTklDT0RFX1RZUEVTKSBmb3IgbSBpbiB3YXJuX21zZy5hcmdzKQotICAgICAgICAgICAgKToK
LSAgICAgICAgICAgICAgICBuZXdfYXJncyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIG0gaW4g
d2Fybl9tc2cuYXJnczoKLSAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ3MuYXBwZW5kKAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcGF0LmFzY2lpX2VzY2FwZWQobSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobSwgY29tcGF0LlVOSUNPREVfVFlQRVMpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIG0KLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgICAgIHVuaWNvZGVfd2FybmluZyA9IGxpc3Qod2Fybl9tc2cuYXJncykgIT0gbmV3X2Fy
Z3MKLSAgICAgICAgICAgICAgICB3YXJuX21zZy5hcmdzID0gbmV3X2FyZ3MKLQotICAgICAgICAg
ICAgbXNnID0gd2FybmluZ3MuZm9ybWF0d2FybmluZygKLSAgICAgICAgICAgICAgICB3YXJuX21z
ZywKLSAgICAgICAgICAgICAgICB3YXJuaW5nLmNhdGVnb3J5LAotICAgICAgICAgICAgICAgIHdh
cm5pbmcuZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgd2FybmluZy5saW5lbm8sCi0gICAgICAg
ICAgICAgICAgd2FybmluZy5saW5lLAorICAgICAgICBmb3Igd2FybmluZ19tZXNzYWdlIGluIGxv
ZzoKKyAgICAgICAgICAgIGlob29rLnB5dGVzdF93YXJuaW5nX2NhcHR1cmVkLmNhbGxfaGlzdG9y
aWMoCisgICAgICAgICAgICAgICAga3dhcmdzPWRpY3QoCisgICAgICAgICAgICAgICAgICAgIHdh
cm5pbmdfbWVzc2FnZT13YXJuaW5nX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIHdoZW49
d2hlbiwKKyAgICAgICAgICAgICAgICAgICAgaXRlbT1pdGVtLAorICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgIGl0ZW0ud2FybigidW51c2VkIiwgbXNnKQotCi0gICAgICAgICAgICBpZiB1bmljb2Rl
X3dhcm5pbmc6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAg
ICAgICAgIldhcm5pbmcgaXMgdXNpbmcgdW5pY29kZSBub24gY29udmVydGlibGUgdG8gYXNjaWks
ICIKLSAgICAgICAgICAgICAgICAgICAgImNvbnZlcnRpbmcgdG8gYSBzYWZlIHJlcHJlc2VudGF0
aW9uOlxuICAlcyIgJSBtc2csCi0gICAgICAgICAgICAgICAgICAgIFVuaWNvZGVXYXJuaW5nLAor
ICAgICAgICAgICAgaWhvb2sucHl0ZXN0X3dhcm5pbmdfcmVjb3JkZWQuY2FsbF9oaXN0b3JpYygK
KyAgICAgICAgICAgICAgICBrd2FyZ3M9ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgd2Fybmlu
Z19tZXNzYWdlPXdhcm5pbmdfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZWlkPW5v
ZGVpZCwKKyAgICAgICAgICAgICAgICAgICAgd2hlbj13aGVuLAorICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworCitk
ZWYgd2FybmluZ19yZWNvcmRfdG9fc3RyKHdhcm5pbmdfbWVzc2FnZTogd2FybmluZ3MuV2Fybmlu
Z01lc3NhZ2UpIC0+IHN0cjoKKyAgICAiIiJDb252ZXJ0IGEgd2FybmluZ3MuV2FybmluZ01lc3Nh
Z2UgdG8gYSBzdHJpbmcuIiIiCisgICAgd2Fybl9tc2cgPSB3YXJuaW5nX21lc3NhZ2UubWVzc2Fn
ZQorICAgIG1zZyA9IHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcoCisgICAgICAgIHN0cih3YXJuX21z
ZyksCisgICAgICAgIHdhcm5pbmdfbWVzc2FnZS5jYXRlZ29yeSwKKyAgICAgICAgd2FybmluZ19t
ZXNzYWdlLmZpbGVuYW1lLAorICAgICAgICB3YXJuaW5nX21lc3NhZ2UubGluZW5vLAorICAgICAg
ICB3YXJuaW5nX21lc3NhZ2UubGluZSwKKyAgICApCisgICAgcmV0dXJuIG1zZworCisKK0BweXRl
c3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5Zmlyc3Q9VHJ1ZSkKK2RlZiBweXRlc3Rf
cnVudGVzdF9wcm90b2NvbChpdGVtOiBJdGVtKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9u
ZV06CisgICAgd2l0aCBjYXRjaF93YXJuaW5nc19mb3JfaXRlbSgKKyAgICAgICAgY29uZmlnPWl0
ZW0uY29uZmlnLCBpaG9vaz1pdGVtLmlob29rLCB3aGVuPSJydW50ZXN0IiwgaXRlbT1pdGVtCisg
ICAgKToKKyAgICAgICAgeWllbGQKKworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRy
dWUsIHRyeWZpcnN0PVRydWUpCitkZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbjogU2Vzc2lv
bikgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgIGNvbmZpZyA9IHNlc3Npb24u
Y29uZmlnCisgICAgd2l0aCBjYXRjaF93YXJuaW5nc19mb3JfaXRlbSgKKyAgICAgICAgY29uZmln
PWNvbmZpZywgaWhvb2s9Y29uZmlnLmhvb2ssIHdoZW49ImNvbGxlY3QiLCBpdGVtPU5vbmUKKyAg
ICApOgorICAgICAgICB5aWVsZAorCisKK0BweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1
ZSkKK2RlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSgKKyAgICB0ZXJtaW5hbHJlcG9ydGVyOiBU
ZXJtaW5hbFJlcG9ydGVyLAorKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CisgICAg
Y29uZmlnID0gdGVybWluYWxyZXBvcnRlci5jb25maWcKKyAgICB3aXRoIGNhdGNoX3dhcm5pbmdz
X2Zvcl9pdGVtKAorICAgICAgICBjb25maWc9Y29uZmlnLCBpaG9vaz1jb25maWcuaG9vaywgd2hl
bj0iY29uZmlnIiwgaXRlbT1Ob25lCisgICAgKToKKyAgICAgICAgeWllbGQKKworCitAcHl0ZXN0
Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vz
c2lvbjogU2Vzc2lvbikgLT4gR2VuZXJhdG9yW05vbmUsIE5vbmUsIE5vbmVdOgorICAgIGNvbmZp
ZyA9IHNlc3Npb24uY29uZmlnCisgICAgd2l0aCBjYXRjaF93YXJuaW5nc19mb3JfaXRlbSgKKyAg
ICAgICAgY29uZmlnPWNvbmZpZywgaWhvb2s9Y29uZmlnLmhvb2ssIHdoZW49ImNvbmZpZyIsIGl0
ZW09Tm9uZQorICAgICk6CisgICAgICAgIHlpZWxkCiAKIAogQHB5dGVzdC5ob29raW1wbChob29r
d3JhcHBlcj1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0pOgotICAgIHdp
dGggY2F0Y2hfd2FybmluZ3NfZm9yX2l0ZW0oaXRlbSk6CitkZWYgcHl0ZXN0X2xvYWRfaW5pdGlh
bF9jb25mdGVzdHMoCisgICAgZWFybHlfY29uZmlnOiAiQ29uZmlnIiwKKykgLT4gR2VuZXJhdG9y
W05vbmUsIE5vbmUsIE5vbmVdOgorICAgIHdpdGggY2F0Y2hfd2FybmluZ3NfZm9yX2l0ZW0oCisg
ICAgICAgIGNvbmZpZz1lYXJseV9jb25maWcsIGlob29rPWVhcmx5X2NvbmZpZy5ob29rLCB3aGVu
PSJjb25maWciLCBpdGVtPU5vbmUKKyAgICApOgogICAgICAgICB5aWVsZApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9weXRlc3QucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyN2Y1YTE5NTViMi4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9weXRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCww
IEBACi0jIFBZVEhPTl9BUkdDT01QTEVURV9PSwotIiIiCi1weXRlc3Q6IHVuaXQgYW5kIGZ1bmN0
aW9uYWwgdGVzdGluZyB3aXRoIFB5dGhvbi4KLSIiIgotCi0KLSMgZWxzZSB3ZSBhcmUgaW1wb3J0
ZWQKLQotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgbWFpbiwgVXNhZ2VFcnJvciwgY21kbGlu
ZSwgaG9va3NwZWMsIGhvb2tpbXBsCi1mcm9tIF9weXRlc3QuZml4dHVyZXMgaW1wb3J0IGZpeHR1
cmUsIHlpZWxkX2ZpeHR1cmUKLWZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHJlZ2lzdGVy
X2Fzc2VydF9yZXdyaXRlCi1mcm9tIF9weXRlc3QuZnJlZXplX3N1cHBvcnQgaW1wb3J0IGZyZWV6
ZV9pbmNsdWRlcwotZnJvbSBfcHl0ZXN0IGltcG9ydCBfX3ZlcnNpb25fXwotZnJvbSBfcHl0ZXN0
LmRlYnVnZ2luZyBpbXBvcnQgcHl0ZXN0UERCIGFzIF9fcHl0ZXN0UERCCi1mcm9tIF9weXRlc3Qu
cmVjd2FybiBpbXBvcnQgd2FybnMsIGRlcHJlY2F0ZWRfY2FsbAotZnJvbSBfcHl0ZXN0Lm91dGNv
bWVzIGltcG9ydCBmYWlsLCBza2lwLCBpbXBvcnRvcnNraXAsIGV4aXQsIHhmYWlsCi1mcm9tIF9w
eXRlc3QubWFyayBpbXBvcnQgTUFSS19HRU4gYXMgbWFyaywgcGFyYW0KLWZyb20gX3B5dGVzdC5t
YWluIGltcG9ydCBTZXNzaW9uCi1mcm9tIF9weXRlc3Qubm9kZXMgaW1wb3J0IEl0ZW0sIENvbGxl
Y3RvciwgRmlsZQotZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBmaWxsZml4dHVyZXMgYXMg
X2ZpbGxmdW5jYXJncwotZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgTW9kdWxlLCBDbGFzcywg
SW5zdGFuY2UsIEZ1bmN0aW9uLCBHZW5lcmF0b3IKLQotZnJvbSBfcHl0ZXN0LnB5dGhvbl9hcGkg
aW1wb3J0IGFwcHJveCwgcmFpc2VzCi0KLXNldF90cmFjZSA9IF9fcHl0ZXN0UERCLnNldF90cmFj
ZQotCi1fX2FsbF9fID0gWwotICAgICJtYWluIiwKLSAgICAiVXNhZ2VFcnJvciIsCi0gICAgImNt
ZGxpbmUiLAotICAgICJob29rc3BlYyIsCi0gICAgImhvb2tpbXBsIiwKLSAgICAiX192ZXJzaW9u
X18iLAotICAgICJyZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSIsCi0gICAgImZyZWV6ZV9pbmNsdWRl
cyIsCi0gICAgInNldF90cmFjZSIsCi0gICAgIndhcm5zIiwKLSAgICAiZGVwcmVjYXRlZF9jYWxs
IiwKLSAgICAiZml4dHVyZSIsCi0gICAgInlpZWxkX2ZpeHR1cmUiLAotICAgICJmYWlsIiwKLSAg
ICAic2tpcCIsCi0gICAgInhmYWlsIiwKLSAgICAiaW1wb3J0b3Jza2lwIiwKLSAgICAiZXhpdCIs
Ci0gICAgIm1hcmsiLAotICAgICJwYXJhbSIsCi0gICAgImFwcHJveCIsCi0gICAgIl9maWxsZnVu
Y2FyZ3MiLAotICAgICJJdGVtIiwKLSAgICAiRmlsZSIsCi0gICAgIkNvbGxlY3RvciIsCi0gICAg
IlNlc3Npb24iLAotICAgICJNb2R1bGUiLAotICAgICJDbGFzcyIsCi0gICAgIkluc3RhbmNlIiwK
LSAgICAiRnVuY3Rpb24iLAotICAgICJHZW5lcmF0b3IiLAotICAgICJyYWlzZXMiLAotXQotCi1p
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICMgaWYgcnVuIGFzIGEgc2NyaXB0IG9yIGJ5
ICdweXRob24gLW0gcHl0ZXN0JwotICAgICMgd2UgdHJpZ2dlciB0aGUgYmVsb3cgImVsc2UiIGNv
bmRpdGlvbiBieSB0aGUgZm9sbG93aW5nIGltcG9ydAotICAgIGltcG9ydCBweXRlc3QKLQotICAg
IHJhaXNlIFN5c3RlbUV4aXQocHl0ZXN0Lm1haW4oKSkKLWVsc2U6Ci0KLSAgICBmcm9tIF9weXRl
c3QuY29tcGF0IGltcG9ydCBfc2V0dXBfY29sbGVjdF9mYWtlbW9kdWxlCi0KLSAgICBfc2V0dXBf
Y29sbGVjdF9mYWtlbW9kdWxlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9weXRlc3Qv
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvcHl0ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzRjMjgxOTE4NzcyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDk3
IEBACisjIFBZVEhPTl9BUkdDT01QTEVURV9PSworIiIicHl0ZXN0OiB1bml0IGFuZCBmdW5jdGlv
bmFsIHRlc3Rpbmcgd2l0aCBQeXRob24uIiIiCitmcm9tIC4gaW1wb3J0IGNvbGxlY3QKK2Zyb20g
X3B5dGVzdCBpbXBvcnQgX192ZXJzaW9uX18KK2Zyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0
IHJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBjbWRs
aW5lCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBjb25zb2xlX21haW4KK2Zyb20gX3B5dGVz
dC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBob29r
aW1wbAorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va3NwZWMKK2Zyb20gX3B5dGVzdC5j
b25maWcgaW1wb3J0IG1haW4KK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IFVzYWdlRXJyb3IK
K2Zyb20gX3B5dGVzdC5kZWJ1Z2dpbmcgaW1wb3J0IHB5dGVzdFBEQiBhcyBfX3B5dGVzdFBEQgor
ZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBmaWxsZml4dHVyZXMgYXMgX2ZpbGxmdW5jYXJn
cworZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBmaXh0dXJlCitmcm9tIF9weXRlc3QuZml4
dHVyZXMgaW1wb3J0IEZpeHR1cmVMb29rdXBFcnJvcgorZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGlt
cG9ydCB5aWVsZF9maXh0dXJlCitmcm9tIF9weXRlc3QuZnJlZXplX3N1cHBvcnQgaW1wb3J0IGZy
ZWV6ZV9pbmNsdWRlcworZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IFNlc3Npb24KK2Zyb20gX3B5
dGVzdC5tYXJrIGltcG9ydCBNQVJLX0dFTiBhcyBtYXJrCitmcm9tIF9weXRlc3QubWFyayBpbXBv
cnQgcGFyYW0KK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9yCitmcm9tIF9weXRl
c3Qubm9kZXMgaW1wb3J0IEZpbGUKK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgSXRlbQorZnJv
bSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBleGl0Citmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1w
b3J0IGZhaWwKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgaW1wb3J0b3Jza2lwCitmcm9t
IF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IHNraXAKK2Zyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBv
cnQgeGZhaWwKK2Zyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IENsYXNzCitmcm9tIF9weXRlc3Qu
cHl0aG9uIGltcG9ydCBGdW5jdGlvbgorZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgSW5zdGFu
Y2UKK2Zyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IE1vZHVsZQorZnJvbSBfcHl0ZXN0LnB5dGhv
biBpbXBvcnQgUGFja2FnZQorZnJvbSBfcHl0ZXN0LnB5dGhvbl9hcGkgaW1wb3J0IGFwcHJveAor
ZnJvbSBfcHl0ZXN0LnB5dGhvbl9hcGkgaW1wb3J0IHJhaXNlcworZnJvbSBfcHl0ZXN0LnJlY3dh
cm4gaW1wb3J0IGRlcHJlY2F0ZWRfY2FsbAorZnJvbSBfcHl0ZXN0LnJlY3dhcm4gaW1wb3J0IHdh
cm5zCitmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0QXNzZXJ0UmV3cml0
ZVdhcm5pbmcKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RDYWNoZVdh
cm5pbmcKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RDb2xsZWN0aW9u
V2FybmluZworZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1wb3J0IFB5dGVzdENvbmZpZ1dh
cm5pbmcKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3REZXByZWNhdGlv
bldhcm5pbmcKK2Zyb20gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGltcG9ydCBQeXRlc3RFeHBlcmlt
ZW50YWxBcGlXYXJuaW5nCitmcm9tIF9weXRlc3Qud2FybmluZ190eXBlcyBpbXBvcnQgUHl0ZXN0
VW5oYW5kbGVkQ29yb3V0aW5lV2FybmluZworZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMgaW1w
b3J0IFB5dGVzdFVua25vd25NYXJrV2FybmluZworZnJvbSBfcHl0ZXN0Lndhcm5pbmdfdHlwZXMg
aW1wb3J0IFB5dGVzdFdhcm5pbmcKKworc2V0X3RyYWNlID0gX19weXRlc3RQREIuc2V0X3RyYWNl
CisKK19fYWxsX18gPSBbCisgICAgIl9fdmVyc2lvbl9fIiwKKyAgICAiX2ZpbGxmdW5jYXJncyIs
CisgICAgImFwcHJveCIsCisgICAgIkNsYXNzIiwKKyAgICAiY21kbGluZSIsCisgICAgImNvbGxl
Y3QiLAorICAgICJDb2xsZWN0b3IiLAorICAgICJjb25zb2xlX21haW4iLAorICAgICJkZXByZWNh
dGVkX2NhbGwiLAorICAgICJleGl0IiwKKyAgICAiRXhpdENvZGUiLAorICAgICJmYWlsIiwKKyAg
ICAiRmlsZSIsCisgICAgImZpeHR1cmUiLAorICAgICJGaXh0dXJlTG9va3VwRXJyb3IiLAorICAg
ICJmcmVlemVfaW5jbHVkZXMiLAorICAgICJGdW5jdGlvbiIsCisgICAgImhvb2tpbXBsIiwKKyAg
ICAiaG9va3NwZWMiLAorICAgICJpbXBvcnRvcnNraXAiLAorICAgICJJbnN0YW5jZSIsCisgICAg
Ikl0ZW0iLAorICAgICJtYWluIiwKKyAgICAibWFyayIsCisgICAgIk1vZHVsZSIsCisgICAgIlBh
Y2thZ2UiLAorICAgICJwYXJhbSIsCisgICAgIlB5dGVzdEFzc2VydFJld3JpdGVXYXJuaW5nIiwK
KyAgICAiUHl0ZXN0Q2FjaGVXYXJuaW5nIiwKKyAgICAiUHl0ZXN0Q29sbGVjdGlvbldhcm5pbmci
LAorICAgICJQeXRlc3RDb25maWdXYXJuaW5nIiwKKyAgICAiUHl0ZXN0RGVwcmVjYXRpb25XYXJu
aW5nIiwKKyAgICAiUHl0ZXN0RXhwZXJpbWVudGFsQXBpV2FybmluZyIsCisgICAgIlB5dGVzdFVu
aGFuZGxlZENvcm91dGluZVdhcm5pbmciLAorICAgICJQeXRlc3RVbmtub3duTWFya1dhcm5pbmci
LAorICAgICJQeXRlc3RXYXJuaW5nIiwKKyAgICAicmFpc2VzIiwKKyAgICAicmVnaXN0ZXJfYXNz
ZXJ0X3Jld3JpdGUiLAorICAgICJTZXNzaW9uIiwKKyAgICAic2V0X3RyYWNlIiwKKyAgICAic2tp
cCIsCisgICAgIlVzYWdlRXJyb3IiLAorICAgICJ3YXJucyIsCisgICAgInhmYWlsIiwKKyAgICAi
eWllbGRfZml4dHVyZSIsCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvcHl0ZXN0L19f
bWFpbl9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC9fX21haW5fXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIxNzAxNTI5MzdiMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9weXRlc3QvX19tYWluX18ucHkKQEAgLTAsMCArMSw1IEBA
CisiIiJUaGUgcHl0ZXN0IGVudHJ5IHBvaW50LiIiIgoraW1wb3J0IHB5dGVzdAorCitpZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgorICAgIHJhaXNlIFN5c3RlbUV4aXQocHl0ZXN0LmNvbnNvbGVf
bWFpbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC9jb2xsZWN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC9jb2xsZWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMmVkZjQ0NzBmNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3Qvc3JjL3B5dGVzdC9jb2xsZWN0LnB5CkBAIC0wLDAgKzEsMzkgQEAKK2ltcG9ydCBzeXMK
K2ltcG9ydCB3YXJuaW5ncworZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQorZnJvbSB0eXBp
bmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKworaW1wb3J0IHB5dGVzdAor
ZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IFBZVEVTVF9DT0xMRUNUX01PRFVMRQorCitD
T0xMRUNUX0ZBS0VNT0RVTEVfQVRUUklCVVRFUyA9IFsKKyAgICAiQ29sbGVjdG9yIiwKKyAgICAi
TW9kdWxlIiwKKyAgICAiRnVuY3Rpb24iLAorICAgICJJbnN0YW5jZSIsCisgICAgIlNlc3Npb24i
LAorICAgICJJdGVtIiwKKyAgICAiQ2xhc3MiLAorICAgICJGaWxlIiwKKyAgICAiX2ZpbGxmdW5j
YXJncyIsCitdCisKKworY2xhc3MgRmFrZUNvbGxlY3RNb2R1bGUoTW9kdWxlVHlwZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oInB5
dGVzdC5jb2xsZWN0IikKKyAgICAgICAgc2VsZi5fX2FsbF9fID0gbGlzdChDT0xMRUNUX0ZBS0VN
T0RVTEVfQVRUUklCVVRFUykKKyAgICAgICAgc2VsZi5fX3B5dGVzdCA9IHB5dGVzdAorCisgICAg
ZGVmIF9fZGlyX18oc2VsZikgLT4gTGlzdFtzdHJdOgorICAgICAgICByZXR1cm4gZGlyKHN1cGVy
KCkpICsgc2VsZi5fX2FsbF9fCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZTogc3Ry
KSAtPiBBbnk6CisgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX19hbGxfXzoKKyAgICAgICAg
ICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIHdhcm5pbmdzLndhcm4oUFlU
RVNUX0NPTExFQ1RfTU9EVUxFLmZvcm1hdChuYW1lPW5hbWUpLCBzdGFja2xldmVsPTIpCisgICAg
ICAgIHJldHVybiBnZXRhdHRyKHB5dGVzdCwgbmFtZSkKKworCitzeXMubW9kdWxlc1sicHl0ZXN0
LmNvbGxlY3QiXSA9IEZha2VDb2xsZWN0TW9kdWxlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9weXRlc3QvcHkudHlwZWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvcHl0ZXN0L3B5LnR5cGVkCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNzFkM2JhOGFk
OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9weXRl
c3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL19faW5pdF9fLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGFza3MvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVh
NWIxMjkzZTMzZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL19faW5pdF9f
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotIiIiCi1JbnZva2UgdGFza3MgdG8g
aGVscCB3aXRoIHB5dGVzdCBkZXZlbG9wbWVudCBhbmQgcmVsZWFzZSBwcm9jZXNzLgotIiIiCi0K
LWltcG9ydCBpbnZva2UKLQotZnJvbSAuIGltcG9ydCBnZW5lcmF0ZQotCi0KLW5zID0gaW52b2tl
LkNvbGxlY3Rpb24oZ2VuZXJhdGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9nZW5l
cmF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL2dlbmVyYXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzOThhZjcwYzk0MjcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90YXNrcy9nZW5lcmF0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0iIiIK
LUludm9rZSBkZXZlbG9wbWVudCB0YXNrcy4KLSIiIgotZnJvbSBwYXRobGliIGltcG9ydCBQYXRo
Ci1mcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNoZWNrX291dHB1dCwgY2hlY2tfY2FsbAotCi1pbXBv
cnQgaW52b2tlCi0KLQotQGludm9rZS50YXNrKGhlbHA9eyJ2ZXJzaW9uIjogInZlcnNpb24gYmVp
bmcgcmVsZWFzZWQifSkKLWRlZiBhbm5vdW5jZShjdHgsIHZlcnNpb24pOgotICAgICIiIkdlbmVy
YXRlcyBhIG5ldyByZWxlYXNlIGFubm91bmNlbWVudCBlbnRyeSBpbiB0aGUgZG9jcy4iIiIKLSAg
ICAjIEdldCBvdXIgbGlzdCBvZiBhdXRob3JzCi0gICAgc3Rkb3V0ID0gY2hlY2tfb3V0cHV0KFsi
Z2l0IiwgImRlc2NyaWJlIiwgIi0tYWJicmV2PTAiLCAiLS10YWdzIl0pCi0gICAgc3Rkb3V0ID0g
c3Rkb3V0LmRlY29kZSgidXRmLTgiKQotICAgIGxhc3RfdmVyc2lvbiA9IHN0ZG91dC5zdHJpcCgp
Ci0KLSAgICBzdGRvdXQgPSBjaGVja19vdXRwdXQoCi0gICAgICAgIFsiZ2l0IiwgImxvZyIsICJ7
fS4uSEVBRCIuZm9ybWF0KGxhc3RfdmVyc2lvbiksICItLWZvcm1hdD0lYU4iXQotICAgICkKLSAg
ICBzdGRvdXQgPSBzdGRvdXQuZGVjb2RlKCJ1dGYtOCIpCi0KLSAgICBjb250cmlidXRvcnMgPSBz
ZXQoc3Rkb3V0LnNwbGl0bGluZXMoKSkKLQotICAgIHRlbXBsYXRlX25hbWUgPSAicmVsZWFzZS5t
aW5vci5yc3QiIGlmIHZlcnNpb24uZW5kc3dpdGgoCi0gICAgICAgICIuMCIKLSAgICApIGVsc2Ug
InJlbGVhc2UucGF0Y2gucnN0IgotICAgIHRlbXBsYXRlX3RleHQgPSBQYXRoKF9fZmlsZV9fKS5w
YXJlbnQuam9pbnBhdGgodGVtcGxhdGVfbmFtZSkucmVhZF90ZXh0KAotICAgICAgICBlbmNvZGlu
Zz0iVVRGLTgiCi0gICAgKQotCi0gICAgY29udHJpYnV0b3JzX3RleHQgPSAiXG4iLmpvaW4oCi0g
ICAgICAgICIqIHt9Ii5mb3JtYXQobmFtZSkgZm9yIG5hbWUgaW4gc29ydGVkKGNvbnRyaWJ1dG9y
cykKLSAgICApICsgIlxuIgotICAgIHRleHQgPSB0ZW1wbGF0ZV90ZXh0LmZvcm1hdCh2ZXJzaW9u
PXZlcnNpb24sIGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnNfdGV4dCkKLQotICAgIHRhcmdldCA9
IFBhdGgoX19maWxlX18pLnBhcmVudC5qb2lucGF0aCgKLSAgICAgICAgIi4uL2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLXt9LnJzdCIuZm9ybWF0KHZlcnNpb24pCi0gICAgKQotICAgIHRhcmdldC53
cml0ZV90ZXh0KHRleHQsIGVuY29kaW5nPSJVVEYtOCIpCi0gICAgcHJpbnQoIltnZW5lcmF0ZS5h
bm5vdW5jZV0gR2VuZXJhdGVkIHt9Ii5mb3JtYXQodGFyZ2V0Lm5hbWUpKQotCi0gICAgIyBVcGRh
dGUgaW5kZXggd2l0aCB0aGUgbmV3IHJlbGVhc2UgZW50cnkKLSAgICBpbmRleF9wYXRoID0gUGF0
aChfX2ZpbGVfXykucGFyZW50LmpvaW5wYXRoKCIuLi9kb2MvZW4vYW5ub3VuY2UvaW5kZXgucnN0
IikKLSAgICBsaW5lcyA9IGluZGV4X3BhdGgucmVhZF90ZXh0KGVuY29kaW5nPSJVVEYtOCIpLnNw
bGl0bGluZXMoKQotICAgIGluZGVudCA9ICIgICAiCi0gICAgZm9yIGluZGV4LCBsaW5lIGluIGVu
dW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgie31yZWxlYXNlLSIu
Zm9ybWF0KGluZGVudCkpOgotICAgICAgICAgICAgbmV3X2xpbmUgPSBpbmRlbnQgKyB0YXJnZXQu
c3RlbQotICAgICAgICAgICAgaWYgbGluZSAhPSBuZXdfbGluZToKLSAgICAgICAgICAgICAgICBs
aW5lcy5pbnNlcnQoaW5kZXgsIG5ld19saW5lKQotICAgICAgICAgICAgICAgIGluZGV4X3BhdGgu
d3JpdGVfdGV4dCgiXG4iLmpvaW4obGluZXMpICsgIlxuIiwgZW5jb2Rpbmc9IlVURi04IikKLSAg
ICAgICAgICAgICAgICBwcmludCgiW2dlbmVyYXRlLmFubm91bmNlXSBVcGRhdGVkIHt9Ii5mb3Jt
YXQoaW5kZXhfcGF0aC5uYW1lKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cHJpbnQoCi0gICAgICAgICAgICAgICAgICAgICJbZ2VuZXJhdGUuYW5ub3VuY2VdIFNraXAge30g
KGFscmVhZHkgY29udGFpbnMgcmVsZWFzZSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4X3BhdGgubmFtZQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgYnJlYWsKLQotICAgIGNoZWNrX2NhbGwoWyJnaXQiLCAiYWRkIiwg
c3RyKHRhcmdldCldKQotCi0KLUBpbnZva2UudGFzaygpCi1kZWYgcmVnZW4oY3R4KToKLSAgICAi
IiJDYWxsIHJlZ2VuZG9jIHRvb2wgdG8gdXBkYXRlIGV4YW1wbGVzIGFuZCBweXRlc3Qgb3V0cHV0
IGluIHRoZSBkb2NzLiIiIgotICAgIHByaW50KCJbZ2VuZXJhdGUucmVnZW5dIFVwZGF0aW5nIGRv
Y3MiKQotICAgIGNoZWNrX2NhbGwoWyJ0b3giLCAiLWUiLCAicmVnZW4iXSkKLQotCi1AaW52b2tl
LnRhc2soKQotZGVmIG1ha2VfdGFnKGN0eCwgdmVyc2lvbik6Ci0gICAgIiIiQ3JlYXRlIGEgbmV3
LCBsb2NhbCB0YWcgZm9yIHRoZSByZWxlYXNlLCBvbmx5IGlmIHRoZSByZXBvc2l0b3J5IGlzIGNs
ZWFuLiIiIgotICAgIGZyb20gZ2l0IGltcG9ydCBSZXBvCi0KLSAgICByZXBvID0gUmVwbygiLiIp
Ci0gICAgaWYgcmVwby5pc19kaXJ0eSgpOgotICAgICAgICBwcmludCgiQ3VycmVudCByZXBvc2l0
b3J5IGlzIGRpcnR5LiBQbGVhc2UgY29tbWl0IGFueSBjaGFuZ2VzIGFuZCB0cnkgYWdhaW4uIikK
LSAgICAgICAgcmFpc2UgaW52b2tlLkV4aXQoY29kZT0yKQotCi0gICAgdGFnX25hbWVzID0gW3gu
bmFtZSBmb3IgeCBpbiByZXBvLnRhZ3NdCi0gICAgaWYgdmVyc2lvbiBpbiB0YWdfbmFtZXM6Ci0g
ICAgICAgIHByaW50KCJbZ2VuZXJhdGUubWFrZV90YWddIERlbGV0ZSBleGlzdGluZyB0YWcge30i
LmZvcm1hdCh2ZXJzaW9uKSkKLSAgICAgICAgcmVwby5kZWxldGVfdGFnKHZlcnNpb24pCi0KLSAg
ICBwcmludCgiW2dlbmVyYXRlLm1ha2VfdGFnXSBDcmVhdGUgdGFnIHt9Ii5mb3JtYXQodmVyc2lv
bikpCi0gICAgcmVwby5jcmVhdGVfdGFnKHZlcnNpb24pCi0KLQotQGludm9rZS50YXNrKGhlbHA9
eyJ2ZXJzaW9uIjogInZlcnNpb24gYmVpbmcgcmVsZWFzZWQifSkKLWRlZiBwcmVfcmVsZWFzZShj
dHgsIHZlcnNpb24pOgotICAgICIiIkdlbmVyYXRlcyBuZXcgZG9jcywgcmVsZWFzZSBhbm5vdW5j
ZW1lbnRzIGFuZCBjcmVhdGVzIGEgbG9jYWwgdGFnLiIiIgotICAgIGFubm91bmNlKGN0eCwgdmVy
c2lvbikKLSAgICByZWdlbihjdHgpCi0gICAgY2hhbmdlbG9nKGN0eCwgdmVyc2lvbiwgd3JpdGVf
b3V0PVRydWUpCi0KLSAgICBtc2cgPSAiUHJlcGFyaW5nIHJlbGVhc2UgdmVyc2lvbiB7fSIuZm9y
bWF0KHZlcnNpb24pCi0gICAgY2hlY2tfY2FsbChbImdpdCIsICJjb21taXQiLCAiLWEiLCAiLW0i
LCBtc2ddKQotCi0gICAgbWFrZV90YWcoY3R4LCB2ZXJzaW9uKQotCi0gICAgcHJpbnQoKQotICAg
IHByaW50KCJbZ2VuZXJhdGUucHJlX3JlbGVhc2VdIFBsZWFzZSBwdXNoIHlvdXIgYnJhbmNoIGFu
ZCBvcGVuIGEgUFIuIikKLQotCi1AaW52b2tlLnRhc2soCi0gICAgaGVscD17Ci0gICAgICAgICJ2
ZXJzaW9uIjogInZlcnNpb24gYmVpbmcgcmVsZWFzZWQiLAotICAgICAgICAid3JpdGVfb3V0Ijog
IndyaXRlIGNoYW5nZXMgdG8gdGhlIGFjdHVhbCBjaGFuZ2Vsb2ciLAotICAgIH0KLSkKLWRlZiBj
aGFuZ2Vsb2coY3R4LCB2ZXJzaW9uLCB3cml0ZV9vdXQ9RmFsc2UpOgotICAgIGlmIHdyaXRlX291
dDoKLSAgICAgICAgYWRkb3B0cyA9IFtdCi0gICAgZWxzZToKLSAgICAgICAgYWRkb3B0cyA9IFsi
LS1kcmFmdCJdCi0gICAgY2hlY2tfY2FsbChbInRvd25jcmllciIsICItLXllcyIsICItLXZlcnNp
b24iLCB2ZXJzaW9uXSArIGFkZG9wdHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9y
ZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGFza3MvcmVxdWlyZW1lbnRzLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI1NGU3NmU4NWM4Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGFza3MvcmVxdWlyZW1lbnRzLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDYgKzAsMCBAQAotLWUgLgotZ2l0cHl0aG9uCi1pbnZva2UKLXRvd25jcmllcgotdG94Ci13aGVl
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGFza3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90YXNrcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGFlMDg1M2QzMmQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGFza3MvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90YXNrcy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL2dlbmVyYXRlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGFza3MvcmVsZWFzZS5taW5vci5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9y
ZWxlYXNlLnBhdGNoLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3JlcXVpcmVtZW50cy50eHQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvYWNjZXB0YW5jZV90ZXN0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9hY2NlcHRhbmNlX3Rlc3QucHkKaW5kZXggYzJlZWQ0MTljOWNiLi4wMzlk
OGRhZDk2OWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvYWNjZXB0YW5jZV90ZXN0
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvYWNjZXB0YW5jZV90ZXN0LnB5CkBAIC0xLDMw
ICsxLDMxIEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IG9zCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIAotaW1wb3J0IHNpeAotCi1pbXBvcnQgX3B5dGVzdC5f
Y29kZQoraW1wb3J0IGF0dHIKIGltcG9ydCBweQorCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRl
c3QubWFpbiBpbXBvcnQgRVhJVF9OT1RFU1RTQ09MTEVDVEVELCBFWElUX1VTQUdFRVJST1IKK2Zy
b20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGltcG9ydGxpYl9tZXRhZGF0YQorZnJvbSBfcHl0ZXN0
LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBzeW1s
aW5rX29yX3NraXAKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgVGVzdGRpcgorCiAKK2Rl
ZiBwcmVwZW5kX3B5dGhvbnBhdGgoKmRpcnMpOgorICAgIGN1ciA9IG9zLmdldGVudigiUFlUSE9O
UEFUSCIpCisgICAgaWYgY3VyOgorICAgICAgICBkaXJzICs9IChjdXIsKQorICAgIHJldHVybiBv
cy5wYXRoc2VwLmpvaW4oc3RyKHApIGZvciBwIGluIGRpcnMpCiAKLWNsYXNzIFRlc3RHZW5lcmFs
VXNhZ2Uob2JqZWN0KToKIAorY2xhc3MgVGVzdEdlbmVyYWxVc2FnZToKICAgICBkZWYgdGVzdF9j
b25maWdfZXJyb3Ioc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0
KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWcpOgotICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgICAgICByYWlz
ZSBweXRlc3QuVXNhZ2VFcnJvcigiaGVsbG8iKQotICAgICAgICAiIiIKLSAgICAgICAgKQorICAg
ICAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiY29uZnRlc3RfdXNhZ2VlcnJvci9jb25mdGVzdC5w
eSIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHRlc3RkaXIudG1wZGlyKQot
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0
ID09IEV4aXRDb2RlLlVTQUdFX0VSUk9SCiAgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9s
aW5lcyhbIipFUlJPUjogaGVsbG8iXSkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKnB5dGVzdF91bmNvbmZpZ3VyZV9jYWxsZWQiXSkKIAogICAgIGRlZiB0ZXN0X3Jvb3Rf
Y29uZnRlc3Rfc3ludGF4X2Vycm9yKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoY29uZnRlc3Q9InJhaXNlIFN5bnRheEVycm9yXG4iKQpAQCAtNjksNyArNzAsNyBA
QCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfZmlsZV9ub3Rf
Zm91bmQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCJhc2QiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCi0gICAgICAgIHJlc3VsdC5z
dGRlcnIuZm5tYXRjaF9saW5lcyhbIkVSUk9SOiBmaWxlIG5vdCBmb3VuZCphc2QiXSkKKyAgICAg
ICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiRVJST1I6IGZpbGUgb3IgZGlyZWN0b3J5
IG5vdCBmb3VuZDogYXNkIl0pCiAKICAgICBkZWYgdGVzdF9maWxlX25vdF9mb3VuZF91bmNvbmZp
Z3VyZV9pc3N1ZTE0MyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRl
c3QoCkBAIC04MSw4ICs4Miw4IEBAIGNsYXNzIFRlc3RHZW5lcmFsVXNhZ2Uob2JqZWN0KToKICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii1zIiwgImFzZCIpCi0gICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDQgICMgRVhJVF9VU0FH
RUVSUk9SCi0gICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIkVSUk9SOiBmaWxl
IG5vdCBmb3VuZCphc2QiXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUu
VVNBR0VfRVJST1IKKyAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiRVJST1I6
IGZpbGUgb3IgZGlyZWN0b3J5IG5vdCBmb3VuZDogYXNkIl0pCiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIiotLS1jb25maWd1cmUiLCAiKi0tLXVuY29uZmlndXJlIl0pCiAK
ICAgICBkZWYgdGVzdF9jb25maWdfcHJlcGFyc2VfcGx1Z2luX29wdGlvbihzZWxmLCB0ZXN0ZGly
KToKQEAgLTEwMiw3ICsxMDMsNTIgQEAgY2xhc3MgVGVzdEdlbmVyYWxVc2FnZShvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKIAotICAgIGRlZiB0ZXN0X2Fzc2VydGlvbl9tYWdp
YyhzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImxvYWRfY292
X2Vhcmx5IiwgW1RydWUsIEZhbHNlXSkKKyAgICBkZWYgdGVzdF9lYXJseV9sb2FkX3NldHVwdG9v
bHNfbmFtZShzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCwgbG9hZF9jb3ZfZWFybHkpOgorICAg
ICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIp
CisKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKG15dGVzdHBsdWdpbjFfbW9kdWxlPSIiKQor
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUobXl0ZXN0cGx1Z2luMl9tb2R1bGU9IiIpCisgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZShteWNvdl9tb2R1bGU9IiIpCisgICAgICAgIHRlc3RkaXIu
c3lzcGF0aGluc2VydCgpCisKKyAgICAgICAgbG9hZGVkID0gW10KKworICAgICAgICBAYXR0ci5z
CisgICAgICAgIGNsYXNzIER1bW15RW50cnlQb2ludDoKKyAgICAgICAgICAgIG5hbWUgPSBhdHRy
LmliKCkKKyAgICAgICAgICAgIG1vZHVsZSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgZ3JvdXAg
PSAicHl0ZXN0MTEiCisKKyAgICAgICAgICAgIGRlZiBsb2FkKHNlbGYpOgorICAgICAgICAgICAg
ICAgIF9faW1wb3J0X18oc2VsZi5tb2R1bGUpCisgICAgICAgICAgICAgICAgbG9hZGVkLmFwcGVu
ZChzZWxmLm5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW3NlbGYubW9k
dWxlXQorCisgICAgICAgIGVudHJ5X3BvaW50cyA9IFsKKyAgICAgICAgICAgIER1bW15RW50cnlQ
b2ludCgibXlwbHVnaW4xIiwgIm15dGVzdHBsdWdpbjFfbW9kdWxlIiksCisgICAgICAgICAgICBE
dW1teUVudHJ5UG9pbnQoIm15cGx1Z2luMiIsICJteXRlc3RwbHVnaW4yX21vZHVsZSIpLAorICAg
ICAgICAgICAgRHVtbXlFbnRyeVBvaW50KCJteWNvdiIsICJteWNvdl9tb2R1bGUiKSwKKyAgICAg
ICAgXQorCisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3MgRHVtbXlEaXN0OgorICAgICAg
ICAgICAgZW50cnlfcG9pbnRzID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWxlcyA9ICgpCisK
KyAgICAgICAgZGVmIG15X2Rpc3RzKCk6CisgICAgICAgICAgICByZXR1cm4gKER1bW15RGlzdChl
bnRyeV9wb2ludHMpLCkKKworICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGltcG9ydGxpYl9t
ZXRhZGF0YSwgImRpc3RyaWJ1dGlvbnMiLCBteV9kaXN0cykKKyAgICAgICAgcGFyYW1zID0gKCIt
cCIsICJteWNvdiIpIGlmIGxvYWRfY292X2Vhcmx5IGVsc2UgKCkKKyAgICAgICAgdGVzdGRpci5y
dW5weXRlc3RfaW5wcm9jZXNzKCpwYXJhbXMpCisgICAgICAgIGlmIGxvYWRfY292X2Vhcmx5Ogor
ICAgICAgICAgICAgYXNzZXJ0IGxvYWRlZCA9PSBbIm15Y292IiwgIm15cGx1Z2luMSIsICJteXBs
dWdpbjIiXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGxvYWRlZCA9PSBbIm15
cGx1Z2luMSIsICJteXBsdWdpbjIiLCAibXljb3YiXQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJpbXBvcnRfbW9kZSIsIFsicHJlcGVuZCIsICJhcHBlbmQiLCAiaW1wb3J0bGliIl0p
CisgICAgZGVmIHRlc3RfYXNzZXJ0aW9uX3Jld3JpdGUoc2VsZiwgdGVzdGRpciwgaW1wb3J0X21v
ZGUpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAg
ICAgICAgICAgICBkZWYgdGVzdF90aGlzKCk6CkBAIC0xMTAsNyArMTU2LDcgQEAgY2xhc3MgVGVz
dEdlbmVyYWxVc2FnZShvYmplY3QpOgogICAgICAgICAgICAgICAgIGFzc2VydCB4CiAgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICItLWltcG9ydC1tb2RlPXt9Ii5m
b3JtYXQoaW1wb3J0X21vZGUpKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyI+ICAgICAgIGFzc2VydCB4IiwgIkUgICAgICAgYXNzZXJ0IDAiXSkKICAgICAgICAgYXNzZXJ0
IHJlc3VsdC5yZXQgPT0gMQogCkBAIC0xMjYsNyArMTcyLDYgQEAgY2xhc3MgVGVzdEdlbmVyYWxV
c2FnZShvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAg
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgIyBYWFggb24ganl0aG9uIHRoaXMgZmFpbHM6ICAiPiAgIGltcG9ydCBpbXBvcnRf
ZmFpbHMiLAogICAgICAgICAgICAgICAgICJJbXBvcnRFcnJvciB3aGlsZSBpbXBvcnRpbmcgdGVz
dCBtb2R1bGUqIiwKICAgICAgICAgICAgICAgICAiKk5vIG1vZHVsZSBuYW1lZCAqZG9lc19ub3Rf
d29yayoiLAogICAgICAgICAgICAgXQpAQCAtMTM3LDEyICsxODIsMjYgQEAgY2xhc3MgVGVzdEdl
bmVyYWxVc2FnZShvYmplY3QpOgogICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiIikK
ICAgICAgICAgcDIgPSB0ZXN0ZGlyLm1ha2VmaWxlKCIucHljIiwgIjEyMyIpCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAxLCBwMikKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQKLSAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKkVSUk9SOiBub3QgZm91
bmQ6KiVzIiAlIChwMi5iYXNlbmFtZSwpXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
RXhpdENvZGUuVVNBR0VfRVJST1IKKyAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVz
KAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJFUlJPUjogbm90IGZvdW5kOiB7fSIu
Zm9ybWF0KHAyKSwKKyAgICAgICAgICAgICAgICAiKG5vIG5hbWUgeyFyfSBpbiBhbnkgb2YgW1td
W11dKSIuZm9ybWF0KHN0cihwMikpLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
XQorICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9pc3N1ZTQ4Nl9iZXR0ZXJfcmVwb3J0aW5nX29u
X2NvbmZ0ZXN0X2xvYWRfZmFpbHVyZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorICAgIGRlZiB0ZXN0X2JldHRlcl9yZXBvcnRpbmdf
b25fY29uZnRlc3RfbG9hZF9mYWlsdXJlKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJTaG93
IGEgdXNlci1mcmllbmRseSB0cmFjZWJhY2sgb24gY29uZnRlc3QgaW1wb3J0IGZhaWx1cmVzICgj
NDg2LCAjMzMzMikiIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCIiKQotICAgICAgICB0
ZXN0ZGlyLm1ha2Vjb25mdGVzdCgiaW1wb3J0IHF3ZXJ0eSIpCisgICAgICAgIGNvbmZ0ZXN0ID0g
dGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBm
b28oKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgcXdlcnR5CisgICAgICAgICAgICBmb28oKQor
ICAgICAgICAiIiIKKyAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1oZWxwIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAg
ICAgICAgIiIiCkBAIC0xNTEsMzggKzIxMCwzNCBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9i
amVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICAqRVJST1IqY291bGQgbm90IGxvYWQqY29uZnRlc3QucHkq
Ci0gICAgICAgICIiIgorICAgICAgICBleGNfbmFtZSA9ICgKKyAgICAgICAgICAgICJNb2R1bGVO
b3RGb3VuZEVycm9yIiBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA2KSBlbHNlICJJbXBvcnRF
cnJvciIKICAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lcyA9PSBb
XQorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZGVyci5saW5lcyA9PSBbCisgICAgICAgICAgICAi
SW1wb3J0RXJyb3Igd2hpbGUgbG9hZGluZyBjb25mdGVzdCAne30nLiIuZm9ybWF0KGNvbmZ0ZXN0
KSwKKyAgICAgICAgICAgICJjb25mdGVzdC5weTozOiBpbiA8bW9kdWxlPiIsCisgICAgICAgICAg
ICAiICAgIGZvbygpIiwKKyAgICAgICAgICAgICJjb25mdGVzdC5weToyOiBpbiBmb28iLAorICAg
ICAgICAgICAgIiAgICBpbXBvcnQgcXdlcnR5IiwKKyAgICAgICAgICAgICJFICAge306IE5vIG1v
ZHVsZSBuYW1lZCAncXdlcnR5JyIuZm9ybWF0KGV4Y19uYW1lKSwKKyAgICAgICAgXQogCiAgICAg
ZGVmIHRlc3RfZWFybHlfc2tpcChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5ta2Rp
cigieHl6IikKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIK
ICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVj
dF9kaXJlY3RvcnkoKToKKyAgICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKCk6CiAg
ICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoImVhcmx5IikKICAgICAgICAgIiIiCiAgICAgICAg
ICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKKyAgICAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIioxIHNraXAqIl0pCiAKICAgICBkZWYgdGVzdF9pc3N1ZTg4X2lu
aXRpYWxfZmlsZV9tdWx0aW5vZGVzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1h
a2Vjb25mdGVzdCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAot
ICAgICAgICAgICAgY2xhc3MgTXlGaWxlKHB5dGVzdC5GaWxlKToKLSAgICAgICAgICAgICAgICBk
ZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtNeUl0ZW0oImhl
bGxvIiwgcGFyZW50PXNlbGYpXQotICAgICAgICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUo
cGF0aCwgcGFyZW50KToKLSAgICAgICAgICAgICAgICByZXR1cm4gTXlGaWxlKHBhdGgsIHBhcmVu
dCkKLSAgICAgICAgICAgIGNsYXNzIE15SXRlbShweXRlc3QuSXRlbSk6Ci0gICAgICAgICAgICAg
ICAgcGFzcwotICAgICAgICAiIiIKLSAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLmNvcHlfZXhh
bXBsZSgiaXNzdWU4OF9pbml0aWFsX2ZpbGVfbXVsdGlub2RlcyIpCiAgICAgICAgIHAgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2hlbGxvKCk6IHBhc3MiKQogICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdChwLCAiLS1jb2xsZWN0LW9ubHkiKQogICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqTXlGaWxlKnRlc3RfaXNzdWU4OCoiLCAiKk1vZHVsZSp0
ZXN0X2lzc3VlODgqIl0pCkBAIC0xOTEsMTkgKzI0NiwxOSBAQCBjbGFzcyBUZXN0R2VuZXJhbFVz
YWdlKG9iamVjdCk6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICBwcmludCAoInNob3VsZCBu
b3QgYmUgc2VlbiIpCisgICAgICAgICAgICBwcmludCgic2hvdWxkIG5vdCBiZSBzZWVuIikKICAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoInN0ZGVyNDJcXG4iKQogICAgICAgICAiIiIKICAg
ICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFz
c2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAotICAgICAgICBhc3NlcnQg
InNob3VsZCBub3QgYmUgc2VlbiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECisgICAgICAg
IHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqc2hvdWxkIG5vdCBiZSBzZWVuKiIpCiAg
ICAgICAgIGFzc2VydCAic3RkZXJyNDIiIG5vdCBpbiByZXN1bHQuc3RkZXJyLnN0cigpCiAKICAg
ICBkZWYgdGVzdF9jb25mdGVzdF9wcmludGluZ19zaG93c19pZl9lcnJvcihzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIHByaW50ICgic2hvdWxkIGJlIHNlZW4iKQorICAgICAgICAgICAgcHJpbnQoInNob3Vs
ZCBiZSBzZWVuIikKICAgICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICAp
CkBAIC0yMTEsNDEgKzI2NiwxOCBAQCBjbGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAg
ICAgICAgIGFzc2VydCByZXN1bHQucmV0ICE9IDAKICAgICAgICAgYXNzZXJ0ICJzaG91bGQgYmUg
c2VlbiIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigK
LSAgICAgICAgbm90IGhhc2F0dHIocHkucGF0aC5sb2NhbCwgIm1rc3ltbGlua3RvIiksCi0gICAg
ICAgIHJlYXNvbj0ic3ltbGluayBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iLAotICAg
ICkKLSAgICBkZWYgdGVzdF9jaGRpcihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci50
bXBkaXIuam9pbigicHkiKS5ta3N5bWxpbmt0byhweS5fcHlkaXIpCi0gICAgICAgIHAgPSB0ZXN0
ZGlyLnRtcGRpci5qb2luKCJtYWluLnB5IikKLSAgICAgICAgcC53cml0ZSgKLSAgICAgICAgICAg
IF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
aW1wb3J0IHN5cywgb3MKLSAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCAnJykKLSAgICAg
ICAgICAgIGltcG9ydCBweQotICAgICAgICAgICAgcHJpbnQgKHB5Ll9fZmlsZV9fKQotICAgICAg
ICAgICAgcHJpbnQgKHB5Ll9fcGF0aF9fKQotICAgICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5k
aXJuYW1lKG9zLmdldGN3ZCgpKSkKLSAgICAgICAgICAgIHByaW50IChweS5sb2cpCi0gICAgICAg
ICIiIgotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0aG9uKHApCi0gICAgICAgIGFzc2VydCBub3QgcmVzdWx0LnJldAotCiAgICAgZGVmIHRl
c3RfaXNzdWUxMDlfc2libGluZ19jb25mdGVzdHNfbm90X2xvYWRlZChzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgc3ViMSA9IHRlc3RkaXIubWtkaXIoInN1YjEiKQogICAgICAgICBzdWIyID0gdGVz
dGRpci5ta2Rpcigic3ViMiIpCiAgICAgICAgIHN1YjEuam9pbigiY29uZnRlc3QucHkiKS53cml0
ZSgiYXNzZXJ0IDAiKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdWIyKQot
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKKyAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAgICAg
ICAgIHN1YjIuZW5zdXJlKCJfX2luaXRfXy5weSIpCiAgICAgICAgIHAgPSBzdWIyLmVuc3VyZSgi
dGVzdF9oZWxsby5weSIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCi0g
ICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3ViMSkKLSAgICAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gRVhJVF9VU0FHRUVSUk9SCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4
aXRDb2RlLlVTQUdFX0VSUk9SCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rvcnlfc2tpcHBlZChzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCkBAIC0yNTcsNyArMjg5
LDcgQEAgY2xhc3MgVGVzdEdlbmVyYWxVc2FnZShvYmplY3QpOgogICAgICAgICApCiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfaGVsbG8oKTogcGFzcyIpCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
RVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRD
b2RlLk5PX1RFU1RTX0NPTExFQ1RFRAogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqMSBza2lwcGVkKiJdKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfaXRlbXNfcGVyX2Nv
bGxlY3Rvcl9ieWlkKHNlbGYsIHRlc3RkaXIpOgpAQCAtMjY5LDEwICszMDEsMTAgQEAgY2xhc3Mg
VGVzdEdlbmVyYWxVc2FnZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAg
ICAgICAgICBjbGFzcyBNeUNvbGxlY3RvcihweXRlc3QuRmlsZSk6CiAgICAgICAgICAgICAgICAg
ZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbTXlJdGVtKG5h
bWU9Inh5eiIsIHBhcmVudD1zZWxmKV0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtNeUl0
ZW0uZnJvbV9wYXJlbnQobmFtZT0ieHl6IiwgcGFyZW50PXNlbGYpXQogICAgICAgICAgICAgZGVm
IHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKICAgICAgICAgICAgICAgICBpZiBw
YXRoLmJhc2VuYW1lLnN0YXJ0c3dpdGgoImNvbmZ0ZXN0Iik6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBNeUNvbGxlY3RvcihwYXRoLCBwYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBNeUNvbGxlY3Rvci5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkK
ICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoYy5iYXNlbmFtZSArICI6OiIgKyAieHl6IikKQEAgLTI4NCw5ICszMTYsOSBAQCBjbGFzcyBU
ZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1
bmMpOgotICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoeyd4JzogM30sIGlkPSdoZWxs
by0xMjMnKQorICAgICAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCd4JywgWzNdLCBp
ZHM9WydoZWxsby0xMjMnXSkKICAgICAgICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChp
dGVtKToKLSAgICAgICAgICAgICAgICBwcmludCAoaXRlbS5rZXl3b3JkcykKKyAgICAgICAgICAg
ICAgICBwcmludChpdGVtLmtleXdvcmRzKQogICAgICAgICAgICAgICAgIGlmICdoZWxsby0xMjMn
IGluIGl0ZW0ua2V5d29yZHM6CiAgICAgICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJoZWxs
byIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKQEAgLTMwMSw4ICszMzMsNyBAQCBjbGFzcyBU
ZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMo
bWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoeydpJzogMX0sIGlk
PSIxIikKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHsnaSc6IDJ9LCBpZD0iMiIp
CisgICAgICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoJ2knLCBbMSwgMl0sIGlkcz1b
IjEiLCAiMiJdKQogICAgICAgICAgICAgZGVmIHRlc3RfZnVuYyhpKToKICAgICAgICAgICAgICAg
ICBwYXNzCiAgICAgICAgICIiIgpAQCAtMzU2LDE5ICszODcsMjcgQEAgY2xhc3MgVGVzdEdlbmVy
YWxVc2FnZShvYmplY3QpOgogICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gNCAgIyB1
c2FnZSBlcnJvciBvbmx5IGlmIGl0ZW0gbm90IGZvdW5kCiAKICAgICBkZWYgdGVzdF9yZXBvcnRf
YWxsX2ZhaWxlZF9jb2xsZWN0aW9uc19pbml0YXJncyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
dGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGZyb20g
X3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCisKKyAgICAgICAgICAgIGRlZiBweXRlc3Rf
c2Vzc2lvbmZpbmlzaChleGl0c3RhdHVzKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZXhpdHN0
YXR1cyA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgorICAgICAgICAgICAgICAgIHByaW50KCJweXRl
c3Rfc2Vzc2lvbmZpbmlzaF9jYWxsZWQiKQorICAgICAgICAgICAgIiIiCisgICAgICAgICkKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKHRlc3RfYT0iZGVmIiwgdGVzdF9iPSJkZWYiKQogICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgidGVzdF9hLnB5OjphIiwgInRlc3RfYi5w
eTo6YiIpCiAgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipFUlJPUip0ZXN0
X2EucHk6OmEqIiwgIipFUlJPUip0ZXN0X2IucHk6OmIqIl0pCisgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbInB5dGVzdF9zZXNzaW9uZmluaXNoX2NhbGxlZCJdKQorICAgICAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgogCi0gICAgQHB5dGVz
dC5tYXJrLnVzZWZpeHR1cmVzKCJyZWN3YXJuIikKICAgICBkZWYgdGVzdF9uYW1lc3BhY2VfaW1w
b3J0X2RvZXNudF9jb25mdXNlX2ltcG9ydF9ob29rKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAi
IiIKLSAgICAgICAgUmVmICMzODMuIFB5dGhvbiAzLjMncyBuYW1lc3BhY2UgcGFja2FnZSBtZXNz
ZWQgd2l0aCBvdXIgaW1wb3J0IGhvb2tzCisgICAgICAgICIiIlJlZiAjMzgzLgorCisgICAgICAg
IFB5dGhvbiAzLjMncyBuYW1lc3BhY2UgcGFja2FnZSBtZXNzZWQgd2l0aCBvdXIgaW1wb3J0IGhv
b2tzLgogICAgICAgICBJbXBvcnRpbmcgYSBtb2R1bGUgdGhhdCBkaWRuJ3QgZXhpc3QsIGV2ZW4g
aWYgdGhlIEltcG9ydEVycm9yIHdhcwogICAgICAgICBncmFjZWZ1bGx5IGhhbmRsZWQsIHdvdWxk
IG1ha2Ugb3VyIHRlc3QgY3Jhc2guCi0KLSAgICAgICAgVXNlIHJlY3dhcm4gaGVyZSB0byBzaWxl
bmNlIHRoaXMgd2FybmluZyBpbiBQeXRob24gMi43OgotICAgICAgICAgICAgSW1wb3J0V2Fybmlu
ZzogTm90IGltcG9ydGluZyBkaXJlY3RvcnkgJy4uLlxub3RfYV9wYWNrYWdlJzogbWlzc2luZyBf
X2luaXRfXy5weQogICAgICAgICAiIiIKICAgICAgICAgdGVzdGRpci5ta2Rpcigibm90X2FfcGFj
a2FnZSIpCiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0zOTksNyArNDM4LDcg
QEAgY2xhc3MgVGVzdEdlbmVyYWxVc2FnZShvYmplY3QpOgogICAgICAgICBwID0gdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcmFpc2VfZXJyb3Io
b2JqKToKLSAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdzb3VyY2UgY29kZSBub3QgYXZh
aWxhYmxlJykKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdzb3VyY2UgY29kZSBub3Qg
YXZhaWxhYmxlJykKIAogICAgICAgICAgICAgaW1wb3J0IGluc3BlY3QKICAgICAgICAgICAgIGlu
c3BlY3QuZ2V0c291cmNlbGluZXMgPSByYWlzZV9lcnJvcgpAQCAtNDEzLDExICs0NTIsOSBAQCBj
bGFzcyBUZXN0R2VuZXJhbFVzYWdlKG9iamVjdCk6CiAgICAgICAgICAgICBbIipzb3VyY2UgY29k
ZSBub3QgYXZhaWxhYmxlKiIsICJFKmZpeHR1cmUgJ2ludmFsaWRfZml4dHVyZScgbm90IGZvdW5k
Il0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfcGx1Z2luc19naXZlbl9hc19zdHJpbmdzKHNl
bGYsIHRtcGRpciwgbW9ua2V5cGF0Y2gpOgotICAgICAgICAiIiJ0ZXN0IHRoYXQgc3RyIHZhbHVl
cyBwYXNzZWQgdG8gbWFpbigpIGFzIGBwbHVnaW5zYCBhcmcKLSAgICAgICAgYXJlIGludGVycHJl
dGVkIGFzIG1vZHVsZSBuYW1lcyB0byBiZSBpbXBvcnRlZCBhbmQgcmVnaXN0ZXJlZC4KLSAgICAg
ICAgIzg1NS4KLSAgICAgICAgIiIiCisgICAgZGVmIHRlc3RfcGx1Z2luc19naXZlbl9hc19zdHJp
bmdzKHNlbGYsIHRtcGRpciwgbW9ua2V5cGF0Y2gsIF9zeXNfc25hcHNob3QpOgorICAgICAgICAi
IiJUZXN0IHRoYXQgc3RyIHZhbHVlcyBwYXNzZWQgdG8gbWFpbigpIGFzIGBwbHVnaW5zYCBhcmcg
YXJlCisgICAgICAgIGludGVycHJldGVkIGFzIG1vZHVsZSBuYW1lcyB0byBiZSBpbXBvcnRlZCBh
bmQgcmVnaXN0ZXJlZCAoIzg1NSkuIiIiCiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbXBv
cnRFcnJvcikgYXMgZXhjaW5mbzoKICAgICAgICAgICAgIHB5dGVzdC5tYWluKFtzdHIodG1wZGly
KV0sIHBsdWdpbnM9WyJpbnZhbGlkLm1vZHVsZSJdKQogICAgICAgICBhc3NlcnQgImludmFsaWQi
IGluIHN0cihleGNpbmZvLnZhbHVlKQpAQCAtNDQ0LDIxICs0ODEsMTkgQEAgY2xhc3MgVGVzdEdl
bmVyYWxVc2FnZShvYmplY3QpOgogICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplZF93aXRoX251bGxf
Ynl0ZXMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgICIiIlRlc3QgcGFyYW1ldHJpemF0aW9uIHdp
dGggdmFsdWVzIHRoYXQgY29udGFpbiBudWxsIGJ5dGVzIGFuZCB1bmljb2RlIGNoYXJhY3RlcnMg
KCMyNjQ0LCAjMjk1NykiIiIKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAg
ICAgICAgIHUiIiIKLSAgICAgICAgICAgICMgZW5jb2Rpbmc6IFVURi04CisgICAgICAgICAgICAi
IiJcCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAgICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgiZGF0YSIsIFtiIlxceDAwIiwgIlxceDAwIiwgdSdhw6fDo28nXSkKKyAg
ICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZGF0YSIsIFtiIlxceDAwIiwgIlxc
eDAwIiwgJ2HDp8OjbyddKQogICAgICAgICAgICAgZGVmIHRlc3RfZm9vKGRhdGEpOgogICAgICAg
ICAgICAgICAgIGFzc2VydCBkYXRhCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAg
ICAgICkKICAgICAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QocCkKICAgICAgICAgcmVzLmFz
c2VydF9vdXRjb21lcyhwYXNzZWQ9MykKIAogCi1jbGFzcyBUZXN0SW52b2NhdGlvblZhcmlhbnRz
KG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RJbnZvY2F0aW9uVmFyaWFudHM6CiAgICAgZGVmIHRlc3Rf
ZWFybHlpbml0KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgIiIiCkBAIC00NjksMTAgKzUwNCw5IEBAIGNsYXNzIFRlc3RJbnZvY2F0
aW9uVmFyaWFudHMob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRob24o
cCkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCi0gICAgQHB5dGVzdC5tYXJrLnhm
YWlsKCJzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpIikKICAgICBkZWYgdGVzdF9weWRv
YyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgZm9yIG5hbWUgaW4gKCJweS50ZXN0IiwgInB5dGVz
dCIpOgotICAgICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRob25fYygiaW1wb3J0ICVz
O2hlbHAoJXMpIiAlIChuYW1lLCBuYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0aG9uX2MoImltcG9ydCB7fTtoZWxwKHt9KSIuZm9ybWF0KG5hbWUsIG5hbWUpKQogICAg
ICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgICAgICAgICAgcyA9IHJlc3VsdC5z
dGRvdXQuc3RyKCkKICAgICAgICAgICAgIGFzc2VydCAiTWFya0dlbmVyYXRvciIgaW4gcwpAQCAt
NTQxLDI1ICs1NzUsMjMgQEAgY2xhc3MgVGVzdEludm9jYXRpb25WYXJpYW50cyhvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgcmVzLnJldCA9PSAwCiAgICAgICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIioxIHBhc3NlZCoiXSkKIAotICAgIGRlZiB0ZXN0X2VxdWl2YWxlbmNlX3B5dGVzdF9w
eXRlc3Qoc2VsZik6Ci0gICAgICAgIGFzc2VydCBweXRlc3QubWFpbiA9PSBweS50ZXN0LmNtZGxp
bmUubWFpbgorICAgIGRlZiB0ZXN0X2VxdWl2YWxlbmNlX3B5dGVzdF9weWRvdHRlc3Qoc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBgcHkudGVzdGAgaXMgbm90
IGFuZCB3aWxsIG5vdCBiZSB0eXBlZC4KKyAgICAgICAgYXNzZXJ0IHB5dGVzdC5tYWluID09IHB5
LnRlc3QuY21kbGluZS5tYWluICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAKLSAgICBk
ZWYgdGVzdF9pbnZva2Vfd2l0aF9zdHJpbmcoc2VsZiwgY2Fwc3lzKToKLSAgICAgICAgcmV0Y29k
ZSA9IHB5dGVzdC5tYWluKCItaCIpCi0gICAgICAgIGFzc2VydCBub3QgcmV0Y29kZQotICAgICAg
ICBvdXQsIGVyciA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkKLSAgICAgICAgYXNzZXJ0ICItLWhlbHAi
IGluIG91dAotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcHl0ZXN0
Lm1haW4oMCkpCisgICAgZGVmIHRlc3RfaW52b2tlX3dpdGhfaW52YWxpZF90eXBlKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJv
ciwgbWF0Y2g9ImV4cGVjdGVkIHRvIGJlIGEgbGlzdCBvZiBzdHJpbmdzLCBnb3Q6ICctaCciCisg
ICAgICAgICk6CisgICAgICAgICAgICBweXRlc3QubWFpbigiLWgiKSAgIyB0eXBlOiBpZ25vcmVb
YXJnLXR5cGVdCiAKLSAgICBkZWYgdGVzdF9pbnZva2Vfd2l0aF9wYXRoKHNlbGYsIHRtcGRpciwg
Y2Fwc3lzKToKKyAgICBkZWYgdGVzdF9pbnZva2Vfd2l0aF9wYXRoKHNlbGYsIHRtcGRpcjogcHku
cGF0aC5sb2NhbCwgY2Fwc3lzKSAtPiBOb25lOgogICAgICAgICByZXRjb2RlID0gcHl0ZXN0Lm1h
aW4odG1wZGlyKQotICAgICAgICBhc3NlcnQgcmV0Y29kZSA9PSBFWElUX05PVEVTVFNDT0xMRUNU
RUQKKyAgICAgICAgYXNzZXJ0IHJldGNvZGUgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVE
CiAgICAgICAgIG91dCwgZXJyID0gY2Fwc3lzLnJlYWRvdXRlcnIoKQogCi0gICAgZGVmIHRlc3Rf
aW52b2tlX3BsdWdpbl9hcGkoc2VsZiwgdGVzdGRpciwgY2Fwc3lzKToKLQotICAgICAgICBjbGFz
cyBNeVBsdWdpbihvYmplY3QpOgotCisgICAgZGVmIHRlc3RfaW52b2tlX3BsdWdpbl9hcGkoc2Vs
ZiwgY2Fwc3lzKToKKyAgICAgICAgY2xhc3MgTXlQbHVnaW46CiAgICAgICAgICAgICBkZWYgcHl0
ZXN0X2FkZG9wdGlvbihzZWxmLCBwYXJzZXIpOgogICAgICAgICAgICAgICAgIHBhcnNlci5hZGRv
cHRpb24oIi0tbXlvcHQiKQogCkBAIC01NzUsNyArNjA3LDI2IEBAIGNsYXNzIFRlc3RJbnZvY2F0
aW9uVmFyaWFudHMob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0tcHlhcmdzIiwgInRwa2cudGVzdF9oZWxsbyIsIHN5c3BhdGhpbnNlcnQ9VHJ1ZSkKICAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMAogCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbImNvbGxlY3RlZCowKml0ZW1zKi8qMSplcnJvcnMiXSkKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiY29sbGVjdGVkKjAqaXRlbXMqLyoxKmVycm9yIl0pCisK
KyAgICBkZWYgdGVzdF9weWFyZ3Nfb25seV9pbXBvcnRlZF9vbmNlKHNlbGYsIHRlc3RkaXIpOgor
ICAgICAgICBwa2cgPSB0ZXN0ZGlyLm1rcHlkaXIoImZvbyIpCisgICAgICAgIHBrZy5qb2luKCJ0
ZXN0X2Zvby5weSIpLndyaXRlKCJwcmludCgnaGVsbG8gZnJvbSB0ZXN0X2ZvbycpXG5kZWYgdGVz
dCgpOiBwYXNzIikKKyAgICAgICAgcGtnLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCisgICAg
ICAgICAgICAiZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKTogcHJpbnQoJ2NvbmZpZ3VyaW5n
JykiCisgICAgICAgICkKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1w
eWFyZ3MiLCAiZm9vLnRlc3RfZm9vIiwgIi1zIiwgc3lzcGF0aGluc2VydD1UcnVlKQorICAgICAg
ICAjIHNob3VsZCBvbmx5IGltcG9ydCBvbmNlCisgICAgICAgIGFzc2VydCByZXN1bHQub3V0bGlu
ZXMuY291bnQoImhlbGxvIGZyb20gdGVzdF9mb28iKSA9PSAxCisgICAgICAgICMgc2hvdWxkIG9u
bHkgY29uZmlndXJlIG9uY2UKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5vdXRsaW5lcy5jb3VudCgi
Y29uZmlndXJpbmciKSA9PSAxCisKKyAgICBkZWYgdGVzdF9weWFyZ3NfZmlsZW5hbWVfbG9va3Nf
bGlrZV9tb2R1bGUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4o
ImNvbmZ0ZXN0LnB5IikuZW5zdXJlKCkKKyAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidC5w
eSIpLndyaXRlKCJkZWYgdGVzdCgpOiBwYXNzIikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi0tcHlhcmdzIiwgInQucHkiKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9
PSBFeGl0Q29kZS5PSwogCiAgICAgZGVmIHRlc3RfY21kbGluZV9weXRob25fcGFja2FnZShzZWxm
LCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwpAQCAtNTkx
LDE0ICs2NDIsOCBAQCBjbGFzcyBUZXN0SW52b2NhdGlvblZhcmlhbnRzKG9iamVjdCk6CiAgICAg
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKjEgcGFzc2VkKiJdKQogCi0gICAgICAgIGRlZiBqb2luX3B5dGhvbnBhdGgod2hh
dCk6Ci0gICAgICAgICAgICBjdXIgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OUEFUSCIpCi0gICAg
ICAgICAgICBpZiBjdXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cih3aGF0KSArIG9zLnBh
dGhzZXAgKyBjdXIKLSAgICAgICAgICAgIHJldHVybiB3aGF0Ci0KICAgICAgICAgZW1wdHlfcGFj
a2FnZSA9IHRlc3RkaXIubWtweWRpcigiZW1wdHlfcGFja2FnZSIpCi0gICAgICAgIG1vbmtleXBh
dGNoLnNldGVudigiUFlUSE9OUEFUSCIsIGpvaW5fcHl0aG9ucGF0aChlbXB0eV9wYWNrYWdlKSkK
KyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05QQVRIIiwgc3RyKGVtcHR5X3BhY2th
Z2UpLCBwcmVwZW5kPW9zLnBhdGhzZXApCiAgICAgICAgICMgdGhlIHBhdGggd2hpY2ggaXMgbm90
IGEgcGFja2FnZSByYWlzZXMgYSB3YXJuaW5nIG9uIHB5cHk7CiAgICAgICAgICMgbm8gaWRlYSB3
aHkgb25seSBweXB5IGFuZCBub3Qgbm9ybWFsIHB5dGhvbiB3YXJuIGFib3V0IGl0IGhlcmUKICAg
ICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgpAQCAtNjA3LDE0ICs2NTIsMTUg
QEAgY2xhc3MgVGVzdEludm9jYXRpb25WYXJpYW50cyhvYmplY3QpOgogICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAwCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioy
IHBhc3NlZCoiXSkKIAotICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEhPTlBBVEgiLCBq
b2luX3B5dGhvbnBhdGgodGVzdGRpcikpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlU
SE9OUEFUSCIsIHN0cih0ZXN0ZGlyKSwgcHJlcGVuZD1vcy5wYXRoc2VwKQogICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1weWFyZ3MiLCAidHBrZy50ZXN0X21pc3NpbmciLCBz
eXNwYXRoaW5zZXJ0PVRydWUpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ICE9IDAKICAgICAg
ICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKm5vdCpmb3VuZCp0ZXN0X21pc3Npbmcq
Il0pCiAKICAgICBkZWYgdGVzdF9jbWRsaW5lX3B5dGhvbl9uYW1lc3BhY2VfcGFja2FnZShzZWxm
LCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgICAgICIiIgotICAgICAgICB0ZXN0IC0tcHlh
cmdzIG9wdGlvbiB3aXRoIG5hbWVzcGFjZSBwYWNrYWdlcyAoIzE1NjcpCisgICAgICAgICIiIlRl
c3QgLS1weWFyZ3Mgb3B0aW9uIHdpdGggbmFtZXNwYWNlIHBhY2thZ2VzICgjMTU2NykuCisKKyAg
ICAgICAgUmVmOiBodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2d1aWRlcy9wYWNrYWdpbmct
bmFtZXNwYWNlLXBhY2thZ2VzLwogICAgICAgICAiIiIKICAgICAgICAgbW9ua2V5cGF0Y2guZGVs
ZW52KCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIsIHJhaXNpbmc9RmFsc2UpCiAKQEAgLTYyOSw3
ICs2NzUsNyBAQCBjbGFzcyBUZXN0SW52b2NhdGlvblZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAg
ICAgICBsaWIgPSBucy5ta2RpcihkaXJuYW1lKQogICAgICAgICAgICAgbGliLmVuc3VyZSgiX19p
bml0X18ucHkiKQogICAgICAgICAgICAgbGliLmpvaW4oInRlc3Rfe30ucHkiLmZvcm1hdChkaXJu
YW1lKSkud3JpdGUoCi0gICAgICAgICAgICAgICAgImRlZiB0ZXN0X3t9KCk6IHBhc3NcbiIgImRl
ZiB0ZXN0X290aGVyKCk6cGFzcyIuZm9ybWF0KGRpcm5hbWUpCisgICAgICAgICAgICAgICAgImRl
ZiB0ZXN0X3t9KCk6IHBhc3NcbmRlZiB0ZXN0X290aGVyKCk6cGFzcyIuZm9ybWF0KGRpcm5hbWUp
CiAgICAgICAgICAgICApCiAKICAgICAgICAgIyBUaGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0IGRp
cmVjdG9yeSBpcyBub3c6CkBAIC02NDcsMjcgKzY5MywyMiBAQCBjbGFzcyBUZXN0SW52b2NhdGlv
blZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAgICMgICAgICAgICAgICAg4pSc4pSA4pSAIF9faW5p
dF9fLnB5CiAgICAgICAgICMgICAgICAgICAgICAg4pSU4pSA4pSAIHRlc3Rfd29ybGQucHkKIAot
ICAgICAgICBkZWYgam9pbl9weXRob25wYXRoKCpkaXJzKToKLSAgICAgICAgICAgIGN1ciA9IG9z
LmVudmlyb24uZ2V0KCJQWVRIT05QQVRIIikKLSAgICAgICAgICAgIGlmIGN1cjoKLSAgICAgICAg
ICAgICAgICBkaXJzICs9IChjdXIsKQotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGhzZXAuam9p
bihzdHIocCkgZm9yIHAgaW4gZGlycykKLQotICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZ
VEhPTlBBVEgiLCBqb2luX3B5dGhvbnBhdGgoKnNlYXJjaF9wYXRoKSkKKyAgICAgICAgIyBOT1RF
OiB0aGUgZGlmZmVyZW50L3JldmVyc2VkIG9yZGVyaW5nIGlzIGludGVudGlvbmFsIGhlcmUuCisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlUSE9OUEFUSCIsIHByZXBlbmRfcHl0aG9ucGF0
aCgqc2VhcmNoX3BhdGgpKQogICAgICAgICBmb3IgcCBpbiBzZWFyY2hfcGF0aDoKICAgICAgICAg
ICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZChwKQogCiAgICAgICAgICMgbWl4ZWQgbW9k
dWxlIGFuZCBmaWxlbmFtZXM6Ci0gICAgICAgIG9zLmNoZGlyKCJ3b3JsZCIpCisgICAgICAgIG1v
bmtleXBhdGNoLmNoZGlyKCJ3b3JsZCIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItLXB5YXJncyIsICItdiIsICJuc19wa2cuaGVsbG8iLCAibnNfcGtnL3dvcmxkIikKICAg
ICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCiAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIip0ZXN0X2hlbGxvLnB5
Ojp0ZXN0X2hlbGxvKlBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF9oZWxsby5weTo6
dGVzdF9vdGhlcipQQVNTRUQqIiwKLSAgICAgICAgICAgICAgICAiKnRlc3Rfd29ybGQucHk6OnRl
c3Rfd29ybGQqUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0X3dvcmxkLnB5Ojp0ZXN0
X290aGVyKlBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqNCBwYXNzZWQqIiwKKyAgICAgICAg
ICAgICAgICAidGVzdF9oZWxsby5weTo6dGVzdF9oZWxsbypQQVNTRUQqIiwKKyAgICAgICAgICAg
ICAgICAidGVzdF9oZWxsby5weTo6dGVzdF9vdGhlcipQQVNTRUQqIiwKKyAgICAgICAgICAgICAg
ICAibnNfcGtnL3dvcmxkL3Rlc3Rfd29ybGQucHk6OnRlc3Rfd29ybGQqUEFTU0VEKiIsCisgICAg
ICAgICAgICAgICAgIm5zX3BrZy93b3JsZC90ZXN0X3dvcmxkLnB5Ojp0ZXN0X290aGVyKlBBU1NF
RCoiLAorICAgICAgICAgICAgICAgICIqNCBwYXNzZWQgaW4qIiwKICAgICAgICAgICAgIF0KICAg
ICAgICAgKQogCkBAIC02ODEsMjYgKzcyMiwyMyBAQCBjbGFzcyBUZXN0SW52b2NhdGlvblZhcmlh
bnRzKG9iamVjdCk6CiAgICAgICAgICAgICBbIip0ZXN0X3dvcmxkLnB5Ojp0ZXN0X290aGVyKlBB
U1NFRCoiLCAiKjEgcGFzc2VkKiJdCiAgICAgICAgICkKIAotICAgIEBweXRlc3QubWFyay5za2lw
aWYobm90IGhhc2F0dHIob3MsICJzeW1saW5rIiksIHJlYXNvbj0icmVxdWlyZXMgc3ltbGlua3Mi
KQorICAgIGRlZiB0ZXN0X2ludm9rZV90ZXN0X2FuZF9kb2N0ZXN0bW9kdWxlcyhzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIi
IgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0cihwKSAr
ICI6OnRlc3QiLCAiLS1kb2N0ZXN0LW1vZHVsZXMiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisKICAgICBkZWYgdGVzdF9jbWRsaW5lX3B5dGhv
bl9wYWNrYWdlX3N5bWxpbmsoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgogICAgICAgICAi
IiIKLSAgICAgICAgdGVzdCAtLXB5YXJncyBvcHRpb24gd2l0aCBwYWNrYWdlcyB3aXRoIHBhdGgg
Y29udGFpbmluZyBzeW1saW5rIGNhbgotICAgICAgICBoYXZlIGNvbmZ0ZXN0LnB5IGluIHRoZWly
IHBhY2thZ2UgKCMyOTg1KQorICAgICAgICAtLXB5YXJncyB3aXRoIHBhY2thZ2VzIHdpdGggcGF0
aCBjb250YWluaW5nIHN5bWxpbmsgY2FuIGhhdmUgY29uZnRlc3QucHkgaW4KKyAgICAgICAgdGhl
aXIgcGFja2FnZSAoIzI5ODUpCiAgICAgICAgICIiIgotICAgICAgICAjIGR1bW15IGNoZWNrIHRo
YXQgd2UgY2FuIGFjdHVhbGx5IGNyZWF0ZSBzeW1saW5rczogb24gV2luZG93cyBgb3Muc3ltbGlu
a2AgaXMgYXZhaWxhYmxlLAotICAgICAgICAjIGJ1dCBub3JtYWwgdXNlcnMgcmVxdWlyZSBzcGVj
aWFsIGFkbWluIHByaXZpbGVnZXMgdG8gY3JlYXRlIHN5bWxpbmtzLgotICAgICAgICBpZiBzeXMu
cGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBv
cy5zeW1saW5rKAotICAgICAgICAgICAgICAgICAgICBzdHIodGVzdGRpci50bXBkaXIuZW5zdXJl
KCJ0bXBmaWxlIikpLAotICAgICAgICAgICAgICAgICAgICBzdHIodGVzdGRpci50bXBkaXIuam9p
bigidG1wZmlsZTIiKSksCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgZXhjZXB0IE9T
RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBweXRlc3Quc2tpcChzaXgudGV4dF90eXBlKGUu
YXJnc1swXSkpCiAgICAgICAgIG1vbmtleXBhdGNoLmRlbGVudigiUFlUSE9ORE9OVFdSSVRFQllU
RUNPREUiLCByYWlzaW5nPUZhbHNlKQogCi0gICAgICAgIHNlYXJjaF9wYXRoID0gWyJsaWIiLCBv
cy5wYXRoLmpvaW4oImxvY2FsIiwgImxpYiIpXQotCiAgICAgICAgIGRpcm5hbWUgPSAibGliIgog
ICAgICAgICBkID0gdGVzdGRpci5ta2RpcihkaXJuYW1lKQogICAgICAgICBmb28gPSBkLm1rZGly
KCJmb28iKQpAQCAtNzA4LDIyICs3NDYsMTkgQEAgY2xhc3MgVGVzdEludm9jYXRpb25WYXJpYW50
cyhvYmplY3QpOgogICAgICAgICBsaWIgPSBmb28ubWtkaXIoImJhciIpCiAgICAgICAgIGxpYi5l
bnN1cmUoIl9faW5pdF9fLnB5IikKICAgICAgICAgbGliLmpvaW4oInRlc3RfYmFyLnB5Iikud3Jp
dGUoCi0gICAgICAgICAgICAiZGVmIHRlc3RfYmFyKCk6IHBhc3NcbiIgImRlZiB0ZXN0X290aGVy
KGFfZml4dHVyZSk6cGFzcyIKKyAgICAgICAgICAgICJkZWYgdGVzdF9iYXIoKTogcGFzc1xuZGVm
IHRlc3Rfb3RoZXIoYV9maXh0dXJlKTpwYXNzIgogICAgICAgICApCiAgICAgICAgIGxpYi5qb2lu
KCJjb25mdGVzdC5weSIpLndyaXRlKAotICAgICAgICAgICAgImltcG9ydCBweXRlc3RcbiIgIkBw
eXRlc3QuZml4dHVyZVxuIiAiZGVmIGFfZml4dHVyZSgpOnBhc3MiCisgICAgICAgICAgICAiaW1w
b3J0IHB5dGVzdFxuQHB5dGVzdC5maXh0dXJlXG5kZWYgYV9maXh0dXJlKCk6cGFzcyIKICAgICAg
ICAgKQogCi0gICAgICAgIGRfbG9jYWwgPSB0ZXN0ZGlyLm1rZGlyKCJsb2NhbCIpCi0gICAgICAg
IHN5bWxpbmtfbG9jYXRpb24gPSBvcy5wYXRoLmpvaW4oc3RyKGRfbG9jYWwpLCAibGliIikKLSAg
ICAgICAgaWYgc2l4LlBZMjoKLSAgICAgICAgICAgIG9zLnN5bWxpbmsoc3RyKGQpLCBzeW1saW5r
X2xvY2F0aW9uKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Muc3ltbGluayhzdHIoZCks
IHN5bWxpbmtfbG9jYXRpb24sIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgZF9s
b2NhbCA9IHRlc3RkaXIubWtkaXIoInN5bWxpbmtfcm9vdCIpCisgICAgICAgIHN5bWxpbmtfbG9j
YXRpb24gPSBkX2xvY2FsIC8gImxpYiIKKyAgICAgICAgc3ltbGlua19vcl9za2lwKGQsIHN5bWxp
bmtfbG9jYXRpb24sIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKIAogICAgICAgICAjIFRoZSBz
dHJ1Y3R1cmUgb2YgdGhlIHRlc3QgZGlyZWN0b3J5IGlzIG5vdzoKICAgICAgICAgIyAuCi0gICAg
ICAgICMg4pSc4pSA4pSAIGxvY2FsCisgICAgICAgICMg4pSc4pSA4pSAIHN5bWxpbmtfcm9vdAog
ICAgICAgICAjIOKUgiAgIOKUlOKUgOKUgCBsaWIgLT4gLi4vbGliCiAgICAgICAgICMg4pSU4pSA
4pSAIGxpYgogICAgICAgICAjICAgICDilJTilIDilIAgZm9vCkBAIC03MzMsMjQgKzc2OCwyMSBA
QCBjbGFzcyBUZXN0SW52b2NhdGlvblZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAgICMgICAgICAg
ICAgICAg4pSc4pSA4pSAIGNvbmZ0ZXN0LnB5CiAgICAgICAgICMgICAgICAgICAgICAg4pSU4pSA
4pSAIHRlc3RfYmFyLnB5CiAKLSAgICAgICAgZGVmIGpvaW5fcHl0aG9ucGF0aCgqZGlycyk6Ci0g
ICAgICAgICAgICBjdXIgPSBvcy5nZXRlbnYoIlBZVEhPTlBBVEgiKQotICAgICAgICAgICAgaWYg
Y3VyOgotICAgICAgICAgICAgICAgIGRpcnMgKz0gKGN1ciwpCi0gICAgICAgICAgICByZXR1cm4g
b3MucGF0aHNlcC5qb2luKHN0cihwKSBmb3IgcCBpbiBkaXJzKQotCi0gICAgICAgIG1vbmtleXBh
dGNoLnNldGVudigiUFlUSE9OUEFUSCIsIGpvaW5fcHl0aG9ucGF0aCgqc2VhcmNoX3BhdGgpKQor
ICAgICAgICAjIE5PVEU6IHRoZSBkaWZmZXJlbnQvcmV2ZXJzZWQgb3JkZXJpbmcgaXMgaW50ZW50
aW9uYWwgaGVyZS4KKyAgICAgICAgc2VhcmNoX3BhdGggPSBbImxpYiIsIG9zLnBhdGguam9pbigi
c3ltbGlua19yb290IiwgImxpYiIpXQorICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEhP
TlBBVEgiLCBwcmVwZW5kX3B5dGhvbnBhdGgoKnNlYXJjaF9wYXRoKSkKICAgICAgICAgZm9yIHAg
aW4gc2VhcmNoX3BhdGg6CiAgICAgICAgICAgICBtb25rZXlwYXRjaC5zeXNwYXRoX3ByZXBlbmQo
cCkKIAogICAgICAgICAjIG1vZHVsZSBwaWNrZWQgdXAgaW4gc3ltbGluay1lZCBkaXJlY3Rvcnk6
CisgICAgICAgICMgSXQgcGlja3MgdXAgc3ltbGlua19yb290L2xpYi9mb28vYmFyIChzeW1saW5r
KSB2aWEgc3lzLnBhdGguCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXB5
YXJncyIsICItdiIsICJmb28uYmFyIikKICAgICAgICAgdGVzdGRpci5jaGRpcigpCiAgICAgICAg
IGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqbGliL2Zvby9iYXIvdGVzdF9i
YXIucHk6OnRlc3RfYmFyKlBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqbGliL2Zvby9iYXIv
dGVzdF9iYXIucHk6OnRlc3Rfb3RoZXIqUEFTU0VEKiIsCisgICAgICAgICAgICAgICAgInN5bWxp
bmtfcm9vdC9saWIvZm9vL2Jhci90ZXN0X2Jhci5weTo6dGVzdF9iYXIgUEFTU0VEKiIsCisgICAg
ICAgICAgICAgICAgInN5bWxpbmtfcm9vdC9saWIvZm9vL2Jhci90ZXN0X2Jhci5weTo6dGVzdF9v
dGhlciBQQVNTRUQqIiwKICAgICAgICAgICAgICAgICAiKjIgcGFzc2VkKiIsCiAgICAgICAgICAg
ICBdCiAgICAgICAgICkKQEAgLTc1OCw3ICs3OTAsNyBAQCBjbGFzcyBUZXN0SW52b2NhdGlvblZh
cmlhbnRzKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfY21kbGluZV9weXRob25fcGFja2FnZV9ub3Rf
ZXhpc3RzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1weWFyZ3MiLCAidHBrZ3doYXR2IikKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQKLSAg
ICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiRVJST1IqZmlsZSpvcipwYWNrYWdl
Km5vdCpmb3VuZCoiXSkKKyAgICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiRVJS
T1IqbW9kdWxlKm9yKnBhY2thZ2Uqbm90KmZvdW5kKiJdKQogCiAgICAgQHB5dGVzdC5tYXJrLnhm
YWlsKHJlYXNvbj0iZGVjaWRlOiBmZWF0dXJlIG9yIGJ1ZyIpCiAgICAgZGVmIHRlc3Rfbm9jbGFz
c19kaXNjb3ZlcnlfaWZfbm90X3Rlc3RjYXNlKHNlbGYsIHRlc3RkaXIpOgpAQCAtNzg1LDExMyAr
ODE3LDE0NSBAQCBjbGFzcyBUZXN0SW52b2NhdGlvblZhcmlhbnRzKG9iamVjdCk6CiAgICAgICAg
ICAgICA0CiAgICAgICAgICIiIiwKICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLXJmIikKLSAgICAgICAgbGluZXMgPSByZXN1bHQuc3Rkb3V0LnN0cigpLnNw
bGl0bGluZXMoKQotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGlmIGxp
bmUuc3RhcnRzd2l0aCgiRkFJTCAiKToKLSAgICAgICAgICAgICAgICB0ZXN0aWQgPSBsaW5lWzU6
XS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QodGVzdGlkLCAiLXJmIikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFtsaW5lLCAiKjEgZmFpbGVkKiJdKQorICAgICAgICB0ZXN0aWQgPSAidGVzdF9kb2N0
ZXN0X2lkLnR4dDo6dGVzdF9kb2N0ZXN0X2lkLnR4dCIKKyAgICAgICAgZXhwZWN0ZWRfbGluZXMg
PSBbCisgICAgICAgICAgICAiKj0gRkFJTFVSRVMgPSoiLAorICAgICAgICAgICAgIipfID9kb2N0
ZXN0PyB0ZXN0X2RvY3Rlc3RfaWQudHh0IF8qIiwKKyAgICAgICAgICAgICJGQUlMRUQgdGVzdF9k
b2N0ZXN0X2lkLnR4dDo6dGVzdF9kb2N0ZXN0X2lkLnR4dCIsCisgICAgICAgICAgICAiKj0gMSBm
YWlsZWQgaW4qIiwKKyAgICAgICAgXQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCh0ZXN0aWQsICItcmYiLCAiLS10Yj1zaG9ydCIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhleHBlY3RlZF9saW5lcykKKworICAgICAgICAjIEVuc3VyZSB0aGF0IHJlLXJ1
bm5pbmcgaXQgd2lsbCBzdGlsbCBoYW5kbGUgaXQgYXMKKyAgICAgICAgIyBkb2N0ZXN0LkRvY1Rl
c3RGYWlsdXJlLCB3aGljaCB3YXMgbm90IHRoZSBjYXNlIGJlZm9yZSB3aGVuCisgICAgICAgICMg
cmUtaW1wb3J0aW5nIGRvY3Rlc3QsIGJ1dCBub3QgY3JlYXRpbmcgYSBuZXcgUlVOTkVSX0NMQVNT
LgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCh0ZXN0aWQsICItcmYiLCAiLS10
Yj1zaG9ydCIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhleHBlY3RlZF9s
aW5lcykKIAogICAgIGRlZiB0ZXN0X2NvcmVfYmFja3dhcmRfY29tcGF0aWJpbGl0eShzZWxmKToK
ICAgICAgICAgIiIiVGVzdCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBnZXRfcGx1Z2luX21h
bmFnZXIgZnVuY3Rpb24uIFNlZSAjNzg3LiIiIgogICAgICAgICBpbXBvcnQgX3B5dGVzdC5jb25m
aWcKIAotICAgICAgICBhc3NlcnQgdHlwZSgKLSAgICAgICAgICAgIF9weXRlc3QuY29uZmlnLmdl
dF9wbHVnaW5fbWFuYWdlcigpCi0gICAgICAgICkgaXMgX3B5dGVzdC5jb25maWcuUHl0ZXN0UGx1
Z2luTWFuYWdlcgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgdHlwZShfcHl0ZXN0LmNv
bmZpZy5nZXRfcGx1Z2luX21hbmFnZXIoKSkKKyAgICAgICAgICAgIGlzIF9weXRlc3QuY29uZmln
LlB5dGVzdFBsdWdpbk1hbmFnZXIKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfaGFzX3BsdWdp
bihzZWxmLCByZXF1ZXN0KToKICAgICAgICAgIiIiVGVzdCBoYXNwbHVnaW4gZnVuY3Rpb24gb2Yg
dGhlIHBsdWdpbiBtYW5hZ2VyICgjOTMyKS4iIiIKICAgICAgICAgYXNzZXJ0IHJlcXVlc3QuY29u
ZmlnLnBsdWdpbm1hbmFnZXIuaGFzcGx1Z2luKCJweXRob24iKQogCiAKLWNsYXNzIFRlc3REdXJh
dGlvbnMob2JqZWN0KToKK2NsYXNzIFRlc3REdXJhdGlvbnM6CiAgICAgc291cmNlID0gIiIiCi0g
ICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgIGZyYWcgPSAwLjAwMgorICAgICAgICBmcm9tIF9w
eXRlc3QgaW1wb3J0IHRpbWluZwogICAgICAgICBkZWYgdGVzdF9zb21ldGhpbmcoKToKICAgICAg
ICAgICAgIHBhc3MKICAgICAgICAgZGVmIHRlc3RfMigpOgotICAgICAgICAgICAgdGltZS5zbGVl
cChmcmFnKjUpCisgICAgICAgICAgICB0aW1pbmcuc2xlZXAoMC4wMTApCiAgICAgICAgIGRlZiB0
ZXN0XzEoKToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoZnJhZykKKyAgICAgICAgICAgIHRpbWlu
Zy5zbGVlcCgwLjAwMikKICAgICAgICAgZGVmIHRlc3RfMygpOgotICAgICAgICAgICAgdGltZS5z
bGVlcChmcmFnKjEwKQorICAgICAgICAgICAgdGltaW5nLnNsZWVwKDAuMDIwKQogICAgICIiIgog
Ci0gICAgZGVmIHRlc3RfY2FsbHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfY2FsbHMo
c2VsZiwgdGVzdGRpciwgbW9ja190aW1pbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
c2VsZi5zb3VyY2UpCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWR1cmF0
aW9ucz0xMCIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2Vzcygi
LS1kdXJhdGlvbnM9MTAiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKICAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzX3JhbmRvbSgKLSAgICAgICAgICAgIFsiKmR1
cmF0aW9ucyoiLCAiKmNhbGwqdGVzdF8zKiIsICIqY2FsbCp0ZXN0XzIqIiwgIipjYWxsKnRlc3Rf
MSoiXQorICAgICAgICAgICAgWyIqZHVyYXRpb25zKiIsICIqY2FsbCp0ZXN0XzMqIiwgIipjYWxs
KnRlc3RfMioiXQorICAgICAgICApCisKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICAgICAgWyIoOCBkdXJhdGlvbnMgPCAwLjAwNXMgaGlkZGVuLiAgVXNlIC12
diB0byBzaG93IHRoZXNlIGR1cmF0aW9ucy4pIl0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3Rf
Y2FsbHNfc2hvd18yKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2NhbGxzX3Nob3dfMihz
ZWxmLCB0ZXN0ZGlyLCBtb2NrX3RpbWluZyk6CisKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KHNlbGYuc291cmNlKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1kdXJh
dGlvbnM9MiIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2Vzcygi
LS1kdXJhdGlvbnM9MiIpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKwogICAgICAg
ICBsaW5lcyA9IHJlc3VsdC5zdGRvdXQuZ2V0X2xpbmVzX2FmdGVyKCIqc2xvd2VzdCpkdXJhdGlv
bnMqIikKICAgICAgICAgYXNzZXJ0ICI0IHBhc3NlZCIgaW4gbGluZXNbMl0KIAotICAgIGRlZiB0
ZXN0X2NhbGxzX3Nob3dhbGwoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfY2FsbHNfc2hv
d2FsbChzZWxmLCB0ZXN0ZGlyLCBtb2NrX3RpbWluZyk6CisgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZShzZWxmLnNvdXJjZSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5w
cm9jZXNzKCItLWR1cmF0aW9ucz0wIikKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAor
CisgICAgICAgIHRlc3RlZCA9ICIzIgorICAgICAgICBmb3IgeCBpbiB0ZXN0ZWQ6CisgICAgICAg
ICAgICBmb3IgeSBpbiAoImNhbGwiLCk6ICAjICdzZXR1cCcsICdjYWxsJywgJ3RlYXJkb3duJzoK
KyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQuc3Rkb3V0LmxpbmVzOgorICAgICAg
ICAgICAgICAgICAgICBpZiAoInRlc3RfJXMiICUgeCkgaW4gbGluZSBhbmQgeSBpbiBsaW5lOgor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigibm90IGZvdW5kIHt9IHt9Ii5m
b3JtYXQoeCwgeSkpCisKKyAgICBkZWYgdGVzdF9jYWxsc19zaG93YWxsX3ZlcmJvc2Uoc2VsZiwg
dGVzdGRpciwgbW9ja190aW1pbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoc2VsZi5z
b3VyY2UpCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWR1cmF0aW9ucz0w
IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLWR1cmF0
aW9ucz0wIiwgIi12diIpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKwogICAgICAg
ICBmb3IgeCBpbiAiMTIzIjoKICAgICAgICAgICAgIGZvciB5IGluICgiY2FsbCIsKTogICMgJ3Nl
dHVwJywgJ2NhbGwnLCAndGVhcmRvd24nOgogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHJl
c3VsdC5zdGRvdXQubGluZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmICgidGVzdF8lcyIgJSB4
KSBpbiBsaW5lIGFuZCB5IGluIGxpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawog
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlv
bkVycm9yKCJub3QgZm91bmQgJXMgJXMiICUgKHgsIHkpKQorICAgICAgICAgICAgICAgICAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcigibm90IGZvdW5kIHt9IHt9Ii5mb3JtYXQoeCwgeSkpCiAKLSAg
ICBkZWYgdGVzdF93aXRoX2Rlc2VsZWN0ZWQoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rf
d2l0aF9kZXNlbGVjdGVkKHNlbGYsIHRlc3RkaXIsIG1vY2tfdGltaW5nKToKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKHNlbGYuc291cmNlKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLS1kdXJhdGlvbnM9MiIsICItayB0ZXN0XzEiKQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tZHVyYXRpb25zPTIiLCAiLWsgdGVzdF8zIikK
ICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAotICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqZHVyYXRpb25zKiIsICIqY2FsbCp0ZXN0XzEqIl0pCiAKLSAgICBkZWYg
dGVzdF93aXRoX2ZhaWxpbmdfY29sbGVjdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmR1cmF0aW9ucyoiLCAiKmNhbGwqdGVzdF8zKiJd
KQorCisgICAgZGVmIHRlc3Rfd2l0aF9mYWlsaW5nX2NvbGxlY3Rpb24oc2VsZiwgdGVzdGRpciwg
bW9ja190aW1pbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoc2VsZi5zb3VyY2UpCiAg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2NvbGxlY3RlcnJvcj0iIiJ4eXoiIiIpCi0g
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWR1cmF0aW9ucz0yIiwgIi1rIHRl
c3RfMSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygiLS1k
dXJhdGlvbnM9MiIsICItayB0ZXN0XzEiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAy
Ci0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipJbnRlcnJ1cHRlZDogMSBl
cnJvcnMgZHVyaW5nIGNvbGxlY3Rpb24qIl0pCisKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiKkludGVycnVwdGVkOiAxIGVycm9yIGR1cmluZyBjb2xsZWN0aW9uKiJdKQog
ICAgICAgICAjIENvbGxlY3Rpb24gZXJyb3JzIGFib3J0IHRlc3QgZXhlY3V0aW9uLCB0aGVyZWZv
cmUgbm8gZHVyYXRpb24gaXMKICAgICAgICAgIyBvdXRwdXQKLSAgICAgICAgYXNzZXJ0ICJkdXJh
dGlvbiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5u
b19mbm1hdGNoX2xpbmUoIipkdXJhdGlvbioiKQogCi0gICAgZGVmIHRlc3Rfd2l0aF9ub3Qoc2Vs
ZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfd2l0aF9ub3Qoc2VsZiwgdGVzdGRpciwgbW9ja190
aW1pbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoc2VsZi5zb3VyY2UpCi0gICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItayBub3QgMSIpCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygiLWsgbm90IDEiKQogICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAwCiAKIAotY2xhc3MgVGVzdER1cmF0aW9uV2l0aEZpeHR1cmUob2JqZWN0
KToKK2NsYXNzIFRlc3REdXJhdGlvbnNXaXRoRml4dHVyZToKICAgICBzb3VyY2UgPSAiIiIKLSAg
ICAgICAgaW1wb3J0IHRpbWUKLSAgICAgICAgZnJhZyA9IDAuMDAxCi0gICAgICAgIGRlZiBzZXR1
cF9mdW5jdGlvbihmdW5jKToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoZnJhZyAqIDMpCi0gICAg
ICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoZnJhZyoyKQotICAgICAg
ICBkZWYgdGVzdF8yKCk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKGZyYWcpCisgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCB0aW1pbmcKKworICAgICAg
ICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIHNldHVwX2ZpeHQoKToKKyAgICAgICAgICAg
IHRpbWluZy5zbGVlcCgyKQorCisgICAgICAgIGRlZiB0ZXN0XzEoc2V0dXBfZml4dCk6CisgICAg
ICAgICAgICB0aW1pbmcuc2xlZXAoNSkKICAgICAiIiIKIAotICAgIGRlZiB0ZXN0X3NldHVwX2Z1
bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3NldHVwX2Z1bmN0aW9uKHNlbGYs
IHRlc3RkaXIsIG1vY2tfdGltaW5nKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKHNlbGYu
c291cmNlKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1kdXJhdGlvbnM9
MTAiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tZHVy
YXRpb25zPTEwIikKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lc19yYW5kb20oCiAgICAgICAgICAgICAiIiIKICAgICAg
ICAgICAgICpkdXJhdGlvbnMqCi0gICAgICAgICAgICAqIHNldHVwICp0ZXN0XzEqCi0gICAgICAg
ICAgICAqIGNhbGwgKnRlc3RfMSoKKyAgICAgICAgICAgIDUuMDBzIGNhbGwgKnRlc3RfMSoKKyAg
ICAgICAgICAgIDIuMDBzIHNldHVwICp0ZXN0XzEqCiAgICAgICAgICIiIgogICAgICAgICApCiAK
QEAgLTkwNSw3ICs5NjksNyBAQCBkZWYgdGVzdF96aXBpbXBvcnRfaG9vayh0ZXN0ZGlyLCB0bXBk
aXIpOgogICAgICAgICAgICAgImFwcC9mb28ucHkiOiAiIiIKICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKICAgICAgICAgICAgIGRlZiBtYWluKCk6Ci0gICAgICAgICAgICAgICAgcHl0ZXN0Lm1h
aW4oWyctLXB5YXJnJywgJ2ZvbyddKQorICAgICAgICAgICAgICAgIHB5dGVzdC5tYWluKFsnLS1w
eWFyZ3MnLCAnZm9vJ10pCiAgICAgICAgICIiIgogICAgICAgICB9CiAgICAgKQpAQCAtOTE0LDI5
ICs5NzgsMzMgQEAgZGVmIHRlc3RfemlwaW1wb3J0X2hvb2sodGVzdGRpciwgdG1wZGlyKToKICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGhvbih0YXJnZXQpCiAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMAogICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipub3QgZm91bmQqZm9v
KiJdKQotICAgIGFzc2VydCAiSU5URVJOQUxFUlJPUj4iIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipJTlRFUk5BTEVSUk9SPioi
KQogCiAKIGRlZiB0ZXN0X2ltcG9ydF9wbHVnaW5fdW5pY29kZV9uYW1lKHRlc3RkaXIpOgogICAg
IHRlc3RkaXIubWFrZXB5ZmlsZShteXBsdWdpbj0iIikKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
Ci0gICAgICAgICIiIgotICAgICAgICBkZWYgdGVzdCgpOiBwYXNzCi0gICAgIiIiCi0gICAgKQot
ICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAiIiIKLSAgICAgICAgcHl0ZXN0X3Bs
dWdpbnMgPSBbdSdteXBsdWdpbiddCi0gICAgIiIiCi0gICAgKQorICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgiZGVmIHRlc3QoKTogcGFzcyIpCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoInB5dGVz
dF9wbHVnaW5zID0gWydteXBsdWdpbiddIikKICAgICByID0gdGVzdGRpci5ydW5weXRlc3QoKQog
ICAgIGFzc2VydCByLnJldCA9PSAwCiAKIAorZGVmIHRlc3RfcHl0ZXN0X3BsdWdpbnNfYXNfbW9k
dWxlKHRlc3RkaXIpOgorICAgICIiIkRvIG5vdCByYWlzZSBhbiBlcnJvciBpZiBweXRlc3RfcGx1
Z2lucyBhdHRyaWJ1dGUgaXMgYSBtb2R1bGUgKCMzODk5KSIiIgorICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgKip7CisgICAgICAgICAgICAiX19pbml0X18ucHkiOiAiIiwKKyAgICAg
ICAgICAgICJweXRlc3RfcGx1Z2lucy5weSI6ICIiLAorICAgICAgICAgICAgImNvbmZ0ZXN0LnB5
IjogImZyb20gLiBpbXBvcnQgcHl0ZXN0X3BsdWdpbnMiLAorICAgICAgICAgICAgInRlc3RfZm9v
LnB5IjogImRlZiB0ZXN0KCk6IHBhc3MiLAorICAgICAgICB9CisgICAgKQorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
IDEgcGFzc2VkIGluICoiXSkKKworCiBkZWYgdGVzdF9kZWZlcnJlZF9ob29rX2NoZWNraW5nKHRl
c3RkaXIpOgotICAgICIiIgotICAgIENoZWNrIGhvb2tzIGFzIGxhdGUgYXMgcG9zc2libGUgKCMx
ODIxKS4KLSAgICAiIiIKKyAgICAiIiJDaGVjayBob29rcyBhcyBsYXRlIGFzIHBvc3NpYmxlICgj
MTgyMSkuIiIiCiAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkKICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICoqewpAQCAtMTAwNCwxMyArMTA3MiwxNSBAQCBkZWYgdGVzdF9maXh0
dXJlX3ZhbHVlc19sZWFrKHRlc3RkaXIpOgogICAgICAgICAgICAgYXNzZXJ0IGZpeF9vZl90ZXN0
MV9yZWYoKSBpcyBOb25lCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKKyAgICAjIFJ1bm5pbmcgb24gc3VicHJvY2VzcyBkb2VzIG5vdCBhY3RpdmF0ZSB0
aGUgSG9va1JlY29yZGVyCisgICAgIyB3aGljaCBob2xkcyBpdHNlbGYgYSByZWZlcmVuY2UgdG8g
b2JqZWN0cyBpbiBjYXNlIG9mIHRoZQorICAgICMgcHl0ZXN0X2Fzc2VydF9yZXByY29tcGFyZSBo
b29rCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCiAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAyIHBhc3NlZCAqIl0pCiAKIAogZGVmIHRlc3Rf
Zml4dHVyZV9vcmRlcl9yZXNwZWN0c19zY29wZSh0ZXN0ZGlyKToKLSAgICAiIiJFbnN1cmUgdGhh
dCBmaXh0dXJlcyBhcmUgY3JlYXRlZCBhY2NvcmRpbmcgdG8gc2NvcGUgb3JkZXIsIHJlZ3Jlc3Np
b24gdGVzdCBmb3IgIzI0MDUKLSAgICAiIiIKKyAgICAiIiJFbnN1cmUgdGhhdCBmaXh0dXJlcyBh
cmUgY3JlYXRlZCBhY2NvcmRpbmcgdG8gc2NvcGUgb3JkZXIgKCMyNDA1KS4iIiIKICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0x
MDM1LDcgKzExMDUsOCBAQCBkZWYgdGVzdF9maXh0dXJlX29yZGVyX3Jlc3BlY3RzX3Njb3BlKHRl
c3RkaXIpOgogCiAKIGRlZiB0ZXN0X2ZyYW1lX2xlYWtfb25fZmFpbGluZ190ZXN0KHRlc3RkaXIp
OgotICAgICIiInB5dGVzdCB3b3VsZCBsZWFrIGdhcmJhZ2UgcmVmZXJlbmNpbmcgdGhlIGZyYW1l
cyBvZiB0ZXN0cyB0aGF0IGZhaWxlZCB0aGF0IGNvdWxkIG5ldmVyIGJlIHJlY2xhaW1lZCAoIzI3
OTgpCisgICAgIiIiUHl0ZXN0IHdvdWxkIGxlYWsgZ2FyYmFnZSByZWZlcmVuY2luZyB0aGUgZnJh
bWVzIG9mIHRlc3RzIHRoYXQgZmFpbGVkCisgICAgdGhhdCBjb3VsZCBuZXZlciBiZSByZWNsYWlt
ZWQgKCMyNzk4KS4KIAogICAgIFVuZm9ydHVuYXRlbHkgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBy
ZW1vdmUgdGhlIGFjdHVhbCBjaXJjbGVzIGJlY2F1c2UgbW9zdCBvZiB0aGVtCiAgICAgYXJlIG1h
ZGUgb2YgdHJhY2ViYWNrIG9iamVjdHMgd2hpY2ggY2Fubm90IGJlIHdlYWtseSByZWZlcmVuY2Vk
LiBUaG9zZSBvYmplY3RzIGF0IGxlYXN0CkBAIC0xMDY0LDMgKzExMzUsMTYyIEBAIGRlZiB0ZXN0
X2ZyYW1lX2xlYWtfb25fZmFpbGluZ190ZXN0KHRlc3RkaXIpOgogICAgICkKICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqMSBmYWlsZWQsIDEgcGFzc2VkIGluKiJdKQorCisKK2RlZiB0ZXN0X2ZpeHR1
cmVfbW9ja19pbnRlZ3JhdGlvbih0ZXN0ZGlyKToKKyAgICAiIiJUZXN0IHRoYXQgZGVjb3JhdG9y
cyBhcHBsaWVkIHRvIGZpeHR1cmUgYXJlIGxlZnQgd29ya2luZyAoIzM3NzQpIiIiCisgICAgcCA9
IHRlc3RkaXIuY29weV9leGFtcGxlKCJhY2NlcHRhbmNlL2ZpeHR1cmVfbW9ja19pbnRlZ3JhdGlv
bi5weSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKKyAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisKKworZGVmIHRlc3RfdXNhZ2VfZXJy
b3JfY29kZSh0ZXN0ZGlyKToKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXVua25v
d24tb3B0aW9uLSIpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuVVNBR0VfRVJS
T1IKKworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorZGVmIHRlc3Rf
d2Fybl9vbl9hc3luY19mdW5jdGlvbih0ZXN0ZGlyKToKKyAgICAjIEluIHRoZSBiZWxvdyB3ZSAu
Y2xvc2UoKSB0aGUgY29yb3V0aW5lIG9ubHkgdG8gYXZvaWQKKyAgICAjICJSdW50aW1lV2Fybmlu
ZzogY29yb3V0aW5lICd0ZXN0XzInIHdhcyBuZXZlciBhd2FpdGVkIgorICAgICMgd2hpY2ggbWVz
c2VzIHdpdGggb3RoZXIgdGVzdHMuCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICB0
ZXN0X2FzeW5jPSIiIgorICAgICAgICBhc3luYyBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICBw
YXNzCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0XzIoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgZGVmIHRlc3RfMygpOgorICAgICAgICAgICAgY29ybyA9IHRlc3RfMigpCisgICAgICAgICAg
ICBjb3JvLmNsb3NlKCkKKyAgICAgICAgICAgIHJldHVybiBjb3JvCisgICAgIiIiCisgICAgKQor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICJ0ZXN0X2FzeW5jLnB5Ojp0ZXN0XzEi
LAorICAgICAgICAgICAgInRlc3RfYXN5bmMucHk6OnRlc3RfMiIsCisgICAgICAgICAgICAidGVz
dF9hc3luYy5weTo6dGVzdF8zIiwKKyAgICAgICAgICAgICIqYXN5bmMgZGVmIGZ1bmN0aW9ucyBh
cmUgbm90IG5hdGl2ZWx5IHN1cHBvcnRlZCoiLAorICAgICAgICAgICAgIiozIHNraXBwZWQsIDMg
d2FybmluZ3MgaW4qIiwKKyAgICAgICAgXQorICAgICkKKyAgICAjIGVuc3VyZSBvdXIgd2Fybmlu
ZyBtZXNzYWdlIGFwcGVhcnMgb25seSBvbmNlCisgICAgYXNzZXJ0ICgKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5zdHIoKS5jb3VudCgiYXN5bmMgZGVmIGZ1bmN0aW9ucyBhcmUgbm90IG5hdGl2ZWx5
IHN1cHBvcnRlZCIpID09IDEKKyAgICApCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdz
KCJkZWZhdWx0IikKK0BweXRlc3QubWFyay5za2lwaWYoCisgICAgc3lzLnZlcnNpb25faW5mbyA8
ICgzLCA2KSwgcmVhc29uPSJhc3luYyBnZW4gc3ludGF4IGF2YWlsYWJsZSBpbiBQeXRob24gMy42
KyIKKykKK2RlZiB0ZXN0X3dhcm5fb25fYXN5bmNfZ2VuX2Z1bmN0aW9uKHRlc3RkaXIpOgorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgdGVzdF9hc3luYz0iIiIKKyAgICAgICAgYXN5
bmMgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgYXN5bmMgZGVmIHRl
c3RfMigpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZGVmIHRlc3RfMygpOgorICAgICAg
ICAgICAgcmV0dXJuIHRlc3RfMigpCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAg
IFsKKyAgICAgICAgICAgICJ0ZXN0X2FzeW5jLnB5Ojp0ZXN0XzEiLAorICAgICAgICAgICAgInRl
c3RfYXN5bmMucHk6OnRlc3RfMiIsCisgICAgICAgICAgICAidGVzdF9hc3luYy5weTo6dGVzdF8z
IiwKKyAgICAgICAgICAgICIqYXN5bmMgZGVmIGZ1bmN0aW9ucyBhcmUgbm90IG5hdGl2ZWx5IHN1
cHBvcnRlZCoiLAorICAgICAgICAgICAgIiozIHNraXBwZWQsIDMgd2FybmluZ3MgaW4qIiwKKyAg
ICAgICAgXQorICAgICkKKyAgICAjIGVuc3VyZSBvdXIgd2FybmluZyBtZXNzYWdlIGFwcGVhcnMg
b25seSBvbmNlCisgICAgYXNzZXJ0ICgKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5zdHIoKS5jb3Vu
dCgiYXN5bmMgZGVmIGZ1bmN0aW9ucyBhcmUgbm90IG5hdGl2ZWx5IHN1cHBvcnRlZCIpID09IDEK
KyAgICApCisKKworZGVmIHRlc3RfcGRiX2Nhbl9iZV9yZXdyaXR0ZW4odGVzdGRpcik6CisgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAqKnsKKyAgICAgICAgICAgICJjb25mdGVzdC5w
eSI6ICIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBw
eXRlc3QucmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGUoInBkYiIpCisgICAgICAgICAgICAgICAgIiIi
LAorICAgICAgICAgICAgIl9faW5pdF9fLnB5IjogIiIsCisgICAgICAgICAgICAicGRiLnB5Ijog
IiIiCisgICAgICAgICAgICAgICAgZGVmIGNoZWNrKCk6CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydCAxID09IDIKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAidGVzdF9wZGIu
cHkiOiAiIiIKKyAgICAgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgICAg
ICBpbXBvcnQgcGRiCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwZGIuY2hlY2soKQorICAg
ICAgICAgICAgICAgICIiIiwKKyAgICAgICAgfQorICAgICkKKyAgICAjIERpc2FibGUgZGVidWdn
aW5nIHBsdWdpbiBpdHNlbGYgdG8gYXZvaWQ6CisgICAgIyA+IElOVEVSTkFMRVJST1I+IEF0dHJp
YnV0ZUVycm9yOiBtb2R1bGUgJ3BkYicgaGFzIG5vIGF0dHJpYnV0ZSAnc2V0X3RyYWNlJworICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi1wIiwgIm5vOmRlYnVnZ2lu
ZyIsICItdnYiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWwor
ICAgICAgICAgICAgIiAgICBkZWYgY2hlY2soKToiLAorICAgICAgICAgICAgIj4gICAgICAgYXNz
ZXJ0IDEgPT0gMiIsCisgICAgICAgICAgICAiRSAgICAgICBhc3NlcnQgMSA9PSAyIiwKKyAgICAg
ICAgICAgICJFICAgICAgICAgKzEiLAorICAgICAgICAgICAgIkUgICAgICAgICAtMiIsCisgICAg
ICAgICAgICAiIiwKKyAgICAgICAgICAgICJwZGIucHk6MjogQXNzZXJ0aW9uRXJyb3IiLAorICAg
ICAgICAgICAgIio9IDEgZmFpbGVkIGluICoiLAorICAgICAgICBdCisgICAgKQorICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IDEKKworCitkZWYgdGVzdF90ZWVfc3RkaW9fY2FwdHVyZXNfYW5kX2xp
dmVfcHJpbnRzKHRlc3RkaXIpOgorICAgIHRlc3RwYXRoID0gdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHN5cworICAgICAgICBkZWYgdGVzdF9zaW1wbGUo
KToKKyAgICAgICAgICAgIHByaW50ICgiQHRoaXMgaXMgc3Rkb3V0QCIpCisgICAgICAgICAgICBw
cmludCAoIkB0aGlzIGlzIHN0ZGVyckAiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgIiIiCisgICAg
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoCisgICAgICAgIHRl
c3RwYXRoLAorICAgICAgICAiLS1jYXB0dXJlPXRlZS1zeXMiLAorICAgICAgICAiLS1qdW5pdHht
bD1vdXRwdXQueG1sIiwKKyAgICAgICAgIi1vIiwKKyAgICAgICAgImp1bml0X2xvZ2dpbmc9YWxs
IiwKKyAgICApCisKKyAgICAjIGVuc3VyZSBzdGRvdXQvc3RkZXJyIHdlcmUgJ2xpdmUgcHJpbnRl
ZCcKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqQHRoaXMgaXMgc3Rkb3V0QCoi
XSkKKyAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyIqQHRoaXMgaXMgc3RkZXJyQCoi
XSkKKworICAgICMgbm93IGVuc3VyZSB0aGUgb3V0cHV0IGlzIGluIHRoZSBqdW5pdHhtbAorICAg
IHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVzdGRpci50bXBkaXIuc3RycGF0aCwgIm91dHB1dC54
bWwiKSkgYXMgZjoKKyAgICAgICAgZnVsbFhtbCA9IGYucmVhZCgpCisgICAgYXNzZXJ0ICJAdGhp
cyBpcyBzdGRvdXRAXG4iIGluIGZ1bGxYbWwKKyAgICBhc3NlcnQgIkB0aGlzIGlzIHN0ZGVyckBc
biIgaW4gZnVsbFhtbAorCisKK0BweXRlc3QubWFyay5za2lwaWYoCisgICAgc3lzLnBsYXRmb3Jt
ID09ICJ3aW4zMiIsCisgICAgcmVhc29uPSJXaW5kb3dzIHJhaXNlcyBgT1NFcnJvcjogW0Vycm5v
IDIyXSBJbnZhbGlkIGFyZ3VtZW50YCBpbnN0ZWFkIiwKKykKK2RlZiB0ZXN0X25vX2Jyb2tlbnBp
cGVlcnJvcl9tZXNzYWdlKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiRW5zdXJl
IHRoYXQgdGhlIGJyb2tlbiBwaXBlIGVycm9yIG1lc3NhZ2UgaXMgc3VwcmVzc2VkLgorCisgICAg
SW4gc29tZSBQeXRob24gdmVyc2lvbnMsIGl0IHJlYWNoZXMgc3lzLnVucmFpc2FibGVob29rLCBp
biBvdGhlcnMKKyAgICBhIEJyb2tlblBpcGVFcnJvciBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCwg
YnV0IGVpdGhlciB3YXkgaXQgcHJpbnRzCisgICAgdG8gc3RkZXJyIG9uIHNodXRkb3duLCBzbyBj
aGVja2luZyBub3RoaW5nIGlzIHByaW50ZWQgaXMgZW5vdWdoLgorICAgICIiIgorICAgIHBvcGVu
ID0gdGVzdGRpci5wb3BlbigoKnRlc3RkaXIuX2dldHB5dGVzdGFyZ3MoKSwgIi0taGVscCIpKQor
ICAgIHBvcGVuLnN0ZG91dC5jbG9zZSgpCisgICAgcmV0ID0gcG9wZW4ud2FpdCgpCisgICAgYXNz
ZXJ0IHBvcGVuLnN0ZGVyci5yZWFkKCkgPT0gYiIiCisgICAgYXNzZXJ0IHJldCA9PSAxCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9jb2RlLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9jb2RlL3Rlc3RfY29kZS5weQppbmRleCBiZmFlMzY5MTg4MmUuLmJhZTg2YmUz
NDdmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3RfY29kZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9jb2RlLnB5CkBAIC0xLDIxMCArMSwy
MTEgQEAKLSMgY29kaW5nOiB1dGYtOAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHJlCiBpbXBvcnQgc3lzCitm
cm9tIHR5cGVzIGltcG9ydCBGcmFtZVR5cGUKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIAot
aW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQogaW1wb3J0IHB5dGVzdAotZnJvbSB0ZXN0
X2V4Y2luZm8gaW1wb3J0IFRXTW9jawotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQorZnJvbSBf
cHl0ZXN0Ll9jb2RlIGltcG9ydCBDb2RlCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IEV4Y2Vw
dGlvbkluZm8KK2Zyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgRnJhbWUKK2Zyb20gX3B5dGVzdC5f
Y29kZSBpbXBvcnQgU291cmNlCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0
aW9uQ2hhaW5SZXByCitmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgUmVwckZ1bmNBcmdz
CiAKIAotZGVmIHRlc3RfbmUoKToKLSAgICBjb2RlMSA9IF9weXRlc3QuX2NvZGUuQ29kZShjb21w
aWxlKCdmb28gPSAiYmFyIicsICIiLCAiZXhlYyIpKQorZGVmIHRlc3RfbmUoKSAtPiBOb25lOgor
ICAgIGNvZGUxID0gQ29kZShjb21waWxlKCdmb28gPSAiYmFyIicsICIiLCAiZXhlYyIpKQogICAg
IGFzc2VydCBjb2RlMSA9PSBjb2RlMQotICAgIGNvZGUyID0gX3B5dGVzdC5fY29kZS5Db2RlKGNv
bXBpbGUoJ2ZvbyA9ICJiYXoiJywgIiIsICJleGVjIikpCisgICAgY29kZTIgPSBDb2RlKGNvbXBp
bGUoJ2ZvbyA9ICJiYXoiJywgIiIsICJleGVjIikpCiAgICAgYXNzZXJ0IGNvZGUyICE9IGNvZGUx
CiAKIAotZGVmIHRlc3RfY29kZV9naXZlc19iYWNrX25hbWVfZm9yX25vdF9leGlzdGluZ19maWxl
KCk6CitkZWYgdGVzdF9jb2RlX2dpdmVzX2JhY2tfbmFtZV9mb3Jfbm90X2V4aXN0aW5nX2ZpbGUo
KSAtPiBOb25lOgogICAgIG5hbWUgPSAiYWJjLTEyMyIKICAgICBjb19jb2RlID0gY29tcGlsZSgi
cGFzc1xuIiwgbmFtZSwgImV4ZWMiKQogICAgIGFzc2VydCBjb19jb2RlLmNvX2ZpbGVuYW1lID09
IG5hbWUKLSAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5Db2RlKGNvX2NvZGUpCisgICAgY29kZSA9
IENvZGUoY29fY29kZSkKICAgICBhc3NlcnQgc3RyKGNvZGUucGF0aCkgPT0gbmFtZQogICAgIGFz
c2VydCBjb2RlLmZ1bGxzb3VyY2UgaXMgTm9uZQogCiAKLWRlZiB0ZXN0X2NvZGVfd2l0aF9jbGFz
cygpOgotCi0gICAgY2xhc3MgQShvYmplY3QpOgorZGVmIHRlc3RfY29kZV93aXRoX2NsYXNzKCkg
LT4gTm9uZToKKyAgICBjbGFzcyBBOgogICAgICAgICBwYXNzCiAKLSAgICBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgIl9weXRlc3QuX2NvZGUuQ29kZShBKSIpCi0KKyAgICBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgQ29kZSwgQSkKIAotaWYgVHJ1ZToKIAotICAgIGRlZiB4KCk6Ci0gICAgICAg
IHBhc3MKK2RlZiB4KCkgLT4gTm9uZToKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkK
IAogCi1kZWYgdGVzdF9jb2RlX2Z1bGxzb3VyY2UoKToKLSAgICBjb2RlID0gX3B5dGVzdC5fY29k
ZS5Db2RlKHgpCitkZWYgdGVzdF9jb2RlX2Z1bGxzb3VyY2UoKSAtPiBOb25lOgorICAgIGNvZGUg
PSBDb2RlKHgpCiAgICAgZnVsbCA9IGNvZGUuZnVsbHNvdXJjZQogICAgIGFzc2VydCAidGVzdF9j
b2RlX2Z1bGxzb3VyY2UoKSIgaW4gc3RyKGZ1bGwpCiAKIAotZGVmIHRlc3RfY29kZV9zb3VyY2Uo
KToKLSAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5Db2RlKHgpCitkZWYgdGVzdF9jb2RlX3NvdXJj
ZSgpIC0+IE5vbmU6CisgICAgY29kZSA9IENvZGUoeCkKICAgICBzcmMgPSBjb2RlLnNvdXJjZSgp
Ci0gICAgZXhwZWN0ZWQgPSAiIiJkZWYgeCgpOgotICAgIHBhc3MiIiIKKyAgICBleHBlY3RlZCA9
ICIiImRlZiB4KCkgLT4gTm9uZToKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkiIiIK
ICAgICBhc3NlcnQgc3RyKHNyYykgPT0gZXhwZWN0ZWQKIAogCi1kZWYgdGVzdF9mcmFtZV9nZXRz
b3VyY2VsaW5lbm9fbXlzZWxmKCk6Ci0KLSAgICBkZWYgZnVuYygpOgorZGVmIHRlc3RfZnJhbWVf
Z2V0c291cmNlbGluZW5vX215c2VsZigpIC0+IE5vbmU6CisgICAgZGVmIGZ1bmMoKSAtPiBGcmFt
ZVR5cGU6CiAgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKDApCiAKLSAgICBmID0gZnVuYygp
Ci0gICAgZiA9IF9weXRlc3QuX2NvZGUuRnJhbWUoZikKKyAgICBmID0gRnJhbWUoZnVuYygpKQog
ICAgIHNvdXJjZSwgbGluZW5vID0gZi5jb2RlLmZ1bGxzb3VyY2UsIGYubGluZW5vCisgICAgYXNz
ZXJ0IHNvdXJjZSBpcyBub3QgTm9uZQogICAgIGFzc2VydCBzb3VyY2VbbGluZW5vXS5zdGFydHN3
aXRoKCIgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKDApIikKIAogCi1kZWYgdGVzdF9nZXRz
dGF0ZW1lbnRfZW1wdHlfZnVsbHNvdXJjZSgpOgotCi0gICAgZGVmIGZ1bmMoKToKK2RlZiB0ZXN0
X2dldHN0YXRlbWVudF9lbXB0eV9mdWxsc291cmNlKCkgLT4gTm9uZToKKyAgICBkZWYgZnVuYygp
IC0+IEZyYW1lVHlwZToKICAgICAgICAgcmV0dXJuIHN5cy5fZ2V0ZnJhbWUoMCkKIAotICAgIGYg
PSBmdW5jKCkKLSAgICBmID0gX3B5dGVzdC5fY29kZS5GcmFtZShmKQotICAgIHByb3AgPSBmLmNv
ZGUuX19jbGFzc19fLmZ1bGxzb3VyY2UKLSAgICB0cnk6Ci0gICAgICAgIGYuY29kZS5fX2NsYXNz
X18uZnVsbHNvdXJjZSA9IE5vbmUKLSAgICAgICAgYXNzZXJ0IGYuc3RhdGVtZW50ID09IF9weXRl
c3QuX2NvZGUuU291cmNlKCIiKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY29kZS5fX2NsYXNz
X18uZnVsbHNvdXJjZSA9IHByb3AKKyAgICBmID0gRnJhbWUoZnVuYygpKQorICAgIHdpdGggbW9j
ay5wYXRjaC5vYmplY3QoZi5jb2RlLl9fY2xhc3NfXywgImZ1bGxzb3VyY2UiLCBOb25lKToKKyAg
ICAgICAgYXNzZXJ0IGYuc3RhdGVtZW50ID09IFNvdXJjZSgiIikKIAogCi1kZWYgdGVzdF9jb2Rl
X2Zyb21fZnVuYygpOgotICAgIGNvID0gX3B5dGVzdC5fY29kZS5Db2RlKHRlc3RfZnJhbWVfZ2V0
c291cmNlbGluZW5vX215c2VsZikKK2RlZiB0ZXN0X2NvZGVfZnJvbV9mdW5jKCkgLT4gTm9uZToK
KyAgICBjbyA9IENvZGUodGVzdF9mcmFtZV9nZXRzb3VyY2VsaW5lbm9fbXlzZWxmKQogICAgIGFz
c2VydCBjby5maXJzdGxpbmVubwogICAgIGFzc2VydCBjby5wYXRoCiAKIAotZGVmIHRlc3RfdW5p
Y29kZV9oYW5kbGluZygpOgotICAgIHZhbHVlID0gcHkuYnVpbHRpbi5fdG90ZXh0KCJceGM0XHg4
NVx4YzRceDg3XG4iLCAidXRmLTgiKS5lbmNvZGUoInV0ZjgiKQorZGVmIHRlc3RfdW5pY29kZV9o
YW5kbGluZygpIC0+IE5vbmU6CisgICAgdmFsdWUgPSAixIXEhyIuZW5jb2RlKCkKIAotICAgIGRl
ZiBmKCk6CisgICAgZGVmIGYoKSAtPiBOb25lOgogICAgICAgICByYWlzZSBFeGNlcHRpb24odmFs
dWUpCiAKICAgICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIGYpCiAgICAgc3Ry
KGV4Y2luZm8pCi0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDM6Ci0gICAgICAgIHRleHRf
dHlwZShleGNpbmZvKQotCi0KLUBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mb1sw
XSA+PSAzLCByZWFzb249InB5dGhvbiAyIG9ubHkgaXNzdWUiKQotZGVmIHRlc3RfdW5pY29kZV9o
YW5kbGluZ19zeW50YXhfZXJyb3IoKToKLSAgICB2YWx1ZSA9IHB5LmJ1aWx0aW4uX3RvdGV4dCgi
XHhjNFx4ODVceGM0XHg4N1xuIiwgInV0Zi04IikuZW5jb2RlKCJ1dGY4IikKIAotICAgIGRlZiBm
KCk6Ci0gICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJpbnZhbGlkIHN5bnRheCIsIChOb25lLCAx
LCAzLCB2YWx1ZSkpCi0KLSAgICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIGYp
Ci0gICAgc3RyKGV4Y2luZm8pCi0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDM6Ci0gICAg
ICAgIHRleHRfdHlwZShleGNpbmZvKQotCi0KLWRlZiB0ZXN0X2NvZGVfZ2V0YXJncygpOgogCitk
ZWYgdGVzdF9jb2RlX2dldGFyZ3MoKSAtPiBOb25lOgogICAgIGRlZiBmMSh4KToKLSAgICAgICAg
cGFzcworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAotICAgIGMxID0gX3B5
dGVzdC5fY29kZS5Db2RlKGYxKQorICAgIGMxID0gQ29kZShmMSkKICAgICBhc3NlcnQgYzEuZ2V0
YXJncyh2YXI9VHJ1ZSkgPT0gKCJ4IiwpCiAKICAgICBkZWYgZjIoeCwgKnkpOgotICAgICAgICBw
YXNzCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYzIgPSBfcHl0
ZXN0Ll9jb2RlLkNvZGUoZjIpCisgICAgYzIgPSBDb2RlKGYyKQogICAgIGFzc2VydCBjMi5nZXRh
cmdzKHZhcj1UcnVlKSA9PSAoIngiLCAieSIpCiAKICAgICBkZWYgZjMoeCwgKip6KToKLSAgICAg
ICAgcGFzcworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAotICAgIGMzID0g
X3B5dGVzdC5fY29kZS5Db2RlKGYzKQorICAgIGMzID0gQ29kZShmMykKICAgICBhc3NlcnQgYzMu
Z2V0YXJncyh2YXI9VHJ1ZSkgPT0gKCJ4IiwgInoiKQogCiAgICAgZGVmIGY0KHgsICp5LCAqKnop
OgotICAgICAgICBwYXNzCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0g
ICAgYzQgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoZjQpCisgICAgYzQgPSBDb2RlKGY0KQogICAgIGFz
c2VydCBjNC5nZXRhcmdzKHZhcj1UcnVlKSA9PSAoIngiLCAieSIsICJ6IikKIAogCi1kZWYgdGVz
dF9mcmFtZV9nZXRhcmdzKCk6Ci0KLSAgICBkZWYgZjEoeCk6CitkZWYgdGVzdF9mcmFtZV9nZXRh
cmdzKCkgLT4gTm9uZToKKyAgICBkZWYgZjEoeCkgLT4gRnJhbWVUeXBlOgogICAgICAgICByZXR1
cm4gc3lzLl9nZXRmcmFtZSgwKQogCi0gICAgZnIxID0gX3B5dGVzdC5fY29kZS5GcmFtZShmMSgi
YSIpKQorICAgIGZyMSA9IEZyYW1lKGYxKCJhIikpCiAgICAgYXNzZXJ0IGZyMS5nZXRhcmdzKHZh
cj1UcnVlKSA9PSBbKCJ4IiwgImEiKV0KIAotICAgIGRlZiBmMih4LCAqeSk6CisgICAgZGVmIGYy
KHgsICp5KSAtPiBGcmFtZVR5cGU6CiAgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKDApCiAK
LSAgICBmcjIgPSBfcHl0ZXN0Ll9jb2RlLkZyYW1lKGYyKCJhIiwgImIiLCAiYyIpKQorICAgIGZy
MiA9IEZyYW1lKGYyKCJhIiwgImIiLCAiYyIpKQogICAgIGFzc2VydCBmcjIuZ2V0YXJncyh2YXI9
VHJ1ZSkgPT0gWygieCIsICJhIiksICgieSIsICgiYiIsICJjIikpXQogCi0gICAgZGVmIGYzKHgs
ICoqeik6CisgICAgZGVmIGYzKHgsICoqeikgLT4gRnJhbWVUeXBlOgogICAgICAgICByZXR1cm4g
c3lzLl9nZXRmcmFtZSgwKQogCi0gICAgZnIzID0gX3B5dGVzdC5fY29kZS5GcmFtZShmMygiYSIs
IGI9ImMiKSkKKyAgICBmcjMgPSBGcmFtZShmMygiYSIsIGI9ImMiKSkKICAgICBhc3NlcnQgZnIz
LmdldGFyZ3ModmFyPVRydWUpID09IFsoIngiLCAiYSIpLCAoInoiLCB7ImIiOiAiYyJ9KV0KIAot
ICAgIGRlZiBmNCh4LCAqeSwgKip6KToKKyAgICBkZWYgZjQoeCwgKnksICoqeikgLT4gRnJhbWVU
eXBlOgogICAgICAgICByZXR1cm4gc3lzLl9nZXRmcmFtZSgwKQogCi0gICAgZnI0ID0gX3B5dGVz
dC5fY29kZS5GcmFtZShmNCgiYSIsICJiIiwgYz0iZCIpKQorICAgIGZyNCA9IEZyYW1lKGY0KCJh
IiwgImIiLCBjPSJkIikpCiAgICAgYXNzZXJ0IGZyNC5nZXRhcmdzKHZhcj1UcnVlKSA9PSBbKCJ4
IiwgImEiKSwgKCJ5IiwgKCJiIiwpKSwgKCJ6IiwgeyJjIjogImQifSldCiAKIAotY2xhc3MgVGVz
dEV4Y2VwdGlvbkluZm8ob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X2JhZF9nZXRzb3VyY2Uoc2Vs
Zik6CitjbGFzcyBUZXN0RXhjZXB0aW9uSW5mbzoKKyAgICBkZWYgdGVzdF9iYWRfZ2V0c291cmNl
KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIEZhbHNlOgogICAg
ICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0IEZhbHNlCiAgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKLSAgICAgICAgICAgIGV4
Y2kgPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICAgICAgZXhjaSA9IEV4
Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkKICAgICAgICAgYXNzZXJ0IGV4Y2kuZ2V0cmVwcigp
CiAKKyAgICBkZWYgdGVzdF9mcm9tX2N1cnJlbnRfd2l0aF9taXNzaW5nKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvciwgbWF0Y2g9Im5vIGN1
cnJlbnQgZXhjZXB0aW9uIik6CisgICAgICAgICAgICBFeGNlcHRpb25JbmZvLmZyb21fY3VycmVu
dCgpCiAKLWNsYXNzIFRlc3RUcmFjZWJhY2tFbnRyeShvYmplY3QpOgogCi0gICAgZGVmIHRlc3Rf
Z2V0c291cmNlKHNlbGYpOgorY2xhc3MgVGVzdFRyYWNlYmFja0VudHJ5OgorICAgIGRlZiB0ZXN0
X2dldHNvdXJjZShzZWxmKSAtPiBOb25lOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBG
YWxzZToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgICAgIGFzc2VydCBGYWxzZQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6Ci0gICAg
ICAgICAgICBleGNpID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAgICAgICAg
IGV4Y2kgPSBFeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAgICAgICAgIGVudHJ5ID0gZXhj
aS50cmFjZWJhY2tbMF0KICAgICAgICAgc291cmNlID0gZW50cnkuZ2V0c291cmNlKCkKKyAgICAg
ICAgYXNzZXJ0IHNvdXJjZSBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgbGVuKHNvdXJjZSkg
PT0gNgogICAgICAgICBhc3NlcnQgImFzc2VydCBGYWxzZSIgaW4gc291cmNlWzVdCiAKKyAgICBk
ZWYgdGVzdF90Yl9lbnRyeV9zdHIoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFz
c2VydCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBl
eGNpID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQorICAgICAgICBwYXR0ZXJuID0gciIg
IEZpbGUgJy4qdGVzdF9jb2RlLnB5JzpcZCsgaW4gdGVzdF90Yl9lbnRyeV9zdHJcbiAgYXNzZXJ0
IEZhbHNlIgorICAgICAgICBlbnRyeSA9IHN0cihleGNpLnRyYWNlYmFja1swXSkKKyAgICAgICAg
YXNzZXJ0IHJlLm1hdGNoKHBhdHRlcm4sIGVudHJ5KQogCi1jbGFzcyBUZXN0UmVwckZ1bmNBcmdz
KG9iamVjdCk6CiAKLSAgICBkZWYgdGVzdF9ub3RfcmFpc2VfZXhjZXB0aW9uX3dpdGhfbWl4ZWRf
ZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBS
ZXByRnVuY0FyZ3MKK2NsYXNzIFRlc3RSZXByRnVuY0FyZ3M6CisgICAgZGVmIHRlc3Rfbm90X3Jh
aXNlX2V4Y2VwdGlvbl93aXRoX21peGVkX2VuY29kaW5nKHNlbGYsIHR3X21vY2spIC0+IE5vbmU6
CisgICAgICAgIGFyZ3MgPSBbKCJ1bmljb2RlX3N0cmluZyIsICJTw6NvIFBhdWxvIiksICgidXRm
OF9zdHJpbmciLCBiIlNceGMzXHhhM28gUGF1bG8iKV0KIAotICAgICAgICB0dyA9IFRXTW9jaygp
CisgICAgICAgIHIgPSBSZXByRnVuY0FyZ3MoYXJncykKKyAgICAgICAgci50b3Rlcm1pbmFsKHR3
X21vY2spCiAKLSAgICAgICAgYXJncyA9IFsoInVuaWNvZGVfc3RyaW5nIiwgdSJTw6NvIFBhdWxv
IiksICgidXRmOF9zdHJpbmciLCAiU1x4YzNceGEzbyBQYXVsbyIpXQorICAgICAgICBhc3NlcnQg
KAorICAgICAgICAgICAgdHdfbW9jay5saW5lc1swXQorICAgICAgICAgICAgPT0gciJ1bmljb2Rl
X3N0cmluZyA9IFPDo28gUGF1bG8sIHV0Zjhfc3RyaW5nID0gYidTXHhjM1x4YTNvIFBhdWxvJyIK
KyAgICAgICAgKQogCi0gICAgICAgIHIgPSBSZXByRnVuY0FyZ3MoYXJncykKLSAgICAgICAgci50
b3Rlcm1pbmFsKHR3KQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6Ci0gICAg
ICAgICAgICBhc3NlcnQgdHcubGluZXNbMF0gPT0gInVuaWNvZGVfc3RyaW5nID0gU8OjbyBQYXVs
bywgdXRmOF9zdHJpbmcgPSBTw4PCo28gUGF1bG8iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBhc3NlcnQgdHcubGluZXNbMF0gPT0gInVuaWNvZGVfc3RyaW5nID0gU8OjbyBQYXVsbywgdXRm
OF9zdHJpbmcgPSBTw6NvIFBhdWxvIgorCitkZWYgdGVzdF9FeGNlcHRpb25DaGFpblJlcHIoKToK
KyAgICAiIiJUZXN0IEV4Y2VwdGlvbkNoYWluUmVwciwgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0
byBiZWluZyBoYXNoYWJsZS4iIiIKKyAgICB0cnk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
KQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBleGNpbmZvMSA9IEV4Y2VwdGlvbklu
Zm8uZnJvbV9jdXJyZW50KCkKKyAgICAgICAgZXhjaW5mbzIgPSBFeGNlcHRpb25JbmZvLmZyb21f
Y3VycmVudCgpCisKKyAgICByZXByMSA9IGV4Y2luZm8xLmdldHJlcHIoKQorICAgIHJlcHIyID0g
ZXhjaW5mbzIuZ2V0cmVwcigpCisgICAgYXNzZXJ0IHJlcHIxICE9IHJlcHIyCisKKyAgICBhc3Nl
cnQgaXNpbnN0YW5jZShyZXByMSwgRXhjZXB0aW9uQ2hhaW5SZXByKQorICAgIGFzc2VydCBoYXNo
KHJlcHIxKSAhPSBoYXNoKHJlcHIyKQorICAgIGFzc2VydCByZXByMSBpcyBub3QgZXhjaW5mbzEu
Z2V0cmVwcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9leGNp
bmZvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3RfZXhjaW5mby5weQppbmRleCBm
NDA0NGI2ZWNjNDQuLjU3NTQ5NzdkZGM3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9jb2RlL3Rlc3RfZXhjaW5mby5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVz
dF9leGNpbmZvLnB5CkBAIC0xLDIxICsxLDI0IEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9m
dW5jdGlvbgotCitpbXBvcnQgaW8KIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCitpbXBvcnQg
cXVldWUKIGltcG9ydCBzeXMKLWltcG9ydCBfcHl0ZXN0CitpbXBvcnQgdGV4dHdyYXAKK2Zyb20g
dHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5cGluZyBp
bXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorCiBpbXBvcnQgcHkKLWltcG9y
dCBweXRlc3QKLWZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCAoCi0gICAgRXhjZXB0aW9u
SW5mbywKLSAgICBGb3JtYXR0ZWRFeGNpbmZvLAotICAgIFJlcHJFeGNlcHRpb25JbmZvLAotICAg
IEV4Y2VwdGlvbkNoYWluUmVwciwKLSkKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBxdWV1ZQogCi1m
cm9tIHRlc3Rfc291cmNlIGltcG9ydCBhc3Rvbmx5CitpbXBvcnQgX3B5dGVzdAoraW1wb3J0IHB5
dGVzdAorZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkNoYWluUmVwcgor
ZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8KK2Zyb20gX3B5dGVz
dC5fY29kZS5jb2RlIGltcG9ydCBGb3JtYXR0ZWRFeGNpbmZvCitmcm9tIF9weXRlc3QuX2lvIGlt
cG9ydCBUZXJtaW5hbFdyaXRlcgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgVFlQRV9DSEVD
S0lORworZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBMaW5lTWF0Y2hlcgogCiB0cnk6CiAg
ICAgaW1wb3J0IGltcG9ydGxpYgpAQCAtMjQsNDggKzI3LDM2IEBAIGV4Y2VwdCBJbXBvcnRFcnJv
cjoKIGVsc2U6CiAgICAgaW52YWxpZGF0ZV9pbXBvcnRfY2FjaGVzID0gZ2V0YXR0cihpbXBvcnRs
aWIsICJpbnZhbGlkYXRlX2NhY2hlcyIsIE5vbmUpCiAKLWZhaWxzb25qeXRob24gPSBweXRlc3Qu
bWFyay54ZmFpbCgic3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKSIpCi0KLXB5dGVzdF92
ZXJzaW9uX2luZm8gPSB0dXBsZShtYXAoaW50LCBweXRlc3QuX192ZXJzaW9uX18uc3BsaXQoIi4i
KVs6M10pKQotCi0KLWNsYXNzIFRXTW9jayhvYmplY3QpOgotICAgIFdSSVRFID0gb2JqZWN0KCkK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5saW5lcyA9IFtdCi0gICAg
ICAgIHNlbGYuaXNfd3JpdGluZyA9IEZhbHNlCi0KLSAgICBkZWYgc2VwKHNlbGYsIHNlcCwgbGlu
ZT1Ob25lKToKLSAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQoKHNlcCwgbGluZSkpCitpZiBUWVBF
X0NIRUNLSU5HOgorICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBfVHJhY2ViYWNr
U3R5bGUKIAotICAgIGRlZiB3cml0ZShzZWxmLCBtc2csICoqa3cpOgotICAgICAgICBzZWxmLmxp
bmVzLmFwcGVuZCgoVFdNb2NrLldSSVRFLCBtc2cpKQogCi0gICAgZGVmIGxpbmUoc2VsZiwgbGlu
ZSwgKiprdyk6Ci0gICAgICAgIHNlbGYubGluZXMuYXBwZW5kKGxpbmUpCitAcHl0ZXN0LmZpeHR1
cmUKK2RlZiBsaW1pdGVkX3JlY3Vyc2lvbl9kZXB0aCgpOgorICAgIGJlZm9yZSA9IHN5cy5nZXRy
ZWN1cnNpb25saW1pdCgpCisgICAgc3lzLnNldHJlY3Vyc2lvbmxpbWl0KDE1MCkKKyAgICB5aWVs
ZAorICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChiZWZvcmUpCiAKLSAgICBkZWYgbWFya3VwKHNl
bGYsIHRleHQsICoqa3cpOgotICAgICAgICByZXR1cm4gdGV4dAogCi0gICAgZGVmIGdldF93cml0
ZV9tc2coc2VsZiwgaWR4KToKLSAgICAgICAgZmxhZywgbXNnID0gc2VsZi5saW5lc1tpZHhdCi0g
ICAgICAgIGFzc2VydCBmbGFnID09IFRXTW9jay5XUklURQotICAgICAgICByZXR1cm4gbXNnCi0K
LSAgICBmdWxsd2lkdGggPSA4MAorZGVmIHRlc3RfZXhjaW5mb19zaW1wbGUoKSAtPiBOb25lOgor
ICAgIHRyeToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgorICAgICAgICBpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVu
dCgpCisgICAgYXNzZXJ0IGluZm8udHlwZSA9PSBWYWx1ZUVycm9yCiAKIAotZGVmIHRlc3RfZXhj
aW5mb19zaW1wbGUoKToKK2RlZiB0ZXN0X2V4Y2luZm9fZnJvbV9leGNfaW5mb19zaW1wbGUoKSAt
PiBOb25lOgogICAgIHRyeToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgotICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgotICAgICAgICBpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkK
KyAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICBhc3NlcnQgZS5fX3RyYWNlYmFj
a19fIGlzIG5vdCBOb25lCisgICAgICAgIGluZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbklu
Zm8uZnJvbV9leGNfaW5mbygodHlwZShlKSwgZSwgZS5fX3RyYWNlYmFja19fKSkKICAgICBhc3Nl
cnQgaW5mby50eXBlID09IFZhbHVlRXJyb3IKIAogCiBkZWYgdGVzdF9leGNpbmZvX2dldHN0YXRl
bWVudCgpOgotCiAgICAgZGVmIGcoKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogCkBAIC03
NSwxMSArNjYsMTEgQEAgZGVmIHRlc3RfZXhjaW5mb19nZXRzdGF0ZW1lbnQoKToKICAgICB0cnk6
CiAgICAgICAgIGYoKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICBleGNpbmZvID0g
X3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAgICAgZXhjaW5mbyA9IF9weXRlc3Qu
X2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAgIGxpbmVudW1iZXJzID0gWwot
ICAgICAgICBfcHl0ZXN0Ll9jb2RlLmdldHJhd2NvZGUoZikuY29fZmlyc3RsaW5lbm8gLSAxICsg
NCwKLSAgICAgICAgX3B5dGVzdC5fY29kZS5nZXRyYXdjb2RlKGYpLmNvX2ZpcnN0bGluZW5vIC0g
MSArIDEsCi0gICAgICAgIF9weXRlc3QuX2NvZGUuZ2V0cmF3Y29kZShnKS5jb19maXJzdGxpbmVu
byAtIDEgKyAxLAorICAgICAgICBmLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vIC0gMSArIDQsCisg
ICAgICAgIGYuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gLSAxICsgMSwKKyAgICAgICAgZy5fX2Nv
ZGVfXy5jb19maXJzdGxpbmVubyAtIDEgKyAxLAogICAgIF0KICAgICB2YWx1ZXMgPSBsaXN0KGV4
Y2luZm8udHJhY2ViYWNrKQogICAgIGZvdW5kbGluZW51bWJlcnMgPSBbeC5saW5lbm8gZm9yIHgg
aW4gdmFsdWVzXQpAQCAtMTExLDEzICsxMDIsMTIgQEAgZGVmIGgoKToKICAgICAjCiAKIAotY2xh
c3MgVGVzdFRyYWNlYmFja19mX2dfaChvYmplY3QpOgotCitjbGFzcyBUZXN0VHJhY2ViYWNrX2Zf
Z19oOgogICAgIGRlZiBzZXR1cF9tZXRob2Qoc2VsZiwgbWV0aG9kKToKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgaCgpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAg
c2VsZi5leGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAgICAgICAg
IHNlbGYuZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQo
KQogCiAgICAgZGVmIHRlc3RfdHJhY2ViYWNrX2VudHJpZXMoc2VsZik6CiAgICAgICAgIHRiID0g
c2VsZi5leGNpbmZvLnRyYWNlYmFjawpAQCAtMTM4LDI3ICsxMjgsMjkgQEAgY2xhc3MgVGVzdFRy
YWNlYmFja19mX2dfaChvYmplY3QpOgogICAgICAgICBhc3NlcnQgcy5zdGFydHN3aXRoKCJkZWYg
ZigpOiIpCiAgICAgICAgIGFzc2VydCBzLmVuZHN3aXRoKCJyYWlzZSBWYWx1ZUVycm9yIikKIAot
ICAgIEBhc3Rvbmx5Ci0gICAgQGZhaWxzb25qeXRob24KICAgICBkZWYgdGVzdF90cmFjZWJhY2tf
ZW50cnlfZ2V0c291cmNlX2luX2NvbnN0cnVjdChzZWxmKToKLSAgICAgICAgc291cmNlID0gX3B5
dGVzdC5fY29kZS5Tb3VyY2UoCi0gICAgICAgICAgICAiIiJcCi0gICAgICAgICAgICBkZWYgeHl6
KCk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNvbWVub25hbWU6Ci0gICAgICAgICAgICAg
ICAgICAgIHBhc3MKLSAgICAgICAgICAgIHh5eigpCi0gICAgICAgICIiIgotICAgICAgICApCisg
ICAgICAgIGRlZiB4eXooKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBleGNlcHQgc29tZW5vbmFtZTogICMgdHlwZTogaWdu
b3JlW25hbWUtZGVmaW5lZF0gIyBub3FhOiBGODIxCisgICAgICAgICAgICAgICAgcGFzcyAgIyBw
cmFnbWE6IG5vIGNvdmVyCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhlYyhzb3VyY2Uu
Y29tcGlsZSgpKQorICAgICAgICAgICAgeHl6KCkKICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoK
LSAgICAgICAgICAgIHRiID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkudHJhY2ViYWNr
Ci0gICAgICAgICAgICBwcmludCh0YlstMV0uZ2V0c291cmNlKCkpCi0gICAgICAgICAgICBzID0g
c3RyKHRiWy0xXS5nZXRzb3VyY2UoKSkKLSAgICAgICAgICAgIGFzc2VydCBzLnN0YXJ0c3dpdGgo
ImRlZiB4eXooKTpcbiAgICB0cnk6IikKLSAgICAgICAgICAgIGFzc2VydCBzLnN0cmlwKCkuZW5k
c3dpdGgoImV4Y2VwdCBzb21lbm9uYW1lOiIpCisgICAgICAgICAgICBleGNpbmZvID0gX3B5dGVz
dC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBhc3NlcnQgRmFsc2UsICJkaWQgbm90IHJhaXNlIE5hbWVFcnJvciIKKworICAgICAg
ICB0YiA9IGV4Y2luZm8udHJhY2ViYWNrCisgICAgICAgIHNvdXJjZSA9IHRiWy0xXS5nZXRzb3Vy
Y2UoKQorICAgICAgICBhc3NlcnQgc291cmNlIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBz
b3VyY2UuZGVpbmRlbnQoKS5saW5lcyA9PSBbCisgICAgICAgICAgICAiZGVmIHh5eigpOiIsCisg
ICAgICAgICAgICAiICAgIHRyeToiLAorICAgICAgICAgICAgIiAgICAgICAgcmFpc2UgVmFsdWVF
cnJvciIsCisgICAgICAgICAgICAiICAgIGV4Y2VwdCBzb21lbm9uYW1lOiAgIyB0eXBlOiBpZ25v
cmVbbmFtZS1kZWZpbmVkXSAjIG5vcWE6IEY4MjEiLAorICAgICAgICBdCiAKICAgICBkZWYgdGVz
dF90cmFjZWJhY2tfY3V0KHNlbGYpOgogICAgICAgICBjbyA9IF9weXRlc3QuX2NvZGUuQ29kZShm
KQpAQCAtMTcxLDcgKzE2Myw4IEBAIGNsYXNzIFRlc3RUcmFjZWJhY2tfZl9nX2gob2JqZWN0KToK
IAogICAgIGRlZiB0ZXN0X3RyYWNlYmFja19jdXRfZXhjbHVkZXBhdGgoc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiBmKCk6IHJhaXNlIFZhbHVlRXJy
b3IiKQotICAgICAgICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAicC5weWlt
cG9ydCgpLmYoKSIpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKSBhcyBl
eGNpbmZvOgorICAgICAgICAgICAgcC5weWltcG9ydCgpLmYoKQogICAgICAgICBiYXNlZGlyID0g
cHkucGF0aC5sb2NhbChweXRlc3QuX19maWxlX18pLmRpcnBhdGgoKQogICAgICAgICBuZXd0cmFj
ZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjay5jdXQoZXhjbHVkZXBhdGg9YmFzZWRpcikKICAgICAg
ICAgZm9yIHggaW4gbmV3dHJhY2ViYWNrOgpAQCAtMTk0LDcgKzE4Nyw2IEBAIGNsYXNzIFRlc3RU
cmFjZWJhY2tfZl9nX2gob2JqZWN0KToKICAgICAgICAgXSwKICAgICApCiAgICAgZGVmIHRlc3Rf
dHJhY2ViYWNrX2ZpbHRlcl9zZWxlY3RpdmUoc2VsZiwgdHJhY2ViYWNraGlkZSwgbWF0Y2hpbmcp
OgotCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAjCiAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yCkBAIC0yMjQsNyArMjE2LDYgQEAgY2xhc3MgVGVzdFRyYWNlYmFja19mX2dfaChv
YmplY3QpOgogICAgICAgICAgICAgYXNzZXJ0IGxlbihudHJhY2ViYWNrKSA9PSBsZW4odHJhY2Vi
YWNrKSAtIDEKIAogICAgIGRlZiB0ZXN0X3RyYWNlYmFja19yZWN1cnNpb25faW5kZXgoc2VsZik6
Ci0KICAgICAgICAgZGVmIGYobik6CiAgICAgICAgICAgICBpZiBuIDwgMTA6CiAgICAgICAgICAg
ICAgICAgbiArPSAxCkBAIC0yMzYsMzUgKzIyNywzNSBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrX2Zf
Z19oKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZWNpbmRleCA9PSAzCiAKICAgICBkZWYgdGVz
dF90cmFjZWJhY2tfb25seV9zcGVjaWZpY19yZWN1cnNpb25fZXJyb3JzKHNlbGYsIG1vbmtleXBh
dGNoKToKLQogICAgICAgICBkZWYgZihuKToKICAgICAgICAgICAgIGlmIG4gPT0gMDoKICAgICAg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImhlbGxvIikKICAgICAgICAgICAgIGYobiAt
IDEpCiAKLSAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoUnVudGltZUVycm9yLCBmLCAx
MDApCisgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFJ1bnRpbWVFcnJvciwgZiwgMjUp
CiAgICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIoZXhjaW5mby50cmFjZWJhY2suX19jbGFzc19f
LCAicmVjdXJzaW9uaW5kZXgiKQogICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXByKCkKICAg
ICAgICAgYXNzZXJ0ICJSdW50aW1lRXJyb3I6IGhlbGxvIiBpbiBzdHIocmVwci5yZXByY3Jhc2gp
CiAKLSAgICBkZWYgdGVzdF90cmFjZWJhY2tfbm9fcmVjdXJzaW9uX2luZGV4KHNlbGYpOgotCi0g
ICAgICAgIGRlZiBkb19zdHVmZigpOgorICAgIGRlZiB0ZXN0X3RyYWNlYmFja19ub19yZWN1cnNp
b25faW5kZXgoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGRvX3N0dWZmKCkgLT4gTm9uZToK
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogCi0gICAgICAgIGRlZiByZXJhaXNlX21l
KCk6CisgICAgICAgIGRlZiByZXJhaXNlX21lKCkgLT4gTm9uZToKICAgICAgICAgICAgIGltcG9y
dCBzeXMKIAogICAgICAgICAgICAgZXhjLCB2YWwsIHRiID0gc3lzLmV4Y19pbmZvKCkKLSAgICAg
ICAgICAgIHB5LmJ1aWx0aW4uX3JlcmFpc2UoZXhjLCB2YWwsIHRiKQorICAgICAgICAgICAgYXNz
ZXJ0IHZhbCBpcyBub3QgTm9uZQorICAgICAgICAgICAgcmFpc2UgdmFsLndpdGhfdHJhY2ViYWNr
KHRiKQogCi0gICAgICAgIGRlZiBmKG4pOgorICAgICAgICBkZWYgZihuOiBpbnQpIC0+IE5vbmU6
CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZG9fc3R1ZmYoKQotICAgICAgICAg
ICAgZXhjZXB0OiAgIyBub3FhCisgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAg
ICAgICAgICAgICAgICByZXJhaXNlX21lKCkKIAogICAgICAgICBleGNpbmZvID0gcHl0ZXN0LnJh
aXNlcyhSdW50aW1lRXJyb3IsIGYsIDgpCisgICAgICAgIGFzc2VydCBleGNpbmZvIGlzIG5vdCBO
b25lCiAgICAgICAgIHRyYWNlYmFjayA9IGV4Y2luZm8udHJhY2ViYWNrCiAgICAgICAgIHJlY2lu
ZGV4ID0gdHJhY2ViYWNrLnJlY3Vyc2lvbmluZGV4KCkKICAgICAgICAgYXNzZXJ0IHJlY2luZGV4
IGlzIE5vbmUKQEAgLTI3NCw3ICsyNjUsNyBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrX2ZfZ19oKG9i
amVjdCk6CiAgICAgICAgIGRlY29yYXRvciA9IHB5dGVzdC5pbXBvcnRvcnNraXAoImRlY29yYXRv
ciIpLmRlY29yYXRvcgogCiAgICAgICAgIGRlZiBsb2coZiwgKmssICoqa3cpOgotICAgICAgICAg
ICAgcHJpbnQoIiVzICVzIiAlIChrLCBrdykpCisgICAgICAgICAgICBwcmludCgie30ge30iLmZv
cm1hdChrLCBrdykpCiAgICAgICAgICAgICBmKCprLCAqKmt3KQogCiAgICAgICAgIGxvZyA9IGRl
Y29yYXRvcihsb2cpCkBAIC0yODgsNyArMjc5LDYgQEAgY2xhc3MgVGVzdFRyYWNlYmFja19mX2df
aChvYmplY3QpOgogICAgICAgICBhc3NlcnQgZXhjaW5mby50cmFjZWJhY2sucmVjdXJzaW9uaW5k
ZXgoKSBpcyBOb25lCiAKICAgICBkZWYgdGVzdF90cmFjZWJhY2tfZ2V0Y3Jhc2hlbnRyeShzZWxm
KToKLQogICAgICAgICBkZWYgaSgpOgogICAgICAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBU
cnVlCiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCkBAIC0zMTIsNyArMzAyLDYgQEAgY2xh
c3MgVGVzdFRyYWNlYmFja19mX2dfaChvYmplY3QpOgogICAgICAgICBhc3NlcnQgZW50cnkuZnJh
bWUuY29kZS5uYW1lID09ICJoIgogCiAgICAgZGVmIHRlc3RfdHJhY2ViYWNrX2dldGNyYXNoZW50
cnlfZW1wdHkoc2VsZik6Ci0KICAgICAgICAgZGVmIGcoKToKICAgICAgICAgICAgIF9fdHJhY2Vi
YWNraGlkZV9fID0gVHJ1ZQogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgpAQCAtMzMzLDI0
ICszMjIsMzQgQEAgY2xhc3MgVGVzdFRyYWNlYmFja19mX2dfaChvYmplY3QpOgogZGVmIHRlc3Rf
ZXhjaW5mb19leGNvbmx5KCk6CiAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJv
ciwgaCkKICAgICBhc3NlcnQgZXhjaW5mby5leGNvbmx5KCkuc3RhcnRzd2l0aCgiVmFsdWVFcnJv
ciIpCi0gICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgInJhaXNlIFZhbHVl
RXJyb3IoJ2hlbGxvXFxud29ybGQnKSIpCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJy
b3IpIGFzIGV4Y2luZm86CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhlbGxvXG53b3JsZCIp
CiAgICAgbXNnID0gZXhjaW5mby5leGNvbmx5KHRyeXNob3J0PVRydWUpCiAgICAgYXNzZXJ0IG1z
Zy5zdGFydHN3aXRoKCJWYWx1ZUVycm9yIikKICAgICBhc3NlcnQgbXNnLmVuZHN3aXRoKCJ3b3Js
ZCIpCiAKIAotZGVmIHRlc3RfZXhjaW5mb19yZXByKCk6Ci0gICAgZXhjaW5mbyA9IHB5dGVzdC5y
YWlzZXMoVmFsdWVFcnJvciwgaCkKLSAgICBzID0gcmVwcihleGNpbmZvKQotICAgIGFzc2VydCBz
ID09ICI8RXhjZXB0aW9uSW5mbyBWYWx1ZUVycm9yIHRibGVuPTQ+IgorZGVmIHRlc3RfZXhjaW5m
b19yZXByX3N0cigpIC0+IE5vbmU6CisgICAgZXhjaW5mbzEgPSBweXRlc3QucmFpc2VzKFZhbHVl
RXJyb3IsIGgpCisgICAgYXNzZXJ0IHJlcHIoZXhjaW5mbzEpID09ICI8RXhjZXB0aW9uSW5mbyBW
YWx1ZUVycm9yKCkgdGJsZW49ND4iCisgICAgYXNzZXJ0IHN0cihleGNpbmZvMSkgPT0gIjxFeGNl
cHRpb25JbmZvIFZhbHVlRXJyb3IoKSB0Ymxlbj00PiIKIAorICAgIGNsYXNzIEN1c3RvbUV4Y2Vw
dGlvbihFeGNlcHRpb24pOgorICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAg
ICByZXR1cm4gImN1c3RvbV9yZXByIgorCisgICAgZGVmIHJhaXNlcygpIC0+IE5vbmU6CisgICAg
ICAgIHJhaXNlIEN1c3RvbUV4Y2VwdGlvbigpCisKKyAgICBleGNpbmZvMiA9IHB5dGVzdC5yYWlz
ZXMoQ3VzdG9tRXhjZXB0aW9uLCByYWlzZXMpCisgICAgYXNzZXJ0IHJlcHIoZXhjaW5mbzIpID09
ICI8RXhjZXB0aW9uSW5mbyBjdXN0b21fcmVwciB0Ymxlbj0yPiIKKyAgICBhc3NlcnQgc3RyKGV4
Y2luZm8yKSA9PSAiPEV4Y2VwdGlvbkluZm8gY3VzdG9tX3JlcHIgdGJsZW49Mj4iCiAKLWRlZiB0
ZXN0X2V4Y2luZm9fc3RyKCk6Ci0gICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJv
ciwgaCkKLSAgICBzID0gc3RyKGV4Y2luZm8pCi0gICAgYXNzZXJ0IHMuc3RhcnRzd2l0aChfX2Zp
bGVfX1s6LTldKSAgIyBweWMgZmlsZSBhbmQgJHB5LmNsYXNzCi0gICAgYXNzZXJ0IHMuZW5kc3dp
dGgoIlZhbHVlRXJyb3IiKQotICAgIGFzc2VydCBsZW4ocy5zcGxpdCgiOiIpKSA+PSAzICAjIG9u
IHdpbmRvd3MgaXQncyA0CisKK2RlZiB0ZXN0X2V4Y2luZm9fZm9yX2xhdGVyKCkgLT4gTm9uZToK
KyAgICBlID0gRXhjZXB0aW9uSW5mb1tCYXNlRXhjZXB0aW9uXS5mb3JfbGF0ZXIoKQorICAgIGFz
c2VydCAiZm9yIHJhaXNlcyIgaW4gcmVwcihlKQorICAgIGFzc2VydCAiZm9yIHJhaXNlcyIgaW4g
c3RyKGUpCiAKIAogZGVmIHRlc3RfZXhjaW5mb19lcnJpc2luc3RhbmNlKCk6CkBAIC0zNjIsNyAr
MzYxLDcgQEAgZGVmIHRlc3RfZXhjaW5mb19ub19zb3VyY2Vjb2RlKCk6CiAgICAgdHJ5OgogICAg
ICAgICBleGVjKCJyYWlzZSBWYWx1ZUVycm9yKCkiKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgot
ICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAgICAgICAg
ZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAg
IHMgPSBzdHIoZXhjaW5mby50cmFjZWJhY2tbLTFdKQogICAgIGFzc2VydCBzID09ICIgIEZpbGUg
JzxzdHJpbmc+JzoxIGluIDxtb2R1bGU+XG4gID8/P1xuIgogCkBAIC0zNzgsOCArMzc3LDggQEAg
ZGVmIHRlc3RfZXhjaW5mb19ub19weXRob25fc291cmNlY29kZSh0bXBkaXIpOgogICAgIGV4Y2lu
Zm8gPSBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIHRlbXBsYXRlLnJlbmRlciwgaD1oKQogICAg
IGZvciBpdGVtIGluIGV4Y2luZm8udHJhY2ViYWNrOgogICAgICAgICBwcmludChpdGVtKSAgIyBY
WFg6IGZvciBzb21lIHJlYXNvbiBqaW5qYS5UZW1wbGF0ZS5yZW5kZXIgaXMgcHJpbnRlZCBpbiBm
dWxsCi0gICAgICAgIGl0ZW0uc291cmNlICAjIHNob3VsZG50IGZhaWwKLSAgICAgICAgaWYgaXRl
bS5wYXRoLmJhc2VuYW1lID09ICJ0ZXN0LnR4dCI6CisgICAgICAgIGl0ZW0uc291cmNlICAjIHNo
b3VsZG4ndCBmYWlsCisgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbS5wYXRoLCBweS5wYXRoLmxv
Y2FsKSBhbmQgaXRlbS5wYXRoLmJhc2VuYW1lID09ICJ0ZXN0LnR4dCI6CiAgICAgICAgICAgICBh
c3NlcnQgc3RyKGl0ZW0uc291cmNlKSA9PSAie3sgaCgpfX06IgogCiAKQEAgLTM4Nyw3ICszODYs
NyBAQCBkZWYgdGVzdF9lbnRyeXNvdXJjZV9RdWV1ZV9leGFtcGxlKCk6CiAgICAgdHJ5OgogICAg
ICAgICBxdWV1ZS5RdWV1ZSgpLmdldCh0aW1lb3V0PTAuMDAxKQogICAgIGV4Y2VwdCBxdWV1ZS5F
bXB0eToKLSAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCisg
ICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50
KCkKICAgICBlbnRyeSA9IGV4Y2luZm8udHJhY2ViYWNrWy0xXQogICAgIHNvdXJjZSA9IGVudHJ5
LmdldHNvdXJjZSgpCiAgICAgYXNzZXJ0IHNvdXJjZSBpcyBub3QgTm9uZQpAQCAtMzk5LDcgKzM5
OCw3IEBAIGRlZiB0ZXN0X2NvZGVwYXRoX1F1ZXVlX2V4YW1wbGUoKToKICAgICB0cnk6CiAgICAg
ICAgIHF1ZXVlLlF1ZXVlKCkuZ2V0KHRpbWVvdXQ9MC4wMDEpCiAgICAgZXhjZXB0IHF1ZXVlLkVt
cHR5OgotICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKKyAg
ICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQo
KQogICAgIGVudHJ5ID0gZXhjaW5mby50cmFjZWJhY2tbLTFdCiAgICAgcGF0aCA9IGVudHJ5LnBh
dGgKICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXRoLCBweS5wYXRoLmxvY2FsKQpAQCAtNDI1LDE2
ICs0MjQsMjMgQEAgZGVmIHRlc3RfbWF0Y2hfcmFpc2VzX2Vycm9yKHRlc3RkaXIpOgogICAgICkK
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
IT0gMAotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipBc3NlcnRpb25FcnJvcipQ
YXR0ZXJuKlsxMjNdKm5vdCBmb3VuZCoiXSkKIAorICAgIGV4Y19tc2cgPSAiUmVnZXggcGF0dGVy
biAnW1tdMTIzW11dKycgZG9lcyBub3QgbWF0Y2ggJ2RpdmlzaW9uIGJ5IHplcm8nLiIKKyAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJFICogQXNzZXJ0aW9uRXJyb3I6IHt9Ii5mb3Jt
YXQoZXhjX21zZyldKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqX190cmFj
ZWJhY2toaWRlX18gPSBUcnVlKiIpCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LS1mdWxsdHJhY2UiKQorICAgIGFzc2VydCByZXN1bHQucmV0ICE9IDAKKyAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiKl9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZSoi
LCAiRSAqIEFzc2VydGlvbkVycm9yOiB7fSIuZm9ybWF0KGV4Y19tc2cpXQorICAgICkKIAotY2xh
c3MgVGVzdEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKIAorY2xhc3MgVGVzdEZvcm1hdHRlZEV4
Y2luZm86CiAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgZGVmIGltcG9ydGFzbW9kKHNlbGYsIHJl
cXVlc3QpOgotCisgICAgZGVmIGltcG9ydGFzbW9kKHNlbGYsIHJlcXVlc3QsIF9zeXNfc25hcHNo
b3QpOgogICAgICAgICBkZWYgaW1wb3J0YXNtb2Qoc291cmNlKToKLSAgICAgICAgICAgIHNvdXJj
ZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKHNvdXJjZSkKKyAgICAgICAgICAgIHNvdXJjZSA9IHRl
eHR3cmFwLmRlZGVudChzb3VyY2UpCiAgICAgICAgICAgICB0bXBkaXIgPSByZXF1ZXN0LmdldGZp
eHR1cmV2YWx1ZSgidG1wZGlyIikKICAgICAgICAgICAgIG1vZHBhdGggPSB0bXBkaXIuam9pbigi
bW9kLnB5IikKICAgICAgICAgICAgIHRtcGRpci5lbnN1cmUoIl9faW5pdF9fLnB5IikKQEAgLTQ0
NSwyMyArNDUxLDEzIEBAIGNsYXNzIFRlc3RGb3JtYXR0ZWRFeGNpbmZvKG9iamVjdCk6CiAKICAg
ICAgICAgcmV0dXJuIGltcG9ydGFzbW9kCiAKLSAgICBkZWYgZXhjaW5mb19mcm9tX2V4ZWMoc2Vs
Ziwgc291cmNlKToKLSAgICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2Uoc291cmNl
KS5zdHJpcCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4ZWMoc291cmNlLmNvbXBpbGUo
KSkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmFpc2UK
LSAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29k
ZS5FeGNlcHRpb25JbmZvKCkKLSAgICAgICAgYXNzZXJ0IDAsICJkaWQgbm90IHJhaXNlIgotCiAg
ICAgZGVmIHRlc3RfcmVwcl9zb3VyY2Uoc2VsZik6CiAgICAgICAgIHByID0gRm9ybWF0dGVkRXhj
aW5mbygpCiAgICAgICAgIHNvdXJjZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgZih4KToKICAgICAgICAg
ICAgICAgICBwYXNzCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkuc3Ry
aXAoKQogICAgICAgICBwci5mbG93X21hcmtlciA9ICJ8IgogICAgICAgICBsaW5lcyA9IHByLmdl
dF9zb3VyY2Uoc291cmNlLCAwKQpAQCAtNDY5LDIwICs0NjUsMzEgQEAgY2xhc3MgVGVzdEZvcm1h
dHRlZEV4Y2luZm8ob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGxpbmVzWzBdID09ICJ8ICAgZGVm
IGYoeCk6IgogICAgICAgICBhc3NlcnQgbGluZXNbMV0gPT0gIiAgICAgICAgcGFzcyIKIAotICAg
IGRlZiB0ZXN0X3JlcHJfc291cmNlX2V4Y2luZm8oc2VsZik6Ci0gICAgICAgICIiIiBjaGVjayBp
ZiBpbmRlbnRhdGlvbiBpcyByaWdodCAiIiIKLSAgICAgICAgcHIgPSBGb3JtYXR0ZWRFeGNpbmZv
KCkKLSAgICAgICAgZXhjaW5mbyA9IHNlbGYuZXhjaW5mb19mcm9tX2V4ZWMoCi0gICAgICAgICAg
ICAiIiIKLSAgICAgICAgICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQgMAotICAgICAgICAgICAgICAgIGYoKQotICAgICAgICAiIiIKLSAgICAgICAgKQorICAgIGRl
ZiB0ZXN0X3JlcHJfc291cmNlX2V4Y2luZm8oc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiQ2hl
Y2sgaWYgaW5kZW50YXRpb24gaXMgcmlnaHQuIiIiCisgICAgICAgIHRyeToKKworICAgICAgICAg
ICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICAxIC8gMAorCisgICAgICAgICAgICBmKCkKKwor
ICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0
ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8uZnJvbV9jdXJyZW50KCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGFzc2VydCBGYWxzZSwgImRpZCBub3QgcmFpc2UiCisKICAgICAgICAgcHIgPSBG
b3JtYXR0ZWRFeGNpbmZvKCkKICAgICAgICAgc291cmNlID0gcHIuX2dldGVudHJ5c291cmNlKGV4
Y2luZm8udHJhY2ViYWNrWy0xXSkKKyAgICAgICAgYXNzZXJ0IHNvdXJjZSBpcyBub3QgTm9uZQog
ICAgICAgICBsaW5lcyA9IHByLmdldF9zb3VyY2Uoc291cmNlLCAxLCBleGNpbmZvKQotICAgICAg
ICBhc3NlcnQgbGluZXMgPT0gWyIgICAgZGVmIGYoKToiLCAiPiAgICAgICBhc3NlcnQgMCIsICJF
ICAgICAgIEFzc2VydGlvbkVycm9yIl0KKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAg
ICAgICAgICBwcmludChsaW5lKQorICAgICAgICBhc3NlcnQgbGluZXMgPT0gWworICAgICAgICAg
ICAgIiAgICBkZWYgZigpOiIsCisgICAgICAgICAgICAiPiAgICAgICAxIC8gMCIsCisgICAgICAg
ICAgICAiRSAgICAgICBaZXJvRGl2aXNpb25FcnJvcjogZGl2aXNpb24gYnkgemVybyIsCisgICAg
ICAgIF0KIAogICAgIGRlZiB0ZXN0X3JlcHJfc291cmNlX25vdF9leGlzdGluZyhzZWxmKToKICAg
ICAgICAgcHIgPSBGb3JtYXR0ZWRFeGNpbmZvKCkKQEAgLTQ5MCwxMSArNDk3LDEwIEBAIGNsYXNz
IFRlc3RGb3JtYXR0ZWRFeGNpbmZvKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IGV4ZWMoY28pCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgZXhjaW5m
byA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCisgICAgICAgICAgICBleGNpbmZvID0g
X3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAgICAgICAgIHJlcHIg
PSBwci5yZXByX2V4Y2luZm8oZXhjaW5mbykKICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcnRyYWNl
YmFjay5yZXByZW50cmllc1sxXS5saW5lc1swXSA9PSAiPiAgID8/PyIKLSAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mb1swXSA+PSAzOgotICAgICAgICAgICAgYXNzZXJ0IHJlcHIuY2hhaW5bMF1b
MF0ucmVwcmVudHJpZXNbMV0ubGluZXNbMF0gPT0gIj4gICA/Pz8iCisgICAgICAgIGFzc2VydCBy
ZXByLmNoYWluWzBdWzBdLnJlcHJlbnRyaWVzWzFdLmxpbmVzWzBdID09ICI+ICAgPz8/IgogCiAg
ICAgZGVmIHRlc3RfcmVwcl9tYW55X2xpbmVfc291cmNlX25vdF9leGlzdGluZyhzZWxmKToKICAg
ICAgICAgcHIgPSBGb3JtYXR0ZWRFeGNpbmZvKCkKQEAgLTUwOSw4OSArNTE1LDg0IEBAIHJhaXNl
IFZhbHVlRXJyb3IoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBleGVjKGNvKQogICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2Rl
LkV4Y2VwdGlvbkluZm8oKQorICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhj
ZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAgICAgICByZXByID0gcHIucmVwcl9leGNpbmZv
KGV4Y2luZm8pCiAgICAgICAgIGFzc2VydCByZXByLnJlcHJ0cmFjZWJhY2sucmVwcmVudHJpZXNb
MV0ubGluZXNbMF0gPT0gIj4gICA/Pz8iCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0g
Pj0gMzoKLSAgICAgICAgICAgIGFzc2VydCByZXByLmNoYWluWzBdWzBdLnJlcHJlbnRyaWVzWzFd
LmxpbmVzWzBdID09ICI+ICAgPz8/IgorICAgICAgICBhc3NlcnQgcmVwci5jaGFpblswXVswXS5y
ZXByZW50cmllc1sxXS5saW5lc1swXSA9PSAiPiAgID8/PyIKIAotICAgIGRlZiB0ZXN0X3JlcHJf
c291cmNlX2ZhaWxpbmdfZnVsbHNvdXJjZShzZWxmKToKKyAgICBkZWYgdGVzdF9yZXByX3NvdXJj
ZV9mYWlsaW5nX2Z1bGxzb3VyY2Uoc2VsZiwgbW9ua2V5cGF0Y2gpIC0+IE5vbmU6CiAgICAgICAg
IHByID0gRm9ybWF0dGVkRXhjaW5mbygpCiAKLSAgICAgICAgY2xhc3MgRmFrZUNvZGUob2JqZWN0
KToKLQotICAgICAgICAgICAgY2xhc3MgcmF3KG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgY29f
ZmlsZW5hbWUgPSAiPyIKLQotICAgICAgICAgICAgcGF0aCA9ICI/IgotICAgICAgICAgICAgZmly
c3RsaW5lbm8gPSA1Ci0KLSAgICAgICAgICAgIGRlZiBmdWxsc291cmNlKHNlbGYpOgotICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIGZ1bGxzb3VyY2UgPSBwcm9wZXJ0
eShmdWxsc291cmNlKQotCi0gICAgICAgIGNsYXNzIEZha2VGcmFtZShvYmplY3QpOgotICAgICAg
ICAgICAgY29kZSA9IEZha2VDb2RlKCkKLSAgICAgICAgICAgIGZfbG9jYWxzID0ge30KLSAgICAg
ICAgICAgIGZfZ2xvYmFscyA9IHt9Ci0KLSAgICAgICAgY2xhc3MgRmFrZVRyYWNlYmFja0VudHJ5
KF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrLkVudHJ5KToKLQotICAgICAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHRiLCBleGNpbmZvPU5vbmUpOgotICAgICAgICAgICAgICAgIHNlbGYubGluZW5v
ID0gNSArIDMKLQotICAgICAgICAgICAgQHByb3BlcnR5Ci0gICAgICAgICAgICBkZWYgZnJhbWUo
c2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZha2VGcmFtZSgpCi0KLSAgICAgICAgY2xh
c3MgVHJhY2ViYWNrKF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKToKLSAgICAgICAgICAgIEVudHJ5
ID0gRmFrZVRyYWNlYmFja0VudHJ5Ci0KLSAgICAgICAgY2xhc3MgRmFrZUV4Y2luZm8oX3B5dGVz
dC5fY29kZS5FeGNlcHRpb25JbmZvKToKLSAgICAgICAgICAgIHR5cGVuYW1lID0gIkZvbyIKLSAg
ICAgICAgICAgIHZhbHVlID0gRXhjZXB0aW9uKCkKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgZGVmIGV4Y29ubHko
c2VsZiwgdHJ5c2hvcnQpOgotICAgICAgICAgICAgICAgIHJldHVybiAiRVhDIgotCi0gICAgICAg
ICAgICBkZWYgZXJyaXNpbnN0YW5jZShzZWxmLCBjbHMpOgotICAgICAgICAgICAgICAgIHJldHVy
biBGYWxzZQotCi0gICAgICAgIGV4Y2luZm8gPSBGYWtlRXhjaW5mbygpCi0KLSAgICAgICAgY2xh
c3MgRmFrZVJhd1RCKG9iamVjdCk6Ci0gICAgICAgICAgICB0Yl9uZXh0ID0gTm9uZQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJy
b3I6CisgICAgICAgICAgICBleGNpbmZvID0gRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQog
Ci0gICAgICAgIHRiID0gRmFrZVJhd1RCKCkKLSAgICAgICAgZXhjaW5mby50cmFjZWJhY2sgPSBU
cmFjZWJhY2sodGIpCisgICAgICAgIHdpdGggbW9ua2V5cGF0Y2guY29udGV4dCgpIGFzIG06Cisg
ICAgICAgICAgICBtLnNldGF0dHIoX3B5dGVzdC5fY29kZS5Db2RlLCAiZnVsbHNvdXJjZSIsIHBy
b3BlcnR5KGxhbWJkYSBzZWxmOiBOb25lKSkKKyAgICAgICAgICAgIHJlcHIgPSBwci5yZXByX2V4
Y2luZm8oZXhjaW5mbykKIAotICAgICAgICBmYWlsID0gSU9FcnJvcigpCi0gICAgICAgIHJlcHIg
PSBwci5yZXByX2V4Y2luZm8oZXhjaW5mbykKICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcnRyYWNl
YmFjay5yZXByZW50cmllc1swXS5saW5lc1swXSA9PSAiPiAgID8/PyIKLSAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mb1swXSA+PSAzOgotICAgICAgICAgICAgYXNzZXJ0IHJlcHIuY2hhaW5bMF1b
MF0ucmVwcmVudHJpZXNbMF0ubGluZXNbMF0gPT0gIj4gICA/Pz8iCisgICAgICAgIGFzc2VydCBy
ZXByLmNoYWluWzBdWzBdLnJlcHJlbnRyaWVzWzBdLmxpbmVzWzBdID09ICI+ICAgPz8/IgogCi0g
ICAgICAgIGZhaWwgPSBweS5lcnJvci5FTk9FTlQgICMgbm9xYQotICAgICAgICByZXByID0gcHIu
cmVwcl9leGNpbmZvKGV4Y2luZm8pCi0gICAgICAgIGFzc2VydCByZXByLnJlcHJ0cmFjZWJhY2su
cmVwcmVudHJpZXNbMF0ubGluZXNbMF0gPT0gIj4gICA/Pz8iCi0gICAgICAgIGlmIHN5cy52ZXJz
aW9uX2luZm9bMF0gPj0gMzoKLSAgICAgICAgICAgIGFzc2VydCByZXByLmNoYWluWzBdWzBdLnJl
cHJlbnRyaWVzWzBdLmxpbmVzWzBdID09ICI+ICAgPz8/IgotCi0gICAgZGVmIHRlc3RfcmVwcl9s
b2NhbChzZWxmKToKKyAgICBkZWYgdGVzdF9yZXByX2xvY2FsKHNlbGYpIC0+IE5vbmU6CiAgICAg
ICAgIHAgPSBGb3JtYXR0ZWRFeGNpbmZvKHNob3dsb2NhbHM9VHJ1ZSkKICAgICAgICAgbG9jID0g
eyJ5IjogNSwgInoiOiA3LCAieCI6IDMsICJAeCI6IDIsICJfX2J1aWx0aW5zX18iOiB7fX0KICAg
ICAgICAgcmVwcmxvY2FscyA9IHAucmVwcl9sb2NhbHMobG9jKQorICAgICAgICBhc3NlcnQgcmVw
cmxvY2FscyBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgcmVwcmxvY2Fscy5saW5lcwogICAg
ICAgICBhc3NlcnQgcmVwcmxvY2Fscy5saW5lc1swXSA9PSAiX19idWlsdGluc19fID0gPGJ1aWx0
aW5zPiIKICAgICAgICAgYXNzZXJ0IHJlcHJsb2NhbHMubGluZXNbMV0gPT0gInggICAgICAgICAg
PSAzIgogICAgICAgICBhc3NlcnQgcmVwcmxvY2Fscy5saW5lc1syXSA9PSAieSAgICAgICAgICA9
IDUiCiAgICAgICAgIGFzc2VydCByZXBybG9jYWxzLmxpbmVzWzNdID09ICJ6ICAgICAgICAgID0g
NyIKIAotICAgIGRlZiB0ZXN0X3JlcHJfdHJhY2ViYWNrZW50cnlfbGluZXMoc2VsZiwgaW1wb3J0
YXNtb2QpOgorICAgIGRlZiB0ZXN0X3JlcHJfbG9jYWxfd2l0aF9lcnJvcihzZWxmKSAtPiBOb25l
OgorICAgICAgICBjbGFzcyBPYmpXaXRoRXJyb3JJblJlcHI6CisgICAgICAgICAgICBkZWYgX19y
ZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgor
CisgICAgICAgIHAgPSBGb3JtYXR0ZWRFeGNpbmZvKHNob3dsb2NhbHM9VHJ1ZSwgdHJ1bmNhdGVf
bG9jYWxzPUZhbHNlKQorICAgICAgICBsb2MgPSB7IngiOiBPYmpXaXRoRXJyb3JJblJlcHIoKSwg
Il9fYnVpbHRpbnNfXyI6IHt9fQorICAgICAgICByZXBybG9jYWxzID0gcC5yZXByX2xvY2Fscyhs
b2MpCisgICAgICAgIGFzc2VydCByZXBybG9jYWxzIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2Vy
dCByZXBybG9jYWxzLmxpbmVzCisgICAgICAgIGFzc2VydCByZXBybG9jYWxzLmxpbmVzWzBdID09
ICJfX2J1aWx0aW5zX18gPSA8YnVpbHRpbnM+IgorICAgICAgICBhc3NlcnQgIltOb3RJbXBsZW1l
bnRlZEVycm9yKCkgcmFpc2VkIGluIHJlcHIoKV0iIGluIHJlcHJsb2NhbHMubGluZXNbMV0KKwor
ICAgIGRlZiB0ZXN0X3JlcHJfbG9jYWxfd2l0aF9leGNlcHRpb25faW5fY2xhc3NfcHJvcGVydHko
c2VsZikgLT4gTm9uZToKKyAgICAgICAgY2xhc3MgRXhjZXB0aW9uV2l0aEJyb2tlbkNsYXNzKEV4
Y2VwdGlvbik6CisgICAgICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIGl0J3MgYnlwYXNz
ZWQgaW50ZW50aW9uYWxseS4KKyAgICAgICAgICAgIEBwcm9wZXJ0eSAgIyB0eXBlOiBpZ25vcmUK
KyAgICAgICAgICAgIGRlZiBfX2NsYXNzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKCJib29tISIpCisKKyAgICAgICAgY2xhc3MgT2JqV2l0aEVycm9ySW5SZXByOgor
ICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbldpdGhCcm9rZW5DbGFzcygpCisKKyAgICAgICAgcCA9IEZvcm1hdHRlZEV4Y2luZm8o
c2hvd2xvY2Fscz1UcnVlLCB0cnVuY2F0ZV9sb2NhbHM9RmFsc2UpCisgICAgICAgIGxvYyA9IHsi
eCI6IE9ialdpdGhFcnJvckluUmVwcigpLCAiX19idWlsdGluc19fIjoge319CisgICAgICAgIHJl
cHJsb2NhbHMgPSBwLnJlcHJfbG9jYWxzKGxvYykKKyAgICAgICAgYXNzZXJ0IHJlcHJsb2NhbHMg
aXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHJlcHJsb2NhbHMubGluZXMKKyAgICAgICAgYXNz
ZXJ0IHJlcHJsb2NhbHMubGluZXNbMF0gPT0gIl9fYnVpbHRpbnNfXyA9IDxidWlsdGlucz4iCisg
ICAgICAgIGFzc2VydCAiW0V4Y2VwdGlvbldpdGhCcm9rZW5DbGFzcygpIHJhaXNlZCBpbiByZXBy
KCldIiBpbiByZXBybG9jYWxzLmxpbmVzWzFdCisKKyAgICBkZWYgdGVzdF9yZXByX2xvY2FsX3Ry
dW5jYXRlZChzZWxmKSAtPiBOb25lOgorICAgICAgICBsb2MgPSB7ImwiOiBbaSBmb3IgaSBpbiBy
YW5nZSgxMCldfQorICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhzaG93bG9jYWxzPVRydWUp
CisgICAgICAgIHRydW5jYXRlZF9yZXBybG9jYWxzID0gcC5yZXByX2xvY2Fscyhsb2MpCisgICAg
ICAgIGFzc2VydCB0cnVuY2F0ZWRfcmVwcmxvY2FscyBpcyBub3QgTm9uZQorICAgICAgICBhc3Nl
cnQgdHJ1bmNhdGVkX3JlcHJsb2NhbHMubGluZXMKKyAgICAgICAgYXNzZXJ0IHRydW5jYXRlZF9y
ZXBybG9jYWxzLmxpbmVzWzBdID09ICJsICAgICAgICAgID0gWzAsIDEsIDIsIDMsIDQsIDUsIC4u
Ll0iCisKKyAgICAgICAgcSA9IEZvcm1hdHRlZEV4Y2luZm8oc2hvd2xvY2Fscz1UcnVlLCB0cnVu
Y2F0ZV9sb2NhbHM9RmFsc2UpCisgICAgICAgIGZ1bGxfcmVwcmxvY2FscyA9IHEucmVwcl9sb2Nh
bHMobG9jKQorICAgICAgICBhc3NlcnQgZnVsbF9yZXBybG9jYWxzIGlzIG5vdCBOb25lCisgICAg
ICAgIGFzc2VydCBmdWxsX3JlcHJsb2NhbHMubGluZXMKKyAgICAgICAgYXNzZXJ0IGZ1bGxfcmVw
cmxvY2Fscy5saW5lc1swXSA9PSAibCAgICAgICAgICA9IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3
LCA4LCA5XSIKKworICAgIGRlZiB0ZXN0X3JlcHJfdHJhY2ViYWNrZW50cnlfbGluZXMoc2VsZiwg
aW1wb3J0YXNtb2QpIC0+IE5vbmU6CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAg
ICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgZnVuYzEoKToKQEAgLTYxOCwxMyArNjE5LDEzIEBA
IHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBhc3NlcnQgbGluZXNbM10gPT0gIkUgICAgICAg
d29ybGQiCiAgICAgICAgIGFzc2VydCBub3QgbGluZXNbNDpdCiAKLSAgICAgICAgbG9jID0gcmVw
cl9lbnRyeS5yZXBybG9jYWxzIGlzIG5vdCBOb25lCiAgICAgICAgIGxvYyA9IHJlcHJfZW50cnku
cmVwcmZpbGVsb2MKKyAgICAgICAgYXNzZXJ0IGxvYyBpcyBub3QgTm9uZQogICAgICAgICBhc3Nl
cnQgbG9jLnBhdGggPT0gbW9kLl9fZmlsZV9fCiAgICAgICAgIGFzc2VydCBsb2MubGluZW5vID09
IDMKICAgICAgICAgIyBhc3NlcnQgbG9jLm1lc3NhZ2UgPT0gIlZhbHVlRXJyb3I6IGhlbGxvIgog
Ci0gICAgZGVmIHRlc3RfcmVwcl90cmFjZWJhY2tlbnRyeV9saW5lczIoc2VsZiwgaW1wb3J0YXNt
b2QpOgorICAgIGRlZiB0ZXN0X3JlcHJfdHJhY2ViYWNrZW50cnlfbGluZXMyKHNlbGYsIGltcG9y
dGFzbW9kLCB0d19tb2NrKSAtPiBOb25lOgogICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAg
ICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGZ1bmMxKG0sIHgsIHksIHopOgpAQCAtNjM2
LDYgKzYzNyw3IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBlbnRyeSA9IGV4Y2luZm8u
dHJhY2ViYWNrWy0xXQogICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhmdW5jYXJncz1UcnVl
KQogICAgICAgICByZXByZnVuY2FyZ3MgPSBwLnJlcHJfYXJncyhlbnRyeSkKKyAgICAgICAgYXNz
ZXJ0IHJlcHJmdW5jYXJncyBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgcmVwcmZ1bmNhcmdz
LmFyZ3NbMF0gPT0gKCJtIiwgcmVwcigibSIgKiA5MCkpCiAgICAgICAgIGFzc2VydCByZXByZnVu
Y2FyZ3MuYXJnc1sxXSA9PSAoIngiLCAiNSIpCiAgICAgICAgIGFzc2VydCByZXByZnVuY2FyZ3Mu
YXJnc1syXSA9PSAoInkiLCAiMTMiKQpAQCAtNjQzLDE0ICs2NDUsMTQgQEAgcmFpc2UgVmFsdWVF
cnJvcigpCiAKICAgICAgICAgcCA9IEZvcm1hdHRlZEV4Y2luZm8oZnVuY2FyZ3M9VHJ1ZSkKICAg
ICAgICAgcmVwcl9lbnRyeSA9IHAucmVwcl90cmFjZWJhY2tfZW50cnkoZW50cnkpCisgICAgICAg
IGFzc2VydCByZXByX2VudHJ5LnJlcHJmdW5jYXJncyBpcyBub3QgTm9uZQogICAgICAgICBhc3Nl
cnQgcmVwcl9lbnRyeS5yZXByZnVuY2FyZ3MuYXJncyA9PSByZXByZnVuY2FyZ3MuYXJncwotICAg
ICAgICB0dyA9IFRXTW9jaygpCi0gICAgICAgIHJlcHJfZW50cnkudG90ZXJtaW5hbCh0dykKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzBdID09ICJtID0gIiArIHJlcHIoIm0iICogOTApCi0gICAg
ICAgIGFzc2VydCB0dy5saW5lc1sxXSA9PSAieCA9IDUsIHkgPSAxMyIKLSAgICAgICAgYXNzZXJ0
IHR3LmxpbmVzWzJdID09ICJ6ID0gIiArIHJlcHIoInoiICogMTIwKQorICAgICAgICByZXByX2Vu
dHJ5LnRvdGVybWluYWwodHdfbW9jaykKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMF0g
PT0gIm0gPSAiICsgcmVwcigibSIgKiA5MCkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNb
MV0gPT0gInggPSA1LCB5ID0gMTMiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzJdID09
ICJ6ID0gIiArIHJlcHIoInoiICogMTIwKQogCi0gICAgZGVmIHRlc3RfcmVwcl90cmFjZWJhY2tl
bnRyeV9saW5lc192YXJfa3dfYXJncyhzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVmIHRlc3Rf
cmVwcl90cmFjZWJhY2tlbnRyeV9saW5lc192YXJfa3dfYXJncyhzZWxmLCBpbXBvcnRhc21vZCwg
dHdfbW9jaykgLT4gTm9uZToKICAgICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAg
ICAiIiIKICAgICAgICAgICAgIGRlZiBmdW5jMSh4LCAqeSwgKip6KToKQEAgLTY2MiwxOCArNjY0
LDE5IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBlbnRyeSA9IGV4Y2luZm8udHJhY2Vi
YWNrWy0xXQogICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhmdW5jYXJncz1UcnVlKQogICAg
ICAgICByZXByZnVuY2FyZ3MgPSBwLnJlcHJfYXJncyhlbnRyeSkKKyAgICAgICAgYXNzZXJ0IHJl
cHJmdW5jYXJncyBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgcmVwcmZ1bmNhcmdzLmFyZ3Nb
MF0gPT0gKCJ4IiwgcmVwcigiYSIpKQogICAgICAgICBhc3NlcnQgcmVwcmZ1bmNhcmdzLmFyZ3Nb
MV0gPT0gKCJ5IiwgcmVwcigoImIiLCkpKQogICAgICAgICBhc3NlcnQgcmVwcmZ1bmNhcmdzLmFy
Z3NbMl0gPT0gKCJ6IiwgcmVwcih7ImMiOiAiZCJ9KSkKIAogICAgICAgICBwID0gRm9ybWF0dGVk
RXhjaW5mbyhmdW5jYXJncz1UcnVlKQogICAgICAgICByZXByX2VudHJ5ID0gcC5yZXByX3RyYWNl
YmFja19lbnRyeShlbnRyeSkKKyAgICAgICAgYXNzZXJ0IHJlcHJfZW50cnkucmVwcmZ1bmNhcmdz
CiAgICAgICAgIGFzc2VydCByZXByX2VudHJ5LnJlcHJmdW5jYXJncy5hcmdzID09IHJlcHJmdW5j
YXJncy5hcmdzCi0gICAgICAgIHR3ID0gVFdNb2NrKCkKLSAgICAgICAgcmVwcl9lbnRyeS50b3Rl
cm1pbmFsKHR3KQotICAgICAgICBhc3NlcnQgdHcubGluZXNbMF0gPT0gInggPSAnYScsIHkgPSAo
J2InLCksIHogPSB7J2MnOiAnZCd9IgorICAgICAgICByZXByX2VudHJ5LnRvdGVybWluYWwodHdf
bW9jaykKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMF0gPT0gInggPSAnYScsIHkgPSAo
J2InLCksIHogPSB7J2MnOiAnZCd9IgogCi0gICAgZGVmIHRlc3RfcmVwcl90cmFjZWJhY2tlbnRy
eV9zaG9ydChzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVmIHRlc3RfcmVwcl90cmFjZWJhY2tl
bnRyeV9zaG9ydChzZWxmLCBpbXBvcnRhc21vZCkgLT4gTm9uZToKICAgICAgICAgbW9kID0gaW1w
b3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBmdW5jMSgpOgpAQCAt
Njg4LDYgKzY5MSw3IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBsaW5lcyA9IHJlcHJ0
Yi5saW5lcwogICAgICAgICBiYXNlbmFtZSA9IHB5LnBhdGgubG9jYWwobW9kLl9fZmlsZV9fKS5i
YXNlbmFtZQogICAgICAgICBhc3NlcnQgbGluZXNbMF0gPT0gIiAgICBmdW5jMSgpIgorICAgICAg
ICBhc3NlcnQgcmVwcnRiLnJlcHJmaWxlbG9jIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBi
YXNlbmFtZSBpbiBzdHIocmVwcnRiLnJlcHJmaWxlbG9jLnBhdGgpCiAgICAgICAgIGFzc2VydCBy
ZXBydGIucmVwcmZpbGVsb2MubGluZW5vID09IDUKIApAQCAtNjk3LDYgKzcwMSw3IEBAIHJhaXNl
IFZhbHVlRXJyb3IoKQogICAgICAgICBsaW5lcyA9IHJlcHJ0Yi5saW5lcwogICAgICAgICBhc3Nl
cnQgbGluZXNbMF0gPT0gJyAgICByYWlzZSBWYWx1ZUVycm9yKCJoZWxsbyIpJwogICAgICAgICBh
c3NlcnQgbGluZXNbMV0gPT0gIkUgICBWYWx1ZUVycm9yOiBoZWxsbyIKKyAgICAgICAgYXNzZXJ0
IHJlcHJ0Yi5yZXByZmlsZWxvYyBpcyBub3QgTm9uZQogICAgICAgICBhc3NlcnQgYmFzZW5hbWUg
aW4gc3RyKHJlcHJ0Yi5yZXByZmlsZWxvYy5wYXRoKQogICAgICAgICBhc3NlcnQgcmVwcnRiLnJl
cHJmaWxlbG9jLmxpbmVubyA9PSAzCiAKQEAgLTczNiw3ICs3NDEsNyBAQCByYWlzZSBWYWx1ZUVy
cm9yKCkKICAgICAgICAgcmVwcnRiID0gcC5yZXByX3RyYWNlYmFjayhleGNpbmZvKQogICAgICAg
ICBhc3NlcnQgbGVuKHJlcHJ0Yi5yZXByZW50cmllcykgPT0gMwogCi0gICAgZGVmIHRlc3RfdHJh
Y2ViYWNrX3Nob3J0X25vX3NvdXJjZShzZWxmLCBpbXBvcnRhc21vZCwgbW9ua2V5cGF0Y2gpOgor
ICAgIGRlZiB0ZXN0X3RyYWNlYmFja19zaG9ydF9ub19zb3VyY2Uoc2VsZiwgaW1wb3J0YXNtb2Qs
IG1vbmtleXBhdGNoKSAtPiBOb25lOgogICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGZ1bmMxKCk6CkBAIC03NDksNyArNzU0LDcgQEAg
cmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9y
dCBDb2RlCiAKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihDb2RlLCAicGF0aCIsICJib2d1
cyIpCi0gICAgICAgIGV4Y2luZm8udHJhY2ViYWNrWzBdLmZyYW1lLmNvZGUucGF0aCA9ICJib2d1
cyIKKyAgICAgICAgZXhjaW5mby50cmFjZWJhY2tbMF0uZnJhbWUuY29kZS5wYXRoID0gImJvZ3Vz
IiAgIyB0eXBlOiBpZ25vcmVbbWlzY10KICAgICAgICAgcCA9IEZvcm1hdHRlZEV4Y2luZm8oc3R5
bGU9InNob3J0IikKICAgICAgICAgcmVwcnRiID0gcC5yZXByX3RyYWNlYmFja19lbnRyeShleGNp
bmZvLnRyYWNlYmFja1stMl0pCiAgICAgICAgIGxpbmVzID0gcmVwcnRiLmxpbmVzCkBAIC03NjIs
NyArNzY3LDcgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAgIGFzc2VydCBsYXN0X2xpbmVz
WzBdID09ICcgICAgcmFpc2UgVmFsdWVFcnJvcigiaGVsbG8iKScKICAgICAgICAgYXNzZXJ0IGxh
c3RfbGluZXNbMV0gPT0gIkUgICBWYWx1ZUVycm9yOiBoZWxsbyIKIAotICAgIGRlZiB0ZXN0X3Jl
cHJfdHJhY2ViYWNrX2FuZF9leGNpbmZvKHNlbGYsIGltcG9ydGFzbW9kKToKKyAgICBkZWYgdGVz
dF9yZXByX3RyYWNlYmFja19hbmRfZXhjaW5mbyhzZWxmLCBpbXBvcnRhc21vZCkgLT4gTm9uZToK
ICAgICAgICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
IGRlZiBmKHgpOgpAQCAtNzczLDcgKzc3OCw4IEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAg
ICApCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1vZC5lbnRy
eSkKIAotICAgICAgICBmb3Igc3R5bGUgaW4gKCJsb25nIiwgInNob3J0Iik6CisgICAgICAgIHN0
eWxlcyA9ICgibG9uZyIsICJzaG9ydCIpICAjIHR5cGU6IFR1cGxlW19UcmFjZWJhY2tTdHlsZSwg
Li4uXQorICAgICAgICBmb3Igc3R5bGUgaW4gc3R5bGVzOgogICAgICAgICAgICAgcCA9IEZvcm1h
dHRlZEV4Y2luZm8oc3R5bGU9c3R5bGUpCiAgICAgICAgICAgICByZXBydGIgPSBwLnJlcHJfdHJh
Y2ViYWNrKGV4Y2luZm8pCiAgICAgICAgICAgICBhc3NlcnQgbGVuKHJlcHJ0Yi5yZXByZW50cmll
cykgPT0gMgpAQCAtNzgyLDEzICs3ODgsMTQgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAg
ICAgICByZXByID0gcC5yZXByX2V4Y2luZm8oZXhjaW5mbykKICAgICAgICAgICAgIGFzc2VydCBy
ZXByLnJlcHJ0cmFjZWJhY2sKICAgICAgICAgICAgIGFzc2VydCBsZW4ocmVwci5yZXBydHJhY2Vi
YWNrLnJlcHJlbnRyaWVzKSA9PSBsZW4ocmVwcnRiLnJlcHJlbnRyaWVzKQotICAgICAgICAgICAg
aWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgotICAgICAgICAgICAgICAgIGFzc2VydCByZXBy
LmNoYWluWzBdWzBdCi0gICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihyZXByLmNoYWluWzBdWzBd
LnJlcHJlbnRyaWVzKSA9PSBsZW4ocmVwcnRiLnJlcHJlbnRyaWVzKQorCisgICAgICAgICAgICBh
c3NlcnQgcmVwci5jaGFpblswXVswXQorICAgICAgICAgICAgYXNzZXJ0IGxlbihyZXByLmNoYWlu
WzBdWzBdLnJlcHJlbnRyaWVzKSA9PSBsZW4ocmVwcnRiLnJlcHJlbnRyaWVzKQorICAgICAgICAg
ICAgYXNzZXJ0IHJlcHIucmVwcmNyYXNoIGlzIG5vdCBOb25lCiAgICAgICAgICAgICBhc3NlcnQg
cmVwci5yZXByY3Jhc2gucGF0aC5lbmRzd2l0aCgibW9kLnB5IikKICAgICAgICAgICAgIGFzc2Vy
dCByZXByLnJlcHJjcmFzaC5tZXNzYWdlID09ICJWYWx1ZUVycm9yOiAwIgogCi0gICAgZGVmIHRl
c3RfcmVwcl90cmFjZWJhY2tfd2l0aF9pbnZhbGlkX2N3ZChzZWxmLCBpbXBvcnRhc21vZCwgbW9u
a2V5cGF0Y2gpOgorICAgIGRlZiB0ZXN0X3JlcHJfdHJhY2ViYWNrX3dpdGhfaW52YWxpZF9jd2Qo
c2VsZiwgaW1wb3J0YXNtb2QsIG1vbmtleXBhdGNoKSAtPiBOb25lOgogICAgICAgICBtb2QgPSBp
bXBvcnRhc21vZCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGYoeCk6CkBAIC03
OTksMTYgKzgwNiw0NyBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgKQogICAgICAgICBl
eGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBtb2QuZW50cnkpCiAKLSAgICAgICAg
cCA9IEZvcm1hdHRlZEV4Y2luZm8oKQorICAgICAgICBwID0gRm9ybWF0dGVkRXhjaW5mbyhhYnNw
YXRoPUZhbHNlKQorCisgICAgICAgIHJhaXNlZCA9IDAKKworICAgICAgICBvcmlnX2dldGN3ZCA9
IG9zLmdldGN3ZAogCiAgICAgICAgIGRlZiByYWlzZW9zKCk6Ci0gICAgICAgICAgICByYWlzZSBP
U0Vycm9yKDIpCisgICAgICAgICAgICBub25sb2NhbCByYWlzZWQKKyAgICAgICAgICAgIHVwZnJh
bWUgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrCisgICAgICAgICAgICBhc3NlcnQgdXBmcmFtZSBp
cyBub3QgTm9uZQorICAgICAgICAgICAgaWYgdXBmcmFtZS5mX2NvZGUuY29fbmFtZSA9PSAiY2hl
Y2tlZF9jYWxsIjoKKyAgICAgICAgICAgICAgICAjIE9ubHkgcmFpc2Ugd2l0aCBleHBlY3RlZCBj
YWxscywgYnV0IG5vdCB2aWEgZS5nLiBpbnNwZWN0IGZvcgorICAgICAgICAgICAgICAgICMgcHkz
OC13aW5kb3dzLgorICAgICAgICAgICAgICAgIHJhaXNlZCArPSAxCisgICAgICAgICAgICAgICAg
cmFpc2UgT1NFcnJvcigyLCAiY3VzdG9tX29zZXJyb3IiKQorICAgICAgICAgICAgcmV0dXJuIG9y
aWdfZ2V0Y3dkKCkKIAogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9zLCAiZ2V0Y3dkIiwg
cmFpc2VvcykKICAgICAgICAgYXNzZXJ0IHAuX21ha2VwYXRoKF9fZmlsZV9fKSA9PSBfX2ZpbGVf
XwotICAgICAgICBwLnJlcHJfdHJhY2ViYWNrKGV4Y2luZm8pCisgICAgICAgIGFzc2VydCByYWlz
ZWQgPT0gMQorICAgICAgICByZXByX3RiID0gcC5yZXByX3RyYWNlYmFjayhleGNpbmZvKQorCisg
ICAgICAgIG1hdGNoZXIgPSBMaW5lTWF0Y2hlcihzdHIocmVwcl90Yikuc3BsaXRsaW5lcygpKQor
ICAgICAgICBtYXRjaGVyLmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgImRlZiBlbnRyeSgpOiIsCisgICAgICAgICAgICAgICAgIj4gICAgICAgZigwKSIsCisg
ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgInt9OjU6ICIuZm9ybWF0KG1vZC5f
X2ZpbGVfXyksCisgICAgICAgICAgICAgICAgIl8gXyAqIiwKKyAgICAgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgICAgICAiICAgIGRlZiBmKHgpOiIsCisgICAgICAgICAgICAgICAgIj4gICAg
ICAgcmFpc2UgVmFsdWVFcnJvcih4KSIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgVmFsdWVF
cnJvcjogMCIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgInt9OjM6IFZh
bHVlRXJyb3IiLmZvcm1hdChtb2QuX19maWxlX18pLAorICAgICAgICAgICAgXQorICAgICAgICAp
CisgICAgICAgIGFzc2VydCByYWlzZWQgPT0gMwogCi0gICAgZGVmIHRlc3RfcmVwcl9leGNpbmZv
X2FkZG91dGVycihzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgZGVmIHRlc3RfcmVwcl9leGNpbmZv
X2FkZG91dGVycihzZWxmLCBpbXBvcnRhc21vZCwgdHdfbW9jayk6CiAgICAgICAgIG1vZCA9IGlt
cG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgZW50cnkoKToKQEAg
LTgxOCwxMiArODU2LDExIEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBleGNpbmZvID0g
cHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBtb2QuZW50cnkpCiAgICAgICAgIHJlcHIgPSBleGNp
bmZvLmdldHJlcHIoKQogICAgICAgICByZXByLmFkZHNlY3Rpb24oInRpdGxlIiwgImNvbnRlbnQi
KQotICAgICAgICB0d21vY2sgPSBUV01vY2soKQotICAgICAgICByZXByLnRvdGVybWluYWwodHdt
b2NrKQotICAgICAgICBhc3NlcnQgdHdtb2NrLmxpbmVzWy0xXSA9PSAiY29udGVudCIKLSAgICAg
ICAgYXNzZXJ0IHR3bW9jay5saW5lc1stMl0gPT0gKCItIiwgInRpdGxlIikKKyAgICAgICAgcmVw
ci50b3Rlcm1pbmFsKHR3X21vY2spCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWy0xXSA9
PSAiY29udGVudCIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbLTJdID09ICgiLSIsICJ0
aXRsZSIpCiAKLSAgICBkZWYgdGVzdF9yZXByX2V4Y2luZm9fcmVwcmNyYXNoKHNlbGYsIGltcG9y
dGFzbW9kKToKKyAgICBkZWYgdGVzdF9yZXByX2V4Y2luZm9fcmVwcmNyYXNoKHNlbGYsIGltcG9y
dGFzbW9kKSAtPiBOb25lOgogICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgZGVmIGVudHJ5KCk6CkBAIC04MzIsNiArODY5LDcgQEAgcmFpc2Ug
VmFsdWVFcnJvcigpCiAgICAgICAgICkKICAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMo
VmFsdWVFcnJvciwgbW9kLmVudHJ5KQogICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXByKCkK
KyAgICAgICAgYXNzZXJ0IHJlcHIucmVwcmNyYXNoIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2Vy
dCByZXByLnJlcHJjcmFzaC5wYXRoLmVuZHN3aXRoKCJtb2QucHkiKQogICAgICAgICBhc3NlcnQg
cmVwci5yZXByY3Jhc2gubGluZW5vID09IDMKICAgICAgICAgYXNzZXJ0IHJlcHIucmVwcmNyYXNo
Lm1lc3NhZ2UgPT0gIlZhbHVlRXJyb3IiCkBAIC04NTYsNyArODk0LDcgQEAgcmFpc2UgVmFsdWVF
cnJvcigpCiAgICAgICAgICAgICBhc3NlcnQgcmVwcnRiLmV4dHJhbGluZSA9PSAiISEhIFJlY3Vy
c2lvbiBkZXRlY3RlZCAoc2FtZSBsb2NhbHMgJiBwb3NpdGlvbikiCiAgICAgICAgICAgICBhc3Nl
cnQgc3RyKHJlcHJ0YikKIAotICAgIGRlZiB0ZXN0X3JlcHJleGNpbmZvX2dldHJlcHIoc2VsZiwg
aW1wb3J0YXNtb2QpOgorICAgIGRlZiB0ZXN0X3JlcHJleGNpbmZvX2dldHJlcHIoc2VsZiwgaW1w
b3J0YXNtb2QpIC0+IE5vbmU6CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAg
ICAgIiIiCiAgICAgICAgICAgICBkZWYgZih4KToKQEAgLTg2NywyOSArOTA1LDI3IEBAIHJhaXNl
IFZhbHVlRXJyb3IoKQogICAgICAgICApCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2Vz
KFZhbHVlRXJyb3IsIG1vZC5lbnRyeSkKIAotICAgICAgICBmb3Igc3R5bGUgaW4gKCJzaG9ydCIs
ICJsb25nIiwgIm5vIik6CisgICAgICAgIHN0eWxlcyA9ICgic2hvcnQiLCAibG9uZyIsICJubyIp
ICAjIHR5cGU6IFR1cGxlW19UcmFjZWJhY2tTdHlsZSwgLi4uXQorICAgICAgICBmb3Igc3R5bGUg
aW4gc3R5bGVzOgogICAgICAgICAgICAgZm9yIHNob3dsb2NhbHMgaW4gKFRydWUsIEZhbHNlKToK
ICAgICAgICAgICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXByKHN0eWxlPXN0eWxlLCBzaG93
bG9jYWxzPXNob3dsb2NhbHMpCi0gICAgICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1sw
XSA8IDM6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcHIsIFJlcHJF
eGNlcHRpb25JbmZvKQogICAgICAgICAgICAgICAgIGFzc2VydCByZXByLnJlcHJ0cmFjZWJhY2su
c3R5bGUgPT0gc3R5bGUKLSAgICAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49
IDM6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcHIsIEV4Y2VwdGlv
bkNoYWluUmVwcikKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJlcHIgaW4gcmVwci5jaGFpbjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCByZXByWzBdLnN0eWxlID09IHN0eWxlCisK
KyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXByLCBFeGNlcHRpb25DaGFpblJl
cHIpCisgICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVwci5jaGFpbjoKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0IHJbMF0uc3R5bGUgPT0gc3R5bGUKIAogICAgIGRlZiB0ZXN0X3JlcHJleGNp
bmZvX3VuaWNvZGUoc2VsZik6CiAgICAgICAgIGZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9y
dCBUZXJtaW5hbFJlcHIKIAogICAgICAgICBjbGFzcyBNeVJlcHIoVGVybWluYWxSZXByKToKKyAg
ICAgICAgICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3OiBUZXJtaW5hbFdyaXRlcikgLT4gTm9u
ZToKKyAgICAgICAgICAgICAgICB0dy5saW5lKCLRjyIpCiAKLSAgICAgICAgICAgIGRlZiB0b3Rl
cm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgICAgICAgICB0dy5saW5lKHB5LmJ1aWx0aW4uX3Rv
dGV4dCgi0Y8iLCAidXRmLTgiKSkKLQotICAgICAgICB4ID0gcHkuYnVpbHRpbi5fdG90ZXh0KE15
UmVwcigpKQotICAgICAgICBhc3NlcnQgeCA9PSBweS5idWlsdGluLl90b3RleHQoItGPIiwgInV0
Zi04IikKKyAgICAgICAgeCA9IHN0cihNeVJlcHIoKSkKKyAgICAgICAgYXNzZXJ0IHggPT0gItGP
IgogCi0gICAgZGVmIHRlc3RfdG90ZXJtaW5hbF9sb25nKHNlbGYsIGltcG9ydGFzbW9kKToKKyAg
ICBkZWYgdGVzdF90b3Rlcm1pbmFsX2xvbmcoc2VsZiwgaW1wb3J0YXNtb2QsIHR3X21vY2spOgog
ICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAg
ZGVmIGcoeCk6CkBAIC05MDEsMjcgKzkzNywyNiBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAg
ICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbW9kLmYpCiAgICAgICAgIGV4
Y2luZm8udHJhY2ViYWNrID0gZXhjaW5mby50cmFjZWJhY2suZmlsdGVyKCkKICAgICAgICAgcmVw
ciA9IGV4Y2luZm8uZ2V0cmVwcigpCi0gICAgICAgIHR3ID0gVFdNb2NrKCkKLSAgICAgICAgcmVw
ci50b3Rlcm1pbmFsKHR3KQotICAgICAgICBhc3NlcnQgdHcubGluZXNbMF0gPT0gIiIKLSAgICAg
ICAgdHcubGluZXMucG9wKDApCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1swXSA9PSAiICAgIGRl
ZiBmKCk6IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMV0gPT0gIj4gICAgICAgZygzKSIKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzJdID09ICIiCi0gICAgICAgIGxpbmUgPSB0dy5nZXRfd3Jp
dGVfbXNnKDMpCisgICAgICAgIHJlcHIudG90ZXJtaW5hbCh0d19tb2NrKQorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1swXSA9PSAiIgorICAgICAgICB0d19tb2NrLmxpbmVzLnBvcCgwKQor
ICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1swXSA9PSAiICAgIGRlZiBmKCk6IgorICAgICAg
ICBhc3NlcnQgdHdfbW9jay5saW5lc1sxXSA9PSAiPiAgICAgICBnKDMpIgorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1syXSA9PSAiIgorICAgICAgICBsaW5lID0gdHdfbW9jay5nZXRfd3Jp
dGVfbXNnKDMpCiAgICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAg
ICBhc3NlcnQgdHcubGluZXNbNF0gPT0gKCI6NTogIikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVz
WzVdID09ICgiXyAiLCBOb25lKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbNl0gPT0gIiIKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzddID09ICIgICAgZGVmIGcoeCk6IgotICAgICAgICBhc3Nl
cnQgdHcubGluZXNbOF0gPT0gIj4gICAgICAgcmFpc2UgVmFsdWVFcnJvcih4KSIKLSAgICAgICAg
YXNzZXJ0IHR3LmxpbmVzWzldID09ICJFICAgICAgIFZhbHVlRXJyb3I6IDMiCi0gICAgICAgIGFz
c2VydCB0dy5saW5lc1sxMF0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0ZV9tc2co
MTEpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzRdID09ICgiOjU6ICIpCisgICAgICAg
IGFzc2VydCB0d19tb2NrLmxpbmVzWzVdID09ICgiXyAiLCBOb25lKQorICAgICAgICBhc3NlcnQg
dHdfbW9jay5saW5lc1s2XSA9PSAiIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s3XSA9
PSAiICAgIGRlZiBnKHgpOiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbOF0gPT0gIj4g
ICAgICAgcmFpc2UgVmFsdWVFcnJvcih4KSIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNb
OV0gPT0gIkUgICAgICAgVmFsdWVFcnJvcjogMyIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbMTBdID09ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2coMTEpCiAg
ICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbMTJdID09ICI6MzogVmFsdWVFcnJvciIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbMTJdID09ICI6MzogVmFsdWVFcnJvciIKIAotICAgIGRlZiB0ZXN0X3RvdGVybWluYWxfbG9u
Z19taXNzaW5nX3NvdXJjZShzZWxmLCBpbXBvcnRhc21vZCwgdG1wZGlyKToKKyAgICBkZWYgdGVz
dF90b3Rlcm1pbmFsX2xvbmdfbWlzc2luZ19zb3VyY2Uoc2VsZiwgaW1wb3J0YXNtb2QsIHRtcGRp
ciwgdHdfbW9jayk6CiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBkZWYgZyh4KToKQEAgLTkzNCwyNSArOTY5LDI0IEBAIHJhaXNlIFZhbHVl
RXJyb3IoKQogICAgICAgICB0bXBkaXIuam9pbigibW9kLnB5IikucmVtb3ZlKCkKICAgICAgICAg
ZXhjaW5mby50cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjay5maWx0ZXIoKQogICAgICAgICBy
ZXByID0gZXhjaW5mby5nZXRyZXByKCkKLSAgICAgICAgdHcgPSBUV01vY2soKQotICAgICAgICBy
ZXByLnRvdGVybWluYWwodHcpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1swXSA9PSAiIgotICAg
ICAgICB0dy5saW5lcy5wb3AoMCkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzBdID09ICI+ICAg
Pz8/IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMV0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3
LmdldF93cml0ZV9tc2coMikKKyAgICAgICAgcmVwci50b3Rlcm1pbmFsKHR3X21vY2spCisgICAg
ICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzBdID09ICIiCisgICAgICAgIHR3X21vY2subGluZXMu
cG9wKDApCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzBdID09ICI+ICAgPz8/IgorICAg
ICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxXSA9PSAiIgorICAgICAgICBsaW5lID0gdHdfbW9j
ay5nZXRfd3JpdGVfbXNnKDIpCiAgICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHki
KQotICAgICAgICBhc3NlcnQgdHcubGluZXNbM10gPT0gIjo1OiAiCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1s0XSA9PSAoIl8gIiwgTm9uZSkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzVdID09
ICIiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s2XSA9PSAiPiAgID8/PyIKLSAgICAgICAgYXNz
ZXJ0IHR3LmxpbmVzWzddID09ICJFICAgVmFsdWVFcnJvcjogMyIKLSAgICAgICAgYXNzZXJ0IHR3
LmxpbmVzWzhdID09ICIiCi0gICAgICAgIGxpbmUgPSB0dy5nZXRfd3JpdGVfbXNnKDkpCisgICAg
ICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzNdID09ICI6NTogIgorICAgICAgICBhc3NlcnQgdHdf
bW9jay5saW5lc1s0XSA9PSAoIl8gIiwgTm9uZSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbNV0gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNl0gPT0gIj4gICA/Pz8i
CisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzddID09ICJFICAgVmFsdWVFcnJvcjogMyIK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbOF0gPT0gIiIKKyAgICAgICAgbGluZSA9IHR3
X21vY2suZ2V0X3dyaXRlX21zZyg5KQogICAgICAgICBhc3NlcnQgbGluZS5lbmRzd2l0aCgibW9k
LnB5IikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzEwXSA9PSAiOjM6IFZhbHVlRXJyb3IiCisg
ICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzEwXSA9PSAiOjM6IFZhbHVlRXJyb3IiCiAKLSAg
ICBkZWYgdGVzdF90b3Rlcm1pbmFsX2xvbmdfaW5jb21wbGV0ZV9zb3VyY2Uoc2VsZiwgaW1wb3J0
YXNtb2QsIHRtcGRpcik6CisgICAgZGVmIHRlc3RfdG90ZXJtaW5hbF9sb25nX2luY29tcGxldGVf
c291cmNlKHNlbGYsIGltcG9ydGFzbW9kLCB0bXBkaXIsIHR3X21vY2spOgogICAgICAgICBtb2Qg
PSBpbXBvcnRhc21vZCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGcoeCk6CkBA
IC05NjUsMjUgKzk5OSwyNCBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgdG1wZGlyLmpv
aW4oIm1vZC5weSIpLndyaXRlKCJhc2RmIikKICAgICAgICAgZXhjaW5mby50cmFjZWJhY2sgPSBl
eGNpbmZvLnRyYWNlYmFjay5maWx0ZXIoKQogICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXBy
KCkKLSAgICAgICAgdHcgPSBUV01vY2soKQotICAgICAgICByZXByLnRvdGVybWluYWwodHcpCi0g
ICAgICAgIGFzc2VydCB0dy5saW5lc1swXSA9PSAiIgotICAgICAgICB0dy5saW5lcy5wb3AoMCkK
LSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzBdID09ICI+ICAgPz8/IgotICAgICAgICBhc3NlcnQg
dHcubGluZXNbMV0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0ZV9tc2coMikKKyAg
ICAgICAgcmVwci50b3Rlcm1pbmFsKHR3X21vY2spCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxp
bmVzWzBdID09ICIiCisgICAgICAgIHR3X21vY2subGluZXMucG9wKDApCisgICAgICAgIGFzc2Vy
dCB0d19tb2NrLmxpbmVzWzBdID09ICI+ICAgPz8/IgorICAgICAgICBhc3NlcnQgdHdfbW9jay5s
aW5lc1sxXSA9PSAiIgorICAgICAgICBsaW5lID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKDIpCiAg
ICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbM10gPT0gIjo1OiAiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s0XSA9PSAoIl8gIiwg
Tm9uZSkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzVdID09ICIiCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1s2XSA9PSAiPiAgID8/PyIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzddID09ICJF
ICAgVmFsdWVFcnJvcjogMyIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzhdID09ICIiCi0gICAg
ICAgIGxpbmUgPSB0dy5nZXRfd3JpdGVfbXNnKDkpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxp
bmVzWzNdID09ICI6NTogIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s0XSA9PSAoIl8g
IiwgTm9uZSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNV0gPT0gIiIKKyAgICAgICAg
YXNzZXJ0IHR3X21vY2subGluZXNbNl0gPT0gIj4gICA/Pz8iCisgICAgICAgIGFzc2VydCB0d19t
b2NrLmxpbmVzWzddID09ICJFICAgVmFsdWVFcnJvcjogMyIKKyAgICAgICAgYXNzZXJ0IHR3X21v
Y2subGluZXNbOF0gPT0gIiIKKyAgICAgICAgbGluZSA9IHR3X21vY2suZ2V0X3dyaXRlX21zZyg5
KQogICAgICAgICBhc3NlcnQgbGluZS5lbmRzd2l0aCgibW9kLnB5IikKLSAgICAgICAgYXNzZXJ0
IHR3LmxpbmVzWzEwXSA9PSAiOjM6IFZhbHVlRXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2Nr
LmxpbmVzWzEwXSA9PSAiOjM6IFZhbHVlRXJyb3IiCiAKLSAgICBkZWYgdGVzdF90b3Rlcm1pbmFs
X2xvbmdfZmlsZW5hbWVzKHNlbGYsIGltcG9ydGFzbW9kKToKKyAgICBkZWYgdGVzdF90b3Rlcm1p
bmFsX2xvbmdfZmlsZW5hbWVzKHNlbGYsIGltcG9ydGFzbW9kLCB0d19tb2NrKToKICAgICAgICAg
bW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBmKCk6
CkBAIC05OTEsMjMgKzEwMjQsMjIgQEAgcmFpc2UgVmFsdWVFcnJvcigpCiAgICAgICAgICIiIgog
ICAgICAgICApCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1v
ZC5mKQotICAgICAgICB0dyA9IFRXTW9jaygpCiAgICAgICAgIHBhdGggPSBweS5wYXRoLmxvY2Fs
KG1vZC5fX2ZpbGVfXykKICAgICAgICAgb2xkID0gcGF0aC5kaXJwYXRoKCkuY2hkaXIoKQogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXByKGFic3BhdGg9RmFs
c2UpCi0gICAgICAgICAgICByZXByLnRvdGVybWluYWwodHcpCisgICAgICAgICAgICByZXByLnRv
dGVybWluYWwodHdfbW9jaykKICAgICAgICAgICAgIHggPSBweS5wYXRoLmxvY2FsKCkuYmVzdHJl
bHBhdGgocGF0aCkKICAgICAgICAgICAgIGlmIGxlbih4KSA8IGxlbihzdHIocGF0aCkpOgotICAg
ICAgICAgICAgICAgIG1zZyA9IHR3LmdldF93cml0ZV9tc2coLTIpCisgICAgICAgICAgICAgICAg
bXNnID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKC0yKQogICAgICAgICAgICAgICAgIGFzc2VydCBt
c2cgPT0gIm1vZC5weSIKLSAgICAgICAgICAgICAgICBhc3NlcnQgdHcubGluZXNbLTFdID09ICI6
MzogVmFsdWVFcnJvciIKKyAgICAgICAgICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1stMV0g
PT0gIjozOiBWYWx1ZUVycm9yIgogCiAgICAgICAgICAgICByZXByID0gZXhjaW5mby5nZXRyZXBy
KGFic3BhdGg9VHJ1ZSkKLSAgICAgICAgICAgIHJlcHIudG90ZXJtaW5hbCh0dykKLSAgICAgICAg
ICAgIG1zZyA9IHR3LmdldF93cml0ZV9tc2coLTIpCisgICAgICAgICAgICByZXByLnRvdGVybWlu
YWwodHdfbW9jaykKKyAgICAgICAgICAgIG1zZyA9IHR3X21vY2suZ2V0X3dyaXRlX21zZygtMikK
ICAgICAgICAgICAgIGFzc2VydCBtc2cgPT0gcGF0aAotICAgICAgICAgICAgbGluZSA9IHR3Lmxp
bmVzWy0xXQorICAgICAgICAgICAgbGluZSA9IHR3X21vY2subGluZXNbLTFdCiAgICAgICAgICAg
ICBhc3NlcnQgbGluZSA9PSAiOjM6IFZhbHVlRXJyb3IiCiAgICAgICAgIGZpbmFsbHk6CiAgICAg
ICAgICAgICBvbGQuY2hkaXIoKQpAQCAtMTAxNSwzNCArMTA0Nyw0MSBAQCByYWlzZSBWYWx1ZUVy
cm9yKCkKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCiAgICAgICAgICJyZXByb3B0aW9u
cyIsCiAgICAgICAgIFsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAic3R5bGUiOiBz
dHlsZSwKLSAgICAgICAgICAgICAgICAic2hvd2xvY2FscyI6IHNob3dsb2NhbHMsCi0gICAgICAg
ICAgICAgICAgImZ1bmNhcmdzIjogZnVuY2FyZ3MsCi0gICAgICAgICAgICAgICAgInRiZmlsdGVy
IjogdGJmaWx0ZXIsCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3Igc3R5bGUgaW4gKCJs
b25nIiwgInNob3J0IiwgIm5vIikKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJzdHlsZSI6IHN0eWxlLAorICAgICAgICAg
ICAgICAgICAgICAic2hvd2xvY2FscyI6IHNob3dsb2NhbHMsCisgICAgICAgICAgICAgICAgICAg
ICJmdW5jYXJncyI6IGZ1bmNhcmdzLAorICAgICAgICAgICAgICAgICAgICAidGJmaWx0ZXIiOiB0
YmZpbHRlciwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGlkPSJzdHlsZT17
fSxzaG93bG9jYWxzPXt9LGZ1bmNhcmdzPXt9LHRiZmlsdGVyPXt9Ii5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLCBzaG93bG9jYWxzLCBmdW5jYXJncywgdGJmaWx0ZXIKKyAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIHN0eWxlIGluIFsi
bG9uZyIsICJzaG9ydCIsICJsaW5lIiwgIm5vIiwgIm5hdGl2ZSIsICJ2YWx1ZSIsICJhdXRvIl0K
ICAgICAgICAgICAgIGZvciBzaG93bG9jYWxzIGluIChUcnVlLCBGYWxzZSkKICAgICAgICAgICAg
IGZvciB0YmZpbHRlciBpbiAoVHJ1ZSwgRmFsc2UpCiAgICAgICAgICAgICBmb3IgZnVuY2FyZ3Mg
aW4gKFRydWUsIEZhbHNlKQogICAgICAgICBdLAogICAgICkKLSAgICBkZWYgdGVzdF9mb3JtYXRf
ZXhjaW5mbyhzZWxmLCBpbXBvcnRhc21vZCwgcmVwcm9wdGlvbnMpOgotICAgICAgICBtb2QgPSBp
bXBvcnRhc21vZCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIGcoeCk6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcih4KQotICAgICAgICAgICAgZGVmIGYoKToKLSAg
ICAgICAgICAgICAgICBnKDMpCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGV4Y2lu
Zm8gPSBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1vZC5mKQotICAgICAgICB0dyA9IHB5Lmlv
LlRlcm1pbmFsV3JpdGVyKHN0cmluZ2lvPVRydWUpCisgICAgZGVmIHRlc3RfZm9ybWF0X2V4Y2lu
Zm8oc2VsZiwgcmVwcm9wdGlvbnM6IERpY3Rbc3RyLCBBbnldKSAtPiBOb25lOgorICAgICAgICBk
ZWYgYmFyKCk6CisgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJzb21lIGVycm9yIgorCisgICAg
ICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIGJhcigpCisKKyAgICAgICAgIyB1c2luZyBpbmxp
bmUgZnVuY3Rpb25zIGFzIG9wcG9zZWQgdG8gaW1wb3J0YXNtb2Qgc28gd2UgZ2V0IHNvdXJjZSBj
b2RlIGxpbmVzCisgICAgICAgICMgaW4gdGhlIHRyYWNlYmFja3MgKG90aGVyd2lzZSBnZXRpbnNw
ZWN0IGRvZXNuJ3QgZmluZCB0aGUgc291cmNlIGNvZGUpLgorICAgICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAgICBmb28oKQorICAg
ICAgICBmaWxlID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKGZp
bGU9ZmlsZSkKICAgICAgICAgcmVwciA9IGV4Y2luZm8uZ2V0cmVwcigqKnJlcHJvcHRpb25zKQog
ICAgICAgICByZXByLnRvdGVybWluYWwodHcpCi0gICAgICAgIGFzc2VydCB0dy5zdHJpbmdpby5n
ZXR2YWx1ZSgpCisgICAgICAgIGFzc2VydCBmaWxlLmdldHZhbHVlKCkKIAotICAgIGRlZiB0ZXN0
X3RyYWNlYmFja19yZXByX3N0eWxlKHNlbGYsIGltcG9ydGFzbW9kKToKKyAgICBkZWYgdGVzdF90
cmFjZWJhY2tfcmVwcl9zdHlsZShzZWxmLCBpbXBvcnRhc21vZCwgdHdfbW9jayk6CiAgICAgICAg
IG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgZigp
OgpAQCAtMTA2MCwzNiArMTA5OSwzNCBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgZXhj
aW5mby50cmFjZWJhY2tbMV0uc2V0X3JlcHJfc3R5bGUoInNob3J0IikKICAgICAgICAgZXhjaW5m
by50cmFjZWJhY2tbMl0uc2V0X3JlcHJfc3R5bGUoInNob3J0IikKICAgICAgICAgciA9IGV4Y2lu
Zm8uZ2V0cmVwcihzdHlsZT0ibG9uZyIpCi0gICAgICAgIHR3ID0gVFdNb2NrKCkKLSAgICAgICAg
ci50b3Rlcm1pbmFsKHR3KQotICAgICAgICBmb3IgbGluZSBpbiB0dy5saW5lczoKKyAgICAgICAg
ci50b3Rlcm1pbmFsKHR3X21vY2spCisgICAgICAgIGZvciBsaW5lIGluIHR3X21vY2subGluZXM6
CiAgICAgICAgICAgICBwcmludChsaW5lKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbMF0gPT0g
IiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzFdID09ICIgICAgZGVmIGYoKToiCi0gICAgICAg
IGFzc2VydCB0dy5saW5lc1syXSA9PSAiPiAgICAgICBnKCkiCi0gICAgICAgIGFzc2VydCB0dy5s
aW5lc1szXSA9PSAiIgotICAgICAgICBtc2cgPSB0dy5nZXRfd3JpdGVfbXNnKDQpCisgICAgICAg
IGFzc2VydCB0d19tb2NrLmxpbmVzWzBdID09ICIiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxp
bmVzWzFdID09ICIgICAgZGVmIGYoKToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzJd
ID09ICI+ICAgICAgIGcoKSIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbM10gPT0gIiIK
KyAgICAgICAgbXNnID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKDQpCiAgICAgICAgIGFzc2VydCBt
c2cuZW5kc3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s1XSA9PSAiOjM6
ICIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzZdID09ICgiXyAiLCBOb25lKQotICAgICAgICB0
dy5nZXRfd3JpdGVfbXNnKDcpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s4XS5lbmRzd2l0aCgi
aW4gZyIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s5XSA9PSAiICAgIGgoKSIKLSAgICAgICAg
dHcuZ2V0X3dyaXRlX21zZygxMCkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzExXS5lbmRzd2l0
aCgiaW4gaCIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sxMl0gPT0gIiAgICBpKCkiCi0gICAg
ICAgIGFzc2VydCB0dy5saW5lc1sxM10gPT0gKCJfICIsIE5vbmUpCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1sxNF0gPT0gIiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzE1XSA9PSAiICAgIGRl
ZiBpKCk6IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMTZdID09ICI+ICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoKSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzE3XSA9PSAiRSAgICAgICBWYWx1
ZUVycm9yIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMThdID09ICIiCi0gICAgICAgIG1zZyA9
IHR3LmdldF93cml0ZV9tc2coMTkpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzVdID09
ICI6MzogIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s2XSA9PSAoIl8gIiwgTm9uZSkK
KyAgICAgICAgdHdfbW9jay5nZXRfd3JpdGVfbXNnKDcpCisgICAgICAgIGFzc2VydCB0d19tb2Nr
LmxpbmVzWzhdLmVuZHN3aXRoKCJpbiBnIikKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNb
OV0gPT0gIiAgICBoKCkiCisgICAgICAgIHR3X21vY2suZ2V0X3dyaXRlX21zZygxMCkKKyAgICAg
ICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTFdLmVuZHN3aXRoKCJpbiBoIikKKyAgICAgICAgYXNz
ZXJ0IHR3X21vY2subGluZXNbMTJdID09ICIgICAgaSgpIgorICAgICAgICBhc3NlcnQgdHdfbW9j
ay5saW5lc1sxM10gPT0gKCJfICIsIE5vbmUpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVz
WzE0XSA9PSAiIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxNV0gPT0gIiAgICBkZWYg
aSgpOiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTZdID09ICI+ICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoKSIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTddID09ICJFICAg
ICAgIFZhbHVlRXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzE4XSA9PSAiIgor
ICAgICAgICBtc2cgPSB0d19tb2NrLmdldF93cml0ZV9tc2coMTkpCiAgICAgICAgIG1zZy5lbmRz
d2l0aCgibW9kLnB5IikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzIwXSA9PSAiOjk6IFZhbHVl
RXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzIwXSA9PSAiOjk6IFZhbHVlRXJy
b3IiCiAKLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdIDwgMyIp
Ci0gICAgZGVmIHRlc3RfZXhjX2NoYWluX3JlcHIoc2VsZiwgaW1wb3J0YXNtb2QpOgorICAgIGRl
ZiB0ZXN0X2V4Y19jaGFpbl9yZXByKHNlbGYsIGltcG9ydGFzbW9kLCB0d19tb2NrKToKICAgICAg
ICAgbW9kID0gaW1wb3J0YXNtb2QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGNsYXNz
IEVycihFeGNlcHRpb24pOgpAQCAtMTExMCwxMTMgKzExNDcsMTIxIEBAIHJhaXNlIFZhbHVlRXJy
b3IoKQogICAgICAgICApCiAgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKEF0dHJpYnV0
ZUVycm9yLCBtb2QuZikKICAgICAgICAgciA9IGV4Y2luZm8uZ2V0cmVwcihzdHlsZT0ibG9uZyIp
Ci0gICAgICAgIHR3ID0gVFdNb2NrKCkKLSAgICAgICAgci50b3Rlcm1pbmFsKHR3KQotICAgICAg
ICBmb3IgbGluZSBpbiB0dy5saW5lczoKKyAgICAgICAgci50b3Rlcm1pbmFsKHR3X21vY2spCisg
ICAgICAgIGZvciBsaW5lIGluIHR3X21vY2subGluZXM6CiAgICAgICAgICAgICBwcmludChsaW5l
KQotICAgICAgICBhc3NlcnQgdHcubGluZXNbMF0gPT0gIiIKLSAgICAgICAgYXNzZXJ0IHR3Lmxp
bmVzWzFdID09ICIgICAgZGVmIGYoKToiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1syXSA9PSAi
ICAgICAgICB0cnk6IgotICAgICAgICBhc3NlcnQgdHcubGluZXNbM10gPT0gIj4gICAgICAgICAg
IGcoKSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzRdID09ICIiCi0gICAgICAgIGxpbmUgPSB0
dy5nZXRfd3JpdGVfbXNnKDUpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzBdID09ICIi
CisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzFdID09ICIgICAgZGVmIGYoKToiCisgICAg
ICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzJdID09ICIgICAgICAgIHRyeToiCisgICAgICAgIGFz
c2VydCB0d19tb2NrLmxpbmVzWzNdID09ICI+ICAgICAgICAgICBnKCkiCisgICAgICAgIGFzc2Vy
dCB0d19tb2NrLmxpbmVzWzRdID09ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0
ZV9tc2coNSkKICAgICAgICAgYXNzZXJ0IGxpbmUuZW5kc3dpdGgoIm1vZC5weSIpCi0gICAgICAg
IGFzc2VydCB0dy5saW5lc1s2XSA9PSAiOjY6ICIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzdd
ID09ICgiXyAiLCBOb25lKQotICAgICAgICBhc3NlcnQgdHcubGluZXNbOF0gPT0gIiIKLSAgICAg
ICAgYXNzZXJ0IHR3LmxpbmVzWzldID09ICIgICAgZGVmIGcoKToiCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1sxMF0gPT0gIj4gICAgICAgcmFpc2UgVmFsdWVFcnJvcigpIgotICAgICAgICBhc3Nl
cnQgdHcubGluZXNbMTFdID09ICJFICAgICAgIFZhbHVlRXJyb3IiCi0gICAgICAgIGFzc2VydCB0
dy5saW5lc1sxMl0gPT0gIiIKLSAgICAgICAgbGluZSA9IHR3LmdldF93cml0ZV9tc2coMTMpCisg
ICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzZdID09ICI6NjogIgorICAgICAgICBhc3NlcnQg
dHdfbW9jay5saW5lc1s3XSA9PSAoIl8gIiwgTm9uZSkKKyAgICAgICAgYXNzZXJ0IHR3X21vY2su
bGluZXNbOF0gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbOV0gPT0gIiAgICBk
ZWYgZygpOiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTBdID09ICI+ICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoKSIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMTFdID09ICJF
ICAgICAgIFZhbHVlRXJyb3IiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzEyXSA9PSAi
IgorICAgICAgICBsaW5lID0gdHdfbW9jay5nZXRfd3JpdGVfbXNnKDEzKQogICAgICAgICBhc3Nl
cnQgbGluZS5lbmRzd2l0aCgibW9kLnB5IikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzE0XSA9
PSAiOjEyOiBWYWx1ZUVycm9yIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMTVdID09ICIiCisg
ICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzE0XSA9PSAiOjEyOiBWYWx1ZUVycm9yIgorICAg
ICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sxNV0gPT0gIiIKICAgICAgICAgYXNzZXJ0ICgKLSAg
ICAgICAgICAgIHR3LmxpbmVzWzE2XQorICAgICAgICAgICAgdHdfbW9jay5saW5lc1sxNl0KICAg
ICAgICAgICAgID09ICJUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOiIKICAgICAgICAgKQotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbMTddID09ICIiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sxOF0gPT0gIiAgICBkZWYg
ZigpOiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzE5XSA9PSAiICAgICAgICB0cnk6IgotICAg
ICAgICBhc3NlcnQgdHcubGluZXNbMjBdID09ICIgICAgICAgICAgICBnKCkiCi0gICAgICAgIGFz
c2VydCB0dy5saW5lc1syMV0gPT0gIiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOiIKLSAg
ICAgICAgYXNzZXJ0IHR3LmxpbmVzWzIyXSA9PSAiPiAgICAgICAgICAgcmFpc2UgRXJyKCkgZnJv
bSBlIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMjNdID09ICJFICAgICAgICAgICB0ZXN0X2V4
Y19jaGFpbl9yZXByMC5tb2QuRXJyIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMjRdID09ICIi
Ci0gICAgICAgIGxpbmUgPSB0dy5nZXRfd3JpdGVfbXNnKDI1KQorICAgICAgICBhc3NlcnQgdHdf
bW9jay5saW5lc1sxN10gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMThdID09
ICIgICAgZGVmIGYoKToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzE5XSA9PSAiICAg
ICAgICB0cnk6IgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1syMF0gPT0gIiAgICAgICAg
ICAgIGcoKSIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMjFdID09ICIgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzIyXSA9
PSAiPiAgICAgICAgICAgcmFpc2UgRXJyKCkgZnJvbSBlIgorICAgICAgICBhc3NlcnQgdHdfbW9j
ay5saW5lc1syM10gPT0gIkUgICAgICAgICAgIHRlc3RfZXhjX2NoYWluX3JlcHIwLm1vZC5FcnIi
CisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzI0XSA9PSAiIgorICAgICAgICBsaW5lID0g
dHdfbW9jay5nZXRfd3JpdGVfbXNnKDI1KQogICAgICAgICBhc3NlcnQgbGluZS5lbmRzd2l0aCgi
bW9kLnB5IikKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzI2XSA9PSAiOjg6IEVyciIKLSAgICAg
ICAgYXNzZXJ0IHR3LmxpbmVzWzI3XSA9PSAiIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5l
c1syNl0gPT0gIjo4OiBFcnIiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzI3XSA9PSAi
IgogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgdHcubGluZXNbMjhdCisgICAgICAgICAg
ICB0d19tb2NrLmxpbmVzWzI4XQogICAgICAgICAgICAgPT0gIkR1cmluZyBoYW5kbGluZyBvZiB0
aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoiCiAgICAgICAg
ICkKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzI5XSA9PSAiIgotICAgICAgICBhc3NlcnQgdHcu
bGluZXNbMzBdID09ICIgICAgZGVmIGYoKToiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1szMV0g
PT0gIiAgICAgICAgdHJ5OiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzMyXSA9PSAiICAgICAg
ICAgICAgZygpIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMzNdID09ICIgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1szNF0gPT0gIiAgICAg
ICAgICAgIHJhaXNlIEVycigpIGZyb20gZSIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzM1XSA9
PSAiICAgICAgICBmaW5hbGx5OiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzM2XSA9PSAiPiAg
ICAgICAgICAgaCgpIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbMzddID09ICIiCi0gICAgICAg
IGxpbmUgPSB0dy5nZXRfd3JpdGVfbXNnKDM4KQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5l
c1syOV0gPT0gIiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMzBdID09ICIgICAgZGVm
IGYoKToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzMxXSA9PSAiICAgICAgICB0cnk6
IgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1szMl0gPT0gIiAgICAgICAgICAgIGcoKSIK
KyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbMzNdID09ICIgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzM0XSA9PSAiICAgICAg
ICAgICAgcmFpc2UgRXJyKCkgZnJvbSBlIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1sz
NV0gPT0gIiAgICAgICAgZmluYWxseToiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzM2
XSA9PSAiPiAgICAgICAgICAgaCgpIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1szN10g
PT0gIiIKKyAgICAgICAgbGluZSA9IHR3X21vY2suZ2V0X3dyaXRlX21zZygzOCkKICAgICAgICAg
YXNzZXJ0IGxpbmUuZW5kc3dpdGgoIm1vZC5weSIpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sz
OV0gPT0gIjoxMDogIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbNDBdID09ICgiXyAiLCBOb25l
KQotICAgICAgICBhc3NlcnQgdHcubGluZXNbNDFdID09ICIiCi0gICAgICAgIGFzc2VydCB0dy5s
aW5lc1s0Ml0gPT0gIiAgICBkZWYgaCgpOiIKLSAgICAgICAgYXNzZXJ0IHR3LmxpbmVzWzQzXSA9
PSAiPiAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigpIgotICAgICAgICBhc3NlcnQgdHcubGlu
ZXNbNDRdID09ICJFICAgICAgIEF0dHJpYnV0ZUVycm9yIgotICAgICAgICBhc3NlcnQgdHcubGlu
ZXNbNDVdID09ICIiCi0gICAgICAgIGxpbmUgPSB0dy5nZXRfd3JpdGVfbXNnKDQ2KQorICAgICAg
ICBhc3NlcnQgdHdfbW9jay5saW5lc1szOV0gPT0gIjoxMDogIgorICAgICAgICBhc3NlcnQgdHdf
bW9jay5saW5lc1s0MF0gPT0gKCJfICIsIE5vbmUpCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxp
bmVzWzQxXSA9PSAiIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1s0Ml0gPT0gIiAgICBk
ZWYgaCgpOiIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNbNDNdID09ICI+ICAgICAgIHJh
aXNlIEF0dHJpYnV0ZUVycm9yKCkiCisgICAgICAgIGFzc2VydCB0d19tb2NrLmxpbmVzWzQ0XSA9
PSAiRSAgICAgICBBdHRyaWJ1dGVFcnJvciIKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGluZXNb
NDVdID09ICIiCisgICAgICAgIGxpbmUgPSB0d19tb2NrLmdldF93cml0ZV9tc2coNDYpCiAgICAg
ICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQotICAgICAgICBhc3NlcnQgdHcubGlu
ZXNbNDddID09ICI6MTU6IEF0dHJpYnV0ZUVycm9yIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5s
aW5lc1s0N10gPT0gIjoxNTogQXR0cmlidXRlRXJyb3IiCiAKLSAgICBAcHl0ZXN0Lm1hcmsuc2tp
cGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdIDwgMyIpCi0gICAgZGVmIHRlc3RfZXhjX3JlcHJfd2l0
aF9yYWlzZV9mcm9tX25vbmVfY2hhaW5fc3VwcHJlc3Npb24oc2VsZiwgaW1wb3J0YXNtb2QpOgor
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibW9kZSIsIFsiZnJvbV9ub25lIiwgImV4cGxp
Y2l0X3N1cHByZXNzIl0pCisgICAgZGVmIHRlc3RfZXhjX3JlcHJfY2hhaW5fc3VwcHJlc3Npb24o
c2VsZiwgaW1wb3J0YXNtb2QsIG1vZGUsIHR3X21vY2spOgorICAgICAgICAiIiJDaGVjayB0aGF0
IGV4YyByZXByIGRvZXMgbm90IHNob3cgY2hhaW5lZCBleGNlcHRpb25zIGluIFB5dGhvbiAzLgor
ICAgICAgICAtIFdoZW4gdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2l0aCAiZnJvbSBOb25lIgor
ICAgICAgICAtIEV4cGxpY2l0bHkgc3VwcHJlc3NlZCB3aXRoICJjaGFpbj1GYWxzZSIgdG8gRXhj
ZXB0aW9uSW5mby5nZXRyZXByKCkuCisgICAgICAgICIiIgorICAgICAgICByYWlzZV9zdWZmaXgg
PSAiIGZyb20gTm9uZSIgaWYgbW9kZSA9PSAiZnJvbV9ub25lIiBlbHNlICIiCiAgICAgICAgIG1v
ZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgZigpOgog
ICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZygpCiAgICAgICAgICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmli
dXRlRXJyb3IoKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRl
RXJyb3IoKXtyYWlzZV9zdWZmaXh9CiAgICAgICAgICAgICBkZWYgZygpOgogICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoKQotICAgICAgICAiIiIKKyAgICAgICAgIiIiLmZvcm1hdCgK
KyAgICAgICAgICAgICAgICByYWlzZV9zdWZmaXg9cmFpc2Vfc3VmZml4CisgICAgICAgICAgICAp
CiAgICAgICAgICkKICAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJy
b3IsIG1vZC5mKQotICAgICAgICByID0gZXhjaW5mby5nZXRyZXByKHN0eWxlPSJsb25nIikKLSAg
ICAgICAgdHcgPSBUV01vY2soKQotICAgICAgICByLnRvdGVybWluYWwodHcpCi0gICAgICAgIGZv
ciBsaW5lIGluIHR3LmxpbmVzOgorICAgICAgICByID0gZXhjaW5mby5nZXRyZXByKHN0eWxlPSJs
b25nIiwgY2hhaW49bW9kZSAhPSAiZXhwbGljaXRfc3VwcHJlc3MiKQorICAgICAgICByLnRvdGVy
bWluYWwodHdfbW9jaykKKyAgICAgICAgZm9yIGxpbmUgaW4gdHdfbW9jay5saW5lczoKICAgICAg
ICAgICAgIHByaW50KGxpbmUpCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1swXSA9PSAiIgotICAg
ICAgICBhc3NlcnQgdHcubGluZXNbMV0gPT0gIiAgICBkZWYgZigpOiIKLSAgICAgICAgYXNzZXJ0
IHR3LmxpbmVzWzJdID09ICIgICAgICAgIHRyeToiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1sz
XSA9PSAiICAgICAgICAgICAgZygpIgotICAgICAgICBhc3NlcnQgdHcubGluZXNbNF0gPT0gIiAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoiCi0gICAgICAgIGFzc2VydCB0dy5saW5lc1s1XSA9PSAi
PiAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoKSBmcm9tIE5vbmUiCi0gICAgICAgIGFz
c2VydCB0dy5saW5lc1s2XSA9PSAiRSAgICAgICAgICAgQXR0cmlidXRlRXJyb3IiCi0gICAgICAg
IGFzc2VydCB0dy5saW5lc1s3XSA9PSAiIgotICAgICAgICBsaW5lID0gdHcuZ2V0X3dyaXRlX21z
Zyg4KQorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5lc1swXSA9PSAiIgorICAgICAgICBhc3Nl
cnQgdHdfbW9jay5saW5lc1sxXSA9PSAiICAgIGRlZiBmKCk6IgorICAgICAgICBhc3NlcnQgdHdf
bW9jay5saW5lc1syXSA9PSAiICAgICAgICB0cnk6IgorICAgICAgICBhc3NlcnQgdHdfbW9jay5s
aW5lc1szXSA9PSAiICAgICAgICAgICAgZygpIgorICAgICAgICBhc3NlcnQgdHdfbW9jay5saW5l
c1s0XSA9PSAiICAgICAgICBleGNlcHQgRXhjZXB0aW9uOiIKKyAgICAgICAgYXNzZXJ0IHR3X21v
Y2subGluZXNbNV0gPT0gIj4gICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCl7fSIuZm9y
bWF0KAorICAgICAgICAgICAgcmFpc2Vfc3VmZml4CisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0
IHR3X21vY2subGluZXNbNl0gPT0gIkUgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yIgorICAgICAg
ICBhc3NlcnQgdHdfbW9jay5saW5lc1s3XSA9PSAiIgorICAgICAgICBsaW5lID0gdHdfbW9jay5n
ZXRfd3JpdGVfbXNnKDgpCiAgICAgICAgIGFzc2VydCBsaW5lLmVuZHN3aXRoKCJtb2QucHkiKQot
ICAgICAgICBhc3NlcnQgdHcubGluZXNbOV0gPT0gIjo2OiBBdHRyaWJ1dGVFcnJvciIKLSAgICAg
ICAgYXNzZXJ0IGxlbih0dy5saW5lcykgPT0gMTAKKyAgICAgICAgYXNzZXJ0IHR3X21vY2subGlu
ZXNbOV0gPT0gIjo2OiBBdHRyaWJ1dGVFcnJvciIKKyAgICAgICAgYXNzZXJ0IGxlbih0d19tb2Nr
LmxpbmVzKSA9PSAxMAogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5m
b1swXSA8IDMiKQogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKICAgICAgICAgInJlYXNv
biwgZGVzY3JpcHRpb24iLAogICAgICAgICBbCi0gICAgICAgICAgICAoCisgICAgICAgICAgICBw
eXRlc3QucGFyYW0oCiAgICAgICAgICAgICAgICAgImNhdXNlIiwKICAgICAgICAgICAgICAgICAi
VGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5n
IGV4Y2VwdGlvbjoiLAorICAgICAgICAgICAgICAgIGlkPSJjYXVzZSIsCiAgICAgICAgICAgICAp
LAotICAgICAgICAgICAgKAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAogICAgICAgICAgICAg
ICAgICJjb250ZXh0IiwKICAgICAgICAgICAgICAgICAiRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBh
Ym92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOiIsCisgICAgICAgICAg
ICAgICAgaWQ9ImNvbnRleHQiLAogICAgICAgICAgICAgKSwKICAgICAgICAgXSwKICAgICApCkBA
IC0xMjI2LDggKzEyNzEsNiBAQCByYWlzZSBWYWx1ZUVycm9yKCkKICAgICAgICAgcmVhbCB0cmFj
ZWJhY2ssIHN1Y2ggYXMgdGhvc2UgcmFpc2VkIGluIGEgc3VicHJvY2VzcyBzdWJtaXR0ZWQgYnkg
dGhlIG11bHRpcHJvY2Vzc2luZwogICAgICAgICBtb2R1bGUgKCMxOTg0KS4KICAgICAgICAgIiIi
Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgTGluZU1hdGNoZXIKLQogICAg
ICAgICBleGNfaGFuZGxpbmdfY29kZSA9ICIgZnJvbSBlIiBpZiByZWFzb24gPT0gImNhdXNlIiBl
bHNlICIiCiAgICAgICAgIG1vZCA9IGltcG9ydGFzbW9kKAogICAgICAgICAgICAgIiIiCkBAIC0x
MjUxLDExICsxMjk0LDEyIEBAIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICBnZXRhdHRyKGV4
Y2luZm8udmFsdWUsIGF0dHIpLl9fdHJhY2ViYWNrX18gPSBOb25lCiAKICAgICAgICAgciA9IGV4
Y2luZm8uZ2V0cmVwcigpCi0gICAgICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoc3RyaW5n
aW89VHJ1ZSkKKyAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgdHcgPSBUZXJt
aW5hbFdyaXRlcihmaWxlPWZpbGUpCiAgICAgICAgIHR3Lmhhc21hcmt1cCA9IEZhbHNlCiAgICAg
ICAgIHIudG90ZXJtaW5hbCh0dykKIAotICAgICAgICBtYXRjaGVyID0gTGluZU1hdGNoZXIodHcu
c3RyaW5naW8uZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIG1hdGNoZXIgPSBMaW5l
TWF0Y2hlcihmaWxlLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpKQogICAgICAgICBtYXRjaGVyLmZu
bWF0Y2hfbGluZXMoCiAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgIlZhbHVlRXJyb3I6
IGludmFsaWQgdmFsdWUiLApAQCAtMTI2NiwxNyArMTMxMCw3MyBAQCByYWlzZSBWYWx1ZUVycm9y
KCkKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCisgICAgZGVmIHRlc3RfZXhjX2NoYWluX3Jl
cHJfY3ljbGUoc2VsZiwgaW1wb3J0YXNtb2QsIHR3X21vY2spOgorICAgICAgICBtb2QgPSBpbXBv
cnRhc21vZCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY2xhc3MgRXJyKEV4Y2VwdGlv
bik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGZhaWwoKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMCAvIDAKKyAgICAgICAgICAgIGRlZiByZXJhaXNlKCk6CisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmYWlsKCkKKyAgICAgICAgICAg
ICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAg
cmFpc2UgRXJyKCkgZnJvbSBlCisgICAgICAgICAgICBkZWYgdW5yZXJhaXNlKCk6CisgICAgICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXJhaXNlKCkKKyAgICAgICAgICAg
ICAgICBleGNlcHQgRXJyIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGUuX19jYXVz
ZV9fCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFp
c2VzKFplcm9EaXZpc2lvbkVycm9yLCBtb2QudW5yZXJhaXNlKQorICAgICAgICByID0gZXhjaW5m
by5nZXRyZXByKHN0eWxlPSJzaG9ydCIpCisgICAgICAgIHIudG90ZXJtaW5hbCh0d19tb2NrKQor
ICAgICAgICBvdXQgPSAiXG4iLmpvaW4obGluZSBmb3IgbGluZSBpbiB0d19tb2NrLmxpbmVzIGlm
IGlzaW5zdGFuY2UobGluZSwgc3RyKSkKKyAgICAgICAgZXhwZWN0ZWRfb3V0ID0gdGV4dHdyYXAu
ZGVkZW50KAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgOjEzOiBpbiB1bnJlcmFpc2UK
KyAgICAgICAgICAgICAgICByZXJhaXNlKCkKKyAgICAgICAgICAgIDoxMDogaW4gcmVyYWlzZQor
ICAgICAgICAgICAgICAgIHJhaXNlIEVycigpIGZyb20gZQorICAgICAgICAgICAgRSAgIHRlc3Rf
ZXhjX2NoYWluX3JlcHJfY3ljbGUwLm1vZC5FcnIKKworICAgICAgICAgICAgRHVyaW5nIGhhbmRs
aW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgor
ICAgICAgICAgICAgOjE1OiBpbiB1bnJlcmFpc2UKKyAgICAgICAgICAgICAgICByYWlzZSBlLl9f
Y2F1c2VfXworICAgICAgICAgICAgOjg6IGluIHJlcmFpc2UKKyAgICAgICAgICAgICAgICBmYWls
KCkKKyAgICAgICAgICAgIDo1OiBpbiBmYWlsCisgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyAw
CisgICAgICAgICAgICBFICAgWmVyb0RpdmlzaW9uRXJyb3I6IGRpdmlzaW9uIGJ5IHplcm8iIiIK
KyAgICAgICAgKQorICAgICAgICBhc3NlcnQgb3V0ID09IGV4cGVjdGVkX291dAorCisgICAgZGVm
IHRlc3RfZXhlY190eXBlX2Vycm9yX2ZpbHRlcihzZWxmLCBpbXBvcnRhc21vZCk6CisgICAgICAg
ICIiIlNlZSAjNzc0MiIiIgorICAgICAgICBtb2QgPSBpbXBvcnRhc21vZCgKKyAgICAgICAgICAg
ICIiIlwKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgZXhlYygiYSA9IDEi
LCB7fSwgW10pCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoVHlwZUVycm9yKSBhcyBleGNpbmZvOgorICAgICAgICAgICAgbW9kLmYoKQorICAg
ICAgICAjIHByZXZpb3VzbHkgY3Jhc2hlZCB3aXRoIGBBdHRyaWJ1dGVFcnJvcjogbGlzdCBoYXMg
bm8gYXR0cmlidXRlIGdldGAKKyAgICAgICAgZXhjaW5mby50cmFjZWJhY2suZmlsdGVyKCkKKwog
CiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInN0eWxlIiwgWyJzaG9ydCIsICJsb25nIl0pCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImVuY29kaW5nIiwgW05vbmUsICJ1dGY4IiwgInV0ZjE2
Il0pCiBkZWYgdGVzdF9yZXByX3RyYWNlYmFja193aXRoX3VuaWNvZGUoc3R5bGUsIGVuY29kaW5n
KToKLSAgICBtc2cgPSB1IuKYuSIKLSAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKLSAgICAg
ICAgbXNnID0gbXNnLmVuY29kZShlbmNvZGluZykKKyAgICBpZiBlbmNvZGluZyBpcyBOb25lOgor
ICAgICAgICBtc2cgPSAi4pi5IiAgIyB0eXBlOiBVbmlvbltzdHIsIGJ5dGVzXQorICAgIGVsc2U6
CisgICAgICAgIG1zZyA9ICLimLkiLmVuY29kZShlbmNvZGluZykKICAgICB0cnk6CiAgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcihtc2cpCiAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKLSAgICAg
ICAgZV9pbmZvID0gRXhjZXB0aW9uSW5mbygpCisgICAgICAgIGVfaW5mbyA9IEV4Y2VwdGlvbklu
Zm8uZnJvbV9jdXJyZW50KCkKICAgICBmb3JtYXR0ZXIgPSBGb3JtYXR0ZWRFeGNpbmZvKHN0eWxl
PXN0eWxlKQogICAgIHJlcHJfdHJhY2ViYWNrID0gZm9ybWF0dGVyLnJlcHJfdHJhY2ViYWNrKGVf
aW5mbykKICAgICBhc3NlcnQgcmVwcl90cmFjZWJhY2sgaXMgbm90IE5vbmUKQEAgLTEyOTMsMTcg
KzEzOTMsMTggQEAgZGVmIHRlc3RfY3dkX2RlbGV0ZWQodGVzdGRpcik6CiAgICAgKQogICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqIDEgZmFpbGVkIGluICoiXSkKLSAgICBhc3NlcnQgIklOVEVSTkFMRVJST1IiIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpICsgcmVzdWx0LnN0ZGVyci5zdHIoKQorICAgIHJlc3VsdC5z
dGRvdXQubm9fZm5tYXRjaF9saW5lKCIqSU5URVJOQUxFUlJPUioiKQorICAgIHJlc3VsdC5zdGRl
cnIubm9fZm5tYXRjaF9saW5lKCIqSU5URVJOQUxFUlJPUioiKQogCiAKK0BweXRlc3QubWFyay51
c2VmaXh0dXJlcygibGltaXRlZF9yZWN1cnNpb25fZGVwdGgiKQogZGVmIHRlc3RfZXhjZXB0aW9u
X3JlcHJfZXh0cmFjdGlvbl9lcnJvcl9vbl9yZWN1cnNpb24oKToKICAgICAiIiIKICAgICBFbnN1
cmUgd2UgY2FuIHByb3Blcmx5IGRldGVjdCBhIHJlY3Vyc2lvbiBlcnJvciBldmVuCiAgICAgaWYg
c29tZSBsb2NhbHMgcmFpc2UgZXJyb3Igb24gY29tcGFyaXNvbiAoIzI0NTkpLgogICAgICIiIgog
Ci0gICAgY2xhc3MgbnVtcHlfbGlrZShvYmplY3QpOgotCisgICAgY2xhc3MgbnVtcHlfbGlrZToK
ICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICBpZiB0eXBlKG90
aGVyKSBpcyBudW1weV9saWtlOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCkBA
IC0xMzE3LDQxICsxNDE4LDMwIEBAIGRlZiB0ZXN0X2V4Y2VwdGlvbl9yZXByX2V4dHJhY3Rpb25f
ZXJyb3Jfb25fcmVjdXJzaW9uKCk6CiAgICAgZGVmIGIoeCk6CiAgICAgICAgIHJldHVybiBhKG51
bXB5X2xpa2UoKSkKIAotICAgIHRyeToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUnVudGltZUVy
cm9yKSBhcyBleGNpbmZvOgogICAgICAgICBhKG51bXB5X2xpa2UoKSkKLSAgICBleGNlcHQ6ICAj
IG5vcWEKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbklu
Zm8KLSAgICAgICAgZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBMaW5lTWF0Y2hlcgotCi0g
ICAgICAgIGV4Y19pbmZvID0gRXhjZXB0aW9uSW5mbygpCiAKLSAgICAgICAgbWF0Y2hlciA9IExp
bmVNYXRjaGVyKHN0cihleGNfaW5mby5nZXRyZXByKCkpLnNwbGl0bGluZXMoKSkKLSAgICAgICAg
bWF0Y2hlci5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIh
ISEgUmVjdXJzaW9uIGVycm9yIGRldGVjdGVkLCBidXQgYW4gZXJyb3Igb2NjdXJyZWQgbG9jYXRp
bmcgdGhlIG9yaWdpbiBvZiByZWN1cnNpb24uIiwKLSAgICAgICAgICAgICAgICAiKlRoZSBmb2xs
b3dpbmcgZXhjZXB0aW9uIGhhcHBlbmVkKiIsCi0gICAgICAgICAgICAgICAgIipWYWx1ZUVycm9y
OiBUaGUgdHJ1dGggdmFsdWUgb2YgYW4gYXJyYXkqIiwKLSAgICAgICAgICAgIF0KLSAgICAgICAg
KQorICAgIG1hdGNoZXIgPSBMaW5lTWF0Y2hlcihzdHIoZXhjaW5mby5nZXRyZXByKCkpLnNwbGl0
bGluZXMoKSkKKyAgICBtYXRjaGVyLmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAg
ICAgICIhISEgUmVjdXJzaW9uIGVycm9yIGRldGVjdGVkLCBidXQgYW4gZXJyb3Igb2NjdXJyZWQg
bG9jYXRpbmcgdGhlIG9yaWdpbiBvZiByZWN1cnNpb24uIiwKKyAgICAgICAgICAgICIqVGhlIGZv
bGxvd2luZyBleGNlcHRpb24gaGFwcGVuZWQqIiwKKyAgICAgICAgICAgICIqVmFsdWVFcnJvcjog
VGhlIHRydXRoIHZhbHVlIG9mIGFuIGFycmF5KiIsCisgICAgICAgIF0KKyAgICApCiAKIAorQHB5
dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCJsaW1pdGVkX3JlY3Vyc2lvbl9kZXB0aCIpCiBkZWYgdGVz
dF9ub19yZWN1cnNpb25faW5kZXhfb25fcmVjdXJzaW9uX2Vycm9yKCk6CiAgICAgIiIiCiAgICAg
RW5zdXJlIHRoYXQgd2UgZG9uJ3QgYnJlYWsgaW4gY2FzZSB3ZSBjYW4ndCBmaW5kIHRoZSByZWN1
cnNpb24gaW5kZXgKICAgICBkdXJpbmcgYSByZWN1cnNpb24gZXJyb3IgKCMyNDg2KS4KICAgICAi
IiIKLSAgICB0cnk6Ci0KLSAgICAgICAgY2xhc3MgUmVjdXJzaW9uRGVwdGhFcnJvcihvYmplY3Qp
OgogCi0gICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgIl8iICsgYXR0cikKKyAgICBjbGFzcyBSZWN1cnNp
b25EZXB0aEVycm9yOgorICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAg
ICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCAiXyIgKyBhdHRyKQogCisgICAgd2l0aCBweXRl
c3QucmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgZXhjaW5mbzoKICAgICAgICAgUmVjdXJzaW9uRGVw
dGhFcnJvcigpLnRyaWdnZXIKLSAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgZnJvbSBfcHl0
ZXN0Ll9jb2RlLmNvZGUgaW1wb3J0IEV4Y2VwdGlvbkluZm8KLQotICAgICAgICBleGNfaW5mbyA9
IEV4Y2VwdGlvbkluZm8oKQotICAgICAgICBhc3NlcnQgIm1heGltdW0gcmVjdXJzaW9uIiBpbiBz
dHIoZXhjX2luZm8uZ2V0cmVwcigpKQotICAgIGVsc2U6Ci0gICAgICAgIGFzc2VydCAwCisgICAg
YXNzZXJ0ICJtYXhpbXVtIHJlY3Vyc2lvbiIgaW4gc3RyKGV4Y2luZm8uZ2V0cmVwcigpKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlLnB5CmluZGV4IDU2ZGFkNzU2NzFmYS4uZDEy
YzU1ZDkzNWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9zb3Vy
Y2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlLnB5CkBAIC0x
LDIyICsxLDI1IEBACiAjIGZsYWtlODogbm9xYQogIyBkaXNhYmxlIGZsYWtlIGNoZWNrIG9uIHRo
aXMgZmlsZSBiZWNhdXNlIHNvbWUgY29uc3RydWN0cyBhcmUgc3RyYW5nZQogIyBvciByZWR1bmRh
bnQgb24gcHVycG9zZSBhbmQgY2FuJ3QgYmUgZGlzYWJsZSBvbiBhIGxpbmUtYnktbGluZSBiYXNp
cwotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmlu
dF9mdW5jdGlvbgoraW1wb3J0IGFzdAogaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBsaW5lY2FjaGUK
IGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAorZnJvbSB0eXBlcyBpbXBvcnQgQ29kZVR5cGUK
K2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0Citmcm9tIHR5
cGluZyBpbXBvcnQgT3B0aW9uYWwKKworaW1wb3J0IHB5LnBhdGgKIAogaW1wb3J0IF9weXRlc3Qu
X2NvZGUKLWltcG9ydCBweQogaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9y
dCBnZXRmc2xpbmVubwogZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBTb3VyY2UKLWZyb20gX3B5
dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IGFzdAotCiAKLWFzdG9ubHkgPSBweXRlc3QubWFyay5u
b3RoaW5nCi1mYWlsc29uanl0aG9uID0gcHl0ZXN0Lm1hcmsueGZhaWwoInN5cy5wbGF0Zm9ybS5z
dGFydHN3aXRoKCdqYXZhJykiKQogCi0KLWRlZiB0ZXN0X3NvdXJjZV9zdHJfZnVuY3Rpb24oKToK
K2RlZiB0ZXN0X3NvdXJjZV9zdHJfZnVuY3Rpb24oKSAtPiBOb25lOgogICAgIHggPSBTb3VyY2Uo
IjMiKQogICAgIGFzc2VydCBzdHIoeCkgPT0gIjMiCiAKQEAgLTI2LDQxICsyOSwxOCBAQCBkZWYg
dGVzdF9zb3VyY2Vfc3RyX2Z1bmN0aW9uKCk6CiAgICAgeCA9IFNvdXJjZSgKICAgICAgICAgIiIi
CiAgICAgICAgIDMKLSAgICAiIiIsCi0gICAgICAgIHJzdHJpcD1GYWxzZSwKLSAgICApCi0gICAg
YXNzZXJ0IHN0cih4KSA9PSAiXG4zXG4gICAgIgotCi0gICAgeCA9IFNvdXJjZSgKICAgICAgICAg
IiIiCi0gICAgICAgIDMKLSAgICAiIiIsCi0gICAgICAgIHJzdHJpcD1UcnVlLAogICAgICkKICAg
ICBhc3NlcnQgc3RyKHgpID09ICJcbjMiCiAKIAotZGVmIHRlc3RfdW5pY29kZSgpOgotICAgIHRy
eToKLSAgICAgICAgdW5pY29kZQotICAgIGV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgIHJldHVy
bgotICAgIHggPSBTb3VyY2UodW5pY29kZSgiNCIpKQotICAgIGFzc2VydCBzdHIoeCkgPT0gIjQi
Ci0gICAgY28gPSBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUodW5pY29kZSgndSJceGMzXHhhNSInLCAi
dXRmOCIpLCBtb2RlPSJldmFsIikKLSAgICB2YWwgPSBldmFsKGNvKQotICAgIGFzc2VydCBpc2lu
c3RhbmNlKHZhbCwgdW5pY29kZSkKLQotCi1kZWYgdGVzdF9zb3VyY2VfZnJvbV9mdW5jdGlvbigp
OgorZGVmIHRlc3Rfc291cmNlX2Zyb21fZnVuY3Rpb24oKSAtPiBOb25lOgogICAgIHNvdXJjZSA9
IF9weXRlc3QuX2NvZGUuU291cmNlKHRlc3Rfc291cmNlX3N0cl9mdW5jdGlvbikKLSAgICBhc3Nl
cnQgc3RyKHNvdXJjZSkuc3RhcnRzd2l0aCgiZGVmIHRlc3Rfc291cmNlX3N0cl9mdW5jdGlvbigp
OiIpCi0KKyAgICBhc3NlcnQgc3RyKHNvdXJjZSkuc3RhcnRzd2l0aCgiZGVmIHRlc3Rfc291cmNl
X3N0cl9mdW5jdGlvbigpIC0+IE5vbmU6IikKIAotZGVmIHRlc3Rfc291cmNlX2Zyb21fbWV0aG9k
KCk6Ci0KLSAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKIAorZGVmIHRlc3Rfc291cmNlX2Zy
b21fbWV0aG9kKCkgLT4gTm9uZToKKyAgICBjbGFzcyBUZXN0Q2xhc3M6CiAgICAgICAgIGRlZiB0
ZXN0X21ldGhvZChzZWxmKToKICAgICAgICAgICAgIHBhc3MKIApAQCAtNjgsMTU5ICs0OCw3OCBA
QCBkZWYgdGVzdF9zb3VyY2VfZnJvbV9tZXRob2QoKToKICAgICBhc3NlcnQgc291cmNlLmxpbmVz
ID09IFsiZGVmIHRlc3RfbWV0aG9kKHNlbGYpOiIsICIgICAgcGFzcyJdCiAKIAotZGVmIHRlc3Rf
c291cmNlX2Zyb21fbGluZXMoKToKK2RlZiB0ZXN0X3NvdXJjZV9mcm9tX2xpbmVzKCkgLT4gTm9u
ZToKICAgICBsaW5lcyA9IFsiYSBcbiIsICJiXG4iLCAiYyJdCiAgICAgc291cmNlID0gX3B5dGVz
dC5fY29kZS5Tb3VyY2UobGluZXMpCiAgICAgYXNzZXJ0IHNvdXJjZS5saW5lcyA9PSBbImEgIiwg
ImIiLCAiYyJdCiAKIAotZGVmIHRlc3Rfc291cmNlX2Zyb21faW5uZXJfZnVuY3Rpb24oKToKLQor
ZGVmIHRlc3Rfc291cmNlX2Zyb21faW5uZXJfZnVuY3Rpb24oKSAtPiBOb25lOgogICAgIGRlZiBm
KCk6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAK
LSAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShmLCBkZWluZGVudD1GYWxzZSkKLSAg
ICBhc3NlcnQgc3RyKHNvdXJjZSkuc3RhcnRzd2l0aCgiICAgIGRlZiBmKCk6IikKICAgICBzb3Vy
Y2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShmKQogICAgIGFzc2VydCBzdHIoc291cmNlKS5zdGFy
dHN3aXRoKCJkZWYgZigpOiIpCiAKIAotZGVmIHRlc3Rfc291cmNlX3B1dGFyb3VuZF9zaW1wbGUo
KToKLSAgICBzb3VyY2UgPSBTb3VyY2UoInJhaXNlIFZhbHVlRXJyb3IiKQotICAgIHNvdXJjZSA9
IHNvdXJjZS5wdXRhcm91bmQoCi0gICAgICAgICJ0cnk6IiwKLSAgICAgICAgIiIiXAotICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHggPSA0MgotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgeCA9IDIzIiIiLAotICAgICkKLSAgICBhc3NlcnQgKAotICAgICAgICBzdHIo
c291cmNlKQotICAgICAgICA9PSAiIiJcCi10cnk6Ci0gICAgcmFpc2UgVmFsdWVFcnJvcgotZXhj
ZXB0IFZhbHVlRXJyb3I6Ci0gICAgeCA9IDQyCi1lbHNlOgotICAgIHggPSAyMyIiIgotICAgICkK
LQotCi1kZWYgdGVzdF9zb3VyY2VfcHV0YXJvdW5kKCk6Ci0gICAgc291cmNlID0gU291cmNlKCkK
LSAgICBzb3VyY2UgPSBzb3VyY2UucHV0YXJvdW5kKAotICAgICAgICAiIiIKLSAgICAgICAgaWYg
MToKLSAgICAgICAgICAgIHg9MQotICAgICIiIgotICAgICkKLSAgICBhc3NlcnQgc3RyKHNvdXJj
ZSkuc3RyaXAoKSA9PSAiaWYgMTpcbiAgICB4PTEiCi0KLQotZGVmIHRlc3Rfc291cmNlX3N0cmlw
cygpOgorZGVmIHRlc3Rfc291cmNlX3N0cmlwcygpIC0+IE5vbmU6CiAgICAgc291cmNlID0gU291
cmNlKCIiKQogICAgIGFzc2VydCBzb3VyY2UgPT0gU291cmNlKCkKICAgICBhc3NlcnQgc3RyKHNv
dXJjZSkgPT0gIiIKICAgICBhc3NlcnQgc291cmNlLnN0cmlwKCkgPT0gc291cmNlCiAKIAotZGVm
IHRlc3Rfc291cmNlX3N0cmlwX211bHRpbGluZSgpOgorZGVmIHRlc3Rfc291cmNlX3N0cmlwX211
bHRpbGluZSgpIC0+IE5vbmU6CiAgICAgc291cmNlID0gU291cmNlKCkKICAgICBzb3VyY2UubGlu
ZXMgPSBbIiIsICIgaGVsbG8iLCAiICAiXQogICAgIHNvdXJjZTIgPSBzb3VyY2Uuc3RyaXAoKQog
ICAgIGFzc2VydCBzb3VyY2UyLmxpbmVzID09IFsiIGhlbGxvIl0KIAogCi1kZWYgdGVzdF9zeW50
YXhlcnJvcl9yZXJlcHJlc2VudGF0aW9uKCk6Ci0gICAgZXggPSBweXRlc3QucmFpc2VzKFN5bnRh
eEVycm9yLCBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUsICJ4eXogeHl6IikKLSAgICBhc3NlcnQgZXgu
dmFsdWUubGluZW5vID09IDEKLSAgICBhc3NlcnQgZXgudmFsdWUub2Zmc2V0IGluICg0LCA3KSAg
IyBYWFggcHlweS9qeXRob24gdmVyc3VzIGNweXRob24/Ci0gICAgYXNzZXJ0IGV4LnZhbHVlLnRl
eHQuc3RyaXAoKSwgInggeCIKLQotCi1kZWYgdGVzdF9pc3BhcnNlYWJsZSgpOgotICAgIGFzc2Vy
dCBTb3VyY2UoImhlbGxvIikuaXNwYXJzZWFibGUoKQotICAgIGFzc2VydCBTb3VyY2UoImlmIDE6
XG4gIHBhc3MiKS5pc3BhcnNlYWJsZSgpCi0gICAgYXNzZXJ0IFNvdXJjZSgiIFxuaWYgMTpcbiAg
cGFzcyIpLmlzcGFyc2VhYmxlKCkKLSAgICBhc3NlcnQgbm90IFNvdXJjZSgiaWYgMTpcbiIpLmlz
cGFyc2VhYmxlKCkKLSAgICBhc3NlcnQgbm90IFNvdXJjZSgiIFxuaWYgMTpcbnBhc3MiKS5pc3Bh
cnNlYWJsZSgpCi0gICAgYXNzZXJ0IG5vdCBTb3VyY2UoY2hyKDApKS5pc3BhcnNlYWJsZSgpCi0K
LQotY2xhc3MgVGVzdEFjY2Vzc2VzKG9iamVjdCk6Ci0gICAgc291cmNlID0gU291cmNlKAotICAg
ICAgICAiIiJcCi0gICAgICAgIGRlZiBmKHgpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBk
ZWYgZyh4KToKLSAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKLSAgICApCitjbGFzcyBUZXN0QWNj
ZXNzZXM6CisgICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
c291cmNlID0gU291cmNlKAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgZGVmIGYoeCk6
CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGcoeCk6CisgICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfZ2V0cmFu
Z2Uoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0cmFuZ2Uoc2VsZikgLT4gTm9uZToKICAgICAgICAg
eCA9IHNlbGYuc291cmNlWzA6Ml0KLSAgICAgICAgYXNzZXJ0IHguaXNwYXJzZWFibGUoKQogICAg
ICAgICBhc3NlcnQgbGVuKHgubGluZXMpID09IDIKICAgICAgICAgYXNzZXJ0IHN0cih4KSA9PSAi
ZGVmIGYoeCk6XG4gICAgcGFzcyIKIAotICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CisgICAg
ZGVmIHRlc3RfZ2V0cmFuZ2Vfc3RlcF9ub3Rfc3VwcG9ydGVkKHNlbGYpIC0+IE5vbmU6CisgICAg
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbmRleEVycm9yLCBtYXRjaD1yInN0ZXAiKToKKyAgICAg
ICAgICAgIHNlbGYuc291cmNlWzo6Ml0KKworICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZikgLT4g
Tm9uZToKICAgICAgICAgeCA9IHNlbGYuc291cmNlWzBdCiAgICAgICAgIGFzc2VydCB4ID09ICJk
ZWYgZih4KToiCiAKLSAgICBkZWYgdGVzdF9sZW4oc2VsZik6CisgICAgZGVmIHRlc3RfbGVuKHNl
bGYpIC0+IE5vbmU6CiAgICAgICAgIGFzc2VydCBsZW4oc2VsZi5zb3VyY2UpID09IDQKIAotICAg
IGRlZiB0ZXN0X2l0ZXIoc2VsZik6CisgICAgZGVmIHRlc3RfaXRlcihzZWxmKSAtPiBOb25lOgog
ICAgICAgICB2YWx1ZXMgPSBbeCBmb3IgeCBpbiBzZWxmLnNvdXJjZV0KICAgICAgICAgYXNzZXJ0
IGxlbih2YWx1ZXMpID09IDQKIAogCi1jbGFzcyBUZXN0U291cmNlUGFyc2luZ0FuZENvbXBpbGlu
ZyhvYmplY3QpOgotICAgIHNvdXJjZSA9IFNvdXJjZSgKLSAgICAgICAgIiIiXAotICAgICAgICBk
ZWYgZih4KToKLSAgICAgICAgICAgIGFzc2VydCAoeCA9PQotICAgICAgICAgICAgICAgICAgICAz
ICsKLSAgICAgICAgICAgICAgICAgICAgNCkKLSAgICAiIiIKLSAgICApLnN0cmlwKCkKLQotICAg
IGRlZiB0ZXN0X2NvbXBpbGUoc2VsZik6Ci0gICAgICAgIGNvID0gX3B5dGVzdC5fY29kZS5jb21w
aWxlKCJ4PTMiKQotICAgICAgICBkID0ge30KLSAgICAgICAgZXhlYyhjbywgZCkKLSAgICAgICAg
YXNzZXJ0IGRbIngiXSA9PSAzCi0KLSAgICBkZWYgdGVzdF9jb21waWxlX2FuZF9nZXRzb3VyY2Vf
c2ltcGxlKHNlbGYpOgotICAgICAgICBjbyA9IF9weXRlc3QuX2NvZGUuY29tcGlsZSgieD0zIikK
LSAgICAgICAgZXhlYyhjbykKLSAgICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
Y28pCi0gICAgICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAieD0zIgotCi0gICAgZGVmIHRlc3Rf
Y29tcGlsZV9hbmRfZ2V0c291cmNlX3Rocm91Z2hfc2FtZV9mdW5jdGlvbihzZWxmKToKLQotICAg
ICAgICBkZWYgZ2Vuc291cmNlKHNvdXJjZSk6Ci0gICAgICAgICAgICByZXR1cm4gX3B5dGVzdC5f
Y29kZS5jb21waWxlKHNvdXJjZSkKLQotICAgICAgICBjbzEgPSBnZW5zb3VyY2UoCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5
RXJyb3IoKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjbzIgPSBnZW5zb3VyY2Uo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigpCitjbGFzcyBUZXN0U291cmNlUGFyc2luZzoKKyAgICBkZWYgc2V0
dXBfY2xhc3Moc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5zb3VyY2UgPSBTb3VyY2UoCisg
ICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYgZih4KToKKyAgICAgICAgICAgICAgICBh
c3NlcnQgKHggPT0KKyAgICAgICAgICAgICAgICAgICAgICAgIDMgKworICAgICAgICAgICAgICAg
ICAgICAgICAgNCkKICAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgc291cmNlMSA9IGlu
c3BlY3QuZ2V0c291cmNlKGNvMSkKLSAgICAgICAgYXNzZXJ0ICJLZXlFcnJvciIgaW4gc291cmNl
MQotICAgICAgICBzb3VyY2UyID0gaW5zcGVjdC5nZXRzb3VyY2UoY28yKQotICAgICAgICBhc3Nl
cnQgIlZhbHVlRXJyb3IiIGluIHNvdXJjZTIKKyAgICAgICAgKS5zdHJpcCgpCiAKLSAgICBkZWYg
dGVzdF9nZXRzdGF0ZW1lbnQoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0c3RhdGVtZW50KHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgICMgcHJpbnQgc3RyKHNlbGYuc291cmNlKQogICAgICAgICBhc3Mg
PSBzdHIoc2VsZi5zb3VyY2VbMTpdKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCA0KToKQEAg
LTIyOSwxOSArMTI4LDE4IEBAIGNsYXNzIFRlc3RTb3VyY2VQYXJzaW5nQW5kQ29tcGlsaW5nKG9i
amVjdCk6CiAgICAgICAgICAgICAjIHggPSBzLmRlaW5kZW50KCkKICAgICAgICAgICAgIGFzc2Vy
dCBzdHIocykgPT0gYXNzCiAKLSAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV90cmlwbGVf
cXVvdGVkKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dldHN0YXRlbWVudHJhbmdlX3RyaXBsZV9xdW90
ZWQoc2VsZikgLT4gTm9uZToKICAgICAgICAgIyBwcmludCBzdHIoc2VsZi5zb3VyY2UpCiAgICAg
ICAgIHNvdXJjZSA9IFNvdXJjZSgKICAgICAgICAgICAgICIiImhlbGxvKCcnJwogICAgICAgICAn
JycpIiIiCiAgICAgICAgICkKICAgICAgICAgcyA9IHNvdXJjZS5nZXRzdGF0ZW1lbnQoMCkKLSAg
ICAgICAgYXNzZXJ0IHMgPT0gc3RyKHNvdXJjZSkKKyAgICAgICAgYXNzZXJ0IHMgPT0gc291cmNl
CiAgICAgICAgIHMgPSBzb3VyY2UuZ2V0c3RhdGVtZW50KDEpCi0gICAgICAgIGFzc2VydCBzID09
IHN0cihzb3VyY2UpCisgICAgICAgIGFzc2VydCBzID09IHNvdXJjZQogCi0gICAgQGFzdG9ubHkK
LSAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV93aXRoaW5fY29uc3RydWN0cyhzZWxmKToK
KyAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV93aXRoaW5fY29uc3RydWN0cyhzZWxmKSAt
PiBOb25lOgogICAgICAgICBzb3VyY2UgPSBTb3VyY2UoCiAgICAgICAgICAgICAiIiJcCiAgICAg
ICAgICAgICB0cnk6CkBAIC0yNjMsNyArMTYxLDcgQEAgY2xhc3MgVGVzdFNvdXJjZVBhcnNpbmdB
bmRDb21waWxpbmcob2JqZWN0KToKICAgICAgICAgIyBhc3NlcnQgc291cmNlLmdldHN0YXRlbWVu
dHJhbmdlKDUpID09ICgwLCA3KQogICAgICAgICBhc3NlcnQgc291cmNlLmdldHN0YXRlbWVudHJh
bmdlKDYpID09ICg2LCA3KQogCi0gICAgZGVmIHRlc3RfZ2V0c3RhdGVtZW50cmFuZ2VfYnVnKHNl
bGYpOgorICAgIGRlZiB0ZXN0X2dldHN0YXRlbWVudHJhbmdlX2J1ZyhzZWxmKSAtPiBOb25lOgog
ICAgICAgICBzb3VyY2UgPSBTb3VyY2UoCiAgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICB0
cnk6CkBAIC0yNzcsNyArMTc1LDcgQEAgY2xhc3MgVGVzdFNvdXJjZVBhcnNpbmdBbmRDb21waWxp
bmcob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGxlbihzb3VyY2UpID09IDYKICAgICAgICAgYXNz
ZXJ0IHNvdXJjZS5nZXRzdGF0ZW1lbnRyYW5nZSgyKSA9PSAoMSwgNCkKIAotICAgIGRlZiB0ZXN0
X2dldHN0YXRlbWVudHJhbmdlX2J1ZzIoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0c3RhdGVtZW50
cmFuZ2VfYnVnMihzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBTb3VyY2UoCiAgICAg
ICAgICAgICAiIiJcCiAgICAgICAgICAgICBhc3NlcnQgKApAQCAtMjk0LDcgKzE5Miw3IEBAIGNs
YXNzIFRlc3RTb3VyY2VQYXJzaW5nQW5kQ29tcGlsaW5nKG9iamVjdCk6CiAgICAgICAgIGFzc2Vy
dCBsZW4oc291cmNlKSA9PSA5CiAgICAgICAgIGFzc2VydCBzb3VyY2UuZ2V0c3RhdGVtZW50cmFu
Z2UoNSkgPT0gKDAsIDkpCiAKLSAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV9hc3RfaXNz
dWU1OChzZWxmKToKKyAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV9hc3RfaXNzdWU1OChz
ZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBTb3VyY2UoCiAgICAgICAgICAgICAiIiJc
CiAKQEAgLTMwOCw2MSArMjA2LDE5IEBAIGNsYXNzIFRlc3RTb3VyY2VQYXJzaW5nQW5kQ29tcGls
aW5nKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBnZXRzdGF0ZW1lbnQoMiwgc291cmNlKS5saW5l
cyA9PSBzb3VyY2UubGluZXNbMjozXQogICAgICAgICBhc3NlcnQgZ2V0c3RhdGVtZW50KDMsIHNv
dXJjZSkubGluZXMgPT0gc291cmNlLmxpbmVzWzM6NF0KIAotICAgIGRlZiB0ZXN0X2dldHN0YXRl
bWVudHJhbmdlX291dF9vZl9ib3VuZHNfcHkzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dldHN0YXRl
bWVudHJhbmdlX291dF9vZl9ib3VuZHNfcHkzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJj
ZSA9IFNvdXJjZSgiaWYgeHh4OlxuICAgZnJvbSAuY29sbGVjdGlvbnMgaW1wb3J0IHNvbWV0aGlu
ZyIpCiAgICAgICAgIHIgPSBzb3VyY2UuZ2V0c3RhdGVtZW50cmFuZ2UoMSkKICAgICAgICAgYXNz
ZXJ0IHIgPT0gKDEsIDIpCiAKLSAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV93aXRoX3N5
bnRheGVycm9yX2lzc3VlNyhzZWxmKToKKyAgICBkZWYgdGVzdF9nZXRzdGF0ZW1lbnRyYW5nZV93
aXRoX3N5bnRheGVycm9yX2lzc3VlNyhzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBT
b3VyY2UoIjoiKQogICAgICAgICBweXRlc3QucmFpc2VzKFN5bnRheEVycm9yLCBsYW1iZGE6IHNv
dXJjZS5nZXRzdGF0ZW1lbnRyYW5nZSgwKSkKIAotICAgIGRlZiB0ZXN0X2NvbXBpbGVfdG9fYXN0
KHNlbGYpOgotICAgICAgICBpbXBvcnQgYXN0Ci0KLSAgICAgICAgc291cmNlID0gU291cmNlKCJ4
ID0gNCIpCi0gICAgICAgIG1vZCA9IHNvdXJjZS5jb21waWxlKGZsYWc9YXN0LlB5Q0ZfT05MWV9B
U1QpCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1vZCwgYXN0Lk1vZHVsZSkKLSAgICAgICAg
Y29tcGlsZShtb2QsICI8ZmlsZW5hbWU+IiwgImV4ZWMiKQotCi0gICAgZGVmIHRlc3RfY29tcGls
ZV9hbmRfZ2V0c291cmNlKHNlbGYpOgotICAgICAgICBjbyA9IHNlbGYuc291cmNlLmNvbXBpbGUo
KQotICAgICAgICBweS5idWlsdGluLmV4ZWNfKGNvLCBnbG9iYWxzKCkpCi0gICAgICAgIGYoNykK
LSAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IsICJmKDYpIikK
LSAgICAgICAgZnJhbWUgPSBleGNpbmZvLnRyYWNlYmFja1stMV0uZnJhbWUKLSAgICAgICAgc3Rt
dCA9IGZyYW1lLmNvZGUuZnVsbHNvdXJjZS5nZXRzdGF0ZW1lbnQoZnJhbWUubGluZW5vKQotICAg
ICAgICAjIHByaW50ICJibG9jayIsIHN0cihibG9jaykKLSAgICAgICAgYXNzZXJ0IHN0cihzdG10
KS5zdHJpcCgpLnN0YXJ0c3dpdGgoImFzc2VydCIpCi0KLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoIm5hbWUiLCBbIiIsIE5vbmUsICJteSJdKQotICAgIGRlZiB0ZXN0X2NvbXBpbGVmdW5j
c19hbmRfcGF0aF9zYW5pdHkoc2VsZiwgbmFtZSk6Ci0KLSAgICAgICAgZGVmIGNoZWNrKGNvbXAs
IG5hbWUpOgotICAgICAgICAgICAgY28gPSBjb21wKHNlbGYuc291cmNlLCBuYW1lKQotICAgICAg
ICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiY29kZWdlbiAl
czolZD4iICUgKG15cGF0aCwgbXlsaW5lbm8gKyAyICsgMykKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiY29kZWdlbiAlciAlczolZD4iICUgKG5hbWUsIG15
cGF0aCwgbXlsaW5lbm8gKyAyICsgMykKLSAgICAgICAgICAgIGZuID0gY28uY29fZmlsZW5hbWUK
LSAgICAgICAgICAgIGFzc2VydCBmbi5lbmRzd2l0aChleHBlY3RlZCkKIAotICAgICAgICBteWNv
ZGUgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoc2VsZi50ZXN0X2NvbXBpbGVmdW5jc19hbmRfcGF0aF9z
YW5pdHkpCi0gICAgICAgIG15bGluZW5vID0gbXljb2RlLmZpcnN0bGluZW5vCi0gICAgICAgIG15
cGF0aCA9IG15Y29kZS5wYXRoCi0KLSAgICAgICAgZm9yIGNvbXAgaW4gX3B5dGVzdC5fY29kZS5j
b21waWxlLCBfcHl0ZXN0Ll9jb2RlLlNvdXJjZS5jb21waWxlOgotICAgICAgICAgICAgY2hlY2so
Y29tcCwgbmFtZSkKLQotICAgIGRlZiB0ZXN0X29mZnNldGxlc3Nfc3luZXJyKHNlbGYpOgotICAg
ICAgICBweXRlc3QucmFpc2VzKFN5bnRheEVycm9yLCBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUsICJs
YW1iZGEgYSxhOiAwIiwgbW9kZT0iZXZhbCIpCi0KLQotZGVmIHRlc3RfZ2V0c3RhcnRpbmdibG9j
a19zaW5nbGVsaW5lKCk6Ci0KLSAgICBjbGFzcyBBKG9iamVjdCk6Ci0KLSAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsICphcmdzKToKK2RlZiB0ZXN0X2dldHN0YXJ0aW5nYmxvY2tfc2luZ2xlbGlu
ZSgpIC0+IE5vbmU6CisgICAgY2xhc3MgQToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICph
cmdzKSAtPiBOb25lOgogICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCiAgICAg
ICAgICAgICBzZWxmLnNvdXJjZSA9IF9weXRlc3QuX2NvZGUuRnJhbWUoZnJhbWUpLnN0YXRlbWVu
dAogCkBAIC0zNzIsNzUgKzIyOCw2NCBAQCBkZWYgdGVzdF9nZXRzdGFydGluZ2Jsb2NrX3Npbmds
ZWxpbmUoKToKICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMQogCiAKLWRlZiB0ZXN0X2dldGxp
bmVfZmluYWxseSgpOgotCi0gICAgZGVmIGMoKToKK2RlZiB0ZXN0X2dldGxpbmVfZmluYWxseSgp
IC0+IE5vbmU6CisgICAgZGVmIGMoKSAtPiBOb25lOgogICAgICAgICBwYXNzCiAKLSAgICBleGNp
bmZvID0gcHl0ZXN0LnJhaXNlcygKLSAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAiIiIKLSAg
ICAgICAgICAgdGVhcmRvd24gPSBOb25lCi0gICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBjKDEpCi0gICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgdGVhcmRvd246
Ci0gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duKCkKLSAgICAiIiIsCi0gICAgKQorICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIHRlYXJkb3du
ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjKDEpICAjIHR5cGU6IGlnbm9yZQor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgdGVhcmRvd246CisgICAgICAgICAgICAg
ICAgdGVhcmRvd24oKSAgIyB0eXBlOiBpZ25vcmVbdW5yZWFjaGFibGVdCiAgICAgc291cmNlID0g
ZXhjaW5mby50cmFjZWJhY2tbLTFdLnN0YXRlbWVudAotICAgIGFzc2VydCBzdHIoc291cmNlKS5z
dHJpcCgpID09ICJjKDEpIgorICAgIGFzc2VydCBzdHIoc291cmNlKS5zdHJpcCgpID09ICJjKDEp
ICAjIHR5cGU6IGlnbm9yZSIKIAogCi1kZWYgdGVzdF9nZXRmdW5jc291cmNlX2R5bmFtaWMoKToK
LSAgICBzb3VyY2UgPSAiIiIKLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IKK2RlZiB0ZXN0X2dldGZ1bmNzb3VyY2VfZHluYW1pYygpIC0+IE5vbmU6CisgICAg
ZGVmIGYoKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICAgICAg
ZGVmIGcoKTogcGFzcwotICAgICIiIgotICAgIGNvID0gX3B5dGVzdC5fY29kZS5jb21waWxlKHNv
dXJjZSkKLSAgICBweS5idWlsdGluLmV4ZWNfKGNvLCBnbG9iYWxzKCkpCi0gICAgYXNzZXJ0IHN0
cihfcHl0ZXN0Ll9jb2RlLlNvdXJjZShmKSkuc3RyaXAoKSA9PSAiZGVmIGYoKTpcbiAgICByYWlz
ZSBWYWx1ZUVycm9yIgotICAgIGFzc2VydCBzdHIoX3B5dGVzdC5fY29kZS5Tb3VyY2UoZykpLnN0
cmlwKCkgPT0gImRlZiBnKCk6IHBhc3MiCisgICAgZGVmIGcoKToKKyAgICAgICAgcGFzcyAgIyBw
cmFnbWE6IG5vIGNvdmVyCiAKKyAgICBmX3NvdXJjZSA9IF9weXRlc3QuX2NvZGUuU291cmNlKGYp
CisgICAgZ19zb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShnKQorICAgIGFzc2VydCBzdHIo
Zl9zb3VyY2UpLnN0cmlwKCkgPT0gImRlZiBmKCk6XG4gICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcigpIgorICAgIGFzc2VydCBzdHIoZ19zb3VyY2UpLnN0cmlwKCkgPT0gImRlZiBnKCk6XG4g
ICAgcGFzcyAgIyBwcmFnbWE6IG5vIGNvdmVyIgogCi1kZWYgdGVzdF9nZXRmdW5jc291cmNlX3dp
dGhfbXVsdGluZV9zdHJpbmcoKToKIAorZGVmIHRlc3RfZ2V0ZnVuY3NvdXJjZV93aXRoX211bHRp
bmVfc3RyaW5nKCkgLT4gTm9uZToKICAgICBkZWYgZigpOgogICAgICAgICBjID0gIiIid2hpbGUg
VHJ1ZToKICAgICBwYXNzCiAiIiIKIAotICAgIGFzc2VydCAoCi0gICAgICAgIHN0cihfcHl0ZXN0
Ll9jb2RlLlNvdXJjZShmKSkuc3RyaXAoKQotICAgICAgICA9PSAnZGVmIGYoKTpcbiAgICBjID0g
IiIid2hpbGUgVHJ1ZTpcbiAgICBwYXNzXG4iIiInCi0gICAgKQotCi0KLWRlZiB0ZXN0X2RlaW5k
ZW50KCk6Ci0gICAgZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBpbXBvcnQgZGVpbmRlbnQgYXMg
ZGVpbmRlbnQKLQotICAgIGFzc2VydCBkZWluZGVudChbIlx0Zm9vIiwgIlx0YmFyIl0pID09IFsi
Zm9vIiwgImJhciJdCi0KKyAgICBleHBlY3RlZCA9ICcnJ1wKICAgICBkZWYgZigpOgogICAgICAg
ICBjID0gIiIid2hpbGUgVHJ1ZToKICAgICBwYXNzCiAiIiIKKycnJworICAgIGFzc2VydCBzdHIo
X3B5dGVzdC5fY29kZS5Tb3VyY2UoZikpID09IGV4cGVjdGVkLnJzdHJpcCgpCiAKLSAgICBsaW5l
cyA9IGRlaW5kZW50KGluc3BlY3QuZ2V0c291cmNlKGYpLnNwbGl0bGluZXMoKSkKLSAgICBhc3Nl
cnQgbGluZXMgPT0gWyJkZWYgZigpOiIsICcgICAgYyA9ICIiIndoaWxlIFRydWU6JywgIiAgICBw
YXNzIiwgJyIiIiddCiAKLSAgICBzb3VyY2UgPSAiIiIKK2RlZiB0ZXN0X2RlaW5kZW50KCkgLT4g
Tm9uZToKKyAgICBmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGltcG9ydCBkZWluZGVudCBhcyBk
ZWluZGVudAorCisgICAgYXNzZXJ0IGRlaW5kZW50KFsiXHRmb28iLCAiXHRiYXIiXSkgPT0gWyJm
b28iLCAiYmFyIl0KKworICAgIHNvdXJjZSA9ICIiIlwKICAgICAgICAgZGVmIGYoKToKICAgICAg
ICAgICAgIGRlZiBnKCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICIiIgogICAgIGxpbmVz
ID0gZGVpbmRlbnQoc291cmNlLnNwbGl0bGluZXMoKSkKLSAgICBhc3NlcnQgbGluZXMgPT0gWyIi
LCAiZGVmIGYoKToiLCAiICAgIGRlZiBnKCk6IiwgIiAgICAgICAgcGFzcyIsICIgICAgIl0KKyAg
ICBhc3NlcnQgbGluZXMgPT0gWyJkZWYgZigpOiIsICIgICAgZGVmIGcoKToiLCAiICAgICAgICBw
YXNzIl0KIAogCi1kZWYgdGVzdF9zb3VyY2Vfb2ZfY2xhc3NfYXRfZW9mX3dpdGhvdXRfbmV3bGlu
ZSh0bXBkaXIpOgorZGVmIHRlc3Rfc291cmNlX29mX2NsYXNzX2F0X2VvZl93aXRob3V0X25ld2xp
bmUodG1wZGlyLCBfc3lzX3NuYXBzaG90KSAtPiBOb25lOgogICAgICMgdGhpcyB0ZXN0IGZhaWxz
IGJlY2F1c2UgdGhlIGltcGxpY2l0IGluc3BlY3QuZ2V0c291cmNlKEEpIGJlbG93CiAgICAgIyBk
b2VzIG5vdCByZXR1cm4gdGhlICJ4ID0gMSIgbGFzdCBsaW5lLgogICAgIHNvdXJjZSA9IF9weXRl
c3QuX2NvZGUuU291cmNlKApAQCAtNDYyLDExOCArMzA3LDExNSBAQCBpZiBUcnVlOgogICAgICAg
ICBwYXNzCiAKIAotZGVmIHRlc3RfZ2V0c291cmNlX2ZhbGxiYWNrKCk6Ci0gICAgZnJvbSBfcHl0
ZXN0Ll9jb2RlLnNvdXJjZSBpbXBvcnQgZ2V0c291cmNlCi0KK2RlZiB0ZXN0X3NvdXJjZV9mYWxs
YmFjaygpIC0+IE5vbmU6CisgICAgc3JjID0gU291cmNlKHgpCiAgICAgZXhwZWN0ZWQgPSAiIiJk
ZWYgeCgpOgogICAgIHBhc3MiIiIKLSAgICBzcmMgPSBnZXRzb3VyY2UoeCkKLSAgICBhc3NlcnQg
c3JjID09IGV4cGVjdGVkCi0KLQotZGVmIHRlc3RfaWRlbV9jb21waWxlX2FuZF9nZXRzb3VyY2Uo
KToKLSAgICBmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGltcG9ydCBnZXRzb3VyY2UKKyAgICBh
c3NlcnQgc3RyKHNyYykgPT0gZXhwZWN0ZWQKIAotICAgIGV4cGVjdGVkID0gImRlZiB4KCk6IHBh
c3MiCi0gICAgY28gPSBfcHl0ZXN0Ll9jb2RlLmNvbXBpbGUoZXhwZWN0ZWQpCi0gICAgc3JjID0g
Z2V0c291cmNlKGNvKQotICAgIGFzc2VydCBzcmMgPT0gZXhwZWN0ZWQKIAotCi1kZWYgdGVzdF9m
aW5kc291cmNlX2ZhbGxiYWNrKCk6CitkZWYgdGVzdF9maW5kc291cmNlX2ZhbGxiYWNrKCkgLT4g
Tm9uZToKICAgICBmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGltcG9ydCBmaW5kc291cmNlCiAK
ICAgICBzcmMsIGxpbmVubyA9IGZpbmRzb3VyY2UoeCkKKyAgICBhc3NlcnQgc3JjIGlzIG5vdCBO
b25lCiAgICAgYXNzZXJ0ICJ0ZXN0X2ZpbmRzb3VyY2Vfc2ltcGxlIiBpbiBzdHIoc3JjKQogICAg
IGFzc2VydCBzcmNbbGluZW5vXSA9PSAiICAgIGRlZiB4KCk6IgogCiAKLWRlZiB0ZXN0X2ZpbmRz
b3VyY2UoKToKK2RlZiB0ZXN0X2ZpbmRzb3VyY2UobW9ua2V5cGF0Y2gpIC0+IE5vbmU6CiAgICAg
ZnJvbSBfcHl0ZXN0Ll9jb2RlLnNvdXJjZSBpbXBvcnQgZmluZHNvdXJjZQogCi0gICAgY28gPSBf
cHl0ZXN0Ll9jb2RlLmNvbXBpbGUoCi0gICAgICAgICIiImlmIDE6Ci0gICAgZGVmIHgoKToKLSAg
ICAgICAgcGFzcwotIiIiCi0gICAgKQorICAgIGZpbGVuYW1lID0gIjxweXRlc3QtdGVzdF9maW5k
c291cmNlPiIKKyAgICBsaW5lcyA9IFsiaWYgMTpcbiIsICIgICAgZGVmIHgoKTpcbiIsICIgICAg
ICAgICAgcGFzc1xuIl0KKyAgICBjbyA9IGNvbXBpbGUoIiIuam9pbihsaW5lcyksIGZpbGVuYW1l
LCAiZXhlYyIpCisKKyAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIGxpbmVjYWNoZS5jYWNoZSBp
cyBwcml2YXRlLgorICAgIG1vbmtleXBhdGNoLnNldGl0ZW0obGluZWNhY2hlLmNhY2hlLCBmaWxl
bmFtZSwgKDEsIE5vbmUsIGxpbmVzLCBmaWxlbmFtZSkpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRl
ZmluZWRdCiAKICAgICBzcmMsIGxpbmVubyA9IGZpbmRzb3VyY2UoY28pCisgICAgYXNzZXJ0IHNy
YyBpcyBub3QgTm9uZQogICAgIGFzc2VydCAiaWYgMToiIGluIHN0cihzcmMpCiAKLSAgICBkID0g
e30KKyAgICBkID0ge30gICMgdHlwZTogRGljdFtzdHIsIEFueV0KICAgICBldmFsKGNvLCBkKQog
ICAgIHNyYywgbGluZW5vID0gZmluZHNvdXJjZShkWyJ4Il0pCisgICAgYXNzZXJ0IHNyYyBpcyBu
b3QgTm9uZQogICAgIGFzc2VydCAiaWYgMToiIGluIHN0cihzcmMpCiAgICAgYXNzZXJ0IHNyY1ts
aW5lbm9dID09ICIgICAgZGVmIHgoKToiCiAKIAotZGVmIHRlc3RfZ2V0ZnNsaW5lbm8oKToKLSAg
ICBmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGdldGZzbGluZW5vCi0KLSAgICBkZWYgZih4KToK
LSAgICAgICAgcGFzcworZGVmIHRlc3RfZ2V0ZnNsaW5lbm8oKSAtPiBOb25lOgorICAgIGRlZiBm
KHgpIC0+IE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCiAgICAg
ZnNwYXRoLCBsaW5lbm8gPSBnZXRmc2xpbmVubyhmKQogCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
ZnNwYXRoLCBweS5wYXRoLmxvY2FsKQogICAgIGFzc2VydCBmc3BhdGguYmFzZW5hbWUgPT0gInRl
c3Rfc291cmNlLnB5IgotICAgIGFzc2VydCBsaW5lbm8gPT0gX3B5dGVzdC5fY29kZS5nZXRyYXdj
b2RlKGYpLmNvX2ZpcnN0bGluZW5vIC0gMSAgIyBzZWUgZmluZHNvdXJjZQorICAgIGFzc2VydCBs
aW5lbm8gPT0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyAtIDEgICMgc2VlIGZpbmRzb3VyY2UK
IAotICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICBjbGFzcyBBOgogICAgICAgICBwYXNzCiAKICAg
ICBmc3BhdGgsIGxpbmVubyA9IGdldGZzbGluZW5vKEEpCiAKICAgICBfLCBBX2xpbmVubyA9IGlu
c3BlY3QuZmluZHNvdXJjZShBKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGZzcGF0aCwgcHkucGF0
aC5sb2NhbCkKICAgICBhc3NlcnQgZnNwYXRoLmJhc2VuYW1lID09ICJ0ZXN0X3NvdXJjZS5weSIK
ICAgICBhc3NlcnQgbGluZW5vID09IEFfbGluZW5vCiAKICAgICBhc3NlcnQgZ2V0ZnNsaW5lbm8o
MykgPT0gKCIiLCAtMSkKIAotICAgIGNsYXNzIEIob2JqZWN0KToKKyAgICBjbGFzcyBCOgogICAg
ICAgICBwYXNzCiAKLSAgICBCLl9fbmFtZV9fID0gIkIyIgorICAgIEIuX19uYW1lX18gPSBCLl9f
cXVhbG5hbWVfXyA9ICJCMiIKICAgICBhc3NlcnQgZ2V0ZnNsaW5lbm8oQilbMV0gPT0gLTEKIAor
ICAgIGNvID0gY29tcGlsZSgiLi4uIiwgIiIsICJldmFsIikKKyAgICBhc3NlcnQgY28uY29fZmls
ZW5hbWUgPT0gIiIKIAotZGVmIHRlc3RfY29kZV9vZl9vYmplY3RfaW5zdGFuY2Vfd2l0aF9jYWxs
KCk6CisgICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgorICAgICAgICBh
c3NlcnQgZ2V0ZnNsaW5lbm8oY28pID09ICgiIiwgLTEpCisgICAgZWxzZToKKyAgICAgICAgYXNz
ZXJ0IGdldGZzbGluZW5vKGNvKSA9PSAoIiIsIDApCiAKLSAgICBjbGFzcyBBKG9iamVjdCk6CisK
K2RlZiB0ZXN0X2NvZGVfb2Zfb2JqZWN0X2luc3RhbmNlX3dpdGhfY2FsbCgpIC0+IE5vbmU6Cisg
ICAgY2xhc3MgQToKICAgICAgICAgcGFzcwogCiAgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3Is
IGxhbWJkYTogX3B5dGVzdC5fY29kZS5Tb3VyY2UoQSgpKSkKIAotICAgIGNsYXNzIFdpdGhDYWxs
KG9iamVjdCk6Ci0KLSAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgIGNsYXNzIFdpdGhD
YWxsOgorICAgICAgICBkZWYgX19jYWxsX18oc2VsZikgLT4gTm9uZToKICAgICAgICAgICAgIHBh
c3MKIAogICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLkNvZGUoV2l0aENhbGwoKSkKICAgICBhc3Nl
cnQgInBhc3MiIGluIHN0cihjb2RlLnNvdXJjZSgpKQogCi0gICAgY2xhc3MgSGVsbG8ob2JqZWN0
KToKLQotICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgY2xhc3MgSGVsbG86CisgICAg
ICAgIGRlZiBfX2NhbGxfXyhzZWxmKSAtPiBOb25lOgogICAgICAgICAgICAgcGFzcwogCiAgICAg
cHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogX3B5dGVzdC5fY29kZS5Db2RlKEhlbGxv
KSkKIAogCi1kZWYgZ2V0c3RhdGVtZW50KGxpbmVubywgc291cmNlKToKK2RlZiBnZXRzdGF0ZW1l
bnQobGluZW5vOiBpbnQsIHNvdXJjZSkgLT4gU291cmNlOgogICAgIGZyb20gX3B5dGVzdC5fY29k
ZS5zb3VyY2UgaW1wb3J0IGdldHN0YXRlbWVudHJhbmdlX2FzdAogCi0gICAgc291cmNlID0gX3B5
dGVzdC5fY29kZS5Tb3VyY2Uoc291cmNlLCBkZWluZGVudD1GYWxzZSkKLSAgICBhc3QsIHN0YXJ0
LCBlbmQgPSBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QobGluZW5vLCBzb3VyY2UpCi0gICAgcmV0dXJu
IHNvdXJjZVtzdGFydDplbmRdCisgICAgc3JjID0gX3B5dGVzdC5fY29kZS5Tb3VyY2Uoc291cmNl
KQorICAgIGFzdCwgc3RhcnQsIGVuZCA9IGdldHN0YXRlbWVudHJhbmdlX2FzdChsaW5lbm8sIHNy
YykKKyAgICByZXR1cm4gc3JjW3N0YXJ0OmVuZF0KIAogCi1kZWYgdGVzdF9vbmVsaW5lKCk6Citk
ZWYgdGVzdF9vbmVsaW5lKCkgLT4gTm9uZToKICAgICBzb3VyY2UgPSBnZXRzdGF0ZW1lbnQoMCwg
InJhaXNlIFZhbHVlRXJyb3IiKQogICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAicmFpc2UgVmFs
dWVFcnJvciIKIAogCi1kZWYgdGVzdF9jb21tZW50X2FuZF9ub19uZXdsaW5lX2F0X2VuZCgpOgor
ZGVmIHRlc3RfY29tbWVudF9hbmRfbm9fbmV3bGluZV9hdF9lbmQoKSAtPiBOb25lOgogICAgIGZy
b20gX3B5dGVzdC5fY29kZS5zb3VyY2UgaW1wb3J0IGdldHN0YXRlbWVudHJhbmdlX2FzdAogCiAg
ICAgc291cmNlID0gU291cmNlKApAQCAtNTg3LDEzICs0MjksMTIgQEAgZGVmIHRlc3RfY29tbWVu
dF9hbmRfbm9fbmV3bGluZV9hdF9lbmQoKToKICAgICBhc3NlcnQgZW5kID09IDIKIAogCi1kZWYg
dGVzdF9vbmVsaW5lX2FuZF9jb21tZW50KCk6CitkZWYgdGVzdF9vbmVsaW5lX2FuZF9jb21tZW50
KCkgLT4gTm9uZToKICAgICBzb3VyY2UgPSBnZXRzdGF0ZW1lbnQoMCwgInJhaXNlIFZhbHVlRXJy
b3JcbiNoZWxsbyIpCiAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICJyYWlzZSBWYWx1ZUVycm9y
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZv
IiksIHJlYXNvbj0iZG9lcyBub3Qgd29yayBvbiBweXB5IikKLWRlZiB0ZXN0X2NvbW1lbnRzKCk6
CitkZWYgdGVzdF9jb21tZW50cygpIC0+IE5vbmU6CiAgICAgc291cmNlID0gJycnZGVmIHRlc3Qo
KToKICAgICAiY29tbWVudCAxIgogICAgIHggPSAxCkBAIC02MDgsMTIgKzQ0OSwxOCBAQCBjb21t
ZW50IDQKICcnJwogICAgIGZvciBsaW5lIGluIHJhbmdlKDIsIDYpOgogICAgICAgICBhc3NlcnQg
c3RyKGdldHN0YXRlbWVudChsaW5lLCBzb3VyY2UpKSA9PSAiICAgIHggPSAxIgotICAgIGZvciBs
aW5lIGluIHJhbmdlKDYsIDEwKToKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA4KSBv
ciBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6CisgICAgICAgIHRxc19zdGFydCA9
IDgKKyAgICBlbHNlOgorICAgICAgICB0cXNfc3RhcnQgPSAxMAorICAgICAgICBhc3NlcnQgc3Ry
KGdldHN0YXRlbWVudCgxMCwgc291cmNlKSkgPT0gJyIiIicKKyAgICBmb3IgbGluZSBpbiByYW5n
ZSg2LCB0cXNfc3RhcnQpOgogICAgICAgICBhc3NlcnQgc3RyKGdldHN0YXRlbWVudChsaW5lLCBz
b3VyY2UpKSA9PSAiICAgIGFzc2VydCBGYWxzZSIKLSAgICBhc3NlcnQgc3RyKGdldHN0YXRlbWVu
dCgxMCwgc291cmNlKSkgPT0gJyIiIicKKyAgICBmb3IgbGluZSBpbiByYW5nZSh0cXNfc3RhcnQs
IDEwKToKKyAgICAgICAgYXNzZXJ0IHN0cihnZXRzdGF0ZW1lbnQobGluZSwgc291cmNlKSkgPT0g
JyIiIlxuY29tbWVudCA0XG4iIiInCiAKIAotZGVmIHRlc3RfY29tbWVudF9pbl9zdGF0ZW1lbnQo
KToKK2RlZiB0ZXN0X2NvbW1lbnRfaW5fc3RhdGVtZW50KCkgLT4gTm9uZToKICAgICBzb3VyY2Ug
PSAiIiJ0ZXN0KGZvbz0xLAogICAgICMgY29tbWVudCAxCiAgICAgYmFyPTIpCkBAIC02MjUsMTcg
KzQ3Miw0NCBAQCBkZWYgdGVzdF9jb21tZW50X2luX3N0YXRlbWVudCgpOgogICAgICAgICApCiAK
IAotZGVmIHRlc3Rfc2luZ2xlX2xpbmVfZWxzZSgpOgorZGVmIHRlc3Rfc291cmNlX3dpdGhfZGVj
b3JhdG9yKCkgLT4gTm9uZToKKyAgICAiIiJUZXN0IGJlaGF2aW9yIHdpdGggU291cmNlIC8gQ29k
ZSgpLnNvdXJjZSB3aXRoIHJlZ2FyZCB0byBkZWNvcmF0b3JzLiIiIgorICAgIGZyb20gX3B5dGVz
dC5jb21wYXQgaW1wb3J0IGdldF9yZWFsX2Z1bmMKKworICAgIEBweXRlc3QubWFyay5mb28KKyAg
ICBkZWYgZGVjb19tYXJrKCk6CisgICAgICAgIGFzc2VydCBGYWxzZQorCisgICAgc3JjID0gaW5z
cGVjdC5nZXRzb3VyY2UoZGVjb19tYXJrKQorICAgIGFzc2VydCB0ZXh0d3JhcC5pbmRlbnQoc3Ry
KFNvdXJjZShkZWNvX21hcmspKSwgIiAgICAiKSArICJcbiIgPT0gc3JjCisgICAgYXNzZXJ0IHNy
Yy5zdGFydHN3aXRoKCIgICAgQHB5dGVzdC5tYXJrLmZvbyIpCisKKyAgICBAcHl0ZXN0LmZpeHR1
cmUKKyAgICBkZWYgZGVjb19maXh0dXJlKCk6CisgICAgICAgIGFzc2VydCBGYWxzZQorCisgICAg
c3JjID0gaW5zcGVjdC5nZXRzb3VyY2UoZGVjb19maXh0dXJlKQorICAgIGFzc2VydCBzcmMgPT0g
IiAgICBAcHl0ZXN0LmZpeHR1cmVcbiAgICBkZWYgZGVjb19maXh0dXJlKCk6XG4gICAgICAgIGFz
c2VydCBGYWxzZVxuIgorICAgICMgY3VycmVubHkgU291cmNlIGRvZXMgbm90IHVud3JhcCBkZWNv
cmF0b3JzLCB0ZXN0aW5nIHRoZQorICAgICMgZXhpc3RpbmcgYmVoYXZpb3IgaGVyZSBmb3IgZXhw
bGljaXRuZXNzLCBidXQgcGVyaGFwcyB3ZSBzaG91bGQgcmV2aXNpdC9jaGFuZ2UgdGhpcworICAg
ICMgaW4gdGhlIGZ1dHVyZQorICAgIGFzc2VydCBzdHIoU291cmNlKGRlY29fZml4dHVyZSkpLnN0
YXJ0c3dpdGgoIkBmdW5jdG9vbHMud3JhcHMoZnVuY3Rpb24pIikKKyAgICBhc3NlcnQgKAorICAg
ICAgICB0ZXh0d3JhcC5pbmRlbnQoc3RyKFNvdXJjZShnZXRfcmVhbF9mdW5jKGRlY29fZml4dHVy
ZSkpKSwgIiAgICAiKSArICJcbiIgPT0gc3JjCisgICAgKQorCisKK2RlZiB0ZXN0X3NpbmdsZV9s
aW5lX2Vsc2UoKSAtPiBOb25lOgogICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgxLCAiaWYgRmFs
c2U6IDJcbmVsc2U6IDMiKQogICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAiZWxzZTogMyIKIAog
Ci1kZWYgdGVzdF9zaW5nbGVfbGluZV9maW5hbGx5KCk6CitkZWYgdGVzdF9zaW5nbGVfbGluZV9m
aW5hbGx5KCkgLT4gTm9uZToKICAgICBzb3VyY2UgPSBnZXRzdGF0ZW1lbnQoMSwgInRyeTogMVxu
ZmluYWxseTogMyIpCiAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICJmaW5hbGx5OiAzIgogCiAK
LWRlZiB0ZXN0X2lzc3VlNTUoKToKK2RlZiB0ZXN0X2lzc3VlNTUoKSAtPiBOb25lOgogICAgIHNv
dXJjZSA9ICgKICAgICAgICAgImRlZiByb3VuZF90cmlwKGRpbnApOlxuICBhc3NlcnQgMSA9PSBk
aW5wXG4iCiAgICAgICAgICdkZWYgdGVzdF9ydCgpOlxuICByb3VuZF90cmlwKCIiIlxuIiIiKVxu
JwpAQCAtNjQ0LDcgKzUxOCw3IEBAIGRlZiB0ZXN0X2lzc3VlNTUoKToKICAgICBhc3NlcnQgc3Ry
KHMpID09ICcgIHJvdW5kX3RyaXAoIiIiXG4iIiIpJwogCiAKLWRlZiBYWFh0ZXN0X211bHRpbGlu
ZSgpOgorZGVmIHRlc3RfbXVsdGlsaW5lKCkgLT4gTm9uZToKICAgICBzb3VyY2UgPSBnZXRzdGF0
ZW1lbnQoCiAgICAgICAgIDAsCiAgICAgICAgICIiIlwKQEAgLTY1Nyw5ICs1MzEsOSBAQCB4ID0g
MwogICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAicmFpc2UgVmFsdWVFcnJvcihcbiAgICAyM1xu
KSIKIAogCi1jbGFzcyBUZXN0VHJ5KG9iamVjdCk6Ci0gICAgcHl0ZXN0bWFyayA9IGFzdG9ubHkK
LSAgICBzb3VyY2UgPSAiIiJcCitjbGFzcyBUZXN0VHJ5OgorICAgIGRlZiBzZXR1cF9jbGFzcyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLnNvdXJjZSA9ICIiIlwKIHRyeToKICAgICByYWlz
ZSBWYWx1ZUVycm9yCiBleGNlcHQgU29tZXRoaW5nOgpAQCAtNjY4LDQzICs1NDIsNDQgQEAgZWxz
ZToKICAgICByYWlzZSBLZXlFcnJvcigpCiAiIiIKIAotICAgIGRlZiB0ZXN0X2JvZHkoc2VsZik6
CisgICAgZGVmIHRlc3RfYm9keShzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBnZXRz
dGF0ZW1lbnQoMSwgc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSAi
ICAgIHJhaXNlIFZhbHVlRXJyb3IiCiAKLSAgICBkZWYgdGVzdF9leGNlcHRfbGluZShzZWxmKToK
KyAgICBkZWYgdGVzdF9leGNlcHRfbGluZShzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2Ug
PSBnZXRzdGF0ZW1lbnQoMiwgc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIoc291cmNl
KSA9PSAiZXhjZXB0IFNvbWV0aGluZzoiCiAKLSAgICBkZWYgdGVzdF9leGNlcHRfYm9keShzZWxm
KToKKyAgICBkZWYgdGVzdF9leGNlcHRfYm9keShzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3Vy
Y2UgPSBnZXRzdGF0ZW1lbnQoMywgc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIoc291
cmNlKSA9PSAiICAgIHJhaXNlIEluZGV4RXJyb3IoMSkiCiAKLSAgICBkZWYgdGVzdF9lbHNlKHNl
bGYpOgorICAgIGRlZiB0ZXN0X2Vsc2Uoc2VsZikgLT4gTm9uZToKICAgICAgICAgc291cmNlID0g
Z2V0c3RhdGVtZW50KDUsIHNlbGYuc291cmNlKQogICAgICAgICBhc3NlcnQgc3RyKHNvdXJjZSkg
PT0gIiAgICByYWlzZSBLZXlFcnJvcigpIgogCiAKLWNsYXNzIFRlc3RUcnlGaW5hbGx5KG9iamVj
dCk6Ci0gICAgc291cmNlID0gIiIiXAorY2xhc3MgVGVzdFRyeUZpbmFsbHk6CisgICAgZGVmIHNl
dHVwX2NsYXNzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuc291cmNlID0gIiIiXAogdHJ5
OgogICAgIHJhaXNlIFZhbHVlRXJyb3IKIGZpbmFsbHk6CiAgICAgcmFpc2UgSW5kZXhFcnJvcigx
KQogIiIiCiAKLSAgICBkZWYgdGVzdF9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X2JvZHkoc2Vs
ZikgLT4gTm9uZToKICAgICAgICAgc291cmNlID0gZ2V0c3RhdGVtZW50KDEsIHNlbGYuc291cmNl
KQogICAgICAgICBhc3NlcnQgc3RyKHNvdXJjZSkgPT0gIiAgICByYWlzZSBWYWx1ZUVycm9yIgog
Ci0gICAgZGVmIHRlc3RfZmluYWxseShzZWxmKToKKyAgICBkZWYgdGVzdF9maW5hbGx5KHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgzLCBzZWxmLnNvdXJjZSkK
ICAgICAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICIgICAgcmFpc2UgSW5kZXhFcnJvcigxKSIK
IAogCi1jbGFzcyBUZXN0SWYob2JqZWN0KToKLSAgICBweXRlc3RtYXJrID0gYXN0b25seQotICAg
IHNvdXJjZSA9ICIiIlwKK2NsYXNzIFRlc3RJZjoKKyAgICBkZWYgc2V0dXBfY2xhc3Moc2VsZikg
LT4gTm9uZToKKyAgICAgICAgc2VsZi5zb3VyY2UgPSAiIiJcCiBpZiAxOgogICAgIHkgPSAzCiBl
bGlmIEZhbHNlOgpAQCAtNzEzLDI0ICs1ODgsMjQgQEAgZWxzZToKICAgICB5ID0gNwogIiIiCiAK
LSAgICBkZWYgdGVzdF9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X2JvZHkoc2VsZikgLT4gTm9u
ZToKICAgICAgICAgc291cmNlID0gZ2V0c3RhdGVtZW50KDEsIHNlbGYuc291cmNlKQogICAgICAg
ICBhc3NlcnQgc3RyKHNvdXJjZSkgPT0gIiAgICB5ID0gMyIKIAotICAgIGRlZiB0ZXN0X2VsaWZf
Y2xhdXNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X2VsaWZfY2xhdXNlKHNlbGYpIC0+IE5vbmU6CiAg
ICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCgyLCBzZWxmLnNvdXJjZSkKICAgICAgICAgYXNz
ZXJ0IHN0cihzb3VyY2UpID09ICJlbGlmIEZhbHNlOiIKIAotICAgIGRlZiB0ZXN0X2VsaWYoc2Vs
Zik6CisgICAgZGVmIHRlc3RfZWxpZihzZWxmKSAtPiBOb25lOgogICAgICAgICBzb3VyY2UgPSBn
ZXRzdGF0ZW1lbnQoMywgc2VsZi5zb3VyY2UpCiAgICAgICAgIGFzc2VydCBzdHIoc291cmNlKSA9
PSAiICAgIHkgPSA1IgogCi0gICAgZGVmIHRlc3RfZWxzZShzZWxmKToKKyAgICBkZWYgdGVzdF9l
bHNlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHNvdXJjZSA9IGdldHN0YXRlbWVudCg1LCBzZWxm
LnNvdXJjZSkKICAgICAgICAgYXNzZXJ0IHN0cihzb3VyY2UpID09ICIgICAgeSA9IDciCiAKIAot
ZGVmIHRlc3Rfc2VtaWNvbG9uKCk6CitkZWYgdGVzdF9zZW1pY29sb24oKSAtPiBOb25lOgogICAg
IHMgPSAiIiJcCiBoZWxsbyA7IHB5dGVzdC5za2lwKCkKICIiIgpAQCAtNzM4LDcgKzYxMyw3IEBA
IGhlbGxvIDsgcHl0ZXN0LnNraXAoKQogICAgIGFzc2VydCBzdHIoc291cmNlKSA9PSBzLnN0cmlw
KCkKIAogCi1kZWYgdGVzdF9kZWZfb25saW5lKCk6CitkZWYgdGVzdF9kZWZfb25saW5lKCkgLT4g
Tm9uZToKICAgICBzID0gIiIiXAogZGVmIGZ1bmMoKTogcmFpc2UgVmFsdWVFcnJvcig0MikKIApA
QCAtNzQ5LDEwICs2MjQsMjYgQEAgZGVmIHNvbWV0aGluZygpOgogICAgIGFzc2VydCBzdHIoc291
cmNlKSA9PSAiZGVmIGZ1bmMoKTogcmFpc2UgVmFsdWVFcnJvcig0MikiCiAKIAotZGVmIFhYWF90
ZXN0X2V4cHJlc3Npb25fbXVsdGlsaW5lKCk6CitkZWYgWFhYX3Rlc3RfZXhwcmVzc2lvbl9tdWx0
aWxpbmUoKSAtPiBOb25lOgogICAgIHNvdXJjZSA9ICIiIlwKIHNvbWV0aGluZwogJycnCiAnJyci
IiIKICAgICByZXN1bHQgPSBnZXRzdGF0ZW1lbnQoMSwgc291cmNlKQogICAgIGFzc2VydCBzdHIo
cmVzdWx0KSA9PSAiJycnXG4nJyciCisKKworZGVmIHRlc3RfZ2V0c3RhcnRpbmdibG9ja19tdWx0
aWxpbmUoKSAtPiBOb25lOgorICAgIGNsYXNzIEE6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqYXJncyk6CisgICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKKyAgICAgICAg
ICAgIHNlbGYuc291cmNlID0gX3B5dGVzdC5fY29kZS5GcmFtZShmcmFtZSkuc3RhdGVtZW50CisK
KyAgICAjIGZtdDogb2ZmCisgICAgeCA9IEEoJ3gnLAorICAgICAgICAgICd5JworICAgICAgICAg
ICwKKyAgICAgICAgICAneicpCisgICAgIyBmbXQ6IG9uCisgICAgdmFsdWVzID0gW2kgZm9yIGkg
aW4geC5zb3VyY2UubGluZXMgaWYgaS5zdHJpcCgpXQorICAgIGFzc2VydCBsZW4odmFsdWVzKSA9
PSA0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2VfbXVs
dGlsaW5lX2Jsb2NrLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlX211
bHRpbGluZV9ibG9jay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJmNzQxMmVi
OGNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291
cmNlX211bHRpbGluZV9ibG9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMg
Zmxha2U4OiBub3FhCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0KLQotZGVm
IHRlc3RfZ2V0c3RhcnRpbmdibG9ja19tdWx0aWxpbmUoKToKLSAgICAiIiIKLSAgICBUaGlzIHRl
c3Qgd2FzIG9yaWdpbmFsbHkgZm91bmQgaW4gdGVzdF9zb3VyY2UucHksIGJ1dCBpdCBkZXBlbmRz
IG9uIHRoZSB3ZWlyZAotICAgIGZvcm1hdHRpbmcgb2YgdGhlIGBgeCA9IEFgYCBjb25zdHJ1Y3Qg
c2VlbiBoZXJlIGFuZCBvdXIgYXV0b3BlcDggdG9vbCBjYW4gb25seSBleGNsdWRlIGVudGlyZQot
ICAgIGZpbGVzIChpdCBkb2VzIG5vdCBzdXBwb3J0IGV4Y2x1ZGluZyBsaW5lcy9ibG9ja3MgdXNp
bmcgdGhlIHRyYWRpdGlvbmFsICNub3FhIGNvbW1lbnQgeWV0LAotICAgIHNlZSBoaGF0dG8vYXV0
b3BlcDgjMzA3KS4gSXQgd2FzIGNvbnNpZGVyZWQgYmV0dGVyIHRvIGp1c3QgbW92ZSB0aGlzIHNp
bmdsZSB0ZXN0IHRvIGl0cyBvd24KLSAgICBmaWxlIGFuZCBleGNsdWRlIGl0IGZyb20gYXV0b3Bl
cDggdGhhbiB0cnkgdG8gY29tcGxpY2F0ZSB0aGluZ3MuCi0gICAgIiIiCi0KLSAgICBjbGFzcyBB
KG9iamVjdCk6Ci0KLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAg
ICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQotICAgICAgICAgICAgc2VsZi5zb3VyY2UgPSBf
cHl0ZXN0Ll9jb2RlLkZyYW1lKGZyYW1lKS5zdGF0ZW1lbnQKLQotICAgICMgZm10OiBvZmYKLSAg
ICB4ID0gQSgneCcsCi0gICAgICAgICAgJ3knCi0gICAgICAgICAgLAotICAgICAgICAgICd6JykK
LSAgICAjIGZtdDogb24KLSAgICB2YWx1ZXMgPSBbaSBmb3IgaSBpbiB4LnNvdXJjZS5saW5lcyBp
ZiBpLnN0cmlwKCldCi0gICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvY29kZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvY29kZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNi
MGZmZDU4MWZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3RfY29kZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
Y29kZS90ZXN0X2V4Y2luZm8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9zb3Vy
Y2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2VfbXVsdGlsaW5lX2Js
b2NrLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvbmZ0ZXN0LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmE2NjdiZTQyZmNiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvY29uZnRlc3QucHkKQEAgLTAsMCArMSwyMzcgQEAKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKworaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0
ZXN0LnB5dGVzdGVyIGltcG9ydCBSdW5SZXN1bHQKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBv
cnQgVGVzdGRpcgorCitpZiBzeXMuZ2V0dHJhY2UoKToKKworICAgIEBweXRlc3QuZml4dHVyZShh
dXRvdXNlPVRydWUpCisgICAgZGVmIHJlc3RvcmVfdHJhY2luZygpOgorICAgICAgICAiIiJSZXN0
b3JlIHRyYWNpbmcgZnVuY3Rpb24gKHdoZW4gcnVuIHdpdGggQ292ZXJhZ2UucHkpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzcwMTEKKyAgICAgICAgIiIiCisgICAg
ICAgIG9yaWdfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKQorICAgICAgICB5aWVsZAorICAgICAgICBp
ZiBzeXMuZ2V0dHJhY2UoKSAhPSBvcmlnX3RyYWNlOgorICAgICAgICAgICAgc3lzLnNldHRyYWNl
KG9yaWdfdHJhY2UpCisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlLCB0cnlm
aXJzdD1UcnVlKQorZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKGl0ZW1zKToKKyAg
ICAiIiJQcmVmZXIgZmFzdGVyIHRlc3RzLgorCisgICAgVXNlIGEgaG9va3dyYXBwZXIgdG8gZG8g
dGhpcyBpbiB0aGUgYmVnaW5uaW5nLCBzbyBlLmcuIC0tZmYgc3RpbGwgd29ya3MKKyAgICBjb3Jy
ZWN0bHkuCisgICAgIiIiCisgICAgZmFzdF9pdGVtcyA9IFtdCisgICAgc2xvd19pdGVtcyA9IFtd
CisgICAgc2xvd2VzdF9pdGVtcyA9IFtdCisgICAgbmV1dHJhbF9pdGVtcyA9IFtdCisKKyAgICBz
cGF3bl9uYW1lcyA9IHsic3Bhd25fcHl0ZXN0IiwgInNwYXduIn0KKworICAgIGZvciBpdGVtIGlu
IGl0ZW1zOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaXh0dXJlcyA9IGl0ZW0uZml4dHVy
ZW5hbWVzCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgZG9j
dGVzdCBhdCBsZWFzdAorICAgICAgICAgICAgIyAoaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHl0ZXN0L2lzc3Vlcy81MDcwKQorICAgICAgICAgICAgbmV1dHJhbF9pdGVtcy5hcHBlbmQo
aXRlbSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmICJ0ZXN0ZGlyIiBpbiBmaXh0dXJl
czoKKyAgICAgICAgICAgICAgICBjb19uYW1lcyA9IGl0ZW0uZnVuY3Rpb24uX19jb2RlX18uY29f
bmFtZXMKKyAgICAgICAgICAgICAgICBpZiBzcGF3bl9uYW1lcy5pbnRlcnNlY3Rpb24oY29fbmFt
ZXMpOgorICAgICAgICAgICAgICAgICAgICBpdGVtLmFkZF9tYXJrZXIocHl0ZXN0Lm1hcmsudXNl
c19wZXhwZWN0KQorICAgICAgICAgICAgICAgICAgICBzbG93ZXN0X2l0ZW1zLmFwcGVuZChpdGVt
KQorICAgICAgICAgICAgICAgIGVsaWYgInJ1bnB5dGVzdF9zdWJwcm9jZXNzIiBpbiBjb19uYW1l
czoKKyAgICAgICAgICAgICAgICAgICAgc2xvd2VzdF9pdGVtcy5hcHBlbmQoaXRlbSkKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzbG93X2l0ZW1zLmFwcGVuZChp
dGVtKQorICAgICAgICAgICAgICAgIGl0ZW0uYWRkX21hcmtlcihweXRlc3QubWFyay5zbG93KQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXJrZXIgPSBpdGVtLmdldF9jbG9z
ZXN0X21hcmtlcigic2xvdyIpCisgICAgICAgICAgICAgICAgaWYgbWFya2VyOgorICAgICAgICAg
ICAgICAgICAgICBzbG93ZXN0X2l0ZW1zLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgIGZhc3RfaXRlbXMuYXBwZW5kKGl0ZW0pCisKKyAgICBp
dGVtc1s6XSA9IGZhc3RfaXRlbXMgKyBuZXV0cmFsX2l0ZW1zICsgc2xvd19pdGVtcyArIHNsb3dl
c3RfaXRlbXMKKworICAgIHlpZWxkCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgdHdfbW9jaygp
OgorICAgICIiIlJldHVybnMgYSBtb2NrIHRlcm1pbmFsIHdyaXRlciIiIgorCisgICAgY2xhc3Mg
VFdNb2NrOgorICAgICAgICBXUklURSA9IG9iamVjdCgpCisKKyAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5saW5lcyA9IFtdCisgICAgICAgICAgICBzZWxmLmlz
X3dyaXRpbmcgPSBGYWxzZQorCisgICAgICAgIGRlZiBzZXAoc2VsZiwgc2VwLCBsaW5lPU5vbmUp
OgorICAgICAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQoKHNlcCwgbGluZSkpCisKKyAgICAgICAg
ZGVmIHdyaXRlKHNlbGYsIG1zZywgKiprdyk6CisgICAgICAgICAgICBzZWxmLmxpbmVzLmFwcGVu
ZCgoVFdNb2NrLldSSVRFLCBtc2cpKQorCisgICAgICAgIGRlZiBfd3JpdGVfc291cmNlKHNlbGYs
IGxpbmVzLCBpbmRlbnRzPSgpKToKKyAgICAgICAgICAgIGlmIG5vdCBpbmRlbnRzOgorICAgICAg
ICAgICAgICAgIGluZGVudHMgPSBbIiJdICogbGVuKGxpbmVzKQorICAgICAgICAgICAgZm9yIGlu
ZGVudCwgbGluZSBpbiB6aXAoaW5kZW50cywgbGluZXMpOgorICAgICAgICAgICAgICAgIHNlbGYu
bGluZShpbmRlbnQgKyBsaW5lKQorCisgICAgICAgIGRlZiBsaW5lKHNlbGYsIGxpbmUsICoqa3cp
OgorICAgICAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICBkZWYgbWFy
a3VwKHNlbGYsIHRleHQsICoqa3cpOgorICAgICAgICAgICAgcmV0dXJuIHRleHQKKworICAgICAg
ICBkZWYgZ2V0X3dyaXRlX21zZyhzZWxmLCBpZHgpOgorICAgICAgICAgICAgZmxhZywgbXNnID0g
c2VsZi5saW5lc1tpZHhdCisgICAgICAgICAgICBhc3NlcnQgZmxhZyA9PSBUV01vY2suV1JJVEUK
KyAgICAgICAgICAgIHJldHVybiBtc2cKKworICAgICAgICBmdWxsd2lkdGggPSA4MAorCisgICAg
cmV0dXJuIFRXTW9jaygpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZHVtbXlfeWFtbF9jdXN0
b21fdGVzdCh0ZXN0ZGlyKToKKyAgICAiIiJXcml0ZXMgYSBjb25mdGVzdCBmaWxlIHRoYXQgY29s
bGVjdHMgYW5kIGV4ZWN1dGVzIGEgZHVtbXkgeWFtbCB0ZXN0LgorCisgICAgVGFrZW4gZnJvbSB0
aGUgZG9jcywgYnV0IHN0cmlwcGVkIGRvd24gdG8gdGhlIGJhcmUgbWluaW11bSwgdXNlZnVsIGZv
cgorICAgIHRlc3RzIHdoaWNoIG5lZWRzIGN1c3RvbSBpdGVtcyBjb2xsZWN0ZWQuCisgICAgIiIi
CisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQg
cHl0ZXN0CisKKyAgICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGFyZW50LCBwYXRoKToK
KyAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIueWFtbCIgYW5kIHBhdGguYmFzZW5hbWUuc3Rh
cnRzd2l0aCgidGVzdCIpOgorICAgICAgICAgICAgICAgIHJldHVybiBZYW1sRmlsZS5mcm9tX3Bh
cmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKKworICAgICAgICBjbGFzcyBZYW1sRmls
ZShweXRlc3QuRmlsZSk6CisgICAgICAgICAgICBkZWYgY29sbGVjdChzZWxmKToKKyAgICAgICAg
ICAgICAgICB5aWVsZCBZYW1sSXRlbS5mcm9tX3BhcmVudChuYW1lPXNlbGYuZnNwYXRoLmJhc2Vu
YW1lLCBwYXJlbnQ9c2VsZikKKworICAgICAgICBjbGFzcyBZYW1sSXRlbShweXRlc3QuSXRlbSk6
CisgICAgICAgICAgICBkZWYgcnVudGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisg
ICAgIiIiCisgICAgKQorICAgIHRlc3RkaXIubWFrZWZpbGUoIi55YW1sIiwgdGVzdDE9IiIpCisK
KworQHB5dGVzdC5maXh0dXJlCitkZWYgdGVzdGRpcih0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBUZXN0
ZGlyOgorICAgIHRlc3RkaXIubW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfRElTQUJMRV9QTFVH
SU5fQVVUT0xPQUQiLCAiMSIpCisgICAgcmV0dXJuIHRlc3RkaXIKKworCitAcHl0ZXN0LmZpeHR1
cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGNvbG9yX21hcHBpbmcoKToKKyAgICAiIiJSZXR1cm5z
IGEgdXRpbGl0eSBjbGFzcyB3aGljaCBjYW4gcmVwbGFjZSBrZXlzIGluIHN0cmluZ3MgaW4gdGhl
IGZvcm0gIntOQU1FfSIKKyAgICBieSB0aGVpciBlcXVpdmFsZW50IEFTQ0lJIGNvZGVzIGluIHRo
ZSB0ZXJtaW5hbC4KKworICAgIFVzZWQgYnkgdGVzdHMgd2hpY2ggY2hlY2sgdGhlIGFjdHVhbCBj
b2xvcnMgb3V0cHV0IGJ5IHB5dGVzdC4KKyAgICAiIiIKKworICAgIGNsYXNzIENvbG9yTWFwcGlu
ZzoKKyAgICAgICAgQ09MT1JTID0geworICAgICAgICAgICAgInJlZCI6ICJceDFiWzMxbSIsCisg
ICAgICAgICAgICAiZ3JlZW4iOiAiXHgxYlszMm0iLAorICAgICAgICAgICAgInllbGxvdyI6ICJc
eDFiWzMzbSIsCisgICAgICAgICAgICAiYm9sZCI6ICJceDFiWzFtIiwKKyAgICAgICAgICAgICJy
ZXNldCI6ICJceDFiWzBtIiwKKyAgICAgICAgICAgICJrdyI6ICJceDFiWzk0bSIsCisgICAgICAg
ICAgICAiaGwtcmVzZXQiOiAiXHgxYlszOTs0OTswMG0iLAorICAgICAgICAgICAgImZ1bmN0aW9u
IjogIlx4MWJbOTJtIiwKKyAgICAgICAgICAgICJudW1iZXIiOiAiXHgxYls5NG0iLAorICAgICAg
ICAgICAgInN0ciI6ICJceDFiWzMzbSIsCisgICAgICAgICAgICAicHJpbnQiOiAiXHgxYls5Nm0i
LAorICAgICAgICB9CisgICAgICAgIFJFX0NPTE9SUyA9IHtrOiByZS5lc2NhcGUodikgZm9yIGss
IHYgaW4gQ09MT1JTLml0ZW1zKCl9CisKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRl
ZiBmb3JtYXQoY2xzLCBsaW5lczogTGlzdFtzdHJdKSAtPiBMaXN0W3N0cl06CisgICAgICAgICAg
ICAiIiJTdHJhaWdodGZvcndhcmQgcmVwbGFjZW1lbnQgb2YgY29sb3IgbmFtZXMgdG8gdGhlaXIg
QVNDSUkgY29kZXMuIiIiCisgICAgICAgICAgICByZXR1cm4gW2xpbmUuZm9ybWF0KCoqY2xzLkNP
TE9SUykgZm9yIGxpbmUgaW4gbGluZXNdCisKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAg
IGRlZiBmb3JtYXRfZm9yX2ZubWF0Y2goY2xzLCBsaW5lczogTGlzdFtzdHJdKSAtPiBMaXN0W3N0
cl06CisgICAgICAgICAgICAiIiJSZXBsYWNlIGNvbG9yIG5hbWVzIGZvciB1c2Ugd2l0aCBMaW5l
TWF0Y2hlci5mbm1hdGNoX2xpbmVzIiIiCisgICAgICAgICAgICByZXR1cm4gW2xpbmUuZm9ybWF0
KCoqY2xzLkNPTE9SUykucmVwbGFjZSgiWyIsICJbW10iKSBmb3IgbGluZSBpbiBsaW5lc10KKwor
ICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGZvcm1hdF9mb3JfcmVtYXRjaChjbHMs
IGxpbmVzOiBMaXN0W3N0cl0pIC0+IExpc3Rbc3RyXToKKyAgICAgICAgICAgICIiIlJlcGxhY2Ug
Y29sb3IgbmFtZXMgZm9yIHVzZSB3aXRoIExpbmVNYXRjaGVyLnJlX21hdGNoX2xpbmVzIiIiCisg
ICAgICAgICAgICByZXR1cm4gW2xpbmUuZm9ybWF0KCoqY2xzLlJFX0NPTE9SUykgZm9yIGxpbmUg
aW4gbGluZXNdCisKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiByZXF1aXJlc19v
cmRlcmVkX21hcmt1cChjbHMsIHJlc3VsdDogUnVuUmVzdWx0KToKKyAgICAgICAgICAgICIiIlNo
b3VsZCBiZSBjYWxsZWQgaWYgYSB0ZXN0IGV4cGVjdHMgbWFya3VwIHRvIGFwcGVhciBpbiB0aGUg
b3V0cHV0CisgICAgICAgICAgICBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHBhc3NlZCwgZm9yIGV4
YW1wbGU6CisKKyAgICAgICAgICAgICAgICB0dy53cml0ZShsaW5lLCBib2xkPVRydWUsIHJlZD1U
cnVlKQorCisgICAgICAgICAgICBJbiBQeXRob24gMy41IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRo
YXQgdGhlIGdlbmVyYXRlZCBtYXJrdXAgd2lsbCBhcHBlYXIKKyAgICAgICAgICAgIGluIHRoZSBv
cmRlciBjYWxsZWQsIHNvIHdlIGRvIHNvbWUgbGltaXRlZCBjb2xvciB0ZXN0aW5nIGFuZCBza2lw
IHRoZSByZXN0IG9mCisgICAgICAgICAgICB0aGUgdGVzdC4KKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA2KToKKyAgICAgICAgICAgICAgICAj
IHRlcm1pbmFsIHdyaXRlci53cml0ZSBhY2NlcHRzIGtleXdvcmQgYXJndW1lbnRzLCBzbworICAg
ICAgICAgICAgICAgICMgcHkzNisgaXMgcmVxdWlyZWQgc28gdGhlIG1hcmt1cCBhcHBlYXJzIGlu
IHRoZSBleHBlY3RlZCBvcmRlcgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHJlc3VsdC5zdGRv
dXQuc3RyKCkKKyAgICAgICAgICAgICAgICBhc3NlcnQgInRlc3Qgc2Vzc2lvbiBzdGFydHMiIGlu
IG91dHB1dAorICAgICAgICAgICAgICAgIGFzc2VydCAiXHgxYlsxbSIgaW4gb3V0cHV0CisgICAg
ICAgICAgICAgICAgcHl0ZXN0LnNraXAoCisgICAgICAgICAgICAgICAgICAgICJkb2luZyBsaW1p
dGVkIHRlc3RpbmcgYmVjYXVzZSBsYWNraW5nIG9yZGVyZWQgbWFya3VwIG9uIHB5MzUiCisgICAg
ICAgICAgICAgICAgKQorCisgICAgcmV0dXJuIENvbG9yTWFwcGluZworCisKK0BweXRlc3QuZml4
dHVyZQorZGVmIG1vY2tfdGltaW5nKG1vbmtleXBhdGNoKToKKyAgICAiIiJNb2NrcyBfcHl0ZXN0
LnRpbWluZyB3aXRoIGEga25vd24gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0
aW1pbmcgaW4gdGVzdHMKKyAgICBkZXRlcm1pbmlzdGljYWxseS4KKworICAgIHB5dGVzdCBpdHNl
bGYgc2hvdWxkIGFsd2F5cyB1c2UgZnVuY3Rpb25zIGZyb20gYF9weXRlc3QudGltaW5nYCBpbnN0
ZWFkIG9mIGB0aW1lYCBkaXJlY3RseS4KKworICAgIFRoaXMgdGhlbiBhbGxvd3MgdXMgbW9yZSBj
b250cm9sIG92ZXIgdGltZSBkdXJpbmcgdGVzdGluZywgaWYgdGVzdGluZyBjb2RlIGFsc28KKyAg
ICB1c2VzIGBfcHl0ZXN0LnRpbWluZ2AgZnVuY3Rpb25zLgorCisgICAgVGltZSBpcyBzdGF0aWMs
IGFuZCBvbmx5IGFkdmFuY2VzIHRocm91Z2ggYHNsZWVwYCBjYWxscywgdGh1cyB0ZXN0cyBtaWdo
dCBzbGVlcCBvdmVyIGxhcmdlCisgICAgbnVtYmVycyBhbmQgb2J0YWluIGFjY3VyYXRlIHRpbWUo
KSBjYWxscyBhdCB0aGUgZW5kLCBtYWtpbmcgdGVzdHMgcmVsaWFibGUgYW5kIGluc3RhbnQuCisg
ICAgIiIiCisgICAgaW1wb3J0IGF0dHIKKworICAgIEBhdHRyLnMKKyAgICBjbGFzcyBNb2NrVGlt
aW5nOgorCisgICAgICAgIF9jdXJyZW50X3RpbWUgPSBhdHRyLmliKGRlZmF1bHQ9MTU5MDE1MDA1
MC4wKQorCisgICAgICAgIGRlZiBzbGVlcChzZWxmLCBzZWNvbmRzKToKKyAgICAgICAgICAgIHNl
bGYuX2N1cnJlbnRfdGltZSArPSBzZWNvbmRzCisKKyAgICAgICAgZGVmIHRpbWUoc2VsZik6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fY3VycmVudF90aW1lCisKKyAgICAgICAgZGVmIHBhdGNo
KHNlbGYpOgorICAgICAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCB0aW1pbmcKKworICAgICAg
ICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih0aW1pbmcsICJzbGVlcCIsIHNlbGYuc2xlZXApCisg
ICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRpbWluZywgInRpbWUiLCBzZWxmLnRpbWUp
CisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHRpbWluZywgInBlcmZfY291bnRlciIs
IHNlbGYudGltZSkKKworICAgIHJlc3VsdCA9IE1vY2tUaW1pbmcoKQorICAgIHJlc3VsdC5wYXRj
aCgpCisgICAgcmV0dXJuIHJlc3VsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9k
ZXByZWNhdGVkX3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2RlcHJlY2F0ZWRfdGVzdC5w
eQppbmRleCAzOWZmMWYxZmMzODUuLmViNWQ1MjdmNTJiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9kZXByZWNhdGVkX3Rlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9k
ZXByZWNhdGVkX3Rlc3QucHkKQEAgLTEsMjY1ICsxLDgwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgcHl0
ZXN0Ci0KLQotZGVmIHRlc3RfeWllbGRfdGVzdHNfZGVwcmVjYXRpb24odGVzdGRpcik6Ci0gICAg
dGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgZGVmIGZ1bmMxKGFyZywg
YXJnMik6Ci0gICAgICAgICAgICBhc3NlcnQgYXJnID09IGFyZzIKLSAgICAgICAgZGVmIHRlc3Rf
Z2VuKCk6Ci0gICAgICAgICAgICB5aWVsZCAibTEiLCBmdW5jMSwgMTUsIDMqNQotICAgICAgICAg
ICAgeWllbGQgIm0yIiwgZnVuYzEsIDQyLCA2KjcKLSAgICAgICAgZGVmIHRlc3RfZ2VuMigpOgot
ICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UoMTApOgotICAgICAgICAgICAgICAgIHlpZWxkIGZ1
bmMxLCAxLCAxCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItcmEiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWwotICAg
ICAgICAgICAgIip5aWVsZCB0ZXN0cyBhcmUgZGVwcmVjYXRlZCwgYW5kIHNjaGVkdWxlZCB0byBi
ZSByZW1vdmVkIGluIHB5dGVzdCA0LjAqIiwKLSAgICAgICAgICAgICIqMiBwYXNzZWQqIiwKLSAg
ICAgICAgXQotICAgICkKLSAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5zdHIoKS5jb3VudCgieWll
bGQgdGVzdHMgYXJlIGRlcHJlY2F0ZWQiKSA9PSAyCi0KLQotZGVmIHRlc3RfZnVuY2FyZ19wcmVm
aXhfZGVwcmVjYXRpb24odGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAiIiIKLSAgICAgICAgZGVmIHB5dGVzdF9mdW5jYXJnX192YWx1ZSgpOgotICAgICAgICAgICAg
cmV0dXJuIDEwCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY2FyZ19wcmVmaXgodmFsdWUpOgotICAg
ICAgICAgICAgYXNzZXJ0IHZhbHVlID09IDEwCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItcmEiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKLSAgICAgICAgWwotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICIqcHl0ZXN0X2Z1
bmNhcmdfX3ZhbHVlOiAiCi0gICAgICAgICAgICAgICAgJ2RlY2xhcmluZyBmaXh0dXJlcyB1c2lu
ZyAicHl0ZXN0X2Z1bmNhcmdfXyIgcHJlZml4IGlzIGRlcHJlY2F0ZWQgJwotICAgICAgICAgICAg
ICAgICJhbmQgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gcHl0ZXN0IDQuMC4gICIKLSAgICAg
ICAgICAgICAgICAiUGxlYXNlIHJlbW92ZSB0aGUgcHJlZml4IGFuZCB1c2UgdGhlIEBweXRlc3Qu
Zml4dHVyZSBkZWNvcmF0b3IgaW5zdGVhZC4iCi0gICAgICAgICAgICApLAotICAgICAgICAgICAg
IioxIHBhc3NlZCoiLAotICAgICAgICBdCi0gICAgKQotCi0KLWRlZiB0ZXN0X3B5dGVzdF9zZXR1
cF9jZmdfZGVwcmVjYXRlZCh0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VmaWxlKAotICAgICAg
ICAiLmNmZyIsCi0gICAgICAgIHNldHVwPSIiIgotICAgICAgICBbcHl0ZXN0XQotICAgICAgICBh
ZGRvcHRzID0gLS12ZXJib3NlCi0gICAgIiIiLAotICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBb
IipweXRlc3Qqc2VjdGlvbiBpbiBzZXR1cC5jZmcgZmlsZXMgaXMgZGVwcmVjYXRlZCp1c2UqdG9v
bDpweXRlc3QqaW5zdGVhZCoiXQotICAgICkKLQoraW1wb3J0IHdhcm5pbmdzCitmcm9tIHVuaXR0
ZXN0IGltcG9ydCBtb2NrCiAKLWRlZiB0ZXN0X3B5dGVzdF9jdXN0b21fY2ZnX2RlcHJlY2F0ZWQo
dGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlZmlsZSgKLSAgICAgICAgIi5jZmciLAotICAgICAg
ICBjdXN0b209IiIiCi0gICAgICAgIFtweXRlc3RdCi0gICAgICAgIGFkZG9wdHMgPSAtLXZlcmJv
c2UKLSAgICAiIiIsCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItYyIs
ICJjdXN0b20uY2ZnIikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAg
IFsiKnB5dGVzdCpzZWN0aW9uIGluIGN1c3RvbS5jZmcgZmlsZXMgaXMgZGVwcmVjYXRlZCp1c2Uq
dG9vbDpweXRlc3QqaW5zdGVhZCoiXQotICAgICkKLQotCi1kZWYgdGVzdF9zdHJfYXJnc19kZXBy
ZWNhdGVkKHRtcGRpciwgdGVzdGRpcik6Ci0gICAgIiIiRGVwcmVjYXRlIHBhc3Npbmcgc3RyaW5n
cyB0byBweXRlc3QubWFpbigpLiBTY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gcHl0ZXN0LTQuMC4i
IiIKLSAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0K
LSAgICB3YXJuaW5ncyA9IFtdCi0KLSAgICBjbGFzcyBDb2xsZWN0KG9iamVjdCk6Ci0KLSAgICAg
ICAgZGVmIHB5dGVzdF9sb2d3YXJuaW5nKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAgICAgd2Fy
bmluZ3MuYXBwZW5kKG1lc3NhZ2UpCi0KLSAgICByZXQgPSBweXRlc3QubWFpbigiJXMgLXgiICUg
dG1wZGlyLCBwbHVnaW5zPVtDb2xsZWN0KCldKQotICAgIG1zZyA9ICgKLSAgICAgICAgInBhc3Np
bmcgYSBzdHJpbmcgdG8gcHl0ZXN0Lm1haW4oKSBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICJw
YXNzIGEgbGlzdCBvZiBhcmd1bWVudHMgaW5zdGVhZC4iCi0gICAgKQotICAgIGFzc2VydCBtc2cg
aW4gd2FybmluZ3MKLSAgICBhc3NlcnQgcmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAotCi0K
LWRlZiB0ZXN0X2dldGZ1bmNhcmd2YWx1ZV9pc19kZXByZWNhdGVkKHJlcXVlc3QpOgotICAgIHB5
dGVzdC5kZXByZWNhdGVkX2NhbGwocmVxdWVzdC5nZXRmdW5jYXJndmFsdWUsICJ0bXBkaXIiKQot
Ci0KLWRlZiB0ZXN0X3Jlc3VsdGxvZ19pc19kZXByZWNhdGVkKHRlc3RkaXIpOgotICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWhlbHAiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbIipERVBSRUNBVEVEIHBhdGggZm9yIG1hY2hpbmUtcmVhZGFibGUgcmVzdWx0IGxv
ZyoiXSkKLQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGRl
ZiB0ZXN0KCk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLXJlc3VsdC1sb2c9JXMiICUgdGVzdGRpci50bXBkaXIuam9p
bigicmVzdWx0LmxvZyIpKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAg
ICAgWwotICAgICAgICAgICAgIiotLXJlc3VsdC1sb2cgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1
bGVkIGZvciByZW1vdmFsIGluIHB5dGVzdCA0LjAqIiwKLSAgICAgICAgICAgICIqU2VlIGh0dHBz
Oi8vZG9jcy5weXRlc3Qub3JnLyovdXNhZ2UuaHRtbCNjcmVhdGluZy1yZXN1bHRsb2ctZm9ybWF0
LWZpbGVzIGZvciBtb3JlIGluZm9ybWF0aW9uKiIsCi0gICAgICAgIF0KLSAgICApCitpbXBvcnQg
cHl0ZXN0Citmcm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQKK2Zyb20gX3B5dGVzdC5weXRl
c3RlciBpbXBvcnQgVGVzdGRpcgogCiAKLUBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiYWx3
YXlzOk1ldGFmdW5jLmFkZGNhbGwgaXMgZGVwcmVjYXRlZCIpCi1kZWYgdGVzdF9tZXRhZnVuY19h
ZGRjYWxsX2RlcHJlY2F0ZWQodGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAiIiIKLSAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0g
ICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHsnaSc6IDF9KQotICAgICAgICAgICAgbWV0YWZ1
bmMuYWRkY2FsbCh7J2knOiAyfSkKLSAgICAgICAgZGVmIHRlc3RfZnVuYyhpKToKLSAgICAgICAg
ICAgIHBhc3MKLSAgICAiIiIKLSAgICApCi0gICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoIi1z
IikKLSAgICBhc3NlcnQgcmVzLnJldCA9PSAwCi0gICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAotICAgICAgICBbIipNZXRhZnVuYy5hZGRjYWxsIGlzIGRlcHJlY2F0ZWQqIiwgIioyIHBhc3Nl
ZCwgMiB3YXJuaW5ncyoiXQotICAgICkKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYXR0cmli
dXRlIiwgcHl0ZXN0LmNvbGxlY3QuX19hbGxfXykgICMgdHlwZTogaWdub3JlCisjIGZhbHNlIHBv
c2l0aXZlIGR1ZSB0byBkeW5hbWljIGF0dHJpYnV0ZQorZGVmIHRlc3RfcHl0ZXN0X2NvbGxlY3Rf
bW9kdWxlX2RlcHJlY2F0ZWQoYXR0cmlidXRlKToKKyAgICB3aXRoIHB5dGVzdC53YXJucyhEZXBy
ZWNhdGlvbldhcm5pbmcsIG1hdGNoPWF0dHJpYnV0ZSk6CisgICAgICAgIGdldGF0dHIocHl0ZXN0
LmNvbGxlY3QsIGF0dHJpYnV0ZSkKIAogCi1kZWYgdGVzdF90ZXJtaW5hbF9yZXBvcnRlcl93cml0
ZXJfYXR0cihweXRlc3Rjb25maWcpOgotICAgICIiIkNoZWNrIHRoYXQgVGVybWluYWxSZXBvcnRl
ci5fdHcgaXMgYWxzbyBhdmFpbGFibGUgYXMgJ3dyaXRlcicgKCMyOTg0KQotICAgIFRoaXMgYXR0
cmlidXRlIGlzIHBsYW5uZWQgdG8gYmUgZGVwcmVjYXRlZCBpbiAzLjQuCi0gICAgIiIiCi0gICAg
dHJ5OgotICAgICAgICBpbXBvcnQgeGRpc3QgICMgbm9xYQotCi0gICAgICAgIHB5dGVzdC5za2lw
KCJ4ZGlzdCB3b3JrZXJzIGRpc2FibGUgdGhlIHRlcm1pbmFsIHJlcG9ydGVyIHBsdWdpbiIpCi0g
ICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgdGVybWluYWxfcmVwb3J0
ZXIgPSBweXRlc3Rjb25maWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2luKCJ0ZXJtaW5hbHJlcG9y
dGVyIikKLSAgICBhc3NlcnQgdGVybWluYWxfcmVwb3J0ZXIud3JpdGVyIGlzIHRlcm1pbmFsX3Jl
cG9ydGVyLl90dworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwbHVnaW4iLCBzb3J0ZWQoZGVw
cmVjYXRlZC5ERVBSRUNBVEVEX0VYVEVSTkFMX1BMVUdJTlMpKQorQHB5dGVzdC5tYXJrLmZpbHRl
cndhcm5pbmdzKCJkZWZhdWx0IikKK2RlZiB0ZXN0X2V4dGVybmFsX3BsdWdpbnNfaW50ZWdyYXRl
ZCh0ZXN0ZGlyLCBwbHVnaW4pOgorICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKCoqe3BsdWdpbjogIiJ9KQogCisgICAgd2l0aCBweXRlc3Qud2FybnMo
cHl0ZXN0LlB5dGVzdENvbmZpZ1dhcm5pbmcpOgorICAgICAgICB0ZXN0ZGlyLnBhcnNlY29uZmln
KCItcCIsIHBsdWdpbikKIAotQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwbHVnaW4iLCBbImNh
dGNobG9nIiwgImNhcHR1cmVsb2ciXSkKLWRlZiB0ZXN0X3B5dGVzdF9jYXRjaGxvZ19kZXByZWNh
dGVkKHRlc3RkaXIsIHBsdWdpbik6Ci0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAi
IiIKLSAgICAgICAgZGVmIHRlc3RfZnVuYyhweXRlc3Rjb25maWcpOgotICAgICAgICAgICAgcHl0
ZXN0Y29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoTm9uZSwgJ3B5dGVzdF97fScpCi0gICAg
IiIiLmZvcm1hdCgKLSAgICAgICAgICAgIHBsdWdpbgotICAgICAgICApCi0gICAgKQotICAgIHJl
cyA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICBhc3NlcnQgcmVzLnJldCA9PSAwCi0gICAgcmVz
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbIipweXRlc3QtKmxvZyBwbHVnaW4gaGFz
IGJlZW4gbWVyZ2VkIGludG8gdGhlIGNvcmUqIiwgIioxIHBhc3NlZCwgMSB3YXJuaW5ncyoiXQot
ICAgICkKIAorZGVmIHRlc3RfZmlsbGZ1bmNhcmdzX2lzX2RlcHJlY2F0ZWQoKSAtPiBOb25lOgor
ICAgIHdpdGggcHl0ZXN0Lndhcm5zKAorICAgICAgICBweXRlc3QuUHl0ZXN0RGVwcmVjYXRpb25X
YXJuaW5nLAorICAgICAgICBtYXRjaD0iVGhlIGBfZmlsbGZ1bmNhcmdzYCBmdW5jdGlvbiBpcyBk
ZXByZWNhdGVkIiwKKyAgICApOgorICAgICAgICBweXRlc3QuX2ZpbGxmdW5jYXJncyhtb2NrLk1v
Y2soKSkKIAotZGVmIHRlc3RfcHl0ZXN0X3BsdWdpbnNfaW5fbm9uX3RvcF9sZXZlbF9jb25mdGVz
dF9kZXByZWNhdGVkKHRlc3RkaXIpOgotICAgIGZyb20gX3B5dGVzdC5kZXByZWNhdGVkIGltcG9y
dCBQWVRFU1RfUExVR0lOU19GUk9NX05PTl9UT1BfTEVWRUxfQ09ORlRFU1QKIAotICAgIHN1YmRp
cmVjdG9yeSA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInN1YmRpcmVjdG9yeSIpCi0gICAgc3ViZGly
ZWN0b3J5Lm1rZGlyKCkKLSAgICAjIGNyZWF0ZSB0aGUgaW5uZXIgY29uZnRlc3Qgd2l0aCBtYWtl
Y29uZnRlc3QgYW5kIHRoZW4gbW92ZSBpdCB0byB0aGUgc3ViZGlyZWN0b3J5Ci0gICAgdGVzdGRp
ci5tYWtlY29uZnRlc3QoCi0gICAgICAgICIiIgotICAgICAgICBweXRlc3RfcGx1Z2lucz1bJ2Nh
cHR1cmUnXQotICAgICIiIgotICAgICkKLSAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJjb25mdGVz
dC5weSIpLm1vdmUoc3ViZGlyZWN0b3J5LmpvaW4oImNvbmZ0ZXN0LnB5IikpCi0gICAgIyBtYWtl
IHRoZSB0b3AgbGV2ZWwgY29uZnRlc3QKLSAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAg
ICAgIiIiCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3
YXJuaW5ncygnYWx3YXlzJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQorZGVmIHRlc3Rf
bWludXNfa19kYXNoX2lzX2RlcHJlY2F0ZWQodGVzdGRpcikgLT4gTm9uZToKKyAgICB0aHJlZXBh
c3MgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHRlc3RfdGhyZWVwYXNzPSIiIgorICAg
ICAgICBkZWYgdGVzdF9vbmUoKTogYXNzZXJ0IDEKKyAgICAgICAgZGVmIHRlc3RfdHdvKCk6IGFz
c2VydCAxCisgICAgICAgIGRlZiB0ZXN0X3RocmVlKCk6IGFzc2VydCAxCiAgICAgIiIiCiAgICAg
KQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGRlZiB0ZXN0
X2Z1bmMoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKLSAgICApCi0gICAgcmVzID0gdGVz
dGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCi0gICAgYXNzZXJ0IHJlcy5yZXQgPT0gMAotICAg
IHJlcy5zdGRlcnIuZm5tYXRjaF9saW5lcygKLSAgICAgICAgIioiICsgc3RyKFBZVEVTVF9QTFVH
SU5TX0ZST01fTk9OX1RPUF9MRVZFTF9DT05GVEVTVCkuc3BsaXRsaW5lcygpWzBdCi0gICAgKQor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItaz0tdGVzdF90d28iLCB0aHJlZXBhc3Mp
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKlRoZSBgLWsgJy1leHByJ2Agc3lu
dGF4KmRlcHJlY2F0ZWQqIl0pCiAKIAotZGVmIHRlc3RfcHl0ZXN0X3BsdWdpbnNfaW5fbm9uX3Rv
cF9sZXZlbF9jb25mdGVzdF9kZXByZWNhdGVkX25vX3RvcF9sZXZlbF9jb25mdGVzdCgKLSAgICB0
ZXN0ZGlyCi0pOgotICAgIGZyb20gX3B5dGVzdC5kZXByZWNhdGVkIGltcG9ydCBQWVRFU1RfUExV
R0lOU19GUk9NX05PTl9UT1BfTEVWRUxfQ09ORlRFU1QKLQotICAgIHN1YmRpcmVjdG9yeSA9IHRl
c3RkaXIudG1wZGlyLmpvaW4oInN1YmRpcmVjdG9yeSIpCi0gICAgc3ViZGlyZWN0b3J5Lm1rZGly
KCkKLSAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9y
dCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnYWx3YXlzJywgY2F0
ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBweXRlc3RfcGx1Z2lucz1bJ2NhcHR1
cmUnXQorZGVmIHRlc3RfbWludXNfa19jb2xvbl9pc19kZXByZWNhdGVkKHRlc3RkaXIpIC0+IE5v
bmU6CisgICAgdGhyZWVwYXNzID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICB0ZXN0X3Ro
cmVlcGFzcz0iIiIKKyAgICAgICAgZGVmIHRlc3Rfb25lKCk6IGFzc2VydCAxCisgICAgICAgIGRl
ZiB0ZXN0X3R3bygpOiBhc3NlcnQgMQorICAgICAgICBkZWYgdGVzdF90aHJlZSgpOiBhc3NlcnQg
MQogICAgICIiIgogICAgICkKLSAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJjb25mdGVzdC5weSIp
Lm1vdmUoc3ViZGlyZWN0b3J5LmpvaW4oImNvbmZ0ZXN0LnB5IikpCi0KLSAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICBkZWYgdGVzdF9mdW5jKCk6Ci0gICAgICAg
ICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotCi0gICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3Rf
c3VicHJvY2VzcygpCi0gICAgYXNzZXJ0IHJlcy5yZXQgPT0gMAotICAgIHJlcy5zdGRlcnIuZm5t
YXRjaF9saW5lcygKLSAgICAgICAgIioiICsgc3RyKFBZVEVTVF9QTFVHSU5TX0ZST01fTk9OX1RP
UF9MRVZFTF9DT05GVEVTVCkuc3BsaXRsaW5lcygpWzBdCi0gICAgKQotCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi1rIiwgInRlc3RfdHdvOiIsIHRocmVlcGFzcykKKyAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqVGhlIGAtayAnZXhwcjonYCBzeW50YXgqZGVwcmVj
YXRlZCoiXSkKIAotZGVmIHRlc3RfcHl0ZXN0X3BsdWdpbnNfaW5fbm9uX3RvcF9sZXZlbF9jb25m
dGVzdF9kZXByZWNhdGVkX25vX2ZhbHNlX3Bvc2l0aXZlcygKLSAgICB0ZXN0ZGlyCi0pOgotICAg
IGZyb20gX3B5dGVzdC5kZXByZWNhdGVkIGltcG9ydCBQWVRFU1RfUExVR0lOU19GUk9NX05PTl9U
T1BfTEVWRUxfQ09ORlRFU1QKIAotICAgIHN1YmRpcmVjdG9yeSA9IHRlc3RkaXIudG1wZGlyLmpv
aW4oInN1YmRpcmVjdG9yeSIpCi0gICAgc3ViZGlyZWN0b3J5Lm1rZGlyKCkKLSAgICB0ZXN0ZGly
Lm1ha2Vjb25mdGVzdCgKK2RlZiB0ZXN0X2ZzY29sbGVjdG9yX2dldGhvb2twcm94eV9pc2luaXRw
YXRoKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgbW9kdWxlID0gdGVzdGRpci5nZXRt
b2R1bGVjb2woCiAgICAgICAgICIiIgotICAgICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotICAg
IHRlc3RkaXIudG1wZGlyLmpvaW4oImNvbmZ0ZXN0LnB5IikubW92ZShzdWJkaXJlY3Rvcnkuam9p
bigiY29uZnRlc3QucHkiKSkKLQotICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAi
IiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5p
bmdzKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHB5dGVz
dF9wbHVnaW5zPVsnY2FwdHVyZSddCi0gICAgIiIiCi0gICAgKQotICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAg
IHBhc3MKLSAgICAiIiIKLSAgICApCi0gICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJv
Y2VzcygpCi0gICAgYXNzZXJ0IHJlcy5yZXQgPT0gMAotICAgIGFzc2VydCBzdHIoUFlURVNUX1BM
VUdJTlNfRlJPTV9OT05fVE9QX0xFVkVMX0NPTkZURVNUKS5zcGxpdGxpbmVzKClbCi0gICAgICAg
IDAKLSAgICBdIG5vdCBpbiByZXMuc3RkZXJyLnN0cigpCisgICAgICAgIGRlZiB0ZXN0X2Zvbygp
OiBwYXNzCisgICAgICAgICIiIiwKKyAgICAgICAgd2l0aGluaXQ9VHJ1ZSwKKyAgICApCisgICAg
YXNzZXJ0IGlzaW5zdGFuY2UobW9kdWxlLCBweXRlc3QuTW9kdWxlKQorICAgIHBhY2thZ2UgPSBt
b2R1bGUucGFyZW50CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFja2FnZSwgcHl0ZXN0LlBhY2th
Z2UpCisKKyAgICB3aXRoIHB5dGVzdC53YXJucyhweXRlc3QuUHl0ZXN0RGVwcmVjYXRpb25XYXJu
aW5nLCBtYXRjaD0iZ2V0aG9va3Byb3h5Iik6CisgICAgICAgIHBhY2thZ2UuZ2V0aG9va3Byb3h5
KHRlc3RkaXIudG1wZGlyKQorCisgICAgd2l0aCBweXRlc3Qud2FybnMocHl0ZXN0LlB5dGVzdERl
cHJlY2F0aW9uV2FybmluZywgbWF0Y2g9ImlzaW5pdHBhdGgiKToKKyAgICAgICAgcGFja2FnZS5p
c2luaXRwYXRoKHRlc3RkaXIudG1wZGlyKQorCisgICAgIyBUaGUgbWV0aG9kcyBvbiBTZXNzaW9u
IGFyZSAqbm90KiBkZXByZWNhdGVkLgorICAgIHNlc3Npb24gPSBtb2R1bGUuc2Vzc2lvbgorICAg
IHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHJlYzoKKyAgICAg
ICAgc2Vzc2lvbi5nZXRob29rcHJveHkodGVzdGRpci50bXBkaXIpCisgICAgICAgIHNlc3Npb24u
aXNpbml0cGF0aCh0ZXN0ZGlyLnRtcGRpcikKKyAgICBhc3NlcnQgbGVuKHJlYykgPT0gMApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvUkVBRE1FLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL1JFQURNRS5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45N2QwZmRhNWM1ZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9SRUFETUUucnN0CkBA
IC0wLDAgKzEsOSBAQAorRXhhbXBsZSB0ZXN0IHNjcmlwdHMKKz09PT09PT09PT09PT09PT09PT09
PQorCisKK1RoZSBmaWxlcyBpbiB0aGlzIGZvbGRlciBhcmUgbm90IGRpcmVjdCB0ZXN0cywgYnV0
IHJhdGhlciBleGFtcGxlIHRlc3Qgc3VpdGVzIHRoYXQgZGVtb25zdHJhdGUgY2VydGFpbiBpc3N1
ZXMvYmVoYXZpb3Vycy4KKworSW4gdGhlIGZ1dHVyZSB3ZSB3aWxsIG1vdmUgcGFydCBvZiB0aGUg
Y29udGVudCBvZiB0aGUgYWNjZXB0YW5jZSB0ZXN0cyBoZXJlIGluIG9yZGVyIHRvIGhhdmUgZGly
ZWN0bHkgdGVzdGFibGUgY29kZSBpbnN0ZWFkIG9mIHdyaXRpbmcgb3V0IHRoaW5ncyBhbmQgdGhl
biBydW5uaW5nIHRoZW0gaW4gbmVzdGVkIHB5dGVzdCBzZXNzaW9ucy9zdWJwcm9jZXNzZXMuCisK
K1RoaXMgd2lsbCBhaWQgZGVidWdnaW5nIGFuZCBjb21wcmVoZW5zaW9uLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvYWNjZXB0YW5jZS9maXh0dXJlX21v
Y2tfaW50ZWdyYXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9h
Y2NlcHRhbmNlL2ZpeHR1cmVfbW9ja19pbnRlZ3JhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjViMDBhYzkwZTFiZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2FjY2VwdGFuY2UvZml4dHVyZV9tb2Nr
X2ludGVncmF0aW9uLnB5CkBAIC0wLDAgKzEsMTYgQEAKKyIiIlJlcHJvZHVjZXMgaXNzdWUgIzM3
NzQiIiIKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKKworaW1wb3J0IHB5dGVzdAorCitjb25m
aWcgPSB7Im15a2V5IjogIk9SSUdJTkFMIn0KKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ImZ1
bmN0aW9uIikKK0Btb2NrLnBhdGNoLmRpY3QoY29uZmlnLCB7Im15a2V5IjogIk1PQ0tFRCJ9KQor
ZGVmIG15X2ZpeHR1cmUoKToKKyAgICByZXR1cm4gY29uZmlnWyJteWtleSJdCisKKworZGVmIHRl
c3RfZm9vYmFyKG15X2ZpeHR1cmUpOgorICAgIGFzc2VydCBteV9maXh0dXJlID09ICJNT0NLRUQi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0
L2NvbGxlY3RfaW5pdF90ZXN0cy9weXRlc3QuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvY29sbGVjdC9jb2xsZWN0X2luaXRfdGVzdHMvcHl0ZXN0LmluaQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdjNDc5NTU0MDI1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvY29s
bGVjdF9pbml0X3Rlc3RzL3B5dGVzdC5pbmkKQEAgLTAsMCArMSwyIEBACitbcHl0ZXN0XQorcHl0
aG9uX2ZpbGVzID0gKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvY29sbGVjdC9jb2xsZWN0X2luaXRfdGVzdHMvdGVzdHMvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L2NvbGxlY3RfaW5pdF90
ZXN0cy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjljZDM2NjI5NWU3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvY29sbGVjdF9pbml0X3Rlc3RzL3Rlc3RzL19faW5p
dF9fLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRlc3RfaW5pdCgpOgorICAgIHBhc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvY29sbGVj
dF9pbml0X3Rlc3RzL3Rlc3RzL3Rlc3RfZm9vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvY29sbGVjdC9jb2xsZWN0X2luaXRfdGVzdHMvdGVzdHMvdGVzdF9mb28ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZjJkNzNjZmE0ZjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xs
ZWN0L2NvbGxlY3RfaW5pdF90ZXN0cy90ZXN0cy90ZXN0X2Zvby5weQpAQCAtMCwwICsxLDIgQEAK
K2RlZiB0ZXN0X2ZvbygpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvcGFja2FnZV9pbmZpbml0ZV9yZWN1cnNpb24vX19p
bml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9w
YWNrYWdlX2luZmluaXRlX3JlY3Vyc2lvbi9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvcGFja2FnZV9pbmZpbml0ZV9yZWN1
cnNpb24vY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9j
b2xsZWN0L3BhY2thZ2VfaW5maW5pdGVfcmVjdXJzaW9uL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTYyOWZhNjQ2YWY2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdl
X2luZmluaXRlX3JlY3Vyc2lvbi9jb25mdGVzdC5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiBweXRl
c3RfaWdub3JlX2NvbGxlY3QocGF0aCk6CisgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5maW5p
dGVfcmVjdXJzaW9uL3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdlX2luZmluaXRlX3JlY3Vyc2lvbi90ZXN0cy9fX2lu
aXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2OWRlMjli
YjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29s
bGVjdC9wYWNrYWdlX2luZmluaXRlX3JlY3Vyc2lvbi90ZXN0cy90ZXN0X2Jhc2ljLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdlX2luZmluaXRl
X3JlY3Vyc2lvbi90ZXN0cy90ZXN0X2Jhc2ljLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZjE3NDgyMzg1NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdlX2luZmluaXRlX3JlY3Vy
c2lvbi90ZXN0cy90ZXN0X2Jhc2ljLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRlc3QoKToKKyAg
ICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9j
b2xsZWN0L3BhY2thZ2VfaW5pdF9naXZlbl9hc19hcmcvcGtnL19faW5pdF9fLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdlX2luaXRfZ2l2ZW5f
YXNfYXJnL3BrZy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvY29sbGVjdC9wYWNrYWdlX2luaXRfZ2l2ZW5fYXNfYXJnL3BrZy90ZXN0X2Zv
by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbGxlY3QvcGFja2Fn
ZV9pbml0X2dpdmVuX2FzX2FyZy9wa2cvdGVzdF9mb28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mMTc0ODIzODU0ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb2xsZWN0L3BhY2thZ2VfaW5pdF9naXZl
bl9hc19hcmcvcGtnL3Rlc3RfZm9vLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRlc3QoKToKKyAg
ICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9j
b25maWcvY29sbGVjdF9weXRlc3RfcHJlZml4L19faW5pdF9fLnB5aSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZpZy9jb2xsZWN0X3B5dGVzdF9wcmVmaXgvX19pbml0
X18ucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJi
MmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb25m
aWcvY29sbGVjdF9weXRlc3RfcHJlZml4L2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvY29uZmlnL2NvbGxlY3RfcHl0ZXN0X3ByZWZpeC9jb25mdGVzdC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJkYTRmZmUyZmVkZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Nv
bmZpZy9jb2xsZWN0X3B5dGVzdF9wcmVmaXgvY29uZnRlc3QucHkKQEAgLTAsMCArMSwyIEBACitj
bGFzcyBweXRlc3Rfc29tZXRoaW5nOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZpZy9jb2xsZWN0X3B5dGVzdF9wcmVmaXgvdGVz
dF9mb28ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb25maWcvY29s
bGVjdF9weXRlc3RfcHJlZml4L3Rlc3RfZm9vLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uOGYyZDczY2ZhNGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvY29uZmlnL2NvbGxlY3RfcHl0ZXN0X3ByZWZpeC90
ZXN0X2Zvby5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiB0ZXN0X2ZvbygpOgorICAgIHBhc3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZ0ZXN0X3Vz
YWdlZXJyb3IvX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvY29uZnRlc3RfdXNhZ2VlcnJvci9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2NvbmZ0ZXN0X3VzYWdlZXJyb3IvY29uZnRlc3QucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9jb25mdGVzdF91c2FnZWVycm9y
L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODk3
M2U0MjUyZDNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvY29uZnRlc3RfdXNhZ2VlcnJvci9jb25mdGVzdC5weQpAQCAtMCwwICsxLDggQEAK
K2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisgICAgaW1wb3J0IHB5dGVzdAorCisgICAg
cmFpc2UgcHl0ZXN0LlVzYWdlRXJyb3IoImhlbGxvIikKKworCitkZWYgcHl0ZXN0X3VuY29uZmln
dXJlKGNvbmZpZyk6CisgICAgcHJpbnQoInB5dGVzdF91bmNvbmZpZ3VyZV9jYWxsZWQiKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0YWNsYXNzZXMv
dGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDk2YzkwYTkxYmRkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0YWNsYXNzZXMv
dGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzLnB5CkBAIC0wLDAgKzEsMTQgQEAKK2Zyb20gZGF0YWNs
YXNzZXMgaW1wb3J0IGRhdGFjbGFzcworZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZmllbGQKKwor
CitkZWYgdGVzdF9kYXRhY2xhc3NlcygpIC0+IE5vbmU6CisgICAgQGRhdGFjbGFzcworICAgIGNs
YXNzIFNpbXBsZURhdGFPYmplY3Q6CisgICAgICAgIGZpZWxkX2E6IGludCA9IGZpZWxkKCkKKyAg
ICAgICAgZmllbGRfYjogc3RyID0gZmllbGQoKQorCisgICAgbGVmdCA9IFNpbXBsZURhdGFPYmpl
Y3QoMSwgImIiKQorICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAiYyIpCisKKyAgICBh
c3NlcnQgbGVmdCA9PSByaWdodApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzX2ZpZWxkX2Nv
bXBhcmlzb25fb2ZmLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0
YWNsYXNzZXMvdGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzX2ZpZWxkX2NvbXBhcmlzb25fb2ZmLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzQ3OWM2NmMxYmVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0
YWNsYXNzZXMvdGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzX2ZpZWxkX2NvbXBhcmlzb25fb2ZmLnB5
CkBAIC0wLDAgKzEsMTQgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworZnJv
bSBkYXRhY2xhc3NlcyBpbXBvcnQgZmllbGQKKworCitkZWYgdGVzdF9kYXRhY2xhc3Nlc193aXRo
X2F0dHJpYnV0ZV9jb21wYXJpc29uX29mZigpIC0+IE5vbmU6CisgICAgQGRhdGFjbGFzcworICAg
IGNsYXNzIFNpbXBsZURhdGFPYmplY3Q6CisgICAgICAgIGZpZWxkX2E6IGludCA9IGZpZWxkKCkK
KyAgICAgICAgZmllbGRfYjogc3RyID0gZmllbGQoY29tcGFyZT1GYWxzZSkKKworICAgIGxlZnQg
PSBTaW1wbGVEYXRhT2JqZWN0KDEsICJiIikKKyAgICByaWdodCA9IFNpbXBsZURhdGFPYmplY3Qo
MSwgImMiKQorCisgICAgYXNzZXJ0IGxlZnQgPT0gcmlnaHQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2RhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV9kYXRh
Y2xhc3Nlc192ZXJib3NlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
ZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX2RhdGFjbGFzc2VzX3ZlcmJvc2UucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NzM3ZWY5MDRlMDcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90
ZXN0X2NvbXBhcmVfZGF0YWNsYXNzZXNfdmVyYm9zZS5weQpAQCAtMCwwICsxLDE0IEBACitmcm9t
IGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGZp
ZWxkCisKKworZGVmIHRlc3RfZGF0YWNsYXNzZXNfdmVyYm9zZSgpIC0+IE5vbmU6CisgICAgQGRh
dGFjbGFzcworICAgIGNsYXNzIFNpbXBsZURhdGFPYmplY3Q6CisgICAgICAgIGZpZWxkX2E6IGlu
dCA9IGZpZWxkKCkKKyAgICAgICAgZmllbGRfYjogc3RyID0gZmllbGQoKQorCisgICAgbGVmdCA9
IFNpbXBsZURhdGFPYmplY3QoMSwgImIiKQorICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdCgx
LCAiYyIpCisKKyAgICBhc3NlcnQgbGVmdCA9PSByaWdodApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0YWNsYXNzZXMvdGVzdF9jb21wYXJlX3JlY3Vy
c2l2ZV9kYXRhY2xhc3Nlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRz
L2RhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV9yZWN1cnNpdmVfZGF0YWNsYXNzZXMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNjcxNDBlMTZhNjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nl
cy90ZXN0X2NvbXBhcmVfcmVjdXJzaXZlX2RhdGFjbGFzc2VzLnB5CkBAIC0wLDAgKzEsMzggQEAK
K2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFM6CisgICAgYTogaW50CisgICAgYjogc3RyCisKKworQGRhdGFjbGFzcworY2xhc3MgQzoKKyAg
ICBjOiBTCisgICAgZDogUworCisKK0BkYXRhY2xhc3MKK2NsYXNzIEMyOgorICAgIGU6IEMKKyAg
ICBmOiBTCisKKworQGRhdGFjbGFzcworY2xhc3MgQzM6CisgICAgZzogUworICAgIGg6IEMyCisg
ICAgaTogc3RyCisgICAgajogc3RyCisKKworZGVmIHRlc3RfcmVjdXJzaXZlX2RhdGFjbGFzc2Vz
KCk6CisgICAgbGVmdCA9IEMzKAorICAgICAgICBTKDEwLCAidGVuIiksIEMyKEMoUygxLCAib25l
IiksIFMoMiwgInR3byIpKSwgUygyLCAidGhyZWUiKSksICJlcXVhbCIsICJsZWZ0IiwKKyAgICAp
CisgICAgcmlnaHQgPSBDMygKKyAgICAgICAgUygyMCwgInh4eCIpLCBDMihDKFMoMSwgIm9uZSIp
LCBTKDIsICJ5eXkiKSksIFMoMywgInRocmVlIikpLCAiZXF1YWwiLCAicmlnaHQiLAorICAgICkK
KworICAgIGFzc2VydCBsZWZ0ID09IHJpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9kYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVfdHdvX2RpZmZlcmVu
dF9kYXRhY2xhc3Nlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Rh
dGFjbGFzc2VzL3Rlc3RfY29tcGFyZV90d29fZGlmZmVyZW50X2RhdGFjbGFzc2VzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGE0ODIwYzY5YmE3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZGF0YWNsYXNz
ZXMvdGVzdF9jb21wYXJlX3R3b19kaWZmZXJlbnRfZGF0YWNsYXNzZXMucHkKQEAgLTAsMCArMSwx
OSBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGRhdGFjbGFzc2Vz
IGltcG9ydCBmaWVsZAorCisKK2RlZiB0ZXN0X2NvbXBhcmluZ190d29fZGlmZmVyZW50X2RhdGFf
Y2xhc3NlcygpIC0+IE5vbmU6CisgICAgQGRhdGFjbGFzcworICAgIGNsYXNzIFNpbXBsZURhdGFP
YmplY3RPbmU6CisgICAgICAgIGZpZWxkX2E6IGludCA9IGZpZWxkKCkKKyAgICAgICAgZmllbGRf
Yjogc3RyID0gZmllbGQoKQorCisgICAgQGRhdGFjbGFzcworICAgIGNsYXNzIFNpbXBsZURhdGFP
YmplY3RUd286CisgICAgICAgIGZpZWxkX2E6IGludCA9IGZpZWxkKCkKKyAgICAgICAgZmllbGRf
Yjogc3RyID0gZmllbGQoKQorCisgICAgbGVmdCA9IFNpbXBsZURhdGFPYmplY3RPbmUoMSwgImIi
KQorICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdFR3bygxLCAiYyIpCisKKyAgICBhc3NlcnQg
bGVmdCAhPSByaWdodCAgIyB0eXBlOiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvY3VzdG9t
X2l0ZW0vX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
Zml4dHVyZXMvY3VzdG9tX2l0ZW0vX19pbml0X18ucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9jdXN0b21faXRlbS9jb25mdGVzdC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2N1c3RvbV9pdGVt
L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTYx
OTM0YjU4ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vY29uZnRlc3QucHkKQEAgLTAsMCArMSwxNSBA
QAoraW1wb3J0IHB5dGVzdAorCisKK2NsYXNzIEN1c3RvbUl0ZW0ocHl0ZXN0Lkl0ZW0pOgorICAg
IGRlZiBydW50ZXN0KHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQ3VzdG9tRmlsZShw
eXRlc3QuRmlsZSk6CisgICAgZGVmIGNvbGxlY3Qoc2VsZik6CisgICAgICAgIHlpZWxkIEN1c3Rv
bUl0ZW0uZnJvbV9wYXJlbnQobmFtZT0iZm9vIiwgcGFyZW50PXNlbGYpCisKKworZGVmIHB5dGVz
dF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKKyAgICByZXR1cm4gQ3VzdG9tRmlsZS5mcm9t
X3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2N1c3RvbV9pdGVtL2Zvby9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2N1
c3RvbV9pdGVtL2Zvby9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9l
eGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vZm9vL3Rlc3RfZm9vLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vZm9v
L3Rlc3RfZm9vLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjE3
NDgyMzg1NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvZml4dHVyZXMvY3VzdG9tX2l0ZW0vZm9vL3Rlc3RfZm9vLnB5CkBAIC0wLDAgKzEs
MiBAQAorZGVmIHRlc3QoKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfY29uZnRlc3Rf
ZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3ViZGlyL3N1YjEvX19pbml0X18ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rl
c3RfY29uZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3ViZGlyL3N1YjEvX19pbml0
X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIy
ZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1
cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9p
bl9zdWJkaXIvc3ViMS9jb25mdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9z
Y3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5
X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMS9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmJlNWFkYmViNmU1MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMv
dGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMS9jb25m
dGVzdC5weQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1
cmUKK2RlZiBhcmcxKHJlcXVlc3QpOgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuRml4
dHVyZUxvb2t1cEVycm9yKToKKyAgICAgICAgcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoImFyZzIi
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVy
ZXMvZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxhYmxlX2lu
X3N1YmRpci9zdWIxL3Rlc3RfaW5fc3ViMS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBs
ZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19v
bmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMS90ZXN0X2luX3N1YjEucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZjM2ZGExMzY5YjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2Zp
eHR1cmVzL3Rlc3RfY29uZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3ViZGlyL3N1
YjEvdGVzdF9pbl9zdWIxLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRlc3RfMShhcmcxKToKKyAg
ICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9m
aXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfY29uZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFi
bGVfaW5fc3ViZGlyL3N1YjIvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1w
bGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfY29uZnRlc3RfZnVuY2FyZ3Nf
b25seV9hdmFpbGFibGVfaW5fc3ViZGlyL3N1YjIvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVz
dF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMi9jb25mdGVz
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxf
Zml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIv
c3ViMi9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjAwOTgxYzVkYzEyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhh
bXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5jYXJn
c19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMi9jb25mdGVzdC5weQpAQCAtMCwwICsxLDYg
QEAKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBhcmcyKHJlcXVlc3Qp
OgorICAgIHB5dGVzdC5yYWlzZXMoRXhjZXB0aW9uLCByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSwg
ImFyZzEiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
Zml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2NvbmZ0ZXN0X2Z1bmNhcmdzX29ubHlfYXZhaWxh
YmxlX2luX3N1YmRpci9zdWIyL3Rlc3RfaW5fc3ViMi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
ZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9jb25mdGVzdF9mdW5j
YXJnc19vbmx5X2F2YWlsYWJsZV9pbl9zdWJkaXIvc3ViMi90ZXN0X2luX3N1YjIucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYzM0Zjk0YWNjNDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9m
aWxsX2ZpeHR1cmVzL3Rlc3RfY29uZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3Vi
ZGlyL3N1YjIvdGVzdF9pbl9zdWIyLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRlc3RfMihhcmcy
KToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZGV0ZWN0X3JlY3Vyc2l2ZV9kZXBlbmRl
bmN5X2Vycm9yLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVy
ZXMvZmlsbF9maXh0dXJlcy90ZXN0X2RldGVjdF9yZWN1cnNpdmVfZGVwZW5kZW5jeV9lcnJvci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQxZWZjYmIzMzhjMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Zp
eHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9kZXRlY3RfcmVjdXJzaXZlX2RlcGVuZGVuY3lfZXJy
b3IucHkKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QuZml4dHVy
ZQorZGVmIGZpeDEoZml4Mik6CisgICAgcmV0dXJuIDEKKworCitAcHl0ZXN0LmZpeHR1cmUKK2Rl
ZiBmaXgyKGZpeDEpOgorICAgIHJldHVybiAxCisKKworZGVmIHRlc3QoZml4MSk6CisgICAgcGFz
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVy
ZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L19f
aW5pdF9fLnB5aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVz
L2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdC9fX2lu
aXRfXy5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5
YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2Zp
eHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVz
dC9jb25mdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1
cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdC9j
b25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVkZmQy
Zjc3OTU3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9z
Y3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVz
dF9jb25mdGVzdC9jb25mdGVzdC5weQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBweXRlc3QKKwor
CitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzcGFtKCk6CisgICAgcmV0dXJuICJzcGFtIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9m
aXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0ZXN0L3BrZy9fX2luaXRf
Xy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxf
Zml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdC9wa2cvX19pbml0
X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIy
ZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1
cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9jb25mdGVzdC9w
a2cvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0
dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfY29uZnRlc3Qv
cGtnL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NGUyMmNlNWExMzczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFt
cGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2Nv
bmZ0ZXN0X2NvbmZ0ZXN0L3BrZy9jb25mdGVzdC5weQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBw
eXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzcGFtKHNwYW0pOgorICAgIHJldHVybiBz
cGFtICogMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
Zml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X2NvbmZ0
ZXN0L3BrZy90ZXN0X3NwYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0
cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfY29u
ZnRlc3QvcGtnL3Rlc3Rfc3BhbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjBkODkxZmJiNTAzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4
dHVyZV9jb25mdGVzdF9jb25mdGVzdC9wa2cvdGVzdF9zcGFtLnB5CkBAIC0wLDAgKzEsMiBAQAor
ZGVmIHRlc3Rfc3BhbShzcGFtKToKKyAgICBhc3NlcnQgc3BhbSA9PSAic3BhbXNwYW0iCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxs
X2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfbW9kdWxlL19faW5pdF9fLnB5
aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4
dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9tb2R1bGUvX19pbml0X18ucHlpCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxs
X2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfbW9kdWxlL2NvbmZ0ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0
dXJlcy90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X21vZHVsZS9jb25mdGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVkZmQyZjc3OTU3OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVz
L2ZpbGxfZml4dHVyZXMvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9tb2R1bGUvY29uZnRl
c3QucHkKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5maXh0dXJl
CitkZWYgc3BhbSgpOgorICAgIHJldHVybiAic3BhbSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9leHRl
bmRfZml4dHVyZV9jb25mdGVzdF9tb2R1bGUvdGVzdF9leHRlbmRfZml4dHVyZV9jb25mdGVzdF9t
b2R1bGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9m
aWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfbW9kdWxlL3Rlc3RfZXh0
ZW5kX2ZpeHR1cmVfY29uZnRlc3RfbW9kdWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNDZkMTQ0NmY0NzAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4
dGVuZF9maXh0dXJlX2NvbmZ0ZXN0X21vZHVsZS90ZXN0X2V4dGVuZF9maXh0dXJlX2NvbmZ0ZXN0
X21vZHVsZS5weQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5m
aXh0dXJlCitkZWYgc3BhbShzcGFtKToKKyAgICByZXR1cm4gc3BhbSAqIDIKKworCitkZWYgdGVz
dF9zcGFtKHNwYW0pOgorICAgIGFzc2VydCBzcGFtID09ICJzcGFtc3BhbSIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVy
ZXMvdGVzdF9leHRlbmRfZml4dHVyZV9tb2R1bGVfY2xhc3MucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZXh0ZW5kX2Zp
eHR1cmVfbW9kdWxlX2NsYXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uODdhMGM4OTQxMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2V4dGVuZF9maXh0
dXJlX21vZHVsZV9jbGFzcy5weQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgcHl0ZXN0CisKKwor
QHB5dGVzdC5maXh0dXJlCitkZWYgc3BhbSgpOgorICAgIHJldHVybiAic3BhbSIKKworCitjbGFz
cyBUZXN0U3BhbToKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgc3BhbShzZWxmLCBzcGFt
KToKKyAgICAgICAgcmV0dXJuIHNwYW0gKiAyCisKKyAgICBkZWYgdGVzdF9zcGFtKHNlbGYsIHNw
YW0pOgorICAgICAgICBhc3NlcnQgc3BhbSA9PSAic3BhbXNwYW0iCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rl
c3RfZnVuY2FyZ19iYXNpYy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRz
L2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9mdW5jYXJnX2Jhc2ljLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDY2MWNiMzAxZmMxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9m
aXh0dXJlcy90ZXN0X2Z1bmNhcmdfYmFzaWMucHkKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IHB5
dGVzdAorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHNvbWUocmVxdWVzdCk6CisgICAgcmV0dXJu
IHJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX18KKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBvdGhl
cihyZXF1ZXN0KToKKyAgICByZXR1cm4gNDIKKworCitkZWYgdGVzdF9mdW5jKHNvbWUsIG90aGVy
KToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9maXh0dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZnVuY2FyZ19sb29rdXBfY2xhc3NsZXZl
bC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxf
Zml4dHVyZXMvdGVzdF9mdW5jYXJnX2xvb2t1cF9jbGFzc2xldmVsLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjU2YjkyYTE3ZGRmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0
dXJlcy90ZXN0X2Z1bmNhcmdfbG9va3VwX2NsYXNzbGV2ZWwucHkKQEAgLTAsMCArMSwxMCBAQAor
aW1wb3J0IHB5dGVzdAorCisKK2NsYXNzIFRlc3RDbGFzczoKKyAgICBAcHl0ZXN0LmZpeHR1cmUK
KyAgICBkZWYgc29tZXRoaW5nKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICByZXR1cm4gcmVxdWVz
dC5pbnN0YW5jZQorCisgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYsIHNvbWV0aGluZyk6CisgICAg
ICAgIGFzc2VydCBzb21ldGhpbmcgaXMgc2VsZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2Z1bmNhcmdf
bG9va3VwX21vZHVsZWxldmVsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2Z1bmNhcmdfbG9va3VwX21vZHVsZWxldmVs
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTE1ZGJkMmNhNDVk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
Zml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2Z1bmNhcmdfbG9va3VwX21vZHVsZWxldmVsLnB5
CkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2Rl
ZiBzb21ldGhpbmcocmVxdWVzdCk6CisgICAgcmV0dXJuIHJlcXVlc3QuZnVuY3Rpb24uX19uYW1l
X18KKworCitjbGFzcyBUZXN0Q2xhc3M6CisgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYsIHNvbWV0
aGluZyk6CisgICAgICAgIGFzc2VydCBzb21ldGhpbmcgPT0gInRlc3RfbWV0aG9kIgorCisKK2Rl
ZiB0ZXN0X2Z1bmMoc29tZXRoaW5nKToKKyAgICBhc3NlcnQgc29tZXRoaW5nID09ICJ0ZXN0X2Z1
bmMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0
dXJlcy9maWxsX2ZpeHR1cmVzL3Rlc3RfZnVuY2FyZ19sb29rdXBmYWlscy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL2ZpbGxfZml4dHVyZXMvdGVzdF9m
dW5jYXJnX2xvb2t1cGZhaWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYjc3NTIwMzIzMWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvZmlsbF9maXh0dXJlcy90ZXN0X2Z1bmNhcmdfbG9v
a3VwZmFpbHMucHkKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3Qu
Zml4dHVyZQorZGVmIHh5enNvbWV0aGluZyhyZXF1ZXN0KToKKyAgICByZXR1cm4gNDIKKworCitk
ZWYgdGVzdF9mdW5jKHNvbWUpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL3Rlc3RfZml4dHVyZV9uYW1lZF9yZXF1ZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvdGVzdF9m
aXh0dXJlX25hbWVkX3JlcXVlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi43NTUxNGJmOGI4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVfc2NyaXB0cy9maXh0dXJlcy90ZXN0X2ZpeHR1cmVfbmFtZWRfcmVxdWVzdC5w
eQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5maXh0dXJlCitk
ZWYgcmVxdWVzdCgpOgorICAgIHBhc3MKKworCitkZWYgdGVzdCgpOgorICAgIHBhc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2ZpeHR1cmVzL3Rlc3Rf
Z2V0Zml4dHVyZXZhbHVlX2R5bmFtaWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVf
c2NyaXB0cy9maXh0dXJlcy90ZXN0X2dldGZpeHR1cmV2YWx1ZV9keW5hbWljLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDU1YTEyMjBiMWM5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvZml4dHVyZXMvdGVz
dF9nZXRmaXh0dXJldmFsdWVfZHluYW1pYy5weQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgcHl0
ZXN0CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZHluYW1pYygpOgorICAgIHBhc3MKKworCitA
cHl0ZXN0LmZpeHR1cmUKK2RlZiBhKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZh
bHVlKCJkeW5hbWljIikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBiKGEpOgorICAgIHBhc3MK
KworCitkZWYgdGVzdChiLCByZXF1ZXN0KToKKyAgICBhc3NlcnQgcmVxdWVzdC5maXh0dXJlbmFt
ZXMgPT0gWyJiIiwgInJlcXVlc3QiLCAiYSIsICJkeW5hbWljIl0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lzc3VlODhfaW5pdGlhbF9maWxlX211bHRp
bm9kZXMvX19pbml0X18ucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
aXNzdWU4OF9pbml0aWFsX2ZpbGVfbXVsdGlub2Rlcy9fX2luaXRfXy5weWkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lzc3VlODhfaW5pdGlhbF9maWxlX211
bHRpbm9kZXMvY29uZnRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0
cy9pc3N1ZTg4X2luaXRpYWxfZmlsZV9tdWx0aW5vZGVzL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTA1M2E2MzhhOWY3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvaXNzdWU4OF9pbml0aWFs
X2ZpbGVfbXVsdGlub2Rlcy9jb25mdGVzdC5weQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgcHl0
ZXN0CisKKworY2xhc3MgTXlGaWxlKHB5dGVzdC5GaWxlKToKKyAgICBkZWYgY29sbGVjdChzZWxm
KToKKyAgICAgICAgcmV0dXJuIFtNeUl0ZW0uZnJvbV9wYXJlbnQobmFtZT0iaGVsbG8iLCBwYXJl
bnQ9c2VsZildCisKKworZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKKyAg
ICByZXR1cm4gTXlGaWxlLmZyb21fcGFyZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQor
CisKK2NsYXNzIE15SXRlbShweXRlc3QuSXRlbSk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvaXNzdWU4OF9pbml0aWFsX2ZpbGVfbXVs
dGlub2Rlcy90ZXN0X2hlbGxvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Njcmlw
dHMvaXNzdWU4OF9pbml0aWFsX2ZpbGVfbXVsdGlub2Rlcy90ZXN0X2hlbGxvLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTY0NDRkMTQ3NDgwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvaXNzdWU4OF9pbml0
aWFsX2ZpbGVfbXVsdGlub2Rlcy90ZXN0X2hlbGxvLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHRl
c3RfaGVsbG8oKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4
YW1wbGVfc2NyaXB0cy9pc3N1ZV81MTkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVf
c2NyaXB0cy9pc3N1ZV81MTkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4wMjFkYWRhNDkyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2V4YW1wbGVfc2NyaXB0cy9pc3N1ZV81MTkucHkKQEAgLTAsMCArMSw1MyBAQAoraW1wb3J0IHBw
cmludAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQor
CitpbXBvcnQgcHl0ZXN0CisKKworZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6
CisgICAgaWYgImFyZzEiIGluIG1ldGFmdW5jLmZpeHR1cmVuYW1lczoKKyAgICAgICAgbWV0YWZ1
bmMucGFyYW1ldHJpemUoImFyZzEiLCBbImFyZzF2MSIsICJhcmcxdjIiXSwgc2NvcGU9Im1vZHVs
ZSIpCisKKyAgICBpZiAiYXJnMiIgaW4gbWV0YWZ1bmMuZml4dHVyZW5hbWVzOgorICAgICAgICBt
ZXRhZnVuYy5wYXJhbWV0cml6ZSgiYXJnMiIsIFsiYXJnMnYxIiwgImFyZzJ2MiJdLCBzY29wZT0i
ZnVuY3Rpb24iKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgY2hl
Y2tlZF9vcmRlcigpOgorICAgIG9yZGVyID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIHN0
ciwgc3RyXV0KKworICAgIHlpZWxkIG9yZGVyCisgICAgcHByaW50LnBwcmludChvcmRlcikKKyAg
ICBhc3NlcnQgb3JkZXIgPT0gWworICAgICAgICAoInRlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL2lz
c3VlXzUxOS5weSIsICJmaXgxIiwgImFyZzF2MSIpLAorICAgICAgICAoInRlc3Rfb25lW2FyZzF2
MS1hcmcydjFdIiwgImZpeDIiLCAiYXJnMnYxIiksCisgICAgICAgICgidGVzdF90d29bYXJnMXYx
LWFyZzJ2MV0iLCAiZml4MiIsICJhcmcydjEiKSwKKyAgICAgICAgKCJ0ZXN0X29uZVthcmcxdjEt
YXJnMnYyXSIsICJmaXgyIiwgImFyZzJ2MiIpLAorICAgICAgICAoInRlc3RfdHdvW2FyZzF2MS1h
cmcydjJdIiwgImZpeDIiLCAiYXJnMnYyIiksCisgICAgICAgICgidGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvaXNzdWVfNTE5LnB5IiwgImZpeDEiLCAiYXJnMXYyIiksCisgICAgICAgICgidGVzdF9v
bmVbYXJnMXYyLWFyZzJ2MV0iLCAiZml4MiIsICJhcmcydjEiKSwKKyAgICAgICAgKCJ0ZXN0X3R3
b1thcmcxdjItYXJnMnYxXSIsICJmaXgyIiwgImFyZzJ2MSIpLAorICAgICAgICAoInRlc3Rfb25l
W2FyZzF2Mi1hcmcydjJdIiwgImZpeDIiLCAiYXJnMnYyIiksCisgICAgICAgICgidGVzdF90d29b
YXJnMXYyLWFyZzJ2Ml0iLCAiZml4MiIsICJhcmcydjIiKSwKKyAgICBdCisKKworQHB5dGVzdC5m
aXh0dXJlKHNjb3BlPSJtb2R1bGUiKQorZGVmIGZpeDEocmVxdWVzdCwgYXJnMSwgY2hlY2tlZF9v
cmRlcik6CisgICAgY2hlY2tlZF9vcmRlci5hcHBlbmQoKHJlcXVlc3Qubm9kZS5uYW1lLCAiZml4
MSIsIGFyZzEpKQorICAgIHlpZWxkICJmaXgxLSIgKyBhcmcxCisKKworQHB5dGVzdC5maXh0dXJl
KHNjb3BlPSJmdW5jdGlvbiIpCitkZWYgZml4MihyZXF1ZXN0LCBmaXgxLCBhcmcyLCBjaGVja2Vk
X29yZGVyKToKKyAgICBjaGVja2VkX29yZGVyLmFwcGVuZCgocmVxdWVzdC5ub2RlLm5hbWUsICJm
aXgyIiwgYXJnMikpCisgICAgeWllbGQgImZpeDItIiArIGFyZzIgKyBmaXgxCisKKworZGVmIHRl
c3Rfb25lKGZpeDIpOgorICAgIHBhc3MKKworCitkZWYgdGVzdF90d28oZml4Mik6CisgICAgcGFz
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvanVuaXQt
MTAueHNkIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvanVuaXQtMTAueHNk
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjg2ZmJmN2M4N2IxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvanVu
aXQtMTAueHNkCkBAIC0wLDAgKzEsMTQ3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCIgPz4KKzwhLS0KK1RoZSBNSVQgTGljZW5zZSAoTUlUKQorCitDb3B5cmlnaHQgKGMp
IDIwMTQsIEdyZWdvcnkgQm9pc3Npbm90CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3Bp
ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m
dHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgorLS0+Cis8eHM6c2NoZW1h
IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CisgICAgPHhzOnNp
bXBsZVR5cGUgbmFtZT0iU1VSRUZJUkVfVElNRSI+CisgICAgICAgIDx4czpyZXN0cmljdGlvbiBi
YXNlPSJ4czpzdHJpbmciPgorICAgICAgICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IigoWzAtOV17
MCwzfSwpKlswLTldezN9fFswLTldezAsM30pKihcLlswLTldezAsM30pPyIvPgorICAgICAgICA8
L3hzOnJlc3RyaWN0aW9uPgorICAgIDwveHM6c2ltcGxlVHlwZT4KKworICAgIDx4czpjb21wbGV4
VHlwZSBuYW1lPSJyZXJ1blR5cGUiIG1peGVkPSJ0cnVlIj4gPCEtLSBtaXhlZCAoWE1MIGNvbnRh
aW5zIHRleHQpIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB2ZXJzaW9uIHByZXZpb3VzIHRoYW4gMi4y
Mi4xIC0tPgorICAgICAgICA8eHM6c2VxdWVuY2U+CisgICAgICAgICAgICA8eHM6ZWxlbWVudCBu
YW1lPSJzdGFja1RyYWNlIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4gPCEtLSBv
cHRpb25hbCB0byBiZSBjb21wYXRpYmxlIHdpdGggdmVyc2lvbiBwcmV2aW91cyB0aGFuIDIuMjIu
MSAtLT4KKyAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9InN5c3RlbS1vdXQiIHR5cGU9Inhz
OnN0cmluZyIgbWluT2NjdXJzPSIwIiAvPgorICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
c3lzdGVtLWVyciIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIC8+CisgICAgICAgIDwv
eHM6c2VxdWVuY2U+CisgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZSIgdHlwZT0i
eHM6c3RyaW5nIiAvPgorICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9Inhz
OnN0cmluZyIgdXNlPSJyZXF1aXJlZCIgLz4KKyAgICA8L3hzOmNvbXBsZXhUeXBlPgorCisgICAg
PHhzOmVsZW1lbnQgbmFtZT0iZmFpbHVyZSI+CisgICAgICAgIDx4czpjb21wbGV4VHlwZSBtaXhl
ZD0idHJ1ZSI+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9Inhz
OnN0cmluZyIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB0eXBl
PSJ4czpzdHJpbmciLz4KKyAgICAgICAgPC94czpjb21wbGV4VHlwZT4KKyAgICA8L3hzOmVsZW1l
bnQ+CisKKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvciI+CisgICAgICAgIDx4czpjb21wbGV4
VHlwZSBtaXhlZD0idHJ1ZSI+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUi
IHR5cGU9InhzOnN0cmluZyIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNz
YWdlIiB0eXBlPSJ4czpzdHJpbmciLz4KKyAgICAgICAgPC94czpjb21wbGV4VHlwZT4KKyAgICA8
L3hzOmVsZW1lbnQ+CisKKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJza2lwcGVkIj4KKyAgICAgICAg
PHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUg
bmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRl
IG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIvPgorICAgICAgICA8L3hzOmNvbXBsZXhU
eXBlPgorICAgIDwveHM6ZWxlbWVudD4KKworICAgIDx4czplbGVtZW50IG5hbWU9InByb3BlcnRp
ZXMiPgorICAgICAgICA8eHM6Y29tcGxleFR5cGU+CisgICAgICAgICAgICA8eHM6c2VxdWVuY2U+
CisgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9wZXJ0eSIgbWluT2NjdXJzPSIw
IiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KKyAg
ICAgICAgPC94czpjb21wbGV4VHlwZT4KKyAgICA8L3hzOmVsZW1lbnQ+CisKKyAgICA8eHM6ZWxl
bWVudCBuYW1lPSJwcm9wZXJ0eSI+CisgICAgICAgIDx4czpjb21wbGV4VHlwZT4KKyAgICAgICAg
ICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVp
cmVkIi8+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpz
dHJpbmciIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgPC94czpjb21wbGV4VHlwZT4KKyAgICA8
L3hzOmVsZW1lbnQ+CisKKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJzeXN0ZW0tZXJyIiB0eXBlPSJ4
czpzdHJpbmciLz4KKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJzeXN0ZW0tb3V0IiB0eXBlPSJ4czpz
dHJpbmciLz4KKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJyZXJ1bkZhaWx1cmUiIHR5cGU9InJlcnVu
VHlwZSIvPgorICAgIDx4czplbGVtZW50IG5hbWU9InJlcnVuRXJyb3IiIHR5cGU9InJlcnVuVHlw
ZSIvPgorICAgIDx4czplbGVtZW50IG5hbWU9ImZsYWt5RmFpbHVyZSIgdHlwZT0icmVydW5UeXBl
Ii8+CisgICAgPHhzOmVsZW1lbnQgbmFtZT0iZmxha3lFcnJvciIgdHlwZT0icmVydW5UeXBlIi8+
CisKKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXN0Y2FzZSI+CisgICAgICAgIDx4czpjb21wbGV4
VHlwZT4KKyAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KKyAgICAgICAgICAgICAgICA8eHM6Y2hv
aWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgorICAgICAgICAgICAgICAg
ICAgICA8eHM6ZWxlbWVudCByZWY9InNraXBwZWQiLz4KKyAgICAgICAgICAgICAgICAgICAgPHhz
OmVsZW1lbnQgcmVmPSJlcnJvciIvPgorICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBy
ZWY9ImZhaWx1cmUiLz4KKyAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXJ1
bkZhaWx1cmUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAg
ICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXJ1bkVycm9yIiBtaW5PY2N1cnM9IjAiIG1h
eE9jY3Vycz0idW5ib3VuZGVkIi8+CisgICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJl
Zj0iZmxha3lGYWlsdXJlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Cisg
ICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZmxha3lFcnJvciIgbWluT2NjdXJz
PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgICAgICAgICAgICA8eHM6ZWxl
bWVudCByZWY9InN5c3RlbS1vdXQiLz4KKyAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQg
cmVmPSJzeXN0ZW0tZXJyIi8+CisgICAgICAgICAgICAgICAgPC94czpjaG9pY2U+CisgICAgICAg
ICAgICA8L3hzOnNlcXVlbmNlPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1l
IiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgICAgIDx4czphdHRy
aWJ1dGUgbmFtZT0idGltZSIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAgICA8eHM6YXR0
cmlidXRlIG5hbWU9ImNsYXNzbmFtZSIgdHlwZT0ieHM6c3RyaW5nIi8+CisgICAgICAgICAgICA8
eHM6YXR0cmlidXRlIG5hbWU9Imdyb3VwIiB0eXBlPSJ4czpzdHJpbmciLz4KKyAgICAgICAgPC94
czpjb21wbGV4VHlwZT4KKyAgICA8L3hzOmVsZW1lbnQ+CisKKyAgICA8eHM6ZWxlbWVudCBuYW1l
PSJ0ZXN0c3VpdGUiPgorICAgICAgICA8eHM6Y29tcGxleFR5cGU+CisgICAgICAgICAgICA8eHM6
Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgorICAgICAgICAgICAg
ICAgIDx4czplbGVtZW50IHJlZj0idGVzdHN1aXRlIi8+CisgICAgICAgICAgICAgICAgPHhzOmVs
ZW1lbnQgcmVmPSJwcm9wZXJ0aWVzIi8+CisgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVm
PSJ0ZXN0Y2FzZSIvPgorICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lzdGVtLW91
dCIvPgorICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lzdGVtLWVyciIvPgorICAg
ICAgICAgICAgPC94czpjaG9pY2U+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5h
bWUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCIvPgorICAgICAgICAgICAgPHhzOmF0
dHJpYnV0ZSBuYW1lPSJ0ZXN0cyIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIi8+Cisg
ICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZhaWx1cmVzIiB0eXBlPSJ4czpzdHJpbmci
IHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXJyb3Jz
IiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgICAgIDx4czphdHRy
aWJ1dGUgbmFtZT0iZ3JvdXAiIHR5cGU9InhzOnN0cmluZyIgLz4KKyAgICAgICAgICAgIDx4czph
dHRyaWJ1dGUgbmFtZT0idGltZSIgdHlwZT0iU1VSRUZJUkVfVElNRSIvPgorICAgICAgICAgICAg
PHhzOmF0dHJpYnV0ZSBuYW1lPSJza2lwcGVkIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAg
ICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVzdGFtcCIgdHlwZT0ieHM6c3RyaW5nIiAvPgor
ICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJob3N0bmFtZSIgdHlwZT0ieHM6c3RyaW5n
IiAvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6c3RyaW5n
IiAvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYWNrYWdlIiB0eXBlPSJ4czpz
dHJpbmciIC8+CisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGUiIHR5cGU9Inhz
OnN0cmluZyIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2ciIHR5cGU9Inhz
OnN0cmluZyIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmwiIHR5cGU9Inhz
OnN0cmluZyIvPgorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2ZXJzaW9uIiB0eXBl
PSJ4czpzdHJpbmciLz4KKyAgICAgICAgPC94czpjb21wbGV4VHlwZT4KKyAgICA8L3hzOmVsZW1l
bnQ+CisKKyAgICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXN0c3VpdGVzIj4KKyAgICAgICAgPHhzOmNv
bXBsZXhUeXBlPgorICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgorICAgICAgICAgICAgICAgIDx4
czplbGVtZW50IHJlZj0idGVzdHN1aXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu
ZGVkIiAvPgorICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KKyAgICAgICAgICAgIDx4czphdHRy
aWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiAvPgorICAgICAgICAgICAgPHhzOmF0
dHJpYnV0ZSBuYW1lPSJ0aW1lIiB0eXBlPSJTVVJFRklSRV9USU1FIi8+CisgICAgICAgICAgICA8
eHM6YXR0cmlidXRlIG5hbWU9InRlc3RzIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAgICAgICAg
ICA8eHM6YXR0cmlidXRlIG5hbWU9ImZhaWx1cmVzIiB0eXBlPSJ4czpzdHJpbmciIC8+CisgICAg
ICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9ycyIgdHlwZT0ieHM6c3RyaW5nIiAvPgor
ICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgorICAgIDwveHM6ZWxlbWVudD4KKworPC94czpzY2hl
bWE+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9tYXJr
cy9tYXJrc19jb25zaWRlcmVkX2tleXdvcmRzL19faW5pdF9fLnB5aSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL21hcmtzL21hcmtzX2NvbnNpZGVyZWRfa2V5d29yZHMvX19p
bml0X18ucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUy
OWJiMmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9t
YXJrcy9tYXJrc19jb25zaWRlcmVkX2tleXdvcmRzL2NvbmZ0ZXN0LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9leGFtcGxlX3NjcmlwdHMvbWFya3MvbWFya3NfY29uc2lkZXJlZF9rZXl3b3Jkcy9j
b25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2OWRl
MjliYjJkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
bWFya3MvbWFya3NfY29uc2lkZXJlZF9rZXl3b3Jkcy90ZXN0X21hcmtzX2FzX2tleXdvcmRzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvbWFya3MvbWFya3NfY29uc2lk
ZXJlZF9rZXl3b3Jkcy90ZXN0X21hcmtzX2FzX2tleXdvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzVhMmM3Yjc2Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvbWFya3MvbWFya3NfY29uc2lkZXJl
ZF9rZXl3b3Jkcy90ZXN0X21hcmtzX2FzX2tleXdvcmRzLnB5CkBAIC0wLDAgKzEsNiBAQAoraW1w
b3J0IHB5dGVzdAorCisKK0BweXRlc3QubWFyay5mb28KK2RlZiB0ZXN0X21hcmsoKToKKyAgICBw
YXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9wZXJm
X2V4YW1wbGVzL2NvbGxlY3Rfc3RhdHMvLmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
ZXhhbXBsZV9zY3JpcHRzL3BlcmZfZXhhbXBsZXMvY29sbGVjdF9zdGF0cy8uZ2l0aWdub3JlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWM0NWMyZWEzNTFhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvcGVyZl9l
eGFtcGxlcy9jb2xsZWN0X3N0YXRzLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorZm9vXyoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3BlcmZfZXhhbXBs
ZXMvY29sbGVjdF9zdGF0cy9nZW5lcmF0ZV9mb2xkZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvcGVyZl9leGFtcGxlcy9jb2xsZWN0X3N0YXRzL2dlbmVyYXRlX2Zv
bGRlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZjFlYWY3
ZDZiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9wZXJmX2V4YW1wbGVzL2NvbGxlY3Rfc3RhdHMvZ2VuZXJhdGVfZm9sZGVycy5weQpAQCAt
MCwwICsxLDI3IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBwYXRobGliCisKK0hFUkUgPSBw
YXRobGliLlBhdGgoX19maWxlX18pLnBhcmVudAorVEVTVF9DT05URU5UID0gKEhFUkUgLyAidGVt
cGxhdGVfdGVzdC5weSIpLnJlYWRfYnl0ZXMoKQorCitwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVu
dFBhcnNlcigpCitwYXJzZXIuYWRkX2FyZ3VtZW50KCJudW1iZXJzIiwgbmFyZ3M9IioiLCB0eXBl
PWludCkKKworCitkZWYgZ2VuZXJhdGVfZm9sZGVycyhyb290LCBlbGVtZW50cywgKm1vcmVfbnVt
YmVycyk6CisgICAgZmlsbF9sZW4gPSBsZW4oc3RyKGVsZW1lbnRzKSkKKyAgICBpZiBtb3JlX251
bWJlcnM6CisgICAgICAgIGZvciBpIGluIHJhbmdlKGVsZW1lbnRzKToKKyAgICAgICAgICAgIG5l
d19mb2xkZXIgPSByb290LmpvaW5wYXRoKGYiZm9vX3tpOjA+e2ZpbGxfbGVufX0iKQorICAgICAg
ICAgICAgbmV3X2ZvbGRlci5ta2RpcigpCisgICAgICAgICAgICBuZXdfZm9sZGVyLmpvaW5wYXRo
KCJfX2luaXRfXy5weSIpLndyaXRlX2J5dGVzKFRFU1RfQ09OVEVOVCkKKyAgICAgICAgICAgIGdl
bmVyYXRlX2ZvbGRlcnMobmV3X2ZvbGRlciwgKm1vcmVfbnVtYmVycykKKyAgICBlbHNlOgorICAg
ICAgICBmb3IgaSBpbiByYW5nZShlbGVtZW50cyk6CisgICAgICAgICAgICBuZXdfdGVzdCA9IHJv
b3Quam9pbnBhdGgoZiJ0ZXN0X3tpOjA8e2ZpbGxfbGVufX0ucHkiKQorICAgICAgICAgICAgbmV3
X3Rlc3Qud3JpdGVfYnl0ZXMoVEVTVF9DT05URU5UKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6CisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBnZW5lcmF0ZV9mb2xk
ZXJzKEhFUkUsICooYXJncy5udW1iZXJzIG9yICgxMCwgMTAwKSkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy9wZXJmX2V4YW1wbGVzL2NvbGxlY3Rfc3Rh
dHMvdGVtcGxhdGVfdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRz
L3BlcmZfZXhhbXBsZXMvY29sbGVjdF9zdGF0cy90ZW1wbGF0ZV90ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDY0YWRlMTkwYTEwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvcGVyZl9leGFtcGxlcy9j
b2xsZWN0X3N0YXRzL3RlbXBsYXRlX3Rlc3QucHkKQEAgLTAsMCArMSwyIEBACitkZWYgdGVzdF94
KCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvcHl0ZXN0LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3B5
dGVzdC5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYzVmZTBl
ODNhNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy9weXRlc3QuaW5pCkBAIC0wLDAgKzEsMiBAQAorW3B5dGVzdF0KKyMgZHVtbXkgcHl0ZXN0
LmluaSB0byBlYXNlIGRpcmVjdCBydW5uaW5nIG9mIGV4YW1wbGUgc2NyaXB0cwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdG1wZGlyL3RtcGRpcl9maXh0
dXJlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdG1wZGlyL3RtcGRp
cl9maXh0dXJlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjRh
ZDA3NDYyY2I1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxl
X3NjcmlwdHMvdG1wZGlyL3RtcGRpcl9maXh0dXJlLnB5CkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0
IHB5dGVzdAorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYSIsIFtyInF3ZS9cYWJjIl0p
CitkZWYgdGVzdF9maXh0dXJlKHRtcGRpciwgYSk6CisgICAgdG1wZGlyLmNoZWNrKGRpcj0xKQor
ICAgIGFzc2VydCB0bXBkaXIubGlzdGRpcigpID09IFtdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3BhcmFtZXRyaXplZF9maXh0
dXJlX2Vycm9yX21lc3NhZ2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0
cy91bml0dGVzdC90ZXN0X3BhcmFtZXRyaXplZF9maXh0dXJlX2Vycm9yX21lc3NhZ2UucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNDIxY2U5MjdjOTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVz
dC90ZXN0X3BhcmFtZXRyaXplZF9maXh0dXJlX2Vycm9yX21lc3NhZ2UucHkKQEAgLTAsMCArMSwx
NCBAQAoraW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0LmZpeHR1
cmUocGFyYW1zPVsxLCAyXSkKK2RlZiB0d28ocmVxdWVzdCk6CisgICAgcmV0dXJuIHJlcXVlc3Qu
cGFyYW0KKworCitAcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoInR3byIpCitjbGFzcyBUZXN0U29t
ZXRoaW5nRWxzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgor
ICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2Ny
aXB0cy91bml0dGVzdC90ZXN0X3NldHVwX3NraXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4
YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3NldHVwX3NraXAucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45M2Y3OWJiM2IyZTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3NldHVw
X3NraXAucHkKQEAgLTAsMCArMSwxMyBAQAorIiIiU2tpcHBpbmcgYW4gZW50aXJlIHN1YmNsYXNz
IHdpdGggdW5pdHRlc3Quc2tpcCgpIHNob3VsZCAqbm90KiBjYWxsIHNldFVwIGZyb20gYSBiYXNl
IGNsYXNzLiIiIgoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBhc3NlcnQgMAorCisKK0B1bml0
dGVzdC5za2lwKCJza2lwIGFsbCB0ZXN0cyIpCitjbGFzcyBUZXN0KEJhc2UpOgorICAgIGRlZiB0
ZXN0X2ZvbyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3Rfc2V0dXBfc2tpcF9jbGFzcy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3Rfc2V0
dXBfc2tpcF9jbGFzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjRmMjUxZGNiYTE3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhh
bXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3Rfc2V0dXBfc2tpcF9jbGFzcy5weQpAQCAtMCwwICsx
LDE0IEBACisiIiJTa2lwcGluZyBhbiBlbnRpcmUgc3ViY2xhc3Mgd2l0aCB1bml0dGVzdC5za2lw
KCkgc2hvdWxkICpub3QqIGNhbGwgc2V0VXBDbGFzcyBmcm9tIGEgYmFzZSBjbGFzcy4iIiIKK2lt
cG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGFzc2VydCAwCisK
KworQHVuaXR0ZXN0LnNraXAoInNraXAgYWxsIHRlc3RzIikKK2NsYXNzIFRlc3QoQmFzZSk6Cisg
ICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgICAgICBhc3NlcnQgMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF9zZXR1cF9za2lw
X21vZHVsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0
L3Rlc3Rfc2V0dXBfc2tpcF9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi45OGJlZmJlNTEwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3NldHVwX3NraXBfbW9kdWxlLnB5
CkBAIC0wLDAgKzEsMTIgQEAKKyIiInNldFVwTW9kdWxlIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4g
aWYgYWxsIHRlc3RzIGluIHRoZSBtb2R1bGUgYXJlIHNraXBwZWQiIiIKK2ltcG9ydCB1bml0dGVz
dAorCisKK2RlZiBzZXRVcE1vZHVsZSgpOgorICAgIGFzc2VydCAwCisKKworQHVuaXR0ZXN0LnNr
aXAoInNraXAgYWxsIHRlc3RzIikKK2NsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAg
IGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICBhc3NlcnQgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF91bml0dGVzdF9hc3luY2lv
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF91
bml0dGVzdF9hc3luY2lvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMjFiOWQyY2Q5NjMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9l
eGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF91bml0dGVzdF9hc3luY2lvLnB5CkBAIC0wLDAg
KzEsMjUgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBJ
c29sYXRlZEFzeW5jaW9UZXN0Q2FzZSAgIyB0eXBlOiBpZ25vcmUKKworCit0ZWFyZG93bnMgPSBb
XSAgIyB0eXBlOiBMaXN0W05vbmVdCisKKworY2xhc3MgQXN5bmNBcmd1bWVudHMoSXNvbGF0ZWRB
c3luY2lvVGVzdENhc2UpOgorICAgIGFzeW5jIGRlZiBhc3luY1RlYXJEb3duKHNlbGYpOgorICAg
ICAgICB0ZWFyZG93bnMuYXBwZW5kKE5vbmUpCisKKyAgICBhc3luYyBkZWYgdGVzdF9zb21ldGhp
bmdfYXN5bmMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBhZGRpdGlvbih4LCB5KToKKyAgICAg
ICAgICAgIHJldHVybiB4ICsgeQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgYWRk
aXRpb24oMiwgMiksIDQpCisKKyAgICBhc3luYyBkZWYgdGVzdF9zb21ldGhpbmdfYXN5bmNfZmFp
bHMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBhZGRpdGlvbih4LCB5KToKKyAgICAgICAgICAg
IHJldHVybiB4ICsgeQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgYWRkaXRpb24o
MiwgMiksIDMpCisKKyAgICBkZWYgdGVzdF90ZWFyZG93bnMoc2VsZik6CisgICAgICAgIGFzc2Vy
dCBsZW4odGVhcmRvd25zKSA9PSAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4
YW1wbGVfc2NyaXB0cy91bml0dGVzdC90ZXN0X3VuaXR0ZXN0X2FzeW5jdGVzdC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0ZXN0L3Rlc3RfdW5pdHRlc3RfYXN5
bmN0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDdiNWYz
ZjZkNjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3Nj
cmlwdHMvdW5pdHRlc3QvdGVzdF91bml0dGVzdF9hc3luY3Rlc3QucHkKQEAgLTAsMCArMSwyMyBA
QAorIiIiSXNzdWUgIzcxMTAiIiIKK2ltcG9ydCBhc3luY2lvCitmcm9tIHR5cGluZyBpbXBvcnQg
TGlzdAorCitpbXBvcnQgYXN5bmN0ZXN0CisKKwordGVhcmRvd25zID0gW10gICMgdHlwZTogTGlz
dFtOb25lXQorCisKK2NsYXNzIFRlc3QoYXN5bmN0ZXN0LlRlc3RDYXNlKToKKyAgICBhc3luYyBk
ZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRlYXJkb3ducy5hcHBlbmQoTm9uZSkKKworICAg
IGFzeW5jIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgorICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVw
KDApCisgICAgICAgIHNlbGYuZmFpbCgiZmFpbGluZyBvbiBwdXJwb3NlIikKKworICAgIGFzeW5j
IGRlZiB0ZXN0X29rKHNlbGYpOgorICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDApCisKKyAg
ICBkZWYgdGVzdF90ZWFyZG93bnMoc2VsZik6CisgICAgICAgIGFzc2VydCBsZW4odGVhcmRvd25z
KSA9PSAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2V4YW1wbGVfc2NyaXB0cy91
bml0dGVzdC90ZXN0X3VuaXR0ZXN0X3BsYWluX2FzeW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9leGFtcGxlX3NjcmlwdHMvdW5pdHRlc3QvdGVzdF91bml0dGVzdF9wbGFpbl9hc3luYy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc4ZGZlY2U2ODRlYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3VuaXR0
ZXN0L3Rlc3RfdW5pdHRlc3RfcGxhaW5fYXN5bmMucHkKQEAgLTAsMCArMSw2IEBACitpbXBvcnQg
dW5pdHRlc3QKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBhc3luYyBk
ZWYgdGVzdF9mb28oc2VsZik6CisgICAgICAgIGFzc2VydCBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvd2FybmluZ3MvdGVzdF9ncm91cF93YXJu
aW5nc19ieV9tZXNzYWdlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMv
d2FybmluZ3MvdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjk4NWNhYTQ0MDdmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9leGFtcGxlX3NjcmlwdHMvd2FybmluZ3MvdGVzdF9ncm91
cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCB3YXJuaW5n
cworCitpbXBvcnQgcHl0ZXN0CisKKworZGVmIGZ1bmMobXNnKToKKyAgICB3YXJuaW5ncy53YXJu
KFVzZXJXYXJuaW5nKG1zZykpCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpIiwgcmFu
Z2UoNSkpCitkZWYgdGVzdF9mb28oaSk6CisgICAgZnVuYygiZm9vIikKKworCitkZWYgdGVzdF9m
b29fMSgpOgorICAgIGZ1bmMoImZvbyIpCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
IiwgcmFuZ2UoNSkpCitkZWYgdGVzdF9iYXIoaSk6CisgICAgZnVuYygiYmFyIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3dhcm5pbmdzL3Rlc3RfZ3Jv
dXBfd2FybmluZ3NfYnlfbWVzc2FnZV9zdW1tYXJ5L3Rlc3RfMS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZXhhbXBsZV9zY3JpcHRzL3dhcm5pbmdzL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVz
c2FnZV9zdW1tYXJ5L3Rlc3RfMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmI4YzExY2I3MWM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZXhhbXBsZV9zY3JpcHRzL3dhcm5pbmdzL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2Fn
ZV9zdW1tYXJ5L3Rlc3RfMS5weQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgd2FybmluZ3MKKwor
aW1wb3J0IHB5dGVzdAorCisKK2RlZiBmdW5jKG1zZyk6CisgICAgd2FybmluZ3Mud2FybihVc2Vy
V2FybmluZyhtc2cpKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaSIsIHJhbmdlKDIw
KSkKK2RlZiB0ZXN0X2ZvbyhpKToKKyAgICBmdW5jKCJmb28iKQorCisKK2RlZiB0ZXN0X2Zvb18x
KCk6CisgICAgZnVuYygiZm9vIikKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImkiLCBy
YW5nZSgyMCkpCitkZWYgdGVzdF9iYXIoaSk6CisgICAgZnVuYygiYmFyIikKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvZXhhbXBsZV9zY3JpcHRzL3dhcm5pbmdzL3Rlc3RfZ3JvdXBf
d2FybmluZ3NfYnlfbWVzc2FnZV9zdW1tYXJ5L3Rlc3RfMi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZXhhbXBsZV9zY3JpcHRzL3dhcm5pbmdzL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2Fn
ZV9zdW1tYXJ5L3Rlc3RfMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjYzNmQwNGE1NTA1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
ZXhhbXBsZV9zY3JpcHRzL3dhcm5pbmdzL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZV9z
dW1tYXJ5L3Rlc3RfMi5weQpAQCAtMCwwICsxLDUgQEAKK2Zyb20gdGVzdF8xIGltcG9ydCBmdW5j
CisKKworZGVmIHRlc3RfMigpOgorICAgIGZ1bmMoImZvbyIpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2V4YW1wbGVzL3Rlc3RfaXNzdWU1MTkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL2V4YW1wbGVzL3Rlc3RfaXNzdWU1MTkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lODNmMThmZGM5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL2V4YW1wbGVzL3Rlc3RfaXNzdWU1MTkucHkKQEAgLTAsMCArMSwzIEBACitkZWYg
dGVzdF81MTAodGVzdGRpcik6CisgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoImlzc3VlXzUxOS5w
eSIpCisgICAgdGVzdGRpci5ydW5weXRlc3QoImlzc3VlXzUxOS5weSIpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9mcmVlemUvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmI1MzMxOTA4NzI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
ZnJlZXplLy5naXRpZ25vcmUKQEAgLTAsMCArMSwzIEBACitidWlsZC8KK2Rpc3QvCisqLnNwZWMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL2NyZWF0ZV9leGVjdXRhYmxl
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvY3JlYXRlX2V4ZWN1dGFibGUucHkKaW5k
ZXggOThhYTIwMzRjOWQ3Li45OThkZjdiMWNhNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZnJlZXplL2NyZWF0ZV9leGVjdXRhYmxlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvZnJlZXplL2NyZWF0ZV9leGVjdXRhYmxlLnB5CkBAIC0xLDYgKzEsNCBAQAotIiIiCi1HZW5l
cmF0ZXMgYW4gZXhlY3V0YWJsZSB3aXRoIHB5dGVzdCBydW5uZXIgZW1iZWRkZWQgdXNpbmcgUHlJ
bnN0YWxsZXIuCi0iIiIKKyIiIkdlbmVyYXRlIGFuIGV4ZWN1dGFibGUgd2l0aCBweXRlc3QgcnVu
bmVyIGVtYmVkZGVkIHVzaW5nIFB5SW5zdGFsbGVyLiIiIgogaWYgX19uYW1lX18gPT0gIl9fbWFp
bl9fIjoKICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTgsNSAr
Niw2IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaGlkZGVuID0gW10KICAgICBm
b3IgeCBpbiBweXRlc3QuZnJlZXplX2luY2x1ZGVzKCk6CiAgICAgICAgIGhpZGRlbi5leHRlbmQo
WyItLWhpZGRlbi1pbXBvcnQiLCB4XSkKKyAgICBoaWRkZW4uZXh0ZW5kKFsiLS1oaWRkZW4taW1w
b3J0IiwgImRpc3R1dGlscyJdKQogICAgIGFyZ3MgPSBbInB5aW5zdGFsbGVyIiwgIi0tbm9jb25m
aXJtIl0gKyBoaWRkZW4gKyBbInJ1bnRlc3RzX3NjcmlwdC5weSJdCiAgICAgc3VicHJvY2Vzcy5j
aGVja19jYWxsKCIgIi5qb2luKGFyZ3MpLCBzaGVsbD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9mcmVlemUvcnVudGVzdHNfc2NyaXB0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9mcmVlemUvcnVudGVzdHNfc2NyaXB0LnB5CmluZGV4IGQwM2JjYTg0MDZkZS4uNTkxODYz
MDE2YWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS9ydW50ZXN0c19z
Y3JpcHQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvcnVudGVzdHNfc2NyaXB0
LnB5CkBAIC0xLDYgKzEsNiBAQAogIiIiCiBUaGlzIGlzIHRoZSBzY3JpcHQgdGhhdCBpcyBhY3R1
YWxseSBmcm96ZW4gaW50byBhbiBleGVjdXRhYmxlOiBzaW1wbHkgZXhlY3V0ZXMKLXB5LnRlc3Qg
bWFpbigpLgorcHl0ZXN0IG1haW4oKS4KICIiIgogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdGVzdHMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS90ZXN0cy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM3MmRiMWZmOTg1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2ZyZWV6ZS90ZXN0cy90ZXN0X2RvY3Rlc3QudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVl
emUvdGVzdHMvdGVzdF90cml2aWFsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L2ZyZWV6ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjA4NWI2NWI3ZmQuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvZnJlZXplL2NyZWF0ZV9leGVjdXRhYmxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9m
cmVlemUvcnVudGVzdHNfc2NyaXB0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdG94
X3J1bi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3NhZmVyZXBy
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3NhZmVyZXByLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2E5N2NmNDI0YzU3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3NhZmVyZXByLnB5CkBAIC0wLDAgKzEs
MTczIEBACitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuX2lvLnNhZmVyZXByIGltcG9ydCBf
cGZvcm1hdF9kaXNwYXRjaAorZnJvbSBfcHl0ZXN0Ll9pby5zYWZlcmVwciBpbXBvcnQgc2FmZXJl
cHIKKworCitkZWYgdGVzdF9zaW1wbGVfcmVwcigpOgorICAgIGFzc2VydCBzYWZlcmVwcigxKSA9
PSAiMSIKKyAgICBhc3NlcnQgc2FmZXJlcHIoTm9uZSkgPT0gIk5vbmUiCisKKworZGVmIHRlc3Rf
bWF4c2l6ZSgpOgorICAgIHMgPSBzYWZlcmVwcigieCIgKiA1MCwgbWF4c2l6ZT0yNSkKKyAgICBh
c3NlcnQgbGVuKHMpID09IDI1CisgICAgZXhwZWN0ZWQgPSByZXByKCJ4IiAqIDEwICsgIi4uLiIg
KyAieCIgKiAxMCkKKyAgICBhc3NlcnQgcyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X21heHNp
emVfZXJyb3Jfb25faW5zdGFuY2UoKToKKyAgICBjbGFzcyBBOgorICAgICAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIuLi4iKQorCisgICAgcyA9
IHNhZmVyZXByKCgiKiIgKiA1MCwgQSgpKSwgbWF4c2l6ZT0yNSkKKyAgICBhc3NlcnQgbGVuKHMp
ID09IDI1CisgICAgYXNzZXJ0IHNbMF0gPT0gIigiIGFuZCBzWy0xXSA9PSAiKSIKKworCitkZWYg
dGVzdF9leGNlcHRpb25zKCkgLT4gTm9uZToKKyAgICBjbGFzcyBCcm9rZW5SZXByOgorICAgICAg
ICBkZWYgX19pbml0X18oc2VsZiwgZXgpOgorICAgICAgICAgICAgc2VsZi5leCA9IGV4CisKKyAg
ICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5leAorCisg
ICAgY2xhc3MgQnJva2VuUmVwckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICAgICBfX3N0cl9f
ID0gTm9uZSAgIyB0eXBlOiBpZ25vcmVbYXNzaWdubWVudF0KKyAgICAgICAgX19yZXByX18gPSBO
b25lICAjIHR5cGU6IGlnbm9yZVthc3NpZ25tZW50XQorCisgICAgYXNzZXJ0ICJFeGNlcHRpb24i
IGluIHNhZmVyZXByKEJyb2tlblJlcHIoRXhjZXB0aW9uKCJicm9rZW4iKSkpCisgICAgcyA9IHNh
ZmVyZXByKEJyb2tlblJlcHJFeGNlcHRpb24oInJlYWxseSBicm9rZW4iKSkKKyAgICBhc3NlcnQg
IlR5cGVFcnJvciIgaW4gcworICAgIGFzc2VydCAiVHlwZUVycm9yIiBpbiBzYWZlcmVwcihCcm9r
ZW5SZXByKCJzdHJpbmciKSkKKworICAgIG5vbmUgPSBOb25lCisgICAgdHJ5OgorICAgICAgICBu
b25lKCkgICMgdHlwZTogaWdub3JlW21pc2NdCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMg
ZXhjOgorICAgICAgICBleHBfZXhjID0gcmVwcihleGMpCisgICAgb2JqID0gQnJva2VuUmVwcihC
cm9rZW5SZXByRXhjZXB0aW9uKCJvbWcgZXZlbiB3b3JzZSIpKQorICAgIHMyID0gc2FmZXJlcHIo
b2JqKQorICAgIGFzc2VydCBzMiA9PSAoCisgICAgICAgICI8W3VucHJlc2VudGFibGUgZXhjZXB0
aW9uICh7IXN9KSByYWlzZWQgaW4gcmVwcigpXSBCcm9rZW5SZXByIG9iamVjdCBhdCAweHs6eH0+
Ii5mb3JtYXQoCisgICAgICAgICAgICBleHBfZXhjLCBpZChvYmopCisgICAgICAgICkKKyAgICAp
CisKKworZGVmIHRlc3RfYmFzZWV4Y2VwdGlvbigpOgorICAgICIiIlRlc3Qgc2FmZXJlcHIoKSB3
aXRoIEJhc2VFeGNlcHRpb25zLCB3aGljaCBpbmNsdWRlcyBweXRlc3Qgb3V0Y29tZXMuIiIiCisK
KyAgICBjbGFzcyBSYWlzaW5nT25TdHJSZXByKEJhc2VFeGNlcHRpb24pOgorICAgICAgICBkZWYg
X19pbml0X18oc2VsZiwgZXhjX3R5cGVzKToKKyAgICAgICAgICAgIHNlbGYuZXhjX3R5cGVzID0g
ZXhjX3R5cGVzCisKKyAgICAgICAgZGVmIHJhaXNlX2V4YyhzZWxmLCAqYXJncyk6CisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5leGNfdHlwZSA9IHNlbGYuZXhjX3R5cGVz
LnBvcCgwKQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLmV4Y190eXBlLCAiX19jYWxsX18iKToK
KyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmV4Y190eXBlKCphcmdzKQorICAgICAgICAgICAg
cmFpc2Ugc2VsZi5leGNfdHlwZQorCisgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICAgICAgc2VsZi5yYWlzZV9leGMoIl9fc3RyX18iKQorCisgICAgICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKKyAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjKCJfX3JlcHJfXyIpCisKKyAgICBjbGFz
cyBCcm9rZW5PYmo6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMpOgorICAgICAgICAg
ICAgc2VsZi5leGMgPSBleGMKKworICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAg
ICAgICByYWlzZSBzZWxmLmV4YworCisgICAgICAgIF9fc3RyX18gPSBfX3JlcHJfXworCisgICAg
YmFzZWV4Y19zdHIgPSBCYXNlRXhjZXB0aW9uKCJfX3N0cl9fIikKKyAgICBvYmogPSBCcm9rZW5P
YmooUmFpc2luZ09uU3RyUmVwcihbQmFzZUV4Y2VwdGlvbl0pKQorICAgIGFzc2VydCBzYWZlcmVw
cihvYmopID09ICgKKyAgICAgICAgIjxbdW5wcmVzZW50YWJsZSBleGNlcHRpb24gKHshcn0pICIK
KyAgICAgICAgInJhaXNlZCBpbiByZXByKCldIEJyb2tlbk9iaiBvYmplY3QgYXQgMHh7Onh9PiIu
Zm9ybWF0KGJhc2VleGNfc3RyLCBpZChvYmopKQorICAgICkKKyAgICBvYmogPSBCcm9rZW5PYmoo
UmFpc2luZ09uU3RyUmVwcihbUmFpc2luZ09uU3RyUmVwcihbQmFzZUV4Y2VwdGlvbl0pXSkpCisg
ICAgYXNzZXJ0IHNhZmVyZXByKG9iaikgPT0gKAorICAgICAgICAiPFt7IXJ9IHJhaXNlZCBpbiBy
ZXByKCldIEJyb2tlbk9iaiBvYmplY3QgYXQgMHh7Onh9PiIuZm9ybWF0KAorICAgICAgICAgICAg
YmFzZWV4Y19zdHIsIGlkKG9iaikKKyAgICAgICAgKQorICAgICkKKworICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhLZXlib2FyZEludGVycnVwdCk6CisgICAgICAgIHNhZmVyZXByKEJyb2tlbk9iaihL
ZXlib2FyZEludGVycnVwdCgpKSkKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0
KToKKyAgICAgICAgc2FmZXJlcHIoQnJva2VuT2JqKFN5c3RlbUV4aXQoKSkpCisKKyAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQpOgorICAgICAgICBzYWZlcmVwcihCcm9r
ZW5PYmooUmFpc2luZ09uU3RyUmVwcihbS2V5Ym9hcmRJbnRlcnJ1cHRdKSkpCisKKyAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCk6CisgICAgICAgIHNhZmVyZXByKEJyb2tlbk9iaihS
YWlzaW5nT25TdHJSZXByKFtTeXN0ZW1FeGl0XSkpKQorCisgICAgd2l0aCBweXRlc3QucmFpc2Vz
KEtleWJvYXJkSW50ZXJydXB0KToKKyAgICAgICAgcHJpbnQoc2FmZXJlcHIoQnJva2VuT2JqKFJh
aXNpbmdPblN0clJlcHIoW0Jhc2VFeGNlcHRpb24sIEtleWJvYXJkSW50ZXJydXB0XSkpKSkKKwor
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0KToKKyAgICAgICAgc2FmZXJlcHIoQnJv
a2VuT2JqKFJhaXNpbmdPblN0clJlcHIoW0Jhc2VFeGNlcHRpb24sIFN5c3RlbUV4aXRdKSkpCisK
KworZGVmIHRlc3RfYnVnZ3lfYnVpbHRpbl9yZXByKCk6CisgICAgIyBTaW11bGF0ZSBhIGNhc2Ug
d2hlcmUgYSByZXByIGZvciBhIGJ1aWx0aW4gcmFpc2VzLgorICAgICMgcmVwcmxpYiBkaXNwYXRj
aGVzIGJ5IHR5cGUgbmFtZSwgc28gdXNlICJpbnQiLgorCisgICAgY2xhc3MgaW50OgorICAgICAg
ICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCdWdn
eSByZXByISIpCisKKyAgICBhc3NlcnQgIkJ1Z2d5IiBpbiBzYWZlcmVwcihpbnQoKSkKKworCitk
ZWYgdGVzdF9iaWdfcmVwcigpOgorICAgIGZyb20gX3B5dGVzdC5faW8uc2FmZXJlcHIgaW1wb3J0
IFNhZmVSZXByCisKKyAgICBhc3NlcnQgbGVuKHNhZmVyZXByKHJhbmdlKDEwMDApKSkgPD0gbGVu
KCJbIiArIFNhZmVSZXByKDApLm1heGxpc3QgKiAiMTAwMCIgKyAiXSIpCisKKworZGVmIHRlc3Rf
cmVwcl9vbl9uZXdzdHlsZSgpIC0+IE5vbmU6CisgICAgY2xhc3MgRnVuY3Rpb246CisgICAgICAg
IGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAiPCVzPiIgJSAoc2VsZi5u
YW1lKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorCisgICAgYXNzZXJ0IHNhZmVyZXBy
KEZ1bmN0aW9uKCkpCisKKworZGVmIHRlc3RfdW5pY29kZSgpOgorICAgIHZhbCA9ICLCo+KCrCIK
KyAgICByZXBydmFsID0gIifCo+KCrCciCisgICAgYXNzZXJ0IHNhZmVyZXByKHZhbCkgPT0gcmVw
cnZhbAorCisKK2RlZiB0ZXN0X3Bmb3JtYXRfZGlzcGF0Y2goKToKKyAgICBhc3NlcnQgX3Bmb3Jt
YXRfZGlzcGF0Y2goImEiKSA9PSAiJ2EnIgorICAgIGFzc2VydCBfcGZvcm1hdF9kaXNwYXRjaCgi
YSIgKiAxMCwgd2lkdGg9NSkgPT0gIidhYWFhYWFhYWFhJyIKKyAgICBhc3NlcnQgX3Bmb3JtYXRf
ZGlzcGF0Y2goImZvbyBiYXIiLCB3aWR0aD01KSA9PSAiKCdmb28gJ1xuICdiYXInKSIKKworCitk
ZWYgdGVzdF9icm9rZW5fZ2V0YXR0cmlidXRlKCk6CisgICAgIiIic2FmZXJlcHIoKSBjYW4gY3Jl
YXRlIHByb3BlciByZXByZXNlbnRhdGlvbnMgb2YgY2xhc3NlcyB3aXRoCisgICAgYnJva2VuIF9f
Z2V0YXR0cmlidXRlX18gKCM3MTQ1KQorICAgICIiIgorCisgICAgY2xhc3MgU29tZUNsYXNzOgor
ICAgICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcgorCisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgYXNzZXJ0IHNhZmVyZXByKFNvbWVDbGFzcygp
KS5zdGFydHN3aXRoKAorICAgICAgICAiPFtSdW50aW1lRXJyb3IoKSByYWlzZWQgaW4gcmVwcigp
XSBTb21lQ2xhc3Mgb2JqZWN0IGF0IDB4IgorICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvaW8vdGVzdF90ZXJtaW5hbHdyaXRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
aW8vdGVzdF90ZXJtaW5hbHdyaXRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmRiMGNjZjA2YTQwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvaW8vdGVzdF90ZXJtaW5hbHdyaXRlci5weQpAQCAtMCwwICsxLDI4MyBAQAoraW1wb3J0
IGlvCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworZnJv
bSB0eXBpbmcgaW1wb3J0IEdlbmVyYXRvcgorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCitp
bXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuX2lvIGltcG9ydCB0ZXJtaW5hbHdyaXRlcgorZnJv
bSBfcHl0ZXN0Lm1vbmtleXBhdGNoIGltcG9ydCBNb25rZXlQYXRjaAorCisKKyMgVGhlc2UgdGVz
dHMgd2VyZSBpbml0aWFsbHkgY29waWVkIGZyb20gcHkgMS44LjEuCisKKworZGVmIHRlc3RfdGVy
bWluYWxfd2lkdGhfQ09MVU1OUyhtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6Cisg
ICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJDT0xVTU5TIiwgIjQyIikKKyAgICBhc3NlcnQgdGVybWlu
YWx3cml0ZXIuZ2V0X3Rlcm1pbmFsX3dpZHRoKCkgPT0gNDIKKyAgICBtb25rZXlwYXRjaC5kZWxl
bnYoIkNPTFVNTlMiLCByYWlzaW5nPUZhbHNlKQorCisKK2RlZiB0ZXN0X3Rlcm1pbmFsd3JpdGVy
X3dpZHRoX2JvZ3VzKG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHNodXRpbCwgImdldF90ZXJtaW5hbF9zaXplIiwgbW9jay5Nb2NrKHJl
dHVybl92YWx1ZT0oMTAsIDEwKSkpCisgICAgbW9ua2V5cGF0Y2guZGVsZW52KCJDT0xVTU5TIiwg
cmFpc2luZz1GYWxzZSkKKyAgICB0dyA9IHRlcm1pbmFsd3JpdGVyLlRlcm1pbmFsV3JpdGVyKCkK
KyAgICBhc3NlcnQgdHcuZnVsbHdpZHRoID09IDgwCisKKworZGVmIHRlc3RfdGVybWluYWx3cml0
ZXJfY29tcHV0ZXNfd2lkdGgobW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgorICAg
IG1vbmtleXBhdGNoLnNldGF0dHIodGVybWluYWx3cml0ZXIsICJnZXRfdGVybWluYWxfd2lkdGgi
LCBsYW1iZGE6IDQyKQorICAgIHR3ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQor
ICAgIGFzc2VydCB0dy5mdWxsd2lkdGggPT0gNDIKKworCitkZWYgdGVzdF90ZXJtaW5hbHdyaXRl
cl9kdW1iX3Rlcm1fbm9fbWFya3VwKG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToK
KyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9zLCAiZW52aXJvbiIsIHsiVEVSTSI6ICJkdW1iIiwg
IlBBVEgiOiAiIn0pCisKKyAgICBjbGFzcyBNeUZpbGU6CisgICAgICAgIGNsb3NlZCA9IEZhbHNl
CisKKyAgICAgICAgZGVmIGlzYXR0eShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisK
KyAgICB3aXRoIG1vbmtleXBhdGNoLmNvbnRleHQoKSBhcyBtOgorICAgICAgICBtLnNldGF0dHIo
c3lzLCAic3Rkb3V0IiwgTXlGaWxlKCkpCisgICAgICAgIGFzc2VydCBzeXMuc3Rkb3V0LmlzYXR0
eSgpCisgICAgICAgIHR3ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQorICAgICAg
ICBhc3NlcnQgbm90IHR3Lmhhc21hcmt1cAorCisKK2RlZiB0ZXN0X3Rlcm1pbmFsd3JpdGVyX25v
dF91bmljb2RlKCkgLT4gTm9uZToKKyAgICAiIiJJZiB0aGUgZmlsZSBkb2Vzbid0IHN1cHBvcnQg
VW5pY29kZSwgdGhlIHN0cmluZyBpcyB1bmljb2RlLWVzY2FwZWQgKCM3NDc1KS4iIiIKKyAgICBi
dWZmZXIgPSBpby5CeXRlc0lPKCkKKyAgICBmaWxlID0gaW8uVGV4dElPV3JhcHBlcihidWZmZXIs
IGVuY29kaW5nPSJjcDEyNTIiKQorICAgIHR3ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0
ZXIoZmlsZSkKKyAgICB0dy53cml0ZSgiaGVsbG8g8J+MgCB3w7RybGQg15DXkdeSIiwgZmx1c2g9
VHJ1ZSkKKyAgICBhc3NlcnQgYnVmZmVyLmdldHZhbHVlKCkgPT0gYnIiaGVsbG8gXFUwMDAxZjMw
MCB3XHhmNHJsZCBcdTA1ZDBcdTA1ZDFcdTA1ZDIiCisKKword2luMzIgPSBpbnQoc3lzLnBsYXRm
b3JtID09ICJ3aW4zMiIpCisKKworY2xhc3MgVGVzdFRlcm1pbmFsV3JpdGVyOgorICAgIEBweXRl
c3QuZml4dHVyZShwYXJhbXM9WyJwYXRoIiwgInN0cmluZ2lvIl0pCisgICAgZGVmIHR3KAorICAg
ICAgICBzZWxmLCByZXF1ZXN0LCB0bXBkaXIKKyAgICApIC0+IEdlbmVyYXRvclt0ZXJtaW5hbHdy
aXRlci5UZXJtaW5hbFdyaXRlciwgTm9uZSwgTm9uZV06CisgICAgICAgIGlmIHJlcXVlc3QucGFy
YW0gPT0gInBhdGgiOgorICAgICAgICAgICAgcCA9IHRtcGRpci5qb2luKCJ0bXBmaWxlIikKKyAg
ICAgICAgICAgIGYgPSBvcGVuKHN0cihwKSwgIncrIiwgZW5jb2Rpbmc9InV0ZjgiKQorICAgICAg
ICAgICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdyaXRlcihmKQorCisgICAgICAgICAg
ICBkZWYgZ2V0bGluZXMoKToKKyAgICAgICAgICAgICAgICBmLmZsdXNoKCkKKyAgICAgICAgICAg
ICAgICB3aXRoIG9wZW4oc3RyKHApLCBlbmNvZGluZz0idXRmOCIpIGFzIGZwOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZnAucmVhZGxpbmVzKCkKKworICAgICAgICBlbGlmIHJlcXVlc3Qu
cGFyYW0gPT0gInN0cmluZ2lvIjoKKyAgICAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCisgICAg
ICAgICAgICB0dyA9IHRlcm1pbmFsd3JpdGVyLlRlcm1pbmFsV3JpdGVyKGYpCisKKyAgICAgICAg
ICAgIGRlZiBnZXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGYuc2VlaygwKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmLnJlYWRsaW5lcygpCisKKyAgICAgICAgdHcuZ2V0bGluZXMgPSBnZXRs
aW5lcyAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgdHcuZ2V0dmFsdWUgPSBsYW1iZGE6ICIiLmpv
aW4oZ2V0bGluZXMoKSkgICMgdHlwZTogaWdub3JlCisKKyAgICAgICAgd2l0aCBmOgorICAgICAg
ICAgICAgeWllbGQgdHcKKworICAgIGRlZiB0ZXN0X2xpbmUoc2VsZiwgdHcpIC0+IE5vbmU6Cisg
ICAgICAgIHR3LmxpbmUoImhlbGxvIikKKyAgICAgICAgbGluZXMgPSB0dy5nZXRsaW5lcygpCisg
ICAgICAgIGFzc2VydCBsZW4obGluZXMpID09IDEKKyAgICAgICAgYXNzZXJ0IGxpbmVzWzBdID09
ICJoZWxsb1xuIgorCisgICAgZGVmIHRlc3RfbGluZV91bmljb2RlKHNlbGYsIHR3KSAtPiBOb25l
OgorICAgICAgICBtc2cgPSAiYlx1MDBmNnkiCisgICAgICAgIHR3LmxpbmUobXNnKQorICAgICAg
ICBsaW5lcyA9IHR3LmdldGxpbmVzKCkKKyAgICAgICAgYXNzZXJ0IGxpbmVzWzBdID09IG1zZyAr
ICJcbiIKKworICAgIGRlZiB0ZXN0X3NlcF9ub190aXRsZShzZWxmLCB0dykgLT4gTm9uZToKKyAg
ICAgICAgdHcuc2VwKCItIiwgZnVsbHdpZHRoPTYwKQorICAgICAgICBsaW5lcyA9IHR3LmdldGxp
bmVzKCkKKyAgICAgICAgYXNzZXJ0IGxlbihsaW5lcykgPT0gMQorICAgICAgICBhc3NlcnQgbGlu
ZXNbMF0gPT0gIi0iICogKDYwIC0gd2luMzIpICsgIlxuIgorCisgICAgZGVmIHRlc3Rfc2VwX3dp
dGhfdGl0bGUoc2VsZiwgdHcpIC0+IE5vbmU6CisgICAgICAgIHR3LnNlcCgiLSIsICJoZWxsbyIs
IGZ1bGx3aWR0aD02MCkKKyAgICAgICAgbGluZXMgPSB0dy5nZXRsaW5lcygpCisgICAgICAgIGFz
c2VydCBsZW4obGluZXMpID09IDEKKyAgICAgICAgYXNzZXJ0IGxpbmVzWzBdID09ICItIiAqIDI2
ICsgIiBoZWxsbyAiICsgIi0iICogKDI3IC0gd2luMzIpICsgIlxuIgorCisgICAgZGVmIHRlc3Rf
c2VwX2xvbmdlcl90aGFuX3dpZHRoKHNlbGYsIHR3KSAtPiBOb25lOgorICAgICAgICB0dy5zZXAo
Ii0iLCAiYSIgKiAxMCwgZnVsbHdpZHRoPTUpCisgICAgICAgIChsaW5lLCkgPSB0dy5nZXRsaW5l
cygpCisgICAgICAgICMgZXZlbiB0aG91Z2ggdGhlIHN0cmluZyBpcyB3aWRlciB0aGFuIHRoZSBs
aW5lLCBzdGlsbCBoYXZlIGEgc2VwYXJhdG9yCisgICAgICAgIGFzc2VydCBsaW5lID09ICItIGFh
YWFhYWFhYWEgLVxuIgorCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMucGxhdGZvcm0gPT0g
IndpbjMyIiwgcmVhc29uPSJ3aW4zMiBoYXMgbm8gbmF0aXZlIGFuc2kiKQorICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgiYm9sZCIsIChUcnVlLCBGYWxzZSkpCisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJjb2xvciIsICgicmVkIiwgImdyZWVuIikpCisgICAgZGVmIHRlc3RfbWFy
a3VwKHNlbGYsIHR3LCBib2xkOiBib29sLCBjb2xvcjogc3RyKSAtPiBOb25lOgorICAgICAgICB0
ZXh0ID0gdHcubWFya3VwKCJoZWxsbyIsICoqe2NvbG9yOiBUcnVlLCAiYm9sZCI6IGJvbGR9KQor
ICAgICAgICBhc3NlcnQgImhlbGxvIiBpbiB0ZXh0CisKKyAgICBkZWYgdGVzdF9tYXJrdXBfYmFk
KHNlbGYsIHR3KSAtPiBOb25lOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJv
cik6CisgICAgICAgICAgICB0dy5tYXJrdXAoIngiLCB3cm9ua3c9MykKKyAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdHcubWFya3VwKCJ4Iiwgd3Jv
bmt3PTApCisKKyAgICBkZWYgdGVzdF9saW5lX3dyaXRlX21hcmt1cChzZWxmLCB0dykgLT4gTm9u
ZToKKyAgICAgICAgdHcuaGFzbWFya3VwID0gVHJ1ZQorICAgICAgICB0dy5saW5lKCJ4IiwgYm9s
ZD1UcnVlKQorICAgICAgICB0dy53cml0ZSgieFxuIiwgcmVkPVRydWUpCisgICAgICAgIGxpbmVz
ID0gdHcuZ2V0bGluZXMoKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKKyAg
ICAgICAgICAgIGFzc2VydCBsZW4obGluZXNbMF0pID49IDIsIGxpbmVzCisgICAgICAgICAgICBh
c3NlcnQgbGVuKGxpbmVzWzFdKSA+PSAyLCBsaW5lcworCisgICAgZGVmIHRlc3RfYXR0cl9mdWxs
d2lkdGgoc2VsZiwgdHcpIC0+IE5vbmU6CisgICAgICAgIHR3LnNlcCgiLSIsICJoZWxsbyIsIGZ1
bGx3aWR0aD03MCkKKyAgICAgICAgdHcuZnVsbHdpZHRoID0gNzAKKyAgICAgICAgdHcuc2VwKCIt
IiwgImhlbGxvIikKKyAgICAgICAgbGluZXMgPSB0dy5nZXRsaW5lcygpCisgICAgICAgIGFzc2Vy
dCBsZW4obGluZXNbMF0pID09IGxlbihsaW5lc1sxXSkKKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlm
KHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCByZWFzb249IndpbjMyIGhhcyBubyBuYXRpdmUgYW5z
aSIpCitkZWYgdGVzdF9hdHRyX2hhc21hcmt1cCgpIC0+IE5vbmU6CisgICAgZmlsZSA9IGlvLlN0
cmluZ0lPKCkKKyAgICB0dyA9IHRlcm1pbmFsd3JpdGVyLlRlcm1pbmFsV3JpdGVyKGZpbGUpCisg
ICAgYXNzZXJ0IG5vdCB0dy5oYXNtYXJrdXAKKyAgICB0dy5oYXNtYXJrdXAgPSBUcnVlCisgICAg
dHcubGluZSgiaGVsbG8iLCBib2xkPVRydWUpCisgICAgcyA9IGZpbGUuZ2V0dmFsdWUoKQorICAg
IGFzc2VydCBsZW4ocykgPiBsZW4oImhlbGxvXG4iKQorICAgIGFzc2VydCAiXHgxYlsxbSIgaW4g
cworICAgIGFzc2VydCAiXHgxYlswbSIgaW4gcworCisKK2RlZiBhc3NlcnRfY29sb3Jfc2V0KCk6
CisgICAgZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICB0dyA9IHRlcm1pbmFsd3JpdGVyLlRlcm1p
bmFsV3JpdGVyKGZpbGUpCisgICAgYXNzZXJ0IHR3Lmhhc21hcmt1cAorICAgIHR3LmxpbmUoImhl
bGxvIiwgYm9sZD1UcnVlKQorICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKKyAgICBhc3NlcnQgbGVu
KHMpID4gbGVuKCJoZWxsb1xuIikKKyAgICBhc3NlcnQgIlx4MWJbMW0iIGluIHMKKyAgICBhc3Nl
cnQgIlx4MWJbMG0iIGluIHMKKworCitkZWYgYXNzZXJ0X2NvbG9yX25vdF9zZXQoKToKKyAgICBm
ID0gaW8uU3RyaW5nSU8oKQorICAgIGYuaXNhdHR5ID0gbGFtYmRhOiBUcnVlICAjIHR5cGU6IGln
bm9yZQorICAgIHR3ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoZmlsZT1mKQorICAg
IGFzc2VydCBub3QgdHcuaGFzbWFya3VwCisgICAgdHcubGluZSgiaGVsbG8iLCBib2xkPVRydWUp
CisgICAgcyA9IGYuZ2V0dmFsdWUoKQorICAgIGFzc2VydCBzID09ICJoZWxsb1xuIgorCisKK2Rl
ZiB0ZXN0X3Nob3VsZF9kb19tYXJrdXBfUFlfQ09MT1JTX2VxXzEobW9ua2V5cGF0Y2g6IE1vbmtl
eVBhdGNoKSAtPiBOb25lOgorICAgIG1vbmtleXBhdGNoLnNldGl0ZW0ob3MuZW52aXJvbiwgIlBZ
X0NPTE9SUyIsICIxIikKKyAgICBhc3NlcnRfY29sb3Jfc2V0KCkKKworCitkZWYgdGVzdF9zaG91
bGRfbm90X2RvX21hcmt1cF9QWV9DT0xPUlNfZXFfMChtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gp
IC0+IE5vbmU6CisgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShvcy5lbnZpcm9uLCAiUFlfQ09MT1JT
IiwgIjAiKQorICAgIGFzc2VydF9jb2xvcl9ub3Rfc2V0KCkKKworCitkZWYgdGVzdF9zaG91bGRf
bm90X2RvX21hcmt1cF9OT19DT0xPUihtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6
CisgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShvcy5lbnZpcm9uLCAiTk9fQ09MT1IiLCAiMSIpCisg
ICAgYXNzZXJ0X2NvbG9yX25vdF9zZXQoKQorCisKK2RlZiB0ZXN0X3Nob3VsZF9kb19tYXJrdXBf
Rk9SQ0VfQ09MT1IobW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgorICAgIG1vbmtl
eXBhdGNoLnNldGl0ZW0ob3MuZW52aXJvbiwgIkZPUkNFX0NPTE9SIiwgIjEiKQorICAgIGFzc2Vy
dF9jb2xvcl9zZXQoKQorCisKK2RlZiB0ZXN0X3Nob3VsZF9ub3RfZG9fbWFya3VwX05PX0NPTE9S
X2FuZF9GT1JDRV9DT0xPUigKKyAgICBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gsCispIC0+IE5v
bmU6CisgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShvcy5lbnZpcm9uLCAiTk9fQ09MT1IiLCAiMSIp
CisgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShvcy5lbnZpcm9uLCAiRk9SQ0VfQ09MT1IiLCAiMSIp
CisgICAgYXNzZXJ0X2NvbG9yX25vdF9zZXQoKQorCisKK2NsYXNzIFRlc3RUZXJtaW5hbFdyaXRl
ckxpbmVXaWR0aDoKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHR3
ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQorICAgICAgICBhc3NlcnQgdHcud2lk
dGhfb2ZfY3VycmVudF9saW5lID09IDAKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKSAtPiBO
b25lOgorICAgICAgICB0dyA9IHRlcm1pbmFsd3JpdGVyLlRlcm1pbmFsV3JpdGVyKCkKKyAgICAg
ICAgdHcud3JpdGUoImhlbGxvIHdvcmxkIikKKyAgICAgICAgYXNzZXJ0IHR3LndpZHRoX29mX2N1
cnJlbnRfbGluZSA9PSAxMQorCisgICAgZGVmIHRlc3RfdXBkYXRlX3dpdGhfbmV3bGluZShzZWxm
KSAtPiBOb25lOgorICAgICAgICB0dyA9IHRlcm1pbmFsd3JpdGVyLlRlcm1pbmFsV3JpdGVyKCkK
KyAgICAgICAgdHcud3JpdGUoImhlbGxvXG53b3JsZCIpCisgICAgICAgIGFzc2VydCB0dy53aWR0
aF9vZl9jdXJyZW50X2xpbmUgPT0gNQorCisgICAgZGVmIHRlc3RfdXBkYXRlX3dpdGhfd2lkZV90
ZXh0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHR3ID0gdGVybWluYWx3cml0ZXIuVGVybWluYWxX
cml0ZXIoKQorICAgICAgICB0dy53cml0ZSgi5LmH5LmC44SS5bC65Y2CIOOEkuWNhOS4qOWMmuWM
miIpCisgICAgICAgIGFzc2VydCB0dy53aWR0aF9vZl9jdXJyZW50X2xpbmUgPT0gMjEgICMgNSoy
ICsgMSArIDUqMgorCisgICAgZGVmIHRlc3RfY29tcG9zZWQoc2VsZikgLT4gTm9uZToKKyAgICAg
ICAgdHcgPSB0ZXJtaW5hbHdyaXRlci5UZXJtaW5hbFdyaXRlcigpCisgICAgICAgIHRleHQgPSAi
Y2Fmw6kgZm9vZCIKKyAgICAgICAgYXNzZXJ0IGxlbih0ZXh0KSA9PSA5CisgICAgICAgIHR3Lndy
aXRlKHRleHQpCisgICAgICAgIGFzc2VydCB0dy53aWR0aF9vZl9jdXJyZW50X2xpbmUgPT0gOQor
CisgICAgZGVmIHRlc3RfY29tYmluaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHR3ID0gdGVy
bWluYWx3cml0ZXIuVGVybWluYWxXcml0ZXIoKQorICAgICAgICB0ZXh0ID0gImNhZmXMgSBmb29k
IgorICAgICAgICBhc3NlcnQgbGVuKHRleHQpID09IDEwCisgICAgICAgIHR3LndyaXRlKHRleHQp
CisgICAgICAgIGFzc2VydCB0dy53aWR0aF9vZl9jdXJyZW50X2xpbmUgPT0gOQorCisKK0BweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAoImhhc19tYXJrdXAiLCAiY29kZV9oaWdobGlnaHQi
LCAiZXhwZWN0ZWQiKSwKKyAgICBbCisgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAg
IFRydWUsCisgICAgICAgICAgICBUcnVlLAorICAgICAgICAgICAgIntrd31hc3NlcnR7aGwtcmVz
ZXR9IHtudW1iZXJ9MHtobC1yZXNldH1cbiIsCisgICAgICAgICAgICBpZD0id2l0aCBtYXJrdXAg
YW5kIGNvZGVfaGlnaGxpZ2h0IiwKKyAgICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAor
ICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsICJhc3NlcnQgMFxuIiwgaWQ9IndpdGggbWFya3VwIGJ1
dCBubyBjb2RlX2hpZ2hsaWdodCIsCisgICAgICAgICksCisgICAgICAgIHB5dGVzdC5wYXJhbSgK
KyAgICAgICAgICAgIEZhbHNlLCBUcnVlLCAiYXNzZXJ0IDBcbiIsIGlkPSJ3aXRob3V0IG1hcmt1
cCBidXQgd2l0aCBjb2RlX2hpZ2hsaWdodCIsCisgICAgICAgICksCisgICAgICAgIHB5dGVzdC5w
YXJhbSgKKyAgICAgICAgICAgIEZhbHNlLCBGYWxzZSwgImFzc2VydCAwXG4iLCBpZD0ibmVpdGhl
ciBtYXJrdXAgbm9yIGNvZGVfaGlnaGxpZ2h0IiwKKyAgICAgICAgKSwKKyAgICBdLAorKQorZGVm
IHRlc3RfY29kZV9oaWdobGlnaHQoaGFzX21hcmt1cCwgY29kZV9oaWdobGlnaHQsIGV4cGVjdGVk
LCBjb2xvcl9tYXBwaW5nKToKKyAgICBmID0gaW8uU3RyaW5nSU8oKQorICAgIHR3ID0gdGVybWlu
YWx3cml0ZXIuVGVybWluYWxXcml0ZXIoZikKKyAgICB0dy5oYXNtYXJrdXAgPSBoYXNfbWFya3Vw
CisgICAgdHcuY29kZV9oaWdobGlnaHQgPSBjb2RlX2hpZ2hsaWdodAorICAgIHR3Ll93cml0ZV9z
b3VyY2UoWyJhc3NlcnQgMCJdKQorCisgICAgYXNzZXJ0IGYuZ2V0dmFsdWUoKS5zcGxpdGxpbmVz
KGtlZXBlbmRzPVRydWUpID09IGNvbG9yX21hcHBpbmcuZm9ybWF0KFtleHBlY3RlZF0pCisKKyAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgIG1hdGNo
PXJlLmVzY2FwZSgiaW5kZW50cyBzaXplICgyKSBzaG91bGQgaGF2ZSBzYW1lIHNpemUgYXMgbGlu
ZXMgKDEpIiksCisgICAgKToKKyAgICAgICAgdHcuX3dyaXRlX3NvdXJjZShbImFzc2VydCAwIl0s
IFsiICIsICIgIl0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2lvL3Rlc3Rfd2N3
aWR0aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvaW8vdGVzdF93Y3dpZHRoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2NjNzRkZjVkMDc5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9pby90ZXN0X3djd2lkdGgucHkKQEAgLTAsMCAr
MSwzOCBAQAoraW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0Ll9pby53Y3dpZHRoIGltcG9ydCB3
Y3N3aWR0aAorZnJvbSBfcHl0ZXN0Ll9pby53Y3dpZHRoIGltcG9ydCB3Y3dpZHRoCisKKworQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICgiYyIsICJleHBlY3RlZCIpLAorICAgIFsKKyAg
ICAgICAgKCJcMCIsIDApLAorICAgICAgICAoIlxuIiwgLTEpLAorICAgICAgICAoImEiLCAxKSwK
KyAgICAgICAgKCIxIiwgMSksCisgICAgICAgICgi15AiLCAxKSwKKyAgICAgICAgKCJcdTIwMEIi
LCAwKSwKKyAgICAgICAgKCJcdTFBQkUiLCAwKSwKKyAgICAgICAgKCJcdTA1OTEiLCAwKSwKKyAg
ICAgICAgKCLwn4mQIiwgMiksCisgICAgICAgICgi77yEIiwgMiksCisgICAgXSwKKykKK2RlZiB0
ZXN0X3djd2lkdGgoYzogc3RyLCBleHBlY3RlZDogaW50KSAtPiBOb25lOgorICAgIGFzc2VydCB3
Y3dpZHRoKGMpID09IGV4cGVjdGVkCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAg
ICgicyIsICJleHBlY3RlZCIpLAorICAgIFsKKyAgICAgICAgKCIiLCAwKSwKKyAgICAgICAgKCJo
ZWxsbywgd29ybGQhIiwgMTMpLAorICAgICAgICAoImhlbGxvLCB3b3JsZCFcbiIsIC0xKSwKKyAg
ICAgICAgKCIwMTIzNDU2Nzg5IiwgMTApLAorICAgICAgICAoItep15zXldedLCDXoteV15zXnSEi
LCAxMSksCisgICAgICAgICgi16nWsNeR1rvXota415nXmdedIiwgNiksCisgICAgICAgICgi8J+J
kPCfiZDwn4mQIiwgNiksCisgICAgXSwKKykKK2RlZiB0ZXN0X3djc3dpZHRoKHM6IHN0ciwgZXhw
ZWN0ZWQ6IGludCkgLT4gTm9uZToKKyAgICBhc3NlcnQgd2Nzd2lkdGgocykgPT0gZXhwZWN0ZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90ZXN0X2ZpeHR1cmUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9maXh0dXJlLnB5CmluZGV4IDhkOWFl
NmI1MThkYS4uZmZkNTFiY2FkN2EwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xv
Z2dpbmcvdGVzdF9maXh0dXJlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90
ZXN0X2ZpeHR1cmUucHkKQEAgLTEsNyArMSw4IEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQog
aW1wb3J0IGxvZ2dpbmcKIAogaW1wb3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0LmxvZ2dpbmcgaW1w
b3J0IGNhcGxvZ19yZWNvcmRzX2tleQorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0
ZGlyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogc3VibG9nZ2VyID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18gKyAiLmJheiIpCkBAIC0yNyw4ICsyOCwxMSBAQCBk
ZWYgdGVzdF9jaGFuZ2VfbGV2ZWwoY2FwbG9nKToKICAgICBhc3NlcnQgIkNSSVRJQ0FMIiBpbiBj
YXBsb2cudGV4dAogCiAKLWRlZiB0ZXN0X2NoYW5nZV9sZXZlbF91bmRvKHRlc3RkaXIpOgotICAg
ICIiIkVuc3VyZSB0aGF0ICdzZXRfbGV2ZWwnIGlzIHVuZG9uZSBhZnRlciB0aGUgZW5kIG9mIHRo
ZSB0ZXN0IiIiCitkZWYgdGVzdF9jaGFuZ2VfbGV2ZWxfdW5kbyh0ZXN0ZGlyOiBUZXN0ZGlyKSAt
PiBOb25lOgorICAgICIiIkVuc3VyZSB0aGF0ICdzZXRfbGV2ZWwnIGlzIHVuZG9uZSBhZnRlciB0
aGUgZW5kIG9mIHRoZSB0ZXN0LgorCisgICAgVGVzdHMgdGhlIGxvZ2dpbmcgb3V0cHV0IHRoZW1z
ZWx2ZXMgKGFmZmFjdGVkIGJvdGggYnkgbG9nZ2VyIGFuZCBoYW5kbGVyIGxldmVscykuCisgICAg
IiIiCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0
IGxvZ2dpbmcKQEAgLTQ1LDkgKzQ5LDM3IEBAIGRlZiB0ZXN0X2NoYW5nZV9sZXZlbF91bmRvKHRl
c3RkaXIpOgogICAgICAgICAgICAgYXNzZXJ0IDAKICAgICAiIiIKICAgICApCi0gICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipsb2cgZnJvbSB0
ZXN0MSoiLCAiKjIgZmFpbGVkIGluICoiXSkKLSAgICBhc3NlcnQgImxvZyBmcm9tIHRlc3QyIiBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqbG9nIGZyb20gdGVzdDIqIikKKworCitkZWYgdGVzdF9jaGFuZ2VfbGV2ZWxfdW5kb3Nf
aGFuZGxlcl9sZXZlbCh0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICIiIkVuc3VyZSB0
aGF0ICdzZXRfbGV2ZWwnIGlzIHVuZG9uZSBhZnRlciB0aGUgZW5kIG9mIHRoZSB0ZXN0IChoYW5k
bGVyKS4KKworICAgIElzc3VlICM3NTY5LiBUZXN0cyB0aGUgaGFuZGxlciBsZXZlbCBzcGVjaWZp
Y2FsbHkuCisgICAgIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAg
ICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICBkZWYgdGVzdDEoY2FwbG9nKToKKyAgICAg
ICAgICAgIGFzc2VydCBjYXBsb2cuaGFuZGxlci5sZXZlbCA9PSAwCisgICAgICAgICAgICBjYXBs
b2cuc2V0X2xldmVsKDk5OTkpCisgICAgICAgICAgICBjYXBsb2cuc2V0X2xldmVsKDQxKQorICAg
ICAgICAgICAgYXNzZXJ0IGNhcGxvZy5oYW5kbGVyLmxldmVsID09IDQxCisKKyAgICAgICAgZGVm
IHRlc3QyKGNhcGxvZyk6CisgICAgICAgICAgICBhc3NlcnQgY2FwbG9nLmhhbmRsZXIubGV2ZWwg
PT0gMAorCisgICAgICAgIGRlZiB0ZXN0MyhjYXBsb2cpOgorICAgICAgICAgICAgYXNzZXJ0IGNh
cGxvZy5oYW5kbGVyLmxldmVsID09IDAKKyAgICAgICAgICAgIGNhcGxvZy5zZXRfbGV2ZWwoNDMp
CisgICAgICAgICAgICBhc3NlcnQgY2FwbG9nLmhhbmRsZXIubGV2ZWwgPT0gNDMKKyAgICAiIiIK
KyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5hc3Nl
cnRfb3V0Y29tZXMocGFzc2VkPTMpCiAKIAogZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoY2FwbG9n
KToKQEAgLTczLDYgKzEwNSwyNyBAQCBkZWYgdGVzdF9sb2dfYWNjZXNzKGNhcGxvZyk6CiAgICAg
YXNzZXJ0ICJib28gYXJnIiBpbiBjYXBsb2cudGV4dAogCiAKK2RlZiB0ZXN0X21lc3NhZ2VzKGNh
cGxvZyk6CisgICAgY2FwbG9nLnNldF9sZXZlbChsb2dnaW5nLklORk8pCisgICAgbG9nZ2VyLmlu
Zm8oImJvbyAlcyIsICJhcmciKQorICAgIGxvZ2dlci5pbmZvKCJiYXIgJXNcbmJheiAlcyIsICJh
cmcxIiwgImFyZzIiKQorICAgIGFzc2VydCAiYm9vIGFyZyIgPT0gY2FwbG9nLm1lc3NhZ2VzWzBd
CisgICAgYXNzZXJ0ICJiYXIgYXJnMVxuYmF6IGFyZzIiID09IGNhcGxvZy5tZXNzYWdlc1sxXQor
ICAgIGFzc2VydCBjYXBsb2cudGV4dC5jb3VudCgiXG4iKSA+IGxlbihjYXBsb2cubWVzc2FnZXMp
CisgICAgYXNzZXJ0IGxlbihjYXBsb2cudGV4dC5zcGxpdGxpbmVzKCkpID4gbGVuKGNhcGxvZy5t
ZXNzYWdlcykKKworICAgIHRyeToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ0ZXN0IikKKyAg
ICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKCJvb3BzIikKKwor
ICAgIGFzc2VydCAib29wcyIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgIm9vcHMiIGluIGNh
cGxvZy5tZXNzYWdlc1stMV0KKyAgICAjIFRyYWNlYmFja3MgYXJlIHN0b3JlZCBpbiB0aGUgcmVj
b3JkIGFuZCBub3QgYWRkZWQgdW50aWwgdGhlIGZvcm1hdHRlciBvciBoYW5kbGVyLgorICAgIGFz
c2VydCAiRXhjZXB0aW9uIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAiRXhjZXB0aW9uIiBu
b3QgaW4gY2FwbG9nLm1lc3NhZ2VzWy0xXQorCisKIGRlZiB0ZXN0X3JlY29yZF90dXBsZXMoY2Fw
bG9nKToKICAgICBjYXBsb2cuc2V0X2xldmVsKGxvZ2dpbmcuSU5GTykKICAgICBsb2dnZXIuaW5m
bygiYm9vICVzIiwgImFyZyIpCkBAIC04MiwxNSArMTM1LDE1IEBAIGRlZiB0ZXN0X3JlY29yZF90
dXBsZXMoY2FwbG9nKToKIAogZGVmIHRlc3RfdW5pY29kZShjYXBsb2cpOgogICAgIGNhcGxvZy5z
ZXRfbGV2ZWwobG9nZ2luZy5JTkZPKQotICAgIGxvZ2dlci5pbmZvKHUiYsWrIikKKyAgICBsb2dn
ZXIuaW5mbygiYsWrIikKICAgICBhc3NlcnQgY2FwbG9nLnJlY29yZHNbMF0ubGV2ZWxuYW1lID09
ICJJTkZPIgotICAgIGFzc2VydCBjYXBsb2cucmVjb3Jkc1swXS5tc2cgPT0gdSJixasiCi0gICAg
YXNzZXJ0IHUiYsWrIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCBjYXBsb2cucmVjb3Jkc1sw
XS5tc2cgPT0gImLFqyIKKyAgICBhc3NlcnQgImLFqyIgaW4gY2FwbG9nLnRleHQKIAogCiBkZWYg
dGVzdF9jbGVhcihjYXBsb2cpOgogICAgIGNhcGxvZy5zZXRfbGV2ZWwobG9nZ2luZy5JTkZPKQot
ICAgIGxvZ2dlci5pbmZvKHUiYsWrIikKKyAgICBsb2dnZXIuaW5mbygiYsWrIikKICAgICBhc3Nl
cnQgbGVuKGNhcGxvZy5yZWNvcmRzKQogICAgIGFzc2VydCBjYXBsb2cudGV4dAogICAgIGNhcGxv
Zy5jbGVhcigpCkBAIC0xMTUsNSArMTY4LDE0MSBAQCBkZWYgdGVzdF9jYXBsb2dfY2FwdHVyZXNf
Zm9yX2FsbF9zdGFnZXMoY2FwbG9nLCBsb2dnaW5nX2R1cmluZ19zZXR1cF9hbmRfdGVhcmRvdwog
CiAgICAgYXNzZXJ0IFt4Lm1lc3NhZ2UgZm9yIHggaW4gY2FwbG9nLmdldF9yZWNvcmRzKCJzZXR1
cCIpXSA9PSBbImFfc2V0dXBfbG9nIl0KIAotICAgICMgVGhpcyByZWFjaGVycyBpbnRvIHByaXZh
dGUgQVBJLCBkb24ndCB1c2UgdGhpcyB0eXBlIG9mIHRoaW5nIGluIHJlYWwgdGVzdHMhCi0gICAg
YXNzZXJ0IHNldChjYXBsb2cuX2l0ZW0uY2F0Y2hfbG9nX2hhbmRsZXJzLmtleXMoKSkgPT0geyJz
ZXR1cCIsICJjYWxsIn0KKyAgICAjIFRoaXMgcmVhY2hlcyBpbnRvIHByaXZhdGUgQVBJLCBkb24n
dCB1c2UgdGhpcyB0eXBlIG9mIHRoaW5nIGluIHJlYWwgdGVzdHMhCisgICAgYXNzZXJ0IHNldChj
YXBsb2cuX2l0ZW0uX3N0b3JlW2NhcGxvZ19yZWNvcmRzX2tleV0pID09IHsic2V0dXAiLCAiY2Fs
bCJ9CisKKworZGVmIHRlc3RfaW5pX2NvbnRyb2xzX2dsb2JhbF9sb2dfbGV2ZWwodGVzdGRpcik6
CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5
dGVzdAorICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICBkZWYgdGVzdF9sb2dfbGV2ZWxf
b3ZlcnJpZGUocmVxdWVzdCwgY2FwbG9nKToKKyAgICAgICAgICAgIHBsdWdpbiA9IHJlcXVlc3Qu
Y29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCdsb2dnaW5nLXBsdWdpbicpCisgICAgICAg
ICAgICBhc3NlcnQgcGx1Z2luLmxvZ19sZXZlbCA9PSBsb2dnaW5nLkVSUk9SCisgICAgICAgICAg
ICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignY2F0Y2hsb2cnKQorICAgICAgICAgICAgbG9n
Z2VyLndhcm5pbmcoIldBUk5JTkcgbWVzc2FnZSB3b24ndCBiZSBzaG93biIpCisgICAgICAgICAg
ICBsb2dnZXIuZXJyb3IoIkVSUk9SIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biIpCisgICAgICAgICAg
ICBhc3NlcnQgJ1dBUk5JTkcnIG5vdCBpbiBjYXBsb2cudGV4dAorICAgICAgICAgICAgYXNzZXJ0
ICdFUlJPUicgaW4gY2FwbG9nLnRleHQKKyAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtl
aW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgbG9nX2xldmVsPUVS
Uk9SCisgICAgIiIiCisgICAgKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQor
ICAgICMgbWFrZSBzdXJlIHRoYXQgdGhhdCB3ZSBnZXQgYSAnMCcgZXhpdCBjb2RlIGZvciB0aGUg
dGVzdHN1aXRlCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK2RlZiB0ZXN0X2NhcGxv
Z19jYW5fb3ZlcnJpZGVfZ2xvYmFsX2xvZ19sZXZlbCh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGlt
cG9ydCBsb2dnaW5nCisgICAgICAgIGRlZiB0ZXN0X2xvZ19sZXZlbF9vdmVycmlkZShyZXF1ZXN0
LCBjYXBsb2cpOgorICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2NhdGNo
bG9nJykKKyAgICAgICAgICAgIHBsdWdpbiA9IHJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIu
Z2V0cGx1Z2luKCdsb2dnaW5nLXBsdWdpbicpCisgICAgICAgICAgICBhc3NlcnQgcGx1Z2luLmxv
Z19sZXZlbCA9PSBsb2dnaW5nLldBUk5JTkcKKworICAgICAgICAgICAgbG9nZ2VyLmluZm8oIklO
Rk8gbWVzc2FnZSB3b24ndCBiZSBzaG93biIpCisKKyAgICAgICAgICAgIGNhcGxvZy5zZXRfbGV2
ZWwobG9nZ2luZy5JTkZPLCBsb2dnZXIubmFtZSkKKworICAgICAgICAgICAgd2l0aCBjYXBsb2cu
YXRfbGV2ZWwobG9nZ2luZy5ERUJVRywgbG9nZ2VyLm5hbWUpOgorICAgICAgICAgICAgICAgIGxv
Z2dlci5kZWJ1ZygiREVCVUcgbWVzc2FnZSB3aWxsIGJlIHNob3duIikKKworICAgICAgICAgICAg
bG9nZ2VyLmRlYnVnKCJERUJVRyBtZXNzYWdlIHdvbid0IGJlIHNob3duIikKKworICAgICAgICAg
ICAgd2l0aCBjYXBsb2cuYXRfbGV2ZWwobG9nZ2luZy5DUklUSUNBTCwgbG9nZ2VyLm5hbWUpOgor
ICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJXQVJOSU5HIG1lc3NhZ2Ugd29uJ3QgYmUg
c2hvd24iKQorCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkRFQlVHIG1lc3NhZ2Ugd29uJ3Qg
YmUgc2hvd24iKQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oIklORk8gbWVzc2FnZSB3aWxsIGJl
IHNob3duIikKKworICAgICAgICAgICAgYXNzZXJ0ICJtZXNzYWdlIHdvbid0IGJlIHNob3duIiBu
b3QgaW4gY2FwbG9nLnRleHQKKyAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlaW5pKAor
ICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgbG9nX2xldmVsPVdBUk5JTkcK
KyAgICAiIiIKKyAgICApCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK2RlZiB0ZXN0X2NhcGxvZ19jYXB0dXJlc19kZXNw
aXRlX2V4Y2VwdGlvbih0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAg
ICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGltcG9ydCBsb2dnaW5nCisgICAg
ICAgIGRlZiB0ZXN0X2xvZ19sZXZlbF9vdmVycmlkZShyZXF1ZXN0LCBjYXBsb2cpOgorICAgICAg
ICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2NhdGNobG9nJykKKyAgICAgICAgICAg
IHBsdWdpbiA9IHJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCdsb2dnaW5n
LXBsdWdpbicpCisgICAgICAgICAgICBhc3NlcnQgcGx1Z2luLmxvZ19sZXZlbCA9PSBsb2dnaW5n
LldBUk5JTkcKKworICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJFUlJPUiBtZXNzYWdlICIgKyAi
d2lsbCBiZSBzaG93biIpCisKKyAgICAgICAgICAgIHdpdGggY2FwbG9nLmF0X2xldmVsKGxvZ2dp
bmcuREVCVUcsIGxvZ2dlci5uYW1lKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkRF
QlVHIG1lc3NhZ2UgIiArICJ3b24ndCBiZSBzaG93biIpCisgICAgICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCkKKyAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAg
ICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgbG9nX2xldmVsPVdBUk5JTkcKKyAgICAi
IiIKKyAgICApCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkVSUk9SIG1lc3NhZ2Ugd2lsbCBiZSBzaG93bioiXSkK
KyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKkRFQlVHIG1lc3NhZ2Ugd29uJ3Qg
YmUgc2hvd24qIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCisKKworZGVmIHRlc3RfbG9n
X3JlcG9ydF9jYXB0dXJlc19hY2NvcmRpbmdfdG9fY29uZmlnX29wdGlvbl91cG9uX2ZhaWx1cmUo
dGVzdGRpcik6CisgICAgIiIiVGVzdCB0aGF0IHVwb24gZmFpbHVyZToKKyAgICAoMSkgYGNhcGxv
Z2Agc3VjY2VlZGVkIHRvIGNhcHR1cmUgdGhlIERFQlVHIG1lc3NhZ2UgYW5kIGFzc2VydCBvbiBp
dCA9PiBObyBgRXhjZXB0aW9uYCBpcyByYWlzZWQuCisgICAgKDIpIFRoZSBgREVCVUdgIG1lc3Nh
Z2UgZG9lcyBOT1QgYXBwZWFyIGluIHRoZSBgQ2FwdHVyZWQgbG9nIGNhbGxgIHJlcG9ydC4KKyAg
ICAoMykgVGhlIHN0ZG91dCwgYElORk9gLCBhbmQgYFdBUk5JTkdgIG1lc3NhZ2VzIERPIGFwcGVh
ciBpbiB0aGUgdGVzdCByZXBvcnRzIGR1ZSB0byBgLS1sb2ctbGV2ZWw9SU5GT2AuCisgICAgIiIi
CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5
dGVzdAorICAgICAgICBpbXBvcnQgbG9nZ2luZworCisgICAgICAgIGRlZiBmdW5jdGlvbl90aGF0
X2xvZ3MoKToKKyAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoJ0RFQlVHIGxvZyAnICsgJ21lc3Nh
Z2UnKQorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdJTkZPIGxvZyAnICsgJ21lc3NhZ2UnKQor
ICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdXQVJOSU5HIGxvZyAnICsgJ21lc3NhZ2UnKQor
ICAgICAgICAgICAgcHJpbnQoJ1ByaW50ICcgKyAnbWVzc2FnZScpCisKKyAgICAgICAgZGVmIHRl
c3RfdGhhdF9mYWlscyhyZXF1ZXN0LCBjYXBsb2cpOgorICAgICAgICAgICAgcGx1Z2luID0gcmVx
dWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5nZXRwbHVnaW4oJ2xvZ2dpbmctcGx1Z2luJykKKyAg
ICAgICAgICAgIGFzc2VydCBwbHVnaW4ubG9nX2xldmVsID09IGxvZ2dpbmcuSU5GTworCisgICAg
ICAgICAgICB3aXRoIGNhcGxvZy5hdF9sZXZlbChsb2dnaW5nLkRFQlVHKToKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbl90aGF0X2xvZ3MoKQorCisgICAgICAgICAgICBpZiAnREVCVUcgbG9nICcg
KyAnbWVzc2FnZScgbm90IGluIGNhcGxvZy50ZXh0OgorICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignY2FwbG9nIGZhaWxlZCB0byAnICsgJ2NhcHR1cmUgREVCVUcnKQorCisgICAgICAg
ICAgICBhc3NlcnQgRmFsc2UKKyAgICAiIiIKKyAgICApCisKKyAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLS1sb2ctbGV2ZWw9SU5GTyIpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1h
dGNoX2xpbmUoIipFeGNlcHRpb246IGNhcGxvZyBmYWlsZWQgdG8gY2FwdHVyZSBERUJVRyoiKQor
ICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqREVCVUcgbG9nIG1lc3NhZ2UqIikK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiKlByaW50IG1lc3Nh
Z2UqIiwgIipJTkZPIGxvZyBtZXNzYWdlKiIsICIqV0FSTklORyBsb2cgbWVzc2FnZSoiXQorICAg
ICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2xvZ2dpbmcvdGVzdF9mb3JtYXR0ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xv
Z2dpbmcvdGVzdF9mb3JtYXR0ZXIucHkKaW5kZXggY2EyYTQxMDY1Mzc2Li5hOTAzODRhOTU1MzUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy90ZXN0X2Zvcm1hdHRlci5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9mb3JtYXR0ZXIucHkKQEAg
LTEsMTAgKzEsMTEgQEAKIGltcG9ydCBsb2dnaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgQW55CiAK
LWltcG9ydCBweS5pbworZnJvbSBfcHl0ZXN0Ll9pbyBpbXBvcnQgVGVybWluYWxXcml0ZXIKIGZy
b20gX3B5dGVzdC5sb2dnaW5nIGltcG9ydCBDb2xvcmVkTGV2ZWxGb3JtYXR0ZXIKIAogCi1kZWYg
dGVzdF9jb2xvcmVkbG9nZm9ybWF0dGVyKCk6CitkZWYgdGVzdF9jb2xvcmVkbG9nZm9ybWF0dGVy
KCkgLT4gTm9uZToKICAgICBsb2dmbXQgPSAiJShmaWxlbmFtZSktMjVzICUobGluZW5vKTRkICUo
bGV2ZWxuYW1lKS04cyAlKG1lc3NhZ2UpcyIKIAogICAgIHJlY29yZCA9IGxvZ2dpbmcuTG9nUmVj
b3JkKApAQCAtMTQsMjQgKzE1LDEzNiBAQCBkZWYgdGVzdF9jb2xvcmVkbG9nZm9ybWF0dGVyKCk6
CiAgICAgICAgIGxpbmVubz0xMCwKICAgICAgICAgbXNnPSJUZXN0IE1lc3NhZ2UiLAogICAgICAg
ICBhcmdzPSgpLAotICAgICAgICBleGNfaW5mbz1GYWxzZSwKKyAgICAgICAgZXhjX2luZm89Tm9u
ZSwKICAgICApCiAKLSAgICBjbGFzcyBDb2xvckNvbmZpZyhvYmplY3QpOgotCi0gICAgICAgIGNs
YXNzIG9wdGlvbihvYmplY3QpOgorICAgIGNsYXNzIENvbG9yQ29uZmlnOgorICAgICAgICBjbGFz
cyBvcHRpb246CiAgICAgICAgICAgICBwYXNzCiAKLSAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3Jp
dGVyKCkKKyAgICB0dyA9IFRlcm1pbmFsV3JpdGVyKCkKICAgICB0dy5oYXNtYXJrdXAgPSBUcnVl
CiAgICAgZm9ybWF0dGVyID0gQ29sb3JlZExldmVsRm9ybWF0dGVyKHR3LCBsb2dmbXQpCiAgICAg
b3V0cHV0ID0gZm9ybWF0dGVyLmZvcm1hdChyZWNvcmQpCi0gICAgYXNzZXJ0ICgKLSAgICAgICAg
b3V0cHV0Ci0gICAgICAgID09ICgiZHVtbXlwYXRoICAgICAgICAgICAgICAgICAgIDEwICIgIlx4
MWJbMzJtSU5GTyAgICBceDFiWzBtIFRlc3QgTWVzc2FnZSIpCisgICAgYXNzZXJ0IG91dHB1dCA9
PSAoCisgICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAgICAgICAgMTAgXHgxYlszMm1JTkZP
ICAgIFx4MWJbMG0gVGVzdCBNZXNzYWdlIgogICAgICkKIAogICAgIHR3Lmhhc21hcmt1cCA9IEZh
bHNlCiAgICAgZm9ybWF0dGVyID0gQ29sb3JlZExldmVsRm9ybWF0dGVyKHR3LCBsb2dmbXQpCiAg
ICAgb3V0cHV0ID0gZm9ybWF0dGVyLmZvcm1hdChyZWNvcmQpCi0gICAgYXNzZXJ0IG91dHB1dCA9
PSAoImR1bW15cGF0aCAgICAgICAgICAgICAgICAgICAxMCAiICJJTkZPICAgICBUZXN0IE1lc3Nh
Z2UiKQorICAgIGFzc2VydCBvdXRwdXQgPT0gKCJkdW1teXBhdGggICAgICAgICAgICAgICAgICAg
MTAgSU5GTyAgICAgVGVzdCBNZXNzYWdlIikKKworCitkZWYgdGVzdF9tdWx0aWxpbmVfbWVzc2Fn
ZSgpIC0+IE5vbmU6CisgICAgZnJvbSBfcHl0ZXN0LmxvZ2dpbmcgaW1wb3J0IFBlcmNlbnRTdHls
ZU11bHRpbGluZQorCisgICAgbG9nZm10ID0gIiUoZmlsZW5hbWUpLTI1cyAlKGxpbmVubyk0ZCAl
KGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMiCisKKyAgICByZWNvcmQgPSBsb2dnaW5nLkxvZ1Jl
Y29yZCgKKyAgICAgICAgbmFtZT0iZHVtbXkiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLklORk8s
CisgICAgICAgIHBhdGhuYW1lPSJkdW1teXBhdGgiLAorICAgICAgICBsaW5lbm89MTAsCisgICAg
ICAgIG1zZz0iVGVzdCBNZXNzYWdlIGxpbmUxXG5saW5lMiIsCisgICAgICAgIGFyZ3M9KCksCisg
ICAgICAgIGV4Y19pbmZvPU5vbmUsCisgICAgKSAgIyB0eXBlOiBBbnkKKyAgICAjIHRoaXMgaXMg
Y2FsbGVkIGJ5IGxvZ2dpbmcuRm9ybWF0dGVyLmZvcm1hdAorICAgIHJlY29yZC5tZXNzYWdlID0g
cmVjb3JkLmdldE1lc3NhZ2UoKQorCisgICAgYWlfb25fc3R5bGUgPSBQZXJjZW50U3R5bGVNdWx0
aWxpbmUobG9nZm10LCBUcnVlKQorICAgIG91dHB1dCA9IGFpX29uX3N0eWxlLmZvcm1hdChyZWNv
cmQpCisgICAgYXNzZXJ0IG91dHB1dCA9PSAoCisgICAgICAgICJkdW1teXBhdGggICAgICAgICAg
ICAgICAgICAgMTAgSU5GTyAgICAgVGVzdCBNZXNzYWdlIGxpbmUxXG4iCisgICAgICAgICIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIiCisgICAgKQorCisgICAg
YWlfb2ZmX3N0eWxlID0gUGVyY2VudFN0eWxlTXVsdGlsaW5lKGxvZ2ZtdCwgRmFsc2UpCisgICAg
b3V0cHV0ID0gYWlfb2ZmX3N0eWxlLmZvcm1hdChyZWNvcmQpCisgICAgYXNzZXJ0IG91dHB1dCA9
PSAoCisgICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAgICAgICAgMTAgSU5GTyAgICAgVGVz
dCBNZXNzYWdlIGxpbmUxXG5saW5lMiIKKyAgICApCisKKyAgICBhaV9ub25lX3N0eWxlID0gUGVy
Y2VudFN0eWxlTXVsdGlsaW5lKGxvZ2ZtdCwgTm9uZSkKKyAgICBvdXRwdXQgPSBhaV9ub25lX3N0
eWxlLmZvcm1hdChyZWNvcmQpCisgICAgYXNzZXJ0IG91dHB1dCA9PSAoCisgICAgICAgICJkdW1t
eXBhdGggICAgICAgICAgICAgICAgICAgMTAgSU5GTyAgICAgVGVzdCBNZXNzYWdlIGxpbmUxXG5s
aW5lMiIKKyAgICApCisKKyAgICByZWNvcmQuYXV0b19pbmRlbnQgPSBGYWxzZQorICAgIG91dHB1
dCA9IGFpX29uX3N0eWxlLmZvcm1hdChyZWNvcmQpCisgICAgYXNzZXJ0IG91dHB1dCA9PSAoCisg
ICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAgICAgICAgMTAgSU5GTyAgICAgVGVzdCBNZXNz
YWdlIGxpbmUxXG5saW5lMiIKKyAgICApCisKKyAgICByZWNvcmQuYXV0b19pbmRlbnQgPSBUcnVl
CisgICAgb3V0cHV0ID0gYWlfb2ZmX3N0eWxlLmZvcm1hdChyZWNvcmQpCisgICAgYXNzZXJ0IG91
dHB1dCA9PSAoCisgICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAgICAgICAgMTAgSU5GTyAg
ICAgVGVzdCBNZXNzYWdlIGxpbmUxXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGluZTIiCisgICAgKQorCisgICAgcmVjb3JkLmF1dG9faW5kZW50
ID0gIkZhbHNlIgorICAgIG91dHB1dCA9IGFpX29uX3N0eWxlLmZvcm1hdChyZWNvcmQpCisgICAg
YXNzZXJ0IG91dHB1dCA9PSAoCisgICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAgICAgICAg
MTAgSU5GTyAgICAgVGVzdCBNZXNzYWdlIGxpbmUxXG5saW5lMiIKKyAgICApCisKKyAgICByZWNv
cmQuYXV0b19pbmRlbnQgPSAiVHJ1ZSIKKyAgICBvdXRwdXQgPSBhaV9vZmZfc3R5bGUuZm9ybWF0
KHJlY29yZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAgICAg
ICAgICAgICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbiIKKyAgICAgICAg
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiIKKyAgICApCisK
KyAgICAjIGJhZCBzdHJpbmcgdmFsdWVzIGRlZmF1bHQgdG8gRmFsc2UKKyAgICByZWNvcmQuYXV0
b19pbmRlbnQgPSAianVuayIKKyAgICBvdXRwdXQgPSBhaV9vZmZfc3R5bGUuZm9ybWF0KHJlY29y
ZCkKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAgICAgICAgICAg
ICAgICAgICAxMCBJTkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbmxpbmUyIgorICAgICkKKwor
ICAgICMgYW55dGhpbmcgb3RoZXIgdGhhbiBzdHJpbmcgb3IgaW50IHdpbGwgZGVmYXVsdCB0byBG
YWxzZQorICAgIHJlY29yZC5hdXRvX2luZGVudCA9IGRpY3QoKQorICAgIG91dHB1dCA9IGFpX29m
Zl9zdHlsZS5mb3JtYXQocmVjb3JkKQorICAgIGFzc2VydCBvdXRwdXQgPT0gKAorICAgICAgICAi
ZHVtbXlwYXRoICAgICAgICAgICAgICAgICAgIDEwIElORk8gICAgIFRlc3QgTWVzc2FnZSBsaW5l
MVxubGluZTIiCisgICAgKQorCisgICAgcmVjb3JkLmF1dG9faW5kZW50ID0gIjUiCisgICAgb3V0
cHV0ID0gYWlfb2ZmX3N0eWxlLmZvcm1hdChyZWNvcmQpCisgICAgYXNzZXJ0IG91dHB1dCA9PSAo
CisgICAgICAgICJkdW1teXBhdGggICAgICAgICAgICAgICAgICAgMTAgSU5GTyAgICAgVGVzdCBN
ZXNzYWdlIGxpbmUxXG4gICAgIGxpbmUyIgorICAgICkKKworICAgIHJlY29yZC5hdXRvX2luZGVu
dCA9IDUKKyAgICBvdXRwdXQgPSBhaV9vZmZfc3R5bGUuZm9ybWF0KHJlY29yZCkKKyAgICBhc3Nl
cnQgb3V0cHV0ID09ICgKKyAgICAgICAgImR1bW15cGF0aCAgICAgICAgICAgICAgICAgICAxMCBJ
TkZPICAgICBUZXN0IE1lc3NhZ2UgbGluZTFcbiAgICAgbGluZTIiCisgICAgKQorCisKK2RlZiB0
ZXN0X2NvbG9yZWRfc2hvcnRfbGV2ZWwoKSAtPiBOb25lOgorICAgIGxvZ2ZtdCA9ICIlKGxldmVs
bmFtZSkuMXMgJShtZXNzYWdlKXMiCisKKyAgICByZWNvcmQgPSBsb2dnaW5nLkxvZ1JlY29yZCgK
KyAgICAgICAgbmFtZT0iZHVtbXkiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLklORk8sCisgICAg
ICAgIHBhdGhuYW1lPSJkdW1teXBhdGgiLAorICAgICAgICBsaW5lbm89MTAsCisgICAgICAgIG1z
Zz0iVGVzdCBNZXNzYWdlIiwKKyAgICAgICAgYXJncz0oKSwKKyAgICAgICAgZXhjX2luZm89Tm9u
ZSwKKyAgICApCisKKyAgICBjbGFzcyBDb2xvckNvbmZpZzoKKyAgICAgICAgY2xhc3Mgb3B0aW9u
OgorICAgICAgICAgICAgcGFzcworCisgICAgdHcgPSBUZXJtaW5hbFdyaXRlcigpCisgICAgdHcu
aGFzbWFya3VwID0gVHJ1ZQorICAgIGZvcm1hdHRlciA9IENvbG9yZWRMZXZlbEZvcm1hdHRlcih0
dywgbG9nZm10KQorICAgIG91dHB1dCA9IGZvcm1hdHRlci5mb3JtYXQocmVjb3JkKQorICAgICMg
dGhlIEkgKG9mIElORk8pIGlzIGNvbG9yZWQKKyAgICBhc3NlcnQgb3V0cHV0ID09ICgiXHgxYlsz
Mm1JXHgxYlswbSBUZXN0IE1lc3NhZ2UiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9sb2dnaW5nL3Rlc3RfcmVwb3J0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5n
L3Rlc3RfcmVwb3J0aW5nLnB5CmluZGV4IDkxZWQyZTQ3NThjYi4uNzU5MGI1NzYyODkzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9yZXBvcnRpbmcucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfcmVwb3J0aW5nLnB5CkBAIC0xLDEw
ICsxLDEzIEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotaW1wb3J0IHJlCitpbXBvcnQgaW8K
IGltcG9ydCBvcwotCi1pbXBvcnQgc2l4CitpbXBvcnQgcmUKK2Zyb20gdHlwaW5nIGltcG9ydCBj
YXN0CiAKIGltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBDYXB0dXJl
TWFuYWdlcgorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVz
dC5weXRlc3RlciBpbXBvcnQgVGVzdGRpcgorZnJvbSBfcHl0ZXN0LnRlcm1pbmFsIGltcG9ydCBU
ZXJtaW5hbFJlcG9ydGVyCiAKIAogZGVmIHRlc3Rfbm90aGluZ19sb2dnZWQodGVzdGRpcik6CkBA
IC01Myw2ICs1Niw3IEBAIGRlZiB0ZXN0X3Jvb3RfbG9nZ2VyX2FmZmVjdGVkKHRlc3RkaXIpOgog
ICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgbG9nZ2VyID0gbG9n
Z2luZy5nZXRMb2dnZXIoKQorCiAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgogICAgICAgICAgICAg
bG9nZ2VyLmluZm8oJ2luZm8gdGV4dCAnICsgJ2dvaW5nIHRvIGxvZ2dlcicpCiAgICAgICAgICAg
ICBsb2dnZXIud2FybmluZygnd2FybmluZyB0ZXh0ICcgKyAnZ29pbmcgdG8gbG9nZ2VyJykKQEAg
LTY1LDE1ICs2OSwxNCBAQCBkZWYgdGVzdF9yb290X2xvZ2dlcl9hZmZlY3RlZCh0ZXN0ZGlyKToK
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sb2ctbGV2ZWw9RVJST1IiLCAiLS1s
b2ctZmlsZT1weXRlc3QubG9nIikKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCiAKLSAgICAj
IHRoZSBjYXB0dXJlIGxvZyBjYWxscyBpbiB0aGUgc3Rkb3V0IHNlY3Rpb24gb25seSBjb250YWlu
IHRoZQotICAgICMgbG9nZ2VyLmVycm9yIG1zZywgYmVjYXVzZSAtLWxvZy1sZXZlbD1FUlJPUgor
ICAgICMgVGhlIGNhcHR1cmUgbG9nIGNhbGxzIGluIHRoZSBzdGRvdXQgc2VjdGlvbiBvbmx5IGNv
bnRhaW4gdGhlCisgICAgIyBsb2dnZXIuZXJyb3IgbXNnLCBiZWNhdXNlIG9mIC0tbG9nLWxldmVs
PUVSUk9SLgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiplcnJvciB0ZXh0IGdv
aW5nIHRvIGxvZ2dlcioiXSkKLSAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhj
ZXB0aW9uKToKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKndhcm5pbmcg
dGV4dCBnb2luZyB0byBsb2dnZXIqIl0pCi0gICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5m
YWlsLkV4Y2VwdGlvbik6Ci0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipp
bmZvIHRleHQgZ29pbmcgdG8gbG9nZ2VyKiJdKQorICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQu
c3RyKCkKKyAgICBhc3NlcnQgIndhcm5pbmcgdGV4dCBnb2luZyB0byBsb2dnZXIiIG5vdCBpbiBz
dGRvdXQKKyAgICBhc3NlcnQgImluZm8gdGV4dCBnb2luZyB0byBsb2dnZXIiIG5vdCBpbiBzdGRv
dXQKIAotICAgICMgdGhlIGxvZyBmaWxlIHNob3VsZCBjb250YWluIHRoZSB3YXJuaW5nIGFuZCB0
aGUgZXJyb3IgbG9nIG1lc3NhZ2VzIGFuZAorICAgICMgVGhlIGxvZyBmaWxlIHNob3VsZCBjb250
YWluIHRoZSB3YXJuaW5nIGFuZCB0aGUgZXJyb3IgbG9nIG1lc3NhZ2VzIGFuZAogICAgICMgbm90
IHRoZSBpbmZvIG9uZSwgYmVjYXVzZSB0aGUgZGVmYXVsdCBsZXZlbCBvZiB0aGUgcm9vdCBsb2dn
ZXIgaXMKICAgICAjIFdBUk5JTkcuCiAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKGxvZ19maWxl
KQpAQCAtMTExLDcgKzExNCw3IEBAIGRlZiB0ZXN0X2xvZ19jbGlfbGV2ZWxfbG9nX2xldmVsX2lu
dGVyYWN0aW9uKHRlc3RkaXIpOgogICAgICAgICAgICAgIj0qIDEgZmFpbGVkIGluICo9IiwKICAg
ICAgICAgXQogICAgICkKLSAgICBhc3NlcnQgIkRFQlVHIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5z
dHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fcmVfbWF0Y2hfbGluZSgiREVCVUciKQogCiAKIGRl
ZiB0ZXN0X3NldHVwX2xvZ2dpbmcodGVzdGRpcik6CkBAIC0xNjgsNjAgKzE3MSw2IEBAIGRlZiB0
ZXN0X3RlYXJkb3duX2xvZ2dpbmcodGVzdGRpcik6CiAgICAgKQogCiAKLWRlZiB0ZXN0X2Rpc2Fi
bGVfbG9nX2NhcHR1cmluZyh0ZXN0ZGlyKToKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAg
ICAgICIiIgotICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgIGltcG9ydCBsb2dnaW5nCi0KLSAg
ICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLSAgICAgICAgZGVm
IHRlc3RfZm9vKCk6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd0ZXh0IGdvaW5nIHRv
IHN0ZG91dCcpCi0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnY2F0Y2ggbWUgaWYgeW91IGNh
biEnKQotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgndGV4dCBnb2luZyB0byBzdGRlcnIn
KQotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCi0gICAgICAgICIiIgotICAgICkKLSAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1uby1wcmludC1sb2dzIikKLSAgICBwcmludChyZXN1
bHQuc3Rkb3V0KQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKLSAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqLSBDYXB0dXJlZCBzdGRvdXQgY2FsbCAtKiIsICJ0ZXh0IGdvaW5n
IHRvIHN0ZG91dCJdKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiotIENhcHR1
cmVkIHN0ZGVyciBjYWxsIC0qIiwgInRleHQgZ29pbmcgdG8gc3RkZXJyIl0pCi0gICAgd2l0aCBw
eXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6Ci0gICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIiotIENhcHR1cmVkICpsb2cgY2FsbCAtKiJdKQotCi0KLWRlZiB0
ZXN0X2Rpc2FibGVfbG9nX2NhcHR1cmluZ19pbmkodGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtl
aW5pKAotICAgICAgICAiIiIKLSAgICAgICAgW3B5dGVzdF0KLSAgICAgICAgbG9nX3ByaW50PUZh
bHNlCi0gICAgICAgICIiIgotICAgICkKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAg
ICIiIgotICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgIGltcG9ydCBsb2dnaW5nCi0KLSAgICAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLSAgICAgICAgZGVmIHRl
c3RfZm9vKCk6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd0ZXh0IGdvaW5nIHRvIHN0
ZG91dCcpCi0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnY2F0Y2ggbWUgaWYgeW91IGNhbiEn
KQotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgndGV4dCBnb2luZyB0byBzdGRlcnInKQot
ICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCi0gICAgICAgICIiIgotICAgICkKLSAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgcHJpbnQocmVzdWx0LnN0ZG91dCkKLSAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSAxCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKi0g
Q2FwdHVyZWQgc3Rkb3V0IGNhbGwgLSoiLCAidGV4dCBnb2luZyB0byBzdGRvdXQiXSkKLSAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqLSBDYXB0dXJlZCBzdGRlcnIgY2FsbCAtKiIs
ICJ0ZXh0IGdvaW5nIHRvIHN0ZGVyciJdKQotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3Qu
ZmFpbC5FeGNlcHRpb24pOgotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
LSBDYXB0dXJlZCAqbG9nIGNhbGwgLSoiXSkKLQotCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImVuYWJsZWQiLCBbVHJ1ZSwgRmFsc2VdKQogZGVmIHRlc3RfbG9nX2NsaV9lbmFibGVkX2Rpc2Fi
bGVkKHRlc3RkaXIsIGVuYWJsZWQpOgogICAgIG1zZyA9ICJjcml0aWNhbCBtZXNzYWdlIGxvZ2dl
ZCBieSB0ZXN0IgpAQCAtMjQ3LDcgKzE5Niw3IEBAIGRlZiB0ZXN0X2xvZ19jbGlfZW5hYmxlZF9k
aXNhYmxlZCh0ZXN0ZGlyLCBlbmFibGVkKToKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAg
ICAidGVzdF9sb2dfY2xpX2VuYWJsZWRfZGlzYWJsZWQucHk6OnRlc3RfbG9nX2NsaSAiLAogICAg
ICAgICAgICAgICAgICIqLS0gbGl2ZSBsb2cgY2FsbCAtLSoiLAotICAgICAgICAgICAgICAgICJ0
ZXN0X2xvZ19jbGlfZW5hYmxlZF9kaXNhYmxlZC5weSogQ1JJVElDQUwgY3JpdGljYWwgbWVzc2Fn
ZSBsb2dnZWQgYnkgdGVzdCIsCisgICAgICAgICAgICAgICAgIkNSSVRJQ0FMICp0ZXN0X2xvZ19j
bGlfZW5hYmxlZF9kaXNhYmxlZC5weSogY3JpdGljYWwgbWVzc2FnZSBsb2dnZWQgYnkgdGVzdCIs
CiAgICAgICAgICAgICAgICAgIlBBU1NFRCoiLAogICAgICAgICAgICAgXQogICAgICAgICApCkBA
IC0yODEsMTAgKzIzMCwxMCBAQCBkZWYgdGVzdF9sb2dfY2xpX2RlZmF1bHRfbGV2ZWwodGVzdGRp
cik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbCiAgICAgICAg
ICAgICAidGVzdF9sb2dfY2xpX2RlZmF1bHRfbGV2ZWwucHk6OnRlc3RfbG9nX2NsaSAiLAotICAg
ICAgICAgICAgInRlc3RfbG9nX2NsaV9kZWZhdWx0X2xldmVsLnB5KldBUk5JTkcgbWVzc2FnZSB3
aWxsIGJlIHNob3duKiIsCisgICAgICAgICAgICAiV0FSTklORyp0ZXN0X2xvZ19jbGlfZGVmYXVs
dF9sZXZlbC5weSogbWVzc2FnZSB3aWxsIGJlIHNob3duKiIsCiAgICAgICAgIF0KICAgICApCi0g
ICAgYXNzZXJ0ICJJTkZPIG1lc3NhZ2Ugd29uJ3QgYmUgc2hvd24iIG5vdCBpbiByZXN1bHQuc3Rk
b3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipJTkZPIG1lc3Nh
Z2Ugd29uJ3QgYmUgc2hvd24qIikKICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoYXQgd2UgZ2V0IGEg
JzAnIGV4aXQgY29kZSBmb3IgdGhlIHRlc3RzdWl0ZQogICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKIApAQCAtNTIwLDE2ICs0NjksMjIgQEAgZGVmIHRlc3Rfc2VjdGlvbnNfc2luZ2xlX25ld19s
aW5lX2FmdGVyX3Rlc3Rfb3V0Y29tZSh0ZXN0ZGlyLCByZXF1ZXN0KToKICAgICAgICAgICAgICI9
KiAxIHBhc3NlZCBpbiAqPSIsCiAgICAgICAgIF0KICAgICApCi0gICAgYXNzZXJ0IHJlLnNlYXJj
aCgKLSAgICAgICAgciIoLispbGl2ZSBsb2cgdGVhcmRvd24oLispXG4oLispV0FSTklORyguKylc
biguKylXQVJOSU5HKC4rKSIsCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuc3RyKCksCi0gICAgICAg
IHJlLk1VTFRJTElORSwKLSAgICApIGlzIG5vdCBOb25lCi0gICAgYXNzZXJ0IHJlLnNlYXJjaCgK
LSAgICAgICAgciIoLispbGl2ZSBsb2cgZmluaXNoKC4rKVxuKC4rKVdBUk5JTkcoLispXG4oLisp
V0FSTklORyguKykiLAotICAgICAgICByZXN1bHQuc3Rkb3V0LnN0cigpLAotICAgICAgICByZS5N
VUxUSUxJTkUsCi0gICAgKSBpcyBub3QgTm9uZQorICAgIGFzc2VydCAoCisgICAgICAgIHJlLnNl
YXJjaCgKKyAgICAgICAgICAgIHIiKC4rKWxpdmUgbG9nIHRlYXJkb3duKC4rKVxuV0FSTklORygu
KylcbldBUk5JTkcoLispIiwKKyAgICAgICAgICAgIHJlc3VsdC5zdGRvdXQuc3RyKCksCisgICAg
ICAgICAgICByZS5NVUxUSUxJTkUsCisgICAgICAgICkKKyAgICAgICAgaXMgbm90IE5vbmUKKyAg
ICApCisgICAgYXNzZXJ0ICgKKyAgICAgICAgcmUuc2VhcmNoKAorICAgICAgICAgICAgciIoLisp
bGl2ZSBsb2cgZmluaXNoKC4rKVxuV0FSTklORyguKylcbldBUk5JTkcoLispIiwKKyAgICAgICAg
ICAgIHJlc3VsdC5zdGRvdXQuc3RyKCksCisgICAgICAgICAgICByZS5NVUxUSUxJTkUsCisgICAg
ICAgICkKKyAgICAgICAgaXMgbm90IE5vbmUKKyAgICApCiAKIAogZGVmIHRlc3RfbG9nX2NsaV9s
ZXZlbCh0ZXN0ZGlyKToKQEAgLTU1OCwxMSArNTEzLDExIEBAIGRlZiB0ZXN0X2xvZ19jbGlfbGV2
ZWwodGVzdGRpcik6CiAgICAgIyBmbm1hdGNoX2xpbmVzIGRvZXMgYW4gYXNzZXJ0aW9uIGludGVy
bmFsbHkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKLSAgICAg
ICAgICAgICJ0ZXN0X2xvZ19jbGlfbGV2ZWwucHkqVGhpcyBsb2cgbWVzc2FnZSB3aWxsIGJlIHNo
b3duIiwKKyAgICAgICAgICAgICIqdGVzdF9sb2dfY2xpX2xldmVsLnB5KlRoaXMgbG9nIG1lc3Nh
Z2Ugd2lsbCBiZSBzaG93biIsCiAgICAgICAgICAgICAiUEFTU0VEIiwgICMgJ1BBU1NFRCcgb24g
aXRzIG93biBsaW5lIGJlY2F1c2UgdGhlIGxvZyBtZXNzYWdlIHByaW50cyBhIG5ldyBsaW5lCiAg
ICAgICAgIF0KICAgICApCi0gICAgYXNzZXJ0ICJUaGlzIGxvZyBtZXNzYWdlIHdvbid0IGJlIHNo
b3duIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqVGhpcyBsb2cgbWVzc2FnZSB3b24ndCBiZSBzaG93bioiKQogCiAgICAgIyBt
YWtlIHN1cmUgdGhhdCB0aGF0IHdlIGdldCBhICcwJyBleGl0IGNvZGUgZm9yIHRoZSB0ZXN0c3Vp
dGUKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCkBAIC01NzIsMTEgKzUyNywxMSBAQCBkZWYg
dGVzdF9sb2dfY2xpX2xldmVsKHRlc3RkaXIpOgogICAgICMgZm5tYXRjaF9saW5lcyBkb2VzIGFu
IGFzc2VydGlvbiBpbnRlcm5hbGx5CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAog
ICAgICAgICBbCi0gICAgICAgICAgICAidGVzdF9sb2dfY2xpX2xldmVsLnB5KiBUaGlzIGxvZyBt
ZXNzYWdlIHdpbGwgYmUgc2hvd24iLAorICAgICAgICAgICAgIip0ZXN0X2xvZ19jbGlfbGV2ZWwu
cHkqIFRoaXMgbG9nIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biIsCiAgICAgICAgICAgICAiUEFTU0VE
IiwgICMgJ1BBU1NFRCcgb24gaXRzIG93biBsaW5lIGJlY2F1c2UgdGhlIGxvZyBtZXNzYWdlIHBy
aW50cyBhIG5ldyBsaW5lCiAgICAgICAgIF0KICAgICApCi0gICAgYXNzZXJ0ICJUaGlzIGxvZyBt
ZXNzYWdlIHdvbid0IGJlIHNob3duIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJl
c3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqVGhpcyBsb2cgbWVzc2FnZSB3b24ndCBiZSBz
aG93bioiKQogCiAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGF0IHdlIGdldCBhICcwJyBleGl0IGNv
ZGUgZm9yIHRoZSB0ZXN0c3VpdGUKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCkBAIC02MDgs
MTEgKzU2MywxMSBAQCBkZWYgdGVzdF9sb2dfY2xpX2luaV9sZXZlbCh0ZXN0ZGlyKToKICAgICAj
IGZubWF0Y2hfbGluZXMgZG9lcyBhbiBhc3NlcnRpb24gaW50ZXJuYWxseQogICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwotICAgICAgICAgICAgInRlc3RfbG9nX2Ns
aV9pbmlfbGV2ZWwucHkqIFRoaXMgbG9nIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biIsCisgICAgICAg
ICAgICAiKnRlc3RfbG9nX2NsaV9pbmlfbGV2ZWwucHkqIFRoaXMgbG9nIG1lc3NhZ2Ugd2lsbCBi
ZSBzaG93biIsCiAgICAgICAgICAgICAiUEFTU0VEIiwgICMgJ1BBU1NFRCcgb24gaXRzIG93biBs
aW5lIGJlY2F1c2UgdGhlIGxvZyBtZXNzYWdlIHByaW50cyBhIG5ldyBsaW5lCiAgICAgICAgIF0K
ICAgICApCi0gICAgYXNzZXJ0ICJUaGlzIGxvZyBtZXNzYWdlIHdvbid0IGJlIHNob3duIiBub3Qg
aW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5l
KCIqVGhpcyBsb2cgbWVzc2FnZSB3b24ndCBiZSBzaG93bioiKQogCiAgICAgIyBtYWtlIHN1cmUg
dGhhdCB0aGF0IHdlIGdldCBhICcwJyBleGl0IGNvZGUgZm9yIHRoZSB0ZXN0c3VpdGUKICAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSAwCkBAIC02MjIsMTMgKzU3NywxMiBAQCBkZWYgdGVzdF9sb2df
Y2xpX2luaV9sZXZlbCh0ZXN0ZGlyKToKICAgICAiY2xpX2FyZ3MiLAogICAgIFsiIiwgIi0tbG9n
LWxldmVsPVdBUk5JTkciLCAiLS1sb2ctZmlsZS1sZXZlbD1XQVJOSU5HIiwgIi0tbG9nLWNsaS1s
ZXZlbD1XQVJOSU5HIl0sCiApCi1kZWYgdGVzdF9sb2dfY2xpX2F1dG9fZW5hYmxlKHRlc3RkaXIs
IHJlcXVlc3QsIGNsaV9hcmdzKToKK2RlZiB0ZXN0X2xvZ19jbGlfYXV0b19lbmFibGUodGVzdGRp
ciwgY2xpX2FyZ3MpOgogICAgICIiIkNoZWNrIHRoYXQgbGl2ZSBsb2dzIGFyZSBlbmFibGVkIGlm
IC0tbG9nLWxldmVsIG9yIC0tbG9nLWNsaS1sZXZlbCBpcyBwYXNzZWQgb24gdGhlIENMSS4KICAg
ICBJdCBzaG91bGQgbm90IGJlIGF1dG8gZW5hYmxlZCBpZiB0aGUgc2FtZSBjb25maWdzIGFyZSBz
ZXQgb24gdGhlIElOSSBmaWxlLgogICAgICIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgaW1wb3J0IGxvZ2dpbmcK
IAogICAgICAgICBkZWYgdGVzdF9sb2dfMSgpOgpAQCAtNjQ2LDYgKzYwMCw3IEBAIGRlZiB0ZXN0
X2xvZ19jbGlfYXV0b19lbmFibGUodGVzdGRpciwgcmVxdWVzdCwgY2xpX2FyZ3MpOgogICAgICkK
IAogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KGNsaV9hcmdzKQorICAgIHN0ZG91dCA9
IHJlc3VsdC5zdGRvdXQuc3RyKCkKICAgICBpZiBjbGlfYXJncyA9PSAiLS1sb2ctY2xpLWxldmVs
PVdBUk5JTkciOgogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAg
ICAgICBbCkBAIC02NTYsMTMgKzYxMSwxMyBAQCBkZWYgdGVzdF9sb2dfY2xpX2F1dG9fZW5hYmxl
KHRlc3RkaXIsIHJlcXVlc3QsIGNsaV9hcmdzKToKICAgICAgICAgICAgICAgICAiPSogMSBwYXNz
ZWQgaW4gKj0iLAogICAgICAgICAgICAgXQogICAgICAgICApCi0gICAgICAgIGFzc2VydCAiSU5G
TyIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAgYXNzZXJ0ICJJTkZPIiBub3Qg
aW4gc3Rkb3V0CiAgICAgZWxzZToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAogICAgICAgICAgICAgWyIqdGVzdF9sb2dfY2xpX2F1dG9fZW5hYmxlKjEwMCUqIiwgIj0qIDEg
cGFzc2VkIGluICo9Il0KICAgICAgICAgKQotICAgICAgICBhc3NlcnQgIklORk8iIG5vdCBpbiBy
ZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgICAgIGFzc2VydCAiV0FSTklORyIgbm90IGluIHJlc3Vs
dC5zdGRvdXQuc3RyKCkKKyAgICAgICAgYXNzZXJ0ICJJTkZPIiBub3QgaW4gc3Rkb3V0CisgICAg
ICAgIGFzc2VydCAiV0FSTklORyIgbm90IGluIHN0ZG91dAogCiAKIGRlZiB0ZXN0X2xvZ19maWxl
X2NsaSh0ZXN0ZGlyKToKQEAgLTc0MCw3ICs2OTUsNyBAQCBkZWYgdGVzdF9sb2dfbGV2ZWxfbm90
X2NoYW5nZWRfYnlfZGVmYXVsdCh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoIiogMSBwYXNzZWQgaW4gKiIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
KiAxIHBhc3NlZCBpbiAqIl0pCiAKIAogZGVmIHRlc3RfbG9nX2ZpbGVfaW5pKHRlc3RkaXIpOgpA
QCAtODIxLDggKzc3Niw0MyBAQCBkZWYgdGVzdF9sb2dfZmlsZV9pbmlfbGV2ZWwodGVzdGRpcik6
CiAgICAgICAgIGFzc2VydCAiVGhpcyBsb2cgbWVzc2FnZSB3b24ndCBiZSBzaG93biIgbm90IGlu
IGNvbnRlbnRzCiAKIAorZGVmIHRlc3RfbG9nX2ZpbGVfdW5pY29kZSh0ZXN0ZGlyKToKKyAgICBs
b2dfZmlsZSA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInB5dGVzdC5sb2ciKS5zdHJwYXRoCisKKyAg
ICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAg
ICBsb2dfZmlsZT17fQorICAgICAgICBsb2dfZmlsZV9sZXZlbCA9IElORk8KKyAgICAgICAgIiIi
LmZvcm1hdCgKKyAgICAgICAgICAgIGxvZ19maWxlCisgICAgICAgICkKKyAgICApCisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiJcCisgICAgICAgIGltcG9ydCBsb2dnaW5nCisK
KyAgICAgICAgZGVmIHRlc3RfbG9nX2ZpbGUoKToKKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9n
Z2VyKCdjYXRjaGxvZycpLmluZm8oIk5vcm1hbCBtZXNzYWdlIikKKyAgICAgICAgICAgIGxvZ2dp
bmcuZ2V0TG9nZ2VyKCdjYXRjaGxvZycpLmluZm8oIuKUnCIpCisgICAgICAgICAgICBsb2dnaW5n
LmdldExvZ2dlcignY2F0Y2hsb2cnKS5pbmZvKCJBbm90aGVyIG5vcm1hbCBtZXNzYWdlIikKKyAg
ICAgICAgIiIiCisgICAgKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorCisg
ICAgIyBtYWtlIHN1cmUgdGhhdCB0aGF0IHdlIGdldCBhICcwJyBleGl0IGNvZGUgZm9yIHRoZSB0
ZXN0c3VpdGUKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgYXNzZXJ0IG9zLnBhdGgu
aXNmaWxlKGxvZ19maWxlKQorICAgIHdpdGggb3Blbihsb2dfZmlsZSwgZW5jb2Rpbmc9InV0Zi04
IikgYXMgcmZoOgorICAgICAgICBjb250ZW50cyA9IHJmaC5yZWFkKCkKKyAgICAgICAgYXNzZXJ0
ICJOb3JtYWwgbWVzc2FnZSIgaW4gY29udGVudHMKKyAgICAgICAgYXNzZXJ0ICLilJwiIGluIGNv
bnRlbnRzCisgICAgICAgIGFzc2VydCAiQW5vdGhlciBub3JtYWwgbWVzc2FnZSIgaW4gY29udGVu
dHMKKworCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImhhc19jYXB0dXJlX21hbmFnZXIiLCBb
VHJ1ZSwgRmFsc2VdKQotZGVmIHRlc3RfbGl2ZV9sb2dnaW5nX3N1c3BlbmRzX2NhcHR1cmUoaGFz
X2NhcHR1cmVfbWFuYWdlciwgcmVxdWVzdCk6CitkZWYgdGVzdF9saXZlX2xvZ2dpbmdfc3VzcGVu
ZHNfY2FwdHVyZShoYXNfY2FwdHVyZV9tYW5hZ2VyOiBib29sLCByZXF1ZXN0KSAtPiBOb25lOgog
ICAgICIiIlRlc3QgdGhhdCBjYXB0dXJlIG1hbmFnZXIgaXMgc3VzcGVuZGVkIHdoZW4gd2UgZW1p
dHRpbmcgbWVzc2FnZXMgZm9yIGxpdmUgbG9nZ2luZy4KIAogICAgIFRoaXMgdGVzdHMgdGhlIGlt
cGxlbWVudGF0aW9uIGNhbGxzIGluc3RlYWQgb2YgYmVoYXZpb3IgYmVjYXVzZSBpdCBpcyBkaWZm
aWN1bHQvaW1wb3NzaWJsZSB0byBkbyBpdCB1c2luZwpAQCAtODMyLDMwICs4MjIsMjcgQEAgZGVm
IHRlc3RfbGl2ZV9sb2dnaW5nX3N1c3BlbmRzX2NhcHR1cmUoaGFzX2NhcHR1cmVfbWFuYWdlciwg
cmVxdWVzdCk6CiAgICAgaXMgaW5zdGFsbGVkLgogICAgICIiIgogICAgIGltcG9ydCBsb2dnaW5n
CisgICAgaW1wb3J0IGNvbnRleHRsaWIKICAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlh
bAotICAgIGZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBDYXB0dXJlTWFuYWdlcgogICAgIGZy
b20gX3B5dGVzdC5sb2dnaW5nIGltcG9ydCBfTGl2ZUxvZ2dpbmdTdHJlYW1IYW5kbGVyCiAKICAg
ICBjbGFzcyBNb2NrQ2FwdHVyZU1hbmFnZXI6CiAgICAgICAgIGNhbGxzID0gW10KIAotICAgICAg
ICBkZWYgc3VzcGVuZF9nbG9iYWxfY2FwdHVyZShzZWxmKToKLSAgICAgICAgICAgIHNlbGYuY2Fs
bHMuYXBwZW5kKCJzdXNwZW5kX2dsb2JhbF9jYXB0dXJlIikKLQotICAgICAgICBkZWYgcmVzdW1l
X2dsb2JhbF9jYXB0dXJlKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5jYWxscy5hcHBlbmQoInJl
c3VtZV9nbG9iYWxfY2FwdHVyZSIpCi0KLSAgICAjIHNhbml0eSBjaGVjawotICAgIGFzc2VydCBD
YXB0dXJlTWFuYWdlci5zdXNwZW5kX2NhcHR1cmVfaXRlbQotICAgIGFzc2VydCBDYXB0dXJlTWFu
YWdlci5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUKLQotICAgIGNsYXNzIER1bW15VGVybWluYWwoc2l4
LlN0cmluZ0lPKToKKyAgICAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICAgICAg
ZGVmIGdsb2JhbF9hbmRfZml4dHVyZV9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgICAgIHNlbGYu
Y2FsbHMuYXBwZW5kKCJlbnRlciBkaXNhYmxlZCIpCisgICAgICAgICAgICB5aWVsZAorICAgICAg
ICAgICAgc2VsZi5jYWxscy5hcHBlbmQoImV4aXQgZGlzYWJsZWQiKQogCisgICAgY2xhc3MgRHVt
bXlUZXJtaW5hbChpby5TdHJpbmdJTyk6CiAgICAgICAgIGRlZiBzZWN0aW9uKHNlbGYsICphcmdz
LCAqKmt3YXJncyk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBvdXRfZmlsZSA9IER1bW15VGVy
bWluYWwoKQotICAgIGNhcHR1cmVfbWFuYWdlciA9IE1vY2tDYXB0dXJlTWFuYWdlcigpIGlmIGhh
c19jYXB0dXJlX21hbmFnZXIgZWxzZSBOb25lCisgICAgb3V0X2ZpbGUgPSBjYXN0KFRlcm1pbmFs
UmVwb3J0ZXIsIER1bW15VGVybWluYWwoKSkKKyAgICBjYXB0dXJlX21hbmFnZXIgPSAoCisgICAg
ICAgIGNhc3QoQ2FwdHVyZU1hbmFnZXIsIE1vY2tDYXB0dXJlTWFuYWdlcigpKSBpZiBoYXNfY2Fw
dHVyZV9tYW5hZ2VyIGVsc2UgTm9uZQorICAgICkKICAgICBoYW5kbGVyID0gX0xpdmVMb2dnaW5n
U3RyZWFtSGFuZGxlcihvdXRfZmlsZSwgY2FwdHVyZV9tYW5hZ2VyKQogICAgIGhhbmRsZXIuc2V0
X3doZW4oImNhbGwiKQogCkBAIC04NjUsMTAgKzg1MiwzMDUgQEAgZGVmIHRlc3RfbGl2ZV9sb2dn
aW5nX3N1c3BlbmRzX2NhcHR1cmUoaGFzX2NhcHR1cmVfbWFuYWdlciwgcmVxdWVzdCk6CiAKICAg
ICBsb2dnZXIuY3JpdGljYWwoInNvbWUgbWVzc2FnZSIpCiAgICAgaWYgaGFzX2NhcHR1cmVfbWFu
YWdlcjoKLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIE1vY2tDYXB0dXJlTWFuYWdlci5j
YWxscwotICAgICAgICAgICAgPT0gWyJzdXNwZW5kX2dsb2JhbF9jYXB0dXJlIiwgInJlc3VtZV9n
bG9iYWxfY2FwdHVyZSJdCi0gICAgICAgICkKKyAgICAgICAgYXNzZXJ0IE1vY2tDYXB0dXJlTWFu
YWdlci5jYWxscyA9PSBbImVudGVyIGRpc2FibGVkIiwgImV4aXQgZGlzYWJsZWQiXQogICAgIGVs
c2U6CiAgICAgICAgIGFzc2VydCBNb2NrQ2FwdHVyZU1hbmFnZXIuY2FsbHMgPT0gW10KLSAgICBh
c3NlcnQgb3V0X2ZpbGUuZ2V0dmFsdWUoKSA9PSAiXG5zb21lIG1lc3NhZ2VcbiIKKyAgICBhc3Nl
cnQgY2FzdChpby5TdHJpbmdJTywgb3V0X2ZpbGUpLmdldHZhbHVlKCkgPT0gIlxuc29tZSBtZXNz
YWdlXG4iCisKKworZGVmIHRlc3RfY29sbGVjdGlvbl9saXZlX2xvZ2dpbmcodGVzdGRpcik6Cisg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IGxvZ2dp
bmcKKworICAgICAgICBsb2dnaW5nLmdldExvZ2dlcigpLmluZm8oIk5vcm1hbCBtZXNzYWdlIikK
KyAgICAiIiIKKyAgICApCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sb2ct
Y2xpLWxldmVsPUlORk8iKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAg
ICAgWyIqLS0tIGxpdmUgbG9nIGNvbGxlY3Rpb24gLS0tKiIsICIqTm9ybWFsIG1lc3NhZ2UqIiwg
ImNvbGxlY3RlZCAwIGl0ZW1zIl0KKyAgICApCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJ2ZXJib3NlIiwgWyIiLCAiLXEiLCAiLXFxIl0pCitkZWYgdGVzdF9jb2xsZWN0aW9uX2NvbGxl
Y3Rfb25seV9saXZlX2xvZ2dpbmcodGVzdGRpciwgdmVyYm9zZSk6CisgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3Rfc2ltcGxlKCk6CisgICAgICAg
ICAgICBwYXNzCisgICAgIiIiCisgICAgKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tY29sbGVjdC1vbmx5IiwgIi0tbG9nLWNsaS1sZXZlbD1JTkZPIiwgdmVyYm9zZSkKKwor
ICAgIGV4cGVjdGVkX2xpbmVzID0gW10KKworICAgIGlmIG5vdCB2ZXJib3NlOgorICAgICAgICBl
eHBlY3RlZF9saW5lcy5leHRlbmQoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIipj
b2xsZWN0ZWQgMSBpdGVtKiIsCisgICAgICAgICAgICAgICAgIio8TW9kdWxlIHRlc3RfY29sbGVj
dGlvbl9jb2xsZWN0X29ubHlfbGl2ZV9sb2dnaW5nLnB5PioiLAorICAgICAgICAgICAgICAgICIq
bm8gdGVzdHMgcmFuKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICBlbGlmIHZlcmJv
c2UgPT0gIi1xIjoKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipjb2xs
ZWN0ZWQgMSBpdGVtKioiKQorICAgICAgICBleHBlY3RlZF9saW5lcy5leHRlbmQoCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgIip0ZXN0X2NvbGxlY3Rpb25fY29sbGVjdF9vbmx5X2xp
dmVfbG9nZ2luZy5weTo6dGVzdF9zaW1wbGUqIiwKKyAgICAgICAgICAgICAgICAibm8gdGVzdHMg
cmFuIGluIFswLTldLlswLTldWzAtOV1zIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorICAg
IGVsaWYgdmVyYm9zZSA9PSAiLXFxIjoKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNo
X2xpbmUoIipjb2xsZWN0ZWQgMSBpdGVtKioiKQorICAgICAgICBleHBlY3RlZF9saW5lcy5leHRl
bmQoWyIqdGVzdF9jb2xsZWN0aW9uX2NvbGxlY3Rfb25seV9saXZlX2xvZ2dpbmcucHk6IDEqIl0p
CisKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoZXhwZWN0ZWRfbGluZXMpCisKKwor
ZGVmIHRlc3RfY29sbGVjdGlvbl9sb2dnaW5nX3RvX2ZpbGUodGVzdGRpcik6CisgICAgbG9nX2Zp
bGUgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJweXRlc3QubG9nIikuc3RycGF0aAorCisgICAgdGVz
dGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgbG9n
X2ZpbGU9e30KKyAgICAgICAgbG9nX2ZpbGVfbGV2ZWwgPSBJTkZPCisgICAgICAgICIiIi5mb3Jt
YXQoCisgICAgICAgICAgICBsb2dfZmlsZQorICAgICAgICApCisgICAgKQorCisgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAg
ICAgICBsb2dnaW5nLmdldExvZ2dlcigpLmluZm8oIk5vcm1hbCBtZXNzYWdlIikKKworICAgICAg
ICBkZWYgdGVzdF9zaW1wbGUoKToKKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuZGVi
dWcoImRlYnVnIG1lc3NhZ2UgaW4gdGVzdF9zaW1wbGUiKQorICAgICAgICAgICAgbG9nZ2luZy5n
ZXRMb2dnZXIoKS5pbmZvKCJpbmZvIG1lc3NhZ2UgaW4gdGVzdF9zaW1wbGUiKQorICAgICIiIgor
ICAgICkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKworICAgIHJlc3VsdC5z
dGRvdXQubm9fZm5tYXRjaF9saW5lKCIqLS0tIGxpdmUgbG9nIGNvbGxlY3Rpb24gLS0tKiIpCisK
KyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKGxv
Z19maWxlKQorICAgIHdpdGggb3Blbihsb2dfZmlsZSwgZW5jb2Rpbmc9InV0Zi04IikgYXMgcmZo
OgorICAgICAgICBjb250ZW50cyA9IHJmaC5yZWFkKCkKKyAgICAgICAgYXNzZXJ0ICJOb3JtYWwg
bWVzc2FnZSIgaW4gY29udGVudHMKKyAgICAgICAgYXNzZXJ0ICJkZWJ1ZyBtZXNzYWdlIGluIHRl
c3Rfc2ltcGxlIiBub3QgaW4gY29udGVudHMKKyAgICAgICAgYXNzZXJ0ICJpbmZvIG1lc3NhZ2Ug
aW4gdGVzdF9zaW1wbGUiIGluIGNvbnRlbnRzCisKKworZGVmIHRlc3RfbG9nX2luX2hvb2tzKHRl
c3RkaXIpOgorICAgIGxvZ19maWxlID0gdGVzdGRpci50bXBkaXIuam9pbigicHl0ZXN0LmxvZyIp
LnN0cnBhdGgKKworICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgIiIiCisgICAgICAgIFtw
eXRlc3RdCisgICAgICAgIGxvZ19maWxlPXt9CisgICAgICAgIGxvZ19maWxlX2xldmVsID0gSU5G
TworICAgICAgICBsb2dfY2xpPXRydWUKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAg
IGxvZ19maWxlCisgICAgICAgICkKKyAgICApCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisg
ICAgICAgICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZworCisgICAgICAgIGRlZiBweXRlc3Rf
cnVudGVzdGxvb3Aoc2Vzc2lvbik6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ3J1bnRlc3Rs
b29wJykKKworICAgICAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKKyAgICAg
ICAgICAgIGxvZ2dpbmcuaW5mbygnc2Vzc2lvbnN0YXJ0JykKKworICAgICAgICBkZWYgcHl0ZXN0
X3Nlc3Npb25maW5pc2goc2Vzc2lvbiwgZXhpdHN0YXR1cyk6CisgICAgICAgICAgICBsb2dnaW5n
LmluZm8oJ3Nlc3Npb25maW5pc2gnKQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnNlc3Np
b25zdGFydCoiLCAiKnJ1bnRlc3Rsb29wKiIsICIqc2Vzc2lvbmZpbmlzaCoiXSkKKyAgICB3aXRo
IG9wZW4obG9nX2ZpbGUpIGFzIHJmaDoKKyAgICAgICAgY29udGVudHMgPSByZmgucmVhZCgpCisg
ICAgICAgIGFzc2VydCAic2Vzc2lvbnN0YXJ0IiBpbiBjb250ZW50cworICAgICAgICBhc3NlcnQg
InJ1bnRlc3Rsb29wIiBpbiBjb250ZW50cworICAgICAgICBhc3NlcnQgInNlc3Npb25maW5pc2gi
IGluIGNvbnRlbnRzCisKKworZGVmIHRlc3RfbG9nX2luX3J1bnRlc3RfbG9ncmVwb3J0KHRlc3Rk
aXIpOgorICAgIGxvZ19maWxlID0gdGVzdGRpci50bXBkaXIuam9pbigicHl0ZXN0LmxvZyIpLnN0
cnBhdGgKKworICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgIiIiCisgICAgICAgIFtweXRl
c3RdCisgICAgICAgIGxvZ19maWxlPXt9CisgICAgICAgIGxvZ19maWxlX2xldmVsID0gSU5GTwor
ICAgICAgICBsb2dfY2xpPXRydWUKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGxv
Z19maWxlCisgICAgICAgICkKKyAgICApCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAg
ICAgICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICBsb2dnZXIgPSBsb2dnaW5n
LmdldExvZ2dlcihfX25hbWVfXykKKworICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVw
b3J0KHJlcG9ydCk6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygibG9ncmVwb3J0IikKKyAgICAi
IiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X2ZpcnN0KCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAg
ICAgIiIiCisgICAgKQorICAgIHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICB3aXRoIG9wZW4obG9n
X2ZpbGUpIGFzIHJmaDoKKyAgICAgICAgY29udGVudHMgPSByZmgucmVhZCgpCisgICAgICAgIGFz
c2VydCBjb250ZW50cy5jb3VudCgibG9ncmVwb3J0IikgPT0gMworCisKK2RlZiB0ZXN0X2xvZ19z
ZXRfcGF0aCh0ZXN0ZGlyKToKKyAgICByZXBvcnRfZGlyX2Jhc2UgPSB0ZXN0ZGlyLnRtcGRpci5z
dHJwYXRoCisKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAgICBbcHl0
ZXN0XQorICAgICAgICBsb2dfZmlsZV9sZXZlbCA9IERFQlVHCisgICAgICAgIGxvZ19jbGk9dHJ1
ZQorICAgICAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAg
ICIiIgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Cisg
ICAgICAgICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWZpcnN0PVRy
dWUpCisgICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CisgICAgICAg
ICAgICAgICAgY29uZmlnID0gaXRlbS5jb25maWcKKyAgICAgICAgICAgICAgICBsb2dnaW5nX3Bs
dWdpbiA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oImxvZ2dpbmctcGx1Z2luIikK
KyAgICAgICAgICAgICAgICByZXBvcnRfZmlsZSA9IG9zLnBhdGguam9pbih7fSwgaXRlbS5fcmVx
dWVzdC5ub2RlLm5hbWUpCisgICAgICAgICAgICAgICAgbG9nZ2luZ19wbHVnaW4uc2V0X2xvZ19w
YXRoKHJlcG9ydF9maWxlKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICIiIi5mb3Jt
YXQoCisgICAgICAgICAgICByZXByKHJlcG9ydF9kaXJfYmFzZSkKKyAgICAgICAgKQorICAgICkK
KyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0
IGxvZ2dpbmcKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0ZXN0Y2Fz
ZS1sb2dnZXIiKQorICAgICAgICAgICAgZGVmIHRlc3RfZmlyc3QoKToKKyAgICAgICAgICAgICAg
ICBsb2dnZXIuaW5mbygibWVzc2FnZSBmcm9tIHRlc3QgMSIpCisgICAgICAgICAgICAgICAgYXNz
ZXJ0IFRydWUKKworICAgICAgICAgICAgZGVmIHRlc3Rfc2Vjb25kKCk6CisgICAgICAgICAgICAg
ICAgbG9nZ2VyLmRlYnVnKCJtZXNzYWdlIGZyb20gdGVzdCAyIikKKyAgICAgICAgICAgICAgICBh
c3NlcnQgVHJ1ZQorICAgICAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5ydW5weXRlc3QoKQor
ICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVwb3J0X2Rpcl9iYXNlLCAidGVzdF9maXJzdCIp
KSBhcyByZmg6CisgICAgICAgIGNvbnRlbnQgPSByZmgucmVhZCgpCisgICAgICAgIGFzc2VydCAi
bWVzc2FnZSBmcm9tIHRlc3QgMSIgaW4gY29udGVudAorCisgICAgd2l0aCBvcGVuKG9zLnBhdGgu
am9pbihyZXBvcnRfZGlyX2Jhc2UsICJ0ZXN0X3NlY29uZCIpKSBhcyByZmg6CisgICAgICAgIGNv
bnRlbnQgPSByZmgucmVhZCgpCisgICAgICAgIGFzc2VydCAibWVzc2FnZSBmcm9tIHRlc3QgMiIg
aW4gY29udGVudAorCisKK2RlZiB0ZXN0X2NvbG9yZWRfY2FwdHVyZWRfbG9nKHRlc3RkaXIpOgor
ICAgICIiIlRlc3QgdGhhdCB0aGUgbGV2ZWwgbmFtZXMgb2YgY2FwdHVyZWQgbG9nIG1lc3NhZ2Vz
IG9mIGEgZmFpbGluZyB0ZXN0CisgICAgYXJlIGNvbG9yZWQuIiIiCisgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICBs
b2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworICAgICAgICBkZWYgdGVzdF9m
b28oKToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCd0ZXh0IGdvaW5nIHRvIGxvZ2dlciBmcm9t
IGNhbGwnKQorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICIiIgorICAgICkKKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sb2ctbGV2ZWw9SU5GTyIsICItLWNvbG9y
PXllcyIpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIiotLSBDYXB0dXJlZCBsb2cgY2Fs
bCAtLSoiLAorICAgICAgICAgICAgIlx4MWJbMzJtSU5GTyAgICBceDFiWzBtKnRleHQgZ29pbmcg
dG8gbG9nZ2VyIGZyb20gY2FsbCIsCisgICAgICAgIF0KKyAgICApCisKKworZGVmIHRlc3RfY29s
b3JlZF9hbnNpX2VzY19jYXBsb2d0ZXh0KHRlc3RkaXIpOgorICAgICIiIk1ha2Ugc3VyZSB0aGF0
IGNhcGxvZy50ZXh0IGRvZXMgbm90IGNvbnRhaW4gQU5TSSBlc2NhcGUgc2VxdWVuY2VzLiIiIgor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBsb2dn
aW5nCisKKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKyAg
ICAgICAgZGVmIHRlc3RfZm9vKGNhcGxvZyk6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygndGV4
dCBnb2luZyB0byBsb2dnZXIgZnJvbSBjYWxsJykKKyAgICAgICAgICAgIGFzc2VydCAnXHgxYicg
bm90IGluIGNhcGxvZy50ZXh0CisgICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLS1sb2ctbGV2ZWw9SU5GTyIsICItLWNvbG9yPXllcyIpCisgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK2RlZiB0ZXN0X2xvZ2dpbmdfZW1pdF9lcnJvcih0ZXN0
ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICIiIkFuIGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5n
IGVtaXQoKSBzaG91bGQgZmFpbCB0aGUgdGVzdC4KKworICAgIFRoZSBkZWZhdWx0IGJlaGF2aW9y
IG9mIGxvZ2dpbmcgaXMgdG8gcHJpbnQgIkxvZ2dpbmcgZXJyb3IiCisgICAgdG8gc3RkZXJyIHdp
dGggdGhlIGNhbGwgc3RhY2sgYW5kIHNvbWUgZXh0cmEgZGV0YWlscy4KKworICAgIHB5dGVzdCBv
dmVycmlkZXMgdGhpcyBiZWhhdmlvciB0byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbi4KKyAgICAi
IiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQg
bG9nZ2luZworCisgICAgICAgIGRlZiB0ZXN0X2JhZF9sb2coKToKKyAgICAgICAgICAgIGxvZ2dp
bmcud2FybmluZygnb29wcycsICdmaXJzdCcsIDIpCisgICAgICAgICIiIgorICAgICkKKyAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhm
YWlsZWQ9MSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAg
ICAgICAgICAgICI9PT09KiBGQUlMVVJFUyAqPT09PSIsCisgICAgICAgICAgICAiKm5vdCBhbGwg
YXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmcqIiwKKyAgICAgICAg
XQorICAgICkKKworCitkZWYgdGVzdF9sb2dnaW5nX2VtaXRfZXJyb3Jfc3VwcmVzc2VkKHRlc3Rk
aXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiSWYgbG9nZ2luZyBpcyBjb25maWd1cmVkIHRv
IHNpbGVudGx5IGlnbm9yZSBlcnJvcnMsIHB5dGVzdAorICAgIGRvZXNuJ3QgcHJvcGFnYXRlIGVy
cm9ycyBlaXRoZXIuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAg
ICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICBkZWYgdGVzdF9iYWRfbG9nKG1vbmtleXBh
dGNoKToKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIobG9nZ2luZywgJ3JhaXNlRXhj
ZXB0aW9ucycsIEZhbHNlKQorICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdvb3BzJywgJ2Zp
cnN0JywgMikKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0xKQorCisKK2RlZiB0ZXN0
X2xvZ19maWxlX2NsaV9zdWJkaXJlY3Rvcmllc19hcmVfc3VjY2Vzc2Z1bGx5X2NyZWF0ZWQodGVz
dGRpcik6CisgICAgcGF0aCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiIiIgZGVmIHRlc3RfbG9nZ2Vy
KCk6IHBhc3MgIiIiKQorICAgIGV4cGVjdGVkID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFt
ZShzdHIocGF0aCkpLCAiZm9vIiwgImJhciIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tbG9nLWZpbGU9Zm9vL2Jhci9sb2dmLmxvZyIpCisgICAgYXNzZXJ0ICJsb2dmLmxvZyIg
aW4gb3MubGlzdGRpcihleHBlY3RlZCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29k
ZS5PSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI3ODA2ODcxYWQuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVz
dF9maXh0dXJlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfZm9ybWF0dGVy
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfcmVwb3J0aW5nLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vLmdpdGlnbm9y
ZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi8uZ2l0aWdub3JlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDkzNDQ0N2EwM2JkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uLy5n
aXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisqLmh0bWwKK2Fzc2V0cy8KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9SRUFETUUucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZjAyN2MzYmQzNTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vUkVBRE1FLnJzdApA
QCAtMCwwICsxLDEzIEBACitUaGlzIGZvbGRlciBjb250YWlucyB0ZXN0cyBhbmQgc3VwcG9ydCBm
aWxlcyBmb3Igc21va2UgdGVzdGluZyBwb3B1bGFyIHBsdWdpbnMgYWdhaW5zdCB0aGUgY3VycmVu
dCBweXRlc3QgdmVyc2lvbi4KKworVGhlIG9iamVjdGl2ZSBpcyB0byBnYXVnZSBpZiBhbnkgaW50
ZW50aW9uYWwgb3IgdW5pbnRlbnRpb25hbCBjaGFuZ2VzIGluIHB5dGVzdCBicmVhayBwbHVnaW5z
LgorCitBcyBhIHJ1bGUgb2YgdGh1bWIsIHdlIHNob3VsZCBhZGQgcGx1Z2lucyBoZXJlOgorCisx
LiBUaGF0IGFyZSB1c2VkIGF0IGxhcmdlLiBUaGlzIG1pZ2h0IGJlIHN1YmplY3RpdmUgaW4gc29t
ZSBjYXNlcywgYnV0IGlmIGFuc3dlciBpcyB5ZXMgdG8KKyAgIHRoZSBxdWVzdGlvbjogKmlmIGEg
bmV3IHJlbGVhc2Ugb2YgcHl0ZXN0IGNhdXNlcyBweXRlc3QtWCB0byBicmVhaywgd2lsbCB0aGlz
IGJyZWFrIGEgdG9uIG9mIHRlc3Qgc3VpdGVzIG91dCB0aGVyZT8qLgorMi4gVGhhdCBkb24ndCBo
YXZlIGxhcmdlIGV4dGVybmFsIGRlcGVuZGVuY2llczogc3VjaCBhcyBleHRlcm5hbCBzZXJ2aWNl
cy4KKworQmVzaWRlcyBhZGRpbmcgdGhlIHBsdWdpbiBhcyBkZXBlbmRlbmN5LCB3ZSBzaG91bGQg
YWxzbyBhZGQgYSBxdWljayB0ZXN0IHdoaWNoIHVzZXMgc29tZQorbWluaW1hbCBwYXJ0IG9mIHRo
ZSBwbHVnaW4sIGEgc21va2UgdGVzdC4gQWxzbyBjb25zaWRlciByZXVzaW5nIG9uZSBvZiB0aGUg
ZXhpc3RpbmcgdGVzdHMgaWYgdGhhdCdzCitwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9iZGRfd2FsbGV0LmZlYXR1cmUgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vYmRkX3dhbGxldC5mZWF0dXJlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTQwNGM0OTQ4ZTk0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL2Jk
ZF93YWxsZXQuZmVhdHVyZQpAQCAtMCwwICsxLDkgQEAKK0ZlYXR1cmU6IEJ1eSB0aGluZ3Mgd2l0
aCBhcHBsZQorCisgICAgU2NlbmFyaW86IEJ1eSBmcnVpdHMKKyAgICAgICAgR2l2ZW4gQSB3YWxs
ZXQgd2l0aCA1MAorCisgICAgICAgIFdoZW4gSSBidXkgc29tZSBhcHBsZXMgZm9yIDEKKyAgICAg
ICAgQW5kIEkgYnV5IHNvbWUgYmFuYW5hcyBmb3IgMgorCisgICAgICAgIFRoZW4gSSBoYXZlIDQ3
IGxlZnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlv
bi9iZGRfd2FsbGV0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9u
L2JkZF93YWxsZXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4z
NTkyN2VhNTg3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdp
bnNfaW50ZWdyYXRpb24vYmRkX3dhbGxldC5weQpAQCAtMCwwICsxLDM5IEBACitmcm9tIHB5dGVz
dF9iZGQgaW1wb3J0IGdpdmVuCitmcm9tIHB5dGVzdF9iZGQgaW1wb3J0IHNjZW5hcmlvCitmcm9t
IHB5dGVzdF9iZGQgaW1wb3J0IHRoZW4KK2Zyb20gcHl0ZXN0X2JkZCBpbXBvcnQgd2hlbgorCitp
bXBvcnQgcHl0ZXN0CisKKworQHNjZW5hcmlvKCJiZGRfd2FsbGV0LmZlYXR1cmUiLCAiQnV5IGZy
dWl0cyIpCitkZWYgdGVzdF9wdWJsaXNoKCk6CisgICAgcGFzcworCisKK0BweXRlc3QuZml4dHVy
ZQorZGVmIHdhbGxldCgpOgorICAgIGNsYXNzIFdhbGxldDoKKyAgICAgICAgYW1vdW50ID0gMAor
CisgICAgcmV0dXJuIFdhbGxldCgpCisKKworQGdpdmVuKCJBIHdhbGxldCB3aXRoIDUwIikKK2Rl
ZiBmaWxsX3dhbGxldCh3YWxsZXQpOgorICAgIHdhbGxldC5hbW91bnQgPSA1MAorCisKK0B3aGVu
KCJJIGJ1eSBzb21lIGFwcGxlcyBmb3IgMSIpCitkZWYgYnV5X2FwcGxlcyh3YWxsZXQpOgorICAg
IHdhbGxldC5hbW91bnQgLT0gMQorCisKK0B3aGVuKCJJIGJ1eSBzb21lIGJhbmFuYXMgZm9yIDIi
KQorZGVmIGJ1eV9iYW5hbmFzKHdhbGxldCk6CisgICAgd2FsbGV0LmFtb3VudCAtPSAyCisKKwor
QHRoZW4oIkkgaGF2ZSA0NyBsZWZ0IikKK2RlZiBjaGVjayh3YWxsZXQpOgorICAgIGFzc2VydCB3
YWxsZXQuYW1vdW50ID09IDQ3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdp
bnNfaW50ZWdyYXRpb24vZGphbmdvX3NldHRpbmdzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9w
bHVnaW5zX2ludGVncmF0aW9uL2RqYW5nb19zZXR0aW5ncy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3MTVmNDc2NTMxNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9kamFuZ29fc2V0dGluZ3MucHkK
QEAgLTAsMCArMSBAQAorU0VDUkVUX0tFWSA9ICJteXNlY3JldCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3QuaW5pIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdC5pbmkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNmM3N2IwZGVlNTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0LmluaQpAQCAt
MCwwICsxLDQgQEAKK1tweXRlc3RdCithZGRvcHRzID0gLS1zdHJpY3QtbWFya2VycworZmlsdGVy
d2FybmluZ3MgPQorICAgIGVycm9yOjpweXRlc3QuUHl0ZXN0V2FybmluZwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0aW9uL3B5dGVzdF9hbnlpb19pbnRl
Z3JhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRl
c3RfYW55aW9faW50ZWdyYXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi42NWMyZjU5MzY2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0X2FueWlvX2ludGVncmF0aW9uLnB5CkBAIC0w
LDAgKzEsOCBAQAoraW1wb3J0IGFueWlvCisKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0Lm1h
cmsuYW55aW8KK2FzeW5jIGRlZiB0ZXN0X3NsZWVwKCk6CisgICAgYXdhaXQgYW55aW8uc2xlZXAo
MCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9w
eXRlc3RfYXN5bmNpb19pbnRlZ3JhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2lu
c19pbnRlZ3JhdGlvbi9weXRlc3RfYXN5bmNpb19pbnRlZ3JhdGlvbi5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVkMmEzZmFjY2ZjYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfYXN5bmNp
b19pbnRlZ3JhdGlvbi5weQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBhc3luY2lvCisKK2ltcG9y
dCBweXRlc3QKKworCitAcHl0ZXN0Lm1hcmsuYXN5bmNpbworYXN5bmMgZGVmIHRlc3Rfc2xlZXAo
KToKKyAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0X21vY2tfaW50ZWdyYXRpb24ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0X21vY2tfaW50ZWdy
YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NDA0Njlk
MDBmYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50
ZWdyYXRpb24vcHl0ZXN0X21vY2tfaW50ZWdyYXRpb24ucHkKQEAgLTAsMCArMSwyIEBACitkZWYg
dGVzdF9tb2NrZXIobW9ja2VyKToKKyAgICBtb2NrZXIuTWFnaWNNb2NrKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfdHJpb19pbnRl
Z3JhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRl
c3RfdHJpb19pbnRlZ3JhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjE5OWY3ODUwYmM0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9weXRlc3RfdHJpb19pbnRlZ3JhdGlvbi5weQpAQCAtMCww
ICsxLDggQEAKK2ltcG9ydCB0cmlvCisKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0Lm1hcmsu
dHJpbworYXN5bmMgZGVmIHRlc3Rfc2xlZXAoKToKKyAgICBhd2FpdCB0cmlvLnNsZWVwKDApCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0
X3R3aXN0ZWRfaW50ZWdyYXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50
ZWdyYXRpb24vcHl0ZXN0X3R3aXN0ZWRfaW50ZWdyYXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NDc0OGQwMzZlNWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vcHl0ZXN0X3R3aXN0ZWRfaW50
ZWdyYXRpb24ucHkKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IHB5dGVzdF90d2lzdGVkCitmcm9t
IHR3aXN0ZWQuaW50ZXJuZXQudGFzayBpbXBvcnQgZGVmZXJMYXRlcgorCisKK2RlZiBzbGVlcCgp
OgorICAgIGltcG9ydCB0d2lzdGVkLmludGVybmV0LnJlYWN0b3IKKworICAgIHJldHVybiBkZWZl
ckxhdGVyKGNsb2NrPXR3aXN0ZWQuaW50ZXJuZXQucmVhY3RvciwgZGVsYXk9MCkKKworCitAcHl0
ZXN0X3R3aXN0ZWQuaW5saW5lQ2FsbGJhY2tzCitkZWYgdGVzdF9pbmxpbmVDYWxsYmFja3MoKToK
KyAgICB5aWVsZCBzbGVlcCgpCisKKworQHB5dGVzdF90d2lzdGVkLmVuc3VyZURlZmVycmVkCith
c3luYyBkZWYgdGVzdF9pbmxpbmVDYWxsYmFja3NfYXN5bmMoKToKKyAgICBhd2FpdCBzbGVlcCgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3BsdWdpbnNfaW50ZWdyYXRpb24vc2lt
cGxlX2ludGVncmF0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9wbHVnaW5zX2ludGVncmF0
aW9uL3NpbXBsZV9pbnRlZ3JhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjIwYjJmYzRiNWJiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlvbi9zaW1wbGVfaW50ZWdyYXRpb24ucHkKQEAgLTAsMCAr
MSwxMCBAQAoraW1wb3J0IHB5dGVzdAorCisKK2RlZiB0ZXN0X2ZvbygpOgorICAgIGFzc2VydCBU
cnVlCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpIiwgcmFuZ2UoMykpCitkZWYgdGVz
dF9iYXIoaSk6CisgICAgYXNzZXJ0IFRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvcHl0aG9uL2FwcHJveC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2FwcHJveC5w
eQppbmRleCA5ZTI1ZmViMGI0ZDYuLjE5NDQyM2RjM2IwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9weXRob24vYXBwcm94LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0
aG9uL2FwcHJveC5weQpAQCAtMSw2NiArMSw5MiBAQAotIyBlbmNvZGluZzogdXRmLTgKIGltcG9y
dCBvcGVyYXRvcgotaW1wb3J0IHN5cwotaW1wb3J0IHB5dGVzdAotaW1wb3J0IGRvY3Rlc3QKLQot
ZnJvbSBweXRlc3QgaW1wb3J0IGFwcHJveAotZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIG5lCiBm
cm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlv
bgorZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IG5lCitmcm9t
IHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworaW1wb3J0IHB5dGVzdAorZnJvbSBweXRlc3QgaW1w
b3J0IGFwcHJveAogCiBpbmYsIG5hbiA9IGZsb2F0KCJpbmYiKSwgZmxvYXQoIm5hbiIpCiAKIAot
Y2xhc3MgTXlEb2NUZXN0UnVubmVyKGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcik6CitAcHl0ZXN0LmZp
eHR1cmUKK2RlZiBtb2NrZWRfZG9jdGVzdF9ydW5uZXIobW9ua2V5cGF0Y2gpOgorICAgIGltcG9y
dCBkb2N0ZXN0CisKKyAgICBjbGFzcyBNb2NrZWRQZGI6CisgICAgICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBvdXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBzZXRfdHJhY2Uoc2Vs
Zik6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJub3QgdXNlZCIpCisK
KyAgICAgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRl
ZiBzZXRfY29udGludWUoc2VsZik6CisgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZik6Ci0gICAgICAgIGRvY3Rlc3QuRG9jVGVzdFJ1bm5lci5fX2luaXRfXyhzZWxmKQor
ICAgIG1vbmtleXBhdGNoLnNldGF0dHIoImRvY3Rlc3QuX091dHB1dFJlZGlyZWN0aW5nUGRiIiwg
TW9ja2VkUGRiKQogCi0gICAgZGVmIHJlcG9ydF9mYWlsdXJlKHNlbGYsIG91dCwgdGVzdCwgZXhh
bXBsZSwgZ290KToKLSAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCi0gICAgICAgICAgICAi
J3t9JyBldmFsdWF0ZXMgdG8gJ3t9Jywgbm90ICd7fSciLmZvcm1hdCgKLSAgICAgICAgICAgICAg
ICBleGFtcGxlLnNvdXJjZS5zdHJpcCgpLCBnb3Quc3RyaXAoKSwgZXhhbXBsZS53YW50LnN0cmlw
KCkKKyAgICBjbGFzcyBNeURvY1Rlc3RSdW5uZXIoZG9jdGVzdC5Eb2NUZXN0UnVubmVyKToKKyAg
ICAgICAgZGVmIHJlcG9ydF9mYWlsdXJlKHNlbGYsIG91dCwgdGVzdCwgZXhhbXBsZSwgZ290KToK
KyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICIne30n
IGV2YWx1YXRlcyB0byAne30nLCBub3QgJ3t9JyIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICBleGFtcGxlLnNvdXJjZS5zdHJpcCgpLCBnb3Quc3RyaXAoKSwgZXhhbXBsZS53YW50LnN0cmlw
KCkKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCi0gICAgICAgICkKIAorICAgIHJl
dHVybiBNeURvY1Rlc3RSdW5uZXIoKQogCi1jbGFzcyBUZXN0QXBwcm94KG9iamVjdCk6CiAKK2Ns
YXNzIFRlc3RBcHByb3g6CiAgICAgZGVmIHRlc3RfcmVwcl9zdHJpbmcoc2VsZik6Ci0gICAgICAg
IHBsdXNfbWludXMgPSB1Ilx1MDBiMSIgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+IDIgZWxzZSB1
IistIgotICAgICAgICB0b2wxLCB0b2wyLCBpbmZyID0gIjEuMGUtMDYiLCAiMi4wZS0wNiIsICJp
bmYiCi0gICAgICAgIGFzc2VydCByZXByKGFwcHJveCgxLjApKSA9PSAiMS4wIHtwbX0ge3RvbDF9
Ii5mb3JtYXQocG09cGx1c19taW51cywgdG9sMT10b2wxKQotICAgICAgICBhc3NlcnQgKAotICAg
ICAgICAgICAgcmVwcihhcHByb3goWzEuMCwgMi4wXSkpCi0gICAgICAgICAgICA9PSAiYXBwcm94
KFsxLjAge3BtfSB7dG9sMX0sIDIuMCB7cG19IHt0b2wyfV0pIi5mb3JtYXQoCi0gICAgICAgICAg
ICAgICAgcG09cGx1c19taW51cywgdG9sMT10b2wxLCB0b2wyPXRvbDIKLSAgICAgICAgICAgICkK
LSAgICAgICAgKQotICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgcmVwcihhcHByb3goKDEu
MCwgMi4wKSkpCi0gICAgICAgICAgICA9PSAiYXBwcm94KCgxLjAge3BtfSB7dG9sMX0sIDIuMCB7
cG19IHt0b2wyfSkpIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgcG09cGx1c19taW51cywgdG9s
MT10b2wxLCB0b2wyPXRvbDIKLSAgICAgICAgICAgICkKLSAgICAgICAgKQorICAgICAgICBhc3Nl
cnQgcmVwcihhcHByb3goMS4wKSkgPT0gIjEuMCDCsSAxLjBlLTA2IgorICAgICAgICBhc3NlcnQg
cmVwcihhcHByb3goWzEuMCwgMi4wXSkpID09ICJhcHByb3goWzEuMCDCsSAxLjBlLTA2LCAyLjAg
wrEgMi4wZS0wNl0pIgorICAgICAgICBhc3NlcnQgcmVwcihhcHByb3goKDEuMCwgMi4wKSkpID09
ICJhcHByb3goKDEuMCDCsSAxLjBlLTA2LCAyLjAgwrEgMi4wZS0wNikpIgogICAgICAgICBhc3Nl
cnQgcmVwcihhcHByb3goaW5mKSkgPT0gImluZiIKLSAgICAgICAgYXNzZXJ0IHJlcHIoYXBwcm94
KDEuMCwgcmVsPW5hbikpID09ICIxLjAge3BtfSA/Pz8iLmZvcm1hdChwbT1wbHVzX21pbnVzKQot
ICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgcmVwcihhcHByb3goMS4wLCByZWw9aW5mKSkK
LSAgICAgICAgICAgID09ICIxLjAge3BtfSB7aW5mcn0iLmZvcm1hdChwbT1wbHVzX21pbnVzLCBp
bmZyPWluZnIpCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHJlcHIoYXBwcm94KDEuMGosIHJl
bD1pbmYpKSA9PSAiMWoiCisgICAgICAgIGFzc2VydCByZXByKGFwcHJveCgxLjAsIHJlbD1uYW4p
KSA9PSAiMS4wIMKxID8/PyIKKyAgICAgICAgYXNzZXJ0IHJlcHIoYXBwcm94KDEuMCwgcmVsPWlu
ZikpID09ICIxLjAgwrEgaW5mIgogCiAgICAgICAgICMgRGljdGlvbmFyaWVzIGFyZW4ndCBvcmRl
cmVkLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGJvdGggb3JkZXJzLgogICAgICAgICBhc3NlcnQgcmVw
cihhcHByb3goeyJhIjogMS4wLCAiYiI6IDIuMH0pKSBpbiAoCi0gICAgICAgICAgICAiYXBwcm94
KHt7J2EnOiAxLjAge3BtfSB7dG9sMX0sICdiJzogMi4wIHtwbX0ge3RvbDJ9fX0pIi5mb3JtYXQo
Ci0gICAgICAgICAgICAgICAgcG09cGx1c19taW51cywgdG9sMT10b2wxLCB0b2wyPXRvbDIKLSAg
ICAgICAgICAgICksCi0gICAgICAgICAgICAiYXBwcm94KHt7J2InOiAyLjAge3BtfSB7dG9sMn0s
ICdhJzogMS4wIHtwbX0ge3RvbDF9fX0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgcG09cGx1
c19taW51cywgdG9sMT10b2wxLCB0b2wyPXRvbDIKLSAgICAgICAgICAgICksCisgICAgICAgICAg
ICAiYXBwcm94KHsnYSc6IDEuMCDCsSAxLjBlLTA2LCAnYic6IDIuMCDCsSAyLjBlLTA2fSkiLAor
ICAgICAgICAgICAgImFwcHJveCh7J2InOiAyLjAgwrEgMi4wZS0wNiwgJ2EnOiAxLjAgwrEgMS4w
ZS0wNn0pIiwKICAgICAgICAgKQogCisgICAgZGVmIHRlc3RfcmVwcl9jb21wbGV4X251bWJlcnMo
c2VsZik6CisgICAgICAgIGFzc2VydCByZXByKGFwcHJveChpbmYgKyAxaikpID09ICIoaW5mKzFq
KSIKKyAgICAgICAgYXNzZXJ0IHJlcHIoYXBwcm94KDEuMGosIHJlbD1pbmYpKSA9PSAiMWogwrEg
aW5mIgorCisgICAgICAgICMgY2FuJ3QgY29tcHV0ZSBhIHNlbnNpYmxlIHRvbGVyYW5jZQorICAg
ICAgICBhc3NlcnQgcmVwcihhcHByb3gobmFuICsgMWopKSA9PSAiKG5hbisxaikgwrEgPz8/Igor
CisgICAgICAgIGFzc2VydCByZXByKGFwcHJveCgxLjBqKSkgPT0gIjFqIMKxIDEuMGUtMDYg4oig
IMKxMTgwwrAiCisKKyAgICAgICAgIyByZWxhdGl2ZSB0b2xlcmFuY2UgaXMgc2NhbGVkIHRvIHwz
KzRqfCA9IDUKKyAgICAgICAgYXNzZXJ0IHJlcHIoYXBwcm94KDMgKyA0ICogMWopKSA9PSAiKDMr
NGopIMKxIDUuMGUtMDYg4oigIMKxMTgwwrAiCisKKyAgICAgICAgIyBhYnNvbHV0ZSB0b2xlcmFu
Y2UgaXMgbm90IHNjYWxlZAorICAgICAgICBhc3NlcnQgcmVwcihhcHByb3goMy4zICsgNC40ICog
MWosIGFicz0wLjAyKSkgPT0gIigzLjMrNC40aikgwrEgMi4wZS0wMiDiiKAgwrExODDCsCIKKwor
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInZhbHVlLCBleHBlY3RlZF9y
ZXByX3N0cmluZyIsCisgICAgICAgIFsKKyAgICAgICAgICAgICg1LjAsICJhcHByb3goNS4wIMKx
IDUuMGUtMDYpIiksCisgICAgICAgICAgICAoWzUuMF0sICJhcHByb3goWzUuMCDCsSA1LjBlLTA2
XSkiKSwKKyAgICAgICAgICAgIChbWzUuMF1dLCAiYXBwcm94KFtbNS4wIMKxIDUuMGUtMDZdXSki
KSwKKyAgICAgICAgICAgIChbWzUuMCwgNi4wXV0sICJhcHByb3goW1s1LjAgwrEgNS4wZS0wNiwg
Ni4wIMKxIDYuMGUtMDZdXSkiKSwKKyAgICAgICAgICAgIChbWzUuMF0sIFs2LjBdXSwgImFwcHJv
eChbWzUuMCDCsSA1LjBlLTA2XSwgWzYuMCDCsSA2LjBlLTA2XV0pIiksCisgICAgICAgIF0sCisg
ICAgKQorICAgIGRlZiB0ZXN0X3JlcHJfbmRfYXJyYXkoc2VsZiwgdmFsdWUsIGV4cGVjdGVkX3Jl
cHJfc3RyaW5nKToKKyAgICAgICAgIiIiTWFrZSBzdXJlIHRoYXQgYXJyYXlzIG9mIGFsbCBkaWZm
ZXJlbnQgZGltZW5zaW9ucyBhcmUgcmVwcidkIGNvcnJlY3RseS4iIiIKKyAgICAgICAgbnAgPSBw
eXRlc3QuaW1wb3J0b3Jza2lwKCJudW1weSIpCisgICAgICAgIG5wX2FycmF5ID0gbnAuYXJyYXko
dmFsdWUpCisgICAgICAgIGFzc2VydCByZXByKGFwcHJveChucF9hcnJheSkpID09IGV4cGVjdGVk
X3JlcHJfc3RyaW5nCisKICAgICBkZWYgdGVzdF9vcGVyYXRvcl9vdmVybG9hZGluZyhzZWxmKToK
ICAgICAgICAgYXNzZXJ0IDEgPT0gYXBwcm94KDEsIHJlbD0xZS02LCBhYnM9MWUtMTIpCiAgICAg
ICAgIGFzc2VydCBub3QgKDEgIT0gYXBwcm94KDEsIHJlbD0xZS02LCBhYnM9MWUtMTIpKQpAQCAt
OTYsMTggKzEyMiwyMiBAQCBjbGFzcyBUZXN0QXBwcm94KG9iamVjdCk6CiAgICAgICAgICAgICBh
c3NlcnQgYSA9PSBhcHByb3goeCwgcmVsPTVlLTEsIGFicz0wLjApCiAgICAgICAgICAgICBhc3Nl
cnQgYSAhPSBhcHByb3goeCwgcmVsPTVlLTIsIGFicz0wLjApCiAKLSAgICBkZWYgdGVzdF9uZWdh
dGl2ZV90b2xlcmFuY2Uoc2VsZik6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAg
ICAgICAoInJlbCIsICJhYnMiKSwKKyAgICAgICAgWworICAgICAgICAgICAgKC0xZTEwMCwgTm9u
ZSksCisgICAgICAgICAgICAoTm9uZSwgLTFlMTAwKSwKKyAgICAgICAgICAgICgxZTEwMCwgLTFl
MTAwKSwKKyAgICAgICAgICAgICgtMWUxMDAsIDFlMTAwKSwKKyAgICAgICAgICAgICgtMWUxMDAs
IC0xZTEwMCksCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X25lZ2F0aXZlX3RvbGVy
YW5jZSgKKyAgICAgICAgc2VsZiwgcmVsOiBPcHRpb25hbFtmbG9hdF0sIGFiczogT3B0aW9uYWxb
ZmxvYXRdCisgICAgKSAtPiBOb25lOgogICAgICAgICAjIE5lZ2F0aXZlIHRvbGVyYW5jZXMgYXJl
IG5vdCBhbGxvd2VkLgotICAgICAgICBpbGxlZ2FsX2t3YXJncyA9IFsKLSAgICAgICAgICAgIGRp
Y3QocmVsPS0xZTEwMCksCi0gICAgICAgICAgICBkaWN0KGFicz0tMWUxMDApLAotICAgICAgICAg
ICAgZGljdChyZWw9MWUxMDAsIGFicz0tMWUxMDApLAotICAgICAgICAgICAgZGljdChyZWw9LTFl
MTAwLCBhYnM9MWUxMDApLAotICAgICAgICAgICAgZGljdChyZWw9LTFlMTAwLCBhYnM9LTFlMTAw
KSwKLSAgICAgICAgXQotICAgICAgICBmb3Iga3dhcmdzIGluIGlsbGVnYWxfa3dhcmdzOgotICAg
ICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAg
IDEuMSA9PSBhcHByb3goMSwgKiprd2FyZ3MpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhW
YWx1ZUVycm9yKToKKyAgICAgICAgICAgIDEuMSA9PSBhcHByb3goMSwgcmVsLCBhYnMpCiAKICAg
ICBkZWYgdGVzdF9pbmZfdG9sZXJhbmNlKHNlbGYpOgogICAgICAgICAjIEV2ZXJ5dGhpbmcgc2hv
dWxkIGJlIGVxdWFsIGlmIHRoZSB0b2xlcmFuY2UgaXMgaW5maW5pdGUuCkBAIC0xMTgsMTkgKzE0
OCwyMSBAQCBjbGFzcyBUZXN0QXBwcm94KG9iamVjdCk6CiAgICAgICAgICAgICBhc3NlcnQgYSA9
PSBhcHByb3goeCwgcmVsPTAuMCwgYWJzPWluZikKICAgICAgICAgICAgIGFzc2VydCBhID09IGFw
cHJveCh4LCByZWw9aW5mLCBhYnM9aW5mKQogCi0gICAgZGVmIHRlc3RfaW5mX3RvbGVyYW5jZV9l
eHBlY3RpbmdfemVybyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbmZfdG9sZXJhbmNlX2V4cGVjdGlu
Z196ZXJvKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICMgSWYgdGhlIHJlbGF0aXZlIHRvbGVyYW5j
ZSBpcyB6ZXJvIGJ1dCB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgaW5maW5pdGUsCiAgICAgICAgICMg
dGhlIGFjdHVhbCB0b2xlcmFuY2UgaXMgYSBOYU4sIHdoaWNoIHNob3VsZCBiZSBhbiBlcnJvci4K
LSAgICAgICAgaWxsZWdhbF9rd2FyZ3MgPSBbZGljdChyZWw9aW5mLCBhYnM9MC4wKSwgZGljdChy
ZWw9aW5mLCBhYnM9aW5mKV0KLSAgICAgICAgZm9yIGt3YXJncyBpbiBpbGxlZ2FsX2t3YXJnczoK
LSAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAg
ICAgICAxID09IGFwcHJveCgwLCAqKmt3YXJncykKLQotICAgIGRlZiB0ZXN0X25hbl90b2xlcmFu
Y2Uoc2VsZik6Ci0gICAgICAgIGlsbGVnYWxfa3dhcmdzID0gW2RpY3QocmVsPW5hbiksIGRpY3Qo
YWJzPW5hbiksIGRpY3QocmVsPW5hbiwgYWJzPW5hbildCi0gICAgICAgIGZvciBrd2FyZ3MgaW4g
aWxsZWdhbF9rd2FyZ3M6Ci0gICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJv
cik6Ci0gICAgICAgICAgICAgICAgMS4xID09IGFwcHJveCgxLCAqKmt3YXJncykKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgMSA9PSBhcHByb3go
MCwgcmVsPWluZiwgYWJzPTAuMCkKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJy
b3IpOgorICAgICAgICAgICAgMSA9PSBhcHByb3goMCwgcmVsPWluZiwgYWJzPWluZikKKworICAg
IGRlZiB0ZXN0X25hbl90b2xlcmFuY2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgMS4xID09IGFwcHJveCgxLCByZWw9
bmFuKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAg
ICAxLjEgPT0gYXBwcm94KDEsIGFicz1uYW4pCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhW
YWx1ZUVycm9yKToKKyAgICAgICAgICAgIDEuMSA9PSBhcHByb3goMSwgcmVsPW5hbiwgYWJzPW5h
bikKIAogICAgIGRlZiB0ZXN0X3JlYXNvbmFibGVfZGVmYXVsdHMoc2VsZik6CiAgICAgICAgICMg
V2hhdGV2ZXIgdGhlIGRlZmF1bHRzIGFyZSwgdGhleSBzaG91bGQgd29yayBmb3IgbnVtYmVycyBj
bG9zZSB0byAxCkBAIC0zMzIsNiArMzY0LDY4IEBAIGNsYXNzIFRlc3RBcHByb3gob2JqZWN0KToK
ICAgICAgICAgYXNzZXJ0IGFjdHVhbCA9PSBhcHByb3gobGlzdChleHBlY3RlZCksIHJlbD01ZS03
LCBhYnM9MCkKICAgICAgICAgYXNzZXJ0IGFjdHVhbCAhPSBhcHByb3gobGlzdChleHBlY3RlZCks
IHJlbD01ZS04LCBhYnM9MCkKIAorICAgIGRlZiB0ZXN0X251bXB5X3RvbGVyYW5jZV9hcmdzKHNl
bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCBudW1weSByZWwvYWJzIGFyZ3Mg
YXJlIGhhbmRsZWQgY29ycmVjdGx5CisgICAgICAgIGZvciBjb21wYXJpc29uIGFnYWluc3QgYW4g
bnAuYXJyYXkKKyAgICAgICAgQ2hlY2sgYm90aCBzaWRlcyBvZiB0aGUgb3BlcmF0b3IsIGhvcGVm
dWxseSBpdCBkb2Vzbid0IGltcGFjdCB0aGluZ3MuCisgICAgICAgIFRlc3QgYWxsIHBlcm11dGF0
aW9ucyBvZiB3aGVyZSB0aGUgYXBwcm94IGFuZCBucC5hcnJheSgpIGNhbiBzaG93IHVwCisgICAg
ICAgICIiIgorICAgICAgICBucCA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIm51bXB5IikKKyAgICAg
ICAgZXhwZWN0ZWQgPSAxMDAuMAorICAgICAgICBhY3R1YWwgPSA5OS4wCisgICAgICAgIGFic19k
aWZmID0gZXhwZWN0ZWQgLSBhY3R1YWwKKyAgICAgICAgcmVsX2RpZmYgPSAoZXhwZWN0ZWQgLSBh
Y3R1YWwpIC8gZXhwZWN0ZWQKKworICAgICAgICB0ZXN0cyA9IFsKKyAgICAgICAgICAgIChlcSwg
YWJzX2RpZmYsIDApLAorICAgICAgICAgICAgKGVxLCAwLCByZWxfZGlmZiksCisgICAgICAgICAg
ICAobmUsIDAsIHJlbF9kaWZmIC8gMi4wKSwgICMgcmVsIGRpZmYgZmFpbAorICAgICAgICAgICAg
KG5lLCBhYnNfZGlmZiAvIDIuMCwgMCksICAjIGFicyBkaWZmIGZhaWwKKyAgICAgICAgXQorCisg
ICAgICAgIGZvciBvcCwgX2FicywgX3JlbCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGFzc2VydCBv
cChucC5hcnJheShhY3R1YWwpLCBhcHByb3goZXhwZWN0ZWQsIGFicz1fYWJzLCByZWw9X3JlbCkp
ICAjIGEsIGIKKyAgICAgICAgICAgIGFzc2VydCBvcChhcHByb3goZXhwZWN0ZWQsIGFicz1fYWJz
LCByZWw9X3JlbCksIG5wLmFycmF5KGFjdHVhbCkpICAjIGIsIGEKKworICAgICAgICAgICAgYXNz
ZXJ0IG9wKGFjdHVhbCwgYXBwcm94KG5wLmFycmF5KGV4cGVjdGVkKSwgYWJzPV9hYnMsIHJlbD1f
cmVsKSkgICMgYSwgYgorICAgICAgICAgICAgYXNzZXJ0IG9wKGFwcHJveChucC5hcnJheShleHBl
Y3RlZCksIGFicz1fYWJzLCByZWw9X3JlbCksIGFjdHVhbCkgICMgYiwgYQorCisgICAgICAgICAg
ICBhc3NlcnQgb3AobnAuYXJyYXkoYWN0dWFsKSwgYXBwcm94KG5wLmFycmF5KGV4cGVjdGVkKSwg
YWJzPV9hYnMsIHJlbD1fcmVsKSkKKyAgICAgICAgICAgIGFzc2VydCBvcChhcHByb3gobnAuYXJy
YXkoZXhwZWN0ZWQpLCBhYnM9X2FicywgcmVsPV9yZWwpLCBucC5hcnJheShhY3R1YWwpKQorCisg
ICAgZGVmIHRlc3RfbnVtcHlfZXhwZWN0aW5nX25hbihzZWxmKToKKyAgICAgICAgbnAgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJudW1weSIpCisgICAgICAgIGV4YW1wbGVzID0gWworICAgICAgICAg
ICAgKGVxLCBuYW4sIG5hbiksCisgICAgICAgICAgICAoZXEsIC1uYW4sIC1uYW4pLAorICAgICAg
ICAgICAgKGVxLCBuYW4sIC1uYW4pLAorICAgICAgICAgICAgKG5lLCAwLjAsIG5hbiksCisgICAg
ICAgICAgICAobmUsIGluZiwgbmFuKSwKKyAgICAgICAgXQorICAgICAgICBmb3Igb3AsIGEsIHgg
aW4gZXhhbXBsZXM6CisgICAgICAgICAgICAjIE5vdGhpbmcgaXMgZXF1YWwgdG8gTmFOIGJ5IGRl
ZmF1bHQuCisgICAgICAgICAgICBhc3NlcnQgbnAuYXJyYXkoYSkgIT0gYXBwcm94KHgpCisgICAg
ICAgICAgICBhc3NlcnQgYSAhPSBhcHByb3gobnAuYXJyYXkoeCkpCisKKyAgICAgICAgICAgICMg
SWYgYGBuYW5fb2s9VHJ1ZWBgLCB0aGVuIE5hTiBpcyBlcXVhbCB0byBOYU4uCisgICAgICAgICAg
ICBhc3NlcnQgb3AobnAuYXJyYXkoYSksIGFwcHJveCh4LCBuYW5fb2s9VHJ1ZSkpCisgICAgICAg
ICAgICBhc3NlcnQgb3AoYSwgYXBwcm94KG5wLmFycmF5KHgpLCBuYW5fb2s9VHJ1ZSkpCisKKyAg
ICBkZWYgdGVzdF9udW1weV9leHBlY3RpbmdfaW5mKHNlbGYpOgorICAgICAgICBucCA9IHB5dGVz
dC5pbXBvcnRvcnNraXAoIm51bXB5IikKKyAgICAgICAgZXhhbXBsZXMgPSBbCisgICAgICAgICAg
ICAoZXEsIGluZiwgaW5mKSwKKyAgICAgICAgICAgIChlcSwgLWluZiwgLWluZiksCisgICAgICAg
ICAgICAobmUsIGluZiwgLWluZiksCisgICAgICAgICAgICAobmUsIDAuMCwgaW5mKSwKKyAgICAg
ICAgICAgIChuZSwgbmFuLCBpbmYpLAorICAgICAgICBdCisgICAgICAgIGZvciBvcCwgYSwgeCBp
biBleGFtcGxlczoKKyAgICAgICAgICAgIGFzc2VydCBvcChucC5hcnJheShhKSwgYXBwcm94KHgp
KQorICAgICAgICAgICAgYXNzZXJ0IG9wKGEsIGFwcHJveChucC5hcnJheSh4KSkpCisgICAgICAg
ICAgICBhc3NlcnQgb3AobnAuYXJyYXkoYSksIGFwcHJveChucC5hcnJheSh4KSkpCisKICAgICBk
ZWYgdGVzdF9udW1weV9hcnJheV93cm9uZ19zaGFwZShzZWxmKToKICAgICAgICAgbnAgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJudW1weSIpCiAKQEAgLTM0MSwxMyArNDM1LDE1IEBAIGNsYXNzIFRl
c3RBcHByb3gob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGExMiAhPSBhcHByb3goYTIxKQogICAg
ICAgICBhc3NlcnQgYTIxICE9IGFwcHJveChhMTIpCiAKLSAgICBkZWYgdGVzdF9kb2N0ZXN0cyhz
ZWxmKToKKyAgICBkZWYgdGVzdF9kb2N0ZXN0cyhzZWxmLCBtb2NrZWRfZG9jdGVzdF9ydW5uZXIp
IC0+IE5vbmU6CisgICAgICAgIGltcG9ydCBkb2N0ZXN0CisKICAgICAgICAgcGFyc2VyID0gZG9j
dGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgYXNzZXJ0IGFwcHJveC5fX2RvY19fIGlzIG5v
dCBOb25lCiAgICAgICAgIHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoCiAgICAgICAgICAgICBh
cHByb3guX19kb2NfXywgeyJhcHByb3giOiBhcHByb3h9LCBhcHByb3guX19uYW1lX18sIE5vbmUs
IE5vbmUKICAgICAgICAgKQotICAgICAgICBydW5uZXIgPSBNeURvY1Rlc3RSdW5uZXIoKQotICAg
ICAgICBydW5uZXIucnVuKHRlc3QpCisgICAgICAgIG1vY2tlZF9kb2N0ZXN0X3J1bm5lci5ydW4o
dGVzdCkKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcGx1c19taW51cyhzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgIiIiCkBAIC0zNjQsOSArNDYwLDI0IEBAIGNsYXNzIFRlc3RBcHByb3gob2JqZWN0
KToKICAgICAgICAgZXhwZWN0ZWQgPSAiNC4wZS0wNiIKICAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAg
ICAgICAgICBbIipBdCBpbmRleCAwIGRpZmY6IDMgIT0gNCAqIHt9Ii5mb3JtYXQoZXhwZWN0ZWQp
LCAiPSogMSBmYWlsZWQgaW4gKj0iXQorICAgICAgICAgICAgWyIqQXQgaW5kZXggMCBkaWZmOiAz
ICE9IDQgwrEge30iLmZvcm1hdChleHBlY3RlZCksICI9KiAxIGZhaWxlZCBpbiAqPSJdCiAgICAg
ICAgICkKIAorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgIngiLAorICAg
ICAgICBbCisgICAgICAgICAgICBweXRlc3QucGFyYW0oTm9uZSksCisgICAgICAgICAgICBweXRl
c3QucGFyYW0oInN0cmluZyIpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKFsic3RyaW5nIl0s
IGlkPSJuZXN0ZWQtc3RyIiksCisgICAgICAgICAgICBweXRlc3QucGFyYW0oW1sxXV0sIGlkPSJu
ZXN0ZWQtbGlzdCIpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKHsia2V5IjogInN0cmluZyJ9
LCBpZD0iZGljdC13aXRoLXN0cmluZyIpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKHsia2V5
IjogeyJrZXkiOiAxfX0sIGlkPSJuZXN0ZWQtZGljdCIpLAorICAgICAgICBdLAorICAgICkKKyAg
ICBkZWYgdGVzdF9leHBlY3RlZF92YWx1ZV90eXBlX2Vycm9yKHNlbGYsIHgpOgorICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGFwcHJveCh4KQorCiAg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAgICAgICAib3AiLAogICAgICAgICBbCkBA
IC0zNzcsOSArNDg4LDcgQEAgY2xhc3MgVGVzdEFwcHJveChvYmplY3QpOgogICAgICAgICBdLAog
ICAgICkKICAgICBkZWYgdGVzdF9jb21wYXJpc29uX29wZXJhdG9yX3R5cGVfZXJyb3Ioc2VsZiwg
b3ApOgotICAgICAgICAiIiIKLSAgICAgICAgcHl0ZXN0LmFwcHJveCBzaG91bGQgcmFpc2UgVHlw
ZUVycm9yIGZvciBvcGVyYXRvcnMgb3RoZXIgdGhhbiA9PSBhbmQgIT0gKCMyMDAzKS4KLSAgICAg
ICAgIiIiCisgICAgICAgICIiInB5dGVzdC5hcHByb3ggc2hvdWxkIHJhaXNlIFR5cGVFcnJvciBm
b3Igb3BlcmF0b3JzIG90aGVyIHRoYW4gPT0gYW5kICE9ICgjMjAwMykuIiIiCiAgICAgICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgb3AoMSwgYXBwcm94KDEs
IHJlbD0xZS02LCBhYnM9MWUtMTIpKQogCkBAIC00MDQsMyArNTEzLDE0IEBAIGNsYXNzIFRlc3RB
cHByb3gob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGFjdHVhbCAhPSBhcHByb3goZXhwZWN0ZWQs
IHJlbD01ZS04LCBhYnM9MCkKICAgICAgICAgYXNzZXJ0IGFwcHJveChleHBlY3RlZCwgcmVsPTVl
LTcsIGFicz0wKSA9PSBhY3R1YWwKICAgICAgICAgYXNzZXJ0IGFwcHJveChleHBlY3RlZCwgcmVs
PTVlLTgsIGFicz0wKSAhPSBhY3R1YWwKKworICAgIGRlZiB0ZXN0X2dlbmVyaWNfc2l6ZWRfaXRl
cmFibGVfb2JqZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBNeVNpemVkSXRlcmFibGU6CisgICAg
ICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIo
WzEsIDIsIDMsIDRdKQorCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gNAorCisgICAgICAgIGV4cGVjdGVkID0gTXlTaXplZEl0ZXJhYmxlKCkK
KyAgICAgICAgYXNzZXJ0IFsxLCAyLCAzLCA0XSA9PSBhcHByb3goZXhwZWN0ZWQpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9jb2xsZWN0LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9weXRob24vY29sbGVjdC5weQppbmRleCA3MjQ1MDRiMWFmNzAuLjAxMjk0MDM5ODYw
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vY29sbGVjdC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9jb2xsZWN0LnB5CkBAIC0xLDIwICsxLDE2IEBA
Ci0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1mcm9tIHRl
eHR3cmFwIGltcG9ydCBkZWRlbnQKK2ltcG9ydCB0ZXh0d3JhcAorZnJvbSB0eXBpbmcgaW1wb3J0
IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKIAogaW1wb3J0IF9weXRlc3QuX2NvZGUKIGlt
cG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX05PVEVTVFNDT0xMRUNU
RUQKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCiBmcm9tIF9weXRlc3Qubm9k
ZXMgaW1wb3J0IENvbGxlY3RvcgorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGly
CiAKLWlnbm9yZV9wYXJhbWV0cml6ZWRfbWFya3MgPSBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5n
cygKLSAgICAiaWdub3JlOkFwcGx5aW5nIG1hcmtzIGRpcmVjdGx5IHRvIHBhcmFtZXRlcnMiCi0p
Ci0KLQotY2xhc3MgVGVzdE1vZHVsZShvYmplY3QpOgogCitjbGFzcyBUZXN0TW9kdWxlOgogICAg
IGRlZiB0ZXN0X2ZhaWxpbmdfaW1wb3J0KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBtb2Rjb2wg
PSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgiaW1wb3J0IGFsa3NkamFsc2tkamFsa2phbHMiKQogICAg
ICAgICBweXRlc3QucmFpc2VzKENvbGxlY3Rvci5Db2xsZWN0RXJyb3IsIG1vZGNvbC5jb2xsZWN0
KQpAQCAtMzksOCArMzUsNiBAQCBjbGFzcyBUZXN0TW9kdWxlKG9iamVjdCk6CiAgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X2ltcG9ydF9wcmVwZW5kX2FwcGVuZChzZWxmLCB0ZXN0ZGlyLCBtb25r
ZXlwYXRjaCk6Ci0gICAgICAgIHN5c3BhdGggPSBsaXN0KHN5cy5wYXRoKQotICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHN5cywgInBhdGgiLCBzeXNwYXRoKQogICAgICAgICByb290MSA9IHRl
c3RkaXIubWtkaXIoInJvb3QxIikKICAgICAgICAgcm9vdDIgPSB0ZXN0ZGlyLm1rZGlyKCJyb290
MiIpCiAgICAgICAgIHJvb3QxLmVuc3VyZSgieDQ1Ni5weSIpCkBAIC00OCwxMyArNDIsMTQgQEAg
Y2xhc3MgVGVzdE1vZHVsZShvYmplY3QpOgogICAgICAgICBwID0gcm9vdDIuam9pbigidGVzdF94
NDU2LnB5IikKICAgICAgICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5kKHN0cihyb290MSkp
CiAgICAgICAgIHAud3JpdGUoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0
d3JhcC5kZWRlbnQoCiAgICAgICAgICAgICAgICAgIiIiXAotICAgICAgICAgICAgaW1wb3J0IHg0
NTYKLSAgICAgICAgICAgIGRlZiB0ZXN0KCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHg0NTYu
X19maWxlX18uc3RhcnRzd2l0aCglcikKLSAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgJSBz
dHIocm9vdDIpCisgICAgICAgICAgICAgICAgaW1wb3J0IHg0NTYKKyAgICAgICAgICAgICAgICBk
ZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgeDQ1Ni5fX2ZpbGVfXy5zdGFy
dHN3aXRoKHshcn0pCisgICAgICAgICAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAg
ICAgICAgc3RyKHJvb3QyKQorICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAgICAg
ICAgKQogICAgICAgICB3aXRoIHJvb3QyLmFzX2N3ZCgpOgpAQCAtNzUsNyArNzAsNyBAQCBjbGFz
cyBUZXN0TW9kdWxlKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfaW52YWxpZF90ZXN0X21vZHVsZV9u
YW1lKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBhID0gdGVzdGRpci5ta2RpcigiYSIpCiAgICAg
ICAgIGEuZW5zdXJlKCJ0ZXN0X29uZS5wYXJ0MS5weSIpCi0gICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItcnciKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKICAg
ICAgICAgICAgICAgICAiSW1wb3J0RXJyb3Igd2hpbGUgaW1wb3J0aW5nIHRlc3QgbW9kdWxlKnRl
c3Rfb25lLnBhcnQxKiIsCkBAIC0xMTMsMjIgKzEwOCwxNiBAQCBjbGFzcyBUZXN0TW9kdWxlKG9i
amVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDIKIAogICAgICAgICBzdGRvdXQg
PSByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgICAgIGZvciBuYW1lIGluICgiX3B5dGVzdCIsIG9z
LnBhdGguam9pbigicHkiLCAiX3BhdGgiKSk6Ci0gICAgICAgICAgICBpZiB2ZXJib3NlID09IDI6
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5hbWUgaW4gc3Rkb3V0Ci0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIGFzc2VydCBuYW1lIG5vdCBpbiBzdGRvdXQKKyAgICAgICAgaWYg
dmVyYm9zZSA9PSAyOgorICAgICAgICAgICAgYXNzZXJ0ICJfcHl0ZXN0IiBpbiBzdGRvdXQKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCAiX3B5dGVzdCIgbm90IGluIHN0ZG91dAog
CiAgICAgZGVmIHRlc3Rfc2hvd190cmFjZWJhY2tfaW1wb3J0X2Vycm9yX3VuaWNvZGUoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgICIiIkNoZWNrIHRlc3QgbW9kdWxlcyBjb2xsZWN0ZWQgd2hpY2gg
cmFpc2UgSW1wb3J0RXJyb3Igd2l0aCB1bmljb2RlIG1lc3NhZ2VzCiAgICAgICAgIGFyZSBoYW5k
bGVkIHByb3Blcmx5ICgjMjMzNikuCiAgICAgICAgICIiIgotICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCi0gICAgICAgICAgICB1IiIiCi0gICAgICAgICAgICAjIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IodSdTb21ldGhpbmcgYmFkIGhhcHBl
bmVkIOKYuicpCi0gICAgICAgICIiIgotICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgicmFpc2UgSW1wb3J0RXJyb3IoJ1NvbWV0aGluZyBiYWQgaGFwcGVuZWQg4pi6JykiKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKQEAgLTE0MCw4ICsxMjksNyBAQCBjbGFz
cyBUZXN0TW9kdWxlKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDIKIAog
Ci1jbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLQorY2xhc3MgVGVzdENsYXNzOgogICAgIGRlZiB0
ZXN0X2NsYXNzX3dpdGhfaW5pdF93YXJuaW5nKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTE1MCwxMCArMTM4LDI3IEBAIGNs
YXNzIFRlc3RDbGFzcyhvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcnci
KQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAiKmNh
bm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJ1Rlc3RDbGFzczEnIGJlY2F1c2UgaXQgaGFzIGEgX19p
bml0X18gY29uc3RydWN0b3IiCisgICAgICAgICAgICAgICAgIipjYW5ub3QgY29sbGVjdCB0ZXN0
IGNsYXNzICdUZXN0Q2xhc3MxJyBiZWNhdXNlIGl0IGhhcyAiCisgICAgICAgICAgICAgICAgImEg
X19pbml0X18gY29uc3RydWN0b3IgKGZyb206IHRlc3RfY2xhc3Nfd2l0aF9pbml0X3dhcm5pbmcu
cHkpIgorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jbGFzc193aXRo
X25ld193YXJuaW5nKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzczEob2JqZWN0KToK
KyAgICAgICAgICAgICAgICBkZWYgX19uZXdfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAiKmNhbm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJ1Rlc3RD
bGFzczEnIGJlY2F1c2UgaXQgaGFzICIKKyAgICAgICAgICAgICAgICAiYSBfX25ld19fIGNvbnN0
cnVjdG9yIChmcm9tOiB0ZXN0X2NsYXNzX3dpdGhfbmV3X3dhcm5pbmcucHkpIgogICAgICAgICAg
ICAgXQogICAgICAgICApCiAKQEAgLTIyNiw3ICsyMzEsNyBAQCBjbGFzcyBUZXN0Q2xhc3Mob2Jq
ZWN0KToKICAgICAgICAgICAgIFRlc3RDYXNlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnVGVz
dENhc2UnLCBbJ2EnXSkKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi1ydyIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAg
IipjYW5ub3QgY29sbGVjdCB0ZXN0IGNsYXNzICdUZXN0Q2FzZScgIgogICAgICAgICAgICAgImJl
Y2F1c2UgaXQgaGFzIGEgX19uZXdfXyBjb25zdHJ1Y3RvcioiCkBAIC0yNDIsMjI5ICsyNDcsMTcg
QEAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0KLQotY2xhc3MgVGVzdEdlbmVyYXRvcihvYmpl
Y3QpOgotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZV9mdW5jdGlvbnMoc2VsZiwgdGVzdGRpcik6
Ci0gICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKAotICAgICAgICAgICAgIiIi
Ci0gICAgICAgICAgICBkZWYgZnVuYzEoYXJnLCBhcmcyKToKLSAgICAgICAgICAgICAgICBhc3Nl
cnQgYXJnID09IGFyZzIKLQotICAgICAgICAgICAgZGVmIHRlc3RfZ2VuKCk6Ci0gICAgICAgICAg
ICAgICAgeWllbGQgZnVuYzEsIDE3LCAzKjUKLSAgICAgICAgICAgICAgICB5aWVsZCBmdW5jMSwg
NDIsIDYqNwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjb2xpdGVtcyA9IG1vZGNv
bC5jb2xsZWN0KCkKLSAgICAgICAgYXNzZXJ0IGxlbihjb2xpdGVtcykgPT0gMQotICAgICAgICBn
ZW5jb2wgPSBjb2xpdGVtc1swXQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShnZW5jb2wsIHB5
dGVzdC5HZW5lcmF0b3IpCi0gICAgICAgIGdlbmNvbGl0ZW1zID0gZ2VuY29sLmNvbGxlY3QoKQot
ICAgICAgICBhc3NlcnQgbGVuKGdlbmNvbGl0ZW1zKSA9PSAyCi0gICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKGdlbmNvbGl0ZW1zWzBdLCBweXRlc3QuRnVuY3Rpb24pCi0gICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKGdlbmNvbGl0ZW1zWzFdLCBweXRlc3QuRnVuY3Rpb24pCi0gICAgICAgIGFzc2Vy
dCBnZW5jb2xpdGVtc1swXS5uYW1lID09ICJbMF0iCi0gICAgICAgIGFzc2VydCBnZW5jb2xpdGVt
c1swXS5vYmouX19uYW1lX18gPT0gImZ1bmMxIgotCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGl2ZV9t
ZXRob2RzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdldG1vZHVs
ZWNvbCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIGZ1bmMxKGFyZywgYXJnMik6
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGFyZyA9PSBhcmcyCi0gICAgICAgICAgICBjbGFzcyBU
ZXN0R2VuTWV0aG9kcyhvYmplY3QpOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2dlbihzZWxm
KToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgZnVuYzEsIDE3LCAzKjUKLSAgICAgICAgICAg
ICAgICAgICAgeWllbGQgZnVuYzEsIDQyLCA2KjcKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAg
ICAgICAgZ2VuY29sID0gbW9kY29sLmNvbGxlY3QoKVswXS5jb2xsZWN0KClbMF0uY29sbGVjdCgp
WzBdCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGdlbmNvbCwgcHl0ZXN0LkdlbmVyYXRvcikK
LSAgICAgICAgZ2VuY29saXRlbXMgPSBnZW5jb2wuY29sbGVjdCgpCi0gICAgICAgIGFzc2VydCBs
ZW4oZ2VuY29saXRlbXMpID09IDIKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29saXRl
bXNbMF0sIHB5dGVzdC5GdW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29s
aXRlbXNbMV0sIHB5dGVzdC5GdW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBd
Lm5hbWUgPT0gIlswXSIKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBdLm9iai5fX25hbWVf
XyA9PSAiZnVuYzEiCi0KLSAgICBkZWYgdGVzdF9nZW5lcmF0aXZlX2Z1bmN0aW9uc193aXRoX2V4
cGxpY2l0X25hbWVzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdl
dG1vZHVsZWNvbCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIGZ1bmMxKGFyZywg
YXJnMik6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGFyZyA9PSBhcmcyCi0KLSAgICAgICAgICAg
IGRlZiB0ZXN0X2dlbigpOgotICAgICAgICAgICAgICAgIHlpZWxkICJzZXZlbnRlZW4iLCBmdW5j
MSwgMTcsIDMqNQotICAgICAgICAgICAgICAgIHlpZWxkICJmb3J0eXR3byIsIGZ1bmMxLCA0Miwg
Nio3Ci0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGNvbGl0ZW1zID0gbW9kY29sLmNv
bGxlY3QoKQotICAgICAgICBhc3NlcnQgbGVuKGNvbGl0ZW1zKSA9PSAxCi0gICAgICAgIGdlbmNv
bCA9IGNvbGl0ZW1zWzBdCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGdlbmNvbCwgcHl0ZXN0
LkdlbmVyYXRvcikKLSAgICAgICAgZ2VuY29saXRlbXMgPSBnZW5jb2wuY29sbGVjdCgpCi0gICAg
ICAgIGFzc2VydCBsZW4oZ2VuY29saXRlbXMpID09IDIKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoZ2VuY29saXRlbXNbMF0sIHB5dGVzdC5GdW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UoZ2VuY29saXRlbXNbMV0sIHB5dGVzdC5GdW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGdl
bmNvbGl0ZW1zWzBdLm5hbWUgPT0gIlsnc2V2ZW50ZWVuJ10iCi0gICAgICAgIGFzc2VydCBnZW5j
b2xpdGVtc1swXS5vYmouX19uYW1lX18gPT0gImZ1bmMxIgotICAgICAgICBhc3NlcnQgZ2VuY29s
aXRlbXNbMV0ubmFtZSA9PSAiWydmb3J0eXR3byddIgotICAgICAgICBhc3NlcnQgZ2VuY29saXRl
bXNbMV0ub2JqLl9fbmFtZV9fID09ICJmdW5jMSIKLQotICAgIGRlZiB0ZXN0X2dlbmVyYXRpdmVf
ZnVuY3Rpb25zX3VuaXF1ZV9leHBsaWNpdF9uYW1lcyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAg
IyBnZW5lcmF0aXZlCi0gICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKAotICAg
ICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgZnVuYygpOiBwYXNzCi0gICAgICAgICAgICBk
ZWYgdGVzdF9nZW4oKToKLSAgICAgICAgICAgICAgICB5aWVsZCAibmFtZSIsIGZ1bmMKLSAgICAg
ICAgICAgICAgICB5aWVsZCAibmFtZSIsIGZ1bmMKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAg
ICAgICAgY29saXRlbXMgPSBtb2Rjb2wuY29sbGVjdCgpCi0gICAgICAgIGFzc2VydCBsZW4oY29s
aXRlbXMpID09IDEKLSAgICAgICAgZ2VuY29sID0gY29saXRlbXNbMF0KLSAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UoZ2VuY29sLCBweXRlc3QuR2VuZXJhdG9yKQotICAgICAgICBweXRlc3QucmFp
c2VzKFZhbHVlRXJyb3IsICJnZW5jb2wuY29sbGVjdCgpIikKLQotICAgIGRlZiB0ZXN0X2dlbmVy
YXRpdmVfbWV0aG9kc193aXRoX2V4cGxpY2l0X25hbWVzKHNlbGYsIHRlc3RkaXIpOgotICAgICAg
ICBtb2Rjb2wgPSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgKLSAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgZGVmIGZ1bmMxKGFyZywgYXJnMik6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGFyZyA9
PSBhcmcyCi0gICAgICAgICAgICBjbGFzcyBUZXN0R2VuTWV0aG9kcyhvYmplY3QpOgotICAgICAg
ICAgICAgICAgIGRlZiB0ZXN0X2dlbihzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQg
Im0xIiwgZnVuYzEsIDE3LCAzKjUKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgIm0yIiwgZnVu
YzEsIDQyLCA2KjcKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgZ2VuY29sID0gbW9k
Y29sLmNvbGxlY3QoKVswXS5jb2xsZWN0KClbMF0uY29sbGVjdCgpWzBdCi0gICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKGdlbmNvbCwgcHl0ZXN0LkdlbmVyYXRvcikKLSAgICAgICAgZ2VuY29saXRl
bXMgPSBnZW5jb2wuY29sbGVjdCgpCi0gICAgICAgIGFzc2VydCBsZW4oZ2VuY29saXRlbXMpID09
IDIKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29saXRlbXNbMF0sIHB5dGVzdC5GdW5j
dGlvbikKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ2VuY29saXRlbXNbMV0sIHB5dGVzdC5G
dW5jdGlvbikKLSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBdLm5hbWUgPT0gIlsnbTEnXSIK
LSAgICAgICAgYXNzZXJ0IGdlbmNvbGl0ZW1zWzBdLm9iai5fX25hbWVfXyA9PSAiZnVuYzEiCi0g
ICAgICAgIGFzc2VydCBnZW5jb2xpdGVtc1sxXS5uYW1lID09ICJbJ20yJ10iCi0gICAgICAgIGFz
c2VydCBnZW5jb2xpdGVtc1sxXS5vYmouX19uYW1lX18gPT0gImZ1bmMxIgotCi0gICAgZGVmIHRl
c3Rfb3JkZXJfb2ZfZXhlY3V0aW9uX2dlbmVyYXRvcl9zYW1lX2NvZGVsaW5lKHNlbGYsIHRlc3Rk
aXIsIHRtcGRpcik6Ci0gICAgICAgIG8gPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAg
ICAiIiIKLSAgICAgICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24K
LSAgICAgICAgICAgIGRlZiB0ZXN0X2dlbmVyYXRpdmVfb3JkZXJfb2ZfZXhlY3V0aW9uKCk6Ci0g
ICAgICAgICAgICAgICAgaW1wb3J0IHB5LCBweXRlc3QKLSAgICAgICAgICAgICAgICB0ZXN0X2xp
c3QgPSBbXQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xpc3QgPSBsaXN0KHJhbmdlKDYpKQot
Ci0gICAgICAgICAgICAgICAgZGVmIGxpc3RfYXBwZW5kKGl0ZW0pOgotICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2xpc3QuYXBwZW5kKGl0ZW0pCi0KLSAgICAgICAgICAgICAgICBkZWYgYXNzZXJ0
X29yZGVyX29mX2V4ZWN1dGlvbigpOgotICAgICAgICAgICAgICAgICAgICBwcmludCgnZXhwZWN0
ZWQgb3JkZXInLCBleHBlY3RlZF9saXN0KQotICAgICAgICAgICAgICAgICAgICBwcmludCgnYnV0
IGdvdCAgICAgICAnLCB0ZXN0X2xpc3QpCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydCB0ZXN0
X2xpc3QgPT0gZXhwZWN0ZWRfbGlzdAotCi0gICAgICAgICAgICAgICAgZm9yIGkgaW4gZXhwZWN0
ZWRfbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgbGlzdF9hcHBlbmQsIGkKLSAgICAg
ICAgICAgICAgICB5aWVsZCBhc3NlcnRfb3JkZXJfb2ZfZXhlY3V0aW9uCi0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bihvKQotICAgICAg
ICBwYXNzZWQsIHNraXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5jb3VudG91dGNvbWVzKCkKLSAgICAg
ICAgYXNzZXJ0IHBhc3NlZCA9PSA3Ci0gICAgICAgIGFzc2VydCBub3Qgc2tpcHBlZCBhbmQgbm90
IGZhaWxlZAotCi0gICAgZGVmIHRlc3Rfb3JkZXJfb2ZfZXhlY3V0aW9uX2dlbmVyYXRvcl9kaWZm
ZXJlbnRfY29kZWxpbmUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIG8gPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBv
cnQgcHJpbnRfZnVuY3Rpb24KLSAgICAgICAgICAgIGRlZiB0ZXN0X2dlbmVyYXRpdmVfdGVzdHNf
ZGlmZmVyZW50X2NvZGVsaW5lKCk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHB5LCBweXRlc3QK
LSAgICAgICAgICAgICAgICB0ZXN0X2xpc3QgPSBbXQotICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2xpc3QgPSBsaXN0KHJhbmdlKDMpKQotCi0gICAgICAgICAgICAgICAgZGVmIGxpc3RfYXBwZW5k
XzIoKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LmFwcGVuZCgyKQotCi0gICAgICAg
ICAgICAgICAgZGVmIGxpc3RfYXBwZW5kXzEoKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9s
aXN0LmFwcGVuZCgxKQotCi0gICAgICAgICAgICAgICAgZGVmIGxpc3RfYXBwZW5kXzAoKToKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LmFwcGVuZCgwKQotCi0gICAgICAgICAgICAgICAg
ZGVmIGFzc2VydF9vcmRlcl9vZl9leGVjdXRpb24oKToKLSAgICAgICAgICAgICAgICAgICAgcHJp
bnQoJ2V4cGVjdGVkIG9yZGVyJywgZXhwZWN0ZWRfbGlzdCkKLSAgICAgICAgICAgICAgICAgICAg
cHJpbnQoJ2J1dCBnb3QgICAgICAgJywgdGVzdF9saXN0KQotICAgICAgICAgICAgICAgICAgICBh
c3NlcnQgdGVzdF9saXN0ID09IGV4cGVjdGVkX2xpc3QKLQotICAgICAgICAgICAgICAgIHlpZWxk
IGxpc3RfYXBwZW5kXzAKLSAgICAgICAgICAgICAgICB5aWVsZCBsaXN0X2FwcGVuZF8xCi0gICAg
ICAgICAgICAgICAgeWllbGQgbGlzdF9hcHBlbmRfMgotICAgICAgICAgICAgICAgIHlpZWxkIGFz
c2VydF9vcmRlcl9vZl9leGVjdXRpb24KLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAg
cmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKG8pCi0gICAgICAgIHBhc3NlZCwgc2tpcHBlZCwg
ZmFpbGVkID0gcmVwcmVjLmNvdW50b3V0Y29tZXMoKQotICAgICAgICBhc3NlcnQgcGFzc2VkID09
IDQKLSAgICAgICAgYXNzZXJ0IG5vdCBza2lwcGVkIGFuZCBub3QgZmFpbGVkCi0KLSAgICBkZWYg
dGVzdF9zZXR1cHN0YXRlX2lzX3ByZXNlcnZlZF8xMzQoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAg
ICMgeWllbGQtYmFzZWQgdGVzdHMgYXJlIG1lc3N5IHdydCB0byBzZXR1cHN0YXRlIGJlY2F1c2UK
LSAgICAgICAgIyBkdXJpbmcgY29sbGVjdGlvbiB0aGV5IGFscmVhZHkgaW52b2tlIHNldHVwIGZ1
bmN0aW9ucwotICAgICAgICAjIGFuZCB0aGVuIGFnYWluIHdoZW4gdGhleSBhcmUgcnVuLiAgRm9y
IG5vdywgd2Ugd2FudCB0byBtYWtlIHN1cmUKLSAgICAgICAgIyB0aGF0IHRoZSBvbGQgMS4zLjQg
YmVoYXZpb3VyIGlzIHByZXNlcnZlZCBzdWNoIHRoYXQgYWxsCi0gICAgICAgICMgeWllbGRlZCBm
dW5jdGlvbnMgYWxsIHNoYXJlIHRoZSBzYW1lICJzZWxmIiBpbnN0YW5jZSB0aGF0Ci0gICAgICAg
ICMgaGFzIGJlZW4gdXNlZCBkdXJpbmcgY29sbGVjdGlvbi4KLSAgICAgICAgbyA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgc2V0dXBsaXN0ID0gW10K
LSAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAgICAgICAgIGRl
ZiBzZXR1cF9tZXRob2Qoc2VsZiwgZnVuYyk6Ci0gICAgICAgICAgICAgICAgICAgICNwcmludCAi
c2V0dXBfbWV0aG9kIiwgc2VsZiwgZnVuYwotICAgICAgICAgICAgICAgICAgICBzZXR1cGxpc3Qu
YXBwZW5kKHNlbGYpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdCA9IDQyCi0KLSAgICAg
ICAgICAgICAgICBkZWYgdGVhcmRvd25fbWV0aG9kKHNlbGYsIGZ1bmMpOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLmluaXQgPSBOb25lCi0KLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9mdW5j
MShzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAgICAgZGVm
IHRlc3RfZnVuYzIoc2VsZik6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuZnVuYzIK
LSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5mdW5jMgotCi0gICAgICAgICAgICAgICAg
ZGVmIGZ1bmMyKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5pbml0Ci0K
LSAgICAgICAgICAgIGRlZiB0ZXN0X3NldHVwbGlzdCgpOgotICAgICAgICAgICAgICAgICMgb25j
ZSBmb3IgdGVzdF9mdW5jMiBkdXJpbmcgY29sbGVjdGlvbgotICAgICAgICAgICAgICAgICMgb25j
ZSBmb3IgdGVzdF9mdW5jMSBkdXJpbmcgdGVzdCBydW4KLSAgICAgICAgICAgICAgICAjIG9uY2Ug
Zm9yIHRlc3RfZnVuYzIgZHVyaW5nIHRlc3QgcnVuCi0gICAgICAgICAgICAgICAgI3ByaW50IHNl
dHVwbGlzdAotICAgICAgICAgICAgICAgIGFzc2VydCBsZW4oc2V0dXBsaXN0KSA9PSAzLCBsZW4o
c2V0dXBsaXN0KQotICAgICAgICAgICAgICAgIGFzc2VydCBzZXR1cGxpc3RbMF0gPT0gc2V0dXBs
aXN0WzJdLCBzZXR1cGxpc3QKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2V0dXBsaXN0WzFdICE9
IHNldHVwbGlzdFsyXSwgc2V0dXBsaXN0Ci0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAg
IHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bihvLCAiLXYiKQotICAgICAgICBwYXNzZWQsIHNr
aXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5jb3VudG91dGNvbWVzKCkKLSAgICAgICAgYXNzZXJ0IHBh
c3NlZCA9PSA0Ci0gICAgICAgIGFzc2VydCBub3Qgc2tpcHBlZCBhbmQgbm90IGZhaWxlZAotCisg
ICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAog
Ci1jbGFzcyBUZXN0RnVuY3Rpb24ob2JqZWN0KToKIAorY2xhc3MgVGVzdEZ1bmN0aW9uOgogICAg
IGRlZiB0ZXN0X2dldG1vZHVsZWNvbGxlY3RvcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRl
bSA9IHRlc3RkaXIuZ2V0aXRlbSgiZGVmIHRlc3RfZnVuYygpOiBwYXNzIikKICAgICAgICAgbW9k
Y29sID0gaXRlbS5nZXRwYXJlbnQocHl0ZXN0Lk1vZHVsZSkKICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UobW9kY29sLCBweXRlc3QuTW9kdWxlKQogICAgICAgICBhc3NlcnQgaGFzYXR0cihtb2Rj
b2wub2JqLCAidGVzdF9mdW5jIikKIAorICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygi
ZGVmYXVsdCIpCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fYXNfb2JqZWN0X2luc3RhbmNlX2lnbm9y
ZWQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAg
ICAgICIiIgpAQCAtNDc1LDI5ICsyNjgsNDUgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uKG9iamVjdCk6
CiAgICAgICAgICAgICB0ZXN0X2EgPSBBKCkKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAg
ICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVwcmVjLmFzc2VydG91
dGNvbWUoKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAiY29sbGVjdGVkIDAgaXRlbXMiLAorICAgICAgICAgICAgICAgICIqdGVzdF9mdW5jdGlvbl9h
c19vYmplY3RfaW5zdGFuY2VfaWdub3JlZC5weToyOiAiCisgICAgICAgICAgICAgICAgIipjYW5u
b3QgY29sbGVjdCAndGVzdF9hJyBiZWNhdXNlIGl0IGlzIG5vdCBhIGZ1bmN0aW9uLiIsCisgICAg
ICAgICAgICBdCisgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VxdWFsaXR5KHNl
bGYsIHRlc3RkaXIsIHRtcGRpcik6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtYWtlX2Z1
bmN0aW9uKHRlc3RkaXIsICoqa3dhcmdzKToKICAgICAgICAgZnJvbSBfcHl0ZXN0LmZpeHR1cmVz
IGltcG9ydCBGaXh0dXJlTWFuYWdlcgogCiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vj
b25maWd1cmUoKQotICAgICAgICBzZXNzaW9uID0gdGVzdGRpci5TZXNzaW9uKGNvbmZpZykKKyAg
ICAgICAgc2Vzc2lvbiA9IHRlc3RkaXIuU2Vzc2lvbi5mcm9tX2NvbmZpZyhjb25maWcpCiAgICAg
ICAgIHNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyID0gRml4dHVyZU1hbmFnZXIoc2Vzc2lvbikKIAor
ICAgICAgICByZXR1cm4gcHl0ZXN0LkZ1bmN0aW9uLmZyb21fcGFyZW50KHBhcmVudD1zZXNzaW9u
LCAqKmt3YXJncykKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VxdWFsaXR5KHNlbGYsIHRlc3Rk
aXIpOgogICAgICAgICBkZWYgZnVuYzEoKToKICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBk
ZWYgZnVuYzIoKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBmMSA9IHB5dGVzdC5GdW5j
dGlvbigKLSAgICAgICAgICAgIG5hbWU9Im5hbWUiLCBwYXJlbnQ9c2Vzc2lvbiwgY29uZmlnPWNv
bmZpZywgYXJncz0oMSwpLCBjYWxsb2JqPWZ1bmMxCi0gICAgICAgICkKKyAgICAgICAgZjEgPSBz
ZWxmLm1ha2VfZnVuY3Rpb24odGVzdGRpciwgbmFtZT0ibmFtZSIsIGNhbGxvYmo9ZnVuYzEpCiAg
ICAgICAgIGFzc2VydCBmMSA9PSBmMQotICAgICAgICBmMiA9IHB5dGVzdC5GdW5jdGlvbihuYW1l
PSJuYW1lIiwgY29uZmlnPWNvbmZpZywgY2FsbG9iaj1mdW5jMiwgcGFyZW50PXNlc3Npb24pCisg
ICAgICAgIGYyID0gc2VsZi5tYWtlX2Z1bmN0aW9uKAorICAgICAgICAgICAgdGVzdGRpciwgbmFt
ZT0ibmFtZSIsIGNhbGxvYmo9ZnVuYzIsIG9yaWdpbmFsbmFtZT0iZm9vYmFyIgorICAgICAgICAp
CiAgICAgICAgIGFzc2VydCBmMSAhPSBmMgogCisgICAgZGVmIHRlc3RfcmVwcl9wcm9kdWNlc19h
Y3R1YWxfdGVzdF9pZChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgZiA9IHNlbGYubWFrZV9mdW5j
dGlvbigKKyAgICAgICAgICAgIHRlc3RkaXIsIG5hbWU9ciJ0ZXN0W1x4ZTVdIiwgY2FsbG9iaj1z
ZWxmLnRlc3RfcmVwcl9wcm9kdWNlc19hY3R1YWxfdGVzdF9pZAorICAgICAgICApCisgICAgICAg
IGFzc2VydCByZXByKGYpID09IHIiPEZ1bmN0aW9uIHRlc3RbXHhlNV0+IgorCiAgICAgZGVmIHRl
c3RfaXNzdWUxOTdfcGFyYW1ldHJpemVfZW1wdHlzZXQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtNjM0LDcgKzQ0MywzNyBA
QCBjbGFzcyBUZXN0RnVuY3Rpb24ob2JqZWN0KToKICAgICAgICAgcmVjID0gdGVzdGRpci5pbmxp
bmVfcnVuKCkKICAgICAgICAgcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBAaWdu
b3JlX3BhcmFtZXRyaXplZF9tYXJrcworICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX292ZXJyaWRl
c19pbmRpcmVjdF9kZXBlbmRlbmN5X2ZpeHR1cmUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIi
IlRlc3QgcGFyYW1ldHJpemF0aW9uIHdoZW4gcGFyYW1ldGVyIG92ZXJyaWRlcyBhIGZpeHR1cmUg
dGhhdCBhIHRlc3QgaW5kaXJlY3RseSBkZXBlbmRzIG9uIiIiCisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisg
ICAgICAgICAgICBmaXgzX2luc3RhbnRpYXRlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIEBweXRl
c3QuZml4dHVyZQorICAgICAgICAgICAgZGVmIGZpeDEoZml4Mik6CisgICAgICAgICAgICAgICBy
ZXR1cm4gZml4MiArICcxJworCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAg
ICAgIGRlZiBmaXgyKGZpeDMpOgorICAgICAgICAgICAgICAgcmV0dXJuIGZpeDMgKyAnMicKKwor
ICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgZml4MygpOgorICAg
ICAgICAgICAgICAgZ2xvYmFsIGZpeDNfaW5zdGFudGlhdGVkCisgICAgICAgICAgICAgICBmaXgz
X2luc3RhbnRpYXRlZCA9IFRydWUKKyAgICAgICAgICAgICAgIHJldHVybiAnMycKKworICAgICAg
ICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdmaXgyJywgWycyJ10pCisgICAgICAgICAg
ICBkZWYgdGVzdF9pdChmaXgxKToKKyAgICAgICAgICAgICAgIGFzc2VydCBmaXgxID09ICcyMScK
KyAgICAgICAgICAgICAgIGFzc2VydCBub3QgZml4M19pbnN0YW50aWF0ZWQKKyAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAg
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCisKICAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV93
aXRoX21hcmsoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW1zID0gdGVzdGRpci5nZXRpdGVt
cygKICAgICAgICAgICAgICIiIgpAQCAtNjQyLDcgKzQ4MSw3IEBAIGNsYXNzIFRlc3RGdW5jdGlv
bihvYmplY3QpOgogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmZvbwogICAgICAgICAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdhcmcnLCBbCiAgICAgICAgICAgICAgICAgMSwKLSAgICAg
ICAgICAgICAgICBweXRlc3QubWFyay5iYXIocHl0ZXN0Lm1hcmsuYmF6KDIpKQorICAgICAgICAg
ICAgICAgIHB5dGVzdC5wYXJhbSgyLCBtYXJrcz1bcHl0ZXN0Lm1hcmsuYmF6LCBweXRlc3QubWFy
ay5iYXJdKQogICAgICAgICAgICAgXSkKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGFy
Zyk6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtNjU2LDcgKzQ5NSwyMCBAQCBjbGFzcyBUZXN0
RnVuY3Rpb24ob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICBhc3NlcnQgImZvbyIgaW4ga2V5
d29yZHNbMV0gYW5kICJiYXIiIGluIGtleXdvcmRzWzFdIGFuZCAiYmF6IiBpbiBrZXl3b3Jkc1sx
XQogCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fZXF1YWxpdHlfd2l0aF9jYWxsc3BlYyhzZWxmLCB0
ZXN0ZGlyLCB0bXBkaXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfZW1wdHlfc3Ry
aW5nX2FyZ3VtZW50cyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgaXRlbXMgPSB0ZXN0ZGlyLmdl
dGl0ZW1zKAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisg
ICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3YnLCAoJycsICcgJykpCisgICAg
ICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3cnLCAoJycsICcgJykpCisgICAgICAg
ICAgICBkZWYgdGVzdCh2LCB3KTogLi4uCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAg
ICAgICBuYW1lcyA9IHtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gaXRlbXN9CisgICAgICAgIGFzc2Vy
dCBuYW1lcyA9PSB7InRlc3RbLV0iLCAidGVzdFsgLV0iLCAidGVzdFstIF0iLCAidGVzdFsgLSBd
In0KKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VxdWFsaXR5X3dpdGhfY2FsbHNwZWMoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIGl0ZW1zID0gdGVzdGRpci5nZXRpdGVtcygKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNjcyLDE0ICs1MjQsMTIgQEAgY2xh
c3MgVGVzdEZ1bmN0aW9uKG9iamVjdCk6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0o
ImRlZiB0ZXN0X2Z1bmMoKTogcmFpc2UgVmFsdWVFcnJvciIpCiAgICAgICAgIGNvbmZpZyA9IGl0
ZW0uY29uZmlnCiAKLSAgICAgICAgY2xhc3MgTXlQbHVnaW4xKG9iamVjdCk6Ci0KLSAgICAgICAg
ICAgIGRlZiBweXRlc3RfcHlmdW5jX2NhbGwoc2VsZiwgcHlmdW5jaXRlbSk6CisgICAgICAgIGNs
YXNzIE15UGx1Z2luMToKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcHlmdW5jX2NhbGwoc2VsZik6
CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogCi0gICAgICAgIGNsYXNzIE15UGx1
Z2luMihvYmplY3QpOgotCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHNlbGYs
IHB5ZnVuY2l0ZW0pOgorICAgICAgICBjbGFzcyBNeVBsdWdpbjI6CisgICAgICAgICAgICBkZWYg
cHl0ZXN0X3B5ZnVuY19jYWxsKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAK
ICAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoTXlQbHVnaW4xKCkpCkBAIC03
MjIsNyArNTcyLDYgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uKG9iamVjdCk6CiAgICAgICAgIGFzc2Vy
dCBjb2xpdGVtc1syXS5uYW1lID09ICJ0ZXN0MlthLWNdIgogICAgICAgICBhc3NlcnQgY29saXRl
bXNbM10ubmFtZSA9PSAidGVzdDJbYi1jXSIKIAotICAgIEBpZ25vcmVfcGFyYW1ldHJpemVkX21h
cmtzCiAgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfc2tpcGlmKHNlbGYsIHRlc3RkaXIpOgogICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTczMCwxNSArNTc5
LDE0IEBAIGNsYXNzIFRlc3RGdW5jdGlvbihvYmplY3QpOgogCiAgICAgICAgICAgICBtID0gcHl0
ZXN0Lm1hcmsuc2tpcGlmKCdUcnVlJykKIAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCd4JywgWzAsIDEsIG0oMildKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCd4JywgWzAsIDEsIHB5dGVzdC5wYXJhbSgyLCBtYXJrcz1tKV0pCiAgICAgICAgICAg
ICBkZWYgdGVzdF9za2lwX2lmKHgpOgogICAgICAgICAgICAgICAgIGFzc2VydCB4IDwgMgogICAg
ICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
Ci0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKiAyIHBhc3NlZCwgMSBza2lw
cGVkIGluICoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDIgcGFz
c2VkLCAxIHNraXBwZWQgaW4gKiJdKQogCi0gICAgQGlnbm9yZV9wYXJhbWV0cml6ZWRfbWFya3MK
ICAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9za2lwKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTc0NiwxNSArNTk0LDE0IEBA
IGNsYXNzIFRlc3RGdW5jdGlvbihvYmplY3QpOgogCiAgICAgICAgICAgICBtID0gcHl0ZXN0Lm1h
cmsuc2tpcCgnJykKIAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCd4Jywg
WzAsIDEsIG0oMildKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCd4Jywg
WzAsIDEsIHB5dGVzdC5wYXJhbSgyLCBtYXJrcz1tKV0pCiAgICAgICAgICAgICBkZWYgdGVzdF9z
a2lwKHgpOgogICAgICAgICAgICAgICAgIGFzc2VydCB4IDwgMgogICAgICAgICAiIiIKICAgICAg
ICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKiAyIHBhc3NlZCwgMSBza2lwcGVkIGluICoiKQorICAg
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDIgcGFzc2VkLCAxIHNraXBwZWQg
aW4gKiJdKQogCi0gICAgQGlnbm9yZV9wYXJhbWV0cml6ZWRfbWFya3MKICAgICBkZWYgdGVzdF9w
YXJhbWV0cml6ZV9za2lwaWZfbm9fc2tpcChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC03NjgsOSArNjE1LDggQEAgY2xhc3Mg
VGVzdEZ1bmN0aW9uKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKCIqIDEgZmFpbGVkLCAyIHBhc3NlZCBpbiAqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKiAxIGZhaWxlZCwgMiBwYXNzZWQgaW4gKiJdKQogCi0gICAgQGln
bm9yZV9wYXJhbWV0cml6ZWRfbWFya3MKICAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV94ZmFpbChz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCkBAIC03NzgsMTUgKzYyNCwxNCBAQCBjbGFzcyBUZXN0RnVuY3Rpb24ob2JqZWN0KToKIAog
ICAgICAgICAgICAgbSA9IHB5dGVzdC5tYXJrLnhmYWlsKCdUcnVlJykKIAotICAgICAgICAgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCd4JywgWzAsIDEsIG0oMildKQorICAgICAgICAgICAg
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCd4JywgWzAsIDEsIHB5dGVzdC5wYXJhbSgyLCBtYXJr
cz1tKV0pCiAgICAgICAgICAgICBkZWYgdGVzdF94ZmFpbCh4KToKICAgICAgICAgICAgICAgICBh
c3NlcnQgeCA8IDIKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiog
MiBwYXNzZWQsIDEgeGZhaWxlZCBpbiAqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKiAyIHBhc3NlZCwgMSB4ZmFpbGVkIGluICoiXSkKIAotICAgIEBpZ25vcmVfcGFy
YW1ldHJpemVkX21hcmtzCiAgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfcGFzc2VkKHNlbGYsIHRl
c3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAg
LTc5NCwxNSArNjM5LDE0IEBAIGNsYXNzIFRlc3RGdW5jdGlvbihvYmplY3QpOgogCiAgICAgICAg
ICAgICBtID0gcHl0ZXN0Lm1hcmsueGZhaWwoJ1RydWUnKQogCi0gICAgICAgICAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoJ3gnLCBbMCwgMSwgbSgyKV0pCisgICAgICAgICAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoJ3gnLCBbMCwgMSwgcHl0ZXN0LnBhcmFtKDIsIG1hcmtzPW0pXSkK
ICAgICAgICAgICAgIGRlZiB0ZXN0X3hmYWlsKHgpOgogICAgICAgICAgICAgICAgIHBhc3MKICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiogMiBwYXNzZWQsIDEgeHBh
c3NlZCBpbiAqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAyIHBh
c3NlZCwgMSB4cGFzc2VkIGluICoiXSkKIAotICAgIEBpZ25vcmVfcGFyYW1ldHJpemVkX21hcmtz
CiAgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfeGZhaWxfcGFzc2VkKHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTgxNiwyMyAr
NjYwLDQ5IEBAIGNsYXNzIFRlc3RGdW5jdGlvbihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAg
ICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKiAzIHBhc3NlZCBpbiAqIikKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAzIHBhc3NlZCBpbiAqIl0pCiAKLSAgICBkZWYgdGVz
dF9mdW5jdGlvbl9vcmlnaW5hbF9uYW1lKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX29yaWdpbmFsbmFtZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAg
ICAgICBpdGVtcyA9IHRlc3RkaXIuZ2V0aXRlbXMoCiAgICAgICAgICAgICAiIiIKICAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKKwogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCdhcmcnLCBbMSwyXSkKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoYXJnKToKICAgICAgICAg
ICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X25vX3BhcmFtKCk6CisgICAgICAg
ICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICBhc3NlcnQgW3gu
b3JpZ2luYWxuYW1lIGZvciB4IGluIGl0ZW1zXSA9PSBbInRlc3RfZnVuYyIsICJ0ZXN0X2Z1bmMi
XQorICAgICAgICBvcmlnaW5hbG5hbWVzID0gW10KKyAgICAgICAgZm9yIHggaW4gaXRlbXM6Cisg
ICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh4LCBweXRlc3QuRnVuY3Rpb24pCisgICAgICAg
ICAgICBvcmlnaW5hbG5hbWVzLmFwcGVuZCh4Lm9yaWdpbmFsbmFtZSkKKyAgICAgICAgYXNzZXJ0
IG9yaWdpbmFsbmFtZXMgPT0gWworICAgICAgICAgICAgInRlc3RfZnVuYyIsCisgICAgICAgICAg
ICAidGVzdF9mdW5jIiwKKyAgICAgICAgICAgICJ0ZXN0X25vX3BhcmFtIiwKKyAgICAgICAgXQog
CisgICAgZGVmIHRlc3RfZnVuY3Rpb25fd2l0aF9zcXVhcmVfYnJhY2tldHMoc2VsZiwgdGVzdGRp
cjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCBmdW5jdGlvbnMgd2l0
aCBzcXVhcmUgYnJhY2tldHMgZG9uJ3QgY2F1c2UgdHJvdWJsZS4iIiIKKyAgICAgICAgcDEgPSB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGxvY2Fscygp
WyJ0ZXN0X2Zvb1tuYW1lXSJdID0gbGFtYmRhOiBOb25lCisgICAgICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCBzdHIocDEpKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgInRlc3RfZnVuY3Rpb25fd2l0aF9zcXVhcmVfYnJhY2tldHMucHk6OnRlc3Rf
Zm9vW1tdbmFtZVtdXSBQQVNTRUQgKiIsCisgICAgICAgICAgICAgICAgIio9IDEgcGFzc2VkIGlu
ICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCiAKLWNsYXNzIFRlc3RTb3J0aW5nKG9iamVj
dCk6CiAKLSAgICBkZWYgdGVzdF9jaGVja19lcXVhbGl0eShzZWxmLCB0ZXN0ZGlyKToKK2NsYXNz
IFRlc3RTb3J0aW5nOgorICAgIGRlZiB0ZXN0X2NoZWNrX2VxdWFsaXR5KHNlbGYsIHRlc3RkaXIp
IC0+IE5vbmU6CiAgICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKAogICAgICAg
ICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVzdF9wYXNzKCk6IHBhc3MKQEAgLTg0Niw4ICs3
MTYsNiBAQCBjbGFzcyBUZXN0U29ydGluZyhvYmplY3QpOgogCiAgICAgICAgIGFzc2VydCBmbjEg
PT0gZm4yCiAgICAgICAgIGFzc2VydCBmbjEgIT0gbW9kY29sCi0gICAgICAgIGlmIHN5cy52ZXJz
aW9uX2luZm8gPCAoMywgMCk6Ci0gICAgICAgICAgICBhc3NlcnQgY21wKGZuMSwgZm4yKSA9PSAw
ICAjIE5PUUEKICAgICAgICAgYXNzZXJ0IGhhc2goZm4xKSA9PSBoYXNoKGZuMikKIAogICAgICAg
ICBmbjMgPSB0ZXN0ZGlyLmNvbGxlY3RfYnlfbmFtZShtb2Rjb2wsICJ0ZXN0X2ZhaWwiKQpAQCAt
ODU2LDEwICs3MjQsMTAgQEAgY2xhc3MgVGVzdFNvcnRpbmcob2JqZWN0KToKICAgICAgICAgYXNz
ZXJ0IGZuMSAhPSBmbjMKIAogICAgICAgICBmb3IgZm4gaW4gZm4xLCBmbjIsIGZuMzoKLSAgICAg
ICAgICAgIGFzc2VydCBmbiAhPSAzCisgICAgICAgICAgICBhc3NlcnQgZm4gIT0gMyAgIyB0eXBl
OiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQogICAgICAgICAgICAgYXNzZXJ0IGZuICE9IG1v
ZGNvbAotICAgICAgICAgICAgYXNzZXJ0IGZuICE9IFsxLCAyLCAzXQotICAgICAgICAgICAgYXNz
ZXJ0IFsxLCAyLCAzXSAhPSBmbgorICAgICAgICAgICAgYXNzZXJ0IGZuICE9IFsxLCAyLCAzXSAg
IyB0eXBlOiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQorICAgICAgICAgICAgYXNzZXJ0IFsx
LCAyLCAzXSAhPSBmbiAgIyB0eXBlOiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFwXQogICAgICAg
ICAgICAgYXNzZXJ0IG1vZGNvbCAhPSBmbgogCiAgICAgZGVmIHRlc3RfYWxsb3dfc2FuZV9zb3J0
aW5nX2Zvcl9kZWNvcmF0b3JzKHNlbGYsIHRlc3RkaXIpOgpAQCAtODg1LDggKzc1Myw3IEBAIGNs
YXNzIFRlc3RTb3J0aW5nKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBbaXRlbS5uYW1lIGZvciBp
dGVtIGluIGNvbGl0ZW1zXSA9PSBbInRlc3RfYiIsICJ0ZXN0X2EiXQogCiAKLWNsYXNzIFRlc3RD
b25mdGVzdEN1c3RvbWl6YXRpb24ob2JqZWN0KToKLQorY2xhc3MgVGVzdENvbmZ0ZXN0Q3VzdG9t
aXphdGlvbjoKICAgICBkZWYgdGVzdF9weXRlc3RfcHljb2xsZWN0X21vZHVsZShzZWxmLCB0ZXN0
ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKQEAg
LTg5NSw3ICs3NjIsNyBAQCBjbGFzcyBUZXN0Q29uZnRlc3RDdXN0b21pemF0aW9uKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3Rf
bWFrZW1vZHVsZShwYXRoLCBwYXJlbnQpOgogICAgICAgICAgICAgICAgIGlmIHBhdGguYmFzZW5h
bWUgPT0gInRlc3RfeHl6LnB5IjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15TW9kdWxl
KHBhdGgsIHBhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15TW9kdWxlLmZyb21f
cGFyZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQogICAgICAgICAiIiIKICAgICAgICAg
KQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X3NvbWUoKTogcGFzcyIpCkBA
IC05MDYsMjMgKzc3MywyMyBAQCBjbGFzcyBUZXN0Q29uZnRlc3RDdXN0b21pemF0aW9uKG9iamVj
dCk6CiAgICAgZGVmIHRlc3RfY3VzdG9taXplZF9weW1ha2Vtb2R1bGVfaXNzdWUyMDVfc3ViZGly
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBiID0gdGVzdGRpci5ta2RpcigiYSIpLm1rZGlyKCJi
IikKICAgICAgICAgYi5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5
dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAg
ICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAg
ICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisgICAgICAgICAgICAgICAg
ZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZW1vZHVsZSgpOgorICAgICAgICAgICAgICAgICAgICBv
dXRjb21lID0geWllbGQKKyAgICAgICAgICAgICAgICAgICAgbW9kID0gb3V0Y29tZS5nZXRfcmVz
dWx0KCkKKyAgICAgICAgICAgICAgICAgICAgbW9kLm9iai5oZWxsbyA9ICJ3b3JsZCIKICAgICAg
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBw
eXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICAgICAgICAgIGRlZiBweXRlc3Rf
cHljb2xsZWN0X21ha2Vtb2R1bGUoKToKLSAgICAgICAgICAgICAgICBvdXRjb21lID0geWllbGQK
LSAgICAgICAgICAgICAgICBtb2QgPSBvdXRjb21lLmdldF9yZXN1bHQoKQotICAgICAgICAgICAg
ICAgIG1vZC5vYmouaGVsbG8gPSAid29ybGQiCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQog
ICAgICAgICApCiAgICAgICAgIGIuam9pbigidGVzdF9tb2R1bGUucHkiKS53cml0ZSgKLSAgICAg
ICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50
KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbygp
OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgaGVsbG8gPT0gIndvcmxkIgogICAgICAgICAg
ICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8oKToKLSAgICAgICAgICAgICAg
ICBhc3NlcnQgaGVsbG8gPT0gIndvcmxkIgotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAg
ICAgICAgKQogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQpAQCAtOTMxLDMx
ICs3OTgsMzEgQEAgY2xhc3MgVGVzdENvbmZ0ZXN0Q3VzdG9taXphdGlvbihvYmplY3QpOgogICAg
IGRlZiB0ZXN0X2N1c3RvbWl6ZWRfcHltYWtlaXRlbShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
YiA9IHRlc3RkaXIubWtkaXIoImEiKS5ta2RpcigiYiIpCiAgICAgICAgIGIuam9pbigiY29uZnRl
c3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAg
ICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAgQHB5dGVzdC5ob29raW1wbChob29r
d3JhcHBlcj1UcnVlKQorICAgICAgICAgICAgICAgIGRlZiBweXRlc3RfcHljb2xsZWN0X21ha2Vp
dGVtKCk6CisgICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSB5aWVsZAorICAgICAgICAgICAg
ICAgICAgICBpZiBvdXRjb21lLmV4Y2luZm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG91dGNvbWUuZ2V0X3Jlc3VsdCgpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZ1bmMgaW4gcmVz
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLl9zb21lMTIzID0gIndv
cmxkIgogICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAg
ICAgICAgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgICAgICAgICAg
ZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oKToKLSAgICAgICAgICAgICAgICBvdXRjb21l
ID0geWllbGQKLSAgICAgICAgICAgICAgICBpZiBvdXRjb21lLmV4Y2luZm8gaXMgTm9uZToKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICAgICAg
ICAgICAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZ1bmMg
aW4gcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMuX3NvbWUxMjMgPSAi
d29ybGQiCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIGIu
am9pbigidGVzdF9tb2R1bGUucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUu
U291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAor
ICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZSgp
Ci0gICAgICAgICAgICBkZWYgb2JqKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVybiBy
ZXF1ZXN0Lm5vZGUuX3NvbWUxMjMKLSAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKG9iaik6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0IG9iaiA9PSAid29ybGQiCi0gICAgICAgICIiIgorICAgICAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZSgpCisgICAgICAgICAgICAgICAgZGVmIG9iaihyZXF1
ZXN0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Qubm9kZS5fc29tZTEyMwor
ICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKG9iaik6CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydCBvYmogPT0gIndvcmxkIgorICAgICAgICAgICAgICAgICIiIgogICAgICAgICAgICAg
KQogICAgICAgICApCiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCkBAIC05
NjksMjIgKzgzNiwxMyBAQCBjbGFzcyBUZXN0Q29uZnRlc3RDdXN0b21pemF0aW9uKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3Rf
bWFrZWl0ZW0oY29sbGVjdG9yLCBuYW1lLCBvYmopOgogICAgICAgICAgICAgICAgIGlmIG5hbWUg
PT0gInNvbWUiOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlGdW5jdGlvbihuYW1lLCBj
b2xsZWN0b3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNeUZ1bmN0aW9uLmZyb21fcGFy
ZW50KG5hbWU9bmFtZSwgcGFyZW50PWNvbGxlY3RvcikKICAgICAgICAgIiIiCiAgICAgICAgICkK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgc29tZSgpOiBwYXNzIikKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKICAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKk15RnVuY3Rpb24qc29tZSoiXSkKIAotICAgIGRl
ZiB0ZXN0X21ha2VpdGVtX25vbl91bmRlcnNjb3JlKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNo
KToKLSAgICAgICAgbW9kY29sID0gdGVzdGRpci5nZXRtb2R1bGVjb2woImRlZiBfaGVsbG8oKTog
cGFzcyIpCi0gICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
Ci0gICAgICAgICAgICBweXRlc3QuTW9kdWxlLCAibWFrZWl0ZW0iLCBsYW1iZGEgc2VsZiwgbmFt
ZSwgb2JqOiB2YWx1ZXMuYXBwZW5kKG5hbWUpCi0gICAgICAgICkKLSAgICAgICAgdmFsdWVzID0g
bW9kY29sLmNvbGxlY3QoKQotICAgICAgICBhc3NlcnQgIl9oZWxsbyIgbm90IGluIHZhbHVlcwot
CiAgICAgZGVmIHRlc3RfaXNzdWUyMzY5X2NvbGxlY3RfbW9kdWxlX2ZpbGVleHQoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgICIiIkVuc3VyZSB3ZSBjYW4gY29sbGVjdCBmaWxlcyB3aXRoIHdlaXJk
IGZpbGUgZXh0ZW5zaW9ucyBhcyBQeXRob24KICAgICAgICAgbW9kdWxlcyAoIzIzNjkpIiIiCkBA
IC0xMDA2LDQ2ICs4NjQsNzQgQEAgY2xhc3MgVGVzdENvbmZ0ZXN0Q3VzdG9taXphdGlvbihvYmpl
Y3QpOgogCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQp
OgogICAgICAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIubmFyZiI6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBNb2R1bGUocGF0aCwgcGFyZW50KSIiIgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTW9kdWxlLmZyb21fcGFyZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KSIi
IgogICAgICAgICApCiAgICAgICAgIHRlc3RkaXIubWFrZWZpbGUoCiAgICAgICAgICAgICAiLm5h
cmYiLAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYg
dGVzdF9zb21ldGhpbmcoKToKICAgICAgICAgICAgICAgICBhc3NlcnQgMSArIDEgPT0gMiIiIiwK
ICAgICAgICAgKQogICAgICAgICAjIFVzZSBydW5weXRlc3Rfc3VicHJvY2Vzcywgc2luY2Ugd2Un
cmUgZnV0emluZyB3aXRoIHN5cy5tZXRhX3BhdGguCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0X3N1YnByb2Nlc3MoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoIioxIHBhc3NlZCoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
MSBwYXNzZWQqIl0pCisKKyAgICBkZWYgdGVzdF9lYXJseV9pZ25vcmVkX2F0dHJpYnV0ZXMoc2Vs
ZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiQnVpbHRpbiBhdHRyaWJ1
dGVzIHNob3VsZCBiZSBpZ25vcmVkIGVhcmx5IG9uLCBldmVuIGlmCisgICAgICAgIGNvbmZpZ3Vy
YXRpb24gd291bGQgb3RoZXJ3aXNlIGFsbG93IHRoZW0uCisKKyAgICAgICAgVGhpcyB0ZXN0cyBh
IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgbm90IGNvcnJlY3RuZXNzLCByZWFsbHksCisgICAg
ICAgIGFsdGhvdWdoIGl0IHRlc3RzIFB5dGVzdENvbGxlY3Rpb25XYXJuaW5nIGlzIG5vdCByYWlz
ZWQsIHdoaWxlCisgICAgICAgIGl0IHdvdWxkIGhhdmUgYmVlbiByYWlzZWQgb3RoZXJ3aXNlLgor
ICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgcHl0aG9uX2NsYXNzZXM9KgorICAgICAg
ICAgICAgcHl0aG9uX2Z1bmN0aW9ucz0qCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY2xhc3Mg
VGVzdEVtcHR5OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRlc3RfZW1wdHkg
PSBUZXN0RW1wdHkoKQorICAgICAgICAgICAgZGVmIHRlc3RfcmVhbCgpOgorICAgICAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgaXRlbXMsIHJlYyA9IHRl
c3RkaXIuaW5saW5lX2dlbml0ZW1zKCkKKyAgICAgICAgYXNzZXJ0IHJlYy5yZXQgPT0gMAorICAg
ICAgICBhc3NlcnQgbGVuKGl0ZW1zKSA9PSAxCiAKIAogZGVmIHRlc3Rfc2V0dXBfb25seV9hdmFp
bGFibGVfaW5fc3ViZGlyKHRlc3RkaXIpOgogICAgIHN1YjEgPSB0ZXN0ZGlyLm1rcHlkaXIoInN1
YjEiKQogICAgIHN1YjIgPSB0ZXN0ZGlyLm1rcHlkaXIoInN1YjIiKQogICAgIHN1YjEuam9pbigi
Y29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAg
ICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9y
dCBweXRlc3QKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2lu
X3N1YjEiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtKToKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2luX3N1
YjEiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSk6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNwYXRoLnB1cmViYXNlbmFtZSA9PSAidGVzdF9pbl9z
dWIxIgogICAgICAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgZGVm
IHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNw
YXRoLnB1cmViYXNlbmFtZSA9PSAidGVzdF9pbl9zdWIxIgotICAgICAgICBkZWYgcHl0ZXN0X3J1
bnRlc3RfY2FsbChpdGVtKToKLSAgICAgICAgICAgIGFzc2VydCBpdGVtLmZzcGF0aC5wdXJlYmFz
ZW5hbWUgPT0gInRlc3RfaW5fc3ViMSIKLSAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3RlYXJk
b3duKGl0ZW0pOgotICAgICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNwYXRoLnB1cmViYXNlbmFtZSA9
PSAidGVzdF9pbl9zdWIxIgotICAgICIiIgogICAgICAgICApCiAgICAgKQogICAgIHN1YjIuam9p
bigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisg
ICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0
X2luX3N1YjIiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtKToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgaXRlbS5mc3BhdGgucHVyZWJhc2VuYW1lID09ICJ0ZXN0X2lu
X3N1YjIiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfdGVhcmRvd24oaXRlbSk6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNwYXRoLnB1cmViYXNlbmFtZSA9PSAidGVzdF9p
bl9zdWIyIgogICAgICAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAg
ZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICAgICAgICAgYXNzZXJ0IGl0ZW0u
ZnNwYXRoLnB1cmViYXNlbmFtZSA9PSAidGVzdF9pbl9zdWIyIgotICAgICAgICBkZWYgcHl0ZXN0
X3J1bnRlc3RfY2FsbChpdGVtKToKLSAgICAgICAgICAgIGFzc2VydCBpdGVtLmZzcGF0aC5wdXJl
YmFzZW5hbWUgPT0gInRlc3RfaW5fc3ViMiIKLSAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Rl
YXJkb3duKGl0ZW0pOgotICAgICAgICAgICAgYXNzZXJ0IGl0ZW0uZnNwYXRoLnB1cmViYXNlbmFt
ZSA9PSAidGVzdF9pbl9zdWIyIgotICAgICIiIgogICAgICAgICApCiAgICAgKQogICAgIHN1YjEu
am9pbigidGVzdF9pbl9zdWIxLnB5Iikud3JpdGUoImRlZiB0ZXN0XzEoKTogcGFzcyIpCkBAIC0x
MDU1LDE4ICs5NDEsMjAgQEAgZGVmIHRlc3Rfc2V0dXBfb25seV9hdmFpbGFibGVfaW5fc3ViZGly
KHRlc3RkaXIpOgogCiAKIGRlZiB0ZXN0X21vZHVsZWNvbF9yb3VuZHRyaXAodGVzdGRpcik6Ci0g
ICAgbW9kY29sID0gdGVzdGRpci5nZXRtb2R1bGVjb2woInBhc3MiLCB3aXRoaW5pdD1UcnVlKQor
ICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKCJwYXNzIiwgd2l0aGluaXQ9RmFsc2Up
CiAgICAgdHJhaWwgPSBtb2Rjb2wubm9kZWlkCiAgICAgbmV3Y29sID0gbW9kY29sLnNlc3Npb24u
cGVyZm9ybV9jb2xsZWN0KFt0cmFpbF0sIGdlbml0ZW1zPTApWzBdCiAgICAgYXNzZXJ0IG1vZGNv
bC5uYW1lID09IG5ld2NvbC5uYW1lCiAKIAotY2xhc3MgVGVzdFRyYWNlYmFja0N1dHRpbmcob2Jq
ZWN0KToKLQorY2xhc3MgVGVzdFRyYWNlYmFja0N1dHRpbmc6CiAgICAgZGVmIHRlc3Rfc2tpcF9z
aW1wbGUoc2VsZik6Ci0gICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKHB5dGVzdC5za2lw
LkV4Y2VwdGlvbiwgJ3B5dGVzdC5za2lwKCJ4eHgiKScpCisgICAgICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhweXRlc3Quc2tpcC5FeGNlcHRpb24pIGFzIGV4Y2luZm86CisgICAgICAgICAgICBweXRl
c3Quc2tpcCgieHh4IikKICAgICAgICAgYXNzZXJ0IGV4Y2luZm8udHJhY2ViYWNrWy0xXS5mcmFt
ZS5jb2RlLm5hbWUgPT0gInNraXAiCiAgICAgICAgIGFzc2VydCBleGNpbmZvLnRyYWNlYmFja1st
MV0uaXNoaWRkZW4oKQorICAgICAgICBhc3NlcnQgZXhjaW5mby50cmFjZWJhY2tbLTJdLmZyYW1l
LmNvZGUubmFtZSA9PSAidGVzdF9za2lwX3NpbXBsZSIKKyAgICAgICAgYXNzZXJ0IG5vdCBleGNp
bmZvLnRyYWNlYmFja1stMl0uaXNoaWRkZW4oKQogCiAgICAgZGVmIHRlc3RfdHJhY2ViYWNrX2Fy
Z3NldHVwKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKQEAg
LTExMTUsOCArMTAwMyw3IEBAIGNsYXNzIFRlc3RUcmFjZWJhY2tDdXR0aW5nKG9iamVjdCk6CiAg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIj4qYXNkKiIsICJFKk5hbWVFcnJv
cioiXSkKIAogICAgIGRlZiB0ZXN0X3RyYWNlYmFja19maWx0ZXJfZXJyb3JfZHVyaW5nX2ZpeHR1
cmVfY29sbGVjdGlvbihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiaW50ZWdyYXRpb24gdGVz
dCBmb3IgaXNzdWUgIzk5NS4KLSAgICAgICAgIiIiCisgICAgICAgICIiIkludGVncmF0aW9uIHRl
c3QgZm9yIGlzc3VlICM5OTUuIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTE0MSwzNCArMTAyOCwz
NyBAQCBjbGFzcyBUZXN0VHJhY2ViYWNrQ3V0dGluZyhvYmplY3QpOgogICAgICAgICBhc3NlcnQg
IklOVEVSTkFMRVJST1I+IiBub3QgaW4gb3V0CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbIipWYWx1ZUVycm9yOiBmYWlsIG1lKiIsICIqIDEgZXJyb3IgaW4gKiJdKQogCi0g
ICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlYmFja19nZW5lcmF0ZWRfY29kZShzZWxmKToKLSAgICAg
ICAgIiIidGVzdCB0aGF0IGZpbHRlcl90cmFjZWJhY2soKSB3b3JrcyB3aXRoIHRoZSBmYWN0IHRo
YXQKLSAgICAgICAgcHkuY29kZS5Db2RlLnBhdGggYXR0cmlidXRlIG1pZ2h0IHJldHVybiBhbiBz
dHIgb2JqZWN0LgorICAgIGRlZiB0ZXN0X2ZpbHRlcl90cmFjZWJhY2tfZ2VuZXJhdGVkX2NvZGUo
c2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGZpbHRlcl90cmFjZWJhY2soKSB3
b3JrcyB3aXRoIHRoZSBmYWN0IHRoYXQKKyAgICAgICAgX3B5dGVzdC5fY29kZS5jb2RlLkNvZGUu
cGF0aCBhdHRyaWJ1dGUgbWlnaHQgcmV0dXJuIGFuIHN0ciBvYmplY3QuCisKICAgICAgICAgSW4g
dGhpcyBjYXNlLCBvbmUgb2YgdGhlIGVudHJpZXMgb24gdGhlIHRyYWNlYmFjayB3YXMgcHJvZHVj
ZWQgYnkKICAgICAgICAgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGNvZGUuCiAgICAgICAgIFNlZTog
aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5dGVzdC1kZXYvcHkvaXNzdWVzLzcxCiAgICAgICAgIFRo
aXMgZml4ZXMgIzk5NS4KICAgICAgICAgIiIiCi0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24g
aW1wb3J0IGZpbHRlcl90cmFjZWJhY2sKKyAgICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9y
dCBmaWx0ZXJfdHJhY2ViYWNrCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbnMgPSB7fQor
ICAgICAgICAgICAgbnMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgQW55XQogICAgICAgICAgICAg
ZXhlYygiZGVmIGZvbygpOiByYWlzZSBWYWx1ZUVycm9yIiwgbnMpCiAgICAgICAgICAgICBuc1si
Zm9vIl0oKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIF8sIF8sIHRi
ID0gc3lzLmV4Y19pbmZvKCkKIAotICAgICAgICB0YiA9IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNr
KHRiKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0YlstMV0ucGF0aCwgc3RyKQotICAgICAg
ICBhc3NlcnQgbm90IGZpbHRlcl90cmFjZWJhY2sodGJbLTFdKQorICAgICAgICBhc3NlcnQgdGIg
aXMgbm90IE5vbmUKKyAgICAgICAgdHJhY2ViYWNrID0gX3B5dGVzdC5fY29kZS5UcmFjZWJhY2so
dGIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHRyYWNlYmFja1stMV0ucGF0aCwgc3RyKQor
ICAgICAgICBhc3NlcnQgbm90IGZpbHRlcl90cmFjZWJhY2sodHJhY2ViYWNrWy0xXSkKKworICAg
IGRlZiB0ZXN0X2ZpbHRlcl90cmFjZWJhY2tfcGF0aF9ub19sb25nZXJfdmFsaWQoc2VsZiwgdGVz
dGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGZpbHRlcl90cmFjZWJhY2soKSB3
b3JrcyB3aXRoIHRoZSBmYWN0IHRoYXQKKyAgICAgICAgX3B5dGVzdC5fY29kZS5jb2RlLkNvZGUu
cGF0aCBhdHRyaWJ1dGUgbWlnaHQgcmV0dXJuIGFuIHN0ciBvYmplY3QuCiAKLSAgICBkZWYgdGVz
dF9maWx0ZXJfdHJhY2ViYWNrX3BhdGhfbm9fbG9uZ2VyX3ZhbGlkKHNlbGYsIHRlc3RkaXIpOgot
ICAgICAgICAiIiJ0ZXN0IHRoYXQgZmlsdGVyX3RyYWNlYmFjaygpIHdvcmtzIHdpdGggdGhlIGZh
Y3QgdGhhdAotICAgICAgICBweS5jb2RlLkNvZGUucGF0aCBhdHRyaWJ1dGUgbWlnaHQgcmV0dXJu
IGFuIHN0ciBvYmplY3QuCiAgICAgICAgIEluIHRoaXMgY2FzZSwgb25lIG9mIHRoZSBmaWxlcyBp
biB0aGUgdHJhY2ViYWNrIG5vIGxvbmdlciBleGlzdHMuCiAgICAgICAgIFRoaXMgZml4ZXMgIzEx
MzMuCiAgICAgICAgICIiIgotICAgICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBmaWx0
ZXJfdHJhY2ViYWNrCisgICAgICAgIGZyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgZmlsdGVyX3Ry
YWNlYmFjawogCiAgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKQEAgLTExODQsMTUgKzEwNzQsMTUgQEAgY2xhc3MgVGVzdFRyYWNlYmFj
a0N1dHRpbmcob2JqZWN0KToKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAg
ICBfLCBfLCB0YiA9IHN5cy5leGNfaW5mbygpCiAKKyAgICAgICAgYXNzZXJ0IHRiIGlzIG5vdCBO
b25lCiAgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oImZpbHRlcl90cmFjZWJhY2tfZW50cnlf
YXNfc3RyLnB5IikucmVtb3ZlKCkKLSAgICAgICAgdGIgPSBfcHl0ZXN0Ll9jb2RlLlRyYWNlYmFj
ayh0YikKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGJbLTFdLnBhdGgsIHN0cikKLSAgICAg
ICAgYXNzZXJ0IGZpbHRlcl90cmFjZWJhY2sodGJbLTFdKQotCisgICAgICAgIHRyYWNlYmFjayA9
IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKHRiKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0
cmFjZWJhY2tbLTFdLnBhdGgsIHN0cikKKyAgICAgICAgYXNzZXJ0IGZpbHRlcl90cmFjZWJhY2so
dHJhY2ViYWNrWy0xXSkKIAotY2xhc3MgVGVzdFJlcG9ydEluZm8ob2JqZWN0KToKIAotICAgIGRl
ZiB0ZXN0X2l0ZW1yZXBvcnRfcmVwb3J0aW5mbyhzZWxmLCB0ZXN0ZGlyLCBsaW5lY29tcCk6Citj
bGFzcyBUZXN0UmVwb3J0SW5mbzoKKyAgICBkZWYgdGVzdF9pdGVtcmVwb3J0X3JlcG9ydGluZm8o
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAg
ICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xMjAxLDcgKzEwOTEsNyBAQCBj
bGFzcyBUZXN0UmVwb3J0SW5mbyhvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
IkFCQ0RFIiwgNDIsICJjdXN0b20iCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X3B5Y29sbGVjdF9t
YWtlaXRlbShjb2xsZWN0b3IsIG5hbWUsIG9iaik6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSA9
PSAidGVzdF9mdW5jIjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15RnVuY3Rpb24obmFt
ZSwgcGFyZW50PWNvbGxlY3RvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15RnVuY3Rp
b24uZnJvbV9wYXJlbnQobmFtZT1uYW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQogICAgICAgICAiIiIK
ICAgICAgICAgKQogICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKCJkZWYgdGVzdF9mdW5j
KCk6IHBhc3MiKQpAQCAtMTIyOSwzOSArMTExOSw5IEBAIGNsYXNzIFRlc3RSZXBvcnRJbmZvKG9i
amVjdCk6CiAgICAgICAgIGFzc2VydCBsaW5lbm8gPT0gMQogICAgICAgICBhc3NlcnQgbXNnID09
ICJUZXN0Q2xhc3MiCiAKLSAgICBkZWYgdGVzdF9nZW5lcmF0b3JfcmVwb3J0aW5mbyhzZWxmLCB0
ZXN0ZGlyKToKLSAgICAgICAgbW9kY29sID0gdGVzdGRpci5nZXRtb2R1bGVjb2woCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgICMgbGluZW5vIDAKLSAgICAgICAgICAgIGRlZiB0ZXN0X2dl
bigpOgotICAgICAgICAgICAgICAgIGRlZiBjaGVjayh4KToKLSAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0IHgKLSAgICAgICAgICAgICAgICB5aWVsZCBjaGVjaywgMwotICAgICAgICAiIiIKLSAg
ICAgICAgKQotICAgICAgICBnZW5jb2wgPSB0ZXN0ZGlyLmNvbGxlY3RfYnlfbmFtZShtb2Rjb2ws
ICJ0ZXN0X2dlbiIpCi0gICAgICAgIGZzcGF0aCwgbGluZW5vLCBtb2RwYXRoID0gZ2VuY29sLnJl
cG9ydGluZm8oKQotICAgICAgICBhc3NlcnQgZnNwYXRoID09IG1vZGNvbC5mc3BhdGgKLSAgICAg
ICAgYXNzZXJ0IGxpbmVubyA9PSAxCi0gICAgICAgIGFzc2VydCBtb2RwYXRoID09ICJ0ZXN0X2dl
biIKLQotICAgICAgICBnZW5pdGVtID0gZ2VuY29sLmNvbGxlY3QoKVswXQotICAgICAgICBmc3Bh
dGgsIGxpbmVubywgbW9kcGF0aCA9IGdlbml0ZW0ucmVwb3J0aW5mbygpCi0gICAgICAgIGFzc2Vy
dCBmc3BhdGggPT0gbW9kY29sLmZzcGF0aAotICAgICAgICBhc3NlcnQgbGluZW5vID09IDIKLSAg
ICAgICAgYXNzZXJ0IG1vZHBhdGggPT0gInRlc3RfZ2VuWzBdIgotICAgICAgICAiIiIKLSAgICAg
ICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAg
ICBkZWYgdGVzdF9nZW5mdW5jKCk6Ci0gICAgICAgICAgICAgICAgZGVmIGNoZWNrKHgpOgotICAg
ICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgeWllbGQgY2hlY2ssIDMKLSAg
ICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAgICAgICAgIGRlZiB0
ZXN0X21ldGhvZChzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICIiIgot
CisgICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAiaWdub3JlOnVzYWdl
IG9mIEdlbmVyYXRvci5GdW5jdGlvbiBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHB5dGVzdC5G
dW5jdGlvbiBpbnN0ZWFkIgorICAgICkKICAgICBkZWYgdGVzdF9yZXBvcnRpbmZvX3dpdGhfbmFz
dHlfZ2V0YXR0cihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzEyMDQKICAgICAgICAgbW9kY29sID0gdGVzdGRpci5n
ZXRtb2R1bGVjb2woCkBAIC0xMzMxLDU2ICsxMTkxLDYgQEAgZGVmIHRlc3RfY3VzdG9taXplZF9w
eXRob25fZGlzY292ZXJ5X2Z1bmN0aW9ucyh0ZXN0ZGlyKToKICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKIAotZGVmIHRlc3RfY29sbGVjdG9yX2F0dHJp
YnV0ZXModGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICIiIgot
ICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgIGRlZiBweXRlc3RfcHljb2xsZWN0X21ha2Vp
dGVtKGNvbGxlY3Rvcik6Ci0gICAgICAgICAgICBhc3NlcnQgY29sbGVjdG9yLkZ1bmN0aW9uID09
IHB5dGVzdC5GdW5jdGlvbgotICAgICAgICAgICAgYXNzZXJ0IGNvbGxlY3Rvci5DbGFzcyA9PSBw
eXRlc3QuQ2xhc3MKLSAgICAgICAgICAgIGFzc2VydCBjb2xsZWN0b3IuSW5zdGFuY2UgPT0gcHl0
ZXN0Lkluc3RhbmNlCi0gICAgICAgICAgICBhc3NlcnQgY29sbGVjdG9yLk1vZHVsZSA9PSBweXRl
c3QuTW9kdWxlCi0gICAgIiIiCi0gICAgKQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAg
ICAgIiIiCi0gICAgICAgICBkZWYgdGVzdF9oZWxsbygpOgotICAgICAgICAgICAgcGFzcwotICAg
ICIiIgotICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQotCi0KLWRlZiB0ZXN0X2N1c3Rv
bWl6ZV90aHJvdWdoX2F0dHJpYnV0ZXModGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlY29uZnRl
c3QoCi0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgIGNsYXNzIE15
RnVuY3Rpb24ocHl0ZXN0LkZ1bmN0aW9uKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY2xh
c3MgTXlJbnN0YW5jZShweXRlc3QuSW5zdGFuY2UpOgotICAgICAgICAgICAgRnVuY3Rpb24gPSBN
eUZ1bmN0aW9uCi0gICAgICAgIGNsYXNzIE15Q2xhc3MocHl0ZXN0LkNsYXNzKToKLSAgICAgICAg
ICAgIEluc3RhbmNlID0gTXlJbnN0YW5jZQotCi0gICAgICAgIGRlZiBweXRlc3RfcHljb2xsZWN0
X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2JqKToKLSAgICAgICAgICAgIGlmIG5hbWUuc3Rh
cnRzd2l0aCgiTXlUZXN0Q2xhc3MiKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTXlDbGFzcyhu
YW1lLCBwYXJlbnQ9Y29sbGVjdG9yKQotICAgICIiIgotICAgICkKLSAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICAgY2xhc3MgTXlUZXN0Q2xhc3Mob2JqZWN0KToK
LSAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKHNlbGYpOgotICAgICAgICAgICAgICAgIHBhc3MK
LSAgICAiIiIKLSAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVj
dC1vbmx5IikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiKk15
Q2xhc3MqIiwgIipNeUluc3RhbmNlKiIsICIqTXlGdW5jdGlvbip0ZXN0X2hlbGxvKiJdCi0gICAg
KQotCi0KIGRlZiB0ZXN0X3Vub3JkZXJhYmxlX3R5cGVzKHRlc3RkaXIpOgogICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCkBAIC0xMzk2LDYxICsxMjA2LDE2IEBAIGRlZiB0ZXN0
X3Vub3JkZXJhYmxlX3R5cGVzKHRlc3RkaXIpOgogICAgICIiIgogICAgICkKICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgYXNzZXJ0ICJUeXBlRXJyb3IiIG5vdCBpbiByZXN1
bHQuc3Rkb3V0LnN0cigpCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJVF9OT1RFU1RTQ09M
TEVDVEVECi0KLQotZGVmIHRlc3RfY29sbGVjdF9mdW5jdG9vbHNfcGFydGlhbCh0ZXN0ZGlyKToK
LSAgICAiIiIKLSAgICBUZXN0IHRoYXQgY29sbGVjdGlvbiBvZiBmdW5jdG9vbHMucGFydGlhbCBv
YmplY3Qgd29ya3MsIGFuZCBhcmd1bWVudHMKLSAgICB0byB0aGUgd3JhcHBlZCBmdW5jdGlvbnMg
YXJlIGRlYWx0IGNvcnJlY3RseSAoc2VlICM4MTEpLgotICAgICIiIgotICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBmdW5jdG9vbHMKLSAgICAgICAg
aW1wb3J0IHB5dGVzdAotCi0gICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICBkZWYgZml4
MSgpOgotICAgICAgICAgICAgcmV0dXJuICdmaXgxJwotCi0gICAgICAgIEBweXRlc3QuZml4dHVy
ZQotICAgICAgICBkZWYgZml4MigpOgotICAgICAgICAgICAgcmV0dXJuICdmaXgyJwotCi0gICAg
ICAgIGRlZiBjaGVjazEoaSwgZml4MSk6Ci0gICAgICAgICAgICBhc3NlcnQgaSA9PSAyCi0gICAg
ICAgICAgICBhc3NlcnQgZml4MSA9PSAnZml4MScKLQotICAgICAgICBkZWYgY2hlY2syKGZpeDEs
IGkpOgotICAgICAgICAgICAgYXNzZXJ0IGkgPT0gMgotICAgICAgICAgICAgYXNzZXJ0IGZpeDEg
PT0gJ2ZpeDEnCi0KLSAgICAgICAgZGVmIGNoZWNrMyhmaXgxLCBpLCBmaXgyKToKLSAgICAgICAg
ICAgIGFzc2VydCBpID09IDIKLSAgICAgICAgICAgIGFzc2VydCBmaXgxID09ICdmaXgxJwotICAg
ICAgICAgICAgYXNzZXJ0IGZpeDIgPT0gJ2ZpeDInCi0KLSAgICAgICAgdGVzdF9va18xID0gZnVu
Y3Rvb2xzLnBhcnRpYWwoY2hlY2sxLCBpPTIpCi0gICAgICAgIHRlc3Rfb2tfMiA9IGZ1bmN0b29s
cy5wYXJ0aWFsKGNoZWNrMSwgaT0yLCBmaXgxPSdmaXgxJykKLSAgICAgICAgdGVzdF9va18zID0g
ZnVuY3Rvb2xzLnBhcnRpYWwoY2hlY2sxLCAyKQotICAgICAgICB0ZXN0X29rXzQgPSBmdW5jdG9v
bHMucGFydGlhbChjaGVjazIsIGk9MikKLSAgICAgICAgdGVzdF9va181ID0gZnVuY3Rvb2xzLnBh
cnRpYWwoY2hlY2szLCBpPTIpCi0gICAgICAgIHRlc3Rfb2tfNiA9IGZ1bmN0b29scy5wYXJ0aWFs
KGNoZWNrMywgaT0yLCBmaXgxPSdmaXgxJykKLQotICAgICAgICB0ZXN0X2ZhaWxfMSA9IGZ1bmN0
b29scy5wYXJ0aWFsKGNoZWNrMiwgMikKLSAgICAgICAgdGVzdF9mYWlsXzIgPSBmdW5jdG9vbHMu
cGFydGlhbChjaGVjazMsIDIpCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIu
aW5saW5lX3J1bigpCi0gICAgcmVzdWx0LmFzc2VydG91dGNvbWUocGFzc2VkPTYsIGZhaWxlZD0y
KQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqVHlwZUVycm9yKiIpCisgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKIAorQHB5
dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikKIGRlZiB0ZXN0X2RvbnRfY29sbGVj
dF9ub25fZnVuY3Rpb25fY2FsbGFibGUodGVzdGRpcik6CiAgICAgIiIiVGVzdCBmb3IgaXNzdWUg
aHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8zMzEKIAogICAgIElu
IHRoaXMgY2FzZSBhbiBJTlRFUk5BTEVSUk9SIG9jY3VycmVkIHRyeWluZyB0byByZXBvcnQgdGhl
IGZhaWx1cmUgb2YKLSAgICBhIHRlc3QgbGlrZSB0aGlzIG9uZSBiZWNhdXNlIHB5IHRlc3QgZmFp
bGVkIHRvIGdldCB0aGUgc291cmNlIGxpbmVzLgorICAgIGEgdGVzdCBsaWtlIHRoaXMgb25lIGJl
Y2F1c2UgcHl0ZXN0IGZhaWxlZCB0byBnZXQgdGhlIHNvdXJjZSBsaW5lcy4KICAgICAiIiIKICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgpAQCAtMTQ2NCwxMiArMTIyOSwxMiBA
QCBkZWYgdGVzdF9kb250X2NvbGxlY3Rfbm9uX2Z1bmN0aW9uX2NhbGxhYmxlKHRlc3RkaXIpOgog
ICAgICAgICAgICAgcGFzcwogICAgICIiIgogICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLXJ3IikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbCiAgICAgICAgICAgICAiKmNvbGxl
Y3RlZCAxIGl0ZW0qIiwKLSAgICAgICAgICAgICIqY2Fubm90IGNvbGxlY3QgJ3Rlc3RfYScgYmVj
YXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbioiLAotICAgICAgICAgICAgIioxIHBhc3NlZCwgMSB3
YXJuaW5ncyBpbiAqIiwKKyAgICAgICAgICAgICIqdGVzdF9kb250X2NvbGxlY3Rfbm9uX2Z1bmN0
aW9uX2NhbGxhYmxlLnB5OjI6ICpjYW5ub3QgY29sbGVjdCAndGVzdF9hJyBiZWNhdXNlIGl0IGlz
IG5vdCBhIGZ1bmN0aW9uKiIsCisgICAgICAgICAgICAiKjEgcGFzc2VkLCAxIHdhcm5pbmcgaW4g
KiIsCiAgICAgICAgIF0KICAgICApCiAKQEAgLTE0OTcsMjQgKzEyNjIsMzkgQEAgZGVmIHRlc3Rf
Y2xhc3NfaW5qZWN0aW9uX2RvZXNfbm90X2JyZWFrX2NvbGxlY3Rpb24odGVzdGRpcik6CiAgICAg
JycnCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICBhc3NlcnQg
IlJ1bnRpbWVFcnJvcjogZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIg
bm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBhc3NlcnQgKAorICAgICAgICAiUnVudGlt
ZUVycm9yOiBkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIgorICAgICAg
ICBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICkKICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKIAogZGVmIHRlc3Rfc3ludGF4X2Vycm9yX3dp
dGhfbm9uX2FzY2lpX2NoYXJzKHRlc3RkaXIpOgotICAgICIiIkZpeCBkZWNvZGluZyBpc3N1ZSB3
aGlsZSBmb3JtYXR0aW5nIFN5bnRheEVycm9ycyBkdXJpbmcgY29sbGVjdGlvbiAoIzU3OCkKLSAg
ICAiIiIKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgIHUiIiIKLSAgICAjIC0qLSBj
b2Rpbmc6IFVURi04IC0qLQotCi0gICAg4piDCi0gICAgIiIiCi0gICAgKQorICAgICIiIkZpeCBk
ZWNvZGluZyBpc3N1ZSB3aGlsZSBmb3JtYXR0aW5nIFN5bnRheEVycm9ycyBkdXJpbmcgY29sbGVj
dGlvbiAoIzU3OCkuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKCLimIMiKQogICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqRVJST1IgY29sbGVjdGluZyoiLCAiKlN5bnRheEVycm9yKiIsICIqMSBlcnJvciBpbioiXSkK
IAogCitkZWYgdGVzdF9jb2xsZWN0X2Vycm9yX3dpdGhfZnVsbHRyYWNlKHRlc3RkaXIpOgorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgiYXNzZXJ0IDAiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLWZ1bGx0cmFjZSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAor
ICAgICAgICBbCisgICAgICAgICAgICAiY29sbGVjdGVkIDAgaXRlbXMgLyAxIGVycm9yIiwKKyAg
ICAgICAgICAgICIiLAorICAgICAgICAgICAgIio9IEVSUk9SUyA9KiIsCisgICAgICAgICAgICAi
Kl8gRVJST1IgY29sbGVjdGluZyB0ZXN0X2NvbGxlY3RfZXJyb3Jfd2l0aF9mdWxsdHJhY2UucHkg
XyoiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAiPiAgIGFzc2VydCAwIiwKKyAgICAg
ICAgICAgICJFICAgYXNzZXJ0IDAiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAidGVz
dF9jb2xsZWN0X2Vycm9yX3dpdGhfZnVsbHRyYWNlLnB5OjE6IEFzc2VydGlvbkVycm9yIiwKKyAg
ICAgICAgICAgICIqISBJbnRlcnJ1cHRlZDogMSBlcnJvciBkdXJpbmcgY29sbGVjdGlvbiAhKiIs
CisgICAgICAgIF0KKyAgICApCisKKwogZGVmIHRlc3Rfc2tpcF9kdXBsaWNhdGVzX2J5X2RlZmF1
bHQodGVzdGRpcik6CiAgICAgIiIiVGVzdCBmb3IgaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8xNjA5ICgjMTYwOSkKIApAQCAtMTUyMywxMiArMTMwMywx
MiBAQCBkZWYgdGVzdF9za2lwX2R1cGxpY2F0ZXNfYnlfZGVmYXVsdCh0ZXN0ZGlyKToKICAgICBh
ID0gdGVzdGRpci5ta2RpcigiYSIpCiAgICAgZmggPSBhLmpvaW4oInRlc3RfYS5weSIpCiAgICAg
Zmgud3JpdGUoCi0gICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Cisg
ICAgICAgICAgICBkZWYgdGVzdF9yZWFsKCk6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAg
ICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgZGVmIHRlc3RfcmVhbCgp
OgotICAgICAgICAgICAgcGFzcwotICAgICIiIgogICAgICAgICApCiAgICAgKQogICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KGEuc3RycGF0aCwgYS5zdHJwYXRoKQpAQCAtMTU0MywxMyAr
MTMyMywxMDEgQEAgZGVmIHRlc3Rfa2VlcF9kdXBsaWNhdGVzKHRlc3RkaXIpOgogICAgIGEgPSB0
ZXN0ZGlyLm1rZGlyKCJhIikKICAgICBmaCA9IGEuam9pbigidGVzdF9hLnB5IikKICAgICBmaC53
cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgIHRleHR3cmFwLmRl
ZGVudCgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAg
ICAgICAgIGRlZiB0ZXN0X3JlYWwoKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAg
ICAiIiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBkZWYgdGVzdF9yZWFsKCk6Ci0g
ICAgICAgICAgICBwYXNzCi0gICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0ta2VlcC1kdXBsaWNhdGVzIiwgYS5zdHJwYXRoLCBhLnN0cnBh
dGgpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmNvbGxlY3RlZCAyIGl0ZW0q
Il0pCisKKworZGVmIHRlc3RfcGFja2FnZV9jb2xsZWN0aW9uX2luZmluaXRlX3JlY3Vyc2lvbih0
ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiY29sbGVjdC9wYWNrYWdlX2luZmlu
aXRlX3JlY3Vyc2lvbiIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKKworCitkZWYgdGVzdF9w
YWNrYWdlX2NvbGxlY3Rpb25faW5pdF9naXZlbl9hc19hcmd1bWVudCh0ZXN0ZGlyKToKKyAgICAi
IiJSZWdyZXNzaW9uIHRlc3QgZm9yICMzNzQ5IiIiCisgICAgcCA9IHRlc3RkaXIuY29weV9leGFt
cGxlKCJjb2xsZWN0L3BhY2thZ2VfaW5pdF9naXZlbl9hc19hcmciKQorICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHAgLyAicGtnIiAvICJfX2luaXRfXy5weSIpCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQorCisKK2RlZiB0ZXN0X3BhY2thZ2Vf
d2l0aF9tb2R1bGVzKHRlc3RkaXIpOgorICAgICIiIgorICAgIC4KKyAgICDilJTilIDilIAgcm9v
dAorICAgICAgICDilJzilIDilIAgX19pbml0X18ucHkKKyAgICAgICAg4pSc4pSA4pSAIHN1YjEK
KyAgICAgICAg4pSCICAg4pSc4pSA4pSAIF9faW5pdF9fLnB5CisgICAgICAgIOKUgiAgIOKUlOKU
gOKUgCBzdWIxXzEKKyAgICAgICAg4pSCICAgICAgIOKUnOKUgOKUgCBfX2luaXRfXy5weQorICAg
ICAgICDilIIgICAgICAg4pSU4pSA4pSAIHRlc3RfaW5fc3ViMS5weQorICAgICAgICDilJTilIDi
lIAgc3ViMgorICAgICAgICAgICAg4pSU4pSA4pSAIHRlc3QKKyAgICAgICAgICAgICAgICDilJTi
lIDilIAgdGVzdF9pbl9zdWIyLnB5CisKKyAgICAiIiIKKyAgICByb290ID0gdGVzdGRpci5ta3B5
ZGlyKCJyb290IikKKyAgICBzdWIxID0gcm9vdC5ta2Rpcigic3ViMSIpCisgICAgc3ViMS5lbnN1
cmUoIl9faW5pdF9fLnB5IikKKyAgICBzdWIxX3Rlc3QgPSBzdWIxLm1rZGlyKCJzdWIxXzEiKQor
ICAgIHN1YjFfdGVzdC5lbnN1cmUoIl9faW5pdF9fLnB5IikKKyAgICBzdWIyID0gcm9vdC5ta2Rp
cigic3ViMiIpCisgICAgc3ViMl90ZXN0ID0gc3ViMi5ta2Rpcigic3ViMiIpCisKKyAgICBzdWIx
X3Rlc3Quam9pbigidGVzdF9pbl9zdWIxLnB5Iikud3JpdGUoImRlZiB0ZXN0XzEoKTogcGFzcyIp
CisgICAgc3ViMl90ZXN0LmpvaW4oInRlc3RfaW5fc3ViMi5weSIpLndyaXRlKCJkZWYgdGVzdF8y
KCk6IHBhc3MiKQorCisgICAgIyBFeGVjdXRlIGZyb20gLgorICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItdiIsICItcyIpCisgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9
MikKKworICAgICMgRXhlY3V0ZSBmcm9tIC4gd2l0aCBvbmUgYXJndW1lbnQgInJvb3QiCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi1zIiwgInJvb3QiKQorICAgIHJlc3Vs
dC5hc3NlcnRfb3V0Y29tZXMocGFzc2VkPTIpCisKKyAgICAjIENoZGlyIGludG8gcGFja2FnZSdz
IHJvb3QgYW5kIGV4ZWN1dGUgd2l0aCBubyBhcmdzCisgICAgcm9vdC5jaGRpcigpCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi1zIikKKyAgICByZXN1bHQuYXNzZXJ0X291
dGNvbWVzKHBhc3NlZD0yKQorCisKK2RlZiB0ZXN0X3BhY2thZ2Vfb3JkZXJpbmcodGVzdGRpcik6
CisgICAgIiIiCisgICAgLgorICAgIOKUlOKUgOKUgCByb290CisgICAgICAgIOKUnOKUgOKUgCBU
ZXN0X3Jvb3QucHkKKyAgICAgICAg4pSc4pSA4pSAIF9faW5pdF9fLnB5CisgICAgICAgIOKUnOKU
gOKUgCBzdWIxCisgICAgICAgIOKUgiAgIOKUnOKUgOKUgCBUZXN0X3N1YjEucHkKKyAgICAgICAg
4pSCICAg4pSU4pSA4pSAIF9faW5pdF9fLnB5CisgICAgICAgIOKUlOKUgOKUgCBzdWIyCisgICAg
ICAgICAgICDilJTilIDilIAgdGVzdAorICAgICAgICAgICAgICAgIOKUlOKUgOKUgCB0ZXN0X3N1
YjIucHkKKworICAgICIiIgorICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgIiIiCisgICAg
ICAgIFtweXRlc3RdCisgICAgICAgIHB5dGhvbl9maWxlcz0qLnB5CisgICAgIiIiCisgICAgKQor
ICAgIHJvb3QgPSB0ZXN0ZGlyLm1rcHlkaXIoInJvb3QiKQorICAgIHN1YjEgPSByb290Lm1rZGly
KCJzdWIxIikKKyAgICBzdWIxLmVuc3VyZSgiX19pbml0X18ucHkiKQorICAgIHN1YjIgPSByb290
Lm1rZGlyKCJzdWIyIikKKyAgICBzdWIyX3Rlc3QgPSBzdWIyLm1rZGlyKCJzdWIyIikKKworICAg
IHJvb3Quam9pbigiVGVzdF9yb290LnB5Iikud3JpdGUoImRlZiB0ZXN0XzEoKTogcGFzcyIpCisg
ICAgc3ViMS5qb2luKCJUZXN0X3N1YjEucHkiKS53cml0ZSgiZGVmIHRlc3RfMigpOiBwYXNzIikK
KyAgICBzdWIyX3Rlc3Quam9pbigidGVzdF9zdWIyLnB5Iikud3JpdGUoImRlZiB0ZXN0XzMoKTog
cGFzcyIpCisKKyAgICAjIEV4ZWN1dGUgZnJvbSAuCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi12IiwgIi1zIikKKyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0zKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vZml4dHVyZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmVzLnB5CnNpbWlsYXJpdHkgaW5kZXggNzQlCnJl
bmFtZSBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmUucHkKcmVuYW1lIHRv
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmVzLnB5CmluZGV4IDZkMmJiNjYzYjZj
ZC4uOWFlNWE5MWRiNDM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9m
aXh0dXJlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmVzLnB5CkBA
IC0xLDI0MyArMSwxNTYgQEAKLWZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAoraW1wb3J0IHN5
cworaW1wb3J0IHRleHR3cmFwCiAKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCiBpbXBvcnQgcHl0ZXN0
Ci1mcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IGdldF9wdWJsaWNfbmFtZXMKLWZyb20gX3B5
dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZUxvb2t1cEVycm9yLCBGaXh0dXJlUmVxdWVzdAog
ZnJvbSBfcHl0ZXN0IGltcG9ydCBmaXh0dXJlcworZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQg
Z2V0ZnVuY2FyZ25hbWVzCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJv
bSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVxdWVzdAorZnJvbSBfcHl0ZXN0LnBh
dGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgZ2V0X3B1Ymxp
Y19uYW1lcwogCiAKLWRlZiB0ZXN0X2dldGZ1bmNhcmduYW1lcygpOgorZGVmIHRlc3RfZ2V0ZnVu
Y2FyZ25hbWVzX2Z1bmN0aW9ucygpOgorICAgICIiIlRlc3QgZ2V0ZnVuY2FyZ25hbWVzIGZvciBu
b3JtYWwgZnVuY3Rpb25zIiIiCiAKICAgICBkZWYgZigpOgotICAgICAgICBwYXNzCisgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYXNzZXJ0IG5vdCBmaXh0dXJlcy5n
ZXRmdW5jYXJnbmFtZXMoZikKKyAgICBhc3NlcnQgbm90IGdldGZ1bmNhcmduYW1lcyhmKQogCiAg
ICAgZGVmIGcoYXJnKToKLSAgICAgICAgcGFzcworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCkKIAotICAgIGFzc2VydCBmaXh0dXJlcy5nZXRmdW5jYXJnbmFtZXMoZykgPT0gKCJh
cmciLCkKKyAgICBhc3NlcnQgZ2V0ZnVuY2FyZ25hbWVzKGcpID09ICgiYXJnIiwpCiAKICAgICBk
ZWYgaChhcmcxLCBhcmcyPSJoZWxsbyIpOgotICAgICAgICBwYXNzCisgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYXNzZXJ0IGZpeHR1cmVzLmdldGZ1bmNhcmduYW1l
cyhoKSA9PSAoImFyZzEiLCkKKyAgICBhc3NlcnQgZ2V0ZnVuY2FyZ25hbWVzKGgpID09ICgiYXJn
MSIsKQogCi0gICAgZGVmIGgoYXJnMSwgYXJnMiwgYXJnMz0iaGVsbG8iKToKLSAgICAgICAgcGFz
cworICAgIGRlZiBqKGFyZzEsIGFyZzIsIGFyZzM9ImhlbGxvIik6CisgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAgYXNzZXJ0IGZpeHR1cmVzLmdldGZ1bmNhcmduYW1l
cyhoKSA9PSAoImFyZzEiLCAiYXJnMiIpCisgICAgYXNzZXJ0IGdldGZ1bmNhcmduYW1lcyhqKSA9
PSAoImFyZzEiLCAiYXJnMiIpCiAKLSAgICBjbGFzcyBBKG9iamVjdCk6CiAKK2RlZiB0ZXN0X2dl
dGZ1bmNhcmduYW1lc19tZXRob2RzKCk6CisgICAgIiIiVGVzdCBnZXRmdW5jYXJnbmFtZXMgZm9y
IG5vcm1hbCBtZXRob2RzIiIiCisKKyAgICBjbGFzcyBBOgogICAgICAgICBkZWYgZihzZWxmLCBh
cmcxLCBhcmcyPSJoZWxsbyIpOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcigpCiAKKyAgICBhc3NlcnQgZ2V0ZnVuY2FyZ25hbWVzKEEoKS5m
KSA9PSAoImFyZzEiLCkKKworCitkZWYgdGVzdF9nZXRmdW5jYXJnbmFtZXNfc3RhdGljbWV0aG9k
KCk6CisgICAgIiIiVGVzdCBnZXRmdW5jYXJnbmFtZXMgZm9yIHN0YXRpY21ldGhvZHMiIiIKKwor
ICAgIGNsYXNzIEE6CiAgICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIHN0YXRpYyhh
cmcxLCBhcmcyKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZGVmIHN0YXRpYyhhcmcxLCBh
cmcyLCB4PTEpOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAg
ICBhc3NlcnQgZ2V0ZnVuY2FyZ25hbWVzKEEuc3RhdGljLCBjbHM9QSkgPT0gKCJhcmcxIiwgImFy
ZzIiKQorCisKK2RlZiB0ZXN0X2dldGZ1bmNhcmduYW1lc19wYXJ0aWFsKCk6CisgICAgIiIiQ2hl
Y2sgZ2V0ZnVuY2FyZ25hbWVzIGZvciBtZXRob2RzIGRlZmluZWQgd2l0aCBmdW5jdG9vbHMucGFy
dGlhbCAoIzU3MDEpIiIiCisgICAgaW1wb3J0IGZ1bmN0b29scworCisgICAgZGVmIGNoZWNrKGFy
ZzEsIGFyZzIsIGkpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAg
IGNsYXNzIFQ6CisgICAgICAgIHRlc3Rfb2sgPSBmdW5jdG9vbHMucGFydGlhbChjaGVjaywgaT0y
KQorCisgICAgdmFsdWVzID0gZ2V0ZnVuY2FyZ25hbWVzKFQoKS50ZXN0X29rLCBuYW1lPSJ0ZXN0
X29rIikKKyAgICBhc3NlcnQgdmFsdWVzID09ICgiYXJnMSIsICJhcmcyIikKKwogCi0gICAgYXNz
ZXJ0IGZpeHR1cmVzLmdldGZ1bmNhcmduYW1lcyhBKCkuZikgPT0gKCJhcmcxIiwpCi0gICAgYXNz
ZXJ0IGZpeHR1cmVzLmdldGZ1bmNhcmduYW1lcyhBLnN0YXRpYywgY2xzPUEpID09ICgiYXJnMSIs
ICJhcmcyIikKK2RlZiB0ZXN0X2dldGZ1bmNhcmduYW1lc19zdGF0aWNtZXRob2RfcGFydGlhbCgp
OgorICAgICIiIkNoZWNrIGdldGZ1bmNhcmduYW1lcyBmb3Igc3RhdGljbWV0aG9kcyBkZWZpbmVk
IHdpdGggZnVuY3Rvb2xzLnBhcnRpYWwgKCM1NzAxKSIiIgorICAgIGltcG9ydCBmdW5jdG9vbHMK
IAorICAgIGRlZiBjaGVjayhhcmcxLCBhcmcyLCBpKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcigpCiAKLWNsYXNzIFRlc3RGaWxsRml4dHVyZXMob2JqZWN0KToKKyAgICBjbGFz
cyBUOgorICAgICAgICB0ZXN0X29rID0gc3RhdGljbWV0aG9kKGZ1bmN0b29scy5wYXJ0aWFsKGNo
ZWNrLCBpPTIpKQogCisgICAgdmFsdWVzID0gZ2V0ZnVuY2FyZ25hbWVzKFQoKS50ZXN0X29rLCBu
YW1lPSJ0ZXN0X29rIikKKyAgICBhc3NlcnQgdmFsdWVzID09ICgiYXJnMSIsICJhcmcyIikKKwor
CitAcHl0ZXN0Lm1hcmsucHl0ZXN0ZXJfZXhhbXBsZV9wYXRoKCJmaXh0dXJlcy9maWxsX2ZpeHR1
cmVzIikKK2NsYXNzIFRlc3RGaWxsRml4dHVyZXM6CiAgICAgZGVmIHRlc3RfZmlsbGZ1bmNhcmdz
X2V4cG9zZWQoc2VsZik6CiAgICAgICAgICMgdXNlZCBieSBvZWpza2l0LCBrZXB0IGZvciBjb21w
YXRpYmlsaXR5CiAgICAgICAgIGFzc2VydCBweXRlc3QuX2ZpbGxmdW5jYXJncyA9PSBmaXh0dXJl
cy5maWxsZml4dHVyZXMKIAogICAgIGRlZiB0ZXN0X2Z1bmNhcmdfbG9va3VwZmFpbHMoc2VsZiwg
dGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK
LSAgICAgICAgICAgIGRlZiB4eXpzb21ldGhpbmcocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIDQyCi0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc29tZSk6Ci0gICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAiIiIKLSAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLmNvcHlf
ZXhhbXBsZSgpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkgICMgIi0tY29s
bGVjdC1vbmx5IikKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMAogICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBbIipkZWYgdGVzdF9mdW5jKHNv
bWUpKiIsICIqZml4dHVyZSpzb21lKm5vdCBmb3VuZCoiLCAiKnh5enNvbWV0aGluZyoiXQotICAg
ICAgICApCi0KLSAgICBkZWYgdGVzdF9mdW5jYXJnX2Jhc2ljKHNlbGYsIHRlc3RkaXIpOgotICAg
ICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAqZGVmIHRlc3RfZnVuYyhzb21lKSoKKyAgICAg
ICAgICAgICpmaXh0dXJlKnNvbWUqbm90IGZvdW5kKgorICAgICAgICAgICAgKnh5enNvbWV0aGlu
ZyoKKyAgICAgICAgICAgICIiIgorICAgICAgICApCiAKLSAgICAgICAgICAgIEBweXRlc3QuZml4
dHVyZQotICAgICAgICAgICAgZGVmIHNvbWUocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX18KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZQotICAgICAgICAgICAgZGVmIG90aGVyKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVy
biA0MgotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYyhzb21lLCBvdGhlcik6Ci0gICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAiIiIKKyAgICBkZWYgdGVzdF9kZXRlY3RfcmVjdXJzaXZlX2Rl
cGVuZGVuY3lfZXJyb3Ioc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIuY29weV9leGFt
cGxlKCkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbIipyZWN1cnNpdmUgZGVwZW5k
ZW5jeSBpbnZvbHZpbmcgZml4dHVyZSAnZml4MScgZGV0ZWN0ZWQqIl0KICAgICAgICAgKQotICAg
ICAgICBmaXh0dXJlcy5maWxsZml4dHVyZXMoaXRlbSkKKworICAgIGRlZiB0ZXN0X2Z1bmNhcmdf
YmFzaWMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCkKKyAg
ICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbShQYXRoKCJ0ZXN0X2Z1bmNhcmdfYmFzaWMucHki
KSkKKyAgICAgICAgaXRlbS5fcmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkKICAgICAgICAgZGVsIGl0
ZW0uZnVuY2FyZ3NbInJlcXVlc3QiXQogICAgICAgICBhc3NlcnQgbGVuKGdldF9wdWJsaWNfbmFt
ZXMoaXRlbS5mdW5jYXJncykpID09IDIKICAgICAgICAgYXNzZXJ0IGl0ZW0uZnVuY2FyZ3NbInNv
bWUiXSA9PSAidGVzdF9mdW5jIgogICAgICAgICBhc3NlcnQgaXRlbS5mdW5jYXJnc1sib3RoZXIi
XSA9PSA0MgogCiAgICAgZGVmIHRlc3RfZnVuY2FyZ19sb29rdXBfbW9kdWxlbGV2ZWwoc2VsZiwg
dGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK
LSAgICAgICAgICAgIGRlZiBzb21ldGhpbmcocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlcXVlc3QuZnVuY3Rpb24uX19uYW1lX18KLQotICAgICAgICAgICAgY2xhc3MgVGVzdENs
YXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYsIHNvbWV0
aGluZyk6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBzb21ldGhpbmcgPT0gInRlc3RfbWV0
aG9kIgotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYyhzb21ldGhpbmcpOgotICAgICAgICAgICAg
ICAgIGFzc2VydCBzb21ldGhpbmcgPT0gInRlc3RfZnVuYyIKLSAgICAgICAgIiIiCi0gICAgICAg
ICkKKyAgICAgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoKQogICAgICAgICByZXByZWMgPSB0ZXN0
ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MikK
IAogICAgIGRlZiB0ZXN0X2Z1bmNhcmdfbG9va3VwX2NsYXNzbGV2ZWwoc2VsZiwgdGVzdGRpcik6
Ci0gICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3Qp
OgotCi0gICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICAgICAgZGVm
IHNvbWV0aGluZyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
cXVlc3QuaW5zdGFuY2UKLQotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmLCBz
b21ldGhpbmcpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgc29tZXRoaW5nIGlzIHNlbGYK
LSAgICAgICAgIiIiCi0gICAgICAgICkKKyAgICAgICAgcCA9IHRlc3RkaXIuY29weV9leGFtcGxl
KCkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQogCiAgICAgZGVmIHRlc3RfY29u
ZnRlc3RfZnVuY2FyZ3Nfb25seV9hdmFpbGFibGVfaW5fc3ViZGlyKHNlbGYsIHRlc3RkaXIpOgot
ICAgICAgICBzdWIxID0gdGVzdGRpci5ta3B5ZGlyKCJzdWIxIikKLSAgICAgICAgc3ViMiA9IHRl
c3RkaXIubWtweWRpcigic3ViMiIpCi0gICAgICAgIHN1YjEuam9pbigiY29uZnRlc3QucHkiKS53
cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAg
ICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0
dXJlCi0gICAgICAgICAgICBkZWYgYXJnMShyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBweXRl
c3QucmFpc2VzKEV4Y2VwdGlvbiwgInJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCdhcmcyJykiKQot
ICAgICAgICAiIiIKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICBzdWIyLmpvaW4o
ImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgK
LSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGFyZzIocmVxdWVzdCk6Ci0gICAg
ICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sICJyZXF1ZXN0LmdldGZpeHR1cmV2
YWx1ZSgnYXJnMScpIikKLSAgICAgICAgIiIiCi0gICAgICAgICAgICApCi0gICAgICAgICkKLQot
ICAgICAgICBzdWIxLmpvaW4oInRlc3RfaW5fc3ViMS5weSIpLndyaXRlKCJkZWYgdGVzdF8xKGFy
ZzEpOiBwYXNzIikKLSAgICAgICAgc3ViMi5qb2luKCJ0ZXN0X2luX3N1YjIucHkiKS53cml0ZSgi
ZGVmIHRlc3RfMihhcmcyKTogcGFzcyIpCisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCkK
ICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKICAgICAgICAgcmVzdWx0
LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MikKIAogICAgIGRlZiB0ZXN0X2V4dGVuZF9maXh0dXJl
X21vZHVsZV9jbGFzcyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGZpbGUgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
LQotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgc3BhbSgpOgot
ICAgICAgICAgICAgICAgIHJldHVybiAnc3BhbScKLQotICAgICAgICAgICAgY2xhc3MgVGVzdFNw
YW0ob2JqZWN0KToKLQotICAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAg
ICAgICAgICAgZGVmIHNwYW0oc2VsZiwgc3BhbSk6Ci0gICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc3BhbSAqIDIKLQotICAgICAgICAgICAgICAgICBkZWYgdGVzdF9zcGFtKHNlbGYsIHNwYW0p
OgotICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0gPT0gJ3NwYW1zcGFtJwotICAgICAg
ICAiIiIKLSAgICAgICAgKQorICAgICAgICB0ZXN0ZmlsZSA9IHRlc3RkaXIuY29weV9leGFtcGxl
KCkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCiAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHRlc3RmaWxlKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoWyIqMSBwYXNzZWQqIl0pCiAKICAgICBkZWYgdGVzdF9leHRlbmRfZml4dHVyZV9jb25m
dGVzdF9tb2R1bGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0
KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIHNwYW0oKToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gJ3NwYW0nCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHRlc3Rm
aWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0Ci0KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAg
ZGVmIHNwYW0oc3BhbSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNwYW0gKiAyCi0KLSAgICAg
ICAgICAgIGRlZiB0ZXN0X3NwYW0oc3BhbSk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0g
PT0gJ3NwYW1zcGFtJwotICAgICAgICAiIiIKLSAgICAgICAgKQorICAgICAgICBwID0gdGVzdGRp
ci5jb3B5X2V4YW1wbGUoKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKLSAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdGZpbGUpCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KHN0cihuZXh0KFBhdGgoc3RyKHApKS5yZ2xvYigidGVzdF8qLnB5
IikpKSkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJd
KQogCiAgICAgZGVmIHRlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfY29uZnRlc3Qoc2VsZiwg
dGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAgICAgIiIi
Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZQotICAgICAgICAgICAgZGVmIHNwYW0oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ3NwYW0n
Ci0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHBrZyA9IHRlc3RkaXIubWtweWRpcigi
cGtnIikKLSAgICAgICAgcGtnLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgICAg
ICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAg
ICBkZWYgc3BhbShzcGFtKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BhbSAqIDIKLSAgICAg
ICAgIiIiCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgdGVzdGZpbGUgPSBwa2cu
am9pbigidGVzdF9zcGFtLnB5IikKLSAgICAgICAgdGVzdGZpbGUud3JpdGUoCi0gICAgICAgICAg
ICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
IGRlZiB0ZXN0X3NwYW0oc3BhbSk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0gPT0gInNw
YW1zcGFtIgotICAgICAgICAiIiIKLSAgICAgICAgICAgICkKLSAgICAgICAgKQorICAgICAgICBw
ID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoi
XSkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdGZpbGUpCisgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0cihuZXh0KFBhdGgoc3RyKHApKS5yZ2xvYigi
dGVzdF8qLnB5IikpKSkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEg
cGFzc2VkKiJdKQogCiAgICAgZGVmIHRlc3RfZXh0ZW5kX2ZpeHR1cmVfY29uZnRlc3RfcGx1Z2lu
KHNlbGYsIHRlc3RkaXIpOgpAQCAtMzQ0LDIzICsyNTcsMjMgQEAgY2xhc3MgVGVzdEZpbGxGaXh0
dXJlcyhvYmplY3QpOgogICAgICAgICApCiAgICAgICAgIHN1YmRpciA9IHRlc3RkaXIubWtweWRp
cigic3ViZGlyIikKICAgICAgICAgc3ViZGlyLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0g
ICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAg
ICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBzcGFtKCk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuICdzcGFtJwotICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBAcHl0
ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgICAgICBkZWYgc3BhbSgpOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gJ3NwYW0nCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAg
ICAgICAgICkKICAgICAgICAgdGVzdGZpbGUgPSBzdWJkaXIuam9pbigidGVzdF9zcGFtLnB5IikK
ICAgICAgICAgdGVzdGZpbGUud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJj
ZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisg
ICAgICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShzcGFtKToKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0IHNwYW0gPT0gInNwYW0iCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBk
ZWYgdGVzdF9zcGFtKHNwYW0pOgotICAgICAgICAgICAgICAgIGFzc2VydCBzcGFtID09ICJzcGFt
IgotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCkBAIC00MTIsMjYgKzMyNSwyNiBAQCBjbGFzcyBUZXN0Rmls
bEZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgc3ViZGlyID0gdGVzdGRpci5t
a3B5ZGlyKCJzdWJkaXIiKQogICAgICAgICBzdWJkaXIuam9pbigiY29uZnRlc3QucHkiKS53cml0
ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIi
IgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50
KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAK
LSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzEsIDIsIDNdKQotICAgICAgICAg
ICAgZGVmIHNwYW0ocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFy
YW0KLSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1b
MSwgMiwgM10pCisgICAgICAgICAgICAgICAgZGVmIHNwYW0ocmVxdWVzdCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCisgICAgICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgdGVzdGZpbGUgPSBzdWJkaXIuam9pbigidGVz
dF9zcGFtLnB5IikKICAgICAgICAgdGVzdGZpbGUud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0
Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIHBhcmFtcyA9
IHsnc3BhbSc6IDF9CisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAg
ICAgIiIiXAorICAgICAgICAgICAgICAgIHBhcmFtcyA9IHsnc3BhbSc6IDF9CiAKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X3NwYW0oc3BhbSk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0gPT0g
cGFyYW1zWydzcGFtJ10KLSAgICAgICAgICAgICAgICBwYXJhbXNbJ3NwYW0nXSArPSAxCi0gICAg
ICAgICIiIgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3NwYW0oc3BhbSk6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBzcGFtID09IHBhcmFtc1snc3BhbSddCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1snc3BhbSddICs9IDEKKyAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
ICkKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCkBAIC00
NTYsMjYgKzM2OSwyNiBAQCBjbGFzcyBUZXN0RmlsbEZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAg
ICkKICAgICAgICAgc3ViZGlyID0gdGVzdGRpci5ta3B5ZGlyKCJzdWJkaXIiKQogICAgICAgICBz
dWJkaXIuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2Nv
ZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZShwYXJhbXM9WzEsIDIsIDNdKQotICAgICAgICAgICAgZGVmIHNwYW0ocmVxdWVzdCk6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KLSAgICAgICAgIiIiCisgICAgICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bMSwgMiwgM10pCisgICAgICAgICAgICAgICAg
ZGVmIHNwYW0ocmVxdWVzdCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBh
cmFtCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAg
ICAgdGVzdGZpbGUgPSBzdWJkaXIuam9pbigidGVzdF9zcGFtLnB5IikKICAgICAgICAgdGVzdGZp
bGUud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIHBhcmFtcyA9IHsnc3BhbSc6IDF9CisgICAgICAgICAgICB0
ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIHBh
cmFtcyA9IHsnc3BhbSc6IDF9CiAKLSAgICAgICAgICAgIGRlZiB0ZXN0X3NwYW0oc3BhbSk6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0IHNwYW0gPT0gcGFyYW1zWydzcGFtJ10KLSAgICAgICAgICAg
ICAgICBwYXJhbXNbJ3NwYW0nXSArPSAxCi0gICAgICAgICIiIgorICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0X3NwYW0oc3BhbSk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzcGFtID09IHBh
cmFtc1snc3BhbSddCisgICAgICAgICAgICAgICAgICAgIHBhcmFtc1snc3BhbSddICs9IDEKKyAg
ICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCkBAIC00ODMsNiArMzk2LDEzMiBAQCBjbGFzcyBUZXN0
RmlsbEZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KHRlc3RmaWxlKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMyBwYXNz
ZWQqIl0pCiAKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9maXh0dXJlX3JldXNpbmdfc3VwZXJfZml4
dHVyZV9wYXJhbWV0cml6YXRpb24oc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIk92ZXJyaWRl
IGEgZml4dHVyZSBhdCBhIGxvd2VyIGxldmVsLCByZXVzaW5nIHRoZSBoaWdoZXItbGV2ZWwgZml4
dHVyZSB0aGF0CisgICAgICAgIGlzIHBhcmFtZXRyaXplZCAoIzE5NTMpLgorICAgICAgICAiIiIK
KyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1b
MSwgMl0pCisgICAgICAgICAgICBkZWYgZm9vKHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHJl
dHVybiByZXF1ZXN0LnBhcmFtCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgZm9v
KGZvbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvbyAqIDIKKworICAgICAgICAgICAgZGVm
IHRlc3Rfc3BhbShmb28pOgorICAgICAgICAgICAgICAgIGFzc2VydCBmb28gaW4gKDIsIDQpCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCoi
XSkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX3BhcmFtZXRyaXplX2ZpeHR1cmVfYW5kX2luZGly
ZWN0KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJPdmVycmlkZSBhIGZpeHR1cmUgYXQgYSBs
b3dlciBsZXZlbCwgcmV1c2luZyB0aGUgaGlnaGVyLWxldmVsIGZpeHR1cmUgdGhhdAorICAgICAg
ICBpcyBwYXJhbWV0cml6ZWQsIHdoaWxlIGFsc28gdXNpbmcgaW5kaXJlY3QgcGFyYW1ldHJpemF0
aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgQHB5dGVz
dC5maXh0dXJlKHBhcmFtcz1bMSwgMl0pCisgICAgICAgICAgICBkZWYgZm9vKHJlcXVlc3QpOgor
ICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisg
ICAgICAgICAgICBkZWYgZm9vKGZvbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvbyAqIDIK
KworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgYmFyKHJlcXVl
c3QpOgorICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtICogMTAwCisKKyAgICAg
ICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYmFyIiwgWzQyXSwgaW5kaXJlY3Q9VHJ1
ZSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X3NwYW0oYmFyLCBmb28pOgorICAgICAgICAgICAgICAg
IGFzc2VydCBiYXIgPT0gNDIwMAorICAgICAgICAgICAgICAgIGFzc2VydCBmb28gaW4gKDIsIDQp
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3Nl
ZCoiXSkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX3RvcF9sZXZlbF9maXh0dXJlX3JldXNpbmdf
c3VwZXJfZml4dHVyZV9wYXJhbWV0cml6YXRpb24oCisgICAgICAgIHNlbGYsIHRlc3RkaXIKKyAg
ICApOgorICAgICAgICAiIiJTYW1lIGFzIHRoZSBhYm92ZSB0ZXN0LCBidXQgd2l0aCBhbm90aGVy
IGxldmVsIG9mIG92ZXJ3cml0aW5nLiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgK
KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAg
ICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsndW51c2VkJywgJ3VudXNlZCddKQorICAgICAgICAg
ICAgZGVmIGZvbyhyZXF1ZXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJh
bQorICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzEsIDJdKQorICAgICAgICAgICAgZGVmIGZvbyhy
ZXF1ZXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQorCisgICAgICAg
ICAgICBjbGFzcyBUZXN0OgorCisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCBmb28pOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZm9vICogMgorCisgICAgICAgICAgICAgICAgZGVmIHRlc3Rfc3BhbShzZWxmLCBmb28pOgor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZm9vIGluICgyLCA0KQorICAgICAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNzZWQqIl0pCisKKyAgICBkZWYg
dGVzdF9vdmVycmlkZV9wYXJhbWV0cml6ZWRfZml4dHVyZV93aXRoX25ld19wYXJhbWV0cml6ZWRf
Zml4dHVyZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiT3ZlcnJpZGluZyBhIHBhcmFtZXRy
aXplZCBmaXh0dXJlLCB3aGlsZSBhbHNvIHBhcmFtZXRyaXppbmcgdGhlIG5ldyBmaXh0dXJlIGFu
ZAorICAgICAgICBzaW11bHRhbmVvdXNseSByZXF1ZXN0aW5nIHRoZSBvdmVyd3JpdHRlbiBmaXh0
dXJlIGFzIHBhcmFtZXRlciwgeWllbGRzIHRoZSBzYW1lIHZhbHVlCisgICAgICAgIGFzIGBgcmVx
dWVzdC5wYXJhbWBgLgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3Qo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAg
ICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bJ2lnbm9yZWQnLCAnaWdub3JlZCddKQorICAgICAg
ICAgICAgZGVmIGZvbyhyZXF1ZXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5w
YXJhbQorICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAg
ICAgICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WzEwLCAyMF0pCisgICAgICAgICAgICBkZWYg
Zm9vKGZvbywgcmVxdWVzdCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3QucGFyYW0g
PT0gZm9vCisgICAgICAgICAgICAgICAgcmV0dXJuIGZvbyAqIDIKKworICAgICAgICAgICAgZGVm
IHRlc3Rfc3BhbShmb28pOgorICAgICAgICAgICAgICAgIGFzc2VydCBmb28gaW4gKDIwLCA0MCkK
KyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2Vk
KiJdKQorCiAgICAgZGVmIHRlc3RfYXV0b3VzZV9maXh0dXJlX3BsdWdpbihzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgIyBBIGZpeHR1cmUgZnJvbSBhIHBsdWdpbiBoYXMgbm8gYmFzZWlkIHNldCwg
d2hpY2ggc2NyZXdlZCB1cAogICAgICAgICAjIHRoZSBhdXRvdXNlIGZpeHR1cmUgaGFuZGxpbmcu
CkBAIC01MzcsMTIgKzU3NiwxMyBAQCBjbGFzcyBUZXN0RmlsbEZpeHR1cmVzKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgIipFUlJPUiBhdCBzZXR1cCBvZiB0ZXN0X2xvb2t1cF9lcnJvcioiLAog
ICAgICAgICAgICAgICAgICIgIGRlZiB0ZXN0X2xvb2t1cF9lcnJvcih1bmtub3duKToqIiwKICAg
ICAgICAgICAgICAgICAiRSAgICAgICBmaXh0dXJlICd1bmtub3duJyBub3QgZm91bmQiLAotICAg
ICAgICAgICAgICAgICI+ICAgICAgIGF2YWlsYWJsZSBmaXh0dXJlczoqYV9maXh0dXJlLCpiX2Zp
eHR1cmUsKmNfZml4dHVyZSwqZF9maXh0dXJlKm1vbmtleXBhdGNoLCoiLCAgIyBzb3J0ZWQKKyAg
ICAgICAgICAgICAgICAiPiAgICAgICBhdmFpbGFibGUgZml4dHVyZXM6KmFfZml4dHVyZSwqYl9m
aXh0dXJlLCpjX2ZpeHR1cmUsKmRfZml4dHVyZSptb25rZXlwYXRjaCwqIiwKKyAgICAgICAgICAg
ICAgICAjIHNvcnRlZAogICAgICAgICAgICAgICAgICI+ICAgICAgIHVzZSAncHkqdGVzdCAtLWZp
eHR1cmVzIConIGZvciBoZWxwIG9uIHRoZW0uIiwKICAgICAgICAgICAgICAgICAiKjEgZXJyb3Iq
IiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQotICAgICAgICBhc3NlcnQgIklOVEVSTkFMIiBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0
Y2hfbGluZSgiKklOVEVSTkFMKiIpCiAKICAgICBkZWYgdGVzdF9maXh0dXJlX2V4Y2luZm9fbGVh
ayhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIyBvbiBweXRob24yIHN5cy5leGNpbmZvIHdvdWxk
IGxlYWsgaW50byBmaXh0dXJlIGV4ZWN1dGlvbnMKQEAgLTU2OSw4ICs2MDksNyBAQCBjbGFzcyBU
ZXN0RmlsbEZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAK
IAogCi1jbGFzcyBUZXN0UmVxdWVzdEJhc2ljKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RSZXF1ZXN0
QmFzaWM6CiAgICAgZGVmIHRlc3RfcmVxdWVzdF9hdHRyaWJ1dGVzKHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAogICAgICAgICAgICAgIiIiCkBAIC01OTEs
NyArNjMwLDcgQEAgY2xhc3MgVGVzdFJlcXVlc3RCYXNpYyhvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgcmVwcihyZXEpLmZpbmQocmVxLmZ1bmN0aW9uLl9fbmFtZV9fKSAhPSAtMQogCiAgICAgZGVm
IHRlc3RfcmVxdWVzdF9hdHRyaWJ1dGVzX21ldGhvZChzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAg
aXRlbSwgPSB0ZXN0ZGlyLmdldGl0ZW1zKAorICAgICAgICAoaXRlbSwpID0gdGVzdGRpci5nZXRp
dGVtcygKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAg
ICAgICAgY2xhc3MgVGVzdEIob2JqZWN0KToKQEAgLTYxOSwxMyArNjU4LDIzIEBAIGNsYXNzIFRl
c3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAg
ICAiIiIKICAgICAgICAgKQotICAgICAgICBpdGVtMSwgPSB0ZXN0ZGlyLmdlbml0ZW1zKFttb2Rj
b2xdKQorICAgICAgICAoaXRlbTEsKSA9IHRlc3RkaXIuZ2VuaXRlbXMoW21vZGNvbF0pCiAgICAg
ICAgIGFzc2VydCBpdGVtMS5uYW1lID09ICJ0ZXN0X21ldGhvZCIKICAgICAgICAgYXJnMmZpeHR1
cmVkZWZzID0gZml4dHVyZXMuRml4dHVyZVJlcXVlc3QoaXRlbTEpLl9hcmcyZml4dHVyZWRlZnMK
ICAgICAgICAgYXNzZXJ0IGxlbihhcmcyZml4dHVyZWRlZnMpID09IDEKICAgICAgICAgYXNzZXJ0
IGFyZzJmaXh0dXJlZGVmc1sic29tZXRoaW5nIl1bMF0uYXJnbmFtZSA9PSAic29tZXRoaW5nIgog
CisgICAgQHB5dGVzdC5tYXJrLnNraXBpZigKKyAgICAgICAgaGFzYXR0cihzeXMsICJweXB5X3Zl
cnNpb25faW5mbyIpLAorICAgICAgICByZWFzb249InRoaXMgbWV0aG9kIG9mIHRlc3QgZG9lc24n
dCB3b3JrIG9uIHB5cHkiLAorICAgICkKICAgICBkZWYgdGVzdF9yZXF1ZXN0X2dhcmJhZ2Uoc2Vs
ZiwgdGVzdGRpcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB4ZGlzdCAgIyBu
b3FhCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHB5dGVzdC54ZmFpbCgidGhpcyB0ZXN0IGlzIGZsYWt5IHdo
ZW4gZXhlY3V0ZWQgd2l0aCB4ZGlzdCIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHN5cwpAQCAtNjM1LDMzICs2ODQsMjUg
QEAgY2xhc3MgVGVzdFJlcXVlc3RCYXNpYyhvYmplY3QpOgogCiAgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQogICAgICAgICAgICAgZGVmIHNvbWV0aGluZyhyZXF1ZXN0
KToKLSAgICAgICAgICAgICAgICAjIHRoaXMgbWV0aG9kIG9mIHRlc3QgZG9lc24ndCB3b3JrIG9u
IHB5cHkKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZv
Iik6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSBnYy5nZXRfZGVidWcoKQotICAgICAgICAgICAg
ICAgICAgICBnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKLSAgICAgICAgICAgICAgICAg
ICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSBnYy5nZXRfZGVidWco
KQorICAgICAgICAgICAgICAgIGdjLnNldF9kZWJ1ZyhnYy5ERUJVR19TQVZFQUxMKQorICAgICAg
ICAgICAgICAgIGdjLmNvbGxlY3QoKQogCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkCisgICAg
ICAgICAgICAgICAgeWllbGQKIAorICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIGxlYWtlZF90eXBlcyA9IHN1
bSgxIGZvciBfIGluIGdjLmdhcmJhZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoXywgUHNldWRvRml4dHVyZURlZikpCi0KLSAgICAgICAgICAg
ICAgICAgICAgZ2MuZ2FyYmFnZVs6XSA9IFtdCi0KLSAgICAgICAgICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGxlYWtlZF90eXBlcyA9PSAwCi0gICAgICAg
ICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBnYy5zZXRfZGVi
dWcob3JpZ2luYWwpCisgICAgICAgICAgICAgICAgICAgIGxlYWtlZCA9IFt4IGZvciBfIGluIGdj
LmdhcmJhZ2UgaWYgaXNpbnN0YW5jZShfLCBQc2V1ZG9GaXh0dXJlRGVmKV0KKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0IGxlYWtlZCA9PSBbXQorICAgICAgICAgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICAgICAgICAgIGdjLnNldF9kZWJ1ZyhvcmlnaW5hbCkKIAogICAgICAgICAgICAg
ZGVmIHRlc3RfZnVuYygpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAg
ICAgICkKLSAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyIqIDEgcGFzc2VkIGluICoiXSkKIAogICAgIGRlZiB0ZXN0X2dldGZpeHR1cmV2YWx1ZV9yZWN1
cnNpdmUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KApAQCAt
Njg3LDggKzcyOCw0NSBAQCBjbGFzcyBUZXN0UmVxdWVzdEJhc2ljKG9iamVjdCk6CiAgICAgICAg
IHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRj
b21lKHBhc3NlZD0xKQogCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJnZXRmaXhtZXRo
b2QiLCAoImdldGZpeHR1cmV2YWx1ZSIsICJnZXRmdW5jYXJndmFsdWUiKSkKLSAgICBkZWYgdGVz
dF9nZXRmaXh0dXJldmFsdWUoc2VsZiwgdGVzdGRpciwgZ2V0Zml4bWV0aG9kKToKKyAgICBkZWYg
dGVzdF9nZXRmaXh0dXJldmFsdWVfdGVhcmRvd24oc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIi
IgorICAgICAgICBJc3N1ZSAjMTg5NQorCisgICAgICAgIGB0ZXN0X2lubmVyYCByZXF1ZXN0cyBg
aW5uZXJgIGZpeHR1cmUsIHdoaWNoIGluIHR1cm4gcmVxdWVzdHMgYHJlc291cmNlYAorICAgICAg
ICB1c2luZyBgZ2V0Zml4dHVyZXZhbHVlYC4gYHRlc3RfZnVuY2AgdGhlbiByZXF1ZXN0cyBgcmVz
b3VyY2VgLgorCisgICAgICAgIGByZXNvdXJjZWAgaXMgdGVhcmRvd24gYmVmb3JlIGBpbm5lcmAg
YmVjYXVzZSB0aGUgZml4dHVyZSBtZWNoYW5pc20gd29uJ3QgY29uc2lkZXIKKyAgICAgICAgYGlu
bmVyYCBkZXBlbmRlbnQgb24gYHJlc291cmNlYCB3aGVuIGl0IGlzIHVzZWQgdmlhIGBnZXRmaXh0
dXJldmFsdWVgOiBgdGVzdF9mdW5jYAorICAgICAgICB3aWxsIHRoZW4gY2F1c2UgdGhlIGByZXNv
dXJjZWAncyBmaW5hbGl6ZXIgdG8gYmUgY2FsbGVkIGZpcnN0IGJlY2F1c2Ugb2YgdGhpcy4KKyAg
ICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUo
c2NvcGU9J3Nlc3Npb24nKQorICAgICAgICAgICAgZGVmIHJlc291cmNlKCk6CisgICAgICAgICAg
ICAgICAgciA9IFsndmFsdWUnXQorICAgICAgICAgICAgICAgIHlpZWxkIHIKKyAgICAgICAgICAg
ICAgICByLnBvcCgpCisKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nc2Vzc2lv
bicpCisgICAgICAgICAgICBkZWYgaW5uZXIocmVxdWVzdCk6CisgICAgICAgICAgICAgICAgcmVz
b3VyY2UgPSByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgncmVzb3VyY2UnKQorICAgICAgICAgICAg
ICAgIGFzc2VydCByZXNvdXJjZSA9PSBbJ3ZhbHVlJ10KKyAgICAgICAgICAgICAgICB5aWVsZAor
ICAgICAgICAgICAgICAgIGFzc2VydCByZXNvdXJjZSA9PSBbJ3ZhbHVlJ10KKworICAgICAgICAg
ICAgZGVmIHRlc3RfaW5uZXIoaW5uZXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICAgICAgZGVmIHRlc3RfZnVuYyhyZXNvdXJjZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAg
ICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMiBwYXNzZWQgaW4gKiJd
KQorCisgICAgZGVmIHRlc3RfZ2V0Zml4dHVyZXZhbHVlKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CkBAIC03MDEsMzUgKzc3OSwyMiBAQCBjbGFzcyBUZXN0UmVxdWVzdEJhc2lj
KG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKHNvbWV0aGluZyk6IHBhc3MKICAg
ICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgaW1wb3J0IGNvbnRleHRsaWIKLQotICAgICAg
ICBpZiBnZXRmaXhtZXRob2QgPT0gImdldGZ1bmNhcmd2YWx1ZSI6Ci0gICAgICAgICAgICB3YXJu
aW5nX2V4cGVjdGF0aW9uID0gcHl0ZXN0Lndhcm5zKERlcHJlY2F0aW9uV2FybmluZykKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICMgc2VlICMxODMwIGZvciBhIGNsZWFuZXIgd2F5IHRvIGFj
Y29tcGxpc2ggdGhpcwotICAgICAgICAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAg
ICAgICAgICAgIGRlZiBleHBlY3Rpbmdfbm9fd2FybmluZygpOgotICAgICAgICAgICAgICAgIHlp
ZWxkCi0KLSAgICAgICAgICAgIHdhcm5pbmdfZXhwZWN0YXRpb24gPSBleHBlY3Rpbmdfbm9fd2Fy
bmluZygpCi0KICAgICAgICAgcmVxID0gaXRlbS5fcmVxdWVzdAotICAgICAgICB3aXRoIHdhcm5p
bmdfZXhwZWN0YXRpb246Ci0gICAgICAgICAgICBmaXh0dXJlX2ZldGNoZXIgPSBnZXRhdHRyKHJl
cSwgZ2V0Zml4bWV0aG9kKQotICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEZpeHR1cmVM
b29rdXBFcnJvcik6Ci0gICAgICAgICAgICAgICAgZml4dHVyZV9mZXRjaGVyKCJub3RleGlzdHMi
KQotICAgICAgICAgICAgdmFsID0gZml4dHVyZV9mZXRjaGVyKCJzb21ldGhpbmciKQotICAgICAg
ICAgICAgYXNzZXJ0IHZhbCA9PSAxCi0gICAgICAgICAgICB2YWwgPSBmaXh0dXJlX2ZldGNoZXIo
InNvbWV0aGluZyIpCi0gICAgICAgICAgICBhc3NlcnQgdmFsID09IDEKLSAgICAgICAgICAgIHZh
bDIgPSBmaXh0dXJlX2ZldGNoZXIoIm90aGVyIikKLSAgICAgICAgICAgIGFzc2VydCB2YWwyID09
IDIKLSAgICAgICAgICAgIHZhbDIgPSBmaXh0dXJlX2ZldGNoZXIoIm90aGVyIikgICMgc2VlIGFi
b3V0IGNhY2hpbmcKLSAgICAgICAgICAgIGFzc2VydCB2YWwyID09IDIKLSAgICAgICAgICAgIHB5
dGVzdC5fZmlsbGZ1bmNhcmdzKGl0ZW0pCi0gICAgICAgICAgICBhc3NlcnQgaXRlbS5mdW5jYXJn
c1sic29tZXRoaW5nIl0gPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGxlbihnZXRfcHVibGljX25h
bWVzKGl0ZW0uZnVuY2FyZ3MpKSA9PSAyCi0gICAgICAgICAgICBhc3NlcnQgInJlcXVlc3QiIGlu
IGl0ZW0uZnVuY2FyZ3MKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LkZpeHR1
cmVMb29rdXBFcnJvcik6CisgICAgICAgICAgICByZXEuZ2V0Zml4dHVyZXZhbHVlKCJub3RleGlz
dHMiKQorICAgICAgICB2YWwgPSByZXEuZ2V0Zml4dHVyZXZhbHVlKCJzb21ldGhpbmciKQorICAg
ICAgICBhc3NlcnQgdmFsID09IDEKKyAgICAgICAgdmFsID0gcmVxLmdldGZpeHR1cmV2YWx1ZSgi
c29tZXRoaW5nIikKKyAgICAgICAgYXNzZXJ0IHZhbCA9PSAxCisgICAgICAgIHZhbDIgPSByZXEu
Z2V0Zml4dHVyZXZhbHVlKCJvdGhlciIpCisgICAgICAgIGFzc2VydCB2YWwyID09IDIKKyAgICAg
ICAgdmFsMiA9IHJlcS5nZXRmaXh0dXJldmFsdWUoIm90aGVyIikgICMgc2VlIGFib3V0IGNhY2hp
bmcKKyAgICAgICAgYXNzZXJ0IHZhbDIgPT0gMgorICAgICAgICBpdGVtLl9yZXF1ZXN0Ll9maWxs
Zml4dHVyZXMoKQorICAgICAgICBhc3NlcnQgaXRlbS5mdW5jYXJnc1sic29tZXRoaW5nIl0gPT0g
MQorICAgICAgICBhc3NlcnQgbGVuKGdldF9wdWJsaWNfbmFtZXMoaXRlbS5mdW5jYXJncykpID09
IDIKKyAgICAgICAgYXNzZXJ0ICJyZXF1ZXN0IiBpbiBpdGVtLmZ1bmNhcmdzCiAKICAgICBkZWYg
dGVzdF9yZXF1ZXN0X2FkZGZpbmFsaXplcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRlbSA9
IHRlc3RkaXIuZ2V0aXRlbSgKQEAgLTc0Myw3ICs4MDgsNyBAQCBjbGFzcyBUZXN0UmVxdWVzdEJh
c2ljKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIGl0ZW0uc2Vzc2lv
bi5fc2V0dXBzdGF0ZS5wcmVwYXJlKGl0ZW0pCi0gICAgICAgIHB5dGVzdC5fZmlsbGZ1bmNhcmdz
KGl0ZW0pCisgICAgICAgIGl0ZW0uX3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCiAgICAgICAgICMg
c3VjY2Vzc2l2ZWx5IGNoZWNrIGZpbmFsaXphdGlvbiBjYWxscwogICAgICAgICB0ZWFyZG93bmxp
c3QgPSBpdGVtLmdldHBhcmVudChweXRlc3QuTW9kdWxlKS5vYmoudGVhcmRvd25saXN0CiAgICAg
ICAgIHNzID0gaXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlCkBAIC03NTIsMjUgKzgxNyw2IEBAIGNs
YXNzIFRlc3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAgICAgICAgcHJpbnQoc3Muc3RhY2spCiAg
ICAgICAgIGFzc2VydCB0ZWFyZG93bmxpc3QgPT0gWzFdCiAKLSAgICBkZWYgdGVzdF9tYXJrX2Fz
X2ZpeHR1cmVfd2l0aF9wcmVmaXhfYW5kX2RlY29yYXRvcl9mYWlscyhzZWxmLCB0ZXN0ZGlyKToK
LSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAg
ICAgICBkZWYgcHl0ZXN0X2Z1bmNhcmdfX21hcmtlZF93aXRoX3ByZWZpeF9hbmRfZGVjb3JhdG9y
KCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKLSAgICAgICAgYXNzZXJ0
IHJlc3VsdC5yZXQgIT0gMAotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0g
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIipBc3NlcnRpb25FcnJvcjogZml4dHVyZXMg
Y2Fubm90IGhhdmUqQHB5dGVzdC5maXh0dXJlKiIsCi0gICAgICAgICAgICAgICAgIipweXRlc3Rf
ZnVuY2FyZ19fbWFya2VkX3dpdGhfcHJlZml4X2FuZF9kZWNvcmF0b3IqIiwKLSAgICAgICAgICAg
IF0KLSAgICAgICAgKQotCiAgICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRmaW5hbGl6ZXJfZmFpbGlu
Z19zZXR1cChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAg
ICAgICAgICAgIiIiCkBAIC04NjIsNyArOTA4LDcgQEAgY2xhc3MgVGVzdFJlcXVlc3RCYXNpYyhv
YmplY3QpOgogCiAgICAgZGVmIHRlc3RfcmVxdWVzdF9nZXRtb2R1bGVwYXRoKHNlbGYsIHRlc3Rk
aXIpOgogICAgICAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgiZGVmIHRlc3Rfc29t
ZWZ1bmMoKTogcGFzcyIpCi0gICAgICAgIGl0ZW0sID0gdGVzdGRpci5nZW5pdGVtcyhbbW9kY29s
XSkKKyAgICAgICAgKGl0ZW0sKSA9IHRlc3RkaXIuZ2VuaXRlbXMoW21vZGNvbF0pCiAgICAgICAg
IHJlcSA9IGZpeHR1cmVzLkZpeHR1cmVSZXF1ZXN0KGl0ZW0pCiAgICAgICAgIGFzc2VydCByZXEu
ZnNwYXRoID09IG1vZGNvbC5mc3BhdGgKIApAQCAtODgzLDMwICs5MjksMTcgQEAgY2xhc3MgVGVz
dFJlcXVlc3RCYXNpYyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24ocmVx
dWVzdCwgZmFyZyk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNldChnZXRfcHVibGljX25hbWVz
KHJlcXVlc3QuZml4dHVyZW5hbWVzKSkgPT0gXAogICAgICAgICAgICAgICAgICAgICAgICBzZXQo
WyJ0bXBkaXIiLCAic2FyZyIsICJhcmcxIiwgInJlcXVlc3QiLCAiZmFyZyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRtcGRpcl9mYWN0b3J5Il0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRtcF9wYXRoIiwgInRtcF9wYXRoX2ZhY3RvcnkiXSkKICAgICAgICAgIiIiCiAg
ICAgICAgICkKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKICAgICAgICAg
cmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBkZWYgdGVzdF9mdW5jYXJnbmFt
ZXNfY29tcGF0YXR0cihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAg
ICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBh
c3NlcnQgbWV0YWZ1bmMuZnVuY2FyZ25hbWVzID09IG1ldGFmdW5jLmZpeHR1cmVuYW1lcwotICAg
ICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgZm4ocmVxdWVzdCk6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3QuX3B5ZnVuY2l0ZW0uZnVuY2FyZ25hbWVzID09
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5fcHlmdW5jaXRlbS5maXh0dXJlbmFt
ZXMKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5mdW5jYXJnbmFtZXMsIHJlcXVlc3Qu
Zml4dHVyZW5hbWVzCi0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKGZuKToKLSAgICAgICAg
ICAgICAgICBhc3NlcnQgZm5bMF0gPT0gZm5bMV0KLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAg
ICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVwcmVjLmFzc2Vy
dG91dGNvbWUocGFzc2VkPTEpCisgICAgZGVmIHRlc3RfcmVxdWVzdF9maXh0dXJlbmFtZXNfZHlu
YW1pY19maXh0dXJlKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJSZWdyZXNzaW9uIHRlc3Qg
Zm9yICMzMDU3IiIiCisgICAgICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJmaXh0dXJlcy90ZXN0
X2dldGZpeHR1cmV2YWx1ZV9keW5hbWljLnB5IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNz
ZWQqIl0pCiAKICAgICBkZWYgdGVzdF9zZXR1cGRlY29yYXRvcl9hbmRfeHVuaXQoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTk0NCwxMyArOTc3LDEzIEBA
IGNsYXNzIFRlc3RSZXF1ZXN0QmFzaWMob2JqZWN0KToKICAgICAgICAgIyB0aGlzIHRlc3RzIHRo
YXQgbm9ybWFsaXphdGlvbiBvZiBub2RlaWRzIHRha2VzIHBsYWNlCiAgICAgICAgIGIgPSB0ZXN0
ZGlyLm1rZGlyKCJ0ZXN0cyIpLm1rZGlyKCJ1bml0IikKICAgICAgICAgYi5qb2luKCJjb25mdGVz
dC5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAg
ICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAg
ICAgICAgICAgICBkZWYgYXJnMSgpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAg
ICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0
ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBhcmcxKCk6Ci0gICAgICAgICAgICAgICAgcGFz
cwotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICBwID0gYi5q
b2luKCJ0ZXN0X21vZHVsZS5weSIpCkBAIC0xMDAyLDggKzEwMzUsNyBAQCBjbGFzcyBUZXN0UmVx
dWVzdEJhc2ljKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0y
KQogCiAKLWNsYXNzIFRlc3RSZXF1ZXN0TWFya2luZyhvYmplY3QpOgotCitjbGFzcyBUZXN0UmVx
dWVzdE1hcmtpbmc6CiAgICAgZGVmIHRlc3RfYXBwbHltYXJrZXIoc2VsZiwgdGVzdGRpcik6CiAg
ICAgICAgIGl0ZW0xLCBpdGVtMiA9IHRlc3RkaXIuZ2V0aXRlbXMoCiAgICAgICAgICAgICAiIiIK
QEAgLTEwMjUsMjI3ICsxMDU3LDU1IEBAIGNsYXNzIFRlc3RSZXF1ZXN0TWFya2luZyhvYmplY3Qp
OgogICAgICAgICBhc3NlcnQgInhmYWlsIiBpbiBpdGVtMS5rZXl3b3JkcwogICAgICAgICBhc3Nl
cnQgInNraXBpZiIgbm90IGluIGl0ZW0xLmtleXdvcmRzCiAgICAgICAgIHJlcTEuYXBwbHltYXJr
ZXIocHl0ZXN0Lm1hcmsuc2tpcGlmKQotICAgICAgICBhc3NlcnQgInNraXBpZiIgaW4gaXRlbTEu
a2V5d29yZHMKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAicmVxMS5hcHBseW1h
cmtlcig0MikiKQotCi0gICAgZGVmIHRlc3RfYWNjZXNza2V5d29yZHMoc2VsZiwgdGVzdGRpcik6
Ci0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKCkKLSAgICAgICAg
ICAgIGRlZiBrZXl3b3JkcyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVz
dC5rZXl3b3JkcwotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLlhZWgotICAgICAgICAgICAgZGVm
IHRlc3RfZnVuY3Rpb24oa2V5d29yZHMpOgotICAgICAgICAgICAgICAgIGFzc2VydCBrZXl3b3Jk
c1siWFlaIl0KLSAgICAgICAgICAgICAgICBhc3NlcnQgImFiYyIgbm90IGluIGtleXdvcmRzCi0g
ICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1
bigpCi0gICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQotCi0gICAgZGVmIHRl
c3RfYWNjZXNzbWFya2VyX2R5bmFtaWMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIu
bWFrZWNvbmZ0ZXN0KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoKQotICAgICAgICAgICAgZGVmIGtleXdvcmRz
KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmtleXdvcmRzCi0KLSAg
ICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0iY2xhc3MiLCBhdXRvdXNlPVRydWUpCi0g
ICAgICAgICAgICBkZWYgbWFya2luZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXF1ZXN0
LmFwcGx5bWFya2VyKHB5dGVzdC5tYXJrLlhZWigiaGVsbG8iKSkKLSAgICAgICAgIiIiCi0gICAg
ICAgICkKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBkZWYgdGVzdF9mdW4xKGtleXdvcmRz
KToKLSAgICAgICAgICAgICAgICBhc3NlcnQga2V5d29yZHNbIlhZWiJdIGlzIG5vdCBOb25lCi0g
ICAgICAgICAgICAgICAgYXNzZXJ0ICJhYmMiIG5vdCBpbiBrZXl3b3JkcwotICAgICAgICAgICAg
ZGVmIHRlc3RfZnVuMihrZXl3b3Jkcyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGtleXdvcmRz
WyJYWVoiXSBpcyBub3QgTm9uZQotICAgICAgICAgICAgICAgIGFzc2VydCAiYWJjIiBub3QgaW4g
a2V5d29yZHMKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVwcmVjID0gdGVzdGRp
ci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCi0K
LQotY2xhc3MgVGVzdFJlcXVlc3RDYWNoZWRTZXR1cChvYmplY3QpOgotCi0gICAgZGVmIHRlc3Rf
cmVxdWVzdF9jYWNoZWRzZXR1cF9kZWZhdWx0bW9kdWxlKHNlbGYsIHRlc3RkaXIpOgotICAgICAg
ICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCi0gICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgIG15c2V0dXAgPSBbImhlbGxvIixdLnBvcAotCi0gICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0Ci0KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIHNv
bWV0aGluZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNoZWRf
c2V0dXAobXlzZXR1cCwgc2NvcGU9Im1vZHVsZSIpCi0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1
bmMxKHNvbWV0aGluZyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNvbWV0aGluZyA9PSAiaGVs
bG8iCi0gICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgICAg
ICBkZWYgdGVzdF9mdW5jMWEoc2VsZiwgc29tZXRoaW5nKToKLSAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0IHNvbWV0aGluZyA9PSAiaGVsbG8iCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAg
ICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQotCi0gICAgZGVmIHRlc3RfcmVxdWVz
dF9jYWNoZWRzZXR1cF9jbGFzcyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcmVwcmVjID0gdGVz
dGRpci5pbmxpbmVfcnVuc291cmNlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBteXNl
dHVwID0gWyJoZWxsbyIsICJoZWxsbzIiLCAiaGVsbG8zIl0ucG9wCi0KLSAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVm
IHNvbWV0aGluZyhyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNo
ZWRfc2V0dXAobXlzZXR1cCwgc2NvcGU9ImNsYXNzIikKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1
bmMxKHNvbWV0aGluZyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNvbWV0aGluZyA9PSAiaGVs
bG8zIgotICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzIoc29tZXRoaW5nKToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgc29tZXRoaW5nID09ICJoZWxsbzIiCi0gICAgICAgICAgICBjbGFzcyBUZXN0
Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMWEoc2VsZiwgc29t
ZXRoaW5nKToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNvbWV0aGluZyA9PSAiaGVsbG8i
Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfZnVuYzJiKHNlbGYsIHNvbWV0aGluZyk6Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydCBzb21ldGhpbmcgPT0gImhlbGxvIgotICAgICAgICAiIiIK
LSAgICAgICAgKQotICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9NCkKLQotICAg
IGRlZiB0ZXN0X3JlcXVlc3RfY2FjaGVkc2V0dXBfZXh0cmFrZXkoc2VsZiwgdGVzdGRpcik6Ci0g
ICAgICAgIGl0ZW0xID0gdGVzdGRpci5nZXRpdGVtKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQot
ICAgICAgICByZXExID0gZml4dHVyZXMuRml4dHVyZVJlcXVlc3QoaXRlbTEpCi0gICAgICAgIHZh
bHVlcyA9IFsiaGVsbG8iLCAid29ybGQiXQotCi0gICAgICAgIGRlZiBzZXR1cCgpOgotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlcy5wb3AoKQotCi0gICAgICAgIHJldDEgPSByZXExLmNhY2hlZF9z
ZXR1cChzZXR1cCwgZXh0cmFrZXk9MSkKLSAgICAgICAgcmV0MiA9IHJlcTEuY2FjaGVkX3NldHVw
KHNldHVwLCBleHRyYWtleT0yKQotICAgICAgICBhc3NlcnQgcmV0MiA9PSAiaGVsbG8iCi0gICAg
ICAgIGFzc2VydCByZXQxID09ICJ3b3JsZCIKLSAgICAgICAgcmV0MWIgPSByZXExLmNhY2hlZF9z
ZXR1cChzZXR1cCwgZXh0cmFrZXk9MSkKLSAgICAgICAgcmV0MmIgPSByZXExLmNhY2hlZF9zZXR1
cChzZXR1cCwgZXh0cmFrZXk9MikKLSAgICAgICAgYXNzZXJ0IHJldDEgPT0gcmV0MWIKLSAgICAg
ICAgYXNzZXJ0IHJldDIgPT0gcmV0MmIKLQotICAgIGRlZiB0ZXN0X3JlcXVlc3RfY2FjaGVkc2V0
dXBfY2FjaGVfZGVsZXRpb24oc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGl0ZW0xID0gdGVzdGRp
ci5nZXRpdGVtKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQotICAgICAgICByZXExID0gZml4dHVy
ZXMuRml4dHVyZVJlcXVlc3QoaXRlbTEpCi0gICAgICAgIHZhbHVlcyA9IFtdCi0KLSAgICAgICAg
ZGVmIHNldHVwKCk6Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCJzZXR1cCIpCi0KLSAgICAg
ICAgZGVmIHRlYXJkb3duKHZhbCk6Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCJ0ZWFyZG93
biIpCi0KLSAgICAgICAgcmVxMS5jYWNoZWRfc2V0dXAoc2V0dXAsIHRlYXJkb3duLCBzY29wZT0i
ZnVuY3Rpb24iKQotICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsic2V0dXAiXQotICAgICAgICAj
IGFydGlmaWNpYWwgY2FsbCBvZiBmaW5hbGl6ZXIKLSAgICAgICAgc2V0dXBzdGF0ZSA9IHJlcTEu
X3B5ZnVuY2l0ZW0uc2Vzc2lvbi5fc2V0dXBzdGF0ZQotICAgICAgICBzZXR1cHN0YXRlLl9jYWxs
ZmluYWxpemVycyhpdGVtMSkKLSAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbInNldHVwIiwgInRl
YXJkb3duIl0KLSAgICAgICAgcmVxMS5jYWNoZWRfc2V0dXAoc2V0dXAsIHRlYXJkb3duLCBzY29w
ZT0iZnVuY3Rpb24iKQotICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsic2V0dXAiLCAidGVhcmRv
d24iLCAic2V0dXAiXQotICAgICAgICBzZXR1cHN0YXRlLl9jYWxsZmluYWxpemVycyhpdGVtMSkK
LSAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbInNldHVwIiwgInRlYXJkb3duIiwgInNldHVwIiwg
InRlYXJkb3duIl0KLQotICAgIGRlZiB0ZXN0X3JlcXVlc3RfY2FjaGVkX3NldHVwX3R3b19hcmdz
KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAg
ICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlCi0gICAgICAgICAgICBkZWYgYXJnMShyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVxdWVzdC5jYWNoZWRfc2V0dXAobGFtYmRhOiA0MikKLSAgICAgICAgICAgIEBweXRl
c3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGFyZzIocmVxdWVzdCk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHJlcXVlc3QuY2FjaGVkX3NldHVwKGxhbWJkYTogMTcpCi0gICAgICAgICAgICBk
ZWYgdGVzdF90d29fZGlmZmVyZW50X3NldHVwcyhhcmcxLCBhcmcyKToKLSAgICAgICAgICAgICAg
ICBhc3NlcnQgYXJnMSAhPSBhcmcyCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKLQotICAgIGRlZiB0ZXN0X3JlcXVlc3RfY2FjaGVk
X3NldHVwX2dldGZpeHR1cmV2YWx1ZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0K
LSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGFyZzEocmVxdWVz
dCk6Ci0gICAgICAgICAgICAgICAgYXJnMSA9IHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCJhcmcy
IikKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jYWNoZWRfc2V0dXAobGFtYmRhOiBh
cmcxICsgMSkKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGFy
ZzIocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QuY2FjaGVkX3NldHVw
KGxhbWJkYTogMTApCi0gICAgICAgICAgICBkZWYgdGVzdF90d29fZnVuY2FyZyhhcmcxKToKLSAg
ICAgICAgICAgICAgICBhc3NlcnQgYXJnMSA9PSAxMQotICAgICAgICAiIiIKLSAgICAgICAgKQot
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiKQotICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisgICAgICAgIGFzc2VydCAic2tp
cGlmIiBpbiBpdGVtMS5rZXl3b3JkcworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVF
cnJvcik6CisgICAgICAgICAgICByZXExLmFwcGx5bWFya2VyKDQyKQogCi0gICAgZGVmIHRlc3Rf
cmVxdWVzdF9jYWNoZWRfc2V0dXBfZnVuY3Rpb25hbChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYg
dGVzdF9hY2Nlc3NrZXl3b3JkcyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgdGVzdF8wPSIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICB2YWx1ZXMgPSBbXQotICAgICAgICAgICAg
QHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgc29tZXRoaW5nKHJlcXVlc3QpOgotICAg
ICAgICAgICAgICAgIHZhbCA9IHJlcXVlc3QuY2FjaGVkX3NldHVwKGZzZXR1cCwgZnRlYXJkb3du
KQotICAgICAgICAgICAgICAgIHJldHVybiB2YWwKLSAgICAgICAgICAgIGRlZiBmc2V0dXAobXlj
YWNoZT1bMV0pOgotICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobXljYWNoZS5wb3AoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzCi0gICAgICAgICAgICBkZWYgZnRlYXJkb3du
KHNvbWV0aGluZyk6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLnJlbW92ZShzb21ldGhpbmdbMF0p
Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgyKQotICAgICAgICAgICAgZGVmIHRlc3Rf
bGlzdF9vbmNlKHNvbWV0aGluZyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNvbWV0aGluZyA9
PSBbMV0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2xpc3RfdHdpY2Uoc29tZXRoaW5nKToKLSAgICAg
ICAgICAgICAgICBhc3NlcnQgc29tZXRoaW5nID09IFsxXQorICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlKCkKKyAgICAgICAgICAgIGRlZiBrZXl3b3JkcyhyZXF1ZXN0KToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVxdWVzdC5rZXl3b3JkcworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLlhZ
WgorICAgICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oa2V5d29yZHMpOgorICAgICAgICAgICAg
ICAgIGFzc2VydCBrZXl3b3Jkc1siWFlaIl0KKyAgICAgICAgICAgICAgICBhc3NlcnQgImFiYyIg
bm90IGluIGtleXdvcmRzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHRlc3RfMT0iIiIKLSAgICAgICAgICAgIGltcG9ydCB0
ZXN0XzAgIyBzaG91bGQgaGF2ZSBydW4gYWxyZWFkeQotICAgICAgICAgICAgZGVmIHRlc3RfY2hl
Y2tfdGVzdDBfaGFzX3RlYXJkb3duX2NvcnJlY3QoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQg
dGVzdF8wLnZhbHVlcyA9PSBbMl0KKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVu
KCkKKyAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCisKKyAgICBkZWYgdGVz
dF9hY2Nlc3NtYXJrZXJfZHluYW1pYyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5t
YWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
KyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZSgpCisgICAgICAgICAgICBkZWYga2V5d29yZHMo
cmVxdWVzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Qua2V5d29yZHMKKworICAg
ICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJjbGFzcyIsIGF1dG91c2U9VHJ1ZSkKKyAg
ICAgICAgICAgIGRlZiBtYXJraW5nKHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHJlcXVlc3Qu
YXBwbHltYXJrZXIocHl0ZXN0Lm1hcmsuWFlaKCJoZWxsbyIpKQogICAgICAgICAiIiIKICAgICAg
ICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiKQotICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMyBwYXNzZWQqIl0pCi0KLSAgICBkZWYgdGVz
dF9pc3N1ZTExN19zZXNzaW9uc2NvcGV0ZWFyZG93bihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0Ci0KLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVmIGFw
cChyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBhcHAgPSByZXF1ZXN0LmNhY2hlZF9zZXR1cCgK
LSAgICAgICAgICAgICAgICAgICAgc2NvcGU9J3Nlc3Npb24nLAotICAgICAgICAgICAgICAgICAg
ICBzZXR1cD1sYW1iZGE6IDAsCi0gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duPWxhbWJkYSB4
OiAzL3gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFwcAotICAgICAgICAgICAgZGVmIHRlc3Rf
ZnVuYyhhcHApOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1
bjEoa2V5d29yZHMpOgorICAgICAgICAgICAgICAgIGFzc2VydCBrZXl3b3Jkc1siWFlaIl0gaXMg
bm90IE5vbmUKKyAgICAgICAgICAgICAgICBhc3NlcnQgImFiYyIgbm90IGluIGtleXdvcmRzCisg
ICAgICAgICAgICBkZWYgdGVzdF9mdW4yKGtleXdvcmRzKToKKyAgICAgICAgICAgICAgICBhc3Nl
cnQga2V5d29yZHNbIlhZWiJdIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgYXNzZXJ0ICJh
YmMiIG5vdCBpbiBrZXl3b3JkcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2VydCByZXN1bHQucmV0ICE9IDAK
LSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjMveCoiLCAiKlplcm9EaXZp
c2lvbkVycm9yKiJdKQotCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisg
ICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCi1jbGFzcyBUZXN0Rml4dHVy
ZVVzYWdlcyhvYmplY3QpOgogCitjbGFzcyBUZXN0Rml4dHVyZVVzYWdlczoKICAgICBkZWYgdGVz
dF9ub2FyZ2ZpeHR1cmVkZWMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtMTMwMyw4ICsxMTYzLDggQEAgY2xhc3MgVGVzdEZp
eHR1cmVVc2FnZXMob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICIqU2NvcGVNaXNtYXRjaCppbnZvbHZl
ZCBmYWN0b3JpZXMqIiwKLSAgICAgICAgICAgICAgICAiKiBkZWYgYXJnMioiLAotICAgICAgICAg
ICAgICAgICIqIGRlZiBhcmcxKiIsCisgICAgICAgICAgICAgICAgInRlc3RfcmVjZWl2ZXNfZnVu
Y2FyZ3Nfc2NvcGVfbWlzbWF0Y2gucHk6NjogIGRlZiBhcmcyKGFyZzEpIiwKKyAgICAgICAgICAg
ICAgICAidGVzdF9yZWNlaXZlc19mdW5jYXJnc19zY29wZV9taXNtYXRjaC5weToyOiAgZGVmIGFy
ZzEoKSIsCiAgICAgICAgICAgICAgICAgIioxIGVycm9yKiIsCiAgICAgICAgICAgICBdCiAgICAg
ICAgICkKQEAgLTEzNDQsMTEgKzEyMDQsNDAgQEAgY2xhc3MgVGVzdEZpeHR1cmVVc2FnZXMob2Jq
ZWN0KToKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnBy
b2Nlc3MoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAg
ICAoCi0gICAgICAgICAgICAgICAgIipWYWx1ZUVycm9yOiBmaXh0dXJlIGJhZHNjb3BlIGZyb20g
dGVzdF9pbnZhbGlkX3Njb3BlLnB5IGhhcyBhbiB1bnN1cHBvcnRlZCIKLSAgICAgICAgICAgICAg
ICAiIHNjb3BlIHZhbHVlICdmdW5jdGlvbnMnIgorICAgICAgICAgICAgIipGaXh0dXJlICdiYWRz
Y29wZScgZnJvbSB0ZXN0X2ludmFsaWRfc2NvcGUucHkgZ290IGFuIHVuZXhwZWN0ZWQgc2NvcGUg
dmFsdWUgJ2Z1bmN0aW9ucyciCisgICAgICAgICkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgic2NvcGUiLCBbImZ1bmN0aW9uIiwgInNlc3Npb24iXSkKKyAgICBkZWYgdGVzdF9wYXJh
bWV0ZXJzX3dpdGhvdXRfZXFfc2VtYW50aWNzKHNlbGYsIHNjb3BlLCB0ZXN0ZGlyKToKKyAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjbGFz
cyBOb0VxMTogICMgZmFpbHMgb24gYGEgPT0gYmAgc3RhdGVtZW50CisgICAgICAgICAgICAgICAg
ZGVmIF9fZXFfXyhzZWxmLCBfKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVy
cm9yCisKKyAgICAgICAgICAgIGNsYXNzIE5vRXEyOiAgIyBmYWlscyBvbiBgaWYgYSA9PSBiOmAg
c3RhdGVtZW50CisgICAgICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBfKToKKyAgICAgICAg
ICAgICAgICAgICAgY2xhc3MgTm9Cb29sOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVmIF9f
Ym9vbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Cb29sKCkKKworICAgICAgICAgICAg
aW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bTm9FcTEo
KSwgTm9FcTIoKV0sIHNjb3BlPXtzY29wZSFyfSkKKyAgICAgICAgICAgIGRlZiBub19lcShyZXF1
ZXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQorCisgICAgICAgICAg
ICBkZWYgdGVzdDEobm9fZXEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAg
ZGVmIHRlc3QyKG5vX2VxKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIiIi5mb3Jt
YXQoCisgICAgICAgICAgICAgICAgc2NvcGU9c2NvcGUKICAgICAgICAgICAgICkKICAgICAgICAg
KQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhbIio0IHBhc3NlZCoiXSkKIAogICAgIGRlZiB0ZXN0X2Z1bmNh
cmdfcGFyYW1ldHJpemVkX2FuZF91c2VkX3R3aWNlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0xNDE1LDIxICsxMzA0LDYgQEAgY2xhc3MgVGVzdEZpeHR1
cmVVc2FnZXMob2JqZWN0KToKICAgICAgICAgdmFsdWVzID0gcmVwcmVjLmdldGZhaWxlZGNvbGxl
Y3Rpb25zKCkKICAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDEKIAotICAgIGRlZiB0ZXN0
X3JlcXVlc3RfY2FuX2JlX292ZXJyaWRkZW4oc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKCkKLSAgICAgICAgICAgIGRlZiByZXF1ZXN0
KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJlcXVlc3QuYSA9IDEKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcmVxdWVzdAotICAgICAgICAgICAgZGVmIHRlc3RfcmVxdWVzdChyZXF1ZXN0KToK
LSAgICAgICAgICAgICAgICBhc3NlcnQgcmVxdWVzdC5hID09IDEKLSAgICAgICAgIiIiCi0gICAg
ICAgICkKLSAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCi0KICAgICBkZWYgdGVzdF91c2VmaXh0dXJlc19t
YXJrZXIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgpAQCAtMTUzOCw5ICsxNDEyLDQ3IEBAIGNsYXNzIFRlc3RGaXh0dXJlVXNhZ2Vz
KG9iamVjdCk6CiAgICAgICAgIHZhbHVlcyA9IHJlcHJlYy5nZXRjYWxscygicHl0ZXN0X3J1bnRl
c3RfY2FsbCIpWzBdLml0ZW0ubW9kdWxlLnZhbHVlcwogICAgICAgICBhc3NlcnQgdmFsdWVzID09
IFsxLCAyLCAxMCwgMjBdCiAKKyAgICBkZWYgdGVzdF9zZXR1cF9mdW5jdGlvbnNfYXNfZml4dHVy
ZXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIkVuc3VyZSBzZXR1cF8qIG1ldGhvZHMgb2Jl
eSBmaXh0dXJlIHNjb3BlIHJ1bGVzICgjNTE3LCAjMzA5NCkuIiIiCisgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAor
CisgICAgICAgICAgICBEQl9JTklUSUFMSVpFRCA9IE5vbmUKKworICAgICAgICAgICAgQHB5dGVz
dC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIiwgYXV0b3VzZT1UcnVlKQorICAgICAgICAgICAgZGVm
IGRiKCk6CisgICAgICAgICAgICAgICAgZ2xvYmFsIERCX0lOSVRJQUxJWkVECisgICAgICAgICAg
ICAgICAgREJfSU5JVElBTElaRUQgPSBUcnVlCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAg
ICAgICAgICAgICBEQl9JTklUSUFMSVpFRCA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBzZXR1
cF9tb2R1bGUoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgREJfSU5JVElBTElaRUQKKworICAg
ICAgICAgICAgZGVmIHRlYXJkb3duX21vZHVsZSgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBE
Ql9JTklUSUFMSVpFRAogCi1jbGFzcyBUZXN0Rml4dHVyZU1hbmFnZXJQYXJzZUZhY3Rvcmllcyhv
YmplY3QpOgorICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisKKyAgICAgICAg
ICAgICAgICBkZWYgc2V0dXBfbWV0aG9kKHNlbGYsIG1ldGhvZCk6CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydCBEQl9JTklUSUFMSVpFRAorCisgICAgICAgICAgICAgICAgZGVmIHRlYXJkb3du
X21ldGhvZChzZWxmLCBtZXRob2QpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgREJfSU5J
VElBTElaRUQKKworICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3ByaW50ZXJfMShzZWxmKToKKyAg
ICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcHJpbnRl
cl8yKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIiIgorICAgICAg
ICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAyIHBhc3NlZCBpbiAqIl0pCiAKKworY2xhc3MgVGVz
dEZpeHR1cmVNYW5hZ2VyUGFyc2VGYWN0b3JpZXM6CiAgICAgQHB5dGVzdC5maXh0dXJlCiAgICAg
ZGVmIHRlc3RkaXIoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIHRlc3RkaXIgPSByZXF1ZXN0Lmdl
dGZpeHR1cmV2YWx1ZSgidGVzdGRpciIpCkBAIC0xNTk1LDcgKzE1MDcsNyBAQCBjbGFzcyBUZXN0
Rml4dHVyZU1hbmFnZXJQYXJzZUZhY3RvcmllcyhvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfcGFy
c2VmYWN0b3JpZXNfY29uZnRlc3RfYW5kX21vZHVsZV9hbmRfY2xhc3Moc2VsZiwgdGVzdGRpcik6
CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICAg
ICAgIiIiXAogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKQEAgLTE2MDcsMTIgKzE1MTksMTMgQEAgY2xhc3MgVGVzdEZpeHR1cmVNYW5hZ2Vy
UGFyc2VGYWN0b3JpZXMob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjbGFz
cyIKICAgICAgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhzZWxmLCBpdGVtLCBmbSk6CiAgICAg
ICAgICAgICAgICAgICAgIGZhY2xpc3QgPSBmbS5nZXRmaXh0dXJlZGVmcygiaGVsbG8iLCBpdGVt
Lm5vZGVpZCkKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgKGZhY2xpc3QpCisgICAgICAgICAg
ICAgICAgICAgIHByaW50KGZhY2xpc3QpCiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBsZW4o
ZmFjbGlzdCkgPT0gMworCiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWNsaXN0WzBdLmZ1
bmMoaXRlbS5fcmVxdWVzdCkgPT0gImNvbmZ0ZXN0IgogICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQgZmFjbGlzdFsxXS5mdW5jKGl0ZW0uX3JlcXVlc3QpID09ICJtb2R1bGUiCiAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBmYWNsaXN0WzJdLmZ1bmMoaXRlbS5fcmVxdWVzdCkgPT0gImNsYXNz
IgotICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlcHJl
YyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLXMiKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29t
ZShwYXNzZWQ9MSkKQEAgLTE2MjMsNDEgKzE1MzYsNDEgQEAgY2xhc3MgVGVzdEZpeHR1cmVNYW5h
Z2VyUGFyc2VGYWN0b3JpZXMob2JqZWN0KToKICAgICAgICAgcnVubmVyID0gdGVzdGRpci5ta2Rp
cigicnVubmVyIikKICAgICAgICAgcGFja2FnZSA9IHRlc3RkaXIubWtkaXIoInBhY2thZ2UiKQog
ICAgICAgICBwYWNrYWdlLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgICAgICBk
ZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCiAgICAgICAgICAgICAgICAgIiIi
XAogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJl
CiAgICAgICAgICAgICBkZWYgb25lKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAg
ICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAg
ICBwYWNrYWdlLmpvaW4oInRlc3RfeC5weSIpLndyaXRlKAotICAgICAgICAgICAgZGVkZW50KAor
ICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAogICAgICAgICAgICAgICAgICIiIlwKLSAgICAg
ICAgICAgIGRlZiB0ZXN0X3gob25lKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgb25lID09IDEK
LSAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfeChvbmUpOgorICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQgb25lID09IDEKKyAgICAgICAgICAgICAgICAiIiIKICAgICAgICAg
ICAgICkKICAgICAgICAgKQogICAgICAgICBzdWIgPSBwYWNrYWdlLm1rZGlyKCJzdWIiKQogICAg
ICAgICBzdWIuam9pbigiX19pbml0X18ucHkiKS5lbnN1cmUoKQogICAgICAgICBzdWIuam9pbigi
Y29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRl
eHR3cmFwLmRlZGVudCgKICAgICAgICAgICAgICAgICAiIiJcCi0gICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBvbmUo
KToKLSAgICAgICAgICAgICAgICByZXR1cm4gMgotICAgICAgICAiIiIKKyAgICAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAg
ICAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAg
ICAgICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHN1Yi5qb2lu
KCJ0ZXN0X3kucHkiKS53cml0ZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRl
eHR3cmFwLmRlZGVudCgKICAgICAgICAgICAgICAgICAiIiJcCi0gICAgICAgICAgICBkZWYgdGVz
dF94KG9uZSk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG9uZSA9PSAyCi0gICAgICAgICIiIgor
ICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3gob25lKToKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0IG9uZSA9PSAyCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAg
ICkKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKQEAgLTE2NjYsOSArMTU3
OSwxMDUgQEAgY2xhc3MgVGVzdEZpeHR1cmVNYW5hZ2VyUGFyc2VGYWN0b3JpZXMob2JqZWN0KToK
ICAgICAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLi4iKQogICAgICAgICAg
ICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCiAKKyAgICBkZWYgdGVzdF9wYWNrYWdl
X3h1bml0X2ZpeHR1cmUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgICAgIF9faW5pdF9fPSIiIlwKKyAgICAgICAgICAgIHZhbHVlcyA9IFtdCisg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHBhY2thZ2UgPSB0ZXN0ZGlyLm1rZGlyKCJw
YWNrYWdlIikKKyAgICAgICAgcGFja2FnZS5qb2luKCJfX2luaXRfXy5weSIpLndyaXRlKAorICAg
ICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAg
ICAgICAgICBmcm9tIC4uIGltcG9ydCB2YWx1ZXMKKyAgICAgICAgICAgICAgICBkZWYgc2V0dXBf
bW9kdWxlKCk6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoInBhY2thZ2UiKQor
ICAgICAgICAgICAgICAgIGRlZiB0ZWFyZG93bl9tb2R1bGUoKToKKyAgICAgICAgICAgICAgICAg
ICAgdmFsdWVzWzpdID0gW10KKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBwYWNrYWdlLmpvaW4oInRlc3RfeC5weSIpLndyaXRlKAorICAgICAg
ICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAg
ICAgICBmcm9tIC4uIGltcG9ydCB2YWx1ZXMKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF94KCk6
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWyJwYWNrYWdlIl0KKyAgICAg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBwYWNrYWdl
ID0gdGVzdGRpci5ta2RpcigicGFja2FnZTIiKQorICAgICAgICBwYWNrYWdlLmpvaW4oIl9faW5p
dF9fLnB5Iikud3JpdGUoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAg
ICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGZyb20gLi4gaW1wb3J0IHZhbHVlcworICAgICAg
ICAgICAgICAgIGRlZiBzZXR1cF9tb2R1bGUoKToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZCgicGFja2FnZTIiKQorICAgICAgICAgICAgICAgIGRlZiB0ZWFyZG93bl9tb2R1bGUo
KToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzWzpdID0gW10KKyAgICAgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBwYWNrYWdlLmpvaW4oInRlc3Rf
eC5weSIpLndyaXRlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAg
ICAgICIiIlwKKyAgICAgICAgICAgICAgICBmcm9tIC4uIGltcG9ydCB2YWx1ZXMKKyAgICAgICAg
ICAgICAgICBkZWYgdGVzdF94KCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1ZXMg
PT0gWyJwYWNrYWdlMiJdCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCisKKyAgICBkZWYgdGVzdF9wYWNrYWdlX2ZpeHR1
cmVfY29tcGxleChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgX19pbml0X189IiIiXAorICAgICAgICAgICAgdmFsdWVzID0gW10KKyAgICAg
ICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KHRlc3RkaXIu
dG1wZGlyLmRpcm5hbWUpCisgICAgICAgIHBhY2thZ2UgPSB0ZXN0ZGlyLm1rZGlyKCJwYWNrYWdl
IikKKyAgICAgICAgcGFja2FnZS5qb2luKCJfX2luaXRfXy5weSIpLndyaXRlKCIiKQorICAgICAg
ICBwYWNrYWdlLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCisgICAgICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKKyAgICAgICAgICAgICAgICBmcm9tIC4uIGltcG9ydCB2YWx1ZXMKKyAgICAgICAgICAg
ICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InBhY2thZ2UiKQorICAgICAgICAgICAgICAgIGRl
ZiBvbmUoKToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgicGFja2FnZSIpCisg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlcworICAgICAgICAgICAgICAgICAgICB2YWx1
ZXMucG9wKCkKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InBhY2thZ2Ui
LCBhdXRvdXNlPVRydWUpCisgICAgICAgICAgICAgICAgZGVmIHR3bygpOgorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKCJwYWNrYWdlLWF1dG8iKQorICAgICAgICAgICAgICAgICAg
ICB5aWVsZCB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLnBvcCgpCisgICAgICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgcGFja2FnZS5q
b2luKCJ0ZXN0X3gucHkiKS53cml0ZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAg
ICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgZnJvbSAuLiBpbXBvcnQgdmFsdWVz
CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcGFja2FnZV9hdXRvdXNlKCk6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWyJwYWNrYWdlLWF1dG8iXQorICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0X3BhY2thZ2Uob25lKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZh
bHVlcyA9PSBbInBhY2thZ2UtYXV0byIsICJwYWNrYWdlIl0KKyAgICAgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGlu
ZV9ydW4oKQorICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MikKKworICAgIGRl
ZiB0ZXN0X2NvbGxlY3RfY3VzdG9tX2l0ZW1zKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0
ZGlyLmNvcHlfZXhhbXBsZSgiZml4dHVyZXMvY3VzdG9tX2l0ZW0iKQorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiZm9vIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKnBhc3NlZCoiXSkKIAotY2xhc3MgVGVzdEF1dG91c2VEaXNjb3Zlcnkob2JqZWN0
KToKIAorY2xhc3MgVGVzdEF1dG91c2VEaXNjb3Zlcnk6CiAgICAgQHB5dGVzdC5maXh0dXJlCiAg
ICAgZGVmIHRlc3RkaXIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0
ZXN0KApAQCAtMTc3OSwxMCArMTc4OCw4IEBAIGNsYXNzIFRlc3RBdXRvdXNlRGlzY292ZXJ5KG9i
amVjdCk6CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCiAgICAgZGVm
IHRlc3RfY2FsbGFibGVzX25vY29kZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiCi0gICAg
ICAgIGFuIGltcG9ydGVkIG1vY2suY2FsbCB3b3VsZCBicmVhayBzZXR1cC9mYWN0b3J5IGRpc2Nv
dmVyeQotICAgICAgICBkdWUgdG8gaXQgYmVpbmcgY2FsbGFibGUgYW5kIF9fY29kZV9fIG5vdCBi
ZWluZyBhIGNvZGUgb2JqZWN0Ci0gICAgICAgICIiIgorICAgICAgICAiIiJBbiBpbXBvcnRlZCBt
b2NrLmNhbGwgd291bGQgYnJlYWsgc2V0dXAvZmFjdG9yeSBkaXNjb3ZlcnkgZHVlIHRvCisgICAg
ICAgIGl0IGJlaW5nIGNhbGxhYmxlIGFuZCBfX2NvZGVfXyBub3QgYmVpbmcgYSBjb2RlIG9iamVj
dC4iIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgIGNsYXNzIF9jYWxsKHR1cGxlKToKQEAgLTE4NDQsNTIgKzE4NTEsMzMgQEAgY2xhc3Mg
VGVzdEF1dG91c2VEaXNjb3Zlcnkob2JqZWN0KToKICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNv
bWUocGFzc2VkPTMpCiAKIAotY2xhc3MgVGVzdEF1dG91c2VNYW5hZ2VtZW50KG9iamVjdCk6Ci0K
K2NsYXNzIFRlc3RBdXRvdXNlTWFuYWdlbWVudDoKICAgICBkZWYgdGVzdF9hdXRvdXNlX2NvbmZ0
ZXN0X21pZF9kaXJlY3Rvcnkoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHBrZ2RpciA9IHRlc3Rk
aXIubWtweWRpcigieHl6MTIzIikKICAgICAgICAgcGtnZGlyLmpvaW4oImNvbmZ0ZXN0LnB5Iiku
d3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAgIHRl
eHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUp
CisgICAgICAgICAgICAgICAgZGVmIGFwcCgpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQg
c3lzCisgICAgICAgICAgICAgICAgICAgIHN5cy5fbXlhcHAgPSAiaGVsbG8iCiAgICAgICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQotICAgICAgICAgICAgZGVmIGFwcCgpOgotICAgICAgICAg
ICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgICAgICAgICBzeXMuX215YXBwID0gImhlbGxvIgot
ICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICB0ID0gcGtnZGly
LmVuc3VyZSgidGVzdHMiLCAidGVzdF9hcHAucHkiKQogICAgICAgICB0LndyaXRlKAotICAgICAg
ICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQo
CisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAg
ICAgICAgICAgICBkZWYgdGVzdF9hcHAoKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHN5
cy5fbXlhcHAgPT0gImhlbGxvIgogICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1w
b3J0IHN5cwotICAgICAgICAgICAgZGVmIHRlc3RfYXBwKCk6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IHN5cy5fbXlhcHAgPT0gImhlbGxvIgotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAg
ICAgICAgKQogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1zIikKICAgICAg
ICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBkZWYgdGVzdF9hdXRvdXNl
X2hvbm9yZWRfZm9yX3lpZWxkKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAg
ICAgICAgIEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCi0gICAgICAgICAgICBkZWYgdHN0
KCk6Ci0gICAgICAgICAgICAgICAgZ2xvYmFsIHgKLSAgICAgICAgICAgICAgICB4ID0gMwotICAg
ICAgICAgICAgZGVmIHRlc3RfZ2VuKCk6Ci0gICAgICAgICAgICAgICAgZGVmIGYoaGVsbG8pOgot
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQgeCA9PSBhYnMoaGVsbG8pCi0gICAgICAgICAgICAg
ICAgeWllbGQgZiwgMwotICAgICAgICAgICAgICAgIHlpZWxkIGYsIC0zCi0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCi0gICAgICAg
IHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQotCiAgICAgZGVmIHRlc3RfZnVuY2FyZ19h
bmRfc2V0dXAoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgICAgICIiIgpAQCAtMjAwOSw3ICsxOTk3LDkgQEAgY2xhc3MgVGVzdEF1dG91c2VNYW5h
Z2VtZW50KG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLXYi
LCAiLXMiLCBjb25mY3V0KQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9OCkK
ICAgICAgICAgY29uZmlnID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3RfdW5jb25maWd1cmUiKVsw
XS5jb25maWcKLSAgICAgICAgdmFsdWVzID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuX2dldGNvbmZ0
ZXN0bW9kdWxlcyhwKVswXS52YWx1ZXMKKyAgICAgICAgdmFsdWVzID0gY29uZmlnLnBsdWdpbm1h
bmFnZXIuX2dldGNvbmZ0ZXN0bW9kdWxlcyhwLCBpbXBvcnRtb2RlPSJwcmVwZW5kIilbCisgICAg
ICAgICAgICAwCisgICAgICAgIF0udmFsdWVzCiAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWyJm
aW5fYTEiLCAiZmluX2EyIiwgImZpbl9iMSIsICJmaW5fYjIiXSAqIDIKIAogICAgIGRlZiB0ZXN0
X3Njb3BlX29yZGVyaW5nKHNlbGYsIHRlc3RkaXIpOgpAQCAtMjA1Niw3ICsyMDQ2LDcgQEAgY2xh
c3MgVGVzdEF1dG91c2VNYW5hZ2VtZW50KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQoInN0ZXAyLSVkIiAlIGl0ZW0pCiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Zp
bmlzaCgpOgotICAgICAgICAgICAgICAgIHByaW50ICh2YWx1ZXMpCisgICAgICAgICAgICAgICAg
cHJpbnQodmFsdWVzKQogICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWyJzZXR1cC0x
IiwgInN0ZXAxLTEiLCAic3RlcDItMSIsICJ0ZWFyZG93bi0xIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInNldHVwLTIiLCAic3RlcDEtMiIsICJzdGVwMi0yIiwgInRlYXJkb3duLTIi
LF0KICAgICAgICAgIiIiCkBAIC0yMDgzLDEwICsyMDczLDEwIEBAIGNsYXNzIFRlc3RBdXRvdXNl
TWFuYWdlbWVudChvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4o
KQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAotICAgIEBweXRlc3Qu
bWFyay5pc3N1ZTIyNgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGFyYW0xIiwgWyIi
LCAicGFyYW1zPVsxXSJdLCBpZHM9WyJwMDAiLCAicDAxIl0pCiAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJwYXJhbTIiLCBbIiIsICJwYXJhbXM9WzFdIl0sIGlkcz1bInAxMCIsICJwMTEi
XSkKICAgICBkZWYgdGVzdF9vcmRlcmluZ19kZXBlbmRlbmNpZXNfdG9ybmRvd25fZmlyc3Qoc2Vs
ZiwgdGVzdGRpciwgcGFyYW0xLCBwYXJhbTIpOgorICAgICAgICAiIiIjMjI2IiIiCiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdApAQCAtMjExMSw4ICsyMTAxLDcgQEAgY2xhc3MgVGVzdEF1dG91c2VNYW5hZ2VtZW50
KG9iamVjdCk6CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCiAKLWNs
YXNzIFRlc3RGaXh0dXJlTWFya2VyKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RGaXh0dXJlTWFya2Vy
OgogICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTIzMzgsMTUgKzIzMjcsNyBAQCBj
bGFzcyBUZXN0Rml4dHVyZU1hcmtlcihvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9NCkKIAot
ICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKLSAgICAgICAgIm1ldGhvZCIsCi0gICAgICAg
IFsKLSAgICAgICAgICAgICdyZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgiYXJnIiknLAotICAgICAg
ICAgICAgJ3JlcXVlc3QuY2FjaGVkX3NldHVwKGxhbWJkYTogTm9uZSwgc2NvcGU9ImZ1bmN0aW9u
IiknLAotICAgICAgICBdLAotICAgICAgICBpZHM9WyJnZXRmaXh0dXJldmFsdWUiLCAiY2FjaGVk
X3NldHVwIl0sCi0gICAgKQotICAgIGRlZiB0ZXN0X3Njb3BlX21pc21hdGNoX3ZhcmlvdXMoc2Vs
ZiwgdGVzdGRpciwgbWV0aG9kKToKKyAgICBkZWYgdGVzdF9zY29wZV9taXNtYXRjaF92YXJpb3Vz
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjM2MiwxMSArMjM0MywxMCBA
QCBjbGFzcyBUZXN0Rml4dHVyZU1hcmtlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGltcG9y
dCBweXRlc3QKICAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24i
KQogICAgICAgICAgICAgICAgIGRlZiBhcmcocmVxdWVzdCk6Ci0gICAgICAgICAgICAgICAgICAg
ICVzCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCJhcmciKQog
ICAgICAgICAgICAgICAgIGRlZiB0ZXN0XzEoYXJnKToKICAgICAgICAgICAgICAgICAgICAgcGFz
cwogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAlIG1ldGhvZAogICAgICAgICApCiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgIT0gMApAQCAtMjM3NCw2ICsyMzU0LDY4IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2VyKG9i
amVjdCk6CiAgICAgICAgICAgICBbIipTY29wZU1pc21hdGNoKllvdSB0cmllZCpmdW5jdGlvbipz
ZXNzaW9uKnJlcXVlc3QqIl0KICAgICAgICAgKQogCisgICAgZGVmIHRlc3RfZHluYW1pY19zY29w
ZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworCisgICAgICAgICAgICBkZWYg
cHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAgICAgICAgIHBhcnNlci5hZGRvcHRp
b24oIi0tZXh0ZW5kLXNjb3BlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSkK
KworCisgICAgICAgICAgICBkZWYgZHluYW1pY19zY29wZShmaXh0dXJlX25hbWUsIGNvbmZpZyk6
CisgICAgICAgICAgICAgICAgaWYgY29uZmlnLmdldG9wdGlvbigiLS1leHRlbmQtc2NvcGUiKToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzZXNzaW9uIgorICAgICAgICAgICAgICAgIHJl
dHVybiAiZnVuY3Rpb24iCisKKworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPWR5
bmFtaWNfc2NvcGUpCisgICAgICAgICAgICBkZWYgZHluYW1pY19maXh0dXJlKGNhbGxzPVtdKToK
KyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoImNhbGwiKQorICAgICAgICAgICAgICAgIHJl
dHVybiBsZW4oY2FsbHMpCisKKyAgICAgICAgIiIiCisgICAgICAgICkKKworICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zp
cnN0KGR5bmFtaWNfZml4dHVyZSk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGR5bmFtaWNfZml4
dHVyZSA9PSAxCisKKworICAgICAgICAgICAgZGVmIHRlc3Rfc2Vjb25kKGR5bmFtaWNfZml4dHVy
ZSk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGR5bmFtaWNfZml4dHVyZSA9PSAyCisKKyAgICAg
ICAgIiIiCisgICAgICAgICkKKworICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4o
KQorICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MikKKworICAgICAgICByZXBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi0tZXh0ZW5kLXNjb3BlIikKKyAgICAgICAgcmVwcmVj
LmFzc2VydG91dGNvbWUocGFzc2VkPTEsIGZhaWxlZD0xKQorCisgICAgZGVmIHRlc3RfZHluYW1p
Y19zY29wZV9iYWRfcmV0dXJuKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAg
ICAgICAgICAgZGVmIGR5bmFtaWNfc2NvcGUoKipfKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
Indyb25nLXNjb3BlIgorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9ZHluYW1p
Y19zY29wZSkKKyAgICAgICAgICAgIGRlZiBmaXh0dXJlKCk6CisgICAgICAgICAgICAgICAgcGFz
cworCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAg
ICAgIkZpeHR1cmUgJ2ZpeHR1cmUnIGZyb20gdGVzdF9keW5hbWljX3Njb3BlX2JhZF9yZXR1cm4u
cHkgIgorICAgICAgICAgICAgImdvdCBhbiB1bmV4cGVjdGVkIHNjb3BlIHZhbHVlICd3cm9uZy1z
Y29wZSciCisgICAgICAgICkKKwogICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX29ubHlfd2l0aF9tYXJr
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAg
ICAgICIiIgpAQCAtMjc0Miw3ICsyNzg0LDcgQEAgY2xhc3MgVGVzdEZpeHR1cmVNYXJrZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICozIHBhc3NlZCoKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAg
ICAgICAgYXNzZXJ0ICJlcnJvciIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIiplcnJvcioiKQogCiAgICAgZGVmIHRlc3Rf
Zml4dHVyZV9maW5hbGl6ZXIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNv
bmZ0ZXN0KApAQCAtMjc2MSwyMiArMjgwMywyMiBAQCBjbGFzcyBUZXN0Rml4dHVyZU1hcmtlcihv
YmplY3QpOgogICAgICAgICApCiAgICAgICAgIGIgPSB0ZXN0ZGlyLm1rZGlyKCJzdWJkaXIiKQog
ICAgICAgICBiLmpvaW4oInRlc3Rfb3ZlcnJpZGRlbl9maXh0dXJlX2ZpbmFsaXplci5weSIpLndy
aXRlKAotICAgICAgICAgICAgZGVkZW50KAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAg
ICBkZWYgYnJvd3Nlcihicm93c2VyKToKLSAgICAgICAgICAgICAgICBicm93c2VyWyd2aXNpdGVk
J10gPSBUcnVlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXIKKyAgICAgICAgICAgIHRl
eHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAg
ICAgIGRlZiBicm93c2VyKGJyb3dzZXIpOgorICAgICAgICAgICAgICAgICAgICBicm93c2VyWyd2
aXNpdGVkJ10gPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicm93c2VyCiAKLSAg
ICAgICAgICAgIGRlZiB0ZXN0X2Jyb3dzZXIoYnJvd3Nlcik6Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0IGJyb3dzZXJbJ3Zpc2l0ZWQnXSBpcyBUcnVlCi0gICAgICAgICIiIgorICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0X2Jyb3dzZXIoYnJvd3Nlcik6CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dCBicm93c2VyWyd2aXNpdGVkJ10gaXMgVHJ1ZQorICAgICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
cyIpCiAgICAgICAgIGZvciB0ZXN0IGluIFsidGVzdF9icm93c2VyIl06Ci0gICAgICAgICAgICBy
ZXByZWMuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIipGaW5hbGl6ZWQqIikKKyAgICAgICAgICAgIHJl
cHJlYy5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipGaW5hbGl6ZWQqIl0pCiAKICAgICBkZWYgdGVz
dF9jbGFzc19zY29wZV93aXRoX25vcm1hbF90ZXN0cyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
dGVzdHBhdGggPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0yODc1LDkgKzI5MTcsOSBAQCBjbGFz
cyBUZXN0Rml4dHVyZU1hcmtlcihvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlu
bGluZV9ydW4oIi12IikKICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTUpCiAK
LSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWUyNDYKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
InNjb3BlIiwgWyJzZXNzaW9uIiwgImZ1bmN0aW9uIiwgIm1vZHVsZSJdKQogICAgIGRlZiB0ZXN0
X2ZpbmFsaXplcl9vcmRlcl9vbl9wYXJhbWV0cml6YXRpb24oc2VsZiwgc2NvcGUsIHRlc3RkaXIp
OgorICAgICAgICAiIiIjMjQ2IiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjg5Nyw3ICsyOTM5LDcg
QEAgY2xhc3MgVGVzdEZpeHR1cmVNYXJrZXIob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBiYXNl
KHJlcXVlc3QsIGZpeDEpOgogICAgICAgICAgICAgICAgIGRlZiBjbGVhbnVwX2Jhc2UoKToKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgiZmluX2Jhc2UiKQotICAgICAgICAgICAg
ICAgICAgICBwcmludCAoImZpbmFsaXppbmcgYmFzZSIpCisgICAgICAgICAgICAgICAgICAgIHBy
aW50KCJmaW5hbGl6aW5nIGJhc2UiKQogICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkZmluYWxp
emVyKGNsZWFudXBfYmFzZSkKIAogICAgICAgICAgICAgZGVmIHRlc3RfYmVnaW4oKToKQEAgLTI5
MTIsOCArMjk1NCw4IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2VyKG9iamVjdCk6CiAgICAgICAg
IHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLWx2cyIpCiAgICAgICAgIHJlcHJlYy5hc3Nl
cnRvdXRjb21lKHBhc3NlZD0zKQogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlMzk2CiAgICAgZGVm
IHRlc3RfY2xhc3Nfc2NvcGVfcGFyYW1ldHJpemF0aW9uX29yZGVyaW5nKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICAiIiIjMzk2IiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMjkzOCwyMSArMjk4MCwx
OCBAQCBjbGFzcyBUZXN0Rml4dHVyZU1hcmtlcihvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0
ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9
NikKICAgICAgICAgdmFsdWVzID0gcmVwcmVjLmdldGNhbGxzKCJweXRlc3RfcnVudGVzdF9jYWxs
IilbMF0uaXRlbS5tb2R1bGUudmFsdWVzCi0gICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICB2
YWx1ZXMKLSAgICAgICAgICAgID09IFsKLSAgICAgICAgICAgICAgICAidGVzdF9oZWxsbyIsCi0g
ICAgICAgICAgICAgICAgImZpbiBKb2huIiwKLSAgICAgICAgICAgICAgICAidGVzdF9oZWxsbyIs
Ci0gICAgICAgICAgICAgICAgImZpbiBEb2UiLAotICAgICAgICAgICAgICAgICJ0ZXN0X25hbWUi
LAotICAgICAgICAgICAgICAgICJ0ZXN0X3BvcHVsYXRpb24iLAotICAgICAgICAgICAgICAgICJm
aW4gSm9obiIsCi0gICAgICAgICAgICAgICAgInRlc3RfbmFtZSIsCi0gICAgICAgICAgICAgICAg
InRlc3RfcG9wdWxhdGlvbiIsCi0gICAgICAgICAgICAgICAgImZpbiBEb2UiLAotICAgICAgICAg
ICAgXQotICAgICAgICApCisgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWworICAgICAgICAgICAg
InRlc3RfaGVsbG8iLAorICAgICAgICAgICAgImZpbiBKb2huIiwKKyAgICAgICAgICAgICJ0ZXN0
X2hlbGxvIiwKKyAgICAgICAgICAgICJmaW4gRG9lIiwKKyAgICAgICAgICAgICJ0ZXN0X25hbWUi
LAorICAgICAgICAgICAgInRlc3RfcG9wdWxhdGlvbiIsCisgICAgICAgICAgICAiZmluIEpvaG4i
LAorICAgICAgICAgICAgInRlc3RfbmFtZSIsCisgICAgICAgICAgICAidGVzdF9wb3B1bGF0aW9u
IiwKKyAgICAgICAgICAgICJmaW4gRG9lIiwKKyAgICAgICAgXQogCiAgICAgZGVmIHRlc3RfcGFy
YW1ldHJpemVfc2V0dXBfZnVuY3Rpb24oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKQEAgLTMwMjQsOCArMzA2Myw3IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2Vy
KG9iamVjdCk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAot
ICAgICAgICAgICAgQHB5dGVzdC55aWVsZF9maXh0dXJlKHBhcmFtcz1bb2JqZWN0KCksIG9iamVj
dCgpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHM9WydhbHBoYScsICdi
ZXRhJ10pCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVtvYmplY3QoKSwgb2Jq
ZWN0KCldLCBpZHM9WydhbHBoYScsICdiZXRhJ10pCiAgICAgICAgICAgICBkZWYgZml4KHJlcXVl
c3QpOgogICAgICAgICAgICAgICAgICB5aWVsZCByZXF1ZXN0LnBhcmFtCiAKQEAgLTMwMzYsOCAr
MzA3NCw4IEBAIGNsYXNzIFRlc3RGaXh0dXJlTWFya2VyKG9iamVjdCk6CiAgICAgICAgIHJlcyA9
IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCiAgICAgICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIip0ZXN0X2ZvbyphbHBoYSoiLCAiKnRlc3RfZm9vKmJldGEqIl0pCiAKLSAgICBAcHl0ZXN0
Lm1hcmsuaXNzdWU5MjAKICAgICBkZWYgdGVzdF9kZXRlcm1pbmlzdGljX2ZpeHR1cmVfY29sbGVj
dGlvbihzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgICAgICIiIiM5MjAiIiIKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CkBAIC0zMDgwLDcgKzMxMTgsNyBAQCBjbGFzcyBUZXN0Rml4dHVyZU1hcmtl
cihvYmplY3QpOgogICAgICAgICBhc3NlcnQgb3V0MSA9PSBvdXQyCiAKIAotY2xhc3MgVGVzdFJl
cXVlc3RTY29wZUFjY2VzcyhvYmplY3QpOgorY2xhc3MgVGVzdFJlcXVlc3RTY29wZUFjY2VzczoK
ICAgICBweXRlc3RtYXJrID0gcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCiAgICAgICAgICgic2Nv
cGUiLCAib2siLCAiZXJyb3IiKSwKICAgICAgICAgWwpAQCAtMzEzNCw4ICszMTcyLDcgQEAgY2xh
c3MgVGVzdFJlcXVlc3RTY29wZUFjY2VzcyhvYmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0
b3V0Y29tZShwYXNzZWQ9MSkKIAogCi1jbGFzcyBUZXN0RXJyb3JzKG9iamVjdCk6Ci0KK2NsYXNz
IFRlc3RFcnJvcnM6CiAgICAgZGVmIHRlc3Rfc3ViZmFjdG9yeV9taXNzaW5nX2Z1bmNhcmcoc2Vs
ZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIi
IgpAQCAtMzE4MCw3ICszMjE3LDcgQEAgY2xhc3MgVGVzdEVycm9ycyhvYmplY3QpOgogICAgICAg
ICAgICAgKktleUVycm9yKgogICAgICAgICAgICAgKkVSUk9SKnRlYXJkb3duKnRlc3RfMioKICAg
ICAgICAgICAgICpLZXlFcnJvcioKLSAgICAgICAgICAgICozIHBhc3MqMiBlcnJvcioKKyAgICAg
ICAgICAgICozIHBhc3MqMiBlcnJvcnMqCiAgICAgICAgICIiIgogICAgICAgICApCiAKQEAgLTMy
MDIsMTkgKzMyMzksMzIgQEAgY2xhc3MgVGVzdEVycm9ycyhvYmplY3QpOgogICAgICAgICApCiAK
IAotY2xhc3MgVGVzdFNob3dGaXh0dXJlcyhvYmplY3QpOgotCitjbGFzcyBUZXN0U2hvd0ZpeHR1
cmVzOgogICAgIGRlZiB0ZXN0X2Z1bmNhcmdfY29tcGF0KHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlndXJlKCItLWZ1bmNhcmdzIikKICAgICAgICAg
YXNzZXJ0IGNvbmZpZy5vcHRpb24uc2hvd2ZpeHR1cmVzCiAKICAgICBkZWYgdGVzdF9zaG93X2Zp
eHR1cmVzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1maXh0dXJlcyIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0
bXBkaXIqIiwgIip0ZW1wb3JhcnkgZGlyZWN0b3J5KiJdKQorICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgInRtcGRpcl9m
YWN0b3J5IFtbXXNlc3Npb24gc2NvcGVbXV0iLAorICAgICAgICAgICAgICAgICIqZm9yIHRoZSB0
ZXN0IHNlc3Npb24qIiwKKyAgICAgICAgICAgICAgICAidG1wZGlyIiwKKyAgICAgICAgICAgICAg
ICAiKnRlbXBvcmFyeSBkaXJlY3RvcnkqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQogCiAg
ICAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc192ZXJib3NlKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1maXh0dXJlcyIsICItdiIpCi0gICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0bXBkaXIqLS0qdG1wZGlyLnB5KiIsICIq
dGVtcG9yYXJ5IGRpcmVjdG9yeSoiXSkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJ0bXBkaXJfZmFjdG9yeSBbW11z
ZXNzaW9uIHNjb3BlW11dIC0tICp0bXBkaXIucHkqIiwKKyAgICAgICAgICAgICAgICAiKmZvciB0
aGUgdGVzdCBzZXNzaW9uKiIsCisgICAgICAgICAgICAgICAgInRtcGRpciAtLSAqdG1wZGlyLnB5
KiIsCisgICAgICAgICAgICAgICAgIip0ZW1wb3JhcnkgZGlyZWN0b3J5KiIsCisgICAgICAgICAg
ICBdCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfdGVzdG1vZHVsZShz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTMyMzcs
NyArMzI4Nyw3IEBAIGNsYXNzIFRlc3RTaG93Rml4dHVyZXMob2JqZWN0KToKICAgICAgICAgICAg
ICpoZWxsbyB3b3JsZCoKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0ICJh
cmcwIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5v
X2ZubWF0Y2hfbGluZSgiKmFyZzAqIikKIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
dGVzdG1vZCIsIFtUcnVlLCBGYWxzZV0pCiAgICAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc19jb25m
dGVzdChzZWxmLCB0ZXN0ZGlyLCB0ZXN0bW9kKToKQEAgLTMyNjgsMTI3ICszMzE4LDEyNCBAQCBj
bGFzcyBUZXN0U2hvd0ZpeHR1cmVzKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9zaG93X2ZpeHR1
cmVzX3RyaW1tZWRfZG9jKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgZGVkZW50KAotICAgICAgICAgICAgICAgICcnJwotICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAg
ICAgICBkZWYgYXJnMSgpOgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgIGxp
bmUxCi0gICAgICAgICAgICAgICAgbGluZTIKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgK
KyAgICAgICAgICAgICAgICAnJydcCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAg
ICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgICAgIGRlZiBhcmcxKCk6
CisgICAgICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgICAgICBsaW5lMQorICAg
ICAgICAgICAgICAgICAgICBsaW5lMgogCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRlZiBhcmcyKCk6Ci0gICAgICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICAgICAgbGluZTEKLSAgICAgICAgICAgICAgICBsaW5lMgorICAg
ICAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICAgICAgICAgICAgICBkZWYgYXJnMigpOgorICAgICAgICAgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgICAgICAgICAgbGluZTEKKyAgICAgICAgICAgICAgICAgICAgbGluZTIKIAotICAgICAg
ICAgICAgICAgICIiIgotICAgICAgICAnJycKKyAgICAgICAgICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICAgICAgJycnCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZml4dHVyZXMiLCBwKQogICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0
d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgICogZml4
dHVyZXMgZGVmaW5lZCBmcm9tIHRlc3Rfc2hvd19maXh0dXJlc190cmltbWVkX2RvYyAqCisgICAg
ICAgICAgICAgICAgYXJnMgorICAgICAgICAgICAgICAgICAgICBsaW5lMQorICAgICAgICAgICAg
ICAgICAgICBsaW5lMgorICAgICAgICAgICAgICAgIGFyZzEKKyAgICAgICAgICAgICAgICAgICAg
bGluZTEKKyAgICAgICAgICAgICAgICAgICAgbGluZTIKICAgICAgICAgICAgICAgICAiIiIKLSAg
ICAgICAgICAgICogZml4dHVyZXMgZGVmaW5lZCBmcm9tIHRlc3Rfc2hvd19maXh0dXJlc190cmlt
bWVkX2RvYyAqCi0gICAgICAgICAgICBhcmcyCi0gICAgICAgICAgICAgICAgbGluZTEKLSAgICAg
ICAgICAgICAgICBsaW5lMgotICAgICAgICAgICAgYXJnMQotICAgICAgICAgICAgICAgIGxpbmUx
Ci0gICAgICAgICAgICAgICAgbGluZTIKLQotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAg
ICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc19pbmRlbnRlZF9kb2Moc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICBk
ZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgJycn
XAorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICAgICAgICAgICAgICBkZWYgZml4dHVyZTEoKToKKyAgICAgICAgICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAgIGxpbmUxCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRlbnRlZCBsaW5lCisgICAgICAgICAgICAgICAgICAgICIiIgogICAgICAgICAgICAg
ICAgICcnJwotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlCi0gICAgICAgICAgICBkZWYgZml4dHVyZTEoKToKLSAgICAgICAgICAgICAgICAiIiIK
LSAgICAgICAgICAgICAgICBsaW5lMQotICAgICAgICAgICAgICAgICAgICBpbmRlbnRlZCBsaW5l
Ci0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICcnJwogICAgICAgICAgICAgKQogICAgICAg
ICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWZpeHR1cmVzIiwgcCkK
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgZGVkZW50
KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgICAgICAqIGZpeHR1cmVzIGRlZmluZWQgZnJvbSB0ZXN0X3Nob3dfZml4dHVyZXNf
aW5kZW50ZWRfZG9jICoKKyAgICAgICAgICAgICAgICBmaXh0dXJlMQorICAgICAgICAgICAgICAg
ICAgICBsaW5lMQorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ZWQgbGluZQogICAgICAg
ICAgICAgICAgICIiIgotICAgICAgICAgICAgKiBmaXh0dXJlcyBkZWZpbmVkIGZyb20gdGVzdF9z
aG93X2ZpeHR1cmVzX2luZGVudGVkX2RvYyAqCi0gICAgICAgICAgICBmaXh0dXJlMQotICAgICAg
ICAgICAgICAgIGxpbmUxCi0gICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKLSAgICAg
ICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3Nob3dfZml4
dHVyZXNfaW5kZW50ZWRfZG9jX2ZpcnN0X2xpbmVfdW5pbmRlbnRlZChzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAg
ICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAnJydcCisgICAgICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQor
ICAgICAgICAgICAgICAgIGRlZiBmaXh0dXJlMSgpOgorICAgICAgICAgICAgICAgICAgICAiIiJs
aW5lMQorICAgICAgICAgICAgICAgICAgICBsaW5lMgorICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZW50ZWQgbGluZQorICAgICAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICAgICAn
JycKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZQotICAgICAgICAgICAgZGVmIGZpeHR1cmUxKCk6Ci0gICAgICAgICAgICAgICAgIiIibGluZTEK
LSAgICAgICAgICAgICAgICBsaW5lMgotICAgICAgICAgICAgICAgICAgICBpbmRlbnRlZCBsaW5l
Ci0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICcnJwogICAgICAgICAgICAgKQogICAgICAg
ICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWZpeHR1cmVzIiwgcCkK
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgZGVkZW50
KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgICAgICAqIGZpeHR1cmVzIGRlZmluZWQgZnJvbSB0ZXN0X3Nob3dfZml4dHVyZXNf
aW5kZW50ZWRfZG9jX2ZpcnN0X2xpbmVfdW5pbmRlbnRlZCAqCisgICAgICAgICAgICAgICAgZml4
dHVyZTEKKyAgICAgICAgICAgICAgICAgICAgbGluZTEKKyAgICAgICAgICAgICAgICAgICAgbGlu
ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKICAgICAgICAgICAgICAg
ICAiIiIKLSAgICAgICAgICAgICogZml4dHVyZXMgZGVmaW5lZCBmcm9tIHRlc3Rfc2hvd19maXh0
dXJlc19pbmRlbnRlZF9kb2NfZmlyc3RfbGluZV91bmluZGVudGVkICoKLSAgICAgICAgICAgIGZp
eHR1cmUxCi0gICAgICAgICAgICAgICAgbGluZTEKLSAgICAgICAgICAgICAgICBsaW5lMgotICAg
ICAgICAgICAgICAgICAgICBpbmRlbnRlZCBsaW5lCi0gICAgICAgICIiIgogICAgICAgICAgICAg
KQogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9zaG93X2ZpeHR1cmVzX2luZGVudGVkX2luX2Ns
YXNzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAg
ICAgICAgICcnJ1wKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAg
ICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CisgICAgICAgICAgICAgICAgICAgIEBweXRlc3Qu
Zml4dHVyZQorICAgICAgICAgICAgICAgICAgICBkZWYgZml4dHVyZTEoc2VsZik6CisgICAgICAg
ICAgICAgICAgICAgICAgICAiIiJsaW5lMQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnRlZCBsaW5lCisgICAgICAgICAgICAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgICAgICAnJycKLSAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKLSAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgotICAgICAgICAgICAg
ICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgICAgIGRlZiBmaXh0dXJlMShzZWxmKToK
LSAgICAgICAgICAgICAgICAgICAgIiIibGluZTEKLSAgICAgICAgICAgICAgICAgICAgbGluZTIK
LSAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKLSAgICAgICAgICAgICAgICAg
ICAgIiIiCi0gICAgICAgICcnJwogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWZpeHR1cmVzIiwgcCkKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAg
dGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICAq
IGZpeHR1cmVzIGRlZmluZWQgZnJvbSB0ZXN0X3Nob3dfZml4dHVyZXNfaW5kZW50ZWRfaW5fY2xh
c3MgKgorICAgICAgICAgICAgICAgIGZpeHR1cmUxCisgICAgICAgICAgICAgICAgICAgIGxpbmUx
CisgICAgICAgICAgICAgICAgICAgIGxpbmUyCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
bnRlZCBsaW5lCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAqIGZpeHR1cmVzIGRl
ZmluZWQgZnJvbSB0ZXN0X3Nob3dfZml4dHVyZXNfaW5kZW50ZWRfaW5fY2xhc3MgKgotICAgICAg
ICAgICAgZml4dHVyZTEKLSAgICAgICAgICAgICAgICBsaW5lMQotICAgICAgICAgICAgICAgIGxp
bmUyCi0gICAgICAgICAgICAgICAgICAgIGluZGVudGVkIGxpbmUKLSAgICAgICAgIiIiCiAgICAg
ICAgICAgICApCiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfZGlmZmVy
ZW50X2ZpbGVzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiIKLSAgICAgICAgIzgzMzogLS1m
aXh0dXJlcyBvbmx5IHNob3dzIGZpeHR1cmVzIGZyb20gZmlyc3QgZmlsZQotICAgICAgICAiIiIK
KyAgICAgICAgIiIiYC0tZml4dHVyZXNgIG9ubHkgc2hvd3MgZml4dHVyZXMgZnJvbSBmaXJzdCBm
aWxlICgjODMzKS4iIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
dGVzdF9hPScnJwogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMzQ3NSwyOSArMzUyMiw0
MiBAQCBjbGFzcyBUZXN0U2hvd0ZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQogICAgICAgICAgICAgZGVmIGZv
bygpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCkKIAogCi1AcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZsYXZvciIsIFsi
Zml4dHVyZSIsICJ5aWVsZF9maXh0dXJlIl0pCi1jbGFzcyBUZXN0Q29udGV4dE1hbmFnZXJGaXh0
dXJlRnVuY3Mob2JqZWN0KToKK2NsYXNzIFRlc3RDb250ZXh0TWFuYWdlckZpeHR1cmVGdW5jczoK
KyAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsiZml4dHVyZSIsICJ5aWVsZF9maXh0dXJlIl0p
CisgICAgZGVmIGZsYXZvcihzZWxmLCByZXF1ZXN0LCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6Cisg
ICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX0ZJWFRVUkVfRkxBVk9SIiwgcmVxdWVz
dC5wYXJhbSkKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgdGVzdF9j
b250ZXh0PSIiIgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIFZBUiA9ICJQWVRF
U1RfRklYVFVSRV9GTEFWT1IiCisgICAgICAgICAgICBpZiBWQVIgbm90IGluIG9zLmVudmlyb246
CisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiUFlURVNUX0ZJWFRVUkVfRkxBVk9SIHdh
cyBub3Qgc2V0LCBhc3N1bWluZyBmaXh0dXJlIikKKyAgICAgICAgICAgICAgICBmaXh0dXJlID0g
cHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZml4dHVy
ZSA9IGdldGF0dHIocHl0ZXN0LCBvcy5lbnZpcm9uW1ZBUl0pCisgICAgICAgICIiIgorICAgICAg
ICApCiAKICAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZiwgdGVzdGRpciwgZmxhdm9yKToKICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LntmbGF2b3J9CisgICAgICAgICAgICBmcm9t
IHRlc3RfY29udGV4dCBpbXBvcnQgZml4dHVyZQorICAgICAgICAgICAgQGZpeHR1cmUKICAgICAg
ICAgICAgIGRlZiBhcmcxKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJzZXR1cCIpCisgICAg
ICAgICAgICAgICAgcHJpbnQoInNldHVwIikKICAgICAgICAgICAgICAgICB5aWVsZCAxCi0gICAg
ICAgICAgICAgICAgcHJpbnQgKCJ0ZWFyZG93biIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRl
YXJkb3duIikKICAgICAgICAgICAgIGRlZiB0ZXN0XzEoYXJnMSk6Ci0gICAgICAgICAgICAgICAg
cHJpbnQgKCJ0ZXN0MSAlcyIgJSBhcmcxKQorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0MSIs
IGFyZzEpCiAgICAgICAgICAgICBkZWYgdGVzdF8yKGFyZzEpOgotICAgICAgICAgICAgICAgIHBy
aW50ICgidGVzdDIgJXMiICUgYXJnMSkKKyAgICAgICAgICAgICAgICBwcmludCgidGVzdDIiLCBh
cmcxKQogICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICIiIi5mb3JtYXQoCi0gICAg
ICAgICAgICAgICAgZmxhdm9yPWZsYXZvcgotICAgICAgICAgICAgKQorICAgICAgICAiIiIKICAg
ICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXMiKQogICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCkBAIC0zNTE0LDE5ICszNTc0LDE3IEBAIGNs
YXNzIFRlc3RDb250ZXh0TWFuYWdlckZpeHR1cmVGdW5jcyhvYmplY3QpOgogICAgIGRlZiB0ZXN0
X3Njb3BlZChzZWxmLCB0ZXN0ZGlyLCBmbGF2b3IpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAg
ICAgIEBweXRlc3Que2ZsYXZvcn0oc2NvcGU9Im1vZHVsZSIpCisgICAgICAgICAgICBmcm9tIHRl
c3RfY29udGV4dCBpbXBvcnQgZml4dHVyZQorICAgICAgICAgICAgQGZpeHR1cmUoc2NvcGU9Im1v
ZHVsZSIpCiAgICAgICAgICAgICBkZWYgYXJnMSgpOgotICAgICAgICAgICAgICAgIHByaW50ICgi
c2V0dXAiKQorICAgICAgICAgICAgICAgIHByaW50KCJzZXR1cCIpCiAgICAgICAgICAgICAgICAg
eWllbGQgMQotICAgICAgICAgICAgICAgIHByaW50ICgidGVhcmRvd24iKQorICAgICAgICAgICAg
ICAgIHByaW50KCJ0ZWFyZG93biIpCiAgICAgICAgICAgICBkZWYgdGVzdF8xKGFyZzEpOgotICAg
ICAgICAgICAgICAgIHByaW50ICgidGVzdDEgJXMiICUgYXJnMSkKKyAgICAgICAgICAgICAgICBw
cmludCgidGVzdDEiLCBhcmcxKQogICAgICAgICAgICAgZGVmIHRlc3RfMihhcmcxKToKLSAgICAg
ICAgICAgICAgICBwcmludCAoInRlc3QyICVzIiAlIGFyZzEpCi0gICAgICAgICIiIi5mb3JtYXQo
Ci0gICAgICAgICAgICAgICAgZmxhdm9yPWZsYXZvcgotICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgIHByaW50KCJ0ZXN0MiIsIGFyZzEpCisgICAgICAgICIiIgogICAgICAgICApCiAgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKQEAgLTM1NDEsMTYgKzM1OTksMTQgQEAgY2xhc3MgVGVzdENvbnRl
eHRNYW5hZ2VyRml4dHVyZUZ1bmNzKG9iamVjdCk6CiAgICAgZGVmIHRlc3Rfc2V0dXBfZXhjZXB0
aW9uKHNlbGYsIHRlc3RkaXIsIGZsYXZvcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAg
QHB5dGVzdC57Zmxhdm9yfShzY29wZT0ibW9kdWxlIikKKyAgICAgICAgICAgIGZyb20gdGVzdF9j
b250ZXh0IGltcG9ydCBmaXh0dXJlCisgICAgICAgICAgICBAZml4dHVyZShzY29wZT0ibW9kdWxl
IikKICAgICAgICAgICAgIGRlZiBhcmcxKCk6CiAgICAgICAgICAgICAgICAgcHl0ZXN0LmZhaWwo
InNldHVwIikKICAgICAgICAgICAgICAgICB5aWVsZCAxCiAgICAgICAgICAgICBkZWYgdGVzdF8x
KGFyZzEpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAg
ICAgICAgICAgICBmbGF2b3I9Zmxhdm9yCi0gICAgICAgICAgICApCisgICAgICAgICIiIgogICAg
ICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKQEAgLTM1NjMsMTYgKzM2MTksMTQgQEAgY2xh
c3MgVGVzdENvbnRleHRNYW5hZ2VyRml4dHVyZUZ1bmNzKG9iamVjdCk6CiAgICAgZGVmIHRlc3Rf
dGVhcmRvd25fZXhjZXB0aW9uKHNlbGYsIHRlc3RkaXIsIGZsYXZvcik6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAotICAgICAgICAgICAgQHB5dGVzdC57Zmxhdm9yfShzY29wZT0ibW9kdWxlIikKKyAgICAgICAg
ICAgIGZyb20gdGVzdF9jb250ZXh0IGltcG9ydCBmaXh0dXJlCisgICAgICAgICAgICBAZml4dHVy
ZShzY29wZT0ibW9kdWxlIikKICAgICAgICAgICAgIGRlZiBhcmcxKCk6CiAgICAgICAgICAgICAg
ICAgeWllbGQgMQogICAgICAgICAgICAgICAgIHB5dGVzdC5mYWlsKCJ0ZWFyZG93biIpCiAgICAg
ICAgICAgICBkZWYgdGVzdF8xKGFyZzEpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAg
IiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBmbGF2b3I9Zmxhdm9yCi0gICAgICAgICAgICAp
CisgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItcyIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKQEAgLTM1ODUs
MTYgKzM2MzksMTQgQEAgY2xhc3MgVGVzdENvbnRleHRNYW5hZ2VyRml4dHVyZUZ1bmNzKG9iamVj
dCk6CiAgICAgZGVmIHRlc3RfeWllbGRzX21vcmVfdGhhbl9vbmUoc2VsZiwgdGVzdGRpciwgZmxh
dm9yKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LntmbGF2b3J9KHNjb3Bl
PSJtb2R1bGUiKQorICAgICAgICAgICAgZnJvbSB0ZXN0X2NvbnRleHQgaW1wb3J0IGZpeHR1cmUK
KyAgICAgICAgICAgIEBmaXh0dXJlKHNjb3BlPSJtb2R1bGUiKQogICAgICAgICAgICAgZGVmIGFy
ZzEoKToKICAgICAgICAgICAgICAgICB5aWVsZCAxCiAgICAgICAgICAgICAgICAgeWllbGQgMgog
ICAgICAgICAgICAgZGVmIHRlc3RfMShhcmcxKToKICAgICAgICAgICAgICAgICBwYXNzCi0gICAg
ICAgICIiIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZmxhdm9yPWZsYXZvcgotICAgICAgICAg
ICAgKQorICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLXMiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCkBAIC0z
NjA3LDI1ICszNjU5LDIyIEBAIGNsYXNzIFRlc3RDb250ZXh0TWFuYWdlckZpeHR1cmVGdW5jcyhv
YmplY3QpOgogICAgIGRlZiB0ZXN0X2N1c3RvbV9uYW1lKHNlbGYsIHRlc3RkaXIsIGZsYXZvcik6
CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgotICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC57Zmxhdm9yfShuYW1lPSdtZW93
JykKKyAgICAgICAgICAgIGZyb20gdGVzdF9jb250ZXh0IGltcG9ydCBmaXh0dXJlCisgICAgICAg
ICAgICBAZml4dHVyZShuYW1lPSdtZW93JykKICAgICAgICAgICAgIGRlZiBhcmcxKCk6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuICdtZXcnCiAgICAgICAgICAgICBkZWYgdGVzdF8xKG1lb3cpOgog
ICAgICAgICAgICAgICAgIHByaW50KG1lb3cpCi0gICAgICAgICIiIi5mb3JtYXQoCi0gICAgICAg
ICAgICAgICAgZmxhdm9yPWZsYXZvcgotICAgICAgICAgICAgKQorICAgICAgICAiIiIKICAgICAg
ICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXMiKQotICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiptZXcqIikKLQorICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqbWV3KiJdKQogCi1jbGFzcyBUZXN0UGFyYW1ldGVyaXplZFN1
YlJlcXVlc3Qob2JqZWN0KToKIAorY2xhc3MgVGVzdFBhcmFtZXRlcml6ZWRTdWJSZXF1ZXN0Ogog
ICAgIGRlZiB0ZXN0X2NhbGxfZnJvbV9maXh0dXJlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0
ZXN0ZmlsZSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X2NhbGxfZnJvbV9maXh0dXJlPSIi
IgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUocGFyYW1zPVswLCAxLCAyXSkKQEAgLTM2NDIsMjIgKzM2OTEsMjAgQEAgY2xhc3MgVGVzdFBh
cmFtZXRlcml6ZWRTdWJSZXF1ZXN0KG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEUqRmFpbGVkOiBUaGUgcmVxdWVzdGVk
IGZpeHR1cmUgaGFzIG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0aGUgY3VycmVudCB0ZXN0Lgot
ICAgICAgICAgICAgRSoKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGZpeHR1cmUgJ2ZpeF93aXRo
X3BhcmFtJyBkZWZpbmVkIGluOgotICAgICAgICAgICAgRSp7fTo0Ci0gICAgICAgICAgICBFKlJl
cXVlc3RlZCBoZXJlOgotICAgICAgICAgICAgRSp7fTo5Ci0gICAgICAgICAgICAqMSBlcnJvcioK
LSAgICAgICAgICAgICIiIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgdGVzdGZpbGUuYmFzZW5h
bWUsIHRlc3RmaWxlLmJhc2VuYW1lCi0gICAgICAgICAgICApCisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgIlRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1ldGVyIGRlZmlu
ZWQgZm9yIHRlc3Q6IiwKKyAgICAgICAgICAgICAgICAiICAgIHRlc3RfY2FsbF9mcm9tX2ZpeHR1
cmUucHk6OnRlc3RfZm9vIiwKKyAgICAgICAgICAgICAgICAiUmVxdWVzdGVkIGZpeHR1cmUgJ2Zp
eF93aXRoX3BhcmFtJyBkZWZpbmVkIGluOiIsCisgICAgICAgICAgICAgICAgInRlc3RfY2FsbF9m
cm9tX2ZpeHR1cmUucHk6NCIsCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBoZXJlOiIsCisg
ICAgICAgICAgICAgICAgInRlc3RfY2FsbF9mcm9tX2ZpeHR1cmUucHk6OSIsCisgICAgICAgICAg
ICAgICAgIioxIGVycm9yIGluKiIsCisgICAgICAgICAgICBdCiAgICAgICAgICkKIAogICAgIGRl
ZiB0ZXN0X2NhbGxfZnJvbV90ZXN0KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZmlsZSA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICAgICB0ZXN0X2NhbGxfZnJvbV90ZXN0PSIiIgogICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAogCiAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsw
LCAxLCAyXSkKQEAgLTM2NzAsMjEgKzM3MTcsMTkgQEAgY2xhc3MgVGVzdFBhcmFtZXRlcml6ZWRT
dWJSZXF1ZXN0KG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIEUqRmFpbGVkOiBUaGUgcmVxdWVzdGVkIGZpeHR1cmUgaGFz
IG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0aGUgY3VycmVudCB0ZXN0LgotICAgICAgICAgICAg
RSoKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGZpeHR1cmUgJ2ZpeF93aXRoX3BhcmFtJyBkZWZp
bmVkIGluOgotICAgICAgICAgICAgRSp7fTo0Ci0gICAgICAgICAgICBFKlJlcXVlc3RlZCBoZXJl
OgotICAgICAgICAgICAgRSp7fTo4Ci0gICAgICAgICAgICAqMSBmYWlsZWQqCi0gICAgICAgICAg
ICAiIiIuZm9ybWF0KAotICAgICAgICAgICAgICAgIHRlc3RmaWxlLmJhc2VuYW1lLCB0ZXN0Zmls
ZS5iYXNlbmFtZQotICAgICAgICAgICAgKQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICJUaGUgcmVxdWVzdGVkIGZpeHR1cmUgaGFzIG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0ZXN0
OiIsCisgICAgICAgICAgICAgICAgIiAgICB0ZXN0X2NhbGxfZnJvbV90ZXN0LnB5Ojp0ZXN0X2Zv
byIsCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBmaXh0dXJlICdmaXhfd2l0aF9wYXJhbScg
ZGVmaW5lZCBpbjoiLAorICAgICAgICAgICAgICAgICJ0ZXN0X2NhbGxfZnJvbV90ZXN0LnB5OjQi
LAorICAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgaGVyZToiLAorICAgICAgICAgICAgICAgICJ0
ZXN0X2NhbGxfZnJvbV90ZXN0LnB5OjgiLAorICAgICAgICAgICAgICAgICIqMSBmYWlsZWQqIiwK
KyAgICAgICAgICAgIF0KICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfZXh0ZXJuYWxfZml4dHVy
ZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgY29uZmZpbGUgPSB0ZXN0ZGlyLm1ha2Vjb25mdGVz
dCgKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKIApAQCAtMzY5NCwyNSArMzczOSwyNCBAQCBjbGFzcyBUZXN0
UGFyYW1ldGVyaXplZFN1YlJlcXVlc3Qob2JqZWN0KToKICAgICAgICAgICAgICIiIgogICAgICAg
ICApCiAKLSAgICAgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAg
ICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgdGVzdF9leHRl
cm5hbF9maXh0dXJlPSIiIgogICAgICAgICAgICAgZGVmIHRlc3RfZm9vKHJlcXVlc3QpOgogICAg
ICAgICAgICAgICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCdmaXhfd2l0aF9wYXJhbScpCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAg
ICIiIgotICAgICAgICAgICAgRSpGYWlsZWQ6IFRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8g
cGFyYW1ldGVyIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IHRlc3QuCi0gICAgICAgICAgICBFKgot
ICAgICAgICAgICAgRSpSZXF1ZXN0ZWQgZml4dHVyZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQg
aW46Ci0gICAgICAgICAgICBFKnt9OjQKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGhlcmU6Ci0g
ICAgICAgICAgICBFKnt9OjIKLSAgICAgICAgICAgICoxIGZhaWxlZCoKLSAgICAgICAgICAgICIi
Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgY29uZmZpbGUuYmFzZW5hbWUsIHRlc3RmaWxlLmJh
c2VuYW1lCi0gICAgICAgICAgICApCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIlRo
ZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1ldGVyIGRlZmluZWQgZm9yIHRlc3Q6IiwK
KyAgICAgICAgICAgICAgICAiICAgIHRlc3RfZXh0ZXJuYWxfZml4dHVyZS5weTo6dGVzdF9mb28i
LAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgZml4dHVy
ZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQgaW46IiwKKyAgICAgICAgICAgICAgICAiY29uZnRl
c3QucHk6NCIsCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBoZXJlOiIsCisgICAgICAgICAg
ICAgICAgInRlc3RfZXh0ZXJuYWxfZml4dHVyZS5weToyIiwKKyAgICAgICAgICAgICAgICAiKjEg
ZmFpbGVkKiIsCisgICAgICAgICAgICBdCiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X25vbl9y
ZWxhdGl2ZV9wYXRoKHNlbGYsIHRlc3RkaXIpOgpAQCAtMzcyMCwyNiArMzc2NCwyNiBAQCBjbGFz
cyBUZXN0UGFyYW1ldGVyaXplZFN1YlJlcXVlc3Qob2JqZWN0KToKICAgICAgICAgZml4ZGlyID0g
dGVzdGRpci5ta2RpcigiZml4dHVyZXMiKQogICAgICAgICBmaXhmaWxlID0gZml4ZGlyLmpvaW4o
ImZpeC5weSIpCiAgICAgICAgIGZpeGZpbGUud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9j
b2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisg
ICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUocGFyYW1zPVswLCAxLCAyXSkKLSAgICAgICAgICAgIGRlZiBmaXhfd2l0aF9wYXJhbShyZXF1
ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQotICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bMCwgMSwgMl0pCisg
ICAgICAgICAgICAgICAgZGVmIGZpeF93aXRoX3BhcmFtKHJlcXVlc3QpOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbQorICAgICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgKQogICAgICAgICApCiAKICAgICAgICAgdGVzdGZpbGUgPSB0ZXN0c19kaXIuam9pbigi
dGVzdF9mb29zLnB5IikKICAgICAgICAgdGVzdGZpbGUud3JpdGUoCi0gICAgICAgICAgICBfcHl0
ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGZyb20g
Zml4IGltcG9ydCBmaXhfd2l0aF9wYXJhbQorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAor
ICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBmcm9tIGZpeCBpbXBvcnQgZml4
X3dpdGhfcGFyYW0KIAotICAgICAgICAgICAgZGVmIHRlc3RfZm9vKHJlcXVlc3QpOgotICAgICAg
ICAgICAgICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCdmaXhfd2l0aF9wYXJhbScpCi0gICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mb28ocmVxdWVzdCk6CisgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKCdmaXhfd2l0aF9wYXJhbScp
CisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKIApAQCAtMzc0
NywyNCArMzc5MSwzOSBAQCBjbGFzcyBUZXN0UGFyYW1ldGVyaXplZFN1YlJlcXVlc3Qob2JqZWN0
KToKICAgICAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KGZpeGRpcikKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEUqRmFpbGVkOiBUaGUgcmVxdWVzdGVk
IGZpeHR1cmUgaGFzIG5vIHBhcmFtZXRlciBkZWZpbmVkIGZvciB0aGUgY3VycmVudCB0ZXN0Lgot
ICAgICAgICAgICAgRSoKLSAgICAgICAgICAgIEUqUmVxdWVzdGVkIGZpeHR1cmUgJ2ZpeF93aXRo
X3BhcmFtJyBkZWZpbmVkIGluOgotICAgICAgICAgICAgRSp7fTo1Ci0gICAgICAgICAgICBFKlJl
cXVlc3RlZCBoZXJlOgotICAgICAgICAgICAgRSp7fTo1Ci0gICAgICAgICAgICAqMSBmYWlsZWQq
Ci0gICAgICAgICAgICAiIiIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGZpeGZpbGUuc3RycGF0
aCwgdGVzdGZpbGUuYmFzZW5hbWUKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAiVGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVmaW5l
ZCBmb3IgdGVzdDoiLAorICAgICAgICAgICAgICAgICIgICAgdGVzdF9mb29zLnB5Ojp0ZXN0X2Zv
byIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBmaXh0
dXJlICdmaXhfd2l0aF9wYXJhbScgZGVmaW5lZCBpbjoiLAorICAgICAgICAgICAgICAgICJ7fTo0
Ii5mb3JtYXQoZml4ZmlsZSksCisgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBoZXJlOiIsCisg
ICAgICAgICAgICAgICAgInRlc3RfZm9vcy5weTo0IiwKKyAgICAgICAgICAgICAgICAiKjEgZmFp
bGVkKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKworICAgICAgICAjIFdpdGggbm9uLW92
ZXJsYXBwaW5nIHJvb3RkaXIsIHBhc3NpbmcgdGVzdHNfZGlyLgorICAgICAgICByb290ZGlyID0g
dGVzdGRpci5ta2Rpcigicm9vdGRpciIpCisgICAgICAgIHJvb3RkaXIuY2hkaXIoKQorICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1yb290ZGlyIiwgcm9vdGRpciwgdGVzdHNf
ZGlyKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgIlRoZSByZXF1ZXN0ZWQgZml4dHVyZSBoYXMgbm8gcGFyYW1ldGVy
IGRlZmluZWQgZm9yIHRlc3Q6IiwKKyAgICAgICAgICAgICAgICAiICAgIHRlc3RfZm9vcy5weTo6
dGVzdF9mb28iLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJSZXF1ZXN0
ZWQgZml4dHVyZSAnZml4X3dpdGhfcGFyYW0nIGRlZmluZWQgaW46IiwKKyAgICAgICAgICAgICAg
ICAie306NCIuZm9ybWF0KGZpeGZpbGUpLAorICAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgaGVy
ZToiLAorICAgICAgICAgICAgICAgICJ7fTo0Ii5mb3JtYXQodGVzdGZpbGUpLAorICAgICAgICAg
ICAgICAgICIqMSBmYWlsZWQqIiwKKyAgICAgICAgICAgIF0KICAgICAgICAgKQogCiAKIGRlZiB0
ZXN0X3B5dGVzdF9maXh0dXJlX3NldHVwX2FuZF9wb3N0X2ZpbmFsaXplcl9ob29rKHRlc3RkaXIp
OgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogICAgICAgICBkZWYgcHl0ZXN0X2ZpeHR1
cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6CiAgICAgICAgICAgICBwcmludCgnUk9PVCBz
ZXR1cCBob29rIGNhbGxlZCBmb3IgezB9IGZyb20gezF9Jy5mb3JtYXQoZml4dHVyZWRlZi5hcmdu
YW1lLCByZXF1ZXN0Lm5vZGUubmFtZSkpCiAgICAgICAgIGRlZiBweXRlc3RfZml4dHVyZV9wb3N0
X2ZpbmFsaXplcihmaXh0dXJlZGVmLCByZXF1ZXN0KToKQEAgLTM3NzQsMTQgKzM4MzMsMTIgQEAg
ZGVmIHRlc3RfcHl0ZXN0X2ZpeHR1cmVfc2V0dXBfYW5kX3Bvc3RfZmluYWxpemVyX2hvb2sodGVz
dGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAqKnsKICAgICAgICAgICAg
ICJ0ZXN0cy9jb25mdGVzdC5weSI6ICIiIgotICAgICAgICAgICAgZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgogICAgICAgICAgICAgZGVmIHB5dGVzdF9maXh0dXJlX3NldHVw
KGZpeHR1cmVkZWYsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgIHByaW50KCdURVNUUyBzZXR1
cCBob29rIGNhbGxlZCBmb3IgezB9IGZyb20gezF9Jy5mb3JtYXQoZml4dHVyZWRlZi5hcmduYW1l
LCByZXF1ZXN0Lm5vZGUubmFtZSkpCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2ZpeHR1cmVfcG9z
dF9maW5hbGl6ZXIoZml4dHVyZWRlZiwgcmVxdWVzdCk6CiAgICAgICAgICAgICAgICAgcHJpbnQo
J1RFU1RTIGZpbmFsaXplciBob29rIGNhbGxlZCBmb3IgezB9IGZyb20gezF9Jy5mb3JtYXQoZml4
dHVyZWRlZi5hcmduYW1lLCByZXF1ZXN0Lm5vZGUubmFtZSkpCiAgICAgICAgICIiIiwKICAgICAg
ICAgICAgICJ0ZXN0cy90ZXN0X2hvb2tzLnB5IjogIiIiCi0gICAgICAgICAgICBmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAK
ICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZSgpCkBAIC0zODA3LDIwICszODY0LDMwIEBAIGRl
ZiB0ZXN0X3B5dGVzdF9maXh0dXJlX3NldHVwX2FuZF9wb3N0X2ZpbmFsaXplcl9ob29rKHRlc3Rk
aXIpOgogICAgICkKIAogCi1jbGFzcyBUZXN0U2NvcGVPcmRlcmluZyhvYmplY3QpOgorY2xhc3Mg
VGVzdFNjb3BlT3JkZXJpbmc6CiAgICAgIiIiQ2xhc3Mgb2YgdGVzdHMgdGhhdCBlbnN1cmUgZml4
dHVyZXMgYXJlIG9yZGVyZWQgYmFzZWQgb24gdGhlaXIgc2NvcGVzICgjMjQwNSkiIiIKIAotICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidXNlX21hcmsiLCBbVHJ1ZSwgRmFsc2VdKQotICAg
IGRlZiB0ZXN0X2Z1bmNfY2xvc3VyZV9tb2R1bGVfYXV0byhzZWxmLCB0ZXN0ZGlyLCB1c2VfbWFy
ayk6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ2YXJpYW50IiwgWyJtYXJrIiwgImF1
dG91c2UiXSkKKyAgICBkZWYgdGVzdF9mdW5jX2Nsb3N1cmVfbW9kdWxlX2F1dG8oc2VsZiwgdGVz
dGRpciwgdmFyaWFudCwgbW9ua2V5cGF0Y2gpOgogICAgICAgICAiIiJTZW1hbnRpY2FsbHkgaWRl
bnRpY2FsIHRvIHRoZSBleGFtcGxlIHBvc3RlZCBpbiAjMjQwNSB3aGVuIGBgdXNlX21hcms9VHJ1
ZWBgIiIiCisgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRklYVFVSRV9BQ1RJVkFUSU9OX1ZB
UklBTlQiLCB2YXJpYW50KQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgaW1wb3J0IG9z
CiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBWQVIgPSAnRklYVFVSRV9B
Q1RJVkFUSU9OX1ZBUklBTlQnCisgICAgICAgICAgICBWQUxJRF9WQVJTID0gKCdhdXRvdXNlJywg
J21hcmsnKQorCisgICAgICAgICAgICBWQVJJQU5UID0gb3MuZW52aXJvbi5nZXQoVkFSKQorICAg
ICAgICAgICAgaWYgVkFSSUFOVCBpcyBOb25lIG9yIFZBUklBTlQgbm90IGluIFZBTElEX1ZBUlM6
CisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigieyFyfSBpcyBub3QgIGluIHt9LCBhc3N1
bWluZyBhdXRvdXNlIi5mb3JtYXQoVkFSSUFOVCwgVkFMSURfVkFSUykgKQorICAgICAgICAgICAg
ICAgIHZhcmlhbnQgPSAnbWFyaycKIAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3Bl
PSdtb2R1bGUnLCBhdXRvdXNlPXthdXRvdXNlfSkKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZShzY29wZT0nbW9kdWxlJywgYXV0b3VzZT1WQVJJQU5UID09ICdhdXRvdXNlJykKICAgICAgICAg
ICAgIGRlZiBtMSgpOiBwYXNzCiAKLSAgICAgICAgICAgIGlmIHt1c2VfbWFya306CisgICAgICAg
ICAgICBpZiBWQVJJQU5UPT0nbWFyayc6CiAgICAgICAgICAgICAgICAgcHl0ZXN0bWFyayA9IHB5
dGVzdC5tYXJrLnVzZWZpeHR1cmVzKCdtMScpCiAKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZShzY29wZT0nZnVuY3Rpb24nLCBhdXRvdXNlPVRydWUpCkBAIC0zODI4LDE1ICszODk1LDEzIEBA
IGNsYXNzIFRlc3RTY29wZU9yZGVyaW5nKG9iamVjdCk6CiAKICAgICAgICAgICAgIGRlZiB0ZXN0
X2Z1bmMobTEpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiLmZvcm1hdCgKLSAg
ICAgICAgICAgICAgICBhdXRvdXNlPW5vdCB1c2VfbWFyaywgdXNlX21hcms9dXNlX21hcmsKLSAg
ICAgICAgICAgICkKKyAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgaXRlbXMsIF8gPSB0
ZXN0ZGlyLmlubGluZV9nZW5pdGVtcygpCiAgICAgICAgIHJlcXVlc3QgPSBGaXh0dXJlUmVxdWVz
dChpdGVtc1swXSkKICAgICAgICAgYXNzZXJ0IHJlcXVlc3QuZml4dHVyZW5hbWVzID09ICJtMSBm
MSIuc3BsaXQoKQogCi0gICAgZGVmIHRlc3RfZnVuY19jbG9zdXJlX3dpdGhfbmF0aXZlX2ZpeHR1
cmVzKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICBkZWYgdGVzdF9mdW5jX2Nsb3N1
cmVfd2l0aF9uYXRpdmVfZml4dHVyZXMoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpIC0+IE5v
bmU6CiAgICAgICAgICIiIlNhbml0eSBjaGVjayB0aGF0IHZlcmlmaWVzIHRoZSBvcmRlciByZXR1
cm5lZCBieSB0aGUgY2xvc3VyZXMgYW5kIHRoZSBhY3R1YWwgZml4dHVyZSBleGVjdXRpb24gb3Jk
ZXI6CiAgICAgICAgIFRoZSBleGVjdXRpb24gb3JkZXIgbWF5IGRpZmZlciBiZWNhdXNlIG9mIGZp
eHR1cmUgaW50ZXItZGVwZW5kZW5jaWVzLgogICAgICAgICAiIiIKQEAgLTM4NTEsNiArMzkxNiwx
MCBAQCBjbGFzcyBUZXN0U2NvcGVPcmRlcmluZyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIHMx
KCk6CiAgICAgICAgICAgICAgICAgRklYVFVSRV9PUkRFUi5hcHBlbmQoJ3MxJykKIAorICAgICAg
ICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJwYWNrYWdlIikKKyAgICAgICAgICAgIGRlZiBw
MSgpOgorICAgICAgICAgICAgICAgIEZJWFRVUkVfT1JERVIuYXBwZW5kKCdwMScpCisKICAgICAg
ICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKICAgICAgICAgICAgIGRlZiBt
MSgpOgogICAgICAgICAgICAgICAgIEZJWFRVUkVfT1JERVIuYXBwZW5kKCdtMScpCkBAIC0zODcx
LDE2ICszOTQwLDE5IEBAIGNsYXNzIFRlc3RTY29wZU9yZGVyaW5nKG9iamVjdCk6CiAgICAgICAg
ICAgICBkZWYgZjIoKToKICAgICAgICAgICAgICAgICBGSVhUVVJFX09SREVSLmFwcGVuZCgnZjIn
KQogCi0gICAgICAgICAgICBkZWYgdGVzdF9mb28oZjEsIG0xLCBmMiwgczEpOiBwYXNzCisgICAg
ICAgICAgICBkZWYgdGVzdF9mb28oZjEsIHAxLCBtMSwgZjIsIHMxKTogcGFzcwogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICBpdGVtcywgXyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1z
KCkKICAgICAgICAgcmVxdWVzdCA9IEZpeHR1cmVSZXF1ZXN0KGl0ZW1zWzBdKQogICAgICAgICAj
IG9yZGVyIG9mIGZpeHR1cmVzIGJhc2VkIG9uIHRoZWlyIHNjb3BlIGFuZCBwb3NpdGlvbiBpbiB0
aGUgcGFyYW1ldGVyIGxpc3QKLSAgICAgICAgYXNzZXJ0IHJlcXVlc3QuZml4dHVyZW5hbWVzID09
ICJzMSBteV90bXBkaXJfZmFjdG9yeSBtMSBmMSBmMiBteV90bXBkaXIiLnNwbGl0KCkKKyAgICAg
ICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIHJlcXVlc3QuZml4dHVyZW5hbWVzID09ICJzMSBteV90
bXBkaXJfZmFjdG9yeSBwMSBtMSBmMSBmMiBteV90bXBkaXIiLnNwbGl0KCkKKyAgICAgICAgKQog
ICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgICMgYWN0dWFsIGZpeHR1cmUgZXhl
Y3V0aW9uIGRpZmZlcnM6IGRlcGVuZGVudCBmaXh0dXJlcyBtdXN0IGJlIGNyZWF0ZWQgZmlyc3Qg
KCJteV90bXBkaXIiKQotICAgICAgICBhc3NlcnQgcHl0ZXN0LkZJWFRVUkVfT1JERVIgPT0gInMx
IG15X3RtcGRpcl9mYWN0b3J5IG0xIG15X3RtcGRpciBmMSBmMiIuc3BsaXQoKQorICAgICAgICBG
SVhUVVJFX09SREVSID0gcHl0ZXN0LkZJWFRVUkVfT1JERVIgICMgdHlwZTogaWdub3JlW2F0dHIt
ZGVmaW5lZF0KKyAgICAgICAgYXNzZXJ0IEZJWFRVUkVfT1JERVIgPT0gInMxIG15X3RtcGRpcl9m
YWN0b3J5IHAxIG0xIG15X3RtcGRpciBmMSBmMiIuc3BsaXQoKQogCiAgICAgZGVmIHRlc3RfZnVu
Y19jbG9zdXJlX21vZHVsZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKApAQCAtMzk0OSw5ICs0MDIxLDEzIEBAIGNsYXNzIFRlc3RTY29wZU9yZGVyaW5nKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgInN1Yi9jb25mdGVzdC5weSI6ICIiIgogICAgICAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKIAorICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29w
ZT0ncGFja2FnZScsIGF1dG91c2U9VHJ1ZSkKKyAgICAgICAgICAgICAgICBkZWYgcF9zdWIoKTog
cGFzcworCiAgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSdtb2R1bGUnLCBh
dXRvdXNlPVRydWUpCiAgICAgICAgICAgICAgICAgZGVmIG1fc3ViKCk6IHBhc3MKICAgICAgICAg
ICAgICIiIiwKKyAgICAgICAgICAgICAgICAic3ViL19faW5pdF9fLnB5IjogIiIsCiAgICAgICAg
ICAgICAgICAgInN1Yi90ZXN0X2Z1bmMucHkiOiAiIiIKICAgICAgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CiAKQEAgLTM5NjgsNyArNDA0NCw3IEBAIGNsYXNzIFRlc3RTY29wZU9yZGVyaW5nKG9i
amVjdCk6CiAgICAgICAgICkKICAgICAgICAgaXRlbXMsIF8gPSB0ZXN0ZGlyLmlubGluZV9nZW5p
dGVtcygpCiAgICAgICAgIHJlcXVlc3QgPSBGaXh0dXJlUmVxdWVzdChpdGVtc1swXSkKLSAgICAg
ICAgYXNzZXJ0IHJlcXVlc3QuZml4dHVyZW5hbWVzID09ICJtX2NvbmYgbV9zdWIgbV90ZXN0IGYx
Ii5zcGxpdCgpCisgICAgICAgIGFzc2VydCByZXF1ZXN0LmZpeHR1cmVuYW1lcyA9PSAicF9zdWIg
bV9jb25mIG1fc3ViIG1fdGVzdCBmMSIuc3BsaXQoKQogCiAgICAgZGVmIHRlc3RfZnVuY19jbG9z
dXJlX2FsbF9zY29wZXNfY29tcGxleChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIiQ29tcGxl
eCB0ZXN0IGludm9sdmluZyBhbGwgc2NvcGVzIGFuZCBtaXhpbmcgYXV0b3VzZSB3aXRoIG5vcm1h
bCBmaXh0dXJlcyIiIgpAQCAtMzk3OCw4ICs0MDU0LDEyIEBAIGNsYXNzIFRlc3RTY29wZU9yZGVy
aW5nKG9iamVjdCk6CiAKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0nc2Vzc2lv
bicpCiAgICAgICAgICAgICBkZWYgczEoKTogcGFzcworCisgICAgICAgICAgICBAcHl0ZXN0LmZp
eHR1cmUoc2NvcGU9J3BhY2thZ2UnLCBhdXRvdXNlPVRydWUpCisgICAgICAgICAgICBkZWYgcDEo
KTogcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoKip7Il9faW5pdF9fLnB5IjogIiJ9KQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTQwMDgsNCArNDA4
OCwyOTUgQEAgY2xhc3MgVGVzdFNjb3BlT3JkZXJpbmcob2JqZWN0KToKICAgICAgICAgKQogICAg
ICAgICBpdGVtcywgXyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1zKCkKICAgICAgICAgcmVxdWVz
dCA9IEZpeHR1cmVSZXF1ZXN0KGl0ZW1zWzBdKQotICAgICAgICBhc3NlcnQgcmVxdWVzdC5maXh0
dXJlbmFtZXMgPT0gInMxIG0xIG0yIGMxIGYyIGYxIi5zcGxpdCgpCisgICAgICAgIGFzc2VydCBy
ZXF1ZXN0LmZpeHR1cmVuYW1lcyA9PSAiczEgcDEgbTEgbTIgYzEgZjIgZjEiLnNwbGl0KCkKKwor
ICAgIGRlZiB0ZXN0X211bHRpcGxlX3BhY2thZ2VzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAi
IiJDb21wbGV4IHRlc3QgaW52b2x2aW5nIG11bHRpcGxlIHBhY2thZ2UgZml4dHVyZXMuIE1ha2Ug
c3VyZSB0ZWFyZG93bnMKKyAgICAgICAgYXJlIGV4ZWN1dGVkIGluIG9yZGVyLgorICAgICAgICAu
CisgICAgICAgIOKUlOKUgOKUgCByb290CisgICAgICAgICAgICDilJzilIDilIAgX19pbml0X18u
cHkKKyAgICAgICAgICAgIOKUnOKUgOKUgCBzdWIxCisgICAgICAgICAgICDilIIgICDilJzilIDi
lIAgX19pbml0X18ucHkKKyAgICAgICAgICAgIOKUgiAgIOKUnOKUgOKUgCBjb25mdGVzdC5weQor
ICAgICAgICAgICAg4pSCICAg4pSU4pSA4pSAIHRlc3RfMS5weQorICAgICAgICAgICAg4pSU4pSA
4pSAIHN1YjIKKyAgICAgICAgICAgICAgICDilJzilIDilIAgX19pbml0X18ucHkKKyAgICAgICAg
ICAgICAgICDilJzilIDilIAgY29uZnRlc3QucHkKKyAgICAgICAgICAgICAgICDilJTilIDilIAg
dGVzdF8yLnB5CisgICAgICAgICIiIgorICAgICAgICByb290ID0gdGVzdGRpci5ta2Rpcigicm9v
dCIpCisgICAgICAgIHJvb3Quam9pbigiX19pbml0X18ucHkiKS53cml0ZSgidmFsdWVzID0gW10i
KQorICAgICAgICBzdWIxID0gcm9vdC5ta2Rpcigic3ViMSIpCisgICAgICAgIHN1YjEuZW5zdXJl
KCJfX2luaXRfXy5weSIpCisgICAgICAgIHN1YjEuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgK
KyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBmcm9tIC4uIGltcG9ydCB2YWx1ZXMK
KyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0icGFja2FnZSIpCisgICAgICAgICAg
ICBkZWYgZml4KCk6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgicHJlLXN1YjEiKQor
ICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlcworICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1
ZXMucG9wKCkgPT0gInByZS1zdWIxIgorICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzdWIxLmpvaW4oInRlc3RfMS5weSIpLndyaXRlKAorICAgICAgICAgICAg
dGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGZyb20g
Li4gaW1wb3J0IHZhbHVlcworICAgICAgICAgICAgZGVmIHRlc3RfMShmaXgpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWyJwcmUtc3ViMSJdCisgICAgICAgICIiIgorICAgICAg
ICAgICAgKQorICAgICAgICApCisgICAgICAgIHN1YjIgPSByb290Lm1rZGlyKCJzdWIyIikKKyAg
ICAgICAgc3ViMi5lbnN1cmUoIl9faW5pdF9fLnB5IikKKyAgICAgICAgc3ViMi5qb2luKCJjb25m
dGVzdC5weSIpLndyaXRlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAg
ICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGZyb20g
Li4gaW1wb3J0IHZhbHVlcworICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJwYWNr
YWdlIikKKyAgICAgICAgICAgIGRlZiBmaXgoKToKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBw
ZW5kKCJwcmUtc3ViMiIpCisgICAgICAgICAgICAgICAgeWllbGQgdmFsdWVzCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IHZhbHVlcy5wb3AoKSA9PSAicHJlLXN1YjIiCisgICAgICAgICIiIgorICAg
ICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHN1YjIuam9pbigidGVzdF8yLnB5Iikud3Jp
dGUoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAor
ICAgICAgICAgICAgZnJvbSAuLiBpbXBvcnQgdmFsdWVzCisgICAgICAgICAgICBkZWYgdGVzdF8y
KGZpeCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbInByZS1zdWIyIl0KKyAg
ICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgcmVwcmVjID0gdGVz
dGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIp
CisKKyAgICBkZWYgdGVzdF9jbGFzc19maXh0dXJlX3NlbGZfaW5zdGFuY2Uoc2VsZiwgdGVzdGRp
cik6CisgICAgICAgICIiIkNoZWNrIHRoYXQgcGx1Z2luIGNsYXNzZXMgd2hpY2ggaW1wbGVtZW50
IGZpeHR1cmVzIHJlY2VpdmUgdGhlIHBsdWdpbiBpbnN0YW5jZQorICAgICAgICBhcyBzZWxmIChz
ZWUgIzIyNzApLgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAg
ZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKKyAgICAgICAgICAgICAgICBjb25maWcucGx1
Z2lubWFuYWdlci5yZWdpc3RlcihNeVBsdWdpbigpKQorCisgICAgICAgICAgICBjbGFzcyBNeVBs
dWdpbigpOgorICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5hcmcgPSAxCisKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUo
c2NvcGU9J2Z1bmN0aW9uJykKKyAgICAgICAgICAgICAgICBkZWYgbXlmaXgoc2VsZik6CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIE15UGx1Z2luKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hcmcKKyAgICAgICAgIiIiCisgICAgICAgICkKKwor
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0XzEoc2Vs
ZiwgbXlmaXgpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXlmaXggPT0gMQorICAgICAg
ICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQor
ICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKKworCitkZWYgdGVzdF9jYWxs
X2ZpeHR1cmVfZnVuY3Rpb25fZXJyb3IoKToKKyAgICAiIiJDaGVjayBpZiBhbiBlcnJvciBpcyBy
YWlzZWQgaWYgYSBmaXh0dXJlIGZ1bmN0aW9uIGlzIGNhbGxlZCBkaXJlY3RseSAoIzQ1NDUpIiIi
CisKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgZml4KCk6CisgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWls
LkV4Y2VwdGlvbik6CisgICAgICAgIGFzc2VydCBmaXgoKSA9PSAxCisKKworZGVmIHRlc3RfZml4
dHVyZV9wYXJhbV9zaGFkb3dpbmcodGVzdGRpcik6CisgICAgIiIiUGFyYW1ldHJpemVkIGFyZ3Vt
ZW50cyB3b3VsZCBiZSBzaGFkb3dlZCBpZiBhIGZpeHR1cmUgd2l0aCB0aGUgc2FtZSBuYW1lIGFs
c28gZXhpc3RzICgjNTAzNikiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIi
IgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlKHBhcmFt
cz1bJ2EnLCAnYiddKQorICAgICAgICBkZWYgYXJncm9vdChyZXF1ZXN0KToKKyAgICAgICAgICAg
IHJldHVybiByZXF1ZXN0LnBhcmFtCisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAg
IGRlZiBhcmcoYXJncm9vdCk6CisgICAgICAgICAgICByZXR1cm4gYXJncm9vdAorCisgICAgICAg
ICMgVGhpcyBzaG91bGQgb25seSBiZSBwYXJhbWV0cml6ZWQgZGlyZWN0bHkKKyAgICAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhcmciLCBbMV0pCisgICAgICAgIGRlZiB0ZXN0X2RpcmVj
dChhcmcpOgorICAgICAgICAgICAgYXNzZXJ0IGFyZyA9PSAxCisKKyAgICAgICAgIyBUaGlzIHNo
b3VsZCBiZSBwYXJhbWV0cml6ZWQgYmFzZWQgb24gdGhlIGZpeHR1cmVzCisgICAgICAgIGRlZiB0
ZXN0X25vcm1hbF9maXh0dXJlKGFyZyk6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShh
cmcsIHN0cikKKworICAgICAgICAjIEluZGlyZWN0IHNob3VsZCBzdGlsbCB3b3JrOgorCisgICAg
ICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBkZWYgYXJnMihyZXF1ZXN0KToKKyAgICAgICAg
ICAgIHJldHVybiAyKnJlcXVlc3QucGFyYW0KKworICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoImFyZzIiLCBbMV0sIGluZGlyZWN0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0X2luZGly
ZWN0KGFyZzIpOgorICAgICAgICAgICAgYXNzZXJ0IGFyZzIgPT0gMgorICAgICIiIgorICAgICkK
KyAgICAjIE9ubHkgb25lIHRlc3Qgc2hvdWxkIGhhdmUgcnVuCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi12IikKKyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD00KQor
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio6OnRlc3RfZGlyZWN0W1tdMVtdXSoi
XSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqOjp0ZXN0X25vcm1hbF9maXh0
dXJlW1tdYVtdXSoiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqOjp0ZXN0
X25vcm1hbF9maXh0dXJlW1tdYltdXSoiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqOjp0ZXN0X2luZGlyZWN0W1tdMVtdXSoiXSkKKworCitkZWYgdGVzdF9maXh0dXJlX25h
bWVkX3JlcXVlc3QodGVzdGRpcik6CisgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoImZpeHR1cmVz
L3Rlc3RfZml4dHVyZV9uYW1lZF9yZXF1ZXN0LnB5IikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisg
ICAgICAgICAgICAiKidyZXF1ZXN0JyBpcyBhIHJlc2VydmVkIHdvcmQgZm9yIGZpeHR1cmVzLCB1
c2UgYW5vdGhlciBuYW1lOiIsCisgICAgICAgICAgICAiICAqdGVzdF9maXh0dXJlX25hbWVkX3Jl
cXVlc3QucHk6NSIsCisgICAgICAgIF0KKyAgICApCisKKworZGVmIHRlc3RfaW5kaXJlY3RfZml4
dHVyZV9kb2VzX25vdF9icmVha19zY29wZSh0ZXN0ZGlyKToKKyAgICAiIiJFbnN1cmUgdGhhdCBm
aXh0dXJlIHNjb3BlIGlzIHJlc3BlY3RlZCB3aGVuIHVzaW5nIGluZGlyZWN0IGZpeHR1cmVzICgj
NTcwKSIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgaW5zdGFudGlhdGVkICA9IFtdCisKKyAgICAgICAgQHB5dGVz
dC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKKyAgICAgICAgZGVmIGZpeHR1cmVfMShyZXF1ZXN0
KToKKyAgICAgICAgICAgIGluc3RhbnRpYXRlZC5hcHBlbmQoKCJmaXh0dXJlXzEiLCByZXF1ZXN0
LnBhcmFtKSkKKworCisgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCisg
ICAgICAgIGRlZiBmaXh0dXJlXzIocmVxdWVzdCk6CisgICAgICAgICAgICBpbnN0YW50aWF0ZWQu
YXBwZW5kKCgiZml4dHVyZV8yIiwgcmVxdWVzdC5wYXJhbSkpCisKKworICAgICAgICBzY2VuYXJp
b3MgPSBbCisgICAgICAgICAgICAoIkEiLCAiYTEiKSwKKyAgICAgICAgICAgICgiQSIsICJhMiIp
LAorICAgICAgICAgICAgKCJCIiwgImIxIiksCisgICAgICAgICAgICAoIkIiLCAiYjIiKSwKKyAg
ICAgICAgICAgICgiQyIsICJjMSIpLAorICAgICAgICAgICAgKCJDIiwgImMyIiksCisgICAgICAg
IF0KKworICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAgICAgICAiZml4
dHVyZV8xLGZpeHR1cmVfMiIsIHNjZW5hcmlvcywgaW5kaXJlY3Q9WyJmaXh0dXJlXzEiLCAiZml4
dHVyZV8yIl0KKyAgICAgICAgKQorICAgICAgICBkZWYgdGVzdF9jcmVhdGVfZml4dHVyZXMoZml4
dHVyZV8xLCBmaXh0dXJlXzIpOgorICAgICAgICAgICAgcGFzcworCisKKyAgICAgICAgZGVmIHRl
c3RfY2hlY2tfZml4dHVyZV9pbnN0YW50aWF0aW9ucygpOgorICAgICAgICAgICAgYXNzZXJ0IGlu
c3RhbnRpYXRlZCA9PSBbCisgICAgICAgICAgICAgICAgKCdmaXh0dXJlXzEnLCAnQScpLAorICAg
ICAgICAgICAgICAgICgnZml4dHVyZV8yJywgJ2ExJyksCisgICAgICAgICAgICAgICAgKCdmaXh0
dXJlXzInLCAnYTInKSwKKyAgICAgICAgICAgICAgICAoJ2ZpeHR1cmVfMScsICdCJyksCisgICAg
ICAgICAgICAgICAgKCdmaXh0dXJlXzInLCAnYjEnKSwKKyAgICAgICAgICAgICAgICAoJ2ZpeHR1
cmVfMicsICdiMicpLAorICAgICAgICAgICAgICAgICgnZml4dHVyZV8xJywgJ0MnKSwKKyAgICAg
ICAgICAgICAgICAoJ2ZpeHR1cmVfMicsICdjMScpLAorICAgICAgICAgICAgICAgICgnZml4dHVy
ZV8yJywgJ2MyJyksCisgICAgICAgICAgICBdCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD03
KQorCisKK2RlZiB0ZXN0X2ZpeHR1cmVfcGFyYW1ldHJpemF0aW9uX25wYXJyYXkodGVzdGRpcik6
CisgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgibnVtcHkiKQorCisgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZnJvbSBudW1weSBpbXBvcnQgbGluc3BhY2UKKyAg
ICAgICAgZnJvbSBweXRlc3QgaW1wb3J0IGZpeHR1cmUKKworICAgICAgICBAZml4dHVyZShwYXJh
bXM9bGluc3BhY2UoMSwgMTAsIDEwKSkKKyAgICAgICAgZGVmIHZhbHVlKHJlcXVlc3QpOgorICAg
ICAgICAgICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KKworICAgICAgICBkZWYgdGVzdF9idWcodmFs
dWUpOgorICAgICAgICAgICAgYXNzZXJ0IHZhbHVlID09IHZhbHVlCisgICAgIiIiCisgICAgKQor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNv
bWVzKHBhc3NlZD0xMCkKKworCitkZWYgdGVzdF9maXh0dXJlX2FyZ19vcmRlcmluZyh0ZXN0ZGly
KToKKyAgICAiIiIKKyAgICBUaGlzIHRlc3QgZGVzY3JpYmVzIGhvdyBmaXh0dXJlcyBpbiB0aGUg
c2FtZSBzY29wZSBidXQgd2l0aG91dCBleHBsaWNpdCBkZXBlbmRlbmNpZXMKKyAgICBiZXR3ZWVu
IHRoZW0gYXJlIGNyZWF0ZWQuIFdoaWxlIHVzZXJzIHNob3VsZCBtYWtlIGRlcGVuZGVuY2llcyBl
eHBsaWNpdCwgb2Z0ZW4KKyAgICB0aGV5IHJlbHkgb24gdGhpcyBvcmRlciwgc28gdGhpcyB0ZXN0
IGV4aXN0cyB0byBjYXRjaCByZWdyZXNzaW9ucyBpbiB0aGlzIHJlZ2FyZC4KKyAgICBTZWUgIzY1
NDAgYW5kICM2NDkyLgorICAgICIiIgorICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIHN1ZmZpeGVzID0gW10K
KworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZpeF8xKCk6IHN1ZmZpeGVz
LmFwcGVuZCgiZml4XzEiKQorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZp
eF8yKCk6IHN1ZmZpeGVzLmFwcGVuZCgiZml4XzIiKQorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK
KyAgICAgICAgZGVmIGZpeF8zKCk6IHN1ZmZpeGVzLmFwcGVuZCgiZml4XzMiKQorICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZpeF80KCk6IHN1ZmZpeGVzLmFwcGVuZCgiZml4
XzQiKQorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZpeF81KCk6IHN1ZmZp
eGVzLmFwcGVuZCgiZml4XzUiKQorCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICBk
ZWYgZml4X2NvbWJpbmVkKGZpeF8xLCBmaXhfMiwgZml4XzMsIGZpeF80LCBmaXhfNSk6IHBhc3MK
KworICAgICAgICBkZWYgdGVzdF9zdWZmaXgoZml4X2NvbWJpbmVkKToKKyAgICAgICAgICAgIGFz
c2VydCBzdWZmaXhlcyA9PSBbImZpeF8xIiwgImZpeF8yIiwgImZpeF8zIiwgImZpeF80IiwgImZp
eF81Il0KKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItdnYiLCBzdHIocDEpKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitkZWYgdGVz
dF95aWVsZF9maXh0dXJlX3dpdGhfbm9fdmFsdWUodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBAcHl0
ZXN0LmZpeHR1cmUobmFtZT0nY3VzdG9tJykKKyAgICAgICAgZGVmIGVtcHR5X3lpZWxkKCk6Cisg
ICAgICAgICAgICBpZiBGYWxzZToKKyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGRl
ZiB0ZXN0X2ZpeHQoY3VzdG9tKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAg
KQorICAgIGV4cGVjdGVkID0gIkUgICAgICAgICAgICAgICBWYWx1ZUVycm9yOiBjdXN0b20gZGlk
IG5vdCB5aWVsZCBhIHZhbHVlIgorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAg
ICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKGVycm9ycz0xKQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbZXhwZWN0ZWRdKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2Rl
LlRFU1RTX0ZBSUxFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vaW50
ZWdyYXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9pbnRlZ3JhdGlvbi5weQpp
bmRleCBmMzQ4ZmRjMjlmZDIuLjg1NDU5M2E2NWMwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9weXRob24vaW50ZWdyYXRpb24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9w
eXRob24vaW50ZWdyYXRpb24ucHkKQEAgLTEsMTcgKzEsMjAgQEAKK2Zyb20gdHlwaW5nIGltcG9y
dCBBbnkKKwogaW1wb3J0IHB5dGVzdAotZnJvbSBfcHl0ZXN0IGltcG9ydCBweXRob24KIGZyb20g
X3B5dGVzdCBpbXBvcnQgcnVubmVyCitmcm9tIF9weXRlc3QuX2NvZGUgaW1wb3J0IGdldGZzbGlu
ZW5vCiAKIAotY2xhc3MgVGVzdE9FSlNLSVRTcGVjaWFscyhvYmplY3QpOgotCi0gICAgZGVmIHRl
c3RfZnVuY2FyZ19ub25fcHljb2xsZWN0b2JqKHNlbGYsIHRlc3RkaXIpOiAgIyByb3VnaCBqc3Rl
c3RzIHVzYWdlCitjbGFzcyBUZXN0T0VKU0tJVFNwZWNpYWxzOgorICAgIGRlZiB0ZXN0X2Z1bmNh
cmdfbm9uX3B5Y29sbGVjdG9iaigKKyAgICAgICAgc2VsZiwgdGVzdGRpciwgcmVjd2FybgorICAg
ICkgLT4gTm9uZTogICMgcm91Z2gganN0ZXN0cyB1c2FnZQogICAgICAgICB0ZXN0ZGlyLm1ha2Vj
b25mdGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAg
ICAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yLCBuYW1lLCBv
YmopOgogICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gIk15Q2xhc3MiOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTXlDb2xsZWN0b3IobmFtZSwgcGFyZW50PWNvbGxlY3RvcikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE15Q29sbGVjdG9yLmZyb21fcGFyZW50KGNvbGxlY3Rvciwg
bmFtZT1uYW1lKQogICAgICAgICAgICAgY2xhc3MgTXlDb2xsZWN0b3IocHl0ZXN0LkNvbGxlY3Rv
cik6CiAgICAgICAgICAgICAgICAgZGVmIHJlcG9ydGluZm8oc2VsZik6CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLmZzcGF0aCwgMywgInh5eiIKQEAgLTI5LDE5ICszMiwyMCBAQCBj
bGFzcyBUZXN0T0VKU0tJVFNwZWNpYWxzKG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgIyB0
aGlzIGhvb2sgZmluZHMgZnVuY2FyZyBmYWN0b3JpZXMKICAgICAgICAgcmVwID0gcnVubmVyLmNv
bGxlY3Rfb25lX25vZGUoY29sbGVjdG9yPW1vZGNvbCkKLSAgICAgICAgY2xzY29sID0gcmVwLnJl
c3VsdFswXQorICAgICAgICAjIFRPRE86IERvbid0IHRyZWF0IGFzIEFueS4KKyAgICAgICAgY2xz
Y29sID0gcmVwLnJlc3VsdFswXSAgIyB0eXBlOiBBbnkKICAgICAgICAgY2xzY29sLm9iaiA9IGxh
bWJkYSBhcmcxOiBOb25lCiAgICAgICAgIGNsc2NvbC5mdW5jYXJncyA9IHt9CiAgICAgICAgIHB5
dGVzdC5fZmlsbGZ1bmNhcmdzKGNsc2NvbCkKICAgICAgICAgYXNzZXJ0IGNsc2NvbC5mdW5jYXJn
c1siYXJnMSJdID09IDQyCiAKLSAgICBkZWYgdGVzdF9hdXRvdXNlX2ZpeHR1cmUoc2VsZiwgdGVz
dGRpcik6ICAjIHJvdWdoIGpzdGVzdHMgdXNhZ2UKKyAgICBkZWYgdGVzdF9hdXRvdXNlX2ZpeHR1
cmUoc2VsZiwgdGVzdGRpciwgcmVjd2FybikgLT4gTm9uZTogICMgcm91Z2gganN0ZXN0cyB1c2Fn
ZQogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgZGVmIHB5dGVzdF9weWNvbGxlY3RfbWFr
ZWl0ZW0oY29sbGVjdG9yLCBuYW1lLCBvYmopOgogICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0g
Ik15Q2xhc3MiOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlDb2xsZWN0b3IobmFtZSwg
cGFyZW50PWNvbGxlY3RvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15Q29sbGVjdG9y
LmZyb21fcGFyZW50KGNvbGxlY3RvciwgbmFtZT1uYW1lKQogICAgICAgICAgICAgY2xhc3MgTXlD
b2xsZWN0b3IocHl0ZXN0LkNvbGxlY3Rvcik6CiAgICAgICAgICAgICAgICAgZGVmIHJlcG9ydGlu
Zm8oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZzcGF0aCwgMywgInh5
eiIKQEAgLTYyLDQzICs2Niw0MSBAQCBjbGFzcyBUZXN0T0VKU0tJVFNwZWNpYWxzKG9iamVjdCk6
CiAgICAgICAgICkKICAgICAgICAgIyB0aGlzIGhvb2sgZmluZHMgZnVuY2FyZyBmYWN0b3JpZXMK
ICAgICAgICAgcmVwID0gcnVubmVyLmNvbGxlY3Rfb25lX25vZGUobW9kY29sKQotICAgICAgICBj
bHNjb2wgPSByZXAucmVzdWx0WzBdCisgICAgICAgICMgVE9ETzogRG9uJ3QgdHJlYXQgYXMgQW55
LgorICAgICAgICBjbHNjb2wgPSByZXAucmVzdWx0WzBdICAjIHR5cGU6IEFueQogICAgICAgICBj
bHNjb2wub2JqID0gbGFtYmRhOiBOb25lCiAgICAgICAgIGNsc2NvbC5mdW5jYXJncyA9IHt9CiAg
ICAgICAgIHB5dGVzdC5fZmlsbGZ1bmNhcmdzKGNsc2NvbCkKICAgICAgICAgYXNzZXJ0IG5vdCBj
bHNjb2wuZnVuY2FyZ3MKIAogCi1kZWYgdGVzdF93cmFwcGVkX2dldGZzbGluZW5vKCk6Ci0KK2Rl
ZiB0ZXN0X3dyYXBwZWRfZ2V0ZnNsaW5lbm8oKSAtPiBOb25lOgogICAgIGRlZiBmdW5jKCk6CiAg
ICAgICAgIHBhc3MKIAogICAgIGRlZiB3cmFwKGYpOgotICAgICAgICBmdW5jLl9fd3JhcHBlZF9f
ID0gZgotICAgICAgICBmdW5jLnBhdGNoaW5ncyA9IFsicXdlIl0KKyAgICAgICAgZnVuYy5fX3dy
YXBwZWRfXyA9IGYgICMgdHlwZTogaWdub3JlCisgICAgICAgIGZ1bmMucGF0Y2hpbmdzID0gWyJx
d2UiXSAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgcmV0dXJuIGZ1bmMKIAogICAgIEB3cmFwCiAg
ICAgZGVmIHdyYXBwZWRfZnVuYyh4LCB5LCB6KToKICAgICAgICAgcGFzcwogCi0gICAgZnMsIGxp
bmVubyA9IHB5dGhvbi5nZXRmc2xpbmVubyh3cmFwcGVkX2Z1bmMpCi0gICAgZnMyLCBsaW5lbm8y
ID0gcHl0aG9uLmdldGZzbGluZW5vKHdyYXApCisgICAgZnMsIGxpbmVubyA9IGdldGZzbGluZW5v
KHdyYXBwZWRfZnVuYykKKyAgICBmczIsIGxpbmVubzIgPSBnZXRmc2xpbmVubyh3cmFwKQogICAg
IGFzc2VydCBsaW5lbm8gPiBsaW5lbm8yLCAiZ2V0ZnNsaW5lbm8gZG9lcyBub3QgdW53cmFwIGNv
cnJlY3RseSIKIAogCi1jbGFzcyBUZXN0TW9ja0RlY29yYXRpb24ob2JqZWN0KToKLQotICAgIGRl
ZiB0ZXN0X3dyYXBwZWRfZ2V0ZnVuY2FyZ25hbWVzKHNlbGYpOgorY2xhc3MgVGVzdE1vY2tEZWNv
cmF0aW9uOgorICAgIGRlZiB0ZXN0X3dyYXBwZWRfZ2V0ZnVuY2FyZ25hbWVzKHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIGZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGdldGZ1bmNhcmduYW1lcwog
CiAgICAgICAgIGRlZiB3cmFwKGYpOgotCiAgICAgICAgICAgICBkZWYgZnVuYygpOgogICAgICAg
ICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgZnVuYy5fX3dyYXBwZWRfXyA9IGYKKyAgICAg
ICAgICAgIGZ1bmMuX193cmFwcGVkX18gPSBmICAjIHR5cGU6IGlnbm9yZQogICAgICAgICAgICAg
cmV0dXJuIGZ1bmMKIAogICAgICAgICBAd3JhcApAQCAtMTA4LDIyICsxMTAsMTUgQEAgY2xhc3Mg
VGVzdE1vY2tEZWNvcmF0aW9uKG9iamVjdCk6CiAgICAgICAgIHZhbHVlcyA9IGdldGZ1bmNhcmdu
YW1lcyhmKQogICAgICAgICBhc3NlcnQgdmFsdWVzID09ICgieCIsKQogCi0gICAgQHB5dGVzdC5t
YXJrLnhmYWlsKAotICAgICAgICBzdHJpY3Q9RmFsc2UsIHJlYXNvbj0iZ2V0ZnVuY2FyZ25hbWVz
IGJyZWFrcyBpZiBtb2NrIGlzIGltcG9ydGVkIgotICAgICkKLSAgICBkZWYgdGVzdF93cmFwcGVk
X2dldGZ1bmNhcmduYW1lc19wYXRjaGluZyhzZWxmKToKKyAgICBkZWYgdGVzdF9nZXRmdW5jYXJn
bmFtZXNfcGF0Y2hpbmcoc2VsZik6CiAgICAgICAgIGZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IGdldGZ1bmNhcmduYW1lcworICAgICAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNo
CiAKLSAgICAgICAgZGVmIHdyYXAoZik6Ci0KLSAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAg
ICAgIGNsYXNzIFQ6CisgICAgICAgICAgICBkZWYgb3JpZ2luYWwoc2VsZiwgeCwgeSwgeik6CiAg
ICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgICAgICBmdW5jLl9fd3JhcHBlZF9fID0gZgot
ICAgICAgICAgICAgZnVuYy5wYXRjaGluZ3MgPSBbInF3ZSJdCi0gICAgICAgICAgICByZXR1cm4g
ZnVuYwotCi0gICAgICAgIEB3cmFwCisgICAgICAgIEBwYXRjaC5vYmplY3QoVCwgIm9yaWdpbmFs
IikKICAgICAgICAgZGVmIGYoeCwgeSwgeik6CiAgICAgICAgICAgICBwYXNzCiAKQEAgLTEzMSw3
ICsxMjYsNiBAQCBjbGFzcyBUZXN0TW9ja0RlY29yYXRpb24ob2JqZWN0KToKICAgICAgICAgYXNz
ZXJ0IHZhbHVlcyA9PSAoInkiLCAieiIpCiAKICAgICBkZWYgdGVzdF91bml0dGVzdF9tb2NrKHNl
bGYsIHRlc3RkaXIpOgotICAgICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJ1bml0dGVzdC5tb2Nr
IikKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBpbXBvcnQgdW5pdHRlc3QubW9jawpAQCAtMTQ3LDcgKzE0MSw2IEBAIGNsYXNzIFRlc3RN
b2NrRGVjb3JhdGlvbihvYmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MSkKIAogICAgIGRlZiB0ZXN0X3VuaXR0ZXN0X21vY2tfYW5kX2ZpeHR1cmUoc2VsZiwgdGVz
dGRpcik6Ci0gICAgICAgIHB5dGVzdC5pbXBvcnRvcnNraXAoInVuaXR0ZXN0Lm1vY2siKQogICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBvcy5wYXRoCkBAIC0xNjksNyArMTYyLDYgQEAgY2xhc3MgVGVzdE1vY2tEZWNvcmF0aW9u
KG9iamVjdCk6CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAgICAg
ZGVmIHRlc3RfdW5pdHRlc3RfbW9ja19hbmRfcHlwaV9tb2NrKHNlbGYsIHRlc3RkaXIpOgotICAg
ICAgICBweXRlc3QuaW1wb3J0b3Jza2lwKCJ1bml0dGVzdC5tb2NrIikKICAgICAgICAgcHl0ZXN0
LmltcG9ydG9yc2tpcCgibW9jayIsICIxLjAuMSIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgpAQCAtMTkyLDYgKzE4NCwzNCBAQCBjbGFzcyBUZXN0TW9ja0Rl
Y29yYXRpb24ob2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkK
ICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIpCiAKKyAgICBkZWYgdGVzdF9t
b2NrX3NlbnRpbmVsX2NoZWNrX2FnYWluc3RfbnVtcHlfbGlrZShzZWxmLCB0ZXN0ZGlyKToKKyAg
ICAgICAgIiIiRW5zdXJlIG91ciBmdW5jdGlvbiB0aGF0IGRldGVjdHMgbW9jayBhcmd1bWVudHMg
Y29tcGFyZXMgYWdhaW5zdCBzZW50aW5lbHMgdXNpbmcKKyAgICAgICAgaWRlbnRpdHkgdG8gY2ly
Y3VtdmVudCBvYmplY3RzIHdoaWNoIGNhbid0IGJlIGNvbXBhcmVkIHdpdGggZXF1YWxpdHkgYWdh
aW5zdCBvdGhlcnMKKyAgICAgICAgaW4gYSB0cnV0aCBjb250ZXh0LCBsaWtlIHdpdGggbnVtcHkg
YXJyYXlzICgjNTYwNikuCisgICAgICAgICIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICBkdW1teT0iIiIKKyAgICAgICAgICAgIGNsYXNzIE51bXB5TGlrZToKKyAg
ICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibGlrZSBudW1w
eSwgY2Fubm90IGNvbXBhcmUgYWdhaW5zdCBvdGhlcnMgZm9yIHRydXRoIikKKyAgICAgICAgICAg
IEZPTyA9IE51bXB5TGlrZSgxMCkKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBmcm9tIHVuaXR0
ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisgICAgICAgICAgICBpbXBvcnQgZHVtbXkKKyAgICAgICAg
ICAgIGNsYXNzIFRlc3Qob2JqZWN0KToKKyAgICAgICAgICAgICAgICBAcGF0Y2goImR1bW15LkZP
TyIsIG5ldz1kdW1teS5OdW1weUxpa2UoNTApKQorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2hl
bGxvKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZHVtbXkuRk9PLnZhbHVlID09
IDUwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bigpCisgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQorCiAgICAg
ZGVmIHRlc3RfbW9jayhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcHl0ZXN0LmltcG9ydG9yc2tp
cCgibW9jayIsICIxLjAuMSIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTI2OCw4
ICsyODgsNyBAQCBjbGFzcyBUZXN0TW9ja0RlY29yYXRpb24ob2JqZWN0KToKICAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKIAotY2xhc3MgVGVzdFJlUnVuVGVzdHMob2Jq
ZWN0KToKLQorY2xhc3MgVGVzdFJlUnVuVGVzdHM6CiAgICAgZGVmIHRlc3RfcmVydW4oc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIi
CkBAIC0yODksNyArMzA4LDcgQEAgY2xhc3MgVGVzdFJlUnVuVGVzdHMob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBnbG9iYWwgY291bnQsIHJlcQogICAgICAgICAgICAgICAgIGFzc2VydCByZXF1
ZXN0ICE9IHJlcQogICAgICAgICAgICAgICAgIHJlcSA9IHJlcXVlc3QKLSAgICAgICAgICAgICAg
ICBwcmludCAoImZpeCBjb3VudCAlcyIgJSBjb3VudCkKKyAgICAgICAgICAgICAgICBwcmludCgi
Zml4IGNvdW50ICVzIiAlIGNvdW50KQogICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKICAgICAg
ICAgICAgIGRlZiB0ZXN0X2ZpeChmaXgpOgogICAgICAgICAgICAgICAgIHBhc3MKQEAgLTMwOSwx
NCArMzI4LDE0IEBAIGNsYXNzIFRlc3RSZVJ1blRlc3RzKG9iamVjdCk6CiAgICAgICAgICkKIAog
Ci1kZWYgdGVzdF9weXRlc3Rjb25maWdfaXNfc2Vzc2lvbl9zY29wZWQoKToKK2RlZiB0ZXN0X3B5
dGVzdGNvbmZpZ19pc19zZXNzaW9uX3Njb3BlZCgpIC0+IE5vbmU6CiAgICAgZnJvbSBfcHl0ZXN0
LmZpeHR1cmVzIGltcG9ydCBweXRlc3Rjb25maWcKIAotICAgIGFzc2VydCBweXRlc3Rjb25maWcu
X3B5dGVzdGZpeHR1cmVmdW5jdGlvbi5zY29wZSA9PSAic2Vzc2lvbiIKLQorICAgIG1hcmtlciA9
IHB5dGVzdGNvbmZpZy5fcHl0ZXN0Zml4dHVyZWZ1bmN0aW9uICAjIHR5cGU6IGlnbm9yZQorICAg
IGFzc2VydCBtYXJrZXIuc2NvcGUgPT0gInNlc3Npb24iCiAKLWNsYXNzIFRlc3ROb3NlbGlrZVRl
c3RBdHRyaWJ1dGUob2JqZWN0KToKIAorY2xhc3MgVGVzdE5vc2VsaWtlVGVzdEF0dHJpYnV0ZToK
ICAgICBkZWYgdGVzdF9tb2R1bGVfd2l0aF9nbG9iYWxfdGVzdChzZWxmLCB0ZXN0ZGlyKToKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC00MDAsOCArNDE5
LDggQEAgY2xhc3MgVGVzdE5vc2VsaWtlVGVzdEF0dHJpYnV0ZShvYmplY3QpOgogICAgICAgICBh
c3NlcnQgbm90IGNhbGwuaXRlbXMKIAogCi1AcHl0ZXN0Lm1hcmsuaXNzdWUzNTEKLWNsYXNzIFRl
c3RQYXJhbWV0ZXJpemUob2JqZWN0KToKK2NsYXNzIFRlc3RQYXJhbWV0ZXJpemU6CisgICAgIiIi
IzM1MSIiIgogCiAgICAgZGVmIHRlc3RfaWRmbl9tYXJrZXIoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
cHl0aG9uL21ldGFmdW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vbWV0YWZ1bmMu
cHkKaW5kZXggZTE4MWQzMTMxZjU3Li42YjU5MTA0NTY3YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvcHl0aG9uL21ldGFmdW5jLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
cHl0aG9uL21ldGFmdW5jLnB5CkBAIC0xLDQxICsxLDU1IEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgYXR0
cgotaW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQotaW1wb3J0IHB5dGVzdAotZnJvbSBf
cHl0ZXN0IGltcG9ydCBweXRob24sIGZpeHR1cmVzCitpbXBvcnQgdGV4dHdyYXAKK2Zyb20gdHlw
aW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0Citmcm9tIHR5cGluZyBpbXBv
cnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQg
TGlzdAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgU2Vx
dWVuY2UKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9u
CiAKK2ltcG9ydCBhdHRyCiBpbXBvcnQgaHlwb3RoZXNpcwogZnJvbSBoeXBvdGhlc2lzIGltcG9y
dCBzdHJhdGVnaWVzCiAKLVBZMyA9IHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApCi0KLQotY2xh
c3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6Ci0KLSAgICBkZWYgTWV0YWZ1bmMoc2VsZiwgZnVuYywg
Y29uZmlnPU5vbmUpOgotICAgICAgICAjIHRoZSB1bml0IHRlc3RzIG9mIHRoaXMgY2xhc3MgY2hl
Y2sgaWYgdGhpbmdzIHdvcmsgY29ycmVjdGx5CitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3Qg
aW1wb3J0IGZpeHR1cmVzCitmcm9tIF9weXRlc3QgaW1wb3J0IHB5dGhvbgorZnJvbSBfcHl0ZXN0
LmNvbXBhdCBpbXBvcnQgX2Zvcm1hdF9hcmdzCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBn
ZXRmdW5jYXJnbmFtZXMKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IE5PVFNFVAorZnJvbSBf
cHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBmYWlsCitmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0
IFRlc3RkaXIKK2Zyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IF9pZHZhbAorZnJvbSBfcHl0ZXN0
LnB5dGhvbiBpbXBvcnQgaWRtYWtlcgorCisKK2NsYXNzIFRlc3RNZXRhZnVuYzoKKyAgICBkZWYg
TWV0YWZ1bmMoc2VsZiwgZnVuYywgY29uZmlnPU5vbmUpIC0+IHB5dGhvbi5NZXRhZnVuYzoKKyAg
ICAgICAgIyBUaGUgdW5pdCB0ZXN0cyBvZiB0aGlzIGNsYXNzIGNoZWNrIGlmIHRoaW5ncyB3b3Jr
IGNvcnJlY3RseQogICAgICAgICAjIG9uIHRoZSBmdW5jYXJnIGxldmVsLCBzbyB3ZSBkb24ndCBu
ZWVkIGEgZnVsbCBibG93bgotICAgICAgICAjIGluaXRpbGlhemF0aW9uCi0gICAgICAgIGNsYXNz
IEZpeHR1cmVJbmZvKG9iamVjdCk6CisgICAgICAgICMgaW5pdGlhbGl6YXRpb24uCisgICAgICAg
IGNsYXNzIEZ1bmNGaXh0dXJlSW5mb01vY2s6CiAgICAgICAgICAgICBuYW1lMmZpeHR1cmVkZWZz
ID0gTm9uZQogCiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXMpOgogICAgICAg
ICAgICAgICAgIHNlbGYubmFtZXNfY2xvc3VyZSA9IG5hbWVzCiAKICAgICAgICAgQGF0dHIucwot
ICAgICAgICBjbGFzcyBEZWZpbml0aW9uTW9jayhvYmplY3QpOgorICAgICAgICBjbGFzcyBEZWZp
bml0aW9uTW9jayhweXRob24uRnVuY3Rpb25EZWZpbml0aW9uKToKICAgICAgICAgICAgIG9iaiA9
IGF0dHIuaWIoKQorICAgICAgICAgICAgX25vZGVpZCA9IGF0dHIuaWIoKQogCi0gICAgICAgIG5h
bWVzID0gZml4dHVyZXMuZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMpCi0gICAgICAgIGZpeHR1cmVpbmZv
ID0gRml4dHVyZUluZm8obmFtZXMpCi0gICAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTW9j
ayhmdW5jKQorICAgICAgICBuYW1lcyA9IGdldGZ1bmNhcmduYW1lcyhmdW5jKQorICAgICAgICBm
aXh0dXJlaW5mbyA9IEZ1bmNGaXh0dXJlSW5mb01vY2sobmFtZXMpICAjIHR5cGU6IEFueQorICAg
ICAgICBkZWZpbml0aW9uID0gRGVmaW5pdGlvbk1vY2suX2NyZWF0ZShmdW5jLCAibW9jazo6bm9k
ZWlkIikgICMgdHlwZTogQW55CiAgICAgICAgIHJldHVybiBweXRob24uTWV0YWZ1bmMoZGVmaW5p
dGlvbiwgZml4dHVyZWluZm8sIGNvbmZpZykKIAotICAgIGRlZiB0ZXN0X25vX2Z1bmNhcmdzKHNl
bGYsIHRlc3RkaXIpOgotCisgICAgZGVmIHRlc3Rfbm9fZnVuY2FyZ3Moc2VsZikgLT4gTm9uZToK
ICAgICAgICAgZGVmIGZ1bmN0aW9uKCk6CiAgICAgICAgICAgICBwYXNzCiAKQEAgLTQzLDggKzU3
LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBub3QgbWV0
YWZ1bmMuZml4dHVyZW5hbWVzCiAgICAgICAgIHJlcHIobWV0YWZ1bmMuX2NhbGxzKQogCi0gICAg
ZGVmIHRlc3RfZnVuY3Rpb25fYmFzaWMoc2VsZik6Ci0KKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9i
YXNpYyhzZWxmKSAtPiBOb25lOgogICAgICAgICBkZWYgZnVuYyhhcmcxLCBhcmcyPSJxd2UiKToK
ICAgICAgICAgICAgIHBhc3MKIApAQCAtNTQsOTYgKzY3LDEyNSBAQCBjbGFzcyBUZXN0TWV0YWZ1
bmMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmZ1bmN0aW9uIGlzIGZ1bmMKICAg
ICAgICAgYXNzZXJ0IG1ldGFmdW5jLmNscyBpcyBOb25lCiAKLSAgICBkZWYgdGVzdF9hZGRjYWxs
X25vX2FyZ3Moc2VsZik6Ci0KLSAgICAgICAgZGVmIGZ1bmMoYXJnMSk6CisgICAgZGVmIHRlc3Rf
cGFyYW1ldHJpemVfZXJyb3Ioc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGZ1bmMoeCwgeSk6
CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1
bmMpCi0gICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoKQotICAgICAgICBhc3NlcnQgbGVuKG1ldGFm
dW5jLl9jYWxscykgPT0gMQotICAgICAgICBjYWxsID0gbWV0YWZ1bmMuX2NhbGxzWzBdCi0gICAg
ICAgIGFzc2VydCBjYWxsLmlkID09ICIwIgotICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoY2Fs
bCwgInBhcmFtIikKLQotICAgIGRlZiB0ZXN0X2FkZGNhbGxfaWQoc2VsZik6Ci0KLSAgICAgICAg
ZGVmIGZ1bmMoYXJnMSk6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIG1ldGFmdW5jLnBhcmFt
ZXRyaXplKCJ4IiwgWzEsIDJdKQorICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGxh
bWJkYTogbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbNSwgNl0pKQorICAgICAgICBweXRlc3Qu
cmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbNSwg
Nl0pKQorICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieSIsIFsxLCAyXSkKKyAgICAgICAg
cHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ5
IiwgWzUsIDZdKSkKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IG1l
dGFmdW5jLnBhcmFtZXRyaXplKCJ5IiwgWzUsIDZdKSkKIAotICAgICAgICBtZXRhZnVuYyA9IHNl
bGYuTWV0YWZ1bmMoZnVuYykKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAibWV0
YWZ1bmMuYWRkY2FsbChpZD1Ob25lKSIpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBl
RXJyb3IsIG1hdGNoPSJeaWRzIG11c3QgYmUgYSBjYWxsYWJsZSBvciBhbiBpdGVyYWJsZSQiKToK
KyAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ5IiwgWzUsIDZdLCBpZHM9NDIpICAj
IHR5cGU6IGlnbm9yZVthcmctdHlwZV0KIAotICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKGlkPTEp
Ci0gICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgIm1ldGFmdW5jLmFkZGNhbGwoaWQ9
MSkiKQotICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsICJtZXRhZnVuYy5hZGRjYWxs
KGlkPScxJykiKQotICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKGlkPTIpCi0gICAgICAgIGFzc2Vy
dCBsZW4obWV0YWZ1bmMuX2NhbGxzKSA9PSAyCi0gICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2Fs
bHNbMF0uaWQgPT0gIjEiCi0gICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uaWQgPT0g
IjIiCisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfZXJyb3JfaXRlcmF0b3Ioc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgZGVmIGZ1bmMoeCk6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCkKIAotICAgIGRlZiB0ZXN0X2FkZGNhbGxfcGFyYW0oc2VsZik6CisgICAgICAgIGNs
YXNzIEV4YyhFeGNlcHRpb24pOgorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAg
ICAgICAgICAgICAgIHJldHVybiAiRXhjKGZyb21fZ2VuKSIKIAotICAgICAgICBkZWYgZnVuYyhh
cmcxKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZGVmIGdlbigpIC0+IEl0ZXJhdG9yW1Vu
aW9uW2ludCwgTm9uZSwgRXhjXV06CisgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICB5
aWVsZCBOb25lCisgICAgICAgICAgICB5aWVsZCBFeGMoKQogCiAgICAgICAgIG1ldGFmdW5jID0g
c2VsZi5NZXRhZnVuYyhmdW5jKQorICAgICAgICAjIFdoZW4gdGhlIGlucHV0IGlzIGFuIGl0ZXJh
dG9yLCBvbmx5IGxlbihhcmdzKSBhcmUgdGFrZW4sCisgICAgICAgICMgc28gdGhlIGJhZCBFeGMg
aXNuJ3QgcmVhY2hlZC4KKyAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0s
IGlkcz1nZW4oKSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgICAgICBhc3NlcnQgWyh4
LmZ1bmNhcmdzLCB4LmlkKSBmb3IgeCBpbiBtZXRhZnVuYy5fY2FsbHNdID09IFsKKyAgICAgICAg
ICAgICh7IngiOiAxfSwgIjAiKSwKKyAgICAgICAgICAgICh7IngiOiAyfSwgIjIiKSwKKyAgICAg
ICAgXQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgICAgICBmYWlsLkV4Y2Vw
dGlvbiwKKyAgICAgICAgICAgIG1hdGNoPSgKKyAgICAgICAgICAgICAgICByIkluIGZ1bmM6IGlk
cyBtdXN0IGJlIGxpc3Qgb2Ygc3RyaW5nL2Zsb2F0L2ludC9ib29sLCBmb3VuZDoiCisgICAgICAg
ICAgICAgICAgciIgRXhjXChmcm9tX2dlblwpIFwodHlwZTogPGNsYXNzIC4qRXhjJz5cKSBhdCBp
bmRleCAyIgorICAgICAgICAgICAgKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIG1ldGFmdW5j
LnBhcmFtZXRyaXplKCJ4IiwgWzEsIDIsIDNdLCBpZHM9Z2VuKCkpICAjIHR5cGU6IGlnbm9yZVth
cmctdHlwZV0KIAotICAgICAgICBjbGFzcyBvYmoob2JqZWN0KToKLSAgICAgICAgICAgIHBhc3MK
LQotICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHBhcmFtPW9iaikKLSAgICAgICAgbWV0YWZ1bmMu
YWRkY2FsbChwYXJhbT1vYmopCi0gICAgICAgIG1ldGFmdW5jLmFkZGNhbGwocGFyYW09MSkKLSAg
ICAgICAgYXNzZXJ0IGxlbihtZXRhZnVuYy5fY2FsbHMpID09IDMKLSAgICAgICAgYXNzZXJ0IG1l
dGFmdW5jLl9jYWxsc1swXS5nZXRwYXJhbSgiYXJnMSIpID09IG9iagotICAgICAgICBhc3NlcnQg
bWV0YWZ1bmMuX2NhbGxzWzFdLmdldHBhcmFtKCJhcmcxIikgPT0gb2JqCi0gICAgICAgIGFzc2Vy
dCBtZXRhZnVuYy5fY2FsbHNbMl0uZ2V0cGFyYW0oImFyZzEiKSA9PSAxCi0KLSAgICBkZWYgdGVz
dF9hZGRjYWxsX2Z1bmNhcmdzKHNlbGYpOgotCisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYmFk
X3Njb3BlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGRlZiBmdW5jKHgpOgogICAgICAgICAgICAg
cGFzcwogCiAgICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQorICAgICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgICAgICBmYWlsLkV4Y2VwdGlvbiwKKyAgICAgICAg
ICAgIG1hdGNoPXIicGFyYW1ldHJpemVcKFwpIGNhbGwgaW4gZnVuYyBnb3QgYW4gdW5leHBlY3Rl
ZCBzY29wZSB2YWx1ZSAnZG9nZ3knIiwKKyAgICAgICAgKToKKyAgICAgICAgICAgIG1ldGFmdW5j
LnBhcmFtZXRyaXplKCJ4IiwgWzFdLCBzY29wZT0iZG9nZ3kiKSAgIyB0eXBlOiBpZ25vcmVbYXJn
LXR5cGVdCiAKLSAgICAgICAgY2xhc3Mgb2JqKG9iamVjdCk6Ci0gICAgICAgICAgICBwYXNzCisg
ICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfcmVxdWVzdF9uYW1lKHNlbGYsIHRlc3RkaXI6IFRlc3Rk
aXIpIC0+IE5vbmU6CisgICAgICAgICIiIlNob3cgcHJvcGVyIGVycm9yICB3aGVuICdyZXF1ZXN0
JyBpcyB1c2VkIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gcGFyYW1ldHJpemUgKCM2MTgzKSIiIgog
Ci0gICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoZnVuY2FyZ3M9eyJ4IjogMn0pCi0gICAgICAgIG1l
dGFmdW5jLmFkZGNhbGwoZnVuY2FyZ3M9eyJ4IjogM30pCi0gICAgICAgIHB5dGVzdC5yYWlzZXMo
cHl0ZXN0LmZhaWwuRXhjZXB0aW9uLCAibWV0YWZ1bmMuYWRkY2FsbCh7J3h5eic6IDB9KSIpCi0g
ICAgICAgIGFzc2VydCBsZW4obWV0YWZ1bmMuX2NhbGxzKSA9PSAyCi0gICAgICAgIGFzc2VydCBt
ZXRhZnVuYy5fY2FsbHNbMF0uZnVuY2FyZ3MgPT0geyJ4IjogMn0KLSAgICAgICAgYXNzZXJ0IG1l
dGFmdW5jLl9jYWxsc1sxXS5mdW5jYXJncyA9PSB7IngiOiAzfQotICAgICAgICBhc3NlcnQgbm90
IGhhc2F0dHIobWV0YWZ1bmMuX2NhbGxzWzFdLCAicGFyYW0iKQorICAgICAgICBkZWYgZnVuYyhy
ZXF1ZXN0KToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCi0gICAg
ZGVmIHRlc3RfcGFyYW1ldHJpemVfZXJyb3Ioc2VsZik6CisgICAgICAgIG1ldGFmdW5jID0gc2Vs
Zi5NZXRhZnVuYyhmdW5jKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgICAg
ICBmYWlsLkV4Y2VwdGlvbiwKKyAgICAgICAgICAgIG1hdGNoPXIiJ3JlcXVlc3QnIGlzIGEgcmVz
ZXJ2ZWQgbmFtZSBhbmQgY2Fubm90IGJlIHVzZWQgaW4gQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
IiwKKyAgICAgICAgKToKKyAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJyZXF1ZXN0
IiwgWzFdKQogCi0gICAgICAgIGRlZiBmdW5jKHgsIHkpOgotICAgICAgICAgICAgcGFzcworICAg
IGRlZiB0ZXN0X2ZpbmRfcGFyYW1ldHJpemVkX3Njb3BlKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
ICIiIlVuaXQgdGVzdCBmb3IgX2ZpbmRfcGFyYW1ldHJpemVkX3Njb3BlICgjMzk0MSkuIiIiCisg
ICAgICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IF9maW5kX3BhcmFtZXRyaXplZF9zY29w
ZQogCi0gICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQotICAgICAgICBtZXRh
ZnVuYy5wYXJhbWV0cml6ZSgieCIsIFsxLCAyXSkKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1
ZUVycm9yLCBsYW1iZGE6IG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgWzUsIDZdKSkKLSAgICAg
ICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IG1ldGFmdW5jLnBhcmFtZXRyaXpl
KCJ4IiwgWzUsIDZdKSkKLSAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoInkiLCBbMSwgMl0p
Ci0gICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBtZXRhZnVuYy5wYXJh
bWV0cml6ZSgieSIsIFs1LCA2XSkpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwg
bGFtYmRhOiBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieSIsIFs1LCA2XSkpCisgICAgICAgIEBhdHRy
LnMKKyAgICAgICAgY2xhc3MgRHVtbXlGaXh0dXJlRGVmOgorICAgICAgICAgICAgc2NvcGUgPSBh
dHRyLmliKCkKKworICAgICAgICBmaXh0dXJlc19kZWZzID0gY2FzdCgKKyAgICAgICAgICAgIERp
Y3Rbc3RyLCBTZXF1ZW5jZVtmaXh0dXJlcy5GaXh0dXJlRGVmW29iamVjdF1dXSwKKyAgICAgICAg
ICAgIGRpY3QoCisgICAgICAgICAgICAgICAgc2Vzc2lvbl9maXg9W0R1bW15Rml4dHVyZURlZigi
c2Vzc2lvbiIpXSwKKyAgICAgICAgICAgICAgICBwYWNrYWdlX2ZpeD1bRHVtbXlGaXh0dXJlRGVm
KCJwYWNrYWdlIildLAorICAgICAgICAgICAgICAgIG1vZHVsZV9maXg9W0R1bW15Rml4dHVyZURl
ZigibW9kdWxlIildLAorICAgICAgICAgICAgICAgIGNsYXNzX2ZpeD1bRHVtbXlGaXh0dXJlRGVm
KCJjbGFzcyIpXSwKKyAgICAgICAgICAgICAgICBmdW5jX2ZpeD1bRHVtbXlGaXh0dXJlRGVmKCJm
dW5jdGlvbiIpXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X3Bh
cmFtZXRyaXplX2JhZF9zY29wZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIyB1c2UgYXJndW1l
bnRzIHRvIGRldGVybWluZSBuYXJyb3cgc2NvcGU7IHRoZSBjYXVzZSBvZiB0aGUgYnVnIGlzIHRo
YXQgaXQgd291bGQgbG9vayBvbiBhbGwKKyAgICAgICAgIyBmaXh0dXJlIGRlZnMgZ2l2ZW4gdG8g
dGhlIG1ldGhvZAorICAgICAgICBkZWYgZmluZF9zY29wZShhcmduYW1lcywgaW5kaXJlY3QpOgor
ICAgICAgICAgICAgcmV0dXJuIF9maW5kX3BhcmFtZXRyaXplZF9zY29wZShhcmduYW1lcywgZml4
dHVyZXNfZGVmcywgaW5kaXJlY3Q9aW5kaXJlY3QpCiAKLSAgICAgICAgZGVmIGZ1bmMoeCk6Ci0g
ICAgICAgICAgICBwYXNzCisgICAgICAgIGFzc2VydCBmaW5kX3Njb3BlKFsiZnVuY19maXgiXSwg
aW5kaXJlY3Q9VHJ1ZSkgPT0gImZ1bmN0aW9uIgorICAgICAgICBhc3NlcnQgZmluZF9zY29wZShb
ImNsYXNzX2ZpeCJdLCBpbmRpcmVjdD1UcnVlKSA9PSAiY2xhc3MiCisgICAgICAgIGFzc2VydCBm
aW5kX3Njb3BlKFsibW9kdWxlX2ZpeCJdLCBpbmRpcmVjdD1UcnVlKSA9PSAibW9kdWxlIgorICAg
ICAgICBhc3NlcnQgZmluZF9zY29wZShbInBhY2thZ2VfZml4Il0sIGluZGlyZWN0PVRydWUpID09
ICJwYWNrYWdlIgorICAgICAgICBhc3NlcnQgZmluZF9zY29wZShbInNlc3Npb25fZml4Il0sIGlu
ZGlyZWN0PVRydWUpID09ICJzZXNzaW9uIgogCi0gICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRh
ZnVuYyhmdW5jKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6
ZSgieCIsIFsxXSwgc2NvcGU9ImRvZ2d5IikKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMg
dmU6Ci0gICAgICAgICAgICBhc3NlcnQgImhhcyBhbiB1bnN1cHBvcnRlZCBzY29wZSB2YWx1ZSAn
ZG9nZ3knIiBpbiBzdHIodmUpCisgICAgICAgIGFzc2VydCBmaW5kX3Njb3BlKFsiY2xhc3NfZml4
IiwgImZ1bmNfZml4Il0sIGluZGlyZWN0PVRydWUpID09ICJmdW5jdGlvbiIKKyAgICAgICAgYXNz
ZXJ0IGZpbmRfc2NvcGUoWyJmdW5jX2ZpeCIsICJzZXNzaW9uX2ZpeCJdLCBpbmRpcmVjdD1UcnVl
KSA9PSAiZnVuY3Rpb24iCisgICAgICAgIGFzc2VydCBmaW5kX3Njb3BlKFsic2Vzc2lvbl9maXgi
LCAiY2xhc3NfZml4Il0sIGluZGlyZWN0PVRydWUpID09ICJjbGFzcyIKKyAgICAgICAgYXNzZXJ0
IGZpbmRfc2NvcGUoWyJwYWNrYWdlX2ZpeCIsICJzZXNzaW9uX2ZpeCJdLCBpbmRpcmVjdD1UcnVl
KSA9PSAicGFja2FnZSIKKyAgICAgICAgYXNzZXJ0IGZpbmRfc2NvcGUoWyJtb2R1bGVfZml4Iiwg
InNlc3Npb25fZml4Il0sIGluZGlyZWN0PVRydWUpID09ICJtb2R1bGUiCiAKLSAgICBkZWYgdGVz
dF9wYXJhbWV0cml6ZV9hbmRfaWQoc2VsZik6CisgICAgICAgICMgd2hlbiBpbmRpcmVjdCBpcyBG
YWxzZSBvciBpcyBub3QgZm9yIGFsbCBzY29wZXMsIGFsd2F5cyB1c2UgZnVuY3Rpb24KKyAgICAg
ICAgYXNzZXJ0IGZpbmRfc2NvcGUoWyJzZXNzaW9uX2ZpeCIsICJtb2R1bGVfZml4Il0sIGluZGly
ZWN0PUZhbHNlKSA9PSAiZnVuY3Rpb24iCisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICBm
aW5kX3Njb3BlKFsic2Vzc2lvbl9maXgiLCAibW9kdWxlX2ZpeCJdLCBpbmRpcmVjdD1bIm1vZHVs
ZV9maXgiXSkKKyAgICAgICAgICAgID09ICJmdW5jdGlvbiIKKyAgICAgICAgKQorICAgICAgICBh
c3NlcnQgKAorICAgICAgICAgICAgZmluZF9zY29wZSgKKyAgICAgICAgICAgICAgICBbInNlc3Np
b25fZml4IiwgIm1vZHVsZV9maXgiXSwgaW5kaXJlY3Q9WyJzZXNzaW9uX2ZpeCIsICJtb2R1bGVf
Zml4Il0KKyAgICAgICAgICAgICkKKyAgICAgICAgICAgID09ICJtb2R1bGUiCisgICAgICAgICkK
IAorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2FuZF9pZChzZWxmKSAtPiBOb25lOgogICAgICAg
ICBkZWYgZnVuYyh4LCB5KToKICAgICAgICAgICAgIHBhc3MKIApAQCAtMTU0LDQzICsxOTYsNTYg
QEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIGlkcyA9IFt4LmlkIGZvciB4
IGluIG1ldGFmdW5jLl9jYWxsc10KICAgICAgICAgYXNzZXJ0IGlkcyA9PSBbImJhc2ljLWFiYyIs
ICJiYXNpYy1kZWYiLCAiYWR2YW5jZWQtYWJjIiwgImFkdmFuY2VkLWRlZiJdCiAKLSAgICBkZWYg
dGVzdF9wYXJhbWV0cml6ZV9hbmRfaWRfdW5pY29kZShzZWxmKToKKyAgICBkZWYgdGVzdF9wYXJh
bWV0cml6ZV9hbmRfaWRfdW5pY29kZShzZWxmKSAtPiBOb25lOgogICAgICAgICAiIiJBbGxvdyB1
bmljb2RlIHN0cmluZ3MgZm9yICJpZHMiIHBhcmFtZXRlciBpbiBQeXRob24gMiAoIyMxOTA1KSIi
IgogCiAgICAgICAgIGRlZiBmdW5jKHgpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIG1l
dGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQotICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6
ZSgieCIsIFsxLCAyXSwgaWRzPVt1ImJhc2ljIiwgdSJhZHZhbmNlZCJdKQorICAgICAgICBtZXRh
ZnVuYy5wYXJhbWV0cml6ZSgieCIsIFsxLCAyXSwgaWRzPVsiYmFzaWMiLCAiYWR2YW5jZWQiXSkK
ICAgICAgICAgaWRzID0gW3guaWQgZm9yIHggaW4gbWV0YWZ1bmMuX2NhbGxzXQotICAgICAgICBh
c3NlcnQgaWRzID09IFt1ImJhc2ljIiwgdSJhZHZhbmNlZCJdCi0KLSAgICBkZWYgdGVzdF9wYXJh
bWV0cml6ZV93aXRoX3dyb25nX251bWJlcl9vZl9pZHMoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IGFzc2VydCBpZHMgPT0gWyJiYXNpYyIsICJhZHZhbmNlZCJdCiAKKyAgICBkZWYgdGVzdF9wYXJh
bWV0cml6ZV93aXRoX3dyb25nX251bWJlcl9vZl9pZHMoc2VsZikgLT4gTm9uZToKICAgICAgICAg
ZGVmIGZ1bmMoeCwgeSk6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgbWV0YWZ1bmMgPSBz
ZWxmLk1ldGFmdW5jKGZ1bmMpCiAKLSAgICAgICAgcHl0ZXN0LnJhaXNlcygKLSAgICAgICAgICAg
IFZhbHVlRXJyb3IsIGxhbWJkYTogbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0sIGlk
cz1bImJhc2ljIl0pCi0gICAgICAgICkKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKGZhaWwu
RXhjZXB0aW9uKToKKyAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgWzEsIDJd
LCBpZHM9WyJiYXNpYyJdKQogCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoCi0gICAgICAgICAgICBW
YWx1ZUVycm9yLAotICAgICAgICAgICAgbGFtYmRhOiBtZXRhZnVuYy5wYXJhbWV0cml6ZSgKKyAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKGZhaWwuRXhjZXB0aW9uKToKKyAgICAgICAgICAgIG1l
dGFmdW5jLnBhcmFtZXRyaXplKAogICAgICAgICAgICAgICAgICgieCIsICJ5IiksIFsoImFiYyIs
ICJkZWYiKSwgKCJnaGkiLCAiamtsIildLCBpZHM9WyJvbmUiXQotICAgICAgICAgICAgKSwKLSAg
ICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaWRzX2l0
ZXJhdG9yX3dpdGhvdXRfbWFyayhzZWxmKSAtPiBOb25lOgorICAgICAgICBkZWYgZnVuYyh4LCB5
KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpdCA9IGl0ZXJ0b29scy5jb3VudCgpCiAK
LSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU1MTAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9lbXB0
eV9saXN0KHNlbGYpOgorICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMoZnVuYykKKyAg
ICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0sIGlkcz1pdCkKKyAgICAgICAg
bWV0YWZ1bmMucGFyYW1ldHJpemUoInkiLCBbMywgNF0sIGlkcz1pdCkKKyAgICAgICAgaWRzID0g
W3guaWQgZm9yIHggaW4gbWV0YWZ1bmMuX2NhbGxzXQorICAgICAgICBhc3NlcnQgaWRzID09IFsi
MC0yIiwgIjAtMyIsICIxLTIiLCAiMS0zIl0KKworICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0
YWZ1bmMoZnVuYykKKyAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoIngiLCBbMSwgMl0sIGlk
cz1pdCkKKyAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoInkiLCBbMywgNF0sIGlkcz1pdCkK
KyAgICAgICAgaWRzID0gW3guaWQgZm9yIHggaW4gbWV0YWZ1bmMuX2NhbGxzXQorICAgICAgICBh
c3NlcnQgaWRzID09IFsiNC02IiwgIjQtNyIsICI1LTYiLCAiNS03Il0KKworICAgIGRlZiB0ZXN0
X3BhcmFtZXRyaXplX2VtcHR5X2xpc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiIzUxMCIi
IgogCiAgICAgICAgIGRlZiBmdW5jKHkpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGNs
YXNzIE1vY2tDb25maWcob2JqZWN0KToKLQorICAgICAgICBjbGFzcyBNb2NrQ29uZmlnOgogICAg
ICAgICAgICAgZGVmIGdldGluaShzZWxmLCBuYW1lKToKICAgICAgICAgICAgICAgICByZXR1cm4g
IiIKIApAQCAtMjA1LDE0ICsyNjAsMTMgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAg
ICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ5IiwgW10pCiAgICAgICAgIGFzc2VydCAic2tp
cCIgPT0gbWV0YWZ1bmMuX2NhbGxzWzBdLm1hcmtzWzBdLm5hbWUKIAotICAgIGRlZiB0ZXN0X3Bh
cmFtZXRyaXplX3dpdGhfdXNlcm9iamVjdHMoc2VsZik6Ci0KKyAgICBkZWYgdGVzdF9wYXJhbWV0
cml6ZV93aXRoX3VzZXJvYmplY3RzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGRlZiBmdW5jKHgs
IHkpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVu
YyhmdW5jKQogCi0gICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgY2xhc3MgQToKICAg
ICAgICAgICAgIHBhc3MKIAogICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgieCIsIFtBKCks
IEEoKV0pCkBAIC0yMjYsNjMgKzI4MCw3NyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToK
ICAgICBAaHlwb3RoZXNpcy5zZXR0aW5ncygKICAgICAgICAgZGVhZGxpbmU9NDAwLjAKICAgICAp
ICAjIHZlcnkgY2xvc2UgdG8gc3RkIGRlYWRsaW5lIGFuZCBDSSBib3hlcyBhcmUgbm90IHJlbGlh
YmxlIGluIENQVSBwb3dlcgotICAgIGRlZiB0ZXN0X2lkdmFsX2h5cG90aGVzaXMoc2VsZiwgdmFs
dWUpOgotICAgICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBfaWR2YWwKLQotICAgICAg
ICBlc2NhcGVkID0gX2lkdmFsKHZhbHVlLCAiYSIsIDYsIE5vbmUpCisgICAgZGVmIHRlc3RfaWR2
YWxfaHlwb3RoZXNpcyhzZWxmLCB2YWx1ZSkgLT4gTm9uZToKKyAgICAgICAgZXNjYXBlZCA9IF9p
ZHZhbCh2YWx1ZSwgImEiLCA2LCBOb25lLCBub2RlaWQ9Tm9uZSwgY29uZmlnPU5vbmUpCiAgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGVzY2FwZWQsIHN0cikKLSAgICAgICAgaWYgUFkzOgotICAg
ICAgICAgICAgZXNjYXBlZC5lbmNvZGUoImFzY2lpIikKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGVzY2FwZWQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIGVzY2FwZWQuZW5jb2RlKCJhc2Np
aSIpCiAKLSAgICBkZWYgdGVzdF91bmljb2RlX2lkdmFsKHNlbGYpOgotICAgICAgICAiIiJUaGlz
IHRlc3RzIHRoYXQgVW5pY29kZSBzdHJpbmdzIG91dHNpZGUgdGhlIEFTQ0lJIGNoYXJhY3RlciBz
ZXQgZ2V0CisgICAgZGVmIHRlc3RfdW5pY29kZV9pZHZhbChzZWxmKSAtPiBOb25lOgorICAgICAg
ICAiIiJUZXN0IHRoYXQgVW5pY29kZSBzdHJpbmdzIG91dHNpZGUgdGhlIEFTQ0lJIGNoYXJhY3Rl
ciBzZXQgZ2V0CiAgICAgICAgIGVzY2FwZWQsIHVzaW5nIGJ5dGUgZXNjYXBlcyBpZiB0aGV5J3Jl
IGluIHRoYXQgcmFuZ2Ugb3IgdW5pY29kZQogICAgICAgICBlc2NhcGVzIGlmIHRoZXkncmUgbm90
LgogCiAgICAgICAgICIiIgotICAgICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBfaWR2
YWwKLQogICAgICAgICB2YWx1ZXMgPSBbCi0gICAgICAgICAgICAodSIiLCAiIiksCi0gICAgICAg
ICAgICAodSJhc2NpaSIsICJhc2NpaSIpLAotICAgICAgICAgICAgKHUiYcOnw6NvIiwgImFcXHhl
N1xceGUzbyIpLAotICAgICAgICAgICAgKHUiam9zw6lAYmxhaC5jb20iLCAiam9zXFx4ZTlAYmxh
aC5jb20iKSwKKyAgICAgICAgICAgICgiIiwgciIiKSwKKyAgICAgICAgICAgICgiYXNjaWkiLCBy
ImFzY2lpIiksCisgICAgICAgICAgICAoImHDp8OjbyIsIHIiYVx4ZTdceGUzbyIpLAorICAgICAg
ICAgICAgKCJqb3PDqUBibGFoLmNvbSIsIHIiam9zXHhlOUBibGFoLmNvbSIpLAogICAgICAgICAg
ICAgKAotICAgICAgICAgICAgICAgIHUizrTOv866Ls65zrzOrkDPgM6xz4HOrM60zrXOuc6zzrzO
sS7OtM6/zrrOuc68zq4iLAotICAgICAgICAgICAgICAgICJcXHUwM2I0XFx1MDNiZlxcdTAzYmEu
XFx1MDNiOVxcdTAzYmNcXHUwM2FlQFxcdTAzYzBcXHUwM2IxXFx1MDNjMVxcdTAzYWNcXHUwM2I0
XFx1MDNiNVxcdTAzYjlcXHUwM2IzIgotICAgICAgICAgICAgICAgICJcXHUwM2JjXFx1MDNiMS5c
XHUwM2I0XFx1MDNiZlxcdTAzYmFcXHUwM2I5XFx1MDNiY1xcdTAzYWUiLAorICAgICAgICAgICAg
ICAgIHIizrTOv866Ls65zrzOrkDPgM6xz4HOrM60zrXOuc6zzrzOsS7OtM6/zrrOuc68zq4iLAor
ICAgICAgICAgICAgICAgIHIiXHUwM2I0XHUwM2JmXHUwM2JhLlx1MDNiOVx1MDNiY1x1MDNhZUBc
dTAzYzBcdTAzYjFcdTAzYzFcdTAzYWNcdTAzYjRcdTAzYjVcdTAzYjlcdTAzYjMiCisgICAgICAg
ICAgICAgICAgciJcdTAzYmNcdTAzYjEuXHUwM2I0XHUwM2JmXHUwM2JhXHUwM2I5XHUwM2JjXHUw
M2FlIiwKICAgICAgICAgICAgICksCiAgICAgICAgIF0KICAgICAgICAgZm9yIHZhbCwgZXhwZWN0
ZWQgaW4gdmFsdWVzOgotICAgICAgICAgICAgYXNzZXJ0IF9pZHZhbCh2YWwsICJhIiwgNiwgTm9u
ZSkgPT0gZXhwZWN0ZWQKLQotICAgIGRlZiB0ZXN0X2J5dGVzX2lkdmFsKHNlbGYpOgotICAgICAg
ICAiIiJ1bml0dGVzdCBmb3IgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIHRvIG9idGFpbiBpZHMgZm9y
IHBhcmFtZXRyaXplZAotICAgICAgICBieXRlcyB2YWx1ZXM6Ci0gICAgICAgIC0gcHl0aG9uMjog
bm9uLWFzY2lpIHN0cmluZ3MgYXJlIGNvbnNpZGVyZWQgYnl0ZXMgYW5kIGZvcm1hdHRlZCB1c2lu
ZwotICAgICAgICAiYmluYXJ5IGVzY2FwZSIsIHdoZXJlIGFueSBieXRlIDwgMTI3IGlzIGVzY2Fw
ZWQgaW50byBpdHMgaGV4IGZvcm0uCi0gICAgICAgIC0gcHl0aG9uMzogYnl0ZXMgb2JqZWN0cyBh
cmUgYWx3YXlzIGVzY2FwZWQgdXNpbmcgImJpbmFyeSBlc2NhcGUiLgotICAgICAgICAiIiIKLSAg
ICAgICAgZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgX2lkdmFsCisgICAgICAgICAgICBhc3Nl
cnQgX2lkdmFsKHZhbCwgImEiLCA2LCBOb25lLCBub2RlaWQ9Tm9uZSwgY29uZmlnPU5vbmUpID09
IGV4cGVjdGVkCisKKyAgICBkZWYgdGVzdF91bmljb2RlX2lkdmFsX3dpdGhfY29uZmlnKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgICIiIlVuaXQgdGVzdCBmb3IgZXhwZWN0ZWQgYmVoYXZpb3IgdG8g
b2J0YWluIGlkcyB3aXRoCisgICAgICAgIGRpc2FibGVfdGVzdF9pZF9lc2NhcGluZ19hbmRfZm9y
ZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9zdXBwb3J0CisgICAgICAgIG9wdGlvbiAoIzUy
OTQpLiIiIgorCisgICAgICAgIGNsYXNzIE1vY2tDb25maWc6CisgICAgICAgICAgICBkZWYgX19p
bml0X18oc2VsZiwgY29uZmlnKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZp
ZworCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBob29rKHNlbGYpOgor
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICAgICAgICAgIGRlZiBweXRlc3RfbWFr
ZV9wYXJhbWV0cml6ZV9pZChzZWxmLCAqKmt3KToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgICAgIGRlZiBnZXRpbmkoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYuY29uZmlnW25hbWVdCisKKyAgICAgICAgb3B0aW9uID0gImRpc2FibGVfdGVzdF9pZF9l
c2NhcGluZ19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9zdXBwb3J0IgorCisg
ICAgICAgIHZhbHVlcyA9IFsKKyAgICAgICAgICAgICgiYcOnw6NvIiwgTW9ja0NvbmZpZyh7b3B0
aW9uOiBUcnVlfSksICJhw6fDo28iKSwKKyAgICAgICAgICAgICgiYcOnw6NvIiwgTW9ja0NvbmZp
Zyh7b3B0aW9uOiBGYWxzZX0pLCAiYVxceGU3XFx4ZTNvIiksCisgICAgICAgIF0gICMgdHlwZTog
TGlzdFtUdXBsZVtzdHIsIEFueSwgc3RyXV0KKyAgICAgICAgZm9yIHZhbCwgY29uZmlnLCBleHBl
Y3RlZCBpbiB2YWx1ZXM6CisgICAgICAgICAgICBhY3R1YWwgPSBfaWR2YWwodmFsLCAiYSIsIDYs
IE5vbmUsIG5vZGVpZD1Ob25lLCBjb25maWc9Y29uZmlnKQorICAgICAgICAgICAgYXNzZXJ0IGFj
dHVhbCA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3RfYnl0ZXNfaWR2YWwoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgIiIiVW5pdCB0ZXN0IGZvciB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgdG8gb2J0
YWluIGlkcyBmb3IgcGFyYW1ldHJpemVkCisgICAgICAgIGJ5dGVzIHZhbHVlczogYnl0ZXMgb2Jq
ZWN0cyBhcmUgYWx3YXlzIGVzY2FwZWQgdXNpbmcgImJpbmFyeSBlc2NhcGUiLiIiIgogICAgICAg
ICB2YWx1ZXMgPSBbCi0gICAgICAgICAgICAoYiIiLCAiIiksCi0gICAgICAgICAgICAoYiJceGMz
XHhiNFx4ZmZceGU0IiwgIlxceGMzXFx4YjRcXHhmZlxceGU0IiksCi0gICAgICAgICAgICAoYiJh
c2NpaSIsICJhc2NpaSIpLAotICAgICAgICAgICAgKHUizrHPgc6sIi5lbmNvZGUoInV0Zi04Iiks
ICJcXHhjZVxceGIxXFx4Y2ZcXHg4MVxceGNlXFx4YWMiKSwKKyAgICAgICAgICAgIChiIiIsIHIi
IiksCisgICAgICAgICAgICAoYiJceGMzXHhiNFx4ZmZceGU0IiwgciJceGMzXHhiNFx4ZmZceGU0
IiksCisgICAgICAgICAgICAoYiJhc2NpaSIsIHIiYXNjaWkiKSwKKyAgICAgICAgICAgICgizrHP
gc6sIi5lbmNvZGUoKSwgciJceGNlXHhiMVx4Y2ZceDgxXHhjZVx4YWMiKSwKICAgICAgICAgXQog
ICAgICAgICBmb3IgdmFsLCBleHBlY3RlZCBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICBhc3NlcnQg
X2lkdmFsKHZhbCwgImEiLCA2LCBOb25lKSA9PSBleHBlY3RlZAorICAgICAgICAgICAgYXNzZXJ0
IF9pZHZhbCh2YWwsICJhIiwgNiwgaWRmbj1Ob25lLCBub2RlaWQ9Tm9uZSwgY29uZmlnPU5vbmUp
ID09IGV4cGVjdGVkCiAKLSAgICBkZWYgdGVzdF9jbGFzc19vcl9mdW5jdGlvbl9pZHZhbChzZWxm
KToKLSAgICAgICAgIiIidW5pdHRlc3QgZm9yIHRoZSBleHBlY3RlZCBiZWhhdmlvciB0byBvYnRh
aW4gaWRzIGZvciBwYXJhbWV0cml6ZWQKLSAgICAgICAgdmFsdWVzIHRoYXQgYXJlIGNsYXNzZXMg
b3IgZnVuY3Rpb25zOiB0aGVpciBfX25hbWVfXy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZyb20g
X3B5dGVzdC5weXRob24gaW1wb3J0IF9pZHZhbAorICAgIGRlZiB0ZXN0X2NsYXNzX29yX2Z1bmN0
aW9uX2lkdmFsKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIlVuaXQgdGVzdCBmb3IgdGhlIGV4
cGVjdGVkIGJlaGF2aW9yIHRvIG9idGFpbiBpZHMgZm9yIHBhcmFtZXRyaXplZAorICAgICAgICB2
YWx1ZXMgdGhhdCBhcmUgY2xhc3NlcyBvciBmdW5jdGlvbnM6IHRoZWlyIF9fbmFtZV9fLiIiIgog
Ci0gICAgICAgIGNsYXNzIFRlc3RDbGFzcyhvYmplY3QpOgorICAgICAgICBjbGFzcyBUZXN0Q2xh
c3M6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKQEAg
LTI5MCwxMiArMzU4LDE4IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogCiAgICAgICAg
IHZhbHVlcyA9IFsoVGVzdENsYXNzLCAiVGVzdENsYXNzIiksICh0ZXN0X2Z1bmN0aW9uLCAidGVz
dF9mdW5jdGlvbiIpXQogICAgICAgICBmb3IgdmFsLCBleHBlY3RlZCBpbiB2YWx1ZXM6Ci0gICAg
ICAgICAgICBhc3NlcnQgX2lkdmFsKHZhbCwgImEiLCA2LCBOb25lKSA9PSBleHBlY3RlZAorICAg
ICAgICAgICAgYXNzZXJ0IF9pZHZhbCh2YWwsICJhIiwgNiwgTm9uZSwgbm9kZWlkPU5vbmUsIGNv
bmZpZz1Ob25lKSA9PSBleHBlY3RlZAorCisgICAgZGVmIHRlc3Rfbm90c2V0X2lkdmFsKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgICIiIlRlc3QgdGhhdCBhIE5PVFNFVCB2YWx1ZSAodXNlZCBieSBh
biBlbXB0eSBwYXJhbWV0ZXJzZXQpIGdlbmVyYXRlcworICAgICAgICBhIHByb3BlciBJRC4KIAot
ICAgIEBweXRlc3QubWFyay5pc3N1ZTI1MAotICAgIGRlZiB0ZXN0X2lkbWFrZXJfYXV0b25hbWUo
c2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IGlkbWFrZXIKKyAgICAg
ICAgUmVncmVzc2lvbiB0ZXN0IGZvciAjNzY4Ni4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2Vy
dCBfaWR2YWwoTk9UU0VULCAiYSIsIDAsIE5vbmUsIG5vZGVpZD1Ob25lLCBjb25maWc9Tm9uZSkg
PT0gImEwIgogCisgICAgZGVmIHRlc3RfaWRtYWtlcl9hdXRvbmFtZShzZWxmKSAtPiBOb25lOgor
ICAgICAgICAiIiIjMjUwIiIiCiAgICAgICAgIHJlc3VsdCA9IGlkbWFrZXIoCiAgICAgICAgICAg
ICAoImEiLCAiYiIpLCBbcHl0ZXN0LnBhcmFtKCJzdHJpbmciLCAxLjApLCBweXRlc3QucGFyYW0o
InN0LXJpbmciLCAyLjApXQogICAgICAgICApCkBAIC0zMDYsMjEgKzM4MCwxNCBAQCBjbGFzcyBU
ZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICBhc3NlcnQgcmVzdWx0ID09
IFsiYTAtMS4wIiwgImExLWIxIl0KICAgICAgICAgIyB1bmljb2RlIG1peGluZywgaXNzdWUyNTAK
LSAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKLSAgICAgICAgICAgIChweS5idWlsdGluLl90b3Rl
eHQoImEiKSwgImIiKSwgW3B5dGVzdC5wYXJhbSh7fSwgYiJceGMzXHhiNCIpXQotICAgICAgICAp
CisgICAgICAgIHJlc3VsdCA9IGlkbWFrZXIoKCJhIiwgImIiKSwgW3B5dGVzdC5wYXJhbSh7fSwg
YiJceGMzXHhiNCIpXSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbImEwLVxceGMzXFx4YjQi
XQogCi0gICAgZGVmIHRlc3RfaWRtYWtlcl93aXRoX2J5dGVzX3JlZ2V4KHNlbGYpOgotICAgICAg
ICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBpZG1ha2VyCi0KKyAgICBkZWYgdGVzdF9pZG1h
a2VyX3dpdGhfYnl0ZXNfcmVnZXgoc2VsZikgLT4gTm9uZToKICAgICAgICAgcmVzdWx0ID0gaWRt
YWtlcigoImEiKSwgW3B5dGVzdC5wYXJhbShyZS5jb21waWxlKGIiZm9vIiksIDEuMCldKQogICAg
ICAgICBhc3NlcnQgcmVzdWx0ID09IFsiZm9vIl0KIAotICAgIGRlZiB0ZXN0X2lkbWFrZXJfbmF0
aXZlX3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IGlk
bWFrZXIKLQotICAgICAgICB0b3RleHQgPSBweS5idWlsdGluLl90b3RleHQKKyAgICBkZWYgdGVz
dF9pZG1ha2VyX25hdGl2ZV9zdHJpbmdzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHJlc3VsdCA9
IGlkbWFrZXIoCiAgICAgICAgICAgICAoImEiLCAiYiIpLAogICAgICAgICAgICAgWwpAQCAtMzM1
LDQyICs0MDIsNjEgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgcHl0ZXN0LnBhcmFtKHs3fSwgc2V0KCJzZXZlbiIpKSwKICAgICAgICAgICAgICAgICBweXRl
c3QucGFyYW0odHVwbGUoImVpZ2h0IiksICg4LCAtOCwgOCkpLAogICAgICAgICAgICAgICAgIHB5
dGVzdC5wYXJhbShiIlx4YzNceGI0IiwgYiJuYW1lIiksCi0gICAgICAgICAgICAgICAgcHl0ZXN0
LnBhcmFtKGIiXHhjM1x4YjQiLCB0b3RleHQoIm90aGVyIikpLAorICAgICAgICAgICAgICAgIHB5
dGVzdC5wYXJhbShiIlx4YzNceGI0IiwgIm90aGVyIiksCiAgICAgICAgICAgICBdLAogICAgICAg
ICApCi0gICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICByZXN1bHQKLSAgICAgICAgICAgID09
IFsKLSAgICAgICAgICAgICAgICAiMS4wLS0xLjEiLAotICAgICAgICAgICAgICAgICIyLS0yMDIi
LAotICAgICAgICAgICAgICAgICJ0aHJlZS10aHJlZSBodW5kcmVkIiwKLSAgICAgICAgICAgICAg
ICAiVHJ1ZS1GYWxzZSIsCi0gICAgICAgICAgICAgICAgIk5vbmUtTm9uZSIsCi0gICAgICAgICAg
ICAgICAgImZvby1iYXIiLAotICAgICAgICAgICAgICAgICJzdHItaW50IiwKLSAgICAgICAgICAg
ICAgICAiYTctYjciLAotICAgICAgICAgICAgICAgICJhOC1iOCIsCi0gICAgICAgICAgICAgICAg
ImE5LWI5IiwKLSAgICAgICAgICAgICAgICAiXFx4YzNcXHhiNC1uYW1lIiwKLSAgICAgICAgICAg
ICAgICAiXFx4YzNcXHhiNC1vdGhlciIsCi0gICAgICAgICAgICBdCisgICAgICAgIGFzc2VydCBy
ZXN1bHQgPT0gWworICAgICAgICAgICAgIjEuMC0tMS4xIiwKKyAgICAgICAgICAgICIyLS0yMDIi
LAorICAgICAgICAgICAgInRocmVlLXRocmVlIGh1bmRyZWQiLAorICAgICAgICAgICAgIlRydWUt
RmFsc2UiLAorICAgICAgICAgICAgIk5vbmUtTm9uZSIsCisgICAgICAgICAgICAiZm9vLWJhciIs
CisgICAgICAgICAgICAic3RyLWludCIsCisgICAgICAgICAgICAiYTctYjciLAorICAgICAgICAg
ICAgImE4LWI4IiwKKyAgICAgICAgICAgICJhOS1iOSIsCisgICAgICAgICAgICAiXFx4YzNcXHhi
NC1uYW1lIiwKKyAgICAgICAgICAgICJcXHhjM1xceGI0LW90aGVyIiwKKyAgICAgICAgXQorCisg
ICAgZGVmIHRlc3RfaWRtYWtlcl9ub25fcHJpbnRhYmxlX2NoYXJhY3RlcnMoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKKyAgICAgICAgICAgICgicyIsICJuIiksCisg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCJceDAwIiwgMSksCisg
ICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCJceDA1IiwgMiksCisgICAgICAgICAgICAgICAg
cHl0ZXN0LnBhcmFtKGIiXHgwMCIsIDMpLAorICAgICAgICAgICAgICAgIHB5dGVzdC5wYXJhbShi
Ilx4MDUiLCA0KSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oIlx0IiwgNSksCisgICAg
ICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKGIiXHQiLCA2KSwKKyAgICAgICAgICAgIF0sCiAgICAg
ICAgICkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbIlxceDAwLTEiLCAiXFx4MDUtMiIsICJc
XHgwMC0zIiwgIlxceDA1LTQiLCAiXFx0LTUiLCAiXFx0LTYiXQogCi0gICAgZGVmIHRlc3RfaWRt
YWtlcl9lbnVtKHNlbGYpOgotICAgICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBpZG1h
a2VyCisgICAgZGVmIHRlc3RfaWRtYWtlcl9tYW51YWxfaWRzX211c3RfYmVfcHJpbnRhYmxlKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgIHJlc3VsdCA9IGlkbWFrZXIoCisgICAgICAgICAgICAoInMi
LCksCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCJ4MDAiLCBp
ZD0iaGVsbG8gXHgwMCIpLAorICAgICAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgieDA1IiwgaWQ9
ImhlbGxvIFx4MDUiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0
IHJlc3VsdCA9PSBbImhlbGxvIFxceDAwIiwgImhlbGxvIFxceDA1Il0KIAorICAgIGRlZiB0ZXN0
X2lkbWFrZXJfZW51bShzZWxmKSAtPiBOb25lOgogICAgICAgICBlbnVtID0gcHl0ZXN0LmltcG9y
dG9yc2tpcCgiZW51bSIpCiAgICAgICAgIGUgPSBlbnVtLkVudW0oIkZvbyIsICJvbmUsIHR3byIp
CiAgICAgICAgIHJlc3VsdCA9IGlkbWFrZXIoKCJhIiwgImIiKSwgW3B5dGVzdC5wYXJhbShlLm9u
ZSwgZS50d28pXSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBbIkZvby5vbmUtRm9vLnR3byJd
CiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWUzNTEKLSAgICBkZWYgdGVzdF9pZG1ha2VyX2lkZm4o
c2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1wb3J0IGlkbWFrZXIKKyAgICBk
ZWYgdGVzdF9pZG1ha2VyX2lkZm4oc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiIzM1MSIiIgog
Ci0gICAgICAgIGRlZiBpZHModmFsKToKKyAgICAgICAgZGVmIGlkcyh2YWw6IG9iamVjdCkgLT4g
T3B0aW9uYWxbc3RyXToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBFeGNlcHRpb24p
OgogICAgICAgICAgICAgICAgIHJldHVybiByZXByKHZhbCkKKyAgICAgICAgICAgIHJldHVybiBO
b25lCiAKICAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKICAgICAgICAgICAgICgiYSIsICJiIiks
CkBAIC0zODMsMTEgKzQ2OSwxMCBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAg
ICAgKQogICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFsiMTAuMC1JbmRleEVycm9yKCkiLCAiMjAt
S2V5RXJyb3IoKSIsICJ0aHJlZS1iMiJdCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWUzNTEKLSAg
ICBkZWYgdGVzdF9pZG1ha2VyX2lkZm5fdW5pcXVlX25hbWVzKHNlbGYpOgotICAgICAgICBmcm9t
IF9weXRlc3QucHl0aG9uIGltcG9ydCBpZG1ha2VyCisgICAgZGVmIHRlc3RfaWRtYWtlcl9pZGZu
X3VuaXF1ZV9uYW1lcyhzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIjMzUxIiIiCiAKLSAgICAg
ICAgZGVmIGlkcyh2YWwpOgorICAgICAgICBkZWYgaWRzKHZhbDogb2JqZWN0KSAtPiBzdHI6CiAg
ICAgICAgICAgICByZXR1cm4gImEiCiAKICAgICAgICAgcmVzdWx0ID0gaWRtYWtlcigKQEAgLTQw
MSw0OCArNDg2LDcxIEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICApCiAg
ICAgICAgIGFzc2VydCByZXN1bHQgPT0gWyJhLWEwIiwgImEtYTEiLCAiYS1hMiJdCiAKLSAgICBA
cHl0ZXN0Lm1hcmsuaXNzdWUzNTEKLSAgICBkZWYgdGVzdF9pZG1ha2VyX2lkZm5fZXhjZXB0aW9u
KHNlbGYpOgotICAgICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBpZG1ha2VyCi0gICAg
ICAgIGZyb20gX3B5dGVzdC5yZWN3YXJuIGltcG9ydCBXYXJuaW5nc1JlY29yZGVyCisgICAgZGVm
IHRlc3RfaWRtYWtlcl93aXRoX2lkZm5fYW5kX2NvbmZpZyhzZWxmKSAtPiBOb25lOgorICAgICAg
ICAiIiJVbml0IHRlc3QgZm9yIGV4cGVjdGVkIGJlaGF2aW9yIHRvIGNyZWF0ZSBpZHMgd2l0aCBp
ZGZuIGFuZAorICAgICAgICBkaXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxs
X3JpZ2h0c190b19jb21tdW5pdHlfc3VwcG9ydAorICAgICAgICBvcHRpb24gKCM1Mjk0KS4KKyAg
ICAgICAgIiIiCiAKLSAgICAgICAgY2xhc3MgQmFkSWRzRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0g
ICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIE1vY2tDb25maWc6CisgICAgICAgICAgICBk
ZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZworCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBob29rKHNl
bGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBweXRl
c3RfbWFrZV9wYXJhbWV0cml6ZV9pZChzZWxmLCAqKmt3KToKKyAgICAgICAgICAgICAgICBwYXNz
CiAKLSAgICAgICAgZGVmIGlkcyh2YWwpOgotICAgICAgICAgICAgcmFpc2UgQmFkSWRzRXhjZXB0
aW9uKCJpZHMgcmFpc2VkIikKLQotICAgICAgICByZWMgPSBXYXJuaW5nc1JlY29yZGVyKCkKLSAg
ICAgICAgd2l0aCByZWM6Ci0gICAgICAgICAgICBpZG1ha2VyKAotICAgICAgICAgICAgICAgICgi
YSIsICJiIiksCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBweXRlc3Qu
cGFyYW0oMTAuMCwgSW5kZXhFcnJvcigpKSwKLSAgICAgICAgICAgICAgICAgICAgcHl0ZXN0LnBh
cmFtKDIwLCBLZXlFcnJvcigpKSwKLSAgICAgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCJ0
aHJlZSIsIFsxLCAyLCAzXSksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBp
ZGZuPWlkcywKKyAgICAgICAgICAgIGRlZiBnZXRpbmkoc2VsZiwgbmFtZSk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuY29uZmlnW25hbWVdCisKKyAgICAgICAgb3B0aW9uID0gImRpc2Fi
bGVfdGVzdF9pZF9lc2NhcGluZ19hbmRfZm9yZmVpdF9hbGxfcmlnaHRzX3RvX2NvbW11bml0eV9z
dXBwb3J0IgorCisgICAgICAgIHZhbHVlcyA9IFsKKyAgICAgICAgICAgIChNb2NrQ29uZmlnKHtv
cHRpb246IFRydWV9KSwgImHDp8OjbyIpLAorICAgICAgICAgICAgKE1vY2tDb25maWcoe29wdGlv
bjogRmFsc2V9KSwgImFcXHhlN1xceGUzbyIpLAorICAgICAgICBdICAjIHR5cGU6IExpc3RbVHVw
bGVbQW55LCBzdHJdXQorICAgICAgICBmb3IgY29uZmlnLCBleHBlY3RlZCBpbiB2YWx1ZXM6Cisg
ICAgICAgICAgICByZXN1bHQgPSBpZG1ha2VyKAorICAgICAgICAgICAgICAgICgiYSIsKSwgW3B5
dGVzdC5wYXJhbSgic3RyaW5nIildLCBpZGZuPWxhbWJkYSBfOiAiYcOnw6NvIiwgY29uZmlnPWNv
bmZpZywKICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gW2V4cGVj
dGVkXQogCi0gICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICBbc3RyKGkubWVzc2FnZSkgZm9y
IGkgaW4gcmVjLmxpc3RdCi0gICAgICAgICAgICA9PSBbCi0gICAgICAgICAgICAgICAgIlJhaXNl
ZCB3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlkIG9mIHBhcmFtZXRlciBhIGF0IHBvc2l0aW9u
IDAuIgotICAgICAgICAgICAgICAgICJcblVwZGF0ZSB5b3VyIGNvZGUgYXMgdGhpcyB3aWxsIHJh
aXNlIGFuIGVycm9yIGluIHB5dGVzdC00LjAuIiwKLSAgICAgICAgICAgICAgICAiUmFpc2VkIHdo
aWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaWQgb2YgcGFyYW1ldGVyIGIgYXQgcG9zaXRpb24gMC4i
Ci0gICAgICAgICAgICAgICAgIlxuVXBkYXRlIHlvdXIgY29kZSBhcyB0aGlzIHdpbGwgcmFpc2Ug
YW4gZXJyb3IgaW4gcHl0ZXN0LTQuMC4iLAotICAgICAgICAgICAgICAgICJSYWlzZWQgd2hpbGUg
dHJ5aW5nIHRvIGRldGVybWluZSBpZCBvZiBwYXJhbWV0ZXIgYSBhdCBwb3NpdGlvbiAxLiIKLSAg
ICAgICAgICAgICAgICAiXG5VcGRhdGUgeW91ciBjb2RlIGFzIHRoaXMgd2lsbCByYWlzZSBhbiBl
cnJvciBpbiBweXRlc3QtNC4wLiIsCi0gICAgICAgICAgICAgICAgIlJhaXNlZCB3aGlsZSB0cnlp
bmcgdG8gZGV0ZXJtaW5lIGlkIG9mIHBhcmFtZXRlciBiIGF0IHBvc2l0aW9uIDEuIgotICAgICAg
ICAgICAgICAgICJcblVwZGF0ZSB5b3VyIGNvZGUgYXMgdGhpcyB3aWxsIHJhaXNlIGFuIGVycm9y
IGluIHB5dGVzdC00LjAuIiwKLSAgICAgICAgICAgICAgICAiUmFpc2VkIHdoaWxlIHRyeWluZyB0
byBkZXRlcm1pbmUgaWQgb2YgcGFyYW1ldGVyIGEgYXQgcG9zaXRpb24gMi4iCi0gICAgICAgICAg
ICAgICAgIlxuVXBkYXRlIHlvdXIgY29kZSBhcyB0aGlzIHdpbGwgcmFpc2UgYW4gZXJyb3IgaW4g
cHl0ZXN0LTQuMC4iLAotICAgICAgICAgICAgICAgICJSYWlzZWQgd2hpbGUgdHJ5aW5nIHRvIGRl
dGVybWluZSBpZCBvZiBwYXJhbWV0ZXIgYiBhdCBwb3NpdGlvbiAyLiIKLSAgICAgICAgICAgICAg
ICAiXG5VcGRhdGUgeW91ciBjb2RlIGFzIHRoaXMgd2lsbCByYWlzZSBhbiBlcnJvciBpbiBweXRl
c3QtNC4wLiIsCi0gICAgICAgICAgICBdCi0gICAgICAgICkKKyAgICBkZWYgdGVzdF9pZG1ha2Vy
X3dpdGhfaWRzX2FuZF9jb25maWcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiVW5pdCB0ZXN0
IGZvciBleHBlY3RlZCBiZWhhdmlvciB0byBjcmVhdGUgaWRzIHdpdGggaWRzIGFuZAorICAgICAg
ICBkaXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2ZvcmZlaXRfYWxsX3JpZ2h0c190b19jb21t
dW5pdHlfc3VwcG9ydAorICAgICAgICBvcHRpb24gKCM1Mjk0KS4KKyAgICAgICAgIiIiCiAKLSAg
ICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pZHNfZXhjZXB0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAg
ICAgICBjbGFzcyBNb2NrQ29uZmlnOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZyk6CisgICAgICAgICAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKKworICAgICAgICAg
ICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgaG9vayhzZWxmKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBkZWYgcHl0ZXN0X21ha2VfcGFyYW1ldHJpemVf
aWQoc2VsZiwgKiprdyk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYg
Z2V0aW5pKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ1tu
YW1lXQorCisgICAgICAgIG9wdGlvbiA9ICJkaXNhYmxlX3Rlc3RfaWRfZXNjYXBpbmdfYW5kX2Zv
cmZlaXRfYWxsX3JpZ2h0c190b19jb21tdW5pdHlfc3VwcG9ydCIKKworICAgICAgICB2YWx1ZXMg
PSBbCisgICAgICAgICAgICAoTW9ja0NvbmZpZyh7b3B0aW9uOiBUcnVlfSksICJhw6fDo28iKSwK
KyAgICAgICAgICAgIChNb2NrQ29uZmlnKHtvcHRpb246IEZhbHNlfSksICJhXFx4ZTdcXHhlM28i
KSwKKyAgICAgICAgXSAgIyB0eXBlOiBMaXN0W1R1cGxlW0FueSwgc3RyXV0KKyAgICAgICAgZm9y
IGNvbmZpZywgZXhwZWN0ZWQgaW4gdmFsdWVzOgorICAgICAgICAgICAgcmVzdWx0ID0gaWRtYWtl
cigKKyAgICAgICAgICAgICAgICAoImEiLCksIFtweXRlc3QucGFyYW0oInN0cmluZyIpXSwgaWRz
PVsiYcOnw6NvIl0sIGNvbmZpZz1jb25maWcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBh
c3NlcnQgcmVzdWx0ID09IFtleHBlY3RlZF0KKworICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2lk
c19leGNlcHRpb24oc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgIiIi
CiAgICAgICAgIDpwYXJhbSB0ZXN0ZGlyOiB0aGUgaW5zdGFuY2Ugb2YgVGVzdGRpciBjbGFzcywg
YSB0ZW1wb3JhcnkKICAgICAgICAgdGVzdCBkaXJlY3RvcnkuCkBAIC00NTksMjcgKzU2Nyw0OSBA
QCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcGFzcwog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgd2l0aCBweXRlc3Qud2FybnMoRGVw
cmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLWNvbGxlY3Qtb25seSIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICI8TW9kdWxlICd0ZXN0X3BhcmFtZXRyaXplX2lkc19leGNlcHRpb24ucHkn
PiIsCi0gICAgICAgICAgICAgICAgIiAgPEZ1bmN0aW9uICd0ZXN0X2Zvb1thXSc+IiwKLSAgICAg
ICAgICAgICAgICAiICA8RnVuY3Rpb24gJ3Rlc3RfZm9vW2JdJz4iLAorICAgICAgICAgICAgICAg
ICIqRXhjZXB0aW9uOiBiYWQgaWRzIiwKKyAgICAgICAgICAgICAgICAiKnRlc3RfZm9vOiBlcnJv
ciByYWlzZWQgd2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBpZCBvZiBwYXJhbWV0ZXIgJ2FyZycg
YXQgcG9zaXRpb24gMCIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0
X2lkbWFrZXJfd2l0aF9pZHMoc2VsZik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC5weXRob24gaW1w
b3J0IGlkbWFrZXIKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pZHNfcmV0dXJuc19ub25fc3Ry
aW5nKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKwor
ICAgICAgICAgICAgZGVmIGlkcyhkKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZAogCisgICAg
ICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFyZyIsICh7MTogMn0sIHszLCA0fSks
IGlkcz1pZHMpCisgICAgICAgICAgICBkZWYgdGVzdChhcmcpOgorICAgICAgICAgICAgICAgIGFz
c2VydCBhcmcKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhcmciLCAo
MSwgMi4wLCBUcnVlKSwgaWRzPWlkcykKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ludChhcmcpOgor
ICAgICAgICAgICAgICAgIGFzc2VydCBhcmcKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdnYiLCAiLXMiKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgInRlc3RfcGFyYW1ldHJpemVfaWRzX3JldHVybnNfbm9uX3N0cmluZy5weTo6dGVzdFthcmcw
XSBQQVNTRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2lkc19yZXR1cm5z
X25vbl9zdHJpbmcucHk6OnRlc3RbYXJnMV0gUEFTU0VEIiwKKyAgICAgICAgICAgICAgICAidGVz
dF9wYXJhbWV0cml6ZV9pZHNfcmV0dXJuc19ub25fc3RyaW5nLnB5Ojp0ZXN0X2ludFsxXSBQQVNT
RUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2lkc19yZXR1cm5zX25vbl9z
dHJpbmcucHk6OnRlc3RfaW50WzIuMF0gUEFTU0VEIiwKKyAgICAgICAgICAgICAgICAidGVzdF9w
YXJhbWV0cml6ZV9pZHNfcmV0dXJuc19ub25fc3RyaW5nLnB5Ojp0ZXN0X2ludFtUcnVlXSBQQVNT
RUQiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9pZG1ha2VyX3dp
dGhfaWRzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHJlc3VsdCA9IGlkbWFrZXIoCiAgICAgICAg
ICAgICAoImEiLCAiYiIpLCBbcHl0ZXN0LnBhcmFtKDEsIDIpLCBweXRlc3QucGFyYW0oMywgNCld
LCBpZHM9WyJhIiwgTm9uZV0KICAgICAgICAgKQogICAgICAgICBhc3NlcnQgcmVzdWx0ID09IFsi
YSIsICIzLTQiXQogCi0gICAgZGVmIHRlc3RfaWRtYWtlcl93aXRoX3BhcmFtc2V0X2lkKHNlbGYp
OgotICAgICAgICBmcm9tIF9weXRlc3QucHl0aG9uIGltcG9ydCBpZG1ha2VyCi0KKyAgICBkZWYg
dGVzdF9pZG1ha2VyX3dpdGhfcGFyYW1zZXRfaWQoc2VsZikgLT4gTm9uZToKICAgICAgICAgcmVz
dWx0ID0gaWRtYWtlcigKICAgICAgICAgICAgICgiYSIsICJiIiksCiAgICAgICAgICAgICBbcHl0
ZXN0LnBhcmFtKDEsIDIsIGlkPSJtZSIpLCBweXRlc3QucGFyYW0oMywgNCwgaWQ9InlvdSIpXSwK
QEAgLTQ4NywzMCArNjE3LDE0IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAg
ICApCiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gWyJtZSIsICJ5b3UiXQogCi0gICAgZGVmIHRl
c3RfaWRtYWtlcl93aXRoX2lkc191bmlxdWVfbmFtZXMoc2VsZik6Ci0gICAgICAgIGZyb20gX3B5
dGVzdC5weXRob24gaW1wb3J0IGlkbWFrZXIKLQorICAgIGRlZiB0ZXN0X2lkbWFrZXJfd2l0aF9p
ZHNfdW5pcXVlX25hbWVzKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHJlc3VsdCA9IGlkbWFrZXIo
CiAgICAgICAgICAgICAoImEiKSwgbWFwKHB5dGVzdC5wYXJhbSwgWzEsIDIsIDMsIDQsIDVdKSwg
aWRzPVsiYSIsICJhIiwgImIiLCAiYyIsICJiIl0KICAgICAgICAgKQogICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IFsiYTAiLCAiYTEiLCAiYjAiLCAiYyIsICJiMSJdCiAKLSAgICBkZWYgdGVzdF9h
ZGRjYWxsX2FuZF9wYXJhbWV0cml6ZShzZWxmKToKLQotICAgICAgICBkZWYgZnVuYyh4LCB5KToK
LSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMoZnVu
YykKLSAgICAgICAgbWV0YWZ1bmMuYWRkY2FsbCh7IngiOiAxfSkKLSAgICAgICAgbWV0YWZ1bmMu
cGFyYW1ldHJpemUoInkiLCBbMiwgM10pCi0gICAgICAgIGFzc2VydCBsZW4obWV0YWZ1bmMuX2Nh
bGxzKSA9PSAyCi0gICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMF0uZnVuY2FyZ3MgPT0g
eyJ4IjogMSwgInkiOiAyfQotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzFdLmZ1bmNh
cmdzID09IHsieCI6IDEsICJ5IjogM30KLSAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1sw
XS5pZCA9PSAiMC0yIgotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzFdLmlkID09ICIw
LTMiCi0KLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU3MTQKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6
ZV9pbmRpcmVjdChzZWxmKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdChzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIjNzE0IiIiCiAKICAgICAgICAgZGVmIGZ1bmMoeCwgeSk6
CiAgICAgICAgICAgICBwYXNzCkBAIC01MjQsOCArNjM4LDggQEAgY2xhc3MgVGVzdE1ldGFmdW5j
KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMF0ucGFyYW1zID09IGRp
Y3QoeD0xLCB5PTIpCiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0ucGFyYW1zID09
IGRpY3QoeD0xLCB5PTMpCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU3MTQKLSAgICBkZWYgdGVz
dF9wYXJhbWV0cml6ZV9pbmRpcmVjdF9saXN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRy
aXplX2luZGlyZWN0X2xpc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiIzcxNCIiIgogCiAg
ICAgICAgIGRlZiBmdW5jKHgsIHkpOgogICAgICAgICAgICAgcGFzcwpAQCAtNTM1LDggKzY0OSw4
IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMu
X2NhbGxzWzBdLmZ1bmNhcmdzID09IGRpY3QoeT0iYiIpCiAgICAgICAgIGFzc2VydCBtZXRhZnVu
Yy5fY2FsbHNbMF0ucGFyYW1zID09IGRpY3QoeD0iYSIpCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNz
dWU3MTQKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdF9saXN0X2FsbChzZWxmKToK
KyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdF9saXN0X2FsbChzZWxmKSAtPiBOb25l
OgorICAgICAgICAiIiIjNzE0IiIiCiAKICAgICAgICAgZGVmIGZ1bmMoeCwgeSk6CiAgICAgICAg
ICAgICBwYXNzCkBAIC01NDYsOCArNjYwLDggQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6
CiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMF0uZnVuY2FyZ3MgPT0ge30KICAgICAg
ICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1swXS5wYXJhbXMgPT0gZGljdCh4PSJhIiwgeT0iYiIp
CiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU3MTQKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9p
bmRpcmVjdF9saXN0X2VtcHR5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGly
ZWN0X2xpc3RfZW1wdHkoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiIzcxNCIiIgogCiAgICAg
ICAgIGRlZiBmdW5jKHgsIHkpOgogICAgICAgICAgICAgcGFzcwpAQCAtNTU3LDkgKzY3MSwyMCBA
QCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9j
YWxsc1swXS5mdW5jYXJncyA9PSBkaWN0KHg9ImEiLCB5PSJiIikKICAgICAgICAgYXNzZXJ0IG1l
dGFmdW5jLl9jYWxsc1swXS5wYXJhbXMgPT0ge30KIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTcx
NAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0X2xpc3RfZnVuY3Rpb25hbChzZWxm
LCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdF93cm9uZ190eXBl
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBmdW5jKHgsIHkpOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQorICAgICAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoCisgICAgICAgICAgICBmYWlsLkV4Y2VwdGlvbiwKKyAgICAgICAgICAg
IG1hdGNoPSJJbiBmdW5jOiBleHBlY3RlZCBTZXF1ZW5jZSBvciBib29sZWFuIGZvciBpbmRpcmVj
dCwgZ290IGRpY3QiLAorICAgICAgICApOgorICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJp
emUoIngsIHkiLCBbKCJhIiwgImIiKV0sIGluZGlyZWN0PXt9KSAgIyB0eXBlOiBpZ25vcmVbYXJn
LXR5cGVdCisKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pbmRpcmVjdF9saXN0X2Z1bmN0aW9u
YWwoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgIiIiCisgICAgICAg
ICM3MTQKICAgICAgICAgVGVzdCBwYXJhbWV0cml6YXRpb24gd2l0aCAnaW5kaXJlY3QnIHBhcmFt
ZXRlciBhcHBsaWVkIG9uCiAgICAgICAgIHBhcnRpY3VsYXIgYXJndW1lbnRzLiBBcyB5IGlzIGlz
IGRpcmVjdCwgaXRzIHZhbHVlIHNob3VsZAogICAgICAgICBiZSB1c2VkIGRpcmVjdGx5IHJhdGhl
ciB0aGFuIGJlaW5nIHBhc3NlZCB0byB0aGUgZml4dHVyZQpAQCAtNTg2LDIyICs3MTEsMjUgQEAg
Y2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItdiIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0ZXN0
X3NpbXBsZSphLWIqIiwgIioxIHBhc3NlZCoiXSkKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTcx
NAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2luZGlyZWN0X2xpc3RfZXJyb3Ioc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaW5kaXJlY3RfbGlzdF9lcnJvcihzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIjNzE0IiIiCiAKICAgICAgICAgZGVmIGZ1bmMoeCwgeSk6
CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFmdW5jKGZ1
bmMpCi0gICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKGZhaWwuRXhjZXB0aW9uKToKICAgICAgICAgICAgIG1ldGFmdW5jLnBh
cmFtZXRyaXplKCJ4LCB5IiwgWygiYSIsICJiIildLCBpbmRpcmVjdD1bIngiLCAieiJdKQogCi0g
ICAgQHB5dGVzdC5tYXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfdXNlc19u
b19maXh0dXJlX2Vycm9yX2luZGlyZWN0X2ZhbHNlKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX3VzZXNfbm9fZml4dHVyZV9lcnJvcl9pbmRpcmVjdF9mYWxzZSgKKyAg
ICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpcgorICAgICkgLT4gTm9uZToKICAgICAgICAgIiIi
VGhlICd1c2VzIG5vIGZpeHR1cmUnIGVycm9yIHRlbGxzIHRoZSB1c2VyIGF0IGNvbGxlY3Rpb24g
dGltZQogICAgICAgICB0aGF0IHRoZSBwYXJhbWV0cml6ZSBkYXRhIHRoZXkndmUgc2V0IHVwIGRv
ZXNuJ3QgY29ycmVzcG9uZCB0byB0aGUKICAgICAgICAgZml4dHVyZXMgaW4gdGhlaXIgdGVzdCBm
dW5jdGlvbiwgcmF0aGVyIHRoYW4gc2lsZW50bHkgaWdub3JpbmcgdGhpcwogICAgICAgICBhbmQg
bGV0dGluZyB0aGUgdGVzdCBwb3RlbnRpYWxseSBwYXNzLgorCisgICAgICAgICM3MTQKICAgICAg
ICAgIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAt
NjE1LDggKzc0MywxMCBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnVzZXMgbm8gYXJndW1lbnQgJ3knKiJdKQogCi0gICAg
QHB5dGVzdC5tYXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfdXNlc19ub19m
aXh0dXJlX2Vycm9yX2luZGlyZWN0X3RydWUoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rf
cGFyYW1ldHJpemVfdXNlc19ub19maXh0dXJlX2Vycm9yX2luZGlyZWN0X3RydWUoCisgICAgICAg
IHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIiM3MTQi
IiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CkBAIC02MzUsOCArNzY1LDEwIEBAIGNsYXNzIFRlc3RNZXRhZnVu
YyhvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xsZWN0
LW9ubHkiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqdXNlcyBubyBm
aXh0dXJlICd5JyoiXSkKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTcxNAotICAgIGRlZiB0ZXN0
X3BhcmFtZXRyaXplX2luZGlyZWN0X3VzZXNfbm9fZml4dHVyZV9lcnJvcl9pbmRpcmVjdF9zdHJp
bmcoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaW5kaXJlY3RfdXNl
c19ub19maXh0dXJlX2Vycm9yX2luZGlyZWN0X3N0cmluZygKKyAgICAgICAgc2VsZiwgdGVzdGRp
cjogVGVzdGRpcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiIzcxNCIiIgogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKQEAgLTY1Miw4ICs3ODQsMTAgQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbGxlY3Qtb25seSIpCiAgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip1c2VzIG5vIGZpeHR1cmUgJ3knKiJd
KQogCi0gICAgQHB5dGVzdC5tYXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVf
aW5kaXJlY3RfdXNlc19ub19maXh0dXJlX2Vycm9yX2luZGlyZWN0X2xpc3Qoc2VsZiwgdGVzdGRp
cik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaW5kaXJlY3RfdXNlc19ub19maXh0dXJlX2Vy
cm9yX2luZGlyZWN0X2xpc3QoCisgICAgICAgIHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIKKyAgICAp
IC0+IE5vbmU6CisgICAgICAgICIiIiM3MTQiIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC02NjksOCAr
ODAzLDggQEAgY2xhc3MgVGVzdE1ldGFmdW5jKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCItLWNvbGxlY3Qtb25seSIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIip1c2VzIG5vIGZpeHR1cmUgJ3knKiJdKQogCi0gICAgQHB5dGVzdC5t
YXJrLmlzc3VlNzE0Ci0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYXJndW1lbnRfbm90X2luX2lu
ZGlyZWN0X2xpc3Qoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYXJn
dW1lbnRfbm90X2luX2luZGlyZWN0X2xpc3Qoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9u
ZToKKyAgICAgICAgIiIiIzcxNCIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTY4OCw3ICs4MjIsNyBA
QCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXpl
X2dpdmVzX2luZGljYXRpdmVfZXJyb3Jfb25fZnVuY3Rpb25fd2l0aF9kZWZhdWx0X2FyZ3VtZW50
KAogICAgICAgICBzZWxmLCB0ZXN0ZGlyCi0gICAgKToKKyAgICApIC0+IE5vbmU6CiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdApAQCAtNzAzLDIyICs4MzcsNyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2JqZWN0KToK
ICAgICAgICAgICAgIFsiKmFscmVhZHkgdGFrZXMgYW4gYXJndW1lbnQgJ3knIHdpdGggYSBkZWZh
dWx0IHZhbHVlIl0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfYWRkY2FsbHNfYW5kX3BhcmFt
ZXRyaXplX2luZGlyZWN0KHNlbGYpOgotCi0gICAgICAgIGRlZiBmdW5jKHgsIHkpOgotICAgICAg
ICAgICAgcGFzcwotCi0gICAgICAgIG1ldGFmdW5jID0gc2VsZi5NZXRhZnVuYyhmdW5jKQotICAg
ICAgICBtZXRhZnVuYy5hZGRjYWxsKHBhcmFtPSIxMjMiKQotICAgICAgICBtZXRhZnVuYy5wYXJh
bWV0cml6ZSgieCIsIFsxXSwgaW5kaXJlY3Q9VHJ1ZSkKLSAgICAgICAgbWV0YWZ1bmMucGFyYW1l
dHJpemUoInkiLCBbMiwgM10sIGluZGlyZWN0PVRydWUpCi0gICAgICAgIGFzc2VydCBsZW4obWV0
YWZ1bmMuX2NhbGxzKSA9PSAyCi0gICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMF0uZnVu
Y2FyZ3MgPT0ge30KLSAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1sxXS5mdW5jYXJncyA9
PSB7fQotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzBdLnBhcmFtcyA9PSBkaWN0KHg9
MSwgeT0yKQotICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzFdLnBhcmFtcyA9PSBkaWN0
KHg9MSwgeT0zKQotCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfZnVuY3Rpb25hbChzZWxmLCB0
ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9mdW5jdGlvbmFsKHNlbGYsIHRlc3Rk
aXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNzM5LDcgKzg1OCw3IEBA
IGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICAgICAgWyIqdGVzdF9zaW1wbGUq
MS0yKiIsICIqdGVzdF9zaW1wbGUqMi0yKiIsICIqMiBwYXNzZWQqIl0KICAgICAgICAgKQogCi0g
ICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfb25lYXJnKHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFt
ZXRyaXplX29uZWFyZyhzZWxmKSAtPiBOb25lOgogICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0
YWZ1bmMobGFtYmRhIHg6IE5vbmUpCiAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4Iiwg
WzEsIDJdKQogICAgICAgICBhc3NlcnQgbGVuKG1ldGFmdW5jLl9jYWxscykgPT0gMgpAQCAtNzQ4
LDcgKzg2Nyw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICBhc3NlcnQg
bWV0YWZ1bmMuX2NhbGxzWzFdLmZ1bmNhcmdzID09IGRpY3QoeD0yKQogICAgICAgICBhc3NlcnQg
bWV0YWZ1bmMuX2NhbGxzWzFdLmlkID09ICIyIgogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVf
b25lYXJnX2luZGlyZWN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX29uZWFyZ19p
bmRpcmVjdChzZWxmKSAtPiBOb25lOgogICAgICAgICBtZXRhZnVuYyA9IHNlbGYuTWV0YWZ1bmMo
bGFtYmRhIHg6IE5vbmUpCiAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKCJ4IiwgWzEsIDJd
LCBpbmRpcmVjdD1UcnVlKQogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzBdLnBhcmFt
cyA9PSBkaWN0KHg9MSkKQEAgLTc1Niw3ICs4NzUsNyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmMob2Jq
ZWN0KToKICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLl9jYWxsc1sxXS5wYXJhbXMgPT0gZGljdCh4
PTIpCiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uaWQgPT0gIjIiCiAKLSAgICBk
ZWYgdGVzdF9wYXJhbWV0cml6ZV90d29hcmdzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRy
aXplX3R3b2FyZ3Moc2VsZikgLT4gTm9uZToKICAgICAgICAgbWV0YWZ1bmMgPSBzZWxmLk1ldGFm
dW5jKGxhbWJkYSB4LCB5OiBOb25lKQogICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgoIngi
LCAieSIpLCBbKDEsIDIpLCAoMywgNCldKQogICAgICAgICBhc3NlcnQgbGVuKG1ldGFmdW5jLl9j
YWxscykgPT0gMgpAQCAtNzY1LDcgKzg4NCw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3Qp
OgogICAgICAgICBhc3NlcnQgbWV0YWZ1bmMuX2NhbGxzWzFdLmZ1bmNhcmdzID09IGRpY3QoeD0z
LCB5PTQpCiAgICAgICAgIGFzc2VydCBtZXRhZnVuYy5fY2FsbHNbMV0uaWQgPT0gIjMtNCIKIAot
ICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX211bHRpcGxlX3RpbWVzKHNlbGYsIHRlc3RkaXIpOgor
ICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX211bHRpcGxlX3RpbWVzKHNlbGYsIHRlc3RkaXI6IFRl
c3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNzgyLDcgKzkwMSw3IEBAIGNsYXNz
IFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCiAg
ICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMoZmFpbGVkPTYpCiAKLSAgICBkZWYgdGVzdF9w
YXJhbWV0cml6ZV9DU1Yoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVf
Q1NWKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAt
Nzk0LDcgKzkxMyw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuYyhvYmplY3QpOgogICAgICAgICByZXBy
ZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShw
YXNzZWQ9MikKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2NsYXNzX3NjZW5hcmlvcyhzZWxm
LCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9jbGFzc19zY2VuYXJpb3Moc2Vs
ZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICMgc2FtZSBhcyBkb2MvZW4vZXhhbXBsZS9wYXJh
bWV0cml6ZSBzY2VuYXJpbyBleGFtcGxlCkBAIC04MzYsNDIgKzk1NSwzOSBAQCBjbGFzcyBUZXN0
TWV0YWZ1bmMob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0
X2Zvcm1hdF9hcmdzKHNlbGYpOgotCisgICAgZGVmIHRlc3RfZm9ybWF0X2FyZ3Moc2VsZikgLT4g
Tm9uZToKICAgICAgICAgZGVmIGZ1bmN0aW9uMSgpOgogICAgICAgICAgICAgcGFzcwogCi0gICAg
ICAgIGFzc2VydCBmaXh0dXJlcy5fZm9ybWF0X2FyZ3MoZnVuY3Rpb24xKSA9PSAiKCkiCisgICAg
ICAgIGFzc2VydCBfZm9ybWF0X2FyZ3MoZnVuY3Rpb24xKSA9PSAiKCkiCiAKICAgICAgICAgZGVm
IGZ1bmN0aW9uMihhcmcxKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBhc3NlcnQgZml4
dHVyZXMuX2Zvcm1hdF9hcmdzKGZ1bmN0aW9uMikgPT0gIihhcmcxKSIKKyAgICAgICAgYXNzZXJ0
IF9mb3JtYXRfYXJncyhmdW5jdGlvbjIpID09ICIoYXJnMSkiCiAKICAgICAgICAgZGVmIGZ1bmN0
aW9uMyhhcmcxLCBhcmcyPSJxd2UiKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBhc3Nl
cnQgZml4dHVyZXMuX2Zvcm1hdF9hcmdzKGZ1bmN0aW9uMykgPT0gIihhcmcxLCBhcmcyPSdxd2Un
KSIKKyAgICAgICAgYXNzZXJ0IF9mb3JtYXRfYXJncyhmdW5jdGlvbjMpID09ICIoYXJnMSwgYXJn
Mj0ncXdlJykiCiAKICAgICAgICAgZGVmIGZ1bmN0aW9uNChhcmcxLCAqYXJncywgKiprd2FyZ3Mp
OgogICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGFzc2VydCBmaXh0dXJlcy5fZm9ybWF0X2Fy
Z3MoZnVuY3Rpb240KSA9PSAiKGFyZzEsICphcmdzLCAqKmt3YXJncykiCisgICAgICAgIGFzc2Vy
dCBfZm9ybWF0X2FyZ3MoZnVuY3Rpb240KSA9PSAiKGFyZzEsICphcmdzLCAqKmt3YXJncykiCiAK
IAotY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgotCi0gICAgZGVmIHRlc3Rf
YXR0cmlidXRlcyhzZWxmLCB0ZXN0ZGlyKToKK2NsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWw6
CisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25l
OgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICAjIGFzc3VtZXMgdGhhdCBnZW5lcmF0ZS9wcm92aWRlIHJ1bnMgaW4gdGhlIHNhbWUg
cHJvY2VzcwogICAgICAgICAgICAgaW1wb3J0IHN5cywgcHl0ZXN0CiAgICAgICAgICAgICBkZWYg
cHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBtZXRhZnVu
Yy5hZGRjYWxsKHBhcmFtPW1ldGFmdW5jKQorICAgICAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFt
ZXRyaXplKCdtZXRhZnVuYycsIFttZXRhZnVuY10pCiAKICAgICAgICAgICAgIEBweXRlc3QuZml4
dHVyZQogICAgICAgICAgICAgZGVmIG1ldGFmdW5jKHJlcXVlc3QpOgotICAgICAgICAgICAgICAg
IGFzc2VydCByZXF1ZXN0Ll9weWZ1bmNpdGVtLl9nZW5pZCA9PSAiMCIKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVxdWVzdC5wYXJhbQogCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbiht
ZXRhZnVuYywgcHl0ZXN0Y29uZmlnKToKQEAgLTg4NCwxMSArMTAwMCw3IEBAIGNsYXNzIFRlc3RN
ZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgICAgICAgICBkZWYgdGVzdF9tZXRo
b2Qoc2VsZiwgbWV0YWZ1bmMsIHB5dGVzdGNvbmZpZyk6CiAgICAgICAgICAgICAgICAgICAgIGFz
c2VydCBtZXRhZnVuYy5jb25maWcgPT0gcHl0ZXN0Y29uZmlnCiAgICAgICAgICAgICAgICAgICAg
IGFzc2VydCBtZXRhZnVuYy5tb2R1bGUuX19uYW1lX18gPT0gX19uYW1lX18KLSAgICAgICAgICAg
ICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVuYm91bmQgPSBUZXN0Q2xhc3MudGVzdF9tZXRob2QKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuYm91bmQgPSBUZXN0Q2xhc3MudGVz
dF9tZXRob2QuaW1fZnVuYwotICAgICAgICAgICAgICAgICAgICAjIFhYWCBhY3R1YWxseSBoYXZl
IGFuIHVuYm91bmQgdGVzdCBmdW5jdGlvbiBoZXJlPworICAgICAgICAgICAgICAgICAgICB1bmJv
dW5kID0gVGVzdENsYXNzLnRlc3RfbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBt
ZXRhZnVuYy5mdW5jdGlvbiA9PSB1bmJvdW5kCiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBt
ZXRhZnVuYy5jbHMgPT0gVGVzdENsYXNzCiAgICAgICAgICIiIgpAQCAtODk2LDQzICsxMDA4LDE1
IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi12IikKICAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRj
b21lcyhwYXNzZWQ9MikKIAotICAgIGRlZiB0ZXN0X2FkZGNhbGxfd2l0aF90d29fZnVuY2FyZ3Nf
Z2VuZXJhdG9ycyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3Qo
Ci0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMo
bWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgIGFzc2VydCAiYXJnMSIgaW4gbWV0YWZ1bmMuZml4
dHVyZW5hbWVzCi0gICAgICAgICAgICAgICAgbWV0YWZ1bmMuYWRkY2FsbChmdW5jYXJncz1kaWN0
KGFyZzE9MSwgYXJnMj0yKSkKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHB5dGVz
dF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgICAgICAgICAgbWV0YWZ1bmMuYWRk
Y2FsbChmdW5jYXJncz1kaWN0KGFyZzE9MSwgYXJnMj0xKSkKLQotICAgICAgICAgICAgY2xhc3Mg
VGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfbXlmdW5jKHNlbGYs
IGFyZzEsIGFyZzIpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYXJnMSA9PSBhcmcyCi0g
ICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItdiIsIHApCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAg
ICAgIFsiKnRlc3RfbXlmdW5jKjAqUEFTUyoiLCAiKnRlc3RfbXlmdW5jKjEqRkFJTCoiLCAiKjEg
ZmFpbGVkLCAxIHBhc3NlZCoiXQotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF90d29fZnVuY3Rp
b25zKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3R3b19mdW5jdGlvbnMoc2VsZiwgdGVz
dGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyht
ZXRhZnVuYyk6Ci0gICAgICAgICAgICAgICAgbWV0YWZ1bmMuYWRkY2FsbChwYXJhbT0xMCkKLSAg
ICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHBhcmFtPTIwKQotCi0gICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgICAgIGRl
ZiBhcmcxKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnBhcmFtCisg
ICAgICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoJ2FyZzEnLCBbMTAsIDIwXSwgaWRz
PVsnMCcsICcxJ10pCiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMxKGFyZzEpOgogICAgICAg
ICAgICAgICAgIGFzc2VydCBhcmcxID09IDEwCisKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMy
KGFyZzEpOgogICAgICAgICAgICAgICAgIGFzc2VydCBhcmcxIGluICgxMCwgMjApCiAgICAgICAg
ICIiIgpAQCAtOTQzLDExICsxMDI3LDEyIEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwo
b2JqZWN0KToKICAgICAgICAgICAgICAgICAiKnRlc3RfZnVuYzEqMCpQQVNTKiIsCiAgICAgICAg
ICAgICAgICAgIip0ZXN0X2Z1bmMxKjEqRkFJTCoiLAogICAgICAgICAgICAgICAgICIqdGVzdF9m
dW5jMipQQVNTKiIsCisgICAgICAgICAgICAgICAgIip0ZXN0X2Z1bmMyKlBBU1MqIiwKICAgICAg
ICAgICAgICAgICAiKjEgZmFpbGVkLCAzIHBhc3NlZCoiLAogICAgICAgICAgICAgXQogICAgICAg
ICApCiAKLSAgICBkZWYgdGVzdF9ub3NlbGZfaW5fbWV0aG9kKHNlbGYsIHRlc3RkaXIpOgorICAg
IGRlZiB0ZXN0X25vc2VsZl9pbl9tZXRob2Qoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9u
ZToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAg
ICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6CkBAIC05NjEsNDcg
KzEwNDYsMTIgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICByZXN1bHQuYXNzZXJ0X291
dGNvbWVzKHBhc3NlZD0xKQogCi0gICAgZGVmIHRlc3RfZ2VuZXJhdGVfcGx1Z2luX2FuZF9tb2R1
bGUoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5j
KToKLSAgICAgICAgICAgICAgICBhc3NlcnQgImFyZzEiIGluIG1ldGFmdW5jLmZpeHR1cmVuYW1l
cwotICAgICAgICAgICAgICAgIG1ldGFmdW5jLmFkZGNhbGwoaWQ9IndvcmxkIiwgcGFyYW09KDIs
MTAwKSkKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90
ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgICAgICAgICAgbWV0YWZ1bmMuYWRkY2FsbChwYXJhbT0o
MSwxKSwgaWQ9ImhlbGxvIikKLQotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAg
ICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYgYXJnMShyZXF1ZXN0KToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXJhbVswXQotICAgICAgICAgICAgQHB5dGVzdC5m
aXh0dXJlCi0gICAgICAgICAgICBkZWYgYXJnMihyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVxdWVzdC5wYXJhbVsxXQotCi0gICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2Jq
ZWN0KToKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9teWZ1bmMoc2VsZiwgYXJnMSwgYXJnMik6
Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBhcmcxID09IGFyZzIKLSAgICAgICAgIiIiCi0g
ICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgcCkKLSAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICIqdGVzdF9teWZ1bmMqaGVsbG8qUEFTUyoiLAotICAgICAgICAgICAgICAgICIq
dGVzdF9teWZ1bmMqd29ybGQqRkFJTCoiLAotICAgICAgICAgICAgICAgICIqMSBmYWlsZWQsIDEg
cGFzc2VkKiIsCi0gICAgICAgICAgICBdCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2dlbmVy
YXRlX3Rlc3RzX2luX2NsYXNzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2dlbmVyYXRl
X3Rlc3RzX2luX2NsYXNzKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGNs
YXNzIFRlc3RDbGFzcyhvYmplY3QpOgogICAgICAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJh
dGVfdGVzdHMoc2VsZiwgbWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgICAgICBtZXRhZnVuYy5h
ZGRjYWxsKGZ1bmNhcmdzPXsnaGVsbG8nOiAnd29ybGQnfSwgaWQ9ImhlbGxvIikKKyAgICAgICAg
ICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoJ2hlbGxvJywgWyd3b3JsZCddLCBpZHM9
WydoZWxsb3cnXSkKIAogICAgICAgICAgICAgICAgIGRlZiB0ZXN0X215ZnVuYyhzZWxmLCBoZWxs
byk6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBoZWxsbyA9PSAid29ybGQiCkBAIC0xMDEw
LDEyICsxMDYwLDExIEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgcCkKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3RfbXlmdW5jKmhlbGxvKlBBU1MqIiwgIioxIHBh
c3NlZCoiXSkKIAotICAgIGRlZiB0ZXN0X3R3b19mdW5jdGlvbnNfbm90X3NhbWVfaW5zdGFuY2Uo
c2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfdHdvX2Z1bmN0aW9uc19ub3Rfc2FtZV9pbnN0
YW5jZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBwID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2dl
bmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxs
KHsnYXJnMSc6IDEwfSkKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKHsnYXJnMSc6
IDIwfSkKKyAgICAgICAgICAgICAgICBtZXRhZnVuYy5wYXJhbWV0cml6ZSgnYXJnMScsIFsxMCwg
MjBdLCBpZHM9WyIwIiwgIjEiXSkKIAogICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfZnVuYyhzZWxmLCBhcmcxKToKQEAgLTEwMjgs
MTEgKzEwNzcsMTEgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAg
ICAgICAgICAgWyIqdGVzdF9mdW5jKjAqUEFTUyoiLCAiKnRlc3RfZnVuYyoxKlBBU1MqIiwgIioy
IHBhc3MqIl0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfaXNzdWUyOF9zZXR1cF9tZXRob2Rf
aW5fZ2VuZXJhdGVfdGVzdHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfaXNzdWUyOF9z
ZXR1cF9tZXRob2RfaW5fZ2VuZXJhdGVfdGVzdHMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgog
ICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAg
ICAgICAgICAgbWV0YWZ1bmMuYWRkY2FsbCh7J2FyZzEnOiAxfSkKKyAgICAgICAgICAgICAgICBt
ZXRhZnVuYy5wYXJhbWV0cml6ZSgnYXJnMScsIFsxXSkKIAogICAgICAgICAgICAgY2xhc3MgVGVz
dENsYXNzKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYsIGFy
ZzEpOgpAQCAtMTA0NCw3ICsxMDkzLDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChv
YmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICBy
ZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0xKQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJp
emVfZnVuY3Rpb25hbDIoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVf
ZnVuY3Rpb25hbDIoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcHl0ZXN0
X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKQEAgLTEwNTksNyArMTEwOCw3IEBAIGNsYXNzIFRl
c3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgICAgIFsiKigxLCA0KSoiLCAi
KigxLCA1KSoiLCAiKigyLCA0KSoiLCAiKigyLCA1KSoiLCAiKjQgZmFpbGVkKiJdCiAgICAgICAg
ICkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2FuZF9pbm5lcl9nZXRmaXh0dXJldmFsdWUo
c2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYW5kX2lubmVyX2dldGZp
eHR1cmV2YWx1ZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBwID0g
dGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgcHl0
ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKQEAgLTEwODMsNyArMTEzMiw3IEBAIGNsYXNz
IFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi12IiwgcCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKnRlc3RfZnVuYzEqMSpQQVNTKiIsICIqMSBwYXNzZWQqIl0pCiAKLSAgICBkZWYgdGVzdF9w
YXJhbWV0cml6ZV9vbl9zZXR1cF9hcmcoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFy
YW1ldHJpemVfb25fc2V0dXBfYXJnKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAg
ICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAg
ICAgIGRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgpAQCAtMTEwNiw3ICsxMTU1
LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCBwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqdGVzdF9mdW5jKjEqUEFTUyoiLCAiKjEgcGFzc2VkKiJdKQogCi0gICAg
ZGVmIHRlc3RfcGFyYW1ldHJpemVfd2l0aF9pZHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRl
c3RfcGFyYW1ldHJpemVfd2l0aF9pZHMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToK
ICAgICAgICAgdGVzdGRpci5tYWtlaW5pKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBb
cHl0ZXN0XQpAQCAtMTEzMCw3ICsxMTc5LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25h
bChvYmplY3QpOgogICAgICAgICAgICAgWyIqdGVzdF9mdW5jdGlvbipiYXNpYypQQVNTRUQiLCAi
KnRlc3RfZnVuY3Rpb24qYWR2YW5jZWQqRkFJTEVEIl0KICAgICAgICAgKQogCi0gICAgZGVmIHRl
c3RfcGFyYW1ldHJpemVfd2l0aG91dF9pZHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rf
cGFyYW1ldHJpemVfd2l0aG91dF9pZHMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CkBAIC0xMTUwLDcgKzExOTksNyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNG
dW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAKLSAgICBkZWYgdGVz
dF9wYXJhbWV0cml6ZV93aXRoX05vbmVfaW5faWRzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX3dpdGhfTm9uZV9pbl9pZHMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikg
LT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xMTcyLDcgKzEyMjEsNyBAQCBjbGFzcyBUZXN0
TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAot
ICAgIGRlZiB0ZXN0X2ZpeHR1cmVfcGFyYW1ldHJpemVkX2VtcHR5X2lkcyhzZWxmLCB0ZXN0ZGly
KToKKyAgICBkZWYgdGVzdF9maXh0dXJlX3BhcmFtZXRyaXplZF9lbXB0eV9pZHMoc2VsZiwgdGVz
dGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgIiIiRml4dHVyZXMgcGFyYW1ldHJpemVk
IHdpdGggZW1wdHkgaWRzIGNhdXNlIGFuIGludGVybmFsIGVycm9yICgjMTg0OSkuIiIiCiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtMTE4OSw3ICsxMjM4
LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiogMSBza2lwcGVkICoiXSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplZF9lbXB0
eV9pZHMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVkX2VtcHR5X2lk
cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICAiIiJUZXN0cyBwYXJh
bWV0cml6ZWQgd2l0aCBlbXB0eSBpZHMgY2F1c2UgYW4gaW50ZXJuYWwgZXJyb3IgKCMxODQ5KS4i
IiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC0xMjAz
LDIzICsxMjUyLDI4IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqIDEgc2tpcHBlZCAqIl0pCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0
cml6ZWRfaWRzX2ludmFsaWRfdHlwZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiVGVzdHMg
cGFyYW1ldHJpemVkIHdpdGggaWRzIGFzIG5vbi1zdHJpbmdzICgjMTg1NykuIiIiCisgICAgZGVm
IHRlc3RfcGFyYW1ldHJpemVkX2lkc19pbnZhbGlkX3R5cGUoc2VsZiwgdGVzdGRpcjogVGVzdGRp
cikgLT4gTm9uZToKKyAgICAgICAgIiIiVGVzdCBlcnJvciB3aXRoIG5vbi1zdHJpbmdzL25vbi1p
bnRzLCB3aXRob3V0IGdlbmVyYXRvciAoIzE4NTcpLiIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKIAotICAg
ICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJ4LCBleHBlY3RlZCIsIFsoMTAsIDIw
KSwgKDQwLCA4MCldLCBpZHM9KE5vbmUsIDIpKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJ4LCBleHBlY3RlZCIsIFsoMSwgMiksICgzLCA0KSwgKDUsIDYpXSwgaWRzPShO
b25lLCAyLCB0eXBlKSkKICAgICAgICAgICAgIGRlZiB0ZXN0X2lkc19udW1iZXJzKHgsZXhwZWN0
ZWQpOgogICAgICAgICAgICAgICAgIGFzc2VydCB4ICogMiA9PSBleHBlY3RlZAogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgIFsiKmlkcyBtdXN0
IGJlIGxpc3Qgb2Ygc3RyaW5ncywgZm91bmQ6IDIgKHR5cGU6IGludCkqIl0KKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAiSW4gdGVzdF9pZHNfbnVtYmVyczogaWRzIG11c3QgYmUgbGlz
dCBvZiBzdHJpbmcvZmxvYXQvaW50L2Jvb2wsIgorICAgICAgICAgICAgICAgICIgZm91bmQ6IDxj
bGFzcyAndHlwZSc+ICh0eXBlOiA8Y2xhc3MgJ3R5cGUnPikgYXQgaW5kZXggMiIKKyAgICAgICAg
ICAgIF0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfd2l0aF9pZGVudGlj
YWxfaWRzX2dldF91bmlxdWVfbmFtZXMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFy
YW1ldHJpemVfd2l0aF9pZGVudGljYWxfaWRzX2dldF91bmlxdWVfbmFtZXMoCisgICAgICAgIHNl
bGYsIHRlc3RkaXI6IFRlc3RkaXIKKyAgICApIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAt
MTIzOCwxMyArMTI5MiwxNSBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNGdW5jdGlvbmFsKG9iamVjdCk6
CiAgICAgICAgICkKIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoInNjb3BlIiwgImxl
bmd0aCIpLCBbKCJtb2R1bGUiLCAyKSwgKCJmdW5jdGlvbiIsIDQpXSkKLSAgICBkZWYgdGVzdF9w
YXJhbWV0cml6ZV9zY29wZV9vdmVycmlkZXMoc2VsZiwgdGVzdGRpciwgc2NvcGUsIGxlbmd0aCk6
CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfc2NvcGVfb3ZlcnJpZGVzKAorICAgICAgICBzZWxm
LCB0ZXN0ZGlyOiBUZXN0ZGlyLCBzY29wZTogc3RyLCBsZW5ndGg6IGludAorICAgICkgLT4gTm9u
ZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICB2YWx1ZXMgPSBbXQogICAgICAgICAgICAg
ZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgICAgICAgICAgICAgaWYg
ImFyZyIgaW4gbWV0YWZ1bmMuZnVuY2FyZ25hbWVzOgorICAgICAgICAgICAgICAgIGlmICJhcmci
IGluIG1ldGFmdW5jLmZpeHR1cmVuYW1lczoKICAgICAgICAgICAgICAgICAgICAgbWV0YWZ1bmMu
cGFyYW1ldHJpemUoImFyZyIsIFsxLDJdLCBpbmRpcmVjdD1UcnVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZT0lcikKICAgICAgICAgICAgIEBweXRlc3Qu
Zml4dHVyZQpAQCAtMTI2Myw3ICsxMzE5LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25h
bChvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQogICAgICAg
ICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9NSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRy
aXplX2lzc3VlMzIzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2lz
c3VlMzIzKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApA
QCAtMTI4MSw3ICsxMzM3LDcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3Qp
OgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi0tY29sbGVjdC1vbmx5IikK
ICAgICAgICAgYXNzZXJ0IG5vdCByZXByZWMuZ2V0Y2FsbHMoInB5dGVzdF9pbnRlcm5hbGVycm9y
IikKIAotICAgIGRlZiB0ZXN0X3VzZWZpeHR1cmVzX3NlZW5faW5fZ2VuZXJhdGVfdGVzdHMoc2Vs
ZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfdXNlZml4dHVyZXNfc2Vlbl9pbl9nZW5lcmF0ZV90
ZXN0cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAg
LTEyOTcsMjMgKzEzNTMsMjMgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3Qp
OgogICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlcHJlYy5h
c3NlcnRfb3V0Y29tZXMocGFzc2VkPTEpCiAKLSAgICBkZWYgdGVzdF9nZW5lcmF0ZV90ZXN0c19v
bmx5X2RvbmVfaW5fc3ViZGlyKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2dlbmVyYXRl
X3Rlc3RzX29ubHlfZG9uZV9pbl9zdWJkaXIoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9u
ZToKICAgICAgICAgc3ViMSA9IHRlc3RkaXIubWtweWRpcigic3ViMSIpCiAgICAgICAgIHN1YjIg
PSB0ZXN0ZGlyLm1rcHlkaXIoInN1YjIiKQogICAgICAgICBzdWIxLmpvaW4oImNvbmZ0ZXN0LnB5
Iikud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAg
IHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAg
ZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydCBtZXRhZnVuYy5mdW5jdGlvbi5fX25hbWVfXyA9PSAidGVzdF8xIgogICAgICAgICAg
ICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVu
Yyk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmZ1bmN0aW9uLl9fbmFtZV9fID09
ICJ0ZXN0XzEiCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAg
IHN1YjIuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2Nv
ZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAg
ICIiIlwKKyAgICAgICAgICAgICAgICBkZWYgcHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5j
KToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGFmdW5jLmZ1bmN0aW9uLl9fbmFtZV9f
ID09ICJ0ZXN0XzIiCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0ZXN0
X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgbWV0YWZ1
bmMuZnVuY3Rpb24uX19uYW1lX18gPT0gInRlc3RfMiIKLSAgICAgICAgIiIiCiAgICAgICAgICAg
ICApCiAgICAgICAgICkKICAgICAgICAgc3ViMS5qb2luKCJ0ZXN0X2luX3N1YjEucHkiKS53cml0
ZSgiZGVmIHRlc3RfMSgpOiBwYXNzIikKQEAgLTEzMjEsNyArMTM3Nyw3IEBAIGNsYXNzIFRlc3RN
ZXRhZnVuY0Z1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0ta2VlcC1kdXBsaWNhdGVzIiwgIi12IiwgIi1zIiwgc3ViMSwgc3ViMiwgc3ViMSkK
ICAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MykKIAotICAgIGRlZiB0ZXN0
X2dlbmVyYXRlX3NhbWVfZnVuY3Rpb25fbmFtZXNfaXNzdWU0MDMoc2VsZiwgdGVzdGRpcik6Cisg
ICAgZGVmIHRlc3RfZ2VuZXJhdGVfc2FtZV9mdW5jdGlvbl9uYW1lc19pc3N1ZTQwMyhzZWxmLCB0
ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTEzMzksMzUgKzEz
OTUsMzggQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICBy
ZXByZWMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRfb3V0Y29t
ZXMocGFzc2VkPTQpCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWU0NjMKLSAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoImF0dHIiLCBbInBhcmFtZXRyaXNlIiwgInBhcmFtZXRlcml6ZSIsICJw
YXJhbWV0ZXJpc2UiXSkKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9taXNzcGVsbGluZyhzZWxm
LCB0ZXN0ZGlyLCBhdHRyKToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9taXNzcGVsbGluZyhz
ZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiIjNDYzIiIiCiAgICAg
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAogCi0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsue30oIngiLCByYW5nZSgyKSkK
KyAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cmlzZSgieCIsIHJhbmdlKDIpKQogICAg
ICAgICAgICAgZGVmIHRlc3RfZm9vKHgpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAg
IiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBhdHRyCi0gICAgICAgICAgICApCisgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLS1j
b2xsZWN0b25seSIpCi0gICAgICAgIGZhaWx1cmVzID0gcmVwcmVjLmdldGZhaWx1cmVzKCkKLSAg
ICAgICAgYXNzZXJ0IGxlbihmYWlsdXJlcykgPT0gMQotICAgICAgICBleHBlY3RlZGVycm9yID0g
Ik1hcmtlckVycm9yOiB0ZXN0X2ZvbyBoYXMgJ3t9Jywgc3BlbGxpbmcgc2hvdWxkIGJlICdwYXJh
bWV0cml6ZSciLmZvcm1hdCgKLSAgICAgICAgICAgIGF0dHIKKyAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoIi0tY29sbGVjdG9ubHkiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAw
IGl0ZW1zIC8gMSBlcnJvciIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAg
Iio9IEVSUk9SUyA9KiIsCisgICAgICAgICAgICAgICAgIipfIEVSUk9SIGNvbGxlY3RpbmcgdGVz
dF9wYXJhbWV0cml6ZV9taXNzcGVsbGluZy5weSBfKiIsCisgICAgICAgICAgICAgICAgInRlc3Rf
cGFyYW1ldHJpemVfbWlzc3BlbGxpbmcucHk6MzogaW4gPG1vZHVsZT4iLAorICAgICAgICAgICAg
ICAgICcgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXNlKCJ4IiwgcmFuZ2UoMikpJywKKyAgICAg
ICAgICAgICAgICAiRSAgIEZhaWxlZDogVW5rbm93biAncGFyYW1ldHJpc2UnIG1hcmssIGRpZCB5
b3UgbWVhbiAncGFyYW1ldHJpemUnPyIsCisgICAgICAgICAgICAgICAgIiohIEludGVycnVwdGVk
OiAxIGVycm9yIGR1cmluZyBjb2xsZWN0aW9uICEqIiwKKyAgICAgICAgICAgICAgICAiKj0gMSBl
cnJvciBpbiAqIiwKKyAgICAgICAgICAgIF0KICAgICAgICAgKQotICAgICAgICBhc3NlcnQgZXhw
ZWN0ZWRlcnJvciBpbiBmYWlsdXJlc1swXS5sb25ncmVwci5yZXByY3Jhc2gubWVzc2FnZQogCiAK
LWNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWxBdXRvKG9iamVjdCk6Ci0gICAgIiIiCi0gICAg
VGVzdHMgcmVsYXRlZCB0byBhdXRvbWF0aWNhbGx5IGZpbmQgb3V0IHRoZSBjb3JyZWN0IHNjb3Bl
IGZvciBwYXJhbWV0cml6ZWQgdGVzdHMgKCMxODMyKS4KLSAgICAiIiIKK2NsYXNzIFRlc3RNZXRh
ZnVuY0Z1bmN0aW9uYWxBdXRvOgorICAgICIiIlRlc3RzIHJlbGF0ZWQgdG8gYXV0b21hdGljYWxs
eSBmaW5kIG91dCB0aGUgY29ycmVjdCBzY29wZSBmb3IKKyAgICBwYXJhbWV0cml6ZWQgdGVzdHMg
KCMxODMyKS4iIiIKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2F1dG9fc2NvcGUoc2VsZiwg
dGVzdGRpcik6CisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYXV0b19zY29wZShzZWxmLCB0ZXN0
ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTEzODksNyArMTQ0OCw3
IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWxBdXRvKG9iamVjdCk6CiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKFsiKiAzIHBhc3NlZCAqIl0pCiAKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9hdXRv
X3Njb3BlX2luZGlyZWN0KHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXpl
X2F1dG9fc2NvcGVfaW5kaXJlY3Qoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CkBAIC0xNDEyLDcgKzE0NzEsNyBAQCBjbGFzcyBUZXN0TWV0YWZ1bmNGdW5j
dGlvbmFsQXV0byhvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMyBwYXNzZWQgKiJdKQog
Ci0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfYXV0b19zY29wZV9vdmVycmlkZV9maXh0dXJlKHNl
bGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2F1dG9fc2NvcGVfb3ZlcnJp
ZGVfZml4dHVyZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKQEAgLTE0MjksNyArMTQ4OCw3IEBAIGNsYXNzIFRlc3RNZXRhZnVuY0Z1bmN0aW9uYWxBdXRv
KG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAyIHBhc3NlZCAqIl0pCiAKLSAgICBkZWYg
dGVzdF9wYXJhbWV0cml6ZV9hbGxfaW5kaXJlY3RzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X3BhcmFtZXRyaXplX2FsbF9pbmRpcmVjdHMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xNDU2LDcgKzE1MTUsNDIgQEAgY2xhc3MgVGVzdE1l
dGFmdW5jRnVuY3Rpb25hbEF1dG8ob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDMgcGFz
c2VkICoiXSkKIAotICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2lzc3VlNjM0KHNlbGYsIHRlc3Rk
aXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX3NvbWVfYXJndW1lbnRzX2F1dG9fc2NvcGUo
CisgICAgICAgIHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIsIG1vbmtleXBhdGNoCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiJJbnRlZ3JhdGlvbiB0ZXN0IGZvciAoIzM5NDEpIiIiCisgICAgICAg
IGNsYXNzX2ZpeF9zZXR1cCA9IFtdICAjIHR5cGU6IExpc3Rbb2JqZWN0XQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHN5cywgImNsYXNzX2ZpeF9zZXR1cCIsIGNsYXNzX2ZpeF9zZXR1cCwg
cmFpc2luZz1GYWxzZSkKKyAgICAgICAgZnVuY19maXhfc2V0dXAgPSBbXSAgIyB0eXBlOiBMaXN0
W29iamVjdF0KKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJmdW5jX2ZpeF9zZXR1
cCIsIGZ1bmNfZml4X3NldHVwLCByYWlzaW5nPUZhbHNlKQorCisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAg
ICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9
J2NsYXNzJywgYXV0b3VzZT1UcnVlKQorICAgICAgICAgICAgZGVmIGNsYXNzX2ZpeChyZXF1ZXN0
KToKKyAgICAgICAgICAgICAgICBzeXMuY2xhc3NfZml4X3NldHVwLmFwcGVuZChyZXF1ZXN0LnBh
cmFtKQorCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQorICAgICAg
ICAgICAgZGVmIGZ1bmNfZml4KCk6CisgICAgICAgICAgICAgICAgc3lzLmZ1bmNfZml4X3NldHVw
LmFwcGVuZChUcnVlKQorCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ2Ns
YXNzX2ZpeCcsIFsxMCwgMjBdLCBpbmRpcmVjdD1UcnVlKQorICAgICAgICAgICAgY2xhc3MgVGVz
dDoKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgICAgICAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9iYXIoc2VsZik6CisgICAgICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIiogNCBwYXNzZWQgaW4gKiJdKQorICAgICAgICBhc3NlcnQgZnVuY19m
aXhfc2V0dXAgPT0gW1RydWVdICogNAorICAgICAgICBhc3NlcnQgY2xhc3NfZml4X3NldHVwID09
IFsxMCwgMjBdCisKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9pc3N1ZTYzNChzZWxmLCB0ZXN0
ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTE0OTEsMTggKzE1ODUs
MTcgQEAgY2xhc3MgVGVzdE1ldGFmdW5jRnVuY3Rpb25hbEF1dG8ob2JqZWN0KToKICAgICAgICAg
YXNzZXJ0IG91dHB1dC5jb3VudCgicHJlcGFyaW5nIGZvby0zIikgPT0gMQogCiAKLUBweXRlc3Qu
bWFyay5maWx0ZXJ3YXJuaW5ncygiaWdub3JlOkFwcGx5aW5nIG1hcmtzIGRpcmVjdGx5IHRvIHBh
cmFtZXRlcnMiKQotQHB5dGVzdC5tYXJrLmlzc3VlMzA4Ci1jbGFzcyBUZXN0TWFya2Vyc1dpdGhQ
YXJhbWV0cml6YXRpb24ob2JqZWN0KToKK2NsYXNzIFRlc3RNYXJrZXJzV2l0aFBhcmFtZXRyaXph
dGlvbjoKKyAgICAiIiIjMzA4IiIiCiAKLSAgICBkZWYgdGVzdF9zaW1wbGVfbWFyayhzZWxmLCB0
ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9zaW1wbGVfbWFyayhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGly
KSAtPiBOb25lOgogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAK
ICAgICAgICAgICAgIEBweXRlc3QubWFyay5mb28KICAgICAgICAgICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgoIm4iLCAiZXhwZWN0ZWQiKSwgWwogICAgICAgICAgICAgICAgICgxLCAyKSwK
LSAgICAgICAgICAgICAgICBweXRlc3QubWFyay5iYXIoKDEsIDMpKSwKKyAgICAgICAgICAgICAg
ICBweXRlc3QucGFyYW0oMSwgMywgbWFya3M9cHl0ZXN0Lm1hcmsuYmFyKSwKICAgICAgICAgICAg
ICAgICAoMiwgMyksCiAgICAgICAgICAgICBdKQogICAgICAgICAgICAgZGVmIHRlc3RfaW5jcmVt
ZW50KG4sIGV4cGVjdGVkKToKQEAgLTE1MTYsMTMgKzE2MDksMTMgQEAgY2xhc3MgVGVzdE1hcmtl
cnNXaXRoUGFyYW1ldHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCAiYmFyIiBpbiBp
dGVtc1sxXS5rZXl3b3JkcwogICAgICAgICBhc3NlcnQgImJhciIgbm90IGluIGl0ZW1zWzJdLmtl
eXdvcmRzCiAKLSAgICBkZWYgdGVzdF9zZWxlY3RfYmFzZWRfb25fbWFyayhzZWxmLCB0ZXN0ZGly
KToKKyAgICBkZWYgdGVzdF9zZWxlY3RfYmFzZWRfb25fbWFyayhzZWxmLCB0ZXN0ZGlyOiBUZXN0
ZGlyKSAtPiBOb25lOgogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
CiAKICAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoIm4iLCAiZXhwZWN0ZWQi
KSwgWwogICAgICAgICAgICAgICAgICgxLCAyKSwKLSAgICAgICAgICAgICAgICBweXRlc3QubWFy
ay5mb28oKDIsIDMpKSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oMiwgMywgbWFya3M9
cHl0ZXN0Lm1hcmsuZm9vKSwKICAgICAgICAgICAgICAgICAoMywgNCksCiAgICAgICAgICAgICBd
KQogICAgICAgICAgICAgZGVmIHRlc3RfaW5jcmVtZW50KG4sIGV4cGVjdGVkKToKQEAgLTE1MzUs
MzQgKzE2MjgsMTMgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9iamVj
dCk6CiAgICAgICAgIGFzc2VydCBsZW4oc2tpcHBlZCkgPT0gMAogICAgICAgICBhc3NlcnQgbGVu
KGZhaWwpID09IDAKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChyZWFzb249ImlzIHRoaXMgaW1w
b3J0YW50IHRvIHN1cHBvcnQ/PyIpCi0gICAgZGVmIHRlc3RfbmVzdGVkX21hcmtzKHNlbGYsIHRl
c3RkaXIpOgorICAgIGRlZiB0ZXN0X3NpbXBsZV94ZmFpbChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGly
KSAtPiBOb25lOgogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0g
ICAgICAgICAgICBtYXN0ZXJtYXJrID0gcHl0ZXN0Lm1hcmsuZm9vKHB5dGVzdC5tYXJrLmJhcikK
IAogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIp
LCBbCiAgICAgICAgICAgICAgICAgKDEsIDIpLAotICAgICAgICAgICAgICAgIG1hc3Rlcm1hcmso
KDEsIDMpKSwKLSAgICAgICAgICAgICAgICAoMiwgMyksCi0gICAgICAgICAgICBdKQotICAgICAg
ICAgICAgZGVmIHRlc3RfaW5jcmVtZW50KG4sIGV4cGVjdGVkKToKLSAgICAgICAgICAgICAgICBh
c3NlcnQgbiArIDEgPT0gZXhwZWN0ZWQKLSAgICAgICAgIiIiCi0gICAgICAgIGl0ZW1zID0gdGVz
dGRpci5nZXRpdGVtcyhzKQotICAgICAgICBhc3NlcnQgbGVuKGl0ZW1zKSA9PSAzCi0gICAgICAg
IGZvciBtYXJrIGluIFsiZm9vIiwgImJhciJdOgotICAgICAgICAgICAgYXNzZXJ0IG1hcmsgbm90
IGluIGl0ZW1zWzBdLmtleXdvcmRzCi0gICAgICAgICAgICBhc3NlcnQgbWFyayBpbiBpdGVtc1sx
XS5rZXl3b3JkcwotICAgICAgICAgICAgYXNzZXJ0IG1hcmsgbm90IGluIGl0ZW1zWzJdLmtleXdv
cmRzCi0KLSAgICBkZWYgdGVzdF9zaW1wbGVfeGZhaWwoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAg
IHMgPSAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLQotICAgICAgICAgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIpLCBbCi0gICAgICAgICAgICAgICAg
KDEsIDIpLAotICAgICAgICAgICAgICAgIHB5dGVzdC5tYXJrLnhmYWlsKCgxLCAzKSksCisgICAg
ICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKDEsIDMsIG1hcmtzPXB5dGVzdC5tYXJrLnhmYWlsKSwK
ICAgICAgICAgICAgICAgICAoMiwgMyksCiAgICAgICAgICAgICBdKQogICAgICAgICAgICAgZGVm
IHRlc3RfaW5jcmVtZW50KG4sIGV4cGVjdGVkKToKQEAgLTE1NzMsMTMgKzE2NDUsMTMgQEAgY2xh
c3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgICMgeGZh
aWwgaXMgc2tpcD8/CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yLCBza2lw
cGVkPTEpCiAKLSAgICBkZWYgdGVzdF9zaW1wbGVfeGZhaWxfc2luZ2xlX2FyZ25hbWUoc2VsZiwg
dGVzdGRpcik6CisgICAgZGVmIHRlc3Rfc2ltcGxlX3hmYWlsX3NpbmdsZV9hcmduYW1lKHNlbGYs
IHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHMgPSAiIiIKICAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKIAogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJu
IiwgWwogICAgICAgICAgICAgICAgIDIsCi0gICAgICAgICAgICAgICAgcHl0ZXN0Lm1hcmsueGZh
aWwoMyksCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKDMsIG1hcmtzPXB5dGVzdC5tYXJr
LnhmYWlsKSwKICAgICAgICAgICAgICAgICA0LAogICAgICAgICAgICAgXSkKICAgICAgICAgICAg
IGRlZiB0ZXN0X2lzRXZlbihuKToKQEAgLTE1ODksMTMgKzE2NjEsMTMgQEAgY2xhc3MgVGVzdE1h
cmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3Rk
aXIuaW5saW5lX3J1bigpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yLCBz
a2lwcGVkPTEpCiAKLSAgICBkZWYgdGVzdF94ZmFpbF93aXRoX2FyZyhzZWxmLCB0ZXN0ZGlyKToK
KyAgICBkZWYgdGVzdF94ZmFpbF93aXRoX2FyZyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBO
b25lOgogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKICAgICAg
ICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoIm4iLCAiZXhwZWN0ZWQiKSwgWwogICAg
ICAgICAgICAgICAgICgxLCAyKSwKLSAgICAgICAgICAgICAgICBweXRlc3QubWFyay54ZmFpbCgi
VHJ1ZSIpKCgxLCAzKSksCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKDEsIDMsIG1hcmtz
PXB5dGVzdC5tYXJrLnhmYWlsKCJUcnVlIikpLAogICAgICAgICAgICAgICAgICgyLCAzKSwKICAg
ICAgICAgICAgIF0pCiAgICAgICAgICAgICBkZWYgdGVzdF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQp
OgpAQCAtMTYwNSwxMyArMTY3NywxMyBAQCBjbGFzcyBUZXN0TWFya2Vyc1dpdGhQYXJhbWV0cml6
YXRpb24ob2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKICAg
ICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIsIHNraXBwZWQ9MSkKIAotICAgIGRl
ZiB0ZXN0X3hmYWlsX3dpdGhfa3dhcmcoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfeGZh
aWxfd2l0aF9rd2FyZyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBz
ID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKICAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgoIm4iLCAiZXhwZWN0ZWQiKSwgWwogICAgICAgICAgICAgICAgICgx
LCAyKSwKLSAgICAgICAgICAgICAgICBweXRlc3QubWFyay54ZmFpbChyZWFzb249InNvbWUgYnVn
IikoKDEsIDMpKSwKKyAgICAgICAgICAgICAgICBweXRlc3QucGFyYW0oMSwgMywgbWFya3M9cHl0
ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJzb21lIGJ1ZyIpKSwKICAgICAgICAgICAgICAgICAoMiwg
MyksCiAgICAgICAgICAgICBdKQogICAgICAgICAgICAgZGVmIHRlc3RfaW5jcmVtZW50KG4sIGV4
cGVjdGVkKToKQEAgLTE2MjEsMTMgKzE2OTMsMTMgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFy
YW1ldHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1
bigpCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yLCBza2lwcGVkPTEpCiAK
LSAgICBkZWYgdGVzdF94ZmFpbF93aXRoX2FyZ19hbmRfa3dhcmcoc2VsZiwgdGVzdGRpcik6Cisg
ICAgZGVmIHRlc3RfeGZhaWxfd2l0aF9hcmdfYW5kX2t3YXJnKHNlbGYsIHRlc3RkaXI6IFRlc3Rk
aXIpIC0+IE5vbmU6CiAgICAgICAgIHMgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QK
IAogICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCgibiIsICJleHBlY3RlZCIp
LCBbCiAgICAgICAgICAgICAgICAgKDEsIDIpLAotICAgICAgICAgICAgICAgIHB5dGVzdC5tYXJr
LnhmYWlsKCJUcnVlIiwgcmVhc29uPSJzb21lIGJ1ZyIpKCgxLCAzKSksCisgICAgICAgICAgICAg
ICAgcHl0ZXN0LnBhcmFtKDEsIDMsIG1hcmtzPXB5dGVzdC5tYXJrLnhmYWlsKCJUcnVlIiwgcmVh
c29uPSJzb21lIGJ1ZyIpKSwKICAgICAgICAgICAgICAgICAoMiwgMyksCiAgICAgICAgICAgICBd
KQogICAgICAgICAgICAgZGVmIHRlc3RfaW5jcmVtZW50KG4sIGV4cGVjdGVkKToKQEAgLTE2Mzgs
MTMgKzE3MTAsMTUgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9iamVj
dCk6CiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yLCBza2lwcGVkPTEpCiAK
ICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInN0cmljdCIsIFtUcnVlLCBGYWxzZV0pCi0g
ICAgZGVmIHRlc3RfeGZhaWxfcGFzc2luZ19pc194cGFzcyhzZWxmLCB0ZXN0ZGlyLCBzdHJpY3Qp
OgorICAgIGRlZiB0ZXN0X3hmYWlsX3Bhc3NpbmdfaXNfeHBhc3Moc2VsZiwgdGVzdGRpcjogVGVz
dGRpciwgc3RyaWN0OiBib29sKSAtPiBOb25lOgogICAgICAgICBzID0gIiIiCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CiAKKyAgICAgICAgICAgIG0gPSBweXRlc3QubWFyay54ZmFpbCgic3lz
LnZlcnNpb25faW5mbyA+ICgwLCAwLCAwKSIsIHJlYXNvbj0ic29tZSBidWciLCBzdHJpY3Q9e3N0
cmljdH0pCisKICAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoIm4iLCAiZXhw
ZWN0ZWQiKSwgWwogICAgICAgICAgICAgICAgICgxLCAyKSwKLSAgICAgICAgICAgICAgICBweXRl
c3QubWFyay54ZmFpbCgic3lzLnZlcnNpb25faW5mbyA+ICgwLCAwLCAwKSIsIHJlYXNvbj0ic29t
ZSBidWciLCBzdHJpY3Q9e3N0cmljdH0pKCgyLCAzKSksCisgICAgICAgICAgICAgICAgcHl0ZXN0
LnBhcmFtKDIsIDMsIG1hcmtzPW0pLAogICAgICAgICAgICAgICAgICgzLCA0KSwKICAgICAgICAg
ICAgIF0pCiAgICAgICAgICAgICBkZWYgdGVzdF9pbmNyZW1lbnQobiwgZXhwZWN0ZWQpOgpAQCAt
MTY1Nyw3ICsxNzMxLDcgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9i
amVjdCk6CiAgICAgICAgIHBhc3NlZCwgZmFpbGVkID0gKDIsIDEpIGlmIHN0cmljdCBlbHNlICgz
LCAwKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9cGFzc2VkLCBmYWlsZWQ9
ZmFpbGVkKQogCi0gICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfY2FsbGVkX2luX2dlbmVyYXRlX3Rl
c3RzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3BhcmFtZXRyaXplX2NhbGxlZF9pbl9n
ZW5lcmF0ZV90ZXN0cyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBz
ID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKQEAgLTE2NjgsNyArMTc0Miw3IEBA
IGNsYXNzIFRlc3RNYXJrZXJzV2l0aFBhcmFtZXRyaXphdGlvbihvYmplY3QpOgogICAgICAgICAg
ICAgICAgIGZhaWxpbmdUZXN0RGF0YSA9IFsoMSwgMyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgyLCAyKV0KIAotICAgICAgICAgICAgICAgIHRlc3REYXRhID0gcGFzc2lu
Z1Rlc3REYXRhICsgW3B5dGVzdC5tYXJrLnhmYWlsKGQpCisgICAgICAgICAgICAgICAgdGVzdERh
dGEgPSBwYXNzaW5nVGVzdERhdGEgKyBbcHl0ZXN0LnBhcmFtKCpkLCBtYXJrcz1weXRlc3QubWFy
ay54ZmFpbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBmYWls
aW5nVGVzdERhdGFdCiAgICAgICAgICAgICAgICAgbWV0YWZ1bmMucGFyYW1ldHJpemUoKCJuIiwg
ImV4cGVjdGVkIiksIHRlc3REYXRhKQogCkBAIC0xNjgwLDggKzE3NTQsOCBAQCBjbGFzcyBUZXN0
TWFya2Vyc1dpdGhQYXJhbWV0cml6YXRpb24ob2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVz
dGRpci5pbmxpbmVfcnVuKCkKICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTIs
IHNraXBwZWQ9MikKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTI5MAotICAgIGRlZiB0ZXN0X3Bh
cmFtZXRyaXplX0lEX2dlbmVyYXRpb25fc3RyaW5nX2ludF93b3JrcyhzZWxmLCB0ZXN0ZGlyKToK
KyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9JRF9nZW5lcmF0aW9uX3N0cmluZ19pbnRfd29ya3Mo
c2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiIzI5MCIiIgogICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKQEAgLTE2OTksNyArMTc3Myw3IEBAIGNsYXNzIFRlc3RNYXJrZXJzV2l0aFBh
cmFtZXRyaXphdGlvbihvYmplY3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9MikKIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgic3RyaWN0IiwgW1RydWUsIEZh
bHNlXSkKLSAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9tYXJrZWRfdmFsdWUoc2VsZiwgdGVzdGRp
ciwgc3RyaWN0KToKKyAgICBkZWYgdGVzdF9wYXJhbWV0cml6ZV9tYXJrZWRfdmFsdWUoc2VsZiwg
dGVzdGRpcjogVGVzdGRpciwgc3RyaWN0OiBib29sKSAtPiBOb25lOgogICAgICAgICBzID0gIiIi
CiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKQEAgLTE3MjMsNyArMTc5Nyw3IEBAIGNsYXNz
IFRlc3RNYXJrZXJzV2l0aFBhcmFtZXRyaXphdGlvbihvYmplY3QpOgogICAgICAgICBwYXNzZWQs
IGZhaWxlZCA9ICgwLCAyKSBpZiBzdHJpY3QgZWxzZSAoMiwgMCkKICAgICAgICAgcmVwcmVjLmFz
c2VydG91dGNvbWUocGFzc2VkPXBhc3NlZCwgZmFpbGVkPWZhaWxlZCkKIAotICAgIGRlZiB0ZXN0
X3B5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0
X3B5dGVzdF9tYWtlX3BhcmFtZXRyaXplX2lkKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5v
bmU6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICBkZWYgcHl0ZXN0X21ha2VfcGFyYW1ldHJpemVfaWQoY29uZmlnLCB2YWwpOgpAQCAt
MTc0Miw3ICsxODE2LDcgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1ldHJpemF0aW9uKG9i
amVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip0ZXN0X2Z1bmMqMCpQQVNTKiIsICIqdGVz
dF9mdW5jKjIqUEFTUyoiXSkKIAotICAgIGRlZiB0ZXN0X3B5dGVzdF9tYWtlX3BhcmFtZXRyaXpl
X2lkX3dpdGhfYXJnbmFtZShzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9weXRlc3RfbWFr
ZV9wYXJhbWV0cml6ZV9pZF93aXRoX2FyZ25hbWUoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4g
Tm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGRlZiBweXRlc3RfbWFrZV9wYXJhbWV0cml6ZV9pZChjb25maWcsIHZhbCwgYXJn
bmFtZSk6CkBAIC0xNzY2LDMgKzE4NDAsNTIgQEAgY2xhc3MgVGVzdE1hcmtlcnNXaXRoUGFyYW1l
dHJpemF0aW9uKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygK
ICAgICAgICAgICAgIFsiKnRlc3RfZnVuY19hKjAqUEFTUyoiLCAiKnRlc3RfZnVuY19hKjIqUEFT
UyoiLCAiKnRlc3RfZnVuY19iKjEwKlBBU1MqIl0KICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
cGFyYW1ldHJpemVfcG9zaXRpb25hbF9hcmdzKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5v
bmU6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoImEiLCBbMV0sIEZhbHNlKQorICAgICAgICAgICAgZGVmIHRlc3RfZm9vKGEpOgorICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3Nl
ZD0xKQorCisgICAgZGVmIHRlc3RfcGFyYW1ldHJpemVfaXRlcmF0b3Ioc2VsZiwgdGVzdGRpcjog
VGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgaXRlcnRvb2xzCisgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CisKKyAgICAgICAgICAgIGlkX3BhcmFtZXRyaXplID0gcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoCisgICAgICAgICAgICAgICAgaWRzPSgicGFyYW0lZCIgJSBpIGZvciBpIGluIGl0ZXJ0
b29scy5jb3VudCgpKQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBAaWRfcGFyYW1ldHJp
emUoJ3knLCBbJ2EnLCAnYiddKQorICAgICAgICAgICAgZGVmIHRlc3QxKHkpOgorICAgICAgICAg
ICAgICAgIHBhc3MKKworICAgICAgICAgICAgQGlkX3BhcmFtZXRyaXplKCd5JywgWydhJywgJ2In
XSkKKyAgICAgICAgICAgIGRlZiB0ZXN0Mih5KToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYSwgYiIsIFsoMSwgMiksICgzLCA0
KV0sIGlkcz1pdGVydG9vbHMuY291bnQoKSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X2NvbnZlcnRl
ZF90b19zdHIoYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXZ2IiwgIi1zIikKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2l0ZXJhdG9yLnB5Ojp0ZXN0MVtwYXJhbTBdIFBB
U1NFRCIsCisgICAgICAgICAgICAgICAgInRlc3RfcGFyYW1ldHJpemVfaXRlcmF0b3IucHk6OnRl
c3QxW3BhcmFtMV0gUEFTU0VEIiwKKyAgICAgICAgICAgICAgICAidGVzdF9wYXJhbWV0cml6ZV9p
dGVyYXRvci5weTo6dGVzdDJbcGFyYW0wXSBQQVNTRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0
X3BhcmFtZXRyaXplX2l0ZXJhdG9yLnB5Ojp0ZXN0MltwYXJhbTFdIFBBU1NFRCIsCisgICAgICAg
ICAgICAgICAgInRlc3RfcGFyYW1ldHJpemVfaXRlcmF0b3IucHk6OnRlc3RfY29udmVydGVkX3Rv
X3N0clswXSBQQVNTRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3BhcmFtZXRyaXplX2l0ZXJh
dG9yLnB5Ojp0ZXN0X2NvbnZlcnRlZF90b19zdHJbMV0gUEFTU0VEIiwKKyAgICAgICAgICAgICAg
ICAiKj0gNiBwYXNzZWQgaW4gKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3JhaXNlcy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvcHl0aG9uL3JhaXNlcy5weQppbmRleCA2NDE5OWMzYjZmNWYuLjI2OTMxYTM3ODQ0NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vcmFpc2VzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3JhaXNlcy5weQpAQCAtMSw1MCArMSw2NiBAQAotZnJv
bSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBGYWlsZWQKLWltcG9ydCBweXRlc3QKK2ltcG9ydCBy
ZQogaW1wb3J0IHN5cwogCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1w
b3J0IEZhaWxlZAogCi1jbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9y
YWlzZXMoc2VsZik6Ci0gICAgICAgIHNvdXJjZSA9ICJpbnQoJ3F3ZScpIgotICAgICAgICBleGNp
bmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBzb3VyY2UpCi0gICAgICAgIGNvZGUgPSBl
eGNpbmZvLnRyYWNlYmFja1stMV0uZnJhbWUuY29kZQotICAgICAgICBzID0gc3RyKGNvZGUuZnVs
bHNvdXJjZSkKLSAgICAgICAgYXNzZXJ0IHMgPT0gc291cmNlCiAKLSAgICBkZWYgdGVzdF9yYWlz
ZXNfZXhlYyhzZWxmKToKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAiYSx4ID0g
W10iKQorY2xhc3MgVGVzdFJhaXNlczoKKyAgICBkZWYgdGVzdF9jaGVja19jYWxsYWJsZShzZWxm
KSAtPiBOb25lOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD1y
Ii4qIG11c3QgYmUgY2FsbGFibGUiKToKKyAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoUnVudGlt
ZUVycm9yLCAiaW50KCdxd2UnKSIpICAjIHR5cGU6IGlnbm9yZVtjYWxsLW92ZXJsb2FkXQogCi0g
ICAgZGVmIHRlc3RfcmFpc2VzX3N5bnRheF9lcnJvcihzZWxmKToKLSAgICAgICAgcHl0ZXN0LnJh
aXNlcyhTeW50YXhFcnJvciwgInF3ZSBxd2UgcXdlIikKKyAgICBkZWYgdGVzdF9yYWlzZXMoc2Vs
Zik6CisgICAgICAgIGV4Y2luZm8gPSBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGludCwgInF3
ZSIpCisgICAgICAgIGFzc2VydCAiaW52YWxpZCBsaXRlcmFsIiBpbiBzdHIoZXhjaW5mby52YWx1
ZSkKIAogICAgIGRlZiB0ZXN0X3JhaXNlc19mdW5jdGlvbihzZWxmKToKLSAgICAgICAgcHl0ZXN0
LnJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJoZWxsbyIpCi0KLSAgICBkZWYgdGVzdF9yYWlzZXNf
Y2FsbGFibGVfbm9fZXhjZXB0aW9uKHNlbGYpOgotCi0gICAgICAgIGNsYXNzIEEob2JqZWN0KToK
KyAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiaGVsbG8i
KQorICAgICAgICBhc3NlcnQgImludmFsaWQgbGl0ZXJhbCIgaW4gc3RyKGV4Y2luZm8udmFsdWUp
CiAKKyAgICBkZWYgdGVzdF9yYWlzZXNfY2FsbGFibGVfbm9fZXhjZXB0aW9uKHNlbGYpIC0+IE5v
bmU6CisgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CiAg
ICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHB5dGVzdC5y
YWlzZXMoVmFsdWVFcnJvciwgQSgpKQotICAgICAgICBleGNlcHQgcHl0ZXN0LnJhaXNlcy5FeGNl
cHRpb246CisgICAgICAgIGV4Y2VwdCBweXRlc3QuZmFpbC5FeGNlcHRpb246CisgICAgICAgICAg
ICBwYXNzCisKKyAgICBkZWYgdGVzdF9yYWlzZXNfZmFsc2V5X3R5cGVfZXJyb3Ioc2VsZikgLT4g
Tm9uZToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1hdGNoPTApOiAgIyB0eXBlOiBp
Z25vcmVbY2FsbC1vdmVybG9hZF0KKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJv
cigib2hhaSIpCisKKyAgICBkZWYgdGVzdF9yYWlzZXNfcmVwcl9pbmZsaWdodChzZWxmKToKKyAg
ICAgICAgIiIiRW5zdXJlIHJlcHIoKSBvbiBhbiBleGNlcHRpb24gaW5mbyBpbnNpZGUgYSBweXRl
c3QucmFpc2VzIHdpdGggYmxvY2sgd29ya3MgKCM0Mzg2KSIiIgorCisgICAgICAgIGNsYXNzIEUo
RXhjZXB0aW9uKToKICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoRSkgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgICMgdGhpcyB0ZXN0IHByaW50cyB0aGUgaW5m
bGlnaHQgdW5pbml0aWFsaXplZCBvYmplY3QKKyAgICAgICAgICAgICMgdXNpbmcgcmVwciBhbmQg
c3RyIGFzIHdlbGwgYXMgcHByaW50IHRvIGRlbW9uc3RyYXRlCisgICAgICAgICAgICAjIGl0IHdv
cmtzCisgICAgICAgICAgICBwcmludChzdHIoZXhjaW5mbykpCisgICAgICAgICAgICBwcmludChy
ZXByKGV4Y2luZm8pKQorICAgICAgICAgICAgaW1wb3J0IHBwcmludAorCisgICAgICAgICAgICBw
cHJpbnQucHByaW50KGV4Y2luZm8pCisgICAgICAgICAgICByYWlzZSBFKCkKKwogICAgIGRlZiB0
ZXN0X3JhaXNlc19hc19jb250ZXh0bWFuYWdlcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0gICAgICAgICAgICBpbXBvcnQgcHksIHB5dGVz
dAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgaW1wb3J0IF9weXRlc3Qu
X2NvZGUKIAogICAgICAgICAgICAgZGVmIHRlc3Rfc2ltcGxlKCk6CiAgICAgICAgICAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSBhcyBleGNpbmZvOgogICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShleGNpbmZvLCBfcHl0ZXN0Ll9jb2RlLkV4
Y2VwdGlvbkluZm8pCiAgICAgICAgICAgICAgICAgICAgIDEvMAotICAgICAgICAgICAgICAgIHBy
aW50IChleGNpbmZvKQorICAgICAgICAgICAgICAgIHByaW50KGV4Y2luZm8pCiAgICAgICAgICAg
ICAgICAgYXNzZXJ0IGV4Y2luZm8udHlwZSA9PSBaZXJvRGl2aXNpb25FcnJvcgogICAgICAgICAg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV4Y2luZm8udmFsdWUsIFplcm9EaXZpc2lvbkVycm9y
KQogCkBAIC02MiwyMyArNzgsNzEgQEAgY2xhc3MgVGVzdFJhaXNlcyhvYmplY3QpOgogICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIiozIHBhc3NlZCoiXSkKIAotICAgIGRlZiB0ZXN0X25vY2xhc3Moc2VsZik6
CisgICAgZGVmIHRlc3RfZG9lc19ub3RfcmFpc2Uoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZnJvbSBjb250
ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAor
CisgICAgICAgICAgICBAY29udGV4dG1hbmFnZXIKKyAgICAgICAgICAgIGRlZiBkb2VzX25vdF9y
YWlzZSgpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgnZXhhbXBsZV9pbnB1dCxleHBlY3RhdGlvbicsIFsKKyAgICAgICAgICAg
ICAgICAoMywgZG9lc19ub3RfcmFpc2UoKSksCisgICAgICAgICAgICAgICAgKDIsIGRvZXNfbm90
X3JhaXNlKCkpLAorICAgICAgICAgICAgICAgICgxLCBkb2VzX25vdF9yYWlzZSgpKSwKKyAgICAg
ICAgICAgICAgICAoMCwgcHl0ZXN0LnJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcikpLAorICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X2RpdmlzaW9uKGV4YW1wbGVfaW5wdXQsIGV4
cGVjdGF0aW9uKToKKyAgICAgICAgICAgICAgICAnJydUZXN0IGhvdyBtdWNoIEkga25vdyBkaXZp
c2lvbi4nJycKKyAgICAgICAgICAgICAgICB3aXRoIGV4cGVjdGF0aW9uOgorICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQgKDYgLyBleGFtcGxlX2lucHV0KSBpcyBub3QgTm9uZQorICAgICAgICAi
IiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIio0IHBhc3NlZCoiXSkKKworICAgIGRl
ZiB0ZXN0X2RvZXNfbm90X3JhaXNlX2RvZXNfcmFpc2Uoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZnJvbSBj
b250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dAorCisgICAgICAgICAgICBAY29udGV4dG1hbmFnZXIKKyAgICAgICAgICAgIGRlZiBkb2VzX25v
dF9yYWlzZSgpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgnZXhhbXBsZV9pbnB1dCxleHBlY3RhdGlvbicsIFsKKyAgICAgICAg
ICAgICAgICAoMCwgZG9lc19ub3RfcmFpc2UoKSksCisgICAgICAgICAgICAgICAgKDEsIHB5dGVz
dC5yYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpKSwKKyAgICAgICAgICAgIF0pCisgICAgICAgICAg
ICBkZWYgdGVzdF9kaXZpc2lvbihleGFtcGxlX2lucHV0LCBleHBlY3RhdGlvbik6CisgICAgICAg
ICAgICAgICAgJycnVGVzdCBob3cgbXVjaCBJIGtub3cgZGl2aXNpb24uJycnCisgICAgICAgICAg
ICAgICAgd2l0aCBleHBlY3RhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0ICg2IC8g
ZXhhbXBsZV9pbnB1dCkgaXMgbm90IE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqMiBmYWlsZWQqIl0pCisKKyAgICBkZWYgdGVzdF9ub2NsYXNzKHNlbGYp
IC0+IE5vbmU6CiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAg
ICAgICAgcHl0ZXN0LnJhaXNlcygid3JvbmciLCBsYW1iZGE6IE5vbmUpCisgICAgICAgICAgICBw
eXRlc3QucmFpc2VzKCJ3cm9uZyIsIGxhbWJkYTogTm9uZSkgICMgdHlwZTogaWdub3JlW2NhbGwt
b3ZlcmxvYWRdCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkX2FyZ3VtZW50c190b19yYWlzZXMoc2Vs
Zik6CisgICAgZGVmIHRlc3RfaW52YWxpZF9hcmd1bWVudHNfdG9fcmFpc2VzKHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIG1hdGNoPSJ1bmtub3du
Iik6Ci0gICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCB1bmtub3duPSJi
b2d1cyIpOgorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgdW5rbm93
bj0iYm9ndXMiKTogICMgdHlwZTogaWdub3JlW2NhbGwtb3ZlcmxvYWRdCiAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigpCiAKICAgICBkZWYgdGVzdF90dXBsZShzZWxmKToKICAgICAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKChLZXlFcnJvciwgVmFsdWVFcnJvcikpOgogICAgICAgICAg
ICAgcmFpc2UgS2V5RXJyb3IoIm9vcHMiKQogCi0gICAgZGVmIHRlc3Rfbm9fcmFpc2VfbWVzc2Fn
ZShzZWxmKToKKyAgICBkZWYgdGVzdF9ub19yYWlzZV9tZXNzYWdlKHNlbGYpIC0+IE5vbmU6CiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgaW50LCAi
MCIpCi0gICAgICAgIGV4Y2VwdCBweXRlc3QucmFpc2VzLkV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICBleGNlcHQgcHl0ZXN0LmZhaWwuRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBhc3NlcnQg
ZS5tc2cgPT0gIkRJRCBOT1QgUkFJU0Uge30iLmZvcm1hdChyZXByKFZhbHVlRXJyb3IpKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiRXhwZWN0ZWQgcHl0ZXN0LnJh
aXNlcy5FeGNlcHRpb24iCkBAIC04NiwzNiArMTUwLDMyIEBAIGNsYXNzIFRlc3RSYWlzZXMob2Jq
ZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVl
RXJyb3IpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0IHB5dGVzdC5yYWlz
ZXMuRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2VwdCBweXRlc3QuZmFpbC5FeGNlcHRpb24g
YXMgZToKICAgICAgICAgICAgIGFzc2VydCBlLm1zZyA9PSAiRElEIE5PVCBSQUlTRSB7fSIuZm9y
bWF0KHJlcHIoVmFsdWVFcnJvcikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3NlcnQg
RmFsc2UsICJFeHBlY3RlZCBweXRlc3QucmFpc2VzLkV4Y2VwdGlvbiIKIAotICAgIGRlZiB0ZXN0
X2N1c3RvbV9yYWlzZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBtZXNzYWdlID0gIlRFU1RfTUVT
U0FHRSIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVl
RXJyb3IsIG1lc3NhZ2U9bWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBl
eGNlcHQgcHl0ZXN0LnJhaXNlcy5FeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGFzc2VydCBl
Lm1zZyA9PSBtZXNzYWdlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgRmFsc2Us
ICJFeHBlY3RlZCBweXRlc3QucmFpc2VzLkV4Y2VwdGlvbiIKLQotICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgibWV0aG9kIiwgWyJmdW5jdGlvbiIsICJ3aXRoIl0pCisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJtZXRob2QiLCBbImZ1bmN0aW9uIiwgImZ1bmN0aW9uX21hdGNoIiwg
IndpdGgiXSkKICAgICBkZWYgdGVzdF9yYWlzZXNfY3ljbGljX3JlZmVyZW5jZShzZWxmLCBtZXRo
b2QpOgotICAgICAgICAiIiIKLSAgICAgICAgRW5zdXJlIHB5dGVzdC5yYWlzZXMgZG9lcyBub3Qg
bGVhdmUgYSByZWZlcmVuY2UgY3ljbGUgKCMxOTY1KS4KLSAgICAgICAgIiIiCisgICAgICAgICIi
IkVuc3VyZSBweXRlc3QucmFpc2VzIGRvZXMgbm90IGxlYXZlIGEgcmVmZXJlbmNlIGN5Y2xlICgj
MTk2NSkuIiIiCiAgICAgICAgIGltcG9ydCBnYwogCi0gICAgICAgIGNsYXNzIFQob2JqZWN0KToK
LQorICAgICAgICBjbGFzcyBUOgogICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAg
ICAgICAgICAgICAgICMgRWFybHkgdmVyc2lvbnMgb2YgUHl0aG9uIDMuNSBoYXZlIHNvbWUgYnVn
IGNhdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgIyBfX2NhbGxfXyBmcmFtZSB0byBzdGlsbCBy
ZWZlciB0byB0IGV2ZW4gYWZ0ZXIgZXZlcnl0aGluZworICAgICAgICAgICAgICAgICMgaXMgZG9u
ZS4gVGhpcyBtYWtlcyB0aGUgdGVzdCBwYXNzIGZvciB0aGVtLgorICAgICAgICAgICAgICAgIGlm
IHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNSwgMik6CisgICAgICAgICAgICAgICAgICAgIGRlbCBz
ZWxmCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogCiAgICAgICAgIHQgPSBUKCkK
KyAgICAgICAgcmVmY291bnQgPSBsZW4oZ2MuZ2V0X3JlZmVycmVycyh0KSkKKwogICAgICAgICBp
ZiBtZXRob2QgPT0gImZ1bmN0aW9uIjoKICAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVF
cnJvciwgdCkKKyAgICAgICAgZWxpZiBtZXRob2QgPT0gImZ1bmN0aW9uX21hdGNoIjoKKyAgICAg
ICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgdCkubWF0Y2goIl4kIikKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAg
ICAgICAgICAgICB0KCkKQEAgLTEyMywxMyArMTgzLDkgQEAgY2xhc3MgVGVzdFJhaXNlcyhvYmpl
Y3QpOgogICAgICAgICAjIGVuc3VyZSBib3RoIGZvcm1zIG9mIHB5dGVzdC5yYWlzZXMgZG9uJ3Qg
bGVhdmUgZXhjZXB0aW9ucyBpbiBzeXMuZXhjX2luZm8oKQogICAgICAgICBhc3NlcnQgc3lzLmV4
Y19pbmZvKCkgPT0gKE5vbmUsIE5vbmUsIE5vbmUpCiAKLSAgICAgICAgZGVsIHQKKyAgICAgICAg
YXNzZXJ0IHJlZmNvdW50ID09IGxlbihnYy5nZXRfcmVmZXJyZXJzKHQpKQogCi0gICAgICAgICMg
ZW5zdXJlIHRoZSB0IGluc3RhbmNlIGlzIG5vdCBzdHVjayBpbiBhIGN5Y2xpYyByZWZlcmVuY2UK
LSAgICAgICAgZm9yIG8gaW4gZ2MuZ2V0X29iamVjdHMoKToKLSAgICAgICAgICAgIGFzc2VydCB0
eXBlKG8pIGlzIG5vdCBUCi0KLSAgICBkZWYgdGVzdF9yYWlzZXNfbWF0Y2goc2VsZik6CisgICAg
ZGVmIHRlc3RfcmFpc2VzX21hdGNoKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIG1zZyA9IHIid2l0
aCBiYXNlIFxkKyIKICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNo
PW1zZyk6CiAgICAgICAgICAgICBpbnQoImFzZGYiKQpAQCAtMTM5LDEzICsxOTUsNDYgQEAgY2xh
c3MgVGVzdFJhaXNlcyhvYmplY3QpOgogICAgICAgICAgICAgaW50KCJhc2RmIikKIAogICAgICAg
ICBtc2cgPSAid2l0aCBiYXNlIDE2IgotICAgICAgICBleHByID0gciJQYXR0ZXJuICd7fScgbm90
IGZvdW5kIGluICdpbnZhbGlkIGxpdGVyYWwgZm9yIGludFwoXCkgd2l0aCBiYXNlIDEwOiAnYXNk
ZicnIi5mb3JtYXQoCisgICAgICAgIGV4cHIgPSAiUmVnZXggcGF0dGVybiB7IXJ9IGRvZXMgbm90
IG1hdGNoIFwiaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgMTA6ICdhc2RmJ1wi
LiIuZm9ybWF0KAogICAgICAgICAgICAgbXNnCiAgICAgICAgICkKLSAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBtYXRjaD1leHByKToKKyAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBtYXRjaD1yZS5lc2NhcGUoZXhwcikpOgogICAgICAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNoPW1zZyk6CiAgICAgICAg
ICAgICAgICAgaW50KCJhc2RmIiwgYmFzZT0xMCkKIAorICAgICAgICAjICJtYXRjaCIgd2l0aG91
dCBjb250ZXh0IG1hbmFnZXIuCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgaW50
LCAiYXNkZiIpLm1hdGNoKCJpbnZhbGlkIGxpdGVyYWwiKQorICAgICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAgICBweXRlc3QucmFp
c2VzKFZhbHVlRXJyb3IsIGludCwgImFzZGYiKS5tYXRjaChtc2cpCisgICAgICAgIGFzc2VydCBz
dHIoZXhjaW5mby52YWx1ZSkgPT0gZXhwcgorCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVy
cm9yLCBpbnQsIG1hdGNoPSJpbnZhbGlkIikKKworICAgICAgICBkZWYgdGZ1bmMobWF0Y2gpOgor
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWF0Y2g9e30iLmZvcm1hdChtYXRjaCkpCisK
KyAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCB0ZnVuYywgbWF0Y2g9ImFzZGYiKS5t
YXRjaCgibWF0Y2g9YXNkZiIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgdGZ1
bmMsIG1hdGNoPSIiKS5tYXRjaCgibWF0Y2g9IikKKworICAgIGRlZiB0ZXN0X21hdGNoX2ZhaWx1
cmVfc3RyaW5nX3F1b3Rpbmcoc2VsZik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3Nl
cnRpb25FcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhB
c3NlcnRpb25FcnJvciwgbWF0Y2g9Iidmb28iKToKKyAgICAgICAgICAgICAgICByYWlzZSBBc3Nl
cnRpb25FcnJvcigiJ2JhciIpCisgICAgICAgIChtc2csKSA9IGV4Y2luZm8udmFsdWUuYXJncwor
ICAgICAgICBhc3NlcnQgbXNnID09ICdSZWdleCBwYXR0ZXJuICJcJ2ZvbyIgZG9lcyBub3QgbWF0
Y2ggIlwnYmFyIi4nCisKKyAgICBkZWYgdGVzdF9tYXRjaF9mYWlsdXJlX2V4YWN0X3N0cmluZ19t
ZXNzYWdlKHNlbGYpOgorICAgICAgICBtZXNzYWdlID0gIk9oIGhlcmUgaXMgYSBtZXNzYWdlIHdp
dGggKDQyKSBudW1iZXJzIGluIHBhcmFtZXRlcnMiCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhBc3NlcnRpb25FcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhBc3NlcnRpb25FcnJvciwgbWF0Y2g9bWVzc2FnZSk6CisgICAgICAgICAgICAgICAgcmFp
c2UgQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKKyAgICAgICAgKG1zZywpID0gZXhjaW5mby52YWx1
ZS5hcmdzCisgICAgICAgIGFzc2VydCBtc2cgPT0gKAorICAgICAgICAgICAgIlJlZ2V4IHBhdHRl
cm4gJ09oIGhlcmUgaXMgYSBtZXNzYWdlIHdpdGggKDQyKSBudW1iZXJzIGluICIKKyAgICAgICAg
ICAgICJwYXJhbWV0ZXJzJyBkb2VzIG5vdCBtYXRjaCAnT2ggaGVyZSBpcyBhIG1lc3NhZ2Ugd2l0
aCAoNDIpICIKKyAgICAgICAgICAgICJudW1iZXJzIGluIHBhcmFtZXRlcnMnLiBEaWQgeW91IG1l
YW4gdG8gYHJlLmVzY2FwZSgpYCB0aGUgcmVnZXg/IgorICAgICAgICApCisKICAgICBkZWYgdGVz
dF9yYWlzZXNfbWF0Y2hfd3JvbmdfdHlwZShzZWxmKToKICAgICAgICAgIiIiUmFpc2luZyBhbiBl
eGNlcHRpb24gd2l0aCB0aGUgd3JvbmcgdHlwZSBhbmQgbWF0Y2g9IGdpdmVuLgogCkBAIC0xNTcs
MjEgKzI0Niw1NyBAQCBjbGFzcyBUZXN0UmFpc2VzKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
aW50KCJhc2RmIikKIAogICAgIGRlZiB0ZXN0X3JhaXNlc19leGNlcHRpb25fbG9va3NfaXRlcmFi
bGUoc2VsZik6Ci0gICAgICAgIGZyb20gc2l4IGltcG9ydCBhZGRfbWV0YWNsYXNzCi0KLSAgICAg
ICAgY2xhc3MgTWV0YSh0eXBlKG9iamVjdCkpOgotCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6
CiAgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDEgLyAwCiAKICAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAg
ICAgICAgICAgIHJldHVybiAxCiAKLSAgICAgICAgQGFkZF9tZXRhY2xhc3MoTWV0YSkKLSAgICAg
ICAgY2xhc3MgQ2xhc3NMb29rc0l0ZXJhYmxlRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgICAg
IGNsYXNzIENsYXNzTG9va3NJdGVyYWJsZUV4Y2VwdGlvbihFeGNlcHRpb24sIG1ldGFjbGFzcz1N
ZXRhKToKICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCi0g
ICAgICAgICAgICBGYWlsZWQsIG1hdGNoPSJESUQgTk9UIFJBSVNFIDxjbGFzcyAncmFpc2VzLkNs
YXNzTG9va3NJdGVyYWJsZUV4Y2VwdGlvbic+IgorICAgICAgICAgICAgRmFpbGVkLAorICAgICAg
ICAgICAgbWF0Y2g9ciJESUQgTk9UIFJBSVNFIDxjbGFzcyAncmFpc2VzKFwuLiopKkNsYXNzTG9v
a3NJdGVyYWJsZUV4Y2VwdGlvbic+IiwKICAgICAgICAgKToKICAgICAgICAgICAgIHB5dGVzdC5y
YWlzZXMoQ2xhc3NMb29rc0l0ZXJhYmxlRXhjZXB0aW9uLCBsYW1iZGE6IE5vbmUpCisKKyAgICBk
ZWYgdGVzdF9yYWlzZXNfd2l0aF9yYWlzaW5nX2R1bmRlcl9jbGFzcyhzZWxmKSAtPiBOb25lOgor
ICAgICAgICAiIiJUZXN0IGN1cnJlbnQgYmVoYXZpb3Igd2l0aCByZWdhcmQgdG8gZXhjZXB0aW9u
cyB2aWEgX19jbGFzc19fICgjNDI4NCkuIiIiCisKKyAgICAgICAgY2xhc3MgQ3JhcHB5Q2xhc3Mo
RXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgVHlwZSBpZ25vcmVkIGJlY2F1c2UgaXQncyBieXBh
c3NlZCBpbnRlbnRpb25hbGx5LgorICAgICAgICAgICAgQHByb3BlcnR5ICAjIHR5cGU6IGlnbm9y
ZQorICAgICAgICAgICAgZGVmIF9fY2xhc3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBhc3Nl
cnQgRmFsc2UsICJ2aWEgX19jbGFzc19fIgorCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhB
c3NlcnRpb25FcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhDcmFwcHlDbGFzcygpKTogICMgdHlwZTogaWdub3JlW2NhbGwtb3ZlcmxvYWRdCisgICAgICAg
ICAgICAgICAgcGFzcworICAgICAgICBhc3NlcnQgInZpYSBfX2NsYXNzX18iIGluIGV4Y2luZm8u
dmFsdWUuYXJnc1swXQorCisgICAgZGVmIHRlc3RfcmFpc2VzX2NvbnRleHRfbWFuYWdlcl93aXRo
X2t3YXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcikgYXMg
ZXhjaW5mbzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIGZvbz0i
YmFyIik6ICAjIHR5cGU6IGlnbm9yZVtjYWxsLW92ZXJsb2FkXQorICAgICAgICAgICAgICAgIHBh
c3MKKyAgICAgICAgYXNzZXJ0ICJVbmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnRzIiBpbiBzdHIo
ZXhjaW5mby52YWx1ZSkKKworICAgIGRlZiB0ZXN0X2V4cGVjdGVkX2V4Y2VwdGlvbl9pc19ub3Rf
YV9iYXNlZXhjZXB0aW9uKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhUeXBlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMo
ImhlbGxvIik6ICAjIHR5cGU6IGlnbm9yZVtjYWxsLW92ZXJsb2FkXQorICAgICAgICAgICAgICAg
IHBhc3MgICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICBhc3NlcnQgIm11c3QgYmUgYSBCYXNl
RXhjZXB0aW9uIHR5cGUsIG5vdCBzdHIiIGluIHN0cihleGNpbmZvLnZhbHVlKQorCisgICAgICAg
IGNsYXNzIE5vdEFuRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoTm90QW5FeGNlcHRpb24pOiAgIyB0eXBlOiBpZ25vcmVbdHlwZS12YXJdCisg
ICAgICAgICAgICAgICAgcGFzcyAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgIGFzc2VydCAi
bXVzdCBiZSBhIEJhc2VFeGNlcHRpb24gdHlwZSwgbm90IE5vdEFuRXhjZXB0aW9uIiBpbiBzdHIo
ZXhjaW5mby52YWx1ZSkKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKSBh
cyBleGNpbmZvOgorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKCgiaGVsbG8iLCBOb3RB
bkV4Y2VwdGlvbikpOiAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgICAgICAgICAgICAg
cGFzcyAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgIGFzc2VydCAibXVzdCBiZSBhIEJhc2VF
eGNlcHRpb24gdHlwZSwgbm90IHN0ciIgaW4gc3RyKGV4Y2luZm8udmFsdWUpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zZXR1cF9wbGFuLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9weXRob24vc2V0dXBfcGxhbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDMyMTkzOWE4YWFjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9w
eXRob24vc2V0dXBfcGxhbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWRlZiB0
ZXN0X3Nob3dfZml4dHVyZXNfYW5kX3Rlc3QodGVzdGRpcik6Ci0gICAgIiIiIFZlcmlmaWVzIHRo
YXQgZml4dHVyZXMgYXJlIG5vdCBleGVjdXRlZC4gIiIiCi0gICAgcCA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgQHB5dGVz
dC5maXh0dXJlCi0gICAgICAgIGRlZiBhcmcoKToKLSAgICAgICAgICAgIGFzc2VydCBGYWxzZQot
ICAgICAgICBkZWYgdGVzdF9hcmcoYXJnKToKLSAgICAgICAgICAgIGFzc2VydCBGYWxzZQotICAg
ICIiIgotICAgICkKLQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXNldHVwLXBs
YW4iLCBwKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKLQotICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcygKLSAgICAgICAgWyIqU0VUVVAgICAgRiBhcmcqIiwgIip0ZXN0X2FyZyAo
Zml4dHVyZXMgdXNlZDogYXJnKSIsICIqVEVBUkRPV04gRiBhcmcqIl0KLSAgICApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vc2hvd19maXh0dXJlc19wZXJfdGVzdC5weQpp
bmRleCBlMTQzNDRkNGViZjcuLmVmODQxODE5ZDA5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy9weXRob24vc2hvd19maXh0dXJlc19wZXJfdGVzdC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3B5dGhvbi9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0LnB5CkBAIC0xLDkgKzEsNiBA
QAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLQotCiBkZWYgdGVzdF9ub19pdGVtc19zaG91bGRf
bm90X3Nob3dfb3V0cHV0KHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLWZpeHR1cmVzLXBlci10ZXN0IikKLSAgICBhc3NlcnQgImZpeHR1cmVzIHVzZWQgYnkiIG5v
dCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xp
bmUoIipmaXh0dXJlcyB1c2VkIGJ5KiIpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAK
QEAgLTMzLDcgKzMwLDcgQEAgZGVmIHRlc3RfZml4dHVyZXNfaW5fbW9kdWxlKHRlc3RkaXIpOgog
ICAgICAgICAgICAgIiAgICBhcmcxIGRvY3N0cmluZyIsCiAgICAgICAgIF0KICAgICApCi0gICAg
YXNzZXJ0ICJfYXJnMCIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rk
b3V0Lm5vX2ZubWF0Y2hfbGluZSgiKl9hcmcwKiIpCiAKIAogZGVmIHRlc3RfZml4dHVyZXNfaW5f
Y29uZnRlc3QodGVzdGRpcik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhv
bi90ZXN0X2RlcHJlY2F0aW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3Rlc3Rf
ZGVwcmVjYXRpb25zLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGMxMWYwYjAz
YjQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi90ZXN0X2Rl
cHJlY2F0aW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWltcG9ydCBweXRl
c3QKLQotZnJvbSBfcHl0ZXN0LnB5dGhvbiBpbXBvcnQgUHlDb2xsZWN0b3IKLQotCi1jbGFzcyBQ
eUNvbGxlY3Rvck1vY2soUHlDb2xsZWN0b3IpOgotICAgICIiImV2aWwgaGFjayIiIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCi0KLSAgICBk
ZWYgX21ha2VpdGVtKHNlbGYsICprKToKLSAgICAgICAgIiIiaGFjayB0byBkaXNhYmxlIHRoZSBh
Y3R1YWwgYmVoYXZpb3VyIiIiCi0gICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQotCi0KLWRlZiB0
ZXN0X3B5Y29sbGVjdG9yX21ha2VpdGVtX2lzX2RlcHJlY2F0ZWQoKToKLQotICAgIGNvbGxlY3Rv
ciA9IFB5Q29sbGVjdG9yTW9jaygpCi0gICAgd2l0aCBweXRlc3QuZGVwcmVjYXRlZF9jYWxsKCk6
Ci0gICAgICAgIGNvbGxlY3Rvci5tYWtlaXRlbSgiZm9vIiwgImJhciIpCi0gICAgYXNzZXJ0IGNv
bGxlY3Rvci5jYWxsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMzc5YTU5NjRjOC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRo
b24vYXBwcm94LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vY29sbGVjdC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3B5dGhvbi9pbnRlZ3JhdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL21ldGFm
dW5jLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vcmFpc2VzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9weXRob24vc2V0dXBfb25seS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0
aG9uL3NldHVwX3BsYW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zaG93X2ZpeHR1
cmVzX3Blcl90ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vdGVzdF9kZXByZWNh
dGlvbnMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hcmdjb21wbGV0
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hcmdjb21wbGV0ZS5weQppbmRleCBiMDQy
ZGU1Y2U1YmUuLjljYWIyNDJjMGUwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X2FyZ2NvbXBsZXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hcmdjb21w
bGV0ZS5weQpAQCAtMSw5ICsxLDkgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgc3lzCisKIGltcG9ydCBweXRlc3QKIAotIyB0ZXN0IGZvciBfYXJnY29tcGxldGUgYnV0IG5v
dCBzcGVjaWZpYyBmb3IgYW55IGFwcGxpY2F0aW9uCisjIFRlc3QgZm9yIF9hcmdjb21wbGV0ZSBi
dXQgbm90IHNwZWNpZmljIGZvciBhbnkgYXBwbGljYXRpb24uCiAKIAogZGVmIGVxdWFsX3dpdGhf
YmFzaChwcmVmaXgsIGZmYywgZmMsIG91dD1Ob25lKToKQEAgLTExLDM5ICsxMSwyNyBAQCBkZWYg
ZXF1YWxfd2l0aF9iYXNoKHByZWZpeCwgZmZjLCBmYywgb3V0PU5vbmUpOgogICAgIHJlc19iYXNo
ID0gc2V0KGZjKHByZWZpeCkpCiAgICAgcmV0dmFsID0gc2V0KHJlcykgPT0gcmVzX2Jhc2gKICAg
ICBpZiBvdXQ6Ci0gICAgICAgIG91dC53cml0ZSgiZXF1YWxfd2l0aF9iYXNoICVzICVzXG4iICUg
KHJldHZhbCwgcmVzKSkKKyAgICAgICAgb3V0LndyaXRlKCJlcXVhbF93aXRoX2Jhc2goe30pIHt9
IHt9XG4iLmZvcm1hdChwcmVmaXgsIHJldHZhbCwgcmVzKSkKICAgICAgICAgaWYgbm90IHJldHZh
bDoKICAgICAgICAgICAgIG91dC53cml0ZSgiIHB5dGhvbiAtIGJhc2g6ICVzXG4iICUgKHNldChy
ZXMpIC0gcmVzX2Jhc2gpKQogICAgICAgICAgICAgb3V0LndyaXRlKCIgYmFzaCAtIHB5dGhvbjog
JXNcbiIgJSAocmVzX2Jhc2ggLSBzZXQocmVzKSkpCiAgICAgcmV0dXJuIHJldHZhbAogCiAKLSMg
Y29waWVkIGZyb20gYXJnY29tcGxldGUuY29tcGxldGVycyBhcyBpbXBvcnQgZnJvbSB0aGVyZQot
IyBhbHNvIHB1bGxzIGluIGFyZ2NvbXBsZXRlLl9faW5pdF9fIHdoaWNoIG9wZW5zIGZpbGVkZXNj
cmlwdG9yIDkKLSMgdGhpcyBnaXZlcyBhbiBJT0Vycm9yIGF0IHRoZSBlbmQgb2YgdGVzdHJ1bgor
IyBDb3BpZWQgZnJvbSBhcmdjb21wbGV0ZS5jb21wbGV0ZXJzIGFzIGltcG9ydCBmcm9tIHRoZXJl
LgorIyBBbHNvIHB1bGxzIGluIGFyZ2NvbXBsZXRlLl9faW5pdF9fIHdoaWNoIG9wZW5zIGZpbGVk
ZXNjcmlwdG9yIDkuCisjIFRoaXMgZ2l2ZXMgYW4gT1NFcnJvciBhdCB0aGUgZW5kIG9mIHRlc3Ry
dW4uCiAKIAogZGVmIF93cmFwY2FsbCgqYXJncywgKiprYXJncyk6CiAgICAgdHJ5OgotICAgICAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDIsIDcpOgotICAgICAgICAgICAgcmV0dXJuIHN1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0KCphcmdzLCAqKmthcmdzKS5kZWNvZGUoKS5zcGxpdGxpbmVzKCkK
LSAgICAgICAgaWYgInN0ZG91dCIgaW4ga2FyZ3M6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4i
KQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCAqYXJncywgKiprYXJncykKLSAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vz
cy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQotICAgICAg
ICBpZiByZXRjb2RlOgotICAgICAgICAgICAgY21kID0ga2FyZ3MuZ2V0KCJhcmdzIikKLSAgICAg
ICAgICAgIGlmIGNtZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNtZCA9IGFyZ3NbMF0KLSAg
ICAgICAgICAgIHJhaXNlIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKHJldGNvZGUsIGNt
ZCkKLSAgICAgICAgcmV0dXJuIG91dHB1dC5kZWNvZGUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAg
cmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCphcmdzLCAqKmthcmdzKS5kZWNvZGUoKS5z
cGxpdGxpbmVzKCkKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CiAg
ICAgICAgIHJldHVybiBbXQogCiAKLWNsYXNzIEZpbGVzQ29tcGxldGVyKG9iamVjdCk6Ci0gICAg
IkZpbGUgY29tcGxldGVyIGNsYXNzLCBvcHRpb25hbGx5IHRha2VzIGEgbGlzdCBvZiBhbGxvd2Vk
IGV4dGVuc2lvbnMiCitjbGFzcyBGaWxlc0NvbXBsZXRlcjoKKyAgICAiIiJGaWxlIGNvbXBsZXRl
ciBjbGFzcywgb3B0aW9uYWxseSB0YWtlcyBhIGxpc3Qgb2YgYWxsb3dlZCBleHRlbnNpb25zLiIi
IgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93ZWRuYW1lcz0oKSwgZGlyZWN0b3JpZXM9
VHJ1ZSk6CiAgICAgICAgICMgRml4IGlmIHNvbWVvbmUgcGFzc2VzIGluIGEgc3RyaW5nIGluc3Rl
YWQgb2YgYSBsaXN0CkBAIC04NSwyMiArNzMsMjUgQEAgY2xhc3MgRmlsZXNDb21wbGV0ZXIob2Jq
ZWN0KToKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24KIAogCi1jbGFzcyBUZXN0QXJnQ29tcGxl
dGUob2JqZWN0KToKLQorY2xhc3MgVGVzdEFyZ0NvbXBsZXRlOgogICAgIEBweXRlc3QubWFyay5z
a2lwaWYoInN5cy5wbGF0Zm9ybSBpbiAoJ3dpbjMyJywgJ2RhcndpbicpIikKLSAgICBkZWYgdGVz
dF9jb21wYXJlX3dpdGhfY29tcGdlbihzZWxmKToKKyAgICBkZWYgdGVzdF9jb21wYXJlX3dpdGhf
Y29tcGdlbihzZWxmLCB0bXBkaXIpOgogICAgICAgICBmcm9tIF9weXRlc3QuX2FyZ2NvbXBsZXRl
IGltcG9ydCBGYXN0RmlsZXNDb21wbGV0ZXIKIAogICAgICAgICBmZmMgPSBGYXN0RmlsZXNDb21w
bGV0ZXIoKQogICAgICAgICBmYyA9IEZpbGVzQ29tcGxldGVyKCkKLSAgICAgICAgZm9yIHggaW4g
WyIvIiwgIi9kIiwgIi9kYXRhIiwgInFxcSIsICIiXToKLSAgICAgICAgICAgIGFzc2VydCBlcXVh
bF93aXRoX2Jhc2goeCwgZmZjLCBmYywgb3V0PXN5cy5zdGRvdXQpCisKKyAgICAgICAgd2l0aCB0
bXBkaXIuYXNfY3dkKCk6CisgICAgICAgICAgICBhc3NlcnQgZXF1YWxfd2l0aF9iYXNoKCIiLCBm
ZmMsIGZjLCBvdXQ9c3lzLnN0ZG91dCkKKworICAgICAgICAgICAgdG1wZGlyLmVuc3VyZSgiZGF0
YSIpCisKKyAgICAgICAgICAgIGZvciB4IGluIFsiZCIsICJkYXRhIiwgImRvZXNub3RleGlzdCIs
ICIiXToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZXF1YWxfd2l0aF9iYXNoKHgsIGZmYywgZmMs
IG91dD1zeXMuc3Rkb3V0KQogCiAgICAgQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnBsYXRmb3Jt
IGluICgnd2luMzInLCAnZGFyd2luJykiKQogICAgIGRlZiB0ZXN0X3JlbW92ZV9kaXJfcHJlZml4
KHNlbGYpOgotICAgICAgICAiIiJ0aGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY29tcGdlbiBi
dXQgaXQgaXMgd2l0aCBiYXNoIGl0c2VsZjoKLSAgICAgICAgbHMgL3Vzci88VEFCPgotICAgICAg
ICAiIiIKKyAgICAgICAgIiIiVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGNvbXBnZW4gYnV0
IGl0IGlzIHdpdGggYmFzaCBpdHNlbGY6IGxzIC91c3IvPFRBQj4uIiIiCiAgICAgICAgIGZyb20g
X3B5dGVzdC5fYXJnY29tcGxldGUgaW1wb3J0IEZhc3RGaWxlc0NvbXBsZXRlcgogCiAgICAgICAg
IGZmYyA9IEZhc3RGaWxlc0NvbXBsZXRlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3RfYXNzZXJ0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2Fzc2VydGlv
bi5weQppbmRleCAzOTNjZjgxN2M3ZTkuLjFjYjYzYTMyOWY2YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy90ZXN0X2Fzc2VydGlvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfYXNzZXJ0aW9uLnB5CkBAIC0xLDM5ICsxLDM1IEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBw
cmludF9mdW5jdGlvbgoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IHN5cwogaW1wb3J0
IHRleHR3cmFwCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgTGlz
dAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisKK2ltcG9ydCBhdHRyCiAKIGltcG9ydCBf
cHl0ZXN0LmFzc2VydGlvbiBhcyBwbHVnaW4KLWltcG9ydCBweQogaW1wb3J0IHB5dGVzdAotZnJv
bSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgdXRpbAorZnJvbSBfcHl0ZXN0IGltcG9ydCBvdXRj
b21lcwogZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQgdHJ1bmNhdGUKK2Zyb20gX3B5dGVz
dC5hc3NlcnRpb24gaW1wb3J0IHV0aWwKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IEFUVFJT
X0VRX0ZJRUxECiAKLVBZMyA9IHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApCi0KLQotQHB5dGVz
dC5maXh0dXJlCi1kZWYgbW9ja19jb25maWcoKToKLQotICAgIGNsYXNzIENvbmZpZyhvYmplY3Qp
OgotICAgICAgICB2ZXJib3NlID0gRmFsc2UKIAorZGVmIG1vY2tfY29uZmlnKHZlcmJvc2U9MCk6
CisgICAgY2xhc3MgQ29uZmlnOgogICAgICAgICBkZWYgZ2V0b3B0aW9uKHNlbGYsIG5hbWUpOgog
ICAgICAgICAgICAgaWYgbmFtZSA9PSAidmVyYm9zZSI6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYudmVyYm9zZQorICAgICAgICAgICAgICAgIHJldHVybiB2ZXJib3NlCiAgICAgICAgICAg
ICByYWlzZSBLZXlFcnJvcigiTm90IG1vY2tlZCBvdXQ6ICVzIiAlIG5hbWUpCiAKICAgICByZXR1
cm4gQ29uZmlnKCkKIAogCi1jbGFzcyBUZXN0SW1wb3J0SG9va0luc3RhbGxhdGlvbihvYmplY3Qp
OgotCitjbGFzcyBUZXN0SW1wb3J0SG9va0luc3RhbGxhdGlvbjoKICAgICBAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoImluaXRpYWxfY29uZnRlc3QiLCBbVHJ1ZSwgRmFsc2VdKQogICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgibW9kZSIsIFsicGxhaW4iLCAicmV3cml0ZSJdKQogICAgIGRl
ZiB0ZXN0X2NvbmZ0ZXN0X2Fzc2VydGlvbl9yZXdyaXRlKHNlbGYsIHRlc3RkaXIsIGluaXRpYWxf
Y29uZnRlc3QsIG1vZGUpOgotICAgICAgICAiIiJUZXN0IHRoYXQgY29uZnRlc3QgZmlsZXMgYXJl
IHVzaW5nIGFzc2VydGlvbiByZXdyaXRlIG9uIGltcG9ydC4KLSAgICAgICAgKCMxNjE5KQotICAg
ICAgICAiIiIKKyAgICAgICAgIiIiVGVzdCB0aGF0IGNvbmZ0ZXN0IGZpbGVzIGFyZSB1c2luZyBh
c3NlcnRpb24gcmV3cml0ZSBvbiBpbXBvcnQgKCMxNjE5KS4iIiIKICAgICAgICAgdGVzdGRpci50
bXBkaXIuam9pbigiZm9vL3Rlc3RzIikuZW5zdXJlKGRpcj0xKQogICAgICAgICBjb25mdGVzdF9w
YXRoID0gImNvbmZ0ZXN0LnB5IiBpZiBpbml0aWFsX2NvbmZ0ZXN0IGVsc2UgImZvby9jb25mdGVz
dC5weSIKICAgICAgICAgY29udGVudHMgPSB7CkBAIC03NSw3ICs3MSwyMyBAQCBjbGFzcyBUZXN0
SW1wb3J0SG9va0luc3RhbGxhdGlvbihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKLSAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmFzc2VydCAxID09IDAqIl0pCisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAiPiAgICAgICByLmFzc2VydG91dGNvbWUocGFzc2VkPTEpIiwKKyAgICAgICAgICAgICAg
ICAiRSAgICAgICBBc3NlcnRpb25FcnJvcjogKFtbXVtdXSwgW1tdW11dLCBbW108VGVzdFJlcG9y
dCAqPltdXSkqIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICBhc3NlcnQgeydmYWlsZWQnOiAx
LC4uLiAnc2tpcHBlZCc6IDB9ID09IHsnZmFpbGVkJzogMCwuLi4gJ3NraXBwZWQnOiAwfSIsCisg
ICAgICAgICAgICAgICAgIkUgICAgICAgICBPbWl0dGluZyAxIGlkZW50aWNhbCBpdGVtcywgdXNl
IC12diB0byBzaG93IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIERpZmZlcmluZyBpdGVt
czoiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAgVXNlIC12IHRvIGdldCB0aGUgZnVsbCBk
aWZmIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorICAgICAgICAjIFhYWDogdW5zdGFibGUg
b3V0cHV0LgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXNfcmFuZG9tKAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJFICAgICAgICAgeydmYWlsZWQnOiAxfSAhPSB7
J2ZhaWxlZCc6IDB9IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIHsncGFzc2VkJzogMH0g
IT0geydwYXNzZWQnOiAxfSIsCisgICAgICAgICAgICBdCisgICAgICAgICkKIAogICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgibW9kZSIsIFsicGxhaW4iLCAicmV3cml0ZSJdKQogICAgIGRl
ZiB0ZXN0X3B5dGVzdF9wbHVnaW5zX3Jld3JpdGUoc2VsZiwgdGVzdGRpciwgbW9kZSk6CkBAIC0x
MzQsMTUgKzE0NiwxNSBAQCBjbGFzcyBUZXN0SW1wb3J0SG9va0luc3RhbGxhdGlvbihvYmplY3Qp
OgogICAgIGRlZiB0ZXN0X3B5dGVzdF9wbHVnaW5zX3Jld3JpdGVfbW9kdWxlX25hbWVzX2NvcnJl
Y3RseShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIiVGVzdCB0aGF0IHdlIG1hdGNoIGZpbGVz
IGNvcnJlY3RseSB3aGVuIHRoZXkgYXJlIG1hcmtlZCBmb3IgcmV3cml0aW5nICgjMjkzOSkuIiIi
CiAgICAgICAgIGNvbnRlbnRzID0gewotICAgICAgICAgICAgImNvbmZ0ZXN0LnB5IjogIiIiCisg
ICAgICAgICAgICAiY29uZnRlc3QucHkiOiAiIiJcCiAgICAgICAgICAgICAgICAgcHl0ZXN0X3Bs
dWdpbnMgPSAiaGFtIgogICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgImhhbS5weSI6ICIi
LAogICAgICAgICAgICAgImhhbXN0ZXIucHkiOiAiIiwKLSAgICAgICAgICAgICJ0ZXN0X2Zvby5w
eSI6ICIiIgorICAgICAgICAgICAgInRlc3RfZm9vLnB5IjogIiIiXAogICAgICAgICAgICAgICAg
IGRlZiB0ZXN0X2ZvbyhweXRlc3Rjb25maWcpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQg
cHl0ZXN0Y29uZmlnLnBsdWdpbm1hbmFnZXIucmV3cml0ZV9ob29rLmZpbmRfbW9kdWxlKCdoYW0n
KSBpcyBub3QgTm9uZQotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcHl0ZXN0Y29uZmlnLnBs
dWdpbm1hbmFnZXIucmV3cml0ZV9ob29rLmZpbmRfbW9kdWxlKCdoYW1zdGVyJykgaXMgTm9uZQor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcHl0ZXN0Y29uZmlnLnBsdWdpbm1hbmFnZXIucmV3
cml0ZV9ob29rLmZpbmRfc3BlYygnaGFtJykgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IHB5dGVzdGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJld3JpdGVfaG9vay5maW5kX3Nw
ZWMoJ2hhbXN0ZXInKSBpcyBOb25lCiAgICAgICAgICAgICAiIiIsCiAgICAgICAgIH0KICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKCoqY29udGVudHMpCkBAIC0xNTAsMTMgKzE2MiwxMyBAQCBj
bGFzcyBUZXN0SW1wb3J0SG9va0luc3RhbGxhdGlvbihvYmplY3QpOgogICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAwCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1vZGUiLCBb
InBsYWluIiwgInJld3JpdGUiXSkKLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInBsdWdp
bl9zdGF0ZSIsIFsiZGV2ZWxvcG1lbnQiLCAiaW5zdGFsbGVkIl0pCi0gICAgZGVmIHRlc3RfaW5z
dGFsbGVkX3BsdWdpbl9yZXdyaXRlKHNlbGYsIHRlc3RkaXIsIG1vZGUsIHBsdWdpbl9zdGF0ZSk6
CisgICAgZGVmIHRlc3RfaW5zdGFsbGVkX3BsdWdpbl9yZXdyaXRlKHNlbGYsIHRlc3RkaXIsIG1v
ZGUsIG1vbmtleXBhdGNoKToKKyAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElT
QUJMRV9QTFVHSU5fQVVUT0xPQUQiLCByYWlzaW5nPUZhbHNlKQogICAgICAgICAjIE1ha2Ugc3Vy
ZSB0aGUgaG9vayBpcyBpbnN0YWxsZWQgZWFybHkgZW5vdWdoIHNvIHRoYXQgcGx1Z2lucwogICAg
ICAgICAjIGluc3RhbGxlZCB2aWEgc2V0dXB0b29scyBhcmUgcmV3cml0dGVuLgogICAgICAgICB0
ZXN0ZGlyLnRtcGRpci5qb2luKCJoYW1wa2ciKS5lbnN1cmUoZGlyPTEpCiAgICAgICAgIGNvbnRl
bnRzID0gewotICAgICAgICAgICAgImhhbXBrZy9fX2luaXRfXy5weSI6ICIiIgorICAgICAgICAg
ICAgImhhbXBrZy9fX2luaXRfXy5weSI6ICIiIlwKICAgICAgICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0CiAKICAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKQEAgLTE2NSw3ICsxNzcsNyBA
QCBjbGFzcyBUZXN0SW1wb3J0SG9va0luc3RhbGxhdGlvbihvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcy5wb3AoMCkgPT0gdmFsdWUKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrCiAgICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAic3BhbXBs
dWdpbi5weSI6ICIiIgorICAgICAgICAgICAgInNwYW1wbHVnaW4ucHkiOiAiIiJcCiAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBmcm9tIGhhbXBrZyBpbXBvcnQgY2hlY2tf
Zmlyc3QyCiAKQEAgLTE3NSw0NiArMTg3LDMyIEBAIGNsYXNzIFRlc3RJbXBvcnRIb29rSW5zdGFs
bGF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1ZXMucG9wKDAp
ID09IHZhbHVlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrCiAgICAgICAgICAgICAiIiIs
Ci0gICAgICAgICAgICAibWFpbndyYXBwZXIucHkiOiAiIiIKLSAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QsIHBrZ19yZXNvdXJjZXMKLQotICAgICAgICAgICAgcGx1Z2luX3N0YXRlID0gIntwbHVn
aW5fc3RhdGV9IgotCi0gICAgICAgICAgICBjbGFzcyBEdW1teURpc3RJbmZvKG9iamVjdCk6Ci0g
ICAgICAgICAgICAgICAgcHJvamVjdF9uYW1lID0gJ3NwYW0nCi0gICAgICAgICAgICAgICAgdmVy
c2lvbiA9ICcxLjAnCi0KLSAgICAgICAgICAgICAgICBkZWYgX2dldF9tZXRhZGF0YShzZWxmLCBu
YW1lKToKLSAgICAgICAgICAgICAgICAgICAgIyAnUkVDT1JEJyBtZXRhLWRhdGEgb25seSBhdmFp
bGFibGUgaW4gaW5zdGFsbGVkIHBsdWdpbnMKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSA9
PSAnUkVDT1JEJyBhbmQgcGx1Z2luX3N0YXRlID09ICJpbnN0YWxsZWQiOgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFsnc3BhbXBsdWdpbi5weSxzaGEyNTY9YWJjLDEyMycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYW1wa2cvX19pbml0X18ucHksc2hhMjU2PWFi
YywxMjMnXQotICAgICAgICAgICAgICAgICAgICAjICdTT1VSQ0VTLnR4dCcgbWV0YS1kYXRhIG9u
bHkgYXZhaWxhYmxlIGZvciBwbHVnaW5zIGluIGRldmVsb3BtZW50IG1vZGUKLSAgICAgICAgICAg
ICAgICAgICAgZWxpZiBuYW1lID09ICdTT1VSQ0VTLnR4dCcgYW5kIHBsdWdpbl9zdGF0ZSA9PSAi
ZGV2ZWxvcG1lbnQiOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsnc3BhbXBsdWdp
bi5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYW1wa2cvX19pbml0X18u
cHknXQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgICJtYWlud3Jh
cHBlci5weSI6ICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGZy
b20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGltcG9ydGxpYl9tZXRhZGF0YQogCiAgICAgICAgICAg
ICBjbGFzcyBEdW1teUVudHJ5UG9pbnQob2JqZWN0KToKICAgICAgICAgICAgICAgICBuYW1lID0g
J3NwYW0nCiAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUgPSAnc3BhbS5weScKLSAgICAgICAg
ICAgICAgICBhdHRycyA9ICgpCi0gICAgICAgICAgICAgICAgZXh0cmFzID0gTm9uZQotICAgICAg
ICAgICAgICAgIGRpc3QgPSBEdW1teURpc3RJbmZvKCkKKyAgICAgICAgICAgICAgICBncm91cCA9
ICdweXRlc3QxMScKIAotICAgICAgICAgICAgICAgIGRlZiBsb2FkKHNlbGYsIHJlcXVpcmU9VHJ1
ZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBkZWYgbG9hZChzZWxmKToKICAg
ICAgICAgICAgICAgICAgICAgaW1wb3J0IHNwYW1wbHVnaW4KICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHNwYW1wbHVnaW4KIAotICAgICAgICAgICAgZGVmIGl0ZXJfZW50cnlfcG9pbnRzKG5h
bWUpOgotICAgICAgICAgICAgICAgIHlpZWxkIER1bW15RW50cnlQb2ludCgpCisgICAgICAgICAg
ICBjbGFzcyBEdW1teURpc3RJbmZvKG9iamVjdCk6CisgICAgICAgICAgICAgICAgdmVyc2lvbiA9
ICcxLjAnCisgICAgICAgICAgICAgICAgZmlsZXMgPSAoJ3NwYW1wbHVnaW4ucHknLCAnaGFtcGtn
L19faW5pdF9fLnB5JykKKyAgICAgICAgICAgICAgICBlbnRyeV9wb2ludHMgPSAoRHVtbXlFbnRy
eVBvaW50KCksKQorICAgICAgICAgICAgICAgIG1ldGFkYXRhID0geyduYW1lJzogJ2Zvbyd9CisK
KyAgICAgICAgICAgIGRlZiBkaXN0cmlidXRpb25zKCk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IChEdW1teURpc3RJbmZvKCksKQogCi0gICAgICAgICAgICBwa2dfcmVzb3VyY2VzLml0ZXJfZW50
cnlfcG9pbnRzID0gaXRlcl9lbnRyeV9wb2ludHMKKyAgICAgICAgICAgIGltcG9ydGxpYl9tZXRh
ZGF0YS5kaXN0cmlidXRpb25zID0gZGlzdHJpYnV0aW9ucwogICAgICAgICAgICAgcHl0ZXN0Lm1h
aW4oKQotICAgICAgICAgICAgIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBwbHVnaW5fc3Rh
dGU9cGx1Z2luX3N0YXRlCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgInRlc3RfZm9vLnB5
IjogIiIiCisgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAidGVzdF9mb28ucHkiOiAiIiJc
CiAgICAgICAgICAgICBkZWYgdGVzdChjaGVja19maXJzdCk6CiAgICAgICAgICAgICAgICAgY2hl
Y2tfZmlyc3QoWzEwLCAzMF0sIDMwKQogCkBAIC0yNzksMTYgKzI3NywxNSBAQCBjbGFzcyBUZXN0
SW1wb3J0SG9va0luc3RhbGxhdGlvbihvYmplY3QpOgogICAgICAgICAgICAgXQogICAgICAgICAp
CiAKLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZV9jaGVja3NfdHlwZXMoc2Vs
Zik6CisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfYXNzZXJ0X3Jld3JpdGVfY2hlY2tzX3R5cGVzKHNl
bGYpIC0+IE5vbmU6CiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpOgotICAg
ICAgICAgICAgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlKFsicHl0ZXN0X3Rlc3RzX2lu
dGVybmFsX25vbl9leGlzdGluZyJdKQorICAgICAgICAgICAgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2Vy
dF9yZXdyaXRlKFsicHl0ZXN0X3Rlc3RzX2ludGVybmFsX25vbl9leGlzdGluZyJdKSAgIyB0eXBl
OiBpZ25vcmUKICAgICAgICAgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlKAogICAgICAg
ICAgICAgInB5dGVzdF90ZXN0c19pbnRlcm5hbF9ub25fZXhpc3RpbmciLCAicHl0ZXN0X3Rlc3Rz
X2ludGVybmFsX25vbl9leGlzdGluZzIiCiAgICAgICAgICkKIAogCi1jbGFzcyBUZXN0QmluUmVw
ckludGVncmF0aW9uKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RCaW5SZXBySW50ZWdyYXRpb246CiAg
ICAgZGVmIHRlc3RfcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZV9jYWxsZWQoc2VsZiwgdGVzdGRp
cik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCkBAIC0z
MTQsMTUyICszMTEsMzM1IEBAIGNsYXNzIFRlc3RCaW5SZXBySW50ZWdyYXRpb24ob2JqZWN0KToK
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3RfaGVsbG8qRkFJTCoi
LCAiKnRlc3RfY2hlY2sqUEFTUyoiXSkKIAogCi1kZWYgY2FsbGVxdWFsKGxlZnQsIHJpZ2h0LCB2
ZXJib3NlPUZhbHNlKToKLSAgICBjb25maWcgPSBtb2NrX2NvbmZpZygpCi0gICAgY29uZmlnLnZl
cmJvc2UgPSB2ZXJib3NlCi0gICAgcmV0dXJuIHBsdWdpbi5weXRlc3RfYXNzZXJ0cmVwcl9jb21w
YXJlKGNvbmZpZywgIj09IiwgbGVmdCwgcmlnaHQpCitkZWYgY2FsbG9wKG9wOiBzdHIsIGxlZnQ6
IEFueSwgcmlnaHQ6IEFueSwgdmVyYm9zZTogaW50ID0gMCkgLT4gT3B0aW9uYWxbTGlzdFtzdHJd
XToKKyAgICBjb25maWcgPSBtb2NrX2NvbmZpZyh2ZXJib3NlPXZlcmJvc2UpCisgICAgcmV0dXJu
IHBsdWdpbi5weXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlKGNvbmZpZywgb3AsIGxlZnQsIHJpZ2h0
KQorCiAKK2RlZiBjYWxsZXF1YWwobGVmdDogQW55LCByaWdodDogQW55LCB2ZXJib3NlOiBpbnQg
PSAwKSAtPiBPcHRpb25hbFtMaXN0W3N0cl1dOgorICAgIHJldHVybiBjYWxsb3AoIj09IiwgbGVm
dCwgcmlnaHQsIHZlcmJvc2UpCiAKLWNsYXNzIFRlc3RBc3NlcnRfcmVwcmNvbXBhcmUob2JqZWN0
KToKIAorY2xhc3MgVGVzdEFzc2VydF9yZXByY29tcGFyZToKICAgICBkZWYgdGVzdF9kaWZmZXJl
bnRfdHlwZXMoc2VsZik6CiAgICAgICAgIGFzc2VydCBjYWxsZXF1YWwoWzAsIDFdLCAiZm9vIikg
aXMgTm9uZQogCi0gICAgZGVmIHRlc3Rfc3VtbWFyeShzZWxmKToKLSAgICAgICAgc3VtbWFyeSA9
IGNhbGxlcXVhbChbMCwgMV0sIFswLCAyXSlbMF0KKyAgICBkZWYgdGVzdF9zdW1tYXJ5KHNlbGYp
IC0+IE5vbmU6CisgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKFswLCAxXSwgWzAsIDJdKQorICAg
ICAgICBhc3NlcnQgbGluZXMgaXMgbm90IE5vbmUKKyAgICAgICAgc3VtbWFyeSA9IGxpbmVzWzBd
CiAgICAgICAgIGFzc2VydCBsZW4oc3VtbWFyeSkgPCA2NQogCiAgICAgZGVmIHRlc3RfdGV4dF9k
aWZmKHNlbGYpOgotICAgICAgICBkaWZmID0gY2FsbGVxdWFsKCJzcGFtIiwgImVnZ3MiKVsxOl0K
LSAgICAgICAgYXNzZXJ0ICItIHNwYW0iIGluIGRpZmYKLSAgICAgICAgYXNzZXJ0ICIrIGVnZ3Mi
IGluIGRpZmYKKyAgICAgICAgYXNzZXJ0IGNhbGxlcXVhbCgic3BhbSIsICJlZ2dzIikgPT0gWwor
ICAgICAgICAgICAgIidzcGFtJyA9PSAnZWdncyciLAorICAgICAgICAgICAgIi0gZWdncyIsCisg
ICAgICAgICAgICAiKyBzcGFtIiwKKyAgICAgICAgXQogCi0gICAgZGVmIHRlc3RfdGV4dF9za2lw
cGluZyhzZWxmKToKKyAgICBkZWYgdGVzdF90ZXh0X3NraXBwaW5nKHNlbGYpIC0+IE5vbmU6CiAg
ICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKCJhIiAqIDUwICsgInNwYW0iLCAiYSIgKiA1MCArICJl
Z2dzIikKKyAgICAgICAgYXNzZXJ0IGxpbmVzIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCAi
U2tpcHBpbmciIGluIGxpbmVzWzFdCiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgogICAgICAg
ICAgICAgYXNzZXJ0ICJhIiAqIDUwIG5vdCBpbiBsaW5lCiAKLSAgICBkZWYgdGVzdF90ZXh0X3Nr
aXBwaW5nX3ZlcmJvc2Uoc2VsZik6Ci0gICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKCJhIiAqIDUw
ICsgInNwYW0iLCAiYSIgKiA1MCArICJlZ2dzIiwgdmVyYm9zZT1UcnVlKQotICAgICAgICBhc3Nl
cnQgIi0gIiArICJhIiAqIDUwICsgInNwYW0iIGluIGxpbmVzCi0gICAgICAgIGFzc2VydCAiKyAi
ICsgImEiICogNTAgKyAiZWdncyIgaW4gbGluZXMKKyAgICBkZWYgdGVzdF90ZXh0X3NraXBwaW5n
X3ZlcmJvc2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwoImEiICog
NTAgKyAic3BhbSIsICJhIiAqIDUwICsgImVnZ3MiLCB2ZXJib3NlPTEpCisgICAgICAgIGFzc2Vy
dCBsaW5lcyBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgIi0gIiArICJhIiAqIDUwICsgImVn
Z3MiIGluIGxpbmVzCisgICAgICAgIGFzc2VydCAiKyAiICsgImEiICogNTAgKyAic3BhbSIgaW4g
bGluZXMKIAotICAgIGRlZiB0ZXN0X211bHRpbGluZV90ZXh0X2RpZmYoc2VsZik6CisgICAgZGVm
IHRlc3RfbXVsdGlsaW5lX3RleHRfZGlmZihzZWxmKSAtPiBOb25lOgogICAgICAgICBsZWZ0ID0g
ImZvb1xuc3BhbVxuYmFyIgogICAgICAgICByaWdodCA9ICJmb29cbmVnZ3NcbmJhciIKICAgICAg
ICAgZGlmZiA9IGNhbGxlcXVhbChsZWZ0LCByaWdodCkKLSAgICAgICAgYXNzZXJ0ICItIHNwYW0i
IGluIGRpZmYKLSAgICAgICAgYXNzZXJ0ICIrIGVnZ3MiIGluIGRpZmYKKyAgICAgICAgYXNzZXJ0
IGRpZmYgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0ICItIGVnZ3MiIGluIGRpZmYKKyAgICAg
ICAgYXNzZXJ0ICIrIHNwYW0iIGluIGRpZmYKKworICAgIGRlZiB0ZXN0X2J5dGVzX2RpZmZfbm9y
bWFsKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBzcGVjaWFsIGhhbmRsaW5nIGZvciBieXRlcyBk
aWZmICgjNTI2MCkiIiIKKyAgICAgICAgZGlmZiA9IGNhbGxlcXVhbChiInNwYW0iLCBiImVnZ3Mi
KQorCisgICAgICAgIGFzc2VydCBkaWZmID09IFsKKyAgICAgICAgICAgICJiJ3NwYW0nID09IGIn
ZWdncyciLAorICAgICAgICAgICAgIkF0IGluZGV4IDAgZGlmZjogYidzJyAhPSBiJ2UnIiwKKyAg
ICAgICAgICAgICJVc2UgLXYgdG8gZ2V0IHRoZSBmdWxsIGRpZmYiLAorICAgICAgICBdCiAKLSAg
ICBkZWYgdGVzdF9saXN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X2J5dGVzX2RpZmZfdmVyYm9zZShz
ZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgc3BlY2lhbCBoYW5kbGluZyBmb3IgYnl0ZXMgZGlmZiAo
IzUyNjApIiIiCisgICAgICAgIGRpZmYgPSBjYWxsZXF1YWwoYiJzcGFtIiwgYiJlZ2dzIiwgdmVy
Ym9zZT0xKQorICAgICAgICBhc3NlcnQgZGlmZiA9PSBbCisgICAgICAgICAgICAiYidzcGFtJyA9
PSBiJ2VnZ3MnIiwKKyAgICAgICAgICAgICJBdCBpbmRleCAwIGRpZmY6IGIncycgIT0gYidlJyIs
CisgICAgICAgICAgICAiRnVsbCBkaWZmOiIsCisgICAgICAgICAgICAiLSBiJ2VnZ3MnIiwKKyAg
ICAgICAgICAgICIrIGInc3BhbSciLAorICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9saXN0KHNl
bGYpIC0+IE5vbmU6CiAgICAgICAgIGV4cGwgPSBjYWxsZXF1YWwoWzAsIDFdLCBbMCwgMl0pCisg
ICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBsZW4oZXhwbCkg
PiAxCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCiAgICAgICAgIFsibGVmdCIsICJy
aWdodCIsICJleHBlY3RlZCJdLAogICAgICAgICBbCi0gICAgICAgICAgICAoCisgICAgICAgICAg
ICBweXRlc3QucGFyYW0oCiAgICAgICAgICAgICAgICAgWzAsIDFdLAogICAgICAgICAgICAgICAg
IFswLCAyXSwKICAgICAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICAgICBGdWxsIGRpZmY6
Ci0gICAgICAgICAgICAgICAgLSBbMCwgMV0KKyAgICAgICAgICAgICAgICAtIFswLCAyXQogICAg
ICAgICAgICAgICAgID8gICAgIF4KLSAgICAgICAgICAgICAgICArIFswLCAyXQorICAgICAgICAg
ICAgICAgICsgWzAsIDFdCiAgICAgICAgICAgICAgICAgPyAgICAgXgogICAgICAgICAgICAgIiIi
LAorICAgICAgICAgICAgICAgIGlkPSJsaXN0cyIsCiAgICAgICAgICAgICApLAotICAgICAgICAg
ICAgKAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAogICAgICAgICAgICAgICAgIHswOiAxfSwK
ICAgICAgICAgICAgICAgICB7MDogMn0sCiAgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICAgICAgRnVsbCBkaWZmOgotICAgICAgICAgICAgICAgIC0gezA6IDF9CisgICAgICAgICAgICAg
ICAgLSB7MDogMn0KICAgICAgICAgICAgICAgICA/ICAgICBeCi0gICAgICAgICAgICAgICAgKyB7
MDogMn0KKyAgICAgICAgICAgICAgICArIHswOiAxfQogICAgICAgICAgICAgICAgID8gICAgIF4K
ICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICBpZD0iZGljdHMiLAogICAgICAgICAg
ICAgKSwKLSAgICAgICAgICAgICgKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKICAgICAgICAg
ICAgICAgICB7MCwgMX0sCiAgICAgICAgICAgICAgICAgezAsIDJ9LAogICAgICAgICAgICAgICAg
ICIiIgogICAgICAgICAgICAgICAgIEZ1bGwgZGlmZjoKLSAgICAgICAgICAgICAgICAtIHNldChb
MCwgMV0pCi0gICAgICAgICAgICAgICAgPyAgICAgICAgIF4KLSAgICAgICAgICAgICAgICArIHNl
dChbMCwgMl0pCi0gICAgICAgICAgICAgICAgPyAgICAgICAgIF4KLSAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgICAgIGlmIG5vdCBQWTMKLSAgICAgICAgICAgICAgICBlbHNlICIiIgotICAg
ICAgICAgICAgICAgIEZ1bGwgZGlmZjoKLSAgICAgICAgICAgICAgICAtIHswLCAxfQorICAgICAg
ICAgICAgICAgIC0gezAsIDJ9CiAgICAgICAgICAgICAgICAgPyAgICAgXgotICAgICAgICAgICAg
ICAgICsgezAsIDJ9CisgICAgICAgICAgICAgICAgKyB7MCwgMX0KICAgICAgICAgICAgICAgICA/
ICAgICBeCiAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgaWQ9InNldHMiLAogICAg
ICAgICAgICAgKSwKICAgICAgICAgXSwKICAgICApCi0gICAgZGVmIHRlc3RfaXRlcmFibGVfZnVs
bF9kaWZmKHNlbGYsIGxlZnQsIHJpZ2h0LCBleHBlY3RlZCk6CisgICAgZGVmIHRlc3RfaXRlcmFi
bGVfZnVsbF9kaWZmKHNlbGYsIGxlZnQsIHJpZ2h0LCBleHBlY3RlZCkgLT4gTm9uZToKICAgICAg
ICAgIiIiVGVzdCB0aGUgZnVsbCBkaWZmIGFzc2VydGlvbiBmYWlsdXJlIGV4cGxhbmF0aW9uLgog
CiAgICAgICAgIFdoZW4gdmVyYm9zZSBpcyBGYWxzZSwgdGhlbiBqdXN0IGEgLXYgbm90aWNlIHRv
IGdldCB0aGUgZGlmZiBpcyByZW5kZXJlZCwKICAgICAgICAgd2hlbiB2ZXJib3NlIGlzIFRydWUs
IHRoZW4gbmRpZmYgb2YgdGhlIHBwcmludCBpcyByZXR1cm5lZC4KICAgICAgICAgIiIiCi0gICAg
ICAgIGV4cGwgPSBjYWxsZXF1YWwobGVmdCwgcmlnaHQsIHZlcmJvc2U9RmFsc2UpCisgICAgICAg
IGV4cGwgPSBjYWxsZXF1YWwobGVmdCwgcmlnaHQsIHZlcmJvc2U9MCkKKyAgICAgICAgYXNzZXJ0
IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGV4cGxbLTFdID09ICJVc2UgLXYgdG8g
Z2V0IHRoZSBmdWxsIGRpZmYiCi0gICAgICAgIGV4cGwgPSAiXG4iLmpvaW4oY2FsbGVxdWFsKGxl
ZnQsIHJpZ2h0LCB2ZXJib3NlPVRydWUpKQotICAgICAgICBhc3NlcnQgZXhwbC5lbmRzd2l0aCh0
ZXh0d3JhcC5kZWRlbnQoZXhwZWN0ZWQpLnN0cmlwKCkpCisgICAgICAgIHZlcmJvc2VfZXhwbCA9
IGNhbGxlcXVhbChsZWZ0LCByaWdodCwgdmVyYm9zZT0xKQorICAgICAgICBhc3NlcnQgdmVyYm9z
ZV9leHBsIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCAiXG4iLmpvaW4odmVyYm9zZV9leHBs
KS5lbmRzd2l0aCh0ZXh0d3JhcC5kZWRlbnQoZXhwZWN0ZWQpLnN0cmlwKCkpCiAKLSAgICBkZWYg
dGVzdF9saXN0X2RpZmZlcmVudF9sZW5ndGhzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xpc3RfZGlm
ZmVyZW50X2xlbmd0aHMoc2VsZikgLT4gTm9uZToKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChb
MCwgMV0sIFswLCAxLCAyXSkKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKICAgICAg
ICAgYXNzZXJ0IGxlbihleHBsKSA+IDEKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChbMCwgMSwg
Ml0sIFswLCAxXSkKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgYXNz
ZXJ0IGxlbihleHBsKSA+IDEKIAotICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgZGVmIHRl
c3RfbGlzdF93cmFwX2Zvcl9tdWx0aXBsZV9saW5lcyhzZWxmKToKKyAgICAgICAgbG9uZ19kID0g
ImQiICogODAKKyAgICAgICAgbDEgPSBbImEiLCAiYiIsICJjIl0KKyAgICAgICAgbDIgPSBbImEi
LCAiYiIsICJjIiwgbG9uZ19kXQorICAgICAgICBkaWZmID0gY2FsbGVxdWFsKGwxLCBsMiwgdmVy
Ym9zZT1UcnVlKQorICAgICAgICBhc3NlcnQgZGlmZiA9PSBbCisgICAgICAgICAgICAiWydhJywg
J2InLCAnYyddID09IFsnYScsICdiJywgJ2MuLi5kZGRkZGRkZGRkZGQnXSIsCisgICAgICAgICAg
ICAiUmlnaHQgY29udGFpbnMgb25lIG1vcmUgaXRlbTogJyIgKyBsb25nX2QgKyAiJyIsCisgICAg
ICAgICAgICAiRnVsbCBkaWZmOiIsCisgICAgICAgICAgICAiICBbIiwKKyAgICAgICAgICAgICIg
ICAnYScsIiwKKyAgICAgICAgICAgICIgICAnYicsIiwKKyAgICAgICAgICAgICIgICAnYycsIiwK
KyAgICAgICAgICAgICItICAnIiArIGxvbmdfZCArICInLCIsCisgICAgICAgICAgICAiICBdIiwK
KyAgICAgICAgXQorCisgICAgICAgIGRpZmYgPSBjYWxsZXF1YWwobDIsIGwxLCB2ZXJib3NlPVRy
dWUpCisgICAgICAgIGFzc2VydCBkaWZmID09IFsKKyAgICAgICAgICAgICJbJ2EnLCAnYicsICdj
Li4uZGRkZGRkZGRkZGRkJ10gPT0gWydhJywgJ2InLCAnYyddIiwKKyAgICAgICAgICAgICJMZWZ0
IGNvbnRhaW5zIG9uZSBtb3JlIGl0ZW06ICciICsgbG9uZ19kICsgIiciLAorICAgICAgICAgICAg
IkZ1bGwgZGlmZjoiLAorICAgICAgICAgICAgIiAgWyIsCisgICAgICAgICAgICAiICAgJ2EnLCIs
CisgICAgICAgICAgICAiICAgJ2InLCIsCisgICAgICAgICAgICAiICAgJ2MnLCIsCisgICAgICAg
ICAgICAiKyAgJyIgKyBsb25nX2QgKyAiJywiLAorICAgICAgICAgICAgIiAgXSIsCisgICAgICAg
IF0KKworICAgIGRlZiB0ZXN0X2xpc3Rfd3JhcF9mb3Jfd2lkdGhfcmV3cmFwX3NhbWVfbGVuZ3Ro
KHNlbGYpOgorICAgICAgICBsb25nX2EgPSAiYSIgKiAzMAorICAgICAgICBsb25nX2IgPSAiYiIg
KiAzMAorICAgICAgICBsb25nX2MgPSAiYyIgKiAzMAorICAgICAgICBsMSA9IFtsb25nX2EsIGxv
bmdfYiwgbG9uZ19jXQorICAgICAgICBsMiA9IFtsb25nX2IsIGxvbmdfYywgbG9uZ19hXQorICAg
ICAgICBkaWZmID0gY2FsbGVxdWFsKGwxLCBsMiwgdmVyYm9zZT1UcnVlKQorICAgICAgICBhc3Nl
cnQgZGlmZiA9PSBbCisgICAgICAgICAgICAiWydhYWFhYWFhYWFhYS4uLmNjY2NjY2NjY2NjYydd
ID09IFsnYmJiYmJiYmJiYmIuLi5hYWFhYWFhYWFhYWEnXSIsCisgICAgICAgICAgICAiQXQgaW5k
ZXggMCBkaWZmOiAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJyAhPSAnYmJiYmJiYmJi
YmJiYmJiYmJiYmJiYmJiYmJiYmJiJyIsCisgICAgICAgICAgICAiRnVsbCBkaWZmOiIsCisgICAg
ICAgICAgICAiICBbIiwKKyAgICAgICAgICAgICIrICAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhJywiLAorICAgICAgICAgICAgIiAgICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi
YmInLCIsCisgICAgICAgICAgICAiICAgJ2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYycs
IiwKKyAgICAgICAgICAgICItICAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJywiLAor
ICAgICAgICAgICAgIiAgXSIsCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2xpc3RfZG9udF93
cmFwX3N0cmluZ3Moc2VsZik6CisgICAgICAgIGxvbmdfYSA9ICJhIiAqIDEwCisgICAgICAgIGwx
ID0gWyJhIl0gKyBbbG9uZ19hIGZvciBfIGluIHJhbmdlKDAsIDcpXQorICAgICAgICBsMiA9IFsi
c2hvdWxkIG5vdCBnZXQgd3JhcHBlZCJdCisgICAgICAgIGRpZmYgPSBjYWxsZXF1YWwobDEsIGwy
LCB2ZXJib3NlPVRydWUpCisgICAgICAgIGFzc2VydCBkaWZmID09IFsKKyAgICAgICAgICAgICJb
J2EnLCAnYWFhYWFhLi4uYWFhYWFhYScsIC4uLl0gPT0gWydzaG91bGQgbm90IGdldCB3cmFwcGVk
J10iLAorICAgICAgICAgICAgIkF0IGluZGV4IDAgZGlmZjogJ2EnICE9ICdzaG91bGQgbm90IGdl
dCB3cmFwcGVkJyIsCisgICAgICAgICAgICAiTGVmdCBjb250YWlucyA3IG1vcmUgaXRlbXMsIGZp
cnN0IGV4dHJhIGl0ZW06ICdhYWFhYWFhYWFhJyIsCisgICAgICAgICAgICAiRnVsbCBkaWZmOiIs
CisgICAgICAgICAgICAiICBbIiwKKyAgICAgICAgICAgICItICAnc2hvdWxkIG5vdCBnZXQgd3Jh
cHBlZCcsIiwKKyAgICAgICAgICAgICIrICAnYScsIiwKKyAgICAgICAgICAgICIrICAnYWFhYWFh
YWFhYScsIiwKKyAgICAgICAgICAgICIrICAnYWFhYWFhYWFhYScsIiwKKyAgICAgICAgICAgICIr
ICAnYWFhYWFhYWFhYScsIiwKKyAgICAgICAgICAgICIrICAnYWFhYWFhYWFhYScsIiwKKyAgICAg
ICAgICAgICIrICAnYWFhYWFhYWFhYScsIiwKKyAgICAgICAgICAgICIrICAnYWFhYWFhYWFhYScs
IiwKKyAgICAgICAgICAgICIrICAnYWFhYWFhYWFhYScsIiwKKyAgICAgICAgICAgICIgIF0iLAor
ICAgICAgICBdCisKKyAgICBkZWYgdGVzdF9kaWN0X3dyYXAoc2VsZik6CisgICAgICAgIGQxID0g
eyJjb21tb24iOiAxLCAiZW52IjogeyJlbnYxIjogMSwgImVudjIiOiAyfX0KKyAgICAgICAgZDIg
PSB7ImNvbW1vbiI6IDEsICJlbnYiOiB7ImVudjEiOiAxfX0KKworICAgICAgICBkaWZmID0gY2Fs
bGVxdWFsKGQxLCBkMiwgdmVyYm9zZT1UcnVlKQorICAgICAgICBhc3NlcnQgZGlmZiA9PSBbCisg
ICAgICAgICAgICAieydjb21tb24nOiAxLC4uLjEsICdlbnYyJzogMn19ID09IHsnY29tbW9uJzog
MSwuLi46IHsnZW52MSc6IDF9fSIsCisgICAgICAgICAgICAiT21pdHRpbmcgMSBpZGVudGljYWwg
aXRlbXMsIHVzZSAtdnYgdG8gc2hvdyIsCisgICAgICAgICAgICAiRGlmZmVyaW5nIGl0ZW1zOiIs
CisgICAgICAgICAgICAieydlbnYnOiB7J2VudjEnOiAxLCAnZW52Mic6IDJ9fSAhPSB7J2Vudic6
IHsnZW52MSc6IDF9fSIsCisgICAgICAgICAgICAiRnVsbCBkaWZmOiIsCisgICAgICAgICAgICAi
LSB7J2NvbW1vbic6IDEsICdlbnYnOiB7J2VudjEnOiAxfX0iLAorICAgICAgICAgICAgIisgeydj
b21tb24nOiAxLCAnZW52JzogeydlbnYxJzogMSwgJ2VudjInOiAyfX0iLAorICAgICAgICAgICAg
Ij8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrKysrKysrKysrIiwKKyAgICAgICAg
XQorCisgICAgICAgIGxvbmdfYSA9ICJhIiAqIDgwCisgICAgICAgIHN1YiA9IHsibG9uZ19hIjog
bG9uZ19hLCAic3ViMSI6IHsibG9uZ19hIjogInN1YnN0cmluZyB0aGF0IGdldHMgd3JhcHBlZCAi
ICogMn19CisgICAgICAgIGQxID0geyJlbnYiOiB7InN1YiI6IHN1Yn19CisgICAgICAgIGQyID0g
eyJlbnYiOiB7InN1YiI6IHN1Yn0sICJuZXciOiAxfQorICAgICAgICBkaWZmID0gY2FsbGVxdWFs
KGQxLCBkMiwgdmVyYm9zZT1UcnVlKQorICAgICAgICBhc3NlcnQgZGlmZiA9PSBbCisgICAgICAg
ICAgICAieydlbnYnOiB7J3N1Yi4uLiB3cmFwcGVkICd9fX19ID09IHsnZW52JzogeydzdWIuLi59
fX0sICduZXcnOiAxfSIsCisgICAgICAgICAgICAiT21pdHRpbmcgMSBpZGVudGljYWwgaXRlbXMs
IHVzZSAtdnYgdG8gc2hvdyIsCisgICAgICAgICAgICAiUmlnaHQgY29udGFpbnMgMSBtb3JlIGl0
ZW06IiwKKyAgICAgICAgICAgICJ7J25ldyc6IDF9IiwKKyAgICAgICAgICAgICJGdWxsIGRpZmY6
IiwKKyAgICAgICAgICAgICIgIHsiLAorICAgICAgICAgICAgIiAgICdlbnYnOiB7J3N1Yic6IHsn
bG9uZ19hJzogJyIgKyBsb25nX2EgKyAiJywiLAorICAgICAgICAgICAgIiAgICAgICAgICAgICAg
ICAgICAnc3ViMSc6IHsnbG9uZ19hJzogJ3N1YnN0cmluZyB0aGF0IGdldHMgd3JhcHBlZCBzdWJz
dHJpbmcgJyIsCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGhhdCBnZXRzIHdyYXBwZWQgJ319fSwiLAorICAgICAgICAgICAgIi0gICduZXcnOiAx
LCIsCisgICAgICAgICAgICAiICB9IiwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfZGljdChz
ZWxmKSAtPiBOb25lOgogICAgICAgICBleHBsID0gY2FsbGVxdWFsKHsiYSI6IDB9LCB7ImEiOiAx
fSkKKyAgICAgICAgYXNzZXJ0IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxlbihl
eHBsKSA+IDEKIAotICAgIGRlZiB0ZXN0X2RpY3Rfb21pdHRpbmcoc2VsZik6CisgICAgZGVmIHRl
c3RfZGljdF9vbWl0dGluZyhzZWxmKSAtPiBOb25lOgogICAgICAgICBsaW5lcyA9IGNhbGxlcXVh
bCh7ImEiOiAwLCAiYiI6IDF9LCB7ImEiOiAxLCAiYiI6IDF9KQorICAgICAgICBhc3NlcnQgbGlu
ZXMgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxpbmVzWzFdLnN0YXJ0c3dpdGgoIk9taXR0
aW5nIDEgaWRlbnRpY2FsIGl0ZW0iKQogICAgICAgICBhc3NlcnQgIkNvbW1vbiBpdGVtcyIgbm90
IGluIGxpbmVzCiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzWzE6XToKICAgICAgICAgICAgIGFz
c2VydCAiYiIgbm90IGluIGxpbmUKIAotICAgIGRlZiB0ZXN0X2RpY3Rfb21pdHRpbmdfd2l0aF92
ZXJib3NpdHlfMShzZWxmKToKLSAgICAgICAgIiIiIEVuc3VyZSBkaWZmZXJpbmcgaXRlbXMgYXJl
IHZpc2libGUgZm9yIHZlcmJvc2l0eT0xICgjMTUxMikgIiIiCisgICAgZGVmIHRlc3RfZGljdF9v
bWl0dGluZ193aXRoX3ZlcmJvc2l0eV8xKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIkVuc3Vy
ZSBkaWZmZXJpbmcgaXRlbXMgYXJlIHZpc2libGUgZm9yIHZlcmJvc2l0eT0xICgjMTUxMikuIiIi
CiAgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKHsiYSI6IDAsICJiIjogMX0sIHsiYSI6IDEsICJi
IjogMX0sIHZlcmJvc2U9MSkKKyAgICAgICAgYXNzZXJ0IGxpbmVzIGlzIG5vdCBOb25lCiAgICAg
ICAgIGFzc2VydCBsaW5lc1sxXS5zdGFydHN3aXRoKCJPbWl0dGluZyAxIGlkZW50aWNhbCBpdGVt
IikKICAgICAgICAgYXNzZXJ0IGxpbmVzWzJdLnN0YXJ0c3dpdGgoIkRpZmZlcmluZyBpdGVtcyIp
CiAgICAgICAgIGFzc2VydCBsaW5lc1szXSA9PSAieydhJzogMH0gIT0geydhJzogMX0iCiAgICAg
ICAgIGFzc2VydCAiQ29tbW9uIGl0ZW1zIiBub3QgaW4gbGluZXMKIAotICAgIGRlZiB0ZXN0X2Rp
Y3Rfb21pdHRpbmdfd2l0aF92ZXJib3NpdHlfMihzZWxmKToKKyAgICBkZWYgdGVzdF9kaWN0X29t
aXR0aW5nX3dpdGhfdmVyYm9zaXR5XzIoc2VsZikgLT4gTm9uZToKICAgICAgICAgbGluZXMgPSBj
YWxsZXF1YWwoeyJhIjogMCwgImIiOiAxfSwgeyJhIjogMSwgImIiOiAxfSwgdmVyYm9zZT0yKQor
ICAgICAgICBhc3NlcnQgbGluZXMgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxpbmVzWzFd
LnN0YXJ0c3dpdGgoIkNvbW1vbiBpdGVtczoiKQogICAgICAgICBhc3NlcnQgIk9taXR0aW5nIiBu
b3QgaW4gbGluZXNbMV0KICAgICAgICAgYXNzZXJ0IGxpbmVzWzJdID09ICJ7J2InOiAxfSIKIAot
ICAgIGRlZiB0ZXN0X3NldChzZWxmKToKKyAgICBkZWYgdGVzdF9kaWN0X2RpZmZlcmVudF9pdGVt
cyhzZWxmKToKKyAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwoeyJhIjogMH0sIHsiYiI6IDEsICJj
IjogMn0sIHZlcmJvc2U9MikKKyAgICAgICAgYXNzZXJ0IGxpbmVzID09IFsKKyAgICAgICAgICAg
ICJ7J2EnOiAwfSA9PSB7J2InOiAxLCAnYyc6IDJ9IiwKKyAgICAgICAgICAgICJMZWZ0IGNvbnRh
aW5zIDEgbW9yZSBpdGVtOiIsCisgICAgICAgICAgICAieydhJzogMH0iLAorICAgICAgICAgICAg
IlJpZ2h0IGNvbnRhaW5zIDIgbW9yZSBpdGVtczoiLAorICAgICAgICAgICAgInsnYic6IDEsICdj
JzogMn0iLAorICAgICAgICAgICAgIkZ1bGwgZGlmZjoiLAorICAgICAgICAgICAgIi0geydiJzog
MSwgJ2MnOiAyfSIsCisgICAgICAgICAgICAiKyB7J2EnOiAwfSIsCisgICAgICAgIF0KKyAgICAg
ICAgbGluZXMgPSBjYWxsZXF1YWwoeyJiIjogMSwgImMiOiAyfSwgeyJhIjogMH0sIHZlcmJvc2U9
MikKKyAgICAgICAgYXNzZXJ0IGxpbmVzID09IFsKKyAgICAgICAgICAgICJ7J2InOiAxLCAnYyc6
IDJ9ID09IHsnYSc6IDB9IiwKKyAgICAgICAgICAgICJMZWZ0IGNvbnRhaW5zIDIgbW9yZSBpdGVt
czoiLAorICAgICAgICAgICAgInsnYic6IDEsICdjJzogMn0iLAorICAgICAgICAgICAgIlJpZ2h0
IGNvbnRhaW5zIDEgbW9yZSBpdGVtOiIsCisgICAgICAgICAgICAieydhJzogMH0iLAorICAgICAg
ICAgICAgIkZ1bGwgZGlmZjoiLAorICAgICAgICAgICAgIi0geydhJzogMH0iLAorICAgICAgICAg
ICAgIisgeydiJzogMSwgJ2MnOiAyfSIsCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X3NlcXVl
bmNlX2RpZmZlcmVudF9pdGVtcyhzZWxmKToKKyAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwoKDEs
IDIpLCAoMywgNCwgNSksIHZlcmJvc2U9MikKKyAgICAgICAgYXNzZXJ0IGxpbmVzID09IFsKKyAg
ICAgICAgICAgICIoMSwgMikgPT0gKDMsIDQsIDUpIiwKKyAgICAgICAgICAgICJBdCBpbmRleCAw
IGRpZmY6IDEgIT0gMyIsCisgICAgICAgICAgICAiUmlnaHQgY29udGFpbnMgb25lIG1vcmUgaXRl
bTogNSIsCisgICAgICAgICAgICAiRnVsbCBkaWZmOiIsCisgICAgICAgICAgICAiLSAoMywgNCwg
NSkiLAorICAgICAgICAgICAgIisgKDEsIDIpIiwKKyAgICAgICAgXQorICAgICAgICBsaW5lcyA9
IGNhbGxlcXVhbCgoMSwgMiwgMyksICg0LCksIHZlcmJvc2U9MikKKyAgICAgICAgYXNzZXJ0IGxp
bmVzID09IFsKKyAgICAgICAgICAgICIoMSwgMiwgMykgPT0gKDQsKSIsCisgICAgICAgICAgICAi
QXQgaW5kZXggMCBkaWZmOiAxICE9IDQiLAorICAgICAgICAgICAgIkxlZnQgY29udGFpbnMgMiBt
b3JlIGl0ZW1zLCBmaXJzdCBleHRyYSBpdGVtOiAyIiwKKyAgICAgICAgICAgICJGdWxsIGRpZmY6
IiwKKyAgICAgICAgICAgICItICg0LCkiLAorICAgICAgICAgICAgIisgKDEsIDIsIDMpIiwKKyAg
ICAgICAgXQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGV4cGwg
PSBjYWxsZXF1YWwoezAsIDF9LCB7MCwgMn0pCisgICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBO
b25lCiAgICAgICAgIGFzc2VydCBsZW4oZXhwbCkgPiAxCiAKLSAgICBkZWYgdGVzdF9mcm96ZW56
ZXQoc2VsZik6CisgICAgZGVmIHRlc3RfZnJvemVuemV0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAg
IGV4cGwgPSBjYWxsZXF1YWwoZnJvemVuc2V0KFswLCAxXSksIHswLCAyfSkKKyAgICAgICAgYXNz
ZXJ0IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgYXNzZXJ0IGxlbihleHBsKSA+IDEKIAotICAg
IGRlZiB0ZXN0X1NlcXVlbmNlKHNlbGYpOgotICAgICAgICBjb2wgPSBweS5idWlsdGluLl90cnlp
bXBvcnQoImNvbGxlY3Rpb25zLmFiYyIsICJjb2xsZWN0aW9ucyIsICJzeXMiKQotICAgICAgICBp
ZiBub3QgaGFzYXR0cihjb2wsICJNdXRhYmxlU2VxdWVuY2UiKToKLSAgICAgICAgICAgIHB5dGVz
dC5za2lwKCJjYW5ub3QgaW1wb3J0IE11dGFibGVTZXF1ZW5jZSIpCi0gICAgICAgIE11dGFibGVT
ZXF1ZW5jZSA9IGNvbC5NdXRhYmxlU2VxdWVuY2UKLQotICAgICAgICBjbGFzcyBUZXN0U2VxdWVu
Y2UoTXV0YWJsZVNlcXVlbmNlKTogICMgd29ya3Mgd2l0aCBhIFNlcXVlbmNlIHN1YmNsYXNzCi0K
KyAgICBkZWYgdGVzdF9TZXF1ZW5jZShzZWxmKSAtPiBOb25lOgorICAgICAgICAjIFRlc3QgY29t
cGFyaW5nIHdpdGggYSBTZXF1ZW5jZSBzdWJjbGFzcy4KKyAgICAgICAgIyBUT0RPKHB5MzYpOiBJ
bmhlcml0IGZyb20gdHlwaW5nLk11dGFibGVTZXF1ZW5jZVtpbnRdLgorICAgICAgICBjbGFzcyBU
ZXN0U2VxdWVuY2UoY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSk6ICAjIHR5cGU6IGln
bm9yZVt0eXBlLWFyZ10KICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVyYWJsZSk6
CiAgICAgICAgICAgICAgICAgc2VsZi5lbGVtZW50cyA9IGxpc3QoaXRlcmFibGUpCiAKQEAgLTQ3
OSw1MSArNjU5LDg0IEBAIGNsYXNzIFRlc3RBc3NlcnRfcmVwcmNvbXBhcmUob2JqZWN0KToKICAg
ICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChUZXN0U2VxdWVu
Y2UoWzAsIDFdKSwgbGlzdChbMCwgMl0pKQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9u
ZQogICAgICAgICBhc3NlcnQgbGVuKGV4cGwpID4gMQogCi0gICAgZGVmIHRlc3RfbGlzdF90dXBs
ZXMoc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdF90dXBsZXMoc2VsZikgLT4gTm9uZToKICAgICAg
ICAgZXhwbCA9IGNhbGxlcXVhbChbXSwgWygxLCAyKV0pCisgICAgICAgIGFzc2VydCBleHBsIGlz
IG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBsZW4oZXhwbCkgPiAxCiAgICAgICAgIGV4cGwgPSBj
YWxsZXF1YWwoWygxLCAyKV0sIFtdKQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQog
ICAgICAgICBhc3NlcnQgbGVuKGV4cGwpID4gMQogCi0gICAgZGVmIHRlc3RfbGlzdF9iYWRfcmVw
cihzZWxmKToKKyAgICBkZWYgdGVzdF9yZXByX3ZlcmJvc2Uoc2VsZikgLT4gTm9uZToKKyAgICAg
ICAgY2xhc3MgTnVtczoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1zKToKKyAg
ICAgICAgICAgICAgICBzZWxmLm51bXMgPSBudW1zCisKKyAgICAgICAgICAgIGRlZiBfX3JlcHJf
XyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYubnVtcykKKworICAgICAg
ICBsaXN0X3ggPSBsaXN0KHJhbmdlKDUwMDApKQorICAgICAgICBsaXN0X3kgPSBsaXN0KHJhbmdl
KDUwMDApKQorICAgICAgICBsaXN0X3lbbGVuKGxpc3RfeSkgLy8gMl0gPSAzCisgICAgICAgIG51
bXNfeCA9IE51bXMobGlzdF94KQorICAgICAgICBudW1zX3kgPSBOdW1zKGxpc3RfeSkKKworICAg
ICAgICBhc3NlcnQgY2FsbGVxdWFsKG51bXNfeCwgbnVtc195KSBpcyBOb25lCiAKLSAgICAgICAg
Y2xhc3MgQShvYmplY3QpOgorICAgICAgICBleHBsID0gY2FsbGVxdWFsKG51bXNfeCwgbnVtc195
LCB2ZXJib3NlPTEpCisgICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBOb25lCisgICAgICAgIGFz
c2VydCAiKyIgKyByZXByKG51bXNfeCkgaW4gZXhwbAorICAgICAgICBhc3NlcnQgIi0iICsgcmVw
cihudW1zX3kpIGluIGV4cGwKIAorICAgICAgICBleHBsID0gY2FsbGVxdWFsKG51bXNfeCwgbnVt
c195LCB2ZXJib3NlPTIpCisgICAgICAgIGFzc2VydCBleHBsIGlzIG5vdCBOb25lCisgICAgICAg
IGFzc2VydCAiKyIgKyByZXByKG51bXNfeCkgaW4gZXhwbAorICAgICAgICBhc3NlcnQgIi0iICsg
cmVwcihudW1zX3kpIGluIGV4cGwKKworICAgIGRlZiB0ZXN0X2xpc3RfYmFkX3JlcHIoc2VsZikg
LT4gTm9uZToKKyAgICAgICAgY2xhc3MgQToKICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKDQyKQogCiAgICAgICAgIGV4cGwg
PSBjYWxsZXF1YWwoW10sIFtBKCldKQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQog
ICAgICAgICBhc3NlcnQgIlZhbHVlRXJyb3IiIGluICIiLmpvaW4oZXhwbCkKLSAgICAgICAgZXhw
bCA9IGNhbGxlcXVhbCh7fSwgeyIxIjogQSgpfSkKLSAgICAgICAgYXNzZXJ0ICJmYXVsdHkiIGlu
ICIiLmpvaW4oZXhwbCkKKyAgICAgICAgZXhwbCA9IGNhbGxlcXVhbCh7fSwgeyIxIjogQSgpfSwg
dmVyYm9zZT0yKQorICAgICAgICBhc3NlcnQgZXhwbCBpcyBub3QgTm9uZQorICAgICAgICBhc3Nl
cnQgZXhwbFswXS5zdGFydHN3aXRoKCJ7fSA9PSA8W1ZhbHVlRXJyb3IiKQorICAgICAgICBhc3Nl
cnQgInJhaXNlZCBpbiByZXByIiBpbiBleHBsWzBdCisgICAgICAgIGFzc2VydCBleHBsWzE6XSA9
PSBbCisgICAgICAgICAgICAiKHB5dGVzdF9hc3NlcnRpb24gcGx1Z2luOiByZXByZXNlbnRhdGlv
biBvZiBkZXRhaWxzIGZhaWxlZDoiCisgICAgICAgICAgICAiIHt9Ont9OiBWYWx1ZUVycm9yOiA0
Mi4iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBfX2ZpbGVfXywgQS5fX3JlcHJfXy5fX2NvZGVf
Xy5jb19maXJzdGxpbmVubyArIDEKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAiIFByb2Jh
Ymx5IGFuIG9iamVjdCBoYXMgYSBmYXVsdHkgX19yZXByX18uKSIsCisgICAgICAgIF0KIAogICAg
IGRlZiB0ZXN0X29uZV9yZXByX2VtcHR5KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgdGhl
IGZhdWx0eSBlbXB0eSBzdHJpbmcgcmVwciBkaWQgdHJpZ2dlcgotICAgICAgICBhbiB1bmJvdW5k
IGxvY2FsIGVycm9yIGluIF9kaWZmX3RleHQKLSAgICAgICAgIiIiCisgICAgICAgICIiIlRoZSBm
YXVsdHkgZW1wdHkgc3RyaW5nIHJlcHIgZGlkIHRyaWdnZXIgYW4gdW5ib3VuZCBsb2NhbCBlcnJv
ciBpbiBfZGlmZl90ZXh0LiIiIgogCiAgICAgICAgIGNsYXNzIEEoc3RyKToKLQogICAgICAgICAg
ICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiAiIgogCiAgICAg
ICAgIGV4cGwgPSBjYWxsZXF1YWwoQSgpLCAiIikKICAgICAgICAgYXNzZXJ0IG5vdCBleHBsCiAK
LSAgICBkZWYgdGVzdF9yZXByX25vX2V4YyhzZWxmKToKLSAgICAgICAgZXhwbCA9ICIgIi5qb2lu
KGNhbGxlcXVhbCgiZm9vIiwgImJhciIpKQotICAgICAgICBhc3NlcnQgInJhaXNlZCBpbiByZXBy
KCkiIG5vdCBpbiBleHBsCisgICAgZGVmIHRlc3RfcmVwcl9ub19leGMoc2VsZikgLT4gTm9uZToK
KyAgICAgICAgZXhwbCA9IGNhbGxlcXVhbCgiZm9vIiwgImJhciIpCisgICAgICAgIGFzc2VydCBl
eHBsIGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCAicmFpc2VkIGluIHJlcHIoKSIgbm90IGlu
ICIgIi5qb2luKGV4cGwpCiAKICAgICBkZWYgdGVzdF91bmljb2RlKHNlbGYpOgotICAgICAgICBs
ZWZ0ID0gcHkuYnVpbHRpbi5fdG90ZXh0KCLCo+KCrCIsICJ1dGYtOCIpCi0gICAgICAgIHJpZ2h0
ID0gcHkuYnVpbHRpbi5fdG90ZXh0KCLCoyIsICJ1dGYtOCIpCi0gICAgICAgIGV4cGwgPSBjYWxs
ZXF1YWwobGVmdCwgcmlnaHQpCi0gICAgICAgIGFzc2VydCBleHBsWzBdID09IHB5LmJ1aWx0aW4u
X3RvdGV4dCgiJ8Kj4oKsJyA9PSAnwqMnIiwgInV0Zi04IikKLSAgICAgICAgYXNzZXJ0IGV4cGxb
MV0gPT0gcHkuYnVpbHRpbi5fdG90ZXh0KCItIMKj4oKsIiwgInV0Zi04IikKLSAgICAgICAgYXNz
ZXJ0IGV4cGxbMl0gPT0gcHkuYnVpbHRpbi5fdG90ZXh0KCIrIMKjIiwgInV0Zi04IikKKyAgICAg
ICAgYXNzZXJ0IGNhbGxlcXVhbCgiwqPigqwiLCAiwqMiKSA9PSBbCisgICAgICAgICAgICAiJ8Kj
4oKsJyA9PSAnwqMnIiwKKyAgICAgICAgICAgICItIMKjIiwKKyAgICAgICAgICAgICIrIMKj4oKs
IiwKKyAgICAgICAgXQogCiAgICAgZGVmIHRlc3Rfbm9uYXNjaWlfdGV4dChzZWxmKToKICAgICAg
ICAgIiIiCkBAIC01MzIsMzIgKzc0NSwyMzkgQEAgY2xhc3MgVGVzdEFzc2VydF9yZXByY29tcGFy
ZShvYmplY3QpOgogICAgICAgICAiIiIKIAogICAgICAgICBjbGFzcyBBKHN0cik6Ci0KICAgICAg
ICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gIlx4ZmYi
CiAKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChBKCksICIxIikKLSAgICAgICAgYXNzZXJ0IGV4
cGwKKyAgICAgICAgYXNzZXJ0IGV4cGwgPT0gWyLDvyA9PSAnMSciLCAiLSAxIl0KIAogICAgIGRl
ZiB0ZXN0X2Zvcm1hdF9ub25hc2NpaV9leHBsYW5hdGlvbihzZWxmKToKICAgICAgICAgYXNzZXJ0
IHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCLOuyIpCiAKLSAgICBkZWYgdGVzdF9tb2ppYmFrZShz
ZWxmKToKKyAgICBkZWYgdGVzdF9tb2ppYmFrZShzZWxmKSAtPiBOb25lOgogICAgICAgICAjIGlz
c3VlIDQyOQotICAgICAgICBsZWZ0ID0gImUiCi0gICAgICAgIHJpZ2h0ID0gIlx4YzNceGE5Igot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsZWZ0LCBieXRlcyk6Ci0gICAgICAgICAgICBsZWZ0
ID0gYnl0ZXMobGVmdCwgInV0Zi04IikKLSAgICAgICAgICAgIHJpZ2h0ID0gYnl0ZXMocmlnaHQs
ICJ1dGYtOCIpCisgICAgICAgIGxlZnQgPSBiImUiCisgICAgICAgIHJpZ2h0ID0gYiJceGMzXHhh
OSIKICAgICAgICAgZXhwbCA9IGNhbGxlcXVhbChsZWZ0LCByaWdodCkKKyAgICAgICAgYXNzZXJ0
IGV4cGwgaXMgbm90IE5vbmUKICAgICAgICAgZm9yIGxpbmUgaW4gZXhwbDoKLSAgICAgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIHB5LmJ1aWx0aW4udGV4dCkKLSAgICAgICAgbXNnID0g
cHkuYnVpbHRpbi5fdG90ZXh0KCJcbiIpLmpvaW4oZXhwbCkKKyAgICAgICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKGxpbmUsIHN0cikKKyAgICAgICAgbXNnID0gIlxuIi5qb2luKGV4cGwpCiAgICAg
ICAgIGFzc2VydCBtc2cKIAogCi1jbGFzcyBUZXN0Rm9ybWF0RXhwbGFuYXRpb24ob2JqZWN0KToK
K2NsYXNzIFRlc3RBc3NlcnRfcmVwcmNvbXBhcmVfZGF0YWNsYXNzOgorICAgIEBweXRlc3QubWFy
ay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA8ICgzLCA3KSwgcmVhc29uPSJEYXRhY2xhc3NlcyBp
biBQeXRob24zLjcrIikKKyAgICBkZWYgdGVzdF9kYXRhY2xhc3NlcyhzZWxmLCB0ZXN0ZGlyKToK
KyAgICAgICAgcCA9IHRlc3RkaXIuY29weV9leGFtcGxlKCJkYXRhY2xhc3Nlcy90ZXN0X2NvbXBh
cmVfZGF0YWNsYXNzZXMucHkiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChw
KQorICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKGZhaWxlZD0xLCBwYXNzZWQ9MCkKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICJFICAgICAgICAgT21pdHRpbmcgMSBpZGVudGljYWwgaXRlbXMsIHVzZSAtdnYg
dG8gc2hvdyIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICBEaWZmZXJpbmcgYXR0cmlidXRl
czoiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAgWydmaWVsZF9iJ10iLAorICAgICAgICAg
ICAgICAgICJFICAgICAgICAgIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIERyaWxsIGRv
d24gaW50byBkaWZmZXJpbmcgYXR0cmlidXRlIGZpZWxkX2I6IiwKKyAgICAgICAgICAgICAgICAi
RSAgICAgICAgICAgZmllbGRfYjogJ2InICE9ICdjJy4uLiIsCisgICAgICAgICAgICAgICAgIkUg
ICAgICAgICAiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAgLi4uRnVsbCBvdXRwdXQgdHJ1
bmNhdGVkICgzIGxpbmVzIGhpZGRlbiksIHVzZSAnLXZ2JyB0byBzaG93IiwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICAgICBjb25zZWN1dGl2ZT1UcnVlLAorICAgICAgICApCisKKyAgICBAcHl0
ZXN0Lm1hcmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNyksIHJlYXNvbj0iRGF0YWNs
YXNzZXMgaW4gUHl0aG9uMy43KyIpCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX2RhdGFjbGFzc2Vz
KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoImRhdGFj
bGFzc2VzL3Rlc3RfY29tcGFyZV9yZWN1cnNpdmVfZGF0YWNsYXNzZXMucHkiKQorICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQorICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNv
bWVzKGZhaWxlZD0xLCBwYXNzZWQ9MCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJFICAgICAgICAgT21pdHRpbmcg
MSBpZGVudGljYWwgaXRlbXMsIHVzZSAtdnYgdG8gc2hvdyIsCisgICAgICAgICAgICAgICAgIkUg
ICAgICAgICBEaWZmZXJpbmcgYXR0cmlidXRlczoiLAorICAgICAgICAgICAgICAgICJFICAgICAg
ICAgWydnJywgJ2gnLCAnaiddIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICIsCisgICAg
ICAgICAgICAgICAgIkUgICAgICAgICBEcmlsbCBkb3duIGludG8gZGlmZmVyaW5nIGF0dHJpYnV0
ZSBnOiIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAgIGc6IFMoYT0xMCwgYj0ndGVuJykg
IT0gUyhhPTIwLCBiPSd4eHgnKS4uLiIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAiLAor
ICAgICAgICAgICAgICAgICJFICAgICAgICAgLi4uRnVsbCBvdXRwdXQgdHJ1bmNhdGVkICg1MiBs
aW5lcyBoaWRkZW4pLCB1c2UgJy12dicgdG8gc2hvdyIsCisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgY29uc2VjdXRpdmU9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgQHB5dGVzdC5tYXJrLnNr
aXBpZihzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDcpLCByZWFzb249IkRhdGFjbGFzc2VzIGluIFB5
dGhvbjMuNysiKQorICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9kYXRhY2xhc3Nlc192ZXJib3NlKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoImRhdGFjbGFz
c2VzL3Rlc3RfY29tcGFyZV9yZWN1cnNpdmVfZGF0YWNsYXNzZXMucHkiKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwLCAiLXZ2IikKKyAgICAgICAgcmVzdWx0LmFzc2VydF9v
dXRjb21lcyhmYWlsZWQ9MSwgcGFzc2VkPTApCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIE1hdGNo
aW5nIGF0dHJpYnV0ZXM6IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIFsnaSddIiwKKyAg
ICAgICAgICAgICAgICAiRSAgICAgICAgIERpZmZlcmluZyBhdHRyaWJ1dGVzOiIsCisgICAgICAg
ICAgICAgICAgIkUgICAgICAgICBbJ2cnLCAnaCcsICdqJ10iLAorICAgICAgICAgICAgICAgICJF
ICAgICAgICAgIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgIERyaWxsIGRvd24gaW50byBk
aWZmZXJpbmcgYXR0cmlidXRlIGc6IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgZzog
UyhhPTEwLCBiPSd0ZW4nKSAhPSBTKGE9MjAsIGI9J3h4eCcpIiwKKyAgICAgICAgICAgICAgICAi
RSAgICAgICAgICAgIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgRGlmZmVyaW5nIGF0
dHJpYnV0ZXM6IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgWydhJywgJ2InXSIsCisg
ICAgICAgICAgICAgICAgIkUgICAgICAgICAgICIsCisgICAgICAgICAgICAgICAgIkUgICAgICAg
ICAgIERyaWxsIGRvd24gaW50byBkaWZmZXJpbmcgYXR0cmlidXRlIGE6IiwKKyAgICAgICAgICAg
ICAgICAiRSAgICAgICAgICAgICBhOiAxMCAhPSAyMCIsCisgICAgICAgICAgICAgICAgIkUgICAg
ICAgICAgICAgKzEwIiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgICAtMjAiLAorICAg
ICAgICAgICAgICAgICJFICAgICAgICAgICAiLAorICAgICAgICAgICAgICAgICJFICAgICAgICAg
ICBEcmlsbCBkb3duIGludG8gZGlmZmVyaW5nIGF0dHJpYnV0ZSBiOiIsCisgICAgICAgICAgICAg
ICAgIkUgICAgICAgICAgICAgYjogJ3RlbicgIT0gJ3h4eCciLAorICAgICAgICAgICAgICAgICJF
ICAgICAgICAgICAgIC0geHh4IiwKKyAgICAgICAgICAgICAgICAiRSAgICAgICAgICAgICArIHRl
biIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgICAiLAorICAgICAgICAgICAgICAgICJFICAg
ICAgICAgRHJpbGwgZG93biBpbnRvIGRpZmZlcmluZyBhdHRyaWJ1dGUgaDoiLAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgIGNvbnNlY3V0aXZlPVRydWUsCisgICAgICAgICkKKworICAgIEBw
eXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA8ICgzLCA3KSwgcmVhc29uPSJEYXRh
Y2xhc3NlcyBpbiBQeXRob24zLjcrIikKKyAgICBkZWYgdGVzdF9kYXRhY2xhc3Nlc192ZXJib3Nl
KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1wbGUoImRhdGFj
bGFzc2VzL3Rlc3RfY29tcGFyZV9kYXRhY2xhc3Nlc192ZXJib3NlLnB5IikKKyAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi12diIpCisgICAgICAgIHJlc3VsdC5hc3NlcnRf
b3V0Y29tZXMoZmFpbGVkPTEsIHBhc3NlZD0wKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIipNYXRjaGluZyBhdHRy
aWJ1dGVzOioiLAorICAgICAgICAgICAgICAgICIqWydmaWVsZF9hJ10qIiwKKyAgICAgICAgICAg
ICAgICAiKkRpZmZlcmluZyBhdHRyaWJ1dGVzOioiLAorICAgICAgICAgICAgICAgICIqZmllbGRf
YjogJ2InICE9ICdjJyoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNyksIHJlYXNvbj0iRGF0YWNsYXNz
ZXMgaW4gUHl0aG9uMy43KyIpCisgICAgZGVmIHRlc3RfZGF0YWNsYXNzZXNfd2l0aF9hdHRyaWJ1
dGVfY29tcGFyaXNvbl9vZmYoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAgPSB0ZXN0ZGlyLmNv
cHlfZXhhbXBsZSgKKyAgICAgICAgICAgICJkYXRhY2xhc3Nlcy90ZXN0X2NvbXBhcmVfZGF0YWNs
YXNzZXNfZmllbGRfY29tcGFyaXNvbl9vZmYucHkiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi12diIpCisgICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0
Y29tZXMoZmFpbGVkPTAsIHBhc3NlZD0xKQorCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMu
dmVyc2lvbl9pbmZvIDwgKDMsIDcpLCByZWFzb249IkRhdGFjbGFzc2VzIGluIFB5dGhvbjMuNysi
KQorICAgIGRlZiB0ZXN0X2NvbXBhcmluZ190d29fZGlmZmVyZW50X2RhdGFfY2xhc3NlcyhzZWxm
LCB0ZXN0ZGlyKToKKyAgICAgICAgcCA9IHRlc3RkaXIuY29weV9leGFtcGxlKAorICAgICAgICAg
ICAgImRhdGFjbGFzc2VzL3Rlc3RfY29tcGFyZV90d29fZGlmZmVyZW50X2RhdGFjbGFzc2VzLnB5
IgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICItdnYi
KQorICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKGZhaWxlZD0wLCBwYXNzZWQ9MSkKKwor
CitjbGFzcyBUZXN0QXNzZXJ0X3JlcHJjb21wYXJlX2F0dHJzY2xhc3M6CisgICAgZGVmIHRlc3Rf
YXR0cnMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBTaW1w
bGVEYXRhT2JqZWN0OgorICAgICAgICAgICAgZmllbGRfYSA9IGF0dHIuaWIoKQorICAgICAgICAg
ICAgZmllbGRfYiA9IGF0dHIuaWIoKQorCisgICAgICAgIGxlZnQgPSBTaW1wbGVEYXRhT2JqZWN0
KDEsICJiIikKKyAgICAgICAgcmlnaHQgPSBTaW1wbGVEYXRhT2JqZWN0KDEsICJjIikKKworICAg
ICAgICBsaW5lcyA9IGNhbGxlcXVhbChsZWZ0LCByaWdodCkKKyAgICAgICAgYXNzZXJ0IGxpbmVz
IGlzIG5vdCBOb25lCisgICAgICAgIGFzc2VydCBsaW5lc1syXS5zdGFydHN3aXRoKCJPbWl0dGlu
ZyAxIGlkZW50aWNhbCBpdGVtIikKKyAgICAgICAgYXNzZXJ0ICJNYXRjaGluZyBhdHRyaWJ1dGVz
IiBub3QgaW4gbGluZXMKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbMjpdOgorICAgICAgICAg
ICAgYXNzZXJ0ICJmaWVsZF9hIiBub3QgaW4gbGluZQorCisgICAgZGVmIHRlc3RfYXR0cnNfcmVj
dXJzaXZlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3MgT3Ro
ZXJEYXRhT2JqZWN0OgorICAgICAgICAgICAgZmllbGRfYyA9IGF0dHIuaWIoKQorICAgICAgICAg
ICAgZmllbGRfZCA9IGF0dHIuaWIoKQorCisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3Mg
U2ltcGxlRGF0YU9iamVjdDoKKyAgICAgICAgICAgIGZpZWxkX2EgPSBhdHRyLmliKCkKKyAgICAg
ICAgICAgIGZpZWxkX2IgPSBhdHRyLmliKCkKKworICAgICAgICBsZWZ0ID0gU2ltcGxlRGF0YU9i
amVjdChPdGhlckRhdGFPYmplY3QoMSwgImEiKSwgImIiKQorICAgICAgICByaWdodCA9IFNpbXBs
ZURhdGFPYmplY3QoT3RoZXJEYXRhT2JqZWN0KDEsICJiIiksICJiIikKKworICAgICAgICBsaW5l
cyA9IGNhbGxlcXVhbChsZWZ0LCByaWdodCkKKyAgICAgICAgYXNzZXJ0IGxpbmVzIGlzIG5vdCBO
b25lCisgICAgICAgIGFzc2VydCAiTWF0Y2hpbmcgYXR0cmlidXRlcyIgbm90IGluIGxpbmVzCisg
ICAgICAgIGZvciBsaW5lIGluIGxpbmVzWzE6XToKKyAgICAgICAgICAgIGFzc2VydCAiZmllbGRf
YjoiIG5vdCBpbiBsaW5lCisgICAgICAgICAgICBhc3NlcnQgImZpZWxkX2M6IiBub3QgaW4gbGlu
ZQorCisgICAgZGVmIHRlc3RfYXR0cnNfcmVjdXJzaXZlX3ZlcmJvc2Uoc2VsZikgLT4gTm9uZToK
KyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBPdGhlckRhdGFPYmplY3Q6CisgICAgICAg
ICAgICBmaWVsZF9jID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWVsZF9kID0gYXR0ci5pYigp
CisKKyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBTaW1wbGVEYXRhT2JqZWN0OgorICAg
ICAgICAgICAgZmllbGRfYSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgZmllbGRfYiA9IGF0dHIu
aWIoKQorCisgICAgICAgIGxlZnQgPSBTaW1wbGVEYXRhT2JqZWN0KE90aGVyRGF0YU9iamVjdCgx
LCAiYSIpLCAiYiIpCisgICAgICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdChPdGhlckRhdGFP
YmplY3QoMSwgImIiKSwgImIiKQorCisgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKGxlZnQsIHJp
Z2h0KQorICAgICAgICBhc3NlcnQgbGluZXMgaXMgbm90IE5vbmUKKyAgICAgICAgIyBpbmRlbnRh
dGlvbiBpbiBvdXRwdXQgYmVjYXVzZSBvZiBuZXN0ZWQgb2JqZWN0IHN0cnVjdHVyZQorICAgICAg
ICBhc3NlcnQgIiAgICBmaWVsZF9kOiAnYScgIT0gJ2InIiBpbiBsaW5lcworCisgICAgZGVmIHRl
c3RfYXR0cnNfdmVyYm9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICBAYXR0ci5zCisgICAgICAg
IGNsYXNzIFNpbXBsZURhdGFPYmplY3Q6CisgICAgICAgICAgICBmaWVsZF9hID0gYXR0ci5pYigp
CisgICAgICAgICAgICBmaWVsZF9iID0gYXR0ci5pYigpCisKKyAgICAgICAgbGVmdCA9IFNpbXBs
ZURhdGFPYmplY3QoMSwgImIiKQorICAgICAgICByaWdodCA9IFNpbXBsZURhdGFPYmplY3QoMSwg
ImMiKQorCisgICAgICAgIGxpbmVzID0gY2FsbGVxdWFsKGxlZnQsIHJpZ2h0LCB2ZXJib3NlPTIp
CisgICAgICAgIGFzc2VydCBsaW5lcyBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgbGluZXNb
Ml0uc3RhcnRzd2l0aCgiTWF0Y2hpbmcgYXR0cmlidXRlczoiKQorICAgICAgICBhc3NlcnQgIk9t
aXR0aW5nIiBub3QgaW4gbGluZXNbMl0KKyAgICAgICAgYXNzZXJ0IGxpbmVzWzNdID09ICJbJ2Zp
ZWxkX2EnXSIKKworICAgIGRlZiB0ZXN0X2F0dHJzX3dpdGhfYXR0cmlidXRlX2NvbXBhcmlzb25f
b2ZmKHNlbGYpOgorICAgICAgICBAYXR0ci5zCisgICAgICAgIGNsYXNzIFNpbXBsZURhdGFPYmpl
Y3Q6CisgICAgICAgICAgICBmaWVsZF9hID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWVsZF9i
ID0gYXR0ci5pYigqKntBVFRSU19FUV9GSUVMRDogRmFsc2V9KSAgIyB0eXBlOiBpZ25vcmUKKwor
ICAgICAgICBsZWZ0ID0gU2ltcGxlRGF0YU9iamVjdCgxLCAiYiIpCisgICAgICAgIHJpZ2h0ID0g
U2ltcGxlRGF0YU9iamVjdCgxLCAiYiIpCisKKyAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwobGVm
dCwgcmlnaHQsIHZlcmJvc2U9MikKKyAgICAgICAgcHJpbnQobGluZXMpCisgICAgICAgIGFzc2Vy
dCBsaW5lcyBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgbGluZXNbMl0uc3RhcnRzd2l0aCgi
TWF0Y2hpbmcgYXR0cmlidXRlczoiKQorICAgICAgICBhc3NlcnQgIk9taXR0aW5nIiBub3QgaW4g
bGluZXNbMV0KKyAgICAgICAgYXNzZXJ0IGxpbmVzWzNdID09ICJbJ2ZpZWxkX2EnXSIKKyAgICAg
ICAgZm9yIGxpbmUgaW4gbGluZXNbMzpdOgorICAgICAgICAgICAgYXNzZXJ0ICJmaWVsZF9iIiBu
b3QgaW4gbGluZQorCisgICAgZGVmIHRlc3RfY29tcGFyaW5nX3R3b19kaWZmZXJlbnRfYXR0cnNf
Y2xhc3NlcyhzZWxmKToKKyAgICAgICAgQGF0dHIucworICAgICAgICBjbGFzcyBTaW1wbGVEYXRh
T2JqZWN0T25lOgorICAgICAgICAgICAgZmllbGRfYSA9IGF0dHIuaWIoKQorICAgICAgICAgICAg
ZmllbGRfYiA9IGF0dHIuaWIoKQorCisgICAgICAgIEBhdHRyLnMKKyAgICAgICAgY2xhc3MgU2lt
cGxlRGF0YU9iamVjdFR3bzoKKyAgICAgICAgICAgIGZpZWxkX2EgPSBhdHRyLmliKCkKKyAgICAg
ICAgICAgIGZpZWxkX2IgPSBhdHRyLmliKCkKIAorICAgICAgICBsZWZ0ID0gU2ltcGxlRGF0YU9i
amVjdE9uZSgxLCAiYiIpCisgICAgICAgIHJpZ2h0ID0gU2ltcGxlRGF0YU9iamVjdFR3bygxLCAi
YyIpCisKKyAgICAgICAgbGluZXMgPSBjYWxsZXF1YWwobGVmdCwgcmlnaHQpCisgICAgICAgIGFz
c2VydCBsaW5lcyBpcyBOb25lCisKKworY2xhc3MgVGVzdEZvcm1hdEV4cGxhbmF0aW9uOgogICAg
IGRlZiB0ZXN0X3NwZWNpYWxfY2hhcnNfZnVsbChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIyBJ
c3N1ZSA0NTMsIGZvciB0aGUgYnVnIHRoaXMgd291bGQgcmFpc2UgSW5kZXhFcnJvcgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC02NDQsMTYgKzEwNjQsMTMgQEAgY2xhc3MgVGVzdEZv
cm1hdEV4cGxhbmF0aW9uKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCB1dGlsLmZvcm1hdF9leHBs
YW5hdGlvbihleHBsKSA9PSByZXMKIAogCi1jbGFzcyBUZXN0VHJ1bmNhdGVFeHBsYW5hdGlvbihv
YmplY3QpOgotCi0gICAgIiIiIENvbmZpcm0gYXNzZXJ0aW9uIG91dHB1dCBpcyB0cnVuY2F0ZWQg
YXMgZXhwZWN0ZWQgIiIiCi0KK2NsYXNzIFRlc3RUcnVuY2F0ZUV4cGxhbmF0aW9uOgogICAgICMg
VGhlIG51bWJlciBvZiBsaW5lcyBpbiB0aGUgdHJ1bmNhdGlvbiBleHBsYW5hdGlvbiBtZXNzYWdl
LiBVc2VkCiAgICAgIyB0byBjYWxjdWxhdGUgdGhhdCByZXN1bHRzIGhhdmUgdGhlIGV4cGVjdGVk
IGxlbmd0aC4KICAgICBMSU5FU19JTl9UUlVOQ0FUSU9OX01TRyA9IDIKIAotICAgIGRlZiB0ZXN0
X2RvZXNudF90cnVuY2F0ZV93aGVuX2lucHV0X2lzX2VtcHR5X2xpc3Qoc2VsZik6Ci0gICAgICAg
IGV4cGwgPSBbXQorICAgIGRlZiB0ZXN0X2RvZXNudF90cnVuY2F0ZV93aGVuX2lucHV0X2lzX2Vt
cHR5X2xpc3Qoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZXhwbCA9IFtdICAjIHR5cGU6IExpc3Rb
c3RyXQogICAgICAgICByZXN1bHQgPSB0cnVuY2F0ZS5fdHJ1bmNhdGVfZXhwbGFuYXRpb24oZXhw
bCwgbWF4X2xpbmVzPTgsIG1heF9jaGFycz0xMDApCiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0g
ZXhwbAogCkBAIC03MTMsNyArMTEzMCw3IEBAIGNsYXNzIFRlc3RUcnVuY2F0ZUV4cGxhbmF0aW9u
KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBsYXN0X2xpbmVfYmVmb3JlX3RydW5jX21zZy5lbmRz
d2l0aCgiLi4uIikKIAogICAgIGRlZiB0ZXN0X2Z1bGxfb3V0cHV0X3RydW5jYXRlZChzZWxmLCBt
b25rZXlwYXRjaCwgdGVzdGRpcik6Ci0gICAgICAgICIiIiBUZXN0IGFnYWluc3QgZnVsbCBydW5w
eXRlc3QoKSBvdXRwdXQuICIiIgorICAgICAgICAiIiJUZXN0IGFnYWluc3QgZnVsbCBydW5weXRl
c3QoKSBvdXRwdXQuIiIiCiAKICAgICAgICAgbGluZV9jb3VudCA9IDcKICAgICAgICAgbGluZV9s
ZW4gPSAxMDAKQEAgLTczNSw5ICsxMTUyLDkgQEAgY2xhc3MgVGVzdFRydW5jYXRlRXhwbGFuYXRp
b24ob2JqZWN0KToKICAgICAgICAgIyB3aXRob3V0IC12diwgdHJ1bmNhdGUgdGhlIG1lc3NhZ2Ug
c2hvd2luZyBhIGZldyBkaWZmIGxpbmVzIG9ubHkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKAogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqLSAxKiIsCi0gICAg
ICAgICAgICAgICAgIiotIDMqIiwKLSAgICAgICAgICAgICAgICAiKi0gNSoiLAorICAgICAgICAg
ICAgICAgICIqKyAxKiIsCisgICAgICAgICAgICAgICAgIiorIDMqIiwKKyAgICAgICAgICAgICAg
ICAiKisgNSoiLAogICAgICAgICAgICAgICAgICIqdHJ1bmNhdGVkICglZCBsaW5lcyBoaWRkZW4p
KnVzZSotdnYqIiAlIGV4cGVjdGVkX3RydW5jYXRlZF9saW5lcywKICAgICAgICAgICAgIF0KICAg
ICAgICAgKQpAQCAtNzc4LDI3ICsxMTk1LDIzIEBAIGRlZiB0ZXN0X3Jld3JpdHRlbih0ZXN0ZGly
KToKICAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3QoKS5yZXQgPT0gMAogCiAKLWRlZiB0ZXN0
X3JlcHJjb21wYXJlX25vdGluKG1vY2tfY29uZmlnKToKLSAgICBkZXRhaWwgPSBwbHVnaW4ucHl0
ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSgKLSAgICAgICAgbW9ja19jb25maWcsICJub3QgaW4iLCAi
Zm9vIiwgImFhYWZvb2JiYiIKLSAgICApWwotICAgICAgICAxOgorZGVmIHRlc3RfcmVwcmNvbXBh
cmVfbm90aW4oKSAtPiBOb25lOgorICAgIGFzc2VydCBjYWxsb3AoIm5vdCBpbiIsICJmb28iLCAi
YWFhZm9vYmJiIikgPT0gWworICAgICAgICAiJ2Zvbycgbm90IGluICdhYWFmb29iYmInIiwKKyAg
ICAgICAgIidmb28nIGlzIGNvbnRhaW5lZCBoZXJlOiIsCisgICAgICAgICIgIGFhYWZvb2JiYiIs
CisgICAgICAgICI/ICAgICsrKyIsCiAgICAgXQotICAgIGFzc2VydCBkZXRhaWwgPT0gWyInZm9v
JyBpcyBjb250YWluZWQgaGVyZToiLCAiICBhYWFmb29iYmIiLCAiPyAgICArKysiXQogCiAKLWRl
ZiB0ZXN0X3JlcHJjb21wYXJlX3doaXRlc3BhY2VzKG1vY2tfY29uZmlnKToKLSAgICBkZXRhaWwg
PSBwbHVnaW4ucHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZShtb2NrX2NvbmZpZywgIj09IiwgIlxy
XG4iLCAiXG4iKQotICAgIGFzc2VydCAoCi0gICAgICAgIGRldGFpbAotICAgICAgICA9PSBbCi0g
ICAgICAgICAgICByIidcclxuJyA9PSAnXG4nIiwKLSAgICAgICAgICAgIHIiU3RyaW5ncyBjb250
YWluIG9ubHkgd2hpdGVzcGFjZSwgZXNjYXBpbmcgdGhlbSB1c2luZyByZXByKCkiLAotICAgICAg
ICAgICAgciItICdcclxuJyIsCi0gICAgICAgICAgICByIj8gIC0tIiwKLSAgICAgICAgICAgIHIi
KyAnXG4nIiwKLSAgICAgICAgXQotICAgICkKK2RlZiB0ZXN0X3JlcHJjb21wYXJlX3doaXRlc3Bh
Y2VzKCk6CisgICAgYXNzZXJ0IGNhbGxlcXVhbCgiXHJcbiIsICJcbiIpID09IFsKKyAgICAgICAg
ciInXHJcbicgPT0gJ1xuJyIsCisgICAgICAgIHIiU3RyaW5ncyBjb250YWluIG9ubHkgd2hpdGVz
cGFjZSwgZXNjYXBpbmcgdGhlbSB1c2luZyByZXByKCkiLAorICAgICAgICByIi0gJ1xuJyIsCisg
ICAgICAgIHIiKyAnXHJcbiciLAorICAgICAgICByIj8gICsrIiwKKyAgICBdCiAKIAogZGVmIHRl
c3RfcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZV9pbnRlZ3JhdGlvbih0ZXN0ZGlyKToKQEAgLTgx
Myw3ICsxMjI2LDEzIEBAIGRlZiB0ZXN0X3B5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmVfaW50ZWdy
YXRpb24odGVzdGRpcik6CiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
ICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiKmRlZiB0ZXN0X2hl
bGxvKCk6KiIsICIqYXNzZXJ0IHggPT0geSoiLCAiKkUqRXh0cmEgaXRlbXMqbGVmdCoiLCAiKkUq
NTAqIl0KKyAgICAgICAgWworICAgICAgICAgICAgIipkZWYgdGVzdF9oZWxsbygpOioiLAorICAg
ICAgICAgICAgIiphc3NlcnQgeCA9PSB5KiIsCisgICAgICAgICAgICAiKkUqRXh0cmEgaXRlbXMq
bGVmdCoiLAorICAgICAgICAgICAgIipFKjUwKiIsCisgICAgICAgICAgICAiKj0gMSBmYWlsZWQg
aW4qIiwKKyAgICAgICAgXQogICAgICkKIAogCkBAIC04NzUsNyArMTI5NCw3IEBAIGRlZiB0ZXN0
X2Fzc2VydGlvbl9vcHRpb25zKHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKICAgICBhc3NlcnQgIjMgPT0gNCIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi0tYXNzZXJ0PXBsYWluIikKLSAg
ICBhc3NlcnQgIjMgPT0gNCIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQu
c3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKjMgPT0gNCoiKQogCiAKIGRlZiB0ZXN0X3RyaXBsZV9x
dW90ZWRfc3RyaW5nX2lzc3VlMTEzKHRlc3RkaXIpOgpAQCAtODg3LDcgKzEzMDYsNyBAQCBkZWYg
dGVzdF90cmlwbGVfcXVvdGVkX3N0cmluZ19pc3N1ZTExMyh0ZXN0ZGlyKToKICAgICApCiAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZnVsbHRyYWNlIikKICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqMSBmYWlsZWQqIl0pCi0gICAgYXNzZXJ0ICJTeW50YXhFcnJv
ciIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0
Y2hfbGluZSgiKlN5bnRheEVycm9yKiIpCiAKIAogZGVmIHRlc3RfdHJhY2ViYWNrX2ZhaWx1cmUo
dGVzdGRpcik6CkBAIC05NDUsMTQgKzEzNjQsOCBAQCBkZWYgdGVzdF90cmFjZWJhY2tfZmFpbHVy
ZSh0ZXN0ZGlyKToKICAgICApCiAKIAotQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICBzeXMudmVy
c2lvbl9pbmZvWzoyXSA8PSAoMywgMyksCi0gICAgcmVhc29uPSJQeXRob24gMy40KyBzaG93cyBj
aGFpbmVkIGV4Y2VwdGlvbnMgb24gbXVsdGlwcm9jZXNzIiwKLSkKIGRlZiB0ZXN0X2V4Y2VwdGlv
bl9oYW5kbGluZ19ub190cmFjZWJhY2sodGVzdGRpcik6Ci0gICAgIiIiCi0gICAgSGFuZGxlIGNo
YWluIGV4Y2VwdGlvbnMgaW4gdGFza3Mgc3VibWl0dGVkIGJ5IHRoZSBtdWx0aXByb2Nlc3MgbW9k
dWxlICgjMTk4NCkuCi0gICAgIiIiCisgICAgIiIiSGFuZGxlIGNoYWluIGV4Y2VwdGlvbnMgaW4g
dGFza3Mgc3VibWl0dGVkIGJ5IHRoZSBtdWx0aXByb2Nlc3MgbW9kdWxlICgjMTk4NCkuIiIiCiAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBmcm9tIG11
bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbApAQCAtOTY5LDYgKzEzODIsNyBAQCBkZWYgdGVzdF9l
eGNlcHRpb25faGFuZGxpbmdfbm9fdHJhY2ViYWNrKHRlc3RkaXIpOgogICAgICAgICAgICAgbXVs
dGl0YXNrX2pvYigpCiAgICAgIiIiCiAgICAgKQorICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgp
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocDEsICItLXRiPWxvbmciKQogICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwpAQCAtOTgyLDE1ICsxMzk2LDM2
IEBAIGRlZiB0ZXN0X2V4Y2VwdGlvbl9oYW5kbGluZ19ub190cmFjZWJhY2sodGVzdGRpcik6CiAg
ICAgKQogCiAKLUBweXRlc3QubWFyay5za2lwaWYoCi0gICAgIidfX3B5cHlfXycgaW4gc3lzLmJ1
aWx0aW5fbW9kdWxlX25hbWVzIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykiCitA
cHl0ZXN0Lm1hcmsuc2tpcGlmKCInX19weXB5X18nIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1l
cyIpCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgImNtZGxpbmVfYXJncywgd2Fybmlu
Z19vdXRwdXQiLAorICAgIFsKKyAgICAgICAgKAorICAgICAgICAgICAgWyItT08iLCAiLW0iLCAi
cHl0ZXN0IiwgIi1oIl0sCisgICAgICAgICAgICBbIndhcm5pbmcgOipQeXRlc3RDb25maWdXYXJu
aW5nOiphc3NlcnQgc3RhdGVtZW50cyBhcmUgbm90IGV4ZWN1dGVkKiJdLAorICAgICAgICApLAor
ICAgICAgICAoCisgICAgICAgICAgICBbIi1PTyIsICItbSIsICJweXRlc3QiXSwKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAiPSo9IHdhcm5pbmdzIHN1bW1hcnkgPSo9IiwKKyAgICAg
ICAgICAgICAgICAiKlB5dGVzdENvbmZpZ1dhcm5pbmc6KmFzc2VydCBzdGF0ZW1lbnRzIGFyZSBu
b3QgZXhlY3V0ZWQqIiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICksCisgICAgICAgICgKKyAg
ICAgICAgICAgIFsiLU9PIiwgIi1tIiwgInB5dGVzdCIsICItLWFzc2VydD1wbGFpbiJdLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICI9Kj0gd2FybmluZ3Mgc3VtbWFyeSA9Kj0iLAor
ICAgICAgICAgICAgICAgICIqUHl0ZXN0Q29uZmlnV2FybmluZzogQVNTRVJUSU9OUyBBUkUgTk9U
IEVYRUNVVEVEIGFuZCBGQUlMSU5HIFRFU1RTIFdJTEwgUEFTUy4gICIKKyAgICAgICAgICAgICAg
ICAiQXJlIHlvdSB1c2luZyBweXRob24gLU8/IiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICks
CisgICAgXSwKICkKLWRlZiB0ZXN0X3dhcm5fbWlzc2luZyh0ZXN0ZGlyKToKK2RlZiB0ZXN0X3dh
cm5fbWlzc2luZyh0ZXN0ZGlyLCBjbWRsaW5lX2FyZ3MsIHdhcm5pbmdfb3V0cHV0KToKICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoIiIpCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW4oc3lzLmV4ZWN1
dGFibGUsICItT08iLCAiLW0iLCAicHl0ZXN0IiwgIi1oIikKLSAgICByZXN1bHQuc3RkZXJyLmZu
bWF0Y2hfbGluZXMoWyIqV0FSTklORyphc3NlcnQgc3RhdGVtZW50cyBhcmUgbm90IGV4ZWN1dGVk
KiJdKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVuKHN5cy5leGVjdXRhYmxlLCAiLU9PIiwgIi1t
IiwgInB5dGVzdCIpCi0gICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKldBUk5JTkcq
YXNzZXJ0IHN0YXRlbWVudHMgYXJlIG5vdCBleGVjdXRlZCoiXSkKKworICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVuKHN5cy5leGVjdXRhYmxlLCAqY21kbGluZV9hcmdzKQorICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyh3YXJuaW5nX291dHB1dCkKIAogCiBkZWYgdGVzdF9yZWN1cnNpb25f
c291cmNlX2RlY29kZSh0ZXN0ZGlyKToKQEAgLTEwMzIsNDcgKzE0NjcsNyBAQCBkZWYgdGVzdF9B
c3NlcnRpb25FcnJvcl9tZXNzYWdlKHRlc3RkaXIpOgogICAgICkKIAogCi1AcHl0ZXN0Lm1hcmsu
c2tpcGlmKFBZMywgcmVhc29uPSJUaGlzIGJ1ZyBkb2VzIG5vdCBleGlzdCBvbiBQWTMiKQotZGVm
IHRlc3Rfc2V0X3dpdGhfdW5zb3J0YWJsZV9lbGVtZW50cygpOgotICAgICMgaXNzdWUgIzcxOAot
ICAgIGNsYXNzIFVuc29ydGFibGVLZXkob2JqZWN0KToKLQotICAgICAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICAgICAgZGVm
IF9fbHRfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoKQot
Ci0gICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAicmVwcih7
fSkiLmZvcm1hdChzZWxmLm5hbWUpCi0KLSAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lID09IG90aGVyLm5hbWUKLQotICAgICAgICBk
ZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpCi0K
LSAgICBsZWZ0X3NldCA9IHtVbnNvcnRhYmxlS2V5KHN0cihpKSkgZm9yIGkgaW4gcmFuZ2UoMSwg
Myl9Ci0gICAgcmlnaHRfc2V0ID0ge1Vuc29ydGFibGVLZXkoc3RyKGkpKSBmb3IgaSBpbiByYW5n
ZSgyLCA0KX0KLSAgICBleHBsID0gY2FsbGVxdWFsKGxlZnRfc2V0LCByaWdodF9zZXQsIHZlcmJv
c2U9VHJ1ZSkKLSAgICAjIHNraXAgZmlyc3QgbGluZSBiZWNhdXNlIGl0IGNvbnRhaW5zIHRoZSAi
Y29uc3RydWN0aW9uIiBvZiB0aGUgc2V0LCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgZ3VhcmFudGVl
ZCBvcmRlcgotICAgIGV4cGwgPSBleHBsWzE6XQotICAgIGRlZGVudCA9IHRleHR3cmFwLmRlZGVu
dCgKLSAgICAgICAgIiIiCi0gICAgICAgIEV4dHJhIGl0ZW1zIGluIHRoZSBsZWZ0IHNldDoKLSAg
ICAgICAgcmVwcigxKQotICAgICAgICBFeHRyYSBpdGVtcyBpbiB0aGUgcmlnaHQgc2V0OgotICAg
ICAgICByZXByKDMpCi0gICAgICAgIEZ1bGwgZGlmZiAoZmFsbGJhY2sgdG8gY2FsbGluZyByZXBy
IG9uIGVhY2ggaXRlbSk6Ci0gICAgICAgIC0gcmVwcigxKQotICAgICAgICByZXByKDIpCi0gICAg
ICAgICsgcmVwcigzKQotICAgICIiIgotICAgICkuc3RyaXAoKQotICAgIGFzc2VydCAiXG4iLmpv
aW4oZXhwbCkgPT0gZGVkZW50Ci0KLQotZGVmIHRlc3RfZGlmZl9uZXdsaW5lX2F0X2VuZChtb25r
ZXlwYXRjaCwgdGVzdGRpcik6CitkZWYgdGVzdF9kaWZmX25ld2xpbmVfYXRfZW5kKHRlc3RkaXIp
OgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgciIiIgogICAgICAgICBkZWYgdGVz
dF9kaWZmKCk6CkBAIC0xMDg1LDIzICsxNDgwLDMzIEBAIGRlZiB0ZXN0X2RpZmZfbmV3bGluZV9h
dF9lbmQobW9ua2V5cGF0Y2gsIHRlc3RkaXIpOgogICAgICAgICByIiIiCiAgICAgICAgICphc3Nl
cnQgJ2FzZGYnID09ICdhc2RmXG4nCiAgICAgICAgICogIC0gYXNkZgorICAgICAgICAqICA/ICAg
ICAtCiAgICAgICAgICogICsgYXNkZgotICAgICAgICAqICA/ICAgICArCiAgICAgIiIiCiAgICAg
KQogCiAKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCiBkZWYgdGVzdF9h
c3NlcnRfdHVwbGVfd2FybmluZyh0ZXN0ZGlyKToKKyAgICBtc2cgPSAiYXNzZXJ0aW9uIGlzIGFs
d2F5cyB0cnVlIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAg
IGRlZiB0ZXN0X3R1cGxlKCk6CiAgICAgICAgICAgICBhc3NlcnQoRmFsc2UsICd5b3Ugc2hhbGwg
bm90IHBhc3MnKQogICAgICIiIgogICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXJ3IikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiKnRl
c3RfYXNzZXJ0X3R1cGxlX3dhcm5pbmcucHk6MiIsICIqYXNzZXJ0aW9uIGlzIGFsd2F5cyB0cnVl
KiJdCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIip0ZXN0X2Fzc2VydF90dXBsZV93YXJuaW5nLnB5OjI6Knt9KiIuZm9y
bWF0KG1zZyldKQorCisgICAgIyB0dXBsZXMgd2l0aCBzaXplICE9IDIgc2hvdWxkIG5vdCB0cmln
Z2VyIHRoZSB3YXJuaW5nCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAg
ICAgICAgZGVmIHRlc3RfdHVwbGUoKToKKyAgICAgICAgICAgIGFzc2VydCAoKQorICAgICIiIgog
ICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgYXNzZXJ0IG1zZyBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogCiAKIGRlZiB0ZXN0X2Fzc2VydF9pbmRpcmVjdF90
dXBsZV9ub193YXJuaW5nKHRlc3RkaXIpOgpAQCAtMTExMiwxOCArMTUxNywxNyBAQCBkZWYgdGVz
dF9hc3NlcnRfaW5kaXJlY3RfdHVwbGVfbm9fd2FybmluZyh0ZXN0ZGlyKToKICAgICAgICAgICAg
IGFzc2VydCB0cGwKICAgICAiIiIKICAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi1ydyIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgIG91dHB1dCA9
ICJcbiIuam9pbihyZXN1bHQuc3Rkb3V0LmxpbmVzKQogICAgIGFzc2VydCAiV1IxIiBub3QgaW4g
b3V0cHV0CiAKIAotZGVmIHRlc3RfYXNzZXJ0X3dpdGhfdW5pY29kZShtb25rZXlwYXRjaCwgdGVz
dGRpcik6CitkZWYgdGVzdF9hc3NlcnRfd2l0aF91bmljb2RlKHRlc3RkaXIpOgogICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKLSAgICAgICAgdSIiIgotICAgICAgICAjIC0qLSBjb2Rpbmc6IHV0Zi04
IC0qLQorICAgICAgICAiIiJcCiAgICAgICAgIGRlZiB0ZXN0X3VuaWNvZGUoKToKLSAgICAgICAg
ICAgIGFzc2VydCB1J+ycoOuLiOy9lOuTnCcgPT0gdSdVbmljb2RlJwotICAgICIiIgorICAgICAg
ICAgICAgYXNzZXJ0ICfsnKDri4jsvZTrk5wnID09ICdVbmljb2RlJworICAgICAgICAiIiIKICAg
ICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIipBc3NlcnRpb25FcnJvcioiXSkKQEAgLTExNDQsNyArMTU0OCw3IEBA
IGRlZiB0ZXN0X3JhaXNlX3VucHJpbnRhYmxlX2Fzc2VydGlvbl9lcnJvcih0ZXN0ZGlyKToKIAog
ZGVmIHRlc3RfcmFpc2VfYXNzZXJ0aW9uX2Vycm9yX3JhaXNpbl9yZXByKHRlc3RkaXIpOgogICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgdSIiIgorICAgICAgICAiIiIKICAgICAgICAg
Y2xhc3MgUmFpc2luZ1JlcHIob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oKQpAQCAtMTE2OSw0ICsxNTczLDM3
IEBAIGRlZiB0ZXN0X2lzc3VlXzE5NDQodGVzdGRpcik6CiAgICAgKQogICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBl
cnJvcioiXSkKLSAgICBhc3NlcnQgIkF0dHJpYnV0ZUVycm9yOiAnTW9kdWxlJyBvYmplY3QgaGFz
IG5vIGF0dHJpYnV0ZSAnX29iaiciIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgYXNz
ZXJ0ICgKKyAgICAgICAgIkF0dHJpYnV0ZUVycm9yOiAnTW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0
dHJpYnV0ZSAnX29iaiciCisgICAgICAgIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAg
KQorCisKK2RlZiB0ZXN0X2V4aXRfZnJvbV9hc3NlcnRyZXByX2NvbXBhcmUobW9ua2V5cGF0Y2gp
OgorICAgIGRlZiByYWlzZV9leGl0KG9iaik6CisgICAgICAgIG91dGNvbWVzLmV4aXQoIlF1aXR0
aW5nIGRlYnVnZ2VyIikKKworICAgIG1vbmtleXBhdGNoLnNldGF0dHIodXRpbCwgImlzdGV4dCIs
IHJhaXNlX2V4aXQpCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMob3V0Y29tZXMuRXhpdCwgbWF0
Y2g9IlF1aXR0aW5nIGRlYnVnZ2VyIik6CisgICAgICAgIGNhbGxlcXVhbCgxLCAxKQorCisKK2Rl
ZiB0ZXN0X2Fzc2VydGlvbl9sb2NhdGlvbl93aXRoX2NvdmVyYWdlKHRlc3RkaXIpOgorICAgICIi
IlRoaXMgdXNlZCB0byByZXBvcnQgdGhlIHdyb25nIGxvY2F0aW9uIHdoZW4gcnVuIHdpdGggY292
ZXJhZ2UgKCM1NzU0KS4iIiIKKyAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAi
IiIKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgMQorICAg
ICAgICAgICAgYXNzZXJ0IEZhbHNlLCAyCisgICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocCkpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiPiAgICAgICBhc3NlcnQgRmFsc2UsIDEiLAor
ICAgICAgICAgICAgIkUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IDEiLAorICAgICAgICAgICAgIkUg
ICAgICAgYXNzZXJ0IEZhbHNlIiwKKyAgICAgICAgICAgICIqPSAxIGZhaWxlZCBpbioiLAorICAg
ICAgICBdCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2Fzc2Vy
dHJld3JpdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfYXNzZXJ0cmV3cml0ZS5weQpp
bmRleCAxNDRmNjI1YmM2YzMuLmFkMzA4OWEyM2MwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X2Fzc2VydHJld3JpdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X2Fzc2VydHJld3JpdGUucHkKQEAgLTEsNTggKzEsNTcgQEAKLWZyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQoraW1wb3J0
IGFzdAoraW1wb3J0IGVycm5vCiBpbXBvcnQgZ2xvYgoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0
IG9zCiBpbXBvcnQgcHlfY29tcGlsZQogaW1wb3J0IHN0YXQKIGltcG9ydCBzeXMKIGltcG9ydCB0
ZXh0d3JhcAogaW1wb3J0IHppcGZpbGUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitm
cm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlw
aW5nIGltcG9ydCBNYXBwaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKK2Zyb20gdHlw
aW5nIGltcG9ydCBTZXQKKwogaW1wb3J0IHB5Ci1pbXBvcnQgcHl0ZXN0CiAKIGltcG9ydCBfcHl0
ZXN0Ll9jb2RlCitpbXBvcnQgcHl0ZXN0CiBmcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGltcG9ydCB1
dGlsCi1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0ICgKLSAgICByZXdyaXRl
X2Fzc2VydHMsCi0gICAgUFlURVNUX1RBRywKLSAgICBBc3NlcnRpb25SZXdyaXRpbmdIb29rLAot
KQotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IEVYSVRfTk9URVNUU0NPTExFQ1RFRAotCi1hc3Qg
PSBweXRlc3QuaW1wb3J0b3Jza2lwKCJhc3QiKQotaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
ImphdmEiKToKLSAgICAjIFhYWCBzaG91bGQgYmUgeGZhaWwKLSAgICBweXRlc3Quc2tpcCgiYXNz
ZXJ0IHJld3JpdGUgZG9lcyBjdXJyZW50bHkgbm90IHdvcmsgb24ganl0aG9uIikKLQotCi1kZWYg
c2V0dXBfbW9kdWxlKG1vZCk6Ci0gICAgbW9kLl9vbGRfcmVwcmNvbXBhcmUgPSB1dGlsLl9yZXBy
Y29tcGFyZQotICAgIF9weXRlc3QuX2NvZGUuX3JlcHJjb21wYXJlID0gTm9uZQotCi0KLWRlZiB0
ZWFyZG93bl9tb2R1bGUobW9kKToKLSAgICB1dGlsLl9yZXByY29tcGFyZSA9IG1vZC5fb2xkX3Jl
cHJjb21wYXJlCi0gICAgZGVsIG1vZC5fb2xkX3JlcHJjb21wYXJlCi0KLQotZGVmIHJld3JpdGUo
c3JjKToKK2Zyb20gX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQgX2dldF9hc3NlcnRp
b25fZXhwcnMKK2Zyb20gX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQgQXNzZXJ0aW9u
UmV3cml0aW5nSG9vaworZnJvbSBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlIGltcG9ydCBnZXRf
Y2FjaGVfZGlyCitmcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IFBZQ19UQUlM
Citmcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IFBZVEVTVF9UQUcKK2Zyb20g
X3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBvcnQgcmV3cml0ZV9hc3NlcnRzCitmcm9tIF9w
eXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0
IG1ha2VfbnVtYmVyZWRfZGlyCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJv
bSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCisKKworZGVmIHJld3JpdGUoc3JjOiBz
dHIpIC0+IGFzdC5Nb2R1bGU6CiAgICAgdHJlZSA9IGFzdC5wYXJzZShzcmMpCi0gICAgcmV3cml0
ZV9hc3NlcnRzKHRyZWUpCisgICAgcmV3cml0ZV9hc3NlcnRzKHRyZWUsIHNyYy5lbmNvZGUoKSkK
ICAgICByZXR1cm4gdHJlZQogCiAKLWRlZiBnZXRtc2coZiwgZXh0cmFfbnM9Tm9uZSwgbXVzdF9w
YXNzPUZhbHNlKToKK2RlZiBnZXRtc2coCisgICAgZiwgZXh0cmFfbnM6IE9wdGlvbmFsW01hcHBp
bmdbc3RyLCBvYmplY3RdXSA9IE5vbmUsICosIG11c3RfcGFzczogYm9vbCA9IEZhbHNlCispIC0+
IE9wdGlvbmFsW3N0cl06CiAgICAgIiIiUmV3cml0ZSB0aGUgYXNzZXJ0aW9ucyBpbiBmLCBydW4g
aXQsIGFuZCBnZXQgdGhlIGZhaWx1cmUgbWVzc2FnZS4iIiIKICAgICBzcmMgPSAiXG4iLmpvaW4o
X3B5dGVzdC5fY29kZS5Db2RlKGYpLnNvdXJjZSgpLmxpbmVzKQogICAgIG1vZCA9IHJld3JpdGUo
c3JjKQogICAgIGNvZGUgPSBjb21waWxlKG1vZCwgIjx0ZXN0PiIsICJleGVjIikKLSAgICBucyA9
IHt9CisgICAgbnMgPSB7fSAgIyB0eXBlOiBEaWN0W3N0ciwgb2JqZWN0XQogICAgIGlmIGV4dHJh
X25zIGlzIG5vdCBOb25lOgogICAgICAgICBucy51cGRhdGUoZXh0cmFfbnMpCi0gICAgcHkuYnVp
bHRpbi5leGVjXyhjb2RlLCBucykKKyAgICBleGVjKGNvZGUsIG5zKQogICAgIGZ1bmMgPSBuc1tm
Ll9fbmFtZV9fXQogICAgIHRyeToKLSAgICAgICAgZnVuYygpCisgICAgICAgIGZ1bmMoKSAgIyB0
eXBlOiBpZ25vcmVbb3BlcmF0b3JdCiAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgogICAgICAg
ICBpZiBtdXN0X3Bhc3M6CiAgICAgICAgICAgICBweXRlc3QuZmFpbCgic2hvdWxkbid0IGhhdmUg
cmFpc2VkIikKQEAgLTYzLDQzICs2MiwyMCBAQCBkZWYgZ2V0bXNnKGYsIGV4dHJhX25zPU5vbmUs
IG11c3RfcGFzcz1GYWxzZSk6CiAgICAgZWxzZToKICAgICAgICAgaWYgbm90IG11c3RfcGFzczoK
ICAgICAgICAgICAgIHB5dGVzdC5mYWlsKCJmdW5jdGlvbiBkaWRuJ3QgcmFpc2UgYXQgYWxsIikK
KyAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1kZWYgYWRqdXN0X2JvZHlfZm9yX25ld19kb2NzdHJp
bmdfaW5fbW9kdWxlX25vZGUobSk6Ci0gICAgIiIiTW9kdWxlIGRvY3N0cmluZ3MgaW4gMy44IGFy
ZSBwYXJ0IG9mIE1vZHVsZSBub2RlLgotICAgIFRoaXMgd2FzIGJyaWVmbHkgaW4gMy43IGFzIHdl
bGwgYnV0IGdvdCByZXZlcnRlZCBpbiBiZXRhIDUuCi0KLSAgICBJdCdzIG5vdCBpbiB0aGUgYm9k
eSBzbyB3ZSByZW1vdmUgaXQgc28gdGhlIGZvbGxvd2luZyBib2R5IGl0ZW1zIGhhdmUKLSAgICB0
aGUgc2FtZSBpbmRleGVzIG9uIGFsbCBQeXRob24gdmVyc2lvbnM6Ci0KLSAgICBUT0RPOgotCi0g
ICAgV2UgaGF2ZSBhIGNvbXBsaWNhdGVkIHN5cy52ZXJzaW9uX2luZm8gaWYgaW4gaGVyZSB0byBl
YXNlIHRlc3Rpbmcgb24KLSAgICB2YXJpb3VzIFB5dGhvbiAzLjcgdmVyc2lvbnMsIGJ1dCB3ZSBz
aG91bGQgcmVtb3ZlIHRoZSAzLjcgY2hlY2sgYWZ0ZXIKLSAgICAzLjcgaXMgcmVsZWFzZWQgYXMg
c3RhYmxlIHRvIG1ha2UgdGhpcyBjaGVjayBtb3JlIHN0cmFpZ2h0Zm9yd2FyZC4KLSAgICAiIiIK
LSAgICBpZiAoCi0gICAgICAgIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgOCkKLSAgICAgICAgYW5k
IG5vdCAoKDMsIDcpIDw9IHN5cy52ZXJzaW9uX2luZm8gPD0gKDMsIDcsIDAsICJiZXRhIiwgNCkp
Ci0gICAgKToKLSAgICAgICAgYXNzZXJ0IGxlbihtLmJvZHkpID4gMQotICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShtLmJvZHlbMF0sIGFzdC5FeHByKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShtLmJvZHlbMF0udmFsdWUsIGFzdC5TdHIpCi0gICAgICAgIGRlbCBtLmJvZHlbMF0KLQotCi1j
bGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0ZShvYmplY3QpOgotCitjbGFzcyBUZXN0QXNzZXJ0aW9u
UmV3cml0ZToKICAgICBkZWYgdGVzdF9wbGFjZV9pbml0aWFsX2ltcG9ydHMoc2VsZik6CiAgICAg
ICAgIHMgPSAiIiInRG9jIHN0cmluZydcbm90aGVyID0gc3R1ZmYiIiIKICAgICAgICAgbSA9IHJl
d3JpdGUocykKLSAgICAgICAgYWRqdXN0X2JvZHlfZm9yX25ld19kb2NzdHJpbmdfaW5fbW9kdWxl
X25vZGUobSkKLSAgICAgICAgZm9yIGltcCBpbiBtLmJvZHlbMDoyXToKKyAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UobS5ib2R5WzBdLCBhc3QuRXhwcikKKyAgICAgICAgZm9yIGltcCBpbiBtLmJv
ZHlbMTozXToKICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGltcCwgYXN0LkltcG9ydCkK
ICAgICAgICAgICAgIGFzc2VydCBpbXAubGluZW5vID09IDIKICAgICAgICAgICAgIGFzc2VydCBp
bXAuY29sX29mZnNldCA9PSAwCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVsyXSwg
YXN0LkFzc2lnbikKLSAgICAgICAgcyA9ICIiImZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9z
dGF0ZW1lbnRcbm90aGVyX3N0dWZmIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9k
eVszXSwgYXN0LkFzc2lnbikKKyAgICAgICAgcyA9ICIiImZyb20gX19mdXR1cmVfXyBpbXBvcnQg
ZGl2aXNpb25cbm90aGVyX3N0dWZmIiIiCiAgICAgICAgIG0gPSByZXdyaXRlKHMpCiAgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVswXSwgYXN0LkltcG9ydEZyb20pCiAgICAgICAgIGZv
ciBpbXAgaW4gbS5ib2R5WzE6M106CkBAIC0xMDcsMzcgKzgzLDM3IEBAIGNsYXNzIFRlc3RBc3Nl
cnRpb25SZXdyaXRlKG9iamVjdCk6CiAgICAgICAgICAgICBhc3NlcnQgaW1wLmxpbmVubyA9PSAy
CiAgICAgICAgICAgICBhc3NlcnQgaW1wLmNvbF9vZmZzZXQgPT0gMAogICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShtLmJvZHlbM10sIGFzdC5FeHByKQotICAgICAgICBzID0gIiIiJ2RvYyBzdHJp
bmcnXG5mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50IiIiCisgICAgICAgIHMg
PSAiIiInZG9jIHN0cmluZydcbmZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24iIiIKICAg
ICAgICAgbSA9IHJld3JpdGUocykKLSAgICAgICAgYWRqdXN0X2JvZHlfZm9yX25ld19kb2NzdHJp
bmdfaW5fbW9kdWxlX25vZGUobSkKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzBd
LCBhc3QuSW1wb3J0RnJvbSkKLSAgICAgICAgZm9yIGltcCBpbiBtLmJvZHlbMTozXToKKyAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzBdLCBhc3QuRXhwcikKKyAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UobS5ib2R5WzFdLCBhc3QuSW1wb3J0RnJvbSkKKyAgICAgICAgZm9yIGltcCBp
biBtLmJvZHlbMjo0XToKICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGltcCwgYXN0Lklt
cG9ydCkKICAgICAgICAgICAgIGFzc2VydCBpbXAubGluZW5vID09IDIKICAgICAgICAgICAgIGFz
c2VydCBpbXAuY29sX29mZnNldCA9PSAwCi0gICAgICAgIHMgPSAiIiInZG9jIHN0cmluZydcbmZy
b20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnRcbm90aGVyIiIiCisgICAgICAgIHMg
PSAiIiInZG9jIHN0cmluZydcbmZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb25cbm90aGVy
IiIiCiAgICAgICAgIG0gPSByZXdyaXRlKHMpCi0gICAgICAgIGFkanVzdF9ib2R5X2Zvcl9uZXdf
ZG9jc3RyaW5nX2luX21vZHVsZV9ub2RlKG0pCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0u
Ym9keVswXSwgYXN0LkltcG9ydEZyb20pCi0gICAgICAgIGZvciBpbXAgaW4gbS5ib2R5WzE6M106
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVswXSwgYXN0LkV4cHIpCisgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKG0uYm9keVsxXSwgYXN0LkltcG9ydEZyb20pCisgICAgICAgIGZv
ciBpbXAgaW4gbS5ib2R5WzI6NF06CiAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpbXAs
IGFzdC5JbXBvcnQpCiAgICAgICAgICAgICBhc3NlcnQgaW1wLmxpbmVubyA9PSAzCiAgICAgICAg
ICAgICBhc3NlcnQgaW1wLmNvbF9vZmZzZXQgPT0gMAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShtLmJvZHlbM10sIGFzdC5FeHByKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtLmJvZHlb
NF0sIGFzdC5FeHByKQogICAgICAgICBzID0gIiIiZnJvbSAuIGltcG9ydCByZWxhdGl2ZVxub3Ro
ZXJfc3R1ZmYiIiIKICAgICAgICAgbSA9IHJld3JpdGUocykKLSAgICAgICAgZm9yIGltcCBpbiBt
LmJvZHlbMDoyXToKKyAgICAgICAgZm9yIGltcCBpbiBtLmJvZHlbOjJdOgogICAgICAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaW1wLCBhc3QuSW1wb3J0KQogICAgICAgICAgICAgYXNzZXJ0IGlt
cC5saW5lbm8gPT0gMQogICAgICAgICAgICAgYXNzZXJ0IGltcC5jb2xfb2Zmc2V0ID09IDAKICAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzNdLCBhc3QuRXhwcikKIAotICAgIGRlZiB0
ZXN0X2RvbnRfcmV3cml0ZShzZWxmKToKKyAgICBkZWYgdGVzdF9kb250X3Jld3JpdGUoc2VsZikg
LT4gTm9uZToKICAgICAgICAgcyA9ICIiIidQWVRFU1RfRE9OVF9SRVdSSVRFJ1xuYXNzZXJ0IDE0
IiIiCiAgICAgICAgIG0gPSByZXdyaXRlKHMpCi0gICAgICAgIGFkanVzdF9ib2R5X2Zvcl9uZXdf
ZG9jc3RyaW5nX2luX21vZHVsZV9ub2RlKG0pCi0gICAgICAgIGFzc2VydCBsZW4obS5ib2R5KSA9
PSAxCi0gICAgICAgIGFzc2VydCBtLmJvZHlbMF0ubXNnIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0
IGxlbihtLmJvZHkpID09IDIKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobS5ib2R5WzFdLCBh
c3QuQXNzZXJ0KQorICAgICAgICBhc3NlcnQgbS5ib2R5WzFdLm1zZyBpcyBOb25lCiAKICAgICBk
ZWYgdGVzdF9kb250X3Jld3JpdGVfcGx1Z2luKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBjb250
ZW50cyA9IHsKQEAgLTE0Nyw0MSArMTIzLDE0NCBAQCBjbGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0
ZShvYmplY3QpOgogICAgICAgICB9CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgqKmNvbnRl
bnRzKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKLSAg
ICAgICAgYXNzZXJ0ICJ3YXJuaW5ncyIgbm90IGluICIiLmpvaW4ocmVzdWx0Lm91dGxpbmVzKQot
Ci0gICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgYXNzZXJ0ICJ3YXJuaW5nIiBub3Qg
aW4gIiIuam9pbihyZXN1bHQub3V0bGluZXMpCisKKyAgICBkZWYgdGVzdF9yZXdyaXRlc19wbHVn
aW5fYXNfYV9wYWNrYWdlKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwa2dkaXIgPSB0ZXN0ZGly
Lm1rcHlkaXIoInBsdWdpbiIpCisgICAgICAgIHBrZ2Rpci5qb2luKCJfX2luaXRfXy5weSIpLndy
aXRlKAorICAgICAgICAgICAgImltcG9ydCBweXRlc3RcbiIKKyAgICAgICAgICAgICJAcHl0ZXN0
LmZpeHR1cmVcbiIKKyAgICAgICAgICAgICJkZWYgc3BlY2lhbF9hc3NlcnRlcigpOlxuIgorICAg
ICAgICAgICAgIiAgICBkZWYgc3BlY2lhbF9hc3NlcnQoeCwgeSk6XG4iCisgICAgICAgICAgICAi
ICAgICAgICBhc3NlcnQgeCA9PSB5XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiBzcGVjaWFs
X2Fzc2VydFxuIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KCdweXRl
c3RfcGx1Z2lucyA9IFsicGx1Z2luIl0nKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRl
ZiB0ZXN0KHNwZWNpYWxfYXNzZXJ0ZXIpOiBzcGVjaWFsX2Fzc2VydGVyKDEsIDIpXG4iKQorICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIiphc3NlcnQgMSA9PSAyKiJdKQorCisgICAgZGVmIHRlc3RfaG9ub3Jz
X3BlcF8yMzUoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICAgICAjIG5vdGU6IGNv
dWxkbid0IG1ha2UgaXQgZmFpbCBvbiBtYWNvcyB3aXRoIGEgc2luZ2xlIGBzeXMucGF0aGAgZW50
cnkKKyAgICAgICAgIyBub3RlOiB0aGVzZSBtb2R1bGVzIGFyZSBuYW1lZCBgdGVzdF8qYCB0byB0
cmlnZ2VyIHJld3JpdGluZworICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0X3kucHki
KS53cml0ZSgieCA9IDEiKQorICAgICAgICB4ZGlyID0gdGVzdGRpci50bXBkaXIuam9pbigieCIp
LmVuc3VyZV9kaXIoKQorICAgICAgICB4ZGlyLmpvaW4oInRlc3RfWSIpLmVuc3VyZV9kaXIoKS5q
b2luKCJfX2luaXRfXy5weSIpLndyaXRlKCJ4ID0gMiIpCisgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgICJpbXBvcnQgdGVzdF95XG4iCisgICAgICAgICAgICAiaW1wb3J0
IHRlc3RfWVxuIgorICAgICAgICAgICAgImRlZiB0ZXN0KCk6XG4iCisgICAgICAgICAgICAiICAg
IGFzc2VydCB0ZXN0X3kueCA9PSAxXG4iCisgICAgICAgICAgICAiICAgIGFzc2VydCB0ZXN0X1ku
eCA9PSAyXG4iCisgICAgICAgICkKKyAgICAgICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5k
KHhkaXIpCisgICAgICAgIHRlc3RkaXIucnVucHl0ZXN0KCkuYXNzZXJ0X291dGNvbWVzKHBhc3Nl
ZD0xKQogCi0gICAgICAgIGRlZiBmKCk6CisgICAgZGVmIHRlc3RfbmFtZShzZWxmLCByZXF1ZXN0
KSAtPiBOb25lOgorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0
IEZhbHNlCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiYXNzZXJ0IEZhbHNlIgorICAg
ICAgICBhc3NlcnQgZ2V0bXNnKGYxKSA9PSAiYXNzZXJ0IEZhbHNlIgogCi0gICAgICAgIGRlZiBm
KCk6CisgICAgICAgIGRlZiBmMigpIC0+IE5vbmU6CiAgICAgICAgICAgICBmID0gRmFsc2UKICAg
ICAgICAgICAgIGFzc2VydCBmCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiYXNzZXJ0
IEZhbHNlIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYyKSA9PSAiYXNzZXJ0IEZhbHNlIgogCi0g
ICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICBhc3NlcnQgYV9nbG9iYWwgICMgbm9xYQorICAg
ICAgICBkZWYgZjMoKSAtPiBOb25lOgorICAgICAgICAgICAgYXNzZXJ0IGFfZ2xvYmFsICAjIHR5
cGU6IGlnbm9yZVtuYW1lLWRlZmluZWRdICMgbm9xYQogCi0gICAgICAgIGFzc2VydCBnZXRtc2co
ZiwgeyJhX2dsb2JhbCI6IEZhbHNlfSkgPT0gImFzc2VydCBGYWxzZSIKKyAgICAgICAgYXNzZXJ0
IGdldG1zZyhmMywgeyJhX2dsb2JhbCI6IEZhbHNlfSkgPT0gImFzc2VydCBGYWxzZSIKIAotICAg
ICAgICBkZWYgZigpOgotICAgICAgICAgICAgYXNzZXJ0IHN5cyA9PSA0MgorICAgICAgICBkZWYg
ZjQoKSAtPiBOb25lOgorICAgICAgICAgICAgYXNzZXJ0IHN5cyA9PSA0MiAgIyB0eXBlOiBpZ25v
cmVbY29tcGFyaXNvbi1vdmVybGFwXQogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZiwgeyJzeXMi
OiBzeXN9KSA9PSAiYXNzZXJ0IHN5cyA9PSA0MiIKKyAgICAgICAgdmVyYm9zZSA9IHJlcXVlc3Qu
Y29uZmlnLmdldG9wdGlvbigidmVyYm9zZSIpCisgICAgICAgIG1zZyA9IGdldG1zZyhmNCwgeyJz
eXMiOiBzeXN9KQorICAgICAgICBpZiB2ZXJib3NlID4gMDoKKyAgICAgICAgICAgIGFzc2VydCBt
c2cgPT0gKAorICAgICAgICAgICAgICAgICJhc3NlcnQgPG1vZHVsZSAnc3lzJyAoYnVpbHQtaW4p
PiA9PSA0MlxuIgorICAgICAgICAgICAgICAgICIgICs8bW9kdWxlICdzeXMnIChidWlsdC1pbik+
XG4iCisgICAgICAgICAgICAgICAgIiAgLTQyIgorICAgICAgICAgICAgKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgYXNzZXJ0IG1zZyA9PSAiYXNzZXJ0IHN5cyA9PSA0MiIKIAotICAgICAg
ICBkZWYgZigpOgotICAgICAgICAgICAgYXNzZXJ0IGNscyA9PSA0MiAgIyBub3FhCisgICAgICAg
IGRlZiBmNSgpIC0+IE5vbmU6CisgICAgICAgICAgICBhc3NlcnQgY2xzID09IDQyICAjIHR5cGU6
IGlnbm9yZVtuYW1lLWRlZmluZWRdICAjIG5vcWE6IEY4MjEKIAotICAgICAgICBjbGFzcyBYKG9i
amVjdCk6CisgICAgICAgIGNsYXNzIFg6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgYXNz
ZXJ0IGdldG1zZyhmLCB7ImNscyI6IFh9KSA9PSAiYXNzZXJ0IGNscyA9PSA0MiIKKyAgICAgICAg
bXNnID0gZ2V0bXNnKGY1LCB7ImNscyI6IFh9KQorICAgICAgICBhc3NlcnQgbXNnIGlzIG5vdCBO
b25lCisgICAgICAgIGxpbmVzID0gbXNnLnNwbGl0bGluZXMoKQorICAgICAgICBpZiB2ZXJib3Nl
ID4gMToKKyAgICAgICAgICAgIGFzc2VydCBsaW5lcyA9PSBbCisgICAgICAgICAgICAgICAgImFz
c2VydCB7IXJ9ID09IDQyIi5mb3JtYXQoWCksCisgICAgICAgICAgICAgICAgIiAgK3shcn0iLmZv
cm1hdChYKSwKKyAgICAgICAgICAgICAgICAiICAtNDIiLAorICAgICAgICAgICAgXQorICAgICAg
ICBlbGlmIHZlcmJvc2UgPiAwOgorICAgICAgICAgICAgYXNzZXJ0IGxpbmVzID09IFsKKyAgICAg
ICAgICAgICAgICAiYXNzZXJ0IDxjbGFzcyAndGVzdF8uLi5lLjxsb2NhbHM+LlgnPiA9PSA0MiIs
CisgICAgICAgICAgICAgICAgIiAgK3shcn0iLmZvcm1hdChYKSwKKyAgICAgICAgICAgICAgICAi
ICAtNDIiLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0
IGxpbmVzID09IFsiYXNzZXJ0IGNscyA9PSA0MiJdCisKKyAgICBkZWYgdGVzdF9hc3NlcnRyZXBy
X2NvbXBhcmVfc2FtZV93aWR0aChzZWxmLCByZXF1ZXN0KSAtPiBOb25lOgorICAgICAgICAiIiJT
aG91bGQgdXNlIHNhbWUgd2lkdGgvdHJ1bmNhdGlvbiB3aXRoIHNhbWUgaW5pdGlhbCB3aWR0aC4i
IiIKKworICAgICAgICBkZWYgZigpIC0+IE5vbmU6CisgICAgICAgICAgICBhc3NlcnQgIjEyMzQ1
Njc4OTAiICogNSArICJBIiA9PSAiMTIzNDU2Nzg5MCIgKiA1ICsgIkIiCisKKyAgICAgICAgbXNn
ID0gZ2V0bXNnKGYpCisgICAgICAgIGFzc2VydCBtc2cgaXMgbm90IE5vbmUKKyAgICAgICAgbGlu
ZSA9IG1zZy5zcGxpdGxpbmVzKClbMF0KKyAgICAgICAgaWYgcmVxdWVzdC5jb25maWcuZ2V0b3B0
aW9uKCJ2ZXJib3NlIikgPiAxOgorICAgICAgICAgICAgYXNzZXJ0IGxpbmUgPT0gKAorICAgICAg
ICAgICAgICAgICJhc3NlcnQgJzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwQScgIgorICAgICAgICAgICAgICAgICI9PSAnMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBCJyIKKyAgICAgICAgICAgICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBsaW5lID09ICgKKyAgICAgICAgICAgICAgICAi
YXNzZXJ0ICcxMjM0NTY3ODkwMTIuLi45MDEyMzQ1Njc4OTBBJyAiCisgICAgICAgICAgICAgICAg
Ij09ICcxMjM0NTY3ODkwMTIuLi45MDEyMzQ1Njc4OTBCJyIKKyAgICAgICAgICAgICkKIAotICAg
IGRlZiB0ZXN0X2Fzc2VydF9hbHJlYWR5X2hhc19tZXNzYWdlKHNlbGYpOgorICAgIGRlZiB0ZXN0
X2RvbnRfcmV3cml0ZV9pZl9oYXNhdHRyX2ZhaWxzKHNlbGYsIHJlcXVlc3QpIC0+IE5vbmU6Cisg
ICAgICAgIGNsYXNzIFk6CisgICAgICAgICAgICAiIiJBIGNsYXNzIHdob3NlIGdldGF0dHIgZmFp
bHMsIGJ1dCBub3Qgd2l0aCBgQXR0cmlidXRlRXJyb3JgLiIiIgogCisgICAgICAgICAgICBkZWYg
X19nZXRhdHRyX18oc2VsZiwgYXR0cmlidXRlX25hbWUpOgorICAgICAgICAgICAgICAgIHJhaXNl
IEtleUVycm9yKCkKKworICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIlkiCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
KSAtPiBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuZm9vID0gMworCisgICAgICAgIGRlZiBm
KCkgLT4gTm9uZToKKyAgICAgICAgICAgIGFzc2VydCBjbHMoKS5mb28gPT0gMiAgIyB0eXBlOiBp
Z25vcmVbbmFtZS1kZWZpbmVkXSAjIG5vcWE6IEY4MjEKKworICAgICAgICAjIFhYWDogbG9va3Mg
bGlrZSB0aGUgIndoZXJlIiBzaG91bGQgYWxzbyBiZSB0aGVyZSBpbiB2ZXJib3NlIG1vZGU/IQor
ICAgICAgICBtc2cgPSBnZXRtc2coZiwgeyJjbHMiOiBZfSkKKyAgICAgICAgYXNzZXJ0IG1zZyBp
cyBub3QgTm9uZQorICAgICAgICBsaW5lcyA9IG1zZy5zcGxpdGxpbmVzKCkKKyAgICAgICAgaWYg
cmVxdWVzdC5jb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3NlIikgPiAwOgorICAgICAgICAgICAgYXNz
ZXJ0IGxpbmVzID09IFsiYXNzZXJ0IDMgPT0gMiIsICIgICszIiwgIiAgLTIiXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgYXNzZXJ0IGxpbmVzID09IFsKKyAgICAgICAgICAgICAgICAiYXNz
ZXJ0IDMgPT0gMiIsCisgICAgICAgICAgICAgICAgIiArICB3aGVyZSAzID0gWS5mb28iLAorICAg
ICAgICAgICAgICAgICIgKyAgICB3aGVyZSBZID0gY2xzKCkiLAorICAgICAgICAgICAgXQorCisg
ICAgZGVmIHRlc3RfYXNzZXJ0X2FscmVhZHlfaGFzX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgIGRl
ZiBmKCk6CiAgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJzb21ldGhpbmcgYmFkISIKIApAQCAt
MjUwLDE1MiArMzI5LDE1MiBAQCBjbGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0ZShvYmplY3QpOgog
ICAgICAgICAgICAgWyIqQXNzZXJ0aW9uRXJyb3I6IFRvIGJlIGVzY2FwZWQ6ICUiLCAiKmFzc2Vy
dCAxID09IDIiXQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9ib29sb3Aoc2VsZik6CisgICAg
ZGVmIHRlc3RfYXNzZXJ0aW9uX21lc3NhZ2VzX2J5dGVzKHNlbGYsIHRlc3RkaXIpOgorICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2J5dGVzX2Fzc2VydGlvbigpOlxuICAgIGFz
c2VydCBGYWxzZSwgYidvaGFpISdcbiIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQorICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqQXNzZXJ0aW9uRXJyb3I6IGInb2hhaSEnIiwgIiphc3NlcnQg
RmFsc2UiXSkKIAotICAgICAgICBkZWYgZigpOgorICAgIGRlZiB0ZXN0X2Jvb2xvcChzZWxmKSAt
PiBOb25lOgorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAgICAgZiA9IGcgPSBG
YWxzZQogICAgICAgICAgICAgYXNzZXJ0IGYgYW5kIGcKIAotICAgICAgICBhc3NlcnQgZ2V0bXNn
KGYpID09ICJhc3NlcnQgKEZhbHNlKSIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmMSkgPT0gImFz
c2VydCAoRmFsc2UpIgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmMigpIC0+IE5v
bmU6CiAgICAgICAgICAgICBmID0gVHJ1ZQogICAgICAgICAgICAgZyA9IEZhbHNlCiAgICAgICAg
ICAgICBhc3NlcnQgZiBhbmQgZwogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2Vy
dCAoVHJ1ZSBhbmQgRmFsc2UpIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYyKSA9PSAiYXNzZXJ0
IChUcnVlIGFuZCBGYWxzZSkiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYzKCkg
LT4gTm9uZToKICAgICAgICAgICAgIGYgPSBGYWxzZQogICAgICAgICAgICAgZyA9IFRydWUKICAg
ICAgICAgICAgIGFzc2VydCBmIGFuZCBnCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAi
YXNzZXJ0IChGYWxzZSkiCisgICAgICAgIGFzc2VydCBnZXRtc2coZjMpID09ICJhc3NlcnQgKEZh
bHNlKSIKIAotICAgICAgICBkZWYgZigpOgorICAgICAgICBkZWYgZjQoKSAtPiBOb25lOgogICAg
ICAgICAgICAgZiA9IGcgPSBGYWxzZQogICAgICAgICAgICAgYXNzZXJ0IGYgb3IgZwogCi0gICAg
ICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2VydCAoRmFsc2Ugb3IgRmFsc2UpIgorICAgICAg
ICBhc3NlcnQgZ2V0bXNnKGY0KSA9PSAiYXNzZXJ0IChGYWxzZSBvciBGYWxzZSkiCiAKLSAgICAg
ICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY1KCkgLT4gTm9uZToKICAgICAgICAgICAgIGYgPSBn
ID0gRmFsc2UKICAgICAgICAgICAgIGFzc2VydCBub3QgZiBhbmQgbm90IGcKIAotICAgICAgICBn
ZXRtc2coZiwgbXVzdF9wYXNzPVRydWUpCisgICAgICAgIGdldG1zZyhmNSwgbXVzdF9wYXNzPVRy
dWUpCiAKLSAgICAgICAgZGVmIHgoKToKKyAgICAgICAgZGVmIHgoKSAtPiBib29sOgogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY2KCkg
LT4gTm9uZToKICAgICAgICAgICAgIGFzc2VydCB4KCkgYW5kIHgoKQogCiAgICAgICAgIGFzc2Vy
dCAoCi0gICAgICAgICAgICBnZXRtc2coZiwgeyJ4IjogeH0pCisgICAgICAgICAgICBnZXRtc2co
ZjYsIHsieCI6IHh9KQogICAgICAgICAgICAgPT0gIiIiYXNzZXJ0IChGYWxzZSkKICArICB3aGVy
ZSBGYWxzZSA9IHgoKSIiIgogICAgICAgICApCiAKLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAg
ICAgIGFzc2VydCBGYWxzZSBvciB4KCkKKyAgICAgICAgZGVmIGY3KCkgLT4gTm9uZToKKyAgICAg
ICAgICAgIGFzc2VydCBGYWxzZSBvciB4KCkgICMgdHlwZTogaWdub3JlW3VucmVhY2hhYmxlXQog
CiAgICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICBnZXRtc2coZiwgeyJ4IjogeH0pCisgICAg
ICAgICAgICBnZXRtc2coZjcsIHsieCI6IHh9KQogICAgICAgICAgICAgPT0gIiIiYXNzZXJ0IChG
YWxzZSBvciBGYWxzZSkKICArICB3aGVyZSBGYWxzZSA9IHgoKSIiIgogICAgICAgICApCiAKLSAg
ICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY4KCkgLT4gTm9uZToKICAgICAgICAgICAgIGFz
c2VydCAxIGluIHt9IGFuZCAyIGluIHt9CiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAi
YXNzZXJ0ICgxIGluIHt9KSIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmOCkgPT0gImFzc2VydCAo
MSBpbiB7fSkiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGY5KCkgLT4gTm9uZToK
ICAgICAgICAgICAgIHggPSAxCiAgICAgICAgICAgICB5ID0gMgogICAgICAgICAgICAgYXNzZXJ0
IHggaW4gezE6IE5vbmV9IGFuZCB5IGluIHt9CiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9
PSAiYXNzZXJ0ICgxIGluIHsxOiBOb25lfSBhbmQgMiBpbiB7fSkiCisgICAgICAgIGFzc2VydCBn
ZXRtc2coZjkpID09ICJhc3NlcnQgKDEgaW4gezE6IE5vbmV9IGFuZCAyIGluIHt9KSIKIAotICAg
ICAgICBkZWYgZigpOgorICAgICAgICBkZWYgZjEwKCkgLT4gTm9uZToKICAgICAgICAgICAgIGYg
PSBUcnVlCiAgICAgICAgICAgICBnID0gRmFsc2UKICAgICAgICAgICAgIGFzc2VydCBmIG9yIGcK
IAotICAgICAgICBnZXRtc2coZiwgbXVzdF9wYXNzPVRydWUpCisgICAgICAgIGdldG1zZyhmMTAs
IG11c3RfcGFzcz1UcnVlKQogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmMTEoKSAt
PiBOb25lOgogICAgICAgICAgICAgZiA9IGcgPSBoID0gbGFtYmRhOiBUcnVlCiAgICAgICAgICAg
ICBhc3NlcnQgZigpIGFuZCBnKCkgYW5kIGgoKQogCi0gICAgICAgIGdldG1zZyhmLCBtdXN0X3Bh
c3M9VHJ1ZSkKKyAgICAgICAgZ2V0bXNnKGYxMSwgbXVzdF9wYXNzPVRydWUpCiAKLSAgICBkZWYg
dGVzdF9zaG9ydF9jaXJjdWl0X2V2YWx1YXRpb24oc2VsZik6CisgICAgZGVmIHRlc3Rfc2hvcnRf
Y2lyY3VpdF9ldmFsdWF0aW9uKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBmMSgpIC0+IE5v
bmU6CisgICAgICAgICAgICBhc3NlcnQgVHJ1ZSBvciBleHBsb2RlICAjIHR5cGU6IGlnbm9yZVtu
YW1lLWRlZmluZWQsdW5yZWFjaGFibGVdICMgbm9xYTogRjgyMQogCi0gICAgICAgIGRlZiBmKCk6
Ci0gICAgICAgICAgICBhc3NlcnQgVHJ1ZSBvciBleHBsb2RlICAjIG5vcWEKKyAgICAgICAgZ2V0
bXNnKGYxLCBtdXN0X3Bhc3M9VHJ1ZSkKIAotICAgICAgICBnZXRtc2coZiwgbXVzdF9wYXNzPVRy
dWUpCi0KLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYyKCkgLT4gTm9uZToKICAgICAg
ICAgICAgIHggPSAxCiAgICAgICAgICAgICBhc3NlcnQgeCA9PSAxIG9yIHggPT0gMgogCi0gICAg
ICAgIGdldG1zZyhmLCBtdXN0X3Bhc3M9VHJ1ZSkKKyAgICAgICAgZ2V0bXNnKGYyLCBtdXN0X3Bh
c3M9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X3VuYXJ5X29wKHNlbGYpOgotCi0gICAgICAgIGRlZiBm
KCk6CisgICAgZGVmIHRlc3RfdW5hcnlfb3Aoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGYx
KCkgLT4gTm9uZToKICAgICAgICAgICAgIHggPSBUcnVlCiAgICAgICAgICAgICBhc3NlcnQgbm90
IHgKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgbm90IFRydWUiCisgICAg
ICAgIGFzc2VydCBnZXRtc2coZjEpID09ICJhc3NlcnQgbm90IFRydWUiCiAKLSAgICAgICAgZGVm
IGYoKToKKyAgICAgICAgZGVmIGYyKCkgLT4gTm9uZToKICAgICAgICAgICAgIHggPSAwCiAgICAg
ICAgICAgICBhc3NlcnQgfnggKyAxCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiYXNz
ZXJ0ICh+MCArIDEpIgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYyKSA9PSAiYXNzZXJ0ICh+MCAr
IDEpIgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmMygpIC0+IE5vbmU6CiAgICAg
ICAgICAgICB4ID0gMwogICAgICAgICAgICAgYXNzZXJ0IC14ICsgeAogCi0gICAgICAgIGFzc2Vy
dCBnZXRtc2coZikgPT0gImFzc2VydCAoLTMgKyAzKSIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhm
MykgPT0gImFzc2VydCAoLTMgKyAzKSIKIAotICAgICAgICBkZWYgZigpOgorICAgICAgICBkZWYg
ZjQoKSAtPiBOb25lOgogICAgICAgICAgICAgeCA9IDAKICAgICAgICAgICAgIGFzc2VydCAreCAr
IHgKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKCswICsgMCkiCi0KLSAg
ICBkZWYgdGVzdF9iaW5hcnlfb3Aoc2VsZik6CisgICAgICAgIGFzc2VydCBnZXRtc2coZjQpID09
ICJhc3NlcnQgKCswICsgMCkiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICBkZWYgdGVzdF9iaW5h
cnlfb3Aoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGYxKCkgLT4gTm9uZToKICAgICAgICAg
ICAgIHggPSAxCiAgICAgICAgICAgICB5ID0gLTEKICAgICAgICAgICAgIGFzc2VydCB4ICsgeQog
Ci0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2VydCAoMSArIC0xKSIKKyAgICAgICAg
YXNzZXJ0IGdldG1zZyhmMSkgPT0gImFzc2VydCAoMSArIC0xKSIKIAotICAgICAgICBkZWYgZigp
OgorICAgICAgICBkZWYgZjIoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IG5vdCA1ICUg
NAogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gImFzc2VydCBub3QgKDUgJSA0KSIKLQot
ICAgIGRlZiB0ZXN0X2Jvb2xvcF9wZXJjZW50KHNlbGYpOgorICAgICAgICBhc3NlcnQgZ2V0bXNn
KGYyKSA9PSAiYXNzZXJ0IG5vdCAoNSAlIDQpIgogCi0gICAgICAgIGRlZiBmKCk6CisgICAgZGVm
IHRlc3RfYm9vbG9wX3BlcmNlbnQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGYxKCkgLT4g
Tm9uZToKICAgICAgICAgICAgIGFzc2VydCAzICUgMiBhbmQgRmFsc2UKIAotICAgICAgICBhc3Nl
cnQgZ2V0bXNnKGYpID09ICJhc3NlcnQgKCgzICUgMikgYW5kIEZhbHNlKSIKKyAgICAgICAgYXNz
ZXJ0IGdldG1zZyhmMSkgPT0gImFzc2VydCAoKDMgJSAyKSBhbmQgRmFsc2UpIgogCi0gICAgICAg
IGRlZiBmKCk6Ci0gICAgICAgICAgICBhc3NlcnQgRmFsc2Ugb3IgNCAlIDIKKyAgICAgICAgZGVm
IGYyKCkgLT4gTm9uZToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZSBvciA0ICUgMiAgIyB0eXBl
OiBpZ25vcmVbdW5yZWFjaGFibGVdCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiYXNz
ZXJ0IChGYWxzZSBvciAoNCAlIDIpKSIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmMikgPT0gImFz
c2VydCAoRmFsc2Ugb3IgKDQgJSAyKSkiCiAKLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMu
dmVyc2lvbl9pbmZvIDwgKDMsNSkiKQogICAgIGRlZiB0ZXN0X2F0X29wZXJhdG9yX2lzc3VlMTI5
MChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAg
ICAgIiIiCkBAIC00MTAsMTc3ICs0ODksMTgyIEBAIGNsYXNzIFRlc3RBc3NlcnRpb25SZXdyaXRl
KG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgdGVzdGRpci5ydW5weXRlc3QoKS5hc3NlcnRf
b3V0Y29tZXMocGFzc2VkPTEpCiAKLSAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgIGRlZiB0
ZXN0X3N0YXJyZWRfd2l0aF9zaWRlX2VmZmVjdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIi
U2VlICM0NDEyIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIi
IlwKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgZiA9IGxhbWJkYSB4
OiB4CisgICAgICAgICAgICAgICAgeCA9IGl0ZXIoWzEsIDIsIDNdKQorICAgICAgICAgICAgICAg
IGFzc2VydCAyICogbmV4dCh4KSA9PSBmKCpbbmV4dCh4KV0pCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgKQorICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLmFzc2VydF9vdXRjb21lcyhwYXNz
ZWQ9MSkKIAotICAgICAgICBkZWYgZyhhPTQyLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiB0
ZXN0X2NhbGwoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGVmIGcoYT00MiwgKmFyZ3MsICoqa3dh
cmdzKSAtPiBib29sOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgbnMgPSB7
ImciOiBnfQogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmMSgpIC0+IE5vbmU6CiAg
ICAgICAgICAgICBhc3NlcnQgZygpCiAKICAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIGdl
dG1zZyhmLCBucykKKyAgICAgICAgICAgIGdldG1zZyhmMSwgbnMpCiAgICAgICAgICAgICA9PSAi
IiJhc3NlcnQgRmFsc2UKICArICB3aGVyZSBGYWxzZSA9IGcoKSIiIgogICAgICAgICApCiAKLSAg
ICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYyKCkgLT4gTm9uZToKICAgICAgICAgICAgIGFz
c2VydCBnKDEpCiAKICAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIGdldG1zZyhmLCBucykK
KyAgICAgICAgICAgIGdldG1zZyhmMiwgbnMpCiAgICAgICAgICAgICA9PSAiIiJhc3NlcnQgRmFs
c2UKICArICB3aGVyZSBGYWxzZSA9IGcoMSkiIiIKICAgICAgICAgKQogCi0gICAgICAgIGRlZiBm
KCk6CisgICAgICAgIGRlZiBmMygpIC0+IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgZygxLCAy
KQogCiAgICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICBnZXRtc2coZiwgbnMpCisgICAgICAg
ICAgICBnZXRtc2coZjMsIG5zKQogICAgICAgICAgICAgPT0gIiIiYXNzZXJ0IEZhbHNlCiAgKyAg
d2hlcmUgRmFsc2UgPSBnKDEsIDIpIiIiCiAgICAgICAgICkKIAotICAgICAgICBkZWYgZigpOgor
ICAgICAgICBkZWYgZjQoKSAtPiBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IGcoMSwgZz00MikK
IAogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgZ2V0bXNnKGYsIG5zKQorICAgICAgICAg
ICAgZ2V0bXNnKGY0LCBucykKICAgICAgICAgICAgID09ICIiImFzc2VydCBGYWxzZQogICsgIHdo
ZXJlIEZhbHNlID0gZygxLCBnPTQyKSIiIgogICAgICAgICApCiAKLSAgICAgICAgZGVmIGYoKToK
KyAgICAgICAgZGVmIGY1KCkgLT4gTm9uZToKICAgICAgICAgICAgIGFzc2VydCBnKDEsIDMsIGc9
MjMpCiAKICAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIGdldG1zZyhmLCBucykKKyAgICAg
ICAgICAgIGdldG1zZyhmNSwgbnMpCiAgICAgICAgICAgICA9PSAiIiJhc3NlcnQgRmFsc2UKICAr
ICB3aGVyZSBGYWxzZSA9IGcoMSwgMywgZz0yMykiIiIKICAgICAgICAgKQogCi0gICAgICAgIGRl
ZiBmKCk6CisgICAgICAgIGRlZiBmNigpIC0+IE5vbmU6CiAgICAgICAgICAgICBzZXEgPSBbMSwg
MiwgM10KICAgICAgICAgICAgIGFzc2VydCBnKCpzZXEpCiAKICAgICAgICAgYXNzZXJ0ICgKLSAg
ICAgICAgICAgIGdldG1zZyhmLCBucykKKyAgICAgICAgICAgIGdldG1zZyhmNiwgbnMpCiAgICAg
ICAgICAgICA9PSAiIiJhc3NlcnQgRmFsc2UKICArICB3aGVyZSBGYWxzZSA9IGcoKlsxLCAyLCAz
XSkiIiIKICAgICAgICAgKQogCi0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmNygpIC0+
IE5vbmU6CiAgICAgICAgICAgICB4ID0gImEiCiAgICAgICAgICAgICBhc3NlcnQgZygqKnt4OiAy
fSkKIAogICAgICAgICBhc3NlcnQgKAotICAgICAgICAgICAgZ2V0bXNnKGYsIG5zKQorICAgICAg
ICAgICAgZ2V0bXNnKGY3LCBucykKICAgICAgICAgICAgID09ICIiImFzc2VydCBGYWxzZQogICsg
IHdoZXJlIEZhbHNlID0gZygqKnsnYSc6IDJ9KSIiIgogICAgICAgICApCiAKLSAgICBkZWYgdGVz
dF9hdHRyaWJ1dGUoc2VsZik6Ci0KLSAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgIGRlZiB0
ZXN0X2F0dHJpYnV0ZShzZWxmKSAtPiBOb25lOgorICAgICAgICBjbGFzcyBYOgogICAgICAgICAg
ICAgZyA9IDMKIAogICAgICAgICBucyA9IHsieCI6IFh9CiAKLSAgICAgICAgZGVmIGYoKToKLSAg
ICAgICAgICAgIGFzc2VydCBub3QgeC5nICAjIG5vcWEKKyAgICAgICAgZGVmIGYxKCkgLT4gTm9u
ZToKKyAgICAgICAgICAgIGFzc2VydCBub3QgeC5nICAjIHR5cGU6IGlnbm9yZVtuYW1lLWRlZmlu
ZWRdICMgbm9xYTogRjgyMQogCiAgICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICBnZXRtc2co
ZiwgbnMpCisgICAgICAgICAgICBnZXRtc2coZjEsIG5zKQogICAgICAgICAgICAgPT0gIiIiYXNz
ZXJ0IG5vdCAzCiAgKyAgd2hlcmUgMyA9IHguZyIiIgogICAgICAgICApCiAKLSAgICAgICAgZGVm
IGYoKToKLSAgICAgICAgICAgIHguYSA9IEZhbHNlICAjIG5vcWEKLSAgICAgICAgICAgIGFzc2Vy
dCB4LmEgICMgbm9xYQorICAgICAgICBkZWYgZjIoKSAtPiBOb25lOgorICAgICAgICAgICAgeC5h
ID0gRmFsc2UgICMgdHlwZTogaWdub3JlW25hbWUtZGVmaW5lZF0gIyBub3FhOiBGODIxCisgICAg
ICAgICAgICBhc3NlcnQgeC5hICAjIHR5cGU6IGlnbm9yZVtuYW1lLWRlZmluZWRdICMgbm9xYTog
RjgyMQogCiAgICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICBnZXRtc2coZiwgbnMpCisgICAg
ICAgICAgICBnZXRtc2coZjIsIG5zKQogICAgICAgICAgICAgPT0gIiIiYXNzZXJ0IEZhbHNlCiAg
KyAgd2hlcmUgRmFsc2UgPSB4LmEiIiIKICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfY29tcGFy
aXNvbnMoc2VsZik6Ci0KLSAgICAgICAgZGVmIGYoKToKKyAgICBkZWYgdGVzdF9jb21wYXJpc29u
cyhzZWxmKSAtPiBOb25lOgorICAgICAgICBkZWYgZjEoKSAtPiBOb25lOgogICAgICAgICAgICAg
YSwgYiA9IHJhbmdlKDIpCiAgICAgICAgICAgICBhc3NlcnQgYiA8IGEKIAotICAgICAgICBhc3Nl
cnQgZ2V0bXNnKGYpID09ICIiImFzc2VydCAxIDwgMCIiIgorICAgICAgICBhc3NlcnQgZ2V0bXNn
KGYxKSA9PSAiIiJhc3NlcnQgMSA8IDAiIiIKIAotICAgICAgICBkZWYgZigpOgorICAgICAgICBk
ZWYgZjIoKSAtPiBOb25lOgogICAgICAgICAgICAgYSwgYiwgYyA9IHJhbmdlKDMpCiAgICAgICAg
ICAgICBhc3NlcnQgYSA+IGIgPiBjCiAKLSAgICAgICAgYXNzZXJ0IGdldG1zZyhmKSA9PSAiIiJh
c3NlcnQgMCA+IDEiIiIKKyAgICAgICAgYXNzZXJ0IGdldG1zZyhmMikgPT0gIiIiYXNzZXJ0IDAg
PiAxIiIiCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYzKCkgLT4gTm9uZToKICAg
ICAgICAgICAgIGEsIGIsIGMgPSByYW5nZSgzKQogICAgICAgICAgICAgYXNzZXJ0IGEgPCBiID4g
YwogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikgPT0gIiIiYXNzZXJ0IDEgPiAyIiIiCisgICAg
ICAgIGFzc2VydCBnZXRtc2coZjMpID09ICIiImFzc2VydCAxID4gMiIiIgogCi0gICAgICAgIGRl
ZiBmKCk6CisgICAgICAgIGRlZiBmNCgpIC0+IE5vbmU6CiAgICAgICAgICAgICBhLCBiLCBjID0g
cmFuZ2UoMykKICAgICAgICAgICAgIGFzc2VydCBhIDwgYiA8PSBjCiAKLSAgICAgICAgZ2V0bXNn
KGYsIG11c3RfcGFzcz1UcnVlKQorICAgICAgICBnZXRtc2coZjQsIG11c3RfcGFzcz1UcnVlKQog
Ci0gICAgICAgIGRlZiBmKCk6CisgICAgICAgIGRlZiBmNSgpIC0+IE5vbmU6CiAgICAgICAgICAg
ICBhLCBiLCBjID0gcmFuZ2UoMykKICAgICAgICAgICAgIGFzc2VydCBhIDwgYgogICAgICAgICAg
ICAgYXNzZXJ0IGIgPCBjCiAKLSAgICAgICAgZ2V0bXNnKGYsIG11c3RfcGFzcz1UcnVlKQotCi0g
ICAgZGVmIHRlc3RfbGVuKHNlbGYpOgorICAgICAgICBnZXRtc2coZjUsIG11c3RfcGFzcz1UcnVl
KQogCisgICAgZGVmIHRlc3RfbGVuKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBkZWYgZigpOgog
ICAgICAgICAgICAgdmFsdWVzID0gbGlzdChyYW5nZSgxMCkpCiAgICAgICAgICAgICBhc3NlcnQg
bGVuKHZhbHVlcykgPT0gMTEKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpLnN0YXJ0c3dpdGgo
Ci0gICAgICAgICAgICAiIiJhc3NlcnQgMTAgPT0gMTEKLSArICB3aGVyZSAxMCA9IGxlbihbIiIi
Ci0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2N1c3RvbV9yZXByY29tcGFyZShzZWxmLCBtb25r
ZXlwYXRjaCk6CisgICAgICAgIG1zZyA9IGdldG1zZyhmKQorICAgICAgICBpZiByZXF1ZXN0LmNv
bmZpZy5nZXRvcHRpb24oInZlcmJvc2UiKSA+IDA6CisgICAgICAgICAgICBhc3NlcnQgbXNnID09
ICJhc3NlcnQgMTAgPT0gMTFcbiAgKzEwXG4gIC0xMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGFzc2VydCBtc2cgPT0gImFzc2VydCAxMCA9PSAxMVxuICsgIHdoZXJlIDEwID0gbGVuKFsw
LCAxLCAyLCAzLCA0LCA1LCAuLi5dKSIKIAotICAgICAgICBkZWYgbXlfcmVwcmNvbXBhcmUob3As
IGxlZnQsIHJpZ2h0KToKKyAgICBkZWYgdGVzdF9jdXN0b21fcmVwcmNvbXBhcmUoc2VsZiwgbW9u
a2V5cGF0Y2gpIC0+IE5vbmU6CisgICAgICAgIGRlZiBteV9yZXByY29tcGFyZTEob3AsIGxlZnQs
IHJpZ2h0KSAtPiBzdHI6CiAgICAgICAgICAgICByZXR1cm4gIjQyIgogCi0gICAgICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIodXRpbCwgIl9yZXByY29tcGFyZSIsIG15X3JlcHJjb21wYXJlKQorICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHV0aWwsICJfcmVwcmNvbXBhcmUiLCBteV9yZXByY29t
cGFyZTEpCiAKLSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYxKCkgLT4gTm9uZToKICAg
ICAgICAgICAgIGFzc2VydCA0MiA8IDMKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09ICJh
c3NlcnQgNDIiCisgICAgICAgIGFzc2VydCBnZXRtc2coZjEpID09ICJhc3NlcnQgNDIiCiAKLSAg
ICAgICAgZGVmIG15X3JlcHJjb21wYXJlKG9wLCBsZWZ0LCByaWdodCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIiVzICVzICVzIiAlIChsZWZ0LCBvcCwgcmlnaHQpCisgICAgICAgIGRlZiBteV9yZXBy
Y29tcGFyZTIob3AsIGxlZnQsIHJpZ2h0KSAtPiBzdHI6CisgICAgICAgICAgICByZXR1cm4gInt9
IHt9IHt9Ii5mb3JtYXQobGVmdCwgb3AsIHJpZ2h0KQogCi0gICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIodXRpbCwgIl9yZXByY29tcGFyZSIsIG15X3JlcHJjb21wYXJlKQorICAgICAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKHV0aWwsICJfcmVwcmNvbXBhcmUiLCBteV9yZXByY29tcGFyZTIpCiAK
LSAgICAgICAgZGVmIGYoKToKKyAgICAgICAgZGVmIGYyKCkgLT4gTm9uZToKICAgICAgICAgICAg
IGFzc2VydCAxIDwgMyA8IDUgPD0gNCA8IDcKIAotICAgICAgICBhc3NlcnQgZ2V0bXNnKGYpID09
ICJhc3NlcnQgNSA8PSA0IgotCi0gICAgZGVmIHRlc3RfYXNzZXJ0X3JhaXNpbmdfbm9uemVyb19p
bl9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBhc3NlcnQgZ2V0bXNnKGYyKSA9PSAiYXNzZXJ0
IDUgPD0gNCIKIAotICAgICAgICBkZWYgZigpOgotCi0gICAgICAgICAgICBjbGFzcyBBKG9iamVj
dCk6Ci0KLSAgICAgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgZGVmIHRl
c3RfYXNzZXJ0X3JhaXNpbmdfX2Jvb2xfX2luX2NvbXBhcmlzb24oc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgZGVmIGYoKSAtPiBOb25lOgorICAgICAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAg
ICAgICBkZWYgX19ib29sX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoNDIpCiAKICAgICAgICAgICAgICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKQEAg
LTU4OSwyNSArNjczLDI2IEBAIGNsYXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gIjxNWTQyIG9iamVjdD4iCiAKLSAgICAgICAgICAgIGRlZiBteWFueSh4KToKKyAgICAg
ICAgICAgIGRlZiBteWFueSh4KSAtPiBib29sOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAgICAgICAgICAgICBhc3NlcnQgbXlhbnkoQSgpIDwgMCkKIAotICAgICAgICBhc3NlcnQg
IjxNWTQyIG9iamVjdD4gPCAwIiBpbiBnZXRtc2coZikKKyAgICAgICAgbXNnID0gZ2V0bXNnKGYp
CisgICAgICAgIGFzc2VydCBtc2cgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0ICI8TVk0MiBv
YmplY3Q+IDwgMCIgaW4gbXNnCiAKLSAgICBkZWYgdGVzdF9mb3JtYXRjaGFyKHNlbGYpOgotCi0g
ICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICBhc3NlcnQgIiV0ZXN0IiA9PSAidGVzdCIKKyAg
ICBkZWYgdGVzdF9mb3JtYXRjaGFyKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBmKCkgLT4g
Tm9uZToKKyAgICAgICAgICAgIGFzc2VydCAiJXRlc3QiID09ICJ0ZXN0IiAgIyB0eXBlOiBpZ25v
cmVbY29tcGFyaXNvbi1vdmVybGFwXQogCi0gICAgICAgIGFzc2VydCBnZXRtc2coZikuc3RhcnRz
d2l0aCgiYXNzZXJ0ICcldGVzdCcgPT0gJ3Rlc3QnIikKKyAgICAgICAgbXNnID0gZ2V0bXNnKGYp
CisgICAgICAgIGFzc2VydCBtc2cgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IG1zZy5zdGFy
dHN3aXRoKCJhc3NlcnQgJyV0ZXN0JyA9PSAndGVzdCciKQogCi0gICAgZGVmIHRlc3RfY3VzdG9t
X3JlcHIoc2VsZik6Ci0KLSAgICAgICAgZGVmIGYoKToKLQotICAgICAgICAgICAgY2xhc3MgRm9v
KG9iamVjdCk6CisgICAgZGVmIHRlc3RfY3VzdG9tX3JlcHIoc2VsZiwgcmVxdWVzdCkgLT4gTm9u
ZToKKyAgICAgICAgZGVmIGYoKSAtPiBOb25lOgorICAgICAgICAgICAgY2xhc3MgRm9vOgogICAg
ICAgICAgICAgICAgIGEgPSAxCiAKICAgICAgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6
CkBAIC02MTYsMTEgKzcwMSwzMiBAQCBjbGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0ZShvYmplY3Qp
OgogICAgICAgICAgICAgZiA9IEZvbygpCiAgICAgICAgICAgICBhc3NlcnQgMCA9PSBmLmEKIAot
ICAgICAgICBhc3NlcnQgciJ3aGVyZSAxID0gXG57IFxufiBcbn0uYSIgaW4gdXRpbC5fZm9ybWF0
X2xpbmVzKFtnZXRtc2coZildKVswXQorICAgICAgICBtc2cgPSBnZXRtc2coZikKKyAgICAgICAg
YXNzZXJ0IG1zZyBpcyBub3QgTm9uZQorICAgICAgICBsaW5lcyA9IHV0aWwuX2Zvcm1hdF9saW5l
cyhbbXNnXSkKKyAgICAgICAgaWYgcmVxdWVzdC5jb25maWcuZ2V0b3B0aW9uKCJ2ZXJib3NlIikg
PiAwOgorICAgICAgICAgICAgYXNzZXJ0IGxpbmVzID09IFsiYXNzZXJ0IDAgPT0gMVxuICArMFxu
ICAtMSJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgbGluZXMgPT0gWyJhc3Nl
cnQgMCA9PSAxXG4gKyAgd2hlcmUgMSA9IFxcbnsgXFxufiBcXG59LmEiXQorCisgICAgZGVmIHRl
c3RfY3VzdG9tX3JlcHJfbm9uX2FzY2lpKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBmKCkg
LT4gTm9uZToKKyAgICAgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICAgICAgbmFtZSA9ICLD
pCIKKworICAgICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNlbGYubmFtZS5lbmNvZGUoIlVURi04IikgICMgb25seSBsZWdhbCBpbiBw
eXRob24yCiAKKyAgICAgICAgICAgIGEgPSBBKCkKKyAgICAgICAgICAgIGFzc2VydCBub3QgYS5u
YW1lCiAKLWNsYXNzIFRlc3RSZXdyaXRlT25JbXBvcnQob2JqZWN0KToKKyAgICAgICAgbXNnID0g
Z2V0bXNnKGYpCisgICAgICAgIGFzc2VydCBtc2cgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0
ICJVbmljb2RlRGVjb2RlRXJyb3IiIG5vdCBpbiBtc2cKKyAgICAgICAgYXNzZXJ0ICJVbmljb2Rl
RW5jb2RlRXJyb3IiIG5vdCBpbiBtc2cKIAorCitjbGFzcyBUZXN0UmV3cml0ZU9uSW1wb3J0Ogog
ICAgIGRlZiB0ZXN0X3B5Y2FjaGVfaXNfYV9maWxlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0
ZXN0ZGlyLnRtcGRpci5qb2luKCJfX3B5Y2FjaGVfXyIpLndyaXRlKCJIZWxsbyIpCiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTY2MSwxOSArNzY3LDE1IEBAIGNsYXNzIFRlc3RSZXdy
aXRlT25JbXBvcnQob2JqZWN0KToKICAgICAgICAgICAgIGltcG9ydCB0ZXN0X2d1bS50ZXN0X2xp
emFyZCIiIgogICAgICAgICAgICAgJSAoel9mbiwpCiAgICAgICAgICkKLSAgICAgICAgYXNzZXJ0
IHRlc3RkaXIucnVucHl0ZXN0KCkucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAg
ICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3QoKS5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09M
TEVDVEVECiAKICAgICBkZWYgdGVzdF9yZWFkb25seShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
c3ViID0gdGVzdGRpci5ta2RpcigidGVzdGluZyIpCiAgICAgICAgIHN1Yi5qb2luKCJ0ZXN0X3Jl
YWRvbmx5LnB5Iikud3JpdGUoCi0gICAgICAgICAgICBweS5idWlsdGluLl90b3RleHQoCi0gICAg
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBiIiIiCiBkZWYgdGVzdF9yZXdyaXR0ZW4oKToK
ICAgICBhc3NlcnQgIkBweV9idWlsdGlucyIgaW4gZ2xvYmFscygpCi0gICAgICAgICAgICAiIiIK
LSAgICAgICAgICAgICkuZW5jb2RlKAotICAgICAgICAgICAgICAgICJ1dGYtOCIKLSAgICAgICAg
ICAgICksCisgICAgICAgICAgICAiIiIsCiAgICAgICAgICAgICAid2IiLAogICAgICAgICApCiAg
ICAgICAgIG9sZF9tb2RlID0gc3ViLnN0YXQoKS5tb2RlCkBAIC02OTYsOSArNzk4LDYgQEAgZGVm
IHRlc3RfcmV3cml0dGVuKCk6CiAgICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJw
cm9jZXNzKCkucmV0ID09IDAKIAogICAgIGRlZiB0ZXN0X29ycGhhbmVkX3B5Y19maWxlKHNlbGYs
IHRlc3RkaXIpOgotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApIGFuZCBoYXNh
dHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6Ci0gICAgICAgICAgICBweXRlc3Quc2tpcCgi
cHlweTIgZG9lc24ndCBydW4gb3JwaGFuZWQgcHljIGZpbGVzIikKLQogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBvcnBoYW4K
QEAgLTcyNCw2ICs4MjMsMjQgQEAgZGVmIHRlc3RfcmV3cml0dGVuKCk6CiAKICAgICAgICAgYXNz
ZXJ0IHRlc3RkaXIucnVucHl0ZXN0KCkucmV0ID09IDAKIAorICAgIGRlZiB0ZXN0X2NhY2hlZF9w
eWNfaW5jbHVkZXNfcHl0ZXN0X3ZlcnNpb24oc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgor
ICAgICAgICAiIiJBdm9pZCBzdGFsZSBjYWNoZXMgKCMxNjcxKSIiIgorICAgICAgICBtb25rZXlw
YXRjaC5kZWxlbnYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIiwgcmFpc2luZz1GYWxzZSkKKyAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgdGVzdF9mb289IiIiCisgICAg
ICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAg
ICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3Rfc3VicHJvY2VzcygpCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKyAgICAgICAg
Zm91bmRfbmFtZXMgPSBnbG9iLmdsb2IoCisgICAgICAgICAgICAiX19weWNhY2hlX18vKi1weXRl
c3Qte30ucHljIi5mb3JtYXQocHl0ZXN0Ll9fdmVyc2lvbl9fKQorICAgICAgICApCisgICAgICAg
IGFzc2VydCBmb3VuZF9uYW1lcywgInB5YyB3aXRoIGV4cGVjdGVkIHRhZyBub3QgZm91bmQgaW4g
bmFtZXM6IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICBnbG9iLmdsb2IoIl9fcHljYWNoZV9fLyou
cHljIikKKyAgICAgICAgKQorCiAgICAgQHB5dGVzdC5tYXJrLnNraXBpZignIl9fcHlweV9fIiBp
biBzeXMubW9kdWxlcycpCiAgICAgZGVmIHRlc3RfcHljX3ZzX3B5byhzZWxmLCB0ZXN0ZGlyLCBt
b25rZXlwYXRjaCk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTczMyw5ICs4NTAs
NyBAQCBkZWYgdGVzdF9yZXdyaXR0ZW4oKToKICAgICAgICAgICAgICAgICAiaGVsbG8iCiAgICAg
ICAgICAgICAgICAgYXNzZXJ0IHRlc3Rfb3B0aW1pemVkLl9fZG9jX18gaXMgTm9uZSIiIgogICAg
ICAgICApCi0gICAgICAgIHAgPSBweS5wYXRoLmxvY2FsLm1ha2VfbnVtYmVyZWRfZGlyKAotICAg
ICAgICAgICAgcHJlZml4PSJydW5weXRlc3QtIiwga2VlcD1Ob25lLCByb290ZGlyPXRlc3RkaXIu
dG1wZGlyCi0gICAgICAgICkKKyAgICAgICAgcCA9IG1ha2VfbnVtYmVyZWRfZGlyKHJvb3Q9UGF0
aCh0ZXN0ZGlyLnRtcGRpciksIHByZWZpeD0icnVucHl0ZXN0LSIpCiAgICAgICAgIHRtcCA9ICIt
LWJhc2V0ZW1wPSVzIiAlIHAKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05PUFRJ
TUlaRSIsICIyIikKICAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KCJQWVRIT05ET05UV1JJVEVC
WVRFQ09ERSIsIHJhaXNpbmc9RmFsc2UpCkBAIC03NjQsMjYgKzg3OSwyMiBAQCBkZWYgdGVzdF9y
ZXdyaXR0ZW4oKToKICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF9uZXdsaW5lcy5w
eSIpLndyaXRlKGIsICJ3YiIpCiAgICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLnJl
dCA9PSAwCiAKLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAotICAgICAgICBzeXMudmVyc2lvbl9p
bmZvIDwgKDMsIDQpLAotICAgICAgICByZWFzb249InBhY2thZ2VzIHdpdGhvdXQgX19pbml0X18u
cHkgbm90IHN1cHBvcnRlZCBvbiBweXRob24gMiIsCi0gICAgKQogICAgIGRlZiB0ZXN0X3BhY2th
Z2Vfd2l0aG91dF9faW5pdF9fcHkoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHBrZyA9IHRlc3Rk
aXIubWtkaXIoImFfcGFja2FnZV93aXRob3V0X2luaXRfcHkiKQogICAgICAgICBwa2cuam9pbigi
bW9kdWxlLnB5IikuZW5zdXJlKCkKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJpbXBvcnQg
YV9wYWNrYWdlX3dpdGhvdXRfaW5pdF9weS5tb2R1bGUiKQotICAgICAgICBhc3NlcnQgdGVzdGRp
ci5ydW5weXRlc3QoKS5yZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0KLSAgICBkZWYgdGVz
dF9yZXdyaXRlX3dhcm5pbmcoc2VsZiwgcHl0ZXN0Y29uZmlnLCBtb25rZXlwYXRjaCk6Ci0gICAg
ICAgIGhvb2sgPSBBc3NlcnRpb25SZXdyaXRpbmdIb29rKHB5dGVzdGNvbmZpZykKLSAgICAgICAg
d2FybmluZ3MgPSBbXQorICAgICAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3QoKS5yZXQgPT0g
RXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKLSAgICAgICAgZGVmIG15d2Fybihjb2RlLCBt
c2cpOgotICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKChjb2RlLCBtc2cpKQotCi0gICAgICAg
IG1vbmtleXBhdGNoLnNldGF0dHIoaG9vay5jb25maWcsICJ3YXJuIiwgbXl3YXJuKQotICAgICAg
ICBob29rLm1hcmtfcmV3cml0ZSgiX3B5dGVzdCIpCi0gICAgICAgIGFzc2VydCAiX3B5dGVzdCIg
aW4gd2FybmluZ3NbMF1bMV0KKyAgICBkZWYgdGVzdF9yZXdyaXRlX3dhcm5pbmcoc2VsZiwgdGVz
dGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBweXRlc3QucmVnaXN0ZXJfYXNz
ZXJ0X3Jld3JpdGUoIl9weXRlc3QiKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICAj
IG5lZWRzIHRvIGJlIGEgc3VicHJvY2VzcyBiZWNhdXNlIHB5dGVzdGVyIGV4cGxpY2l0bHkgZGlz
YWJsZXMgdGhpcyB3YXJuaW5nCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1
YnByb2Nlc3MoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqTW9kdWxl
IGFscmVhZHkgaW1wb3J0ZWQqOiBfcHl0ZXN0Il0pCiAKICAgICBkZWYgdGVzdF9yZXdyaXRlX21v
ZHVsZV9pbXBvcnRlZF9mcm9tX2NvbmZ0ZXN0KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0
ZGlyLm1ha2Vjb25mdGVzdCgKQEAgLTgwMCwxNyArOTExLDE5IEBAIGRlZiB0ZXN0X3Jld3JpdHRl
bigpOgogICAgICAgICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpLnJldCA9
PSAwCiAKICAgICBkZWYgdGVzdF9yZW1lbWJlcl9yZXdyaXR0ZW5fbW9kdWxlcyhzZWxmLCBweXRl
c3Rjb25maWcsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKLSAgICAgICAgIiIiCi0gICAgICAgIEFz
c2VydGlvblJld3JpdGVIb29rIHNob3VsZCByZW1lbWJlciByZXdyaXR0ZW4gbW9kdWxlcyBzbyBp
dAotICAgICAgICBkb2Vzbid0IGdpdmUgZmFsc2UgcG9zaXRpdmVzICgjMjAwNSkuCi0gICAgICAg
ICIiIgorICAgICAgICAiIiJgQXNzZXJ0aW9uUmV3cml0ZUhvb2tgIHNob3VsZCByZW1lbWJlciBy
ZXdyaXR0ZW4gbW9kdWxlcyBzbyBpdAorICAgICAgICBkb2Vzbid0IGdpdmUgZmFsc2UgcG9zaXRp
dmVzICgjMjAwNSkuIiIiCiAgICAgICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZCh0ZXN0
ZGlyLnRtcGRpcikKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKHRlc3RfcmVtZW1iZXJfcmV3
cml0dGVuX21vZHVsZXM9IiIpCiAgICAgICAgIHdhcm5pbmdzID0gW10KICAgICAgICAgaG9vayA9
IEFzc2VydGlvblJld3JpdGluZ0hvb2socHl0ZXN0Y29uZmlnKQotICAgICAgICBtb25rZXlwYXRj
aC5zZXRhdHRyKGhvb2suY29uZmlnLCAid2FybiIsIGxhbWJkYSBjb2RlLCBtc2c6IHdhcm5pbmdz
LmFwcGVuZChtc2cpKQotICAgICAgICBob29rLmZpbmRfbW9kdWxlKCJ0ZXN0X3JlbWVtYmVyX3Jl
d3JpdHRlbl9tb2R1bGVzIikKLSAgICAgICAgaG9vay5sb2FkX21vZHVsZSgidGVzdF9yZW1lbWJl
cl9yZXdyaXR0ZW5fbW9kdWxlcyIpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCisgICAg
ICAgICAgICBob29rLCAiX3dhcm5fYWxyZWFkeV9pbXBvcnRlZCIsIGxhbWJkYSBjb2RlLCBtc2c6
IHdhcm5pbmdzLmFwcGVuZChtc2cpCisgICAgICAgICkKKyAgICAgICAgc3BlYyA9IGhvb2suZmlu
ZF9zcGVjKCJ0ZXN0X3JlbWVtYmVyX3Jld3JpdHRlbl9tb2R1bGVzIikKKyAgICAgICAgYXNzZXJ0
IHNwZWMgaXMgbm90IE5vbmUKKyAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxl
X2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBob29rLmV4ZWNfbW9kdWxlKG1vZHVsZSkKICAgICAg
ICAgaG9vay5tYXJrX3Jld3JpdGUoInRlc3RfcmVtZW1iZXJfcmV3cml0dGVuX21vZHVsZXMiKQog
ICAgICAgICBob29rLm1hcmtfcmV3cml0ZSgidGVzdF9yZW1lbWJlcl9yZXdyaXR0ZW5fbW9kdWxl
cyIpCiAgICAgICAgIGFzc2VydCB3YXJuaW5ncyA9PSBbXQpAQCAtODI4LDcgKzk0MSw3IEBAIGRl
ZiB0ZXN0X3Jld3JpdHRlbigpOgogICAgICAgICB0ZXN0ZGlyLmNoZGlyKCkKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIio9IDEgcGFzc2VkIGluICo9KiJdKQotICAgICAgICBhc3NlcnQg
InB5dGVzdC13YXJuaW5nIHN1bW1hcnkiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqcHl0ZXN0LXdhcm5pbmcgc3VtbWFy
eSoiKQogCiAgICAgZGVmIHRlc3RfcmV3cml0ZV93YXJuaW5nX3VzaW5nX3B5dGVzdF9wbHVnaW5z
X2Vudl92YXIoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgogICAgICAgICBtb25rZXlwYXRj
aC5zZXRlbnYoIlBZVEVTVF9QTFVHSU5TIiwgInBsdWdpbiIpCkBAIC04NDYsMTAwICs5NTksMTAg
QEAgZGVmIHRlc3RfcmV3cml0dGVuKCk6CiAgICAgICAgIHRlc3RkaXIuY2hkaXIoKQogICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKj0gMSBwYXNzZWQgaW4gKj0qIl0pCi0gICAgICAgIGFz
c2VydCAicHl0ZXN0LXdhcm5pbmcgc3VtbWFyeSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkK
LQotICAgIEBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNpb25faW5mb1swXSA+IDIsIHJlYXNv
bj0icHl0aG9uIDIgb25seSIpCi0gICAgZGVmIHRlc3RfcmV3cml0ZV9mdXR1cmVfaW1wb3J0cyhz
ZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IHJld3JpdHRlbiBtb2R1bGVzIGRv
bid0IGluaGVyaXQgdGhlIF9fZnV0dXJlX18gZmxhZ3MKLSAgICAgICAgZnJvbSB0aGUgYXNzZXJ0
cmV3cml0ZSBtb2R1bGUuCi0KLSAgICAgICAgYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0cyBfX2Z1
dHVyZV9fLmRpdmlzaW9uIChhbmQgb3RoZXJzKSwgc28KLSAgICAgICAgZW5zdXJlIHJld3JpdHRl
biBtb2R1bGVzIGRvbid0IGluaGVyaXQgdGhvc2UgZmxhZ3MuCi0KLSAgICAgICAgVGhlIHRlc3Qg
YmVsb3cgd2lsbCBmYWlsIGlmIF9fZnV0dXJlX18uZGl2aXNpb24gaXMgZW5hYmxlZAotICAgICAg
ICAiIiIKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAg
ICAgICAgICBkZWYgdGVzdCgpOgotICAgICAgICAgICAgICAgIHggPSAxIC8gMgotICAgICAgICAg
ICAgICAgIGFzc2VydCB0eXBlKHgpIGlzIGludAotICAgICAgICAiIiIKLSAgICAgICAgKQotICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDAKLQotCi1jbGFzcyBUZXN0QXNzZXJ0aW9uUmV3cml0ZUhvb2tEZXRhaWxzKG9iamVj
dCk6Ci0KLSAgICBkZWYgdGVzdF9sb2FkZXJfaXNfcGFja2FnZV9mYWxzZV9mb3JfbW9kdWxlKHNl
bGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICB0
ZXN0X2Z1bj0iIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X2xvYWRlcigpOgotICAgICAgICAgICAg
ICAgIGFzc2VydCBub3QgX19sb2FkZXJfXy5pc19wYWNrYWdlKF9fbmFtZV9fKQotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQot
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEgcGFzc2VkKiJdKQotCi0g
ICAgZGVmIHRlc3RfbG9hZGVyX2lzX3BhY2thZ2VfdHJ1ZV9mb3JfcGFja2FnZShzZWxmLCB0ZXN0
ZGlyKToKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgdGVzdF9mdW49
IiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9sb2FkZXIoKToKLSAgICAgICAgICAgICAgICBhc3Nl
cnQgbm90IF9fbG9hZGVyX18uaXNfcGFja2FnZShfX25hbWVfXykKLQotICAgICAgICAgICAgZGVm
IHRlc3RfZnVuKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IF9fbG9hZGVyX18uaXNfcGFja2Fn
ZSgnZnVuJykKLQotICAgICAgICAgICAgZGVmIHRlc3RfbWlzc2luZygpOgotICAgICAgICAgICAg
ICAgIGFzc2VydCBub3QgX19sb2FkZXJfXy5pc19wYWNrYWdlKCdweXRlc3Rfbm90X3RoZXJlJykK
LSAgICAgICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHRlc3RkaXIubWtweWRpcigiZnVu
IikKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDMgcGFzc2VkKiJdKQotCi0gICAgQHB5dGVzdC5tYXJr
LnNraXBpZigic3lzLnZlcnNpb25faW5mb1swXSA+PSAzIikKLSAgICBAcHl0ZXN0Lm1hcmsueGZh
aWwoImhhc2F0dHIoc3lzLCAncHlweV90cmFuc2xhdGlvbl9pbmZvJykiKQotICAgIGRlZiB0ZXN0
X2Fzc3VtZV9hc2NpaShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgY29udGVudCA9ICJ1J1x4ZTJc
eDk5XHhhNVx4MDFceGZlJyIKLSAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF9lbmNv
ZGluZy5weSIpLndyaXRlKGNvbnRlbnQsICJ3YiIpCi0gICAgICAgIHJlcyA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKLSAgICAgICAgYXNzZXJ0IHJlcy5yZXQgIT0gMAotICAgICAgICBhc3NlcnQgIlN5
bnRheEVycm9yOiBOb24tQVNDSUkgY2hhcmFjdGVyIiBpbiByZXMuc3Rkb3V0LnN0cigpCi0KLSAg
ICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdID49IDMiKQotICAgIGRl
ZiB0ZXN0X2RldGVjdF9jb2RpbmdfY29va2llKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICB0ZXN0X2Nvb2tpZT0iIiIKLSAgICAgICAgICAg
ICMgLSotIGNvZGluZzogdXRmLTggLSotCi0gICAgICAgICAgICB1IlN0XHhjM1x4YTRkIgotICAg
ICAgICAgICAgZGVmIHRlc3RfcmV3cml0dGVuKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0ICJA
cHlfYnVpbHRpbnMiIGluIGdsb2JhbHMoKSIiIgotICAgICAgICApCi0gICAgICAgIGFzc2VydCB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpLnJldCA9PSAwCi0KLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJz
eXMudmVyc2lvbl9pbmZvWzBdID49IDMiKQotICAgIGRlZiB0ZXN0X2RldGVjdF9jb2RpbmdfY29v
a2llX3NlY29uZF9saW5lKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCi0gICAgICAgICAgICB0ZXN0X2Nvb2tpZT0iIiIKLSAgICAgICAgICAgICMgLSotIGNvZGlu
ZzogdXRmLTggLSotCi0gICAgICAgICAgICB1IlN0XHhjM1x4YTRkIgotICAgICAgICAgICAgZGVm
IHRlc3RfcmV3cml0dGVuKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0ICJAcHlfYnVpbHRpbnMi
IGluIGdsb2JhbHMoKSIiIgotICAgICAgICApCi0gICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpLnJldCA9PSAwCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
cHl0ZXN0LXdhcm5pbmcgc3VtbWFyeSoiKQogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigic3lz
LnZlcnNpb25faW5mb1swXSA+PSAzIikKLSAgICBkZWYgdGVzdF9kZXRlY3RfY29kaW5nX2Nvb2tp
ZV9jcmxmKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAg
ICAgICAgICB0ZXN0X2Nvb2tpZT0iIiIKLSAgICAgICAgICAgICMgLSotIGNvZGluZzogdXRmLTgg
LSotCi0gICAgICAgICAgICB1IlN0XHhjM1x4YTRkIgotICAgICAgICAgICAgZGVmIHRlc3RfcmV3
cml0dGVuKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0ICJAcHlfYnVpbHRpbnMiIGluIGdsb2Jh
bHMoKSIiIgotICAgICAgICApCi0gICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLnJl
dCA9PSAwCiAKK2NsYXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlSG9va0RldGFpbHM6CiAgICAgZGVm
IHRlc3Rfc3lzX21ldGFfcGF0aF9tdW5nZWQoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtOTQ4LDI3ICs5NzEsMzggQEAgY2xh
c3MgVGVzdEFzc2VydGlvblJld3JpdGVIb29rRGV0YWlscyhvYmplY3QpOgogICAgICAgICApCiAg
ICAgICAgIGFzc2VydCB0ZXN0ZGlyLnJ1bnB5dGVzdCgpLnJldCA9PSAwCiAKLSAgICBkZWYgdGVz
dF93cml0ZV9weWMoc2VsZiwgdGVzdGRpciwgdG1wZGlyLCBtb25rZXlwYXRjaCk6CisgICAgZGVm
IHRlc3Rfd3JpdGVfcHljKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIsIHRtcGRpciwgbW9ua2V5cGF0
Y2gpIC0+IE5vbmU6CiAgICAgICAgIGZyb20gX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSBpbXBv
cnQgX3dyaXRlX3B5YwogICAgICAgICBmcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGltcG9ydCBBc3Nl
cnRpb25TdGF0ZQotICAgICAgICBpbXBvcnQgYXRvbWljd3JpdGVzCi0gICAgICAgIGZyb20gY29u
dGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKIAotICAgICAgICBjb25maWcgPSB0ZXN0ZGly
LnBhcnNlY29uZmlnKFtdKQorICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkK
ICAgICAgICAgc3RhdGUgPSBBc3NlcnRpb25TdGF0ZShjb25maWcsICJyZXdyaXRlIikKLSAgICAg
ICAgc291cmNlX3BhdGggPSB0bXBkaXIuZW5zdXJlKCJzb3VyY2UucHkiKQorICAgICAgICBzb3Vy
Y2VfcGF0aCA9IHN0cih0bXBkaXIuZW5zdXJlKCJzb3VyY2UucHkiKSkKICAgICAgICAgcHljcGF0
aCA9IHRtcGRpci5qb2luKCJweWMiKS5zdHJwYXRoCi0gICAgICAgIGFzc2VydCBfd3JpdGVfcHlj
KHN0YXRlLCBbMV0sIHNvdXJjZV9wYXRoLnN0YXQoKSwgcHljcGF0aCkKKyAgICAgICAgY28gPSBj
b21waWxlKCIxIiwgImYucHkiLCAic2luZ2xlIikKKyAgICAgICAgYXNzZXJ0IF93cml0ZV9weWMo
c3RhdGUsIGNvLCBvcy5zdGF0KHNvdXJjZV9wYXRoKSwgcHljcGF0aCkKKworICAgICAgICBpZiBz
eXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgICAgIGZyb20gY29udGV4dGxpYiBpbXBv
cnQgY29udGV4dG1hbmFnZXIKKworICAgICAgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAg
ICAgICBkZWYgYXRvbWljX3dyaXRlX2ZhaWxlZChmbiwgbW9kZT0iciIsIG92ZXJ3cml0ZT1GYWxz
ZSk6CisgICAgICAgICAgICAgICAgZSA9IE9TRXJyb3IoKQorICAgICAgICAgICAgICAgIGUuZXJy
bm8gPSAxMAorICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgICAgICAgICB5aWVsZCAg
IyB0eXBlOmlnbm9yZVt1bnJlYWNoYWJsZV0KKworICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cigKKyAgICAgICAgICAgICAgICBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlLCAiYXRvbWlj
X3dyaXRlIiwgYXRvbWljX3dyaXRlX2ZhaWxlZAorICAgICAgICAgICAgKQorICAgICAgICBlbHNl
OgorCisgICAgICAgICAgICBkZWYgcmFpc2Vfb3NlcnJvcigqYXJncyk6CisgICAgICAgICAgICAg
ICAgcmFpc2UgT1NFcnJvcigpCiAKLSAgICAgICAgQGNvbnRleHRtYW5hZ2VyCi0gICAgICAgIGRl
ZiBhdG9taWNfd3JpdGVfZmFpbGVkKGZuLCBtb2RlPSJyIiwgb3ZlcndyaXRlPUZhbHNlKToKLSAg
ICAgICAgICAgIGUgPSBJT0Vycm9yKCkKLSAgICAgICAgICAgIGUuZXJybm8gPSAxMAotICAgICAg
ICAgICAgcmFpc2UgZQotICAgICAgICAgICAgeWllbGQgICMgbm9xYQorICAgICAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cigib3MucmVuYW1lIiwgcmFpc2Vfb3NlcnJvcikKIAotICAgICAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKGF0b21pY3dyaXRlcywgImF0b21pY193cml0ZSIsIGF0b21pY193
cml0ZV9mYWlsZWQpCi0gICAgICAgIGFzc2VydCBub3QgX3dyaXRlX3B5YyhzdGF0ZSwgWzFdLCBz
b3VyY2VfcGF0aC5zdGF0KCksIHB5Y3BhdGgpCisgICAgICAgIGFzc2VydCBub3QgX3dyaXRlX3B5
YyhzdGF0ZSwgY28sIG9zLnN0YXQoc291cmNlX3BhdGgpLCBweWNwYXRoKQogCiAgICAgZGVmIHRl
c3RfcmVzb3VyY2VzX3Byb3ZpZGVyX2Zvcl9sb2FkZXIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAg
ICIiIgpAQCAtMTAwMCw3ICsxMDM0LDcgQEAgY2xhc3MgVGVzdEFzc2VydGlvblJld3JpdGVIb29r
RGV0YWlscyhvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJw
cm9jZXNzKCkKICAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MSkKIAotICAg
IGRlZiB0ZXN0X3JlYWRfcHljKHNlbGYsIHRtcGRpcik6CisgICAgZGVmIHRlc3RfcmVhZF9weWMo
c2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CiAgICAgICAgICIiIgogICAgICAgICBFbnN1
cmUgdGhhdCB0aGUgYF9yZWFkX3B5Y2AgY2FuIHByb3Blcmx5IGRlYWwgd2l0aCBjb3JydXB0ZWQg
cHljIGZpbGVzLgogICAgICAgICBJbiB0aG9zZSBjaXJjdW1zdGFuY2VzIGl0IHNob3VsZCBqdXN0
IGdpdmUgdXAgaW5zdGVhZCBvZiBnZW5lcmF0aW5nCkBAIC0xMDA5LDY1ICsxMDQzLDY4IEBAIGNs
YXNzIFRlc3RBc3NlcnRpb25SZXdyaXRlSG9va0RldGFpbHMob2JqZWN0KToKICAgICAgICAgaW1w
b3J0IHB5X2NvbXBpbGUKICAgICAgICAgZnJvbSBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlIGlt
cG9ydCBfcmVhZF9weWMKIAotICAgICAgICBzb3VyY2UgPSB0bXBkaXIuam9pbigic291cmNlLnB5
IikKLSAgICAgICAgcHljID0gc291cmNlICsgImMiCisgICAgICAgIHNvdXJjZSA9IHRtcF9wYXRo
IC8gInNvdXJjZS5weSIKKyAgICAgICAgcHljID0gUGF0aChzdHIoc291cmNlKSArICJjIikKIAot
ICAgICAgICBzb3VyY2Uud3JpdGUoImRlZiB0ZXN0KCk6IHBhc3MiKQorICAgICAgICBzb3VyY2Uu
d3JpdGVfdGV4dCgiZGVmIHRlc3QoKTogcGFzcyIpCiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGls
ZShzdHIoc291cmNlKSwgc3RyKHB5YykpCiAKLSAgICAgICAgY29udGVudHMgPSBweWMucmVhZCht
b2RlPSJyYiIpCisgICAgICAgIGNvbnRlbnRzID0gcHljLnJlYWRfYnl0ZXMoKQogICAgICAgICBz
dHJpcF9ieXRlcyA9IDIwICAjIGhlYWRlciBpcyBhcm91bmQgOCBieXRlcywgc3RyaXAgYSBsaXR0
bGUgbW9yZQogICAgICAgICBhc3NlcnQgbGVuKGNvbnRlbnRzKSA+IHN0cmlwX2J5dGVzCi0gICAg
ICAgIHB5Yy53cml0ZShjb250ZW50c1s6c3RyaXBfYnl0ZXNdLCBtb2RlPSJ3YiIpCisgICAgICAg
IHB5Yy53cml0ZV9ieXRlcyhjb250ZW50c1s6c3RyaXBfYnl0ZXNdKQogCi0gICAgICAgIGFzc2Vy
dCBfcmVhZF9weWMoc291cmNlLCBzdHIocHljKSkgaXMgTm9uZSAgIyBubyBlcnJvcgorICAgICAg
ICBhc3NlcnQgX3JlYWRfcHljKHNvdXJjZSwgcHljKSBpcyBOb25lICAjIG5vIGVycm9yCiAKLSAg
ICBkZWYgdGVzdF9yZWxvYWRfaXNfc2FtZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIyBBIGZp
bGUgdGhhdCB3aWxsIGJlIHBpY2tlZCB1cCBkdXJpbmcgY29sbGVjdGluZy4KLSAgICAgICAgdGVz
dGRpci50bXBkaXIuam9pbigiZmlsZS5weSIpLmVuc3VyZSgpCi0gICAgICAgIHRlc3RkaXIudG1w
ZGlyLmpvaW4oInB5dGVzdC5pbmkiKS53cml0ZSgKLSAgICAgICAgICAgIHRleHR3cmFwLmRlZGVu
dCgKLSAgICAgICAgICAgICAgICAiIiIKKyAgICBkZWYgdGVzdF9yZWxvYWRfaXNfc2FtZV9hbmRf
cmVsb2FkcyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiJSZWxv
YWRpbmcgYSAoY29sbGVjdGVkKSBtb2R1bGUgYWZ0ZXIgY2hhbmdlIHBpY2tzIHVwIHRoZSBjaGFu
Z2UuIiIiCisgICAgICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgW3B5dGVzdF0KICAgICAgICAgICAgIHB5dGhvbl9maWxlcyA9ICoucHkKLSAgICAgICAg
IiIiCi0gICAgICAgICAgICApCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQotCiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgIGZpbGU9IiIiCisgICAgICAgICAgICBk
ZWYgcmVsb2FkZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAg
ICAgZGVmIHJld3JpdGVfc2VsZigpOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihfX2ZpbGVf
XywgJ3cnKSBhcyBzZWxmOgorICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCdkZWYgcmVs
b2FkZWQoKTogcmV0dXJuIFRydWUnKQorICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgdGVz
dF9mdW49IiIiCiAgICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgZnJvbSBpbXAgaW1wb3J0IHJlbG9hZAotICAgICAgICAgICAgZXhjZXB0IElt
cG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZyb20gaW1wb3J0
bGliIGltcG9ydCByZWxvYWQKIAogICAgICAgICAgICAgZGVmIHRlc3RfbG9hZGVyKCk6CiAgICAg
ICAgICAgICAgICAgaW1wb3J0IGZpbGUKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGZpbGUu
cmVsb2FkZWQoKQorICAgICAgICAgICAgICAgIGZpbGUucmV3cml0ZV9zZWxmKCkKICAgICAgICAg
ICAgICAgICBhc3NlcnQgc3lzLm1vZHVsZXNbImZpbGUiXSBpcyByZWxvYWQoZmlsZSkKLSAgICAg
ICAgICAgICIiIgorICAgICAgICAgICAgICAgIGFzc2VydCBmaWxlLnJlbG9hZGVkKCkKKyAgICAg
ICAgICAgICIiIiwKICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXMiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQqIl0pCiAKICAgICBkZWYgdGVz
dF9nZXRfZGF0YV9zdXBwb3J0KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiJJbXBsZW1lbnQg
b3B0aW9uYWwgUEVQMzAyIGFwaSAoIzgwOCkuCi0gICAgICAgICIiIgorICAgICAgICAiIiJJbXBs
ZW1lbnQgb3B0aW9uYWwgUEVQMzAyIGFwaSAoIzgwOCkuIiIiCiAgICAgICAgIHBhdGggPSB0ZXN0
ZGlyLm1rcHlkaXIoImZvbyIpCiAgICAgICAgIHBhdGguam9pbigidGVzdF9mb28ucHkiKS53cml0
ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAgdGV4dHdy
YXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBjbGFzcyBU
ZXN0KG9iamVjdCk6CisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBwa2d1dGlsCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhID0gcGtndXRpbC5nZXRfZGF0YSgnZm9vLnRlc3RfZm9vJywgJ2RhdGEudHh0JykK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhID09IGInSGV5JwogICAgICAgICAg
ICAgICAgICIiIgotICAgICAgICAgICAgY2xhc3MgVGVzdChvYmplY3QpOgotICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHBrZ3V0
aWwKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHBrZ3V0aWwuZ2V0X2RhdGEoJ2Zvby50ZXN0
X2ZvbycsICdkYXRhLnR4dCcpCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhID09IGIn
SGV5JwotICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICBwYXRo
LmpvaW4oImRhdGEudHh0Iikud3JpdGUoIkhleSIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBwYXNz
ZWQqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJd
KQogCiAKIGRlZiB0ZXN0X2lzc3VlNzMxKHRlc3RkaXIpOgpAQCAtMTA4NiwxMSArMTEyMywxMCBA
QCBkZWYgdGVzdF9pc3N1ZTczMSh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGFzc2VydCAidW5iYWxhbmNlZCBicmFjZXMiIG5v
dCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCi0KKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hf
bGluZSgiKnVuYmFsYW5jZWQgYnJhY2VzKiIpCiAKLWNsYXNzIFRlc3RJc3N1ZTkyNShvYmplY3Qp
OgogCitjbGFzcyBUZXN0SXNzdWU5MjU6CiAgICAgZGVmIHRlc3Rfc2ltcGxlX2Nhc2Uoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpA
QCAtMTA5OSw3ICsxMTM1LDcgQEAgY2xhc3MgVGVzdElzc3VlOTI1KG9iamVjdCk6CiAgICAgICAg
ICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqRSphc3NlcnQgKEZhbHNlID09IEZh
bHNlKSA9PSBGYWxzZSIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipF
KmFzc2VydCAoRmFsc2UgPT0gRmFsc2UpID09IEZhbHNlIl0pCiAKICAgICBkZWYgdGVzdF9sb25n
X2Nhc2Uoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTEx
MDksNyArMTE0NSw3IEBAIGNsYXNzIFRlc3RJc3N1ZTkyNShvYmplY3QpOgogICAgICAgICAiIiIK
ICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKkUqYXNzZXJ0IChGYWxzZSA9PSBUcnVlKSA9
PSBUcnVlIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkUqYXNzZXJ0
IChGYWxzZSA9PSBUcnVlKSA9PSBUcnVlIl0pCiAKICAgICBkZWYgdGVzdF9tYW55X2JyYWNrZXRz
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0xMTE5LDI2
ICsxMTU1LDQ4NSBAQCBjbGFzcyBUZXN0SXNzdWU5MjUob2JqZWN0KToKICAgICAgICAgICAgICIi
IgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqRSphc3NlcnQgVHJ1ZSA9PSAoKEZhbHNl
ID09IFRydWUpID09IFRydWUpIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKkUqYXNzZXJ0IFRydWUgPT0gKChGYWxzZSA9PSBUcnVlKSA9PSBUcnVlKSJdKQogCiAKLWNs
YXNzIFRlc3RJc3N1ZTIxMjEoKToKK2NsYXNzIFRlc3RJc3N1ZTIxMjE6CisgICAgZGVmIHRlc3Rf
cmV3cml0ZV9weXRob25fZmlsZXNfY29udGFpbl9zdWJkaXJzKHNlbGYsIHRlc3RkaXIpOgorICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAg
ICAidGVzdHMvZmlsZS5weSI6ICIiIgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3NpbXBsZV9m
YWlsdXJlKCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAxICsgMSA9PSAzCisgICAgICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5t
YWtlaW5pKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAg
ICAgICAgICAgICBweXRob25fZmlsZXMgPSB0ZXN0cy8qKi5weQorICAgICAgICAgICAgIiIiCisg
ICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqRSphc3NlcnQgKDEgKyAxKSA9PSAzIl0pCisK
KworQHB5dGVzdC5tYXJrLnNraXBpZigKKyAgICBzeXMubWF4c2l6ZSA8PSAoMiAqKiAzMSAtIDEp
LCByZWFzb249IkNhdXNlcyBPdmVyZmxvd0Vycm9yIG9uIDMyYml0IHN5c3RlbXMiCispCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm9mZnNldCIsIFstMSwgKzFdKQorZGVmIHRlc3Rfc291cmNl
X210aW1lX2xvbmdfbG9uZyh0ZXN0ZGlyLCBvZmZzZXQpOgorICAgICIiIlN1cHBvcnQgbW9kaWZp
Y2F0aW9uIGRhdGVzIGFmdGVyIDIwMzggaW4gcmV3cml0dGVuIGZpbGVzICgjNDkwMykuCisKKyAg
ICBweXRlc3Qgd291bGQgY3Jhc2ggd2l0aDoKKworICAgICAgICAgICAgZnAud3JpdGUoc3RydWN0
LnBhY2soIjxsbCIsIG10aW1lLCBzaXplKSkKKyAgICAgICAgRSAgIHN0cnVjdC5lcnJvcjogYXJn
dW1lbnQgb3V0IG9mIHJhbmdlCisgICAgIiIiCisgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0KCk6IHBhc3MKKyAgICAiIiIKKyAgICApCisg
ICAgIyB1c2UgdW5zaWduZWQgbG9uZyB0aW1lc3RhbXAgd2hpY2ggb3ZlcmZsb3dzIHNpZ25lZCBs
b25nLAorICAgICMgd2hpY2ggd2FzIHRoZSBjYXVzZSBvZiB0aGUgYnVnCisgICAgIyArMSBvZmZz
ZXQgYWxzbyB0ZXN0cyBtYXNraW5nIG9mIDB4RkZGRkZGRkYKKyAgICB0aW1lc3RhbXAgPSAyICoq
IDMyICsgb2Zmc2V0CisgICAgb3MudXRpbWUoc3RyKHApLCAodGltZXN0YW1wLCB0aW1lc3RhbXAp
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCisKKworZGVmIHRlc3RfcmV3cml0ZV9pbmZpbml0ZV9yZWN1cnNpb24odGVzdGRpciwg
cHl0ZXN0Y29uZmlnLCBtb25rZXlwYXRjaCkgLT4gTm9uZToKKyAgICAiIiJGaXggaW5maW5pdGUg
cmVjdXJzaW9uIHdoZW4gd3JpdGluZyBweWMgZmlsZXM6IGlmIGFuIGltcG9ydCBoYXBwZW5zIHRv
IGJlIHRyaWdnZXJlZCB3aGVuIHdyaXRpbmcgdGhlIHB5YworICAgIGZpbGUsIHRoaXMgd291bGQg
Y2F1c2UgYW5vdGhlciBjYWxsIHRvIHRoZSBob29rLCB3aGljaCB3b3VsZCB0cmlnZ2VyIGFub3Ro
ZXIgcHljIHdyaXRpbmcsIHdoaWNoIGNvdWxkCisgICAgdHJpZ2dlciBhbm90aGVyIGltcG9ydCwg
YW5kIHNvIG9uLiAoIzM1MDYpIiIiCisgICAgZnJvbSBfcHl0ZXN0LmFzc2VydGlvbiBpbXBvcnQg
cmV3cml0ZSBhcyByZXdyaXRlbW9kCisKKyAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoKQorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2Zvbz0iZGVmIHRlc3RfZm9vKCk6IHBhc3MiKQorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2Jhcj0iZGVmIHRlc3RfYmFyKCk6IHBhc3MiKQorCisg
ICAgb3JpZ2luYWxfd3JpdGVfcHljID0gcmV3cml0ZW1vZC5fd3JpdGVfcHljCisKKyAgICB3cml0
ZV9weWNfY2FsbGVkID0gW10KKworICAgIGRlZiBzcHlfd3JpdGVfcHljKCphcmdzLCAqKmt3YXJn
cyk6CisgICAgICAgICMgbWFrZSBhIG5vdGUgdGhhdCB3ZSBoYXZlIGNhbGxlZCBfd3JpdGVfcHlj
CisgICAgICAgIHdyaXRlX3B5Y19jYWxsZWQuYXBwZW5kKFRydWUpCisgICAgICAgICMgdHJ5IHRv
IGltcG9ydCBhIG1vZHVsZSBhdCB0aGlzIHBvaW50OiB3ZSBzaG91bGQgbm90IHRyeSB0byByZXdy
aXRlIHRoaXMgbW9kdWxlCisgICAgICAgIGFzc2VydCBob29rLmZpbmRfc3BlYygidGVzdF9iYXIi
KSBpcyBOb25lCisgICAgICAgIHJldHVybiBvcmlnaW5hbF93cml0ZV9weWMoKmFyZ3MsICoqa3dh
cmdzKQogCi0gICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0
ZGlyLnRtcGRpci5qb2luKCJ0ZXN0cy9maWxlLnB5IikuZW5zdXJlKCkud3JpdGUoCisgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cihyZXdyaXRlbW9kLCAiX3dyaXRlX3B5YyIsIHNweV93cml0ZV9weWMp
CisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJkb250X3dyaXRlX2J5dGVjb2RlIiwgRmFs
c2UpCisKKyAgICBob29rID0gQXNzZXJ0aW9uUmV3cml0aW5nSG9vayhweXRlc3Rjb25maWcpCisg
ICAgc3BlYyA9IGhvb2suZmluZF9zcGVjKCJ0ZXN0X2ZvbyIpCisgICAgYXNzZXJ0IHNwZWMgaXMg
bm90IE5vbmUKKyAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNw
ZWMpCisgICAgaG9vay5leGVjX21vZHVsZShtb2R1bGUpCisgICAgYXNzZXJ0IGxlbih3cml0ZV9w
eWNfY2FsbGVkKSA9PSAxCisKKworY2xhc3MgVGVzdEVhcmx5UmV3cml0ZUJhaWxvdXQ6CisgICAg
QHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGhvb2soc2VsZiwgcHl0ZXN0Y29uZmlnLCBtb25rZXlw
YXRjaCwgdGVzdGRpcikgLT4gQXNzZXJ0aW9uUmV3cml0aW5nSG9vazoKKyAgICAgICAgIiIiUmV0
dXJucyBhIHBhdGNoZWQgQXNzZXJ0aW9uUmV3cml0aW5nSG9vayBpbnN0YW5jZSBzbyB3ZSBjYW4g
Y29uZmlndXJlIGl0cyBpbml0aWFsIHBhdGhzIGFuZCB0cmFjaworICAgICAgICBpZiBQYXRoRmlu
ZGVyLmZpbmRfc3BlYyBoYXMgYmVlbiBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBpbXBv
cnQgaW1wb3J0bGliLm1hY2hpbmVyeQorCisgICAgICAgIHNlbGYuZmluZF9zcGVjX2NhbGxzID0g
W10gICMgdHlwZTogTGlzdFtzdHJdCisgICAgICAgIHNlbGYuaW5pdGlhbF9wYXRocyA9IHNldCgp
ICAjIHR5cGU6IFNldFtweS5wYXRoLmxvY2FsXQorCisgICAgICAgIGNsYXNzIFN0dWJTZXNzaW9u
OgorICAgICAgICAgICAgX2luaXRpYWxwYXRocyA9IHNlbGYuaW5pdGlhbF9wYXRocworCisgICAg
ICAgICAgICBkZWYgaXNpbml0cGF0aChzZWxmLCBwKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
cCBpbiBzZWxmLl9pbml0aWFscGF0aHMKKworICAgICAgICBkZWYgc3B5X2ZpbmRfc3BlYyhuYW1l
LCBwYXRoKToKKyAgICAgICAgICAgIHNlbGYuZmluZF9zcGVjX2NhbGxzLmFwcGVuZChuYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3Nw
ZWMobmFtZSwgcGF0aCkKKworICAgICAgICBob29rID0gQXNzZXJ0aW9uUmV3cml0aW5nSG9vayhw
eXRlc3Rjb25maWcpCisgICAgICAgICMgdXNlIGRlZmF1bHQgcGF0dGVybnMsIG90aGVyd2lzZSB3
ZSBpbmhlcml0IHB5dGVzdCdzIHRlc3RpbmcgY29uZmlnCisgICAgICAgIGhvb2suZm5wYXRzWzpd
ID0gWyJ0ZXN0XyoucHkiLCAiKl90ZXN0LnB5Il0KKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cihob29rLCAiX2ZpbmRfc3BlYyIsIHNweV9maW5kX3NwZWMpCisgICAgICAgIGhvb2suc2V0X3Nl
c3Npb24oU3R1YlNlc3Npb24oKSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgICAgICB0
ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoKQorICAgICAgICByZXR1cm4gaG9vaworCisgICAgZGVmIHRl
c3RfYmFzaWMoc2VsZiwgdGVzdGRpciwgaG9vazogQXNzZXJ0aW9uUmV3cml0aW5nSG9vaykgLT4g
Tm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSB3ZSBhdm9pZCBjYWxsaW5nIFBhdGhG
aW5kZXIuZmluZF9zcGVjIHdoZW4gd2Uga25vdyBmb3Igc3VyZSBhIGNlcnRhaW4KKyAgICAgICAg
bW9kdWxlIHdpbGwgbm90IGJlIHJld3JpdHRlbiB0byBvcHRpbWl6ZSBhc3NlcnRpb24gcmV3cml0
aW5nICgjMzkxOCkuCisgICAgICAgICIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgK
ICAgICAgICAgICAgICIiIgotZGVmIHRlc3Rfc2ltcGxlX2ZhaWx1cmUoKToKLSAgICBhc3NlcnQg
MSArIDEgPT0gMwotIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBA
cHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgICAgIGRlZiBmaXgoKTogcmV0dXJuIDEKKyAgICAgICAg
IiIiCiAgICAgICAgICkKLSAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigicHl0ZXN0LmluaSIp
LndyaXRlKAotICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAotICAgICAgICAgICAgICAgICIi
IgotICAgICAgICAgICAgW3B5dGVzdF0KLSAgICAgICAgICAgIHB5dGhvbl9maWxlcyA9IHRlc3Rz
LyoqLnB5CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2Zvbz0iZGVmIHRlc3RfZm9v
KCk6IHBhc3MiKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoYmFyPSJkZWYgYmFyKCk6IHBh
c3MiKQorICAgICAgICBmb29iYXJfcGF0aCA9IHRlc3RkaXIubWFrZXB5ZmlsZShmb29iYXI9ImRl
ZiBmb29iYXIoKTogcGFzcyIpCisgICAgICAgIHNlbGYuaW5pdGlhbF9wYXRocy5hZGQoZm9vYmFy
X3BhdGgpCisKKyAgICAgICAgIyBjb25mdGVzdCBmaWxlcyBzaG91bGQgYWx3YXlzIGJlIHJld3Jp
dHRlbgorICAgICAgICBhc3NlcnQgaG9vay5maW5kX3NwZWMoImNvbmZ0ZXN0IikgaXMgbm90IE5v
bmUKKyAgICAgICAgYXNzZXJ0IHNlbGYuZmluZF9zcGVjX2NhbGxzID09IFsiY29uZnRlc3QiXQor
CisgICAgICAgICMgZmlsZXMgbWF0Y2hpbmcgInB5dGhvbl9maWxlcyIgbWFzayBzaG91bGQgYWx3
YXlzIGJlIHJld3JpdHRlbgorICAgICAgICBhc3NlcnQgaG9vay5maW5kX3NwZWMoInRlc3RfZm9v
IikgaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYuZmluZF9zcGVjX2NhbGxzID09IFsi
Y29uZnRlc3QiLCAidGVzdF9mb28iXQorCisgICAgICAgICMgZmlsZSBkb2VzIG5vdCBtYXRjaCAi
cHl0aG9uX2ZpbGVzIjogZWFybHkgYmFpbG91dAorICAgICAgICBhc3NlcnQgaG9vay5maW5kX3Nw
ZWMoImJhciIpIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYuZmluZF9zcGVjX2NhbGxzID09
IFsiY29uZnRlc3QiLCAidGVzdF9mb28iXQorCisgICAgICAgICMgZmlsZSBpcyBhbiBpbml0aWFs
IHBhdGggKHBhc3NlZCBvbiB0aGUgY29tbWFuZC1saW5lKTogc2hvdWxkIGJlIHJld3JpdHRlbgor
ICAgICAgICBhc3NlcnQgaG9vay5maW5kX3NwZWMoImZvb2JhciIpIGlzIG5vdCBOb25lCisgICAg
ICAgIGFzc2VydCBzZWxmLmZpbmRfc3BlY19jYWxscyA9PSBbImNvbmZ0ZXN0IiwgInRlc3RfZm9v
IiwgImZvb2JhciJdCisKKyAgICBkZWYgdGVzdF9wYXR0ZXJuX2NvbnRhaW5zX3N1YmRpcmVjdG9y
aWVzKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBob29rOiBBc3NlcnRpb25SZXdyaXRpbmdIb29r
CisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiJJZiBvbmUgb2YgdGhlIHB5dGhvbl9maWxlcyBw
YXR0ZXJucyBjb250YWluIHN1YmRpcmVjdG9yaWVzICgidGVzdHMvKioucHkiKSB3ZSBjYW4ndCBi
YWlsb3V0IGVhcmx5CisgICAgICAgIGJlY2F1c2Ugd2UgbmVlZCB0byBtYXRjaCB3aXRoIHRoZSBm
dWxsIHBhdGgsIHdoaWNoIGNhbiBvbmx5IGJlIGZvdW5kIGJ5IGNhbGxpbmcgUGF0aEZpbmRlci5m
aW5kX3NwZWMKICAgICAgICAgIiIiCi0gICAgICAgICAgICApCisgICAgICAgIHAgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAidGVzdHMvZmls
ZS5weSI6ICIiIlwKKyAgICAgICAgICAgICAgICAgICAgZGVmIHRlc3Rfc2ltcGxlX2ZhaWx1cmUo
KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAxICsgMSA9PSAzCisgICAgICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgdGVzdGRpci5zeXNw
YXRoaW5zZXJ0KHAuZGlycGF0aCgpKQorICAgICAgICBob29rLmZucGF0c1s6XSA9IFsidGVzdHMv
KioucHkiXQorICAgICAgICBhc3NlcnQgaG9vay5maW5kX3NwZWMoImZpbGUiKSBpcyBub3QgTm9u
ZQorICAgICAgICBhc3NlcnQgc2VsZi5maW5kX3NwZWNfY2FsbHMgPT0gWyJmaWxlIl0KKworICAg
IEBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJ3
aW4zMiIpLCByZWFzb249ImNhbm5vdCByZW1vdmUgY3dkIG9uIFdpbmRvd3MiCisgICAgKQorICAg
IGRlZiB0ZXN0X2N3ZF9jaGFuZ2VkKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICAg
ICAgIyBTZXR1cCBjb25kaXRpb25zIGZvciBweSdzIGZzcGF0aCB0cnlpbmcgdG8gaW1wb3J0IHBh
dGhsaWIgb24gcHkzNAorICAgICAgICAjIGFsd2F5cyAocHJldmlvdXNseSB0cmlnZ2VyZWQgdmlh
IHhkaXN0IG9ubHkpLgorICAgICAgICAjIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1k
ZXYvcHkvcHVsbC8yMDcKKyAgICAgICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5kKCIiKQor
ICAgICAgICBtb25rZXlwYXRjaC5kZWxpdGVtKHN5cy5tb2R1bGVzLCAicGF0aGxpYiIsIHJhaXNp
bmc9RmFsc2UpCisKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgKip7
CisgICAgICAgICAgICAgICAgInRlc3Rfc2V0dXBfbm9uZXhpc3RpbmdfY3dkLnB5IjogIiIiXAor
ICAgICAgICAgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0
IHNodXRpbAorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdGVtcGZpbGUKKworICAgICAgICAg
ICAgICAgICAgICBkID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgICAgICAgICAgICAgIG9z
LmNoZGlyKGQpCisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZCkKKyAgICAgICAg
ICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgInRlc3RfdGVzdC5weSI6ICIiIlwKKyAgICAg
ICAgICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqIDEgcGFzc2VkIGluICoiXSkKKworCitjbGFzcyBUZXN0QXNzZXJ0aW9uUGFz
czoKKyAgICBkZWYgdGVzdF9vcHRpb25fZGVmYXVsdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
Y29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygpCisgICAgICAgIGFzc2VydCBjb25maWcuZ2V0
aW5pKCJlbmFibGVfYXNzZXJ0aW9uX3Bhc3NfaG9vayIpIGlzIEZhbHNlCisKKyAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICBkZWYgZmxhZ19vbihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRp
ci5tYWtlaW5pKCJbcHl0ZXN0XVxuZW5hYmxlX2Fzc2VydGlvbl9wYXNzX2hvb2sgPSBUcnVlXG4i
KQorCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGhvb2tfb24oc2VsZiwgdGVzdGRpcik6
CisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiXAorICAgICAg
ICAgICAgZGVmIHB5dGVzdF9hc3NlcnRpb25fcGFzcyhpdGVtLCBsaW5lbm8sIG9yaWcsIGV4cGwp
OgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQXNzZXJ0aW9uIFBhc3NlZDoge30g
e30gYXQgbGluZSB7fSIuZm9ybWF0KG9yaWcsIGV4cGwsIGxpbmVubykpCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaG9va19jYWxsKHNlbGYsIHRlc3RkaXIsIGZs
YWdfb24sIGhvb2tfb24pOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAg
ICAiIiJcCisgICAgICAgICAgICBkZWYgdGVzdF9zaW1wbGUoKToKKyAgICAgICAgICAgICAgICBh
PTEKKyAgICAgICAgICAgICAgICBiPTIKKyAgICAgICAgICAgICAgICBjPTMKKyAgICAgICAgICAg
ICAgICBkPTAKKworICAgICAgICAgICAgICAgIGFzc2VydCBhK2IgPT0gYytkCisKKyAgICAgICAg
ICAgICMgY292ZXIgZmFpbGluZyBhc3NlcnRpb25zIHdpdGggYSBtZXNzYWdlCisgICAgICAgICAg
ICBkZWYgdGVzdF9mYWlscygpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgImFzc2Vy
dCB3aXRoIG1lc3NhZ2UiCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgICIqQXNzZXJ0aW9uIFBhc3NlZDogYStiID09IGMrZCAoMSArIDIp
ID09ICgzICsgMCkgYXQgbGluZSA3KiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaG9va19j
YWxsX3dpdGhfcGFyZW5zKHNlbGYsIHRlc3RkaXIsIGZsYWdfb24sIGhvb2tfb24pOgorICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYg
ZigpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBh
c3NlcnQgZigpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygi
KkFzc2VydGlvbiBQYXNzZWQ6IGYoKSAxIikKKworICAgIGRlZiB0ZXN0X2hvb2tfbm90X2NhbGxl
ZF93aXRob3V0X2hvb2tpbXBsKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoLCBmbGFnX29uKToK
KyAgICAgICAgIiIiQXNzZXJ0aW9uIHBhc3Mgc2hvdWxkIG5vdCBiZSBjYWxsZWQgKGFuZCBoZW5j
ZSBmb3JtYXR0aW5nIHNob3VsZAorICAgICAgICBub3Qgb2NjdXIpIGlmIHRoZXJlIGlzIG5vIGhv
b2sgZGVjbGFyZWQgZm9yIHB5dGVzdF9hc3NlcnRpb25fcGFzcyIiIgorCisgICAgICAgIGRlZiBy
YWlzZV9vbl9hc3NlcnRpb25wYXNzKCpfLCAqKl9fKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigiQXNzZXJ0aW9uIHBhc3NlZCBjYWxsZWQgd2hlbiBpdCBzaG91bGRuJ3QhIikKKworICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICAgICAgX3B5dGVzdC5hc3NlcnRpb24u
cmV3cml0ZSwgIl9jYWxsX2Fzc2VydGlvbl9wYXNzIiwgcmFpc2Vfb25fYXNzZXJ0aW9ucGFzcwor
ICAgICAgICApCisKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIi
XAorICAgICAgICAgICAgZGVmIHRlc3Rfc2ltcGxlKCk6CisgICAgICAgICAgICAgICAgYT0xCisg
ICAgICAgICAgICAgICAgYj0yCisgICAgICAgICAgICAgICAgYz0zCisgICAgICAgICAgICAgICAg
ZD0wCisKKyAgICAgICAgICAgICAgICBhc3NlcnQgYStiID09IGMrZAorICAgICAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAg
ICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHBhc3NlZD0xKQorCisgICAgZGVmIHRlc3RfaG9va19u
b3RfY2FsbGVkX3dpdGhvdXRfY21kX29wdGlvbihzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6
CisgICAgICAgICIiIkFzc2VydGlvbiBwYXNzIHNob3VsZCBub3QgYmUgY2FsbGVkIChhbmQgaGVu
Y2UgZm9ybWF0dGluZyBzaG91bGQKKyAgICAgICAgbm90IG9jY3VyKSBpZiB0aGVyZSBpcyBubyBo
b29rIGRlY2xhcmVkIGZvciBweXRlc3RfYXNzZXJ0aW9uX3Bhc3MiIiIKKworICAgICAgICBkZWYg
cmFpc2Vfb25fYXNzZXJ0aW9ucGFzcygqXywgKipfXyk6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oIkFzc2VydGlvbiBwYXNzZWQgY2FsbGVkIHdoZW4gaXQgc2hvdWxkbid0ISIpCisKKyAg
ICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigKKyAgICAgICAgICAgIF9weXRlc3QuYXNzZXJ0aW9u
LnJld3JpdGUsICJfY2FsbF9hc3NlcnRpb25fcGFzcyIsIHJhaXNlX29uX2Fzc2VydGlvbnBhc3MK
KyAgICAgICAgKQorCisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAg
IiIiXAorICAgICAgICAgICAgZGVmIHB5dGVzdF9hc3NlcnRpb25fcGFzcyhpdGVtLCBsaW5lbm8s
IG9yaWcsIGV4cGwpOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQXNzZXJ0aW9u
IFBhc3NlZDoge30ge30gYXQgbGluZSB7fSIuZm9ybWF0KG9yaWcsIGV4cGwsIGxpbmVubykpCisg
ICAgICAgICAgICAiIiIKICAgICAgICAgKQogCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiB0ZXN0X3NpbXBsZSgpOgorICAgICAg
ICAgICAgICAgIGE9MQorICAgICAgICAgICAgICAgIGI9MgorICAgICAgICAgICAgICAgIGM9Mwor
ICAgICAgICAgICAgICAgIGQ9MAorCisgICAgICAgICAgICAgICAgYXNzZXJ0IGErYiA9PSBjK2QK
KyAgICAgICAgICAgICIiIgorICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqRSphc3NlcnQg
KDEgKyAxKSA9PSAzIikKKyAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MSkK
KworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgKCJzcmMiLCAiZXhwZWN0ZWQiKSwK
KyAgICAoCisgICAgICAgICMgZm10OiBvZmYKKyAgICAgICAgcHl0ZXN0LnBhcmFtKGIiIiwge30s
IGlkPSJ0cml2aWFsIiksCisgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgIGIiZGVm
IHgoKTogYXNzZXJ0IDFcbiIsCisgICAgICAgICAgICB7MTogIjEifSwKKyAgICAgICAgICAgIGlk
PSJhc3NlcnQgc3RhdGVtZW50IG5vdCBvbiBvd24gbGluZSIsCisgICAgICAgICksCisgICAgICAg
IHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgIGIiZGVmIHgoKTpcbiIKKyAgICAgICAgICAgIGIi
ICAgIGFzc2VydCAxXG4iCisgICAgICAgICAgICBiIiAgICBhc3NlcnQgMSsyXG4iLAorICAgICAg
ICAgICAgezI6ICIxIiwgMzogIjErMiJ9LAorICAgICAgICAgICAgaWQ9Im11bHRpcGxlIGFzc2Vy
dGlvbnMiLAorICAgICAgICApLAorICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAj
IGNoYW5nZXMgaW4gZW5jb2RpbmcgY2F1c2UgdGhlIGJ5dGUgb2Zmc2V0cyB0byBiZSBkaWZmZXJl
bnQKKyAgICAgICAgICAgICIjIC0qLSBjb2Rpbmc6IGxhdGluMVxuIgorICAgICAgICAgICAgImRl
ZiDDgMOAw4DDgMOAKCk6IGFzc2VydCAxXG4iLmVuY29kZSgibGF0aW4xIiksCisgICAgICAgICAg
ICB7MjogIjEifSwKKyAgICAgICAgICAgIGlkPSJsYXRpbjEgZW5jb2RlZCBvbiBmaXJzdCBsaW5l
XG4iLAorICAgICAgICApLAorICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAjIHVz
aW5nIHRoZSBkZWZhdWx0IHV0Zi04IGVuY29kaW5nCisgICAgICAgICAgICAiZGVmIMOAw4DDgMOA
w4AoKTogYXNzZXJ0IDFcbiIuZW5jb2RlKCksCisgICAgICAgICAgICB7MTogIjEifSwKKyAgICAg
ICAgICAgIGlkPSJ1dGYtOCBlbmNvZGVkIG9uIGZpcnN0IGxpbmUiLAorICAgICAgICApLAorICAg
ICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICBiImRlZiB4KCk6XG4iCisgICAgICAgICAg
ICBiIiAgICBhc3NlcnQgKFxuIgorICAgICAgICAgICAgYiIgICAgICAgIDEgKyAyICAjIGNvbW1l
bnRcbiIKKyAgICAgICAgICAgIGIiICAgIClcbiIsCisgICAgICAgICAgICB7MjogIihcbiAgICAg
ICAgMSArIDIgICMgY29tbWVudFxuICAgICkifSwKKyAgICAgICAgICAgIGlkPSJtdWx0aS1saW5l
IGFzc2VydGlvbiIsCisgICAgICAgICksCisgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
ICAgIGIiZGVmIHgoKTpcbiIKKyAgICAgICAgICAgIGIiICAgIGFzc2VydCB5ID09IFtcbiIKKyAg
ICAgICAgICAgIGIiICAgICAgICAxLCAyLCAzXG4iCisgICAgICAgICAgICBiIiAgICBdXG4iLAor
ICAgICAgICAgICAgezI6ICJ5ID09IFtcbiAgICAgICAgMSwgMiwgM1xuICAgIF0ifSwKKyAgICAg
ICAgICAgIGlkPSJtdWx0aSBsaW5lIGFzc2VydCB3aXRoIGxpc3QgY29udGludWF0aW9uIiwKKyAg
ICAgICAgKSwKKyAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgYiJkZWYgeCgpOlxu
IgorICAgICAgICAgICAgYiIgICAgYXNzZXJ0IDEgKyBcXFxuIgorICAgICAgICAgICAgYiIgICAg
ICAgIDJcbiIsCisgICAgICAgICAgICB7MjogIjEgKyBcXFxuICAgICAgICAyIn0sCisgICAgICAg
ICAgICBpZD0iYmFja3NsYXNoIGNvbnRpbnVhdGlvbiIsCisgICAgICAgICksCisgICAgICAgIHB5
dGVzdC5wYXJhbSgKKyAgICAgICAgICAgIGIiZGVmIHgoKTpcbiIKKyAgICAgICAgICAgIGIiICAg
IGFzc2VydCB4LCB5XG4iLAorICAgICAgICAgICAgezI6ICJ4In0sCisgICAgICAgICAgICBpZD0i
YXNzZXJ0aW9uIHdpdGggbWVzc2FnZSIsCisgICAgICAgICksCisgICAgICAgIHB5dGVzdC5wYXJh
bSgKKyAgICAgICAgICAgIGIiZGVmIHgoKTpcbiIKKyAgICAgICAgICAgIGIiICAgIGFzc2VydCAo
XG4iCisgICAgICAgICAgICBiIiAgICAgICAgZigxLCAyLCAzKVxuIgorICAgICAgICAgICAgYiIg
ICAgKSwgICdmIGRpZCBub3Qgd29yayEnXG4iLAorICAgICAgICAgICAgezI6ICIoXG4gICAgICAg
IGYoMSwgMiwgMylcbiAgICApIn0sCisgICAgICAgICAgICBpZD0iYXNzZXJ0aW9uIHdpdGggbWVz
c2FnZSwgdGVzdCBzcGFubmluZyBtdWx0aXBsZSBsaW5lcyIsCisgICAgICAgICksCisgICAgICAg
IHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgIGIiZGVmIHgoKTpcbiIKKyAgICAgICAgICAgIGIi
ICAgIGFzc2VydCBcXFxuIgorICAgICAgICAgICAgYiIgICAgICAgIHhcXFxuIgorICAgICAgICAg
ICAgYiIgICAgICAgICwgJ2ZhaWx1cmUgbWVzc2FnZSdcbiIsCisgICAgICAgICAgICB7MjogIngi
fSwKKyAgICAgICAgICAgIGlkPSJlc2NhcGVkIG5ld2xpbmVzIHBsdXMgbWVzc2FnZSIsCisgICAg
ICAgICksCisgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgIGIiZGVmIHgoKTogYXNz
ZXJ0IDUiLAorICAgICAgICAgICAgezE6ICI1In0sCisgICAgICAgICAgICBpZD0ibm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZSIsCisgICAgICAgICksCisgICAgICAgICMgZm10OiBvbgorICAgICks
CispCitkZWYgdGVzdF9nZXRfYXNzZXJ0aW9uX2V4cHJzKHNyYywgZXhwZWN0ZWQpOgorICAgIGFz
c2VydCBfZ2V0X2Fzc2VydGlvbl9leHBycyhzcmMpID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rf
dHJ5X21ha2VkaXJzKG1vbmtleXBhdGNoLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICBm
cm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IHRyeV9tYWtlZGlycworCisgICAg
cCA9IHRtcF9wYXRoIC8gImZvbyIKKworICAgICMgY3JlYXRlCisgICAgYXNzZXJ0IHRyeV9tYWtl
ZGlycyhwKQorICAgIGFzc2VydCBwLmlzX2RpcigpCisKKyAgICAjIGFscmVhZHkgZXhpc3QKKyAg
ICBhc3NlcnQgdHJ5X21ha2VkaXJzKHApCisKKyAgICAjIG1vbmtleXBhdGNoIHRvIHNpbXVsYXRl
IGFsbCBlcnJvciBzaXR1YXRpb25zCisgICAgZGVmIGZha2VfbWtkaXIocCwgZXhpc3Rfb2s9RmFs
c2UsICosIGV4Yyk6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHAsIHN0cikKKyAgICAgICAg
cmFpc2UgZXhjCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9zLCAibWFrZWRpcnMiLCBwYXJ0
aWFsKGZha2VfbWtkaXIsIGV4Yz1GaWxlTm90Rm91bmRFcnJvcigpKSkKKyAgICBhc3NlcnQgbm90
IHRyeV9tYWtlZGlycyhwKQorCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvcywgIm1ha2VkaXJz
IiwgcGFydGlhbChmYWtlX21rZGlyLCBleGM9Tm90QURpcmVjdG9yeUVycm9yKCkpKQorICAgIGFz
c2VydCBub3QgdHJ5X21ha2VkaXJzKHApCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKG9zLCAi
bWFrZWRpcnMiLCBwYXJ0aWFsKGZha2VfbWtkaXIsIGV4Yz1QZXJtaXNzaW9uRXJyb3IoKSkpCisg
ICAgYXNzZXJ0IG5vdCB0cnlfbWFrZWRpcnMocCkKKworICAgIGVyciA9IE9TRXJyb3IoKQorICAg
IGVyci5lcnJubyA9IGVycm5vLkVST0ZTCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvcywgIm1h
a2VkaXJzIiwgcGFydGlhbChmYWtlX21rZGlyLCBleGM9ZXJyKSkKKyAgICBhc3NlcnQgbm90IHRy
eV9tYWtlZGlycyhwKQorCisgICAgIyB1bmhhbmRsZWQgT1NFcnJvciBzaG91bGQgcmFpc2UKKyAg
ICBlcnIgPSBPU0Vycm9yKCkKKyAgICBlcnIuZXJybm8gPSBlcnJuby5FQ0hJTEQKKyAgICBtb25r
ZXlwYXRjaC5zZXRhdHRyKG9zLCAibWFrZWRpcnMiLCBwYXJ0aWFsKGZha2VfbWtkaXIsIGV4Yz1l
cnIpKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhPU0Vycm9yKSBhcyBleGNfaW5mbzoKKyAgICAg
ICAgdHJ5X21ha2VkaXJzKHApCisgICAgYXNzZXJ0IGV4Y19pbmZvLnZhbHVlLmVycm5vID09IGVy
cm5vLkVDSElMRAorCisKK2NsYXNzIFRlc3RQeUNhY2hlRGlyOgorICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgKKyAgICAgICAgInByZWZpeCwgc291cmNlLCBleHBlY3RlZCIsCisgICAgICAg
IFsKKyAgICAgICAgICAgICgiYzovdG1wL3B5Y3MiLCAiZDovcHJvamVjdHMvc3JjL2Zvby5weSIs
ICJjOi90bXAvcHljcy9wcm9qZWN0cy9zcmMiKSwKKyAgICAgICAgICAgIChOb25lLCAiZDovcHJv
amVjdHMvc3JjL2Zvby5weSIsICJkOi9wcm9qZWN0cy9zcmMvX19weWNhY2hlX18iKSwKKyAgICAg
ICAgICAgICgiL3RtcC9weWNzIiwgIi9ob21lL3Byb2plY3RzL3NyYy9mb28ucHkiLCAiL3RtcC9w
eWNzL2hvbWUvcHJvamVjdHMvc3JjIiksCisgICAgICAgICAgICAoTm9uZSwgIi9ob21lL3Byb2pl
Y3RzL3NyYy9mb28ucHkiLCAiL2hvbWUvcHJvamVjdHMvc3JjL19fcHljYWNoZV9fIiksCisgICAg
ICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X2dldF9jYWNoZV9kaXIoc2VsZiwgbW9ua2V5cGF0
Y2gsIHByZWZpeCwgc291cmNlLCBleHBlY3RlZCk6CisgICAgICAgIGlmIHByZWZpeDoKKyAgICAg
ICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgOCk6CisgICAgICAgICAgICAgICAgcHl0
ZXN0LnNraXAoInB5Y2FjaGVfcHJlZml4IG5vdCBhdmFpbGFibGUgaW4gcHk8MzgiKQorICAgICAg
ICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJweWNhY2hlX3ByZWZpeCIsIHByZWZpeCkg
ICMgdHlwZTppZ25vcmUKKworICAgICAgICBhc3NlcnQgZ2V0X2NhY2hlX2RpcihQYXRoKHNvdXJj
ZSkpID09IFBhdGgoZXhwZWN0ZWQpCisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAg
ICBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDgpLCByZWFzb249InB5Y2FjaGVfcHJlZml4IG5vdCBh
dmFpbGFibGUgaW4gcHk8MzgiCisgICAgKQorICAgIGRlZiB0ZXN0X3N5c19weWNhY2hlX3ByZWZp
eF9pbnRlZ3JhdGlvbihzZWxmLCB0bXBfcGF0aCwgbW9ua2V5cGF0Y2gsIHRlc3RkaXIpOgorICAg
ICAgICAiIiJJbnRlZ3JhdGlvbiB0ZXN0IGZvciBzeXMucHljYWNoZV9wcmVmaXggKCM0NzMwKS4i
IiIKKyAgICAgICAgcHljYWNoZV9wcmVmaXggPSB0bXBfcGF0aCAvICJteS9weWNzIgorICAgICAg
ICBtb25rZXlwYXRjaC5zZXRhdHRyKHN5cywgInB5Y2FjaGVfcHJlZml4Iiwgc3RyKHB5Y2FjaGVf
cHJlZml4KSkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihzeXMsICJkb250X3dyaXRlX2J5
dGVjb2RlIiwgRmFsc2UpCisKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgKip7CisgICAgICAgICAgICAgICAgInNyYy90ZXN0X2Zvby5weSI6ICIiIgorICAgICAgICAg
ICAgICAgIGltcG9ydCBiYXIKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAg
ICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgICJz
cmMvYmFyL19faW5pdF9fLnB5IjogIiIsCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCisKKyAgICAgICAgdGVzdF9mb28gPSBQYXRoKHRlc3RkaXIudG1wZGlyKSAvICJzcmMv
dGVzdF9mb28ucHkiCisgICAgICAgIGJhcl9pbml0ID0gUGF0aCh0ZXN0ZGlyLnRtcGRpcikgLyAi
c3JjL2Jhci9fX2luaXRfXy5weSIKKyAgICAgICAgYXNzZXJ0IHRlc3RfZm9vLmlzX2ZpbGUoKQor
ICAgICAgICBhc3NlcnQgYmFyX2luaXQuaXNfZmlsZSgpCisKKyAgICAgICAgIyB0ZXN0IGZpbGU6
IHJld3JpdHRlbiwgY3VzdG9tIHB5dGVzdCBjYWNoZSB0YWcKKyAgICAgICAgdGVzdF9mb29fcHlj
ID0gZ2V0X2NhY2hlX2Rpcih0ZXN0X2ZvbykgLyAoInRlc3RfZm9vIiArIFBZQ19UQUlMKQorICAg
ICAgICBhc3NlcnQgdGVzdF9mb29fcHljLmlzX2ZpbGUoKQorCisgICAgICAgICMgbm9ybWFsIGZp
bGU6IG5vdCB0b3VjaGVkIGJ5IHB5dGVzdCwgbm9ybWFsIGNhY2hlIHRhZworICAgICAgICBiYXJf
aW5pdF9weWMgPSBnZXRfY2FjaGVfZGlyKGJhcl9pbml0KSAvICJfX2luaXRfXy57Y2FjaGVfdGFn
fS5weWMiLmZvcm1hdCgKKyAgICAgICAgICAgIGNhY2hlX3RhZz1zeXMuaW1wbGVtZW50YXRpb24u
Y2FjaGVfdGFnCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGJhcl9pbml0X3B5Yy5pc19maWxl
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jYWNoZXByb3ZpZGVyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhY2hlcHJvdmlkZXIucHkKaW5kZXggMzNkMWRk
ODQ0OGMxLi5hOTExMjU3Y2UyNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9jYWNoZXByb3ZpZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jYWNoZXBy
b3ZpZGVyLnB5CkBAIC0xLDE2ICsxLDE4IEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgc3lzCi1pbXBvcnQg
cHkKLWltcG9ydCBfcHl0ZXN0Ci1pbXBvcnQgcHl0ZXN0CiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0
aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCisKK2ltcG9ydCBweQogCi1weXRlc3RfcGx1Z2lu
cyA9ICJweXRlc3RlciIsCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCiAKK3B5dGVz
dF9wbHVnaW5zID0gKCJweXRlc3RlciIsKQogCi1jbGFzcyBUZXN0TmV3QVBJKG9iamVjdCk6CiAK
K2NsYXNzIFRlc3ROZXdBUEk6CiAgICAgZGVmIHRlc3RfY29uZmlnX2NhY2hlX21ha2VkaXIoc2Vs
ZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWluaSgiW3B5dGVzdF0iKQogICAgICAg
ICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlndXJlKCkKQEAgLTI2LDEwICsyOCwxMSBAQCBj
bGFzcyBUZXN0TmV3QVBJKG9iamVjdCk6CiAgICAgICAgIGNhY2hlID0gY29uZmlnLmNhY2hlCiAg
ICAgICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGNhY2hlLnNldCgia2V5L25h
bWUiLCBjYWNoZSkpCiAgICAgICAgIGNvbmZpZy5jYWNoZS5zZXQoImtleS9uYW1lIiwgMCkKLSAg
ICAgICAgY29uZmlnLmNhY2hlLl9nZXR2YWx1ZXBhdGgoImtleS9uYW1lIikud3JpdGUoIjEyM2lu
dmFsaWQiKQorICAgICAgICBjb25maWcuY2FjaGUuX2dldHZhbHVlcGF0aCgia2V5L25hbWUiKS53
cml0ZV9ieXRlcyhiIjEyM2ludmFsaWQiKQogICAgICAgICB2YWwgPSBjb25maWcuY2FjaGUuZ2V0
KCJrZXkvbmFtZSIsIC0yKQogICAgICAgICBhc3NlcnQgdmFsID09IC0yCiAKKyAgICBAcHl0ZXN0
Lm1hcmsuZmlsdGVyd2FybmluZ3MoImlnbm9yZTpjb3VsZCBub3QgY3JlYXRlIGNhY2hlIHBhdGgi
KQogICAgIGRlZiB0ZXN0X2NhY2hlX3dyaXRlZmFpbF9jYWNoZmlsZV9zaWxlbnQoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWluaSgiW3B5dGVzdF0iKQogICAgICAgICB0ZXN0
ZGlyLnRtcGRpci5qb2luKCIucHl0ZXN0X2NhY2hlIikud3JpdGUoImdvbmUgd3JvbmciKQpAQCAt
MzgsMjYgKzQxLDQ2IEBAIGNsYXNzIFRlc3ROZXdBUEkob2JqZWN0KToKICAgICAgICAgY2FjaGUu
c2V0KCJ0ZXN0L2Jyb2tlbiIsIFtdKQogCiAgICAgQHB5dGVzdC5tYXJrLnNraXBpZihzeXMucGxh
dGZvcm0uc3RhcnRzd2l0aCgid2luIiksIHJlYXNvbj0ibm8gY2htb2Qgb24gd2luZG93cyIpCisg
ICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAiaWdub3JlOmNvdWxkIG5v
dCBjcmVhdGUgY2FjaGUgcGF0aDpweXRlc3QuUHl0ZXN0V2FybmluZyIKKyAgICApCiAgICAgZGVm
IHRlc3RfY2FjaGVfd3JpdGVmYWlsX3Blcm1pc3Npb25zKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VpbmkoIltweXRlc3RdIikKKyAgICAgICAgY2FjaGVfZGlyID0gc3RyKHRl
c3RkaXIudG1wZGlyLmVuc3VyZV9kaXIoIi5weXRlc3RfY2FjaGUiKSkKKyAgICAgICAgbW9kZSA9
IG9zLnN0YXQoY2FjaGVfZGlyKVtzdGF0LlNUX01PREVdCiAgICAgICAgIHRlc3RkaXIudG1wZGly
LmVuc3VyZV9kaXIoIi5weXRlc3RfY2FjaGUiKS5jaG1vZCgwKQotICAgICAgICBjb25maWcgPSB0
ZXN0ZGlyLnBhcnNlY29uZmlndXJlKCkKLSAgICAgICAgY2FjaGUgPSBjb25maWcuY2FjaGUKLSAg
ICAgICAgY2FjaGUuc2V0KCJ0ZXN0L2Jyb2tlbiIsIFtdKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlndXJlKCkKKyAgICAgICAgICAgIGNhY2hl
ID0gY29uZmlnLmNhY2hlCisgICAgICAgICAgICBjYWNoZS5zZXQoInRlc3QvYnJva2VuIiwgW10p
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0ZXN0ZGlyLnRtcGRpci5lbnN1cmVfZGly
KCIucHl0ZXN0X2NhY2hlIikuY2htb2QobW9kZSkKIAogICAgIEBweXRlc3QubWFyay5za2lwaWYo
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpLCByZWFzb249Im5vIGNobW9kIG9uIHdpbmRv
d3MiKQotICAgIGRlZiB0ZXN0X2NhY2hlX2ZhaWx1cmVfd2FybnMoc2VsZiwgdGVzdGRpcik6Cisg
ICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikKKyAgICBkZWYgdGVzdF9j
YWNoZV9mYWlsdXJlX3dhcm5zKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICAgICAg
bW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiLCAiMSIp
CisgICAgICAgIGNhY2hlX2RpciA9IHN0cih0ZXN0ZGlyLnRtcGRpci5lbnN1cmVfZGlyKCIucHl0
ZXN0X2NhY2hlIikpCisgICAgICAgIG1vZGUgPSBvcy5zdGF0KGNhY2hlX2Rpcilbc3RhdC5TVF9N
T0RFXQogICAgICAgICB0ZXN0ZGlyLnRtcGRpci5lbnN1cmVfZGlyKCIucHl0ZXN0X2NhY2hlIiku
Y2htb2QoMCkKLSAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0g
ICAgICAgICAgICBkZWYgdGVzdF9lcnJvcigpOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbgotCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItcnciKQotICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCi0gICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipjb3VsZCBub3QgY3JlYXRlIGNhY2hlIHBh
dGgqIiwgIioyIHdhcm5pbmdzKiJdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoImRlZiB0ZXN0X2Vycm9yKCk6IHJhaXNlIEV4Y2VwdGlvbiIpCisgICAgICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgICAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAxCisgICAgICAgICAgICAjIHdhcm5pbmdzIGZyb20gbm9kZWlkcywgbGFzdGZh
aWxlZCwgYW5kIHN0ZXB3aXNlCisgICAgICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAjIFZhbGlkYXRlIGxv
Y2F0aW9uL3N0YWNrbGV2ZWwgb2Ygd2FybmluZyBmcm9tIGNhY2hlcHJvdmlkZXIuCisgICAgICAg
ICAgICAgICAgICAgICIqPSB3YXJuaW5ncyBzdW1tYXJ5ID0qIiwKKyAgICAgICAgICAgICAgICAg
ICAgIiovY2FjaGVwcm92aWRlci5weToqIiwKKyAgICAgICAgICAgICAgICAgICAgIiAgKi9jYWNo
ZXByb3ZpZGVyLnB5Oio6IFB5dGVzdENhY2hlV2FybmluZzogY291bGQgbm90IGNyZWF0ZSBjYWNo
ZSBwYXRoICIKKyAgICAgICAgICAgICAgICAgICAgInt9L3YvY2FjaGUvbm9kZWlkcyIuZm9ybWF0
KGNhY2hlX2RpciksCisgICAgICAgICAgICAgICAgICAgICcgICAgY29uZmlnLmNhY2hlLnNldCgi
Y2FjaGUvbm9kZWlkcyIsIHNvcnRlZChzZWxmLmNhY2hlZF9ub2RlaWRzKSknLAorICAgICAgICAg
ICAgICAgICAgICAiKjEgZmFpbGVkLCAzIHdhcm5pbmdzIGluKiIsCisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdGVzdGRpci50
bXBkaXIuZW5zdXJlX2RpcigiLnB5dGVzdF9jYWNoZSIpLmNobW9kKG1vZGUpCiAKICAgICBkZWYg
dGVzdF9jb25maWdfY2FjaGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZWNv
bmZ0ZXN0KApAQCAtMTM4LDE1ICsxNjEsMzcgQEAgY2xhc3MgVGVzdE5ld0FQSShvYmplY3QpOgog
ICAgICAgICBhc3NlcnQgdGVzdGRpci50bXBkaXIuam9pbigiY3VzdG9tX2NhY2hlX2RpciIpLmlz
ZGlyKCkKIAogCi1kZWYgdGVzdF9jYWNoZV9yZXBvcnRoZWFkZXIodGVzdGRpcik6Ci0gICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJlbnYiLCAoKCksICgi
VE9YX0VOVl9ESVIiLCAiL3RveF9lbnZfZGlyIikpKQorZGVmIHRlc3RfY2FjaGVfcmVwb3J0aGVh
ZGVyKGVudiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgi
IiJkZWYgdGVzdF9mb28oKTogcGFzcyIiIikKKyAgICBpZiBlbnY6CisgICAgICAgIG1vbmtleXBh
dGNoLnNldGVudigqZW52KQorICAgICAgICBleHBlY3RlZCA9IG9zLnBhdGguam9pbihlbnZbMV0s
ICIucHl0ZXN0X2NhY2hlIikKKyAgICBlbHNlOgorICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYo
IlRPWF9FTlZfRElSIiwgcmFpc2luZz1GYWxzZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAiLnB5dGVz
dF9jYWNoZSIKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiKQorICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImNhY2hlZGlyOiAlcyIgJSBleHBlY3RlZF0pCisKKwor
ZGVmIHRlc3RfY2FjaGVfcmVwb3J0aGVhZGVyX2V4dGVybmFsX2Fic3BhdGgodGVzdGRpciwgdG1w
ZGlyX2ZhY3RvcnkpOgorICAgIGV4dGVybmFsX2NhY2hlID0gdG1wZGlyX2ZhY3RvcnkubWt0ZW1w
KAorICAgICAgICAidGVzdF9jYWNoZV9yZXBvcnRoZWFkZXJfZXh0ZXJuYWxfYWJzcGF0aF9hYnMi
CisgICAgKQorCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9oZWxsbygpOiBwYXNz
IikKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCiAgICAgICAgICIiIgotICAgICAgICBkZWYgdGVzdF9o
ZWxsbygpOgotICAgICAgICAgICAgcGFzcwotICAgICIiIgorICAgIFtweXRlc3RdCisgICAgY2Fj
aGVfZGlyID0ge2Fic2NhY2hlfQorICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICBhYnNjYWNo
ZT1leHRlcm5hbF9jYWNoZQorICAgICAgICApCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItdiIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiY2FjaGVk
aXI6IC5weXRlc3RfY2FjaGUiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisg
ICAgICAgIFsiY2FjaGVkaXI6IHthYnNjYWNoZX0iLmZvcm1hdChhYnNjYWNoZT1leHRlcm5hbF9j
YWNoZSldCisgICAgKQogCiAKIGRlZiB0ZXN0X2NhY2hlX3Nob3codGVzdGRpcik6CkBAIC0xNTcs
NiArMjAyLDcgQEAgZGVmIHRlc3RfY2FjaGVfc2hvdyh0ZXN0ZGlyKToKICAgICAgICAgIiIiCiAg
ICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CiAgICAgICAgICAgICBjb25maWcu
Y2FjaGUuc2V0KCJteS9uYW1lIiwgWzEsMiwzXSkKKyAgICAgICAgICAgIGNvbmZpZy5jYWNoZS5z
ZXQoIm15L2hlbGxvIiwgIndvcmxkIikKICAgICAgICAgICAgIGNvbmZpZy5jYWNoZS5zZXQoIm90
aGVyL3NvbWUiLCB7MToyfSkKICAgICAgICAgICAgIGRwID0gY29uZmlnLmNhY2hlLm1ha2VkaXIo
Im15ZGIiKQogICAgICAgICAgICAgZHAuZW5zdXJlKCJoZWxsbyIpCkBAIC0xNjUsNTggKzIxMSw4
MSBAQCBkZWYgdGVzdF9jYWNoZV9zaG93KHRlc3RkaXIpOgogICAgICkKICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gNSAgIyBubyB0ZXN0
cyBleGVjdXRlZAorCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY2FjaGUtc2hv
dyIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzX3JhbmRvbSgKKyAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsKICAgICAgICAgICAgICIqY2FjaGVkaXI6
KiIsCi0gICAgICAgICAgICAiLSpjYWNoZSB2YWx1ZXMqLSIsCi0gICAgICAgICAgICAiKm15L25h
bWUgY29udGFpbnM6IiwKKyAgICAgICAgICAgICIqLSBjYWNoZSB2YWx1ZXMgZm9yICdbKl0nIC0q
IiwKKyAgICAgICAgICAgICJjYWNoZS9ub2RlaWRzIGNvbnRhaW5zOiIsCisgICAgICAgICAgICAi
bXkvbmFtZSBjb250YWluczoiLAogICAgICAgICAgICAgIiAgWzEsIDIsIDNdIiwKLSAgICAgICAg
ICAgICIqb3RoZXIvc29tZSBjb250YWlucyoiLAotICAgICAgICAgICAgIiAgeyoxKjogMn0iLAot
ICAgICAgICAgICAgIi0qY2FjaGUgZGlyZWN0b3JpZXMqLSIsCisgICAgICAgICAgICAib3RoZXIv
c29tZSBjb250YWluczoiLAorICAgICAgICAgICAgIiAgeyonMSc6IDJ9IiwKKyAgICAgICAgICAg
ICIqLSBjYWNoZSBkaXJlY3RvcmllcyBmb3IgJ1sqXScgLSoiLAogICAgICAgICAgICAgIipteWRi
L2hlbGxvKmxlbmd0aCAwKiIsCiAgICAgICAgICAgICAiKm15ZGIvd29ybGQqbGVuZ3RoIDAqIiwK
ICAgICAgICAgXQogICAgICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKKyAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jYWNoZS1zaG93IiwgIiovaGVsbG8iKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIipjYWNo
ZWRpcjoqIiwKKyAgICAgICAgICAgICIqLSBjYWNoZSB2YWx1ZXMgZm9yICdbKl0vaGVsbG8nIC0q
IiwKKyAgICAgICAgICAgICJteS9oZWxsbyBjb250YWluczoiLAorICAgICAgICAgICAgIiAgKid3
b3JsZCciLAorICAgICAgICAgICAgIiotIGNhY2hlIGRpcmVjdG9yaWVzIGZvciAnWypdL2hlbGxv
JyAtKiIsCisgICAgICAgICAgICAiZC9teWRiL2hlbGxvKmxlbmd0aCAwKiIsCisgICAgICAgIF0K
KyAgICApCisgICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIGFzc2VydCAib3Ro
ZXIvc29tZSIgbm90IGluIHN0ZG91dAorICAgIGFzc2VydCAiZC9teWRiL3dvcmxkIiBub3QgaW4g
c3Rkb3V0CisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCi1jbGFzcyBUZXN0TGFzdEZhaWxl
ZChvYmplY3QpOgogCitjbGFzcyBUZXN0TGFzdEZhaWxlZDoKICAgICBkZWYgdGVzdF9sYXN0ZmFp
bGVkX3VzZWNhc2Uoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotICAgICAgICBtb25rZXlw
YXRjaC5zZXRlbnYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIiwgMSkKKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cigic3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUiLCBUcnVlKQogICAgICAgICBw
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYg
dGVzdF8xKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgICAgIGRlZiB0ZXN0
XzIoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAgICAgZGVmIHRlc3RfMygp
OgotICAgICAgICAgICAgICAgIGFzc2VydCAxCi0gICAgICAgICIiIgorICAgICAgICAgICAgZGVm
IHRlc3RfMSgpOiBhc3NlcnQgMAorICAgICAgICAgICAgZGVmIHRlc3RfMigpOiBhc3NlcnQgMAor
ICAgICAgICAgICAgZGVmIHRlc3RfMygpOiBhc3NlcnQgMQorICAgICAgICAgICAgIiIiCiAgICAg
ICAgICkKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocCkpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIioyIGZhaWxlZCoiXSkKLSAgICAgICAgcC53cml0ZSgKLSAgICAgICAgICAg
IF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
ZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGFzc2VydCAxCi0KLSAgICAgICAgICAgIGRl
ZiB0ZXN0XzIoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMQotCi0gICAgICAgICAgICBkZWYg
dGVzdF8zKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCi0gICAgICAg
ICAgICApCisgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKTogYXNzZXJ0IDEKKyAgICAgICAgICAgIGRlZiB0ZXN0
XzIoKTogYXNzZXJ0IDEKKyAgICAgICAgICAgIGRlZiB0ZXN0XzMoKTogYXNzZXJ0IDAKKyAgICAg
ICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLWxmIikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2Vk
KjEgZGVzZWwqIl0pCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIikK
LSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgZmFpbGVkKjIgcGFzc2Vk
KiJdKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIsICItLWNhY2hl
LWNsZWFyIikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3RyKHApLCAiLS1s
ZiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDMgaXRlbXMgLyAxIGRlc2VsZWN0ZWQgLyAyIHNl
bGVjdGVkIiwKKyAgICAgICAgICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogcmVydW4gcHJldmlv
dXMgMiBmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAgIio9IDIgcGFzc2VkLCAxIGRlc2VsZWN0
ZWQgaW4gKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3Qoc3RyKHApLCAiLS1sZiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDMg
aXRlbXMiLAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiBubyBwcmV2aW91c2x5
IGZhaWxlZCB0ZXN0cywgbm90IGRlc2VsZWN0aW5nIGl0ZW1zLiIsCisgICAgICAgICAgICAgICAg
IioxIGZhaWxlZCoyIHBhc3NlZCoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisgICAgICAg
IHRlc3RkaXIudG1wZGlyLmpvaW4oIi5weXRlc3RfY2FjaGUiKS5ta2RpcigiLmdpdCIpCisgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0cihwKSwgIi0tbGYiLCAiLS1jYWNoZS1j
bGVhciIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIGZhaWxlZCoy
IHBhc3NlZCoiXSkKKyAgICAgICAgYXNzZXJ0IHRlc3RkaXIudG1wZGlyLmpvaW4oIi5weXRlc3Rf
Y2FjaGUiLCAiUkVBRE1FLm1kIikuaXNmaWxlKCkKKyAgICAgICAgYXNzZXJ0IHRlc3RkaXIudG1w
ZGlyLmpvaW4oIi5weXRlc3RfY2FjaGUiLCAiLmdpdCIpLmlzZGlyKCkKIAogICAgICAgICAjIFJ1
biB0aGlzIGFnYWluIHRvIG1ha2Ugc3VyZSBjbGVhci1jYWNoZSBpcyByb2J1c3QKICAgICAgICAg
aWYgb3MucGF0aC5pc2RpcigiLnB5dGVzdF9jYWNoZSIpOgpAQCAtMjI1LDYzICsyOTQsNDUgQEAg
Y2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiKjEgZmFpbGVkKjIgcGFzc2VkKiJdKQogCiAgICAgZGVmIHRlc3RfZmFpbGVk
Zmlyc3Rfb3JkZXIoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4o
InRlc3RfYS5weSIpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCi0g
ICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9hbHdheXNfcGFzc2VzKCk6
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDEKLSAgICAgICAgIiIiCi0gICAgICAgICAgICApCi0g
ICAgICAgICkKLSAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF9iLnB5Iikud3JpdGUo
Ci0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIK
LSAgICAgICAgICAgIGRlZiB0ZXN0X2Fsd2F5c19mYWlscygpOgotICAgICAgICAgICAgICAgIGFz
c2VydCAwCi0gICAgICAgICIiIgotICAgICAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCisgICAgICAgICAgICB0ZXN0X2E9ImRlZiB0ZXN0X2Fsd2F5c19wYXNzZXMoKTogcGFz
cyIsCisgICAgICAgICAgICB0ZXN0X2I9ImRlZiB0ZXN0X2Fsd2F5c19mYWlscygpOiBhc3NlcnQg
MCIsCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAg
ICAgICAjIFRlc3Qgb3JkZXIgd2lsbCBiZSBjb2xsZWN0aW9uIG9yZGVyOyBhbHBoYWJldGljYWwK
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsidGVzdF9hLnB5KiIsICJ0ZXN0
X2IucHkqIl0pCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWZmIikKLSAg
ICAgICAgIyBUZXN0IG9yZGVyIHdpbGwgYmUgZmFpbGluZyB0ZXN0cyBmaXJzCi0gICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbInRlc3RfYi5weSoiLCAidGVzdF9hLnB5KiJdKQor
ICAgICAgICAjIFRlc3Qgb3JkZXIgd2lsbCBiZSBmYWlsaW5nIHRlc3RzIGZpcnN0CisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAiY29sbGVjdGVkIDIgaXRlbXMiLAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWls
dXJlOiByZXJ1biBwcmV2aW91cyAxIGZhaWx1cmUgZmlyc3QiLAorICAgICAgICAgICAgICAgICJ0
ZXN0X2IucHkqIiwKKyAgICAgICAgICAgICAgICAidGVzdF9hLnB5KiIsCisgICAgICAgICAgICBd
CisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfZmFpbGVkZmlyc3Rfb3JkZXIo
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAg
ICoqewotICAgICAgICAgICAgICAgICJ0ZXN0X2EucHkiOiAiIiIKLSAgICAgICAgICAgICAgICBk
ZWYgdGVzdF9hbHdheXNfcGFzc2VzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCAxCi0g
ICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAgICAgInRlc3RfYi5weSI6ICIiIgotICAgICAg
ICAgICAgICAgIGRlZiB0ZXN0X2Fsd2F5c19mYWlscygpOgotICAgICAgICAgICAgICAgICAgICBh
c3NlcnQgMAotICAgICAgICAgICAgIiIiLAotICAgICAgICAgICAgfQorICAgICAgICAgICAgdGVz
dF9hPSJkZWYgdGVzdF9hbHdheXNfcGFzc2VzKCk6IGFzc2VydCAxIiwKKyAgICAgICAgICAgIHRl
c3RfYj0iZGVmIHRlc3RfYWx3YXlzX2ZhaWxzKCk6IGFzc2VydCAwIiwKICAgICAgICAgKQogICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgICMgVGVzdCBvcmRlciB3
aWxsIGJlIGNvbGxlY3Rpb24gb3JkZXI7IGFscGhhYmV0aWNhbAogICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyJ0ZXN0X2EucHkqIiwgInRlc3RfYi5weSoiXSkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCAiLS1mZiIpCi0gICAgICAgICMgVGVz
dCBvcmRlciB3aWxsIGJlIGZhaWxpbmcgdGVzdHMgZmlycworICAgICAgICAjIFRlc3Qgb3JkZXIg
d2lsbCBiZSBmYWlsaW5nIHRlc3RzIGZpcnN0CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbInRlc3RfYi5weSoiXSkKLSAgICAgICAgYXNzZXJ0ICJ0ZXN0X2EucHkiIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqdGVzdF9hLnB5KiIpCiAKICAgICBkZWYgdGVzdF9sYXN0ZmFpbGVkX2RpZmZlcmVuY2Vf
aW52b2NhdGlvbnMoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotICAgICAgICBtb25rZXlw
YXRjaC5zZXRlbnYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIiwgMSkKKyAgICAgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cigic3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUiLCBUcnVlKQogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICB0ZXN0X2E9IiIiCi0gICAgICAgICAgICBk
ZWYgdGVzdF9hMSgpOgotICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICAgICBkZWYg
dGVzdF9hMigpOgotICAgICAgICAgICAgICAgIGFzc2VydCAxCi0gICAgICAgICIiIiwKLSAgICAg
ICAgICAgIHRlc3RfYj0iIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X2IxKCk6Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Ex
KCk6IGFzc2VydCAwCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfYTIoKTogYXNzZXJ0IDEKKyAg
ICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIHRlc3RfYj0iZGVmIHRlc3RfYjEoKTogYXNzZXJ0
IDAiLAogICAgICAgICApCiAgICAgICAgIHAgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0X2Eu
cHkiKQogICAgICAgICBwMiA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInRlc3RfYi5weSIpCkBAIC0y
OTAsMzYgKzM0MSwyNSBAQCBjbGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBmYWlsZWQqIl0pCiAgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIiwgcDIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIioxIGZhaWxlZCoiXSkKLSAgICAgICAgcDIud3JpdGUoCi0gICAgICAg
ICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X2IxKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDEKLSAgICAgICAgIiIi
Ci0gICAgICAgICAgICApCi0gICAgICAgICkKKworICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
dGVzdF9iPSJkZWYgdGVzdF9iMSgpOiBhc3NlcnQgMSIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItLWxmIiwgcDIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIioxIHBhc3NlZCoiXSkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0tbGYiLCBwKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBmYWls
ZWQqMSBkZXNlbCoiXSkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyAvIDEgZGVzZWxl
Y3RlZCAvIDEgc2VsZWN0ZWQiLAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiBy
ZXJ1biBwcmV2aW91cyAxIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICIqPSAxIGZhaWxlZCwg
MSBkZXNlbGVjdGVkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCiAKICAgICBkZWYg
dGVzdF9sYXN0ZmFpbGVkX3VzZWNhc2Vfc3BsaWNlKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNo
KToKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIs
IDEpCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoInN5cy5kb250X3dyaXRlX2J5dGVjb2Rl
IiwgVHJ1ZSkKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0g
ICAgICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAg
ICAgIiIiCisgICAgICAgICAgICAiZGVmIHRlc3RfMSgpOiBhc3NlcnQgMCIsIHRlc3Rfc29tZXRo
aW5nPSJkZWYgdGVzdF8yKCk6IGFzc2VydCAwIgogICAgICAgICApCiAgICAgICAgIHAyID0gdGVz
dGRpci50bXBkaXIuam9pbigidGVzdF9zb21ldGhpbmcucHkiKQotICAgICAgICBwMi53cml0ZSgK
LSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgot
ICAgICAgICAgICAgZGVmIHRlc3RfMigpOgotICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAg
ICAgICIiIgotICAgICAgICAgICAgKQotICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIg
ZmFpbGVkKiJdKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIsIHAy
KQpAQCAtMzU2LDIzICszOTYsMTkgQEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIioxIGZhaWxlZCBpbioiKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBmYWlsZWQgaW4qIl0pCiAK
ICAgICBkZWYgdGVzdF90ZXJtaW5hbF9yZXBvcnRfbGFzdGZhaWxlZChzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgdGVzdF9hID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgdGVzdF9h
PSIiIgotICAgICAgICAgICAgZGVmIHRlc3RfYTEoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0g
ICAgICAgICAgICBkZWYgdGVzdF9hMigpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X2ExKCk6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0X2EyKCk6IHBhc3MK
ICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgdGVzdF9iID0gdGVzdGRpci5tYWtlcHlm
aWxlKAogICAgICAgICAgICAgdGVzdF9iPSIiIgotICAgICAgICAgICAgZGVmIHRlc3RfYjEoKToK
LSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAgICAgZGVmIHRlc3RfYjIoKToKLSAg
ICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAgICAgZGVmIHRlc3RfYjEoKTogYXNzZXJ0
IDAKKyAgICAgICAgICAgIGRlZiB0ZXN0X2IyKCk6IGFzc2VydCAwCiAgICAgICAgICIiIgogICAg
ICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKQEAgLTM4MSw5ICs0
MTcsOSBAQCBjbGFzcyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDQgaXRlbXMg
LyAyIGRlc2VsZWN0ZWQiLAotICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiByZXJ1
biBwcmV2aW91cyAyIGZhaWx1cmVzIiwKLSAgICAgICAgICAgICAgICAiKjIgZmFpbGVkLCAyIGRl
c2VsZWN0ZWQgaW4qIiwKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMiLAorICAg
ICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiByZXJ1biBwcmV2aW91cyAyIGZhaWx1cmVz
IChza2lwcGVkIDEgZmlsZSkiLAorICAgICAgICAgICAgICAgICIqMiBmYWlsZWQgaW4qIiwKICAg
ICAgICAgICAgIF0KICAgICAgICAgKQogCkBAIC0zOTEsNyArNDI3LDcgQEAgY2xhc3MgVGVzdExh
c3RGYWlsZWQob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAog
ICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyIsCi0gICAg
ICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJ1biBhbGwgKG5vIHJlY29yZGVkIGZhaWx1
cmVzKSIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IDIga25vd24gZmFpbHVy
ZXMgbm90IGluIHNlbGVjdGVkIHRlc3RzIiwKICAgICAgICAgICAgICAgICAiKjIgcGFzc2VkIGlu
KiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKQEAgLTQxNywxMCArNDUzLDggQEAgY2xhc3Mg
VGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICBkZWYgdGVzdF90ZXJtaW5hbF9yZXBvcnRfZmFp
bGVkZmlyc3Qoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgICAgIHRlc3RfYT0iIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0X2ExKCk6Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgICAgIGRlZiB0ZXN0X2EyKCk6Ci0gICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfYTEoKTogYXNzZXJ0IDAKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X2EyKCk6IHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQpAQCAtNDQ5LDggKzQ4Myw4IEBAIGNsYXNzIFRl
c3RMYXN0RmFpbGVkKG9iamVjdCk6CiAgICAgICAgICkKIAogICAgICAgICBkZWYgcmxmKGZhaWxf
aW1wb3J0LCBmYWlsX3J1bik6Ci0gICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIkZBSUxJ
TVBPUlQiLCBmYWlsX2ltcG9ydCkKLSAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRkFJ
TFRFU1QiLCBmYWlsX3J1bikKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRkFJTElN
UE9SVCIsIHN0cihmYWlsX2ltcG9ydCkpCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYo
IkZBSUxURVNUIiwgc3RyKGZhaWxfcnVuKSkKIAogICAgICAgICAgICAgdGVzdGRpci5ydW5weXRl
c3QoIi1xIikKICAgICAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWd1cmUoKQpA
QCAtNDY3LDcgKzUwMSw2IEBAIGNsYXNzIFRlc3RMYXN0RmFpbGVkKG9iamVjdCk6CiAgICAgICAg
IGFzc2VydCBsaXN0KGxhc3RmYWlsZWQpID09IFsidGVzdF9tYXliZS5weTo6dGVzdF9oZWxsbyJd
CiAKICAgICBkZWYgdGVzdF9sYXN0ZmFpbGVkX2ZhaWx1cmVfc3Vic2V0KHNlbGYsIHRlc3RkaXIs
IG1vbmtleXBhdGNoKToKLQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAg
ICB0ZXN0X21heWJlPSIiIgogICAgICAgICAgICAgaW1wb3J0IG9zCkBAIC00ODUsNiArNTE4LDcg
QEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAgICAgICAgIGVudiA9IG9zLmVu
dmlyb24KICAgICAgICAgICAgIGlmICcxJyA9PSBlbnZbJ0ZBSUxJTVBPUlQnXToKICAgICAgICAg
ICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignZmFpbCcpCisKICAgICAgICAgICAgIGRlZiB0ZXN0
X2hlbGxvKCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0ICcwJyA9PSBlbnZbJ0ZBSUxURVNUJ10K
IApAQCAtNDk0LDggKzUyOCw4IEBAIGNsYXNzIFRlc3RMYXN0RmFpbGVkKG9iamVjdCk6CiAgICAg
ICAgICkKIAogICAgICAgICBkZWYgcmxmKGZhaWxfaW1wb3J0LCBmYWlsX3J1biwgYXJncz0oKSk6
Ci0gICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIkZBSUxJTVBPUlQiLCBmYWlsX2ltcG9y
dCkKLSAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRkFJTFRFU1QiLCBmYWlsX3J1bikK
KyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiRkFJTElNUE9SVCIsIHN0cihmYWlsX2lt
cG9ydCkpCisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIkZBSUxURVNUIiwgc3RyKGZh
aWxfcnVuKSkKIAogICAgICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1xIiwg
Ii0tbGYiLCAqYXJncykKICAgICAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWd1
cmUoKQpAQCAtNTM4LDEyICs1NzIsMTEgQEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToK
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAg
QHB5dGVzdC5tYXJrLnhmYWlsCi0gICAgICAgICAgICBkZWYgdGVzdCgpOgotICAgICAgICAgICAg
ICAgIGFzc2VydCAwCisgICAgICAgICAgICBkZWYgdGVzdCgpOiBhc3NlcnQgMAogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgeGZhaWxlZCoiKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSB4ZmFpbGVkKiJdKQogICAgICAgICBhc3Nl
cnQgc2VsZi5nZXRfY2FjaGVkX2xhc3RfZmFpbGVkKHRlc3RkaXIpID09IFtdCiAKICAgICBkZWYg
dGVzdF94ZmFpbF9zdHJpY3RfY29uc2lkZXJlZF9mYWlsdXJlKHNlbGYsIHRlc3RkaXIpOgpAQCAt
NTUxLDM5ICs1ODQsMzQgQEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgQHB5dGVzdC5t
YXJrLnhmYWlsKHN0cmljdD1UcnVlKQotICAgICAgICAgICAgZGVmIHRlc3QoKToKLSAgICAgICAg
ICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgdGVzdCgpOiBwYXNzCiAgICAgICAgICIiIgog
ICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBmYWlsZWQqIikKLSAgICAgICAgYXNzZXJ0
ICgKLSAgICAgICAgICAgIHNlbGYuZ2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKQotICAg
ICAgICAgICAgPT0gWyJ0ZXN0X3hmYWlsX3N0cmljdF9jb25zaWRlcmVkX2ZhaWx1cmUucHk6OnRl
c3QiXQotICAgICAgICApCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiox
IGZhaWxlZCoiXSkKKyAgICAgICAgYXNzZXJ0IHNlbGYuZ2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0
ZXN0ZGlyKSA9PSBbCisgICAgICAgICAgICAidGVzdF94ZmFpbF9zdHJpY3RfY29uc2lkZXJlZF9m
YWlsdXJlLnB5Ojp0ZXN0IgorICAgICAgICBdCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoIm1hcmsiLCBbIm1hcmsueGZhaWwiLCAibWFyay5za2lwIl0pCiAgICAgZGVmIHRlc3RfZmFp
bGVkX2NoYW5nZWRfdG9feGZhaWxfb3Jfc2tpcChzZWxmLCB0ZXN0ZGlyLCBtYXJrKToKICAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgICAgICBkZWYgdGVzdCgpOgotICAgICAgICAgICAgICAgIGFzc2Vy
dCAwCisgICAgICAgICAgICBkZWYgdGVzdCgpOiBhc3NlcnQgMAogICAgICAgICAiIiIKICAgICAg
ICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2Vy
dCAoCi0gICAgICAgICAgICBzZWxmLmdldF9jYWNoZWRfbGFzdF9mYWlsZWQodGVzdGRpcikKLSAg
ICAgICAgICAgID09IFsidGVzdF9mYWlsZWRfY2hhbmdlZF90b194ZmFpbF9vcl9za2lwLnB5Ojp0
ZXN0Il0KLSAgICAgICAgKQorICAgICAgICBhc3NlcnQgc2VsZi5nZXRfY2FjaGVkX2xhc3RfZmFp
bGVkKHRlc3RkaXIpID09IFsKKyAgICAgICAgICAgICJ0ZXN0X2ZhaWxlZF9jaGFuZ2VkX3RvX3hm
YWlsX29yX3NraXAucHk6OnRlc3QiCisgICAgICAgIF0KICAgICAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMQogCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgog
ICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICAgICAgQHB5dGVzdC57bWFya30KLSAg
ICAgICAgICAgIGRlZiB0ZXN0KCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAg
ICAgIGRlZiB0ZXN0KCk6IGFzc2VydCAwCiAgICAgICAgICIiIi5mb3JtYXQoCiAgICAgICAgICAg
ICAgICAgbWFyaz1tYXJrCiAgICAgICAgICAgICApCkBAIC01OTMsNzkgKzYyMSw5NiBAQCBjbGFz
cyBUZXN0TGFzdEZhaWxlZChvYmplY3QpOgogICAgICAgICBhc3NlcnQgc2VsZi5nZXRfY2FjaGVk
X2xhc3RfZmFpbGVkKHRlc3RkaXIpID09IFtdCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKIAorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicXVpZXQiLCBbVHJ1ZSwgRmFsc2Vd
KQorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgib3B0IiwgWyItLWZmIiwgIi0tbGYiXSkK
KyAgICBkZWYgdGVzdF9sZl9hbmRfZmZfcHJpbnRzX25vX25lZWRsZXNzX21lc3NhZ2Uoc2VsZiwg
cXVpZXQsIG9wdCwgdGVzdGRpcik6CisgICAgICAgICMgSXNzdWUgMzg1MworICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0KCk6IGFzc2VydCAwIikKKyAgICAgICAgYXJncyA9IFtv
cHRdCisgICAgICAgIGlmIHF1aWV0OgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi1xIikKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3MpCisgICAgICAgIHJlc3VsdC5z
dGRvdXQubm9fZm5tYXRjaF9saW5lKCIqcnVuIGFsbCoiKQorCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCphcmdzKQorICAgICAgICBpZiBxdWlldDoKKyAgICAgICAgICAgIHJl
c3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqcnVuIGFsbCoiKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgYXNzZXJ0ICJyZXJ1biBwcmV2aW91cyIgaW4gcmVzdWx0LnN0ZG91dC5zdHIo
KQorCiAgICAgZGVmIGdldF9jYWNoZWRfbGFzdF9mYWlsZWQoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWd1cmUoKQogICAgICAgICByZXR1cm4gc29y
dGVkKGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL2xhc3RmYWlsZWQiLCB7fSkpCiAKICAgICBkZWYg
dGVzdF9jYWNoZV9jdW11bGF0aXZlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiIKLSAgICAg
ICAgVGVzdCB3b3JrZmxvdyB3aGVyZSB1c2VyIGZpeGVzIGVycm9ycyBncmFkdWFsbHkgZmlsZSBi
eSBmaWxlIHVzaW5nIC0tbGYuCi0gICAgICAgICIiIgorICAgICAgICAiIiJUZXN0IHdvcmtmbG93
IHdoZXJlIHVzZXIgZml4ZXMgZXJyb3JzIGdyYWR1YWxseSBmaWxlIGJ5IGZpbGUgdXNpbmcgLS1s
Zi4iIiIKICAgICAgICAgIyAxLiBpbml0aWFsIHJ1bgogICAgICAgICB0ZXN0X2JhciA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgIHRlc3RfYmFyPSIiIgotICAgICAgICAgICAgZGVm
IHRlc3RfYmFyXzEoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBkZWYgdGVz
dF9iYXJfMigpOgotICAgICAgICAgICAgICAgIGFzc2VydCAwCisgICAgICAgICAgICBkZWYgdGVz
dF9iYXJfMSgpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGVzdF9iYXJfMigpOiBhc3NlcnQgMAog
ICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICB0ZXN0X2ZvbyA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgIHRlc3RfZm9vPSIiIgotICAgICAgICAgICAgZGVmIHRlc3RfZm9v
XzMoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBkZWYgdGVzdF9mb29fNCgp
OgotICAgICAgICAgICAgICAgIGFzc2VydCAwCisgICAgICAgICAgICBkZWYgdGVzdF9mb29fMygp
OiBwYXNzCisgICAgICAgICAgICBkZWYgdGVzdF9mb29fNCgpOiBhc3NlcnQgMAogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2Vy
dCAoCi0gICAgICAgICAgICBzZWxmLmdldF9jYWNoZWRfbGFzdF9mYWlsZWQodGVzdGRpcikKLSAg
ICAgICAgICAgID09IFsidGVzdF9iYXIucHk6OnRlc3RfYmFyXzIiLCAidGVzdF9mb28ucHk6OnRl
c3RfZm9vXzQiXQotICAgICAgICApCisgICAgICAgIGFzc2VydCBzZWxmLmdldF9jYWNoZWRfbGFz
dF9mYWlsZWQodGVzdGRpcikgPT0gWworICAgICAgICAgICAgInRlc3RfYmFyLnB5Ojp0ZXN0X2Jh
cl8yIiwKKyAgICAgICAgICAgICJ0ZXN0X2Zvby5weTo6dGVzdF9mb29fNCIsCisgICAgICAgIF0K
IAogICAgICAgICAjIDIuIGZpeCB0ZXN0X2Jhcl8yLCBydW4gb25seSB0ZXN0X2Jhci5weQogICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICB0ZXN0X2Jhcj0iIiIKLSAgICAg
ICAgICAgIGRlZiB0ZXN0X2Jhcl8xKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgZGVmIHRlc3RfYmFyXzIoKToKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBk
ZWYgdGVzdF9iYXJfMSgpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGVzdF9iYXJfMigpOiBwYXNz
CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KHRlc3RfYmFyKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIioyIHBh
c3NlZCoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNzZWQq
Il0pCiAgICAgICAgICMgZW5zdXJlIGNhY2hlIGRvZXMgbm90IGZvcmdldCB0aGF0IHRlc3RfZm9v
XzQgZmFpbGVkIG9uY2UgYmVmb3JlCiAgICAgICAgIGFzc2VydCBzZWxmLmdldF9jYWNoZWRfbGFz
dF9mYWlsZWQodGVzdGRpcikgPT0gWyJ0ZXN0X2Zvby5weTo6dGVzdF9mb29fNCJdCiAKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGFzdC1mYWlsZWQiKQotICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIioxIGZhaWxlZCwgMyBkZXNlbGVjdGVkKiIpCisg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAiY29sbGVjdGVkIDEgaXRlbSIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0
LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDEgZmFpbHVyZSAoc2tpcHBlZCAxIGZpbGUpIiwKKyAg
ICAgICAgICAgICAgICAiKj0gMSBmYWlsZWQgaW4gKiIsCisgICAgICAgICAgICBdCisgICAgICAg
ICkKICAgICAgICAgYXNzZXJ0IHNlbGYuZ2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKSA9
PSBbInRlc3RfZm9vLnB5Ojp0ZXN0X2Zvb180Il0KIAogICAgICAgICAjIDMuIGZpeCB0ZXN0X2Zv
b180LCBydW4gb25seSB0ZXN0X2Zvby5weQogICAgICAgICB0ZXN0X2ZvbyA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgIHRlc3RfZm9vPSIiIgotICAgICAgICAgICAgZGVmIHRlc3Rf
Zm9vXzMoKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBkZWYgdGVzdF9mb29f
NCgpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb18zKCk6
IHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb180KCk6IHBhc3MKICAgICAgICAgIiIiCiAg
ICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QodGVzdF9mb28sICIt
LWxhc3QtZmFpbGVkIikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBw
YXNzZWQsIDEgZGVzZWxlY3RlZCoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAyIGl0ZW1zIC8g
MSBkZXNlbGVjdGVkIC8gMSBzZWxlY3RlZCIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZh
aWx1cmU6IHJlcnVuIHByZXZpb3VzIDEgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgIio9IDEg
cGFzc2VkLCAxIGRlc2VsZWN0ZWQgaW4gKiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKICAg
ICAgICAgYXNzZXJ0IHNlbGYuZ2V0X2NhY2hlZF9sYXN0X2ZhaWxlZCh0ZXN0ZGlyKSA9PSBbXQog
CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWxhc3QtZmFpbGVkIikKLSAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqNCBwYXNzZWQqIikKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjQgcGFzc2VkKiJdKQogICAgICAgICBhc3Nl
cnQgc2VsZi5nZXRfY2FjaGVkX2xhc3RfZmFpbGVkKHRlc3RkaXIpID09IFtdCiAKICAgICBkZWYg
dGVzdF9sYXN0ZmFpbGVkX25vX2ZhaWx1cmVzX2JlaGF2aW9yX2FsbF9wYXNzZWQoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgotICAg
ICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCi0gICAg
ICAgICAgICBkZWYgdGVzdF8yKCk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAg
ICAgICAgIGRlZiB0ZXN0XzEoKTogcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfMigpOiBwYXNz
CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKQEAgLTY3NCwxNiArNzE5LDM4IEBAIGNsYXNzIFRlc3RMYXN0RmFpbGVkKG9iamVjdCk6
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCoiXSkKICAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCAiLS1sZm5mIiwgImFsbCIp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCoiXSkKKwor
ICAgICAgICAjIEVuc3VyZSB0aGUgbGlzdCBwYXNzZWQgdG8gcHl0ZXN0X2Rlc2VsZWN0ZWQgaXMg
YSBjb3B5LAorICAgICAgICAjIGFuZCBub3QgYSByZWZlcmVuY2Ugd2hpY2ggaXMgY2xlYXJlZCBy
aWdodCBhZnRlci4KKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgIGRlc2VsZWN0ZWQgPSBbXQorCisgICAgICAgICAgICBkZWYgcHl0ZXN0
X2Rlc2VsZWN0ZWQoaXRlbXMpOgorICAgICAgICAgICAgICAgIGdsb2JhbCBkZXNlbGVjdGVkCisg
ICAgICAgICAgICAgICAgZGVzZWxlY3RlZCA9IGl0ZW1zCisKKyAgICAgICAgICAgIGRlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaCgpOgorICAgICAgICAgICAgICAgIHByaW50KCJcXG5kZXNlbGVjdGVk
PXt9Ii5mb3JtYXQobGVuKGRlc2VsZWN0ZWQpKSkKKyAgICAgICAgIiIiCisgICAgICAgICkKKwog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIsICItLWxmbmYiLCAibm9u
ZSIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIGRlc2VsKiJdKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgImNvbGxlY3RlZCAyIGl0ZW1zIC8gMiBkZXNlbGVjdGVkIiwKKyAgICAgICAg
ICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogbm8gcHJldmlvdXNseSBmYWlsZWQgdGVzdHMsIGRl
c2VsZWN0aW5nIGFsbCBpdGVtcy4iLAorICAgICAgICAgICAgICAgICJkZXNlbGVjdGVkPTIiLAor
ICAgICAgICAgICAgICAgICIqIDIgZGVzZWxlY3RlZCBpbiAqIiwKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19D
T0xMRUNURUQKIAogICAgIGRlZiB0ZXN0X2xhc3RmYWlsZWRfbm9fZmFpbHVyZXNfYmVoYXZpb3Jf
ZW1wdHlfY2FjaGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAg
ICAgIGFzc2VydCBUcnVlCi0gICAgICAgICAgICBkZWYgdGVzdF8yKCk6Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBkZWYgdGVzdF8xKCk6IHBhc3MKKyAgICAgICAg
ICAgIGRlZiB0ZXN0XzIoKTogYXNzZXJ0IDAKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCAiLS1jYWNoZS1jbGVhciIpCkBA
IC02OTMsNzEgKzc2MCwyODUgQEAgY2xhc3MgVGVzdExhc3RGYWlsZWQob2JqZWN0KToKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCAiLS1jYWNoZS1jbGVhciIsICIt
LWxmbmYiLCAibm9uZSIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioy
IGRlc2VsKiJdKQogCisgICAgZGVmIHRlc3RfbGFzdGZhaWxlZF9za2lwX2NvbGxlY3Rpb24oc2Vs
ZiwgdGVzdGRpcik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IC0tbGYgYmVoYXZpb3IgcmVn
YXJkaW5nIHNraXBwaW5nIGNvbGxlY3Rpb24gb2YgZmlsZXMgdGhhdCBhcmUgbm90IG1hcmtlZCBh
cworICAgICAgICBmYWlsZWQgaW4gdGhlIGNhY2hlICgjNTE3MikuCisgICAgICAgICIiIgorICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAg
ICAicGtnMS90ZXN0XzEucHkiOiAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisK
KyAgICAgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ2knLCByYW5nZSgzKSkK
KyAgICAgICAgICAgICAgICBkZWYgdGVzdF8xKGkpOiBwYXNzCisgICAgICAgICAgICAiIiIsCisg
ICAgICAgICAgICAgICAgInBrZzIvdGVzdF8yLnB5IjogIiIiCisgICAgICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAorCisgICAgICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdp
JywgcmFuZ2UoNSkpCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfMShpKToKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0IGkgbm90IGluICgxLCAzKQorICAgICAgICAgICAgIiIiLAorICAgICAg
ICAgICAgfQorICAgICAgICApCisgICAgICAgICMgZmlyc3QgcnVuOiBjb2xsZWN0cyA4IGl0ZW1z
ICh0ZXN0XzE6IDMsIHRlc3RfMjogNSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjb2xsZWN0ZWQgOCBp
dGVtcyIsICIqMiBmYWlsZWQqNiBwYXNzZWQqIl0pCisgICAgICAgICMgc2Vjb25kIHJ1bjogY29s
bGVjdHMgb25seSA1IGl0ZW1zIGZyb20gdGVzdF8yLCBiZWNhdXNlIGFsbCB0ZXN0cyBmcm9tIHRl
c3RfMSBoYXZlIHBhc3NlZAorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1s
ZiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMiLAorICAgICAgICAgICAgICAgICJy
dW4tbGFzdC1mYWlsdXJlOiByZXJ1biBwcmV2aW91cyAyIGZhaWx1cmVzIChza2lwcGVkIDEgZmls
ZSkiLAorICAgICAgICAgICAgICAgICIqPSAyIGZhaWxlZCBpbiAqIiwKKyAgICAgICAgICAgIF0K
KyAgICAgICAgKQorCisgICAgICAgICMgYWRkIGFub3RoZXIgZmlsZSBhbmQgY2hlY2sgaWYgbWVz
c2FnZSBpcyBjb3JyZWN0IHdoZW4gc2tpcHBpbmcgbW9yZSB0aGFuIDEgZmlsZQorICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAicGtn
MS90ZXN0XzMucHkiOiAiIiIKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF8zKCk6IHBhc3MKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLWxmIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVt
cyIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDIg
ZmFpbHVyZXMgKHNraXBwZWQgMiBmaWxlcykiLAorICAgICAgICAgICAgICAgICIqPSAyIGZhaWxl
ZCBpbiAqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfbGFzdGZh
aWxlZF93aXRoX2tub3duX2ZhaWx1cmVzX25vdF9iZWluZ19zZWxlY3RlZChzZWxmLCB0ZXN0ZGly
KToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgKip7CisgICAgICAg
ICAgICAgICAgInBrZzEvdGVzdF8xLnB5IjogIiIiZGVmIHRlc3RfMSgpOiBhc3NlcnQgMCIiIiwK
KyAgICAgICAgICAgICAgICAicGtnMS90ZXN0XzIucHkiOiAiIiJkZWYgdGVzdF8yKCk6IHBhc3Mi
IiIsCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjb2xsZWN0
ZWQgMiBpdGVtcyIsICIqIDEgZmFpbGVkLCAxIHBhc3NlZCBpbiAqIl0pCisKKyAgICAgICAgcHku
cGF0aC5sb2NhbCgicGtnMS90ZXN0XzEucHkiKS5yZW1vdmUoKQorICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDEgaXRlbSIs
CisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IDEga25vd24gZmFpbHVyZXMgbm90
IGluIHNlbGVjdGVkIHRlc3RzIiwKKyAgICAgICAgICAgICAgICAiKiAxIHBhc3NlZCBpbiAqIiwK
KyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgICAgICMgUmVjcmVhdGUgZmlsZSB3aXRo
IGtub3duIGZhaWx1cmUuCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgqKnsicGtnMS90ZXN0
XzEucHkiOiAiIiJkZWYgdGVzdF8xKCk6IGFzc2VydCAwIiIifSkKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tbGYiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAxIGl0ZW0i
LAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiByZXJ1biBwcmV2aW91cyAxIGZh
aWx1cmUgKHNraXBwZWQgMSBmaWxlKSIsCisgICAgICAgICAgICAgICAgIiogMSBmYWlsZWQgaW4g
KiIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKworICAgICAgICAjIFJlbW92ZS9yZW5hbWUg
dGVzdDogY29sbGVjdHMgdGhlIGZpbGUgYWdhaW4uCisgICAgICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgqKnsicGtnMS90ZXN0XzEucHkiOiAiIiJkZWYgdGVzdF9yZW5hbWVkKCk6IGFzc2VydCAwIiIi
fSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCAiLXJmIikKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0
LWZhaWx1cmU6IDEga25vd24gZmFpbHVyZXMgbm90IGluIHNlbGVjdGVkIHRlc3RzIiwKKyAgICAg
ICAgICAgICAgICAicGtnMS90ZXN0XzEucHkgRiAqIiwKKyAgICAgICAgICAgICAgICAicGtnMS90
ZXN0XzIucHkgLiAqIiwKKyAgICAgICAgICAgICAgICAiRkFJTEVEIHBrZzEvdGVzdF8xLnB5Ojp0
ZXN0X3JlbmFtZWQgLSBhc3NlcnQgMCIsCisgICAgICAgICAgICAgICAgIiogMSBmYWlsZWQsIDEg
cGFzc2VkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbGYiLCAiLS1jbyIpCisgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVj
dGVkIDEgaXRlbSIsCisgICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHBy
ZXZpb3VzIDEgZmFpbHVyZSAoc2tpcHBlZCAxIGZpbGUpIiwKKyAgICAgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgICAgICAiPE1vZHVsZSBwa2cxL3Rlc3RfMS5weT4iLAorICAgICAgICAgICAg
ICAgICIgIDxGdW5jdGlvbiB0ZXN0X3JlbmFtZWQ+IiwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfbGFzdGZhaWxlZF9hcmdzX3dpdGhfZGVzZWxlY3RlZChzZWxmLCB0
ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiJUZXN0IHJlZ3Jlc3Npb24gd2l0
aCAtLWxmIHJ1bm5pbmcgaW50byBOb01hdGNoIGVycm9yLgorCisgICAgICAgIFRoaXMgd2FzIGNh
dXNlZCBieSBpdCBub3QgY29sbGVjdGluZyAobm9uLWZhaWxlZCkgbm9kZXMgZ2l2ZW4gYXMKKyAg
ICAgICAgYXJndW1lbnRzLgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAgICAgKip7CisgICAgICAgICAgICAgICAgInBrZzEvdGVzdF8xLnB5IjogIiIi
CisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKTogcGFzcworICAgICAgICAgICAg
ICAgICAgICBkZWYgdGVzdF9mYWlsKCk6IGFzc2VydCAwCisgICAgICAgICAgICAgICAgIiIiLAor
ICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiY29sbGVjdGVkIDIg
aXRlbXMiLCAiKiAxIGZhaWxlZCwgMSBwYXNzZWQgaW4gKiJdKQorICAgICAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAxCisKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoInBrZzEv
dGVzdF8xLnB5Ojp0ZXN0X3Bhc3MiLCAiLS1sZiIsICItLWNvIikKKyAgICAgICAgYXNzZXJ0IHJl
c3VsdC5yZXQgPT0gMAorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgIipjb2xsZWN0ZWQgMSBpdGVtIiwKKyAgICAgICAg
ICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTogMSBrbm93biBmYWlsdXJlcyBub3QgaW4gc2VsZWN0
ZWQgdGVzdHMiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICI8TW9kdWxl
IHBrZzEvdGVzdF8xLnB5PiIsCisgICAgICAgICAgICAgICAgIiAgPEZ1bmN0aW9uIHRlc3RfcGFz
cz4iLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGNvbnNlY3V0aXZlPVRydWUsCisgICAg
ICAgICkKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAgICAgICAgICAg
ICJwa2cxL3Rlc3RfMS5weTo6dGVzdF9wYXNzIiwgInBrZzEvdGVzdF8xLnB5Ojp0ZXN0X2ZhaWwi
LCAiLS1sZiIsICItLWNvIgorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMiBpdGVtcyAvIDEgZGVzZWxlY3RlZCAvIDEgc2Vs
ZWN0ZWQiLAorICAgICAgICAgICAgICAgICJydW4tbGFzdC1mYWlsdXJlOiByZXJ1biBwcmV2aW91
cyAxIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICI8TW9k
dWxlIHBrZzEvdGVzdF8xLnB5PiIsCisgICAgICAgICAgICAgICAgIiAgPEZ1bmN0aW9uIHRlc3Rf
ZmFpbD4iLAorICAgICAgICAgICAgICAgICIqPSAxIGRlc2VsZWN0ZWQgaW4gKiIsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9sYXN0ZmFpbGVkX3dpdGhfY2xhc3Nf
aXRlbXMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiVGVzdCBy
ZWdyZXNzaW9uIHdpdGggLS1sZiBkZXNlbGVjdGluZyB3aG9sZSBjbGFzc2VzLiIiIgorICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAi
cGtnMS90ZXN0XzEucHkiOiAiIiIKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgVGVzdEZvbzoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3Bhc3Moc2VsZik6IHBhc3MKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWwoc2VsZik6IGFzc2VydCAwCisKKyAgICAg
ICAgICAgICAgICAgICAgZGVmIHRlc3Rfb3RoZXIoKTogYXNzZXJ0IDAKKyAgICAgICAgICAgICAg
ICAiIiIsCisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJjb2xs
ZWN0ZWQgMyBpdGVtcyIsICIqIDIgZmFpbGVkLCAxIHBhc3NlZCBpbiAqIl0pCisgICAgICAgIGFz
c2VydCByZXN1bHQucmV0ID09IDEKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1sZiIsICItLWNvIikKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgImNvbGxlY3RlZCAzIGl0ZW1zIC8gMSBkZXNlbGVjdGVkIC8gMiBzZWxlY3RlZCIsCisg
ICAgICAgICAgICAgICAgInJ1bi1sYXN0LWZhaWx1cmU6IHJlcnVuIHByZXZpb3VzIDIgZmFpbHVy
ZXMiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICI8TW9kdWxlIHBrZzEv
dGVzdF8xLnB5PiIsCisgICAgICAgICAgICAgICAgIiAgPENsYXNzIFRlc3RGb28+IiwKKyAgICAg
ICAgICAgICAgICAiICAgICAgPEZ1bmN0aW9uIHRlc3RfZmFpbD4iLAorICAgICAgICAgICAgICAg
ICIgIDxGdW5jdGlvbiB0ZXN0X290aGVyPiIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAgICAgIio9IDEgZGVzZWxlY3RlZCBpbiAqIiwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICBjb25zZWN1dGl2ZT1UcnVlLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9sYXN0ZmFp
bGVkX3dpdGhfYWxsX2ZpbHRlcmVkKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6Cisg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICoqeworICAgICAgICAgICAg
ICAgICJwa2cxL3Rlc3RfMS5weSI6ICIiIgorICAgICAgICAgICAgICAgICAgICBkZWYgdGVzdF9m
YWlsKCk6IGFzc2VydCAwCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKTogcGFz
cworICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbImNvbGxlY3RlZCAyIGl0ZW1zIiwgIiogMSBmYWlsZWQsIDEgcGFzc2VkIGlu
ICoiXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQogCi1jbGFzcyBUZXN0TmV3Rmly
c3Qob2JqZWN0KToKKyAgICAgICAgIyBSZW1vdmUga25vd24gZmFpbHVyZS4KKyAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgKip7CisgICAgICAgICAgICAgICAgInBrZzEv
dGVzdF8xLnB5IjogIiIiCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKTogcGFz
cworICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1sZiIsICItLWNvIikKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICJjb2xsZWN0ZWQgMSBpdGVtIiwKKyAgICAgICAgICAgICAgICAicnVuLWxhc3QtZmFpbHVyZTog
MSBrbm93biBmYWlsdXJlcyBub3QgaW4gc2VsZWN0ZWQgdGVzdHMiLAorICAgICAgICAgICAgICAg
ICIiLAorICAgICAgICAgICAgICAgICI8TW9kdWxlIHBrZzEvdGVzdF8xLnB5PiIsCisgICAgICAg
ICAgICAgICAgIiAgPEZ1bmN0aW9uIHRlc3RfcGFzcz4iLAorICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICIqPSBubyB0ZXN0cyByYW4gaW4qIiwKKyAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICBjb25zZWN1dGl2ZT1UcnVlLAorICAgICAgICApCisgICAgICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IDAKIAorCitjbGFzcyBUZXN0TmV3Rmlyc3Q6CiAgICAgZGVmIHRlc3RfbmV3
Zmlyc3RfdXNlY2FzZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgKip7CiAgICAgICAgICAgICAgICAgInRlc3RfMS90ZXN0XzEucHkiOiAi
IiIKICAgICAgICAgICAgICAgICBkZWYgdGVzdF8xKCk6IGFzc2VydCAxCi0gICAgICAgICAgICAg
ICAgZGVmIHRlc3RfMigpOiBhc3NlcnQgMQotICAgICAgICAgICAgICAgIGRlZiB0ZXN0XzMoKTog
YXNzZXJ0IDEKICAgICAgICAgICAgICIiIiwKICAgICAgICAgICAgICAgICAidGVzdF8yL3Rlc3Rf
Mi5weSI6ICIiIgogICAgICAgICAgICAgICAgIGRlZiB0ZXN0XzEoKTogYXNzZXJ0IDEKLSAgICAg
ICAgICAgICAgICBkZWYgdGVzdF8yKCk6IGFzc2VydCAxCi0gICAgICAgICAgICAgICAgZGVmIHRl
c3RfMygpOiBhc3NlcnQgMQogICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgfQogICAgICAg
ICApCi0KICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF8xL3Rlc3RfMS5weSIpLnNl
dG10aW1lKDEpCiAKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKICAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xIFBBU1NFRCoiLAotICAgICAgICAg
ICAgICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8yIFBBU1NFRCoiLAotICAgICAgICAgICAg
ICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8zIFBBU1NFRCoiLAotICAgICAgICAgICAgICAg
ICIqdGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8xIFBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIq
dGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8yIFBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVz
dF8yL3Rlc3RfMi5weTo6dGVzdF8zIFBBU1NFRCoiLAotICAgICAgICAgICAgXQorICAgICAgICAg
ICAgWyIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xIFBBU1NFRCoiLCAiKnRlc3RfMi90ZXN0XzIu
cHk6OnRlc3RfMSBQQVNTRUQqIl0KICAgICAgICAgKQogCiAgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItdiIsICItLW5mIikKLQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8y
LnB5Ojp0ZXN0XzEgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5
Ojp0ZXN0XzIgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzIvdGVzdF8yLnB5Ojp0
ZXN0XzMgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0
XzEgUEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzIg
UEFTU0VEKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzMgUEFT
U0VEKiIsCi0gICAgICAgICAgICBdCisgICAgICAgICAgICBbIip0ZXN0XzIvdGVzdF8yLnB5Ojp0
ZXN0XzEgUEFTU0VEKiIsICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xIFBBU1NFRCoiXQogICAg
ICAgICApCiAKICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF8xL3Rlc3RfMS5weSIp
LndyaXRlKAotICAgICAgICAgICAgImRlZiB0ZXN0XzEoKTogYXNzZXJ0IDFcbiIKLSAgICAgICAg
ICAgICJkZWYgdGVzdF8yKCk6IGFzc2VydCAxXG4iCi0gICAgICAgICAgICAiZGVmIHRlc3RfMygp
OiBhc3NlcnQgMVxuIgotICAgICAgICAgICAgImRlZiB0ZXN0XzQoKTogYXNzZXJ0IDFcbiIKKyAg
ICAgICAgICAgICJkZWYgdGVzdF8xKCk6IGFzc2VydCAxXG4iICJkZWYgdGVzdF8yKCk6IGFzc2Vy
dCAxXG4iCiAgICAgICAgICkKICAgICAgICAgdGVzdGRpci50bXBkaXIuam9pbigidGVzdF8xL3Rl
c3RfMS5weSIpLnNldG10aW1lKDEpCiAKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi12IiwgIi0tbmYiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1u
ZiIsICItLWNvbGxlY3Qtb25seSIsICItcSIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAidGVzdF8xL3Rlc3RfMS5w
eTo6dGVzdF8yIiwKKyAgICAgICAgICAgICAgICAidGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8xIiwK
KyAgICAgICAgICAgICAgICAidGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xIiwKKyAgICAgICAgICAg
IF0KKyAgICAgICAgKQogCisgICAgICAgICMgTmV3ZXN0IGZpcnN0IHdpdGggKHBsdWdpbikgcHl0
ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMgaG9vay4KKyAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAgICAgbXlwbHVnaW49IiIiCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2Nv
bGxlY3Rpb25fbW9kaWZ5aXRlbXMoaXRlbXMpOgorICAgICAgICAgICAgICAgIGl0ZW1zWzpdID0g
c29ydGVkKGl0ZW1zLCBrZXk9bGFtYmRhIGl0ZW06IGl0ZW0ubm9kZWlkKQorICAgICAgICAgICAg
ICAgIHByaW50KCJuZXdfaXRlbXM6IiwgW3gubm9kZWlkIGZvciB4IGluIGl0ZW1zXSkKKyAgICAg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLW5mIiwgIi1wIiwgIm15cGx1Z2lu
IiwgIi0tY29sbGVjdC1vbmx5IiwgIi1xIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqdGVzdF8xL3Rlc3RfMS5w
eTo6dGVzdF80IFBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF8yL3Rlc3RfMi5weTo6
dGVzdF8xIFBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF8yL3Rlc3RfMi5weTo6dGVz
dF8yIFBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8z
IFBBU1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8xIFBB
U1NFRCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8yIFBBU1NF
RCoiLAotICAgICAgICAgICAgICAgICIqdGVzdF8xL3Rlc3RfMS5weTo6dGVzdF8zIFBBU1NFRCoi
LAorICAgICAgICAgICAgICAgICJuZXdfaXRlbXM6ICp0ZXN0XzEucHkqdGVzdF8xLnB5KnRlc3Rf
Mi5weSoiLAorICAgICAgICAgICAgICAgICJ0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzIiLAorICAg
ICAgICAgICAgICAgICJ0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzEiLAorICAgICAgICAgICAgICAg
ICJ0ZXN0XzEvdGVzdF8xLnB5Ojp0ZXN0XzEiLAogICAgICAgICAgICAgXQogICAgICAgICApCiAK
QEAgLTc5MCw3ICsxMDcxLDYgQEAgY2xhc3MgVGVzdE5ld0ZpcnN0KG9iamVjdCk6CiAgICAgICAg
ICkKIAogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCAiLS1uZiIpCi0K
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwogICAg
ICAgICAgICAgICAgICIqdGVzdF8yL3Rlc3RfMi5weTo6dGVzdF8xWzEqIiwKQEAgLTgwNyw4ICsx
MDg3LDEzIEBAIGNsYXNzIFRlc3ROZXdGaXJzdChvYmplY3QpOgogICAgICAgICApCiAgICAgICAg
IHRlc3RkaXIudG1wZGlyLmpvaW4oInRlc3RfMS90ZXN0XzEucHkiKS5zZXRtdGltZSgxKQogCi0g
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsICItLW5mIikKKyAgICAgICAg
IyBSdW5uaW5nIG9ubHkgYSBzdWJzZXQgZG9lcyBub3QgZm9yZ2V0IGFib3V0IGV4aXN0aW5nIG9u
ZXMuCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIsICItLW5mIiwgInRl
c3RfMi90ZXN0XzIucHkiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisg
ICAgICAgICAgICBbIip0ZXN0XzIvdGVzdF8yLnB5Ojp0ZXN0XzFbMSoiLCAiKnRlc3RfMi90ZXN0
XzIucHk6OnRlc3RfMVsyKiJdCisgICAgICAgICkKIAorICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLXYiLCAiLS1uZiIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAiKnRlc3RfMS90ZXN0XzEucHk6
OnRlc3RfMVszKiIsCkBAIC04MTgsMyArMTEwMyw2NyBAQCBjbGFzcyBUZXN0TmV3Rmlyc3Qob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAiKnRlc3RfMS90ZXN0XzEucHk6OnRlc3RfMVsyKiIsCiAg
ICAgICAgICAgICBdCiAgICAgICAgICkKKworCitjbGFzcyBUZXN0UmVhZG1lOgorICAgIGRlZiBj
aGVja19yZWFkbWUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFy
c2Vjb25maWd1cmUoKQorICAgICAgICByZWFkbWUgPSBjb25maWcuY2FjaGUuX2NhY2hlZGlyLmpv
aW5wYXRoKCJSRUFETUUubWQiKQorICAgICAgICByZXR1cm4gcmVhZG1lLmlzX2ZpbGUoKQorCisg
ICAgZGVmIHRlc3RfcmVhZG1lX3Bhc3NlZChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9hbHdheXNfcGFzc2VzKCk6IHBhc3MiKQorICAgICAgICB0
ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIGFzc2VydCBzZWxmLmNoZWNrX3JlYWRtZSh0ZXN0
ZGlyKSBpcyBUcnVlCisKKyAgICBkZWYgdGVzdF9yZWFkbWVfZmFpbGVkKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2Fsd2F5c19mYWlscygpOiBh
c3NlcnQgMCIpCisgICAgICAgIHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgYXNzZXJ0IHNl
bGYuY2hlY2tfcmVhZG1lKHRlc3RkaXIpIGlzIFRydWUKKworCitkZWYgdGVzdF9naXRpZ25vcmUo
dGVzdGRpcik6CisgICAgIiIiRW5zdXJlIHdlIGF1dG9tYXRpY2FsbHkgY3JlYXRlIC5naXRpZ25v
cmUgZmlsZSBpbiB0aGUgcHl0ZXN0X2NhY2hlIGRpcmVjdG9yeSAoIzMyODYpLiIiIgorICAgIGZy
b20gX3B5dGVzdC5jYWNoZXByb3ZpZGVyIGltcG9ydCBDYWNoZQorCisgICAgY29uZmlnID0gdGVz
dGRpci5wYXJzZWNvbmZpZygpCisgICAgY2FjaGUgPSBDYWNoZS5mb3JfY29uZmlnKGNvbmZpZykK
KyAgICBjYWNoZS5zZXQoImZvbyIsICJiYXIiKQorICAgIG1zZyA9ICIjIENyZWF0ZWQgYnkgcHl0
ZXN0IGF1dG9tYXRpY2FsbHkuXG4qXG4iCisgICAgZ2l0aWdub3JlX3BhdGggPSBjYWNoZS5fY2Fj
aGVkaXIuam9pbnBhdGgoIi5naXRpZ25vcmUiKQorICAgIGFzc2VydCBnaXRpZ25vcmVfcGF0aC5y
ZWFkX3RleHQoZW5jb2Rpbmc9IlVURi04IikgPT0gbXNnCisKKyAgICAjIERvZXMgbm90IG92ZXJ3
cml0ZSBleGlzdGluZy9jdXN0b20gb25lLgorICAgIGdpdGlnbm9yZV9wYXRoLndyaXRlX3RleHQo
ImN1c3RvbSIpCisgICAgY2FjaGUuc2V0KCJzb21ldGhpbmciLCAiZWxzZSIpCisgICAgYXNzZXJ0
IGdpdGlnbm9yZV9wYXRoLnJlYWRfdGV4dChlbmNvZGluZz0iVVRGLTgiKSA9PSAiY3VzdG9tIgor
CisKK2RlZiB0ZXN0X2RvZXNfbm90X2NyZWF0ZV9ib2lsZXJwbGF0ZV9pbl9leGlzdGluZ19kaXJz
KHRlc3RkaXIpOgorICAgIGZyb20gX3B5dGVzdC5jYWNoZXByb3ZpZGVyIGltcG9ydCBDYWNoZQor
CisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAg
ICAgICAgY2FjaGVfZGlyID0gLgorICAgICAgICAiIiIKKyAgICApCisgICAgY29uZmlnID0gdGVz
dGRpci5wYXJzZWNvbmZpZygpCisgICAgY2FjaGUgPSBDYWNoZS5mb3JfY29uZmlnKGNvbmZpZykK
KyAgICBjYWNoZS5zZXQoImZvbyIsICJiYXIiKQorCisgICAgYXNzZXJ0IG9zLnBhdGguaXNkaXIo
InYiKSAgIyBjYWNoZSBjb250ZW50cworICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoIi5n
aXRpZ25vcmUiKQorICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoIlJFQURNRS5tZCIpCisK
KworZGVmIHRlc3RfY2FjaGVkaXJfdGFnKHRlc3RkaXIpOgorICAgICIiIkVuc3VyZSB3ZSBhdXRv
bWF0aWNhbGx5IGNyZWF0ZSBDQUNIRURJUi5UQUcgZmlsZSBpbiB0aGUgcHl0ZXN0X2NhY2hlIGRp
cmVjdG9yeSAoIzQyNzgpLiIiIgorICAgIGZyb20gX3B5dGVzdC5jYWNoZXByb3ZpZGVyIGltcG9y
dCBDYWNoZQorICAgIGZyb20gX3B5dGVzdC5jYWNoZXByb3ZpZGVyIGltcG9ydCBDQUNIRURJUl9U
QUdfQ09OVEVOVAorCisgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygpCisgICAgY2Fj
aGUgPSBDYWNoZS5mb3JfY29uZmlnKGNvbmZpZykKKyAgICBjYWNoZS5zZXQoImZvbyIsICJiYXIi
KQorICAgIGNhY2hlZGlyX3RhZ19wYXRoID0gY2FjaGUuX2NhY2hlZGlyLmpvaW5wYXRoKCJDQUNI
RURJUi5UQUciKQorICAgIGFzc2VydCBjYWNoZWRpcl90YWdfcGF0aC5yZWFkX2J5dGVzKCkgPT0g
Q0FDSEVESVJfVEFHX0NPTlRFTlQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9jYXB0dXJlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhcHR1cmUucHkKaW5kZXgg
ZTE0YjNhZjc4NTE3Li41ZjgyMGQ4NDY1YjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9jYXB0dXJlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jYXB0dXJl
LnB5CkBAIC0xLDEwMyArMSw5NSBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi0jIG5vdGU6IHB5LmlvIGNhcHR1cmUg
dGVzdHMgd2hlcmUgY29waWVkIGZyb20KLSMgcHlsaWIgMS40LjIwLmRldjIgKHJldiAxM2Q5YWY5
NTU0N2UpCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1pbXBvcnQgcGlj
a2xlCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCiBpbXBvcnQgb3MKK2ltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKIGZyb20gaW8gaW1wb3J0IFVuc3Vw
cG9ydGVkT3BlcmF0aW9uCitmcm9tIHR5cGluZyBpbXBvcnQgQmluYXJ5SU8KK2Zyb20gdHlwaW5n
IGltcG9ydCBjYXN0Citmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJhdG9yCitmcm9tIHR5cGluZyBp
bXBvcnQgVGV4dElPCiAKLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBvcnQgcHkKIGltcG9ydCBw
eXRlc3QKLWltcG9ydCBjb250ZXh0bGliCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRl
eHRfdHlwZQogZnJvbSBfcHl0ZXN0IGltcG9ydCBjYXB0dXJlCitmcm9tIF9weXRlc3QuY2FwdHVy
ZSBpbXBvcnQgX2dldF9tdWx0aWNhcHR1cmUKIGZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBD
YXB0dXJlTWFuYWdlcgotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IEVYSVRfTk9URVNUU0NPTExF
Q1RFRAotCi0KLW5lZWRzb3NkdXAgPSBweXRlc3QubWFyay54ZmFpbCgibm90IGhhc2F0dHIob3Ms
ICdkdXAnKSIpCi0KLQotZGVmIHRvYnl0ZXMob2JqKToKLSAgICBpZiBpc2luc3RhbmNlKG9iaiwg
dGV4dF90eXBlKToKLSAgICAgICAgb2JqID0gb2JqLmVuY29kZSgiVVRGLTgiKQotICAgIGFzc2Vy
dCBpc2luc3RhbmNlKG9iaiwgYmluYXJ5X3R5cGUpCi0gICAgcmV0dXJuIG9iagotCi0KLWRlZiB0
b3RleHQob2JqKToKLSAgICBpZiBpc2luc3RhbmNlKG9iaiwgYmluYXJ5X3R5cGUpOgotICAgICAg
ICBvYmogPSB0ZXh0X3R5cGUob2JqLCAiVVRGLTgiKQotICAgIGFzc2VydCBpc2luc3RhbmNlKG9i
aiwgdGV4dF90eXBlKQotICAgIHJldHVybiBvYmoKLQotCi1kZWYgb3N3cml0ZWJ5dGVzKGZkLCBv
YmopOgotICAgIG9zLndyaXRlKGZkLCB0b2J5dGVzKG9iaikpCitmcm9tIF9weXRlc3QuY2FwdHVy
ZSBpbXBvcnQgQ2FwdHVyZVJlc3VsdAorZnJvbSBfcHl0ZXN0LmNhcHR1cmUgaW1wb3J0IE11bHRp
Q2FwdHVyZQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVz
dC5weXRlc3RlciBpbXBvcnQgVGVzdGRpcgogCisjIG5vdGU6IHB5LmlvIGNhcHR1cmUgdGVzdHMg
d2hlcmUgY29waWVkIGZyb20KKyMgcHlsaWIgMS40LjIwLmRldjIgKHJldiAxM2Q5YWY5NTU0N2Up
CiAKLWRlZiBTdGRDYXB0dXJlRkQob3V0PVRydWUsIGVycj1UcnVlLCBpbl89VHJ1ZSk6Ci0gICAg
cmV0dXJuIGNhcHR1cmUuTXVsdGlDYXB0dXJlKG91dCwgZXJyLCBpbl8sIENhcHR1cmU9Y2FwdHVy
ZS5GRENhcHR1cmUpCiAKK2RlZiBTdGRDYXB0dXJlRkQoCisgICAgb3V0OiBib29sID0gVHJ1ZSwg
ZXJyOiBib29sID0gVHJ1ZSwgaW5fOiBib29sID0gVHJ1ZQorKSAtPiBNdWx0aUNhcHR1cmVbc3Ry
XToKKyAgICByZXR1cm4gY2FwdHVyZS5NdWx0aUNhcHR1cmUoCisgICAgICAgIGluXz1jYXB0dXJl
LkZEQ2FwdHVyZSgwKSBpZiBpbl8gZWxzZSBOb25lLAorICAgICAgICBvdXQ9Y2FwdHVyZS5GRENh
cHR1cmUoMSkgaWYgb3V0IGVsc2UgTm9uZSwKKyAgICAgICAgZXJyPWNhcHR1cmUuRkRDYXB0dXJl
KDIpIGlmIGVyciBlbHNlIE5vbmUsCisgICAgKQogCi1kZWYgU3RkQ2FwdHVyZShvdXQ9VHJ1ZSwg
ZXJyPVRydWUsIGluXz1UcnVlKToKLSAgICByZXR1cm4gY2FwdHVyZS5NdWx0aUNhcHR1cmUob3V0
LCBlcnIsIGluXywgQ2FwdHVyZT1jYXB0dXJlLlN5c0NhcHR1cmUpCiAKK2RlZiBTdGRDYXB0dXJl
KAorICAgIG91dDogYm9vbCA9IFRydWUsIGVycjogYm9vbCA9IFRydWUsIGluXzogYm9vbCA9IFRy
dWUKKykgLT4gTXVsdGlDYXB0dXJlW3N0cl06CisgICAgcmV0dXJuIGNhcHR1cmUuTXVsdGlDYXB0
dXJlKAorICAgICAgICBpbl89Y2FwdHVyZS5TeXNDYXB0dXJlKDApIGlmIGluXyBlbHNlIE5vbmUs
CisgICAgICAgIG91dD1jYXB0dXJlLlN5c0NhcHR1cmUoMSkgaWYgb3V0IGVsc2UgTm9uZSwKKyAg
ICAgICAgZXJyPWNhcHR1cmUuU3lzQ2FwdHVyZSgyKSBpZiBlcnIgZWxzZSBOb25lLAorICAgICkK
IAotY2xhc3MgVGVzdENhcHR1cmVNYW5hZ2VyKG9iamVjdCk6CiAKLSAgICBkZWYgdGVzdF9nZXRt
ZXRob2RfZGVmYXVsdF9ub19mZChzZWxmLCBtb25rZXlwYXRjaCk6Ci0gICAgICAgIGZyb20gX3B5
dGVzdC5jYXB0dXJlIGltcG9ydCBweXRlc3RfYWRkb3B0aW9uCi0gICAgICAgIGZyb20gX3B5dGVz
dC5jb25maWcuYXJncGFyc2luZyBpbXBvcnQgUGFyc2VyCitkZWYgVGVlU3RkQ2FwdHVyZSgKKyAg
ICBvdXQ6IGJvb2wgPSBUcnVlLCBlcnI6IGJvb2wgPSBUcnVlLCBpbl86IGJvb2wgPSBUcnVlCisp
IC0+IE11bHRpQ2FwdHVyZVtzdHJdOgorICAgIHJldHVybiBjYXB0dXJlLk11bHRpQ2FwdHVyZSgK
KyAgICAgICAgaW5fPWNhcHR1cmUuU3lzQ2FwdHVyZSgwLCB0ZWU9VHJ1ZSkgaWYgaW5fIGVsc2Ug
Tm9uZSwKKyAgICAgICAgb3V0PWNhcHR1cmUuU3lzQ2FwdHVyZSgxLCB0ZWU9VHJ1ZSkgaWYgb3V0
IGVsc2UgTm9uZSwKKyAgICAgICAgZXJyPWNhcHR1cmUuU3lzQ2FwdHVyZSgyLCB0ZWU9VHJ1ZSkg
aWYgZXJyIGVsc2UgTm9uZSwKKyAgICApCiAKLSAgICAgICAgcGFyc2VyID0gUGFyc2VyKCkKLSAg
ICAgICAgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpCi0gICAgICAgIGRlZmF1bHQgPSBwYXJzZXIu
X2dyb3Vwc1swXS5vcHRpb25zWzBdLmRlZmF1bHQKLSAgICAgICAgYXNzZXJ0IGRlZmF1bHQgPT0g
ImZkIiBpZiBoYXNhdHRyKG9zLCAiZHVwIikgZWxzZSAic3lzIgotICAgICAgICBwYXJzZXIgPSBQ
YXJzZXIoKQotICAgICAgICBtb25rZXlwYXRjaC5kZWxhdHRyKG9zLCAiZHVwIiwgcmFpc2luZz1G
YWxzZSkKLSAgICAgICAgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpCi0gICAgICAgIGFzc2VydCBw
YXJzZXIuX2dyb3Vwc1swXS5vcHRpb25zWzBdLmRlZmF1bHQgPT0gInN5cyIKIAotICAgIEBuZWVk
c29zZHVwCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAotICAgICAgICAibWV0aG9kIiwg
WyJubyIsICJzeXMiLCBweXRlc3QubWFyay5za2lwaWYoJ25vdCBoYXNhdHRyKG9zLCAiZHVwIikn
LCAiZmQiKV0KLSAgICApCitjbGFzcyBUZXN0Q2FwdHVyZU1hbmFnZXI6CisgICAgQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJtZXRob2QiLCBbIm5vIiwgInN5cyIsICJmZCJdKQogICAgIGRlZiB0
ZXN0X2NhcHR1cmluZ19iYXNpY19hcGkoc2VsZiwgbWV0aG9kKToKICAgICAgICAgY2Fwb3V0ZXIg
PSBTdGRDYXB0dXJlRkQoKQogICAgICAgICBvbGQgPSBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyLCBz
eXMuc3RkaW4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY2FwbWFuID0gQ2FwdHVyZU1hbmFn
ZXIobWV0aG9kKQogICAgICAgICAgICAgY2FwbWFuLnN0YXJ0X2dsb2JhbF9jYXB0dXJpbmcoKQot
ICAgICAgICAgICAgb3V0ZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQorICAg
ICAgICAgICAgY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAgICAgICAgb3V0
ZXJyID0gY2FwbWFuLnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQogICAgICAgICAgICAgYXNzZXJ0IG91
dGVyciA9PSAoIiIsICIiKQotICAgICAgICAgICAgb3V0ZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xv
YmFsX2NhcHR1cmUoKQorICAgICAgICAgICAgY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUo
KQorICAgICAgICAgICAgb3V0ZXJyID0gY2FwbWFuLnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQogICAg
ICAgICAgICAgYXNzZXJ0IG91dGVyciA9PSAoIiIsICIiKQogICAgICAgICAgICAgcHJpbnQoImhl
bGxvIikKLSAgICAgICAgICAgIG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1
cmUoKQorICAgICAgICAgICAgY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQorICAgICAg
ICAgICAgb3V0LCBlcnIgPSBjYXBtYW4ucmVhZF9nbG9iYWxfY2FwdHVyZSgpCiAgICAgICAgICAg
ICBpZiBtZXRob2QgPT0gIm5vIjoKICAgICAgICAgICAgICAgICBhc3NlcnQgb2xkID09IChzeXMu
c3Rkb3V0LCBzeXMuc3RkZXJyLCBzeXMuc3RkaW4pCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIGFzc2VydCBub3Qgb3V0CiAgICAgICAgICAgICBjYXBtYW4ucmVzdW1lX2dsb2Jh
bF9jYXB0dXJlKCkKICAgICAgICAgICAgIHByaW50KCJoZWxsbyIpCi0gICAgICAgICAgICBvdXQs
IGVyciA9IGNhcG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKKyAgICAgICAgICAgIGNhcG1h
bi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKCkKKyAgICAgICAgICAgIG91dCwgZXJyID0gY2FwbWFu
LnJlYWRfZ2xvYmFsX2NhcHR1cmUoKQogICAgICAgICAgICAgaWYgbWV0aG9kICE9ICJubyI6CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0IG91dCA9PSAiaGVsbG9cbiIKICAgICAgICAgICAgIGNhcG1h
bi5zdG9wX2dsb2JhbF9jYXB0dXJpbmcoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAg
Y2Fwb3V0ZXIuc3RvcF9jYXB0dXJpbmcoKQogCi0gICAgQG5lZWRzb3NkdXAKICAgICBkZWYgdGVz
dF9pbml0X2NhcHR1cmluZyhzZWxmKToKICAgICAgICAgY2Fwb3V0ZXIgPSBTdGRDYXB0dXJlRkQo
KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjYXBtYW4gPSBDYXB0dXJlTWFuYWdlcigiZmQi
KQogICAgICAgICAgICAgY2FwbWFuLnN0YXJ0X2dsb2JhbF9jYXB0dXJpbmcoKQotICAgICAgICAg
ICAgcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvciwgImNhcG1hbi5zdGFydF9nbG9iYWxfY2Fw
dHVyaW5nKCkiKQorICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvciwgY2Fw
bWFuLnN0YXJ0X2dsb2JhbF9jYXB0dXJpbmcpCiAgICAgICAgICAgICBjYXBtYW4uc3RvcF9nbG9i
YWxfY2FwdHVyaW5nKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGNhcG91dGVyLnN0
b3BfY2FwdHVyaW5nKCkKQEAgLTEwNSwyMSArOTcsMTUgQEAgY2xhc3MgVGVzdENhcHR1cmVNYW5h
Z2VyKG9iamVjdCk6CiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibWV0aG9kIiwgWyJmZCIs
ICJzeXMiXSkKIGRlZiB0ZXN0X2NhcHR1cmluZ191bmljb2RlKHRlc3RkaXIsIG1ldGhvZCk6Ci0g
ICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpIGFuZCBzeXMucHlweV92ZXJz
aW9uX2luZm8gPCAoMiwgMik6Ci0gICAgICAgIHB5dGVzdC54ZmFpbCgiZG9lcyBub3Qgd29yayBv
biBweXB5IDwgMi4yIikKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKLSAgICAg
ICAgb2JqID0gIidiXHUwMGY2eSciCi0gICAgZWxzZToKLSAgICAgICAgb2JqID0gInUnXHUwMGY2
eSciCisgICAgb2JqID0gIidiXHUwMGY2eSciCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAiIiIKLSAgICAgICAgIyBjb2Rpbmc9dXRmOAorICAgICAgICAiIiJcCiAgICAgICAgICMg
dGFrZW4gZnJvbSBpc3N1ZSAyMjcgZnJvbSBub3NldGVzdHMKICAgICAgICAgZGVmIHRlc3RfdW5p
Y29kZSgpOgogICAgICAgICAgICAgaW1wb3J0IHN5cwotICAgICAgICAgICAgcHJpbnQgKHN5cy5z
dGRvdXQpCi0gICAgICAgICAgICBwcmludCAoJXMpCi0gICAgIiIiCisgICAgICAgICAgICBwcmlu
dChzeXMuc3Rkb3V0KQorICAgICAgICAgICAgcHJpbnQoJXMpCisgICAgICAgICIiIgogICAgICAg
ICAlIG9iagogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jYXB0dXJl
PSVzIiAlIG1ldGhvZCkKQEAgLTEyOSwxMCArMTE1LDEwIEBAIGRlZiB0ZXN0X2NhcHR1cmluZ191
bmljb2RlKHRlc3RkaXIsIG1ldGhvZCk6CiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1ldGhv
ZCIsIFsiZmQiLCAic3lzIl0pCiBkZWYgdGVzdF9jYXB0dXJpbmdfYnl0ZXNfaW5fdXRmOF9lbmNv
ZGluZyh0ZXN0ZGlyLCBtZXRob2QpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAg
IiIiCisgICAgICAgICIiIlwKICAgICAgICAgZGVmIHRlc3RfdW5pY29kZSgpOgotICAgICAgICAg
ICAgcHJpbnQgKCdiXFx1MDBmNnknKQotICAgICIiIgorICAgICAgICAgICAgcHJpbnQoJ2JcXHUw
MGY2eScpCisgICAgICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1jYXB0dXJlPSVzIiAlIG1ldGhvZCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqMSBwYXNzZWQqIl0pCkBAIC0xNDEsMjggKzEyNywzNyBAQCBkZWYgdGVzdF9jYXB0dXJp
bmdfYnl0ZXNfaW5fdXRmOF9lbmNvZGluZyh0ZXN0ZGlyLCBtZXRob2QpOgogZGVmIHRlc3RfY29s
bGVjdF9jYXB0dXJpbmcodGVzdGRpcik6CiAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAg
ICAgICAgIiIiCi0gICAgICAgIHByaW50ICgiY29sbGVjdCAlcyBmYWlsdXJlIiAlIDEzKQorICAg
ICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgcHJpbnQoImNvbGxlY3QgJXMgZmFpbHVyZSIgJSAx
MykKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiY29sbGVjdCAlc19zdGRlcnIgZmFpbHVyZSIg
JSAxMykKICAgICAgICAgaW1wb3J0IHh5ejQyMTIzCiAgICAgIiIiCiAgICAgKQogICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKkNhcHR1cmVkIHN0ZG91dCoiLCAiKmNvbGxlY3QgMTMgZmFpbHVyZSoiXSkKLQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIipDYXB0
dXJlZCBzdGRvdXQqIiwKKyAgICAgICAgICAgICJjb2xsZWN0IDEzIGZhaWx1cmUiLAorICAgICAg
ICAgICAgIipDYXB0dXJlZCBzdGRlcnIqIiwKKyAgICAgICAgICAgICJjb2xsZWN0IDEzX3N0ZGVy
ciBmYWlsdXJlIiwKKyAgICAgICAgXQorICAgICkKIAotY2xhc3MgVGVzdFBlclRlc3RDYXB0dXJp
bmcob2JqZWN0KToKIAorY2xhc3MgVGVzdFBlclRlc3RDYXB0dXJpbmc6CiAgICAgZGVmIHRlc3Rf
Y2FwdHVyZV9hbmRfZml4dHVyZXMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBzZXR1cF9tb2R1
bGUobW9kKToKLSAgICAgICAgICAgICAgICBwcmludCAoInNldHVwIG1vZHVsZSIpCisgICAgICAg
ICAgICAgICAgcHJpbnQoInNldHVwIG1vZHVsZSIpCiAgICAgICAgICAgICBkZWYgc2V0dXBfZnVu
Y3Rpb24oZnVuY3Rpb24pOgotICAgICAgICAgICAgICAgIHByaW50ICgic2V0dXAgIiArIGZ1bmN0
aW9uLl9fbmFtZV9fKQorICAgICAgICAgICAgICAgIHByaW50KCJzZXR1cCAiICsgZnVuY3Rpb24u
X19uYW1lX18pCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMSgpOgotICAgICAgICAgICAgICAg
IHByaW50ICgiaW4gZnVuYzEiKQorICAgICAgICAgICAgICAgIHByaW50KCJpbiBmdW5jMSIpCiAg
ICAgICAgICAgICAgICAgYXNzZXJ0IDAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMyKCk6Ci0g
ICAgICAgICAgICAgICAgcHJpbnQgKCJpbiBmdW5jMiIpCisgICAgICAgICAgICAgICAgcHJpbnQo
ImluIGZ1bmMyIikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAogICAgICAgICAiIiIKICAgICAg
ICAgKQpAQCAtMTgzLDE0ICsxNzgsMTQgQEAgY2xhc3MgVGVzdFBlclRlc3RDYXB0dXJpbmcob2Jq
ZWN0KToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICAg
ICAgZGVmIHNldHVwX21vZHVsZShmdW5jKToKLSAgICAgICAgICAgICAgICBwcmludCAoIm1vZHVs
ZS1zZXR1cCIpCisgICAgICAgICAgICAgICAgcHJpbnQoIm1vZHVsZS1zZXR1cCIpCiAgICAgICAg
ICAgICBkZWYgc2V0dXBfZnVuY3Rpb24oZnVuYyk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJm
dW5jdGlvbi1zZXR1cCIpCisgICAgICAgICAgICAgICAgcHJpbnQoImZ1bmN0aW9uLXNldHVwIikK
ICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICBwcmludCAoImlu
IGZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgICBwcmludCgiaW4gZnVuY3Rpb24iKQogICAgICAg
ICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICAgICBkZWYgdGVhcmRvd25fZnVuY3Rpb24oZnVu
Yyk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJpbiB0ZWFyZG93biIpCisgICAgICAgICAgICAg
ICAgcHJpbnQoImluIHRlYXJkb3duIikKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKQEAgLTIwOSw5ICsyMDQsOSBAQCBjbGFzcyBU
ZXN0UGVyVGVzdENhcHR1cmluZyhvYmplY3QpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlm
aWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMSgpOgotICAg
ICAgICAgICAgICAgIHByaW50ICgiaW4gZnVuYzEiKQorICAgICAgICAgICAgICAgIHByaW50KCJp
biBmdW5jMSIpCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jMigpOgotICAgICAgICAgICAgICAg
IHByaW50ICgiaW4gZnVuYzIiKQorICAgICAgICAgICAgICAgIHByaW50KCJpbiBmdW5jMiIpCiAg
ICAgICAgICAgICAgICAgYXNzZXJ0IDAKICAgICAgICAgIiIiCiAgICAgICAgICkKQEAgLTIyNCwx
MiArMjE5LDEyIEBAIGNsYXNzIFRlc3RQZXJUZXN0Q2FwdHVyaW5nKG9iamVjdCk6CiAgICAgICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRl
ZiBzZXR1cF9mdW5jdGlvbihmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJzZXR1
cCBmdW5jMSIpCisgICAgICAgICAgICAgICAgcHJpbnQoInNldHVwIGZ1bmMxIikKICAgICAgICAg
ICAgIGRlZiB0ZWFyZG93bl9mdW5jdGlvbihmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgcHJp
bnQgKCJ0ZWFyZG93biBmdW5jMSIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJkb3duIGZ1
bmMxIikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAogICAgICAgICAgICAgZGVmIHRlc3RfZnVu
YzEoKToKLSAgICAgICAgICAgICAgICBwcmludCAoImluIGZ1bmMxIikKKyAgICAgICAgICAgICAg
ICBwcmludCgiaW4gZnVuYzEiKQogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAg
ICAgICAgICkKQEAgLTI0OSw3ICsyNDQsNyBAQCBjbGFzcyBUZXN0UGVyVGVzdENhcHR1cmluZyhv
YmplY3QpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBkZWYgdGVhcmRvd25fbW9kdWxlKG1vZCk6Ci0gICAgICAgICAgICAgICAg
cHJpbnQgKCJ0ZWFyZG93biBtb2R1bGUiKQorICAgICAgICAgICAgICAgIHByaW50KCJ0ZWFyZG93
biBtb2R1bGUiKQogICAgICAgICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICAgICBkZWYgdGVz
dF9mdW5jKCk6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtMjY3LDE2ICsyNjIsMTYgQEAgY2xh
c3MgVGVzdFBlclRlc3RDYXB0dXJpbmcob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X2NhcHR1cmlu
Z19vdXRlcnIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxl
KAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBpbXBvcnQg
c3lzCiAgICAgICAgICAgICBkZWYgdGVzdF9jYXB0dXJpbmcoKToKLSAgICAgICAgICAgICAgICBw
cmludCAoNDIpCisgICAgICAgICAgICAgICAgcHJpbnQoNDIpCiAgICAgICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZShzdHIoMjMpKQogICAgICAgICAgICAgZGVmIHRlc3RfY2FwdHVyaW5nX2Vy
cm9yKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKDEpCisgICAgICAgICAgICAgICAgcHJpbnQo
MSkKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0cigyKSkKICAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAg
ICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocDEpCiAgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKQEAgLTI5MywzNyArMjg4LDM2IEBAIGNsYXNzIFRl
c3RQZXJUZXN0Q2FwdHVyaW5nKG9iamVjdCk6CiAgICAgICAgICkKIAogCi1jbGFzcyBUZXN0TG9n
Z2luZ0ludGVyYWN0aW9uKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RMb2dnaW5nSW50ZXJhY3Rpb246
CiAgICAgZGVmIHRlc3RfbG9nZ2luZ19zdHJlYW1fb3duZXJzaGlwKHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVzdF9sb2dnaW5nKCk6CiAgICAgICAgICAgICAg
ICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAg
ICAgICAgICAgc3RyZWFtID0gY2FwdHVyZS5DYXB0dXJlSU8oKQogICAgICAgICAgICAgICAgIGxv
Z2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN0cmVhbSkKICAgICAgICAgICAgICAgICBzdHJlYW0u
Y2xvc2UoKSAjIHRvIGZyZWUgbWVtb3J5L3JlbGVhc2UgcmVzb3VyY2VzCi0gICAgICAgICIiIgor
ICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3Rfc3VicHJvY2VzcyhwKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZGVyci5zdHIoKS5m
aW5kKCJhdGV4aXQiKSA9PSAtMQogCiAgICAgZGVmIHRlc3RfbG9nZ2luZ19hbmRfaW1tZWRpYXRl
X3NldHVwdGVhcmRvd24oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGlt
cG9ydCBsb2dnaW5nCiAgICAgICAgICAgICBkZWYgc2V0dXBfZnVuY3Rpb24oZnVuY3Rpb24pOgot
ICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybigiaGVsbG8xIikKKyAgICAgICAgICAgICAgICBs
b2dnaW5nLndhcm5pbmcoImhlbGxvMSIpCiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2xvZ2dpbmco
KToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvMiIpCisgICAgICAgICAgICAg
ICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzIiKQogICAgICAgICAgICAgICAgIGFzc2VydCAwCiAK
ICAgICAgICAgICAgIGRlZiB0ZWFyZG93bl9mdW5jdGlvbihmdW5jdGlvbik6Ci0gICAgICAgICAg
ICAgICAgbG9nZ2luZy53YXJuKCJoZWxsbzMiKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2Fy
bmluZygiaGVsbG8zIikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKKyAg
ICAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIGZvciBvcHRhcmdzIGluICgoIi0tY2Fw
dHVyZT1zeXMiLCksICgiLS1jYXB0dXJlPWZkIiwpKToKICAgICAgICAgICAgIHByaW50KG9wdGFy
Z3MpCkBAIC0zMzcsMTkgKzMzMSwxOSBAQCBjbGFzcyBUZXN0TG9nZ2luZ0ludGVyYWN0aW9uKG9i
amVjdCk6CiAKICAgICBkZWYgdGVzdF9sb2dnaW5nX2FuZF9jcm9zc3Njb3BlX2ZpeHR1cmVzKHNl
bGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAg
ICAgICAgICAgZGVmIHNldHVwX21vZHVsZShmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgbG9n
Z2luZy53YXJuKCJoZWxsbzEiKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiaGVs
bG8xIikKIAogICAgICAgICAgICAgZGVmIHRlc3RfbG9nZ2luZygpOgotICAgICAgICAgICAgICAg
IGxvZ2dpbmcud2FybigiaGVsbG8yIikKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmco
ImhlbGxvMiIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKIAogICAgICAgICAgICAgZGVmIHRl
YXJkb3duX21vZHVsZShmdW5jdGlvbik6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuKCJo
ZWxsbzMiKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiaGVsbG8zIikKICAgICAg
ICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIgogICAgICAg
ICApCiAgICAgICAgIGZvciBvcHRhcmdzIGluICgoIi0tY2FwdHVyZT1zeXMiLCksICgiLS1jYXB0
dXJlPWZkIiwpKToKICAgICAgICAgICAgIHByaW50KG9wdGFyZ3MpCkBAIC0zNjMsMzMgKzM1Nywz
MyBAQCBjbGFzcyBUZXN0TG9nZ2luZ0ludGVyYWN0aW9uKG9iamVjdCk6CiAKICAgICBkZWYgdGVz
dF9jb25mdGVzdGxvZ2dpbmdfaXNfc2hvd24oc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3Rk
aXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAg
ICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgICAgICAgICBsb2dnaW5nLmJhc2lj
Q29uZmlnKCkKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvNDM1IikKLSAgICAg
ICAgIiIiCisgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJoZWxsbzQzNSIpCisgICAg
ICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IGxvZ2dpbmcg
aXMgc3RpbGwgY2FwdHVyZWQgaW4gdGVzdHMKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3Rfc3VicHJvY2VzcygiLXMiLCAiLXAiLCAibm86Y2FwdHVyZWxvZyIpCi0gICAgICAgIGFz
c2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKICAgICAgICAgcmVzdWx0
LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiV0FSTklORypoZWxsbzQzNSoiXSkKICAgICAgICAgYXNz
ZXJ0ICJvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiIG5vdCBpbiByZXN1bHQuc3RkZXJyLnN0cigp
CiAKICAgICBkZWYgdGVzdF9jb25mdGVzdGxvZ2dpbmdfYW5kX3Rlc3RfbG9nZ2luZyhzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAgICAg
ICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoKQotICAgICAgICAiIiIKKyAgICAgICAgICAg
ICIiIgogICAgICAgICApCiAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgbG9nZ2luZyBpcyBzdGls
bCBjYXB0dXJlZCBpbiB0ZXN0cwogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVzdF9oZWxs
bygpOgogICAgICAgICAgICAgICAgIGltcG9ydCBsb2dnaW5nCi0gICAgICAgICAgICAgICAgbG9n
Z2luZy53YXJuKCJoZWxsbzQzMyIpCisgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJo
ZWxsbzQzMyIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCisgICAgICAg
ICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9z
dWJwcm9jZXNzKHAsICItcCIsICJubzpjYXB0dXJlbG9nIikKICAgICAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgIT0gMApAQCAtMzk3LDMwICszOTEsNjMgQEAgY2xhc3MgVGVzdExvZ2dpbmdJbnRlcmFj
dGlvbihvYmplY3QpOgogICAgICAgICBhc3NlcnQgInNvbWV0aGluZyIgbm90IGluIHJlc3VsdC5z
dGRlcnIuc3RyKCkKICAgICAgICAgYXNzZXJ0ICJvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiIG5v
dCBpbiByZXN1bHQuc3RkZXJyLnN0cigpCiAKKyAgICBkZWYgdGVzdF9sb2dnaW5nX2FmdGVyX2Nh
cF9zdG9wcGVkKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgK
KyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAg
ICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICAgICAgICAgIGxvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQorCisgICAgICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisg
ICAgICAgICAgICAgICAgZGVmIGxvZ19vbl90ZWFyZG93bigpOgorICAgICAgICAgICAgICAgICAg
ICB5aWVsZAorICAgICAgICAgICAgICAgICAgICBsb2cud2FybmluZygnTG9nZ2luZyBvbiB0ZWFy
ZG93bicpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICAjIG1ha2Ugc3VyZSB0
aGF0IGxvZ2dpbmcgaXMgc3RpbGwgY2FwdHVyZWQgaW4gdGVzdHMKKyAgICAgICAgcCA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgIGRlZiB0ZXN0X2hl
bGxvKGxvZ19vbl90ZWFyZG93bik6CisgICAgICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAg
ICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoImhlbGxvNDMzIikKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgMQorICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkKKyAg
ICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0X3N1YnByb2Nlc3MocCwgIi0tbG9nLWNsaS1sZXZlbCIsICJpbmZvIikKKyAgICAgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQgIT0gMAorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
CisgICAgICAgICAgICBbIipXQVJOSU5HKmhlbGxvNDMzKiIsICIqV0FSTklORypMb2dnaW5nIG9u
IHRlYXJkb3duKiJdCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICJB
dHRyaWJ1dGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAncmVzdW1l
X2NhcHR1cmluZyciCisgICAgICAgICAgICBub3QgaW4gcmVzdWx0LnN0ZGVyci5zdHIoKQorICAg
ICAgICApCiAKLWNsYXNzIFRlc3RDYXB0dXJlRml4dHVyZShvYmplY3QpOgogCitjbGFzcyBUZXN0
Q2FwdHVyZUZpeHR1cmU6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJvcHQiLCBbW10s
IFsiLXMiXV0pCiAgICAgZGVmIHRlc3Rfc3RkX2Z1bmN0aW9uYWwoc2VsZiwgdGVzdGRpciwgb3B0
KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKAotICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhjYXBz
eXMpOgotICAgICAgICAgICAgICAgIHByaW50ICg0MikKKyAgICAgICAgICAgICAgICBwcmludCg0
MikKICAgICAgICAgICAgICAgICBvdXQsIGVyciA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkKICAgICAg
ICAgICAgICAgICBhc3NlcnQgb3V0LnN0YXJ0c3dpdGgoIjQyIikKLSAgICAgICAgIiIiLAotICAg
ICAgICAgICAgKm9wdAorICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgKm9wdCwKICAgICAg
ICAgKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAogICAgIGRlZiB0
ZXN0X2NhcHN5c2NhcGZkKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBk
ZWYgdGVzdF9vbmUoY2Fwc3lzLCBjYXBmZCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAg
ICAgICAgZGVmIHRlc3RfdHdvKGNhcGZkLCBjYXBzeXMpOgogICAgICAgICAgICAgICAgIHBhc3MK
LSAgICAgICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoCkBAIC00MjksNyArNDU2LDcgQEAgY2xhc3MgVGVzdENhcHR1cmVGaXh0dXJlKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgIkUqY2FwZmQqY2Fwc3lzKnNhbWUqdGltZSoiLAogICAgICAgICAg
ICAgICAgICIqRVJST1Iqc2V0dXAqdGVzdF90d28qIiwKICAgICAgICAgICAgICAgICAiRSpjYXBz
eXMqY2FwZmQqc2FtZSp0aW1lKiIsCi0gICAgICAgICAgICAgICAgIioyIGVycm9yKiIsCisgICAg
ICAgICAgICAgICAgIioyIGVycm9ycyoiLAogICAgICAgICAgICAgXQogICAgICAgICApCiAKQEAg
LTQzOCwzMCArNDY1LDMwIEBAIGNsYXNzIFRlc3RDYXB0dXJlRml4dHVyZShvYmplY3QpOgogICAg
ICAgICBpbiB0aGUgc2FtZSB0ZXN0IGlzIGFuIGVycm9yLgogICAgICAgICAiIiIKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAg
ICAgICAgICAgICBkZWYgdGVzdF9vbmUoY2Fwc3lzLCByZXF1ZXN0KToKICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgiY2FwZmQiKQogICAgICAgICAgICAgZGVmIHRlc3Rf
dHdvKGNhcGZkLCByZXF1ZXN0KToKICAgICAgICAgICAgICAgICByZXF1ZXN0LmdldGZpeHR1cmV2
YWx1ZSgiY2Fwc3lzIikKLSAgICAgICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAiKnRlc3Rf
b25lKiIsCi0gICAgICAgICAgICAgICAgIipjYXBzeXMqY2FwZmQqc2FtZSp0aW1lKiIsCisgICAg
ICAgICAgICAgICAgIkUgKiBjYW5ub3QgdXNlIGNhcGZkIGFuZCBjYXBzeXMgYXQgdGhlIHNhbWUg
dGltZSIsCiAgICAgICAgICAgICAgICAgIip0ZXN0X3R3byoiLAotICAgICAgICAgICAgICAgICIq
Y2FwZmQqY2Fwc3lzKnNhbWUqdGltZSoiLAorICAgICAgICAgICAgICAgICJFICogY2Fubm90IHVz
ZSBjYXBzeXMgYW5kIGNhcGZkIGF0IHRoZSBzYW1lIHRpbWUiLAogICAgICAgICAgICAgICAgICIq
MiBmYWlsZWQgaW4qIiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rf
Y2Fwc3lzY2FwZmRiaW5hcnkoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAg
IGRlZiB0ZXN0X29uZShjYXBzeXMsIGNhcGZkYmluYXJ5KToKICAgICAgICAgICAgICAgICBwYXNz
Ci0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QocCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKApAQCAtNDcxLDM0ICs0OTgsMzkgQEAgY2xhc3MgVGVzdENhcHR1cmVGaXh0dXJlKG9iamVj
dCk6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJtZXRob2QiLCBbInN5cyIsICJmZCJd
KQogICAgIGRlZiB0ZXN0X2NhcHR1cmVfaXNfcmVwcmVzZW50ZWRfb25fZmFpbHVyZV9pc3N1ZTEy
OChzZWxmLCB0ZXN0ZGlyLCBtZXRob2QpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxl
KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhjYXAlcyk6Ci0g
ICAgICAgICAgICAgICAgcHJpbnQgKCJ4eHg0Mnh4eCIpCisgICAgICAgICAgICAiIiJcCisgICAg
ICAgICAgICBkZWYgdGVzdF9oZWxsbyhjYXB7fSk6CisgICAgICAgICAgICAgICAgcHJpbnQoInh4
eDQyeHh4IikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKLSAgICAgICAg
ICAgICUgbWV0aG9kCisgICAgICAgICAgICAiIiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIG1l
dGhvZAorICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KHApCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbInh4eDQy
eHh4Il0pCiAKLSAgICBAbmVlZHNvc2R1cAogICAgIGRlZiB0ZXN0X3N0ZGZkX2Z1bmN0aW9uYWwo
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bnNvdXJj
ZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICAgICAgIiIiXAogICAgICAgICAgICAgZGVmIHRl
c3RfaGVsbG8oY2FwZmQpOgogICAgICAgICAgICAgICAgIGltcG9ydCBvcwotICAgICAgICAgICAg
ICAgIG9zLndyaXRlKDEsICI0MiIuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIG9z
LndyaXRlKDEsIGIiNDIiKQogICAgICAgICAgICAgICAgIG91dCwgZXJyID0gY2FwZmQucmVhZG91
dGVycigpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IG91dC5zdGFydHN3aXRoKCI0MiIpCiAgICAg
ICAgICAgICAgICAgY2FwZmQuY2xvc2UoKQotICAgICAgICAiIiIKKyAgICAgICAgICAgICIiIgog
ICAgICAgICApCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCi0gICAg
QG5lZWRzb3NkdXAKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm5sIiwgKCJcbiIsICJc
clxuIiwgIlxyIikpCisgICAgZGVmIHRlc3RfY2FmZF9wcmVzZXJ2ZXNfbmV3bGluZXMoc2VsZiwg
Y2FwZmQsIG5sKToKKyAgICAgICAgcHJpbnQoInRlc3QiLCBlbmQ9bmwpCisgICAgICAgIG91dCwg
ZXJyID0gY2FwZmQucmVhZG91dGVycigpCisgICAgICAgIGFzc2VydCBvdXQuZW5kc3dpdGgobmwp
CisKICAgICBkZWYgdGVzdF9jYXBmZGJpbmFyeShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcmVw
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKAotICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhjYXBmZGJpbmFyeSk6CiAgICAg
ICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICAgICAgIyBzb21lIGxpa2VseSB1bi1k
ZWNvZGFibGUgYnl0ZXMKQEAgLTUwNiw3NCArNTM4LDczIEBAIGNsYXNzIFRlc3RDYXB0dXJlRml4
dHVyZShvYmplY3QpOgogICAgICAgICAgICAgICAgIG91dCwgZXJyID0gY2FwZmRiaW5hcnkucmVh
ZG91dGVycigpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IG91dCA9PSBiJ1xceGZlXFx4OThcXHgy
MCcKICAgICAgICAgICAgICAgICBhc3NlcnQgZXJyID09IGInJwotICAgICAgICAiIiIKKyAgICAg
ICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3Nl
ZD0xKQogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAgICAgc3lzLnZlcnNpb25faW5m
byA8ICgzLCksIHJlYXNvbj0ib25seSBoYXZlIGNhcHN5c2JpbmFyeSBpbiBweXRob24gMyIKLSAg
ICApCiAgICAgZGVmIHRlc3RfY2Fwc3lzYmluYXJ5KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBy
ZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCi0gICAgICAgICAgICAiIiIKKyAgICAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICByIiIiCiAgICAgICAgICAg
ICBkZWYgdGVzdF9oZWxsbyhjYXBzeXNiaW5hcnkpOgogICAgICAgICAgICAgICAgIGltcG9ydCBz
eXMKLSAgICAgICAgICAgICAgICAjIHNvbWUgbGlrZWx5IHVuLWRlY29kYWJsZSBieXRlcwotICAg
ICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGInXFx4ZmVcXHg5OFxceDIwJykK
KworICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGInaGVsbG8nKQorCisg
ICAgICAgICAgICAgICAgIyBTb21lIGxpa2VseSB1bi1kZWNvZGFibGUgYnl0ZXMuCisgICAgICAg
ICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYidceGZlXHg5OFx4MjAnKQorCisgICAg
ICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIuZmx1c2goKQorCisgICAgICAgICAgICAgICAg
IyBFbnN1cmUgd3JpdGluZyBpbiB0ZXh0IG1vZGUgc3RpbGwgd29ya3MgYW5kIGlzIGNhcHR1cmVk
LgorICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0
L2lzc3Vlcy82ODcxCisgICAgICAgICAgICAgICAgcHJpbnQoIndvcmxkIiwgZmx1c2g9VHJ1ZSkK
KwogICAgICAgICAgICAgICAgIG91dCwgZXJyID0gY2Fwc3lzYmluYXJ5LnJlYWRvdXRlcnIoKQot
ICAgICAgICAgICAgICAgIGFzc2VydCBvdXQgPT0gYidcXHhmZVxceDk4XFx4MjAnCisgICAgICAg
ICAgICAgICAgYXNzZXJ0IG91dCA9PSBiJ2hlbGxvXHhmZVx4OThceDIwd29ybGRcbicKICAgICAg
ICAgICAgICAgICBhc3NlcnQgZXJyID09IGInJwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAotICAgIEBweXRlc3QubWFyay5z
a2lwaWYoCi0gICAgICAgIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJvbmx5IGhh
dmUgY2Fwc3lzYmluYXJ5IGluIHB5dGhvbiAzIgotICAgICkKLSAgICBkZWYgdGVzdF9jYXBzeXNi
aW5hcnlfZm9yYmlkZGVuX2luX3B5dGhvbjIoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICAgICBwcmludCgic3Rkb3V0IGFmdGVyIikKKyAg
ICAgICAgICAgICAgICBwcmludCgic3RkZXJyIGFmdGVyIiwgZmlsZT1zeXMuc3RkZXJyKQogICAg
ICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhjYXBzeXNiaW5hcnkpOgot
ICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdChzdHIocDEpLCAiLXJBIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqdGVzdF9oZWxsbyoiLAotICAgICAg
ICAgICAgICAgICIqY2Fwc3lzYmluYXJ5IGlzIG9ubHkgc3VwcG9ydGVkIG9uIHB5dGhvbiAzKiIs
Ci0gICAgICAgICAgICAgICAgIioxIGVycm9yIGluKiIsCisgICAgICAgICAgICAgICAgIiotIENh
cHR1cmVkIHN0ZG91dCBjYWxsIC0qIiwKKyAgICAgICAgICAgICAgICAic3Rkb3V0IGFmdGVyIiwK
KyAgICAgICAgICAgICAgICAiKi0gQ2FwdHVyZWQgc3RkZXJyIGNhbGwgLSoiLAorICAgICAgICAg
ICAgICAgICJzdGRlcnIgYWZ0ZXIiLAorICAgICAgICAgICAgICAgICIqPSAxIHBhc3NlZCBpbiAq
IiwKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfcGFydGlhbF9zZXR1
cF9mYWlsdXJlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxl
KAotICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVz
dF9oZWxsbyhjYXBzeXMsIG1pc3NpbmdhcmcpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAg
ICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdChwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
dGVzdF9wYXJ0aWFsX3NldHVwX2ZhaWx1cmUqIiwgIioxIGVycm9yKiJdKQogCi0gICAgQG5lZWRz
b3NkdXAKICAgICBkZWYgdGVzdF9rZXlib2FyZGludGVycnVwdF9kaXNhYmxlc19jYXB0dXJpbmco
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgICIiIlwKICAgICAgICAgICAgIGRlZiB0ZXN0X2hlbGxvKGNh
cGZkKToKICAgICAgICAgICAgICAgICBpbXBvcnQgb3MKLSAgICAgICAgICAgICAgICBvcy53cml0
ZSgxLCBzdHIoNDIpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBvcy53cml0ZSgx
LCBiJzQyJykKICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdCgpCi0gICAg
ICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcyhwKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqS2V5Ym9hcmRJbnRlcnJ1cHQqIl0pCiAgICAgICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IDIKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTE0CiAgICAgZGVmIHRlc3RfY2FwdHVy
ZV9hbmRfbG9nZ2luZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiIzE0IiIiCiAgICAgICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICIi
IlwKICAgICAgICAgICAgIGltcG9ydCBsb2dnaW5nCiAgICAgICAgICAgICBkZWYgdGVzdF9sb2co
Y2Fwc3lzKToKICAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCd4JykKQEAgLTU4Niw3ICs2
MTcsNyBAQCBjbGFzcyBUZXN0Q2FwdHVyZUZpeHR1cmUob2JqZWN0KToKICAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoIm5vX2NhcHR1cmUiLCBbVHJ1ZSwgRmFsc2VdKQogICAgIGRlZiB0ZXN0
X2Rpc2FibGVkX2NhcHR1cmVfZml4dHVyZShzZWxmLCB0ZXN0ZGlyLCBmaXh0dXJlLCBub19jYXB0
dXJlKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICAiIiJcCiAgICAgICAgICAgICBkZWYgdGVzdF9kaXNhYmxlZCh7Zml4dHVyZX0pOgog
ICAgICAgICAgICAgICAgIHByaW50KCdjYXB0dXJlZCBiZWZvcmUnKQogICAgICAgICAgICAgICAg
IHdpdGgge2ZpeHR1cmV9LmRpc2FibGVkKCk6CkBAIC02MDIsMjYgKzYzMyw0OCBAQCBjbGFzcyBU
ZXN0Q2FwdHVyZUZpeHR1cmUob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICBhcmdzID0gKCIt
cyIsKSBpZiBub19jYXB0dXJlIGVsc2UgKCkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3Rfc3VicHJvY2VzcygqYXJncykKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAqd2hpbGUgY2FwdHVyZSBpcyBkaXNh
YmxlZCoKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0ICJjYXB0dXJlZCBi
ZWZvcmUiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgICAgIGFzc2VydCAiY2FwdHVy
ZWQgYWZ0ZXIiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIip3aGlsZSBjYXB0dXJlIGlzIGRpc2FibGVkKiIsICIqPSAyIHBh
c3NlZCBpbiAqIl0pCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqY2Fw
dHVyZWQgYmVmb3JlKiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
Y2FwdHVyZWQgYWZ0ZXIqIikKICAgICAgICAgaWYgbm9fY2FwdHVyZToKICAgICAgICAgICAgIGFz
c2VydCAidGVzdF9ub3JtYWwgZXhlY3V0ZWQiIGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCAidGVzdF9ub3JtYWwgZXhlY3V0ZWQiIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0
Y2hfbGluZSgiKnRlc3Rfbm9ybWFsIGV4ZWN1dGVkKiIpCiAKLSAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImZpeHR1cmUiLCBbImNhcHN5cyIsICJjYXBmZCJdKQotICAgIGRlZiB0ZXN0X2Zp
eHR1cmVfdXNlX2J5X290aGVyX2ZpeHR1cmVzKHNlbGYsIHRlc3RkaXIsIGZpeHR1cmUpOgotICAg
ICAgICAiIiIKLSAgICAgICAgRW5zdXJlIHRoYXQgY2Fwc3lzIGFuZCBjYXBmZCBjYW4gYmUgdXNl
ZCBieSBvdGhlciBmaXh0dXJlcyBkdXJpbmcgc2V0dXAgYW5kIHRlYXJkb3duLgorICAgIGRlZiB0
ZXN0X2Rpc2FibGVkX2NhcHR1cmVfZml4dHVyZV90d2ljZShzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGly
KSAtPiBOb25lOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW4gaW5uZXIgZGlzYWJsZWQoKSBleGl0
IGRvZXNuJ3QgdW5kbyBhbiBvdXRlciBkaXNhYmxlZCgpLgorCisgICAgICAgIElzc3VlICM3MTQ4
LgogICAgICAgICAiIiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCi0gICAgICAgICAgICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisg
ICAgICAgICAgICBkZWYgdGVzdF9kaXNhYmxlZChjYXBmZCk6CisgICAgICAgICAgICAgICAgcHJp
bnQoJ2NhcHR1cmVkIGJlZm9yZScpCisgICAgICAgICAgICAgICAgd2l0aCBjYXBmZC5kaXNhYmxl
ZCgpOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnd2hpbGUgY2FwdHVyZSBpcyBkaXNhYmxl
ZCAxJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBjYXBmZC5kaXNhYmxlZCgpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnQoJ3doaWxlIGNhcHR1cmUgaXMgZGlzYWJsZWQgMicpCisg
ICAgICAgICAgICAgICAgICAgIHByaW50KCd3aGlsZSBjYXB0dXJlIGlzIGRpc2FibGVkIDEgYWZ0
ZXInKQorICAgICAgICAgICAgICAgIHByaW50KCdjYXB0dXJlZCBhZnRlcicpCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IGNhcGZkLnJlYWRvdXRlcnIoKSA9PSAoJ2NhcHR1cmVkIGJlZm9yZVxcbmNh
cHR1cmVkIGFmdGVyXFxuJywgJycpCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIip3aGls
ZSBjYXB0dXJlIGlzIGRpc2FibGVkIDEiLAorICAgICAgICAgICAgICAgICIqd2hpbGUgY2FwdHVy
ZSBpcyBkaXNhYmxlZCAyIiwKKyAgICAgICAgICAgICAgICAiKndoaWxlIGNhcHR1cmUgaXMgZGlz
YWJsZWQgMSBhZnRlciIsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgY29uc2VjdXRpdmU9
VHJ1ZSwKKyAgICAgICAgKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaXh0dXJl
IiwgWyJjYXBzeXMiLCAiY2FwZmQiXSkKKyAgICBkZWYgdGVzdF9maXh0dXJlX3VzZV9ieV9vdGhl
cl9maXh0dXJlcyhzZWxmLCB0ZXN0ZGlyLCBmaXh0dXJlKToKKyAgICAgICAgIiIiRW5zdXJlIHRo
YXQgY2Fwc3lzIGFuZCBjYXBmZCBjYW4gYmUgdXNlZCBieSBvdGhlciBmaXh0dXJlcyBkdXJpbmcK
KyAgICAgICAgc2V0dXAgYW5kIHRlYXJkb3duLiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CiAKQEAgLTY0OCwxOSArNzAxLDQ3IEBAIGNsYXNzIFRlc3RDYXB0dXJl
Rml4dHVyZShvYmplY3QpOgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQotICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoIioxIHBhc3NlZCoiKQotICAgICAgICBhc3NlcnQgInN0ZG91dCBjb250
ZW50cyBiZWdpbiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKLSAgICAgICAgYXNzZXJ0ICJz
dGRlcnIgY29udGVudHMgYmVnaW4iIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKKyAgICAgICAgcmVz
dWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipzdGRvdXQgY29udGVudHMgYmVnaW4qIikKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipzdGRlcnIgY29udGVudHMgYmVn
aW4qIikKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiY2FwIiwgWyJjYXBzeXMiLCAi
Y2FwZmQiXSkKKyAgICBkZWYgdGVzdF9maXh0dXJlX3VzZV9ieV9vdGhlcl9maXh0dXJlc190ZWFy
ZG93bihzZWxmLCB0ZXN0ZGlyLCBjYXApOgorICAgICAgICAiIiJFbnN1cmUgd2UgY2FuIGFjY2Vz
cyBzZXR1cCBhbmQgdGVhcmRvd24gYnVmZmVycyBmcm9tIHRlYXJkb3duIHdoZW4gdXNpbmcgY2Fw
c3lzL2NhcGZkICgjIzMwMzMpIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAg
ICAgICAgICIiIlwKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKKyAgICAgICAgICAgIGltcG9ydCBvcworCisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1
cmUoKQorICAgICAgICAgICAgZGVmIGZpeCh7Y2FwfSk6CisgICAgICAgICAgICAgICAgcHJpbnQo
InNldHVwIG91dCIpCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgic2V0dXAgZXJy
XFxuIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIG91dCwgZXJyID0g
e2NhcH0ucmVhZG91dGVycigpCisgICAgICAgICAgICAgICAgYXNzZXJ0IG91dCA9PSAnc2V0dXAg
b3V0XFxuY2FsbCBvdXRcXG4nCisgICAgICAgICAgICAgICAgYXNzZXJ0IGVyciA9PSAnc2V0dXAg
ZXJyXFxuY2FsbCBlcnJcXG4nCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2EoZml4KToKKyAgICAg
ICAgICAgICAgICBwcmludCgiY2FsbCBvdXQiKQorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoImNhbGwgZXJyXFxuIikKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAg
ICBjYXA9Y2FwCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgcmVwcmVjID0gdGVz
dGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEp
CiAKIAogZGVmIHRlc3Rfc2V0dXBfZmFpbHVyZV9kb2VzX25vdF9raWxsX2NhcHR1cmluZyh0ZXN0
ZGlyKToKICAgICBzdWIxID0gdGVzdGRpci5ta3B5ZGlyKCJzdWIxIikKICAgICBzdWIxLmpvaW4o
ImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAg
ICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYg
cHl0ZXN0X3J1bnRlc3Rfc2V0dXAoaXRlbSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcig0MikKICAgICAgICAgICAgICIiIgotICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0
dXAoaXRlbSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKDQyKQotICAgICIiIgogICAg
ICAgICApCiAgICAgKQogICAgIHN1YjEuam9pbigidGVzdF9tb2QucHkiKS53cml0ZSgiZGVmIHRl
c3RfZnVuYzEoKTogcGFzcyIpCkBAIC02NjgsMzEgKzc0OSwxNyBAQCBkZWYgdGVzdF9zZXR1cF9m
YWlsdXJlX2RvZXNfbm90X2tpbGxfY2FwdHVyaW5nKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIipWYWx1ZUVycm9yKDQyKSoiLCAiKjEgZXJyb3IqIl0pCiAKIAot
ZGVmIHRlc3RfZmRmdW5jYXJnX3NraXBzX29uX25vX29zZHVwKHRlc3RkaXIpOgotICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBvcwotICAgICAgICBp
ZiBoYXNhdHRyKG9zLCAnZHVwJyk6Ci0gICAgICAgICAgICBkZWwgb3MuZHVwCi0gICAgICAgIGRl
ZiB0ZXN0X2hlbGxvKGNhcGZkKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKLSAgICApCi0g
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygiLS1jYXB0dXJlPW5vIikK
LSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBza2lwcGVkKiJdKQotCi0KIGRl
ZiB0ZXN0X2NhcHR1cmVfY29uZnRlc3RfcnVudGVzdF9zZXR1cCh0ZXN0ZGlyKToKICAgICB0ZXN0
ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgIiIiCiAgICAgICAgIGRlZiBweXRlc3RfcnVudGVz
dF9zZXR1cCgpOgotICAgICAgICAgICAgcHJpbnQgKCJoZWxsbzE5IikKKyAgICAgICAgICAgIHBy
aW50KCJoZWxsbzE5IikKICAgICAiIiIKICAgICApCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJk
ZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
ICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCi0gICAgYXNzZXJ0ICJoZWxsbzE5IiBub3QgaW4g
cmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIq
aGVsbG8xOSoiKQogCiAKIGRlZiB0ZXN0X2NhcHR1cmVfYmFkb3V0cHV0X2lzc3VlNDEyKHRlc3Rk
aXIpOgpAQCAtNzA2LDcgKzc3Myw3IEBAIGRlZiB0ZXN0X2NhcHR1cmVfYmFkb3V0cHV0X2lzc3Vl
NDEyKHRlc3RkaXIpOgogICAgICAgICAgICAgYXNzZXJ0IDAKICAgICAgICAgIiIiCiAgICAgKQot
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNhcD1mZCIpCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tY2FwdHVyZT1mZCIpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKAogICAgICAgICAiIiIKICAgICAgICAgKmRlZiB0ZXN0X2Z1bmMqCkBAIC03MjEs
NyArNzg4LDcgQEAgZGVmIHRlc3RfY2FwdHVyZV9lYXJseV9vcHRpb25fcGFyc2luZyh0ZXN0ZGly
KToKICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgIiIiCiAgICAgICAgIGRlZiBw
eXRlc3RfcnVudGVzdF9zZXR1cCgpOgotICAgICAgICAgICAgcHJpbnQgKCJoZWxsbzE5IikKKyAg
ICAgICAgICAgIHByaW50KCJoZWxsbzE5IikKICAgICAiIiIKICAgICApCiAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQpAQCAtNzU2LDIyICs4MjMsMjEgQEAg
ZGVmIHRlc3RfZXJyb3JfZHVyaW5nX3JlYWRvdXRlcnIodGVzdGRpcik6CiAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICBweXRlc3RfeHl6PSIiIgogICAgICAgICBmcm9tIF9weXRlc3Qu
Y2FwdHVyZSBpbXBvcnQgRkRDYXB0dXJlCisKICAgICAgICAgZGVmIGJhZF9zbmFwKHNlbGYpOgog
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdib29tJykKKwogICAgICAgICBhc3NlcnQgRkRD
YXB0dXJlLnNuYXAKICAgICAgICAgRkRDYXB0dXJlLnNuYXAgPSBiYWRfc25hcAogICAgICIiIgog
ICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKAotICAgICAg
ICAiLXAiLCAicHl0ZXN0X3h5eiIsICItLXZlcnNpb24iLCBzeXNwYXRoaW5zZXJ0PVRydWUKLSAg
ICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygiLXAiLCAicHl0
ZXN0X3h5eiIsICItLXZlcnNpb24iKQogICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcygK
ICAgICAgICAgWyIqaW4gYmFkX3NuYXAiLCAiICAgIHJhaXNlIEV4Y2VwdGlvbignYm9vbScpIiwg
IkV4Y2VwdGlvbjogYm9vbSJdCiAgICAgKQogCiAKLWNsYXNzIFRlc3RDYXB0dXJlSU8ob2JqZWN0
KToKLQorY2xhc3MgVGVzdENhcHR1cmVJTzoKICAgICBkZWYgdGVzdF90ZXh0KHNlbGYpOgogICAg
ICAgICBmID0gY2FwdHVyZS5DYXB0dXJlSU8oKQogICAgICAgICBmLndyaXRlKCJoZWxsbyIpCkBA
IC03ODEsMTcgKzg0Nyw5IEBAIGNsYXNzIFRlc3RDYXB0dXJlSU8ob2JqZWN0KToKIAogICAgIGRl
ZiB0ZXN0X3VuaWNvZGVfYW5kX3N0cl9taXh0dXJlKHNlbGYpOgogICAgICAgICBmID0gY2FwdHVy
ZS5DYXB0dXJlSU8oKQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKLSAg
ICAgICAgICAgIGYud3JpdGUoIlx1MDBmNiIpCi0gICAgICAgICAgICBweXRlc3QucmFpc2VzKFR5
cGVFcnJvciwgImYud3JpdGUoYnl0ZXMoJ2hlbGxvJywgJ1VURi04JykpIikKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGYud3JpdGUodGV4dF90eXBlKCJcdTAwZjYiLCAiVVRGLTgiKSkKLSAg
ICAgICAgICAgIGYud3JpdGUoImhlbGxvIikgICMgYnl0ZXMKLSAgICAgICAgICAgIHMgPSBmLmdl
dHZhbHVlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocywgdGV4dF90eXBlKQorICAgICAgICBmLndyaXRlKCJcdTAwZjYiKQorICAgICAgICBw
eXRlc3QucmFpc2VzKFR5cGVFcnJvciwgZi53cml0ZSwgYiJoZWxsbyIpCiAKLSAgICBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMiwgcmVhc29uPSJweXRob24gMyBv
bmx5IGJlaGF2aW91ciIpCiAgICAgZGVmIHRlc3Rfd3JpdGVfYnl0ZXNfdG9fYnVmZmVyKHNlbGYp
OgogICAgICAgICAiIiJJbiBweXRob24zLCBzdGRvdXQgLyBzdGRlcnIgYXJlIHRleHQgaW8gd3Jh
cHBlcnMgKGV4cG9zaW5nIGEgYnVmZmVyCiAgICAgICAgIHByb3BlcnR5IG9mIHRoZSB1bmRlcmx5
aW5nIGJ5dGVzdHJlYW0pLiAgU2VlIGlzc3VlICMxNDA3CkBAIC04MDEsMTI5ICs4NTksMTAwIEBA
IGNsYXNzIFRlc3RDYXB0dXJlSU8ob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGYuZ2V0dmFsdWUo
KSA9PSAiZm9vXHJcbiIKIAogCi1kZWYgdGVzdF9ieXRlc19pbygpOgotICAgIGYgPSBweS5pby5C
eXRlc0lPKCkKLSAgICBmLndyaXRlKHRvYnl0ZXMoImhlbGxvIikpCi0gICAgcHl0ZXN0LnJhaXNl
cyhUeXBlRXJyb3IsICJmLndyaXRlKHRvdGV4dCgnaGVsbG8nKSkiKQotICAgIHMgPSBmLmdldHZh
bHVlKCkKLSAgICBhc3NlcnQgcyA9PSB0b2J5dGVzKCJoZWxsbyIpCitjbGFzcyBUZXN0VGVlQ2Fw
dHVyZUlPKFRlc3RDYXB0dXJlSU8pOgorICAgIGRlZiB0ZXN0X3RleHQoc2VsZik6CisgICAgICAg
IHNpbyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZiA9IGNhcHR1cmUuVGVlQ2FwdHVyZUlPKHNp
bykKKyAgICAgICAgZi53cml0ZSgiaGVsbG8iKQorICAgICAgICBzMSA9IGYuZ2V0dmFsdWUoKQor
ICAgICAgICBhc3NlcnQgczEgPT0gImhlbGxvIgorICAgICAgICBzMiA9IHNpby5nZXR2YWx1ZSgp
CisgICAgICAgIGFzc2VydCBzMiA9PSBzMQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2lv
LmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3VuaWNvZGVfYW5kX3N0cl9taXh0dXJlKHNlbGYpOgor
ICAgICAgICBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgIGYgPSBjYXB0dXJlLlRlZUNhcHR1
cmVJTyhzaW8pCisgICAgICAgIGYud3JpdGUoIlx1MDBmNiIpCisgICAgICAgIHB5dGVzdC5yYWlz
ZXMoVHlwZUVycm9yLCBmLndyaXRlLCBiImhlbGxvIikKIAogCiBkZWYgdGVzdF9kb250cmVhZGZy
b21pbnB1dCgpOgogICAgIGZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBEb250UmVhZEZyb21J
bnB1dAogCiAgICAgZiA9IERvbnRSZWFkRnJvbUlucHV0KCkKKyAgICBhc3NlcnQgZi5idWZmZXIg
aXMgZgogICAgIGFzc2VydCBub3QgZi5pc2F0dHkoKQotICAgIHB5dGVzdC5yYWlzZXMoSU9FcnJv
ciwgZi5yZWFkKQotICAgIHB5dGVzdC5yYWlzZXMoSU9FcnJvciwgZi5yZWFkbGluZXMpCisgICAg
cHl0ZXN0LnJhaXNlcyhPU0Vycm9yLCBmLnJlYWQpCisgICAgcHl0ZXN0LnJhaXNlcyhPU0Vycm9y
LCBmLnJlYWRsaW5lcykKICAgICBpdGVyX2YgPSBpdGVyKGYpCi0gICAgcHl0ZXN0LnJhaXNlcyhJ
T0Vycm9yLCBuZXh0LCBpdGVyX2YpCisgICAgcHl0ZXN0LnJhaXNlcyhPU0Vycm9yLCBuZXh0LCBp
dGVyX2YpCiAgICAgcHl0ZXN0LnJhaXNlcyhVbnN1cHBvcnRlZE9wZXJhdGlvbiwgZi5maWxlbm8p
CiAgICAgZi5jbG9zZSgpICAjIGp1c3QgZm9yIGNvbXBsZXRlbmVzcwogCiAKLUBweXRlc3QubWFy
ay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm8gPCAoMywpIiwgcmVhc29uPSJweXRob24yIGhhcyBu
byBidWZmZXIiKQotZGVmIHRlc3RfZG9udHJlYWRmcm9taW5wdXRfYnVmZmVyX3B5dGhvbjMoKToK
LSAgICBmcm9tIF9weXRlc3QuY2FwdHVyZSBpbXBvcnQgRG9udFJlYWRGcm9tSW5wdXQKLQotICAg
IGYgPSBEb250UmVhZEZyb21JbnB1dCgpCi0gICAgZmIgPSBmLmJ1ZmZlcgotICAgIGFzc2VydCBu
b3QgZmIuaXNhdHR5KCkKLSAgICBweXRlc3QucmFpc2VzKElPRXJyb3IsIGZiLnJlYWQpCi0gICAg
cHl0ZXN0LnJhaXNlcyhJT0Vycm9yLCBmYi5yZWFkbGluZXMpCi0gICAgaXRlcl9mID0gaXRlcihm
KQotICAgIHB5dGVzdC5yYWlzZXMoSU9FcnJvciwgbmV4dCwgaXRlcl9mKQotICAgIHB5dGVzdC5y
YWlzZXMoVmFsdWVFcnJvciwgZmIuZmlsZW5vKQotICAgIGYuY2xvc2UoKSAgIyBqdXN0IGZvciBj
b21wbGV0ZW5lc3MKLQotCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvID49
ICgzLCkiLCByZWFzb249InB5dGhvbjIgaGFzIG5vIGJ1ZmZlciIpCi1kZWYgdGVzdF9kb250cmVh
ZGZyb21pbnB1dF9idWZmZXJfcHl0aG9uMigpOgotICAgIGZyb20gX3B5dGVzdC5jYXB0dXJlIGlt
cG9ydCBEb250UmVhZEZyb21JbnB1dAotCi0gICAgZiA9IERvbnRSZWFkRnJvbUlucHV0KCkKLSAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IpOgotICAgICAgICBmLmJ1ZmZlcgot
ICAgIGYuY2xvc2UoKSAgIyBqdXN0IGZvciBjb21wbGV0ZW5lc3MKLQotCi1AcHl0ZXN0LnlpZWxk
X2ZpeHR1cmUKLWRlZiB0bXBmaWxlKHRlc3RkaXIpOgorZGVmIHRlc3RfY2FwdHVyZXJlc3VsdCgp
IC0+IE5vbmU6CisgICAgY3IgPSBDYXB0dXJlUmVzdWx0KCJvdXQiLCAiZXJyIikKKyAgICBhc3Nl
cnQgbGVuKGNyKSA9PSAyCisgICAgYXNzZXJ0IGNyLm91dCA9PSAib3V0IgorICAgIGFzc2VydCBj
ci5lcnIgPT0gImVyciIKKyAgICBvdXQsIGVyciA9IGNyCisgICAgYXNzZXJ0IG91dCA9PSAib3V0
IgorICAgIGFzc2VydCBlcnIgPT0gImVyciIKKyAgICBhc3NlcnQgY3JbMF0gPT0gIm91dCIKKyAg
ICBhc3NlcnQgY3JbMV0gPT0gImVyciIKKyAgICBhc3NlcnQgY3IgPT0gY3IKKyAgICBhc3NlcnQg
Y3IgPT0gQ2FwdHVyZVJlc3VsdCgib3V0IiwgImVyciIpCisgICAgYXNzZXJ0IGNyICE9IENhcHR1
cmVSZXN1bHQoIndyb25nIiwgImVyciIpCisgICAgYXNzZXJ0IGNyID09ICgib3V0IiwgImVyciIp
CisgICAgYXNzZXJ0IGNyICE9ICgib3V0IiwgIndyb25nIikKKyAgICBhc3NlcnQgaGFzaChjcikg
PT0gaGFzaChDYXB0dXJlUmVzdWx0KCJvdXQiLCAiZXJyIikpCisgICAgYXNzZXJ0IGhhc2goY3Ip
ID09IGhhc2goKCJvdXQiLCAiZXJyIikpCisgICAgYXNzZXJ0IGhhc2goY3IpICE9IGhhc2goKCJv
dXQiLCAid3JvbmciKSkKKyAgICBhc3NlcnQgY3IgPCAoInoiLCkKKyAgICBhc3NlcnQgY3IgPCAo
InoiLCAiYiIpCisgICAgYXNzZXJ0IGNyIDwgKCJ6IiwgImIiLCAiYyIpCisgICAgYXNzZXJ0IGNy
LmNvdW50KCJlcnIiKSA9PSAxCisgICAgYXNzZXJ0IGNyLmNvdW50KCJ3cm9uZyIpID09IDAKKyAg
ICBhc3NlcnQgY3IuaW5kZXgoImVyciIpID09IDEKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFs
dWVFcnJvcik6CisgICAgICAgIGFzc2VydCBjci5pbmRleCgid3JvbmciKSA9PSAwCisgICAgYXNz
ZXJ0IG5leHQoaXRlcihjcikpID09ICJvdXQiCisgICAgYXNzZXJ0IGNyLl9yZXBsYWNlKGVycj0i
cmVwbGFjZWQiKSA9PSAoIm91dCIsICJyZXBsYWNlZCIpCisKKworQHB5dGVzdC5maXh0dXJlCitk
ZWYgdG1wZmlsZSh0ZXN0ZGlyKSAtPiBHZW5lcmF0b3JbQmluYXJ5SU8sIE5vbmUsIE5vbmVdOgog
ICAgIGYgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoIiIpLm9wZW4oIndiKyIpCiAgICAgeWllbGQgZgog
ICAgIGlmIG5vdCBmLmNsb3NlZDoKICAgICAgICAgZi5jbG9zZSgpCiAKIAotQG5lZWRzb3NkdXAK
LWRlZiB0ZXN0X2R1cGZpbGUodG1wZmlsZSk6Ci0gICAgZmxpc3QgPSBbXQotICAgIGZvciBpIGlu
IHJhbmdlKDUpOgotICAgICAgICBuZiA9IGNhcHR1cmUuc2FmZV90ZXh0X2R1cGZpbGUodG1wZmls
ZSwgIndiIikKLSAgICAgICAgYXNzZXJ0IG5mICE9IHRtcGZpbGUKLSAgICAgICAgYXNzZXJ0IG5m
LmZpbGVubygpICE9IHRtcGZpbGUuZmlsZW5vKCkKLSAgICAgICAgYXNzZXJ0IG5mIG5vdCBpbiBm
bGlzdAotICAgICAgICBwcmludChpLCBlbmQ9IiIsIGZpbGU9bmYpCi0gICAgICAgIGZsaXN0LmFw
cGVuZChuZikKLQotICAgIGZuYW1lX29wZW4gPSBmbGlzdFswXS5uYW1lCi0gICAgYXNzZXJ0IGZu
YW1lX29wZW4gPT0gcmVwcihmbGlzdFswXS5idWZmZXIpCi0KLSAgICBmb3IgaSBpbiByYW5nZSg1
KToKLSAgICAgICAgZiA9IGZsaXN0W2ldCi0gICAgICAgIGYuY2xvc2UoKQotICAgIGZuYW1lX2Ns
b3NlZCA9IGZsaXN0WzBdLm5hbWUKLSAgICBhc3NlcnQgZm5hbWVfY2xvc2VkID09IHJlcHIoZmxp
c3RbMF0uYnVmZmVyKQotICAgIGFzc2VydCBmbmFtZV9jbG9zZWQgIT0gZm5hbWVfb3BlbgotICAg
IHRtcGZpbGUuc2VlaygwKQotICAgIHMgPSB0bXBmaWxlLnJlYWQoKQotICAgIGFzc2VydCAiMDEy
MzQiIGluIHJlcHIocykKLSAgICB0bXBmaWxlLmNsb3NlKCkKLSAgICBhc3NlcnQgZm5hbWVfY2xv
c2VkID09IHJlcHIoZmxpc3RbMF0uYnVmZmVyKQotCi0KLWRlZiB0ZXN0X2R1cGZpbGVfb25fYnl0
ZXNpbygpOgotICAgIGlvID0gcHkuaW8uQnl0ZXNJTygpCi0gICAgZiA9IGNhcHR1cmUuc2FmZV90
ZXh0X2R1cGZpbGUoaW8sICJ3YiIpCi0gICAgZi53cml0ZSgiaGVsbG8iKQotICAgIGFzc2VydCBp
by5nZXR2YWx1ZSgpID09IGIiaGVsbG8iCi0gICAgYXNzZXJ0ICJCeXRlc0lPIG9iamVjdCIgaW4g
Zi5uYW1lCi0KLQotZGVmIHRlc3RfZHVwZmlsZV9vbl90ZXh0aW8oKToKLSAgICBpbyA9IHB5Lmlv
LlRleHRJTygpCi0gICAgZiA9IGNhcHR1cmUuc2FmZV90ZXh0X2R1cGZpbGUoaW8sICJ3YiIpCi0g
ICAgZi53cml0ZSgiaGVsbG8iKQotICAgIGFzc2VydCBpby5nZXR2YWx1ZSgpID09ICJoZWxsbyIK
LSAgICBhc3NlcnQgbm90IGhhc2F0dHIoZiwgIm5hbWUiKQotCi0KIEBjb250ZXh0bGliLmNvbnRl
eHRtYW5hZ2VyCiBkZWYgbHNvZl9jaGVjaygpOgogICAgIHBpZCA9IG9zLmdldHBpZCgpCiAgICAg
dHJ5OgotICAgICAgICBvdXQgPSBweS5wcm9jZXNzLmNtZGV4ZWMoImxzb2YgLXAgJWQiICUgcGlk
KQotICAgIGV4Y2VwdCAocHkucHJvY2Vzcy5jbWRleGVjLkVycm9yLCBVbmljb2RlRGVjb2RlRXJy
b3IpOgorICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImxzb2YiLCAiLXAi
LCBzdHIocGlkKSkpLmRlY29kZSgpCisgICAgZXhjZXB0IChPU0Vycm9yLCBzdWJwcm9jZXNzLkNh
bGxlZFByb2Nlc3NFcnJvciwgVW5pY29kZURlY29kZUVycm9yKSBhcyBleGM6CiAgICAgICAgICMg
YWJvdXQgVW5pY29kZURlY29kZUVycm9yLCBzZWUgbm90ZSBvbiBweXRlc3RlcgotICAgICAgICBw
eXRlc3Quc2tpcCgiY291bGQgbm90IHJ1biAnbHNvZiciKQorICAgICAgICBweXRlc3Quc2tpcCgi
Y291bGQgbm90IHJ1biAnbHNvZicgKHshcn0pIi5mb3JtYXQoZXhjKSkKICAgICB5aWVsZAotICAg
IG91dDIgPSBweS5wcm9jZXNzLmNtZGV4ZWMoImxzb2YgLXAgJWQiICUgcGlkKQorICAgIG91dDIg
PSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImxzb2YiLCAiLXAiLCBzdHIocGlkKSkpLmRlY29k
ZSgpCiAgICAgbGVuMSA9IGxlbihbeCBmb3IgeCBpbiBvdXQuc3BsaXQoIlxuIikgaWYgIlJFRyIg
aW4geF0pCiAgICAgbGVuMiA9IGxlbihbeCBmb3IgeCBpbiBvdXQyLnNwbGl0KCJcbiIpIGlmICJS
RUciIGluIHhdKQogICAgIGFzc2VydCBsZW4yIDwgbGVuMSArIDMsIG91dDIKIAogCi1jbGFzcyBU
ZXN0RkRDYXB0dXJlKG9iamVjdCk6Ci0gICAgcHl0ZXN0bWFyayA9IG5lZWRzb3NkdXAKLQorY2xh
c3MgVGVzdEZEQ2FwdHVyZToKICAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZiwgdG1wZmlsZSk6CiAg
ICAgICAgIGZkID0gdG1wZmlsZS5maWxlbm8oKQogICAgICAgICBjYXAgPSBjYXB0dXJlLkZEQ2Fw
dHVyZShmZCkKLSAgICAgICAgZGF0YSA9IHRvYnl0ZXMoImhlbGxvIikKKyAgICAgICAgZGF0YSA9
IGIiaGVsbG8iCiAgICAgICAgIG9zLndyaXRlKGZkLCBkYXRhKQotICAgICAgICBzID0gY2FwLnNu
YXAoKQorICAgICAgICBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBjYXAuc25hcCkKICAg
ICAgICAgY2FwLmRvbmUoKQotICAgICAgICBhc3NlcnQgbm90IHMKICAgICAgICAgY2FwID0gY2Fw
dHVyZS5GRENhcHR1cmUoZmQpCiAgICAgICAgIGNhcC5zdGFydCgpCiAgICAgICAgIG9zLndyaXRl
KGZkLCBkYXRhKQpAQCAtOTQ0LDcgKzk3Myw3IEBAIGNsYXNzIFRlc3RGRENhcHR1cmUob2JqZWN0
KToKICAgICAgICAgZmQgPSB0bXBmaWxlLmZpbGVubygpCiAgICAgICAgIGNhcCA9IGNhcHR1cmUu
RkRDYXB0dXJlKGZkKQogICAgICAgICBjYXAuZG9uZSgpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMo
VmFsdWVFcnJvciwgY2FwLnN0YXJ0KQorICAgICAgICBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVy
cm9yLCBjYXAuc3RhcnQpCiAKICAgICBkZWYgdGVzdF9zdGRlcnIoc2VsZik6CiAgICAgICAgIGNh
cCA9IGNhcHR1cmUuRkRDYXB0dXJlKDIpCkBAIC05NTQsNDggKzk4Myw2MyBAQCBjbGFzcyBUZXN0
RkRDYXB0dXJlKG9iamVjdCk6CiAgICAgICAgIGNhcC5kb25lKCkKICAgICAgICAgYXNzZXJ0IHMg
PT0gImhlbGxvXG4iCiAKLSAgICBkZWYgdGVzdF9zdGRpbihzZWxmLCB0bXBmaWxlKToKKyAgICBk
ZWYgdGVzdF9zdGRpbihzZWxmKToKICAgICAgICAgY2FwID0gY2FwdHVyZS5GRENhcHR1cmUoMCkK
ICAgICAgICAgY2FwLnN0YXJ0KCkKICAgICAgICAgeCA9IG9zLnJlYWQoMCwgMTAwKS5zdHJpcCgp
CiAgICAgICAgIGNhcC5kb25lKCkKLSAgICAgICAgYXNzZXJ0IHggPT0gdG9ieXRlcygiIikKKyAg
ICAgICAgYXNzZXJ0IHggPT0gYiIiCiAKICAgICBkZWYgdGVzdF93cml0ZW9yZyhzZWxmLCB0bXBm
aWxlKToKLSAgICAgICAgZGF0YTEsIGRhdGEyID0gdG9ieXRlcygiZm9vIiksIHRvYnl0ZXMoImJh
ciIpCisgICAgICAgIGRhdGExLCBkYXRhMiA9IGIiZm9vIiwgYiJiYXIiCiAgICAgICAgIGNhcCA9
IGNhcHR1cmUuRkRDYXB0dXJlKHRtcGZpbGUuZmlsZW5vKCkpCiAgICAgICAgIGNhcC5zdGFydCgp
CiAgICAgICAgIHRtcGZpbGUud3JpdGUoZGF0YTEpCiAgICAgICAgIHRtcGZpbGUuZmx1c2goKQot
ICAgICAgICBjYXAud3JpdGVvcmcoZGF0YTIpCisgICAgICAgIGNhcC53cml0ZW9yZyhkYXRhMi5k
ZWNvZGUoImFzY2lpIikpCiAgICAgICAgIHNjYXAgPSBjYXAuc25hcCgpCiAgICAgICAgIGNhcC5k
b25lKCkKLSAgICAgICAgYXNzZXJ0IHNjYXAgPT0gdG90ZXh0KGRhdGExKQorICAgICAgICBhc3Nl
cnQgc2NhcCA9PSBkYXRhMS5kZWNvZGUoImFzY2lpIikKICAgICAgICAgd2l0aCBvcGVuKHRtcGZp
bGUubmFtZSwgInJiIikgYXMgc3RtcF9maWxlOgogICAgICAgICAgICAgc3RtcCA9IHN0bXBfZmls
ZS5yZWFkKCkKICAgICAgICAgICAgIGFzc2VydCBzdG1wID09IGRhdGEyCiAKLSAgICBkZWYgdGVz
dF9zaW1wbGVfcmVzdW1lX3N1c3BlbmQoc2VsZiwgdG1wZmlsZSk6CisgICAgZGVmIHRlc3Rfc2lt
cGxlX3Jlc3VtZV9zdXNwZW5kKHNlbGYpOgogICAgICAgICB3aXRoIHNhdmVkX2ZkKDEpOgogICAg
ICAgICAgICAgY2FwID0gY2FwdHVyZS5GRENhcHR1cmUoMSkKICAgICAgICAgICAgIGNhcC5zdGFy
dCgpCi0gICAgICAgICAgICBkYXRhID0gdG9ieXRlcygiaGVsbG8iKQorICAgICAgICAgICAgZGF0
YSA9IGIiaGVsbG8iCiAgICAgICAgICAgICBvcy53cml0ZSgxLCBkYXRhKQogICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgid2hhdGV2ZXIiKQogICAgICAgICAgICAgcyA9IGNhcC5zbmFwKCkK
ICAgICAgICAgICAgIGFzc2VydCBzID09ICJoZWxsb3doYXRldmVyIgogICAgICAgICAgICAgY2Fw
LnN1c3BlbmQoKQotICAgICAgICAgICAgb3Mud3JpdGUoMSwgdG9ieXRlcygid29ybGQiKSkKKyAg
ICAgICAgICAgIG9zLndyaXRlKDEsIGIid29ybGQiKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgicWx3a2VqIikKICAgICAgICAgICAgIGFzc2VydCBub3QgY2FwLnNuYXAoKQogICAgICAg
ICAgICAgY2FwLnJlc3VtZSgpCi0gICAgICAgICAgICBvcy53cml0ZSgxLCB0b2J5dGVzKCJidXQg
bm93IikpCisgICAgICAgICAgICBvcy53cml0ZSgxLCBiImJ1dCBub3ciKQogICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgiIHllc1xuIikKICAgICAgICAgICAgIHMgPSBjYXAuc25hcCgpCiAg
ICAgICAgICAgICBhc3NlcnQgcyA9PSAiYnV0IG5vdyB5ZXNcbiIKICAgICAgICAgICAgIGNhcC5z
dXNwZW5kKCkKICAgICAgICAgICAgIGNhcC5kb25lKCkKLSAgICAgICAgICAgIHB5dGVzdC5yYWlz
ZXMoQXR0cmlidXRlRXJyb3IsIGNhcC5zdXNwZW5kKQorICAgICAgICAgICAgcHl0ZXN0LnJhaXNl
cyhBc3NlcnRpb25FcnJvciwgY2FwLnN1c3BlbmQpCisKKyAgICAgICAgICAgIGFzc2VydCByZXBy
KGNhcCkgPT0gKAorICAgICAgICAgICAgICAgICI8RkRDYXB0dXJlIDEgb2xkZmQ9e30gX3N0YXRl
PSdkb25lJyB0bXBmaWxlPXshcn0+Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGNhcC50
YXJnZXRmZF9zYXZlLCBjYXAudG1wZmlsZQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCBjcmFzaCB3aXRoIG1pc3NpbmcgIl9vbGQiLgor
ICAgICAgICAgICAgYXNzZXJ0IHJlcHIoY2FwLnN5c2NhcHR1cmUpID09ICgKKyAgICAgICAgICAg
ICAgICAiPFN5c0NhcHR1cmUgc3Rkb3V0IF9vbGQ9PFVOU0VUPiBfc3RhdGU9J2RvbmUnIHRtcGZp
bGU9eyFyfT4iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgY2FwLnN5c2NhcHR1cmUudG1w
ZmlsZQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Nh
cGZkX3N5c19zdGRvdXRfbW9kZShzZWxmLCBjYXBmZCk6CisgICAgICAgIGFzc2VydCAiYiIgbm90
IGluIHN5cy5zdGRvdXQubW9kZQogCiAKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCkBAIC0x
MDA4LDcgKzEwNTIsNyBAQCBkZWYgc2F2ZWRfZmQoZmQpOgogICAgICAgICBvcy5jbG9zZShuZXdf
ZmQpCiAKIAotY2xhc3MgVGVzdFN0ZENhcHR1cmUob2JqZWN0KToKK2NsYXNzIFRlc3RTdGRDYXB0
dXJlOgogICAgIGNhcHR1cmVjbGFzcyA9IHN0YXRpY21ldGhvZChTdGRDYXB0dXJlKQogCiAgICAg
QGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKQEAgLTEwNTcsMTkgKzExMDEsOSBAQCBjbGFzcyBU
ZXN0U3RkQ2FwdHVyZShvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfY2FwdHVyaW5nX3JlYWRvdXRl
cnJfdW5pY29kZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmdldGNhcHR1cmUoKSBhcyBjYXA6
Ci0gICAgICAgICAgICBwcmludCgiaHhceGM0XHg4NVx4YzRceDg3IikKLSAgICAgICAgICAgIG91
dCwgZXJyID0gY2FwLnJlYWRvdXRlcnIoKQotICAgICAgICBhc3NlcnQgb3V0ID09IHB5LmJ1aWx0
aW4uX3RvdGV4dCgiaHhceGM0XHg4NVx4YzRceDg3XG4iLCAidXRmOCIpCi0KLSAgICBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKAotICAgICAgICAic3lzLnZlcnNpb25faW5mbyA+PSAoMywpIiwgcmVhc29u
PSJ0ZXh0IG91dHB1dCBkaWZmZXJlbnQgZm9yIGJ5dGVzIG9uIHB5dGhvbjMiCi0gICAgKQotICAg
IGRlZiB0ZXN0X2NhcHR1cmluZ19yZWFkb3V0ZXJyX2RlY29kZV9lcnJvcl9oYW5kbGluZyhzZWxm
KToKLSAgICAgICAgd2l0aCBzZWxmLmdldGNhcHR1cmUoKSBhcyBjYXA6Ci0gICAgICAgICAgICAj
IHRyaWdnZXJlZCBhbiBpbnRlcm5hbCBlcnJvciBpbiBweXRlc3QKLSAgICAgICAgICAgIHByaW50
KCJceGE2IikKKyAgICAgICAgICAgIHByaW50KCJoeMSFxIciKQogICAgICAgICAgICAgb3V0LCBl
cnIgPSBjYXAucmVhZG91dGVycigpCi0gICAgICAgIGFzc2VydCBvdXQgPT0gcHkuYnVpbHRpbi5f
dG90ZXh0KCJcdWZmZmRcbiIsICJ1bmljb2RlLWVzY2FwZSIpCisgICAgICAgIGFzc2VydCBvdXQg
PT0gImh4xIXEh1xuIgogCiAgICAgZGVmIHRlc3RfcmVzZXRfdHdpY2VfZXJyb3Ioc2VsZik6CiAg
ICAgICAgIHdpdGggc2VsZi5nZXRjYXB0dXJlKCkgYXMgY2FwOgpAQCAtMTEzMywyMSArMTE2Nywz
NyBAQCBjbGFzcyBUZXN0U3RkQ2FwdHVyZShvYmplY3QpOgogICAgICAgICBwcmludCgiWFhYIHdo
aWNoIGluZGljYXRlcyBhbiBlcnJvciBpbiB0aGUgdW5kZXJseWluZyBjYXB0dXJpbmciKQogICAg
ICAgICBwcmludCgiWFhYIG1lY2hhbmlzbXMiKQogICAgICAgICB3aXRoIHNlbGYuZ2V0Y2FwdHVy
ZSgpOgotICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhJT0Vycm9yLCAic3lzLnN0ZGluLnJlYWQo
KSIpCisgICAgICAgICAgICBweXRlc3QucmFpc2VzKE9TRXJyb3IsIHN5cy5zdGRpbi5yZWFkKQor
CisKK2NsYXNzIFRlc3RUZWVTdGRDYXB0dXJlKFRlc3RTdGRDYXB0dXJlKToKKyAgICBjYXB0dXJl
Y2xhc3MgPSBzdGF0aWNtZXRob2QoVGVlU3RkQ2FwdHVyZSkKKworICAgIGRlZiB0ZXN0X2NhcHR1
cmluZ19lcnJvcl9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIHIiIiJGb3IgVGVlU3RkQ2FwdHVy
ZSBzaW5jZSB3ZSBwYXNzdGhyb3VnaCBzdGRlcnIvc3Rkb3V0LCBjYXAxCisgICAgICAgIHNob3Vs
ZCBnZXQgYWxsIG91dHB1dCwgd2hpbGUgY2FwMiBzaG91bGQgb25seSBnZXQgImNhcDJcbiIuIiIi
CisKKyAgICAgICAgd2l0aCBzZWxmLmdldGNhcHR1cmUoKSBhcyBjYXAxOgorICAgICAgICAgICAg
cHJpbnQoImNhcDEiKQorICAgICAgICAgICAgd2l0aCBzZWxmLmdldGNhcHR1cmUoKSBhcyBjYXAy
OgorICAgICAgICAgICAgICAgIHByaW50KCJjYXAyIikKKyAgICAgICAgICAgICAgICBvdXQyLCBl
cnIyID0gY2FwMi5yZWFkb3V0ZXJyKCkKKyAgICAgICAgICAgICAgICBvdXQxLCBlcnIxID0gY2Fw
MS5yZWFkb3V0ZXJyKCkKKyAgICAgICAgYXNzZXJ0IG91dDEgPT0gImNhcDFcbmNhcDJcbiIKKyAg
ICAgICAgYXNzZXJ0IG91dDIgPT0gImNhcDJcbiIKIAogCiBjbGFzcyBUZXN0U3RkQ2FwdHVyZUZE
KFRlc3RTdGRDYXB0dXJlKToKLSAgICBweXRlc3RtYXJrID0gbmVlZHNvc2R1cAogICAgIGNhcHR1
cmVjbGFzcyA9IHN0YXRpY21ldGhvZChTdGRDYXB0dXJlRkQpCiAKICAgICBkZWYgdGVzdF9zaW1w
bGVfb25seV9mZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAot
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAiIiJcCiAgICAgICAgICAgICBpbXBvcnQgb3MK
ICAgICAgICAgICAgIGRlZiB0ZXN0X3goKToKLSAgICAgICAgICAgICAgICBvcy53cml0ZSgxLCAi
aGVsbG9cXG4iLmVuY29kZSgiYXNjaWkiKSkKKyAgICAgICAgICAgICAgICBvcy53cml0ZSgxLCBi
ImhlbGxvXFxuIikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAiIiIKKyAgICAg
ICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
X3N1YnByb2Nlc3MoKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCkBAIC0x
MTYwLDE0ICsxMjEwLDE0IEBAIGNsYXNzIFRlc3RTdGRDYXB0dXJlRkQoVGVzdFN0ZENhcHR1cmUp
OgogCiAgICAgZGVmIHRlc3RfaW50ZXJtaW5nbGluZyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxm
LmdldGNhcHR1cmUoKSBhcyBjYXA6Ci0gICAgICAgICAgICBvc3dyaXRlYnl0ZXMoMSwgIjEiKQor
ICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiIxIikKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3Jp
dGUoc3RyKDIpKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICBv
c3dyaXRlYnl0ZXMoMSwgIjMiKQotICAgICAgICAgICAgb3N3cml0ZWJ5dGVzKDIsICJhIikKKyAg
ICAgICAgICAgIG9zLndyaXRlKDEsIGIiMyIpCisgICAgICAgICAgICBvcy53cml0ZSgyLCBiImEi
KQogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiYiIpCiAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLmZsdXNoKCkKLSAgICAgICAgICAgIG9zd3JpdGVieXRlcygyLCAiYyIpCisgICAgICAgICAg
ICBvcy53cml0ZSgyLCBiImMiKQogICAgICAgICAgICAgb3V0LCBlcnIgPSBjYXAucmVhZG91dGVy
cigpCiAgICAgICAgIGFzc2VydCBvdXQgPT0gIjEyMyIKICAgICAgICAgYXNzZXJ0IGVyciA9PSAi
YWJjIgpAQCAtMTE3NiwzMSArMTIyNiw0NyBAQCBjbGFzcyBUZXN0U3RkQ2FwdHVyZUZEKFRlc3RT
dGRDYXB0dXJlKToKICAgICAgICAgd2l0aCBsc29mX2NoZWNrKCk6CiAgICAgICAgICAgICBmb3Ig
aSBpbiByYW5nZSgxMCk6CiAgICAgICAgICAgICAgICAgY2FwID0gU3RkQ2FwdHVyZUZEKCkKKyAg
ICAgICAgICAgICAgICBjYXAuc3RhcnRfY2FwdHVyaW5nKCkKICAgICAgICAgICAgICAgICBjYXAu
c3RvcF9jYXB0dXJpbmcoKQogCiAKLWNsYXNzIFRlc3RTdGRDYXB0dXJlRkRpbnZhbGlkRkQob2Jq
ZWN0KToKLSAgICBweXRlc3RtYXJrID0gbmVlZHNvc2R1cAotCitjbGFzcyBUZXN0U3RkQ2FwdHVy
ZUZEaW52YWxpZEZEOgogICAgIGRlZiB0ZXN0X3N0ZGNhcHR1cmVfZmRfaW52YWxpZF9mZChzZWxm
LCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGZyb20gZm5tYXRjaCBpbXBvcnQg
Zm5tYXRjaAogICAgICAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBjYXB0dXJlCisKICAgICAg
ICAgICAgIGRlZiBTdGRDYXB0dXJlRkQob3V0PVRydWUsIGVycj1UcnVlLCBpbl89VHJ1ZSk6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmUuTXVsdGlDYXB0dXJlKG91dCwgZXJyLCBpbl8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FwdHVyZT1j
YXB0dXJlLkZEQ2FwdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FwdHVyZS5NdWx0aUNh
cHR1cmUoCisgICAgICAgICAgICAgICAgICAgIGluXz1jYXB0dXJlLkZEQ2FwdHVyZSgwKSBpZiBp
bl8gZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBvdXQ9Y2FwdHVyZS5GRENhcHR1cmUo
MSkgaWYgb3V0IGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgZXJyPWNhcHR1cmUuRkRD
YXB0dXJlKDIpIGlmIGVyciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQorCiAgICAgICAg
ICAgICBkZWYgdGVzdF9zdGRvdXQoKToKICAgICAgICAgICAgICAgICBvcy5jbG9zZSgxKQogICAg
ICAgICAgICAgICAgIGNhcCA9IFN0ZENhcHR1cmVGRChvdXQ9VHJ1ZSwgZXJyPUZhbHNlLCBpbl89
RmFsc2UpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGZubWF0Y2gocmVwcihjYXAub3V0KSwgIjxG
RENhcHR1cmUgMSBvbGRmZD0qIF9zdGF0ZT0naW5pdGlhbGl6ZWQnIHRtcGZpbGU9Kj4iKQorICAg
ICAgICAgICAgICAgIGNhcC5zdGFydF9jYXB0dXJpbmcoKQorICAgICAgICAgICAgICAgIG9zLndy
aXRlKDEsIGIic3Rkb3V0IikKKyAgICAgICAgICAgICAgICBhc3NlcnQgY2FwLnJlYWRvdXRlcnIo
KSA9PSAoInN0ZG91dCIsICIiKQogICAgICAgICAgICAgICAgIGNhcC5zdG9wX2NhcHR1cmluZygp
CisKICAgICAgICAgICAgIGRlZiB0ZXN0X3N0ZGVycigpOgogICAgICAgICAgICAgICAgIG9zLmNs
b3NlKDIpCiAgICAgICAgICAgICAgICAgY2FwID0gU3RkQ2FwdHVyZUZEKG91dD1GYWxzZSwgZXJy
PVRydWUsIGluXz1GYWxzZSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgZm5tYXRjaChyZXByKGNh
cC5lcnIpLCAiPEZEQ2FwdHVyZSAyIG9sZGZkPSogX3N0YXRlPSdpbml0aWFsaXplZCcgdG1wZmls
ZT0qPiIpCisgICAgICAgICAgICAgICAgY2FwLnN0YXJ0X2NhcHR1cmluZygpCisgICAgICAgICAg
ICAgICAgb3Mud3JpdGUoMiwgYiJzdGRlcnIiKQorICAgICAgICAgICAgICAgIGFzc2VydCBjYXAu
cmVhZG91dGVycigpID09ICgiIiwgInN0ZGVyciIpCiAgICAgICAgICAgICAgICAgY2FwLnN0b3Bf
Y2FwdHVyaW5nKCkKKwogICAgICAgICAgICAgZGVmIHRlc3Rfc3RkaW4oKToKICAgICAgICAgICAg
ICAgICBvcy5jbG9zZSgwKQogICAgICAgICAgICAgICAgIGNhcCA9IFN0ZENhcHR1cmVGRChvdXQ9
RmFsc2UsIGVycj1GYWxzZSwgaW5fPVRydWUpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGZubWF0
Y2gocmVwcihjYXAuaW5fKSwgIjxGRENhcHR1cmUgMCBvbGRmZD0qIF9zdGF0ZT0naW5pdGlhbGl6
ZWQnIHRtcGZpbGU9Kj4iKQogICAgICAgICAgICAgICAgIGNhcC5zdG9wX2NhcHR1cmluZygpCiAg
ICAgICAgICIiIgogICAgICAgICApCkBAIC0xMjA4LDYgKzEyNzQsMzcgQEAgY2xhc3MgVGVzdFN0
ZENhcHR1cmVGRGludmFsaWRGRChvYmplY3QpOgogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9
PSAwCiAgICAgICAgIGFzc2VydCByZXN1bHQucGFyc2VvdXRjb21lcygpWyJwYXNzZWQiXSA9PSAz
CiAKKyAgICBkZWYgdGVzdF9mZGNhcHR1cmVfaW52YWxpZF9mZF93aXRoX2ZkX3JldXNlKHNlbGYs
IHRlc3RkaXIpOgorICAgICAgICB3aXRoIHNhdmVkX2ZkKDEpOgorICAgICAgICAgICAgb3MuY2xv
c2UoMSkKKyAgICAgICAgICAgIGNhcCA9IGNhcHR1cmUuRkRDYXB0dXJlQmluYXJ5KDEpCisgICAg
ICAgICAgICBjYXAuc3RhcnQoKQorICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiJzdGFydGVkIikK
KyAgICAgICAgICAgIGNhcC5zdXNwZW5kKCkKKyAgICAgICAgICAgIG9zLndyaXRlKDEsIGIiIHN1
c3BlbmRlZCIpCisgICAgICAgICAgICBjYXAucmVzdW1lKCkKKyAgICAgICAgICAgIG9zLndyaXRl
KDEsIGIiIHJlc3VtZWQiKQorICAgICAgICAgICAgYXNzZXJ0IGNhcC5zbmFwKCkgPT0gYiJzdGFy
dGVkIHJlc3VtZWQiCisgICAgICAgICAgICBjYXAuZG9uZSgpCisgICAgICAgICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoT1NFcnJvcik6CisgICAgICAgICAgICAgICAgb3Mud3JpdGUoMSwgYiJkb25l
IikKKworICAgIGRlZiB0ZXN0X2ZkY2FwdHVyZV9pbnZhbGlkX2ZkX3dpdGhvdXRfZmRfcmV1c2Uo
c2VsZiwgdGVzdGRpcik6CisgICAgICAgIHdpdGggc2F2ZWRfZmQoMSksIHNhdmVkX2ZkKDIpOgor
ICAgICAgICAgICAgb3MuY2xvc2UoMSkKKyAgICAgICAgICAgIG9zLmNsb3NlKDIpCisgICAgICAg
ICAgICBjYXAgPSBjYXB0dXJlLkZEQ2FwdHVyZUJpbmFyeSgyKQorICAgICAgICAgICAgY2FwLnN0
YXJ0KCkKKyAgICAgICAgICAgIG9zLndyaXRlKDIsIGIic3RhcnRlZCIpCisgICAgICAgICAgICBj
YXAuc3VzcGVuZCgpCisgICAgICAgICAgICBvcy53cml0ZSgyLCBiIiBzdXNwZW5kZWQiKQorICAg
ICAgICAgICAgY2FwLnJlc3VtZSgpCisgICAgICAgICAgICBvcy53cml0ZSgyLCBiIiByZXN1bWVk
IikKKyAgICAgICAgICAgIGFzc2VydCBjYXAuc25hcCgpID09IGIic3RhcnRlZCByZXN1bWVkIgor
ICAgICAgICAgICAgY2FwLmRvbmUoKQorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKE9T
RXJyb3IpOgorICAgICAgICAgICAgICAgIG9zLndyaXRlKDIsIGIiZG9uZSIpCisKIAogZGVmIHRl
c3RfY2FwdHVyZV9ub3Rfc3RhcnRlZF9idXRfcmVzZXQoKToKICAgICBjYXBzeXMgPSBTdGRDYXB0
dXJlKCkKQEAgLTEyMzEsMTIgKzEzMjgsOCBAQCBkZWYgdGVzdF9jYXBzeXNfcmVzdWx0c19hY2Nl
c3NpYmxlX2J5X2F0dHJpYnV0ZShjYXBzeXMpOgogICAgIGFzc2VydCBjYXB0dXJlX3Jlc3VsdC5l
cnIgPT0gImVnZ3MiCiAKIAotQG5lZWRzb3NkdXAKLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
dXNlIiwgW1RydWUsIEZhbHNlXSkKLWRlZiB0ZXN0X2ZkY2FwdHVyZV90bXBmaWxlX3JlbWFpbnNf
dGhlX3NhbWUodG1wZmlsZSwgdXNlKToKLSAgICBpZiBub3QgdXNlOgotICAgICAgICB0bXBmaWxl
ID0gVHJ1ZQotICAgIGNhcCA9IFN0ZENhcHR1cmVGRChvdXQ9RmFsc2UsIGVycj10bXBmaWxlKQor
ZGVmIHRlc3RfZmRjYXB0dXJlX3RtcGZpbGVfcmVtYWluc190aGVfc2FtZSgpIC0+IE5vbmU6Cisg
ICAgY2FwID0gU3RkQ2FwdHVyZUZEKG91dD1GYWxzZSwgZXJyPVRydWUpCiAgICAgdHJ5OgogICAg
ICAgICBjYXAuc3RhcnRfY2FwdHVyaW5nKCkKICAgICAgICAgY2FwZmlsZSA9IGNhcC5lcnIudG1w
ZmlsZQpAQCAtMTI0Nyw3ICsxMzQwLDYgQEAgZGVmIHRlc3RfZmRjYXB0dXJlX3RtcGZpbGVfcmVt
YWluc190aGVfc2FtZSh0bXBmaWxlLCB1c2UpOgogICAgIGFzc2VydCBjYXBmaWxlMiA9PSBjYXBm
aWxlCiAKIAotQG5lZWRzb3NkdXAKIGRlZiB0ZXN0X2Nsb3NlX2FuZF9jYXB0dXJlX2FnYWluKHRl
c3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCkBAIC0xMjcwLDMw
ICsxMzYyLDMzIEBAIGRlZiB0ZXN0X2Nsb3NlX2FuZF9jYXB0dXJlX2FnYWluKHRlc3RkaXIpOgog
ICAgICkKIAogCi1AcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1ldGhvZCIsIFsiU3lzQ2FwdHVy
ZSIsICJGRENhcHR1cmUiXSkKLWRlZiB0ZXN0X2NhcHR1cmluZ19hbmRfbG9nZ2luZ19mdW5kYW1l
bnRhbHModGVzdGRpciwgbWV0aG9kKToKLSAgICBpZiBtZXRob2QgPT0gIlN0ZENhcHR1cmVGRCIg
YW5kIG5vdCBoYXNhdHRyKG9zLCAiZHVwIik6Ci0gICAgICAgIHB5dGVzdC5za2lwKCJuZWVkIG9z
LmR1cCIpCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgIm1ldGhvZCIsIFsiU3lzQ2Fw
dHVyZSgyKSIsICJTeXNDYXB0dXJlKDIsIHRlZT1UcnVlKSIsICJGRENhcHR1cmUoMikiXQorKQor
ZGVmIHRlc3RfY2FwdHVyaW5nX2FuZF9sb2dnaW5nX2Z1bmRhbWVudGFscyh0ZXN0ZGlyLCBtZXRo
b2Q6IHN0cikgLT4gTm9uZToKICAgICAjIGhlcmUgd2UgY2hlY2sgYSBmdW5kYW1lbnRhbCBmZWF0
dXJlCiAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGlt
cG9ydCBzeXMsIG9zCiAgICAgICAgIGltcG9ydCBweSwgbG9nZ2luZwogICAgICAgICBmcm9tIF9w
eXRlc3QgaW1wb3J0IGNhcHR1cmUKLSAgICAgICAgY2FwID0gY2FwdHVyZS5NdWx0aUNhcHR1cmUo
b3V0PUZhbHNlLCBpbl89RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2FwdHVyZT1jYXB0dXJlLiVzKQorICAgICAgICBjYXAgPSBjYXB0dXJlLk11bHRpQ2FwdHVy
ZSgKKyAgICAgICAgICAgIGluXz1Ob25lLAorICAgICAgICAgICAgb3V0PU5vbmUsCisgICAgICAg
ICAgICBlcnI9Y2FwdHVyZS4lcywKKyAgICAgICAgKQogICAgICAgICBjYXAuc3RhcnRfY2FwdHVy
aW5nKCkKIAotICAgICAgICBsb2dnaW5nLndhcm4oImhlbGxvMSIpCisgICAgICAgIGxvZ2dpbmcu
d2FybmluZygiaGVsbG8xIikKICAgICAgICAgb3V0ZXJyID0gY2FwLnJlYWRvdXRlcnIoKQotICAg
ICAgICBwcmludCAoInN1c3BlbmQsIGNhcHR1cmVkICUlcyIgJSUob3V0ZXJyLCkpCi0gICAgICAg
IGxvZ2dpbmcud2FybigiaGVsbG8yIikKKyAgICAgICAgcHJpbnQoInN1c3BlbmQsIGNhcHR1cmVk
ICUlcyIgJSUob3V0ZXJyLCkpCisgICAgICAgIGxvZ2dpbmcud2FybmluZygiaGVsbG8yIikKIAog
ICAgICAgICBjYXAucG9wX291dGVycl90b19vcmlnKCkKLSAgICAgICAgbG9nZ2luZy53YXJuKCJo
ZWxsbzMiKQorICAgICAgICBsb2dnaW5nLndhcm5pbmcoImhlbGxvMyIpCiAKICAgICAgICAgb3V0
ZXJyID0gY2FwLnJlYWRvdXRlcnIoKQotICAgICAgICBwcmludCAoInN1c3BlbmQyLCBjYXB0dXJl
ZCAlJXMiICUlIChvdXRlcnIsKSkKKyAgICAgICAgcHJpbnQoInN1c3BlbmQyLCBjYXB0dXJlZCAl
JXMiICUlIChvdXRlcnIsKSkKICAgICAiIiIKICAgICAgICAgJSAobWV0aG9kLCkKICAgICApCkBA
IC0xMzE3LDggKzE0MTIsOCBAQCBkZWYgdGVzdF9lcnJvcl9hdHRyaWJ1dGVfaXNzdWU1NTUodGVz
dGRpcik6CiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGRlZiB0ZXN0
X2NhcGF0dHIoKToKLSAgICAgICAgICAgIGFzc2VydCBzeXMuc3Rkb3V0LmVycm9ycyA9PSAic3Ry
aWN0IgotICAgICAgICAgICAgYXNzZXJ0IHN5cy5zdGRlcnIuZXJyb3JzID09ICJzdHJpY3QiCisg
ICAgICAgICAgICBhc3NlcnQgc3lzLnN0ZG91dC5lcnJvcnMgPT0gInJlcGxhY2UiCisgICAgICAg
ICAgICBhc3NlcnQgc3lzLnN0ZGVyci5lcnJvcnMgPT0gInJlcGxhY2UiCiAgICAgIiIiCiAgICAg
KQogICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCkBAIC0xMzI5LDE5ICsxNDI0LDE4
IEBAIGRlZiB0ZXN0X2Vycm9yX2F0dHJpYnV0ZV9pc3N1ZTU1NSh0ZXN0ZGlyKToKICAgICBub3Qg
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpIGFuZCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+
PSAoMywgNiksCiAgICAgcmVhc29uPSJvbmx5IHB5My42KyBvbiB3aW5kb3dzIiwKICkKLWRlZiB0
ZXN0X3B5MzZfd2luZG93c2NvbnNvbGVpb193b3JrYXJvdW5kX25vbl9zdGFuZGFyZF9zdHJlYW1z
KCk6CitkZWYgdGVzdF9weTM2X3dpbmRvd3Njb25zb2xlaW9fd29ya2Fyb3VuZF9ub25fc3RhbmRh
cmRfc3RyZWFtcygpIC0+IE5vbmU6CiAgICAgIiIiCiAgICAgRW5zdXJlIF9weTM2X3dpbmRvd3Nj
b25zb2xlaW9fd29ya2Fyb3VuZCBmdW5jdGlvbiB3b3JrcyB3aXRoIG9iamVjdHMgdGhhdAogICAg
IGRvIG5vdCBpbXBsZW1lbnQgdGhlIGZ1bGwgYGBpb2BgLWJhc2VkIHN0cmVhbSBwcm90b2NvbCwg
Zm9yIGV4YW1wbGUgZXhlY25ldCBjaGFubmVscyAoIzI2NjYpLgogICAgICIiIgogICAgIGZyb20g
X3B5dGVzdC5jYXB0dXJlIGltcG9ydCBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91bmQK
IAotICAgIGNsYXNzIER1bW15U3RyZWFtKG9iamVjdCk6Ci0KKyAgICBjbGFzcyBEdW1teVN0cmVh
bToKICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgogICAgICAgICAgICAgcGFzcwogCi0gICAg
c3RyZWFtID0gRHVtbXlTdHJlYW0oKQorICAgIHN0cmVhbSA9IGNhc3QoVGV4dElPLCBEdW1teVN0
cmVhbSgpKQogICAgIF9weTM2X3dpbmRvd3Njb25zb2xlaW9fd29ya2Fyb3VuZChzdHJlYW0pCiAK
IApAQCAtMTM2MCwzNSArMTQ1NCwyMDAgQEAgZGVmIHRlc3RfZG9udHJlYWRmcm9taW5wdXRfaGFz
X2VuY29kaW5nKHRlc3RkaXIpOgogCiAKIGRlZiB0ZXN0X2NyYXNoX29uX2Nsb3NpbmdfdG1wZmls
ZV9weTI3KHRlc3RkaXIpOgotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICBwID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBwcmludF9mdW5jdGlvbgotICAgICAgICBpbXBvcnQgdGltZQogICAgICAgICBpbXBvcnQgdGhy
ZWFkaW5nCiAgICAgICAgIGltcG9ydCBzeXMKIAorICAgICAgICBwcmludGluZyA9IHRocmVhZGlu
Zy5FdmVudCgpCisKICAgICAgICAgZGVmIHNwYW0oKToKICAgICAgICAgICAgIGYgPSBzeXMuc3Rk
ZXJyCisgICAgICAgICAgICBwcmludCgnU1BBTUJFRk9SRScsIGVuZD0nJywgZmlsZT1mKQorICAg
ICAgICAgICAgcHJpbnRpbmcuc2V0KCkKKwogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAg
ICAgICAgICAgICBwcmludCgnLicsIGVuZD0nJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICAgICAgZi5mbHVzaCgpCisgICAgICAgICAgICAgICAgZXhjZXB0
IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAg
ICAgICBkZWYgdGVzdF9zaWxseSgpOgorICAgICAgICBkZWYgdGVzdF9zcGFtX2luX3RocmVhZCgp
OgogICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNwYW0pCiAgICAgICAg
ICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAgICAg
dGltZS5zbGVlcCgwLjUpCiAKKyAgICAgICAgICAgIHByaW50aW5nLndhaXQoKQogICAgICIiIgog
ICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKKyAgICAj
IERvIG5vdCBjb25zaWRlciBwbHVnaW5zIGxpa2UgaHlwb3RoZXNpcywgd2hpY2ggbWlnaHQgb3V0
cHV0IHRvIHN0ZGVyci4KKyAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX0RJ
U0FCTEVfUExVR0lOX0FVVE9MT0FEIiwgIjEiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0X3N1YnByb2Nlc3Moc3RyKHApKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKyAgICBh
c3NlcnQgcmVzdWx0LnN0ZGVyci5zdHIoKSA9PSAiIgorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqT1NFcnJvcioiKQorCisKK2RlZiB0ZXN0X2dsb2JhbF9jYXB0dXJlX3dpdGhf
bGl2ZV9sb2dnaW5nKHRlc3RkaXIpOgorICAgICMgSXNzdWUgMzgxOQorICAgICMgY2FwdHVyZSBz
aG91bGQgd29yayB3aXRoIGxpdmUgY2xpIGxvZ2dpbmcKKworICAgICMgVGVhcmRvd24gcmVwb3J0
IHNlZW1zIHRvIGhhdmUgdGhlIGNhcHR1cmUgZm9yIHRoZSB3aG9sZSBwcm9jZXNzIChzZXR1cCwg
Y2FwdHVyZSwgdGVhcmRvd24pCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIi
IgorICAgICAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHJlcG9ydCk6CisgICAgICAg
ICAgICBpZiAidGVzdF9nbG9iYWwiIGluIHJlcG9ydC5ub2RlaWQ6CisgICAgICAgICAgICAgICAg
aWYgcmVwb3J0LndoZW4gPT0gInRlYXJkb3duIjoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBv
cGVuKCJjYXBsb2ciLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRl
KHJlcG9ydC5jYXBsb2cpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbigiY2Fwc3Rkb3V0
IiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShyZXBvcnQuY2Fw
c3Rkb3V0KQorICAgICAgICAiIiIKKyAgICApCisKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisg
ICAgICAgICIiIgorICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICBpbXBvcnQgc3lzCisg
ICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cihfX25hbWVfXykKKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZpeDEo
KToKKyAgICAgICAgICAgIHByaW50KCJmaXggc2V0dXAiKQorICAgICAgICAgICAgbG9nZ2luZy5p
bmZvKCJmaXggc2V0dXAiKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGxvZ2dpbmcu
aW5mbygiZml4IHRlYXJkb3duIikKKyAgICAgICAgICAgIHByaW50KCJmaXggdGVhcmRvd24iKQor
CisgICAgICAgIGRlZiB0ZXN0X2dsb2JhbChmaXgxKToKKyAgICAgICAgICAgIHByaW50KCJiZWdp
biB0ZXN0IikKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygic29tZXRoaW5nIGluIHRlc3QiKQor
ICAgICAgICAgICAgcHJpbnQoImVuZCB0ZXN0IikKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi0tbG9nLWNsaS1sZXZlbD1JTkZP
IikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKyAgICB3aXRoIG9wZW4oImNhcGxvZyIp
IGFzIGY6CisgICAgICAgIGNhcGxvZyA9IGYucmVhZCgpCisKKyAgICBhc3NlcnQgImZpeCBzZXR1
cCIgaW4gY2FwbG9nCisgICAgYXNzZXJ0ICJzb21ldGhpbmcgaW4gdGVzdCIgaW4gY2FwbG9nCisg
ICAgYXNzZXJ0ICJmaXggdGVhcmRvd24iIGluIGNhcGxvZworCisgICAgd2l0aCBvcGVuKCJjYXBz
dGRvdXQiKSBhcyBmOgorICAgICAgICBjYXBzdGRvdXQgPSBmLnJlYWQoKQorCisgICAgYXNzZXJ0
ICJmaXggc2V0dXAiIGluIGNhcHN0ZG91dAorICAgIGFzc2VydCAiYmVnaW4gdGVzdCIgaW4gY2Fw
c3Rkb3V0CisgICAgYXNzZXJ0ICJlbmQgdGVzdCIgaW4gY2Fwc3Rkb3V0CisgICAgYXNzZXJ0ICJm
aXggdGVhcmRvd24iIGluIGNhcHN0ZG91dAorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
Y2FwdHVyZV9maXh0dXJlIiwgWyJjYXBzeXMiLCAiY2FwZmQiXSkKK2RlZiB0ZXN0X2NhcHR1cmVf
d2l0aF9saXZlX2xvZ2dpbmcodGVzdGRpciwgY2FwdHVyZV9maXh0dXJlKToKKyAgICAjIElzc3Vl
IDM4MTkKKyAgICAjIGNhcHR1cmUgc2hvdWxkIHdvcmsgd2l0aCBsaXZlIGNsaSBsb2dnaW5nCisK
KyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgbG9n
Z2luZworICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCisKKyAgICAgICAgZGVmIHRlc3RfY2FwdHVyZSh7MH0pOgorICAgICAg
ICAgICAgcHJpbnQoImhlbGxvIikKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIndvcmxk
XFxuIikKKyAgICAgICAgICAgIGNhcHR1cmVkID0gezB9LnJlYWRvdXRlcnIoKQorICAgICAgICAg
ICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiaGVsbG9cXG4iCisgICAgICAgICAgICBhc3NlcnQg
Y2FwdHVyZWQuZXJyID09ICJ3b3JsZFxcbiIKKworICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCJz
b21ldGhpbmciKQorICAgICAgICAgICAgcHJpbnQoIm5leHQiKQorICAgICAgICAgICAgbG9nZ2lu
Zy5pbmZvKCJzb21ldGhpbmciKQorCisgICAgICAgICAgICBjYXB0dXJlZCA9IHswfS5yZWFkb3V0
ZXJyKCkKKyAgICAgICAgICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIm5leHRcXG4iCisgICAg
ICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICBjYXB0dXJlX2ZpeHR1cmUKKyAgICAgICAgKQor
ICAgICkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi0tbG9n
LWNsaS1sZXZlbD1JTkZPIikKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCi0gICAgYXNzZXJ0
ICJJT0Vycm9yIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogCiAKLWRlZiB0ZXN0X3BpY2ts
aW5nX2FuZF91bnBpY2tsaW5nX2VuY29kZWRfZmlsZSgpOgotICAgICMgU2VlIGh0dHBzOi8vYml0
YnVja2V0Lm9yZy9weXRlc3QtZGV2L3B5dGVzdC9wdWxsLXJlcXVlc3QvMTk0Ci0gICAgIyBwaWNr
bGUubG9hZHMoKSByYWlzZXMgaW5maW5pdGUgcmVjdXJzaW9uIGlmCi0gICAgIyBFbmNvZGVkRmls
ZS5fX2dldGF0dHJfXyBpcyBub3QgaW1wbGVtZW50ZWQgcHJvcGVybHkKLSAgICBlZiA9IGNhcHR1
cmUuRW5jb2RlZEZpbGUoTm9uZSwgTm9uZSkKLSAgICBlZl9hc19zdHIgPSBwaWNrbGUuZHVtcHMo
ZWYpCi0gICAgcGlja2xlLmxvYWRzKGVmX2FzX3N0cikKK2RlZiB0ZXN0X3R5cGVlcnJvcl9lbmNv
ZGVkZmlsZV93cml0ZSh0ZXN0ZGlyKToKKyAgICAiIiJJdCBzaG91bGQgYmVoYXZlIHRoZSBzYW1l
IHdpdGggYW5kIHdpdGhvdXQgb3V0cHV0IGNhcHR1cmluZyAoIzQ4NjEpLiIiIgorICAgIHAgPSB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mYWlscygp
OgorICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShi
ImZvbyIpCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdF93aXRob3V0X2NhcHR1cmUgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLXMiLCBzdHIocCkpCisgICAgcmVzdWx0X3dpdGhfY2FwdHVyZSA9IHRl
c3RkaXIucnVucHl0ZXN0KHN0cihwKSkKKworICAgIGFzc2VydCByZXN1bHRfd2l0aF9jYXB0dXJl
LnJldCA9PSByZXN1bHRfd2l0aG91dF9jYXB0dXJlLnJldAorICAgIG91dCA9IHJlc3VsdF93aXRo
X2NhcHR1cmUuc3Rkb3V0LnN0cigpCisgICAgYXNzZXJ0ICgiVHlwZUVycm9yOiB3cml0ZSgpIGFy
Z3VtZW50IG11c3QgYmUgc3RyLCBub3QgYnl0ZXMiIGluIG91dCkgb3IgKAorICAgICAgICAiVHlw
ZUVycm9yOiB1bmljb2RlIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgJ2J5dGVzJyIgaW4gb3V0Cisg
ICAgKQorCisKK2RlZiB0ZXN0X3N0ZGVycl93cml0ZV9yZXR1cm5zX2xlbihjYXBzeXMpOgorICAg
ICIiIldyaXRlIG9uIEVuY29kZWQgZmlsZXMsIG5hbWVseSBjYXB0dXJlZCBzdGRlcnIsIHNob3Vs
ZCByZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbi4iIiIKKyAgICBhc3NlcnQgc3lz
LnN0ZGVyci53cml0ZSgiRm9vIikgPT0gMworCisKK2RlZiB0ZXN0X2VuY29kZWRmaWxlX3dyaXRl
bGluZXModG1wZmlsZTogQmluYXJ5SU8pIC0+IE5vbmU6CisgICAgZWYgPSBjYXB0dXJlLkVuY29k
ZWRGaWxlKHRtcGZpbGUsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgd2l0aCBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvcik6CisgICAgICAgIGVmLndyaXRlbGluZXMoW2IibGluZTEiLCBiImxpbmUyIl0p
CisgICAgYXNzZXJ0IGVmLndyaXRlbGluZXMoWyJsaW5lMyIsICJsaW5lNCJdKSBpcyBOb25lICAj
IHR5cGU6IGlnbm9yZVtmdW5jLXJldHVybnMtdmFsdWVdCisgICAgZWYuZmx1c2goKQorICAgIHRt
cGZpbGUuc2VlaygwKQorICAgIGFzc2VydCB0bXBmaWxlLnJlYWQoKSA9PSBiImxpbmUzbGluZTQi
CisgICAgdG1wZmlsZS5jbG9zZSgpCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3Ip
OgorICAgICAgICBlZi5yZWFkKCkKKworCitkZWYgdGVzdF9fZ2V0X211bHRpY2FwdHVyZSgpIC0+
IE5vbmU6CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoX2dldF9tdWx0aWNhcHR1cmUoIm5vIiksIE11
bHRpQ2FwdHVyZSkKKyAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIF9nZXRfbXVsdGljYXB0
dXJlLCAidW5rbm93biIpLm1hdGNoKAorICAgICAgICByIl51bmtub3duIGNhcHR1cmluZyBtZXRo
b2Q6ICd1bmtub3duJyIKKyAgICApCisKKworZGVmIHRlc3RfbG9nZ2luZ193aGlsZV9jb2xsZWN0
aW5nKHRlc3RkaXIpOgorICAgICIiIklzc3VlICM2MjQwOiBDYWxscyB0byBsb2dnaW5nLnh4eCgp
IGR1cmluZyBjb2xsZWN0aW9uIGNhdXNlcyBhbGwgbG9nZ2luZyBjYWxscyB0byBiZSBkdXBsaWNh
dGVkIHRvIHN0ZGVyciIiIgorICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIi
IlwKKyAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgICAgICBsb2dnaW5nLndhcm5pbmcoImR1
cmluZyBjb2xsZWN0aW9uIikKKworICAgICAgICBkZWYgdGVzdF9sb2dnaW5nKCk6CisgICAgICAg
ICAgICBsb2dnaW5nLndhcm5pbmcoImR1cmluZyBjYWxsIikKKyAgICAgICAgICAgIGFzc2VydCBG
YWxzZQorICAgICAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rf
c3VicHJvY2VzcyhwKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLlRFU1RTX0ZB
SUxFRAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAg
ICAgICAgIip0ZXN0XyoucHkgRioiLAorICAgICAgICAgICAgIj09PT0qIEZBSUxVUkVTICo9PT09
IiwKKyAgICAgICAgICAgICJfX19fKl9fX18iLAorICAgICAgICAgICAgIiotLS0gQ2FwdHVyZWQg
bG9nIGNhbGwqIiwKKyAgICAgICAgICAgICJXQVJOSU5HICogZHVyaW5nIGNhbGwiLAorICAgICAg
ICAgICAgIioxIGZhaWxlZCoiLAorICAgICAgICBdCisgICAgKQorICAgIHJlc3VsdC5zdGRvdXQu
bm9fZm5tYXRjaF9saW5lKCIqQ2FwdHVyZWQgc3RkZXJyIGNhbGwqIikKKyAgICByZXN1bHQuc3Rk
b3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmR1cmluZyBjb2xsZWN0aW9uKiIpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29sbGVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9jb2xsZWN0aW9uLnB5CmluZGV4IDY1N2Q2NGM3NGUyNC4uM2UxYjgxNmI3OWUwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29sbGVjdGlvbi5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29sbGVjdGlvbi5weQpAQCAtMSwzNSArMSwyNSBAQAot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9m
dW5jdGlvbgoraW1wb3J0IG9zCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgc3lzCi1pbXBvcnQgcHl0
ZXN0Ci0KLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1mcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vz
c2lvbiwgRVhJVF9OT1RFU1RTQ09MTEVDVEVELCBfaW5fdmVudgoraW1wb3J0IHRleHR3cmFwCiAK
K2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9t
IF9weXRlc3QubWFpbiBpbXBvcnQgX2luX3ZlbnYKK2Zyb20gX3B5dGVzdC5tYWluIGltcG9ydCBT
ZXNzaW9uCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnBh
dGhsaWIgaW1wb3J0IHN5bWxpbmtfb3Jfc2tpcAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9y
dCBUZXN0ZGlyCiAKLWNsYXNzIFRlc3RDb2xsZWN0b3Iob2JqZWN0KToKIAorY2xhc3MgVGVzdENv
bGxlY3RvcjoKICAgICBkZWYgdGVzdF9jb2xsZWN0X3ZlcnN1c19pdGVtKHNlbGYpOgogICAgICAg
ICBmcm9tIHB5dGVzdCBpbXBvcnQgQ29sbGVjdG9yLCBJdGVtCiAKICAgICAgICAgYXNzZXJ0IG5v
dCBpc3N1YmNsYXNzKENvbGxlY3RvciwgSXRlbSkKICAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNs
YXNzKEl0ZW0sIENvbGxlY3RvcikKIAotICAgIGRlZiB0ZXN0X2NvbXBhdF9hdHRyaWJ1dGVzKHNl
bGYsIHRlc3RkaXIsIHJlY3dhcm4pOgotICAgICAgICBtb2Rjb2wgPSB0ZXN0ZGlyLmdldG1vZHVs
ZWNvbCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfcGFzcygpOiBwYXNz
Ci0gICAgICAgICAgICBkZWYgdGVzdF9mYWlsKCk6IGFzc2VydCAwCi0gICAgICAgICIiIgotICAg
ICAgICApCi0gICAgICAgIHJlY3dhcm4uY2xlYXIoKQotICAgICAgICBhc3NlcnQgbW9kY29sLk1v
ZHVsZSA9PSBweXRlc3QuTW9kdWxlCi0gICAgICAgIGFzc2VydCBtb2Rjb2wuQ2xhc3MgPT0gcHl0
ZXN0LkNsYXNzCi0gICAgICAgIGFzc2VydCBtb2Rjb2wuSXRlbSA9PSBweXRlc3QuSXRlbQotICAg
ICAgICBhc3NlcnQgbW9kY29sLkZpbGUgPT0gcHl0ZXN0LkZpbGUKLSAgICAgICAgYXNzZXJ0IG1v
ZGNvbC5GdW5jdGlvbiA9PSBweXRlc3QuRnVuY3Rpb24KLQotICAgIGRlZiB0ZXN0X2NoZWNrX2Vx
dWFsaXR5KHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2NoZWNrX2VxdWFsaXR5KHNlbGYs
IHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0
bW9kdWxlY29sKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVzdF9wYXNzKCk6
IHBhc3MKQEAgLTQzLDggKzMzLDYgQEAgY2xhc3MgVGVzdENvbGxlY3RvcihvYmplY3QpOgogCiAg
ICAgICAgIGFzc2VydCBmbjEgPT0gZm4yCiAgICAgICAgIGFzc2VydCBmbjEgIT0gbW9kY29sCi0g
ICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCk6Ci0gICAgICAgICAgICBhc3NlcnQg
Y21wKGZuMSwgZm4yKSA9PSAwICAjIE5PUUEKICAgICAgICAgYXNzZXJ0IGhhc2goZm4xKSA9PSBo
YXNoKGZuMikKIAogICAgICAgICBmbjMgPSB0ZXN0ZGlyLmNvbGxlY3RfYnlfbmFtZShtb2Rjb2ws
ICJ0ZXN0X2ZhaWwiKQpAQCAtNTMsMTcgKzQxLDIwIEBAIGNsYXNzIFRlc3RDb2xsZWN0b3Iob2Jq
ZWN0KToKICAgICAgICAgYXNzZXJ0IGZuMSAhPSBmbjMKIAogICAgICAgICBmb3IgZm4gaW4gZm4x
LCBmbjIsIGZuMzoKLSAgICAgICAgICAgIGFzc2VydCBmbiAhPSAzCisgICAgICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShmbiwgcHl0ZXN0LkZ1bmN0aW9uKQorICAgICAgICAgICAgYXNzZXJ0IGZu
ICE9IDMgICMgdHlwZTogaWdub3JlW2NvbXBhcmlzb24tb3ZlcmxhcF0KICAgICAgICAgICAgIGFz
c2VydCBmbiAhPSBtb2Rjb2wKLSAgICAgICAgICAgIGFzc2VydCBmbiAhPSBbMSwgMiwgM10KLSAg
ICAgICAgICAgIGFzc2VydCBbMSwgMiwgM10gIT0gZm4KKyAgICAgICAgICAgIGFzc2VydCBmbiAh
PSBbMSwgMiwgM10gICMgdHlwZTogaWdub3JlW2NvbXBhcmlzb24tb3ZlcmxhcF0KKyAgICAgICAg
ICAgIGFzc2VydCBbMSwgMiwgM10gIT0gZm4gICMgdHlwZTogaWdub3JlW2NvbXBhcmlzb24tb3Zl
cmxhcF0KICAgICAgICAgICAgIGFzc2VydCBtb2Rjb2wgIT0gZm4KIAorICAgICAgICBhc3NlcnQg
dGVzdGRpci5jb2xsZWN0X2J5X25hbWUobW9kY29sLCAiZG9lc25vdGV4aXN0IikgaXMgTm9uZQor
CiAgICAgZGVmIHRlc3RfZ2V0cGFyZW50KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBtb2Rjb2wg
PSB0ZXN0ZGlyLmdldG1vZHVsZWNvbCgKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgY2xh
c3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZvbygpOgor
ICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzOgorICAgICAgICAgICAgICAgICBkZWYgdGVzdF9m
b28oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAg
ICApCkBAIC04OCw3ICs3OSw3IEBAIGNsYXNzIFRlc3RDb2xsZWN0b3Iob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRo
LCBwYXJlbnQpOgogICAgICAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIueHh4IjoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEN1c3RvbUZpbGUocGF0aCwgcGFyZW50PXBhcmVudCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEN1c3RvbUZpbGUuZnJvbV9wYXJlbnQoZnNwYXRoPXBh
dGgsIHBhcmVudD1wYXJlbnQpCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIG5vZGUg
PSB0ZXN0ZGlyLmdldHBhdGhub2RlKGhlbGxvKQpAQCAtMTE0LDggKzEwNSw3IEBAIGNsYXNzIFRl
c3RDb2xsZWN0b3Iob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiY29sbGVjdGVkIDAgaXRlbXMiLCAiKm5vIHRlc3RzIHJhbiBpbioiXSkKIAogCi1jbGFzcyBU
ZXN0Q29sbGVjdEZTKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RDb2xsZWN0RlM6CiAgICAgZGVmIHRl
c3RfaWdub3JlZF9jZXJ0YWluX2RpcmVjdG9yaWVzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0
bXBkaXIgPSB0ZXN0ZGlyLnRtcGRpcgogICAgICAgICB0bXBkaXIuZW5zdXJlKCJidWlsZCIsICJ0
ZXN0X25vdGZvdW5kLnB5IikKQEAgLTEyNiw4ICsxMTYsOCBAQCBjbGFzcyBUZXN0Q29sbGVjdEZT
KG9iamVjdCk6CiAgICAgICAgIHRtcGRpci5lbnN1cmUoIi53aGF0ZXZlciIsICJ0ZXN0X25vdGZv
dW5kLnB5IikKICAgICAgICAgdG1wZGlyLmVuc3VyZSgiLmJ6ciIsICJ0ZXN0X25vdGZvdW5kLnB5
IikKICAgICAgICAgdG1wZGlyLmVuc3VyZSgibm9ybWFsIiwgInRlc3RfZm91bmQucHkiKQotICAg
ICAgICBmb3IgeCBpbiB0bXBkaXIudmlzaXQoInRlc3RfKi5weSIpOgotICAgICAgICAgICAgeC53
cml0ZSgiZGVmIHRlc3RfaGVsbG8oKTogcGFzcyIpCisgICAgICAgIGZvciB4IGluIFBhdGgoc3Ry
KHRtcGRpcikpLnJnbG9iKCJ0ZXN0XyoucHkiKToKKyAgICAgICAgICAgIHgud3JpdGVfdGV4dCgi
ZGVmIHRlc3RfaGVsbG8oKTogcGFzcyIsICJ1dGYtOCIpCiAKICAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKICAgICAgICAgcyA9IHJlc3VsdC5zdGRv
dXQuc3RyKCkKQEAgLTE1Myw3ICsxNDMsNyBAQCBjbGFzcyBUZXN0Q29sbGVjdEZTKG9iamVjdCk6
CiAKICAgICAgICAgIyBieSBkZWZhdWx0LCBpZ25vcmUgdGVzdHMgaW5zaWRlIGEgdmlydHVhbGVu
dgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgICAgIGFzc2VydCAi
dGVzdF9pbnZlbnYiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5z
dGRvdXQubm9fZm5tYXRjaF9saW5lKCIqdGVzdF9pbnZlbnYqIikKICAgICAgICAgIyBhbGxvdyB0
ZXN0IGNvbGxlY3Rpb24gaWYgdXNlciBpbnNpc3RzCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItLWNvbGxlY3QtaW4tdmlydHVhbGVudiIpCiAgICAgICAgIGFzc2VydCAidGVz
dF9pbnZlbnYiIGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKQEAgLTE3OSw3ICsxNjksNyBAQCBjbGFz
cyBUZXN0Q29sbGVjdEZTKG9iamVjdCk6CiAgICAgICAgIHRlc3RmaWxlID0gdGVzdGRpci50bXBk
aXIuZW5zdXJlKCIudmlydHVhbCIsICJ0ZXN0X2ludmVudi5weSIpCiAgICAgICAgIHRlc3RmaWxl
LndyaXRlKCJkZWYgdGVzdF9oZWxsbygpOiBwYXNzIikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tY29sbGVjdC1pbi12aXJ0dWFsZW52IikKLSAgICAgICAgYXNzZXJ0ICJ0
ZXN0X2ludmVudiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAgICAgcmVzdWx0LnN0
ZG91dC5ub19mbm1hdGNoX2xpbmUoIip0ZXN0X2ludmVudioiKQogICAgICAgICAjIC4uLnVubGVz
cyB0aGUgdmlydHVhbGVudiBpcyBleHBsaWNpdGx5IGdpdmVuIG9uIHRoZSBDTEkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1pbi12aXJ0dWFsZW52IiwgIi52
aXJ0dWFsIikKICAgICAgICAgYXNzZXJ0ICJ0ZXN0X2ludmVudiIgaW4gcmVzdWx0LnN0ZG91dC5z
dHIoKQpAQCAtMjUyLDE0ICsyNDIsMTIgQEAgY2xhc3MgVGVzdENvbGxlY3RGUyhvYmplY3QpOgog
ICAgICAgICAgICAgYXNzZXJ0IFt4Lm5hbWUgZm9yIHggaW4gaXRlbXNdID09IFsidGVzdF8lcyIg
JSBkaXJuYW1lXQogCiAKLWNsYXNzIFRlc3RDb2xsZWN0UGx1Z2luSG9va1JlbGF5KG9iamVjdCk6
Ci0KK2NsYXNzIFRlc3RDb2xsZWN0UGx1Z2luSG9va1JlbGF5OgogICAgIGRlZiB0ZXN0X3B5dGVz
dF9jb2xsZWN0X2ZpbGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHdhc2NhbGxlZCA9IFtdCiAK
LSAgICAgICAgY2xhc3MgUGx1Z2luKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBweXRlc3Rf
Y29sbGVjdF9maWxlKHNlbGYsIHBhdGgsIHBhcmVudCk6CisgICAgICAgIGNsYXNzIFBsdWdpbjoK
KyAgICAgICAgICAgIGRlZiBweXRlc3RfY29sbGVjdF9maWxlKHNlbGYsIHBhdGgpOgogICAgICAg
ICAgICAgICAgIGlmIG5vdCBwYXRoLmJhc2VuYW1lLnN0YXJ0c3dpdGgoIi4iKToKICAgICAgICAg
ICAgICAgICAgICAgIyBJZ25vcmUgaGlkZGVuIGZpbGVzLCBlLmcuIC50ZXN0bW9uZGF0YS4KICAg
ICAgICAgICAgICAgICAgICAgd2FzY2FsbGVkLmFwcGVuZChwYXRoKQpAQCAtMjY5LDIzICsyNTcs
OCBAQCBjbGFzcyBUZXN0Q29sbGVjdFBsdWdpbkhvb2tSZWxheShvYmplY3QpOgogICAgICAgICBh
c3NlcnQgbGVuKHdhc2NhbGxlZCkgPT0gMQogICAgICAgICBhc3NlcnQgd2FzY2FsbGVkWzBdLmV4
dCA9PSAiLmFiYyIKIAotICAgIGRlZiB0ZXN0X3B5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeShzZWxm
LCB0ZXN0ZGlyKToKLSAgICAgICAgd2FzY2FsbGVkID0gW10KLQotICAgICAgICBjbGFzcyBQbHVn
aW4ob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeShz
ZWxmLCBwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHdhc2NhbGxlZC5hcHBlbmQocGF0
aC5iYXNlbmFtZSkKLQotICAgICAgICB0ZXN0ZGlyLm1rZGlyKCJoZWxsbyIpCi0gICAgICAgIHRl
c3RkaXIubWtkaXIoIndvcmxkIikKLSAgICAgICAgcHl0ZXN0Lm1haW4odGVzdGRpci50bXBkaXIs
IHBsdWdpbnM9W1BsdWdpbigpXSkKLSAgICAgICAgYXNzZXJ0ICJoZWxsbyIgaW4gd2FzY2FsbGVk
Ci0gICAgICAgIGFzc2VydCAid29ybGQiIGluIHdhc2NhbGxlZAotCi0KLWNsYXNzIFRlc3RQcnVu
ZXRyYWNlYmFjayhvYmplY3QpOgogCitjbGFzcyBUZXN0UHJ1bmV0cmFjZWJhY2s6CiAgICAgZGVm
IHRlc3RfY3VzdG9tX3JlcHJfZmFpbHVyZShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtMjk2LDcgKzI2OSw3IEBAIGNs
YXNzIFRlc3RQcnVuZXRyYWNlYmFjayhvYmplY3QpOgogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShw
YXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHJldHVybiBNeUZpbGUocGF0aCwgcGFyZW50
KQorICAgICAgICAgICAgICAgIHJldHVybiBNeUZpbGUuZnJvbV9wYXJlbnQoZnNwYXRoPXBhdGgs
IHBhcmVudD1wYXJlbnQpCiAgICAgICAgICAgICBjbGFzcyBNeUVycm9yKEV4Y2VwdGlvbik6CiAg
ICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgY2xhc3MgTXlGaWxlKHB5dGVzdC5GaWxl
KToKQEAgLTMzNCw4ICszMDcsNyBAQCBjbGFzcyBUZXN0UHJ1bmV0cmFjZWJhY2sob2JqZWN0KToK
ICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkVSUk9SIGNvbGxlY3Rpbmcq
IiwgIipoZWFkZXIxKiJdKQogCiAKLWNsYXNzIFRlc3RDdXN0b21Db25mdGVzdHMob2JqZWN0KToK
LQorY2xhc3MgVGVzdEN1c3RvbUNvbmZ0ZXN0czoKICAgICBkZWYgdGVzdF9pZ25vcmVfY29sbGVj
dF9wYXRoKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAg
ICAgICAgICAgICIiIgpAQCAtMzYzLDEwICszMzUsMTAgQEAgY2xhc3MgVGVzdEN1c3RvbUNvbmZ0
ZXN0cyhvYmplY3QpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9o
ZWxsbygpOiBwYXNzIikKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCkKICAg
ICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoIioxIHBhc3NlZCoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqMSBwYXNzZWQqIl0pCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
LSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECi0gICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKmNvbGxlY3RlZCAwIGl0ZW1zKiIpCisg
ICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAor
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqY29sbGVjdGVkIDAgaXRlbXMq
Il0pCiAKICAgICBkZWYgdGVzdF9jb2xsZWN0aWdub3JlX2V4Y2x1ZGVfb25fb3B0aW9uKHNlbGYs
IHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKQEAgLTM4MiwxMiArMzU0
LDMyIEBAIGNsYXNzIFRlc3RDdXN0b21Db25mdGVzdHMob2JqZWN0KToKICAgICAgICAgdGVzdGRp
ci5ta2RpcigiaGVsbG8iKQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUodGVzdF93b3JsZD0i
ZGVmIHRlc3RfaGVsbG8oKTogcGFzcyIpCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVE
Ci0gICAgICAgIGFzc2VydCAicGFzc2VkIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAg
ICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipwYXNzZWQqIikKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tWFgiKQogICAgICAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSAwCiAgICAgICAgIGFzc2VydCAicGFzc2VkIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigp
CiAKKyAgICBkZWYgdGVzdF9jb2xsZWN0aWdub3JlZ2xvYl9leGNsdWRlX29uX29wdGlvbihzZWxm
LCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgIGNvbGxlY3RfaWdub3JlX2dsb2IgPSBbJyp3KmxbZHRdKiddCisgICAg
ICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAgICAgICAgIHBh
cnNlci5hZGRvcHRpb24oIi0tWFgiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNl
KQorICAgICAgICAgICAgZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKKyAgICAgICAgICAg
ICAgICBpZiBjb25maWcuZ2V0dmFsdWUoIlhYIik6CisgICAgICAgICAgICAgICAgICAgIGNvbGxl
Y3RfaWdub3JlX2dsb2JbOl0gPSBbXQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUodGVzdF93b3JsZD0iZGVmIHRlc3RfaGVsbG8oKTogcGFzcyIpCisg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X3dlbHQ9ImRlZiB0ZXN0X2hhbGxvKCk6IHBh
c3MiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAorICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqY29sbGVjdGVkIDAgaXRlbXMqIl0pCisgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLVhYIikKKyAgICAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gMAorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNz
ZWQqIl0pCisKICAgICBkZWYgdGVzdF9weXRlc3RfZnNfY29sbGVjdF9ob29rc19hcmVfc2Vlbihz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAg
ICAiIiIKQEAgLTM5NiwxMiArMzg4LDEyIEBAIGNsYXNzIFRlc3RDdXN0b21Db25mdGVzdHMob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxl
Y3RfZmlsZShwYXRoLCBwYXJlbnQpOgogICAgICAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIu
cHkiOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlNb2R1bGUocGF0aCwgcGFyZW50KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXlNb2R1bGUuZnJvbV9wYXJlbnQoZnNwYXRoPXBh
dGgsIHBhcmVudD1wYXJlbnQpCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHRlc3Rk
aXIubWtkaXIoInN1YiIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfeCgp
OiBwYXNzIikKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1v
bmx5IikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY28iKQogICAgICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqTXlNb2R1bGUqIiwgIip0ZXN0X3gqIl0p
CiAKICAgICBkZWYgdGVzdF9weXRlc3RfY29sbGVjdF9maWxlX2Zyb21fc2lzdGVyX2RpcihzZWxm
LCB0ZXN0ZGlyKToKQEAgLTQxNCw3ICs0MDYsNyBAQCBjbGFzcyBUZXN0Q3VzdG9tQ29uZnRlc3Rz
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZGVmIHB5dGVzdF9j
b2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKICAgICAgICAgICAgICAgICBpZiBwYXRoLmV4dCA9
PSAiLnB5IjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15TW9kdWxlMShwYXRoLCBwYXJl
bnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNeU1vZHVsZTEuZnJvbV9wYXJlbnQoZnNw
YXRoPXBhdGgsIHBhcmVudD1wYXJlbnQpCiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAg
IGNvbmYxLm1vdmUoc3ViMS5qb2luKGNvbmYxLmJhc2VuYW1lKSkKQEAgLTQyNSw0NSArNDE3LDI1
IEBAIGNsYXNzIFRlc3RDdXN0b21Db25mdGVzdHMob2JqZWN0KToKICAgICAgICAgICAgICAgICBw
YXNzCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgog
ICAgICAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIucHkiOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTXlNb2R1bGUyKHBhdGgsIHBhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE15TW9kdWxlMi5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKICAg
ICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgY29uZjIubW92ZShzdWIyLmpvaW4oY29uZjIu
YmFzZW5hbWUpKQogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF94KCk6
IHBhc3MiKQogICAgICAgICBwLmNvcHkoc3ViMS5qb2luKHAuYmFzZW5hbWUpKQogICAgICAgICBw
LmNvcHkoc3ViMi5qb2luKHAuYmFzZW5hbWUpKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLS1jb2xsZWN0LW9ubHkiKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1jbyIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipNeU1v
ZHVsZTEqIiwgIipNeU1vZHVsZTIqIiwgIip0ZXN0X3gqIl0pCiAKIAotY2xhc3MgVGVzdFNlc3Np
b24ob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X3BhcnNlYXJnKHNlbGYsIHRlc3RkaXIpOgotICAg
ICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQotICAg
ICAgICBzdWJkaXIgPSB0ZXN0ZGlyLm1rZGlyKCJzdWIiKQotICAgICAgICBzdWJkaXIuZW5zdXJl
KCJfX2luaXRfXy5weSIpCi0gICAgICAgIHRhcmdldCA9IHN1YmRpci5qb2luKHAuYmFzZW5hbWUp
Ci0gICAgICAgIHAubW92ZSh0YXJnZXQpCi0gICAgICAgIHN1YmRpci5jaGRpcigpCi0gICAgICAg
IGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcocC5iYXNlbmFtZSkKLSAgICAgICAgcmNvbCA9
IFNlc3Npb24oY29uZmlnPWNvbmZpZykKLSAgICAgICAgYXNzZXJ0IHJjb2wuZnNwYXRoID09IHN1
YmRpcgotICAgICAgICBwYXJ0cyA9IHJjb2wuX3BhcnNlYXJnKHAuYmFzZW5hbWUpCi0KLSAgICAg
ICAgYXNzZXJ0IHBhcnRzWzBdID09IHRhcmdldAotICAgICAgICBhc3NlcnQgbGVuKHBhcnRzKSA9
PSAxCi0gICAgICAgIHBhcnRzID0gcmNvbC5fcGFyc2VhcmcocC5iYXNlbmFtZSArICI6OnRlc3Rf
ZnVuYyIpCi0gICAgICAgIGFzc2VydCBwYXJ0c1swXSA9PSB0YXJnZXQKLSAgICAgICAgYXNzZXJ0
IHBhcnRzWzFdID09ICJ0ZXN0X2Z1bmMiCi0gICAgICAgIGFzc2VydCBsZW4ocGFydHMpID09IDIK
LQorY2xhc3MgVGVzdFNlc3Npb246CiAgICAgZGVmIHRlc3RfY29sbGVjdF90b3BkaXIoc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2Z1bmMo
KTogcGFzcyIpCiAgICAgICAgIGlkID0gIjo6Ii5qb2luKFtwLmJhc2VuYW1lLCAidGVzdF9mdW5j
Il0pCiAgICAgICAgICMgWFhYIG1pZ3JhdGUgdG8gY29sbGVjdG9ubHk/IChzZWUgYmVsb3cpCiAg
ICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoaWQpCiAgICAgICAgIHRvcGRpciA9
IHRlc3RkaXIudG1wZGlyCi0gICAgICAgIHJjb2wgPSBTZXNzaW9uKGNvbmZpZykKKyAgICAgICAg
cmNvbCA9IFNlc3Npb24uZnJvbV9jb25maWcoY29uZmlnKQogICAgICAgICBhc3NlcnQgdG9wZGly
ID09IHJjb2wuZnNwYXRoCiAgICAgICAgICMgcm9vdGlkID0gcmNvbC5ub2RlaWQKICAgICAgICAg
IyByb290MiA9IHJjb2wucGVyZm9ybV9jb2xsZWN0KFtyY29sLm5vZGVpZF0sIGdlbml0ZW1zPUZh
bHNlKVswXQpAQCAtNDg2LDcgKzQ1OCw3IEBAIGNsYXNzIFRlc3RTZXNzaW9uKG9iamVjdCk6CiAg
ICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCiAg
ICAgICAgIGlkID0gIjo6Ii5qb2luKFtwLmJhc2VuYW1lLCAidGVzdF9mdW5jIl0pCiAgICAgICAg
IGl0ZW1zLCBob29rcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMoaWQpCi0gICAgICAgIGl0
ZW0sID0gaXRlbXMKKyAgICAgICAgKGl0ZW0sKSA9IGl0ZW1zCiAgICAgICAgIGFzc2VydCBpdGVt
Lm5hbWUgPT0gInRlc3RfZnVuYyIKICAgICAgICAgbmV3aWQgPSBpdGVtLm5vZGVpZAogICAgICAg
ICBhc3NlcnQgbmV3aWQgPT0gaWQKQEAgLTUxMywxMyArNDg1LDggQEAgY2xhc3MgVGVzdFNlc3Np
b24ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAg
ICAgKQotICAgICAgICBub3JtaWQgPSBwLmJhc2VuYW1lICsgIjo6VGVzdENsYXNzOjooKTo6dGVz
dF9tZXRob2QiCi0gICAgICAgIGZvciBpZCBpbiBbCi0gICAgICAgICAgICBwLmJhc2VuYW1lLAot
ICAgICAgICAgICAgcC5iYXNlbmFtZSArICI6OlRlc3RDbGFzcyIsCi0gICAgICAgICAgICBwLmJh
c2VuYW1lICsgIjo6VGVzdENsYXNzOjooKSIsCi0gICAgICAgICAgICBub3JtaWQsCi0gICAgICAg
IF06CisgICAgICAgIG5vcm1pZCA9IHAuYmFzZW5hbWUgKyAiOjpUZXN0Q2xhc3M6OnRlc3RfbWV0
aG9kIgorICAgICAgICBmb3IgaWQgaW4gW3AuYmFzZW5hbWUsIHAuYmFzZW5hbWUgKyAiOjpUZXN0
Q2xhc3MiLCBub3JtaWRdOgogICAgICAgICAgICAgaXRlbXMsIGhvb2tyZWMgPSB0ZXN0ZGlyLmlu
bGluZV9nZW5pdGVtcyhpZCkKICAgICAgICAgICAgIGFzc2VydCBsZW4oaXRlbXMpID09IDEKICAg
ICAgICAgICAgIGFzc2VydCBpdGVtc1swXS5uYW1lID09ICJ0ZXN0X21ldGhvZCIKQEAgLTUzOCwx
MCArNTA1LDEwIEBAIGNsYXNzIFRlc3RTZXNzaW9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAjIG9rCiAgICAgICAgICAgICBjbGFzcyBTcGVjaWFsRmlsZShweXRlc3QuRmls
ZSk6CiAgICAgICAgICAgICAgICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBbU3BlY2lhbEl0ZW0obmFtZT0iY2hlY2siLCBwYXJlbnQ9c2VsZildCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBbU3BlY2lhbEl0ZW0uZnJvbV9wYXJlbnQobmFtZT0iY2hl
Y2siLCBwYXJlbnQ9c2VsZildCiAgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShw
YXRoLCBwYXJlbnQpOgogICAgICAgICAgICAgICAgIGlmIHBhdGguYmFzZW5hbWUgPT0gJXI6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBTcGVjaWFsRmlsZShmc3BhdGg9cGF0aCwgcGFyZW50
PXBhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNwZWNpYWxGaWxlLmZyb21fcGFy
ZW50KGZzcGF0aD1wYXRoLCBwYXJlbnQ9cGFyZW50KQogICAgICAgICAiIiIKICAgICAgICAgICAg
ICUgcC5iYXNlbmFtZQogICAgICAgICApCkBAIC02MTAsOSArNTc3LDkgQEAgY2xhc3MgVGVzdFNl
c3Npb24ob2JqZWN0KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mdW5j
KCk6IHBhc3MiKQogICAgICAgICBpdGVtcywgaG9va3JlYyA9IHRlc3RkaXIuaW5saW5lX2dlbml0
ZW1zKCkKICAgICAgICAgYXNzZXJ0IGxlbihpdGVtcykgPT0gMQotICAgICAgICBpdGVtLCA9IGl0
ZW1zCisgICAgICAgIChpdGVtLCkgPSBpdGVtcwogICAgICAgICBpdGVtczIsIGhvb2tyZWMgPSB0
ZXN0ZGlyLmlubGluZV9nZW5pdGVtcyhpdGVtLm5vZGVpZCkKLSAgICAgICAgaXRlbTIsID0gaXRl
bXMyCisgICAgICAgIChpdGVtMiwpID0gaXRlbXMyCiAgICAgICAgIGFzc2VydCBpdGVtMi5uYW1l
ID09IGl0ZW0ubmFtZQogICAgICAgICBhc3NlcnQgaXRlbTIuZnNwYXRoID09IGl0ZW0uZnNwYXRo
CiAKQEAgLTYyNywyNiArNTk0LDMwIEBAIGNsYXNzIFRlc3RTZXNzaW9uKG9iamVjdCk6CiAgICAg
ICAgIGFyZyA9IHAuYmFzZW5hbWUgKyAiOjpUZXN0Q2xhc3M6OnRlc3RfbWV0aG9kIgogICAgICAg
ICBpdGVtcywgaG9va3JlYyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1zKGFyZykKICAgICAgICAg
YXNzZXJ0IGxlbihpdGVtcykgPT0gMQotICAgICAgICBpdGVtLCA9IGl0ZW1zCi0gICAgICAgIGFz
c2VydCBpdGVtLm5vZGVpZC5lbmRzd2l0aCgiVGVzdENsYXNzOjooKTo6dGVzdF9tZXRob2QiKQor
ICAgICAgICAoaXRlbSwpID0gaXRlbXMKKyAgICAgICAgYXNzZXJ0IGl0ZW0ubm9kZWlkLmVuZHN3
aXRoKCJUZXN0Q2xhc3M6OnRlc3RfbWV0aG9kIikKICAgICAgICAgIyBlbnN1cmUgd2UgYXJlIHJl
cG9ydGluZyB0aGUgY29sbGVjdGlvbiBvZiB0aGUgc2luZ2xlIHRlc3QgaXRlbSAoIzI0NjQpCiAg
ICAgICAgIGFzc2VydCBbeC5uYW1lIGZvciB4IGluIHNlbGYuZ2V0X3JlcG9ydGVkX2l0ZW1zKGhv
b2tyZWMpXSA9PSBbInRlc3RfbWV0aG9kIl0KIAogCi1jbGFzcyBUZXN0X2dldGluaXRpYWxub2Rl
cyhvYmplY3QpOgotCi0gICAgZGVmIHRlc3RfZ2xvYmFsX2ZpbGUoc2VsZiwgdGVzdGRpciwgdG1w
ZGlyKToKK2NsYXNzIFRlc3RfZ2V0aW5pdGlhbG5vZGVzOgorICAgIGRlZiB0ZXN0X2dsb2JhbF9m
aWxlKHNlbGYsIHRlc3RkaXIsIHRtcGRpcikgLT4gTm9uZToKICAgICAgICAgeCA9IHRtcGRpci5l
bnN1cmUoIngucHkiKQogICAgICAgICB3aXRoIHRtcGRpci5hc19jd2QoKToKICAgICAgICAgICAg
IGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWd1cmUoeCkKICAgICAgICAgY29sID0gdGVzdGRp
ci5nZXRub2RlKGNvbmZpZywgeCkKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY29sLCBweXRl
c3QuTW9kdWxlKQogICAgICAgICBhc3NlcnQgY29sLm5hbWUgPT0gIngucHkiCisgICAgICAgIGFz
c2VydCBjb2wucGFyZW50IGlzIG5vdCBOb25lCiAgICAgICAgIGFzc2VydCBjb2wucGFyZW50LnBh
cmVudCBpcyBOb25lCiAgICAgICAgIGZvciBjb2wgaW4gY29sLmxpc3RjaGFpbigpOgogICAgICAg
ICAgICAgYXNzZXJ0IGNvbC5jb25maWcgaXMgY29uZmlnCiAKICAgICBkZWYgdGVzdF9wa2dmaWxl
KHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJWZXJpZnkgbmVzdGluZyB3aGVuIGEgbW9kdWxl
IGlzIHdpdGhpbiBhIHBhY2thZ2UuCisgICAgICAgIFRoZSBwYXJlbnQgY2hhaW4gc2hvdWxkIG1h
dGNoOiBNb2R1bGU8eC5weT4gLT4gUGFja2FnZTxzdWJkaXI+IC0+IFNlc3Npb24uCisgICAgICAg
ICAgICBTZXNzaW9uJ3MgcGFyZW50IHNob3VsZCBhbHdheXMgYmUgTm9uZS4KKyAgICAgICAgIiIi
CiAgICAgICAgIHRtcGRpciA9IHRlc3RkaXIudG1wZGlyCiAgICAgICAgIHN1YmRpciA9IHRtcGRp
ci5qb2luKCJzdWJkaXIiKQogICAgICAgICB4ID0gc3ViZGlyLmVuc3VyZSgieC5weSIpCkBAIC02
NTQsMTUgKzYyNSwxNyBAQCBjbGFzcyBUZXN0X2dldGluaXRpYWxub2RlcyhvYmplY3QpOgogICAg
ICAgICB3aXRoIHN1YmRpci5hc19jd2QoKToKICAgICAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIu
cGFyc2Vjb25maWd1cmUoeCkKICAgICAgICAgY29sID0gdGVzdGRpci5nZXRub2RlKGNvbmZpZywg
eCkKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY29sLCBweXRlc3QuTW9kdWxlKQogICAgICAg
ICBhc3NlcnQgY29sLm5hbWUgPT0gIngucHkiCi0gICAgICAgIGFzc2VydCBjb2wucGFyZW50LnBh
cmVudCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbCwgcHl0ZXN0Lk1vZHVs
ZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY29sLnBhcmVudCwgcHl0ZXN0LlBhY2thZ2Up
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbC5wYXJlbnQucGFyZW50LCBweXRlc3QuU2Vz
c2lvbikKKyAgICAgICAgIyBzZXNzaW9uIGlzIGJhdG1hbiAoaGFzIG5vIHBhcmVudHMpCisgICAg
ICAgIGFzc2VydCBjb2wucGFyZW50LnBhcmVudC5wYXJlbnQgaXMgTm9uZQogICAgICAgICBmb3Ig
Y29sIGluIGNvbC5saXN0Y2hhaW4oKToKICAgICAgICAgICAgIGFzc2VydCBjb2wuY29uZmlnIGlz
IGNvbmZpZwogCiAKLWNsYXNzIFRlc3RfZ2VuaXRlbXMob2JqZWN0KToKLQorY2xhc3MgVGVzdF9n
ZW5pdGVtczoKICAgICBkZWYgdGVzdF9jaGVja19jb2xsZWN0X2hhc2hlcyhzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAt
Njg1LDYgKzY1OCw4IEBAIGNsYXNzIFRlc3RfZ2VuaXRlbXMob2JqZWN0KToKICAgICBkZWYgdGVz
dF9leGFtcGxlX2l0ZW1zMShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorCiAg
ICAgICAgICAgICBkZWYgdGVzdG9uZSgpOgogICAgICAgICAgICAgICAgIHBhc3MKIApAQCAtNjkz
LDI5ICs2NjgsMzIgQEAgY2xhc3MgVGVzdF9nZW5pdGVtcyhvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICBwYXNzCiAKICAgICAgICAgICAgIGNsYXNzIFRlc3RZKFRlc3RYKToKLSAgICAgICAg
ICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJh
cmcwIiwgWyIuWyJdKQorICAgICAgICAgICAgICAgIGRlZiB0ZXN0bWV0aG9kX3R3byhzZWxmLCBh
cmcwKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICBpdGVtcywgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMocCkKLSAgICAg
ICAgYXNzZXJ0IGxlbihpdGVtcykgPT0gMworICAgICAgICBhc3NlcnQgbGVuKGl0ZW1zKSA9PSA0
CiAgICAgICAgIGFzc2VydCBpdGVtc1swXS5uYW1lID09ICJ0ZXN0b25lIgogICAgICAgICBhc3Nl
cnQgaXRlbXNbMV0ubmFtZSA9PSAidGVzdG1ldGhvZF9vbmUiCiAgICAgICAgIGFzc2VydCBpdGVt
c1syXS5uYW1lID09ICJ0ZXN0bWV0aG9kX29uZSIKKyAgICAgICAgYXNzZXJ0IGl0ZW1zWzNdLm5h
bWUgPT0gInRlc3RtZXRob2RfdHdvWy5bXSIKIAogICAgICAgICAjIGxldCdzIGFsc28gdGVzdCBn
ZXRtb2RwYXRoIGhlcmUKICAgICAgICAgYXNzZXJ0IGl0ZW1zWzBdLmdldG1vZHBhdGgoKSA9PSAi
dGVzdG9uZSIKICAgICAgICAgYXNzZXJ0IGl0ZW1zWzFdLmdldG1vZHBhdGgoKSA9PSAiVGVzdFgu
dGVzdG1ldGhvZF9vbmUiCiAgICAgICAgIGFzc2VydCBpdGVtc1syXS5nZXRtb2RwYXRoKCkgPT0g
IlRlc3RZLnRlc3RtZXRob2Rfb25lIgorICAgICAgICAjIFBSICM2MjAyOiBGaXggaW5jb3JyZWN0
IHJlc3VsdCBvZiBnZXRtb2RwYXRoIG1ldGhvZC4gKFJlc29sdmVzIGlzc3VlICM2MTg5KQorICAg
ICAgICBhc3NlcnQgaXRlbXNbM10uZ2V0bW9kcGF0aCgpID09ICJUZXN0WS50ZXN0bWV0aG9kX3R3
b1suW10iCiAKICAgICAgICAgcyA9IGl0ZW1zWzBdLmdldG1vZHBhdGgoc3RvcGF0bW9kdWxlPUZh
bHNlKQogICAgICAgICBhc3NlcnQgcy5lbmRzd2l0aCgidGVzdF9leGFtcGxlX2l0ZW1zMS50ZXN0
b25lIikKICAgICAgICAgcHJpbnQocykKIAogICAgIGRlZiB0ZXN0X2NsYXNzX2FuZF9mdW5jdGlv
bnNfZGlzY292ZXJ5X3VzaW5nX2dsb2Ioc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIgotICAg
ICAgICB0ZXN0cyB0aGF0IHB5dGhvbl9jbGFzc2VzIGFuZCBweXRob25fZnVuY3Rpb25zIGNvbmZp
ZyBvcHRpb25zIHdvcmsKLSAgICAgICAgYXMgcHJlZml4ZXMgYW5kIGdsb2ItbGlrZSBwYXR0ZXJu
cyAoaXNzdWUgIzYwMCkuCi0gICAgICAgICIiIgorICAgICAgICAiIiJUZXN0IHRoYXQgUHl0aG9u
X2NsYXNzZXMgYW5kIFB5dGhvbl9mdW5jdGlvbnMgY29uZmlnIG9wdGlvbnMgd29yaworICAgICAg
ICBhcyBwcmVmaXhlcyBhbmQgZ2xvYi1saWtlIHBhdHRlcm5zICgjNjAwKS4iIiIKICAgICAgICAg
dGVzdGRpci5tYWtlaW5pKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBbcHl0ZXN0XQpA
QCAtNzQ5LDE4ICs3MjcsMjMgQEAgZGVmIHRlc3RfbWF0Y2hub2Rlc190d29fY29sbGVjdGlvbnNf
c2FtZV9maWxlKHRlc3RkaXIpOgogICAgICAgICBjbGFzcyBQbHVnaW4yKG9iamVjdCk6CiAgICAg
ICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShzZWxmLCBwYXRoLCBwYXJlbnQpOgogICAg
ICAgICAgICAgICAgIGlmIHBhdGguZXh0ID09ICIuYWJjIjoKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE15RmlsZTIocGF0aCwgcGFyZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
TXlGaWxlMi5mcm9tX3BhcmVudChmc3BhdGg9cGF0aCwgcGFyZW50PXBhcmVudCkKIAogICAgICAg
ICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgogICAgICAgICAgICAgaWYg
cGF0aC5leHQgPT0gIi5hYmMiOgotICAgICAgICAgICAgICAgIHJldHVybiBNeUZpbGUxKHBhdGgs
IHBhcmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTXlGaWxlMS5mcm9tX3BhcmVudChmc3Bh
dGg9cGF0aCwgcGFyZW50PXBhcmVudCkKKworICAgICAgICBjbGFzcyBNeUZpbGUxKHB5dGVzdC5G
aWxlKToKKyAgICAgICAgICAgIGRlZiBjb2xsZWN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHlp
ZWxkIEl0ZW0xLmZyb21fcGFyZW50KG5hbWU9Iml0ZW0xIiwgcGFyZW50PXNlbGYpCiAKLSAgICAg
ICAgY2xhc3MgTXlGaWxlMShweXRlc3QuSXRlbSwgcHl0ZXN0LkZpbGUpOgotICAgICAgICAgICAg
ZGVmIHJ1bnRlc3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBjbGFzcyBN
eUZpbGUyKHB5dGVzdC5GaWxlKToKICAgICAgICAgICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAg
ICAgICAgICAgICAgIHJldHVybiBbSXRlbTIoImhlbGxvIiwgcGFyZW50PXNlbGYpXQorICAgICAg
ICAgICAgICAgIHlpZWxkIEl0ZW0yLmZyb21fcGFyZW50KG5hbWU9Iml0ZW0yIiwgcGFyZW50PXNl
bGYpCisKKyAgICAgICAgY2xhc3MgSXRlbTEocHl0ZXN0Lkl0ZW0pOgorICAgICAgICAgICAgZGVm
IHJ1bnRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGNsYXNzIEl0
ZW0yKHB5dGVzdC5JdGVtKToKICAgICAgICAgICAgIGRlZiBydW50ZXN0KHNlbGYpOgpAQCAtNzcx
LDEyICs3NTQsMTEgQEAgZGVmIHRlc3RfbWF0Y2hub2Rlc190d29fY29sbGVjdGlvbnNfc2FtZV9m
aWxlKHRlc3RkaXIpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSAwCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIg
cGFzc2VkKiJdKQotICAgIHJlcyA9IHRlc3RkaXIucnVucHl0ZXN0KCIlczo6aGVsbG8iICUgcC5i
YXNlbmFtZSkKKyAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiJXM6Oml0ZW0yIiAlIHAuYmFz
ZW5hbWUpCiAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkKiJdKQogCiAK
LWNsYXNzIFRlc3ROb2Rla2V5d29yZHMob2JqZWN0KToKLQorY2xhc3MgVGVzdE5vZGVrZXl3b3Jk
czoKICAgICBkZWYgdGVzdF9ub191bmRlcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgbW9kY29s
ID0gdGVzdGRpci5nZXRtb2R1bGVjb2woCiAgICAgICAgICAgICAiIiIKQEAgLTgwMyw2ICs3ODUs
NDMgQEAgY2xhc3MgVGVzdE5vZGVrZXl3b3JkcyhvYmplY3QpOgogICAgICAgICByZXByZWMgPSB0
ZXN0ZGlyLmlubGluZV9ydW4oIi1rIHJlcHIiKQogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29t
ZShwYXNzZWQ9MSwgZmFpbGVkPTApCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX21hdGNoaW5nX2lz
X2Nhc2VfaW5zZW5zaXRpdmVfYnlfZGVmYXVsdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIi
Q2hlY2sgdGhhdCBzZWxlY3Rpb24gdmlhIC1rIEVYUFJFU1NJT04gaXMgY2FzZS1pbnNlbnNpdGl2
ZS4KKworICAgICAgICBTaW5jZSBtYXJrZXJzIGFyZSBhbHNvIGFkZGVkIHRvIHRoZSBub2RlIGtl
eXdvcmRzLCB0aGV5IHRvbyBjYW4KKyAgICAgICAgYmUgbWF0Y2hlZCB3aXRob3V0IGhhdmluZyB0
byB0aGluayBhYm91dCBjYXNlIHNlbnNpdGl2aXR5LgorCisgICAgICAgICIiIgorICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKKworICAgICAgICAgICAgZGVmIHRlc3Rfc1BlQ2lGaUNUb1BpQ18xKCk6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IFRydWUKKworICAgICAgICAgICAgY2xhc3MgVGVzdFNwZWNpZmljVG9w
aWNfMjoKKyAgICAgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IFRydWUKKworICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnNQZUNpRmlDVG9QaWNf
MworICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQor
CisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuc1BlQ2lGaUNUb1BpY180CisgICAgICAgICAgICBj
bGFzcyBUZXN0OgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQgVHJ1ZQorCisgICAgICAgICAgICBkZWYgdGVzdF9mYWlsaW5nXzUoKToK
KyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJUaGlzIHNob3VsZCBub3QgbWF0Y2giCisK
KyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgbnVtX21hdGNoaW5nX3Rlc3RzID0gNAor
ICAgICAgICBmb3IgZXhwcmVzc2lvbiBpbiAoInNwZWNpZmljdG9waWMiLCAiU1BFQ0lGSUNUT1BJ
QyIsICJTcGVjaWZpY1RvcGljIik6CisgICAgICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGlu
ZV9ydW4oIi1rICIgKyBleHByZXNzaW9uKQorICAgICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNv
bWUocGFzc2VkPW51bV9tYXRjaGluZ190ZXN0cywgZmFpbGVkPTApCisKIAogQ09MTEVDVElPTl9F
UlJPUl9QWV9GSUxFUyA9IGRpY3QoCiAgICAgdGVzdF8wMV9mYWlsdXJlPSIiIgpAQCAtODUzLDEy
ICs4NzIsMTYgQEAgZGVmIHRlc3RfZXhpdF9vbl9jb2xsZWN0aW9uX3dpdGhfbWF4ZmFpbF9zbWFs
bGVyX3RoYW5fbl9lcnJvcnModGVzdGRpcik6CiAKICAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLS1tYXhmYWlsPTEiKQogICAgIGFzc2VydCByZXMucmV0ID09IDEKLQogICAgIHJlcy5zdGRv
dXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyIqRVJST1IgY29sbGVjdGluZyB0ZXN0XzAyX2lt
cG9ydF9lcnJvci5weSoiLCAiKk5vIG1vZHVsZSBuYW1lZCAqYXNkZmEqIl0KKyAgICAgICAgWwor
ICAgICAgICAgICAgImNvbGxlY3RlZCAxIGl0ZW0gLyAxIGVycm9yIiwKKyAgICAgICAgICAgICIq
RVJST1IgY29sbGVjdGluZyB0ZXN0XzAyX2ltcG9ydF9lcnJvci5weSoiLAorICAgICAgICAgICAg
IipObyBtb2R1bGUgbmFtZWQgKmFzZGZhKiIsCisgICAgICAgICAgICAiKiEgc3RvcHBpbmcgYWZ0
ZXIgMSBmYWlsdXJlcyAhKiIsCisgICAgICAgICAgICAiKj0gMSBlcnJvciBpbiAqIiwKKyAgICAg
ICAgXQogICAgICkKLQotICAgIGFzc2VydCAidGVzdF8wMyIgbm90IGluIHJlcy5zdGRvdXQuc3Ry
KCkKKyAgICByZXMuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKnRlc3RfMDMqIikKIAogCiBkZWYg
dGVzdF9leGl0X29uX2NvbGxlY3Rpb25fd2l0aF9tYXhmYWlsX2JpZ2dlcl90aGFuX25fZXJyb3Jz
KHRlc3RkaXIpOgpAQCAtODcwLDcgKzg5Myw2IEBAIGRlZiB0ZXN0X2V4aXRfb25fY29sbGVjdGlv
bl93aXRoX21heGZhaWxfYmlnZ2VyX3RoYW5fbl9lcnJvcnModGVzdGRpcik6CiAKICAgICByZXMg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1tYXhmYWlsPTQiKQogICAgIGFzc2VydCByZXMucmV0ID09
IDIKLQogICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwogICAgICAgICAg
ICAgImNvbGxlY3RlZCAyIGl0ZW1zIC8gMiBlcnJvcnMiLApAQCAtODc4LDYgKzkwMCw4IEBAIGRl
ZiB0ZXN0X2V4aXRfb25fY29sbGVjdGlvbl93aXRoX21heGZhaWxfYmlnZ2VyX3RoYW5fbl9lcnJv
cnModGVzdGRpcik6CiAgICAgICAgICAgICAiKk5vIG1vZHVsZSBuYW1lZCAqYXNkZmEqIiwKICAg
ICAgICAgICAgICIqRVJST1IgY29sbGVjdGluZyB0ZXN0XzAzX2ltcG9ydF9lcnJvci5weSoiLAog
ICAgICAgICAgICAgIipObyBtb2R1bGUgbmFtZWQgKmFzZGZhKiIsCisgICAgICAgICAgICAiKiEg
SW50ZXJydXB0ZWQ6IDIgZXJyb3JzIGR1cmluZyBjb2xsZWN0aW9uICEqIiwKKyAgICAgICAgICAg
ICIqPSAyIGVycm9ycyBpbiAqIiwKICAgICAgICAgXQogICAgICkKIApAQCAtODkzLDcgKzkxNyw3
IEBAIGRlZiB0ZXN0X2NvbnRpbnVlX29uX2NvbGxlY3Rpb25fZXJyb3JzKHRlc3RkaXIpOgogICAg
IGFzc2VydCByZXMucmV0ID09IDEKIAogICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAg
ICAgICAgWyJjb2xsZWN0ZWQgMiBpdGVtcyAvIDIgZXJyb3JzIiwgIioxIGZhaWxlZCwgMSBwYXNz
ZWQsIDIgZXJyb3IqIl0KKyAgICAgICAgWyJjb2xsZWN0ZWQgMiBpdGVtcyAvIDIgZXJyb3JzIiwg
IioxIGZhaWxlZCwgMSBwYXNzZWQsIDIgZXJyb3JzKiJdCiAgICAgKQogCiAKQEAgLTkxMCwyMCAr
OTM0LDIwIEBAIGRlZiB0ZXN0X2NvbnRpbnVlX29uX2NvbGxlY3Rpb25fZXJyb3JzX21heGZhaWwo
dGVzdGRpcik6CiAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29udGludWUtb24tY29s
bGVjdGlvbi1lcnJvcnMiLCAiLS1tYXhmYWlsPTMiKQogICAgIGFzc2VydCByZXMucmV0ID09IDEK
IAotICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImNvbGxlY3RlZCAyIGl0ZW1zIC8gMiBl
cnJvcnMiLCAiKjEgZmFpbGVkLCAyIGVycm9yKiJdKQorICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbImNvbGxlY3RlZCAyIGl0ZW1zIC8gMiBlcnJvcnMiLCAiKjEgZmFpbGVkLCAyIGVycm9y
cyoiXSkKIAogCiBkZWYgdGVzdF9maXh0dXJlX3Njb3BlX3NpYmxpbmdfY29uZnRlc3RzKHRlc3Rk
aXIpOgogICAgICIiIlJlZ3Jlc3Npb24gdGVzdCBjYXNlIGZvciBodHRwczovL2dpdGh1Yi5jb20v
cHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzI4MzYiIiIKLSAgICBmb29fcGF0aCA9IHRlc3RkaXIu
bWtweWRpcigiZm9vIikKKyAgICBmb29fcGF0aCA9IHRlc3RkaXIubWtkaXIoImZvbyIpCiAgICAg
Zm9vX3BhdGguam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgX3B5dGVzdC5fY29k
ZS5Tb3VyY2UoCisgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIlwKKyAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAg
ICAgICAgICAgZGVmIGZpeCgpOgorICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAg
ICAiIiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAg
ICAgICAgZGVmIGZpeCgpOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAiIiIKICAgICAgICAg
KQogICAgICkKICAgICBmb29fcGF0aC5qb2luKCJ0ZXN0X2Zvby5weSIpLndyaXRlKCJkZWYgdGVz
dF9mb28oZml4KTogYXNzZXJ0IGZpeCA9PSAxIikKQEAgLTk0MiwzICs5NjYsNDQ0IEBAIGRlZiB0
ZXN0X2ZpeHR1cmVfc2NvcGVfc2libGluZ19jb25mdGVzdHModGVzdGRpcik6CiAgICAgICAgICAg
ICAiKjEgcGFzc2VkLCAxIGVycm9yKiIsCiAgICAgICAgIF0KICAgICApCisKKworZGVmIHRlc3Rf
Y29sbGVjdF9pbml0X3Rlc3RzKHRlc3RkaXIpOgorICAgICIiIkNoZWNrIHRoYXQgd2UgY29sbGVj
dCBmaWxlcyBmcm9tIF9faW5pdF9fLnB5IGZpbGVzIHdoZW4gdGhleSBwYXRjaCB0aGUgJ3B5dGhv
bl9maWxlcycgKCMzNzczKSIiIgorICAgIHAgPSB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgiY29sbGVj
dC9jb2xsZWN0X2luaXRfdGVzdHMiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAs
ICItLWNvbGxlY3Qtb25seSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICBbCisgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMiLAorICAgICAgICAgICAgIjxQ
YWNrYWdlIHRlc3RzPiIsCisgICAgICAgICAgICAiICA8TW9kdWxlIF9faW5pdF9fLnB5PiIsCisg
ICAgICAgICAgICAiICAgIDxGdW5jdGlvbiB0ZXN0X2luaXQ+IiwKKyAgICAgICAgICAgICIgIDxN
b2R1bGUgdGVzdF9mb28ucHk+IiwKKyAgICAgICAgICAgICIgICAgPEZ1bmN0aW9uIHRlc3RfZm9v
PiIsCisgICAgICAgIF0KKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi4v
dGVzdHMiLCAiLS1jb2xsZWN0LW9ubHkiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKKyAgICAgICAgWworICAgICAgICAgICAgImNvbGxlY3RlZCAyIGl0ZW1zIiwKKyAgICAgICAg
ICAgICI8UGFja2FnZSB0ZXN0cz4iLAorICAgICAgICAgICAgIiAgPE1vZHVsZSBfX2luaXRfXy5w
eT4iLAorICAgICAgICAgICAgIiAgICA8RnVuY3Rpb24gdGVzdF9pbml0PiIsCisgICAgICAgICAg
ICAiICA8TW9kdWxlIHRlc3RfZm9vLnB5PiIsCisgICAgICAgICAgICAiICAgIDxGdW5jdGlvbiB0
ZXN0X2Zvbz4iLAorICAgICAgICBdCisgICAgKQorICAgICMgSWdub3JlcyBkdXBsaWNhdGVzIHdp
dGggIi4iIGFuZCBwa2dpbml0ICgjNDMxMCkuCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi4vdGVzdHMiLCAiLiIsICItLWNvbGxlY3Qtb25seSIpCisgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMi
LAorICAgICAgICAgICAgIjxQYWNrYWdlIHRlc3RzPiIsCisgICAgICAgICAgICAiICA8TW9kdWxl
IF9faW5pdF9fLnB5PiIsCisgICAgICAgICAgICAiICAgIDxGdW5jdGlvbiB0ZXN0X2luaXQ+IiwK
KyAgICAgICAgICAgICIgIDxNb2R1bGUgdGVzdF9mb28ucHk+IiwKKyAgICAgICAgICAgICIgICAg
PEZ1bmN0aW9uIHRlc3RfZm9vPiIsCisgICAgICAgIF0KKyAgICApCisgICAgIyBTYW1lIGFzIGJl
Zm9yZSwgYnV0IGRpZmZlcmVudCBvcmRlci4KKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLiIsICJ0ZXN0cyIsICItLWNvbGxlY3Qtb25seSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiY29sbGVjdGVkIDIgaXRlbXMiLAor
ICAgICAgICAgICAgIjxQYWNrYWdlIHRlc3RzPiIsCisgICAgICAgICAgICAiICA8TW9kdWxlIF9f
aW5pdF9fLnB5PiIsCisgICAgICAgICAgICAiICAgIDxGdW5jdGlvbiB0ZXN0X2luaXQ+IiwKKyAg
ICAgICAgICAgICIgIDxNb2R1bGUgdGVzdF9mb28ucHk+IiwKKyAgICAgICAgICAgICIgICAgPEZ1
bmN0aW9uIHRlc3RfZm9vPiIsCisgICAgICAgIF0KKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi4vdGVzdHMvdGVzdF9mb28ucHkiLCAiLS1jb2xsZWN0LW9ubHkiKQorICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWyI8UGFja2FnZSB0ZXN0cz4i
LCAiICA8TW9kdWxlIHRlc3RfZm9vLnB5PiIsICIgICAgPEZ1bmN0aW9uIHRlc3RfZm9vPiJdCisg
ICAgKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqdGVzdF9pbml0KiIpCisg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi4vdGVzdHMvX19pbml0X18ucHkiLCAiLS1j
b2xsZWN0LW9ubHkiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAg
WyI8UGFja2FnZSB0ZXN0cz4iLCAiICA8TW9kdWxlIF9faW5pdF9fLnB5PiIsICIgICAgPEZ1bmN0
aW9uIHRlc3RfaW5pdD4iXQorICAgICkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGlu
ZSgiKnRlc3RfZm9vKiIpCisKKworZGVmIHRlc3RfY29sbGVjdF9pbnZhbGlkX3NpZ25hdHVyZV9t
ZXNzYWdlKHRlc3RkaXIpOgorICAgICIiIkNoZWNrIHRoYXQgd2UgaXNzdWUgYSBwcm9wZXIgbWVz
c2FnZSB3aGVuIHdlIGNhbid0IGRldGVybWluZSB0aGUgc2lnbmF0dXJlIG9mIGEgdGVzdAorICAg
IGZ1bmN0aW9uICgjNDAyNikuCisgICAgIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIGNsYXNzIFRlc3RDYXNl
OgorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgZml4KCk6Cisg
ICAgICAgICAgICAgICAgcGFzcworICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBb
IkNvdWxkIG5vdCBkZXRlcm1pbmUgYXJndW1lbnRzIG9mICouZml4ICo6IGludmFsaWQgbWV0aG9k
IHNpZ25hdHVyZSJdCisgICAgKQorCisKK2RlZiB0ZXN0X2NvbGxlY3RfaGFuZGxlc19yYWlzaW5n
X29uX2R1bmRlcl9jbGFzcyh0ZXN0ZGlyKToKKyAgICAiIiJIYW5kbGUgcHJveHkgY2xhc3NlcyBs
aWtlIERqYW5nbydzIExhenlTZXR0aW5ncyB0aGF0IG1pZ2h0IHJhaXNlIG9uCisgICAgYGBpc2lu
c3RhbmNlYGAgKCM0MjY2KS4KKyAgICAiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICIiIgorICAgICAgICBjbGFzcyBJbXByb3Blcmx5Q29uZmlndXJlZChFeGNlcHRpb24pOgor
ICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIFJhaXNlc09uR2V0QXR0cihvYmplY3Qp
OgorICAgICAgICAgICAgZGVmIHJhaXNlcyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBJ
bXByb3Blcmx5Q29uZmlndXJlZAorCisgICAgICAgICAgICBfX2NsYXNzX18gPSBwcm9wZXJ0eShy
YWlzZXMpCisKKyAgICAgICAgcmFpc2VzID0gUmFpc2VzT25HZXRBdHRyKCkKKworCisgICAgICAg
IGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIioxIHBhc3NlZCBpbioiXSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKworZGVm
IHRlc3RfY29sbGVjdF93aXRoX2NoZGlyX2R1cmluZ19pbXBvcnQodGVzdGRpcik6CisgICAgc3Vi
ZGlyID0gdGVzdGRpci50bXBkaXIubWtkaXIoInN1YiIpCisgICAgdGVzdGRpci50bXBkaXIuam9p
bigiY29uZnRlc3QucHkiKS53cml0ZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIG9zLmNoZGlyKCVy
KQorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAlIChzdHIoc3ViZGlyKSwpCisgICAgICAg
ICkKKyAgICApCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAg
ZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBhc3NlcnQg
b3MuZ2V0Y3dkKCkgPT0gJXIKKyAgICAgICAgIiIiCisgICAgICAgICUgKHN0cihzdWJkaXIpLCkK
KyAgICApCisgICAgd2l0aCB0ZXN0ZGlyLnRtcGRpci5hc19jd2QoKToKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IioxIHBhc3NlZCBpbioiXSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKyAgICAjIEhh
bmRsZXMgcmVsYXRpdmUgdGVzdHBhdGhzLgorICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAg
IiIiCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIHRlc3RwYXRocyA9IC4KKyAgICAiIiIKKyAg
ICApCisgICAgd2l0aCB0ZXN0ZGlyLnRtcGRpci5hc19jd2QoKToKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IikKKyAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyJjb2xsZWN0ZWQgMSBpdGVtIl0pCisKKworZGVmIHRlc3RfY29sbGVjdF9w
eWFyZ3Nfd2l0aF90ZXN0cGF0aHModGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgIHRlc3Rtb2Qg
PSB0ZXN0ZGlyLm1rZGlyKCJ0ZXN0bW9kIikKKyAgICAjIE5PVEU6IF9faW5pdF9fLnB5IGlzIG5v
dCBjb2xsZWN0ZWQgc2luY2UgaXQgZG9lcyBub3QgbWF0Y2ggcHl0aG9uX2ZpbGVzLgorICAgIHRl
c3Rtb2QuZW5zdXJlKCJfX2luaXRfXy5weSIpLndyaXRlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3Mi
KQorICAgIHRlc3Rtb2QuZW5zdXJlKCJ0ZXN0X2ZpbGUucHkiKS53cml0ZSgiZGVmIHRlc3RfZnVu
YygpOiBwYXNzIikKKworICAgIHJvb3QgPSB0ZXN0ZGlyLm1rZGlyKCJyb290IikKKyAgICByb290
LmVuc3VyZSgicHl0ZXN0LmluaSIpLndyaXRlKAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgYWRkb3B0cyA9IC0tcHlh
cmdzCisgICAgICAgIHRlc3RwYXRocyA9IHRlc3Rtb2QKKyAgICAiIiIKKyAgICAgICAgKQorICAg
ICkKKyAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZVEhPTlBBVEgiLCBzdHIodGVzdGRpci50bXBk
aXIpLCBwcmVwZW5kPW9zLnBhdGhzZXApCisgICAgd2l0aCByb290LmFzX2N3ZCgpOgorICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKKyAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQgaW4qIl0pCisKKworZGVmIHRlc3RfY29sbGVj
dF9zeW1saW5rX2ZpbGVfYXJnKHRlc3RkaXIpOgorICAgICIiIkNvbGxlY3QgYSBkaXJlY3Qgc3lt
bGluayB3b3JrcyBldmVuIGlmIGl0IGRvZXMgbm90IG1hdGNoIHB5dGhvbl9maWxlcyAoIzQzMjUp
LiIiIgorICAgIHJlYWwgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHJlYWw9IiIiCisg
ICAgICAgIGRlZiB0ZXN0X25vZGVpZChyZXF1ZXN0KToKKyAgICAgICAgICAgIGFzc2VydCByZXF1
ZXN0Lm5vZGUubm9kZWlkID09ICJzeW1saW5rLnB5Ojp0ZXN0X25vZGVpZCIKKyAgICAgICAgIiIi
CisgICAgKQorICAgIHN5bWxpbmsgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJzeW1saW5rLnB5IikK
KyAgICBzeW1saW5rX29yX3NraXAocmVhbCwgc3ltbGluaykKKyAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLXYiLCBzeW1saW5rKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbInN5bWxpbmsucHk6OnRlc3Rfbm9kZWlkIFBBU1NFRCoiLCAiKjEgcGFzc2VkIGluKiJdKQor
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitkZWYgdGVzdF9jb2xsZWN0X3N5bWxpbmtf
b3V0X29mX3RyZWUodGVzdGRpcik6CisgICAgIiIiVGVzdCBjb2xsZWN0aW9uIG9mIHN5bWxpbmsg
dmlhIG91dC1vZi10cmVlIHJvb3RkaXIuIiIiCisgICAgc3ViID0gdGVzdGRpci50bXBkaXIuam9p
bigic3ViIikKKyAgICByZWFsID0gc3ViLmpvaW4oInRlc3RfcmVhbC5weSIpCisgICAgcmVhbC53
cml0ZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgIiIiCisgICAgICAg
IGRlZiB0ZXN0X25vZGVpZChyZXF1ZXN0KToKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCBjb250
YWluIHN1Yi8gcHJlZml4LgorICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3Qubm9kZS5ub2RlaWQg
PT0gInRlc3RfcmVhbC5weTo6dGVzdF9ub2RlaWQiCisgICAgICAgICIiIgorICAgICAgICApLAor
ICAgICAgICBlbnN1cmU9VHJ1ZSwKKyAgICApCisKKyAgICBvdXRfb2ZfdHJlZSA9IHRlc3RkaXIu
dG1wZGlyLmpvaW4oIm91dF9vZl90cmVlIikuZW5zdXJlKGRpcj1UcnVlKQorICAgIHN5bWxpbmtf
dG9fc3ViID0gb3V0X29mX3RyZWUuam9pbigic3ltbGlua190b19zdWIiKQorICAgIHN5bWxpbmtf
b3Jfc2tpcChzdWIsIHN5bWxpbmtfdG9fc3ViKQorICAgIHN1Yi5jaGRpcigpCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi12cyIsICItLXJvb3RkaXI9JXMiICUgc3ViLCBzeW1saW5r
X3RvX3N1YikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAg
ICAgICAgICAgICMgU2hvdWxkIG5vdCBjb250YWluICJzdWIvIiEKKyAgICAgICAgICAgICJ0ZXN0
X3JlYWwucHk6OnRlc3Rfbm9kZWlkIFBBU1NFRCIKKyAgICAgICAgXQorICAgICkKKyAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3RfY29sbGVjdGlnbm9yZV92aWFfY29uZnRl
c3QodGVzdGRpcik6CisgICAgIiIiY29sbGVjdF9pZ25vcmUgaW4gcGFyZW50IGNvbmZ0ZXN0IHNr
aXBzIGltcG9ydGluZyBjaGlsZCAoaXNzdWUgIzQ1OTIpLiIiIgorICAgIHRlc3RzID0gdGVzdGRp
ci5ta3B5ZGlyKCJ0ZXN0cyIpCisgICAgdGVzdHMuZW5zdXJlKCJjb25mdGVzdC5weSIpLndyaXRl
KCJjb2xsZWN0X2lnbm9yZSA9IFsnaWdub3JlX21lJ10iKQorCisgICAgaWdub3JlX21lID0gdGVz
dHMubWtkaXIoImlnbm9yZV9tZSIpCisgICAgaWdub3JlX21lLmVuc3VyZSgiX19pbml0X18ucHki
KQorICAgIGlnbm9yZV9tZS5lbnN1cmUoImNvbmZ0ZXN0LnB5Iikud3JpdGUoImFzc2VydCAwLCAn
c2hvdWxkX25vdF9iZV9jYWxsZWQnIikKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQK
KworCitkZWYgdGVzdF9jb2xsZWN0X3BrZ19pbml0X2FuZF9maWxlX2luX2FyZ3ModGVzdGRpcik6
CisgICAgc3ViZGlyID0gdGVzdGRpci5ta2Rpcigic3ViIikKKyAgICBpbml0ID0gc3ViZGlyLmVu
c3VyZSgiX19pbml0X18ucHkiKQorICAgIGluaXQud3JpdGUoImRlZiB0ZXN0X2luaXQoKTogcGFz
cyIpCisgICAgcCA9IHN1YmRpci5lbnN1cmUoInRlc3RfZmlsZS5weSIpCisgICAgcC53cml0ZSgi
ZGVmIHRlc3RfZmlsZSgpOiBwYXNzIikKKworICAgICMgTk9URTogd2l0aG91dCAiLW8gcHl0aG9u
X2ZpbGVzPSoucHkiIHRoaXMgY29sbGVjdHMgdGVzdF9maWxlLnB5IHR3aWNlLgorICAgICMgVGhp
cyBjaGFuZ2VkL2Jyb2tlIHdpdGggIkFkZCBwYWNrYWdlIHNjb3BlZCBmaXh0dXJlcyAjMjI4MyIg
KDJiMTQxMDg5NSkKKyAgICAjIGluaXRpYWxseSAoY2F1c2luZyBhIFJlY3Vyc2lvbkVycm9yKS4K
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXYiLCBzdHIoaW5pdCksIHN0cihwKSkK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAg
ICJzdWIvdGVzdF9maWxlLnB5Ojp0ZXN0X2ZpbGUgUEFTU0VEKiIsCisgICAgICAgICAgICAic3Vi
L3Rlc3RfZmlsZS5weTo6dGVzdF9maWxlIFBBU1NFRCoiLAorICAgICAgICAgICAgIioyIHBhc3Nl
ZCBpbioiLAorICAgICAgICBdCisgICAgKQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi12IiwgIi1vIiwgInB5dGhvbl9maWxlcz0qLnB5Iiwgc3RyKGluaXQpLCBzdHIocCkpCisg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAi
c3ViL19faW5pdF9fLnB5Ojp0ZXN0X2luaXQgUEFTU0VEKiIsCisgICAgICAgICAgICAic3ViL3Rl
c3RfZmlsZS5weTo6dGVzdF9maWxlIFBBU1NFRCoiLAorICAgICAgICAgICAgIioyIHBhc3NlZCBp
bioiLAorICAgICAgICBdCisgICAgKQorCisKK2RlZiB0ZXN0X2NvbGxlY3RfcGtnX2luaXRfb25s
eSh0ZXN0ZGlyKToKKyAgICBzdWJkaXIgPSB0ZXN0ZGlyLm1rZGlyKCJzdWIiKQorICAgIGluaXQg
PSBzdWJkaXIuZW5zdXJlKCJfX2luaXRfXy5weSIpCisgICAgaW5pdC53cml0ZSgiZGVmIHRlc3Rf
aW5pdCgpOiBwYXNzIikKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHN0cihpbml0
KSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqbm8gdGVzdHMgcmFuIGluKiJd
KQorCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi1vIiwgInB5dGhvbl9m
aWxlcz0qLnB5Iiwgc3RyKGluaXQpKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
InN1Yi9fX2luaXRfXy5weTo6dGVzdF9pbml0IFBBU1NFRCoiLCAiKjEgcGFzc2VkIGluKiJdKQor
CisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgidXNlX3BrZyIsIChUcnVlLCBGYWxzZSkpCitk
ZWYgdGVzdF9jb2xsZWN0X3N1Yl93aXRoX3N5bWxpbmtzKHVzZV9wa2csIHRlc3RkaXIpOgorICAg
ICIiIkNvbGxlY3Rpb24gd29ya3Mgd2l0aCBzeW1saW5rZWQgZmlsZXMgYW5kIGJyb2tlbiBzeW1s
aW5rcyIiIgorICAgIHN1YiA9IHRlc3RkaXIubWtkaXIoInN1YiIpCisgICAgaWYgdXNlX3BrZzoK
KyAgICAgICAgc3ViLmVuc3VyZSgiX19pbml0X18ucHkiKQorICAgIHN1Yi5qb2luKCJ0ZXN0X2Zp
bGUucHkiKS53cml0ZSgiZGVmIHRlc3RfZmlsZSgpOiBwYXNzIikKKworICAgICMgQ3JlYXRlIGEg
YnJva2VuIHN5bWxpbmsuCisgICAgc3ltbGlua19vcl9za2lwKCJ0ZXN0X2RvZXNub3RleGlzdC5w
eSIsIHN1Yi5qb2luKCJ0ZXN0X2Jyb2tlbi5weSIpKQorCisgICAgIyBTeW1saW5rIHRoYXQgZ2V0
cyBjb2xsZWN0ZWQuCisgICAgc3ltbGlua19vcl9za2lwKCJ0ZXN0X2ZpbGUucHkiLCBzdWIuam9p
bigidGVzdF9zeW1saW5rLnB5IikpCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LXYiLCBzdHIoc3ViKSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAg
IFsKKyAgICAgICAgICAgICJzdWIvdGVzdF9maWxlLnB5Ojp0ZXN0X2ZpbGUgUEFTU0VEKiIsCisg
ICAgICAgICAgICAic3ViL3Rlc3Rfc3ltbGluay5weTo6dGVzdF9maWxlIFBBU1NFRCoiLAorICAg
ICAgICAgICAgIioyIHBhc3NlZCBpbioiLAorICAgICAgICBdCisgICAgKQorCisKK2RlZiB0ZXN0
X2NvbGxlY3Rvcl9yZXNwZWN0c190YnN0eWxlKHRlc3RkaXIpOgorICAgIHAxID0gdGVzdGRpci5t
YWtlcHlmaWxlKCJhc3NlcnQgMCIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocDEs
ICItLXRiPW5hdGl2ZSIpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuSU5URVJS
VVBURUQKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAg
ICAgICAgICIqXyBFUlJPUiBjb2xsZWN0aW5nIHRlc3RfY29sbGVjdG9yX3Jlc3BlY3RzX3Ric3R5
bGUucHkgXyoiLAorICAgICAgICAgICAgIlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0
KToiLAorICAgICAgICAgICAgJyAgRmlsZSAiKi90ZXN0X2NvbGxlY3Rvcl9yZXNwZWN0c190YnN0
eWxlLnB5IiwgbGluZSAxLCBpbiA8bW9kdWxlPicsCisgICAgICAgICAgICAiICAgIGFzc2VydCAw
IiwKKyAgICAgICAgICAgICJBc3NlcnRpb25FcnJvcjogYXNzZXJ0IDAiLAorICAgICAgICAgICAg
IiohIEludGVycnVwdGVkOiAxIGVycm9yIGR1cmluZyBjb2xsZWN0aW9uICEqIiwKKyAgICAgICAg
ICAgICIqPSAxIGVycm9yIGluICoiLAorICAgICAgICBdCisgICAgKQorCisKK2RlZiB0ZXN0X2Rv
ZXNfbm90X2VhZ2VybHlfY29sbGVjdF9wYWNrYWdlcyh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoImRlZiB0ZXN0KCk6IHBhc3MiKQorICAgIHB5ZGlyID0gdGVzdGRpci5ta3B5ZGly
KCJmb29wa2ciKQorICAgIHB5ZGlyLmpvaW4oIl9faW5pdF9fLnB5Iikud3JpdGUoImFzc2VydCBG
YWxzZSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGFzc2VydCByZXN1
bHQucmV0ID09IEV4aXRDb2RlLk9LCisKKworZGVmIHRlc3RfZG9lc19ub3RfcHV0X3NyY19vbl9w
YXRoKHRlc3RkaXIpOgorICAgICMgYHNyY2AgaXMgbm90IG9uIHN5cy5wYXRoIHNvIGl0IHNob3Vs
ZCBub3QgYmUgaW1wb3J0YWJsZQorICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oInNyYy9ub3BlL19f
aW5pdF9fLnB5IikuZW5zdXJlKCkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICJp
bXBvcnQgcHl0ZXN0XG4iCisgICAgICAgICJkZWYgdGVzdCgpOlxuIgorICAgICAgICAiICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhJbXBvcnRFcnJvcik6XG4iCisgICAgICAgICIgICAgICAgIGltcG9y
dCBub3BlXG4iCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5PSworCisKK2RlZiB0ZXN0X2ZzY29sbGVjdG9y
X2Zyb21fcGFyZW50KHRtcGRpciwgcmVxdWVzdCk6CisgICAgIiIiRW5zdXJlIEZpbGUuZnJvbV9w
YXJlbnQgY2FuIGZvcndhcmQgY3VzdG9tIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IuCisK
KyAgICBDb250ZXh0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtY3BwL3B1
bGwvNDcKKyAgICAiIiIKKworICAgIGNsYXNzIE15Q29sbGVjdG9yKHB5dGVzdC5GaWxlKToKKyAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzcGF0aCwgcGFyZW50LCB4KToKKyAgICAgICAgICAg
IHN1cGVyKCkuX19pbml0X18oZnNwYXRoLCBwYXJlbnQpCisgICAgICAgICAgICBzZWxmLnggPSB4
CisKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBmcm9tX3BhcmVudChjbHMsIHBh
cmVudCwgKiwgZnNwYXRoLCB4KToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmZyb21fcGFy
ZW50KHBhcmVudD1wYXJlbnQsIGZzcGF0aD1mc3BhdGgsIHg9eCkKKworICAgIGNvbGxlY3RvciA9
IE15Q29sbGVjdG9yLmZyb21fcGFyZW50KAorICAgICAgICBwYXJlbnQ9cmVxdWVzdC5zZXNzaW9u
LCBmc3BhdGg9dG1wZGlyIC8gImZvbyIsIHg9MTAKKyAgICApCisgICAgYXNzZXJ0IGNvbGxlY3Rv
ci54ID09IDEwCisKKworY2xhc3MgVGVzdEltcG9ydE1vZGVJbXBvcnRsaWI6CisgICAgZGVmIHRl
c3RfY29sbGVjdF9kdXBsaWNhdGVfbmFtZXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIi0t
aW1wb3J0LW1vZGU9aW1wb3J0bGliIGNhbiBpbXBvcnQgbW9kdWxlcyB3aXRoIHNhbWUgbmFtZXMg
dGhhdCBhcmUgbm90IGluIHBhY2thZ2VzLiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAidGVzdHNfYS90ZXN0X2Zvby5weSI6
ICJkZWYgdGVzdF9mb28xKCk6IHBhc3MiLAorICAgICAgICAgICAgICAgICJ0ZXN0c19iL3Rlc3Rf
Zm9vLnB5IjogImRlZiB0ZXN0X2ZvbzIoKTogcGFzcyIsCisgICAgICAgICAgICB9CisgICAgICAg
ICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi0taW1wb3J0LW1v
ZGU9aW1wb3J0bGliIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJ0ZXN0c19hL3Rlc3RfZm9vLnB5Ojp0ZXN0X2Zv
bzEgKiIsCisgICAgICAgICAgICAgICAgInRlc3RzX2IvdGVzdF9mb28ucHk6OnRlc3RfZm9vMiAq
IiwKKyAgICAgICAgICAgICAgICAiKiAyIHBhc3NlZCBpbiAqIiwKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfY29uZnRlc3Qoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
ICIiIkRpcmVjdG9yeSBjb250YWluaW5nIGNvbmZ0ZXN0IG1vZHVsZXMgYXJlIG5vdCBwdXQgaW4g
c3lzLnBhdGggYXMgYSBzaWRlLWVmZmVjdCBvZgorICAgICAgICBpbXBvcnRpbmcgdGhlbS4iIiIK
KyAgICAgICAgdGVzdHNfZGlyID0gdGVzdGRpci50bXBkaXIuam9pbigidGVzdHMiKQorICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAi
dGVzdHMvY29uZnRlc3QucHkiOiAiIiwKKyAgICAgICAgICAgICAgICAidGVzdHMvdGVzdF9mb28u
cHkiOiAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgZGVm
IHRlc3RfY2hlY2soKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHIie3Rlc3RzX2Rpcn0i
IG5vdCBpbiBzeXMucGF0aAorICAgICAgICAgICAgICAgICIiIi5mb3JtYXQoCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RzX2Rpcj10ZXN0c19kaXIKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgfQorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
diIsICItLWltcG9ydC1tb2RlPWltcG9ydGxpYiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4gKiJdKQorCisgICAgZGVmIHNldHVwX2NvbmZ0ZXN0
X2FuZF9mb28oc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlNldHVwIGEgdGVzdHMgZm9sZGVy
IHRvIGJlIHVzZWQgdG8gdGVzdCBpZiBtb2R1bGVzIGluIHRoYXQgZm9sZGVyIGNhbiBiZSBpbXBv
cnRlZAorICAgICAgICBkdWUgdG8gc2lkZS1lZmZlY3RzIG9mIC0taW1wb3J0LW1vZGUgb3Igbm90
LiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAg
ICAgICAgICAgICAidGVzdHMvY29uZnRlc3QucHkiOiAiIiwKKyAgICAgICAgICAgICAgICAidGVz
dHMvZm9vLnB5IjogIiIiCisgICAgICAgICAgICAgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIDQy
CisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgICJ0ZXN0cy90ZXN0X2Zvby5w
eSI6ICIiIgorICAgICAgICAgICAgICAgICAgICBkZWYgdGVzdF9jaGVjaygpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgZnJvbSBmb28gaW1wb3J0IGZvbworICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGZvbygpID09IDQyCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAg
fQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9tb2R1bGVzX2ltcG9ydGFibGVfYXNfc2lkZV9l
ZmZlY3Qoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIkluIGltcG9ydC1tb2RlcyBgcHJlcGVu
ZGAgYW5kIGBhcHBlbmRgLCB3ZSBhcmUgYWJsZSB0byBpbXBvcnQgbW9kdWxlcyBmcm9tIGZvbGRl
cnMKKyAgICAgICAgY29udGFpbmluZyBjb25mdGVzdC5weSBmaWxlcyBkdWUgdG8gdGhlIHNpZGUg
ZWZmZWN0IG9mIGNoYW5naW5nIHN5cy5wYXRoLiIiIgorICAgICAgICBzZWxmLnNldHVwX2NvbmZ0
ZXN0X2FuZF9mb28odGVzdGRpcikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii12IiwgIi0taW1wb3J0LW1vZGU9cHJlcGVuZCIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4gKiJdKQorCisgICAgZGVmIHRlc3RfbW9kdWxlc19u
b3RfaW1wb3J0YWJsZV9hc19zaWRlX2VmZmVjdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIi
SW4gaW1wb3J0LW1vZGUgYGltcG9ydGxpYmAsIG1vZHVsZXMgaW4gZm9sZGVycyBjb250YWluaW5n
IGNvbmZ0ZXN0LnB5IGFyZSBub3QKKyAgICAgICAgaW1wb3J0YWJsZSwgYXMgZG9uJ3QgY2hhbmdl
IHN5cy5wYXRoIG9yIHN5cy5tb2R1bGVzIGFzIHNpZGUgZWZmZWN0IG9mIGltcG9ydGluZworICAg
ICAgICB0aGUgY29uZnRlc3QucHkgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc2V0
dXBfY29uZnRlc3RfYW5kX2Zvbyh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLXYiLCAiLS1pbXBvcnQtbW9kZT1pbXBvcnRsaWIiKQorICAgICAgICBleGNfbmFt
ZSA9ICgKKyAgICAgICAgICAgICJNb2R1bGVOb3RGb3VuZEVycm9yIiBpZiBzeXMudmVyc2lvbl9p
bmZvWzoyXSA+ICgzLCA1KSBlbHNlICJJbXBvcnRFcnJvciIKKyAgICAgICAgKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgIip7fTogTm8gbW9kdWxlIG5hbWVkICdmb28nIi5mb3JtYXQoZXhjX25hbWUpLAorICAgICAg
ICAgICAgICAgICJ0ZXN0cz90ZXN0X2Zvby5weToyOiB7fSIuZm9ybWF0KGV4Y19uYW1lKSwKKyAg
ICAgICAgICAgICAgICAiKiAxIGZhaWxlZCBpbiAqIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
KQorCisKK2RlZiB0ZXN0X2RvZXNfbm90X2NyYXNoX29uX2Vycm9yX2Zyb21fZGVjb3JhdGVkX2Z1
bmN0aW9uKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiUmVncmVzc2lvbiB0ZXN0
IGZvciBhbiBpc3N1ZSBhcm91bmQgYmFkIGV4Y2VwdGlvbiBmb3JtYXR0aW5nIGR1ZSB0bworICAg
IGFzc2VydGlvbiByZXdyaXRpbmcgbWFuZ2xpbmcgbGluZW5vJ3MgKCM0OTg0KS4iIiIKKyAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK
KyAgICAgICAgZGVmIGEoKTogcmV0dXJuIDQKKyAgICAgICAgIiIiCisgICAgKQorICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAjIE5vdCBJTlRFUk5BTF9FUlJPUgorICAgIGFz
c2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLklOVEVSUlVQVEVECmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29tcGF0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X2NvbXBhdC5weQppbmRleCA1NTBhOGYxYjM1NDQuLjVkZWJlODdhM2VkZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbXBhdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3RfY29tcGF0LnB5CkBAIC0xLDI3ICsxLDM3IEBACi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitpbXBvcnQgZW51
bQogaW1wb3J0IHN5cworZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKK2Zyb20gZnVuY3Rv
b2xzIGltcG9ydCB3cmFwcworZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKIGltcG9ydCBweXRl
c3QKLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGlzX2dlbmVyYXRvciwgZ2V0X3JlYWxfZnVu
Yywgc2FmZV9nZXRhdHRyCitmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfUHl0ZXN0V3JhcHBl
cgorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgYXNzZXJ0X25ldmVyCitmcm9tIF9weXRlc3Qu
Y29tcGF0IGltcG9ydCBjYWNoZWRfcHJvcGVydHkKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0
IGdldF9yZWFsX2Z1bmMKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGlzX2dlbmVyYXRvcgor
ZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgc2FmZV9nZXRhdHRyCitmcm9tIF9weXRlc3QuY29t
cGF0IGltcG9ydCBzYWZlX2lzY2xhc3MKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVf
Q0hFQ0tJTkcKIGZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBvcnQgT3V0Y29tZUV4Y2VwdGlvbgog
CitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nX2V4dGVuc2lvbnMgaW1wb3J0IExp
dGVyYWwKIAotZGVmIHRlc3RfaXNfZ2VuZXJhdG9yKCk6CiAKK2RlZiB0ZXN0X2lzX2dlbmVyYXRv
cigpOgogICAgIGRlZiB6YXAoKToKLSAgICAgICAgeWllbGQKKyAgICAgICAgeWllbGQgICMgcHJh
Z21hOiBubyBjb3ZlcgogCiAgICAgZGVmIGZvbygpOgotICAgICAgICBwYXNzCisgICAgICAgIHBh
c3MgICMgcHJhZ21hOiBubyBjb3ZlcgogCiAgICAgYXNzZXJ0IGlzX2dlbmVyYXRvcih6YXApCiAg
ICAgYXNzZXJ0IG5vdCBpc19nZW5lcmF0b3IoZm9vKQogCiAKIGRlZiB0ZXN0X3JlYWxfZnVuY19s
b29wX2xpbWl0KCk6Ci0KLSAgICBjbGFzcyBFdmlsKG9iamVjdCk6Ci0KKyAgICBjbGFzcyBFdmls
OgogICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgICBzZWxmLmxlZnQgPSAx
MDAwCiAKQEAgLTMwLDIwICs0MCw1NyBAQCBkZWYgdGVzdF9yZWFsX2Z1bmNfbG9vcF9saW1pdCgp
OgogCiAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLmxlZnQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJpdHMg
b3ZlciIpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJpdCdzIG92ZXIiKSAg
IyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLmxlZnQgLT0gMQogICAgICAgICAg
ICAgcmV0dXJuIHNlbGYKIAogICAgIGV2aWwgPSBFdmlsKCkKIAotICAgIHdpdGggcHl0ZXN0LnJh
aXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgcmVzID0gZ2V0X3JlYWxfZnVuYyhldmlsKQotICAg
ICAgICBwcmludChyZXMpCisgICAgd2l0aCBweXRlc3QucmFpc2VzKAorICAgICAgICBWYWx1ZUVy
cm9yLAorICAgICAgICBtYXRjaD0oCisgICAgICAgICAgICAiY291bGQgbm90IGZpbmQgcmVhbCBm
dW5jdGlvbiBvZiA8RXZpbCBsZWZ0PTgwMD5cbiIKKyAgICAgICAgICAgICJzdG9wcGVkIGF0IDxF
dmlsIGxlZnQ9ODAwPiIKKyAgICAgICAgKSwKKyAgICApOgorICAgICAgICBnZXRfcmVhbF9mdW5j
KGV2aWwpCisKKworZGVmIHRlc3RfZ2V0X3JlYWxfZnVuYygpOgorICAgICIiIkNoZWNrIHRoYXQg
Z2V0X3JlYWxfZnVuYyBjb3JyZWN0bHkgdW53cmFwcyBkZWNvcmF0b3JzIHVudGlsIHJlYWNoaW5n
IHRoZSByZWFsIGZ1bmN0aW9uIiIiCisKKyAgICBkZWYgZGVjb3JhdG9yKGYpOgorICAgICAgICBA
d3JhcHMoZikKKyAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICBwYXNzICAjIHByYWdt
YTogbm8gY292ZXIKKworICAgICAgICByZXR1cm4gaW5uZXIKKworICAgIGRlZiBmdW5jKCk6Cisg
ICAgICAgIHBhc3MgICMgcHJhZ21hOiBubyBjb3ZlcgorCisgICAgd3JhcHBlZF9mdW5jID0gZGVj
b3JhdG9yKGRlY29yYXRvcihmdW5jKSkKKyAgICBhc3NlcnQgZ2V0X3JlYWxfZnVuYyh3cmFwcGVk
X2Z1bmMpIGlzIGZ1bmMKKworICAgIHdyYXBwZWRfZnVuYzIgPSBkZWNvcmF0b3IoZGVjb3JhdG9y
KHdyYXBwZWRfZnVuYykpCisgICAgYXNzZXJ0IGdldF9yZWFsX2Z1bmMod3JhcHBlZF9mdW5jMikg
aXMgZnVuYworCisgICAgIyBzcGVjaWFsIGNhc2UgZm9yIF9fcHl0ZXN0X3dyYXBwZWRfXyBhdHRy
aWJ1dGU6IHVzZWQgdG8gb2J0YWluIHRoZSBmdW5jdGlvbiB1cCB1bnRpbCB0aGUgcG9pbnQKKyAg
ICAjIGEgZnVuY3Rpb24gd2FzIHdyYXBwZWQgYnkgcHl0ZXN0IGl0c2VsZgorICAgIHdyYXBwZWRf
ZnVuYzIuX19weXRlc3Rfd3JhcHBlZF9fID0gX1B5dGVzdFdyYXBwZXIod3JhcHBlZF9mdW5jKQor
ICAgIGFzc2VydCBnZXRfcmVhbF9mdW5jKHdyYXBwZWRfZnVuYzIpIGlzIHdyYXBwZWRfZnVuYwor
CisKK2RlZiB0ZXN0X2dldF9yZWFsX2Z1bmNfcGFydGlhbCgpOgorICAgICIiIlRlc3QgZ2V0X3Jl
YWxfZnVuYyBoYW5kbGVzIHBhcnRpYWwgaW5zdGFuY2VzIGNvcnJlY3RseSIiIgorCisgICAgZGVm
IGZvbyh4KToKKyAgICAgICAgcmV0dXJuIHgKKworICAgIGFzc2VydCBnZXRfcmVhbF9mdW5jKGZv
bykgaXMgZm9vCisgICAgYXNzZXJ0IGdldF9yZWFsX2Z1bmMocGFydGlhbChmb28pKSBpcyBmb28K
IAogCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKAotICAgIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCks
IHJlYXNvbj0iYXN5bmNpbyBhdmFpbGFibGUgaW4gUHl0aG9uIDMuNCsiCi0pCiBkZWYgdGVzdF9p
c19nZW5lcmF0b3JfYXN5bmNpbyh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAg
ICAgICAgICIiIgpAQCAtNjMsOSArMTEwLDYgQEAgZGVmIHRlc3RfaXNfZ2VuZXJhdG9yX2FzeW5j
aW8odGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2Vk
KiJdKQogCiAKLUBweXRlc3QubWFyay5za2lwaWYoCi0gICAgc3lzLnZlcnNpb25faW5mbyA8ICgz
LCA1KSwgcmVhc29uPSJhc3luYyBzeW50YXggYXZhaWxhYmxlIGluIFB5dGhvbiAzLjUrIgotKQog
ZGVmIHRlc3RfaXNfZ2VuZXJhdG9yX2FzeW5jX3N5bnRheCh0ZXN0ZGlyKToKICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICIiIgpAQCAtODUsMTQgKzEyOSw0MCBAQCBkZWYgdGVzdF9p
c19nZW5lcmF0b3JfYXN5bmNfc3ludGF4KHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKIAogCi1jbGFzcyBFcnJvcnNIZWxwZXIob2JqZWN0
KToKK0BweXRlc3QubWFyay5za2lwaWYoCisgICAgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA2KSwg
cmVhc29uPSJhc3luYyBnZW4gc3ludGF4IGF2YWlsYWJsZSBpbiBQeXRob24gMy42KyIKKykKK2Rl
ZiB0ZXN0X2lzX2dlbmVyYXRvcl9hc3luY19nZW5fc3ludGF4KHRlc3RkaXIpOgorICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gX3B5dGVzdC5jb21wYXQg
aW1wb3J0IGlzX2dlbmVyYXRvcgorICAgICAgICBkZWYgdGVzdF9pc19nZW5lcmF0b3JfcHkzNigp
OgorICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIHlpZWxkCisg
ICAgICAgICAgICAgICAgYXdhaXQgZm9vKCkKKworICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigp
OgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgICAgIGFzc2VydCBub3QgaXNfZ2Vu
ZXJhdG9yKGZvbykKKyAgICAgICAgICAgIGFzc2VydCBub3QgaXNfZ2VuZXJhdG9yKGJhcikKKyAg
ICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKKworCitjbGFzcyBFcnJvcnNI
ZWxwZXI6CisgICAgQHByb3BlcnR5CisgICAgZGVmIHJhaXNlX2Jhc2VleGNlcHRpb24oc2VsZik6
CisgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oImJhc2UgZXhjZXB0aW9uIHNob3VsZCBiZSBy
YWlzZWQiKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJhaXNlX2V4Y2VwdGlvbihzZWxmKToK
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJleGNlcHRpb24gc2hvdWxkIGJlIGNhdGNoZWQiKQog
CiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHJhaXNlX2ZhaWwoc2VsZik6CisgICAgZGVmIHJhaXNl
X2ZhaWxfb3V0Y29tZShzZWxmKToKICAgICAgICAgcHl0ZXN0LmZhaWwoImZhaWwgc2hvdWxkIGJl
IGNhdGNoZWQiKQogCiAKQEAgLTEwMSwxMCArMTcxLDk2IEBAIGRlZiB0ZXN0X2hlbHBlcl9mYWls
dXJlcygpOgogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24pOgogICAgICAgICBoZWxw
ZXIucmFpc2VfZXhjZXB0aW9uCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKE91dGNvbWVFeGNlcHRp
b24pOgotICAgICAgICBoZWxwZXIucmFpc2VfZmFpbAorICAgICAgICBoZWxwZXIucmFpc2VfZmFp
bF9vdXRjb21lCiAKIAogZGVmIHRlc3Rfc2FmZV9nZXRhdHRyKCk6CiAgICAgaGVscGVyID0gRXJy
b3JzSGVscGVyKCkKICAgICBhc3NlcnQgc2FmZV9nZXRhdHRyKGhlbHBlciwgInJhaXNlX2V4Y2Vw
dGlvbiIsICJkZWZhdWx0IikgPT0gImRlZmF1bHQiCi0gICAgYXNzZXJ0IHNhZmVfZ2V0YXR0ciho
ZWxwZXIsICJyYWlzZV9mYWlsIiwgImRlZmF1bHQiKSA9PSAiZGVmYXVsdCIKKyAgICBhc3NlcnQg
c2FmZV9nZXRhdHRyKGhlbHBlciwgInJhaXNlX2ZhaWxfb3V0Y29tZSIsICJkZWZhdWx0IikgPT0g
ImRlZmF1bHQiCisgICAgd2l0aCBweXRlc3QucmFpc2VzKEJhc2VFeGNlcHRpb24pOgorICAgICAg
ICBhc3NlcnQgc2FmZV9nZXRhdHRyKGhlbHBlciwgInJhaXNlX2Jhc2VleGNlcHRpb24iLCAiZGVm
YXVsdCIpCisKKworZGVmIHRlc3Rfc2FmZV9pc2NsYXNzKCk6CisgICAgYXNzZXJ0IHNhZmVfaXNj
bGFzcyh0eXBlKSBpcyBUcnVlCisKKyAgICBjbGFzcyBDcmFwcHlDbGFzcyhFeGNlcHRpb24pOgor
ICAgICAgICAjIFR5cGUgaWdub3JlZCBiZWNhdXNlIGl0J3MgYnlwYXNzZWQgaW50ZW50aW9uYWxs
eS4KKyAgICAgICAgQHByb3BlcnR5ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICBkZWYgX19jbGFz
c19fKHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiU2hvdWxkIGJlIGlnbm9yZWQi
CisKKyAgICBhc3NlcnQgc2FmZV9pc2NsYXNzKENyYXBweUNsYXNzKCkpIGlzIEZhbHNlCisKKwor
ZGVmIHRlc3RfY2FjaGVkX3Byb3BlcnR5KCkgLT4gTm9uZToKKyAgICBuY2FsbHMgPSAwCisKKyAg
ICBjbGFzcyBDbGFzczoKKyAgICAgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgICAgICBkZWYgcHJv
cChzZWxmKSAtPiBpbnQ6CisgICAgICAgICAgICBub25sb2NhbCBuY2FsbHMKKyAgICAgICAgICAg
IG5jYWxscyArPSAxCisgICAgICAgICAgICByZXR1cm4gbmNhbGxzCisKKyAgICBjMSA9IENsYXNz
KCkKKyAgICBhc3NlcnQgbmNhbGxzID09IDAKKyAgICBhc3NlcnQgYzEucHJvcCA9PSAxCisgICAg
YXNzZXJ0IGMxLnByb3AgPT0gMQorICAgIGMyID0gQ2xhc3MoKQorICAgIGFzc2VydCBuY2FsbHMg
PT0gMQorICAgIGFzc2VydCBjMi5wcm9wID09IDIKKyAgICBhc3NlcnQgYzEucHJvcCA9PSAxCisK
KworZGVmIHRlc3RfYXNzZXJ0X25ldmVyX3VuaW9uKCkgLT4gTm9uZToKKyAgICB4ID0gMTAgICMg
dHlwZTogVW5pb25baW50LCBzdHJdCisKKyAgICBpZiBpc2luc3RhbmNlKHgsIGludCk6CisgICAg
ICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQXNzZXJ0aW9u
RXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0X25ldmVyKHgpICAjIHR5cGU6IGlnbm9yZVthcmct
dHlwZV0KKworICAgIGlmIGlzaW5zdGFuY2UoeCwgaW50KToKKyAgICAgICAgcGFzcworICAgIGVs
aWYgaXNpbnN0YW5jZSh4LCBzdHIpOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAg
YXNzZXJ0X25ldmVyKHgpCisKKworZGVmIHRlc3RfYXNzZXJ0X25ldmVyX2VudW0oKSAtPiBOb25l
OgorICAgIEUgPSBlbnVtLkVudW0oIkUiLCAiYSBiIikKKyAgICB4ID0gRS5hICAjIHR5cGU6IEUK
KworICAgIGlmIHggaXMgRS5hOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIGFzc2VydF9uZXZl
cih4KSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisKKyAgICBpZiB4IGlzIEUuYToKKyAgICAg
ICAgcGFzcworICAgIGVsaWYgeCBpcyBFLmI6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAg
ICAgICBhc3NlcnRfbmV2ZXIoeCkKKworCitkZWYgdGVzdF9hc3NlcnRfbmV2ZXJfbGl0ZXJhbCgp
IC0+IE5vbmU6CisgICAgeCA9ICJhIiAgIyB0eXBlOiBMaXRlcmFsWyJhIiwgImIiXQorCisgICAg
aWYgeCA9PSAiYSI6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0X25ldmVyKHgpICAj
IHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKworICAgIGlmIHggPT0gImEiOgorICAgICAgICBwYXNz
CisgICAgZWxpZiB4ID09ICJiIjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGFz
c2VydF9uZXZlcih4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbmZp
Zy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb25maWcucHkKaW5kZXggNWZiMDQ4MzY0
ZjdjLi44OWZiYmY4Yzk1N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9j
b25maWcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbmZpZy5weQpAQCAtMSw0
OSArMSw5MyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlz
aW9uLCBwcmludF9mdW5jdGlvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGlt
cG9ydCB0ZXh0d3JhcAotaW1wb3J0IHB5dGVzdAorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKK2Zy
b20gdHlwaW5nIGltcG9ydCBMaXN0Citmcm9tIHR5cGluZyBpbXBvcnQgU2VxdWVuY2UKK2Zyb20g
dHlwaW5nIGltcG9ydCBUdXBsZQorCitpbXBvcnQgYXR0cgoraW1wb3J0IHB5LnBhdGgKIAogaW1w
b3J0IF9weXRlc3QuX2NvZGUKLWZyb20gX3B5dGVzdC5jb25maWcuZmluZHBhdGhzIGltcG9ydCBn
ZXRjZmcsIGdldF9jb21tb25fYW5jZXN0b3IsIGRldGVybWluZV9zZXR1cAoraW1wb3J0IHB5dGVz
dAorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgaW1wb3J0bGliX21ldGFkYXRhCitmcm9tIF9w
eXRlc3QuY29tcGF0IGltcG9ydCBUWVBFX0NIRUNLSU5HCitmcm9tIF9weXRlc3QuY29uZmlnIGlt
cG9ydCBfZ2V0X3BsdWdpbl9zcGVjc19hc19saXN0CiBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBfaXRlcl9yZXdyaXRhYmxlX21vZHVsZXMKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElU
X05PVEVTVFNDT0xMRUNURUQKLQotCi1jbGFzcyBUZXN0UGFyc2VJbmkob2JqZWN0KToKLQorZnJv
bSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgX3N0cnRvYm9vbAorZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25mdGVzdEltcG9ydEZh
aWx1cmUKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3Qu
Y29uZmlnIGltcG9ydCBwYXJzZV93YXJuaW5nX2ZpbHRlcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5l
eGNlcHRpb25zIGltcG9ydCBVc2FnZUVycm9yCitmcm9tIF9weXRlc3QuY29uZmlnLmZpbmRwYXRo
cyBpbXBvcnQgZGV0ZXJtaW5lX3NldHVwCitmcm9tIF9weXRlc3QuY29uZmlnLmZpbmRwYXRocyBp
bXBvcnQgZ2V0X2NvbW1vbl9hbmNlc3RvcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5maW5kcGF0aHMg
aW1wb3J0IGxvY2F0ZV9jb25maWcKK2Zyb20gX3B5dGVzdC5tb25rZXlwYXRjaCBpbXBvcnQgTW9u
a2V5UGF0Y2gKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3Qu
cHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKKworaWYgVFlQRV9DSEVDS0lORzoKKyAgICBmcm9tIHR5
cGluZyBpbXBvcnQgVHlwZQorCisKK2NsYXNzIFRlc3RQYXJzZUluaToKICAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoCiAgICAgICAgICJzZWN0aW9uLCBmaWxlbmFtZSIsIFsoInB5dGVzdCIs
ICJweXRlc3QuaW5pIiksICgidG9vbDpweXRlc3QiLCAic2V0dXAuY2ZnIildCiAgICAgKQotICAg
IGRlZiB0ZXN0X2dldGNmZ19hbmRfY29uZmlnKHNlbGYsIHRlc3RkaXIsIHRtcGRpciwgc2VjdGlv
biwgZmlsZW5hbWUpOgotICAgICAgICBzdWIgPSB0bXBkaXIubWtkaXIoInN1YiIpCi0gICAgICAg
IHN1Yi5jaGRpcigpCi0gICAgICAgIHRtcGRpci5qb2luKGZpbGVuYW1lKS53cml0ZSgKLSAgICAg
ICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgW3tzZWN0aW9ufV0KLSAgICAgICAgICAgIG5hbWUgPSB2YWx1ZQotICAgICAgICAiIiIu
Zm9ybWF0KAorICAgIGRlZiB0ZXN0X2dldGNmZ19hbmRfY29uZmlnKAorICAgICAgICBzZWxmLAor
ICAgICAgICB0ZXN0ZGlyOiBUZXN0ZGlyLAorICAgICAgICB0bXBfcGF0aDogUGF0aCwKKyAgICAg
ICAgc2VjdGlvbjogc3RyLAorICAgICAgICBmaWxlbmFtZTogc3RyLAorICAgICAgICBtb25rZXlw
YXRjaDogTW9ua2V5UGF0Y2gsCisgICAgKSAtPiBOb25lOgorICAgICAgICBzdWIgPSB0bXBfcGF0
aCAvICJzdWIiCisgICAgICAgIHN1Yi5ta2RpcigpCisgICAgICAgIG1vbmtleXBhdGNoLmNoZGly
KHN1YikKKyAgICAgICAgKHRtcF9wYXRoIC8gZmlsZW5hbWUpLndyaXRlX3RleHQoCisgICAgICAg
ICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAg
ICAgIFt7c2VjdGlvbn1dCisgICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCisgICAgICAgICAg
ICAgICAgIiIiLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbj1zZWN0aW9uCiAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIGVuY29kaW5nPSJ1dGYtOCIsCiAgICAgICAgICkKLSAgICAgICAgcm9vdGRpciwgaW5pZmls
ZSwgY2ZnID0gZ2V0Y2ZnKFtzdWJdKQorICAgICAgICBfLCBfLCBjZmcgPSBsb2NhdGVfY29uZmln
KFtzdWJdKQogICAgICAgICBhc3NlcnQgY2ZnWyJuYW1lIl0gPT0gInZhbHVlIgotICAgICAgICBj
b25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlndXJlKHN1YikKKyAgICAgICAgY29uZmlnID0gdGVz
dGRpci5wYXJzZWNvbmZpZ3VyZShzdHIoc3ViKSkKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5pbmlj
ZmdbIm5hbWUiXSA9PSAidmFsdWUiCiAKLSAgICBkZWYgdGVzdF9nZXRjZmdfZW1wdHlfcGF0aChz
ZWxmKToKLSAgICAgICAgIiIiY29ycmVjdGx5IGhhbmRsZSB6ZXJvIGxlbmd0aCBhcmd1bWVudHMg
KGEgbGEgcHl0ZXN0ICcnKSIiIgotICAgICAgICBnZXRjZmcoWyIiXSkKKyAgICBkZWYgdGVzdF9z
ZXR1cGNmZ191c2VzX3Rvb2xweXRlc3Rfd2l0aF9weXRlc3Qoc2VsZiwgdGVzdGRpcik6CisgICAg
ICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdCgpOiBwYXNzIikKKyAgICAgICAg
dGVzdGRpci5tYWtlZmlsZSgKKyAgICAgICAgICAgICIuY2ZnIiwKKyAgICAgICAgICAgIHNldHVw
PSIiIgorICAgICAgICAgICAgICAgIFt0b29sOnB5dGVzdF0KKyAgICAgICAgICAgICAgICB0ZXN0
cGF0aHM9JXMKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIHRlc3Rw
YXRocz1pZ25vcmVkCisgICAgICAgICIiIgorICAgICAgICAgICAgJSBwMS5iYXNlbmFtZSwKKyAg
ICAgICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiosIGNvbmZpZ2ZpbGU6IHNldHVwLmNmZywgKiIs
ICIqIDEgcGFzc2VkIGluICoiXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAg
ICAgZGVmIHRlc3RfYXBwZW5kX3BhcnNlX2FyZ3Moc2VsZiwgdGVzdGRpciwgdG1wZGlyLCBtb25r
ZXlwYXRjaCk6CiAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX0FERE9QVFMiLCAn
LS1jb2xvciBubyAtcnMgLS10Yj0ic2hvcnQiJykKICAgICAgICAgdG1wZGlyLmpvaW4oInB5dGVz
dC5pbmkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAg
ICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAg
ICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIGFkZG9wdHMgPSAtLXZlcmJvc2UKICAgICAg
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIFtweXRlc3RdCi0gICAgICAgICAgICBhZGRvcHRz
ID0gLS12ZXJib3NlCi0gICAgICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAg
ICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcodG1wZGlyKQpAQCAtNTcsMTIgKzEwMSwx
NCBAQCBjbGFzcyBUZXN0UGFyc2VJbmkob2JqZWN0KToKICAgICAgICAgICAgICIuaW5pIiwKICAg
ICAgICAgICAgIHRveD0iIiIKICAgICAgICAgICAgIFtweXRlc3RdCi0gICAgICAgICAgICBtaW52
ZXJzaW9uPTkuMAorICAgICAgICAgICAgbWludmVyc2lvbj05OTkuMAogICAgICAgICAiIiIsCiAg
ICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICBh
c3NlcnQgcmVzdWx0LnJldCAhPSAwCi0gICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5l
cyhbIip0b3guaW5pOjIqcmVxdWlyZXMqOS4wKmFjdHVhbCoiXSkKKyAgICAgICAgcmVzdWx0LnN0
ZGVyci5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWyIqdG94LmluaTogJ21pbnZlcnNpb24n
IHJlcXVpcmVzIHB5dGVzdC05OTkuMCwgYWN0dWFsIHB5dGVzdC0qIl0KKyAgICAgICAgKQogCiAg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAgICAgICAic2VjdGlvbiwgbmFtZSIsCkBA
IC04Miw2ICsxMjgsMTYgQEAgY2xhc3MgVGVzdFBhcnNlSW5pKG9iamVjdCk6CiAgICAgICAgIGNv
bmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQogICAgICAgICBhc3NlcnQgY29uZmlnLmdldGlu
aSgibWludmVyc2lvbiIpID09ICIxLjAiCiAKKyAgICBkZWYgdGVzdF9weXByb2plY3RfdG9tbChz
ZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlwcm9qZWN0dG9tbCgKKyAgICAg
ICAgICAgICIiIgorICAgICAgICAgICAgW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXQorICAgICAg
ICAgICAgbWludmVyc2lvbiA9ICIxLjAiCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAg
IGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQorICAgICAgICBhc3NlcnQgY29uZmlnLmdl
dGluaSgibWludmVyc2lvbiIpID09ICIxLjAiCisKICAgICBkZWYgdGVzdF90b3hpbmlfYmVmb3Jl
X2xvd2VyX3B5dGVzdGluaShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgc3ViID0gdGVzdGRpci50
bXBkaXIubWtkaXIoInN1YiIpCiAgICAgICAgIHN1Yi5qb2luKCJ0b3guaW5pIikud3JpdGUoCkBA
IC0xMDMsNiArMTU5LDEyIEBAIGNsYXNzIFRlc3RQYXJzZUluaShvYmplY3QpOgogICAgICAgICBj
b25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlndXJlKHN1YikKICAgICAgICAgYXNzZXJ0IGNvbmZp
Zy5nZXRpbmkoIm1pbnZlcnNpb24iKSA9PSAiMi4wIgogCisgICAgZGVmIHRlc3RfaW5pX3BhcnNl
X2Vycm9yKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJweXRl
c3QuaW5pIikud3JpdGUoImFkZG9wdHMgPSAteCIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMAorICAgICAgICByZXN1
bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyJFUlJPUjogKnB5dGVzdC5pbmk6MTogbm8gc2VjdGlv
biBoZWFkZXIgZGVmaW5lZCJdKQorCiAgICAgQHB5dGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0icHJv
YmFibHkgbm90IG5lZWRlZCIpCiAgICAgZGVmIHRlc3RfY29uZmN1dGRpcihzZWxmLCB0ZXN0ZGly
KToKICAgICAgICAgc3ViID0gdGVzdGRpci5ta2Rpcigic3ViIikKQEAgLTExNiw5ICsxNzgsMjcx
IEBAIGNsYXNzIFRlc3RQYXJzZUluaShvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGly
LmlubGluZV9ydW4oIi0tY29uZmN1dGRpcj0uIikKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gMAogCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiaW5pX2ZpbGVf
dGV4dCwgaW52YWxpZF9rZXlzLCB3YXJuaW5nX291dHB1dCwgZXhjZXB0aW9uX3RleHQiLAorICAg
ICAgICBbCisgICAgICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgICAgICB1bmtub3duX2luaSA9IHZh
bHVlMQorICAgICAgICAgICAgICAgIGFub3RoZXJfdW5rbm93bl9pbmkgPSB2YWx1ZTIKKyAgICAg
ICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgWyJ1bmtub3duX2luaSIsICJhbm90aGVy
X3Vua25vd25faW5pIl0sCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAi
PSo9IHdhcm5pbmdzIHN1bW1hcnkgPSo9IiwKKyAgICAgICAgICAgICAgICAgICAgIipQeXRlc3RD
b25maWdXYXJuaW5nOipVbmtub3duIGNvbmZpZyBvcHRpb246IGFub3RoZXJfdW5rbm93bl9pbmki
LAorICAgICAgICAgICAgICAgICAgICAiKlB5dGVzdENvbmZpZ1dhcm5pbmc6KlVua25vd24gY29u
ZmlnIG9wdGlvbjogdW5rbm93bl9pbmkiLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgIlVua25vd24gY29uZmlnIG9wdGlvbjogYW5vdGhlcl91bmtub3duX2luaSIsCisgICAg
ICAgICAgICAgICAgaWQ9IjItdW5rbm93bnMiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
IHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0
ZXN0XQorICAgICAgICAgICAgICAgIHVua25vd25faW5pID0gdmFsdWUxCisgICAgICAgICAgICAg
ICAgbWludmVyc2lvbiA9IDUuMC4wCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAg
ICAgIFsidW5rbm93bl9pbmkiXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICI9Kj0gd2FybmluZ3Mgc3VtbWFyeSA9Kj0iLAorICAgICAgICAgICAgICAgICAgICAiKlB5
dGVzdENvbmZpZ1dhcm5pbmc6KlVua25vd24gY29uZmlnIG9wdGlvbjogdW5rbm93bl9pbmkiLAor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIlVua25vd24gY29uZmlnIG9wdGlv
bjogdW5rbm93bl9pbmkiLAorICAgICAgICAgICAgICAgIGlkPSIxLXVua25vd24iLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgICAgICBbc29tZV9vdGhlcl9oZWFkZXJdCisgICAgICAgICAgICAgICAgdW5r
bm93bl9pbmkgPSB2YWx1ZTEKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAg
ICAgIG1pbnZlcnNpb24gPSA1LjAuMAorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAg
ICAgICBbXSwKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAg
ICAgICAgICAgICBpZD0idW5rbm93bi1pbi1vdGhlci1oZWFkZXIiLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIG1pbnZlcnNpb24gPSA1LjAuMAorICAg
ICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICBb
XSwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICBpZD0ibm8tdW5rbm93bnMi
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIGNvbmZ0
ZXN0X2luaV9rZXkgPSAxCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIFtd
LAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
ICAgIGlkPSIxLWtub3duIiwKKyAgICAgICAgICAgICksCisgICAgICAgIF0sCisgICAgKQorICAg
IEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCisgICAgZGVmIHRlc3RfaW52
YWxpZF9jb25maWdfb3B0aW9ucygKKyAgICAgICAgc2VsZiwgdGVzdGRpciwgaW5pX2ZpbGVfdGV4
dCwgaW52YWxpZF9rZXlzLCB3YXJuaW5nX291dHB1dCwgZXhjZXB0aW9uX3RleHQKKyAgICApOgor
ICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAg
ICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKKyAgICAgICAgICAgICAgICBwYXJzZXIu
YWRkaW5pKCJjb25mdGVzdF9pbmlfa2V5IiwgIiIpCisgICAgICAgICAgICAiIiIKKyAgICAgICAg
KQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0KCk6IHBhc3MiKQorICAgICAg
ICB0ZXN0ZGlyLm1ha2VpbmkoaW5pX2ZpbGVfdGV4dCkKKworICAgICAgICBjb25maWcgPSB0ZXN0
ZGlyLnBhcnNlY29uZmlnKCkKKyAgICAgICAgYXNzZXJ0IHNvcnRlZChjb25maWcuX2dldF91bmtu
b3duX2luaV9rZXlzKCkpID09IHNvcnRlZChpbnZhbGlkX2tleXMpCiAKLWNsYXNzIFRlc3RDb25m
aWdDbWRsaW5lUGFyc2luZyhvYmplY3QpOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyh3YXJuaW5nX291dHB1
dCkKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zdHJpY3QtY29uZmln
IikKKyAgICAgICAgaWYgZXhjZXB0aW9uX3RleHQ6CisgICAgICAgICAgICByZXN1bHQuc3RkZXJy
LmZubWF0Y2hfbGluZXMoIkVSUk9SOiAiICsgZXhjZXB0aW9uX3RleHQpCisgICAgICAgICAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBweXRlc3QuRXhpdENvZGUuVVNBR0VfRVJST1IKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5zdGRlcnIubm9fZm5tYXRjaF9saW5lKGV4Y2VwdGlv
bl90ZXh0KQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gcHl0ZXN0LkV4aXRDb2Rl
Lk9LCisKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQiKQorICAgIGRl
ZiB0ZXN0X3NpbGVuY2VfdW5rbm93bl9rZXlfd2FybmluZyhzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGly
KSAtPiBOb25lOgorICAgICAgICAiIiJVbmtub3duIGNvbmZpZyBrZXkgd2FybmluZ3MgY2FuIGJl
IHNpbGVuY2VkIHVzaW5nIGZpbHRlcndhcm5pbmdzICgjNzYyMCkiIiIKKyAgICAgICAgdGVzdGRp
ci5tYWtlaW5pKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAg
ICAgICAgZmlsdGVyd2FybmluZ3MgPQorICAgICAgICAgICAgICAgIGlnbm9yZTpVbmtub3duIGNv
bmZpZyBvcHRpb246cHl0ZXN0LlB5dGVzdENvbmZpZ1dhcm5pbmcKKyAgICAgICAgICAgIGZvb2Jh
cj0xCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipQeXRlc3RD
b25maWdXYXJuaW5nKiIpCisKKyAgICBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1
bHQiKQorICAgIGRlZiB0ZXN0X2Rpc2FibGVfd2FybmluZ3NfcGx1Z2luX2Rpc2FibGVzX2NvbmZp
Z193YXJuaW5ncygKKyAgICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpcgorICAgICkgLT4gTm9u
ZToKKyAgICAgICAgIiIiRGlzYWJsaW5nICd3YXJuaW5ncycgcGx1Z2luIGFsc28gZGlzYWJsZXMg
Y29uZmlnIHRpbWUgd2FybmluZ3MiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRl
ZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6CisgICAgICAgICAgICAgICAgY29uZmlnLmlzc3Vl
X2NvbmZpZ190aW1lX3dhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgIHB5dGVzdC5QeXRlc3RD
b25maWdXYXJuaW5nKCJjdXN0b20gY29uZmlnIHdhcm5pbmciKSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhY2tsZXZlbD0yLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1wbm86d2FybmluZ3MiKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKlB5dGVzdENvbmZpZ1dhcm5p
bmcqIikKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImluaV9maWxl
X3RleHQsIGV4Y2VwdGlvbl90ZXh0IiwKKyAgICAgICAgWworICAgICAgICAgICAgcHl0ZXN0LnBh
cmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAg
ICAgICAgICAgICAgcmVxdWlyZWRfcGx1Z2lucyA9IGEgegorICAgICAgICAgICAgICAgICIiIiwK
KyAgICAgICAgICAgICAgICAiTWlzc2luZyByZXF1aXJlZCBwbHVnaW5zOiBhLCB6IiwKKyAgICAg
ICAgICAgICAgICBpZD0iMi1taXNzaW5nIiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBw
eXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgW3B5dGVz
dF0KKyAgICAgICAgICAgICAgICByZXF1aXJlZF9wbHVnaW5zID0gYSB6IG15cGx1Z2luCisgICAg
ICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgICJNaXNzaW5nIHJlcXVpcmVkIHBsdWdp
bnM6IGEsIHoiLAorICAgICAgICAgICAgICAgIGlkPSIyLW1pc3NpbmctMS1vayIsCisgICAgICAg
ICAgICApLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgcmVxdWlyZWRfcGx1Z2lu
cyA9IG15cGx1Z2luCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIE5vbmUs
CisgICAgICAgICAgICAgICAgaWQ9IjEtb2siLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
IHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0
ZXN0XQorICAgICAgICAgICAgICAgIHJlcXVpcmVkX3BsdWdpbnMgPSBteXBsdWdpbj09MS41Cisg
ICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAg
ICAgaWQ9IjEtb2stcGluLWV4YWN0IiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBweXRl
c3QucGFyYW0oCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgW3B5dGVzdF0K
KyAgICAgICAgICAgICAgICByZXF1aXJlZF9wbHVnaW5zID0gbXlwbHVnaW4+MS4wLDwyLjAKKyAg
ICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAg
ICBpZD0iMS1vay1waW4tbG9vc2UiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVz
dC5wYXJhbSgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQor
ICAgICAgICAgICAgICAgIHJlcXVpcmVkX3BsdWdpbnMgPSBweXBsdWdpbj09MS42CisgICAgICAg
ICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgICJNaXNzaW5nIHJlcXVpcmVkIHBsdWdpbnM6
IHB5cGx1Z2luPT0xLjYiLAorICAgICAgICAgICAgICAgIGlkPSJtaXNzaW5nLXZlcnNpb24iLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIHJlcXVpcmVk
X3BsdWdpbnMgPSBweXBsdWdpbj09MS42IG90aGVyPT0xLjAKKyAgICAgICAgICAgICAgICAiIiIs
CisgICAgICAgICAgICAgICAgIk1pc3NpbmcgcmVxdWlyZWQgcGx1Z2luczogb3RoZXI9PTEuMCwg
cHlwbHVnaW49PTEuNiIsCisgICAgICAgICAgICAgICAgaWQ9Im1pc3NpbmctdmVyc2lvbnMiLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgICAgICBbc29tZV9vdGhlcl9oZWFkZXJdCisgICAgICAgICAgICAg
ICAgcmVxdWlyZWRfcGx1Z2lucyA9IHdvbnQgYmUgdHJpZ2dlcmVkCisgICAgICAgICAgICAgICAg
W3B5dGVzdF0KKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgTm9uZSwKKyAg
ICAgICAgICAgICAgICBpZD0iaW52YWxpZC1oZWFkZXIiLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgXSwKKyAgICApCisgICAgZGVmIHRlc3RfbWlzc2luZ19yZXF1aXJlZF9wbHVnaW5zKAorICAg
ICAgICBzZWxmLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCwgaW5pX2ZpbGVfdGV4dCwgZXhjZXB0aW9u
X3RleHQKKyAgICApOgorICAgICAgICAiIiJDaGVjayAncmVxdWlyZWRfcGx1Z2lucycgb3B0aW9u
IHdpdGggdmFyaW91cyBzZXR0aW5ncy4KKworICAgICAgICBUaGlzIHRlc3QgaW5zdGFsbHMgYSBt
b2NrICJteXBsdWdpbi0xLjUiIHdoaWNoIGlzIHVzZWQgaW4gdGhlIHBhcmFtZXRyaXplZCB0ZXN0
IGNhc2VzLgorICAgICAgICAiIiIKKworICAgICAgICBAYXR0ci5zCisgICAgICAgIGNsYXNzIER1
bW15RW50cnlQb2ludDoKKyAgICAgICAgICAgIG5hbWUgPSBhdHRyLmliKCkKKyAgICAgICAgICAg
IG1vZHVsZSA9IGF0dHIuaWIoKQorICAgICAgICAgICAgZ3JvdXAgPSAicHl0ZXN0MTEiCisKKyAg
ICAgICAgICAgIGRlZiBsb2FkKHNlbGYpOgorICAgICAgICAgICAgICAgIF9faW1wb3J0X18oc2Vs
Zi5tb2R1bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW3NlbGYubW9kdWxl
XQogCisgICAgICAgIGVudHJ5X3BvaW50cyA9IFsKKyAgICAgICAgICAgIER1bW15RW50cnlQb2lu
dCgibXlwbHVnaW4xIiwgIm15cGx1Z2luMV9tb2R1bGUiKSwKKyAgICAgICAgXQorCisgICAgICAg
IEBhdHRyLnMKKyAgICAgICAgY2xhc3MgRHVtbXlEaXN0OgorICAgICAgICAgICAgZW50cnlfcG9p
bnRzID0gYXR0ci5pYigpCisgICAgICAgICAgICBmaWxlcyA9ICgpCisgICAgICAgICAgICB2ZXJz
aW9uID0gIjEuNSIKKworICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgbWV0
YWRhdGEoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHsibmFtZSI6ICJteXBsdWdpbiJ9
CisKKyAgICAgICAgZGVmIG15X2Rpc3RzKCk6CisgICAgICAgICAgICByZXR1cm4gW0R1bW15RGlz
dChlbnRyeV9wb2ludHMpXQorCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZShteXBsdWdpbjFf
bW9kdWxlPSIjIG15IHBsdWdpbiBtb2R1bGUiKQorICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNl
cnQoKQorCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoaW1wb3J0bGliX21ldGFkYXRhLCAi
ZGlzdHJpYnV0aW9ucyIsIG15X2Rpc3RzKQorICAgICAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLmRl
bGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9MT0FEIiwgcmFpc2luZz1GYWxzZSkKKwor
ICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoaW5pX2ZpbGVfdGV4dCkKKworICAgICAgICBpZiBleGNl
cHRpb25fdGV4dDoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VF
cnJvciwgbWF0Y2g9ZXhjZXB0aW9uX3RleHQpOgorICAgICAgICAgICAgICAgIHRlc3RkaXIucGFy
c2Vjb25maWcoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdGRpci5wYXJzZWNvbmZp
ZygpCisKKyAgICBkZWYgdGVzdF9lYXJseV9jb25maWdfY21kbGluZShzZWxmLCB0ZXN0ZGlyLCBt
b25rZXlwYXRjaCk6CisgICAgICAgICIiImVhcmx5X2NvbmZpZyBjb250YWlucyBvcHRpb25zIHJl
Z2lzdGVyZWQgYnkgdGhpcmQtcGFydHkgcGx1Z2lucy4KKworICAgICAgICBUaGlzIGlzIGEgcmVn
cmVzc2lvbiBpbnZvbHZpbmcgcHl0ZXN0LWNvdiAoYW5kIHBvc3NpYmx5IG90aGVycykgaW50cm9k
dWNlZCBpbiAjNzcwMC4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgICAgIG15cGx1Z2luPSIiIgorICAgICAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRp
b24ocGFyc2VyKToKKyAgICAgICAgICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCctLWZvbycsIGRl
ZmF1bHQ9Tm9uZSwgZGVzdD0nZm9vJykKKworICAgICAgICAgICAgZGVmIHB5dGVzdF9sb2FkX2lu
aXRpYWxfY29uZnRlc3RzKGVhcmx5X2NvbmZpZywgcGFyc2VyLCBhcmdzKToKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgZWFybHlfY29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlLmZvbyA9PSAiMSIK
KyAgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigi
UFlURVNUX1BMVUdJTlMiLCAibXlwbHVnaW4iKQorICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNl
cnQoKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1mb289MSIpCisgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKiBubyB0ZXN0cyByYW4gaW4gKiIpCisK
KworY2xhc3MgVGVzdENvbmZpZ0NtZGxpbmVQYXJzaW5nOgogICAgIGRlZiB0ZXN0X3BhcnNpbmdf
YWdhaW5fZmFpbHMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGNvbmZpZyA9IHRlc3RkaXIucGFy
c2Vjb25maWcoKQogICAgICAgICBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yLCBsYW1iZGE6
IGNvbmZpZy5wYXJzZShbXSkpCkBAIC0xMzcsMTMgKzQ2MSwxMyBAQCBjbGFzcyBUZXN0Q29uZmln
Q21kbGluZVBhcnNpbmcob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAg
dGVzdGRpci5tYWtlZmlsZSgKLSAgICAgICAgICAgICIuY2ZnIiwKKyAgICAgICAgICAgICIuaW5p
IiwKICAgICAgICAgICAgIGN1c3RvbT0iIiIKICAgICAgICAgICAgIFtweXRlc3RdCiAgICAgICAg
ICAgICBjdXN0b20gPSAxCiAgICAgICAgICIiIiwKICAgICAgICAgKQotICAgICAgICBjb25maWcg
PSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItYyIsICJjdXN0b20uY2ZnIikKKyAgICAgICAgY29uZmln
ID0gdGVzdGRpci5wYXJzZWNvbmZpZygiLWMiLCAiY3VzdG9tLmluaSIpCiAgICAgICAgIGFzc2Vy
dCBjb25maWcuZ2V0aW5pKCJjdXN0b20iKSA9PSAiMSIKIAogICAgICAgICB0ZXN0ZGlyLm1ha2Vm
aWxlKApAQCAtMTU2LDkgKzQ4MCwyMSBAQCBjbGFzcyBUZXN0Q29uZmlnQ21kbGluZVBhcnNpbmco
b2JqZWN0KToKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygiLWMiLCAiY3Vz
dG9tX3Rvb2xfcHl0ZXN0X3NlY3Rpb24uY2ZnIikKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5nZXRp
bmkoImN1c3RvbSIpID09ICIxIgogCisgICAgICAgIHRlc3RkaXIubWFrZWZpbGUoCisgICAgICAg
ICAgICAiLnRvbWwiLAorICAgICAgICAgICAgY3VzdG9tPSIiIgorICAgICAgICAgICAgICAgIFt0
b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KKyAgICAgICAgICAgICAgICBjdXN0b20gPSAxCisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBbCisgICAgICAgICAgICAgICAgXSAgIyB0aGlzIGlzIGhlcmUg
b24gcHVycG9zZSwgYXMgaXQgbWFrZXMgdGhpcyBhbiBpbnZhbGlkICcuaW5pJyBmaWxlCisgICAg
ICAgICAgICAiIiIsCisgICAgICAgICkKKyAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNv
bmZpZygiLWMiLCAiY3VzdG9tLnRvbWwiKQorICAgICAgICBhc3NlcnQgY29uZmlnLmdldGluaSgi
Y3VzdG9tIikgPT0gIjEiCisKICAgICBkZWYgdGVzdF9hYnNvbHV0ZV93aW4zMl9wYXRoKHNlbGYs
IHRlc3RkaXIpOgotICAgICAgICB0ZW1wX2NmZ19maWxlID0gdGVzdGRpci5tYWtlZmlsZSgKLSAg
ICAgICAgICAgICIuY2ZnIiwKKyAgICAgICAgdGVtcF9pbmlfZmlsZSA9IHRlc3RkaXIubWFrZWZp
bGUoCisgICAgICAgICAgICAiLmluaSIsCiAgICAgICAgICAgICBjdXN0b209IiIiCiAgICAgICAg
ICAgICBbcHl0ZXN0XQogICAgICAgICAgICAgYWRkb3B0cyA9IC0tdmVyc2lvbgpAQCAtMTY2LDE2
ICs1MDIsMTUgQEAgY2xhc3MgVGVzdENvbmZpZ0NtZGxpbmVQYXJzaW5nKG9iamVjdCk6CiAgICAg
ICAgICkKICAgICAgICAgZnJvbSBvcy5wYXRoIGltcG9ydCBub3JtcGF0aAogCi0gICAgICAgIHRl
bXBfY2ZnX2ZpbGUgPSBub3JtcGF0aChzdHIodGVtcF9jZmdfZmlsZSkpCi0gICAgICAgIHJldCA9
IHB5dGVzdC5tYWluKCItYyAiICsgdGVtcF9jZmdfZmlsZSkKLSAgICAgICAgYXNzZXJ0IHJldCA9
PSBfcHl0ZXN0Lm1haW4uRVhJVF9PSworICAgICAgICB0ZW1wX2luaV9maWxlID0gbm9ybXBhdGgo
c3RyKHRlbXBfaW5pX2ZpbGUpKQorICAgICAgICByZXQgPSBweXRlc3QubWFpbihbIi1jIiwgdGVt
cF9pbmlfZmlsZV0pCisgICAgICAgIGFzc2VydCByZXQgPT0gRXhpdENvZGUuT0sKIAogCi1jbGFz
cyBUZXN0Q29uZmlnQVBJKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9jb25maWdfdHJhY2Uoc2Vs
ZiwgdGVzdGRpcik6CitjbGFzcyBUZXN0Q29uZmlnQVBJOgorICAgIGRlZiB0ZXN0X2NvbmZpZ190
cmFjZShzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBh
cnNlY29uZmlnKCkKLSAgICAgICAgdmFsdWVzID0gW10KKyAgICAgICAgdmFsdWVzID0gW10gICMg
dHlwZTogTGlzdFtzdHJdCiAgICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNldHdyaXRlcih2YWx1
ZXMuYXBwZW5kKQogICAgICAgICBjb25maWcudHJhY2UoImhlbGxvIikKICAgICAgICAgYXNzZXJ0
IGxlbih2YWx1ZXMpID09IDEKQEAgLTE5MSwxNCArNTI2LDExIEBAIGNsYXNzIFRlc3RDb25maWdB
UEkob2JqZWN0KToKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygiLS1oZWxs
bz10aGlzIikKICAgICAgICAgZm9yIHggaW4gKCJoZWxsbyIsICItLWhlbGxvIiwgIi1YIik6CiAg
ICAgICAgICAgICBhc3NlcnQgY29uZmlnLmdldG9wdGlvbih4KSA9PSAidGhpcyIKLSAgICAgICAg
cHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAiY29uZmlnLmdldG9wdGlvbigncXdlcXdlJykiKQor
ICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGNvbmZpZy5nZXRvcHRpb24sICJxd2Vx
d2UiKQogCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1swXSA8IDMi
KQogICAgIGRlZiB0ZXN0X2NvbmZpZ19nZXRvcHRpb25fdW5pY29kZShzZWxmLCB0ZXN0ZGlyKToK
ICAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCiAgICAgICAgICAg
ICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgogICAgICAgICAgICAgICAgIHBhcnNlci5h
ZGRvcHRpb24oJy0taGVsbG8nLCB0eXBlPXN0cikKICAgICAgICAgIiIiCkBAIC0yMDgsNyArNTQw
LDcgQEAgY2xhc3MgVGVzdENvbmZpZ0FQSShvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfY29uZmln
X2dldHZhbHVlb3Jza2lwKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBjb25maWcgPSB0ZXN0ZGly
LnBhcnNlY29uZmlnKCkKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhweXRlc3Quc2tpcC5FeGNlcHRp
b24sICJjb25maWcuZ2V0dmFsdWVvcnNraXAoJ2hlbGxvJykiKQorICAgICAgICBweXRlc3QucmFp
c2VzKHB5dGVzdC5za2lwLkV4Y2VwdGlvbiwgY29uZmlnLmdldHZhbHVlb3Jza2lwLCAiaGVsbG8i
KQogICAgICAgICB2ZXJib3NlID0gY29uZmlnLmdldHZhbHVlb3Jza2lwKCJ2ZXJib3NlIikKICAg
ICAgICAgYXNzZXJ0IHZlcmJvc2UgPT0gY29uZmlnLm9wdGlvbi52ZXJib3NlCiAKQEAgLTI1OSw3
ICs1OTEsNyBAQCBjbGFzcyBUZXN0Q29uZmlnQVBJKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCB2
YWwgPT0gImhlbGxvIgogICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGNvbmZpZy5n
ZXRpbmksICJvdGhlciIpCiAKLSAgICBkZWYgdGVzdF9hZGRpbmlfcGF0aGxpc3Qoc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIG1ha2VfY29uZnRlc3RfZm9yX3BhdGhsaXN0KHNlbGYsIHRlc3RkaXIp
OgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKQEAgLTI2NywyMCArNTk5LDM2IEBA
IGNsYXNzIFRlc3RDb25maWdBUEkob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXJzZXIuYWRk
aW5pKCJhYmMiLCAiYWJjIHZhbHVlIikKICAgICAgICAgIiIiCiAgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X2FkZGluaV9wYXRobGlzdF9pbmlfZmlsZXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IHNlbGYubWFrZV9jb25mdGVzdF9mb3JfcGF0aGxpc3QodGVzdGRpcikKICAgICAgICAgcCA9IHRl
c3RkaXIubWFrZWluaSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgW3B5dGVzdF0KICAg
ICAgICAgICAgIHBhdGhzPWhlbGxvIHdvcmxkL3N1Yi5weQogICAgICAgICAiIiIKICAgICAgICAg
KQorICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZ19wYXRobGlzdCh0ZXN0ZGlyLCBwKQorCisgICAg
ZGVmIHRlc3RfYWRkaW5pX3BhdGhsaXN0X3B5cHJvamVjdF90b21sKHNlbGYsIHRlc3RkaXIpOgor
ICAgICAgICBzZWxmLm1ha2VfY29uZnRlc3RfZm9yX3BhdGhsaXN0KHRlc3RkaXIpCisgICAgICAg
IHAgPSB0ZXN0ZGlyLm1ha2VweXByb2plY3R0b21sKAorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgICAgICAgICBwYXRocz1bImhlbGxv
IiwgIndvcmxkL3N1Yi5weSJdCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHNlbGYu
Y2hlY2tfY29uZmlnX3BhdGhsaXN0KHRlc3RkaXIsIHApCisKKyAgICBkZWYgY2hlY2tfY29uZmln
X3BhdGhsaXN0KHNlbGYsIHRlc3RkaXIsIGNvbmZpZ19wYXRoKToKICAgICAgICAgY29uZmlnID0g
dGVzdGRpci5wYXJzZWNvbmZpZygpCiAgICAgICAgIHZhbHVlcyA9IGNvbmZpZy5nZXRpbmkoInBh
dGhzIikKICAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDIKLSAgICAgICAgYXNzZXJ0IHZh
bHVlc1swXSA9PSBwLmRpcnBhdGgoImhlbGxvIikKLSAgICAgICAgYXNzZXJ0IHZhbHVlc1sxXSA9
PSBwLmRpcnBhdGgoIndvcmxkL3N1Yi5weSIpCisgICAgICAgIGFzc2VydCB2YWx1ZXNbMF0gPT0g
Y29uZmlnX3BhdGguZGlycGF0aCgiaGVsbG8iKQorICAgICAgICBhc3NlcnQgdmFsdWVzWzFdID09
IGNvbmZpZ19wYXRoLmRpcnBhdGgoIndvcmxkL3N1Yi5weSIpCiAgICAgICAgIHB5dGVzdC5yYWlz
ZXMoVmFsdWVFcnJvciwgY29uZmlnLmdldGluaSwgIm90aGVyIikKIAotICAgIGRlZiB0ZXN0X2Fk
ZGluaV9hcmdzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiBtYWtlX2NvbmZ0ZXN0X2Zvcl9hcmdz
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKICAgICAgICAg
ICAgICIiIgogICAgICAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKQEAgLTI4
OCwyMCArNjM2LDM1IEBAIGNsYXNzIFRlc3RDb25maWdBUEkob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBwYXJzZXIuYWRkaW5pKCJhMiIsICIiLCAiYXJncyIsIGRlZmF1bHQ9IjEgMiAzIi5zcGxp
dCgpKQogICAgICAgICAiIiIKICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYWRkaW5pX2FyZ3Nf
aW5pX2ZpbGVzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBzZWxmLm1ha2VfY29uZnRlc3RfZm9y
X2FyZ3ModGVzdGRpcikKICAgICAgICAgdGVzdGRpci5tYWtlaW5pKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBbcHl0ZXN0XQogICAgICAgICAgICAgYXJncz0xMjMgIjEyMyBoZWxsbyIg
InRoaXMiCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5jaGVja19jb25maWdfYXJncyh0ZXN0ZGlyKQorCisgICAgZGVmIHRlc3RfYWRkaW5pX2Fy
Z3NfcHlwcm9qZWN0X3RvbWwoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHNlbGYubWFrZV9jb25m
dGVzdF9mb3JfYXJncyh0ZXN0ZGlyKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweXByb2plY3R0b21s
KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNd
CisgICAgICAgICAgICBhcmdzID0gWyIxMjMiLCAiMTIzIGhlbGxvIiwgInRoaXMiXQorICAgICAg
ICAgICAgIiIiCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5jaGVja19jb25maWdfYXJncyh0ZXN0
ZGlyKQorCisgICAgZGVmIGNoZWNrX2NvbmZpZ19hcmdzKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKICAgICAgICAgdmFsdWVzID0gY29uZmln
LmdldGluaSgiYXJncyIpCi0gICAgICAgIGFzc2VydCBsZW4odmFsdWVzKSA9PSAzCiAgICAgICAg
IGFzc2VydCB2YWx1ZXMgPT0gWyIxMjMiLCAiMTIzIGhlbGxvIiwgInRoaXMiXQogICAgICAgICB2
YWx1ZXMgPSBjb25maWcuZ2V0aW5pKCJhMiIpCiAgICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gbGlz
dCgiMTIzIikKIAotICAgIGRlZiB0ZXN0X2FkZGluaV9saW5lbGlzdChzZWxmLCB0ZXN0ZGlyKToK
KyAgICBkZWYgbWFrZV9jb25mdGVzdF9mb3JfbGluZWxpc3Qoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBk
ZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgpAQCAtMzA5LDYgKzY3Miw5IEBAIGNsYXNzIFRl
c3RDb25maWdBUEkob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXJzZXIuYWRkaW5pKCJhMiIs
ICIiLCAibGluZWxpc3QiKQogICAgICAgICAiIiIKICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
YWRkaW5pX2xpbmVsaXN0X2luaV9maWxlcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgc2VsZi5t
YWtlX2NvbmZ0ZXN0X2Zvcl9saW5lbGlzdCh0ZXN0ZGlyKQogICAgICAgICB0ZXN0ZGlyLm1ha2Vp
bmkoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFtweXRlc3RdCkBAIC0zMTYsNiArNjgy
LDE5IEBAIGNsYXNzIFRlc3RDb25maWdBUEkob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWNv
bmQgbGluZQogICAgICAgICAiIiIKICAgICAgICAgKQorICAgICAgICBzZWxmLmNoZWNrX2NvbmZp
Z19saW5lbGlzdCh0ZXN0ZGlyKQorCisgICAgZGVmIHRlc3RfYWRkaW5pX2xpbmVsaXN0X3Bwcm9q
ZWN0dG9tbChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgc2VsZi5tYWtlX2NvbmZ0ZXN0X2Zvcl9s
aW5lbGlzdCh0ZXN0ZGlyKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweXByb2plY3R0b21sKAorICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAg
ICAgICAgICB4eSA9IFsiMTIzIDM0NSIsICJzZWNvbmQgbGluZSJdCisgICAgICAgICIiIgorICAg
ICAgICApCisgICAgICAgIHNlbGYuY2hlY2tfY29uZmlnX2xpbmVsaXN0KHRlc3RkaXIpCisKKyAg
ICBkZWYgY2hlY2tfY29uZmlnX2xpbmVsaXN0KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBjb25m
aWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKICAgICAgICAgdmFsdWVzID0gY29uZmlnLmdldGlu
aSgieHkiKQogICAgICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMgpAQCAtMzg2LDExICs3NjUs
MTIgQEAgY2xhc3MgVGVzdENvbmZpZ0FQSShvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfY29uZmN1
dGRpcl9jaGVja19pc2RpcihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgIiIiR2l2ZSBhbiBlcnJv
ciBpZiAtLWNvbmZjdXRkaXIgaXMgbm90IGEgdmFsaWQgZGlyZWN0b3J5ICgjMjA3OCkiIiIKLSAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5Vc2FnZUVycm9yKToKKyAgICAgICAgZXhw
X21hdGNoID0gciJeLS1jb25mY3V0ZGlyIG11c3QgYmUgYSBkaXJlY3RvcnksIGdpdmVuOiAiCisg
ICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VFcnJvciwgbWF0Y2g9ZXhwX21h
dGNoKToKICAgICAgICAgICAgIHRlc3RkaXIucGFyc2Vjb25maWcoCiAgICAgICAgICAgICAgICAg
Ii0tY29uZmN1dGRpciIsIHRlc3RkaXIudG1wZGlyLmpvaW4oImZpbGUiKS5lbnN1cmUoZmlsZT0x
KQogICAgICAgICAgICAgKQotICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LlVzYWdl
RXJyb3IpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LlVzYWdlRXJyb3IsIG1h
dGNoPWV4cF9tYXRjaCk6CiAgICAgICAgICAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItLWNvbmZj
dXRkaXIiLCB0ZXN0ZGlyLnRtcGRpci5qb2luKCJpbmV4aXN0YW50IikpCiAgICAgICAgIGNvbmZp
ZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoCiAgICAgICAgICAgICAiLS1jb25mY3V0ZGlyIiwgdGVz
dGRpci50bXBkaXIuam9pbigiZGlyIikuZW5zdXJlKGRpcj0xKQpAQCAtNDAwLDIyICs3ODAsMjUg
QEAgY2xhc3MgVGVzdENvbmZpZ0FQSShvYmplY3QpOgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgKICAgICAgICAgIm5hbWVzLCBleHBlY3RlZCIsCiAgICAgICAgIFsKKyAgICAgICAgICAg
ICMgZGlzdC1pbmZvIGJhc2VkIGRpc3RyaWJ1dGlvbnMgcm9vdCBhcmUgZmlsZXMgYXMgd2lsbCBi
ZSBwdXQgaW4gUFlUSE9OUEFUSAogICAgICAgICAgICAgKFsiYmFyLnB5Il0sIFsiYmFyIl0pLAot
ICAgICAgICAgICAgKFsiZm9vIiwgImJhci5weSJdLCBbXSksCi0gICAgICAgICAgICAoWyJmb28i
LCAiYmFyLnB5YyJdLCBbXSksCi0gICAgICAgICAgICAoWyJmb28iLCAiX19pbml0X18ucHkiXSwg
WyJmb28iXSksCi0gICAgICAgICAgICAoWyJmb28iLCAiYmFyIiwgIl9faW5pdF9fLnB5Il0sIFtd
KSwKKyAgICAgICAgICAgIChbImZvby9iYXIucHkiXSwgWyJiYXIiXSksCisgICAgICAgICAgICAo
WyJmb28vYmFyLnB5YyJdLCBbXSksCisgICAgICAgICAgICAoWyJmb28vX19pbml0X18ucHkiXSwg
WyJmb28iXSksCisgICAgICAgICAgICAoWyJiYXIvX19pbml0X18ucHkiLCAieHoucHkiXSwgWyJi
YXIiLCAieHoiXSksCisgICAgICAgICAgICAoWyJzZXR1cC5weSJdLCBbXSksCisgICAgICAgICAg
ICAjIGVnZyBiYXNlZCBkaXN0cmlidXRpb25zIHJvb3QgY29udGFpbiB0aGUgZmlsZXMgZnJvbSB0
aGUgZGlzdCByb290CisgICAgICAgICAgICAoWyJzcmMvYmFyL19faW5pdF9fLnB5Il0sIFsiYmFy
Il0pLAorICAgICAgICAgICAgKFsic3JjL2Jhci9fX2luaXRfXy5weSIsICJzZXR1cC5weSJdLCBb
ImJhciJdKSwKKyAgICAgICAgICAgIChbInNvdXJjZS9weXRob24vYmFyL19faW5pdF9fLnB5Iiwg
InNldHVwLnB5Il0sIFsiYmFyIl0pLAogICAgICAgICBdLAogICAgICkKICAgICBkZWYgdGVzdF9p
dGVyX3Jld3JpdGFibGVfbW9kdWxlcyhzZWxmLCBuYW1lcywgZXhwZWN0ZWQpOgotICAgICAgICBh
c3NlcnQgbGlzdChfaXRlcl9yZXdyaXRhYmxlX21vZHVsZXMoWyIvIi5qb2luKG5hbWVzKV0pKSA9
PSBleHBlY3RlZAotCisgICAgICAgIGFzc2VydCBsaXN0KF9pdGVyX3Jld3JpdGFibGVfbW9kdWxl
cyhuYW1lcykpID09IGV4cGVjdGVkCiAKLWNsYXNzIFRlc3RDb25maWdGcm9tZGljdGFyZ3Mob2Jq
ZWN0KToKLQotICAgIGRlZiB0ZXN0X2Jhc2ljX2JlaGF2aW9yKHNlbGYpOgotICAgICAgICBmcm9t
IF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKIAorY2xhc3MgVGVzdENvbmZpZ0Zyb21kaWN0
YXJnczoKKyAgICBkZWYgdGVzdF9iYXNpY19iZWhhdmlvcihzZWxmLCBfc3lzX3NuYXBzaG90KToK
ICAgICAgICAgb3B0aW9uX2RpY3QgPSB7InZlcmJvc2UiOiA0NDQsICJmb28iOiAiYmFyIiwgImNh
cHR1cmUiOiAibm8ifQogICAgICAgICBhcmdzID0gWyJhIiwgImIiXQogCkBAIC00MjcsNjAgKzgx
MCw1NiBAQCBjbGFzcyBUZXN0Q29uZmlnRnJvbWRpY3RhcmdzKG9iamVjdCk6CiAgICAgICAgIGFz
c2VydCBjb25maWcub3B0aW9uLmNhcHR1cmUgPT0gIm5vIgogICAgICAgICBhc3NlcnQgY29uZmln
LmFyZ3MgPT0gYXJncwogCi0gICAgZGVmIHRlc3Rfb3JpZ2FyZ3Moc2VsZik6CisgICAgZGVmIHRl
c3RfaW52b2NhdGlvbl9wYXJhbXNfYXJncyhzZWxmLCBfc3lzX3NuYXBzaG90KSAtPiBOb25lOgog
ICAgICAgICAiIiJTaG93IHRoYXQgZnJvbWRpY3RhcmdzIGNhbiBoYW5kbGUgYXJncyBpbiB0aGVp
ciAib3JpZyIgZm9ybWF0IiIiCi0gICAgICAgIGZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENv
bmZpZwotCi0gICAgICAgIG9wdGlvbl9kaWN0ID0ge30KKyAgICAgICAgb3B0aW9uX2RpY3QgPSB7
fSAgIyB0eXBlOiBEaWN0W3N0ciwgb2JqZWN0XQogICAgICAgICBhcmdzID0gWyItdnZ2diIsICIt
cyIsICJhIiwgImIiXQogCiAgICAgICAgIGNvbmZpZyA9IENvbmZpZy5mcm9tZGljdGFyZ3Mob3B0
aW9uX2RpY3QsIGFyZ3MpCiAgICAgICAgIGFzc2VydCBjb25maWcuYXJncyA9PSBbImEiLCAiYiJd
Ci0gICAgICAgIGFzc2VydCBjb25maWcuX29yaWdhcmdzID09IGFyZ3MKKyAgICAgICAgYXNzZXJ0
IGNvbmZpZy5pbnZvY2F0aW9uX3BhcmFtcy5hcmdzID09IHR1cGxlKGFyZ3MpCiAgICAgICAgIGFz
c2VydCBjb25maWcub3B0aW9uLnZlcmJvc2UgPT0gNAogICAgICAgICBhc3NlcnQgY29uZmlnLm9w
dGlvbi5jYXB0dXJlID09ICJubyIKIAogICAgIGRlZiB0ZXN0X2luaWZpbGVuYW1lKHNlbGYsIHRt
cGRpcik6CiAgICAgICAgIHRtcGRpci5qb2luKCJmb28vYmFyLmluaSIpLmVuc3VyZSgpLndyaXRl
KAotICAgICAgICAgICAgX3B5dGVzdC5fY29kZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3Jh
cC5kZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgICAgIFtweXRlc3Rd
CisgICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCiAgICAgICAgICAgICAgICAgIiIiCi0gICAg
ICAgICAgICBbcHl0ZXN0XQotICAgICAgICAgICAgbmFtZSA9IHZhbHVlCi0gICAgICAgICIiIgog
ICAgICAgICAgICAgKQogICAgICAgICApCiAKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgQ29uZmlnCi0KICAgICAgICAgaW5pZmlsZSA9ICIuLi8uLi9mb28vYmFyLmluaSIKICAg
ICAgICAgb3B0aW9uX2RpY3QgPSB7ImluaWZpbGVuYW1lIjogaW5pZmlsZSwgImNhcHR1cmUiOiAi
bm8ifQogCiAgICAgICAgIGN3ZCA9IHRtcGRpci5qb2luKCJhL2IiKQogICAgICAgICBjd2Quam9p
bigicHl0ZXN0LmluaSIpLmVuc3VyZSgpLndyaXRlKAotICAgICAgICAgICAgX3B5dGVzdC5fY29k
ZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAg
IiIiXAorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgbmFtZSA9IHdy
b25nLXZhbHVlCisgICAgICAgICAgICAgICAgc2hvdWxkX25vdF9iZV9zZXQgPSB0cnVlCiAgICAg
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBbcHl0ZXN0XQotICAgICAgICAgICAgbmFtZSA9
IHdyb25nLXZhbHVlCi0gICAgICAgICAgICBzaG91bGRfbm90X2JlX3NldCA9IHRydWUKLSAgICAg
ICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAgd2l0aCBjd2QuZW5zdXJl
KGRpcj1UcnVlKS5hc19jd2QoKToKICAgICAgICAgICAgIGNvbmZpZyA9IENvbmZpZy5mcm9tZGlj
dGFyZ3Mob3B0aW9uX2RpY3QsICgpKQorICAgICAgICAgICAgaW5pcGF0aCA9IHB5LnBhdGgubG9j
YWwoaW5pZmlsZSkKIAogICAgICAgICBhc3NlcnQgY29uZmlnLmFyZ3MgPT0gW3N0cihjd2QpXQog
ICAgICAgICBhc3NlcnQgY29uZmlnLm9wdGlvbi5pbmlmaWxlbmFtZSA9PSBpbmlmaWxlCiAgICAg
ICAgIGFzc2VydCBjb25maWcub3B0aW9uLmNhcHR1cmUgPT0gIm5vIgogCiAgICAgICAgICMgdGhp
cyBpbmRpY2F0ZXMgdGhpcyBpcyB0aGUgZmlsZSB1c2VkIGZvciBnZXR0aW5nIGNvbmZpZ3VyYXRp
b24gdmFsdWVzCi0gICAgICAgIGFzc2VydCBjb25maWcuaW5pZmlsZSA9PSBpbmlmaWxlCisgICAg
ICAgIGFzc2VydCBjb25maWcuaW5pZmlsZSA9PSBpbmlwYXRoCiAgICAgICAgIGFzc2VydCBjb25m
aWcuaW5pY2ZnLmdldCgibmFtZSIpID09ICJ2YWx1ZSIKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5p
bmljZmcuZ2V0KCJzaG91bGRfbm90X2JlX3NldCIpIGlzIE5vbmUKIAogCi1kZWYgdGVzdF9vcHRp
b25zX29uX3NtYWxsX2ZpbGVfZG9fbm90X2Jsb3dfdXAodGVzdGRpcik6Ci0KLSAgICBkZWYgcnVu
ZmlsZXRlc3Qob3B0cyk6CitkZWYgdGVzdF9vcHRpb25zX29uX3NtYWxsX2ZpbGVfZG9fbm90X2Js
b3dfdXAodGVzdGRpcikgLT4gTm9uZToKKyAgICBkZWYgcnVuZmlsZXRlc3Qob3B0czogU2VxdWVu
Y2Vbc3RyXSkgLT4gTm9uZToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCpv
cHRzKQogICAgICAgICBwYXNzZWQsIHNraXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5jb3VudG91dGNv
bWVzKCkKICAgICAgICAgYXNzZXJ0IGZhaWxlZCA9PSAyCkBAIC00OTMsNDggKzg3Miw0MCBAQCBk
ZWYgdGVzdF9vcHRpb25zX29uX3NtYWxsX2ZpbGVfZG9fbm90X2Jsb3dfdXAodGVzdGRpcik6CiAg
ICAgIiIiCiAgICAgKQogCi0gICAgZm9yIG9wdHMgaW4gKAotICAgICAgICBbXSwKLSAgICAgICAg
WyItbCJdLAotICAgICAgICBbIi1zIl0sCi0gICAgICAgIFsiLS10Yj1ubyJdLAotICAgICAgICBb
Ii0tdGI9c2hvcnQiXSwKLSAgICAgICAgWyItLXRiPWxvbmciXSwKLSAgICAgICAgWyItLWZ1bGx0
cmFjZSJdLAotICAgICAgICBbIi0tdHJhY2Vjb25maWciXSwKLSAgICAgICAgWyItdiJdLAotICAg
ICAgICBbIi12IiwgIi12Il0sCi0gICAgKToKLSAgICAgICAgcnVuZmlsZXRlc3Qob3B0cyArIFtw
YXRoXSkKKyAgICBydW5maWxldGVzdChbcGF0aF0pCisgICAgcnVuZmlsZXRlc3QoWyItbCIsIHBh
dGhdKQorICAgIHJ1bmZpbGV0ZXN0KFsiLXMiLCBwYXRoXSkKKyAgICBydW5maWxldGVzdChbIi0t
dGI9bm8iLCBwYXRoXSkKKyAgICBydW5maWxldGVzdChbIi0tdGI9c2hvcnQiLCBwYXRoXSkKKyAg
ICBydW5maWxldGVzdChbIi0tdGI9bG9uZyIsIHBhdGhdKQorICAgIHJ1bmZpbGV0ZXN0KFsiLS1m
dWxsdHJhY2UiLCBwYXRoXSkKKyAgICBydW5maWxldGVzdChbIi0tdHJhY2Vjb25maWciLCBwYXRo
XSkKKyAgICBydW5maWxldGVzdChbIi12IiwgcGF0aF0pCisgICAgcnVuZmlsZXRlc3QoWyItdiIs
ICItdiIsIHBhdGhdKQogCiAKIGRlZiB0ZXN0X3ByZXBhcnNlX29yZGVyaW5nX3dpdGhfc2V0dXB0
b29scyh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgcGtnX3Jlc291cmNlcyA9IHB5dGVzdC5p
bXBvcnRvcnNraXAoInBrZ19yZXNvdXJjZXMiKQotCi0gICAgZGVmIG15X2l0ZXIobmFtZSk6Ci0g
ICAgICAgIGFzc2VydCBuYW1lID09ICJweXRlc3QxMSIKKyAgICBtb25rZXlwYXRjaC5kZWxlbnYo
IlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIsIHJhaXNpbmc9RmFsc2UpCiAKLSAgICAg
ICAgY2xhc3MgRGlzdChvYmplY3QpOgotICAgICAgICAgICAgcHJvamVjdF9uYW1lID0gInNwYW0i
Ci0gICAgICAgICAgICB2ZXJzaW9uID0gIjEuMCIKKyAgICBjbGFzcyBFbnRyeVBvaW50OgorICAg
ICAgICBuYW1lID0gIm15dGVzdHBsdWdpbiIKKyAgICAgICAgZ3JvdXAgPSAicHl0ZXN0MTEiCiAK
LSAgICAgICAgICAgIGRlZiBfZ2V0X21ldGFkYXRhKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAg
ICAgIHJldHVybiBbImZvby50eHQsc2hhMjU2PWFiYywxMjMiXQotCi0gICAgICAgIGNsYXNzIEVu
dHJ5UG9pbnQob2JqZWN0KToKLSAgICAgICAgICAgIG5hbWUgPSAibXl0ZXN0cGx1Z2luIgotICAg
ICAgICAgICAgZGlzdCA9IERpc3QoKQotCi0gICAgICAgICAgICBkZWYgbG9hZChzZWxmKToKKyAg
ICAgICAgZGVmIGxvYWQoc2VsZik6CisgICAgICAgICAgICBjbGFzcyBQc2V1ZG9QbHVnaW46Cisg
ICAgICAgICAgICAgICAgeCA9IDQyCiAKLSAgICAgICAgICAgICAgICBjbGFzcyBQc2V1ZG9QbHVn
aW4ob2JqZWN0KToKLSAgICAgICAgICAgICAgICAgICAgeCA9IDQyCisgICAgICAgICAgICByZXR1
cm4gUHNldWRvUGx1Z2luKCkKIAotICAgICAgICAgICAgICAgIHJldHVybiBQc2V1ZG9QbHVnaW4o
KQorICAgIGNsYXNzIERpc3Q6CisgICAgICAgIGZpbGVzID0gKCkKKyAgICAgICAgbWV0YWRhdGEg
PSB7Im5hbWUiOiAiZm9vIn0KKyAgICAgICAgZW50cnlfcG9pbnRzID0gKEVudHJ5UG9pbnQoKSwp
CiAKLSAgICAgICAgcmV0dXJuIGl0ZXIoW0VudHJ5UG9pbnQoKV0pCisgICAgZGVmIG15X2Rpc3Rz
KCk6CisgICAgICAgIHJldHVybiAoRGlzdCwpCiAKLSAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBr
Z19yZXNvdXJjZXMsICJpdGVyX2VudHJ5X3BvaW50cyIsIG15X2l0ZXIpCisgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cihpbXBvcnRsaWJfbWV0YWRhdGEsICJkaXN0cmlidXRpb25zIiwgbXlfZGlzdHMp
CiAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICIiIgogICAgICAgICBweXRlc3Rf
cGx1Z2lucyA9ICJteXRlc3RwbHVnaW4iLApAQCAtNTQ3LDU4ICs5MTgsNzYgQEAgZGVmIHRlc3Rf
cHJlcGFyc2Vfb3JkZXJpbmdfd2l0aF9zZXR1cHRvb2xzKHRlc3RkaXIsIG1vbmtleXBhdGNoKToK
IAogCiBkZWYgdGVzdF9zZXR1cHRvb2xzX2ltcG9ydGVycm9yX2lzc3VlMTQ3OSh0ZXN0ZGlyLCBt
b25rZXlwYXRjaCk6Ci0gICAgcGtnX3Jlc291cmNlcyA9IHB5dGVzdC5pbXBvcnRvcnNraXAoInBr
Z19yZXNvdXJjZXMiKQorICAgIG1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExV
R0lOX0FVVE9MT0FEIiwgcmFpc2luZz1GYWxzZSkKIAotICAgIGRlZiBteV9pdGVyKG5hbWUpOgot
ICAgICAgICBhc3NlcnQgbmFtZSA9PSAicHl0ZXN0MTEiCisgICAgY2xhc3MgRHVtbXlFbnRyeVBv
aW50OgorICAgICAgICBuYW1lID0gIm15dGVzdHBsdWdpbiIKKyAgICAgICAgZ3JvdXAgPSAicHl0
ZXN0MTEiCiAKLSAgICAgICAgY2xhc3MgRGlzdChvYmplY3QpOgotICAgICAgICAgICAgcHJvamVj
dF9uYW1lID0gInNwYW0iCi0gICAgICAgICAgICB2ZXJzaW9uID0gIjEuMCIKKyAgICAgICAgZGVm
IGxvYWQoc2VsZik6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiRG9uJ3QgaGlkZSBt
ZSEiKQogCi0gICAgICAgICAgICBkZWYgX2dldF9tZXRhZGF0YShzZWxmLCBuYW1lKToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gWyJmb28udHh0LHNoYTI1Nj1hYmMsMTIzIl0KKyAgICBjbGFzcyBE
aXN0cmlidXRpb246CisgICAgICAgIHZlcnNpb24gPSAiMS4wIgorICAgICAgICBmaWxlcyA9ICgi
Zm9vLnR4dCIsKQorICAgICAgICBtZXRhZGF0YSA9IHsibmFtZSI6ICJmb28ifQorICAgICAgICBl
bnRyeV9wb2ludHMgPSAoRHVtbXlFbnRyeVBvaW50KCksKQogCi0gICAgICAgIGNsYXNzIEVudHJ5
UG9pbnQob2JqZWN0KToKLSAgICAgICAgICAgIG5hbWUgPSAibXl0ZXN0cGx1Z2luIgotICAgICAg
ICAgICAgZGlzdCA9IERpc3QoKQorICAgIGRlZiBkaXN0cmlidXRpb25zKCk6CisgICAgICAgIHJl
dHVybiAoRGlzdHJpYnV0aW9uKCksKQogCi0gICAgICAgICAgICBkZWYgbG9hZChzZWxmKToKLSAg
ICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiRG9uJ3QgaGlkZSBtZSEiKQotCi0gICAg
ICAgIHJldHVybiBpdGVyKFtFbnRyeVBvaW50KCldKQotCi0gICAgbW9ua2V5cGF0Y2guc2V0YXR0
cihwa2dfcmVzb3VyY2VzLCAiaXRlcl9lbnRyeV9wb2ludHMiLCBteV9pdGVyKQorICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIoaW1wb3J0bGliX21ldGFkYXRhLCAiZGlzdHJpYnV0aW9ucyIsIGRpc3Ry
aWJ1dGlvbnMpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAg
dGVzdGRpci5wYXJzZWNvbmZpZygpCiAKIAorZGVmIHRlc3RfaW1wb3J0bGliX21ldGFkYXRhX2Jy
b2tlbl9kaXN0cmlidXRpb24odGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICIiIkludGVncmF0
aW9uIHRlc3QgZm9yIGJyb2tlbiBkaXN0cmlidXRpb25zIHdpdGggJ2ZpbGVzJyBtZXRhZGF0YSBi
ZWluZyBOb25lICgjNTM4OSkiIiIKKyAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNB
QkxFX1BMVUdJTl9BVVRPTE9BRCIsIHJhaXNpbmc9RmFsc2UpCisKKyAgICBjbGFzcyBEdW1teUVu
dHJ5UG9pbnQ6CisgICAgICAgIG5hbWUgPSAibXl0ZXN0cGx1Z2luIgorICAgICAgICBncm91cCA9
ICJweXRlc3QxMSIKKworICAgICAgICBkZWYgbG9hZChzZWxmKToKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3QoKQorCisgICAgY2xhc3MgRGlzdHJpYnV0aW9uOgorICAgICAgICB2ZXJzaW9uID0g
IjEuMCIKKyAgICAgICAgZmlsZXMgPSBOb25lCisgICAgICAgIG1ldGFkYXRhID0geyJuYW1lIjog
ImZvbyJ9CisgICAgICAgIGVudHJ5X3BvaW50cyA9IChEdW1teUVudHJ5UG9pbnQoKSwpCisKKyAg
ICBkZWYgZGlzdHJpYnV0aW9ucygpOgorICAgICAgICByZXR1cm4gKERpc3RyaWJ1dGlvbigpLCkK
KworICAgIG1vbmtleXBhdGNoLnNldGF0dHIoaW1wb3J0bGliX21ldGFkYXRhLCAiZGlzdHJpYnV0
aW9ucyIsIGRpc3RyaWJ1dGlvbnMpCisgICAgdGVzdGRpci5wYXJzZWNvbmZpZygpCisKKwogQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJibG9ja19pdCIsIFtUcnVlLCBGYWxzZV0pCiBkZWYgdGVz
dF9wbHVnaW5fcHJlcGFyc2VfcHJldmVudHNfc2V0dXB0b29sc19sb2FkaW5nKHRlc3RkaXIsIG1v
bmtleXBhdGNoLCBibG9ja19pdCk6Ci0gICAgcGtnX3Jlc291cmNlcyA9IHB5dGVzdC5pbXBvcnRv
cnNraXAoInBrZ19yZXNvdXJjZXMiKQorICAgIG1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJ
U0FCTEVfUExVR0lOX0FVVE9MT0FEIiwgcmFpc2luZz1GYWxzZSkKIAogICAgIHBsdWdpbl9tb2R1
bGVfcGxhY2Vob2xkZXIgPSBvYmplY3QoKQogCi0gICAgZGVmIG15X2l0ZXIobmFtZSk6Ci0gICAg
ICAgIGFzc2VydCBuYW1lID09ICJweXRlc3QxMSIKLQotICAgICAgICBjbGFzcyBEaXN0KG9iamVj
dCk6Ci0gICAgICAgICAgICBwcm9qZWN0X25hbWUgPSAic3BhbSIKLSAgICAgICAgICAgIHZlcnNp
b24gPSAiMS4wIgotCi0gICAgICAgICAgICBkZWYgX2dldF9tZXRhZGF0YShzZWxmLCBuYW1lKToK
LSAgICAgICAgICAgICAgICByZXR1cm4gWyJmb28udHh0LHNoYTI1Nj1hYmMsMTIzIl0KKyAgICBj
bGFzcyBEdW1teUVudHJ5UG9pbnQ6CisgICAgICAgIG5hbWUgPSAibXl0ZXN0cGx1Z2luIgorICAg
ICAgICBncm91cCA9ICJweXRlc3QxMSIKIAotICAgICAgICBjbGFzcyBFbnRyeVBvaW50KG9iamVj
dCk6Ci0gICAgICAgICAgICBuYW1lID0gIm15dGVzdHBsdWdpbiIKLSAgICAgICAgICAgIGRpc3Qg
PSBEaXN0KCkKKyAgICAgICAgZGVmIGxvYWQoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gcGx1
Z2luX21vZHVsZV9wbGFjZWhvbGRlcgogCi0gICAgICAgICAgICBkZWYgbG9hZChzZWxmKToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGx1Z2luX21vZHVsZV9wbGFjZWhvbGRlcgorICAgIGNsYXNz
IERpc3RyaWJ1dGlvbjoKKyAgICAgICAgdmVyc2lvbiA9ICIxLjAiCisgICAgICAgIGZpbGVzID0g
KCJmb28udHh0IiwpCisgICAgICAgIG1ldGFkYXRhID0geyJuYW1lIjogImZvbyJ9CisgICAgICAg
IGVudHJ5X3BvaW50cyA9IChEdW1teUVudHJ5UG9pbnQoKSwpCiAKLSAgICAgICAgcmV0dXJuIGl0
ZXIoW0VudHJ5UG9pbnQoKV0pCisgICAgZGVmIGRpc3RyaWJ1dGlvbnMoKToKKyAgICAgICAgcmV0
dXJuIChEaXN0cmlidXRpb24oKSwpCiAKLSAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBrZ19yZXNv
dXJjZXMsICJpdGVyX2VudHJ5X3BvaW50cyIsIG15X2l0ZXIpCisgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cihpbXBvcnRsaWJfbWV0YWRhdGEsICJkaXN0cmlidXRpb25zIiwgZGlzdHJpYnV0aW9ucykK
ICAgICBhcmdzID0gKCItcCIsICJubzpteXRlc3RwbHVnaW4iKSBpZiBibG9ja19pdCBlbHNlICgp
CiAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZpZygqYXJncykKICAgICBjb25maWcucGx1
Z2lubWFuYWdlci5pbXBvcnRfcGx1Z2luKCJteXRlc3RwbHVnaW4iKQpAQCAtNjA2LDkgKzk5NSw3
NyBAQCBkZWYgdGVzdF9wbHVnaW5fcHJlcGFyc2VfcHJldmVudHNfc2V0dXB0b29sc19sb2FkaW5n
KHRlc3RkaXIsIG1vbmtleXBhdGNoLCBibG9jawogICAgICAgICBhc3NlcnQgIm15dGVzdHBsdWdp
biIgbm90IGluIHN5cy5tb2R1bGVzCiAgICAgICAgIGFzc2VydCBjb25maWcucGx1Z2lubWFuYWdl
ci5nZXRfcGx1Z2luKCJteXRlc3RwbHVnaW4iKSBpcyBOb25lCiAgICAgZWxzZToKLSAgICAgICAg
YXNzZXJ0IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oCi0gICAgICAgICAgICAibXl0
ZXN0cGx1Z2luIgotICAgICAgICApIGlzIHBsdWdpbl9tb2R1bGVfcGxhY2Vob2xkZXIKKyAgICAg
ICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4o
Im15dGVzdHBsdWdpbiIpIGlzIHBsdWdpbl9tb2R1bGVfcGxhY2Vob2xkZXIKKyAgICAgICAgKQor
CisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAicGFyc2VfYXJncyxzaG91bGRfbG9h
ZCIsIFsoKCItcCIsICJteXRlc3RwbHVnaW4iKSwgVHJ1ZSksICgoKSwgRmFsc2UpXQorKQorZGVm
IHRlc3RfZGlzYWJsZV9wbHVnaW5fYXV0b2xvYWQodGVzdGRpciwgbW9ua2V5cGF0Y2gsIHBhcnNl
X2FyZ3MsIHNob3VsZF9sb2FkKToKKyAgICBjbGFzcyBEdW1teUVudHJ5UG9pbnQ6CisgICAgICAg
IHByb2plY3RfbmFtZSA9IG5hbWUgPSAibXl0ZXN0cGx1Z2luIgorICAgICAgICBncm91cCA9ICJw
eXRlc3QxMSIKKyAgICAgICAgdmVyc2lvbiA9ICIxLjAiCisKKyAgICAgICAgZGVmIGxvYWQoc2Vs
Zik6CisgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbc2VsZi5uYW1lXQorCisgICAgY2xh
c3MgRGlzdHJpYnV0aW9uOgorICAgICAgICBtZXRhZGF0YSA9IHsibmFtZSI6ICJmb28ifQorICAg
ICAgICBlbnRyeV9wb2ludHMgPSAoRHVtbXlFbnRyeVBvaW50KCksKQorICAgICAgICBmaWxlcyA9
ICgpCisKKyAgICBjbGFzcyBQc2V1ZG9QbHVnaW46CisgICAgICAgIHggPSA0MgorCisgICAgICAg
IGF0dHJzX3VzZWQgPSBbXQorCisgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToK
KyAgICAgICAgICAgIGFzc2VydCBuYW1lID09ICJfX2xvYWRlcl9fIgorICAgICAgICAgICAgc2Vs
Zi5hdHRyc191c2VkLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdCgpCisK
KyAgICBkZWYgZGlzdHJpYnV0aW9ucygpOgorICAgICAgICByZXR1cm4gKERpc3RyaWJ1dGlvbigp
LCkKKworICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FVVE9M
T0FEIiwgIjEiKQorICAgIG1vbmtleXBhdGNoLnNldGF0dHIoaW1wb3J0bGliX21ldGFkYXRhLCAi
ZGlzdHJpYnV0aW9ucyIsIGRpc3RyaWJ1dGlvbnMpCisgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShz
eXMubW9kdWxlcywgIm15dGVzdHBsdWdpbiIsIFBzZXVkb1BsdWdpbigpKQorICAgIGNvbmZpZyA9
IHRlc3RkaXIucGFyc2Vjb25maWcoKnBhcnNlX2FyZ3MpCisgICAgaGFzX2xvYWRlZCA9IGNvbmZp
Zy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oIm15dGVzdHBsdWdpbiIpIGlzIG5vdCBOb25lCisg
ICAgYXNzZXJ0IGhhc19sb2FkZWQgPT0gc2hvdWxkX2xvYWQKKyAgICBpZiBzaG91bGRfbG9hZDoK
KyAgICAgICAgYXNzZXJ0IFBzZXVkb1BsdWdpbi5hdHRyc191c2VkID09IFsiX19sb2FkZXJfXyJd
CisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IFBzZXVkb1BsdWdpbi5hdHRyc191c2VkID09IFtd
CisKKworZGVmIHRlc3RfcGx1Z2luX2xvYWRpbmdfb3JkZXIodGVzdGRpcik6CisgICAgIiIiVGVz
dCBvcmRlciBvZiBwbHVnaW4gbG9hZGluZyB3aXRoIGAtcGAuIiIiCisgICAgcDEgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90ZXJtaW5hbF9wbHVn
aW4ocmVxdWVzdCk6CisgICAgICAgICAgICBpbXBvcnQgbXlwbHVnaW4KKyAgICAgICAgICAgIGFz
c2VydCBteXBsdWdpbi50ZXJtaW5hbF9wbHVnaW4gPT0gW0ZhbHNlLCBUcnVlXQorICAgICAgICAi
IiIsCisgICAgICAgICoqeworICAgICAgICAgICAgIm15cGx1Z2luIjogIiIiCisgICAgICAgICAg
ICB0ZXJtaW5hbF9wbHVnaW4gPSBbXQorCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3Vy
ZShjb25maWcpOgorICAgICAgICAgICAgICAgIHRlcm1pbmFsX3BsdWdpbi5hcHBlbmQoYm9vbChj
b25maWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2luKCJ0ZXJtaW5hbHJlcG9ydGVyIikpKQorCisg
ICAgICAgICAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZXNzaW9uKToKKyAgICAgICAgICAg
ICAgICBjb25maWcgPSBzZXNzaW9uLmNvbmZpZworICAgICAgICAgICAgICAgIHRlcm1pbmFsX3Bs
dWdpbi5hcHBlbmQoYm9vbChjb25maWcucGx1Z2lubWFuYWdlci5nZXRfcGx1Z2luKCJ0ZXJtaW5h
bHJlcG9ydGVyIikpKQorICAgICAgICAgICAgIiIiCisgICAgICAgIH0sCisgICAgKQorICAgIHRl
c3RkaXIuc3lzcGF0aGluc2VydCgpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1w
IiwgIm15cGx1Z2luIiwgc3RyKHAxKSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAKIAog
ZGVmIHRlc3RfY21kbGluZV9wcm9jZXNzYXJnc19zaW1wbGUodGVzdGRpcik6CkBAIC02MjMsOCAr
MTA4MCw4IEBAIGRlZiB0ZXN0X2NtZGxpbmVfcHJvY2Vzc2FyZ3Nfc2ltcGxlKHRlc3RkaXIpOgog
CiAKIGRlZiB0ZXN0X2ludmFsaWRfb3B0aW9uc19zaG93X2V4dHJhX2luZm9ybWF0aW9uKHRlc3Rk
aXIpOgotICAgICIiImRpc3BsYXkgZXh0cmEgaW5mb3JtYXRpb24gd2hlbiBweXRlc3QgZXhpdHMg
ZHVlIHRvIHVucmVjb2duaXplZAotICAgIG9wdGlvbnMgaW4gdGhlIGNvbW1hbmQtbGluZSIiIgor
ICAgICIiIkRpc3BsYXkgZXh0cmEgaW5mb3JtYXRpb24gd2hlbiBweXRlc3QgZXhpdHMgZHVlIHRv
IHVucmVjb2duaXplZAorICAgIG9wdGlvbnMgaW4gdGhlIGNvbW1hbmQtbGluZS4iIiIKICAgICB0
ZXN0ZGlyLm1ha2VpbmkoCiAgICAgICAgICIiIgogICAgICAgICBbcHl0ZXN0XQpAQCAtNjUwLDkg
KzExMDcsOSBAQCBkZWYgdGVzdF9pbnZhbGlkX29wdGlvbnNfc2hvd19leHRyYV9pbmZvcm1hdGlv
bih0ZXN0ZGlyKToKICAgICAgICAgWyItdiIsICJkaXIyIiwgImRpcjEiXSwKICAgICBdLAogKQot
ZGVmIHRlc3RfY29uc2lkZXJfYXJnc19hZnRlcl9vcHRpb25zX2Zvcl9yb290ZGlyX2FuZF9pbmlm
aWxlKHRlc3RkaXIsIGFyZ3MpOgorZGVmIHRlc3RfY29uc2lkZXJfYXJnc19hZnRlcl9vcHRpb25z
X2Zvcl9yb290ZGlyKHRlc3RkaXIsIGFyZ3MpOgogICAgICIiIgotICAgIENvbnNpZGVyIGFsbCBh
cmd1bWVudHMgaW4gdGhlIGNvbW1hbmQtbGluZSBmb3Igcm9vdGRpciBhbmQgaW5pZmlsZQorICAg
IENvbnNpZGVyIGFsbCBhcmd1bWVudHMgaW4gdGhlIGNvbW1hbmQtbGluZSBmb3Igcm9vdGRpcgog
ICAgIGRpc2NvdmVyeSwgZXZlbiBpZiB0aGV5IGhhcHBlbiB0byBvY2N1ciBhZnRlciBhbiBvcHRp
b24uICM5NDkKICAgICAiIiIKICAgICAjIHJlcGxhY2UgImRpcjEiIGFuZCAiZGlyMiIgZnJvbSAi
YXJncyIgaW50byB0aGVpciByZWFsIGRpcmVjdG9yeQpAQCAtNjY2LDEzICsxMTIzLDEyIEBAIGRl
ZiB0ZXN0X2NvbnNpZGVyX2FyZ3NfYWZ0ZXJfb3B0aW9uc19mb3Jfcm9vdGRpcl9hbmRfaW5pZmls
ZSh0ZXN0ZGlyLCBhcmdzKToKICAgICAgICAgICAgIGFyZ3NbaV0gPSBkMgogICAgIHdpdGggcm9v
dC5hc19jd2QoKToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3MpCi0g
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnJvb3RkaXI6ICpteXJvb3QsIGluaWZp
bGU6Il0pCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnJvb3RkaXI6ICpteXJv
b3QiXSkKIAogCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyIp
CiBkZWYgdGVzdF90b29sb25nYXJnc19pc3N1ZTIyNCh0ZXN0ZGlyKToKICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLW0iLCAiaGVsbG8iICogNTAwKQotICAgIGFzc2VydCByZXN1bHQu
cmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4
aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAogCiAKIGRlZiB0ZXN0X2NvbmZpZ19pbl9zdWJkaXJl
Y3RvcnlfY29sb25fY29tbWFuZF9saW5lX2lzc3VlMjE0OCh0ZXN0ZGlyKToKQEAgLTY4MywxNyAr
MTEzOSwxNyBAQCBkZWYgdGVzdF9jb25maWdfaW5fc3ViZGlyZWN0b3J5X2NvbG9uX2NvbW1hbmRf
bGluZV9pc3N1ZTIxNDgodGVzdGRpcik6CiAKICAgICB0ZXN0ZGlyLm1ha2VmaWxlKAogICAgICAg
ICAiLmluaSIsCi0gICAgICAgICoqeyJweXRlc3QiOiAiW3B5dGVzdF1cbmZvbyA9IHJvb3QiLCAi
c3ViZGlyL3B5dGVzdCI6ICJbcHl0ZXN0XVxuZm9vID0gc3ViZGlyIn0KKyAgICAgICAgKip7InB5
dGVzdCI6ICJbcHl0ZXN0XVxuZm9vID0gcm9vdCIsICJzdWJkaXIvcHl0ZXN0IjogIltweXRlc3Rd
XG5mb28gPSBzdWJkaXIifSwKICAgICApCiAKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICoqewogICAgICAgICAgICAgImNvbmZ0ZXN0IjogY29uZnRlc3Rfc291cmNlLAogICAgICAg
ICAgICAgInN1YmRpci9jb25mdGVzdCI6IGNvbmZ0ZXN0X3NvdXJjZSwKLSAgICAgICAgICAgICJz
dWJkaXIvdGVzdF9mb28iOiAiIiIKKyAgICAgICAgICAgICJzdWJkaXIvdGVzdF9mb28iOiAiIiJc
CiAgICAgICAgICAgICBkZWYgdGVzdF9mb28ocHl0ZXN0Y29uZmlnKToKICAgICAgICAgICAgICAg
ICBhc3NlcnQgcHl0ZXN0Y29uZmlnLmdldGluaSgnZm9vJykgPT0gJ3N1YmRpcicKLSAgICAgICAg
IiIiLAorICAgICAgICAgICAgIiIiLAogICAgICAgICB9CiAgICAgKQogCkBAIC03MDMsMjkgKzEx
NTksMzkgQEAgZGVmIHRlc3RfY29uZmlnX2luX3N1YmRpcmVjdG9yeV9jb2xvbl9jb21tYW5kX2xp
bmVfaXNzdWUyMTQ4KHRlc3RkaXIpOgogCiBkZWYgdGVzdF9ub3RpZnlfZXhjZXB0aW9uKHRlc3Rk
aXIsIGNhcGZkKToKICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKLSAgICBleGNp
bmZvID0gcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCAicmFpc2UgVmFsdWVFcnJvcigxKSIpCi0g
ICAgY29uZmlnLm5vdGlmeV9leGNlcHRpb24oZXhjaW5mbykKLSAgICBvdXQsIGVyciA9IGNhcGZk
LnJlYWRvdXRlcnIoKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKSBhcyBleGNp
bmZvOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKDEpCisgICAgY29uZmlnLm5vdGlmeV9leGNl
cHRpb24oZXhjaW5mbywgY29uZmlnLm9wdGlvbikKKyAgICBfLCBlcnIgPSBjYXBmZC5yZWFkb3V0
ZXJyKCkKICAgICBhc3NlcnQgIlZhbHVlRXJyb3IiIGluIGVycgogCi0gICAgY2xhc3MgQShvYmpl
Y3QpOgotCi0gICAgICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCBleGNyZXByKToK
KyAgICBjbGFzcyBBOgorICAgICAgICBkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3Ioc2VsZik6CiAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0
ZXIoQSgpKQotICAgIGNvbmZpZy5ub3RpZnlfZXhjZXB0aW9uKGV4Y2luZm8pCi0gICAgb3V0LCBl
cnIgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBjb25maWcubm90aWZ5X2V4Y2VwdGlvbihleGNp
bmZvLCBjb25maWcub3B0aW9uKQorICAgIF8sIGVyciA9IGNhcGZkLnJlYWRvdXRlcnIoKQogICAg
IGFzc2VydCBub3QgZXJyCiAKKyAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItcCIs
ICJubzp0ZXJtaW5hbCIpCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpIGFzIGV4
Y2luZm86CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoMSkKKyAgICBjb25maWcubm90aWZ5X2V4
Y2VwdGlvbihleGNpbmZvLCBjb25maWcub3B0aW9uKQorICAgIF8sIGVyciA9IGNhcGZkLnJlYWRv
dXRlcnIoKQorICAgIGFzc2VydCAiVmFsdWVFcnJvciIgaW4gZXJyCiAKLWRlZiB0ZXN0X2xvYWRf
aW5pdGlhbF9jb25mdGVzdF9sYXN0X29yZGVyaW5nKHRlc3RkaXIpOgotICAgIGZyb20gX3B5dGVz
dC5jb25maWcgaW1wb3J0IGdldF9jb25maWcKIAotICAgIHBtID0gZ2V0X2NvbmZpZygpLnBsdWdp
bm1hbmFnZXIKK2RlZiB0ZXN0X25vX3Rlcm1pbmFsX2Rpc2NvdmVyeV9lcnJvcih0ZXN0ZGlyKToK
KyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoInJhaXNlIFR5cGVFcnJvcignb29wcyEnKSIpCisgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1wIiwgIm5vOnRlcm1pbmFsIiwgIi0tY29sbGVj
dC1vbmx5IikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5JTlRFUlJVUFRFRAog
Ci0gICAgY2xhc3MgTXkob2JqZWN0KToKIAorZGVmIHRlc3RfbG9hZF9pbml0aWFsX2NvbmZ0ZXN0
X2xhc3Rfb3JkZXJpbmcoX2NvbmZpZ19mb3JfdGVzdCk6CisgICAgcG0gPSBfY29uZmlnX2Zvcl90
ZXN0LnBsdWdpbm1hbmFnZXIKKworICAgIGNsYXNzIE15OgogICAgICAgICBkZWYgcHl0ZXN0X2xv
YWRfaW5pdGlhbF9jb25mdGVzdHMoc2VsZik6CiAgICAgICAgICAgICBwYXNzCiAKQEAgLTczMywx
NyArMTE5OSwyMSBAQCBkZWYgdGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RfbGFzdF9vcmRlcmlu
Zyh0ZXN0ZGlyKToKICAgICBwbS5yZWdpc3RlcihtKQogICAgIGhjID0gcG0uaG9vay5weXRlc3Rf
bG9hZF9pbml0aWFsX2NvbmZ0ZXN0cwogICAgIHZhbHVlcyA9IGhjLl9ub253cmFwcGVycyArIGhj
Ll93cmFwcGVycwotICAgIGV4cGVjdGVkID0gWyJfcHl0ZXN0LmNvbmZpZyIsICJ0ZXN0X2NvbmZp
ZyIsICJfcHl0ZXN0LmNhcHR1cmUiXQorICAgIGV4cGVjdGVkID0gWyJfcHl0ZXN0LmNvbmZpZyIs
IG0uX19tb2R1bGVfXywgIl9weXRlc3QuY2FwdHVyZSIsICJfcHl0ZXN0Lndhcm5pbmdzIl0KICAg
ICBhc3NlcnQgW3guZnVuY3Rpb24uX19tb2R1bGVfXyBmb3IgeCBpbiB2YWx1ZXNdID09IGV4cGVj
dGVkCiAKIAotZGVmIHRlc3RfZ2V0X3BsdWdpbl9zcGVjc19hc19saXN0KCk6Ci0gICAgZnJvbSBf
cHl0ZXN0LmNvbmZpZyBpbXBvcnQgX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdAorZGVmIHRlc3Rf
Z2V0X3BsdWdpbl9zcGVjc19hc19saXN0KCkgLT4gTm9uZToKKyAgICBkZWYgZXhwX21hdGNoKHZh
bDogb2JqZWN0KSAtPiBzdHI6CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICAiUGx1Z2lu
cyBtYXkgYmUgc3BlY2lmaWVkIGFzIGEgc2VxdWVuY2Ugb3IgYSAnLCctc2VwYXJhdGVkIHN0cmlu
ZyBvZiBwbHVnaW4gbmFtZXMuIEdvdDogJXMiCisgICAgICAgICAgICAlIHJlLmVzY2FwZShyZXBy
KHZhbCkpCisgICAgICAgICkKIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VF
cnJvcik6Ci0gICAgICAgIF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3QoeyJmb28ifSkKLSAgICB3
aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LlVzYWdlRXJyb3IpOgotICAgICAgICBfZ2V0X3BsdWdp
bl9zcGVjc19hc19saXN0KGRpY3QoKSkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LlVz
YWdlRXJyb3IsIG1hdGNoPWV4cF9tYXRjaCh7ImZvbyJ9KSk6CisgICAgICAgIF9nZXRfcGx1Z2lu
X3NwZWNzX2FzX2xpc3QoeyJmb28ifSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VFcnJvciwgbWF0Y2g9ZXhwX21hdGNoKHt9KSk6
CisgICAgICAgIF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3QoZGljdCgpKSAgIyB0eXBlOiBpZ25v
cmVbYXJnLXR5cGVdCiAKICAgICBhc3NlcnQgX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdChOb25l
KSA9PSBbXQogICAgIGFzc2VydCBfZ2V0X3BsdWdpbl9zcGVjc19hc19saXN0KCIiKSA9PSBbXQpA
QCAtNzUzLDEyNCArMTIyMywxODUgQEAgZGVmIHRlc3RfZ2V0X3BsdWdpbl9zcGVjc19hc19saXN0
KCk6CiAgICAgYXNzZXJ0IF9nZXRfcGx1Z2luX3NwZWNzX2FzX2xpc3QoKCJmb28iLCAiYmFyIikp
ID09IFsiZm9vIiwgImJhciJdCiAKIAotY2xhc3MgVGVzdFdhcm5pbmcob2JqZWN0KToKK2RlZiB0
ZXN0X2NvbGxlY3RfcHl0ZXN0X3ByZWZpeF9idWdfaW50ZWdyYXRpb24odGVzdGRpcik6CisgICAg
IiIiSW50ZWdyYXRpb24gdGVzdCBmb3IgaXNzdWUgIzM3NzUiIiIKKyAgICBwID0gdGVzdGRpci5j
b3B5X2V4YW1wbGUoImNvbmZpZy9jb2xsZWN0X3B5dGVzdF9wcmVmaXgiKQorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KHApCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
KiAxIHBhc3NlZCAqIl0pCiAKLSAgICBkZWYgdGVzdF93YXJuX2NvbmZpZyhzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25m
aWcpOgotICAgICAgICAgICAgICAgIGNvbmZpZy53YXJuKCJDMSIsICJoZWxsbyIpCi0gICAgICAg
ICAgICBkZWYgcHl0ZXN0X2xvZ3dhcm5pbmcoY29kZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAg
ICAgaWYgbWVzc2FnZSA9PSAiaGVsbG8iIGFuZCBjb2RlID09ICJDMSI6Ci0gICAgICAgICAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmQoMSkKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVz
dF9wcm9wZXIocHl0ZXN0Y29uZmlnKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgY29uZnRlc3QK
LSAgICAgICAgICAgICAgICBhc3NlcnQgY29uZnRlc3QudmFsdWVzID09IFsxXQotICAgICAgICAi
IiIKLSAgICAgICAgKQotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQotICAg
ICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKLQotICAgIGRlZiB0ZXN0X3dhcm5f
b25fdGVzdF9pdGVtX2Zyb21fcmVxdWVzdChzZWxmLCB0ZXN0ZGlyLCByZXF1ZXN0KToKLSAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0CiAKLSAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICAgICAgZGVm
IGZpeChyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXF1ZXN0Lm5vZGUud2FybigiVDEiLCAi
aGVsbG8iKQorZGVmIHRlc3RfY29sbGVjdF9weXRlc3RfcHJlZml4X2J1ZyhweXRlc3Rjb25maWcp
OgorICAgICIiIkVuc3VyZSB3ZSBjb2xsZWN0IG9ubHkgYWN0dWFsIGZ1bmN0aW9ucyBmcm9tIGNv
bmZ0ZXN0IGZpbGVzICgjMzc3NSkiIiIKIAotICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8oZml4
KToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWRpc2FibGUtcHl0ZXN0LXdhcm5pbmdzIikK
LSAgICAgICAgYXNzZXJ0IHJlc3VsdC5wYXJzZW91dGNvbWVzKClbIndhcm5pbmdzIl0gPiAwCi0g
ICAgICAgIGFzc2VydCAiaGVsbG8iIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCi0KLSAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgID09PSp3YXJuaW5ncyBz
dW1tYXJ5Kj09PQotICAgICAgICAgICAgKnRlc3Rfd2Fybl9vbl90ZXN0X2l0ZW1fZnJvbV9yZXF1
ZXN0LnB5Ojp0ZXN0X2hlbGxvKgotICAgICAgICAgICAgKmhlbGxvKgotICAgICAgICAiIiIKLSAg
ICAgICAgKQorICAgIGNsYXNzIER1bW15OgorICAgICAgICBjbGFzcyBweXRlc3Rfc29tZXRoaW5n
OgorICAgICAgICAgICAgcGFzcwogCisgICAgcG0gPSBweXRlc3Rjb25maWcucGx1Z2lubWFuYWdl
cgorICAgIGFzc2VydCBwbS5wYXJzZV9ob29raW1wbF9vcHRzKER1bW15KCksICJweXRlc3Rfc29t
ZXRoaW5nIikgaXMgTm9uZQogCi1jbGFzcyBUZXN0Um9vdGRpcihvYmplY3QpOgogCi0gICAgZGVm
IHRlc3Rfc2ltcGxlX25vaW5pKHNlbGYsIHRtcGRpcik6Ci0gICAgICAgIGFzc2VydCBnZXRfY29t
bW9uX2FuY2VzdG9yKFt0bXBkaXJdKSA9PSB0bXBkaXIKLSAgICAgICAgYSA9IHRtcGRpci5ta2Rp
cigiYSIpCi0gICAgICAgIGFzc2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFthLCB0bXBkaXJdKSA9
PSB0bXBkaXIKLSAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW3RtcGRpciwgYV0p
ID09IHRtcGRpcgotICAgICAgICB3aXRoIHRtcGRpci5hc19jd2QoKToKLSAgICAgICAgICAgIGFz
c2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFtdKSA9PSB0bXBkaXIKLSAgICAgICAgICAgIG5vX3Bh
dGggPSB0bXBkaXIuam9pbigiZG9lcy1ub3QtZXhpc3QiKQotICAgICAgICAgICAgYXNzZXJ0IGdl
dF9jb21tb25fYW5jZXN0b3IoW25vX3BhdGhdKSA9PSB0bXBkaXIKLSAgICAgICAgICAgIGFzc2Vy
dCBnZXRfY29tbW9uX2FuY2VzdG9yKFtub19wYXRoLmpvaW4oImEiKV0pID09IHRtcGRpcgorY2xh
c3MgVGVzdFJvb3RkaXI6CisgICAgZGVmIHRlc3Rfc2ltcGxlX25vaW5pKHNlbGYsIHRtcF9wYXRo
OiBQYXRoLCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgICAgIGFzc2Vy
dCBnZXRfY29tbW9uX2FuY2VzdG9yKFt0bXBfcGF0aF0pID09IHRtcF9wYXRoCisgICAgICAgIGEg
PSB0bXBfcGF0aCAvICJhIgorICAgICAgICBhLm1rZGlyKCkKKyAgICAgICAgYXNzZXJ0IGdldF9j
b21tb25fYW5jZXN0b3IoW2EsIHRtcF9wYXRoXSkgPT0gdG1wX3BhdGgKKyAgICAgICAgYXNzZXJ0
IGdldF9jb21tb25fYW5jZXN0b3IoW3RtcF9wYXRoLCBhXSkgPT0gdG1wX3BhdGgKKyAgICAgICAg
bW9ua2V5cGF0Y2guY2hkaXIodG1wX3BhdGgpCisgICAgICAgIGFzc2VydCBnZXRfY29tbW9uX2Fu
Y2VzdG9yKFtdKSA9PSB0bXBfcGF0aAorICAgICAgICBub19wYXRoID0gdG1wX3BhdGggLyAiZG9l
cy1ub3QtZXhpc3QiCisgICAgICAgIGFzc2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFtub19wYXRo
XSkgPT0gdG1wX3BhdGgKKyAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW25vX3Bh
dGggLyAiYSJdKSA9PSB0bXBfcGF0aAogCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJu
YW1lIiwgInNldHVwLmNmZyB0b3guaW5pIHB5dGVzdC5pbmkiLnNwbGl0KCkpCi0gICAgZGVmIHRl
c3Rfd2l0aF9pbmkoc2VsZiwgdG1wZGlyLCBuYW1lKToKLSAgICAgICAgaW5pZmlsZSA9IHRtcGRp
ci5qb2luKG5hbWUpCi0gICAgICAgIGluaWZpbGUud3JpdGUoIltweXRlc3RdXG4iKQotCi0gICAg
ICAgIGEgPSB0bXBkaXIubWtkaXIoImEiKQotICAgICAgICBiID0gYS5ta2RpcigiYiIpCi0gICAg
ICAgIGZvciBhcmdzIGluIChbdG1wZGlyXSwgW2FdLCBbYl0pOgotICAgICAgICAgICAgcm9vdGRp
ciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIGFyZ3MpCi0gICAgICAg
ICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBkaXIKLSAgICAgICAgICAgIGFzc2VydCBpbmlmaWxl
ID09IGluaWZpbGUKLSAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5l
X3NldHVwKE5vbmUsIFtiLCBhXSkKLSAgICAgICAgYXNzZXJ0IHJvb3RkaXIgPT0gdG1wZGlyCi0g
ICAgICAgIGFzc2VydCBpbmlmaWxlID09IGluaWZpbGUKLQotICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgibmFtZSIsICJzZXR1cC5jZmcgdG94LmluaSIuc3BsaXQoKSkKLSAgICBkZWYgdGVz
dF9weXRlc3Rpbmlfb3ZlcmlkZXNfZW1wdHlfb3RoZXIoc2VsZiwgdG1wZGlyLCBuYW1lKToKLSAg
ICAgICAgaW5pZmlsZSA9IHRtcGRpci5lbnN1cmUoInB5dGVzdC5pbmkiKQotICAgICAgICBhID0g
dG1wZGlyLm1rZGlyKCJhIikKLSAgICAgICAgYS5lbnN1cmUobmFtZSkKLSAgICAgICAgcm9vdGRp
ciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIFthXSkKLSAgICAgICAg
YXNzZXJ0IHJvb3RkaXIgPT0gdG1wZGlyCi0gICAgICAgIGFzc2VydCBpbmlmaWxlID09IGluaWZp
bGUKLQotICAgIGRlZiB0ZXN0X3NldHVwcHlfZmFsbGJhY2soc2VsZiwgdG1wZGlyKToKLSAgICAg
ICAgYSA9IHRtcGRpci5ta2RpcigiYSIpCi0gICAgICAgIGEuZW5zdXJlKCJzZXR1cC5jZmciKQot
ICAgICAgICB0bXBkaXIuZW5zdXJlKCJzZXR1cC5weSIpCi0gICAgICAgIHJvb3RkaXIsIGluaWZp
bGUsIGluaWNmZyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbYV0pCi0gICAgICAgIGFzc2VydCBy
b290ZGlyID09IHRtcGRpcgotICAgICAgICBhc3NlcnQgaW5pZmlsZSBpcyBOb25lCisgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAibmFtZSwgY29udGVudHMiLAorICAgICAg
ICBbCisgICAgICAgICAgICBweXRlc3QucGFyYW0oInB5dGVzdC5pbmkiLCAiW3B5dGVzdF1cbng9
MTAiLCBpZD0icHl0ZXN0LmluaSIpLAorICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAg
ICAgICAgICAgICJweXByb2plY3QudG9tbCIsICJbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdXG54
PTEwIiwgaWQ9InB5cHJvamVjdC50b21sIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHB5
dGVzdC5wYXJhbSgidG94LmluaSIsICJbcHl0ZXN0XVxueD0xMCIsIGlkPSJ0b3guaW5pIiksCisg
ICAgICAgICAgICBweXRlc3QucGFyYW0oInNldHVwLmNmZyIsICJbdG9vbDpweXRlc3RdXG54PTEw
IiwgaWQ9InNldHVwLmNmZyIpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYgdGVzdF93aXRo
X2luaShzZWxmLCB0bXBfcGF0aDogUGF0aCwgbmFtZTogc3RyLCBjb250ZW50czogc3RyKSAtPiBO
b25lOgorICAgICAgICBpbmlwYXRoID0gdG1wX3BhdGggLyBuYW1lCisgICAgICAgIGluaXBhdGgu
d3JpdGVfdGV4dChjb250ZW50cywgInV0Zi04IikKKworICAgICAgICBhID0gdG1wX3BhdGggLyAi
YSIKKyAgICAgICAgYS5ta2RpcigpCisgICAgICAgIGIgPSBhIC8gImIiCisgICAgICAgIGIubWtk
aXIoKQorICAgICAgICBmb3IgYXJncyBpbiAoW3N0cih0bXBfcGF0aCldLCBbc3RyKGEpXSwgW3N0
cihiKV0pOgorICAgICAgICAgICAgcm9vdHBhdGgsIHBhcnNlZF9pbmlwYXRoLCBfID0gZGV0ZXJt
aW5lX3NldHVwKE5vbmUsIGFyZ3MpCisgICAgICAgICAgICBhc3NlcnQgcm9vdHBhdGggPT0gdG1w
X3BhdGgKKyAgICAgICAgICAgIGFzc2VydCBwYXJzZWRfaW5pcGF0aCA9PSBpbmlwYXRoCisgICAg
ICAgIHJvb3RwYXRoLCBwYXJzZWRfaW5pcGF0aCwgaW5pX2NvbmZpZyA9IGRldGVybWluZV9zZXR1
cChOb25lLCBbc3RyKGIpLCBzdHIoYSldKQorICAgICAgICBhc3NlcnQgcm9vdHBhdGggPT0gdG1w
X3BhdGgKKyAgICAgICAgYXNzZXJ0IHBhcnNlZF9pbmlwYXRoID09IGluaXBhdGgKKyAgICAgICAg
YXNzZXJ0IGluaV9jb25maWcgPT0geyJ4IjogIjEwIn0KKworICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgibmFtZSIsIFsic2V0dXAuY2ZnIiwgInRveC5pbmkiXSkKKyAgICBkZWYgdGVzdF9w
eXRlc3Rpbmlfb3ZlcnJpZGVzX2VtcHR5X290aGVyKHNlbGYsIHRtcF9wYXRoOiBQYXRoLCBuYW1l
OiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGluaXBhdGggPSB0bXBfcGF0aCAvICJweXRlc3QuaW5p
IgorICAgICAgICBpbmlwYXRoLnRvdWNoKCkKKyAgICAgICAgYSA9IHRtcF9wYXRoIC8gImEiCisg
ICAgICAgIGEubWtkaXIoKQorICAgICAgICAoYSAvIG5hbWUpLnRvdWNoKCkKKyAgICAgICAgcm9v
dHBhdGgsIHBhcnNlZF9pbmlwYXRoLCBfID0gZGV0ZXJtaW5lX3NldHVwKE5vbmUsIFtzdHIoYSld
KQorICAgICAgICBhc3NlcnQgcm9vdHBhdGggPT0gdG1wX3BhdGgKKyAgICAgICAgYXNzZXJ0IHBh
cnNlZF9pbmlwYXRoID09IGluaXBhdGgKKworICAgIGRlZiB0ZXN0X3NldHVwcHlfZmFsbGJhY2so
c2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgIGEgPSB0bXBfcGF0aCAvICJh
IgorICAgICAgICBhLm1rZGlyKCkKKyAgICAgICAgKGEgLyAic2V0dXAuY2ZnIikudG91Y2goKQor
ICAgICAgICAodG1wX3BhdGggLyAic2V0dXAucHkiKS50b3VjaCgpCisgICAgICAgIHJvb3RwYXRo
LCBpbmlwYXRoLCBpbmljZmcgPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgW3N0cihhKV0pCisgICAg
ICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBfcGF0aAorICAgICAgICBhc3NlcnQgaW5pcGF0aCBp
cyBOb25lCiAgICAgICAgIGFzc2VydCBpbmljZmcgPT0ge30KIAotICAgIGRlZiB0ZXN0X25vdGhp
bmcoc2VsZiwgdG1wZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgICAgIG1vbmtleXBhdGNoLmNoZGly
KHN0cih0bXBkaXIpKQotICAgICAgICByb290ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBkZXRlcm1p
bmVfc2V0dXAoTm9uZSwgW3RtcGRpcl0pCi0gICAgICAgIGFzc2VydCByb290ZGlyID09IHRtcGRp
cgotICAgICAgICBhc3NlcnQgaW5pZmlsZSBpcyBOb25lCisgICAgZGVmIHRlc3Rfbm90aGluZyhz
ZWxmLCB0bXBfcGF0aDogUGF0aCwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25lOgor
ICAgICAgICBtb25rZXlwYXRjaC5jaGRpcih0bXBfcGF0aCkKKyAgICAgICAgcm9vdHBhdGgsIGlu
aXBhdGgsIGluaWNmZyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbc3RyKHRtcF9wYXRoKV0pCisg
ICAgICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBfcGF0aAorICAgICAgICBhc3NlcnQgaW5pcGF0
aCBpcyBOb25lCiAgICAgICAgIGFzc2VydCBpbmljZmcgPT0ge30KIAotICAgIGRlZiB0ZXN0X3dp
dGhfc3BlY2lmaWNfaW5pZmlsZShzZWxmLCB0bXBkaXIpOgotICAgICAgICBpbmlmaWxlID0gdG1w
ZGlyLmVuc3VyZSgicHl0ZXN0LmluaSIpCi0gICAgICAgIHJvb3RkaXIsIGluaWZpbGUsIGluaWNm
ZyA9IGRldGVybWluZV9zZXR1cChpbmlmaWxlLCBbdG1wZGlyXSkKLSAgICAgICAgYXNzZXJ0IHJv
b3RkaXIgPT0gdG1wZGlyCi0KKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgICAg
ICJuYW1lLCBjb250ZW50cyIsCisgICAgICAgIFsKKyAgICAgICAgICAgICMgcHl0ZXN0LnBhcmFt
KCJweXRlc3QuaW5pIiwgIltweXRlc3RdXG54PTEwIiwgaWQ9InB5dGVzdC5pbmkiKSwKKyAgICAg
ICAgICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgICAgICAgICAicHlwcm9qZWN0LnRvbWwiLCAi
W3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXVxueD0xMCIsIGlkPSJweXByb2plY3QudG9tbCIKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICAjIHB5dGVzdC5wYXJhbSgidG94LmluaSIsICJbcHl0
ZXN0XVxueD0xMCIsIGlkPSJ0b3guaW5pIiksCisgICAgICAgICAgICAjIHB5dGVzdC5wYXJhbSgi
c2V0dXAuY2ZnIiwgIlt0b29sOnB5dGVzdF1cbng9MTAiLCBpZD0ic2V0dXAuY2ZnIiksCisgICAg
ICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X3dpdGhfc3BlY2lmaWNfaW5pZmlsZSgKKyAgICAg
ICAgc2VsZiwgdG1wX3BhdGg6IFBhdGgsIG5hbWU6IHN0ciwgY29udGVudHM6IHN0cgorICAgICkg
LT4gTm9uZToKKyAgICAgICAgcCA9IHRtcF9wYXRoIC8gbmFtZQorICAgICAgICBwLnRvdWNoKCkK
KyAgICAgICAgcC53cml0ZV90ZXh0KGNvbnRlbnRzLCAidXRmLTgiKQorICAgICAgICByb290cGF0
aCwgaW5pcGF0aCwgaW5pX2NvbmZpZyA9IGRldGVybWluZV9zZXR1cChzdHIocCksIFtzdHIodG1w
X3BhdGgpXSkKKyAgICAgICAgYXNzZXJ0IHJvb3RwYXRoID09IHRtcF9wYXRoCisgICAgICAgIGFz
c2VydCBpbmlwYXRoID09IHAKKyAgICAgICAgYXNzZXJ0IGluaV9jb25maWcgPT0geyJ4IjogIjEw
In0KKworICAgIGRlZiB0ZXN0X3dpdGhfYXJnX291dHNpZGVfY3dkX3dpdGhvdXRfaW5pZmlsZSgK
KyAgICAgICAgc2VsZiwgdG1wX3BhdGg6IFBhdGgsIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIodG1wX3BhdGgpCisgICAg
ICAgIGEgPSB0bXBfcGF0aCAvICJhIgorICAgICAgICBhLm1rZGlyKCkKKyAgICAgICAgYiA9IHRt
cF9wYXRoIC8gImIiCisgICAgICAgIGIubWtkaXIoKQorICAgICAgICByb290cGF0aCwgaW5pZmls
ZSwgXyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbc3RyKGEpLCBzdHIoYildKQorICAgICAgICBh
c3NlcnQgcm9vdHBhdGggPT0gdG1wX3BhdGgKKyAgICAgICAgYXNzZXJ0IGluaWZpbGUgaXMgTm9u
ZQogCi1jbGFzcyBUZXN0T3ZlcnJpZGVJbmlBcmdzKG9iamVjdCk6CisgICAgZGVmIHRlc3Rfd2l0
aF9hcmdfb3V0c2lkZV9jd2Rfd2l0aF9pbmlmaWxlKHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBO
b25lOgorICAgICAgICBhID0gdG1wX3BhdGggLyAiYSIKKyAgICAgICAgYS5ta2RpcigpCisgICAg
ICAgIGIgPSB0bXBfcGF0aCAvICJiIgorICAgICAgICBiLm1rZGlyKCkKKyAgICAgICAgaW5pcGF0
aCA9IGEgLyAicHl0ZXN0LmluaSIKKyAgICAgICAgaW5pcGF0aC50b3VjaCgpCisgICAgICAgIHJv
b3RwYXRoLCBwYXJzZWRfaW5pcGF0aCwgXyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbc3RyKGEp
LCBzdHIoYildKQorICAgICAgICBhc3NlcnQgcm9vdHBhdGggPT0gYQorICAgICAgICBhc3NlcnQg
aW5pcGF0aCA9PSBwYXJzZWRfaW5pcGF0aAogCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJkaXJzIiwgKFtdLCBbImRvZXMtbm90LWV4aXN0Il0sIFsiYS9kb2VzLW5vdC1leGlzdCJdKSkK
KyAgICBkZWYgdGVzdF93aXRoX25vbl9kaXJfYXJnKAorICAgICAgICBzZWxmLCBkaXJzOiBTZXF1
ZW5jZVtzdHJdLCB0bXBfcGF0aDogUGF0aCwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoCisgICAg
KSAtPiBOb25lOgorICAgICAgICBtb25rZXlwYXRjaC5jaGRpcih0bXBfcGF0aCkKKyAgICAgICAg
cm9vdHBhdGgsIGluaXBhdGgsIF8gPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgZGlycykKKyAgICAg
ICAgYXNzZXJ0IHJvb3RwYXRoID09IHRtcF9wYXRoCisgICAgICAgIGFzc2VydCBpbmlwYXRoIGlz
IE5vbmUKKworICAgIGRlZiB0ZXN0X3dpdGhfZXhpc3RpbmdfZmlsZV9pbl9zdWJkaXIoCisgICAg
ICAgIHNlbGYsIHRtcF9wYXRoOiBQYXRoLCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gKKyAgICAp
IC0+IE5vbmU6CisgICAgICAgIGEgPSB0bXBfcGF0aCAvICJhIgorICAgICAgICBhLm1rZGlyKCkK
KyAgICAgICAgKGEgLyAiZXhpc3RzIikudG91Y2goKQorICAgICAgICBtb25rZXlwYXRjaC5jaGRp
cih0bXBfcGF0aCkKKyAgICAgICAgcm9vdHBhdGgsIGluaXBhdGgsIF8gPSBkZXRlcm1pbmVfc2V0
dXAoTm9uZSwgWyJhL2V4aXN0Il0pCisgICAgICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBfcGF0
aAorICAgICAgICBhc3NlcnQgaW5pcGF0aCBpcyBOb25lCisKKyAgICBkZWYgdGVzdF93aXRoX2Nv
bmZpZ19hbHNvX2luX3BhcmVudF9kaXJlY3RvcnkoCisgICAgICAgIHNlbGYsIHRtcF9wYXRoOiBQ
YXRoLCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IlJlZ3Jlc3Npb24gdGVzdCBmb3IgIzc4MDcuIiIiCisgICAgICAgICh0bXBfcGF0aCAvICJzZXR1
cC5jZmciKS53cml0ZV90ZXh0KCJbdG9vbDpweXRlc3RdXG4iLCAidXRmLTgiKQorICAgICAgICAo
dG1wX3BhdGggLyAibXlwcm9qZWN0IikubWtkaXIoKQorICAgICAgICAodG1wX3BhdGggLyAibXlw
cm9qZWN0IiAvICJzZXR1cC5jZmciKS53cml0ZV90ZXh0KCJbdG9vbDpweXRlc3RdXG4iLCAidXRm
LTgiKQorICAgICAgICAodG1wX3BhdGggLyAibXlwcm9qZWN0IiAvICJ0ZXN0cyIpLm1rZGlyKCkK
KyAgICAgICAgbW9ua2V5cGF0Y2guY2hkaXIodG1wX3BhdGggLyAibXlwcm9qZWN0IikKKworICAg
ICAgICByb290cGF0aCwgaW5pcGF0aCwgXyA9IGRldGVybWluZV9zZXR1cChOb25lLCBbInRlc3Rz
LyJdKQorCisgICAgICAgIGFzc2VydCByb290cGF0aCA9PSB0bXBfcGF0aCAvICJteXByb2plY3Qi
CisgICAgICAgIGFzc2VydCBpbmlwYXRoID09IHRtcF9wYXRoIC8gIm15cHJvamVjdCIgLyAic2V0
dXAuY2ZnIgorCisKK2NsYXNzIFRlc3RPdmVycmlkZUluaUFyZ3M6CiAgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJuYW1lIiwgInNldHVwLmNmZyB0b3guaW5pIHB5dGVzdC5pbmkiLnNwbGl0
KCkpCiAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfaW5pX25hbWVzKHNlbGYsIHRlc3RkaXIsIG5hbWUp
OgorICAgICAgICBzZWN0aW9uID0gIltweXRlc3RdIiBpZiBuYW1lICE9ICJzZXR1cC5jZmciIGVs
c2UgIlt0b29sOnB5dGVzdF0iCiAgICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4obmFtZSkud3Jp
dGUoCiAgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCiAgICAgICAgICAgICAgICAgIiIiCi0g
ICAgICAgICAgICBbcHl0ZXN0XQotICAgICAgICAgICAgY3VzdG9tID0gMS4wIiIiCisgICAgICAg
ICAgICB7c2VjdGlvbn0KKyAgICAgICAgICAgIGN1c3RvbSA9IDEuMCIiIi5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgICAgIHNlY3Rpb249c2VjdGlvbgorICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICkKICAgICAgICAgKQogICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKQEAgLTk3
Myw4ICsxNTA0LDEyIEBAIGNsYXNzIFRlc3RPdmVycmlkZUluaUFyZ3Mob2JqZWN0KToKICAgICAg
ICAgICAgIHhkaXN0X3N0cmljdD1GYWxzZQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1vdmVycmlkZS1pbmkiLCAieGRpc3Rfc3Ry
aWN0IFRydWUiLCAiLXMiKQotICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyIq
RVJST1IqICpleHBlY3RzIG9wdGlvbj12YWx1ZSoiXSkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoIi0tb3ZlcnJpZGUtaW5pIiwgInhkaXN0X3N0cmljdCIsICJUcnVlIikKKyAg
ICAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICJFUlJPUjogLW8vLS1vdmVycmlkZS1pbmkgZXhwZWN0cyBvcHRpb249dmFsdWUg
c3R5bGUgKGdvdDogJ3hkaXN0X3N0cmljdCcpLiIsCisgICAgICAgICAgICBdCisgICAgICAgICkK
IAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgid2l0aF9pbmkiLCBbVHJ1ZSwgRmFsc2Vd
KQogICAgIGRlZiB0ZXN0X292ZXJyaWRlX2luaV9oYW5kbGVkX2FzYXAoc2VsZiwgdGVzdGRpciwg
d2l0aF9pbmkpOgpAQCAtOTk1LDU1ICsxNTMwLDQ4IEBAIGNsYXNzIFRlc3RPdmVycmlkZUluaUFy
Z3Mob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tb3ZlcnJp
ZGUtaW5pIiwgInB5dGhvbl9maWxlcz11bml0dGVzdF8qLnB5IikKICAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkIGluKiJdKQogCi0gICAgZGVmIHRlc3Rfd2l0
aF9hcmdfb3V0c2lkZV9jd2Rfd2l0aG91dF9pbmlmaWxlKHNlbGYsIHRtcGRpciwgbW9ua2V5cGF0
Y2gpOgotICAgICAgICBtb25rZXlwYXRjaC5jaGRpcihzdHIodG1wZGlyKSkKLSAgICAgICAgYSA9
IHRtcGRpci5ta2RpcigiYSIpCi0gICAgICAgIGIgPSB0bXBkaXIubWtkaXIoImIiKQotICAgICAg
ICByb290ZGlyLCBpbmlmaWxlLCBpbmljZmcgPSBkZXRlcm1pbmVfc2V0dXAoTm9uZSwgW2EsIGJd
KQotICAgICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBkaXIKLSAgICAgICAgYXNzZXJ0IGluaWZp
bGUgaXMgTm9uZQotCi0gICAgZGVmIHRlc3Rfd2l0aF9hcmdfb3V0c2lkZV9jd2Rfd2l0aF9pbmlm
aWxlKHNlbGYsIHRtcGRpcik6Ci0gICAgICAgIGEgPSB0bXBkaXIubWtkaXIoImEiKQotICAgICAg
ICBiID0gdG1wZGlyLm1rZGlyKCJiIikKLSAgICAgICAgaW5pZmlsZSA9IGEuZW5zdXJlKCJweXRl
c3QuaW5pIikKLSAgICAgICAgcm9vdGRpciwgcGFyc2VkX2luaWZpbGUsIGluaWNmZyA9IGRldGVy
bWluZV9zZXR1cChOb25lLCBbYSwgYl0pCi0gICAgICAgIGFzc2VydCByb290ZGlyID09IGEKLSAg
ICAgICAgYXNzZXJ0IGluaWZpbGUgPT0gcGFyc2VkX2luaWZpbGUKLQotICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgiZGlycyIsIChbXSwgWyJkb2VzLW5vdC1leGlzdCJdLCBbImEvZG9lcy1u
b3QtZXhpc3QiXSkpCi0gICAgZGVmIHRlc3Rfd2l0aF9ub25fZGlyX2FyZyhzZWxmLCBkaXJzLCB0
bXBkaXIpOgotICAgICAgICB3aXRoIHRtcGRpci5lbnN1cmUoZGlyPVRydWUpLmFzX2N3ZCgpOgot
ICAgICAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5lX3NldHVwKE5v
bmUsIGRpcnMpCi0gICAgICAgICAgICBhc3NlcnQgcm9vdGRpciA9PSB0bXBkaXIKLSAgICAgICAg
ICAgIGFzc2VydCBpbmlmaWxlIGlzIE5vbmUKLQotICAgIGRlZiB0ZXN0X3dpdGhfZXhpc3Rpbmdf
ZmlsZV9pbl9zdWJkaXIoc2VsZiwgdG1wZGlyKToKLSAgICAgICAgYSA9IHRtcGRpci5ta2Rpcigi
YSIpCi0gICAgICAgIGEuZW5zdXJlKCJleGlzdCIpCi0gICAgICAgIHdpdGggdG1wZGlyLmFzX2N3
ZCgpOgotICAgICAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZGV0ZXJtaW5lX3Nl
dHVwKE5vbmUsIFsiYS9leGlzdCJdKQotICAgICAgICAgICAgYXNzZXJ0IHJvb3RkaXIgPT0gdG1w
ZGlyCi0gICAgICAgICAgICBhc3NlcnQgaW5pZmlsZSBpcyBOb25lCi0KLSAgICBkZWYgdGVzdF9h
ZGRvcHRzX2JlZm9yZV9pbml0aW5pKHNlbGYsIG1vbmtleXBhdGNoKToKKyAgICBkZWYgdGVzdF9h
ZGRvcHRzX2JlZm9yZV9pbml0aW5pKHNlbGYsIG1vbmtleXBhdGNoLCBfY29uZmlnX2Zvcl90ZXN0
LCBfc3lzX3NuYXBzaG90KToKICAgICAgICAgY2FjaGVfZGlyID0gIi5jdXN0b21fY2FjaGUiCiAg
ICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX0FERE9QVFMiLCAiLW8gY2FjaGVfZGly
PSVzIiAlIGNhY2hlX2RpcikKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgZ2V0
X2NvbmZpZwotCi0gICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoKQorICAgICAgICBjb25maWcg
PSBfY29uZmlnX2Zvcl90ZXN0CiAgICAgICAgIGNvbmZpZy5fcHJlcGFyc2UoW10sIGFkZG9wdHM9
VHJ1ZSkKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5fb3ZlcnJpZGVfaW5pID09IFsiY2FjaGVfZGly
PSVzIiAlIGNhY2hlX2Rpcl0KIAotICAgIGRlZiB0ZXN0X292ZXJyaWRlX2luaV9kb2VzX25vdF9j
b250YWluX3BhdGhzKHNlbGYpOgotICAgICAgICAiIiJDaGVjayB0aGF0IC1vIG5vIGxvbmdlciBz
d2FsbG93cyBhbGwgb3B0aW9ucyBhZnRlciBpdCAoIzMxMDMpIiIiCi0gICAgICAgIGZyb20gX3B5
dGVzdC5jb25maWcgaW1wb3J0IGdldF9jb25maWcKKyAgICBkZWYgdGVzdF9hZGRvcHRzX2Zyb21f
ZW52X25vdF9jb25jYXRlbmF0ZWQoc2VsZiwgbW9ua2V5cGF0Y2gsIF9jb25maWdfZm9yX3Rlc3Qp
OgorICAgICAgICAiIiJQWVRFU1RfQURET1BUUyBzaG91bGQgbm90IHRha2UgdmFsdWVzIGZyb20g
bm9ybWFsIGFyZ3MgKCM0MjY1KS4iIiIKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRF
U1RfQURET1BUUyIsICItbyIpCisgICAgICAgIGNvbmZpZyA9IF9jb25maWdfZm9yX3Rlc3QKKyAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFVzYWdlRXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAg
ICAgICBjb25maWcuX3ByZXBhcnNlKFsiY2FjaGVfZGlyPWlnbm9yZWQiXSwgYWRkb3B0cz1UcnVl
KQorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgImVycm9yOiBhcmd1bWVudCAtby8tLW92
ZXJyaWRlLWluaTogZXhwZWN0ZWQgb25lIGFyZ3VtZW50ICh2aWEgUFlURVNUX0FERE9QVFMpIgor
ICAgICAgICAgICAgaW4gZXhjaW5mby52YWx1ZS5hcmdzWzBdCisgICAgICAgICkKIAotICAgICAg
ICBjb25maWcgPSBnZXRfY29uZmlnKCkKKyAgICBkZWYgdGVzdF9hZGRvcHRzX2Zyb21faW5pX25v
dF9jb25jYXRlbmF0ZWQoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiImBhZGRvcHRzYCBmcm9t
IGluaSBzaG91bGQgbm90IHRha2UgdmFsdWVzIGZyb20gbm9ybWFsIGFyZ3MgKCM0MjY1KS4iIiIK
KyAgICAgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBb
cHl0ZXN0XQorICAgICAgICAgICAgYWRkb3B0cz0tbworICAgICAgICAiIiIKKyAgICAgICAgKQor
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiY2FjaGVfZGlyPWlnbm9yZWQiKQor
ICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgIiVzOiBlcnJvcjogYXJndW1lbnQgLW8vLS1vdmVycmlkZS1pbmk6IGV4cGVj
dGVkIG9uZSBhcmd1bWVudCAodmlhIGFkZG9wdHMgY29uZmlnKSIKKyAgICAgICAgICAgICAgICAl
ICh0ZXN0ZGlyLnJlcXVlc3QuY29uZmlnLl9wYXJzZXIub3B0cGFyc2VyLnByb2csKQorICAgICAg
ICAgICAgXQorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IF9weXRlc3Qu
Y29uZmlnLkV4aXRDb2RlLlVTQUdFX0VSUk9SCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9pbmlf
ZG9lc19ub3RfY29udGFpbl9wYXRocyhzZWxmLCBfY29uZmlnX2Zvcl90ZXN0LCBfc3lzX3NuYXBz
aG90KToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCAtbyBubyBsb25nZXIgc3dhbGxvd3MgYWxsIG9w
dGlvbnMgYWZ0ZXIgaXQgKCMzMTAzKSIiIgorICAgICAgICBjb25maWcgPSBfY29uZmlnX2Zvcl90
ZXN0CiAgICAgICAgIGNvbmZpZy5fcHJlcGFyc2UoWyItbyIsICJjYWNoZV9kaXI9L2NhY2hlIiwg
Ii9zb21lL3Rlc3QvcGF0aCJdKQogICAgICAgICBhc3NlcnQgY29uZmlnLl9vdmVycmlkZV9pbmkg
PT0gWyJjYWNoZV9kaXI9L2NhY2hlIl0KIAotICAgIGRlZiB0ZXN0X211bHRpcGxlX292ZXJyaWRl
X2luaV9vcHRpb25zKHNlbGYsIHRlc3RkaXIsIHJlcXVlc3QpOgorICAgIGRlZiB0ZXN0X211bHRp
cGxlX292ZXJyaWRlX2luaV9vcHRpb25zKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAiIiJFbnN1
cmUgYSBmaWxlIHBhdGggZm9sbG93aW5nIGEgJy1vJyBvcHRpb24gZG9lcyBub3QgZ2VuZXJhdGUg
YW4gZXJyb3IgKCMzMTAzKSIiIgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAg
ICAgICAqKnsKQEAgLTEwNjYsMyArMTU5NCwzNTYgQEAgY2xhc3MgVGVzdE92ZXJyaWRlSW5pQXJn
cyhvYmplY3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLW8iLCAiZm9v
PTEiLCAiLW8iLCAiYmFyPTAiLCAidGVzdF9mb28ucHkiKQogICAgICAgICBhc3NlcnQgIkVSUk9S
OiIgbm90IGluIHJlc3VsdC5zdGRlcnIuc3RyKCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKFsiY29sbGVjdGVkIDEgaXRlbSIsICIqPSAxIHBhc3NlZCBpbiAqPSJdKQorCisK
K2RlZiB0ZXN0X2hlbHBfdmlhX2FkZG9wdHModGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlaW5p
KAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgYWRkb3B0cyA9IC0tdW5r
bm93bi1vcHRpb24tc2hvdWxkLWFsbG93LWZvci1oZWxwIC0taGVscAorICAgICIiIgorICAgICkK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gMAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAg
ICAgICAgInVzYWdlOiAqIiwKKyAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50czoiLAor
ICAgICAgICAgICAgIyBEaXNwbGF5cyBmdWxsL2RlZmF1bHQgaGVscC4KKyAgICAgICAgICAgICJ0
byBzZWUgYXZhaWxhYmxlIG1hcmtlcnMgdHlwZTogcHl0ZXN0IC0tbWFya2VycyIsCisgICAgICAg
IF0KKyAgICApCisKKworZGVmIHRlc3RfaGVscF9hbmRfdmVyc2lvbl9hZnRlcl9hcmd1bWVudF9l
cnJvcih0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgIiIiCisg
ICAgICAgIGRlZiB2YWxpZGF0ZShhcmcpOgorICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJn
dW1lbnRUeXBlRXJyb3IoImFyZ2Vycm9yIikKKworICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlv
bihwYXJzZXIpOgorICAgICAgICAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoJ2NvdicpCisg
ICAgICAgICAgICBncm91cC5hZGRvcHRpb24oCisgICAgICAgICAgICAgICAgIi0taW52YWxpZC1v
cHRpb24tc2hvdWxkLWFsbG93LWZvci1oZWxwIiwKKyAgICAgICAgICAgICAgICB0eXBlPXZhbGlk
YXRlLAorICAgICAgICAgICAgKQorICAgICAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtl
aW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAgYWRkb3B0cyA9IC0t
aW52YWxpZC1vcHRpb24tc2hvdWxkLWFsbG93LWZvci1oZWxwCisgICAgIiIiCisgICAgKQorICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWhlbHAiKQorICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgInVzYWdlOiAqIiwKKyAgICAg
ICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50czoiLAorICAgICAgICAgICAgIk5PVEU6IGRpc3Bs
YXlpbmcgb25seSBtaW5pbWFsIGhlbHAgZHVlIHRvIFVzYWdlRXJyb3IuIiwKKyAgICAgICAgXQor
ICAgICkKKyAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAg
ICAgICAgICJFUlJPUjogdXNhZ2U6ICoiLAorICAgICAgICAgICAgIiVzOiBlcnJvcjogYXJndW1l
bnQgLS1pbnZhbGlkLW9wdGlvbi1zaG91bGQtYWxsb3ctZm9yLWhlbHA6IGV4cGVjdGVkIG9uZSBh
cmd1bWVudCIKKyAgICAgICAgICAgICUgKHRlc3RkaXIucmVxdWVzdC5jb25maWcuX3BhcnNlci5v
cHRwYXJzZXIucHJvZywpLAorICAgICAgICBdCisgICAgKQorICAgICMgRG9lcyBub3QgZGlzcGxh
eSBmdWxsL2RlZmF1bHQgaGVscC4KKyAgICBhc3NlcnQgInRvIHNlZSBhdmFpbGFibGUgbWFya2Vy
cyB0eXBlOiBweXRlc3QgLS1tYXJrZXJzIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5saW5lcworICAg
IGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLlVTQUdFX0VSUk9SCisKKyAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS12ZXJzaW9uIikKKyAgICByZXN1bHQuc3RkZXJyLmZubWF0
Y2hfbGluZXMoWyJweXRlc3Qge30iLmZvcm1hdChweXRlc3QuX192ZXJzaW9uX18pXSkKKyAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgorCisKK2RlZiB0ZXN0X2hl
bHBfZm9ybWF0dGVyX3VzZXNfcHlfZ2V0X3Rlcm1pbmFsX3dpZHRoKG1vbmtleXBhdGNoKToKKyAg
ICBmcm9tIF9weXRlc3QuY29uZmlnLmFyZ3BhcnNpbmcgaW1wb3J0IERyb3BTaG9ydGVyTG9uZ0hl
bHBGb3JtYXR0ZXIKKworICAgIG1vbmtleXBhdGNoLnNldGVudigiQ09MVU1OUyIsICI5MCIpCisg
ICAgZm9ybWF0dGVyID0gRHJvcFNob3J0ZXJMb25nSGVscEZvcm1hdHRlcigicHJvZyIpCisgICAg
YXNzZXJ0IGZvcm1hdHRlci5fd2lkdGggPT0gOTAKKworICAgIG1vbmtleXBhdGNoLnNldGF0dHIo
Il9weXRlc3QuX2lvLmdldF90ZXJtaW5hbF93aWR0aCIsIGxhbWJkYTogMTYwKQorICAgIGZvcm1h
dHRlciA9IERyb3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIoInByb2ciKQorICAgIGFzc2VydCBm
b3JtYXR0ZXIuX3dpZHRoID09IDE2MAorCisgICAgZm9ybWF0dGVyID0gRHJvcFNob3J0ZXJMb25n
SGVscEZvcm1hdHRlcigicHJvZyIsIHdpZHRoPTQyKQorICAgIGFzc2VydCBmb3JtYXR0ZXIuX3dp
ZHRoID09IDQyCisKKworZGVmIHRlc3RfY29uZmlnX2RvZXNfbm90X2xvYWRfYmxvY2tlZF9wbHVn
aW5fZnJvbV9hcmdzKHRlc3RkaXIpOgorICAgICIiIlRoaXMgdGVzdHMgdGhhdCBweXRlc3QncyBj
b25maWcgc2V0dXAgaGFuZGxlcyAiLXAgbm86WCIuIiIiCisgICAgcCA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgiZGVmIHRlc3QoY2FwZmQpOiBwYXNzIikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdChzdHIocCksICItcG5vOmNhcHR1cmUiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIkUgICAgICAgZml4dHVyZSAnY2FwZmQnIG5vdCBmb3VuZCJdKQorICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IEV4aXRDb2RlLlRFU1RTX0ZBSUxFRAorCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3Qoc3RyKHApLCAiLXBubzpjYXB0dXJlIiwgIi1zIikKKyAgICByZXN1bHQuc3Rk
ZXJyLmZubWF0Y2hfbGluZXMoWyIqOiBlcnJvcjogdW5yZWNvZ25pemVkIGFyZ3VtZW50czogLXMi
XSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgorCisKK2Rl
ZiB0ZXN0X2ludm9jYXRpb25fYXJncyh0ZXN0ZGlyKToKKyAgICAiIiJFbnN1cmUgdGhhdCBDb25m
aWcuaW52b2NhdGlvbl8qIGFyZ3VtZW50cyBhcmUgY29ycmVjdGx5IGRlZmluZWQiIiIKKworICAg
IGNsYXNzIER1bW15UGx1Z2luOgorICAgICAgICBwYXNzCisKKyAgICBwID0gdGVzdGRpci5tYWtl
cHlmaWxlKCJkZWYgdGVzdCgpOiBwYXNzIikKKyAgICBwbHVnaW4gPSBEdW1teVBsdWdpbigpCisg
ICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKHAsICItdiIsIHBsdWdpbnM9W3BsdWdpbl0pCisg
ICAgY2FsbHMgPSByZWMuZ2V0Y2FsbHMoInB5dGVzdF9ydW50ZXN0X3Byb3RvY29sIikKKyAgICBh
c3NlcnQgbGVuKGNhbGxzKSA9PSAxCisgICAgY2FsbCA9IGNhbGxzWzBdCisgICAgY29uZmlnID0g
Y2FsbC5pdGVtLmNvbmZpZworCisgICAgYXNzZXJ0IGNvbmZpZy5pbnZvY2F0aW9uX3BhcmFtcy5h
cmdzID09IChwLCAiLXYiKQorICAgIGFzc2VydCBjb25maWcuaW52b2NhdGlvbl9wYXJhbXMuZGly
ID09IFBhdGgoc3RyKHRlc3RkaXIudG1wZGlyKSkKKworICAgIHBsdWdpbnMgPSBjb25maWcuaW52
b2NhdGlvbl9wYXJhbXMucGx1Z2lucworICAgIGFzc2VydCBsZW4ocGx1Z2lucykgPT0gMgorICAg
IGFzc2VydCBwbHVnaW5zWzBdIGlzIHBsdWdpbgorICAgIGFzc2VydCB0eXBlKHBsdWdpbnNbMV0p
Ll9fbmFtZV9fID09ICJDb2xsZWN0IiAgIyBpbnN0YWxsZWQgYnkgdGVzdGRpci5pbmxpbmVfcnVu
KCkKKworICAgICMgYXJncyBjYW5ub3QgYmUgTm9uZQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhU
eXBlRXJyb3IpOgorICAgICAgICBDb25maWcuSW52b2NhdGlvblBhcmFtcyhhcmdzPU5vbmUsIHBs
dWdpbnM9Tm9uZSwgZGlyPVBhdGgoKSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorCisKK0Bw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAicGx1Z2luIiwKKyAgICBbCisgICAgICAgIHgK
KyAgICAgICAgZm9yIHggaW4gX3B5dGVzdC5jb25maWcuZGVmYXVsdF9wbHVnaW5zCisgICAgICAg
IGlmIHggbm90IGluIF9weXRlc3QuY29uZmlnLmVzc2VudGlhbF9wbHVnaW5zCisgICAgXSwKKykK
K2RlZiB0ZXN0X2NvbmZpZ19ibG9ja2VkX2RlZmF1bHRfcGx1Z2lucyh0ZXN0ZGlyLCBwbHVnaW4p
OgorICAgIGlmIHBsdWdpbiA9PSAiZGVidWdnaW5nIjoKKyAgICAgICAgIyBGaXhlZCBpbiB4ZGlz
dCBtYXN0ZXIgKGFmdGVyIDEuMjcuMCkuCisgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5
dGVzdC1kZXYvcHl0ZXN0LXhkaXN0L3B1bGwvNDIyCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGltcG9ydCB4ZGlzdCAgIyBub3FhOiBGNDAxCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
KyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJkb2VzIG5vdCB3b3JrIHdpdGggeGRpc3QgY3VycmVudGx5IikKKworICAgIHAgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoImRlZiB0ZXN0KCk6IHBhc3MiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KHN0cihwKSwgIi1wbm86JXMiICUgcGx1Z2luKQorCisgICAgaWYgcGx1Z2luID09ICJw
eXRob24iOgorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJP
UgorICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgIkVSUk9SOiBub3QgZm91bmQ6ICovdGVzdF9jb25maWdfYmxvY2tlZF9k
ZWZhdWx0X3BsdWdpbnMucHkiLAorICAgICAgICAgICAgICAgICIobm8gbmFtZSAnKi90ZXN0X2Nv
bmZpZ19ibG9ja2VkX2RlZmF1bHRfcGx1Z2lucy5weScgaW4gYW55IG9mIFtdKSIsCisgICAgICAg
ICAgICBdCisgICAgICAgICkKKyAgICAgICAgcmV0dXJuCisKKyAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSBFeGl0Q29kZS5PSworICAgIGlmIHBsdWdpbiAhPSAidGVybWluYWwiOgorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEgcGFzc2VkIGluICoiXSkKKworICAgIHAg
PSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0KCk6IGFzc2VydCAwIikKKyAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocCksICItcG5vOiVzIiAlIHBsdWdpbikKKyAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5URVNUU19GQUlMRUQKKyAgICBpZiBwbHVnaW4gIT0g
InRlcm1pbmFsIjoKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiAxIGZh
aWxlZCBpbiAqIl0pCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5zdGRvdXQubGlu
ZXMgPT0gW10KKworCitjbGFzcyBUZXN0U2V0dXBDZmc6CisgICAgZGVmIHRlc3RfcHl0ZXN0X3Nl
dHVwX2NmZ191bnN1cHBvcnRlZChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtl
ZmlsZSgKKyAgICAgICAgICAgICIuY2ZnIiwKKyAgICAgICAgICAgIHNldHVwPSIiIgorICAgICAg
ICAgICAgW3B5dGVzdF0KKyAgICAgICAgICAgIGFkZG9wdHMgPSAtLXZlcmJvc2UKKyAgICAgICAg
IiIiLAorICAgICAgICApCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5F
eGNlcHRpb24pOgorICAgICAgICAgICAgdGVzdGRpci5ydW5weXRlc3QoKQorCisgICAgZGVmIHRl
c3RfcHl0ZXN0X2N1c3RvbV9jZmdfdW5zdXBwb3J0ZWQoc2VsZiwgdGVzdGRpcik6CisgICAgICAg
IHRlc3RkaXIubWFrZWZpbGUoCisgICAgICAgICAgICAiLmNmZyIsCisgICAgICAgICAgICBjdXN0
b209IiIiCisgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgYWRkb3B0cyA9IC0tdmVy
Ym9zZQorICAgICAgICAiIiIsCisgICAgICAgICkKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2Vz
KHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6CisgICAgICAgICAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LWMiLCAiY3VzdG9tLmNmZyIpCisKKworY2xhc3MgVGVzdFB5dGVzdFBsdWdpbnNWYXJpYWJsZToK
KyAgICBkZWYgdGVzdF9weXRlc3RfcGx1Z2luc19pbl9ub25fdG9wX2xldmVsX2NvbmZ0ZXN0X3Vu
c3VwcG9ydGVkKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisg
ICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAic3ViZGlyZWN0b3J5L2NvbmZ0ZXN0LnB5
IjogIiIiCisgICAgICAgICAgICBweXRlc3RfcGx1Z2lucz1bJ2NhcHR1cmUnXQorICAgICAgICAi
IiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAg
ICAgICAgICBwYXNzCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlcyA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKKyAgICAgICAgYXNzZXJ0IHJlcy5yZXQgPT0gMgorICAgICAgICBtc2cg
PSAiRGVmaW5pbmcgJ3B5dGVzdF9wbHVnaW5zJyBpbiBhIG5vbi10b3AtbGV2ZWwgY29uZnRlc3Qg
aXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIKKyAgICAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICIqe21zZ30qIi5mb3JtYXQobXNnPW1z
ZyksCisgICAgICAgICAgICAgICAgIipzdWJkaXJlY3Rvcnl7c2VwfWNvbmZ0ZXN0LnB5KiIuZm9y
bWF0KHNlcD1vcy5zZXApLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoInVzZV9weWFyZ3MiLCBbVHJ1ZSwgRmFsc2VdKQorICAgIGRlZiB0
ZXN0X3B5dGVzdF9wbHVnaW5zX2luX25vbl90b3BfbGV2ZWxfY29uZnRlc3RfdW5zdXBwb3J0ZWRf
cHlhcmdzKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyLCB1c2VfcHlhcmdzCisgICAgKToKKyAgICAg
ICAgIiIiV2hlbiB1c2luZyAtLXB5YXJncywgZG8gbm90IGVtaXQgdGhlIHdhcm5pbmcgYWJvdXQg
bm9uLXRvcC1sZXZlbCBjb25mdGVzdCB3YXJuaW5ncyAoIzQwMzksICM0MDQ0KSIiIgorCisgICAg
ICAgIGZpbGVzID0geworICAgICAgICAgICAgInNyYy9wa2cvX19pbml0X18ucHkiOiAiIiwKKyAg
ICAgICAgICAgICJzcmMvcGtnL2NvbmZ0ZXN0LnB5IjogIiIsCisgICAgICAgICAgICAic3JjL3Br
Zy90ZXN0X3Jvb3QucHkiOiAiZGVmIHRlc3QoKTogcGFzcyIsCisgICAgICAgICAgICAic3JjL3Br
Zy9zdWIvX19pbml0X18ucHkiOiAiIiwKKyAgICAgICAgICAgICJzcmMvcGtnL3N1Yi9jb25mdGVz
dC5weSI6ICJweXRlc3RfcGx1Z2lucz1bJ2NhcHR1cmUnXSIsCisgICAgICAgICAgICAic3JjL3Br
Zy9zdWIvdGVzdF9iYXIucHkiOiAiZGVmIHRlc3QoKTogcGFzcyIsCisgICAgICAgIH0KKyAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKCoqZmlsZXMpCisgICAgICAgIHRlc3RkaXIuc3lzcGF0aGlu
c2VydCh0ZXN0ZGlyLnRtcGRpci5qb2luKCJzcmMiKSkKKworICAgICAgICBhcmdzID0gKCItLXB5
YXJncyIsICJwa2ciKSBpZiB1c2VfcHlhcmdzIGVsc2UgKCkKKyAgICAgICAgcmVzID0gdGVzdGRp
ci5ydW5weXRlc3QoKmFyZ3MpCisgICAgICAgIGFzc2VydCByZXMucmV0ID09ICgwIGlmIHVzZV9w
eWFyZ3MgZWxzZSAyKQorICAgICAgICBtc2cgPSAoCisgICAgICAgICAgICBtc2cKKyAgICAgICAg
KSA9ICJEZWZpbmluZyAncHl0ZXN0X3BsdWdpbnMnIGluIGEgbm9uLXRvcC1sZXZlbCBjb25mdGVz
dCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIgorICAgICAgICBpZiB1c2VfcHlhcmdzOgorICAgICAg
ICAgICAgYXNzZXJ0IG1zZyBub3QgaW4gcmVzLnN0ZG91dC5zdHIoKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnttc2d9KiIuZm9ybWF0KG1z
Zz1tc2cpXSkKKworICAgIGRlZiB0ZXN0X3B5dGVzdF9wbHVnaW5zX2luX25vbl90b3BfbGV2ZWxf
Y29uZnRlc3RfdW5zdXBwb3J0ZWRfbm9fdG9wX2xldmVsX2NvbmZ0ZXN0KAorICAgICAgICBzZWxm
LCB0ZXN0ZGlyCisgICAgKToKKyAgICAgICAgc3ViZGlyZWN0b3J5ID0gdGVzdGRpci50bXBkaXIu
am9pbigic3ViZGlyZWN0b3J5IikKKyAgICAgICAgc3ViZGlyZWN0b3J5Lm1rZGlyKCkKKyAgICAg
ICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHB5
dGVzdF9wbHVnaW5zPVsnY2FwdHVyZSddCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAg
IHRlc3RkaXIudG1wZGlyLmpvaW4oImNvbmZ0ZXN0LnB5IikubW92ZShzdWJkaXJlY3Rvcnkuam9p
bigiY29uZnRlc3QucHkiKSkKKworICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBw
YXNzCisgICAgICAgICIiIgorICAgICAgICApCisKKyAgICAgICAgcmVzID0gdGVzdGRpci5ydW5w
eXRlc3Rfc3VicHJvY2VzcygpCisgICAgICAgIGFzc2VydCByZXMucmV0ID09IDIKKyAgICAgICAg
bXNnID0gIkRlZmluaW5nICdweXRlc3RfcGx1Z2lucycgaW4gYSBub24tdG9wLWxldmVsIGNvbmZ0
ZXN0IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiCisgICAgICAgIHJlcy5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKnttc2d9KiIuZm9ybWF0KG1z
Zz1tc2cpLAorICAgICAgICAgICAgICAgICIqc3ViZGlyZWN0b3J5e3NlcH1jb25mdGVzdC5weSoi
LmZvcm1hdChzZXA9b3Muc2VwKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfcHl0ZXN0X3BsdWdpbnNfaW5fbm9uX3RvcF9sZXZlbF9jb25mdGVzdF91bnN1cHBvcnRl
ZF9ub19mYWxzZV9wb3NpdGl2ZXMoCisgICAgICAgIHNlbGYsIHRlc3RkaXIKKyAgICApOgorICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiZGVmIHRlc3RfZnVuYygpOiBw
YXNzIiwKKyAgICAgICAgICAgICoqeworICAgICAgICAgICAgICAgICJzdWJkaXJlY3RvcnkvY29u
ZnRlc3QiOiAicGFzcyIsCisgICAgICAgICAgICAgICAgImNvbmZ0ZXN0IjogIiIiCisgICAgICAg
ICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICB3YXJuaW5n
cy5maWx0ZXJ3YXJuaW5ncygnYWx3YXlzJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQor
ICAgICAgICAgICAgICAgICAgICBweXRlc3RfcGx1Z2lucz1bJ2NhcHR1cmUnXQorICAgICAgICAg
ICAgICAgICAgICAiIiIsCisgICAgICAgICAgICB9LAorICAgICAgICApCisgICAgICAgIHJlcyA9
IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgICAgICBhc3NlcnQgcmVzLnJldCA9
PSAwCisgICAgICAgIG1zZyA9ICJEZWZpbmluZyAncHl0ZXN0X3BsdWdpbnMnIGluIGEgbm9uLXRv
cC1sZXZlbCBjb25mdGVzdCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIgorICAgICAgICBhc3NlcnQg
bXNnIG5vdCBpbiByZXMuc3Rkb3V0LnN0cigpCisKKworZGVmIHRlc3RfY29uZnRlc3RfaW1wb3J0
X2Vycm9yX3JlcHIodG1wZGlyKToKKyAgICAiIiJgQ29uZnRlc3RJbXBvcnRGYWlsdXJlYCBzaG91
bGQgdXNlIGEgc2hvcnQgZXJyb3IgbWVzc2FnZSBhbmQgcmVhZGFibGUKKyAgICBwYXRoIHRvIHRo
ZSBmYWlsZWQgY29uZnRlc3QucHkgZmlsZS4iIiIKKyAgICBwYXRoID0gdG1wZGlyLmpvaW4oImZv
by9jb25mdGVzdC5weSIpCisgICAgd2l0aCBweXRlc3QucmFpc2VzKAorICAgICAgICBDb25mdGVz
dEltcG9ydEZhaWx1cmUsCisgICAgICAgIG1hdGNoPXJlLmVzY2FwZSgiUnVudGltZUVycm9yOiBz
b21lIGVycm9yIChmcm9tIHt9KSIuZm9ybWF0KHBhdGgpKSwKKyAgICApOgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNvbWUgZXJyb3IiKQorICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIGFzc2VydCBleGMuX190cmFjZWJh
Y2tfXyBpcyBub3QgTm9uZQorICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGMpLCBleGMs
IGV4Yy5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgcmFpc2UgQ29uZnRlc3RJbXBvcnRGYWls
dXJlKHBhdGgsIGV4Y19pbmZvKSBmcm9tIGV4YworCisKK2RlZiB0ZXN0X3N0cnRvYm9vbCgpOgor
ICAgIGFzc2VydCBfc3RydG9ib29sKCJZRVMiKQorICAgIGFzc2VydCBub3QgX3N0cnRvYm9vbCgi
Tk8iKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgX3N0cnRv
Ym9vbCgidW5rbm93biIpCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJhcmcs
IGVzY2FwZSwgZXhwZWN0ZWQiLAorICAgIFsKKyAgICAgICAgKCJpZ25vcmUiLCBGYWxzZSwgKCJp
Z25vcmUiLCAiIiwgV2FybmluZywgIiIsIDApKSwKKyAgICAgICAgKAorICAgICAgICAgICAgImln
bm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nIiwKKyAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAg
ICAgKCJpZ25vcmUiLCAiIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAiIiwgMCksCisgICAgICAgICks
CisgICAgICAgICgKKyAgICAgICAgICAgICJpZ25vcmU6c29tZSBtc2c6RGVwcmVjYXRpb25XYXJu
aW5nIiwKKyAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAgICAgKCJpZ25vcmUiLCAic29tZSBt
c2ciLCBEZXByZWNhdGlvbldhcm5pbmcsICIiLCAwKSwKKyAgICAgICAgKSwKKyAgICAgICAgKAor
ICAgICAgICAgICAgImlnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nOm1vZCIsCisgICAgICAgICAg
ICBGYWxzZSwKKyAgICAgICAgICAgICgiaWdub3JlIiwgIiIsIERlcHJlY2F0aW9uV2FybmluZywg
Im1vZCIsIDApLAorICAgICAgICApLAorICAgICAgICAoCisgICAgICAgICAgICAiaWdub3JlOjpE
ZXByZWNhdGlvbldhcm5pbmc6bW9kOjQyIiwKKyAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAg
ICAgKCJpZ25vcmUiLCAiIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAibW9kIiwgNDIpLAorICAgICAg
ICApLAorICAgICAgICAoImVycm9yOnNvbWVcXG1zZzo6OiIsIFRydWUsICgiZXJyb3IiLCAic29t
ZVxcXFxtc2ciLCBXYXJuaW5nLCAiIiwgMCkpLAorICAgICAgICAoImVycm9yOjo6bW9kXFxmb286
IiwgVHJ1ZSwgKCJlcnJvciIsICIiLCBXYXJuaW5nLCAibW9kXFxcXGZvb1xcWiIsIDApKSwKKyAg
ICBdLAorKQorZGVmIHRlc3RfcGFyc2Vfd2FybmluZ19maWx0ZXIoCisgICAgYXJnOiBzdHIsIGVz
Y2FwZTogYm9vbCwgZXhwZWN0ZWQ6ICJUdXBsZVtzdHIsIHN0ciwgVHlwZVtXYXJuaW5nXSwgc3Ry
LCBpbnRdIgorKSAtPiBOb25lOgorICAgIGFzc2VydCBwYXJzZV93YXJuaW5nX2ZpbHRlcihhcmcs
IGVzY2FwZT1lc2NhcGUpID09IGV4cGVjdGVkCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJhcmciLCBbIjoiICogNSwgIjo6OjotMSIsICI6Ojo6bm90LWEtbnVtYmVyIl0pCitkZWYgdGVz
dF9wYXJzZV93YXJuaW5nX2ZpbHRlcl9mYWlsdXJlKGFyZzogc3RyKSAtPiBOb25lOgorICAgIGlt
cG9ydCB3YXJuaW5ncworCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHdhcm5pbmdzLl9PcHRpb25F
cnJvcik6CisgICAgICAgIHBhcnNlX3dhcm5pbmdfZmlsdGVyKGFyZywgZXNjYXBlPVRydWUpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29uZnRlc3QucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfY29uZnRlc3QucHkKaW5kZXggNjFiNjQwOTc2ZjExLi41YTQ3NjQw
ODAxMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb25mdGVzdC5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29uZnRlc3QucHkKQEAgLTEsMjQgKzEsMTMg
QEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLWZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAoraW1wb3J0IG9zCitpbXBv
cnQgdGV4dHdyYXAKIAotaW1wb3J0IF9weXRlc3QuX2NvZGUKIGltcG9ydCBweQorCiBpbXBvcnQg
cHl0ZXN0Citmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQogZnJvbSBfcHl0ZXN0
LmNvbmZpZyBpbXBvcnQgUHl0ZXN0UGx1Z2luTWFuYWdlcgotZnJvbSBfcHl0ZXN0Lm1haW4gaW1w
b3J0IEVYSVRfTk9URVNUU0NPTExFQ1RFRCwgRVhJVF9VU0FHRUVSUk9SCi0KLQotQHB5dGVzdC5m
aXh0dXJlKHNjb3BlPSJtb2R1bGUiLCBwYXJhbXM9WyJnbG9iYWwiLCAiaW5wYWNrYWdlIl0pCi1k
ZWYgYmFzZWRpcihyZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSk6Ci0gICAgZnJvbSBfcHl0ZXN0LnRt
cGRpciBpbXBvcnQgdG1wZGlyCi0KLSAgICB0bXBkaXIgPSB0bXBkaXIocmVxdWVzdCwgdG1wZGly
X2ZhY3RvcnkpCi0gICAgdG1wZGlyLmVuc3VyZSgiYWRpci9jb25mdGVzdC5weSIpLndyaXRlKCJh
PTEgOyBEaXJlY3RvcnkgPSAzIikKLSAgICB0bXBkaXIuZW5zdXJlKCJhZGlyL2IvY29uZnRlc3Qu
cHkiKS53cml0ZSgiYj0yIDsgYSA9IDEuNSIpCi0gICAgaWYgcmVxdWVzdC5wYXJhbSA9PSAiaW5w
YWNrYWdlIjoKLSAgICAgICAgdG1wZGlyLmVuc3VyZSgiYWRpci9fX2luaXRfXy5weSIpCi0gICAg
ICAgIHRtcGRpci5lbnN1cmUoImFkaXIvYi9fX2luaXRfXy5weSIpCi0gICAgcmV0dXJuIHRtcGRp
cgorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5wYXRobGli
IGltcG9ydCBzeW1saW5rX29yX3NraXAKIAogCiBkZWYgQ29uZnRlc3RXaXRoU2V0aW5pdGlhbChw
YXRoKToKQEAgLTI4LDU4ICsxNyw3MiBAQCBkZWYgQ29uZnRlc3RXaXRoU2V0aW5pdGlhbChwYXRo
KToKIAogCiBkZWYgY29uZnRlc3Rfc2V0aW5pdGlhbChjb25mdGVzdCwgYXJncywgY29uZmN1dGRp
cj1Ob25lKToKLQotICAgIGNsYXNzIE5hbWVzcGFjZShvYmplY3QpOgotCisgICAgY2xhc3MgTmFt
ZXNwYWNlOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgICBzZWxmLmZp
bGVfb3JfZGlyID0gYXJncwogICAgICAgICAgICAgc2VsZi5jb25mY3V0ZGlyID0gc3RyKGNvbmZj
dXRkaXIpCiAgICAgICAgICAgICBzZWxmLm5vY29uZnRlc3QgPSBGYWxzZQorICAgICAgICAgICAg
c2VsZi5weWFyZ3MgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5pbXBvcnRtb2RlID0gInByZXBl
bmQiCiAKICAgICBjb25mdGVzdC5fc2V0X2luaXRpYWxfY29uZnRlc3RzKE5hbWVzcGFjZSgpKQog
CiAKLWNsYXNzIFRlc3RDb25mdGVzdFZhbHVlQWNjZXNzR2xvYmFsKG9iamVjdCk6CitAcHl0ZXN0
Lm1hcmsudXNlZml4dHVyZXMoIl9zeXNfc25hcHNob3QiKQorY2xhc3MgVGVzdENvbmZ0ZXN0VmFs
dWVBY2Nlc3NHbG9iYWw6CisgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiLCBwYXJh
bXM9WyJnbG9iYWwiLCAiaW5wYWNrYWdlIl0pCisgICAgZGVmIGJhc2VkaXIoc2VsZiwgcmVxdWVz
dCwgdG1wZGlyX2ZhY3RvcnkpOgorICAgICAgICB0bXBkaXIgPSB0bXBkaXJfZmFjdG9yeS5ta3Rl
bXAoImJhc2VkaXIiLCBudW1iZXJlZD1UcnVlKQorICAgICAgICB0bXBkaXIuZW5zdXJlKCJhZGly
L2NvbmZ0ZXN0LnB5Iikud3JpdGUoImE9MSA7IERpcmVjdG9yeSA9IDMiKQorICAgICAgICB0bXBk
aXIuZW5zdXJlKCJhZGlyL2IvY29uZnRlc3QucHkiKS53cml0ZSgiYj0yIDsgYSA9IDEuNSIpCisg
ICAgICAgIGlmIHJlcXVlc3QucGFyYW0gPT0gImlucGFja2FnZSI6CisgICAgICAgICAgICB0bXBk
aXIuZW5zdXJlKCJhZGlyL19faW5pdF9fLnB5IikKKyAgICAgICAgICAgIHRtcGRpci5lbnN1cmUo
ImFkaXIvYi9fX2luaXRfXy5weSIpCisKKyAgICAgICAgeWllbGQgdG1wZGlyCiAKICAgICBkZWYg
dGVzdF9iYXNpY19pbml0KHNlbGYsIGJhc2VkaXIpOgogICAgICAgICBjb25mdGVzdCA9IFB5dGVz
dFBsdWdpbk1hbmFnZXIoKQogICAgICAgICBwID0gYmFzZWRpci5qb2luKCJhZGlyIikKLSAgICAg
ICAgYXNzZXJ0IGNvbmZ0ZXN0Ll9yZ2V0X3dpdGhfY29uZm1vZCgiYSIsIHApWzFdID09IDEKKyAg
ICAgICAgYXNzZXJ0IGNvbmZ0ZXN0Ll9yZ2V0X3dpdGhfY29uZm1vZCgiYSIsIHAsIGltcG9ydG1v
ZGU9InByZXBlbmQiKVsxXSA9PSAxCiAKICAgICBkZWYgdGVzdF9pbW1lZGlhdGVfaW5pdGlhbGlh
dGlvbl9hbmRfaW5jcmVtZW50YWxfYXJlX3RoZV9zYW1lKHNlbGYsIGJhc2VkaXIpOgogICAgICAg
ICBjb25mdGVzdCA9IFB5dGVzdFBsdWdpbk1hbmFnZXIoKQotICAgICAgICBsZW4oY29uZnRlc3Qu
X3BhdGgyY29uZm1vZHMpCi0gICAgICAgIGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoYmFz
ZWRpcikKLSAgICAgICAgc25hcDEgPSBsZW4oY29uZnRlc3QuX3BhdGgyY29uZm1vZHMpCi0gICAg
ICAgICMgYXNzZXJ0IGxlbihjb25mdGVzdC5fcGF0aDJjb25mbW9kcykgPT0gc25hcDEgKyAxCi0g
ICAgICAgIGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoYmFzZWRpci5qb2luKCJhZGlyIikp
Ci0gICAgICAgIGFzc2VydCBsZW4oY29uZnRlc3QuX3BhdGgyY29uZm1vZHMpID09IHNuYXAxICsg
MQotICAgICAgICBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGJhc2VkaXIuam9pbigiYiIp
KQotICAgICAgICBhc3NlcnQgbGVuKGNvbmZ0ZXN0Ll9wYXRoMmNvbmZtb2RzKSA9PSBzbmFwMSAr
IDIKKyAgICAgICAgYXNzZXJ0IG5vdCBsZW4oY29uZnRlc3QuX2RpcnBhdGgyY29uZm1vZHMpCisg
ICAgICAgIGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoYmFzZWRpciwgaW1wb3J0bW9kZT0i
cHJlcGVuZCIpCisgICAgICAgIHNuYXAxID0gbGVuKGNvbmZ0ZXN0Ll9kaXJwYXRoMmNvbmZtb2Rz
KQorICAgICAgICBhc3NlcnQgc25hcDEgPT0gMQorICAgICAgICBjb25mdGVzdC5fZ2V0Y29uZnRl
c3Rtb2R1bGVzKGJhc2VkaXIuam9pbigiYWRpciIpLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKKyAg
ICAgICAgYXNzZXJ0IGxlbihjb25mdGVzdC5fZGlycGF0aDJjb25mbW9kcykgPT0gc25hcDEgKyAx
CisgICAgICAgIGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoYmFzZWRpci5qb2luKCJiIiks
IGltcG9ydG1vZGU9InByZXBlbmQiKQorICAgICAgICBhc3NlcnQgbGVuKGNvbmZ0ZXN0Ll9kaXJw
YXRoMmNvbmZtb2RzKSA9PSBzbmFwMSArIDIKIAogICAgIGRlZiB0ZXN0X3ZhbHVlX2FjY2Vzc19u
b3RfZXhpc3Rpbmcoc2VsZiwgYmFzZWRpcik6CiAgICAgICAgIGNvbmZ0ZXN0ID0gQ29uZnRlc3RX
aXRoU2V0aW5pdGlhbChiYXNlZGlyKQogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoS2V5RXJy
b3IpOgotICAgICAgICAgICAgY29uZnRlc3QuX3JnZXRfd2l0aF9jb25mbW9kKCJhIiwgYmFzZWRp
cikKKyAgICAgICAgICAgIGNvbmZ0ZXN0Ll9yZ2V0X3dpdGhfY29uZm1vZCgiYSIsIGJhc2VkaXIs
IGltcG9ydG1vZGU9InByZXBlbmQiKQogCiAgICAgZGVmIHRlc3RfdmFsdWVfYWNjZXNzX2J5X3Bh
dGgoc2VsZiwgYmFzZWRpcik6CiAgICAgICAgIGNvbmZ0ZXN0ID0gQ29uZnRlc3RXaXRoU2V0aW5p
dGlhbChiYXNlZGlyKQogICAgICAgICBhZGlyID0gYmFzZWRpci5qb2luKCJhZGlyIikKLSAgICAg
ICAgYXNzZXJ0IGNvbmZ0ZXN0Ll9yZ2V0X3dpdGhfY29uZm1vZCgiYSIsIGFkaXIpWzFdID09IDEK
LSAgICAgICAgYXNzZXJ0IGNvbmZ0ZXN0Ll9yZ2V0X3dpdGhfY29uZm1vZCgiYSIsIGFkaXIuam9p
bigiYiIpKVsxXSA9PSAxLjUKKyAgICAgICAgYXNzZXJ0IGNvbmZ0ZXN0Ll9yZ2V0X3dpdGhfY29u
Zm1vZCgiYSIsIGFkaXIsIGltcG9ydG1vZGU9InByZXBlbmQiKVsxXSA9PSAxCisgICAgICAgIGFz
c2VydCAoCisgICAgICAgICAgICBjb25mdGVzdC5fcmdldF93aXRoX2NvbmZtb2QoImEiLCBhZGly
LmpvaW4oImIiKSwgaW1wb3J0bW9kZT0icHJlcGVuZCIpWzFdCisgICAgICAgICAgICA9PSAxLjUK
KyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfdmFsdWVfYWNjZXNzX3dpdGhfY29uZm1vZChzZWxm
LCBiYXNlZGlyKToKICAgICAgICAgc3RhcnRkaXIgPSBiYXNlZGlyLmpvaW4oImFkaXIiLCAiYiIp
CiAgICAgICAgIHN0YXJ0ZGlyLmVuc3VyZSgieHgiLCBkaXI9VHJ1ZSkKICAgICAgICAgY29uZnRl
c3QgPSBDb25mdGVzdFdpdGhTZXRpbml0aWFsKHN0YXJ0ZGlyKQotICAgICAgICBtb2QsIHZhbHVl
ID0gY29uZnRlc3QuX3JnZXRfd2l0aF9jb25mbW9kKCJhIiwgc3RhcnRkaXIpCisgICAgICAgIG1v
ZCwgdmFsdWUgPSBjb25mdGVzdC5fcmdldF93aXRoX2NvbmZtb2QoImEiLCBzdGFydGRpciwgaW1w
b3J0bW9kZT0icHJlcGVuZCIpCiAgICAgICAgIGFzc2VydCB2YWx1ZSA9PSAxLjUKICAgICAgICAg
cGF0aCA9IHB5LnBhdGgubG9jYWwobW9kLl9fZmlsZV9fKQogICAgICAgICBhc3NlcnQgcGF0aC5k
aXJwYXRoKCkgPT0gYmFzZWRpci5qb2luKCJhZGlyIiwgImIiKQogICAgICAgICBhc3NlcnQgcGF0
aC5wdXJlYmFzZW5hbWUuc3RhcnRzd2l0aCgiY29uZnRlc3QiKQogCiAKLWRlZiB0ZXN0X2NvbmZ0
ZXN0X2luX25vbnBrZ193aXRoX2luaXQodG1wZGlyKToKK2RlZiB0ZXN0X2NvbmZ0ZXN0X2luX25v
bnBrZ193aXRoX2luaXQodG1wZGlyLCBfc3lzX3NuYXBzaG90KToKICAgICB0bXBkaXIuZW5zdXJl
KCJhZGlyLTEuMC9jb25mdGVzdC5weSIpLndyaXRlKCJhPTEgOyBEaXJlY3RvcnkgPSAzIikKICAg
ICB0bXBkaXIuZW5zdXJlKCJhZGlyLTEuMC9iL2NvbmZ0ZXN0LnB5Iikud3JpdGUoImI9MiA7IGEg
PSAxLjUiKQogICAgIHRtcGRpci5lbnN1cmUoImFkaXItMS4wL2IvX19pbml0X18ucHkiKQpAQCAt
OTIsNyArOTUsNyBAQCBkZWYgdGVzdF9kb3VibGVkYXNoX2NvbnNpZGVyZWQodGVzdGRpcik6CiAg
ICAgY29uZi5lbnN1cmUoImNvbmZ0ZXN0LnB5IikKICAgICBjb25mdGVzdCA9IFB5dGVzdFBsdWdp
bk1hbmFnZXIoKQogICAgIGNvbmZ0ZXN0X3NldGluaXRpYWwoY29uZnRlc3QsIFtjb25mLmJhc2Vu
YW1lLCBjb25mLmJhc2VuYW1lXSkKLSAgICB2YWx1ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rt
b2R1bGVzKGNvbmYpCisgICAgdmFsdWVzID0gY29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhj
b25mLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMQog
CiAKQEAgLTExNSwxMyArMTE4LDEzIEBAIGRlZiB0ZXN0X2NvbmZ0ZXN0X2dsb2JhbF9pbXBvcnQo
dGVzdGRpcik6CiAgICAgICAgIGltcG9ydCBweSwgcHl0ZXN0CiAgICAgICAgIGZyb20gX3B5dGVz
dC5jb25maWcgaW1wb3J0IFB5dGVzdFBsdWdpbk1hbmFnZXIKICAgICAgICAgY29uZiA9IFB5dGVz
dFBsdWdpbk1hbmFnZXIoKQotICAgICAgICBtb2QgPSBjb25mLl9pbXBvcnRjb25mdGVzdChweS5w
YXRoLmxvY2FsKCJjb25mdGVzdC5weSIpKQorICAgICAgICBtb2QgPSBjb25mLl9pbXBvcnRjb25m
dGVzdChweS5wYXRoLmxvY2FsKCJjb25mdGVzdC5weSIpLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikK
ICAgICAgICAgYXNzZXJ0IG1vZC54ID09IDMKICAgICAgICAgaW1wb3J0IGNvbmZ0ZXN0CiAgICAg
ICAgIGFzc2VydCBjb25mdGVzdCBpcyBtb2QsIChjb25mdGVzdCwgbW9kKQogICAgICAgICBzdWJj
b25mID0gcHkucGF0aC5sb2NhbCgpLmVuc3VyZSgic3ViIiwgImNvbmZ0ZXN0LnB5IikKICAgICAg
ICAgc3ViY29uZi53cml0ZSgieT00IikKLSAgICAgICAgbW9kMiA9IGNvbmYuX2ltcG9ydGNvbmZ0
ZXN0KHN1YmNvbmYpCisgICAgICAgIG1vZDIgPSBjb25mLl9pbXBvcnRjb25mdGVzdChzdWJjb25m
LCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKICAgICAgICAgYXNzZXJ0IG1vZCAhPSBtb2QyCiAgICAg
ICAgIGFzc2VydCBtb2QyLnkgPT0gNAogICAgICAgICBpbXBvcnQgY29uZnRlc3QKQEAgLTEzNywx
NyArMTQwLDE3IEBAIGRlZiB0ZXN0X2NvbmZ0ZXN0Y3V0ZGlyKHRlc3RkaXIpOgogICAgIHAgPSB0
ZXN0ZGlyLm1rZGlyKCJ4IikKICAgICBjb25mdGVzdCA9IFB5dGVzdFBsdWdpbk1hbmFnZXIoKQog
ICAgIGNvbmZ0ZXN0X3NldGluaXRpYWwoY29uZnRlc3QsIFt0ZXN0ZGlyLnRtcGRpcl0sIGNvbmZj
dXRkaXI9cCkKLSAgICB2YWx1ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHApCisg
ICAgdmFsdWVzID0gY29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhwLCBpbXBvcnRtb2RlPSJw
cmVwZW5kIikKICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMAotICAgIHZhbHVlcyA9IGNvbmZ0
ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoY29uZi5kaXJwYXRoKCkpCisgICAgdmFsdWVzID0gY29u
ZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhjb25mLmRpcnBhdGgoKSwgaW1wb3J0bW9kZT0icHJl
cGVuZCIpCiAgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDAKICAgICBhc3NlcnQgY29uZiBub3Qg
aW4gY29uZnRlc3QuX2NvbmZ0ZXN0cGF0aDJtb2QKICAgICAjIGJ1dCB3ZSBjYW4gc3RpbGwgaW1w
b3J0IGEgY29uZnRlc3QgZGlyZWN0bHkKLSAgICBjb25mdGVzdC5faW1wb3J0Y29uZnRlc3QoY29u
ZikKLSAgICB2YWx1ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGNvbmYuZGlycGF0
aCgpKQorICAgIGNvbmZ0ZXN0Ll9pbXBvcnRjb25mdGVzdChjb25mLCBpbXBvcnRtb2RlPSJwcmVw
ZW5kIikKKyAgICB2YWx1ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGNvbmYuZGly
cGF0aCgpLCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKICAgICBhc3NlcnQgdmFsdWVzWzBdLl9fZmls
ZV9fLnN0YXJ0c3dpdGgoc3RyKGNvbmYpKQogICAgICMgYW5kIGFsbCBzdWIgcGF0aHMgZ2V0IHVw
ZGF0ZWQgcHJvcGVybHkKLSAgICB2YWx1ZXMgPSBjb25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVz
KHApCisgICAgdmFsdWVzID0gY29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhwLCBpbXBvcnRt
b2RlPSJwcmVwZW5kIikKICAgICBhc3NlcnQgbGVuKHZhbHVlcykgPT0gMQogICAgIGFzc2VydCB2
YWx1ZXNbMF0uX19maWxlX18uc3RhcnRzd2l0aChzdHIoY29uZikpCiAKQEAgLTE1Niw3ICsxNTks
NyBAQCBkZWYgdGVzdF9jb25mdGVzdGN1dGRpcl9pbnBsYWNlX2NvbnNpZGVyZWQodGVzdGRpcik6
CiAgICAgY29uZiA9IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KCIiKQogICAgIGNvbmZ0ZXN0ID0gUHl0
ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAgY29uZnRlc3Rfc2V0aW5pdGlhbChjb25mdGVzdCwgW2Nv
bmYuZGlycGF0aCgpXSwgY29uZmN1dGRpcj1jb25mLmRpcnBhdGgoKSkKLSAgICB2YWx1ZXMgPSBj
b25mdGVzdC5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGNvbmYuZGlycGF0aCgpKQorICAgIHZhbHVlcyA9
IGNvbmZ0ZXN0Ll9nZXRjb25mdGVzdG1vZHVsZXMoY29uZi5kaXJwYXRoKCksIGltcG9ydG1vZGU9
InByZXBlbmQiKQogICAgIGFzc2VydCBsZW4odmFsdWVzKSA9PSAxCiAgICAgYXNzZXJ0IHZhbHVl
c1swXS5fX2ZpbGVfXy5zdGFydHN3aXRoKHN0cihjb25mKSkKIApAQCAtMTY3LDExICsxNzAsMTIg
QEAgZGVmIHRlc3Rfc2V0aW5pdGlhbF9jb25mdGVzdF9zdWJkaXJzKHRlc3RkaXIsIG5hbWUpOgog
ICAgIHN1YmNvbmZ0ZXN0ID0gc3ViLmVuc3VyZSgiY29uZnRlc3QucHkiKQogICAgIGNvbmZ0ZXN0
ID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAgICAgY29uZnRlc3Rfc2V0aW5pdGlhbChjb25mdGVz
dCwgW3N1Yi5kaXJwYXRoKCldLCBjb25mY3V0ZGlyPXRlc3RkaXIudG1wZGlyKQorICAgIGtleSA9
IFBhdGgoc3RyKHN1YmNvbmZ0ZXN0KSkucmVzb2x2ZSgpCiAgICAgaWYgbmFtZSBub3QgaW4gKCJ3
aGF0ZXZlciIsICIuZG90ZGlyIik6Ci0gICAgICAgIGFzc2VydCBzdWJjb25mdGVzdCBpbiBjb25m
dGVzdC5fY29uZnRlc3RwYXRoMm1vZAorICAgICAgICBhc3NlcnQga2V5IGluIGNvbmZ0ZXN0Ll9j
b25mdGVzdHBhdGgybW9kCiAgICAgICAgIGFzc2VydCBsZW4oY29uZnRlc3QuX2NvbmZ0ZXN0cGF0
aDJtb2QpID09IDEKICAgICBlbHNlOgotICAgICAgICBhc3NlcnQgc3ViY29uZnRlc3Qgbm90IGlu
IGNvbmZ0ZXN0Ll9jb25mdGVzdHBhdGgybW9kCisgICAgICAgIGFzc2VydCBrZXkgbm90IGluIGNv
bmZ0ZXN0Ll9jb25mdGVzdHBhdGgybW9kCiAgICAgICAgIGFzc2VydCBsZW4oY29uZnRlc3QuX2Nv
bmZ0ZXN0cGF0aDJtb2QpID09IDAKIAogCkBAIC0xNzksNTAgKzE4MywxMzcgQEAgZGVmIHRlc3Rf
Y29uZnRlc3RfY29uZmN1dGRpcih0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgi
YXNzZXJ0IDAiKQogICAgIHggPSB0ZXN0ZGlyLm1rZGlyKCJ4IikKICAgICB4LmpvaW4oImNvbmZ0
ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICB0
ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBkZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0t
eHl6IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICAgICAgICAgICIiIgotICAgICAgICBkZWYg
cHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigi
LS14eXoiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICIiIgogICAgICAgICApCiAgICAgKQog
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItaCIsICItLWNvbmZjdXRkaXI9JXMiICUg
eCwgeCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqLS14eXoqIl0pCi0gICAg
YXNzZXJ0ICJ3YXJuaW5nOiBjb3VsZCBub3QgbG9hZCBpbml0aWFsIiBub3QgaW4gcmVzdWx0LnN0
ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqd2FybmluZzog
Y291bGQgbm90IGxvYWQgaW5pdGlhbCoiKQorCisKK2RlZiB0ZXN0X2NvbmZ0ZXN0X3N5bWxpbmso
dGVzdGRpcik6CisgICAgIiIiYGNvbmZ0ZXN0LnB5YCBkaXNjb3ZlcnkgZm9sbG93cyBub3JtYWwg
cGF0aCByZXNvbHV0aW9uIGFuZCBkb2VzIG5vdCByZXNvbHZlIHN5bWxpbmtzLiIiIgorICAgICMg
U3RydWN0dXJlOgorICAgICMgL3JlYWwKKyAgICAjIC9yZWFsL2NvbmZ0ZXN0LnB5CisgICAgIyAv
cmVhbC9hcHAKKyAgICAjIC9yZWFsL2FwcC90ZXN0cworICAgICMgL3JlYWwvYXBwL3Rlc3RzL3Rl
c3RfZm9vLnB5CisKKyAgICAjIExpbmtzOgorICAgICMgL3N5bWxpbmt0ZXN0cyAtPiAvcmVhbC9h
cHAvdGVzdHMgKHJ1bm5pbmcgYXQgc3ltbGlua3Rlc3RzIHNob3VsZCBmYWlsKQorICAgICMgL3N5
bWxpbmsgLT4gL3JlYWwgKHJ1bm5pbmcgYXQgL3N5bWxpbmsgc2hvdWxkIHdvcmspCisKKyAgICBy
ZWFsID0gdGVzdGRpci50bXBkaXIubWtkaXIoInJlYWwiKQorICAgIHJlYWx0ZXN0cyA9IHJlYWwu
bWtkaXIoImFwcCIpLm1rZGlyKCJ0ZXN0cyIpCisgICAgc3ltbGlua19vcl9za2lwKHJlYWx0ZXN0
cywgdGVzdGRpci50bXBkaXIuam9pbigic3ltbGlua3Rlc3RzIikpCisgICAgc3ltbGlua19vcl9z
a2lwKHJlYWwsIHRlc3RkaXIudG1wZGlyLmpvaW4oInN5bWxpbmsiKSkKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICoqeworICAgICAgICAgICAgInJlYWwvYXBwL3Rlc3RzL3Rlc3Rf
Zm9vLnB5IjogImRlZiB0ZXN0MShmaXh0dXJlKTogcGFzcyIsCisgICAgICAgICAgICAicmVhbC9j
b25mdGVzdC5weSI6IHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgICAgICBwcmludCgiY29uZnRl
c3RfbG9hZGVkIikKKworICAgICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAgICAgICAg
ICAgICAgIGRlZiBmaXh0dXJlKCk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJmaXh0dXJl
X3VzZWQiKQorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKSwKKyAgICAgICAgfQor
ICAgICkKKworICAgICMgU2hvdWxkIGZhaWwgYmVjYXVzZSBjb25mdGVzdCBjYW5ub3QgYmUgZm91
bmQgZnJvbSB0aGUgbGluayBzdHJ1Y3R1cmUuCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi12cyIsICJzeW1saW5rdGVzdHMiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIipmaXh0dXJlICdmaXh0dXJlJyBub3QgZm91bmQqIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuVEVTVFNfRkFJTEVECisKKyAgICAjIFNob3VsZCBub3QgY2F1c2UgIlZh
bHVlRXJyb3I6IFBsdWdpbiBhbHJlYWR5IHJlZ2lzdGVyZWQiICgjNDE3NCkuCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi12cyIsICJzeW1saW5rIikKKyAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSBFeGl0Q29kZS5PSworCisKK2RlZiB0ZXN0X2NvbmZ0ZXN0X3N5bWxpbmtfZmlsZXMo
dGVzdGRpcik6CisgICAgIiIiU3ltbGlua2VkIGNvbmZ0ZXN0LnB5IGFyZSBmb3VuZCB3aGVuIHB5
dGVzdCBpcyBleGVjdXRlZCBpbiBhIGRpcmVjdG9yeSB3aXRoIHN5bWxpbmtlZAorICAgIGZpbGVz
LiIiIgorICAgIHJlYWwgPSB0ZXN0ZGlyLnRtcGRpci5ta2RpcigicmVhbCIpCisgICAgc291cmNl
ID0geworICAgICAgICAiYXBwL3Rlc3RfZm9vLnB5IjogImRlZiB0ZXN0MShmaXh0dXJlKTogcGFz
cyIsCisgICAgICAgICJhcHAvX19pbml0X18ucHkiOiAiIiwKKyAgICAgICAgImFwcC9jb25mdGVz
dC5weSI6IHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAorCisgICAgICAgICAgICBwcmludCgiY29uZnRlc3RfbG9hZGVkIikKKworICAg
ICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgICAgICBkZWYgZml4dHVyZSgpOgorICAg
ICAgICAgICAgICAgIHByaW50KCJmaXh0dXJlX3VzZWQiKQorICAgICAgICAgICAgIiIiCisgICAg
ICAgICksCisgICAgfQorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgqKnsicmVhbC8lcyIgJSBrOiB2
IGZvciBrLCB2IGluIHNvdXJjZS5pdGVtcygpfSkKKworICAgICMgQ3JlYXRlIGEgYnVpbGQgZGly
ZWN0b3J5IHRoYXQgY29udGFpbnMgc3ltbGlua3MgdG8gYWN0dWFsIGZpbGVzCisgICAgIyBidXQg
ZG9lc24ndCBzeW1saW5rIGFjdHVhbCBkaXJlY3Rvcmllcy4KKyAgICBidWlsZCA9IHRlc3RkaXIu
dG1wZGlyLm1rZGlyKCJidWlsZCIpCisgICAgYnVpbGQubWtkaXIoImFwcCIpCisgICAgZm9yIGYg
aW4gc291cmNlOgorICAgICAgICBzeW1saW5rX29yX3NraXAocmVhbC5qb2luKGYpLCBidWlsZC5q
b2luKGYpKQorICAgIGJ1aWxkLmNoZGlyKCkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXZzIiwgImFwcC90ZXN0X2Zvby5weSIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKmNvbmZ0ZXN0X2xvYWRlZCoiLCAiUEFTU0VEIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuT0sKKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgIG9zLnBhdGgu
bm9ybWNhc2UoIngiKSAhPSBvcy5wYXRoLm5vcm1jYXNlKCJYIiksCisgICAgcmVhc29uPSJvbmx5
IHJlbGV2YW50IGZvciBjYXNlIGluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcyIsCispCitkZWYgdGVz
dF9jb25mdGVzdF9iYWRjYXNlKHRlc3RkaXIpOgorICAgICIiIkNoZWNrIGNvbmZ0ZXN0LnB5IGxv
YWRpbmcgd2hlbiBkaXJlY3RvcnkgY2FzaW5nIGlzIHdyb25nICgjNTc5MikuIiIiCisgICAgdGVz
dGRpci50bXBkaXIubWtkaXIoIkplbmtpbnNSb290IikubWtkaXIoInRlc3QiKQorICAgIHNvdXJj
ZSA9IHsic2V0dXAucHkiOiAiIiwgInRlc3QvX19pbml0X18ucHkiOiAiIiwgInRlc3QvY29uZnRl
c3QucHkiOiAiIn0KKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoKip7IkplbmtpbnNSb290LyVzIiAl
IGs6IHYgZm9yIGssIHYgaW4gc291cmNlLml0ZW1zKCl9KQorCisgICAgdGVzdGRpci50bXBkaXIu
am9pbigiamVua2luc3Jvb3QvdGVzdCIpLmNoZGlyKCkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09M
TEVDVEVECisKKworZGVmIHRlc3RfY29uZnRlc3RfdXBwZXJjYXNlKHRlc3RkaXIpOgorICAgICIi
IkNoZWNrIGNvbmZ0ZXN0LnB5IHdob3NlIHF1YWxpZmllZCBuYW1lIGNvbnRhaW5zIHVwcGVyY2Fz
ZSBjaGFyYWN0ZXJzICgjNTgxOSkiIiIKKyAgICBzb3VyY2UgPSB7Il9faW5pdF9fLnB5IjogIiIs
ICJGb28vY29uZnRlc3QucHkiOiAiIiwgIkZvby9fX2luaXRfXy5weSI6ICIifQorICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgqKnNvdXJjZSkKKworICAgIHRlc3RkaXIudG1wZGlyLmNoZGlyKCkKKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
RXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKIAogZGVmIHRlc3Rfbm9fY29uZnRlc3QodGVz
dGRpcik6CiAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoImFzc2VydCAwIikKICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1ub2NvbmZ0ZXN0IikKLSAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0
Q29kZS5OT19URVNUU19DT0xMRUNURUQKIAogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKLSAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX1VTQUdFRVJST1IKLQotCi1kZWYgdGVz
dF9jb25mdGVzdF9leGlzdGluZ19yZXN1bHRsb2codGVzdGRpcik6Ci0gICAgeCA9IHRlc3RkaXIu
bWtkaXIoInRlc3RzIikKLSAgICB4LmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAg
IF9weXRlc3QuX2NvZGUuU291cmNlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgIGRlZiBweXRl
c3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLXh5
eiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgIiIiCi0gICAgICAgICkKLSAgICApCi0gICAg
dGVzdGRpci5tYWtlZmlsZShleHQ9Ii5sb2ciLCByZXN1bHQ9IiIpICAjIFdyaXRlcyByZXN1bHQu
bG9nCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1oIiwgIi0tcmVzdWx0bG9nIiwg
InJlc3VsdC5sb2ciKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiotLXh5eioi
XSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5VU0FHRV9FUlJPUgogCiAKIGRl
ZiB0ZXN0X2NvbmZ0ZXN0X2V4aXN0aW5nX2p1bml0eG1sKHRlc3RkaXIpOgogICAgIHggPSB0ZXN0
ZGlyLm1rZGlyKCJ0ZXN0cyIpCiAgICAgeC5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAotICAg
ICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAg
ICAgICAgICAgIiIiXAorICAgICAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToK
KyAgICAgICAgICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLXh5eiIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIpCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFy
c2VyKToKLSAgICAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0teHl6IiwgYWN0aW9uPSJzdG9y
ZV90cnVlIikKLSAgICAiIiIKICAgICAgICAgKQogICAgICkKICAgICB0ZXN0ZGlyLm1ha2VmaWxl
KGV4dD0iLnhtbCIsIGp1bml0PSIiKSAgIyBXcml0ZXMganVuaXQueG1sCkBAIC0yMzYsNTQgKzMy
Nyw1NCBAQCBkZWYgdGVzdF9jb25mdGVzdF9pbXBvcnRfb3JkZXIodGVzdGRpciwgbW9ua2V5cGF0
Y2gpOgogICAgIGN0MiA9IHN1Yi5qb2luKCJjb25mdGVzdC5weSIpCiAgICAgY3QyLndyaXRlKCIi
KQogCi0gICAgZGVmIGltcGN0KHApOgorICAgIGRlZiBpbXBjdChwLCBpbXBvcnRtb2RlKToKICAg
ICAgICAgcmV0dXJuIHAKIAogICAgIGNvbmZ0ZXN0ID0gUHl0ZXN0UGx1Z2luTWFuYWdlcigpCiAg
ICAgY29uZnRlc3QuX2NvbmZjdXRkaXIgPSB0ZXN0ZGlyLnRtcGRpcgogICAgIG1vbmtleXBhdGNo
LnNldGF0dHIoY29uZnRlc3QsICJfaW1wb3J0Y29uZnRlc3QiLCBpbXBjdCkKLSAgICBhc3NlcnQg
Y29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhzdWIpID09IFtjdDEsIGN0Ml0KKyAgICBhc3Nl
cnQgY29uZnRlc3QuX2dldGNvbmZ0ZXN0bW9kdWxlcyhzdWIsIGltcG9ydG1vZGU9InByZXBlbmQi
KSA9PSBbY3QxLCBjdDJdCiAKIAotZGVmIHRlc3RfZml4dHVyZV9kZXBlbmRlbmN5KHRlc3RkaXIs
IG1vbmtleXBhdGNoKToKK2RlZiB0ZXN0X2ZpeHR1cmVfZGVwZW5kZW5jeSh0ZXN0ZGlyKToKICAg
ICBjdDEgPSB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgiIikKICAgICBjdDEgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoIl9faW5pdF9fLnB5IikKICAgICBjdDEud3JpdGUoIiIpCiAgICAgc3ViID0gdGVzdGRp
ci5ta2Rpcigic3ViIikKICAgICBzdWIuam9pbigiX19pbml0X18ucHkiKS53cml0ZSgiIikKICAg
ICBzdWIuam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgZGVkZW50KAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50
KAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCi0gICAgICAg
IEBweXRlc3QuZml4dHVyZQotICAgICAgICBkZWYgbm90X25lZWRlZCgpOgotICAgICAgICAgICAg
YXNzZXJ0IEZhbHNlLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQhIgorICAgICAgICAgICAgQHB5dGVz
dC5maXh0dXJlCisgICAgICAgICAgICBkZWYgbm90X25lZWRlZCgpOgorICAgICAgICAgICAgICAg
IGFzc2VydCBGYWxzZSwgIlNob3VsZCBub3QgYmUgY2FsbGVkISIKIAotICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKLSAgICAgICAgZGVmIGZvbygpOgotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAi
U2hvdWxkIG5vdCBiZSBjYWxsZWQhIgorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiU2hvdWxk
IG5vdCBiZSBjYWxsZWQhIgogCi0gICAgICAgIEBweXRlc3QuZml4dHVyZQotICAgICAgICBkZWYg
YmFyKGZvbyk6Ci0gICAgICAgICAgICByZXR1cm4gJ2JhcicKLSAgICAiIiIKKyAgICAgICAgICAg
IEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgZGVmIGJhcihmb28pOgorICAgICAgICAgICAg
ICAgIHJldHVybiAnYmFyJworICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAg
c3Vic3ViID0gc3ViLm1rZGlyKCJzdWJzdWIiKQogICAgIHN1YnN1Yi5qb2luKCJfX2luaXRfXy5w
eSIpLndyaXRlKCIiKQogICAgIHN1YnN1Yi5qb2luKCJ0ZXN0X2Jhci5weSIpLndyaXRlKAotICAg
ICAgICBkZWRlbnQoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAorICAg
ICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0CiAKLSAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgIGRlZiBiYXIoKToK
LSAgICAgICAgICAgIHJldHVybiAnc3ViIGJhcicKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVy
ZQorICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgIHJldHVybiAnc3ViIGJh
cicKIAotICAgICAgICBkZWYgdGVzdF9ldmVudF9maXh0dXJlKGJhcik6Ci0gICAgICAgICAgICBh
c3NlcnQgYmFyID09ICdzdWIgYmFyJwotICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfZXZl
bnRfZml4dHVyZShiYXIpOgorICAgICAgICAgICAgICAgIGFzc2VydCBiYXIgPT0gJ3N1YiBiYXIn
CisgICAgICAgICAgICAiIiIKICAgICAgICAgKQogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgic3ViIikKQEAgLTI5MywxMSArMzg0LDExIEBAIGRlZiB0ZXN0X2ZpeHR1cmVf
ZGVwZW5kZW5jeSh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiBkZWYgdGVzdF9jb25mdGVzdF9mb3Vu
ZF93aXRoX2RvdWJsZV9kYXNoKHRlc3RkaXIpOgogICAgIHN1YiA9IHRlc3RkaXIubWtkaXIoInN1
YiIpCiAgICAgc3ViLmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIGRlZGVudCgK
KyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAg
ZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKKyAgICAgICAgICAgICAgICBwYXJzZXIuYWRk
b3B0aW9uKCItLWhlbGxvLXdvcmxkIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICAgICAgICAg
ICIiIgotICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgICAgICAgICAg
cGFyc2VyLmFkZG9wdGlvbigiLS1oZWxsby13b3JsZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0g
ICAgIiIiCiAgICAgICAgICkKICAgICApCiAgICAgcCA9IHN1Yi5qb2luKCJ0ZXN0X2hlbGxvLnB5
IikKQEAgLTMxMCw4ICs0MDEsNyBAQCBkZWYgdGVzdF9jb25mdGVzdF9mb3VuZF93aXRoX2RvdWJs
ZV9kYXNoKHRlc3RkaXIpOgogICAgICkKIAogCi1jbGFzcyBUZXN0Q29uZnRlc3RWaXNpYmlsaXR5
KG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RDb25mdGVzdFZpc2liaWxpdHk6CiAgICAgZGVmIF9zZXR1
cF90cmVlKHNlbGYsIHRlc3RkaXIpOiAgIyBmb3IgaXNzdWU2MTYKICAgICAgICAgIyBleGFtcGxl
IG1vc3RseSB0YWtlbiBmcm9tOgogICAgICAgICAjIGh0dHBzOi8vbWFpbC5weXRob24ub3JnL3Bp
cGVybWFpbC9weXRlc3QtZGV2LzIwMTQtU2VwdGVtYmVyLzAwMjYxNy5odG1sCkBAIC0zMTksNjEg
KzQwOSw2MCBAQCBjbGFzcyBUZXN0Q29uZnRlc3RWaXNpYmlsaXR5KG9iamVjdCk6CiAgICAgICAg
IHBhY2thZ2UgPSB0ZXN0ZGlyLm1rZGlyKCJwYWNrYWdlIikKIAogICAgICAgICBwYWNrYWdlLmpv
aW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAg
ICB0ZXh0d3JhcC5kZWRlbnQoCiAgICAgICAgICAgICAgICAgIiIiXAotICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgICAgICBkZWYg
Znh0cigpOgotICAgICAgICAgICAgICAgIHJldHVybiAiZnJvbS1wYWNrYWdlIgotICAgICAgICAi
IiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICAgICAgQHB5dGVz
dC5maXh0dXJlCisgICAgICAgICAgICAgICAgZGVmIGZ4dHIoKToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICJmcm9tLXBhY2thZ2UiCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAgICAg
ICApCiAgICAgICAgICkKICAgICAgICAgcGFja2FnZS5qb2luKCJ0ZXN0X3BrZ3Jvb3QucHkiKS53
cml0ZSgKLSAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgK
ICAgICAgICAgICAgICAgICAiIiJcCi0gICAgICAgICAgICBkZWYgdGVzdF9wa2dyb290KGZ4dHIp
OgotICAgICAgICAgICAgICAgIGFzc2VydCBmeHRyID09ICJmcm9tLXBhY2thZ2UiCi0gICAgICAg
ICIiIgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3BrZ3Jvb3QoZnh0cik6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBmeHRyID09ICJmcm9tLXBhY2thZ2UiCisgICAgICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKIAogICAgICAgICBzd2MgPSBwYWNrYWdlLm1r
ZGlyKCJzd2MiKQogICAgICAgICBzd2Muam9pbigiX19pbml0X18ucHkiKS5lbnN1cmUoKQogICAg
ICAgICBzd2Muam9pbigiY29uZnRlc3QucHkiKS53cml0ZSgKLSAgICAgICAgICAgIGRlZGVudCgK
KyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKICAgICAgICAgICAgICAgICAiIiJcCi0gICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAg
ICAgICAgIGRlZiBmeHRyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJmcm9tLXN3YyIKLSAg
ICAgICAgIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgICAg
IEBweXRlc3QuZml4dHVyZQorICAgICAgICAgICAgICAgIGRlZiBmeHRyKCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAiZnJvbS1zd2MiCisgICAgICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICApCiAgICAgICAgICkKICAgICAgICAgc3djLmpvaW4oInRlc3Rfd2l0aF9jb25mdGVzdC5w
eSIpLndyaXRlKAotICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAgdGV4dHdyYXAuZGVk
ZW50KAogICAgICAgICAgICAgICAgICIiIlwKLSAgICAgICAgICAgIGRlZiB0ZXN0X3dpdGhfY29u
ZnRlc3QoZnh0cik6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGZ4dHIgPT0gImZyb20tc3djIgot
Ci0gICAgICAgICIiIgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3dpdGhfY29uZnRlc3QoZnh0
cik6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmeHRyID09ICJmcm9tLXN3YyIKKyAgICAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogCiAgICAgICAgIHNuYyA9
IHBhY2thZ2UubWtkaXIoInNuYyIpCiAgICAgICAgIHNuYy5qb2luKCJfX2luaXRfXy5weSIpLmVu
c3VyZSgpCiAgICAgICAgIHNuYy5qb2luKCJ0ZXN0X25vX2NvbmZ0ZXN0LnB5Iikud3JpdGUoCi0g
ICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCiAgICAgICAg
ICAgICAgICAgIiIiXAotICAgICAgICAgICAgZGVmIHRlc3Rfbm9fY29uZnRlc3QoZnh0cik6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0IGZ4dHIgPT0gImZyb20tcGFja2FnZSIgICAjIE5vIGxvY2Fs
IGNvbmZ0ZXN0LnB5LCBzbyBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgdXNlIHZhbHVlIGZyb20gcGFyZW50IGRpcidzCi0KLSAgICAgICAg
IiIiCisgICAgICAgICAgICAgICAgZGVmIHRlc3Rfbm9fY29uZnRlc3QoZnh0cik6CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBmeHRyID09ICJmcm9tLXBhY2thZ2UiICAgIyBObyBsb2NhbCBj
b25mdGVzdC5weSwgc28gc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyB1c2UgdmFsdWUgZnJvbSBwYXJlbnQgZGlyJ3MKKyAgICAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICBwcmludCgiY3Jl
YXRlZCBkaXJlY3Rvcnkgc3RydWN0dXJlOiIpCi0gICAgICAgIGZvciB4IGluIHRlc3RkaXIudG1w
ZGlyLnZpc2l0KCk6Ci0gICAgICAgICAgICBwcmludCgiICAgIiArIHgucmVsdG8odGVzdGRpci50
bXBkaXIpKQorICAgICAgICB0bXBwYXRoID0gUGF0aChzdHIodGVzdGRpci50bXBkaXIpKQorICAg
ICAgICBmb3IgeCBpbiB0bXBwYXRoLnJnbG9iKCIiKToKKyAgICAgICAgICAgIHByaW50KCIgICAi
ICsgc3RyKHgucmVsYXRpdmVfdG8odG1wcGF0aCkpKQogCiAgICAgICAgIHJldHVybiB7InJ1bm5l
ciI6IHJ1bm5lciwgInBhY2thZ2UiOiBwYWNrYWdlLCAic3djIjogc3djLCAic25jIjogc25jfQog
CkBAIC00MDQsMTAgKzQ5MywxMCBAQCBjbGFzcyBUZXN0Q29uZnRlc3RWaXNpYmlsaXR5KG9iamVj
dCk6CiAgICAgICAgICAgICAoInNuYyIsICIuIiwgMSksCiAgICAgICAgIF0sCiAgICAgKQotICAg
IEBweXRlc3QubWFyay5pc3N1ZTYxNgogICAgIGRlZiB0ZXN0X3BhcnNlZmFjdG9yaWVzX3JlbGF0
aXZlX25vZGVfaWRzKAogICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBjaGRpciwgdGVzdGFyZywgZXhw
ZWN0X250ZXN0c19wYXNzZWQKICAgICApOgorICAgICAgICAiIiIjNjE2IiIiCiAgICAgICAgIGRp
cnMgPSBzZWxmLl9zZXR1cF90cmVlKHRlc3RkaXIpCiAgICAgICAgIHByaW50KCJweXRlc3QgcnVu
IGluIGN3ZDogJXMiICUgKGRpcnNbY2hkaXJdLnJlbHRvKHRlc3RkaXIudG1wZGlyKSkpCiAgICAg
ICAgIHByaW50KCJweXRlc3RhcmcgICAgICAgIDogJXMiICUgKHRlc3RhcmcpKQpAQCAtNDI4LDMx
ICs1MTcsMzEgQEAgZGVmIHRlc3Rfc2VhcmNoX2NvbmZ0ZXN0X3VwX3RvX2luaWZpbGUodGVzdGRp
ciwgY29uZmN1dGRpciwgcGFzc2VkLCBlcnJvcik6CiAgICAgc3JjID0gcm9vdC5qb2luKCJzcmMi
KS5lbnN1cmUoZGlyPTEpCiAgICAgc3JjLmpvaW4oInB5dGVzdC5pbmkiKS53cml0ZSgiW3B5dGVz
dF0iKQogICAgIHNyYy5qb2luKCJjb25mdGVzdC5weSIpLndyaXRlKAotICAgICAgICBfcHl0ZXN0
Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgIiIi
XAorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgQHB5dGVzdC5maXh0dXJl
CisgICAgICAgICAgICBkZWYgZml4MSgpOiBwYXNzCiAgICAgICAgICAgICAiIiIKLSAgICAgICAg
aW1wb3J0IHB5dGVzdAotICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKLSAgICAgICAgZGVmIGZpeDEo
KTogcGFzcwotICAgICIiIgogICAgICAgICApCiAgICAgKQogICAgIHNyYy5qb2luKCJ0ZXN0X2Zv
by5weSIpLndyaXRlKAotICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgdGV4
dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgZGVmIHRlc3RfMShm
aXgxKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgdGVzdF8yKG91dF9v
Zl9yZWFjaCk6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIiIiCi0gICAgICAg
IGRlZiB0ZXN0XzEoZml4MSk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGRlZiB0ZXN0XzIo
b3V0X29mX3JlYWNoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKICAgICAgICAgKQogICAg
ICkKICAgICByb290LmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIF9weXRlc3Qu
X2NvZGUuU291cmNlKAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiJc
CisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK
KyAgICAgICAgICAgIGRlZiBvdXRfb2ZfcmVhY2goKTogcGFzcwogICAgICAgICAgICAgIiIiCi0g
ICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgICAgIGRl
ZiBvdXRfb2ZfcmVhY2goKTogcGFzcwotICAgICIiIgogICAgICAgICApCiAgICAgKQogCkBAIC00
NzAsMTkgKzU1OSwxOSBAQCBkZWYgdGVzdF9zZWFyY2hfY29uZnRlc3RfdXBfdG9faW5pZmlsZSh0
ZXN0ZGlyLCBjb25mY3V0ZGlyLCBwYXNzZWQsIGVycm9yKToKIAogZGVmIHRlc3RfaXNzdWUxMDcz
X2NvbmZ0ZXN0X3NwZWNpYWxfb2JqZWN0cyh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2Vjb25m
dGVzdCgKLSAgICAgICAgIiIiCisgICAgICAgICIiIlwKICAgICAgICAgY2xhc3MgRG9udFRvdWNo
TWUob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCB4KToKICAgICAg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2NhbnQgdG91Y2ggbWUnKQogCiAgICAgICAgIHgg
PSBEb250VG91Y2hNZSgpCi0gICAgIiIiCisgICAgICAgICIiIgogICAgICkKICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCi0gICAgICAgICIiIgorICAgICAgICAiIiJcCiAgICAgICAgIGRlZiB0ZXN0
X3NvbWUoKToKICAgICAgICAgICAgIHBhc3MKLSAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgKQog
ICAgIHJlcyA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICBhc3NlcnQgcmVzLnJldCA9PSAwCkBA
IC00OTAsMTUgKzU3OSwxNSBAQCBkZWYgdGVzdF9pc3N1ZTEwNzNfY29uZnRlc3Rfc3BlY2lhbF9v
YmplY3RzKHRlc3RkaXIpOgogCiBkZWYgdGVzdF9jb25mdGVzdF9leGNlcHRpb25faGFuZGxpbmco
dGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCi0gICAgICAgICIiIgorICAgICAg
ICAiIiJcCiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQotICAgICIiIgorICAgICAgICAiIiIK
ICAgICApCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKKyAgICAgICAgIiIi
XAogICAgICAgICBkZWYgdGVzdF9zb21lKCk6CiAgICAgICAgICAgICBwYXNzCi0gICAgIiIiCisg
ICAgICAgICIiIgogICAgICkKICAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgYXNz
ZXJ0IHJlcy5yZXQgPT0gNApAQCAtNTEzLDcgKzYwMiw3IEBAIGRlZiB0ZXN0X2hvb2tfcHJveHko
dGVzdGRpcik6CiAgICAgICAgICoqewogICAgICAgICAgICAgInJvb3QvZGVtby0wL3Rlc3RfZm9v
MS5weSI6ICJkZWYgdGVzdDEoKTogcGFzcyIsCiAgICAgICAgICAgICAicm9vdC9kZW1vLWEvdGVz
dF9mb28yLnB5IjogImRlZiB0ZXN0MSgpOiBwYXNzIiwKLSAgICAgICAgICAgICJyb290L2RlbW8t
YS9jb25mdGVzdC5weSI6ICIiIgorICAgICAgICAgICAgInJvb3QvZGVtby1hL2NvbmZ0ZXN0LnB5
IjogIiIiXAogICAgICAgICAgICAgZGVmIHB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoLCBjb25m
aWcpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICAiIiIsCkBAIC01
MzEsMTMgKzYyMCwxMyBAQCBkZWYgdGVzdF9yZXF1aXJlZF9vcHRpb25faGVscCh0ZXN0ZGlyKToK
ICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgiYXNzZXJ0IDAiKQogICAgIHggPSB0ZXN0ZGlyLm1r
ZGlyKCJ4IikKICAgICB4LmpvaW4oImNvbmZ0ZXN0LnB5Iikud3JpdGUoCi0gICAgICAgIF9weXRl
c3QuX2NvZGUuU291cmNlKAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAi
IiJcCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAg
ICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0teHl6IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgcmVx
dWlyZWQ9VHJ1ZSkKICAgICAgICAgICAgICIiIgotICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlv
bihwYXJzZXIpOgotICAgICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS14eXoiLCBhY3Rpb249
InN0b3JlX3RydWUiLCByZXF1aXJlZD1UcnVlKQotICAgICIiIgogICAgICAgICApCiAgICAgKQog
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItaCIsIHgpCi0gICAgYXNzZXJ0ICJhcmd1
bWVudCAtLXh5eiBpcyByZXF1aXJlZCIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBy
ZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmFyZ3VtZW50IC0teHl6IGlzIHJlcXVpcmVk
KiIpCiAgICAgYXNzZXJ0ICJnZW5lcmFsOiIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2RlYnVnZ2luZy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9kZWJ1Z2dpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi45NDhiNjIxZjdjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfZGVidWdnaW5nLnB5CkBAIC0wLDAgKzEsMTMwMiBAQAoraW1wb3J0IG9zCitp
bXBvcnQgc3lzCisKK2ltcG9ydCBfcHl0ZXN0Ll9jb2RlCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9w
eXRlc3QuZGVidWdnaW5nIGltcG9ydCBfdmFsaWRhdGVfdXNlcGRiX2NscworCit0cnk6CisgICAg
IyBUeXBlIGlnbm9yZWQgZm9yIFB5dGhvbiA8PSAzLjYuCisgICAgYnJlYWtwb2ludCAgIyB0eXBl
OiBpZ25vcmUKK2V4Y2VwdCBOYW1lRXJyb3I6CisgICAgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlM
VElOID0gRmFsc2UKK2Vsc2U6CisgICAgU1VQUE9SVFNfQlJFQUtQT0lOVF9CVUlMVElOID0gVHJ1
ZQorCisKK19FTlZJUk9OX1BZVEhPTkJSRUFLUE9JTlQgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9O
QlJFQUtQT0lOVCIsICIiKQorCisKK0BweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCitkZWYg
cGRiX2VudihyZXF1ZXN0KToKKyAgICBpZiAidGVzdGRpciIgaW4gcmVxdWVzdC5maXh0dXJlbmFt
ZXM6CisgICAgICAgICMgRGlzYWJsZSBwZGIrKyB3aXRoIGlubmVyIHRlc3RzLgorICAgICAgICB0
ZXN0ZGlyID0gcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoInRlc3RkaXIiKQorICAgICAgICB0ZXN0
ZGlyLm1vbmtleXBhdGNoLnNldGVudigiUERCUFBfSElKQUNLX1BEQiIsICIwIikKKworCitkZWYg
cnVucGRiX2FuZF9nZXRfcmVwb3J0KHRlc3RkaXIsIHNvdXJjZSk6CisgICAgcCA9IHRlc3RkaXIu
bWFrZXB5ZmlsZShzb3VyY2UpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9j
ZXNzKCItLXBkYiIsIHApCisgICAgcmVwb3J0cyA9IHJlc3VsdC5yZXByZWMuZ2V0cmVwb3J0cygi
cHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDMs
IHJlcG9ydHMgICMgc2V0dXAvY2FsbC90ZWFyZG93bgorICAgIHJldHVybiByZXBvcnRzWzFdCisK
KworQHB5dGVzdC5maXh0dXJlCitkZWYgY3VzdG9tX3BkYl9jYWxscygpOgorICAgIGNhbGxlZCA9
IFtdCisKKyAgICAjIGluc3RhbGwgZHVtbXkgZGVidWdnZXIgY2xhc3MgYW5kIHRyYWNrIHdoaWNo
IG1ldGhvZHMgd2VyZSBjYWxsZWQgb24gaXQKKyAgICBjbGFzcyBfQ3VzdG9tUGRiOgorICAgICAg
ICBxdWl0dGluZyA9IEZhbHNlCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6CisgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJpbml0IikKKworICAgICAgICBk
ZWYgcmVzZXQoc2VsZik6CisgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJyZXNldCIpCisKKyAg
ICAgICAgZGVmIGludGVyYWN0aW9uKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIGNhbGxlZC5h
cHBlbmQoImludGVyYWN0aW9uIikKKworICAgIF9weXRlc3QuX0N1c3RvbVBkYiA9IF9DdXN0b21Q
ZGIgICMgdHlwZTogaWdub3JlCisgICAgcmV0dXJuIGNhbGxlZAorCisKK0BweXRlc3QuZml4dHVy
ZQorZGVmIGN1c3RvbV9kZWJ1Z2dlcl9ob29rKCk6CisgICAgY2FsbGVkID0gW10KKworICAgICMg
aW5zdGFsbCBkdW1teSBkZWJ1Z2dlciBjbGFzcyBhbmQgdHJhY2sgd2hpY2ggbWV0aG9kcyB3ZXJl
IGNhbGxlZCBvbiBpdAorICAgIGNsYXNzIF9DdXN0b21EZWJ1Z2dlcjoKKyAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBjYWxsZWQuYXBwZW5k
KCJpbml0IikKKworICAgICAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgICAgICBjYWxsZWQu
YXBwZW5kKCJyZXNldCIpCisKKyAgICAgICAgZGVmIGludGVyYWN0aW9uKHNlbGYsICphcmdzKToK
KyAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoImludGVyYWN0aW9uIikKKworICAgICAgICBkZWYg
c2V0X3RyYWNlKHNlbGYsIGZyYW1lKToKKyAgICAgICAgICAgIHByaW50KCIqKkN1c3RvbURlYnVn
Z2VyKioiKQorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgic2V0X3RyYWNlIikKKworICAgIF9w
eXRlc3QuX0N1c3RvbURlYnVnZ2VyID0gX0N1c3RvbURlYnVnZ2VyICAjIHR5cGU6IGlnbm9yZQor
ICAgIHlpZWxkIGNhbGxlZAorICAgIGRlbCBfcHl0ZXN0Ll9DdXN0b21EZWJ1Z2dlciAgIyB0eXBl
OiBpZ25vcmUKKworCitjbGFzcyBUZXN0UERCOgorICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRl
ZiBwZGJsaXN0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBtb25rZXlwYXRjaCA9IHJlcXVlc3Qu
Z2V0Zml4dHVyZXZhbHVlKCJtb25rZXlwYXRjaCIpCisgICAgICAgIHBkYmxpc3QgPSBbXQorCisg
ICAgICAgIGRlZiBteXBkYigqYXJncyk6CisgICAgICAgICAgICBwZGJsaXN0LmFwcGVuZChhcmdz
KQorCisgICAgICAgIHBsdWdpbiA9IHJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1
Z2luKCJkZWJ1Z2dpbmciKQorICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHBsdWdpbiwgInBv
c3RfbW9ydGVtIiwgbXlwZGIpCisgICAgICAgIHJldHVybiBwZGJsaXN0CisKKyAgICBkZWYgdGVz
dF9wZGJfb25fZmFpbChzZWxmLCB0ZXN0ZGlyLCBwZGJsaXN0KToKKyAgICAgICAgcmVwID0gcnVu
cGRiX2FuZF9nZXRfcmVwb3J0KAorICAgICAgICAgICAgdGVzdGRpciwKKyAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgorICAgICAgICAgICAgICAgIGFzc2VydCAw
CisgICAgICAgICIiIiwKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVwLmZhaWxlZAorICAg
ICAgICBhc3NlcnQgbGVuKHBkYmxpc3QpID09IDEKKyAgICAgICAgdGIgPSBfcHl0ZXN0Ll9jb2Rl
LlRyYWNlYmFjayhwZGJsaXN0WzBdWzBdKQorICAgICAgICBhc3NlcnQgdGJbLTFdLm5hbWUgPT0g
InRlc3RfZnVuYyIKKworICAgIGRlZiB0ZXN0X3BkYl9vbl94ZmFpbChzZWxmLCB0ZXN0ZGlyLCBw
ZGJsaXN0KToKKyAgICAgICAgcmVwID0gcnVucGRiX2FuZF9nZXRfcmVwb3J0KAorICAgICAgICAg
ICAgdGVzdGRpciwKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAor
ICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCisgICAgICAgICAgICBkZWYgdGVzdF9mdW5j
KCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiLAorICAgICAgICApCisg
ICAgICAgIGFzc2VydCAieGZhaWwiIGluIHJlcC5rZXl3b3JkcworICAgICAgICBhc3NlcnQgbm90
IHBkYmxpc3QKKworICAgIGRlZiB0ZXN0X3BkYl9vbl9za2lwKHNlbGYsIHRlc3RkaXIsIHBkYmxp
c3QpOgorICAgICAgICByZXAgPSBydW5wZGJfYW5kX2dldF9yZXBvcnQoCisgICAgICAgICAgICB0
ZXN0ZGlyLAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAg
ICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoImhl
bGxvIikKKyAgICAgICAgIiIiLAorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXAuc2tpcHBl
ZAorICAgICAgICBhc3NlcnQgbGVuKHBkYmxpc3QpID09IDAKKworICAgIGRlZiB0ZXN0X3BkYl9v
bl9CZGJRdWl0KHNlbGYsIHRlc3RkaXIsIHBkYmxpc3QpOgorICAgICAgICByZXAgPSBydW5wZGJf
YW5kX2dldF9yZXBvcnQoCisgICAgICAgICAgICB0ZXN0ZGlyLAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBpbXBvcnQgYmRiCisgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAg
ICAgICAgICAgICAgcmFpc2UgYmRiLkJkYlF1aXQKKyAgICAgICAgIiIiLAorICAgICAgICApCisg
ICAgICAgIGFzc2VydCByZXAuZmFpbGVkCisgICAgICAgIGFzc2VydCBsZW4ocGRibGlzdCkgPT0g
MAorCisgICAgZGVmIHRlc3RfcGRiX29uX0tleWJvYXJkSW50ZXJydXB0KHNlbGYsIHRlc3RkaXIs
IHBkYmxpc3QpOgorICAgICAgICByZXAgPSBydW5wZGJfYW5kX2dldF9yZXBvcnQoCisgICAgICAg
ICAgICB0ZXN0ZGlyLAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9mdW5j
KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAgIiIi
LAorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXAuZmFpbGVkCisgICAgICAgIGFzc2VydCBs
ZW4ocGRibGlzdCkgPT0gMQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmbHVzaChjaGls
ZCk6CisgICAgICAgIGlmIGNoaWxkLmlzYWxpdmUoKToKKyAgICAgICAgICAgICMgUmVhZCBpZiB0
aGUgdGVzdCBoYXMgbm90IChlLmcuIHRlc3RfcGRiX3VuaXR0ZXN0X3NraXApLgorICAgICAgICAg
ICAgY2hpbGQucmVhZCgpCisgICAgICAgICAgICBjaGlsZC53YWl0KCkKKyAgICAgICAgYXNzZXJ0
IG5vdCBjaGlsZC5pc2FsaXZlKCkKKworICAgIGRlZiB0ZXN0X3BkYl91bml0dGVzdF9wb3N0bW9y
dGVtKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgICAgICBj
bGFzcyBCbHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVhckRv
d24oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBOb25lCisgICAg
ICAgICAgICAgICAgZGVmIHRlc3RfZmFsc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuZmlsZW5hbWUgPSAnZGVidWcnICsgJy5tZScKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXdu
X3B5dGVzdCgiLS1wZGIgJXMiICUgcDEpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAg
ICAgICAgY2hpbGQuc2VuZGxpbmUoInAgc2VsZi5maWxlbmFtZSIpCisgICAgICAgIGNoaWxkLnNl
bmRlb2YoKQorICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCisgICAg
ICAgIGFzc2VydCAiZGVidWcubWUiIGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkK
KworICAgIGRlZiB0ZXN0X3BkYl91bml0dGVzdF9za2lwKHNlbGYsIHRlc3RkaXIpOgorICAgICAg
ICAiIiJUZXN0IGZvciBpc3N1ZSAjMjEzNyIiIgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAg
ICAgICAgICBAdW5pdHRlc3Quc2tpcElmKFRydWUsICdTa2lwcGluZyBhbHNvIHdpdGggcGRiIGFj
dGl2ZScpCisgICAgICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICAgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydCAwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRp
ci5zcGF3bl9weXRlc3QoIi1ycyAtLXBkYiAlcyIgJSBwMSkKKyAgICAgICAgY2hpbGQuZXhwZWN0
KCJTa2lwcGluZyBhbHNvIHdpdGggcGRiIGFjdGl2ZSIpCisgICAgICAgIGNoaWxkLmV4cGVjdF9l
eGFjdCgiPSAxIHNraXBwZWQgaW4iKQorICAgICAgICBjaGlsZC5zZW5kZW9mKCkKKyAgICAgICAg
c2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9wcmludF9jYXB0dXJlZF9zdGRv
dXRfYW5kX3N0ZGVycihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKKyAgICAg
ICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgi
Z2V0XFx4MjByZWt0IikKKyAgICAgICAgICAgICAgICBwcmludCgiZ2V0XFx4MjByZWt0IikKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKworICAgICAgICAgICAgZGVmIHRlc3Rfbm90X2Nh
bGxlZF9kdWVfdG9fcXVpdCgpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisg
ICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMi
ICUgcDEpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiY2FwdHVyZWQgc3Rkb3V0IikKKyAgICAgICAg
Y2hpbGQuZXhwZWN0KCJnZXQgcmVrdCIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiY2FwdHVyZWQg
c3RkZXJyIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJnZXQgcmVrdCIpCisgICAgICAgIGNoaWxk
LmV4cGVjdCgidHJhY2ViYWNrIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJkZWYgdGVzdF8xIikK
KyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBjaGlsZC5zZW5kZW9mKCkKKyAg
ICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQg
IkV4aXQ6IFF1aXR0aW5nIGRlYnVnZ2VyIiBpbiByZXN0CisgICAgICAgIGFzc2VydCAiPSAxIGZh
aWxlZCBpbiIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgImRlZiB0ZXN0XzEiIG5vdCBpbiByZXN0
CisgICAgICAgIGFzc2VydCAiZ2V0IHJla3QiIG5vdCBpbiByZXN0CisgICAgICAgIHNlbGYuZmx1
c2goY2hpbGQpCisKKyAgICBkZWYgdGVzdF9wZGJfZG9udF9wcmludF9lbXB0eV9jYXB0dXJlZF9z
dGRvdXRfYW5kX3N0ZGVycihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMiICUgcDEpCisgICAgICAg
IGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgb3V0cHV0ID0gY2hpbGQuYmVmb3JlLmRlY29k
ZSgidXRmOCIpCisgICAgICAgIGNoaWxkLnNlbmRlb2YoKQorICAgICAgICBhc3NlcnQgImNhcHR1
cmVkIHN0ZG91dCIgbm90IGluIG91dHB1dAorICAgICAgICBhc3NlcnQgImNhcHR1cmVkIHN0ZGVy
ciIgbm90IGluIG91dHB1dAorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJzaG93Y2FwdHVyZSIsIFsiYWxsIiwgIm5vIiwgImxvZyJdKQor
ICAgIGRlZiB0ZXN0X3BkYl9wcmludF9jYXB0dXJlZF9sb2dzKHNlbGYsIHRlc3RkaXIsIHNob3dj
YXB0dXJlKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAi
IiIKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgbG9n
Z2luZworICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybigiZ2V0ICIgKyAicmVrdCIpCisgICAg
ICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAg
IGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3QoCisgICAgICAgICAgICAiLS1zaG93LWNhcHR1
cmU9e30gLS1wZGIge30iLmZvcm1hdChzaG93Y2FwdHVyZSwgcDEpCisgICAgICAgICkKKyAgICAg
ICAgaWYgc2hvd2NhcHR1cmUgaW4gKCJhbGwiLCAibG9nIik6CisgICAgICAgICAgICBjaGlsZC5l
eHBlY3QoImNhcHR1cmVkIGxvZyIpCisgICAgICAgICAgICBjaGlsZC5leHBlY3QoImdldCByZWt0
IikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBjaGlsZC5zZW5kZW9mKCkK
KyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBhc3Nl
cnQgIjEgZmFpbGVkIiBpbiByZXN0CisgICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCisKKyAgICBk
ZWYgdGVzdF9wZGJfcHJpbnRfY2FwdHVyZWRfbG9nc19ub2xvZ2dpbmcoc2VsZiwgdGVzdGRpcik6
CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAg
ICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImdldCAiICsgInJla3QiKQorICAgICAgICAgICAg
ICAgIGFzc2VydCBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGlsZCA9
IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXNob3ctY2FwdHVyZT1hbGwgLS1wZGIgLXAgbm86bG9n
Z2luZyAlcyIgJSBwMSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJnZXQgcmVrdCIpCisgICAgICAg
IG91dHB1dCA9IGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQgImNh
cHR1cmVkIGxvZyIgbm90IGluIG91dHB1dAorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisg
ICAgICAgIGNoaWxkLnNlbmRlb2YoKQorICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29k
ZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiMSBmYWlsZWQiIGluIHJlc3QKKyAgICAgICAgc2Vs
Zi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9pbnRlcmFjdGlvbl9leGNlcHRpb24o
c2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBkZWYgZ2xv
YmFsZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEo
KToKKyAgICAgICAgICAgICAgICBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIGdsb2JhbGZ1bmMp
CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9w
eXRlc3QoIi0tcGRiICVzIiAlIHAxKQorICAgICAgICBjaGlsZC5leHBlY3QoIi4qZGVmIHRlc3Rf
MSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiLipweXRlc3QucmFpc2VzLipnbG9iYWxmdW5jIikK
KyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBjaGlsZC5zZW5kbGluZSgiZ2xv
YmFsZnVuYyIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiLipmdW5jdGlvbiIpCisgICAgICAgIGNo
aWxkLnNlbmRlb2YoKQorICAgICAgICBjaGlsZC5leHBlY3QoIjEgZmFpbGVkIikKKyAgICAgICAg
c2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9pbnRlcmFjdGlvbl9vbl9jb2xs
ZWN0aW9uX2lzc3VlMTgxKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAg
ICAgICAgICAgeHh4CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVz
dGRpci5zcGF3bl9weXRlc3QoIi0tcGRiICVzIiAlIHAxKQorICAgICAgICAjIGNoaWxkLmV4cGVj
dCgiLippbXBvcnQgcHl0ZXN0LioiKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAg
ICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCIxIGVycm9yIikK
KyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9pbnRlcmFjdGlv
bl9vbl9pbnRlcm5hbF9lcnJvcihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtl
Y29uZnRlc3QoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcnVudGVz
dF9wcm90b2NvbCgpOgorICAgICAgICAgICAgICAgIDAvMAorICAgICAgICAiIiIKKyAgICAgICAg
KQorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfZnVuYygpOiBwYXNz
IikKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMiICUgcDEp
CisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKworICAgICAgICAjIElOVEVSTkFMRVJST1Ig
aXMgb25seSBkaXNwbGF5ZWQgb25jZSB2aWEgdGVybWluYWwgcmVwb3J0ZXIuCisgICAgICAgIGFz
c2VydCAoCisgICAgICAgICAgICBsZW4oCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICB4CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGNoaWxkLmJlZm9yZS5kZWNv
ZGUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCJJ
TlRFUk5BTEVSUk9SPiBUcmFjZWJhY2siKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgID09IDEKKyAgICAgICAgKQorCisgICAgICAgIGNoaWxkLnNlbmRlb2Yo
KQorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX3ByZXZlbnRf
Q29uZnRlc3RJbXBvcnRGYWlsdXJlX2hpZGluZ19leGNlcHRpb24oc2VsZiwgdGVzdGRpcik6Cisg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfZnVuYygpOiBwYXNzIikKKyAgICAg
ICAgc3ViX2RpciA9IHRlc3RkaXIudG1wZGlyLmpvaW4oIm5zIikuZW5zdXJlX2RpcigpCisgICAg
ICAgIHN1Yl9kaXIuam9pbigiY29uZnRlc3QiKS5uZXcoZXh0PSIucHkiKS53cml0ZSgiaW1wb3J0
IHVua25vd24iKQorICAgICAgICBzdWJfZGlyLmpvaW4oInRlc3RfZmlsZSIpLm5ldyhleHQ9Ii5w
eSIpLndyaXRlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQorCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoIi0tcGRiIiwgIi4iKQorICAgICAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyItPiBpbXBvcnQgdW5rbm93biJdKQorCisgICAgZGVmIHRl
c3RfcGRiX2ludGVyYWN0aW9uX2NhcHR1cmluZ19zaW1wbGUoc2VsZiwgdGVzdGRpcik6CisgICAg
ICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAg
ICAgaSA9IDAKKyAgICAgICAgICAgICAgICBwcmludCgiaGVsbG8xNyIpCisgICAgICAgICAgICAg
ICAgcHl0ZXN0LnNldF90cmFjZSgpCisgICAgICAgICAgICAgICAgaSA9PSAxCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0
ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpKQorICAgICAgICBjaGlsZC5leHBlY3QociJ0ZXN0
XzFcKFwpIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJpID09IDEiKQorICAgICAgICBjaGlsZC5l
eHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgcmVzdCA9
IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgYXNzZXJ0ICJBc3NlcnRpb25F
cnJvciIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0CisgICAgICAg
IGFzc2VydCAiZGVmIHRlc3RfMSIgaW4gcmVzdAorICAgICAgICBhc3NlcnQgImhlbGxvMTciIGlu
IHJlc3QgICMgb3V0IGlzIGNhcHR1cmVkCisgICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCisKKyAg
ICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlX2t3YXJncyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBp
ID0gMAorICAgICAgICAgICAgICAgIHByaW50KCJoZWxsbzE3IikKKyAgICAgICAgICAgICAgICBw
eXRlc3Quc2V0X3RyYWNlKGhlYWRlcj0iPT0gbXlfaGVhZGVyID09IikKKyAgICAgICAgICAgICAg
ICB4ID0gMworICAgICAgICAgICAgICAgIGFzc2VydCAwCisgICAgICAgICIiIgorICAgICAgICAp
CisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKKyAgICAgICAg
Y2hpbGQuZXhwZWN0KCI9PSBteV9oZWFkZXIgPT0iKQorICAgICAgICBhc3NlcnQgIlBEQiBzZXRf
dHJhY2UiIG5vdCBpbiBjaGlsZC5iZWZvcmUuZGVjb2RlKCkKKyAgICAgICAgY2hpbGQuZXhwZWN0
KCJQZGIiKQorICAgICAgICBjaGlsZC5zZW5kbGluZSgiYyIpCisgICAgICAgIHJlc3QgPSBjaGls
ZC5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGFzc2VydCAiMSBmYWlsZWQiIGluIHJl
c3QKKyAgICAgICAgYXNzZXJ0ICJkZWYgdGVzdF8xIiBpbiByZXN0CisgICAgICAgIGFzc2VydCAi
aGVsbG8xNyIgaW4gcmVzdCAgIyBvdXQgaXMgY2FwdHVyZWQKKyAgICAgICAgc2VsZi5mbHVzaChj
aGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl9zZXRfdHJhY2VfaW50ZXJjZXB0aW9uKHNlbGYsIHRl
c3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgaW1wb3J0IHBkYgorICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAg
ICAgICAgICAgICAgIHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAg
ICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCisgICAgICAgIGNoaWxk
LmV4cGVjdCgidGVzdF8xIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBj
aGlsZC5zZW5kbGluZSgicSIpCisgICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1
dGY4IikKKyAgICAgICAgYXNzZXJ0ICJubyB0ZXN0cyByYW4iIGluIHJlc3QKKyAgICAgICAgYXNz
ZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUgb3V0cHV0IiBub3QgaW4gcmVzdAorICAgICAg
ICBhc3NlcnQgIkJkYlF1aXQiIG5vdCBpbiByZXN0CisgICAgICAgIHNlbGYuZmx1c2goY2hpbGQp
CisKKyAgICBkZWYgdGVzdF9wZGJfYW5kX2NhcHN5cyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoY2Fwc3lzKToKKyAgICAgICAgICAg
ICAgICBwcmludCgiaGVsbG8xIikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkK
KyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5
dGVzdChzdHIocDEpKQorICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMSIpCisgICAgICAgIGNo
aWxkLnNlbmQoImNhcHN5cy5yZWFkb3V0ZXJyKClcbiIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgi
aGVsbG8xIikKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAgIGNoaWxkLnJlYWQoKQor
ICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX3dpdGhfY2FwbG9n
X29uX3BkYl9pbnZvY2F0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfMShjYXBz
eXMsIGNhcGxvZyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICAgICAgICAg
ICAgICBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykud2FybmluZygic29tZV93YXJuaW5nIikK
KyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAg
ICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBzdHIocDEpKQorICAg
ICAgICBjaGlsZC5zZW5kKCJjYXBsb2cucmVjb3JkX3R1cGxlc1xuIikKKyAgICAgICAgY2hpbGQu
ZXhwZWN0X2V4YWN0KAorICAgICAgICAgICAgIlsoJ3Rlc3RfcGRiX3dpdGhfY2FwbG9nX29uX3Bk
Yl9pbnZvY2F0aW9uJywgMzAsICdzb21lX3dhcm5pbmcnKV0iCisgICAgICAgICkKKyAgICAgICAg
Y2hpbGQuc2VuZGVvZigpCisgICAgICAgIGNoaWxkLnJlYWQoKQorICAgICAgICBzZWxmLmZsdXNo
KGNoaWxkKQorCisgICAgZGVmIHRlc3Rfc2V0X3RyYWNlX2NhcHR1cmluZ19hZnRlcndhcmRzKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHBkYgorICAgICAgICAgICAgZGVmIHRlc3RfMSgp
OgorICAgICAgICAgICAgICAgIHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgICAgZGVmIHRlc3Rf
MigpOgorICAgICAgICAgICAgICAgIHByaW50KCJoZWxsbyIpCisgICAgICAgICAgICAgICAgYXNz
ZXJ0IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNw
YXduX3B5dGVzdChzdHIocDEpKQorICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMSIpCisgICAg
ICAgIGNoaWxkLnNlbmQoImNcbiIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8yIikKKyAg
ICAgICAgY2hpbGQuZXhwZWN0KCJDYXB0dXJlZCIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiaGVs
bG8iKQorICAgICAgICBjaGlsZC5zZW5kZW9mKCkKKyAgICAgICAgY2hpbGQucmVhZCgpCisgICAg
ICAgIHNlbGYuZmx1c2goY2hpbGQpCisKKyAgICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25fZG9j
dGVzdChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBmdW5jdGlvbl8xKCk6CisgICAgICAgICAg
ICAgICAgJycnCisgICAgICAgICAgICAgICAgPj4+IGkgPSAwCisgICAgICAgICAgICAgICAgPj4+
IGFzc2VydCBpID09IDEKKyAgICAgICAgICAgICAgICAnJycKKyAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1kb2N0ZXN0LW1vZHVs
ZXMgLS1wZGIgJXMiICUgcDEpCisgICAgICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKworICAgICAg
ICBhc3NlcnQgIlVORVhQRUNURUQgRVhDRVBUSU9OOiBBc3NlcnRpb25FcnJvcigpIiBpbiBjaGls
ZC5iZWZvcmUuZGVjb2RlKCJ1dGY4IikKKworICAgICAgICBjaGlsZC5zZW5kbGluZSgiJ2k9JWku
JyAlIGkiKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGFzc2VydCAiXHJc
bidpPTAuJ1xyXG4iIGluIGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQorCisgICAgICAgIGNo
aWxkLnNlbmRlb2YoKQorICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIp
CisgICAgICAgIGFzc2VydCAiISBfcHl0ZXN0Lm91dGNvbWVzLkV4aXQ6IFF1aXR0aW5nIGRlYnVn
Z2VyICEiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICJCZGJRdWl0IiBub3QgaW4gcmVzdAorICAg
ICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0CisgICAgICAgIHNlbGYuZmx1c2goY2hpbGQp
CisKKyAgICBkZWYgdGVzdF9kb2N0ZXN0X3NldF90cmFjZV9xdWl0KHNlbGYsIHRlc3RkaXIpOgor
ICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgZGVmIGZ1bmN0aW9uXzEoKToKKyAgICAgICAgICAgICAgICAnJycKKyAgICAgICAgICAg
ICAgICA+Pj4gX19pbXBvcnRfXygncGRiJykuc2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICAn
JycKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgIyBOT1RFOiBkb2VzIG5vdCB1c2Ug
cHl0ZXN0LnNldF90cmFjZSwgYnV0IFB5dGhvbidzIHBhdGNoZWQgcGRiLAorICAgICAgICAjICAg
ICAgIHRoZXJlZm9yZSAiLXMiIGlzIHJlcXVpcmVkLgorICAgICAgICBjaGlsZCA9IHRlc3RkaXIu
c3Bhd25fcHl0ZXN0KCItLWRvY3Rlc3QtbW9kdWxlcyAtLXBkYiAtcyAlcyIgJSBwMSkKKyAgICAg
ICAgY2hpbGQuZXhwZWN0KCJQZGIiKQorICAgICAgICBjaGlsZC5zZW5kbGluZSgicSIpCisgICAg
ICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKworICAgICAgICBhc3NlcnQg
IiEgX3B5dGVzdC5vdXRjb21lcy5FeGl0OiBRdWl0dGluZyBkZWJ1Z2dlciAhIiBpbiByZXN0Cisg
ICAgICAgIGFzc2VydCAiPSBubyB0ZXN0cyByYW4gaW4iIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0
ICJCZGJRdWl0IiBub3QgaW4gcmVzdAorICAgICAgICBhc3NlcnQgIlVORVhQRUNURUQgRVhDRVBU
SU9OIiBub3QgaW4gcmVzdAorCisgICAgZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX2NhcHR1cmlu
Z190d2ljZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAg
IGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAgIHBy
aW50KCJoZWxsbzE3IikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKKyAgICAg
ICAgICAgICAgICB4ID0gMworICAgICAgICAgICAgICAgIHByaW50KCJoZWxsbzE4IikKKyAgICAg
ICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICB4ID0gNAorICAg
ICAgICAgICAgICAgIGFzc2VydCAwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNo
aWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0
KHIiUERCIHNldF90cmFjZSBcKElPLWNhcHR1cmluZyB0dXJuZWQgb2ZmXCkiKQorICAgICAgICBj
aGlsZC5leHBlY3QoInRlc3RfMSIpCisgICAgICAgIGNoaWxkLmV4cGVjdCgieCA9IDMiKQorICAg
ICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAg
ICAgICAgY2hpbGQuZXhwZWN0KHIiUERCIGNvbnRpbnVlIFwoSU8tY2FwdHVyaW5nIHJlc3VtZWRc
KSIpCisgICAgICAgIGNoaWxkLmV4cGVjdChyIlBEQiBzZXRfdHJhY2UgXChJTy1jYXB0dXJpbmcg
dHVybmVkIG9mZlwpIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ4ID0gNCIpCisgICAgICAgIGNo
aWxkLmV4cGVjdCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICBj
aGlsZC5leHBlY3QoIl8gdGVzdF8xIF8iKQorICAgICAgICBjaGlsZC5leHBlY3QoImRlZiB0ZXN0
XzEiKQorICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCisgICAgICAg
IGFzc2VydCAiQ2FwdHVyZWQgc3Rkb3V0IGNhbGwiIGluIHJlc3QKKyAgICAgICAgYXNzZXJ0ICJo
ZWxsbzE3IiBpbiByZXN0ICAjIG91dCBpcyBjYXB0dXJlZAorICAgICAgICBhc3NlcnQgImhlbGxv
MTgiIGluIHJlc3QgICMgb3V0IGlzIGNhcHR1cmVkCisgICAgICAgIGFzc2VydCAiMSBmYWlsZWQi
IGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl93
aXRoX2luamVjdGVkX2RvX2RlYnVnKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJTaW11bGF0
ZXMgcGRicHAsIHdoaWNoIGluamVjdHMgUGRiIGludG8gZG9fZGVidWcsIGFuZCB1c2VzCisgICAg
ICAgIHNlbGYuX19jbGFzc19fIGluIGRvX2NvbnRpbnVlLgorICAgICAgICAiIiIKKyAgICAgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICBteXRlc3Q9IiIiCisgICAgICAg
ICAgICBpbXBvcnQgcGRiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAg
IGNvdW50X2NvbnRpbnVlID0gMAorCisgICAgICAgICAgICBjbGFzcyBDdXN0b21QZGIocGRiLlBk
Yiwgb2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZG9fZGVidWcoc2VsZiwgYXJnKToKKyAg
ICAgICAgICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgICAgICAgICBpbXBvcnQg
dHlwZXMKKworICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19mdW5jID0gcGRiLlBkYi5kb19k
ZWJ1ZworCisgICAgICAgICAgICAgICAgICAgIG5ld2dsb2JhbHMgPSBkb19kZWJ1Z19mdW5jLl9f
Z2xvYmFsc19fLmNvcHkoKQorICAgICAgICAgICAgICAgICAgICBuZXdnbG9iYWxzWydQZGInXSA9
IHNlbGYuX19jbGFzc19fCisgICAgICAgICAgICAgICAgICAgIG9yaWdfZG9fZGVidWcgPSB0eXBl
cy5GdW5jdGlvblR5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19mdW5jLl9f
Y29kZV9fLCBuZXdnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfZnVu
Yy5fX25hbWVfXywgZG9fZGVidWdfZnVuYy5fX2RlZmF1bHRzX18sCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdfZG9fZGVidWcoc2VsZiwgYXJn
KQorICAgICAgICAgICAgICAgIGRvX2RlYnVnLl9fZG9jX18gPSBwZGIuUGRiLmRvX2RlYnVnLl9f
ZG9jX18KKworICAgICAgICAgICAgICAgIGRlZiBkb19jb250aW51ZShzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICBnbG9iYWwgY291bnRfY29udGludWUKKyAgICAg
ICAgICAgICAgICAgICAgY291bnRfY29udGludWUgKz0gMQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3VwZXIoQ3VzdG9tUGRiLCBzZWxmKS5kb19jb250aW51ZSgqYXJncywgKiprd2FyZ3Mp
CisKKyAgICAgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBwcmludCgicHJpbnRf
ZnJvbV9mb28iKQorCisgICAgICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAg
aSA9IDAKKyAgICAgICAgICAgICAgICBwcmludCgiaGVsbG8xNyIpCisgICAgICAgICAgICAgICAg
cHl0ZXN0LnNldF90cmFjZSgpCisgICAgICAgICAgICAgICAgeCA9IDMKKyAgICAgICAgICAgICAg
ICBwcmludCgiaGVsbG8xOCIpCisKKyAgICAgICAgICAgICAgICBhc3NlcnQgY291bnRfY29udGlu
dWUgPT0gMiwgInVuZXhwZWN0ZWRfZmFpbHVyZTogJWQgIT0gMiIgJSBjb3VudF9jb250aW51ZQor
ICAgICAgICAgICAgICAgIHB5dGVzdC5mYWlsKCJleHBlY3RlZF9mYWlsdXJlIikKKyAgICAgICAg
IiIiCisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1w
ZGJjbHM9bXl0ZXN0OkN1c3RvbVBkYiAlcyIgJSBzdHIocDEpKQorICAgICAgICBjaGlsZC5leHBl
Y3QociJQREIgc2V0X3RyYWNlIFwoSU8tY2FwdHVyaW5nIHR1cm5lZCBvZmZcKSIpCisgICAgICAg
IGNoaWxkLmV4cGVjdChyIlxuXChQZGIiKQorICAgICAgICBjaGlsZC5zZW5kbGluZSgiZGVidWcg
Zm9vKCkiKQorICAgICAgICBjaGlsZC5leHBlY3QoIkVOVEVSSU5HIFJFQ1VSU0lWRSBERUJVR0dF
UiIpCisgICAgICAgIGNoaWxkLmV4cGVjdChyIlxuXChcKFBkYiIpCisgICAgICAgIGNoaWxkLnNl
bmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJMRUFWSU5HIFJFQ1VSU0lWRSBERUJV
R0dFUiIpCisgICAgICAgIGFzc2VydCBiIlBEQiBjb250aW51ZSIgbm90IGluIGNoaWxkLmJlZm9y
ZQorICAgICAgICAjIE5vIGV4dHJhIG5ld2xpbmUuCisgICAgICAgIGFzc2VydCBjaGlsZC5iZWZv
cmUuZW5kc3dpdGgoYiJjXHJcbnByaW50X2Zyb21fZm9vXHJcbiIpCisKKyAgICAgICAgIyBzZXRf
ZGVidWcgc2hvdWxkIG5vdCByYWlzZSBvdXRjb21lcy4gRXhpdCwgaWYgdXNlZCByZWN1cnNpdmVs
eS4KKyAgICAgICAgY2hpbGQuc2VuZGxpbmUoImRlYnVnIDQyIikKKyAgICAgICAgY2hpbGQuc2Vu
ZGxpbmUoInEiKQorICAgICAgICBjaGlsZC5leHBlY3QoIkxFQVZJTkcgUkVDVVJTSVZFIERFQlVH
R0VSIikKKyAgICAgICAgYXNzZXJ0IGIiRU5URVJJTkcgUkVDVVJTSVZFIERFQlVHR0VSIiBpbiBj
aGlsZC5iZWZvcmUKKyAgICAgICAgYXNzZXJ0IGIiUXVpdHRpbmcgZGVidWdnZXIiIG5vdCBpbiBj
aGlsZC5iZWZvcmUKKworICAgICAgICBjaGlsZC5zZW5kbGluZSgiYyIpCisgICAgICAgIGNoaWxk
LmV4cGVjdChyIlBEQiBjb250aW51ZSBcKElPLWNhcHR1cmluZyByZXN1bWVkXCkiKQorICAgICAg
ICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiaGVs
bG8xNyIgaW4gcmVzdCAgIyBvdXQgaXMgY2FwdHVyZWQKKyAgICAgICAgYXNzZXJ0ICJoZWxsbzE4
IiBpbiByZXN0ICAjIG91dCBpcyBjYXB0dXJlZAorICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBp
biByZXN0CisgICAgICAgIGFzc2VydCAiRmFpbGVkOiBleHBlY3RlZF9mYWlsdXJlIiBpbiByZXN0
CisgICAgICAgIGFzc2VydCAiQXNzZXJ0aW9uRXJyb3I6IHVuZXhwZWN0ZWRfZmFpbHVyZSIgbm90
IGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0ZXN0X3BkYl93
aXRob3V0X2NhcHR1cmUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAg
ICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgp
CisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9w
eXRlc3QoIi1zICVzIiAlIHAxKQorICAgICAgICBjaGlsZC5leHBlY3QociI+Pj4gUERCIHNldF90
cmFjZSA+Pj4iKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNl
bmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KHIiPj4+IFBEQiBjb250aW51ZSA+Pj4i
KQorICAgICAgICBjaGlsZC5leHBlY3QoIjEgcGFzc2VkIikKKyAgICAgICAgc2VsZi5mbHVzaChj
aGlsZCkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiY2FwdHVyZV9hcmciLCAoIiIs
ICItcyIsICItcCBubzpjYXB0dXJlIikpCisgICAgZGVmIHRlc3RfcGRiX2NvbnRpbnVlX3dpdGhf
cmVjdXJzaXZlX2RlYnVnKHNlbGYsIGNhcHR1cmVfYXJnLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIi
RnVsbCBjb3ZlcmFnZSBmb3IgZG9fZGVidWcgd2l0aG91dCBjYXB0dXJpbmcuCisKKyAgICAgICAg
VGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGVzdF9wZGJfaW50ZXJhY3Rpb25fY29udGludWVfcmVj
dXJzaXZlIGluIGdlbmVyYWwsCisgICAgICAgIGJ1dCBtb2NrcyBvdXQgYGBwZGIuc2V0X3RyYWNl
YGAgZm9yIHByb3ZpZGluZyBtb3JlIGNvdmVyYWdlLgorICAgICAgICAiIiIKKyAgICAgICAgcDEg
PSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBpbnB1dCA9IHJhd19pbnB1dAorICAgICAgICAgICAgZXhjZXB0IE5h
bWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBzZXRfdHJh
Y2UoKToKKyAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKCdwZGInKS5zZXRfdHJhY2UoKQorCisg
ICAgICAgICAgICBkZWYgdGVzdF8xKG1vbmtleXBhdGNoKToKKyAgICAgICAgICAgICAgICBpbXBv
cnQgX3B5dGVzdC5kZWJ1Z2dpbmcKKworICAgICAgICAgICAgICAgIGNsYXNzIHB5dGVzdFBEQlRl
c3QoX3B5dGVzdC5kZWJ1Z2dpbmcucHl0ZXN0UERCKToKKyAgICAgICAgICAgICAgICAgICAgQGNs
YXNzbWV0aG9kCisgICAgICAgICAgICAgICAgICAgIGRlZiBzZXRfdHJhY2UoY2xzLCAqYXJncywg
Kiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJbml0IFB5dGVzdFBkYldyYXBw
ZXIgdG8gaGFuZGxlIGNhcHR1cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIF9wZGIgPSBj
bHMuX2luaXRfcGRiKCJzZXRfdHJhY2UiLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgTW9jayBvdXQgcGRiLlBkYi5kb19jb250aW51ZS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGltcG9ydCBwZGIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBkYi5QZGIu
ZG9fY29udGludWUgPSBsYW1iZGEgc2VsZiwgYXJnOiBOb25lCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50KCI9PT0iICsgIiBTRVRfVFJBQ0UgPT09IikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydCBpbnB1dCgpID09ICJkZWJ1ZyBzZXRfdHJhY2UoKSIKKworICAgICAgICAg
ICAgICAgICAgICAgICAgIyBTaW11bGF0ZSBQeXRlc3RQZGJXcmFwcGVyLmRvX2RlYnVnCisgICAg
ICAgICAgICAgICAgICAgICAgICBjbHMuX3JlY3Vyc2l2ZV9kZWJ1ZyArPSAxCisgICAgICAgICAg
ICAgICAgICAgICAgICBwcmludCgiRU5URVJJTkcgUkVDVVJTSVZFIERFQlVHR0VSIikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50KCI9PT0iICsgIiBTRVRfVFJBQ0VfMiA9PT0iKQorCisg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgaW5wdXQoKSA9PSAiYyIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF9wZGIuZG9fY29udGludWUoIiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludCgiPT09IiArICIgU0VUX1RSQUNFXzMgPT09IikKKworICAgICAgICAgICAgICAgICAg
ICAgICAgIyBTaW11bGF0ZSBQeXRlc3RQZGJXcmFwcGVyLmRvX2RlYnVnCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCgiTEVBVklORyBSRUNVUlNJVkUgREVCVUdHRVIiKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY2xzLl9yZWN1cnNpdmVfZGVidWcgLT0gMQorCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCgiPT09IiArICIgU0VUX1RSQUNFXzQgPT09IikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBpbnB1dCgpID09ICJjIgorICAgICAgICAgICAgICAgICAgICAg
ICAgX3BkYi5kb19jb250aW51ZSgiIikKKworICAgICAgICAgICAgICAgICAgICBkZWYgZG9fY29u
dGludWUoc2VsZiwgYXJnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCI9PT0gZG9f
Y29udGludWUiKQorCisgICAgICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihfcHl0ZXN0
LmRlYnVnZ2luZywgInB5dGVzdFBEQiIsIHB5dGVzdFBEQlRlc3QpCisKKyAgICAgICAgICAgICAg
ICBpbXBvcnQgcGRiCisgICAgICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihwZGIsICJz
ZXRfdHJhY2UiLCBweXRlc3RQREJUZXN0LnNldF90cmFjZSkKKworICAgICAgICAgICAgICAgIHNl
dF90cmFjZSgpCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRp
ci5zcGF3bl9weXRlc3QoIi0tdGI9c2hvcnQge30ge30iLmZvcm1hdChwMSwgY2FwdHVyZV9hcmcp
KQorICAgICAgICBjaGlsZC5leHBlY3QoIj09PSBTRVRfVFJBQ0UgPT09IikKKyAgICAgICAgYmVm
b3JlID0gY2hpbGQuYmVmb3JlLmRlY29kZSgidXRmOCIpCisgICAgICAgIGlmIG5vdCBjYXB0dXJl
X2FyZzoKKyAgICAgICAgICAgIGFzc2VydCAiPj4+IFBEQiBzZXRfdHJhY2UgKElPLWNhcHR1cmlu
ZyB0dXJuZWQgb2ZmKSA+Pj4iIGluIGJlZm9yZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
YXNzZXJ0ICI+Pj4gUERCIHNldF90cmFjZSA+Pj4iIGluIGJlZm9yZQorICAgICAgICBjaGlsZC5z
ZW5kbGluZSgiZGVidWcgc2V0X3RyYWNlKCkiKQorICAgICAgICBjaGlsZC5leHBlY3QoIj09PSBT
RVRfVFJBQ0VfMiA9PT0iKQorICAgICAgICBiZWZvcmUgPSBjaGlsZC5iZWZvcmUuZGVjb2RlKCJ1
dGY4IikKKyAgICAgICAgYXNzZXJ0ICJcclxuRU5URVJJTkcgUkVDVVJTSVZFIERFQlVHR0VSXHJc
biIgaW4gYmVmb3JlCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQu
ZXhwZWN0KCI9PT0gU0VUX1RSQUNFXzMgPT09IikKKworICAgICAgICAjIE5vIGNvbnRpbnVlIG1l
c3NhZ2Ugd2l0aCByZWN1cnNpdmUgZGVidWdnaW5nLgorICAgICAgICBiZWZvcmUgPSBjaGlsZC5i
ZWZvcmUuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICI+Pj4gUERCIGNvbnRpbnVlICIg
bm90IGluIGJlZm9yZQorCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgY2hp
bGQuZXhwZWN0KCI9PT0gU0VUX1RSQUNFXzQgPT09IikKKyAgICAgICAgYmVmb3JlID0gY2hpbGQu
YmVmb3JlLmRlY29kZSgidXRmOCIpCisgICAgICAgIGFzc2VydCAiXHJcbkxFQVZJTkcgUkVDVVJT
SVZFIERFQlVHR0VSXHJcbiIgaW4gYmVmb3JlCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikK
KyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBpZiBu
b3QgY2FwdHVyZV9hcmc6CisgICAgICAgICAgICBhc3NlcnQgIj4gUERCIGNvbnRpbnVlIChJTy1j
YXB0dXJpbmcgcmVzdW1lZCkgPiIgaW4gcmVzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
YXNzZXJ0ICI+IFBEQiBjb250aW51ZSA+IiBpbiByZXN0CisgICAgICAgIGFzc2VydCAiPSAxIHBh
c3NlZCBpbiIgaW4gcmVzdAorCisgICAgZGVmIHRlc3RfcGRiX3VzZWRfb3V0c2lkZV90ZXN0KHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgcHl0ZXN0LnNl
dF90cmFjZSgpCisgICAgICAgICAgICB4ID0gNQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAg
ICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd24oInt9IHt9Ii5mb3JtYXQoc3lzLmV4ZWN1dGFibGUs
IHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ4ID0gNSIpCisgICAgICAgIGNoaWxkLmV4cGVj
dCgiUGRiIikKKyAgICAgICAgY2hpbGQuc2VuZGVvZigpCisgICAgICAgIHNlbGYuZmx1c2goY2hp
bGQpCisKKyAgICBkZWYgdGVzdF9wZGJfdXNlZF9pbl9nZW5lcmF0ZV90ZXN0cyhzZWxmLCB0ZXN0
ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiBweXRlc3RfZ2VuZXJh
dGVfdGVzdHMobWV0YWZ1bmMpOgorICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQor
ICAgICAgICAgICAgICAgIHggPSA1CisgICAgICAgICAgICBkZWYgdGVzdF9mb28oYSk6CisgICAg
ICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBjaGlsZCA9
IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCisgICAgICAgIGNoaWxkLmV4cGVjdCgieCA9
IDUiKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRlb2Yo
KQorICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQorCisgICAgZGVmIHRlc3RfcGRiX2NvbGxlY3Rp
b25fZmFpbHVyZV9pc19zaG93bihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgcDEgPSB0ZXN0ZGly
Lm1ha2VweWZpbGUoInh4eCIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1
YnByb2Nlc3MoIi0tcGRiIiwgcDEpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKKyAgICAgICAgICAgIFsiRSAgIE5hbWVFcnJvcjogKnh4eCoiLCAiKiEgKkV4aXQ6IFF1aXR0
aW5nIGRlYnVnZ2VyICEqIl0gICMgZHVlIHRvIEVPRgorICAgICAgICApCisKKyAgICBAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoInBvc3RfbW9ydGVtIiwgKEZhbHNlLCBUcnVlKSkKKyAgICBkZWYg
dGVzdF9lbnRlcl9sZWF2ZV9wZGJfaG9va3NfYXJlX2NhbGxlZChzZWxmLCBwb3N0X21vcnRlbSwg
dGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIi
CisgICAgICAgICAgICBteXBkYiA9IE5vbmUKKworICAgICAgICAgICAgZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKToKKyAgICAgICAgICAgICAgICBjb25maWcudGVzdGluZ192ZXJpZmljYXRp
b24gPSAnY29uZmlndXJlZCcKKworICAgICAgICAgICAgZGVmIHB5dGVzdF9lbnRlcl9wZGIoY29u
ZmlnLCBwZGIpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjb25maWcudGVzdGluZ192ZXJpZmlj
YXRpb24gPT0gJ2NvbmZpZ3VyZWQnCisgICAgICAgICAgICAgICAgcHJpbnQoJ2VudGVyX3BkYl9o
b29rJykKKworICAgICAgICAgICAgICAgIGdsb2JhbCBteXBkYgorICAgICAgICAgICAgICAgIG15
cGRiID0gcGRiCisgICAgICAgICAgICAgICAgbXlwZGIuc2V0X2F0dHJpYnV0ZSA9ICJiYXIiCisK
KyAgICAgICAgICAgIGRlZiBweXRlc3RfbGVhdmVfcGRiKGNvbmZpZywgcGRiKToKKyAgICAgICAg
ICAgICAgICBhc3NlcnQgY29uZmlnLnRlc3RpbmdfdmVyaWZpY2F0aW9uID09ICdjb25maWd1cmVk
JworICAgICAgICAgICAgICAgIHByaW50KCdsZWF2ZV9wZGJfaG9vaycpCisKKyAgICAgICAgICAg
ICAgICBnbG9iYWwgbXlwZGIKKyAgICAgICAgICAgICAgICBhc3NlcnQgbXlwZGIgaXMgcGRiCisg
ICAgICAgICAgICAgICAgYXNzZXJ0IG15cGRiLnNldF9hdHRyaWJ1dGUgPT0gImJhciIKKyAgICAg
ICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgZGVm
IHRlc3Rfc2V0X3RyYWNlKCk6CisgICAgICAgICAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgpCisg
ICAgICAgICAgICAgICAgYXNzZXJ0IDAKKworICAgICAgICAgICAgZGVmIHRlc3RfcG9zdF9tb3J0
ZW0oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIKKyAgICAgICAgKQor
ICAgICAgICBpZiBwb3N0X21vcnRlbToKKyAgICAgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3
bl9weXRlc3Qoc3RyKHAxKSArICIgLS1wZGIgLXMgLWsgdGVzdF9wb3N0X21vcnRlbSIpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihw
MSkgKyAiIC1rIHRlc3Rfc2V0X3RyYWNlIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJlbnRlcl9w
ZGJfaG9vayIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgaWYgcG9zdF9t
b3J0ZW06CisgICAgICAgICAgICBjaGlsZC5leHBlY3QociJQREIgY29udGludWUiKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgY2hpbGQuZXhwZWN0KHIiUERCIGNvbnRpbnVlIFwoSU8tY2Fw
dHVyaW5nIHJlc3VtZWRcKSIpCisgICAgICAgICAgICBjaGlsZC5leHBlY3QoIkNhcHR1cmVkIHN0
ZG91dCBjYWxsIikKKyAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQor
ICAgICAgICBhc3NlcnQgImxlYXZlX3BkYl9ob29rIiBpbiByZXN0CisgICAgICAgIGFzc2VydCAi
MSBmYWlsZWQiIGluIHJlc3QKKyAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKKworICAgIGRlZiB0
ZXN0X3BkYl9jdXN0b21fY2xzKHNlbGYsIHRlc3RkaXIsIGN1c3RvbV9wZGJfY2FsbHMpOgorICAg
ICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiIiJ4eHggIiIiKQorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tcGRiIiwgIi0tcGRiY2xzPV9weXRlc3Q6
X0N1c3RvbVBkYiIsIHAxKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
TmFtZUVycm9yKnh4eCoiLCAiKjEgZXJyb3IqIl0pCisgICAgICAgIGFzc2VydCBjdXN0b21fcGRi
X2NhbGxzID09IFsiaW5pdCIsICJyZXNldCIsICJpbnRlcmFjdGlvbiJdCisKKyAgICBkZWYgdGVz
dF9wZGJfY3VzdG9tX2Nsc19pbnZhbGlkKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tcGRiY2xzPWludmFsaWQiKQorICAgICAg
ICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgIio6IGVycm9yOiBhcmd1bWVudCAtLXBkYmNsczogJ2ludmFsaWQnIGlzIG5vdCBpbiB0
aGUgZm9ybWF0ICdtb2RuYW1lOmNsYXNzbmFtZSciCisgICAgICAgICAgICBdCisgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X3BkYl92YWxpZGF0ZV91c2VwZGJfY2xzKHNlbGYpOgorICAgICAgICBh
c3NlcnQgX3ZhbGlkYXRlX3VzZXBkYl9jbHMoIm9zLnBhdGg6ZGlybmFtZS5fX25hbWVfXyIpID09
ICgKKyAgICAgICAgICAgICJvcy5wYXRoIiwKKyAgICAgICAgICAgICJkaXJuYW1lLl9fbmFtZV9f
IiwKKyAgICAgICAgKQorCisgICAgICAgIGFzc2VydCBfdmFsaWRhdGVfdXNlcGRiX2NscygicGRi
OkRvZXNOb3RFeGlzdCIpID09ICgicGRiIiwgIkRvZXNOb3RFeGlzdCIpCisKKyAgICBkZWYgdGVz
dF9wZGJfY3VzdG9tX2Nsc193aXRob3V0X3BkYihzZWxmLCB0ZXN0ZGlyLCBjdXN0b21fcGRiX2Nh
bGxzKToKKyAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoIiIieHh4ICIiIikKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLXBkYmNscz1fcHl0ZXN0
Ol9DdXN0b21QZGIiLCBwMSkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
Kk5hbWVFcnJvcip4eHgqIiwgIioxIGVycm9yKiJdKQorICAgICAgICBhc3NlcnQgY3VzdG9tX3Bk
Yl9jYWxscyA9PSBbXQorCisgICAgZGVmIHRlc3RfcGRiX2N1c3RvbV9jbHNfd2l0aF9zZXRfdHJh
Y2Uoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICAgICBjdXN0b21fcGRiPSIiIgorICAgICAgICAgICAgY2xhc3MgQ3VzdG9t
UGRiKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgIHNraXAgPSBrd2FyZ3MucG9wKCJza2lwIikK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNraXAgPT0gWyJmb28uKiJdCisgICAgICAgICAg
ICAgICAgICAgIHByaW50KCJfX2luaXRfXyIpCisgICAgICAgICAgICAgICAgICAgIHN1cGVyKEN1
c3RvbVBkYiwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgICAgICAg
ICAgZGVmIHNldF90cmFjZSgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICBw
cmludCgnY3VzdG9tIHNldF90cmFjZT4nKQorICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAgICAgICAg
ICAgICAgcHl0ZXN0LnNldF90cmFjZShza2lwPVsnZm9vLionXSkKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRIT05QQVRIIiwgc3RyKHRlc3Rk
aXIudG1wZGlyKSkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGJj
bHM9Y3VzdG9tX3BkYjpDdXN0b21QZGIgJXMiICUgc3RyKHAxKSkKKworICAgICAgICBjaGlsZC5l
eHBlY3QoIl9faW5pdF9fIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJjdXN0b20gc2V0X3RyYWNl
PiIpCisgICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCisKKworY2xhc3MgVGVzdERlYnVnZ2luZ0Jy
ZWFrcG9pbnRzOgorICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2JyZWFrcG9pbnRfbW9kdWxlX2dsb2Jh
bChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBzdXBwb3J0cyBicmVha3Bv
aW50IGdsb2JhbCBtYXJrcyBvbiBQeXRob24gMy43KyBhbmQgbm90IG9uCisgICAgICAgIENQeXRo
b24gMy41LCAyLjcKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0g
KDMsIDcpOgorICAgICAgICAgICAgYXNzZXJ0IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiBp
cyBUcnVlCisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMyBhbmQgc3lzLnZl
cnNpb25faW5mby5taW5vciA9PSA1OgorICAgICAgICAgICAgYXNzZXJ0IFNVUFBPUlRTX0JSRUFL
UE9JTlRfQlVJTFRJTiBpcyBGYWxzZSAgIyB0eXBlOiBpZ25vcmVbY29tcGFyaXNvbi1vdmVybGFw
XQorCisgICAgQHB5dGVzdC5tYXJrLnNraXBpZigKKyAgICAgICAgbm90IFNVUFBPUlRTX0JSRUFL
UE9JTlRfQlVJTFRJTiwgcmVhc29uPSJSZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRpbiIKKyAg
ICApCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhcmciLCBbIi0tcGRiIiwgIiJdKQor
ICAgIGRlZiB0ZXN0X3N5c19icmVha3BvaW50aG9va19jb25maWd1cmVfYW5kX3VuY29uZmlndXJl
KHNlbGYsIHRlc3RkaXIsIGFyZyk6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgc3lz
LmJyZWFrcG9pbnRob29rIGlzIHNldCB0byB0aGUgY3VzdG9tIFBkYiBjbGFzcyBvbmNlIGNvbmZp
Z3VyZWQsIHRlc3QgdGhhdAorICAgICAgICBob29rIGlzIHJlc2V0IHRvIHN5c3RlbSB2YWx1ZSBv
bmNlIHB5dGVzdCBoYXMgYmVlbiB1bmNvbmZpZ3VyZWQKKyAgICAgICAgIiIiCisgICAgICAgIHRl
c3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQg
c3lzCisgICAgICAgICAgICBmcm9tIHB5dGVzdCBpbXBvcnQgaG9va2ltcGwKKyAgICAgICAgICAg
IGZyb20gX3B5dGVzdC5kZWJ1Z2dpbmcgaW1wb3J0IHB5dGVzdFBEQgorCisgICAgICAgICAgICBk
ZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgorICAgICAgICAgICAgICAgIGNvbmZpZy5fY2xl
YW51cC5hcHBlbmQoY2hlY2tfcmVzdG9yZWQpCisKKyAgICAgICAgICAgIGRlZiBjaGVja19yZXN0
b3JlZCgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBzeXMuYnJlYWtwb2ludGhvb2sgPT0gc3lz
Ll9fYnJlYWtwb2ludGhvb2tfXworCisgICAgICAgICAgICBkZWYgdGVzdF9jaGVjaygpOgorICAg
ICAgICAgICAgICAgIGFzc2VydCBzeXMuYnJlYWtwb2ludGhvb2sgPT0gcHl0ZXN0UERCLnNldF90
cmFjZQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X25vdGhpbmcoKTogcGFzcwor
ICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBhcmdzID0gKGFyZywpIGlmIGFyZyBlbHNl
ICgpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3MoKmFyZ3Mp
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCBpbiAqIl0p
CisKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3QgU1VQUE9SVFNfQlJFQUtQ
T0lOVF9CVUlMVElOLCByZWFzb249IlJlcXVpcmVzIGJyZWFrcG9pbnQoKSBidWlsdGluIgorICAg
ICkKKyAgICBkZWYgdGVzdF9wZGJfY3VzdG9tX2NscyhzZWxmLCB0ZXN0ZGlyLCBjdXN0b21fZGVi
dWdnZXJfaG9vayk6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9ub3RoaW5nKCk6CisgICAgICAgICAgICAgICAg
YnJlYWtwb2ludCgpCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygKKyAgICAgICAgICAgICItLXBkYiIsICItLXBkYmNs
cz1fcHl0ZXN0Ol9DdXN0b21EZWJ1Z2dlciIsIHAxCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKkN1c3RvbURlYnVnZ2VyKiIsICIqMSBwYXNzZWQqIl0p
CisgICAgICAgIGFzc2VydCBjdXN0b21fZGVidWdnZXJfaG9vayA9PSBbImluaXQiLCAic2V0X3Ry
YWNlIl0KKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYXJnIiwgWyItLXBkYiIsICIi
XSkKKyAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3QgU1VQUE9SVFNfQlJFQUtQ
T0lOVF9CVUlMVElOLCByZWFzb249IlJlcXVpcmVzIGJyZWFrcG9pbnQoKSBidWlsdGluIgorICAg
ICkKKyAgICBkZWYgdGVzdF9lbnZpcm9uX2N1c3RvbV9jbGFzcyhzZWxmLCB0ZXN0ZGlyLCBjdXN0
b21fZGVidWdnZXJfaG9vaywgYXJnKToKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisg
ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0
IHN5cworCisgICAgICAgICAgICBvcy5lbnZpcm9uWydQWVRIT05CUkVBS1BPSU5UJ10gPSAnX3B5
dGVzdC5fQ3VzdG9tRGVidWdnZXIuc2V0X3RyYWNlJworCisgICAgICAgICAgICBkZWYgcHl0ZXN0
X2NvbmZpZ3VyZShjb25maWcpOgorICAgICAgICAgICAgICAgIGNvbmZpZy5fY2xlYW51cC5hcHBl
bmQoY2hlY2tfcmVzdG9yZWQpCisKKyAgICAgICAgICAgIGRlZiBjaGVja19yZXN0b3JlZCgpOgor
ICAgICAgICAgICAgICAgIGFzc2VydCBzeXMuYnJlYWtwb2ludGhvb2sgPT0gc3lzLl9fYnJlYWtw
b2ludGhvb2tfXworCisgICAgICAgICAgICBkZWYgdGVzdF9jaGVjaygpOgorICAgICAgICAgICAg
ICAgIGltcG9ydCBfcHl0ZXN0CisgICAgICAgICAgICAgICAgYXNzZXJ0IHN5cy5icmVha3BvaW50
aG9vayBpcyBfcHl0ZXN0Ll9DdXN0b21EZWJ1Z2dlci5zZXRfdHJhY2UKKyAgICAgICAgIiIiCisg
ICAgICAgICkKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBkZWYgdGVzdF9ub3RoaW5nKCk6IHBhc3MKKyAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgYXJncyA9IChhcmcsKSBpZiBhcmcgZWxzZSAoKQorICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCphcmdzKQorICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQgaW4gKiJdKQorCisgICAgQHB5dGVzdC5tYXJr
LnNraXBpZigKKyAgICAgICAgbm90IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiwgcmVhc29u
PSJSZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRpbiIKKyAgICApCisgICAgQHB5dGVzdC5tYXJr
LnNraXBpZigKKyAgICAgICAgbm90IF9FTlZJUk9OX1BZVEhPTkJSRUFLUE9JTlQgPT0gIiIsCisg
ICAgICAgIHJlYXNvbj0iUmVxdWlyZXMgYnJlYWtwb2ludCgpIGRlZmF1bHQgdmFsdWUiLAorICAg
ICkKKyAgICBkZWYgdGVzdF9zeXNfYnJlYWtwb2ludF9pbnRlcmNlcHRpb24oc2VsZiwgdGVzdGRp
cik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBkZWYgdGVzdF8xKCk6CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludCgpCisg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRl
c3Qoc3RyKHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzEiKQorICAgICAgICBjaGls
ZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJxdWl0IikKKyAgICAgICAg
cmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQorICAgICAgICBhc3NlcnQgIlF1aXR0
aW5nIGRlYnVnZ2VyIiBpbiByZXN0CisgICAgICAgIGFzc2VydCAicmVhZGluZyBmcm9tIHN0ZGlu
IHdoaWxlIG91dHB1dCIgbm90IGluIHJlc3QKKyAgICAgICAgVGVzdFBEQi5mbHVzaChjaGlsZCkK
KworICAgIEBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIG5vdCBTVVBQT1JUU19CUkVBS1BP
SU5UX0JVSUxUSU4sIHJlYXNvbj0iUmVxdWlyZXMgYnJlYWtwb2ludCgpIGJ1aWx0aW4iCisgICAg
KQorICAgIGRlZiB0ZXN0X3BkYl9ub3RfYWx0ZXJlZChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGlt
cG9ydCBwZGIKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBwZGIu
c2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICBhc3NlcnQgMAorICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCisgICAg
ICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJQZGIiKQor
ICAgICAgICBjaGlsZC5zZW5kbGluZSgiYyIpCisgICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCku
ZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAorICAgICAg
ICBhc3NlcnQgInJlYWRpbmcgZnJvbSBzdGRpbiB3aGlsZSBvdXRwdXQiIG5vdCBpbiByZXN0Cisg
ICAgICAgIFRlc3RQREIuZmx1c2goY2hpbGQpCisKKworY2xhc3MgVGVzdFRyYWNlT3B0aW9uOgor
ICAgIGRlZiB0ZXN0X3RyYWNlX3NldHNfYnJlYWtwb2ludChzZWxmLCB0ZXN0ZGlyKToKKyAgICAg
ICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IGRlZiB0ZXN0XzEoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQorCisgICAgICAgICAg
ICBkZWYgdGVzdF8yKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYg
dGVzdF8zKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiCisgICAgICAg
ICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS10cmFjZSAiICsgc3Ry
KHAxKSkKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzEiKQorICAgICAgICBjaGlsZC5leHBl
Y3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQuZXhw
ZWN0KCJ0ZXN0XzIiKQorICAgICAgICBjaGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxk
LnNlbmRsaW5lKCJjIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzMiKQorICAgICAgICBj
aGlsZC5leHBlY3QoIlBkYiIpCisgICAgICAgIGNoaWxkLnNlbmRsaW5lKCJxIikKKyAgICAgICAg
Y2hpbGQuZXhwZWN0X2V4YWN0KCJFeGl0OiBRdWl0dGluZyBkZWJ1Z2dlciIpCisgICAgICAgIHJl
c3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICI9IDIgcGFz
c2VkIGluIiBpbiByZXN0CisgICAgICAgIGFzc2VydCAicmVhZGluZyBmcm9tIHN0ZGluIHdoaWxl
IG91dHB1dCIgbm90IGluIHJlc3QKKyAgICAgICAgIyBPbmx5IHByaW50ZWQgb25jZSAtIG5vdCBv
biBzdGRlcnIuCisgICAgICAgIGFzc2VydCAiRXhpdDogUXVpdHRpbmcgZGVidWdnZXIiIG5vdCBp
biBjaGlsZC5iZWZvcmUuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgVGVzdFBEQi5mbHVzaChjaGls
ZCkKKworICAgIGRlZiB0ZXN0X3RyYWNlX3dpdGhfcGFyYW1ldHJpemVfaGFuZGxlc19zaGFyZWRf
Zml4dHVyZWluZm8oc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAg
ICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ215cGFyYW0nLCBbMSwyXSkKKyAgICAgICAg
ICAgIGRlZiB0ZXN0XzEobXlwYXJhbSwgcmVxdWVzdCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0
IG15cGFyYW0gaW4gKDEsIDIpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlcXVlc3QuZnVuY3Rp
b24uX19uYW1lX18gPT0gInRlc3RfMSIKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgnZnVuYycsIFsxLDJdKQorICAgICAgICAgICAgZGVmIHRlc3RfZnVuYyhmdW5jLCByZXF1
ZXN0KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZnVuYyBpbiAoMSwgMikKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgcmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXyA9PSAidGVzdF9mdW5jIgorICAg
ICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdteXBhcmFtJywgWzEsMl0pCisgICAg
ICAgICAgICBkZWYgdGVzdF9mdW5jX2t3KG15cGFyYW0sIHJlcXVlc3QsIGZ1bmM9ImZ1bmNfa3ci
KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgbXlwYXJhbSBpbiAoMSwgMikKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgZnVuYyA9PSAiZnVuY19rdyIKKyAgICAgICAgICAgICAgICBhc3NlcnQgcmVx
dWVzdC5mdW5jdGlvbi5fX25hbWVfXyA9PSAidGVzdF9mdW5jX2t3IgorICAgICAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS10cmFj
ZSAiICsgc3RyKHAxKSkKKyAgICAgICAgZm9yIGZ1bmMsIGFyZ25hbWUgaW4gWworICAgICAgICAg
ICAgKCJ0ZXN0XzEiLCAibXlwYXJhbSIpLAorICAgICAgICAgICAgKCJ0ZXN0X2Z1bmMiLCAiZnVu
YyIpLAorICAgICAgICAgICAgKCJ0ZXN0X2Z1bmNfa3ciLCAibXlwYXJhbSIpLAorICAgICAgICBd
OgorICAgICAgICAgICAgY2hpbGQuZXhwZWN0X2V4YWN0KCI+IFBEQiBydW5jYWxsIChJTy1jYXB0
dXJpbmcgdHVybmVkIG9mZikgPiIpCisgICAgICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoZnVu
YykKKyAgICAgICAgICAgIGNoaWxkLmV4cGVjdF9leGFjdCgiUGRiIikKKyAgICAgICAgICAgIGNo
aWxkLnNlbmRsaW5lKCJhcmdzIikKKyAgICAgICAgICAgIGNoaWxkLmV4cGVjdF9leGFjdCgie30g
PSAxXHJcbiIuZm9ybWF0KGFyZ25hbWUpKQorICAgICAgICAgICAgY2hpbGQuZXhwZWN0X2V4YWN0
KCJQZGIiKQorICAgICAgICAgICAgY2hpbGQuc2VuZGxpbmUoImMiKQorICAgICAgICAgICAgY2hp
bGQuZXhwZWN0X2V4YWN0KCJQZGIiKQorICAgICAgICAgICAgY2hpbGQuc2VuZGxpbmUoImFyZ3Mi
KQorICAgICAgICAgICAgY2hpbGQuZXhwZWN0X2V4YWN0KCJ7fSA9IDJcclxuIi5mb3JtYXQoYXJn
bmFtZSkpCisgICAgICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoIlBkYiIpCisgICAgICAgICAg
ICBjaGlsZC5zZW5kbGluZSgiYyIpCisgICAgICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3QoIj4g
UERCIGNvbnRpbnVlIChJTy1jYXB0dXJpbmcgcmVzdW1lZCkgPiIpCisgICAgICAgIHJlc3QgPSBj
aGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICI9IDYgcGFzc2VkIGlu
IiBpbiByZXN0CisgICAgICAgIGFzc2VydCAicmVhZGluZyBmcm9tIHN0ZGluIHdoaWxlIG91dHB1
dCIgbm90IGluIHJlc3QKKyAgICAgICAgIyBPbmx5IHByaW50ZWQgb25jZSAtIG5vdCBvbiBzdGRl
cnIuCisgICAgICAgIGFzc2VydCAiRXhpdDogUXVpdHRpbmcgZGVidWdnZXIiIG5vdCBpbiBjaGls
ZC5iZWZvcmUuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgVGVzdFBEQi5mbHVzaChjaGlsZCkKKwor
CitkZWYgdGVzdF90cmFjZV9hZnRlcl9ydW5weXRlc3QodGVzdGRpcik6CisgICAgIiIiVGVzdCB0
aGF0IGRlYnVnZ2luZydzIHB5dGVzdF9jb25maWd1cmUgaXMgcmUtZW50cmFudC4iIiIKKyAgICBw
MSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gX3B5dGVz
dC5kZWJ1Z2dpbmcgaW1wb3J0IHB5dGVzdFBEQgorCisgICAgICAgIGRlZiB0ZXN0X291dGVyKHRl
c3RkaXIpOgorICAgICAgICAgICAgYXNzZXJ0IGxlbihweXRlc3RQREIuX3NhdmVkKSA9PSAxCisK
KyAgICAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICAgICBcIiIiCisg
ICAgICAgICAgICAgICAgZnJvbSBfcHl0ZXN0LmRlYnVnZ2luZyBpbXBvcnQgcHl0ZXN0UERCCisK
KyAgICAgICAgICAgICAgICBkZWYgdGVzdF9pbm5lcigpOgorICAgICAgICAgICAgICAgICAgICBh
c3NlcnQgbGVuKHB5dGVzdFBEQi5fc2F2ZWQpID09IDIKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnQoKQorICAgICAgICAgICAgICAgICAgICBwcmludCgidGVzdF9pbm5lcl8iICsgImVuZCIpCisg
ICAgICAgICAgICAgICAgXCIiIgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXMiLCAiLWsiLCAidGVzdF9pbm5lciIpCisgICAgICAgICAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKyAgICAgICAgICAgIGFzc2VydCBsZW4ocHl0ZXN0
UERCLl9zYXZlZCkgPT0gMQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdF9zdWJwcm9jZXNzKCItcyIsICItcCIsICJweXRlc3RlciIsIHN0cihwMSkpCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsidGVzdF9pbm5lcl9lbmQiXSkKKyAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3RfcXVpdF93aXRoX3N3YWxsb3dlZF9TeXN0
ZW1FeGl0KHRlc3RkaXIpOgorICAgICIiIlRlc3QgdGhhdCBkZWJ1Z2dpbmcncyBweXRlc3RfY29u
ZmlndXJlIGlzIHJlLWVudHJhbnQuIiIiCisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisg
ICAgICAgICIiIgorICAgICAgICBkZWYgY2FsbF9wZGJfc2V0X3RyYWNlKCk6CisgICAgICAgICAg
ICBfX2ltcG9ydF9fKCdwZGInKS5zZXRfdHJhY2UoKQorCisKKyAgICAgICAgZGVmIHRlc3RfMSgp
OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNhbGxfcGRiX3NldF90cmFjZSgp
CisgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKKyAgICAgICAgICAgICAgICBwYXNzCisK
KworICAgICAgICBkZWYgdGVzdF8yKCk6CisgICAgICAgICAgICBwYXNzCisgICAgIiIiCisgICAg
KQorICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKKyAgICBjaGlsZC5l
eHBlY3QoIlBkYiIpCisgICAgY2hpbGQuc2VuZGxpbmUoInEiKQorICAgIGNoaWxkLmV4cGVjdF9l
eGFjdCgiRXhpdDogUXVpdHRpbmcgZGVidWdnZXIiKQorICAgIHJlc3QgPSBjaGlsZC5yZWFkKCku
ZGVjb2RlKCJ1dGY4IikKKyAgICBhc3NlcnQgIm5vIHRlc3RzIHJhbiIgaW4gcmVzdAorICAgIFRl
c3RQREIuZmx1c2goY2hpbGQpCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaXh0dXJl
IiwgKCJjYXBmZCIsICJjYXBzeXMiKSkKK2RlZiB0ZXN0X3BkYl9zdXNwZW5kc19maXh0dXJlX2Nh
cHR1cmluZyh0ZXN0ZGlyLCBmaXh0dXJlKToKKyAgICAiIiJVc2luZyAiLXMiIHdpdGggcHl0ZXN0
IHNob3VsZCBzdXNwZW5kL3Jlc3VtZSBmaXh0dXJlIGNhcHR1cmluZy4iIiIKKyAgICBwMSA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2lubmVyKHtm
aXh0dXJlfSk6CisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIHByaW50KCJv
dXRfaW5uZXJfYmVmb3JlIikKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoImVycl9pbm5l
cl9iZWZvcmVcXG4iKQorCisgICAgICAgICAgICBfX2ltcG9ydF9fKCJwZGIiKS5zZXRfdHJhY2Uo
KQorCisgICAgICAgICAgICBwcmludCgib3V0X2lubmVyX2FmdGVyIikKKyAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoImVycl9pbm5lcl9hZnRlclxcbiIpCisKKyAgICAgICAgICAgIG91dCwg
ZXJyID0ge2ZpeHR1cmV9LnJlYWRvdXRlcnIoKQorICAgICAgICAgICAgYXNzZXJ0IG91dCA9PSJv
dXRfaW5uZXJfYmVmb3JlXFxub3V0X2lubmVyX2FmdGVyXFxuIgorICAgICAgICAgICAgYXNzZXJ0
IGVyciA9PSJlcnJfaW5uZXJfYmVmb3JlXFxuZXJyX2lubmVyX2FmdGVyXFxuIgorICAgICAgICAi
IiIuZm9ybWF0KAorICAgICAgICAgICAgZml4dHVyZT1maXh0dXJlCisgICAgICAgICkKKyAgICAp
CisKKyAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkgKyAiIC1zIikKKwor
ICAgIGNoaWxkLmV4cGVjdCgiUGRiIikKKyAgICBiZWZvcmUgPSBjaGlsZC5iZWZvcmUuZGVjb2Rl
KCJ1dGY4IikKKyAgICBhc3NlcnQgKAorICAgICAgICAiPiBQREIgc2V0X3RyYWNlIChJTy1jYXB0
dXJpbmcgdHVybmVkIG9mZiBmb3IgZml4dHVyZSAlcykgPiIgJSAoZml4dHVyZSkKKyAgICAgICAg
aW4gYmVmb3JlCisgICAgKQorCisgICAgIyBUZXN0IHRoYXQgY2FwdHVyaW5nIGlzIHJlYWxseSBz
dXNwZW5kZWQuCisgICAgY2hpbGQuc2VuZGxpbmUoInAgNDAgKyAyIikKKyAgICBjaGlsZC5leHBl
Y3QoIlBkYiIpCisgICAgYXNzZXJ0ICJcclxuNDJcclxuIiBpbiBjaGlsZC5iZWZvcmUuZGVjb2Rl
KCJ1dGY4IikKKworICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKKyAgICByZXN0ID0gY2hpbGQucmVh
ZCgpLmRlY29kZSgidXRmOCIpCisgICAgYXNzZXJ0ICJvdXRfaW5uZXIiIG5vdCBpbiByZXN0Cisg
ICAgYXNzZXJ0ICJlcnJfaW5uZXIiIG5vdCBpbiByZXN0CisKKyAgICBUZXN0UERCLmZsdXNoKGNo
aWxkKQorICAgIGFzc2VydCBjaGlsZC5leGl0c3RhdHVzID09IDAKKyAgICBhc3NlcnQgIj0gMSBw
YXNzZWQgaW4iIGluIHJlc3QKKyAgICBhc3NlcnQgIj4gUERCIGNvbnRpbnVlIChJTy1jYXB0dXJp
bmcgcmVzdW1lZCBmb3IgZml4dHVyZSAlcykgPiIgJSAoZml4dHVyZSkgaW4gcmVzdAorCisKK2Rl
ZiB0ZXN0X3BkYmNsc192aWFfbG9jYWxfbW9kdWxlKHRlc3RkaXIpOgorICAgICIiIkl0IHNob3Vs
ZCBiZSBpbXBvcnRlZCBpbiBweXRlc3RfY29uZmlndXJlIG9yIGxhdGVyIG9ubHkuIiIiCisgICAg
cDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdCgp
OgorICAgICAgICAgICAgcHJpbnQoImJlZm9yZV9zZXRfdHJhY2UiKQorICAgICAgICAgICAgX19p
bXBvcnRfXygicGRiIikuc2V0X3RyYWNlKCkKKyAgICAgICAgIiIiLAorICAgICAgICBteXBkYj0i
IiIKKyAgICAgICAgY2xhc3MgV3JhcHBlZDoKKyAgICAgICAgICAgIGNsYXNzIE15UGRiOgorICAg
ICAgICAgICAgICAgIGRlZiBzZXRfdHJhY2Uoc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAg
ICAgICBwcmludCgic2V0X3RyYWNlX2NhbGxlZCIsIGFyZ3MpCisKKyAgICAgICAgICAgICAgICBk
ZWYgcnVuY2FsbChzZWxmLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnQoInJ1bmNhbGxfY2FsbGVkIiwgYXJncywga3dkcykKKyAgICAgICAgIiIiLAorICAgICkKKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAgICAgICAgc3RyKHAxKSwgIi0tcGRiY2xz
PXJlYWxseS5pbnZhbGlkOlZhbHVlIiwgc3lzcGF0aGluc2VydD1UcnVlCisgICAgKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIio9IEZB
SUxVUkVTID0qIiwKKyAgICAgICAgICAgICJFICogLS1wZGJjbHM6IGNvdWxkIG5vdCBpbXBvcnQg
J3JlYWxseS5pbnZhbGlkOlZhbHVlJzogTm8gbW9kdWxlIG5hbWVkICpyZWFsbHkqIiwKKyAgICAg
ICAgXQorICAgICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCisKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAgICAgICAgc3RyKHAxKSwgIi0tcGRiY2xzPW15cGRiOldyYXBw
ZWQuTXlQZGIiLCBzeXNwYXRoaW5zZXJ0PVRydWUKKyAgICApCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipzZXRfdHJhY2VfY2Fs
bGVkKiIsICIqIDEgcGFzc2VkIGluICoiXSkKKworICAgICMgRW5zdXJlIHRoYXQgaXQgYWxzbyB3
b3JrcyB3aXRoIC0tdHJhY2UuCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoCisgICAg
ICAgIHN0cihwMSksICItLXBkYmNscz1teXBkYjpXcmFwcGVkLk15UGRiIiwgIi0tdHJhY2UiLCBz
eXNwYXRoaW5zZXJ0PVRydWUKKyAgICApCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipydW5jYWxsX2NhbGxlZCoiLCAiKiAxIHBh
c3NlZCBpbiAqIl0pCisKKworZGVmIHRlc3RfcmFpc2VzX2JkYnF1aXRfd2l0aF9lb2ZlcnJvcih0
ZXN0ZGlyKToKKyAgICAiIiJJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0IERvbnRSZWFkRnJvbUlu
cHV0J3MgcmVhZCBpcyBjYWxsZWQuIiIiCisKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgIiIiCisgICAgICAgIGRlZiBpbnB1dF93aXRob3V0X3JlYWQoKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCkKKworICAgICAgICBkZWYgdGVzdCht
b25rZXlwYXRjaCk6CisgICAgICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgICAgIG1v
bmtleXBhdGNoLnNldGF0dHIoYnVpbHRpbnMsICJpbnB1dCIsIGlucHV0X3dpdGhvdXRfcmVhZCkK
KyAgICAgICAgICAgIF9faW1wb3J0X18oJ3BkYicpLnNldF90cmFjZSgpCisgICAgICAgICIiIgor
ICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocDEpKQorICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIkUgKkJkYlF1aXQiLCAiKj0gMSBmYWlsZWQgaW4qIl0p
CisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQorCisKK2RlZiB0ZXN0X3BkYl93cmFwcGVyX2Ns
YXNzX2lzX3JldXNlZCh0ZXN0ZGlyKToKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBfX2ltcG9ydF9fKCJw
ZGIiKS5zZXRfdHJhY2UoKQorICAgICAgICAgICAgX19pbXBvcnRfXygicGRiIikuc2V0X3RyYWNl
KCkKKworICAgICAgICAgICAgaW1wb3J0IG15cGRiCisgICAgICAgICAgICBpbnN0YW5jZXMgPSBt
eXBkYi5pbnN0YW5jZXMKKyAgICAgICAgICAgIGFzc2VydCBsZW4oaW5zdGFuY2VzKSA9PSAyCisg
ICAgICAgICAgICBhc3NlcnQgaW5zdGFuY2VzWzBdLl9fY2xhc3NfXyBpcyBpbnN0YW5jZXNbMV0u
X19jbGFzc19fCisgICAgICAgICIiIiwKKyAgICAgICAgbXlwZGI9IiIiCisgICAgICAgIGluc3Rh
bmNlcyA9IFtdCisKKyAgICAgICAgY2xhc3MgTXlQZGI6CisgICAgICAgICAgICBkZWYgX19pbml0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBpbnN0YW5jZXMuYXBw
ZW5kKHNlbGYpCisKKyAgICAgICAgICAgIGRlZiBzZXRfdHJhY2Uoc2VsZiwgKmFyZ3MpOgorICAg
ICAgICAgICAgICAgIHByaW50KCJzZXRfdHJhY2VfY2FsbGVkIiwgYXJncykKKyAgICAgICAgIiIi
LAorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChzdHIocDEpLCAiLS1wZGJj
bHM9bXlwZGI6TXlQZGIiLCBzeXNwYXRoaW5zZXJ0PVRydWUpCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMAorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWyIqc2V0
X3RyYWNlX2NhbGxlZCoiLCAiKnNldF90cmFjZV9jYWxsZWQqIiwgIiogMSBwYXNzZWQgaW4gKiJd
CisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2RvY3Rlc3QucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZG9jdGVzdC5weQppbmRleCA3ZjNhZmYzYjBlMTAu
LjBiMzJhZDMyMjAzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2RvY3Rl
c3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2RvY3Rlc3QucHkKQEAgLTEsMTQg
KzEsMjAgQEAKLSMgZW5jb2Rpbmc6IHV0Zi04Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgc3lzCi1pbXBvcnQg
X3B5dGVzdC5fY29kZQotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgTU9EVUxFX05PVF9GT1VO
RF9FUlJPUgotZnJvbSBfcHl0ZXN0LmRvY3Rlc3QgaW1wb3J0IERvY3Rlc3RJdGVtLCBEb2N0ZXN0
TW9kdWxlLCBEb2N0ZXN0VGV4dGZpbGUKLWltcG9ydCBweXRlc3QKK2ltcG9ydCBpbnNwZWN0Citp
bXBvcnQgdGV4dHdyYXAKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcg
aW1wb3J0IE9wdGlvbmFsCiAKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1w
b3J0IE1PRFVMRV9OT1RfRk9VTkRfRVJST1IKK2Zyb20gX3B5dGVzdC5kb2N0ZXN0IGltcG9ydCBf
Z2V0X2NoZWNrZXIKK2Zyb20gX3B5dGVzdC5kb2N0ZXN0IGltcG9ydCBfaXNfbW9ja2VkCitmcm9t
IF9weXRlc3QuZG9jdGVzdCBpbXBvcnQgX2lzX3NldHVwX3B5Citmcm9tIF9weXRlc3QuZG9jdGVz
dCBpbXBvcnQgX3BhdGNoX3Vud3JhcF9tb2NrX2F3YXJlCitmcm9tIF9weXRlc3QuZG9jdGVzdCBp
bXBvcnQgRG9jdGVzdEl0ZW0KK2Zyb20gX3B5dGVzdC5kb2N0ZXN0IGltcG9ydCBEb2N0ZXN0TW9k
dWxlCitmcm9tIF9weXRlc3QuZG9jdGVzdCBpbXBvcnQgRG9jdGVzdFRleHRmaWxlCiAKLWNsYXNz
IFRlc3REb2N0ZXN0cyhvYmplY3QpOgogCitjbGFzcyBUZXN0RG9jdGVzdHM6CiAgICAgZGVmIHRl
c3RfY29sbGVjdF90ZXN0dGV4dGZpbGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHcgPSB0ZXN0
ZGlyLm1ha2V0eHRmaWxlKHdoYXRldmVyPSIiKQogICAgICAgICBjaGVja2ZpbGUgPSB0ZXN0ZGly
Lm1ha2V0eHRmaWxlKApAQCAtMTA5LDggKzExNSw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmpl
Y3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShmYWlsZWQ9MSkKIAogICAgIGRlZiB0
ZXN0X211bHRpcGxlX3BhdHRlcm5zKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiJUZXN0IHN1
cHBvcnQgZm9yIG11bHRpcGxlIC0tZG9jdGVzdC1nbG9iIGFyZ3VtZW50cyAoIzEyNTUpLgotICAg
ICAgICAiIiIKKyAgICAgICAgIiIiVGVzdCBzdXBwb3J0IGZvciBtdWx0aXBsZSAtLWRvY3Rlc3Qt
Z2xvYiBhcmd1bWVudHMgKCMxMjU1KS4iIiIKICAgICAgICAgdGVzdGRpci5tYWtldHh0ZmlsZSgK
ICAgICAgICAgICAgIHhkb2M9IiIiCiAgICAgICAgICAgICA+Pj4gMQpAQCAtMTQwLDExICsxNDUs
MTAgQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAKICAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoCiAgICAgICAgICIgICB0ZXN0X3N0cmluZywgICAgZW5jb2RpbmciLAotICAgICAg
ICBbKHUiZm9vIiwgImFzY2lpIiksICh1IsO2w6TDvCIsICJsYXRpbjEiKSwgKHUiw7bDpMO8Iiwg
InV0Zi04IildLAorICAgICAgICBbKCJmb28iLCAiYXNjaWkiKSwgKCLDtsOkw7wiLCAibGF0aW4x
IiksICgiw7bDpMO8IiwgInV0Zi04IildLAogICAgICkKICAgICBkZWYgdGVzdF9lbmNvZGluZyhz
ZWxmLCB0ZXN0ZGlyLCB0ZXN0X3N0cmluZywgZW5jb2RpbmcpOgotICAgICAgICAiIiJUZXN0IHN1
cHBvcnQgZm9yIGRvY3Rlc3RfZW5jb2RpbmcgaW5pIG9wdGlvbi4KLSAgICAgICAgIiIiCisgICAg
ICAgICIiIlRlc3Qgc3VwcG9ydCBmb3IgZG9jdGVzdF9lbmNvZGluZyBpbmkgb3B0aW9uLiIiIgog
ICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFtw
eXRlc3RdCkBAIC0xNTMsOCArMTU3LDggQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgZW5jb2RpbmcKICAgICAgICAgICAgICkKICAgICAgICAgKQotICAgICAg
ICBkb2N0ZXN0ID0gdSIiIgotICAgICAgICAgICAgPj4+IHUie30iCisgICAgICAgIGRvY3Rlc3Qg
PSAiIiIKKyAgICAgICAgICAgID4+PiAie30iCiAgICAgICAgICAgICB7fQogICAgICAgICAiIiIu
Zm9ybWF0KAogICAgICAgICAgICAgdGVzdF9zdHJpbmcsIHJlcHIodGVzdF9zdHJpbmcpCkBAIC0x
NzYsMTAgKzE4MCw1NiBAQCBjbGFzcyBUZXN0RG9jdGVzdHMob2JqZWN0KToKICAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZG9jdGVzdC1tb2R1bGVzIikKICAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICIqdW5leHBlY3RlZF9leGNlcHRpb24qIiwKLSAgICAgICAgICAgICAgICAiKj4+PiBpID0gMCoi
LAotICAgICAgICAgICAgICAgICIqPj4+IDAgLyBpKiIsCi0gICAgICAgICAgICAgICAgIipVTkVY
UEVDVEVEKlplcm9EaXZpc2lvbioiLAorICAgICAgICAgICAgICAgICJ0ZXN0X2RvY3Rlc3RfdW5l
eHBlY3RlZF9leGNlcHRpb24udHh0IEYgKiIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAgICAgIio9IEZBSUxVUkVTID0qIiwKKyAgICAgICAgICAgICAgICAiKl8gW1tdZG9jdGVz
dFtdXSB0ZXN0X2RvY3Rlc3RfdW5leHBlY3RlZF9leGNlcHRpb24udHh0IF8qIiwKKyAgICAgICAg
ICAgICAgICAiMDAxID4+PiBpID0gMCIsCisgICAgICAgICAgICAgICAgIjAwMiA+Pj4gMCAvIGki
LAorICAgICAgICAgICAgICAgICJVTkVYUEVDVEVEIEVYQ0VQVElPTjogWmVyb0RpdmlzaW9uRXJy
b3IqIiwKKyAgICAgICAgICAgICAgICAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp
OiIsCisgICAgICAgICAgICAgICAgJyAgRmlsZSAiKi9kb2N0ZXN0LnB5IiwgbGluZSAqLCBpbiBf
X3J1bicsCisgICAgICAgICAgICAgICAgIiAgICAqIiwKKyAgICAgICAgICAgICAgICAnICBGaWxl
ICI8ZG9jdGVzdCB0ZXN0X2RvY3Rlc3RfdW5leHBlY3RlZF9leGNlcHRpb24udHh0WzFdPiIsIGxp
bmUgMSwgaW4gPG1vZHVsZT4nLAorICAgICAgICAgICAgICAgICJaZXJvRGl2aXNpb25FcnJvcjog
ZGl2aXNpb24gYnkgemVybyIsCisgICAgICAgICAgICAgICAgIiovdGVzdF9kb2N0ZXN0X3VuZXhw
ZWN0ZWRfZXhjZXB0aW9uLnR4dDoyOiBVbmV4cGVjdGVkRXhjZXB0aW9uIiwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICAgICBjb25zZWN1dGl2ZT1UcnVlLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9kb2N0ZXN0X291dGNvbWVzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1h
a2V0eHRmaWxlKAorICAgICAgICAgICAgdGVzdF9za2lwPSIiIgorICAgICAgICAgICAgPj4+IDEK
KyAgICAgICAgICAgIDEKKyAgICAgICAgICAgID4+PiBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAg
ICA+Pj4gcHl0ZXN0LnNraXAoIiIpCisgICAgICAgICAgICA+Pj4gMgorICAgICAgICAgICAgMwor
ICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgdGVzdF94ZmFpbD0iIiIKKyAgICAgICAgICAg
ID4+PiBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICA+Pj4gcHl0ZXN0LnhmYWlsKCJ4ZmFpbF9y
ZWFzb24iKQorICAgICAgICAgICAgPj4+IGZvbworICAgICAgICAgICAgYmFyCisgICAgICAgICAg
ICAiIiIsCisgICAgICAgICAgICB0ZXN0X2ltcG9ydG9yc2tpcD0iIiIKKyAgICAgICAgICAgID4+
PiBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICA+Pj4gcHl0ZXN0LmltcG9ydG9yc2tpcCgiZG9l
c25vdGV4aXN0IikKKyAgICAgICAgICAgID4+PiBmb28KKyAgICAgICAgICAgIGJhcgorICAgICAg
ICAgICAgIiIiLAorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCItLWRvY3Rlc3QtbW9kdWxlcyIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDMgaXRlbXMiLAor
ICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICJ0ZXN0X2ltcG9ydG9yc2tpcC50
eHQgcyAqIiwKKyAgICAgICAgICAgICAgICAidGVzdF9za2lwLnR4dCBzICoiLAorICAgICAgICAg
ICAgICAgICJ0ZXN0X3hmYWlsLnR4dCB4ICoiLAorICAgICAgICAgICAgICAgICIiLAorICAgICAg
ICAgICAgICAgICIqPSAyIHNraXBwZWQsIDEgeGZhaWxlZCBpbiAqIiwKICAgICAgICAgICAgIF0K
ICAgICAgICAgKQogCkBAIC0yMjQsOCArMjc0LDggQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVj
dCk6CiAgICAgICAgICAgICBdCiAgICAgICAgICkKICAgICAgICAgIyBsaW5lcyBiZWxvdyBzaG91
bGQgYmUgdHJpbW1lZCBvdXQKLSAgICAgICAgYXNzZXJ0ICJ0ZXh0LWxpbmUtMiIgbm90IGluIHJl
c3VsdC5zdGRvdXQuc3RyKCkKLSAgICAgICAgYXNzZXJ0ICJ0ZXh0LWxpbmUtYWZ0ZXIiIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqdGV4dC1saW5lLTIqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xp
bmUoIip0ZXh0LWxpbmUtYWZ0ZXIqIikKIAogICAgIGRlZiB0ZXN0X2RvY3N0cmluZ19mdWxsX2Nv
bnRleHRfYXJvdW5kX2Vycm9yKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAiIiJUZXN0IHRoYXQg
d2Ugc2hvdyB0aGUgd2hvbGUgY29udGV4dCBiZWZvcmUgdGhlIGFjdHVhbCBsaW5lIG9mIGEgZmFp
bGluZwpAQCAtMjU5LDI2ICszMDksODEgQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAK
ICAgICBkZWYgdGVzdF9kb2N0ZXN0X2xpbmVkYXRhX21pc3Npbmcoc2VsZiwgdGVzdGRpcik6CiAg
ICAgICAgIHRlc3RkaXIudG1wZGlyLmpvaW4oImhlbGxvLnB5Iikud3JpdGUoCi0gICAgICAgICAg
ICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAg
ICAgICAgICAgICAgICAiIiJcCisgICAgICAgICAgICAgICAgY2xhc3MgRnVuKG9iamVjdCk6Cisg
ICAgICAgICAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgICAgICAgICBkZWYgdGVz
dChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgICAgICcnJworICAgICAgICAgICAgICAgICAg
ICAgICAgPj4+IGEgPSAxCisgICAgICAgICAgICAgICAgICAgICAgICA+Pj4gMS8wCisgICAgICAg
ICAgICAgICAgICAgICAgICAnJycKICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGNs
YXNzIEZ1bihvYmplY3QpOgorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWRvY3Rlc3QtbW9kdWxlcyIpCisgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsiKmhlbGxvKiIsICIwMDYqPj4+
IDEvMCoiLCAiKlVORVhQRUNURUQqWmVyb0RpdmlzaW9uKiIsICIqMSBmYWlsZWQqIl0KKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfZG9jdGVzdF9saW5lZGF0YV9vbl9wcm9wZXJ0eShzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBjbGFzcyBTYW1wbGUob2JqZWN0KToKICAgICAgICAgICAgICAgICBAcHJvcGVy
dHkKLSAgICAgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBkZWYg
c29tZV9wcm9wZXJ0eShzZWxmKToKICAgICAgICAgICAgICAgICAgICAgJycnCi0gICAgICAgICAg
ICAgICAgICAgID4+PiBhID0gMQotICAgICAgICAgICAgICAgICAgICA+Pj4gMS8wCisgICAgICAg
ICAgICAgICAgICAgID4+PiBTYW1wbGUoKS5zb21lX3Byb3BlcnR5CisgICAgICAgICAgICAgICAg
ICAgICdhbm90aGVyIHRoaW5nJwogICAgICAgICAgICAgICAgICAgICAnJycKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICdzb21ldGhpbmcnCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAg
ICkKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1kb2N0
ZXN0LW1vZHVsZXMiKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgIipoZWxsbyoiLAotICAgICAgICAgICAgICAgICIq
RVhBTVBMRSBMT0NBVElPTiBVTktOT1dOLCBub3Qgc2hvd2luZyBhbGwgdGVzdHMgb2YgdGhhdCBl
eGFtcGxlKiIsCi0gICAgICAgICAgICAgICAgIioxLzAqIiwKLSAgICAgICAgICAgICAgICAiKlVO
RVhQRUNURUQqWmVyb0RpdmlzaW9uKiIsCi0gICAgICAgICAgICAgICAgIioxIGZhaWxlZCoiLAor
ICAgICAgICAgICAgICAgICIqPSBGQUlMVVJFUyA9KiIsCisgICAgICAgICAgICAgICAgIipfIFtb
XWRvY3Rlc3RbXV0gdGVzdF9kb2N0ZXN0X2xpbmVkYXRhX29uX3Byb3BlcnR5LlNhbXBsZS5zb21l
X3Byb3BlcnR5IF8qIiwKKyAgICAgICAgICAgICAgICAiMDA0ICIsCisgICAgICAgICAgICAgICAg
IjAwNSAgICAgICAgID4+PiBTYW1wbGUoKS5zb21lX3Byb3BlcnR5IiwKKyAgICAgICAgICAgICAg
ICAiRXhwZWN0ZWQ6IiwKKyAgICAgICAgICAgICAgICAiICAgICdhbm90aGVyIHRoaW5nJyIsCisg
ICAgICAgICAgICAgICAgIkdvdDoiLAorICAgICAgICAgICAgICAgICIgICAgJ3NvbWV0aGluZyci
LAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIqL3Rlc3RfZG9jdGVzdF9s
aW5lZGF0YV9vbl9wcm9wZXJ0eS5weTo1OiBEb2NUZXN0RmFpbHVyZSIsCisgICAgICAgICAgICAg
ICAgIio9IDEgZmFpbGVkIGluICoiLAorICAgICAgICAgICAgXQorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9kb2N0ZXN0X25vX2xpbmVkYXRhX29uX292ZXJyaWRlbl9wcm9wZXJ0eShzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBjbGFzcyBTYW1wbGUob2JqZWN0KToKKyAgICAgICAgICAgICAgICBAcHJvcGVy
dHkKKyAgICAgICAgICAgICAgICBkZWYgc29tZV9wcm9wZXJ0eShzZWxmKToKKyAgICAgICAgICAg
ICAgICAgICAgJycnCisgICAgICAgICAgICAgICAgICAgID4+PiBTYW1wbGUoKS5zb21lX3Byb3Bl
cnR5CisgICAgICAgICAgICAgICAgICAgICdhbm90aGVyIHRoaW5nJworICAgICAgICAgICAgICAg
ICAgICAnJycKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21ldGhpbmcnCisgICAgICAg
ICAgICAgICAgc29tZV9wcm9wZXJ0eSA9IHByb3BlcnR5KHNvbWVfcHJvcGVydHkuX19nZXRfXywg
Tm9uZSwgTm9uZSwgc29tZV9wcm9wZXJ0eS5fX2RvY19fKQorICAgICAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZG9jdGVzdC1tb2R1
bGVzIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICIqPSBGQUlMVVJFUyA9KiIsCisgICAgICAgICAgICAgICAgIipf
IFtbXWRvY3Rlc3RbXV0gdGVzdF9kb2N0ZXN0X25vX2xpbmVkYXRhX29uX292ZXJyaWRlbl9wcm9w
ZXJ0eS5TYW1wbGUuc29tZV9wcm9wZXJ0eSBfKiIsCisgICAgICAgICAgICAgICAgIkVYQU1QTEUg
TE9DQVRJT04gVU5LTk9XTiwgbm90IHNob3dpbmcgYWxsIHRlc3RzIG9mIHRoYXQgZXhhbXBsZSIs
CisgICAgICAgICAgICAgICAgIls/XVs/XVs/XSA+Pj4gU2FtcGxlKCkuc29tZV9wcm9wZXJ0eSIs
CisgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiIsCisgICAgICAgICAgICAgICAgIiAgICAnYW5v
dGhlciB0aGluZyciLAorICAgICAgICAgICAgICAgICJHb3Q6IiwKKyAgICAgICAgICAgICAgICAi
ICAgICdzb21ldGhpbmcnIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAi
Ki90ZXN0X2RvY3Rlc3Rfbm9fbGluZWRhdGFfb25fb3ZlcnJpZGVuX3Byb3BlcnR5LnB5Ok5vbmU6
IERvY1Rlc3RGYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAiKj0gMSBmYWlsZWQgaW4gKiIsCiAg
ICAgICAgICAgICBdCiAgICAgICAgICkKIApAQCAtMzAxLDEwICs0MDYsMTAgQEAgY2xhc3MgVGVz
dERvY3Rlc3RzKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9kb2N0ZXN0X3VuZXhfaW1wb3J0ZXJy
b3Jfd2l0aF9tb2R1bGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIudG1wZGlyLmpv
aW4oImhlbGxvLnB5Iikud3JpdGUoCi0gICAgICAgICAgICBfcHl0ZXN0Ll9jb2RlLlNvdXJjZSgK
KyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiJcCisgICAg
ICAgICAgICAgICAgaW1wb3J0IGFzZGFsc2RramFzbGtkamFzZAogICAgICAgICAgICAgICAgICIi
IgotICAgICAgICAgICAgaW1wb3J0IGFzZGFsc2RramFzbGtkamFzZAotICAgICAgICAiIiIKICAg
ICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgICB0ZXN0ZGlyLm1ha2V0eHRmaWxlKApAQCAt
MzE5LDcgKzQyNCw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAgICAgICAgICAg
WwogICAgICAgICAgICAgICAgICIqRVJST1IgY29sbGVjdGluZyBoZWxsby5weSoiLAogICAgICAg
ICAgICAgICAgICIqe2V9OiBObyBtb2R1bGUgbmFtZWQgKmFzZGFscyoiLmZvcm1hdChlPU1PRFVM
RV9OT1RfRk9VTkRfRVJST1IpLAotICAgICAgICAgICAgICAgICIqSW50ZXJydXB0ZWQ6IDEgZXJy
b3JzIGR1cmluZyBjb2xsZWN0aW9uKiIsCisgICAgICAgICAgICAgICAgIipJbnRlcnJ1cHRlZDog
MSBlcnJvciBkdXJpbmcgY29sbGVjdGlvbioiLAogICAgICAgICAgICAgXQogICAgICAgICApCiAK
QEAgLTM0MCwyNyArNDQ1LDI3IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAgIGRl
ZiB0ZXN0X2RvY3Rlc3Rtb2R1bGVfZXh0ZXJuYWxfYW5kX2lzc3VlMTE2KHNlbGYsIHRlc3RkaXIp
OgogICAgICAgICBwID0gdGVzdGRpci5ta3B5ZGlyKCJoZWxsbyIpCiAgICAgICAgIHAuam9pbigi
X19pbml0X18ucHkiKS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAor
ICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAg
ICAgICAgICAgICBkZWYgc29tZWZ1bmMoKToKKyAgICAgICAgICAgICAgICAgICAgJycnCisgICAg
ICAgICAgICAgICAgICAgICAgICA+Pj4gaSA9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgID4+
PiBpICsgMQorICAgICAgICAgICAgICAgICAgICAgICAgMgorICAgICAgICAgICAgICAgICAgICAn
JycKICAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiBzb21lZnVuYygpOgotICAg
ICAgICAgICAgICAgICcnJwotICAgICAgICAgICAgICAgICAgICA+Pj4gaSA9IDAKLSAgICAgICAg
ICAgICAgICAgICAgPj4+IGkgKyAxCi0gICAgICAgICAgICAgICAgICAgIDIKLSAgICAgICAgICAg
ICAgICAnJycKLSAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi0tZG9jdGVzdC1tb2R1bGVzIikKICAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwotICAgICAgICAg
ICAgICAgICIwMDQgKj4+PiBpID0gMCIsCi0gICAgICAgICAgICAgICAgIjAwNSAqPj4+IGkgKyAx
IiwKKyAgICAgICAgICAgICAgICAiMDAzICo+Pj4gaSA9IDAiLAorICAgICAgICAgICAgICAgICIw
MDQgKj4+PiBpICsgMSIsCiAgICAgICAgICAgICAgICAgIipFeHBlY3RlZDoiLAogICAgICAgICAg
ICAgICAgICIqICAgIDIiLAogICAgICAgICAgICAgICAgICIqR290OiIsCiAgICAgICAgICAgICAg
ICAgIiogICAgMSIsCi0gICAgICAgICAgICAgICAgIio6NTogRG9jVGVzdEZhaWx1cmUiLAorICAg
ICAgICAgICAgICAgICIqOjQ6IERvY1Rlc3RGYWlsdXJlIiwKICAgICAgICAgICAgIF0KICAgICAg
ICAgKQogCkBAIC01NjAsMTcgKzY2NSwxNSBAQCBjbGFzcyBUZXN0RG9jdGVzdHMob2JqZWN0KToK
ICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUoZmFpbGVkPTEsIHBhc3NlZD0wKQogCiAgICAg
ZGVmIHRlc3RfY29udGFpbnNfdW5pY29kZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiRml4
IGludGVybmFsIGVycm9yIHdpdGggZG9jc3RyaW5ncyBjb250YWluaW5nIG5vbi1hc2NpaSBjaGFy
YWN0ZXJzLgotICAgICAgICAiIiIKKyAgICAgICAgIiIiRml4IGludGVybmFsIGVycm9yIHdpdGgg
ZG9jc3RyaW5ncyBjb250YWluaW5nIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLiIiIgogICAgICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICB1JycnCi0gICAgICAgICAgICAjIGVuY29k
aW5nOiB1dGYtOAorICAgICAgICAgICAgJycnXAogICAgICAgICAgICAgZGVmIGZvbygpOgogICAg
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgICAgID4+PiBuYW1lID0gJ9GBJyAjIG5vdCBs
ZXR0ZXIgJ2MnIGJ1dCBpbnN0ZWFkIEN5cmlsbGljICdzJy4KICAgICAgICAgICAgICAgICAnYW55
dGhpbmcnCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICcnJworICAgICAgICAgICAgJycn
CiAgICAgICAgICkKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tZG9jdGVz
dC1tb2R1bGVzIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiR290IG5v
dGhpbmciLCAiKiAxIGZhaWxlZCBpbioiXSkKQEAgLTU5NSw5ICs2OTgsNyBAQCBjbGFzcyBUZXN0
RG9jdGVzdHMob2JqZWN0KToKICAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUoc2tpcHBlZD0x
LCBmYWlsZWQ9MSwgcGFzc2VkPTApCiAKICAgICBkZWYgdGVzdF9qdW5pdF9yZXBvcnRfZm9yX2Rv
Y3Rlc3Qoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIgotICAgICAgICAjNzEzOiBGaXggLS1q
dW5pdC14bWwgb3B0aW9uIHdoZW4gdXNlZCB3aXRoIC0tZG9jdGVzdC1tb2R1bGVzLgotICAgICAg
ICAiIiIKKyAgICAgICAgIiIiIzcxMzogRml4IC0tanVuaXQteG1sIG9wdGlvbiB3aGVuIHVzZWQg
d2l0aCAtLWRvY3Rlc3QtbW9kdWxlcy4iIiIKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIGZvbygpOgpAQCAtNjQxLDkgKzc0
Miw2IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAg
cCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgIHRlc3RfdW5pY29kZV9kb2N0ZXN0
X21vZHVsZT0iIiIKLSAgICAgICAgICAgICMgLSotIGVuY29kaW5nOiB1dGYtOCAtKi0KLSAgICAg
ICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCiAgICAgICAg
ICAgICBkZWYgZml4X2JhZF91bmljb2RlKHRleHQpOgogICAgICAgICAgICAgICAgICcnJwogICAg
ICAgICAgICAgICAgICAgICA+Pj4gcHJpbnQoZml4X2JhZF91bmljb2RlKCfDg8K6bmljbycpKQpA
QCAtNjY0LDcgKzc2Miw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgogICAgICAgICAg
ICAgdGVzdF9wcmludF91bmljb2RlX3ZhbHVlPXIiIiIKICAgICAgICAgICAgIEhlcmUgaXMgYSBk
b2N0ZXN0OjoKIAotICAgICAgICAgICAgICAgID4+PiBwcmludCh1J1x4RTVceEU5XHhFRVx4Rjhc
eEZDJykKKyAgICAgICAgICAgICAgICA+Pj4gcHJpbnQoJ1x4RTVceEU5XHhFRVx4RjhceEZDJykK
ICAgICAgICAgICAgICAgICDDpcOpw67DuMO8CiAgICAgICAgICIiIgogICAgICAgICApCkBAIC02
NzIsOSArNzcwLDcgQEAgY2xhc3MgVGVzdERvY3Rlc3RzKG9iamVjdCk6CiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBwYXNzZWQgKiJdKQogCiAgICAgZGVmIHRlc3Rf
cmVwb3J0aW5mbyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY2Fz
ZSB0byBtYWtlIHN1cmUgdGhhdCBEb2N0ZXN0SXRlbS5yZXBvcnRpbmZvKCkgcmV0dXJucyBsaW5l
bm8uCi0gICAgICAgICIiIgorICAgICAgICAiIiJNYWtlIHN1cmUgdGhhdCBEb2N0ZXN0SXRlbS5y
ZXBvcnRpbmZvKCkgcmV0dXJucyBsaW5lbm8uIiIiCiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICAgICB0ZXN0X3JlcG9ydGluZm89IiIiCiAgICAgICAgICAgICBkZWYg
Zm9vKHgpOgpAQCAtNzIyLDggKzgxOCw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0cyhvYmplY3QpOgog
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqY29sbGVjdGVkIDEgaXRlbSoi
XSkKIAogCi1jbGFzcyBUZXN0TGl0ZXJhbHMob2JqZWN0KToKLQorY2xhc3MgVGVzdExpdGVyYWxz
OgogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiY29uZmlnX21vZGUiLCBbImluaSIsICJj
b21tZW50Il0pCiAgICAgZGVmIHRlc3RfYWxsb3dfdW5pY29kZShzZWxmLCB0ZXN0ZGlyLCBjb25m
aWdfbW9kZSk6CiAgICAgICAgICIiIlRlc3QgdGhhdCBkb2N0ZXN0cyB3aGljaCBvdXRwdXQgdW5p
Y29kZSB3b3JrIGluIGFsbCBweXRob24gdmVyc2lvbnMKQEAgLTgxNCwxMyArOTA5LDExIEBAIGNs
YXNzIFRlc3RMaXRlcmFscyhvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQogICAgICAg
ICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQotICAgICAgICBwYXNzZWQgPSBpbnQoc3lz
LnZlcnNpb25faW5mb1swXSA+PSAzKQotICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNz
ZWQ9cGFzc2VkLCBmYWlsZWQ9aW50KG5vdCBwYXNzZWQpKQorICAgICAgICByZXByZWMuYXNzZXJ0
b3V0Y29tZShwYXNzZWQ9MSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzX2xpdGVyYWwoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgICIiIlRlc3QgdGhhdCBkb2N0ZXN0cyB3aGljaCBvdXRwdXQgYnl0ZXMg
ZmFpbCBpbiBQeXRob24gMyB3aGVuCi0gICAgICAgIHRoZSBBTExPV19CWVRFUyBvcHRpb24gaXMg
bm90IHVzZWQuIFRoZSBzYW1lIHRlc3Qgc2hvdWxkIHBhc3MKLSAgICAgICAgaW4gUHl0aG9uIDIg
KCMxMjg3KS4KKyAgICAgICAgdGhlIEFMTE9XX0JZVEVTIG9wdGlvbiBpcyBub3QgdXNlZC4gKCMx
Mjg3KS4KICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXR4dGZpbGUoCiAgICAgICAg
ICAgICB0ZXN0X2RvYz0iIiIKQEAgLTgyOSwxMSArOTIyLDE1OSBAQCBjbGFzcyBUZXN0TGl0ZXJh
bHMob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAgcmVwcmVjID0gdGVz
dGRpci5pbmxpbmVfcnVuKCkKLSAgICAgICAgcGFzc2VkID0gaW50KHN5cy52ZXJzaW9uX2luZm9b
MF0gPT0gMikKLSAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPXBhc3NlZCwgZmFp
bGVkPWludChub3QgcGFzc2VkKSkKKyAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUoZmFpbGVk
PTEpCisKKyAgICBkZWYgdGVzdF9udW1iZXJfcmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgX251
bWJlcl9yZSA9IF9nZXRfY2hlY2tlcigpLl9udW1iZXJfcmUgICMgdHlwZTogaWdub3JlCisgICAg
ICAgIGZvciBzIGluIFsKKyAgICAgICAgICAgICIxLiIsCisgICAgICAgICAgICAiKzEuIiwKKyAg
ICAgICAgICAgICItMS4iLAorICAgICAgICAgICAgIi4xIiwKKyAgICAgICAgICAgICIrLjEiLAor
ICAgICAgICAgICAgIi0uMSIsCisgICAgICAgICAgICAiMC4xIiwKKyAgICAgICAgICAgICIrMC4x
IiwKKyAgICAgICAgICAgICItMC4xIiwKKyAgICAgICAgICAgICIxZTUiLAorICAgICAgICAgICAg
IisxZTUiLAorICAgICAgICAgICAgIjFlKzUiLAorICAgICAgICAgICAgIisxZSs1IiwKKyAgICAg
ICAgICAgICIxZS01IiwKKyAgICAgICAgICAgICIrMWUtNSIsCisgICAgICAgICAgICAiLTFlLTUi
LAorICAgICAgICAgICAgIjEuMmUzIiwKKyAgICAgICAgICAgICItMS4yZS0zIiwKKyAgICAgICAg
XToKKyAgICAgICAgICAgIHByaW50KHMpCisgICAgICAgICAgICBtID0gX251bWJlcl9yZS5tYXRj
aChzKQorICAgICAgICAgICAgYXNzZXJ0IG0gaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFzc2Vy
dCBmbG9hdChtLmdyb3VwKCkpID09IHB5dGVzdC5hcHByb3goZmxvYXQocykpCisgICAgICAgIGZv
ciBzIGluIFsiMSIsICJhYmMiXToKKyAgICAgICAgICAgIHByaW50KHMpCisgICAgICAgICAgICBh
c3NlcnQgX251bWJlcl9yZS5tYXRjaChzKSBpcyBOb25lCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImNvbmZpZ19tb2RlIiwgWyJpbmkiLCAiY29tbWVudCJdKQorICAgIGRlZiB0ZXN0
X251bWJlcl9wcmVjaXNpb24oc2VsZiwgdGVzdGRpciwgY29uZmlnX21vZGUpOgorICAgICAgICAi
IiJUZXN0IHRoZSBOVU1CRVIgb3B0aW9uLiIiIgorICAgICAgICBpZiBjb25maWdfbW9kZSA9PSAi
aW5pIjoKKyAgICAgICAgICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgICAgIGRvY3Rlc3Rfb3B0aW9u
ZmxhZ3MgPSBOVU1CRVIKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIGNvbW1lbnQgPSAiIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tbWVudCA9
ICIjZG9jdGVzdDogK05VTUJFUiIKKworICAgICAgICB0ZXN0ZGlyLm1ha2V0eHRmaWxlKAorICAg
ICAgICAgICAgdGVzdF9kb2M9IiIiCisKKyAgICAgICAgICAgIFNjYWxhcnM6CisKKyAgICAgICAg
ICAgID4+PiBpbXBvcnQgbWF0aAorICAgICAgICAgICAgPj4+IG1hdGgucGkge2NvbW1lbnR9Cisg
ICAgICAgICAgICAzLjE0MTU5MjY1MzU4OTc5MworICAgICAgICAgICAgPj4+IG1hdGgucGkge2Nv
bW1lbnR9CisgICAgICAgICAgICAzLjE0MTYKKyAgICAgICAgICAgID4+PiBtYXRoLnBpIHtjb21t
ZW50fQorICAgICAgICAgICAgMy4xNAorICAgICAgICAgICAgPj4+IC1tYXRoLnBpIHtjb21tZW50
fQorICAgICAgICAgICAgLTMuMTQKKyAgICAgICAgICAgID4+PiBtYXRoLnBpIHtjb21tZW50fQor
ICAgICAgICAgICAgMy4KKyAgICAgICAgICAgID4+PiAzLiB7Y29tbWVudH0KKyAgICAgICAgICAg
IDMuMAorICAgICAgICAgICAgPj4+IDMuIHtjb21tZW50fQorICAgICAgICAgICAgMy4KKyAgICAg
ICAgICAgID4+PiAzLiB7Y29tbWVudH0KKyAgICAgICAgICAgIDMuMDEKKyAgICAgICAgICAgID4+
PiAzLiB7Y29tbWVudH0KKyAgICAgICAgICAgIDIuOTkKKyAgICAgICAgICAgID4+PiAuMjk5IHtj
b21tZW50fQorICAgICAgICAgICAgLjMKKyAgICAgICAgICAgID4+PiAuMzAxIHtjb21tZW50fQor
ICAgICAgICAgICAgLjMKKyAgICAgICAgICAgID4+PiA5NTEuIHtjb21tZW50fQorICAgICAgICAg
ICAgMWUzCisgICAgICAgICAgICA+Pj4gMTA0OS4ge2NvbW1lbnR9CisgICAgICAgICAgICAxZTMK
KyAgICAgICAgICAgID4+PiAtMTA0OS4ge2NvbW1lbnR9CisgICAgICAgICAgICAtMWUzCisgICAg
ICAgICAgICA+Pj4gMWUzIHtjb21tZW50fQorICAgICAgICAgICAgMWUzCisgICAgICAgICAgICA+
Pj4gMWUzIHtjb21tZW50fQorICAgICAgICAgICAgMTAwMC4KKworICAgICAgICAgICAgTGlzdHM6
CisKKyAgICAgICAgICAgID4+PiBbMy4xNDE1LCAwLjA5NywgMTMuMSwgNywgOC4yMjIyMmU1LCAw
LjU5OGUtMl0ge2NvbW1lbnR9CisgICAgICAgICAgICBbMy4xNCwgMC4xLCAxMy4sIDcsIDguMjJl
NSwgNi4wZS0zXQorICAgICAgICAgICAgPj4+IFtbMC4zMzMsIDAuNjY3XSwgWzAuOTk5LCAxLjMz
M11dIHtjb21tZW50fQorICAgICAgICAgICAgW1swLjMzLCAwLjY2N10sIFswLjk5OSwgMS4zMzNd
XQorICAgICAgICAgICAgPj4+IFtbWzAuMTAxXV1dIHtjb21tZW50fQorICAgICAgICAgICAgW1tb
MC4xXV1dCisKKyAgICAgICAgICAgIERvZXNuJ3QgYmFyZiBvbiBub24tbnVtYmVyczoKKworICAg
ICAgICAgICAgPj4+ICdhYmMnIHtjb21tZW50fQorICAgICAgICAgICAgJ2FiYycKKyAgICAgICAg
ICAgID4+PiBOb25lIHtjb21tZW50fQorICAgICAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICBjb21tZW50PWNvbW1lbnQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAg
ICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICByZXByZWMuYXNzZXJ0b3V0
Y29tZShwYXNzZWQ9MSkKKworICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAg
ImV4cHJlc3Npb24sb3V0cHV0IiwKKyAgICAgICAgWworICAgICAgICAgICAgIyBpbnRzIHNob3Vs
ZG4ndCBtYXRjaCBmbG9hdHM6CisgICAgICAgICAgICAoIjMuMCIsICIzIiksCisgICAgICAgICAg
ICAoIjNlMCIsICIzIiksCisgICAgICAgICAgICAoIjFlMyIsICIxMDAwIiksCisgICAgICAgICAg
ICAoIjMiLCAiMy4wIiksCisgICAgICAgICAgICAjIFJvdW5kaW5nOgorICAgICAgICAgICAgKCIz
LjEiLCAiMy4wIiksCisgICAgICAgICAgICAoIjMuMSIsICIzLjIiKSwKKyAgICAgICAgICAgICgi
My4xIiwgIjQuMCIpLAorICAgICAgICAgICAgKCI4LjIyZTUiLCAiODEwMDAwLjAiKSwKKyAgICAg
ICAgICAgICMgT25seSB0aGUgYWN0dWFsIG91dHB1dCBpcyByb3VuZGVkIHVwLCBub3QgdGhlIGV4
cGVjdGVkIG91dHB1dDoKKyAgICAgICAgICAgICgiMy4wIiwgIjIuOTgiKSwKKyAgICAgICAgICAg
ICgiMWUzIiwgIjk5OSIpLAorICAgICAgICAgICAgIyBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBkb2Vzbid0IHVuZGVyc3RhbmQgdGhhdCBudW1iZXJzIGluc2lkZQorICAgICAgICAgICAgIyBz
dHJpbmdzIHNob3VsZG4ndCBiZSB0cmVhdGVkIGFzIG51bWJlcnM6CisgICAgICAgICAgICBweXRl
c3QucGFyYW0oIiczLjE0MTYnIiwgIiczLjE0JyIsIG1hcmtzPXB5dGVzdC5tYXJrLnhmYWlsKSwg
ICMgdHlwZTogaWdub3JlCisgICAgICAgIF0sCisgICAgKQorICAgIGRlZiB0ZXN0X251bWJlcl9u
b25fbWF0Y2hlcyhzZWxmLCB0ZXN0ZGlyLCBleHByZXNzaW9uLCBvdXRwdXQpOgorICAgICAgICB0
ZXN0ZGlyLm1ha2V0eHRmaWxlKAorICAgICAgICAgICAgdGVzdF9kb2M9IiIiCisgICAgICAgICAg
ICA+Pj4ge2V4cHJlc3Npb259ICNkb2N0ZXN0OiArTlVNQkVSCisgICAgICAgICAgICB7b3V0cHV0
fQorICAgICAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uPWV4
cHJlc3Npb24sIG91dHB1dD1vdXRwdXQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAg
ICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICByZXByZWMuYXNzZXJ0b3V0
Y29tZShwYXNzZWQ9MCwgZmFpbGVkPTEpCisKKyAgICBkZWYgdGVzdF9udW1iZXJfYW5kX2FsbG93
X3VuaWNvZGUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXR4dGZpbGUoCisg
ICAgICAgICAgICB0ZXN0X2RvYz0iIiIKKyAgICAgICAgICAgID4+PiBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBuYW1lZHR1cGxlCisgICAgICAgICAgICA+Pj4gVCA9IG5hbWVkdHVwbGUoJ1QnLCAn
YSBiIGMnKQorICAgICAgICAgICAgPj4+IFQoYT0wLjIzMzAwMDAwMDEsIGI9dSdzdHInLCBjPWIn
Ynl0ZXMnKSAjIGRvY3Rlc3Q6ICtBTExPV19VTklDT0RFLCArQUxMT1dfQllURVMsICtOVU1CRVIK
KyAgICAgICAgICAgIFQoYT0wLjIzMywgYj11J3N0cicsIGM9J2J5dGVzJykKKyAgICAgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCisg
ICAgICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCiAKLWNsYXNzIFRlc3REb2N0
ZXN0U2tpcHMob2JqZWN0KToKK2NsYXNzIFRlc3REb2N0ZXN0U2tpcHM6CiAgICAgIiIiCiAgICAg
SWYgYWxsIGV4YW1wbGVzIGluIGEgZG9jdGVzdCBhcmUgc2tpcHBlZCBkdWUgdG8gdGhlIFNLSVAg
b3B0aW9uLCB0aGVuCiAgICAgdGhlIHRlc3RzIHNob3VsZCBiZSBTS0lQUEVEIHJhdGhlciB0aGFu
IFBBU1NFRC4gKCM5NTcpCkBAIC04NDEsNyArMTA4Miw2IEBAIGNsYXNzIFRlc3REb2N0ZXN0U2tp
cHMob2JqZWN0KToKIAogICAgIEBweXRlc3QuZml4dHVyZShwYXJhbXM9WyJ0ZXh0IiwgIm1vZHVs
ZSJdKQogICAgIGRlZiBtYWtlZG9jdGVzdChzZWxmLCB0ZXN0ZGlyLCByZXF1ZXN0KToKLQogICAg
ICAgICBkZWYgbWFrZWl0KGRvY3Rlc3QpOgogICAgICAgICAgICAgbW9kZSA9IHJlcXVlc3QucGFy
YW0KICAgICAgICAgICAgIGlmIG1vZGUgPT0gInRleHQiOgpAQCAtOTE1LDEzICsxMTU1LDEyIEBA
IGNsYXNzIFRlc3REb2N0ZXN0U2tpcHMob2JqZWN0KToKICAgICAgICAgKQogCiAKLWNsYXNzIFRl
c3REb2N0ZXN0QXV0b1VzZUZpeHR1cmVzKG9iamVjdCk6CitjbGFzcyBUZXN0RG9jdGVzdEF1dG9V
c2VGaXh0dXJlczoKIAogICAgIFNDT1BFUyA9IFsibW9kdWxlIiwgInNlc3Npb24iLCAiY2xhc3Mi
LCAiZnVuY3Rpb24iXQogCiAgICAgZGVmIHRlc3RfZG9jdGVzdF9tb2R1bGVfc2Vzc2lvbl9maXh0
dXJlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiJUZXN0IHRoYXQgc2Vzc2lvbiBmaXh0dXJl
cyBhcmUgaW5pdGlhbGl6ZWQgZm9yIGRvY3Rlc3QgbW9kdWxlcyAoIzc2OCkKLSAgICAgICAgIiIi
CisgICAgICAgICIiIlRlc3QgdGhhdCBzZXNzaW9uIGZpeHR1cmVzIGFyZSBpbml0aWFsaXplZCBm
b3IgZG9jdGVzdCBtb2R1bGVzICgjNzY4KS4iIiIKICAgICAgICAgIyBzZXNzaW9uIGZpeHR1cmUg
d2hpY2ggY2hhbmdlcyBzb21lIGdsb2JhbCBkYXRhLCB3aGljaCB3aWxsCiAgICAgICAgICMgYmUg
YWNjZXNzZWQgYnkgZG9jdGVzdHMgaW4gYSBtb2R1bGUKICAgICAgICAgdGVzdGRpci5tYWtlY29u
ZnRlc3QoCkBAIC05MjksNyArMTE2OCw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0QXV0b1VzZUZpeHR1
cmVzKG9iamVjdCk6CiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBpbXBv
cnQgc3lzCiAKLSAgICAgICAgICAgIEBweXRlc3QueWllbGRfZml4dHVyZShhdXRvdXNlPVRydWUs
IHNjb3BlPSdzZXNzaW9uJykKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRy
dWUsIHNjb3BlPSdzZXNzaW9uJykKICAgICAgICAgICAgIGRlZiBteWZpeHR1cmUoKToKICAgICAg
ICAgICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAncHl0ZXN0X3Nlc3Npb25fZGF0YScp
CiAgICAgICAgICAgICAgICAgc3lzLnB5dGVzdF9zZXNzaW9uX2RhdGEgPSAxCkBAIC05NTMsNyAr
MTE5Miw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0QXV0b1VzZUZpeHR1cmVzKG9iamVjdCk6CiAgICAg
ICAgICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
LWRvY3Rlc3QtbW9kdWxlcyIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygi
KjIgcGFzc2VkKiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBh
c3NlZCoiXSkKIAogICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgic2NvcGUiLCBTQ09QRVMp
CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJlbmFibGVfZG9jdGVzdCIsIFtUcnVlLCBG
YWxzZV0pCkBAIC0xMDIzLDcgKzEyNjIsNyBAQCBjbGFzcyBUZXN0RG9jdGVzdEF1dG9Vc2VGaXh0
dXJlcyhvYmplY3QpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWRvY3Rlc3QtbW9kdWxlcyIpCi0gICAgICAgIGFz
c2VydCAiRkFJTFVSRVMiIG5vdCBpbiBzdHIocmVzdWx0LnN0ZG91dC5zdHIoKSkKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipGQUlMVVJFUyoiKQogICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqPT09IDEgcGFzc2VkIGluICoiXSkKIAogICAgIEBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgic2NvcGUiLCBTQ09QRVMpCkBAIC0xMDU1LDExICsxMjk0
LDExIEBAIGNsYXNzIFRlc3REb2N0ZXN0QXV0b1VzZUZpeHR1cmVzKG9iamVjdCk6CiAgICAgICAg
ICIiIgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWRv
Y3Rlc3QtbW9kdWxlcyIpCi0gICAgICAgIGFzc2VydCAiRkFJTFVSRVMiIG5vdCBpbiBzdHIocmVz
dWx0LnN0ZG91dC5zdHIoKSkKKyAgICAgICAgc3RyKHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqRkFJTFVSRVMqIikpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
Iio9PT0gMSBwYXNzZWQgaW4gKiJdKQogCiAKLWNsYXNzIFRlc3REb2N0ZXN0TmFtZXNwYWNlRml4
dHVyZShvYmplY3QpOgorY2xhc3MgVGVzdERvY3Rlc3ROYW1lc3BhY2VGaXh0dXJlOgogCiAgICAg
U0NPUEVTID0gWyJtb2R1bGUiLCAic2Vzc2lvbiIsICJjbGFzcyIsICJmdW5jdGlvbiJdCiAKQEAg
LTExMjEsOCArMTM2MCw3IEBAIGNsYXNzIFRlc3REb2N0ZXN0TmFtZXNwYWNlRml4dHVyZShvYmpl
Y3QpOgogICAgICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSkKIAogCi1jbGFzcyBU
ZXN0RG9jdGVzdFJlcG9ydGluZ09wdGlvbihvYmplY3QpOgotCitjbGFzcyBUZXN0RG9jdGVzdFJl
cG9ydGluZ09wdGlvbjoKICAgICBkZWYgX3J1bl9kb2N0ZXN0X3JlcG9ydChzZWxmLCB0ZXN0ZGly
LCBmb3JtYXQpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIK
QEAgLTEyMDQsMyArMTQ0Miw2OSBAQCBjbGFzcyBUZXN0RG9jdGVzdFJlcG9ydGluZ09wdGlvbihv
YmplY3QpOgogICAgICAgICAgICAgICAgICIqZXJyb3I6IGFyZ3VtZW50IC0tZG9jdGVzdC1yZXBv
cnQ6IGludmFsaWQgY2hvaWNlOiAnb2J2aW91c2x5X2ludmFsaWRfZm9ybWF0JyAoY2hvb3NlIGZy
b20qIgogICAgICAgICAgICAgXQogICAgICAgICApCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJtb2NrX21vZHVsZSIsIFsibW9jayIsICJ1bml0dGVzdC5tb2NrIl0pCitkZWYgdGVzdF9k
b2N0ZXN0X21vY2tfb2JqZWN0c19kb250X3JlY3Vyc2VfbWlzc2JlaGF2ZWQobW9ja19tb2R1bGUs
IHRlc3RkaXIpOgorICAgIHB5dGVzdC5pbXBvcnRvcnNraXAobW9ja19tb2R1bGUpCisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZnJvbSB7bW9ja19tb2R1bGV9
IGltcG9ydCBjYWxsCisgICAgICAgIGNsYXNzIEV4YW1wbGUob2JqZWN0KToKKyAgICAgICAgICAg
ICcnJworICAgICAgICAgICAgPj4+IDEgKyAxCisgICAgICAgICAgICAyCisgICAgICAgICAgICAn
JycKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIG1vY2tfbW9kdWxlPW1vY2tfbW9k
dWxlCisgICAgICAgICkKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
ZG9jdGVzdC1tb2R1bGVzIikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEg
cGFzc2VkICoiXSkKKworCitjbGFzcyBCcm9rZW46CisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYs
IF8pOgorICAgICAgICByYWlzZSBLZXlFcnJvcigiVGhpcyBzaG91bGQgYmUgYW4gQXR0cmlidXRl
RXJyb3IiKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSggICMgcHJhZ21hOiBubyBicmFu
Y2ggKGxhbWJkYXMgYXJlIG5vdCBjYWxsZWQpCisgICAgInN0b3AiLCBbTm9uZSwgX2lzX21vY2tl
ZCwgbGFtYmRhIGY6IE5vbmUsIGxhbWJkYSBmOiBGYWxzZSwgbGFtYmRhIGY6IFRydWVdCispCitk
ZWYgdGVzdF93YXJuaW5nX29uX3Vud3JhcF9vZl9icm9rZW5fb2JqZWN0KAorICAgIHN0b3A6IE9w
dGlvbmFsW0NhbGxhYmxlW1tvYmplY3RdLCBvYmplY3RdXQorKSAtPiBOb25lOgorICAgIGJhZF9p
bnN0YW5jZSA9IEJyb2tlbigpCisgICAgYXNzZXJ0IGluc3BlY3QudW53cmFwLl9fbW9kdWxlX18g
PT0gImluc3BlY3QiCisgICAgd2l0aCBfcGF0Y2hfdW53cmFwX21vY2tfYXdhcmUoKToKKyAgICAg
ICAgYXNzZXJ0IGluc3BlY3QudW53cmFwLl9fbW9kdWxlX18gIT0gImluc3BlY3QiCisgICAgICAg
IHdpdGggcHl0ZXN0Lndhcm5zKAorICAgICAgICAgICAgcHl0ZXN0LlB5dGVzdFdhcm5pbmcsIG1h
dGNoPSJeR290IEtleUVycm9yLiogd2hlbiB1bndyYXBwaW5nIgorICAgICAgICApOgorICAgICAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICBpbnNw
ZWN0LnVud3JhcChiYWRfaW5zdGFuY2UsIHN0b3A9c3RvcCkgICMgdHlwZTogaWdub3JlW2FyZy10
eXBlXQorICAgIGFzc2VydCBpbnNwZWN0LnVud3JhcC5fX21vZHVsZV9fID09ICJpbnNwZWN0Igor
CisKK2RlZiB0ZXN0X2lzX3NldHVwX3B5X25vdF9uYW1lZF9zZXR1cF9weSh0bXBkaXIpOgorICAg
IG5vdF9zZXR1cF9weSA9IHRtcGRpci5qb2luKCJub3Rfc2V0dXAucHkiKQorICAgIG5vdF9zZXR1
cF9weS53cml0ZSgnZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cDsgc2V0dXAobmFtZT0iZm9v
IiknKQorICAgIGFzc2VydCBub3QgX2lzX3NldHVwX3B5KG5vdF9zZXR1cF9weSkKKworCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1vZCIsICgic2V0dXB0b29scyIsICJkaXN0dXRpbHMuY29y
ZSIpKQorZGVmIHRlc3RfaXNfc2V0dXBfcHlfaXNfYV9zZXR1cF9weSh0bXBkaXIsIG1vZCk6Cisg
ICAgc2V0dXBfcHkgPSB0bXBkaXIuam9pbigic2V0dXAucHkiKQorICAgIHNldHVwX3B5LndyaXRl
KCdmcm9tIHt9IGltcG9ydCBzZXR1cDsgc2V0dXAobmFtZT0iZm9vIiknLmZvcm1hdChtb2QpKQor
ICAgIGFzc2VydCBfaXNfc2V0dXBfcHkoc2V0dXBfcHkpCisKKworQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJtb2QiLCAoInNldHVwdG9vbHMiLCAiZGlzdHV0aWxzLmNvcmUiKSkKK2RlZiB0ZXN0
X2lzX3NldHVwX3B5X2RpZmZlcmVudF9lbmNvZGluZyh0bXBkaXIsIG1vZCk6CisgICAgc2V0dXBf
cHkgPSB0bXBkaXIuam9pbigic2V0dXAucHkiKQorICAgIGNvbnRlbnRzID0gKAorICAgICAgICAi
IyAtKi0gY29kaW5nOiBjcDEyNTIgLSotXG4iCisgICAgICAgICdmcm9tIHt9IGltcG9ydCBzZXR1
cDsgc2V0dXAobmFtZT0iZm9vIiwgZGVzY3JpcHRpb249IuKCrCIpXG4nLmZvcm1hdChtb2QpCisg
ICAgKQorICAgIHNldHVwX3B5LndyaXRlX2JpbmFyeShjb250ZW50cy5lbmNvZGUoImNwMTI1MiIp
KQorICAgIGFzc2VydCBfaXNfc2V0dXBfcHkoc2V0dXBfcHkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfZW50cnlfcG9pbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X2VudHJ5X3BvaW50cy5weQppbmRleCA4ZjczNDc3OGZhYTguLjVkMDAzMTI3MzYzZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2VudHJ5X3BvaW50cy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZW50cnlfcG9pbnRzLnB5CkBAIC0xLDE0ICsxLDcgQEAK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRf
ZnVuY3Rpb24KLWltcG9ydCBwa2dfcmVzb3VyY2VzCi0KLWltcG9ydCBweXRlc3QKLQotCi1AcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoImVudHJ5cG9pbnQiLCBbInB5LnRlc3QiLCAicHl0ZXN0Il0p
Ci1kZWYgdGVzdF9lbnRyeV9wb2ludF9leGlzdChlbnRyeXBvaW50KToKLSAgICBhc3NlcnQgZW50
cnlwb2ludCBpbiBwa2dfcmVzb3VyY2VzLmdldF9lbnRyeV9tYXAoInB5dGVzdCIpWyJjb25zb2xl
X3NjcmlwdHMiXQorZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgaW1wb3J0bGliX21ldGFkYXRh
CiAKIAogZGVmIHRlc3RfcHl0ZXN0X2VudHJ5X3BvaW50c19hcmVfaWRlbnRpY2FsKCk6Ci0gICAg
ZW50cnlNYXAgPSBwa2dfcmVzb3VyY2VzLmdldF9lbnRyeV9tYXAoInB5dGVzdCIpWyJjb25zb2xl
X3NjcmlwdHMiXQotICAgIGFzc2VydCBlbnRyeU1hcFsicHl0ZXN0Il0ubW9kdWxlX25hbWUgPT0g
ZW50cnlNYXBbInB5LnRlc3QiXS5tb2R1bGVfbmFtZQorICAgIGRpc3QgPSBpbXBvcnRsaWJfbWV0
YWRhdGEuZGlzdHJpYnV0aW9uKCJweXRlc3QiKQorICAgIGVudHJ5X21hcCA9IHtlcC5uYW1lOiBl
cCBmb3IgZXAgaW4gZGlzdC5lbnRyeV9wb2ludHN9CisgICAgYXNzZXJ0IGVudHJ5X21hcFsicHl0
ZXN0Il0udmFsdWUgPT0gZW50cnlfbWFwWyJweS50ZXN0Il0udmFsdWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9lcnJvcl9kaWZmcy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9lcnJvcl9kaWZmcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjI4NTdkZjgzMjM2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9lcnJvcl9kaWZmcy5weQpAQCAtMCwwICsxLDI4MiBAQAorIiIiCitUZXN0cyBhbmQg
ZXhhbXBsZXMgZm9yIGNvcnJlY3QgIisvLSIgdXNhZ2UgaW4gZXJyb3IgZGlmZnMuCisKK1NlZSBo
dHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzMzMzMgZm9yIGRldGFp
bHMuCisKKyIiIgoraW1wb3J0IHN5cworCitpbXBvcnQgcHl0ZXN0CisKKworVEVTVENBU0VTID0g
WworICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMo
KToKKyAgICAgICAgICAgIHJlc3VsdCA9ICAgWzEsIDQsIDNdCisgICAgICAgICAgICBleHBlY3Rl
ZCA9IFsxLCAyLCAzXQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAg
ICAgICAiIiIsCisgICAgICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCByZXN1bHQgPT0g
ZXhwZWN0ZWQKKyAgICAgICAgRSAgICAgICBhc3NlcnQgWzEsIDQsIDNdID09IFsxLCAyLCAzXQor
ICAgICAgICBFICAgICAgICAgQXQgaW5kZXggMSBkaWZmOiA0ICE9IDIKKyAgICAgICAgRSAgICAg
ICAgIEZ1bGwgZGlmZjoKKyAgICAgICAgRSAgICAgICAgIC0gWzEsIDIsIDNdCisgICAgICAgIEUg
ICAgICAgICA/ICAgICBeCisgICAgICAgIEUgICAgICAgICArIFsxLCA0LCAzXQorICAgICAgICBF
ICAgICAgICAgPyAgICAgXgorICAgICAgICAiIiIsCisgICAgICAgIGlkPSJDb21wYXJlIGxpc3Rz
LCBvbmUgaXRlbSBkaWZmZXJzIiwKKyAgICApLAorICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
IiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMoKToKKyAgICAgICAgICAgIHJlc3VsdCA9ICAgWzEs
IDIsIDNdCisgICAgICAgICAgICBleHBlY3RlZCA9IFsxLCAyXQorICAgICAgICAgICAgYXNzZXJ0
IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICAiIiIsCisgICAgICAgICIiIgorICAgICAgICA+
ICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhwZWN0ZWQKKyAgICAgICAgRSAgICAgICBhc3NlcnQg
WzEsIDIsIDNdID09IFsxLCAyXQorICAgICAgICBFICAgICAgICAgTGVmdCBjb250YWlucyBvbmUg
bW9yZSBpdGVtOiAzCisgICAgICAgIEUgICAgICAgICBGdWxsIGRpZmY6CisgICAgICAgIEUgICAg
ICAgICAtIFsxLCAyXQorICAgICAgICBFICAgICAgICAgKyBbMSwgMiwgM10KKyAgICAgICAgRSAg
ICAgICAgID8gICAgICArKysKKyAgICAgICAgIiIiLAorICAgICAgICBpZD0iQ29tcGFyZSBsaXN0
cywgb25lIGV4dHJhIGl0ZW0iLAorICAgICksCisgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAi
IiIKKyAgICAgICAgZGVmIHRlc3RfdGhpcygpOgorICAgICAgICAgICAgcmVzdWx0ID0gICBbMSwg
M10KKyAgICAgICAgICAgIGV4cGVjdGVkID0gWzEsIDIsIDNdCisgICAgICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgICIiIiwKKyAgICAgICAgIiIiCisgICAgICAgID4g
ICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICBFICAgICAgIGFzc2VydCBb
MSwgM10gPT0gWzEsIDIsIDNdCisgICAgICAgIEUgICAgICAgICBBdCBpbmRleCAxIGRpZmY6IDMg
IT0gMgorICAgICAgICBFICAgICAgICAgUmlnaHQgY29udGFpbnMgb25lIG1vcmUgaXRlbTogMwor
ICAgICAgICBFICAgICAgICAgRnVsbCBkaWZmOgorICAgICAgICBFICAgICAgICAgLSBbMSwgMiwg
M10KKyAgICAgICAgRSAgICAgICAgID8gICAgIC0tLQorICAgICAgICBFICAgICAgICAgKyBbMSwg
M10KKyAgICAgICAgIiIiLAorICAgICAgICBpZD0iQ29tcGFyZSBsaXN0cywgb25lIGl0ZW0gbWlz
c2luZyIsCisgICAgKSwKKyAgICBweXRlc3QucGFyYW0oCisgICAgICAgICIiIgorICAgICAgICBk
ZWYgdGVzdF90aGlzKCk6CisgICAgICAgICAgICByZXN1bHQgPSAgICgxLCA0LCAzKQorICAgICAg
ICAgICAgZXhwZWN0ZWQgPSAoMSwgMiwgMykKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQgPT0g
ZXhwZWN0ZWQKKyAgICAgICAgIiIiLAorICAgICAgICAiIiIKKyAgICAgICAgPiAgICAgICBhc3Nl
cnQgcmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgIEUgICAgICAgYXNzZXJ0ICgxLCA0LCAzKSA9
PSAoMSwgMiwgMykKKyAgICAgICAgRSAgICAgICAgIEF0IGluZGV4IDEgZGlmZjogNCAhPSAyCisg
ICAgICAgIEUgICAgICAgICBGdWxsIGRpZmY6CisgICAgICAgIEUgICAgICAgICAtICgxLCAyLCAz
KQorICAgICAgICBFICAgICAgICAgPyAgICAgXgorICAgICAgICBFICAgICAgICAgKyAoMSwgNCwg
MykKKyAgICAgICAgRSAgICAgICAgID8gICAgIF4KKyAgICAgICAgIiIiLAorICAgICAgICBpZD0i
Q29tcGFyZSB0dXBsZXMiLAorICAgICksCisgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAiIiIK
KyAgICAgICAgZGVmIHRlc3RfdGhpcygpOgorICAgICAgICAgICAgcmVzdWx0ID0gICB7MSwgMywg
NH0KKyAgICAgICAgICAgIGV4cGVjdGVkID0gezEsIDIsIDN9CisgICAgICAgICAgICBhc3NlcnQg
cmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgICIiIiwKKyAgICAgICAgIiIiCisgICAgICAgID4g
ICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICBFICAgICAgIGFzc2VydCB7
MSwgMywgNH0gPT0gezEsIDIsIDN9CisgICAgICAgIEUgICAgICAgICBFeHRyYSBpdGVtcyBpbiB0
aGUgbGVmdCBzZXQ6CisgICAgICAgIEUgICAgICAgICA0CisgICAgICAgIEUgICAgICAgICBFeHRy
YSBpdGVtcyBpbiB0aGUgcmlnaHQgc2V0OgorICAgICAgICBFICAgICAgICAgMgorICAgICAgICBF
ICAgICAgICAgRnVsbCBkaWZmOgorICAgICAgICBFICAgICAgICAgLSB7MSwgMiwgM30KKyAgICAg
ICAgRSAgICAgICAgID8gICAgIF4gIF4KKyAgICAgICAgRSAgICAgICAgICsgezEsIDMsIDR9Cisg
ICAgICAgIEUgICAgICAgICA/ICAgICBeICBeCisgICAgICAgICIiIiwKKyAgICAgICAgaWQ9IkNv
bXBhcmUgc2V0cyIsCisgICAgKSwKKyAgICBweXRlc3QucGFyYW0oCisgICAgICAgICIiIgorICAg
ICAgICBkZWYgdGVzdF90aGlzKCk6CisgICAgICAgICAgICByZXN1bHQgPSAgIHsxOiAnc3BhbScs
IDM6ICdlZ2dzJ30KKyAgICAgICAgICAgIGV4cGVjdGVkID0gezE6ICdzcGFtJywgMjogJ2VnZ3Mn
fQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICAiIiIsCisg
ICAgICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhwZWN0ZWQKKyAg
ICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IHsxOiAnc3BhbScsIDM6ICdlZ2dz
J30gPT0gezE6ICdzcGFtJywgMjogJ2VnZ3MnfQorICAgICAgICBFICAgICAgICAgQ29tbW9uIGl0
ZW1zOgorICAgICAgICBFICAgICAgICAgezE6ICdzcGFtJ30KKyAgICAgICAgRSAgICAgICAgIExl
ZnQgY29udGFpbnMgMSBtb3JlIGl0ZW06CisgICAgICAgIEUgICAgICAgICB7MzogJ2VnZ3MnfQor
ICAgICAgICBFICAgICAgICAgUmlnaHQgY29udGFpbnMgMSBtb3JlIGl0ZW06CisgICAgICAgIEUg
ICAgICAgICB7MjogJ2VnZ3MnfQorICAgICAgICBFICAgICAgICAgRnVsbCBkaWZmOgorICAgICAg
ICBFICAgICAgICAgLSB7MTogJ3NwYW0nLCAyOiAnZWdncyd9CisgICAgICAgIEUgICAgICAgICA/
ICAgICAgICAgICAgIF4KKyAgICAgICAgRSAgICAgICAgICsgezE6ICdzcGFtJywgMzogJ2VnZ3Mn
fQorICAgICAgICBFICAgICAgICAgPyAgICAgICAgICAgICBeCisgICAgICAgICIiIiwKKyAgICAg
ICAgaWQ9IkNvbXBhcmUgZGljdHMgd2l0aCBkaWZmZXJpbmcga2V5cyIsCisgICAgKSwKKyAgICBw
eXRlc3QucGFyYW0oCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90aGlzKCk6CisgICAg
ICAgICAgICByZXN1bHQgPSAgIHsxOiAnc3BhbScsIDI6ICdlZ2dzJ30KKyAgICAgICAgICAgIGV4
cGVjdGVkID0gezE6ICdzcGFtJywgMjogJ2JhY29uJ30KKyAgICAgICAgICAgIGFzc2VydCByZXN1
bHQgPT0gZXhwZWN0ZWQKKyAgICAgICAgIiIiLAorICAgICAgICAiIiIKKyAgICAgICAgPiAgICAg
ICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgIEUgICAgICAgQXNzZXJ0aW9uRXJy
b3I6IGFzc2VydCB7MTogJ3NwYW0nLCAyOiAnZWdncyd9ID09IHsxOiAnc3BhbScsIDI6ICdiYWNv
bid9CisgICAgICAgIEUgICAgICAgICBDb21tb24gaXRlbXM6CisgICAgICAgIEUgICAgICAgICB7
MTogJ3NwYW0nfQorICAgICAgICBFICAgICAgICAgRGlmZmVyaW5nIGl0ZW1zOgorICAgICAgICBF
ICAgICAgICAgezI6ICdlZ2dzJ30gIT0gezI6ICdiYWNvbid9CisgICAgICAgIEUgICAgICAgICBG
dWxsIGRpZmY6CisgICAgICAgIEUgICAgICAgICAtIHsxOiAnc3BhbScsIDI6ICdiYWNvbid9Cisg
ICAgICAgIEUgICAgICAgICA/ICAgICAgICAgICAgICAgICBeXl5eXgorICAgICAgICBFICAgICAg
ICAgKyB7MTogJ3NwYW0nLCAyOiAnZWdncyd9CisgICAgICAgIEUgICAgICAgICA/ICAgICAgICAg
ICAgICAgICBeXl5eCisgICAgICAgICIiIiwKKyAgICAgICAgaWQ9IkNvbXBhcmUgZGljdHMgd2l0
aCBkaWZmZXJpbmcgdmFsdWVzIiwKKyAgICApLAorICAgIHB5dGVzdC5wYXJhbSgKKyAgICAgICAg
IiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMoKToKKyAgICAgICAgICAgIHJlc3VsdCA9ICAgezE6
ICdzcGFtJywgMjogJ2VnZ3MnfQorICAgICAgICAgICAgZXhwZWN0ZWQgPSB7MTogJ3NwYW0nLCAz
OiAnYmFjb24nfQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAg
ICAiIiIsCisgICAgICAgICIiIgorICAgICAgICA+ICAgICAgIGFzc2VydCByZXN1bHQgPT0gZXhw
ZWN0ZWQKKyAgICAgICAgRSAgICAgICBBc3NlcnRpb25FcnJvcjogYXNzZXJ0IHsxOiAnc3BhbScs
IDI6ICdlZ2dzJ30gPT0gezE6ICdzcGFtJywgMzogJ2JhY29uJ30KKyAgICAgICAgRSAgICAgICAg
IENvbW1vbiBpdGVtczoKKyAgICAgICAgRSAgICAgICAgIHsxOiAnc3BhbSd9CisgICAgICAgIEUg
ICAgICAgICBMZWZ0IGNvbnRhaW5zIDEgbW9yZSBpdGVtOgorICAgICAgICBFICAgICAgICAgezI6
ICdlZ2dzJ30KKyAgICAgICAgRSAgICAgICAgIFJpZ2h0IGNvbnRhaW5zIDEgbW9yZSBpdGVtOgor
ICAgICAgICBFICAgICAgICAgezM6ICdiYWNvbid9CisgICAgICAgIEUgICAgICAgICBGdWxsIGRp
ZmY6CisgICAgICAgIEUgICAgICAgICAtIHsxOiAnc3BhbScsIDM6ICdiYWNvbid9CisgICAgICAg
IEUgICAgICAgICA/ICAgICAgICAgICAgIF4gICBeXl5eXgorICAgICAgICBFICAgICAgICAgKyB7
MTogJ3NwYW0nLCAyOiAnZWdncyd9CisgICAgICAgIEUgICAgICAgICA/ICAgICAgICAgICAgIF4g
ICBeXl5eCisgICAgICAgICIiIiwKKyAgICAgICAgaWQ9IkNvbXBhcmUgZGljdHMgd2l0aCBkaWZm
ZXJpbmcgaXRlbXMiLAorICAgICksCisgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAiIiIKKyAg
ICAgICAgZGVmIHRlc3RfdGhpcygpOgorICAgICAgICAgICAgcmVzdWx0ID0gICAic3BtYWVnZ3Mi
CisgICAgICAgICAgICBleHBlY3RlZCA9ICJzcGFtZWdncyIKKyAgICAgICAgICAgIGFzc2VydCBy
ZXN1bHQgPT0gZXhwZWN0ZWQKKyAgICAgICAgIiIiLAorICAgICAgICAiIiIKKyAgICAgICAgPiAg
ICAgICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgIEUgICAgICAgQXNzZXJ0aW9u
RXJyb3I6IGFzc2VydCAnc3BtYWVnZ3MnID09ICdzcGFtZWdncycKKyAgICAgICAgRSAgICAgICAg
IC0gc3BhbWVnZ3MKKyAgICAgICAgRSAgICAgICAgID8gICAgLQorICAgICAgICBFICAgICAgICAg
KyBzcG1hZWdncworICAgICAgICBFICAgICAgICAgPyAgICsKKyAgICAgICAgIiIiLAorICAgICAg
ICBpZD0iQ29tcGFyZSBzdHJpbmdzIiwKKyAgICApLAorICAgIHB5dGVzdC5wYXJhbSgKKyAgICAg
ICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X3RoaXMoKToKKyAgICAgICAgICAgIHJlc3VsdCA9ICAg
InNwYW0gYmFjb24gZWdncyIKKyAgICAgICAgICAgIGFzc2VydCAiYmFjb24iIG5vdCBpbiByZXN1
bHQKKyAgICAgICAgIiIiLAorICAgICAgICAiIiIKKyAgICAgICAgPiAgICAgICBhc3NlcnQgImJh
Y29uIiBub3QgaW4gcmVzdWx0CisgICAgICAgIEUgICAgICAgQXNzZXJ0aW9uRXJyb3I6IGFzc2Vy
dCAnYmFjb24nIG5vdCBpbiAnc3BhbSBiYWNvbiBlZ2dzJworICAgICAgICBFICAgICAgICAgJ2Jh
Y29uJyBpcyBjb250YWluZWQgaGVyZToKKyAgICAgICAgRSAgICAgICAgICAgc3BhbSBiYWNvbiBl
Z2dzCisgICAgICAgIEUgICAgICAgICA/ICAgICAgKysrKysKKyAgICAgICAgIiIiLAorICAgICAg
ICBpZD0nVGVzdCAibm90IGluIiBzdHJpbmcnLAorICAgICksCitdCitpZiBzeXMudmVyc2lvbl9p
bmZvWzoyXSA+PSAoMywgNyk6CisgICAgVEVTVENBU0VTLmV4dGVuZCgKKyAgICAgICAgWworICAg
ICAgICAgICAgcHl0ZXN0LnBhcmFtKAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAg
ICAgIGZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworCisgICAgICAgICAgICAgICAg
QGRhdGFjbGFzcworICAgICAgICAgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICAgICAgICAg
IGE6IGludAorICAgICAgICAgICAgICAgICAgICBiOiBzdHIKKworICAgICAgICAgICAgICAgIGRl
ZiB0ZXN0X3RoaXMoKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gICBBKDEsICdzcGFt
JykKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBBKDIsICdzcGFtJykKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICAgICAgICAgICIi
IiwKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICA+ICAgICAgIGFzc2VydCBy
ZXN1bHQgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICBFICAgICAgIEFzc2VydGlvbkVycm9y
OiBhc3NlcnQgQShhPTEsIGI9J3NwYW0nKSA9PSBBKGE9MiwgYj0nc3BhbScpCisgICAgICAgICAg
ICAgICAgRSAgICAgICAgIE1hdGNoaW5nIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAgRSAg
ICAgICAgIFsnYiddCisgICAgICAgICAgICAgICAgRSAgICAgICAgIERpZmZlcmluZyBhdHRyaWJ1
dGVzOgorICAgICAgICAgICAgICAgIEUgICAgICAgICBbJ2EnXQorICAgICAgICAgICAgICAgIEUg
ICAgICAgICBEcmlsbCBkb3duIGludG8gZGlmZmVyaW5nIGF0dHJpYnV0ZSBhOgorICAgICAgICAg
ICAgICAgIEUgICAgICAgICAgIGE6IDEgIT0gMgorICAgICAgICAgICAgICAgIEUgICAgICAgICAg
ICsxCisgICAgICAgICAgICAgICAgRSAgICAgICAgICAgLTIKKyAgICAgICAgICAgICAgICAiIiIs
CisgICAgICAgICAgICAgICAgaWQ9IkNvbXBhcmUgZGF0YSBjbGFzc2VzIiwKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICBweXRlc3QucGFyYW0oCisgICAgICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICAgICAgaW1wb3J0IGF0dHIKKworICAgICAgICAgICAgICAgIEBhdHRyLnMoYXV0b19h
dHRyaWJzPVRydWUpCisgICAgICAgICAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgICAgICAg
ICAgYTogaW50CisgICAgICAgICAgICAgICAgICAgIGI6IHN0cgorCisgICAgICAgICAgICAgICAg
ZGVmIHRlc3RfdGhpcygpOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAgIEEoMSwgJ3Nw
YW0nKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IEEoMSwgJ2VnZ3MnKQorICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgcmVzdWx0ID09IGV4cGVjdGVkCisgICAgICAgICAgICAgICAg
IiIiLAorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgID4gICAgICAgYXNzZXJ0
IHJlc3VsdCA9PSBleHBlY3RlZAorICAgICAgICAgICAgICAgIEUgICAgICAgQXNzZXJ0aW9uRXJy
b3I6IGFzc2VydCBBKGE9MSwgYj0nc3BhbScpID09IEEoYT0xLCBiPSdlZ2dzJykKKyAgICAgICAg
ICAgICAgICBFICAgICAgICAgTWF0Y2hpbmcgYXR0cmlidXRlczoKKyAgICAgICAgICAgICAgICBF
ICAgICAgICAgWydhJ10KKyAgICAgICAgICAgICAgICBFICAgICAgICAgRGlmZmVyaW5nIGF0dHJp
YnV0ZXM6CisgICAgICAgICAgICAgICAgRSAgICAgICAgIFsnYiddCisgICAgICAgICAgICAgICAg
RSAgICAgICAgIERyaWxsIGRvd24gaW50byBkaWZmZXJpbmcgYXR0cmlidXRlIGI6CisgICAgICAg
ICAgICAgICAgRSAgICAgICAgICAgYjogJ3NwYW0nICE9ICdlZ2dzJworICAgICAgICAgICAgICAg
IEUgICAgICAgICAgIC0gZWdncworICAgICAgICAgICAgICAgIEUgICAgICAgICAgICsgc3BhbQor
ICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICBpZD0iQ29tcGFyZSBhdHRycyBj
bGFzc2VzIiwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKyAgICApCisKKworQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJjb2RlLCBleHBlY3RlZCIsIFRFU1RDQVNFUykKK2RlZiB0ZXN0X2Vy
cm9yX2RpZmYoY29kZSwgZXhwZWN0ZWQsIHRlc3RkaXIpOgorICAgIGV4cGVjdGVkID0gW2xpbmUu
bHN0cmlwKCkgZm9yIGxpbmUgaW4gZXhwZWN0ZWQuc3BsaXRsaW5lcygpXQorICAgIHAgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoY29kZSkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwLCAi
LXZ2IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoZXhwZWN0ZWQpCisgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQgPT0gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X2ZhdWx0aGFuZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9mYXVsdGhhbmRsZXIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2ExOTViZjgwN2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZmF1bHRoYW5kbGVy
LnB5CkBAIC0wLDAgKzEsMTM2IEBACitpbXBvcnQgc3lzCisKK2ltcG9ydCBweXRlc3QKKworCitk
ZWYgdGVzdF9lbmFibGVkKHRlc3RkaXIpOgorICAgICIiIlRlc3Qgc2luZ2xlIGNyYXNoaW5nIHRl
c3QgZGlzcGxheXMgYSB0cmFjZWJhY2suIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICAiIiIKKyAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgZGVmIHRlc3RfY3Jhc2goKToK
KyAgICAgICAgZmF1bHRoYW5kbGVyLl9zaWdhYnJ0KCkKKyAgICAiIiIKKyAgICApCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgcmVzdWx0LnN0ZGVyci5m
bm1hdGNoX2xpbmVzKFsiKkZhdGFsIFB5dGhvbiBlcnJvcioiXSkKKyAgICBhc3NlcnQgcmVzdWx0
LnJldCAhPSAwCisKKworZGVmIHRlc3RfY3Jhc2hfbmVhcl9leGl0KHRlc3RkaXIpOgorICAgICIi
IlRlc3QgdGhhdCBmYXVsdCBoYW5kbGVyIGRpc3BsYXlzIGNyYXNoZXMgdGhhdCBoYXBwZW4gZXZl
biBhZnRlcgorICAgIHB5dGVzdCBpcyBleGl0aW5nIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgaW50
ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bikuIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAiIiIKKyAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgaW1wb3J0IGF0ZXhpdAor
ICAgIGRlZiB0ZXN0X29rKCk6CisgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihmYXVsdGhhbmRsZXIu
X3NpZ2FicnQpCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
X3N1YnByb2Nlc3MoKQorICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipGYXRhbCBQ
eXRob24gZXJyb3IqIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgIT0gMAorCisKK2RlZiB0ZXN0
X2Rpc2FibGVkKHRlc3RkaXIpOgorICAgICIiIlRlc3Qgb3B0aW9uIHRvIGRpc2FibGUgZmF1bHQg
aGFuZGxlciBpbiB0aGUgY29tbWFuZCBsaW5lLiIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgIiIiCisgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgIGRlZiB0ZXN0X2Rpc2Fi
bGVkKCk6CisgICAgICAgIGFzc2VydCBub3QgZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKQorICAg
ICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCIt
cCIsICJubzpmYXVsdGhhbmRsZXIiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IioxIHBhc3NlZCoiXSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKworQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKAorICAgICJlbmFibGVkIiwKKyAgICBbCisgICAgICAgIHB5dGVzdC5w
YXJhbSgKKyAgICAgICAgICAgIFRydWUsIG1hcmtzPXB5dGVzdC5tYXJrLnNraXAocmVhc29uPSJz
b21ldGltZXMgY3Jhc2hlcyBvbiBDSSAoIzcwMjIpIikKKyAgICAgICAgKSwKKyAgICAgICAgRmFs
c2UsCisgICAgXSwKKykKK2RlZiB0ZXN0X3RpbWVvdXQodGVzdGRpciwgZW5hYmxlZDogYm9vbCkg
LT4gTm9uZToKKyAgICAiIiJUZXN0IG9wdGlvbiB0byBkdW1wIHRyYWNlYmFja3MgYWZ0ZXIgYSBj
ZXJ0YWluIHRpbWVvdXQuCisKKyAgICBJZiBmYXVsdGhhbmRsZXIgaXMgZGlzYWJsZWQsIG5vIHRy
YWNlYmFjayB3aWxsIGJlIGR1bXBlZC4KKyAgICAiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICIiIgorICAgIGltcG9ydCBvcywgdGltZQorICAgIGRlZiB0ZXN0X3RpbWVvdXQo
KToKKyAgICAgICAgdGltZS5zbGVlcCgxIGlmICJDSSIgaW4gb3MuZW52aXJvbiBlbHNlIDAuMSkK
KyAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAg
ICAgW3B5dGVzdF0KKyAgICAgICAgZmF1bHRoYW5kbGVyX3RpbWVvdXQgPSAwLjAxCisgICAgICAg
ICIiIgorICAgICkKKyAgICBhcmdzID0gWyItcCIsICJubzpmYXVsdGhhbmRsZXIiXSBpZiBub3Qg
ZW5hYmxlZCBlbHNlIFtdCisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9j
ZXNzKCphcmdzKQorICAgIHRiX291dHB1dCA9ICJtb3N0IHJlY2VudCBjYWxsIGZpcnN0IgorICAg
IGlmIGVuYWJsZWQ6CisgICAgICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIiolcyoi
ICUgdGJfb3V0cHV0XSkKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgdGJfb3V0cHV0IG5vdCBp
biByZXN1bHQuc3RkZXJyLnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
KjEgcGFzc2VkKiJdKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoImhvb2tfbmFtZSIsIFsicHl0ZXN0X2VudGVyX3BkYiIsICJweXRlc3Rf
ZXhjZXB0aW9uX2ludGVyYWN0Il0pCitkZWYgdGVzdF9jYW5jZWxfdGltZW91dF9vbl9ob29rKG1v
bmtleXBhdGNoLCBob29rX25hbWUpOgorICAgICIiIk1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBjYW5j
ZWxsaW5nIGFueSBzY2hlZHVsZWQgdHJhY2ViYWNrIGR1bXBpbmcgZHVlCisgICAgdG8gdGltZW91
dCBiZWZvcmUgZW50ZXJpbmcgcGRiIChweXRlc3QtZGV2L3B5dGVzdC1mYXVsdGhhbmRsZXIjMTIp
IG9yIGFueQorICAgIG90aGVyIGludGVyYWN0aXZlIGV4Y2VwdGlvbiAocHl0ZXN0LWRldi9weXRl
c3QtZmF1bHRoYW5kbGVyIzE0KS4iIiIKKyAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgZnJv
bSBfcHl0ZXN0LmZhdWx0aGFuZGxlciBpbXBvcnQgRmF1bHRIYW5kbGVySG9va3MKKworICAgIGNh
bGxlZCA9IFtdCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKAorICAgICAgICBmYXVsdGhhbmRs
ZXIsICJjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIiLCBsYW1iZGE6IGNhbGxlZC5hcHBlbmQo
MSkKKyAgICApCisKKyAgICAjIGNhbGwgb3VyIGhvb2sgZXhwbGljaXRseSwgd2UgY2FuIHRydXN0
IHRoYXQgcHl0ZXN0IHdpbGwgY2FsbCB0aGUgaG9vaworICAgICMgZm9yIHVzIGF0IHRoZSBhcHBy
b3ByaWF0ZSBtb21lbnQKKyAgICBob29rX2Z1bmMgPSBnZXRhdHRyKEZhdWx0SGFuZGxlckhvb2tz
LCBob29rX25hbWUpCisgICAgaG9va19mdW5jKHNlbGY9Tm9uZSkKKyAgICBhc3NlcnQgY2FsbGVk
ID09IFsxXQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZmF1bHRoYW5kbGVyX3RpbWVv
dXQiLCBbMCwgMl0pCitkZWYgdGVzdF9hbHJlYWR5X2luaXRpYWxpemVkKGZhdWx0aGFuZGxlcl90
aW1lb3V0LCB0ZXN0ZGlyKToKKyAgICAiIiJUZXN0IGZvciBmYXVsdGhhbmRsZXIgYmVpbmcgaW5p
dGlhbGl6ZWQgZWFybGllciB0aGFuIHB5dGVzdCAoIzY1NzUpLiIiIgorICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBp
bXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICBhc3NlcnQgZmF1bHRoYW5kbGVyLmlzX2Vu
YWJsZWQoKQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bigKKyAgICAg
ICAgc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICItWCIsCisgICAgICAgICJmYXVsdGhhbmRsZXIi
LAorICAgICAgICAiLW1weXRlc3QiLAorICAgICAgICB0ZXN0ZGlyLnRtcGRpciwKKyAgICAgICAg
Ii1vIiwKKyAgICAgICAgImZhdWx0aGFuZGxlcl90aW1lb3V0PXt9Ii5mb3JtYXQoZmF1bHRoYW5k
bGVyX3RpbWVvdXQpLAorICAgICkKKyAgICAjIGVuc3VyZSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYg
ZmF1bHRoYW5kbGVyX3RpbWVvdXQgaXMgY29uZmlndXJlZAorICAgIHdhcm5pbmdfbGluZSA9ICIq
ZmF1bHRoYW5kbGVyLnB5KmZhdWx0aGFuZGxlciBtb2R1bGUgZW5hYmxlZCBiZWZvcmUqIgorICAg
IGlmIGZhdWx0aGFuZGxlcl90aW1lb3V0ID4gMDoKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1h
dGNoX2xpbmVzKHdhcm5pbmdfbGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXN1bHQuc3Rkb3V0
Lm5vX2ZubWF0Y2hfbGluZSh3YXJuaW5nX2xpbmUpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKCIqMSBwYXNzZWQqIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZmluZHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X2ZpbmRwYXRocy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjk3NGRjZjhmM2NkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvdGVzdF9maW5kcGF0aHMucHkKQEAgLTAsMCArMSwxMjUgQEAKK2Zyb20gdGV4dHdyYXAg
aW1wb3J0IGRlZGVudAorCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29uZmlnLmZpbmRw
YXRocyBpbXBvcnQgZ2V0X2NvbW1vbl9hbmNlc3RvcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5maW5k
cGF0aHMgaW1wb3J0IGdldF9kaXJzX2Zyb21fYXJncworZnJvbSBfcHl0ZXN0LmNvbmZpZy5maW5k
cGF0aHMgaW1wb3J0IGxvYWRfY29uZmlnX2RpY3RfZnJvbV9maWxlCitmcm9tIF9weXRlc3QucGF0
aGxpYiBpbXBvcnQgUGF0aAorCisKK2NsYXNzIFRlc3RMb2FkQ29uZmlnRGljdEZyb21GaWxlOgor
ICAgIGRlZiB0ZXN0X2VtcHR5X3B5dGVzdF9pbmkoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5v
bmU6CisgICAgICAgICIiInB5dGVzdC5pbmkgZmlsZXMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIGZv
ciBjb25maWd1cmF0aW9uLCBldmVuIGlmIGVtcHR5IiIiCisgICAgICAgIGZuID0gdG1wX3BhdGgg
LyAicHl0ZXN0LmluaSIKKyAgICAgICAgZm4ud3JpdGVfdGV4dCgiIiwgZW5jb2Rpbmc9InV0Zi04
IikKKyAgICAgICAgYXNzZXJ0IGxvYWRfY29uZmlnX2RpY3RfZnJvbV9maWxlKGZuKSA9PSB7fQor
CisgICAgZGVmIHRlc3RfcHl0ZXN0X2luaShzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToK
KyAgICAgICAgIiIiW3B5dGVzdF0gc2VjdGlvbiBpbiBweXRlc3QuaW5pIGZpbGVzIGlzIHJlYWQg
Y29ycmVjdGx5IiIiCisgICAgICAgIGZuID0gdG1wX3BhdGggLyAicHl0ZXN0LmluaSIKKyAgICAg
ICAgZm4ud3JpdGVfdGV4dCgiW3B5dGVzdF1cbng9MSIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAg
ICAgIGFzc2VydCBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShmbikgPT0geyJ4IjogIjEifQor
CisgICAgZGVmIHRlc3RfY3VzdG9tX2luaShzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToK
KyAgICAgICAgIiIiW3B5dGVzdF0gc2VjdGlvbiBpbiBhbnkgLmluaSBmaWxlIGlzIHJlYWQgY29y
cmVjdGx5IiIiCisgICAgICAgIGZuID0gdG1wX3BhdGggLyAiY3VzdG9tLmluaSIKKyAgICAgICAg
Zm4ud3JpdGVfdGV4dCgiW3B5dGVzdF1cbng9MSIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAg
IGFzc2VydCBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShmbikgPT0geyJ4IjogIjEifQorCisg
ICAgZGVmIHRlc3RfY3VzdG9tX2luaV93aXRob3V0X3NlY3Rpb24oc2VsZiwgdG1wX3BhdGg6IFBh
dGgpIC0+IE5vbmU6CisgICAgICAgICIiIkN1c3RvbSAuaW5pIGZpbGVzIHdpdGhvdXQgW3B5dGVz
dF0gc2VjdGlvbiBhcmUgbm90IGNvbnNpZGVyZWQgZm9yIGNvbmZpZ3VyYXRpb24iIiIKKyAgICAg
ICAgZm4gPSB0bXBfcGF0aCAvICJjdXN0b20uaW5pIgorICAgICAgICBmbi53cml0ZV90ZXh0KCJb
Y3VzdG9tXSIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIGFzc2VydCBsb2FkX2NvbmZpZ19k
aWN0X2Zyb21fZmlsZShmbikgaXMgTm9uZQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2NmZ19maWxl
KHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAgICAgICAiIiJDdXN0b20gLmNmZyBm
aWxlcyB3aXRob3V0IFt0b29sOnB5dGVzdF0gc2VjdGlvbiBhcmUgbm90IGNvbnNpZGVyZWQgZm9y
IGNvbmZpZ3VyYXRpb24iIiIKKyAgICAgICAgZm4gPSB0bXBfcGF0aCAvICJjdXN0b20uY2ZnIgor
ICAgICAgICBmbi53cml0ZV90ZXh0KCJbY3VzdG9tXSIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAg
ICAgIGFzc2VydCBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShmbikgaXMgTm9uZQorCisgICAg
ZGVmIHRlc3RfdmFsaWRfY2ZnX2ZpbGUoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6Cisg
ICAgICAgICIiIkN1c3RvbSAuY2ZnIGZpbGVzIHdpdGggW3Rvb2w6cHl0ZXN0XSBzZWN0aW9uIGFy
ZSByZWFkIGNvcnJlY3RseSIiIgorICAgICAgICBmbiA9IHRtcF9wYXRoIC8gImN1c3RvbS5jZmci
CisgICAgICAgIGZuLndyaXRlX3RleHQoIlt0b29sOnB5dGVzdF1cbng9MSIsIGVuY29kaW5nPSJ1
dGYtOCIpCisgICAgICAgIGFzc2VydCBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShmbikgPT0g
eyJ4IjogIjEifQorCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfcHl0ZXN0X3NlY3Rpb25faW5f
Y2ZnX2ZpbGUoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIi5jZmcg
ZmlsZXMgd2l0aCBbcHl0ZXN0XSBzZWN0aW9uIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIGFuZCBz
aG91bGQgZmFpbCB0byBhbGVydCB1c2VycyIiIgorICAgICAgICBmbiA9IHRtcF9wYXRoIC8gImN1
c3RvbS5jZmciCisgICAgICAgIGZuLndyaXRlX3RleHQoIltweXRlc3RdIiwgZW5jb2Rpbmc9InV0
Zi04IikKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6
CisgICAgICAgICAgICBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShmbikKKworICAgIGRlZiB0
ZXN0X2ludmFsaWRfdG9tbF9maWxlKHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBOb25lOgorICAg
ICAgICAiIiIudG9tbCBmaWxlcyB3aXRob3V0IFt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc10gYXJl
IG5vdCBjb25zaWRlcmVkIGZvciBjb25maWd1cmF0aW9uLiIiIgorICAgICAgICBmbiA9IHRtcF9w
YXRoIC8gIm15Y29uZmlnLnRvbWwiCisgICAgICAgIGZuLndyaXRlX3RleHQoCisgICAgICAgICAg
ICBkZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBbYnVpbGRfc3lzdGVt
XQorICAgICAgICAgICAgeCA9IDEKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIGVuY29kaW5nPSJ1dGYtOCIsCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IGxv
YWRfY29uZmlnX2RpY3RfZnJvbV9maWxlKGZuKSBpcyBOb25lCisKKyAgICBkZWYgdGVzdF92YWxp
ZF90b21sX2ZpbGUoc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgICIiIi50
b21sIGZpbGVzIHdpdGggW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXSBhcmUgcmVhZCBjb3JyZWN0
bHksIGluY2x1ZGluZyBjaGFuZ2luZworICAgICAgICBkYXRhIHR5cGVzIHRvIHN0ci9saXN0IGZv
ciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiIiIgorICAg
ICAgICBmbiA9IHRtcF9wYXRoIC8gIm15Y29uZmlnLnRvbWwiCisgICAgICAgIGZuLndyaXRlX3Rl
eHQoCisgICAgICAgICAgICBkZWRlbnQoCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgICAgICAgICB4ID0gMQorICAgICAgICAg
ICAgeSA9IDIwLjAKKyAgICAgICAgICAgIHZhbHVlcyA9IFsidGVzdHMiLCAiaW50ZWdyYXRpb24i
XQorICAgICAgICAgICAgbmFtZSA9ICJmb28iCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICBlbmNvZGluZz0idXRmLTgiLAorICAgICAgICApCisgICAgICAgIGFz
c2VydCBsb2FkX2NvbmZpZ19kaWN0X2Zyb21fZmlsZShmbikgPT0geworICAgICAgICAgICAgIngi
OiAiMSIsCisgICAgICAgICAgICAieSI6ICIyMC4wIiwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBb
InRlc3RzIiwgImludGVncmF0aW9uIl0sCisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAg
ICAgICB9CisKKworY2xhc3MgVGVzdENvbW1vbkFuY2VzdG9yOgorICAgIGRlZiB0ZXN0X2hhc19h
bmNlc3RvcihzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToKKyAgICAgICAgZm4xID0gdG1w
X3BhdGggLyAiZm9vIiAvICJiYXIiIC8gInRlc3RfMS5weSIKKyAgICAgICAgZm4xLnBhcmVudC5t
a2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgIGZuMS50b3VjaCgpCisgICAgICAgIGZuMiA9IHRt
cF9wYXRoIC8gImZvbyIgLyAiemF6IiAvICJ0ZXN0XzIucHkiCisgICAgICAgIGZuMi5wYXJlbnQu
bWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICBmbjIudG91Y2goKQorICAgICAgICBhc3NlcnQg
Z2V0X2NvbW1vbl9hbmNlc3RvcihbZm4xLCBmbjJdKSA9PSB0bXBfcGF0aCAvICJmb28iCisgICAg
ICAgIGFzc2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFtmbjEucGFyZW50LCBmbjJdKSA9PSB0bXBf
cGF0aCAvICJmb28iCisgICAgICAgIGFzc2VydCBnZXRfY29tbW9uX2FuY2VzdG9yKFtmbjEucGFy
ZW50LCBmbjIucGFyZW50XSkgPT0gdG1wX3BhdGggLyAiZm9vIgorICAgICAgICBhc3NlcnQgZ2V0
X2NvbW1vbl9hbmNlc3RvcihbZm4xLCBmbjIucGFyZW50XSkgPT0gdG1wX3BhdGggLyAiZm9vIgor
CisgICAgZGVmIHRlc3Rfc2luZ2xlX2RpcihzZWxmLCB0bXBfcGF0aDogUGF0aCkgLT4gTm9uZToK
KyAgICAgICAgYXNzZXJ0IGdldF9jb21tb25fYW5jZXN0b3IoW3RtcF9wYXRoXSkgPT0gdG1wX3Bh
dGgKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9maWxlKHNlbGYsIHRtcF9wYXRoOiBQYXRoKSAtPiBO
b25lOgorICAgICAgICBmbiA9IHRtcF9wYXRoIC8gImZvby5weSIKKyAgICAgICAgZm4udG91Y2go
KQorICAgICAgICBhc3NlcnQgZ2V0X2NvbW1vbl9hbmNlc3RvcihbZm5dKSA9PSB0bXBfcGF0aAor
CisKK2RlZiB0ZXN0X2dldF9kaXJzX2Zyb21fYXJncyh0bXBfcGF0aCk6CisgICAgIiIiZ2V0X2Rp
cnNfZnJvbV9hcmdzKCkgc2tpcHMgb3ZlciBub24tZXhpc3RpbmcgZGlyZWN0b3JpZXMgYW5kIGZp
bGVzIiIiCisgICAgZm4gPSB0bXBfcGF0aCAvICJmb28ucHkiCisgICAgZm4udG91Y2goKQorICAg
IGQgPSB0bXBfcGF0aCAvICJ0ZXN0cyIKKyAgICBkLm1rZGlyKCkKKyAgICBvcHRpb24gPSAiLS1m
b29iYXI9L2Zvby50eHQiCisgICAgIyB4ZGlzdCB1c2VzIG9wdGlvbnMgaW4gdGhpcyBmb3JtYXQg
Zm9yIGl0cyByc3luYyBmZWF0dXJlICgjNzYzOCkKKyAgICB4ZGlzdF9yc3luY19vcHRpb24gPSAi
cG9wZW49YzovZGVzdCIKKyAgICBhc3NlcnQgZ2V0X2RpcnNfZnJvbV9hcmdzKAorICAgICAgICBb
c3RyKGZuKSwgc3RyKHRtcF9wYXRoIC8gImRvZXNfbm90X2V4aXN0IiksIHN0cihkKSwgb3B0aW9u
LCB4ZGlzdF9yc3luY19vcHRpb25dCisgICAgKSA9PSBbZm4ucGFyZW50LCBkXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2hlbHBjb25maWcucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfaGVscGNvbmZpZy5weQppbmRleCBiNTQyNDIzNWIxNjguLjYxMTYyNDJlYzBk
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2hlbHBjb25maWcucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2hlbHBjb25maWcucHkKQEAgLTEsMjMgKzEsMzUg
QEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX05PVEVTVFNDT0xMRUNU
RUQKIGltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCiAK
IAotZGVmIHRlc3RfdmVyc2lvbih0ZXN0ZGlyLCBweXRlc3Rjb25maWcpOgotICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLXZlcnNpb24iKQorZGVmIHRlc3RfdmVyc2lvbl92ZXJib3Nl
KHRlc3RkaXIsIHB5dGVzdGNvbmZpZyk6CisgICAgdGVzdGRpci5tb25rZXlwYXRjaC5kZWxlbnYo
IlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoIi0tdmVyc2lvbiIsICItLXZlcnNpb24iKQogICAgIGFzc2VydCByZXN1bHQucmV0
ID09IDAKLSAgICAjIHAgPSBweS5wYXRoLmxvY2FsKHB5Ll9fZmlsZV9fKS5kaXJwYXRoKCkKLSAg
ICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyIqcHl0ZXN0KiVzKmltcG9ydGVkIGZyb20q
IiAlIChweXRlc3QuX192ZXJzaW9uX18sKV0pCisgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xp
bmVzKAorICAgICAgICBbIipweXRlc3Qqe30qaW1wb3J0ZWQgZnJvbSoiLmZvcm1hdChweXRlc3Qu
X192ZXJzaW9uX18pXQorICAgICkKICAgICBpZiBweXRlc3Rjb25maWcucGx1Z2lubWFuYWdlci5s
aXN0X3BsdWdpbl9kaXN0aW5mbygpOgogICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGlu
ZXMoWyIqc2V0dXB0b29scyByZWdpc3RlcmVkIHBsdWdpbnM6IiwgIiphdCoiXSkKIAogCitkZWYg
dGVzdF92ZXJzaW9uX2xlc3NfdmVyYm9zZSh0ZXN0ZGlyLCBweXRlc3Rjb25maWcpOgorICAgIHRl
c3RkaXIubW9ua2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQi
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXZlcnNpb24iKQorICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IDAKKyAgICAjIHAgPSBweS5wYXRoLmxvY2FsKHB5Ll9fZmlsZV9fKS5k
aXJwYXRoKCkKKyAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyJweXRlc3Qge30iLmZv
cm1hdChweXRlc3QuX192ZXJzaW9uX18pXSkKKworCiBkZWYgdGVzdF9oZWxwKHRlc3RkaXIpOgog
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWhlbHAiKQogICAgIGFzc2VydCByZXN1
bHQucmV0ID09IDAKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgICIi
IgotICAgICAgICAqLXYqdmVyYm9zZSoKKyAgICAgICAgICAtbSBNQVJLRVhQUiAgICAgICAgICAg
b25seSBydW4gdGVzdHMgbWF0Y2hpbmcgZ2l2ZW4gbWFyayBleHByZXNzaW9uLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZTogLW0gJ21hcmsxIGFuZCBub3QgbWFy
azInLgorICAgICAgICByZXBvcnRpbmc6CisgICAgICAgICAgLS1kdXJhdGlvbnM9TiAqCiAgICAg
ICAgICpzZXR1cC5jZmcqCiAgICAgICAgICptaW52ZXJzaW9uKgogICAgICAgICAqdG8gc2VlKm1h
cmtlcnMqcHl0ZXN0IC0tbWFya2VycyoKQEAgLTI2LDYgKzM4LDM5IEBAIGRlZiB0ZXN0X2hlbHAo
dGVzdGRpcik6CiAgICAgKQogCiAKK2RlZiB0ZXN0X25vbmVfaGVscF9wYXJhbV9yYWlzZXNfZXhj
ZXB0aW9uKHRlc3RkaXIpOgorICAgICIiIlRlc3QgdGhhdCBhIE5vbmUgaGVscCBwYXJhbSByYWlz
ZXMgYSBUeXBlRXJyb3IuIiIiCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIi
IgorICAgICAgICBkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgICAgICAgICAgcGFy
c2VyLmFkZGluaSgidGVzdF9pbmkiLCBOb25lLCBkZWZhdWx0PVRydWUsIHR5cGU9ImJvb2wiKQor
ICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1oZWxwIikK
KyAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiKlR5cGVFcnJvcjog
aGVscCBhcmd1bWVudCBjYW5ub3QgYmUgTm9uZSBmb3IgdGVzdF9pbmkqIl0KKyAgICApCisKKwor
ZGVmIHRlc3RfZW1wdHlfaGVscF9wYXJhbSh0ZXN0ZGlyKToKKyAgICAiIiJUZXN0IHRoYXQgYW4g
ZW1wdHkgaGVscCBwYXJhbSBpcyBkaXNwbGF5ZWQgY29ycmVjdGx5LiIiIgorICAgIHRlc3RkaXIu
bWFrZWNvbmZ0ZXN0KAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHB5dGVzdF9hZGRvcHRpb24o
cGFyc2VyKToKKyAgICAgICAgICAgIHBhcnNlci5hZGRpbmkoInRlc3RfaW5pIiwgIiIsIGRlZmF1
bHQ9VHJ1ZSwgdHlwZT0iYm9vbCIpCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItLWhlbHAiKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKyAgICBs
aW5lcyA9IFsKKyAgICAgICAgIiAgcmVxdWlyZWRfcGx1Z2lucyAoYXJncyk6IiwKKyAgICAgICAg
IiAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMgdGhhdCBtdXN0IGJlIHByZXNlbnQgZm9y
IHB5dGVzdCB0byBydW4qIiwKKyAgICAgICAgIiAgdGVzdF9pbmkgKGJvb2wpOioiLAorICAgICAg
ICAiZW52aXJvbm1lbnQgdmFyaWFibGVzOiIsCisgICAgXQorICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhsaW5lcywgY29uc2VjdXRpdmU9VHJ1ZSkKKworCiBkZWYgdGVzdF9ob29rdmFs
aWRhdGlvbl91bmtub3duKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAg
ICAgICAiIiIKQEAgLTQ4LDcgKzkzLDcgQEAgZGVmIHRlc3RfaG9va3ZhbGlkYXRpb25fb3B0aW9u
YWwodGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKLSAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKKyAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKIAogCiBk
ZWYgdGVzdF90cmFjZWNvbmZpZyh0ZXN0ZGlyKToKQEAgLTU2LDkgKzEwMSw5IEBAIGRlZiB0ZXN0
X3RyYWNlY29uZmlnKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
Iip1c2luZypweXRlc3QqcHkqIiwgIiphY3RpdmUgcGx1Z2lucyoiXSkKIAogCi1kZWYgdGVzdF9k
ZWJ1Zyh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CitkZWYgdGVzdF9kZWJ1Zyh0ZXN0ZGlyKToKICAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCItLWRlYnVnIikKLSAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBFWElUX05PVEVTVFNDT0xMRUNURUQKKyAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKICAgICBwID0gdGVzdGRpci50
bXBkaXIuam9pbigicHl0ZXN0ZGVidWcubG9nIikKICAgICBhc3NlcnQgInB5dGVzdF9zZXNzaW9u
c3RhcnQiIGluIHAucmVhZCgpCiAKQEAgLTY2LDcgKzExMSw3IEBAIGRlZiB0ZXN0X2RlYnVnKHRl
c3RkaXIsIG1vbmtleXBhdGNoKToKIGRlZiB0ZXN0X1BZVEVTVF9ERUJVRyh0ZXN0ZGlyLCBtb25r
ZXlwYXRjaCk6CiAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfREVCVUciLCAiMSIpCiAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCi0gICAgYXNzZXJ0IHJl
c3VsdC5yZXQgPT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
PT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNo
X2xpbmVzKAogICAgICAgICBbIipweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQqIiwgIiptYW5hZ2Vy
KlBsdWdpbk1hbmFnZXIqIl0KICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfanVuaXR4bWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfanVuaXR4bWwucHkK
aW5kZXggZDBiZTVmMjY3NTk2Li4zY2M5M2EzOTgwNTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9qdW5pdHhtbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
anVuaXR4bWwucHkKQEAgLTEsMTggKzEsNTQgQEAKLSMgLSotIGNvZGluZzogdXRmLTggLSotCi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1
bmN0aW9uCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQorZnJvbSBkYXRldGltZSBpbXBvcnQg
ZGF0ZXRpbWUKK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0Citmcm9tIHR5cGluZyBpbXBvcnQgTGlz
dAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20K
KwogaW1wb3J0IHB5Ci1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWZyb20gX3B5dGVzdC5qdW5pdHht
bCBpbXBvcnQgTG9nWE1MCitpbXBvcnQgeG1sc2NoZW1hCisKIGltcG9ydCBweXRlc3QKK2Zyb20g
X3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcg
aW1wb3J0IENvbmZpZworZnJvbSBfcHl0ZXN0Lmp1bml0eG1sIGltcG9ydCBiaW5feG1sX2VzY2Fw
ZQorZnJvbSBfcHl0ZXN0Lmp1bml0eG1sIGltcG9ydCBMb2dYTUwKK2Zyb20gX3B5dGVzdC5wYXRo
bGliIGltcG9ydCBQYXRoCitmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBvcnQgQmFzZVJlcG9ydAor
ZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0IFRlc3RSZXBvcnQKK2Zyb20gX3B5dGVzdC5zdG9y
ZSBpbXBvcnQgU3RvcmUKKwogCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVm
IHNjaGVtYSgpOgorICAgICIiIlJldHVybiBhbiB4bWxzY2hlbWEuWE1MU2NoZW1hIG9iamVjdCBm
b3IgdGhlIGp1bml0LTEwLnhzZCBmaWxlLiIiIgorICAgIGZuID0gUGF0aChfX2ZpbGVfXykucGFy
ZW50IC8gImV4YW1wbGVfc2NyaXB0cy9qdW5pdC0xMC54c2QiCisgICAgd2l0aCBmbi5vcGVuKCkg
YXMgZjoKKyAgICAgICAgcmV0dXJuIHhtbHNjaGVtYS5YTUxTY2hlbWEoZikKIAotZGVmIHJ1bmFu
ZHBhcnNlKHRlc3RkaXIsICphcmdzKToKLSAgICByZXN1bHRwYXRoID0gdGVzdGRpci50bXBkaXIu
am9pbigianVuaXQueG1sIikKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1qdW5p
dHhtbD0lcyIgJSByZXN1bHRwYXRoLCAqYXJncykKLSAgICB4bWxkb2MgPSBtaW5pZG9tLnBhcnNl
KHN0cihyZXN1bHRwYXRoKSkKLSAgICByZXR1cm4gcmVzdWx0LCBEb21Ob2RlKHhtbGRvYykKKwor
QHB5dGVzdC5maXh0dXJlCitkZWYgcnVuX2FuZF9wYXJzZSh0ZXN0ZGlyLCBzY2hlbWEpOgorICAg
ICIiIkZpeHR1cmUgdGhhdCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBl
eGVjdXRlIHB5dGVzdCBhbmQKKyAgICByZXR1cm4gdGhlIHBhcnNlZCBgYERvbU5vZGVgYCBvZiB0
aGUgcm9vdCB4bWwgbm9kZS4KKworICAgIFRoZSBgYGZhbWlseWBgIHBhcmFtZXRlciBpcyB1c2Vk
IHRvIGNvbmZpZ3VyZSB0aGUgYGBqdW5pdF9mYW1pbHlgYCBvZiB0aGUgd3JpdHRlbiByZXBvcnQu
CisgICAgInh1bml0MiIgaXMgYWxzbyBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlZCBhZ2FpbnN0IHRo
ZSBzY2hlbWEuCisgICAgIiIiCisKKyAgICBkZWYgcnVuKCphcmdzLCBmYW1pbHk9Inh1bml0MSIp
OgorICAgICAgICBpZiBmYW1pbHk6CisgICAgICAgICAgICBhcmdzID0gKCItbyIsICJqdW5pdF9m
YW1pbHk9IiArIGZhbWlseSkgKyBhcmdzCisgICAgICAgIHhtbF9wYXRoID0gdGVzdGRpci50bXBk
aXIuam9pbigianVuaXQueG1sIikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0tanVuaXR4bWw9JXMiICUgeG1sX3BhdGgsICphcmdzKQorICAgICAgICBpZiBmYW1pbHkgPT0g
Inh1bml0MiI6CisgICAgICAgICAgICB3aXRoIHhtbF9wYXRoLm9wZW4oKSBhcyBmOgorICAgICAg
ICAgICAgICAgIHNjaGVtYS52YWxpZGF0ZShmKQorICAgICAgICB4bWxkb2MgPSBtaW5pZG9tLnBh
cnNlKHN0cih4bWxfcGF0aCkpCisgICAgICAgIHJldHVybiByZXN1bHQsIERvbU5vZGUoeG1sZG9j
KQorCisgICAgcmV0dXJuIHJ1bgogCiAKIGRlZiBhc3NlcnRfYXR0cihub2RlLCAqKmt3YXJncyk6
CkBAIC0yOCw4ICs2NCw3IEBAIGRlZiBhc3NlcnRfYXR0cihub2RlLCAqKmt3YXJncyk6CiAgICAg
YXNzZXJ0IG9uX25vZGUgPT0gZXhwZWN0ZWQKIAogCi1jbGFzcyBEb21Ob2RlKG9iamVjdCk6Ci0K
K2NsYXNzIERvbU5vZGU6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRvbSk6CiAgICAgICAgIHNl
bGYuX19ub2RlID0gZG9tCiAKQEAgLTQyLDYgKzc3LDE2IEBAIGNsYXNzIERvbU5vZGUob2JqZWN0
KToKICAgICBkZWYgX2J5X3RhZyhzZWxmLCB0YWcpOgogICAgICAgICByZXR1cm4gc2VsZi5fX25v
ZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNo
aWxkcmVuKHNlbGYpOgorICAgICAgICByZXR1cm4gW3R5cGUoc2VsZikoeCkgZm9yIHggaW4gc2Vs
Zi5fX25vZGUuY2hpbGROb2Rlc10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnZXRfdW5pcXVl
X2NoaWxkKHNlbGYpOgorICAgICAgICBjaGlsZHJlbiA9IHNlbGYuY2hpbGRyZW4KKyAgICAgICAg
YXNzZXJ0IGxlbihjaGlsZHJlbikgPT0gMQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMF0KKwog
ICAgIGRlZiBmaW5kX250aF9ieV90YWcoc2VsZiwgdGFnLCBuKToKICAgICAgICAgaXRlbXMgPSBz
ZWxmLl9ieV90YWcodGFnKQogICAgICAgICB0cnk6CkBAIC03NiwxMyArMTIxLDE2IEBAIGNsYXNz
IERvbU5vZGUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX19ub2RlLnRhZ05hbWUKIAog
ICAgIEBwcm9wZXJ0eQotICAgIGRlZiBuZXh0X3NpZWJsaW5nKHNlbGYpOgorICAgIGRlZiBuZXh0
X3NpYmxpbmcoc2VsZik6CiAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHNlbGYuX19ub2RlLm5l
eHRTaWJsaW5nKQogCiAKLWNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKK3BhcmFtZXRyaXplX2Zh
bWlsaWVzID0gcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInh1bml0X2ZhbWlseSIsIFsieHVuaXQx
IiwgInh1bml0MiJdKQorCiAKLSAgICBkZWYgdGVzdF9zdW1taW5nX3NpbXBsZShzZWxmLCB0ZXN0
ZGlyKToKK2NsYXNzIFRlc3RQeXRob246CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAg
ZGVmIHRlc3Rfc3VtbWluZ19zaW1wbGUoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVu
aXRfZmFtaWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xMDAsMTIgKzE0OCwxMyBAQCBjbGFzcyBU
ZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IDEKICAgICAgICAgIiIi
CiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQor
ICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkK
ICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0
X2J5X3RhZygidGVzdHN1aXRlIikKLSAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihuYW1lPSJweXRl
c3QiLCBlcnJvcnM9MCwgZmFpbHVyZXM9MSwgc2tpcHM9MiwgdGVzdHM9NSkKKyAgICAgICAgbm9k
ZS5hc3NlcnRfYXR0cihuYW1lPSJweXRlc3QiLCBlcnJvcnM9MCwgZmFpbHVyZXM9MSwgc2tpcHBl
ZD0yLCB0ZXN0cz01KQogCi0gICAgZGVmIHRlc3Rfc3VtbWluZ19zaW1wbGVfd2l0aF9lcnJvcnMo
c2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3Rf
c3VtbWluZ19zaW1wbGVfd2l0aF9lcnJvcnMoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwg
eHVuaXRfZmFtaWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAg
IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0xMjYsNTcgKzE3NSwxMTMgQEAgY2xh
c3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCiAgICAg
ICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVz
dGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9m
YW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBkb20uZmlu
ZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCi0gICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIobmFt
ZT0icHl0ZXN0IiwgZXJyb3JzPTEsIGZhaWx1cmVzPTIsIHNraXBzPTEsIHRlc3RzPTUpCisgICAg
ICAgIG5vZGUuYXNzZXJ0X2F0dHIobmFtZT0icHl0ZXN0IiwgZXJyb3JzPTEsIGZhaWx1cmVzPTIs
IHNraXBwZWQ9MSwgdGVzdHM9NSkKIAotICAgIGRlZiB0ZXN0X3RpbWluZ19mdW5jdGlvbihzZWxm
LCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF9ob3N0
bmFtZV9pbl94bWwoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToK
ICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBpbXBvcnQgdGltZSwgcHl0ZXN0CisgICAgICAgICAgICBkZWYgdGVzdF9wYXNzKCk6CisgICAg
ICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQs
IGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKKyAgICAgICAgbm9kZSA9
IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKKyAgICAgICAgbm9kZS5hc3NlcnRf
YXR0cihob3N0bmFtZT1wbGF0Zm9ybS5ub2RlKCkpCisKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxp
ZXMKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfaW5feG1sKHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRf
cGFyc2UsIHh1bml0X2ZhbWlseSk6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAg
ICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfcGFzcygpOgorICAgICAgICAgICAgICAg
IHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgc3RhcnRfdGltZSA9IGRhdGV0
aW1lLm5vdygpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVu
aXRfZmFtaWx5KQorICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3Vp
dGUiKQorICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGltZS5zdHJwdGltZShub2RlWyJ0aW1lc3Rh
bXAiXSwgIiVZLSVtLSVkVCVIOiVNOiVTLiVmIikKKyAgICAgICAgYXNzZXJ0IHN0YXJ0X3RpbWUg
PD0gdGltZXN0YW1wIDwgZGF0ZXRpbWUubm93KCkKKworICAgIGRlZiB0ZXN0X3RpbWluZ19mdW5j
dGlvbihzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCBtb2NrX3RpbWluZyk6CisgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZnJvbSBf
cHl0ZXN0IGltcG9ydCB0aW1pbmcKICAgICAgICAgICAgIGRlZiBzZXR1cF9tb2R1bGUoKToKLSAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgdGltaW5nLnNs
ZWVwKDEpCiAgICAgICAgICAgICBkZWYgdGVhcmRvd25fbW9kdWxlKCk6Ci0gICAgICAgICAgICAg
ICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgICAgIHRpbWluZy5zbGVlcCgyKQogICAg
ICAgICAgICAgZGVmIHRlc3Rfc2xlZXAoKToKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAu
MDEpCisgICAgICAgICAgICAgICAgdGltaW5nLnNsZWVwKDQpCiAgICAgICAgICIiIgogICAgICAg
ICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAg
cmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCkKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2Zp
cnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3Rf
YnlfdGFnKCJ0ZXN0Y2FzZSIpCiAgICAgICAgIHZhbCA9IHRub2RlWyJ0aW1lIl0KLSAgICAgICAg
YXNzZXJ0IHJvdW5kKGZsb2F0KHZhbCksIDIpID49IDAuMDMKKyAgICAgICAgYXNzZXJ0IGZsb2F0
KHZhbCkgPT0gNy4wCisKKyAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImR1cmF0aW9uX3Jl
cG9ydCIsIFsiY2FsbCIsICJ0b3RhbCJdKQorICAgIGRlZiB0ZXN0X2p1bml0X2R1cmF0aW9uX3Jl
cG9ydCgKKyAgICAgICAgc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gsIGR1cmF0aW9uX3JlcG9y
dCwgcnVuX2FuZF9wYXJzZQorICAgICk6CisKKyAgICAgICAgIyBtb2NrIExvZ1hNTC5ub2RlX3Jl
cG9ydGVyIHNvIGl0IGFsd2F5cyBzZXRzIGEga25vd24gZHVyYXRpb24gdG8gZWFjaCB0ZXN0IHJl
cG9ydCBvYmplY3QKKyAgICAgICAgb3JpZ2luYWxfbm9kZV9yZXBvcnRlciA9IExvZ1hNTC5ub2Rl
X3JlcG9ydGVyCisKKyAgICAgICAgZGVmIG5vZGVfcmVwb3J0ZXJfd3JhcHBlcihzLCByZXBvcnQp
OgorICAgICAgICAgICAgcmVwb3J0LmR1cmF0aW9uID0gMS4wCisgICAgICAgICAgICByZXBvcnRl
ciA9IG9yaWdpbmFsX25vZGVfcmVwb3J0ZXIocywgcmVwb3J0KQorICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydGVyCisKKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihMb2dYTUwsICJub2RlX3Jl
cG9ydGVyIiwgbm9kZV9yZXBvcnRlcl93cmFwcGVyKQorCisgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAg
ICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQs
IGRvbSA9IHJ1bl9hbmRfcGFyc2UoCisgICAgICAgICAgICAiLW8iLCAianVuaXRfZHVyYXRpb25f
cmVwb3J0PXt9Ii5mb3JtYXQoZHVyYXRpb25fcmVwb3J0KQorICAgICAgICApCisgICAgICAgIG5v
ZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCisgICAgICAgIHRub2RlID0g
bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQorICAgICAgICB2YWwgPSBmbG9hdCh0
bm9kZVsidGltZSJdKQorICAgICAgICBpZiBkdXJhdGlvbl9yZXBvcnQgPT0gInRvdGFsIjoKKyAg
ICAgICAgICAgIGFzc2VydCB2YWwgPT0gMy4wCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBh
c3NlcnQgZHVyYXRpb25fcmVwb3J0ID09ICJjYWxsIgorICAgICAgICAgICAgYXNzZXJ0IHZhbCA9
PSAxLjAKIAotICAgIGRlZiB0ZXN0X3NldHVwX2Vycm9yKHNlbGYsIHRlc3RkaXIpOgorICAgIEBw
YXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X3NldHVwX2Vycm9yKHNlbGYsIHRlc3Rk
aXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAgICAg
ICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKICAgICAgICAgICAgIGRlZiBhcmcocmVxdWVzdCk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiRXJyb3IgcmVhc29uIikKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
KGFyZyk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAg
ICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwg
ZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3Vp
dGUiKQogICAgICAgICBub2RlLmFzc2VydF9hdHRyKGVycm9ycz0xLCB0ZXN0cz0xKQogICAgICAg
ICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5v
ZGUuYXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBmaWxlPSJ0ZXN0X3NldHVwX2Vycm9yLnB5IiwK
LSAgICAgICAgICAgIGxpbmU9IjUiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X3NldHVw
X2Vycm9yIiwKLSAgICAgICAgICAgIG5hbWU9InRlc3RfZnVuY3Rpb24iLAotICAgICAgICApCisg
ICAgICAgIHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0idGVzdF9zZXR1cF9lcnJvciIsIG5h
bWU9InRlc3RfZnVuY3Rpb24iKQogICAgICAgICBmbm9kZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlf
dGFnKCJlcnJvciIpCi0gICAgICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9InRlc3Qgc2V0
dXAgZmFpbHVyZSIpCisgICAgICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9J2ZhaWxlZCBv
biBzZXR1cCB3aXRoICJWYWx1ZUVycm9yOiBFcnJvciByZWFzb24iJykKICAgICAgICAgYXNzZXJ0
ICJWYWx1ZUVycm9yIiBpbiBmbm9kZS50b3htbCgpCiAKLSAgICBkZWYgdGVzdF90ZWFyZG93bl9l
cnJvcihzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYg
dGVzdF90ZWFyZG93bl9lcnJvcihzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9m
YW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTE4NCwyNiArMjg5LDIyIEBAIGNsYXNzIFRlc3RQ
eXRob24ob2JqZWN0KToKICAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZQogICAgICAgICAgICAg
ZGVmIGFyZygpOgogICAgICAgICAgICAgICAgIHlpZWxkCi0gICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXJyb3IgcmVh
c29uJykKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGFyZyk6CiAgICAgICAgICAgICAg
ICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1
bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShm
YW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldAogICAgICAgICBu
b2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICB0bm9kZSA9
IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5vZGUuYXNzZXJ0
X2F0dHIoCi0gICAgICAgICAgICBmaWxlPSJ0ZXN0X3RlYXJkb3duX2Vycm9yLnB5IiwKLSAgICAg
ICAgICAgIGxpbmU9IjYiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X3RlYXJkb3duX2Vy
cm9yIiwKLSAgICAgICAgICAgIG5hbWU9InRlc3RfZnVuY3Rpb24iLAotICAgICAgICApCisgICAg
ICAgIHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0idGVzdF90ZWFyZG93bl9lcnJvciIsIG5h
bWU9InRlc3RfZnVuY3Rpb24iKQogICAgICAgICBmbm9kZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlf
dGFnKCJlcnJvciIpCi0gICAgICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9InRlc3QgdGVh
cmRvd24gZmFpbHVyZSIpCisgICAgICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9J2ZhaWxl
ZCBvbiB0ZWFyZG93biB3aXRoICJWYWx1ZUVycm9yOiBFcnJvciByZWFzb24iJykKICAgICAgICAg
YXNzZXJ0ICJWYWx1ZUVycm9yIiBpbiBmbm9kZS50b3htbCgpCiAKLSAgICBkZWYgdGVzdF9jYWxs
X2ZhaWx1cmVfdGVhcmRvd25fZXJyb3Ioc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXpl
X2ZhbWlsaWVzCisgICAgZGVmIHRlc3RfY2FsbF9mYWlsdXJlX3RlYXJkb3duX2Vycm9yKHNlbGYs
IHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApA
QCAtMjE2LDE5ICszMTcsMjMgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2FsbCBFeGNlcHRpb24iKQogICAgICAgICAiIiIKICAg
ICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAg
ICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAg
ICAgICBhc3NlcnQgcmVzdWx0LnJldAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlf
dGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICBub2RlLmFzc2VydF9hdHRyKGVycm9ycz0xLCBmYWls
dXJlcz0xLCB0ZXN0cz0xKQogICAgICAgICBmaXJzdCwgc2Vjb25kID0gZG9tLmZpbmRfYnlfdGFn
KCJ0ZXN0Y2FzZSIpCi0gICAgICAgIGlmIG5vdCBmaXJzdCBvciBub3Qgc2Vjb25kIG9yIGZpcnN0
ID09IHNlY29uZDoKLSAgICAgICAgICAgIGFzc2VydCAwCisgICAgICAgIGFzc2VydCBmaXJzdAor
ICAgICAgICBhc3NlcnQgc2Vjb25kCisgICAgICAgIGFzc2VydCBmaXJzdCAhPSBzZWNvbmQKICAg
ICAgICAgZm5vZGUgPSBmaXJzdC5maW5kX2ZpcnN0X2J5X3RhZygiZmFpbHVyZSIpCiAgICAgICAg
IGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9IkV4Y2VwdGlvbjogQ2FsbCBFeGNlcHRpb24iKQog
ICAgICAgICBzbm9kZSA9IHNlY29uZC5maW5kX2ZpcnN0X2J5X3RhZygiZXJyb3IiKQotICAgICAg
ICBzbm9kZS5hc3NlcnRfYXR0cihtZXNzYWdlPSJ0ZXN0IHRlYXJkb3duIGZhaWx1cmUiKQorICAg
ICAgICBzbm9kZS5hc3NlcnRfYXR0cigKKyAgICAgICAgICAgIG1lc3NhZ2U9J2ZhaWxlZCBvbiB0
ZWFyZG93biB3aXRoICJFeGNlcHRpb246IFRlYXJkb3duIEV4Y2VwdGlvbiInCisgICAgICAgICkK
IAotICAgIGRlZiB0ZXN0X3NraXBfY29udGFpbnNfbmFtZV9yZWFzb24oc2VsZiwgdGVzdGRpcik6
CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3Rfc2tpcF9jb250YWluc19u
YW1lX3JlYXNvbihzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgog
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
IGltcG9ydCBweXRlc3QKQEAgLTIzNiwyMSArMzQxLDE3IEBAIGNsYXNzIFRlc3RQeXRob24ob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgiaGVsbG8yMyIpCiAgICAgICAgICIi
IgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikK
KyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkp
CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICAgICAgbm9kZSA9IGRvbS5maW5k
X2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKLSAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lw
cz0xKQorICAgICAgICBub2RlLmFzc2VydF9hdHRyKHNraXBwZWQ9MSkKICAgICAgICAgdG5vZGUg
PSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAgICAgIHRub2RlLmFzc2Vy
dF9hdHRyKAotICAgICAgICAgICAgZmlsZT0idGVzdF9za2lwX2NvbnRhaW5zX25hbWVfcmVhc29u
LnB5IiwKLSAgICAgICAgICAgIGxpbmU9IjEiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0
X3NraXBfY29udGFpbnNfbmFtZV9yZWFzb24iLAotICAgICAgICAgICAgbmFtZT0idGVzdF9za2lw
IiwKLSAgICAgICAgKQorICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihjbGFzc25hbWU9InRlc3Rf
c2tpcF9jb250YWluc19uYW1lX3JlYXNvbiIsIG5hbWU9InRlc3Rfc2tpcCIpCiAgICAgICAgIHNu
b2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoInNraXBwZWQiKQogICAgICAgICBzbm9kZS5h
c3NlcnRfYXR0cih0eXBlPSJweXRlc3Quc2tpcCIsIG1lc3NhZ2U9ImhlbGxvMjMiKQogCi0gICAg
ZGVmIHRlc3RfbWFya19za2lwX2NvbnRhaW5zX25hbWVfcmVhc29uKHNlbGYsIHRlc3RkaXIpOgor
ICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X21hcmtfc2tpcF9jb250YWlu
c19uYW1lX3JlYXNvbihzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkp
OgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKQEAgLTI1OSwyMSArMzYwLDIxIEBAIGNsYXNzIFRlc3RQeXRob24o
b2JqZWN0KToKICAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQogICAgICAgICAiIiIKICAgICAg
ICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAg
IHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9i
eV90YWcoInRlc3RzdWl0ZSIpCi0gICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoc2tpcHM9MSkKKyAg
ICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lwcGVkPTEpCiAgICAgICAgIHRub2RlID0gbm9kZS5m
aW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQogICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cigK
LSAgICAgICAgICAgIGZpbGU9InRlc3RfbWFya19za2lwX2NvbnRhaW5zX25hbWVfcmVhc29uLnB5
IiwKLSAgICAgICAgICAgIGxpbmU9IjEiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X21h
cmtfc2tpcF9jb250YWluc19uYW1lX3JlYXNvbiIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X3Nr
aXAiLAorICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X21hcmtfc2tpcF9jb250YWluc19uYW1l
X3JlYXNvbiIsIG5hbWU9InRlc3Rfc2tpcCIKICAgICAgICAgKQogICAgICAgICBzbm9kZSA9IHRu
b2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJza2lwcGVkIikKICAgICAgICAgc25vZGUuYXNzZXJ0X2F0
dHIodHlwZT0icHl0ZXN0LnNraXAiLCBtZXNzYWdlPSJoZWxsbzI0IikKIAotICAgIGRlZiB0ZXN0
X21hcmtfc2tpcGlmX2NvbnRhaW5zX25hbWVfcmVhc29uKHNlbGYsIHRlc3RkaXIpOgorICAgIEBw
YXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X21hcmtfc2tpcGlmX2NvbnRhaW5zX25h
bWVfcmVhc29uKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9m
YW1pbHkKKyAgICApOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAi
IiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTI4MywyMSArMzg0LDIxIEBAIGNsYXNz
IFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBhc3NlcnQgVHJ1ZQogICAgICAg
ICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3Rk
aXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFt
aWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgICAgIG5vZGUgPSBkb20u
ZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCi0gICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIo
c2tpcHM9MSkKKyAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lwcGVkPTEpCiAgICAgICAgIHRu
b2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQogICAgICAgICB0bm9kZS5h
c3NlcnRfYXR0cigKLSAgICAgICAgICAgIGZpbGU9InRlc3RfbWFya19za2lwaWZfY29udGFpbnNf
bmFtZV9yZWFzb24ucHkiLAotICAgICAgICAgICAgbGluZT0iMiIsCi0gICAgICAgICAgICBjbGFz
c25hbWU9InRlc3RfbWFya19za2lwaWZfY29udGFpbnNfbmFtZV9yZWFzb24iLAotICAgICAgICAg
ICAgbmFtZT0idGVzdF9za2lwIiwKKyAgICAgICAgICAgIGNsYXNzbmFtZT0idGVzdF9tYXJrX3Nr
aXBpZl9jb250YWluc19uYW1lX3JlYXNvbiIsIG5hbWU9InRlc3Rfc2tpcCIKICAgICAgICAgKQog
ICAgICAgICBzbm9kZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJza2lwcGVkIikKICAgICAg
ICAgc25vZGUuYXNzZXJ0X2F0dHIodHlwZT0icHl0ZXN0LnNraXAiLCBtZXNzYWdlPSJoZWxsbzI1
IikKIAotICAgIGRlZiB0ZXN0X21hcmtfc2tpcF9kb2VzbnRfY2FwdHVyZV9vdXRwdXQoc2VsZiwg
dGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3RfbWFya19z
a2lwX2RvZXNudF9jYXB0dXJlX291dHB1dCgKKyAgICAgICAgc2VsZiwgdGVzdGRpciwgcnVuX2Fu
ZF9wYXJzZSwgeHVuaXRfZmFtaWx5CisgICAgKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0zMDYsMTIg
KzQwNywxMyBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcHJp
bnQoImJhciEiKQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9
IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJz
ZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAg
ICAgICAgIG5vZGVfeG1sID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKS50b3ht
bCgpCiAgICAgICAgIGFzc2VydCAiYmFyISIgbm90IGluIG5vZGVfeG1sCiAKLSAgICBkZWYgdGVz
dF9jbGFzc25hbWVfaW5zdGFuY2Uoc2VsZiwgdGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2Zh
bWlsaWVzCisgICAgZGVmIHRlc3RfY2xhc3NuYW1lX2luc3RhbmNlKHNlbGYsIHRlc3RkaXIsIHJ1
bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6CkBA
IC0zMTksMzcgKzQyMSwzMSBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3Vs
dCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5f
YW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0
CiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAg
ICAgIG5vZGUuYXNzZXJ0X2F0dHIoZmFpbHVyZXM9MSkKICAgICAgICAgdG5vZGUgPSBub2RlLmZp
bmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCiAgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKAot
ICAgICAgICAgICAgZmlsZT0idGVzdF9jbGFzc25hbWVfaW5zdGFuY2UucHkiLAotICAgICAgICAg
ICAgbGluZT0iMSIsCi0gICAgICAgICAgICBjbGFzc25hbWU9InRlc3RfY2xhc3NuYW1lX2luc3Rh
bmNlLlRlc3RDbGFzcyIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X21ldGhvZCIsCisgICAgICAg
ICAgICBjbGFzc25hbWU9InRlc3RfY2xhc3NuYW1lX2luc3RhbmNlLlRlc3RDbGFzcyIsIG5hbWU9
InRlc3RfbWV0aG9kIgogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9jbGFzc25hbWVfbmVzdGVk
X2RpcihzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYg
dGVzdF9jbGFzc25hbWVfbmVzdGVkX2RpcihzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4
dW5pdF9mYW1pbHkpOgogICAgICAgICBwID0gdGVzdGRpci50bXBkaXIuZW5zdXJlKCJzdWIiLCAi
dGVzdF9oZWxsby5weSIpCiAgICAgICAgIHAud3JpdGUoImRlZiB0ZXN0X2Z1bmMoKTogMC8wIikK
LSAgICAgICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1
bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKICAgICAgICAgYXNz
ZXJ0IHJlc3VsdC5yZXQKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVz
dHN1aXRlIikKICAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihmYWlsdXJlcz0xKQogICAgICAgICB0
bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5vZGUu
YXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBmaWxlPW9zLnBhdGguam9pbigic3ViIiwgInRlc3Rf
aGVsbG8ucHkiKSwKLSAgICAgICAgICAgIGxpbmU9IjAiLAotICAgICAgICAgICAgY2xhc3NuYW1l
PSJzdWIudGVzdF9oZWxsbyIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X2Z1bmMiLAotICAgICAg
ICApCisgICAgICAgIHRub2RlLmFzc2VydF9hdHRyKGNsYXNzbmFtZT0ic3ViLnRlc3RfaGVsbG8i
LCBuYW1lPSJ0ZXN0X2Z1bmMiKQogCi0gICAgZGVmIHRlc3RfaW50ZXJuYWxfZXJyb3Ioc2VsZiwg
dGVzdGRpcik6CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3RfaW50ZXJu
YWxfZXJyb3Ioc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKICAg
ICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoImRlZiBweXRlc3RfcnVudGVzdF9wcm90b2NvbCgp
OiAwIC8gMCIpCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3RfZnVuY3Rpb24o
KTogcGFzcyIpCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAg
ICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAg
ICAgICAgIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9i
eV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoZXJyb3JzPTEsIHRl
c3RzPTEpCkBAIC0zNTksMTUgKzQ1NSwyMCBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAg
ICAgICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9ImludGVybmFsIGVycm9yIikKICAgICAg
ICAgYXNzZXJ0ICJEaXZpc2lvbiIgaW4gZm5vZGUudG94bWwoKQogCi0gICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJqdW5pdF9sb2dnaW5nIiwgWyJubyIsICJzeXN0ZW0tb3V0IiwgInN5c3Rl
bS1lcnIiXSkKLSAgICBkZWYgdGVzdF9mYWlsdXJlX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIsIGp1
bml0X2xvZ2dpbmcpOgorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgImp1
bml0X2xvZ2dpbmciLCBbIm5vIiwgImxvZyIsICJzeXN0ZW0tb3V0IiwgInN5c3RlbS1lcnIiLCAi
b3V0LWVyciIsICJhbGwiXQorICAgICkKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBk
ZWYgdGVzdF9mYWlsdXJlX2Z1bmN0aW9uKAorICAgICAgICBzZWxmLCB0ZXN0ZGlyLCBqdW5pdF9s
b2dnaW5nLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkKKyAgICApOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBsb2dn
aW5nCiAgICAgICAgICAgICBpbXBvcnQgc3lzCiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWwo
KToKLSAgICAgICAgICAgICAgICBwcmludCAoImhlbGxvLXN0ZG91dCIpCisgICAgICAgICAgICAg
ICAgcHJpbnQoImhlbGxvLXN0ZG91dCIpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgiaGVsbG8tc3RkZXJyXFxuIikKICAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ2luZm8g
bXNnJykKICAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ3dhcm5pbmcgbXNnJykKQEAg
LTM3NSw0MCArNDc2LDU0IEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgIiIi
CiAgICAgICAgICkKIAotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIs
ICItbyIsICJqdW5pdF9sb2dnaW5nPSVzIiAlIGp1bml0X2xvZ2dpbmcpCi0gICAgICAgIGFzc2Vy
dCByZXN1bHQucmV0CisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgKKyAgICAg
ICAgICAgICItbyIsICJqdW5pdF9sb2dnaW5nPSVzIiAlIGp1bml0X2xvZ2dpbmcsIGZhbWlseT14
dW5pdF9mYW1pbHkKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCwgIkV4cGVj
dGVkIHJldCA+IDAiCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3Rz
dWl0ZSIpCiAgICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoZmFpbHVyZXM9MSwgdGVzdHM9MSkKICAg
ICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAgICAg
IHRub2RlLmFzc2VydF9hdHRyKAotICAgICAgICAgICAgZmlsZT0idGVzdF9mYWlsdXJlX2Z1bmN0
aW9uLnB5IiwKLSAgICAgICAgICAgIGxpbmU9IjMiLAotICAgICAgICAgICAgY2xhc3NuYW1lPSJ0
ZXN0X2ZhaWx1cmVfZnVuY3Rpb24iLAotICAgICAgICAgICAgbmFtZT0idGVzdF9mYWlsIiwKLSAg
ICAgICAgKQorICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihjbGFzc25hbWU9InRlc3RfZmFpbHVy
ZV9mdW5jdGlvbiIsIG5hbWU9InRlc3RfZmFpbCIpCiAgICAgICAgIGZub2RlID0gdG5vZGUuZmlu
ZF9maXJzdF9ieV90YWcoImZhaWx1cmUiKQogICAgICAgICBmbm9kZS5hc3NlcnRfYXR0cihtZXNz
YWdlPSJWYWx1ZUVycm9yOiA0MiIpCi0gICAgICAgIGFzc2VydCAiVmFsdWVFcnJvciIgaW4gZm5v
ZGUudG94bWwoKQotICAgICAgICBzeXN0ZW1vdXQgPSBmbm9kZS5uZXh0X3NpZWJsaW5nCi0gICAg
ICAgIGFzc2VydCBzeXN0ZW1vdXQudGFnID09ICJzeXN0ZW0tb3V0IgotICAgICAgICBhc3NlcnQg
ImhlbGxvLXN0ZG91dCIgaW4gc3lzdGVtb3V0LnRveG1sKCkKLSAgICAgICAgYXNzZXJ0ICJpbmZv
IG1zZyIgbm90IGluIHN5c3RlbW91dC50b3htbCgpCi0gICAgICAgIHN5c3RlbWVyciA9IHN5c3Rl
bW91dC5uZXh0X3NpZWJsaW5nCi0gICAgICAgIGFzc2VydCBzeXN0ZW1lcnIudGFnID09ICJzeXN0
ZW0tZXJyIgotICAgICAgICBhc3NlcnQgImhlbGxvLXN0ZGVyciIgaW4gc3lzdGVtZXJyLnRveG1s
KCkKLSAgICAgICAgYXNzZXJ0ICJpbmZvIG1zZyIgbm90IGluIHN5c3RlbWVyci50b3htbCgpCi0K
LSAgICAgICAgaWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLW91dCI6Ci0gICAgICAgICAgICBh
c3NlcnQgIndhcm5pbmcgbXNnIiBpbiBzeXN0ZW1vdXQudG94bWwoKQotICAgICAgICAgICAgYXNz
ZXJ0ICJ3YXJuaW5nIG1zZyIgbm90IGluIHN5c3RlbWVyci50b3htbCgpCi0gICAgICAgIGVsaWYg
anVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLWVyciI6Ci0gICAgICAgICAgICBhc3NlcnQgIndhcm5p
bmcgbXNnIiBub3QgaW4gc3lzdGVtb3V0LnRveG1sKCkKLSAgICAgICAgICAgIGFzc2VydCAid2Fy
bmluZyBtc2ciIGluIHN5c3RlbWVyci50b3htbCgpCi0gICAgICAgIGVsaWYganVuaXRfbG9nZ2lu
ZyA9PSAibm8iOgotICAgICAgICAgICAgYXNzZXJ0ICJ3YXJuaW5nIG1zZyIgbm90IGluIHN5c3Rl
bW91dC50b3htbCgpCi0gICAgICAgICAgICBhc3NlcnQgIndhcm5pbmcgbXNnIiBub3QgaW4gc3lz
dGVtZXJyLnRveG1sKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVfdmVyYm9zZV9tZXNzYWdlKHNl
bGYsIHRlc3RkaXIpOgorICAgICAgICBhc3NlcnQgIlZhbHVlRXJyb3IiIGluIGZub2RlLnRveG1s
KCksICJWYWx1ZUVycm9yIG5vdCBpbmNsdWRlZCIKKworICAgICAgICBpZiBqdW5pdF9sb2dnaW5n
IGluIFsibG9nIiwgImFsbCJdOgorICAgICAgICAgICAgbG9nZGF0YSA9IHRub2RlLmZpbmRfZmly
c3RfYnlfdGFnKCJzeXN0ZW0tb3V0IikKKyAgICAgICAgICAgIGxvZ194bWwgPSBsb2dkYXRhLnRv
eG1sKCkKKyAgICAgICAgICAgIGFzc2VydCBsb2dkYXRhLnRhZyA9PSAic3lzdGVtLW91dCIsICJF
eHBlY3RlZCB0YWc6IHN5c3RlbS1vdXQiCisgICAgICAgICAgICBhc3NlcnQgImluZm8gbXNnIiBu
b3QgaW4gbG9nX3htbCwgIlVuZXhwZWN0ZWQgSU5GTyBtZXNzYWdlIgorICAgICAgICAgICAgYXNz
ZXJ0ICJ3YXJuaW5nIG1zZyIgaW4gbG9nX3htbCwgIk1pc3NpbmcgV0FSTiBtZXNzYWdlIgorICAg
ICAgICBpZiBqdW5pdF9sb2dnaW5nIGluIFsic3lzdGVtLW91dCIsICJvdXQtZXJyIiwgImFsbCJd
OgorICAgICAgICAgICAgc3lzdGVtb3V0ID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoInN5c3Rl
bS1vdXQiKQorICAgICAgICAgICAgc3lzdGVtb3V0X3htbCA9IHN5c3RlbW91dC50b3htbCgpCisg
ICAgICAgICAgICBhc3NlcnQgc3lzdGVtb3V0LnRhZyA9PSAic3lzdGVtLW91dCIsICJFeHBlY3Rl
ZCB0YWc6IHN5c3RlbS1vdXQiCisgICAgICAgICAgICBhc3NlcnQgImluZm8gbXNnIiBub3QgaW4g
c3lzdGVtb3V0X3htbCwgIklORk8gbWVzc2FnZSBmb3VuZCBpbiBzeXN0ZW0tb3V0IgorICAgICAg
ICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAiaGVsbG8tc3Rkb3V0IiBpbiBzeXN0ZW1v
dXRfeG1sCisgICAgICAgICAgICApLCAiTWlzc2luZyAnaGVsbG8tc3Rkb3V0JyBpbiBzeXN0ZW0t
b3V0IgorICAgICAgICBpZiBqdW5pdF9sb2dnaW5nIGluIFsic3lzdGVtLWVyciIsICJvdXQtZXJy
IiwgImFsbCJdOgorICAgICAgICAgICAgc3lzdGVtZXJyID0gdG5vZGUuZmluZF9maXJzdF9ieV90
YWcoInN5c3RlbS1lcnIiKQorICAgICAgICAgICAgc3lzdGVtZXJyX3htbCA9IHN5c3RlbWVyci50
b3htbCgpCisgICAgICAgICAgICBhc3NlcnQgc3lzdGVtZXJyLnRhZyA9PSAic3lzdGVtLWVyciIs
ICJFeHBlY3RlZCB0YWc6IHN5c3RlbS1lcnIiCisgICAgICAgICAgICBhc3NlcnQgImluZm8gbXNn
IiBub3QgaW4gc3lzdGVtZXJyX3htbCwgIklORk8gbWVzc2FnZSBmb3VuZCBpbiBzeXN0ZW0tZXJy
IgorICAgICAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAiaGVsbG8tc3RkZXJyIiBp
biBzeXN0ZW1lcnJfeG1sCisgICAgICAgICAgICApLCAiTWlzc2luZyAnaGVsbG8tc3RkZXJyJyBp
biBzeXN0ZW0tZXJyIgorICAgICAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAid2Fy
bmluZyBtc2ciIG5vdCBpbiBzeXN0ZW1lcnJfeG1sCisgICAgICAgICAgICApLCAiV0FSTiBtZXNz
YWdlIGZvdW5kIGluIHN5c3RlbS1lcnIiCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gIm5v
IjoKKyAgICAgICAgICAgIGFzc2VydCBub3QgdG5vZGUuZmluZF9ieV90YWcoImxvZyIpLCAiRm91
bmQgdW5leHBlY3RlZCBjb250ZW50OiBsb2ciCisgICAgICAgICAgICBhc3NlcnQgbm90IHRub2Rl
LmZpbmRfYnlfdGFnKAorICAgICAgICAgICAgICAgICJzeXN0ZW0tb3V0IgorICAgICAgICAgICAg
KSwgIkZvdW5kIHVuZXhwZWN0ZWQgY29udGVudDogc3lzdGVtLW91dCIKKyAgICAgICAgICAgIGFz
c2VydCBub3QgdG5vZGUuZmluZF9ieV90YWcoCisgICAgICAgICAgICAgICAgInN5c3RlbS1lcnIi
CisgICAgICAgICAgICApLCAiRm91bmQgdW5leHBlY3RlZCBjb250ZW50OiBzeXN0ZW0tZXJyIgor
CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3RfZmFpbHVyZV92ZXJib3Nl
X21lc3NhZ2Uoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBp
bXBvcnQgc3lzCkBAIC00MTYsMTQgKzUzMSwxNCBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAsICJBbiBlcnJvciIKICAgICAgICAgIiIiCiAgICAg
ICAgICkKLQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAg
ICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAg
ICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICB0
bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAgICAgICAgZm5vZGUg
PSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygiZmFpbHVyZSIpCi0gICAgICAgIGZub2RlLmFzc2Vy
dF9hdHRyKG1lc3NhZ2U9IkFzc2VydGlvbkVycm9yOiBBbiBlcnJvciBhc3NlcnQgMCIpCisgICAg
ICAgIGZub2RlLmFzc2VydF9hdHRyKG1lc3NhZ2U9IkFzc2VydGlvbkVycm9yOiBBbiBlcnJvclxu
YXNzZXJ0IDAiKQogCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9lc2NhcGUoc2VsZiwgdGVzdGRpcik6
CisgICAgQHBhcmFtZXRyaXplX2ZhbWlsaWVzCisgICAgZGVmIHRlc3RfZmFpbHVyZV9lc2NhcGUo
c2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKICAgICAgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0CkBAIC00MzMsNyArNTQ4LDkgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAg
ICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3Vs
dCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5f
YW5kX3BhcnNlKAorICAgICAgICAgICAgIi1vIiwgImp1bml0X2xvZ2dpbmc9c3lzdGVtLW91dCIs
IGZhbWlseT14dW5pdF9mYW1pbHkKKyAgICAgICAgKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJl
dAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAg
ICAgICBub2RlLmFzc2VydF9hdHRyKGZhaWx1cmVzPTMsIHRlc3RzPTMpCkBAIC00NDIsMTYgKzU1
OSwxNCBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAKICAgICAgICAgICAgIHRub2RlID0g
bm9kZS5maW5kX250aF9ieV90YWcoInRlc3RjYXNlIiwgaW5kZXgpCiAgICAgICAgICAgICB0bm9k
ZS5hc3NlcnRfYXR0cigKLSAgICAgICAgICAgICAgICBmaWxlPSJ0ZXN0X2ZhaWx1cmVfZXNjYXBl
LnB5IiwKLSAgICAgICAgICAgICAgICBsaW5lPSIxIiwKLSAgICAgICAgICAgICAgICBjbGFzc25h
bWU9InRlc3RfZmFpbHVyZV9lc2NhcGUiLAotICAgICAgICAgICAgICAgIG5hbWU9InRlc3RfZnVu
Y1slc10iICUgY2hhciwKKyAgICAgICAgICAgICAgICBjbGFzc25hbWU9InRlc3RfZmFpbHVyZV9l
c2NhcGUiLCBuYW1lPSJ0ZXN0X2Z1bmNbJXNdIiAlIGNoYXIKICAgICAgICAgICAgICkKICAgICAg
ICAgICAgIHN5c291dCA9IHRub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJzeXN0ZW0tb3V0IikKICAg
ICAgICAgICAgIHRleHQgPSBzeXNvdXQudGV4dAotICAgICAgICAgICAgYXNzZXJ0IHRleHQgPT0g
IiVzXG4iICUgY2hhcgorICAgICAgICAgICAgYXNzZXJ0ICIlc1xuIiAlIGNoYXIgaW4gdGV4dAog
Ci0gICAgZGVmIHRlc3RfanVuaXRfcHJlZml4aW5nKHNlbGYsIHRlc3RkaXIpOgorICAgIEBwYXJh
bWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X2p1bml0X3ByZWZpeGluZyhzZWxmLCB0ZXN0
ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKQEAg
LTQ2MSwyNiArNTc2LDE5IEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRv
bSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIsICItLWp1bml0cHJlZml4PXh5eiIpCisgICAgICAgIHJl
c3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgiLS1qdW5pdHByZWZpeD14eXoiLCBmYW1pbHk9eHVu
aXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldAogICAgICAgICBub2RlID0gZG9t
LmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICBub2RlLmFzc2VydF9hdHRy
KGZhaWx1cmVzPTEsIHRlc3RzPTIpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5
X3RhZygidGVzdGNhc2UiKQotICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cigKLSAgICAgICAgICAg
IGZpbGU9InRlc3RfanVuaXRfcHJlZml4aW5nLnB5IiwKLSAgICAgICAgICAgIGxpbmU9IjAiLAot
ICAgICAgICAgICAgY2xhc3NuYW1lPSJ4eXoudGVzdF9qdW5pdF9wcmVmaXhpbmciLAotICAgICAg
ICAgICAgbmFtZT0idGVzdF9mdW5jIiwKLSAgICAgICAgKQorICAgICAgICB0bm9kZS5hc3NlcnRf
YXR0cihjbGFzc25hbWU9Inh5ei50ZXN0X2p1bml0X3ByZWZpeGluZyIsIG5hbWU9InRlc3RfZnVu
YyIpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX250aF9ieV90YWcoInRlc3RjYXNlIiwgMSkK
ICAgICAgICAgdG5vZGUuYXNzZXJ0X2F0dHIoCi0gICAgICAgICAgICBmaWxlPSJ0ZXN0X2p1bml0
X3ByZWZpeGluZy5weSIsCi0gICAgICAgICAgICBsaW5lPSIzIiwKLSAgICAgICAgICAgIGNsYXNz
bmFtZT0ieHl6LnRlc3RfanVuaXRfcHJlZml4aW5nLiIgIlRlc3RIZWxsbyIsCi0gICAgICAgICAg
ICBuYW1lPSJ0ZXN0X2hlbGxvIiwKKyAgICAgICAgICAgIGNsYXNzbmFtZT0ieHl6LnRlc3RfanVu
aXRfcHJlZml4aW5nLlRlc3RIZWxsbyIsIG5hbWU9InRlc3RfaGVsbG8iCiAgICAgICAgICkKIAot
ICAgIGRlZiB0ZXN0X3hmYWlsdXJlX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgIEBwYXJh
bWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X3hmYWlsdXJlX2Z1bmN0aW9uKHNlbGYsIHRl
c3RkaXIsIHJ1bl9hbmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAt
NDg4LDIyICs1OTYsMzggQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAg
ICAgIHB5dGVzdC54ZmFpbCgiNDIiKQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICBy
ZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0g
cnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgbm90IHJl
c3VsdC5yZXQKICAgICAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRl
IikKLSAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lwcz0xLCB0ZXN0cz0xKQorICAgICAgICBu
b2RlLmFzc2VydF9hdHRyKHNraXBwZWQ9MSwgdGVzdHM9MSkKICAgICAgICAgdG5vZGUgPSBub2Rl
LmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAgICAgIHRub2RlLmFzc2VydF9hdHRy
KAotICAgICAgICAgICAgZmlsZT0idGVzdF94ZmFpbHVyZV9mdW5jdGlvbi5weSIsCi0gICAgICAg
ICAgICBsaW5lPSIxIiwKLSAgICAgICAgICAgIGNsYXNzbmFtZT0idGVzdF94ZmFpbHVyZV9mdW5j
dGlvbiIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0X3hmYWlsIiwKKyAgICAgICAgdG5vZGUuYXNz
ZXJ0X2F0dHIoY2xhc3NuYW1lPSJ0ZXN0X3hmYWlsdXJlX2Z1bmN0aW9uIiwgbmFtZT0idGVzdF94
ZmFpbCIpCisgICAgICAgIGZub2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoInNraXBwZWQi
KQorICAgICAgICBmbm9kZS5hc3NlcnRfYXR0cih0eXBlPSJweXRlc3QueGZhaWwiLCBtZXNzYWdl
PSI0MiIpCisKKyAgICBAcGFyYW1ldHJpemVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF94ZmFpbHVy
ZV9tYXJrZXIoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKKyAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBp
bXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSI0MiIp
CisgICAgICAgICAgICBkZWYgdGVzdF94ZmFpbCgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZQorICAgICAgICAiIiIKICAgICAgICAgKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9h
bmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKKyAgICAgICAgYXNzZXJ0IG5vdCByZXN1bHQu
cmV0CisgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCisg
ICAgICAgIG5vZGUuYXNzZXJ0X2F0dHIoc2tpcHBlZD0xLCB0ZXN0cz0xKQorICAgICAgICB0bm9k
ZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKKyAgICAgICAgdG5vZGUuYXNz
ZXJ0X2F0dHIoY2xhc3NuYW1lPSJ0ZXN0X3hmYWlsdXJlX21hcmtlciIsIG5hbWU9InRlc3RfeGZh
aWwiKQogICAgICAgICBmbm9kZSA9IHRub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJza2lwcGVkIikK
LSAgICAgICAgZm5vZGUuYXNzZXJ0X2F0dHIobWVzc2FnZT0iZXhwZWN0ZWQgdGVzdCBmYWlsdXJl
IikKLSAgICAgICAgIyBhc3NlcnQgIlZhbHVlRXJyb3IiIGluIGZub2RlLnRveG1sKCkKKyAgICAg
ICAgZm5vZGUuYXNzZXJ0X2F0dHIodHlwZT0icHl0ZXN0LnhmYWlsIiwgbWVzc2FnZT0iNDIiKQog
Ci0gICAgZGVmIHRlc3RfeGZhaWxfY2FwdHVyZXNfb3V0cHV0X29uY2Uoc2VsZiwgdGVzdGRpcik6
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAianVuaXRfbG9nZ2luZyIs
IFsibm8iLCAibG9nIiwgInN5c3RlbS1vdXQiLCAic3lzdGVtLWVyciIsICJvdXQtZXJyIiwgImFs
bCJdCisgICAgKQorICAgIGRlZiB0ZXN0X3hmYWlsX2NhcHR1cmVzX291dHB1dF9vbmNlKHNlbGYs
IHRlc3RkaXIsIGp1bml0X2xvZ2dpbmcsIHJ1bl9hbmRfcGFyc2UpOgogICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBzeXMKQEAg
LTUxNiwxMyArNjQwLDIxIEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBhc3NlcnQgMAogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRv
bSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9w
YXJzZSgiLW8iLCAianVuaXRfbG9nZ2luZz0lcyIgJSBqdW5pdF9sb2dnaW5nKQogICAgICAgICBu
b2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICB0bm9kZSA9
IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgYXNzZXJ0IGxlbih0
bm9kZS5maW5kX2J5X3RhZygic3lzdGVtLWVyciIpKSA9PSAxCi0gICAgICAgIGFzc2VydCBsZW4o
dG5vZGUuZmluZF9ieV90YWcoInN5c3RlbS1vdXQiKSkgPT0gMQorICAgICAgICBpZiBqdW5pdF9s
b2dnaW5nIGluIFsic3lzdGVtLWVyciIsICJvdXQtZXJyIiwgImFsbCJdOgorICAgICAgICAgICAg
YXNzZXJ0IGxlbih0bm9kZS5maW5kX2J5X3RhZygic3lzdGVtLWVyciIpKSA9PSAxCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgbGVuKHRub2RlLmZpbmRfYnlfdGFnKCJzeXN0ZW0t
ZXJyIikpID09IDAKIAotICAgIGRlZiB0ZXN0X3hmYWlsdXJlX3hwYXNzKHNlbGYsIHRlc3RkaXIp
OgorICAgICAgICBpZiBqdW5pdF9sb2dnaW5nIGluIFsibG9nIiwgInN5c3RlbS1vdXQiLCAib3V0
LWVyciIsICJhbGwiXToKKyAgICAgICAgICAgIGFzc2VydCBsZW4odG5vZGUuZmluZF9ieV90YWco
InN5c3RlbS1vdXQiKSkgPT0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGxl
bih0bm9kZS5maW5kX2J5X3RhZygic3lzdGVtLW91dCIpKSA9PSAwCisKKyAgICBAcGFyYW1ldHJp
emVfZmFtaWxpZXMKKyAgICBkZWYgdGVzdF94ZmFpbHVyZV94cGFzcyhzZWxmLCB0ZXN0ZGlyLCBy
dW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTUzMSwxOSAr
NjYzLDE1IEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXNz
CiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFy
c2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKGZhbWlseT14
dW5pdF9mYW1pbHkpCiAgICAgICAgICMgYXNzZXJ0IHJlc3VsdC5yZXQKICAgICAgICAgbm9kZSA9
IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKLSAgICAgICAgbm9kZS5hc3NlcnRf
YXR0cihza2lwcz0wLCB0ZXN0cz0xKQorICAgICAgICBub2RlLmFzc2VydF9hdHRyKHNraXBwZWQ9
MCwgdGVzdHM9MSkKICAgICAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0
Y2FzZSIpCi0gICAgICAgIHRub2RlLmFzc2VydF9hdHRyKAotICAgICAgICAgICAgZmlsZT0idGVz
dF94ZmFpbHVyZV94cGFzcy5weSIsCi0gICAgICAgICAgICBsaW5lPSIxIiwKLSAgICAgICAgICAg
IGNsYXNzbmFtZT0idGVzdF94ZmFpbHVyZV94cGFzcyIsCi0gICAgICAgICAgICBuYW1lPSJ0ZXN0
X3hwYXNzIiwKLSAgICAgICAgKQorICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihjbGFzc25hbWU9
InRlc3RfeGZhaWx1cmVfeHBhc3MiLCBuYW1lPSJ0ZXN0X3hwYXNzIikKIAotICAgIGRlZiB0ZXN0
X3hmYWlsdXJlX3hwYXNzX3N0cmljdChzZWxmLCB0ZXN0ZGlyKToKKyAgICBAcGFyYW1ldHJpemVf
ZmFtaWxpZXMKKyAgICBkZWYgdGVzdF94ZmFpbHVyZV94cGFzc19zdHJpY3Qoc2VsZiwgdGVzdGRp
ciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKICAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC01NTIs
NTMgKzY4MCw0NiBAQCBjbGFzcyBUZXN0UHl0aG9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
cGFzcwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFu
ZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1p
bHk9eHVuaXRfZmFtaWx5KQogICAgICAgICAjIGFzc2VydCByZXN1bHQucmV0CiAgICAgICAgIG5v
ZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCi0gICAgICAgIG5vZGUuYXNz
ZXJ0X2F0dHIoc2tpcHM9MCwgdGVzdHM9MSkKKyAgICAgICAgbm9kZS5hc3NlcnRfYXR0cihza2lw
cGVkPTAsIHRlc3RzPTEpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygi
dGVzdGNhc2UiKQotICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cigKLSAgICAgICAgICAgIGZpbGU9
InRlc3RfeGZhaWx1cmVfeHBhc3Nfc3RyaWN0LnB5IiwKLSAgICAgICAgICAgIGxpbmU9IjEiLAot
ICAgICAgICAgICAgY2xhc3NuYW1lPSJ0ZXN0X3hmYWlsdXJlX3hwYXNzX3N0cmljdCIsCi0gICAg
ICAgICAgICBuYW1lPSJ0ZXN0X3hwYXNzIiwKLSAgICAgICAgKQorICAgICAgICB0bm9kZS5hc3Nl
cnRfYXR0cihjbGFzc25hbWU9InRlc3RfeGZhaWx1cmVfeHBhc3Nfc3RyaWN0IiwgbmFtZT0idGVz
dF94cGFzcyIpCiAgICAgICAgIGZub2RlID0gdG5vZGUuZmluZF9maXJzdF9ieV90YWcoImZhaWx1
cmUiKQogICAgICAgICBmbm9kZS5hc3NlcnRfYXR0cihtZXNzYWdlPSJbWFBBU1Moc3RyaWN0KV0g
VGhpcyBuZWVkcyB0byBmYWlsISIpCiAKLSAgICBkZWYgdGVzdF9jb2xsZWN0X2Vycm9yKHNlbGYs
IHRlc3RkaXIpOgorICAgIEBwYXJhbWV0cml6ZV9mYW1pbGllcworICAgIGRlZiB0ZXN0X2NvbGxl
Y3RfZXJyb3Ioc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJzeW50YXggZXJyb3IiKQotICAgICAgICByZXN1bHQs
IGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2Fu
ZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldAog
ICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAg
ICBub2RlLmFzc2VydF9hdHRyKGVycm9ycz0xLCB0ZXN0cz0xKQogICAgICAgICB0bm9kZSA9IG5v
ZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgdG5vZGUuYXNzZXJ0X2F0
dHIoZmlsZT0idGVzdF9jb2xsZWN0X2Vycm9yLnB5IiwgbmFtZT0idGVzdF9jb2xsZWN0X2Vycm9y
IikKLSAgICAgICAgYXNzZXJ0IHRub2RlWyJsaW5lIl0gaXMgTm9uZQogICAgICAgICBmbm9kZSA9
IHRub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJlcnJvciIpCiAgICAgICAgIGZub2RlLmFzc2VydF9h
dHRyKG1lc3NhZ2U9ImNvbGxlY3Rpb24gZmFpbHVyZSIpCiAgICAgICAgIGFzc2VydCAiU3ludGF4
RXJyb3IiIGluIGZub2RlLnRveG1sKCkKIAotICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIHRlc3RfdW5pY29kZShzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNl
KToKICAgICAgICAgdmFsdWUgPSAiaHhceGM0XHg4NVx4YzRceDg3XG4iCiAgICAgICAgIHRlc3Rk
aXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgorICAgICAgICAgICAgIiIiXAogICAgICAg
ICAgICAgIyBjb2Rpbmc6IGxhdGluMQogICAgICAgICAgICAgZGVmIHRlc3RfaGVsbG8oKToKLSAg
ICAgICAgICAgICAgICBwcmludCAoJXIpCisgICAgICAgICAgICAgICAgcHJpbnQoJXIpCiAgICAg
ICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCisgICAgICAgICAgICAiIiIKICAgICAg
ICAgICAgICUgdmFsdWUKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBh
cnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgpCiAgICAg
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IDEKICAgICAgICAgdG5vZGUgPSBkb20uZmluZF9maXJz
dF9ieV90YWcoInRlc3RjYXNlIikKICAgICAgICAgZm5vZGUgPSB0bm9kZS5maW5kX2ZpcnN0X2J5
X3RhZygiZmFpbHVyZSIpCi0gICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgi
amF2YSIpOgotICAgICAgICAgICAgYXNzZXJ0ICJoeCIgaW4gZm5vZGUudG94bWwoKQorICAgICAg
ICBhc3NlcnQgImh4IiBpbiBmbm9kZS50b3htbCgpCiAKLSAgICBkZWYgdGVzdF9hc3NlcnRpb25f
YmluY2hhcnMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiInRoaXMgdGVzdCBkaWQgZmFpbCB3
aGVuIHRoZSBlc2NhcGluZyB3YXNudCBzdHJpY3QiIiIKKyAgICBkZWYgdGVzdF9hc3NlcnRpb25f
YmluY2hhcnMoc2VsZiwgdGVzdGRpciwgcnVuX2FuZF9wYXJzZSk6CisgICAgICAgICIiIlRoaXMg
dGVzdCBkaWQgZmFpbCB3aGVuIHRoZSBlc2NhcGluZyB3YXNuJ3Qgc3RyaWN0LiIiIgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKIApAQCAtNjA5LDIzICs3MzAs
MzIgQEAgY2xhc3MgVGVzdFB5dGhvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIGFzc2VydCBN
MSA9PSBNMgogICAgICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBkb20g
PSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFy
c2UoKQogICAgICAgICBwcmludChkb20udG94bWwoKSkKIAotICAgIGRlZiB0ZXN0X3Bhc3NfY2Fw
dHVyZXNfc3Rkb3V0KHNlbGYsIHRlc3RkaXIpOgorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgianVuaXRfbG9nZ2luZyIsIFsibm8iLCAic3lzdGVtLW91dCJdKQorICAgIGRlZiB0ZXN0X3Bh
c3NfY2FwdHVyZXNfc3Rkb3V0KHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIGp1bml0X2xv
Z2dpbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKToKICAgICAgICAgICAgICAgICBwcmludCgnaGVsbG8t
c3Rkb3V0JykKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgcmVzdWx0LCBkb20gPSBy
dW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2Uo
Ii1vIiwgImp1bml0X2xvZ2dpbmc9JXMiICUganVuaXRfbG9nZ2luZykKICAgICAgICAgbm9kZSA9
IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikKICAgICAgICAgcG5vZGUgPSBub2Rl
LmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCi0gICAgICAgIHN5c3RlbW91dCA9IHBub2Rl
LmZpbmRfZmlyc3RfYnlfdGFnKCJzeXN0ZW0tb3V0IikKLSAgICAgICAgYXNzZXJ0ICJoZWxsby1z
dGRvdXQiIGluIHN5c3RlbW91dC50b3htbCgpCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0g
Im5vIjoKKyAgICAgICAgICAgIGFzc2VydCBub3Qgbm9kZS5maW5kX2J5X3RhZygKKyAgICAgICAg
ICAgICAgICAic3lzdGVtLW91dCIKKyAgICAgICAgICAgICksICJzeXN0ZW0tb3V0IHNob3VsZCBu
b3QgYmUgZ2VuZXJhdGVkIgorICAgICAgICBpZiBqdW5pdF9sb2dnaW5nID09ICJzeXN0ZW0tb3V0
IjoKKyAgICAgICAgICAgIHN5c3RlbW91dCA9IHBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJzeXN0
ZW0tb3V0IikKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgImhlbGxvLXN0
ZG91dCIgaW4gc3lzdGVtb3V0LnRveG1sKCkKKyAgICAgICAgICAgICksICInaGVsbG8tc3Rkb3V0
JyBzaG91bGQgYmUgaW4gc3lzdGVtLW91dCIKIAotICAgIGRlZiB0ZXN0X3Bhc3NfY2FwdHVyZXNf
c3RkZXJyKHNlbGYsIHRlc3RkaXIpOgorICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgianVu
aXRfbG9nZ2luZyIsIFsibm8iLCAic3lzdGVtLWVyciJdKQorICAgIGRlZiB0ZXN0X3Bhc3NfY2Fw
dHVyZXNfc3RkZXJyKHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIGp1bml0X2xvZ2dpbmcp
OgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAg
ICAgIGltcG9ydCBzeXMKQEAgLTYzMywxMyArNzYzLDIxIEBAIGNsYXNzIFRlc3RQeXRob24ob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdoZWxsby1zdGRlcnInKQog
ICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNl
KHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgiLW8iLCAianVu
aXRfbG9nZ2luZz0lcyIgJSBqdW5pdF9sb2dnaW5nKQogICAgICAgICBub2RlID0gZG9tLmZpbmRf
Zmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICBwbm9kZSA9IG5vZGUuZmluZF9maXJz
dF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgc3lzdGVtb3V0ID0gcG5vZGUuZmluZF9maXJz
dF9ieV90YWcoInN5c3RlbS1lcnIiKQotICAgICAgICBhc3NlcnQgImhlbGxvLXN0ZGVyciIgaW4g
c3lzdGVtb3V0LnRveG1sKCkKLQotICAgIGRlZiB0ZXN0X3NldHVwX2Vycm9yX2NhcHR1cmVzX3N0
ZG91dChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgaWYganVuaXRfbG9nZ2luZyA9PSAibm8iOgor
ICAgICAgICAgICAgYXNzZXJ0IG5vdCBub2RlLmZpbmRfYnlfdGFnKAorICAgICAgICAgICAgICAg
ICJzeXN0ZW0tZXJyIgorICAgICAgICAgICAgKSwgInN5c3RlbS1lcnIgc2hvdWxkIG5vdCBiZSBn
ZW5lcmF0ZWQiCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gInN5c3RlbS1lcnIiOgorICAg
ICAgICAgICAgc3lzdGVtZXJyID0gcG5vZGUuZmluZF9maXJzdF9ieV90YWcoInN5c3RlbS1lcnIi
KQorICAgICAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAiaGVsbG8tc3RkZXJyIiBp
biBzeXN0ZW1lcnIudG94bWwoKQorICAgICAgICAgICAgKSwgIidoZWxsby1zdGRlcnInIHNob3Vs
ZCBiZSBpbiBzeXN0ZW0tZXJyIgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJqdW5p
dF9sb2dnaW5nIiwgWyJubyIsICJzeXN0ZW0tb3V0Il0pCisgICAgZGVmIHRlc3Rfc2V0dXBfZXJy
b3JfY2FwdHVyZXNfc3Rkb3V0KHNlbGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIGp1bml0X2xv
Z2dpbmcpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTY1MiwxMyArNzkwLDIxIEBAIGNsYXNzIFRlc3RQ
eXRob24ob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAg
ICApCi0gICAgICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAg
cmVzdWx0LCBkb20gPSBydW5fYW5kX3BhcnNlKCItbyIsICJqdW5pdF9sb2dnaW5nPSVzIiAlIGp1
bml0X2xvZ2dpbmcpCiAgICAgICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3Rz
dWl0ZSIpCiAgICAgICAgIHBub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2Ui
KQotICAgICAgICBzeXN0ZW1vdXQgPSBwbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLW91
dCIpCi0gICAgICAgIGFzc2VydCAiaGVsbG8tc3Rkb3V0IiBpbiBzeXN0ZW1vdXQudG94bWwoKQor
ICAgICAgICBpZiBqdW5pdF9sb2dnaW5nID09ICJubyI6CisgICAgICAgICAgICBhc3NlcnQgbm90
IG5vZGUuZmluZF9ieV90YWcoCisgICAgICAgICAgICAgICAgInN5c3RlbS1vdXQiCisgICAgICAg
ICAgICApLCAic3lzdGVtLW91dCBzaG91bGQgbm90IGJlIGdlbmVyYXRlZCIKKyAgICAgICAgaWYg
anVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLW91dCI6CisgICAgICAgICAgICBzeXN0ZW1vdXQgPSBw
bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLW91dCIpCisgICAgICAgICAgICBhc3NlcnQg
KAorICAgICAgICAgICAgICAgICJoZWxsby1zdGRvdXQiIGluIHN5c3RlbW91dC50b3htbCgpCisg
ICAgICAgICAgICApLCAiJ2hlbGxvLXN0ZG91dCcgc2hvdWxkIGJlIGluIHN5c3RlbS1vdXQiCiAK
LSAgICBkZWYgdGVzdF9zZXR1cF9lcnJvcl9jYXB0dXJlc19zdGRlcnIoc2VsZiwgdGVzdGRpcik6
CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJqdW5pdF9sb2dnaW5nIiwgWyJubyIsICJz
eXN0ZW0tZXJyIl0pCisgICAgZGVmIHRlc3Rfc2V0dXBfZXJyb3JfY2FwdHVyZXNfc3RkZXJyKHNl
bGYsIHRlc3RkaXIsIHJ1bl9hbmRfcGFyc2UsIGp1bml0X2xvZ2dpbmcpOgogICAgICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBzeXMK
QEAgLTY3MiwxMyArODE4LDIxIEBAIGNsYXNzIFRlc3RQeXRob24ob2JqZWN0KToKICAgICAgICAg
ICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIHJlc3VsdCwgZG9t
ID0gcnVuYW5kcGFyc2UodGVzdGRpcikKKyAgICAgICAgcmVzdWx0LCBkb20gPSBydW5fYW5kX3Bh
cnNlKCItbyIsICJqdW5pdF9sb2dnaW5nPSVzIiAlIGp1bml0X2xvZ2dpbmcpCiAgICAgICAgIG5v
ZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAgICAgIHBub2RlID0g
bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2UiKQotICAgICAgICBzeXN0ZW1vdXQgPSBw
bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic3lzdGVtLWVyciIpCi0gICAgICAgIGFzc2VydCAiaGVs
bG8tc3RkZXJyIiBpbiBzeXN0ZW1vdXQudG94bWwoKQotCi0gICAgZGVmIHRlc3RfYXZvaWRfZG91
YmxlX3N0ZG91dChzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgaWYganVuaXRfbG9nZ2luZyA9PSAi
bm8iOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBub2RlLmZpbmRfYnlfdGFnKAorICAgICAgICAg
ICAgICAgICJzeXN0ZW0tZXJyIgorICAgICAgICAgICAgKSwgInN5c3RlbS1lcnIgc2hvdWxkIG5v
dCBiZSBnZW5lcmF0ZWQiCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gInN5c3RlbS1lcnIi
OgorICAgICAgICAgICAgc3lzdGVtZXJyID0gcG5vZGUuZmluZF9maXJzdF9ieV90YWcoInN5c3Rl
bS1lcnIiKQorICAgICAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAiaGVsbG8tc3Rk
ZXJyIiBpbiBzeXN0ZW1lcnIudG94bWwoKQorICAgICAgICAgICAgKSwgIidoZWxsby1zdGRlcnIn
IHNob3VsZCBiZSBpbiBzeXN0ZW0tZXJyIgorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJqdW5pdF9sb2dnaW5nIiwgWyJubyIsICJzeXN0ZW0tb3V0Il0pCisgICAgZGVmIHRlc3RfYXZv
aWRfZG91YmxlX3N0ZG91dChzZWxmLCB0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCBqdW5pdF9sb2dn
aW5nKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAg
ICAgICAgICBpbXBvcnQgc3lzCkBAIC02OTMsMTIgKzg0NywxNyBAQCBjbGFzcyBUZXN0UHl0aG9u
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnaGVsbG8tc3Rkb3V0
IGNhbGwnKQogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQsIGRvbSA9IHJ1
bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgi
LW8iLCAianVuaXRfbG9nZ2luZz0lcyIgJSBqdW5pdF9sb2dnaW5nKQogICAgICAgICBub2RlID0g
ZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQogICAgICAgICBwbm9kZSA9IG5vZGUu
ZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKLSAgICAgICAgc3lzdGVtb3V0ID0gcG5vZGUu
ZmluZF9maXJzdF9ieV90YWcoInN5c3RlbS1vdXQiKQotICAgICAgICBhc3NlcnQgImhlbGxvLXN0
ZG91dCBjYWxsIiBpbiBzeXN0ZW1vdXQudG94bWwoKQotICAgICAgICBhc3NlcnQgImhlbGxvLXN0
ZG91dCB0ZWFyZG93biIgaW4gc3lzdGVtb3V0LnRveG1sKCkKKyAgICAgICAgaWYganVuaXRfbG9n
Z2luZyA9PSAibm8iOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBub2RlLmZpbmRfYnlfdGFnKAor
ICAgICAgICAgICAgICAgICJzeXN0ZW0tb3V0IgorICAgICAgICAgICAgKSwgInN5c3RlbS1vdXQg
c2hvdWxkIG5vdCBiZSBnZW5lcmF0ZWQiCisgICAgICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gInN5
c3RlbS1vdXQiOgorICAgICAgICAgICAgc3lzdGVtb3V0ID0gcG5vZGUuZmluZF9maXJzdF9ieV90
YWcoInN5c3RlbS1vdXQiKQorICAgICAgICAgICAgYXNzZXJ0ICJoZWxsby1zdGRvdXQgY2FsbCIg
aW4gc3lzdGVtb3V0LnRveG1sKCkKKyAgICAgICAgICAgIGFzc2VydCAiaGVsbG8tc3Rkb3V0IHRl
YXJkb3duIiBpbiBzeXN0ZW1vdXQudG94bWwoKQogCiAKIGRlZiB0ZXN0X21hbmdsZV90ZXN0X2Fk
ZHJlc3MoKToKQEAgLTcwOSw0NiArODY4LDQ2IEBAIGRlZiB0ZXN0X21hbmdsZV90ZXN0X2FkZHJl
c3MoKToKICAgICBhc3NlcnQgbmV3bmFtZXMgPT0gWyJhLm15LnB5LnRoaW5nIiwgIkNsYXNzIiwg
Im1ldGhvZCIsICJbYS0xLTo6XSJdCiAKIAotZGVmIHRlc3RfZG9udF9jb25maWd1cmVfb25fc2xh
dmVzKHRtcGRpcik6Ci0gICAgZ290dGVuID0gW10KK2RlZiB0ZXN0X2RvbnRfY29uZmlndXJlX29u
X3dvcmtlcnModG1wZGlyKSAtPiBOb25lOgorICAgIGdvdHRlbiA9IFtdICAjIHR5cGU6IExpc3Rb
b2JqZWN0XQogCi0gICAgY2xhc3MgRmFrZUNvbmZpZyhvYmplY3QpOgorICAgIGNsYXNzIEZha2VD
b25maWc6CisgICAgICAgIGlmIFRZUEVfQ0hFQ0tJTkc6CisgICAgICAgICAgICB3b3JrZXJpbnB1
dCA9IE5vbmUKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgICBzZWxm
LnBsdWdpbm1hbmFnZXIgPSBzZWxmCiAgICAgICAgICAgICBzZWxmLm9wdGlvbiA9IHNlbGYKKyAg
ICAgICAgICAgIHNlbGYuX3N0b3JlID0gU3RvcmUoKQogCiAgICAgICAgIGRlZiBnZXRpbmkoc2Vs
ZiwgbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gInB5dGVzdCIKIAogICAgICAgICBqdW5pdHBy
ZWZpeCA9IE5vbmUKLSAgICAgICAgIyBYWFg6IHNob3VsZG50IG5lZWQgdG1wZGlyID8KKyAgICAg
ICAgIyBYWFg6IHNob3VsZG4ndCBuZWVkIHRtcGRpciA/CiAgICAgICAgIHhtbHBhdGggPSBzdHIo
dG1wZGlyLmpvaW4oImp1bml4LnhtbCIpKQogICAgICAgICByZWdpc3RlciA9IGdvdHRlbi5hcHBl
bmQKIAotICAgIGZha2VfY29uZmlnID0gRmFrZUNvbmZpZygpCisgICAgZmFrZV9jb25maWcgPSBj
YXN0KENvbmZpZywgRmFrZUNvbmZpZygpKQogICAgIGZyb20gX3B5dGVzdCBpbXBvcnQganVuaXR4
bWwKIAogICAgIGp1bml0eG1sLnB5dGVzdF9jb25maWd1cmUoZmFrZV9jb25maWcpCiAgICAgYXNz
ZXJ0IGxlbihnb3R0ZW4pID09IDEKLSAgICBGYWtlQ29uZmlnLnNsYXZlaW5wdXQgPSBOb25lCisg
ICAgRmFrZUNvbmZpZy53b3JrZXJpbnB1dCA9IE5vbmUKICAgICBqdW5pdHhtbC5weXRlc3RfY29u
ZmlndXJlKGZha2VfY29uZmlnKQogICAgIGFzc2VydCBsZW4oZ290dGVuKSA9PSAxCiAKIAotY2xh
c3MgVGVzdE5vblB5dGhvbihvYmplY3QpOgotCi0gICAgZGVmIHRlc3Rfc3VtbWluZ19zaW1wbGUo
c2VsZiwgdGVzdGRpcik6CitjbGFzcyBUZXN0Tm9uUHl0aG9uOgorICAgIEBwYXJhbWV0cml6ZV9m
YW1pbGllcworICAgIGRlZiB0ZXN0X3N1bW1pbmdfc2ltcGxlKHNlbGYsIHRlc3RkaXIsIHJ1bl9h
bmRfcGFyc2UsIHh1bml0X2ZhbWlseSk6CiAgICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBk
ZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgogICAgICAgICAgICAgICAgIGlm
IHBhdGguZXh0ID09ICIueHl6IjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE15SXRlbShw
YXRoLCBwYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNeUl0ZW0uZnJvbV9wYXJl
bnQobmFtZT1wYXRoLmJhc2VuYW1lLCBwYXJlbnQ9cGFyZW50KQogICAgICAgICAgICAgY2xhc3Mg
TXlJdGVtKHB5dGVzdC5JdGVtKToKLSAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
cGF0aCwgcGFyZW50KToKLSAgICAgICAgICAgICAgICAgICAgc3VwZXIoTXlJdGVtLCBzZWxmKS5f
X2luaXRfXyhwYXRoLmJhc2VuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
ZnNwYXRoID0gcGF0aAogICAgICAgICAgICAgICAgIGRlZiBydW50ZXN0KHNlbGYpOgogICAgICAg
ICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKDQyKQogICAgICAgICAgICAgICAgIGRlZiBy
ZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6CkBAIC03NTYsMTAgKzkxNSwxMCBAQCBjbGFzcyBU
ZXN0Tm9uUHl0aG9uKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICApCiAgICAgICAgIHRl
c3RkaXIudG1wZGlyLmpvaW4oIm15ZmlsZS54eXoiKS53cml0ZSgiaGVsbG8iKQotICAgICAgICBy
ZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCwgZG9tID0g
cnVuX2FuZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQogICAgICAgICBhc3NlcnQgcmVzdWx0
LnJldAogICAgICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0c3VpdGUiKQot
ICAgICAgICBub2RlLmFzc2VydF9hdHRyKGVycm9ycz0wLCBmYWlsdXJlcz0xLCBza2lwcz0wLCB0
ZXN0cz0xKQorICAgICAgICBub2RlLmFzc2VydF9hdHRyKGVycm9ycz0wLCBmYWlsdXJlcz0xLCBz
a2lwcGVkPTAsIHRlc3RzPTEpCiAgICAgICAgIHRub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3Rh
ZygidGVzdGNhc2UiKQogICAgICAgICB0bm9kZS5hc3NlcnRfYXR0cihuYW1lPSJteWZpbGUueHl6
IikKICAgICAgICAgZm5vZGUgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygiZmFpbHVyZSIpCkBA
IC03NjcsNyArOTI2LDggQEAgY2xhc3MgVGVzdE5vblB5dGhvbihvYmplY3QpOgogICAgICAgICBh
c3NlcnQgImN1c3RvbSBpdGVtIHJ1bnRlc3QgZmFpbGVkIiBpbiBmbm9kZS50b3htbCgpCiAKIAot
ZGVmIHRlc3RfbnVsbGJ5dGUodGVzdGRpcik6CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImp1
bml0X2xvZ2dpbmciLCBbIm5vIiwgInN5c3RlbS1vdXQiXSkKK2RlZiB0ZXN0X251bGxieXRlKHRl
c3RkaXIsIGp1bml0X2xvZ2dpbmcpOgogICAgICMgQSBudWxsIGJ5dGUgY2FuIG5vdCBvY2N1ciBp
biBYTUwgKHNlZSBzZWN0aW9uIDIuMiBvZiB0aGUgc3BlYykKICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICIiIgpAQCAtNzc5LDEzICs5MzksMTcgQEAgZGVmIHRlc3RfbnVsbGJ5dGUo
dGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHhtbGYgPSB0ZXN0ZGlyLnRtcGRpci5qb2lu
KCJqdW5pdC54bWwiKQotICAgIHRlc3RkaXIucnVucHl0ZXN0KCItLWp1bml0eG1sPSVzIiAlIHht
bGYpCisgICAgdGVzdGRpci5ydW5weXRlc3QoIi0tanVuaXR4bWw9JXMiICUgeG1sZiwgIi1vIiwg
Imp1bml0X2xvZ2dpbmc9JXMiICUganVuaXRfbG9nZ2luZykKICAgICB0ZXh0ID0geG1sZi5yZWFk
KCkKICAgICBhc3NlcnQgIlx4MDAiIG5vdCBpbiB0ZXh0Ci0gICAgYXNzZXJ0ICIjeDAwIiBpbiB0
ZXh0CisgICAgaWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLW91dCI6CisgICAgICAgIGFzc2Vy
dCAiI3gwMCIgaW4gdGV4dAorICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gIm5vIjoKKyAgICAgICAg
YXNzZXJ0ICIjeDAwIiBub3QgaW4gdGV4dAogCiAKLWRlZiB0ZXN0X251bGxieXRlX3JlcGxhY2Uo
dGVzdGRpcik6CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImp1bml0X2xvZ2dpbmciLCBbIm5v
IiwgInN5c3RlbS1vdXQiXSkKK2RlZiB0ZXN0X251bGxieXRlX3JlcGxhY2UodGVzdGRpciwganVu
aXRfbG9nZ2luZyk6CiAgICAgIyBDaGVjayBpZiB0aGUgbnVsbCBieXRlIGdldHMgcmVwbGFjZWQK
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgpAQCAtNzk3LDI1ICs5NjEsMjMg
QEAgZGVmIHRlc3RfbnVsbGJ5dGVfcmVwbGFjZSh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAg
ICAgeG1sZiA9IHRlc3RkaXIudG1wZGlyLmpvaW4oImp1bml0LnhtbCIpCi0gICAgdGVzdGRpci5y
dW5weXRlc3QoIi0tanVuaXR4bWw9JXMiICUgeG1sZikKKyAgICB0ZXN0ZGlyLnJ1bnB5dGVzdCgi
LS1qdW5pdHhtbD0lcyIgJSB4bWxmLCAiLW8iLCAianVuaXRfbG9nZ2luZz0lcyIgJSBqdW5pdF9s
b2dnaW5nKQogICAgIHRleHQgPSB4bWxmLnJlYWQoKQotICAgIGFzc2VydCAiI3gwIiBpbiB0ZXh0
CisgICAgaWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLW91dCI6CisgICAgICAgIGFzc2VydCAi
I3gwIiBpbiB0ZXh0CisgICAgaWYganVuaXRfbG9nZ2luZyA9PSAibm8iOgorICAgICAgICBhc3Nl
cnQgIiN4MCIgbm90IGluIHRleHQKIAogCiBkZWYgdGVzdF9pbnZhbGlkX3htbF9lc2NhcGUoKToK
ICAgICAjIFRlc3Qgc29tZSBtb3JlIGludmFsaWQgeG1sIGNoYXJzLCB0aGUgZnVsbCByYW5nZSBz
aG91bGQgYmUKLSAgICAjIHRlc3RlZCByZWFsbHkgYnV0IGxldCdzIGp1c3QgdGhlc3QgdGhlIGVk
Z2VzIG9mIHRoZSByYW5nZXMKLSAgICAjIGludGVhZC4KKyAgICAjIHRlc3RlZCByZWFsbHkgYnV0
IGxldCdzIGp1c3QgdGVzdCB0aGUgZWRnZXMgb2YgdGhlIHJhbmdlcworICAgICMgaW5zdGVhZC4K
ICAgICAjIFhYWCBUaGlzIG9ubHkgdGVzdHMgbG93IHVuaWNvZGUgY2hhcmFjdGVyIHBvaW50cyBm
b3Igbm93IGFzCiAgICAgIyAgICAgdGhlcmUgYXJlIHNvbWUgaXNzdWVzIHdpdGggdGhlIHRlc3Rp
bmcgaW5mcmFzdHJ1Y3R1cmUgZm9yCiAgICAgIyAgICAgdGhlIGhpZ2hlciBvbmVzLgogICAgICMg
WFhYIFRlc3RpbmcgMHhEIChccikgaXMgdHJpY2t5IGFzIGl0IG92ZXJ3cml0ZXMgdGhlIGp1c3Qg
d3JpdHRlbgogICAgICMgICAgIGxpbmUgaW4gdGhlIG91dHB1dCwgc28gd2Ugc2tpcCBpdCB0b28u
Ci0gICAgZ2xvYmFsIHVuaWNocgotICAgIHRyeToKLSAgICAgICAgdW5pY2hyKDY1KQotICAgIGV4
Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgIHVuaWNociA9IGNocgogICAgIGludmFsaWQgPSAoCiAg
ICAgICAgIDB4MDAsCiAgICAgICAgIDB4MSwKQEAgLTgzMiwyOSArOTk0LDI0IEBAIGRlZiB0ZXN0
X2ludmFsaWRfeG1sX2VzY2FwZSgpOgogICAgIHZhbGlkID0gKDB4OSwgMHhBLCAweDIwKQogICAg
ICMgMHhELCAweEQ3RkYsIDB4RTAwMCwgMHhGRkZELCAweDEwMDAwLCAweDEwRkZGRikKIAotICAg
IGZyb20gX3B5dGVzdC5qdW5pdHhtbCBpbXBvcnQgYmluX3htbF9lc2NhcGUKLQogICAgIGZvciBp
IGluIGludmFsaWQ6Ci0gICAgICAgIGdvdCA9IGJpbl94bWxfZXNjYXBlKHVuaWNocihpKSkudW5p
b2JqCisgICAgICAgIGdvdCA9IGJpbl94bWxfZXNjYXBlKGNocihpKSkKICAgICAgICAgaWYgaSA8
PSAweEZGOgogICAgICAgICAgICAgZXhwZWN0ZWQgPSAiI3glMDJYIiAlIGkKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGV4cGVjdGVkID0gIiN4JTA0WCIgJSBpCiAgICAgICAgIGFzc2VydCBn
b3QgPT0gZXhwZWN0ZWQKICAgICBmb3IgaSBpbiB2YWxpZDoKLSAgICAgICAgYXNzZXJ0IGNocihp
KSA9PSBiaW5feG1sX2VzY2FwZSh1bmljaHIoaSkpLnVuaW9iagorICAgICAgICBhc3NlcnQgY2hy
KGkpID09IGJpbl94bWxfZXNjYXBlKGNocihpKSkKIAogCiBkZWYgdGVzdF9sb2d4bWxfcGF0aF9l
eHBhbnNpb24odG1wZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgaG9tZV90aWxkZSA9IHB5LnBhdGgu
bG9jYWwob3MucGF0aC5leHBhbmR1c2VyKCJ+IikpLmpvaW4oInRlc3QueG1sIikKLQogICAgIHht
bF90aWxkZSA9IExvZ1hNTCgifiVzdGVzdC54bWwiICUgdG1wZGlyLnNlcCwgTm9uZSkKICAgICBh
c3NlcnQgeG1sX3RpbGRlLmxvZ2ZpbGUgPT0gaG9tZV90aWxkZQogCi0gICAgIyB0aGlzIGlzIGhl
cmUgZm9yIHdoZW4gJEhPTUUgaXMgbm90IHNldCBjb3JyZWN0Ci0gICAgbW9ua2V5cGF0Y2guc2V0
ZW52KCJIT01FIiwgdG1wZGlyKQorICAgIG1vbmtleXBhdGNoLnNldGVudigiSE9NRSIsIHN0cih0
bXBkaXIpKQogICAgIGhvbWVfdmFyID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmV4cGFuZHZh
cnMoIiRIT01FL3Rlc3QueG1sIikpCi0KICAgICB4bWxfdmFyID0gTG9nWE1MKCIkSE9NRSVzdGVz
dC54bWwiICUgdG1wZGlyLnNlcCwgTm9uZSkKICAgICBhc3NlcnQgeG1sX3Zhci5sb2dmaWxlID09
IGhvbWVfdmFyCiAKQEAgLTg5MiwyMiArMTA0OSwyMiBAQCBkZWYgdGVzdF9sb2d4bWxfY2hlY2tf
aXNkaXIodGVzdGRpcik6CiAgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKFsiKi0tanVu
aXR4bWwgbXVzdCBiZSBhIGZpbGVuYW1lKiJdKQogCiAKLWRlZiB0ZXN0X2VzY2FwZWRfcGFyYW1l
dHJpemVkX25hbWVzX3htbCh0ZXN0ZGlyKToKK2RlZiB0ZXN0X2VzY2FwZWRfcGFyYW1ldHJpemVk
X25hbWVzX3htbCh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlKToKICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCi0gICAgICAgICIiIgorICAgICAgICAiIiJcCiAgICAgICAgIGltcG9ydCBweXRlc3QKLSAg
ICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdjaGFyJywgW3UiXFx4MDAiXSkKKyAgICAg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdjaGFyJywgWyJcXHgwMCJdKQogICAgICAgICBk
ZWYgdGVzdF9mdW5jKGNoYXIpOgogICAgICAgICAgICAgYXNzZXJ0IGNoYXIKLSAgICAiIiIKKyAg
ICAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVzdGRpcikK
KyAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoKQogICAgIGFzc2VydCByZXN1bHQucmV0
ID09IDAKICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCiAgICAg
bm9kZS5hc3NlcnRfYXR0cihuYW1lPSJ0ZXN0X2Z1bmNbXFx4MDBdIikKIAogCi1kZWYgdGVzdF9k
b3VibGVfY29sb25fc3BsaXRfZnVuY3Rpb25faXNzdWU0NjkodGVzdGRpcik6CitkZWYgdGVzdF9k
b3VibGVfY29sb25fc3BsaXRfZnVuY3Rpb25faXNzdWU0NjkodGVzdGRpciwgcnVuX2FuZF9wYXJz
ZSk6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0
IHB5dGVzdApAQCAtOTE2LDE0ICsxMDczLDE0IEBAIGRlZiB0ZXN0X2RvdWJsZV9jb2xvbl9zcGxp
dF9mdW5jdGlvbl9pc3N1ZTQ2OSh0ZXN0ZGlyKToKICAgICAgICAgICAgIHBhc3MKICAgICAiIiIK
ICAgICApCi0gICAgcmVzdWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyKQorICAgIHJlc3Vs
dCwgZG9tID0gcnVuX2FuZF9wYXJzZSgpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAg
IG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAgICBub2RlLmFzc2Vy
dF9hdHRyKGNsYXNzbmFtZT0idGVzdF9kb3VibGVfY29sb25fc3BsaXRfZnVuY3Rpb25faXNzdWU0
NjkiKQogICAgIG5vZGUuYXNzZXJ0X2F0dHIobmFtZT0idGVzdF9mdW5jW2RvdWJsZTo6Y29sb25d
IikKIAogCi1kZWYgdGVzdF9kb3VibGVfY29sb25fc3BsaXRfbWV0aG9kX2lzc3VlNDY5KHRlc3Rk
aXIpOgorZGVmIHRlc3RfZG91YmxlX2NvbG9uX3NwbGl0X21ldGhvZF9pc3N1ZTQ2OSh0ZXN0ZGly
LCBydW5fYW5kX3BhcnNlKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgog
ICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC05MzMsMjYgKzEwOTAsMjUgQEAgZGVmIHRlc3RfZG91
YmxlX2NvbG9uX3NwbGl0X21ldGhvZF9pc3N1ZTQ2OSh0ZXN0ZGlyKToKICAgICAgICAgICAgICAg
ICBwYXNzCiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCwgZG9tID0gcnVuYW5kcGFyc2UodGVz
dGRpcikKKyAgICByZXN1bHQsIGRvbSA9IHJ1bl9hbmRfcGFyc2UoKQogICAgIGFzc2VydCByZXN1
bHQucmV0ID09IDAKICAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIp
CiAgICAgbm9kZS5hc3NlcnRfYXR0cihjbGFzc25hbWU9InRlc3RfZG91YmxlX2NvbG9uX3NwbGl0
X21ldGhvZF9pc3N1ZTQ2OS5UZXN0Q2xhc3MiKQogICAgIG5vZGUuYXNzZXJ0X2F0dHIobmFtZT0i
dGVzdF9mdW5jW2RvdWJsZTo6Y29sb25dIikKIAogCi1kZWYgdGVzdF91bmljb2RlX2lzc3VlMzY4
KHRlc3RkaXIpOgorZGVmIHRlc3RfdW5pY29kZV9pc3N1ZTM2OCh0ZXN0ZGlyKSAtPiBOb25lOgog
ICAgIHBhdGggPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0LnhtbCIpCiAgICAgbG9nID0gTG9n
WE1MKHN0cihwYXRoKSwgTm9uZSkKLSAgICB1c3RyID0gcHkuYnVpbHRpbi5fdG90ZXh0KCLQktCd
0JghIiwgInV0Zi04IikKLSAgICBmcm9tIF9weXRlc3QucnVubmVyIGltcG9ydCBCYXNlUmVwb3J0
CisgICAgdXN0ciA9ICLQktCd0JghIgogCiAgICAgY2xhc3MgUmVwb3J0KEJhc2VSZXBvcnQpOgog
ICAgICAgICBsb25ncmVwciA9IHVzdHIKLSAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBz
ZWN0aW9ucyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbc3RyLCBzdHJdXQogICAgICAgICBub2Rl
aWQgPSAic29tZXRoaW5nIgogICAgICAgICBsb2NhdGlvbiA9ICJ0ZXN0cy9maWxlbmFtZS5weSIs
IDQyLCAiVGVzdENsYXNzLm1ldGhvZCIKIAotICAgIHRlc3RfcmVwb3J0ID0gUmVwb3J0KCkKKyAg
ICB0ZXN0X3JlcG9ydCA9IGNhc3QoVGVzdFJlcG9ydCwgUmVwb3J0KCkpCiAKICAgICAjIGhvcGVm
dWxseSB0aGlzIGlzIG5vdCB0b28gYnJpdHRsZSAuLi4KICAgICBsb2cucHl0ZXN0X3Nlc3Npb25z
dGFydCgpCkBAIC05NjUsMTIgKzExMjEsMTIgQEAgZGVmIHRlc3RfdW5pY29kZV9pc3N1ZTM2OCh0
ZXN0ZGlyKToKICAgICBub2RlX3JlcG9ydGVyLmFwcGVuZF9za2lwcGVkKHRlc3RfcmVwb3J0KQog
ICAgIHRlc3RfcmVwb3J0LmxvbmdyZXByID0gImZpbGVuYW1lIiwgMSwgIlNraXBwZWQ6IOWNoeWY
o+WYoyIKICAgICBub2RlX3JlcG9ydGVyLmFwcGVuZF9za2lwcGVkKHRlc3RfcmVwb3J0KQotICAg
IHRlc3RfcmVwb3J0Lndhc3hmYWlsID0gdXN0cgorICAgIHRlc3RfcmVwb3J0Lndhc3hmYWlsID0g
dXN0ciAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgIG5vZGVfcmVwb3J0ZXIuYXBw
ZW5kX3NraXBwZWQodGVzdF9yZXBvcnQpCiAgICAgbG9nLnB5dGVzdF9zZXNzaW9uZmluaXNoKCkK
IAogCi1kZWYgdGVzdF9yZWNvcmRfcHJvcGVydHkodGVzdGRpcik6CitkZWYgdGVzdF9yZWNvcmRf
cHJvcGVydHkodGVzdGRpciwgcnVuX2FuZF9wYXJzZSk6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtOTgyLDE2ICsxMTM4LDE3
IEBAIGRlZiB0ZXN0X3JlY29yZF9wcm9wZXJ0eSh0ZXN0ZGlyKToKICAgICAgICAgICAgIHJlY29y
ZF9wcm9wZXJ0eSgiZm9vIiwgIjwxIik7CiAgICAgIiIiCiAgICAgKQotICAgIHJlc3VsdCwgZG9t
ID0gcnVuYW5kcGFyc2UodGVzdGRpciwgIi1yd3YiKQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2Fu
ZF9wYXJzZSgpCiAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdHN1aXRlIikK
ICAgICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWcoInRlc3RjYXNlIikKICAgICBwc25v
ZGUgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygicHJvcGVydGllcyIpCiAgICAgcG5vZGVzID0g
cHNub2RlLmZpbmRfYnlfdGFnKCJwcm9wZXJ0eSIpCiAgICAgcG5vZGVzWzBdLmFzc2VydF9hdHRy
KG5hbWU9ImJhciIsIHZhbHVlPSIxIikKICAgICBwbm9kZXNbMV0uYXNzZXJ0X2F0dHIobmFtZT0i
Zm9vIiwgdmFsdWU9IjwxIikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqPSAx
IHBhc3NlZCBpbiAqIl0pCiAKIAotZGVmIHRlc3RfcmVjb3JkX3Byb3BlcnR5X3NhbWVfbmFtZSh0
ZXN0ZGlyKToKK2RlZiB0ZXN0X3JlY29yZF9wcm9wZXJ0eV9zYW1lX25hbWUodGVzdGRpciwgcnVu
X2FuZF9wYXJzZSk6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAg
ICAgZGVmIHRlc3RfcmVjb3JkX3dpdGhfc2FtZV9uYW1lKHJlY29yZF9wcm9wZXJ0eSk6CkBAIC05
OTksNyArMTE1Niw3IEBAIGRlZiB0ZXN0X3JlY29yZF9wcm9wZXJ0eV9zYW1lX25hbWUodGVzdGRp
cik6CiAgICAgICAgICAgICByZWNvcmRfcHJvcGVydHkoImZvbyIsICJiYXoiKQogICAgICIiIgog
ICAgICkKLSAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIsICItcnciKQorICAg
IHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgpCiAgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0
X2J5X3RhZygidGVzdHN1aXRlIikKICAgICB0bm9kZSA9IG5vZGUuZmluZF9maXJzdF9ieV90YWco
InRlc3RjYXNlIikKICAgICBwc25vZGUgPSB0bm9kZS5maW5kX2ZpcnN0X2J5X3RhZygicHJvcGVy
dGllcyIpCkBAIC0xMDA4LDcgKzExNjUsMjggQEAgZGVmIHRlc3RfcmVjb3JkX3Byb3BlcnR5X3Nh
bWVfbmFtZSh0ZXN0ZGlyKToKICAgICBwbm9kZXNbMV0uYXNzZXJ0X2F0dHIobmFtZT0iZm9vIiwg
dmFsdWU9ImJheiIpCiAKIAotZGVmIHRlc3RfcmVjb3JkX2F0dHJpYnV0ZSh0ZXN0ZGlyKToKK0Bw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZml4dHVyZV9uYW1lIiwgWyJyZWNvcmRfcHJvcGVydHki
LCAicmVjb3JkX3htbF9hdHRyaWJ1dGUiXSkKK2RlZiB0ZXN0X3JlY29yZF9maXh0dXJlc193aXRo
b3V0X2p1bml0eG1sKHRlc3RkaXIsIGZpeHR1cmVfbmFtZSk6CisgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfcmVjb3JkKHtmaXh0dXJlX25hbWV9
KToKKyAgICAgICAgICAgIHtmaXh0dXJlX25hbWV9KCJmb28iLCAiYmFyIikKKyAgICAiIiIuZm9y
bWF0KAorICAgICAgICAgICAgZml4dHVyZV9uYW1lPWZpeHR1cmVfbmFtZQorICAgICAgICApCisg
ICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSAwCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikKK2Rl
ZiB0ZXN0X3JlY29yZF9hdHRyaWJ1dGUodGVzdGRpciwgcnVuX2FuZF9wYXJzZSk6CisgICAgdGVz
dGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAganVu
aXRfZmFtaWx5ID0geHVuaXQxCisgICAgIiIiCisgICAgKQogICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTEwMjAsMjIgKzExOTgs
NjEgQEAgZGVmIHRlc3RfcmVjb3JkX2F0dHJpYnV0ZSh0ZXN0ZGlyKToKICAgICAgICAgICAgIHJl
Y29yZF94bWxfYXR0cmlidXRlKCJmb28iLCAiPDEiKTsKICAgICAiIiIKICAgICApCi0gICAgcmVz
dWx0LCBkb20gPSBydW5hbmRwYXJzZSh0ZXN0ZGlyLCAiLXJ3IikKKyAgICByZXN1bHQsIGRvbSA9
IHJ1bl9hbmRfcGFyc2UoKQogICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3Rz
dWl0ZSIpCiAgICAgdG5vZGUgPSBub2RlLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCiAg
ICAgdG5vZGUuYXNzZXJ0X2F0dHIoYmFyPSIxIikKICAgICB0bm9kZS5hc3NlcnRfYXR0cihmb289
IjwxIikKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsidGVzdF9y
ZWNvcmRfYXR0cmlidXRlLnB5Ojp0ZXN0X3JlY29yZCIsICIqcmVjb3JkX3htbF9hdHRyaWJ1dGUq
ZXhwZXJpbWVudGFsKiJdCisgICAgICAgIFsiKnRlc3RfcmVjb3JkX2F0dHJpYnV0ZS5weTo2Oipy
ZWNvcmRfeG1sX2F0dHJpYnV0ZSBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSJdCiAgICAgKQog
CiAKLWRlZiB0ZXN0X3JhbmRvbV9yZXBvcnRfbG9nX3hkaXN0KHRlc3RkaXIpOgotICAgICIiInhk
aXN0IGNhbGxzIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCBhcyB0aGV5IGFyZSBleGVjdXRlZCBi
eSB0aGUgc2xhdmVzLAotICAgIHdpdGggbm9kZXMgZnJvbSBzZXZlcmFsIG5vZGVzIG92ZXJsYXBw
aW5nLCBzbyBqdW5pdHhtbCBtdXN0IGNvcGUgd2l0aCB0aGF0Ci0gICAgdG8gcHJvZHVjZSBjb3Jy
ZWN0IHJlcG9ydHMuICMxMDY0CitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImRlZmF1bHQi
KQorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaXh0dXJlX25hbWUiLCBbInJlY29yZF94bWxf
YXR0cmlidXRlIiwgInJlY29yZF9wcm9wZXJ0eSJdKQorZGVmIHRlc3RfcmVjb3JkX2ZpeHR1cmVz
X3h1bml0Mih0ZXN0ZGlyLCBmaXh0dXJlX25hbWUsIHJ1bl9hbmRfcGFyc2UpOgorICAgICIiIkVu
c3VyZSByZWNvcmRfeG1sX2F0dHJpYnV0ZSBhbmQgcmVjb3JkX3Byb3BlcnR5IGRyb3AgdmFsdWVz
IHdoZW4gb3V0c2lkZSBvZiBsZWdhY3kgZmFtaWx5LiIiIgorICAgIHRlc3RkaXIubWFrZWluaSgK
KyAgICAgICAgIiIiCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGp1bml0X2ZhbWlseSA9IHh1
bml0MgogICAgICIiIgorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIi
IgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ICAgIGRlZiBvdGhlcih7Zml4dHVyZV9uYW1lfSk6CisgICAgICAgICAgICB7Zml4dHVyZV9uYW1l
fSgiYmFyIiwgMSkKKyAgICAgICAgZGVmIHRlc3RfcmVjb3JkKHtmaXh0dXJlX25hbWV9LCBvdGhl
cik6CisgICAgICAgICAgICB7Zml4dHVyZV9uYW1lfSgiZm9vIiwgIjwxIik7CisgICAgIiIiLmZv
cm1hdCgKKyAgICAgICAgICAgIGZpeHR1cmVfbmFtZT1maXh0dXJlX25hbWUKKyAgICAgICAgKQor
ICAgICkKKworICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmYW1pbHk9Tm9uZSkKKyAg
ICBleHBlY3RlZF9saW5lcyA9IFtdCisgICAgaWYgZml4dHVyZV9uYW1lID09ICJyZWNvcmRfeG1s
X2F0dHJpYnV0ZSI6CisgICAgICAgIGV4cGVjdGVkX2xpbmVzLmFwcGVuZCgKKyAgICAgICAgICAg
ICIqdGVzdF9yZWNvcmRfZml4dHVyZXNfeHVuaXQyLnB5OjY6KnJlY29yZF94bWxfYXR0cmlidXRl
IGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIgorICAgICAgICApCisgICAgZXhwZWN0ZWRfbGlu
ZXMgPSBbCisgICAgICAgICIqdGVzdF9yZWNvcmRfZml4dHVyZXNfeHVuaXQyLnB5OjY6KntmaXh0
dXJlX25hbWV9IGlzIGluY29tcGF0aWJsZSAiCisgICAgICAgICJ3aXRoIGp1bml0X2ZhbWlseSAn
eHVuaXQyJyAodXNlICdsZWdhY3knIG9yICd4dW5pdDEnKSIuZm9ybWF0KAorICAgICAgICAgICAg
Zml4dHVyZV9uYW1lPWZpeHR1cmVfbmFtZQorICAgICAgICApCisgICAgXQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhleHBlY3RlZF9saW5lcykKKworCitkZWYgdGVzdF9yYW5kb21f
cmVwb3J0X2xvZ194ZGlzdCh0ZXN0ZGlyLCBtb25rZXlwYXRjaCwgcnVuX2FuZF9wYXJzZSk6Cisg
ICAgIiIiYHhkaXN0YCBjYWxscyBweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQgYXMgdGhleSBhcmUg
ZXhlY3V0ZWQgYnkgdGhlIHdvcmtlcnMsCisgICAgd2l0aCBub2RlcyBmcm9tIHNldmVyYWwgbm9k
ZXMgb3ZlcmxhcHBpbmcsIHNvIGp1bml0eG1sIG11c3QgY29wZSB3aXRoIHRoYXQKKyAgICB0byBw
cm9kdWNlIGNvcnJlY3QgcmVwb3J0cyAoIzEwNjQpLiIiIgogICAgIHB5dGVzdC5pbXBvcnRvcnNr
aXAoInhkaXN0IikKKyAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJ
Tl9BVVRPTE9BRCIsIHJhaXNpbmc9RmFsc2UpCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAg
ICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdCwgdGltZQpAQCAtMTA0NCw3ICsxMjYxLDcg
QEAgZGVmIHRlc3RfcmFuZG9tX3JlcG9ydF9sb2dfeGRpc3QodGVzdGRpcik6CiAgICAgICAgICAg
ICBhc3NlcnQgaSAhPSAyMgogICAgICIiIgogICAgICkKLSAgICBfLCBkb20gPSBydW5hbmRwYXJz
ZSh0ZXN0ZGlyLCAiLW4yIikKKyAgICBfLCBkb20gPSBydW5fYW5kX3BhcnNlKCItbjIiKQogICAg
IHN1aXRlX25vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAgICAgZmFp
bGVkID0gW10KICAgICBmb3IgY2FzZV9ub2RlIGluIHN1aXRlX25vZGUuZmluZF9ieV90YWcoInRl
c3RjYXNlIik6CkBAIC0xMDU0LDcgKzEyNzEsMjIgQEAgZGVmIHRlc3RfcmFuZG9tX3JlcG9ydF9s
b2dfeGRpc3QodGVzdGRpcik6CiAgICAgYXNzZXJ0IGZhaWxlZCA9PSBbInRlc3RfeFsyMl0iXQog
CiAKLWRlZiB0ZXN0X3J1bnNfdHdpY2UodGVzdGRpcik6CitAcGFyYW1ldHJpemVfZmFtaWxpZXMK
K2RlZiB0ZXN0X3Jvb3RfdGVzdHN1aXRlc190YWcodGVzdGRpciwgcnVuX2FuZF9wYXJzZSwgeHVu
aXRfZmFtaWx5KToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAg
ICBkZWYgdGVzdF94KCk6CisgICAgICAgICAgICBwYXNzCisgICAgIiIiCisgICAgKQorICAgIF8s
IGRvbSA9IHJ1bl9hbmRfcGFyc2UoZmFtaWx5PXh1bml0X2ZhbWlseSkKKyAgICByb290ID0gZG9t
LmdldF91bmlxdWVfY2hpbGQKKyAgICBhc3NlcnQgcm9vdC50YWcgPT0gInRlc3RzdWl0ZXMiCisg
ICAgc3VpdGVfbm9kZSA9IHJvb3QuZ2V0X3VuaXF1ZV9jaGlsZAorICAgIGFzc2VydCBzdWl0ZV9u
b2RlLnRhZyA9PSAidGVzdHN1aXRlIgorCisKK2RlZiB0ZXN0X3J1bnNfdHdpY2UodGVzdGRpciwg
cnVuX2FuZF9wYXJzZSk6CiAgICAgZiA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIi
CiAgICAgICAgIGRlZiB0ZXN0X3Bhc3MoKToKQEAgLTEwNjIsMTUgKzEyOTQsMTUgQEAgZGVmIHRl
c3RfcnVuc190d2ljZSh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAKLSAgICByZXN1bHQsIGRv
bSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIsIGYsIGYpCi0gICAgYXNzZXJ0ICJJTlRFUk5BTEVSUk9S
IiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9w
YXJzZShmLCBmKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqSU5URVJOQUxF
UlJPUioiKQogICAgIGZpcnN0LCBzZWNvbmQgPSBbeFsiY2xhc3NuYW1lIl0gZm9yIHggaW4gZG9t
LmZpbmRfYnlfdGFnKCJ0ZXN0Y2FzZSIpXQogICAgIGFzc2VydCBmaXJzdCA9PSBzZWNvbmQKIAog
Ci1AcHl0ZXN0Lm1hcmsueGZhaWwocmVhc29uPSJoYW5ncyIsIHJ1bj1GYWxzZSkKLWRlZiB0ZXN0
X3J1bnNfdHdpY2VfeGRpc3QodGVzdGRpcik6CitkZWYgdGVzdF9ydW5zX3R3aWNlX3hkaXN0KHRl
c3RkaXIsIHJ1bl9hbmRfcGFyc2UpOgogICAgIHB5dGVzdC5pbXBvcnRvcnNraXAoInhkaXN0IikK
KyAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lOX0FV
VE9MT0FEIikKICAgICBmID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAg
ICAgZGVmIHRlc3RfcGFzcygpOgpAQCAtMTA3OCwxMyArMTMxMCwxMyBAQCBkZWYgdGVzdF9ydW5z
X3R3aWNlX3hkaXN0KHRlc3RkaXIpOgogICAgICIiIgogICAgICkKIAotICAgIHJlc3VsdCwgZG9t
ID0gcnVuYW5kcGFyc2UodGVzdGRpciwgZiwgIi0tZGlzdCIsICJlYWNoIiwgIi0tdHgiLCAiMipw
b3BlbiIpCi0gICAgYXNzZXJ0ICJJTlRFUk5BTEVSUk9SIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5z
dHIoKQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZShmLCAiLS1kaXN0IiwgImVhY2gi
LCAiLS10eCIsICIyKnBvcGVuIikKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgi
KklOVEVSTkFMRVJST1IqIikKICAgICBmaXJzdCwgc2Vjb25kID0gW3hbImNsYXNzbmFtZSJdIGZv
ciB4IGluIGRvbS5maW5kX2J5X3RhZygidGVzdGNhc2UiKV0KICAgICBhc3NlcnQgZmlyc3QgPT0g
c2Vjb25kCiAKIAotZGVmIHRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbih0ZXN0ZGlyKToKK2Rl
ZiB0ZXN0X2ZhbmN5X2l0ZW1zX3JlZ3Jlc3Npb24odGVzdGRpciwgcnVuX2FuZF9wYXJzZSk6CiAg
ICAgIyBpc3N1ZSAxMjU5CiAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICIiIgpA
QCAtMTA5OSwxNCArMTMzMSwxNCBAQCBkZWYgdGVzdF9mYW5jeV9pdGVtc19yZWdyZXNzaW9uKHRl
c3RkaXIpOgogICAgICAgICBjbGFzcyBGdW5Db2xsZWN0b3IocHl0ZXN0LkZpbGUpOgogICAgICAg
ICAgICAgZGVmIGNvbGxlY3Qoc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFsKLSAgICAg
ICAgICAgICAgICAgICAgRnVuSXRlbSgnYScsIHNlbGYpLAotICAgICAgICAgICAgICAgICAgICBO
b0Z1bkl0ZW0oJ2EnLCBzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgTm9GdW5JdGVtKCdiJywg
c2VsZiksCisgICAgICAgICAgICAgICAgICAgIEZ1bkl0ZW0uZnJvbV9wYXJlbnQobmFtZT0nYScs
IHBhcmVudD1zZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgTm9GdW5JdGVtLmZyb21fcGFyZW50
KG5hbWU9J2EnLCBwYXJlbnQ9c2VsZiksCisgICAgICAgICAgICAgICAgICAgIE5vRnVuSXRlbS5m
cm9tX3BhcmVudChuYW1lPSdiJywgcGFyZW50PXNlbGYpLAogICAgICAgICAgICAgICAgIF0KIAog
ICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgogICAgICAgICAg
ICAgaWYgcGF0aC5jaGVjayhleHQ9Jy5weScpOgotICAgICAgICAgICAgICAgIHJldHVybiBGdW5D
b2xsZWN0b3IocGF0aCwgcGFyZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBGdW5Db2xsZWN0
b3IuZnJvbV9wYXJlbnQoZnNwYXRoPXBhdGgsIHBhcmVudD1wYXJlbnQpCiAgICAgIiIiCiAgICAg
KQogCkBAIC0xMTE3LDQyICsxMzQ5LDM3IEBAIGRlZiB0ZXN0X2ZhbmN5X2l0ZW1zX3JlZ3Jlc3Np
b24odGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogCi0gICAgcmVzdWx0LCBkb20gPSBydW5hbmRw
YXJzZSh0ZXN0ZGlyKQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgpCiAKLSAgICBh
c3NlcnQgIklOVEVSTkFMRVJST1IiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVz
dWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipJTlRFUk5BTEVSUk9SKiIpCiAKLSAgICBpdGVt
cyA9IHNvcnRlZCgKLSAgICAgICAgIiUoY2xhc3NuYW1lKXMgJShuYW1lKXMgJShmaWxlKXMiICUg
eCBmb3IgeCBpbiBkb20uZmluZF9ieV90YWcoInRlc3RjYXNlIikKLSAgICApCisgICAgaXRlbXMg
PSBzb3J0ZWQoIiUoY2xhc3NuYW1lKXMgJShuYW1lKXMiICUgeCBmb3IgeCBpbiBkb20uZmluZF9i
eV90YWcoInRlc3RjYXNlIikpCiAgICAgaW1wb3J0IHBwcmludAogCiAgICAgcHByaW50LnBwcmlu
dChpdGVtcykKLSAgICBhc3NlcnQgKAotICAgICAgICBpdGVtcwotICAgICAgICA9PSBbCi0gICAg
ICAgICAgICB1ImNvbmZ0ZXN0IGEgY29uZnRlc3QucHkiLAotICAgICAgICAgICAgdSJjb25mdGVz
dCBhIGNvbmZ0ZXN0LnB5IiwKLSAgICAgICAgICAgIHUiY29uZnRlc3QgYiBjb25mdGVzdC5weSIs
Ci0gICAgICAgICAgICB1InRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbiBhIHRlc3RfZmFuY3lf
aXRlbXNfcmVncmVzc2lvbi5weSIsCi0gICAgICAgICAgICB1InRlc3RfZmFuY3lfaXRlbXNfcmVn
cmVzc2lvbiBhIHRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbi5weSIsCi0gICAgICAgICAgICB1
InRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbiBiIHRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lv
bi5weSIsCi0gICAgICAgICAgICB1InRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbiB0ZXN0X3Bh
c3MiIHUiIHRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbi5weSIsCi0gICAgICAgIF0KLSAgICAp
Ci0KLQotZGVmIHRlc3RfZ2xvYmFsX3Byb3BlcnRpZXModGVzdGRpcik6CisgICAgYXNzZXJ0IGl0
ZW1zID09IFsKKyAgICAgICAgImNvbmZ0ZXN0IGEiLAorICAgICAgICAiY29uZnRlc3QgYSIsCisg
ICAgICAgICJjb25mdGVzdCBiIiwKKyAgICAgICAgInRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lv
biBhIiwKKyAgICAgICAgInRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbiBhIiwKKyAgICAgICAg
InRlc3RfZmFuY3lfaXRlbXNfcmVncmVzc2lvbiBiIiwKKyAgICAgICAgInRlc3RfZmFuY3lfaXRl
bXNfcmVncmVzc2lvbiB0ZXN0X3Bhc3MiLAorICAgIF0KKworCitAcGFyYW1ldHJpemVfZmFtaWxp
ZXMKK2RlZiB0ZXN0X2dsb2JhbF9wcm9wZXJ0aWVzKHRlc3RkaXIsIHh1bml0X2ZhbWlseSkgLT4g
Tm9uZToKICAgICBwYXRoID0gdGVzdGRpci50bXBkaXIuam9pbigidGVzdF9nbG9iYWxfcHJvcGVy
dGllcy54bWwiKQotICAgIGxvZyA9IExvZ1hNTChzdHIocGF0aCksIE5vbmUpCi0gICAgZnJvbSBf
cHl0ZXN0LnJ1bm5lciBpbXBvcnQgQmFzZVJlcG9ydAorICAgIGxvZyA9IExvZ1hNTChzdHIocGF0
aCksIE5vbmUsIGZhbWlseT14dW5pdF9mYW1pbHkpCiAKICAgICBjbGFzcyBSZXBvcnQoQmFzZVJl
cG9ydCk6Ci0gICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMgPSBbXSAgIyB0
eXBlOiBMaXN0W1R1cGxlW3N0ciwgc3RyXV0KICAgICAgICAgbm9kZWlkID0gInRlc3Rfbm9kZV9p
ZCIKIAogICAgIGxvZy5weXRlc3Rfc2Vzc2lvbnN0YXJ0KCkKLSAgICBsb2cuYWRkX2dsb2JhbF9w
cm9wZXJ0eSgiZm9vIiwgMSkKLSAgICBsb2cuYWRkX2dsb2JhbF9wcm9wZXJ0eSgiYmFyIiwgMikK
KyAgICBsb2cuYWRkX2dsb2JhbF9wcm9wZXJ0eSgiZm9vIiwgIjEiKQorICAgIGxvZy5hZGRfZ2xv
YmFsX3Byb3BlcnR5KCJiYXIiLCAiMiIpCiAgICAgbG9nLnB5dGVzdF9zZXNzaW9uZmluaXNoKCkK
IAogICAgIGRvbSA9IG1pbmlkb20ucGFyc2Uoc3RyKHBhdGgpKQpAQCAtMTE3NiwyMCArMTQwMywx
OSBAQCBkZWYgdGVzdF9nbG9iYWxfcHJvcGVydGllcyh0ZXN0ZGlyKToKICAgICBhc3NlcnQgYWN0
dWFsID09IGV4cGVjdGVkCiAKIAotZGVmIHRlc3RfdXJsX3Byb3BlcnR5KHRlc3RkaXIpOgorZGVm
IHRlc3RfdXJsX3Byb3BlcnR5KHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdF91cmwgPSAiaHR0
cDovL3d3dy5naXRodWIuY29tL3B5dGVzdC1kZXYiCiAgICAgcGF0aCA9IHRlc3RkaXIudG1wZGly
LmpvaW4oInRlc3RfdXJsX3Byb3BlcnR5LnhtbCIpCiAgICAgbG9nID0gTG9nWE1MKHN0cihwYXRo
KSwgTm9uZSkKLSAgICBmcm9tIF9weXRlc3QucnVubmVyIGltcG9ydCBCYXNlUmVwb3J0CiAKICAg
ICBjbGFzcyBSZXBvcnQoQmFzZVJlcG9ydCk6CiAgICAgICAgIGxvbmdyZXByID0gIkZvb0JhckJh
eiIKLSAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucyA9IFtdICAjIHR5cGU6
IExpc3RbVHVwbGVbc3RyLCBzdHJdXQogICAgICAgICBub2RlaWQgPSAic29tZXRoaW5nIgogICAg
ICAgICBsb2NhdGlvbiA9ICJ0ZXN0cy9maWxlbmFtZS5weSIsIDQyLCAiVGVzdENsYXNzLm1ldGhv
ZCIKICAgICAgICAgdXJsID0gdGVzdF91cmwKIAotICAgIHRlc3RfcmVwb3J0ID0gUmVwb3J0KCkK
KyAgICB0ZXN0X3JlcG9ydCA9IGNhc3QoVGVzdFJlcG9ydCwgUmVwb3J0KCkpCiAKICAgICBsb2cu
cHl0ZXN0X3Nlc3Npb25zdGFydCgpCiAgICAgbm9kZV9yZXBvcnRlciA9IGxvZy5fb3BlbnRlc3Rj
YXNlKHRlc3RfcmVwb3J0KQpAQCAtMTIwMywxNSArMTQyOSw2NSBAQCBkZWYgdGVzdF91cmxfcHJv
cGVydHkodGVzdGRpcik6CiAgICAgKSwgIlRoZSBVUkwgZGlkIG5vdCBnZXQgd3JpdHRlbiB0byB0
aGUgeG1sIgogCiAKK0BwYXJhbWV0cml6ZV9mYW1pbGllcworZGVmIHRlc3RfcmVjb3JkX3Rlc3Rz
dWl0ZV9wcm9wZXJ0eSh0ZXN0ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkpOgorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2Z1bmMx
KHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkpOgorICAgICAgICAgICAgcmVjb3JkX3Rlc3RzdWl0
ZV9wcm9wZXJ0eSgic3RhdHMiLCAiYWxsIGdvb2QiKQorCisgICAgICAgIGRlZiB0ZXN0X2Z1bmMy
KHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkpOgorICAgICAgICAgICAgcmVjb3JkX3Rlc3RzdWl0
ZV9wcm9wZXJ0eSgic3RhdHMiLCAxMCkKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0LCBkb20g
PSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMAorICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCisg
ICAgcHJvcGVydGllc19ub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygicHJvcGVydGllcyIp
CisgICAgcDFfbm9kZSA9IHByb3BlcnRpZXNfbm9kZS5maW5kX250aF9ieV90YWcoInByb3BlcnR5
IiwgMCkKKyAgICBwMl9ub2RlID0gcHJvcGVydGllc19ub2RlLmZpbmRfbnRoX2J5X3RhZygicHJv
cGVydHkiLCAxKQorICAgIHAxX25vZGUuYXNzZXJ0X2F0dHIobmFtZT0ic3RhdHMiLCB2YWx1ZT0i
YWxsIGdvb2QiKQorICAgIHAyX25vZGUuYXNzZXJ0X2F0dHIobmFtZT0ic3RhdHMiLCB2YWx1ZT0i
MTAiKQorCisKK2RlZiB0ZXN0X3JlY29yZF90ZXN0c3VpdGVfcHJvcGVydHlfanVuaXRfZGlzYWJs
ZWQodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAg
ICAgZGVmIHRlc3RfZnVuYzEocmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSk6CisgICAgICAgICAg
ICByZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5KCJzdGF0cyIsICJhbGwgZ29vZCIpCisgICAgIiIi
CisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBhc3NlcnQgcmVz
dWx0LnJldCA9PSAwCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJqdW5pdCIsIFtUcnVl
LCBGYWxzZV0pCitkZWYgdGVzdF9yZWNvcmRfdGVzdHN1aXRlX3Byb3BlcnR5X3R5cGVfY2hlY2tp
bmcodGVzdGRpciwganVuaXQpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIi
CisgICAgICAgIGRlZiB0ZXN0X2Z1bmMxKHJlY29yZF90ZXN0c3VpdGVfcHJvcGVydHkpOgorICAg
ICAgICAgICAgcmVjb3JkX3Rlc3RzdWl0ZV9wcm9wZXJ0eSgxLCAyKQorICAgICIiIgorICAgICkK
KyAgICBhcmdzID0gKCItLWp1bml0eG1sPXRlc3RzLnhtbCIsKSBpZiBqdW5pdCBlbHNlICgpCisg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3MpCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWyIqVHlw
ZUVycm9yOiBuYW1lIHBhcmFtZXRlciBuZWVkcyB0byBiZSBhIHN0cmluZywgYnV0IGludCBnaXZl
biJdCisgICAgKQorCisKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgic3VpdGVfbmFtZSIsIFsi
bXlfc3VpdGUiLCAiIl0pCi1kZWYgdGVzdF9zZXRfc3VpdGVfbmFtZSh0ZXN0ZGlyLCBzdWl0ZV9u
YW1lKToKK0BwYXJhbWV0cml6ZV9mYW1pbGllcworZGVmIHRlc3Rfc2V0X3N1aXRlX25hbWUodGVz
dGRpciwgc3VpdGVfbmFtZSwgcnVuX2FuZF9wYXJzZSwgeHVuaXRfZmFtaWx5KToKICAgICBpZiBz
dWl0ZV9uYW1lOgogICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIFtweXRlc3RdCi0gICAgICAgICAgICBqdW5pdF9zdWl0ZV9uYW1lPXt9CisgICAg
ICAgICAgICBqdW5pdF9zdWl0ZV9uYW1lPXtzdWl0ZV9uYW1lfQorICAgICAgICAgICAganVuaXRf
ZmFtaWx5PXtmYW1pbHl9CiAgICAgICAgICIiIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc3Vp
dGVfbmFtZQorICAgICAgICAgICAgICAgIHN1aXRlX25hbWU9c3VpdGVfbmFtZSwgZmFtaWx5PXh1
bml0X2ZhbWlseQogICAgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAgIGV4cGVjdGVkID0g
c3VpdGVfbmFtZQpAQCAtMTIyNSw3ICsxNTAxLDk4IEBAIGRlZiB0ZXN0X3NldF9zdWl0ZV9uYW1l
KHRlc3RkaXIsIHN1aXRlX25hbWUpOgogICAgICAgICAgICAgcGFzcwogICAgICIiIgogICAgICkK
LSAgICByZXN1bHQsIGRvbSA9IHJ1bmFuZHBhcnNlKHRlc3RkaXIpCisgICAgcmVzdWx0LCBkb20g
PSBydW5fYW5kX3BhcnNlKGZhbWlseT14dW5pdF9mYW1pbHkpCiAgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMAogICAgIG5vZGUgPSBkb20uZmluZF9maXJzdF9ieV90YWcoInRlc3RzdWl0ZSIpCiAg
ICAgbm9kZS5hc3NlcnRfYXR0cihuYW1lPWV4cGVjdGVkKQorCisKK2RlZiB0ZXN0X2VzY2FwZWRf
c2tpcHJlYXNvbl9pc3N1ZTM1MzModGVzdGRpciwgcnVuX2FuZF9wYXJzZSk6CisgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAg
ICBAcHl0ZXN0Lm1hcmsuc2tpcChyZWFzb249JzEgPD4gMicpCisgICAgICAgIGRlZiB0ZXN0X3Nr
aXAoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgXywgZG9tID0gcnVu
X2FuZF9wYXJzZSgpCisgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5X3RhZygidGVzdGNhc2Ui
KQorICAgIHNub2RlID0gbm9kZS5maW5kX2ZpcnN0X2J5X3RhZygic2tpcHBlZCIpCisgICAgYXNz
ZXJ0ICIxIDw+IDIiIGluIHNub2RlLnRleHQKKyAgICBzbm9kZS5hc3NlcnRfYXR0cihtZXNzYWdl
PSIxIDw+IDIiKQorCisKK0BwYXJhbWV0cml6ZV9mYW1pbGllcworZGVmIHRlc3RfbG9nZ2luZ19w
YXNzaW5nX3Rlc3RzX2Rpc2FibGVkX2RvZXNfbm90X2xvZ190ZXN0X291dHB1dCgKKyAgICB0ZXN0
ZGlyLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkKKyk6CisgICAgdGVzdGRpci5tYWtlaW5p
KAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAgICAgICAganVuaXRfbG9nX3Bhc3Np
bmdfdGVzdHM9RmFsc2UKKyAgICAgICAganVuaXRfbG9nZ2luZz1zeXN0ZW0tb3V0CisgICAgICAg
IGp1bml0X2ZhbWlseT17ZmFtaWx5fQorICAgICIiIi5mb3JtYXQoCisgICAgICAgICAgICBmYW1p
bHk9eHVuaXRfZmFtaWx5CisgICAgICAgICkKKyAgICApCisgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBpbXBvcnQgbG9n
Z2luZworICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgZGVmIHRlc3RfZnVuYygpOgorICAg
ICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnVGhpcyBpcyBzdGRvdXQnKQorICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgnVGhpcyBpcyBzdGRlcnInKQorICAgICAgICAgICAgbG9nZ2luZy53
YXJuaW5nKCdoZWxsbycpCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2Fu
ZF9wYXJzZShmYW1pbHk9eHVuaXRfZmFtaWx5KQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAK
KyAgICBub2RlID0gZG9tLmZpbmRfZmlyc3RfYnlfdGFnKCJ0ZXN0Y2FzZSIpCisgICAgYXNzZXJ0
IGxlbihub2RlLmZpbmRfYnlfdGFnKCJzeXN0ZW0tZXJyIikpID09IDAKKyAgICBhc3NlcnQgbGVu
KG5vZGUuZmluZF9ieV90YWcoInN5c3RlbS1vdXQiKSkgPT0gMAorCisKK0BwYXJhbWV0cml6ZV9m
YW1pbGllcworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJqdW5pdF9sb2dnaW5nIiwgWyJubyIs
ICJzeXN0ZW0tb3V0IiwgInN5c3RlbS1lcnIiXSkKK2RlZiB0ZXN0X2xvZ2dpbmdfcGFzc2luZ190
ZXN0c19kaXNhYmxlZF9sb2dzX291dHB1dF9mb3JfZmFpbGluZ190ZXN0X2lzc3VlNTQzMCgKKyAg
ICB0ZXN0ZGlyLCBqdW5pdF9sb2dnaW5nLCBydW5fYW5kX3BhcnNlLCB4dW5pdF9mYW1pbHkKKyk6
CisgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAiIiIKKyAgICAgICAgW3B5dGVzdF0KKyAg
ICAgICAganVuaXRfbG9nX3Bhc3NpbmdfdGVzdHM9RmFsc2UKKyAgICAgICAganVuaXRfZmFtaWx5
PXtmYW1pbHl9CisgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGZhbWlseT14dW5pdF9mYW1p
bHkKKyAgICAgICAgKQorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIi
IgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGltcG9ydCBsb2dnaW5nCisgICAgICAg
IGltcG9ydCBzeXMKKworICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAgICAgICAgICBsb2dn
aW5nLndhcm5pbmcoJ2hlbGxvJykKKyAgICAgICAgICAgIGFzc2VydCAwCisgICAgIiIiCisgICAg
KQorICAgIHJlc3VsdCwgZG9tID0gcnVuX2FuZF9wYXJzZSgKKyAgICAgICAgIi1vIiwgImp1bml0
X2xvZ2dpbmc9JXMiICUganVuaXRfbG9nZ2luZywgZmFtaWx5PXh1bml0X2ZhbWlseQorICAgICkK
KyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCisgICAgbm9kZSA9IGRvbS5maW5kX2ZpcnN0X2J5
X3RhZygidGVzdGNhc2UiKQorICAgIGlmIGp1bml0X2xvZ2dpbmcgPT0gInN5c3RlbS1vdXQiOgor
ICAgICAgICBhc3NlcnQgbGVuKG5vZGUuZmluZF9ieV90YWcoInN5c3RlbS1lcnIiKSkgPT0gMAor
ICAgICAgICBhc3NlcnQgbGVuKG5vZGUuZmluZF9ieV90YWcoInN5c3RlbS1vdXQiKSkgPT0gMQor
ICAgIGVsaWYganVuaXRfbG9nZ2luZyA9PSAic3lzdGVtLWVyciI6CisgICAgICAgIGFzc2VydCBs
ZW4obm9kZS5maW5kX2J5X3RhZygic3lzdGVtLWVyciIpKSA9PSAxCisgICAgICAgIGFzc2VydCBs
ZW4obm9kZS5maW5kX2J5X3RhZygic3lzdGVtLW91dCIpKSA9PSAwCisgICAgZWxzZToKKyAgICAg
ICAgYXNzZXJ0IGp1bml0X2xvZ2dpbmcgPT0gIm5vIgorICAgICAgICBhc3NlcnQgbGVuKG5vZGUu
ZmluZF9ieV90YWcoInN5c3RlbS1lcnIiKSkgPT0gMAorICAgICAgICBhc3NlcnQgbGVuKG5vZGUu
ZmluZF9ieV90YWcoInN5c3RlbS1vdXQiKSkgPT0gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X2xpbmtfcmVzb2x2ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9s
aW5rX3Jlc29sdmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m
NDNmN2RlZDU2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
bGlua19yZXNvbHZlLnB5CkBAIC0wLDAgKzEsODMgQEAKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQg
c3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRleHR3cmFwCitmcm9tIGNvbnRleHRsaWIg
aW1wb3J0IGNvbnRleHRtYW5hZ2VyCitmcm9tIHN0cmluZyBpbXBvcnQgYXNjaWlfbG93ZXJjYXNl
CisKK2ltcG9ydCBweS5wYXRoCisKK2Zyb20gX3B5dGVzdCBpbXBvcnQgcHl0ZXN0ZXIKKworCitA
Y29udGV4dG1hbmFnZXIKK2RlZiBzdWJzdF9wYXRoX3dpbmRvd3MoZmlsZW5hbWUpOgorICAgIGZv
ciBjIGluIGFzY2lpX2xvd2VyY2FzZVs3Ol06ICAjIENyZWF0ZSBhIHN1YnN0IGRyaXZlIGZyb20g
SC1aLgorICAgICAgICBjICs9ICI6IgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYyk6
CisgICAgICAgICAgICBkcml2ZSA9IGMKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAg
ICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlVuYWJsZSB0byBmaW5kIHN1aXRhYmxlIGRyaXZl
IGxldHRlciBmb3Igc3Vic3QuIikKKworICAgIGRpcmVjdG9yeSA9IGZpbGVuYW1lLmRpcnBhdGgo
KQorICAgIGJhc2VuYW1lID0gZmlsZW5hbWUuYmFzZW5hbWUKKworICAgIGFyZ3MgPSBbInN1YnN0
IiwgZHJpdmUsIHN0cihkaXJlY3RvcnkpXQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChhcmdz
KQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhkcml2ZSkKKyAgICB0cnk6CisgICAgICAgIGZp
bGVuYW1lID0gcHkucGF0aC5sb2NhbChkcml2ZSkgLyBiYXNlbmFtZQorICAgICAgICB5aWVsZCBm
aWxlbmFtZQorICAgIGZpbmFsbHk6CisgICAgICAgIGFyZ3MgPSBbInN1YnN0IiwgIi9EIiwgZHJp
dmVdCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChhcmdzKQorCisKK0Bjb250ZXh0bWFu
YWdlcgorZGVmIHN1YnN0X3BhdGhfbGludXgoZmlsZW5hbWUpOgorICAgIGRpcmVjdG9yeSA9IGZp
bGVuYW1lLmRpcnBhdGgoKQorICAgIGJhc2VuYW1lID0gZmlsZW5hbWUuYmFzZW5hbWUKKworICAg
IHRhcmdldCA9IGRpcmVjdG9yeSAvICIuLiIgLyAic3ViMiIKKyAgICBvcy5zeW1saW5rKHN0cihk
aXJlY3RvcnkpLCBzdHIodGFyZ2V0KSwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1UcnVlKQorICAgIHRy
eToKKyAgICAgICAgZmlsZW5hbWUgPSB0YXJnZXQgLyBiYXNlbmFtZQorICAgICAgICB5aWVsZCBm
aWxlbmFtZQorICAgIGZpbmFsbHk6CisgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0byB1bmxpbmsg
KGl0J3MgYWxsIGluIHRoZSB0ZW1wZGlyKS4KKyAgICAgICAgcGFzcworCisKK2RlZiB0ZXN0X2xp
bmtfcmVzb2x2ZSh0ZXN0ZGlyOiBweXRlc3Rlci5UZXN0ZGlyKSAtPiBOb25lOgorICAgICIiIlNl
ZTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTY1LiIiIgor
ICAgIHN1YjEgPSB0ZXN0ZGlyLm1rcHlkaXIoInN1YjEiKQorICAgIHAgPSBzdWIxLmpvaW4oInRl
c3RfZm9vLnB5IikKKyAgICBwLndyaXRlKAorICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBkZWYgdGVzdF9mb28o
KToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCkKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICApCisKKyAgICBzdWJzdCA9IHN1YnN0X3BhdGhfbGludXgKKyAgICBpZiBzeXMu
cGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgc3Vic3QgPSBzdWJzdF9wYXRoX3dpbmRvd3MK
KworICAgIHdpdGggc3Vic3QocCkgYXMgc3Vic3RfcDoKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3Qoc3RyKHN1YnN0X3ApLCAiLXYiKQorICAgICAgICAjIGkuZS46IE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBlcnJvciBpcyByZXBvcnRlZCBhcyBhIHJlbGF0aXZlIHBhdGgsIG5vdCBhcyBh
CisgICAgICAgICMgcmVzb2x2ZWQgcGF0aC4KKyAgICAgICAgIyBTZWU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTk2NQorICAgICAgICBzdGRvdXQgPSByZXN1
bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIGFzc2VydCAic3ViMS90ZXN0X2Zvby5weSIgbm90IGlu
IHN0ZG91dAorCisgICAgICAgICMgaS5lLjogRXhwZWN0IGRyaXZlIG9uIHdpbmRvd3MgYmVjYXVz
ZSB3ZSBqdXN0IGhhdmUgZHJpdmU6ZmlsZW5hbWUsIHdoZXJlYXMKKyAgICAgICAgIyB3ZSBleHBl
Y3QgYSByZWxhdGl2ZSBwYXRoIG9uIExpbnV4LgorICAgICAgICBleHBlY3QgPSAoCisgICAgICAg
ICAgICAiKnt9KiIuZm9ybWF0KHN1YnN0X3ApIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGVs
c2UgIipzdWIyL3Rlc3RfZm9vLnB5KiIKKyAgICAgICAgKQorICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoW2V4cGVjdF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfbWFpbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tYWluLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWI0NWVjNmI1YmQxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21haW4ucHkKQEAgLTAsMCArMSwyNDgg
QEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbAorCitpbXBvcnQgcHkucGF0aAorCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9w
eXRlc3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQg
VXNhZ2VFcnJvcgorZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IHJlc29sdmVfY29sbGVjdGlvbl9h
cmd1bWVudAorZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IHZhbGlkYXRlX2Jhc2V0ZW1wCitmcm9t
IF9weXRlc3QucGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9y
dCBUZXN0ZGlyCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJyZXRfZXhjIiwK
KyAgICAoCisgICAgICAgIHB5dGVzdC5wYXJhbSgoTm9uZSwgVmFsdWVFcnJvcikpLAorICAgICAg
ICBweXRlc3QucGFyYW0oKDQyLCBTeXN0ZW1FeGl0KSksCisgICAgICAgIHB5dGVzdC5wYXJhbSgo
RmFsc2UsIFN5c3RlbUV4aXQpKSwKKyAgICApLAorKQorZGVmIHRlc3Rfd3JhcF9zZXNzaW9uX25v
dGlmeV9leGNlcHRpb24ocmV0X2V4YywgdGVzdGRpcik6CisgICAgcmV0dXJuY29kZSwgZXhjID0g
cmV0X2V4YworICAgIGMxID0gdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIiIgorICAg
ICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoKToK
KyAgICAgICAgICAgIHJhaXNlIHtleGN9KCJib29tIikKKworICAgICAgICBkZWYgcHl0ZXN0X2lu
dGVybmFsZXJyb3IoZXhjcmVwciwgZXhjaW5mbyk6CisgICAgICAgICAgICByZXR1cm5jb2RlID0g
e3JldHVybmNvZGUhcn0KKyAgICAgICAgICAgIGlmIHJldHVybmNvZGUgaXMgbm90IEZhbHNlOgor
ICAgICAgICAgICAgICAgIHB5dGVzdC5leGl0KCJleGl0aW5nIGFmdGVyICVzLi4uIiAlIGV4Y2lu
Zm8udHlwZW5hbWUsIHJldHVybmNvZGU9e3JldHVybmNvZGUhcn0pCisgICAgIiIiLmZvcm1hdCgK
KyAgICAgICAgICAgIHJldHVybmNvZGU9cmV0dXJuY29kZSwgZXhjPWV4Yy5fX25hbWVfXworICAg
ICAgICApCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBpZiBy
ZXR1cm5jb2RlOgorICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSByZXR1cm5jb2RlCisgICAg
ZWxzZToKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUuSU5URVJOQUxfRVJS
T1IKKyAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lc1swXSA9PSAiSU5URVJOQUxFUlJPUj4g
VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOiIKKworICAgIGlmIGV4YyA9PSBTeXN0
ZW1FeGl0OgorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lc1stMzpdID09IFsKKyAg
ICAgICAgICAgICdJTlRFUk5BTEVSUk9SPiAgIEZpbGUgInt9IiwgbGluZSA0LCBpbiBweXRlc3Rf
c2Vzc2lvbnN0YXJ0Jy5mb3JtYXQoYzEpLAorICAgICAgICAgICAgJ0lOVEVSTkFMRVJST1I+ICAg
ICByYWlzZSBTeXN0ZW1FeGl0KCJib29tIiknLAorICAgICAgICAgICAgIklOVEVSTkFMRVJST1I+
IFN5c3RlbUV4aXQ6IGJvb20iLAorICAgICAgICBdCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0
IHJlc3VsdC5zdGRvdXQubGluZXNbLTM6XSA9PSBbCisgICAgICAgICAgICAnSU5URVJOQUxFUlJP
Uj4gICBGaWxlICJ7fSIsIGxpbmUgNCwgaW4gcHl0ZXN0X3Nlc3Npb25zdGFydCcuZm9ybWF0KGMx
KSwKKyAgICAgICAgICAgICdJTlRFUk5BTEVSUk9SPiAgICAgcmFpc2UgVmFsdWVFcnJvcigiYm9v
bSIpJywKKyAgICAgICAgICAgICJJTlRFUk5BTEVSUk9SPiBWYWx1ZUVycm9yOiBib29tIiwKKyAg
ICAgICAgXQorICAgIGlmIHJldHVybmNvZGUgaXMgRmFsc2U6CisgICAgICAgIGFzc2VydCByZXN1
bHQuc3RkZXJyLmxpbmVzID09IFsibWFpbmxvb3A6IGNhdWdodCB1bmV4cGVjdGVkIFN5c3RlbUV4
aXQhIl0KKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgcmVzdWx0LnN0ZGVyci5saW5lcyA9PSBb
IkV4aXQ6IGV4aXRpbmcgYWZ0ZXIge30uLi4iLmZvcm1hdChleGMuX19uYW1lX18pXQorCisKK0Bw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgicmV0dXJuY29kZSIsIChOb25lLCA0MikpCitkZWYgdGVz
dF93cmFwX3Nlc3Npb25fZXhpdF9zZXNzaW9uZmluaXNoKAorICAgIHJldHVybmNvZGU6IE9wdGlv
bmFsW2ludF0sIHRlc3RkaXI6IFRlc3RkaXIKKykgLT4gTm9uZToKKyAgICB0ZXN0ZGlyLm1ha2Vj
b25mdGVzdCgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgZGVm
IHB5dGVzdF9zZXNzaW9uZmluaXNoKCk6CisgICAgICAgICAgICBweXRlc3QuZXhpdChtc2c9ImV4
aXRfcHl0ZXN0X3Nlc3Npb25maW5pc2giLCByZXR1cm5jb2RlPXtyZXR1cm5jb2RlfSkKKyAgICAi
IiIuZm9ybWF0KAorICAgICAgICAgICAgcmV0dXJuY29kZT1yZXR1cm5jb2RlCisgICAgICAgICkK
KyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIGlmIHJldHVybmNv
ZGU6CisgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IHJldHVybmNvZGUKKyAgICBlbHNlOgor
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQK
KyAgICBhc3NlcnQgcmVzdWx0LnN0ZG91dC5saW5lc1stMV0gPT0gImNvbGxlY3RlZCAwIGl0ZW1z
IgorICAgIGFzc2VydCByZXN1bHQuc3RkZXJyLmxpbmVzID09IFsiRXhpdDogZXhpdF9weXRlc3Rf
c2Vzc2lvbmZpbmlzaCJdCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJiYXNldGVtcCIs
IFsiZm9vIiwgImZvby9iYXIiXSkKK2RlZiB0ZXN0X3ZhbGlkYXRlX2Jhc2V0ZW1wX29rKHRtcF9w
YXRoLCBiYXNldGVtcCwgbW9ua2V5cGF0Y2gpOgorICAgIG1vbmtleXBhdGNoLmNoZGlyKHN0cih0
bXBfcGF0aCkpCisgICAgdmFsaWRhdGVfYmFzZXRlbXAodG1wX3BhdGggLyBiYXNldGVtcCkKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImJhc2V0ZW1wIiwgWyIiLCAiLiIsICIuLiJdKQor
ZGVmIHRlc3RfdmFsaWRhdGVfYmFzZXRlbXBfZmFpbHModG1wX3BhdGgsIGJhc2V0ZW1wLCBtb25r
ZXlwYXRjaCk6CisgICAgbW9ua2V5cGF0Y2guY2hkaXIoc3RyKHRtcF9wYXRoKSkKKyAgICBtc2cg
PSAiYmFzZXRlbXAgbXVzdCBub3QgYmUgZW1wdHksIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0
b3J5IG9yIGFueSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0IgorICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvciwgbWF0Y2g9bXNnKToKKyAgICAgICAgaWYgYmFz
ZXRlbXA6CisgICAgICAgICAgICBiYXNldGVtcCA9IHRtcF9wYXRoIC8gYmFzZXRlbXAKKyAgICAg
ICAgdmFsaWRhdGVfYmFzZXRlbXAoYmFzZXRlbXApCisKKworZGVmIHRlc3RfdmFsaWRhdGVfYmFz
ZXRlbXBfaW50ZWdyYXRpb24odGVzdGRpcik6CisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tYmFzZXRlbXA9LiIpCisgICAgcmVzdWx0LnN0ZGVyci5mbm1hdGNoX2xpbmVzKCIqYmFz
ZXRlbXAgbXVzdCBub3QgYmUqIikKKworCitjbGFzcyBUZXN0UmVzb2x2ZUNvbGxlY3Rpb25Bcmd1
bWVudDoKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBkZWYgaW52b2NhdGlvbl9kaXIoc2VsZiwg
dGVzdGRpcjogVGVzdGRpcikgLT4gcHkucGF0aC5sb2NhbDoKKyAgICAgICAgdGVzdGRpci5zeXNw
YXRoaW5zZXJ0KHN0cih0ZXN0ZGlyLnRtcGRpciAvICJzcmMiKSkKKyAgICAgICAgdGVzdGRpci5j
aGRpcigpCisKKyAgICAgICAgcGtnID0gdGVzdGRpci50bXBkaXIuam9pbigic3JjL3BrZyIpLmVu
c3VyZV9kaXIoKQorICAgICAgICBwa2cuam9pbigiX19pbml0X18ucHkiKS5lbnN1cmUoKQorICAg
ICAgICBwa2cuam9pbigidGVzdC5weSIpLmVuc3VyZSgpCisgICAgICAgIHJldHVybiB0ZXN0ZGly
LnRtcGRpcgorCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIGludm9jYXRpb25fcGF0aChz
ZWxmLCBpbnZvY2F0aW9uX2RpcjogcHkucGF0aC5sb2NhbCkgLT4gUGF0aDoKKyAgICAgICAgcmV0
dXJuIFBhdGgoc3RyKGludm9jYXRpb25fZGlyKSkKKworICAgIGRlZiB0ZXN0X2ZpbGUoc2VsZiwg
aW52b2NhdGlvbl9kaXI6IHB5LnBhdGgubG9jYWwsIGludm9jYXRpb25fcGF0aDogUGF0aCkgLT4g
Tm9uZToKKyAgICAgICAgIiIiRmlsZSBhbmQgcGFydHMuIiIiCisgICAgICAgIGFzc2VydCByZXNv
bHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRoLCAic3JjL3BrZy90ZXN0LnB5
IikgPT0gKAorICAgICAgICAgICAgaW52b2NhdGlvbl9kaXIgLyAic3JjL3BrZy90ZXN0LnB5IiwK
KyAgICAgICAgICAgIFtdLAorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxl
Y3Rpb25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRoLCAic3JjL3BrZy90ZXN0LnB5OjoiKSA9PSAo
CisgICAgICAgICAgICBpbnZvY2F0aW9uX2RpciAvICJzcmMvcGtnL3Rlc3QucHkiLAorICAgICAg
ICAgICAgWyIiXSwKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcmVzb2x2ZV9jb2xsZWN0aW9u
X2FyZ3VtZW50KAorICAgICAgICAgICAgaW52b2NhdGlvbl9wYXRoLCAic3JjL3BrZy90ZXN0LnB5
Ojpmb286OmJhciIKKyAgICAgICAgKSA9PSAoaW52b2NhdGlvbl9kaXIgLyAic3JjL3BrZy90ZXN0
LnB5IiwgWyJmb28iLCAiYmFyIl0pCisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxlY3Rpb25f
YXJndW1lbnQoCisgICAgICAgICAgICBpbnZvY2F0aW9uX3BhdGgsICJzcmMvcGtnL3Rlc3QucHk6
OmZvbzo6YmFyOjoiCisgICAgICAgICkgPT0gKGludm9jYXRpb25fZGlyIC8gInNyYy9wa2cvdGVz
dC5weSIsIFsiZm9vIiwgImJhciIsICIiXSkKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmLCBpbnZv
Y2F0aW9uX2RpcjogcHkucGF0aC5sb2NhbCwgaW52b2NhdGlvbl9wYXRoOiBQYXRoKSAtPiBOb25l
OgorICAgICAgICAiIiJEaXJlY3RvcnkgYW5kIHBhcnRzLiIiIgorICAgICAgICBhc3NlcnQgcmVz
b2x2ZV9jb2xsZWN0aW9uX2FyZ3VtZW50KGludm9jYXRpb25fcGF0aCwgInNyYy9wa2ciKSA9PSAo
CisgICAgICAgICAgICBpbnZvY2F0aW9uX2RpciAvICJzcmMvcGtnIiwKKyAgICAgICAgICAgIFtd
LAorICAgICAgICApCisKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKAorICAgICAgICAgICAg
VXNhZ2VFcnJvciwgbWF0Y2g9ciJkaXJlY3RvcnkgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4gOjog
c2VsZWN0aW9uIHBhcnRzIgorICAgICAgICApOgorICAgICAgICAgICAgcmVzb2x2ZV9jb2xsZWN0
aW9uX2FyZ3VtZW50KGludm9jYXRpb25fcGF0aCwgInNyYy9wa2c6OiIpCisKKyAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKAorICAgICAgICAgICAgVXNhZ2VFcnJvciwgbWF0Y2g9ciJkaXJlY3Rv
cnkgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4gOjogc2VsZWN0aW9uIHBhcnRzIgorICAgICAgICAp
OgorICAgICAgICAgICAgcmVzb2x2ZV9jb2xsZWN0aW9uX2FyZ3VtZW50KGludm9jYXRpb25fcGF0
aCwgInNyYy9wa2c6OmZvbzo6YmFyIikKKworICAgIGRlZiB0ZXN0X3B5cGF0aChzZWxmLCBpbnZv
Y2F0aW9uX2RpcjogcHkucGF0aC5sb2NhbCwgaW52b2NhdGlvbl9wYXRoOiBQYXRoKSAtPiBOb25l
OgorICAgICAgICAiIiJEb3R0ZWQgbmFtZSBhbmQgcGFydHMuIiIiCisgICAgICAgIGFzc2VydCBy
ZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoCisgICAgICAgICAgICBpbnZvY2F0aW9uX3BhdGgs
ICJwa2cudGVzdCIsIGFzX3B5cGF0aD1UcnVlCisgICAgICAgICkgPT0gKGludm9jYXRpb25fZGly
IC8gInNyYy9wa2cvdGVzdC5weSIsIFtdKQorICAgICAgICBhc3NlcnQgcmVzb2x2ZV9jb2xsZWN0
aW9uX2FyZ3VtZW50KAorICAgICAgICAgICAgaW52b2NhdGlvbl9wYXRoLCAicGtnLnRlc3Q6OmZv
bzo6YmFyIiwgYXNfcHlwYXRoPVRydWUKKyAgICAgICAgKSA9PSAoaW52b2NhdGlvbl9kaXIgLyAi
c3JjL3BrZy90ZXN0LnB5IiwgWyJmb28iLCAiYmFyIl0pCisgICAgICAgIGFzc2VydCByZXNvbHZl
X2NvbGxlY3Rpb25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRoLCAicGtnIiwgYXNfcHlwYXRoPVRy
dWUpID09ICgKKyAgICAgICAgICAgIGludm9jYXRpb25fZGlyIC8gInNyYy9wa2ciLAorICAgICAg
ICAgICAgW10sCisgICAgICAgICkKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAg
ICAgICAgICBVc2FnZUVycm9yLCBtYXRjaD1yInBhY2thZ2UgYXJndW1lbnQgY2Fubm90IGNvbnRh
aW4gOjogc2VsZWN0aW9uIHBhcnRzIgorICAgICAgICApOgorICAgICAgICAgICAgcmVzb2x2ZV9j
b2xsZWN0aW9uX2FyZ3VtZW50KAorICAgICAgICAgICAgICAgIGludm9jYXRpb25fcGF0aCwgInBr
Zzo6Zm9vOjpiYXIiLCBhc19weXBhdGg9VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRl
c3RfZG9lc19ub3RfZXhpc3Qoc2VsZiwgaW52b2NhdGlvbl9wYXRoOiBQYXRoKSAtPiBOb25lOgor
ICAgICAgICAiIiJHaXZlbiBhIGZpbGUvbW9kdWxlIHRoYXQgZG9lcyBub3QgZXhpc3QgcmFpc2Vz
IFVzYWdlRXJyb3IuIiIiCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAgICAgICAg
IFVzYWdlRXJyb3IsIG1hdGNoPXJlLmVzY2FwZSgiZmlsZSBvciBkaXJlY3Rvcnkgbm90IGZvdW5k
OiBmb29iYXIiKQorICAgICAgICApOgorICAgICAgICAgICAgcmVzb2x2ZV9jb2xsZWN0aW9uX2Fy
Z3VtZW50KGludm9jYXRpb25fcGF0aCwgImZvb2JhciIpCisKKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKAorICAgICAgICAgICAgVXNhZ2VFcnJvciwKKyAgICAgICAgICAgIG1hdGNoPXJlLmVz
Y2FwZSgKKyAgICAgICAgICAgICAgICAibW9kdWxlIG9yIHBhY2thZ2Ugbm90IGZvdW5kOiBmb29i
YXIgKG1pc3NpbmcgX19pbml0X18ucHk/KSIKKyAgICAgICAgICAgICksCisgICAgICAgICk6Cisg
ICAgICAgICAgICByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQoaW52b2NhdGlvbl9wYXRoLCAi
Zm9vYmFyIiwgYXNfcHlwYXRoPVRydWUpCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9wYXRoc19h
cmVfcmVzb2x2ZWRfY29ycmVjdGx5KAorICAgICAgICBzZWxmLCBpbnZvY2F0aW9uX2RpcjogcHku
cGF0aC5sb2NhbCwgaW52b2NhdGlvbl9wYXRoOiBQYXRoCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiJBYnNvbHV0ZSBwYXRocyByZXNvbHZlIGJhY2sgdG8gYWJzb2x1dGUgcGF0aHMuIiIiCisg
ICAgICAgIGZ1bGxfcGF0aCA9IHN0cihpbnZvY2F0aW9uX2RpciAvICJzcmMiKQorICAgICAgICBh
c3NlcnQgcmVzb2x2ZV9jb2xsZWN0aW9uX2FyZ3VtZW50KGludm9jYXRpb25fcGF0aCwgZnVsbF9w
YXRoKSA9PSAoCisgICAgICAgICAgICBweS5wYXRoLmxvY2FsKG9zLnBhdGguYWJzcGF0aCgic3Jj
IikpLAorICAgICAgICAgICAgW10sCisgICAgICAgICkKKworICAgICAgICAjIGVuc3VyZSBmdWxs
IHBhdGhzIGdpdmVuIGluIHRoZSBjb21tYW5kLWxpbmUgd2l0aG91dCB0aGUgZHJpdmUgbGV0dGVy
IHJlc29sdmUKKyAgICAgICAgIyB0byB0aGUgZnVsbCBwYXRoIGNvcnJlY3RseSAoIzc2MjgpCisg
ICAgICAgIGRyaXZlLCBmdWxsX3BhdGhfd2l0aG91dF9kcml2ZSA9IG9zLnBhdGguc3BsaXRkcml2
ZShmdWxsX3BhdGgpCisgICAgICAgIGFzc2VydCByZXNvbHZlX2NvbGxlY3Rpb25fYXJndW1lbnQo
CisgICAgICAgICAgICBpbnZvY2F0aW9uX3BhdGgsIGZ1bGxfcGF0aF93aXRob3V0X2RyaXZlCisg
ICAgICAgICkgPT0gKHB5LnBhdGgubG9jYWwob3MucGF0aC5hYnNwYXRoKCJzcmMiKSksIFtdKQor
CisKK2RlZiB0ZXN0X21vZHVsZV9mdWxsX3BhdGhfd2l0aG91dF9kcml2ZSh0ZXN0ZGlyKToKKyAg
ICAiIiJDb2xsZWN0IGFuZCBydW4gdGVzdCB1c2luZyBmdWxsIHBhdGggZXhjZXB0IGZvciB0aGUg
ZHJpdmUgbGV0dGVyICgjNzYyOCkuCisKKyAgICBQYXNzaW5nIGEgZnVsbCBwYXRoIHdpdGhvdXQg
YSBkcml2ZSBsZXR0ZXIgd291bGQgdHJpZ2dlciBhIGJ1ZyBpbiBweS5wYXRoLmxvY2FsCisgICAg
d2hlcmUgaXQgd291bGQga2VlcCB0aGUgZnVsbCBwYXRoIHdpdGhvdXQgdGhlIGRyaXZlIGxldHRl
ciBhcm91bmQsIGluc3RlYWQgb2YgcmVzb2x2aW5nCisgICAgdG8gdGhlIGZ1bGwgcGF0aCwgcmVz
dWx0aW5nIGluIGZpeHR1cmVzIG5vZGUgaWRzIG5vdCBtYXRjaGluZyBhZ2FpbnN0IHRlc3Qgbm9k
ZSBpZHMgY29ycmVjdGx5LgorICAgICIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAg
ICAgKip7CisgICAgICAgICAgICAicHJvamVjdC9jb25mdGVzdC5weSI6ICIiIgorICAgICAgICAg
ICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAg
ICAgICAgICAgICAgICBkZWYgZml4KCk6IHJldHVybiAxCisgICAgICAgICAgICAiIiIsCisgICAg
ICAgIH0KKyAgICApCisKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICoqeworICAg
ICAgICAgICAgInByb2plY3QvdGVzdHMvZHVtbXlfdGVzdC5weSI6ICIiIgorICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0KGZpeCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmaXggPT0gMQor
ICAgICAgICAgICAgIiIiCisgICAgICAgIH0KKyAgICApCisgICAgZm4gPSB0ZXN0ZGlyLnRtcGRp
ci5qb2luKCJwcm9qZWN0L3Rlc3RzL2R1bW15X3Rlc3QucHkiKQorICAgIGFzc2VydCBmbi5pc2Zp
bGUoKQorCisgICAgZHJpdmUsIHBhdGggPSBvcy5wYXRoLnNwbGl0ZHJpdmUoc3RyKGZuKSkKKwor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHBhdGgsICItdiIpCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
InByb2plY3QiLCAidGVzdHMiLCAiZHVtbXlfdGVzdC5weSIpICsgIjo6dGVzdCBQQVNTRUQgKiIs
CisgICAgICAgICAgICAiKiAxIHBhc3NlZCBpbiAqIiwKKyAgICAgICAgXQorICAgICkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tYXJrLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X21hcmsucHkKaW5kZXggZTJlNzM2OWRjNzk4Li41ZDVlMGNmNDJmN2UgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tYXJrLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9tYXJrLnB5CkBAIC0xLDE0NCArMSw0OCBAQAotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgbW9jaworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawor
CiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QubWFyayBpbXBvcnQgKAotICAgIE1hcmtHZW5l
cmF0b3IgYXMgTWFyaywKLSAgICBQYXJhbWV0ZXJTZXQsCi0gICAgdHJhbnNmZXJfbWFya2VycywK
LSAgICBFTVBUWV9QQVJBTUVURVJTRVRfT1BUSU9OLAotKQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBp
bXBvcnQgRXhpdENvZGUKK2Zyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBNYXJrR2VuZXJhdG9yIGFz
IE1hcmsKK2Zyb20gX3B5dGVzdC5tYXJrLnN0cnVjdHVyZXMgaW1wb3J0IEVNUFRZX1BBUkFNRVRF
UlNFVF9PUFRJT04KK2Zyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgQ29sbGVjdG9yCiBmcm9tIF9w
eXRlc3Qubm9kZXMgaW1wb3J0IE5vZGUKIAotaWdub3JlX21hcmtpbmZvID0gcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3MoCi0gICAgImlnbm9yZTpNYXJrSW5mbyBvYmplY3RzOl9weXRlc3QuZGVw
cmVjYXRlZC5SZW1vdmVkSW5QeXRlc3Q0V2FybmluZyIKLSkKLQotCi1jbGFzcyBUZXN0TWFyayhv
YmplY3QpOgotCi0gICAgZGVmIHRlc3RfbWFya2luZm9fcmVwcihzZWxmKToKLSAgICAgICAgZnJv
bSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1hcmtJbmZvLCBNYXJrCi0KLSAgICAgICAgbSA9IE1hcmtJ
bmZvLmZvcl9tYXJrKE1hcmsoImhlbGxvIiwgKDEsIDIpLCB7fSkpCi0gICAgICAgIHJlcHIobSkK
IAorY2xhc3MgVGVzdE1hcms6CiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhdHRyIiwg
WyJtYXJrIiwgInBhcmFtIl0pCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJtb2R1bGVu
YW1lIiwgWyJweS50ZXN0IiwgInB5dGVzdCJdKQotICAgIGRlZiB0ZXN0X3B5dGVzdF9leGlzdHNf
aW5fbmFtZXNwYWNlX2FsbChzZWxmLCBhdHRyLCBtb2R1bGVuYW1lKToKKyAgICBkZWYgdGVzdF9w
eXRlc3RfZXhpc3RzX2luX25hbWVzcGFjZV9hbGwoc2VsZiwgYXR0cjogc3RyLCBtb2R1bGVuYW1l
OiBzdHIpIC0+IE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZHVsZW5hbWVd
Ci0gICAgICAgIGFzc2VydCBhdHRyIGluIG1vZHVsZS5fX2FsbF9fCisgICAgICAgIGFzc2VydCBh
dHRyIGluIG1vZHVsZS5fX2FsbF9fICAjIHR5cGU6IGlnbm9yZQogCi0gICAgZGVmIHRlc3RfcHl0
ZXN0X21hcmtfbm90Y2FsbGFibGUoc2VsZik6CisgICAgZGVmIHRlc3RfcHl0ZXN0X21hcmtfbm90
Y2FsbGFibGUoc2VsZikgLT4gTm9uZToKICAgICAgICAgbWFyayA9IE1hcmsoKQotICAgICAgICBw
eXRlc3QucmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yKSwgbWFyaykKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBtYXJrKCkgICMgdHlw
ZTogaWdub3JlW29wZXJhdG9yXQogCiAgICAgZGVmIHRlc3RfbWFya193aXRoX3BhcmFtKHNlbGYp
OgotCiAgICAgICAgIGRlZiBzb21lX2Z1bmN0aW9uKGFiYyk6CiAgICAgICAgICAgICBwYXNzCiAK
LSAgICAgICAgY2xhc3MgU29tZUNsYXNzKG9iamVjdCk6CisgICAgICAgIGNsYXNzIFNvbWVDbGFz
czoKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBhc3NlcnQgcHl0ZXN0Lm1hcmsuZnVuKHNv
bWVfZnVuY3Rpb24pIGlzIHNvbWVfZnVuY3Rpb24KLSAgICAgICAgYXNzZXJ0IHB5dGVzdC5tYXJr
LmZ1bi53aXRoX2FyZ3Moc29tZV9mdW5jdGlvbikgaXMgbm90IHNvbWVfZnVuY3Rpb24KKyAgICAg
ICAgYXNzZXJ0IHB5dGVzdC5tYXJrLmZvbyhzb21lX2Z1bmN0aW9uKSBpcyBzb21lX2Z1bmN0aW9u
CisgICAgICAgIG1hcmtlZF93aXRoX2FyZ3MgPSBweXRlc3QubWFyay5mb28ud2l0aF9hcmdzKHNv
bWVfZnVuY3Rpb24pCisgICAgICAgIGFzc2VydCBtYXJrZWRfd2l0aF9hcmdzIGlzIG5vdCBzb21l
X2Z1bmN0aW9uICAjIHR5cGU6IGlnbm9yZVtjb21wYXJpc29uLW92ZXJsYXBdCiAKLSAgICAgICAg
YXNzZXJ0IHB5dGVzdC5tYXJrLmZ1bihTb21lQ2xhc3MpIGlzIFNvbWVDbGFzcwotICAgICAgICBh
c3NlcnQgcHl0ZXN0Lm1hcmsuZnVuLndpdGhfYXJncyhTb21lQ2xhc3MpIGlzIG5vdCBTb21lQ2xh
c3MKKyAgICAgICAgYXNzZXJ0IHB5dGVzdC5tYXJrLmZvbyhTb21lQ2xhc3MpIGlzIFNvbWVDbGFz
cworICAgICAgICBhc3NlcnQgcHl0ZXN0Lm1hcmsuZm9vLndpdGhfYXJncyhTb21lQ2xhc3MpIGlz
IG5vdCBTb21lQ2xhc3MgICMgdHlwZTogaWdub3JlW2NvbXBhcmlzb24tb3ZlcmxhcF0KIAogICAg
IGRlZiB0ZXN0X3B5dGVzdF9tYXJrX25hbWVfc3RhcnRzX3dpdGhfdW5kZXJzY29yZShzZWxmKToK
ICAgICAgICAgbWFyayA9IE1hcmsoKQotICAgICAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yLCBnZXRhdHRyLCBtYXJrLCAiX3NvbWVfbmFtZSIpCi0KLSAgICBkZWYgdGVzdF9weXRlc3Rf
bWFya19iYXJlKHNlbGYpOgotICAgICAgICBtYXJrID0gTWFyaygpCisgICAgICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBtYXJrLl9zb21lX25hbWUK
IAotICAgICAgICBkZWYgZigpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIG1hcmsuaGVs
bG8oZikKLSAgICAgICAgYXNzZXJ0IGYuaGVsbG8KLQotICAgIEBpZ25vcmVfbWFya2luZm8KLSAg
ICBkZWYgdGVzdF9weXRlc3RfbWFya19rZXl3b3JkcyhzZWxmKToKLSAgICAgICAgbWFyayA9IE1h
cmsoKQogCi0gICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgbWFy
ay53b3JsZCh4PTMsIHk9NCkoZikKLSAgICAgICAgYXNzZXJ0IGYud29ybGQKLSAgICAgICAgYXNz
ZXJ0IGYud29ybGQua3dhcmdzWyJ4Il0gPT0gMwotICAgICAgICBhc3NlcnQgZi53b3JsZC5rd2Fy
Z3NbInkiXSA9PSA0Ci0KLSAgICBAaWdub3JlX21hcmtpbmZvCi0gICAgZGVmIHRlc3RfYXBwbHlf
bXVsdGlwbGVfYW5kX21lcmdlKHNlbGYpOgotICAgICAgICBtYXJrID0gTWFyaygpCi0KLSAgICAg
ICAgZGVmIGYoKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBtYXJrLndvcmxkCi0gICAg
ICAgIG1hcmsud29ybGQoeD0zKShmKQotICAgICAgICBhc3NlcnQgZi53b3JsZC5rd2FyZ3NbIngi
XSA9PSAzCi0gICAgICAgIG1hcmsud29ybGQoeT00KShmKQotICAgICAgICBhc3NlcnQgZi53b3Js
ZC5rd2FyZ3NbIngiXSA9PSAzCi0gICAgICAgIGFzc2VydCBmLndvcmxkLmt3YXJnc1sieSJdID09
IDQKLSAgICAgICAgbWFyay53b3JsZCh5PTEpKGYpCi0gICAgICAgIGFzc2VydCBmLndvcmxkLmt3
YXJnc1sieSJdID09IDEKLSAgICAgICAgYXNzZXJ0IGxlbihmLndvcmxkLmFyZ3MpID09IDAKLQot
ICAgIEBpZ25vcmVfbWFya2luZm8KLSAgICBkZWYgdGVzdF9weXRlc3RfbWFya19wb3NpdGlvbmFs
KHNlbGYpOgotICAgICAgICBtYXJrID0gTWFyaygpCi0KLSAgICAgICAgZGVmIGYoKToKLSAgICAg
ICAgICAgIHBhc3MKLQotICAgICAgICBtYXJrLndvcmxkKCJoZWxsbyIpKGYpCi0gICAgICAgIGFz
c2VydCBmLndvcmxkLmFyZ3NbMF0gPT0gImhlbGxvIgotICAgICAgICBtYXJrLndvcmxkKCJ3b3Js
ZCIpKGYpCi0KLSAgICBAaWdub3JlX21hcmtpbmZvCi0gICAgZGVmIHRlc3RfcHl0ZXN0X21hcmtf
cG9zaXRpb25hbF9mdW5jX2FuZF9rZXl3b3JkKHNlbGYpOgotICAgICAgICBtYXJrID0gTWFyaygp
Ci0KLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgotCi0gICAg
ICAgIG0gPSBtYXJrLndvcmxkKGYsIG9tZWdhPSJoZWxsbyIpCi0KLSAgICAgICAgZGVmIGcoKToK
LSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBhc3NlcnQgbShnKSA9PSBnCi0gICAgICAgIGFz
c2VydCBnLndvcmxkLmFyZ3NbMF0gaXMgZgotICAgICAgICBhc3NlcnQgZy53b3JsZC5rd2FyZ3Nb
Im9tZWdhIl0gPT0gImhlbGxvIgotCi0gICAgQGlnbm9yZV9tYXJraW5mbwotICAgIGRlZiB0ZXN0
X3B5dGVzdF9tYXJrX3JldXNlKHNlbGYpOgotICAgICAgICBtYXJrID0gTWFyaygpCi0KLSAgICAg
ICAgZGVmIGYoKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICB3ID0gbWFyay5zb21lCi0g
ICAgICAgIHcoImhlbGxvIiwgcmVhc29uPSIxMjMiKShmKQotICAgICAgICBhc3NlcnQgZi5zb21l
LmFyZ3NbMF0gPT0gImhlbGxvIgotICAgICAgICBhc3NlcnQgZi5zb21lLmt3YXJnc1sicmVhc29u
Il0gPT0gIjEyMyIKLQotICAgICAgICBkZWYgZygpOgotICAgICAgICAgICAgcGFzcwotCi0gICAg
ICAgIHcoIndvcmxkIiwgcmVhc29uMj0iNDU2IikoZykKLSAgICAgICAgYXNzZXJ0IGcuc29tZS5h
cmdzWzBdID09ICJ3b3JsZCIKLSAgICAgICAgYXNzZXJ0ICJyZWFzb24iIG5vdCBpbiBnLnNvbWUu
a3dhcmdzCi0gICAgICAgIGFzc2VydCBnLnNvbWUua3dhcmdzWyJyZWFzb24yIl0gPT0gIjQ1NiIK
LQotCi1kZWYgdGVzdF9tYXJrZWRfY2xhc3NfcnVuX3R3aWNlKHRlc3RkaXIsIHJlcXVlc3QpOgor
ZGVmIHRlc3RfbWFya2VkX2NsYXNzX3J1bl90d2ljZSh0ZXN0ZGlyKToKICAgICAiIiJUZXN0IGZh
aWxzIGZpbGUgaXMgcnVuIHR3aWNlIHRoYXQgY29udGFpbnMgbWFya2VkIGNsYXNzLgogICAgIFNl
ZSBpc3N1ZSM2ODMuCiAgICAgIiIiCkBAIC0xNjksNyArNzMsNyBAQCBkZWYgdGVzdF9pbmlfbWFy
a2Vycyh0ZXN0ZGlyKToKICAgICAgICAgIiIiCiAgICAgICAgIGRlZiB0ZXN0X21hcmtlcnMocHl0
ZXN0Y29uZmlnKToKICAgICAgICAgICAgIG1hcmtlcnMgPSBweXRlc3Rjb25maWcuZ2V0aW5pKCJt
YXJrZXJzIikKLSAgICAgICAgICAgIHByaW50IChtYXJrZXJzKQorICAgICAgICAgICAgcHJpbnQo
bWFya2VycykKICAgICAgICAgICAgIGFzc2VydCBsZW4obWFya2VycykgPj0gMgogICAgICAgICAg
ICAgYXNzZXJ0IG1hcmtlcnNbMF0uc3RhcnRzd2l0aCgiYTE6IikKICAgICAgICAgICAgIGFzc2Vy
dCBtYXJrZXJzWzFdLnN0YXJ0c3dpdGgoImEyOiIpCkBAIC0yMTIsNyArMTE2LDcgQEAgZGVmIHRl
c3RfaW5pX21hcmtlcnNfd2hpdGVzcGFjZSh0ZXN0ZGlyKToKICAgICAgICAgICAgIGFzc2VydCBU
cnVlCiAgICAgIiIiCiAgICAgKQotICAgIHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLS1zdHJp
Y3QiLCAiLW0iLCAiYTEiKQorICAgIHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLS1zdHJpY3Qt
bWFya2VycyIsICItbSIsICJhMSIpCiAgICAgcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAK
IApAQCAtMjMyLDcgKzEzNiw3IEBAIGRlZiB0ZXN0X21hcmtlcl93aXRob3V0X2Rlc2NyaXB0aW9u
KHRlc3RkaXIpOgogICAgICkKICAgICBmdGRpciA9IHRlc3RkaXIubWtkaXIoImZ0MV9kdW1teSIp
CiAgICAgdGVzdGRpci50bXBkaXIuam9pbigiY29uZnRlc3QucHkiKS5tb3ZlKGZ0ZGlyLmpvaW4o
ImNvbmZ0ZXN0LnB5IikpCi0gICAgcmVjID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2Vzcygi
LS1zdHJpY3QiKQorICAgIHJlYyA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXN0cmljdC1tYXJrZXJz
IikKICAgICByZWMuYXNzZXJ0X291dGNvbWVzKCkKIAogCkBAIC0yNzYsNyArMTgwLDggQEAgZGVm
IHRlc3RfbWFya19vbl9wc2V1ZG9fZnVuY3Rpb24odGVzdGRpcik6CiAgICAgcmVwcmVjLmFzc2Vy
dG91dGNvbWUocGFzc2VkPTEpCiAKIAotZGVmIHRlc3Rfc3RyaWN0X3Byb2hpYml0c191bnJlZ2lz
dGVyZWRfbWFya2Vycyh0ZXN0ZGlyKToKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgib3B0aW9u
X25hbWUiLCBbIi0tc3RyaWN0LW1hcmtlcnMiLCAiLS1zdHJpY3QiXSkKK2RlZiB0ZXN0X3N0cmlj
dF9wcm9oaWJpdHNfdW5yZWdpc3RlcmVkX21hcmtlcnModGVzdGRpciwgb3B0aW9uX25hbWUpOgog
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRl
c3QKQEAgLTI4NSwyMSArMTkwLDI1IEBAIGRlZiB0ZXN0X3N0cmljdF9wcm9oaWJpdHNfdW5yZWdp
c3RlcmVkX21hcmtlcnModGVzdGRpcik6CiAgICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAgICAg
KQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXN0cmljdCIpCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3Qob3B0aW9uX25hbWUpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQg
IT0gMAotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip1bnJlZ2lzdGVyZWRtYXJr
Km5vdCpyZWdpc3RlcmVkKiJdKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAg
ICAgICAgWyIndW5yZWdpc3RlcmVkbWFyaycgbm90IGZvdW5kIGluIGBtYXJrZXJzYCBjb25maWd1
cmF0aW9uIG9wdGlvbiJdCisgICAgKQogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKLSAg
ICAic3BlYyIsCisgICAgKCJleHByIiwgImV4cGVjdGVkX3Bhc3NlZCIpLAogICAgIFsKLSAgICAg
ICAgKCJ4eXoiLCAoInRlc3Rfb25lIiwpKSwKLSAgICAgICAgKCJ4eXogYW5kIHh5ejIiLCAoKSks
Ci0gICAgICAgICgieHl6MiIsICgidGVzdF90d28iLCkpLAotICAgICAgICAoInh5eiBvciB4eXoy
IiwgKCJ0ZXN0X29uZSIsICJ0ZXN0X3R3byIpKSwKKyAgICAgICAgKCJ4eXoiLCBbInRlc3Rfb25l
Il0pLAorICAgICAgICAoIigoKCAgeHl6KSkgICkiLCBbInRlc3Rfb25lIl0pLAorICAgICAgICAo
Im5vdCBub3QgeHl6IiwgWyJ0ZXN0X29uZSJdKSwKKyAgICAgICAgKCJ4eXogYW5kIHh5ejIiLCBb
XSksCisgICAgICAgICgieHl6MiIsIFsidGVzdF90d28iXSksCisgICAgICAgICgieHl6IG9yIHh5
ejIiLCBbInRlc3Rfb25lIiwgInRlc3RfdHdvIl0pLAogICAgIF0sCiApCi1kZWYgdGVzdF9tYXJr
X29wdGlvbihzcGVjLCB0ZXN0ZGlyKToKK2RlZiB0ZXN0X21hcmtfb3B0aW9uKGV4cHI6IHN0ciwg
ZXhwZWN0ZWRfcGFzc2VkOiBzdHIsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMzExLDE4ICsy
MjAsMTcgQEAgZGVmIHRlc3RfbWFya19vcHRpb24oc3BlYywgdGVzdGRpcik6CiAgICAgICAgICAg
ICBwYXNzCiAgICAgIiIiCiAgICAgKQotICAgIG9wdCwgcGFzc2VkX3Jlc3VsdCA9IHNwZWMKLSAg
ICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1tIiwgb3B0KQorICAgIHJlYyA9IHRlc3RkaXIu
aW5saW5lX3J1bigiLW0iLCBleHByKQogICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbCA9IHJlYy5s
aXN0b3V0Y29tZXMoKQogICAgIHBhc3NlZCA9IFt4Lm5vZGVpZC5zcGxpdCgiOjoiKVstMV0gZm9y
IHggaW4gcGFzc2VkXQotICAgIGFzc2VydCBsZW4ocGFzc2VkKSA9PSBsZW4ocGFzc2VkX3Jlc3Vs
dCkKLSAgICBhc3NlcnQgbGlzdChwYXNzZWQpID09IGxpc3QocGFzc2VkX3Jlc3VsdCkKKyAgICBh
c3NlcnQgcGFzc2VkID09IGV4cGVjdGVkX3Bhc3NlZAogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgKLSAgICAic3BlYyIsIFsoImludGVyZmFjZSIsICgidGVzdF9pbnRlcmZhY2UiLCkpLCAo
Im5vdCBpbnRlcmZhY2UiLCAoInRlc3Rfbm9pbnRlciIsKSldCisgICAgKCJleHByIiwgImV4cGVj
dGVkX3Bhc3NlZCIpLAorICAgIFsoImludGVyZmFjZSIsIFsidGVzdF9pbnRlcmZhY2UiXSksICgi
bm90IGludGVyZmFjZSIsIFsidGVzdF9ub2ludGVyIl0pXSwKICkKLWRlZiB0ZXN0X21hcmtfb3B0
aW9uX2N1c3RvbShzcGVjLCB0ZXN0ZGlyKToKK2RlZiB0ZXN0X21hcmtfb3B0aW9uX2N1c3RvbShl
eHByOiBzdHIsIGV4cGVjdGVkX3Bhc3NlZDogc3RyLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHRl
c3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApA
QCAtMzQwLDI0ICsyNDgsMjUgQEAgZGVmIHRlc3RfbWFya19vcHRpb25fY3VzdG9tKHNwZWMsIHRl
c3RkaXIpOgogICAgICAgICAgICAgcGFzcwogICAgICIiIgogICAgICkKLSAgICBvcHQsIHBhc3Nl
ZF9yZXN1bHQgPSBzcGVjCi0gICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItbSIsIG9wdCkK
KyAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1tIiwgZXhwcikKICAgICBwYXNzZWQsIHNr
aXBwZWQsIGZhaWwgPSByZWMubGlzdG91dGNvbWVzKCkKICAgICBwYXNzZWQgPSBbeC5ub2RlaWQu
c3BsaXQoIjo6IilbLTFdIGZvciB4IGluIHBhc3NlZF0KLSAgICBhc3NlcnQgbGVuKHBhc3NlZCkg
PT0gbGVuKHBhc3NlZF9yZXN1bHQpCi0gICAgYXNzZXJ0IGxpc3QocGFzc2VkKSA9PSBsaXN0KHBh
c3NlZF9yZXN1bHQpCisgICAgYXNzZXJ0IHBhc3NlZCA9PSBleHBlY3RlZF9wYXNzZWQKIAogCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCi0gICAgInNwZWMiLAorICAgICgiZXhwciIsICJleHBl
Y3RlZF9wYXNzZWQiKSwKICAgICBbCi0gICAgICAgICgiaW50ZXJmYWNlIiwgKCJ0ZXN0X2ludGVy
ZmFjZSIsKSksCi0gICAgICAgICgibm90IGludGVyZmFjZSIsICgidGVzdF9ub2ludGVyIiwgInRl
c3RfcGFzcyIpKSwKLSAgICAgICAgKCJwYXNzIiwgKCJ0ZXN0X3Bhc3MiLCkpLAotICAgICAgICAo
Im5vdCBwYXNzIiwgKCJ0ZXN0X2ludGVyZmFjZSIsICJ0ZXN0X25vaW50ZXIiKSksCisgICAgICAg
ICgiaW50ZXJmYWNlIiwgWyJ0ZXN0X2ludGVyZmFjZSJdKSwKKyAgICAgICAgKCJub3QgaW50ZXJm
YWNlIiwgWyJ0ZXN0X25vaW50ZXIiLCAidGVzdF9wYXNzIiwgInRlc3RfMSIsICJ0ZXN0XzIiXSks
CisgICAgICAgICgicGFzcyIsIFsidGVzdF9wYXNzIl0pLAorICAgICAgICAoIm5vdCBwYXNzIiwg
WyJ0ZXN0X2ludGVyZmFjZSIsICJ0ZXN0X25vaW50ZXIiLCAidGVzdF8xIiwgInRlc3RfMiJdKSwK
KyAgICAgICAgKCJub3Qgbm90IG5vdCAocGFzcykiLCBbInRlc3RfaW50ZXJmYWNlIiwgInRlc3Rf
bm9pbnRlciIsICJ0ZXN0XzEiLCAidGVzdF8yIl0pLAorICAgICAgICAoIjEgb3IgMiIsIFsidGVz
dF8xIiwgInRlc3RfMiJdKSwKKyAgICAgICAgKCJub3QgKDEgb3IgMikiLCBbInRlc3RfaW50ZXJm
YWNlIiwgInRlc3Rfbm9pbnRlciIsICJ0ZXN0X3Bhc3MiXSksCiAgICAgXSwKICkKLWRlZiB0ZXN0
X2tleXdvcmRfb3B0aW9uX2N1c3RvbShzcGVjLCB0ZXN0ZGlyKToKK2RlZiB0ZXN0X2tleXdvcmRf
b3B0aW9uX2N1c3RvbShleHByOiBzdHIsIGV4cGVjdGVkX3Bhc3NlZDogc3RyLCB0ZXN0ZGlyKSAt
PiBOb25lOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGRl
ZiB0ZXN0X2ludGVyZmFjZSgpOgpAQCAtMzY2LDI1ICsyNzUsMzQgQEAgZGVmIHRlc3Rfa2V5d29y
ZF9vcHRpb25fY3VzdG9tKHNwZWMsIHRlc3RkaXIpOgogICAgICAgICAgICAgcGFzcwogICAgICAg
ICBkZWYgdGVzdF9wYXNzKCk6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiB0ZXN0XzEo
KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZGVmIHRlc3RfMigpOgorICAgICAgICAgICAg
cGFzcwogICAgICIiIgogICAgICkKLSAgICBvcHQsIHBhc3NlZF9yZXN1bHQgPSBzcGVjCi0gICAg
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCItayIsIG9wdCkKKyAgICByZWMgPSB0ZXN0ZGlyLmlu
bGluZV9ydW4oIi1rIiwgZXhwcikKICAgICBwYXNzZWQsIHNraXBwZWQsIGZhaWwgPSByZWMubGlz
dG91dGNvbWVzKCkKICAgICBwYXNzZWQgPSBbeC5ub2RlaWQuc3BsaXQoIjo6IilbLTFdIGZvciB4
IGluIHBhc3NlZF0KLSAgICBhc3NlcnQgbGVuKHBhc3NlZCkgPT0gbGVuKHBhc3NlZF9yZXN1bHQp
Ci0gICAgYXNzZXJ0IGxpc3QocGFzc2VkKSA9PSBsaXN0KHBhc3NlZF9yZXN1bHQpCisgICAgYXNz
ZXJ0IHBhc3NlZCA9PSBleHBlY3RlZF9wYXNzZWQKKworCitkZWYgdGVzdF9rZXl3b3JkX29wdGlv
bl9jb25zaWRlcnNfbWFyayh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgibWFy
a3MvbWFya3NfY29uc2lkZXJlZF9rZXl3b3JkcyIpCisgICAgcmVjID0gdGVzdGRpci5pbmxpbmVf
cnVuKCItayIsICJmb28iKQorICAgIHBhc3NlZCA9IHJlYy5saXN0b3V0Y29tZXMoKVswXQorICAg
IGFzc2VydCBsZW4ocGFzc2VkKSA9PSAxCiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAot
ICAgICJzcGVjIiwKKyAgICAoImV4cHIiLCAiZXhwZWN0ZWRfcGFzc2VkIiksCiAgICAgWwotICAg
ICAgICAoIk5vbmUiLCAoInRlc3RfZnVuY1tOb25lXSIsKSksCi0gICAgICAgICgiMS4zIiwgKCJ0
ZXN0X2Z1bmNbMS4zXSIsKSksCi0gICAgICAgICgiMi0zIiwgKCJ0ZXN0X2Z1bmNbMi0zXSIsKSks
CisgICAgICAgICgiTm9uZSIsIFsidGVzdF9mdW5jW05vbmVdIl0pLAorICAgICAgICAoIlsxLjNd
IiwgWyJ0ZXN0X2Z1bmNbMS4zXSJdKSwKKyAgICAgICAgKCIyLTMiLCBbInRlc3RfZnVuY1syLTNd
Il0pLAogICAgIF0sCiApCi1kZWYgdGVzdF9rZXl3b3JkX29wdGlvbl9wYXJhbWV0cml6ZShzcGVj
LCB0ZXN0ZGlyKToKK2RlZiB0ZXN0X2tleXdvcmRfb3B0aW9uX3BhcmFtZXRyaXplKGV4cHI6IHN0
ciwgZXhwZWN0ZWRfcGFzc2VkOiBzdHIsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdGRpci5t
YWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMzkzLDQx
ICszMTEsNjcgQEAgZGVmIHRlc3Rfa2V5d29yZF9vcHRpb25fcGFyYW1ldHJpemUoc3BlYywgdGVz
dGRpcik6CiAgICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAgICAgKQotICAgIG9wdCwgcGFzc2Vk
X3Jlc3VsdCA9IHNwZWMKLSAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oIi1rIiwgb3B0KQor
ICAgIHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigiLWsiLCBleHByKQogICAgIHBhc3NlZCwgc2tp
cHBlZCwgZmFpbCA9IHJlYy5saXN0b3V0Y29tZXMoKQogICAgIHBhc3NlZCA9IFt4Lm5vZGVpZC5z
cGxpdCgiOjoiKVstMV0gZm9yIHggaW4gcGFzc2VkXQotICAgIGFzc2VydCBsZW4ocGFzc2VkKSA9
PSBsZW4ocGFzc2VkX3Jlc3VsdCkKLSAgICBhc3NlcnQgbGlzdChwYXNzZWQpID09IGxpc3QocGFz
c2VkX3Jlc3VsdCkKKyAgICBhc3NlcnQgcGFzc2VkID09IGV4cGVjdGVkX3Bhc3NlZAorCisKK2Rl
ZiB0ZXN0X3BhcmFtZXRyaXplX3dpdGhfbW9kdWxlKHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJhcmciLCBbcHl0ZXN0LF0pCisgICAgICAgIGRlZiB0ZXN0
X2Z1bmMoYXJnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVjID0g
dGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICBwYXNzZWQsIHNraXBwZWQsIGZhaWwgPSByZWMubGlz
dG91dGNvbWVzKCkKKyAgICBleHBlY3RlZF9pZCA9ICJ0ZXN0X2Z1bmNbIiArIHB5dGVzdC5fX25h
bWVfXyArICJdIgorICAgIGFzc2VydCBwYXNzZWRbMF0ubm9kZWlkLnNwbGl0KCI6OiIpWy0xXSA9
PSBleHBlY3RlZF9pZAogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKLSAgICAic3BlYyIs
CisgICAgKCJleHByIiwgImV4cGVjdGVkX2Vycm9yIiksCiAgICAgWwogICAgICAgICAoCi0gICAg
ICAgICAgICAiZm9vIG9yIGltcG9ydCIsCi0gICAgICAgICAgICAiRVJST1I6IFB5dGhvbiBrZXl3
b3JkICdpbXBvcnQnIG5vdCBhY2NlcHRlZCBpbiBleHByZXNzaW9ucyBwYXNzZWQgdG8gJy1rJyIs
CisgICAgICAgICAgICAiZm9vIG9yIiwKKyAgICAgICAgICAgICJhdCBjb2x1bW4gNzogZXhwZWN0
ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVzaXMgT1IgaWRlbnRpZmllcjsgZ290IGVuZCBvZiBpbnB1
dCIsCisgICAgICAgICksCisgICAgICAgICgKKyAgICAgICAgICAgICJmb28gb3Igb3IiLAorICAg
ICAgICAgICAgImF0IGNvbHVtbiA4OiBleHBlY3RlZCBub3QgT1IgbGVmdCBwYXJlbnRoZXNpcyBP
UiBpZGVudGlmaWVyOyBnb3Qgb3IiLAorICAgICAgICApLAorICAgICAgICAoIihmb28iLCAiYXQg
Y29sdW1uIDU6IGV4cGVjdGVkIHJpZ2h0IHBhcmVudGhlc2lzOyBnb3QgZW5kIG9mIGlucHV0Iiwp
LAorICAgICAgICAoImZvbyBiYXIiLCAiYXQgY29sdW1uIDU6IGV4cGVjdGVkIGVuZCBvZiBpbnB1
dDsgZ290IGlkZW50aWZpZXIiLCksCisgICAgICAgICgKKyAgICAgICAgICAgICJvciBvciIsCisg
ICAgICAgICAgICAiYXQgY29sdW1uIDE6IGV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lz
IE9SIGlkZW50aWZpZXI7IGdvdCBvciIsCisgICAgICAgICksCisgICAgICAgICgKKyAgICAgICAg
ICAgICJub3Qgb3IiLAorICAgICAgICAgICAgImF0IGNvbHVtbiA1OiBleHBlY3RlZCBub3QgT1Ig
bGVmdCBwYXJlbnRoZXNpcyBPUiBpZGVudGlmaWVyOyBnb3Qgb3IiLAogICAgICAgICApLAotICAg
ICAgICAoImZvbyBvciIsICJFUlJPUjogV3JvbmcgZXhwcmVzc2lvbiBwYXNzZWQgdG8gJy1rJzog
Zm9vIG9yIiksCiAgICAgXSwKICkKLWRlZiB0ZXN0X2tleXdvcmRfb3B0aW9uX3dyb25nX2FyZ3Vt
ZW50cyhzcGVjLCB0ZXN0ZGlyLCBjYXBzeXMpOgorZGVmIHRlc3Rfa2V5d29yZF9vcHRpb25fd3Jv
bmdfYXJndW1lbnRzKAorICAgIGV4cHI6IHN0ciwgZXhwZWN0ZWRfZXJyb3I6IHN0ciwgdGVzdGRp
ciwgY2Fwc3lzCispIC0+IE5vbmU6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAi
IiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoYXJnKToKICAgICAgICAgICAgICAgICBwYXNz
CiAgICAgICAgICIiIgogICAgICkKLSAgICBvcHQsIGV4cGVjdGVkX3Jlc3VsdCA9IHNwZWMKLSAg
ICB0ZXN0ZGlyLmlubGluZV9ydW4oIi1rIiwgb3B0KQotICAgIG91dCA9IGNhcHN5cy5yZWFkb3V0
ZXJyKCkuZXJyCi0gICAgYXNzZXJ0IGV4cGVjdGVkX3Jlc3VsdCBpbiBvdXQKKyAgICB0ZXN0ZGly
LmlubGluZV9ydW4oIi1rIiwgZXhwcikKKyAgICBlcnIgPSBjYXBzeXMucmVhZG91dGVycigpLmVy
cgorICAgIGFzc2VydCBleHBlY3RlZF9lcnJvciBpbiBlcnIKIAogCiBkZWYgdGVzdF9wYXJhbWV0
cml6ZWRfY29sbGVjdGVkX2Zyb21fY29tbWFuZF9saW5lKHRlc3RkaXIpOgotICAgICIiIlBhcmFt
ZXRyaXplZCB0ZXN0IG5vdCBjb2xsZWN0ZWQgaWYgdGVzdCBuYW1lZCBzcGVjaWZpZWQKLSAgICAg
ICBpbiBjb21tYW5kIGxpbmUgaXNzdWUjNjQ5LgotICAgICIiIgorICAgICIiIlBhcmFtZXRyaXpl
ZCB0ZXN0IG5vdCBjb2xsZWN0ZWQgaWYgdGVzdCBuYW1lZCBzcGVjaWZpZWQgaW4gY29tbWFuZAor
ICAgIGxpbmUgaXNzdWUjNjQ5LiIiIgogICAgIHB5X2ZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC00NTYsOCArNDAwLDEwIEBA
IGRlZiB0ZXN0X3BhcmFtZXRyaXplZF9jb2xsZWN0X3dpdGhfd3JvbmdfYXJncyh0ZXN0ZGlyKToK
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChweV9maWxlKQogICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwotICAgICAgICAgICAgJ0UgICBWYWx1ZUVycm9y
OiBJbiAicGFyYW1ldHJpemUiIHRoZSBudW1iZXIgb2YgdmFsdWVzICgoMSwgMiwgMykpICcKLSAg
ICAgICAgICAgICJtdXN0IGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgbmFtZXMgKFsnZm9vJywg
J2JhciddKSIKKyAgICAgICAgICAgICd0ZXN0X3BhcmFtZXRyaXplZF9jb2xsZWN0X3dpdGhfd3Jv
bmdfYXJncy5weTo6dGVzdF9mdW5jOiBpbiAicGFyYW1ldHJpemUiIHRoZSBudW1iZXIgb2YgbmFt
ZXMgKDIpOicsCisgICAgICAgICAgICAiICBbJ2ZvbycsICdiYXInXSIsCisgICAgICAgICAgICAi
bXVzdCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHZhbHVlcyAoMyk6IiwKKyAgICAgICAgICAg
ICIgICgxLCAyLCAzKSIsCiAgICAgICAgIF0KICAgICApCiAKQEAgLTQ4MiwxMTggKzQyOCwyOSBA
QCBkZWYgdGVzdF9wYXJhbWV0cml6ZWRfd2l0aF9rd2FyZ3ModGVzdGRpcik6CiAgICAgYXNzZXJ0
IHJlc3VsdC5yZXQgPT0gMAogCiAKLWNsYXNzIFRlc3RGdW5jdGlvbmFsKG9iamVjdCk6Ci0KLSAg
ICBkZWYgdGVzdF9tYXJrX3Blcl9mdW5jdGlvbihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcCA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmhlbGxvCi0gICAgICAgICAgICBkZWYg
dGVzdF9oZWxsbygpOgotICAgICAgICAgICAgICAgIGFzc2VydCBoYXNhdHRyKHRlc3RfaGVsbG8s
ICdoZWxsbycpCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KHApCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiox
IHBhc3NlZCoiXSkKLQotICAgIGRlZiB0ZXN0X21hcmtfcGVyX21vZHVsZShzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKLSAgICAgICAgICAgICIiIgotICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5t
YXJrLmhlbGxvCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6Ci0gICAgICAgICAgICAgICAg
cGFzcwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBrZXl3b3JkcyA9IGl0ZW0ua2V5
d29yZHMKLSAgICAgICAgYXNzZXJ0ICJoZWxsbyIgaW4ga2V5d29yZHMKLQotICAgIGRlZiB0ZXN0
X21hcmtsaXN0X3Blcl9jbGFzcyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgaXRlbSA9IHRlc3Rk
aXIuZ2V0aXRlbSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAot
ICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgcHl0
ZXN0bWFyayA9IFtweXRlc3QubWFyay5oZWxsbywgcHl0ZXN0Lm1hcmsud29ybGRdCi0gICAgICAg
ICAgICAgICAgZGVmIHRlc3RfZnVuYyhzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
IFRlc3RDbGFzcy50ZXN0X2Z1bmMuaGVsbG8KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IFRl
c3RDbGFzcy50ZXN0X2Z1bmMud29ybGQKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAg
a2V5d29yZHMgPSBpdGVtLmtleXdvcmRzCi0gICAgICAgIGFzc2VydCAiaGVsbG8iIGluIGtleXdv
cmRzCi0KLSAgICBkZWYgdGVzdF9tYXJrbGlzdF9wZXJfbW9kdWxlKHNlbGYsIHRlc3RkaXIpOgot
ICAgICAgICBpdGVtID0gdGVzdGRpci5nZXRpdGVtKAotICAgICAgICAgICAgIiIiCi0gICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBweXRlc3RtYXJrID0gW3B5dGVzdC5tYXJr
LmhlbGxvLCBweXRlc3QubWFyay53b3JsZF0KLSAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhv
YmplY3QpOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc2VsZik6Ci0gICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBUZXN0Q2xhc3MudGVzdF9mdW5jLmhlbGxvCi0gICAgICAgICAgICAg
ICAgICAgIGFzc2VydCBUZXN0Q2xhc3MudGVzdF9mdW5jLndvcmxkCi0gICAgICAgICIiIgotICAg
ICAgICApCi0gICAgICAgIGtleXdvcmRzID0gaXRlbS5rZXl3b3JkcwotICAgICAgICBhc3NlcnQg
ImhlbGxvIiBpbiBrZXl3b3JkcwotICAgICAgICBhc3NlcnQgIndvcmxkIiBpbiBrZXl3b3Jkcwor
ZGVmIHRlc3RfcGFyYW1ldHJpemVfaXRlcmF0b3IodGVzdGRpcik6CisgICAgIiIiYHBhcmFtZXRy
aXplYCBzaG91bGQgd29yayB3aXRoIGdlbmVyYXRvcnMgKCM1MzU0KS4iIiIKKyAgICBweV9maWxl
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiJcCisgICAgICAgIGltcG9ydCBweXRl
c3QKIAotICAgIGRlZiB0ZXN0X21hcmtfcGVyX2NsYXNzX2RlY29yYXRvcihzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKLSAgICAgICAgICAgICIiIgotICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLmhlbGxvCi0g
ICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgICAgICBkZWYg
dGVzdF9mdW5jKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgVGVzdENsYXNzLnRl
c3RfZnVuYy5oZWxsbwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBrZXl3b3JkcyA9
IGl0ZW0ua2V5d29yZHMKLSAgICAgICAgYXNzZXJ0ICJoZWxsbyIgaW4ga2V5d29yZHMKKyAgICAg
ICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgor
ICAgICAgICAgICAgeWllbGQgMwogCi0gICAgZGVmIHRlc3RfbWFya19wZXJfY2xhc3NfZGVjb3Jh
dG9yX3BsdXNfZXhpc3RpbmdfZGVjKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBpdGVtID0gdGVz
dGRpci5nZXRpdGVtKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
Ci0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuaGVsbG8KLSAgICAgICAgICAgIGNsYXNzIFRlc3RD
bGFzcyhvYmplY3QpOgotICAgICAgICAgICAgICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay53
b3JsZAotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc2VsZik6Ci0gICAgICAgICAgICAg
ICAgICAgIGFzc2VydCBUZXN0Q2xhc3MudGVzdF9mdW5jLmhlbGxvCi0gICAgICAgICAgICAgICAg
ICAgIGFzc2VydCBUZXN0Q2xhc3MudGVzdF9mdW5jLndvcmxkCisgICAgICAgIEBweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgnYScsIGdlbigpKQorICAgICAgICBkZWYgdGVzdChhKToKKyAgICAgICAg
ICAgIGFzc2VydCBhID49IDEKICAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAga2V5d29y
ZHMgPSBpdGVtLmtleXdvcmRzCi0gICAgICAgIGFzc2VydCAiaGVsbG8iIGluIGtleXdvcmRzCi0g
ICAgICAgIGFzc2VydCAid29ybGQiIGluIGtleXdvcmRzCisgICAgKQorICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHB5X2ZpbGUpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAg
ICMgc2hvdWxkIG5vdCBza2lwIGFueSB0ZXN0cworICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiozIHBhc3NlZCoiXSkKIAotICAgIEBpZ25vcmVfbWFya2luZm8KLSAgICBkZWYgdGVz
dF9tZXJnaW5nX21hcmtlcnMoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAgPSB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAg
ICAgICAgICAgIHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay5oZWxsbygicG9zMSIsIHg9MSwgeT0y
KQotICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAg
IyBjbGFzc2xldmVsIG92ZXJyaWRlcyBtb2R1bGUgbGV2ZWwKLSAgICAgICAgICAgICAgICBweXRl
c3RtYXJrID0gcHl0ZXN0Lm1hcmsuaGVsbG8oeD0zKQotICAgICAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5oZWxsbygicG9zMCIsIHo9NCkKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKHNl
bGYpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICIiIgotICAgICAgICApCi0g
ICAgICAgIGl0ZW1zLCByZWMgPSB0ZXN0ZGlyLmlubGluZV9nZW5pdGVtcyhwKQotICAgICAgICBp
dGVtLCA9IGl0ZW1zCi0gICAgICAgIGtleXdvcmRzID0gaXRlbS5rZXl3b3JkcwotICAgICAgICBt
YXJrZXIgPSBrZXl3b3Jkc1siaGVsbG8iXQotICAgICAgICBhc3NlcnQgbWFya2VyLmFyZ3MgPT0g
KCJwb3MwIiwgInBvczEiKQotICAgICAgICBhc3NlcnQgbWFya2VyLmt3YXJncyA9PSB7IngiOiAx
LCAieSI6IDIsICJ6IjogNH0KLQotICAgICAgICAjIHRlc3QgdGhlIG5ldyBfX2l0ZXJfXyBpbnRl
cmZhY2UKLSAgICAgICAgdmFsdWVzID0gbGlzdChtYXJrZXIpCi0gICAgICAgIGFzc2VydCBsZW4o
dmFsdWVzKSA9PSAzCi0gICAgICAgIGFzc2VydCB2YWx1ZXNbMF0uYXJncyA9PSAoInBvczAiLCkK
LSAgICAgICAgYXNzZXJ0IHZhbHVlc1sxXS5hcmdzID09ICgpCi0gICAgICAgIGFzc2VydCB2YWx1
ZXNbMl0uYXJncyA9PSAoInBvczEiLCkKIAorY2xhc3MgVGVzdEZ1bmN0aW9uYWw6CiAgICAgZGVm
IHRlc3RfbWVyZ2luZ19tYXJrZXJzX2RlZXAoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgICMgaXNz
dWUgMTk5IC0gcHJvcGFnYXRlIG1hcmtlcnMgaW50byBuZXN0ZWQgY2xhc3NlcwogICAgICAgICBw
ID0gdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtNjA0LDcgKzQ2MSw3IEBAIGNsYXNzIFRlc3RGdW5j
dGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfYihzZWxmKToKICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKICAgICAgICAgICAgICAgICBjbGFzcyBUZXN0Qyhv
YmplY3QpOgotICAgICAgICAgICAgICAgICAgICAjIHRoaXMgb25lIGRpZG50IGdldCBtYXJrZWQK
KyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG9uZSBkaWRuJ3QgZ2V0IG1hcmtlZAogICAgICAg
ICAgICAgICAgICAgICBkZWYgdGVzdF9kKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0IFRydWUKICAgICAgICAgIiIiCkBAIC02MzMsOCArNDkwLDggQEAgY2xhc3MgVGVzdEZ1
bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgaXRlbXMsIHJlYyA9IHRlc3RkaXIuaW5saW5lX2dl
bml0ZW1zKHApCiAgICAgICAgIHNlbGYuYXNzZXJ0X21hcmtlcnMoaXRlbXMsIHRlc3RfZm9vPSgi
YSIsICJiIiksIHRlc3RfYmFyPSgiYSIsKSkKIAotICAgIEBweXRlc3QubWFyay5pc3N1ZTU2OAog
ICAgIGRlZiB0ZXN0X21hcmtfc2hvdWxkX25vdF9wYXNzX3RvX3NpZWJsaW5nX2NsYXNzKHNlbGYs
IHRlc3RkaXIpOgorICAgICAgICAiIiIjNTY4IiIiCiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTY1
NiwxMiArNTEzLDcgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgaXRl
bXMsIHJlYyA9IHRlc3RkaXIuaW5saW5lX2dlbml0ZW1zKHApCiAgICAgICAgIGJhc2VfaXRlbSwg
c3ViX2l0ZW0sIHN1Yl9pdGVtX290aGVyID0gaXRlbXMKICAgICAgICAgcHJpbnQoaXRlbXMsIFt4
Lm5vZGVpZCBmb3IgeCBpbiBpdGVtc10pCi0gICAgICAgICMgbGVnYWN5IGFwaSBzbWVhcnMKLSAg
ICAgICAgYXNzZXJ0IGhhc2F0dHIoYmFzZV9pdGVtLm9iaiwgImIiKQotICAgICAgICBhc3NlcnQg
aGFzYXR0cihzdWJfaXRlbV9vdGhlci5vYmosICJiIikKLSAgICAgICAgYXNzZXJ0IGhhc2F0dHIo
c3ViX2l0ZW0ub2JqLCAiYiIpCi0KLSAgICAgICAgIyBuZXcgYXBpIHNlcmVnYXRlcworICAgICAg
ICAjIG5ldyBhcGkgc2VncmVnYXRlcwogICAgICAgICBhc3NlcnQgbm90IGxpc3QoYmFzZV9pdGVt
Lml0ZXJfbWFya2VycyhuYW1lPSJiIikpCiAgICAgICAgIGFzc2VydCBub3QgbGlzdChzdWJfaXRl
bV9vdGhlci5pdGVyX21hcmtlcnMobmFtZT0iYiIpKQogICAgICAgICBhc3NlcnQgbGlzdChzdWJf
aXRlbS5pdGVyX21hcmtlcnMobmFtZT0iYiIpKQpAQCAtNjk3LDEwICs1NDksMTAgQEAgY2xhc3Mg
VGVzdEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgICAgIEBweXRlc3QubWFyay5jKGxvY2F0
aW9uPSJjbGFzcyIpCiAgICAgICAgICAgICBjbGFzcyBUZXN0OgogICAgICAgICAgICAgICAgIEBw
eXRlc3QubWFyay5jKGxvY2F0aW9uPSJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgZGVmIHRl
c3RfaGFzX293bigpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2hhc19vd24oc2VsZik6CiAg
ICAgICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2hhc19p
bmhlcml0ZWQoKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9oYXNfaW5oZXJpdGVkKHNlbGYp
OgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgIiIiCkBAIC03NDYsMjYgKzU5
OCw2IEBAIGNsYXNzIFRlc3RGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsi
a2V5d29yZDogKmhlbGxvKiJdKQogCi0gICAgQGlnbm9yZV9tYXJraW5mbwotICAgIGRlZiB0ZXN0
X21lcmdpbmdfbWFya2Vyc190d29fZnVuY3Rpb25zKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBw
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuaGVsbG8oInBvczEiLCB6PTQpCi0g
ICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuaGVsbG8oInBvczAiLCB6PTMpCi0gICAgICAgICAgICBk
ZWYgdGVzdF9mdW5jKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIKLSAgICAg
ICAgKQotICAgICAgICBpdGVtcywgcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMocCkKLSAg
ICAgICAgaXRlbSwgPSBpdGVtcwotICAgICAgICBrZXl3b3JkcyA9IGl0ZW0ua2V5d29yZHMKLSAg
ICAgICAgbWFya2VyID0ga2V5d29yZHNbImhlbGxvIl0KLSAgICAgICAgdmFsdWVzID0gbGlzdCht
YXJrZXIpCi0gICAgICAgIGFzc2VydCBsZW4odmFsdWVzKSA9PSAyCi0gICAgICAgIGFzc2VydCB2
YWx1ZXNbMF0uYXJncyA9PSAoInBvczAiLCkKLSAgICAgICAgYXNzZXJ0IHZhbHVlc1sxXS5hcmdz
ID09ICgicG9zMSIsKQotCiAgICAgZGVmIHRlc3Rfbm9fbWFya2VyX21hdGNoX29uX3VubWFya2Vk
X25hbWVzKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAog
ICAgICAgICAgICAgIiIiCkBAIC04MDcsNyArNjM5LDYgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uYWwo
b2JqZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKICAgICAgICAg
cmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKLSAgICBAaWdub3JlX21hcmtpbmZvCiAg
ICAgZGVmIHRlc3Rfa2V5d29yZF9hZGRlZF9mb3Jfc2Vzc2lvbihzZWxmLCB0ZXN0ZGlyKToKICAg
ICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKQEAgLTgyNyw3ICs2
NTgsNyBAQCBjbGFzcyBUZXN0RnVuY3Rpb25hbChvYmplY3QpOgogICAgICAgICAgICAgICAgIGFz
c2VydCAibWFyazIiIGluIHJlcXVlc3Qua2V5d29yZHMKICAgICAgICAgICAgICAgICBhc3NlcnQg
Im1hcmszIiBpbiByZXF1ZXN0LmtleXdvcmRzCiAgICAgICAgICAgICAgICAgYXNzZXJ0IDEwIG5v
dCBpbiByZXF1ZXN0LmtleXdvcmRzCi0gICAgICAgICAgICAgICAgbWFya2VyID0gcmVxdWVzdC5u
b2RlLmdldF9tYXJrZXIoIm1hcmsxIikKKyAgICAgICAgICAgICAgICBtYXJrZXIgPSByZXF1ZXN0
Lm5vZGUuZ2V0X2Nsb3Nlc3RfbWFya2VyKCJtYXJrMSIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0
IG1hcmtlci5uYW1lID09ICJtYXJrMSIKICAgICAgICAgICAgICAgICBhc3NlcnQgbWFya2VyLmFy
Z3MgPT0gKCkKICAgICAgICAgICAgICAgICBhc3NlcnQgbWFya2VyLmt3YXJncyA9PSB7fQpAQCAt
ODM3LDI1ICs2NjgsMjAgQEAgY2xhc3MgVGVzdEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAg
cmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEpCiAKICAgICBkZWYgYXNzZXJ0X21hcmtlcnMo
c2VsZiwgaXRlbXMsICoqZXhwZWN0ZWQpOgotICAgICAgICAiIiJhc3NlcnQgdGhhdCBnaXZlbiBp
dGVtcyBoYXZlIGV4cGVjdGVkIG1hcmtlciBuYW1lcyBhcHBsaWVkIHRvIHRoZW0uCi0gICAgICAg
IGV4cGVjdGVkIHNob3VsZCBiZSBhIGRpY3Qgb2YgKGl0ZW0gbmFtZSAtPiBzZXEgb2YgZXhwZWN0
ZWQgbWFya2VyIG5hbWVzKQorICAgICAgICAiIiJBc3NlcnQgdGhhdCBnaXZlbiBpdGVtcyBoYXZl
IGV4cGVjdGVkIG1hcmtlciBuYW1lcyBhcHBsaWVkIHRvIHRoZW0uCisgICAgICAgIGV4cGVjdGVk
IHNob3VsZCBiZSBhIGRpY3Qgb2YgKGl0ZW0gbmFtZSAtPiBzZXEgb2YgZXhwZWN0ZWQgbWFya2Vy
IG5hbWVzKS4KIAotICAgICAgICAuLiBub3RlOjogdGhpcyBjb3VsZCBiZSBtb3ZlZCB0byBgYHRl
c3RkaXJgYCBpZiBwcm92ZW4gdG8gYmUgdXNlZnVsCisgICAgICAgIE5vdGU6IHRoaXMgY291bGQg
YmUgbW92ZWQgdG8gYGB0ZXN0ZGlyYGAgaWYgcHJvdmVuIHRvIGJlIHVzZWZ1bAogICAgICAgICB0
byBvdGhlciBtb2R1bGVzLgogICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0Lm1hcmsg
aW1wb3J0IE1hcmtJbmZvCi0KICAgICAgICAgaXRlbXMgPSB7eC5uYW1lOiB4IGZvciB4IGluIGl0
ZW1zfQogICAgICAgICBmb3IgbmFtZSwgZXhwZWN0ZWRfbWFya2VycyBpbiBleHBlY3RlZC5pdGVt
cygpOgotICAgICAgICAgICAgbWFya2VycyA9IGl0ZW1zW25hbWVdLmtleXdvcmRzLl9tYXJrZXJz
Ci0gICAgICAgICAgICBtYXJrZXJfbmFtZXMgPSB7Ci0gICAgICAgICAgICAgICAgbmFtZSBmb3Ig
KG5hbWUsIHYpIGluIG1hcmtlcnMuaXRlbXMoKSBpZiBpc2luc3RhbmNlKHYsIE1hcmtJbmZvKQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXNzZXJ0IG1hcmtlcl9uYW1lcyA9PSBzZXQoZXhw
ZWN0ZWRfbWFya2VycykKKyAgICAgICAgICAgIG1hcmtlcnMgPSB7bS5uYW1lIGZvciBtIGluIGl0
ZW1zW25hbWVdLml0ZXJfbWFya2VycygpfQorICAgICAgICAgICAgYXNzZXJ0IG1hcmtlcnMgPT0g
c2V0KGV4cGVjdGVkX21hcmtlcnMpCiAKLSAgICBAcHl0ZXN0Lm1hcmsuaXNzdWUxNTQwCiAgICAg
QHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiKQogICAgIGRlZiB0ZXN0X21hcmtf
ZnJvbV9wYXJhbWV0ZXJzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiIjMTU0MCIiIgogICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKQEAgLTg3OCw5ICs3MDQsMzggQEAgY2xhc3MgVGVzdEZ1bmN0aW9uYWwob2Jq
ZWN0KToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKICAgICAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUoc2tpcHBlZD0xKQogCisgICAgZGVmIHRlc3RfcmVldmFsdWF0ZV9k
eW5hbWljX2V4cHIoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIiM3MzYwIiIiCisgICAgICAg
IHB5X2ZpbGUxID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgdGVzdF9yZWV2YWx1
YXRlX2R5bmFtaWNfZXhwcjE9IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAKLWNsYXNz
IFRlc3RLZXl3b3JkU2VsZWN0aW9uKG9iamVjdCk6CisgICAgICAgICAgICBza2lwID0gVHJ1ZQog
CisgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJza2lwIikKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X3Nob3VsZF9za2lwKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAg
ICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcHlfZmlsZTIgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICB0ZXN0X3JlZXZhbHVhdGVfZHluYW1pY19leHByMj0iIiIKKyAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgc2tpcCA9IEZhbHNlCisKKyAgICAgICAg
ICAgIEBweXRlc3QubWFyay5za2lwaWYoInNraXAiKQorICAgICAgICAgICAgZGVmIHRlc3Rfc2hv
dWxkX25vdF9za2lwKCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IFRydWUKKyAgICAgICAgIiIi
CisgICAgICAgICkKKworICAgICAgICBmaWxlX25hbWUxID0gb3MucGF0aC5iYXNlbmFtZShweV9m
aWxlMS5zdHJwYXRoKQorICAgICAgICBmaWxlX25hbWUyID0gb3MucGF0aC5iYXNlbmFtZShweV9m
aWxlMi5zdHJwYXRoKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oZmlsZV9u
YW1lMSwgZmlsZV9uYW1lMikKKyAgICAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEs
IHNraXBwZWQ9MSkKKworCitjbGFzcyBUZXN0S2V5d29yZFNlbGVjdGlvbjoKICAgICBkZWYgdGVz
dF9zZWxlY3Rfc2ltcGxlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBmaWxlX3Rlc3QgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTk4OCwxMCArODQzLDEyIEBAIGNs
YXNzIFRlc3RLZXl3b3JkU2VsZWN0aW9uKG9iamVjdCk6CiAgICAgICAgIHBhc3NlZCwgc2tpcHBl
ZCwgZmFpbGVkID0gcmVwcmVjLmNvdW50b3V0Y29tZXMoKQogICAgICAgICBhc3NlcnQgcGFzc2Vk
ICsgc2tpcHBlZCArIGZhaWxlZCA9PSAwCiAKLSAgICBkZWYgdGVzdF9ub19tYWdpY192YWx1ZXMo
c2VsZiwgdGVzdGRpcik6CisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAi
a2V5d29yZCIsIFsiX18iLCAiKyIsICIuLiJdLAorICAgICkKKyAgICBkZWYgdGVzdF9ub19tYWdp
Y192YWx1ZXMoc2VsZiwgdGVzdGRpciwga2V5d29yZDogc3RyKSAtPiBOb25lOgogICAgICAgICAi
IiJNYWtlIHN1cmUgdGhlIHRlc3RzIGRvIG5vdCBtYXRjaCBvbiBtYWdpYyB2YWx1ZXMsCi0gICAg
ICAgIG5vIGRvdWJsZSB1bmRlcnNjb3JlZCB2YWx1ZXMsIGxpa2UgJ19fZGljdF9fJywKLSAgICAg
ICAgYW5kIG5vIGluc3RhbmNlIHZhbHVlcywgbGlrZSAnKCknLgorICAgICAgICBubyBkb3VibGUg
dW5kZXJzY29yZWQgdmFsdWVzLCBsaWtlICdfX2RpY3RfXycgYW5kICcrJy4KICAgICAgICAgIiIi
CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTk5
OSw2MiArODU2LDQzIEBAIGNsYXNzIFRlc3RLZXl3b3JkU2VsZWN0aW9uKG9iamVjdCk6CiAgICAg
ICAgICIiIgogICAgICAgICApCiAKLSAgICAgICAgZGVmIGFzc2VydF90ZXN0X2lzX25vdF9zZWxl
Y3RlZChrZXl3b3JkKToKLSAgICAgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigi
LWsiLCBrZXl3b3JkLCBwKQotICAgICAgICAgICAgcGFzc2VkLCBza2lwcGVkLCBmYWlsZWQgPSBy
ZXByZWMuY291bnRvdXRjb21lcygpCi0gICAgICAgICAgICBkbGlzdCA9IHJlcHJlYy5nZXRjYWxs
cygicHl0ZXN0X2Rlc2VsZWN0ZWQiKQotICAgICAgICAgICAgYXNzZXJ0IHBhc3NlZCArIHNraXBw
ZWQgKyBmYWlsZWQgPT0gMAotICAgICAgICAgICAgZGVzZWxlY3RlZF90ZXN0cyA9IGRsaXN0WzBd
Lml0ZW1zCi0gICAgICAgICAgICBhc3NlcnQgbGVuKGRlc2VsZWN0ZWRfdGVzdHMpID09IDEKLQot
ICAgICAgICBhc3NlcnRfdGVzdF9pc19ub3Rfc2VsZWN0ZWQoIl9fIikKLSAgICAgICAgYXNzZXJ0
X3Rlc3RfaXNfbm90X3NlbGVjdGVkKCIoKSIpCi0KLQotQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KAotICAgICJhcmd2YWwsIGV4cGVjdGVkIiwKLSAgICBbCi0gICAgICAgICgKLSAgICAgICAgICAg
IHB5dGVzdC5tYXJrLnNraXAoKSgoMSwgMikpLAotICAgICAgICAgICAgUGFyYW1ldGVyU2V0KHZh
bHVlcz0oMSwgMiksIG1hcmtzPVtweXRlc3QubWFyay5za2lwXSwgaWQ9Tm9uZSksCi0gICAgICAg
ICksCi0gICAgICAgICgKLSAgICAgICAgICAgIHB5dGVzdC5tYXJrLnhmYWlsKHB5dGVzdC5tYXJr
LnNraXAoKSgoMSwgMikpKSwKLSAgICAgICAgICAgIFBhcmFtZXRlclNldCgKLSAgICAgICAgICAg
ICAgICB2YWx1ZXM9KDEsIDIpLCBtYXJrcz1bcHl0ZXN0Lm1hcmsueGZhaWwsIHB5dGVzdC5tYXJr
LnNraXBdLCBpZD1Ob25lCi0gICAgICAgICAgICApLAotICAgICAgICApLAotICAgIF0sCi0pCi1A
cHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3MoImlnbm9yZSIpCi1kZWYgdGVzdF9wYXJhbWV0ZXJz
ZXRfZXh0cmFjdGZyb20oYXJndmFsLCBleHBlY3RlZCk6Ci0gICAgZXh0cmFjdGVkID0gUGFyYW1l
dGVyU2V0LmV4dHJhY3RfZnJvbShhcmd2YWwpCi0gICAgYXNzZXJ0IGV4dHJhY3RlZCA9PSBleHBl
Y3RlZAotCi0KLWRlZiB0ZXN0X2xlZ2FjeV90cmFuc2ZlcigpOgotCi0gICAgY2xhc3MgRmFrZU1v
ZHVsZShvYmplY3QpOgotICAgICAgICBweXRlc3RtYXJrID0gW10KKyAgICAgICAgcmVwcmVjID0g
dGVzdGRpci5pbmxpbmVfcnVuKCItayIsIGtleXdvcmQsIHApCisgICAgICAgIHBhc3NlZCwgc2tp
cHBlZCwgZmFpbGVkID0gcmVwcmVjLmNvdW50b3V0Y29tZXMoKQorICAgICAgICBkbGlzdCA9IHJl
cHJlYy5nZXRjYWxscygicHl0ZXN0X2Rlc2VsZWN0ZWQiKQorICAgICAgICBhc3NlcnQgcGFzc2Vk
ICsgc2tpcHBlZCArIGZhaWxlZCA9PSAwCisgICAgICAgIGRlc2VsZWN0ZWRfdGVzdHMgPSBkbGlz
dFswXS5pdGVtcworICAgICAgICBhc3NlcnQgbGVuKGRlc2VsZWN0ZWRfdGVzdHMpID09IDEKIAot
ICAgIGNsYXNzIEZha2VDbGFzcyhvYmplY3QpOgotICAgICAgICBweXRlc3RtYXJrID0gcHl0ZXN0
Lm1hcmsubm9mdW4KKyAgICBkZWYgdGVzdF9ub19tYXRjaF9kaXJlY3Rvcmllc19vdXRzaWRlX3Ro
ZV9zdWl0ZShzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIiYC1rYCBzaG91bGQgbm90IG1hdGNo
IGFnYWluc3QgZGlyZWN0b3JpZXMgY29udGFpbmluZyB0aGUgdGVzdCBzdWl0ZSAoIzcwNDApLiIi
IgorICAgICAgICB0ZXN0X2NvbnRlbnRzID0gIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9hYWEo
KTogcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfZGRkKCk6IHBhc3MKKyAgICAgICAgIiIiCisg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICoqeyJkZGQvdGVzdHMvX19p
bml0X18ucHkiOiAiIiwgImRkZC90ZXN0cy90ZXN0X2Zvby5weSI6IHRlc3RfY29udGVudHN9Cisg
ICAgICAgICkKIAotICAgIEBweXRlc3QubWFyay5mdW4KLSAgICBkZWYgZmFrZV9tZXRob2Qoc2Vs
Zik6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgZGVmIGdldF9jb2xsZWN0ZWRfbmFtZXMoKmFyZ3Mp
OgorICAgICAgICAgICAgXywgcmVjID0gdGVzdGRpci5pbmxpbmVfZ2VuaXRlbXMoKmFyZ3MpCisg
ICAgICAgICAgICBjYWxscyA9IHJlYy5nZXRjYWxscygicHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNo
IikKKyAgICAgICAgICAgIGFzc2VydCBsZW4oY2FsbHMpID09IDEKKyAgICAgICAgICAgIHJldHVy
biBbeC5uYW1lIGZvciB4IGluIGNhbGxzWzBdLnNlc3Npb24uaXRlbXNdCiAKLSAgICB0cmFuc2Zl
cl9tYXJrZXJzKGZha2VfbWV0aG9kLCBGYWtlQ2xhc3MsIEZha2VNb2R1bGUpCisgICAgICAgICMg
c2FuaXR5IGNoZWNrOiBjb2xsZWN0IGJvdGggdGVzdHMgaW4gbm9ybWFsIHJ1bnMKKyAgICAgICAg
YXNzZXJ0IGdldF9jb2xsZWN0ZWRfbmFtZXMoKSA9PSBbInRlc3RfYWFhIiwgInRlc3RfZGRkIl0K
IAotICAgICMgbGVnYWN5IG1hcmtzIHRyYW5zZmVyIHNtZWFyZWQKLSAgICBhc3NlcnQgZmFrZV9t
ZXRob2Qubm9mdW4KLSAgICBhc3NlcnQgZmFrZV9tZXRob2QuZnVuCi0gICAgIyBwcmlzdGluZSBt
YXJrcyBkb250IHRyYW5zZmVyCi0gICAgYXNzZXJ0IGZha2VfbWV0aG9kLnB5dGVzdG1hcmsgPT0g
W3B5dGVzdC5tYXJrLmZ1bi5tYXJrXQorICAgICAgICAjIGRvIG5vdCBjb2xsZWN0IGFueXRoaW5n
IGJhc2VkIG9uIG5hbWVzIG91dHNpZGUgdGhlIGNvbGxlY3Rpb24gdHJlZQorICAgICAgICBhc3Nl
cnQgZ2V0X2NvbGxlY3RlZF9uYW1lcygiLWsiLCB0ZXN0ZGlyLnRtcGRpci5iYXNlbmFtZSkgPT0g
W10KIAorICAgICAgICAjICItayBkZGQiIHNob3VsZCBvbmx5IGNvbGxlY3QgInRlc3RfZGRkIiwg
YnV0IG5vdAorICAgICAgICAjICd0ZXN0X2FhYScganVzdCBiZWNhdXNlIG9uZSBvZiBpdHMgcGFy
ZW50IGRpcmVjdG9yaWVzIGlzIG5hbWVkICJkZGQiOworICAgICAgICAjIHRoaXMgd2FzIG1hdGNo
ZWQgcHJldmlvdXNseSBiZWNhdXNlIFBhY2thZ2UubmFtZSB3b3VsZCBjb250YWluIHRoZSBmdWxs
IHBhdGgKKyAgICAgICAgIyB0byB0aGUgcGFja2FnZQorICAgICAgICBhc3NlcnQgZ2V0X2NvbGxl
Y3RlZF9uYW1lcygiLWsiLCAiZGRkIikgPT0gWyJ0ZXN0X2RkZCJdCiAKLWNsYXNzIFRlc3RNYXJr
RGVjb3JhdG9yKG9iamVjdCk6CiAKK2NsYXNzIFRlc3RNYXJrRGVjb3JhdG9yOgogICAgIEBweXRl
c3QubWFyay5wYXJhbWV0cml6ZSgKICAgICAgICAgImxocywgcmhzLCBleHBlY3RlZCIsCiAgICAg
ICAgIFsKQEAgLTEwNjcsMTEgKzkwNSwyNCBAQCBjbGFzcyBUZXN0TWFya0RlY29yYXRvcihvYmpl
Y3QpOgogICAgIGRlZiB0ZXN0X19lcV9fKHNlbGYsIGxocywgcmhzLCBleHBlY3RlZCk6CiAgICAg
ICAgIGFzc2VydCAobGhzID09IHJocykgPT0gZXhwZWN0ZWQKIAorICAgIGRlZiB0ZXN0X2FsaWFz
ZXMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbWQgPSBweXRlc3QubWFyay5mb28oMSwgIjIiLCB0
aHJlZT0zKQorICAgICAgICBhc3NlcnQgbWQubmFtZSA9PSAiZm9vIgorICAgICAgICBhc3NlcnQg
bWQuYXJncyA9PSAoMSwgIjIiKQorICAgICAgICBhc3NlcnQgbWQua3dhcmdzID09IHsidGhyZWUi
OiAzfQorCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgibWFyayIsIFtOb25lLCAiIiwgInNr
aXAiLCAieGZhaWwiXSkKIGRlZiB0ZXN0X3BhcmFtZXRlcnNldF9mb3JfcGFyYW1ldHJpemVfbWFy
a3ModGVzdGRpciwgbWFyayk6CiAgICAgaWYgbWFyayBpcyBub3QgTm9uZToKLSAgICAgICAgdGVz
dGRpci5tYWtlaW5pKCJbcHl0ZXN0XVxue309e30iLmZvcm1hdChFTVBUWV9QQVJBTUVURVJTRVRf
T1BUSU9OLCBtYXJrKSkKKyAgICAgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAgICAgIiIi
CisgICAgICAgIFtweXRlc3RdCisgICAgICAgIHt9PXt9CisgICAgICAgICIiIi5mb3JtYXQoCisg
ICAgICAgICAgICAgICAgRU1QVFlfUEFSQU1FVEVSU0VUX09QVElPTiwgbWFyaworICAgICAgICAg
ICAgKQorICAgICAgICApCiAKICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKICAg
ICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgcHl0ZXN0X2NvbmZpZ3VyZSwgZ2V0X2VtcHR5X3Bh
cmFtZXRlcnNldF9tYXJrCkBAIC0xMDg3LDYgKzkzOCw0OCBAQCBkZWYgdGVzdF9wYXJhbWV0ZXJz
ZXRfZm9yX3BhcmFtZXRyaXplX21hcmtzKHRlc3RkaXIsIG1hcmspOgogICAgICAgICBhc3NlcnQg
cmVzdWx0X21hcmsua3dhcmdzLmdldCgicnVuIikgaXMgRmFsc2UKIAogCitkZWYgdGVzdF9wYXJh
bWV0ZXJzZXRfZm9yX2ZhaWxfYXRfY29sbGVjdCh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2Vp
bmkoCisgICAgICAgICIiIgorICAgIFtweXRlc3RdCisgICAge309ZmFpbF9hdF9jb2xsZWN0Cisg
ICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIEVNUFRZX1BBUkFNRVRFUlNFVF9PUFRJT04KKyAg
ICAgICAgKQorICAgICkKKworICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWcoKQorICAg
IGZyb20gX3B5dGVzdC5tYXJrIGltcG9ydCBweXRlc3RfY29uZmlndXJlLCBnZXRfZW1wdHlfcGFy
YW1ldGVyc2V0X21hcmsKKworICAgIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKQorCisgICAgd2l0
aCBweXRlc3QucmFpc2VzKAorICAgICAgICBDb2xsZWN0b3IuQ29sbGVjdEVycm9yLAorICAgICAg
ICBtYXRjaD1yIkVtcHR5IHBhcmFtZXRlciBzZXQgaW4gJ3B5dGVzdF9jb25maWd1cmUnIGF0IGxp
bmUgXGRcZCsiLAorICAgICk6CisgICAgICAgIGdldF9lbXB0eV9wYXJhbWV0ZXJzZXRfbWFyayhj
b25maWcsIFsiYSJdLCBweXRlc3RfY29uZmlndXJlKQorCisgICAgcDEgPSB0ZXN0ZGlyLm1ha2Vw
eWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJlbXB0eSIsIFtdKQorICAgICAgICBkZWYgdGVzdCgpOgor
ICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3Qoc3RyKHAxKSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisg
ICAgICAgIFsKKyAgICAgICAgICAgICJjb2xsZWN0ZWQgMCBpdGVtcyAvIDEgZXJyb3IiLAorICAg
ICAgICAgICAgIiogRVJST1IgY29sbGVjdGluZyB0ZXN0X3BhcmFtZXRlcnNldF9mb3JfZmFpbF9h
dF9jb2xsZWN0LnB5ICoiLAorICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBzZXQgaW4gJ3Rl
c3QnIGF0IGxpbmUgMyIsCisgICAgICAgICAgICAiKj0gMSBlcnJvciBpbiAqIiwKKyAgICAgICAg
XQorICAgICkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5JTlRFUlJVUFRFRAor
CisKIGRlZiB0ZXN0X3BhcmFtZXRlcnNldF9mb3JfcGFyYW1ldHJpemVfYmFkX21hcmtuYW1lKHRl
c3RkaXIpOgogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuVXNhZ2VFcnJvcik6CiAgICAg
ICAgIHRlc3RfcGFyYW1ldGVyc2V0X2Zvcl9wYXJhbWV0cml6ZV9tYXJrcyh0ZXN0ZGlyLCAiYmFk
IikKQEAgLTExMTksMTYgKzEwMTIsODkgQEAgZGVmIHRlc3RfbWFya19leHByZXNzaW9uc19ub19z
bWVhcih0ZXN0ZGlyKToKICAgICBkZXNlbGVjdGVkX3Rlc3RzID0gZGxpc3RbMF0uaXRlbXMKICAg
ICBhc3NlcnQgbGVuKGRlc2VsZWN0ZWRfdGVzdHMpID09IDEKIAorICAgICMgdG9kbzogZml4ZWQK
ICAgICAjIGtleXdvcmRzIHNtZWFyIC0gZXhwZWN0ZWQgYmVoYXZpb3VyCi0gICAgcmVwcmVjX2tl
eXdvcmRzID0gdGVzdGRpci5pbmxpbmVfcnVuKCItayIsICJGT08iKQotICAgIHBhc3NlZF9rLCBz
a2lwcGVkX2ssIGZhaWxlZF9rID0gcmVwcmVjX2tleXdvcmRzLmNvdW50b3V0Y29tZXMoKQotICAg
IGFzc2VydCBwYXNzZWRfayA9PSAyCi0gICAgYXNzZXJ0IHNraXBwZWRfayA9PSBmYWlsZWRfayA9
PSAwCi0KLQotZGVmIHRlc3RfYWRkbWFya2VyX2dldG1hcmtlcigpOgotICAgIG5vZGUgPSBOb2Rl
KCJUZXN0IiwgY29uZmlnPW1vY2suTW9jaygpLCBzZXNzaW9uPW1vY2suTW9jaygpLCBub2RlaWQ9
IlRlc3QiKQotICAgIG5vZGUuYWRkX21hcmtlcihweXRlc3QubWFyay5hKDEpKQotICAgIG5vZGUu
YWRkX21hcmtlcigiYiIpCi0gICAgbm9kZS5nZXRfbWFya2VyKCJhIikuY29tYmluZWQKLSAgICBu
b2RlLmdldF9tYXJrZXIoImIiKS5jb21iaW5lZAorICAgICMgcmVwcmVjX2tleXdvcmRzID0gdGVz
dGRpci5pbmxpbmVfcnVuKCItayIsICJGT08iKQorICAgICMgcGFzc2VkX2ssIHNraXBwZWRfaywg
ZmFpbGVkX2sgPSByZXByZWNfa2V5d29yZHMuY291bnRvdXRjb21lcygpCisgICAgIyBhc3NlcnQg
cGFzc2VkX2sgPT0gMgorICAgICMgYXNzZXJ0IHNraXBwZWRfayA9PSBmYWlsZWRfayA9PSAwCisK
KworZGVmIHRlc3RfYWRkbWFya2VyX29yZGVyKCk6CisgICAgc2Vzc2lvbiA9IG1vY2suTW9jaygp
CisgICAgc2Vzc2lvbi5vd25fbWFya2VycyA9IFtdCisgICAgc2Vzc2lvbi5wYXJlbnQgPSBOb25l
CisgICAgc2Vzc2lvbi5ub2RlaWQgPSAiIgorICAgIG5vZGUgPSBOb2RlLmZyb21fcGFyZW50KHNl
c3Npb24sIG5hbWU9IlRlc3QiKQorICAgIG5vZGUuYWRkX21hcmtlcigiZm9vIikKKyAgICBub2Rl
LmFkZF9tYXJrZXIoImJhciIpCisgICAgbm9kZS5hZGRfbWFya2VyKCJiYXoiLCBhcHBlbmQ9RmFs
c2UpCisgICAgZXh0cmFjdGVkID0gW3gubmFtZSBmb3IgeCBpbiBub2RlLml0ZXJfbWFya2Vycygp
XQorICAgIGFzc2VydCBleHRyYWN0ZWQgPT0gWyJiYXoiLCAiZm9vIiwgImJhciJdCisKKworQHB5
dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiKQorZGVmIHRlc3RfbWFya2Vyc19mcm9t
X3BhcmFtZXRyaXplKHRlc3RkaXIpOgorICAgICIiIiMzNjA1IiIiCisgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIGZp
cnN0X2N1c3RvbV9tYXJrID0gcHl0ZXN0Lm1hcmsuY3VzdG9tX21hcmtlcgorICAgICAgICBjdXN0
b21fbWFyayA9IHB5dGVzdC5tYXJrLmN1c3RvbV9tYXJrCisgICAgICAgIEBweXRlc3QuZml4dHVy
ZShhdXRvdXNlPVRydWUpCisgICAgICAgIGRlZiB0cmlnZ2VyKHJlcXVlc3QpOgorICAgICAgICAg
ICAgY3VzdG9tX21hcmsgPSBsaXN0KHJlcXVlc3Qubm9kZS5pdGVyX21hcmtlcnMoJ2N1c3RvbV9t
YXJrJykpCisgICAgICAgICAgICBwcmludCgiQ3VzdG9tIG1hcmsgJXMiICUgY3VzdG9tX21hcmsp
CisKKyAgICAgICAgQGN1c3RvbV9tYXJrKCJjdXN0b20gbWFyayBub24gcGFyYW1ldHJpemVkIikK
KyAgICAgICAgZGVmIHRlc3RfY3VzdG9tX21hcmtfbm9uX3BhcmFtZXRyaXplZCgpOgorICAgICAg
ICAgICAgcHJpbnQoIkhleSBmcm9tIHRlc3QiKQorCisgICAgICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgKKyAgICAgICAgICAgICJvYmpfdHlwZSIsCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgZmlyc3RfY3VzdG9tX21hcmsoImZpcnN0IGN1c3RvbSBtYXJrIikoInRlbXBsYXRl
IiksCisgICAgICAgICAgICAgICAgcHl0ZXN0LnBhcmFtKCAjIFRoaW5rIHRoaXMgc2hvdWxkIGJl
IHJlY29tbWVuZGVkIHdheT8KKyAgICAgICAgICAgICAgICAgICAgImRpc2siLAorICAgICAgICAg
ICAgICAgICAgICBtYXJrcz1jdXN0b21fbWFyaygnY3VzdG9tIG1hcmsxJykKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgIGN1c3RvbV9tYXJrKCJjdXN0b20gbWFyazIiKSgidm0i
KSwgICMgVHJpZWQgYWxzbyB0aGlzCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICAgICAg
ZGVmIHRlc3RfY3VzdG9tX21hcmtfcGFyYW1ldHJpemVkKG9ial90eXBlKToKKyAgICAgICAgICAg
IHByaW50KCJvYmpfdHlwZSBpczoiLCBvYmpfdHlwZSkKKyAgICAiIiIKKyAgICApCisKKyAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhw
YXNzZWQ9NCkKKworCitkZWYgdGVzdF9weXRlc3RfcGFyYW1faWRfcmVxdWlyZXNfc3RyaW5nKCkg
LT4gTm9uZToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKSBhcyBleGNpbmZvOgor
ICAgICAgICBweXRlc3QucGFyYW0oaWQ9VHJ1ZSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQor
ICAgIChtc2csKSA9IGV4Y2luZm8udmFsdWUuYXJncworICAgIGFzc2VydCBtc2cgPT0gIkV4cGVj
dGVkIGlkIHRvIGJlIGEgc3RyaW5nLCBnb3QgPGNsYXNzICdib29sJz46IFRydWUiCisKKworQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzIiwgKE5vbmUsICJoZWxsbyB3b3JsZCIpKQorZGVmIHRl
c3RfcHl0ZXN0X3BhcmFtX2lkX2FsbG93c19ub25lX29yX3N0cmluZyhzKToKKyAgICBhc3NlcnQg
cHl0ZXN0LnBhcmFtKGlkPXMpCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHByIiwg
KCJOT1QgaW50ZXJuYWxfZXJyIiwgIk5PVCAoaW50ZXJuYWxfZXJyKSIsICJib2d1cy8iKSkKK2Rl
ZiB0ZXN0X21hcmtlcl9leHByX2V2YWxfZmFpbHVyZV9oYW5kbGluZyh0ZXN0ZGlyLCBleHByKToK
KyAgICBmb28gPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBv
cnQgcHl0ZXN0CisKKyAgICAgICAgQHB5dGVzdC5tYXJrLmludGVybmFsX2VycgorICAgICAgICBk
ZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgKQorICAg
IGV4cGVjdGVkID0gIkVSUk9SOiBXcm9uZyBleHByZXNzaW9uIHBhc3NlZCB0byAnLW0nOiB7fTog
KiIuZm9ybWF0KGV4cHIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoZm9vLCAiLW0i
LCBleHByKQorICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcyhbZXhwZWN0ZWRdKQorICAg
IGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLlVTQUdFX0VSUk9SCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbWFya19leHByZXNzaW9uLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X21hcmtfZXhwcmVzc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmZhY2EwMmQ5MzMwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9tYXJrX2V4cHJlc3Npb24ucHkKQEAgLTAsMCArMSwxNjkgQEAKK2Zy
b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3Qu
bWFyay5leHByZXNzaW9uIGltcG9ydCBFeHByZXNzaW9uCitmcm9tIF9weXRlc3QubWFyay5leHBy
ZXNzaW9uIGltcG9ydCBQYXJzZUVycm9yCisKKworZGVmIGV2YWx1YXRlKGlucHV0OiBzdHIsIG1h
dGNoZXI6IENhbGxhYmxlW1tzdHJdLCBib29sXSkgLT4gYm9vbDoKKyAgICByZXR1cm4gRXhwcmVz
c2lvbi5jb21waWxlKGlucHV0KS5ldmFsdWF0ZShtYXRjaGVyKQorCisKK2RlZiB0ZXN0X2VtcHR5
X2lzX2ZhbHNlKCkgLT4gTm9uZToKKyAgICBhc3NlcnQgbm90IGV2YWx1YXRlKCIiLCBsYW1iZGEg
aWRlbnQ6IEZhbHNlKQorICAgIGFzc2VydCBub3QgZXZhbHVhdGUoIiIsIGxhbWJkYSBpZGVudDog
VHJ1ZSkKKyAgICBhc3NlcnQgbm90IGV2YWx1YXRlKCIgICAiLCBsYW1iZGEgaWRlbnQ6IEZhbHNl
KQorICAgIGFzc2VydCBub3QgZXZhbHVhdGUoIlx0IiwgbGFtYmRhIGlkZW50OiBGYWxzZSkKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgKCJleHByIiwgImV4cGVjdGVkIiksCisg
ICAgKAorICAgICAgICAoInRydWUiLCBUcnVlKSwKKyAgICAgICAgKCJ0cnVlIiwgVHJ1ZSksCisg
ICAgICAgICgiZmFsc2UiLCBGYWxzZSksCisgICAgICAgICgibm90IHRydWUiLCBGYWxzZSksCisg
ICAgICAgICgibm90IGZhbHNlIiwgVHJ1ZSksCisgICAgICAgICgibm90IG5vdCB0cnVlIiwgVHJ1
ZSksCisgICAgICAgICgibm90IG5vdCBmYWxzZSIsIEZhbHNlKSwKKyAgICAgICAgKCJ0cnVlIGFu
ZCB0cnVlIiwgVHJ1ZSksCisgICAgICAgICgidHJ1ZSBhbmQgZmFsc2UiLCBGYWxzZSksCisgICAg
ICAgICgiZmFsc2UgYW5kIHRydWUiLCBGYWxzZSksCisgICAgICAgICgidHJ1ZSBhbmQgdHJ1ZSBh
bmQgdHJ1ZSIsIFRydWUpLAorICAgICAgICAoInRydWUgYW5kIHRydWUgYW5kIGZhbHNlIiwgRmFs
c2UpLAorICAgICAgICAoInRydWUgYW5kIHRydWUgYW5kIG5vdCB0cnVlIiwgRmFsc2UpLAorICAg
ICAgICAoImZhbHNlIG9yIGZhbHNlIiwgRmFsc2UpLAorICAgICAgICAoImZhbHNlIG9yIHRydWUi
LCBUcnVlKSwKKyAgICAgICAgKCJ0cnVlIG9yIHRydWUiLCBUcnVlKSwKKyAgICAgICAgKCJ0cnVl
IG9yIHRydWUgb3IgZmFsc2UiLCBUcnVlKSwKKyAgICAgICAgKCJ0cnVlIGFuZCB0cnVlIG9yIGZh
bHNlIiwgVHJ1ZSksCisgICAgICAgICgibm90IHRydWUgb3IgdHJ1ZSIsIFRydWUpLAorICAgICAg
ICAoIihub3QgdHJ1ZSkgb3IgdHJ1ZSIsIFRydWUpLAorICAgICAgICAoIm5vdCAodHJ1ZSBvciB0
cnVlKSIsIEZhbHNlKSwKKyAgICAgICAgKCJ0cnVlIGFuZCB0cnVlIG9yIGZhbHNlIGFuZCBmYWxz
ZSIsIFRydWUpLAorICAgICAgICAoInRydWUgYW5kICh0cnVlIG9yIGZhbHNlKSBhbmQgZmFsc2Ui
LCBGYWxzZSksCisgICAgICAgICgidHJ1ZSBhbmQgKHRydWUgb3IgKG5vdCAobm90IGZhbHNlKSkp
IGFuZCBmYWxzZSIsIEZhbHNlKSwKKyAgICApLAorKQorZGVmIHRlc3RfYmFzaWMoZXhwcjogc3Ry
LCBleHBlY3RlZDogYm9vbCkgLT4gTm9uZToKKyAgICBtYXRjaGVyID0geyJ0cnVlIjogVHJ1ZSwg
ImZhbHNlIjogRmFsc2V9Ll9fZ2V0aXRlbV9fCisgICAgYXNzZXJ0IGV2YWx1YXRlKGV4cHIsIG1h
dGNoZXIpIGlzIGV4cGVjdGVkCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICgi
ZXhwciIsICJleHBlY3RlZCIpLAorICAgICgKKyAgICAgICAgKCIgICAgICAgICAgICAgICB0cnVl
ICAgICAgICAgICAiLCBUcnVlKSwKKyAgICAgICAgKCIgICAgICAgICAgICAgICAoKCgoKCh0cnVl
KSkpKSkpICAgICAgICAgICAiLCBUcnVlKSwKKyAgICAgICAgKCIgICAgICggICAgICAgICAoKFx0
ICAoKCh0cnVlKSkpKSkgIFx0ICAgXHQpIiwgVHJ1ZSksCisgICAgICAgICgiKCAgICAgdHJ1ZSAg
ICAgYW5kICAgKCgoZmFsc2UpKSkpIiwgRmFsc2UpLAorICAgICAgICAoIm5vdCBub3Qgbm90IG5v
dCB0cnVlIiwgVHJ1ZSksCisgICAgICAgICgibm90IG5vdCBub3Qgbm90IG5vdCB0cnVlIiwgRmFs
c2UpLAorICAgICksCispCitkZWYgdGVzdF9zeW50YXhfb2RkZXRpZXMoZXhwcjogc3RyLCBleHBl
Y3RlZDogYm9vbCkgLT4gTm9uZToKKyAgICBtYXRjaGVyID0geyJ0cnVlIjogVHJ1ZSwgImZhbHNl
IjogRmFsc2V9Ll9fZ2V0aXRlbV9fCisgICAgYXNzZXJ0IGV2YWx1YXRlKGV4cHIsIG1hdGNoZXIp
IGlzIGV4cGVjdGVkCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICgiZXhwciIs
ICJjb2x1bW4iLCAibWVzc2FnZSIpLAorICAgICgKKyAgICAgICAgKCIoIiwgMiwgImV4cGVjdGVk
IG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBlbmQgb2YgaW5wdXQi
KSwKKyAgICAgICAgKCIgKCIsIDMsICJleHBlY3RlZCBub3QgT1IgbGVmdCBwYXJlbnRoZXNpcyBP
UiBpZGVudGlmaWVyOyBnb3QgZW5kIG9mIGlucHV0IiwpLAorICAgICAgICAoCisgICAgICAgICAg
ICAiKSIsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgImV4cGVjdGVkIG5vdCBPUiBsZWZ0
IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCByaWdodCBwYXJlbnRoZXNpcyIsCisgICAg
ICAgICksCisgICAgICAgICgKKyAgICAgICAgICAgICIpICIsCisgICAgICAgICAgICAxLAorICAg
ICAgICAgICAgImV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7
IGdvdCByaWdodCBwYXJlbnRoZXNpcyIsCisgICAgICAgICksCisgICAgICAgICgibm90IiwgNCwg
ImV4cGVjdGVkIG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBlbmQg
b2YgaW5wdXQiLCksCisgICAgICAgICgKKyAgICAgICAgICAgICJub3Qgbm90IiwKKyAgICAgICAg
ICAgIDgsCisgICAgICAgICAgICAiZXhwZWN0ZWQgbm90IE9SIGxlZnQgcGFyZW50aGVzaXMgT1Ig
aWRlbnRpZmllcjsgZ290IGVuZCBvZiBpbnB1dCIsCisgICAgICAgICksCisgICAgICAgICgKKyAg
ICAgICAgICAgICIobm90KSIsCisgICAgICAgICAgICA1LAorICAgICAgICAgICAgImV4cGVjdGVk
IG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCByaWdodCBwYXJlbnRo
ZXNpcyIsCisgICAgICAgICksCisgICAgICAgICgiYW5kIiwgMSwgImV4cGVjdGVkIG5vdCBPUiBs
ZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBhbmQiKSwKKyAgICAgICAgKAorICAg
ICAgICAgICAgImlkZW50IGFuZCIsCisgICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICJleHBl
Y3RlZCBub3QgT1IgbGVmdCBwYXJlbnRoZXNpcyBPUiBpZGVudGlmaWVyOyBnb3QgZW5kIG9mIGlu
cHV0IiwKKyAgICAgICAgKSwKKyAgICAgICAgKCJpZGVudCBhbmQgb3IiLCAxMSwgImV4cGVjdGVk
IG5vdCBPUiBsZWZ0IHBhcmVudGhlc2lzIE9SIGlkZW50aWZpZXI7IGdvdCBvciIsKSwKKyAgICAg
ICAgKCJpZGVudCBpZGVudCIsIDcsICJleHBlY3RlZCBlbmQgb2YgaW5wdXQ7IGdvdCBpZGVudGlm
aWVyIiksCisgICAgKSwKKykKK2RlZiB0ZXN0X3N5bnRheF9lcnJvcnMoZXhwcjogc3RyLCBjb2x1
bW46IGludCwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhQ
YXJzZUVycm9yKSBhcyBleGNpbmZvOgorICAgICAgICBldmFsdWF0ZShleHByLCBsYW1iZGEgaWRl
bnQ6IFRydWUpCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29sdW1uID09IGNvbHVtbgorICAg
IGFzc2VydCBleGNpbmZvLnZhbHVlLm1lc3NhZ2UgPT0gbWVzc2FnZQorCisKK0BweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgKKyAgICAiaWRlbnQiLAorICAgICgKKyAgICAgICAgIi4iLAorICAgICAg
ICAiLi4uIiwKKyAgICAgICAgIjo6OiIsCisgICAgICAgICJhOjo6YyIsCisgICAgICAgICJhKy1i
IiwKKyAgICAgICAgIteQ15HXkteTIiwKKyAgICAgICAgImFh15DXkdeS15NjYyIsCisgICAgICAg
ICJhW2JjZF0iLAorICAgICAgICAiMTIzNCIsCisgICAgICAgICIxMjM0YWJjZCIsCisgICAgICAg
ICIxMjM0YW5kIiwKKyAgICAgICAgIm5vdGFuZG9yIiwKKyAgICAgICAgIm5vdF9hbmRfb3IiLAor
ICAgICAgICAibm90W2FuZF1vciIsCisgICAgICAgICIxMjM0KzU2NzgiLAorICAgICAgICAiMTIz
LjIzMiIsCisgICAgICAgICJUcnVlIiwKKyAgICAgICAgIkZhbHNlIiwKKyAgICAgICAgIk5vbmUi
LAorICAgICAgICAiaWYiLAorICAgICAgICAiZWxzZSIsCisgICAgICAgICJ3aGlsZSIsCisgICAg
KSwKKykKK2RlZiB0ZXN0X3ZhbGlkX2lkZW50cyhpZGVudDogc3RyKSAtPiBOb25lOgorICAgIGFz
c2VydCBldmFsdWF0ZShpZGVudCwge2lkZW50OiBUcnVlfS5fX2dldGl0ZW1fXykKKworCitAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgImlkZW50IiwKKyAgICAoCisgICAgICAgICIvIiwK
KyAgICAgICAgIlxcIiwKKyAgICAgICAgIl4iLAorICAgICAgICAiKiIsCisgICAgICAgICI9IiwK
KyAgICAgICAgIiYiLAorICAgICAgICAiJSIsCisgICAgICAgICIkIiwKKyAgICAgICAgIiMiLAor
ICAgICAgICAiQCIsCisgICAgICAgICIhIiwKKyAgICAgICAgIn4iLAorICAgICAgICAieyIsCisg
ICAgICAgICJ9IiwKKyAgICAgICAgJyInLAorICAgICAgICAiJyIsCisgICAgICAgICJ8IiwKKyAg
ICAgICAgIjsiLAorICAgICAgICAi4oaQIiwKKyAgICApLAorKQorZGVmIHRlc3RfaW52YWxpZF9p
ZGVudHMoaWRlbnQ6IHN0cikgLT4gTm9uZToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUGFyc2VF
cnJvcik6CisgICAgICAgIGV2YWx1YXRlKGlkZW50LCBsYW1iZGEgaWRlbnQ6IFRydWUpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbWV0YS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rl
c3RpbmcvdGVzdF9tZXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMWFjZjZkMDlmNTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X21ldGEucHkKQEAgLTAsMCArMSwzNCBAQAorIiIiVGVzdCBpbXBvcnRpbmcgb2YgYWxsIGlu
dGVybmFsIHBhY2thZ2VzIGFuZCBtb2R1bGVzLgorCitUaGlzIGVuc3VyZXMgYWxsIGludGVybmFs
IHBhY2thZ2VzIGNhbiBiZSBpbXBvcnRlZCB3aXRob3V0IG5lZWRpbmcgdGhlIHB5dGVzdAorbmFt
ZXNwYWNlIGJlaW5nIHNldCwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIHRoZSBpbml0aWFsaXphdGlv
biBvZiB4ZGlzdC4KKyIiIgoraW1wb3J0IHBrZ3V0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBv
cnQgc3lzCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorCitpbXBvcnQgX3B5dGVzdAoraW1wb3J0
IHB5dGVzdAorCisKK2RlZiBfbW9kdWxlcygpIC0+IExpc3Rbc3RyXToKKyAgICBweXRlc3RfcGtn
ID0gX3B5dGVzdC5fX3BhdGhfXyAgIyB0eXBlOiBzdHIgICMgdHlwZTogaWdub3JlCisgICAgcmV0
dXJuIHNvcnRlZCgKKyAgICAgICAgbgorICAgICAgICBmb3IgXywgbiwgXyBpbiBwa2d1dGlsLndh
bGtfcGFja2FnZXMocHl0ZXN0X3BrZywgcHJlZml4PV9weXRlc3QuX19uYW1lX18gKyAiLiIpCisg
ICAgKQorCisKK0BweXRlc3QubWFyay5zbG93CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1v
ZHVsZSIsIF9tb2R1bGVzKCkpCitkZWYgdGVzdF9ub193YXJuaW5ncyhtb2R1bGU6IHN0cikgLT4g
Tm9uZToKKyAgICAjIGZtdDogb2ZmCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKCgKKyAgICAg
ICAgc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICItVyIsICJlcnJvciIsCisgICAgICAgICMgaHR0
cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81OTAxCisgICAgICAgICIt
VyIsICJpZ25vcmU6VGhlIHVzYWdlIG9mIGBjbXBgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUg
cmVtb3ZlZCBvbiBvciBhZnRlciAyMDIxLTA2LTAxLiAgUGxlYXNlIHVzZSBgZXFgIGFuZCBgb3Jk
ZXJgIGluc3RlYWQuOkRlcHJlY2F0aW9uV2FybmluZyIsICAjIG5vcWE6IEU1MDEKKyAgICAgICAg
Ii1jIiwgIl9faW1wb3J0X18oeyFyfSkiLmZvcm1hdChtb2R1bGUpLAorICAgICkpCisgICAgIyBm
bXQ6IG9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfbW9kaW1wb3J0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X21vZGltcG9ydC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjdiOTJhMGI2ZjY3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy90ZXN0X21vZGltcG9ydC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAg
QEAKLWltcG9ydCBweQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCBweXRl
c3QKLWltcG9ydCBfcHl0ZXN0Ci0KLU1PRFNFVCA9IFsKLSAgICB4Ci0gICAgZm9yIHggaW4gcHku
cGF0aC5sb2NhbChfcHl0ZXN0Ll9fZmlsZV9fKS5kaXJwYXRoKCkudmlzaXQoIioucHkiKQotICAg
IGlmIHgucHVyZWJhc2VuYW1lICE9ICJfX2luaXRfXyIKLV0KLQotCi1AcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoIm1vZGZpbGUiLCBNT0RTRVQsIGlkcz1sYW1iZGEgeDogeC5wdXJlYmFzZW5hbWUp
Ci1kZWYgdGVzdF9maWxlaW1wb3J0KG1vZGZpbGUpOgotICAgICMgdGhpcyB0ZXN0IGVuc3VyZXMg
YWxsIGludGVybmFsIHBhY2thZ2VzIGNhbiBpbXBvcnQKLSAgICAjIHdpdGhvdXQgbmVlZGluZyB0
aGUgcHl0ZXN0IG5hbWVzcGFjZSBiZWluZyBzZXQKLSAgICAjIHRoaXMgaXMgY3JpdGljYWwgZm9y
IHRoZSBpbml0aWFsaXphdGlvbiBvZiB4ZGlzdAotCi0gICAgcmVzID0gc3VicHJvY2Vzcy5jYWxs
KAotICAgICAgICBbCi0gICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICIt
YyIsCi0gICAgICAgICAgICAiaW1wb3J0IHN5cywgcHk7IHB5LnBhdGgubG9jYWwoc3lzLmFyZ3Zb
MV0pLnB5aW1wb3J0KCkiLAotICAgICAgICAgICAgbW9kZmlsZS5zdHJwYXRoLAotICAgICAgICBd
Ci0gICAgKQotICAgIGlmIHJlczoKLSAgICAgICAgcHl0ZXN0LmZhaWwoImNvbW1hbmQgcmVzdWx0
ICVzIiAlIHJlcykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tb25rZXlw
YXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tb25rZXlwYXRjaC5weQppbmRleCBj
Mjk4Y2UwZDkyOTAuLmZlYThhMjhmYmE4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X21vbmtleXBhdGNoLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tb25r
ZXlwYXRjaC5weQpAQCAtMSwxNCArMSwyMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IG9zCitpbXBvcnQg
cmUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXh0d3JhcAorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QK
K2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmF0b3IKKworaW1wb3J0IHB5CiAKIGltcG9ydCBweXRl
c3QKK2Zyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKIGZyb20gX3B5dGVz
dC5tb25rZXlwYXRjaCBpbXBvcnQgTW9ua2V5UGF0Y2gKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBp
bXBvcnQgVGVzdGRpcgorCitpZiBUWVBFX0NIRUNLSU5HOgorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBUeXBlCiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYgbXAoKToKK2RlZiBtcCgpIC0+IEdlbmVy
YXRvcltNb25rZXlQYXRjaCwgTm9uZSwgTm9uZV06CiAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAg
ICBzeXNfcGF0aCA9IGxpc3Qoc3lzLnBhdGgpCiAgICAgeWllbGQgTW9ua2V5UGF0Y2goKQpAQCAt
MTYsMTUgKzI1LDE0IEBAIGRlZiBtcCgpOgogICAgIG9zLmNoZGlyKGN3ZCkKIAogCi1kZWYgdGVz
dF9zZXRhdHRyKCk6Ci0KLSAgICBjbGFzcyBBKG9iamVjdCk6CitkZWYgdGVzdF9zZXRhdHRyKCkg
LT4gTm9uZToKKyAgICBjbGFzcyBBOgogICAgICAgICB4ID0gMQogCiAgICAgbW9ua2V5cGF0Y2gg
PSBNb25rZXlQYXRjaCgpCi0gICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgIm1vbmtl
eXBhdGNoLnNldGF0dHIoQSwgJ25vdGV4aXN0cycsIDIpIikKKyAgICBweXRlc3QucmFpc2VzKEF0
dHJpYnV0ZUVycm9yLCBtb25rZXlwYXRjaC5zZXRhdHRyLCBBLCAibm90ZXhpc3RzIiwgMikKICAg
ICBtb25rZXlwYXRjaC5zZXRhdHRyKEEsICJ5IiwgMiwgcmFpc2luZz1GYWxzZSkKLSAgICBhc3Nl
cnQgQS55ID09IDIKKyAgICBhc3NlcnQgQS55ID09IDIgICMgdHlwZTogaWdub3JlCiAgICAgbW9u
a2V5cGF0Y2gudW5kbygpCiAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKEEsICJ5IikKIApAQCAtNDAs
NTIgKzQ4LDU0IEBAIGRlZiB0ZXN0X3NldGF0dHIoKToKICAgICBtb25rZXlwYXRjaC51bmRvKCkg
ICMgZG91YmxlLXVuZG8gbWFrZXMgbm8gbW9kaWZpY2F0aW9uCiAgICAgYXNzZXJ0IEEueCA9PSA1
CiAKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cihBLCAieSIpICAjIHR5cGU6IGlnbm9yZVtjYWxsLW92ZXJsb2FkXQogCi1jbGFz
cyBUZXN0U2V0YXR0cldpdGhJbXBvcnRQYXRoKG9iamVjdCk6CiAKLSAgICBkZWYgdGVzdF9zdHJp
bmdfZXhwcmVzc2lvbihzZWxmLCBtb25rZXlwYXRjaCk6CitjbGFzcyBUZXN0U2V0YXR0cldpdGhJ
bXBvcnRQYXRoOgorICAgIGRlZiB0ZXN0X3N0cmluZ19leHByZXNzaW9uKHNlbGYsIG1vbmtleXBh
dGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigi
b3MucGF0aC5hYnNwYXRoIiwgbGFtYmRhIHg6ICJoZWxsbzIiKQogICAgICAgICBhc3NlcnQgb3Mu
cGF0aC5hYnNwYXRoKCIxMjMiKSA9PSAiaGVsbG8yIgogCi0gICAgZGVmIHRlc3Rfc3RyaW5nX2V4
cHJlc3Npb25fY2xhc3Moc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgIGRlZiB0ZXN0X3N0cmluZ19l
eHByZXNzaW9uX2NsYXNzKHNlbGYsIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToK
ICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigiX3B5dGVzdC5jb25maWcuQ29uZmlnIiwgNDIp
CiAgICAgICAgIGltcG9ydCBfcHl0ZXN0CiAKLSAgICAgICAgYXNzZXJ0IF9weXRlc3QuY29uZmln
LkNvbmZpZyA9PSA0MgorICAgICAgICBhc3NlcnQgX3B5dGVzdC5jb25maWcuQ29uZmlnID09IDQy
ICAjIHR5cGU6IGlnbm9yZQogCi0gICAgZGVmIHRlc3RfdW5pY29kZV9zdHJpbmcoc2VsZiwgbW9u
a2V5cGF0Y2gpOgorICAgIGRlZiB0ZXN0X3VuaWNvZGVfc3RyaW5nKHNlbGYsIG1vbmtleXBhdGNo
OiBNb25rZXlQYXRjaCkgLT4gTm9uZToKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cigiX3B5
dGVzdC5jb25maWcuQ29uZmlnIiwgNDIpCiAgICAgICAgIGltcG9ydCBfcHl0ZXN0CiAKLSAgICAg
ICAgYXNzZXJ0IF9weXRlc3QuY29uZmlnLkNvbmZpZyA9PSA0MgorICAgICAgICBhc3NlcnQgX3B5
dGVzdC5jb25maWcuQ29uZmlnID09IDQyICAjIHR5cGU6IGlnbm9yZQogICAgICAgICBtb25rZXlw
YXRjaC5kZWxhdHRyKCJfcHl0ZXN0LmNvbmZpZy5Db25maWciKQogCi0gICAgZGVmIHRlc3Rfd3Jv
bmdfdGFyZ2V0KHNlbGYsIG1vbmtleXBhdGNoKToKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhUeXBl
RXJyb3IsIGxhbWJkYTogbW9ua2V5cGF0Y2guc2V0YXR0cihOb25lLCBOb25lKSkKKyAgICBkZWYg
dGVzdF93cm9uZ190YXJnZXQoc2VsZiwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoKSAtPiBOb25l
OgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG1v
bmtleXBhdGNoLnNldGF0dHIoTm9uZSwgTm9uZSkgICMgdHlwZTogaWdub3JlW2NhbGwtb3Zlcmxv
YWRdCiAKLSAgICBkZWYgdGVzdF91bmtub3duX2ltcG9ydChzZWxmLCBtb25rZXlwYXRjaCk6Ci0g
ICAgICAgIHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IsIGxhbWJkYTogbW9ua2V5cGF0Y2guc2V0
YXR0cigidW5rbjEyMy5jbGFzc3giLCBOb25lKSkKKyAgICBkZWYgdGVzdF91bmtub3duX2ltcG9y
dChzZWxmLCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBtb25rZXlwYXRjaC5zZXRh
dHRyKCJ1bmtuMTIzLmNsYXNzeCIsIE5vbmUpCiAKLSAgICBkZWYgdGVzdF91bmtub3duX2F0dHIo
c2VsZiwgbW9ua2V5cGF0Y2gpOgotICAgICAgICBweXRlc3QucmFpc2VzKAotICAgICAgICAgICAg
QXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9ua2V5cGF0Y2guc2V0YXR0cigib3MucGF0aC5xd2Vx
d2UiLCBOb25lKQotICAgICAgICApCisgICAgZGVmIHRlc3RfdW5rbm93bl9hdHRyKHNlbGYsIG1v
bmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRlc3QucmFp
c2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoIm9z
LnBhdGgucXdlcXdlIiwgTm9uZSkKIAotICAgIGRlZiB0ZXN0X3Vua25vd25fYXR0cl9ub25fcmFp
c2luZyhzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRlc3RfdW5rbm93bl9hdHRyX25vbl9y
YWlzaW5nKHNlbGYsIG1vbmtleXBhdGNoOiBNb25rZXlQYXRjaCkgLT4gTm9uZToKICAgICAgICAg
IyBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QvaXNzdWVzLzc0NgogICAgICAg
ICBtb25rZXlwYXRjaC5zZXRhdHRyKCJvcy5wYXRoLnF3ZXF3ZSIsIDQyLCByYWlzaW5nPUZhbHNl
KQotICAgICAgICBhc3NlcnQgb3MucGF0aC5xd2Vxd2UgPT0gNDIKKyAgICAgICAgYXNzZXJ0IG9z
LnBhdGgucXdlcXdlID09IDQyICAjIHR5cGU6IGlnbm9yZQogCi0gICAgZGVmIHRlc3RfZGVsYXR0
cihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRlc3RfZGVsYXR0cihzZWxmLCBtb25rZXlw
YXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CiAgICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIo
Im9zLnBhdGguYWJzcGF0aCIpCiAgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihvcy5wYXRoLCAi
YWJzcGF0aCIpCiAgICAgICAgIG1vbmtleXBhdGNoLnVuZG8oKQogICAgICAgICBhc3NlcnQgb3Mu
cGF0aC5hYnNwYXRoCiAKIAotZGVmIHRlc3RfZGVsYXR0cigpOgotCi0gICAgY2xhc3MgQShvYmpl
Y3QpOgorZGVmIHRlc3RfZGVsYXR0cigpIC0+IE5vbmU6CisgICAgY2xhc3MgQToKICAgICAgICAg
eCA9IDEKIAogICAgIG1vbmtleXBhdGNoID0gTW9ua2V5UGF0Y2goKQpAQCAtOTYsNyArMTA2LDcg
QEAgZGVmIHRlc3RfZGVsYXR0cigpOgogCiAgICAgbW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRjaCgp
CiAgICAgbW9ua2V5cGF0Y2guZGVsYXR0cihBLCAieCIpCi0gICAgcHl0ZXN0LnJhaXNlcyhBdHRy
aWJ1dGVFcnJvciwgIm1vbmtleXBhdGNoLmRlbGF0dHIoQSwgJ3knKSIpCisgICAgcHl0ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgbW9ua2V5cGF0Y2guZGVsYXR0ciwgQSwgInkiKQogICAgIG1v
bmtleXBhdGNoLmRlbGF0dHIoQSwgInkiLCByYWlzaW5nPUZhbHNlKQogICAgIG1vbmtleXBhdGNo
LnNldGF0dHIoQSwgIngiLCA1LCByYWlzaW5nPUZhbHNlKQogICAgIGFzc2VydCBBLnggPT0gNQpA
QCAtMTA0LDcgKzExNCw3IEBAIGRlZiB0ZXN0X2RlbGF0dHIoKToKICAgICBhc3NlcnQgQS54ID09
IDEKIAogCi1kZWYgdGVzdF9zZXRpdGVtKCk6CitkZWYgdGVzdF9zZXRpdGVtKCkgLT4gTm9uZToK
ICAgICBkID0geyJ4IjogMX0KICAgICBtb25rZXlwYXRjaCA9IE1vbmtleVBhdGNoKCkKICAgICBt
b25rZXlwYXRjaC5zZXRpdGVtKGQsICJ4IiwgMikKQEAgLTEyMiw4ICsxMzIsOCBAQCBkZWYgdGVz
dF9zZXRpdGVtKCk6CiAgICAgYXNzZXJ0IGRbIngiXSA9PSA1CiAKIAotZGVmIHRlc3Rfc2V0aXRl
bV9kZWxldGVkX21lYW53aGlsZSgpOgotICAgIGQgPSB7fQorZGVmIHRlc3Rfc2V0aXRlbV9kZWxl
dGVkX21lYW53aGlsZSgpIC0+IE5vbmU6CisgICAgZCA9IHt9ICAjIHR5cGU6IERpY3Rbc3RyLCBv
YmplY3RdCiAgICAgbW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRjaCgpCiAgICAgbW9ua2V5cGF0Y2gu
c2V0aXRlbShkLCAieCIsIDIpCiAgICAgZGVsIGRbIngiXQpAQCAtMTMyLDcgKzE0Miw3IEBAIGRl
ZiB0ZXN0X3NldGl0ZW1fZGVsZXRlZF9tZWFud2hpbGUoKToKIAogCiBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImJlZm9yZSIsIFtUcnVlLCBGYWxzZV0pCi1kZWYgdGVzdF9zZXRlbnZfZGVsZXRl
ZF9tZWFud2hpbGUoYmVmb3JlKToKK2RlZiB0ZXN0X3NldGVudl9kZWxldGVkX21lYW53aGlsZShi
ZWZvcmU6IGJvb2wpIC0+IE5vbmU6CiAgICAga2V5ID0gInF3cGVvaXAxMjMiCiAgICAgaWYgYmVm
b3JlOgogICAgICAgICBvcy5lbnZpcm9uW2tleV0gPSAid29ybGQiCkBAIC0xNDcsMTMgKzE1Nywx
MyBAQCBkZWYgdGVzdF9zZXRlbnZfZGVsZXRlZF9tZWFud2hpbGUoYmVmb3JlKToKICAgICAgICAg
YXNzZXJ0IGtleSBub3QgaW4gb3MuZW52aXJvbgogCiAKLWRlZiB0ZXN0X2RlbGl0ZW0oKToKLSAg
ICBkID0geyJ4IjogMX0KK2RlZiB0ZXN0X2RlbGl0ZW0oKSAtPiBOb25lOgorICAgIGQgPSB7Ingi
OiAxfSAgIyB0eXBlOiBEaWN0W3N0ciwgb2JqZWN0XQogICAgIG1vbmtleXBhdGNoID0gTW9ua2V5
UGF0Y2goKQogICAgIG1vbmtleXBhdGNoLmRlbGl0ZW0oZCwgIngiKQogICAgIGFzc2VydCAieCIg
bm90IGluIGQKICAgICBtb25rZXlwYXRjaC5kZWxpdGVtKGQsICJ5IiwgcmFpc2luZz1GYWxzZSkK
LSAgICBweXRlc3QucmFpc2VzKEtleUVycm9yLCAibW9ua2V5cGF0Y2guZGVsaXRlbShkLCAneScp
IikKKyAgICBweXRlc3QucmFpc2VzKEtleUVycm9yLCBtb25rZXlwYXRjaC5kZWxpdGVtLCBkLCAi
eSIpCiAgICAgYXNzZXJ0IG5vdCBkCiAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShkLCAieSIsIDE3
MDApCiAgICAgYXNzZXJ0IGRbInkiXSA9PSAxNzAwCkBAIC0xNjQsOSArMTc0LDEwIEBAIGRlZiB0
ZXN0X2RlbGl0ZW0oKToKICAgICBhc3NlcnQgZCA9PSB7ImhlbGxvIjogIndvcmxkIiwgIngiOiAx
fQogCiAKLWRlZiB0ZXN0X3NldGVudigpOgorZGVmIHRlc3Rfc2V0ZW52KCkgLT4gTm9uZToKICAg
ICBtb25rZXlwYXRjaCA9IE1vbmtleVBhdGNoKCkKLSAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlhZ
WjEyMyIsIDIpCisgICAgd2l0aCBweXRlc3Qud2FybnMocHl0ZXN0LlB5dGVzdFdhcm5pbmcpOgor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlhZWjEyMyIsIDIpICAjIHR5cGU6IGlnbm9yZVth
cmctdHlwZV0KICAgICBpbXBvcnQgb3MKIAogICAgIGFzc2VydCBvcy5lbnZpcm9uWyJYWVoxMjMi
XSA9PSAiMiIKQEAgLTE3NCwxMSArMTg1LDExIEBAIGRlZiB0ZXN0X3NldGVudigpOgogICAgIGFz
c2VydCAiWFlaMTIzIiBub3QgaW4gb3MuZW52aXJvbgogCiAKLWRlZiB0ZXN0X2RlbGVudigpOgor
ZGVmIHRlc3RfZGVsZW52KCkgLT4gTm9uZToKICAgICBuYW1lID0gInh5ejEyMzQiCiAgICAgYXNz
ZXJ0IG5hbWUgbm90IGluIG9zLmVudmlyb24KICAgICBtb25rZXlwYXRjaCA9IE1vbmtleVBhdGNo
KCkKLSAgICBweXRlc3QucmFpc2VzKEtleUVycm9yLCAibW9ua2V5cGF0Y2guZGVsZW52KCVyLCBy
YWlzaW5nPVRydWUpIiAlIG5hbWUpCisgICAgcHl0ZXN0LnJhaXNlcyhLZXlFcnJvciwgbW9ua2V5
cGF0Y2guZGVsZW52LCBuYW1lLCByYWlzaW5nPVRydWUpCiAgICAgbW9ua2V5cGF0Y2guZGVsZW52
KG5hbWUsIHJhaXNpbmc9RmFsc2UpCiAgICAgbW9ua2V5cGF0Y2gudW5kbygpCiAgICAgb3MuZW52
aXJvbltuYW1lXSA9ICIxIgpAQCAtMTk1LDE5ICsyMDYsMzcgQEAgZGVmIHRlc3RfZGVsZW52KCk6
CiAgICAgICAgICAgICBkZWwgb3MuZW52aXJvbltuYW1lXQogCiAKLWRlZiB0ZXN0X3NldGVudl9w
cmVwZW5kKCk6CitjbGFzcyBUZXN0RW52aXJvbldhcm5pbmdzOgorICAgICIiIgorICAgIG9zLmVu
dmlyb24ga2V5cyBhbmQgdmFsdWVzIHNob3VsZCBiZSBuYXRpdmUgc3RyaW5ncywgb3RoZXJ3aXNl
IGl0IHdpbGwgY2F1c2UgcHJvYmxlbXMgd2l0aCBvdGhlciBtb2R1bGVzIChub3RhYmx5CisgICAg
c3VicHJvY2VzcykuIE9uIFB5dGhvbiAyIG9zLmVudmlyb24gYWNjZXB0cyBhbnl0aGluZyB3aXRo
b3V0IGNvbXBsYWluaW5nLCB3aGlsZSBQeXRob24gMyBkb2VzIHRoZSByaWdodCB0aGluZworICAg
IGFuZCByYWlzZXMgYW4gZXJyb3IuCisgICAgIiIiCisKKyAgICBWQVJfTkFNRSA9ICJQWVRFU1Rf
SU5URVJOQUxfTVlfVkFSIgorCisgICAgZGVmIHRlc3Rfc2V0ZW52X25vbl9zdHJfd2FybmluZyhz
ZWxmLCBtb25rZXlwYXRjaDogTW9ua2V5UGF0Y2gpIC0+IE5vbmU6CisgICAgICAgIHZhbHVlID0g
MgorICAgICAgICBtc2cgPSAoCisgICAgICAgICAgICAiVmFsdWUgb2YgZW52aXJvbm1lbnQgdmFy
aWFibGUgUFlURVNUX0lOVEVSTkFMX01ZX1ZBUiB0eXBlIHNob3VsZCBiZSBzdHIsICIKKyAgICAg
ICAgICAgICJidXQgZ290IDIgKHR5cGU6IGludCk7IGNvbnZlcnRlZCB0byBzdHIgaW1wbGljaXRs
eSIKKyAgICAgICAgKQorICAgICAgICB3aXRoIHB5dGVzdC53YXJucyhweXRlc3QuUHl0ZXN0V2Fy
bmluZywgbWF0Y2g9cmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0
ZW52KHN0cihzZWxmLlZBUl9OQU1FKSwgdmFsdWUpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0K
KworCitkZWYgdGVzdF9zZXRlbnZfcHJlcGVuZCgpIC0+IE5vbmU6CiAgICAgaW1wb3J0IG9zCiAK
ICAgICBtb25rZXlwYXRjaCA9IE1vbmtleVBhdGNoKCkKLSAgICBtb25rZXlwYXRjaC5zZXRlbnYo
IlhZWjEyMyIsIDIsIHByZXBlbmQ9Ii0iKQotICAgIGFzc2VydCBvcy5lbnZpcm9uWyJYWVoxMjMi
XSA9PSAiMiIKLSAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlhZWjEyMyIsIDMsIHByZXBlbmQ9Ii0i
KQorICAgIG1vbmtleXBhdGNoLnNldGVudigiWFlaMTIzIiwgIjIiLCBwcmVwZW5kPSItIikKKyAg
ICBtb25rZXlwYXRjaC5zZXRlbnYoIlhZWjEyMyIsICIzIiwgcHJlcGVuZD0iLSIpCiAgICAgYXNz
ZXJ0IG9zLmVudmlyb25bIlhZWjEyMyJdID09ICIzLTIiCiAgICAgbW9ua2V5cGF0Y2gudW5kbygp
CiAgICAgYXNzZXJ0ICJYWVoxMjMiIG5vdCBpbiBvcy5lbnZpcm9uCiAKIAotZGVmIHRlc3RfbW9u
a2V5cGF0Y2hfcGx1Z2luKHRlc3RkaXIpOgorZGVmIHRlc3RfbW9ua2V5cGF0Y2hfcGx1Z2luKHRl
c3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVu
c291cmNlKAogICAgICAgICAiIiIKICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKG1vbmtleXBhdGNo
KToKQEAgLTIxOCw3ICsyNDcsNyBAQCBkZWYgdGVzdF9tb25rZXlwYXRjaF9wbHVnaW4odGVzdGRp
cik6CiAgICAgYXNzZXJ0IHR1cGxlKHJlcykgPT0gKDEsIDAsIDApLCByZXMKIAogCi1kZWYgdGVz
dF9zeXNwYXRoX3ByZXBlbmQobXApOgorZGVmIHRlc3Rfc3lzcGF0aF9wcmVwZW5kKG1wOiBNb25r
ZXlQYXRjaCkgLT4gTm9uZToKICAgICBvbGQgPSBsaXN0KHN5cy5wYXRoKQogICAgIG1wLnN5c3Bh
dGhfcHJlcGVuZCgid29ybGQiKQogICAgIG1wLnN5c3BhdGhfcHJlcGVuZCgiaGVsbG8iKQpAQCAt
MjMwLDMyICsyNTksMzYgQEAgZGVmIHRlc3Rfc3lzcGF0aF9wcmVwZW5kKG1wKToKICAgICBhc3Nl
cnQgc3lzLnBhdGggPT0gb2xkCiAKIAotZGVmIHRlc3Rfc3lzcGF0aF9wcmVwZW5kX2RvdWJsZV91
bmRvKG1wKToKLSAgICBtcC5zeXNwYXRoX3ByZXBlbmQoImhlbGxvIHdvcmxkIikKLSAgICBtcC51
bmRvKCkKLSAgICBzeXMucGF0aC5hcHBlbmQoIm1vcmUgaGVsbG8gd29ybGQiKQotICAgIG1wLnVu
ZG8oKQotICAgIGFzc2VydCBzeXMucGF0aFstMV0gPT0gIm1vcmUgaGVsbG8gd29ybGQiCitkZWYg
dGVzdF9zeXNwYXRoX3ByZXBlbmRfZG91YmxlX3VuZG8obXA6IE1vbmtleVBhdGNoKSAtPiBOb25l
OgorICAgIG9sZF9zeXNwYXRoID0gc3lzLnBhdGhbOl0KKyAgICB0cnk6CisgICAgICAgIG1wLnN5
c3BhdGhfcHJlcGVuZCgiaGVsbG8gd29ybGQiKQorICAgICAgICBtcC51bmRvKCkKKyAgICAgICAg
c3lzLnBhdGguYXBwZW5kKCJtb3JlIGhlbGxvIHdvcmxkIikKKyAgICAgICAgbXAudW5kbygpCisg
ICAgICAgIGFzc2VydCBzeXMucGF0aFstMV0gPT0gIm1vcmUgaGVsbG8gd29ybGQiCisgICAgZmlu
YWxseToKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBvbGRfc3lzcGF0aAogCiAKLWRlZiB0ZXN0X2No
ZGlyX3dpdGhfcGF0aF9sb2NhbChtcCwgdG1wZGlyKToKK2RlZiB0ZXN0X2NoZGlyX3dpdGhfcGF0
aF9sb2NhbChtcDogTW9ua2V5UGF0Y2gsIHRtcGRpcjogcHkucGF0aC5sb2NhbCkgLT4gTm9uZToK
ICAgICBtcC5jaGRpcih0bXBkaXIpCiAgICAgYXNzZXJ0IG9zLmdldGN3ZCgpID09IHRtcGRpci5z
dHJwYXRoCiAKIAotZGVmIHRlc3RfY2hkaXJfd2l0aF9zdHIobXAsIHRtcGRpcik6CitkZWYgdGVz
dF9jaGRpcl93aXRoX3N0cihtcDogTW9ua2V5UGF0Y2gsIHRtcGRpcjogcHkucGF0aC5sb2NhbCkg
LT4gTm9uZToKICAgICBtcC5jaGRpcih0bXBkaXIuc3RycGF0aCkKICAgICBhc3NlcnQgb3MuZ2V0
Y3dkKCkgPT0gdG1wZGlyLnN0cnBhdGgKIAogCi1kZWYgdGVzdF9jaGRpcl91bmRvKG1wLCB0bXBk
aXIpOgorZGVmIHRlc3RfY2hkaXJfdW5kbyhtcDogTW9ua2V5UGF0Y2gsIHRtcGRpcjogcHkucGF0
aC5sb2NhbCkgLT4gTm9uZToKICAgICBjd2QgPSBvcy5nZXRjd2QoKQogICAgIG1wLmNoZGlyKHRt
cGRpcikKICAgICBtcC51bmRvKCkKICAgICBhc3NlcnQgb3MuZ2V0Y3dkKCkgPT0gY3dkCiAKIAot
ZGVmIHRlc3RfY2hkaXJfZG91YmxlX3VuZG8obXAsIHRtcGRpcik6CitkZWYgdGVzdF9jaGRpcl9k
b3VibGVfdW5kbyhtcDogTW9ua2V5UGF0Y2gsIHRtcGRpcjogcHkucGF0aC5sb2NhbCkgLT4gTm9u
ZToKICAgICBtcC5jaGRpcih0bXBkaXIuc3RycGF0aCkKICAgICBtcC51bmRvKCkKICAgICB0bXBk
aXIuY2hkaXIoKQpAQCAtMjYzLDcgKzI5Niw3IEBAIGRlZiB0ZXN0X2NoZGlyX2RvdWJsZV91bmRv
KG1wLCB0bXBkaXIpOgogICAgIGFzc2VydCBvcy5nZXRjd2QoKSA9PSB0bXBkaXIuc3RycGF0aAog
CiAKLWRlZiB0ZXN0X2lzc3VlMTg1X3RpbWVfYnJlYWtzKHRlc3RkaXIpOgorZGVmIHRlc3RfaXNz
dWUxODVfdGltZV9icmVha3ModGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgdGltZQpAQCAtMjgxLDcg
KzMxNCw3IEBAIGRlZiB0ZXN0X2lzc3VlMTg1X3RpbWVfYnJlYWtzKHRlc3RkaXIpOgogICAgICkK
IAogCi1kZWYgdGVzdF9pbXBvcnRlcnJvcih0ZXN0ZGlyKToKK2RlZiB0ZXN0X2ltcG9ydGVycm9y
KHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CiAgICAgcCA9IHRlc3RkaXIubWtweWRpcigicGFj
a2FnZSIpCiAgICAgcC5qb2luKCJhLnB5Iikud3JpdGUoCiAgICAgICAgIHRleHR3cmFwLmRlZGVu
dCgKQEAgLTMwMyw1MSArMzM2LDYyIEBAIGRlZiB0ZXN0X2ltcG9ydGVycm9yKHRlc3RkaXIpOgog
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCiAgICAgICAgICIiIgotICAgICAgICAqaW1wb3J0IGVycm9yIGluIHBhY2thZ2Uu
YTogTm8gbW9kdWxlIG5hbWVkIHswfWRvZXNub3RleGlzdHswfSoKLSAgICAiIiIuZm9ybWF0KAot
ICAgICAgICAgICAgIiciIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSAiIgotICAg
ICAgICApCisgICAgICAgICppbXBvcnQgZXJyb3IgaW4gcGFja2FnZS5hOiBObyBtb2R1bGUgbmFt
ZWQgJ2RvZXNub3RleGlzdCcqCisgICAgIiIiCiAgICAgKQogCiAKLWNsYXNzIFNhbXBsZU5ldyhv
YmplY3QpOgotCitjbGFzcyBTYW1wbGU6CiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBoZWxs
bygpOgorICAgIGRlZiBoZWxsbygpIC0+IGJvb2w6CiAgICAgICAgIHJldHVybiBUcnVlCiAKIAot
Y2xhc3MgU2FtcGxlTmV3SW5oZXJpdChTYW1wbGVOZXcpOgotICAgIHBhc3MKLQotCi1jbGFzcyBT
YW1wbGVPbGQob2JqZWN0KToKLSAgICAjIG9sZHN0eWxlIG9uIHB5dGhvbjIKLSAgICBAc3RhdGlj
bWV0aG9kCi0gICAgZGVmIGhlbGxvKCk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLQotY2xhc3Mg
U2FtcGxlT2xkSW5oZXJpdChTYW1wbGVPbGQpOgorY2xhc3MgU2FtcGxlSW5oZXJpdChTYW1wbGUp
OgogICAgIHBhc3MKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCi0gICAgIlNhbXBsZSIs
Ci0gICAgW1NhbXBsZU5ldywgU2FtcGxlTmV3SW5oZXJpdCwgU2FtcGxlT2xkLCBTYW1wbGVPbGRJ
bmhlcml0XSwKLSAgICBpZHM9WyJuZXciLCAibmV3LWluaGVyaXQiLCAib2xkIiwgIm9sZC1pbmhl
cml0Il0sCisgICAgIlNhbXBsZSIsIFtTYW1wbGUsIFNhbXBsZUluaGVyaXRdLCBpZHM9WyJuZXci
LCAibmV3LWluaGVyaXQiXSwKICkKLWRlZiB0ZXN0X2lzc3VlMTU2X3VuZG9fc3RhdGljbWV0aG9k
KFNhbXBsZSk6CitkZWYgdGVzdF9pc3N1ZTE1Nl91bmRvX3N0YXRpY21ldGhvZChTYW1wbGU6ICJU
eXBlW1NhbXBsZV0iKSAtPiBOb25lOgogICAgIG1vbmtleXBhdGNoID0gTW9ua2V5UGF0Y2goKQog
CiAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihTYW1wbGUsICJoZWxsbyIsIE5vbmUpCiAgICAgYXNz
ZXJ0IFNhbXBsZS5oZWxsbyBpcyBOb25lCiAKLSAgICBtb25rZXlwYXRjaC51bmRvKCkKKyAgICBt
b25rZXlwYXRjaC51bmRvKCkgICMgdHlwZTogaWdub3JlW3VucmVhY2hhYmxlXQogICAgIGFzc2Vy
dCBTYW1wbGUuaGVsbG8oKQogCiAKLWRlZiB0ZXN0X2lzc3VlMTMzOF9uYW1lX3Jlc29sdmluZygp
OgorZGVmIHRlc3RfdW5kb19jbGFzc19kZXNjcmlwdG9yc19kZWxhdHRyKCkgLT4gTm9uZToKKyAg
ICBjbGFzcyBTYW1wbGVQYXJlbnQ6CisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYg
aGVsbG8oX2Nscyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHN0YXRpY21ldGhvZAor
ICAgICAgICBkZWYgd29ybGQoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGNsYXNzIFNhbXBs
ZUNoaWxkKFNhbXBsZVBhcmVudCk6CisgICAgICAgIHBhc3MKKworICAgIG1vbmtleXBhdGNoID0g
TW9ua2V5UGF0Y2goKQorCisgICAgb3JpZ2luYWxfaGVsbG8gPSBTYW1wbGVDaGlsZC5oZWxsbwor
ICAgIG9yaWdpbmFsX3dvcmxkID0gU2FtcGxlQ2hpbGQud29ybGQKKyAgICBtb25rZXlwYXRjaC5k
ZWxhdHRyKFNhbXBsZVBhcmVudCwgImhlbGxvIikKKyAgICBtb25rZXlwYXRjaC5kZWxhdHRyKFNh
bXBsZVBhcmVudCwgIndvcmxkIikKKyAgICBhc3NlcnQgZ2V0YXR0cihTYW1wbGVQYXJlbnQsICJo
ZWxsbyIsIE5vbmUpIGlzIE5vbmUKKyAgICBhc3NlcnQgZ2V0YXR0cihTYW1wbGVQYXJlbnQsICJ3
b3JsZCIsIE5vbmUpIGlzIE5vbmUKKworICAgIG1vbmtleXBhdGNoLnVuZG8oKQorICAgIGFzc2Vy
dCBvcmlnaW5hbF9oZWxsbyA9PSBTYW1wbGVDaGlsZC5oZWxsbworICAgIGFzc2VydCBvcmlnaW5h
bF93b3JsZCA9PSBTYW1wbGVDaGlsZC53b3JsZAorCisKK2RlZiB0ZXN0X2lzc3VlMTMzOF9uYW1l
X3Jlc29sdmluZygpIC0+IE5vbmU6CiAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgicmVxdWVzdHMi
KQogICAgIG1vbmtleXBhdGNoID0gTW9ua2V5UGF0Y2goKQogICAgIHRyeToKQEAgLTM1Niw3ICs0
MDAsNyBAQCBkZWYgdGVzdF9pc3N1ZTEzMzhfbmFtZV9yZXNvbHZpbmcoKToKICAgICAgICAgbW9u
a2V5cGF0Y2gudW5kbygpCiAKIAotZGVmIHRlc3RfY29udGV4dCgpOgorZGVmIHRlc3RfY29udGV4
dCgpIC0+IE5vbmU6CiAgICAgbW9ua2V5cGF0Y2ggPSBNb25rZXlQYXRjaCgpCiAKICAgICBpbXBv
cnQgZnVuY3Rvb2xzCkBAIC0zNjYsMyArNDEwLDM3IEBAIGRlZiB0ZXN0X2NvbnRleHQoKToKICAg
ICAgICAgbS5zZXRhdHRyKGZ1bmN0b29scywgInBhcnRpYWwiLCAzKQogICAgICAgICBhc3NlcnQg
bm90IGluc3BlY3QuaXNjbGFzcyhmdW5jdG9vbHMucGFydGlhbCkKICAgICBhc3NlcnQgaW5zcGVj
dC5pc2NsYXNzKGZ1bmN0b29scy5wYXJ0aWFsKQorCisKK2RlZiB0ZXN0X3N5c3BhdGhfcHJlcGVu
ZF93aXRoX25hbWVzcGFjZV9wYWNrYWdlcygKKyAgICB0ZXN0ZGlyOiBUZXN0ZGlyLCBtb25rZXlw
YXRjaDogTW9ua2V5UGF0Y2gKKykgLT4gTm9uZToKKyAgICBmb3IgZGlybmFtZSBpbiAiaGVsbG8i
LCAid29ybGQiOgorICAgICAgICBkID0gdGVzdGRpci5ta2RpcihkaXJuYW1lKQorICAgICAgICBu
cyA9IGQubWtkaXIoIm5zX3BrZyIpCisgICAgICAgIG5zLmpvaW4oIl9faW5pdF9fLnB5Iikud3Jp
dGUoCisgICAgICAgICAgICAiX19pbXBvcnRfXygncGtnX3Jlc291cmNlcycpLmRlY2xhcmVfbmFt
ZXNwYWNlKF9fbmFtZV9fKSIKKyAgICAgICAgKQorICAgICAgICBsaWIgPSBucy5ta2RpcihkaXJu
YW1lKQorICAgICAgICBsaWIuam9pbigiX19pbml0X18ucHkiKS53cml0ZSgiZGVmIGNoZWNrKCk6
IHJldHVybiAlciIgJSBkaXJuYW1lKQorCisgICAgbW9ua2V5cGF0Y2guc3lzcGF0aF9wcmVwZW5k
KCJoZWxsbyIpCisgICAgaW1wb3J0IG5zX3BrZy5oZWxsbworCisgICAgYXNzZXJ0IG5zX3BrZy5o
ZWxsby5jaGVjaygpID09ICJoZWxsbyIKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbXBvcnRF
cnJvcik6CisgICAgICAgIGltcG9ydCBuc19wa2cud29ybGQKKworICAgICMgUHJlcGVuZGluZyBz
aG91bGQgY2FsbCBmaXh1cF9uYW1lc3BhY2VfcGFja2FnZXMuCisgICAgbW9ua2V5cGF0Y2guc3lz
cGF0aF9wcmVwZW5kKCJ3b3JsZCIpCisgICAgaW1wb3J0IG5zX3BrZy53b3JsZAorCisgICAgYXNz
ZXJ0IG5zX3BrZy53b3JsZC5jaGVjaygpID09ICJ3b3JsZCIKKworICAgICMgU2hvdWxkIGludmFs
aWRhdGUgY2FjaGVzIHZpYSBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMuCisgICAgdG1wZGly
ID0gdGVzdGRpci50bXBkaXIKKyAgICBtb2R1bGVzX3RtcGRpciA9IHRtcGRpci5ta2RpcigibW9k
dWxlc190bXBkaXIiKQorICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZChzdHIobW9kdWxl
c190bXBkaXIpKQorICAgIG1vZHVsZXNfdG1wZGlyLmpvaW4oIm1haW5fYXBwLnB5Iikud3JpdGUo
ImFwcCA9IFRydWUiKQorICAgIGZyb20gbWFpbl9hcHAgaW1wb3J0IGFwcCAgIyBub3FhOiBGNDAx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfbm9kZXMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3Rfbm9kZXMucHkKaW5kZXggZWVlM2FjOGU5ZTRjLi5mOTAyNmVjNjE5
ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ub2Rlcy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfbm9kZXMucHkKQEAgLTEsNiArMSw4IEBACi1pbXBvcnQg
cHl0ZXN0CitpbXBvcnQgcHkKIAoraW1wb3J0IHB5dGVzdAogZnJvbSBfcHl0ZXN0IGltcG9ydCBu
b2RlcworZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCiAKIAogQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKApAQCAtOSwxMyArMTEsNzggQEAgZnJvbSBfcHl0ZXN0IGltcG9ydCBu
b2RlcwogICAgICAgICAoIiIsICIiLCBUcnVlKSwKICAgICAgICAgKCIiLCAiZm9vIiwgVHJ1ZSks
CiAgICAgICAgICgiIiwgImZvby9iYXIiLCBUcnVlKSwKLSAgICAgICAgKCIiLCAiZm9vL2Jhcjo6
VGVzdEJhejo6KCkiLCBUcnVlKSwKKyAgICAgICAgKCIiLCAiZm9vL2Jhcjo6VGVzdEJheiIsIFRy
dWUpLAogICAgICAgICAoImZvbyIsICJmb29kIiwgRmFsc2UpLAotICAgICAgICAoImZvby9iYXI6
OlRlc3RCYXo6OigpIiwgImZvby9iYXIiLCBGYWxzZSksCi0gICAgICAgICgiZm9vL2Jhcjo6VGVz
dEJhejo6KCkiLCAiZm9vL2Jhcjo6VGVzdEJvcDo6KCkiLCBGYWxzZSksCi0gICAgICAgICgiZm9v
L2JhciIsICJmb28vYmFyOjpUZXN0Qm9wOjooKSIsIFRydWUpLAorICAgICAgICAoImZvby9iYXI6
OlRlc3RCYXoiLCAiZm9vL2JhciIsIEZhbHNlKSwKKyAgICAgICAgKCJmb28vYmFyOjpUZXN0QmF6
IiwgImZvby9iYXI6OlRlc3RCb3AiLCBGYWxzZSksCisgICAgICAgICgiZm9vL2JhciIsICJmb28v
YmFyOjpUZXN0Qm9wIiwgVHJ1ZSksCiAgICAgKSwKICkKLWRlZiB0ZXN0X2lzY2hpbGRub2RlKGJh
c2VpZCwgbm9kZWlkLCBleHBlY3RlZCk6CitkZWYgdGVzdF9pc2NoaWxkbm9kZShiYXNlaWQ6IHN0
ciwgbm9kZWlkOiBzdHIsIGV4cGVjdGVkOiBib29sKSAtPiBOb25lOgogICAgIHJlc3VsdCA9IG5v
ZGVzLmlzY2hpbGRub2RlKGJhc2VpZCwgbm9kZWlkKQogICAgIGFzc2VydCByZXN1bHQgaXMgZXhw
ZWN0ZWQKKworCitkZWYgdGVzdF9ub2RlX2Zyb21fcGFyZW50X2Rpc2FsbG93ZWRfYXJndW1lbnRz
KCkgLT4gTm9uZToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD0ic2Vz
c2lvbiBpcyIpOgorICAgICAgICBub2Rlcy5Ob2RlLmZyb21fcGFyZW50KE5vbmUsIHNlc3Npb249
Tm9uZSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhU
eXBlRXJyb3IsIG1hdGNoPSJjb25maWcgaXMiKToKKyAgICAgICAgbm9kZXMuTm9kZS5mcm9tX3Bh
cmVudChOb25lLCBjb25maWc9Tm9uZSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorCisKK2Rl
ZiB0ZXN0X3N0ZF93YXJuX25vdF9weXRlc3R3YXJuaW5nKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5v
bmU6CisgICAgaXRlbXMgPSB0ZXN0ZGlyLmdldGl0ZW1zKAorICAgICAgICAiIiIKKyAgICAgICAg
ZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgd2l0aCBw
eXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1hdGNoPSIuKmluc3RhbmNlIG9mIFB5dGVzdFdhcm5p
bmcuKiIpOgorICAgICAgICBpdGVtc1swXS53YXJuKFVzZXJXYXJuaW5nKCJzb21lIHdhcm5pbmci
KSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorCisKK2RlZiB0ZXN0X19jaGVja19pbml0aWFs
cGF0aHNfZm9yX3JlbHBhdGgoKSAtPiBOb25lOgorICAgICIiIkVuc3VyZSB0aGF0IGl0IGhhbmRs
ZXMgZGlycywgYW5kIGRvZXMgbm90IGFsd2F5cyB1c2UgZGlybmFtZS4iIiIKKyAgICBjd2QgPSBw
eS5wYXRoLmxvY2FsKCkKKworICAgIGNsYXNzIEZha2VTZXNzaW9uMToKKyAgICAgICAgX2luaXRp
YWxwYXRocyA9IFtjd2RdCisKKyAgICBhc3NlcnQgbm9kZXMuX2NoZWNrX2luaXRpYWxwYXRoc19m
b3JfcmVscGF0aChGYWtlU2Vzc2lvbjEsIGN3ZCkgPT0gIiIKKworICAgIHN1YiA9IGN3ZC5qb2lu
KCJmaWxlIikKKworICAgIGNsYXNzIEZha2VTZXNzaW9uMjoKKyAgICAgICAgX2luaXRpYWxwYXRo
cyA9IFtjd2RdCisKKyAgICBhc3NlcnQgbm9kZXMuX2NoZWNrX2luaXRpYWxwYXRoc19mb3JfcmVs
cGF0aChGYWtlU2Vzc2lvbjIsIHN1YikgPT0gImZpbGUiCisKKyAgICBvdXRzaWRlID0gcHkucGF0
aC5sb2NhbCgiL291dHNpZGUiKQorICAgIGFzc2VydCBub2Rlcy5fY2hlY2tfaW5pdGlhbHBhdGhz
X2Zvcl9yZWxwYXRoKEZha2VTZXNzaW9uMiwgb3V0c2lkZSkgaXMgTm9uZQorCisKK2RlZiB0ZXN0
X2ZhaWx1cmVfd2l0aF9jaGFuZ2VkX2N3ZCh0ZXN0ZGlyKToKKyAgICAiIiIKKyAgICBUZXN0IGZh
aWx1cmUgbGluZXMgc2hvdWxkIHVzZSBhYnNvbHV0ZSBwYXRocyBpZiBjd2QgaGFzIGNoYW5nZWQg
c2luY2UKKyAgICBpbnZvY2F0aW9uLCBzbyB0aGUgcGF0aCBpcyBjb3JyZWN0ICgjNjQyOCkuCisg
ICAgIiIiCisgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAg
IGltcG9ydCBvcworICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgQHB5dGVzdC5maXh0
dXJlCisgICAgICAgIGRlZiBwcml2YXRlX2RpcigpOgorICAgICAgICAgICAgb3V0X2RpciA9ICdk
ZGQnCisgICAgICAgICAgICBvcy5ta2RpcihvdXRfZGlyKQorICAgICAgICAgICAgb2xkX2RpciA9
IG9zLmdldGN3ZCgpCisgICAgICAgICAgICBvcy5jaGRpcihvdXRfZGlyKQorICAgICAgICAgICAg
eWllbGQgb3V0X2RpcgorICAgICAgICAgICAgb3MuY2hkaXIob2xkX2RpcikKKworICAgICAgICBk
ZWYgdGVzdF9zaG93X3dyb25nX3BhdGgocHJpdmF0ZV9kaXIpOgorICAgICAgICAgICAgYXNzZXJ0
IEZhbHNlCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoW3N0cihwKSArICI6KjogQXNzZXJ0aW9u
RXJyb3IiLCAiKjEgZmFpbGVkIGluICoiXSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9ub3NlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X25vc2UucHkKaW5kZXgg
YWJlNzMyMzc1NGVkLi5iNjIwMGM2YzlhZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9ub3NlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ub3NlLnB5CkBA
IC0xLDQgKzEsMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCBwcmludF9mdW5jdGlvbgogaW1wb3J0IHB5dGVzdAogCiAKQEAgLTMyLDggKzMxLDcg
QEAgZGVmIHRlc3Rfc2V0dXBfZnVuY193aXRoX3NldHVwX2RlY29yYXRvcigpOgogCiAgICAgdmFs
dWVzID0gW10KIAotICAgIGNsYXNzIEEob2JqZWN0KToKLQorICAgIGNsYXNzIEE6CiAgICAgICAg
IEBweXRlc3QuZml4dHVyZShhdXRvdXNlPVRydWUpCiAgICAgICAgIGRlZiBmKHNlbGYpOgogICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZCgxKQpAQCAtNDUsNyArNDMsNyBAQCBkZWYgdGVzdF9zZXR1
cF9mdW5jX3dpdGhfc2V0dXBfZGVjb3JhdG9yKCk6CiBkZWYgdGVzdF9zZXR1cF9mdW5jX25vdF9j
YWxsYWJsZSgpOgogICAgIGZyb20gX3B5dGVzdC5ub3NlIGltcG9ydCBjYWxsX29wdGlvbmFsCiAK
LSAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgY2xhc3MgQToKICAgICAgICAgZiA9IDEKIAogICAg
IGNhbGxfb3B0aW9uYWwoQSgpLCAiZiIpCkBAIC02OCwxMSArNjYsMTEgQEAgZGVmIHRlc3Rfbm9z
ZV9zZXR1cF9mdW5jKHRlc3RkaXIpOgogCiAgICAgICAgIEB3aXRoX3NldHVwKG15X3NldHVwLCBt
eV90ZWFyZG93bikKICAgICAgICAgZGVmIHRlc3RfaGVsbG8oKToKLSAgICAgICAgICAgIHByaW50
ICh2YWx1ZXMpCisgICAgICAgICAgICBwcmludCh2YWx1ZXMpCiAgICAgICAgICAgICBhc3NlcnQg
dmFsdWVzID09IFsxXQogCiAgICAgICAgIGRlZiB0ZXN0X3dvcmxkKCk6Ci0gICAgICAgICAgICBw
cmludCAodmFsdWVzKQorICAgICAgICAgICAgcHJpbnQodmFsdWVzKQogICAgICAgICAgICAgYXNz
ZXJ0IHZhbHVlcyA9PSBbMSwyXQogCiAgICAgIiIiCkBAIC05MiwxMSArOTAsMTEgQEAgZGVmIHRl
c3Rfbm9zZV9zZXR1cF9mdW5jX2ZhaWx1cmUodGVzdGRpcik6CiAKICAgICAgICAgQHdpdGhfc2V0
dXAobXlfc2V0dXAsIG15X3RlYXJkb3duKQogICAgICAgICBkZWYgdGVzdF9oZWxsbygpOgotICAg
ICAgICAgICAgcHJpbnQgKHZhbHVlcykKKyAgICAgICAgICAgIHByaW50KHZhbHVlcykKICAgICAg
ICAgICAgIGFzc2VydCB2YWx1ZXMgPT0gWzFdCiAKICAgICAgICAgZGVmIHRlc3Rfd29ybGQoKToK
LSAgICAgICAgICAgIHByaW50ICh2YWx1ZXMpCisgICAgICAgICAgICBwcmludCh2YWx1ZXMpCiAg
ICAgICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsxLDJdCiAKICAgICAiIiIKQEAgLTE0NCwxMSAr
MTQyLDExIEBAIGRlZiB0ZXN0X25vc2Vfc2V0dXBfcGFydGlhbCh0ZXN0ZGlyKToKICAgICAgICAg
bXlfdGVhcmRvd25fcGFydGlhbCA9IHBhcnRpYWwobXlfdGVhcmRvd24sIDIpCiAKICAgICAgICAg
ZGVmIHRlc3RfaGVsbG8oKToKLSAgICAgICAgICAgIHByaW50ICh2YWx1ZXMpCisgICAgICAgICAg
ICBwcmludCh2YWx1ZXMpCiAgICAgICAgICAgICBhc3NlcnQgdmFsdWVzID09IFsxXQogCiAgICAg
ICAgIGRlZiB0ZXN0X3dvcmxkKCk6Ci0gICAgICAgICAgICBwcmludCAodmFsdWVzKQorICAgICAg
ICAgICAgcHJpbnQodmFsdWVzKQogICAgICAgICAgICAgYXNzZXJ0IHZhbHVlcyA9PSBbMSwyXQog
CiAgICAgICAgIHRlc3RfaGVsbG8uc2V0dXAgPSBteV9zZXR1cF9wYXJ0aWFsCkBAIC0xNTksNzMg
KzE1Nyw2IEBAIGRlZiB0ZXN0X25vc2Vfc2V0dXBfcGFydGlhbCh0ZXN0ZGlyKToKICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMiBwYXNzZWQqIl0pCiAKIAotZGVmIHRlc3Rfbm9z
ZV90ZXN0X2dlbmVyYXRvcl9maXh0dXJlcyh0ZXN0ZGlyKToKLSAgICBwID0gdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgIyB0YWtlbiBmcm9tIG5vc2UtMC4xMS4xIHVu
aXRfdGVzdHMvdGVzdF9nZW5lcmF0b3JfZml4dHVyZXMucHkKLSAgICAgICAgZnJvbSBub3NlLnRv
b2xzIGltcG9ydCBlcV8KLSAgICAgICAgY2FsbGVkID0gW10KLQotICAgICAgICBkZWYgb3V0ZXJf
c2V0dXAoKToKLSAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoJ291dGVyX3NldHVwJykKLQotICAg
ICAgICBkZWYgb3V0ZXJfdGVhcmRvd24oKToKLSAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoJ291
dGVyX3RlYXJkb3duJykKLQotICAgICAgICBkZWYgaW5uZXJfc2V0dXAoKToKLSAgICAgICAgICAg
IGNhbGxlZC5hcHBlbmQoJ2lubmVyX3NldHVwJykKLQotICAgICAgICBkZWYgaW5uZXJfdGVhcmRv
d24oKToKLSAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoJ2lubmVyX3RlYXJkb3duJykKLQotICAg
ICAgICBkZWYgdGVzdF9nZW4oKToKLSAgICAgICAgICAgIGNhbGxlZFs6XSA9IFtdCi0gICAgICAg
ICAgICBmb3IgaSBpbiByYW5nZSgwLCA1KToKLSAgICAgICAgICAgICAgICB5aWVsZCBjaGVjaywg
aQotCi0gICAgICAgIGRlZiBjaGVjayhpKToKLSAgICAgICAgICAgIGV4cGVjdCA9IFsnb3V0ZXJf
c2V0dXAnXQotICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMCwgaSk6Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0LmFwcGVuZCgnaW5uZXJfc2V0dXAnKQotICAgICAgICAgICAgICAgIGV4cGVjdC5h
cHBlbmQoJ2lubmVyX3RlYXJkb3duJykKLSAgICAgICAgICAgIGV4cGVjdC5hcHBlbmQoJ2lubmVy
X3NldHVwJykKLSAgICAgICAgICAgIGVxXyhjYWxsZWQsIGV4cGVjdCkKLQotCi0gICAgICAgIHRl
c3RfZ2VuLnNldHVwID0gb3V0ZXJfc2V0dXAKLSAgICAgICAgdGVzdF9nZW4udGVhcmRvd24gPSBv
dXRlcl90ZWFyZG93bgotICAgICAgICBjaGVjay5zZXR1cCA9IGlubmVyX3NldHVwCi0gICAgICAg
IGNoZWNrLnRlYXJkb3duID0gaW5uZXJfdGVhcmRvd24KLQotICAgICAgICBjbGFzcyBUZXN0Q2xh
c3Mob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgICAgICAg
ICBwcmludCAoInNldHVwIGNhbGxlZCBpbiAlcyIgJSBzZWxmKQotICAgICAgICAgICAgICAgIHNl
bGYuY2FsbGVkID0gWydzZXR1cCddCi0KLSAgICAgICAgICAgIGRlZiB0ZWFyZG93bihzZWxmKToK
LSAgICAgICAgICAgICAgICBwcmludCAoInRlYXJkb3duIGNhbGxlZCBpbiAlcyIgJSBzZWxmKQot
ICAgICAgICAgICAgICAgIGVxXyhzZWxmLmNhbGxlZCwgWydzZXR1cCddKQotICAgICAgICAgICAg
ICAgIHNlbGYuY2FsbGVkLmFwcGVuZCgndGVhcmRvd24nKQotCi0gICAgICAgICAgICBkZWYgdGVz
dChzZWxmKToKLSAgICAgICAgICAgICAgICBwcmludCAoInRlc3QgY2FsbGVkIGluICVzIiAlIHNl
bGYpCi0gICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgNSk6Ci0gICAgICAgICAgICAg
ICAgICAgIHlpZWxkIHNlbGYuY2hlY2ssIGkKLQotICAgICAgICAgICAgZGVmIGNoZWNrKHNlbGYs
IGkpOgotICAgICAgICAgICAgICAgIHByaW50ICgiY2hlY2sgY2FsbGVkIGluICVzIiAlIHNlbGYp
Ci0gICAgICAgICAgICAgICAgZXhwZWN0ID0gWydzZXR1cCddCi0gICAgICAgICAgICAgICAgI2Zv
ciB4IGluIHJhbmdlKDAsIGkpOgotICAgICAgICAgICAgICAgICMgICAgZXhwZWN0LmFwcGVuZCgn
c2V0dXAnKQotICAgICAgICAgICAgICAgICMgICAgZXhwZWN0LmFwcGVuZCgndGVhcmRvd24nKQot
ICAgICAgICAgICAgICAgICNleHBlY3QuYXBwZW5kKCdzZXR1cCcpCi0gICAgICAgICAgICAgICAg
ZXFfKHNlbGYuY2FsbGVkLCBleHBlY3QpCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHAsICItcCIsICJub3NlIikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqMTAgcGFzc2VkKiJdKQotCi0KIGRlZiB0ZXN0X21vZHVsZV9sZXZlbF9zZXR1
cCh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgpAQCAtMjk4
LDcgKzIyOSw3IEBAIGRlZiB0ZXN0X25vc2Vfc2V0dXBfb3JkZXJpbmcodGVzdGRpcik6CiAKIGRl
ZiB0ZXN0X2FwaXdyYXBwZXJfcHJvYmxlbV9pc3N1ZTI2MCh0ZXN0ZGlyKToKICAgICAjIHRoaXMg
d291bGQgZW5kIHVwIHRyeWluZyBhIGNhbGwgYW4gb3B0aW9uYWwgdGVhcmRvd24gb24gdGhlIGNs
YXNzCi0gICAgIyBmb3IgcGxhaW4gdW5pdHRlc3RzIHdlIGRvbnQgd2FudCBub3NlIGJlaGF2aW91
cgorICAgICMgZm9yIHBsYWluIHVuaXR0ZXN0cyB3ZSBkb24ndCB3YW50IG5vc2UgYmVoYXZpb3Vy
CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHVu
aXR0ZXN0CkBAIC0zMjIsNyArMjUzLDcgQEAgZGVmIHRlc3RfYXBpd3JhcHBlcl9wcm9ibGVtX2lz
c3VlMjYwKHRlc3RkaXIpOgogCiAKIGRlZiB0ZXN0X3NldHVwX3RlYXJkb3duX2xpbmtpbmdfaXNz
dWUyNjUodGVzdGRpcik6Ci0gICAgIyB3ZSBhY2NpZGVudGFsbHkgZGlkbnQgaW50ZWdyYXRlIG5v
c2Ugc2V0dXBzdGF0ZSB3aXRoIG5vcm1hbCBzZXR1cHN0YXRlCisgICAgIyB3ZSBhY2NpZGVudGFs
bHkgZGlkbid0IGludGVncmF0ZSBub3NlIHNldHVwc3RhdGUgd2l0aCBub3JtYWwgc2V0dXBzdGF0
ZQogICAgICMgdGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB3b24ndCBoYXBwZW4gYWdhaW4KICAgICB0
ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICcnJwpAQCAtNDMxLDMgKzM2Miw2MyBAQCBkZWYg
dGVzdF9ub3R0ZXN0X2NsYXNzX2RlY29yYXRvcih0ZXN0ZGlyKToKICAgICBhc3NlcnQgbm90IHJl
cHJlYy5nZXRmYWlsZWRjb2xsZWN0aW9ucygpCiAgICAgY2FsbHMgPSByZXByZWMuZ2V0cmVwb3J0
cygicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKICAgICBhc3NlcnQgbm90IGNhbGxzCisKKwor
ZGVmIHRlc3Rfc2tpcF90ZXN0X3dpdGhfdW5pY29kZSh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICIiIlwKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAg
IGNsYXNzIFRlc3RDbGFzcygpOgorICAgICAgICAgICAgZGVmIHRlc3RfaW8oc2VsZik6CisgICAg
ICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ/CfmIonKQorICAgICAgICAiIiIK
KyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIiogMSBza2lwcGVkICoiXSkKKworCitkZWYgdGVzdF9yYWlzZXMo
dGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAg
ZnJvbSBub3NlLnRvb2xzIGltcG9ydCByYWlzZXMKKworICAgICAgICBAcmFpc2VzKFJ1bnRpbWVF
cnJvcikKKyAgICAgICAgZGVmIHRlc3RfcmFpc2VzX3J1bnRpbWVlcnJvcigpOgorICAgICAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgQHJhaXNlcyhFeGNlcHRpb24pCisgICAg
ICAgIGRlZiB0ZXN0X3JhaXNlc19iYXNlZXhjZXB0aW9uX25vdF9jYXVnaHQoKToKKyAgICAgICAg
ICAgIHJhaXNlIEJhc2VFeGNlcHRpb24KKworICAgICAgICBAcmFpc2VzKEJhc2VFeGNlcHRpb24p
CisgICAgICAgIGRlZiB0ZXN0X3JhaXNlc19iYXNlZXhjZXB0aW9uX2NhdWdodCgpOgorICAgICAg
ICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbgorICAgICAgICAiIiIKKyAgICApCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi12diIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICBbCisgICAgICAgICAgICAidGVzdF9yYWlzZXMucHk6OnRlc3RfcmFpc2Vz
X3J1bnRpbWVlcnJvciBQQVNTRUQqIiwKKyAgICAgICAgICAgICJ0ZXN0X3JhaXNlcy5weTo6dGVz
dF9yYWlzZXNfYmFzZWV4Y2VwdGlvbl9ub3RfY2F1Z2h0IEZBSUxFRCoiLAorICAgICAgICAgICAg
InRlc3RfcmFpc2VzLnB5Ojp0ZXN0X3JhaXNlc19iYXNlZXhjZXB0aW9uX2NhdWdodCBQQVNTRUQq
IiwKKyAgICAgICAgICAgICIqPSBGQUlMVVJFUyA9KiIsCisgICAgICAgICAgICAiKl8gdGVzdF9y
YWlzZXNfYmFzZWV4Y2VwdGlvbl9ub3RfY2F1Z2h0IF8qIiwKKyAgICAgICAgICAgICIiLAorICAg
ICAgICAgICAgImFyZyA9ICgpLCBrdyA9IHt9IiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAg
ICAgIiAgICBkZWYgbmV3ZnVuYygqYXJnLCAqKmt3KToiLAorICAgICAgICAgICAgIiAgICAgICAg
dHJ5OiIsCisgICAgICAgICAgICAiPiAgICAgICAgICAgZnVuYygqYXJnLCAqKmt3KSIsCisgICAg
ICAgICAgICAiIiwKKyAgICAgICAgICAgICIqL25vc2UvKjogIiwKKyAgICAgICAgICAgICJfIF8g
KiIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICIgICAgQHJhaXNlcyhFeGNlcHRpb24p
IiwKKyAgICAgICAgICAgICIgICAgZGVmIHRlc3RfcmFpc2VzX2Jhc2VleGNlcHRpb25fbm90X2Nh
dWdodCgpOiIsCisgICAgICAgICAgICAiPiAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uIiwKKyAg
ICAgICAgICAgICJFICAgICAgIEJhc2VFeGNlcHRpb24iLAorICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICAidGVzdF9yYWlzZXMucHk6OTogQmFzZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAi
KiAxIGZhaWxlZCwgMiBwYXNzZWQgKiIsCisgICAgICAgIF0KKyAgICApCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcGFyc2VvcHQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3RfcGFyc2VvcHQucHkKaW5kZXggNzkwNzZjYWZkODEwLi40ZDYzZDk5ZWVhYjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wYXJzZW9wdC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfcGFyc2VvcHQucHkKQEAgLTEsMjYgKzEsMzMgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
IGltcG9ydCBhcmdwYXJzZQotaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgc2hsZXgKK2lt
cG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKIGltcG9ydCBweQorCiBpbXBvcnQgcHl0ZXN0
CiBmcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBhcmdwYXJzaW5nIGFzIHBhcnNlb3B0Citmcm9t
IF9weXRlc3QuY29uZmlnLmV4Y2VwdGlvbnMgaW1wb3J0IFVzYWdlRXJyb3IKIAogCiBAcHl0ZXN0
LmZpeHR1cmUKLWRlZiBwYXJzZXIoKToKK2RlZiBwYXJzZXIoKSAtPiBwYXJzZW9wdC5QYXJzZXI6
CiAgICAgcmV0dXJuIHBhcnNlb3B0LlBhcnNlcigpCiAKIAotY2xhc3MgVGVzdFBhcnNlcihvYmpl
Y3QpOgotCi0gICAgZGVmIHRlc3Rfbm9faGVscF9ieV9kZWZhdWx0KHNlbGYsIGNhcHN5cyk6Citj
bGFzcyBUZXN0UGFyc2VyOgorICAgIGRlZiB0ZXN0X25vX2hlbHBfYnlfZGVmYXVsdChzZWxmKSAt
PiBOb25lOgogICAgICAgICBwYXJzZXIgPSBwYXJzZW9wdC5QYXJzZXIodXNhZ2U9Inh5eiIpCi0g
ICAgICAgIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCwgbGFtYmRhOiBwYXJzZXIucGFyc2UoWyIt
aCJdKSkKLSAgICAgICAgb3V0LCBlcnIgPSBjYXBzeXMucmVhZG91dGVycigpCi0gICAgICAgIGFz
c2VydCBlcnIuZmluZCgiZXJyb3I6IHVucmVjb2duaXplZCBhcmd1bWVudHMiKSAhPSAtMQorICAg
ICAgICBweXRlc3QucmFpc2VzKFVzYWdlRXJyb3IsIGxhbWJkYTogcGFyc2VyLnBhcnNlKFsiLWgi
XSkpCisKKyAgICBkZWYgdGVzdF9jdXN0b21fcHJvZyhzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBh
cnNlcikgLT4gTm9uZToKKyAgICAgICAgIiIiQ3VzdG9tIHByb2cgY2FuIGJlIHNldCBmb3IgYGFy
Z3BhcnNlLkFyZ3VtZW50UGFyc2VyYC4iIiIKKyAgICAgICAgYXNzZXJ0IHBhcnNlci5fZ2V0cGFy
c2VyKCkucHJvZyA9PSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQorICAgICAgICBwYXJz
ZXIucHJvZyA9ICJjdXN0b20tcHJvZyIKKyAgICAgICAgYXNzZXJ0IHBhcnNlci5fZ2V0cGFyc2Vy
KCkucHJvZyA9PSAiY3VzdG9tLXByb2ciCiAKLSAgICBkZWYgdGVzdF9hcmd1bWVudChzZWxmKToK
KyAgICBkZWYgdGVzdF9hcmd1bWVudChzZWxmKSAtPiBOb25lOgogICAgICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMocGFyc2VvcHQuQXJndW1lbnRFcnJvcik6CiAgICAgICAgICAgICAjIG5lZWQgYSBz
aG9ydCBvciBsb25nIG9wdGlvbgogICAgICAgICAgICAgYXJndW1lbnQgPSBwYXJzZW9wdC5Bcmd1
bWVudCgpCkBAIC0zNCwxMiArNDEsMTEgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgogICAg
ICAgICBhc3NlcnQgYXJndW1lbnQuZGVzdCA9PSAidGVzdCIKICAgICAgICAgYXJndW1lbnQgPSBw
YXJzZW9wdC5Bcmd1bWVudCgiLXQiLCAiLS10ZXN0IiwgZGVzdD0iYWJjIikKICAgICAgICAgYXNz
ZXJ0IGFyZ3VtZW50LmRlc3QgPT0gImFiYyIKLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAg
IHN0cihhcmd1bWVudCkKLSAgICAgICAgICAgID09ICgiQXJndW1lbnQoX3Nob3J0X29wdHM6IFsn
LXQnXSwgX2xvbmdfb3B0czogWyctLXRlc3QnXSwgZGVzdDogJ2FiYycpIikKKyAgICAgICAgYXNz
ZXJ0IHN0cihhcmd1bWVudCkgPT0gKAorICAgICAgICAgICAgIkFyZ3VtZW50KF9zaG9ydF9vcHRz
OiBbJy10J10sIF9sb25nX29wdHM6IFsnLS10ZXN0J10sIGRlc3Q6ICdhYmMnKSIKICAgICAgICAg
KQogCi0gICAgZGVmIHRlc3RfYXJndW1lbnRfdHlwZShzZWxmKToKKyAgICBkZWYgdGVzdF9hcmd1
bWVudF90eXBlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VvcHQuQXJn
dW1lbnQoIi10IiwgZGVzdD0iYWJjIiwgdHlwZT1pbnQpCiAgICAgICAgIGFzc2VydCBhcmd1bWVu
dC50eXBlIGlzIGludAogICAgICAgICBhcmd1bWVudCA9IHBhcnNlb3B0LkFyZ3VtZW50KCItdCIs
IGRlc3Q9ImFiYyIsIHR5cGU9c3RyKQpAQCAtNTQsNyArNjAsNyBAQCBjbGFzcyBUZXN0UGFyc2Vy
KG9iamVjdCk6CiAgICAgICAgICkKICAgICAgICAgYXNzZXJ0IGFyZ3VtZW50LnR5cGUgaXMgc3Ry
CiAKLSAgICBkZWYgdGVzdF9hcmd1bWVudF9wcm9jZXNzb3B0KHNlbGYpOgorICAgIGRlZiB0ZXN0
X2FyZ3VtZW50X3Byb2Nlc3NvcHQoc2VsZikgLT4gTm9uZToKICAgICAgICAgYXJndW1lbnQgPSBw
YXJzZW9wdC5Bcmd1bWVudCgiLXQiLCB0eXBlPWludCkKICAgICAgICAgYXJndW1lbnQuZGVmYXVs
dCA9IDQyCiAgICAgICAgIGFyZ3VtZW50LmRlc3QgPSAiYWJjIgpAQCAtNjIsMTkgKzY4LDE5IEBA
IGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHJlc1siZGVmYXVsdCJd
ID09IDQyCiAgICAgICAgIGFzc2VydCByZXNbImRlc3QiXSA9PSAiYWJjIgogCi0gICAgZGVmIHRl
c3RfZ3JvdXBfYWRkX2FuZF9nZXQoc2VsZiwgcGFyc2VyKToKKyAgICBkZWYgdGVzdF9ncm91cF9h
ZGRfYW5kX2dldChzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAg
ICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImhlbGxvIiwgZGVzY3JpcHRpb249ImRlc2MiKQog
ICAgICAgICBhc3NlcnQgZ3JvdXAubmFtZSA9PSAiaGVsbG8iCiAgICAgICAgIGFzc2VydCBncm91
cC5kZXNjcmlwdGlvbiA9PSAiZGVzYyIKIAotICAgIGRlZiB0ZXN0X2dldGdyb3VwX3NpbXBsZShz
ZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X2dldGdyb3VwX3NpbXBsZShzZWxmLCBwYXJzZXI6
IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3Jv
dXAoImhlbGxvIiwgZGVzY3JpcHRpb249ImRlc2MiKQogICAgICAgICBhc3NlcnQgZ3JvdXAubmFt
ZSA9PSAiaGVsbG8iCiAgICAgICAgIGFzc2VydCBncm91cC5kZXNjcmlwdGlvbiA9PSAiZGVzYyIK
ICAgICAgICAgZ3JvdXAyID0gcGFyc2VyLmdldGdyb3VwKCJoZWxsbyIpCiAgICAgICAgIGFzc2Vy
dCBncm91cDIgaXMgZ3JvdXAKIAotICAgIGRlZiB0ZXN0X2dyb3VwX29yZGVyaW5nKHNlbGYsIHBh
cnNlcik6CisgICAgZGVmIHRlc3RfZ3JvdXBfb3JkZXJpbmcoc2VsZiwgcGFyc2VyOiBwYXJzZW9w
dC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlci5nZXRncm91cCgiMSIpCiAgICAgICAg
IHBhcnNlci5nZXRncm91cCgiMiIpCiAgICAgICAgIHBhcnNlci5nZXRncm91cCgiMyIsIGFmdGVy
PSIxIikKQEAgLTgyLDU1ICs4OCw1MSBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CiAgICAg
ICAgIGdyb3Vwc19uYW1lcyA9IFt4Lm5hbWUgZm9yIHggaW4gZ3JvdXBzXQogICAgICAgICBhc3Nl
cnQgZ3JvdXBzX25hbWVzID09IGxpc3QoIjEzMiIpCiAKLSAgICBkZWYgdGVzdF9ncm91cF9hZGRv
cHRpb24oc2VsZik6CisgICAgZGVmIHRlc3RfZ3JvdXBfYWRkb3B0aW9uKHNlbGYpIC0+IE5vbmU6
CiAgICAgICAgIGdyb3VwID0gcGFyc2VvcHQuT3B0aW9uR3JvdXAoImhlbGxvIikKICAgICAgICAg
Z3JvdXAuYWRkb3B0aW9uKCItLW9wdGlvbjEiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgICAg
ICBhc3NlcnQgbGVuKGdyb3VwLm9wdGlvbnMpID09IDEKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoZ3JvdXAub3B0aW9uc1swXSwgcGFyc2VvcHQuQXJndW1lbnQpCiAKLSAgICBkZWYgdGVzdF9n
cm91cF9hZGRvcHRpb25fY29uZmxpY3Qoc2VsZik6CisgICAgZGVmIHRlc3RfZ3JvdXBfYWRkb3B0
aW9uX2NvbmZsaWN0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIGdyb3VwID0gcGFyc2VvcHQuT3B0
aW9uR3JvdXAoImhlbGxvIGFnYWluIikKICAgICAgICAgZ3JvdXAuYWRkb3B0aW9uKCItLW9wdGlv
bjEiLCAiLS1vcHRpb24tMSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlcnI6CiAgICAgICAgICAgICBncm91cC5hZGRvcHRp
b24oIi0tb3B0aW9uMSIsICItLW9wdGlvbi1vbmUiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAg
ICAgICBhc3NlcnQgc3RyKHsiLS1vcHRpb24xIn0pIGluIHN0cihlcnIudmFsdWUpCiAKLSAgICBk
ZWYgdGVzdF9ncm91cF9zaG9ydG9wdF9sb3dlcmNhc2Uoc2VsZiwgcGFyc2VyKToKKyAgICBkZWYg
dGVzdF9ncm91cF9zaG9ydG9wdF9sb3dlcmNhc2Uoc2VsZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJz
ZXIpIC0+IE5vbmU6CiAgICAgICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJoZWxsbyIpCi0g
ICAgICAgIHB5dGVzdC5yYWlzZXMoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLAotICAgICAgICAg
ICAgIiIiCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAg
ICAgIGdyb3VwLmFkZG9wdGlvbigiLXgiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICAi
IiIsCi0gICAgICAgICkKICAgICAgICAgYXNzZXJ0IGxlbihncm91cC5vcHRpb25zKSA9PSAwCiAg
ICAgICAgIGdyb3VwLl9hZGRvcHRpb24oIi14IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICAg
ICAgYXNzZXJ0IGxlbihncm91cC5vcHRpb25zKSA9PSAxCiAKLSAgICBkZWYgdGVzdF9wYXJzZXJf
YWRkb3B0aW9uKHNlbGYsIHBhcnNlcik6CisgICAgZGVmIHRlc3RfcGFyc2VyX2FkZG9wdGlvbihz
ZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAgZ3JvdXAgPSBw
YXJzZXIuZ2V0Z3JvdXAoImN1c3RvbSBvcHRpb25zIikKICAgICAgICAgYXNzZXJ0IGxlbihncm91
cC5vcHRpb25zKSA9PSAwCiAgICAgICAgIGdyb3VwLmFkZG9wdGlvbigiLS1vcHRpb24xIiwgYWN0
aW9uPSJzdG9yZV90cnVlIikKICAgICAgICAgYXNzZXJ0IGxlbihncm91cC5vcHRpb25zKSA9PSAx
CiAKLSAgICBkZWYgdGVzdF9wYXJzZShzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X3BhcnNl
KHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAtPiBOb25lOgogICAgICAgICBwYXJzZXIu
YWRkb3B0aW9uKCItLWhlbGxvIiwgZGVzdD0iaGVsbG8iLCBhY3Rpb249InN0b3JlIikKICAgICAg
ICAgYXJncyA9IHBhcnNlci5wYXJzZShbIi0taGVsbG8iLCAid29ybGQiXSkKICAgICAgICAgYXNz
ZXJ0IGFyZ3MuaGVsbG8gPT0gIndvcmxkIgogICAgICAgICBhc3NlcnQgbm90IGdldGF0dHIoYXJn
cywgcGFyc2VvcHQuRklMRV9PUl9ESVIpCiAKLSAgICBkZWYgdGVzdF9wYXJzZTIoc2VsZiwgcGFy
c2VyKToKKyAgICBkZWYgdGVzdF9wYXJzZTIoc2VsZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJzZXIp
IC0+IE5vbmU6CiAgICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2UoW3B5LnBhdGgubG9jYWwoKV0p
CiAgICAgICAgIGFzc2VydCBnZXRhdHRyKGFyZ3MsIHBhcnNlb3B0LkZJTEVfT1JfRElSKVswXSA9
PSBweS5wYXRoLmxvY2FsKCkKIAotICAgIGRlZiB0ZXN0X3BhcnNlX2tub3duX2FyZ3Moc2VsZiwg
cGFyc2VyKToKKyAgICBkZWYgdGVzdF9wYXJzZV9rbm93bl9hcmdzKHNlbGYsIHBhcnNlcjogcGFy
c2VvcHQuUGFyc2VyKSAtPiBOb25lOgogICAgICAgICBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhb
cHkucGF0aC5sb2NhbCgpXSkKICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS1oZWxsbyIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIG5zID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3Mo
WyJ4IiwgIi0teSIsICItLWhlbGxvIiwgInRoaXMiXSkKICAgICAgICAgYXNzZXJ0IG5zLmhlbGxv
CiAgICAgICAgIGFzc2VydCBucy5maWxlX29yX2RpciA9PSBbIngiXQogCi0gICAgZGVmIHRlc3Rf
cGFyc2Vfa25vd25fYW5kX3Vua25vd25fYXJncyhzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0
X3BhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3Moc2VsZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJz
ZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0taGVsbG8iLCBhY3Rpb249
InN0b3JlX3RydWUiKQogICAgICAgICBucywgdW5rbm93biA9IHBhcnNlci5wYXJzZV9rbm93bl9h
bmRfdW5rbm93bl9hcmdzKAogICAgICAgICAgICAgWyJ4IiwgIi0teSIsICItLWhlbGxvIiwgInRo
aXMiXQpAQCAtMTM5LDcgKzE0MSw3IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAg
ICAgYXNzZXJ0IG5zLmZpbGVfb3JfZGlyID09IFsieCJdCiAgICAgICAgIGFzc2VydCB1bmtub3du
ID09IFsiLS15IiwgInRoaXMiXQogCi0gICAgZGVmIHRlc3RfcGFyc2Vfd2lsbF9zZXRfZGVmYXVs
dChzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X3BhcnNlX3dpbGxfc2V0X2RlZmF1bHQoc2Vs
ZiwgcGFyc2VyOiBwYXJzZW9wdC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlci5hZGRv
cHRpb24oIi0taGVsbG8iLCBkZXN0PSJoZWxsbyIsIGRlZmF1bHQ9IngiLCBhY3Rpb249InN0b3Jl
IikKICAgICAgICAgb3B0aW9uID0gcGFyc2VyLnBhcnNlKFtdKQogICAgICAgICBhc3NlcnQgb3B0
aW9uLmhlbGxvID09ICJ4IgpAQCAtMTQ3LDI1ICsxNDksMjIgQEAgY2xhc3MgVGVzdFBhcnNlcihv
YmplY3QpOgogICAgICAgICBwYXJzZXIucGFyc2Vfc2V0b3B0aW9uKFtdLCBvcHRpb24pCiAgICAg
ICAgIGFzc2VydCBvcHRpb24uaGVsbG8gPT0gIngiCiAKLSAgICBkZWYgdGVzdF9wYXJzZV9zZXRv
cHRpb24oc2VsZiwgcGFyc2VyKToKKyAgICBkZWYgdGVzdF9wYXJzZV9zZXRvcHRpb24oc2VsZiwg
cGFyc2VyOiBwYXJzZW9wdC5QYXJzZXIpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlci5hZGRvcHRp
b24oIi0taGVsbG8iLCBkZXN0PSJoZWxsbyIsIGFjdGlvbj0ic3RvcmUiKQogICAgICAgICBwYXJz
ZXIuYWRkb3B0aW9uKCItLXdvcmxkIiwgZGVzdD0id29ybGQiLCBkZWZhdWx0PTQyKQogCi0gICAg
ICAgIGNsYXNzIEEob2JqZWN0KToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBvcHRpb24g
PSBBKCkKKyAgICAgICAgb3B0aW9uID0gYXJncGFyc2UuTmFtZXNwYWNlKCkKICAgICAgICAgYXJn
cyA9IHBhcnNlci5wYXJzZV9zZXRvcHRpb24oWyItLWhlbGxvIiwgIndvcmxkIl0sIG9wdGlvbikK
ICAgICAgICAgYXNzZXJ0IG9wdGlvbi5oZWxsbyA9PSAid29ybGQiCiAgICAgICAgIGFzc2VydCBv
cHRpb24ud29ybGQgPT0gNDIKICAgICAgICAgYXNzZXJ0IG5vdCBhcmdzCiAKLSAgICBkZWYgdGVz
dF9wYXJzZV9zcGVjaWFsX2Rlc3RpbmF0aW9uKHNlbGYsIHBhcnNlcik6CisgICAgZGVmIHRlc3Rf
cGFyc2Vfc3BlY2lhbF9kZXN0aW5hdGlvbihzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikg
LT4gTm9uZToKICAgICAgICAgcGFyc2VyLmFkZG9wdGlvbigiLS11bHRpbWF0ZS1hbnN3ZXIiLCB0
eXBlPWludCkKICAgICAgICAgYXJncyA9IHBhcnNlci5wYXJzZShbIi0tdWx0aW1hdGUtYW5zd2Vy
IiwgIjQyIl0pCiAgICAgICAgIGFzc2VydCBhcmdzLnVsdGltYXRlX2Fuc3dlciA9PSA0MgogCi0g
ICAgZGVmIHRlc3RfcGFyc2Vfc3BsaXRfcG9zaXRpb25hbF9hcmd1bWVudHMoc2VsZiwgcGFyc2Vy
KToKKyAgICBkZWYgdGVzdF9wYXJzZV9zcGxpdF9wb3NpdGlvbmFsX2FyZ3VtZW50cyhzZWxmLCBw
YXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAgcGFyc2VyLmFkZG9wdGlv
bigiLVIiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCIt
UyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiKQogICAgICAgICBhcmdzID0gcGFyc2VyLnBhcnNlKFsi
LVIiLCAiNCIsICIyIiwgIi1TIl0pCkBAIC0xNzksOCArMTc4LDcgQEAgY2xhc3MgVGVzdFBhcnNl
cihvYmplY3QpOgogICAgICAgICBhc3NlcnQgYXJncy5SIGlzIFRydWUKICAgICAgICAgYXNzZXJ0
IGFyZ3MuUyBpcyBGYWxzZQogCi0gICAgZGVmIHRlc3RfcGFyc2VfZGVmYXVsdGdldHRlcihzZWxm
KToKLQorICAgIGRlZiB0ZXN0X3BhcnNlX2RlZmF1bHRnZXR0ZXIoc2VsZikgLT4gTm9uZToKICAg
ICAgICAgZGVmIGRlZmF1bHRnZXQob3B0aW9uKToKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRy
KG9wdGlvbiwgInR5cGUiKToKICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTE5OCwyMSArMTk2
LDE3IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IG9wdGlvbi50
aGlzID09IDQyCiAgICAgICAgIGFzc2VydCBvcHRpb24ubm8gaXMgRmFsc2UKIAotICAgIGRlZiB0
ZXN0X2Ryb3Bfc2hvcnRfaGVscGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Ryb3Bfc2hvcnRfaGVs
cGVyKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKAotICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPXBhcnNlb3B0LkRyb3BTaG9ydGVyTG9u
Z0hlbHBGb3JtYXR0ZXIKKyAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1wYXJzZW9wdC5Ecm9w
U2hvcnRlckxvbmdIZWxwRm9ybWF0dGVyLCBhbGxvd19hYmJyZXY9RmFsc2UKICAgICAgICAgKQog
ICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAgIi10IiwgIi0tdHdvd29y
ZCIsICItLWR1byIsICItLXR3by13b3JkIiwgIi0tdHdvIiwgaGVscD0iZm9vIgotICAgICAgICAp
Lm1hcF9sb25nX29wdGlvbiA9IHsKLSAgICAgICAgICAgICJ0d28iOiAidHdvLXdvcmQiCi0gICAg
ICAgIH0KKyAgICAgICAgKQogICAgICAgICAjIHRocm93cyBlcnJvciBvbiAtLWRldXggb25seSEK
ICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgICItZCIsICItLWRldXht
b3RzIiwgIi0tZGV1eC1tb3RzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iZm9vIgotICAg
ICAgICApLm1hcF9sb25nX29wdGlvbiA9IHsKLSAgICAgICAgICAgICJkZXV4IjogImRldXgtbW90
cyIKLSAgICAgICAgfQorICAgICAgICApCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1z
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0ic2luZ2xlIHNob3J0IikKICAgICAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS1hYmMiLCAiLWEiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxw
PSJiYXIiKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWtsbSIsICItayIsICItLWts
LW0iLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJiYXIiKQpAQCAtMjI0LDkgKzIxOCw3IEBA
IGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAogICAgICAgICAgICAgIi14IiwgIi0tZXhpdC1vbi1maXJzdCIsICItLWV4aXRm
aXJzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InNwYW0iCi0gICAgICAgICkubWFwX2xv
bmdfb3B0aW9uID0gewotICAgICAgICAgICAgImV4aXRmaXJzdCI6ICJleGl0LW9uLWZpcnN0Igot
ICAgICAgICB9CisgICAgICAgICkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiZmlsZXNf
YW5kX2RpcnMiLCBuYXJncz0iKiIpCiAgICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhb
Ii1rIiwgIi0tZHVvIiwgImhhbGxvIiwgIi0tZXhpdGZpcnN0Il0pCiAgICAgICAgIGFzc2VydCBh
cmdzLnR3b3dvcmQgPT0gImhhbGxvIgpAQCAtMjQxLDM0ICsyMzMsMzIgQEAgY2xhc3MgVGVzdFBh
cnNlcihvYmplY3QpOgogICAgICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoWyJmaWxlIiwg
ImRpciJdKQogICAgICAgICBhc3NlcnQgInwiLmpvaW4oYXJncy5maWxlc19hbmRfZGlycykgPT0g
ImZpbGV8ZGlyIgogCi0gICAgZGVmIHRlc3RfZHJvcF9zaG9ydF8wKHNlbGYsIHBhcnNlcik6Cisg
ICAgZGVmIHRlc3RfZHJvcF9zaG9ydF8wKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAt
PiBOb25lOgogICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWZ1bmNhcmciLCAiLS1mdW5jLWFy
ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIHBhcnNlci5hZGRvcHRpb24oIi0tYWJj
LWRlZiIsICItLWFiYy1kZWYiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgICAgICBwYXJzZXIu
YWRkb3B0aW9uKCItLWtsbS1oaWoiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBhcmdz
ID0gcGFyc2VyLnBhcnNlKFsiLS1mdW5jYXJnIiwgIi0tayJdKQotICAgICAgICBhc3NlcnQgYXJn
cy5mdW5jYXJnIGlzIFRydWUKLSAgICAgICAgYXNzZXJ0IGFyZ3MuYWJjX2RlZiBpcyBGYWxzZQot
ICAgICAgICBhc3NlcnQgYXJncy5rbG1faGlqIGlzIFRydWUKKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKFVzYWdlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlKFsiLS1mdW5jYXJn
IiwgIi0tayJdKQogCi0gICAgZGVmIHRlc3RfZHJvcF9zaG9ydF8yKHNlbGYsIHBhcnNlcik6Cisg
ICAgZGVmIHRlc3RfZHJvcF9zaG9ydF8yKHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAt
PiBOb25lOgogICAgICAgICBwYXJzZXIuYWRkb3B0aW9uKCItLWZ1bmMtYXJnIiwgIi0tZG9pdCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2UoWyItLWRv
aXQiXSkKICAgICAgICAgYXNzZXJ0IGFyZ3MuZnVuY19hcmcgaXMgVHJ1ZQogCi0gICAgZGVmIHRl
c3RfZHJvcF9zaG9ydF8zKHNlbGYsIHBhcnNlcik6CisgICAgZGVmIHRlc3RfZHJvcF9zaG9ydF8z
KHNlbGYsIHBhcnNlcjogcGFyc2VvcHQuUGFyc2VyKSAtPiBOb25lOgogICAgICAgICBwYXJzZXIu
YWRkb3B0aW9uKCItLWZ1bmMtYXJnIiwgIi0tZnVuY2FyZyIsICItLWRvaXQiLCBhY3Rpb249InN0
b3JlX3RydWUiKQogICAgICAgICBhcmdzID0gcGFyc2VyLnBhcnNlKFsiYWJjZCJdKQogICAgICAg
ICBhc3NlcnQgYXJncy5mdW5jX2FyZyBpcyBGYWxzZQogICAgICAgICBhc3NlcnQgYXJncy5maWxl
X29yX2RpciA9PSBbImFiY2QiXQogCi0gICAgZGVmIHRlc3RfZHJvcF9zaG9ydF9oZWxwMChzZWxm
LCBwYXJzZXIsIGNhcHN5cyk6CisgICAgZGVmIHRlc3RfZHJvcF9zaG9ydF9oZWxwMChzZWxmLCBw
YXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAgcGFyc2VyLmFkZG9wdGlv
bigiLS1mdW5jLWFyZ3MiLCAiLS1kb2l0IiwgaGVscD0iZm9vIiwgYWN0aW9uPSJzdG9yZV90cnVl
IikKICAgICAgICAgcGFyc2VyLnBhcnNlKFtdKQogICAgICAgICBoZWxwID0gcGFyc2VyLm9wdHBh
cnNlci5mb3JtYXRfaGVscCgpCiAgICAgICAgIGFzc2VydCAiLS1mdW5jLWFyZ3MsIC0tZG9pdCAg
Zm9vIiBpbiBoZWxwCiAKICAgICAjIHRlc3Rpbmcgd291bGQgYmUgbW9yZSBoZWxwZnVsIHdpdGgg
YWxsIGhlbHAgZ2VuZXJhdGVkCi0gICAgZGVmIHRlc3RfZHJvcF9zaG9ydF9oZWxwMShzZWxmLCBw
YXJzZXIsIGNhcHN5cyk6CisgICAgZGVmIHRlc3RfZHJvcF9zaG9ydF9oZWxwMShzZWxmLCBwYXJz
ZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToKICAgICAgICAgZ3JvdXAgPSBwYXJzZXIuZ2V0
Z3JvdXAoImdlbmVyYWwiKQogICAgICAgICBncm91cC5hZGRvcHRpb24oIi0tZG9pdCIsICItLWZ1
bmMtYXJncyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImZvbyIpCiAgICAgICAgIGdyb3Vw
Ll9hZGRvcHRpb24oCkBAIC0yODIsNyArMjcyLDcgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3Qp
OgogICAgICAgICBoZWxwID0gcGFyc2VyLm9wdHBhcnNlci5mb3JtYXRfaGVscCgpCiAgICAgICAg
IGFzc2VydCAiLWRvaXQsIC0tZnVuYy1hcmdzICBmb28iIGluIGhlbHAKIAotICAgIGRlZiB0ZXN0
X211bHRpcGxlX21ldGF2YXJfaGVscChzZWxmLCBwYXJzZXIpOgorICAgIGRlZiB0ZXN0X211bHRp
cGxlX21ldGF2YXJfaGVscChzZWxmLCBwYXJzZXI6IHBhcnNlb3B0LlBhcnNlcikgLT4gTm9uZToK
ICAgICAgICAgIiIiCiAgICAgICAgIEhlbHAgdGV4dCBmb3Igb3B0aW9ucyB3aXRoIGEgbWV0YXZh
ciB0dXBsZSBzaG91bGQgZGlzcGxheSBoZWxwCiAgICAgICAgIGluIHRoZSBmb3JtICItLXByZWZl
cmVuY2VzPXZhbHVlMSB2YWx1ZTIgdmFsdWUzIiAoIzIwMDQpLgpAQCAtMjk3LDIwICsyODcsMzMg
QEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgogICAgICAgICBhc3NlcnQgIi0tcHJlZmVyZW5j
ZXM9dmFsdWUxIHZhbHVlMiB2YWx1ZTMiIGluIGhlbHAKIAogCi1kZWYgdGVzdF9hcmdjb21wbGV0
ZSh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6Ci0gICAgaWYgbm90IHB5LnBhdGgubG9jYWwuc3lzZmlu
ZCgiYmFzaCIpOgotICAgICAgICBweXRlc3Quc2tpcCgiYmFzaCBub3QgYXZhaWxhYmxlIikKK2Rl
ZiB0ZXN0X2FyZ2NvbXBsZXRlKHRlc3RkaXIsIG1vbmtleXBhdGNoKSAtPiBOb25lOgorICAgIHRy
eToKKyAgICAgICAgYmFzaF92ZXJzaW9uID0gc3VicHJvY2Vzcy5ydW4oCisgICAgICAgICAgICBb
ImJhc2giLCAiLS12ZXJzaW9uIl0sCisgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBF
LAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKKyAgICAgICAgICAgIGNo
ZWNrPVRydWUsCisgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAg
KS5zdGRvdXQKKyAgICBleGNlcHQgKE9TRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vy
cm9yKToKKyAgICAgICAgcHl0ZXN0LnNraXAoImJhc2ggaXMgbm90IGF2YWlsYWJsZSIpCisgICAg
aWYgIkdOVSBiYXNoIiBub3QgaW4gYmFzaF92ZXJzaW9uOgorICAgICAgICAjIFNlZSAjNzUxOC4K
KyAgICAgICAgcHl0ZXN0LnNraXAoIm5vdCBhIHJlYWwgYmFzaCIpCisKICAgICBzY3JpcHQgPSBz
dHIodGVzdGRpci50bXBkaXIuam9pbigidGVzdF9hcmdjb21wbGV0ZSIpKQotICAgIHB5dGVzdF9i
aW4gPSBzeXMuYXJndlswXQotICAgIGlmICJweXRlc3QiIG5vdCBpbiBvcy5wYXRoLmJhc2VuYW1l
KHB5dGVzdF9iaW4pOgotICAgICAgICBweXRlc3Quc2tpcCgibmVlZCB0byBiZSBydW4gd2l0aCBw
eXRlc3QgZXhlY3V0YWJsZSwgbm90ICVzIiAlIChweXRlc3RfYmluLCkpCiAKICAgICB3aXRoIG9w
ZW4oc3RyKHNjcmlwdCksICJ3IikgYXMgZnA6CiAgICAgICAgICMgcmVkaXJlY3Qgb3V0cHV0IGZy
b20gYXJnY29tcGxldGUgdG8gc3RkaW4gYW5kIHN0ZGVyciBpcyBub3QgdHJpdmlhbAogICAgICAg
ICAjIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xLzEyNTg5NDE5LzEzMDc5MDUKICAgICAgICAg
IyBzbyB3ZSB1c2UgYmFzaAotICAgICAgICBmcC53cml0ZSgnQ09NUF9XT1JEQlJFQUtTPSIkQ09N
UF9XT1JEQlJFQUtTIiAlcyA4PiYxIDk+JjInICUgcHl0ZXN0X2JpbikKLSAgICAjIGFsdGVybmF0
aXZlIHdvdWxkIGJlIGV4dGVuZWRlZCBUZXN0ZGlyLntydW4oKSxfcnVuKCkscG9wZW4oKX0gdG8g
YmUgYWJsZQorICAgICAgICBmcC53cml0ZSgKKyAgICAgICAgICAgICdDT01QX1dPUkRCUkVBS1M9
IiRDT01QX1dPUkRCUkVBS1MiIHt9IC1tIHB5dGVzdCA4PiYxIDk+JjInLmZvcm1hdCgKKyAgICAg
ICAgICAgICAgICBzaGxleC5xdW90ZShzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICMgYWx0ZXJuYXRpdmUgd291bGQgYmUgZXh0ZW5kZWQgVGVzdGRpci57cnVu
KCksX3J1bigpLHBvcGVuKCl9IHRvIGJlIGFibGUKICAgICAjIHRvIGhhbmRsZSBhIGtleXdvcmQg
YXJndW1lbnQgZW52IHRoYXQgcmVwbGFjZXMgb3MuZW52aXJvbiBpbiBwb3BlbiBvcgogICAgICMg
ZXh0ZW5kcyB0aGUgY29weSwgYWR2YW50YWdlOiBjb3VsZCBub3QgZm9yZ2V0IHRvIHJlc3RvcmUK
ICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIl9BUkdDT01QTEVURSIsICIxIikKQEAgLTMyNSw3ICsz
MjgsMTEgQEAgZGVmIHRlc3RfYXJnY29tcGxldGUodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgogICAg
ICAgICAjIGFyZ2NvbXBsZXRlIG5vdCBmb3VuZAogICAgICAgICBweXRlc3Quc2tpcCgiYXJnY29t
cGxldGUgbm90IGF2YWlsYWJsZSIpCiAgICAgZWxpZiBub3QgcmVzdWx0LnN0ZG91dC5zdHIoKToK
LSAgICAgICAgcHl0ZXN0LnNraXAoImJhc2ggcHJvdmlkZWQgbm8gb3V0cHV0LCBhcmdjb21wbGV0
ZSBub3QgYXZhaWxhYmxlPyIpCisgICAgICAgIHB5dGVzdC5za2lwKAorICAgICAgICAgICAgImJh
c2ggcHJvdmlkZWQgbm8gb3V0cHV0IG9uIHN0ZG91dCwgYXJnY29tcGxldGUgbm90IGF2YWlsYWJs
ZT8gKHN0ZGVycj17IXJ9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHJlc3VsdC5zdGRlcnIu
c3RyKCkKKyAgICAgICAgICAgICkKKyAgICAgICAgKQogICAgIGVsc2U6CiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIi0tZnVuY2FyZ3MiLCAiLS1mdWxsdHJhY2UiXSkKICAg
ICBvcy5ta2RpcigidGVzdF9hcmdjb21wbGV0ZS5kIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9wYXN0ZWJpbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wYXN0
ZWJpbi5weQppbmRleCBhZDdjNGQwYzFjMDYuLjdmODhhMTNlYjQzYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy90ZXN0X3Bhc3RlYmluLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9wYXN0ZWJpbi5weQpAQCAtMSwxNCArMSwxMyBAQAotIyBlbmNvZGluZzogdXRmLTgK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRf
ZnVuY3Rpb24KLWltcG9ydCBzeXMKLWltcG9ydCBweXRlc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBM
aXN0Citmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAoraW1wb3J0IHB5dGVzdAogCi1jbGFzcyBU
ZXN0UGFzdGVDYXB0dXJlKG9iamVjdCk6CiAKK2NsYXNzIFRlc3RQYXN0ZUNhcHR1cmU6CiAgICAg
QHB5dGVzdC5maXh0dXJlCi0gICAgZGVmIHBhc3RlYmlubGlzdChzZWxmLCBtb25rZXlwYXRjaCwg
cmVxdWVzdCk6Ci0gICAgICAgIHBhc3RlYmlubGlzdCA9IFtdCisgICAgZGVmIHBhc3RlYmlubGlz
dChzZWxmLCBtb25rZXlwYXRjaCwgcmVxdWVzdCkgLT4gTGlzdFtVbmlvbltzdHIsIGJ5dGVzXV06
CisgICAgICAgIHBhc3RlYmlubGlzdCA9IFtdICAjIHR5cGU6IExpc3RbVW5pb25bc3RyLCBieXRl
c11dCiAgICAgICAgIHBsdWdpbiA9IHJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1
Z2luKCJwYXN0ZWJpbiIpCiAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocGx1Z2luLCAiY3Jl
YXRlX25ld19wYXN0ZSIsIHBhc3RlYmlubGlzdC5hcHBlbmQpCiAgICAgICAgIHJldHVybiBwYXN0
ZWJpbmxpc3QKQEAgLTI1LDcgKzI0LDcgQEAgY2xhc3MgVGVzdFBhc3RlQ2FwdHVyZShvYmplY3Qp
OgogICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCIiKQogICAgICAgICAiIiIKICAgICAgICAg
KQotICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4odGVzdHBhdGgsICItLXBhc3Rl
PWZhaWxlZCIpCisgICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bih0ZXN0cGF0aCwg
Ii0tcGFzdGViaW49ZmFpbGVkIikKICAgICAgICAgYXNzZXJ0IGxlbihwYXN0ZWJpbmxpc3QpID09
IDEKICAgICAgICAgcyA9IHBhc3RlYmlubGlzdFswXQogICAgICAgICBhc3NlcnQgcy5maW5kKCJk
ZWYgdGVzdF9mYWlsIikgIT0gLTEKQEAgLTU5LDIyICs1OCwxOCBAQCBjbGFzcyBUZXN0UGFzdGVD
YXB0dXJlKG9iamVjdCk6CiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0
X25vbl9hc2NpaV9wYXN0ZV90ZXh0KHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X25vbl9h
c2NpaV9wYXN0ZV90ZXh0KHNlbGYsIHRlc3RkaXIsIHBhc3RlYmlubGlzdCk6CiAgICAgICAgICIi
Ik1ha2Ugc3VyZSB0aGF0IHRleHQgd2hpY2ggY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnMg
aXMgcGFzdGVkCiAgICAgICAgIGNvcnJlY3RseS4gU2VlICMxMjE5LgogICAgICAgICAiIiIKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgdGVzdF91bmljb2RlPSIiIgot
ICAgICAgICAgICAgIyBlbmNvZGluZzogdXRmLTgKKyAgICAgICAgICAgIHRlc3RfdW5pY29kZT0i
IiJcCiAgICAgICAgICAgICBkZWYgdGVzdCgpOgogICAgICAgICAgICAgICAgIGFzc2VydCAn4pi6
JyA9PSAxCi0gICAgICAgICIiIgorICAgICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tcGFzdGViaW49YWxsIikKLSAgICAgICAgaWYg
c3lzLnZlcnNpb25faW5mb1swXSA9PSAzOgotICAgICAgICAgICAgZXhwZWN0ZWRfbXNnID0gIiph
c3NlcnQgJ+KYuicgPT0gMSoiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleHBlY3RlZF9t
c2cgPSAiKmFzc2VydCAnXFx4ZTJcXHg5OFxceGJhJyA9PSAxKiIKKyAgICAgICAgZXhwZWN0ZWRf
bXNnID0gIiphc3NlcnQgJ+KYuicgPT0gMSoiCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICBleHBlY3RlZF9tc2csCkBA
IC04Miw1MSArNzcsMTA1IEBAIGNsYXNzIFRlc3RQYXN0ZUNhcHR1cmUob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAiKlNlbmRpbmcgaW5mb3JtYXRpb24gdG8gUGFzdGUgU2VydmljZSoiLAogICAg
ICAgICAgICAgXQogICAgICAgICApCisgICAgICAgIGFzc2VydCBsZW4ocGFzdGViaW5saXN0KSA9
PSAxCiAKIAotY2xhc3MgVGVzdFBhc3RlKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RQYXN0ZToKICAg
ICBAcHl0ZXN0LmZpeHR1cmUKICAgICBkZWYgcGFzdGViaW4oc2VsZiwgcmVxdWVzdCk6CiAgICAg
ICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigicGFzdGVi
aW4iKQogCiAgICAgQHB5dGVzdC5maXh0dXJlCi0gICAgZGVmIG1vY2tlZF91cmxvcGVuKHNlbGYs
IG1vbmtleXBhdGNoKToKLSAgICAgICAgIiIiCi0gICAgICAgIG1vbmtleXBhdGNoIHRoZSBhY3R1
YWwgdXJsb3BlbiBjYWxscyBkb25lIGJ5IHRoZSBpbnRlcm5hbCBwbHVnaW4KLSAgICAgICAgZnVu
Y3Rpb24gdGhhdCBjb25uZWN0cyB0byBicGFzdGUgc2VydmljZS4KLSAgICAgICAgIiIiCisgICAg
ZGVmIG1vY2tlZF91cmxvcGVuX2ZhaWwoc2VsZiwgbW9ua2V5cGF0Y2gpOgorICAgICAgICAiIiJN
b25rZXlwYXRjaCB0aGUgYWN0dWFsIHVybG9wZW4gY2FsbCB0byBlbXVsYXRlIGEgSFRUUCBFcnJv
ciA0MDAuIiIiCiAgICAgICAgIGNhbGxzID0gW10KIAorICAgICAgICBpbXBvcnQgdXJsbGliLmVy
cm9yCisgICAgICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdAorCiAgICAgICAgIGRlZiBtb2NrZWQo
dXJsLCBkYXRhKToKICAgICAgICAgICAgIGNhbGxzLmFwcGVuZCgodXJsLCBkYXRhKSkKKyAgICAg
ICAgICAgIHJhaXNlIHVybGxpYi5lcnJvci5IVFRQRXJyb3IodXJsLCA0MDAsICJCYWQgcmVxdWVz
dCIsIE5vbmUsIE5vbmUpCiAKLSAgICAgICAgICAgIGNsYXNzIER1bW15RmlsZShvYmplY3QpOgor
ICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHVybGxpYi5yZXF1ZXN0LCAidXJsb3BlbiIsIG1v
Y2tlZCkKKyAgICAgICAgcmV0dXJuIGNhbGxzCiAKKyAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICBk
ZWYgbW9ja2VkX3VybG9wZW5faW52YWxpZChzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgICIi
Ik1vbmtleXBhdGNoIHRoZSBhY3R1YWwgdXJsb3BlbiBjYWxscyBkb25lIGJ5IHRoZSBpbnRlcm5h
bCBwbHVnaW4KKyAgICAgICAgZnVuY3Rpb24gdGhhdCBjb25uZWN0cyB0byBicGFzdGUgc2Vydmlj
ZSwgYnV0IHJldHVybiBhIHVybCBpbiBhbgorICAgICAgICB1bmV4cGVjdGVkIGZvcm1hdC4iIiIK
KyAgICAgICAgY2FsbHMgPSBbXQorCisgICAgICAgIGRlZiBtb2NrZWQodXJsLCBkYXRhKToKKyAg
ICAgICAgICAgIGNhbGxzLmFwcGVuZCgodXJsLCBkYXRhKSkKKworICAgICAgICAgICAgY2xhc3Mg
RHVtbXlGaWxlOgogICAgICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYpOgogICAgICAgICAgICAg
ICAgICAgICAjIHBhcnQgb2YgaHRtbCBvZiBhIG5vcm1hbCByZXNwb25zZQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYidWaWV3IDxhIGhyZWY9Ii9yYXcvM2MwYzY3NTBiZCI+cmF3PC9hPi4n
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiJ1ZpZXcgPGEgaHJlZj0iL2ludmFsaWQvM2Mw
YzY3NTBiZCI+cmF3PC9hPi4nCiAKICAgICAgICAgICAgIHJldHVybiBEdW1teUZpbGUoKQogCi0g
ICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCk6Ci0gICAgICAgICAgICBpbXBvcnQg
dXJsbGliCisgICAgICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdAorCisgICAgICAgIG1vbmtleXBh
dGNoLnNldGF0dHIodXJsbGliLnJlcXVlc3QsICJ1cmxvcGVuIiwgbW9ja2VkKQorICAgICAgICBy
ZXR1cm4gY2FsbHMKKworICAgIEBweXRlc3QuZml4dHVyZQorICAgIGRlZiBtb2NrZWRfdXJsb3Bl
bihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgICAgICIiIk1vbmtleXBhdGNoIHRoZSBhY3R1YWwg
dXJsb3BlbiBjYWxscyBkb25lIGJ5IHRoZSBpbnRlcm5hbCBwbHVnaW4KKyAgICAgICAgZnVuY3Rp
b24gdGhhdCBjb25uZWN0cyB0byBicGFzdGUgc2VydmljZS4iIiIKKyAgICAgICAgY2FsbHMgPSBb
XQorCisgICAgICAgIGRlZiBtb2NrZWQodXJsLCBkYXRhKToKKyAgICAgICAgICAgIGNhbGxzLmFw
cGVuZCgodXJsLCBkYXRhKSkKIAotICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cih1cmxs
aWIsICJ1cmxvcGVuIiwgbW9ja2VkKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW1wb3J0
IHVybGxpYi5yZXF1ZXN0CisgICAgICAgICAgICBjbGFzcyBEdW1teUZpbGU6CisgICAgICAgICAg
ICAgICAgZGVmIHJlYWQoc2VsZik6CisgICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiBodG1s
IG9mIGEgbm9ybWFsIHJlc3BvbnNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiJ1ZpZXcg
PGEgaHJlZj0iL3Jhdy8zYzBjNjc1MGJkIj5yYXc8L2E+LicKKworICAgICAgICAgICAgcmV0dXJu
IER1bW15RmlsZSgpCiAKLSAgICAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodXJsbGliLnJl
cXVlc3QsICJ1cmxvcGVuIiwgbW9ja2VkKQorICAgICAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QK
KworICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHVybGxpYi5yZXF1ZXN0LCAidXJsb3BlbiIs
IG1vY2tlZCkKICAgICAgICAgcmV0dXJuIGNhbGxzCiAKKyAgICBkZWYgdGVzdF9wYXN0ZWJpbl9p
bnZhbGlkX3VybChzZWxmLCBwYXN0ZWJpbiwgbW9ja2VkX3VybG9wZW5faW52YWxpZCk6CisgICAg
ICAgIHJlc3VsdCA9IHBhc3RlYmluLmNyZWF0ZV9uZXdfcGFzdGUoYiJmdWxsLXBhc3RlLWNvbnRl
bnRzIikKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAg
PT0gImJhZCByZXNwb25zZTogaW52YWxpZCBmb3JtYXQgKCdWaWV3IDxhIGhyZWY9XCIvaW52YWxp
ZC8zYzBjNjc1MGJkXCI+cmF3PC9hPi4nKSIKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgbGVu
KG1vY2tlZF91cmxvcGVuX2ludmFsaWQpID09IDEKKworICAgIGRlZiB0ZXN0X3Bhc3RlYmluX2h0
dHBfZXJyb3Ioc2VsZiwgcGFzdGViaW4sIG1vY2tlZF91cmxvcGVuX2ZhaWwpOgorICAgICAgICBy
ZXN1bHQgPSBwYXN0ZWJpbi5jcmVhdGVfbmV3X3Bhc3RlKGIiZnVsbC1wYXN0ZS1jb250ZW50cyIp
CisgICAgICAgIGFzc2VydCByZXN1bHQgPT0gImJhZCByZXNwb25zZTogSFRUUCBFcnJvciA0MDA6
IEJhZCByZXF1ZXN0IgorICAgICAgICBhc3NlcnQgbGVuKG1vY2tlZF91cmxvcGVuX2ZhaWwpID09
IDEKKwogICAgIGRlZiB0ZXN0X2NyZWF0ZV9uZXdfcGFzdGUoc2VsZiwgcGFzdGViaW4sIG1vY2tl
ZF91cmxvcGVuKToKICAgICAgICAgcmVzdWx0ID0gcGFzdGViaW4uY3JlYXRlX25ld19wYXN0ZShi
ImZ1bGwtcGFzdGUtY29udGVudHMiKQogICAgICAgICBhc3NlcnQgcmVzdWx0ID09ICJodHRwczov
L2JwYXN0ZS5uZXQvc2hvdy8zYzBjNjc1MGJkIgogICAgICAgICBhc3NlcnQgbGVuKG1vY2tlZF91
cmxvcGVuKSA9PSAxCiAgICAgICAgIHVybCwgZGF0YSA9IG1vY2tlZF91cmxvcGVuWzBdCiAgICAg
ICAgIGFzc2VydCB0eXBlKGRhdGEpIGlzIGJ5dGVzCi0gICAgICAgIGxleGVyID0gInB5dGhvbjMi
IGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMyBlbHNlICJweXRob24iCisgICAgICAgIGxleGVy
ID0gInRleHQiCiAgICAgICAgIGFzc2VydCB1cmwgPT0gImh0dHBzOi8vYnBhc3RlLm5ldCIKICAg
ICAgICAgYXNzZXJ0ICJsZXhlcj0lcyIgJSBsZXhlciBpbiBkYXRhLmRlY29kZSgpCiAgICAgICAg
IGFzc2VydCAiY29kZT1mdWxsLXBhc3RlLWNvbnRlbnRzIiBpbiBkYXRhLmRlY29kZSgpCiAgICAg
ICAgIGFzc2VydCAiZXhwaXJ5PTF3ZWVrIiBpbiBkYXRhLmRlY29kZSgpCisKKyAgICBkZWYgdGVz
dF9jcmVhdGVfbmV3X3Bhc3RlX2ZhaWx1cmUoc2VsZiwgcGFzdGViaW4sIG1vbmtleXBhdGNoKToK
KyAgICAgICAgaW1wb3J0IGlvCisgICAgICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdAorCisgICAg
ICAgIGRlZiByZXNwb25zZSh1cmwsIGRhdGEpOgorICAgICAgICAgICAgc3RyZWFtID0gaW8uQnl0
ZXNJTyhiInNvbWV0aGluZyBiYWQgb2NjdXJyZWQiKQorICAgICAgICAgICAgcmV0dXJuIHN0cmVh
bQorCisgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIodXJsbGliLnJlcXVlc3QsICJ1cmxvcGVu
IiwgcmVzcG9uc2UpCisgICAgICAgIHJlc3VsdCA9IHBhc3RlYmluLmNyZWF0ZV9uZXdfcGFzdGUo
YiJmdWxsLXBhc3RlLWNvbnRlbnRzIikKKyAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSAiYmFkIHJl
c3BvbnNlOiBpbnZhbGlkIGZvcm1hdCAoJ3NvbWV0aGluZyBiYWQgb2NjdXJyZWQnKSIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wYXRobGliLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X3BhdGhsaWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi40MTIyOGQ2YjA5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3RfcGF0aGxpYi5weQpAQCAtMCwwICsxLDQwMyBAQAoraW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdC5tb2NrCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRl
bnQKKworaW1wb3J0IHB5CisKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5wYXRobGliIGlt
cG9ydCBiZXN0cmVscGF0aAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGNvbW1vbnBhdGgK
K2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBlbnN1cmVfZGVsZXRhYmxlCitmcm9tIF9weXRl
c3QucGF0aGxpYiBpbXBvcnQgZm5tYXRjaF9leAorZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0
IGdldF9leHRlbmRlZF9sZW5ndGhfcGF0aF9zdHIKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9y
dCBnZXRfbG9ja19wYXRoCitmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgaW1wb3J0X3BhdGgK
K2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBJbXBvcnRQYXRoTWlzbWF0Y2hFcnJvcgorZnJv
bSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IG1heWJlX2RlbGV0ZV9hX251bWJlcmVkX2RpcgorZnJv
bSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9y
dCByZXNvbHZlX3BhY2thZ2VfcGF0aAorCisKK2NsYXNzIFRlc3RGTk1hdGNoZXJQb3J0OgorICAg
ICIiIlRlc3QgdGhhdCBvdXIgcG9ydCBvZiBweS5jb21tb24uRk5NYXRjaGVyIChmbm1hdGNoX2V4
KSBwcm9kdWNlcyB0aGUKKyAgICBzYW1lIHJlc3VsdHMgYXMgdGhlIG9yaWdpbmFsIHB5LnBhdGgu
bG9jYWwuZm5tYXRjaCBtZXRob2QuIiIiCisKKyAgICBAcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsi
cGF0aGxpYiIsICJweS5wYXRoIl0pCisgICAgZGVmIG1hdGNoKHNlbGYsIHJlcXVlc3QpOgorICAg
ICAgICBpZiByZXF1ZXN0LnBhcmFtID09ICJweS5wYXRoIjoKKworICAgICAgICAgICAgZGVmIG1h
dGNoXyhwYXR0ZXJuLCBwYXRoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHkucGF0aC5sb2Nh
bChwYXRoKS5mbm1hdGNoKHBhdHRlcm4pCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFz
c2VydCByZXF1ZXN0LnBhcmFtID09ICJwYXRobGliIgorCisgICAgICAgICAgICBkZWYgbWF0Y2hf
KHBhdHRlcm4sIHBhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiBmbm1hdGNoX2V4KHBhdHRl
cm4sIHBhdGgpCisKKyAgICAgICAgcmV0dXJuIG1hdGNoXworCisgICAgaWYgc3lzLnBsYXRmb3Jt
ID09ICJ3aW4zMiI6CisgICAgICAgIGRydjEgPSAiYzoiCisgICAgICAgIGRydjIgPSAiZDoiCisg
ICAgZWxzZToKKyAgICAgICAgZHJ2MSA9ICIvYyIKKyAgICAgICAgZHJ2MiA9ICIvZCIKKworICAg
IEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAgICAgInBhdHRlcm4sIHBhdGgiLAorICAg
ICAgICBbCisgICAgICAgICAgICAoIioucHkiLCAiZm9vLnB5IiksCisgICAgICAgICAgICAoIiou
cHkiLCAiYmFyL2Zvby5weSIpLAorICAgICAgICAgICAgKCJ0ZXN0XyoucHkiLCAiZm9vL3Rlc3Rf
Zm9vLnB5IiksCisgICAgICAgICAgICAoInRlc3RzLyoucHkiLCAidGVzdHMvZm9vLnB5IiksCisg
ICAgICAgICAgICAoZHJ2MSArICIvKi5weSIsIGRydjEgKyAiL2Zvby5weSIpLAorICAgICAgICAg
ICAgKGRydjEgKyAiL2Zvby8qLnB5IiwgZHJ2MSArICIvZm9vL2Zvby5weSIpLAorICAgICAgICAg
ICAgKCJ0ZXN0cy8qKi90ZXN0Ki5weSIsICJ0ZXN0cy9mb28vdGVzdF9mb28ucHkiKSwKKyAgICAg
ICAgICAgICgidGVzdHMvKiovZG9jL3Rlc3QqLnB5IiwgInRlc3RzL2Zvby9iYXIvZG9jL3Rlc3Rf
Zm9vLnB5IiksCisgICAgICAgICAgICAoInRlc3RzLyoqL2RvYy8qKi90ZXN0Ki5weSIsICJ0ZXN0
cy9mb28vZG9jL2Jhci90ZXN0X2Zvby5weSIpLAorICAgICAgICBdLAorICAgICkKKyAgICBkZWYg
dGVzdF9tYXRjaGluZyhzZWxmLCBtYXRjaCwgcGF0dGVybiwgcGF0aCk6CisgICAgICAgIGFzc2Vy
dCBtYXRjaChwYXR0ZXJuLCBwYXRoKQorCisgICAgZGVmIHRlc3RfbWF0Y2hpbmdfYWJzcGF0aChz
ZWxmLCBtYXRjaCk6CisgICAgICAgIGFic3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5q
b2luKCJ0ZXN0cy9mb28ucHkiKSkKKyAgICAgICAgYXNzZXJ0IG1hdGNoKCJ0ZXN0cy9mb28ucHki
LCBhYnNwYXRoKQorCisgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAicGF0
dGVybiwgcGF0aCIsCisgICAgICAgIFsKKyAgICAgICAgICAgICgiKi5weSIsICJmb28ucHljIiks
CisgICAgICAgICAgICAoIioucHkiLCAiZm9vL2Zvby5weWMiKSwKKyAgICAgICAgICAgICgidGVz
dHMvKi5weSIsICJmb28vZm9vLnB5IiksCisgICAgICAgICAgICAoZHJ2MSArICIvKi5weSIsIGRy
djIgKyAiL2Zvby5weSIpLAorICAgICAgICAgICAgKGRydjEgKyAiL2Zvby8qLnB5IiwgZHJ2MiAr
ICIvZm9vL2Zvby5weSIpLAorICAgICAgICAgICAgKCJ0ZXN0cy8qKi90ZXN0Ki5weSIsICJ0ZXN0
cy9mb28ucHkiKSwKKyAgICAgICAgICAgICgidGVzdHMvKiovdGVzdCoucHkiLCAiZm9vL3Rlc3Rf
Zm9vLnB5IiksCisgICAgICAgICAgICAoInRlc3RzLyoqL2RvYy90ZXN0Ki5weSIsICJ0ZXN0cy9m
b28vYmFyL2RvYy9mb28ucHkiKSwKKyAgICAgICAgICAgICgidGVzdHMvKiovZG9jL3Rlc3QqLnB5
IiwgInRlc3RzL2Zvby9iYXIvdGVzdF9mb28ucHkiKSwKKyAgICAgICAgXSwKKyAgICApCisgICAg
ZGVmIHRlc3Rfbm90X21hdGNoaW5nKHNlbGYsIG1hdGNoLCBwYXR0ZXJuLCBwYXRoKToKKyAgICAg
ICAgYXNzZXJ0IG5vdCBtYXRjaChwYXR0ZXJuLCBwYXRoKQorCisKK2NsYXNzIFRlc3RJbXBvcnRQ
YXRoOgorICAgICIiIgorCisgICAgTW9zdCBvZiB0aGUgdGVzdHMgaGVyZSB3ZXJlIGNvcGllZCBm
cm9tIHB5IGxpYidzIHRlc3RzIGZvciAicHkubG9jYWwucGF0aC5weWltcG9ydCIuCisKKyAgICBI
YXZpbmcgb3VyIG93biBweWltcG9ydC1saWtlIGZ1bmN0aW9uIGlzIGlubGluZSB3aXRoIHJlbW92
aW5nIHB5LnBhdGggZGVwZW5kZW5jeSBpbiB0aGUgZnV0dXJlLgorICAgICIiIgorCisgICAgQHB5
dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKKyAgICBkZWYgcGF0aDEoc2VsZiwgdG1wZGly
X2ZhY3RvcnkpOgorICAgICAgICBwYXRoID0gdG1wZGlyX2ZhY3RvcnkubWt0ZW1wKCJwYXRoIikK
KyAgICAgICAgc2VsZi5zZXR1cHRlc3RmcyhwYXRoKQorICAgICAgICB5aWVsZCBwYXRoCisgICAg
ICAgIGFzc2VydCBwYXRoLmpvaW4oInNhbXBsZWZpbGUiKS5jaGVjaygpCisKKyAgICBkZWYgc2V0
dXB0ZXN0ZnMoc2VsZiwgcGF0aCk6CisgICAgICAgICMgcHJpbnQgInNldHRpbmcgdXAgdGVzdCBm
cyBmb3IiLCByZXByKHBhdGgpCisgICAgICAgIHNhbXBsZWZpbGUgPSBwYXRoLmVuc3VyZSgic2Ft
cGxlZmlsZSIpCisgICAgICAgIHNhbXBsZWZpbGUud3JpdGUoInNhbXBsZWZpbGVcbiIpCisKKyAg
ICAgICAgZXhlY2ZpbGUgPSBwYXRoLmVuc3VyZSgiZXhlY2ZpbGUiKQorICAgICAgICBleGVjZmls
ZS53cml0ZSgieD00MiIpCisKKyAgICAgICAgZXhlY2ZpbGVweSA9IHBhdGguZW5zdXJlKCJleGVj
ZmlsZS5weSIpCisgICAgICAgIGV4ZWNmaWxlcHkud3JpdGUoIng9NDIiKQorCisgICAgICAgIGQg
PSB7MTogMiwgImhlbGxvIjogIndvcmxkIiwgImFuc3dlciI6IDQyfQorICAgICAgICBwYXRoLmVu
c3VyZSgic2FtcGxlcGlja2xlIikuZHVtcChkKQorCisgICAgICAgIHNhbXBsZWRpciA9IHBhdGgu
ZW5zdXJlKCJzYW1wbGVkaXIiLCBkaXI9MSkKKyAgICAgICAgc2FtcGxlZGlyLmVuc3VyZSgib3Ro
ZXJmaWxlIikKKworICAgICAgICBvdGhlcmRpciA9IHBhdGguZW5zdXJlKCJvdGhlcmRpciIsIGRp
cj0xKQorICAgICAgICBvdGhlcmRpci5lbnN1cmUoIl9faW5pdF9fLnB5IikKKworICAgICAgICBt
b2R1bGVfYSA9IG90aGVyZGlyLmVuc3VyZSgiYS5weSIpCisgICAgICAgIG1vZHVsZV9hLndyaXRl
KCJmcm9tIC5iIGltcG9ydCBzdHVmZiBhcyByZXN1bHRcbiIpCisgICAgICAgIG1vZHVsZV9iID0g
b3RoZXJkaXIuZW5zdXJlKCJiLnB5IikKKyAgICAgICAgbW9kdWxlX2Iud3JpdGUoJ3N0dWZmPSJn
b3QgaXQiXG4nKQorICAgICAgICBtb2R1bGVfYyA9IG90aGVyZGlyLmVuc3VyZSgiYy5weSIpCisg
ICAgICAgIG1vZHVsZV9jLndyaXRlKAorICAgICAgICAgICAgZGVkZW50KAorICAgICAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5OworICAgICAgICAgICAgaW1wb3J0IG90aGVy
ZGlyLmEKKyAgICAgICAgICAgIHZhbHVlID0gb3RoZXJkaXIuYS5yZXN1bHQKKyAgICAgICAgIiIi
CisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgbW9kdWxlX2QgPSBvdGhlcmRpci5l
bnN1cmUoImQucHkiKQorICAgICAgICBtb2R1bGVfZC53cml0ZSgKKyAgICAgICAgICAgIGRlZGVu
dCgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweTsKKyAgICAgICAg
ICAgIGZyb20gb3RoZXJkaXIgaW1wb3J0IGEKKyAgICAgICAgICAgIHZhbHVlMiA9IGEucmVzdWx0
CisgICAgICAgICIiIgorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9z
bW9rZV90ZXN0KHNlbGYsIHBhdGgxKToKKyAgICAgICAgb2JqID0gaW1wb3J0X3BhdGgocGF0aDEu
am9pbigiZXhlY2ZpbGUucHkiKSkKKyAgICAgICAgYXNzZXJ0IG9iai54ID09IDQyICAjIHR5cGU6
IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgIGFzc2VydCBvYmouX19uYW1lX18gPT0gImV4
ZWNmaWxlIgorCisgICAgZGVmIHRlc3RfcmVuYW1lZF9kaXJfY3JlYXRlc19taXNtYXRjaChzZWxm
LCB0bXBkaXIsIG1vbmtleXBhdGNoKToKKyAgICAgICAgcCA9IHRtcGRpci5lbnN1cmUoImEiLCAi
dGVzdF94MTIzLnB5IikKKyAgICAgICAgaW1wb3J0X3BhdGgocCkKKyAgICAgICAgdG1wZGlyLmpv
aW4oImEiKS5tb3ZlKHRtcGRpci5qb2luKCJiIikpCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhJbXBvcnRQYXRoTWlzbWF0Y2hFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRfcGF0aCh0bXBk
aXIuam9pbigiYiIsICJ0ZXN0X3gxMjMucHkiKSkKKworICAgICAgICAjIEVycm9ycyBjYW4gYmUg
aWdub3JlZC4KKyAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWV9JR05PUkVfSU1QT1JUTUlT
TUFUQ0giLCAiMSIpCisgICAgICAgIGltcG9ydF9wYXRoKHRtcGRpci5qb2luKCJiIiwgInRlc3Rf
eDEyMy5weSIpKQorCisgICAgICAgICMgUFlfSUdOT1JFX0lNUE9SVE1JU01BVENIPTAgZG9lcyBu
b3QgaWdub3JlIGVycm9yLgorICAgICAgICBtb25rZXlwYXRjaC5zZXRlbnYoIlBZX0lHTk9SRV9J
TVBPUlRNSVNNQVRDSCIsICIwIikKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEltcG9ydFBh
dGhNaXNtYXRjaEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydF9wYXRoKHRtcGRpci5qb2luKCJi
IiwgInRlc3RfeDEyMy5weSIpKQorCisgICAgZGVmIHRlc3RfbWVzc3lfbmFtZShzZWxmLCB0bXBk
aXIpOgorICAgICAgICAjIGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL2lzc3Vl
LzEyOQorICAgICAgICBwYXRoID0gdG1wZGlyLmVuc3VyZSgiZm9vX19pbml0X18ucHkiKQorICAg
ICAgICBtb2R1bGUgPSBpbXBvcnRfcGF0aChwYXRoKQorICAgICAgICBhc3NlcnQgbW9kdWxlLl9f
bmFtZV9fID09ICJmb29fX2luaXRfXyIKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmLCB0bXBkaXIp
OgorICAgICAgICBwID0gdG1wZGlyLmpvaW4oImhlbGxvXzEyMyIpCisgICAgICAgIHBfaW5pdCA9
IHAuZW5zdXJlKCJfX2luaXRfXy5weSIpCisgICAgICAgIG0gPSBpbXBvcnRfcGF0aChwKQorICAg
ICAgICBhc3NlcnQgbS5fX25hbWVfXyA9PSAiaGVsbG9fMTIzIgorICAgICAgICBtID0gaW1wb3J0
X3BhdGgocF9pbml0KQorICAgICAgICBhc3NlcnQgbS5fX25hbWVfXyA9PSAiaGVsbG9fMTIzIgor
CisgICAgZGVmIHRlc3RfYShzZWxmLCBwYXRoMSk6CisgICAgICAgIG90aGVyZGlyID0gcGF0aDEu
am9pbigib3RoZXJkaXIiKQorICAgICAgICBtb2QgPSBpbXBvcnRfcGF0aChvdGhlcmRpci5qb2lu
KCJhLnB5IikpCisgICAgICAgIGFzc2VydCBtb2QucmVzdWx0ID09ICJnb3QgaXQiICAjIHR5cGU6
IGlnbm9yZVthdHRyLWRlZmluZWRdCisgICAgICAgIGFzc2VydCBtb2QuX19uYW1lX18gPT0gIm90
aGVyZGlyLmEiCisKKyAgICBkZWYgdGVzdF9iKHNlbGYsIHBhdGgxKToKKyAgICAgICAgb3RoZXJk
aXIgPSBwYXRoMS5qb2luKCJvdGhlcmRpciIpCisgICAgICAgIG1vZCA9IGltcG9ydF9wYXRoKG90
aGVyZGlyLmpvaW4oImIucHkiKSkKKyAgICAgICAgYXNzZXJ0IG1vZC5zdHVmZiA9PSAiZ290IGl0
IiAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAgICBhc3NlcnQgbW9kLl9fbmFt
ZV9fID09ICJvdGhlcmRpci5iIgorCisgICAgZGVmIHRlc3RfYyhzZWxmLCBwYXRoMSk6CisgICAg
ICAgIG90aGVyZGlyID0gcGF0aDEuam9pbigib3RoZXJkaXIiKQorICAgICAgICBtb2QgPSBpbXBv
cnRfcGF0aChvdGhlcmRpci5qb2luKCJjLnB5IikpCisgICAgICAgIGFzc2VydCBtb2QudmFsdWUg
PT0gImdvdCBpdCIgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKworICAgIGRlZiB0ZXN0
X2Qoc2VsZiwgcGF0aDEpOgorICAgICAgICBvdGhlcmRpciA9IHBhdGgxLmpvaW4oIm90aGVyZGly
IikKKyAgICAgICAgbW9kID0gaW1wb3J0X3BhdGgob3RoZXJkaXIuam9pbigiZC5weSIpKQorICAg
ICAgICBhc3NlcnQgbW9kLnZhbHVlMiA9PSAiZ290IGl0IiAgIyB0eXBlOiBpZ25vcmVbYXR0ci1k
ZWZpbmVkXQorCisgICAgZGVmIHRlc3RfaW1wb3J0X2FmdGVyKHNlbGYsIHRtcGRpcik6CisgICAg
ICAgIHRtcGRpci5lbnN1cmUoInh4eHBhY2thZ2UiLCAiX19pbml0X18ucHkiKQorICAgICAgICBt
b2QxcGF0aCA9IHRtcGRpci5lbnN1cmUoInh4eHBhY2thZ2UiLCAibW9kdWxlMS5weSIpCisgICAg
ICAgIG1vZDEgPSBpbXBvcnRfcGF0aChtb2QxcGF0aCkKKyAgICAgICAgYXNzZXJ0IG1vZDEuX19u
YW1lX18gPT0gInh4eHBhY2thZ2UubW9kdWxlMSIKKyAgICAgICAgZnJvbSB4eHhwYWNrYWdlIGlt
cG9ydCBtb2R1bGUxCisKKyAgICAgICAgYXNzZXJ0IG1vZHVsZTEgaXMgbW9kMQorCisgICAgZGVm
IHRlc3RfY2hlY2tfZmlsZXBhdGhfY29uc2lzdGVuY3koc2VsZiwgbW9ua2V5cGF0Y2gsIHRtcGRp
cik6CisgICAgICAgIG5hbWUgPSAicG9pbnRzYmFjazEyMyIKKyAgICAgICAgTW9kdWxlVHlwZSA9
IHR5cGUob3MpCisgICAgICAgIHAgPSB0bXBkaXIuZW5zdXJlKG5hbWUgKyAiLnB5IikKKyAgICAg
ICAgZm9yIGVuZGluZyBpbiAoIi5weWMiLCAiLnB5byIpOgorICAgICAgICAgICAgbW9kID0gTW9k
dWxlVHlwZShuYW1lKQorICAgICAgICAgICAgcHNldWRvcGF0aCA9IHRtcGRpci5lbnN1cmUobmFt
ZSArIGVuZGluZykKKyAgICAgICAgICAgIG1vZC5fX2ZpbGVfXyA9IHN0cihwc2V1ZG9wYXRoKQor
ICAgICAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShzeXMubW9kdWxlcywgbmFtZSwgbW9kKQor
ICAgICAgICAgICAgbmV3bW9kID0gaW1wb3J0X3BhdGgocCkKKyAgICAgICAgICAgIGFzc2VydCBt
b2QgPT0gbmV3bW9kCisgICAgICAgIG1vbmtleXBhdGNoLnVuZG8oKQorICAgICAgICBtb2QgPSBN
b2R1bGVUeXBlKG5hbWUpCisgICAgICAgIHBzZXVkb3BhdGggPSB0bXBkaXIuZW5zdXJlKG5hbWUg
KyAiMTIzLnB5IikKKyAgICAgICAgbW9kLl9fZmlsZV9fID0gc3RyKHBzZXVkb3BhdGgpCisgICAg
ICAgIG1vbmtleXBhdGNoLnNldGl0ZW0oc3lzLm1vZHVsZXMsIG5hbWUsIG1vZCkKKyAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKEltcG9ydFBhdGhNaXNtYXRjaEVycm9yKSBhcyBleGNpbmZvOgor
ICAgICAgICAgICAgaW1wb3J0X3BhdGgocCkKKyAgICAgICAgbW9kbmFtZSwgbW9kZmlsZSwgb3Jp
ZyA9IGV4Y2luZm8udmFsdWUuYXJncworICAgICAgICBhc3NlcnQgbW9kbmFtZSA9PSBuYW1lCisg
ICAgICAgIGFzc2VydCBtb2RmaWxlID09IHBzZXVkb3BhdGgKKyAgICAgICAgYXNzZXJ0IG9yaWcg
PT0gcAorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhJbXBvcnRQYXRoTWlzbWF0Y2hFcnJvciwg
SW1wb3J0RXJyb3IpCisKKyAgICBkZWYgdGVzdF9pc3N1ZTEzMV9vbl9faW5pdF9fKHNlbGYsIHRt
cGRpcik6CisgICAgICAgICMgX19pbml0X18ucHkgZmlsZXMgbWF5IGJlIG5hbWVzcGFjZSBwYWNr
YWdlcywgYW5kIHRodXMgdGhlCisgICAgICAgICMgX19maWxlX18gb2YgYW4gaW1wb3J0ZWQgbW9k
dWxlIG1heSBub3QgYmUgb3Vyc2VsdmVzCisgICAgICAgICMgc2VlIGlzc3VlCisgICAgICAgIHAx
ID0gdG1wZGlyLmVuc3VyZSgicHJvamEiLCAiX19pbml0X18ucHkiKQorICAgICAgICBwMiA9IHRt
cGRpci5lbnN1cmUoInN1YiIsICJwcm9qYSIsICJfX2luaXRfXy5weSIpCisgICAgICAgIG0xID0g
aW1wb3J0X3BhdGgocDEpCisgICAgICAgIG0yID0gaW1wb3J0X3BhdGgocDIpCisgICAgICAgIGFz
c2VydCBtMSA9PSBtMgorCisgICAgZGVmIHRlc3RfZW5zdXJlc3lzcGF0aF9hcHBlbmQoc2VsZiwg
dG1wZGlyKToKKyAgICAgICAgcm9vdDEgPSB0bXBkaXIubWtkaXIoInJvb3QxIikKKyAgICAgICAg
ZmlsZTEgPSByb290MS5lbnN1cmUoIngxMjMucHkiKQorICAgICAgICBhc3NlcnQgc3RyKHJvb3Qx
KSBub3QgaW4gc3lzLnBhdGgKKyAgICAgICAgaW1wb3J0X3BhdGgoZmlsZTEsIG1vZGU9ImFwcGVu
ZCIpCisgICAgICAgIGFzc2VydCBzdHIocm9vdDEpID09IHN5cy5wYXRoWy0xXQorICAgICAgICBh
c3NlcnQgc3RyKHJvb3QxKSBub3QgaW4gc3lzLnBhdGhbOi0xXQorCisgICAgZGVmIHRlc3RfaW52
YWxpZF9wYXRoKHNlbGYsIHRtcGRpcik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbXBv
cnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRfcGF0aCh0bXBkaXIuam9pbigiaW52YWxpZC5w
eSIpKQorCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIHNpbXBsZV9tb2R1bGUoc2VsZiwg
dG1wZGlyKToKKyAgICAgICAgZm4gPSB0bXBkaXIuam9pbigibXltb2QucHkiKQorICAgICAgICBm
bi53cml0ZSgKKyAgICAgICAgICAgIGRlZGVudCgKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgIGRlZiBmb28oeCk6IHJldHVybiA0MCArIHgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgKQorICAgICAgICApCisgICAgICAgIHJldHVybiBmbgorCisgICAgZGVmIHRlc3RfaW1w
b3J0bW9kZV9pbXBvcnRsaWIoc2VsZiwgc2ltcGxlX21vZHVsZSk6CisgICAgICAgICIiImBpbXBv
cnRsaWJgIG1vZGUgZG9lcyBub3QgY2hhbmdlIHN5cy5wYXRoLiIiIgorICAgICAgICBtb2R1bGUg
PSBpbXBvcnRfcGF0aChzaW1wbGVfbW9kdWxlLCBtb2RlPSJpbXBvcnRsaWIiKQorICAgICAgICBh
c3NlcnQgbW9kdWxlLmZvbygyKSA9PSA0MiAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQor
ICAgICAgICBhc3NlcnQgc2ltcGxlX21vZHVsZS5kaXJuYW1lIG5vdCBpbiBzeXMucGF0aAorCisg
ICAgZGVmIHRlc3RfaW1wb3J0bW9kZV90d2ljZV9pc19kaWZmZXJlbnRfbW9kdWxlKHNlbGYsIHNp
bXBsZV9tb2R1bGUpOgorICAgICAgICAiIiJgaW1wb3J0bGliYCBtb2RlIGFsd2F5cyByZXR1cm5z
IGEgbmV3IG1vZHVsZS4iIiIKKyAgICAgICAgbW9kdWxlMSA9IGltcG9ydF9wYXRoKHNpbXBsZV9t
b2R1bGUsIG1vZGU9ImltcG9ydGxpYiIpCisgICAgICAgIG1vZHVsZTIgPSBpbXBvcnRfcGF0aChz
aW1wbGVfbW9kdWxlLCBtb2RlPSJpbXBvcnRsaWIiKQorICAgICAgICBhc3NlcnQgbW9kdWxlMSBp
cyBub3QgbW9kdWxlMgorCisgICAgZGVmIHRlc3Rfbm9fbWV0YV9wYXRoX2ZvdW5kKHNlbGYsIHNp
bXBsZV9tb2R1bGUsIG1vbmtleXBhdGNoKToKKyAgICAgICAgIiIiRXZlbiB3aXRob3V0IGFueSBt
ZXRhX3BhdGggc2hvdWxkIHN0aWxsIGltcG9ydCBtb2R1bGUuIiIiCisgICAgICAgIG1vbmtleXBh
dGNoLnNldGF0dHIoc3lzLCAibWV0YV9wYXRoIiwgW10pCisgICAgICAgIG1vZHVsZSA9IGltcG9y
dF9wYXRoKHNpbXBsZV9tb2R1bGUsIG1vZGU9ImltcG9ydGxpYiIpCisgICAgICAgIGFzc2VydCBt
b2R1bGUuZm9vKDIpID09IDQyICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisKKyAgICAg
ICAgIyBtb2RlPSdpbXBvcnRsaWInIGZhaWxzIGlmIG5vIHNwZWMgaXMgZm91bmQgdG8gbG9hZCB0
aGUgbW9kdWxlCisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorCisgICAgICAgIG1vbmtl
eXBhdGNoLnNldGF0dHIoCisgICAgICAgICAgICBpbXBvcnRsaWIudXRpbCwgInNwZWNfZnJvbV9m
aWxlX2xvY2F0aW9uIiwgbGFtYmRhICphcmdzOiBOb25lCisgICAgICAgICkKKyAgICAgICAgd2l0
aCBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydF9wYXRoKHNp
bXBsZV9tb2R1bGUsIG1vZGU9ImltcG9ydGxpYiIpCisKKworZGVmIHRlc3RfcmVzb2x2ZV9wYWNr
YWdlX3BhdGgodG1wX3BhdGgpOgorICAgIHBrZyA9IHRtcF9wYXRoIC8gInBrZzEiCisgICAgcGtn
Lm1rZGlyKCkKKyAgICAocGtnIC8gIl9faW5pdF9fLnB5IikudG91Y2goKQorICAgIChwa2cgLyAi
c3ViZGlyIikubWtkaXIoKQorICAgIChwa2cgLyAic3ViZGlyL19faW5pdF9fLnB5IikudG91Y2go
KQorICAgIGFzc2VydCByZXNvbHZlX3BhY2thZ2VfcGF0aChwa2cpID09IHBrZworICAgIGFzc2Vy
dCByZXNvbHZlX3BhY2thZ2VfcGF0aChwa2cuam9pbnBhdGgoInN1YmRpciIsICJfX2luaXRfXy5w
eSIpKSA9PSBwa2cKKworCitkZWYgdGVzdF9wYWNrYWdlX3VuaW1wb3J0YWJsZSh0bXBfcGF0aCk6
CisgICAgcGtnID0gdG1wX3BhdGggLyAicGtnMS0xIgorICAgIHBrZy5ta2RpcigpCisgICAgcGtn
LmpvaW5wYXRoKCJfX2luaXRfXy5weSIpLnRvdWNoKCkKKyAgICBzdWJkaXIgPSBwa2cuam9pbnBh
dGgoInN1YmRpciIpCisgICAgc3ViZGlyLm1rZGlyKCkKKyAgICBwa2cuam9pbnBhdGgoInN1YmRp
ci9fX2luaXRfXy5weSIpLnRvdWNoKCkKKyAgICBhc3NlcnQgcmVzb2x2ZV9wYWNrYWdlX3BhdGgo
c3ViZGlyKSA9PSBzdWJkaXIKKyAgICB4eXogPSBzdWJkaXIuam9pbnBhdGgoInh5ei5weSIpCisg
ICAgeHl6LnRvdWNoKCkKKyAgICBhc3NlcnQgcmVzb2x2ZV9wYWNrYWdlX3BhdGgoeHl6KSA9PSBz
dWJkaXIKKyAgICBhc3NlcnQgbm90IHJlc29sdmVfcGFja2FnZV9wYXRoKHBrZykKKworCitkZWYg
dGVzdF9hY2Nlc3NfZGVuaWVkX2R1cmluZ19jbGVhbnVwKHRtcF9wYXRoLCBtb25rZXlwYXRjaCk6
CisgICAgIiIiRW5zdXJlIHRoYXQgZGVsZXRpbmcgYSBudW1iZXJlZCBkaXIgZG9lcyBub3QgZmFp
bCBiZWNhdXNlIG9mIE9TRXJyb3JzICgjNDI2MikuIiIiCisgICAgcGF0aCA9IHRtcF9wYXRoIC8g
InRlbXAtMSIKKyAgICBwYXRoLm1rZGlyKCkKKworICAgIGRlZiByZW5hbWVkX2ZhaWxlZCgqYXJn
cyk6CisgICAgICAgIHJhaXNlIE9TRXJyb3IoImFjY2VzcyBkZW5pZWQiKQorCisgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cihQYXRoLCAicmVuYW1lIiwgcmVuYW1lZF9mYWlsZWQpCisKKyAgICBsb2Nr
X3BhdGggPSBnZXRfbG9ja19wYXRoKHBhdGgpCisgICAgbWF5YmVfZGVsZXRlX2FfbnVtYmVyZWRf
ZGlyKHBhdGgpCisgICAgYXNzZXJ0IG5vdCBsb2NrX3BhdGguaXNfZmlsZSgpCisKKworZGVmIHRl
c3RfbG9uZ19wYXRoX2R1cmluZ19jbGVhbnVwKHRtcF9wYXRoKToKKyAgICAiIiJFbnN1cmUgdGhh
dCBkZWxldGluZyBsb25nIHBhdGggd29ya3MgKHBhcnRpY3VsYXJseSBvbiBXaW5kb3dzICgjNjc3
NSkpLiIiIgorICAgIHBhdGggPSAodG1wX3BhdGggLyAoImEiICogMjUwKSkucmVzb2x2ZSgpCisg
ICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICMgbWFrZSBzdXJlIHRoYXQg
dGhlIGZ1bGwgcGF0aCBpcyA+IDI2MCBjaGFyYWN0ZXJzIHdpdGhvdXQgYW55CisgICAgICAgICMg
Y29tcG9uZW50IGJlaW5nIG92ZXIgMjYwIGNoYXJhY3RlcnMKKyAgICAgICAgYXNzZXJ0IGxlbihz
dHIocGF0aCkpID4gMjYwCisgICAgICAgIGV4dGVuZGVkX3BhdGggPSAiXFxcXD9cXCIgKyBzdHIo
cGF0aCkKKyAgICBlbHNlOgorICAgICAgICBleHRlbmRlZF9wYXRoID0gc3RyKHBhdGgpCisgICAg
b3MubWtkaXIoZXh0ZW5kZWRfcGF0aCkKKyAgICBhc3NlcnQgb3MucGF0aC5pc2RpcihleHRlbmRl
ZF9wYXRoKQorICAgIG1heWJlX2RlbGV0ZV9hX251bWJlcmVkX2RpcihwYXRoKQorICAgIGFzc2Vy
dCBub3Qgb3MucGF0aC5pc2RpcihleHRlbmRlZF9wYXRoKQorCisKK2RlZiB0ZXN0X2dldF9leHRl
bmRlZF9sZW5ndGhfcGF0aF9zdHIoKToKKyAgICBhc3NlcnQgZ2V0X2V4dGVuZGVkX2xlbmd0aF9w
YXRoX3N0cihyImM6XGZvbyIpID09IHIiXFw/XGM6XGZvbyIKKyAgICBhc3NlcnQgZ2V0X2V4dGVu
ZGVkX2xlbmd0aF9wYXRoX3N0cihyIlxcc2hhcmVcZm9vIikgPT0gciJcXD9cVU5DXHNoYXJlXGZv
byIKKyAgICBhc3NlcnQgZ2V0X2V4dGVuZGVkX2xlbmd0aF9wYXRoX3N0cihyIlxcP1xVTkNcc2hh
cmVcZm9vIikgPT0gciJcXD9cVU5DXHNoYXJlXGZvbyIKKyAgICBhc3NlcnQgZ2V0X2V4dGVuZGVk
X2xlbmd0aF9wYXRoX3N0cihyIlxcP1xjOlxmb28iKSA9PSByIlxcP1xjOlxmb28iCisKKworZGVm
IHRlc3Rfc3VwcHJlc3NfZXJyb3JfcmVtb3ZpbmdfbG9jayh0bXBfcGF0aCk6CisgICAgIiIiZW5z
dXJlX2RlbGV0YWJsZSBzaG91bGQgYmUgcmVzaWxpZW50IGlmIGxvY2sgZmlsZSBjYW5ub3QgYmUg
cmVtb3ZlZCAoIzU0NTYsICM3NDkxKSIiIgorICAgIHBhdGggPSB0bXBfcGF0aCAvICJkaXIiCisg
ICAgcGF0aC5ta2RpcigpCisgICAgbG9jayA9IGdldF9sb2NrX3BhdGgocGF0aCkKKyAgICBsb2Nr
LnRvdWNoKCkKKyAgICBtdGltZSA9IGxvY2suc3RhdCgpLnN0X210aW1lCisKKyAgICB3aXRoIHVu
aXR0ZXN0Lm1vY2sucGF0Y2gub2JqZWN0KFBhdGgsICJ1bmxpbmsiLCBzaWRlX2VmZmVjdD1PU0Vy
cm9yKSBhcyBtOgorICAgICAgICBhc3NlcnQgbm90IGVuc3VyZV9kZWxldGFibGUoCisgICAgICAg
ICAgICBwYXRoLCBjb25zaWRlcl9sb2NrX2RlYWRfaWZfY3JlYXRlZF9iZWZvcmU9bXRpbWUgKyAz
MAorICAgICAgICApCisgICAgICAgIGFzc2VydCBtLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2Vy
dCBsb2NrLmlzX2ZpbGUoKQorCisgICAgd2l0aCB1bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChQ
YXRoLCAiaXNfZmlsZSIsIHNpZGVfZWZmZWN0PU9TRXJyb3IpIGFzIG06CisgICAgICAgIGFzc2Vy
dCBub3QgZW5zdXJlX2RlbGV0YWJsZSgKKyAgICAgICAgICAgIHBhdGgsIGNvbnNpZGVyX2xvY2tf
ZGVhZF9pZl9jcmVhdGVkX2JlZm9yZT1tdGltZSArIDMwCisgICAgICAgICkKKyAgICAgICAgYXNz
ZXJ0IG0uY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0IGxvY2suaXNfZmlsZSgpCisKKyAgICAj
IGNoZWNrIG5vdyB0aGF0IHdlIGNhbiByZW1vdmUgdGhlIGxvY2sgZmlsZSBpbiBub3JtYWwgY2ly
Y3Vtc3RhbmNlcworICAgIGFzc2VydCBlbnN1cmVfZGVsZXRhYmxlKHBhdGgsIGNvbnNpZGVyX2xv
Y2tfZGVhZF9pZl9jcmVhdGVkX2JlZm9yZT1tdGltZSArIDMwKQorICAgIGFzc2VydCBub3QgbG9j
ay5pc19maWxlKCkKKworCitkZWYgdGVzdF9iZXN0cmVscGF0aCgpIC0+IE5vbmU6CisgICAgY3Vy
ZGlyID0gUGF0aCgiL2Zvby9iYXIvYmF6L3BhdGgiKQorICAgIGFzc2VydCBiZXN0cmVscGF0aChj
dXJkaXIsIGN1cmRpcikgPT0gIi4iCisgICAgYXNzZXJ0IGJlc3RyZWxwYXRoKGN1cmRpciwgY3Vy
ZGlyIC8gImhlbGxvIiAvICJ3b3JsZCIpID09ICJoZWxsbyIgKyBvcy5zZXAgKyAid29ybGQiCisg
ICAgYXNzZXJ0IGJlc3RyZWxwYXRoKGN1cmRpciwgY3VyZGlyLnBhcmVudCAvICJzaXN0ZXIiKSA9
PSAiLi4iICsgb3Muc2VwICsgInNpc3RlciIKKyAgICBhc3NlcnQgYmVzdHJlbHBhdGgoY3VyZGly
LCBjdXJkaXIucGFyZW50KSA9PSAiLi4iCisgICAgYXNzZXJ0IGJlc3RyZWxwYXRoKGN1cmRpciwg
UGF0aCgiaGVsbG8iKSkgPT0gImhlbGxvIgorCisKK2RlZiB0ZXN0X2NvbW1vbnBhdGgoKSAtPiBO
b25lOgorICAgIHBhdGggPSBQYXRoKCIvZm9vL2Jhci9iYXovcGF0aCIpCisgICAgc3VicGF0aCA9
IHBhdGggLyAic2FtcGxlZGlyIgorICAgIGFzc2VydCBjb21tb25wYXRoKHBhdGgsIHN1YnBhdGgp
ID09IHBhdGgKKyAgICBhc3NlcnQgY29tbW9ucGF0aChzdWJwYXRoLCBwYXRoKSA9PSBwYXRoCisg
ICAgYXNzZXJ0IGNvbW1vbnBhdGgoUGF0aChzdHIocGF0aCkgKyAic3VmZml4IiksIHBhdGgpID09
IHBhdGgucGFyZW50CisgICAgYXNzZXJ0IGNvbW1vbnBhdGgocGF0aCwgcGF0aC5wYXJlbnQucGFy
ZW50KSA9PSBwYXRoLnBhcmVudC5wYXJlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9wZGIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcGRiLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTVkNTJlODM0NTQuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcGRiLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAyICsw
LDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IG9zCi0K
LWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1mcm9tIF9weXRlc3QuZGVidWdnaW5nIGltcG9ydCBTVVBQ
T1JUU19CUkVBS1BPSU5UX0JVSUxUSU4KLWltcG9ydCBweXRlc3QKLQotCi1fRU5WSVJPTl9QWVRI
T05CUkVBS1BPSU5UID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkJSRUFLUE9JTlQiLCAiIikKLQot
Ci1kZWYgcnVucGRiX2FuZF9nZXRfcmVwb3J0KHRlc3RkaXIsIHNvdXJjZSk6Ci0gICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZShzb3VyY2UpCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rf
aW5wcm9jZXNzKCItLXBkYiIsIHApCi0gICAgcmVwb3J0cyA9IHJlc3VsdC5yZXByZWMuZ2V0cmVw
b3J0cygicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKLSAgICBhc3NlcnQgbGVuKHJlcG9ydHMp
ID09IDMsIHJlcG9ydHMgICMgc2V0dXAvY2FsbC90ZWFyZG93bgotICAgIHJldHVybiByZXBvcnRz
WzFdCi0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgY3VzdG9tX3BkYl9jYWxscygpOgotICAgIGNh
bGxlZCA9IFtdCi0KLSAgICAjIGluc3RhbGwgZHVtbXkgZGVidWdnZXIgY2xhc3MgYW5kIHRyYWNr
IHdoaWNoIG1ldGhvZHMgd2VyZSBjYWxsZWQgb24gaXQKLSAgICBjbGFzcyBfQ3VzdG9tUGRiKG9i
amVjdCk6Ci0KLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0g
ICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJpbml0IikKLQotICAgICAgICBkZWYgcmVzZXQoc2Vs
Zik6Ci0gICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJyZXNldCIpCi0KLSAgICAgICAgZGVmIGlu
dGVyYWN0aW9uKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoImludGVy
YWN0aW9uIikKLQotICAgIF9weXRlc3QuX0N1c3RvbVBkYiA9IF9DdXN0b21QZGIKLSAgICByZXR1
cm4gY2FsbGVkCi0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgY3VzdG9tX2RlYnVnZ2VyX2hvb2so
KToKLSAgICBjYWxsZWQgPSBbXQotCi0gICAgIyBpbnN0YWxsIGR1bW15IGRlYnVnZ2VyIGNsYXNz
IGFuZCB0cmFjayB3aGljaCBtZXRob2RzIHdlcmUgY2FsbGVkIG9uIGl0Ci0gICAgY2xhc3MgX0N1
c3RvbURlYnVnZ2VyKG9iamVjdCk6Ci0KLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdz
LCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJpbml0IikKLQotICAgICAg
ICBkZWYgcmVzZXQoc2VsZik6Ci0gICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCJyZXNldCIpCi0K
LSAgICAgICAgZGVmIGludGVyYWN0aW9uKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIGNhbGxl
ZC5hcHBlbmQoImludGVyYWN0aW9uIikKLQotICAgICAgICBkZWYgc2V0X3RyYWNlKHNlbGYsIGZy
YW1lKToKLSAgICAgICAgICAgIHByaW50KCIqKkN1c3RvbURlYnVnZ2VyKioiKQotICAgICAgICAg
ICAgY2FsbGVkLmFwcGVuZCgic2V0X3RyYWNlIikKLQotICAgIF9weXRlc3QuX0N1c3RvbURlYnVn
Z2VyID0gX0N1c3RvbURlYnVnZ2VyCi0gICAgeWllbGQgY2FsbGVkCi0gICAgZGVsIF9weXRlc3Qu
X0N1c3RvbURlYnVnZ2VyCi0KLQotY2xhc3MgVGVzdFBEQihvYmplY3QpOgotCi0gICAgQHB5dGVz
dC5maXh0dXJlCi0gICAgZGVmIHBkYmxpc3Qoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIG1vbmtl
eXBhdGNoID0gcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoIm1vbmtleXBhdGNoIikKLSAgICAgICAg
cGRibGlzdCA9IFtdCi0KLSAgICAgICAgZGVmIG15cGRiKCphcmdzKToKLSAgICAgICAgICAgIHBk
Ymxpc3QuYXBwZW5kKGFyZ3MpCi0KLSAgICAgICAgcGx1Z2luID0gcmVxdWVzdC5jb25maWcucGx1
Z2lubWFuYWdlci5nZXRwbHVnaW4oImRlYnVnZ2luZyIpCi0gICAgICAgIG1vbmtleXBhdGNoLnNl
dGF0dHIocGx1Z2luLCAicG9zdF9tb3J0ZW0iLCBteXBkYikKLSAgICAgICAgcmV0dXJuIHBkYmxp
c3QKLQotICAgIGRlZiB0ZXN0X3BkYl9vbl9mYWlsKHNlbGYsIHRlc3RkaXIsIHBkYmxpc3QpOgot
ICAgICAgICByZXAgPSBydW5wZGJfYW5kX2dldF9yZXBvcnQoCi0gICAgICAgICAgICB0ZXN0ZGly
LAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiLAotICAgICAgICApCi0gICAgICAgIGFzc2Vy
dCByZXAuZmFpbGVkCi0gICAgICAgIGFzc2VydCBsZW4ocGRibGlzdCkgPT0gMQotICAgICAgICB0
YiA9IF9weXRlc3QuX2NvZGUuVHJhY2ViYWNrKHBkYmxpc3RbMF1bMF0pCi0gICAgICAgIGFzc2Vy
dCB0YlstMV0ubmFtZSA9PSAidGVzdF9mdW5jIgotCi0gICAgZGVmIHRlc3RfcGRiX29uX3hmYWls
KHNlbGYsIHRlc3RkaXIsIHBkYmxpc3QpOgotICAgICAgICByZXAgPSBydW5wZGJfYW5kX2dldF9y
ZXBvcnQoCi0gICAgICAgICAgICB0ZXN0ZGlyLAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAg
ICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgMAotICAgICAgICAi
IiIsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0ICJ4ZmFpbCIgaW4gcmVwLmtleXdvcmRzCi0g
ICAgICAgIGFzc2VydCBub3QgcGRibGlzdAotCi0gICAgZGVmIHRlc3RfcGRiX29uX3NraXAoc2Vs
ZiwgdGVzdGRpciwgcGRibGlzdCk6Ci0gICAgICAgIHJlcCA9IHJ1bnBkYl9hbmRfZ2V0X3JlcG9y
dCgKLSAgICAgICAgICAgIHRlc3RkaXIsCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKLSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAg
ICBweXRlc3Quc2tpcCgiaGVsbG8iKQotICAgICAgICAiIiIsCi0gICAgICAgICkKLSAgICAgICAg
YXNzZXJ0IHJlcC5za2lwcGVkCi0gICAgICAgIGFzc2VydCBsZW4ocGRibGlzdCkgPT0gMAotCi0g
ICAgZGVmIHRlc3RfcGRiX29uX0JkYlF1aXQoc2VsZiwgdGVzdGRpciwgcGRibGlzdCk6Ci0gICAg
ICAgIHJlcCA9IHJ1bnBkYl9hbmRfZ2V0X3JlcG9ydCgKLSAgICAgICAgICAgIHRlc3RkaXIsCi0g
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBiZGIKLSAgICAgICAgICAgIGRlZiB0
ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICByYWlzZSBiZGIuQmRiUXVpdAotICAgICAgICAi
IiIsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHJlcC5mYWlsZWQKLSAgICAgICAgYXNzZXJ0
IGxlbihwZGJsaXN0KSA9PSAwCi0KLSAgICBkZWYgdGVzdF9wZGJfb25fS2V5Ym9hcmRJbnRlcnJ1
cHQoc2VsZiwgdGVzdGRpciwgcGRibGlzdCk6Ci0gICAgICAgIHJlcCA9IHJ1bnBkYl9hbmRfZ2V0
X3JlcG9ydCgKLSAgICAgICAgICAgIHRlc3RkaXIsCi0gICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVy
cnVwdAotICAgICAgICAiIiIsCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHJlcC5mYWlsZWQK
LSAgICAgICAgYXNzZXJ0IGxlbihwZGJsaXN0KSA9PSAxCi0KLSAgICBkZWYgdGVzdF9wZGJfaW50
ZXJhY3Rpb24oc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxl
KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAgICAg
ICAgICAgaSA9IDAKLSAgICAgICAgICAgICAgICBhc3NlcnQgaSA9PSAxCi0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3QoIi0tcGRiICVz
IiAlIHAxKQotICAgICAgICBjaGlsZC5leHBlY3QoIi4qZGVmIHRlc3RfMSIpCi0gICAgICAgIGNo
aWxkLmV4cGVjdCgiLippID0gMCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAg
ICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUo
InV0ZjgiKQotICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAgICAgIGFzc2Vy
dCAiZGVmIHRlc3RfMSIgbm90IGluIHJlc3QKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQot
ICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZmx1c2goY2hpbGQpOgotICAgICAgICBpZiBwbGF0
Zm9ybS5zeXN0ZW0oKSA9PSAiRGFyd2luIjoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBp
ZiBjaGlsZC5pc2FsaXZlKCk6Ci0gICAgICAgICAgICBjaGlsZC53YWl0KCkKLQotICAgIGRlZiB0
ZXN0X3BkYl91bml0dGVzdF9wb3N0bW9ydGVtKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwMSA9
IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0
IHVuaXR0ZXN0Ci0gICAgICAgICAgICBjbGFzcyBCbHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICAgICAgICAgICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuZmlsZW5hbWUgPSBOb25lCi0gICAgICAgICAgICAgICAgZGVmIHRlc3RfZmFsc2Uoc2VsZik6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSAnZGVidWcnICsgJy5tZScKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAg
ICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMiICUgcDEpCi0gICAgICAg
IGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAgICAgICBjaGlsZC5zZW5kbGluZSgicCBzZWxmLmZp
bGVuYW1lIikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHJlc3QgPSBjaGlsZC5y
ZWFkKCkuZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgYXNzZXJ0ICJkZWJ1Zy5tZSIgaW4gcmVzdAot
ICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX3VuaXR0ZXN0X3Nr
aXAoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiIlRlc3QgZm9yIGlzc3VlICMyMTM3IiIiCi0g
ICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAg
ICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICAgICAgICAgIEB1bml0dGVzdC5za2lwSWYoVHJ1ZSwg
J1NraXBwaW5nIGFsc28gd2l0aCBwZGIgYWN0aXZlJykKLSAgICAgICAgICAgIGNsYXNzIE15VGVz
dENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X29uZShz
ZWxmKToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAgICAgIiIiCi0gICAgICAg
ICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLXJzIC0tcGRiICVzIiAl
IHAxKQotICAgICAgICBjaGlsZC5leHBlY3QoIlNraXBwaW5nIGFsc28gd2l0aCBwZGIgYWN0aXZl
IikKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIxIHNraXBwZWQgaW4iKQotICAgICAgICBjaGlsZC5z
ZW5kZW9mKCkKLSAgICAgICAgc2VsZi5mbHVzaChjaGlsZCkKLQotICAgIGRlZiB0ZXN0X3BkYl9w
cmludF9jYXB0dXJlZF9zdGRvdXQoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6
Ci0gICAgICAgICAgICAgICAgcHJpbnQoImdldFxceDIwcmVrdCIpCi0gICAgICAgICAgICAgICAg
YXNzZXJ0IEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGNoaWxkID0gdGVz
dGRpci5zcGF3bl9weXRlc3QoIi0tcGRiICVzIiAlIHAxKQotICAgICAgICBjaGlsZC5leHBlY3Qo
ImNhcHR1cmVkIHN0ZG91dCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiZ2V0IHJla3QiKQotICAg
ICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAg
ICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgYXNzZXJ0ICIx
IGZhaWxlZCIgaW4gcmVzdAotICAgICAgICBhc3NlcnQgImdldCByZWt0IiBub3QgaW4gcmVzdAot
ICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX3ByaW50X2NhcHR1
cmVkX3N0ZGVycihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZp
bGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAg
ICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZ2V0
XFx4MjByZWt0IikKLSAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKLSAgICAgICAgIiIiCi0g
ICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMi
ICUgcDEpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiY2FwdHVyZWQgc3RkZXJyIikKLSAgICAgICAg
Y2hpbGQuZXhwZWN0KCJnZXQgcmVrdCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBkYikiKQot
ICAgICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNv
ZGUoInV0ZjgiKQotICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAgICAgIGFz
c2VydCAiZ2V0IHJla3QiIG5vdCBpbiByZXN0Ci0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0K
LSAgICBkZWYgdGVzdF9wZGJfZG9udF9wcmludF9lbXB0eV9jYXB0dXJlZF9zdGRvdXRfYW5kX3N0
ZGVycihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0g
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgICAg
ICBhc3NlcnQgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0
ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1wZGIgJXMiICUgcDEpCi0gICAgICAgIGNoaWxkLmV4cGVj
dCgiKFBkYikiKQotICAgICAgICBvdXRwdXQgPSBjaGlsZC5iZWZvcmUuZGVjb2RlKCJ1dGY4IikK
LSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIGFzc2VydCAiY2FwdHVyZWQgc3Rkb3V0
IiBub3QgaW4gb3V0cHV0Ci0gICAgICAgIGFzc2VydCAiY2FwdHVyZWQgc3RkZXJyIiBub3QgaW4g
b3V0cHV0Ci0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0KLSAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoInNob3djYXB0dXJlIiwgWyJhbGwiLCAibm8iLCAibG9nIl0pCi0gICAgZGVmIHRl
c3RfcGRiX3ByaW50X2NhcHR1cmVkX2xvZ3Moc2VsZiwgdGVzdGRpciwgc2hvd2NhcHR1cmUpOgot
ICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGltcG9ydCBsb2dnaW5nCi0gICAg
ICAgICAgICAgICAgbG9nZ2luZy53YXJuKCJnZXQgIiArICJyZWt0IikKLSAgICAgICAgICAgICAg
ICBhc3NlcnQgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0
ZXN0ZGlyLnNwYXduX3B5dGVzdCgiLS1zaG93LWNhcHR1cmU9JXMgLS1wZGIgJXMiICUgKHNob3dj
YXB0dXJlLCBwMSkpCi0gICAgICAgIGlmIHNob3djYXB0dXJlIGluICgiYWxsIiwgImxvZyIpOgot
ICAgICAgICAgICAgY2hpbGQuZXhwZWN0KCJjYXB0dXJlZCBsb2ciKQotICAgICAgICAgICAgY2hp
bGQuZXhwZWN0KCJnZXQgcmVrdCIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAg
ICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUo
InV0ZjgiKQotICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAgICAgIHNlbGYu
Zmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfcHJpbnRfY2FwdHVyZWRfbG9nc19ub2xv
Z2dpbmcoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAot
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF8xKCk6Ci0gICAgICAgICAgICAg
ICAgaW1wb3J0IGxvZ2dpbmcKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oImdldCAiICsg
InJla3QiKQotICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQotICAgICAgICAiIiIKLSAgICAg
ICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KAotICAgICAgICAgICAg
Ii0tc2hvdy1jYXB0dXJlPWFsbCAtLXBkYiAiICItcCBubzpsb2dnaW5nICVzIiAlIHAxCi0gICAg
ICAgICkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCJnZXQgcmVrdCIpCi0gICAgICAgIG91dHB1dCA9
IGNoaWxkLmJlZm9yZS5kZWNvZGUoInV0ZjgiKQotICAgICAgICBhc3NlcnQgImNhcHR1cmVkIGxv
ZyIgbm90IGluIG91dHB1dAotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAg
Y2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHJlc3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4
IikKLSAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIgaW4gcmVzdAotICAgICAgICBzZWxmLmZsdXNo
KGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX2V4Y2VwdGlvbihzZWxmLCB0
ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAi
IiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIGRlZiBnbG9iYWxmdW5j
KCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAg
ICAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgZ2xvYmFsZnVuYykKLSAgICAg
ICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdCgi
LS1wZGIgJXMiICUgcDEpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiLipkZWYgdGVzdF8xIikKLSAg
ICAgICAgY2hpbGQuZXhwZWN0KCIuKnB5dGVzdC5yYWlzZXMuKmdsb2JhbGZ1bmMiKQotICAgICAg
ICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hpbGQuc2VuZGxpbmUoImdsb2JhbGZ1
bmMiKQotICAgICAgICBjaGlsZC5leHBlY3QoIi4qZnVuY3Rpb24iKQotICAgICAgICBjaGlsZC5z
ZW5kZW9mKCkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIxIGZhaWxlZCIpCi0gICAgICAgIHNlbGYu
Zmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfaW50ZXJhY3Rpb25fb25fY29sbGVjdGlv
bl9pc3N1ZTE4MShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZp
bGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAg
ICAgIHh4eAotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIu
c3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKLSAgICAgICAgIyBjaGlsZC5leHBlY3QoIi4q
aW1wb3J0IHB5dGVzdC4qIikKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAg
IGNoaWxkLnNlbmRlb2YoKQotICAgICAgICBjaGlsZC5leHBlY3QoIjEgZXJyb3IiKQotICAgICAg
ICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX29uX2lu
dGVybmFsX2Vycm9yKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVz
dCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3Rv
Y29sKCk6Ci0gICAgICAgICAgICAgICAgMC8wCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAg
ICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mdW5jKCk6IHBhc3MiKQotICAg
ICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KCItLXBkYiAlcyIgJSBwMSkKLSAgICAg
ICAgIyBjaGlsZC5leHBlY3QoIi4qaW1wb3J0IHB5dGVzdC4qIikKLSAgICAgICAgY2hpbGQuZXhw
ZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAgICBzZWxmLmZsdXNo
KGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX2ludGVyYWN0aW9uX2NhcHR1cmluZ19zaW1wbGUo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBkZWYgdGVz
dF8xKCk6Ci0gICAgICAgICAgICAgICAgaSA9IDAKLSAgICAgICAgICAgICAgICBwcmludCAoImhl
bGxvMTciKQotICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQotICAgICAgICAgICAg
ICAgIHggPSAzCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGNoaWxkID0gdGVzdGRp
ci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0XzEiKQot
ICAgICAgICBjaGlsZC5leHBlY3QoInggPSAzIikKLSAgICAgICAgY2hpbGQuZXhwZWN0KCIoUGRi
KSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAgICByZXN0ID0gY2hpbGQucmVhZCgp
LmRlY29kZSgidXRmLTgiKQotICAgICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAg
ICAgIGFzc2VydCAiZGVmIHRlc3RfMSIgaW4gcmVzdAotICAgICAgICBhc3NlcnQgImhlbGxvMTci
IGluIHJlc3QgICMgb3V0IGlzIGNhcHR1cmVkCi0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0K
LSAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlX2ludGVyY2VwdGlvbihzZWxmLCB0ZXN0ZGlyKToK
LSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAg
ICAgICAgIGltcG9ydCBwZGIKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAg
ICAgICBwZGIuc2V0X3RyYWNlKCkKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hp
bGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpKQotICAgICAgICBjaGlsZC5leHBlY3Qo
InRlc3RfMSIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiKFBkYikiKQotICAgICAgICBjaGlsZC5z
ZW5kZW9mKCkKLSAgICAgICAgcmVzdCA9IGNoaWxkLnJlYWQoKS5kZWNvZGUoInV0ZjgiKQotICAg
ICAgICBhc3NlcnQgIjEgZmFpbGVkIiBpbiByZXN0Ci0gICAgICAgIGFzc2VydCAicmVhZGluZyBm
cm9tIHN0ZGluIHdoaWxlIG91dHB1dCIgbm90IGluIHJlc3QKLSAgICAgICAgc2VsZi5mbHVzaChj
aGlsZCkKLQotICAgIGRlZiB0ZXN0X3BkYl9hbmRfY2Fwc3lzKHNlbGYsIHRlc3RkaXIpOgotICAg
ICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAg
ICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgZGVmIHRlc3RfMShjYXBzeXMpOgotICAgICAg
ICAgICAgICAgIHByaW50ICgiaGVsbG8xIikKLSAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3Ry
YWNlKCkKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNw
YXduX3B5dGVzdChzdHIocDEpKQotICAgICAgICBjaGlsZC5leHBlY3QoInRlc3RfMSIpCi0gICAg
ICAgIGNoaWxkLnNlbmQoImNhcHN5cy5yZWFkb3V0ZXJyKClcbiIpCi0gICAgICAgIGNoaWxkLmV4
cGVjdCgiaGVsbG8xIikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIGNoaWxkLnJl
YWQoKQotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3Rfc2V0X3RyYWNl
X2NhcHR1cmluZ19hZnRlcndhcmRzKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwMSA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHBkYgot
ICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIHBkYi5zZXRfdHJhY2Uo
KQotICAgICAgICAgICAgZGVmIHRlc3RfMigpOgotICAgICAgICAgICAgICAgIHByaW50ICgiaGVs
bG8iKQotICAgICAgICAgICAgICAgIGFzc2VydCAwCi0gICAgICAgICIiIgotICAgICAgICApCi0g
ICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKLSAgICAgICAgY2hp
bGQuZXhwZWN0KCJ0ZXN0XzEiKQotICAgICAgICBjaGlsZC5zZW5kKCJjXG4iKQotICAgICAgICBj
aGlsZC5leHBlY3QoInRlc3RfMiIpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgiQ2FwdHVyZWQiKQot
ICAgICAgICBjaGlsZC5leHBlY3QoImhlbGxvIikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0g
ICAgICAgIGNoaWxkLnJlYWQoKQotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVm
IHRlc3RfcGRiX2ludGVyYWN0aW9uX2RvY3Rlc3Qoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAx
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgICAgICBkZWYgZnVuY3Rpb25fMSgpOgotICAgICAgICAgICAgICAg
ICcnJwotICAgICAgICAgICAgICAgID4+PiBpID0gMAotICAgICAgICAgICAgICAgID4+PiBhc3Nl
cnQgaSA9PSAxCi0gICAgICAgICAgICAgICAgJycnCi0gICAgICAgICIiIgotICAgICAgICApCi0g
ICAgICAgIGNoaWxkID0gdGVzdGRpci5zcGF3bl9weXRlc3QoIi0tZG9jdGVzdC1tb2R1bGVzIC0t
cGRiICVzIiAlIHAxKQotICAgICAgICBjaGlsZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hp
bGQuc2VuZGxpbmUoImkiKQotICAgICAgICBjaGlsZC5leHBlY3QoIjAiKQotICAgICAgICBjaGls
ZC5leHBlY3QoIihQZGIpIikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHJlc3Qg
PSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgYXNzZXJ0ICIxIGZhaWxlZCIg
aW4gcmVzdAotICAgICAgICBzZWxmLmZsdXNoKGNoaWxkKQotCi0gICAgZGVmIHRlc3RfcGRiX2lu
dGVyYWN0aW9uX2NhcHR1cmluZ190d2ljZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0
ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBw
eXRlc3QKLSAgICAgICAgICAgIGRlZiB0ZXN0XzEoKToKLSAgICAgICAgICAgICAgICBpID0gMAot
ICAgICAgICAgICAgICAgIHByaW50ICgiaGVsbG8xNyIpCi0gICAgICAgICAgICAgICAgcHl0ZXN0
LnNldF90cmFjZSgpCi0gICAgICAgICAgICAgICAgeCA9IDMKLSAgICAgICAgICAgICAgICBwcmlu
dCAoImhlbGxvMTgiKQotICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRfdHJhY2UoKQotICAgICAg
ICAgICAgICAgIHggPSA0Ci0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIGNoaWxkID0g
dGVzdGRpci5zcGF3bl9weXRlc3Qoc3RyKHAxKSkKLSAgICAgICAgY2hpbGQuZXhwZWN0KCJ0ZXN0
XzEiKQotICAgICAgICBjaGlsZC5leHBlY3QoInggPSAzIikKLSAgICAgICAgY2hpbGQuZXhwZWN0
KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRsaW5lKCJjIikKLSAgICAgICAgY2hpbGQuZXhw
ZWN0KCJ4ID0gNCIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAgICByZXN0ID0gY2hp
bGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFzc2VydCAiMSBmYWlsZWQiIGluIHJl
c3QKLSAgICAgICAgYXNzZXJ0ICJkZWYgdGVzdF8xIiBpbiByZXN0Ci0gICAgICAgIGFzc2VydCAi
aGVsbG8xNyIgaW4gcmVzdCAgIyBvdXQgaXMgY2FwdHVyZWQKLSAgICAgICAgYXNzZXJ0ICJoZWxs
bzE4IiBpbiByZXN0ICAjIG91dCBpcyBjYXB0dXJlZAotICAgICAgICBzZWxmLmZsdXNoKGNoaWxk
KQotCi0gICAgZGVmIHRlc3RfcGRiX3VzZWRfb3V0c2lkZV90ZXN0KHNlbGYsIHRlc3RkaXIpOgot
ICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgcHl0ZXN0LnNldF90cmFjZSgpCi0gICAg
ICAgICAgICB4ID0gNQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRl
c3RkaXIuc3Bhd24oIiVzICVzIiAlIChzeXMuZXhlY3V0YWJsZSwgcDEpKQotICAgICAgICBjaGls
ZC5leHBlY3QoInggPSA1IikKLSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHNlbGYu
Zmx1c2goY2hpbGQpCi0KLSAgICBkZWYgdGVzdF9wZGJfdXNlZF9pbl9nZW5lcmF0ZV90ZXN0cyhz
ZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAg
ICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgICAgIGRlZiBweXRl
c3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgotICAgICAgICAgICAgICAgIHB5dGVzdC5zZXRf
dHJhY2UoKQotICAgICAgICAgICAgICAgIHggPSA1Ci0gICAgICAgICAgICBkZWYgdGVzdF9mb28o
YSk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAg
ICBjaGlsZCA9IHRlc3RkaXIuc3Bhd25fcHl0ZXN0KHN0cihwMSkpCi0gICAgICAgIGNoaWxkLmV4
cGVjdCgieCA9IDUiKQotICAgICAgICBjaGlsZC5zZW5kZW9mKCkKLSAgICAgICAgc2VsZi5mbHVz
aChjaGlsZCkKLQotICAgIGRlZiB0ZXN0X3BkYl9jb2xsZWN0aW9uX2ZhaWx1cmVfaXNfc2hvd24o
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCJ4eHgiKQot
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCItLXBkYiIsIHAx
KQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqTmFtZUVycm9yKnh4eCoi
LCAiKjEgZXJyb3IqIl0pCi0KLSAgICBkZWYgdGVzdF9lbnRlcl9wZGJfaG9va19pc19jYWxsZWQo
c2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAg
ICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0ZXN0X2VudGVyX3BkYihjb25maWcpOgotICAgICAg
ICAgICAgICAgIGFzc2VydCBjb25maWcudGVzdGluZ192ZXJpZmljYXRpb24gPT0gJ2NvbmZpZ3Vy
ZWQnCi0gICAgICAgICAgICAgICAgcHJpbnQgJ2VudGVyX3BkYl9ob29rJwotCi0gICAgICAgICAg
ICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgICAgICAgICAgICAgIGNvbmZpZy50
ZXN0aW5nX3ZlcmlmaWNhdGlvbiA9ICdjb25maWd1cmVkJwotICAgICAgICAiIiIKLSAgICAgICAg
KQotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0gICAgICAgICAgICBkZWYgdGVzdF9mb28oKToKLSAg
ICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkKLSAgICAgICAgIiIiCi0gICAgICAgICkK
LSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpKQotICAgICAgICBj
aGlsZC5leHBlY3QoImVudGVyX3BkYl9ob29rIikKLSAgICAgICAgY2hpbGQuc2VuZCgiY1xuIikK
LSAgICAgICAgY2hpbGQuc2VuZGVvZigpCi0gICAgICAgIHNlbGYuZmx1c2goY2hpbGQpCi0KLSAg
ICBkZWYgdGVzdF9wZGJfY3VzdG9tX2NscyhzZWxmLCB0ZXN0ZGlyLCBjdXN0b21fcGRiX2NhbGxz
KToKLSAgICAgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoIiIieHh4ICIiIikKLSAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLXBkYiIsICItLXBkYmNscz1f
cHl0ZXN0Ol9DdXN0b21QZGIiLCBwMSkKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKFsiKk5hbWVFcnJvcip4eHgqIiwgIioxIGVycm9yKiJdKQotICAgICAgICBhc3NlcnQgY3Vz
dG9tX3BkYl9jYWxscyA9PSBbImluaXQiLCAicmVzZXQiLCAiaW50ZXJhY3Rpb24iXQotCi0gICAg
ZGVmIHRlc3RfcGRiX2N1c3RvbV9jbHNfd2l0aG91dF9wZGIoc2VsZiwgdGVzdGRpciwgY3VzdG9t
X3BkYl9jYWxscyk6Ci0gICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKCIiInh4eCAiIiIp
Ci0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2VzcygiLS1wZGJjbHM9
X3B5dGVzdDpfQ3VzdG9tUGRiIiwgcDEpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIipOYW1lRXJyb3IqeHh4KiIsICIqMSBlcnJvcioiXSkKLSAgICAgICAgYXNzZXJ0IGN1
c3RvbV9wZGJfY2FsbHMgPT0gW10KLQotICAgIGRlZiB0ZXN0X3BkYl9jdXN0b21fY2xzX3dpdGhf
c2V0dHJhY2Uoc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gpOgotICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCi0gICAgICAgICAgICBjdXN0b21fcGRiPSIiIgotICAgICAgICAgICAgY2xhc3Mg
Q3VzdG9tUGRiKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIHNldF90cmFjZSgqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnY3VzdG9tIHNldF90cmFjZT4n
Ci0gICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0gICAgICAg
ICAgICBkZWYgdGVzdF9mb28oKToKLSAgICAgICAgICAgICAgICBweXRlc3Quc2V0X3RyYWNlKCkK
LSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRI
T05QQVRIIiwgc3RyKHRlc3RkaXIudG1wZGlyKSkKLSAgICAgICAgY2hpbGQgPSB0ZXN0ZGlyLnNw
YXduX3B5dGVzdCgiLS1wZGJjbHM9Y3VzdG9tX3BkYjpDdXN0b21QZGIgJXMiICUgc3RyKHAxKSkK
LQotICAgICAgICBjaGlsZC5leHBlY3QoImN1c3RvbSBzZXRfdHJhY2U+IikKLSAgICAgICAgc2Vs
Zi5mbHVzaChjaGlsZCkKLQotCi1jbGFzcyBUZXN0RGVidWdnaW5nQnJlYWtwb2ludHMob2JqZWN0
KToKLQotICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2JyZWFrcG9pbnRfbW9kdWxlX2dsb2JhbChzZWxm
KToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgdGhhdCBzdXBwb3J0cyBicmVha3BvaW50IGds
b2JhbCBtYXJrcyBvbiBQeXRob24gMy43KyBhbmQgbm90IG9uCi0gICAgICAgIENQeXRob24gMy41
LCAyLjcKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0g
MyBhbmQgc3lzLnZlcnNpb25faW5mby5taW5vciA+PSA3OgotICAgICAgICAgICAgYXNzZXJ0IFNV
UFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiBpcyBUcnVlCi0gICAgICAgIGlmIHN5cy52ZXJzaW9u
X2luZm8ubWFqb3IgPT0gMyBhbmQgc3lzLnZlcnNpb25faW5mby5taW5vciA9PSA1OgotICAgICAg
ICAgICAgYXNzZXJ0IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJTFRJTiBpcyBGYWxzZQotICAgICAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDIgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWlu
b3IgPT0gNzoKLSAgICAgICAgICAgIGFzc2VydCBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4g
aXMgRmFsc2UKLQotICAgIEBweXRlc3QubWFyay5za2lwaWYoCi0gICAgICAgIG5vdCBTVVBQT1JU
U19CUkVBS1BPSU5UX0JVSUxUSU4sIHJlYXNvbj0iUmVxdWlyZXMgYnJlYWtwb2ludCgpIGJ1aWx0
aW4iCi0gICAgKQotICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiYXJnIiwgWyItLXBkYiIs
ICIiXSkKLSAgICBkZWYgdGVzdF9zeXNfYnJlYWtwb2ludGhvb2tfY29uZmlndXJlX2FuZF91bmNv
bmZpZ3VyZShzZWxmLCB0ZXN0ZGlyLCBhcmcpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCB0
aGF0IHN5cy5icmVha3BvaW50aG9vayBpcyBzZXQgdG8gdGhlIGN1c3RvbSBQZGIgY2xhc3Mgb25j
ZSBjb25maWd1cmVkLCB0ZXN0IHRoYXQKLSAgICAgICAgaG9vayBpcyByZXNldCB0byBzeXN0ZW0g
dmFsdWUgb25jZSBweXRlc3QgaGFzIGJlZW4gdW5jb25maWd1cmVkCi0gICAgICAgICIiIgotICAg
ICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAg
aW1wb3J0IHN5cwotICAgICAgICAgICAgZnJvbSBweXRlc3QgaW1wb3J0IGhvb2tpbXBsCi0gICAg
ICAgICAgICBmcm9tIF9weXRlc3QuZGVidWdnaW5nIGltcG9ydCBweXRlc3RQREIKLQotICAgICAg
ICAgICAgZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICAgICAgICAgICAgICBjb25m
aWcuX2NsZWFudXAuYXBwZW5kKGNoZWNrX3Jlc3RvcmVkKQotCi0gICAgICAgICAgICBkZWYgY2hl
Y2tfcmVzdG9yZWQoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc3lzLmJyZWFrcG9pbnRob29r
ID09IHN5cy5fX2JyZWFrcG9pbnRob29rX18KLQotICAgICAgICAgICAgZGVmIHRlc3RfY2hlY2so
KToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc3lzLmJyZWFrcG9pbnRob29rID09IHB5dGVzdFBE
Qi5zZXRfdHJhY2UKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgdGVzdGRpci5tYWtl
cHlmaWxlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgdGVzdF9ub3RoaW5nKCk6
IHBhc3MKLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgYXJncyA9IChhcmcsKSBpZiBh
cmcgZWxzZSAoKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNz
KCphcmdzKQotICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQg
aW4gKiJdKQotCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAgICAgbm90IFNVUFBPUlRT
X0JSRUFLUE9JTlRfQlVJTFRJTiwgcmVhc29uPSJSZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRp
biIKLSAgICApCi0gICAgZGVmIHRlc3RfcGRiX2N1c3RvbV9jbHMoc2VsZiwgdGVzdGRpciwgY3Vz
dG9tX2RlYnVnZ2VyX2hvb2spOgotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAg
ICAgICAgICAgICIiIgotICAgICAgICAgICAgZGVmIHRlc3Rfbm90aGluZygpOgotICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnQoKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoCi0gICAgICAgICAgICAiLS1wZGIiLCAi
LS1wZGJjbHM9X3B5dGVzdDpfQ3VzdG9tRGVidWdnZXIiLCBwMQotICAgICAgICApCi0gICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipDdXN0b21EZWJ1Z2dlcioiLCAiKjEgcGFz
c2VkKiJdKQotICAgICAgICBhc3NlcnQgY3VzdG9tX2RlYnVnZ2VyX2hvb2sgPT0gWyJpbml0Iiwg
InNldF90cmFjZSJdCi0KLSAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImFyZyIsIFsiLS1w
ZGIiLCAiIl0pCi0gICAgQHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAgICAgbm90IFNVUFBPUlRT
X0JSRUFLUE9JTlRfQlVJTFRJTiwgcmVhc29uPSJSZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRp
biIKLSAgICApCi0gICAgZGVmIHRlc3RfZW52aXJvbl9jdXN0b21fY2xhc3Moc2VsZiwgdGVzdGRp
ciwgY3VzdG9tX2RlYnVnZ2VyX2hvb2ssIGFyZyk6Ci0gICAgICAgIHRlc3RkaXIubWFrZWNvbmZ0
ZXN0KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgb3MKLSAgICAgICAgICAg
IGltcG9ydCBzeXMKLQotICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OQlJFQUtQT0lOVCdd
ID0gJ19weXRlc3QuX0N1c3RvbURlYnVnZ2VyLnNldF90cmFjZScKLQotICAgICAgICAgICAgZGVm
IHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICAgICAgICAgICAgICBjb25maWcuX2NsZWFu
dXAuYXBwZW5kKGNoZWNrX3Jlc3RvcmVkKQotCi0gICAgICAgICAgICBkZWYgY2hlY2tfcmVzdG9y
ZWQoKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc3lzLmJyZWFrcG9pbnRob29rID09IHN5cy5f
X2JyZWFrcG9pbnRob29rX18KLQotICAgICAgICAgICAgZGVmIHRlc3RfY2hlY2soKToKLSAgICAg
ICAgICAgICAgICBpbXBvcnQgX3B5dGVzdAotICAgICAgICAgICAgICAgIGFzc2VydCBzeXMuYnJl
YWtwb2ludGhvb2sgaXMgX3B5dGVzdC5fQ3VzdG9tRGVidWdnZXIuc2V0X3RyYWNlCi0gICAgICAg
ICIiIgotICAgICAgICApCi0gICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAg
ICIiIgotICAgICAgICAgICAgZGVmIHRlc3Rfbm90aGluZygpOiBwYXNzCi0gICAgICAgICIiIgot
ICAgICAgICApCi0gICAgICAgIGFyZ3MgPSAoYXJnLCkgaWYgYXJnIGVsc2UgKCkKLSAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygqYXJncykKLSAgICAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFzc2VkIGluICoiXSkKLQotICAgIEBweXRl
c3QubWFyay5za2lwaWYoCi0gICAgICAgIG5vdCBTVVBQT1JUU19CUkVBS1BPSU5UX0JVSUxUSU4s
IHJlYXNvbj0iUmVxdWlyZXMgYnJlYWtwb2ludCgpIGJ1aWx0aW4iCi0gICAgKQotICAgIEBweXRl
c3QubWFyay5za2lwaWYoCi0gICAgICAgIG5vdCBfRU5WSVJPTl9QWVRIT05CUkVBS1BPSU5UID09
ICIiLAotICAgICAgICByZWFzb249IlJlcXVpcmVzIGJyZWFrcG9pbnQoKSBkZWZhdWx0IHZhbHVl
IiwKLSAgICApCi0gICAgZGVmIHRlc3Rfc3lzX2JyZWFrcG9pbnRfaW50ZXJjZXB0aW9uKHNlbGYs
IHRlc3RkaXIpOgotICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAg
ICIiIgotICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIGJyZWFrcG9p
bnQoKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bh
d25fcHl0ZXN0KHN0cihwMSkpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikKLSAgICAg
ICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAg
ICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFzc2VydCAiMSBm
YWlsZWQiIGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUg
b3V0cHV0IiBub3QgaW4gcmVzdAotICAgICAgICBUZXN0UERCLmZsdXNoKGNoaWxkKQotCi0gICAg
QHB5dGVzdC5tYXJrLnNraXBpZigKLSAgICAgICAgbm90IFNVUFBPUlRTX0JSRUFLUE9JTlRfQlVJ
TFRJTiwgcmVhc29uPSJSZXF1aXJlcyBicmVha3BvaW50KCkgYnVpbHRpbiIKLSAgICApCi0gICAg
ZGVmIHRlc3RfcGRiX25vdF9hbHRlcmVkKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwMSA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHBk
YgotICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgotICAgICAgICAgICAgICAgIHBkYi5zZXRfdHJh
Y2UoKQotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAgICBjaGlsZCA9IHRlc3RkaXIuc3Bh
d25fcHl0ZXN0KHN0cihwMSkpCi0gICAgICAgIGNoaWxkLmV4cGVjdCgidGVzdF8xIikKLSAgICAg
ICAgY2hpbGQuZXhwZWN0KCIoUGRiKSIpCi0gICAgICAgIGNoaWxkLnNlbmRlb2YoKQotICAgICAg
ICByZXN0ID0gY2hpbGQucmVhZCgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGFzc2VydCAiMSBm
YWlsZWQiIGluIHJlc3QKLSAgICAgICAgYXNzZXJ0ICJyZWFkaW5nIGZyb20gc3RkaW4gd2hpbGUg
b3V0cHV0IiBub3QgaW4gcmVzdAotICAgICAgICBUZXN0UERCLmZsdXNoKGNoaWxkKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3BsdWdpbm1hbmFnZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL3Rlc3RfcGx1Z2lubWFuYWdlci5weQppbmRleCAyMmNlYTQyMDdjNjQuLmEw
ODNmNGI0ZjM3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3BsdWdpbm1h
bmFnZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3BsdWdpbm1hbmFnZXIucHkK
QEAgLTEsMjMgKzEsMjIgQEAKLSMgZW5jb2Rpbmc6IFVURi04Ci1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgcHl0
ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdAogCi1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBnZXRfY29u
ZmlnLCBQeXRlc3RQbHVnaW5NYW5hZ2VyCi1mcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgRVhJVF9O
T1RFU1RTQ09MTEVDVEVELCBTZXNzaW9uCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29u
ZmlnIGltcG9ydCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgUHl0ZXN0UGx1
Z2luTWFuYWdlcgorZnJvbSBfcHl0ZXN0LmNvbmZpZy5leGNlcHRpb25zIGltcG9ydCBVc2FnZUVy
cm9yCitmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgogCiAKIEBweXRlc3QuZml4dHVy
ZQotZGVmIHB5dGVzdHBtKCk6CitkZWYgcHl0ZXN0cG0oKSAtPiBQeXRlc3RQbHVnaW5NYW5hZ2Vy
OgogICAgIHJldHVybiBQeXRlc3RQbHVnaW5NYW5hZ2VyKCkKIAogCi1jbGFzcyBUZXN0UHl0ZXN0
UGx1Z2luSW50ZXJhY3Rpb25zKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVzdF9hZGRob29rc19jb25m
dGVzdHBsdWdpbihzZWxmLCB0ZXN0ZGlyKToKK2NsYXNzIFRlc3RQeXRlc3RQbHVnaW5JbnRlcmFj
dGlvbnM6CisgICAgZGVmIHRlc3RfYWRkaG9va3NfY29uZnRlc3RwbHVnaW4oc2VsZiwgdGVzdGRp
ciwgX2NvbmZpZ19mb3JfdGVzdCk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgIG5ld2hvb2tzPSIiIgogICAgICAgICAgICAgZGVmIHB5dGVzdF9teWhvb2soeHl6KToK
QEAgLTI2LDIwICsyNSwxOSBAQCBjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luSW50ZXJhY3Rpb25zKG9i
amVjdCk6CiAgICAgICAgICkKICAgICAgICAgY29uZiA9IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAog
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgc3lzIDsgc3lzLnBhdGguaW5zZXJ0
KDAsICcuJykKICAgICAgICAgICAgIGltcG9ydCBuZXdob29rcwogICAgICAgICAgICAgZGVmIHB5
dGVzdF9hZGRob29rcyhwbHVnaW5tYW5hZ2VyKToKLSAgICAgICAgICAgICAgICBwbHVnaW5tYW5h
Z2VyLmFkZGhvb2tzKG5ld2hvb2tzKQorICAgICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXIuYWRk
X2hvb2tzcGVjcyhuZXdob29rcykKICAgICAgICAgICAgIGRlZiBweXRlc3RfbXlob29rKHh5eik6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHh5eiArIDEKICAgICAgICAgIiIiCiAgICAgICAgICkK
LSAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZygpCisgICAgICAgIGNvbmZpZyA9IF9jb25maWdf
Zm9yX3Rlc3QKICAgICAgICAgcG0gPSBjb25maWcucGx1Z2lubWFuYWdlcgogICAgICAgICBwbS5o
b29rLnB5dGVzdF9hZGRob29rcy5jYWxsX2hpc3RvcmljKAogICAgICAgICAgICAga3dhcmdzPWRp
Y3QocGx1Z2lubWFuYWdlcj1jb25maWcucGx1Z2lubWFuYWdlcikKICAgICAgICAgKQotICAgICAg
ICBjb25maWcucGx1Z2lubWFuYWdlci5faW1wb3J0Y29uZnRlc3QoY29uZikKKyAgICAgICAgY29u
ZmlnLnBsdWdpbm1hbmFnZXIuX2ltcG9ydGNvbmZ0ZXN0KGNvbmYsIGltcG9ydG1vZGU9InByZXBl
bmQiKQogICAgICAgICAjIHByaW50KGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW5zKCkp
CiAgICAgICAgIHJlcyA9IGNvbmZpZy5ob29rLnB5dGVzdF9teWhvb2soeHl6PTEwKQogICAgICAg
ICBhc3NlcnQgcmVzID09IFsxMV0KQEAgLTQ5LDQzICs0NywxMyBAQCBjbGFzcyBUZXN0UHl0ZXN0
UGx1Z2luSW50ZXJhY3Rpb25zKG9iamVjdCk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
IGltcG9ydCBzeXMKICAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkaG9va3MocGx1Z2lubWFuYWdl
cik6Ci0gICAgICAgICAgICAgICAgcGx1Z2lubWFuYWdlci5hZGRob29rcyhzeXMpCisgICAgICAg
ICAgICAgICAgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzKHN5cykKICAgICAgICAgIiIiCiAg
ICAgICAgICkKICAgICAgICAgcmVzID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAgICAgICBhc3Nl
cnQgcmVzLnJldCAhPSAwCiAgICAgICAgIHJlcy5zdGRlcnIuZm5tYXRjaF9saW5lcyhbIipkaWQg
bm90IGZpbmQqc3lzKiJdKQogCi0gICAgZGVmIHRlc3RfbmFtZXNwYWNlX2Vhcmx5X2Zyb21faW1w
b3J0KHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICAgICAgIiIiCi0gICAgICAgICAgICBmcm9tIHB5dGVzdCBpbXBvcnQgSXRlbQotICAgICAg
ICAgICAgZnJvbSBweXRlc3QgaW1wb3J0IEl0ZW0gYXMgSXRlbTIKLSAgICAgICAgICAgIGFzc2Vy
dCBJdGVtIGlzIEl0ZW0yCi0gICAgICAgICIiIgotICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0aG9uKHApCi0gICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKLQot
ICAgIGRlZiB0ZXN0X2RvX2V4dF9uYW1lc3BhY2Uoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIHRl
c3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0
ZXN0X25hbWVzcGFjZSgpOgotICAgICAgICAgICAgICAgIHJldHVybiB7J2hlbGxvJzogJ3dvcmxk
J30KLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgZnJvbSBweXRlc3QgaW1wb3J0IGhlbGxv
Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBkZWYgdGVzdF9oZWxsbygp
OgotICAgICAgICAgICAgICAgIGFzc2VydCBoZWxsbyA9PSAid29ybGQiCi0gICAgICAgICAgICAg
ICAgYXNzZXJ0ICdoZWxsbycgaW4gcHl0ZXN0Ll9fYWxsX18KLSAgICAgICAgIiIiCi0gICAgICAg
ICkKLSAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKHApCi0gICAgICAgIHJlcHJl
Yy5hc3NlcnRvdXRjb21lKHBhc3NlZD0xKQotCiAgICAgZGVmIHRlc3RfZG9fb3B0aW9uX3Bvc3Rp
bml0aWFsaXplKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBjb25maWcgPSB0ZXN0ZGlyLnBhcnNl
Y29uZmlndXJlKCkKICAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGNvbmZpZy5vcHRpb24sICJ0
ZXN0MTIzIikKQEAgLTk2LDE2ICs2NCwxNSBAQCBjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luSW50ZXJh
Y3Rpb25zKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSkKICAgICAg
ICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIuX2ltcG9ydGNv
bmZ0ZXN0KHApCisgICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChw
LCBpbXBvcnRtb2RlPSJwcmVwZW5kIikKICAgICAgICAgYXNzZXJ0IGNvbmZpZy5vcHRpb24udGVz
dDEyMwogCiAgICAgZGVmIHRlc3RfY29uZmlndXJlKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBj
b25maWcgPSB0ZXN0ZGlyLnBhcnNlY29uZmlnKCkKICAgICAgICAgdmFsdWVzID0gW10KIAotICAg
ICAgICBjbGFzcyBBKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBweXRlc3RfY29uZmlndXJl
KHNlbGYsIGNvbmZpZyk6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgcHl0ZXN0
X2NvbmZpZ3VyZShzZWxmKToKICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHNlbGYpCiAK
ICAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoQSgpKQpAQCAtMTIwLDIyICs4
NywyMCBAQCBjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luSW50ZXJhY3Rpb25zKG9iamVjdCk6CiAgICAg
ICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKEEoKSkKICAgICAgICAgYXNzZXJ0IGxl
bih2YWx1ZXMpID09IDIKIAotICAgIGRlZiB0ZXN0X2hvb2tfdHJhY2luZyhzZWxmKToKLSAgICAg
ICAgcHl0ZXN0cG0gPSBnZXRfY29uZmlnKCkucGx1Z2lubWFuYWdlciAgIyBmdWxseSBpbml0aWFs
aXplZCB3aXRoIHBsdWdpbnMKKyAgICBkZWYgdGVzdF9ob29rX3RyYWNpbmcoc2VsZiwgX2NvbmZp
Z19mb3JfdGVzdCkgLT4gTm9uZToKKyAgICAgICAgcHl0ZXN0cG0gPSBfY29uZmlnX2Zvcl90ZXN0
LnBsdWdpbm1hbmFnZXIgICMgZnVsbHkgaW5pdGlhbGl6ZWQgd2l0aCBwbHVnaW5zCiAgICAgICAg
IHNhdmVpbmRlbnQgPSBbXQogCi0gICAgICAgIGNsYXNzIGFwaTEob2JqZWN0KToKLQorICAgICAg
ICBjbGFzcyBhcGkxOgogICAgICAgICAgICAgZGVmIHB5dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZChz
ZWxmKToKICAgICAgICAgICAgICAgICBzYXZlaW5kZW50LmFwcGVuZChweXRlc3RwbS50cmFjZS5y
b290LmluZGVudCkKIAotICAgICAgICBjbGFzcyBhcGkyKG9iamVjdCk6Ci0KKyAgICAgICAgY2xh
c3MgYXBpMjoKICAgICAgICAgICAgIGRlZiBweXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQoc2VsZik6
CiAgICAgICAgICAgICAgICAgc2F2ZWluZGVudC5hcHBlbmQocHl0ZXN0cG0udHJhY2Uucm9vdC5p
bmRlbnQpCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCiAKLSAgICAgICAgdmFs
dWVzID0gW10KKyAgICAgICAgdmFsdWVzID0gW10gICMgdHlwZTogTGlzdFtzdHJdCiAgICAgICAg
IHB5dGVzdHBtLnRyYWNlLnJvb3Quc2V0d3JpdGVyKHZhbHVlcy5hcHBlbmQpCiAgICAgICAgIHVu
ZG8gPSBweXRlc3RwbS5lbmFibGVfdHJhY2luZygpCiAgICAgICAgIHRyeToKQEAgLTE1OCw0OCAr
MTIzLDQ4IEBAIGNsYXNzIFRlc3RQeXRlc3RQbHVnaW5JbnRlcmFjdGlvbnMob2JqZWN0KToKICAg
ICBkZWYgdGVzdF9ob29rX3Byb3h5KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICAiIiJUZXN0IHRo
ZSBnZXRob29rcHJveHkgZnVuY3Rpb24oIzIwMTYpIiIiCiAgICAgICAgIGNvbmZpZyA9IHRlc3Rk
aXIucGFyc2Vjb25maWcoKQotICAgICAgICBzZXNzaW9uID0gU2Vzc2lvbihjb25maWcpCisgICAg
ICAgIHNlc3Npb24gPSBTZXNzaW9uLmZyb21fY29uZmlnKGNvbmZpZykKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKCoqeyJ0ZXN0cy9jb25mdGVzdC5weSI6ICIiLCAidGVzdHMvc3ViZGlyL2Nv
bmZ0ZXN0LnB5IjogIiJ9KQogCiAgICAgICAgIGNvbmZ0ZXN0MSA9IHRlc3RkaXIudG1wZGlyLmpv
aW4oInRlc3RzL2NvbmZ0ZXN0LnB5IikKICAgICAgICAgY29uZnRlc3QyID0gdGVzdGRpci50bXBk
aXIuam9pbigidGVzdHMvc3ViZGlyL2NvbmZ0ZXN0LnB5IikKIAotICAgICAgICBjb25maWcucGx1
Z2lubWFuYWdlci5faW1wb3J0Y29uZnRlc3QoY29uZnRlc3QxKQorICAgICAgICBjb25maWcucGx1
Z2lubWFuYWdlci5faW1wb3J0Y29uZnRlc3QoY29uZnRlc3QxLCBpbXBvcnRtb2RlPSJwcmVwZW5k
IikKICAgICAgICAgaWhvb2tfYSA9IHNlc3Npb24uZ2V0aG9va3Byb3h5KHRlc3RkaXIudG1wZGly
LmpvaW4oInRlc3RzIikpCiAgICAgICAgIGFzc2VydCBpaG9va19hIGlzIG5vdCBOb25lCi0gICAg
ICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChjb25mdGVzdDIpCisgICAg
ICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChjb25mdGVzdDIsIGltcG9y
dG1vZGU9InByZXBlbmQiKQogICAgICAgICBpaG9va19iID0gc2Vzc2lvbi5nZXRob29rcHJveHko
dGVzdGRpci50bXBkaXIuam9pbigidGVzdHMiKSkKICAgICAgICAgYXNzZXJ0IGlob29rX2EgaXMg
bm90IGlob29rX2IKIAotICAgIGRlZiB0ZXN0X3dhcm5fb25fZGVwcmVjYXRlZF9hZGRob29rcyhz
ZWxmLCBweXRlc3RwbSk6Ci0gICAgICAgIHdhcm5pbmdzID0gW10KLQotICAgICAgICBjbGFzcyBn
ZXRfd2FybmluZ3Mob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIHB5dGVzdF9sb2d3YXJuaW5n
KHNlbGYsIGNvZGUsIGZzbG9jYXRpb24sIG1lc3NhZ2UsIG5vZGVpZCk6Ci0gICAgICAgICAgICAg
ICAgd2FybmluZ3MuYXBwZW5kKG1lc3NhZ2UpCi0KLSAgICAgICAgY2xhc3MgUGx1Z2luKG9iamVj
dCk6Ci0KLSAgICAgICAgICAgIGRlZiBweXRlc3RfdGVzdGhvb2soKToKKyAgICBkZWYgdGVzdF9o
b29rX3dpdGhfYWRkb3B0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJUZXN0IHRoYXQg
aG9va3MgY2FuIGJlIHVzZWQgaW4gYSBjYWxsIHRvIHB5dGVzdF9hZGRvcHRpb24iIiIKKyAgICAg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgbmV3aG9va3M9IiIiCisgICAgICAg
ICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBAcHl0ZXN0Lmhvb2tzcGVjKGZpcnN0cmVz
dWx0PVRydWUpCisgICAgICAgICAgICBkZWYgcHl0ZXN0X2RlZmF1bHRfdmFsdWUoKToKICAgICAg
ICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcHl0ZXN0cG0ucmVnaXN0ZXIoZ2V0X3dhcm5pbmdz
KCkpCi0gICAgICAgIGJlZm9yZSA9IGxpc3Qod2FybmluZ3MpCi0gICAgICAgIHB5dGVzdHBtLmFk
ZGhvb2tzKFBsdWdpbigpKQotICAgICAgICBhc3NlcnQgbGVuKHdhcm5pbmdzKSA9PSBsZW4oYmVm
b3JlKSArIDEKLSAgICAgICAgYXNzZXJ0ICJkZXByZWNhdGVkIiBpbiB3YXJuaW5nc1stMV0KLQot
Ci1kZWYgdGVzdF9uYW1lc3BhY2VfaGFzX2RlZmF1bHRfYW5kX2Vudl9wbHVnaW5zKHRlc3RkaXIp
OgotICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgotICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgIHB5dGVzdC5tYXJrCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0aG9uKHApCi0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorICAg
ICAgICApCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgIG15cGx1Z2lu
PSIiIgorICAgICAgICAgICAgaW1wb3J0IG5ld2hvb2tzCisgICAgICAgICAgICBkZWYgcHl0ZXN0
X2FkZGhvb2tzKHBsdWdpbm1hbmFnZXIpOgorICAgICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXIu
YWRkX2hvb2tzcGVjcyhuZXdob29rcykKKyAgICAgICAgICAgIGRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlciwgcGx1Z2lubWFuYWdlcik6CisgICAgICAgICAgICAgICAgZGVmYXVsdF92YWx1ZSA9
IHBsdWdpbm1hbmFnZXIuaG9vay5weXRlc3RfZGVmYXVsdF92YWx1ZSgpCisgICAgICAgICAgICAg
ICAgcGFyc2VyLmFkZG9wdGlvbigiLS1jb25maWciLCBoZWxwPSJDb25maWcsIGRlZmF1bHRzIHRv
ICUoZGVmYXVsdClzIiwgZGVmYXVsdD1kZWZhdWx0X3ZhbHVlKQorICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAg
ICAgICAgICAgcHl0ZXN0X3BsdWdpbnM9KCJteXBsdWdpbiIsKQorICAgICAgICAgICAgZGVmIHB5
dGVzdF9kZWZhdWx0X3ZhbHVlKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJkZWZhdWx0X3Zh
bHVlIgorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5
dGVzdCgiLS1oZWxwIikKKyAgICAgICAgcmVzLnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKi0tY29u
ZmlnPUNPTkZJRypkZWZhdWx0X3ZhbHVlKiJdKQogCiAKIGRlZiB0ZXN0X2RlZmF1bHRfbWFya2Vy
cyh0ZXN0ZGlyKToKQEAgLTIxNSwyNCArMTgwLDIyIEBAIGRlZiB0ZXN0X2ltcG9ydHBsdWdpbl9l
cnJvcl9tZXNzYWdlKHRlc3RkaXIsIHB5dGVzdHBtKToKICAgICAiIiIKICAgICB0ZXN0ZGlyLnN5
c3BhdGhpbnNlcnQodGVzdGRpci50bXBkaXIpCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAg
ICAgICBxd2U9IiIiCi0gICAgICAgICMgZW5jb2Rpbmc6IFVURi04CisgICAgICAgIHF3ZT0iIiJc
CiAgICAgICAgIGRlZiB0ZXN0X3RyYWNlYmFjaygpOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0
RXJyb3IodSdOb3QgcG9zc2libGUgdG8gaW1wb3J0OiDimLonKQorICAgICAgICAgICAgcmFpc2Ug
SW1wb3J0RXJyb3IoJ05vdCBwb3NzaWJsZSB0byBpbXBvcnQ6IOKYuicpCiAgICAgICAgIHRlc3Rf
dHJhY2ViYWNrKCkKLSAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgKQogICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXhjaW5mbzoKICAgICAgICAgcHl0ZXN0cG0uaW1wb3J0
X3BsdWdpbigicXdlIikKIAotICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAnLipFcnJvciBpbXBvcnRp
bmcgcGx1Z2luICJxd2UiOiBOb3QgcG9zc2libGUgdG8gaW1wb3J0OiAuJwotICAgIGV4cGVjdGVk
X3RyYWNlYmFjayA9ICIuKmluIHRlc3RfdHJhY2ViYWNrIgotICAgIGFzc2VydCByZS5tYXRjaChl
eHBlY3RlZF9tZXNzYWdlLCBzdHIoZXhjaW5mby52YWx1ZSkpCi0gICAgYXNzZXJ0IHJlLm1hdGNo
KGV4cGVjdGVkX3RyYWNlYmFjaywgc3RyKGV4Y2luZm8udHJhY2ViYWNrWy0xXSkpCi0KKyAgICBh
c3NlcnQgc3RyKGV4Y2luZm8udmFsdWUpLmVuZHN3aXRoKAorICAgICAgICAnRXJyb3IgaW1wb3J0
aW5nIHBsdWdpbiAicXdlIjogTm90IHBvc3NpYmxlIHRvIGltcG9ydDog4pi6JworICAgICkKKyAg
ICBhc3NlcnQgImluIHRlc3RfdHJhY2ViYWNrIiBpbiBzdHIoZXhjaW5mby50cmFjZWJhY2tbLTFd
KQogCi1jbGFzcyBUZXN0UHl0ZXN0UGx1Z2luTWFuYWdlcihvYmplY3QpOgogCitjbGFzcyBUZXN0
UHl0ZXN0UGx1Z2luTWFuYWdlcjoKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl9pbXBvcnRlZF9tb2R1
bGVzKHNlbGYpOgogICAgICAgICBwbSA9IFB5dGVzdFBsdWdpbk1hbmFnZXIoKQogICAgICAgICBt
b2QgPSB0eXBlcy5Nb2R1bGVUeXBlKCJ4LnkucHl0ZXN0X2hlbGxvIikKQEAgLTI0MCw3ICsyMDMs
NyBAQCBjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luTWFuYWdlcihvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgcG0uaXNfcmVnaXN0ZXJlZChtb2QpCiAgICAgICAgIHZhbHVlcyA9IHBtLmdldF9wbHVnaW5z
KCkKICAgICAgICAgYXNzZXJ0IG1vZCBpbiB2YWx1ZXMKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhW
YWx1ZUVycm9yLCAicG0ucmVnaXN0ZXIobW9kKSIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoVmFs
dWVFcnJvciwgcG0ucmVnaXN0ZXIsIG1vZCkKICAgICAgICAgcHl0ZXN0LnJhaXNlcyhWYWx1ZUVy
cm9yLCBsYW1iZGE6IHBtLnJlZ2lzdGVyKG1vZCkpCiAgICAgICAgICMgYXNzZXJ0IG5vdCBwbS5p
c19yZWdpc3RlcmVkKG1vZDIpCiAgICAgICAgIGFzc2VydCBwbS5nZXRfcGx1Z2lucygpID09IHZh
bHVlcwpAQCAtMjUzLDI0ICsyMTYsMjMgQEAgY2xhc3MgVGVzdFB5dGVzdFBsdWdpbk1hbmFnZXIo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHBtLmdldF9wbHVnaW4oInB5dGVzdF94eXoiKSA9PSBt
b2QKICAgICAgICAgYXNzZXJ0IHBtLmlzX3JlZ2lzdGVyZWQobW9kKQogCi0gICAgZGVmIHRlc3Rf
Y29uc2lkZXJfbW9kdWxlKHNlbGYsIHRlc3RkaXIsIHB5dGVzdHBtKToKKyAgICBkZWYgdGVzdF9j
b25zaWRlcl9tb2R1bGUoc2VsZiwgdGVzdGRpciwgcHl0ZXN0cG06IFB5dGVzdFBsdWdpbk1hbmFn
ZXIpIC0+IE5vbmU6CiAgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCiAgICAgICAgIHRl
c3RkaXIubWFrZXB5ZmlsZShweXRlc3RfcDE9IiMiKQogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUocHl0ZXN0X3AyPSIjIikKICAgICAgICAgbW9kID0gdHlwZXMuTW9kdWxlVHlwZSgidGVtcCIp
Ci0gICAgICAgIG1vZC5weXRlc3RfcGx1Z2lucyA9IFsicHl0ZXN0X3AxIiwgInB5dGVzdF9wMiJd
CisgICAgICAgIG1vZC5fX2RpY3RfX1sicHl0ZXN0X3BsdWdpbnMiXSA9IFsicHl0ZXN0X3AxIiwg
InB5dGVzdF9wMiJdCiAgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX21vZHVsZShtb2QpCiAgICAg
ICAgIGFzc2VydCBweXRlc3RwbS5nZXRfcGx1Z2luKCJweXRlc3RfcDEiKS5fX25hbWVfXyA9PSAi
cHl0ZXN0X3AxIgogICAgICAgICBhc3NlcnQgcHl0ZXN0cG0uZ2V0X3BsdWdpbigicHl0ZXN0X3Ay
IikuX19uYW1lX18gPT0gInB5dGVzdF9wMiIKIAotICAgIGRlZiB0ZXN0X2NvbnNpZGVyX21vZHVs
ZV9pbXBvcnRfbW9kdWxlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICBweXRlc3RwbSA9IGdldF9j
b25maWcoKS5wbHVnaW5tYW5hZ2VyCisgICAgZGVmIHRlc3RfY29uc2lkZXJfbW9kdWxlX2ltcG9y
dF9tb2R1bGUoc2VsZiwgdGVzdGRpciwgX2NvbmZpZ19mb3JfdGVzdCkgLT4gTm9uZToKKyAgICAg
ICAgcHl0ZXN0cG0gPSBfY29uZmlnX2Zvcl90ZXN0LnBsdWdpbm1hbmFnZXIKICAgICAgICAgbW9k
ID0gdHlwZXMuTW9kdWxlVHlwZSgieCIpCi0gICAgICAgIG1vZC5weXRlc3RfcGx1Z2lucyA9ICJw
eXRlc3RfYSIKKyAgICAgICAgbW9kLl9fZGljdF9fWyJweXRlc3RfcGx1Z2lucyJdID0gInB5dGVz
dF9hIgogICAgICAgICBhcGx1Z2luID0gdGVzdGRpci5tYWtlcHlmaWxlKHB5dGVzdF9hPSIjIikK
ICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5tYWtlX2hvb2tfcmVjb3JkZXIocHl0ZXN0cG0pCi0g
ICAgICAgICMgc3lzcGF0aC5wcmVwZW5kKGFwbHVnaW4uZGlycGF0aCgpKQotICAgICAgICBzeXMu
cGF0aC5pbnNlcnQoMCwgc3RyKGFwbHVnaW4uZGlycGF0aCgpKSkKKyAgICAgICAgdGVzdGRpci5z
eXNwYXRoaW5zZXJ0KGFwbHVnaW4uZGlycGF0aCgpKQogICAgICAgICBweXRlc3RwbS5jb25zaWRl
cl9tb2R1bGUobW9kKQogICAgICAgICBjYWxsID0gcmVwcmVjLmdldGNhbGwocHl0ZXN0cG0uaG9v
ay5weXRlc3RfcGx1Z2luX3JlZ2lzdGVyZWQubmFtZSkKICAgICAgICAgYXNzZXJ0IGNhbGwucGx1
Z2luLl9fbmFtZV9fID09ICJweXRlc3RfYSIKQEAgLTI4NSwxNyArMjQ3LDE4IEBAIGNsYXNzIFRl
c3RQeXRlc3RQbHVnaW5NYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBweXRlc3RwbS5jb25zaWRlcl9lbnYoKQogCisg
ICAgQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiKQogICAgIGRlZiB0ZXN0X3Bs
dWdpbl9za2lwKHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICAgICAgcCA9IHRlc3Rk
aXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgIHNraXBwaW5nMT0iIiIKICAgICAgICAgICAgIGlt
cG9ydCBweXRlc3QKLSAgICAgICAgICAgIHB5dGVzdC5za2lwKCJoZWxsbyIpCisgICAgICAgICAg
ICBweXRlc3Quc2tpcCgiaGVsbG8iLCBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSkKICAgICAgICAg
IiIiCiAgICAgICAgICkKICAgICAgICAgcC5jb3B5KHAuZGlycGF0aCgic2tpcHBpbmcyLnB5Iikp
CiAgICAgICAgIG1vbmtleXBhdGNoLnNldGVudigiUFlURVNUX1BMVUdJTlMiLCAic2tpcHBpbmcy
IikKLSAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ydyIsICItcCIsICJza2lw
cGluZzEiLCBzeXNwYXRoaW5zZXJ0PVRydWUpCi0gICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09
IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXAiLCAic2tpcHBpbmcxIiwgc3lzcGF0aGluc2VydD1UcnVlKQorICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKICAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWyIqc2tpcHBlZCBwbHVnaW4qc2tp
cHBpbmcxKmhlbGxvKiIsICIqc2tpcHBlZCBwbHVnaW4qc2tpcHBpbmcyKmhlbGxvKiJdCiAgICAg
ICAgICkKQEAgLTMyOSw4ICsyOTIsOCBAQCBjbGFzcyBUZXN0UHl0ZXN0UGx1Z2luTWFuYWdlcihv
YmplY3QpOgogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQq
Il0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfcGx1Z2luX2ltcG9ydG5hbWUoc2VsZiwgdGVzdGRp
ciwgcHl0ZXN0cG0pOgotICAgICAgICBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yLCAncHl0ZXN0
cG0uaW1wb3J0X3BsdWdpbigicXdlcXdleC55IiknKQotICAgICAgICBweXRlc3QucmFpc2VzKElt
cG9ydEVycm9yLCAncHl0ZXN0cG0uaW1wb3J0X3BsdWdpbigicHl0ZXN0X3F3ZXF3eC55IiknKQor
ICAgICAgICBweXRlc3QucmFpc2VzKEltcG9ydEVycm9yLCBweXRlc3RwbS5pbXBvcnRfcGx1Z2lu
LCAicXdlcXdleC55IikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhJbXBvcnRFcnJvciwgcHl0ZXN0
cG0uaW1wb3J0X3BsdWdpbiwgInB5dGVzdF9xd2Vxd3gueSIpCiAKICAgICAgICAgdGVzdGRpci5z
eXNwYXRoaW5zZXJ0KCkKICAgICAgICAgcGx1Z2lubmFtZSA9ICJweXRlc3RfaGVsbG8iCkBAIC0z
NDYsOCArMzA5LDggQEAgY2xhc3MgVGVzdFB5dGVzdFBsdWdpbk1hbmFnZXIob2JqZWN0KToKICAg
ICAgICAgYXNzZXJ0IHBsdWdpbjIgaXMgcGx1Z2luMQogCiAgICAgZGVmIHRlc3RfaW1wb3J0X3Bs
dWdpbl9kb3R0ZWRfbmFtZShzZWxmLCB0ZXN0ZGlyLCBweXRlc3RwbSk6Ci0gICAgICAgIHB5dGVz
dC5yYWlzZXMoSW1wb3J0RXJyb3IsICdweXRlc3RwbS5pbXBvcnRfcGx1Z2luKCJxd2Vxd2V4Lnki
KScpCi0gICAgICAgIHB5dGVzdC5yYWlzZXMoSW1wb3J0RXJyb3IsICdweXRlc3RwbS5pbXBvcnRf
cGx1Z2luKCJweXRlc3RfcXdlcXdleC55IiknKQorICAgICAgICBweXRlc3QucmFpc2VzKEltcG9y
dEVycm9yLCBweXRlc3RwbS5pbXBvcnRfcGx1Z2luLCAicXdlcXdleC55IikKKyAgICAgICAgcHl0
ZXN0LnJhaXNlcyhJbXBvcnRFcnJvciwgcHl0ZXN0cG0uaW1wb3J0X3BsdWdpbiwgInB5dGVzdF9x
d2Vxd2V4LnkiKQogCiAgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCiAgICAgICAgIHRl
c3RkaXIubWtweWRpcigicGtnIikuam9pbigicGx1Zy5weSIpLndyaXRlKCJ4PTMiKQpAQCAtMzYy
LDEzICszMjUsMjQgQEAgY2xhc3MgVGVzdFB5dGVzdFBsdWdpbk1hbmFnZXIob2JqZWN0KToKICAg
ICAgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX2NvbmZ0ZXN0KG1vZCkKIAogCi1jbGFzcyBUZXN0
UHl0ZXN0UGx1Z2luTWFuYWdlckJvb3RzdHJhcG1pbmcob2JqZWN0KToKLQorY2xhc3MgVGVzdFB5
dGVzdFBsdWdpbk1hbmFnZXJCb290c3RyYXBtaW5nOgogICAgIGRlZiB0ZXN0X3ByZXBhcnNlX2Fy
Z3Moc2VsZiwgcHl0ZXN0cG0pOgogICAgICAgICBweXRlc3QucmFpc2VzKAogICAgICAgICAgICAg
SW1wb3J0RXJyb3IsIGxhbWJkYTogcHl0ZXN0cG0uY29uc2lkZXJfcHJlcGFyc2UoWyJ4eXoiLCAi
LXAiLCAiaGVsbG8xMjMiXSkKICAgICAgICAgKQogCisgICAgICAgICMgSGFuZGxlcyAtcCB3aXRo
b3V0IHNwYWNlICgjMzUzMikuCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbXBvcnRFcnJv
cikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX3ByZXBhcnNlKFsi
LXBoZWxsbzEyMyJdKQorICAgICAgICBhc3NlcnQgJyJoZWxsbzEyMyInIGluIGV4Y2luZm8udmFs
dWUuYXJnc1swXQorICAgICAgICBweXRlc3RwbS5jb25zaWRlcl9wcmVwYXJzZShbIi1wbm86aGVs
bG8xMjMiXSkKKworICAgICAgICAjIEhhbmRsZXMgLXAgd2l0aG91dCBmb2xsb3dpbmcgYXJnICh3
aGVuIHVzZWQgd2l0aG91dCBhcmdwYXJzZSkuCisgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX3By
ZXBhcnNlKFsiLXAiXSkKKworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVXNhZ2VFcnJvciwg
bWF0Y2g9Il5wbHVnaW4gbWFpbiBjYW5ub3QgYmUgZGlzYWJsZWQkIik6CisgICAgICAgICAgICBw
eXRlc3RwbS5jb25zaWRlcl9wcmVwYXJzZShbIi1wIiwgIm5vOm1haW4iXSkKKwogICAgIGRlZiB0
ZXN0X3BsdWdpbl9wcmV2ZW50X3JlZ2lzdGVyKHNlbGYsIHB5dGVzdHBtKToKICAgICAgICAgcHl0
ZXN0cG0uY29uc2lkZXJfcHJlcGFyc2UoWyJ4eXoiLCAiLXAiLCAibm86YWJjIl0pCiAgICAgICAg
IGwxID0gcHl0ZXN0cG0uZ2V0X3BsdWdpbnMoKQpAQCAtMzg0LDMgKzM1OCwyOCBAQCBjbGFzcyBU
ZXN0UHl0ZXN0UGx1Z2luTWFuYWdlckJvb3RzdHJhcG1pbmcob2JqZWN0KToKICAgICAgICAgcHl0
ZXN0cG0uY29uc2lkZXJfcHJlcGFyc2UoWyJ4eXoiLCAiLXAiLCAibm86YWJjIl0pCiAgICAgICAg
IGwyID0gcHl0ZXN0cG0uZ2V0X3BsdWdpbnMoKQogICAgICAgICBhc3NlcnQgNDIgbm90IGluIGwy
CisKKyAgICBkZWYgdGVzdF9wbHVnaW5fcHJldmVudF9yZWdpc3Rlcl9zdGVwd2lzZV9vbl9jYWNo
ZXByb3ZpZGVyX3VucmVnaXN0ZXIoCisgICAgICAgIHNlbGYsIHB5dGVzdHBtCisgICAgKToKKyAg
ICAgICAgIiIiRnJvbSBQUiAjNDMwNDogVGhlIG9ubHkgd2F5IHRvIHVucmVnaXN0ZXIgYSBtb2R1
bGUgaXMgZG9jdW1lbnRlZCBhdAorICAgICAgICB0aGUgZW5kIG9mIGh0dHBzOi8vZG9jcy5weXRl
c3Qub3JnL2VuL3N0YWJsZS9wbHVnaW5zLmh0bWwuCisKKyAgICAgICAgV2hlbiB1bnJlZ2lzdGVy
IGNhY2hlcHJvdmlkZXIsIHRoZW4gdW5yZWdpc3RlciBzdGVwd2lzZSB0b28uCisgICAgICAgICIi
IgorICAgICAgICBweXRlc3RwbS5yZWdpc3Rlcig0MiwgbmFtZT0iY2FjaGVwcm92aWRlciIpCisg
ICAgICAgIHB5dGVzdHBtLnJlZ2lzdGVyKDQzLCBuYW1lPSJzdGVwd2lzZSIpCisgICAgICAgIGwx
ID0gcHl0ZXN0cG0uZ2V0X3BsdWdpbnMoKQorICAgICAgICBhc3NlcnQgNDIgaW4gbDEKKyAgICAg
ICAgYXNzZXJ0IDQzIGluIGwxCisgICAgICAgIHB5dGVzdHBtLmNvbnNpZGVyX3ByZXBhcnNlKFsi
eHl6IiwgIi1wIiwgIm5vOmNhY2hlcHJvdmlkZXIiXSkKKyAgICAgICAgbDIgPSBweXRlc3RwbS5n
ZXRfcGx1Z2lucygpCisgICAgICAgIGFzc2VydCA0MiBub3QgaW4gbDIKKyAgICAgICAgYXNzZXJ0
IDQzIG5vdCBpbiBsMgorCisgICAgZGVmIHRlc3RfYmxvY2tlZF9wbHVnaW5fY2FuX2JlX3VzZWQo
c2VsZiwgcHl0ZXN0cG0pOgorICAgICAgICBweXRlc3RwbS5jb25zaWRlcl9wcmVwYXJzZShbInh5
eiIsICItcCIsICJubzphYmMiLCAiLXAiLCAiYWJjIl0pCisKKyAgICAgICAgYXNzZXJ0IHB5dGVz
dHBtLmhhc19wbHVnaW4oImFiYyIpCisgICAgICAgIGFzc2VydCBub3QgcHl0ZXN0cG0uaXNfYmxv
Y2tlZCgiYWJjIikKKyAgICAgICAgYXNzZXJ0IG5vdCBweXRlc3RwbS5pc19ibG9ja2VkKCJweXRl
c3RfYWJjIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9weXRlc3Rlci5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9weXRlc3Rlci5weQppbmRleCBiNzRjMGI3Zjcw
YzIuLjQ2ZmFiMGNlODkzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3B5
dGVzdGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9weXRlc3Rlci5weQpAQCAt
MSwyNCArMSwzMyBAQAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLWZyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBv
cwotaW1wb3J0IHB5LnBhdGgKLWltcG9ydCBweXRlc3QKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgc3lzCitpbXBvcnQgdGltZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKworaW1wb3J0IHB5
LnBhdGgKKwogaW1wb3J0IF9weXRlc3QucHl0ZXN0ZXIgYXMgcHl0ZXN0ZXIKLWZyb20gX3B5dGVz
dC5weXRlc3RlciBpbXBvcnQgSG9va1JlY29yZGVyCi1mcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1w
b3J0IEN3ZFNuYXBzaG90LCBTeXNNb2R1bGVzU25hcHNob3QsIFN5c1BhdGhzU25hcHNob3QKK2lt
cG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCiBmcm9tIF9w
eXRlc3QuY29uZmlnIGltcG9ydCBQeXRlc3RQbHVnaW5NYW5hZ2VyCi1mcm9tIF9weXRlc3QubWFp
biBpbXBvcnQgRVhJVF9PSywgRVhJVF9URVNUU0ZBSUxFRAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVy
IGltcG9ydCBDd2RTbmFwc2hvdAorZnJvbSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBIb29rUmVj
b3JkZXIKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBvcnQgTGluZU1hdGNoZXIKK2Zyb20gX3B5
dGVzdC5weXRlc3RlciBpbXBvcnQgU3lzTW9kdWxlc1NuYXBzaG90Citmcm9tIF9weXRlc3QucHl0
ZXN0ZXIgaW1wb3J0IFN5c1BhdGhzU25hcHNob3QKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBpbXBv
cnQgVGVzdGRpcgogCiAKLWRlZiB0ZXN0X21ha2VfaG9va19yZWNvcmRlcih0ZXN0ZGlyKToKK2Rl
ZiB0ZXN0X21ha2VfaG9va19yZWNvcmRlcih0ZXN0ZGlyKSAtPiBOb25lOgogICAgIGl0ZW0gPSB0
ZXN0ZGlyLmdldGl0ZW0oImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCiAgICAgcmVjb3JkZXIgPSB0
ZXN0ZGlyLm1ha2VfaG9va19yZWNvcmRlcihpdGVtLmNvbmZpZy5wbHVnaW5tYW5hZ2VyKQogICAg
IGFzc2VydCBub3QgcmVjb3JkZXIuZ2V0ZmFpbHVyZXMoKQogCi0gICAgcHl0ZXN0LnhmYWlsKCJp
bnRlcm5hbCByZXBvcnRyZWNvcmRlciB0ZXN0cyBuZWVkIHJlZmFjdG9yaW5nIikKKyAgICAjIChU
aGUgc2lsbHkgY29uZGl0aW9uIGlzIHRvIGZvb2wgbXlweSB0aGF0IHRoZSBjb2RlIGJlbG93IHRo
aXMgaXMgcmVhY2hhYmxlKQorICAgIGlmIDEgKyAxID09IDI6CisgICAgICAgIHB5dGVzdC54ZmFp
bCgiaW50ZXJuYWwgcmVwb3J0cmVjb3JkZXIgdGVzdHMgbmVlZCByZWZhY3RvcmluZyIpCiAKLSAg
ICBjbGFzcyByZXAob2JqZWN0KToKKyAgICBjbGFzcyByZXA6CiAgICAgICAgIGV4Y2luZm8gPSBO
b25lCiAgICAgICAgIHBhc3NlZCA9IEZhbHNlCiAgICAgICAgIGZhaWxlZCA9IFRydWUKQEAgLTMx
LDIzICs0MCwyMyBAQCBkZWYgdGVzdF9tYWtlX2hvb2tfcmVjb3JkZXIodGVzdGRpcik6CiAgICAg
ZmFpbHVyZXMgPSByZWNvcmRlci5nZXRmYWlsdXJlcygpCiAgICAgYXNzZXJ0IGZhaWx1cmVzID09
IFtyZXBdCiAKLSAgICBjbGFzcyByZXAob2JqZWN0KToKKyAgICBjbGFzcyByZXAyOgogICAgICAg
ICBleGNpbmZvID0gTm9uZQogICAgICAgICBwYXNzZWQgPSBGYWxzZQogICAgICAgICBmYWlsZWQg
PSBGYWxzZQogICAgICAgICBza2lwcGVkID0gVHJ1ZQogICAgICAgICB3aGVuID0gImNhbGwiCiAK
LSAgICByZXAucGFzc2VkID0gRmFsc2UKLSAgICByZXAuc2tpcHBlZCA9IFRydWUKLSAgICByZWNv
cmRlci5ob29rLnB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChyZXBvcnQ9cmVwKQorICAgIHJlcDIu
cGFzc2VkID0gRmFsc2UKKyAgICByZXAyLnNraXBwZWQgPSBUcnVlCisgICAgcmVjb3JkZXIuaG9v
ay5weXRlc3RfcnVudGVzdF9sb2dyZXBvcnQocmVwb3J0PXJlcDIpCiAKICAgICBtb2Rjb2wgPSB0
ZXN0ZGlyLmdldG1vZHVsZWNvbCgiIikKLSAgICByZXAgPSBtb2Rjb2wuY29uZmlnLmhvb2sucHl0
ZXN0X21ha2VfY29sbGVjdF9yZXBvcnQoY29sbGVjdG9yPW1vZGNvbCkKLSAgICByZXAucGFzc2Vk
ID0gRmFsc2UKLSAgICByZXAuZmFpbGVkID0gVHJ1ZQotICAgIHJlcC5za2lwcGVkID0gRmFsc2UK
LSAgICByZWNvcmRlci5ob29rLnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9ydD1yZXApCisgICAg
cmVwMyA9IG1vZGNvbC5jb25maWcuaG9vay5weXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xs
ZWN0b3I9bW9kY29sKQorICAgIHJlcDMucGFzc2VkID0gRmFsc2UKKyAgICByZXAzLmZhaWxlZCA9
IFRydWUKKyAgICByZXAzLnNraXBwZWQgPSBGYWxzZQorICAgIHJlY29yZGVyLmhvb2sucHl0ZXN0
X2NvbGxlY3RyZXBvcnQocmVwb3J0PXJlcDMpCiAKICAgICBwYXNzZWQsIHNraXBwZWQsIGZhaWxl
ZCA9IHJlY29yZGVyLmxpc3RvdXRjb21lcygpCiAgICAgYXNzZXJ0IG5vdCBwYXNzZWQgYW5kIHNr
aXBwZWQgYW5kIGZhaWxlZApAQCAtNjAsMTggKzY5LDE3IEBAIGRlZiB0ZXN0X21ha2VfaG9va19y
ZWNvcmRlcih0ZXN0ZGlyKToKIAogICAgIHJlY29yZGVyLnVucmVnaXN0ZXIoKQogICAgIHJlY29y
ZGVyLmNsZWFyKCkKLSAgICByZWNvcmRlci5ob29rLnB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChy
ZXBvcnQ9cmVwKQotICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgInJlY29yZGVyLmdldGZh
aWx1cmVzKCkiKQorICAgIHJlY29yZGVyLmhvb2sucHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHJl
cG9ydD1yZXAzKQorICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgcmVjb3JkZXIuZ2V0ZmFp
bHVyZXMpCiAKIAotZGVmIHRlc3RfcGFyc2Vjb25maWcodGVzdGRpcik6CitkZWYgdGVzdF9wYXJz
ZWNvbmZpZyh0ZXN0ZGlyKSAtPiBOb25lOgogICAgIGNvbmZpZzEgPSB0ZXN0ZGlyLnBhcnNlY29u
ZmlnKCkKICAgICBjb25maWcyID0gdGVzdGRpci5wYXJzZWNvbmZpZygpCi0gICAgYXNzZXJ0IGNv
bmZpZzIgIT0gY29uZmlnMQotICAgIGFzc2VydCBjb25maWcxICE9IHB5dGVzdC5jb25maWcKKyAg
ICBhc3NlcnQgY29uZmlnMiBpcyBub3QgY29uZmlnMQogCiAKLWRlZiB0ZXN0X3Rlc3RkaXJfcnVu
c193aXRoX3BsdWdpbih0ZXN0ZGlyKToKK2RlZiB0ZXN0X3Rlc3RkaXJfcnVuc193aXRoX3BsdWdp
bih0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIi
CiAgICAgICAgIHB5dGVzdF9wbHVnaW5zID0gInB5dGVzdGVyIgpAQCAtODMsODIgKzkxLDE0NSBA
QCBkZWYgdGVzdF90ZXN0ZGlyX3J1bnNfd2l0aF9wbHVnaW4odGVzdGRpcik6CiAgICAgcmVzdWx0
LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MSkKIAogCi1kZWYgbWFrZV9ob2xkZXIoKToKK2RlZiB0
ZXN0X3Rlc3RkaXJfd2l0aF9kb2N0ZXN0KHRlc3RkaXIpOgorICAgICIiIkNoZWNrIHRoYXQgdGVz
dGRpciBjYW4gYmUgdXNlZCB3aXRoaW4gZG9jdGVzdHMuCisKKyAgICBJdCB1c2VkIHRvIHVzZSBg
cmVxdWVzdC5mdW5jdGlvbmAsIHdoaWNoIGlzIGBOb25lYCB3aXRoIGRvY3Rlc3RzLiIiIgorICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgKip7CisgICAgICAgICAgICAic3ViL3QtZG9j
dGVzdC5weSI6ICIiIgorICAgICAgICAnJycKKyAgICAgICAgPj4+IGltcG9ydCBvcworICAgICAg
ICA+Pj4gdGVzdGRpciA9IGdldGZpeHR1cmUoInRlc3RkaXIiKQorICAgICAgICA+Pj4gc3RyKHRl
c3RkaXIubWFrZXB5ZmlsZSgiY29udGVudCIpKS5yZXBsYWNlKG9zLnNlcCwgJy8nKQorICAgICAg
ICAnLi4uL2Jhc2V0ZW1wL3N1Yi50LWRvY3Rlc3QwL3N1Yi5weScKKyAgICAgICAgJycnCisgICAg
IiIiLAorICAgICAgICAgICAgInN1Yi9fX2luaXRfXy5weSI6ICIiLAorICAgICAgICB9CisgICAg
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KAorICAgICAgICAiLXAiLCAicHl0ZXN0
ZXIiLCAiLS1kb2N0ZXN0LW1vZHVsZXMiLCAic3ViL3QtZG9jdGVzdC5weSIKKyAgICApCisgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK2RlZiB0ZXN0X3J1bnJlc3VsdF9hc3NlcnRpb25f
b25feGZhaWwodGVzdGRpcikgLT4gTm9uZToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAg
ICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgcHl0ZXN0X3BsdWdpbnMg
PSAicHl0ZXN0ZXIiCisKKyAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCisgICAgICAgIGRlZiB0
ZXN0X3BvdGF0bygpOgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgIiIiCisgICAgKQor
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNv
bWVzKHhmYWlsZWQ9MSkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3Rf
cnVucmVzdWx0X2Fzc2VydGlvbl9vbl94cGFzc2VkKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgdGVz
dGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorCisg
ICAgICAgIHB5dGVzdF9wbHVnaW5zID0gInB5dGVzdGVyIgorCisgICAgICAgIEBweXRlc3QubWFy
ay54ZmFpbAorICAgICAgICBkZWYgdGVzdF9wb3RhdG8oKToKKyAgICAgICAgICAgIGFzc2VydCBU
cnVlCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAg
ICByZXN1bHQuYXNzZXJ0X291dGNvbWVzKHhwYXNzZWQ9MSkKKyAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCiAKLSAgICBjbGFzcyBhcGljbGFzcyhvYmplY3QpOgogCitkZWYgdGVzdF94cGFzc2Vk
X3dpdGhfc3RyaWN0X2lzX2NvbnNpZGVyZWRfYV9mYWlsdXJlKHRlc3RkaXIpIC0+IE5vbmU6Cisg
ICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVz
dAorCisgICAgICAgIHB5dGVzdF9wbHVnaW5zID0gInB5dGVzdGVyIgorCisgICAgICAgIEBweXRl
c3QubWFyay54ZmFpbChzdHJpY3Q9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3RfcG90YXRvKCk6Cisg
ICAgICAgICAgICBhc3NlcnQgVHJ1ZQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhmYWlsZWQ9MSkKKyAg
ICBhc3NlcnQgcmVzdWx0LnJldCAhPSAwCisKKworZGVmIG1ha2VfaG9sZGVyKCk6CisgICAgY2xh
c3MgYXBpY2xhc3M6CiAgICAgICAgIGRlZiBweXRlc3RfeHl6KHNlbGYsIGFyZyk6Ci0gICAgICAg
ICAgICAieCIKKyAgICAgICAgICAgICIiIlgiIiIKIAogICAgICAgICBkZWYgcHl0ZXN0X3h5el9u
b2FyZyhzZWxmKToKLSAgICAgICAgICAgICJ4IgorICAgICAgICAgICAgIiIiWCIiIgogCiAgICAg
YXBpbW9kID0gdHlwZShvcykoImFwaSIpCiAKICAgICBkZWYgcHl0ZXN0X3h5eihhcmcpOgotICAg
ICAgICAieCIKKyAgICAgICAgIiIiWCIiIgogCiAgICAgZGVmIHB5dGVzdF94eXpfbm9hcmcoKToK
LSAgICAgICAgIngiCisgICAgICAgICIiIlgiIiIKIAotICAgIGFwaW1vZC5weXRlc3RfeHl6ID0g
cHl0ZXN0X3h5egotICAgIGFwaW1vZC5weXRlc3RfeHl6X25vYXJnID0gcHl0ZXN0X3h5el9ub2Fy
ZworICAgIGFwaW1vZC5weXRlc3RfeHl6ID0gcHl0ZXN0X3h5eiAgIyB0eXBlOiBpZ25vcmUKKyAg
ICBhcGltb2QucHl0ZXN0X3h5el9ub2FyZyA9IHB5dGVzdF94eXpfbm9hcmcgICMgdHlwZTogaWdu
b3JlCiAgICAgcmV0dXJuIGFwaWNsYXNzLCBhcGltb2QKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1l
dHJpemUoImhvbGRlciIsIG1ha2VfaG9sZGVyKCkpCi1kZWYgdGVzdF9ob29rcmVjb3JkZXJfYmFz
aWMoaG9sZGVyKToKK2RlZiB0ZXN0X2hvb2tyZWNvcmRlcl9iYXNpYyhob2xkZXIpIC0+IE5vbmU6
CiAgICAgcG0gPSBQeXRlc3RQbHVnaW5NYW5hZ2VyKCkKLSAgICBwbS5hZGRob29rcyhob2xkZXIp
CisgICAgcG0uYWRkX2hvb2tzcGVjcyhob2xkZXIpCiAgICAgcmVjID0gSG9va1JlY29yZGVyKHBt
KQogICAgIHBtLmhvb2sucHl0ZXN0X3h5eihhcmc9MTIzKQogICAgIGNhbGwgPSByZWMucG9wY2Fs
bCgicHl0ZXN0X3h5eiIpCiAgICAgYXNzZXJ0IGNhbGwuYXJnID09IDEyMwogICAgIGFzc2VydCBj
YWxsLl9uYW1lID09ICJweXRlc3RfeHl6IgotICAgIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwu
RXhjZXB0aW9uLCAicmVjLnBvcGNhbGwoJ2FiYycpIikKKyAgICBweXRlc3QucmFpc2VzKHB5dGVz
dC5mYWlsLkV4Y2VwdGlvbiwgcmVjLnBvcGNhbGwsICJhYmMiKQogICAgIHBtLmhvb2sucHl0ZXN0
X3h5el9ub2FyZygpCiAgICAgY2FsbCA9IHJlYy5wb3BjYWxsKCJweXRlc3RfeHl6X25vYXJnIikK
ICAgICBhc3NlcnQgY2FsbC5fbmFtZSA9PSAicHl0ZXN0X3h5el9ub2FyZyIKIAogCi1kZWYgdGVz
dF9tYWtlcHlmaWxlX3VuaWNvZGUodGVzdGRpcik6Ci0gICAgZ2xvYmFsIHVuaWNocgotICAgIHRy
eToKLSAgICAgICAgdW5pY2hyKDY1KQotICAgIGV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgIHVu
aWNociA9IGNocgotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh1bmljaHIoMHhmZmZkKSkKK2RlZiB0
ZXN0X21ha2VweWZpbGVfdW5pY29kZSh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZShjaHIoMHhGRkZEKSkKIAogCi1kZWYgdGVzdF9tYWtlcHlmaWxlX3V0ZjgodGVzdGRp
cik6CitkZWYgdGVzdF9tYWtlcHlmaWxlX3V0ZjgodGVzdGRpcikgLT4gTm9uZToKICAgICAiIiJF
bnN1cmUgbWFrZXB5ZmlsZSBhY2NlcHRzIHV0Zi04IGJ5dGVzIGFzIGlucHV0ICgjMjczOCkiIiIK
LSAgICB1dGY4X2NvbnRlbnRzID0gdSIiIgorICAgIHV0ZjhfY29udGVudHMgPSAiIiIKICAgICAg
ICAgZGVmIHNldHVwX2Z1bmN0aW9uKGZ1bmN0aW9uKToKLSAgICAgICAgICAgIG1peGVkX2VuY29k
aW5nID0gdSdTw6NvIFBhdWxvJwotICAgICIiIi5lbmNvZGUoCi0gICAgICAgICJ1dGYtOCIKLSAg
ICApCisgICAgICAgICAgICBtaXhlZF9lbmNvZGluZyA9ICdTw6NvIFBhdWxvJworICAgICIiIi5l
bmNvZGUoKQogICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUodXRmOF9jb250ZW50cykKLSAgICBh
c3NlcnQgdSJtaXhlZF9lbmNvZGluZyA9IHUnU8OjbyBQYXVsbyciLmVuY29kZSgidXRmLTgiKSBp
biBwLnJlYWQoInJiIikKKyAgICBhc3NlcnQgIm1peGVkX2VuY29kaW5nID0gJ1PDo28gUGF1bG8n
Ii5lbmNvZGUoKSBpbiBwLnJlYWQoInJiIikKIAogCi1jbGFzcyBUZXN0SW5saW5lUnVuTW9kdWxl
c0NsZWFudXAob2JqZWN0KToKLQotICAgIGRlZiB0ZXN0X2lubGluZV9ydW5fdGVzdF9tb2R1bGVf
bm90X2NsZWFuZWRfdXAoc2VsZiwgdGVzdGRpcik6CitjbGFzcyBUZXN0SW5saW5lUnVuTW9kdWxl
c0NsZWFudXA6CisgICAgZGVmIHRlc3RfaW5saW5lX3J1bl90ZXN0X21vZHVsZV9ub3RfY2xlYW5l
ZF91cChzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0ZXN0X21vZCA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgiZGVmIHRlc3RfZm9vKCk6IGFzc2VydCBUcnVlIikKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5pbmxpbmVfcnVuKHN0cih0ZXN0X21vZCkpCi0gICAgICAgIGFzc2VydCByZXN1
bHQucmV0ID09IEVYSVRfT0sKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENvZGUu
T0sKICAgICAgICAgIyByZXdyaXRlIG1vZHVsZSwgbm93IHRlc3Qgc2hvdWxkIGZhaWwgaWYgbW9k
dWxlIHdhcyByZS1pbXBvcnRlZAogICAgICAgICB0ZXN0X21vZC53cml0ZSgiZGVmIHRlc3RfZm9v
KCk6IGFzc2VydCBGYWxzZSIpCiAgICAgICAgIHJlc3VsdDIgPSB0ZXN0ZGlyLmlubGluZV9ydW4o
c3RyKHRlc3RfbW9kKSkKLSAgICAgICAgYXNzZXJ0IHJlc3VsdDIucmV0ID09IEVYSVRfVEVTVFNG
QUlMRUQKKyAgICAgICAgYXNzZXJ0IHJlc3VsdDIucmV0ID09IEV4aXRDb2RlLlRFU1RTX0ZBSUxF
RAogCiAgICAgZGVmIHNweV9mYWN0b3J5KHNlbGYpOgorICAgICAgICBjbGFzcyBTeXNNb2R1bGVz
U25hcHNob3RTcHk6CisgICAgICAgICAgICBpbnN0YW5jZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1N5
c01vZHVsZXNTbmFwc2hvdFNweV0KIAotICAgICAgICBjbGFzcyBTeXNNb2R1bGVzU25hcHNob3RT
cHkob2JqZWN0KToKLSAgICAgICAgICAgIGluc3RhbmNlcyA9IFtdCi0KLSAgICAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwcmVzZXJ2ZT1Ob25lKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwcmVzZXJ2ZT1Ob25lKSAtPiBOb25lOgogICAgICAgICAgICAgICAgIFN5c01vZHVs
ZXNTbmFwc2hvdFNweS5pbnN0YW5jZXMuYXBwZW5kKHNlbGYpCiAgICAgICAgICAgICAgICAgc2Vs
Zi5fc3B5X3Jlc3RvcmVfY291bnQgPSAwCiAgICAgICAgICAgICAgICAgc2VsZi5fc3B5X3ByZXNl
cnZlID0gcHJlc2VydmUKQEAgLTE3MiwxMSArMjQzLDExIEBAIGNsYXNzIFRlc3RJbmxpbmVSdW5N
b2R1bGVzQ2xlYW51cChvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfaW5saW5lX3J1bl90YWtpbmdf
YW5kX3Jlc3RvcmluZ19hX3N5c19tb2R1bGVzX3NuYXBzaG90KAogICAgICAgICBzZWxmLCB0ZXN0
ZGlyLCBtb25rZXlwYXRjaAotICAgICk6CisgICAgKSAtPiBOb25lOgogICAgICAgICBzcHlfZmFj
dG9yeSA9IHNlbGYuc3B5X2ZhY3RvcnkoKQogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHB5
dGVzdGVyLCAiU3lzTW9kdWxlc1NuYXBzaG90Iiwgc3B5X2ZhY3RvcnkpCi0gICAgICAgIG9yaWdp
bmFsID0gZGljdChzeXMubW9kdWxlcykKICAgICAgICAgdGVzdGRpci5zeXNwYXRoaW5zZXJ0KCkK
KyAgICAgICAgb3JpZ2luYWwgPSBkaWN0KHN5cy5tb2R1bGVzKQogICAgICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoaW1wb3J0MT0iIyB5b3Ugc29uIG9mIGEgc2lsbHkgcGVyc29uIikKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKGltcG9ydDI9IiMgbXkgaG92ZXJjcmFmdCBpcyBmdWxsIG9mIGVl
bHMiKQogICAgICAgICB0ZXN0X21vZCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTE5Myw3ICsy
NjQsNyBAQCBjbGFzcyBUZXN0SW5saW5lUnVuTW9kdWxlc0NsZWFudXAob2JqZWN0KToKIAogICAg
IGRlZiB0ZXN0X2lubGluZV9ydW5fc3lzX21vZHVsZXNfc25hcHNob3RfcmVzdG9yZV9wcmVzZXJ2
aW5nX21vZHVsZXMoCiAgICAgICAgIHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoCi0gICAgKToK
KyAgICApIC0+IE5vbmU6CiAgICAgICAgIHNweV9mYWN0b3J5ID0gc2VsZi5zcHlfZmFjdG9yeSgp
CiAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIocHl0ZXN0ZXIsICJTeXNNb2R1bGVzU25hcHNo
b3QiLCBzcHlfZmFjdG9yeSkKICAgICAgICAgdGVzdF9tb2QgPSB0ZXN0ZGlyLm1ha2VweWZpbGUo
ImRlZiB0ZXN0X2ZvbygpOiBwYXNzIikKQEAgLTIwNCw3ICsyNzUsNyBAQCBjbGFzcyBUZXN0SW5s
aW5lUnVuTW9kdWxlc0NsZWFudXAob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHNweS5fc3B5X3By
ZXNlcnZlKCJ6b3BlLmludGVyZmFjZSIpCiAgICAgICAgIGFzc2VydCBzcHkuX3NweV9wcmVzZXJ2
ZSgiem9wZWxpY2lvdXMiKQogCi0gICAgZGVmIHRlc3RfZXh0ZXJuYWxfdGVzdF9tb2R1bGVfaW1w
b3J0c19ub3RfY2xlYW5lZF91cChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9leHRlcm5h
bF90ZXN0X21vZHVsZV9pbXBvcnRzX25vdF9jbGVhbmVkX3VwKHNlbGYsIHRlc3RkaXIpIC0+IE5v
bmU6CiAgICAgICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZShpbXBvcnRlZD0iZGF0YSA9ICd5b3Ugc29uIG9mIGEgc2lsbHkgcGVyc29uJyIpCiAg
ICAgICAgIGltcG9ydCBpbXBvcnRlZApAQCAtMjE5LDY4ICsyOTAsMTYgQEAgY2xhc3MgVGVzdElu
bGluZVJ1bk1vZHVsZXNDbGVhbnVwKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBpbXBvcnRlZC5k
YXRhID09IDQyCiAKIAotZGVmIHRlc3RfaW5saW5lX3J1bl9jbGVhbl9zeXNfcGF0aHModGVzdGRp
cik6Ci0KLSAgICBkZWYgdGVzdF9zeXNfcGF0aF9jaGFuZ2VfY2xlYW51cChzZWxmLCB0ZXN0ZGly
KToKLSAgICAgICAgdGVzdF9wYXRoMSA9IHRlc3RkaXIudG1wZGlyLmpvaW4oImJvaW5rMSIpLnN0
cnBhdGgKLSAgICAgICAgdGVzdF9wYXRoMiA9IHRlc3RkaXIudG1wZGlyLmpvaW4oImJvaW5rMiIp
LnN0cnBhdGgKLSAgICAgICAgdGVzdF9wYXRoMyA9IHRlc3RkaXIudG1wZGlyLmpvaW4oImJvaW5r
MyIpLnN0cnBhdGgKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKHRlc3RfcGF0aDEpCi0gICAgICAg
IHN5cy5tZXRhX3BhdGguYXBwZW5kKHRlc3RfcGF0aDEpCi0gICAgICAgIG9yaWdpbmFsX3BhdGgg
PSBsaXN0KHN5cy5wYXRoKQotICAgICAgICBvcmlnaW5hbF9tZXRhX3BhdGggPSBsaXN0KHN5cy5t
ZXRhX3BhdGgpCi0gICAgICAgIHRlc3RfbW9kID0gdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAg
ICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICBzeXMucGF0aC5h
cHBlbmQoezp0ZXN0X3BhdGgyfSkKLSAgICAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKHs6
dGVzdF9wYXRoMn0pCi0gICAgICAgICAgICBkZWYgdGVzdF9mb28oKToKLSAgICAgICAgICAgICAg
ICBzeXMucGF0aC5hcHBlbmQoezp0ZXN0X3BhdGgzfSkKLSAgICAgICAgICAgICAgICBzeXMubWV0
YV9wYXRoLmFwcGVuZCh7OnRlc3RfcGF0aDN9KSIiIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAg
bG9jYWxzKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICB0ZXN0ZGlyLmlubGlu
ZV9ydW4oc3RyKHRlc3RfbW9kKSkKLSAgICAgICAgYXNzZXJ0IHN5cy5wYXRoID09IG9yaWdpbmFs
X3BhdGgKLSAgICAgICAgYXNzZXJ0IHN5cy5tZXRhX3BhdGggPT0gb3JpZ2luYWxfbWV0YV9wYXRo
Ci0KLSAgICBkZWYgc3B5X2ZhY3Rvcnkoc2VsZik6Ci0KLSAgICAgICAgY2xhc3MgU3lzUGF0aHNT
bmFwc2hvdFNweShvYmplY3QpOgotICAgICAgICAgICAgaW5zdGFuY2VzID0gW10KLQotICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIFN5c1BhdGhzU25hcHNo
b3RTcHkuaW5zdGFuY2VzLmFwcGVuZChzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX3NweV9y
ZXN0b3JlX2NvdW50ID0gMAotICAgICAgICAgICAgICAgIHNlbGYuX19zbmFwc2hvdCA9IFN5c1Bh
dGhzU25hcHNob3QoKQotCi0gICAgICAgICAgICBkZWYgcmVzdG9yZShzZWxmKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9zcHlfcmVzdG9yZV9jb3VudCArPSAxCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX19zbmFwc2hvdC5yZXN0b3JlKCkKLQotICAgICAgICByZXR1cm4gU3lzUGF0aHNT
bmFwc2hvdFNweQotCi0gICAgZGVmIHRlc3RfaW5saW5lX3J1bl90YWtpbmdfYW5kX3Jlc3Rvcmlu
Z19hX3N5c19wYXRoc19zbmFwc2hvdCgKLSAgICAgICAgc2VsZiwgdGVzdGRpciwgbW9ua2V5cGF0
Y2gKLSAgICApOgotICAgICAgICBzcHlfZmFjdG9yeSA9IHNlbGYuc3B5X2ZhY3RvcnkoKQotICAg
ICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHB5dGVzdGVyLCAiU3lzUGF0aHNTbmFwc2hvdCIsIHNw
eV9mYWN0b3J5KQotICAgICAgICB0ZXN0X21vZCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRl
c3RfZm9vKCk6IHBhc3MiKQotICAgICAgICB0ZXN0ZGlyLmlubGluZV9ydW4oc3RyKHRlc3RfbW9k
KSkKLSAgICAgICAgYXNzZXJ0IGxlbihzcHlfZmFjdG9yeS5pbnN0YW5jZXMpID09IDEKLSAgICAg
ICAgc3B5ID0gc3B5X2ZhY3RvcnkuaW5zdGFuY2VzWzBdCi0gICAgICAgIGFzc2VydCBzcHkuX3Nw
eV9yZXN0b3JlX2NvdW50ID09IDEKLQotCi1kZWYgdGVzdF9hc3NlcnRfb3V0Y29tZXNfYWZ0ZXJf
cHl0ZXN0X2Vycm9yKHRlc3RkaXIpOgorZGVmIHRlc3RfYXNzZXJ0X291dGNvbWVzX2FmdGVyX3B5
dGVzdF9lcnJvcih0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVm
IHRlc3RfZm9vKCk6IGFzc2VydCBUcnVlIikKIAogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItLXVuZXhwZWN0ZWQtYXJndW1lbnQiKQotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1
ZUVycm9yLCBtZXNzYWdlPSJQeXRlc3QgdGVybWluYWwgcmVwb3J0IG5vdCBmb3VuZCIpOgorICAg
IHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBtYXRjaD0iUHl0ZXN0IHRlcm1pbmFsIHN1
bW1hcnkgcmVwb3J0IG5vdCBmb3VuZCIpOgogICAgICAgICByZXN1bHQuYXNzZXJ0X291dGNvbWVz
KHBhc3NlZD0wKQogCiAKLWRlZiB0ZXN0X2N3ZF9zbmFwc2hvdCh0bXBkaXIpOgorZGVmIHRlc3Rf
Y3dkX3NuYXBzaG90KHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgdG1wZGlyID0gdGVz
dGRpci50bXBkaXIKICAgICBmb28gPSB0bXBkaXIuZW5zdXJlKCJmb28iLCBkaXI9MSkKICAgICBi
YXIgPSB0bXBkaXIuZW5zdXJlKCJiYXIiLCBkaXI9MSkKICAgICBmb28uY2hkaXIoKQpAQCAtMjkx
LDE5ICszMTAsMTkgQEAgZGVmIHRlc3RfY3dkX3NuYXBzaG90KHRtcGRpcik6CiAgICAgYXNzZXJ0
IHB5LnBhdGgubG9jYWwoKSA9PSBmb28KIAogCi1jbGFzcyBUZXN0U3lzTW9kdWxlc1NuYXBzaG90
KG9iamVjdCk6CitjbGFzcyBUZXN0U3lzTW9kdWxlc1NuYXBzaG90OgogICAgIGtleSA9ICJteS10
ZXN0LW1vZHVsZSIKIAotICAgIGRlZiB0ZXN0X3JlbW92ZV9hZGRlZChzZWxmKToKKyAgICBkZWYg
dGVzdF9yZW1vdmVfYWRkZWQoc2VsZikgLT4gTm9uZToKICAgICAgICAgb3JpZ2luYWwgPSBkaWN0
KHN5cy5tb2R1bGVzKQogICAgICAgICBhc3NlcnQgc2VsZi5rZXkgbm90IGluIHN5cy5tb2R1bGVz
CiAgICAgICAgIHNuYXBzaG90ID0gU3lzTW9kdWxlc1NuYXBzaG90KCkKLSAgICAgICAgc3lzLm1v
ZHVsZXNbc2VsZi5rZXldID0gInNvbWV0aGluZyIKKyAgICAgICAgc3lzLm1vZHVsZXNbc2VsZi5r
ZXldID0gInNvbWV0aGluZyIgICMgdHlwZTogaWdub3JlCiAgICAgICAgIGFzc2VydCBzZWxmLmtl
eSBpbiBzeXMubW9kdWxlcwogICAgICAgICBzbmFwc2hvdC5yZXN0b3JlKCkKICAgICAgICAgYXNz
ZXJ0IHN5cy5tb2R1bGVzID09IG9yaWdpbmFsCiAKLSAgICBkZWYgdGVzdF9hZGRfcmVtb3ZlZChz
ZWxmLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRlc3RfYWRkX3JlbW92ZWQoc2VsZiwgbW9ua2V5
cGF0Y2gpIC0+IE5vbmU6CiAgICAgICAgIGFzc2VydCBzZWxmLmtleSBub3QgaW4gc3lzLm1vZHVs
ZXMKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShzeXMubW9kdWxlcywgc2VsZi5rZXksICJz
b21ldGhpbmciKQogICAgICAgICBhc3NlcnQgc2VsZi5rZXkgaW4gc3lzLm1vZHVsZXMKQEAgLTMx
NCwxNyArMzMzLDE3IEBAIGNsYXNzIFRlc3RTeXNNb2R1bGVzU25hcHNob3Qob2JqZWN0KToKICAg
ICAgICAgc25hcHNob3QucmVzdG9yZSgpCiAgICAgICAgIGFzc2VydCBzeXMubW9kdWxlcyA9PSBv
cmlnaW5hbAogCi0gICAgZGVmIHRlc3RfcmVzdG9yZV9yZWxvYWRlZChzZWxmLCBtb25rZXlwYXRj
aCk6CisgICAgZGVmIHRlc3RfcmVzdG9yZV9yZWxvYWRlZChzZWxmLCBtb25rZXlwYXRjaCkgLT4g
Tm9uZToKICAgICAgICAgYXNzZXJ0IHNlbGYua2V5IG5vdCBpbiBzeXMubW9kdWxlcwogICAgICAg
ICBtb25rZXlwYXRjaC5zZXRpdGVtKHN5cy5tb2R1bGVzLCBzZWxmLmtleSwgInNvbWV0aGluZyIp
CiAgICAgICAgIGFzc2VydCBzZWxmLmtleSBpbiBzeXMubW9kdWxlcwogICAgICAgICBvcmlnaW5h
bCA9IGRpY3Qoc3lzLm1vZHVsZXMpCiAgICAgICAgIHNuYXBzaG90ID0gU3lzTW9kdWxlc1NuYXBz
aG90KCkKLSAgICAgICAgc3lzLm1vZHVsZXNbc2VsZi5rZXldID0gInNvbWV0aGluZyBlbHNlIgor
ICAgICAgICBzeXMubW9kdWxlc1tzZWxmLmtleV0gPSAic29tZXRoaW5nIGVsc2UiICAjIHR5cGU6
IGlnbm9yZQogICAgICAgICBzbmFwc2hvdC5yZXN0b3JlKCkKICAgICAgICAgYXNzZXJ0IHN5cy5t
b2R1bGVzID09IG9yaWdpbmFsCiAKLSAgICBkZWYgdGVzdF9wcmVzZXJ2ZV9tb2R1bGVzKHNlbGYs
IG1vbmtleXBhdGNoKToKKyAgICBkZWYgdGVzdF9wcmVzZXJ2ZV9tb2R1bGVzKHNlbGYsIG1vbmtl
eXBhdGNoKSAtPiBOb25lOgogICAgICAgICBrZXkgPSBbc2VsZi5rZXkgKyBzdHIoaSkgZm9yIGkg
aW4gcmFuZ2UoMyldCiAgICAgICAgIGFzc2VydCBub3QgYW55KGsgaW4gc3lzLm1vZHVsZXMgZm9y
IGsgaW4ga2V5KQogICAgICAgICBmb3IgaSwgayBpbiBlbnVtZXJhdGUoa2V5KToKQEAgLTMzNSwx
NyArMzU0LDE3IEBAIGNsYXNzIFRlc3RTeXNNb2R1bGVzU25hcHNob3Qob2JqZWN0KToKICAgICAg
ICAgICAgIHJldHVybiBuYW1lIGluIChrZXlbMF0sIGtleVsxXSwgInNvbWUtb3RoZXIta2V5IikK
IAogICAgICAgICBzbmFwc2hvdCA9IFN5c01vZHVsZXNTbmFwc2hvdChwcmVzZXJ2ZT1wcmVzZXJ2
ZSkKLSAgICAgICAgc3lzLm1vZHVsZXNba2V5WzBdXSA9IG9yaWdpbmFsW2tleVswXV0gPSAic29t
ZXRoaW5nIGVsc2UwIgotICAgICAgICBzeXMubW9kdWxlc1trZXlbMV1dID0gb3JpZ2luYWxba2V5
WzFdXSA9ICJzb21ldGhpbmcgZWxzZTEiCi0gICAgICAgIHN5cy5tb2R1bGVzW2tleVsyXV0gPSAi
c29tZXRoaW5nIGVsc2UyIgorICAgICAgICBzeXMubW9kdWxlc1trZXlbMF1dID0gb3JpZ2luYWxb
a2V5WzBdXSA9ICJzb21ldGhpbmcgZWxzZTAiICAjIHR5cGU6IGlnbm9yZQorICAgICAgICBzeXMu
bW9kdWxlc1trZXlbMV1dID0gb3JpZ2luYWxba2V5WzFdXSA9ICJzb21ldGhpbmcgZWxzZTEiICAj
IHR5cGU6IGlnbm9yZQorICAgICAgICBzeXMubW9kdWxlc1trZXlbMl1dID0gInNvbWV0aGluZyBl
bHNlMiIgICMgdHlwZTogaWdub3JlCiAgICAgICAgIHNuYXBzaG90LnJlc3RvcmUoKQogICAgICAg
ICBhc3NlcnQgc3lzLm1vZHVsZXMgPT0gb3JpZ2luYWwKIAotICAgIGRlZiB0ZXN0X3ByZXNlcnZl
X2NvbnRhaW5lcihzZWxmLCBtb25rZXlwYXRjaCk6CisgICAgZGVmIHRlc3RfcHJlc2VydmVfY29u
dGFpbmVyKHNlbGYsIG1vbmtleXBhdGNoKSAtPiBOb25lOgogICAgICAgICBvcmlnaW5hbCA9IGRp
Y3Qoc3lzLm1vZHVsZXMpCiAgICAgICAgIGFzc2VydCBzZWxmLmtleSBub3QgaW4gb3JpZ2luYWwK
ICAgICAgICAgcmVwbGFjZW1lbnQgPSBkaWN0KHN5cy5tb2R1bGVzKQotICAgICAgICByZXBsYWNl
bWVudFtzZWxmLmtleV0gPSAibGlmZSBvZiBicmlhbiIKKyAgICAgICAgcmVwbGFjZW1lbnRbc2Vs
Zi5rZXldID0gImxpZmUgb2YgYnJpYW4iICAjIHR5cGU6IGlnbm9yZQogICAgICAgICBzbmFwc2hv
dCA9IFN5c01vZHVsZXNTbmFwc2hvdCgpCiAgICAgICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc3lz
LCAibW9kdWxlcyIsIHJlcGxhY2VtZW50KQogICAgICAgICBzbmFwc2hvdC5yZXN0b3JlKCkKQEAg
LTM1NCwxNCArMzczLDE0IEBAIGNsYXNzIFRlc3RTeXNNb2R1bGVzU25hcHNob3Qob2JqZWN0KToK
IAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInBhdGhfdHlwZSIsICgicGF0aCIsICJtZXRh
X3BhdGgiKSkKLWNsYXNzIFRlc3RTeXNQYXRoc1NuYXBzaG90KG9iamVjdCk6CitjbGFzcyBUZXN0
U3lzUGF0aHNTbmFwc2hvdDoKICAgICBvdGhlcl9wYXRoID0geyJwYXRoIjogIm1ldGFfcGF0aCIs
ICJtZXRhX3BhdGgiOiAicGF0aCJ9CiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHBhdGgo
bik6CisgICAgZGVmIHBhdGgobjogaW50KSAtPiBzdHI6CiAgICAgICAgIHJldHVybiAibXktZGly
dHktbGl0dGxlLXNlY3JldC0iICsgc3RyKG4pCiAKLSAgICBkZWYgdGVzdF9yZXN0b3JlKHNlbGYs
IG1vbmtleXBhdGNoLCBwYXRoX3R5cGUpOgorICAgIGRlZiB0ZXN0X3Jlc3RvcmUoc2VsZiwgbW9u
a2V5cGF0Y2gsIHBhdGhfdHlwZSkgLT4gTm9uZToKICAgICAgICAgb3RoZXJfcGF0aF90eXBlID0g
c2VsZi5vdGhlcl9wYXRoW3BhdGhfdHlwZV0KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgog
ICAgICAgICAgICAgYXNzZXJ0IHNlbGYucGF0aChpKSBub3QgaW4gZ2V0YXR0cihzeXMsIHBhdGhf
dHlwZSkKQEAgLTM3MCw5ICszODksNyBAQCBjbGFzcyBUZXN0U3lzUGF0aHNTbmFwc2hvdChvYmpl
Y3QpOgogICAgICAgICBvcmlnaW5hbCA9IGxpc3Qoc3lzX3BhdGgpCiAgICAgICAgIG9yaWdpbmFs
X290aGVyID0gbGlzdChnZXRhdHRyKHN5cywgb3RoZXJfcGF0aF90eXBlKSkKICAgICAgICAgc25h
cHNob3QgPSBTeXNQYXRoc1NuYXBzaG90KCkKLSAgICAgICAgdHJhbnNmb3JtYXRpb24gPSB7Ci0g
ICAgICAgICAgICAic291cmNlIjogKDAsIDEsIDIsIDMsIDQsIDUpLCAidGFyZ2V0IjogKDYsIDIs
IDksIDcsIDUsIDgpCi0gICAgICAgIH0gICMgbm9xYTogRTIwMQorICAgICAgICB0cmFuc2Zvcm1h
dGlvbiA9IHsic291cmNlIjogKDAsIDEsIDIsIDMsIDQsIDUpLCAidGFyZ2V0IjogKDYsIDIsIDks
IDcsIDUsIDgpfQogICAgICAgICBhc3NlcnQgc3lzX3BhdGggPT0gW3NlbGYucGF0aCh4KSBmb3Ig
eCBpbiB0cmFuc2Zvcm1hdGlvblsic291cmNlIl1dCiAgICAgICAgIHN5c19wYXRoWzFdID0gc2Vs
Zi5wYXRoKDYpCiAgICAgICAgIHN5c19wYXRoWzNdID0gc2VsZi5wYXRoKDcpCkBAIC0zODYsMTIg
KzQwMywxMiBAQCBjbGFzcyBUZXN0U3lzUGF0aHNTbmFwc2hvdChvYmplY3QpOgogICAgICAgICBh
c3NlcnQgZ2V0YXR0cihzeXMsIHBhdGhfdHlwZSkgPT0gb3JpZ2luYWwKICAgICAgICAgYXNzZXJ0
IGdldGF0dHIoc3lzLCBvdGhlcl9wYXRoX3R5cGUpID09IG9yaWdpbmFsX290aGVyCiAKLSAgICBk
ZWYgdGVzdF9wcmVzZXJ2ZV9jb250YWluZXIoc2VsZiwgbW9ua2V5cGF0Y2gsIHBhdGhfdHlwZSk6
CisgICAgZGVmIHRlc3RfcHJlc2VydmVfY29udGFpbmVyKHNlbGYsIG1vbmtleXBhdGNoLCBwYXRo
X3R5cGUpIC0+IE5vbmU6CiAgICAgICAgIG90aGVyX3BhdGhfdHlwZSA9IHNlbGYub3RoZXJfcGF0
aFtwYXRoX3R5cGVdCiAgICAgICAgIG9yaWdpbmFsX2RhdGEgPSBsaXN0KGdldGF0dHIoc3lzLCBw
YXRoX3R5cGUpKQogICAgICAgICBvcmlnaW5hbF9vdGhlciA9IGdldGF0dHIoc3lzLCBvdGhlcl9w
YXRoX3R5cGUpCiAgICAgICAgIG9yaWdpbmFsX290aGVyX2RhdGEgPSBsaXN0KG9yaWdpbmFsX290
aGVyKQotICAgICAgICBuZXcgPSBbXQorICAgICAgICBuZXcgPSBbXSAgIyB0eXBlOiBMaXN0W29i
amVjdF0KICAgICAgICAgc25hcHNob3QgPSBTeXNQYXRoc1NuYXBzaG90KCkKICAgICAgICAgbW9u
a2V5cGF0Y2guc2V0YXR0cihzeXMsIHBhdGhfdHlwZSwgbmV3KQogICAgICAgICBzbmFwc2hvdC5y
ZXN0b3JlKCkKQEAgLTM5OSwzICs0MTYsMzk0IEBAIGNsYXNzIFRlc3RTeXNQYXRoc1NuYXBzaG90
KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBnZXRhdHRyKHN5cywgcGF0aF90eXBlKSA9PSBvcmln
aW5hbF9kYXRhCiAgICAgICAgIGFzc2VydCBnZXRhdHRyKHN5cywgb3RoZXJfcGF0aF90eXBlKSBp
cyBvcmlnaW5hbF9vdGhlcgogICAgICAgICBhc3NlcnQgZ2V0YXR0cihzeXMsIG90aGVyX3BhdGhf
dHlwZSkgPT0gb3JpZ2luYWxfb3RoZXJfZGF0YQorCisKK2RlZiB0ZXN0X3Rlc3RkaXJfc3VicHJv
Y2Vzcyh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRlc3RmaWxlID0gdGVzdGRpci5tYWtlcHlmaWxl
KCJkZWYgdGVzdF9vbmUoKTogcGFzcyIpCisgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0X3N1
YnByb2Nlc3ModGVzdGZpbGUpLnJldCA9PSAwCisKKworZGVmIHRlc3RfdGVzdGRpcl9zdWJwcm9j
ZXNzX3ZpYV9ydW5weXRlc3RfYXJnKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgdGVzdGZpbGUgPSB0
ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF90ZXN0ZGly
X3N1YnByb2Nlc3ModGVzdGRpcik6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAg
IHRlc3RmaWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgICAgIFwiIiIKKyAg
ICAgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9vbmUoKToK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHt9ICE9IG9zLmdldHBpZCgpCisgICAgICAgICAg
ICAgICAgXCIiIi5mb3JtYXQob3MuZ2V0cGlkKCkpCisgICAgICAgICAgICApCisgICAgICAgICAg
ICBhc3NlcnQgdGVzdGRpci5ydW5weXRlc3QodGVzdGZpbGUpLnJldCA9PSAwCisgICAgICAgICIi
IgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKAorICAg
ICAgICAiLXAiLCAicHl0ZXN0ZXIiLCAiLS1ydW5weXRlc3QiLCAic3VicHJvY2VzcyIsIHRlc3Rm
aWxlCisgICAgKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworCitkZWYgdGVzdF91bmlj
b2RlX2FyZ3ModGVzdGRpcikgLT4gTm9uZToKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLWsiLCAi15DXkdeSIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29kZS5OT19U
RVNUU19DT0xMRUNURUQKKworCitkZWYgdGVzdF90ZXN0ZGlyX3J1bl9ub190aW1lb3V0KHRlc3Rk
aXIpIC0+IE5vbmU6CisgICAgdGVzdGZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0
X25vX3RpbWVvdXQoKTogcGFzcyIpCisgICAgYXNzZXJ0IHRlc3RkaXIucnVucHl0ZXN0X3N1YnBy
b2Nlc3ModGVzdGZpbGUpLnJldCA9PSBFeGl0Q29kZS5PSworCisKK2RlZiB0ZXN0X3Rlc3RkaXJf
cnVuX3dpdGhfdGltZW91dCh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRlc3RmaWxlID0gdGVzdGRp
ci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9ub190aW1lb3V0KCk6IHBhc3MiKQorCisgICAgdGltZW91
dCA9IDEyMAorCisgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0X3N1YnByb2Nlc3ModGVzdGZpbGUsIHRpbWVvdXQ9dGltZW91dCkKKyAgICBlbmQg
PSB0aW1lLnRpbWUoKQorICAgIGR1cmF0aW9uID0gZW5kIC0gc3RhcnQKKworICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IEV4aXRDb2RlLk9LCisgICAgYXNzZXJ0IGR1cmF0aW9uIDwgdGltZW91dAor
CisKK2RlZiB0ZXN0X3Rlc3RkaXJfcnVuX3RpbWVvdXRfZXhwaXJlcyh0ZXN0ZGlyKSAtPiBOb25l
OgorICAgIHRlc3RmaWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAg
ICAgaW1wb3J0IHRpbWUKKworICAgICAgICBkZWYgdGVzdF90aW1lb3V0KCk6CisgICAgICAgICAg
ICB0aW1lLnNsZWVwKDEwKSIiIgorICAgICkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXModGVzdGRp
ci5UaW1lb3V0RXhwaXJlZCk6CisgICAgICAgIHRlc3RkaXIucnVucHl0ZXN0X3N1YnByb2Nlc3Mo
dGVzdGZpbGUsIHRpbWVvdXQ9MSkKKworCitkZWYgdGVzdF9saW5lbWF0Y2hlcl93aXRoX25vbmxp
c3QoKSAtPiBOb25lOgorICAgICIiIlRlc3QgTGluZU1hdGNoZXIgd2l0aCByZWdhcmQgdG8gcGFz
c2luZyBpbiBhIHNldCAoYWNjaWRlbnRhbGx5KS4iIiIKKyAgICBmcm9tIF9weXRlc3QuX2NvZGUu
c291cmNlIGltcG9ydCBTb3VyY2UKKworICAgIGxtID0gTGluZU1hdGNoZXIoW10pCisgICAgd2l0
aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgbWF0Y2g9ImludmFsaWQgdHlwZSBmb3IgbGluZXMy
OiBzZXQiKToKKyAgICAgICAgbG0uZm5tYXRjaF9saW5lcyhzZXQoKSkgICMgdHlwZTogaWdub3Jl
W2FyZy10eXBlXQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIG1hdGNoPSJpbnZh
bGlkIHR5cGUgZm9yIGxpbmVzMjogZGljdCIpOgorICAgICAgICBsbS5mbm1hdGNoX2xpbmVzKHt9
KSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVF
cnJvciwgbWF0Y2g9ImludmFsaWQgdHlwZSBmb3IgbGluZXMyOiBzZXQiKToKKyAgICAgICAgbG0u
cmVfbWF0Y2hfbGluZXMoc2V0KCkpICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KKyAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD0iaW52YWxpZCB0eXBlIGZvciBsaW5lczI6
IGRpY3QiKToKKyAgICAgICAgbG0ucmVfbWF0Y2hfbGluZXMoe30pICAjIHR5cGU6IGlnbm9yZVth
cmctdHlwZV0KKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBtYXRjaD0iaW52YWxp
ZCB0eXBlIGZvciBsaW5lczI6IFNvdXJjZSIpOgorICAgICAgICBsbS5mbm1hdGNoX2xpbmVzKFNv
dXJjZSgpKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgICAgbG0uZm5tYXRjaF9saW5lcyhb
XSkKKyAgICBsbS5mbm1hdGNoX2xpbmVzKCgpKQorICAgIGxtLmZubWF0Y2hfbGluZXMoIiIpCisg
ICAgYXNzZXJ0IGxtLl9nZXRsaW5lcyh7fSkgPT0ge30gICMgdHlwZTogaWdub3JlW2FyZy10eXBl
LGNvbXBhcmlzb24tb3ZlcmxhcF0KKyAgICBhc3NlcnQgbG0uX2dldGxpbmVzKHNldCgpKSA9PSBz
ZXQoKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGUsY29tcGFyaXNvbi1vdmVybGFwXQorICAgIGFz
c2VydCBsbS5fZ2V0bGluZXMoU291cmNlKCkpID09IFtdCisgICAgYXNzZXJ0IGxtLl9nZXRsaW5l
cyhTb3VyY2UoInBhc3NcbnBhc3MiKSkgPT0gWyJwYXNzIiwgInBhc3MiXQorCisKK2RlZiB0ZXN0
X2xpbmVtYXRjaGVyX21hdGNoX2ZhaWx1cmUoKSAtPiBOb25lOgorICAgIGxtID0gTGluZU1hdGNo
ZXIoWyJmb28iLCAiZm9vIiwgImJhciJdKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3Qu
ZmFpbC5FeGNlcHRpb24pIGFzIGU6CisgICAgICAgIGxtLmZubWF0Y2hfbGluZXMoWyJmb28iLCAi
ZioiLCAiYmF6Il0pCisgICAgYXNzZXJ0IGUudmFsdWUubXNnIGlzIG5vdCBOb25lCisgICAgYXNz
ZXJ0IGUudmFsdWUubXNnLnNwbGl0bGluZXMoKSA9PSBbCisgICAgICAgICJleGFjdCBtYXRjaDog
J2ZvbyciLAorICAgICAgICAiZm5tYXRjaDogJ2YqJyIsCisgICAgICAgICIgICB3aXRoOiAnZm9v
JyIsCisgICAgICAgICJub21hdGNoOiAnYmF6JyIsCisgICAgICAgICIgICAgYW5kOiAnYmFyJyIs
CisgICAgICAgICJyZW1haW5zIHVubWF0Y2hlZDogJ2JheiciLAorICAgIF0KKworICAgIGxtID0g
TGluZU1hdGNoZXIoWyJmb28iLCAiZm9vIiwgImJhciJdKQorICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhweXRlc3QuZmFpbC5FeGNlcHRpb24pIGFzIGU6CisgICAgICAgIGxtLnJlX21hdGNoX2xpbmVz
KFsiZm9vIiwgIl5mLioiLCAiYmF6Il0pCisgICAgYXNzZXJ0IGUudmFsdWUubXNnIGlzIG5vdCBO
b25lCisgICAgYXNzZXJ0IGUudmFsdWUubXNnLnNwbGl0bGluZXMoKSA9PSBbCisgICAgICAgICJl
eGFjdCBtYXRjaDogJ2ZvbyciLAorICAgICAgICAicmUubWF0Y2g6ICdeZi4qJyIsCisgICAgICAg
ICIgICAgd2l0aDogJ2ZvbyciLAorICAgICAgICAiIG5vbWF0Y2g6ICdiYXonIiwKKyAgICAgICAg
IiAgICAgYW5kOiAnYmFyJyIsCisgICAgICAgICJyZW1haW5zIHVubWF0Y2hlZDogJ2JheiciLAor
ICAgIF0KKworCitkZWYgdGVzdF9saW5lbWF0Y2hlcl9jb25zZWN1dGl2ZSgpOgorICAgIGxtID0g
TGluZU1hdGNoZXIoWyIxIiwgIiIsICIyIl0pCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVz
dC5mYWlsLkV4Y2VwdGlvbikgYXMgZXhjaW5mbzoKKyAgICAgICAgbG0uZm5tYXRjaF9saW5lcyhb
IjEiLCAiMiJdLCBjb25zZWN1dGl2ZT1UcnVlKQorICAgIGFzc2VydCBzdHIoZXhjaW5mby52YWx1
ZSkuc3BsaXRsaW5lcygpID09IFsKKyAgICAgICAgImV4YWN0IG1hdGNoOiAnMSciLAorICAgICAg
ICAibm8gY29uc2VjdXRpdmUgbWF0Y2g6ICcyJyIsCisgICAgICAgICIgICB3aXRoOiAnJyIsCisg
ICAgXQorCisgICAgbG0ucmVfbWF0Y2hfbGluZXMoWyIxIiwgciJcZD8iLCAiMiJdLCBjb25zZWN1
dGl2ZT1UcnVlKQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24p
IGFzIGV4Y2luZm86CisgICAgICAgIGxtLnJlX21hdGNoX2xpbmVzKFsiMSIsIHIiXGQiLCAiMiJd
LCBjb25zZWN1dGl2ZT1UcnVlKQorICAgIGFzc2VydCBzdHIoZXhjaW5mby52YWx1ZSkuc3BsaXRs
aW5lcygpID09IFsKKyAgICAgICAgImV4YWN0IG1hdGNoOiAnMSciLAorICAgICAgICByIm5vIGNv
bnNlY3V0aXZlIG1hdGNoOiAnXFxkJyIsCisgICAgICAgICIgICAgd2l0aDogJyciLAorICAgIF0K
KworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1bmN0aW9uIiwgWyJub19mbm1hdGNoX2xp
bmUiLCAibm9fcmVfbWF0Y2hfbGluZSJdKQorZGVmIHRlc3RfbGluZW1hdGNoZXJfbm9fbWF0Y2hp
bmcoZnVuY3Rpb24pIC0+IE5vbmU6CisgICAgaWYgZnVuY3Rpb24gPT0gIm5vX2ZubWF0Y2hfbGlu
ZSI6CisgICAgICAgIGdvb2RfcGF0dGVybiA9ICIqLnB5IE9LKiIKKyAgICAgICAgYmFkX3BhdHRl
cm4gPSAiKlgucHkgT0sqIgorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBmdW5jdGlvbiA9PSAi
bm9fcmVfbWF0Y2hfbGluZSIKKyAgICAgICAgZ29vZF9wYXR0ZXJuID0gciIuKnB5IE9LIgorICAg
ICAgICBiYWRfcGF0dGVybiA9IHIiLipYcHkgT0siCisKKyAgICBsbSA9IExpbmVNYXRjaGVyKAor
ICAgICAgICBbCisgICAgICAgICAgICAiY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUiLAorICAgICAg
ICAgICAgImNvbGxlY3RpbmcgLi4uIGNvbGxlY3RlZCAxIGl0ZW0iLAorICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAic2hvd19maXh0dXJlc19wZXJfdGVzdC5weSBPSyIsCisgICAgICAgICAg
ICAiPT09IGVsYXBzZWQgMXMgPT09IiwKKyAgICAgICAgXQorICAgICkKKworICAgICMgY2hlY2sg
dGhlIGZ1bmN0aW9uIHR3aWNlIHRvIGVuc3VyZSB3ZSBkb24ndCBhY2N1bXVsYXRlIHRoZSBpbnRl
cm5hbCBidWZmZXIKKyAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbikgYXMgZToKKyAgICAgICAgICAgIGZ1bmMgPSBn
ZXRhdHRyKGxtLCBmdW5jdGlvbikKKyAgICAgICAgICAgIGZ1bmMoZ29vZF9wYXR0ZXJuKQorICAg
ICAgICBvYnRhaW5lZCA9IHN0cihlLnZhbHVlKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgaWYgZnVu
Y3Rpb24gPT0gIm5vX2ZubWF0Y2hfbGluZSI6CisgICAgICAgICAgICBhc3NlcnQgb2J0YWluZWQg
PT0gWworICAgICAgICAgICAgICAgICJub21hdGNoOiAne30nIi5mb3JtYXQoZ29vZF9wYXR0ZXJu
KSwKKyAgICAgICAgICAgICAgICAiICAgIGFuZDogJ2NhY2hlZGlyOiAucHl0ZXN0X2NhY2hlJyIs
CisgICAgICAgICAgICAgICAgIiAgICBhbmQ6ICdjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgMSBp
dGVtJyIsCisgICAgICAgICAgICAgICAgIiAgICBhbmQ6ICcnIiwKKyAgICAgICAgICAgICAgICAi
Zm5tYXRjaDogJ3t9JyIuZm9ybWF0KGdvb2RfcGF0dGVybiksCisgICAgICAgICAgICAgICAgIiAg
IHdpdGg6ICdzaG93X2ZpeHR1cmVzX3Blcl90ZXN0LnB5IE9LJyIsCisgICAgICAgICAgICBdCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgb2J0YWluZWQgPT0gWworICAgICAgICAg
ICAgICAgICIgbm9tYXRjaDogJ3t9JyIuZm9ybWF0KGdvb2RfcGF0dGVybiksCisgICAgICAgICAg
ICAgICAgIiAgICAgYW5kOiAnY2FjaGVkaXI6IC5weXRlc3RfY2FjaGUnIiwKKyAgICAgICAgICAg
ICAgICAiICAgICBhbmQ6ICdjb2xsZWN0aW5nIC4uLiBjb2xsZWN0ZWQgMSBpdGVtJyIsCisgICAg
ICAgICAgICAgICAgIiAgICAgYW5kOiAnJyIsCisgICAgICAgICAgICAgICAgInJlLm1hdGNoOiAn
e30nIi5mb3JtYXQoZ29vZF9wYXR0ZXJuKSwKKyAgICAgICAgICAgICAgICAiICAgIHdpdGg6ICdz
aG93X2ZpeHR1cmVzX3Blcl90ZXN0LnB5IE9LJyIsCisgICAgICAgICAgICBdCisKKyAgICBmdW5j
ID0gZ2V0YXR0cihsbSwgZnVuY3Rpb24pCisgICAgZnVuYyhiYWRfcGF0dGVybikgICMgYmFkIHBh
dHRlcm4gZG9lcyBub3QgbWF0Y2ggYW55IGxpbmU6IHBhc3NlcworCisKK2RlZiB0ZXN0X2xpbmVt
YXRjaGVyX25vX21hdGNoaW5nX2FmdGVyX21hdGNoKCkgLT4gTm9uZToKKyAgICBsbSA9IExpbmVN
YXRjaGVyKFsiMSIsICIyIiwgIjMiXSkKKyAgICBsbS5mbm1hdGNoX2xpbmVzKFsiMSIsICIzIl0p
CisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbikgYXMgZToKKyAg
ICAgICAgbG0ubm9fZm5tYXRjaF9saW5lKCIqIikKKyAgICBhc3NlcnQgc3RyKGUudmFsdWUpLnNw
bGl0bGluZXMoKSA9PSBbImZubWF0Y2g6ICcqJyIsICIgICB3aXRoOiAnMSciXQorCisKK2RlZiB0
ZXN0X3B5dGVzdGVyX2FkZG9wdHNfYmVmb3JlX3Rlc3RkaXIocmVxdWVzdCwgbW9ua2V5cGF0Y2gp
IC0+IE5vbmU6CisgICAgb3JpZyA9IG9zLmVudmlyb24uZ2V0KCJQWVRFU1RfQURET1BUUyIsIE5v
bmUpCisgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfQURET1BUUyIsICItLW9yaWctdW51
c2VkIikKKyAgICB0ZXN0ZGlyID0gcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoInRlc3RkaXIiKQor
ICAgIGFzc2VydCAiUFlURVNUX0FERE9QVFMiIG5vdCBpbiBvcy5lbnZpcm9uCisgICAgdGVzdGRp
ci5maW5hbGl6ZSgpCisgICAgYXNzZXJ0IG9zLmVudmlyb24uZ2V0KCJQWVRFU1RfQURET1BUUyIp
ID09ICItLW9yaWctdW51c2VkIgorICAgIG1vbmtleXBhdGNoLnVuZG8oKQorICAgIGFzc2VydCBv
cy5lbnZpcm9uLmdldCgiUFlURVNUX0FERE9QVFMiKSA9PSBvcmlnCisKKworZGVmIHRlc3RfcnVu
X3N0ZGluKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgd2l0aCBweXRlc3QucmFpc2VzKHRlc3RkaXIu
VGltZW91dEV4cGlyZWQpOgorICAgICAgICB0ZXN0ZGlyLnJ1bigKKyAgICAgICAgICAgIHN5cy5l
eGVjdXRhYmxlLAorICAgICAgICAgICAgIi1jIiwKKyAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0
aW1lOyB0aW1lLnNsZWVwKDEpOyBwcmludChzeXMuc3RkaW4ucmVhZCgpKSIsCisgICAgICAgICAg
ICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICB0aW1lb3V0PTAuMSwKKyAgICAg
ICAgKQorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKHRlc3RkaXIuVGltZW91dEV4cGlyZWQpOgor
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bigKKyAgICAgICAgICAgIHN5cy5leGVjdXRhYmxl
LAorICAgICAgICAgICAgIi1jIiwKKyAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0aW1lOyB0aW1l
LnNsZWVwKDEpOyBwcmludChzeXMuc3RkaW4ucmVhZCgpKSIsCisgICAgICAgICAgICBzdGRpbj1i
ImlucHV0XG4ybmRsaW5lIiwKKyAgICAgICAgICAgIHRpbWVvdXQ9MC4xLAorICAgICAgICApCisK
KyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bigKKyAgICAgICAgc3lzLmV4ZWN1dGFibGUsCisgICAg
ICAgICItYyIsCisgICAgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuc3RkaW4ucmVhZCgpKSIs
CisgICAgICAgIHN0ZGluPWIiaW5wdXRcbjJuZGxpbmUiLAorICAgICkKKyAgICBhc3NlcnQgcmVz
dWx0LnN0ZG91dC5saW5lcyA9PSBbImlucHV0IiwgIjJuZGxpbmUiXQorICAgIGFzc2VydCByZXN1
bHQuc3RkZXJyLnN0cigpID09ICIiCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisKK2Rl
ZiB0ZXN0X3BvcGVuX3N0ZGluX3BpcGUodGVzdGRpcikgLT4gTm9uZToKKyAgICBwcm9jID0gdGVz
dGRpci5wb3BlbigKKyAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAiaW1wb3J0IHN5czsg
cHJpbnQoc3lzLnN0ZGluLnJlYWQoKSkiXSwKKyAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSwKKyAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgc3RkaW49c3VicHJv
Y2Vzcy5QSVBFLAorICAgICkKKyAgICBzdGRpbiA9IGIiaW5wdXRcbjJuZGxpbmUiCisgICAgc3Rk
b3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKGlucHV0PXN0ZGluKQorICAgIGFzc2VydCBz
dGRvdXQuZGVjb2RlKCJ1dGY4Iikuc3BsaXRsaW5lcygpID09IFsiaW5wdXQiLCAiMm5kbGluZSJd
CisgICAgYXNzZXJ0IHN0ZGVyciA9PSBiIiIKKyAgICBhc3NlcnQgcHJvYy5yZXR1cm5jb2RlID09
IDAKKworCitkZWYgdGVzdF9wb3Blbl9zdGRpbl9ieXRlcyh0ZXN0ZGlyKSAtPiBOb25lOgorICAg
IHByb2MgPSB0ZXN0ZGlyLnBvcGVuKAorICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICItYyIsICJp
bXBvcnQgc3lzOyBwcmludChzeXMuc3RkaW4ucmVhZCgpKSJdLAorICAgICAgICBzdGRvdXQ9c3Vi
cHJvY2Vzcy5QSVBFLAorICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICBz
dGRpbj1iImlucHV0XG4ybmRsaW5lIiwKKyAgICApCisgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9j
LmNvbW11bmljYXRlKCkKKyAgICBhc3NlcnQgc3Rkb3V0LmRlY29kZSgidXRmOCIpLnNwbGl0bGlu
ZXMoKSA9PSBbImlucHV0IiwgIjJuZGxpbmUiXQorICAgIGFzc2VydCBzdGRlcnIgPT0gYiIiCisg
ICAgYXNzZXJ0IHByb2MucmV0dXJuY29kZSA9PSAwCisKKworZGVmIHRlc3RfcG9wZW5fZGVmYXVs
dF9zdGRpbl9zdGRlcnJfYW5kX3N0ZGluX05vbmUodGVzdGRpcikgLT4gTm9uZToKKyAgICAjIHN0
ZG91dCwgc3RkZXJyIGRlZmF1bHQgdG8gcGlwZXMsCisgICAgIyBzdGRpbiBjYW4gYmUgTm9uZSB0
byBub3QgY2xvc2UgdGhlIHBpcGUsIGF2b2lkaW5nCisgICAgIyAiVmFsdWVFcnJvcjogZmx1c2gg
b2YgY2xvc2VkIGZpbGUiIHdpdGggYGNvbW11bmljYXRlKClgLgorICAgICMKKyAgICAjIFdyYXBz
IHRoZSB0ZXN0IHRvIG1ha2UgaXQgbm90IGhhbmcgd2hlbiBydW4gd2l0aCAiLXMiLgorICAgIHAx
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAnJycKKyAgICAgICAgaW1wb3J0IHN5cwor
CisgICAgICAgIGRlZiB0ZXN0X2lubmVyKHRlc3RkaXIpOgorICAgICAgICAgICAgcDEgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgaW1w
b3J0IHN5cworICAgICAgICAgICAgICAgIHByaW50KHN5cy5zdGRpbi5yZWFkKCkpICAjIGVtcHR5
CisgICAgICAgICAgICAgICAgcHJpbnQoJ3N0ZG91dCcpCisgICAgICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnc3RkZXJyJykKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHByb2MgPSB0ZXN0ZGlyLnBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgc3RyKHAx
KV0sIHN0ZGluPU5vbmUpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVu
aWNhdGUoYiJpZ25vcmVkIikKKyAgICAgICAgICAgIGFzc2VydCBzdGRvdXQuc3BsaXRsaW5lcygp
ID09IFtiIiIsIGIic3Rkb3V0Il0KKyAgICAgICAgICAgIGFzc2VydCBzdGRlcnIuc3BsaXRsaW5l
cygpID09IFtiInN0ZGVyciJdCisgICAgICAgICAgICBhc3NlcnQgcHJvYy5yZXR1cm5jb2RlID09
IDAKKyAgICAgICAgJycnCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
cCIsICJweXRlc3RlciIsIHN0cihwMSkpCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAorCisK
K2RlZiB0ZXN0X3NwYXduX3VzZXNfdG1waG9tZSh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRtcGhv
bWUgPSBzdHIodGVzdGRpci50bXBkaXIpCisgICAgYXNzZXJ0IG9zLmVudmlyb24uZ2V0KCJIT01F
IikgPT0gdG1waG9tZQorCisgICAgdGVzdGRpci5tb25rZXlwYXRjaC5zZXRlbnYoIkNVU1RPTUVO
ViIsICI0MiIpCisKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisg
ICAgICAgIGltcG9ydCBvcworCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBhc3Nl
cnQgb3MuZW52aXJvblsiSE9NRSJdID09IHt0bXBob21lIXJ9CisgICAgICAgICAgICBhc3NlcnQg
b3MuZW52aXJvblsiQ1VTVE9NRU5WIl0gPT0gIjQyIgorICAgICAgICAiIiIuZm9ybWF0KAorICAg
ICAgICAgICAgdG1waG9tZT10bXBob21lCisgICAgICAgICkKKyAgICApCisgICAgY2hpbGQgPSB0
ZXN0ZGlyLnNwYXduX3B5dGVzdChzdHIocDEpKQorICAgIG91dCA9IGNoaWxkLnJlYWQoKQorICAg
IGFzc2VydCBjaGlsZC53YWl0KCkgPT0gMCwgb3V0LmRlY29kZSgidXRmOCIpCisKKworZGVmIHRl
c3RfcnVuX3Jlc3VsdF9yZXByKCkgLT4gTm9uZToKKyAgICBvdXRsaW5lcyA9IFsic29tZSIsICJu
b3JtYWwiLCAib3V0cHV0Il0KKyAgICBlcnJsaW5lcyA9IFsic29tZSIsICJuYXN0eSIsICJlcnJv
cnMiLCAiaGFwcGVuZWQiXQorCisgICAgIyBrbm93biBleGl0IGNvZGUKKyAgICByID0gcHl0ZXN0
ZXIuUnVuUmVzdWx0KDEsIG91dGxpbmVzLCBlcnJsaW5lcywgZHVyYXRpb249MC41KQorICAgIGFz
c2VydCAoCisgICAgICAgIHJlcHIocikgPT0gIjxSdW5SZXN1bHQgcmV0PUV4aXRDb2RlLlRFU1RT
X0ZBSUxFRCBsZW4oc3Rkb3V0LmxpbmVzKT0zIgorICAgICAgICAiIGxlbihzdGRlcnIubGluZXMp
PTQgZHVyYXRpb249MC41MHM+IgorICAgICkKKworICAgICMgdW5rbm93biBleGl0IGNvZGU6IGp1
c3QgdGhlIG51bWJlcgorICAgIHIgPSBweXRlc3Rlci5SdW5SZXN1bHQoOTksIG91dGxpbmVzLCBl
cnJsaW5lcywgZHVyYXRpb249MC41KQorICAgIGFzc2VydCAoCisgICAgICAgIHJlcHIocikgPT0g
IjxSdW5SZXN1bHQgcmV0PTk5IGxlbihzdGRvdXQubGluZXMpPTMiCisgICAgICAgICIgbGVuKHN0
ZGVyci5saW5lcyk9NCBkdXJhdGlvbj0wLjUwcz4iCisgICAgKQorCisKK2RlZiB0ZXN0X3Rlc3Rk
aXJfb3V0Y29tZXNfd2l0aF9tdWx0aXBsZV9lcnJvcnModGVzdGRpcik6CisgICAgcDEgPSB0ZXN0
ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAg
ICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgIGRlZiBiYWRfZml4dHVyZSgpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJiYWQiKQorCisgICAgICAgIGRlZiB0ZXN0X2Vycm9yMShi
YWRfZml4dHVyZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIHRlc3RfZXJyb3Iy
KGJhZF9maXh0dXJlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3RyKHAxKSkKKyAgICByZXN1bHQuYXNzZXJ0X291dGNv
bWVzKGVycm9ycz0yKQorCisgICAgYXNzZXJ0IHJlc3VsdC5wYXJzZW91dGNvbWVzKCkgPT0geyJl
cnJvcnMiOiAyfQorCisKK2RlZiB0ZXN0X3BhcnNlX3N1bW1hcnlfbGluZV9hbHdheXNfcGx1cmFs
KCk6CisgICAgIiIiUGFyc2luZyBzdW1tYXJpZXMgYWx3YXlzIHJldHVybnMgcGx1cmFsIG5vdW5z
ICgjNjUwNSkiIiIKKyAgICBsaW5lcyA9IFsKKyAgICAgICAgInNvbWUgb3V0cHV0IDEiLAorICAg
ICAgICAic29tZSBvdXRwdXQgMiIsCisgICAgICAgICI9PT09PT09IDEgZmFpbGVkLCAxIHBhc3Nl
ZCwgMSB3YXJuaW5nLCAxIGVycm9yIGluIDAuMTNzID09PT0iLAorICAgICAgICAiZG9uZS4iLAor
ICAgIF0KKyAgICBhc3NlcnQgcHl0ZXN0ZXIuUnVuUmVzdWx0LnBhcnNlX3N1bW1hcnlfbm91bnMo
bGluZXMpID09IHsKKyAgICAgICAgImVycm9ycyI6IDEsCisgICAgICAgICJmYWlsZWQiOiAxLAor
ICAgICAgICAicGFzc2VkIjogMSwKKyAgICAgICAgIndhcm5pbmdzIjogMSwKKyAgICB9CisKKyAg
ICBsaW5lcyA9IFsKKyAgICAgICAgInNvbWUgb3V0cHV0IDEiLAorICAgICAgICAic29tZSBvdXRw
dXQgMiIsCisgICAgICAgICI9PT09PT09IDEgZmFpbGVkLCAxIHBhc3NlZCwgMiB3YXJuaW5ncywg
MiBlcnJvcnMgaW4gMC4xM3MgPT09PSIsCisgICAgICAgICJkb25lLiIsCisgICAgXQorICAgIGFz
c2VydCBweXRlc3Rlci5SdW5SZXN1bHQucGFyc2Vfc3VtbWFyeV9ub3VucyhsaW5lcykgPT0gewor
ICAgICAgICAiZXJyb3JzIjogMiwKKyAgICAgICAgImZhaWxlZCI6IDEsCisgICAgICAgICJwYXNz
ZWQiOiAxLAorICAgICAgICAid2FybmluZ3MiOiAyLAorICAgIH0KKworCitkZWYgdGVzdF9tYWtl
ZmlsZV9qb2luc19hYnNvbHV0ZV9wYXRoKHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAg
YWJzZmlsZSA9IHRlc3RkaXIudG1wZGlyIC8gImFic2ZpbGUiCisgICAgaWYgc3lzLnBsYXRmb3Jt
ID09ICJ3aW4zMiI6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhPU0Vycm9yKToKKyAgICAg
ICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgqKntzdHIoYWJzZmlsZSk6ICIifSkKKyAgICBlbHNl
OgorICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgqKntzdHIoYWJzZmlsZSk6ICIifSkK
KyAgICAgICAgYXNzZXJ0IHN0cihwMSkgPT0gKHRlc3RkaXIudG1wZGlyIC8gYWJzZmlsZSkgKyAi
LnB5IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3JlY3dhcm4ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVjd2Fybi5weQppbmRleCBhOGUyZmI4MDM3ODAuLmY2
MWY4NTg2ZjljNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3JlY3dhcm4u
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3JlY3dhcm4ucHkKQEAgLTEsMTMgKzEs
MTkgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHJlCitpbXBvcnQgd2Fybmlu
Z3MKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAogCiBpbXBvcnQgcHl0ZXN0CiBmcm9tIF9w
eXRlc3QucmVjd2FybiBpbXBvcnQgV2FybmluZ3NSZWNvcmRlcgogCiAKLWRlZiB0ZXN0X3JlY3dh
cm5fZnVuY3Rpb25hbCh0ZXN0ZGlyKToKLSAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5z
b3VyY2UoCitkZWYgdGVzdF9yZWN3YXJuX3N0YWNrbGV2ZWwocmVjd2FybjogV2FybmluZ3NSZWNv
cmRlcikgLT4gTm9uZToKKyAgICB3YXJuaW5ncy53YXJuKCJoZWxsbyIpCisgICAgd2FybiA9IHJl
Y3dhcm4ucG9wKCkKKyAgICBhc3NlcnQgd2Fybi5maWxlbmFtZSA9PSBfX2ZpbGVfXworCisKK2Rl
ZiB0ZXN0X3JlY3dhcm5fZnVuY3Rpb25hbCh0ZXN0ZGlyKSAtPiBOb25lOgorICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAg
ICBkZWYgdGVzdF9tZXRob2QocmVjd2Fybik6CkBAIC0xNiwxMyArMjIsMTIgQEAgZGVmIHRlc3Rf
cmVjd2Fybl9mdW5jdGlvbmFsKHRlc3RkaXIpOgogICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2Uod2Fybi5tZXNzYWdlLCBVc2VyV2FybmluZykKICAgICAiIiIKICAgICApCi0gICAgcmVzID0g
cmVwcmVjLmNvdW50b3V0Y29tZXMoKQotICAgIGFzc2VydCB0dXBsZShyZXMpID09ICgxLCAwLCAw
KSwgcmVzCi0KKyAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgIHJlcHJlYy5h
c3NlcnRvdXRjb21lKHBhc3NlZD0xKQogCi1jbGFzcyBUZXN0V2FybmluZ3NSZWNvcmRlckNoZWNr
ZXIob2JqZWN0KToKIAotICAgIGRlZiB0ZXN0X3JlY29yZGluZyhzZWxmKToKK2NsYXNzIFRlc3RX
YXJuaW5nc1JlY29yZGVyQ2hlY2tlcjoKKyAgICBkZWYgdGVzdF9yZWNvcmRpbmcoc2VsZikgLT4g
Tm9uZToKICAgICAgICAgcmVjID0gV2FybmluZ3NSZWNvcmRlcigpCiAgICAgICAgIHdpdGggcmVj
OgogICAgICAgICAgICAgYXNzZXJ0IG5vdCByZWMubGlzdApAQCAtMzYsMTkgKzQxLDI1IEBAIGNs
YXNzIFRlc3RXYXJuaW5nc1JlY29yZGVyQ2hlY2tlcihvYmplY3QpOgogICAgICAgICAgICAgcmVj
LmNsZWFyKCkKICAgICAgICAgICAgIGFzc2VydCBsZW4ocmVjLmxpc3QpID09IDAKICAgICAgICAg
ICAgIGFzc2VydCB2YWx1ZXMgaXMgcmVjLmxpc3QKLSAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMo
QXNzZXJ0aW9uRXJyb3IsICJyZWMucG9wKCkiKQorICAgICAgICAgICAgcHl0ZXN0LnJhaXNlcyhB
c3NlcnRpb25FcnJvciwgcmVjLnBvcCkKIAotICAgIGRlZiB0ZXN0X3R5cGVjaGVja2luZyhzZWxm
KToKKyAgICBkZWYgdGVzdF93YXJuX3N0YWNrbGV2ZWwoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
IiIiIzQyNDMiIiIKKyAgICAgICAgcmVjID0gV2FybmluZ3NSZWNvcmRlcigpCisgICAgICAgIHdp
dGggcmVjOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigidGVzdCIsIERlcHJlY2F0aW9uV2Fy
bmluZywgMikKKworICAgIGRlZiB0ZXN0X3R5cGVjaGVja2luZyhzZWxmKSAtPiBOb25lOgogICAg
ICAgICBmcm9tIF9weXRlc3QucmVjd2FybiBpbXBvcnQgV2FybmluZ3NDaGVja2VyCiAKICAgICAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBXYXJuaW5nc0No
ZWNrZXIoNSkKKyAgICAgICAgICAgIFdhcm5pbmdzQ2hlY2tlcig1KSAgIyB0eXBlOiBpZ25vcmUK
ICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBXYXJu
aW5nc0NoZWNrZXIoKCJoaSIsIFJ1bnRpbWVXYXJuaW5nKSkKKyAgICAgICAgICAgIFdhcm5pbmdz
Q2hlY2tlcigoImhpIiwgUnVudGltZVdhcm5pbmcpKSAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBXYXJuaW5nc0NoZWNr
ZXIoW0RlcHJlY2F0aW9uV2FybmluZywgUnVudGltZVdhcm5pbmddKQorICAgICAgICAgICAgV2Fy
bmluZ3NDaGVja2VyKFtEZXByZWNhdGlvbldhcm5pbmcsIFJ1bnRpbWVXYXJuaW5nXSkgICMgdHlw
ZTogaWdub3JlCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkX2VudGVyX2V4aXQoc2VsZik6CisgICAg
ZGVmIHRlc3RfaW52YWxpZF9lbnRlcl9leGl0KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICMgd3Jh
cCB0aGlzIHRlc3QgaW4gV2FybmluZ3NSZWNvcmRlciB0byBlbnN1cmUgd2FybmluZyBzdGF0ZSBn
ZXRzIHJlc2V0CiAgICAgICAgIHdpdGggV2FybmluZ3NSZWNvcmRlcigpOgogICAgICAgICAgICAg
d2l0aCBweXRlc3QucmFpc2VzKFJ1bnRpbWVFcnJvcik6CkBAIC02Miw1NCArNzMsNTUgQEAgY2xh
c3MgVGVzdFdhcm5pbmdzUmVjb3JkZXJDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXNzICAjIGNhbid0IGVudGVyIHR3aWNlCiAKIAotY2xhc3MgVGVzdERlcHJlY2F0
ZWRDYWxsKG9iamVjdCk6CitjbGFzcyBUZXN0RGVwcmVjYXRlZENhbGw6CiAgICAgIiIidGVzdCBw
eXRlc3QuZGVwcmVjYXRlZF9jYWxsKCkiIiIKIAotICAgIGRlZiBkZXAoc2VsZiwgaSwgaj1Ob25l
KToKKyAgICBkZWYgZGVwKHNlbGYsIGk6IGludCwgajogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+
IGludDoKICAgICAgICAgaWYgaSA9PSAwOgogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiaXMg
ZGVwcmVjYXRlZCIsIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICBy
ZXR1cm4gNDIKIAotICAgIGRlZiBkZXBfZXhwbGljaXQoc2VsZiwgaSk6CisgICAgZGVmIGRlcF9l
eHBsaWNpdChzZWxmLCBpOiBpbnQpIC0+IE5vbmU6CiAgICAgICAgIGlmIGkgPT0gMDoKICAgICAg
ICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCiAgICAgICAgICAgICAgICAgImRlcF9leHBs
aWNpdCIsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywgZmlsZW5hbWU9ImhlbGxvIiwgbGlu
ZW5vPTMKICAgICAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9yYWlz
ZXMoc2VsZik6Ci0gICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhBc3NlcnRpb25FcnJvcikgYXMg
ZXhjaW5mbzoKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfcmFpc2VzKHNlbGYpIC0+IE5v
bmU6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24sIG1h
dGNoPSJObyB3YXJuaW5ncyBvZiB0eXBlIik6CiAgICAgICAgICAgICBweXRlc3QuZGVwcmVjYXRl
ZF9jYWxsKHNlbGYuZGVwLCAzLCA1KQotICAgICAgICBhc3NlcnQgIkRpZCBub3QgcHJvZHVjZSIg
aW4gc3RyKGV4Y2luZm8pCiAKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGwoc2VsZik6Cisg
ICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9jYWxsKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIHB5dGVz
dC5kZXByZWNhdGVkX2NhbGwoc2VsZi5kZXAsIDAsIDUpCiAKLSAgICBkZWYgdGVzdF9kZXByZWNh
dGVkX2NhbGxfcmV0KHNlbGYpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9yZXQoc2Vs
ZikgLT4gTm9uZToKICAgICAgICAgcmV0ID0gcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChzZWxmLmRl
cCwgMCkKICAgICAgICAgYXNzZXJ0IHJldCA9PSA0MgogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRl
ZF9jYWxsX3ByZXNlcnZlcyhzZWxmKToKLSAgICAgICAgb25jZXJlZ2lzdHJ5ID0gd2FybmluZ3Mu
b25jZXJlZ2lzdHJ5LmNvcHkoKQotICAgICAgICBmaWx0ZXJzID0gd2FybmluZ3MuZmlsdGVyc1s6
XQorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9wcmVzZXJ2ZXMoc2VsZikgLT4gTm9uZToK
KyAgICAgICAgIyBUeXBlIGlnbm9yZWQgYmVjYXVzZSBgb25jZXJlZ2lzdHJ5YCBhbmQgYGZpbHRl
cnNgIGFyZSBub3QKKyAgICAgICAgIyBkb2N1bWVudGVkIEFQSS4KKyAgICAgICAgb25jZXJlZ2lz
dHJ5ID0gd2FybmluZ3Mub25jZXJlZ2lzdHJ5LmNvcHkoKSAgIyB0eXBlOiBpZ25vcmUKKyAgICAg
ICAgZmlsdGVycyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0gICMgdHlwZTogaWdub3JlCiAgICAgICAg
IHdhcm4gPSB3YXJuaW5ncy53YXJuCiAgICAgICAgIHdhcm5fZXhwbGljaXQgPSB3YXJuaW5ncy53
YXJuX2V4cGxpY2l0CiAgICAgICAgIHNlbGYudGVzdF9kZXByZWNhdGVkX2NhbGxfcmFpc2VzKCkK
ICAgICAgICAgc2VsZi50ZXN0X2RlcHJlY2F0ZWRfY2FsbCgpCi0gICAgICAgIGFzc2VydCBvbmNl
cmVnaXN0cnkgPT0gd2FybmluZ3Mub25jZXJlZ2lzdHJ5Ci0gICAgICAgIGFzc2VydCBmaWx0ZXJz
ID09IHdhcm5pbmdzLmZpbHRlcnMKKyAgICAgICAgYXNzZXJ0IG9uY2VyZWdpc3RyeSA9PSB3YXJu
aW5ncy5vbmNlcmVnaXN0cnkgICMgdHlwZTogaWdub3JlCisgICAgICAgIGFzc2VydCBmaWx0ZXJz
ID09IHdhcm5pbmdzLmZpbHRlcnMgICMgdHlwZTogaWdub3JlCiAgICAgICAgIGFzc2VydCB3YXJu
IGlzIHdhcm5pbmdzLndhcm4KICAgICAgICAgYXNzZXJ0IHdhcm5fZXhwbGljaXQgaXMgd2Fybmlu
Z3Mud2Fybl9leHBsaWNpdAogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9leHBsaWNpdF9jYWxs
X3JhaXNlcyhzZWxmKToKLSAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9y
KToKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2V4cGxpY2l0X2NhbGxfcmFpc2VzKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24p
OgogICAgICAgICAgICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChzZWxmLmRlcF9leHBsaWNpdCwg
MykKIAotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZXhwbGljaXRfY2FsbChzZWxmKToKKyAgICBk
ZWYgdGVzdF9kZXByZWNhdGVkX2V4cGxpY2l0X2NhbGwoc2VsZikgLT4gTm9uZToKICAgICAgICAg
cHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChzZWxmLmRlcF9leHBsaWNpdCwgMCkKICAgICAgICAgcHl0
ZXN0LmRlcHJlY2F0ZWRfY2FsbChzZWxmLmRlcF9leHBsaWNpdCwgMCkKIAogICAgIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgibW9kZSIsIFsiY29udGV4dF9tYW5hZ2VyIiwgImNhbGwiXSkKLSAg
ICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfbm9fd2FybmluZyhzZWxmLCBtb2RlKToKKyAgICBk
ZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfbm9fd2FybmluZyhzZWxmLCBtb2RlKSAtPiBOb25lOgog
ICAgICAgICAiIiJFbnN1cmUgZGVwcmVjYXRlZF9jYWxsKCkgcmFpc2VzIHRoZSBleHBlY3RlZCBm
YWlsdXJlIHdoZW4gaXRzIGJsb2NrL2Z1bmN0aW9uIGRvZXMKICAgICAgICAgbm90IHJhaXNlIGEg
ZGVwcmVjYXRpb24gd2FybmluZy4KICAgICAgICAgIiIiCkBAIC0xMTcsOCArMTI5LDggQEAgY2xh
c3MgVGVzdERlcHJlY2F0ZWRDYWxsKG9iamVjdCk6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAg
ICAgICBwYXNzCiAKLSAgICAgICAgbXNnID0gIkRpZCBub3QgcHJvZHVjZSBEZXByZWNhdGlvbldh
cm5pbmcgb3IgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyIKLSAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKEFzc2VydGlvbkVycm9yLCBtYXRjaD1tc2cpOgorICAgICAgICBtc2cgPSAiTm8gd2Fy
bmluZ3Mgb2YgdHlwZSAoLipEZXByZWNhdGlvbldhcm5pbmcuKiwgLipQZW5kaW5nRGVwcmVjYXRp
b25XYXJuaW5nLiopIgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhj
ZXB0aW9uLCBtYXRjaD1tc2cpOgogICAgICAgICAgICAgaWYgbW9kZSA9PSAiY2FsbCI6CiAgICAg
ICAgICAgICAgICAgcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbChmKQogICAgICAgICAgICAgZWxzZToK
QEAgLTEzMSw3ICsxNDMsNyBAQCBjbGFzcyBUZXN0RGVwcmVjYXRlZENhbGwob2JqZWN0KToKICAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIm1vZGUiLCBbImNvbnRleHRfbWFuYWdlciIsICJj
YWxsIl0pCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJjYWxsX2ZfZmlyc3QiLCBbVHJ1
ZSwgRmFsc2VdKQogICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiaWdub3JlIikKLSAg
ICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfbW9kZXMoc2VsZiwgd2FybmluZ190eXBlLCBtb2Rl
LCBjYWxsX2ZfZmlyc3QpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9tb2RlcyhzZWxm
LCB3YXJuaW5nX3R5cGUsIG1vZGUsIGNhbGxfZl9maXJzdCkgLT4gTm9uZToKICAgICAgICAgIiIi
RW5zdXJlIGRlcHJlY2F0ZWRfY2FsbCgpIGNhcHR1cmVzIGEgZGVwcmVjYXRpb24gd2FybmluZyBh
cyBleHBlY3RlZCBpbnNpZGUgaXRzCiAgICAgICAgIGJsb2NrL2Z1bmN0aW9uLgogICAgICAgICAi
IiIKQEAgLTE1MCw3ICsxNjIsNyBAQCBjbGFzcyBUZXN0RGVwcmVjYXRlZENhbGwob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBhc3NlcnQgZigpID09IDEwCiAKICAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoIm1vZGUiLCBbImNvbnRleHRfbWFuYWdlciIsICJjYWxsIl0pCi0gICAgZGVmIHRl
c3RfZGVwcmVjYXRlZF9jYWxsX2V4Y2VwdGlvbl9pc19yYWlzZWQoc2VsZiwgbW9kZSk6CisgICAg
ZGVmIHRlc3RfZGVwcmVjYXRlZF9jYWxsX2V4Y2VwdGlvbl9pc19yYWlzZWQoc2VsZiwgbW9kZSkg
LT4gTm9uZToKICAgICAgICAgIiIiSWYgdGhlIGJsb2NrIG9mIHRoZSBjb2RlIGJlaW5nIHRlc3Rl
ZCBieSBkZXByZWNhdGVkX2NhbGwoKSByYWlzZXMgYW4gZXhjZXB0aW9uLAogICAgICAgICBpdCBt
dXN0IHJhaXNlIHRoZSBleGNlcHRpb24gdW5kaXN0dXJiZWQuCiAgICAgICAgICIiIgpAQCAtMTY1
LDcgKzE3Nyw3IEBAIGNsYXNzIFRlc3REZXByZWNhdGVkQ2FsbChvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbCgpOgogICAgICAgICAgICAgICAgICAg
ICBmKCkKIAotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9zcGVjaWZpY2l0eShzZWxmKToK
KyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2NhbGxfc3BlY2lmaWNpdHkoc2VsZikgLT4gTm9uZToK
ICAgICAgICAgb3RoZXJfd2FybmluZ3MgPSBbCiAgICAgICAgICAgICBXYXJuaW5nLAogICAgICAg
ICAgICAgVXNlcldhcm5pbmcsCkBAIC0xODAsMzAgKzE5Miw0MCBAQCBjbGFzcyBUZXN0RGVwcmVj
YXRlZENhbGwob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAgICAg
d2FybmluZ3Mud2Fybih3YXJuaW5nKCJoaSIpKQogCi0gICAgICAgICAgICB3aXRoIHB5dGVzdC5y
YWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5
dGVzdC5mYWlsLkV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcHl0ZXN0LmRlcHJlY2F0ZWRf
Y2FsbChmKQotICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKToK
KyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRpb24pOgog
ICAgICAgICAgICAgICAgIHdpdGggcHl0ZXN0LmRlcHJlY2F0ZWRfY2FsbCgpOgogICAgICAgICAg
ICAgICAgICAgICBmKCkKIAorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FsbF9zdXBwb3J0c19t
YXRjaChzZWxmKSAtPiBOb25lOgorICAgICAgICB3aXRoIHB5dGVzdC5kZXByZWNhdGVkX2NhbGwo
bWF0Y2g9ciJtdXN0IGJlIFxkKyQiKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInZhbHVl
IG11c3QgYmUgNDIiLCBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6CisgICAgICAgICAgICB3aXRoIHB5dGVzdC5k
ZXByZWNhdGVkX2NhbGwobWF0Y2g9ciJtdXN0IGJlIFxkKyQiKToKKyAgICAgICAgICAgICAgICB3
YXJuaW5ncy53YXJuKCJ0aGlzIGlzIG5vdCBoZXJlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorCiAK
LWNsYXNzIFRlc3RXYXJucyhvYmplY3QpOgorY2xhc3MgVGVzdFdhcm5zOgorICAgIGRlZiB0ZXN0
X2NoZWNrX2NhbGxhYmxlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNvdXJjZSA9ICJ3YXJuaW5n
cy53YXJuKCd3MScsIFJ1bnRpbWVXYXJuaW5nKSIKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgbWF0Y2g9ciIuKiBtdXN0IGJlIGNhbGxhYmxlIik6CisgICAgICAgICAgICBw
eXRlc3Qud2FybnMoUnVudGltZVdhcm5pbmcsIHNvdXJjZSkgICMgdHlwZTogaWdub3JlCiAKLSAg
ICBkZWYgdGVzdF9zdHJpbmdzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NldmVyYWxfbWVzc2FnZXMo
c2VsZikgLT4gTm9uZToKICAgICAgICAgIyBkaWZmZXJlbnQgbWVzc2FnZXMsIGIvYyBQeXRob24g
c3VwcHJlc3NlcyBtdWx0aXBsZSBpZGVudGljYWwgd2FybmluZ3MKLSAgICAgICAgc291cmNlMSA9
ICJ3YXJuaW5ncy53YXJuKCd3MScsIFJ1bnRpbWVXYXJuaW5nKSIKLSAgICAgICAgc291cmNlMiA9
ICJ3YXJuaW5ncy53YXJuKCd3MicsIFJ1bnRpbWVXYXJuaW5nKSIKLSAgICAgICAgc291cmNlMyA9
ICJ3YXJuaW5ncy53YXJuKCd3MycsIFJ1bnRpbWVXYXJuaW5nKSIKLSAgICAgICAgcHl0ZXN0Lndh
cm5zKFJ1bnRpbWVXYXJuaW5nLCBzb3VyY2UxKQotICAgICAgICBweXRlc3QucmFpc2VzKHB5dGVz
dC5mYWlsLkV4Y2VwdGlvbiwgbGFtYmRhOiBweXRlc3Qud2FybnMoVXNlcldhcm5pbmcsIHNvdXJj
ZTIpKQotICAgICAgICBweXRlc3Qud2FybnMoUnVudGltZVdhcm5pbmcsIHNvdXJjZTMpCi0KLSAg
ICBkZWYgdGVzdF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgcHl0ZXN0Lndhcm5zKFJ1bnRpbWVX
YXJuaW5nLCBsYW1iZGE6IHdhcm5pbmdzLndhcm4oIncxIiwgUnVudGltZVdhcm5pbmcpKQorICAg
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwuRXhjZXB0aW9uKToKKyAgICAgICAg
ICAgIHB5dGVzdC53YXJucyhVc2VyV2FybmluZywgbGFtYmRhOiB3YXJuaW5ncy53YXJuKCJ3MiIs
IFJ1bnRpbWVXYXJuaW5nKSkKKyAgICAgICAgcHl0ZXN0Lndhcm5zKFJ1bnRpbWVXYXJuaW5nLCBs
YW1iZGE6IHdhcm5pbmdzLndhcm4oInczIiwgUnVudGltZVdhcm5pbmcpKQorCisgICAgZGVmIHRl
c3RfZnVuY3Rpb24oc2VsZikgLT4gTm9uZToKICAgICAgICAgcHl0ZXN0Lndhcm5zKAogICAgICAg
ICAgICAgU3ludGF4V2FybmluZywgbGFtYmRhIG1zZzogd2FybmluZ3Mud2Fybihtc2csIFN5bnRh
eFdhcm5pbmcpLCAic3ludGF4IgogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF93YXJuaW5nX3R1
cGxlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dhcm5pbmdfdHVwbGUoc2VsZikgLT4gTm9uZToKICAg
ICAgICAgcHl0ZXN0Lndhcm5zKAogICAgICAgICAgICAgKFJ1bnRpbWVXYXJuaW5nLCBTeW50YXhX
YXJuaW5nKSwgbGFtYmRhOiB3YXJuaW5ncy53YXJuKCJ3MSIsIFJ1bnRpbWVXYXJuaW5nKQogICAg
ICAgICApCkBAIC0yMTgsNyArMjQwLDcgQEAgY2xhc3MgVGVzdFdhcm5zKG9iamVjdCk6CiAgICAg
ICAgICAgICApLAogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9hc19jb250ZXh0bWFuYWdlcihz
ZWxmKToKKyAgICBkZWYgdGVzdF9hc19jb250ZXh0bWFuYWdlcihzZWxmKSAtPiBOb25lOgogICAg
ICAgICB3aXRoIHB5dGVzdC53YXJucyhSdW50aW1lV2FybmluZyk6CiAgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKCJydW50aW1lIiwgUnVudGltZVdhcm5pbmcpCiAKQEAgLTI2NywxNCArMjg5LDE0
IEBAIGNsYXNzIFRlc3RXYXJucyhvYmplY3QpOgogICAgICAgICAgICAgKQogICAgICAgICApCiAK
LSAgICBkZWYgdGVzdF9yZWNvcmQoc2VsZik6CisgICAgZGVmIHRlc3RfcmVjb3JkKHNlbGYpIC0+
IE5vbmU6CiAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKFVzZXJXYXJuaW5nKSBhcyByZWNvcmQ6
CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1c2VyIiwgVXNlcldhcm5pbmcpCiAKICAgICAg
ICAgYXNzZXJ0IGxlbihyZWNvcmQpID09IDEKICAgICAgICAgYXNzZXJ0IHN0cihyZWNvcmRbMF0u
bWVzc2FnZSkgPT0gInVzZXIiCiAKLSAgICBkZWYgdGVzdF9yZWNvcmRfb25seShzZWxmKToKKyAg
ICBkZWYgdGVzdF9yZWNvcmRfb25seShzZWxmKSAtPiBOb25lOgogICAgICAgICB3aXRoIHB5dGVz
dC53YXJucyhOb25lKSBhcyByZWNvcmQ6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1c2Vy
IiwgVXNlcldhcm5pbmcpCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJydW50aW1lIiwgUnVu
dGltZVdhcm5pbmcpCkBAIC0yODMsNyArMzA1LDcgQEAgY2xhc3MgVGVzdFdhcm5zKG9iamVjdCk6
CiAgICAgICAgIGFzc2VydCBzdHIocmVjb3JkWzBdLm1lc3NhZ2UpID09ICJ1c2VyIgogICAgICAg
ICBhc3NlcnQgc3RyKHJlY29yZFsxXS5tZXNzYWdlKSA9PSAicnVudGltZSIKIAotICAgIGRlZiB0
ZXN0X3JlY29yZF9ieV9zdWJjbGFzcyhzZWxmKToKKyAgICBkZWYgdGVzdF9yZWNvcmRfYnlfc3Vi
Y2xhc3Moc2VsZikgLT4gTm9uZToKICAgICAgICAgd2l0aCBweXRlc3Qud2FybnMoV2FybmluZykg
YXMgcmVjb3JkOgogICAgICAgICAgICAgd2FybmluZ3Mud2FybigidXNlciIsIFVzZXJXYXJuaW5n
KQogICAgICAgICAgICAgd2FybmluZ3Mud2FybigicnVudGltZSIsIFJ1bnRpbWVXYXJuaW5nKQpA
QCAtMzA2LDcgKzMyOCw3IEBAIGNsYXNzIFRlc3RXYXJucyhvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgc3RyKHJlY29yZFswXS5tZXNzYWdlKSA9PSAidXNlciIKICAgICAgICAgYXNzZXJ0IHN0cihy
ZWNvcmRbMV0ubWVzc2FnZSkgPT0gInJ1bnRpbWUiCiAKLSAgICBkZWYgdGVzdF9kb3VibGVfdGVz
dChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9kb3VibGVfdGVzdChzZWxmLCB0ZXN0ZGly
KSAtPiBOb25lOgogICAgICAgICAiIiJJZiBhIHRlc3QgaXMgcnVuIGFnYWluLCB0aGUgd2Fybmlu
ZyBzaG91bGQgc3RpbGwgYmUgcmFpc2VkIiIiCiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgICAgICIiIgpAQCAtMzIyLDcgKzM0NCw3IEBAIGNsYXNzIFRlc3RXYXJucyhvYmpl
Y3QpOgogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCBpbioiXSkKIAotICAgIGRlZiB0ZXN0
X21hdGNoX3JlZ2V4KHNlbGYpOgorICAgIGRlZiB0ZXN0X21hdGNoX3JlZ2V4KHNlbGYpIC0+IE5v
bmU6CiAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKFVzZXJXYXJuaW5nLCBtYXRjaD1yIm11c3Qg
YmUgXGQrJCIpOgogICAgICAgICAgICAgd2FybmluZ3Mud2FybigidmFsdWUgbXVzdCBiZSA0MiIs
IFVzZXJXYXJuaW5nKQogCkBAIC0zMzQsMTQgKzM1NiwzMSBAQCBjbGFzcyBUZXN0V2FybnMob2Jq
ZWN0KToKICAgICAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKEZ1dHVyZVdhcm5pbmcsIG1hdGNo
PXIibXVzdCBiZSBcZCskIik6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidmFsdWUg
bXVzdCBiZSA0MiIsIFVzZXJXYXJuaW5nKQogCi0gICAgZGVmIHRlc3Rfb25lX2Zyb21fbXVsdGlw
bGVfd2FybnMoc2VsZik6CisgICAgZGVmIHRlc3Rfb25lX2Zyb21fbXVsdGlwbGVfd2FybnMoc2Vs
ZikgLT4gTm9uZToKICAgICAgICAgd2l0aCBweXRlc3Qud2FybnMoVXNlcldhcm5pbmcsIG1hdGNo
PXIiYWFhIik6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJjY2NjY2NjY2NjIiwgVXNlcldh
cm5pbmcpCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJiYmJiYmJiYmJiIiwgVXNlcldhcm5p
bmcpCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJhYWFhYWFhYWFhIiwgVXNlcldhcm5pbmcp
CiAKLSAgICBkZWYgdGVzdF9ub25lX29mX211bHRpcGxlX3dhcm5zKHNlbGYpOgorICAgIGRlZiB0
ZXN0X25vbmVfb2ZfbXVsdGlwbGVfd2FybnMoc2VsZikgLT4gTm9uZToKICAgICAgICAgd2l0aCBw
eXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHB5
dGVzdC53YXJucyhVc2VyV2FybmluZywgbWF0Y2g9ciJhYWEiKToKICAgICAgICAgICAgICAgICB3
YXJuaW5ncy53YXJuKCJiYmJiYmJiYmJiIiwgVXNlcldhcm5pbmcpCiAgICAgICAgICAgICAgICAg
d2FybmluZ3Mud2FybigiY2NjY2NjY2NjYyIsIFVzZXJXYXJuaW5nKQorCisgICAgQHB5dGVzdC5t
YXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiKQorICAgIGRlZiB0ZXN0X2Nhbl9jYXB0dXJlX3By
ZXZpb3VzbHlfd2FybmVkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRlZiBmKCkgLT4gaW50Ogor
ICAgICAgICAgICAgd2FybmluZ3Mud2FybihVc2VyV2FybmluZygib2hhaSIpKQorICAgICAgICAg
ICAgcmV0dXJuIDEwCisKKyAgICAgICAgYXNzZXJ0IGYoKSA9PSAxMAorICAgICAgICBhc3NlcnQg
cHl0ZXN0Lndhcm5zKFVzZXJXYXJuaW5nLCBmKSA9PSAxMAorICAgICAgICBhc3NlcnQgcHl0ZXN0
Lndhcm5zKFVzZXJXYXJuaW5nLCBmKSA9PSAxMAorICAgICAgICBhc3NlcnQgcHl0ZXN0Lndhcm5z
KFVzZXJXYXJuaW5nLCBmKSAhPSAiMTAiICAjIHR5cGU6IGlnbm9yZVtjb21wYXJpc29uLW92ZXJs
YXBdCisKKyAgICBkZWYgdGVzdF93YXJuc19jb250ZXh0X21hbmFnZXJfd2l0aF9rd2FyZ3Moc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcikgYXMgZXhj
aW5mbzoKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5zKFVzZXJXYXJuaW5nLCBmb289ImJh
ciIpOiAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGFzc2Vy
dCAiVW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50cyIgaW4gc3RyKGV4Y2luZm8udmFsdWUpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVwb3J0cy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9yZXBvcnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZGJlOTQ4OTYyMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X3JlcG9ydHMucHkKQEAgLTAsMCArMSw1MDUgQEAKK2ltcG9ydCBzeXMKK2Zy
b20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCisKK2lt
cG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25DaGFp
blJlcHIKK2Zyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25SZXByCitmcm9t
IF9weXRlc3QuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9y
dCBQYXRoCitmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1wb3J0IFRlc3RkaXIKK2Zyb20gX3B5dGVz
dC5yZXBvcnRzIGltcG9ydCBDb2xsZWN0UmVwb3J0Citmcm9tIF9weXRlc3QucmVwb3J0cyBpbXBv
cnQgVGVzdFJlcG9ydAorCisKK2NsYXNzIFRlc3RSZXBvcnRTZXJpYWxpemF0aW9uOgorICAgIGRl
ZiB0ZXN0X3hkaXN0X2xvbmdyZXByX3RvX3N0cl9pc3N1ZV8yNDEoc2VsZiwgdGVzdGRpcjogVGVz
dGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiUmVnYXJkaW5nIGlzc3VlIHB5dGVzdC14ZGlzdCMy
NDEuCisKKyAgICAgICAgVGhpcyB0ZXN0IGNhbWUgb3JpZ2luYWxseSBmcm9tIHRlc3RfcmVtb3Rl
LnB5IGluIHhkaXN0IChjYTAzMjY5KS4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfYSgpOiBhc3Nl
cnQgRmFsc2UKKyAgICAgICAgICAgIGRlZiB0ZXN0X2IoKTogcGFzcworICAgICAgICAiIiIKKyAg
ICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICBy
ZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpCisg
ICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gNgorICAgICAgICB0ZXN0X2FfY2FsbCA9IHJl
cG9ydHNbMV0KKyAgICAgICAgYXNzZXJ0IHRlc3RfYV9jYWxsLndoZW4gPT0gImNhbGwiCisgICAg
ICAgIGFzc2VydCB0ZXN0X2FfY2FsbC5vdXRjb21lID09ICJmYWlsZWQiCisgICAgICAgIGFzc2Vy
dCB0ZXN0X2FfY2FsbC5fdG9fanNvbigpWyJsb25ncmVwciJdWyJyZXBydHJhY2ViYWNrIl1bInN0
eWxlIl0gPT0gImxvbmciCisgICAgICAgIHRlc3RfYl9jYWxsID0gcmVwb3J0c1s0XQorICAgICAg
ICBhc3NlcnQgdGVzdF9iX2NhbGwud2hlbiA9PSAiY2FsbCIKKyAgICAgICAgYXNzZXJ0IHRlc3Rf
Yl9jYWxsLm91dGNvbWUgPT0gInBhc3NlZCIKKyAgICAgICAgYXNzZXJ0IHRlc3RfYl9jYWxsLl90
b19qc29uKClbImxvbmdyZXByIl0gaXMgTm9uZQorCisgICAgZGVmIHRlc3RfeGRpc3RfcmVwb3J0
X2xvbmdyZXByX3JlcHJjcmFzaF8xMzAoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToK
KyAgICAgICAgIiIiUmVnYXJkaW5nIGlzc3VlIHB5dGVzdC14ZGlzdCMxMzAKKworICAgICAgICBU
aGlzIHRlc3QgY2FtZSBvcmlnaW5hbGx5IGZyb20gdGVzdF9yZW1vdGUucHkgaW4geGRpc3QgKGNh
MDMyNjkpLgorICAgICAgICAiIiIKKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVu
c291cmNlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2Zh
aWwoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgJ0V4cGVjdGVkIE1l
c3NhZ2UnCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVwb3J0cyA9
IHJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9sb2dyZXBvcnQiKQorICAgICAgICBh
c3NlcnQgbGVuKHJlcG9ydHMpID09IDMKKyAgICAgICAgcmVwID0gcmVwb3J0c1sxXQorICAgICAg
ICBhZGRlZF9zZWN0aW9uID0gKCJGYWlsdXJlIE1ldGFkYXRhIiwgIm1ldGFkYXRhIG1ldGFkYXRh
IiwgIioiKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXAubG9uZ3JlcHIsIEV4Y2VwdGlv
blJlcHIpCisgICAgICAgIHJlcC5sb25ncmVwci5zZWN0aW9ucy5hcHBlbmQoYWRkZWRfc2VjdGlv
bikKKyAgICAgICAgZCA9IHJlcC5fdG9fanNvbigpCisgICAgICAgIGEgPSBUZXN0UmVwb3J0Ll9m
cm9tX2pzb24oZCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYS5sb25ncmVwciwgRXhjZXB0
aW9uUmVwcikKKyAgICAgICAgIyBDaGVjayBhc3NlbWJsZWQgPT0gcmVwCisgICAgICAgIGFzc2Vy
dCBhLl9fZGljdF9fLmtleXMoKSA9PSByZXAuX19kaWN0X18ua2V5cygpCisgICAgICAgIGZvciBr
ZXkgaW4gcmVwLl9fZGljdF9fLmtleXMoKToKKyAgICAgICAgICAgIGlmIGtleSAhPSAibG9uZ3Jl
cHIiOgorICAgICAgICAgICAgICAgIGFzc2VydCBnZXRhdHRyKGEsIGtleSkgPT0gZ2V0YXR0cihy
ZXAsIGtleSkKKyAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVwci5yZXByY3Jhc2ggaXMgbm90IE5v
bmUKKyAgICAgICAgYXNzZXJ0IGEubG9uZ3JlcHIucmVwcmNyYXNoIGlzIG5vdCBOb25lCisgICAg
ICAgIGFzc2VydCByZXAubG9uZ3JlcHIucmVwcmNyYXNoLmxpbmVubyA9PSBhLmxvbmdyZXByLnJl
cHJjcmFzaC5saW5lbm8KKyAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVwci5yZXByY3Jhc2gubWVz
c2FnZSA9PSBhLmxvbmdyZXByLnJlcHJjcmFzaC5tZXNzYWdlCisgICAgICAgIGFzc2VydCByZXAu
bG9uZ3JlcHIucmVwcmNyYXNoLnBhdGggPT0gYS5sb25ncmVwci5yZXByY3Jhc2gucGF0aAorICAg
ICAgICBhc3NlcnQgcmVwLmxvbmdyZXByLnJlcHJ0cmFjZWJhY2suZW50cnlzZXAgPT0gYS5sb25n
cmVwci5yZXBydHJhY2ViYWNrLmVudHJ5c2VwCisgICAgICAgIGFzc2VydCAoCisgICAgICAgICAg
ICByZXAubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5leHRyYWxpbmUgPT0gYS5sb25ncmVwci5yZXBy
dHJhY2ViYWNrLmV4dHJhbGluZQorICAgICAgICApCisgICAgICAgIGFzc2VydCByZXAubG9uZ3Jl
cHIucmVwcnRyYWNlYmFjay5zdHlsZSA9PSBhLmxvbmdyZXByLnJlcHJ0cmFjZWJhY2suc3R5bGUK
KyAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVwci5zZWN0aW9ucyA9PSBhLmxvbmdyZXByLnNlY3Rp
b25zCisgICAgICAgICMgTWlzc2luZyBzZWN0aW9uIGF0dHJpYnV0ZSBQUjE3MQorICAgICAgICBh
c3NlcnQgYWRkZWRfc2VjdGlvbiBpbiBhLmxvbmdyZXByLnNlY3Rpb25zCisKKyAgICBkZWYgdGVz
dF9yZXByZW50cmllc19zZXJpYWxpemF0aW9uXzE3MChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAt
PiBOb25lOgorICAgICAgICAiIiJSZWdhcmRpbmcgaXNzdWUgcHl0ZXN0LXhkaXN0IzE3MAorCisg
ICAgICAgIFRoaXMgdGVzdCBjYW1lIG9yaWdpbmFsbHkgZnJvbSB0ZXN0X3JlbW90ZS5weSBpbiB4
ZGlzdCAoY2EwMzI2OSkuCisgICAgICAgICIiIgorICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUu
Y29kZSBpbXBvcnQgUmVwckVudHJ5CisKKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVf
cnVuc291cmNlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmIHRlc3RfcmVwcl9lbnRyeSgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
ID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgeAorICAgICAgICAg
ICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgIi0tc2hvd2xvY2FscyIsCisgICAgICAg
ICkKKyAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVudGVzdF9s
b2dyZXBvcnQiKQorICAgICAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDMKKyAgICAgICAgcmVw
ID0gcmVwb3J0c1sxXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXAubG9uZ3JlcHIsIEV4
Y2VwdGlvblJlcHIpCisgICAgICAgIGQgPSByZXAuX3RvX2pzb24oKQorICAgICAgICBhID0gVGVz
dFJlcG9ydC5fZnJvbV9qc29uKGQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGEubG9uZ3Jl
cHIsIEV4Y2VwdGlvblJlcHIpCisKKyAgICAgICAgcmVwX2VudHJpZXMgPSByZXAubG9uZ3JlcHIu
cmVwcnRyYWNlYmFjay5yZXByZW50cmllcworICAgICAgICBhX2VudHJpZXMgPSBhLmxvbmdyZXBy
LnJlcHJ0cmFjZWJhY2sucmVwcmVudHJpZXMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGFf
ZW50cmllcykpOgorICAgICAgICAgICAgcmVwX2VudHJ5ID0gcmVwX2VudHJpZXNbaV0KKyAgICAg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcF9lbnRyeSwgUmVwckVudHJ5KQorICAgICAgICAg
ICAgYXNzZXJ0IHJlcF9lbnRyeS5yZXByZmlsZWxvYyBpcyBub3QgTm9uZQorICAgICAgICAgICAg
YXNzZXJ0IHJlcF9lbnRyeS5yZXByZnVuY2FyZ3MgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFz
c2VydCByZXBfZW50cnkucmVwcmxvY2FscyBpcyBub3QgTm9uZQorCisgICAgICAgICAgICBhX2Vu
dHJ5ID0gYV9lbnRyaWVzW2ldCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhX2VudHJ5
LCBSZXByRW50cnkpCisgICAgICAgICAgICBhc3NlcnQgYV9lbnRyeS5yZXByZmlsZWxvYyBpcyBu
b3QgTm9uZQorICAgICAgICAgICAgYXNzZXJ0IGFfZW50cnkucmVwcmZ1bmNhcmdzIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBhc3NlcnQgYV9lbnRyeS5yZXBybG9jYWxzIGlzIG5vdCBOb25lCisK
KyAgICAgICAgICAgIGFzc2VydCByZXBfZW50cnkubGluZXMgPT0gYV9lbnRyeS5saW5lcworICAg
ICAgICAgICAgYXNzZXJ0IHJlcF9lbnRyeS5yZXByZmlsZWxvYy5saW5lbm8gPT0gYV9lbnRyeS5y
ZXByZmlsZWxvYy5saW5lbm8KKyAgICAgICAgICAgIGFzc2VydCByZXBfZW50cnkucmVwcmZpbGVs
b2MubWVzc2FnZSA9PSBhX2VudHJ5LnJlcHJmaWxlbG9jLm1lc3NhZ2UKKyAgICAgICAgICAgIGFz
c2VydCByZXBfZW50cnkucmVwcmZpbGVsb2MucGF0aCA9PSBhX2VudHJ5LnJlcHJmaWxlbG9jLnBh
dGgKKyAgICAgICAgICAgIGFzc2VydCByZXBfZW50cnkucmVwcmZ1bmNhcmdzLmFyZ3MgPT0gYV9l
bnRyeS5yZXByZnVuY2FyZ3MuYXJncworICAgICAgICAgICAgYXNzZXJ0IHJlcF9lbnRyeS5yZXBy
bG9jYWxzLmxpbmVzID09IGFfZW50cnkucmVwcmxvY2Fscy5saW5lcworICAgICAgICAgICAgYXNz
ZXJ0IHJlcF9lbnRyeS5zdHlsZSA9PSBhX2VudHJ5LnN0eWxlCisKKyAgICBkZWYgdGVzdF9yZXBy
ZW50cmllc19zZXJpYWxpemF0aW9uXzE5NihzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25l
OgorICAgICAgICAiIiJSZWdhcmRpbmcgaXNzdWUgcHl0ZXN0LXhkaXN0IzE5NgorCisgICAgICAg
IFRoaXMgdGVzdCBjYW1lIG9yaWdpbmFsbHkgZnJvbSB0ZXN0X3JlbW90ZS5weSBpbiB4ZGlzdCAo
Y2EwMzI2OSkuCisgICAgICAgICIiIgorICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBp
bXBvcnQgUmVwckVudHJ5TmF0aXZlCisKKyAgICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVf
cnVuc291cmNlKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmIHRlc3RfcmVwcl9lbnRyeV9uYXRpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeCA9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICItLXRiPW5hdGl2ZSIsCisg
ICAgICAgICkKKyAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfcnVu
dGVzdF9sb2dyZXBvcnQiKQorICAgICAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDMKKyAgICAg
ICAgcmVwID0gcmVwb3J0c1sxXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXAubG9uZ3Jl
cHIsIEV4Y2VwdGlvblJlcHIpCisgICAgICAgIGQgPSByZXAuX3RvX2pzb24oKQorICAgICAgICBh
ID0gVGVzdFJlcG9ydC5fZnJvbV9qc29uKGQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGEu
bG9uZ3JlcHIsIEV4Y2VwdGlvblJlcHIpCisKKyAgICAgICAgcmVwX2VudHJpZXMgPSByZXAubG9u
Z3JlcHIucmVwcnRyYWNlYmFjay5yZXByZW50cmllcworICAgICAgICBhX2VudHJpZXMgPSBhLmxv
bmdyZXByLnJlcHJ0cmFjZWJhY2sucmVwcmVudHJpZXMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
bGVuKGFfZW50cmllcykpOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVwX2VudHJp
ZXNbaV0sIFJlcHJFbnRyeU5hdGl2ZSkKKyAgICAgICAgICAgIGFzc2VydCByZXBfZW50cmllc1tp
XS5saW5lcyA9PSBhX2VudHJpZXNbaV0ubGluZXMKKworICAgIGRlZiB0ZXN0X2l0ZW1yZXBvcnRf
b3V0Y29tZXMoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIyBUaGlz
IHRlc3QgY2FtZSBvcmlnaW5hbGx5IGZyb20gdGVzdF9yZW1vdGUucHkgaW4geGRpc3QgKGNhMDMy
NjkpLgorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAgIGRlZiB0ZXN0
X3Bhc3MoKTogcGFzcworICAgICAgICAgICAgZGVmIHRlc3RfZmFpbCgpOiAwLzAKKyAgICAgICAg
ICAgIEBweXRlc3QubWFyay5za2lwaWYoIlRydWUiKQorICAgICAgICAgICAgZGVmIHRlc3Rfc2tp
cCgpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGVzdF9za2lwX2ltcGVyYXRpdmUoKToKKyAgICAg
ICAgICAgICAgICBweXRlc3Quc2tpcCgiaGVsbG8iKQorICAgICAgICAgICAgQHB5dGVzdC5tYXJr
LnhmYWlsKCJUcnVlIikKKyAgICAgICAgICAgIGRlZiB0ZXN0X3hmYWlsKCk6IDAvMAorICAgICAg
ICAgICAgZGVmIHRlc3RfeGZhaWxfaW1wZXJhdGl2ZSgpOgorICAgICAgICAgICAgICAgIHB5dGVz
dC54ZmFpbCgiaGVsbG8iKQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXBvcnRz
ID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpCisgICAgICAg
IGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMTcgICMgd2l0aCBzZXR1cC90ZWFyZG93biAicGFzc2Vk
IiByZXBvcnRzCisgICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKKyAgICAgICAgICAgIGQgPSBy
ZXAuX3RvX2pzb24oKQorICAgICAgICAgICAgbmV3cmVwID0gVGVzdFJlcG9ydC5fZnJvbV9qc29u
KGQpCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLnBhc3NlZCA9PSByZXAucGFzc2VkCisgICAg
ICAgICAgICBhc3NlcnQgbmV3cmVwLmZhaWxlZCA9PSByZXAuZmFpbGVkCisgICAgICAgICAgICBh
c3NlcnQgbmV3cmVwLnNraXBwZWQgPT0gcmVwLnNraXBwZWQKKyAgICAgICAgICAgIGlmIG5ld3Jl
cC5za2lwcGVkIGFuZCBub3QgaGFzYXR0cihuZXdyZXAsICJ3YXN4ZmFpbCIpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5ld3JlcC5sb25ncmVwciwgdHVwbGUpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGxlbihuZXdyZXAubG9uZ3JlcHIpID09IDMKKyAgICAgICAgICAgIGFz
c2VydCBuZXdyZXAub3V0Y29tZSA9PSByZXAub3V0Y29tZQorICAgICAgICAgICAgYXNzZXJ0IG5l
d3JlcC53aGVuID09IHJlcC53aGVuCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLmtleXdvcmRz
ID09IHJlcC5rZXl3b3JkcworICAgICAgICAgICAgaWYgcmVwLmZhaWxlZDoKKyAgICAgICAgICAg
ICAgICBhc3NlcnQgbmV3cmVwLmxvbmdyZXBydGV4dCA9PSByZXAubG9uZ3JlcHJ0ZXh0CisKKyAg
ICBkZWYgdGVzdF9jb2xsZWN0cmVwb3J0X3Bhc3NlZChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAt
PiBOb25lOgorICAgICAgICAiIiJUaGlzIHRlc3QgY2FtZSBvcmlnaW5hbGx5IGZyb20gdGVzdF9y
ZW1vdGUucHkgaW4geGRpc3QgKGNhMDMyNjkpLiIiIgorICAgICAgICByZXByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW5zb3VyY2UoImRlZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCisgICAgICAgIHJlcG9y
dHMgPSByZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X2NvbGxlY3RyZXBvcnQiKQorICAgICAgICBm
b3IgcmVwIGluIHJlcG9ydHM6CisgICAgICAgICAgICBkID0gcmVwLl90b19qc29uKCkKKyAgICAg
ICAgICAgIG5ld3JlcCA9IENvbGxlY3RSZXBvcnQuX2Zyb21fanNvbihkKQorICAgICAgICAgICAg
YXNzZXJ0IG5ld3JlcC5wYXNzZWQgPT0gcmVwLnBhc3NlZAorICAgICAgICAgICAgYXNzZXJ0IG5l
d3JlcC5mYWlsZWQgPT0gcmVwLmZhaWxlZAorICAgICAgICAgICAgYXNzZXJ0IG5ld3JlcC5za2lw
cGVkID09IHJlcC5za2lwcGVkCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0cmVwb3J0X2ZhaWwoc2Vs
ZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAgIiIiVGhpcyB0ZXN0IGNhbWUg
b3JpZ2luYWxseSBmcm9tIHRlc3RfcmVtb3RlLnB5IGluIHhkaXN0IChjYTAzMjY5KS4iIiIKKyAg
ICAgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKCJxd2UgYWJjIikKKyAgICAg
ICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRyZXBvcnRzKCJweXRlc3RfY29sbGVjdHJlcG9ydCIpCisg
ICAgICAgIGFzc2VydCByZXBvcnRzCisgICAgICAgIGZvciByZXAgaW4gcmVwb3J0czoKKyAgICAg
ICAgICAgIGQgPSByZXAuX3RvX2pzb24oKQorICAgICAgICAgICAgbmV3cmVwID0gQ29sbGVjdFJl
cG9ydC5fZnJvbV9qc29uKGQpCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLnBhc3NlZCA9PSBy
ZXAucGFzc2VkCisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLmZhaWxlZCA9PSByZXAuZmFpbGVk
CisgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLnNraXBwZWQgPT0gcmVwLnNraXBwZWQKKyAgICAg
ICAgICAgIGlmIHJlcC5mYWlsZWQ6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5ld3JlcC5sb25n
cmVwciA9PSBzdHIocmVwLmxvbmdyZXByKQorCisgICAgZGVmIHRlc3RfZXh0ZW5kZWRfcmVwb3J0
X2Rlc2VyaWFsaXphdGlvbihzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAg
ICAiIiJUaGlzIHRlc3QgY2FtZSBvcmlnaW5hbGx5IGZyb20gdGVzdF9yZW1vdGUucHkgaW4geGRp
c3QgKGNhMDMyNjkpLiIiIgorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3Vy
Y2UoInF3ZSBhYmMiKQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVz
dF9jb2xsZWN0cmVwb3J0IikKKyAgICAgICAgYXNzZXJ0IHJlcG9ydHMKKyAgICAgICAgZm9yIHJl
cCBpbiByZXBvcnRzOgorICAgICAgICAgICAgcmVwLmV4dHJhID0gVHJ1ZSAgIyB0eXBlOiBpZ25v
cmVbYXR0ci1kZWZpbmVkXQorICAgICAgICAgICAgZCA9IHJlcC5fdG9fanNvbigpCisgICAgICAg
ICAgICBuZXdyZXAgPSBDb2xsZWN0UmVwb3J0Ll9mcm9tX2pzb24oZCkKKyAgICAgICAgICAgIGFz
c2VydCBuZXdyZXAuZXh0cmEKKyAgICAgICAgICAgIGFzc2VydCBuZXdyZXAucGFzc2VkID09IHJl
cC5wYXNzZWQKKyAgICAgICAgICAgIGFzc2VydCBuZXdyZXAuZmFpbGVkID09IHJlcC5mYWlsZWQK
KyAgICAgICAgICAgIGFzc2VydCBuZXdyZXAuc2tpcHBlZCA9PSByZXAuc2tpcHBlZAorICAgICAg
ICAgICAgaWYgcmVwLmZhaWxlZDoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbmV3cmVwLmxvbmdy
ZXByID09IHN0cihyZXAubG9uZ3JlcHIpCisKKyAgICBkZWYgdGVzdF9wYXRoc19zdXBwb3J0KHNl
bGYsIHRlc3RkaXI6IFRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIiIlJlcG9ydCBhdHRyaWJ1
dGVzIHdoaWNoIGFyZSBweS5wYXRoIG9yIHBhdGhsaWIgb2JqZWN0cyBzaG91bGQgYmVjb21lIHN0
cmluZ3MuIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgZGVmIHRlc3RfYSgpOgorICAgICAgICAgICAgICAgIGFzc2VydCBGYWxzZQor
ICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9y
dW4oKQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9ydW50ZXN0
X2xvZ3JlcG9ydCIpCisgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMworICAgICAgICB0
ZXN0X2FfY2FsbCA9IHJlcG9ydHNbMV0KKyAgICAgICAgdGVzdF9hX2NhbGwucGF0aDEgPSB0ZXN0
ZGlyLnRtcGRpciAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorICAgICAgICB0ZXN0X2Ff
Y2FsbC5wYXRoMiA9IFBhdGgodGVzdGRpci50bXBkaXIpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRl
ZmluZWRdCisgICAgICAgIGRhdGEgPSB0ZXN0X2FfY2FsbC5fdG9fanNvbigpCisgICAgICAgIGFz
c2VydCBkYXRhWyJwYXRoMSJdID09IHN0cih0ZXN0ZGlyLnRtcGRpcikKKyAgICAgICAgYXNzZXJ0
IGRhdGFbInBhdGgyIl0gPT0gc3RyKHRlc3RkaXIudG1wZGlyKQorCisgICAgZGVmIHRlc3RfZGVz
ZXJpYWxpemF0aW9uX2ZhaWx1cmUoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAg
ICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2YgZmFpbHVyZSBkdXJpbmcgZGVzZXJpYWxpemF0aW9u
IG9mIHJlcG9ydCB0eXBlcy4iIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9hKCk6CisgICAgICAgICAgICAgICAgYXNz
ZXJ0IEZhbHNlCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlcHJlYyA9IHRlc3Rk
aXIuaW5saW5lX3J1bigpCisgICAgICAgIHJlcG9ydHMgPSByZXByZWMuZ2V0cmVwb3J0cygicHl0
ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IikKKyAgICAgICAgYXNzZXJ0IGxlbihyZXBvcnRzKSA9PSAz
CisgICAgICAgIHRlc3RfYV9jYWxsID0gcmVwb3J0c1sxXQorICAgICAgICBkYXRhID0gdGVzdF9h
X2NhbGwuX3RvX2pzb24oKQorICAgICAgICBlbnRyeSA9IGRhdGFbImxvbmdyZXByIl1bInJlcHJ0
cmFjZWJhY2siXVsicmVwcmVudHJpZXMiXVswXQorICAgICAgICBhc3NlcnQgZW50cnlbInR5cGUi
XSA9PSAiUmVwckVudHJ5IgorCisgICAgICAgIGVudHJ5WyJ0eXBlIl0gPSAiVW5rbm93biIKKyAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKAorICAgICAgICAgICAgUnVudGltZUVycm9yLCBtYXRj
aD0iSU5URVJOQUxFUlJPUjogVW5rbm93biBlbnRyeSB0eXBlIHJldHVybmVkOiBVbmtub3duIgor
ICAgICAgICApOgorICAgICAgICAgICAgVGVzdFJlcG9ydC5fZnJvbV9qc29uKGRhdGEpCisKKyAg
ICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInJlcG9ydF9jbGFzcyIsIFtUZXN0UmVwb3J0LCBD
b2xsZWN0UmVwb3J0XSkKKyAgICBkZWYgdGVzdF9jaGFpbmVkX2V4Y2VwdGlvbnMoc2VsZiwgdGVz
dGRpcjogVGVzdGRpciwgdHdfbW9jaywgcmVwb3J0X2NsYXNzKSAtPiBOb25lOgorICAgICAgICAi
IiJDaGVjayBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBvZiByZXBvcnQgb2JqZWN0cyBj
b250YWluaW5nIGNoYWluZWQgZXhjZXB0aW9ucyAoIzU3ODYpIiIiCisgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIGZvbygpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlIGVycm9yJykKKyAgICAgICAgICAg
IGRlZiB0ZXN0X2EoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg
IGZvbygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdydW50aW1lIGVycm9yJykgZnJvbSBlCisg
ICAgICAgICAgICBpZiB7ZXJyb3JfZHVyaW5nX2ltcG9ydH06CisgICAgICAgICAgICAgICAgdGVz
dF9hKCkKKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBlcnJvcl9kdXJpbmdf
aW1wb3J0PXJlcG9ydF9jbGFzcyBpcyBDb2xsZWN0UmVwb3J0CisgICAgICAgICAgICApCisgICAg
ICAgICkKKworICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgICAgICBp
ZiByZXBvcnRfY2xhc3MgaXMgVGVzdFJlcG9ydDoKKyAgICAgICAgICAgIHJlcG9ydHMgPSByZXBy
ZWMuZ2V0cmVwb3J0cygKKyAgICAgICAgICAgICAgICAicHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0
IgorICAgICAgICAgICAgKSAgIyB0eXBlOiBVbmlvbltTZXF1ZW5jZVtUZXN0UmVwb3J0XSwgU2Vx
dWVuY2VbQ29sbGVjdFJlcG9ydF1dCisgICAgICAgICAgICAjIHdlIGhhdmUgMyByZXBvcnRzOiBz
ZXR1cC9jYWxsL3RlYXJkb3duCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDMK
KyAgICAgICAgICAgICMgZ2V0IHRoZSBjYWxsIHJlcG9ydAorICAgICAgICAgICAgcmVwb3J0ID0g
cmVwb3J0c1sxXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IHJlcG9ydF9jbGFz
cyBpcyBDb2xsZWN0UmVwb3J0CisgICAgICAgICAgICAjIHR3byBjb2xsZWN0aW9uIHJlcG9ydHM6
IHNlc3Npb24gYW5kIHRlc3QgZmlsZQorICAgICAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRy
ZXBvcnRzKCJweXRlc3RfY29sbGVjdHJlcG9ydCIpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJl
cG9ydHMpID09IDIKKyAgICAgICAgICAgIHJlcG9ydCA9IHJlcG9ydHNbMV0KKworICAgICAgICBk
ZWYgY2hlY2tfbG9uZ3JlcHIobG9uZ3JlcHI6IEV4Y2VwdGlvbkNoYWluUmVwcikgLT4gTm9uZToK
KyAgICAgICAgICAgICIiIkNoZWNrIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBnaXZlbiBsb25ncmVw
ciBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSB0ZXN0IGZpbGUuCisKKyAgICAgICAgICAgIFdlIGNh
biBnZXQgYXdheSB3aXRoIHRlc3RpbmcgYm90aCBDb2xsZWN0UmVwb3J0IGFuZCBUZXN0UmVwb3J0
IHdpdGggdGhpcyBmdW5jdGlvbiBiZWNhdXNlCisgICAgICAgICAgICB0aGUgbG9uZ3JlcHIgb2Jq
ZWN0cyBhcmUgdmVyeSBzaW1pbGFyLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShsb25ncmVwciwgRXhjZXB0aW9uQ2hhaW5SZXByKQorICAgICAgICAgICAg
YXNzZXJ0IGxvbmdyZXByLnNlY3Rpb25zID09IFsoInRpdGxlIiwgImNvbnRlbnRzIiwgIj0iKV0K
KyAgICAgICAgICAgIGFzc2VydCBsZW4obG9uZ3JlcHIuY2hhaW4pID09IDIKKyAgICAgICAgICAg
IGVudHJ5MSwgZW50cnkyID0gbG9uZ3JlcHIuY2hhaW4KKyAgICAgICAgICAgIHRiMSwgZmlsZWxv
YzEsIGRlc2MxID0gZW50cnkxCisgICAgICAgICAgICB0YjIsIGZpbGVsb2MyLCBkZXNjMiA9IGVu
dHJ5MgorCisgICAgICAgICAgICBhc3NlcnQgIlZhbHVlRXJyb3IoJ3ZhbHVlIGVycm9yJykiIGlu
IHN0cih0YjEpCisgICAgICAgICAgICBhc3NlcnQgIlJ1bnRpbWVFcnJvcigncnVudGltZSBlcnJv
cicpIiBpbiBzdHIodGIyKQorCisgICAgICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgICAg
IGRlc2MxCisgICAgICAgICAgICAgICAgPT0gIlRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBk
aXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246IgorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgYXNzZXJ0IGRlc2MyIGlzIE5vbmUKKworICAgICAgICBhc3NlcnQgcmVwb3J0
LmZhaWxlZAorICAgICAgICBhc3NlcnQgbGVuKHJlcG9ydC5zZWN0aW9ucykgPT0gMAorICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShyZXBvcnQubG9uZ3JlcHIsIEV4Y2VwdGlvbkNoYWluUmVwcikK
KyAgICAgICAgcmVwb3J0LmxvbmdyZXByLmFkZHNlY3Rpb24oInRpdGxlIiwgImNvbnRlbnRzIiwg
Ij0iKQorICAgICAgICBjaGVja19sb25ncmVwcihyZXBvcnQubG9uZ3JlcHIpCisKKyAgICAgICAg
ZGF0YSA9IHJlcG9ydC5fdG9fanNvbigpCisgICAgICAgIGxvYWRlZF9yZXBvcnQgPSByZXBvcnRf
Y2xhc3MuX2Zyb21fanNvbihkYXRhKQorCisgICAgICAgIGFzc2VydCBsb2FkZWRfcmVwb3J0LmZh
aWxlZAorICAgICAgICBjaGVja19sb25ncmVwcihsb2FkZWRfcmVwb3J0LmxvbmdyZXByKQorCisg
ICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IGJsb3cgdXAgb24gYGB0b3Rlcm1pbmFsYGAgY2Fs
bDsgd2UgZG9uJ3QgdGVzdCB0aGUgYWN0dWFsIG91dHB1dCBiZWNhdXNlIGl0IGlzIHZlcnkKKyAg
ICAgICAgIyBicml0dGxlIGFuZCBoYXJkIHRvIG1haW50YWluLCBidXQgd2UgY2FuIGFzc3VtZSBp
dCBpcyBjb3JyZWN0IGJlY2F1c2UgYGB0b3Rlcm1pbmFsYGAgaXMgYWxyZWFkeSB0ZXN0ZWQKKyAg
ICAgICAgIyBlbHNld2hlcmUgYW5kIHdlIGRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiB0aGUgbG9u
Z3JlcHIgb2JqZWN0IGFmdGVyIGxvYWRpbmcgaXQuCisgICAgICAgIGxvYWRlZF9yZXBvcnQubG9u
Z3JlcHIudG90ZXJtaW5hbCh0d19tb2NrKQorCisgICAgZGVmIHRlc3RfY2hhaW5lZF9leGNlcHRp
b25zX25vX3JlcHJjcmFzaChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCB0d19tb2NrKSAtPiBOb25l
OgorICAgICAgICAiIiJSZWdyZXNzaW9uIHRlc3QgZm9yIHRyYWNlYmFja3Mgd2l0aG91dCBhIHJl
cHJjcmFzaCAoIzU5NzEpCisKKyAgICAgICAgVGhpcyBoYXBwZW5zIG5vdGFibHkgb24gZXhjZXB0
aW9ucyByYWlzZWQgYnkgbXVsdGlwcm9jZXNzLnBvb2w6IHRoZSBleGNlcHRpb24gdHJhbnNmZXIK
KyAgICAgICAgZnJvbSBzdWJwcm9jZXNzIHRvIG1haW4gcHJvY2VzcyBjcmVhdGVzIGFuIGFydGlm
aWNpYWwgZXhjZXB0aW9uLCB3aGljaCBFeGNlcHRpb25JbmZvCisgICAgICAgIGNhbid0IG9idGFp
biB0aGUgUmVwckZpbGVMb2NhdGlvbiBmcm9tLgorICAgICAgICAiIiIKKyAgICAgICAgIyBzb21l
aG93IGluIFB5dGhvbiAzLjUgb24gV2luZG93cyB0aGlzIHRlc3QgZmFpbHMgd2l0aDoKKyAgICAg
ICAgIyAgIEZpbGUgImM6XC4uLlwzLjUuNFx4NjRcTGliXG11bHRpcHJvY2Vzc2luZ1xjb25uZWN0
aW9uLnB5IiwgbGluZSAzMDIsIGluIF9yZWN2X2J5dGVzCisgICAgICAgICMgICAgIG92ZXJsYXBw
ZWQ9VHJ1ZSkKKyAgICAgICAgIyBPU0Vycm9yOiBbV2luRXJyb3IgNl0gVGhlIGhhbmRsZSBpcyBp
bnZhbGlkCisgICAgICAgICMKKyAgICAgICAgIyBzbyBpbiB0aGlzIHBsYXRmb3JtIHdlIG9wdGVk
IHRvIHVzZSBhIG1vY2sgdHJhY2ViYWNrIHdoaWNoIGlzIGlkZW50aWNhbCB0byB0aGUKKyAgICAg
ICAgIyBvbmUgcHJvZHVjZWQgYnkgdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKKyAgICAgICAg
aWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPD0gKDMsIDUpIGFuZCBzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgid2luIik6CisgICAgICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICAgICAgIyBlcXVpdmFsZW50IG9mIG11bHRpcHJvY2Vzc2lu
Zy5wb29sLlJlbW90ZVRyYWNlYmFjaworICAgICAgICAgICAgICAgIGNsYXNzIFJlbW90ZVRyYWNl
YmFjayhFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
dGIpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YiA9IHRiCisgICAgICAgICAgICAg
ICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYudGIKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9hKCk6CisgICAgICAgICAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVl
IGVycm9yJykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICMgZXF1aXZhbGVudCB0byBob3cgbXVsdGlwcm9jZXNzaW5n
LnBvb2wucmVidWlsZF9leGMgZG9lcyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgZS5fX2Nh
dXNlX18gPSBSZW1vdGVUcmFjZWJhY2soJ3J1bnRpbWUgZXJyb3InKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgZQorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAgICAg
IiIiCisgICAgICAgICAgICAgICAgZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMgaW1wb3J0IFByb2Nl
c3NQb29sRXhlY3V0b3IKKworICAgICAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlIGVycm9yJykKKworICAgICAgICAgICAg
ICAgIGRlZiB0ZXN0X2EoKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBQcm9jZXNzUG9vbEV4
ZWN1dG9yKCkgYXMgcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHAuc3VibWl0KGZ1bmMpLnJl
c3VsdCgpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICkKKworICAgICAgICB0ZXN0ZGly
LnN5c3BhdGhpbnNlcnQoKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQor
CisgICAgICAgIHJlcG9ydHMgPSByZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X3J1bnRlc3RfbG9n
cmVwb3J0IikKKworICAgICAgICBkZWYgY2hlY2tfbG9uZ3JlcHIobG9uZ3JlcHI6IG9iamVjdCkg
LT4gTm9uZToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxvbmdyZXByLCBFeGNlcHRp
b25DaGFpblJlcHIpCisgICAgICAgICAgICBhc3NlcnQgbGVuKGxvbmdyZXByLmNoYWluKSA9PSAy
CisgICAgICAgICAgICBlbnRyeTEsIGVudHJ5MiA9IGxvbmdyZXByLmNoYWluCisgICAgICAgICAg
ICB0YjEsIGZpbGVsb2MxLCBkZXNjMSA9IGVudHJ5MQorICAgICAgICAgICAgdGIyLCBmaWxlbG9j
MiwgZGVzYzIgPSBlbnRyeTIKKworICAgICAgICAgICAgYXNzZXJ0ICJSZW1vdGVUcmFjZWJhY2si
IGluIHN0cih0YjEpCisgICAgICAgICAgICBhc3NlcnQgIlZhbHVlRXJyb3I6IHZhbHVlIGVycm9y
IiBpbiBzdHIodGIyKQorCisgICAgICAgICAgICBhc3NlcnQgZmlsZWxvYzEgaXMgTm9uZQorICAg
ICAgICAgICAgYXNzZXJ0IGZpbGVsb2MyIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhc3NlcnQg
ZmlsZWxvYzIubWVzc2FnZSA9PSAiVmFsdWVFcnJvcjogdmFsdWUgZXJyb3IiCisKKyAgICAgICAg
IyAzIHJlcG9ydHM6IHNldHVwL2NhbGwvdGVhcmRvd246IGdldCB0aGUgY2FsbCByZXBvcnQKKyAg
ICAgICAgYXNzZXJ0IGxlbihyZXBvcnRzKSA9PSAzCisgICAgICAgIHJlcG9ydCA9IHJlcG9ydHNb
MV0KKworICAgICAgICBhc3NlcnQgcmVwb3J0LmZhaWxlZAorICAgICAgICBjaGVja19sb25ncmVw
cihyZXBvcnQubG9uZ3JlcHIpCisKKyAgICAgICAgZGF0YSA9IHJlcG9ydC5fdG9fanNvbigpCisg
ICAgICAgIGxvYWRlZF9yZXBvcnQgPSBUZXN0UmVwb3J0Ll9mcm9tX2pzb24oZGF0YSkKKworICAg
ICAgICBhc3NlcnQgbG9hZGVkX3JlcG9ydC5mYWlsZWQKKyAgICAgICAgY2hlY2tfbG9uZ3JlcHIo
bG9hZGVkX3JlcG9ydC5sb25ncmVwcikKKworICAgICAgICAjIGZvciBzYW1lIHJlYXNvbnMgYXMg
cHJldmlvdXMgdGVzdCwgZW5zdXJlIHdlIGRvbid0IGJsb3cgdXAgaGVyZQorICAgICAgICBhc3Nl
cnQgbG9hZGVkX3JlcG9ydC5sb25ncmVwciBpcyBub3QgTm9uZQorICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShsb2FkZWRfcmVwb3J0LmxvbmdyZXByLCBFeGNlcHRpb25DaGFpblJlcHIpCisgICAg
ICAgIGxvYWRlZF9yZXBvcnQubG9uZ3JlcHIudG90ZXJtaW5hbCh0d19tb2NrKQorCisgICAgZGVm
IHRlc3RfcmVwb3J0X3ByZXZlbnRfQ29uZnRlc3RJbXBvcnRGYWlsdXJlX2hpZGluZ19leGNlcHRp
b24oCisgICAgICAgIHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIHN1Yl9kaXIgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJucyIpLmVuc3VyZV9kaXIoKQorICAg
ICAgICBzdWJfZGlyLmpvaW4oImNvbmZ0ZXN0IikubmV3KGV4dD0iLnB5Iikud3JpdGUoImltcG9y
dCB1bmtub3duIikKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9j
ZXNzKCIuIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiRSAgICpFcnJv
cjogTm8gbW9kdWxlIG5hbWVkICd1bmtub3duJyJdKQorICAgICAgICByZXN1bHQuc3Rkb3V0Lm5v
X2ZubWF0Y2hfbGluZSgiRVJST1IgIC0gKkNvbmZ0ZXN0SW1wb3J0RmFpbHVyZSoiKQorCisKK2Ns
YXNzIFRlc3RIb29rczoKKyAgICAiIiJUZXN0IHRoYXQgdGhlIGhvb2tzIGFyZSB3b3JraW5nIGNv
cnJlY3RseSBmb3IgcGx1Z2lucyIiIgorCisgICAgZGVmIHRlc3RfdGVzdF9yZXBvcnQoc2VsZiwg
dGVzdGRpcjogVGVzdGRpciwgcHl0ZXN0Y29uZmlnOiBDb25maWcpIC0+IE5vbmU6CisgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRl
c3RfYSgpOiBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGRlZiB0ZXN0X2IoKTogcGFzcworICAg
ICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4o
KQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9ydW50ZXN0X2xv
Z3JlcG9ydCIpCisgICAgICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gNgorICAgICAgICBmb3Ig
cmVwIGluIHJlcG9ydHM6CisgICAgICAgICAgICBkYXRhID0gcHl0ZXN0Y29uZmlnLmhvb2sucHl0
ZXN0X3JlcG9ydF90b19zZXJpYWxpemFibGUoCisgICAgICAgICAgICAgICAgY29uZmlnPXB5dGVz
dGNvbmZpZywgcmVwb3J0PXJlcAorICAgICAgICAgICAgKQorICAgICAgICAgICAgYXNzZXJ0IGRh
dGFbIiRyZXBvcnRfdHlwZSJdID09ICJUZXN0UmVwb3J0IgorICAgICAgICAgICAgbmV3X3JlcCA9
IHB5dGVzdGNvbmZpZy5ob29rLnB5dGVzdF9yZXBvcnRfZnJvbV9zZXJpYWxpemFibGUoCisgICAg
ICAgICAgICAgICAgY29uZmlnPXB5dGVzdGNvbmZpZywgZGF0YT1kYXRhCisgICAgICAgICAgICAp
CisgICAgICAgICAgICBhc3NlcnQgbmV3X3JlcC5ub2RlaWQgPT0gcmVwLm5vZGVpZAorICAgICAg
ICAgICAgYXNzZXJ0IG5ld19yZXAud2hlbiA9PSByZXAud2hlbgorICAgICAgICAgICAgYXNzZXJ0
IG5ld19yZXAub3V0Y29tZSA9PSByZXAub3V0Y29tZQorCisgICAgZGVmIHRlc3RfY29sbGVjdF9y
ZXBvcnQoc2VsZiwgdGVzdGRpcjogVGVzdGRpciwgcHl0ZXN0Y29uZmlnOiBDb25maWcpIC0+IE5v
bmU6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgZGVmIHRlc3RfYSgpOiBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Io
KTogcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW4oKQorICAgICAgICByZXBvcnRzID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVz
dF9jb2xsZWN0cmVwb3J0IikKKyAgICAgICAgYXNzZXJ0IGxlbihyZXBvcnRzKSA9PSAyCisgICAg
ICAgIGZvciByZXAgaW4gcmVwb3J0czoKKyAgICAgICAgICAgIGRhdGEgPSBweXRlc3Rjb25maWcu
aG9vay5weXRlc3RfcmVwb3J0X3RvX3NlcmlhbGl6YWJsZSgKKyAgICAgICAgICAgICAgICBjb25m
aWc9cHl0ZXN0Y29uZmlnLCByZXBvcnQ9cmVwCisgICAgICAgICAgICApCisgICAgICAgICAgICBh
c3NlcnQgZGF0YVsiJHJlcG9ydF90eXBlIl0gPT0gIkNvbGxlY3RSZXBvcnQiCisgICAgICAgICAg
ICBuZXdfcmVwID0gcHl0ZXN0Y29uZmlnLmhvb2sucHl0ZXN0X3JlcG9ydF9mcm9tX3NlcmlhbGl6
YWJsZSgKKyAgICAgICAgICAgICAgICBjb25maWc9cHl0ZXN0Y29uZmlnLCBkYXRhPWRhdGEKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIGFzc2VydCBuZXdfcmVwLm5vZGVpZCA9PSByZXAubm9k
ZWlkCisgICAgICAgICAgICBhc3NlcnQgbmV3X3JlcC53aGVuID09ICJjb2xsZWN0IgorICAgICAg
ICAgICAgYXNzZXJ0IG5ld19yZXAub3V0Y29tZSA9PSByZXAub3V0Y29tZQorCisgICAgQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAiaG9va19uYW1lIiwgWyJweXRlc3RfcnVudGVz
dF9sb2dyZXBvcnQiLCAicHl0ZXN0X2NvbGxlY3RyZXBvcnQiXQorICAgICkKKyAgICBkZWYgdGVz
dF9pbnZhbGlkX3JlcG9ydF90eXBlcygKKyAgICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpciwg
cHl0ZXN0Y29uZmlnOiBDb25maWcsIGhvb2tfbmFtZTogc3RyCisgICAgKSAtPiBOb25lOgorICAg
ICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X2EoKTogcGFzcworICAgICAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVw
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAgcmVwb3J0cyA9IHJlcHJlYy5nZXRy
ZXBvcnRzKGhvb2tfbmFtZSkKKyAgICAgICAgYXNzZXJ0IHJlcG9ydHMKKyAgICAgICAgcmVwID0g
cmVwb3J0c1swXQorICAgICAgICBkYXRhID0gcHl0ZXN0Y29uZmlnLmhvb2sucHl0ZXN0X3JlcG9y
dF90b19zZXJpYWxpemFibGUoCisgICAgICAgICAgICBjb25maWc9cHl0ZXN0Y29uZmlnLCByZXBv
cnQ9cmVwCisgICAgICAgICkKKyAgICAgICAgZGF0YVsiJHJlcG9ydF90eXBlIl0gPSAiVW5rbm93
biIKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAg
ICAgIF8gPSBweXRlc3Rjb25maWcuaG9vay5weXRlc3RfcmVwb3J0X2Zyb21fc2VyaWFsaXphYmxl
KAorICAgICAgICAgICAgICAgIGNvbmZpZz1weXRlc3Rjb25maWcsIGRhdGE9ZGF0YQorICAgICAg
ICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Jlc3VsdGxvZy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9yZXN1bHRsb2cucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE3MzM4NGZmYjMwYi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9yZXN1bHRsb2cucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAs
MCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBw
cmludF9mdW5jdGlvbgotaW1wb3J0IG9zCi0KLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCi1pbXBvcnQg
cHkKLWltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdC5ub2RlcyBpbXBvcnQgTm9kZSwgSXRlbSwg
RlNDb2xsZWN0b3IKLWZyb20gX3B5dGVzdC5yZXN1bHRsb2cgaW1wb3J0ICgKLSAgICBnZW5lcmlj
X3BhdGgsCi0gICAgUmVzdWx0TG9nLAotICAgIHB5dGVzdF9jb25maWd1cmUsCi0gICAgcHl0ZXN0
X3VuY29uZmlndXJlLAotKQotCi0KLWRlZiB0ZXN0X2dlbmVyaWNfcGF0aCh0ZXN0ZGlyKToKLSAg
ICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgU2Vzc2lvbgotCi0gICAgY29uZmlnID0gdGVzdGRp
ci5wYXJzZWNvbmZpZygpCi0gICAgc2Vzc2lvbiA9IFNlc3Npb24oY29uZmlnKQotICAgIHAxID0g
Tm9kZSgiYSIsIGNvbmZpZz1jb25maWcsIHNlc3Npb249c2Vzc2lvbiwgbm9kZWlkPSJhIikKLSAg
ICAjIGFzc2VydCBwMS5mc3BhdGggaXMgTm9uZQotICAgIHAyID0gTm9kZSgiQiIsIHBhcmVudD1w
MSkKLSAgICBwMyA9IE5vZGUoIigpIiwgcGFyZW50PXAyKQotICAgIGl0ZW0gPSBJdGVtKCJjIiwg
cGFyZW50PXAzKQotCi0gICAgcmVzID0gZ2VuZXJpY19wYXRoKGl0ZW0pCi0gICAgYXNzZXJ0IHJl
cyA9PSAiYS5CKCkuYyIKLQotICAgIHAwID0gRlNDb2xsZWN0b3IoInByb2ovdGVzdCIsIGNvbmZp
Zz1jb25maWcsIHNlc3Npb249c2Vzc2lvbikKLSAgICBwMSA9IEZTQ29sbGVjdG9yKCJwcm9qL3Rl
c3QvYSIsIHBhcmVudD1wMCkKLSAgICBwMiA9IE5vZGUoIkIiLCBwYXJlbnQ9cDEpCi0gICAgcDMg
PSBOb2RlKCIoKSIsIHBhcmVudD1wMikKLSAgICBwNCA9IE5vZGUoImMiLCBwYXJlbnQ9cDMpCi0g
ICAgaXRlbSA9IEl0ZW0oIlsxXSIsIHBhcmVudD1wNCkKLQotICAgIHJlcyA9IGdlbmVyaWNfcGF0
aChpdGVtKQotICAgIGFzc2VydCByZXMgPT0gInRlc3QvYTpCKCkuY1sxXSIKLQotCi1kZWYgdGVz
dF93cml0ZV9sb2dfZW50cnkoKToKLSAgICByZXNsb2cgPSBSZXN1bHRMb2coTm9uZSwgTm9uZSkK
LSAgICByZXNsb2cubG9nZmlsZSA9IHB5LmlvLlRleHRJTygpCi0gICAgcmVzbG9nLndyaXRlX2xv
Z19lbnRyeSgibmFtZSIsICIuIiwgIiIpCi0gICAgZW50cnkgPSByZXNsb2cubG9nZmlsZS5nZXR2
YWx1ZSgpCi0gICAgYXNzZXJ0IGVudHJ5Wy0xXSA9PSAiXG4iCi0gICAgZW50cnlfbGluZXMgPSBl
bnRyeS5zcGxpdGxpbmVzKCkKLSAgICBhc3NlcnQgbGVuKGVudHJ5X2xpbmVzKSA9PSAxCi0gICAg
YXNzZXJ0IGVudHJ5X2xpbmVzWzBdID09ICIuIG5hbWUiCi0KLSAgICByZXNsb2cubG9nZmlsZSA9
IHB5LmlvLlRleHRJTygpCi0gICAgcmVzbG9nLndyaXRlX2xvZ19lbnRyeSgibmFtZSIsICJzIiwg
IlNraXBwZWQiKQotICAgIGVudHJ5ID0gcmVzbG9nLmxvZ2ZpbGUuZ2V0dmFsdWUoKQotICAgIGFz
c2VydCBlbnRyeVstMV0gPT0gIlxuIgotICAgIGVudHJ5X2xpbmVzID0gZW50cnkuc3BsaXRsaW5l
cygpCi0gICAgYXNzZXJ0IGxlbihlbnRyeV9saW5lcykgPT0gMgotICAgIGFzc2VydCBlbnRyeV9s
aW5lc1swXSA9PSAicyBuYW1lIgotICAgIGFzc2VydCBlbnRyeV9saW5lc1sxXSA9PSAiIFNraXBw
ZWQiCi0KLSAgICByZXNsb2cubG9nZmlsZSA9IHB5LmlvLlRleHRJTygpCi0gICAgcmVzbG9nLndy
aXRlX2xvZ19lbnRyeSgibmFtZSIsICJzIiwgIlNraXBwZWRcbiIpCi0gICAgZW50cnkgPSByZXNs
b2cubG9nZmlsZS5nZXR2YWx1ZSgpCi0gICAgYXNzZXJ0IGVudHJ5Wy0xXSA9PSAiXG4iCi0gICAg
ZW50cnlfbGluZXMgPSBlbnRyeS5zcGxpdGxpbmVzKCkKLSAgICBhc3NlcnQgbGVuKGVudHJ5X2xp
bmVzKSA9PSAyCi0gICAgYXNzZXJ0IGVudHJ5X2xpbmVzWzBdID09ICJzIG5hbWUiCi0gICAgYXNz
ZXJ0IGVudHJ5X2xpbmVzWzFdID09ICIgU2tpcHBlZCIKLQotICAgIHJlc2xvZy5sb2dmaWxlID0g
cHkuaW8uVGV4dElPKCkKLSAgICBsb25ncmVwciA9ICIgdGIxXG4gdGIgMlxuRSB0YjNcblNvbWUg
RXJyb3IiCi0gICAgcmVzbG9nLndyaXRlX2xvZ19lbnRyeSgibmFtZSIsICJGIiwgbG9uZ3JlcHIp
Ci0gICAgZW50cnkgPSByZXNsb2cubG9nZmlsZS5nZXR2YWx1ZSgpCi0gICAgYXNzZXJ0IGVudHJ5
Wy0xXSA9PSAiXG4iCi0gICAgZW50cnlfbGluZXMgPSBlbnRyeS5zcGxpdGxpbmVzKCkKLSAgICBh
c3NlcnQgbGVuKGVudHJ5X2xpbmVzKSA9PSA1Ci0gICAgYXNzZXJ0IGVudHJ5X2xpbmVzWzBdID09
ICJGIG5hbWUiCi0gICAgYXNzZXJ0IGVudHJ5X2xpbmVzWzE6XSA9PSBbIiAiICsgbGluZSBmb3Ig
bGluZSBpbiBsb25ncmVwci5zcGxpdGxpbmVzKCldCi0KLQotY2xhc3MgVGVzdFdpdGhGdW5jdGlv
bkludGVncmF0aW9uKG9iamVjdCk6Ci0gICAgIyBYWFggKGhwaykgaSB0aGluayB0aGF0IHRoZSBy
ZXN1bHRsb2cgcGx1Z2luIHNob3VsZAotICAgICMgcHJvdmlkZSBhIFBhcnNlciBvYmplY3Qgc28g
dGhhdCBvbmUgY2FuIHJlbWFpbgotICAgICMgaWdub3JhbnQgcmVnYXJkaW5nIGZvcm1hdHRpbmcg
ZGV0YWlscy4KLSAgICBkZWYgZ2V0cmVzdWx0bG9nKHNlbGYsIHRlc3RkaXIsIGFyZyk6Ci0gICAg
ICAgIHJlc3VsdGxvZyA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInJlc3VsdGxvZyIpCi0gICAgICAg
IHRlc3RkaXIucGx1Z2lucy5hcHBlbmQoInJlc3VsdGxvZyIpCi0gICAgICAgIGFyZ3MgPSBbIi0t
cmVzdWx0bG9nPSVzIiAlIHJlc3VsdGxvZ10gKyBbYXJnXQotICAgICAgICB0ZXN0ZGlyLnJ1bnB5
dGVzdCgqYXJncykKLSAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHJlc3VsdGxvZy5yZWFkbGlu
ZXMoY3I9MCkgaWYgeF0KLQotICAgIGRlZiB0ZXN0X2NvbGxlY3Rpb25fcmVwb3J0KHNlbGYsIHRl
c3RkaXIpOgotICAgICAgICBvayA9IHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X2NvbGxlY3Rpb25f
b2s9IiIpCi0gICAgICAgIGZhaWwgPSB0ZXN0ZGlyLm1ha2VweWZpbGUodGVzdF9jb2xsZWN0aW9u
X2ZhaWw9IlhYWCIpCi0gICAgICAgIGxpbmVzID0gc2VsZi5nZXRyZXN1bHRsb2codGVzdGRpciwg
b2spCi0gICAgICAgIGFzc2VydCBub3QgbGluZXMKLQotICAgICAgICBsaW5lcyA9IHNlbGYuZ2V0
cmVzdWx0bG9nKHRlc3RkaXIsIGZhaWwpCi0gICAgICAgIGFzc2VydCBsaW5lcwotICAgICAgICBh
c3NlcnQgbGluZXNbMF0uc3RhcnRzd2l0aCgiRiAiKQotICAgICAgICBhc3NlcnQgbGluZXNbMF0u
ZW5kc3dpdGgoInRlc3RfY29sbGVjdGlvbl9mYWlsLnB5IiksIGxpbmVzWzBdCi0gICAgICAgIGZv
ciB4IGluIGxpbmVzWzE6XToKLSAgICAgICAgICAgIGFzc2VydCB4LnN0YXJ0c3dpdGgoIiAiKQot
ICAgICAgICBhc3NlcnQgIlhYWCIgaW4gIiIuam9pbihsaW5lc1sxOl0pCi0KLSAgICBkZWYgdGVz
dF9sb2dfdGVzdF9vdXRjb21lcyhzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgbW9kID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAotICAgICAgICAgICAgdGVzdF9tb2Q9IiIiCi0gICAgICAgICAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgICAgICAgICBkZWYgdGVzdF9wYXNzKCk6IHBhc3MKLSAgICAgICAgICAg
IGRlZiB0ZXN0X3NraXAoKTogcHl0ZXN0LnNraXAoImhlbGxvIikKLSAgICAgICAgICAgIGRlZiB0
ZXN0X2ZhaWwoKTogcmFpc2UgVmFsdWVFcnJvcigiRkFJTCIpCi0KLSAgICAgICAgICAgIEBweXRl
c3QubWFyay54ZmFpbAotICAgICAgICAgICAgZGVmIHRlc3RfeGZhaWwoKTogcmFpc2UgVmFsdWVF
cnJvcigiWEZBSUwiKQotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnhmYWlsCi0gICAgICAgICAg
ICBkZWYgdGVzdF94cGFzcygpOiBwYXNzCi0KLSAgICAgICAgIiIiCi0gICAgICAgICkKLSAgICAg
ICAgbGluZXMgPSBzZWxmLmdldHJlc3VsdGxvZyh0ZXN0ZGlyLCBtb2QpCi0gICAgICAgIGFzc2Vy
dCBsZW4obGluZXMpID49IDMKLSAgICAgICAgYXNzZXJ0IGxpbmVzWzBdLnN0YXJ0c3dpdGgoIi4g
IikKLSAgICAgICAgYXNzZXJ0IGxpbmVzWzBdLmVuZHN3aXRoKCJ0ZXN0X3Bhc3MiKQotICAgICAg
ICBhc3NlcnQgbGluZXNbMV0uc3RhcnRzd2l0aCgicyAiKSwgbGluZXNbMV0KLSAgICAgICAgYXNz
ZXJ0IGxpbmVzWzFdLmVuZHN3aXRoKCJ0ZXN0X3NraXAiKQotICAgICAgICBhc3NlcnQgbGluZXNb
Ml0uZmluZCgiaGVsbG8iKSAhPSAtMQotCi0gICAgICAgIGFzc2VydCBsaW5lc1szXS5zdGFydHN3
aXRoKCJGICIpCi0gICAgICAgIGFzc2VydCBsaW5lc1szXS5lbmRzd2l0aCgidGVzdF9mYWlsIikK
LSAgICAgICAgdGIgPSAiIi5qb2luKGxpbmVzWzQ6OF0pCi0gICAgICAgIGFzc2VydCB0Yi5maW5k
KCdyYWlzZSBWYWx1ZUVycm9yKCJGQUlMIiknKSAhPSAtMQotCi0gICAgICAgIGFzc2VydCBsaW5l
c1s4XS5zdGFydHN3aXRoKCJ4ICIpCi0gICAgICAgIHRiID0gIiIuam9pbihsaW5lc1s4OjE0XSkK
LSAgICAgICAgYXNzZXJ0IHRiLmZpbmQoJ3JhaXNlIFZhbHVlRXJyb3IoIlhGQUlMIiknKSAhPSAt
MQotCi0gICAgICAgIGFzc2VydCBsaW5lc1sxNF0uc3RhcnRzd2l0aCgiWCAiKQotICAgICAgICBh
c3NlcnQgbGVuKGxpbmVzKSA9PSAxNQotCi0gICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJz
dHlsZSIsICgibmF0aXZlIiwgImxvbmciLCAic2hvcnQiKSkKLSAgICBkZWYgdGVzdF9pbnRlcm5h
bF9leGNlcHRpb24oc2VsZiwgc3R5bGUpOgotICAgICAgICAjIHRoZXkgYXJlIHByb2R1Y2VkIGZv
ciBleGFtcGxlIGJ5IGEgdGVhcmRvd24gZmFpbGluZwotICAgICAgICAjIGF0IHRoZSBlbmQgb2Yg
dGhlIHJ1biBvciBhIGZhaWxpbmcgaG9vayBpbnZvY2F0aW9uCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAg
ICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKCkKLSAgICAgICAg
cmVzbG9nID0gUmVzdWx0TG9nKE5vbmUsIHB5LmlvLlRleHRJTygpKQotICAgICAgICByZXNsb2cu
cHl0ZXN0X2ludGVybmFsZXJyb3IoZXhjaW5mby5nZXRyZXByKHN0eWxlPXN0eWxlKSkKLSAgICAg
ICAgZW50cnkgPSByZXNsb2cubG9nZmlsZS5nZXR2YWx1ZSgpCi0gICAgICAgIGVudHJ5X2xpbmVz
ID0gZW50cnkuc3BsaXRsaW5lcygpCi0KLSAgICAgICAgYXNzZXJ0IGVudHJ5X2xpbmVzWzBdLnN0
YXJ0c3dpdGgoIiEgIikKLSAgICAgICAgaWYgc3R5bGUgIT0gIm5hdGl2ZSI6Ci0gICAgICAgICAg
ICBhc3NlcnQgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXylbOi05XSBpbiBlbnRyeV9saW5lc1sw
XSAgIyAucHljL2NsYXNzCi0gICAgICAgIGFzc2VydCBlbnRyeV9saW5lc1stMV1bMF0gPT0gIiAi
Ci0gICAgICAgIGFzc2VydCAiVmFsdWVFcnJvciIgaW4gZW50cnkKLQotCi1kZWYgdGVzdF9nZW5l
cmljKHRlc3RkaXIsIExpbmVNYXRjaGVyKToKLSAgICB0ZXN0ZGlyLnBsdWdpbnMuYXBwZW5kKCJy
ZXN1bHRsb2ciKQotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAg
IGltcG9ydCBweXRlc3QKLSAgICAgICAgZGVmIHRlc3RfcGFzcygpOgotICAgICAgICAgICAgcGFz
cwotICAgICAgICBkZWYgdGVzdF9mYWlsKCk6Ci0gICAgICAgICAgICBhc3NlcnQgMAotICAgICAg
ICBkZWYgdGVzdF9za2lwKCk6Ci0gICAgICAgICAgICBweXRlc3Quc2tpcCgiIikKLSAgICAgICAg
QHB5dGVzdC5tYXJrLnhmYWlsCi0gICAgICAgIGRlZiB0ZXN0X3hmYWlsKCk6Ci0gICAgICAgICAg
ICBhc3NlcnQgMAotICAgICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwocnVuPUZhbHNlKQotICAgICAg
ICBkZWYgdGVzdF94ZmFpbF9ub3J1bigpOgotICAgICAgICAgICAgYXNzZXJ0IDAKLSAgICAiIiIK
LSAgICApCi0gICAgdGVzdGRpci5ydW5weXRlc3QoIi0tcmVzdWx0bG9nPXJlc3VsdC5sb2ciKQot
ICAgIGxpbmVzID0gdGVzdGRpci50bXBkaXIuam9pbigicmVzdWx0LmxvZyIpLnJlYWRsaW5lcyhj
cj0wKQotICAgIExpbmVNYXRjaGVyKGxpbmVzKS5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbCi0g
ICAgICAgICAgICAiLiAqOnRlc3RfcGFzcyIsCi0gICAgICAgICAgICAiRiAqOnRlc3RfZmFpbCIs
Ci0gICAgICAgICAgICAicyAqOnRlc3Rfc2tpcCIsCi0gICAgICAgICAgICAieCAqOnRlc3RfeGZh
aWwiLAotICAgICAgICAgICAgInggKjp0ZXN0X3hmYWlsX25vcnVuIiwKLSAgICAgICAgXQotICAg
ICkKLQotCi1kZWYgdGVzdF9tYWtlZGlyX2Zvcl9yZXN1bHRsb2codGVzdGRpciwgTGluZU1hdGNo
ZXIpOgotICAgICIiIi0tcmVzdWx0bG9nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBkaXJl
Y3RvcmllcyBmb3IgdGhlIGxvZyBmaWxlIiIiCi0gICAgdGVzdGRpci5wbHVnaW5zLmFwcGVuZCgi
cmVzdWx0bG9nIikKLSAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAg
ICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgIGRlZiB0ZXN0X3Bhc3MoKToKLSAgICAgICAgICAgIHBh
c3MKLSAgICAiIiIKLSAgICApCi0gICAgdGVzdGRpci5ydW5weXRlc3QoIi0tcmVzdWx0bG9nPXBh
dGgvdG8vcmVzdWx0LmxvZyIpCi0gICAgbGluZXMgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJwYXRo
L3RvL3Jlc3VsdC5sb2ciKS5yZWFkbGluZXMoY3I9MCkKLSAgICBMaW5lTWF0Y2hlcihsaW5lcyku
Zm5tYXRjaF9saW5lcyhbIi4gKjp0ZXN0X3Bhc3MiXSkKLQotCi1kZWYgdGVzdF9ub19yZXN1bHRs
b2dfb25fc2xhdmVzKHRlc3RkaXIpOgotICAgIGNvbmZpZyA9IHRlc3RkaXIucGFyc2Vjb25maWco
Ii1wIiwgInJlc3VsdGxvZyIsICItLXJlc3VsdGxvZz1yZXN1bHRsb2ciKQotCi0gICAgYXNzZXJ0
IG5vdCBoYXNhdHRyKGNvbmZpZywgIl9yZXN1bHRsb2ciKQotICAgIHB5dGVzdF9jb25maWd1cmUo
Y29uZmlnKQotICAgIGFzc2VydCBoYXNhdHRyKGNvbmZpZywgIl9yZXN1bHRsb2ciKQotICAgIHB5
dGVzdF91bmNvbmZpZ3VyZShjb25maWcpCi0gICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGNvbmZpZywg
Il9yZXN1bHRsb2ciKQotCi0gICAgY29uZmlnLnNsYXZlaW5wdXQgPSB7fQotICAgIHB5dGVzdF9j
b25maWd1cmUoY29uZmlnKQotICAgIGFzc2VydCBub3QgaGFzYXR0cihjb25maWcsICJfcmVzdWx0
bG9nIikKLSAgICBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKQotICAgIGFzc2VydCBub3QgaGFz
YXR0cihjb25maWcsICJfcmVzdWx0bG9nIikKLQotCi1kZWYgdGVzdF9mYWlsdXJlX2lzc3VlMzgw
KHRlc3RkaXIpOgotICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAiIiIKLSAgICAg
ICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBjbGFzcyBNeUNvbGxlY3RvcihweXRlc3QuRmlsZSk6
Ci0gICAgICAgICAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCkKLSAgICAgICAgICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJzb21lc3RyaW5nIgotICAgICAgICBkZWYgcHl0ZXN0
X2NvbGxlY3RfZmlsZShwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgcmV0dXJuIE15Q29sbGVj
dG9yKHBhcmVudD1wYXJlbnQsIGZzcGF0aD1wYXRoKQotICAgICIiIgotICAgICkKLSAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICIiIgotICAgICAgICBkZWYgdGVzdF9mdW5jKCk6Ci0g
ICAgICAgICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KCItLXJlc3VsdGxvZz1sb2ciKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IDIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3Rlc3RfcnVubmVyLnB5CmluZGV4IGY1NDMwYTkwZGE1My4uYjlkMjIzNzBhN2I4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcnVubmVyLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXIucHkKQEAgLTEsMTkgKzEsMjggQEAKLSMgLSot
IGNvZGluZzogdXRmLTggLSotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBfcHl0ZXN0Ll9jb2RlCiBpbXBv
cnQgaW5zcGVjdAogaW1wb3J0IG9zCi1pbXBvcnQgcHkKLWltcG9ydCBweXRlc3QKIGltcG9ydCBz
eXMKIGltcG9ydCB0eXBlcwotZnJvbSBfcHl0ZXN0IGltcG9ydCBydW5uZXIsIG1haW4sIG91dGNv
bWVzCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zy
b20gdHlwaW5nIGltcG9ydCBUdXBsZQogCitpbXBvcnQgcHkKKworaW1wb3J0IF9weXRlc3QuX2Nv
ZGUKK2ltcG9ydCBweXRlc3QKK2Zyb20gX3B5dGVzdCBpbXBvcnQgb3V0Y29tZXMKK2Zyb20gX3B5
dGVzdCBpbXBvcnQgcmVwb3J0cworZnJvbSBfcHl0ZXN0IGltcG9ydCBydW5uZXIKK2Zyb20gX3B5
dGVzdC5jb21wYXQgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1w
b3J0IEV4aXRDb2RlCitmcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IE91dGNvbWVFeGNlcHRp
b24KIAotY2xhc3MgVGVzdFNldHVwU3RhdGUob2JqZWN0KToKK2lmIFRZUEVfQ0hFQ0tJTkc6Cisg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKIAotICAgIGRlZiB0ZXN0X3NldHVwKHNlbGYsIHRl
c3RkaXIpOgorCitjbGFzcyBUZXN0U2V0dXBTdGF0ZToKKyAgICBkZWYgdGVzdF9zZXR1cChzZWxm
LCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICBzcyA9IHJ1bm5lci5TZXR1cFN0YXRlKCkKICAg
ICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgiZGVmIHRlc3RfZnVuYygpOiBwYXNzIikKICAg
ICAgICAgdmFsdWVzID0gWzFdCkBAIC0yMywxNCArMzIsMTQgQEAgY2xhc3MgVGVzdFNldHVwU3Rh
dGUob2JqZWN0KToKICAgICAgICAgc3MuX3BvcF9hbmRfdGVhcmRvd24oKQogICAgICAgICBhc3Nl
cnQgbm90IHZhbHVlcwogCi0gICAgZGVmIHRlc3RfdGVhcmRvd25fZXhhY3Rfc3RhY2tfZW1wdHko
c2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfdGVhcmRvd25fZXhhY3Rfc3RhY2tfZW1wdHko
c2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgi
ZGVmIHRlc3RfZnVuYygpOiBwYXNzIikKICAgICAgICAgc3MgPSBydW5uZXIuU2V0dXBTdGF0ZSgp
CiAgICAgICAgIHNzLnRlYXJkb3duX2V4YWN0KGl0ZW0sIE5vbmUpCiAgICAgICAgIHNzLnRlYXJk
b3duX2V4YWN0KGl0ZW0sIE5vbmUpCiAgICAgICAgIHNzLnRlYXJkb3duX2V4YWN0KGl0ZW0sIE5v
bmUpCiAKLSAgICBkZWYgdGVzdF9zZXR1cF9mYWlsc19hbmRfZmFpbHVyZV9pc19jYWNoZWQoc2Vs
ZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfc2V0dXBfZmFpbHNfYW5kX2ZhaWx1cmVfaXNfY2Fj
aGVkKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0
ZW0oCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiBzZXR1cF9tb2R1bGUobW9kKToK
QEAgLTQyLDcgKzUxLDcgQEAgY2xhc3MgVGVzdFNldHVwU3RhdGUob2JqZWN0KToKICAgICAgICAg
cHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHNzLnByZXBhcmUoaXRlbSkpCiAgICAg
ICAgIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBzcy5wcmVwYXJlKGl0ZW0pKQog
Ci0gICAgZGVmIHRlc3RfdGVhcmRvd25fbXVsdGlwbGVfb25lX2ZhaWxzKHNlbGYsIHRlc3RkaXIp
OgorICAgIGRlZiB0ZXN0X3RlYXJkb3duX211bHRpcGxlX29uZV9mYWlscyhzZWxmLCB0ZXN0ZGly
KSAtPiBOb25lOgogICAgICAgICByID0gW10KIAogICAgICAgICBkZWYgZmluMSgpOgpAQCAtNjQs
NyArNzMsNyBAQCBjbGFzcyBUZXN0U2V0dXBTdGF0ZShvYmplY3QpOgogICAgICAgICBhc3NlcnQg
ZXJyLnZhbHVlLmFyZ3MgPT0gKCJvb3BzIiwpCiAgICAgICAgIGFzc2VydCByID09IFsiZmluMyIs
ICJmaW4xIl0KIAotICAgIGRlZiB0ZXN0X3RlYXJkb3duX211bHRpcGxlX2ZhaWwoc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIHRlc3RfdGVhcmRvd25fbXVsdGlwbGVfZmFpbChzZWxmLCB0ZXN0ZGly
KSAtPiBOb25lOgogICAgICAgICAjIEVuc3VyZSB0aGUgZmlyc3QgZXhjZXB0aW9uIGlzIHRoZSBv
bmUgd2hpY2ggaXMgcmUtcmFpc2VkLgogICAgICAgICAjIElkZWFsbHkgYm90aCB3b3VsZCBiZSBy
ZXBvcnRlZCBob3dldmVyLgogICAgICAgICBkZWYgZmluMSgpOgpAQCAtODEsNyArOTAsNyBAQCBj
bGFzcyBUZXN0U2V0dXBTdGF0ZShvYmplY3QpOgogICAgICAgICAgICAgc3MuX2NhbGxmaW5hbGl6
ZXJzKGl0ZW0pCiAgICAgICAgIGFzc2VydCBlcnIudmFsdWUuYXJncyA9PSAoIm9vcHMyIiwpCiAK
LSAgICBkZWYgdGVzdF90ZWFyZG93bl9tdWx0aXBsZV9zY29wZXNfb25lX2ZhaWxzKHNlbGYsIHRl
c3RkaXIpOgorICAgIGRlZiB0ZXN0X3RlYXJkb3duX211bHRpcGxlX3Njb3Blc19vbmVfZmFpbHMo
c2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgbW9kdWxlX3RlYXJkb3duID0gW10KIAog
ICAgICAgICBkZWYgZmluX2Z1bmMoKToKQEAgLTEwMCw5ICsxMDksOCBAQCBjbGFzcyBUZXN0U2V0
dXBTdGF0ZShvYmplY3QpOgogICAgICAgICBhc3NlcnQgbW9kdWxlX3RlYXJkb3duCiAKIAotY2xh
c3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3QpOgotCi0gICAgZGVmIHRlc3RfcGFzc2Z1bmN0
aW9uKHNlbGYsIHRlc3RkaXIpOgorY2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0czoKKyAgICBkZWYg
dGVzdF9wYXNzZnVuY3Rpb24oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgcmVwb3J0
cyA9IHRlc3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgZGVmIHRl
c3RfZnVuYygpOgpAQCAtMTE1LDcgKzEyMyw3IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMo
b2JqZWN0KToKICAgICAgICAgYXNzZXJ0IHJlcC5vdXRjb21lID09ICJwYXNzZWQiCiAgICAgICAg
IGFzc2VydCBub3QgcmVwLmxvbmdyZXByCiAKLSAgICBkZWYgdGVzdF9mYWlsZnVuY3Rpb24oc2Vs
ZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfZmFpbGZ1bmN0aW9uKHNlbGYsIHRlc3RkaXIpIC0+
IE5vbmU6CiAgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAgICAgICAi
IiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKQEAgLTEzMCw3ICsxMzgsNyBAQCBjbGFz
cyBCYXNlRnVuY3Rpb25hbFRlc3RzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXAub3V0Y29t
ZSA9PSAiZmFpbGVkIgogICAgICAgICAjIGFzc2VydCBpc2luc3RhbmNlKHJlcC5sb25ncmVwciwg
UmVwckV4Y2VwdGlvbkluZm8pCiAKLSAgICBkZWYgdGVzdF9za2lwZnVuY3Rpb24oc2VsZiwgdGVz
dGRpcik6CisgICAgZGVmIHRlc3Rfc2tpcGZ1bmN0aW9uKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6
CiAgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTE1MCw3ICsxNTgsNyBAQCBjbGFzcyBCYXNlRnVu
Y3Rpb25hbFRlc3RzKG9iamVjdCk6CiAgICAgICAgICMgYXNzZXJ0IHJlcC5za2lwcGVkLmxvY2F0
aW9uLnBhdGgKICAgICAgICAgIyBhc3NlcnQgbm90IHJlcC5za2lwcGVkLmZhaWx1cmVyZXByCiAK
LSAgICBkZWYgdGVzdF9za2lwX2luX3NldHVwX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIpOgorICAg
IGRlZiB0ZXN0X3NraXBfaW5fc2V0dXBfZnVuY3Rpb24oc2VsZiwgdGVzdGRpcikgLT4gTm9uZToK
ICAgICAgICAgcmVwb3J0cyA9IHRlc3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICIiIgogICAg
ICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtMTcxLDcgKzE3OSw3IEBAIGNsYXNzIEJhc2VGdW5j
dGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAgICAgYXNzZXJ0IGxlbihyZXBvcnRzKSA9PSAyCiAg
ICAgICAgIGFzc2VydCByZXBvcnRzWzFdLnBhc3NlZCAgIyB0ZWFyZG93bgogCi0gICAgZGVmIHRl
c3RfZmFpbHVyZV9pbl9zZXR1cF9mdW5jdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVz
dF9mYWlsdXJlX2luX3NldHVwX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAg
ICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAgICAgICAiIiIKICAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QKQEAgLTE4OCw3ICsxOTYsNyBAQCBjbGFzcyBCYXNlRnVuY3Rpb25h
bFRlc3RzKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCByZXAud2hlbiA9PSAic2V0dXAiCiAgICAg
ICAgIGFzc2VydCBsZW4ocmVwb3J0cykgPT0gMgogCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9pbl90
ZWFyZG93bl9mdW5jdGlvbihzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9mYWlsdXJlX2lu
X3RlYXJkb3duX2Z1bmN0aW9uKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHJlcG9y
dHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9y
dCBweXRlc3QKQEAgLTIwOCw3ICsyMTYsNyBAQCBjbGFzcyBCYXNlRnVuY3Rpb25hbFRlc3RzKG9i
amVjdCk6CiAgICAgICAgICMgYXNzZXJ0IHJlcC5sb25ncmVwci5yZXByY3Jhc2gubGluZW5vID09
IDMKICAgICAgICAgIyBhc3NlcnQgcmVwLmxvbmdyZXByLnJlcHJ0cmFjZWJhY2sucmVwcmVudHJp
ZXMKIAotICAgIGRlZiB0ZXN0X2N1c3RvbV9mYWlsdXJlX3JlcHIoc2VsZiwgdGVzdGRpcik6Cisg
ICAgZGVmIHRlc3RfY3VzdG9tX2ZhaWx1cmVfcmVwcihzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgog
ICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICBjb25mdGVzdD0iIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTIzMyw3ICsyNDEsNyBAQCBjbGFzcyBCYXNlRnVu
Y3Rpb25hbFRlc3RzKG9iamVjdCk6CiAgICAgICAgICMgYXNzZXJ0IHJlcC5mYWlsZWQud2hlcmUu
cGF0aC5iYXNlbmFtZSA9PSAidGVzdF9mdW5jLnB5IgogICAgICAgICAjIGFzc2VydCByZXAuZmFp
bGVkLmZhaWx1cmVyZXByID09ICJoZWxsbyIKIAotICAgIGRlZiB0ZXN0X3RlYXJkb3duX2ZpbmFs
X3JldHVybmNvZGUoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfdGVhcmRvd25fZmluYWxf
cmV0dXJuY29kZShzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICByZWMgPSB0ZXN0ZGly
LmlubGluZV9ydW5zb3VyY2UoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0
X2Z1bmMoKToKQEAgLTI0NCw3ICsyNTIsNyBAQCBjbGFzcyBCYXNlRnVuY3Rpb25hbFRlc3RzKG9i
amVjdCk6CiAgICAgICAgICkKICAgICAgICAgYXNzZXJ0IHJlYy5yZXQgPT0gMQogCi0gICAgZGVm
IHRlc3RfbG9nc3RhcnRfbG9nZmluaXNoX2hvb2tzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X2xvZ3N0YXJ0X2xvZ2ZpbmlzaF9ob29rcyhzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAg
ICAgICByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCiAgICAgICAgICAgICAiIiIKICAg
ICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTI1MywxNSArMjYxLDE1IEBAIGNsYXNzIEJhc2VG
dW5jdGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAgICAg
cmVwcyA9IHJlYy5nZXRjYWxscygicHl0ZXN0X3J1bnRlc3RfbG9nc3RhcnQgcHl0ZXN0X3J1bnRl
c3RfbG9nZmluaXNoIikKLSAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgIFt4Ll9uYW1lIGZv
ciB4IGluIHJlcHNdCi0gICAgICAgICAgICA9PSBbInB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0Iiwg
InB5dGVzdF9ydW50ZXN0X2xvZ2ZpbmlzaCJdCi0gICAgICAgICkKKyAgICAgICAgYXNzZXJ0IFt4
Ll9uYW1lIGZvciB4IGluIHJlcHNdID09IFsKKyAgICAgICAgICAgICJweXRlc3RfcnVudGVzdF9s
b2dzdGFydCIsCisgICAgICAgICAgICAicHl0ZXN0X3J1bnRlc3RfbG9nZmluaXNoIiwKKyAgICAg
ICAgXQogICAgICAgICBmb3IgcmVwIGluIHJlcHM6CiAgICAgICAgICAgICBhc3NlcnQgcmVwLm5v
ZGVpZCA9PSAidGVzdF9sb2dzdGFydF9sb2dmaW5pc2hfaG9va3MucHk6OnRlc3RfZnVuYyIKICAg
ICAgICAgICAgIGFzc2VydCByZXAubG9jYXRpb24gPT0gKCJ0ZXN0X2xvZ3N0YXJ0X2xvZ2Zpbmlz
aF9ob29rcy5weSIsIDEsICJ0ZXN0X2Z1bmMiKQogCi0gICAgZGVmIHRlc3RfZXhhY3RfdGVhcmRv
d25faXNzdWU5MChzZWxmLCB0ZXN0ZGlyKToKKyAgICBkZWYgdGVzdF9leGFjdF90ZWFyZG93bl9p
c3N1ZTkwKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHJlYyA9IHRlc3RkaXIuaW5s
aW5lX3J1bnNvdXJjZSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtMzAxLDggKzMwOSw4IEBAIGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToK
ICAgICAgICAgYXNzZXJ0IHJlcHNbNV0ubm9kZWlkLmVuZHN3aXRoKCJ0ZXN0X2Z1bmMiKQogICAg
ICAgICBhc3NlcnQgcmVwc1s1XS5mYWlsZWQKIAotICAgIGRlZiB0ZXN0X2V4YWN0X3RlYXJkb3du
X2lzc3VlMTIwNihzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIiaXNzdWUgc2hhZG93aW5nIGVy
cm9yIHdpdGggd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBvbiB0ZWFyZG93bl9tZXRob2QuIiIi
CisgICAgZGVmIHRlc3RfZXhhY3RfdGVhcmRvd25faXNzdWUxMjA2KHNlbGYsIHRlc3RkaXIpIC0+
IE5vbmU6CisgICAgICAgICIiIklzc3VlIHNoYWRvd2luZyBlcnJvciB3aXRoIHdyb25nIG51bWJl
ciBvZiBhcmd1bWVudHMgb24gdGVhcmRvd25fbWV0aG9kLiIiIgogICAgICAgICByZWMgPSB0ZXN0
ZGlyLmlubGluZV9ydW5zb3VyY2UoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9y
dCBweXRlc3QKQEAgLTMzNyw3ICszNDUsNyBAQCBjbGFzcyBCYXNlRnVuY3Rpb25hbFRlc3RzKG9i
amVjdCk6CiAgICAgICAgICAgICAiVHlwZUVycm9yOiB0ZWFyZG93bl9tZXRob2QoKSB0YWtlcyBl
eGFjdGx5IDQgYXJndW1lbnRzICgyIGdpdmVuKSIsCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0
X2ZhaWx1cmVfaW5fc2V0dXBfZnVuY3Rpb25faWdub3Jlc19jdXN0b21fcmVwcihzZWxmLCB0ZXN0
ZGlyKToKKyAgICBkZWYgdGVzdF9mYWlsdXJlX2luX3NldHVwX2Z1bmN0aW9uX2lnbm9yZXNfY3Vz
dG9tX3JlcHIoc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAogICAgICAgICAgICAgY29uZnRlc3Q9IiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
CkBAIC0zNjUsNyArMzczLDcgQEAgY2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3QpOgog
ICAgICAgICAjIGFzc2VydCByZXAub3V0Y29tZS53aGVyZS5wYXRoLmJhc2VuYW1lID09ICJ0ZXN0
X2Z1bmMucHkiCiAgICAgICAgICMgYXNzZXJ0IGluc3RhbmFjZShyZXAuZmFpbGVkLmZhaWx1cmVy
ZXByLCBQeXRob25GYWlsdXJlUmVwcikKIAotICAgIGRlZiB0ZXN0X3N5c3RlbWV4aXRfZG9lc19u
b3RfYmFpbF9vdXQoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfc3lzdGVtZXhpdF9kb2Vz
X25vdF9iYWlsX291dChzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICB0cnk6CiAgICAg
ICAgICAgICByZXBvcnRzID0gdGVzdGRpci5ydW5pdGVtKAogICAgICAgICAgICAgICAgICIiIgpA
QCAtMzc0LDEyICszODIsMTIgQEAgY2xhc3MgQmFzZUZ1bmN0aW9uYWxUZXN0cyhvYmplY3QpOgog
ICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICApCiAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0
OgotICAgICAgICAgICAgcHl0ZXN0LmZhaWwoInJ1bm5lciBkaWQgbm90IGNhdGNoIFN5c3RlbUV4
aXQiKQorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAicnVubmVyIGRpZCBub3QgY2F0Y2ggU3lz
dGVtRXhpdCIKICAgICAgICAgcmVwID0gcmVwb3J0c1sxXQogICAgICAgICBhc3NlcnQgcmVwLmZh
aWxlZAogICAgICAgICBhc3NlcnQgcmVwLndoZW4gPT0gImNhbGwiCiAKLSAgICBkZWYgdGVzdF9l
eGl0X3Byb3BhZ2F0ZXMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfZXhpdF9wcm9wYWdh
dGVzKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRl
c3RkaXIucnVuaXRlbSgKICAgICAgICAgICAgICAgICAiIiIKQEAgLTM5MSwxOSArMzk5LDE3IEBA
IGNsYXNzIEJhc2VGdW5jdGlvbmFsVGVzdHMob2JqZWN0KToKICAgICAgICAgZXhjZXB0IHB5dGVz
dC5leGl0LkV4Y2VwdGlvbjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHB5dGVzdC5mYWlsKCJkaWQgbm90IHJhaXNlIikKKyAgICAgICAgICAgIGFzc2VydCBG
YWxzZSwgImRpZCBub3QgcmFpc2UiCiAKIAogY2xhc3MgVGVzdEV4ZWN1dGlvbk5vbkZvcmtlZChC
YXNlRnVuY3Rpb25hbFRlc3RzKToKLQogICAgIGRlZiBnZXRydW5uZXIoc2VsZik6Ci0KICAgICAg
ICAgZGVmIGYoaXRlbSk6CiAgICAgICAgICAgICByZXR1cm4gcnVubmVyLnJ1bnRlc3Rwcm90b2Nv
bChpdGVtLCBsb2c9RmFsc2UpCiAKICAgICAgICAgcmV0dXJuIGYKIAotICAgIGRlZiB0ZXN0X2tl
eWJvYXJkaW50ZXJydXB0X3Byb3BhZ2F0ZXMoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rf
a2V5Ym9hcmRpbnRlcnJ1cHRfcHJvcGFnYXRlcyhzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAgICAgICAgICAg
IiIiCkBAIC00MTQsMzMgKzQyMCwxMSBAQCBjbGFzcyBUZXN0RXhlY3V0aW9uTm9uRm9ya2VkKEJh
c2VGdW5jdGlvbmFsVGVzdHMpOgogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAg
ICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBweXRlc3QuZmFpbCgi
ZGlkIG5vdCByYWlzZSIpCi0KKyAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgImRpZCBub3QgcmFp
c2UiCiAKLWNsYXNzIFRlc3RFeGVjdXRpb25Gb3JrZWQoQmFzZUZ1bmN0aW9uYWxUZXN0cyk6Ci0g
ICAgcHl0ZXN0bWFyayA9IHB5dGVzdC5tYXJrLnNraXBpZigibm90IGhhc2F0dHIob3MsICdmb3Jr
JykiKQogCi0gICAgZGVmIGdldHJ1bm5lcihzZWxmKToKLSAgICAgICAgIyBYWFggcmUtYXJyYW5n
ZSB0aGlzIHRlc3QgdG8gbGl2ZSBpbiBweXRlc3QteGRpc3QKLSAgICAgICAgYm94ZWQgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJ4ZGlzdC5ib3hlZCIpCi0gICAgICAgIHJldHVybiBib3hlZC5mb3Jr
ZWRfcnVuX3JlcG9ydAotCi0gICAgZGVmIHRlc3Rfc3VpY2lkZShzZWxmLCB0ZXN0ZGlyKToKLSAg
ICAgICAgcmVwb3J0cyA9IHRlc3RkaXIucnVuaXRlbSgKLSAgICAgICAgICAgICIiIgotICAgICAg
ICAgICAgZGVmIHRlc3RfZnVuYygpOgotICAgICAgICAgICAgICAgIGltcG9ydCBvcwotICAgICAg
ICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIDE1KQotICAgICAgICAiIiIKLSAgICAgICAg
KQotICAgICAgICByZXAgPSByZXBvcnRzWzBdCi0gICAgICAgIGFzc2VydCByZXAuZmFpbGVkCi0g
ICAgICAgIGFzc2VydCByZXAud2hlbiA9PSAiPz8/IgotCi0KLWNsYXNzIFRlc3RTZXNzaW9uUmVw
b3J0cyhvYmplY3QpOgotCi0gICAgZGVmIHRlc3RfY29sbGVjdF9yZXN1bHQoc2VsZiwgdGVzdGRp
cik6CitjbGFzcyBUZXN0U2Vzc2lvblJlcG9ydHM6CisgICAgZGVmIHRlc3RfY29sbGVjdF9yZXN1
bHQoc2VsZiwgdGVzdGRpcikgLT4gTm9uZToKICAgICAgICAgY29sID0gdGVzdGRpci5nZXRtb2R1
bGVjb2woCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMxKCk6CkBA
IC00NjQsMzYgKzQ0OCw0NCBAQCBjbGFzcyBUZXN0U2Vzc2lvblJlcG9ydHMob2JqZWN0KToKIAog
CiByZXBvcnR0eXBlcyA9IFsKLSAgICBydW5uZXIuQmFzZVJlcG9ydCwKLSAgICBydW5uZXIuVGVz
dFJlcG9ydCwKLSAgICBydW5uZXIuVGVhcmRvd25FcnJvclJlcG9ydCwKLSAgICBydW5uZXIuQ29s
bGVjdFJlcG9ydCwKLV0KKyAgICByZXBvcnRzLkJhc2VSZXBvcnQsCisgICAgcmVwb3J0cy5UZXN0
UmVwb3J0LAorICAgIHJlcG9ydHMuQ29sbGVjdFJlcG9ydCwKK10gICMgdHlwZTogTGlzdFtUeXBl
W3JlcG9ydHMuQmFzZVJlcG9ydF1dCiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAg
ICJyZXBvcnR0eXBlIiwgcmVwb3J0dHlwZXMsIGlkcz1beC5fX25hbWVfXyBmb3IgeCBpbiByZXBv
cnR0eXBlc10KICkKLWRlZiB0ZXN0X3JlcG9ydF9leHRyYV9wYXJhbWV0ZXJzKHJlcG9ydHR5cGUp
OgotICAgIGlmIGhhc2F0dHIoaW5zcGVjdCwgInNpZ25hdHVyZSIpOgotICAgICAgICBhcmdzID0g
bGlzdChpbnNwZWN0LnNpZ25hdHVyZShyZXBvcnR0eXBlLl9faW5pdF9fKS5wYXJhbWV0ZXJzLmtl
eXMoKSlbMTpdCi0gICAgZWxzZToKLSAgICAgICAgYXJncyA9IGluc3BlY3QuZ2V0YXJnc3BlYyhy
ZXBvcnR0eXBlLl9faW5pdF9fKVswXVsxOl0KLSAgICBiYXNla3cgPSBkaWN0LmZyb21rZXlzKGFy
Z3MsIFtdKQorZGVmIHRlc3RfcmVwb3J0X2V4dHJhX3BhcmFtZXRlcnMocmVwb3J0dHlwZTogIlR5
cGVbcmVwb3J0cy5CYXNlUmVwb3J0XSIpIC0+IE5vbmU6CisgICAgYXJncyA9IGxpc3QoaW5zcGVj
dC5zaWduYXR1cmUocmVwb3J0dHlwZS5fX2luaXRfXykucGFyYW1ldGVycy5rZXlzKCkpWzE6XQor
ICAgIGJhc2VrdyA9IGRpY3QuZnJvbWtleXMoYXJncywgW10pICAjIHR5cGU6IERpY3Rbc3RyLCBM
aXN0W29iamVjdF1dCiAgICAgcmVwb3J0ID0gcmVwb3J0dHlwZShuZXd0aGluZz0xLCAqKmJhc2Vr
dykKICAgICBhc3NlcnQgcmVwb3J0Lm5ld3RoaW5nID09IDEKIAogCi1kZWYgdGVzdF9jYWxsaW5m
bygpOgotICAgIGNpID0gcnVubmVyLkNhbGxJbmZvKGxhbWJkYTogMCwgIjEyMyIpCi0gICAgYXNz
ZXJ0IGNpLndoZW4gPT0gIjEyMyIKK2RlZiB0ZXN0X2NhbGxpbmZvKCkgLT4gTm9uZToKKyAgICBj
aSA9IHJ1bm5lci5DYWxsSW5mby5mcm9tX2NhbGwobGFtYmRhOiAwLCAiY29sbGVjdCIpCisgICAg
YXNzZXJ0IGNpLndoZW4gPT0gImNvbGxlY3QiCiAgICAgYXNzZXJ0IGNpLnJlc3VsdCA9PSAwCiAg
ICAgYXNzZXJ0ICJyZXN1bHQiIGluIHJlcHIoY2kpCi0gICAgY2kgPSBydW5uZXIuQ2FsbEluZm8o
bGFtYmRhOiAwIC8gMCwgIjEyMyIpCi0gICAgYXNzZXJ0IGNpLndoZW4gPT0gIjEyMyIKLSAgICBh
c3NlcnQgbm90IGhhc2F0dHIoY2ksICJyZXN1bHQiKQotICAgIGFzc2VydCBjaS5leGNpbmZvCi0g
ICAgYXNzZXJ0ICJleGMiIGluIHJlcHIoY2kpCisgICAgYXNzZXJ0IHJlcHIoY2kpID09ICI8Q2Fs
bEluZm8gd2hlbj0nY29sbGVjdCcgcmVzdWx0OiAwPiIKKyAgICBhc3NlcnQgc3RyKGNpKSA9PSAi
PENhbGxJbmZvIHdoZW49J2NvbGxlY3QnIHJlc3VsdDogMD4iCisKKyAgICBjaTIgPSBydW5uZXIu
Q2FsbEluZm8uZnJvbV9jYWxsKGxhbWJkYTogMCAvIDAsICJjb2xsZWN0IikKKyAgICBhc3NlcnQg
Y2kyLndoZW4gPT0gImNvbGxlY3QiCisgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGNpMiwgInJlc3Vs
dCIpCisgICAgYXNzZXJ0IHJlcHIoY2kyKSA9PSAiPENhbGxJbmZvIHdoZW49J2NvbGxlY3QnIGV4
Y2luZm89eyFyfT4iLmZvcm1hdChjaTIuZXhjaW5mbykKKyAgICBhc3NlcnQgc3RyKGNpMikgPT0g
cmVwcihjaTIpCisgICAgYXNzZXJ0IGNpMi5leGNpbmZvCisKKyAgICAjIE5ld2xpbmVzIGFyZSBl
c2NhcGVkLgorICAgIGRlZiByYWlzZV9hc3NlcnRpb24oKToKKyAgICAgICAgYXNzZXJ0IDAsICJh
c3NlcnRfbXNnIgorCisgICAgY2kzID0gcnVubmVyLkNhbGxJbmZvLmZyb21fY2FsbChyYWlzZV9h
c3NlcnRpb24sICJjYWxsIikKKyAgICBhc3NlcnQgcmVwcihjaTMpID09ICI8Q2FsbEluZm8gd2hl
bj0nY2FsbCcgZXhjaW5mbz17IXJ9PiIuZm9ybWF0KGNpMy5leGNpbmZvKQorICAgIGFzc2VydCAi
XG4iIG5vdCBpbiByZXByKGNpMykKIAogCiAjIGRlc2lnbiBxdWVzdGlvbjogZG8gd2Ugd2FudCBn
ZW5lcmFsIGhvb2tzIGluIHB5dGhvbiBmaWxlcz8KQEAgLTUwMSw3ICs0OTMsNyBAQCBkZWYgdGVz
dF9jYWxsaW5mbygpOgogCiAKIEBweXRlc3QubWFyay54ZmFpbAotZGVmIHRlc3RfcnVudGVzdF9p
bl9tb2R1bGVfb3JkZXJpbmcodGVzdGRpcik6CitkZWYgdGVzdF9ydW50ZXN0X2luX21vZHVsZV9v
cmRlcmluZyh0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxlKAog
ICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNTE0LDkgKzUwNiwxMCBAQCBk
ZWYgdGVzdF9ydW50ZXN0X2luX21vZHVsZV9vcmRlcmluZyh0ZXN0ZGlyKToKICAgICAgICAgICAg
IEBweXRlc3QuZml4dHVyZQogICAgICAgICAgICAgZGVmIG15bGlzdChzZWxmLCByZXF1ZXN0KToK
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5mdW5jdGlvbi5teWxpc3QKLSAgICAgICAg
ICAgIGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKHNlbGYsIGl0ZW0sIF9fbXVsdGljYWxsX18pOgor
ICAgICAgICAgICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorICAgICAgICAg
ICAgZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoc2VsZiwgaXRlbSk6CiAgICAgICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgICAgICBfX211bHRpY2FsbF9fLmV4ZWN1dGUoKQorICAgICAg
ICAgICAgICAgICAgICAoeWllbGQpLmdldF9yZXN1bHQoKQogICAgICAgICAgICAgICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBkZWYg
dGVzdF9oZWxsbzEoc2VsZiwgbXlsaXN0KToKQEAgLTUzMiwzNyArNTI1LDMzIEBAIGRlZiB0ZXN0
X3J1bnRlc3RfaW5fbW9kdWxlX29yZGVyaW5nKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIioyIHBhc3NlZCoiXSkKIAogCi1kZWYgdGVzdF9vdXRjb21lZXhjZXB0
aW9uX2V4Y2VwdGlvbmF0dHJpYnV0ZXMoKToKK2RlZiB0ZXN0X291dGNvbWVleGNlcHRpb25fZXhj
ZXB0aW9uYXR0cmlidXRlcygpIC0+IE5vbmU6CiAgICAgb3V0Y29tZSA9IG91dGNvbWVzLk91dGNv
bWVFeGNlcHRpb24oInRlc3QiKQogICAgIGFzc2VydCBvdXRjb21lLmFyZ3NbMF0gPT0gb3V0Y29t
ZS5tc2cKIAogCi1kZWYgdGVzdF9vdXRjb21lZXhjZXB0aW9uX3Bhc3Nlc19leGNlcHRfRXhjZXB0
aW9uKCk6CitkZWYgdGVzdF9vdXRjb21lZXhjZXB0aW9uX3Bhc3Nlc19leGNlcHRfRXhjZXB0aW9u
KCkgLT4gTm9uZToKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMob3V0Y29tZXMuT3V0Y29tZUV4Y2Vw
dGlvbik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIG91dGNvbWVzLk91dGNvbWVF
eGNlcHRpb24oInRlc3QiKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAg
cGFzcworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yIGZyb20gZQogCiAKLWRlZiB0ZXN0X3B5dGVzdF9leGl0KCk6Ci0g
ICAgdHJ5OgorZGVmIHRlc3RfcHl0ZXN0X2V4aXQoKSAtPiBOb25lOgorICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhweXRlc3QuZXhpdC5FeGNlcHRpb24pIGFzIGV4Y2luZm86CiAgICAgICAgIHB5dGVz
dC5leGl0KCJoZWxsbyIpCi0gICAgZXhjZXB0IHB5dGVzdC5leGl0LkV4Y2VwdGlvbjoKLSAgICAg
ICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpCi0gICAgICAgIGFzc2Vy
dCBleGNpbmZvLmVycmlzaW5zdGFuY2UoS2V5Ym9hcmRJbnRlcnJ1cHQpCisgICAgYXNzZXJ0IGV4
Y2luZm8uZXJyaXNpbnN0YW5jZShweXRlc3QuZXhpdC5FeGNlcHRpb24pCiAKIAotZGVmIHRlc3Rf
cHl0ZXN0X2ZhaWwoKToKLSAgICB0cnk6CitkZWYgdGVzdF9weXRlc3RfZmFpbCgpIC0+IE5vbmU6
CisgICAgd2l0aCBweXRlc3QucmFpc2VzKHB5dGVzdC5mYWlsLkV4Y2VwdGlvbikgYXMgZXhjaW5m
bzoKICAgICAgICAgcHl0ZXN0LmZhaWwoImhlbGxvIikKLSAgICBleGNlcHQgcHl0ZXN0LmZhaWwu
RXhjZXB0aW9uOgotICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZv
KCkKLSAgICAgICAgcyA9IGV4Y2luZm8uZXhjb25seSh0cnlzaG9ydD1UcnVlKQotICAgICAgICBh
c3NlcnQgcy5zdGFydHN3aXRoKCJGYWlsZWQiKQorICAgIHMgPSBleGNpbmZvLmV4Y29ubHkodHJ5
c2hvcnQ9VHJ1ZSkKKyAgICBhc3NlcnQgcy5zdGFydHN3aXRoKCJGYWlsZWQiKQogCiAKLWRlZiB0
ZXN0X3B5dGVzdF9leGl0X21zZyh0ZXN0ZGlyKToKK2RlZiB0ZXN0X3B5dGVzdF9leGl0X21zZyh0
ZXN0ZGlyKSAtPiBOb25lOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAiIiIK
ICAgICBpbXBvcnQgcHl0ZXN0CkBAIC01NzUsNyArNTY0LDQ5IEBAIGRlZiB0ZXN0X3B5dGVzdF9l
eGl0X21zZyh0ZXN0ZGlyKToKICAgICByZXN1bHQuc3RkZXJyLmZubWF0Y2hfbGluZXMoWyJFeGl0
OiBvaCBub2VzIl0pCiAKIAotZGVmIHRlc3RfcHl0ZXN0X2ZhaWxfbm90cmFjZSh0ZXN0ZGlyKToK
K2RlZiBfc3RyaXBfcmVzb3VyY2Vfd2FybmluZ3MobGluZXMpOgorICAgICMgQXNzZXJ0IG5vIG91
dHB1dCBvbiBzdGRlcnIsIGV4Y2VwdCBmb3IgdW5yZWxpYWJsZSBSZXNvdXJjZVdhcm5pbmdzLgor
ICAgICMgKGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9pc3N1ZXMvNTA4OCkK
KyAgICByZXR1cm4gWworICAgICAgICB4CisgICAgICAgIGZvciB4IGluIGxpbmVzCisgICAgICAg
IGlmIG5vdCB4LnN0YXJ0c3dpdGgoKCJFeGNlcHRpb24gaWdub3JlZCBpbjoiLCAiUmVzb3VyY2VX
YXJuaW5nIikpCisgICAgXQorCisKK2RlZiB0ZXN0X3B5dGVzdF9leGl0X3JldHVybmNvZGUodGVz
dGRpcikgLT4gTm9uZToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIlwKKyAg
ICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAg
IHB5dGVzdC5leGl0KCJzb21lIGV4aXQgbXNnIiwgOTkpCisgICAgIiIiCisgICAgKQorICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqISAqRXhpdDogc29tZSBleGl0IG1zZyAhKiJdKQorCisgICAgYXNzZXJ0IF9zdHJpcF9y
ZXNvdXJjZV93YXJuaW5ncyhyZXN1bHQuc3RkZXJyLmxpbmVzKSA9PSBbXQorICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IDk5CisKKyAgICAjIEl0IHByaW50cyB0byBzdGRlcnIgYWxzbyBpbiBjYXNl
IG9mIGV4aXQgZHVyaW5nIHB5dGVzdF9zZXNzaW9uc3RhcnQuCisgICAgdGVzdGRpci5tYWtlY29u
ZnRlc3QoCisgICAgICAgICIiIlwKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIGRl
ZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KCk6CisgICAgICAgICAgICBweXRlc3QuZXhpdCgiZHVyaW5n
X3Nlc3Npb25zdGFydCIsIDk4KQorICAgICAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiohICpF
eGl0OiBkdXJpbmdfc2Vzc2lvbnN0YXJ0ICEqIl0pCisgICAgYXNzZXJ0IF9zdHJpcF9yZXNvdXJj
ZV93YXJuaW5ncyhyZXN1bHQuc3RkZXJyLmxpbmVzKSA9PSBbCisgICAgICAgICJFeGl0OiBkdXJp
bmdfc2Vzc2lvbnN0YXJ0IgorICAgIF0KKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSA5OAorCisK
K2RlZiB0ZXN0X3B5dGVzdF9mYWlsX25vdHJhY2VfcnVudGVzdCh0ZXN0ZGlyKSAtPiBOb25lOgor
ICAgICIiIlRlc3QgcHl0ZXN0LmZhaWwoLi4uLCBweXRyYWNlPUZhbHNlKSBkb2VzIG5vdCBzaG93
IHRyYWNlYmFja3MgZHVyaW5nIHRlc3QgcnVuLiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTU4NywzNyArNjE4LDQ2IEBA
IGRlZiB0ZXN0X3B5dGVzdF9mYWlsX25vdHJhY2UodGVzdGRpcik6CiAgICAgKQogICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
WyJ3b3JsZCIsICJoZWxsbyJdKQotICAgIGFzc2VydCAiZGVmIHRlYXJkb3duX2Z1bmN0aW9uIiBu
b3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqZGVmIHRlYXJkb3duX2Z1bmN0aW9uKiIpCisKKworZGVmIHRlc3RfcHl0ZXN0X2ZhaWxf
bm90cmFjZV9jb2xsZWN0aW9uKHRlc3RkaXIpIC0+IE5vbmU6CisgICAgIiIiVGVzdCBweXRlc3Qu
ZmFpbCguLi4sIHB5dHJhY2U9RmFsc2UpIGRvZXMgbm90IHNob3cgdHJhY2ViYWNrcyBkdXJpbmcg
Y29sbGVjdGlvbi4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAg
ICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGRlZiBzb21lX2ludGVybmFsX2Z1bmN0aW9uKCk6
CisgICAgICAgICAgICBweXRlc3QuZmFpbCgiaGVsbG8iLCBweXRyYWNlPUZhbHNlKQorICAgICAg
ICBzb21lX2ludGVybmFsX2Z1bmN0aW9uKCkKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbImhl
bGxvIl0pCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipkZWYgc29tZV9pbnRl
cm5hbF9mdW5jdGlvbigpKiIpCiAKIAotQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzdHJfcHJl
Zml4IiwgWyJ1IiwgIiJdKQotZGVmIHRlc3RfcHl0ZXN0X2ZhaWxfbm90cmFjZV9ub25fYXNjaWko
dGVzdGRpciwgc3RyX3ByZWZpeCk6CitkZWYgdGVzdF9weXRlc3RfZmFpbF9ub3RyYWNlX25vbl9h
c2NpaSh0ZXN0ZGlyKSAtPiBOb25lOgogICAgICIiIkZpeCBweXRlc3QuZmFpbCB3aXRoIHB5dHJh
Y2U9RmFsc2Ugd2l0aCBub24tYXNjaWkgY2hhcmFjdGVycyAoIzExNzgpLgogCiAgICAgVGhpcyB0
ZXN0cyB3aXRoIG5hdGl2ZSBhbmQgdW5pY29kZSBzdHJpbmdzIGNvbnRhaW5pbmcgbm9uLWFzY2lp
IGNoYXJzLgogICAgICIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgdSIiIgot
ICAgICAgICAjIGNvZGluZzogdXRmLTgKKyAgICAgICAgIiIiXAogICAgICAgICBpbXBvcnQgcHl0
ZXN0CiAKICAgICAgICAgZGVmIHRlc3RfaGVsbG8oKToKLSAgICAgICAgICAgIHB5dGVzdC5mYWls
KCVzJ29oIG9oOiDimLonLCBweXRyYWNlPUZhbHNlKQotICAgICIiIgotICAgICAgICAlIHN0cl9w
cmVmaXgKKyAgICAgICAgICAgIHB5dGVzdC5mYWlsKCdvaCBvaDog4pi6JywgcHl0cmFjZT1GYWxz
ZSkKKyAgICAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkK
LSAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6Ci0gICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIip0ZXN0X2hlbGxvKiIsICJvaCBvaDog4pi6Il0pCi0gICAgZWxzZToK
LSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3RfaGVsbG8qIiwgIm9o
IG9oOiAqIl0pCi0gICAgYXNzZXJ0ICJkZWYgdGVzdF9oZWxsbyIgbm90IGluIHJlc3VsdC5zdGRv
dXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9oZWxsbyoi
LCAib2ggb2g6IOKYuiJdKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqZGVm
IHRlc3RfaGVsbG8qIikKIAogCi1kZWYgdGVzdF9weXRlc3Rfbm9fdGVzdHNfY29sbGVjdGVkX2V4
aXRfc3RhdHVzKHRlc3RkaXIpOgorZGVmIHRlc3RfcHl0ZXN0X25vX3Rlc3RzX2NvbGxlY3RlZF9l
eGl0X3N0YXR1cyh0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIipjb2xsZWN0ZWQgMCBpdGVt
cyoiKQotICAgIGFzc2VydCByZXN1bHQucmV0ID09IG1haW4uRVhJVF9OT1RFU1RTQ09MTEVDVEVE
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmNvbGxlY3RlZCAwIGl0ZW1zKiJd
KQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAog
CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICB0ZXN0X2Zvbz0iIiIKQEAgLTYyNiwy
NiArNjY2LDI3IEBAIGRlZiB0ZXN0X3B5dGVzdF9ub190ZXN0c19jb2xsZWN0ZWRfZXhpdF9zdGF0
dXModGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIipjb2xsZWN0ZWQgMSBpdGVt
KiIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqMSBwYXNzZWQqIikKLSAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSBtYWluLkVYSVRfT0sKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqY29sbGVjdGVkIDEgaXRlbSoiXSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gRXhpdENv
ZGUuT0sKIAogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItayBub25tYXRjaCIpCi0g
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKCIqY29sbGVjdGVkIDEgaXRlbSoiKQotICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgZGVzZWxlY3RlZCoiKQotICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IG1haW4uRVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmNvbGxlY3RlZCAxIGl0ZW0qIl0pCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgZGVzZWxlY3RlZCoiXSkKKyAgICBhc3NlcnQgcmVzdWx0
LnJldCA9PSBFeGl0Q29kZS5OT19URVNUU19DT0xMRUNURUQKIAogCi1kZWYgdGVzdF9leGNlcHRp
b25fcHJpbnRpbmdfc2tpcCgpOgorZGVmIHRlc3RfZXhjZXB0aW9uX3ByaW50aW5nX3NraXAoKSAt
PiBOb25lOgorICAgIGFzc2VydCBweXRlc3Quc2tpcC5FeGNlcHRpb24gPT0gcHl0ZXN0LnNraXAu
RXhjZXB0aW9uCiAgICAgdHJ5OgogICAgICAgICBweXRlc3Quc2tpcCgiaGVsbG8iKQogICAgIGV4
Y2VwdCBweXRlc3Quc2tpcC5FeGNlcHRpb246Ci0gICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9j
b2RlLkV4Y2VwdGlvbkluZm8oKQorICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNl
cHRpb25JbmZvLmZyb21fY3VycmVudCgpCiAgICAgICAgIHMgPSBleGNpbmZvLmV4Y29ubHkodHJ5
c2hvcnQ9VHJ1ZSkKICAgICAgICAgYXNzZXJ0IHMuc3RhcnRzd2l0aCgiU2tpcHBlZCIpCiAKIAot
ZGVmIHRlc3RfaW1wb3J0b3Jza2lwKG1vbmtleXBhdGNoKToKK2RlZiB0ZXN0X2ltcG9ydG9yc2tp
cChtb25rZXlwYXRjaCkgLT4gTm9uZToKICAgICBpbXBvcnRvcnNraXAgPSBweXRlc3QuaW1wb3J0
b3Jza2lwCiAKICAgICBkZWYgZigpOgpAQCAtNjU3LDUyICs2OTgsNTEgQEAgZGVmIHRlc3RfaW1w
b3J0b3Jza2lwKG1vbmtleXBhdGNoKToKICAgICAgICAgIyBwYXRoID0gcHl0ZXN0LmltcG9ydG9y
c2tpcCgib3MucGF0aCIpCiAgICAgICAgICMgYXNzZXJ0IHBhdGggPT0gb3MucGF0aAogICAgICAg
ICBleGNpbmZvID0gcHl0ZXN0LnJhaXNlcyhweXRlc3Quc2tpcC5FeGNlcHRpb24sIGYpCi0gICAg
ICAgIHBhdGggPSBweS5wYXRoLmxvY2FsKGV4Y2luZm8uZ2V0cmVwcigpLnJlcHJjcmFzaC5wYXRo
KQorICAgICAgICBhc3NlcnQgZXhjaW5mbyBpcyBub3QgTm9uZQorICAgICAgICBleGNyZXByID0g
ZXhjaW5mby5nZXRyZXByKCkKKyAgICAgICAgYXNzZXJ0IGV4Y3JlcHIgaXMgbm90IE5vbmUKKyAg
ICAgICAgYXNzZXJ0IGV4Y3JlcHIucmVwcmNyYXNoIGlzIG5vdCBOb25lCisgICAgICAgIHBhdGgg
PSBweS5wYXRoLmxvY2FsKGV4Y3JlcHIucmVwcmNyYXNoLnBhdGgpCiAgICAgICAgICMgY2hlY2sg
dGhhdCBpbXBvcnRvcnNraXAgcmVwb3J0cyB0aGUgYWN0dWFsIGNhbGwKICAgICAgICAgIyBpbiB0
aGlzIHRlc3QgdGhlIHRlc3RfcnVubmVyLnB5IGZpbGUKICAgICAgICAgYXNzZXJ0IHBhdGgucHVy
ZWJhc2VuYW1lID09ICJ0ZXN0X3J1bm5lciIKLSAgICAgICAgcHl0ZXN0LnJhaXNlcyhTeW50YXhF
cnJvciwgInB5dGVzdC5pbXBvcnRvcnNraXAoJ3ggeSB6JykiKQotICAgICAgICBweXRlc3QucmFp
c2VzKFN5bnRheEVycm9yLCAicHl0ZXN0LmltcG9ydG9yc2tpcCgneD15JykiKQorICAgICAgICBw
eXRlc3QucmFpc2VzKFN5bnRheEVycm9yLCBweXRlc3QuaW1wb3J0b3Jza2lwLCAieCB5IHoiKQor
ICAgICAgICBweXRlc3QucmFpc2VzKFN5bnRheEVycm9yLCBweXRlc3QuaW1wb3J0b3Jza2lwLCAi
eD15IikKICAgICAgICAgbW9kID0gdHlwZXMuTW9kdWxlVHlwZSgiaGVsbG8xMjMiKQotICAgICAg
ICBtb2QuX192ZXJzaW9uX18gPSAiMS4zIgorICAgICAgICBtb2QuX192ZXJzaW9uX18gPSAiMS4z
IiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShzeXMubW9kdWxl
cywgImhlbGxvMTIzIiwgbW9kKQotICAgICAgICBweXRlc3QucmFpc2VzKAotICAgICAgICAgICAg
cHl0ZXN0LnNraXAuRXhjZXB0aW9uLAotICAgICAgICAgICAgIiIiCisgICAgICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhweXRlc3Quc2tpcC5FeGNlcHRpb24pOgogICAgICAgICAgICAgcHl0ZXN0Lmlt
cG9ydG9yc2tpcCgiaGVsbG8xMjMiLCBtaW52ZXJzaW9uPSIxLjMuMSIpCi0gICAgICAgICIiIiwK
LSAgICAgICAgKQogICAgICAgICBtb2QyID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgiaGVsbG8xMjMi
LCBtaW52ZXJzaW9uPSIxLjMiKQogICAgICAgICBhc3NlcnQgbW9kMiA9PSBtb2QKLSAgICBleGNl
cHQgcHl0ZXN0LnNraXAuRXhjZXB0aW9uOgotICAgICAgICBwcmludChfcHl0ZXN0Ll9jb2RlLkV4
Y2VwdGlvbkluZm8oKSkKLSAgICAgICAgcHl0ZXN0LmZhaWwoInNwdXJpb3VzIHNraXAiKQorICAg
IGV4Y2VwdCBweXRlc3Quc2tpcC5FeGNlcHRpb246ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAg
ICAgYXNzZXJ0IEZhbHNlLCAic3B1cmlvdXMgc2tpcDoge30iLmZvcm1hdCgKKyAgICAgICAgICAg
IF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQorICAgICAgICApCiAK
IAotZGVmIHRlc3RfaW1wb3J0b3Jza2lwX2ltcG9ydHNfbGFzdF9tb2R1bGVfcGFydCgpOgorZGVm
IHRlc3RfaW1wb3J0b3Jza2lwX2ltcG9ydHNfbGFzdF9tb2R1bGVfcGFydCgpIC0+IE5vbmU6CiAg
ICAgb3NwYXRoID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgib3MucGF0aCIpCiAgICAgYXNzZXJ0IG9z
LnBhdGggPT0gb3NwYXRoCiAKIAotZGVmIHRlc3RfaW1wb3J0b3Jza2lwX2Rldl9tb2R1bGUobW9u
a2V5cGF0Y2gpOgorZGVmIHRlc3RfaW1wb3J0b3Jza2lwX2Rldl9tb2R1bGUobW9ua2V5cGF0Y2gp
IC0+IE5vbmU6CiAgICAgdHJ5OgogICAgICAgICBtb2QgPSB0eXBlcy5Nb2R1bGVUeXBlKCJtb2Nr
bW9kdWxlIikKLSAgICAgICAgbW9kLl9fdmVyc2lvbl9fID0gIjAuMTMuMC5kZXYtNDMyOTAiCisg
ICAgICAgIG1vZC5fX3ZlcnNpb25fXyA9ICIwLjEzLjAuZGV2LTQzMjkwIiAgIyB0eXBlOiBpZ25v
cmUKICAgICAgICAgbW9ua2V5cGF0Y2guc2V0aXRlbShzeXMubW9kdWxlcywgIm1vY2ttb2R1bGUi
LCBtb2QpCiAgICAgICAgIG1vZDIgPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJtb2NrbW9kdWxlIiwg
bWludmVyc2lvbj0iMC4xMi4wIikKICAgICAgICAgYXNzZXJ0IG1vZDIgPT0gbW9kCi0gICAgICAg
IHB5dGVzdC5yYWlzZXMoCi0gICAgICAgICAgICBweXRlc3Quc2tpcC5FeGNlcHRpb24sCi0gICAg
ICAgICAgICAiIiIKLSAgICAgICAgICAgIHB5dGVzdC5pbXBvcnRvcnNraXAoJ21vY2ttb2R1bGUx
JywgbWludmVyc2lvbj0nMC4xNC4wJykiIiIsCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhw
eXRlc3Quc2tpcC5FeGNlcHRpb24pOgorICAgICAgICAgICAgcHl0ZXN0LmltcG9ydG9yc2tpcCgi
bW9ja21vZHVsZTEiLCBtaW52ZXJzaW9uPSIwLjE0LjAiKQorICAgIGV4Y2VwdCBweXRlc3Quc2tp
cC5FeGNlcHRpb246ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAi
c3B1cmlvdXMgc2tpcDoge30iLmZvcm1hdCgKKyAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuRXhj
ZXB0aW9uSW5mby5mcm9tX2N1cnJlbnQoKQogICAgICAgICApCi0gICAgZXhjZXB0IHB5dGVzdC5z
a2lwLkV4Y2VwdGlvbjoKLSAgICAgICAgcHJpbnQoX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZv
KCkpCi0gICAgICAgIHB5dGVzdC5mYWlsKCJzcHVyaW91cyBza2lwIikKIAogCi1kZWYgdGVzdF9p
bXBvcnRvcnNraXBfbW9kdWxlX2xldmVsKHRlc3RkaXIpOgotICAgICIiImltcG9ydG9yc2tpcCBt
dXN0IGJlIGFibGUgdG8gc2tpcCBlbnRpcmUgbW9kdWxlcyB3aGVuIHVzZWQgYXQgbW9kdWxlIGxl
dmVsIiIiCitkZWYgdGVzdF9pbXBvcnRvcnNraXBfbW9kdWxlX2xldmVsKHRlc3RkaXIpIC0+IE5v
bmU6CisgICAgIiIiYGltcG9ydG9yc2tpcGAgbXVzdCBiZSBhYmxlIHRvIHNraXAgZW50aXJlIG1v
ZHVsZXMgd2hlbiB1c2VkIGF0IG1vZHVsZSBsZXZlbC4iIiIKICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC03MTYsNyArNzU2LDIz
IEBAIGRlZiB0ZXN0X2ltcG9ydG9yc2tpcF9tb2R1bGVfbGV2ZWwodGVzdGRpcik6CiAgICAgcmVz
dWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmNvbGxlY3RlZCAwIGl0ZW1zIC8gMSBza2lwcGVk
KiJdKQogCiAKLWRlZiB0ZXN0X3B5dGVzdF9jbWRsaW5lX21haW4odGVzdGRpcik6CitkZWYgdGVz
dF9pbXBvcnRvcnNraXBfY3VzdG9tX3JlYXNvbih0ZXN0ZGlyKSAtPiBOb25lOgorICAgICIiIk1h
a2Ugc3VyZSBjdXN0b20gcmVhc29ucyBhcmUgdXNlZC4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGZvb2JhcmJh
eiA9IHB5dGVzdC5pbXBvcnRvcnNraXAoImZvb2JhcmJhejIiLCByZWFzb249Imp1c3QgYmVjYXVz
ZSIpCisKKyAgICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAgICAgICAgICBwYXNzCisgICAgIiIi
CisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcmEiKQorICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipqdXN0IGJlY2F1c2UqIl0pCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKmNvbGxlY3RlZCAwIGl0ZW1zIC8gMSBza2lwcGVkKiJdKQor
CisKK2RlZiB0ZXN0X3B5dGVzdF9jbWRsaW5lX21haW4odGVzdGRpcikgLT4gTm9uZToKICAgICBw
ID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IHB5dGVz
dApAQCAtNzM0LDE4ICs3OTAsMTcgQEAgZGVmIHRlc3RfcHl0ZXN0X2NtZGxpbmVfbWFpbih0ZXN0
ZGlyKToKICAgICBhc3NlcnQgcmV0ID09IDAKIAogCi1kZWYgdGVzdF91bmljb2RlX2luX2xvbmdy
ZXByKHRlc3RkaXIpOgorZGVmIHRlc3RfdW5pY29kZV9pbl9sb25ncmVwcih0ZXN0ZGlyKSAtPiBO
b25lOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAotICAgICAgICAiIiIKLSAgICAgICAgIyAt
Ki0gY29kaW5nOiB1dGYtOCAtKi0KKyAgICAgICAgIiIiXAogICAgICAgICBpbXBvcnQgcHl0ZXN0
CiAgICAgICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKICAgICAgICAgZGVm
IHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoKToKICAgICAgICAgICAgIG91dGNvbWUgPSB5aWVs
ZAogICAgICAgICAgICAgcmVwID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKICAgICAgICAgICAgIGlm
IHJlcC53aGVuID09ICJjYWxsIjoKLSAgICAgICAgICAgICAgICByZXAubG9uZ3JlcHIgPSB1J8Ok
JwotICAgICIiIgorICAgICAgICAgICAgICAgIHJlcC5sb25ncmVwciA9ICfDpCcKKyAgICAgICAg
IiIiCiAgICAgKQogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCkBAIC03NTgs
NyArODEzLDcgQEAgZGVmIHRlc3RfdW5pY29kZV9pbl9sb25ncmVwcih0ZXN0ZGlyKToKICAgICBh
c3NlcnQgIlVuaWNvZGVFbmNvZGVFcnJvciIgbm90IGluIHJlc3VsdC5zdGRlcnIuc3RyKCkKIAog
Ci1kZWYgdGVzdF9mYWlsdXJlX2luX3NldHVwKHRlc3RkaXIpOgorZGVmIHRlc3RfZmFpbHVyZV9p
bl9zZXR1cCh0ZXN0ZGlyKSAtPiBOb25lOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgIiIiCiAgICAgICAgIGRlZiBzZXR1cF9tb2R1bGUoKToKQEAgLTc2OCwxMCArODIzLDEwIEBA
IGRlZiB0ZXN0X2ZhaWx1cmVfaW5fc2V0dXAodGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXRiPWxpbmUiKQotICAgIGFzc2VydCAiZGVm
IHNldHVwX21vZHVsZSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rk
b3V0Lm5vX2ZubWF0Y2hfbGluZSgiKmRlZiBzZXR1cF9tb2R1bGUqIikKIAogCi1kZWYgdGVzdF9t
YWtlcmVwb3J0X2dldHNvdXJjZSh0ZXN0ZGlyKToKK2RlZiB0ZXN0X21ha2VyZXBvcnRfZ2V0c291
cmNlKHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAi
IiIKICAgICAgICAgZGVmIHRlc3RfZm9vKCk6CkBAIC03ODAsMjEgKzgzNSwyMSBAQCBkZWYgdGVz
dF9tYWtlcmVwb3J0X2dldHNvdXJjZSh0ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGFzc2VydCAiSU5URVJOQUxFUlJPUiIgbm90
IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGlu
ZSgiKklOVEVSTkFMRVJST1IqIikKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
ZWxzZTogYXNzZXJ0IEZhbHNlKiJdKQogCiAKLWRlZiB0ZXN0X21ha2VyZXBvcnRfZ2V0c291cmNl
X2R5bmFtaWNfY29kZSh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CitkZWYgdGVzdF9tYWtlcmVwb3J0
X2dldHNvdXJjZV9keW5hbWljX2NvZGUodGVzdGRpciwgbW9ua2V5cGF0Y2gpIC0+IE5vbmU6CiAg
ICAgIiIiVGVzdCB0aGF0IGV4Y2VwdGlvbiBpbiBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSBk
b2Vzbid0IGJyZWFrIGdldHRpbmcgdGhlIHNvdXJjZSBsaW5lLiIiIgogICAgIGltcG9ydCBpbnNw
ZWN0CiAKICAgICBvcmlnaW5hbF9maW5kc291cmNlID0gaW5zcGVjdC5maW5kc291cmNlCiAKLSAg
ICBkZWYgZmluZHNvdXJjZShvYmosICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGZpbmRzb3Vy
Y2Uob2JqKToKICAgICAgICAgIyBDYW4gYmUgdHJpZ2dlcmVkIGJ5IGR5bmFtaWNhbGx5IGNyZWF0
ZWQgZnVuY3Rpb25zCiAgICAgICAgIGlmIG9iai5fX25hbWVfXyA9PSAiZm9vIjoKICAgICAgICAg
ICAgIHJhaXNlIEluZGV4RXJyb3IoKQotICAgICAgICByZXR1cm4gb3JpZ2luYWxfZmluZHNvdXJj
ZShvYmosICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsX2ZpbmRzb3Vy
Y2Uob2JqKQogCiAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihpbnNwZWN0LCAiZmluZHNvdXJjZSIs
IGZpbmRzb3VyY2UpCiAKQEAgLTgxMSwxNiArODY2LDE1IEBAIGRlZiB0ZXN0X21ha2VyZXBvcnRf
Z2V0c291cmNlX2R5bmFtaWNfY29kZSh0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgIiIiCiAg
ICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdnYiKQotICAgIGFzc2VydCAi
SU5URVJOQUxFUlJPUiIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1bHQuc3Rk
b3V0Lm5vX2ZubWF0Y2hfbGluZSgiKklOVEVSTkFMRVJST1IqIikKICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9maXgqIiwgIipmaXh0dXJlKidtaXNzaW5nJypub3QgZm91
bmQqIl0pCiAKIAotZGVmIHRlc3Rfc3RvcmVfZXhjZXB0X2luZm9fb25fZXJyb3IoKToKLSAgICAi
IiIgVGVzdCB0aGF0IHVwb24gdGVzdCBmYWlsdXJlLCB0aGUgZXhjZXB0aW9uIGluZm8gaXMgc3Rv
cmVkIG9uCi0gICAgc3lzLmxhc3RfdHJhY2ViYWNrIGFuZCBmcmllbmRzLgotICAgICIiIgorZGVm
IHRlc3Rfc3RvcmVfZXhjZXB0X2luZm9fb25fZXJyb3IoKSAtPiBOb25lOgorICAgICIiIlRlc3Qg
dGhhdCB1cG9uIHRlc3QgZmFpbHVyZSwgdGhlIGV4Y2VwdGlvbiBpbmZvIGlzIHN0b3JlZCBvbgor
ICAgIHN5cy5sYXN0X3RyYWNlYmFjayBhbmQgZnJpZW5kcy4iIiIKICAgICAjIFNpbXVsYXRlIGl0
ZW0gdGhhdCBtaWdodCByYWlzZSBhIHNwZWNpZmljIGV4Y2VwdGlvbiwgZGVwZW5kaW5nIG9uIGBy
YWlzZV9lcnJvcmAgY2xhc3MgdmFyCi0gICAgY2xhc3MgSXRlbU1pZ2h0UmFpc2Uob2JqZWN0KToK
KyAgICBjbGFzcyBJdGVtTWlnaHRSYWlzZToKICAgICAgICAgbm9kZWlkID0gIml0ZW1fdGhhdF9y
YWlzZXMiCiAgICAgICAgIHJhaXNlX2Vycm9yID0gVHJ1ZQogCkBAIC04MjksMjQgKzg4MywyNSBA
QCBkZWYgdGVzdF9zdG9yZV9leGNlcHRfaW5mb19vbl9lcnJvcigpOgogICAgICAgICAgICAgICAg
IHJhaXNlIEluZGV4RXJyb3IoIlRFU1QiKQogCiAgICAgdHJ5OgotICAgICAgICBydW5uZXIucHl0
ZXN0X3J1bnRlc3RfY2FsbChJdGVtTWlnaHRSYWlzZSgpKQorICAgICAgICBydW5uZXIucHl0ZXN0
X3J1bnRlc3RfY2FsbChJdGVtTWlnaHRSYWlzZSgpKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVd
CiAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICAjIENoZWNrIHRoYXQg
ZXhjZXB0aW9uIGluZm8gaXMgc3RvcmVkIG9uIHN5cwogICAgIGFzc2VydCBzeXMubGFzdF90eXBl
IGlzIEluZGV4RXJyb3IKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShzeXMubGFzdF92YWx1ZSwgSW5k
ZXhFcnJvcikKICAgICBhc3NlcnQgc3lzLmxhc3RfdmFsdWUuYXJnc1swXSA9PSAiVEVTVCIKICAg
ICBhc3NlcnQgc3lzLmxhc3RfdHJhY2ViYWNrCiAKICAgICAjIFRoZSBuZXh0IHJ1biBzaG91bGQg
Y2xlYXIgdGhlIGV4Y2VwdGlvbiBpbmZvIHN0b3JlZCBieSB0aGUgcHJldmlvdXMgcnVuCiAgICAg
SXRlbU1pZ2h0UmFpc2UucmFpc2VfZXJyb3IgPSBGYWxzZQotICAgIHJ1bm5lci5weXRlc3RfcnVu
dGVzdF9jYWxsKEl0ZW1NaWdodFJhaXNlKCkpCi0gICAgYXNzZXJ0IHN5cy5sYXN0X3R5cGUgaXMg
Tm9uZQotICAgIGFzc2VydCBzeXMubGFzdF92YWx1ZSBpcyBOb25lCi0gICAgYXNzZXJ0IHN5cy5s
YXN0X3RyYWNlYmFjayBpcyBOb25lCisgICAgcnVubmVyLnB5dGVzdF9ydW50ZXN0X2NhbGwoSXRl
bU1pZ2h0UmFpc2UoKSkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorICAgIGFzc2VydCBub3Qg
aGFzYXR0cihzeXMsICJsYXN0X3R5cGUiKQorICAgIGFzc2VydCBub3QgaGFzYXR0cihzeXMsICJs
YXN0X3ZhbHVlIikKKyAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAibGFzdF90cmFjZWJhY2si
KQogCiAKLWRlZiB0ZXN0X2N1cnJlbnRfdGVzdF9lbnZfdmFyKHRlc3RkaXIsIG1vbmtleXBhdGNo
KToKLSAgICBweXRlc3RfY3VycmVudF90ZXN0X3ZhcnMgPSBbXQorZGVmIHRlc3RfY3VycmVudF90
ZXN0X2Vudl92YXIodGVzdGRpciwgbW9ua2V5cGF0Y2gpIC0+IE5vbmU6CisgICAgcHl0ZXN0X2N1
cnJlbnRfdGVzdF92YXJzID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIHN0cl1dCiAgICAg
bW9ua2V5cGF0Y2guc2V0YXR0cigKICAgICAgICAgc3lzLCAicHl0ZXN0X2N1cnJlbnRfdGVzdF92
YXJzIiwgcHl0ZXN0X2N1cnJlbnRfdGVzdF92YXJzLCByYWlzaW5nPUZhbHNlCiAgICAgKQpAQCAt
ODY5LDI2ICs5MjQsMjEgQEAgZGVmIHRlc3RfY3VycmVudF90ZXN0X2Vudl92YXIodGVzdGRpciwg
bW9ua2V5cGF0Y2gpOgogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0X2lucHJvY2Vzcygp
CiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogICAgIHRlc3RfaWQgPSAidGVzdF9jdXJyZW50
X3Rlc3RfZW52X3Zhci5weTo6dGVzdCIKLSAgICBhc3NlcnQgKAotICAgICAgICBweXRlc3RfY3Vy
cmVudF90ZXN0X3ZhcnMKLSAgICAgICAgPT0gWwotICAgICAgICAgICAgKCJzZXR1cCIsIHRlc3Rf
aWQgKyAiIChzZXR1cCkiKSwKLSAgICAgICAgICAgICgiY2FsbCIsIHRlc3RfaWQgKyAiIChjYWxs
KSIpLAotICAgICAgICAgICAgKCJ0ZWFyZG93biIsIHRlc3RfaWQgKyAiICh0ZWFyZG93bikiKSwK
LSAgICAgICAgXQotICAgICkKKyAgICBhc3NlcnQgcHl0ZXN0X2N1cnJlbnRfdGVzdF92YXJzID09
IFsKKyAgICAgICAgKCJzZXR1cCIsIHRlc3RfaWQgKyAiIChzZXR1cCkiKSwKKyAgICAgICAgKCJj
YWxsIiwgdGVzdF9pZCArICIgKGNhbGwpIiksCisgICAgICAgICgidGVhcmRvd24iLCB0ZXN0X2lk
ICsgIiAodGVhcmRvd24pIiksCisgICAgXQogICAgIGFzc2VydCAiUFlURVNUX0NVUlJFTlRfVEVT
VCIgbm90IGluIG9zLmVudmlyb24KIAogCi1jbGFzcyBUZXN0UmVwb3J0Q29udGVudHMob2JqZWN0
KToKLSAgICAiIiIKLSAgICBUZXN0IHVzZXItbGV2ZWwgQVBJIG9mIGBgVGVzdFJlcG9ydGBgIG9i
amVjdHMuCi0gICAgIiIiCitjbGFzcyBUZXN0UmVwb3J0Q29udGVudHM6CisgICAgIiIiVGVzdCB1
c2VyLWxldmVsIEFQSSBvZiBgYFRlc3RSZXBvcnRgYCBvYmplY3RzLiIiIgogCiAgICAgZGVmIGdl
dHJ1bm5lcihzZWxmKToKICAgICAgICAgcmV0dXJuIGxhbWJkYSBpdGVtOiBydW5uZXIucnVudGVz
dHByb3RvY29sKGl0ZW0sIGxvZz1GYWxzZSkKIAotICAgIGRlZiB0ZXN0X2xvbmdyZXBydGV4dF9w
YXNzKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X2xvbmdyZXBydGV4dF9wYXNzKHNlbGYs
IHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAg
ICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKQEAgLTg5OCw3ICs5
NDgsMzQgQEAgY2xhc3MgVGVzdFJlcG9ydENvbnRlbnRzKG9iamVjdCk6CiAgICAgICAgIHJlcCA9
IHJlcG9ydHNbMV0KICAgICAgICAgYXNzZXJ0IHJlcC5sb25ncmVwcnRleHQgPT0gIiIKIAotICAg
IGRlZiB0ZXN0X2xvbmdyZXBydGV4dF9mYWlsdXJlKHNlbGYsIHRlc3RkaXIpOgorICAgIGRlZiB0
ZXN0X2xvbmdyZXBydGV4dF9za2lwKHNlbGYsIHRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgICIi
IlRlc3RSZXBvcnQubG9uZ3JlcHJ0ZXh0IGNhbiBoYW5kbGUgbm9uLXN0ciBgYGxvbmdyZXByYGAg
YXR0cmlidXRlcyAoIzc1NTkpIiIiCisgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0o
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgICAg
IGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgpCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBfLCBjYWxsX3JlcCwgXyA9IHJlcG9ydHMKKyAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY2FsbF9yZXAubG9uZ3JlcHIsIHR1cGxlKQorICAgICAg
ICBhc3NlcnQgIlNraXBwZWQiIGluIGNhbGxfcmVwLmxvbmdyZXBydGV4dAorCisgICAgZGVmIHRl
c3RfbG9uZ3JlcHJ0ZXh0X2NvbGxlY3Rfc2tpcChzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgorICAg
ICAgICAiIiJDb2xsZWN0UmVwb3J0LmxvbmdyZXBydGV4dCBjYW4gaGFuZGxlIG5vbi1zdHIgYGBs
b25ncmVwcmBgIGF0dHJpYnV0ZXMgKCM3NTU5KSIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZp
bGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAg
ICAgIHB5dGVzdC5za2lwKGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKQorICAgICAgICAgICAgIiIi
CisgICAgICAgICkKKyAgICAgICAgcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICAgICAg
Y2FsbHMgPSByZWMuZ2V0Y2FsbHMoInB5dGVzdF9jb2xsZWN0cmVwb3J0IikKKyAgICAgICAgXywg
Y2FsbCA9IGNhbGxzCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNhbGwucmVwb3J0Lmxvbmdy
ZXByLCB0dXBsZSkKKyAgICAgICAgYXNzZXJ0ICJTa2lwcGVkIiBpbiBjYWxsLnJlcG9ydC5sb25n
cmVwcnRleHQKKworICAgIGRlZiB0ZXN0X2xvbmdyZXBydGV4dF9mYWlsdXJlKHNlbGYsIHRlc3Rk
aXIpIC0+IE5vbmU6CiAgICAgICAgIHJlcG9ydHMgPSB0ZXN0ZGlyLnJ1bml0ZW0oCiAgICAgICAg
ICAgICAiIiIKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKQEAgLTkwOSw3ICs5ODYsNyBA
QCBjbGFzcyBUZXN0UmVwb3J0Q29udGVudHMob2JqZWN0KToKICAgICAgICAgcmVwID0gcmVwb3J0
c1sxXQogICAgICAgICBhc3NlcnQgImFzc2VydCAxID09IDQiIGluIHJlcC5sb25ncmVwcnRleHQK
IAotICAgIGRlZiB0ZXN0X2NhcHR1cmVkX3RleHQoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRl
c3RfY2FwdHVyZWRfdGV4dChzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICByZXBvcnRz
ID0gdGVzdGRpci5ydW5pdGVtKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CkBAIC05MzksNyArMTAxNiw3IEBAIGNsYXNzIFRlc3RSZXBvcnRDb250ZW50cyhvYmpl
Y3QpOgogICAgICAgICBhc3NlcnQgY2FsbC5jYXBzdGRlcnIgPT0gInNldHVwOiBzdGRlcnJcbmNh
bGw6IHN0ZGVyclxuIgogICAgICAgICBhc3NlcnQgdGVhcmRvd24uY2Fwc3RkZXJyID09ICJzZXR1
cDogc3RkZXJyXG5jYWxsOiBzdGRlcnJcbnRlYXJkb3duOiBzdGRlcnJcbiIKIAotICAgIGRlZiB0
ZXN0X25vX2NhcHR1cmVkX3RleHQoc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3Rfbm9fY2Fw
dHVyZWRfdGV4dChzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgogICAgICAgICByZXBvcnRzID0gdGVz
dGRpci5ydW5pdGVtKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5j
KCk6CkBAIC05NDksMyArMTAyNiwyOSBAQCBjbGFzcyBUZXN0UmVwb3J0Q29udGVudHMob2JqZWN0
KToKICAgICAgICAgcmVwID0gcmVwb3J0c1sxXQogICAgICAgICBhc3NlcnQgcmVwLmNhcHN0ZG91
dCA9PSAiIgogICAgICAgICBhc3NlcnQgcmVwLmNhcHN0ZGVyciA9PSAiIgorCisgICAgZGVmIHRl
c3RfbG9uZ3JlcHJfdHlwZShzZWxmLCB0ZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICByZXBvcnRz
ID0gdGVzdGRpci5ydW5pdGVtKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQg
cHl0ZXN0CisgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAgICAgICAgICAgICAgcHl0
ZXN0LmZhaWwocHl0cmFjZT1GYWxzZSkKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAg
cmVwID0gcmVwb3J0c1sxXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXAubG9uZ3JlcHIs
IF9weXRlc3QuX2NvZGUuY29kZS5FeGNlcHRpb25SZXByKQorCisKK2RlZiB0ZXN0X291dGNvbWVf
ZXhjZXB0aW9uX2JhZF9tc2coKSAtPiBOb25lOgorICAgICIiIkNoZWNrIHRoYXQgT3V0Y29tZUV4
Y2VwdGlvbnMgdmFsaWRhdGUgdGhlaXIgaW5wdXQgdG8gcHJldmVudCBjb25mdXNpbmcgZXJyb3Jz
ICgjNTU3OCkiIiIKKworICAgIGRlZiBmdW5jKCkgLT4gTm9uZToKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgIk91dGNvbWVF
eGNlcHRpb24gZXhwZWN0ZWQgc3RyaW5nIGFzICdtc2cnIHBhcmFtZXRlciwgZ290ICdmdW5jdGlv
bicgaW5zdGVhZC5cbiIKKyAgICAgICAgIlBlcmhhcHMgeW91IG1lYW50IHRvIHVzZSBhIG1hcms/
IgorICAgICkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKSBhcyBleGNpbmZvOgor
ICAgICAgICBPdXRjb21lRXhjZXB0aW9uKGZ1bmMpICAjIHR5cGU6IGlnbm9yZQorICAgIGFzc2Vy
dCBzdHIoZXhjaW5mby52YWx1ZSkgPT0gZXhwZWN0ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9ydW5uZXJfeHVuaXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
cnVubmVyX3h1bml0LnB5CmluZGV4IDgzMTZhYWZiZjU2MS4uMWFiYjM1MDQzYjdkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcnVubmVyX3h1bml0LnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXJfeHVuaXQucHkKQEAgLTEsOCArMSw2IEBACi0iIiIK
LSB0ZXN0IGNvcnJlY3Qgc2V0dXAvdGVhcmRvd25zIGF0Ci0gbW9kdWxlLCBjbGFzcywgYW5kIGlu
c3RhbmNlIGxldmVsCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyIiIlRlc3QgY29ycmVjdCBzZXR1cC90ZWFyZG93
bnMgYXQgbW9kdWxlLCBjbGFzcywgYW5kIGluc3RhbmNlIGxldmVsLiIiIgorZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QKKwogaW1wb3J0IHB5dGVzdAogCiAKQEAgLTE2Niw2MiArMTY0LDYgQEAgZGVm
IHRlc3RfbWV0aG9kX3NldHVwX2ZhaWx1cmVfbm9fdGVhcmRvd24odGVzdGRpcik6CiAgICAgcmVw
cmVjLmFzc2VydG91dGNvbWUoZmFpbGVkPTEsIHBhc3NlZD0xKQogCiAKLWRlZiB0ZXN0X21ldGhv
ZF9nZW5lcmF0b3Jfc2V0dXAodGVzdGRpcik6Ci0gICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVf
cnVuc291cmNlKAotICAgICAgICAiIiIKLSAgICAgICAgY2xhc3MgVGVzdFNldHVwVGVhcmRvd25P
bkluc3RhbmNlKG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgc2V0dXBfY2xhc3MoY2xzKToKLSAg
ICAgICAgICAgICAgICBjbHMuY2xhc3NzZXR1cCA9IFRydWUKLQotICAgICAgICAgICAgZGVmIHNl
dHVwX21ldGhvZChzZWxmLCBtZXRob2QpOgotICAgICAgICAgICAgICAgIHNlbGYubWV0aHNldHVw
ID0gbWV0aG9kCi0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2dlbmVyYXRlKHNlbGYpOgotICAgICAg
ICAgICAgICAgIGFzc2VydCBzZWxmLmNsYXNzc2V0dXAKLSAgICAgICAgICAgICAgICBhc3NlcnQg
c2VsZi5tZXRoc2V0dXAgPT0gc2VsZi50ZXN0X2dlbmVyYXRlCi0gICAgICAgICAgICAgICAgeWll
bGQgc2VsZi5nZW5lcmF0ZWQsIDUKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRl
ZCwgMgotCi0gICAgICAgICAgICBkZWYgZ2VuZXJhdGVkKHNlbGYsIHZhbHVlKToKLSAgICAgICAg
ICAgICAgICBhc3NlcnQgc2VsZi5jbGFzc3NldHVwCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHNl
bGYubWV0aHNldHVwID09IHNlbGYudGVzdF9nZW5lcmF0ZQotICAgICAgICAgICAgICAgIGFzc2Vy
dCB2YWx1ZSA9PSA1Ci0gICAgIiIiCi0gICAgKQotICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBh
c3NlZD0xLCBmYWlsZWQ9MSkKLQotCi1kZWYgdGVzdF9mdW5jX2dlbmVyYXRvcl9zZXR1cCh0ZXN0
ZGlyKToKLSAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCi0gICAgICAgICIi
IgotICAgICAgICBpbXBvcnQgc3lzCi0KLSAgICAgICAgZGVmIHNldHVwX21vZHVsZShtb2QpOgot
ICAgICAgICAgICAgcHJpbnQgKCJzZXR1cF9tb2R1bGUiKQotICAgICAgICAgICAgbW9kLnggPSBb
XQotCi0gICAgICAgIGRlZiBzZXR1cF9mdW5jdGlvbihmdW4pOgotICAgICAgICAgICAgcHJpbnQg
KCJzZXR1cF9mdW5jdGlvbiIpCi0gICAgICAgICAgICB4LmFwcGVuZCgxKQotCi0gICAgICAgIGRl
ZiB0ZWFyZG93bl9mdW5jdGlvbihmdW4pOgotICAgICAgICAgICAgcHJpbnQgKCJ0ZWFyZG93bl9m
dW5jdGlvbiIpCi0gICAgICAgICAgICB4LnBvcCgpCi0KLSAgICAgICAgZGVmIHRlc3Rfb25lKCk6
Ci0gICAgICAgICAgICBhc3NlcnQgeCA9PSBbMV0KLSAgICAgICAgICAgIGRlZiBjaGVjaygpOgot
ICAgICAgICAgICAgICAgIHByaW50ICgiY2hlY2siKQotICAgICAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoImVcXG4iKQotICAgICAgICAgICAgICAgIGFzc2VydCB4ID09IFsxXQotICAgICAg
ICAgICAgeWllbGQgY2hlY2sKLSAgICAgICAgICAgIGFzc2VydCB4ID09IFsxXQotICAgICIiIgot
ICAgICkKLSAgICByZXAgPSByZXByZWMubWF0Y2hyZXBvcnQoInRlc3Rfb25lIiwgbmFtZXM9InB5
dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydCIpCi0gICAgYXNzZXJ0IHJlcC5wYXNzZWQKLQotCiBkZWYg
dGVzdF9tZXRob2Rfc2V0dXBfdXNlc19mcmVzaF9pbnN0YW5jZXModGVzdGRpcik6CiAgICAgcmVw
cmVjID0gdGVzdGRpci5pbmxpbmVfcnVuc291cmNlKAogICAgICAgICAiIiIKQEAgLTI5MSwyMCAr
MjMzLDIwIEBAIGRlZiB0ZXN0X3NldHVwX2Z1bmNhcmdfc2V0dXBfd2hlbl9vdXRlcl9zY29wZV9m
YWlscyh0ZXN0ZGlyKToKICAgICAgICAgICAgICIqVmFsdWVFcnJvcio0MioiLAogICAgICAgICAg
ICAgIipmdW5jdGlvbjIqIiwKICAgICAgICAgICAgICIqVmFsdWVFcnJvcio0MioiLAotICAgICAg
ICAgICAgIioyIGVycm9yKiIsCisgICAgICAgICAgICAiKjIgZXJyb3JzKiIsCiAgICAgICAgIF0K
ICAgICApCi0gICAgYXNzZXJ0ICJ4eXo0MyIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAg
ICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKnh5ejQzKiIpCiAKIAogQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJhcmciLCBbIiIsICJhcmciXSkKIGRlZiB0ZXN0X3NldHVwX3RlYXJk
b3duX2Z1bmN0aW9uX2xldmVsX3dpdGhfb3B0aW9uYWxfYXJndW1lbnQoCi0gICAgdGVzdGRpciwg
bW9ua2V5cGF0Y2gsIGFyZwotKToKLSAgICAiIiJwYXJhbWV0ZXIgdG8gc2V0dXAvdGVhcmRvd24g
eHVuaXQtc3R5bGUgZnVuY3Rpb25zIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwgKCMxNzI4KS4i
IiIKKyAgICB0ZXN0ZGlyLCBtb25rZXlwYXRjaCwgYXJnOiBzdHIsCispIC0+IE5vbmU6CisgICAg
IiIiUGFyYW1ldGVyIHRvIHNldHVwL3RlYXJkb3duIHh1bml0LXN0eWxlIGZ1bmN0aW9ucyBwYXJh
bWV0ZXIgaXMgbm93IG9wdGlvbmFsICgjMTcyOCkuIiIiCiAgICAgaW1wb3J0IHN5cwogCi0gICAg
dHJhY2Vfc2V0dXBzX3RlYXJkb3ducyA9IFtdCisgICAgdHJhY2Vfc2V0dXBzX3RlYXJkb3ducyA9
IFtdICAjIHR5cGU6IExpc3Rbc3RyXQogICAgIG1vbmtleXBhdGNoLnNldGF0dHIoCiAgICAgICAg
IHN5cywgInRyYWNlX3NldHVwc190ZWFyZG93bnMiLCB0cmFjZV9zZXR1cHNfdGVhcmRvd25zLCBy
YWlzaW5nPUZhbHNlCiAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X3Nlc3Npb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2Vzc2lvbi5weQppbmRleCA0
YTU5NDAwOWJhYjUuLjE4MDA3NzFkYWQ1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X3Nlc3Npb24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Nlc3Npb24u
cHkKQEAgLTEsMTIgKzEsOCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCiBpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRl
c3QuY29uZmlnIGltcG9ydCBFeGl0Q29kZQogCi1mcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgRVhJ
VF9OT1RFU1RTQ09MTEVDVEVECi0KLQotY2xhc3MgU2Vzc2lvblRlc3RzKG9iamVjdCk6CiAKK2Ns
YXNzIFNlc3Npb25UZXN0czoKICAgICBkZWYgdGVzdF9iYXNpY190ZXN0aXRlbV9ldmVudHMoc2Vs
ZiwgdGVzdGRpcik6CiAgICAgICAgIHRmaWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAg
ICAgICAgIiIiCkBAIC02OCwyOCArNjQsMTQgQEAgY2xhc3MgU2Vzc2lvblRlc3RzKG9iamVjdCk6
CiAgICAgICAgIHBhc3NlZCwgc2tpcHBlZCwgZmFpbGVkID0gcmVwcmVjLmxpc3RvdXRjb21lcygp
CiAgICAgICAgIGFzc2VydCBsZW4oZmFpbGVkKSA9PSAxCiAgICAgICAgIG91dCA9IGZhaWxlZFsw
XS5sb25ncmVwci5yZXByY3Jhc2gubWVzc2FnZQotICAgICAgICBpZiBub3Qgb3V0LmZpbmQoIkRJ
RCBOT1QgUkFJU0UiKSAhPSAtMToKLSAgICAgICAgICAgIHByaW50KG91dCkKLSAgICAgICAgICAg
IHB5dGVzdC5mYWlsKCJpbmNvcnJlY3QgcmFpc2VzKCkgb3V0cHV0IikKLQotICAgIGRlZiB0ZXN0
X2dlbmVyYXRvcl95aWVsZHNfTm9uZShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgcmVwcmVjID0g
dGVzdGRpci5pbmxpbmVfcnVuc291cmNlKAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBk
ZWYgdGVzdF8xKCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgTm9uZQotICAgICAgICAiIiIKLSAg
ICAgICAgKQotICAgICAgICBmYWlsdXJlcyA9IHJlcHJlYy5nZXRmYWlsZWRjb2xsZWN0aW9ucygp
Ci0gICAgICAgIG91dCA9IGZhaWx1cmVzWzBdLmxvbmdyZXByLnJlcHJjcmFzaC5tZXNzYWdlCi0g
ICAgICAgIGkgPSBvdXQuZmluZCgiVHlwZUVycm9yIikKLSAgICAgICAgYXNzZXJ0IGkgIT0gLTEK
KyAgICAgICAgYXNzZXJ0ICJESUQgTk9UIFJBSVNFIiBpbiBvdXQKIAogICAgIGRlZiB0ZXN0X3N5
bnRheF9lcnJvcl9tb2R1bGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHJlcHJlYyA9IHRlc3Rk
aXIuaW5saW5lX3J1bnNvdXJjZSgidGhpcyBpcyByZWFsbHkgbm90IHB5dGhvbiIpCiAgICAgICAg
IHZhbHVlcyA9IHJlcHJlYy5nZXRmYWlsZWRjb2xsZWN0aW9ucygpCiAgICAgICAgIGFzc2VydCBs
ZW4odmFsdWVzKSA9PSAxCiAgICAgICAgIG91dCA9IHN0cih2YWx1ZXNbMF0ubG9uZ3JlcHIpCi0g
ICAgICAgIGFzc2VydCBvdXQuZmluZChzdHIoIm5vdCBweXRob24iKSkgIT0gLTEKKyAgICAgICAg
YXNzZXJ0IG91dC5maW5kKCJub3QgcHl0aG9uIikgIT0gLTEKIAogICAgIGRlZiB0ZXN0X2V4aXRf
Zmlyc3RfcHJvYmxlbShzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcmVwcmVjID0gdGVzdGRpci5p
bmxpbmVfcnVuc291cmNlKApAQCAtMTIwLDE1ICsxMDIsMjEgQEAgY2xhc3MgU2Vzc2lvblRlc3Rz
KG9iamVjdCk6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAi
IiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgY2xhc3MgcmVwcmV4
YyhCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICJIYSBIYSBmb29sZWQgeW91LCBJJ20gYSBicm9rZW4g
cmVwcigpLiIKKwogICAgICAgICAgICAgY2xhc3MgQnJva2VuUmVwcjEob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBmb289MAogICAgICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJIYSBIYSBmb29sZWQgeW91LCBJJ20g
YSBicm9rZW4gcmVwcigpLiIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHJlcHJleGMKIAog
ICAgICAgICAgICAgY2xhc3MgVGVzdEJyb2tlbkNsYXNzKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgZGVmIHRlc3RfZXhwbGljaXRfYmFkX3JlcHIoc2VsZik6CiAgICAgICAgICAgICAgICAgICAg
IHQgPSBCcm9rZW5SZXByMSgpCi0gICAgICAgICAgICAgICAgICAgIHB5dGVzdC5yYWlzZXMoRXhj
ZXB0aW9uLCAncmVwcih0KScpCisgICAgICAgICAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhCYXNlRXhjZXB0aW9uLCBtYXRjaD0iYnJva2VuIHJlcHIiKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcHIodCkKIAogICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2JhZF9y
ZXByMShzZWxmKToKICAgICAgICAgICAgICAgICAgICAgdCA9IEJyb2tlblJlcHIxKCkKQEAgLTEz
OCwxNCArMTI2LDMzIEBAIGNsYXNzIFNlc3Npb25UZXN0cyhvYmplY3QpOgogICAgICAgICApCiAg
ICAgICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bihwKQogICAgICAgICBwYXNzZWQsIHNr
aXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5saXN0b3V0Y29tZXMoKQotICAgICAgICBhc3NlcnQgbGVu
KGZhaWxlZCkgPT0gMQorICAgICAgICBhc3NlcnQgKGxlbihwYXNzZWQpLCBsZW4oc2tpcHBlZCks
IGxlbihmYWlsZWQpKSA9PSAoMSwgMCwgMSkKICAgICAgICAgb3V0ID0gZmFpbGVkWzBdLmxvbmdy
ZXByLnJlcHJjcmFzaC5tZXNzYWdlCi0gICAgICAgIGFzc2VydCAoCi0gICAgICAgICAgICBvdXQu
ZmluZCgKLSAgICAgICAgICAgICAgICAiIiJbRXhjZXB0aW9uKCJIYSBIYSBmb29sZWQgeW91LCBJ
J20gYSBicm9rZW4gcmVwcigpLiIpIHJhaXNlZCBpbiByZXByKCldIiIiCi0gICAgICAgICAgICAp
Ci0gICAgICAgICAgICAhPSAtMQotICAgICAgICApICAjICcKKyAgICAgICAgYXNzZXJ0IG91dC5m
aW5kKCI8W3JlcHJleGMoKSByYWlzZWQgaW4gcmVwcigpXSBCcm9rZW5SZXByMSIpICE9IC0xCisK
KyAgICBkZWYgdGVzdF9icm9rZW5fcmVwcl93aXRoX3Nob3dsb2NhbHNfdmVyYm9zZShzZWxmLCB0
ZXN0ZGlyKToKKyAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIi
IgorICAgICAgICAgICAgY2xhc3MgT2JqV2l0aEVycm9ySW5SZXByOgorICAgICAgICAgICAgICAg
IGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcgorCisgICAgICAgICAgICBkZWYgdGVzdF9yZXByX2Vycm9yKCk6CisgICAgICAg
ICAgICAgICAgeCA9IE9ialdpdGhFcnJvckluUmVwcigpCisgICAgICAgICAgICAgICAgYXNzZXJ0
IHggPT0gInZhbHVlIgorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICByZXByZWMgPSB0
ZXN0ZGlyLmlubGluZV9ydW4oIi0tc2hvd2xvY2FscyIsICItdnYiLCBwKQorICAgICAgICBwYXNz
ZWQsIHNraXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5saXN0b3V0Y29tZXMoKQorICAgICAgICBhc3Nl
cnQgKGxlbihwYXNzZWQpLCBsZW4oc2tpcHBlZCksIGxlbihmYWlsZWQpKSA9PSAoMCwgMCwgMSkK
KyAgICAgICAgZW50cmllcyA9IGZhaWxlZFswXS5sb25ncmVwci5yZXBydHJhY2ViYWNrLnJlcHJl
bnRyaWVzCisgICAgICAgIGFzc2VydCBsZW4oZW50cmllcykgPT0gMQorICAgICAgICByZXByX2xv
Y2FscyA9IGVudHJpZXNbMF0ucmVwcmxvY2FscworICAgICAgICBhc3NlcnQgcmVwcl9sb2NhbHMu
bGluZXMKKyAgICAgICAgYXNzZXJ0IGxlbihyZXByX2xvY2Fscy5saW5lcykgPT0gMQorICAgICAg
ICBhc3NlcnQgcmVwcl9sb2NhbHMubGluZXNbMF0uc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICJ4
ICAgICAgICAgID0gPFtOb3RJbXBsZW1lbnRlZEVycm9yKCkgcmFpc2VkIGluIHJlcHIoKV0gT2Jq
V2l0aEVycm9ySW5SZXByIgorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9za2lwX2ZpbGVfYnlf
Y29uZnRlc3Qoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAg
LTE2MCw3ICsxNjcsNyBAQCBjbGFzcyBTZXNzaW9uVGVzdHMob2JqZWN0KToKICAgICAgICAgKQog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4odGVz
dGRpci50bXBkaXIpCi0gICAgICAgIGV4Y2VwdCBweXRlc3Quc2tpcC5FeGNlcHRpb246CisgICAg
ICAgIGV4Y2VwdCBweXRlc3Quc2tpcC5FeGNlcHRpb246ICAjIHByYWdtYTogbm8gY292ZXIKICAg
ICAgICAgICAgIHB5dGVzdC5mYWlsKCJ3cm9uZyBza2lwcGVkIGNhdWdodCIpCiAgICAgICAgIHJl
cG9ydHMgPSByZXByZWMuZ2V0cmVwb3J0cygicHl0ZXN0X2NvbGxlY3RyZXBvcnQiKQogICAgICAg
ICBhc3NlcnQgbGVuKHJlcG9ydHMpID09IDEKQEAgLTE2OCw3ICsxNzUsNiBAQCBjbGFzcyBTZXNz
aW9uVGVzdHMob2JqZWN0KToKIAogCiBjbGFzcyBUZXN0TmV3U2Vzc2lvbihTZXNzaW9uVGVzdHMp
OgotCiAgICAgZGVmIHRlc3Rfb3JkZXJfb2ZfZXhlY3V0aW9uKHNlbGYsIHRlc3RkaXIpOgogICAg
ICAgICByZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW5zb3VyY2UoCiAgICAgICAgICAgICAiIiIK
QEAgLTE5NCw3ICsyMDAsNiBAQCBjbGFzcyBUZXN0TmV3U2Vzc2lvbihTZXNzaW9uVGVzdHMpOgog
ICAgICAgICBwYXNzZWQsIHNraXBwZWQsIGZhaWxlZCA9IHJlcHJlYy5jb3VudG91dGNvbWVzKCkK
ICAgICAgICAgYXNzZXJ0IGZhaWxlZCA9PSBza2lwcGVkID09IDAKICAgICAgICAgYXNzZXJ0IHBh
c3NlZCA9PSA3Ci0gICAgICAgICMgYWxzbyB0ZXN0IGxpc3RuYW1lcygpIGhlcmUgLi4uCiAKICAg
ICBkZWYgdGVzdF9jb2xsZWN0X29ubHlfd2l0aF92YXJpb3VzX3NpdHVhdGlvbnMoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0yMjAsNyArMjI1LDcg
QEAgY2xhc3MgVGVzdE5ld1Nlc3Npb24oU2Vzc2lvblRlc3RzKToKICAgICAgICAgc3RhcnRlZCA9
IHJlcHJlYy5nZXRjYWxscygicHl0ZXN0X2NvbGxlY3RzdGFydCIpCiAgICAgICAgIGZpbmlzaGVk
ID0gcmVwcmVjLmdldHJlcG9ydHMoInB5dGVzdF9jb2xsZWN0cmVwb3J0IikKICAgICAgICAgYXNz
ZXJ0IGxlbihzdGFydGVkKSA9PSBsZW4oZmluaXNoZWQpCi0gICAgICAgIGFzc2VydCBsZW4oc3Rh
cnRlZCkgPT0gNyAgIyBYWFggZXh0cmEgVG9wQ29sbGVjdG9yCisgICAgICAgIGFzc2VydCBsZW4o
c3RhcnRlZCkgPT0gOAogICAgICAgICBjb2xmYWlsID0gW3ggZm9yIHggaW4gZmluaXNoZWQgaWYg
eC5mYWlsZWRdCiAgICAgICAgIGFzc2VydCBsZW4oY29sZmFpbCkgPT0gMQogCkBAIC0yNDIsMTIg
KzI0Nyw4IEBAIGNsYXNzIFRlc3ROZXdTZXNzaW9uKFNlc3Npb25UZXN0cyk6CiAKIAogZGVmIHRl
c3RfcGx1Z2luX3NwZWNpZnkodGVzdGRpcik6Ci0gICAgcHl0ZXN0LnJhaXNlcygKLSAgICAgICAg
SW1wb3J0RXJyb3IsCi0gICAgICAgICIiIgotICAgICAgICAgICAgdGVzdGRpci5wYXJzZWNvbmZp
ZygiLXAiLCAibnF3ZW90ZXhpc3RlbnQiKQotICAgICIiIiwKLSAgICApCisgICAgd2l0aCBweXRl
c3QucmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgdGVzdGRpci5wYXJzZWNvbmZpZygiLXAi
LCAibnF3ZW90ZXhpc3RlbnQiKQogICAgICMgcHl0ZXN0LnJhaXNlcyhJbXBvcnRFcnJvciwKICAg
ICAjICAgICJjb25maWcuZG9fY29uZmlndXJlKGNvbmZpZykiCiAgICAgIyApCkBAIC0yNzEsMjAg
KzI3Miw0NSBAQCBkZWYgdGVzdF9leGNsdWRlKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKIAogCitkZWYgdGVzdF9leGNsdWRlX2dsb2Io
dGVzdGRpcik6CisgICAgaGVsbG9kaXIgPSB0ZXN0ZGlyLm1rZGlyKCJoZWxsbyIpCisgICAgaGVs
bG9kaXIuam9pbigidGVzdF9oZWxsby5weSIpLndyaXRlKCJ4IHkgc3ludGF4ZXJyb3IiKQorICAg
IGhlbGxvMmRpciA9IHRlc3RkaXIubWtkaXIoImhlbGxvMiIpCisgICAgaGVsbG8yZGlyLmpvaW4o
InRlc3RfaGVsbG8yLnB5Iikud3JpdGUoInggeSBzeW50YXhlcnJvciIpCisgICAgaGVsbG8zZGly
ID0gdGVzdGRpci5ta2RpcigiaGFsbG8zIikKKyAgICBoZWxsbzNkaXIuam9pbigidGVzdF9oZWxs
bzMucHkiKS53cml0ZSgieCB5IHN5bnRheGVycm9yIikKKyAgICBzdWJkaXIgPSB0ZXN0ZGlyLm1r
ZGlyKCJzdWIiKQorICAgIHN1YmRpci5qb2luKCJ0ZXN0X2hlbGxvNC5weSIpLndyaXRlKCJ4IHkg
c3ludGF4ZXJyb3IiKQorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSh0ZXN0X29rPSJkZWYgdGVzdF9w
YXNzKCk6IHBhc3MiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWlnbm9yZS1n
bG9iPSpoW2VhXWxsbyoiKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKyAgICByZXN1bHQu
c3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNzZWQqIl0pCisKKwogZGVmIHRlc3RfZGVzZWxl
Y3QodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICB0ZXN0X2E9IiIi
CiAgICAgICAgIGltcG9ydCBweXRlc3QKKwogICAgICAgICBkZWYgdGVzdF9hMSgpOiBwYXNzCisK
ICAgICAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCdiJywgcmFuZ2UoMykpCiAgICAgICAg
IGRlZiB0ZXN0X2EyKGIpOiBwYXNzCisKKyAgICAgICAgY2xhc3MgVGVzdENsYXNzOgorICAgICAg
ICAgICAgZGVmIHRlc3RfYzEoc2VsZik6IHBhc3MKKworICAgICAgICAgICAgZGVmIHRlc3RfYzIo
c2VsZik6IHBhc3MKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoCi0gICAgICAgICItdiIsICItLWRlc2VsZWN0PXRlc3RfYS5weTo6dGVzdF9hMlsxXSIsICIt
LWRlc2VsZWN0PXRlc3RfYS5weTo6dGVzdF9hMlsyXSIKKyAgICAgICAgIi12IiwKKyAgICAgICAg
Ii0tZGVzZWxlY3Q9dGVzdF9hLnB5Ojp0ZXN0X2EyWzFdIiwKKyAgICAgICAgIi0tZGVzZWxlY3Q9
dGVzdF9hLnB5Ojp0ZXN0X2EyWzJdIiwKKyAgICAgICAgIi0tZGVzZWxlY3Q9dGVzdF9hLnB5OjpU
ZXN0Q2xhc3M6OnRlc3RfYzEiLAogICAgICkKICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCi0g
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjIgcGFzc2VkLCAyIGRlc2VsZWN0ZWQq
Il0pCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjMgcGFzc2VkLCAzIGRlc2Vs
ZWN0ZWQqIl0pCiAgICAgZm9yIGxpbmUgaW4gcmVzdWx0LnN0ZG91dC5saW5lczoKICAgICAgICAg
YXNzZXJ0IG5vdCBsaW5lLnN0YXJ0c3dpdGgoKCJ0ZXN0X2EucHk6OnRlc3RfYTJbMV0iLCAidGVz
dF9hLnB5Ojp0ZXN0X2EyWzJdIikpCiAKQEAgLTMwNCw3ICszMzAsNyBAQCBkZWYgdGVzdF9zZXNz
aW9uZmluaXNoX3dpdGhfc3RhcnQodGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHJlcyA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbGxlY3Qtb25seSIpCi0gICAgYXNzZXJ0IHJlcy5yZXQg
PT0gRVhJVF9OT1RFU1RTQ09MTEVDVEVECisgICAgYXNzZXJ0IHJlcy5yZXQgPT0gRXhpdENvZGUu
Tk9fVEVTVFNfQ09MTEVDVEVECiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXRoIiwg
WyJyb290IiwgIntyZWxhdGl2ZX0vcm9vdCIsICJ7ZW52aXJvbm1lbnR9L3Jvb3QiXSkKQEAgLTMy
NCwxOSArMzUwLDE1IEBAIGRlZiB0ZXN0X3Jvb3RkaXJfb3B0aW9uX2FyZyh0ZXN0ZGlyLCBtb25r
ZXlwYXRjaCwgcGF0aCk6CiAKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1yb290
ZGlyPXt9Ii5mb3JtYXQocGF0aCkpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAot
ICAgICAgICBbIipyb290ZGlyOiB7fS9yb290LCBpbmlmaWxlOioiLmZvcm1hdCh0ZXN0ZGlyLnRt
cGRpciksICIqMSBwYXNzZWQqIl0KKyAgICAgICAgWworICAgICAgICAgICAgIipyb290ZGlyOiB7
fS9yb290Ii5mb3JtYXQodGVzdGRpci50bXBkaXIpLAorICAgICAgICAgICAgInJvb3QvdGVzdF9y
b290ZGlyX29wdGlvbl9hcmcucHkgKiIsCisgICAgICAgICAgICAiKjEgcGFzc2VkKiIsCisgICAg
ICAgIF0KICAgICApCiAKIAogZGVmIHRlc3Rfcm9vdGRpcl93cm9uZ19vcHRpb25fYXJnKHRlc3Rk
aXIpOgotICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9y
dCBvcwotICAgICAgICBkZWYgdGVzdF9vbmUoKToKLSAgICAgICAgICAgIGFzc2VydCAxCi0gICAg
IiIiCi0gICAgKQotCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tcm9vdGRpcj13
cm9uZ19kaXIiKQogICAgIHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcygKICAgICAgICAgWyIq
RGlyZWN0b3J5ICp3cm9uZ19kaXIqIG5vdCBmb3VuZC4gQ2hlY2sgeW91ciAnLS1yb290ZGlyJyBv
cHRpb24uKiJdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zZXR1cF9v
bmx5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3NldHVwb25seS5weQpzaW1pbGFyaXR5
IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9zZXR1cF9v
bmx5LnB5CnJlbmFtZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2V0dXBvbmx5LnB5Cmlu
ZGV4IDRhZTI0YjE1YTZkYS4uYTQzYzg1MDY5NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3B5dGhvbi9zZXR1cF9vbmx5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9zZXR1cG9ubHkucHkKQEAgLTEsNCArMSw3IEBACitpbXBvcnQgc3lzCisKIGltcG9ydCBweXRl
c3QKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IEV4aXRDb2RlCiAKIAogQHB5dGVzdC5maXh0
dXJlKHBhcmFtcz1bIi0tc2V0dXAtb25seSIsICItLXNldHVwLXBsYW4iLCAiLS1zZXR1cC1zaG93
Il0sIHNjb3BlPSJtb2R1bGUiKQpAQCAtNiw4ICs5LDggQEAgZGVmIG1vZGUocmVxdWVzdCk6CiAg
ICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KIAogCi1kZWYgdGVzdF9zaG93X29ubHlfYWN0aXZlX2Zp
eHR1cmVzKHRlc3RkaXIsIG1vZGUpOgotICAgIHAgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCitkZWYg
dGVzdF9zaG93X29ubHlfYWN0aXZlX2ZpeHR1cmVzKHRlc3RkaXIsIG1vZGUsIGR1bW15X3lhbWxf
Y3VzdG9tX3Rlc3QpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgJycnCiAgICAg
ICAgIGltcG9ydCBweXRlc3QKICAgICAgICAgQHB5dGVzdC5maXh0dXJlCkBAIC0yMSwxMyArMjQs
MTMgQEAgZGVmIHRlc3Rfc2hvd19vbmx5X2FjdGl2ZV9maXh0dXJlcyh0ZXN0ZGlyLCBtb2RlKToK
ICAgICAnJycKICAgICApCiAKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChtb2RlLCBw
KQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KG1vZGUpCiAgICAgYXNzZXJ0IHJlc3Vs
dC5yZXQgPT0gMAogCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICBb
IipTRVRVUCAgICBGIGFyZzEqIiwgIip0ZXN0X2FyZzEgKGZpeHR1cmVzIHVzZWQ6IGFyZzEpKiIs
ICIqVEVBUkRPV04gRiBhcmcxKiJdCiAgICAgKQotICAgIGFzc2VydCAiX2FyZzAiIG5vdCBpbiBy
ZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipf
YXJnMCoiKQogCiAKIGRlZiB0ZXN0X3Nob3dfZGlmZmVyZW50X3Njb3Blcyh0ZXN0ZGlyLCBtb2Rl
KToKQEAgLTE0NSwxMCArMTQ4LDEwIEBAIGRlZiB0ZXN0X3Nob3dfZml4dHVyZXNfd2l0aF9wYXJh
bWV0ZXJzKHRlc3RkaXIsIG1vZGUpOgogCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAogICAgICAgICBbCi0gICAgICAgICAgICAiU0VUVVAgICAgUyBhcmdfc2FtZT9mb28/IiwKLSAg
ICAgICAgICAgICJURUFSRE9XTiBTIGFyZ19zYW1lP2Zvbz8iLAotICAgICAgICAgICAgIlNFVFVQ
ICAgIFMgYXJnX3NhbWU/YmFyPyIsCi0gICAgICAgICAgICAiVEVBUkRPV04gUyBhcmdfc2FtZT9i
YXI/IiwKKyAgICAgICAgICAgICJTRVRVUCAgICBTIGFyZ19zYW1lPydmb28nPyIsCisgICAgICAg
ICAgICAiVEVBUkRPV04gUyBhcmdfc2FtZT8nZm9vJz8iLAorICAgICAgICAgICAgIlNFVFVQICAg
IFMgYXJnX3NhbWU/J2Jhcic/IiwKKyAgICAgICAgICAgICJURUFSRE9XTiBTIGFyZ19zYW1lPydi
YXInPyIsCiAgICAgICAgIF0KICAgICApCiAKQEAgLTE3OCw3ICsxODEsNyBAQCBkZWYgdGVzdF9z
aG93X2ZpeHR1cmVzX3dpdGhfcGFyYW1ldGVyX2lkcyh0ZXN0ZGlyLCBtb2RlKToKICAgICBhc3Nl
cnQgcmVzdWx0LnJldCA9PSAwCiAKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0g
ICAgICAgIFsiU0VUVVAgICAgUyBhcmdfc2FtZT9zcGFtPyIsICJTRVRVUCAgICBTIGFyZ19zYW1l
P2hhbT8iXQorICAgICAgICBbIlNFVFVQICAgIFMgYXJnX3NhbWU/J3NwYW0nPyIsICJTRVRVUCAg
ICBTIGFyZ19zYW1lPydoYW0nPyJdCiAgICAgKQogCiAKQEAgLTE5Nyw3ICsyMDAsOSBAQCBkZWYg
dGVzdF9zaG93X2ZpeHR1cmVzX3dpdGhfcGFyYW1ldGVyX2lkc19mdW5jdGlvbih0ZXN0ZGlyLCBt
b2RlKToKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChtb2RlLCBwKQogICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IDAKIAotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipT
RVRVUCAgICBGIGZvb2Jhcj9GT08/IiwgIipTRVRVUCAgICBGIGZvb2Jhcj9CQVI/Il0pCisgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIipTRVRVUCAgICBGIGZvb2Jh
cj8nRk9PJz8iLCAiKlNFVFVQICAgIEYgZm9vYmFyPydCQVInPyJdCisgICAgKQogCiAKIGRlZiB0
ZXN0X2R5bmFtaWNfZml4dHVyZV9yZXF1ZXN0KHRlc3RkaXIpOgpAQCAtMjQ5LDcgKzI1NCw3IEBA
IGRlZiB0ZXN0X2NhcHR1cmluZyh0ZXN0ZGlyKToKIAogCiBkZWYgdGVzdF9zaG93X2ZpeHR1cmVz
X2FuZF9leGVjdXRlX3Rlc3QodGVzdGRpcik6Ci0gICAgIiIiIFZlcmlmaWVzIHRoYXQgc2V0dXBz
IGFyZSBzaG93biBhbmQgdGVzdHMgYXJlIGV4ZWN1dGVkLiAiIiIKKyAgICAiIiJWZXJpZnkgdGhh
dCBzZXR1cHMgYXJlIHNob3duIGFuZCB0ZXN0cyBhcmUgZXhlY3V0ZWQuIiIiCiAgICAgcCA9IHRl
c3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKQEAg
LTI2NywzICsyNzIsNDQgQEAgZGVmIHRlc3Rfc2hvd19maXh0dXJlc19hbmRfZXhlY3V0ZV90ZXN0
KHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWyIq
U0VUVVAgICAgRiBhcmcqIiwgIip0ZXN0X2FyZyAoZml4dHVyZXMgdXNlZDogYXJnKUYqIiwgIipU
RUFSRE9XTiBGIGFyZyoiXQogICAgICkKKworCitkZWYgdGVzdF9zZXR1cF9zaG93X3dpdGhfS2V5
Ym9hcmRJbnRlcnJ1cHRfaW5fdGVzdCh0ZXN0ZGlyKToKKyAgICBwID0gdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBAcHl0ZXN0
LmZpeHR1cmUKKyAgICAgICAgZGVmIGFyZygpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBk
ZWYgdGVzdF9hcmcoYXJnKToKKyAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkK
KyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tc2V0dXAt
c2hvdyIsIHAsIG5vX3JlcmFpc2VfY3RybGM9VHJ1ZSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICIqU0VUVVAgICAgRiBhcmcqIiwKKyAg
ICAgICAgICAgICIqdGVzdF9hcmcgKGZpeHR1cmVzIHVzZWQ6IGFyZykqIiwKKyAgICAgICAgICAg
ICIqVEVBUkRPV04gRiBhcmcqIiwKKyAgICAgICAgICAgICIqISBLZXlib2FyZEludGVycnVwdCAh
KiIsCisgICAgICAgICAgICAiKj0gbm8gdGVzdHMgcmFuIGluICoiLAorICAgICAgICBdCisgICAg
KQorICAgIGFzc2VydCByZXN1bHQucmV0ID09IEV4aXRDb2RlLklOVEVSUlVQVEVECisKKworZGVm
IHRlc3Rfc2hvd19maXh0dXJlX2FjdGlvbl93aXRoX2J5dGVzKHRlc3RkaXIpOgorICAgICMgSXNz
dWUgNzEyNiwgQnl0ZXNXYXJuaW5nIHdoZW4gdXNpbmcgLS1zZXR1cC1zaG93IHdpdGggYnl0ZXMg
cGFyYW1ldGVyCisgICAgdGVzdF9maWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAi
IiIKKyAgICAgICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgnZGF0YScsIFtiJ0hlbGxvIFdvcmxkJ10pCisgICAgICAgIGRlZiB0ZXN0X2RhdGEoZGF0
YSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bigKKyAgICAgICAgc3lzLmV4ZWN1dGFibGUsICItYmIiLCAiLW0iLCAicHl0ZXN0
IiwgIi0tc2V0dXAtc2hvdyIsIHN0cih0ZXN0X2ZpbGUpCisgICAgKQorICAgIGFzc2VydCByZXN1
bHQucmV0ID09IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9zZXR1cHBs
YW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2V0dXBwbGFuLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTI5ZTg4M2NjZTJmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3NldHVwcGxhbi5weQpAQCAtMCwwICsxLDEx
MSBAQAorZGVmIHRlc3Rfc2hvd19maXh0dXJlc19hbmRfdGVzdCh0ZXN0ZGlyLCBkdW1teV95YW1s
X2N1c3RvbV90ZXN0KToKKyAgICAiIiJWZXJpZnkgdGhhdCBmaXh0dXJlcyBhcmUgbm90IGV4ZWN1
dGVkLiIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGlt
cG9ydCBweXRlc3QKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgIGRlZiBhcmcoKToK
KyAgICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICAgICBkZWYgdGVzdF9hcmcoYXJnKToKKyAg
ICAgICAgICAgIGFzc2VydCBGYWxzZQorICAgICIiIgorICAgICkKKworICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCItLXNldHVwLXBsYW4iKQorICAgIGFzc2VydCByZXN1bHQucmV0ID09
IDAKKworICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWyIqU0VUVVAg
ICAgRiBhcmcqIiwgIip0ZXN0X2FyZyAoZml4dHVyZXMgdXNlZDogYXJnKSIsICIqVEVBUkRPV04g
RiBhcmcqIl0KKyAgICApCisKKworZGVmIHRlc3Rfc2hvd19tdWx0aV90ZXN0X2ZpeHR1cmVfc2V0
dXBfYW5kX3RlYXJkb3duX2NvcnJlY3RseV9zaW1wbGUodGVzdGRpcik6CisgICAgIiIiVmVyaWZ5
IHRoYXQgd2hlbiBhIGZpeHR1cmUgbGl2ZXMgZm9yIGxvbmdlciB0aGFuIGEgc2luZ2xlIHRlc3Qs
IC0tc2V0dXAtcGxhbgorICAgIGNvcnJlY3RseSBkaXNwbGF5cyB0aGUgU0VUVVAvVEVBUkRPV04g
aW5kaWNhdG9ycyB0aGUgcmlnaHQgbnVtYmVyIG9mIHRpbWVzLgorCisgICAgQXMgcmVwb3J0ZWQg
aW4gaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy8yMDQ5CisgICAg
LS1zZXR1cC1wbGFuIHdhcyBzaG93aW5nIFNFVFVQL1RFQVJET1dOIG9uIGV2ZXJ5IHRlc3QsIGV2
ZW4gd2hlbiB0aGUgZml4dHVyZQorICAgIHNob3VsZCBwZXJzaXN0IHRocm91Z2ggbXVsdGlwbGUg
dGVzdHMuCisKKyAgICAoTm90ZSB0aGF0IHRoaXMgYnVnIG5ldmVyIGFmZmVjdGVkIGFjdHVhbCB0
ZXN0IGV4ZWN1dGlvbiwgd2hpY2ggdXNlZCB0aGUKKyAgICBjb3JyZWN0IGZpeHR1cmUgbGlmZXRp
bWVzLiBJdCB3YXMgcHVyZWx5IGEgZGlzcGxheSBidWcgZm9yIC0tc2V0dXAtcGxhbiwgYW5kCisg
ICAgZGlkIG5vdCBhZmZlY3QgdGhlIHJlbGF0ZWQgLS1zZXR1cC1zaG93IG9yIC0tc2V0dXAtb25s
eS4pCisgICAgIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAg
ICAgaW1wb3J0IHB5dGVzdAorICAgICAgICBAcHl0ZXN0LmZpeHR1cmUoc2NvcGUgPSAnY2xhc3Mn
KQorICAgICAgICBkZWYgZml4KCk6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0KCkKKyAgICAg
ICAgY2xhc3MgVGVzdENsYXNzOgorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIGZpeCk6
CisgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgICAgICAgICBkZWYgdGVzdF90d28o
c2VsZiwgZml4KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAiIiIKKyAgICAp
CisKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zZXR1cC1wbGFuIikKKyAgICBh
c3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKyAgICBzZXR1cF9mcmFnbWVudCA9ICJTRVRVUCAgICBD
IGZpeCIKKyAgICBzZXR1cF9jb3VudCA9IDAKKworICAgIHRlYXJkb3duX2ZyYWdtZW50ID0gIlRF
QVJET1dOIEMgZml4IgorICAgIHRlYXJkb3duX2NvdW50ID0gMAorCisgICAgZm9yIGxpbmUgaW4g
cmVzdWx0LnN0ZG91dC5saW5lczoKKyAgICAgICAgaWYgc2V0dXBfZnJhZ21lbnQgaW4gbGluZToK
KyAgICAgICAgICAgIHNldHVwX2NvdW50ICs9IDEKKyAgICAgICAgaWYgdGVhcmRvd25fZnJhZ21l
bnQgaW4gbGluZToKKyAgICAgICAgICAgIHRlYXJkb3duX2NvdW50ICs9IDEKKworICAgICMgYmVm
b3JlIHRoZSBmaXggdGhpcyB0ZXN0cywgdGhlcmUgd291bGQgaGF2ZSBiZWVuIGEgc2V0dXAvdGVh
cmRvd24KKyAgICAjIG1lc3NhZ2UgZm9yIGVhY2ggdGVzdCwgc28gdGhlIGNvdW50cyB3b3VsZCBl
YWNoIGhhdmUgYmVlbiAyCisgICAgYXNzZXJ0IHNldHVwX2NvdW50ID09IDEKKyAgICBhc3NlcnQg
dGVhcmRvd25fY291bnQgPT0gMQorCisKK2RlZiB0ZXN0X3Nob3dfbXVsdGlfdGVzdF9maXh0dXJl
X3NldHVwX2FuZF90ZWFyZG93bl9zYW1lX2FzX3NldHVwX3Nob3codGVzdGRpcik6CisgICAgIiIi
VmVyaWZ5IHRoYXQgU0VUVVAvVEVBUkRPV04gbWVzc2FnZXMgbWF0Y2ggd2hhdCBjb21lcyBvdXQg
b2YgLS1zZXR1cC1zaG93LiIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIi
CisgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlID0g
J3Nlc3Npb24nKQorICAgICAgICBkZWYgc2VzcygpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgQHB5dGVzdC5maXh0dXJlKHNjb3BlID0gJ21vZHVsZScpCisgICAgICAgIGRlZiBt
b2QoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIEBweXRlc3QuZml4dHVyZShz
Y29wZSA9ICdjbGFzcycpCisgICAgICAgIGRlZiBjbHMoKToKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZSA9ICdmdW5jdGlvbicpCisgICAgICAg
IGRlZiBmdW5jKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgdGVzdF9v
dXRzaWRlKHNlc3MsIG1vZCwgY2xzLCBmdW5jKToKKyAgICAgICAgICAgIGFzc2VydCBUcnVlCisg
ICAgICAgIGNsYXNzIFRlc3RDbHM6CisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgc2Vz
cywgbW9kLCBjbHMsIGZ1bmMpOgorICAgICAgICAgICAgICAgIGFzc2VydCBUcnVlCisgICAgICAg
ICAgICBkZWYgdGVzdF90d28oc2VsZiwgc2VzcywgbW9kLCBjbHMsIGZ1bmMpOgorICAgICAgICAg
ICAgICAgIGFzc2VydCBUcnVlCisgICAgIiIiCisgICAgKQorCisgICAgcGxhbl9yZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zZXR1cC1wbGFuIikKKyAgICBzaG93X3Jlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItLXNldHVwLXNob3ciKQorCisgICAgIyB0aGUgbnVtYmVyIGFuZCB0ZXh0
IG9mIHRoZXNlIGxpbmVzIHNob3VsZCBiZSBpZGVudGljYWwKKyAgICBwbGFuX2xpbmVzID0gWwor
ICAgICAgICBsaW5lCisgICAgICAgIGZvciBsaW5lIGluIHBsYW5fcmVzdWx0LnN0ZG91dC5saW5l
cworICAgICAgICBpZiAiU0VUVVAiIGluIGxpbmUgb3IgIlRFQVJET1dOIiBpbiBsaW5lCisgICAg
XQorICAgIHNob3dfbGluZXMgPSBbCisgICAgICAgIGxpbmUKKyAgICAgICAgZm9yIGxpbmUgaW4g
c2hvd19yZXN1bHQuc3Rkb3V0LmxpbmVzCisgICAgICAgIGlmICJTRVRVUCIgaW4gbGluZSBvciAi
VEVBUkRPV04iIGluIGxpbmUKKyAgICBdCisKKyAgICBhc3NlcnQgcGxhbl9saW5lcyA9PSBzaG93
X2xpbmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2tpcHBpbmcucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2tpcHBpbmcucHkKaW5kZXggNWQ5NzBlMmZlYTBh
Li5iMzJkMjI2N2QyMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9za2lw
cGluZy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2tpcHBpbmcucHkKQEAgLTEs
ODYgKzEsNzYgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZp
c2lvbiwgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBweXRlc3QKIGltcG9ydCBzeXMKIAotZnJvbSBf
cHl0ZXN0LnNraXBwaW5nIGltcG9ydCBNYXJrRXZhbHVhdG9yLCBmb2xkZWRfc2tpcHMsIHB5dGVz
dF9ydW50ZXN0X3NldHVwCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QucHl0ZXN0ZXIgaW1w
b3J0IFRlc3RkaXIKIGZyb20gX3B5dGVzdC5ydW5uZXIgaW1wb3J0IHJ1bnRlc3Rwcm90b2NvbAor
ZnJvbSBfcHl0ZXN0LnNraXBwaW5nIGltcG9ydCBldmFsdWF0ZV9za2lwX21hcmtzCitmcm9tIF9w
eXRlc3Quc2tpcHBpbmcgaW1wb3J0IGV2YWx1YXRlX3hmYWlsX21hcmtzCitmcm9tIF9weXRlc3Qu
c2tpcHBpbmcgaW1wb3J0IHB5dGVzdF9ydW50ZXN0X3NldHVwCiAKIAotY2xhc3MgVGVzdEV2YWx1
YXRvcihvYmplY3QpOgotCitjbGFzcyBUZXN0RXZhbHVhdGlvbjoKICAgICBkZWYgdGVzdF9ub19t
YXJrZXIoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0oImRl
ZiB0ZXN0X2Z1bmMoKTogcGFzcyIpCi0gICAgICAgIGV2YWxza2lwaWYgPSBNYXJrRXZhbHVhdG9y
KGl0ZW0sICJza2lwaWYiKQotICAgICAgICBhc3NlcnQgbm90IGV2YWxza2lwaWYKLSAgICAgICAg
YXNzZXJ0IG5vdCBldmFsc2tpcGlmLmlzdHJ1ZSgpCisgICAgICAgIHNraXBwZWQgPSBldmFsdWF0
ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgICAgIGFzc2VydCBub3Qgc2tpcHBlZAogCi0gICAgZGVm
IHRlc3RfbWFya2VkX25vX2FyZ3Moc2VsZiwgdGVzdGRpcik6CisgICAgZGVmIHRlc3RfbWFya2Vk
X3hmYWlsX25vX2FyZ3Moc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdl
dGl0ZW0oCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAg
ICAgICAgIEBweXRlc3QubWFyay54eXoKKyAgICAgICAgICAgIEBweXRlc3QubWFyay54ZmFpbAog
ICAgICAgICAgICAgZGVmIHRlc3RfZnVuYygpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAg
ICAgIiIiCiAgICAgICAgICkKLSAgICAgICAgZXYgPSBNYXJrRXZhbHVhdG9yKGl0ZW0sICJ4eXoi
KQotICAgICAgICBhc3NlcnQgZXYKLSAgICAgICAgYXNzZXJ0IGV2LmlzdHJ1ZSgpCi0gICAgICAg
IGV4cGwgPSBldi5nZXRleHBsYW5hdGlvbigpCi0gICAgICAgIGFzc2VydCBleHBsID09ICIiCi0g
ICAgICAgIGFzc2VydCBub3QgZXYuZ2V0KCJydW4iLCBGYWxzZSkKKyAgICAgICAgeGZhaWxlZCA9
IGV2YWx1YXRlX3hmYWlsX21hcmtzKGl0ZW0pCisgICAgICAgIGFzc2VydCB4ZmFpbGVkCisgICAg
ICAgIGFzc2VydCB4ZmFpbGVkLnJlYXNvbiA9PSAiIgorICAgICAgICBhc3NlcnQgeGZhaWxlZC5y
dW4KIAotICAgIGRlZiB0ZXN0X21hcmtlZF9vbmVfYXJnKHNlbGYsIHRlc3RkaXIpOgorICAgIGRl
ZiB0ZXN0X21hcmtlZF9za2lwaWZfbm9fYXJncyhzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRl
bSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnh5eigiaGFzYXR0cihvcywgJ3NlcCcp
IikKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5za2lwaWYKICAgICAgICAgICAgIGRlZiB0ZXN0
X2Z1bmMoKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICIiIgogICAgICAgICApCi0g
ICAgICAgIGV2ID0gTWFya0V2YWx1YXRvcihpdGVtLCAieHl6IikKLSAgICAgICAgYXNzZXJ0IGV2
Ci0gICAgICAgIGFzc2VydCBldi5pc3RydWUoKQotICAgICAgICBleHBsID0gZXYuZ2V0ZXhwbGFu
YXRpb24oKQotICAgICAgICBhc3NlcnQgZXhwbCA9PSAiY29uZGl0aW9uOiBoYXNhdHRyKG9zLCAn
c2VwJykiCi0KLSAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzBdID49
IDMiKQotICAgIGRlZiB0ZXN0X21hcmtlZF9vbmVfYXJnX3VuaWNvZGUoc2VsZiwgdGVzdGRpcik6
CisgICAgICAgIHNraXBwZWQgPSBldmFsdWF0ZV9za2lwX21hcmtzKGl0ZW0pCisgICAgICAgIGFz
c2VydCBza2lwcGVkCisgICAgICAgIGFzc2VydCBza2lwcGVkLnJlYXNvbiA9PSAiIgorCisgICAg
ZGVmIHRlc3RfbWFya2VkX29uZV9hcmcoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0
ZXN0ZGlyLmdldGl0ZW0oCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKLSAgICAgICAgICAgIEBweXRlc3QubWFyay54eXoodSJoYXNhdHRyKG9zLCAnc2VwJykiKQor
ICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnNraXBpZigiaGFzYXR0cihvcywgJ3NlcCcpIikKICAg
ICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAg
ICIiIgogICAgICAgICApCi0gICAgICAgIGV2ID0gTWFya0V2YWx1YXRvcihpdGVtLCAieHl6IikK
LSAgICAgICAgYXNzZXJ0IGV2Ci0gICAgICAgIGFzc2VydCBldi5pc3RydWUoKQotICAgICAgICBl
eHBsID0gZXYuZ2V0ZXhwbGFuYXRpb24oKQotICAgICAgICBhc3NlcnQgZXhwbCA9PSAiY29uZGl0
aW9uOiBoYXNhdHRyKG9zLCAnc2VwJykiCisgICAgICAgIHNraXBwZWQgPSBldmFsdWF0ZV9za2lw
X21hcmtzKGl0ZW0pCisgICAgICAgIGFzc2VydCBza2lwcGVkCisgICAgICAgIGFzc2VydCBza2lw
cGVkLnJlYXNvbiA9PSAiY29uZGl0aW9uOiBoYXNhdHRyKG9zLCAnc2VwJykiCiAKICAgICBkZWYg
dGVzdF9tYXJrZWRfb25lX2FyZ193aXRoX3JlYXNvbihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
aXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAotICAgICAgICAgICAgQHB5dGVzdC5tYXJrLnh5eigiaGFzYXR0cihvcywgJ3Nl
cCcpIiwgYXR0cj0yLCByZWFzb249ImhlbGxvIHdvcmxkIikKKyAgICAgICAgICAgIEBweXRlc3Qu
bWFyay5za2lwaWYoImhhc2F0dHIob3MsICdzZXAnKSIsIGF0dHI9MiwgcmVhc29uPSJoZWxsbyB3
b3JsZCIpCiAgICAgICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CiAgICAgICAgICAgICAgICAgcGFz
cwogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICBldiA9IE1hcmtFdmFsdWF0b3IoaXRl
bSwgInh5eiIpCi0gICAgICAgIGFzc2VydCBldgotICAgICAgICBhc3NlcnQgZXYuaXN0cnVlKCkK
LSAgICAgICAgZXhwbCA9IGV2LmdldGV4cGxhbmF0aW9uKCkKLSAgICAgICAgYXNzZXJ0IGV4cGwg
PT0gImhlbGxvIHdvcmxkIgotICAgICAgICBhc3NlcnQgZXYuZ2V0KCJhdHRyIikgPT0gMgorICAg
ICAgICBza2lwcGVkID0gZXZhbHVhdGVfc2tpcF9tYXJrcyhpdGVtKQorICAgICAgICBhc3NlcnQg
c2tpcHBlZAorICAgICAgICBhc3NlcnQgc2tpcHBlZC5yZWFzb24gPT0gImhlbGxvIHdvcmxkIgog
CiAgICAgZGVmIHRlc3RfbWFya2VkX29uZV9hcmdfdHdpY2Uoc2VsZiwgdGVzdGRpcik6CiAgICAg
ICAgIGxpbmVzID0gWwogICAgICAgICAgICAgIiIiQHB5dGVzdC5tYXJrLnNraXBpZigibm90IGhh
c2F0dHIob3MsICdtdXJrcycpIikiIiIsCi0gICAgICAgICAgICAiIiJAcHl0ZXN0Lm1hcmsuc2tp
cGlmKCJoYXNhdHRyKG9zLCAnbXVya3MnKSIpIiIiLAorICAgICAgICAgICAgIiIiQHB5dGVzdC5t
YXJrLnNraXBpZihjb25kaXRpb249Imhhc2F0dHIob3MsICdtdXJrcycpIikiIiIsCiAgICAgICAg
IF0KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMik6CiAgICAgICAgICAgICBpdGVtID0gdGVz
dGRpci5nZXRpdGVtKApAQCAtOTMsMTEgKzgzLDkgQEAgY2xhc3MgVGVzdEV2YWx1YXRvcihvYmpl
Y3QpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICAgICAgJSAobGluZXNbaV0sIGxpbmVz
WyhpICsgMSkgJSAyXSkKICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGV2ID0gTWFya0V2YWx1
YXRvcihpdGVtLCAic2tpcGlmIikKLSAgICAgICAgICAgIGFzc2VydCBldgotICAgICAgICAgICAg
YXNzZXJ0IGV2LmlzdHJ1ZSgpCi0gICAgICAgICAgICBleHBsID0gZXYuZ2V0ZXhwbGFuYXRpb24o
KQotICAgICAgICAgICAgYXNzZXJ0IGV4cGwgPT0gImNvbmRpdGlvbjogbm90IGhhc2F0dHIob3Ms
ICdtdXJrcycpIgorICAgICAgICAgICAgc2tpcHBlZCA9IGV2YWx1YXRlX3NraXBfbWFya3MoaXRl
bSkKKyAgICAgICAgICAgIGFzc2VydCBza2lwcGVkCisgICAgICAgICAgICBhc3NlcnQgc2tpcHBl
ZC5yZWFzb24gPT0gImNvbmRpdGlvbjogbm90IGhhc2F0dHIob3MsICdtdXJrcycpIgogCiAgICAg
ZGVmIHRlc3RfbWFya2VkX29uZV9hcmdfdHdpY2UyKHNlbGYsIHRlc3RkaXIpOgogICAgICAgICBp
dGVtID0gdGVzdGRpci5nZXRpdGVtKApAQCAtMTA5LDEzICs5NywxMSBAQCBjbGFzcyBUZXN0RXZh
bHVhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAiIiIKICAgICAg
ICAgKQotICAgICAgICBldiA9IE1hcmtFdmFsdWF0b3IoaXRlbSwgInNraXBpZiIpCi0gICAgICAg
IGFzc2VydCBldgotICAgICAgICBhc3NlcnQgZXYuaXN0cnVlKCkKLSAgICAgICAgZXhwbCA9IGV2
LmdldGV4cGxhbmF0aW9uKCkKLSAgICAgICAgYXNzZXJ0IGV4cGwgPT0gImNvbmRpdGlvbjogbm90
IGhhc2F0dHIob3MsICdtdXJrcycpIgorICAgICAgICBza2lwcGVkID0gZXZhbHVhdGVfc2tpcF9t
YXJrcyhpdGVtKQorICAgICAgICBhc3NlcnQgc2tpcHBlZAorICAgICAgICBhc3NlcnQgc2tpcHBl
ZC5yZWFzb24gPT0gImNvbmRpdGlvbjogbm90IGhhc2F0dHIob3MsICdtdXJrcycpIgogCi0gICAg
ZGVmIHRlc3RfbWFya2VkX3NraXBfd2l0aF9ub3Rfc3RyaW5nKHNlbGYsIHRlc3RkaXIpOgorICAg
IGRlZiB0ZXN0X21hcmtlZF9za2lwaWZfd2l0aF9ib29sZWFuX3dpdGhvdXRfcmVhc29uKHNlbGYs
IHRlc3RkaXIpIC0+IE5vbmU6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0oCiAgICAg
ICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKQEAgLTEyNCwxMiArMTEwLDM2
IEBAIGNsYXNzIFRlc3RFdmFsdWF0b3Iob2JqZWN0KToKICAgICAgICAgICAgICAgICBwYXNzCiAg
ICAgICAgICIiIgogICAgICAgICApCi0gICAgICAgIGV2ID0gTWFya0V2YWx1YXRvcihpdGVtLCAi
c2tpcGlmIikKLSAgICAgICAgZXhjID0gcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNlcHRp
b24sIGV2LmlzdHJ1ZSkKLSAgICAgICAgYXNzZXJ0ICIiIkZhaWxlZDogeW91IG5lZWQgdG8gc3Bl
Y2lmeSByZWFzb249U1RSSU5HIHdoZW4gdXNpbmcgYm9vbGVhbnMgYXMgY29uZGl0aW9ucy4iIiIg
aW4gZXhjLnZhbHVlLm1zZworICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMocHl0ZXN0LmZhaWwu
RXhjZXB0aW9uKSBhcyBleGNpbmZvOgorICAgICAgICAgICAgZXZhbHVhdGVfc2tpcF9tYXJrcyhp
dGVtKQorICAgICAgICBhc3NlcnQgZXhjaW5mby52YWx1ZS5tc2cgaXMgbm90IE5vbmUKKyAgICAg
ICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICIiIkVycm9yIGV2YWx1YXRpbmcgJ3NraXBpZic6IHlv
dSBuZWVkIHRvIHNwZWNpZnkgcmVhc29uPVNUUklORyB3aGVuIHVzaW5nIGJvb2xlYW5zIGFzIGNv
bmRpdGlvbnMuIiIiCisgICAgICAgICAgICBpbiBleGNpbmZvLnZhbHVlLm1zZworICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9tYXJrZWRfc2tpcGlmX3dpdGhfaW52YWxpZF9ib29sZWFuKHNlbGYs
IHRlc3RkaXIpIC0+IE5vbmU6CisgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdldGl0ZW0oCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICAgICAgY2xh
c3MgSW52YWxpZEJvb2w6CisgICAgICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIklOVkFMSUQiKQorCisgICAgICAgICAg
ICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKEludmFsaWRCb29sKCksIHJlYXNvbj0ieHh4IikKKyAgICAg
ICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICIi
IgorICAgICAgICApCisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhweXRlc3QuZmFpbC5FeGNl
cHRpb24pIGFzIGV4Y2luZm86CisgICAgICAgICAgICBldmFsdWF0ZV9za2lwX21hcmtzKGl0ZW0p
CisgICAgICAgIGFzc2VydCBleGNpbmZvLnZhbHVlLm1zZyBpcyBub3QgTm9uZQorICAgICAgICBh
c3NlcnQgIkVycm9yIGV2YWx1YXRpbmcgJ3NraXBpZicgY29uZGl0aW9uIGFzIGEgYm9vbGVhbiIg
aW4gZXhjaW5mby52YWx1ZS5tc2cKKyAgICAgICAgYXNzZXJ0ICJJTlZBTElEIiBpbiBleGNpbmZv
LnZhbHVlLm1zZwogCiAgICAgZGVmIHRlc3Rfc2tpcGlmX2NsYXNzKHNlbGYsIHRlc3RkaXIpOgot
ICAgICAgICBpdGVtLCA9IHRlc3RkaXIuZ2V0aXRlbXMoCisgICAgICAgIChpdGVtLCkgPSB0ZXN0
ZGlyLmdldGl0ZW1zKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
CiAgICAgICAgICAgICBjbGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKQEAgLTEzOSwxNCArMTQ5LDEy
IEBAIGNsYXNzIFRlc3RFdmFsdWF0b3Iob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgICkK
ICAgICAgICAgaXRlbS5jb25maWcuX2hhY2t4eXogPSAzCi0gICAgICAgIGV2ID0gTWFya0V2YWx1
YXRvcihpdGVtLCAic2tpcGlmIikKLSAgICAgICAgYXNzZXJ0IGV2LmlzdHJ1ZSgpCi0gICAgICAg
IGV4cGwgPSBldi5nZXRleHBsYW5hdGlvbigpCi0gICAgICAgIGFzc2VydCBleHBsID09ICJjb25k
aXRpb246IGNvbmZpZy5faGFja3h5eiIKLQorICAgICAgICBza2lwcGVkID0gZXZhbHVhdGVfc2tp
cF9tYXJrcyhpdGVtKQorICAgICAgICBhc3NlcnQgc2tpcHBlZAorICAgICAgICBhc3NlcnQgc2tp
cHBlZC5yZWFzb24gPT0gImNvbmRpdGlvbjogY29uZmlnLl9oYWNreHl6IgogCi1jbGFzcyBUZXN0
WEZhaWwob2JqZWN0KToKIAorY2xhc3MgVGVzdFhGYWlsOgogICAgIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgic3RyaWN0IiwgW1RydWUsIEZhbHNlXSkKICAgICBkZWYgdGVzdF94ZmFpbF9zaW1w
bGUoc2VsZiwgdGVzdGRpciwgc3RyaWN0KToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRl
bSgKQEAgLTE4MCw5ICsxODgsNyBAQCBjbGFzcyBUZXN0WEZhaWwob2JqZWN0KToKICAgICAgICAg
YXNzZXJ0IGNhbGxyZXBvcnQud2FzeGZhaWwgPT0gInRoaXMgaXMgYW4geGZhaWwiCiAKICAgICBk
ZWYgdGVzdF94ZmFpbF91c2luZ19wbGF0Zm9ybShzZWxmLCB0ZXN0ZGlyKToKLSAgICAgICAgIiIi
Ci0gICAgICAgIFZlcmlmeSB0aGF0IHBsYXRmb3JtIGNhbiBiZSB1c2VkIHdpdGggeGZhaWwgc3Rh
dGVtZW50cy4KLSAgICAgICAgIiIiCisgICAgICAgICIiIlZlcmlmeSB0aGF0IHBsYXRmb3JtIGNh
biBiZSB1c2VkIHdpdGggeGZhaWwgc3RhdGVtZW50cy4iIiIKICAgICAgICAgaXRlbSA9IHRlc3Rk
aXIuZ2V0aXRlbSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdApA
QCAtMjA5LDcgKzIxNSw3IEBAIGNsYXNzIFRlc3RYRmFpbChvYmplY3QpOgogICAgICAgICBhc3Nl
cnQgbGVuKHJlcG9ydHMpID09IDMKICAgICAgICAgY2FsbHJlcG9ydCA9IHJlcG9ydHNbMV0KICAg
ICAgICAgYXNzZXJ0IGNhbGxyZXBvcnQuZmFpbGVkCi0gICAgICAgIGFzc2VydCBjYWxscmVwb3J0
LmxvbmdyZXByID09ICJbWFBBU1Moc3RyaWN0KV0gbm9wZSIKKyAgICAgICAgYXNzZXJ0IHN0cihj
YWxscmVwb3J0LmxvbmdyZXByKSA9PSAiW1hQQVNTKHN0cmljdCldIG5vcGUiCiAgICAgICAgIGFz
c2VydCBub3QgaGFzYXR0cihjYWxscmVwb3J0LCAid2FzeGZhaWwiKQogCiAgICAgZGVmIHRlc3Rf
eGZhaWxfcnVuX2FueXdheShzZWxmLCB0ZXN0ZGlyKToKQEAgLTIyOCw2ICsyMzQsMzEgQEAgY2xh
c3MgVGVzdFhGYWlsKG9iamVjdCk6CiAgICAgICAgICAgICBbIipkZWYgdGVzdF9mdW5jKCk6KiIs
ICIqYXNzZXJ0IDAqIiwgIioxIGZhaWxlZCoxIHBhc3MqIl0KICAgICAgICAgKQogCisgICAgQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICAgICAidGVzdF9pbnB1dCxleHBlY3RlZCIsCisg
ICAgICAgIFsKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBbIi1ycyJdLAorICAgICAg
ICAgICAgICAgIFsiU0tJUFBFRCBbMV0gdGVzdF9zYW1wbGUucHk6MjogdW5jb25kaXRpb25hbCBz
a2lwIiwgIioxIHNraXBwZWQqIl0sCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIFsiLXJzIiwgIi0tcnVueGZhaWwiXSwKKyAgICAgICAgICAgICAgICBbIlNL
SVBQRUQgWzFdIHRlc3Rfc2FtcGxlLnB5OjI6IHVuY29uZGl0aW9uYWwgc2tpcCIsICIqMSBza2lw
cGVkKiJdLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApCisgICAgZGVmIHRlc3Rf
eGZhaWxfcnVuX3dpdGhfc2tpcF9tYXJrKHNlbGYsIHRlc3RkaXIsIHRlc3RfaW5wdXQsIGV4cGVj
dGVkKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgdGVzdF9zYW1w
bGU9IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBAcHl0ZXN0Lm1h
cmsuc2tpcAorICAgICAgICAgICAgZGVmIHRlc3Rfc2tpcF9sb2NhdGlvbigpIC0+IE5vbmU6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKnRlc3RfaW5wdXQpCisgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X3hmYWlsX2V2YWxm
YWxzZV9idXRfZmFpbHMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGl0ZW0gPSB0ZXN0ZGlyLmdl
dGl0ZW0oCiAgICAgICAgICAgICAiIiIKQEAgLTMyNSw3ICszNTYsNyBAQCBjbGFzcyBUZXN0WEZh
aWwob2JqZWN0KToKICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocCwgIi1yeCIp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipYRkFJTCp0ZXN0X3RoaXMq
IiwgIipyZWFzb246KmhlbGxvKiJdKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dChwLCAiLS1ydW54ZmFpbCIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygi
KjEgcGFzcyoiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBwYXNz
KiJdKQogCiAgICAgZGVmIHRlc3RfeGZhaWxfaW1wZXJhdGl2ZV9pbl9zZXR1cF9mdW5jdGlvbihz
ZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTM5Myw2
ICs0MjQsMzMgQEAgY2xhc3MgVGVzdFhGYWlsKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KHApCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
IioxIHhmYWlsZWQqIl0pCiAKKyAgICBkZWYgdGVzdF9keW5hbWljX3hmYWlsX3NldF9kdXJpbmdf
cnVudGVzdF9mYWlsZWQoc2VsZiwgdGVzdGRpcjogVGVzdGRpcikgLT4gTm9uZToKKyAgICAgICAg
IyBJc3N1ZSAjNzQ4Ni4KKyAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAgICAgZGVmIHRlc3Rf
dGhpcyhyZXF1ZXN0KToKKyAgICAgICAgICAgICAgICByZXF1ZXN0Lm5vZGUuYWRkX21hcmtlcihw
eXRlc3QubWFyay54ZmFpbChyZWFzb249InhmYWlsIikpCisgICAgICAgICAgICAgICAgYXNzZXJ0
IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QocCkKKyAgICAgICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyh4ZmFpbGVkPTEpCisKKyAg
ICBkZWYgdGVzdF9keW5hbWljX3hmYWlsX3NldF9kdXJpbmdfcnVudGVzdF9wYXNzZWRfc3RyaWN0
KAorICAgICAgICBzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAjIElzc3VlICM3NDg2LgorICAgICAgICBwID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAg
ICAgICAgIiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgICAgICBkZWYgdGVz
dF90aGlzKHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHJlcXVlc3Qubm9kZS5hZGRfbWFya2Vy
KHB5dGVzdC5tYXJrLnhmYWlsKHJlYXNvbj0ieGZhaWwiLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHApCisg
ICAgICAgIHJlc3VsdC5hc3NlcnRfb3V0Y29tZXMoZmFpbGVkPTEpCisKICAgICBAcHl0ZXN0Lm1h
cmsucGFyYW1ldHJpemUoCiAgICAgICAgICJleHBlY3RlZCwgYWN0dWFsLCBtYXRjaGxpbmUiLAog
ICAgICAgICBbCkBAIC00MTYsOSArNDc0LDggQEAgY2xhc3MgVGVzdFhGYWlsKG9iamVjdCk6CiAg
ICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbbWF0Y2hsaW5lXSkKIAogICAgIGRl
ZiB0ZXN0X3N0cmljdF9zYW5pdHkoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiInNhbml0eSBj
aGVjayBmb3IgeGZhaWwoc3RyaWN0PVRydWUpOiBhIGZhaWxpbmcgdGVzdCBzaG91bGQgYmVoYXZl
Ci0gICAgICAgIGV4YWN0bHkgbGlrZSBhIG5vcm1hbCB4ZmFpbC4KLSAgICAgICAgIiIiCisgICAg
ICAgICIiIlNhbml0eSBjaGVjayBmb3IgeGZhaWwoc3RyaWN0PVRydWUpOiBhIGZhaWxpbmcgdGVz
dCBzaG91bGQgYmVoYXZlCisgICAgICAgIGV4YWN0bHkgbGlrZSBhIG5vcm1hbCB4ZmFpbC4iIiIK
ICAgICAgICAgcCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgaW1wb3J0IHB5dGVzdApAQCAtNDcxLDcgKzUyOCw3IEBAIGNsYXNzIFRlc3RYRmFpbChv
YmplY3QpOgogICAgICAgICAgICAgJSBzdHJpY3QKICAgICAgICAgKQogICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdChwLCAiLXJ4WCIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygiKjEgcGFzc2VkKiIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIioxIHBhc3NlZCoiXSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAg
ICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzdHJpY3QiLCBbVHJ1ZSwgRmFsc2VdKQpAQCAt
NDg3LDcgKzU0NCw3IEBAIGNsYXNzIFRlc3RYRmFpbChvYmplY3QpOgogICAgICAgICAgICAgJSBz
dHJpY3QKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdChwLCAi
LXJ4WCIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgcGFzc2VkKiIp
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoiXSkKICAg
ICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAgICAgQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJzdHJpY3RfdmFsIiwgWyJ0cnVlIiwgImZhbHNlIl0pCkBAIC01MDksMTIgKzU2NiwxMSBA
QCBjbGFzcyBUZXN0WEZhaWwob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdChwLCAiLXJ4WCIpCiAgICAgICAgIHN0cmljdCA9IHN0cmljdF92YWwg
PT0gInRydWUiCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKjEgZmFpbGVk
KiIgaWYgc3RyaWN0IGVsc2UgIioxIHhwYXNzZWQqIikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKFsiKjEgZmFpbGVkKiIgaWYgc3RyaWN0IGVsc2UgIioxIHhwYXNzZWQqIl0p
CiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09ICgxIGlmIHN0cmljdCBlbHNlIDApCiAKIAot
Y2xhc3MgVGVzdFhGYWlsd2l0aFNldHVwVGVhcmRvd24ob2JqZWN0KToKLQorY2xhc3MgVGVzdFhG
YWlsd2l0aFNldHVwVGVhcmRvd246CiAgICAgZGVmIHRlc3RfZmFpbGluZ19zZXR1cF9pc3N1ZTko
c2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAg
ICIiIgpAQCAtNTQ2LDggKzYwMiw3IEBAIGNsYXNzIFRlc3RYRmFpbHdpdGhTZXR1cFRlYXJkb3du
KG9iamVjdCk6CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHhmYWls
KiJdKQogCiAKLWNsYXNzIFRlc3RTa2lwKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RTa2lwOgogICAg
IGRlZiB0ZXN0X3NraXBfY2xhc3Moc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgpAQCAtNjQ0LDggKzY5OSw3IEBAIGNsYXNzIFRlc3RT
a2lwKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIip1bmNv
bmRpdGlvbmFsIHNraXAqIiwgIioxIHNraXBwZWQqIl0pCiAKIAotY2xhc3MgVGVzdFNraXBpZihv
YmplY3QpOgotCitjbGFzcyBUZXN0U2tpcGlmOgogICAgIGRlZiB0ZXN0X3NraXBpZl9jb25kaXRp
b25hbChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgaXRlbSA9IHRlc3RkaXIuZ2V0aXRlbSgKICAg
ICAgICAgICAgICIiIgpAQCAtNzQ2LDU5ICs4MDAsNDAgQEAgZGVmIHRlc3Rfc2tpcGlmX2NsYXNz
KHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioyIHNraXBwZWQq
Il0pCiAKIAotZGVmIHRlc3Rfc2tpcF9yZWFzb25zX2ZvbGRpbmcoKToKLSAgICBwYXRoID0gInh5
eiIKLSAgICBsaW5lbm8gPSAzCi0gICAgbWVzc2FnZSA9ICJqdXN0c28iCi0gICAgbG9uZ3JlcHIg
PSAocGF0aCwgbGluZW5vLCBtZXNzYWdlKQotCi0gICAgY2xhc3MgWChvYmplY3QpOgotICAgICAg
ICBwYXNzCi0KLSAgICBldjEgPSBYKCkKLSAgICBldjEud2hlbiA9ICJleGVjdXRlIgotICAgIGV2
MS5za2lwcGVkID0gVHJ1ZQotICAgIGV2MS5sb25ncmVwciA9IGxvbmdyZXByCi0KLSAgICBldjIg
PSBYKCkKLSAgICBldjIud2hlbiA9ICJleGVjdXRlIgotICAgIGV2Mi5sb25ncmVwciA9IGxvbmdy
ZXByCi0gICAgZXYyLnNraXBwZWQgPSBUcnVlCi0KLSAgICAjIGV2MyBtaWdodCBiZSBhIGNvbGxl
Y3Rpb24gcmVwb3J0Ci0gICAgZXYzID0gWCgpCi0gICAgZXYzLmxvbmdyZXByID0gbG9uZ3JlcHIK
LSAgICBldjMuc2tpcHBlZCA9IFRydWUKLQotICAgIHZhbHVlcyA9IGZvbGRlZF9za2lwcyhbZXYx
LCBldjIsIGV2M10pCi0gICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDEKLSAgICBudW0sIGZzcGF0
aCwgbGluZW5vLCByZWFzb24gPSB2YWx1ZXNbMF0KLSAgICBhc3NlcnQgbnVtID09IDMKLSAgICBh
c3NlcnQgZnNwYXRoID09IHBhdGgKLSAgICBhc3NlcnQgbGluZW5vID09IGxpbmVubwotICAgIGFz
c2VydCByZWFzb24gPT0gbWVzc2FnZQotCi0KIGRlZiB0ZXN0X3NraXBwZWRfcmVhc29uc19mdW5j
dGlvbmFsKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgdGVzdF9v
bmU9IiIiCisgICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgICAgICBmcm9tIGNvbmZ0
ZXN0IGltcG9ydCBkb3NraXAKKwogICAgICAgICAgICAgZGVmIHNldHVwX2Z1bmN0aW9uKGZ1bmMp
OgogICAgICAgICAgICAgICAgIGRvc2tpcCgpCisKICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMo
KToKICAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgICAgIGNsYXNzIFRlc3RDbGFzcyhv
YmplY3QpOgogICAgICAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKICAgICAgICAg
ICAgICAgICAgICAgZG9za2lwKCkKLSAgICAgICAiIiIsCisKKyAgICAgICAgICAgICAgICBAcHl0
ZXN0Lm1hcmsuc2tpcCgidmlhX2RlY29yYXRvciIpCisgICAgICAgICAgICAgICAgZGVmIHRlc3Rf
ZGVjbyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiLAog
ICAgICAgICBjb25mdGVzdD0iIiIKLSAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAg
ICAgIGltcG9ydCBweXRlc3QsIHN5cwogICAgICAgICAgICAgZGVmIGRvc2tpcCgpOgorICAgICAg
ICAgICAgICAgIGFzc2VydCBzeXMuX2dldGZyYW1lKCkuZl9saW5lbm8gPT0gMwogICAgICAgICAg
ICAgICAgIHB5dGVzdC5za2lwKCd0ZXN0JykKICAgICAgICAgIiIiLAogICAgICkKICAgICByZXN1
bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJzIikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoWyIqU0tJUCoyKmNvbmZ0ZXN0LnB5OjQ6IHRlc3QiXSkKKyAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXNfcmFuZG9tKAorICAgICAgICBbCisgICAgICAgICAgICAiU0tJUFBFRCBb
W10yW11dIGNvbmZ0ZXN0LnB5OjQ6IHRlc3QiLAorICAgICAgICAgICAgIlNLSVBQRUQgW1tdMVtd
XSB0ZXN0X29uZS5weToxNDogdmlhX2RlY29yYXRvciIsCisgICAgICAgIF0KKyAgICApCiAgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAogCiAKQEAgLTg3MiwxMSArOTA3LDIyIEBAIGRlZiB0ZXN0
X3JlcG9ydGNoYXJzX2FsbCh0ZXN0ZGlyKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZGVm
IHRlc3RfNCgpOgogICAgICAgICAgICAgcHl0ZXN0LnNraXAoImZvdXIiKQorICAgICAgICBAcHl0
ZXN0LmZpeHR1cmUKKyAgICAgICAgZGVmIGZhaWwoKToKKyAgICAgICAgICAgIGFzc2VydCAwCisg
ICAgICAgIGRlZiB0ZXN0XzUoZmFpbCk6CisgICAgICAgICAgICBwYXNzCiAgICAgIiIiCiAgICAg
KQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcmEiKQogICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgWyJGQUlMKnRlc3RfMSoiLCAiU0tJUCpmb3VyKiIs
ICJYRkFJTCp0ZXN0XzIqIiwgIlhQQVNTKnRlc3RfMyoiXQorICAgICAgICBbCisgICAgICAgICAg
ICAiU0tJUCpmb3VyKiIsCisgICAgICAgICAgICAiWEZBSUwqdGVzdF8yKiIsCisgICAgICAgICAg
ICAiWFBBU1MqdGVzdF8zKiIsCisgICAgICAgICAgICAiRVJST1IqdGVzdF81KiIsCisgICAgICAg
ICAgICAiRkFJTCp0ZXN0XzEqIiwKKyAgICAgICAgXQogICAgICkKIAogCkBAIC04OTUsOCArOTQx
LDcgQEAgZGVmIHRlc3RfcmVwb3J0Y2hhcnNfYWxsX2Vycm9yKHRlc3RkaXIpOgogICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIkVSUk9SKnRlc3RfZm9vKiJdKQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbCgiaGFzYXR0cihzeXMsICdweXB5X3ZlcnNpb25faW5mbycpIikKLWRlZiB0ZXN0
X2Vycm9yc19pbl94ZmFpbF9za2lwX2V4cHJlc3Npb25zKHRlc3RkaXIpOgorZGVmIHRlc3RfZXJy
b3JzX2luX3hmYWlsX3NraXBfZXhwcmVzc2lvbnModGVzdGRpcikgLT4gTm9uZToKICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC05
MTMsMjAgKzk1OCwyMiBAQCBkZWYgdGVzdF9lcnJvcnNfaW5feGZhaWxfc2tpcF9leHByZXNzaW9u
cyh0ZXN0ZGlyKToKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQogICAg
IG1hcmtsaW5lID0gIiAgICAgICAgICAgICAgICBeIgotICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCJqYXZhIik6Ci0gICAgICAgICMgWFhYIHJlcG9ydCB0aGlzIHRvIGphdmEKLSAgICAg
ICAgbWFya2xpbmUgPSAiKiIgKyBtYXJrbGluZVs4Ol0KKyAgICBweXB5X3ZlcnNpb25faW5mbyA9
IGdldGF0dHIoc3lzLCAicHlweV92ZXJzaW9uX2luZm8iLCBOb25lKQorICAgIGlmIHB5cHlfdmVy
c2lvbl9pbmZvIGlzIG5vdCBOb25lIGFuZCBweXB5X3ZlcnNpb25faW5mbyA8ICg2LCk6CisgICAg
ICAgIG1hcmtsaW5lID0gbWFya2xpbmVbNTpdCisgICAgZWxpZiBzeXMudmVyc2lvbl9pbmZvID49
ICgzLCA4KSBvciBoYXNhdHRyKHN5cywgInB5cHlfdmVyc2lvbl9pbmZvIik6CisgICAgICAgIG1h
cmtsaW5lID0gbWFya2xpbmVbNDpdCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAog
ICAgICAgICBbCiAgICAgICAgICAgICAiKkVSUk9SKnRlc3RfbmFtZWVycm9yKiIsCi0gICAgICAg
ICAgICAiKmV2YWx1YXRpbmcqc2tpcGlmKmV4cHJlc3Npb24qIiwKKyAgICAgICAgICAgICIqZXZh
bHVhdGluZypza2lwaWYqY29uZGl0aW9uKiIsCiAgICAgICAgICAgICAiKmFzZCoiLAogICAgICAg
ICAgICAgIipFUlJPUip0ZXN0X3N5bnRheCoiLAotICAgICAgICAgICAgIipldmFsdWF0aW5nKnhm
YWlsKmV4cHJlc3Npb24qIiwKKyAgICAgICAgICAgICIqZXZhbHVhdGluZyp4ZmFpbCpjb25kaXRp
b24qIiwKICAgICAgICAgICAgICIgICAgc3ludGF4IGVycm9yIiwKICAgICAgICAgICAgIG1hcmts
aW5lLAogICAgICAgICAgICAgIlN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheCIsCi0gICAgICAg
ICAgICAiKjEgcGFzcyoyIGVycm9yKiIsCisgICAgICAgICAgICAiKjEgcGFzcyoyIGVycm9ycyoi
LAogICAgICAgICBdCiAgICAgKQogCkBAIC05NDgsMjUgKzk5NSwxMiBAQCBkZWYgdGVzdF94ZmFp
bF9za2lwaWZfd2l0aF9nbG9iYWxzKHRlc3RkaXIpOgogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbIipTS0lQKnggPT0gMyoiLCAiKlhGQUlMKnRlc3RfYm9vbGVhbioiLCAiKnggPT0g
MyoiXSkKIAogCi1kZWYgdGVzdF9kaXJlY3RfZ2l2ZXNfZXJyb3IodGVzdGRpcik6Ci0gICAgdGVz
dGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAg
ICAgICBAcHl0ZXN0Lm1hcmsuc2tpcGlmKFRydWUpCi0gICAgICAgIGRlZiB0ZXN0X3NraXAxKCk6
Ci0gICAgICAgICAgICBwYXNzCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqMSBlcnJvcioi
XSkKLQotCiBkZWYgdGVzdF9kZWZhdWx0X21hcmtlcnModGVzdGRpcik6CiAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tbWFya2VycyIpCiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAogICAgICAgICBbCi0gICAgICAgICAgICAiKnNraXBpZigqY29uZGl0aW9uKSpza2lw
KiIsCi0gICAgICAgICAgICAiKnhmYWlsKCpjb25kaXRpb24sIHJlYXNvbj1Ob25lLCBydW49VHJ1
ZSwgcmFpc2VzPU5vbmUsIHN0cmljdD1GYWxzZSkqZXhwZWN0ZWQgZmFpbHVyZSoiLAorICAgICAg
ICAgICAgIipza2lwaWYoY29uZGl0aW9uLCAuLi4sIFsqXSwgcmVhc29uPS4uLikqc2tpcCoiLAor
ICAgICAgICAgICAgIip4ZmFpbChjb25kaXRpb24sIC4uLiwgWypdLCByZWFzb249Li4uLCBydW49
VHJ1ZSwgcmFpc2VzPU5vbmUsIHN0cmljdD14ZmFpbF9zdHJpY3QpKmV4cGVjdGVkIGZhaWx1cmUq
IiwKICAgICAgICAgXQogICAgICkKIApAQCAtOTg5LDcgKzEwMjMsNyBAQCBkZWYgdGVzdF94ZmFp
bF90ZXN0X3NldHVwX2V4Y2VwdGlvbih0ZXN0ZGlyKToKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdChwKQogICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKICAgICBhc3NlcnQgInhmYWls
ZWQiIGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKLSAgICBhc3NlcnQgInhwYXNzZWQiIG5vdCBpbiBy
ZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIip4
cGFzc2VkKiIpCiAKIAogZGVmIHRlc3RfaW1wZXJhdGl2ZXNraXBfb25feGZhaWxfdGVzdCh0ZXN0
ZGlyKToKQEAgLTEwMjIsOCArMTA1Niw3IEBAIGRlZiB0ZXN0X2ltcGVyYXRpdmVza2lwX29uX3hm
YWlsX3Rlc3QodGVzdGRpcik6CiAgICAgKQogCiAKLWNsYXNzIFRlc3RCb29sZWFuQ29uZGl0aW9u
KG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RCb29sZWFuQ29uZGl0aW9uOgogICAgIGRlZiB0ZXN0X3Nr
aXBpZihzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAg
ICAgICAgIiIiCkBAIC0xMDkwLDcgKzExMjMsNyBAQCBkZWYgdGVzdF94ZmFpbF9pdGVtKHRlc3Rk
aXIpOgogICAgICAgICAgICAgICAgIHB5dGVzdC54ZmFpbCgiRXhwZWN0ZWQgRmFpbHVyZSIpCiAK
ICAgICAgICAgZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKLSAgICAgICAg
ICAgIHJldHVybiBNeUl0ZW0oImZvbyIsIHBhcmVudCkKKyAgICAgICAgICAgIHJldHVybiBNeUl0
ZW0uZnJvbV9wYXJlbnQobmFtZT0iZm9vIiwgcGFyZW50PXBhcmVudCkKICAgICAiIiIKICAgICAp
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKQEAgLTExMDEsMjUgKzExMzQsMjQg
QEAgZGVmIHRlc3RfeGZhaWxfaXRlbSh0ZXN0ZGlyKToKIAogCiBkZWYgdGVzdF9tb2R1bGVfbGV2
ZWxfc2tpcF9lcnJvcih0ZXN0ZGlyKToKLSAgICAiIiIKLSAgICBWZXJpZnkgdGhhdCB1c2luZyBw
eXRlc3Quc2tpcCBhdCBtb2R1bGUgbGV2ZWwgY2F1c2VzIGEgY29sbGVjdGlvbiBlcnJvcgotICAg
ICIiIgorICAgICIiIlZlcmlmeSB0aGF0IHVzaW5nIHB5dGVzdC5za2lwIGF0IG1vZHVsZSBsZXZl
bCBjYXVzZXMgYSBjb2xsZWN0aW9uIGVycm9yLiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
ICAgICAgICAgIiIiCiAgICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgQHB5dGVzdC5za2lw
CisgICAgICAgIHB5dGVzdC5za2lwKCJza2lwX21vZHVsZV9sZXZlbCIpCisKICAgICAgICAgZGVm
IHRlc3RfZnVuYygpOgogICAgICAgICAgICAgYXNzZXJ0IFRydWUKICAgICAiIiIKICAgICApCiAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcygiKlVzaW5nIHB5dGVzdC5za2lwIG91dHNpZGUgb2YgYSB0ZXN0IGlzIG5vdCBhbGxv
d2VkKiIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbIipVc2lu
ZyBweXRlc3Quc2tpcCBvdXRzaWRlIG9mIGEgdGVzdCBpcyBub3QgYWxsb3dlZCoiXQorICAgICkK
IAogCiBkZWYgdGVzdF9tb2R1bGVfbGV2ZWxfc2tpcF93aXRoX2FsbG93X21vZHVsZV9sZXZlbCh0
ZXN0ZGlyKToKLSAgICAiIiIKLSAgICBWZXJpZnkgdGhhdCB1c2luZyBweXRlc3Quc2tpcChhbGxv
d19tb2R1bGVfbGV2ZWw9VHJ1ZSkgaXMgYWxsb3dlZAotICAgICIiIgorICAgICIiIlZlcmlmeSB0
aGF0IHVzaW5nIHB5dGVzdC5za2lwKGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKSBpcyBhbGxvd2Vk
LiIiIgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgIiIiCiAgICAgICAgIGltcG9y
dCBweXRlc3QKQEAgLTExMzAsMTMgKzExNjIsMTEgQEAgZGVmIHRlc3RfbW9kdWxlX2xldmVsX3Nr
aXBfd2l0aF9hbGxvd19tb2R1bGVfbGV2ZWwodGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcnhzIikKLSAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoIipTS0lQKnNraXBfbW9kdWxlX2xldmVsIikKKyAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoWyIqU0tJUCpza2lwX21vZHVsZV9sZXZlbCJdKQogCiAKIGRlZiB0ZXN0
X2ludmFsaWRfc2tpcF9rZXl3b3JkX3BhcmFtZXRlcih0ZXN0ZGlyKToKLSAgICAiIiIKLSAgICBW
ZXJpZnkgdGhhdCB1c2luZyBweXRlc3Quc2tpcCgpIHdpdGggdW5rbm93biBwYXJhbWV0ZXIgcmFp
c2VzIGFuIGVycm9yCi0gICAgIiIiCisgICAgIiIiVmVyaWZ5IHRoYXQgdXNpbmcgcHl0ZXN0LnNr
aXAoKSB3aXRoIHVua25vd24gcGFyYW1ldGVyIHJhaXNlcyBhbiBlcnJvci4iIiIKICAgICB0ZXN0
ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC0x
MTQ3LDcgKzExNzcsNyBAQCBkZWYgdGVzdF9pbnZhbGlkX3NraXBfa2V5d29yZF9wYXJhbWV0ZXIo
dGVzdGRpcik6CiAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIipUeXBlRXJyb3I6KlsndW5rbm93
biddKiIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKlR5cGVFcnJvcjoqWyd1
bmtub3duJ10qIl0pCiAKIAogZGVmIHRlc3RfbWFya194ZmFpbF9pdGVtKHRlc3RkaXIpOgpAQCAt
MTE1OSwxMyArMTE4OSwxNSBAQCBkZWYgdGVzdF9tYXJrX3hmYWlsX2l0ZW0odGVzdGRpcik6CiAg
ICAgICAgIGNsYXNzIE15SXRlbShweXRlc3QuSXRlbSk6CiAgICAgICAgICAgICBub2RlaWQgPSAn
Zm9vJwogICAgICAgICAgICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICAgICAgICAgIG1hcmtl
ciA9IHB5dGVzdC5tYXJrLnhmYWlsKFRydWUsIHJlYXNvbj0iRXhwZWN0ZWQgZmFpbHVyZSIpCisg
ICAgICAgICAgICAgICAgbWFya2VyID0gcHl0ZXN0Lm1hcmsueGZhaWwoIjEgPT0gMiIsIHJlYXNv
bj0iRXhwZWN0ZWQgZmFpbHVyZSAtIGZhbHNlIikKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9t
YXJrZXIobWFya2VyKQorICAgICAgICAgICAgICAgIG1hcmtlciA9IHB5dGVzdC5tYXJrLnhmYWls
KFRydWUsIHJlYXNvbj0iRXhwZWN0ZWQgZmFpbHVyZSAtIHRydWUiKQogICAgICAgICAgICAgICAg
IHNlbGYuYWRkX21hcmtlcihtYXJrZXIpCiAgICAgICAgICAgICBkZWYgcnVudGVzdChzZWxmKToK
ICAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKIAogICAgICAgICBkZWYgcHl0ZXN0X2NvbGxl
Y3RfZmlsZShwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgcmV0dXJuIE15SXRlbSgiZm9vIiwg
cGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIE15SXRlbS5mcm9tX3BhcmVudChuYW1lPSJmb28i
LCBwYXJlbnQ9cGFyZW50KQogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLmlu
bGluZV9ydW4oKQpAQCAtMTE4OSw2ICsxMjIxLDMxIEBAIGRlZiB0ZXN0X3N1bW1hcnlfbGlzdF9h
ZnRlcl9lcnJvcnModGVzdGRpcik6CiAgICAgICAgIFsKICAgICAgICAgICAgICI9KiBGQUlMVVJF
UyAqPSIsCiAgICAgICAgICAgICAiKj0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPSoiLAotICAg
ICAgICAgICAgIkZBSUwgdGVzdF9zdW1tYXJ5X2xpc3RfYWZ0ZXJfZXJyb3JzLnB5Ojp0ZXN0X2Zh
aWwiLAorICAgICAgICAgICAgIkZBSUxFRCB0ZXN0X3N1bW1hcnlfbGlzdF9hZnRlcl9lcnJvcnMu
cHk6OnRlc3RfZmFpbCAtIGFzc2VydCAwIiwKICAgICAgICAgXQogICAgICkKKworCitkZWYgdGVz
dF9pbXBvcnRvcnNraXAoKToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoCisgICAgICAgIHB5dGVz
dC5za2lwLkV4Y2VwdGlvbiwKKyAgICAgICAgbWF0Y2g9Il5jb3VsZCBub3QgaW1wb3J0ICdkb2Vz
bm90ZXhpc3QnOiBObyBtb2R1bGUgbmFtZWQgLioiLAorICAgICk6CisgICAgICAgIHB5dGVzdC5p
bXBvcnRvcnNraXAoImRvZXNub3RleGlzdCIpCisKKworZGVmIHRlc3RfcmVscGF0aF9yb290ZGly
KHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgKip7CisgICAgICAg
ICAgICAidGVzdHMvdGVzdF8xLnB5IjogIiIiCisgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAg
ICAgQHB5dGVzdC5tYXJrLnNraXAoKQorICAgICAgICBkZWYgdGVzdF9wYXNzKCk6CisgICAgICAg
ICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisgICAgICAgIH0KKyAgICApCisgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ycyIsICJ0ZXN0cy90ZXN0XzEucHkiLCAiLS1yb290ZGly
PXRlc3RzIikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsiU0tJ
UFBFRCBbW10xW11dIHRlc3RzL3Rlc3RfMS5weToyOiB1bmNvbmRpdGlvbmFsIHNraXAiXQorICAg
ICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9zdGVwd2lzZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9zdGVwd2lzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmRmNjZkNzk4YmJlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvdGVzdF9zdGVwd2lzZS5weQpAQCAtMCwwICsxLDIyOSBAQAoraW1wb3J0
IHB5dGVzdAorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHN0ZXB3aXNlX3Rlc3RkaXIodGVzdGRp
cik6CisgICAgIyBSYXRoZXIgdGhhbiBoYXZpbmcgdG8gbW9kaWZ5IG91ciB0ZXN0ZmlsZSBiZXR3
ZWVuIHRlc3RzLCB3ZSBpbnRyb2R1Y2UKKyAgICAjIGEgZmxhZyBmb3Igd2hldGhlciBvciBub3Qg
dGhlIHNlY29uZCB0ZXN0IHNob3VsZCBmYWlsLgorICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAor
ICAgICAgICAiIiIKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CisgICAgZ3JvdXAgPSBw
YXJzZXIuZ2V0Z3JvdXAoJ2dlbmVyYWwnKQorICAgIGdyb3VwLmFkZG9wdGlvbignLS1mYWlsJywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nZmFpbCcpCisgICAgZ3JvdXAuYWRkb3B0aW9uKCct
LWZhaWwtbGFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J2ZhaWxfbGFzdCcpCisiIiIK
KyAgICApCisKKyAgICAjIENyZWF0ZSBhIHNpbXBsZSB0ZXN0IHN1aXRlLgorICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgdGVzdF9hPSIiIgorZGVmIHRlc3Rfc3VjY2Vzc19iZWZvcmVf
ZmFpbCgpOgorICAgIGFzc2VydCAxCisKK2RlZiB0ZXN0X2ZhaWxfb25fZmxhZyhyZXF1ZXN0KToK
KyAgICBhc3NlcnQgbm90IHJlcXVlc3QuY29uZmlnLmdldHZhbHVlKCdmYWlsJykKKworZGVmIHRl
c3Rfc3VjY2Vzc19hZnRlcl9mYWlsKCk6CisgICAgYXNzZXJ0IDEKKworZGVmIHRlc3RfZmFpbF9s
YXN0X29uX2ZsYWcocmVxdWVzdCk6CisgICAgYXNzZXJ0IG5vdCByZXF1ZXN0LmNvbmZpZy5nZXR2
YWx1ZSgnZmFpbF9sYXN0JykKKworZGVmIHRlc3Rfc3VjY2Vzc19hZnRlcl9sYXN0X2ZhaWwoKToK
KyAgICBhc3NlcnQgMQorIiIiCisgICAgKQorCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAg
ICAgICB0ZXN0X2I9IiIiCitkZWYgdGVzdF9zdWNjZXNzKCk6CisgICAgYXNzZXJ0IDEKKyIiIgor
ICAgICkKKworICAgICMgY3VzdG9taXplIGNhY2hlIGRpcmVjdG9yeSBzbyB3ZSBkb24ndCB1c2Ug
dGhlIHRveCdzIGNhY2hlIGRpcmVjdG9yeSwgd2hpY2ggbWFrZXMgdGVzdHMgaW4gdGhpcyBtb2R1
bGUgZmxha3kKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICIiIgorICAgICAgICBbcHl0
ZXN0XQorICAgICAgICBjYWNoZV9kaXIgPSAuY2FjaGUKKyAgICAiIiIKKyAgICApCisKKyAgICBy
ZXR1cm4gdGVzdGRpcgorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGVycm9yX3Rlc3RkaXIodGVz
dGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICB0ZXN0X2E9IiIiCitkZWYg
dGVzdF9lcnJvcihub25leGlzdGluZ19maXh0dXJlKToKKyAgICBhc3NlcnQgMQorCitkZWYgdGVz
dF9zdWNjZXNzX2FmdGVyX2ZhaWwoKToKKyAgICBhc3NlcnQgMQorIiIiCisgICAgKQorCisgICAg
cmV0dXJuIHRlc3RkaXIKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBicm9rZW5fdGVzdGRpcih0
ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgIHdvcmtpbmdfdGVzdGZp
bGU9ImRlZiB0ZXN0X3Byb3BlcigpOiBhc3NlcnQgMSIsIGJyb2tlbl90ZXN0ZmlsZT0iZm9vYmFy
IgorICAgICkKKyAgICByZXR1cm4gdGVzdGRpcgorCisKK2RlZiBfc3RyaXBfcmVzb3VyY2Vfd2Fy
bmluZ3MobGluZXMpOgorICAgICMgU3RyaXAgdW5yZWxpYWJsZSBSZXNvdXJjZVdhcm5pbmdzLCBz
byBuby1vdXRwdXQgYXNzZXJ0aW9ucyBvbiBzdGRlcnIgY2FuIHdvcmsuCisgICAgIyAoaHR0cHM6
Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0L2lzc3Vlcy81MDg4KQorICAgIHJldHVybiBb
CisgICAgICAgIHgKKyAgICAgICAgZm9yIHggaW4gbGluZXMKKyAgICAgICAgaWYgbm90IHguc3Rh
cnRzd2l0aCgoIkV4Y2VwdGlvbiBpZ25vcmVkIGluOiIsICJSZXNvdXJjZVdhcm5pbmciKSkKKyAg
ICBdCisKKworZGVmIHRlc3RfcnVuX3dpdGhvdXRfc3RlcHdpc2Uoc3RlcHdpc2VfdGVzdGRpcik6
CisgICAgcmVzdWx0ID0gc3RlcHdpc2VfdGVzdGRpci5ydW5weXRlc3QoIi12IiwgIi0tc3RyaWN0
LW1hcmtlcnMiLCAiLS1mYWlsIikKKworICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhb
Iip0ZXN0X3N1Y2Nlc3NfYmVmb3JlX2ZhaWwgUEFTU0VEKiJdKQorICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbIip0ZXN0X2ZhaWxfb25fZmxhZyBGQUlMRUQqIl0pCisgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Rfc3VjY2Vzc19hZnRlcl9mYWlsIFBBU1NFRCoi
XSkKKworCitkZWYgdGVzdF9mYWlsX2FuZF9jb250aW51ZV93aXRoX3N0ZXB3aXNlKHN0ZXB3aXNl
X3Rlc3RkaXIpOgorICAgICMgUnVuIHRoZSB0ZXN0cyB3aXRoIGEgZmFpbGluZyBzZWNvbmQgdGVz
dC4KKyAgICByZXN1bHQgPSBzdGVwd2lzZV90ZXN0ZGlyLnJ1bnB5dGVzdCgKKyAgICAgICAgIi12
IiwgIi0tc3RyaWN0LW1hcmtlcnMiLCAiLS1zdGVwd2lzZSIsICItLWZhaWwiCisgICAgKQorICAg
IGFzc2VydCBfc3RyaXBfcmVzb3VyY2Vfd2FybmluZ3MocmVzdWx0LnN0ZGVyci5saW5lcykgPT0g
W10KKworICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAjIE1ha2Ugc3VyZSB3
ZSBzdG9wIGFmdGVyIGZpcnN0IGZhaWxpbmcgdGVzdC4KKyAgICBhc3NlcnQgInRlc3Rfc3VjY2Vz
c19iZWZvcmVfZmFpbCBQQVNTRUQiIGluIHN0ZG91dAorICAgIGFzc2VydCAidGVzdF9mYWlsX29u
X2ZsYWcgRkFJTEVEIiBpbiBzdGRvdXQKKyAgICBhc3NlcnQgInRlc3Rfc3VjY2Vzc19hZnRlcl9m
YWlsIiBub3QgaW4gc3Rkb3V0CisKKyAgICAjICJGaXgiIHRoZSB0ZXN0IHRoYXQgZmFpbGVkIGlu
IHRoZSBsYXN0IHJ1biBhbmQgcnVuIGl0IGFnYWluLgorICAgIHJlc3VsdCA9IHN0ZXB3aXNlX3Rl
c3RkaXIucnVucHl0ZXN0KCItdiIsICItLXN0cmljdC1tYXJrZXJzIiwgIi0tc3RlcHdpc2UiKQor
ICAgIGFzc2VydCBfc3RyaXBfcmVzb3VyY2Vfd2FybmluZ3MocmVzdWx0LnN0ZGVyci5saW5lcykg
PT0gW10KKworICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAjIE1ha2Ugc3Vy
ZSB0aGUgbGF0ZXN0IGZhaWxpbmcgdGVzdCBydW5zIGFuZCB0aGVuIGNvbnRpbnVlcy4KKyAgICBh
c3NlcnQgInRlc3Rfc3VjY2Vzc19iZWZvcmVfZmFpbCIgbm90IGluIHN0ZG91dAorICAgIGFzc2Vy
dCAidGVzdF9mYWlsX29uX2ZsYWcgUEFTU0VEIiBpbiBzdGRvdXQKKyAgICBhc3NlcnQgInRlc3Rf
c3VjY2Vzc19hZnRlcl9mYWlsIFBBU1NFRCIgaW4gc3Rkb3V0CisKKworZGVmIHRlc3RfcnVuX3dp
dGhfc2tpcF9vcHRpb24oc3RlcHdpc2VfdGVzdGRpcik6CisgICAgcmVzdWx0ID0gc3RlcHdpc2Vf
dGVzdGRpci5ydW5weXRlc3QoCisgICAgICAgICItdiIsCisgICAgICAgICItLXN0cmljdC1tYXJr
ZXJzIiwKKyAgICAgICAgIi0tc3RlcHdpc2UiLAorICAgICAgICAiLS1zdGVwd2lzZS1za2lwIiwK
KyAgICAgICAgIi0tZmFpbCIsCisgICAgICAgICItLWZhaWwtbGFzdCIsCisgICAgKQorICAgIGFz
c2VydCBfc3RyaXBfcmVzb3VyY2Vfd2FybmluZ3MocmVzdWx0LnN0ZGVyci5saW5lcykgPT0gW10K
KworICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICAjIE1ha2Ugc3VyZSBmaXJz
dCBmYWlsIGlzIGlnbm9yZSBhbmQgc2Vjb25kIGZhaWwgc3RvcHMgdGhlIHRlc3QgcnVuLgorICAg
IGFzc2VydCAidGVzdF9mYWlsX29uX2ZsYWcgRkFJTEVEIiBpbiBzdGRvdXQKKyAgICBhc3NlcnQg
InRlc3Rfc3VjY2Vzc19hZnRlcl9mYWlsIFBBU1NFRCIgaW4gc3Rkb3V0CisgICAgYXNzZXJ0ICJ0
ZXN0X2ZhaWxfbGFzdF9vbl9mbGFnIEZBSUxFRCIgaW4gc3Rkb3V0CisgICAgYXNzZXJ0ICJ0ZXN0
X3N1Y2Nlc3NfYWZ0ZXJfbGFzdF9mYWlsIiBub3QgaW4gc3Rkb3V0CisKKworZGVmIHRlc3RfZmFp
bF9vbl9lcnJvcnMoZXJyb3JfdGVzdGRpcik6CisgICAgcmVzdWx0ID0gZXJyb3JfdGVzdGRpci5y
dW5weXRlc3QoIi12IiwgIi0tc3RyaWN0LW1hcmtlcnMiLCAiLS1zdGVwd2lzZSIpCisKKyAgICBh
c3NlcnQgX3N0cmlwX3Jlc291cmNlX3dhcm5pbmdzKHJlc3VsdC5zdGRlcnIubGluZXMpID09IFtd
CisgICAgc3Rkb3V0ID0gcmVzdWx0LnN0ZG91dC5zdHIoKQorCisgICAgYXNzZXJ0ICJ0ZXN0X2Vy
cm9yIEVSUk9SIiBpbiBzdGRvdXQKKyAgICBhc3NlcnQgInRlc3Rfc3VjY2Vzc19hZnRlcl9mYWls
IiBub3QgaW4gc3Rkb3V0CisKKworZGVmIHRlc3RfY2hhbmdlX3Rlc3RmaWxlKHN0ZXB3aXNlX3Rl
c3RkaXIpOgorICAgIHJlc3VsdCA9IHN0ZXB3aXNlX3Rlc3RkaXIucnVucHl0ZXN0KAorICAgICAg
ICAiLXYiLCAiLS1zdHJpY3QtbWFya2VycyIsICItLXN0ZXB3aXNlIiwgIi0tZmFpbCIsICJ0ZXN0
X2EucHkiCisgICAgKQorICAgIGFzc2VydCBfc3RyaXBfcmVzb3VyY2Vfd2FybmluZ3MocmVzdWx0
LnN0ZGVyci5saW5lcykgPT0gW10KKworICAgIHN0ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkK
KyAgICBhc3NlcnQgInRlc3RfZmFpbF9vbl9mbGFnIEZBSUxFRCIgaW4gc3Rkb3V0CisKKyAgICAj
IE1ha2Ugc3VyZSB0aGUgc2Vjb25kIHRlc3QgcnVuIHN0YXJ0cyBmcm9tIHRoZSBiZWdpbm5pbmcs
IHNpbmNlIHRoZQorICAgICMgdGVzdCB0byBjb250aW51ZSBmcm9tIGRvZXMgbm90IGV4aXN0IGlu
IHRlc3RmaWxlX2IuCisgICAgcmVzdWx0ID0gc3RlcHdpc2VfdGVzdGRpci5ydW5weXRlc3QoCisg
ICAgICAgICItdiIsICItLXN0cmljdC1tYXJrZXJzIiwgIi0tc3RlcHdpc2UiLCAidGVzdF9iLnB5
IgorICAgICkKKyAgICBhc3NlcnQgX3N0cmlwX3Jlc291cmNlX3dhcm5pbmdzKHJlc3VsdC5zdGRl
cnIubGluZXMpID09IFtdCisKKyAgICBzdGRvdXQgPSByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAg
YXNzZXJ0ICJ0ZXN0X3N1Y2Nlc3MgUEFTU0VEIiBpbiBzdGRvdXQKKworCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoImJyb2tlbl9maXJzdCIsIFtUcnVlLCBGYWxzZV0pCitkZWYgdGVzdF9zdG9w
X29uX2NvbGxlY3Rpb25fZXJyb3JzKGJyb2tlbl90ZXN0ZGlyLCBicm9rZW5fZmlyc3QpOgorICAg
ICIiIlN0b3AgZHVyaW5nIGNvbGxlY3Rpb24gZXJyb3JzLiBCcm9rZW4gdGVzdCBmaXJzdCBvciBi
cm9rZW4gdGVzdCBsYXN0CisgICAgYWN0dWFsbHkgc3VyZmFjZWQgYSBidWcgKCM1NDQ0KSwgc28g
d2UgdGVzdCBib3RoIHNpdHVhdGlvbnMuIiIiCisgICAgZmlsZXMgPSBbIndvcmtpbmdfdGVzdGZp
bGUucHkiLCAiYnJva2VuX3Rlc3RmaWxlLnB5Il0KKyAgICBpZiBicm9rZW5fZmlyc3Q6CisgICAg
ICAgIGZpbGVzLnJldmVyc2UoKQorICAgIHJlc3VsdCA9IGJyb2tlbl90ZXN0ZGlyLnJ1bnB5dGVz
dCgiLXYiLCAiLS1zdHJpY3QtbWFya2VycyIsICItLXN0ZXB3aXNlIiwgKmZpbGVzKQorICAgIHJl
c3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygiKmVycm9yIGR1cmluZyBjb2xsZWN0aW9uKiIpCisK
KworZGVmIHRlc3RfeGZhaWxfaGFuZGxpbmcodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICIi
IkVuc3VyZSBub3JtYWwgeGZhaWwgaXMgaWdub3JlZCwgYW5kIHN0cmljdCB4ZmFpbCBpbnRlcnJ1
cHRzIHRoZSBzZXNzaW9uIGluIHN3IG1vZGUKKworICAgICgjNTU0NykKKyAgICAiIiIKKyAgICBt
b25rZXlwYXRjaC5zZXRhdHRyKCJzeXMuZG9udF93cml0ZV9ieXRlY29kZSIsIFRydWUpCisKKyAg
ICBjb250ZW50cyA9ICIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGRlZiB0ZXN0
X2EoKTogcGFzcworCisgICAgICAgIEBweXRlc3QubWFyay54ZmFpbChzdHJpY3Q9e3N0cmljdH0p
CisgICAgICAgIGRlZiB0ZXN0X2IoKTogYXNzZXJ0IHthc3NlcnRfdmFsdWV9CisKKyAgICAgICAg
ZGVmIHRlc3RfYygpOiBwYXNzCisgICAgICAgIGRlZiB0ZXN0X2QoKTogcGFzcworICAgICIiIgor
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZShjb250ZW50cy5mb3JtYXQoYXNzZXJ0X3ZhbHVlPSIwIiwg
c3RyaWN0PSJGYWxzZSIpKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXN3Iiwg
Ii12IikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAg
ICAgICAgICIqOjp0ZXN0X2EgUEFTU0VEICoiLAorICAgICAgICAgICAgIio6OnRlc3RfYiBYRkFJ
TCAqIiwKKyAgICAgICAgICAgICIqOjp0ZXN0X2MgUEFTU0VEICoiLAorICAgICAgICAgICAgIio6
OnRlc3RfZCBQQVNTRUQgKiIsCisgICAgICAgICAgICAiKiAzIHBhc3NlZCwgMSB4ZmFpbGVkIGlu
ICoiLAorICAgICAgICBdCisgICAgKQorCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKGNvbnRlbnRz
LmZvcm1hdChhc3NlcnRfdmFsdWU9IjEiLCBzdHJpY3Q9IlRydWUiKSkKKyAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zdyIsICItdiIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNo
X2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKjo6dGVzdF9hIFBBU1NFRCAqIiwKKyAg
ICAgICAgICAgICIqOjp0ZXN0X2IgRkFJTEVEICoiLAorICAgICAgICAgICAgIiogSW50ZXJydXB0
ZWQqIiwKKyAgICAgICAgICAgICIqIDEgZmFpbGVkLCAxIHBhc3NlZCBpbiAqIiwKKyAgICAgICAg
XQorICAgICkKKworICAgIHRlc3RkaXIubWFrZXB5ZmlsZShjb250ZW50cy5mb3JtYXQoYXNzZXJ0
X3ZhbHVlPSIwIiwgc3RyaWN0PSJUcnVlIikpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi0tc3ciLCAiLXYiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAg
ICAgWworICAgICAgICAgICAgIio6OnRlc3RfYiBYRkFJTCAqIiwKKyAgICAgICAgICAgICIqOjp0
ZXN0X2MgUEFTU0VEICoiLAorICAgICAgICAgICAgIio6OnRlc3RfZCBQQVNTRUQgKiIsCisgICAg
ICAgICAgICAiKiAyIHBhc3NlZCwgMSBkZXNlbGVjdGVkLCAxIHhmYWlsZWQgaW4gKiIsCisgICAg
ICAgIF0KKyAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc3RvcmUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc3RvcmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNmQ0MjA4YTA5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc3RvcmUucHkKQEAgLTAsMCArMSw2MCBAQAoraW1wb3J0
IHB5dGVzdAorZnJvbSBfcHl0ZXN0LnN0b3JlIGltcG9ydCBTdG9yZQorZnJvbSBfcHl0ZXN0LnN0
b3JlIGltcG9ydCBTdG9yZUtleQorCisKK2RlZiB0ZXN0X3N0b3JlKCkgLT4gTm9uZToKKyAgICBz
dG9yZSA9IFN0b3JlKCkKKworICAgIGtleTEgPSBTdG9yZUtleVtzdHJdKCkKKyAgICBrZXkyID0g
U3RvcmVLZXlbaW50XSgpCisKKyAgICAjIEJhc2ljIGZ1bmN0aW9uYWxpdHkgLSBzaW5nbGUga2V5
LgorICAgIGFzc2VydCBrZXkxIG5vdCBpbiBzdG9yZQorICAgIHN0b3JlW2tleTFdID0gImhlbGxv
IgorICAgIGFzc2VydCBrZXkxIGluIHN0b3JlCisgICAgYXNzZXJ0IHN0b3JlW2tleTFdID09ICJo
ZWxsbyIKKyAgICBhc3NlcnQgc3RvcmUuZ2V0KGtleTEsIE5vbmUpID09ICJoZWxsbyIKKyAgICBz
dG9yZVtrZXkxXSA9ICJ3b3JsZCIKKyAgICBhc3NlcnQgc3RvcmVba2V5MV0gPT0gIndvcmxkIgor
ICAgICMgSGFzIGNvcnJlY3QgdHlwZSAobm8gbXlweSBlcnJvcikuCisgICAgc3RvcmVba2V5MV0g
KyAic3RyaW5nIgorCisgICAgIyBObyBpbnRlcmFjdGlvbiB3aXRoIGFub3RoZXIga2V5LgorICAg
IGFzc2VydCBrZXkyIG5vdCBpbiBzdG9yZQorICAgIGFzc2VydCBzdG9yZS5nZXQoa2V5MiwgTm9u
ZSkgaXMgTm9uZQorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgIHN0
b3JlW2tleTJdCisgICAgd2l0aCBweXRlc3QucmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgZGVs
IHN0b3JlW2tleTJdCisgICAgc3RvcmVba2V5Ml0gPSAxCisgICAgYXNzZXJ0IHN0b3JlW2tleTJd
ID09IDEKKyAgICAjIEhhcyBjb3JyZWN0IHR5cGUgKG5vIG15cHkgZXJyb3IpLgorICAgIHN0b3Jl
W2tleTJdICsgMjAKKyAgICBkZWwgc3RvcmVba2V5MV0KKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMo
S2V5RXJyb3IpOgorICAgICAgICBkZWwgc3RvcmVba2V5MV0KKyAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoS2V5RXJyb3IpOgorICAgICAgICBzdG9yZVtrZXkxXQorCisgICAgIyBzZXRkZWZhdWx0Cisg
ICAgc3RvcmVba2V5MV0gPSAiZXhpc3RpbmciCisgICAgYXNzZXJ0IHN0b3JlLnNldGRlZmF1bHQo
a2V5MSwgImRlZmF1bHQiKSA9PSAiZXhpc3RpbmciCisgICAgYXNzZXJ0IHN0b3JlW2tleTFdID09
ICJleGlzdGluZyIKKyAgICBrZXlfc2V0ZGVmYXVsdCA9IFN0b3JlS2V5W2J5dGVzXSgpCisgICAg
YXNzZXJ0IHN0b3JlLnNldGRlZmF1bHQoa2V5X3NldGRlZmF1bHQsIGIiZGVmYXVsdCIpID09IGIi
ZGVmYXVsdCIKKyAgICBhc3NlcnQgc3RvcmVba2V5X3NldGRlZmF1bHRdID09IGIiZGVmYXVsdCIK
KworICAgICMgQ2FuJ3QgYWNjaWRlbnRhbGx5IGFkZCBhdHRyaWJ1dGVzIHRvIHN0b3JlIG9iamVj
dCBpdHNlbGYuCisgICAgd2l0aCBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAg
ICAgc3RvcmUuZm9vID0gIm5vcGUiICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCisKKyAg
ICAjIE5vIGludGVyYWN0aW9uIHdpdGggYW5vdGVyIHN0b3JlLgorICAgIHN0b3JlMiA9IFN0b3Jl
KCkKKyAgICBrZXkzID0gU3RvcmVLZXlbaW50XSgpCisgICAgYXNzZXJ0IGtleTIgbm90IGluIHN0
b3JlMgorICAgIHN0b3JlMltrZXkyXSA9IDEwMAorICAgIHN0b3JlMltrZXkzXSA9IDIwMAorICAg
IGFzc2VydCBzdG9yZTJba2V5Ml0gKyBzdG9yZTJba2V5M10gPT0gMzAwCisgICAgYXNzZXJ0IHN0
b3JlW2tleTJdID09IDEKKyAgICBhc3NlcnQga2V5MyBub3QgaW4gc3RvcmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF90ZXJtaW5hbC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF90ZXJtaW5hbC5weQppbmRleCA4ZjA4YWQzNGZhMWYuLjUxZmRmNzI4ZWM5YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Rlcm1pbmFsLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvdGVzdF90ZXJtaW5hbC5weQpAQCAtMSw0NiArMSw1NCBAQAotIiIiCi10
ZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9jZXNzLgotIiIiCi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0
aW9uCisiIiJUZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9jZXNzLiIi
IgogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0
d3JhcAorZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0Citm
cm9tIHR5cGluZyBpbXBvcnQgRGljdAorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlw
aW5nIGltcG9ydCBUdXBsZQogCiBpbXBvcnQgcGx1Z2d5Ci1pbXBvcnQgX3B5dGVzdC5fY29kZQog
aW1wb3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgRVhJVF9O
T1RFU1RTQ09MTEVDVEVECi1mcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVw
b3J0ZXIsIHJlcHJfcHl0aG9udmVyc2lvbiwgZ2V0cmVwb3J0b3B0Ci1mcm9tIF9weXRlc3QudGVy
bWluYWwgaW1wb3J0IGJ1aWxkX3N1bW1hcnlfc3RhdHNfbGluZSwgX3BsdWdpbl9uYW1ldmVyc2lv
bnMKIAoraW1wb3J0IF9weXRlc3QuY29uZmlnCitpbXBvcnQgX3B5dGVzdC50ZXJtaW5hbAoraW1w
b3J0IHB5dGVzdAorZnJvbSBfcHl0ZXN0Ll9pby53Y3dpZHRoIGltcG9ydCB3Y3N3aWR0aAorZnJv
bSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBFeGl0Q29kZQorZnJvbSBfcHl0ZXN0Lm1vbmtleXBhdGNoIGltcG9ydCBNb25rZXlQYXRjaAor
ZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gX3B5dGVzdC5weXRlc3RlciBp
bXBvcnQgVGVzdGRpcgorZnJvbSBfcHl0ZXN0LnJlcG9ydHMgaW1wb3J0IEJhc2VSZXBvcnQKK2Zy
b20gX3B5dGVzdC5yZXBvcnRzIGltcG9ydCBDb2xsZWN0UmVwb3J0Citmcm9tIF9weXRlc3QudGVy
bWluYWwgaW1wb3J0IF9mb2xkZWRfc2tpcHMKK2Zyb20gX3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQg
X2dldF9saW5lX3dpdGhfcmVwcmNyYXNoX21lc3NhZ2UKK2Zyb20gX3B5dGVzdC50ZXJtaW5hbCBp
bXBvcnQgX3BsdWdpbl9uYW1ldmVyc2lvbnMKK2Zyb20gX3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQg
Z2V0cmVwb3J0b3B0Citmcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsUmVwb3J0
ZXIKIAogRGlzdEluZm8gPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJEaXN0SW5mbyIsIFsicHJv
amVjdF9uYW1lIiwgInZlcnNpb24iXSkKIAogCi1jbGFzcyBPcHRpb24ob2JqZWN0KToKK1RSQU5T
X0ZOTUFUQ0ggPSBzdHIubWFrZXRyYW5zKHsiWyI6ICJbW10iLCAiXSI6ICJbXV0ifSkKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPUZhbHNlLCBmdWxsdHJhY2U9RmFsc2UpOgotICAg
ICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCi0gICAgICAgIHNlbGYuZnVsbHRyYWNlID0gZnVs
bHRyYWNlCisKK2NsYXNzIE9wdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zaXR5
PTApOgorICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogCiAgICAgQHByb3BlcnR5
CiAgICAgZGVmIGFyZ3Moc2VsZik6CiAgICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIGlmIHNl
bGYudmVyYm9zZToKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoIi12IikKLSAgICAgICAgaWYg
c2VsZi5mdWxsdHJhY2U6Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCItLWZ1bGx0cmFjZSIp
CisgICAgICAgIHZhbHVlcy5hcHBlbmQoIi0tdmVyYm9zaXR5PSVkIiAlIHNlbGYudmVyYm9zaXR5
KQogICAgICAgICByZXR1cm4gdmFsdWVzCiAKIAogQHB5dGVzdC5maXh0dXJlKAotICAgIHBhcmFt
cz1bCi0gICAgICAgIE9wdGlvbih2ZXJib3NlPUZhbHNlKSwKLSAgICAgICAgT3B0aW9uKHZlcmJv
c2U9VHJ1ZSksCi0gICAgICAgIE9wdGlvbih2ZXJib3NlPS0xKSwKLSAgICAgICAgT3B0aW9uKGZ1
bGx0cmFjZT1UcnVlKSwKLSAgICBdLAotICAgIGlkcz1bImRlZmF1bHQiLCAidmVyYm9zZSIsICJx
dWlldCIsICJmdWxsdHJhY2UiXSwKKyAgICBwYXJhbXM9W09wdGlvbih2ZXJib3NpdHk9MCksIE9w
dGlvbih2ZXJib3NpdHk9MSksIE9wdGlvbih2ZXJib3NpdHk9LTEpXSwKKyAgICBpZHM9WyJkZWZh
dWx0IiwgInZlcmJvc2UiLCAicXVpZXQiXSwKICkKIGRlZiBvcHRpb24ocmVxdWVzdCk6CiAgICAg
cmV0dXJuIHJlcXVlc3QucGFyYW0KQEAgLTY3LDggKzc1LDcgQEAgZGVmIHRlc3RfcGx1Z2luX25h
bWV2ZXJzaW9uKGlucHV0LCBleHBlY3RlZCk6CiAgICAgYXNzZXJ0IHJlc3VsdCA9PSBleHBlY3Rl
ZAogCiAKLWNsYXNzIFRlc3RUZXJtaW5hbChvYmplY3QpOgotCitjbGFzcyBUZXN0VGVybWluYWw6
CiAgICAgZGVmIHRlc3RfcGFzc19za2lwX2ZhaWwoc2VsZiwgdGVzdGRpciwgb3B0aW9uKToKICAg
ICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC04Miw3ICs4OSw3
IEBAIGNsYXNzIFRlc3RUZXJtaW5hbChvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgKQog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgqb3B0aW9uLmFyZ3MpCi0gICAgICAg
IGlmIG9wdGlvbi52ZXJib3NlOgorICAgICAgICBpZiBvcHRpb24udmVyYm9zaXR5ID4gMDoKICAg
ICAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgICAgICBb
CiAgICAgICAgICAgICAgICAgICAgICIqdGVzdF9wYXNzX3NraXBfZmFpbC5weTo6dGVzdF9vayBQ
QVNTKiIsCkBAIC05MCw4ICs5NywxMCBAQCBjbGFzcyBUZXN0VGVybWluYWwob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgIip0ZXN0X3Bhc3Nfc2tpcF9mYWlsLnB5Ojp0ZXN0X2Z1bmMgRkFJ
TCoiLAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICkKLSAgICAgICAgZWxzZToKKyAg
ICAgICAgZWxpZiBvcHRpb24udmVyYm9zaXR5ID09IDA6CiAgICAgICAgICAgICByZXN1bHQuc3Rk
b3V0LmZubWF0Y2hfbGluZXMoWyIqdGVzdF9wYXNzX3NraXBfZmFpbC5weSAuc0YqIl0pCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIuc0Yq
Il0pCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsi
ICAgIGRlZiB0ZXN0X2Z1bmMoKToiLCAiPiAgICAgICBhc3NlcnQgMCIsICJFICAgICAgIGFzc2Vy
dCAwIl0KICAgICAgICAgKQpAQCAtOTksNyArMTA4LDggQEAgY2xhc3MgVGVzdFRlcm1pbmFsKG9i
amVjdCk6CiAgICAgZGVmIHRlc3RfaW50ZXJuYWxlcnJvcihzZWxmLCB0ZXN0ZGlyLCBsaW5lY29t
cCk6CiAgICAgICAgIG1vZGNvbCA9IHRlc3RkaXIuZ2V0bW9kdWxlY29sKCJkZWYgdGVzdF9vbmUo
KTogcGFzcyIpCiAgICAgICAgIHJlcCA9IFRlcm1pbmFsUmVwb3J0ZXIobW9kY29sLmNvbmZpZywg
ZmlsZT1saW5lY29tcC5zdHJpbmdpbykKLSAgICAgICAgZXhjaW5mbyA9IHB5dGVzdC5yYWlzZXMo
VmFsdWVFcnJvciwgInJhaXNlIFZhbHVlRXJyb3IoJ2hlbGxvJykiKQorICAgICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoVmFsdWVFcnJvcikgYXMgZXhjaW5mbzoKKyAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoImhlbGxvIikKICAgICAgICAgcmVwLnB5dGVzdF9pbnRlcm5hbGVycm9yKGV4Y2lu
Zm8uZ2V0cmVwcigpKQogICAgICAgICBsaW5lY29tcC5hc3NlcnRfY29udGFpbnNfbGluZXMoWyJJ
TlRFUk5BTEVSUk9SPiAqVmFsdWVFcnJvcipoZWxsbyoiXSkKIApAQCAtMTM2LDQ3ICsxNDYsMTAy
IEBAIGNsYXNzIFRlc3RUZXJtaW5hbChvYmplY3QpOgogICAgICAgICBjaGlsZC5zZW5kZW9mKCkK
ICAgICAgICAgY2hpbGQua2lsbCgxNSkKIAorICAgIGRlZiB0ZXN0X3JlcG9ydF9jb2xsZWN0X2Fm
dGVyX2hhbGZfYV9zZWNvbmQoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlRlc3QgZm9yICJj
b2xsZWN0aW5nIiBiZWluZyB1cGRhdGVkIGFmdGVyIDAuNXMiIiIKKworICAgICAgICB0ZXN0ZGly
Lm1ha2VweWZpbGUoCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAidGVzdDEucHki
OiAiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3B5dGVzdC50ZXJtaW5hbAorCisgICAgICAg
ICAgICAgICAgX3B5dGVzdC50ZXJtaW5hbC5SRVBPUlRfQ09MTEVDVElOR19SRVNPTFVUSU9OID0g
MAorCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfMSgpOgorICAgICAgICAgICAgICAgICAgICBw
YXNzCisgICAgICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAidGVzdDIucHki
OiAiZGVmIHRlc3RfMigpOiBwYXNzIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAg
ICAjIEV4cGxpY2l0bHkgdGVzdCBjb2xvcmVkIG91dHB1dC4KKyAgICAgICAgdGVzdGRpci5tb25r
ZXlwYXRjaC5zZXRlbnYoIlBZX0NPTE9SUyIsICIxIikKKworICAgICAgICBjaGlsZCA9IHRlc3Rk
aXIuc3Bhd25fcHl0ZXN0KCItdiB0ZXN0MS5weSB0ZXN0Mi5weSIpCisgICAgICAgIGNoaWxkLmV4
cGVjdChyImNvbGxlY3RpbmcgXC5cLlwuIikKKyAgICAgICAgY2hpbGQuZXhwZWN0KHIiY29sbGVj
dGluZyAxIGl0ZW0iKQorICAgICAgICBjaGlsZC5leHBlY3QociJjb2xsZWN0aW5nIDIgaXRlbXMi
KQorICAgICAgICBjaGlsZC5leHBlY3QociJjb2xsZWN0ZWQgMiBpdGVtcyIpCisgICAgICAgIHJl
c3QgPSBjaGlsZC5yZWFkKCkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgYXNzZXJ0ICI9IFx4MWJb
MzJtXHgxYlsxbTIgcGFzc2VkXHgxYlswbVx4MWJbMzJtIGluIiBpbiByZXN0CisKICAgICBkZWYg
dGVzdF9pdGVtcmVwb3J0X3N1YmNsYXNzZXNfc2hvd19zdWJjbGFzc2VkX2ZpbGUoc2VsZiwgdGVz
dGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHRlc3RfcDE9
IiIiCisgICAgICAgICAgICAqKnsKKyAgICAgICAgICAgICAgICAidGVzdHMvdGVzdF9wMSI6ICIi
IgogICAgICAgICAgICAgY2xhc3MgQmFzZVRlc3RzKG9iamVjdCk6CisgICAgICAgICAgICAgICAg
ZmFpbCA9IEZhbHNlCisKICAgICAgICAgICAgICAgICBkZWYgdGVzdF9wMShzZWxmKToKLSAgICAg
ICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKEJhc2VUZXN0
cyk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAiIiIKLSAgICAgICAgKQotICAgICAg
ICBwMiA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgICAgIHRlc3RfcDI9IiIiCisgICAg
ICAgICAgICAgICAgICAgIGlmIHNlbGYuZmFpbDogYXNzZXJ0IDAKKyAgICAgICAgICAgICAgICAi
IiIsCisgICAgICAgICAgICAgICAgInRlc3RzL3Rlc3RfcDIiOiAiIiIKICAgICAgICAgICAgIGZy
b20gdGVzdF9wMSBpbXBvcnQgQmFzZVRlc3RzCi0gICAgICAgICAgICBjbGFzcyBUZXN0TW9yZShC
YXNlVGVzdHMpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIiIiCisKKyAgICAgICAg
ICAgIGNsYXNzIFRlc3RNb3JlKEJhc2VUZXN0cyk6IHBhc3MKKyAgICAgICAgICAgICAgICAiIiIs
CisgICAgICAgICAgICAgICAgInRlc3RzL3Rlc3RfcDMucHkiOiAiIiIKKyAgICAgICAgICAgIGZy
b20gdGVzdF9wMSBpbXBvcnQgQmFzZVRlc3RzCisKKyAgICAgICAgICAgIEJhc2VUZXN0cy5mYWls
ID0gVHJ1ZQorCisgICAgICAgICAgICBjbGFzcyBUZXN0TW9yZShCYXNlVGVzdHMpOiBwYXNzCisg
ICAgICAgICIiIiwKKyAgICAgICAgICAgIH0KICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0
ZXN0ZGlyLnJ1bnB5dGVzdChwMikKLSAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsiKnRlc3RfcDIucHkgLioiLCAiKjEgcGFzc2VkKiJdKQotICAgICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLXYiLCBwMikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoInRlc3RzL3Rlc3RfcDIucHkiLCAiLS1yb290ZGlyPXRlc3RzIikKKyAgICAgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsidGVzdHMvdGVzdF9wMi5weSAuKiIsICI9KiAxIHBhc3Nl
ZCBpbiAqIl0pCisKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12diIsICIt
ckEiLCAidGVzdHMvdGVzdF9wMi5weSIsICItLXJvb3RkaXI9dGVzdHMiKQogICAgICAgICByZXN1
bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgICAgICBbIip0ZXN0X3AyLnB5OjpUZXN0
TW9yZTo6dGVzdF9wMSogPC0gKnRlc3RfcDEucHkqUEFTU0VEKiJdCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgInRlc3RzL3Rlc3RfcDIucHk6OlRlc3RNb3JlOjp0ZXN0X3AxIDwtIHRl
c3RfcDEucHkgUEFTU0VEICoiLAorICAgICAgICAgICAgICAgICIqPSBzaG9ydCB0ZXN0IHN1bW1h
cnkgaW5mbyA9KiIsCisgICAgICAgICAgICAgICAgIlBBU1NFRCB0ZXN0cy90ZXN0X3AyLnB5OjpU
ZXN0TW9yZTo6dGVzdF9wMSIsCisgICAgICAgICAgICBdCisgICAgICAgICkKKyAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12diIsICItckEiLCAidGVzdHMvdGVzdF9wMy5weSIs
ICItLXJvb3RkaXI9dGVzdHMiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgInRlc3RzL3Rlc3RfcDMucHk6OlRlc3RN
b3JlOjp0ZXN0X3AxIDwtIHRlc3RfcDEucHkgRkFJTEVEICoiLAorICAgICAgICAgICAgICAgICIq
XyBUZXN0TW9yZS50ZXN0X3AxIF8qIiwKKyAgICAgICAgICAgICAgICAiICAgIGRlZiB0ZXN0X3Ax
KHNlbGYpOiIsCisgICAgICAgICAgICAgICAgIj4gICAgICAgaWYgc2VsZi5mYWlsOiBhc3NlcnQg
MCIsCisgICAgICAgICAgICAgICAgIkUgICAgICAgYXNzZXJ0IDAiLAorICAgICAgICAgICAgICAg
ICIiLAorICAgICAgICAgICAgICAgICJ0ZXN0cy90ZXN0X3AxLnB5OjU6IEFzc2VydGlvbkVycm9y
IiwKKyAgICAgICAgICAgICAgICAiKj0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPSoiLAorICAg
ICAgICAgICAgICAgICJGQUlMRUQgdGVzdHMvdGVzdF9wMy5weTo6VGVzdE1vcmU6OnRlc3RfcDEg
LSBhc3NlcnQgMCIsCisgICAgICAgICAgICAgICAgIio9IDEgZmFpbGVkIGluICoiLAorICAgICAg
ICAgICAgXQogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9pdGVtcmVwb3J0X2RpcmVjdGNsYXNz
ZXNfbm90X3Nob3duX2FzX3N1YmNsYXNzZXMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIGEgPSB0
ZXN0ZGlyLm1rcHlkaXIoImExMjMiKQogICAgICAgICBhLmpvaW4oInRlc3RfaGVsbG8xMjMucHki
KS53cml0ZSgKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuU291cmNlKAorICAgICAgICAgICAg
dGV4dHdyYXAuZGVkZW50KAorICAgICAgICAgICAgICAgICIiIlwKKyAgICAgICAgICAgICAgICBj
bGFzcyBUZXN0Q2xhc3Mob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0
aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAg
ICIiIgotICAgICAgICAgICAgY2xhc3MgVGVzdENsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgICAg
ICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAg
ICAgICIiIgogICAgICAgICAgICAgKQogICAgICAgICApCi0gICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCItdiIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
dnYiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCiAgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIiphMTIzL3Rlc3RfaGVsbG8xMjMucHkqUEFTUyoiXSkKLSAgICAg
ICAgYXNzZXJ0ICIgPC0gIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgICAgICByZXN1
bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKiA8LSAqIikKIAotICAgIGRlZiB0ZXN0X2tleWJv
YXJkX2ludGVycnVwdChzZWxmLCB0ZXN0ZGlyLCBvcHRpb24pOgorICAgIEBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgiZnVsbHRyYWNlIiwgKCIiLCAiLS1mdWxsdHJhY2UiKSkKKyAgICBkZWYgdGVz
dF9rZXlib2FyZF9pbnRlcnJ1cHQoc2VsZiwgdGVzdGRpciwgZnVsbHRyYWNlKToKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBkZWYgdGVz
dF9mb29iYXIoKToKQEAgLTE4OCw3ICsyNTMsNyBAQCBjbGFzcyBUZXN0VGVybWluYWwob2JqZWN0
KToKICAgICAgICAgIiIiCiAgICAgICAgICkKIAotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgqb3B0aW9uLmFyZ3MsIG5vX3JlcmFpc2VfY3RybGM9VHJ1ZSkKKyAgICAgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3QoZnVsbHRyYWNlLCBub19yZXJhaXNlX2N0cmxjPVRydWUp
CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgICAgIFsKICAg
ICAgICAgICAgICAgICAiICAgIGRlZiB0ZXN0X2Zvb2JhcigpOiIsCkBAIC0xOTcsMTMgKzI2Miwx
MyBAQCBjbGFzcyBUZXN0VGVybWluYWwob2JqZWN0KToKICAgICAgICAgICAgICAgICAiKl9rZXli
b2FyZF9pbnRlcnJ1cHQucHk6NjogS2V5Ym9hcmRJbnRlcnJ1cHQqIiwKICAgICAgICAgICAgIF0K
ICAgICAgICAgKQotICAgICAgICBpZiBvcHRpb24uZnVsbHRyYWNlOgorICAgICAgICBpZiBmdWxs
dHJhY2U6CiAgICAgICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAg
ICAgICAgICAgWyIqcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQgICAjIHNpbXVsYXRpbmcgdGhlIHVz
ZXIqIl0KICAgICAgICAgICAgICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgICAgICBbIih0byBzaG93IGEgZnVsbCB0
cmFjZWJhY2sgb24gS2V5Ym9hcmRJbnRlcnJ1cHQgdXNlIC0tZnVsbHRyYWNlKSJdCisgICAgICAg
ICAgICAgICAgWyIodG8gc2hvdyBhIGZ1bGwgdHJhY2ViYWNrIG9uIEtleWJvYXJkSW50ZXJydXB0
IHVzZSAtLWZ1bGwtdHJhY2UpIl0KICAgICAgICAgICAgICkKICAgICAgICAgcmVzdWx0LnN0ZG91
dC5mbm1hdGNoX2xpbmVzKFsiKktleWJvYXJkSW50ZXJydXB0KiJdKQogCkBAIC0yMzgsNyArMzAz
LDcgQEAgY2xhc3MgVGVzdFRlcm1pbmFsKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9yZXdyaXRl
KHNlbGYsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICAgICAgY29uZmlnID0gdGVzdGRpci5w
YXJzZWNvbmZpZygpCi0gICAgICAgIGYgPSBweS5pby5UZXh0SU8oKQorICAgICAgICBmID0gU3Ry
aW5nSU8oKQogICAgICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKGYsICJpc2F0dHkiLCBsYW1iZGEg
KmFyZ3M6IFRydWUpCiAgICAgICAgIHRyID0gVGVybWluYWxSZXBvcnRlcihjb25maWcsIGYpCiAg
ICAgICAgIHRyLl90dy5mdWxsd2lkdGggPSAxMApAQCAtMjQ2LDkgKzMxMSwzMSBAQCBjbGFzcyBU
ZXN0VGVybWluYWwob2JqZWN0KToKICAgICAgICAgdHIucmV3cml0ZSgiaGV5IiwgZXJhc2U9VHJ1
ZSkKICAgICAgICAgYXNzZXJ0IGYuZ2V0dmFsdWUoKSA9PSAiaGVsbG8iICsgIlxyIiArICJoZXki
ICsgKDYgKiAiICIpCiAKKyAgICBkZWYgdGVzdF9yZXBvcnRfdGVzdHN0YXR1c19leHBsaWNpdF9t
YXJrdXAoCisgICAgICAgIHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIsIGNvbG9yX21hcHBpbmcKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIlRlc3QgdGhhdCBUZXJtaW5hbFJlcG9ydGVyIGhhbmRs
ZXMgbWFya3VwIGV4cGxpY2l0bHkgcHJvdmlkZWQgYnkKKyAgICAgICAgYSBweXRlc3RfcmVwb3J0
X3Rlc3RzdGF0dXMgaG9vay4iIiIKKyAgICAgICAgdGVzdGRpci5tb25rZXlwYXRjaC5zZXRlbnYo
IlBZX0NPTE9SUyIsICIxIikKKyAgICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0
KToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2ZvbycsICdGJywgKCdGT08nLCB7J3JlZCc6IFRy
dWV9KQorICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUo
CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiB0ZXN0X2Zvb2JhcigpOgorICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi12IikKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xp
bmVzKAorICAgICAgICAgICAgY29sb3JfbWFwcGluZy5mb3JtYXRfZm9yX2ZubWF0Y2goWyIqe3Jl
ZH1GT097cmVzZXR9KiJdKQorICAgICAgICApCiAKLWNsYXNzIFRlc3RDb2xsZWN0b25seShvYmpl
Y3QpOgogCitjbGFzcyBUZXN0Q29sbGVjdG9ubHk6CiAgICAgZGVmIHRlc3RfY29sbGVjdG9ubHlf
YmFzaWMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAg
ICAgICAgICIiIgpAQCAtMjU4LDcgKzM0NSw3IEBAIGNsYXNzIFRlc3RDb2xsZWN0b25seShvYmpl
Y3QpOgogICAgICAgICApCiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNv
bGxlY3Qtb25seSIpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAg
ICAgICAgIFsiPE1vZHVsZSAndGVzdF9jb2xsZWN0b25seV9iYXNpYy5weSc+IiwgIiAgPEZ1bmN0
aW9uICd0ZXN0X2Z1bmMnPiJdCisgICAgICAgICAgICBbIjxNb2R1bGUgdGVzdF9jb2xsZWN0b25s
eV9iYXNpYy5weT4iLCAiICA8RnVuY3Rpb24gdGVzdF9mdW5jPiJdCiAgICAgICAgICkKIAogICAg
IGRlZiB0ZXN0X2NvbGxlY3Rvbmx5X3NraXBwZWRfbW9kdWxlKHNlbGYsIHRlc3RkaXIpOgpAQCAt
MjcxLDYgKzM1OCwzNCBAQCBjbGFzcyBUZXN0Q29sbGVjdG9ubHkob2JqZWN0KToKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IiwgIi1ycyIpCiAgICAg
ICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipFUlJPUiBjb2xsZWN0aW5nKiJdKQog
CisgICAgZGVmIHRlc3RfY29sbGVjdG9ubHlfZGlzcGxheXNfdGVzdF9kZXNjcmlwdGlvbigKKyAg
ICAgICAgc2VsZiwgdGVzdGRpcjogVGVzdGRpciwgZHVtbXlfeWFtbF9jdXN0b21fdGVzdAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiVXNlZCBkdW1teV95YW1sX2N1c3RvbV90ZXN0IGZvciBh
biBJdGVtIHdpdGhvdXQgYGBvYmpgYC4iIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF93aXRoX2Rlc2NyaXB0aW9uKCk6
CisgICAgICAgICAgICAgICAgJycnICBUaGlzIHRlc3QgaGFzIGEgZGVzY3JpcHRpb24uCisKKyAg
ICAgICAgICAgICAgICAgIG1vcmUxLgorICAgICAgICAgICAgICAgICAgICBtb3JlMi4nJycKKyAg
ICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItLWNvbGxlY3Qtb25seSIsICItLXZlcmJvc2UiKQorICAgICAgICByZXN1bHQuc3Rkb3V0
LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIjxZYW1sRmls
ZSB0ZXN0MS55YW1sPiIsCisgICAgICAgICAgICAgICAgIiAgPFlhbWxJdGVtIHRlc3QxLnlhbWw+
IiwKKyAgICAgICAgICAgICAgICAiPE1vZHVsZSB0ZXN0X2NvbGxlY3Rvbmx5X2Rpc3BsYXlzX3Rl
c3RfZGVzY3JpcHRpb24ucHk+IiwKKyAgICAgICAgICAgICAgICAiICA8RnVuY3Rpb24gdGVzdF93
aXRoX2Rlc2NyaXB0aW9uPiIsCisgICAgICAgICAgICAgICAgIiAgICBUaGlzIHRlc3QgaGFzIGEg
ZGVzY3JpcHRpb24uIiwKKyAgICAgICAgICAgICAgICAiICAgICIsCisgICAgICAgICAgICAgICAg
IiAgICBtb3JlMS4iLAorICAgICAgICAgICAgICAgICIgICAgICBtb3JlMi4iLAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgIGNvbnNlY3V0aXZlPVRydWUsCisgICAgICAgICkKKwogICAgIGRl
ZiB0ZXN0X2NvbGxlY3Rvbmx5X2ZhaWxlZF9tb2R1bGUoc2VsZiwgdGVzdGRpcik6CiAgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgiIiJyYWlzZSBWYWx1ZUVycm9yKDApIiIiKQogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xsZWN0LW9ubHkiKQpAQCAtMzAyLDExICs0
MTcsMTAgQEAgY2xhc3MgVGVzdENvbGxlY3Rvbmx5KG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBy
ZXN1bHQucmV0ID09IDAKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICIqPE1vZHVsZSAnKi5weSc+IiwKLSAgICAgICAg
ICAgICAgICAiKiA8RnVuY3Rpb24gJ3Rlc3RfZnVuYzEnKj4iLAotICAgICAgICAgICAgICAgICIq
IDxDbGFzcyAnVGVzdENsYXNzJz4iLAotICAgICAgICAgICAgICAgICMgIiogIDxJbnN0YW5jZSAn
KCknPiIsCi0gICAgICAgICAgICAgICAgIiogICA8RnVuY3Rpb24gJ3Rlc3RfbWV0aG9kJyo+IiwK
KyAgICAgICAgICAgICAgICAiKjxNb2R1bGUgKi5weT4iLAorICAgICAgICAgICAgICAgICIqIDxG
dW5jdGlvbiB0ZXN0X2Z1bmMxPiIsCisgICAgICAgICAgICAgICAgIiogPENsYXNzIFRlc3RDbGFz
cz4iLAorICAgICAgICAgICAgICAgICIqICAgPEZ1bmN0aW9uIHRlc3RfbWV0aG9kPiIsCiAgICAg
ICAgICAgICBdCiAgICAgICAgICkKIApAQCAtMzE1LDI0ICs0MjksMjQgQEAgY2xhc3MgVGVzdENv
bGxlY3Rvbmx5KG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
LWNvbGxlY3Qtb25seSIsIHApCiAgICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDIKICAgICAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICAgICAgX3B5dGVzdC5fY29k
ZS5Tb3VyY2UoCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAgICAg
IiIiXAorICAgICAgICAgICAgICAgICpFUlJPUioKKyAgICAgICAgICAgICAgICAqSW1wb3J0RXJy
b3IqCisgICAgICAgICAgICAgICAgKk5vIG1vZHVsZSBuYW1lZCAqRXJybGsqCisgICAgICAgICAg
ICAgICAgKjEgZXJyb3IqCiAgICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAqRVJST1Iq
Ci0gICAgICAgICAgICAqSW1wb3J0RXJyb3IqCi0gICAgICAgICAgICAqTm8gbW9kdWxlIG5hbWVk
ICpFcnJsayoKLSAgICAgICAgICAgICoxIGVycm9yKgotICAgICAgICAiIiIKICAgICAgICAgICAg
ICkuc3RyaXAoKQogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jb2xsZWN0b25seV9taXNzaW5n
X3BhdGgoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgICIiInRoaXMgY2hlY2tzIGlzc3VlIDExNSwK
LSAgICAgICAgICAgIGZhaWx1cmUgaW4gcGFyc2VhcmdzIHdpbGwgY2F1c2Ugc2Vzc2lvbgotICAg
ICAgICAgICAgbm90IHRvIGhhdmUgdGhlIGl0ZW1zIGF0dHJpYnV0ZQotICAgICAgICAiIiIKKyAg
ICAgICAgIiIiSXNzdWUgMTE1OiBmYWlsdXJlIGluIHBhcnNlYXJncyB3aWxsIGNhdXNlIHNlc3Np
b24gbm90IHRvCisgICAgICAgIGhhdmUgdGhlIGl0ZW1zIGF0dHJpYnV0ZS4iIiIKICAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sbGVjdC1vbmx5IiwgInVobV9taXNzaW5n
X3BhdGgiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSA0Ci0gICAgICAgIHJlc3VsdC5z
dGRlcnIuZm5tYXRjaF9saW5lcyhbIipFUlJPUjogZmlsZSBub3QgZm91bmQqIl0pCisgICAgICAg
IHJlc3VsdC5zdGRlcnIuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsiKkVSUk9SOiBmaWxl
IG9yIGRpcmVjdG9yeSBub3QgZm91bmQ6IHVobV9taXNzaW5nX3BhdGgiXQorICAgICAgICApCiAK
ICAgICBkZWYgdGVzdF9jb2xsZWN0b25seV9xdWlldChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF9mb28oKTogcGFzcyIpCkBAIC0zNDUsMjMgKzQ1
OSwxMiBAQCBjbGFzcyBUZXN0Q29sbGVjdG9ubHkob2JqZWN0KToKICAgICAgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3RfZnVuLnB5OiAxKiJdKQogCiAKLWRlZiB0ZXN0X3Jl
cHJfcHl0aG9uX3ZlcnNpb24obW9ua2V5cGF0Y2gpOgotICAgIHRyeToKLSAgICAgICAgbW9ua2V5
cGF0Y2guc2V0YXR0cihzeXMsICJ2ZXJzaW9uX2luZm8iLCAoMiwgNSwgMSwgImZpbmFsIiwgMCkp
Ci0gICAgICAgIGFzc2VydCByZXByX3B5dGhvbnZlcnNpb24oKSA9PSAiMi41LjEtZmluYWwtMCIK
LSAgICAgICAgc3lzLnZlcnNpb25faW5mbyA9IHggPSAoMiwgMykKLSAgICAgICAgYXNzZXJ0IHJl
cHJfcHl0aG9udmVyc2lvbigpID09IHN0cih4KQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG1vbmtl
eXBhdGNoLnVuZG8oKSAgIyBkbyB0aGlzIGVhcmx5IGFzIHB5dGVzdCBjYW4gZ2V0IGNvbmZ1c2Vk
Ci0KLQotY2xhc3MgVGVzdEZpeHR1cmVSZXBvcnRpbmcob2JqZWN0KToKLQorY2xhc3MgVGVzdEZp
eHR1cmVSZXBvcnRpbmc6CiAgICAgZGVmIHRlc3Rfc2V0dXBfZml4dHVyZV9lcnJvcihzZWxmLCB0
ZXN0ZGlyKToKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAg
ICAgICAgICAgICBkZWYgc2V0dXBfZnVuY3Rpb24oZnVuY3Rpb24pOgotICAgICAgICAgICAgICAg
IHByaW50ICgic2V0dXAgZnVuYyIpCisgICAgICAgICAgICAgICAgcHJpbnQoInNldHVwIGZ1bmMi
KQogICAgICAgICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICAgICBkZWYgdGVzdF9uYWRhKCk6
CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtMzg1LDcgKzQ4OCw3IEBAIGNsYXNzIFRlc3RGaXh0
dXJlUmVwb3J0aW5nKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgdGVzdF9uYWRhKCk6CiAgICAg
ICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZGVmIHRlYXJkb3duX2Z1bmN0aW9uKGZ1bmN0
aW9uKToKLSAgICAgICAgICAgICAgICBwcmludCAoInRlYXJkb3duIGZ1bmMiKQorICAgICAgICAg
ICAgICAgIHByaW50KCJ0ZWFyZG93biBmdW5jIikKICAgICAgICAgICAgICAgICBhc3NlcnQgMAog
ICAgICAgICAiIiIKICAgICAgICAgKQpAQCAtNDA4LDcgKzUxMSw3IEBAIGNsYXNzIFRlc3RGaXh0
dXJlUmVwb3J0aW5nKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAsICJmYWlsaW5n
ZnVuYyIKIAogICAgICAgICAgICAgZGVmIHRlYXJkb3duX2Z1bmN0aW9uKGZ1bmN0aW9uKToKLSAg
ICAgICAgICAgICAgICBwcmludCAoInRlYXJkb3duIGZ1bmMiKQorICAgICAgICAgICAgICAgIHBy
aW50KCJ0ZWFyZG93biBmdW5jIikKICAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKICAgICAg
ICAgIiIiCiAgICAgICAgICkKQEAgLTQyOCwxNyArNTMxLDE3IEBAIGNsYXNzIFRlc3RGaXh0dXJl
UmVwb3J0aW5nKG9iamVjdCk6CiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3NldHVwX3RlYXJk
b3duX291dHB1dF9hbmRfdGVzdF9mYWlsdXJlKHNlbGYsIHRlc3RkaXIpOgotICAgICAgICAiIiIg
VGVzdCBmb3IgaXNzdWUgIzQ0MiAiIiIKKyAgICAgICAgIiIiVGVzdCBmb3IgaXNzdWUgIzQ0Mi4i
IiIKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCiAgICAgICAg
ICAgICBkZWYgc2V0dXBfZnVuY3Rpb24oZnVuY3Rpb24pOgotICAgICAgICAgICAgICAgIHByaW50
ICgic2V0dXAgZnVuYyIpCisgICAgICAgICAgICAgICAgcHJpbnQoInNldHVwIGZ1bmMiKQogCiAg
ICAgICAgICAgICBkZWYgdGVzdF9mYWlsKCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAsICJm
YWlsaW5nZnVuYyIKIAogICAgICAgICAgICAgZGVmIHRlYXJkb3duX2Z1bmN0aW9uKGZ1bmN0aW9u
KToKLSAgICAgICAgICAgICAgICBwcmludCAoInRlYXJkb3duIGZ1bmMiKQorICAgICAgICAgICAg
ICAgIHByaW50KCJ0ZWFyZG93biBmdW5jIikKICAgICAgICAgIiIiCiAgICAgICAgICkKICAgICAg
ICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQpAQCAtNDU2LDggKzU1OSw3IEBAIGNsYXNz
IFRlc3RGaXh0dXJlUmVwb3J0aW5nKG9iamVjdCk6CiAgICAgICAgICkKIAogCi1jbGFzcyBUZXN0
VGVybWluYWxGdW5jdGlvbmFsKG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0aW9u
YWw6CiAgICAgZGVmIHRlc3RfZGVzZWxlY3RlZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAgdGVz
dHBhdGggPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKQEAgLTQ3MSwxMyAr
NTczLDQ0IEBAIGNsYXNzIFRlc3RUZXJtaW5hbEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAg
KQogICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLWsiLCAidGVzdF90d286Iiwg
dGVzdHBhdGgpCiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAg
ICAgIFsiY29sbGVjdGVkIDMgaXRlbXMgLyAxIGRlc2VsZWN0ZWQiLCAiKnRlc3RfZGVzZWxlY3Rl
ZC5weSAuLioiXQorICAgICAgICAgICAgWyJjb2xsZWN0ZWQgMyBpdGVtcyAvIDEgZGVzZWxlY3Rl
ZCAvIDIgc2VsZWN0ZWQiLCAiKnRlc3RfZGVzZWxlY3RlZC5weSAuLioiXQorICAgICAgICApCisg
ICAgICAgIGFzc2VydCByZXN1bHQucmV0ID09IDAKKworICAgIGRlZiB0ZXN0X2Rlc2VsZWN0ZWRf
d2l0aF9ob29rd3JhcHBlcihzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdHBhdGggPSB0ZXN0
ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0IHB5
dGVzdAorCisgICAgICAgICAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCisg
ICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoY29uZmlnLCBpdGVt
cyk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICBkZXNlbGVjdGVkID0g
aXRlbXMucG9wKCkKKyAgICAgICAgICAgICAgICBjb25maWcuaG9vay5weXRlc3RfZGVzZWxlY3Rl
ZChpdGVtcz1bZGVzZWxlY3RlZF0pCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAg
ICB0ZXN0cGF0aCA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgICAgIGRlZiB0ZXN0X29uZSgpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAg
ICAgICAgICAgICAgZGVmIHRlc3RfdHdvKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgICAgICAgICBkZWYgdGVzdF90aHJlZSgpOgorICAgICAgICAgICAgICAgICAgICBwYXNz
CisgICAgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0KHRlc3RwYXRoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNvbGxlY3RlZCAzIGl0ZW1zIC8gMSBkZXNl
bGVjdGVkIC8gMiBzZWxlY3RlZCIsCisgICAgICAgICAgICAgICAgIio9IDIgcGFzc2VkLCAxIGRl
c2VsZWN0ZWQgaW4qIiwKKyAgICAgICAgICAgIF0KICAgICAgICAgKQogICAgICAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAwCiAKICAgICBkZWYgdGVzdF9zaG93X2Rlc2VsZWN0ZWRfaXRlbXNfdXNp
bmdfbWFya2V4cHJfYmVmb3JlX3Rlc3RfZXhlY3V0aW9uKHNlbGYsIHRlc3RkaXIpOgogICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCi0gICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHRlc3Rf
c2hvd19kZXNlbGVjdGVkPSIiIgogICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAgICAgICAg
ICAgICBAcHl0ZXN0Lm1hcmsuZm9vCkBAIC00OTUsMTIgKzYyOCwxMiBAQCBjbGFzcyBUZXN0VGVy
bWluYWxGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0
ZXN0KCItbSIsICJub3QgZm9vIikKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KAogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMyBpdGVtcyAvIDEg
ZGVzZWxlY3RlZCIsCi0gICAgICAgICAgICAgICAgIip0ZXN0X3Nob3dfZGVzKi5weSAuLioiLAor
ICAgICAgICAgICAgICAgICJjb2xsZWN0ZWQgMyBpdGVtcyAvIDEgZGVzZWxlY3RlZCAvIDIgc2Vs
ZWN0ZWQiLAorICAgICAgICAgICAgICAgICIqdGVzdF9zaG93X2Rlc2VsZWN0ZWQucHkgLi4qIiwK
ICAgICAgICAgICAgICAgICAiKj0gMiBwYXNzZWQsIDEgZGVzZWxlY3RlZCBpbiAqID0qIiwKICAg
ICAgICAgICAgIF0KICAgICAgICAgKQotICAgICAgICBhc3NlcnQgIj0gMSBkZXNlbGVjdGVkID0i
IG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqPSAxIGRlc2VsZWN0ZWQgPSoiKQogICAgICAgICBhc3NlcnQgcmVzdWx0LnJl
dCA9PSAwCiAKICAgICBkZWYgdGVzdF9ub19za2lwX3N1bW1hcnlfaWZfZmFpbHVyZShzZWxmLCB0
ZXN0ZGlyKToKQEAgLTUzNyw3ICs2NzAsOCBAQCBjbGFzcyBUZXN0VGVybWluYWxGdW5jdGlvbmFs
KG9iamVjdCk6CiAgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbInRlc3RfcGFz
c2VzLnB5IC4uKiIsICIqIDIgcGFzcyoiXSkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0g
MAogCi0gICAgZGVmIHRlc3RfaGVhZGVyX3RyYWlsZXJfaW5mbyhzZWxmLCB0ZXN0ZGlyKToKKyAg
ICBkZWYgdGVzdF9oZWFkZXJfdHJhaWxlcl9pbmZvKHNlbGYsIHRlc3RkaXIsIHJlcXVlc3QpOgor
ICAgICAgICB0ZXN0ZGlyLm1vbmtleXBhdGNoLmRlbGVudigiUFlURVNUX0RJU0FCTEVfUExVR0lO
X0FVVE9MT0FEIikKICAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIi
CiAgICAgICAgICAgICBkZWYgdGVzdF9wYXNzZXMoKToKQEAgLTU1OCwxMiArNjkyLDExNyBAQCBj
bGFzcyBUZXN0VGVybWluYWxGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
IHBsdWdneS5fX3ZlcnNpb25fXywKICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAg
ICIqdGVzdF9oZWFkZXJfdHJhaWxlcl9pbmZvLnB5IC4qIiwKLSAgICAgICAgICAgICAgICAiPSog
MSBwYXNzZWQqaW4gKi5bMC05XVswLTldIHNlY29uZHMgKj0iLAorICAgICAgICAgICAgICAgICI9
KiAxIHBhc3NlZCppbiAqLlswLTldWzAtOV1zICo9IiwKICAgICAgICAgICAgIF0KICAgICAgICAg
KQotICAgICAgICBpZiBweXRlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9wbHVnaW5fZGlz
dGluZm8oKToKKyAgICAgICAgaWYgcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5saXN0X3Bs
dWdpbl9kaXN0aW5mbygpOgogICAgICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVz
KFsicGx1Z2luczogKiJdKQogCisgICAgZGVmIHRlc3Rfbm9faGVhZGVyX3RyYWlsZXJfaW5mbyhz
ZWxmLCB0ZXN0ZGlyLCByZXF1ZXN0KToKKyAgICAgICAgdGVzdGRpci5tb25rZXlwYXRjaC5kZWxl
bnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIpCisgICAgICAgIHRlc3RkaXIubWFr
ZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfcGFzc2VzKCk6
CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1uby1oZWFkZXIiKQorICAgICAgICB2ZXJpbmZv
ID0gIi4iLmpvaW4obWFwKHN0ciwgc3lzLnZlcnNpb25faW5mb1s6M10pKQorICAgICAgICByZXN1
bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgKKyAgICAgICAgICAgICJwbGF0Zm9ybSAlcyAtLSBQ
eXRob24gJXMqcHl0ZXN0LSVzKnB5LSVzKnBsdWdneS0lcyIKKyAgICAgICAgICAgICUgKAorICAg
ICAgICAgICAgICAgIHN5cy5wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICB2ZXJpbmZvLAorICAg
ICAgICAgICAgICAgIHB5dGVzdC5fX3ZlcnNpb25fXywKKyAgICAgICAgICAgICAgICBweS5fX3Zl
cnNpb25fXywKKyAgICAgICAgICAgICAgICBwbHVnZ3kuX192ZXJzaW9uX18sCisgICAgICAgICAg
ICApCisgICAgICAgICkKKyAgICAgICAgaWYgcmVxdWVzdC5jb25maWcucGx1Z2lubWFuYWdlci5s
aXN0X3BsdWdpbl9kaXN0aW5mbygpOgorICAgICAgICAgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1h
dGNoX2xpbmUoInBsdWdpbnM6ICoiKQorCisgICAgZGVmIHRlc3RfaGVhZGVyKHNlbGYsIHRlc3Rk
aXIpOgorICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0cyIpLmVuc3VyZV9kaXIoKQor
ICAgICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJndWkiKS5lbnN1cmVfZGlyKCkKKworICAgICAg
ICAjIG5vIGluaSBmaWxlCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAg
ICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsicm9vdGRpcjogKnRlc3RfaGVhZGVy
MCJdKQorCisgICAgICAgICMgd2l0aCBjb25maWdmaWxlCisgICAgICAgIHRlc3RkaXIubWFrZWlu
aSgiIiJbcHl0ZXN0XSIiIikKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQor
ICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyJyb290ZGlyOiAqdGVzdF9oZWFk
ZXIwLCBjb25maWdmaWxlOiB0b3guaW5pIl0pCisKKyAgICAgICAgIyB3aXRoIHRlc3RwYXRocyBv
cHRpb24sIGFuZCBub3QgcGFzc2luZyBhbnl0aGluZyBpbiB0aGUgY29tbWFuZC1saW5lCisgICAg
ICAgIHRlc3RkaXIubWFrZWluaSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgW3B5dGVz
dF0KKyAgICAgICAgICAgIHRlc3RwYXRocyA9IHRlc3RzIGd1aQorICAgICAgICAiIiIKKyAgICAg
ICAgKQorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsicm9vdGRpcjogKnRlc3RfaGVh
ZGVyMCwgY29uZmlnZmlsZTogdG94LmluaSwgdGVzdHBhdGhzOiB0ZXN0cywgZ3VpIl0KKyAgICAg
ICAgKQorCisgICAgICAgICMgd2l0aCB0ZXN0cGF0aHMgb3B0aW9uLCBwYXNzaW5nIGRpcmVjdG9y
eSBpbiBjb21tYW5kLWxpbmU6IGRvIG5vdCBzaG93IHRlc3RwYXRocyB0aGVuCisgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCJ0ZXN0cyIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcyhbInJvb3RkaXI6ICp0ZXN0X2hlYWRlcjAsIGNvbmZpZ2ZpbGU6IHRveC5p
bmkiXSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcl9hYnNvbHV0ZV90ZXN0cGF0aCgKKyAgICAgICAg
c2VsZiwgdGVzdGRpcjogVGVzdGRpciwgbW9ua2V5cGF0Y2g6IE1vbmtleVBhdGNoCisgICAgKSAt
PiBOb25lOgorICAgICAgICAiIiJSZWdyZXNzdGlvbiB0ZXN0IGZvciAjNzgxNC4iIiIKKyAgICAg
ICAgdGVzdHMgPSB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0cyIpCisgICAgICAgIHRlc3RzLmVu
c3VyZV9kaXIoKQorICAgICAgICB0ZXN0ZGlyLm1ha2VweXByb2plY3R0b21sKAorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCisgICAgICAgICAg
ICB0ZXN0cGF0aHMgPSBbJ3t9J10KKyAgICAgICAgIiIiLmZvcm1hdCgKKyAgICAgICAgICAgICAg
ICB0ZXN0cworICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3Rk
aXIucnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJyb290ZGlyOiAqYWJzb2x1dGVfdGVzdHBhdGgw
LCBjb25maWdmaWxlOiBweXByb2plY3QudG9tbCwgdGVzdHBhdGhzOiB7fSIuZm9ybWF0KAorICAg
ICAgICAgICAgICAgICAgICB0ZXN0cworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0K
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfbm9faGVhZGVyKHNlbGYsIHRlc3RkaXIpOgorICAg
ICAgICB0ZXN0ZGlyLnRtcGRpci5qb2luKCJ0ZXN0cyIpLmVuc3VyZV9kaXIoKQorICAgICAgICB0
ZXN0ZGlyLnRtcGRpci5qb2luKCJndWkiKS5lbnN1cmVfZGlyKCkKKworICAgICAgICAjIHdpdGgg
dGVzdHBhdGhzIG9wdGlvbiwgYW5kIG5vdCBwYXNzaW5nIGFueXRoaW5nIGluIHRoZSBjb21tYW5k
LWxpbmUKKyAgICAgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBbcHl0ZXN0XQorICAgICAgICAgICAgdGVzdHBhdGhzID0gdGVzdHMgZ3VpCisgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLW5v
LWhlYWRlciIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKAorICAgICAg
ICAgICAgInJvb3RkaXI6ICp0ZXN0X2hlYWRlcjAsIGluaWZpbGU6IHRveC5pbmksIHRlc3RwYXRo
czogdGVzdHMsIGd1aSIKKyAgICAgICAgKQorCisgICAgICAgICMgd2l0aCB0ZXN0cGF0aHMgb3B0
aW9uLCBwYXNzaW5nIGRpcmVjdG9yeSBpbiBjb21tYW5kLWxpbmU6IGRvIG5vdCBzaG93IHRlc3Rw
YXRocyB0aGVuCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCJ0ZXN0cyIsICIt
LW5vLWhlYWRlciIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCJyb290
ZGlyOiAqdGVzdF9oZWFkZXIwLCBpbmlmaWxlOiB0b3guaW5pIikKKworICAgIGRlZiB0ZXN0X25v
X3N1bW1hcnkoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHAxID0gdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgdGVzdF9ub19zdW1tYXJ5KCk6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlCisgICAgICAgICIiIgorICAgICAgICApCisgICAg
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAxLCAiLS1uby1zdW1tYXJ5IikKKyAgICAg
ICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIio9IEZBSUxVUkVTID0qIikKKwogICAg
IGRlZiB0ZXN0X3Nob3dsb2NhbHMoc2VsZiwgdGVzdGRpcik6CiAgICAgICAgIHAxID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAogICAgICAgICAgICAgIiIiCkBAIC01ODIsOCArODIxLDI5IEBAIGNsYXNz
IFRlc3RUZXJtaW5hbEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgICAgIF0KICAgICAgICAg
KQogCi0gICAgZGVmIHRlc3RfdmVyYm9zZV9yZXBvcnRpbmcoc2VsZiwgdGVzdGRpciwgcHl0ZXN0
Y29uZmlnKToKKyAgICBkZWYgdGVzdF9zaG93bG9jYWxzX3Nob3J0KHNlbGYsIHRlc3RkaXIpOgog
ICAgICAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAg
ICAgICAgZGVmIHRlc3Rfc2hvd2xvY2Fsc19zaG9ydCgpOgorICAgICAgICAgICAgICAgIHggPSAz
CisgICAgICAgICAgICAgICAgeSA9ICJ4eHh4IgorICAgICAgICAgICAgICAgIGFzc2VydCAwCisg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KHAxLCAiLWwiLCAiLS10Yj1zaG9ydCIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAidGVzdF9zaG93bG9jYWxzX3No
b3J0LnB5OioiLAorICAgICAgICAgICAgICAgICIgICAgYXNzZXJ0IDAiLAorICAgICAgICAgICAg
ICAgICJFICAgYXNzZXJ0IDAiLAorICAgICAgICAgICAgICAgICIgICAgICAgIHggICAgICAgICAg
PSAzIiwKKyAgICAgICAgICAgICAgICAiICAgICAgICB5ICAgICAgICAgID0gJ3h4eHgnIiwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIHZl
cmJvc2VfdGVzdGZpbGUoc2VsZiwgdGVzdGRpcik6CisgICAgICAgIHJldHVybiB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKICAg
ICAgICAgICAgIGRlZiB0ZXN0X2ZhaWwoKToKQEAgLTU5OSwyMiArODU5LDMyIEBAIGNsYXNzIFRl
c3RUZXJtaW5hbEZ1bmN0aW9uYWwob2JqZWN0KToKICAgICAgICAgICAgICAgICB5aWVsZCBjaGVj
aywgMAogICAgICAgICAiIiIKICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdChwMSwgIi12IikKKworICAgIGRlZiB0ZXN0X3ZlcmJvc2VfcmVwb3J0aW5nKHNlbGYs
IHZlcmJvc2VfdGVzdGZpbGUsIHRlc3RkaXIpOgorICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgKKyAgICAgICAgICAgIHZlcmJvc2VfdGVzdGZpbGUsICItdiIsICItV2Fsd2F5czo6
cHl0ZXN0LlB5dGVzdFdhcm5pbmciCisgICAgICAgICkKICAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICIqdGVzdF92ZXJi
b3NlX3JlcG9ydGluZy5weTo6dGVzdF9mYWlsICpGQUlMKiIsCiAgICAgICAgICAgICAgICAgIip0
ZXN0X3ZlcmJvc2VfcmVwb3J0aW5nLnB5Ojp0ZXN0X3Bhc3MgKlBBU1MqIiwKICAgICAgICAgICAg
ICAgICAiKnRlc3RfdmVyYm9zZV9yZXBvcnRpbmcucHk6OlRlc3RDbGFzczo6dGVzdF9za2lwICpT
S0lQKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0X3ZlcmJvc2VfcmVwb3J0aW5nLnB5Ojp0ZXN0
X2dlbiowKiAqRkFJTCoiLAorICAgICAgICAgICAgICAgICIqdGVzdF92ZXJib3NlX3JlcG9ydGlu
Zy5weTo6dGVzdF9nZW4gKlhGQUlMKiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKICAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQogCisgICAgZGVmIHRlc3RfdmVyYm9zZV9yZXBvcnRp
bmdfeGRpc3Qoc2VsZiwgdmVyYm9zZV90ZXN0ZmlsZSwgdGVzdGRpciwgcHl0ZXN0Y29uZmlnKToK
ICAgICAgICAgaWYgbm90IHB5dGVzdGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInhk
aXN0Iik6CiAgICAgICAgICAgICBweXRlc3Quc2tpcCgieGRpc3QgcGx1Z2luIG5vdCBpbnN0YWxs
ZWQiKQogCi0gICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAxLCAiLXYiLCAiLW4g
MSIpCi0gICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipGQUlMKnRlc3RfdmVy
Ym9zZV9yZXBvcnRpbmcucHk6OnRlc3RfZmFpbCoiXSkKKyAgICAgICAgdGVzdGRpci5tb25rZXlw
YXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BMVUdJTl9BVVRPTE9BRCIpCisgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KAorICAgICAgICAgICAgdmVyYm9zZV90ZXN0ZmlsZSwg
Ii12IiwgIi1uIDEiLCAiLVdhbHdheXM6OnB5dGVzdC5QeXRlc3RXYXJuaW5nIgorICAgICAgICAp
CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsiKkZB
SUwqdGVzdF92ZXJib3NlX3JlcG9ydGluZ194ZGlzdC5weTo6dGVzdF9mYWlsKiJdCisgICAgICAg
ICkKICAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQogCiAgICAgZGVmIHRlc3RfcXVpZXRf
cmVwb3J0aW5nKHNlbGYsIHRlc3RkaXIpOgpAQCAtNjM1LDcgKzkwNSwxMCBAQCBjbGFzcyBUZXN0
VGVybWluYWxGdW5jdGlvbmFsKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCAiPT09IiBub3QgaW4g
cwogICAgICAgICBhc3NlcnQgInBhc3NlZCIgbm90IGluIHMKIAotICAgIGRlZiB0ZXN0X3JlcG9y
dF9jb2xsZWN0aW9uZmluaXNoX2hvb2soc2VsZiwgdGVzdGRpcik6CisgICAgQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKAorICAgICAgICAicGFyYW1zIiwgWygpLCAoIi0tY29sbGVjdC1vbmx5Iiwp
XSwgaWRzPVsibm8tcGFyYW1zIiwgImNvbGxlY3Qtb25seSJdCisgICAgKQorICAgIGRlZiB0ZXN0
X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoX2hvb2soc2VsZiwgdGVzdGRpciwgcGFyYW1zKToKICAg
ICAgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAg
IGRlZiBweXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2goY29uZmlnLCBzdGFydGRpciwgaXRl
bXMpOgpAQCAtNjUwLDI4ICs5MjMsNjMgQEAgY2xhc3MgVGVzdFRlcm1pbmFsRnVuY3Rpb25hbChv
YmplY3QpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIiIiCiAgICAgICAgICkKLSAg
ICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgqcGFyYW1zKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyJjb2xsZWN0ZWQgMyBpdGVtcyIsICJoZWxsbyBmcm9tIGhvb2s6IDMgaXRlbXMiXSkKIAor
ICAgIGRlZiB0ZXN0X3N1bW1hcnlfZl9hbGlhcyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgIiIi
VGVzdCB0aGF0ICdmJyBhbmQgJ0YnIHJlcG9ydCBjaGFycyBhcmUgYWxpYXNlcyBhbmQgZG9uJ3Qg
c2hvdyB1cCB0d2ljZSBpbiB0aGUgc3VtbWFyeSAoIzYzMzQpIiIiCisgICAgICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgICAgICIiIgorICAgICAgICApCisg
ICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcmZGIikKKyAgICAgICAgZXhwZWN0
ZWQgPSAiRkFJTEVEIHRlc3Rfc3VtbWFyeV9mX2FsaWFzLnB5Ojp0ZXN0IC0gYXNzZXJ0IEZhbHNl
IgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoW2V4cGVjdGVkXSkKKyAgICAg
ICAgYXNzZXJ0IHJlc3VsdC5zdGRvdXQubGluZXMuY291bnQoZXhwZWN0ZWQpID09IDEKIAotZGVm
IHRlc3RfZmFpbF9leHRyYV9yZXBvcnRpbmcodGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlcHlm
aWxlKCJkZWYgdGVzdF90aGlzKCk6IGFzc2VydCAwIikKKyAgICBkZWYgdGVzdF9zdW1tYXJ5X3Nf
YWxpYXMoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlRlc3QgdGhhdCAncycgYW5kICdTJyBy
ZXBvcnQgY2hhcnMgYXJlIGFsaWFzZXMgYW5kIGRvbid0IHNob3cgdXAgdHdpY2UgaW4gdGhlIHN1
bW1hcnkiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBweXRlc3QubWFyay5za2lw
CisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
cnNTIikKKyAgICAgICAgZXhwZWN0ZWQgPSAiU0tJUFBFRCBbMV0gdGVzdF9zdW1tYXJ5X3NfYWxp
YXMucHk6MzogdW5jb25kaXRpb25hbCBza2lwIgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoW2V4cGVjdGVkXSkKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5zdGRvdXQubGluZXMu
Y291bnQoZXhwZWN0ZWQpID09IDEKKworCitkZWYgdGVzdF9mYWlsX2V4dHJhX3JlcG9ydGluZyh0
ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CisgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJDT0xVTU5TIiwg
IjgwIikKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X3RoaXMoKTogYXNzZXJ0IDAs
ICd0aGlzX2ZhaWxlZCcgKiAxMDAiKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
ck4iKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqc2hvcnQgdGVzdCBzdW1t
YXJ5KiIpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgIGFzc2VydCAic2hv
cnQgdGVzdCBzdW1tYXJ5IiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQotICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItcmYiKQotICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5l
cyhbIip0ZXN0IHN1bW1hcnkqIiwgIkZBSUwqdGVzdF9mYWlsX2V4dHJhX3JlcG9ydGluZyoiXSkK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAg
ICIqdGVzdCBzdW1tYXJ5KiIsCisgICAgICAgICAgICAiRkFJTEVEIHRlc3RfZmFpbF9leHRyYV9y
ZXBvcnRpbmcucHk6OnRlc3RfdGhpcyAtIEFzc2VydGlvbkVycm9yOiB0aGlzX2ZhaWxlZHQuLi4i
LAorICAgICAgICBdCisgICAgKQogCiAKIGRlZiB0ZXN0X2ZhaWxfcmVwb3J0aW5nX29uX3Bhc3Mo
dGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF90aGlzKCk6IGFzc2Vy
dCAxIikKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJmIikKLSAgICBhc3NlcnQg
InNob3J0IHRlc3Qgc3VtbWFyeSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICByZXN1
bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKnNob3J0IHRlc3Qgc3VtbWFyeSoiKQogCiAKIGRl
ZiB0ZXN0X3Bhc3NfZXh0cmFfcmVwb3J0aW5nKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5
ZmlsZSgiZGVmIHRlc3RfdGhpcygpOiBhc3NlcnQgMSIpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5y
dW5weXRlc3QoKQotICAgIGFzc2VydCAic2hvcnQgdGVzdCBzdW1tYXJ5IiBub3QgaW4gcmVzdWx0
LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqc2hvcnQg
dGVzdCBzdW1tYXJ5KiIpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ycCIpCiAg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKnRlc3Qgc3VtbWFyeSoiLCAiUEFTUyp0
ZXN0X3Bhc3NfZXh0cmFfcmVwb3J0aW5nKiJdKQogCkBAIC02NzksNDEgKzk4NywxMTkgQEAgZGVm
IHRlc3RfcGFzc19leHRyYV9yZXBvcnRpbmcodGVzdGRpcik6CiBkZWYgdGVzdF9wYXNzX3JlcG9y
dGluZ19vbl9mYWlsKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgiZGVmIHRlc3Rf
dGhpcygpOiBhc3NlcnQgMCIpCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1ycCIp
Ci0gICAgYXNzZXJ0ICJzaG9ydCB0ZXN0IHN1bW1hcnkiIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0
cigpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIipzaG9ydCB0ZXN0IHN1bW1h
cnkqIikKIAogCiBkZWYgdGVzdF9wYXNzX291dHB1dF9yZXBvcnRpbmcodGVzdGRpcik6CiAgICAg
dGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKLSAgICAgICAgZGVmIHRlc3RfcGFzc19v
dXRwdXQoKToKKyAgICAgICAgZGVmIHNldHVwX21vZHVsZSgpOgorICAgICAgICAgICAgcHJpbnQo
InNldHVwX21vZHVsZSIpCisKKyAgICAgICAgZGVmIHRlYXJkb3duX21vZHVsZSgpOgorICAgICAg
ICAgICAgcHJpbnQoInRlYXJkb3duX21vZHVsZSIpCisKKyAgICAgICAgZGVmIHRlc3RfcGFzc19o
YXNfb3V0cHV0KCk6CiAgICAgICAgICAgICBwcmludCgiRm91ciBzY29yZSBhbmQgc2V2ZW4geWVh
cnMgYWdvLi4uIikKKworICAgICAgICBkZWYgdGVzdF9wYXNzX25vX291dHB1dCgpOgorICAgICAg
ICAgICAgcGFzcwogICAgICIiIgogICAgICkKICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgpCi0gICAgYXNzZXJ0ICJGb3VyIHNjb3JlIGFuZCBzZXZlbiB5ZWFycyBhZ28uLi4iIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1y
UCIpCi0gICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiRm91ciBzY29yZSBhbmQgc2V2
ZW4geWVhcnMgYWdvLi4uIl0pCisgICAgcyA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBhc3Nl
cnQgInRlc3RfcGFzc19oYXNfb3V0cHV0IiBub3QgaW4gcworICAgIGFzc2VydCAiRm91ciBzY29y
ZSBhbmQgc2V2ZW4geWVhcnMgYWdvLi4uIiBub3QgaW4gcworICAgIGFzc2VydCAidGVzdF9wYXNz
X25vX291dHB1dCIgbm90IGluIHMKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJQ
cCIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAg
ICAgICAiKj0gUEFTU0VTID0qIiwKKyAgICAgICAgICAgICIqXyB0ZXN0X3Bhc3NfaGFzX291dHB1
dCBfKiIsCisgICAgICAgICAgICAiKi0gQ2FwdHVyZWQgc3Rkb3V0IHNldHVwIC0qIiwKKyAgICAg
ICAgICAgICJzZXR1cF9tb2R1bGUiLAorICAgICAgICAgICAgIiotIENhcHR1cmVkIHN0ZG91dCBj
YWxsIC0qIiwKKyAgICAgICAgICAgICJGb3VyIHNjb3JlIGFuZCBzZXZlbiB5ZWFycyBhZ28uLi4i
LAorICAgICAgICAgICAgIiotIENhcHR1cmVkIHN0ZG91dCB0ZWFyZG93biAtKiIsCisgICAgICAg
ICAgICAidGVhcmRvd25fbW9kdWxlIiwKKyAgICAgICAgICAgICIqPSBzaG9ydCB0ZXN0IHN1bW1h
cnkgaW5mbyA9KiIsCisgICAgICAgICAgICAiUEFTU0VEIHRlc3RfcGFzc19vdXRwdXRfcmVwb3J0
aW5nLnB5Ojp0ZXN0X3Bhc3NfaGFzX291dHB1dCIsCisgICAgICAgICAgICAiUEFTU0VEIHRlc3Rf
cGFzc19vdXRwdXRfcmVwb3J0aW5nLnB5Ojp0ZXN0X3Bhc3Nfbm9fb3V0cHV0IiwKKyAgICAgICAg
ICAgICIqPSAyIHBhc3NlZCBpbiAqIiwKKyAgICAgICAgXQorICAgICkKIAogCi1kZWYgdGVzdF9j
b2xvcl95ZXModGVzdGRpcik6Ci0gICAgdGVzdGRpci5tYWtlcHlmaWxlKCJkZWYgdGVzdF90aGlz
KCk6IGFzc2VydCAxIikKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1jb2xvcj15
ZXMiKQotICAgIGFzc2VydCAidGVzdCBzZXNzaW9uIHN0YXJ0cyIgaW4gcmVzdWx0LnN0ZG91dC5z
dHIoKQotICAgIGFzc2VydCAiXHgxYlsxbSIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorZGVmIHRl
c3RfY29sb3JfeWVzKHRlc3RkaXIsIGNvbG9yX21hcHBpbmcpOgorICAgIHAxID0gdGVzdGRpci5t
YWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVmIGZhaWwoKToKKyAgICAgICAgICAg
IGFzc2VydCAwCisKKyAgICAgICAgZGVmIHRlc3RfdGhpcygpOgorICAgICAgICAgICAgZmFpbCgp
CisgICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1j
b2xvcj15ZXMiLCBzdHIocDEpKQorICAgIGNvbG9yX21hcHBpbmcucmVxdWlyZXNfb3JkZXJlZF9t
YXJrdXAocmVzdWx0KQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAg
Y29sb3JfbWFwcGluZy5mb3JtYXRfZm9yX2ZubWF0Y2goCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgIntib2xkfT0qPSB0ZXN0IHNlc3Npb24gc3RhcnRzID0qPXtyZXNldH0iLAorICAg
ICAgICAgICAgICAgICJjb2xsZWN0ZWQgMSBpdGVtIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAg
ICAgICAgICAgICAgICAidGVzdF9jb2xvcl95ZXMucHkge3JlZH1Ge3Jlc2V0fXtyZWR9ICogWzEw
MCVde3Jlc2V0fSIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIj0qPSBG
QUlMVVJFUyA9Kj0iLAorICAgICAgICAgICAgICAgICJ7cmVkfXtib2xkfV8qXyB0ZXN0X3RoaXMg
Xypfe3Jlc2V0fSIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIiAgICB7
a3d9ZGVme2hsLXJlc2V0fSB7ZnVuY3Rpb259dGVzdF90aGlze2hsLXJlc2V0fSgpOiIsCisgICAg
ICAgICAgICAgICAgIj4gICAgICAgZmFpbCgpIiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAg
ICAgICAgICAgICAie2JvbGR9e3JlZH10ZXN0X2NvbG9yX3llcy5weXtyZXNldH06NTogIiwKKyAg
ICAgICAgICAgICAgICAiXyBfICogXyBfKiIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAgICAgIiAgICB7a3d9ZGVme2hsLXJlc2V0fSB7ZnVuY3Rpb259ZmFpbHtobC1yZXNldH0o
KToiLAorICAgICAgICAgICAgICAgICI+ICAgICAgIHtrd31hc3NlcnR7aGwtcmVzZXR9IHtudW1i
ZXJ9MHtobC1yZXNldH0iLAorICAgICAgICAgICAgICAgICJ7Ym9sZH17cmVkfUUgICAgICAgYXNz
ZXJ0IDB7cmVzZXR9IiwKKyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAie2Jv
bGR9e3JlZH10ZXN0X2NvbG9yX3llcy5weXtyZXNldH06MjogQXNzZXJ0aW9uRXJyb3IiLAorICAg
ICAgICAgICAgICAgICJ7cmVkfT0qPSB7cmVkfXtib2xkfTEgZmFpbGVke3Jlc2V0fXtyZWR9IGlu
ICpze3Jlc2V0fXtyZWR9ID0qPXtyZXNldH0iLAorICAgICAgICAgICAgXQorICAgICAgICApCisg
ICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbG9yPXllcyIsICItLXRi
PXNob3J0Iiwgc3RyKHAxKSkKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAg
ICAgIGNvbG9yX21hcHBpbmcuZm9ybWF0X2Zvcl9mbm1hdGNoKAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICJ7Ym9sZH09Kj0gdGVzdCBzZXNzaW9uIHN0YXJ0cyA9Kj17cmVzZXR9IiwK
KyAgICAgICAgICAgICAgICAiY29sbGVjdGVkIDEgaXRlbSIsCisgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgInRlc3RfY29sb3JfeWVzLnB5IHtyZWR9RntyZXNldH17cmVkfSAq
IFsxMDAlXXtyZXNldH0iLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICI9
Kj0gRkFJTFVSRVMgPSo9IiwKKyAgICAgICAgICAgICAgICAie3JlZH17Ym9sZH1fKl8gdGVzdF90
aGlzIF8qX3tyZXNldH0iLAorICAgICAgICAgICAgICAgICJ7Ym9sZH17cmVkfXRlc3RfY29sb3Jf
eWVzLnB5e3Jlc2V0fTo1OiBpbiB0ZXN0X3RoaXMiLAorICAgICAgICAgICAgICAgICIgICAgZmFp
bCgpIiwKKyAgICAgICAgICAgICAgICAie2JvbGR9e3JlZH10ZXN0X2NvbG9yX3llcy5weXtyZXNl
dH06MjogaW4gZmFpbCIsCisgICAgICAgICAgICAgICAgIiAgICB7a3d9YXNzZXJ0e2hsLXJlc2V0
fSB7bnVtYmVyfTB7aGwtcmVzZXR9IiwKKyAgICAgICAgICAgICAgICAie2JvbGR9e3JlZH1FICAg
YXNzZXJ0IDB7cmVzZXR9IiwKKyAgICAgICAgICAgICAgICAie3JlZH09Kj0ge3JlZH17Ym9sZH0x
IGZhaWxlZHtyZXNldH17cmVkfSBpbiAqc3tyZXNldH17cmVkfSA9Kj17cmVzZXR9IiwKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgKQorICAgICkKIAogCiBkZWYgdGVzdF9jb2xvcl9ubyh0ZXN0ZGly
KToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoImRlZiB0ZXN0X3RoaXMoKTogYXNzZXJ0IDEiKQog
ICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbG9yPW5vIikKICAgICBhc3NlcnQg
InRlc3Qgc2Vzc2lvbiBzdGFydHMiIGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKLSAgICBhc3NlcnQg
Ilx4MWJbMW0iIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0LnN0ZG91dC5u
b19mbm1hdGNoX2xpbmUoIipceDFiWzFtKiIpCiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJ2ZXJib3NlIiwgW1RydWUsIEZhbHNlXSkKIGRlZiB0ZXN0X2NvbG9yX3llc19jb2xsZWN0aW9u
X29uX25vbl9hdHR5KHRlc3RkaXIsIHZlcmJvc2UpOgotICAgICIiInNraXAgY29sbGVjdCBwcm9n
cmVzcyByZXBvcnQgd2hlbiB3b3JraW5nIG9uIG5vbi10ZXJtaW5hbHMuCi0gICAgIzEzOTcKLSAg
ICAiIiIKKyAgICAiIiIjMTM5NzogU2tpcCBjb2xsZWN0IHByb2dyZXNzIHJlcG9ydCB3aGVuIHdv
cmtpbmcgb24gbm9uLXRlcm1pbmFscy4iIiIKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAg
ICAgICIiIgogICAgICAgICBpbXBvcnQgcHl0ZXN0CkBAIC03MjgsMzcgKzExMTQsNjkgQEAgZGVm
IHRlc3RfY29sb3JfeWVzX2NvbGxlY3Rpb25fb25fbm9uX2F0dHkodGVzdGRpciwgdmVyYm9zZSk6
CiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKmFyZ3MpCiAgICAgYXNzZXJ0ICJ0ZXN0
IHNlc3Npb24gc3RhcnRzIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCiAgICAgYXNzZXJ0ICJceDFi
WzFtIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCi0gICAgYXNzZXJ0ICJjb2xsZWN0aW5nIDEwIGl0
ZW1zIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5t
YXRjaF9saW5lKCIqY29sbGVjdGluZyAxMCBpdGVtcyoiKQogICAgIGlmIHZlcmJvc2U6CiAgICAg
ICAgIGFzc2VydCAiY29sbGVjdGluZyAuLi4iIGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKICAgICBh
c3NlcnQgImNvbGxlY3RlZCAxMCBpdGVtcyIgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQogCiAKLWRl
ZiB0ZXN0X2dldHJlcG9ydG9wdCgpOgorZGVmIHRlc3RfZ2V0cmVwb3J0b3B0KCkgLT4gTm9uZToK
KyAgICBmcm9tIF9weXRlc3QudGVybWluYWwgaW1wb3J0IF9SRVBPUlRDSEFSU19ERUZBVUxUCiAK
LSAgICBjbGFzcyBDb25maWcob2JqZWN0KToKLQotICAgICAgICBjbGFzcyBPcHRpb24ob2JqZWN0
KToKLSAgICAgICAgICAgIHJlcG9ydGNoYXJzID0gIiIKLSAgICAgICAgICAgIGRpc2FibGVfd2Fy
bmluZ3MgPSBUcnVlCisgICAgY2xhc3MgRmFrZUNvbmZpZzoKKyAgICAgICAgY2xhc3MgT3B0aW9u
OgorICAgICAgICAgICAgcmVwb3J0Y2hhcnMgPSBfUkVQT1JUQ0hBUlNfREVGQVVMVAorICAgICAg
ICAgICAgZGlzYWJsZV93YXJuaW5ncyA9IEZhbHNlCiAKICAgICAgICAgb3B0aW9uID0gT3B0aW9u
KCkKIAotICAgIGNvbmZpZyA9IENvbmZpZygpCisgICAgY29uZmlnID0gY2FzdChDb25maWcsIEZh
a2VDb25maWcoKSkKKworICAgIGFzc2VydCBfUkVQT1JUQ0hBUlNfREVGQVVMVCA9PSAiZkUiCisK
KyAgICAjIERlZmF1bHQuCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJ3ZkUi
CiAKICAgICBjb25maWcub3B0aW9uLnJlcG9ydGNoYXJzID0gInNmIgotICAgIGFzc2VydCBnZXRy
ZXBvcnRvcHQoY29uZmlnKSA9PSAic2YiCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcp
ID09ICJ3c2YiCiAKICAgICBjb25maWcub3B0aW9uLnJlcG9ydGNoYXJzID0gInNmeHciCi0gICAg
YXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJzZngiCisgICAgYXNzZXJ0IGdldHJlcG9y
dG9wdChjb25maWcpID09ICJzZnh3IgorCisgICAgY29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9
ICJhIgorICAgIGFzc2VydCBnZXRyZXBvcnRvcHQoY29uZmlnKSA9PSAid3N4WEVmIgorCisgICAg
Y29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJOIgorICAgIGFzc2VydCBnZXRyZXBvcnRvcHQo
Y29uZmlnKSA9PSAidyIKKworICAgIGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMgPSAiTndmRSIK
KyAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gIndmRSIKKworICAgIGNvbmZpZy5v
cHRpb24ucmVwb3J0Y2hhcnMgPSAiTmZFTngiCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25m
aWcpID09ICJ3eCIKKworICAgICMgTm93IHdpdGggLS1kaXNhYmxlLXdhcm5pbmdzLgorICAgIGNv
bmZpZy5vcHRpb24uZGlzYWJsZV93YXJuaW5ncyA9IFRydWUKKyAgICBjb25maWcub3B0aW9uLnJl
cG9ydGNoYXJzID0gImEiCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJzeFhF
ZiIKIAogICAgIGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMgPSAic2Z4IgotICAgIGNvbmZpZy5v
cHRpb24uZGlzYWJsZV93YXJuaW5ncyA9IEZhbHNlCi0gICAgYXNzZXJ0IGdldHJlcG9ydG9wdChj
b25maWcpID09ICJzZnh3IgorICAgIGFzc2VydCBnZXRyZXBvcnRvcHQoY29uZmlnKSA9PSAic2Z4
IgogCiAgICAgY29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJzZnh3IgotICAgIGNvbmZpZy5v
cHRpb24uZGlzYWJsZV93YXJuaW5ncyA9IEZhbHNlCi0gICAgYXNzZXJ0IGdldHJlcG9ydG9wdChj
b25maWcpID09ICJzZnh3IgorICAgIGFzc2VydCBnZXRyZXBvcnRvcHQoY29uZmlnKSA9PSAic2Z4
IgorCisgICAgY29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJhIgorICAgIGFzc2VydCBnZXRy
ZXBvcnRvcHQoY29uZmlnKSA9PSAic3hYRWYiCisKKyAgICBjb25maWcub3B0aW9uLnJlcG9ydGNo
YXJzID0gIkEiCisgICAgYXNzZXJ0IGdldHJlcG9ydG9wdChjb25maWcpID09ICJQcHN4WEVmIgor
CisgICAgY29uZmlnLm9wdGlvbi5yZXBvcnRjaGFycyA9ICJBTiIKKyAgICBhc3NlcnQgZ2V0cmVw
b3J0b3B0KGNvbmZpZykgPT0gIiIKKworICAgIGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hhcnMgPSAi
TndmRSIKKyAgICBhc3NlcnQgZ2V0cmVwb3J0b3B0KGNvbmZpZykgPT0gImZFIgogCiAKIGRlZiB0
ZXN0X3Rlcm1pbmFscmVwb3J0ZXJfcmVwb3J0b3B0X2FkZG9wdHModGVzdGRpcik6CkBAIC04MDQs
MTYgKzEyMjIsMTUgQEAgZGVmIHRlc3RfdGJzdHlsZV9zaG9ydCh0ZXN0ZGlyKToKICAgICBhc3Nl
cnQgImFzc2VydCB4IiBpbiBzCiAKIAotZGVmIHRlc3RfdHJhY2Vjb25maWcodGVzdGRpciwgbW9u
a2V5cGF0Y2gpOgorZGVmIHRlc3RfdHJhY2Vjb25maWcodGVzdGRpcik6CiAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi0tdHJhY2Vjb25maWciKQogICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIiphY3RpdmUgcGx1Z2lucyoiXSkKLSAgICBhc3NlcnQgcmVzdWx0LnJldCA9
PSBFWElUX05PVEVTVFNDT0xMRUNURUQKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSBFeGl0Q29k
ZS5OT19URVNUU19DT0xMRUNURUQKIAogCi1jbGFzcyBUZXN0R2VuZXJpY1JlcG9ydGluZyhvYmpl
Y3QpOgotICAgICIiIiB0aGlzIHRlc3QgY2xhc3MgY2FuIGJlIHN1YmNsYXNzZWQgd2l0aCBhIGRp
ZmZlcmVudCBvcHRpb24KLSAgICAgICAgcHJvdmlkZXIgdG8gcnVuIGUuZy4gZGlzdHJpYnV0ZWQg
dGVzdHMuCi0gICAgIiIiCitjbGFzcyBUZXN0R2VuZXJpY1JlcG9ydGluZzoKKyAgICAiIiJUZXN0
IGNsYXNzIHdoaWNoIGNhbiBiZSBzdWJjbGFzc2VkIHdpdGggYSBkaWZmZXJlbnQgb3B0aW9uIHBy
b3ZpZGVyIHRvCisgICAgcnVuIGUuZy4gZGlzdHJpYnV0ZWQgdGVzdHMuIiIiCiAKICAgICBkZWYg
dGVzdF9jb2xsZWN0X2ZhaWwoc2VsZiwgdGVzdGRpciwgb3B0aW9uKToKICAgICAgICAgdGVzdGRp
ci5tYWtlcHlmaWxlKCJpbXBvcnQgeHl6XG4iKQpAQCAtODM1LDcgKzEyNTIsMzEgQEAgY2xhc3Mg
VGVzdEdlbmVyaWNSZXBvcnRpbmcob2JqZWN0KToKICAgICAgICAgKQogICAgICAgICByZXN1bHQg
PSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1tYXhmYWlsPTIiLCAqb3B0aW9uLmFyZ3MpCiAgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgIFsiKmRlZiB0ZXN0XzEo
KToqIiwgIipkZWYgdGVzdF8yKCk6KiIsICIqMiBmYWlsZWQqIl0KKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAiKmRlZiB0ZXN0XzEoKToqIiwKKyAgICAgICAgICAgICAgICAiKmRlZiB0
ZXN0XzIoKToqIiwKKyAgICAgICAgICAgICAgICAiKiEgc3RvcHBpbmcgYWZ0ZXIgMiBmYWlsdXJl
cyAhKiIsCisgICAgICAgICAgICAgICAgIioyIGZhaWxlZCoiLAorICAgICAgICAgICAgXQorICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9tYXhmYWlsdXJlc193aXRoX2ludGVycnVwdGVkKHNlbGYs
IHRlc3RkaXIpOgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIK
KyAgICAgICAgICAgIGRlZiB0ZXN0KHJlcXVlc3QpOgorICAgICAgICAgICAgICAgIHJlcXVlc3Qu
c2Vzc2lvbi5zaG91bGRzdG9wID0gInNlc3Npb25faW50ZXJydXB0ZWQiCisgICAgICAgICAgICAg
ICAgYXNzZXJ0IDAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoIi0tbWF4ZmFpbD0xIiwgIi1yYSIpCisgICAgICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKj0gc2hv
cnQgdGVzdCBzdW1tYXJ5IGluZm8gPSoiLAorICAgICAgICAgICAgICAgICJGQUlMRUQgKiIsCisg
ICAgICAgICAgICAgICAgIiohIHN0b3BwaW5nIGFmdGVyIDEgZmFpbHVyZXMgISoiLAorICAgICAg
ICAgICAgICAgICIqISBzZXNzaW9uX2ludGVycnVwdGVkICEqIiwKKyAgICAgICAgICAgICAgICAi
Kj0gMSBmYWlsZWQgaW4qIiwKKyAgICAgICAgICAgIF0KICAgICAgICAgKQogCiAgICAgZGVmIHRl
c3RfdGJfb3B0aW9uKHNlbGYsIHRlc3RkaXIsIG9wdGlvbik6CkBAIC04NDUsMTggKzEyODYsMTgg
QEAgY2xhc3MgVGVzdEdlbmVyaWNSZXBvcnRpbmcob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBn
KCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgogICAgICAgICAgICAgZGVmIHRl
c3RfZnVuYygpOgotICAgICAgICAgICAgICAgIHByaW50ICg2KjcpCisgICAgICAgICAgICAgICAg
cHJpbnQoNio3KQogICAgICAgICAgICAgICAgIGcoKSAgIyAtLWNhbGxpbmctLQogICAgICAgICAi
IiIKICAgICAgICAgKQogICAgICAgICBmb3IgdGJvcHQgaW4gWyJsb25nIiwgInNob3J0IiwgIm5v
Il06CiAgICAgICAgICAgICBwcmludCgidGVzdGluZyAtLXRiPSVzLi4uIiAlIHRib3B0KQotICAg
ICAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tdGI9JXMiICUgdGJvcHQpCisg
ICAgICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJOIiwgIi0tdGI9JXMiICUg
dGJvcHQpCiAgICAgICAgICAgICBzID0gcmVzdWx0LnN0ZG91dC5zdHIoKQogICAgICAgICAgICAg
aWYgdGJvcHQgPT0gImxvbmciOgotICAgICAgICAgICAgICAgIGFzc2VydCAicHJpbnQgKDYqNyki
IGluIHMKKyAgICAgICAgICAgICAgICBhc3NlcnQgInByaW50KDYqNykiIGluIHMKICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0ICJwcmludCAoNio3KSIgbm90IGluIHMK
KyAgICAgICAgICAgICAgICBhc3NlcnQgInByaW50KDYqNykiIG5vdCBpbiBzCiAgICAgICAgICAg
ICBpZiB0Ym9wdCAhPSAibm8iOgogICAgICAgICAgICAgICAgIGFzc2VydCAiLS1jYWxsaW5nLS0i
IGluIHMKICAgICAgICAgICAgICAgICBhc3NlcnQgIkluZGV4RXJyb3IiIGluIHMKQEAgLTg3Miw3
ICsxMzEzLDcgQEAgY2xhc3MgVGVzdEdlbmVyaWNSZXBvcnRpbmcob2JqZWN0KToKICAgICAgICAg
ICAgIGRlZiBnKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgogICAgICAgICAg
ICAgZGVmIHRlc3RfZnVuYzEoKToKLSAgICAgICAgICAgICAgICBwcmludCAoNio3KQorICAgICAg
ICAgICAgICAgIHByaW50KDYqNykKICAgICAgICAgICAgICAgICBnKCkgICMgLS1jYWxsaW5nLS0K
ICAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMyKCk6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IDAs
ICJoZWxsbyIKQEAgLTk1NSw2ICsxMzk2LDQ2IEBAIGRlZiBweXRlc3RfcmVwb3J0X2hlYWRlcihj
b25maWcsIHN0YXJ0ZGlyKToKICAgICAgICAgYXNzZXJ0ICIhVGhpcyBpcyBzdGRlcnIhIiBub3Qg
aW4gc3Rkb3V0CiAgICAgICAgIGFzc2VydCAiIVRoaXMgaXMgYSB3YXJuaW5nIGxvZyBtc2chIiBu
b3QgaW4gc3Rkb3V0CiAKKyAgICBkZWYgdGVzdF9zaG93X2NhcHR1cmVfd2l0aF90ZWFyZG93bl9s
b2dzKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiJFbnN1cmUgdGhhdCB0aGUgY2FwdHVyaW5n
IG9mIHRlYXJkb3duIGxvZ3MgaG9ub3IgLS1zaG93LWNhcHR1cmUgc2V0dGluZyIiIgorICAgICAg
ICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGltcG9y
dCBsb2dnaW5nCisgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0CisKKyAgICAgICAgICAgIEBweXRlc3QuZml4dHVyZShzY29wZT0iZnVuY3Rpb24iLCBhdXRv
dXNlPSJUcnVlIikKKyAgICAgICAgICAgIGRlZiBob29rX2VhY2hfdGVzdChyZXF1ZXN0KToKKyAg
ICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiFz
dGRvdXQhIikKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIhc3RkZXJyISIpCisg
ICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCIhbG9nISIpCisKKyAgICAgICAgICAgIGRl
ZiB0ZXN0X2Z1bmMoKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgIiIi
CisgICAgICAgICkKKworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zaG93
LWNhcHR1cmU9c3Rkb3V0IiwgIi0tdGI9c2hvcnQiKS5zdGRvdXQuc3RyKCkKKyAgICAgICAgYXNz
ZXJ0ICIhc3Rkb3V0ISIgaW4gcmVzdWx0CisgICAgICAgIGFzc2VydCAiIXN0ZGVyciEiIG5vdCBp
biByZXN1bHQKKyAgICAgICAgYXNzZXJ0ICIhbG9nISIgbm90IGluIHJlc3VsdAorCisgICAgICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXNob3ctY2FwdHVyZT1zdGRlcnIiLCAiLS10
Yj1zaG9ydCIpLnN0ZG91dC5zdHIoKQorICAgICAgICBhc3NlcnQgIiFzdGRvdXQhIiBub3QgaW4g
cmVzdWx0CisgICAgICAgIGFzc2VydCAiIXN0ZGVyciEiIGluIHJlc3VsdAorICAgICAgICBhc3Nl
cnQgIiFsb2chIiBub3QgaW4gcmVzdWx0CisKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3QoIi0tc2hvdy1jYXB0dXJlPWxvZyIsICItLXRiPXNob3J0Iikuc3Rkb3V0LnN0cigpCisg
ICAgICAgIGFzc2VydCAiIXN0ZG91dCEiIG5vdCBpbiByZXN1bHQKKyAgICAgICAgYXNzZXJ0ICIh
c3RkZXJyISIgbm90IGluIHJlc3VsdAorICAgICAgICBhc3NlcnQgIiFsb2chIiBpbiByZXN1bHQK
KworICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLS1zaG93LWNhcHR1cmU9bm8i
LCAiLS10Yj1zaG9ydCIpLnN0ZG91dC5zdHIoKQorICAgICAgICBhc3NlcnQgIiFzdGRvdXQhIiBu
b3QgaW4gcmVzdWx0CisgICAgICAgIGFzc2VydCAiIXN0ZGVyciEiIG5vdCBpbiByZXN1bHQKKyAg
ICAgICAgYXNzZXJ0ICIhbG9nISIgbm90IGluIHJlc3VsdAorCiAKIEBweXRlc3QubWFyay54ZmFp
bCgibm90IGhhc2F0dHIob3MsICdkdXAnKSIpCiBkZWYgdGVzdF9mZG9wZW5fa2VwdF9hbGl2ZV9p
c3N1ZTEyNCh0ZXN0ZGlyKToKQEAgLTEwMTMsMjIgKzE0OTQsODcgQEAgZGVmIHRlc3RfdGVybWlu
YWxfc3VtbWFyeSh0ZXN0ZGlyKToKICAgICApCiAKIAorQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5p
bmdzKCJkZWZhdWx0IikKIGRlZiB0ZXN0X3Rlcm1pbmFsX3N1bW1hcnlfd2FybmluZ3NfYXJlX2Rp
c3BsYXllZCh0ZXN0ZGlyKToKICAgICAiIiJUZXN0IHRoYXQgd2FybmluZ3MgZW1pdHRlZCBkdXJp
bmcgcHl0ZXN0X3Rlcm1pbmFsX3N1bW1hcnkgYXJlIGRpc3BsYXllZC4KICAgICAoIzEzMDUpLgog
ICAgICIiIgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAiIiIKKyAgICAgICAg
aW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIGRlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJt
aW5hbHJlcG9ydGVyKToKLSAgICAgICAgICAgIGNvbmZpZyA9IHRlcm1pbmFscmVwb3J0ZXIuY29u
ZmlnCi0gICAgICAgICAgICBjb25maWcud2FybignQzEnLCAnaW50ZXJuYWwgd2FybmluZycpCisg
ICAgICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKCdpbnRlcm5hbCB3YXJuaW5nJykp
CisgICAgIiIiCisgICAgKQorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisg
ICAgICAgIGRlZiB0ZXN0X2ZhaWx1cmUoKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwor
ICAgICAgICAgICAgd2FybmluZ3Mud2Fybigid2FybmluZ19mcm9tXyIgKyAidGVzdCIpCisgICAg
ICAgICAgICBhc3NlcnQgMAogICAgICIiIgogICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1
bnB5dGVzdCgiLXJ3IikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJhIikKICAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCi0gICAgICAgIFsiPHVuZGV0ZXJtaW5lZCBs
b2NhdGlvbj4iLCAiKmludGVybmFsIHdhcm5pbmciLCAiKj09IDEgd2FybmluZ3MgaW4gKiJdCisg
ICAgICAgIFsKKyAgICAgICAgICAgICIqPSB3YXJuaW5ncyBzdW1tYXJ5ID0qIiwKKyAgICAgICAg
ICAgICIqd2FybmluZ19mcm9tX3Rlc3QqIiwKKyAgICAgICAgICAgICIqPSBzaG9ydCB0ZXN0IHN1
bW1hcnkgaW5mbyA9KiIsCisgICAgICAgICAgICAiKj0gd2FybmluZ3Mgc3VtbWFyeSAoZmluYWwp
ID0qIiwKKyAgICAgICAgICAgICIqY29uZnRlc3QucHk6MzoqaW50ZXJuYWwgd2FybmluZyIsCisg
ICAgICAgICAgICAiKj09IDEgZmFpbGVkLCAyIHdhcm5pbmdzIGluICoiLAorICAgICAgICBdCisg
ICAgKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqTm9uZSoiKQorICAgIHN0
ZG91dCA9IHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAgICBhc3NlcnQgc3Rkb3V0LmNvdW50KCJ3YXJu
aW5nX2Zyb21fdGVzdCIpID09IDEKKyAgICBhc3NlcnQgc3Rkb3V0LmNvdW50KCI9PT0gd2Fybmlu
Z3Mgc3VtbWFyeSAiKSA9PSAyCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZh
dWx0IikKK2RlZiB0ZXN0X3Rlcm1pbmFsX3N1bW1hcnlfd2FybmluZ3NfaGVhZGVyX29uY2UodGVz
dGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgZGVm
IHRlc3RfZmFpbHVyZSgpOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAg
ICB3YXJuaW5ncy53YXJuKCJ3YXJuaW5nX2Zyb21fIiArICJ0ZXN0IikKKyAgICAgICAgICAgIGFz
c2VydCAwCisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
cmEiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAg
ICAgICAgIio9IHdhcm5pbmdzIHN1bW1hcnkgPSoiLAorICAgICAgICAgICAgIip3YXJuaW5nX2Zy
b21fdGVzdCoiLAorICAgICAgICAgICAgIio9IHNob3J0IHRlc3Qgc3VtbWFyeSBpbmZvID0qIiwK
KyAgICAgICAgICAgICIqPT0gMSBmYWlsZWQsIDEgd2FybmluZyBpbiAqIiwKKyAgICAgICAgXQor
ICAgICkKKyAgICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKk5vbmUqIikKKyAgICBz
dGRvdXQgPSByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgYXNzZXJ0IHN0ZG91dC5jb3VudCgid2Fy
bmluZ19mcm9tX3Rlc3QiKSA9PSAxCisgICAgYXNzZXJ0IHN0ZG91dC5jb3VudCgiPT09IHdhcm5p
bmdzIHN1bW1hcnkgIikgPT0gMQorCisKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygiZGVm
YXVsdCIpCitkZWYgdGVzdF90ZXJtaW5hbF9ub19zdW1tYXJ5X3dhcm5pbmdzX2hlYWRlcl9vbmNl
KHRlc3RkaXIpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAg
IGRlZiB0ZXN0X2ZhaWx1cmUoKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAg
ICAgICAgd2FybmluZ3Mud2Fybigid2FybmluZ19mcm9tXyIgKyAidGVzdCIpCisgICAgICAgICAg
ICBhc3NlcnQgMAorICAgICIiIgogICAgICkKLSAgICBhc3NlcnQgIk5vbmUiIG5vdCBpbiByZXN1
bHQuc3Rkb3V0LnN0cigpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tbm8tc3Vt
bWFyeSIpCisgICAgcmVzdWx0LnN0ZG91dC5ub19mbm1hdGNoX2xpbmUoIio9IHdhcm5pbmdzIHN1
bW1hcnkgPSoiKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqPSBzaG9ydCB0
ZXN0IHN1bW1hcnkgaW5mbyA9KiIpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9u
IikKK2RlZiB0cigpIC0+IFRlcm1pbmFsUmVwb3J0ZXI6CisgICAgY29uZmlnID0gX3B5dGVzdC5j
b25maWcuX3ByZXBhcmVjb25maWcoKQorICAgIHJldHVybiBUZXJtaW5hbFJlcG9ydGVyKGNvbmZp
ZykKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCkBAIC0xMDM4LDcxICsxNTg0LDIyMCBA
QCBkZWYgdGVzdF90ZXJtaW5hbF9zdW1tYXJ5X3dhcm5pbmdzX2FyZV9kaXNwbGF5ZWQodGVzdGRp
cik6CiAgICAgICAgICMgZGljdCB2YWx1ZSwgbm90IHRoZSBhY3R1YWwgY29udGVudHMsIHNvIHR1
cGxlcyBvZiBhbnl0aGluZwogICAgICAgICAjIHN1ZmZpY2UKICAgICAgICAgIyBJbXBvcnRhbnQg
c3RhdHVzZXMgLS0gdGhlIGhpZ2hlc3QgcHJpb3JpdHkgb2YgdGhlc2UgYWx3YXlzIHdpbnMKLSAg
ICAgICAgKCJyZWQiLCAiMSBmYWlsZWQiLCB7ImZhaWxlZCI6ICgxLCl9KSwKLSAgICAgICAgKCJy
ZWQiLCAiMSBmYWlsZWQsIDEgcGFzc2VkIiwgeyJmYWlsZWQiOiAoMSwpLCAicGFzc2VkIjogKDEs
KX0pLAotICAgICAgICAoInJlZCIsICIxIGVycm9yIiwgeyJlcnJvciI6ICgxLCl9KSwKLSAgICAg
ICAgKCJyZWQiLCAiMSBwYXNzZWQsIDEgZXJyb3IiLCB7ImVycm9yIjogKDEsKSwgInBhc3NlZCI6
ICgxLCl9KSwKKyAgICAgICAgKCJyZWQiLCBbKCIxIGZhaWxlZCIsIHsiYm9sZCI6IFRydWUsICJy
ZWQiOiBUcnVlfSldLCB7ImZhaWxlZCI6IFsxXX0pLAorICAgICAgICAoCisgICAgICAgICAgICAi
cmVkIiwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoIjEgZmFpbGVkIiwgeyJib2xk
IjogVHJ1ZSwgInJlZCI6IFRydWV9KSwKKyAgICAgICAgICAgICAgICAoIjEgcGFzc2VkIiwgeyJi
b2xkIjogRmFsc2UsICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICB7ImZhaWxlZCI6IFsxXSwgInBhc3NlZCI6IFsxXX0sCisgICAgICAgICksCisgICAgICAgICgi
cmVkIiwgWygiMSBlcnJvciIsIHsiYm9sZCI6IFRydWUsICJyZWQiOiBUcnVlfSldLCB7ImVycm9y
IjogWzFdfSksCisgICAgICAgICgicmVkIiwgWygiMiBlcnJvcnMiLCB7ImJvbGQiOiBUcnVlLCAi
cmVkIjogVHJ1ZX0pXSwgeyJlcnJvciI6IFsxLCAyXX0pLAorICAgICAgICAoCisgICAgICAgICAg
ICAicmVkIiwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoIjEgcGFzc2VkIiwgeyJi
b2xkIjogRmFsc2UsICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAgICAgICAgICAoIjEgZXJyb3Ii
LCB7ImJvbGQiOiBUcnVlLCAicmVkIjogVHJ1ZX0pLAorICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIHsiZXJyb3IiOiBbMV0sICJwYXNzZWQiOiBbMV19LAorICAgICAgICApLAogICAgICAgICAj
IChhIHN0YXR1cyB0aGF0J3Mgbm90IGtub3duIHRvIHRoZSBjb2RlKQotICAgICAgICAoInllbGxv
dyIsICIxIHdlaXJkIiwgeyJ3ZWlyZCI6ICgxLCl9KSwKLSAgICAgICAgKCJ5ZWxsb3ciLCAiMSBw
YXNzZWQsIDEgd2VpcmQiLCB7IndlaXJkIjogKDEsKSwgInBhc3NlZCI6ICgxLCl9KSwKLSAgICAg
ICAgKCJ5ZWxsb3ciLCAiMSB3YXJuaW5ncyIsIHsid2FybmluZ3MiOiAoMSwpfSksCi0gICAgICAg
ICgieWVsbG93IiwgIjEgcGFzc2VkLCAxIHdhcm5pbmdzIiwgeyJ3YXJuaW5ncyI6ICgxLCksICJw
YXNzZWQiOiAoMSwpfSksCi0gICAgICAgICgiZ3JlZW4iLCAiNSBwYXNzZWQiLCB7InBhc3NlZCI6
ICgxLCAyLCAzLCA0LCA1KX0pLAorICAgICAgICAoInllbGxvdyIsIFsoIjEgd2VpcmQiLCB7ImJv
bGQiOiBUcnVlLCAieWVsbG93IjogVHJ1ZX0pXSwgeyJ3ZWlyZCI6IFsxXX0pLAorICAgICAgICAo
CisgICAgICAgICAgICAieWVsbG93IiwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAo
IjEgcGFzc2VkIiwgeyJib2xkIjogRmFsc2UsICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAgICAg
ICAgICAoIjEgd2VpcmQiLCB7ImJvbGQiOiBUcnVlLCAieWVsbG93IjogVHJ1ZX0pLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgIHsid2VpcmQiOiBbMV0sICJwYXNzZWQiOiBbMV19LAorICAg
ICAgICApLAorICAgICAgICAoInllbGxvdyIsIFsoIjEgd2FybmluZyIsIHsiYm9sZCI6IFRydWUs
ICJ5ZWxsb3ciOiBUcnVlfSldLCB7Indhcm5pbmdzIjogWzFdfSksCisgICAgICAgICgKKyAgICAg
ICAgICAgICJ5ZWxsb3ciLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgiMSBwYXNz
ZWQiLCB7ImJvbGQiOiBGYWxzZSwgImdyZWVuIjogVHJ1ZX0pLAorICAgICAgICAgICAgICAgICgi
MSB3YXJuaW5nIiwgeyJib2xkIjogVHJ1ZSwgInllbGxvdyI6IFRydWV9KSwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICAgICB7Indhcm5pbmdzIjogWzFdLCAicGFzc2VkIjogWzFdfSwKKyAgICAg
ICAgKSwKKyAgICAgICAgKAorICAgICAgICAgICAgImdyZWVuIiwKKyAgICAgICAgICAgIFsoIjUg
cGFzc2VkIiwgeyJib2xkIjogVHJ1ZSwgImdyZWVuIjogVHJ1ZX0pXSwKKyAgICAgICAgICAgIHsi
cGFzc2VkIjogWzEsIDIsIDMsIDQsIDVdfSwKKyAgICAgICAgKSwKICAgICAgICAgIyAiQm9yaW5n
IiBzdGF0dXNlcy4gIFRoZXNlIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSBjb2xvciBvZiB0aGUgc3Vt
bWFyeQogICAgICAgICAjIGxpbmUuICBUaHVzLCBpZiAqZXZlcnkqIHRlc3QgaGFzIGEgYm9yaW5n
IHN0YXR1cywgdGhlIHN1bW1hcnkgbGluZSBzdGF5cwogICAgICAgICAjIGF0IGl0cyBkZWZhdWx0
IGNvbG9yLCBpLmUuIHllbGxvdywgdG8gd2FybiB0aGUgdXNlciB0aGF0IHRoZSB0ZXN0IHJ1bgog
ICAgICAgICAjIHByb2R1Y2VkIG5vIHVzZWZ1bCBpbmZvcm1hdGlvbgotICAgICAgICAoInllbGxv
dyIsICIxIHNraXBwZWQiLCB7InNraXBwZWQiOiAoMSwpfSksCi0gICAgICAgICgiZ3JlZW4iLCAi
MSBwYXNzZWQsIDEgc2tpcHBlZCIsIHsic2tpcHBlZCI6ICgxLCksICJwYXNzZWQiOiAoMSwpfSks
Ci0gICAgICAgICgieWVsbG93IiwgIjEgZGVzZWxlY3RlZCIsIHsiZGVzZWxlY3RlZCI6ICgxLCl9
KSwKLSAgICAgICAgKCJncmVlbiIsICIxIHBhc3NlZCwgMSBkZXNlbGVjdGVkIiwgeyJkZXNlbGVj
dGVkIjogKDEsKSwgInBhc3NlZCI6ICgxLCl9KSwKLSAgICAgICAgKCJ5ZWxsb3ciLCAiMSB4ZmFp
bGVkIiwgeyJ4ZmFpbGVkIjogKDEsKX0pLAotICAgICAgICAoImdyZWVuIiwgIjEgcGFzc2VkLCAx
IHhmYWlsZWQiLCB7InhmYWlsZWQiOiAoMSwpLCAicGFzc2VkIjogKDEsKX0pLAotICAgICAgICAo
InllbGxvdyIsICIxIHhwYXNzZWQiLCB7InhwYXNzZWQiOiAoMSwpfSksCi0gICAgICAgICgiZ3Jl
ZW4iLCAiMSBwYXNzZWQsIDEgeHBhc3NlZCIsIHsieHBhc3NlZCI6ICgxLCksICJwYXNzZWQiOiAo
MSwpfSksCisgICAgICAgICgieWVsbG93IiwgWygiMSBza2lwcGVkIiwgeyJib2xkIjogVHJ1ZSwg
InllbGxvdyI6IFRydWV9KV0sIHsic2tpcHBlZCI6IFsxXX0pLAorICAgICAgICAoCisgICAgICAg
ICAgICAiZ3JlZW4iLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgiMSBwYXNzZWQi
LCB7ImJvbGQiOiBUcnVlLCAiZ3JlZW4iOiBUcnVlfSksCisgICAgICAgICAgICAgICAgKCIxIHNr
aXBwZWQiLCB7ImJvbGQiOiBGYWxzZSwgInllbGxvdyI6IFRydWV9KSwKKyAgICAgICAgICAgIF0s
CisgICAgICAgICAgICB7InNraXBwZWQiOiBbMV0sICJwYXNzZWQiOiBbMV19LAorICAgICAgICAp
LAorICAgICAgICAoCisgICAgICAgICAgICAieWVsbG93IiwKKyAgICAgICAgICAgIFsoIjEgZGVz
ZWxlY3RlZCIsIHsiYm9sZCI6IFRydWUsICJ5ZWxsb3ciOiBUcnVlfSldLAorICAgICAgICAgICAg
eyJkZXNlbGVjdGVkIjogWzFdfSwKKyAgICAgICAgKSwKKyAgICAgICAgKAorICAgICAgICAgICAg
ImdyZWVuIiwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoIjEgcGFzc2VkIiwgeyJi
b2xkIjogVHJ1ZSwgImdyZWVuIjogVHJ1ZX0pLAorICAgICAgICAgICAgICAgICgiMSBkZXNlbGVj
dGVkIiwgeyJib2xkIjogRmFsc2UsICJ5ZWxsb3ciOiBUcnVlfSksCisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgeyJkZXNlbGVjdGVkIjogWzFdLCAicGFzc2VkIjogWzFdfSwKKyAgICAgICAg
KSwKKyAgICAgICAgKCJ5ZWxsb3ciLCBbKCIxIHhmYWlsZWQiLCB7ImJvbGQiOiBUcnVlLCAieWVs
bG93IjogVHJ1ZX0pXSwgeyJ4ZmFpbGVkIjogWzFdfSksCisgICAgICAgICgKKyAgICAgICAgICAg
ICJncmVlbiIsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKCIxIHBhc3NlZCIsIHsi
Ym9sZCI6IFRydWUsICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAgICAgICAgICAoIjEgeGZhaWxl
ZCIsIHsiYm9sZCI6IEZhbHNlLCAieWVsbG93IjogVHJ1ZX0pLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgIHsieGZhaWxlZCI6IFsxXSwgInBhc3NlZCI6IFsxXX0sCisgICAgICAgICksCisg
ICAgICAgICgieWVsbG93IiwgWygiMSB4cGFzc2VkIiwgeyJib2xkIjogVHJ1ZSwgInllbGxvdyI6
IFRydWV9KV0sIHsieHBhc3NlZCI6IFsxXX0pLAorICAgICAgICAoCisgICAgICAgICAgICAieWVs
bG93IiwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoIjEgcGFzc2VkIiwgeyJib2xk
IjogRmFsc2UsICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAgICAgICAgICAoIjEgeHBhc3NlZCIs
IHsiYm9sZCI6IFRydWUsICJ5ZWxsb3ciOiBUcnVlfSksCisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgeyJ4cGFzc2VkIjogWzFdLCAicGFzc2VkIjogWzFdfSwKKyAgICAgICAgKSwKICAgICAg
ICAgIyBMaWtld2lzZSBpZiBubyB0ZXN0cyB3ZXJlIGZvdW5kIGF0IGFsbAotICAgICAgICAoInll
bGxvdyIsICJubyB0ZXN0cyByYW4iLCB7fSksCisgICAgICAgICgieWVsbG93IiwgWygibm8gdGVz
dHMgcmFuIiwgeyJ5ZWxsb3ciOiBUcnVlfSldLCB7fSksCiAgICAgICAgICMgVGVzdCB0aGUgZW1w
dHkta2V5IHNwZWNpYWwgY2FzZQotICAgICAgICAoInllbGxvdyIsICJubyB0ZXN0cyByYW4iLCB7
IiI6ICgxLCl9KSwKLSAgICAgICAgKCJncmVlbiIsICIxIHBhc3NlZCIsIHsiIjogKDEsKSwgInBh
c3NlZCI6ICgxLCl9KSwKKyAgICAgICAgKCJ5ZWxsb3ciLCBbKCJubyB0ZXN0cyByYW4iLCB7Inll
bGxvdyI6IFRydWV9KV0sIHsiIjogWzFdfSksCisgICAgICAgICgKKyAgICAgICAgICAgICJncmVl
biIsCisgICAgICAgICAgICBbKCIxIHBhc3NlZCIsIHsiYm9sZCI6IFRydWUsICJncmVlbiI6IFRy
dWV9KV0sCisgICAgICAgICAgICB7IiI6IFsxXSwgInBhc3NlZCI6IFsxXX0sCisgICAgICAgICks
CiAgICAgICAgICMgQSBjb3VwbGUgbW9yZSBjb21wbGV4IGNvbWJpbmF0aW9ucwogICAgICAgICAo
CiAgICAgICAgICAgICAicmVkIiwKLSAgICAgICAgICAgICIxIGZhaWxlZCwgMiBwYXNzZWQsIDMg
eGZhaWxlZCIsCi0gICAgICAgICAgICB7InBhc3NlZCI6ICgxLCAyKSwgImZhaWxlZCI6ICgxLCks
ICJ4ZmFpbGVkIjogKDEsIDIsIDMpfSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAo
IjEgZmFpbGVkIiwgeyJib2xkIjogVHJ1ZSwgInJlZCI6IFRydWV9KSwKKyAgICAgICAgICAgICAg
ICAoIjIgcGFzc2VkIiwgeyJib2xkIjogRmFsc2UsICJncmVlbiI6IFRydWV9KSwKKyAgICAgICAg
ICAgICAgICAoIjMgeGZhaWxlZCIsIHsiYm9sZCI6IEZhbHNlLCAieWVsbG93IjogVHJ1ZX0pLAor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHsicGFzc2VkIjogWzEsIDJdLCAiZmFpbGVkIjog
WzFdLCAieGZhaWxlZCI6IFsxLCAyLCAzXX0sCiAgICAgICAgICksCiAgICAgICAgICgKICAgICAg
ICAgICAgICJncmVlbiIsCi0gICAgICAgICAgICAiMSBwYXNzZWQsIDIgc2tpcHBlZCwgMyBkZXNl
bGVjdGVkLCAyIHhmYWlsZWQiLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgiMSBw
YXNzZWQiLCB7ImJvbGQiOiBUcnVlLCAiZ3JlZW4iOiBUcnVlfSksCisgICAgICAgICAgICAgICAg
KCIyIHNraXBwZWQiLCB7ImJvbGQiOiBGYWxzZSwgInllbGxvdyI6IFRydWV9KSwKKyAgICAgICAg
ICAgICAgICAoIjMgZGVzZWxlY3RlZCIsIHsiYm9sZCI6IEZhbHNlLCAieWVsbG93IjogVHJ1ZX0p
LAorICAgICAgICAgICAgICAgICgiMiB4ZmFpbGVkIiwgeyJib2xkIjogRmFsc2UsICJ5ZWxsb3ci
OiBUcnVlfSksCisgICAgICAgICAgICBdLAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJwYXNzZWQiOiAoMSwpLAotICAgICAgICAgICAgICAgICJza2lwcGVkIjogKDEsIDIpLAotICAg
ICAgICAgICAgICAgICJkZXNlbGVjdGVkIjogKDEsIDIsIDMpLAotICAgICAgICAgICAgICAgICJ4
ZmFpbGVkIjogKDEsIDIpLAorICAgICAgICAgICAgICAgICJwYXNzZWQiOiBbMV0sCisgICAgICAg
ICAgICAgICAgInNraXBwZWQiOiBbMSwgMl0sCisgICAgICAgICAgICAgICAgImRlc2VsZWN0ZWQi
OiBbMSwgMiwgM10sCisgICAgICAgICAgICAgICAgInhmYWlsZWQiOiBbMSwgMl0sCiAgICAgICAg
ICAgICB9LAogICAgICAgICApLAogICAgIF0sCiApCi1kZWYgdGVzdF9zdW1tYXJ5X3N0YXRzKGV4
cF9saW5lLCBleHBfY29sb3IsIHN0YXRzX2FyZyk6CitkZWYgdGVzdF9zdW1tYXJ5X3N0YXRzKAor
ICAgIHRyOiBUZXJtaW5hbFJlcG9ydGVyLAorICAgIGV4cF9saW5lOiBMaXN0W1R1cGxlW3N0ciwg
RGljdFtzdHIsIGJvb2xdXV0sCisgICAgZXhwX2NvbG9yOiBzdHIsCisgICAgc3RhdHNfYXJnOiBE
aWN0W3N0ciwgTGlzdFtvYmplY3RdXSwKKykgLT4gTm9uZToKKyAgICB0ci5zdGF0cyA9IHN0YXRz
X2FyZworCisgICAgIyBGYWtlICJfaXNfbGFzdF9pdGVtIiB0byBiZSBUcnVlLgorICAgIGNsYXNz
IGZha2Vfc2Vzc2lvbjoKKyAgICAgICAgdGVzdHNjb2xsZWN0ZWQgPSAwCisKKyAgICB0ci5fc2Vz
c2lvbiA9IGZha2Vfc2Vzc2lvbiAgIyB0eXBlOiBpZ25vcmVbYXNzaWdubWVudF0KKyAgICBhc3Nl
cnQgdHIuX2lzX2xhc3RfaXRlbQorCisgICAgIyBSZXNldCBjYWNoZS4KKyAgICB0ci5fbWFpbl9j
b2xvciA9IE5vbmUKKwogICAgIHByaW50KCJCYXNlZCBvbiBzdGF0czogJXMiICUgc3RhdHNfYXJn
KQotICAgIHByaW50KCdFeHBlY3Qgc3VtbWFyeTogIiVzIjsgd2l0aCBjb2xvciAiJXMiJyAlIChl
eHBfbGluZSwgZXhwX2NvbG9yKSkKLSAgICAobGluZSwgY29sb3IpID0gYnVpbGRfc3VtbWFyeV9z
dGF0c19saW5lKHN0YXRzX2FyZykKLSAgICBwcmludCgnQWN0dWFsbHkgZ290OiAgICIlcyI7IHdp
dGggY29sb3IgIiVzIicgJSAobGluZSwgY29sb3IpKQorICAgIHByaW50KCdFeHBlY3Qgc3VtbWFy
eTogInt9Ijsgd2l0aCBjb2xvciAie30iJy5mb3JtYXQoZXhwX2xpbmUsIGV4cF9jb2xvcikpCisg
ICAgKGxpbmUsIGNvbG9yKSA9IHRyLmJ1aWxkX3N1bW1hcnlfc3RhdHNfbGluZSgpCisgICAgcHJp
bnQoJ0FjdHVhbGx5IGdvdDogICAie30iOyB3aXRoIGNvbG9yICJ7fSInLmZvcm1hdChsaW5lLCBj
b2xvcikpCiAgICAgYXNzZXJ0IGxpbmUgPT0gZXhwX2xpbmUKICAgICBhc3NlcnQgY29sb3IgPT0g
ZXhwX2NvbG9yCiAKIAotZGVmIHRlc3Rfbm9fdHJhaWxpbmdfd2hpdGVzcGFjZV9hZnRlcl9pbmlm
aWxlX3dvcmQodGVzdGRpcik6Ci0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIiIpCi0g
ICAgYXNzZXJ0ICJpbmlmaWxlOlxuIiBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCitkZWYgdGVzdF9z
a2lwX2NvdW50aW5nX3Rvd2FyZHNfc3VtbWFyeSh0cik6CisgICAgY2xhc3MgRHVtbXlSZXBvcnQo
QmFzZVJlcG9ydCk6CisgICAgICAgIGNvdW50X3Rvd2FyZHNfc3VtbWFyeSA9IFRydWUKKworICAg
IHIxID0gRHVtbXlSZXBvcnQoKQorICAgIHIyID0gRHVtbXlSZXBvcnQoKQorICAgIHRyLnN0YXRz
ID0geyJmYWlsZWQiOiAocjEsIHIyKX0KKyAgICB0ci5fbWFpbl9jb2xvciA9IE5vbmUKKyAgICBy
ZXMgPSB0ci5idWlsZF9zdW1tYXJ5X3N0YXRzX2xpbmUoKQorICAgIGFzc2VydCByZXMgPT0gKFso
IjIgZmFpbGVkIiwgeyJib2xkIjogVHJ1ZSwgInJlZCI6IFRydWV9KV0sICJyZWQiKQogCi0gICAg
dGVzdGRpci5tYWtlaW5pKCJbcHl0ZXN0XSIpCi0gICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIiIpCi0gICAgYXNzZXJ0ICJpbmlmaWxlOiB0b3guaW5pXG4iIGluIHJlc3VsdC5zdGRvdXQu
c3RyKCkKKyAgICByMS5jb3VudF90b3dhcmRzX3N1bW1hcnkgPSBGYWxzZQorICAgIHRyLnN0YXRz
ID0geyJmYWlsZWQiOiAocjEsIHIyKX0KKyAgICB0ci5fbWFpbl9jb2xvciA9IE5vbmUKKyAgICBy
ZXMgPSB0ci5idWlsZF9zdW1tYXJ5X3N0YXRzX2xpbmUoKQorICAgIGFzc2VydCByZXMgPT0gKFso
IjEgZmFpbGVkIiwgeyJib2xkIjogVHJ1ZSwgInJlZCI6IFRydWV9KV0sICJyZWQiKQogCiAKLWNs
YXNzIFRlc3RQcm9ncmVzcyhvYmplY3QpOgorY2xhc3MgVGVzdENsYXNzaWNPdXRwdXRTdHlsZToK
KyAgICAiIiJFbnN1cmUgY2xhc3NpYyBvdXRwdXQgc3R5bGUgd29ya3MgYXMgZXhwZWN0ZWQgKCMz
ODgzKSIiIgogCisgICAgQHB5dGVzdC5maXh0dXJlCisgICAgZGVmIHRlc3RfZmlsZXMoc2VsZiwg
dGVzdGRpcik6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICoqewor
ICAgICAgICAgICAgICAgICJ0ZXN0X29uZS5weSI6ICJkZWYgdGVzdF9vbmUoKTogcGFzcyIsCisg
ICAgICAgICAgICAgICAgInRlc3RfdHdvLnB5IjogImRlZiB0ZXN0X3R3bygpOiBhc3NlcnQgMCIs
CisgICAgICAgICAgICAgICAgInN1Yi90ZXN0X3RocmVlLnB5IjogIiIiCisgICAgICAgICAgICAg
ICAgICAgIGRlZiB0ZXN0X3RocmVlXzEoKTogcGFzcworICAgICAgICAgICAgICAgICAgICBkZWYg
dGVzdF90aHJlZV8yKCk6IGFzc2VydCAwCisgICAgICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3Ro
cmVlXzMoKTogcGFzcworICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3Rfbm9ybWFsX3ZlcmJvc2l0eShzZWxmLCB0ZXN0ZGlyLCB0ZXN0
X2ZpbGVzKToKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1vIiwgImNvbnNv
bGVfb3V0cHV0X3N0eWxlPWNsYXNzaWMiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hf
bGluZXMoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgInRlc3Rfb25lLnB5IC4iLAor
ICAgICAgICAgICAgICAgICJ0ZXN0X3R3by5weSBGIiwKKyAgICAgICAgICAgICAgICAic3Vie310
ZXN0X3RocmVlLnB5IC5GLiIuZm9ybWF0KG9zLnNlcCksCisgICAgICAgICAgICAgICAgIioyIGZh
aWxlZCwgMyBwYXNzZWQgaW4qIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfdmVyYm9zZShzZWxmLCB0ZXN0ZGlyLCB0ZXN0X2ZpbGVzKToKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi1vIiwgImNvbnNvbGVfb3V0cHV0X3N0eWxlPWNsYXNzaWMi
LCAiLXYiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgInRlc3Rfb25lLnB5Ojp0ZXN0X29uZSBQQVNTRUQiLAorICAg
ICAgICAgICAgICAgICJ0ZXN0X3R3by5weTo6dGVzdF90d28gRkFJTEVEIiwKKyAgICAgICAgICAg
ICAgICAic3Vie310ZXN0X3RocmVlLnB5Ojp0ZXN0X3RocmVlXzEgUEFTU0VEIi5mb3JtYXQob3Mu
c2VwKSwKKyAgICAgICAgICAgICAgICAic3Vie310ZXN0X3RocmVlLnB5Ojp0ZXN0X3RocmVlXzIg
RkFJTEVEIi5mb3JtYXQob3Muc2VwKSwKKyAgICAgICAgICAgICAgICAic3Vie310ZXN0X3RocmVl
LnB5Ojp0ZXN0X3RocmVlXzMgUEFTU0VEIi5mb3JtYXQob3Muc2VwKSwKKyAgICAgICAgICAgICAg
ICAiKjIgZmFpbGVkLCAzIHBhc3NlZCBpbioiLAorICAgICAgICAgICAgXQorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9xdWlldChzZWxmLCB0ZXN0ZGlyLCB0ZXN0X2ZpbGVzKToKKyAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1vIiwgImNvbnNvbGVfb3V0cHV0X3N0eWxlPWNs
YXNzaWMiLCAiLXEiKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIuRi5G
LiIsICIqMiBmYWlsZWQsIDMgcGFzc2VkIGluKiJdKQorCisKK2NsYXNzIFRlc3RQcm9ncmVzc091
dHB1dFN0eWxlOgogICAgIEBweXRlc3QuZml4dHVyZQogICAgIGRlZiBtYW55X3Rlc3RzX2ZpbGVz
KHNlbGYsIHRlc3RkaXIpOgogICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCkBAIC0xMTM4LDcg
KzE4MzMsNyBAQCBjbGFzcyBUZXN0UHJvZ3Jlc3Mob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAg
ICAgICkKICAgICAgICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAgICAgICBhc3Nl
cnQgIlplcm9EaXZpc2lvbkVycm9yIiBub3QgaW4gb3V0cHV0LnN0ZG91dC5zdHIoKQorICAgICAg
ICBvdXRwdXQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKlplcm9EaXZpc2lvbkVycm9yKiIpCiAg
ICAgICAgIG91dHB1dC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIj0qIDIgcGFzc2VkIGluICo9Il0p
CiAKICAgICBkZWYgdGVzdF9ub3JtYWwoc2VsZiwgbWFueV90ZXN0c19maWxlcywgdGVzdGRpcik6
CkBAIC0xMTUxLDYgKzE4NDYsNzIgQEAgY2xhc3MgVGVzdFByb2dyZXNzKG9iamVjdCk6CiAgICAg
ICAgICAgICBdCiAgICAgICAgICkKIAorICAgIGRlZiB0ZXN0X2NvbG9yZWRfcHJvZ3Jlc3Moc2Vs
ZiwgdGVzdGRpciwgbW9ua2V5cGF0Y2gsIGNvbG9yX21hcHBpbmcpOgorICAgICAgICBtb25rZXlw
YXRjaC5zZXRlbnYoIlBZX0NPTE9SUyIsICIxIikKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAorICAgICAgICAgICAgdGVzdF9heGZhaWw9IiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5
dGVzdAorICAgICAgICAgICAgICAgIEBweXRlc3QubWFyay54ZmFpbAorICAgICAgICAgICAgICAg
IGRlZiB0ZXN0X2F4ZmFpbCgpOiBhc3NlcnQgMAorICAgICAgICAgICAgIiIiLAorICAgICAgICAg
ICAgdGVzdF9iYXI9IiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAg
ICAgICAgIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgnaScsIHJhbmdlKDEwKSkKKyAgICAgICAg
ICAgICAgICBkZWYgdGVzdF9iYXIoaSk6IHBhc3MKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAg
ICAgIHRlc3RfZm9vPSIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAg
ICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoJ2knLCByYW5nZSg1KSkKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mb28oaSk6
CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oRGVwcmVjYXRpb25XYXJuaW5nKCJj
b2xsZWN0aW9uIikpCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwK
KyAgICAgICAgICAgIHRlc3RfZm9vYmFyPSIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBweXRl
c3QKKyAgICAgICAgICAgICAgICBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ2knLCByYW5nZSg1
KSkKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mb29iYXIoaSk6IHJhaXNlIFZhbHVlRXJyb3Io
KQorICAgICAgICAgICAgIiIiLAorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCkKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5yZV9tYXRjaF9saW5lcygKKyAgICAg
ICAgICAgIGNvbG9yX21hcHBpbmcuZm9ybWF0X2Zvcl9yZW1hdGNoKAorICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgciJ0ZXN0X2F4ZmFpbC5weSB7eWVsbG93fXh7cmVzZXR9
e2dyZWVufSBccysgXFsgIDQlXF17cmVzZXR9IiwKKyAgICAgICAgICAgICAgICAgICAgciJ0ZXN0
X2Jhci5weSAoe2dyZWVufVwue3Jlc2V0fSl7ezEwfX17Z3JlZW59IFxzKyBcWyA1MiVcXXtyZXNl
dH0iLAorICAgICAgICAgICAgICAgICAgICByInRlc3RfZm9vLnB5ICh7Z3JlZW59XC57cmVzZXR9
KXt7NX19e3llbGxvd30gXHMrIFxbIDc2JVxde3Jlc2V0fSIsCisgICAgICAgICAgICAgICAgICAg
IHIidGVzdF9mb29iYXIucHkgKHtyZWR9RntyZXNldH0pe3s1fX17cmVkfSBccysgXFsxMDAlXF17
cmVzZXR9IiwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApCisgICAgICAgICkKKwor
ICAgICAgICAjIE9ubHkgeGZhaWwgc2hvdWxkIGhhdmUgeWVsbG93IHByb2dyZXNzIGluZGljYXRv
ci4KKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoInRlc3RfYXhmYWlsLnB5IikK
KyAgICAgICAgcmVzdWx0LnN0ZG91dC5yZV9tYXRjaF9saW5lcygKKyAgICAgICAgICAgIGNvbG9y
X21hcHBpbmcuZm9ybWF0X2Zvcl9yZW1hdGNoKAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgciJ0ZXN0X2F4ZmFpbC5weSB7eWVsbG93fXh7cmVzZXR9e3llbGxvd30gXHMr
IFxbMTAwJVxde3Jlc2V0fSIsCisgICAgICAgICAgICAgICAgICAgIHIiXnt5ZWxsb3d9PSsgKHt5
ZWxsb3d9e2JvbGR9fHtib2xkfXt5ZWxsb3d9KTEgeGZhaWxlZHtyZXNldH17eWVsbG93fSBpbiAi
LAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfY291bnQoc2VsZiwgbWFueV90ZXN0c19maWxlcywgdGVzdGRpcik6CisgICAgICAgIHRl
c3RkaXIubWFrZWluaSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgW3B5dGVzdF0KKyAg
ICAgICAgICAgIGNvbnNvbGVfb3V0cHV0X3N0eWxlID0gY291bnQKKyAgICAgICAgIiIiCisgICAg
ICAgICkKKyAgICAgICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBvdXRw
dXQuc3Rkb3V0LnJlX21hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
IHIidGVzdF9iYXIucHkgXC57MTB9IFxzKyBcWzEwLzIwXF0iLAorICAgICAgICAgICAgICAgIHIi
dGVzdF9mb28ucHkgXC57NX0gXHMrIFxbMTUvMjBcXSIsCisgICAgICAgICAgICAgICAgciJ0ZXN0
X2Zvb2Jhci5weSBcLns1fSBccysgXFsyMC8yMFxdIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
KQorCiAgICAgZGVmIHRlc3RfdmVyYm9zZShzZWxmLCBtYW55X3Rlc3RzX2ZpbGVzLCB0ZXN0ZGly
KToKICAgICAgICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoIi12IikKICAgICAgICAgb3V0
cHV0LnN0ZG91dC5yZV9tYXRjaF9saW5lcygKQEAgLTExNjEsMTMgKzE5MjIsNDMgQEAgY2xhc3Mg
VGVzdFByb2dyZXNzKG9iamVjdCk6CiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIGRl
ZiB0ZXN0X3hkaXN0X25vcm1hbChzZWxmLCBtYW55X3Rlc3RzX2ZpbGVzLCB0ZXN0ZGlyKToKKyAg
ICBkZWYgdGVzdF92ZXJib3NlX2NvdW50KHNlbGYsIG1hbnlfdGVzdHNfZmlsZXMsIHRlc3RkaXIp
OgorICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg
IFtweXRlc3RdCisgICAgICAgICAgICBjb25zb2xlX291dHB1dF9zdHlsZSA9IGNvdW50CisgICAg
ICAgICIiIgorICAgICAgICApCisgICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
diIpCisgICAgICAgIG91dHB1dC5zdGRvdXQucmVfbWF0Y2hfbGluZXMoCisgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgciJ0ZXN0X2Jhci5weTo6dGVzdF9iYXJcWzBcXSBQQVNTRUQgXHMr
IFxbIDEvMjBcXSIsCisgICAgICAgICAgICAgICAgciJ0ZXN0X2Zvby5weTo6dGVzdF9mb29cWzRc
XSBQQVNTRUQgXHMrIFxbMTUvMjBcXSIsCisgICAgICAgICAgICAgICAgciJ0ZXN0X2Zvb2Jhci5w
eTo6dGVzdF9mb29iYXJcWzRcXSBQQVNTRUQgXHMrIFxbMjAvMjBcXSIsCisgICAgICAgICAgICBd
CisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3hkaXN0X25vcm1hbChzZWxmLCBtYW55X3Rlc3Rz
X2ZpbGVzLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgICAgIHB5dGVzdC5pbXBvcnRvcnNr
aXAoInhkaXN0IikKKyAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9Q
TFVHSU5fQVVUT0xPQUQiLCByYWlzaW5nPUZhbHNlKQogICAgICAgICBvdXRwdXQgPSB0ZXN0ZGly
LnJ1bnB5dGVzdCgiLW4yIikKICAgICAgICAgb3V0cHV0LnN0ZG91dC5yZV9tYXRjaF9saW5lcyhb
ciJcLnsyMH0gXHMrIFxbMTAwJVxdIl0pCiAKLSAgICBkZWYgdGVzdF94ZGlzdF92ZXJib3NlKHNl
bGYsIG1hbnlfdGVzdHNfZmlsZXMsIHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3hkaXN0X25vcm1h
bF9jb3VudChzZWxmLCBtYW55X3Rlc3RzX2ZpbGVzLCB0ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAg
ICAgICAgIHB5dGVzdC5pbXBvcnRvcnNraXAoInhkaXN0IikKKyAgICAgICAgbW9ua2V5cGF0Y2gu
ZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVUT0xPQUQiLCByYWlzaW5nPUZhbHNlKQor
ICAgICAgICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFtw
eXRlc3RdCisgICAgICAgICAgICBjb25zb2xlX291dHB1dF9zdHlsZSA9IGNvdW50CisgICAgICAg
ICIiIgorICAgICAgICApCisgICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItbjIi
KQorICAgICAgICBvdXRwdXQuc3Rkb3V0LnJlX21hdGNoX2xpbmVzKFtyIlwuezIwfSBccysgXFsy
MC8yMFxdIl0pCisKKyAgICBkZWYgdGVzdF94ZGlzdF92ZXJib3NlKHNlbGYsIG1hbnlfdGVzdHNf
ZmlsZXMsIHRlc3RkaXIsIG1vbmtleXBhdGNoKToKKyAgICAgICAgcHl0ZXN0LmltcG9ydG9yc2tp
cCgieGRpc3QiKQorICAgICAgICBtb25rZXlwYXRjaC5kZWxlbnYoIlBZVEVTVF9ESVNBQkxFX1BM
VUdJTl9BVVRPTE9BRCIsIHJhaXNpbmc9RmFsc2UpCiAgICAgICAgIG91dHB1dCA9IHRlc3RkaXIu
cnVucHl0ZXN0KCItbjIiLCAiLXYiKQogICAgICAgICBvdXRwdXQuc3Rkb3V0LnJlX21hdGNoX2xp
bmVzX3JhbmRvbSgKICAgICAgICAgICAgIFsKQEAgLTExNzYsNiArMTk2NywyMiBAQCBjbGFzcyBU
ZXN0UHJvZ3Jlc3Mob2JqZWN0KToKICAgICAgICAgICAgICAgICByIlxbZ3dcZFxdIFxbXHMqXGQr
JVxdIFBBU1NFRCB0ZXN0X2Zvb2Jhci5weTo6dGVzdF9mb29iYXJcWzFcXSIsCiAgICAgICAgICAg
ICBdCiAgICAgICAgICkKKyAgICAgICAgb3V0cHV0LnN0ZG91dC5mbm1hdGNoX2xpbmVzX3JhbmRv
bSgKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBsaW5lLnRyYW5zbGF0ZShUUkFOU19G
Tk1BVENIKQorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIFsKKyAgICAgICAgICAgICAgICAg
ICAgInRlc3RfYmFyLnB5Ojp0ZXN0X2JhclswXSAiLAorICAgICAgICAgICAgICAgICAgICAidGVz
dF9mb28ucHk6OnRlc3RfZm9vWzBdICIsCisgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2Zvb2Jh
ci5weTo6dGVzdF9mb29iYXJbMF0gIiwKKyAgICAgICAgICAgICAgICAgICAgIltndz9dIFsgIDUl
XSBQQVNTRUQgdGVzdF8qWz9dICIsCisgICAgICAgICAgICAgICAgICAgICJbZ3c/XSBbIDEwJV0g
UEFTU0VEIHRlc3RfKls/XSAiLAorICAgICAgICAgICAgICAgICAgICAiW2d3P10gWyA1NSVdIFBB
U1NFRCB0ZXN0XypbP10gIiwKKyAgICAgICAgICAgICAgICAgICAgIltndz9dIFsgNjAlXSBQQVNT
RUQgdGVzdF8qWz9dICIsCisgICAgICAgICAgICAgICAgICAgICJbZ3c/XSBbIDk1JV0gUEFTU0VE
IHRlc3RfKls/XSAiLAorICAgICAgICAgICAgICAgICAgICAiW2d3P10gWzEwMCVdIFBBU1NFRCB0
ZXN0XypbP10gIiwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdCisgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X2NhcHR1cmVfbm8oc2VsZiwgbWFueV90ZXN0c19maWxlcywgdGVzdGRp
cik6CiAgICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCkBAIC0xMTg0LDEw
ICsxOTkxLDEwIEBAIGNsYXNzIFRlc3RQcm9ncmVzcyhvYmplY3QpOgogICAgICAgICApCiAKICAg
ICAgICAgb3V0cHV0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY2FwdHVyZT1ubyIpCi0gICAgICAg
IGFzc2VydCAiJV0iIG5vdCBpbiBvdXRwdXQuc3Rkb3V0LnN0cigpCisgICAgICAgIG91dHB1dC5z
dGRvdXQubm9fZm5tYXRjaF9saW5lKCIqJV0qIikKIAogCi1jbGFzcyBUZXN0UHJvZ3Jlc3NXaXRo
VGVhcmRvd24ob2JqZWN0KToKK2NsYXNzIFRlc3RQcm9ncmVzc1dpdGhUZWFyZG93bjoKICAgICAi
IiJFbnN1cmUgd2Ugc2hvdyB0aGUgY29ycmVjdCBwZXJjZW50YWdlcyBmb3IgdGVzdHMgdGhhdCBm
YWlsIGR1cmluZyB0ZWFyZG93biAoIzMwODgpIiIiCiAKICAgICBAcHl0ZXN0LmZpeHR1cmUKQEAg
LTEyMzYsMTIgKzIwNDMsMTYgQEAgY2xhc3MgVGVzdFByb2dyZXNzV2l0aFRlYXJkb3duKG9iamVj
dCk6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKICAgICAgICAgICAgICIiIgogICAgICAg
ICAgICAgZGVmIHRlc3RfZm9vKGZhaWxfdGVhcmRvd24pOgotICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZQorICAgICAgICAgICAgICAgIGFzc2VydCAwCiAgICAgICAgICIiIgogICAgICAgICAp
Ci0gICAgICAgIG91dHB1dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICAgICAgb3V0cHV0ID0g
dGVzdGRpci5ydW5weXRlc3QoIi1yZkUiKQogICAgICAgICBvdXRwdXQuc3Rkb3V0LnJlX21hdGNo
X2xpbmVzKAotICAgICAgICAgICAgW3IidGVzdF90ZWFyZG93bl93aXRoX3Rlc3RfYWxzb19mYWls
aW5nLnB5IEZFXHMrXFsxMDAlXF0iXQorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHIi
dGVzdF90ZWFyZG93bl93aXRoX3Rlc3RfYWxzb19mYWlsaW5nLnB5IEZFXHMrXFsxMDAlXF0iLAor
ICAgICAgICAgICAgICAgICJGQUlMRUQgdGVzdF90ZWFyZG93bl93aXRoX3Rlc3RfYWxzb19mYWls
aW5nLnB5Ojp0ZXN0X2ZvbyAtIGFzc2VydCAwIiwKKyAgICAgICAgICAgICAgICAiRVJST1IgdGVz
dF90ZWFyZG93bl93aXRoX3Rlc3RfYWxzb19mYWlsaW5nLnB5Ojp0ZXN0X2ZvbyAtIGFzc2VydCBG
YWxzZSIsCisgICAgICAgICAgICBdCiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3RlYXJkb3du
X21hbnkoc2VsZiwgdGVzdGRpciwgbWFueV9maWxlcyk6CkBAIC0xMjUwLDE4ICsyMDYxLDIxNSBA
QCBjbGFzcyBUZXN0UHJvZ3Jlc3NXaXRoVGVhcmRvd24ob2JqZWN0KToKICAgICAgICAgICAgIFty
InRlc3RfYmFyLnB5IChcLkUpezV9XHMrXFsgMjUlXF0iLCByInRlc3RfZm9vLnB5IChcLkUpezE1
fVxzK1xbMTAwJVxdIl0KICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfdGVhcmRvd25fbWFueV92
ZXJib3NlKHNlbGYsIHRlc3RkaXIsIG1hbnlfZmlsZXMpOgotICAgICAgICBvdXRwdXQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgiLXYiKQotICAgICAgICBvdXRwdXQuc3Rkb3V0LnJlX21hdGNoX2xpbmVz
KAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIHIidGVzdF9iYXIucHk6OnRlc3RfYmFy
XFswXF0gUEFTU0VEXHMrXFsgIDUlXF0iLAotICAgICAgICAgICAgICAgIHIidGVzdF9iYXIucHk6
OnRlc3RfYmFyXFswXF0gRVJST1JccytcWyAgNSVcXSIsCi0gICAgICAgICAgICAgICAgciJ0ZXN0
X2Jhci5weTo6dGVzdF9iYXJcWzRcXSBQQVNTRURccytcWyAyNSVcXSIsCi0gICAgICAgICAgICAg
ICAgciJ0ZXN0X2Jhci5weTo6dGVzdF9iYXJcWzRcXSBFUlJPUlxzK1xbIDI1JVxdIiwKLSAgICAg
ICAgICAgIF0KKyAgICBkZWYgdGVzdF90ZWFyZG93bl9tYW55X3ZlcmJvc2UoCisgICAgICAgIHNl
bGYsIHRlc3RkaXI6IFRlc3RkaXIsIG1hbnlfZmlsZXMsIGNvbG9yX21hcHBpbmcKKyAgICApIC0+
IE5vbmU6CisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCisgICAgICAg
IHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIGNvbG9yX21hcHBpbmcu
Zm9ybWF0X2Zvcl9mbm1hdGNoKAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgInRlc3RfYmFyLnB5Ojp0ZXN0X2JhclswXSBQQVNTRUQgICogWyAgNSVdIiwKKyAgICAgICAg
ICAgICAgICAgICAgInRlc3RfYmFyLnB5Ojp0ZXN0X2JhclswXSBFUlJPUiAgICogWyAgNSVdIiwK
KyAgICAgICAgICAgICAgICAgICAgInRlc3RfYmFyLnB5Ojp0ZXN0X2Jhcls0XSBQQVNTRUQgICog
WyAyNSVdIiwKKyAgICAgICAgICAgICAgICAgICAgInRlc3RfZm9vLnB5Ojp0ZXN0X2Zvb1sxNF0g
UEFTU0VEICogWzEwMCVdIiwKKyAgICAgICAgICAgICAgICAgICAgInRlc3RfZm9vLnB5Ojp0ZXN0
X2Zvb1sxNF0gRVJST1IgICogWzEwMCVdIiwKKyAgICAgICAgICAgICAgICAgICAgIj0qIDIwIHBh
c3NlZCwgMjAgZXJyb3JzIGluICoiLAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICkK
ICAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfeGRpc3Rfbm9ybWFsKHNlbGYsIG1hbnlfZmlsZXMs
IHRlc3RkaXIpOgorICAgIGRlZiB0ZXN0X3hkaXN0X25vcm1hbChzZWxmLCBtYW55X2ZpbGVzLCB0
ZXN0ZGlyLCBtb25rZXlwYXRjaCk6CiAgICAgICAgIHB5dGVzdC5pbXBvcnRvcnNraXAoInhkaXN0
IikKKyAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KCJQWVRFU1RfRElTQUJMRV9QTFVHSU5fQVVU
T0xPQUQiLCByYWlzaW5nPUZhbHNlKQogICAgICAgICBvdXRwdXQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgiLW4yIikKICAgICAgICAgb3V0cHV0LnN0ZG91dC5yZV9tYXRjaF9saW5lcyhbciJbXC5FXXs0
MH0gXHMrIFxbMTAwJVxdIl0pCisKKworZGVmIHRlc3Rfc2tpcF9yZWFzb25zX2ZvbGRpbmcoKSAt
PiBOb25lOgorICAgIHBhdGggPSAieHl6IgorICAgIGxpbmVubyA9IDMKKyAgICBtZXNzYWdlID0g
Imp1c3RzbyIKKyAgICBsb25ncmVwciA9IChwYXRoLCBsaW5lbm8sIG1lc3NhZ2UpCisKKyAgICBj
bGFzcyBYOgorICAgICAgICBwYXNzCisKKyAgICBldjEgPSBjYXN0KENvbGxlY3RSZXBvcnQsIFgo
KSkKKyAgICBldjEud2hlbiA9ICJleGVjdXRlIgorICAgIGV2MS5za2lwcGVkID0gVHJ1ZQorICAg
IGV2MS5sb25ncmVwciA9IGxvbmdyZXByCisKKyAgICBldjIgPSBjYXN0KENvbGxlY3RSZXBvcnQs
IFgoKSkKKyAgICBldjIud2hlbiA9ICJleGVjdXRlIgorICAgIGV2Mi5sb25ncmVwciA9IGxvbmdy
ZXByCisgICAgZXYyLnNraXBwZWQgPSBUcnVlCisKKyAgICAjIGV2MyBtaWdodCBiZSBhIGNvbGxl
Y3Rpb24gcmVwb3J0CisgICAgZXYzID0gY2FzdChDb2xsZWN0UmVwb3J0LCBYKCkpCisgICAgZXYz
LndoZW4gPSAiY29sbGVjdCIKKyAgICBldjMubG9uZ3JlcHIgPSBsb25ncmVwcgorICAgIGV2My5z
a2lwcGVkID0gVHJ1ZQorCisgICAgdmFsdWVzID0gX2ZvbGRlZF9za2lwcyhQYXRoLmN3ZCgpLCBb
ZXYxLCBldjIsIGV2M10pCisgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDEKKyAgICBudW0sIGZz
cGF0aCwgbGluZW5vXywgcmVhc29uID0gdmFsdWVzWzBdCisgICAgYXNzZXJ0IG51bSA9PSAzCisg
ICAgYXNzZXJ0IGZzcGF0aCA9PSBwYXRoCisgICAgYXNzZXJ0IGxpbmVub18gPT0gbGluZW5vCisg
ICAgYXNzZXJ0IHJlYXNvbiA9PSBtZXNzYWdlCisKKworZGVmIHRlc3RfbGluZV93aXRoX3JlcHJj
cmFzaChtb25rZXlwYXRjaCk6CisgICAgbW9ja2VkX3ZlcmJvc2Vfd29yZCA9ICJGQUlMRUQiCisK
KyAgICBtb2NrZWRfcG9zID0gInNvbWU6Om5vZGVpZCIKKworICAgIGRlZiBtb2NrX2dldF9wb3Mo
KmFyZ3MpOgorICAgICAgICByZXR1cm4gbW9ja2VkX3BvcworCisgICAgbW9ua2V5cGF0Y2guc2V0
YXR0cihfcHl0ZXN0LnRlcm1pbmFsLCAiX2dldF9wb3MiLCBtb2NrX2dldF9wb3MpCisKKyAgICBj
bGFzcyBjb25maWc6CisgICAgICAgIHBhc3MKKworICAgIGNsYXNzIHJlcDoKKyAgICAgICAgZGVm
IF9nZXRfdmVyYm9zZV93b3JkKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIHJldHVybiBtb2Nr
ZWRfdmVyYm9zZV93b3JkCisKKyAgICAgICAgY2xhc3MgbG9uZ3JlcHI6CisgICAgICAgICAgICBj
bGFzcyByZXByY3Jhc2g6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIGNoZWNrKG1z
Zywgd2lkdGgsIGV4cGVjdGVkKToKKyAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCisg
ICAgICAgIGlmIG1zZzoKKyAgICAgICAgICAgIHJlcC5sb25ncmVwci5yZXByY3Jhc2gubWVzc2Fn
ZSA9IG1zZyAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgYWN0dWFsID0gX2dldF9saW5lX3dpdGhf
cmVwcmNyYXNoX21lc3NhZ2UoY29uZmlnLCByZXAoKSwgd2lkdGgpICAjIHR5cGU6IGlnbm9yZQor
CisgICAgICAgIGFzc2VydCBhY3R1YWwgPT0gZXhwZWN0ZWQKKyAgICAgICAgaWYgYWN0dWFsICE9
ICJ7fSB7fSIuZm9ybWF0KG1vY2tlZF92ZXJib3NlX3dvcmQsIG1vY2tlZF9wb3MpOgorICAgICAg
ICAgICAgYXNzZXJ0IGxlbihhY3R1YWwpIDw9IHdpZHRoCisgICAgICAgICAgICBhc3NlcnQgd2Nz
d2lkdGgoYWN0dWFsKSA8PSB3aWR0aAorCisgICAgIyBBdHRyaWJ1dGVFcnJvciB3aXRoIG1lc3Nh
Z2UKKyAgICBjaGVjayhOb25lLCA4MCwgIkZBSUxFRCBzb21lOjpub2RlaWQiKQorCisgICAgY2hl
Y2soIm1zZyIsIDgwLCAiRkFJTEVEIHNvbWU6Om5vZGVpZCAtIG1zZyIpCisgICAgY2hlY2soIm1z
ZyIsIDMsICJGQUlMRUQgc29tZTo6bm9kZWlkIikKKworICAgIGNoZWNrKCJtc2ciLCAyNCwgIkZB
SUxFRCBzb21lOjpub2RlaWQiKQorICAgIGNoZWNrKCJtc2ciLCAyNSwgIkZBSUxFRCBzb21lOjpu
b2RlaWQgLSBtc2ciKQorCisgICAgY2hlY2soInNvbWUgbG9uZ2VyIG1zZyIsIDI0LCAiRkFJTEVE
IHNvbWU6Om5vZGVpZCIpCisgICAgY2hlY2soInNvbWUgbG9uZ2VyIG1zZyIsIDI1LCAiRkFJTEVE
IHNvbWU6Om5vZGVpZCAtIC4uLiIpCisgICAgY2hlY2soInNvbWUgbG9uZ2VyIG1zZyIsIDI2LCAi
RkFJTEVEIHNvbWU6Om5vZGVpZCAtIHMuLi4iKQorCisgICAgY2hlY2soInNvbWVcbm1lc3NhZ2Ui
LCAyNSwgIkZBSUxFRCBzb21lOjpub2RlaWQgLSAuLi4iKQorICAgIGNoZWNrKCJzb21lXG5tZXNz
YWdlIiwgMjYsICJGQUlMRUQgc29tZTo6bm9kZWlkIC0gc29tZSIpCisgICAgY2hlY2soInNvbWVc
bm1lc3NhZ2UiLCA4MCwgIkZBSUxFRCBzb21lOjpub2RlaWQgLSBzb21lIikKKworICAgICMgVGVz
dCB1bmljb2RlIHNhZmV0eS4KKyAgICBjaGVjaygi8J+JkPCfiZDwn4mQ8J+JkPCfiZBcbjJuZCBs
aW5lIiwgMjUsICJGQUlMRUQgc29tZTo6bm9kZWlkIC0gLi4uIikKKyAgICBjaGVjaygi8J+JkPCf
iZDwn4mQ8J+JkPCfiZBcbjJuZCBsaW5lIiwgMjYsICJGQUlMRUQgc29tZTo6bm9kZWlkIC0gLi4u
IikKKyAgICBjaGVjaygi8J+JkPCfiZDwn4mQ8J+JkPCfiZBcbjJuZCBsaW5lIiwgMjcsICJGQUlM
RUQgc29tZTo6bm9kZWlkIC0g8J+JkC4uLiIpCisgICAgY2hlY2soIvCfiZDwn4mQ8J+JkPCfiZDw
n4mQXG4ybmQgbGluZSIsIDI4LCAiRkFJTEVEIHNvbWU6Om5vZGVpZCAtIPCfiZAuLi4iKQorICAg
IGNoZWNrKCLwn4mQ8J+JkPCfiZDwn4mQ8J+JkFxuMm5kIGxpbmUiLCAyOSwgIkZBSUxFRCBzb21l
Ojpub2RlaWQgLSDwn4mQ8J+JkC4uLiIpCisKKyAgICAjIE5PVEU6IGNvbnN0cnVjdGVkLCBub3Qg
c3VyZSBpZiB0aGlzIGlzIHN1cHBvcnRlZC4KKyAgICBtb2NrZWRfcG9zID0gIm5vZGVpZDo68J+J
kDo6d2l0aHVuaWNvZGUiCisgICAgY2hlY2soIvCfiZDwn4mQ8J+JkPCfiZDwn4mQXG4ybmQgbGlu
ZSIsIDI5LCAiRkFJTEVEIG5vZGVpZDo68J+JkDo6d2l0aHVuaWNvZGUiKQorICAgIGNoZWNrKCLw
n4mQ8J+JkPCfiZDwn4mQ8J+JkFxuMm5kIGxpbmUiLCA0MCwgIkZBSUxFRCBub2RlaWQ6OvCfiZA6
OndpdGh1bmljb2RlIC0g8J+JkPCfiZAuLi4iKQorICAgIGNoZWNrKCLwn4mQ8J+JkPCfiZDwn4mQ
8J+JkFxuMm5kIGxpbmUiLCA0MSwgIkZBSUxFRCBub2RlaWQ6OvCfiZA6OndpdGh1bmljb2RlIC0g
8J+JkPCfiZAuLi4iKQorICAgIGNoZWNrKCLwn4mQ8J+JkPCfiZDwn4mQ8J+JkFxuMm5kIGxpbmUi
LCA0MiwgIkZBSUxFRCBub2RlaWQ6OvCfiZA6OndpdGh1bmljb2RlIC0g8J+JkPCfiZDwn4mQLi4u
IikKKyAgICBjaGVjaygi8J+JkPCfiZDwn4mQ8J+JkPCfiZBcbjJuZCBsaW5lIiwgODAsICJGQUlM
RUQgbm9kZWlkOjrwn4mQOjp3aXRodW5pY29kZSAtIPCfiZDwn4mQ8J+JkPCfiZDwn4mQIikKKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgInNlY29uZHMsIGV4cGVjdGVkIiwKKyAg
ICBbCisgICAgICAgICgxMC4wLCAiMTAuMDBzIiksCisgICAgICAgICgxMC4zNCwgIjEwLjM0cyIp
LAorICAgICAgICAoNTkuOTksICI1OS45OXMiKSwKKyAgICAgICAgKDYwLjU1LCAiNjAuNTVzICgw
OjAxOjAwKSIpLAorICAgICAgICAoMTIzLjU1LCAiMTIzLjU1cyAoMDowMjowMykiKSwKKyAgICAg
ICAgKDYwICogNjAgKyAwLjUsICIzNjAwLjUwcyAoMTowMDowMCkiKSwKKyAgICBdLAorKQorZGVm
IHRlc3RfZm9ybWF0X3Nlc3Npb25fZHVyYXRpb24oc2Vjb25kcywgZXhwZWN0ZWQpOgorICAgIGZy
b20gX3B5dGVzdC50ZXJtaW5hbCBpbXBvcnQgZm9ybWF0X3Nlc3Npb25fZHVyYXRpb24KKworICAg
IGFzc2VydCBmb3JtYXRfc2Vzc2lvbl9kdXJhdGlvbihzZWNvbmRzKSA9PSBleHBlY3RlZAorCisK
K2RlZiB0ZXN0X2NvbGxlY3RlcnJvcih0ZXN0ZGlyKToKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgicmFpc2UgU3ludGF4RXJyb3IoKSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoIi1yYSIsIHN0cihwMSkpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAg
ICAgICBbCisgICAgICAgICAgICAiY29sbGVjdGVkIDAgaXRlbXMgLyAxIGVycm9yIiwKKyAgICAg
ICAgICAgICIqPSBFUlJPUlMgPSoiLAorICAgICAgICAgICAgIipfIEVSUk9SIGNvbGxlY3Rpbmcg
dGVzdF9jb2xsZWN0ZXJyb3IucHkgXyoiLAorICAgICAgICAgICAgIkUgICBTeW50YXhFcnJvcjog
KiIsCisgICAgICAgICAgICAiKj0gc2hvcnQgdGVzdCBzdW1tYXJ5IGluZm8gPSoiLAorICAgICAg
ICAgICAgIkVSUk9SIHRlc3RfY29sbGVjdGVycm9yLnB5IiwKKyAgICAgICAgICAgICIqISBJbnRl
cnJ1cHRlZDogMSBlcnJvciBkdXJpbmcgY29sbGVjdGlvbiAhKiIsCisgICAgICAgICAgICAiKj0g
MSBlcnJvciBpbiAqIiwKKyAgICAgICAgXQorICAgICkKKworCitkZWYgdGVzdF9ub19zdW1tYXJ5
X2NvbGxlY3RlcnJvcih0ZXN0ZGlyKToKKyAgICBwMSA9IHRlc3RkaXIubWFrZXB5ZmlsZSgicmFp
c2UgU3ludGF4RXJyb3IoKSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi1yYSIs
ICItLW5vLXN1bW1hcnkiLCBzdHIocDEpKQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9s
aW5lKCIqPSBFUlJPUlMgPSoiKQorCisKK2RlZiB0ZXN0X3ZpYV9leGVjKHRlc3RkaXI6IFRlc3Rk
aXIpIC0+IE5vbmU6CisgICAgcDEgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoImV4ZWMoJ2RlZiB0ZXN0
X3ZpYV9leGVjKCk6IHBhc3MnKSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qoc3Ry
KHAxKSwgIi12diIpCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBb
InRlc3RfdmlhX2V4ZWMucHk6OnRlc3RfdmlhX2V4ZWMgPC0gPHN0cmluZz4gUEFTU0VEKiIsICIq
PSAxIHBhc3NlZCBpbiAqIl0KKyAgICApCisKKworY2xhc3MgVGVzdENvZGVIaWdobGlnaHQ6Cisg
ICAgZGVmIHRlc3RfY29kZV9oaWdobGlnaHRfc2ltcGxlKHNlbGYsIHRlc3RkaXI6IFRlc3RkaXIs
IGNvbG9yX21hcHBpbmcpIC0+IE5vbmU6CisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAgICAgICAgICAg
ICAgYXNzZXJ0IDEgPT0gMTAKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi0tY29sb3I9eWVzIikKKyAgICAgICAgY29sb3JfbWFwcGlu
Zy5yZXF1aXJlc19vcmRlcmVkX21hcmt1cChyZXN1bHQpCisgICAgICAgIHJlc3VsdC5zdGRvdXQu
Zm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIGNvbG9yX21hcHBpbmcuZm9ybWF0X2Zvcl9mbm1h
dGNoKAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgIiAgICB7a3d9ZGVm
e2hsLXJlc2V0fSB7ZnVuY3Rpb259dGVzdF9mb297aGwtcmVzZXR9KCk6IiwKKyAgICAgICAgICAg
ICAgICAgICAgIj4gICAgICAge2t3fWFzc2VydHtobC1yZXNldH0ge251bWJlcn0xe2hsLXJlc2V0
fSA9PSB7bnVtYmVyfTEwe2hsLXJlc2V0fSIsCisgICAgICAgICAgICAgICAgICAgICJ7Ym9sZH17
cmVkfUUgICAgICAgYXNzZXJ0IDEgPT0gMTB7cmVzZXR9IiwKKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICApCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2NvZGVfaGlnaGxpZ2h0X2Nv
bnRpbnVhdGlvbihzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyLCBjb2xvcl9tYXBwaW5nKSAtPiBOb25l
OgorICAgICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICAgICAiIiIKKyAgICAgICAg
ICAgIGRlZiB0ZXN0X2ZvbygpOgorICAgICAgICAgICAgICAgIHByaW50KCcnJworICAgICAgICAg
ICAgICAgICcnJyk7IGFzc2VydCAwCisgICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLWNvbG9yPXllcyIpCisgICAgICAgIGNvbG9yX21h
cHBpbmcucmVxdWlyZXNfb3JkZXJlZF9tYXJrdXAocmVzdWx0KQorCisgICAgICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgICAgIGNvbG9yX21hcHBpbmcuZm9ybWF0X2Zv
cl9mbm1hdGNoKAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgIiAgICB7
a3d9ZGVme2hsLXJlc2V0fSB7ZnVuY3Rpb259dGVzdF9mb297aGwtcmVzZXR9KCk6IiwKKyAgICAg
ICAgICAgICAgICAgICAgIiAgICAgICAge3ByaW50fXByaW50e2hsLXJlc2V0fSh7c3RyfScnJ3to
bC1yZXNldH17c3RyfXtobC1yZXNldH0iLAorICAgICAgICAgICAgICAgICAgICAiPiAgIHtzdHJ9
ICAgIHtobC1yZXNldH17c3RyfScnJ3tobC1yZXNldH0pOyB7a3d9YXNzZXJ0e2hsLXJlc2V0fSB7
bnVtYmVyfTB7aGwtcmVzZXR9IiwKKyAgICAgICAgICAgICAgICAgICAgIntib2xkfXtyZWR9RSAg
ICAgICBhc3NlcnQgMHtyZXNldH0iLAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICkK
KyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3RtcGRpci5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF90bXBkaXIucHkKaW5kZXggMzM2MjQ5MDk0OTU3
Li5jYzAzMzg1ZjNhOTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF90bXBk
aXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3RtcGRpci5weQpAQCAtMSw1NCAr
MSw1NCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9u
LCBwcmludF9mdW5jdGlvbgoraW1wb3J0IG9zCitpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwotaW1w
b3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci0KLWZyb20gX3B5dGVzdC50bXBkaXIgaW1wb3J0IHRtcGRp
cgotCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAogCi1kZWYgdGVzdF9mdW5jYXJnKHRlc3RkaXIpOgot
ICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKLSAgICAgICAgIiIiCi0gICAgICAgICAgICBkZWYgcHl0
ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jKToKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5h
ZGRjYWxsKGlkPSdhJykKLSAgICAgICAgICAgICAgICBtZXRhZnVuYy5hZGRjYWxsKGlkPSdiJykK
LSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmModG1wZGlyKTogcGFzcwotICAgICIiIgotICAgICkK
LSAgICBmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCBUZW1wZGlyRmFjdG9yeQoraW1wb3J0IGF0
dHIKIAotICAgIHJlcHJlYyA9IHRlc3RkaXIuaW5saW5lX3J1bigpCi0gICAgY2FsbHMgPSByZXBy
ZWMuZ2V0Y2FsbHMoInB5dGVzdF9ydW50ZXN0X3NldHVwIikKLSAgICBpdGVtID0gY2FsbHNbMF0u
aXRlbQotICAgIGNvbmZpZyA9IGl0ZW0uY29uZmlnCi0gICAgdG1wZGlyaGFuZGxlciA9IFRlbXBk
aXJGYWN0b3J5KGNvbmZpZykKLSAgICBpdGVtLl9pbml0cmVxdWVzdCgpCi0gICAgcCA9IHRtcGRp
cihpdGVtLl9yZXF1ZXN0LCB0bXBkaXJoYW5kbGVyKQotICAgIGFzc2VydCBwLmNoZWNrKCkKLSAg
ICBibiA9IHAuYmFzZW5hbWUuc3RyaXAoIjAxMjM0NTY3ODkiKQotICAgIGFzc2VydCBibi5lbmRz
d2l0aCgidGVzdF9mdW5jX2FfIikKLSAgICBpdGVtLm5hbWUgPSAicXdlL1xcYWJjIgotICAgIHAg
PSB0bXBkaXIoaXRlbS5fcmVxdWVzdCwgdG1wZGlyaGFuZGxlcikKLSAgICBhc3NlcnQgcC5jaGVj
aygpCi0gICAgYm4gPSBwLmJhc2VuYW1lLnN0cmlwKCIwMTIzNDU2Nzg5IikKLSAgICBhc3NlcnQg
Ym4gPT0gInF3ZV9fYWJjIgotCi0KLWRlZiB0ZXN0X2Vuc3VyZXRlbXAocmVjd2Fybik6Ci0gICAg
ZDEgPSBweXRlc3QuZW5zdXJldGVtcCgiaGVsbG8iKQotICAgIGQyID0gcHl0ZXN0LmVuc3VyZXRl
bXAoImhlbGxvIikKLSAgICBhc3NlcnQgZDEgPT0gZDIKLSAgICBhc3NlcnQgZDEuY2hlY2soZGly
PTEpCi0KLQotY2xhc3MgVGVzdFRlbXBkaXJIYW5kbGVyKG9iamVjdCk6Ci0KLSAgICBkZWYgdGVz
dF9ta3RlbXAoc2VsZiwgdGVzdGRpcik6Ci0gICAgICAgIGZyb20gX3B5dGVzdC50bXBkaXIgaW1w
b3J0IFRlbXBkaXJGYWN0b3J5Ci0KLSAgICAgICAgY29uZmlnID0gdGVzdGRpci5wYXJzZWNvbmZp
ZygpCi0gICAgICAgIGNvbmZpZy5vcHRpb24uYmFzZXRlbXAgPSB0ZXN0ZGlyLm1rZGlyKCJoZWxs
byIpCi0gICAgICAgIHQgPSBUZW1wZGlyRmFjdG9yeShjb25maWcpCitpbXBvcnQgcHl0ZXN0Citm
cm9tIF9weXRlc3QgaW1wb3J0IHBhdGhsaWIKK2Zyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IENv
bmZpZworZnJvbSBfcHl0ZXN0LnBhdGhsaWIgaW1wb3J0IGNsZWFudXBfbnVtYmVyZWRfZGlyCitm
cm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgY3JlYXRlX2NsZWFudXBfbG9jaworZnJvbSBfcHl0
ZXN0LnBhdGhsaWIgaW1wb3J0IG1ha2VfbnVtYmVyZWRfZGlyCitmcm9tIF9weXRlc3QucGF0aGxp
YiBpbXBvcnQgbWF5YmVfZGVsZXRlX2FfbnVtYmVyZWRfZGlyCitmcm9tIF9weXRlc3QucGF0aGxp
YiBpbXBvcnQgb25fcm1fcmZfZXJyb3IKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBQYXRo
Citmcm9tIF9weXRlc3QucGF0aGxpYiBpbXBvcnQgcmVnaXN0ZXJfY2xlYW51cF9sb2NrX3JlbW92
YWwKK2Zyb20gX3B5dGVzdC5wYXRobGliIGltcG9ydCBybV9yZgorZnJvbSBfcHl0ZXN0LnRtcGRp
ciBpbXBvcnQgZ2V0X3VzZXIKK2Zyb20gX3B5dGVzdC50bXBkaXIgaW1wb3J0IFRlbXBkaXJGYWN0
b3J5Citmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCBUZW1wUGF0aEZhY3RvcnkKKworCitkZWYg
dGVzdF90bXBkaXJfZml4dHVyZSh0ZXN0ZGlyKToKKyAgICBwID0gdGVzdGRpci5jb3B5X2V4YW1w
bGUoInRtcGRpci90bXBkaXJfZml4dHVyZS5weSIpCisgICAgcmVzdWx0cyA9IHRlc3RkaXIucnVu
cHl0ZXN0KHApCisgICAgcmVzdWx0cy5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIioxIHBhc3NlZCoi
XSkKKworCitAYXR0ci5zCitjbGFzcyBGYWtlQ29uZmlnOgorICAgIGJhc2V0ZW1wID0gYXR0ci5p
YigpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdHJhY2Uoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmCisKKyAgICBkZWYgZ2V0KHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBsYW1iZGEg
Kms6IE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBvcHRpb24oc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmCisKKworY2xhc3MgVGVzdFRlbXBkaXJIYW5kbGVyOgorICAgIGRlZiB0ZXN0
X21rdGVtcChzZWxmLCB0bXBfcGF0aCk6CisgICAgICAgIGNvbmZpZyA9IGNhc3QoQ29uZmlnLCBG
YWtlQ29uZmlnKHRtcF9wYXRoKSkKKyAgICAgICAgdCA9IFRlbXBkaXJGYWN0b3J5KFRlbXBQYXRo
RmFjdG9yeS5mcm9tX2NvbmZpZyhjb25maWcpKQogICAgICAgICB0bXAgPSB0Lm1rdGVtcCgid29y
bGQiKQogICAgICAgICBhc3NlcnQgdG1wLnJlbHRvKHQuZ2V0YmFzZXRlbXAoKSkgPT0gIndvcmxk
MCIKICAgICAgICAgdG1wID0gdC5ta3RlbXAoInRoaXMiKQpAQCAtNTcsOSArNTcsMTUgQEAgY2xh
c3MgVGVzdFRlbXBkaXJIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCB0bXAyLnJlbHRv
KHQuZ2V0YmFzZXRlbXAoKSkuc3RhcnRzd2l0aCgidGhpcyIpCiAgICAgICAgIGFzc2VydCB0bXAy
ICE9IHRtcAogCisgICAgZGVmIHRlc3RfdG1wcGF0aF9yZWxhdGl2ZV9iYXNldGVtcF9hYnNvbHV0
ZShzZWxmLCB0bXBfcGF0aCwgbW9ua2V5cGF0Y2gpOgorICAgICAgICAiIiIjNDQyNSIiIgorICAg
ICAgICBtb25rZXlwYXRjaC5jaGRpcih0bXBfcGF0aCkKKyAgICAgICAgY29uZmlnID0gY2FzdChD
b25maWcsIEZha2VDb25maWcoImhlbGxvIikpCisgICAgICAgIHQgPSBUZW1wUGF0aEZhY3Rvcnku
ZnJvbV9jb25maWcoY29uZmlnKQorICAgICAgICBhc3NlcnQgdC5nZXRiYXNldGVtcCgpLnJlc29s
dmUoKSA9PSAodG1wX3BhdGggLyAiaGVsbG8iKS5yZXNvbHZlKCkKIAotY2xhc3MgVGVzdENvbmZp
Z1RtcGRpcihvYmplY3QpOgogCitjbGFzcyBUZXN0Q29uZmlnVG1wZGlyOgogICAgIGRlZiB0ZXN0
X2dldGJhc2V0ZW1wX2N1c3RvbV9yZW1vdmVzX29sZChzZWxmLCB0ZXN0ZGlyKToKICAgICAgICAg
bXl0ZW1wID0gdGVzdGRpci50bXBkaXIuam9pbigieHl6IikKICAgICAgICAgcCA9IHRlc3RkaXIu
bWFrZXB5ZmlsZSgKQEAgLTc3LDI0ICs4MywzOSBAQCBjbGFzcyBUZXN0Q29uZmlnVG1wZGlyKG9i
amVjdCk6CiAgICAgICAgIGFzc2VydCBub3QgbXl0ZW1wLmpvaW4oImhlbGxvIikuY2hlY2soKQog
CiAKLWRlZiB0ZXN0X2Jhc2V0ZW1wKHRlc3RkaXIpOgordGVzdGRhdGEgPSBbCisgICAgKCJteXBh
dGgiLCBUcnVlKSwKKyAgICAoIi9teXBhdGgxIiwgRmFsc2UpLAorICAgICgiLi9teXBhdGgxIiwg
VHJ1ZSksCisgICAgKCIuLi9teXBhdGgzIiwgRmFsc2UpLAorICAgICgiLi4vLi4vbXlwYXRoNCIs
IEZhbHNlKSwKKyAgICAoIm15cGF0aDUvLi4iLCBGYWxzZSksCisgICAgKCJteXBhdGg2Ly4uL215
cGF0aDYiLCBUcnVlKSwKKyAgICAoIm15cGF0aDcvLi4vbXlwYXRoNy8uLiIsIEZhbHNlKSwKK10K
KworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImJhc2VuYW1lLCBpc19vayIsIHRlc3RkYXRh
KQorZGVmIHRlc3RfbWt0ZW1wKHRlc3RkaXIsIGJhc2VuYW1lLCBpc19vayk6CiAgICAgbXl0ZW1w
ID0gdGVzdGRpci50bXBkaXIubWtkaXIoIm15dGVtcCIpCiAgICAgcCA9IHRlc3RkaXIubWFrZXB5
ZmlsZSgKICAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBweXRlc3QKLSAgICAgICAgZGVmIHRl
c3RfMSgpOgotICAgICAgICAgICAgcHl0ZXN0LmVuc3VyZXRlbXAoImhlbGxvIikKLSAgICAiIiIK
KyAgICAgICAgZGVmIHRlc3RfYWJzX3BhdGgodG1wZGlyX2ZhY3RvcnkpOgorICAgICAgICAgICAg
dG1wZGlyX2ZhY3RvcnkubWt0ZW1wKCd7fScsIG51bWJlcmVkPUZhbHNlKQorICAgICAgICAiIiIu
Zm9ybWF0KAorICAgICAgICAgICAgYmFzZW5hbWUKKyAgICAgICAgKQogICAgICkKKwogICAgIHJl
c3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHAsICItLWJhc2V0ZW1wPSVzIiAlIG15dGVtcCkKLSAg
ICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCi0gICAgYXNzZXJ0IG15dGVtcC5qb2luKCJoZWxsbyIp
LmNoZWNrKCkKKyAgICBpZiBpc19vazoKKyAgICAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMAor
ICAgICAgICBhc3NlcnQgbXl0ZW1wLmpvaW4oYmFzZW5hbWUpLmNoZWNrKCkKKyAgICBlbHNlOgor
ICAgICAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAxCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygiKlZhbHVlRXJyb3IqIikKIAogCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKAotICAg
IG5vdCBoYXNhdHRyKHB5LnBhdGgubG9jYWwsICJta3N5bWxpbmt0byIpLAotICAgIHJlYXNvbj0i
c3ltbGluayBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iLAotKQogZGVmIHRlc3RfdG1w
ZGlyX2Fsd2F5c19pc19yZWFscGF0aCh0ZXN0ZGlyKToKICAgICAjIHRoZSByZWFzb24gd2h5IHRt
cGRpciBzaG91bGQgYmUgYSByZWFscGF0aCBpcyB0aGF0CiAgICAgIyB3aGVuIHlvdSBjZCB0byBp
dCBhbmQgZG8gIm9zLmdldGN3ZCgpIiB5b3Ugd2lsbCBhbnl3YXkKQEAgLTEwNCw3ICsxMjUsNyBA
QCBkZWYgdGVzdF90bXBkaXJfYWx3YXlzX2lzX3JlYWxwYXRoKHRlc3RkaXIpOgogICAgICMgb3Mu
ZW52aXJvblsiUFdEIl0KICAgICByZWFsdGVtcCA9IHRlc3RkaXIudG1wZGlyLm1rZGlyKCJteXJl
YWx0ZW1wIikKICAgICBsaW5rdGVtcCA9IHRlc3RkaXIudG1wZGlyLmpvaW4oInN5bWxpbmt0ZW1w
IikKLSAgICBsaW5rdGVtcC5ta3N5bWxpbmt0byhyZWFsdGVtcCkKKyAgICBhdHRlbXB0X3N5bWxp
bmtfdG8obGlua3RlbXAsIHN0cihyZWFsdGVtcCkpCiAgICAgcCA9IHRlc3RkaXIubWFrZXB5Zmls
ZSgKICAgICAgICAgIiIiCiAgICAgICAgIGRlZiB0ZXN0XzEodG1wZGlyKToKQEAgLTExNiw2ICsx
MzcsMjIgQEAgZGVmIHRlc3RfdG1wZGlyX2Fsd2F5c19pc19yZWFscGF0aCh0ZXN0ZGlyKToKICAg
ICBhc3NlcnQgbm90IHJlc3VsdC5yZXQKIAogCitkZWYgdGVzdF90bXBfcGF0aF9hbHdheXNfaXNf
cmVhbHBhdGgodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgICMgZm9yIHJlYXNvbmluZyBzZWU6
IHRlc3RfdG1wZGlyX2Fsd2F5c19pc19yZWFscGF0aCB0ZXN0LWNhc2UKKyAgICByZWFsdGVtcCA9
IHRlc3RkaXIudG1wZGlyLm1rZGlyKCJteXJlYWx0ZW1wIikKKyAgICBsaW5rdGVtcCA9IHRlc3Rk
aXIudG1wZGlyLmpvaW4oInN5bWxpbmt0ZW1wIikKKyAgICBhdHRlbXB0X3N5bWxpbmtfdG8obGlu
a3RlbXAsIHN0cihyZWFsdGVtcCkpCisgICAgbW9ua2V5cGF0Y2guc2V0ZW52KCJQWVRFU1RfREVC
VUdfVEVNUFJPT1QiLCBzdHIobGlua3RlbXApKQorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0XzEodG1wX3BhdGgpOgorICAgICAgICAgICAgYXNz
ZXJ0IHRtcF9wYXRoLnJlc29sdmUoKSA9PSB0bXBfcGF0aAorICAgICIiIgorICAgICkKKyAgICBy
ZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBh
c3NlZD0xKQorCisKIGRlZiB0ZXN0X3RtcGRpcl90b29fbG9uZ19vbl9wYXJhbWV0cml6YXRpb24o
dGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIKQEAgLTEzNyw3
ICsxNzQsNyBAQCBkZWYgdGVzdF90bXBkaXJfZmFjdG9yeSh0ZXN0ZGlyKToKICAgICAgICAgZGVm
IHNlc3Npb25fZGlyKHRtcGRpcl9mYWN0b3J5KToKICAgICAgICAgICAgIHJldHVybiB0bXBkaXJf
ZmFjdG9yeS5ta3RlbXAoJ2RhdGEnLCBudW1iZXJlZD1GYWxzZSkKICAgICAgICAgZGVmIHRlc3Rf
c29tZShzZXNzaW9uX2Rpcik6Ci0gICAgICAgICAgICBzZXNzaW9uX2Rpci5pc2RpcigpCisgICAg
ICAgICAgICBhc3NlcnQgc2Vzc2lvbl9kaXIuaXNkaXIoKQogICAgICIiIgogICAgICkKICAgICBy
ZXByZWMgPSB0ZXN0ZGlyLmlubGluZV9ydW4oKQpAQCAtMTUyLDcgKzE4OSw2IEBAIGRlZiB0ZXN0
X3RtcGRpcl9mYWxsYmFja190b3hfZW52KHRlc3RkaXIsIG1vbmtleXBhdGNoKToKICAgICBtb25r
ZXlwYXRjaC5kZWxlbnYoIlVTRVJOQU1FIiwgcmFpc2luZz1GYWxzZSkKICAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCiAgICAgICAgICIiIgotICAgICAgICBpbXBvcnQgcHl0ZXN0CiAgICAgICAgIGRl
ZiB0ZXN0X3NvbWUodG1wZGlyKToKICAgICAgICAgICAgIGFzc2VydCB0bXBkaXIuaXNkaXIoKQog
ICAgICIiIgpAQCAtMTc4LDcgKzIxNCw2IEBAIGRlZiB0ZXN0X3RtcGRpcl9mYWxsYmFja191aWRf
bm90X2ZvdW5kKHRlc3RkaXIpOgogCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAi
IiIKLSAgICAgICAgaW1wb3J0IHB5dGVzdAogICAgICAgICBkZWYgdGVzdF9zb21lKHRtcGRpcik6
CiAgICAgICAgICAgICBhc3NlcnQgdG1wZGlyLmlzZGlyKCkKICAgICAiIiIKQEAgLTE5NCw4ICsy
MjksNiBAQCBkZWYgdGVzdF9nZXRfdXNlcl91aWRfbm90X2ZvdW5kKCk6CiAgICAgdXNlciBpZCBk
b2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgdmFsaWQgdXNlciAoZS5nLiBydW5uaW5nIHB5dGVzdCBp
biBhCiAgICAgRG9ja2VyIGNvbnRhaW5lciB3aXRoICdkb2NrZXIgcnVuIC11Jy4KICAgICAiIiIK
LSAgICBmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCBnZXRfdXNlcgotCiAgICAgYXNzZXJ0IGdl
dF91c2VyKCkgaXMgTm9uZQogCiAKQEAgLTIwNSw4ICsyMzgsMjA3IEBAIGRlZiB0ZXN0X2dldF91
c2VyKG1vbmtleXBhdGNoKToKICAgICByZXF1aXJlZCBieSBnZXRwYXNzIG1vZHVsZSBhcmUgbWlz
c2luZyBmcm9tIHRoZSBlbnZpcm9ubWVudCBvbiBXaW5kb3dzCiAgICAgKCMxMDEwKS4KICAgICAi
IiIKLSAgICBmcm9tIF9weXRlc3QudG1wZGlyIGltcG9ydCBnZXRfdXNlcgotCiAgICAgbW9ua2V5
cGF0Y2guZGVsZW52KCJVU0VSIiwgcmFpc2luZz1GYWxzZSkKICAgICBtb25rZXlwYXRjaC5kZWxl
bnYoIlVTRVJOQU1FIiwgcmFpc2luZz1GYWxzZSkKICAgICBhc3NlcnQgZ2V0X3VzZXIoKSBpcyBO
b25lCisKKworY2xhc3MgVGVzdE51bWJlcmVkRGlyOgorICAgIFBSRUZJWCA9ICJmdW4tIgorCisg
ICAgZGVmIHRlc3RfbWFrZShzZWxmLCB0bXBfcGF0aCk6CisgICAgICAgIGZvciBpIGluIHJhbmdl
KDEwKToKKyAgICAgICAgICAgIGQgPSBtYWtlX251bWJlcmVkX2Rpcihyb290PXRtcF9wYXRoLCBw
cmVmaXg9c2VsZi5QUkVGSVgpCisgICAgICAgICAgICBhc3NlcnQgZC5uYW1lLnN0YXJ0c3dpdGgo
c2VsZi5QUkVGSVgpCisgICAgICAgICAgICBhc3NlcnQgZC5uYW1lLmVuZHN3aXRoKHN0cihpKSkK
KworICAgICAgICBzeW1saW5rID0gdG1wX3BhdGguam9pbnBhdGgoc2VsZi5QUkVGSVggKyAiY3Vy
cmVudCIpCisgICAgICAgIGlmIHN5bWxpbmsuZXhpc3RzKCk6CisgICAgICAgICAgICAjIHVuaXgK
KyAgICAgICAgICAgIGFzc2VydCBzeW1saW5rLmlzX3N5bWxpbmsoKQorICAgICAgICAgICAgYXNz
ZXJ0IHN5bWxpbmsucmVzb2x2ZSgpID09IGQucmVzb2x2ZSgpCisKKyAgICBkZWYgdGVzdF9jbGVh
bnVwX2xvY2tfY3JlYXRlKHNlbGYsIHRtcF9wYXRoKToKKyAgICAgICAgZCA9IHRtcF9wYXRoLmpv
aW5wYXRoKCJ0ZXN0IikKKyAgICAgICAgZC5ta2RpcigpCisgICAgICAgIGxvY2tmaWxlID0gY3Jl
YXRlX2NsZWFudXBfbG9jayhkKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoT1NFcnJvciwg
bWF0Y2g9ImNhbm5vdCBjcmVhdGUgbG9ja2ZpbGUgaW4gLioiKToKKyAgICAgICAgICAgIGNyZWF0
ZV9jbGVhbnVwX2xvY2soZCkKKworICAgICAgICBsb2NrZmlsZS51bmxpbmsoKQorCisgICAgZGVm
IHRlc3RfbG9ja19yZWdpc3Rlcl9jbGVhbnVwX3JlbW92YWwoc2VsZiwgdG1wX3BhdGg6IFBhdGgp
IC0+IE5vbmU6CisgICAgICAgIGxvY2sgPSBjcmVhdGVfY2xlYW51cF9sb2NrKHRtcF9wYXRoKQor
CisgICAgICAgIHJlZ2lzdHJ5ID0gW10gICMgdHlwZTogTGlzdFtDYWxsYWJsZVsuLi4sIE5vbmVd
XQorICAgICAgICByZWdpc3Rlcl9jbGVhbnVwX2xvY2tfcmVtb3ZhbChsb2NrLCByZWdpc3Rlcj1y
ZWdpc3RyeS5hcHBlbmQpCisKKyAgICAgICAgKGNsZWFudXBfZnVuYywpID0gcmVnaXN0cnkKKwor
ICAgICAgICBhc3NlcnQgbG9jay5pc19maWxlKCkKKworICAgICAgICBjbGVhbnVwX2Z1bmMob3Jp
Z2luYWxfcGlkPSJpbnRlbnRpb25hbGx5X2RpZmZlcmVudCIpCisKKyAgICAgICAgYXNzZXJ0IGxv
Y2suaXNfZmlsZSgpCisKKyAgICAgICAgY2xlYW51cF9mdW5jKCkKKworICAgICAgICBhc3NlcnQg
bm90IGxvY2suZXhpc3RzKCkKKworICAgICAgICBjbGVhbnVwX2Z1bmMoKQorCisgICAgICAgIGFz
c2VydCBub3QgbG9jay5leGlzdHMoKQorCisgICAgZGVmIF9kb19jbGVhbnVwKHNlbGYsIHRtcF9w
YXRoOiBQYXRoKSAtPiBOb25lOgorICAgICAgICBzZWxmLnRlc3RfbWFrZSh0bXBfcGF0aCkKKyAg
ICAgICAgY2xlYW51cF9udW1iZXJlZF9kaXIoCisgICAgICAgICAgICByb290PXRtcF9wYXRoLAor
ICAgICAgICAgICAgcHJlZml4PXNlbGYuUFJFRklYLAorICAgICAgICAgICAga2VlcD0yLAorICAg
ICAgICAgICAgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVmb3JlPTAsCisgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X2NsZWFudXBfa2VlcChzZWxmLCB0bXBfcGF0aCk6CisgICAgICAg
IHNlbGYuX2RvX2NsZWFudXAodG1wX3BhdGgpCisgICAgICAgIGEsIGIgPSAoeCBmb3IgeCBpbiB0
bXBfcGF0aC5pdGVyZGlyKCkgaWYgbm90IHguaXNfc3ltbGluaygpKQorICAgICAgICBwcmludChh
LCBiKQorCisgICAgZGVmIHRlc3RfY2xlYW51cF9sb2NrZWQoc2VsZiwgdG1wX3BhdGgpOgorICAg
ICAgICBwID0gbWFrZV9udW1iZXJlZF9kaXIocm9vdD10bXBfcGF0aCwgcHJlZml4PXNlbGYuUFJF
RklYKQorCisgICAgICAgIGNyZWF0ZV9jbGVhbnVwX2xvY2socCkKKworICAgICAgICBhc3NlcnQg
bm90IHBhdGhsaWIuZW5zdXJlX2RlbGV0YWJsZSgKKyAgICAgICAgICAgIHAsIGNvbnNpZGVyX2xv
Y2tfZGVhZF9pZl9jcmVhdGVkX2JlZm9yZT1wLnN0YXQoKS5zdF9tdGltZSAtIDEKKyAgICAgICAg
KQorICAgICAgICBhc3NlcnQgcGF0aGxpYi5lbnN1cmVfZGVsZXRhYmxlKAorICAgICAgICAgICAg
cCwgY29uc2lkZXJfbG9ja19kZWFkX2lmX2NyZWF0ZWRfYmVmb3JlPXAuc3RhdCgpLnN0X210aW1l
ICsgMQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jbGVhbnVwX2lnbm9yZXNfc3ltbGluayhz
ZWxmLCB0bXBfcGF0aCk6CisgICAgICAgIHRoZV9zeW1saW5rID0gdG1wX3BhdGggLyAoc2VsZi5Q
UkVGSVggKyAiY3VycmVudCIpCisgICAgICAgIGF0dGVtcHRfc3ltbGlua190byh0aGVfc3ltbGlu
aywgdG1wX3BhdGggLyAoc2VsZi5QUkVGSVggKyAiNSIpKQorICAgICAgICBzZWxmLl9kb19jbGVh
bnVwKHRtcF9wYXRoKQorCisgICAgZGVmIHRlc3RfcmVtb3ZhbF9hY2NlcHRzX2xvY2soc2VsZiwg
dG1wX3BhdGgpOgorICAgICAgICBmb2xkZXIgPSBtYWtlX251bWJlcmVkX2Rpcihyb290PXRtcF9w
YXRoLCBwcmVmaXg9c2VsZi5QUkVGSVgpCisgICAgICAgIGNyZWF0ZV9jbGVhbnVwX2xvY2soZm9s
ZGVyKQorICAgICAgICBtYXliZV9kZWxldGVfYV9udW1iZXJlZF9kaXIoZm9sZGVyKQorICAgICAg
ICBhc3NlcnQgZm9sZGVyLmlzX2RpcigpCisKKworY2xhc3MgVGVzdFJtUmY6CisgICAgZGVmIHRl
c3Rfcm1fcmYoc2VsZiwgdG1wX3BhdGgpOgorICAgICAgICBhZGlyID0gdG1wX3BhdGggLyAiYWRp
ciIKKyAgICAgICAgYWRpci5ta2RpcigpCisgICAgICAgIHJtX3JmKGFkaXIpCisKKyAgICAgICAg
YXNzZXJ0IG5vdCBhZGlyLmV4aXN0cygpCisKKyAgICAgICAgYWRpci5ta2RpcigpCisgICAgICAg
IGFmaWxlID0gYWRpciAvICJhZmlsZSIKKyAgICAgICAgYWZpbGUud3JpdGVfYnl0ZXMoYiJhYSIp
CisKKyAgICAgICAgcm1fcmYoYWRpcikKKyAgICAgICAgYXNzZXJ0IG5vdCBhZGlyLmV4aXN0cygp
CisKKyAgICBkZWYgdGVzdF9ybV9yZl93aXRoX3JlYWRfb25seV9maWxlKHNlbGYsIHRtcF9wYXRo
KToKKyAgICAgICAgIiIiRW5zdXJlIHJtX3JmIGNhbiByZW1vdmUgZGlyZWN0b3JpZXMgd2l0aCBy
ZWFkLW9ubHkgZmlsZXMgaW4gdGhlbSAoIzU1MjQpIiIiCisgICAgICAgIGZuID0gdG1wX3BhdGgg
LyAiZGlyL2Zvby50eHQiCisgICAgICAgIGZuLnBhcmVudC5ta2RpcigpCisKKyAgICAgICAgZm4u
dG91Y2goKQorCisgICAgICAgIHNlbGYuY2htb2RfcihmbikKKworICAgICAgICBybV9yZihmbi5w
YXJlbnQpCisKKyAgICAgICAgYXNzZXJ0IG5vdCBmbi5wYXJlbnQuaXNfZGlyKCkKKworICAgIGRl
ZiBjaG1vZF9yKHNlbGYsIHBhdGgpOgorICAgICAgICBtb2RlID0gb3Muc3RhdChzdHIocGF0aCkp
LnN0X21vZGUKKyAgICAgICAgb3MuY2htb2Qoc3RyKHBhdGgpLCBtb2RlICYgfnN0YXQuU19JV1JJ
VEUpCisKKyAgICBkZWYgdGVzdF9ybV9yZl93aXRoX3JlYWRfb25seV9kaXJlY3Rvcnkoc2VsZiwg
dG1wX3BhdGgpOgorICAgICAgICAiIiJFbnN1cmUgcm1fcmYgY2FuIHJlbW92ZSByZWFkLW9ubHkg
ZGlyZWN0b3JpZXMgKCM1NTI0KSIiIgorICAgICAgICBhZGlyID0gdG1wX3BhdGggLyAiZGlyIgor
ICAgICAgICBhZGlyLm1rZGlyKCkKKworICAgICAgICAoYWRpciAvICJmb28udHh0IikudG91Y2go
KQorICAgICAgICBzZWxmLmNobW9kX3IoYWRpcikKKworICAgICAgICBybV9yZihhZGlyKQorCisg
ICAgICAgIGFzc2VydCBub3QgYWRpci5pc19kaXIoKQorCisgICAgZGVmIHRlc3Rfb25fcm1fcmZf
ZXJyb3Ioc2VsZiwgdG1wX3BhdGg6IFBhdGgpIC0+IE5vbmU6CisgICAgICAgIGFkaXIgPSB0bXBf
cGF0aCAvICJkaXIiCisgICAgICAgIGFkaXIubWtkaXIoKQorCisgICAgICAgIGZuID0gYWRpciAv
ICJmb28udHh0IgorICAgICAgICBmbi50b3VjaCgpCisgICAgICAgIHNlbGYuY2htb2RfcihmbikK
KworICAgICAgICAjIHVua25vd24gZXhjZXB0aW9uCisgICAgICAgIHdpdGggcHl0ZXN0Lndhcm5z
KHB5dGVzdC5QeXRlc3RXYXJuaW5nKToKKyAgICAgICAgICAgIGV4Y19pbmZvMSA9IChOb25lLCBS
dW50aW1lRXJyb3IoKSwgTm9uZSkKKyAgICAgICAgICAgIG9uX3JtX3JmX2Vycm9yKG9zLnVubGlu
aywgc3RyKGZuKSwgZXhjX2luZm8xLCBzdGFydF9wYXRoPXRtcF9wYXRoKQorICAgICAgICAgICAg
YXNzZXJ0IGZuLmlzX2ZpbGUoKQorCisgICAgICAgICMgd2UgaWdub3JlIEZpbGVOb3RGb3VuZEVy
cm9yCisgICAgICAgIGV4Y19pbmZvMiA9IChOb25lLCBGaWxlTm90Rm91bmRFcnJvcigpLCBOb25l
KQorICAgICAgICBhc3NlcnQgbm90IG9uX3JtX3JmX2Vycm9yKE5vbmUsIHN0cihmbiksIGV4Y19p
bmZvMiwgc3RhcnRfcGF0aD10bXBfcGF0aCkKKworICAgICAgICAjIHVua25vd24gZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBweXRlc3Qud2FybnMoCisgICAgICAgICAgICBweXRlc3QuUHl0ZXN0V2Fy
bmluZywKKyAgICAgICAgICAgIG1hdGNoPXIiXlwocm1fcmZcKSB1bmtub3duIGZ1bmN0aW9uIE5v
bmUgd2hlbiByZW1vdmluZyAuKmZvby50eHQ6XG5Ob25lOiAiLAorICAgICAgICApOgorICAgICAg
ICAgICAgZXhjX2luZm8zID0gKE5vbmUsIFBlcm1pc3Npb25FcnJvcigpLCBOb25lKQorICAgICAg
ICAgICAgb25fcm1fcmZfZXJyb3IoTm9uZSwgc3RyKGZuKSwgZXhjX2luZm8zLCBzdGFydF9wYXRo
PXRtcF9wYXRoKQorICAgICAgICAgICAgYXNzZXJ0IGZuLmlzX2ZpbGUoKQorCisgICAgICAgICMg
aWdub3JlZCBmdW5jdGlvbgorICAgICAgICB3aXRoIHB5dGVzdC53YXJucyhOb25lKSBhcyB3YXJu
aW5mbzoKKyAgICAgICAgICAgIGV4Y19pbmZvNCA9IChOb25lLCBQZXJtaXNzaW9uRXJyb3IoKSwg
Tm9uZSkKKyAgICAgICAgICAgIG9uX3JtX3JmX2Vycm9yKG9zLm9wZW4sIHN0cihmbiksIGV4Y19p
bmZvNCwgc3RhcnRfcGF0aD10bXBfcGF0aCkKKyAgICAgICAgICAgIGFzc2VydCBmbi5pc19maWxl
KCkKKyAgICAgICAgYXNzZXJ0IG5vdCBbeC5tZXNzYWdlIGZvciB4IGluIHdhcm5pbmZvXQorCisg
ICAgICAgIGV4Y19pbmZvNSA9IChOb25lLCBQZXJtaXNzaW9uRXJyb3IoKSwgTm9uZSkKKyAgICAg
ICAgb25fcm1fcmZfZXJyb3Iob3MudW5saW5rLCBzdHIoZm4pLCBleGNfaW5mbzUsIHN0YXJ0X3Bh
dGg9dG1wX3BhdGgpCisgICAgICAgIGFzc2VydCBub3QgZm4uaXNfZmlsZSgpCisKKworZGVmIGF0
dGVtcHRfc3ltbGlua190byhwYXRoLCB0b19wYXRoKToKKyAgICAiIiJUcnkgdG8gbWFrZSBhIHN5
bWxpbmsgZnJvbSAicGF0aCIgdG8gInRvX3BhdGgiLCBza2lwcGluZyBpbiBjYXNlIHRoaXMgcGxh
dGZvcm0KKyAgICBkb2VzIG5vdCBzdXBwb3J0IGl0IG9yIHdlIGRvbid0IGhhdmUgc3VmZmljaWVu
dCBwcml2aWxlZ2VzIChjb21tb24gb24gV2luZG93cykuIiIiCisgICAgdHJ5OgorICAgICAgICBQ
YXRoKHBhdGgpLnN5bWxpbmtfdG8oUGF0aCh0b19wYXRoKSkKKyAgICBleGNlcHQgT1NFcnJvcjoK
KyAgICAgICAgcHl0ZXN0LnNraXAoImNvdWxkIG5vdCBjcmVhdGUgc3ltYm9saWMgbGluayIpCisK
KworZGVmIHRlc3RfdG1wZGlyX2VxdWFsc190bXBfcGF0aCh0bXBkaXIsIHRtcF9wYXRoKToKKyAg
ICBhc3NlcnQgUGF0aCh0bXBkaXIpID09IHRtcF9wYXRoCisKKworZGVmIHRlc3RfYmFzZXRlbXBf
d2l0aF9yZWFkX29ubHlfZmlsZXModGVzdGRpcik6CisgICAgIiIiSW50ZWdyYXRpb24gdGVzdCBm
b3IgIzU1MjQiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAg
ICBpbXBvcnQgb3MKKyAgICAgICAgaW1wb3J0IHN0YXQKKworICAgICAgICBkZWYgdGVzdCh0bXBf
cGF0aCk6CisgICAgICAgICAgICBmbiA9IHRtcF9wYXRoIC8gJ2Zvby50eHQnCisgICAgICAgICAg
ICBmbi53cml0ZV90ZXh0KCdoZWxsbycpCisgICAgICAgICAgICBtb2RlID0gb3Muc3RhdChzdHIo
Zm4pKS5zdF9tb2RlCisgICAgICAgICAgICBvcy5jaG1vZChzdHIoZm4pLCBtb2RlICYgfnN0YXQu
U19JUkVBRCkKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
Ii0tYmFzZXRlbXA9dG1wIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisgICAgIyBydW5u
aW5nIGEgc2Vjb25kIHRpbWUgYW5kIGVuc3VyZSB3ZSBkb24ndCBjcmFzaAorICAgIHJlc3VsdCA9
IHRlc3RkaXIucnVucHl0ZXN0KCItLWJhc2V0ZW1wPXRtcCIpCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3VuaXR0ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3VuaXR0ZXN0LnB5CmluZGV4IDY1ZmZkYjk3NTM4
Yi4uYzdiNmJmY2VjOTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfdW5p
dHRlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3VuaXR0ZXN0LnB5CkBAIC0x
LDcgKzEsOSBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlz
aW9uLCBwcmludF9mdW5jdGlvbgotZnJvbSBfcHl0ZXN0Lm1haW4gaW1wb3J0IEVYSVRfTk9URVNU
U0NPTExFQ1RFRAotaW1wb3J0IHB5dGVzdAogaW1wb3J0IGdjCitpbXBvcnQgc3lzCitmcm9tIHR5
cGluZyBpbXBvcnQgTGlzdAorCitpbXBvcnQgcHl0ZXN0Citmcm9tIF9weXRlc3QuY29uZmlnIGlt
cG9ydCBFeGl0Q29kZQogCiAKIGRlZiB0ZXN0X3NpbXBsZV91bml0dGVzdCh0ZXN0ZGlyKToKQEAg
LTU1LDcgKzU3LDcgQEAgZGVmIHRlc3RfaXNjbGFzc2NoZWNrX2lzc3VlNTModGVzdGRpcik6CiAg
ICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHRlc3RwYXRoKQot
ICAgIGFzc2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgIGFzc2Vy
dCByZXN1bHQucmV0ID09IEV4aXRDb2RlLk5PX1RFU1RTX0NPTExFQ1RFRAogCiAKIGRlZiB0ZXN0
X3NldHVwKHRlc3RkaXIpOgpAQCAtMTM5LDYgKzE0MSwyOSBAQCBkZWYgdGVzdF9uZXdfaW5zdGFu
Y2VzKHRlc3RkaXIpOgogICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKHBhc3NlZD0yKQogCiAKK2Rl
ZiB0ZXN0X2Z1bmN0aW9uX2l0ZW1fb2JqX2lzX2luc3RhbmNlKHRlc3RkaXIpOgorICAgICIiIml0
ZW0ub2JqIHNob3VsZCBiZSBhIGJvdW5kIG1ldGhvZCBvbiB1bml0dGVzdC5UZXN0Q2FzZSBmdW5j
dGlvbiBpdGVtcyAoIzUzOTApLiIiIgorICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAg
ICAiIiIKKyAgICAgICAgZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6
CisgICAgICAgICAgICBpZiBjYWxsLndoZW4gPT0gJ2NhbGwnOgorICAgICAgICAgICAgICAgIGNs
YXNzXyA9IGl0ZW0ucGFyZW50Lm9iagorICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNl
KGl0ZW0ub2JqLl9fc2VsZl9fLCBjbGFzc18pCisgICAgIiIiCisgICAgKQorICAgIHRlc3RkaXIu
bWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAg
ICAgIGNsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Rf
Zm9vKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCkKKyAgICByZXN1bHQuc3Rkb3V0LmZu
bWF0Y2hfbGluZXMoWyIqIDEgcGFzc2VkIGluKiJdKQorCisKIGRlZiB0ZXN0X3RlYXJkb3duKHRl
c3RkaXIpOgogICAgIHRlc3RwYXRoID0gdGVzdGRpci5tYWtlcHlmaWxlKAogICAgICAgICAiIiIK
QEAgLTIxMCw3ICsyMzUsNyBAQCBkZWYgdGVzdF91bml0dGVzdF9za2lwX2lzc3VlMTQ4KHRlc3Rk
aXIpOgogZGVmIHRlc3RfbWV0aG9kX2FuZF90ZWFyZG93bl9mYWlsaW5nX3JlcG9ydGluZyh0ZXN0
ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgotICAgICAgICBpbXBv
cnQgdW5pdHRlc3QsIHB5dGVzdAorICAgICAgICBpbXBvcnQgdW5pdHRlc3QKICAgICAgICAgY2xh
c3MgVEModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgZGVmIHRlYXJEb3duKHNlbGYp
OgogICAgICAgICAgICAgICAgIGFzc2VydCAwLCAiZG93bjEiCkBAIC0yNDAsMTQgKzI2NSwxNCBA
QCBkZWYgdGVzdF9zZXR1cF9mYWlsdXJlX2lzX3Nob3duKHRlc3RkaXIpOgogICAgICAgICAgICAg
ZGVmIHNldFVwKHNlbGYpOgogICAgICAgICAgICAgICAgIGFzc2VydCAwLCAiZG93bjEiCiAgICAg
ICAgICAgICBkZWYgdGVzdF9tZXRob2Qoc2VsZik6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJu
ZXZlcjQyIikKKyAgICAgICAgICAgICAgICBwcmludCgibmV2ZXI0MiIpCiAgICAgICAgICAgICAg
ICAgeHl6CiAgICAgIiIiCiAgICAgKQogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCIt
cyIpCiAgICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRj
aF9saW5lcyhbIipzZXRVcCoiLCAiKmFzc2VydCAwKmRvd24xKiIsICIqMSBmYWlsZWQqIl0pCi0g
ICAgYXNzZXJ0ICJuZXZlcjQyIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorICAgIHJlc3Vs
dC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqbmV2ZXI0MioiKQogCiAKIGRlZiB0ZXN0X3NldHVw
X3NldFVwQ2xhc3ModGVzdGRpcik6CkBAIC0zMTksNyArMzQ0LDcgQEAgZGVmIHRlc3RfdGVzdGNh
c2VfYWRkZXJyb3JhbmRmYWlsdXJlX2RlZmVycyh0ZXN0ZGlyLCB0eXBlKToKICAgICAgICAgJSAo
dHlwZSwgdHlwZSkKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQotICAg
IGFzc2VydCAic2hvdWxkIG5vdCByYWlzZSIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKKyAg
ICByZXN1bHQuc3Rkb3V0Lm5vX2ZubWF0Y2hfbGluZSgiKnNob3VsZCBub3QgcmFpc2UqIikKIAog
CiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInR5cGUiLCBbIkVycm9yIiwgIkZhaWx1cmUiXSkK
QEAgLTM2MCw3ICszODUsNyBAQCBkZWYgdGVzdF90ZXN0Y2FzZV9jdXN0b21fZXhjZXB0aW9uX2lu
Zm8odGVzdGRpciwgdHlwZSk6CiAKIAogZGVmIHRlc3RfdGVzdGNhc2VfdG90YWxseV9pbmNvbXBh
dGlibGVfZXhjZXB0aW9uX2luZm8odGVzdGRpcik6Ci0gICAgaXRlbSwgPSB0ZXN0ZGlyLmdldGl0
ZW1zKAorICAgIChpdGVtLCkgPSB0ZXN0ZGlyLmdldGl0ZW1zKAogICAgICAgICAiIiIKICAgICAg
ICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKICAgICAgICAgY2xhc3MgTXlUZXN0Q2Fz
ZShUZXN0Q2FzZSk6CkBAIC0zODgsOCArNDEzLDcgQEAgZGVmIHRlc3RfbW9kdWxlX2xldmVsX3B5
dGVzdG1hcmsodGVzdGRpcik6CiAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUoc2tpcHBlZD0xKQog
CiAKLWNsYXNzIFRlc3RUcmlhbFVuaXR0ZXN0KG9iamVjdCk6Ci0KK2NsYXNzIFRlc3RUcmlhbFVu
aXR0ZXN0OgogICAgIGRlZiBzZXR1cF9jbGFzcyhjbHMpOgogICAgICAgICBjbHMudXQgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJ0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0IikKICAgICAgICAgIyBvbiB3
aW5kb3dzIHRyaWFsIHVzZXMgYSBzb2NrZXQgZm9yIGEgcmVhY3RvciBhbmQgYXBwYXJlbnRseSBk
b2Vzbid0IGNsb3NlIGl0IHByb3Blcmx5CkBAIC00NTUsOSArNDc5LDYgQEAgY2xhc3MgVGVzdFRy
aWFsVW5pdHRlc3Qob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAi
IiIKICAgICAgICAgKQotICAgICAgICBmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfaXNfdW5p
dHRlc3RfdW5leHBlY3RlZF9zdWNjZXNzX2FfZmFpbHVyZQotCi0gICAgICAgIHNob3VsZF9mYWls
ID0gX2lzX3VuaXR0ZXN0X3VuZXhwZWN0ZWRfc3VjY2Vzc19hX2ZhaWx1cmUoKQogICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJ4cyIsICpzZWxmLmlnbm9yZV91bmNsb3NlZF9z
b2NrZXRfd2FybmluZykKICAgICAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzX3JhbmRv
bSgKICAgICAgICAgICAgIFsKQEAgLTQ2OCwxMiArNDg5LDEwIEBAIGNsYXNzIFRlc3RUcmlhbFVu
aXR0ZXN0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIippMndhbnRvKiIsCiAgICAgICAgICAg
ICAgICAgIipzeXMudmVyc2lvbl9pbmZvKiIsCiAgICAgICAgICAgICAgICAgIipza2lwX2luX21l
dGhvZCoiLAotICAgICAgICAgICAgICAgICIqMSBmYWlsZWQqNCBza2lwcGVkKjMgeGZhaWxlZCoi
Ci0gICAgICAgICAgICAgICAgaWYgc2hvdWxkX2ZhaWwKLSAgICAgICAgICAgICAgICBlbHNlICIq
NCBza2lwcGVkKjMgeGZhaWwqMSB4cGFzcyoiLAorICAgICAgICAgICAgICAgICIqMSBmYWlsZWQq
NCBza2lwcGVkKjMgeGZhaWxlZCoiLAogICAgICAgICAgICAgXQogICAgICAgICApCi0gICAgICAg
IGFzc2VydCByZXN1bHQucmV0ID09ICgxIGlmIHNob3VsZF9mYWlsIGVsc2UgMCkKKyAgICAgICAg
YXNzZXJ0IHJlc3VsdC5yZXQgPT0gMQogCiAgICAgZGVmIHRlc3RfdHJpYWxfZXJyb3Ioc2VsZiwg
dGVzdGRpcik6CiAgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKQEAgLTUxMywxOSArNTMyLDMx
IEBAIGNsYXNzIFRlc3RUcmlhbFVuaXR0ZXN0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIyB3
aWxsIGNyYXNoIGJvdGggYXQgdGVzdCB0aW1lIGFuZCBhdCB0ZWFyZG93bgogICAgICAgICAiIiIK
ICAgICAgICAgKQotICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAg
ICMgSWdub3JlIERlcHJlY2F0aW9uV2FybmluZyAoZm9yIGBjbXBgKSBmcm9tIGF0dHJzIHRocm91
Z2ggdHdpc3RlZCwKKyAgICAgICAgIyBmb3Igc3RhYmxlIHRlc3QgcmVzdWx0cy4KKyAgICAgICAg
cmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoCisgICAgICAgICAgICAiLXZ2IiwgIi1vY29uc29s
ZV9vdXRwdXRfc3R5bGU9Y2xhc3NpYyIsICItVyIsICJpZ25vcmU6OkRlcHJlY2F0aW9uV2Fybmlu
ZyIKKyAgICAgICAgKQogICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgInRlc3RfdHJpYWxfZXJyb3IucHk6OlRDOjp0ZXN0
X2ZvdXIgRkFJTEVEIiwKKyAgICAgICAgICAgICAgICAidGVzdF90cmlhbF9lcnJvci5weTo6VEM6
OnRlc3RfZm91ciBFUlJPUiIsCisgICAgICAgICAgICAgICAgInRlc3RfdHJpYWxfZXJyb3IucHk6
OlRDOjp0ZXN0X29uZSBGQUlMRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3RyaWFsX2Vycm9y
LnB5OjpUQzo6dGVzdF90aHJlZSBGQUlMRUQiLAorICAgICAgICAgICAgICAgICJ0ZXN0X3RyaWFs
X2Vycm9yLnB5OjpUQzo6dGVzdF90d28gRkFJTEVEIiwKICAgICAgICAgICAgICAgICAiKkVSUk9S
UyoiLAorICAgICAgICAgICAgICAgICIqXyBFUlJPUiBhdCB0ZWFyZG93biBvZiBUQy50ZXN0X2Zv
dXIgXyoiLAogICAgICAgICAgICAgICAgICIqRGVsYXllZENhbGxzKiIsCi0gICAgICAgICAgICAg
ICAgIip0ZXN0X2ZvdXIqIiwKKyAgICAgICAgICAgICAgICAiKj0gRkFJTFVSRVMgPSoiLAorICAg
ICAgICAgICAgICAgICIqXyBUQy50ZXN0X2ZvdXIgXyoiLAogICAgICAgICAgICAgICAgICIqTmFt
ZUVycm9yKmNyYXNoKiIsCi0gICAgICAgICAgICAgICAgIip0ZXN0X29uZSoiLAorICAgICAgICAg
ICAgICAgICIqXyBUQy50ZXN0X29uZSBfKiIsCiAgICAgICAgICAgICAgICAgIipOYW1lRXJyb3Iq
Y3Jhc2gqIiwKLSAgICAgICAgICAgICAgICAiKnRlc3RfdGhyZWUqIiwKKyAgICAgICAgICAgICAg
ICAiKl8gVEMudGVzdF90aHJlZSBfKiIsCiAgICAgICAgICAgICAgICAgIipEZWxheWVkQ2FsbHMq
IiwKLSAgICAgICAgICAgICAgICAiKnRlc3RfdHdvKiIsCi0gICAgICAgICAgICAgICAgIipjcmFz
aCoiLAorICAgICAgICAgICAgICAgICIqXyBUQy50ZXN0X3R3byBfKiIsCisgICAgICAgICAgICAg
ICAgIipOYW1lRXJyb3IqY3Jhc2gqIiwKKyAgICAgICAgICAgICAgICAiKj0gNCBmYWlsZWQsIDEg
ZXJyb3IgaW4gKiIsCiAgICAgICAgICAgICBdCiAgICAgICAgICkKIApAQCAtNjA3LDE0ICs2Mzgs
MTQgQEAgZGVmIHRlc3RfZGphbmdvbGlrZV90ZXN0Y2FzZSh0ZXN0ZGlyKToKICAgICAgICAgY2xh
c3MgRGphbmdvTGlrZVRlc3RDYXNlKFRlc3RDYXNlKToKIAogICAgICAgICAgICAgZGVmIHNldFVw
KHNlbGYpOgotICAgICAgICAgICAgICAgIHByaW50ICgic2V0VXAoKSIpCisgICAgICAgICAgICAg
ICAgcHJpbnQoInNldFVwKCkiKQogCiAgICAgICAgICAgICBkZWYgdGVzdF9wcmVzZXR1cF9oYXNf
YmVlbl9ydW4oc2VsZik6Ci0gICAgICAgICAgICAgICAgcHJpbnQgKCJ0ZXN0X3RoaW5nKCkiKQor
ICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0X3RoaW5nKCkiKQogICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYsICd3YXNfcHJlc2V0dXAnKSkKIAogICAgICAgICAg
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAgICAgICAgIHByaW50ICgidGVhckRvd24o
KSIpCisgICAgICAgICAgICAgICAgcHJpbnQoInRlYXJEb3duKCkiKQogCiAgICAgICAgICAgICBk
ZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0PU5vbmUpOgogICAgICAgICAgICAgICAgIHRyeToKQEAg
LTYzNiwxMSArNjY3LDExIEBAIGRlZiB0ZXN0X2RqYW5nb2xpa2VfdGVzdGNhc2UodGVzdGRpcik6
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICAgICBkZWYgX3ByZV9zZXR1
cChzZWxmKToKLSAgICAgICAgICAgICAgICBwcmludCAoIl9wcmVfc2V0dXAoKSIpCisgICAgICAg
ICAgICAgICAgcHJpbnQoIl9wcmVfc2V0dXAoKSIpCiAgICAgICAgICAgICAgICAgc2VsZi53YXNf
cHJlc2V0dXAgPSBUcnVlCiAKICAgICAgICAgICAgIGRlZiBfcG9zdF90ZWFyZG93bihzZWxmKToK
LSAgICAgICAgICAgICAgICBwcmludCAoIl9wb3N0X3RlYXJkb3duKCkiKQorICAgICAgICAgICAg
ICAgIHByaW50KCJfcG9zdF90ZWFyZG93bigpIikKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRlc3QoIi1zIikKQEAgLTY2Nyw3ICs2OTgsNyBAQCBkZWYgdGVzdF91
bml0dGVzdF9ub3Rfc2hvd25faW5fdHJhY2ViYWNrKHRlc3RkaXIpOgogICAgICIiIgogICAgICkK
ICAgICByZXMgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAgYXNzZXJ0ICJmYWlsVW5sZXNzRXF1
YWwiIG5vdCBpbiByZXMuc3Rkb3V0LnN0cigpCisgICAgcmVzLnN0ZG91dC5ub19mbm1hdGNoX2xp
bmUoIipmYWlsVW5sZXNzRXF1YWwqIikKIAogCiBkZWYgdGVzdF91bm9yZGVyYWJsZV90eXBlcyh0
ZXN0ZGlyKToKQEAgLTY4Niw4ICs3MTcsOCBAQCBkZWYgdGVzdF91bm9yZGVyYWJsZV90eXBlcyh0
ZXN0ZGlyKToKICAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3Qo
KQotICAgIGFzc2VydCAiVHlwZUVycm9yIiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQotICAg
IGFzc2VydCByZXN1bHQucmV0ID09IEVYSVRfTk9URVNUU0NPTExFQ1RFRAorICAgIHJlc3VsdC5z
dGRvdXQubm9fZm5tYXRjaF9saW5lKCIqVHlwZUVycm9yKiIpCisgICAgYXNzZXJ0IHJlc3VsdC5y
ZXQgPT0gRXhpdENvZGUuTk9fVEVTVFNfQ09MTEVDVEVECiAKIAogZGVmIHRlc3RfdW5pdHRlc3Rf
dHlwZXJyb3JfdHJhY2ViYWNrKHRlc3RkaXIpOgpAQCAtNzQxLDIyICs3NzIsMTcgQEAgZGVmIHRl
c3RfdW5pdHRlc3RfZXhwZWN0ZWRfZmFpbHVyZV9mb3JfcGFzc2luZ190ZXN0X2lzX2ZhaWwodGVz
dGRpciwgcnVubmVyKToKICAgICAgICAgICAgIHVuaXR0ZXN0Lm1haW4oKQogICAgICIiIgogICAg
ICkKLSAgICBmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfaXNfdW5pdHRlc3RfdW5leHBlY3Rl
ZF9zdWNjZXNzX2FfZmFpbHVyZQogCi0gICAgc2hvdWxkX2ZhaWwgPSBfaXNfdW5pdHRlc3RfdW5l
eHBlY3RlZF9zdWNjZXNzX2FfZmFpbHVyZSgpCiAgICAgaWYgcnVubmVyID09ICJweXRlc3QiOgog
ICAgICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLXJ4WCIpCiAgICAgICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAi
Kk15VGVzdENhc2UqdGVzdF9wYXNzaW5nX3Rlc3RfaXNfZmFpbCoiLAotICAgICAgICAgICAgICAg
ICIqMSBmYWlsZWQqIiBpZiBzaG91bGRfZmFpbCBlbHNlICIqMSB4cGFzc2VkKiIsCi0gICAgICAg
ICAgICBdCisgICAgICAgICAgICBbIipNeVRlc3RDYXNlKnRlc3RfcGFzc2luZ190ZXN0X2lzX2Zh
aWwqIiwgIioxIGZhaWxlZCoiXQogICAgICAgICApCiAgICAgZWxzZToKICAgICAgICAgcmVzdWx0
ID0gdGVzdGRpci5ydW5weXRob24oc2NyaXB0KQogICAgICAgICByZXN1bHQuc3RkZXJyLmZubWF0
Y2hfbGluZXMoWyIqMSB0ZXN0IGluKiIsICIqKHVuZXhwZWN0ZWQgc3VjY2Vzc2VzPTEpKiJdKQog
Ci0gICAgYXNzZXJ0IHJlc3VsdC5yZXQgPT0gKDEgaWYgc2hvdWxkX2ZhaWwgZWxzZSAwKQorICAg
IGFzc2VydCByZXN1bHQucmV0ID09IDEKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCkBA
IC03OTEsNyArODE3LDcgQEAgZGVmIHRlc3RfdW5pdHRlc3Rfc2V0dXBfaW50ZXJhY3Rpb24odGVz
dGRpciwgZml4X3R5cGUsIHN0bXQpOgogICAgICAgICApCiAgICAgKQogICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiozIHBh
c3NlZCoiKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIiozIHBhc3NlZCoiXSkK
IAogCiBkZWYgdGVzdF9ub25fdW5pdHRlc3Rfbm9fc2V0dXBjbGFzc19zdXBwb3J0KHRlc3RkaXIp
OgpAQCAtODQ4LDYgKzg3NCwzNyBAQCBkZWYgdGVzdF9ub190ZWFyZG93bl9pZl9zZXR1cGNsYXNz
X2ZhaWxlZCh0ZXN0ZGlyKToKICAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShwYXNzZWQ9MSwgZmFp
bGVkPTEpCiAKIAorZGVmIHRlc3RfY2xlYW51cF9mdW5jdGlvbnModGVzdGRpcik6CisgICAgIiIi
RW5zdXJlIGZ1bmN0aW9ucyBhZGRlZCB3aXRoIGFkZENsZWFudXAgYXJlIGFsd2F5cyBjYWxsZWQg
YWZ0ZXIgZWFjaCB0ZXN0IGVuZHMgKCM2OTQ3KSIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgK
KyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgIGNsZWFudXBz
ID0gW10KKworICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICAg
ICAgICAgZGVmIHRlc3RfZnVuY18xKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xl
YW51cChjbGVhbnVwcy5hcHBlbmQsICJ0ZXN0X2Z1bmNfMSIpCisKKyAgICAgICAgICAgIGRlZiB0
ZXN0X2Z1bmNfMihzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51
cHMuYXBwZW5kLCAidGVzdF9mdW5jXzIiKQorICAgICAgICAgICAgICAgIGFzc2VydCAwCisKKyAg
ICAgICAgICAgIGRlZiB0ZXN0X2Z1bmNfM19jaGVja19jbGVhbnVwcyhzZWxmKToKKyAgICAgICAg
ICAgICAgICBhc3NlcnQgY2xlYW51cHMgPT0gWyJ0ZXN0X2Z1bmNfMSIsICJ0ZXN0X2Z1bmNfMiJd
CisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItdiIpCisg
ICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAi
Kjo6dGVzdF9mdW5jXzEgUEFTU0VEICoiLAorICAgICAgICAgICAgIio6OnRlc3RfZnVuY18yIEZB
SUxFRCAqIiwKKyAgICAgICAgICAgICIqOjp0ZXN0X2Z1bmNfM19jaGVja19jbGVhbnVwcyBQQVNT
RUQgKiIsCisgICAgICAgIF0KKyAgICApCisKKwogZGVmIHRlc3RfaXNzdWUzMzNfcmVzdWx0X2Ns
ZWFyaW5nKHRlc3RkaXIpOgogICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAogICAgICAgICAiIiIK
QEAgLTkyNywxMSArOTg0LDkgQEAgZGVmIHRlc3RfY2xhc3NfbWV0aG9kX2NvbnRhaW5pbmdfdGVz
dF9pc3N1ZTE1NTgodGVzdGRpcik6CiAgICAgcmVwcmVjLmFzc2VydG91dGNvbWUocGFzc2VkPTEp
CiAKIAotQHB5dGVzdC5tYXJrLmlzc3VlKDM0OTgpCi1AcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Ci0gICAgImJhc2UiLCBbInNpeC5tb3Zlcy5idWlsdGlucy5vYmplY3QiLCAidW5pdHRlc3QuVGVz
dENhc2UiLCAidW5pdHRlc3QyLlRlc3RDYXNlIl0KLSkKK0BweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgiYmFzZSIsIFsiYnVpbHRpbnMub2JqZWN0IiwgInVuaXR0ZXN0LlRlc3RDYXNlIl0pCiBkZWYg
dGVzdF91c2VmaXh0dXJlc19tYXJrZXJfb25fdW5pdHRlc3QoYmFzZSwgdGVzdGRpcik6CisgICAg
IiIiIzM0OTgiIiIKICAgICBtb2R1bGUgPSBiYXNlLnJzcGxpdCgiLiIsIDEpWzBdCiAgICAgcHl0
ZXN0LmltcG9ydG9yc2tpcChtb2R1bGUpCiAgICAgdGVzdGRpci5tYWtlcHlmaWxlKApAQCAtOTkw
LDMgKzEwNDUsMjIzIEBAIGRlZiB0ZXN0X3VzZWZpeHR1cmVzX21hcmtlcl9vbl91bml0dGVzdChi
YXNlLCB0ZXN0ZGlyKToKIAogICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItcyIpCiAg
ICAgcmVzdWx0LmFzc2VydF9vdXRjb21lcyhwYXNzZWQ9MikKKworCitkZWYgdGVzdF90ZXN0Y2Fz
ZV9oYW5kbGVzX2luaXRfZXhjZXB0aW9ucyh0ZXN0ZGlyKToKKyAgICAiIiIKKyAgICBSZWdyZXNz
aW9uIHRlc3QgdG8gbWFrZSBzdXJlIGV4Y2VwdGlvbnMgaW4gdGhlIF9faW5pdF9fIG1ldGhvZCBh
cmUgYnViYmxlZCB1cCBjb3JyZWN0bHkuCisgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9pc3N1ZXMvMzc4OAorICAgICIiIgorICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisg
ICAgICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgY2xhc3MgTXlUZXN0Q2FzZShUZXN0Q2FzZSk6
CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInNob3VsZCByYWlzZSB0aGlzIGV4Y2VwdGlvbiIp
CisgICAgICAgICAgICBkZWYgdGVzdF9oZWxsbyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNz
CisgICAgIiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAgICBh
c3NlcnQgInNob3VsZCByYWlzZSB0aGlzIGV4Y2VwdGlvbiIgaW4gcmVzdWx0LnN0ZG91dC5zdHIo
KQorICAgIHJlc3VsdC5zdGRvdXQubm9fZm5tYXRjaF9saW5lKCIqRVJST1IgYXQgdGVhcmRvd24g
b2YgTXlUZXN0Q2FzZS50ZXN0X2hlbGxvKiIpCisKKworZGVmIHRlc3RfZXJyb3JfbWVzc2FnZV93
aXRoX3BhcmFtZXRyaXplZF9maXh0dXJlcyh0ZXN0ZGlyKToKKyAgICB0ZXN0ZGlyLmNvcHlfZXhh
bXBsZSgidW5pdHRlc3QvdGVzdF9wYXJhbWV0cml6ZWRfZml4dHVyZV9lcnJvcl9tZXNzYWdlLnB5
IikKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKAorICAgICAgICBbCisgICAgICAgICAgICAiKnRlc3RfdHdvIGRvZXMgbm90
IHN1cHBvcnQgZml4dHVyZXMqIiwKKyAgICAgICAgICAgICIqVGVzdFNvbWV0aGluZ0Vsc2U6OnRl
c3RfdHdvIiwKKyAgICAgICAgICAgICIqRnVuY3Rpb24gdHlwZTogVGVzdENhc2VGdW5jdGlvbiIs
CisgICAgICAgIF0KKyAgICApCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJ0
ZXN0X25hbWUsIGV4cGVjdGVkX291dGNvbWUiLAorICAgIFsKKyAgICAgICAgKCJ0ZXN0X3NldHVw
X3NraXAucHkiLCAiMSBza2lwcGVkIiksCisgICAgICAgICgidGVzdF9zZXR1cF9za2lwX2NsYXNz
LnB5IiwgIjEgc2tpcHBlZCIpLAorICAgICAgICAoInRlc3Rfc2V0dXBfc2tpcF9tb2R1bGUucHki
LCAiMSBlcnJvciIpLAorICAgIF0sCispCitkZWYgdGVzdF9zZXR1cF9pbmhlcml0YW5jZV9za2lw
cGluZyh0ZXN0ZGlyLCB0ZXN0X25hbWUsIGV4cGVjdGVkX291dGNvbWUpOgorICAgICIiIklzc3Vl
ICM0NzAwIiIiCisgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoInVuaXR0ZXN0L3t9Ii5mb3JtYXQo
dGVzdF9uYW1lKSkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgcmVzdWx0
LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKiB7fSBpbiAqIi5mb3JtYXQoZXhwZWN0ZWRfb3V0Y29t
ZSldKQorCisKK2RlZiB0ZXN0X0JkYlF1aXQodGVzdGRpcik6CisgICAgdGVzdGRpci5tYWtlcHlm
aWxlKAorICAgICAgICB0ZXN0X2Zvbz0iIiIKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAg
ICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBk
ZWYgdGVzdF9iZGJxdWl0KHNlbGYpOgorICAgICAgICAgICAgICAgIGltcG9ydCBiZGIKKyAgICAg
ICAgICAgICAgICByYWlzZSBiZGIuQmRiUXVpdCgpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3No
b3VsZF9ub3RfcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICAp
CisgICAgcmVwcmVjID0gdGVzdGRpci5pbmxpbmVfcnVuKCkKKyAgICByZXByZWMuYXNzZXJ0b3V0
Y29tZShmYWlsZWQ9MSwgcGFzc2VkPTEpCisKKworZGVmIHRlc3RfZXhpdF9vdXRjb21lKHRlc3Rk
aXIpOgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgdGVzdF9mb289IiIiCisgICAg
ICAgIGltcG9ydCBweXRlc3QKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgY2xh
c3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9l
eGl0X291dGNvbWUoc2VsZik6CisgICAgICAgICAgICAgICAgcHl0ZXN0LmV4aXQoInB5dGVzdF9l
eGl0IGNhbGxlZCIpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3Nob3VsZF9ub3RfcnVuKHNlbGYp
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVz
dGRpci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcyhbIipFeGl0
OiBweXRlc3RfZXhpdCBjYWxsZWQqIiwgIio9IG5vIHRlc3RzIHJhbiBpbiAqIl0pCisKKworZGVm
IHRlc3RfdHJhY2UodGVzdGRpciwgbW9ua2V5cGF0Y2gpOgorICAgIGNhbGxzID0gW10KKworICAg
IGRlZiBjaGVja19jYWxsKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGNhbGxzLmFwcGVuZCgo
YXJncywga3dhcmdzKSkKKyAgICAgICAgYXNzZXJ0IGFyZ3MgPT0gKCJydW5jYWxsIiwpCisKKyAg
ICAgICAgY2xhc3MgX3BkYjoKKyAgICAgICAgICAgIGRlZiBydW5jYWxsKCphcmdzLCAqKmt3YXJn
cyk6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKChhcmdzLCBrd2FyZ3MpKQorCisgICAg
ICAgIHJldHVybiBfcGRiCisKKyAgICBtb25rZXlwYXRjaC5zZXRhdHRyKCJfcHl0ZXN0LmRlYnVn
Z2luZy5weXRlc3RQREIuX2luaXRfcGRiIiwgY2hlY2tfY2FsbCkKKworICAgIHAxID0gdGVzdGRp
ci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAg
ICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBk
ZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCAn
Zm9vJykKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoIi0t
dHJhY2UiLCBzdHIocDEpKQorICAgIGFzc2VydCBsZW4oY2FsbHMpID09IDIKKyAgICBhc3NlcnQg
cmVzdWx0LnJldCA9PSAwCisKKworZGVmIHRlc3RfcGRiX3RlYXJkb3duX2NhbGxlZCh0ZXN0ZGly
LCBtb25rZXlwYXRjaCkgLT4gTm9uZToKKyAgICAiIiJFbnN1cmUgdGVhckRvd24oKSBpcyBhbHdh
eXMgY2FsbGVkIHdoZW4gLS1wZGIgaXMgZ2l2ZW4gaW4gdGhlIGNvbW1hbmQtbGluZS4KKworICAg
IFdlIGRlbGF5IHRoZSBub3JtYWwgdGVhckRvd24oKSBjYWxscyB3aGVuIC0tcGRiIGlzIGdpdmVu
LCBzbyB0aGlzIGVuc3VyZXMgd2UgYXJlIGNhbGxpbmcKKyAgICB0ZWFyRG93bigpIGV2ZW50dWFs
bHkgdG8gYXZvaWQgbWVtb3J5IGxlYWtzIHdoZW4gdXNpbmcgLS1wZGIuCisgICAgIiIiCisgICAg
dGVhcmRvd25zID0gW10gICMgdHlwZTogTGlzdFtzdHJdCisgICAgbW9ua2V5cGF0Y2guc2V0YXR0
cigKKyAgICAgICAgcHl0ZXN0LCAidGVzdF9wZGJfdGVhcmRvd25fY2FsbGVkX3RlYXJkb3ducyIs
IHRlYXJkb3ducywgcmFpc2luZz1GYWxzZQorICAgICkKKworICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICBpbXBvcnQg
cHl0ZXN0CisKKyAgICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisK
KyAgICAgICAgICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgICAgICAgICBweXRlc3Qu
dGVzdF9wZGJfdGVhcmRvd25fY2FsbGVkX3RlYXJkb3ducy5hcHBlbmQoc2VsZi5pZCgpKQorCisg
ICAgICAgICAgICBkZWYgdGVzdF8xKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgICAgIGRlZiB0ZXN0XzIoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICIiIgor
ICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9pbnByb2Nlc3MoIi0tcGRiIikK
KyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoIiogMiBwYXNzZWQgaW4gKiIpCisgICAg
YXNzZXJ0IHRlYXJkb3ducyA9PSBbCisgICAgICAgICJ0ZXN0X3BkYl90ZWFyZG93bl9jYWxsZWQu
TXlUZXN0Q2FzZS50ZXN0XzEiLAorICAgICAgICAidGVzdF9wZGJfdGVhcmRvd25fY2FsbGVkLk15
VGVzdENhc2UudGVzdF8yIiwKKyAgICBdCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJt
YXJrIiwgWyJAdW5pdHRlc3Quc2tpcCIsICJAcHl0ZXN0Lm1hcmsuc2tpcCJdKQorZGVmIHRlc3Rf
cGRiX3RlYXJkb3duX3NraXBwZWQodGVzdGRpciwgbW9ua2V5cGF0Y2gsIG1hcms6IHN0cikgLT4g
Tm9uZToKKyAgICAiIiJXaXRoIC0tcGRiLCBzZXRVcCBhbmQgdGVhckRvd24gc2hvdWxkIG5vdCBi
ZSBjYWxsZWQgZm9yIHNraXBwZWQgdGVzdHMuIiIiCisgICAgdHJhY2tlZCA9IFtdICAjIHR5cGU6
IExpc3Rbc3RyXQorICAgIG1vbmtleXBhdGNoLnNldGF0dHIocHl0ZXN0LCAidGVzdF9wZGJfdGVh
cmRvd25fc2tpcHBlZCIsIHRyYWNrZWQsIHJhaXNpbmc9RmFsc2UpCisKKyAgICB0ZXN0ZGlyLm1h
a2VweWZpbGUoCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAg
aW1wb3J0IHB5dGVzdAorCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENh
c2UpOgorCisgICAgICAgICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICAgICAgICAgcHl0
ZXN0LnRlc3RfcGRiX3RlYXJkb3duX3NraXBwZWQuYXBwZW5kKCJzZXRVcDoiICsgc2VsZi5pZCgp
KQorCisgICAgICAgICAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICAgICAgICAgcHl0
ZXN0LnRlc3RfcGRiX3RlYXJkb3duX3NraXBwZWQuYXBwZW5kKCJ0ZWFyRG93bjoiICsgc2VsZi5p
ZCgpKQorCisgICAgICAgICAgICB7bWFya30oInNraXBwZWQgZm9yIHJlYXNvbnMiKQorICAgICAg
ICAgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAiIiIu
Zm9ybWF0KAorICAgICAgICAgICAgbWFyaz1tYXJrCisgICAgICAgICkKKyAgICApCisgICAgcmVz
dWx0ID0gdGVzdGRpci5ydW5weXRlc3RfaW5wcm9jZXNzKCItLXBkYiIpCisgICAgcmVzdWx0LnN0
ZG91dC5mbm1hdGNoX2xpbmVzKCIqIDEgc2tpcHBlZCBpbiAqIikKKyAgICBhc3NlcnQgdHJhY2tl
ZCA9PSBbXQorCisKK2RlZiB0ZXN0X2FzeW5jX3N1cHBvcnQodGVzdGRpcik6CisgICAgcHl0ZXN0
LmltcG9ydG9yc2tpcCgidW5pdHRlc3QuYXN5bmNfY2FzZSIpCisKKyAgICB0ZXN0ZGlyLmNvcHlf
ZXhhbXBsZSgidW5pdHRlc3QvdGVzdF91bml0dGVzdF9hc3luY2lvLnB5IikKKyAgICByZXByZWMg
PSB0ZXN0ZGlyLmlubGluZV9ydW4oKQorICAgIHJlcHJlYy5hc3NlcnRvdXRjb21lKGZhaWxlZD0x
LCBwYXNzZWQ9MikKKworCitkZWYgdGVzdF9hc3luY3Rlc3Rfc3VwcG9ydCh0ZXN0ZGlyKToKKyAg
ICAiIiJDaGVjayBhc3luY3Rlc3Qgc3VwcG9ydCAoIzcxMTApIiIiCisgICAgcHl0ZXN0LmltcG9y
dG9yc2tpcCgiYXN5bmN0ZXN0IikKKworICAgIHRlc3RkaXIuY29weV9leGFtcGxlKCJ1bml0dGVz
dC90ZXN0X3VuaXR0ZXN0X2FzeW5jdGVzdC5weSIpCisgICAgcmVwcmVjID0gdGVzdGRpci5pbmxp
bmVfcnVuKCkKKyAgICByZXByZWMuYXNzZXJ0b3V0Y29tZShmYWlsZWQ9MSwgcGFzc2VkPTIpCisK
KworZGVmIHRlc3RfcGxhaW5fdW5pdHRlc3RfZG9lc19ub3Rfc3VwcG9ydF9hc3luYyh0ZXN0ZGly
KToKKyAgICAiIiJBc3luYyBmdW5jdGlvbnMgaW4gcGxhaW4gdW5pdHRlc3QuVGVzdENhc2Ugc3Vi
Y2xhc3NlcyBhcmUgbm90IHN1cHBvcnRlZCB3aXRob3V0IHBsdWdpbnMuCisKKyAgICBUaGlzIHRl
c3QgZXhpc3RzIGhlcmUgdG8gYXZvaWQgaW50cm9kdWNpbmcgdGhpcyBzdXBwb3J0IGJ5IGFjY2lk
ZW50LCBsZWFkaW5nIHVzZXJzCisgICAgdG8gZXhwZWN0IHRoYXQgaXQgd29ya3MsIHJhdGhlciB0
aGFuIGRvaW5nIHNvIGludGVudGlvbmFsbHkgYXMgYSBmZWF0dXJlLgorCisgICAgU2VlIGh0dHBz
Oi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvL2lzc3Vlcy8xODAgZm9yIG1v
cmUgY29udGV4dC4KKyAgICAiIiIKKyAgICB0ZXN0ZGlyLmNvcHlfZXhhbXBsZSgidW5pdHRlc3Qv
dGVzdF91bml0dGVzdF9wbGFpbl9hc3luYy5weSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5w
eXRlc3Rfc3VicHJvY2VzcygpCisgICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5m
byIpOgorICAgICAgICAjIGluIFB5UHkgd2UgY2FuJ3QgcmVsaWFibGUgZ2V0IHRoZSB3YXJuaW5n
IGFib3V0IHRoZSBjb3JvdXRpbmUgbm90IGJlaW5nIGF3YWl0ZWQsCisgICAgICAgICMgYmVjYXVz
ZSBpdCBkZXBlbmRzIG9uIHRoZSBjb3JvdXRpbmUgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQ7IGdp
dmVuIHRoYXQKKyAgICAgICAgIyB3ZSBhcmUgcnVubmluZyBpbiBhIHN1YnByb2Nlc3MsIHRoYXQn
cyBkaWZmaWN1bHQgdG8gZW5mb3JjZQorICAgICAgICBleHBlY3RlZF9saW5lcyA9IFsiKjEgcGFz
c2VkKiJdCisgICAgZWxzZToKKyAgICAgICAgZXhwZWN0ZWRfbGluZXMgPSBbCisgICAgICAgICAg
ICAiKlJ1bnRpbWVXYXJuaW5nOiBjb3JvdXRpbmUgKiB3YXMgbmV2ZXIgYXdhaXRlZCIsCisgICAg
ICAgICAgICAiKjEgcGFzc2VkKiIsCisgICAgICAgIF0KKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0
Y2hfbGluZXMoZXhwZWN0ZWRfbGluZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3Rfd2FybmluZ190eXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF93YXJuaW5n
X3R5cGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjE2ZDcy
NTJhNjhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3dhcm5p
bmdfdHlwZXMucHkKQEAgLTAsMCArMSwzNyBAQAoraW1wb3J0IGluc3BlY3QKKworaW1wb3J0IF9w
eXRlc3Qud2FybmluZ190eXBlcworaW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgKKyAgICAid2FybmluZ19jbGFzcyIsCisgICAgWworICAgICAgICB3CisgICAgICAg
IGZvciBuLCB3IGluIHZhcnMoX3B5dGVzdC53YXJuaW5nX3R5cGVzKS5pdGVtcygpCisgICAgICAg
IGlmIGluc3BlY3QuaXNjbGFzcyh3KSBhbmQgaXNzdWJjbGFzcyh3LCBXYXJuaW5nKQorICAgIF0s
CispCitkZWYgdGVzdF93YXJuaW5nX3R5cGVzKHdhcm5pbmdfY2xhc3MpOgorICAgICIiIk1ha2Ug
c3VyZSBhbGwgd2FybmluZ3MgZGVjbGFyZWQgaW4gX3B5dGVzdC53YXJuaW5nX3R5cGVzIGFyZSBk
aXNwbGF5ZWQgYXMgY29taW5nCisgICAgZnJvbSAncHl0ZXN0JyBpbnN0ZWFkIG9mIHRoZSBpbnRl
cm5hbCBtb2R1bGUgKCM1NDUyKS4KKyAgICAiIiIKKyAgICBhc3NlcnQgd2FybmluZ19jbGFzcy5f
X21vZHVsZV9fID09ICJweXRlc3QiCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJl
cnJvcjo6cHl0ZXN0LlB5dGVzdFdhcm5pbmciKQorZGVmIHRlc3RfcHl0ZXN0X3dhcm5pbmdzX3Jl
cHJfaW50ZWdyYXRpb25fdGVzdCh0ZXN0ZGlyKToKKyAgICAiIiJTbWFsbCBpbnRlZ3JhdGlvbiB0
ZXN0IHRvIGVuc3VyZSBvdXIgc21hbGwgaGFjayBvZiBzZXR0aW5nIHRoZSBfX21vZHVsZV9fIGF0
dHJpYnV0ZQorICAgIG9mIG91ciB3YXJuaW5ncyBhY3R1YWxseSB3b3JrcyAoIzU0NTIpLgorICAg
ICIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9y
dCBweXRlc3QKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisKKyAgICAgICAgZGVmIHRlc3QoKToK
KyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4ocHl0ZXN0LlB5dGVzdFdhcm5pbmcoInNvbWUgd2Fy
bmluZyIpKQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgp
CisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiRSAgICAgICBweXRlc3QuUHl0ZXN0
V2FybmluZzogc29tZSB3YXJuaW5nIl0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5n
L3Rlc3Rfd2FybmluZ3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfd2FybmluZ3MucHkK
aW5kZXggYzViZWEwNTJhNDdlLi5iN2EyMzEwOTRmZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF93YXJuaW5ncy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
d2FybmluZ3MucHkKQEAgLTEsMjMgKzEsMzAgQEAKLSMgLSotIGNvZGluZzogdXRmOCAtKi0KLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgc3lzCitpbXBv
cnQgb3MKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKK2Zyb20gdHlw
aW5nIGltcG9ydCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCiAKIGltcG9ydCBw
eXRlc3QKLQorZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBGaXh0dXJlUmVxdWVzdAorZnJv
bSBfcHl0ZXN0LnB5dGVzdGVyIGltcG9ydCBUZXN0ZGlyCiAKIFdBUk5JTkdTX1NVTU1BUllfSEVB
REVSID0gIndhcm5pbmdzIHN1bW1hcnkiCiAKIAogQHB5dGVzdC5maXh0dXJlCi1kZWYgcHlmaWxl
X3dpdGhfd2FybmluZ3ModGVzdGRpciwgcmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGEg
dGVzdCBmaWxlIHdoaWNoIGNhbGxzIGEgZnVuY3Rpb24gaW4gYSBtb2R1bGUgd2hpY2ggZ2VuZXJh
dGVzIHdhcm5pbmdzLgotICAgICIiIgorZGVmIHB5ZmlsZV93aXRoX3dhcm5pbmdzKHRlc3RkaXI6
IFRlc3RkaXIsIHJlcXVlc3Q6IEZpeHR1cmVSZXF1ZXN0KSAtPiBzdHI6CisgICAgIiIiQ3JlYXRl
IGEgdGVzdCBmaWxlIHdoaWNoIGNhbGxzIGEgZnVuY3Rpb24gaW4gYSBtb2R1bGUgd2hpY2ggZ2Vu
ZXJhdGVzIHdhcm5pbmdzLiIiIgogICAgIHRlc3RkaXIuc3lzcGF0aGluc2VydCgpCiAgICAgdGVz
dF9uYW1lID0gcmVxdWVzdC5mdW5jdGlvbi5fX25hbWVfXwogICAgIG1vZHVsZV9uYW1lID0gdGVz
dF9uYW1lLmxzdHJpcCgidGVzdF8iKSArICJfbW9kdWxlIgotICAgIHRlc3RkaXIubWFrZXB5Zmls
ZSgKKyAgICB0ZXN0X2ZpbGUgPSB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgorICAg
ICAgICBpbXBvcnQge21vZHVsZV9uYW1lfQorICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAg
ICAgICAgICBhc3NlcnQge21vZHVsZV9uYW1lfS5mb28oKSA9PSAxCisgICAgICAgICIiIi5mb3Jt
YXQoCisgICAgICAgICAgICBtb2R1bGVfbmFtZT1tb2R1bGVfbmFtZQorICAgICAgICApLAogICAg
ICAgICAqKnsKICAgICAgICAgICAgIG1vZHVsZV9uYW1lOiAiIiIKICAgICAgICAgICAgIGltcG9y
dCB3YXJuaW5ncwpAQCAtMjUsMjkgKzMyLDIwIEBAIGRlZiBweWZpbGVfd2l0aF93YXJuaW5ncyh0
ZXN0ZGlyLCByZXF1ZXN0KToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJu
aW5nKCJ1c2VyIHdhcm5pbmciKSkKICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKFJ1bnRp
bWVXYXJuaW5nKCJydW50aW1lIHdhcm5pbmciKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMQot
ICAgICAgICAiIiIsCi0gICAgICAgICAgICB0ZXN0X25hbWU6ICIiIgotICAgICAgICAgICAgaW1w
b3J0IHttb2R1bGVfbmFtZX0KLSAgICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAgICAg
ICAgICAgICBhc3NlcnQge21vZHVsZV9uYW1lfS5mb28oKSA9PSAxCi0gICAgICAgICIiIi5mb3Jt
YXQoCi0gICAgICAgICAgICAgICAgbW9kdWxlX25hbWU9bW9kdWxlX25hbWUKLSAgICAgICAgICAg
ICksCi0gICAgICAgIH0KKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgfSwKICAgICApCisgICAg
cmV0dXJuIHN0cih0ZXN0X2ZpbGUpCiAKIAotQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJh
bHdheXMiKQorQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJkZWZhdWx0IikKIGRlZiB0ZXN0
X25vcm1hbF9mbG93KHRlc3RkaXIsIHB5ZmlsZV93aXRoX3dhcm5pbmdzKToKLSAgICAiIiIKLSAg
ICBDaGVjayB0aGF0IHRoZSB3YXJuaW5ncyBzZWN0aW9uIGlzIGRpc3BsYXllZCwgY29udGFpbmlu
ZyB0ZXN0IG5vZGUgaWRzIGZvbGxvd2VkIGJ5Ci0gICAgYWxsIHdhcm5pbmdzIGdlbmVyYXRlZCBi
eSB0aGF0IHRlc3Qgbm9kZS4KLSAgICAiIiIKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVz
dCgpCisgICAgIiIiQ2hlY2sgdGhhdCB0aGUgd2FybmluZ3Mgc2VjdGlvbiBpcyBkaXNwbGF5ZWQu
IiIiCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QocHlmaWxlX3dpdGhfd2FybmluZ3Mp
CiAgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAogICAgICAgICBbCiAgICAgICAgICAg
ICAiKj09ICVzID09KiIgJSBXQVJOSU5HU19TVU1NQVJZX0hFQURFUiwKLSAgICAgICAgICAgICIq
dGVzdF9ub3JtYWxfZmxvdy5weTo6dGVzdF9mdW5jIiwKKyAgICAgICAgICAgICJ0ZXN0X25vcm1h
bF9mbG93LnB5Ojp0ZXN0X2Z1bmMiLAogICAgICAgICAgICAgIipub3JtYWxfZmxvd19tb2R1bGUu
cHk6MzogVXNlcldhcm5pbmc6IHVzZXIgd2FybmluZyIsCiAgICAgICAgICAgICAnKiAgd2Fybmlu
Z3Mud2FybihVc2VyV2FybmluZygidXNlciB3YXJuaW5nIikpJywKICAgICAgICAgICAgICIqbm9y
bWFsX2Zsb3dfbW9kdWxlLnB5OjQ6IFJ1bnRpbWVXYXJuaW5nOiBydW50aW1lIHdhcm5pbmciLApA
QCAtNTUsMTEgKzUzLDEwIEBAIGRlZiB0ZXN0X25vcm1hbF9mbG93KHRlc3RkaXIsIHB5ZmlsZV93
aXRoX3dhcm5pbmdzKToKICAgICAgICAgICAgICIqIDEgcGFzc2VkLCAyIHdhcm5pbmdzKiIsCiAg
ICAgICAgIF0KICAgICApCi0gICAgYXNzZXJ0IHJlc3VsdC5zdGRvdXQuc3RyKCkuY291bnQoInRl
c3Rfbm9ybWFsX2Zsb3cucHk6OnRlc3RfZnVuYyIpID09IDEKIAogCiBAcHl0ZXN0Lm1hcmsuZmls
dGVyd2FybmluZ3MoImFsd2F5cyIpCi1kZWYgdGVzdF9zZXR1cF90ZWFyZG93bl93YXJuaW5ncyh0
ZXN0ZGlyLCBweWZpbGVfd2l0aF93YXJuaW5ncyk6CitkZWYgdGVzdF9zZXR1cF90ZWFyZG93bl93
YXJuaW5ncyh0ZXN0ZGlyKToKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAgICIiIgog
ICAgICAgICBpbXBvcnQgd2FybmluZ3MKQEAgLTk1LDEwICs5MiwxMiBAQCBkZWYgdGVzdF9hc19l
cnJvcnModGVzdGRpciwgcHlmaWxlX3dpdGhfd2FybmluZ3MsIG1ldGhvZCk6CiAgICAgICAgIHRl
c3RkaXIubWFrZWluaSgKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgW3B5dGVzdF0KLSAg
ICAgICAgICAgIGZpbHRlcndhcm5pbmdzPSBlcnJvcgorICAgICAgICAgICAgZmlsdGVyd2Fybmlu
Z3M9ZXJyb3IKICAgICAgICAgICAgICIiIgogICAgICAgICApCi0gICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoKmFyZ3MpCisgICAgIyBVc2UgYSBzdWJwcm9jZXNzLCBzaW5jZSBjaGFuZ2lu
ZyBsb2dnaW5nIGxldmVsIGFmZmVjdHMgb3RoZXIgdGhyZWFkcworICAgICMgKHhkaXN0KS4KKyAg
ICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCphcmdzLCBweWZpbGVfd2l0
aF93YXJuaW5ncykKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCiAgICAgICAgIFsK
ICAgICAgICAgICAgICJFICAgICAgIFVzZXJXYXJuaW5nOiB1c2VyIHdhcm5pbmciLApAQCAtMTE5
LDEwMSArMTE4LDM0IEBAIGRlZiB0ZXN0X2lnbm9yZSh0ZXN0ZGlyLCBweWZpbGVfd2l0aF93YXJu
aW5ncywgbWV0aG9kKToKICAgICAgICAgIiIiCiAgICAgICAgICkKIAotICAgIHJlc3VsdCA9IHRl
c3RkaXIucnVucHl0ZXN0KCphcmdzKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCph
cmdzLCBweWZpbGVfd2l0aF93YXJuaW5ncykKICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqIDEgcGFzc2VkIGluICoiXSkKICAgICBhc3NlcnQgV0FSTklOR1NfU1VNTUFSWV9IRUFE
RVIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3RyKCkKIAogCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKAot
ICAgIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCksIHJlYXNvbj0id2FybmluZ3MgbWVzc2FnZSBp
cyB1bmljb2RlIGlzIG9rIGluIHB5dGhvbjMiCi0pCiBAcHl0ZXN0Lm1hcmsuZmlsdGVyd2Fybmlu
Z3MoImFsd2F5cyIpCi1kZWYgdGVzdF91bmljb2RlKHRlc3RkaXIsIHB5ZmlsZV93aXRoX3dhcm5p
bmdzKToKK2RlZiB0ZXN0X3VuaWNvZGUodGVzdGRpcik6CiAgICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAiIiIKLSAgICAgICAgIyAtKi0gY29kaW5nOiB1dGY4IC0qLQogICAgICAgICBp
bXBvcnQgd2FybmluZ3MKICAgICAgICAgaW1wb3J0IHB5dGVzdAogCiAKICAgICAgICAgQHB5dGVz
dC5maXh0dXJlCiAgICAgICAgIGRlZiBmaXgoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4o
dSLmtYvor5UiKQorICAgICAgICAgICAgd2FybmluZ3Mud2Fybigi5rWL6K+VIikKICAgICAgICAg
ICAgIHlpZWxkCiAKICAgICAgICAgZGVmIHRlc3RfZnVuYyhmaXgpOgogICAgICAgICAgICAgcGFz
cwotICAgICIiIgotICAgICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCi0gICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKAotICAgICAgICBbCi0gICAgICAgICAgICAiKj09
ICVzID09KiIgJSBXQVJOSU5HU19TVU1NQVJZX0hFQURFUiwKLSAgICAgICAgICAgICIqdGVzdF91
bmljb2RlLnB5Ojg6IFVzZXJXYXJuaW5nOiBcdTZkNGJcdThiZDUqIiwKLSAgICAgICAgICAgICIq
IDEgcGFzc2VkLCAxIHdhcm5pbmdzKiIsCi0gICAgICAgIF0KLSAgICApCi0KLQotQHB5dGVzdC5t
YXJrLnNraXBpZigKLSAgICBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKSwKLSAgICByZWFzb249
Indhcm5pbmdzIG1lc3NhZ2UgaXMgYnJva2VuIGFzIGl0IGlzIG5vdCBzdHIgaW5zdGFuY2UiLAot
KQotZGVmIHRlc3RfcHkyX3VuaWNvZGUodGVzdGRpciwgcHlmaWxlX3dpdGhfd2FybmluZ3MpOgot
ICAgIGlmICgKLSAgICAgICAgZ2V0YXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIsICgpKVs6
Ml0gPT0gKDUsIDkpCi0gICAgICAgIGFuZCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luIikK
LSAgICApOgotICAgICAgICBweXRlc3QueGZhaWwoImZhaWxzIHdpdGggdW5pY29kZSBlcnJvciBv
biBQeVB5MiA1LjkgYW5kIFdpbmRvd3MgKCMyOTA1KSIpCi0gICAgdGVzdGRpci5tYWtlcHlmaWxl
KAogICAgICAgICAiIiIKLSAgICAgICAgIyAtKi0gY29kaW5nOiB1dGY4IC0qLQotICAgICAgICBp
bXBvcnQgd2FybmluZ3MKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotCi0KLSAgICAgICAgQHB5dGVz
dC5maXh0dXJlCi0gICAgICAgIGRlZiBmaXgoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4o
dSLmtYvor5UiKQotICAgICAgICAgICAgeWllbGQKLQotICAgICAgICBAcHl0ZXN0Lm1hcmsuZmls
dGVyd2FybmluZ3MoJ2Fsd2F5cycpCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmMoZml4KToKLSAgICAg
ICAgICAgIHBhc3MKLSAgICAiIiIKICAgICApCiAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRl
c3QoKQogICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKICAgICAgICAgWwogICAgICAg
ICAgICAgIio9PSAlcyA9PSoiICUgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIsCi0gICAgICAgICAg
ICAiKnRlc3RfcHkyX3VuaWNvZGUucHk6ODogVXNlcldhcm5pbmc6IFxcdTZkNGJcXHU4YmQ1IiwK
LSAgICAgICAgICAgICcqd2FybmluZ3Mud2Fybih1Ilx1NmQ0Ylx1OGJkNSIpJywKLSAgICAgICAg
ICAgICIqd2FybmluZ3MucHk6KjogVW5pY29kZVdhcm5pbmc6IFdhcm5pbmcgaXMgdXNpbmcgdW5p
Y29kZSBub24qIiwKLSAgICAgICAgICAgICIqIDEgcGFzc2VkLCAyIHdhcm5pbmdzKiIsCi0gICAg
ICAgIF0KLSAgICApCi0KLQotZGVmIHRlc3RfcHkyX3VuaWNvZGVfYXNjaWkodGVzdGRpcik6Ci0g
ICAgIiIiRW5zdXJlIHRoYXQgb3VyIHdhcm5pbmcgYWJvdXQgJ3VuaWNvZGUgd2FybmluZ3MgY29u
dGFpbmluZyBub24tYXNjaWkgbWVzc2FnZXMnCi0gICAgZG9lcyBub3QgdHJpZ2dlciB3aXRoIGFz
Y2lpLWNvbnZlcnRpYmxlIG1lc3NhZ2VzIiIiCi0gICAgdGVzdGRpci5tYWtlaW5pKCJbcHl0ZXN0
XSIpCi0gICAgdGVzdGRpci5tYWtlcHlmaWxlKAotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0
IHB5dGVzdAotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLQotICAgICAgICBAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3MoJ2Fsd2F5cycpCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmMoKToKLSAgICAg
ICAgICAgIHdhcm5pbmdzLndhcm4odSJoZWxsbyIpCi0gICAgIiIiCi0gICAgKQotICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
Ci0gICAgICAgIFsKLSAgICAgICAgICAgICIqPT0gJXMgPT0qIiAlIFdBUk5JTkdTX1NVTU1BUllf
SEVBREVSLAotICAgICAgICAgICAgJyp3YXJuaW5ncy53YXJuKHUiaGVsbG8iKScsCi0gICAgICAg
ICAgICAiKiAxIHBhc3NlZCwgMSB3YXJuaW5ncyBpbioiLAorICAgICAgICAgICAgIip0ZXN0X3Vu
aWNvZGUucHk6NzogVXNlcldhcm5pbmc6IFx1NmQ0Ylx1OGJkNSoiLAorICAgICAgICAgICAgIiog
MSBwYXNzZWQsIDEgd2FybmluZyoiLAogICAgICAgICBdCiAgICAgKQogCkBAIC0yNDQsOSArMTc2
LDggQEAgZGVmIHRlc3Rfd29ya3Nfd2l0aF9maWx0ZXJ3YXJuaW5ncyh0ZXN0ZGlyKToKIAogQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJkZWZhdWx0X2NvbmZpZyIsIFsiaW5pIiwgImNtZGxpbmUi
XSkKIGRlZiB0ZXN0X2ZpbHRlcndhcm5pbmdzX21hcmsodGVzdGRpciwgZGVmYXVsdF9jb25maWcp
OgotICAgICIiIgotICAgIFRlc3QgYGBmaWx0ZXJ3YXJuaW5nc2BgIG1hcmsgd29ya3MgYW5kIHRh
a2VzIHByZWNlZGVuY2Ugb3ZlciBjb21tYW5kIGxpbmUgYW5kIGluaSBvcHRpb25zLgotICAgICIi
IgorICAgICIiIlRlc3QgYGBmaWx0ZXJ3YXJuaW5nc2BgIG1hcmsgd29ya3MgYW5kIHRha2VzIHBy
ZWNlZGVuY2Ugb3ZlciBjb21tYW5kCisgICAgbGluZSBhbmQgaW5pIG9wdGlvbnMuIiIiCiAgICAg
aWYgZGVmYXVsdF9jb25maWcgPT0gImluaSI6CiAgICAgICAgIHRlc3RkaXIubWFrZWluaSgKICAg
ICAgICAgICAgICIiIgpAQCAtMjcyLDE5ICsyMDMsNTcyIEBAIGRlZiB0ZXN0X2ZpbHRlcndhcm5p
bmdzX21hcmsodGVzdGRpciwgZGVmYXVsdF9jb25maWcpOgogICAgICIiIgogICAgICkKICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLVcgYWx3YXlzIiBpZiBkZWZhdWx0X2NvbmZpZyA9
PSAiY21kbGluZSIgZWxzZSAiIikKLSAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIq
PSAxIGZhaWxlZCwgMiBwYXNzZWQsIDEgd2FybmluZ3MgaW4gKiJdKQorICAgIHJlc3VsdC5zdGRv
dXQuZm5tYXRjaF9saW5lcyhbIio9IDEgZmFpbGVkLCAyIHBhc3NlZCwgMSB3YXJuaW5nIGluICoi
XSkKIAogCiBkZWYgdGVzdF9ub25fc3RyaW5nX3dhcm5pbmdfYXJndW1lbnQodGVzdGRpcik6CiAg
ICAgIiIiTm9uLXN0ciBhcmd1bWVudCBwYXNzZWQgdG8gd2FybmluZyBicmVha3MgcHl0ZXN0ICgj
Mjk1NikiIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIlwKKyAgICAgICAg
aW1wb3J0IHdhcm5pbmdzCisgICAgICAgIGltcG9ydCBweXRlc3QKKworICAgICAgICBkZWYgdGVz
dCgpOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybihVc2VyV2FybmluZygxLCAnZm9vJykpCisg
ICAgICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLVciLCAi
YWx3YXlzIikKKyAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqPSAxIHBhc3NlZCwg
MSB3YXJuaW5nIGluICoiXSkKKworCitkZWYgdGVzdF9maWx0ZXJ3YXJuaW5nc19tYXJrX3JlZ2lz
dHJhdGlvbih0ZXN0ZGlyKToKKyAgICAiIiJFbnN1cmUgZmlsdGVyd2FybmluZ3MgbWFyayBpcyBy
ZWdpc3RlcmVkIiIiCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAiIiIKKyAgICAg
ICAgaW1wb3J0IHB5dGVzdAorCisgICAgICAgIEBweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygn
ZXJyb3InKQorICAgICAgICBkZWYgdGVzdF9mdW5jKCk6CisgICAgICAgICAgICBwYXNzCisgICAg
IiIiCisgICAgKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItLXN0cmljdC1tYXJr
ZXJzIikKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSAwCisKKworQHB5dGVzdC5tYXJrLmZpbHRl
cndhcm5pbmdzKCJhbHdheXMiKQorZGVmIHRlc3Rfd2FybmluZ19jYXB0dXJlZF9ob29rKHRlc3Rk
aXIpOgorICAgIHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAiIiIKKyAgICAgICAgZGVm
IHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKKyAgICAgICAgICAgIGNvbmZpZy5pc3N1ZV9jb25m
aWdfdGltZV93YXJuaW5nKFVzZXJXYXJuaW5nKCJjb25maWcgd2FybmluZyIpLCBzdGFja2xldmVs
PTIpCisgICAgIiIiCisgICAgKQorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIi
CisgICAgICAgIGltcG9ydCBweXRlc3QsIHdhcm5pbmdzCisKKyAgICAgICAgd2FybmluZ3Mud2Fy
bihVc2VyV2FybmluZygiY29sbGVjdCB3YXJuaW5nIikpCisKKyAgICAgICAgQHB5dGVzdC5maXh0
dXJlCisgICAgICAgIGRlZiBmaXgoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oVXNlcldh
cm5pbmcoInNldHVwIHdhcm5pbmciKSkKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAg
IHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoInRlYXJkb3duIHdhcm5pbmciKSkKKworICAgICAg
ICBkZWYgdGVzdF9mdW5jKGZpeCk6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJu
aW5nKCJjYWxsIHdhcm5pbmciKSkKKyAgICAgICAgICAgIGFzc2VydCBmaXggPT0gMQorICAgICAg
ICAiIiIKKyAgICApCisKKyAgICBjb2xsZWN0ZWQgPSBbXQorCisgICAgY2xhc3MgV2FybmluZ0Nv
bGxlY3RvcjoKKyAgICAgICAgZGVmIHB5dGVzdF93YXJuaW5nX3JlY29yZGVkKHNlbGYsIHdhcm5p
bmdfbWVzc2FnZSwgd2hlbiwgbm9kZWlkLCBsb2NhdGlvbik6CisgICAgICAgICAgICBjb2xsZWN0
ZWQuYXBwZW5kKChzdHIod2FybmluZ19tZXNzYWdlLm1lc3NhZ2UpLCB3aGVuLCBub2RlaWQsIGxv
Y2F0aW9uKSkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KHBsdWdpbnM9W1dhcm5p
bmdDb2xsZWN0b3IoKV0pCisgICAgcmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzKFsiKjEgcGFz
c2VkKiJdKQorCisgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICgiY29uZmlnIHdhcm5pbmciLCAi
Y29uZmlnIiwgIiIpLAorICAgICAgICAoImNvbGxlY3Qgd2FybmluZyIsICJjb2xsZWN0IiwgIiIp
LAorICAgICAgICAoInNldHVwIHdhcm5pbmciLCAicnVudGVzdCIsICJ0ZXN0X3dhcm5pbmdfY2Fw
dHVyZWRfaG9vay5weTo6dGVzdF9mdW5jIiksCisgICAgICAgICgiY2FsbCB3YXJuaW5nIiwgInJ1
bnRlc3QiLCAidGVzdF93YXJuaW5nX2NhcHR1cmVkX2hvb2sucHk6OnRlc3RfZnVuYyIpLAorICAg
ICAgICAoInRlYXJkb3duIHdhcm5pbmciLCAicnVudGVzdCIsICJ0ZXN0X3dhcm5pbmdfY2FwdHVy
ZWRfaG9vay5weTo6dGVzdF9mdW5jIiksCisgICAgXQorICAgIGZvciBpbmRleCBpbiByYW5nZShs
ZW4oZXhwZWN0ZWQpKToKKyAgICAgICAgY29sbGVjdGVkX3Jlc3VsdCA9IGNvbGxlY3RlZFtpbmRl
eF0KKyAgICAgICAgZXhwZWN0ZWRfcmVzdWx0ID0gZXhwZWN0ZWRbaW5kZXhdCisKKyAgICAgICAg
YXNzZXJ0IGNvbGxlY3RlZF9yZXN1bHRbMF0gPT0gZXhwZWN0ZWRfcmVzdWx0WzBdLCBzdHIoY29s
bGVjdGVkKQorICAgICAgICBhc3NlcnQgY29sbGVjdGVkX3Jlc3VsdFsxXSA9PSBleHBlY3RlZF9y
ZXN1bHRbMV0sIHN0cihjb2xsZWN0ZWQpCisgICAgICAgIGFzc2VydCBjb2xsZWN0ZWRfcmVzdWx0
WzJdID09IGV4cGVjdGVkX3Jlc3VsdFsyXSwgc3RyKGNvbGxlY3RlZCkKKworICAgICAgICAjIE5P
VEU6IGNvbGxlY3RlZF9yZXN1bHRbM10gaXMgbG9jYXRpb24sIHdoaWNoIGRpZmZlcnMgYmFzZWQg
b24gdGhlIHBsYXRmb3JtIHlvdSBhcmUgb24KKyAgICAgICAgIyAgICAgICB0aHVzLCB0aGUgYmVz
dCB3ZSBjYW4gZG8gaGVyZSBpcyBhc3NlcnQgdGhlIHR5cGVzIG9mIHRoZSBwYXJlbWV0ZXJzIG1h
dGNoIHdoYXQgd2UgZXhwZWN0CisgICAgICAgICMgICAgICAgYW5kIG5vdCB0cnkgYW5kIHByZWxv
YWQgaXQgaW4gdGhlIGV4cGVjdGVkIGFycmF5CisgICAgICAgIGlmIGNvbGxlY3RlZF9yZXN1bHRb
M10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhc3NlcnQgdHlwZShjb2xsZWN0ZWRfcmVzdWx0
WzNdWzBdKSBpcyBzdHIsIHN0cihjb2xsZWN0ZWQpCisgICAgICAgICAgICBhc3NlcnQgdHlwZShj
b2xsZWN0ZWRfcmVzdWx0WzNdWzFdKSBpcyBpbnQsIHN0cihjb2xsZWN0ZWQpCisgICAgICAgICAg
ICBhc3NlcnQgdHlwZShjb2xsZWN0ZWRfcmVzdWx0WzNdWzJdKSBpcyBzdHIsIHN0cihjb2xsZWN0
ZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgY29sbGVjdGVkX3Jlc3VsdFsz
XSBpcyBOb25lLCBzdHIoY29sbGVjdGVkKQorCisKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5n
cygiYWx3YXlzIikKK2RlZiB0ZXN0X2NvbGxlY3Rpb25fd2FybmluZ3ModGVzdGRpcik6CisgICAg
IiIiQ2hlY2sgdGhhdCB3ZSBhbHNvIGNhcHR1cmUgd2FybmluZ3MgaXNzdWVkIGR1cmluZyB0ZXN0
IGNvbGxlY3Rpb24gKCMzMjUxKS4iIiIKICAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCiAgICAgICAg
ICIiIgogICAgICAgICBpbXBvcnQgd2FybmluZ3MKKworICAgICAgICB3YXJuaW5ncy53YXJuKFVz
ZXJXYXJuaW5nKCJjb2xsZWN0aW9uIHdhcm5pbmciKSkKKworICAgICAgICBkZWYgdGVzdF9mb28o
KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAiIiIKKyAgICApCisgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3QoKQorICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAg
WworICAgICAgICAgICAgIio9PSAlcyA9PSoiICUgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIsCisg
ICAgICAgICAgICAiICAqY29sbGVjdGlvbl93YXJuaW5ncy5weTozOiBVc2VyV2FybmluZzogY29s
bGVjdGlvbiB3YXJuaW5nIiwKKyAgICAgICAgICAgICcgICAgd2FybmluZ3Mud2FybihVc2VyV2Fy
bmluZygiY29sbGVjdGlvbiB3YXJuaW5nIikpJywKKyAgICAgICAgICAgICIqIDEgcGFzc2VkLCAx
IHdhcm5pbmcqIiwKKyAgICAgICAgXQorICAgICkKKworCitAcHl0ZXN0Lm1hcmsuZmlsdGVyd2Fy
bmluZ3MoImFsd2F5cyIpCitkZWYgdGVzdF9tYXJrX3JlZ2V4X2VzY2FwZSh0ZXN0ZGlyKToKKyAg
ICAiIiJAcHl0ZXN0Lm1hcmsuZmlsdGVyd2FybmluZ3Mgc2hvdWxkIG5vdCB0cnkgdG8gZXNjYXBl
IHJlZ2V4IGNoYXJhY3RlcnMgKCMzOTM2KSIiIgorICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAg
ICAgICAgciIiIgorICAgICAgICBpbXBvcnQgcHl0ZXN0LCB3YXJuaW5ncworCisgICAgICAgIEBw
eXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncyhyImlnbm9yZTpzb21lIFwod2FybmluZ1wpIikKKyAg
ICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJu
aW5nKCJzb21lICh3YXJuaW5nKSIpKQorICAgICIiIgorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0
ZGlyLnJ1bnB5dGVzdCgpCisgICAgYXNzZXJ0IFdBUk5JTkdTX1NVTU1BUllfSEVBREVSIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJk
ZWZhdWx0IikKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaWdub3JlX3B5dGVzdF93YXJuaW5n
cyIsIFsibm8iLCAiaW5pIiwgImNtZGxpbmUiXSkKK2RlZiB0ZXN0X2hpZGVfcHl0ZXN0X2ludGVy
bmFsX3dhcm5pbmdzKHRlc3RkaXIsIGlnbm9yZV9weXRlc3Rfd2FybmluZ3MpOgorICAgICIiIk1h
a2Ugc3VyZSB3ZSBjYW4gaWdub3JlIGludGVybmFsIHB5dGVzdCB3YXJuaW5ncyB1c2luZyBhIHdh
cm5pbmdzIGZpbHRlci4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIiIgog
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisgICAgICAgIGltcG9ydCB3YXJuaW5ncworCisgICAgICAg
IHdhcm5pbmdzLndhcm4ocHl0ZXN0LlB5dGVzdFdhcm5pbmcoInNvbWUgaW50ZXJuYWwgd2Fybmlu
ZyIpKQogCisgICAgICAgIGRlZiB0ZXN0X2JhcigpOgorICAgICAgICAgICAgcGFzcworICAgICIi
IgorICAgICkKKyAgICBpZiBpZ25vcmVfcHl0ZXN0X3dhcm5pbmdzID09ICJpbmkiOgorICAgICAg
ICB0ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFtweXRlc3Rd
CisgICAgICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9IGlnbm9yZTo6cHl0ZXN0LlB5dGVzdFdhcm5p
bmcKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICBhcmdzID0gKAorICAgICAgICBbIi1XIiwg
Imlnbm9yZTo6cHl0ZXN0LlB5dGVzdFdhcm5pbmciXQorICAgICAgICBpZiBpZ25vcmVfcHl0ZXN0
X3dhcm5pbmdzID09ICJjbWRsaW5lIgorICAgICAgICBlbHNlIFtdCisgICAgKQorICAgIHJlc3Vs
dCA9IHRlc3RkaXIucnVucHl0ZXN0KCphcmdzKQorICAgIGlmIGlnbm9yZV9weXRlc3Rfd2Fybmlu
Z3MgIT0gIm5vIjoKKyAgICAgICAgYXNzZXJ0IFdBUk5JTkdTX1NVTU1BUllfSEVBREVSIG5vdCBp
biByZXN1bHQuc3Rkb3V0LnN0cigpCisgICAgZWxzZToKKyAgICAgICAgcmVzdWx0LnN0ZG91dC5m
bm1hdGNoX2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICIqPT0gJXMgPT0q
IiAlIFdBUk5JTkdTX1NVTU1BUllfSEVBREVSLAorICAgICAgICAgICAgICAgICIqdGVzdF9oaWRl
X3B5dGVzdF9pbnRlcm5hbF93YXJuaW5ncy5weTo0OiBQeXRlc3RXYXJuaW5nOiBzb21lIGludGVy
bmFsIHdhcm5pbmciLAorICAgICAgICAgICAgICAgICIqIDEgcGFzc2VkLCAxIHdhcm5pbmcgKiIs
CisgICAgICAgICAgICBdCisgICAgICAgICkKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Imlnbm9yZV9vbl9jbWRsaW5lIiwgW1RydWUsIEZhbHNlXSkKK2RlZiB0ZXN0X29wdGlvbl9wcmVj
ZWRlbmNlX2NtZGxpbmVfb3Zlcl9pbmkodGVzdGRpciwgaWdub3JlX29uX2NtZGxpbmUpOgorICAg
ICIiIkZpbHRlcnMgZGVmaW5lZCBpbiB0aGUgY29tbWFuZC1saW5lIHNob3VsZCB0YWtlIHByZWNl
ZGVuY2Ugb3ZlciBmaWx0ZXJzIGluIGluaSBmaWxlcyAoIzM5NDYpLiIiIgorICAgIHRlc3RkaXIu
bWFrZWluaSgKKyAgICAgICAgIiIiCisgICAgICAgIFtweXRlc3RdCisgICAgICAgIGZpbHRlcndh
cm5pbmdzID0gZXJyb3IKKyAgICAiIiIKKyAgICApCisgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIGRlZiB0ZXN0KCk6
Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKDEsIHUnZm9vJykpCisgICAg
ICAgICAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKCdoZWxsbycpKQogICAgICIiIgogICAg
ICkKLSAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgiLVciLCAiYWx3YXlzIikKLSAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqPSAxIHBhc3NlZCwgMSB3YXJuaW5ncyBpbiAq
Il0pCisgICAgYXJncyA9IFsiLVciLCAiaWdub3JlIl0gaWYgaWdub3JlX29uX2NtZGxpbmUgZWxz
ZSBbXQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCphcmdzKQorICAgIGlmIGlnbm9y
ZV9vbl9jbWRsaW5lOgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqIDEg
cGFzc2VkIGluKiJdKQorICAgIGVsc2U6CisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5tYXRjaF9s
aW5lcyhbIiogMSBmYWlsZWQgaW4qIl0pCisKKworZGVmIHRlc3Rfb3B0aW9uX3ByZWNlZGVuY2Vf
bWFyayh0ZXN0ZGlyKToKKyAgICAiIiJGaWx0ZXJzIGRlZmluZWQgYnkgbWFya3Mgc2hvdWxkIGFs
d2F5cyB0YWtlIHByZWNlZGVuY2UgKCMzOTQ2KS4iIiIKKyAgICB0ZXN0ZGlyLm1ha2VpbmkoCisg
ICAgICAgICIiIgorICAgICAgICBbcHl0ZXN0XQorICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9IGln
bm9yZQorICAgICIiIgorICAgICkKKyAgICB0ZXN0ZGlyLm1ha2VweWZpbGUoCisgICAgICAgICIi
IgorICAgICAgICBpbXBvcnQgcHl0ZXN0LCB3YXJuaW5ncworICAgICAgICBAcHl0ZXN0Lm1hcmsu
ZmlsdGVyd2FybmluZ3MoJ2Vycm9yJykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAg
IHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcoJ2hlbGxvJykpCisgICAgIiIiCisgICAgKQorICAg
IHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCItVyIsICJpZ25vcmUiKQorICAgIHJlc3VsdC5z
dGRvdXQuZm5tYXRjaF9saW5lcyhbIiogMSBmYWlsZWQgaW4qIl0pCisKKworY2xhc3MgVGVzdERl
cHJlY2F0aW9uV2FybmluZ3NCeURlZmF1bHQ6CisgICAgIiIiCisgICAgTm90ZTogYWxsIHB5dGVz
dCBydW5zIGFyZSBleGVjdXRlZCBpbiBhIHN1YnByb2Nlc3Mgc28gd2UgZG9uJ3QgaW5oZXJpdCB3
YXJuaW5nIGZpbHRlcnMKKyAgICBmcm9tIHB5dGVzdCdzIG93biB0ZXN0IHN1aXRlCisgICAgIiIi
CisKKyAgICBkZWYgY3JlYXRlX2ZpbGUoc2VsZiwgdGVzdGRpciwgbWFyaz0iIik6CisgICAgICAg
IHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaW1wb3J0
IHB5dGVzdCwgd2FybmluZ3MKKworICAgICAgICAgICAgd2FybmluZ3Mud2FybihEZXByZWNhdGlv
bldhcm5pbmcoImNvbGxlY3Rpb24iKSkKKworICAgICAgICAgICAge21hcmt9CisgICAgICAgICAg
ICBkZWYgdGVzdF9mb28oKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKFBlbmRpbmdE
ZXByZWNhdGlvbldhcm5pbmcoInRlc3QgcnVuIikpCisgICAgICAgICIiIi5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgbWFyaz1tYXJrCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIEBw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgiY3VzdG9taXplX2ZpbHRlcnMiLCBbVHJ1ZSwgRmFsc2Vd
KQorICAgIGRlZiB0ZXN0X3Nob3duX2J5X2RlZmF1bHQoc2VsZiwgdGVzdGRpciwgY3VzdG9taXpl
X2ZpbHRlcnMpOgorICAgICAgICAiIiJTaG93IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGJ5IGRlZmF1
bHQsIGV2ZW4gaWYgdXNlciBoYXMgY3VzdG9taXplZCB0aGUgd2FybmluZ3MgZmlsdGVycyAoIzQw
MTMpLiIiIgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKHRlc3RkaXIpCisgICAgICAgIGlmIGN1
c3RvbWl6ZV9maWx0ZXJzOgorICAgICAgICAgICAgdGVzdGRpci5tYWtlaW5pKAorICAgICAgICAg
ICAgICAgICIiIgorICAgICAgICAgICAgICAgIFtweXRlc3RdCisgICAgICAgICAgICAgICAgZmls
dGVyd2FybmluZ3MgPQorICAgICAgICAgICAgICAgICAgICBvbmNlOjpVc2VyV2FybmluZworICAg
ICAgICAgICAgIiIiCisgICAgICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVu
cHl0ZXN0X3N1YnByb2Nlc3MoKQorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMo
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIio9PSAlcyA9PSoiICUgV0FSTklOR1Nf
U1VNTUFSWV9IRUFERVIsCisgICAgICAgICAgICAgICAgIip0ZXN0X3Nob3duX2J5X2RlZmF1bHQu
cHk6MzogRGVwcmVjYXRpb25XYXJuaW5nOiBjb2xsZWN0aW9uIiwKKyAgICAgICAgICAgICAgICAi
KnRlc3Rfc2hvd25fYnlfZGVmYXVsdC5weTo3OiBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nOiB0
ZXN0IHJ1biIsCisgICAgICAgICAgICAgICAgIiogMSBwYXNzZWQsIDIgd2FybmluZ3MqIiwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGlkZGVuX2J5X2luaShzZWxm
LCB0ZXN0ZGlyKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSh0ZXN0ZGlyKQorICAgICAgICB0
ZXN0ZGlyLm1ha2VpbmkoCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFtweXRlc3RdCisg
ICAgICAgICAgICBmaWx0ZXJ3YXJuaW5ncyA9CisgICAgICAgICAgICAgICAgaWdub3JlOjpEZXBy
ZWNhdGlvbldhcm5pbmcKKyAgICAgICAgICAgICAgICBpZ25vcmU6OlBlbmRpbmdEZXByZWNhdGlv
bldhcm5pbmcKKyAgICAgICAgIiIiCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRp
ci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgICAgIGFzc2VydCBXQVJOSU5HU19TVU1NQVJZ
X0hFQURFUiBub3QgaW4gcmVzdWx0LnN0ZG91dC5zdHIoKQorCisgICAgZGVmIHRlc3RfaGlkZGVu
X2J5X21hcmsoc2VsZiwgdGVzdGRpcik6CisgICAgICAgICIiIlNob3VsZCBoaWRlIHRoZSBkZXBy
ZWNhdGlvbiB3YXJuaW5nIGZyb20gdGhlIGZ1bmN0aW9uLCBidXQgdGhlIHdhcm5pbmcgZHVyaW5n
IGNvbGxlY3Rpb24gc2hvdWxkCisgICAgICAgIGJlIGRpc3BsYXllZCBub3JtYWxseS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoCisgICAgICAgICAgICB0ZXN0ZGlyLAor
ICAgICAgICAgICAgbWFyaz0nQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmU6OlBl
bmRpbmdEZXByZWNhdGlvbldhcm5pbmciKScsCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0g
dGVzdGRpci5ydW5weXRlc3Rfc3VicHJvY2VzcygpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcygKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiKj09ICVzID09KiIg
JSBXQVJOSU5HU19TVU1NQVJZX0hFQURFUiwKKyAgICAgICAgICAgICAgICAiKnRlc3RfaGlkZGVu
X2J5X21hcmsucHk6MzogRGVwcmVjYXRpb25XYXJuaW5nOiBjb2xsZWN0aW9uIiwKKyAgICAgICAg
ICAgICAgICAiKiAxIHBhc3NlZCwgMSB3YXJuaW5nKiIsCisgICAgICAgICAgICBdCisgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X2hpZGRlbl9ieV9jbWRsaW5lKHNlbGYsIHRlc3RkaXIpOgorICAg
ICAgICBzZWxmLmNyZWF0ZV9maWxlKHRlc3RkaXIpCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIu
cnVucHl0ZXN0X3N1YnByb2Nlc3MoCisgICAgICAgICAgICAiLVciLAorICAgICAgICAgICAgImln
bm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nIiwKKyAgICAgICAgICAgICItVyIsCisgICAgICAgICAg
ICAiaWdub3JlOjpQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIiwKKyAgICAgICAgKQorICAgICAg
ICBhc3NlcnQgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIgbm90IGluIHJlc3VsdC5zdGRvdXQuc3Ry
KCkKKworICAgIGRlZiB0ZXN0X2hpZGRlbl9ieV9zeXN0ZW0oc2VsZiwgdGVzdGRpciwgbW9ua2V5
cGF0Y2gpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKHRlc3RkaXIpCisgICAgICAgIG1vbmtl
eXBhdGNoLnNldGVudigiUFlUSE9OV0FSTklOR1MiLCAib25jZTo6VXNlcldhcm5pbmciKQorICAg
ICAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdF9zdWJwcm9jZXNzKCkKKyAgICAgICAgYXNz
ZXJ0IFdBUk5JTkdTX1NVTU1BUllfSEVBREVSIG5vdCBpbiByZXN1bHQuc3Rkb3V0LnN0cigpCisK
KworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJjaGFuZ2VfZGVmYXVsdCIsIFtOb25lLCAiaW5p
IiwgImNtZGxpbmUiXSkKK0BweXRlc3QubWFyay5za2lwKAorICAgIHJlYXNvbj0iVGhpcyB0ZXN0
IHNob3VsZCBiZSBlbmFibGVkIGFnYWluIGJlZm9yZSBweXRlc3QgNy4wIGlzIHJlbGVhc2VkIgor
KQorZGVmIHRlc3RfZGVwcmVjYXRpb25fd2FybmluZ19hc19lcnJvcih0ZXN0ZGlyLCBjaGFuZ2Vf
ZGVmYXVsdCk6CisgICAgIiIiVGhpcyBlbnN1cmVzIHRoYXQgUHl0ZXN0RGVwcmVjYXRpb25XYXJu
aW5ncyByYWlzZWQgYnkgcHl0ZXN0IGFyZSB0dXJuZWQgaW50byBlcnJvcnMuCisKKyAgICBUaGlz
IHRlc3Qgc2hvdWxkIGJlIGVuYWJsZWQgYXMgcGFydCBvZiBlYWNoIG1ham9yIHJlbGVhc2UsIGFu
ZCBza2lwcGVkIGFnYWluIGFmdGVyd2FyZHMKKyAgICB0byBlbnN1cmUgb3VyIGRlcHJlY2F0aW9u
cyBhcmUgdHVybmluZyBpbnRvIHdhcm5pbmdzIGFzIGV4cGVjdGVkLgorICAgICIiIgorICAgIHRl
c3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCB3YXJuaW5ncywg
cHl0ZXN0CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKHB5
dGVzdC5QeXRlc3REZXByZWNhdGlvbldhcm5pbmcoInNvbWUgd2FybmluZyIpKQorICAgICIiIgor
ICAgICkKKyAgICBpZiBjaGFuZ2VfZGVmYXVsdCA9PSAiaW5pIjoKKyAgICAgICAgdGVzdGRpci5t
YWtlaW5pKAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBbcHl0ZXN0XQorICAgICAgICAg
ICAgZmlsdGVyd2FybmluZ3MgPQorICAgICAgICAgICAgICAgIGlnbm9yZTo6cHl0ZXN0LlB5dGVz
dERlcHJlY2F0aW9uV2FybmluZworICAgICAgICAiIiIKKyAgICAgICAgKQorCisgICAgYXJncyA9
ICgKKyAgICAgICAgKCItV2lnbm9yZTo6cHl0ZXN0LlB5dGVzdERlcHJlY2F0aW9uV2FybmluZyIs
KQorICAgICAgICBpZiBjaGFuZ2VfZGVmYXVsdCA9PSAiY21kbGluZSIKKyAgICAgICAgZWxzZSAo
KQorICAgICkKKyAgICByZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgqYXJncykKKyAgICBpZiBj
aGFuZ2VfZGVmYXVsdCBpcyBOb25lOgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGlu
ZXMoWyIqIDEgZmFpbGVkIGluICoiXSkKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgY2hhbmdl
X2RlZmF1bHQgaW4gKCJpbmkiLCAiY21kbGluZSIpCisgICAgICAgIHJlc3VsdC5zdGRvdXQuZm5t
YXRjaF9saW5lcyhbIiogMSBwYXNzZWQgaW4gKiJdKQorCisKK2NsYXNzIFRlc3RBc3NlcnRpb25X
YXJuaW5nczoKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGFzc2VydF9yZXN1bHRfd2FybnMo
cmVzdWx0LCBtc2cpOgorICAgICAgICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoWyIqUHl0
ZXN0QXNzZXJ0UmV3cml0ZVdhcm5pbmc6ICVzKiIgJSBtc2ddKQorCisgICAgZGVmIHRlc3RfdHVw
bGVfd2FybmluZyhzZWxmLCB0ZXN0ZGlyKToKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKAor
ICAgICAgICAgICAgIiIiXAorICAgICAgICAgICAgZGVmIHRlc3RfZm9vKCk6CisgICAgICAgICAg
ICAgICAgYXNzZXJ0ICgxLDIpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICBy
ZXN1bHQgPSB0ZXN0ZGlyLnJ1bnB5dGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0X3Jlc3VsdF93
YXJucygKKyAgICAgICAgICAgIHJlc3VsdCwgImFzc2VydGlvbiBpcyBhbHdheXMgdHJ1ZSwgcGVy
aGFwcyByZW1vdmUgcGFyZW50aGVzZXM/IgorICAgICAgICApCisKKworZGVmIHRlc3Rfd2Fybmlu
Z3NfY2hlY2tlcl90d2ljZSgpOgorICAgICIiIklzc3VlICM0NjE3IiIiCisgICAgZXhwZWN0YXRp
b24gPSBweXRlc3Qud2FybnMoVXNlcldhcm5pbmcpCisgICAgd2l0aCBleHBlY3RhdGlvbjoKKyAg
ICAgICAgd2FybmluZ3Mud2FybigiTWVzc2FnZSBBIiwgVXNlcldhcm5pbmcpCisgICAgd2l0aCBl
eHBlY3RhdGlvbjoKKyAgICAgICAgd2FybmluZ3Mud2FybigiTWVzc2FnZSBCIiwgVXNlcldhcm5p
bmcpCisKKworQHB5dGVzdC5tYXJrLmZpbHRlcndhcm5pbmdzKCJpZ25vcmU6OnB5dGVzdC5QeXRl
c3RFeHBlcmltZW50YWxBcGlXYXJuaW5nIikKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5ncygi
YWx3YXlzIikKK2RlZiB0ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UodGVzdGRpcik6Cisg
ICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoIndhcm5pbmdzL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlf
bWVzc2FnZS5weSIpCisgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgIHJlc3Vs
dC5zdGRvdXQuZm5tYXRjaF9saW5lcygKKyAgICAgICAgWworICAgICAgICAgICAgIio9PSAlcyA9
PSoiICUgV0FSTklOR1NfU1VNTUFSWV9IRUFERVIsCisgICAgICAgICAgICAidGVzdF9ncm91cF93
YXJuaW5nc19ieV9tZXNzYWdlLnB5Ojp0ZXN0X2Zvb1tbXTBbXV0iLAorICAgICAgICAgICAgInRl
c3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZS5weTo6dGVzdF9mb29bW10xW11dIiwKKyAgICAg
ICAgICAgICJ0ZXN0X2dyb3VwX3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6OnRlc3RfZm9vW1tdMltd
XSIsCisgICAgICAgICAgICAidGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5Ojp0ZXN0
X2Zvb1tbXTNbXV0iLAorICAgICAgICAgICAgInRlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2Fn
ZS5weTo6dGVzdF9mb29bW100W11dIiwKKyAgICAgICAgICAgICJ0ZXN0X2dyb3VwX3dhcm5pbmdz
X2J5X21lc3NhZ2UucHk6OnRlc3RfZm9vXzEiLAorICAgICAgICAgICAgIiAgKi90ZXN0X2dyb3Vw
X3dhcm5pbmdzX2J5X21lc3NhZ2UucHk6KjogVXNlcldhcm5pbmc6IGZvbyIsCisgICAgICAgICAg
ICAiICAgIHdhcm5pbmdzLndhcm4oVXNlcldhcm5pbmcobXNnKSkiLAorICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAidGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5Ojp0ZXN0X2Jh
cltbXTBbXV0iLAorICAgICAgICAgICAgInRlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZS5w
eTo6dGVzdF9iYXJbW10xW11dIiwKKyAgICAgICAgICAgICJ0ZXN0X2dyb3VwX3dhcm5pbmdzX2J5
X21lc3NhZ2UucHk6OnRlc3RfYmFyW1tdMltdXSIsCisgICAgICAgICAgICAidGVzdF9ncm91cF93
YXJuaW5nc19ieV9tZXNzYWdlLnB5Ojp0ZXN0X2JhcltbXTNbXV0iLAorICAgICAgICAgICAgInRl
c3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZS5weTo6dGVzdF9iYXJbW100W11dIiwKKyAgICAg
ICAgICAgICIgICovdGVzdF9ncm91cF93YXJuaW5nc19ieV9tZXNzYWdlLnB5Oio6IFVzZXJXYXJu
aW5nOiBiYXIiLAorICAgICAgICAgICAgIiAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKG1z
ZykpIiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgIi0tIERvY3M6ICoiLAorICAgICAg
ICAgICAgIio9IDExIHBhc3NlZCwgMTEgd2FybmluZ3MgKiIsCisgICAgICAgIF0sCisgICAgICAg
IGNvbnNlY3V0aXZlPVRydWUsCisgICAgKQorCisKK0BweXRlc3QubWFyay5maWx0ZXJ3YXJuaW5n
cygiaWdub3JlOjpweXRlc3QuUHl0ZXN0RXhwZXJpbWVudGFsQXBpV2FybmluZyIpCitAcHl0ZXN0
Lm1hcmsuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIpCitkZWYgdGVzdF9ncm91cF93YXJuaW5nc19i
eV9tZXNzYWdlX3N1bW1hcnkodGVzdGRpcik6CisgICAgdGVzdGRpci5jb3B5X2V4YW1wbGUoIndh
cm5pbmdzL3Rlc3RfZ3JvdXBfd2FybmluZ3NfYnlfbWVzc2FnZV9zdW1tYXJ5IikKKyAgICB0ZXN0
ZGlyLnN5c3BhdGhpbnNlcnQoKQorICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0KCkKKyAg
ICByZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgIFsKKyAgICAgICAgICAgICIq
PT0gJXMgPT0qIiAlIFdBUk5JTkdTX1NVTU1BUllfSEVBREVSLAorICAgICAgICAgICAgInRlc3Rf
MS5weTogMjEgd2FybmluZ3MiLAorICAgICAgICAgICAgInRlc3RfMi5weTogMSB3YXJuaW5nIiwK
KyAgICAgICAgICAgICIgICovdGVzdF8xLnB5Ojc6IFVzZXJXYXJuaW5nOiBmb28iLAorICAgICAg
ICAgICAgIiAgICB3YXJuaW5ncy53YXJuKFVzZXJXYXJuaW5nKG1zZykpIiwKKyAgICAgICAgICAg
ICIiLAorICAgICAgICAgICAgInRlc3RfMS5weTogMjAgd2FybmluZ3MiLAorICAgICAgICAgICAg
IiAgKi90ZXN0XzEucHk6NzogVXNlcldhcm5pbmc6IGJhciIsCisgICAgICAgICAgICAiICAgIHdh
cm5pbmdzLndhcm4oVXNlcldhcm5pbmcobXNnKSkiLAorICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAiLS0gRG9jczogKiIsCisgICAgICAgICAgICAiKj0gNDIgcGFzc2VkLCA0MiB3YXJuaW5n
cyAqIiwKKyAgICAgICAgXSwKKyAgICAgICAgY29uc2VjdXRpdmU9VHJ1ZSwKKyAgICApCisKKwor
ZGVmIHRlc3RfcHl0ZXN0X2NvbmZpZ3VyZV93YXJuaW5nKHRlc3RkaXIsIHJlY3dhcm4pOgorICAg
ICIiIklzc3VlIDUxMTUuIiIiCisgICAgdGVzdGRpci5tYWtlY29uZnRlc3QoCisgICAgICAgICIi
IgorICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZSgpOgorICAgICAgICAgICAgaW1wb3J0IHdh
cm5pbmdzCisKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImZyb20gcHl0ZXN0X2NvbmZpZ3Vy
ZSIpCisgICAgICAgICIiIgorICAgICkKKworICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
KCkKKyAgICBhc3NlcnQgcmVzdWx0LnJldCA9PSA1CisgICAgYXNzZXJ0ICJJTlRFUk5BTEVSUk9S
IiBub3QgaW4gcmVzdWx0LnN0ZGVyci5zdHIoKQorICAgIHdhcm5pbmcgPSByZWN3YXJuLnBvcCgp
CisgICAgYXNzZXJ0IHN0cih3YXJuaW5nLm1lc3NhZ2UpID09ICJmcm9tIHB5dGVzdF9jb25maWd1
cmUiCisKKworY2xhc3MgVGVzdFN0YWNrTGV2ZWw6CisgICAgQHB5dGVzdC5maXh0dXJlCisgICAg
ZGVmIGNhcHdhcm4oc2VsZiwgdGVzdGRpcik6CisgICAgICAgIGNsYXNzIENhcHR1cmVkV2Fybmlu
Z3M6CisgICAgICAgICAgICBjYXB0dXJlZCA9ICgKKyAgICAgICAgICAgICAgICBbXQorICAgICAg
ICAgICAgKSAgIyB0eXBlOiBMaXN0W1R1cGxlW3dhcm5pbmdzLldhcm5pbmdNZXNzYWdlLCBPcHRp
b25hbFtUdXBsZVtzdHIsIGludCwgc3RyXV1dXQorCisgICAgICAgICAgICBAY2xhc3NtZXRob2QK
KyAgICAgICAgICAgIGRlZiBweXRlc3Rfd2FybmluZ19yZWNvcmRlZChjbHMsIHdhcm5pbmdfbWVz
c2FnZSwgd2hlbiwgbm9kZWlkLCBsb2NhdGlvbik6CisgICAgICAgICAgICAgICAgY2xzLmNhcHR1
cmVkLmFwcGVuZCgod2FybmluZ19tZXNzYWdlLCBsb2NhdGlvbikpCisKKyAgICAgICAgdGVzdGRp
ci5wbHVnaW5zID0gW0NhcHR1cmVkV2FybmluZ3MoKV0KKworICAgICAgICByZXR1cm4gQ2FwdHVy
ZWRXYXJuaW5ncworCisgICAgZGVmIHRlc3RfaXNzdWU0NDQ1X3Jld3JpdGUoc2VsZiwgdGVzdGRp
ciwgY2Fwd2Fybik6CisgICAgICAgICIiIiM0NDQ1OiBNYWtlIHN1cmUgdGhlIHdhcm5pbmcgcG9p
bnRzIHRvIGEgcmVhc29uYWJsZSBsb2NhdGlvbgorICAgICAgICBTZWUgb3JpZ2luIG9mIF9pc3N1
ZV93YXJuaW5nX2NhcHR1cmVkIGF0OiBfcHl0ZXN0LmFzc2VydGlvbi5yZXdyaXRlLnB5OjI0MQor
ICAgICAgICAiIiIKKyAgICAgICAgdGVzdGRpci5tYWtlcHlmaWxlKHNvbWVfbW9kPSIiKQorICAg
ICAgICBjb25mdGVzdCA9IHRlc3RkaXIubWFrZWNvbmZ0ZXN0KAorICAgICAgICAgICAgIiIiCisg
ICAgICAgICAgICAgICAgaW1wb3J0IHNvbWVfbW9kCisgICAgICAgICAgICAgICAgaW1wb3J0IHB5
dGVzdAorCisgICAgICAgICAgICAgICAgcHl0ZXN0LnJlZ2lzdGVyX2Fzc2VydF9yZXdyaXRlKCJz
b21lX21vZCIpCisgICAgICAgICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLnBh
cnNlY29uZmlnKCkKKworICAgICAgICAjIHdpdGggc3RhY2tsZXZlbD01IHRoZSB3YXJuaW5nIG9y
aWdpbmF0ZXMgZnJvbSByZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZQorICAgICAgICAjIGZ1bmN0aW9u
IGluIHRoZSBjcmVhdGVkIGNvbmZ0ZXN0LnB5CisgICAgICAgIGFzc2VydCBsZW4oY2Fwd2Fybi5j
YXB0dXJlZCkgPT0gMQorICAgICAgICB3YXJuaW5nLCBsb2NhdGlvbiA9IGNhcHdhcm4uY2FwdHVy
ZWQucG9wKCkKKyAgICAgICAgZmlsZSwgbGluZW5vLCBmdW5jID0gbG9jYXRpb24KKworICAgICAg
ICBhc3NlcnQgIk1vZHVsZSBhbHJlYWR5IGltcG9ydGVkIiBpbiBzdHIod2FybmluZy5tZXNzYWdl
KQorICAgICAgICBhc3NlcnQgZmlsZSA9PSBzdHIoY29uZnRlc3QpCisgICAgICAgIGFzc2VydCBm
dW5jID09ICI8bW9kdWxlPiIgICMgdGhlIGFib3ZlIGNvbmZ0ZXN0LnB5CisgICAgICAgIGFzc2Vy
dCBsaW5lbm8gPT0gNAorCisgICAgZGVmIHRlc3RfaXNzdWU0NDQ1X3ByZXBhcnNlKHNlbGYsIHRl
c3RkaXIsIGNhcHdhcm4pOgorICAgICAgICAiIiIjNDQ0NTogTWFrZSBzdXJlIHRoZSB3YXJuaW5n
IHBvaW50cyB0byBhIHJlYXNvbmFibGUgbG9jYXRpb24KKyAgICAgICAgU2VlIG9yaWdpbiBvZiBf
aXNzdWVfd2FybmluZ19jYXB0dXJlZCBhdDogX3B5dGVzdC5jb25maWcuX19pbml0X18ucHk6OTEw
CisgICAgICAgICIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAg
ICIiIgorICAgICAgICAgICAgaW1wb3J0IG5vdGhpbmcKKyAgICAgICAgICAgICIiIgorICAgICAg
ICApCisgICAgICAgIHRlc3RkaXIucGFyc2Vjb25maWcoIi0taGVscCIpCisKKyAgICAgICAgIyB3
aXRoIHN0YWNrbGV2ZWw9MiB0aGUgd2FybmluZyBzaG91bGQgb3JpZ2luYXRlIGZyb20gY29uZmln
Ll9wcmVwYXJzZSBhbmQgaXMKKyAgICAgICAgIyB0aHJvd24gYnkgYW4gZXJyb3JuZW91cyBjb25m
dGVzdC5weQorICAgICAgICBhc3NlcnQgbGVuKGNhcHdhcm4uY2FwdHVyZWQpID09IDEKKyAgICAg
ICAgd2FybmluZywgbG9jYXRpb24gPSBjYXB3YXJuLmNhcHR1cmVkLnBvcCgpCisgICAgICAgIGZp
bGUsIF8sIGZ1bmMgPSBsb2NhdGlvbgorCisgICAgICAgIGFzc2VydCAiY291bGQgbm90IGxvYWQg
aW5pdGlhbCBjb25mdGVzdHMiIGluIHN0cih3YXJuaW5nLm1lc3NhZ2UpCisgICAgICAgIGFzc2Vy
dCAiY29uZmlne3NlcH1fX2luaXRfXy5weSIuZm9ybWF0KHNlcD1vcy5zZXApIGluIGZpbGUKKyAg
ICAgICAgYXNzZXJ0IGZ1bmMgPT0gIl9wcmVwYXJzZSIKKworICAgIEBweXRlc3QubWFyay5maWx0
ZXJ3YXJuaW5ncygiZGVmYXVsdCIpCisgICAgZGVmIHRlc3RfY29uZnRlc3Rfd2FybmluZ19jYXB0
dXJlZChzZWxmLCB0ZXN0ZGlyOiBUZXN0ZGlyKSAtPiBOb25lOgorICAgICAgICAiIiJXYXJuaW5n
cyByYWlzZWQgZHVyaW5nIGltcG9ydGluZyBvZiBjb25mdGVzdC5weSBmaWxlcyBpcyBjYXB0dXJl
ZCAoIzI4OTEpLiIiIgorICAgICAgICB0ZXN0ZGlyLm1ha2Vjb25mdGVzdCgKKyAgICAgICAgICAg
ICIiIgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53
YXJuKFVzZXJXYXJuaW5nKCJteSBjdXN0b20gd2FybmluZyIpKQorICAgICAgICAgICAgIiIiCisg
ICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gdGVzdGRpci5ydW5weXRlc3QoKQorICAgICAgICBy
ZXN1bHQuc3Rkb3V0LmZubWF0Y2hfbGluZXMoCisgICAgICAgICAgICBbImNvbmZ0ZXN0LnB5OjIi
LCAiKlVzZXJXYXJuaW5nOiBteSBjdXN0b20gd2FybmluZyoiXQorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9pc3N1ZTQ0NDVfaW1wb3J0X3BsdWdpbihzZWxmLCB0ZXN0ZGlyLCBjYXB3YXJuKToK
KyAgICAgICAgIiIiIzQ0NDU6IE1ha2Ugc3VyZSB0aGUgd2FybmluZyBwb2ludHMgdG8gYSByZWFz
b25hYmxlIGxvY2F0aW9uIiIiCisgICAgICAgIHRlc3RkaXIubWFrZXB5ZmlsZSgKKyAgICAgICAg
ICAgIHNvbWVfcGx1Z2luPSIiIgorICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAorICAgICAgICAg
ICAgcHl0ZXN0LnNraXAoInRoaW5nIiwgYWxsb3dfbW9kdWxlX2xldmVsPVRydWUpCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgKQorICAgICAgICB0ZXN0ZGlyLnN5c3BhdGhpbnNlcnQoKQorICAg
ICAgICB0ZXN0ZGlyLnBhcnNlY29uZmlnKCItcCIsICJzb21lX3BsdWdpbiIpCisKKyAgICAgICAg
IyB3aXRoIHN0YWNrbGV2ZWw9MiB0aGUgd2FybmluZyBzaG91bGQgb3JpZ2luYXRlIGZyb20KKyAg
ICAgICAgIyBjb25maWcuUHl0ZXN0UGx1Z2luTWFuYWdlci5pbXBvcnRfcGx1Z2luIGlzIHRocm93
biBieSBhIHNraXBwZWQgcGx1Z2luCisKKyAgICAgICAgYXNzZXJ0IGxlbihjYXB3YXJuLmNhcHR1
cmVkKSA9PSAxCisgICAgICAgIHdhcm5pbmcsIGxvY2F0aW9uID0gY2Fwd2Fybi5jYXB0dXJlZC5w
b3AoKQorICAgICAgICBmaWxlLCBfLCBmdW5jID0gbG9jYXRpb24KKworICAgICAgICBhc3NlcnQg
InNraXBwZWQgcGx1Z2luICdzb21lX3BsdWdpbic6IHRoaW5nIiBpbiBzdHIod2FybmluZy5tZXNz
YWdlKQorICAgICAgICBhc3NlcnQgImNvbmZpZ3tzZXB9X19pbml0X18ucHkiLmZvcm1hdChzZXA9
b3Muc2VwKSBpbiBmaWxlCisgICAgICAgIGFzc2VydCBmdW5jID09ICJfd2Fybl9hYm91dF9za2lw
cGVkX3BsdWdpbnMiCisKKyAgICBkZWYgdGVzdF9pc3N1ZTQ0NDVfaXNzdWU1OTI4X21hcmtfZ2Vu
ZXJhdG9yKHNlbGYsIHRlc3RkaXIpOgorICAgICAgICAiIiIjNDQ0NSBhbmQgIzU5Mjg6IE1ha2Ug
c3VyZSB0aGUgd2FybmluZyBmcm9tIGFuIHVua25vd24gbWFyayBwb2ludHMgdG8KKyAgICAgICAg
dGhlIHRlc3QgZmlsZSB3aGVyZSB0aGlzIG1hcmsgaXMgdXNlZC4KKyAgICAgICAgIiIiCisgICAg
ICAgIHRlc3RmaWxlID0gdGVzdGRpci5tYWtlcHlmaWxlKAorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBpbXBvcnQgcHl0ZXN0CisKKyAgICAgICAgICAgIEBweXRlc3QubWFyay51bmtub3du
CisgICAgICAgICAgICBkZWYgdGVzdF9pdCgpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAg
ICAgICAgICIiIgorICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHRlc3RkaXIucnVucHl0ZXN0
X3N1YnByb2Nlc3MoKQorICAgICAgICAjIHdpdGggc3RhY2tsZXZlbD0yIHRoZSB3YXJuaW5nIHNo
b3VsZCBvcmlnaW5hdGUgZnJvbSB0aGUgYWJvdmUgY3JlYXRlZCB0ZXN0IGZpbGUKKyAgICAgICAg
cmVzdWx0LnN0ZG91dC5mbm1hdGNoX2xpbmVzX3JhbmRvbSgKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAiKnt0ZXN0ZmlsZX06MyoiLmZvcm1hdCh0ZXN0ZmlsZT1zdHIodGVzdGZpbGUp
KSwKKyAgICAgICAgICAgICAgICAiKlVua25vd24gcHl0ZXN0Lm1hcmsudW5rbm93bioiLAorICAg
ICAgICAgICAgXQorICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3R5
cGluZ19jaGVja3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3R5cGluZ19jaGVja3MucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYTZiNWFkMjg0MTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3R5cGluZ19jaGVja3MucHkKQEAgLTAs
MCArMSwyNCBAQAorIiIiRmlsZSBmb3IgY2hlY2tpbmcgdHlwaW5nIGlzc3Vlcy4KKworVGhpcyBm
aWxlIGlzIG5vdCBleGVjdXRlZCwgaXQgaXMgb25seSBjaGVja2VkIGJ5IG15cHkgdG8gZW5zdXJl
IHRoYXQKK25vbmUgb2YgdGhlIGNvZGUgdHJpZ2dlcnMgYW55IG15cHkgZXJyb3JzLgorIiIiCitp
bXBvcnQgcHl0ZXN0CisKKworIyBJc3N1ZSAjNzQ4OC4KK0BweXRlc3QubWFyay54ZmFpbChyYWlz
ZXM9UnVudGltZUVycm9yKQorZGVmIGNoZWNrX21hcmtfeGZhaWxfcmFpc2VzKCkgLT4gTm9uZToK
KyAgICBwYXNzCisKKworIyBJc3N1ZSAjNzQ5NC4KK0BweXRlc3QuZml4dHVyZShwYXJhbXM9Wygw
LCAwKSwgKDEsIDEpXSwgaWRzPWxhbWJkYSB4OiBzdHIoeFswXSkpCitkZWYgY2hlY2tfZml4dHVy
ZV9pZHNfY2FsbGFibGUoKSAtPiBOb25lOgorICAgIHBhc3MKKworCisjIElzc3VlICM3NDk0Lgor
QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmdW5jIiwgW3N0ciwgaW50XSwgaWRzPWxhbWJkYSB4
OiBzdHIoeC5fX25hbWVfXykpCitkZWYgY2hlY2tfcGFyYW1ldHJpemVfaWRzX2NhbGxhYmxlKGZ1
bmMpIC0+IE5vbmU6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNzc3YTkyYzM3Yy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw1
MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2FjY2VwdGFuY2VfdGVzdC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZGVwcmVjYXRlZF90ZXN0LnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X2FyZ2NvbXBsZXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2Fz
c2VydGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hc3NlcnRyZXdyaXRlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhY2hlcHJvdmlkZXIucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3Rlc3RfY2FwdHVyZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb2xsZWN0
aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbXBhdC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY29uZnRl
c3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZG9jdGVzdC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9lbnRyeV9wb2ludHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rf
aGVscGNvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9qdW5pdHhtbC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tYXJrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0
X21vZGltcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tb25rZXlwYXRjaC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ub2Rlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
dGVzdF9ub3NlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3BhcnNlb3B0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy90ZXN0X3Bhc3RlYmluLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90
ZXN0X3BkYi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wbHVnaW5tYW5hZ2VyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3B5dGVzdGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X3JlY3dhcm4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVzdWx0bG9nLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3J1bm5lci5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvdGVzdF9ydW5uZXJfeHVuaXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfc2Vzc2lv
bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9za2lwcGluZy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF90ZXJtaW5hbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF90bXBk
aXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfdW5pdHRlc3QucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC90ZXN0aW5nL3Rlc3Rfd2FybmluZ3MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3RveC5p
bmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90b3guaW5pCmluZGV4IGNiMzg0NmQ1NDIyYS4uYjQyYWVjZGY4NWNm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90b3guaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3RveC5p
bmkKQEAgLTEsMjEyICsxLDIxMiBAQAogW3RveF0KLW1pbnZlcnNpb24gPSAyLjAKK2lzb2xhdGVk
X2J1aWxkID0gVHJ1ZQorbWludmVyc2lvbiA9IDMuNS4zCiBkaXN0c2hhcmUgPSB7aG9tZWRpcn0v
LnRveC9kaXN0c2hhcmUKICMgbWFrZSBzdXJlIHRvIHVwZGF0ZSBlbnZpcm9ubWVudCBsaXN0IGlu
IHRyYXZpcy55bWwgYW5kIGFwcHZleW9yLnltbAogZW52bGlzdCA9CiAgICAgbGludGluZwotICAg
IHB5MjcKLSAgICBweTM0CiAgICAgcHkzNQogICAgIHB5MzYKICAgICBweTM3Ci0gICAgcHlweQot
ICAgIHtweTI3LHB5MzZ9LXtwZXhwZWN0LHhkaXN0LHRyaWFsLG51bXB5LHBsdWdneW1hc3Rlcn0K
LSAgICBweTI3LW5vYnl0ZQorICAgIHB5MzgKKyAgICBweTM5CisgICAgcHlweTMKKyAgICBweTM3
LXtwZXhwZWN0LHhkaXN0LHVuaXR0ZXN0ZXh0cmFzLG51bXB5LHBsdWdneW1hc3Rlcn0KICAgICBk
b2N0ZXN0aW5nCi0gICAgcHkzNi1mcmVlemUKKyAgICBwbHVnaW5zCisgICAgcHkzNy1mcmVlemUK
ICAgICBkb2NzCisgICAgZG9jcy1jaGVja2xpbmtzCiAKIFt0ZXN0ZW52XQotY29tbWFuZHMgPSBw
eXRlc3QgLS1sc29mIC1yYSB7cG9zYXJnczp0ZXN0aW5nfQotcGFzc2VudiA9IFVTRVIgVVNFUk5B
TUUKLWRlcHMgPQotICAgIGh5cG90aGVzaXM+PTMuNTYKLSAgICBub3NlCi0gICAgbW9jawotICAg
IHJlcXVlc3RzCi0KLVt0ZXN0ZW52OnB5Mjctc3VicHJvY2Vzc10KLWNoYW5nZWRpciA9IC4KLWRl
cHMgPQotICAgIHB5dGVzdC14ZGlzdD49MS4xMwotICAgIG1vY2sKLSAgICBub3NlCiBjb21tYW5k
cyA9Ci0gICAgcHl0ZXN0IC1uMyAtcmEgLS1ydW5weXRlc3Q9c3VicHJvY2VzcyB7cG9zYXJnczp0
ZXN0aW5nfQotCi0KLVt0ZXN0ZW52OmxpbnRpbmddCi1za2lwc2Rpc3QgPSBUcnVlCi11c2VkZXZl
bG9wID0gVHJ1ZQotYmFzZXB5dGhvbiA9IHB5dGhvbjMuNgotZGVwcyA9IHByZS1jb21taXQKLWNv
bW1hbmRzID0gcHJlLWNvbW1pdCBydW4gLS1hbGwtZmlsZXMgLS1zaG93LWRpZmYtb24tZmFpbHVy
ZQorICAgIHtlbnY6X1BZVEVTVF9UT1hfQ09WRVJBR0VfUlVOOn0gcHl0ZXN0IHtwb3NhcmdzOntl
bnY6X1BZVEVTVF9UT1hfREVGQVVMVF9QT1NBUkdTOn19CisgICAgZG9jdGVzdGluZzoge2Vudjpf
UFlURVNUX1RPWF9DT1ZFUkFHRV9SVU46fSBweXRlc3QgLS1kb2N0ZXN0LW1vZHVsZXMgLS1weWFy
Z3MgX3B5dGVzdAorICAgIGNvdmVyYWdlOiBjb3ZlcmFnZSBjb21iaW5lCisgICAgY292ZXJhZ2U6
IGNvdmVyYWdlIHJlcG9ydCAtbQorcGFzc2VudiA9IFVTRVIgVVNFUk5BTUUgQ09WRVJBR0VfKiBU
UkFWSVMgUFlURVNUX0FERE9QVFMgVEVSTQorc2V0ZW52ID0KKyAgICBfUFlURVNUX1RPWF9ERUZB
VUxUX1BPU0FSR1M9e2VudjpfUFlURVNUX1RPWF9QT1NBUkdTX0RPQ1RFU1RJTkc6fSB7ZW52Ol9Q
WVRFU1RfVE9YX1BPU0FSR1NfTFNPRjp9IHtlbnY6X1BZVEVTVF9UT1hfUE9TQVJHU19YRElTVDp9
CiAKLVt0ZXN0ZW52OnB5MjcteGRpc3RdCi1kZXBzID0KLSAgICBweXRlc3QteGRpc3Q+PTEuMTMK
LSAgICBtb2NrCi0gICAgbm9zZQotICAgIGh5cG90aGVzaXM+PTMuNTYKLWNoYW5nZWRpcj10ZXN0
aW5nCi1jb21tYW5kcyA9Ci0gICAgcHl0ZXN0IC1uOCAtcmEge3Bvc2FyZ3M6Ln0KKyAgICAjIENv
bmZpZ3VyYXRpb24gdG8gcnVuIHdpdGggY292ZXJhZ2Ugc2ltaWxhciB0byBDSSwgZS5nLgorICAg
ICMgInRveCAtZSBweTM3LWNvdmVyYWdlIi4KKyAgICBjb3ZlcmFnZTogX1BZVEVTVF9UT1hfQ09W
RVJBR0VfUlVOPWNvdmVyYWdlIHJ1biAtbQorICAgIGNvdmVyYWdlOiBfUFlURVNUX1RPWF9FWFRS
QV9ERVA9Y292ZXJhZ2UtZW5hYmxlLXN1YnByb2Nlc3MKKyAgICBjb3ZlcmFnZTogQ09WRVJBR0Vf
RklMRT17dG94aW5pZGlyfS8uY292ZXJhZ2UKKyAgICBjb3ZlcmFnZTogQ09WRVJBR0VfUFJPQ0VT
U19TVEFSVD17dG94aW5pZGlyfS8uY292ZXJhZ2VyYwogCi1bdGVzdGVudjpweTM2LXhkaXN0XQot
ZGVwcyA9IHtbdGVzdGVudjpweTI3LXhkaXN0XWRlcHN9Ci1jb21tYW5kcyA9IHtbdGVzdGVudjpw
eTI3LXhkaXN0XWNvbW1hbmRzfQorICAgIGRvY3Rlc3Rpbmc6IF9QWVRFU1RfVE9YX1BPU0FSR1Nf
RE9DVEVTVElORz1kb2MvZW4KIAotW3Rlc3RlbnY6cHkyNy1wZXhwZWN0XQotY2hhbmdlZGlyID0g
dGVzdGluZwotcGxhdGZvcm0gPSBsaW51eHxkYXJ3aW4KLWRlcHMgPSBwZXhwZWN0Ci1jb21tYW5k
cyA9Ci0gICAgcHl0ZXN0IC1yYSB0ZXN0X3BkYi5weSB0ZXN0X3Rlcm1pbmFsLnB5IHRlc3RfdW5p
dHRlc3QucHkKKyAgICBub2J5dGU6IFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEKIAotW3Rlc3Rl
bnY6cHkzNi1wZXhwZWN0XQotY2hhbmdlZGlyID0ge1t0ZXN0ZW52OnB5MjctcGV4cGVjdF1jaGFu
Z2VkaXJ9Ci1wbGF0Zm9ybSA9IHtbdGVzdGVudjpweTI3LXBleHBlY3RdcGxhdGZvcm19Ci1kZXBz
ID0ge1t0ZXN0ZW52OnB5MjctcGV4cGVjdF1kZXBzfQotY29tbWFuZHMgPSB7W3Rlc3RlbnY6cHky
Ny1wZXhwZWN0XWNvbW1hbmRzfQorICAgIGxzb2Y6IF9QWVRFU1RfVE9YX1BPU0FSR1NfTFNPRj0t
LWxzb2YKIAotW3Rlc3RlbnY6cHkyNy1ub2J5dGVdCisgICAgeGRpc3Q6IF9QWVRFU1RfVE9YX1BP
U0FSR1NfWERJU1Q9LW4gYXV0bworZXh0cmFzID0gdGVzdGluZwogZGVwcyA9Ci0gICAgcHl0ZXN0
LXhkaXN0Pj0xLjEzCi0gICAgaHlwb3RoZXNpcz49My41NgotICAgIG1vY2sKLWRpc3RyaWJ1dGUg
PSB0cnVlCi1jaGFuZ2VkaXI9dGVzdGluZwotc2V0ZW52ID0KLSAgICBQWVRIT05ET05UV1JJVEVC
WVRFQ09ERT0xCi1jb21tYW5kcyA9Ci0gICAgcHl0ZXN0IC1uMyAtcmEge3Bvc2FyZ3M6Ln0KLQot
W3Rlc3RlbnY6cHkyNy10cmlhbF0KLWRlcHMgPSB0d2lzdGVkCi1jb21tYW5kcyA9Ci0gICAgcHl0
ZXN0IC1yYSB7cG9zYXJnczp0ZXN0aW5nL3Rlc3RfdW5pdHRlc3QucHl9CisgICAgZG9jdGVzdGlu
ZzogUHlZQU1MCisgICAgb2xkYXR0cnM6IGF0dHJzPT0xNy40LjAKKyAgICBvbGRhdHRyczogaHlw
b3RoZXNpczw9NC4zOC4xCisgICAgbnVtcHk6IG51bXB5CisgICAgcGV4cGVjdDogcGV4cGVjdAor
ICAgIHBsdWdneW1hc3RlcjogZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdn
eS5naXRAbWFzdGVyCisgICAgcHlnbWVudHMKKyAgICB1bml0dGVzdGV4dHJhczogdHdpc3RlZAor
ICAgIHVuaXR0ZXN0ZXh0cmFzOiBhc3luY3Rlc3QKKyAgICB4ZGlzdDogcHl0ZXN0LXhkaXN0Pj0x
LjEzCisgICAge2VudjpfUFlURVNUX1RPWF9FWFRSQV9ERVA6fQogCi1bdGVzdGVudjpweTM2LXRy
aWFsXQotZGVwcyA9IHtbdGVzdGVudjpweTI3LXRyaWFsXWRlcHN9Ci1jb21tYW5kcyA9IHtbdGVz
dGVudjpweTI3LXRyaWFsXWNvbW1hbmRzfQotCi1bdGVzdGVudjpweTI3LW51bXB5XQotZGVwcyA9
IG51bXB5Ci1jb21tYW5kcz0KLSAgcHl0ZXN0IC1yYSB7cG9zYXJnczp0ZXN0aW5nL3B5dGhvbi9h
cHByb3gucHl9CitbdGVzdGVudjpsaW50aW5nXQorc2tpcF9pbnN0YWxsID0gVHJ1ZQorYmFzZXB5
dGhvbiA9IHB5dGhvbjMKK2RlcHMgPSBwcmUtY29tbWl0Pj0xLjExLjAKK2NvbW1hbmRzID0gcHJl
LWNvbW1pdCBydW4gLS1hbGwtZmlsZXMgLS1zaG93LWRpZmYtb24tZmFpbHVyZSB7cG9zYXJnczp9
CiAKLVt0ZXN0ZW52OnB5MzYtbnVtcHldCi1kZXBzID0ge1t0ZXN0ZW52OnB5MjctbnVtcHldZGVw
c30KLWNvbW1hbmRzID0ge1t0ZXN0ZW52OnB5MjctbnVtcHldY29tbWFuZHN9CitbdGVzdGVudjpt
eXB5XQorZXh0cmFzID0gY2hlY2txYS1teXB5LCB0ZXN0aW5nCitjb21tYW5kcyA9IG15cHkge3Bv
c2FyZ3M6c3JjIHRlc3Rpbmd9CiAKLVt0ZXN0ZW52OnB5MjctcGx1Z2d5bWFzdGVyXQotc2V0ZW52
PQotICAgIF9QWVRFU1RfU0VUVVBfU0tJUF9QTFVHR1lfREVQPTEKK1t0ZXN0ZW52Om15cHktZGlm
Zl0KK2V4dHJhcyA9IGNoZWNrcWEtbXlweSwgdGVzdGluZwogZGVwcyA9Ci0gICAge1t0ZXN0ZW52
XWRlcHN9Ci0gICAgZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneS5naXRA
bWFzdGVyCi0KLVt0ZXN0ZW52OnB5MzYtcGx1Z2d5bWFzdGVyXQotc2V0ZW52ID0ge1t0ZXN0ZW52
OnB5MjctcGx1Z2d5bWFzdGVyXXNldGVudn0KLWRlcHMgPSB7W3Rlc3RlbnY6cHkyNy1wbHVnZ3lt
YXN0ZXJdZGVwc30KKyAgICBseG1sCisgICAgZGlmZi1jb3ZlcgorY29tbWFuZHMgPQorICAtbXlw
eSAtLWNvYmVydHVyYS14bWwtcmVwb3J0IHtlbnZ0bXBkaXJ9IHtwb3NhcmdzOnNyYyB0ZXN0aW5n
fQorICBkaWZmLWNvdmVyIC0tZmFpbC11bmRlcj0xMDAgLS1jb21wYXJlLWJyYW5jaD17ZW52OkRJ
RkZfQlJBTkNIOm9yaWdpbi97ZW52OkdJVEhVQl9CQVNFX1JFRjptYXN0ZXJ9fSB7ZW52dG1wZGly
fS9jb2JlcnR1cmEueG1sCiAKIFt0ZXN0ZW52OmRvY3NdCi1za2lwc2Rpc3QgPSBUcnVlCitiYXNl
cHl0aG9uID0gcHl0aG9uMwogdXNlZGV2ZWxvcCA9IFRydWUKLWNoYW5nZWRpciA9IGRvYy9lbgog
ZGVwcyA9Ci0gICAgYXR0cnMKLSAgICBtb3JlLWl0ZXJ0b29scwotICAgIFB5WUFNTAotICAgIHNw
aGlueAotICAgIHNwaGlueGNvbnRyaWItdHJpbwotCisgICAgLXJ7dG94aW5pZGlyfS9kb2MvZW4v
cmVxdWlyZW1lbnRzLnR4dAorICAgIHRvd25jcmllcgogY29tbWFuZHMgPQotICAgIHNwaGlueC1i
dWlsZCAtVyAtYiBodG1sIC4gX2J1aWxkCi0KLVt0ZXN0ZW52OmRvY3Rlc3RpbmddCi1iYXNlcHl0
aG9uID0gcHl0aG9uCisgICAgcHl0aG9uIHNjcmlwdHMvdG93bmNyaWVyLWRyYWZ0LXRvLWZpbGUu
cHkKKyAgICAjIHRoZSAnLXQgY2hhbmdlbG9nX3Rvd25jcmllcl9kcmFmdCcgdGFncyBtYWtlcyBz
cGhpbnggaW5jbHVkZSB0aGUgZHJhZnQKKyAgICAjIGNoYW5nZWxvZyBpbiB0aGUgZG9jczsgdGhp
cyBkb2VzIG5vdCBoYXBwZW4gb24gUmVhZFRoZURvY3MgYmVjYXVzZSBpdCB1c2VzCisgICAgIyB0
aGUgc3RhbmRhcmQgc3BoaW54IGNvbW1hbmQgc28gdGhlICdjaGFuZ2Vsb2dfdG93bmNyaWVyX2Ry
YWZ0JyBpcyBuZXZlciBzZXQgdGhlcmUKKyAgICBzcGhpbngtYnVpbGQgLVcgLS1rZWVwLWdvaW5n
IC1iIGh0bWwgZG9jL2VuIGRvYy9lbi9fYnVpbGQvaHRtbCAtdCBjaGFuZ2Vsb2dfdG93bmNyaWVy
X2RyYWZ0IHtwb3NhcmdzOn0KKworW3Rlc3RlbnY6ZG9jcy1jaGVja2xpbmtzXQorYmFzZXB5dGhv
biA9IHB5dGhvbjMKIHVzZWRldmVsb3AgPSBUcnVlCi1za2lwc2Rpc3QgPSBUcnVlCi0jIGVuc3Vy
ZSB0aGUgZ2l2ZW4gcHlhcmdzIGNhbid0IG1lYW4gYW55dGhpbmcgZWxzZQotY2hhbmdlZGlyID0g
ZG9jLwotZGVwcyA9Ci0gICAgUHlZQU1MCitjaGFuZ2VkaXIgPSBkb2MvZW4KK2RlcHMgPSAtcnt0
b3hpbmlkaXJ9L2RvYy9lbi9yZXF1aXJlbWVudHMudHh0CiBjb21tYW5kcyA9Ci0gICAgcHl0ZXN0
IC1yYSBlbgotICAgIHB5dGVzdCAtLWRvY3Rlc3QtbW9kdWxlcyAtLXB5YXJncyBfcHl0ZXN0Cisg
ICAgc3BoaW54LWJ1aWxkIC1XIC1xIC0ta2VlcC1nb2luZyAtYiBsaW5rY2hlY2sgLiBfYnVpbGQK
IAogW3Rlc3RlbnY6cmVnZW5dCiBjaGFuZ2VkaXIgPSBkb2MvZW4KLXNraXBzZGlzdCA9IFRydWUK
LWJhc2VweXRob24gPSBweXRob24zLjUKK2Jhc2VweXRob24gPSBweXRob24zCitwYXNzZW52ID0g
U0VUVVBUT09MU19TQ01fUFJFVEVORF9WRVJTSU9OCiBkZXBzID0KLSAgICBzcGhpbngKKyAgICBk
YXRhY2xhc3NlcwogICAgIFB5WUFNTAogICAgIHJlZ2VuZG9jPj0wLjYuMQorICAgIHNwaGlueAog
d2hpdGVsaXN0X2V4dGVybmFscyA9CiAgICAgcm0KICAgICBtYWtlCiBjb21tYW5kcyA9CisgICAg
IyBkb24ndCBzaG93IGh5cG90aGVzaXMgcGx1Z2luIGluZm8gaW4gZG9jcywgc2VlICM0NjAyCisg
ICAgcGlwIHVuaW5zdGFsbCBoeXBvdGhlc2lzIC15CiAgICAgcm0gLXJmIC90bXAvZG9jLWV4ZWMq
CisgICAgcm0gLXJmIHtlbnZkaXJ9Ly5weXRlc3RfY2FjaGUKICAgICBtYWtlIHJlZ2VuCiAKLVt0
ZXN0ZW52OmZpeC1saW50XQotc2tpcHNkaXN0ID0gVHJ1ZQotdXNlZGV2ZWxvcCA9IFRydWUKK1t0
ZXN0ZW52OnBsdWdpbnNdCisjIHVzZSBsYXRlc3QgdmVyc2lvbnMgb2YgYWxsIHBsdWdpbnMsIGlu
Y2x1ZGluZyBwcmUtcmVsZWFzZXMKK3BpcF9wcmU9dHJ1ZQorIyB1c2UgbGF0ZXN0IHBpcCBhbmQg
bmV3IGRlcGVuZGVuY3kgcmVzb2x2ZXIgKCM3NzgzKQorZG93bmxvYWQ9dHJ1ZQoraW5zdGFsbF9j
b21tYW5kPXB5dGhvbiAtbSBwaXAgLS11c2UtZmVhdHVyZT0yMDIwLXJlc29sdmVyIGluc3RhbGwg
e29wdHN9IHtwYWNrYWdlc30KK2NoYW5nZWRpciA9IHRlc3RpbmcvcGx1Z2luc19pbnRlZ3JhdGlv
bgogZGVwcyA9Ci0gICAgYXV0b3BlcDgKLWNvbW1hbmRzID0KLSAgICBhdXRvcGVwOCAtLWluLXBs
YWNlIC1yIC0tbWF4LWxpbmUtbGVuZ3RoPTEyMCAtLWV4Y2x1ZGU9dGVzdF9zb3VyY2VfbXVsdGls
aW5lX2Jsb2NrLnB5IF9weXRlc3QgdGVzdGluZyBzZXR1cC5weSBweXRlc3QucHkKLQotW3Rlc3Rl
bnY6anl0aG9uXQotY2hhbmdlZGlyID0gdGVzdGluZworICAgIGFueWlvW2N1cmlvLHRyaW9dCisg
ICAgZGphbmdvCisgICAgcHl0ZXN0LWFzeW5jaW8KKyAgICBweXRlc3QtYmRkCisgICAgcHl0ZXN0
LWNvdgorICAgIHB5dGVzdC1kamFuZ28KKyAgICBweXRlc3QtZmxha2VzCisgICAgcHl0ZXN0LWh0
bWwKKyAgICBweXRlc3QtbW9jaworICAgIHB5dGVzdC1zdWdhcgorICAgIHB5dGVzdC10cmlvCisg
ICAgcHl0ZXN0LXR3aXN0ZWQKKyAgICB0d2lzdGVkCisgICAgcHl0ZXN0LXh2ZmIKK3NldGVudiA9
CisgICAgUFlUSE9OUEFUSD0uCiBjb21tYW5kcyA9Ci0gICAge2VudnB5dGhvbn0ge2VudmJpbmRp
cn0vcHkudGVzdC1qeXRob24gLXJhIHtwb3NhcmdzfQotCi1bdGVzdGVudjpweTM2LWZyZWV6ZV0K
KyAgICBwaXAgY2hlY2sKKyAgICBweXRlc3QgYmRkX3dhbGxldC5weQorICAgIHB5dGVzdCAtLWNv
dj0uIHNpbXBsZV9pbnRlZ3JhdGlvbi5weQorICAgIHB5dGVzdCAtLWRzPWRqYW5nb19zZXR0aW5n
cyBzaW1wbGVfaW50ZWdyYXRpb24ucHkKKyAgICBweXRlc3QgLS1odG1sPXNpbXBsZS5odG1sIHNp
bXBsZV9pbnRlZ3JhdGlvbi5weQorICAgIHB5dGVzdCBweXRlc3RfYW55aW9faW50ZWdyYXRpb24u
cHkKKyAgICBweXRlc3QgcHl0ZXN0X2FzeW5jaW9faW50ZWdyYXRpb24ucHkKKyAgICBweXRlc3Qg
cHl0ZXN0X21vY2tfaW50ZWdyYXRpb24ucHkKKyAgICBweXRlc3QgcHl0ZXN0X3RyaW9faW50ZWdy
YXRpb24ucHkKKyAgICBweXRlc3QgcHl0ZXN0X3R3aXN0ZWRfaW50ZWdyYXRpb24ucHkKKyAgICBw
eXRlc3Qgc2ltcGxlX2ludGVncmF0aW9uLnB5IC0tZm9yY2Utc3VnYXIgLS1mbGFrZXMKKworW3Rl
c3RlbnY6cHkzNy1mcmVlemVdCiBjaGFuZ2VkaXIgPSB0ZXN0aW5nL2ZyZWV6ZQotZGVwcyA9IHB5
aW5zdGFsbGVyCitkZXBzID0KKyAgICBweWluc3RhbGxlcgogY29tbWFuZHMgPQogICAgIHtlbnZw
eXRob259IGNyZWF0ZV9leGVjdXRhYmxlLnB5CiAgICAge2VudnB5dGhvbn0gdG94X3J1bi5weQog
Ci0KLVt0ZXN0ZW52OmNvdmVyYWxsc10KLXBhc3NlbnYgPSBUUkFWSVMgVFJBVklTX0pPQl9JRCBU
UkFWSVNfQlJBTkNIIENPVkVSQUxMU19SRVBPX1RPS0VOCitbdGVzdGVudjpyZWxlYXNlXQorZGVj
cmlwdGlvbiA9IGRvIGEgcmVsZWFzZSwgcmVxdWlyZWQgcG9zYXJnIG9mIHRoZSB2ZXJzaW9uIG51
bWJlcgorYmFzZXB5dGhvbiA9IHB5dGhvbjMKIHVzZWRldmVsb3AgPSBUcnVlCi1jaGFuZ2VkaXIg
PSAuCitwYXNzZW52ID0gKgogZGVwcyA9Ci0gICAge1t0ZXN0ZW52XWRlcHN9Ci0gICAgY292ZXJh
bGxzCi1jb21tYW5kcyA9Ci0gICAgY292ZXJhZ2UgcnVuIC0tc291cmNlPV9weXRlc3QgLW0gcHl0
ZXN0IHRlc3RpbmcKLSAgICBjb3ZlcmFnZSByZXBvcnQgLW0KLSAgICBjb3ZlcmFsbHMKLQotW3B5
dGVzdF0KLW1pbnZlcnNpb24gPSAyLjAKLXBsdWdpbnMgPSBweXRlc3RlcgotYWRkb3B0cyA9IC1y
YSAtcCBweXRlc3RlciAtLWlnbm9yZT10ZXN0aW5nL2N4X2ZyZWV6ZQotcnN5bmNkaXJzID0gdG94
LmluaSBweXRlc3QucHkgX3B5dGVzdCB0ZXN0aW5nCi1weXRob25fZmlsZXMgPSB0ZXN0XyoucHkg
Kl90ZXN0LnB5IHRlc3RpbmcvKi8qLnB5Ci1weXRob25fY2xhc3NlcyA9IFRlc3QgQWNjZXB0YW5j
ZQotcHl0aG9uX2Z1bmN0aW9ucyA9IHRlc3QKLW5vcmVjdXJzZWRpcnMgPSAudG94IGphIC5oZyBj
eF9mcmVlemVfc291cmNlCi14ZmFpbF9zdHJpY3Q9dHJ1ZQotZmlsdGVyd2FybmluZ3MgPQotICAg
IGVycm9yCi0gICAgIyBwcm9kdWNlZCBieSBwYXRoLmxvY2FsCi0gICAgaWdub3JlOmJhZCBlc2Nh
cGUuKjpEZXByZWNhdGlvbldhcm5pbmc6cmUKLSAgICAjIHByb2R1Y2VkIGJ5IHBhdGgucmVhZGxp
bmVzCi0gICAgaWdub3JlOi4qVS4qbW9kZSBpcyBkZXByZWNhdGVkOkRlcHJlY2F0aW9uV2Fybmlu
ZwotICAgICMgcHJvZHVjZWQgYnkgcHl0ZXN0LXhkaXN0Ci0gICAgaWdub3JlOi4qdHlwZSBhcmd1
bWVudCB0byBhZGRvcHRpb24uKjpEZXByZWNhdGlvbldhcm5pbmcKLSAgICAjIHByb2R1Y2VkIGJ5
IHB5dGhvbiA+PTMuNSBvbiBleGVjbmV0IChweXRlc3QteGRpc3QpCi0gICAgaWdub3JlOi4qaW5z
cGVjdC5nZXRhcmdzcGVjLipkZXByZWNhdGVkLCB1c2UgaW5zcGVjdC5zaWduYXR1cmUuKjpEZXBy
ZWNhdGlvbldhcm5pbmcKLSAgICAjIGlnbm9yZSB3YXJuaW5nIGFib3V0IHBhY2thZ2UgcmVzb2x1
dGlvbiB1c2luZyBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXwotICAgICMgc2hvdWxkIGJlIGEgdGVt
cG9yYXJ5IHNvbHV0aW9uLCBzZWUgIzMwNjEgZm9yIGRpc2N1c3Npb24KLSAgICBpZ25vcmU6Lipj
YW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXy4qOkltcG9y
dFdhcm5pbmcKKyAgICBjb2xvcmFtYQorICAgIGdpdGh1YjMucHkKKyAgICBwcmUtY29tbWl0Pj0x
LjExLjAKKyAgICB3aGVlbAorICAgIHRvd25jcmllcgorY29tbWFuZHMgPSBweXRob24gc2NyaXB0
cy9yZWxlYXNlLnB5IHtwb3NhcmdzfQorCitbdGVzdGVudjpyZWxlYXNlLW9uLWNvbW1lbnRdCitk
ZWNyaXB0aW9uID0gZG8gYSByZWxlYXNlIGZyb20gYSBjb21tZW50IG9uIEdpdEh1YgordXNlZGV2
ZWxvcCA9IHtbdGVzdGVudjpyZWxlYXNlXXVzZWRldmVsb3B9CitwYXNzZW52ID0ge1t0ZXN0ZW52
OnJlbGVhc2VdcGFzc2Vudn0KK2RlcHMgPSB7W3Rlc3RlbnY6cmVsZWFzZV1kZXBzfQorY29tbWFu
ZHMgPSBweXRob24gc2NyaXB0cy9yZWxlYXNlLW9uLWNvbW1lbnQucHkge3Bvc2FyZ3N9CisKK1t0
ZXN0ZW52OnB1Ymxpc2gtZ2gtcmVsZWFzZS1ub3Rlc10KK2Rlc2NyaXB0aW9uID0gY3JlYXRlIEdp
dEh1YiByZWxlYXNlIGFmdGVyIGRlcGxveW1lbnQKK2Jhc2VweXRob24gPSBweXRob24zCit1c2Vk
ZXZlbG9wID0gVHJ1ZQorcGFzc2VudiA9IEdIX1JFTEVBU0VfTk9URVNfVE9LRU4gR0lUSFVCX1JF
RiBHSVRIVUJfUkVQT1NJVE9SWQorZGVwcyA9CisgICAgZ2l0aHViMy5weQorICAgIHB5cGFuZG9j
Citjb21tYW5kcyA9IHB5dGhvbiBzY3JpcHRzL3B1Ymxpc2gtZ2gtcmVsZWFzZS1ub3Rlcy5weSB7
cG9zYXJnc30KIAogW2ZsYWtlOF0KIG1heC1saW5lLWxlbmd0aCA9IDEyMAorZXh0ZW5kLWlnbm9y
ZSA9CisgICAgOyB3aGl0ZXNwYWNlIGJlZm9yZSAnOicKKyAgICBFMjAzCisgICAgOyBNaXNzaW5n
IERvY3N0cmluZ3MKKyAgICBEMTAwLEQxMDEsRDEwMixEMTAzLEQxMDQsRDEwNSxEMTA2LEQxMDcK
KyAgICA7IFdoaXRlc3BhY2UgSXNzdWVzCisgICAgRDIwMixEMjAzLEQyMDQsRDIwNSxEMjA5LEQy
MTMKKyAgICA7IFF1b3RlcyBJc3N1ZXMKKyAgICBEMzAyCisgICAgOyBEb2NzdHJpbmcgQ29udGVu
dCBJc3N1ZXMKKyAgICBENDAwLEQ0MDEsRDQwMSxENDAyLEQ0MDUsRDQwNixENDA3LEQ0MDgsRDQw
OSxENDEwLEQ0MTEsRDQxMixENDEzLEQ0MTQsRDQxNSxENDE2LEQ0MTcKKworW2lzb3J0XQorOyBU
aGlzIGNvbmZpZyBtaW1pY3Mgd2hhdCByZW9yZGVyLXB5dGhvbi1pbXBvcnRzIGRvZXMuCitmb3Jj
ZV9zaW5nbGVfbGluZSA9IDEKK2tub3duX2xvY2FsZm9sZGVyID0gcHl0ZXN0LF9weXRlc3QKK2tu
b3duX3RoaXJkX3BhcnR5ID0gdGVzdF9zb3VyY2UsdGVzdF9leGNpbmZvCitmb3JjZV9hbHBoYWJl
dGljYWxfc29ydF93aXRoaW5fc2VjdGlvbnMgPSAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmYjBkMTZiOWI2ZDcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L0FVVEhPUlMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9DSEFOR0VMT0cucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvQ09OVFJJQlVUSU5HLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L0hPV1RPUkVMRUFTRS5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvUkVBRE1FLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2FwcHZleW9yLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3B5cHJvamVjdC50b21sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90b3guaW5p
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjcwZjI4NjcwNTQxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzLy5naXRp
Z25vcmUKQEAgLTAsMCArMSw0IEBACisqLnB5YworYnVpbGQvCisqLmVnZy1pbmZvLworZGlzdC8K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzLy50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4yMDY1YTY0NGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My8udHJh
dmlzLnltbApAQCAtMCwwICsxLDE3IEBACitsYW5ndWFnZTogcHl0aG9uCitweXRob246CisgIC0g
Mi43CisgIC0gMy41CisgIC0gMy42CisgIC0gMy43CisgIC0gMy44CisgIC0gbmlnaHRseQorCitt
YXRyaXg6CisgIGFsbG93X2ZhaWx1cmVzOgorICAgIC0gcHl0aG9uOiAzLjUsIG5pZ2h0bHkKK2lu
c3RhbGw6CisgIC0gcGlwIGluc3RhbGwgc2l4IHlhcGYKK3NjcmlwdDoKKyAgLSBweXRob24gdGVz
dC9ydW5fYWxsLnB5CisgIC0geWFwZiAtLWRpZmYgLS1yZWN1cnNpdmUgLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jZ2ktYmluL2hpLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvZXhhbXBsZS9jZ2ktYmluL2hpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZjEzNmYyYzQ0MjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvZXhhbXBsZS9jZ2ktYmluL2hpLnB5CkBAIC0wLDAgKzEsNSBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisKK3ByaW50KCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW4nKQorcHJpbnQoJycpCitw
cmludCgnSGkgZnJvbSBoaS5weScpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2VjaG9fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVu
dC5weQppbmRleCBkYWZkYTA1OWIxMTMuLjJlZDYwYjNiNTkyOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2VjaG9fY2xpZW50LnB5CkBAIC01OTksOCArNTk5LDE0IEBAIGNsYXNzIEVjaG9D
bGllbnQob2JqZWN0KToKIAogCiBkZWYgbWFpbigpOgorICAgICMgRm9yY2UgUHl0aG9uIDIgdG8g
dXNlIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGV2ZW4gd2hlbiB0aGUgb3V0cHV0IGlzIG5vdCBhCisg
ICAgIyB0dHkuIFRoaXMgbWFrZXMgdGhlIGJlaGF2aW91ciB0aGUgc2FtZSBhcyBQeXRob24gMy4g
VGhlIGVuY29kaW5nIHdvbid0CisgICAgIyBuZWNlc3NhcmlseSBzdXBwb3J0IGFsbCB1bmljb2Rl
IGNoYXJhY3RlcnMuIFRoaXMgcHJvYmxlbSBpcyBwYXJ0aWN1bGFybHkKKyAgICAjIHByZXZhbGVu
dCBvbiBXaW5kb3dzLgogICAgIGlmIHNpeC5QWTI6Ci0gICAgICAgIHN5cy5zdGRvdXQgPSBjb2Rl
Y3MuZ2V0d3JpdGVyKCd1dGYtOCcpKHN5cy5zdGRvdXQpCisgICAgICAgIGltcG9ydCBsb2NhbGUK
KyAgICAgICAgZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICAgICAg
ICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcihlbmNvZGluZykoc3lzLnN0ZG91dCkKIAog
ICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICAjIFdlIGFjY2VwdCAt
LWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBzYW1lIGFzIEdvb2ds
ZQpAQCAtNjM2LDcgKzY0Miw3IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICctLW1lc3NhZ2UnLAog
ICAgICAgICBkZXN0PSdtZXNzYWdlJywKICAgICAgICAgdHlwZT1zaXgudGV4dF90eXBlLAotICAg
ICAgICBkZWZhdWx0PXUnSGVsbG8sXHU2NWU1XHU2NzJjJywKKyAgICAgICAgZGVmYXVsdD11J0hl
bGxvLDw+JywKICAgICAgICAgaGVscD0oJ2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5k
LiAnCiAgICAgICAgICAgICAgICclcyB3aWxsIGZvcmNlIGNsb3NlIHRoZSBjb25uZWN0aW9uIGZy
b20gc2VydmVyLicgJQogICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyZjQzZDM4ZTJhYjYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9l
eGFtcGxlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9iZW5jaF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFy
ay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nv
bnNvbGUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9l
Y2hvX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3RzX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9vcmlnaW5fY2hlY2tfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9wZXJmb3Jt
YW5jZV90ZXN0X2lmcmFtZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9wZXJmb3Jt
YW5jZV90ZXN0X2lmcmFtZS5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3BlY2lhbF9o
ZWFkZXJzLmNnaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS91dGlsX3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY1OThmNTcwZjJkYy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9oYW5kc2hha2UvaHliaS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvc3RhbmRhbG9uZS5weQppbmRleCBiMDc1ZDk4OWYwNTIuLjBhM2JjZGJhY2RmNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKQEAg
LTQwMyw4ICs0MDMsNyBAQCBkZWYgX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhhcmdzKToKIGRlZiBf
bWFpbihhcmdzPU5vbmUpOgogICAgICIiIllvdSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20g
eW91ciBvd24gcHJvZ3JhbSwgYnV0IHBsZWFzZSBub3RlIHRoYXQKICAgICB0aGlzIGZ1bmN0aW9u
IGhhcyBzb21lIHNpZGUtZWZmZWN0cyB0aGF0IG1pZ2h0IGFmZmVjdCB5b3VyIHByb2dyYW0uIEZv
cgotICAgIGV4YW1wbGUsIHV0aWwud3JhcF9wb3BlbjNfZm9yX3dpbiB1c2UgaW4gdGhpcyBtZXRo
b2QgcmVwbGFjZXMgaW1wbGVtZW50YXRpb24KLSAgICBvZiBvcy5wb3BlbjMuCisgICAgZXhhbXBs
ZSwgaXQgY2hhbmdlcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgIiIiCiAKICAgICBvcHRp
b25zLCBhcmdzID0gX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhhcmdzPWFyZ3MpCkBAIC00MjcsNyAr
NDI2LDYgQEAgZGVmIF9tYWluKGFyZ3M9Tm9uZSk6CiAgICAgICAgICAgICAjIGZ1bGwgcGF0aCBv
ZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgogICAgICAgICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBp
biBvcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3MuZW52aXJvblsn
Q1lHV0lOX1BBVEgnXQotICAgICAgICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dp
bl9wYXRoKQogCiAgICAgICAgICAgICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0cGF0aCk6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwg
Y3lnd2luX3BhdGgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2Nr
ZXQvc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5w
eQppbmRleCBmYzM5OWYyYTg1YjkuLjgyZDFlYTYxOWMwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5CkBAIC04NzUsNyArODc1LDcgQEAgY2xhc3MgU3Ry
ZWFtKG9iamVjdCk6CiAgICAgICAgICAgICB3YWl0X3Jlc3BvbnNlOiBUcnVlIHdoZW4gY2FsbGVy
IHdhbnQgdG8gd2FpdCB0aGUgcmVzcG9uc2UuCiAgICAgICAgIFJhaXNlczoKICAgICAgICAgICAg
IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiByZWFzb24gaXMgc3BlY2lmaWVkIHdpdGggY29k
ZSBOb25lCi0gICAgICAgICAgICBvciByZWFzb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGJvdGgg
c3RyIGFuZCB1bmljb2RlLgorICAgICAgICAgICAgICAgIG9yIHJlYXNvbiBpcyBub3QgYW4gaW5z
dGFuY2Ugb2YgYm90aCBzdHIgYW5kIHVuaWNvZGUuCiAgICAgICAgICIiIgogCiAgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9w
eXdlYnNvY2tldC91dGlsLnB5CmluZGV4IGUxNjRlNmI4ZTQ2OC4uMDQwMDZlY2FjZDUxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAtOTcsMjUgKzk3LDYg
QEAgZGVmIGdldF9zY3JpcHRfaW50ZXJwKHNjcmlwdF9wYXRoLCBjeWd3aW5fcGF0aD1Ob25lKToK
ICAgICByZXR1cm4gTm9uZQogCiAKLWRlZiB3cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRo
KToKLSAgICAiIiJXcmFwIHBvcGVuMyB0byBzdXBwb3J0ICMhLXNjcmlwdCBvbiBXaW5kb3dzLgot
Ci0gICAgQXJnczoKLSAgICAgIGN5Z3dpbl9wYXRoOiAgcGF0aCBmb3IgY3lnd2luIGJpbmFyeSBp
ZiBjb21tYW5kIHBhdGggaXMgbmVlZGVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIHRyYW5z
bGF0ZWQuICBOb25lIGlmIG5vIHRyYW5zbGF0aW9uIHJlcXVpcmVkLgotICAgICIiIgotICAgIF9f
b3JpZ19wb3BlbjMgPSBvcy5wb3BlbjMKLQotICAgIGRlZiBfX3dyYXBfcG9wZW4zKGNtZCwgbW9k
ZT0ndCcsIGJ1ZnNpemU9LTEpOgotICAgICAgICBjbWRsaW5lID0gY21kLnNwbGl0KCcgJykKLSAg
ICAgICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9pbnRlcnAoY21kbGluZVswXSwgY3lnd2luX3BhdGgp
Ci0gICAgICAgIGlmIGludGVycDoKLSAgICAgICAgICAgIGNtZCA9IGludGVycCArICcgJyArIGNt
ZAotICAgICAgICByZXR1cm4gX19vcmlnX3BvcGVuMyhjbWQsIG1vZGUsIGJ1ZnNpemUpCi0KLSAg
ICBvcy5wb3BlbjMgPSBfX3dyYXBfcG9wZW4zCi0KLQogZGVmIGhleGlmeShzKToKICAgICByZXR1
cm4gJyAnLmpvaW4oWyclMDJ4JyAlIHggZm9yIHggaW4gc2l4Lml0ZXJieXRlcyhzKV0pCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYxNDI1ZTExNGQxLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9jb21tb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0
Y2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9t
b2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L3NlcnZlcl91dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L3N0YW5kYWxvbmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
c3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9z
ZXR1cC5weQppbmRleCA1N2U5NDI4ZDY5MWQuLmI2NTkwNGM5NGZhZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvc2V0dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkK
QEAgLTQzLDcgKzQzLDcgQEAgX1VTRV9GQVNUX01BU0tJTkcgPSBGYWxzZQogCiAjIFRoaXMgaXMg
dXNlZCBzaW5jZSBweXRob25fcmVxdWlyZXMgZmllbGQgaXMgbm90IHJlY29nbml6ZWQgd2l0aAog
IyBwaXAgdmVyc2lvbiA5LjAuMCBhbmQgZWFybGllcgotaWYgc3lzLnZlcnNpb24gPCAnMi43JzoK
K2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA3MDBmMDoKICAgICBwcmludCgnJXMgcmVxdWlyZXMg
UHl0aG9uIDIuNyBvciBsYXRlci4nICUgX1BBQ0tBR0VfTkFNRSwgZmlsZT1zeXMuc3RkZXJyKQog
ICAgIHN5cy5leGl0KDEpCiAKQEAgLTY2LDkgKzY2LDggQEAgc2V0dXAoCiAgICAgcGFja2FnZXM9
W19QQUNLQUdFX05BTUUsIF9QQUNLQUdFX05BTUUgKyAnLmhhbmRzaGFrZSddLAogICAgIHB5dGhv
bl9yZXF1aXJlcz0nPj0yLjcnLAogICAgIGluc3RhbGxfcmVxdWlyZXM9WydzaXgnXSwKLSAgICAj
VE9ETyhzdXp1a2lrZWl0YSk6IFVwZGF0ZSB0aGlzIHRvIG5ldyBHaXRodWIgVVJMCi0gICAgdXJs
PSdodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHl3ZWJzb2NrZXQvJywKLSAgICB2ZXJzaW9uPScz
LjAuMCcsCisgICAgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vR29vZ2xlQ2hyb21lTGFicy9weXdl
YnNvY2tldDMnLAorICAgIHZlcnNpb249JzMuMC4xJywKICkKIAogIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjli
YjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9fX2luaXRfXy5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzkwNDQxOTBmNThiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9j
ZXJ0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NhY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L2NlcnQvY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2xp
ZW50X2NlcnQucDEyCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkKaW5kZXggZjlhYTgxMTll
MzQyLi5hNDVlOGY1Y2YyZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xp
ZW50X2Zvcl90ZXN0aW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zv
cl90ZXN0aW5nLnB5CkBAIC0zMDMsNyArMzAzLDcgQEAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtl
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
c2VydmVyX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMudXNlX3RscykpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uIGlzIDg6Cisg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyc2lvbiA9PSA4OgogICAgICAgICAgICAgZmllbGRz
LmFwcGVuZChfc2VjX29yaWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pKQogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgZmllbGRzLmFwcGVuZChfb3JpZ2luX2hlYWRlcihzZWxmLl9v
cHRpb25zLm9yaWdpbikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
ZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKaW5k
ZXggOGQ0NTdmZjY4NTk1Li4yNzg5ZTRhNTdlMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfZW5kdG9lbmQucHkKQEAgLTMyLDYgKzMyLDggQEAKICIiIgogCiBmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgoraW1w
b3J0IGxvY2FsZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHNpZ25hbApAQCAt
MTUzLDggKzE1NSw5IEBAIGNsYXNzIEVuZFRvRW5kVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICMgVE9ETyh0eW9zaGlubyk6IFVzZSB0ZWFyRG93biB0byBraWxsIHRoZSBzZXJ2ZXIu
CiAKICAgICBkZWYgX3J1bl9weXRob25fY29tbWFuZChzZWxmLCBjb21tYW5kbGluZSwgc3Rkb3V0
PU5vbmUsIHN0ZGVycj1Ob25lKToKKyAgICAgICAgY2xvc2VfZmRzID0gVHJ1ZSBpZiBzeXMucGxh
dGZvcm0gIT0gJ3dpbjMyJyBlbHNlIE5vbmUKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9w
ZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1hbmRsaW5lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbG9zZV9mZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xvc2VfZmRzPWNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Rkb3V0PXN0ZG91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN0
ZGVycikKIApAQCAtNjMyLDcgKzYzNSwxNCBAQCBjbGFzcyBFbmRUb0VuZFRlc3RXaXRoRWNob0Ns
aWVudChFbmRUb0VuZFRlc3RCYXNlKToKIAogICAgIGRlZiBfY2hlY2tfZXhhbXBsZV9lY2hvX2Ns
aWVudF9yZXN1bHQoc2VsZiwgZXhwZWN0ZWQsIHN0ZG91dGRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJkYXRhKToKLSAgICAgICAgYWN0dWFsID0g
c3Rkb3V0ZGF0YS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgYWN0dWFsID0gc3Rkb3V0ZGF0YS5k
ZWNvZGUobG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkpCisKKyAgICAgICAgIyBJbiBQeXRo
b24gMyBvbiBXaW5kb3dzIHdlIGdldCAiXHJcbiIgdGVybWluYXRvcnMgYmFjayBmcm9tCisgICAg
ICAgICMgdGhlIHN1YnByb2Nlc3MgYW5kIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGVtIHdpdGggIlxu
IiB0byBnZXQKKyAgICAgICAgIyBhIG1hdGNoLiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjaywgYnV0
IGF2b2lkcyBwbGF0Zm9ybS0gYW5kCisgICAgICAgICMgdmVyc2lvbi0gc3BlY2lmaWMgY29kZS4K
KyAgICAgICAgYWN0dWFsID0gYWN0dWFsLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKQorCiAgICAgICAg
IGlmIGFjdHVhbCAhPSBleHBlY3RlZDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5l
eHBlY3RlZCByZXN1bHQgb24gZXhhbXBsZSBlY2hvIGNsaWVudDogJwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICclciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCkBAIC02NTQsOCAr
NjY0LDggQEAgY2xhc3MgRW5kVG9FbmRUZXN0V2l0aEVjaG9DbGllbnQoRW5kVG9FbmRUZXN0QmFz
ZSk6CiAgICAgICAgICAgICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVzc2Fn
ZXMuCiAgICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKHUnU2VuZDogSGVsbG9cbicK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBIZWxsb1xuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQ6IDw+XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnUmVjdjogPD5cbicKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdSdTZW5kIGNsb3NlXG4nCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHUnUmVjdiBhY2tcbicpCiAKQEAgLTY5Myw2ICs3MDMsMzUgQEAg
Y2xhc3MgRW5kVG9FbmRUZXN0V2l0aEVjaG9DbGllbnQoRW5kVG9FbmRUZXN0QmFzZSk6CiAgICAg
ICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQogCiAKK2NsYXNzIEVuZFRvRW5kVGVz
dFdpdGhDZ2koRW5kVG9FbmRUZXN0QmFzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBFbmRUb0VuZFRlc3RCYXNlLnNldFVwKHNlbGYpCisKKyAgICBkZWYgdGVzdF9jZ2koc2VsZik6
CisgICAgICAgICIiIlZlcmlmaWVzIHRoYXQgQ0dJIHNjcmlwdHMgd29yay4iIiIKKworICAgICAg
ICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKGV4dHJhX2FyZ3M9WyctLWNnaS1wYXRocycsICcv
Y2dpLWJpbiddKQorICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKwor
ICAgICAgICB1cmwgPSAnaHR0cDovL2xvY2FsaG9zdDolZC9jZ2ktYmluL2hpLnB5JyAlIHNlbGYu
X29wdGlvbnMuc2VydmVyX3BvcnQKKworICAgICAgICAjIHVybG9wZW4oKSBpbiBQeXRob24gMi43
IGRvZXNuJ3Qgc3VwcG9ydCAid2l0aCIuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSB1
cmxsaWIucmVxdWVzdC51cmxvcGVuKHVybCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAg
c2VsZi5fY2xvc2Vfc2VydmVyKHNlcnZlcikKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGNvZGUoKSwgMjAwKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmluZm8oKS5nZXQoJ0NvbnRlbnQtVHlwZScpLCAn
dGV4dC9wbGFpbicpCisgICAgICAgICAgICBib2R5ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYm9keS5yc3RyaXAoYidcclxuJyksIGInSGkgZnJvbSBoaS5weScpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYu
X2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAg
ICB1bml0dGVzdC5tYWluKCkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90
ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaHR0
cF9oZWFkZXJfdXRpbC5weQppbmRleCA1Y2UwMWVmMjgzOTEuLmY4YzhlN2E5ODFiYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKQEAgLTc5
LDcgKzc5LDcgQEAgY2xhc3MgVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAg
IGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCiAgICAg
ICAgICAgICAnd3M6Ly9sb2NhbGhvc3Q6LTEvd3MnKQotICAgICAgICBpZiBzeXMudmVyc2lvbiA+
PSAnMy42JzoKKyAgICAgICAgaWYgc3lzLmhleHZlcnNpb24gPj0gMHgwMzA2MDBmMDoKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2NWRiZTMyYWFjLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRp
b25faW5fdHJhbnNmZXJfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193
c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z190cmFuc2Zlcl9zaWdfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTA4YzBmNjU3MmIxLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RkYXRhL2hlbGxvLnBsCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5CnJlbmFtZSB0byBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hlbGxvLnBsCmluZGV4IDdmODdjNmFmMjNkZi4u
ODgyZWY1YTEwMDY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hlbGxv
LnBsCkBAIC0xLDQgKzEsNiBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMhL3Vz
ci9iaW4vcGVybCAtd1QKKyMKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCiAjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsNSArMjksNCBAQAogIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotCi0jIGludGVudGlvbmFsbHkgbGVmdCBibGFuawor
cHJpbnQgIkhlbGxvXG4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNzZiOGUxOTIwZC4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL1JFQURNRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZjllZWExOTE0Yi4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3Rp
bmcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3J1bl9hbGwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9leHRlbnNpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X21vY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RfdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGJmZGJjMWY2MTg5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9DT05UUklCVVRJTkcKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9SRUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9zZXR1cC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3Vt
ZW50YXRpb24vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMx
MGQ2ZjA5OGU5ZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9kb2N1bWVudGF0aW9uL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25m
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lOU1RBTExFUiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAu
ZGlzdC1pbmZvL0lOU1RBTExFUgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFiNTg5
ZTM4YTMyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8v
SU5TVEFMTEVSCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcGlwCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIwNWE1
NDUyNjFjLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8v
TElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUNvcHlyaWdodCAoYykgMjAx
MC0yMDE5IEJlbmphbWluIFBldGVyc29uCi0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YKLXRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsIGluCi10aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvCi11c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGll
cyBvZgotdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m
dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLAotc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAotY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLCBGSVRORVNTCi1GT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IKLUNPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hF
VEhFUgotSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLCBPVVQgT0YgT1IgSU4KLUNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAu
ZGlzdC1pbmZvL01FVEFEQVRBCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGM4ZjUx
ZTFmMzYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9N
RVRBREFUQQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLU1ldGFkYXRhLVZlcnNpb246
IDIuMQotTmFtZTogc2l4Ci1WZXJzaW9uOiAxLjEzLjAKLVN1bW1hcnk6IFB5dGhvbiAyIGFuZCAz
IGNvbXBhdGliaWxpdHkgdXRpbGl0aWVzCi1Ib21lLXBhZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9i
ZW5qYW1pbnAvc2l4Ci1BdXRob3I6IEJlbmphbWluIFBldGVyc29uCi1BdXRob3ItZW1haWw6IGJl
bmphbWluQHB5dGhvbi5vcmcKLUxpY2Vuc2U6IE1JVAotUGxhdGZvcm06IFVOS05PV04KLUNsYXNz
aWZpZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUKLUNsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyCi1DbGFzc2lmaWVyOiBQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMwotQ2xhc3NpZmllcjogSW50ZW5kZWQg
QXVkaWVuY2UgOjogRGV2ZWxvcGVycwotQ2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBwcm92
ZWQgOjogTUlUIExpY2Vuc2UKLUNsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERldmVsb3Bt
ZW50IDo6IExpYnJhcmllcwotQ2xhc3NpZmllcjogVG9waWMgOjogVXRpbGl0aWVzCi1SZXF1aXJl
cy1QeXRob246ID49Mi42LCAhPTMuMC4qLCAhPTMuMS4qCi0KLS4uIGltYWdlOjogaHR0cHM6Ly9p
bWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9y
Zy9wcm9qZWN0L3NpeC8KLSAgIDphbHQ6IHNpeCBvbiBQeVBJCi0KLS4uIGltYWdlOjogaHR0cHM6
Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXguc3ZnP2JyYW5jaD1tYXN0ZXIKLSAgIDp0YXJn
ZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4Ci0gICA6YWx0OiBzaXggb24g
VHJhdmlzQ0kKLQotLi4gaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9z
aXgvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0Ci0gICA6dGFyZ2V0OiBodHRwczovL3NpeC5yZWFkdGhl
ZG9jcy5pby8KLSAgIDphbHQ6IHNpeCdzIGRvY3VtZW50YXRpb24gb24gUmVhZCB0aGUgRG9jcwot
Ci0uLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtZ3Jl
ZW4uc3ZnCi0gICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9i
L21hc3Rlci9MSUNFTlNFCi0gICA6YWx0OiBNSVQgTGljZW5zZSBiYWRnZQotCi1TaXggaXMgYSBQ
eXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnkuICBJdCBwcm92aWRlcyB1dGlsaXR5
IGZ1bmN0aW9ucwotZm9yIHNtb290aGluZyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRo
ZSBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgZ29hbCBvZgotd3JpdGluZyBQeXRob24gY29kZSB0
aGF0IGlzIGNvbXBhdGlibGUgb24gYm90aCBQeXRob24gdmVyc2lvbnMuICBTZWUgdGhlCi1kb2N1
bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0KLVNp
eCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBzaW5jZSAyLjYuICBJdCBpcyBjb250YWlu
ZWQgaW4gb25seSBvbmUgUHl0aG9uCi1maWxlLCBzbyBpdCBjYW4gYmUgZWFzaWx5IGNvcGllZCBp
bnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UKLW5vdGljZSBtdXN0
IGJlIHJldGFpbmVkLikKLQotT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cHM6Ly9zaXgu
cmVhZHRoZWRvY3MuaW8vLgotCi1CdWdzIGNhbiBiZSByZXBvcnRlZCB0byBodHRwczovL2dpdGh1
Yi5jb20vYmVuamFtaW5wL3NpeC4gIFRoZSBjb2RlIGNhbiBhbHNvCi1iZSBmb3VuZCB0aGVyZS4K
LQotRm9yIHF1ZXN0aW9ucyBhYm91dCBzaXggb3IgcG9ydGluZyBpbiBnZW5lcmFsLCBlbWFpbCB0
aGUgcHl0aG9uLXBvcnRpbmcgbWFpbGluZwotbGlzdDogaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcv
bWFpbG1hbi9saXN0aW5mby9weXRob24tcG9ydGluZwotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1JFQ09SRCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1p
bmZvL1JFQ09SRApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU3NjY1Yzk5NjQyLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JECisr
KyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxM
RVIsc2hhMjU2PXp1dXVlNGtub3lKLVV3UFBYZzhmZXpTN1ZDclhKUXJBUDd6ZU51d3ZGUWcsNA0K
LXNpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0Usc2hhMjU2PXQxS2JqQWNYR25pb3cyd3lnNUJW
S09TQktVWFpkOUVsNjVKdWpNdnlSYlksMTA2Ng0KLXNpeC0xLjEzLjAuZGlzdC1pbmZvL01FVEFE
QVRBLHNoYTI1Nj1oeFM0clNQUmZPOGV3YmNMUzMwYW5vRmk2TEZnVVEzbWtfeGtuWjhSVjR3LDE5
NDANCi1zaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQsLA0KLXNpeC0xLjEzLjAuZGlzdC1pbmZv
L1dIRUVMLHNoYTI1Nj04VDhmeGVmcl9yLUE3OXFiT0o5ZF9BYUVna3BDR21FUEhjLWdwQ3E1QlJn
LDExMA0KLXNpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQsc2hhMjU2PV9pVkhfaVlF
dEVYbkQ4bllHUVlwWUZVdmtVVzlzRU8xR1lia2VLU0FhaXMsNA0KLXNpeC5weSxzaGEyNTY9bzlX
SE84dXRXR2F5TmhOcURtTnFQZFFzUWFpcjVSYVJXakxfOElZZjFxdywzMzA1MQ0KLXNpeC5weWMs
LA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDEwMDEyMzU1MzMzZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEz
LjAuZGlzdC1pbmZvL1dIRUVMCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1XaGVlbC1W
ZXJzaW9uOiAxLjAKLUdlbmVyYXRvcjogYmRpc3Rfd2hlZWwgKDAuMzIuMSkKLVJvb3QtSXMtUHVy
ZWxpYjogdHJ1ZQotVGFnOiBweTItbm9uZS1hbnkKLVRhZzogcHkzLW5vbmUtYW55Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZmUyZmNlNDk4OTUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9z
aXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotc2l4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWUxZDIyY2I4NjMuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAu
ZGlzdC1pbmZvL0lOU1RBTExFUgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VO
U0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Np
eC0xLjEzLjAuZGlzdC1pbmZvL1JFQ09SRAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZv
L1dIRUVMCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTUuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9zaXgtMS4xNS4wLmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTgzMGIyN2Y3ZTVhLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTUuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xNS4wLmRpc3QtaW5mby9JTlNU
QUxMRVIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xNS4wLmRpc3QtaW5mby9MSUNFTlNFCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTUuMC5kaXN0LWluZm8vTUVUQURBVEEKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xNS4wLmRpc3Qt
aW5mby9SRUNPUkQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xNS4wLmRpc3QtaW5mby9XSEVFTAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjE1LjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC5lZ2ctaW5mby9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9QS0ctSU5G
TwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q1ZmY0YmI4ZTRmLi4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL1BLRy1JTkZPCisrKyAvZGV2L251bGwKQEAg
LTEsNDEgKzAsMCBAQAotTWV0YWRhdGEtVmVyc2lvbjogMS4xCi1OYW1lOiBzaXgKLVZlcnNpb246
IDEuMTEuMAotU3VtbWFyeTogUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMK
LUhvbWUtcGFnZTogaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8KLUF1dGhvcjogQmVu
amFtaW4gUGV0ZXJzb24KLUF1dGhvci1lbWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZwotTGljZW5z
ZTogTUlUCi1EZXNjcmlwdGlvbjogLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vcHlw
aS92L3NpeC5zdmcKLSAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcv
cHlwaS9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2ku
b3JnL2JlbmphbWlucC9zaXguc3ZnP2JyYW5jaD1tYXN0ZXIKLSAgICAgICAgICAgIDp0YXJnZXQ6
IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4Ci0gICAgICAgIAotICAgICAgICAu
LiBpbWFnZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ncmVlbi5z
dmcKLSAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgv
YmxvYi9tYXN0ZXIvTElDRU5TRQotICAgICAgICAKLSAgICAgICAgU2l4IGlzIGEgUHl0aG9uIDIg
YW5kIDMgY29tcGF0aWJpbGl0eSBsaWJyYXJ5LiAgSXQgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlv
bnMKLSAgICAgICAgZm9yIHNtb290aGluZyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRo
ZSBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgZ29hbCBvZgotICAgICAgICB3cml0aW5nIFB5dGhv
biBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBib3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0
aGUKLSAgICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGlz
IHByb3ZpZGVkLgotICAgICAgICAKLSAgICAgICAgU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2
ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlzIGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KLSAg
ICAgICAgZmlsZSwgc28gaXQgY2FuIGJlIGVhc2lseSBjb3BpZWQgaW50byB5b3VyIHByb2plY3Qu
IChUaGUgY29weXJpZ2h0IGFuZCBsaWNlbnNlCi0gICAgICAgIG5vdGljZSBtdXN0IGJlIHJldGFp
bmVkLikKLSAgICAgICAgCi0gICAgICAgIE9ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHA6
Ly9zaXgucnRmZC5vcmcuCi0gICAgICAgIAotICAgICAgICBCdWdzIGNhbiBiZSByZXBvcnRlZCB0
byBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC4gIFRoZSBjb2RlIGNhbiBhbHNvCi0g
ICAgICAgIGJlIGZvdW5kIHRoZXJlLgotICAgICAgICAKLSAgICAgICAgRm9yIHF1ZXN0aW9ucyBh
Ym91dCBzaXggb3IgcG9ydGluZyBpbiBnZW5lcmFsLCBlbWFpbCB0aGUgcHl0aG9uLXBvcnRpbmcg
bWFpbGluZwotICAgICAgICBsaXN0OiBodHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xp
c3RpbmZvL3B5dGhvbi1wb3J0aW5nCi0gICAgICAgIAotUGxhdGZvcm06IFVOS05PV04KLUNsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyCi1DbGFzc2lmaWVyOiBQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMwotQ2xhc3NpZmllcjogSW50ZW5kZWQg
QXVkaWVuY2UgOjogRGV2ZWxvcGVycwotQ2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBwcm92
ZWQgOjogTUlUIExpY2Vuc2UKLUNsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERldmVsb3Bt
ZW50IDo6IExpYnJhcmllcwotQ2xhc3NpZmllcjogVG9waWMgOjogVXRpbGl0aWVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXguZWdnLWluZm8vU09VUkNFUy50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXguZWdn
LWluZm8vU09VUkNFUy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhN2YzZGVj
NmRmMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9TT1VSQ0VTLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLUNIQU5HRVMKLUxJQ0VOU0UKLU1BTklG
RVNULmluCi1SRUFETUUucnN0Ci1zZXR1cC5jZmcKLXNldHVwLnB5Ci1zaXgucHkKLXRlc3Rfc2l4
LnB5Ci1kb2N1bWVudGF0aW9uL01ha2VmaWxlCi1kb2N1bWVudGF0aW9uL2NvbmYucHkKLWRvY3Vt
ZW50YXRpb24vaW5kZXgucnN0Ci1zaXguZWdnLWluZm8vUEtHLUlORk8KLXNpeC5lZ2ctaW5mby9T
T1VSQ0VTLnR4dAotc2l4LmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci1zaXguZWdnLWlu
Zm8vdG9wX2xldmVsLnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC5lZ2ctaW5mby90b3BfbGV2ZWwudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1p
bmZvL3RvcF9sZXZlbC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZTJmY2U0
OTg5NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby90b3BfbGV2ZWwu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotc2l4CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXguZWdnLWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXguZWdnLWluZm8vdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzE5NTMxZjFlMS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ct
aW5mby9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ct
aW5mby90b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
MGYyMmNhMmQ2YzMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9SRUFE
TUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC90ZXN0X3NpeC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS90b29sdG9v
bC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvdG9vbHRvb2wvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTE2OGRjYzJmNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvdG9vbHRvb2wvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3Rvb2x0b29sL3Rvb2x0b29sLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YmVuY29kaW5ncy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmU4MmQyZDVkNDguLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL1BLRy1JTkZPCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJlbmNvZGluZ3MvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3NldHVwLmNm
ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2ViZW5jb2RpbmdzL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29k
aW5ncy93ZWJlbmNvZGluZ3MuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29k
aW5ncy93ZWJlbmNvZGluZ3MuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRmYTY3Y2EzY2MwOC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
ZW5jb2RpbmdzL3dlYmVuY29kaW5ncy5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29k
aW5ncy5lZ2ctaW5mby9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy5l
Z2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy5lZ2ct
aW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5n
cy5lZ2ctaW5mby90b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93
ZWJlbmNvZGluZ3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGlu
Z3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYWJkZTVi
OTBjOC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2Rp
bmdzL3dlYmVuY29kaW5ncy9sYWJlbHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGlu
Z3MvbWtsYWJlbHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MvdGVzdHMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MveF91c2VyX2RlZmluZWQucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy8uYXBwdmV5b3IueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5h
cHB2ZXlvci55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43OTU0
ZWU0YmU3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLmFwcHZleW9yLnlt
bApAQCAtMCwwICsxLDI3IEBACiticmFuY2hlczoKKyAgb25seToKKyAgICAtIG1hc3RlcgorCitz
a2lwX2JyYW5jaF93aXRoX3ByOiB0cnVlCisKK2Vudmlyb25tZW50OgorIyB3ZWJzb2NrZXRzIG9u
bHkgd29ya3Mgb24gUHl0aG9uID49IDMuNi4KKyAgQ0lCV19TS0lQOiBjcDI3LSogY3AzMy0qIGNw
MzQtKiBjcDM1LSoKKyAgQ0lCV19URVNUX0NPTU1BTkQ6IHB5dGhvbiAtVyBkZWZhdWx0IC1tIHVu
aXR0ZXN0CisgIFdFQlNPQ0tFVFNfVEVTVFNfVElNRU9VVF9GQUNUT1I6IDEwMAorCitpbnN0YWxs
OgorIyBFbnN1cmUgcHl0aG9uIGlzIFB5dGhvbiAzLgorICAtIHNldCBQQVRIPUM6XFB5dGhvbjM3
OyVQQVRIJQorICAtIGNtZDogcHl0aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBjaWJ1aWxk
d2hlZWwKKyMgQ3JlYXRlIGZpbGUgJy5jaWJ1aWxkd2hlZWwnIHNvIHRoYXQgZXh0ZW5zaW9uIGJ1
aWxkIGlzIG5vdCBvcHRpb25hbCAoYy5mLiBzZXR1cC5weSkuCisgIC0gY21kOiB0b3VjaCAuY2li
dWlsZHdoZWVsCisKK2J1aWxkX3NjcmlwdDoKKyAgLSBjbWQ6IHB5dGhvbiAtbSBjaWJ1aWxkd2hl
ZWwgLS1vdXRwdXQtZGlyIHdoZWVsaG91c2UKKyMgVXBsb2FkIHRvIFB5UEkgb24gdGFncworICAt
IHBzOiA+LQorICAgICAgaWYgKCRlbnY6QVBQVkVZT1JfUkVQT19UQUcgLWVxICJ0cnVlIikgewor
ICAgICAgICBJbnZva2UtRXhwcmVzc2lvbiAicHl0aG9uIC1tIHBpcCBpbnN0YWxsIHR3aW5lIgor
ICAgICAgICBJbnZva2UtRXhwcmVzc2lvbiAicHl0aG9uIC1tIHR3aW5lIHVwbG9hZCAtLXNraXAt
ZXhpc3Rpbmcgd2hlZWxob3VzZS8qLndobCIKKyAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy8uY2lyY2xlY2kvY29uZmlnLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy8uY2lyY2xlY2kv
Y29uZmlnLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA4Nzdj
MTYxYWQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy8uY2lyY2xlY2kvY29u
ZmlnLnltbApAQCAtMCwwICsxLDU1IEBACit2ZXJzaW9uOiAyCisKK2pvYnM6CisgIG1haW46Cisg
ICAgZG9ja2VyOgorICAgICAgLSBpbWFnZTogY2lyY2xlY2kvcHl0aG9uOjMuNworICAgIHN0ZXBz
OgorICAgICAgIyBSZW1vdmUgSVB2NiBlbnRyeSBmb3IgbG9jYWxob3N0IGluIENpcmNsZSBDSSBj
b250YWluZXJzIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGFueXdheS4KKyAgICAgIC0gcnVuOiBz
dWRvIGNwIC9ldGMvaG9zdHMgL3RtcDsgc3VkbyBzZWQgLWkgJy86OjEvZCcgL3RtcC9ob3N0czsg
c3VkbyBjcCAvdG1wL2hvc3RzIC9ldGMKKyAgICAgIC0gY2hlY2tvdXQKKyAgICAgIC0gcnVuOiBz
dWRvIHBpcCBpbnN0YWxsIHRveCBjb2RlY292CisgICAgICAtIHJ1bjogdG94IC1lIGNvdmVyYWdl
LGJsYWNrLGZsYWtlOCxpc29ydCxteXB5CisgICAgICAtIHJ1bjogY29kZWNvdgorICBweTM2Ogor
ICAgIGRvY2tlcjoKKyAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL3B5dGhvbjozLjYKKyAgICBzdGVw
czoKKyAgICAgICMgUmVtb3ZlIElQdjYgZW50cnkgZm9yIGxvY2FsaG9zdCBpbiBDaXJjbGUgQ0kg
Y29udGFpbmVycyBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBhbnl3YXkuCisgICAgICAtIHJ1bjog
c3VkbyBjcCAvZXRjL2hvc3RzIC90bXA7IHN1ZG8gc2VkIC1pICcvOjoxL2QnIC90bXAvaG9zdHM7
IHN1ZG8gY3AgL3RtcC9ob3N0cyAvZXRjCisgICAgICAtIGNoZWNrb3V0CisgICAgICAtIHJ1bjog
c3VkbyBwaXAgaW5zdGFsbCB0b3gKKyAgICAgIC0gcnVuOiB0b3ggLWUgcHkzNgorICBweTM3Ogor
ICAgIGRvY2tlcjoKKyAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL3B5dGhvbjozLjcKKyAgICBzdGVw
czoKKyAgICAgICMgUmVtb3ZlIElQdjYgZW50cnkgZm9yIGxvY2FsaG9zdCBpbiBDaXJjbGUgQ0kg
Y29udGFpbmVycyBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBhbnl3YXkuCisgICAgICAtIHJ1bjog
c3VkbyBjcCAvZXRjL2hvc3RzIC90bXA7IHN1ZG8gc2VkIC1pICcvOjoxL2QnIC90bXAvaG9zdHM7
IHN1ZG8gY3AgL3RtcC9ob3N0cyAvZXRjCisgICAgICAtIGNoZWNrb3V0CisgICAgICAtIHJ1bjog
c3VkbyBwaXAgaW5zdGFsbCB0b3gKKyAgICAgIC0gcnVuOiB0b3ggLWUgcHkzNworICBweTM4Ogor
ICAgIGRvY2tlcjoKKyAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL3B5dGhvbjozLjguMHJjMQorICAg
IHN0ZXBzOgorICAgICAgIyBSZW1vdmUgSVB2NiBlbnRyeSBmb3IgbG9jYWxob3N0IGluIENpcmNs
ZSBDSSBjb250YWluZXJzIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGFueXdheS4KKyAgICAgIC0g
cnVuOiBzdWRvIGNwIC9ldGMvaG9zdHMgL3RtcDsgc3VkbyBzZWQgLWkgJy86OjEvZCcgL3RtcC9o
b3N0czsgc3VkbyBjcCAvdG1wL2hvc3RzIC9ldGMKKyAgICAgIC0gY2hlY2tvdXQKKyAgICAgIC0g
cnVuOiBzdWRvIHBpcCBpbnN0YWxsIHRveAorICAgICAgLSBydW46IHRveCAtZSBweTM4CisKK3dv
cmtmbG93czoKKyAgdmVyc2lvbjogMgorICBidWlsZDoKKyAgICBqb2JzOgorICAgICAgLSBtYWlu
CisgICAgICAtIHB5MzY6CisgICAgICAgICAgcmVxdWlyZXM6CisgICAgICAgICAgICAtIG1haW4K
KyAgICAgIC0gcHkzNzoKKyAgICAgICAgICByZXF1aXJlczoKKyAgICAgICAgICAgIC0gbWFpbgor
ICAgICAgLSBweTM4OgorICAgICAgICAgIHJlcXVpcmVzOgorICAgICAgICAgICAgLSBtYWluCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLmdpdGh1Yi9GVU5ESU5HLnltbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy8uZ2l0aHViL0ZVTkRJTkcueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uN2FlMjIzYjNkODkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzLy5naXRodWIvRlVORElORy55bWwKQEAgLTAsMCArMSBAQAordGlkZWxpZnQ6ICJweXBpL3dl
YnNvY2tldHMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLmdpdGlnbm9yZSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZWYwZDE2NTIwYzAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy5n
aXRpZ25vcmUKQEAgLTAsMCArMSwxMiBAQAorKi5weWMKKyouc28KKy5jb3ZlcmFnZQorLm15cHlf
Y2FjaGUKKy50b3gKK2J1aWxkLworY29tcGxpYW5jZS9yZXBvcnRzLworZGlzdC8KK2RvY3MvX2J1
aWxkLworaHRtbGNvdi8KK01BTklGRVNUCit3ZWJzb2NrZXRzLmVnZy1pbmZvLwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJzb2NrZXRzLy5yZWFkdGhlZG9jcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvLnJl
YWR0aGVkb2NzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEw
OWFmZmFiNDU3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy8ucmVhZHRoZWRv
Y3MueW1sCkBAIC0wLDAgKzEsNyBAQAorYnVpbGQ6CisgIGltYWdlOiBsYXRlc3QKKworcHl0aG9u
OgorICB2ZXJzaW9uOiAzLjcKKworcmVxdWlyZW1lbnRzX2ZpbGU6IGRvY3MvcmVxdWlyZW1lbnRz
LnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy50cmF2aXMueW1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMDMwNjkzNzU5N2EzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzLy50cmF2
aXMueW1sCkBAIC0wLDAgKzEsMzYgQEAKK2VudjoKKyAgZ2xvYmFsOgorICAjIHdlYnNvY2tldHMg
b25seSB3b3JrcyBvbiBQeXRob24gPj0gMy42LgorICAgIC0gQ0lCV19TS0lQPSJjcDI3LSogY3Az
My0qIGNwMzQtKiBjcDM1LSoiCisgICAgLSBDSUJXX1RFU1RfQ09NTUFORD0icHl0aG9uMyAtVyBk
ZWZhdWx0IC1tIHVuaXR0ZXN0IgorICAgIC0gV0VCU09DS0VUU19URVNUU19USU1FT1VUX0ZBQ1RP
Uj0xMDAKKworbWF0cml4OgorICBpbmNsdWRlOgorICAgIC0gbGFuZ3VhZ2U6IHB5dGhvbgorICAg
ICAgZGlzdDogeGVuaWFsICAgICMgcmVxdWlyZWQgZm9yIFB5dGhvbiAzLjcgKHRyYXZpcy1jaS90
cmF2aXMtY2kjOTA2OSkKKyAgICAgIHN1ZG86IHJlcXVpcmVkCisgICAgICBweXRob246ICIzLjci
CisgICAgICBzZXJ2aWNlczoKKyAgICAgICAgLSBkb2NrZXIKKyAgICAtIG9zOiBvc3gKKyAgICAg
IG9zeF9pbWFnZTogeGNvZGU4LjMKKworaW5zdGFsbDoKKyMgUHl0aG9uIDMgaXMgbmVlZGVkIHRv
IHJ1biBjaWJ1aWxkd2hlZWwgZm9yIHdlYnNvY2tldHMuCisgIC0gaWYgWyAiJHtUUkFWSVNfT1Nf
TkFNRTotfSIgPT0gIm9zeCIgXTsgdGhlbgorICAgICAgYnJldyB1cGRhdGU7CisgICAgICBicmV3
IHVwZ3JhZGUgcHl0aG9uOworICAgIGZpCisjIEluc3RhbGwgY2lidWlsZHdoZWVsIHVzaW5nIHBp
cDMgdG8gbWFrZSBzdXJlIFB5dGhvbiAzIGlzIHVzZWQuCisgIC0gcGlwMyBpbnN0YWxsIC0tdXBn
cmFkZSBjaWJ1aWxkd2hlZWwKKyMgQ3JlYXRlIGZpbGUgJy5jaWJ1aWxkd2hlZWwnIHNvIHRoYXQg
ZXh0ZW5zaW9uIGJ1aWxkIGlzIG5vdCBvcHRpb25hbCAoYy5mLiBzZXR1cC5weSkuCisgIC0gdG91
Y2ggLmNpYnVpbGR3aGVlbAorCitzY3JpcHQ6CisgIC0gY2lidWlsZHdoZWVsIC0tb3V0cHV0LWRp
ciB3aGVlbGhvdXNlCisjIFVwbG9hZCB0byBQeVBJIG9uIHRhZ3MKKyAgLSBpZiBbICIke1RSQVZJ
U19UQUc6LX0iICE9ICIiIF07IHRoZW4KKyAgICAgIHBpcDMgaW5zdGFsbCB0d2luZTsKKyAgICAg
IHB5dGhvbjMgLW0gdHdpbmUgdXBsb2FkIC0tc2tpcC1leGlzdGluZyB3aGVlbGhvdXNlLyo7Cisg
ICAgZmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9DT0RFX09GX0NPTkRVQ1QubWQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvQ09ERV9PRl9DT05EVUNULm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uODBmODBkNTFiMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL0NPREVfT0ZfQ09ORFVDVC5tZApAQCAtMCwwICsxLDQ2IEBACisjIENvbnRyaWJ1
dG9yIENvdmVuYW50IENvZGUgb2YgQ29uZHVjdAorCisjIyBPdXIgUGxlZGdlCisKK0luIHRoZSBp
bnRlcmVzdCBvZiBmb3N0ZXJpbmcgYW4gb3BlbiBhbmQgd2VsY29taW5nIGVudmlyb25tZW50LCB3
ZSBhcyBjb250cmlidXRvcnMgYW5kIG1haW50YWluZXJzIHBsZWRnZSB0byBtYWtpbmcgcGFydGlj
aXBhdGlvbiBpbiBvdXIgcHJvamVjdCBhbmQgb3VyIGNvbW11bml0eSBhIGhhcmFzc21lbnQtZnJl
ZSBleHBlcmllbmNlIGZvciBldmVyeW9uZSwgcmVnYXJkbGVzcyBvZiBhZ2UsIGJvZHkgc2l6ZSwg
ZGlzYWJpbGl0eSwgZXRobmljaXR5LCBnZW5kZXIgaWRlbnRpdHkgYW5kIGV4cHJlc3Npb24sIGxl
dmVsIG9mIGV4cGVyaWVuY2UsIG5hdGlvbmFsaXR5LCBwZXJzb25hbCBhcHBlYXJhbmNlLCByYWNl
LCByZWxpZ2lvbiwgb3Igc2V4dWFsIGlkZW50aXR5IGFuZCBvcmllbnRhdGlvbi4KKworIyMgT3Vy
IFN0YW5kYXJkcworCitFeGFtcGxlcyBvZiBiZWhhdmlvciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGNy
ZWF0aW5nIGEgcG9zaXRpdmUgZW52aXJvbm1lbnQgaW5jbHVkZToKKworKiBVc2luZyB3ZWxjb21p
bmcgYW5kIGluY2x1c2l2ZSBsYW5ndWFnZQorKiBCZWluZyByZXNwZWN0ZnVsIG9mIGRpZmZlcmlu
ZyB2aWV3cG9pbnRzIGFuZCBleHBlcmllbmNlcworKiBHcmFjZWZ1bGx5IGFjY2VwdGluZyBjb25z
dHJ1Y3RpdmUgY3JpdGljaXNtCisqIEZvY3VzaW5nIG9uIHdoYXQgaXMgYmVzdCBmb3IgdGhlIGNv
bW11bml0eQorKiBTaG93aW5nIGVtcGF0aHkgdG93YXJkcyBvdGhlciBjb21tdW5pdHkgbWVtYmVy
cworCitFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGlu
Y2x1ZGU6CisKKyogVGhlIHVzZSBvZiBzZXh1YWxpemVkIGxhbmd1YWdlIG9yIGltYWdlcnkgYW5k
IHVud2VsY29tZSBzZXh1YWwgYXR0ZW50aW9uIG9yIGFkdmFuY2VzCisqIFRyb2xsaW5nLCBpbnN1
bHRpbmcvZGVyb2dhdG9yeSBjb21tZW50cywgYW5kIHBlcnNvbmFsIG9yIHBvbGl0aWNhbCBhdHRh
Y2tzCisqIFB1YmxpYyBvciBwcml2YXRlIGhhcmFzc21lbnQKKyogUHVibGlzaGluZyBvdGhlcnMn
IHByaXZhdGUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgYSBwaHlzaWNhbCBvciBlbGVjdHJvbmljIGFk
ZHJlc3MsIHdpdGhvdXQgZXhwbGljaXQgcGVybWlzc2lvbgorKiBPdGhlciBjb25kdWN0IHdoaWNo
IGNvdWxkIHJlYXNvbmFibHkgYmUgY29uc2lkZXJlZCBpbmFwcHJvcHJpYXRlIGluIGEgcHJvZmVz
c2lvbmFsIHNldHRpbmcKKworIyMgT3VyIFJlc3BvbnNpYmlsaXRpZXMKKworUHJvamVjdCBtYWlu
dGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNsYXJpZnlpbmcgdGhlIHN0YW5kYXJkcyBvZiBh
Y2NlcHRhYmxlIGJlaGF2aW9yIGFuZCBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBhcHByb3ByaWF0ZSBh
bmQgZmFpciBjb3JyZWN0aXZlIGFjdGlvbiBpbiByZXNwb25zZSB0byBhbnkgaW5zdGFuY2VzIG9m
IHVuYWNjZXB0YWJsZSBiZWhhdmlvci4KKworUHJvamVjdCBtYWludGFpbmVycyBoYXZlIHRoZSBy
aWdodCBhbmQgcmVzcG9uc2liaWxpdHkgdG8gcmVtb3ZlLCBlZGl0LCBvciByZWplY3QgY29tbWVu
dHMsIGNvbW1pdHMsIGNvZGUsIHdpa2kgZWRpdHMsIGlzc3VlcywgYW5kIG90aGVyIGNvbnRyaWJ1
dGlvbnMgdGhhdCBhcmUgbm90IGFsaWduZWQgdG8gdGhpcyBDb2RlIG9mIENvbmR1Y3QsIG9yIHRv
IGJhbiB0ZW1wb3JhcmlseSBvciBwZXJtYW5lbnRseSBhbnkgY29udHJpYnV0b3IgZm9yIG90aGVy
IGJlaGF2aW9ycyB0aGF0IHRoZXkgZGVlbSBpbmFwcHJvcHJpYXRlLCB0aHJlYXRlbmluZywgb2Zm
ZW5zaXZlLCBvciBoYXJtZnVsLgorCisjIyBTY29wZQorCitUaGlzIENvZGUgb2YgQ29uZHVjdCBh
cHBsaWVzIGJvdGggd2l0aGluIHByb2plY3Qgc3BhY2VzIGFuZCBpbiBwdWJsaWMgc3BhY2VzIHdo
ZW4gYW4gaW5kaXZpZHVhbCBpcyByZXByZXNlbnRpbmcgdGhlIHByb2plY3Qgb3IgaXRzIGNvbW11
bml0eS4gRXhhbXBsZXMgb2YgcmVwcmVzZW50aW5nIGEgcHJvamVjdCBvciBjb21tdW5pdHkgaW5j
bHVkZSB1c2luZyBhbiBvZmZpY2lhbCBwcm9qZWN0IGUtbWFpbCBhZGRyZXNzLCBwb3N0aW5nIHZp
YSBhbiBvZmZpY2lhbCBzb2NpYWwgbWVkaWEgYWNjb3VudCwgb3IgYWN0aW5nIGFzIGFuIGFwcG9p
bnRlZCByZXByZXNlbnRhdGl2ZSBhdCBhbiBvbmxpbmUgb3Igb2ZmbGluZSBldmVudC4gUmVwcmVz
ZW50YXRpb24gb2YgYSBwcm9qZWN0IG1heSBiZSBmdXJ0aGVyIGRlZmluZWQgYW5kIGNsYXJpZmll
ZCBieSBwcm9qZWN0IG1haW50YWluZXJzLgorCisjIyBFbmZvcmNlbWVudAorCitJbnN0YW5jZXMg
b2YgYWJ1c2l2ZSwgaGFyYXNzaW5nLCBvciBvdGhlcndpc2UgdW5hY2NlcHRhYmxlIGJlaGF2aW9y
IG1heSBiZSByZXBvcnRlZCBieSBjb250YWN0aW5nIHRoZSBwcm9qZWN0IHRlYW0gYXQgYXltZXJp
YyBET1QgYXVndXN0aW4gQVQgZnJhY3RhbGlkZWFzIERPVCBjb20uIFRoZSBwcm9qZWN0IHRlYW0g
d2lsbCByZXZpZXcgYW5kIGludmVzdGlnYXRlIGFsbCBjb21wbGFpbnRzLCBhbmQgd2lsbCByZXNw
b25kIGluIGEgd2F5IHRoYXQgaXQgZGVlbXMgYXBwcm9wcmlhdGUgdG8gdGhlIGNpcmN1bXN0YW5j
ZXMuIFRoZSBwcm9qZWN0IHRlYW0gaXMgb2JsaWdhdGVkIHRvIG1haW50YWluIGNvbmZpZGVudGlh
bGl0eSB3aXRoIHJlZ2FyZCB0byB0aGUgcmVwb3J0ZXIgb2YgYW4gaW5jaWRlbnQuIEZ1cnRoZXIg
ZGV0YWlscyBvZiBzcGVjaWZpYyBlbmZvcmNlbWVudCBwb2xpY2llcyBtYXkgYmUgcG9zdGVkIHNl
cGFyYXRlbHkuCisKK1Byb2plY3QgbWFpbnRhaW5lcnMgd2hvIGRvIG5vdCBmb2xsb3cgb3IgZW5m
b3JjZSB0aGUgQ29kZSBvZiBDb25kdWN0IGluIGdvb2QgZmFpdGggbWF5IGZhY2UgdGVtcG9yYXJ5
IG9yIHBlcm1hbmVudCByZXBlcmN1c3Npb25zIGFzIGRldGVybWluZWQgYnkgb3RoZXIgbWVtYmVy
cyBvZiB0aGUgcHJvamVjdCdzIGxlYWRlcnNoaXAuCisKKyMjIEF0dHJpYnV0aW9uCisKK1RoaXMg
Q29kZSBvZiBDb25kdWN0IGlzIGFkYXB0ZWQgZnJvbSB0aGUgW0NvbnRyaWJ1dG9yIENvdmVuYW50
XVtob21lcGFnZV0sIHZlcnNpb24gMS40LCBhdmFpbGFibGUgYXQgW2h0dHA6Ly9jb250cmlidXRv
ci1jb3ZlbmFudC5vcmcvdmVyc2lvbi8xLzRdW3ZlcnNpb25dCisKK1tob21lcGFnZV06IGh0dHA6
Ly9jb250cmlidXRvci1jb3ZlbmFudC5vcmcKK1t2ZXJzaW9uXTogaHR0cDovL2NvbnRyaWJ1dG9y
LWNvdmVuYW50Lm9yZy92ZXJzaW9uLzEvNC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9M
SUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5iMjk2MmFkYmEyYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvTElDRU5TRQpAQCAtMCwwICsxLDI1IEBACitDb3B5cmlnaHQgKGMpIDIwMTMtMjAx
OSBBeW1lcmljIEF1Z3VzdGluIGFuZCBjb250cmlidXRvcnMuCitBbGwgcmlnaHRzIHJlc2VydmVk
LgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
CisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAg
ICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHdlYnNvY2tldHMgbm9yIHRoZSBuYW1lcyBvZiBp
dHMgY29udHJpYnV0b3JzIG1heQorICAgICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICAgICAgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECitB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKK0RBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKK09SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L01BTklGRVNULmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWM2
NjBiOTViMTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL01BTklGRVNULmlu
CkBAIC0wLDAgKzEsMiBAQAoraW5jbHVkZSBMSUNFTlNFCitpbmNsdWRlIHNyYy93ZWJzb2NrZXRz
L3B5LnR5cGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvTWFrZWZpbGUgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kOWUxNmZlZmUzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvTWFrZWZp
bGUKQEAgLTAsMCArMSwyOSBAQAorLlBIT05ZOiBkZWZhdWx0IHN0eWxlIHRlc3QgY292ZXJhZ2Ug
YnVpbGQgY2xlYW4KKworZXhwb3J0IFBZVEhPTkFTWU5DSU9ERUJVRz0xCitleHBvcnQgUFlUSE9O
UEFUSD1zcmMKKworZGVmYXVsdDogY292ZXJhZ2Ugc3R5bGUKKworc3R5bGU6CisJaXNvcnQgLS1y
ZWN1cnNpdmUgc3JjIHRlc3RzCisJYmxhY2sgc3JjIHRlc3RzCisJZmxha2U4IHNyYyB0ZXN0cwor
CW15cHkgLS1zdHJpY3Qgc3JjCisKK3Rlc3Q6CisJcHl0aG9uIC1XIGRlZmF1bHQgLW0gdW5pdHRl
c3QKKworY292ZXJhZ2U6CisJcHl0aG9uIC1tIGNvdmVyYWdlIGVyYXNlCisJcHl0aG9uIC1XIGRl
ZmF1bHQgLW0gY292ZXJhZ2UgcnVuIC1tIHVuaXR0ZXN0CisJcHl0aG9uIC1tIGNvdmVyYWdlIGh0
bWwKKwlweXRob24gLW0gY292ZXJhZ2UgcmVwb3J0IC0tc2hvdy1taXNzaW5nIC0tZmFpbC11bmRl
cj0xMDAKKworYnVpbGQ6CisJcHl0aG9uIHNldHVwLnB5IGJ1aWxkX2V4dCAtLWlucGxhY2UKKwor
Y2xlYW46CisJZmluZCAuIC1uYW1lICcqLnB5YycgLW8gLW5hbWUgJyouc28nIC1kZWxldGUKKwlm
aW5kIC4gLW5hbWUgX19weWNhY2hlX18gLWRlbGV0ZQorCXJtIC1yZiAuY292ZXJhZ2UgYnVpbGQg
Y29tcGxpYW5jZS9yZXBvcnRzIGRpc3QgZG9jcy9fYnVpbGQgaHRtbGNvdiBNQU5JRkVTVCBzcmMv
d2Vic29ja2V0cy5lZ2ctaW5mbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL1JFQURNRS5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3dlYnNvY2tldHMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjFlMTViYTE5ODFmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy9SRUFETUUucnN0CkBAIC0wLDAgKzEsMTU0IEBACisuLiBpbWFnZTo6IGxvZ28vaG9y
aXpvbnRhbC5zdmcKKyAgIDp3aWR0aDogNDgwcHgKKyAgIDphbHQ6IHdlYnNvY2tldHMKKworfHJ0
ZHwgfHB5cGktdnwgfHB5cGktcHl2ZXJzaW9uc3wgfHB5cGktbHwgfHB5cGktd2hlZWx8IHxjaXJj
bGVjaXwgfGNvZGVjb3Z8CisKKy4uIHxydGR8IGltYWdlOjogaHR0cHM6Ly9yZWFkdGhlZG9jcy5v
cmcvcHJvamVjdHMvd2Vic29ja2V0cy9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vd2Vic29ja2V0cy5yZWFkdGhlZG9jcy5pby8KKworLi4gfHB5cGktdnwgaW1hZ2U6
OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi93ZWJzb2NrZXRzLnN2ZworICAgIDp0YXJn
ZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvd2Vic29ja2V0cworCisuLiB8cHlwaS1w
eXZlcnNpb25zfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25z
L3dlYnNvY2tldHMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlw
aS93ZWJzb2NrZXRzCisKKy4uIHxweXBpLWx8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5p
by9weXBpL2wvd2Vic29ja2V0cy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9u
Lm9yZy9weXBpL3dlYnNvY2tldHMKKworLi4gfHB5cGktd2hlZWx8IGltYWdlOjogaHR0cHM6Ly9p
bWcuc2hpZWxkcy5pby9weXBpL3doZWVsL3dlYnNvY2tldHMuc3ZnCisgICAgOnRhcmdldDogaHR0
cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS93ZWJzb2NrZXRzCisKKy4uIHxjaXJjbGVjaXwgaW1h
Z2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NpcmNsZWNpL3Byb2plY3QvZ2l0aHViL2FhdWd1
c3Rpbi93ZWJzb2NrZXRzLnN2ZworICAgOnRhcmdldDogaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gv
YWF1Z3VzdGluL3dlYnNvY2tldHMKKworLi4gfGNvZGVjb3Z8IGltYWdlOjogaHR0cHM6Ly9jb2Rl
Y292LmlvL2doL2FhdWd1c3Rpbi93ZWJzb2NrZXRzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uu
c3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2doL2FhdWd1c3Rpbi93ZWJzb2Nr
ZXRzCisKK1doYXQgaXMgYGB3ZWJzb2NrZXRzYGA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitgYHdlYnNvY2tldHNgYCBpcyBhIGxpYnJhcnkgZm9yIGJ1aWxkaW5nIFdlYlNvY2tldCBzZXJ2
ZXJzXyBhbmQgY2xpZW50c18gaW4KK1B5dGhvbiB3aXRoIGEgZm9jdXMgb24gY29ycmVjdG5lc3Mg
YW5kIHNpbXBsaWNpdHkuCisKKy4uIF9zZXJ2ZXJzOiBodHRwczovL2dpdGh1Yi5jb20vYWF1Z3Vz
dGluL3dlYnNvY2tldHMvYmxvYi9tYXN0ZXIvZXhhbXBsZS9zZXJ2ZXIucHkKKy4uIF9jbGllbnRz
OiBodHRwczovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMvYmxvYi9tYXN0ZXIvZXhh
bXBsZS9jbGllbnQucHkKKworQnVpbHQgb24gdG9wIG9mIGBgYXN5bmNpb2BgLCBQeXRob24ncyBz
dGFuZGFyZCBhc3luY2hyb25vdXMgSS9PIGZyYW1ld29yaywgaXQKK3Byb3ZpZGVzIGFuIGVsZWdh
bnQgY29yb3V0aW5lLWJhc2VkIEFQSS4KKworYERvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIG9u
IFJlYWQgdGhlIERvY3MuIDxodHRwczovL3dlYnNvY2tldHMucmVhZHRoZWRvY3MuaW8vPmBfCisK
K0hlcmUncyBob3cgYSBjbGllbnQgc2VuZHMgYW5kIHJlY2VpdmVzIG1lc3NhZ2VzOgorCisuLiBj
b3B5LXBhc3RlZCBiZWNhdXNlIEdpdEh1YiBkb2Vzbid0IHN1cHBvcnQgdGhlIGluY2x1ZGUgZGly
ZWN0aXZlCisKKy4uIGNvZGU6OiBweXRob24KKworICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbgor
CisgICAgaW1wb3J0IGFzeW5jaW8KKyAgICBpbXBvcnQgd2Vic29ja2V0cworCisgICAgYXN5bmMg
ZGVmIGhlbGxvKHVyaSk6CisgICAgICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5jb25uZWN0KHVy
aSkgYXMgd2Vic29ja2V0OgorICAgICAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmQoIkhlbGxv
IHdvcmxkISIpCisgICAgICAgICAgICBhd2FpdCB3ZWJzb2NrZXQucmVjdigpCisKKyAgICBhc3lu
Y2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICBoZWxsbygn
d3M6Ly9sb2NhbGhvc3Q6ODc2NScpKQorCitBbmQgaGVyZSdzIGFuIGVjaG8gc2VydmVyOgorCisu
LiBjb2RlOjogcHl0aG9uCisKKyAgICAjIS91c3IvYmluL2VudiBweXRob24KKworICAgIGltcG9y
dCBhc3luY2lvCisgICAgaW1wb3J0IHdlYnNvY2tldHMKKworICAgIGFzeW5jIGRlZiBlY2hvKHdl
YnNvY2tldCwgcGF0aCk6CisgICAgICAgIGFzeW5jIGZvciBtZXNzYWdlIGluIHdlYnNvY2tldDoK
KyAgICAgICAgICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kKG1lc3NhZ2UpCisKKyAgICBhc3luY2lv
LmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICB3ZWJzb2NrZXRz
LnNlcnZlKGVjaG8sICdsb2NhbGhvc3QnLCA4NzY1KSkKKyAgICBhc3luY2lvLmdldF9ldmVudF9s
b29wKCkucnVuX2ZvcmV2ZXIoKQorCitEb2VzIHRoYXQgbG9vayBnb29kPworCitgR2V0IHN0YXJ0
ZWQgd2l0aCB0aGUgdHV0b3JpYWwhIDxodHRwczovL3dlYnNvY2tldHMucmVhZHRoZWRvY3MuaW8v
ZW4vc3RhYmxlL2ludHJvLmh0bWw+YF8KKworLi4gcmF3OjogaHRtbAorCisgICAgPGhyPgorICAg
IDxpbWcgYWxpZ249ImxlZnQiIGhlaWdodD0iMTUwIiB3aWR0aD0iMTUwIiBzcmM9Imh0dHBzOi8v
cmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9tYXN0ZXIvbG9n
by90aWRlbGlmdC5wbmciPgorICAgIDxoMyBhbGlnbj0iY2VudGVyIj48aT53ZWJzb2NrZXRzIGZv
ciBlbnRlcnByaXNlPC9pPjwvaDM+CisgICAgPHAgYWxpZ249ImNlbnRlciI+PGk+QXZhaWxhYmxl
IGFzIHBhcnQgb2YgdGhlIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbjwvaT48L3A+CisgICAgPHAgYWxp
Z249ImNlbnRlciI+PGk+VGhlIG1haW50YWluZXJzIG9mIHdlYnNvY2tldHMgYW5kIHRob3VzYW5k
cyBvZiBvdGhlciBwYWNrYWdlcyBhcmUgd29ya2luZyB3aXRoIFRpZGVsaWZ0IHRvIGRlbGl2ZXIg
Y29tbWVyY2lhbCBzdXBwb3J0IGFuZCBtYWludGVuYW5jZSBmb3IgdGhlIG9wZW4gc291cmNlIGRl
cGVuZGVuY2llcyB5b3UgdXNlIHRvIGJ1aWxkIHlvdXIgYXBwbGljYXRpb25zLiBTYXZlIHRpbWUs
IHJlZHVjZSByaXNrLCBhbmQgaW1wcm92ZSBjb2RlIGhlYWx0aCwgd2hpbGUgcGF5aW5nIHRoZSBt
YWludGFpbmVycyBvZiB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzIHlvdSB1c2UuIDxhIGhyZWY9Imh0
dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcHlwaS13ZWJzb2NrZXRzP3V0bV9z
b3VyY2U9cHlwaS13ZWJzb2NrZXRzJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPXJl
YWRtZSI+TGVhcm4gbW9yZS48L2E+PC9pPjwvcD4KKyAgICA8aHI+CisgICAgPHA+KElmIHlvdSBj
b250cmlidXRlIHRvIDxjb2RlPndlYnNvY2tldHM8L2NvZGU+IGFuZCB3b3VsZCBsaWtlIHRvIGJl
Y29tZSBhbiBvZmZpY2lhbCBzdXBwb3J0IHByb3ZpZGVyLCA8YSBocmVmPSJodHRwczovL2ZyYWN0
YWxpZGVhcy5jb20vIj5sZXQgbWUga25vdzwvYT4uKTwvcD4KKworV2h5IHNob3VsZCBJIHVzZSBg
YHdlYnNvY2tldHNgYD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBk
ZXZlbG9wbWVudCBvZiBgYHdlYnNvY2tldHNgYCBpcyBzaGFwZWQgYnkgZm91ciBwcmluY2lwbGVz
OgorCisxLiAqKlNpbXBsaWNpdHkqKjogYWxsIHlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgaXMgYGBt
c2cgPSBhd2FpdCB3cy5yZWN2KClgYCBhbmQKKyAgIGBgYXdhaXQgd3Muc2VuZChtc2cpYGA7IGBg
d2Vic29ja2V0c2BgIHRha2VzIGNhcmUgb2YgbWFuYWdpbmcgY29ubmVjdGlvbnMKKyAgIHNvIHlv
dSBjYW4gZm9jdXMgb24geW91ciBhcHBsaWNhdGlvbi4KKworMi4gKipSb2J1c3RuZXNzKio6IGBg
d2Vic29ja2V0c2BgIGlzIGJ1aWx0IGZvciBwcm9kdWN0aW9uOyBmb3IgZXhhbXBsZSBpdCB3YXMK
KyAgIHRoZSBvbmx5IGxpYnJhcnkgdG8gYGhhbmRsZSBiYWNrcHJlc3N1cmUgY29ycmVjdGx5YF8g
YmVmb3JlIHRoZSBpc3N1ZQorICAgYmVjYW1lIHdpZGVseSBrbm93biBpbiB0aGUgUHl0aG9uIGNv
bW11bml0eS4KKworMy4gKipRdWFsaXR5Kio6IGBgd2Vic29ja2V0c2BgIGlzIGhlYXZpbHkgdGVz
dGVkLiBDb250aW51b3VzIGludGVncmF0aW9uIGZhaWxzCisgICB1bmRlciAxMDAlIGJyYW5jaCBj
b3ZlcmFnZS4gQWxzbyBpdCBwYXNzZXMgdGhlIGluZHVzdHJ5LXN0YW5kYXJkIGBBdXRvYmFobgor
ICAgVGVzdHN1aXRlYF8uCisKKzQuICoqUGVyZm9ybWFuY2UqKjogbWVtb3J5IHVzZSBpcyBjb25m
aWd1cmFibGUuIEFuIGV4dGVuc2lvbiB3cml0dGVuIGluIEMKKyAgIGFjY2VsZXJhdGVzIGV4cGVu
c2l2ZSBvcGVyYXRpb25zLiBJdCdzIHByZS1jb21waWxlZCBmb3IgTGludXgsIG1hY09TIGFuZAor
ICAgV2luZG93cyBhbmQgcGFja2FnZWQgaW4gdGhlIHdoZWVsIGZvcm1hdCBmb3IgZWFjaCBzeXN0
ZW0gYW5kIFB5dGhvbiB2ZXJzaW9uLgorCitEb2N1bWVudGF0aW9uIGlzIGEgZmlyc3QgY2xhc3Mg
Y29uY2VybiBpbiB0aGUgcHJvamVjdC4gSGVhZCBvdmVyIHRvIGBSZWFkIHRoZQorRG9jc2BfIGFu
ZCBzZWUgZm9yIHlvdXJzZWxmLgorCisuLiBfUmVhZCB0aGUgRG9jczogaHR0cHM6Ly93ZWJzb2Nr
ZXRzLnJlYWR0aGVkb2NzLmlvLworLi4gX2hhbmRsZSBiYWNrcHJlc3N1cmUgY29ycmVjdGx5OiBo
dHRwczovL3ZvcnB1cy5vcmcvYmxvZy9zb21lLXRob3VnaHRzLW9uLWFzeW5jaHJvbm91cy1hcGkt
ZGVzaWduLWluLWEtcG9zdC1hc3luY2F3YWl0LXdvcmxkLyN3ZWJzb2NrZXQtc2VydmVycworLi4g
X0F1dG9iYWhuIFRlc3RzdWl0ZTogaHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93ZWJzb2Nr
ZXRzL2Jsb2IvbWFzdGVyL2NvbXBsaWFuY2UvUkVBRE1FLnJzdAorCitXaHkgc2hvdWxkbid0IEkg
dXNlIGBgd2Vic29ja2V0c2BgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworKiBJZiB5b3UgcHJlZmVyIGNhbGxiYWNrcyBvdmVyIGNvcm91dGluZXM6IGBgd2Vic29ja2V0
c2BgIHdhcyBjcmVhdGVkIHRvCisgIHByb3ZpZGUgdGhlIGJlc3QgY29yb3V0aW5lLWJhc2VkIEFQ
SSB0byBtYW5hZ2UgV2ViU29ja2V0IGNvbm5lY3Rpb25zIGluCisgIFB5dGhvbi4gUGljayBhbm90
aGVyIGxpYnJhcnkgZm9yIGEgY2FsbGJhY2stYmFzZWQgQVBJLgorKiBJZiB5b3UncmUgbG9va2lu
ZyBmb3IgYSBtaXhlZCBIVFRQIC8gV2ViU29ja2V0IGxpYnJhcnk6IGBgd2Vic29ja2V0c2BgIGFp
bXMKKyAgYXQgYmVpbmcgYW4gZXhjZWxsZW50IGltcGxlbWVudGF0aW9uIG9mIDpyZmM6YDY0NTVg
OiBUaGUgV2ViU29ja2V0IFByb3RvY29sCisgIGFuZCA6cmZjOmA3NjkyYDogQ29tcHJlc3Npb24g
RXh0ZW5zaW9ucyBmb3IgV2ViU29ja2V0LiBJdHMgc3VwcG9ydCBmb3IgSFRUUAorICBpcyBtaW5p
bWFsIOKAlCBqdXN0IGVub3VnaCBmb3IgYSBIVFRQIGhlYWx0aCBjaGVjay4KKyogSWYgeW91IHdh
bnQgdG8gdXNlIFB5dGhvbiAyOiBgYHdlYnNvY2tldHNgYCBidWlsZHMgdXBvbiBgYGFzeW5jaW9g
YCB3aGljaAorICBvbmx5IHdvcmtzIG9uIFB5dGhvbiAzLiBgYHdlYnNvY2tldHNgYCByZXF1aXJl
cyBQeXRob24g4omlIDMuNi4xLgorCitXaGF0IGVsc2U/CistLS0tLS0tLS0tCisKK0J1ZyByZXBv
cnRzLCBwYXRjaGVzIGFuZCBzdWdnZXN0aW9ucyBhcmUgd2VsY29tZSEKKworVG8gcmVwb3J0IGEg
c2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcGxlYXNlIHVzZSB0aGUgYFRpZGVsaWZ0IHNlY3VyaXR5
Citjb250YWN0YF8uIFRpZGVsaWZ0IHdpbGwgY29vcmRpbmF0ZSB0aGUgZml4IGFuZCBkaXNjbG9z
dXJlLgorCisuLiBfVGlkZWxpZnQgc2VjdXJpdHkgY29udGFjdDogaHR0cHM6Ly90aWRlbGlmdC5j
b20vc2VjdXJpdHkKKworRm9yIGFueXRoaW5nIGVsc2UsIHBsZWFzZSBvcGVuIGFuIGlzc3VlXyBv
ciBzZW5kIGEgYHB1bGwgcmVxdWVzdGBfLgorCisuLiBfaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNv
bS9hYXVndXN0aW4vd2Vic29ja2V0cy9pc3N1ZXMvbmV3CisuLiBfcHVsbCByZXF1ZXN0OiBodHRw
czovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMvY29tcGFyZS8KKworUGFydGljaXBh
bnRzIG11c3QgdXBob2xkIHRoZSBgQ29udHJpYnV0b3IgQ292ZW5hbnQgY29kZSBvZiBjb25kdWN0
YF8uCisKKy4uIF9Db250cmlidXRvciBDb3ZlbmFudCBjb2RlIG9mIGNvbmR1Y3Q6IGh0dHBzOi8v
Z2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9ibG9iL21hc3Rlci9DT0RFX09GX0NPTkRV
Q1QubWQKKworYGB3ZWJzb2NrZXRzYGAgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBCU0QgbGljZW5z
ZWBfLgorCisuLiBfQlNEIGxpY2Vuc2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vi
c29ja2V0cy9ibG9iL21hc3Rlci9MSUNFTlNFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
Y29tcGxpYW5jZS9SRUFETUUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2NvbXBsaWFuY2UvUkVBRE1F
LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg1NzBmOTE3NmQ1
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL1JFQURNRS5y
c3QKQEAgLTAsMCArMSw1MCBAQAorQXV0b2JhaG4gVGVzdHN1aXRlCis9PT09PT09PT09PT09PT09
PT0KKworR2VuZXJhbCBpbmZvcm1hdGlvbiBhbmQgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBh
cmUgYXZhaWxhYmxlIGF0CitodHRwczovL2dpdGh1Yi5jb20vY3Jvc3NiYXJpby9hdXRvYmFobi10
ZXN0c3VpdGUuCisKK1RvIGltcHJvdmUgcGVyZm9ybWFuY2UsIHlvdSBzaG91bGQgY29tcGlsZSB0
aGUgQyBleHRlbnNpb24gZmlyc3Q6OgorCisgICAgJCBweXRob24gc2V0dXAucHkgYnVpbGRfZXh0
IC0taW5wbGFjZQorCitSdW5uaW5nIHRoZSB0ZXN0IHN1aXRlCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK0FsbCBjb21tYW5kcyBiZWxvdyBtdXN0IGJlIHJ1biBmcm9tIHRoZSBkaXJlY3Rvcnkg
Y29udGFpbmluZyB0aGlzIGZpbGUuCisKK1RvIHRlc3QgdGhlIHNlcnZlcjo6CisKKyAgICAkIFBZ
VEhPTlBBVEg9Li4gcHl0aG9uIHRlc3Rfc2VydmVyLnB5CisgICAgJCB3c3Rlc3QgLW0gZnV6emlu
Z2NsaWVudAorCitUbyB0ZXN0IHRoZSBjbGllbnQ6OgorCisgICAgJCB3c3Rlc3QgLW0gZnV6emlu
Z3NlcnZlcgorICAgICQgUFlUSE9OUEFUSD0uLiBweXRob24gdGVzdF9jbGllbnQucHkKKworUnVu
IHRoZSBmaXJzdCBjb21tYW5kIGluIGEgc2hlbGwuIFJ1biB0aGUgc2Vjb25kIGNvbW1hbmQgaW4g
YW5vdGhlciBzaGVsbC4KK0l0IHNob3VsZCB0YWtlIGFib3V0IHRlbiBtaW51dGVzIHRvIGNvbXBs
ZXRlIOKAlCB3c3Rlc3QgaXMgdGhlIGJvdHRsZW5lY2suCitUaGVuIGtpbGwgdGhlIGZpcnN0IG9u
ZSB3aXRoIEN0cmwtQy4KKworVGhlIHRlc3QgY2xpZW50IG9yIHNlcnZlciBzaG91bGRuJ3QgZGlz
cGxheSBhbnkgZXhjZXB0aW9ucy4gVGhlIHJlc3VsdHMgYXJlCitzdG9yZWQgaW4gcmVwb3J0cy9j
bGllbnRzL2luZGV4Lmh0bWwuCisKK05vdGUgdGhhdCB0aGUgQXV0b2JhaG4gc29mdHdhcmUgb25s
eSBzdXBwb3J0cyBQeXRob24gMiwgd2hpbGUgYGB3ZWJzb2NrZXRzYGAKK29ubHkgc3VwcG9ydHMg
UHl0aG9uIDM7IHlvdSBuZWVkIHR3byBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLgorCitDb25mb3Jt
YW5jZSBub3RlcworLS0tLS0tLS0tLS0tLS0tLS0KKworU29tZSB0ZXN0IGNhc2VzIGFyZSBtb3Jl
IHN0cmljdCB0aGFuIHRoZSBSRkMuIEdpdmVuIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKK2xp
YnJhcnkgYW5kIHRoZSB0ZXN0IGVjaG8gY2xpZW50IG9yIHNlcnZlciwgYGB3ZWJzb2NrZXRzYGAg
Z2V0cyBhICJOb24tU3RyaWN0IgoraW4gdGhlc2UgY2FzZXMuCisKK0luIDMuMiwgMy4zLCA0LjEu
MywgNC4xLjQsIDQuMi4zLCA0LjIuNCwgYW5kIDUuMTUgYGB3ZWJzb2NrZXRzYGAgbm90aWNlcyB0
aGUKK3Byb3RvY29sIGVycm9yIGFuZCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24gYmVmb3JlIGl0IGhh
cyBoYWQgYSBjaGFuY2UgdG8gZWNobwordGhlIHByZXZpb3VzIGZyYW1lLgorCitJbiA2LjQuMyBh
bmQgNi40LjQsIGV2ZW4gdGhvdWdoIGl0IHVzZXMgYW4gaW5jcmVtZW50YWwgZGVjb2RlciwgYGB3
ZWJzb2NrZXRzYGAKK2RvZXNuJ3Qgbm90aWNlIHRoZSBpbnZhbGlkIHV0Zi04IGZhc3QgZW5vdWdo
IHRvIGdldCBhICJTdHJpY3QiIHBhc3MuIFRoZXNlCit0ZXN0cyBhcmUgbW9yZSBzdHJpY3QgdGhh
biB0aGUgUkZDLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9mdXp6
aW5nY2xpZW50Lmpzb24gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9mdXp6aW5nY2xpZW50
Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMDJmZjQ5YTAz
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9mdXp6aW5n
Y2xpZW50Lmpzb24KQEAgLTAsMCArMSwxMSBAQAorCit7CisgICAib3B0aW9ucyI6IHsiZmFpbEJ5
RHJvcCI6IGZhbHNlfSwKKyAgICJvdXRkaXIiOiAiLi9yZXBvcnRzL3NlcnZlcnMiLAorCisgICAi
c2VydmVycyI6IFt7ImFnZW50IjogIndlYnNvY2tldHMiLCAidXJsIjogIndzOi8vbG9jYWxob3N0
Ojg2NDIiLCAib3B0aW9ucyI6IHsidmVyc2lvbiI6IDE4fX1dLAorCisgICAiY2FzZXMiOiBbIioi
XSwKKyAgICJleGNsdWRlLWNhc2VzIjogW10sCisgICAiZXhjbHVkZS1hZ2VudC1jYXNlcyI6IHt9
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9mdXp6aW5nc2VydmVy
Lmpzb24gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9mdXp6aW5nc2VydmVyLmpzb24KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYmRiNDI3MjNlZjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS9mdXp6aW5nc2VydmVyLmpz
b24KQEAgLTAsMCArMSwxMiBAQAorCit7CisgICAidXJsIjogIndzOi8vbG9jYWxob3N0Ojg2NDIi
LAorCisgICAib3B0aW9ucyI6IHsiZmFpbEJ5RHJvcCI6IGZhbHNlfSwKKyAgICJvdXRkaXIiOiAi
Li9yZXBvcnRzL2NsaWVudHMiLAorICAgIndlYnBvcnQiOiA4MDgwLAorCisgICAiY2FzZXMiOiBb
IioiXSwKKyAgICJleGNsdWRlLWNhc2VzIjogW10sCisgICAiZXhjbHVkZS1hZ2VudC1jYXNlcyI6
IHt9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxpYW5jZS90ZXN0X2NsaWVu
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL3Rlc3RfY2xpZW50LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWZkMGY0YjRmYjNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2NvbXBsaWFuY2UvdGVzdF9jbGllbnQucHkKQEAgLTAs
MCArMSw0OSBAQAoraW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdXJsbGliLnBh
cnNlCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgd2Vic29ja2V0cworCisKK2xvZ2dpbmcuYmFz
aWNDb25maWcobGV2ZWw9bG9nZ2luZy5XQVJOSU5HKQorCisjIFVuY29tbWVudCB0aGlzIGxpbmUg
dG8gbWFrZSBvbmx5IHdlYnNvY2tldHMgbW9yZSB2ZXJib3NlLgorIyBsb2dnaW5nLmdldExvZ2dl
cignd2Vic29ja2V0cycpLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisKKworU0VSVkVSID0gIndz
Oi8vMTI3LjAuMC4xOjg2NDIiCitBR0VOVCA9ICJ3ZWJzb2NrZXRzIgorCisKK2FzeW5jIGRlZiBn
ZXRfY2FzZV9jb3VudChzZXJ2ZXIpOgorICAgIHVyaSA9IGYie3NlcnZlcn0vZ2V0Q2FzZUNvdW50
IgorICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5jb25uZWN0KHVyaSkgYXMgd3M6CisgICAgICAg
IG1zZyA9IHdzLnJlY3YoKQorICAgIHJldHVybiBqc29uLmxvYWRzKG1zZykKKworCithc3luYyBk
ZWYgcnVuX2Nhc2Uoc2VydmVyLCBjYXNlLCBhZ2VudCk6CisgICAgdXJpID0gZiJ7c2VydmVyfS9y
dW5DYXNlP2Nhc2U9e2Nhc2V9JmFnZW50PXthZ2VudH0iCisgICAgYXN5bmMgd2l0aCB3ZWJzb2Nr
ZXRzLmNvbm5lY3QodXJpLCBtYXhfc2l6ZT0yICoqIDI1LCBtYXhfcXVldWU9MSkgYXMgd3M6Cisg
ICAgICAgIGFzeW5jIGZvciBtc2cgaW4gd3M6CisgICAgICAgICAgICBhd2FpdCB3cy5zZW5kKG1z
ZykKKworCithc3luYyBkZWYgdXBkYXRlX3JlcG9ydHMoc2VydmVyLCBhZ2VudCk6CisgICAgdXJp
ID0gZiJ7c2VydmVyfS91cGRhdGVSZXBvcnRzP2FnZW50PXthZ2VudH0iCisgICAgYXN5bmMgd2l0
aCB3ZWJzb2NrZXRzLmNvbm5lY3QodXJpKToKKyAgICAgICAgcGFzcworCisKK2FzeW5jIGRlZiBy
dW5fdGVzdHMoc2VydmVyLCBhZ2VudCk6CisgICAgY2FzZXMgPSBhd2FpdCBnZXRfY2FzZV9jb3Vu
dChzZXJ2ZXIpCisgICAgZm9yIGNhc2UgaW4gcmFuZ2UoMSwgY2FzZXMgKyAxKToKKyAgICAgICAg
cHJpbnQoZiJSdW5uaW5nIHRlc3QgY2FzZSB7Y2FzZX0gb3V0IG9mIHtjYXNlc30iLCBlbmQ9Ilxy
IikKKyAgICAgICAgYXdhaXQgcnVuX2Nhc2Uoc2VydmVyLCBjYXNlLCBhZ2VudCkKKyAgICBwcmlu
dChmIlJhbiB7Y2FzZXN9IHRlc3QgY2FzZXMgICAgICAgICAgICAgICAiKQorICAgIGF3YWl0IHVw
ZGF0ZV9yZXBvcnRzKHNlcnZlciwgYWdlbnQpCisKKworbWFpbiA9IHJ1bl90ZXN0cyhTRVJWRVIs
IHVybGxpYi5wYXJzZS5xdW90ZShBR0VOVCkpCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVu
X3VudGlsX2NvbXBsZXRlKG1haW4pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvY29tcGxp
YW5jZS90ZXN0X3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9jb21wbGlhbmNlL3Rlc3Rfc2Vy
dmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODAyMGY2OGQz
NWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2NvbXBsaWFuY2UvdGVzdF9z
ZXJ2ZXIucHkKQEAgLTAsMCArMSwyNyBAQAoraW1wb3J0IGxvZ2dpbmcKKworaW1wb3J0IGFzeW5j
aW8KK2ltcG9ydCB3ZWJzb2NrZXRzCisKKworbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dn
aW5nLldBUk5JTkcpCisKKyMgVW5jb21tZW50IHRoaXMgbGluZSB0byBtYWtlIG9ubHkgd2Vic29j
a2V0cyBtb3JlIHZlcmJvc2UuCisjIGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJzb2NrZXRzJykuc2V0
TGV2ZWwobG9nZ2luZy5ERUJVRykKKworCitIT1NULCBQT1JUID0gIjEyNy4wLjAuMSIsIDg2NDIK
KworCithc3luYyBkZWYgZWNobyh3cywgcGF0aCk6CisgICAgYXN5bmMgZm9yIG1zZyBpbiB3czoK
KyAgICAgICAgYXdhaXQgd3Muc2VuZChtc2cpCisKKworc3RhcnRfc2VydmVyID0gd2Vic29ja2V0
cy5zZXJ2ZShlY2hvLCBIT1NULCBQT1JULCBtYXhfc2l6ZT0yICoqIDI1LCBtYXhfcXVldWU9MSkK
KwordHJ5OgorICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUo
c3RhcnRfc2VydmVyKQorICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9yZXZlcigp
CitleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2RvY3MvTWFrZWZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9NYWtlZmlsZQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiMjVhYTQ5ZDA4ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL01ha2VmaWxlCkBAIC0wLDAgKzEs
MTYwIEBACisjIE1ha2VmaWxlIGZvciBTcGhpbnggZG9jdW1lbnRhdGlvbgorIworCisjIFlvdSBj
YW4gc2V0IHRoZXNlIHZhcmlhYmxlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCitTUEhJTlhPUFRT
ICAgID0KK1NQSElOWEJVSUxEICAgPSBzcGhpbngtYnVpbGQKK1BBUEVSICAgICAgICAgPQorQlVJ
TERESVIgICAgICA9IF9idWlsZAorCisjIEludGVybmFsIHZhcmlhYmxlcy4KK1BBUEVST1BUX2E0
ICAgICA9IC1EIGxhdGV4X3BhcGVyX3NpemU9YTQKK1BBUEVST1BUX2xldHRlciA9IC1EIGxhdGV4
X3BhcGVyX3NpemU9bGV0dGVyCitBTExTUEhJTlhPUFRTICAgPSAtZCAkKEJVSUxERElSKS9kb2N0
cmVlcyAkKFBBUEVST1BUXyQoUEFQRVIpKSAkKFNQSElOWE9QVFMpIC4KKyMgdGhlIGkxOG4gYnVp
bGRlciBjYW5ub3Qgc2hhcmUgdGhlIGVudmlyb25tZW50IGFuZCBkb2N0cmVlcyB3aXRoIHRoZSBv
dGhlcnMKK0kxOE5TUEhJTlhPUFRTICA9ICQoUEFQRVJPUFRfJChQQVBFUikpICQoU1BISU5YT1BU
UykgLgorCisuUEhPTlk6IGhlbHAgY2xlYW4gaHRtbCBkaXJodG1sIHNpbmdsZWh0bWwgcGlja2xl
IGpzb24gaHRtbGhlbHAgcXRoZWxwIGRldmhlbHAgZXB1YiBsYXRleCBsYXRleHBkZiB0ZXh0IG1h
biBjaGFuZ2VzIGxpbmtjaGVjayBkb2N0ZXN0IGdldHRleHQKKworaGVscDoKKwlAZWNobyAiUGxl
YXNlIHVzZSBcYG1ha2UgPHRhcmdldD4nIHdoZXJlIDx0YXJnZXQ+IGlzIG9uZSBvZiIKKwlAZWNo
byAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgorCUBlY2hvICIg
IGRpcmh0bWwgICAgdG8gbWFrZSBIVE1MIGZpbGVzIG5hbWVkIGluZGV4Lmh0bWwgaW4gZGlyZWN0
b3JpZXMiCisJQGVjaG8gIiAgc2luZ2xlaHRtbCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwg
ZmlsZSIKKwlAZWNobyAiICBwaWNrbGUgICAgIHRvIG1ha2UgcGlja2xlIGZpbGVzIgorCUBlY2hv
ICIgIGpzb24gICAgICAgdG8gbWFrZSBKU09OIGZpbGVzIgorCUBlY2hvICIgIGh0bWxoZWxwICAg
dG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgorCUBlY2hvICIgIHF0
aGVscCAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIHF0aGVscCBwcm9qZWN0IgorCUBlY2hv
ICIgIGRldmhlbHAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIERldmhlbHAgcHJvamVjdCIK
KwlAZWNobyAiICBlcHViICAgICAgIHRvIG1ha2UgYW4gZXB1YiIKKwlAZWNobyAiICBsYXRleCAg
ICAgIHRvIG1ha2UgTGFUZVggZmlsZXMsIHlvdSBjYW4gc2V0IFBBUEVSPWE0IG9yIFBBUEVSPWxl
dHRlciIKKwlAZWNobyAiICBsYXRleHBkZiAgIHRvIG1ha2UgTGFUZVggZmlsZXMgYW5kIHJ1biB0
aGVtIHRocm91Z2ggcGRmbGF0ZXgiCisJQGVjaG8gIiAgdGV4dCAgICAgICB0byBtYWtlIHRleHQg
ZmlsZXMiCisJQGVjaG8gIiAgbWFuICAgICAgICB0byBtYWtlIG1hbnVhbCBwYWdlcyIKKwlAZWNo
byAiICB0ZXhpbmZvICAgIHRvIG1ha2UgVGV4aW5mbyBmaWxlcyIKKwlAZWNobyAiICBpbmZvICAg
ICAgIHRvIG1ha2UgVGV4aW5mbyBmaWxlcyBhbmQgcnVuIHRoZW0gdGhyb3VnaCBtYWtlaW5mbyIK
KwlAZWNobyAiICBnZXR0ZXh0ICAgIHRvIG1ha2UgUE8gbWVzc2FnZSBjYXRhbG9ncyIKKwlAZWNo
byAiICBjaGFuZ2VzICAgIHRvIG1ha2UgYW4gb3ZlcnZpZXcgb2YgYWxsIGNoYW5nZWQvYWRkZWQv
ZGVwcmVjYXRlZCBpdGVtcyIKKwlAZWNobyAiICBsaW5rY2hlY2sgIHRvIGNoZWNrIGFsbCBleHRl
cm5hbCBsaW5rcyBmb3IgaW50ZWdyaXR5IgorCUBlY2hvICIgIGRvY3Rlc3QgICAgdG8gcnVuIGFs
bCBkb2N0ZXN0cyBlbWJlZGRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoaWYgZW5hYmxlZCkiCisJ
QGVjaG8gIiAgc3BlbGxpbmcgICB0byBjaGVjayBmb3IgdHlwb3MgaW4gZG9jdW1lbnRhdGlvbiIK
KworY2xlYW46CisJLXJtIC1yZiAkKEJVSUxERElSKS8qCisKK2h0bWw6CisJJChTUEhJTlhCVUlM
RCkgLWIgaHRtbCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2h0bWwKKwlAZWNobworCUBl
Y2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZXMgYXJlIGluICQoQlVJTERESVIpL2h0
bWwuIgorCitkaXJodG1sOgorCSQoU1BISU5YQlVJTEQpIC1iIGRpcmh0bWwgJChBTExTUEhJTlhP
UFRTKSAkKEJVSUxERElSKS9kaXJodG1sCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQu
IFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9kaXJodG1sLiIKKworc2luZ2xlaHRt
bDoKKwkkKFNQSElOWEJVSUxEKSAtYiBzaW5nbGVodG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlM
RERJUikvc2luZ2xlaHRtbAorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgSFRN
TCBwYWdlIGlzIGluICQoQlVJTERESVIpL3NpbmdsZWh0bWwuIgorCitwaWNrbGU6CisJJChTUEhJ
TlhCVUlMRCkgLWIgcGlja2xlICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvcGlja2xlCisJ
QGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIHBp
Y2tsZSBmaWxlcy4iCisKK2pzb246CisJJChTUEhJTlhCVUlMRCkgLWIganNvbiAkKEFMTFNQSElO
WE9QVFMpICQoQlVJTERESVIpL2pzb24KKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsg
bm93IHlvdSBjYW4gcHJvY2VzcyB0aGUgSlNPTiBmaWxlcy4iCisKK2h0bWxoZWxwOgorCSQoU1BI
SU5YQlVJTEQpIC1iIGh0bWxoZWxwICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvaHRtbGhl
bHAKKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcnVuIEhUTUwg
SGVscCBXb3Jrc2hvcCB3aXRoIHRoZSIgXAorCSAgICAgICIuaGhwIHByb2plY3QgZmlsZSBpbiAk
KEJVSUxERElSKS9odG1saGVscC4iCisKK3F0aGVscDoKKwkkKFNQSElOWEJVSUxEKSAtYiBxdGhl
bHAgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9xdGhlbHAKKwlAZWNobworCUBlY2hvICJC
dWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcnVuICJxY29sbGVjdGlvbmdlbmVyYXRvciIgd2l0
aCB0aGUiIFwKKwkgICAgICAiLnFoY3AgcHJvamVjdCBmaWxlIGluICQoQlVJTERESVIpL3F0aGVs
cCwgbGlrZSB0aGlzOiIKKwlAZWNobyAiIyBxY29sbGVjdGlvbmdlbmVyYXRvciAkKEJVSUxERElS
KS9xdGhlbHAvd2Vic29ja2V0cy5xaGNwIgorCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6
IgorCUBlY2hvICIjIGFzc2lzdGFudCAtY29sbGVjdGlvbkZpbGUgJChCVUlMRERJUikvcXRoZWxw
L3dlYnNvY2tldHMucWhjIgorCitkZXZoZWxwOgorCSQoU1BISU5YQlVJTEQpIC1iIGRldmhlbHAg
JChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9kZXZoZWxwCisJQGVjaG8KKwlAZWNobyAiQnVp
bGQgZmluaXNoZWQuIgorCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6IgorCUBlY2hvICIj
IG1rZGlyIC1wICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC93ZWJzb2NrZXRzIgorCUBlY2hv
ICIjIGxuIC1zICQoQlVJTERESVIpL2RldmhlbHAgJCRIT01FLy5sb2NhbC9zaGFyZS9kZXZoZWxw
L3dlYnNvY2tldHMiCisJQGVjaG8gIiMgZGV2aGVscCIKKworZXB1YjoKKwkkKFNQSElOWEJVSUxE
KSAtYiBlcHViICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZXB1YgorCUBlY2hvCisJQGVj
aG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgZXB1YiBmaWxlIGlzIGluICQoQlVJTERESVIpL2VwdWIu
IgorCitsYXRleDoKKwkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQo
QlVJTERESVIpL2xhdGV4CisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IHRoZSBMYVRl
WCBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvbGF0ZXguIgorCUBlY2hvICJSdW4gXGBtYWtlJyBp
biB0aGF0IGRpcmVjdG9yeSB0byBydW4gdGhlc2UgdGhyb3VnaCAocGRmKWxhdGV4IiBcCisJICAg
ICAgIih1c2UgXGBtYWtlIGxhdGV4cGRmJyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGljYWxseSku
IgorCitsYXRleHBkZjoKKwkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMp
ICQoQlVJTERESVIpL2xhdGV4CisJQGVjaG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMgdGhyb3VnaCBw
ZGZsYXRleC4uLiIKKwkkKE1BS0UpIC1DICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYKKwlAZWNo
byAicGRmbGF0ZXggZmluaXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xh
dGV4LiIKKwordGV4dDoKKwkkKFNQSElOWEJVSUxEKSAtYiB0ZXh0ICQoQUxMU1BISU5YT1BUUykg
JChCVUlMRERJUikvdGV4dAorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgdGV4
dCBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4dC4iCisKK21hbjoKKwkkKFNQSElOWEJVSUxE
KSAtYiBtYW4gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9tYW4KKwlAZWNobworCUBlY2hv
ICJCdWlsZCBmaW5pc2hlZC4gVGhlIG1hbnVhbCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvbWFu
LiIKKwordGV4aW5mbzoKKwkkKFNQSElOWEJVSUxEKSAtYiB0ZXhpbmZvICQoQUxMU1BISU5YT1BU
UykgJChCVUlMRERJUikvdGV4aW5mbworCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBU
aGUgVGV4aW5mbyBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4aW5mby4iCisJQGVjaG8gIlJ1
biBcYG1ha2UnIGluIHRoYXQgZGlyZWN0b3J5IHRvIHJ1biB0aGVzZSB0aHJvdWdoIG1ha2VpbmZv
IiBcCisJICAgICAgIih1c2UgXGBtYWtlIGluZm8nIGhlcmUgdG8gZG8gdGhhdCBhdXRvbWF0aWNh
bGx5KS4iCisKK2luZm86CisJJChTUEhJTlhCVUlMRCkgLWIgdGV4aW5mbyAkKEFMTFNQSElOWE9Q
VFMpICQoQlVJTERESVIpL3RleGluZm8KKwlAZWNobyAiUnVubmluZyBUZXhpbmZvIGZpbGVzIHRo
cm91Z2ggbWFrZWluZm8uLi4iCisJbWFrZSAtQyAkKEJVSUxERElSKS90ZXhpbmZvIGluZm8KKwlA
ZWNobyAibWFrZWluZm8gZmluaXNoZWQ7IHRoZSBJbmZvIGZpbGVzIGFyZSBpbiAkKEJVSUxERElS
KS90ZXhpbmZvLiIKKworZ2V0dGV4dDoKKwkkKFNQSElOWEJVSUxEKSAtYiBnZXR0ZXh0ICQoSTE4
TlNQSElOWE9QVFMpICQoQlVJTERESVIpL2xvY2FsZQorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZp
bmlzaGVkLiBUaGUgbWVzc2FnZSBjYXRhbG9ncyBhcmUgaW4gJChCVUlMRERJUikvbG9jYWxlLiIK
KworY2hhbmdlczoKKwkkKFNQSElOWEJVSUxEKSAtYiBjaGFuZ2VzICQoQUxMU1BISU5YT1BUUykg
JChCVUlMRERJUikvY2hhbmdlcworCUBlY2hvCisJQGVjaG8gIlRoZSBvdmVydmlldyBmaWxlIGlz
IGluICQoQlVJTERESVIpL2NoYW5nZXMuIgorCitsaW5rY2hlY2s6CisJJChTUEhJTlhCVUlMRCkg
LWIgbGlua2NoZWNrICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvbGlua2NoZWNrCisJQGVj
aG8KKwlAZWNobyAiTGluayBjaGVjayBjb21wbGV0ZTsgbG9vayBmb3IgYW55IGVycm9ycyBpbiB0
aGUgYWJvdmUgb3V0cHV0ICIgXAorCSAgICAgICJvciBpbiAkKEJVSUxERElSKS9saW5rY2hlY2sv
b3V0cHV0LnR4dC4iCisKK2RvY3Rlc3Q6CisJJChTUEhJTlhCVUlMRCkgLWIgZG9jdGVzdCAkKEFM
TFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RvY3Rlc3QKKwlAZWNobyAiVGVzdGluZyBvZiBkb2N0
ZXN0cyBpbiB0aGUgc291cmNlcyBmaW5pc2hlZCwgbG9vayBhdCB0aGUgIiBcCisJICAgICAgInJl
c3VsdHMgaW4gJChCVUlMRERJUikvZG9jdGVzdC9vdXRwdXQudHh0LiIKKworc3BlbGxpbmc6CisJ
JChTUEhJTlhCVUlMRCkgLWIgc3BlbGxpbmcgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9z
cGVsbGluZworCUBlY2hvCisJQGVjaG8gIkNoZWNrIGZpbmlzaGVkLiBXcm9uZyB3b3JkcyBjYW4g
YmUgZm91bmQgaW4gIiBcCisJCSIkKEJVSUxERElSKS9zcGVsbGluZy9vdXRwdXQudHh0LiIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL19zdGF0aWMvdGlkZWxpZnQucG5nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2RvY3MvX3N0YXRpYy90aWRlbGlmdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yZDFlZDRhMmMwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZG9jcy9fc3RhdGljL3RpZGVsaWZ0LnBuZwpAQCAtMCwwICsxIEBACisu
Li8uLi9sb2dvL3RpZGVsaWZ0LnBuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL19zdGF0aWMvd2Vic29ja2V0cy5zdmcgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvZG9jcy9fc3RhdGljL3dlYnNvY2tldHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODRjMzE2NzU4MzcyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL2RvY3MvX3N0YXRpYy93ZWJzb2NrZXRzLnN2ZwpAQCAtMCwwICsxIEBA
CisuLi8uLi9sb2dvL3ZlcnRpY2FsLnN2ZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2FwaS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
ZG9jcy9hcGkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDI2
NWE5MWMyY2RhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvYXBpLnJz
dApAQCAtMCwwICsxLDE1MiBAQAorQVBJCis9PT0KKworRGVzaWduCistLS0tLS0KKworYGB3ZWJz
b2NrZXRzYGAgcHJvdmlkZXMgY29tcGxldGUgY2xpZW50IGFuZCBzZXJ2ZXIgaW1wbGVtZW50YXRp
b25zLCBhcyBzaG93bgoraW4gdGhlIDpkb2M6YGdldHRpbmcgc3RhcnRlZCBndWlkZSA8aW50cm8+
YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBidWlsdCBvbiB0b3AKK29mIGxvdy1sZXZlbCBBUElzIHJl
ZmxlY3RpbmcgdGhlIHR3byBwaGFzZXMgb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbDoKKworMS4g
QW4gb3BlbmluZyBoYW5kc2hha2UsIGluIHRoZSBmb3JtIG9mIGFuIEhUVFAgVXBncmFkZSByZXF1
ZXN0OworCisyLiBEYXRhIHRyYW5zZmVyLCBhcyBmcmFtZWQgbWVzc2FnZXMsIGVuZGluZyB3aXRo
IGEgY2xvc2luZyBoYW5kc2hha2UuCisKK1RoZSBmaXJzdCBwaGFzZSBpcyBkZXNpZ25lZCB0byBp
bnRlZ3JhdGUgd2l0aCBleGlzdGluZyBIVFRQIHNvZnR3YXJlLgorYGB3ZWJzb2NrZXRzYGAgcHJv
dmlkZXMgYSBtaW5pbWFsIGltcGxlbWVudGF0aW9uIHRvIGJ1aWxkLCBwYXJzZSBhbmQgdmFsaWRh
dGUKK0hUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KKworVGhlIHNlY29uZCBwaGFzZSBpcyB0
aGUgY29yZSBvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sLiBgYHdlYnNvY2tldHNgYAorcHJvdmlk
ZXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgYGBhc3luY2lvYGAgd2l0aCBh
IHNpbXBsZSBBUEkuCisKK0ZvciBjb252ZW5pZW5jZSwgcHVibGljIEFQSXMgY2FuIGJlIGltcG9y
dGVkIGRpcmVjdGx5IGZyb20gdGhlCis6bW9kOmB3ZWJzb2NrZXRzYCBwYWNrYWdlLCB1bmxlc3Mg
bm90ZWQgb3RoZXJ3aXNlLiBBbnl0aGluZyB0aGF0IGlzbid0IGxpc3RlZAoraW4gdGhpcyBkb2N1
bWVudCBpcyBhIHByaXZhdGUgQVBJLgorCitIaWdoLWxldmVsCistLS0tLS0tLS0tCisKK1NlcnZl
cgorLi4uLi4uCisKKy4uIGF1dG9tb2R1bGU6OiB3ZWJzb2NrZXRzLnNlcnZlcgorCisgICAgLi4g
YXV0b2Z1bmN0aW9uOjogc2VydmUod3NfaGFuZGxlciwgaG9zdD1Ob25lLCBwb3J0PU5vbmUsICos
IGNyZWF0ZV9wcm90b2NvbD1Ob25lLCBwaW5nX2ludGVydmFsPTIwLCBwaW5nX3RpbWVvdXQ9MjAs
IGNsb3NlX3RpbWVvdXQ9MTAsIG1heF9zaXplPTIgKiogMjAsIG1heF9xdWV1ZT0yICoqIDUsIHJl
YWRfbGltaXQ9MiAqKiAxNiwgd3JpdGVfbGltaXQ9MiAqKiAxNiwgbG9vcD1Ob25lLCBjb21wcmVz
c2lvbj0nZGVmbGF0ZScsIG9yaWdpbnM9Tm9uZSwgZXh0ZW5zaW9ucz1Ob25lLCBzdWJwcm90b2Nv
bHM9Tm9uZSwgZXh0cmFfaGVhZGVycz1Ob25lLCBwcm9jZXNzX3JlcXVlc3Q9Tm9uZSwgc2VsZWN0
X3N1YnByb3RvY29sPU5vbmUsICoqa3dkcykKKyAgICAgICAgOmFzeW5jOgorCisgICAgLi4gYXV0
b2Z1bmN0aW9uOjogdW5peF9zZXJ2ZSh3c19oYW5kbGVyLCBwYXRoLCAqLCBjcmVhdGVfcHJvdG9j
b2w9Tm9uZSwgcGluZ19pbnRlcnZhbD0yMCwgcGluZ190aW1lb3V0PTIwLCBjbG9zZV90aW1lb3V0
PTEwLCBtYXhfc2l6ZT0yICoqIDIwLCBtYXhfcXVldWU9MiAqKiA1LCByZWFkX2xpbWl0PTIgKiog
MTYsIHdyaXRlX2xpbWl0PTIgKiogMTYsIGxvb3A9Tm9uZSwgY29tcHJlc3Npb249J2RlZmxhdGUn
LCBvcmlnaW5zPU5vbmUsIGV4dGVuc2lvbnM9Tm9uZSwgc3VicHJvdG9jb2xzPU5vbmUsIGV4dHJh
X2hlYWRlcnM9Tm9uZSwgcHJvY2Vzc19yZXF1ZXN0PU5vbmUsIHNlbGVjdF9zdWJwcm90b2NvbD1O
b25lLCAqKmt3ZHMpCisgICAgICAgIDphc3luYzoKKworCisgICAgLi4gYXV0b2NsYXNzOjogV2Vi
U29ja2V0U2VydmVyCisKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IGNsb3NlCisgICAgICAgIC4u
IGF1dG9tZXRob2Q6OiB3YWl0X2Nsb3NlZAorICAgICAgICAuLiBhdXRvYXR0cmlidXRlOjogc29j
a2V0cworCisgICAgLi4gYXV0b2NsYXNzOjogV2ViU29ja2V0U2VydmVyUHJvdG9jb2wod3NfaGFu
ZGxlciwgd3Nfc2VydmVyLCAqLCBwaW5nX2ludGVydmFsPTIwLCBwaW5nX3RpbWVvdXQ9MjAsIGNs
b3NlX3RpbWVvdXQ9MTAsIG1heF9zaXplPTIgKiogMjAsIG1heF9xdWV1ZT0yICoqIDUsIHJlYWRf
bGltaXQ9MiAqKiAxNiwgd3JpdGVfbGltaXQ9MiAqKiAxNiwgbG9vcD1Ob25lLCBvcmlnaW5zPU5v
bmUsIGV4dGVuc2lvbnM9Tm9uZSwgc3VicHJvdG9jb2xzPU5vbmUsIGV4dHJhX2hlYWRlcnM9Tm9u
ZSwgcHJvY2Vzc19yZXF1ZXN0PU5vbmUsIHNlbGVjdF9zdWJwcm90b2NvbD1Ob25lKQorCisgICAg
ICAgIC4uIGF1dG9tZXRob2Q6OiBoYW5kc2hha2UKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IHBy
b2Nlc3NfcmVxdWVzdAorICAgICAgICAuLiBhdXRvbWV0aG9kOjogc2VsZWN0X3N1YnByb3RvY29s
CisKK0NsaWVudAorLi4uLi4uCisKKy4uIGF1dG9tb2R1bGU6OiB3ZWJzb2NrZXRzLmNsaWVudAor
CisgICAgLi4gYXV0b2Z1bmN0aW9uOjogY29ubmVjdCh1cmksICosIGNyZWF0ZV9wcm90b2NvbD1O
b25lLCBwaW5nX2ludGVydmFsPTIwLCBwaW5nX3RpbWVvdXQ9MjAsIGNsb3NlX3RpbWVvdXQ9MTAs
IG1heF9zaXplPTIgKiogMjAsIG1heF9xdWV1ZT0yICoqIDUsIHJlYWRfbGltaXQ9MiAqKiAxNiwg
d3JpdGVfbGltaXQ9MiAqKiAxNiwgbG9vcD1Ob25lLCBjb21wcmVzc2lvbj0nZGVmbGF0ZScsIG9y
aWdpbj1Ob25lLCBleHRlbnNpb25zPU5vbmUsIHN1YnByb3RvY29scz1Ob25lLCBleHRyYV9oZWFk
ZXJzPU5vbmUsICoqa3dkcykKKyAgICAgICAgOmFzeW5jOgorCisgICAgLi4gYXV0b2Z1bmN0aW9u
OjogdW5peF9jb25uZWN0KHBhdGgsIHVyaT0id3M6Ly9sb2NhbGhvc3QvIiwgKiwgY3JlYXRlX3By
b3RvY29sPU5vbmUsIHBpbmdfaW50ZXJ2YWw9MjAsIHBpbmdfdGltZW91dD0yMCwgY2xvc2VfdGlt
ZW91dD0xMCwgbWF4X3NpemU9MiAqKiAyMCwgbWF4X3F1ZXVlPTIgKiogNSwgcmVhZF9saW1pdD0y
ICoqIDE2LCB3cml0ZV9saW1pdD0yICoqIDE2LCBsb29wPU5vbmUsIGNvbXByZXNzaW9uPSdkZWZs
YXRlJywgb3JpZ2luPU5vbmUsIGV4dGVuc2lvbnM9Tm9uZSwgc3VicHJvdG9jb2xzPU5vbmUsIGV4
dHJhX2hlYWRlcnM9Tm9uZSwgKiprd2RzKQorICAgICAgICA6YXN5bmM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBXZWJTb2NrZXRDbGllbnRQcm90b2NvbCgqLCBwaW5nX2ludGVydmFsPTIwLCBwaW5n
X3RpbWVvdXQ9MjAsIGNsb3NlX3RpbWVvdXQ9MTAsIG1heF9zaXplPTIgKiogMjAsIG1heF9xdWV1
ZT0yICoqIDUsIHJlYWRfbGltaXQ9MiAqKiAxNiwgd3JpdGVfbGltaXQ9MiAqKiAxNiwgbG9vcD1O
b25lLCBvcmlnaW49Tm9uZSwgZXh0ZW5zaW9ucz1Ob25lLCBzdWJwcm90b2NvbHM9Tm9uZSwgZXh0
cmFfaGVhZGVycz1Ob25lKQorCisgICAgICAgIC4uIGF1dG9tZXRob2Q6OiBoYW5kc2hha2UKKwor
U2hhcmVkCisuLi4uLi4KKworLi4gYXV0b21vZHVsZTo6IHdlYnNvY2tldHMucHJvdG9jb2wKKwor
ICAgIC4uIGF1dG9jbGFzczo6IFdlYlNvY2tldENvbW1vblByb3RvY29sKCosIHBpbmdfaW50ZXJ2
YWw9MjAsIHBpbmdfdGltZW91dD0yMCwgY2xvc2VfdGltZW91dD0xMCwgbWF4X3NpemU9MiAqKiAy
MCwgbWF4X3F1ZXVlPTIgKiogNSwgcmVhZF9saW1pdD0yICoqIDE2LCB3cml0ZV9saW1pdD0yICoq
IDE2LCBsb29wPU5vbmUpCisKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IGNsb3NlCisgICAgICAg
IC4uIGF1dG9tZXRob2Q6OiB3YWl0X2Nsb3NlZAorCisgICAgICAgIC4uIGF1dG9tZXRob2Q6OiBy
ZWN2CisgICAgICAgIC4uIGF1dG9tZXRob2Q6OiBzZW5kCisKKyAgICAgICAgLi4gYXV0b21ldGhv
ZDo6IHBpbmcKKyAgICAgICAgLi4gYXV0b21ldGhvZDo6IHBvbmcKKworICAgICAgICAuLiBhdXRv
YXR0cmlidXRlOjogbG9jYWxfYWRkcmVzcworICAgICAgICAuLiBhdXRvYXR0cmlidXRlOjogcmVt
b3RlX2FkZHJlc3MKKworICAgICAgICAuLiBhdXRvYXR0cmlidXRlOjogb3BlbgorICAgICAgICAu
LiBhdXRvYXR0cmlidXRlOjogY2xvc2VkCisKK1R5cGVzCisuLi4uLgorCisuLiBhdXRvbW9kdWxl
Ojogd2Vic29ja2V0cy50eXBpbmcKKworICAgIC4uIGF1dG9kYXRhOjogRGF0YQorCisKK1Blci1N
ZXNzYWdlIERlZmxhdGUgRXh0ZW5zaW9uCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgor
CisuLiBhdXRvbW9kdWxlOjogd2Vic29ja2V0cy5leHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0
ZQorCisgICAgLi4gYXV0b2NsYXNzOjogU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5CisK
KyAgICAuLiBhdXRvY2xhc3M6OiBDbGllbnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkKKworSFRU
UCBCYXNpYyBBdXRoCisuLi4uLi4uLi4uLi4uLi4KKworLi4gYXV0b21vZHVsZTo6IHdlYnNvY2tl
dHMuYXV0aAorCisgICAgLi4gYXV0b2Z1bmN0aW9uOjogYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0
b3J5CisKKyAgICAuLiBhdXRvY2xhc3M6OiBCYXNpY0F1dGhXZWJTb2NrZXRTZXJ2ZXJQcm90b2Nv
bAorCisgICAgICAgIC4uIGF1dG9tZXRob2Q6OiBwcm9jZXNzX3JlcXVlc3QKKworRXhjZXB0aW9u
cworLi4uLi4uLi4uLgorCisuLiBhdXRvbW9kdWxlOjogd2Vic29ja2V0cy5leGNlcHRpb25zCisg
ICAgOm1lbWJlcnM6CisKK0xvdy1sZXZlbAorLS0tLS0tLS0tCisKK09wZW5pbmcgaGFuZHNoYWtl
CisuLi4uLi4uLi4uLi4uLi4uLgorCisuLiBhdXRvbW9kdWxlOjogd2Vic29ja2V0cy5oYW5kc2hh
a2UKKyAgICA6bWVtYmVyczoKKworRGF0YSB0cmFuc2ZlcgorLi4uLi4uLi4uLi4uLgorCisuLiBh
dXRvbW9kdWxlOjogd2Vic29ja2V0cy5mcmFtaW5nCisgICAgOm1lbWJlcnM6CisKK1VSSSBwYXJz
ZXIKKy4uLi4uLi4uLi4KKworLi4gYXV0b21vZHVsZTo6IHdlYnNvY2tldHMudXJpCisgICAgOm1l
bWJlcnM6CisKK1V0aWxpdGllcworLi4uLi4uLi4uCisKKy4uIGF1dG9tb2R1bGU6OiB3ZWJzb2Nr
ZXRzLmhlYWRlcnMKKyAgICA6bWVtYmVyczoKKworLi4gYXV0b21vZHVsZTo6IHdlYnNvY2tldHMu
aHR0cAorICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvY2hh
bmdlbG9nLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2NoYW5nZWxvZy5yc3QKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNGYxOGE3NjU3ZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9jaGFuZ2Vsb2cucnN0CkBAIC0wLDAgKzEsNTYz
IEBACitDaGFuZ2Vsb2cKKy0tLS0tLS0tLQorCisuLiBjdXJyZW50bW9kdWxlOjogd2Vic29ja2V0
cworCis4LjIKKy4uLgorCisqSW4gZGV2ZWxvcG1lbnQqCisKKzguMQorLi4uCisKKyogQWRkZWQg
Y29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjguCisKKzguMC4yCisuLi4uLgorCisqIFJlc3Rv
cmVkIHRoZSBhYmlsaXR5IHRvIHBhc3MgYSBzb2NrZXQgd2l0aCB0aGUgYGBzb2NrYGAgcGFyYW1l
dGVyIG9mCisgIDpmdW5jOmB+c2VydmVyLnNlcnZlYC4KKworKiBSZW1vdmVkIGFuIGluY29ycmVj
dCBhc3NlcnRpb24gd2hlbiBhIGNvbm5lY3Rpb24gZHJvcHMuCisKKzguMC4xCisuLi4uLgorCisq
IFJlc3RvcmVkIHRoZSBhYmlsaXR5IHRvIGltcG9ydCBgYFdlYlNvY2tldFByb3RvY29sRXJyb3Jg
YCBmcm9tCisgIGBgd2Vic29ja2V0c2BgLgorCis4LjAKKy4uLgorCisuLiB3YXJuaW5nOjoKKwor
ICAgICoqVmVyc2lvbiA4LjAgZHJvcHMgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjQgYW5k
IDMuNS4qKgorCisuLiBub3RlOjoKKworICAgICoqVmVyc2lvbiA4LjAgZXhwZWN0cyoqIGBgcHJv
Y2Vzc19yZXF1ZXN0YGAgKip0byBiZSBhIGNvcm91dGluZS4qKgorCisgICAgUHJldmlvdXNseSwg
aXQgY291bGQgYmUgYSBmdW5jdGlvbiBvciBhIGNvcm91dGluZS4KKworICAgIElmIHlvdSdyZSBw
YXNzaW5nIGEgYGBwcm9jZXNzX3JlcXVlc3RgYCBhcmd1bWVudCB0byA6ZnVuYzpgfnNlcnZlci5z
ZXJ2ZWAKKyAgICBvciA6Y2xhc3M6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2xgLCBv
ciBpZiB5b3UncmUgb3ZlcnJpZGluZworICAgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0U2Vy
dmVyUHJvdG9jb2wucHJvY2Vzc19yZXF1ZXN0YCBpbiBhIHN1YmNsYXNzLAorICAgIGRlZmluZSBp
dCB3aXRoIGBgYXN5bmMgZGVmYGAgaW5zdGVhZCBvZiBgYGRlZmBgLgorCisgICAgRm9yIGJhY2t3
YXJkcyBjb21wYXRpYmlsaXR5LCBmdW5jdGlvbnMgYXJlIHN0aWxsIG1vc3RseSBzdXBwb3J0ZWQs
IGJ1dAorICAgIG1peGluZyBmdW5jdGlvbnMgYW5kIGNvcm91dGluZXMgd29uJ3Qgd29yayBpbiBz
b21lIGluaGVyaXRhbmNlIHNjZW5hcmlvcy4KKworLi4gbm90ZTo6CisKKyAgICAqKlZlcnNpb24g
OC4wIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSoqIGBgbWF4X3F1ZXVlYGAgKipwYXJhbWV0
ZXIuKioKKworICAgIElmIHlvdSB3ZXJlIHNldHRpbmcgYGBtYXhfcXVldWU9MGBgIHRvIG1ha2Ug
dGhlIHF1ZXVlIG9mIGluY29taW5nIG1lc3NhZ2VzCisgICAgdW5ib3VuZGVkLCBjaGFuZ2UgaXQg
dG8gYGBtYXhfcXVldWU9Tm9uZWBgLgorCisuLiBub3RlOjoKKworICAgICoqVmVyc2lvbiA4LjAg
ZGVwcmVjYXRlcyB0aGUqKiBgYGhvc3RgYCAqKiwqKiBgYHBvcnRgYCAqKiwgYW5kKiogYGBzZWN1
cmVgYAorICAgICoqYXR0cmlidXRlcyBvZioqIDpjbGFzczpgfnByb3RvY29sLldlYlNvY2tldENv
bW1vblByb3RvY29sYC4KKworICAgIFVzZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1v
blByb3RvY29sLmxvY2FsX2FkZHJlc3NgIGluIHNlcnZlcnMgYW5kCisgICAgOmF0dHI6YH5wcm90
b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZW1vdGVfYWRkcmVzc2AgaW4gY2xpZW50cwor
ICAgIGluc3RlYWQgb2YgYGBob3N0YGAgYW5kIGBgcG9ydGBgLgorCisuLiBub3RlOjoKKworICAg
ICoqVmVyc2lvbiA4LjAgcmVuYW1lcyB0aGUqKiBgYFdlYlNvY2tldFByb3RvY29sRXJyb3JgYCAq
KmV4Y2VwdGlvbioqCisgICAgdG8gOmV4YzpgUHJvdG9jb2xFcnJvcmAgKiouKioKKworICAgIEEg
YGBXZWJTb2NrZXRQcm90b2NvbEVycm9yYGAgYWxpYXMgcHJvdmlkZXMgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkuCisKKy4uIG5vdGU6OgorCisgICAgKipWZXJzaW9uIDguMCBhZGRzIHRoZSByZWFz
b24gcGhyYXNlIHRvIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgbG93LWxldmVsCisgICAgQVBJKiog
OmZ1bmM6YH5odHRwLnJlYWRfcmVzcG9uc2VgICoqLioqCisKK0Fsc286CisKKyogOm1ldGg6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCwKKyAgOm1ldGg6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5waW5nYCwgYW5kCisgIDptZXRoOmB+cHJvdG9jb2wu
V2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucG9uZ2Agc3VwcG9ydCBieXRlcy1saWtlIHR5cGVzCisg
IDpjbGFzczpgYnl0ZWFycmF5YCBhbmQgOmNsYXNzOmBtZW1vcnl2aWV3YCBpbiBhZGRpdGlvbiB0
byA6Y2xhc3M6YGJ5dGVzYC4KKworKiBBZGRlZCA6ZXhjOmB+ZXhjZXB0aW9ucy5Db25uZWN0aW9u
Q2xvc2VkT0tgIGFuZAorICA6ZXhjOmB+ZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkRXJyb3Jg
IHN1YmNsYXNzZXMgb2YKKyAgOmV4YzpgfmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAgdG8g
dGVsbCBhcGFydCBub3JtYWwgY29ubmVjdGlvbgorICB0ZXJtaW5hdGlvbiBmcm9tIGVycm9ycy4K
KworKiBBZGRlZCA6ZnVuYzpgfmF1dGguYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0b3J5YCB0byBl
bmZvcmNlIEhUVFAgQmFzaWMgQXV0aAorICBvbiB0aGUgc2VydmVyIHNpZGUuCisKKyogOmZ1bmM6
YH5jbGllbnQuY29ubmVjdGAgaGFuZGxlcyByZWRpcmVjdHMgZnJvbSB0aGUgc2VydmVyIGR1cmlu
ZyB0aGUKKyAgaGFuZHNoYWtlLgorCisqIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgIHN1cHBvcnRz
IG92ZXJyaWRpbmcgYGBob3N0YGAgYW5kIGBgcG9ydGBgLgorCisqIEFkZGVkIDpmdW5jOmB+Y2xp
ZW50LnVuaXhfY29ubmVjdGAgZm9yIGNvbm5lY3RpbmcgdG8gVW5peCBzb2NrZXRzLgorCisqIElt
cHJvdmVkIHN1cHBvcnQgZm9yIHNlbmRpbmcgZnJhZ21lbnRlZCBtZXNzYWdlcyBieSBhY2NlcHRp
bmcgYXN5bmNocm9ub3VzCisgIGl0ZXJhdG9ycyBpbiA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tl
dENvbW1vblByb3RvY29sLnNlbmRgLgorCisqIFByZXZlbnRlZCBzcHVyaW91cyBsb2cgbWVzc2Fn
ZXMgYWJvdXQgOmV4YzpgfmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAKKyAgZXhjZXB0aW9u
cyBpbiBrZWVwYWxpdmUgcGluZyB0YXNrLiBJZiB5b3Ugd2VyZSB1c2luZyBgYHBpbmdfdGltZW91
dD1Ob25lYGAKKyAgYXMgYSB3b3JrYXJvdW5kLCB5b3UgY2FuIHJlbW92ZSBpdC4KKworKiBDaGFu
Z2VkIDptZXRoOmBXZWJTb2NrZXRTZXJ2ZXIuY2xvc2UoKSA8c2VydmVyLldlYlNvY2tldFNlcnZl
ci5jbG9zZT5gIHRvCisgIHBlcmZvcm0gYSBwcm9wZXIgY2xvc2luZyBoYW5kc2hha2UgaW5zdGVh
ZCBvZiBmYWlsaW5nIHRoZSBjb25uZWN0aW9uLgorCisqIEF2b2lkZWQgYSBjcmFzaCB3aGVuIGEg
YGBleHRyYV9oZWFkZXJzYGAgY2FsbGFibGUgcmV0dXJucyBgYE5vbmVgYC4KKworKiBJbXByb3Zl
ZCBlcnJvciBtZXNzYWdlcyB3aGVuIEhUVFAgcGFyc2luZyBmYWlscy4KKworKiBFbmFibGVkIHJl
YWRsaW5lIGluIHRoZSBpbnRlcmFjdGl2ZSBjbGllbnQuCisKKyogQWRkZWQgdHlwZSBoaW50cyAo
OnBlcDpgNDg0YCkuCisKKyogQWRkZWQgYSBGQVEgdG8gdGhlIGRvY3VtZW50YXRpb24uCisKKyog
QWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgZXh0ZW5zaW9ucy4KKworKiBEb2N1bWVudGVkIGhvdyB0
byBvcHRpbWl6ZSBtZW1vcnkgdXNhZ2UuCisKKyogSW1wcm92ZWQgQVBJIGRvY3VtZW50YXRpb24u
CisKKzcuMAorLi4uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKipWZXJzaW9uIDcuMCByZW5hbWVz
IHRoZSoqIGBgdGltZW91dGBgICoqYXJndW1lbnQgb2YqKgorICAgIDpmdW5jOmB+c2VydmVyLnNl
cnZlKClgICoqYW5kKiogOmZ1bmM6YH5jbGllbnQuY29ubmVjdGAgKip0byoqCisgICAgYGBjbG9z
ZV90aW1lb3V0YGAgKiouKioKKworICAgIFRoaXMgcHJldmVudHMgY29uZnVzaW9uIHdpdGggYGBw
aW5nX3RpbWVvdXRgYC4KKworICAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYGB0aW1l
b3V0YGAgaXMgc3RpbGwgc3VwcG9ydGVkLgorCisuLiB3YXJuaW5nOjoKKworICAgICoqVmVyc2lv
biA3LjAgY2hhbmdlcyBob3cgYSBzZXJ2ZXIgdGVybWluYXRlcyBjb25uZWN0aW9ucyB3aGVuIGl0
J3MKKyAgICBjbG9zZWQgd2l0aCoqIDptZXRoOmB+c2VydmVyLldlYlNvY2tldFNlcnZlci5jbG9z
ZWAgKiouKioKKworICAgIFByZXZpb3VzbHksIGNvbm5lY3Rpb25zIGhhbmRsZXJzIHdlcmUgY2Fu
Y2VsZWQuIE5vdywgY29ubmVjdGlvbnMgYXJlCisgICAgY2xvc2VkIHdpdGggY2xvc2UgY29kZSAx
MDAxIChnb2luZyBhd2F5KS4gRnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlCisgICAgY29ubmVj
dGlvbiBoYW5kbGVyLCB0aGlzIGlzIHRoZSBzYW1lIGFzIGlmIHRoZSByZW1vdGUgZW5kcG9pbnQg
d2FzCisgICAgZGlzY29ubmVjdGluZy4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIHRvIHByZXBhcmUg
Zm9yCisgICAgOmV4YzpgfmFzeW5jaW8uQ2FuY2VsbGVkRXJyb3JgIGluIGNvbm5lY3Rpb24gaGFu
ZGxlcnMuCisKKyAgICBZb3UgY2FuIHJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW9yIGJ5IGFk
ZGluZyB0aGUgZm9sbG93aW5nIGxpbmUgYXQgdGhlCisgICAgYmVnaW5uaW5nIG9mIGNvbm5lY3Rp
b24gaGFuZGxlcnM6OgorCisgICAgICAgIGRlZiBoYW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6Cisg
ICAgICAgICAgICBjbG9zZWQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUod2Vic29ja2V0LndhaXRf
Y2xvc2VkKCkpCisgICAgICAgICAgICBjbG9zZWQuYWRkX2RvbmVfY2FsbGJhY2sobGFtYmRhIHRh
c2s6IHRhc2suY2FuY2VsKCkpCisKKy4uIG5vdGU6OgorCisgICAgKipWZXJzaW9uIDcuMCBjaGFu
Z2VzIGhvdyBhKiogOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5waW5n
YAorICAgICoqdGhhdCBoYXNuJ3QgcmVjZWl2ZWQgYSBwb25nIHlldCBiZWhhdmVzIHdoZW4gdGhl
IGNvbm5lY3Rpb24gaXMgY2xvc2VkLioqCisKKyAgICBUaGUgcGluZyDigJQgYXMgaW4gYGBwaW5n
ID0gYXdhaXQgd2Vic29ja2V0LnBpbmcoKWBgIOKAlCB1c2VkIHRvIGJlIGNhbmNlbGVkCisgICAg
d2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQsIHNvIHRoYXQgYGBhd2FpdCBwaW5nYGAgcmFp
c2VkCisgICAgOmV4YzpgfmFzeW5jaW8uQ2FuY2VsbGVkRXJyb3JgLiBOb3cgYGBhd2FpdCBwaW5n
YGAgcmFpc2VzCisgICAgOmV4YzpgfmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAgbGlrZSBv
dGhlciBwdWJsaWMgQVBJcy4KKworLi4gbm90ZTo6CisKKyAgICAqKlZlcnNpb24gNy4wIHJhaXNl
cyBhKiogOmV4YzpgUnVudGltZUVycm9yYCAqKmV4Y2VwdGlvbiBpZiB0d28gY29yb3V0aW5lcwor
ICAgIGNhbGwqKiA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnJlY3Zg
ICoqY29uY3VycmVudGx5LioqCisKKyAgICBDb25jdXJyZW50IGNhbGxzIGxlYWQgdG8gbm9uLWRl
dGVybWluaXN0aWMgYmVoYXZpb3IgYmVjYXVzZSB0aGVyZSBhcmUgbm8KKyAgICBndWFyYW50ZWVz
IGFib3V0IHdoaWNoIGNvcm91dGluZSB3aWxsIHJlY2VpdmUgd2hpY2ggbWVzc2FnZS4KKworQWxz
bzoKKworKiBgYHdlYnNvY2tldHNgYCBzZW5kcyBQaW5nIGZyYW1lcyBhdCByZWd1bGFyIGludGVy
dmFscyBhbmQgY2xvc2VzIHRoZQorICBjb25uZWN0aW9uIGlmIGl0IGRvZXNuJ3QgcmVjZWl2ZSBh
IG1hdGNoaW5nIFBvbmcgZnJhbWUuIFNlZQorICA6Y2xhc3M6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbGAgZm9yIGRldGFpbHMuCisKKyogQWRkZWQgYGBwcm9jZXNzX3JlcXVlc3Rg
YCBhbmQgYGBzZWxlY3Rfc3VicHJvdG9jb2xgYCBhcmd1bWVudHMgdG8KKyAgOmZ1bmM6YH5zZXJ2
ZXIuc2VydmVgIGFuZCA6Y2xhc3M6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2xgIHRv
CisgIGN1c3RvbWl6ZSA6bWV0aDpgfnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9j
ZXNzX3JlcXVlc3RgIGFuZAorICA6bWV0aDpgfnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2Nv
bC5zZWxlY3Rfc3VicHJvdG9jb2xgIHdpdGhvdXQKKyAgc3ViY2xhc3NpbmcgOmNsYXNzOmB+c2Vy
dmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sYC4KKworKiBBZGRlZCBzdXBwb3J0IGZvciBzZW5k
aW5nIGZyYWdtZW50ZWQgbWVzc2FnZXMuCisKKyogQWRkZWQgdGhlIDptZXRoOmB+cHJvdG9jb2wu
V2ViU29ja2V0Q29tbW9uUHJvdG9jb2wud2FpdF9jbG9zZWRgIG1ldGhvZCB0bworICBwcm90b2Nv
bHMuCisKKyogQWRkZWQgYW4gaW50ZXJhY3RpdmUgY2xpZW50OiBgYHB5dGhvbiAtbSB3ZWJzb2Nr
ZXRzIDx1cmk+YGAuCisKKyogQ2hhbmdlZCB0aGUgYGBvcmlnaW5zYGAgYXJndW1lbnQgdG8gcmVw
cmVzZW50IHRoZSBsYWNrIG9mIGFuIG9yaWdpbiB3aXRoCisgIGBgTm9uZWBgIHJhdGhlciB0aGFu
IGBgJydgYC4KKworKiBGaXhlZCBhIGRhdGEgbG9zcyBidWcgaW4gOm1ldGg6YH5wcm90b2NvbC5X
ZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZWN2YDoKKyAgY2FuY2VsaW5nIGl0IGF0IHRoZSB3cm9u
ZyB0aW1lIGNvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBiZWluZyBkcm9wcGVkLgorCisqIEltcHJv
dmVkIGhhbmRsaW5nIG9mIG11bHRpcGxlIEhUVFAgaGVhZGVycyB3aXRoIHRoZSBzYW1lIG5hbWUu
CisKKyogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMgd2hlbiBhIHJlcXVpcmVkIEhUVFAgaGVhZGVy
IGlzIG1pc3NpbmcuCisKKzYuMAorLi4uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKipWZXJzaW9u
IDYuMCBpbnRyb2R1Y2VzIHRoZSoqIDpjbGFzczpgfmh0dHAuSGVhZGVyc2AgKipjbGFzcyBmb3Ig
bWFuYWdpbmcKKyAgICBIVFRQIGhlYWRlcnMgYW5kIGNoYW5nZXMgc2V2ZXJhbCBwdWJsaWMgQVBJ
czoqKgorCisgICAgKiA6bWV0aDpgfnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9j
ZXNzX3JlcXVlc3RgIG5vdyByZWNlaXZlcyBhCisgICAgICA6Y2xhc3M6YH5odHRwLkhlYWRlcnNg
IGluc3RlYWQgb2YgYSA6Y2xhc3M6YH5odHRwLmNsaWVudC5IVFRQTWVzc2FnZWAgaW4KKyAgICAg
IHRoZSBgYHJlcXVlc3RfaGVhZGVyc2BgIGFyZ3VtZW50LgorCisgICAgKiBUaGUgOmF0dHI6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZXF1ZXN0X2hlYWRlcnNgIGFuZAorICAg
ICAgOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZXNwb25zZV9oZWFk
ZXJzYCBhdHRyaWJ1dGVzIG9mCisgICAgICA6Y2xhc3M6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21t
b25Qcm90b2NvbGAgYXJlIDpjbGFzczpgfmh0dHAuSGVhZGVyc2AKKyAgICAgIGluc3RlYWQgb2Yg
OmNsYXNzOmB+aHR0cC5jbGllbnQuSFRUUE1lc3NhZ2VgLgorCisgICAgKiBUaGUgOmF0dHI6YH5w
cm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yYXdfcmVxdWVzdF9oZWFkZXJzYCBhbmQK
KyAgICAgIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmF3X3Jlc3Bv
bnNlX2hlYWRlcnNgCisgICAgICBhdHRyaWJ1dGVzIG9mIDpjbGFzczpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sYCBhcmUgcmVtb3ZlZC4KKyAgICAgIFVzZSA6bWV0aDpgfmh0dHAu
SGVhZGVycy5yYXdfaXRlbXNgIGluc3RlYWQuCisKKyAgICAqIEZ1bmN0aW9ucyBkZWZpbmVkIGlu
IHRoZSA6bW9kOmB+aGFuZHNoYWtlYCBtb2R1bGUgbm93IHJlY2VpdmUKKyAgICAgIDpjbGFzczpg
fmh0dHAuSGVhZGVyc2AgaW4gYXJndW1lbnQgaW5zdGVhZCBvZiBgYGdldF9oZWFkZXJgYCBvcgor
ICAgICAgYGBzZXRfaGVhZGVyYGAgZnVuY3Rpb25zLiBUaGlzIGFmZmVjdHMgbGlicmFyaWVzIHRo
YXQgcmVseSBvbgorICAgICAgbG93LWxldmVsIEFQSXMuCisKKyAgICAqIEZ1bmN0aW9ucyBkZWZp
bmVkIGluIHRoZSA6bW9kOmB+aHR0cGAgbW9kdWxlIG5vdyByZXR1cm4gSFRUUCBoZWFkZXJzIGFz
CisgICAgICA6Y2xhc3M6YH5odHRwLkhlYWRlcnNgIGluc3RlYWQgb2YgbGlzdHMgb2YgYGAobmFt
ZSwgdmFsdWUpYGAgcGFpcnMuCisKKyAgICBTaW5jZSA6Y2xhc3M6YH5odHRwLkhlYWRlcnNgIGFu
ZCA6Y2xhc3M6YH5odHRwLmNsaWVudC5IVFRQTWVzc2FnZWAgcHJvdmlkZQorICAgIHNpbWlsYXIg
QVBJcywgdGhpcyBjaGFuZ2Ugd29uJ3QgYWZmZWN0IG1vc3Qgb2YgdGhlIGNvZGUgZGVhbGluZyB3
aXRoIEhUVFAKKyAgICBoZWFkZXJzLgorCisKK0Fsc286CisKKyogQWRkZWQgY29tcGF0aWJpbGl0
eSB3aXRoIFB5dGhvbiAzLjcuCisKKzUuMC4xCisuLi4uLgorCisqIEZpeGVkIGEgcmVncmVzc2lv
biBpbiB0aGUgNS4wIHJlbGVhc2UgdGhhdCBicm9rZSBzb21lIGludm9jYXRpb25zIG9mCisgIDpm
dW5jOmB+c2VydmVyLnNlcnZlKClgIGFuZCA6ZnVuYzpgfmNsaWVudC5jb25uZWN0YC4KKworNS4w
CisuLi4KKworLi4gbm90ZTo6CisKKyAgICAqKlZlcnNpb24gNS4wIGZpeGVzIGEgc2VjdXJpdHkg
aXNzdWUgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDQuMC4qKgorCisgICAgVmVyc2lvbiA0LjAgd2Fz
IHZ1bG5lcmFibGUgdG8gZGVuaWFsIG9mIHNlcnZpY2UgYnkgbWVtb3J5IGV4aGF1c3Rpb24KKyAg
ICBiZWNhdXNlIGl0IGRpZG4ndCBlbmZvcmNlIGBgbWF4X3NpemVgYCB3aGVuIGRlY29tcHJlc3Np
bmcgY29tcHJlc3NlZAorICAgIG1lc3NhZ2VzIChgQ1ZFLTIwMTgtMTAwMDUxOGBfKS4KKworICAg
IC4uIF9DVkUtMjAxOC0xMDAwNTE4OiBodHRwczovL252ZC5uaXN0Lmdvdi92dWxuL2RldGFpbC9D
VkUtMjAxOC0xMDAwNTE4CisKKy4uIG5vdGU6OgorCisgICAgKipWZXJzaW9uIDUuMCBhZGRzIGEq
KiBgYHVzZXJfaW5mb2BgICoqZmllbGQgdG8gdGhlIHJldHVybiB2YWx1ZSBvZioqCisgICAgOmZ1
bmM6YH51cmkucGFyc2VfdXJpYCAqKmFuZCoqIDpjbGFzczpgfnVyaS5XZWJTb2NrZXRVUklgICoq
LioqCisKKyAgICBJZiB5b3UncmUgdW5wYWNraW5nIDpjbGFzczpgfmV4Y2VwdGlvbnMuV2ViU29j
a2V0VVJJYCBpbnRvIGZvdXIgdmFyaWFibGVzLAorICAgIGFkanVzdCB5b3VyIGNvZGUgdG8gYWNj
b3VudCBmb3IgdGhhdCBmaWZ0aCBmaWVsZC4KKworQWxzbzoKKworKiA6ZnVuYzpgfmNsaWVudC5j
b25uZWN0YCBwZXJmb3JtcyBIVFRQIEJhc2ljIEF1dGggd2hlbiB0aGUgVVJJIGNvbnRhaW5zCisg
IGNyZWRlbnRpYWxzLgorCisqIEl0ZXJhdGluZyBvbiBpbmNvbWluZyBtZXNzYWdlcyBubyBsb25n
ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZQorICBjb25uZWN0aW9uIHRlcm1pbmF0ZXMg
d2l0aCBjbG9zZSBjb2RlIDEwMDEgKGdvaW5nIGF3YXkpLgorCisqIEEgcGxhaW4gSFRUUCByZXF1
ZXN0IG5vdyByZWNlaXZlcyBhIDQyNiBVcGdyYWRlIFJlcXVpcmVkIHJlc3BvbnNlIGFuZAorICBk
b2Vzbid0IGxvZyBhIHN0YWNrIHRyYWNlLgorCisqIDpmdW5jOmB+c2VydmVyLnVuaXhfc2VydmVg
IGNhbiBiZSB1c2VkIGFzIGFuIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIgb24KKyAgUHl0
aG9uIOKJpSAzLjUuMS4KKworKiBBZGRlZCB0aGUgOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbC5jbG9zZWRgIHByb3BlcnR5IHRvCisgIHByb3RvY29scy4KKworKiBJZiBh
IDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucGluZ2AgZG9lc24ndCBy
ZWNlaXZlIGEgcG9uZywKKyAgaXQncyBjYW5jZWxlZCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNs
b3NlZC4KKworKiBSZXBvcnRlZCB0aGUgY2F1c2Ugb2YgOmV4YzpgfmV4Y2VwdGlvbnMuQ29ubmVj
dGlvbkNsb3NlZGAgZXhjZXB0aW9ucy4KKworKiBBZGRlZCBuZXcgZXhhbXBsZXMgaW4gdGhlIGRv
Y3VtZW50YXRpb24uCisKKyogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHdpdGggbmV3IGZlYXR1cmVz
IGZyb20gUHl0aG9uIDMuNi4KKworKiBJbXByb3ZlZCBzZXZlcmFsIG90aGVyIHNlY3Rpb25zIG9m
IHRoZSBkb2N1bWVudGF0aW9uLgorCisqIEZpeGVkIG1pc3NpbmcgY2xvc2UgY29kZSwgd2hpY2gg
Y2F1c2VkIDpleGM6YFR5cGVFcnJvcmAgb24gY29ubmVjdGlvbiBjbG9zZS4KKworKiBGaXhlZCBh
IHJhY2UgY29uZGl0aW9uIGluIHRoZSBjbG9zaW5nIGhhbmRzaGFrZSB0aGF0IHJhaXNlZAorICA6
ZXhjOmB+ZXhjZXB0aW9ucy5JbnZhbGlkU3RhdGVgLgorCisqIFN0b3BwZWQgbG9nZ2luZyBzdGFj
ayB0cmFjZXMgd2hlbiB0aGUgVENQIGNvbm5lY3Rpb24gZGllcyBwcmVtYXR1cmVseS4KKworKiBQ
cmV2ZW50ZWQgd3JpdGluZyB0byBhIGNsb3NpbmcgVENQIGNvbm5lY3Rpb24gZHVyaW5nIHVuY2xl
YW4gc2h1dGRvd25zLgorCisqIE1hZGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvbiBtb3JlIHJvYnVz
dCB0byBuZXR3b3JrIGNvbmdlc3Rpb24uCisKKyogUHJldmVudGVkIHByb2Nlc3Npbmcgb2YgaW5j
b21pbmcgZnJhbWVzIGFmdGVyIGZhaWxpbmcgdGhlIGNvbm5lY3Rpb24uCisKKzQuMC4xCisuLi4u
LgorCisqIEZpeGVkIGlzc3VlcyB3aXRoIHRoZSBwYWNrYWdpbmcgb2YgdGhlIDQuMCByZWxlYXNl
LgorCis0LjAKKy4uLgorCisuLiB3YXJuaW5nOjoKKworICAgICoqVmVyc2lvbiA0LjAgZW5hYmxl
cyBjb21wcmVzc2lvbiB3aXRoIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLioqCisK
KyAgICBJbiBBdWd1c3QgMjAxNywgRmlyZWZveCBhbmQgQ2hyb21lIHN1cHBvcnQgaXQsIGJ1dCBu
b3QgU2FmYXJpIGFuZCBJRS4KKworICAgIENvbXByZXNzaW9uIHNob3VsZCBpbXByb3ZlIHBlcmZv
cm1hbmNlIGJ1dCBpdCBpbmNyZWFzZXMgUkFNIGFuZCBDUFUgdXNlLgorCisgICAgSWYgeW91IHdh
bnQgdG8gZGlzYWJsZSBjb21wcmVzc2lvbiwgYWRkIGBgY29tcHJlc3Npb249Tm9uZWBgIHdoZW4g
Y2FsbGluZworICAgIDpmdW5jOmB+c2VydmVyLnNlcnZlKClgIG9yIDpmdW5jOmB+Y2xpZW50LmNv
bm5lY3RgLgorCisuLiB3YXJuaW5nOjoKKworICAgICoqVmVyc2lvbiA0LjAgZHJvcHMgY29tcGF0
aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjMuKioKKworLi4gbm90ZTo6CisKKyAgICAqKlZlcnNpb24g
NC4wIHJlbW92ZXMgdGhlKiogYGBzdGF0ZV9uYW1lYGAgKiphdHRyaWJ1dGUgb2YgcHJvdG9jb2xz
LioqCisKKyAgICBVc2UgYGBwcm90b2NvbC5zdGF0ZS5uYW1lYGAgaW5zdGVhZCBvZiBgYHByb3Rv
Y29sLnN0YXRlX25hbWVgYC4KKworQWxzbzoKKworKiA6Y2xhc3M6YH5wcm90b2NvbC5XZWJTb2Nr
ZXRDb21tb25Qcm90b2NvbGAgaW5zdGFuY2VzIGNhbiBiZSB1c2VkIGFzCisgIGFzeW5jaHJvbm91
cyBpdGVyYXRvcnMgb24gUHl0aG9uIOKJpSAzLjYuIFRoZXkgeWllbGQgaW5jb21pbmcgbWVzc2Fn
ZXMuCisKKyogQWRkZWQgOmZ1bmM6YH5zZXJ2ZXIudW5peF9zZXJ2ZWAgZm9yIGxpc3RlbmluZyBv
biBVbml4IHNvY2tldHMuCisKKyogQWRkZWQgdGhlIDphdHRyOmB+c2VydmVyLldlYlNvY2tldFNl
cnZlci5zb2NrZXRzYCBhdHRyaWJ1dGUgdG8gdGhlIHJldHVybgorICB2YWx1ZSBvZiA6ZnVuYzpg
fnNlcnZlci5zZXJ2ZWAuCisKKyogUmVvcmdhbml6ZWQgYW5kIGV4dGVuZGVkIGRvY3VtZW50YXRp
b24uCisKKyogQWJvcnRlZCBjb25uZWN0aW9ucyBpZiB0aGV5IGRvbid0IGNsb3NlIHdpdGhpbiB0
aGUgY29uZmlndXJlZCBgYHRpbWVvdXRgYC4KKworKiBSZXdyb3RlIGNvbm5lY3Rpb24gdGVybWlu
YXRpb24gdG8gaW5jcmVhc2Ugcm9idXN0bmVzcyBpbiBlZGdlIGNhc2VzLgorCisqIFN0b3BwZWQg
bGVha2luZyBwZW5kaW5nIHRhc2tzIHdoZW4gOm1ldGg6YH5hc3luY2lvLlRhc2suY2FuY2VsYCBp
cyBjYWxsZWQgb24KKyAgYSBjb25uZWN0aW9uIHdoaWxlIGl0J3MgYmVpbmcgY2xvc2VkLgorCisq
IFJlZHVjZWQgdmVyYm9zaXR5IG9mICJGYWlsaW5nIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiIg
bG9ncy4KKworKiBBbGxvd2VkIGBgZXh0cmFfaGVhZGVyc2BgIHRvIG92ZXJyaWRlIGBgU2VydmVy
YGAgYW5kIGBgVXNlci1BZ2VudGBgIGhlYWRlcnMuCisKKzMuNAorLi4uCisKKyogUmVuYW1lZCA6
ZnVuYzpgfnNlcnZlci5zZXJ2ZSgpYCBhbmQgOmZ1bmM6YH5jbGllbnQuY29ubmVjdGAncyBgYGts
YXNzYGAKKyAgYXJndW1lbnQgdG8gYGBjcmVhdGVfcHJvdG9jb2xgYCB0byByZWZsZWN0IHRoYXQg
aXQgY2FuIGFsc28gYmUgYSBjYWxsYWJsZS4KKyAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
LCBgYGtsYXNzYGAgaXMgc3RpbGwgc3VwcG9ydGVkLgorCisqIDpmdW5jOmB+c2VydmVyLnNlcnZl
YCBjYW4gYmUgdXNlZCBhcyBhbiBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyIG9uCisgIFB5
dGhvbiDiiaUgMy41LjEuCisKKyogQWRkZWQgc3VwcG9ydCBmb3IgY3VzdG9taXppbmcgaGFuZGxp
bmcgb2YgaW5jb21pbmcgY29ubmVjdGlvbnMgd2l0aAorICA6bWV0aDpgfnNlcnZlci5XZWJTb2Nr
ZXRTZXJ2ZXJQcm90b2NvbC5wcm9jZXNzX3JlcXVlc3RgLgorCisqIE1hZGUgcmVhZCBhbmQgd3Jp
dGUgYnVmZmVyIHNpemVzIGNvbmZpZ3VyYWJsZS4KKworKiBSZXdyb3RlIEhUVFAgaGFuZGxpbmcg
Zm9yIHNpbXBsaWNpdHkgYW5kIHBlcmZvcm1hbmNlLgorCisqIEFkZGVkIGFuIG9wdGlvbmFsIEMg
ZXh0ZW5zaW9uIHRvIHNwZWVkIHVwIGxvdy1sZXZlbCBvcGVyYXRpb25zLgorCisqIEFuIGludmFs
aWQgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgZHVyaW5nIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgIG5v
dyByYWlzZXMKKyAgOmNsYXNzOmB+ZXhjZXB0aW9ucy5JbnZhbGlkU3RhdHVzQ29kZWAgd2l0aCBh
IGBgY29kZWBgIGF0dHJpYnV0ZS4KKworKiBQcm92aWRpbmcgYSBgYHNvY2tgYCBhcmd1bWVudCB0
byA6ZnVuYzpgfmNsaWVudC5jb25uZWN0YCBubyBsb25nZXIKKyAgY3Jhc2hlcy4KKworMy4zCisu
Li4KKworKiBFbnN1cmVkIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy42LgorCisqIFJlZHVj
ZWQgbm9pc2UgaW4gbG9ncyBjYXVzZWQgYnkgY29ubmVjdGlvbiByZXNldHMuCisKKyogQXZvaWRl
ZCBjcmFzaGluZyBvbiBjb25jdXJyZW50IHdyaXRlcyBvbiBzbG93IGNvbm5lY3Rpb25zLgorCisz
LjIKKy4uLgorCisqIEFkZGVkIGBgdGltZW91dGBgLCBgYG1heF9zaXplYGAsIGFuZCBgYG1heF9x
dWV1ZWBgIGFyZ3VtZW50cyB0bworICA6ZnVuYzpgfmNsaWVudC5jb25uZWN0KClgIGFuZCA6ZnVu
YzpgfnNlcnZlci5zZXJ2ZWAuCisKKyogTWFkZSBzZXJ2ZXIgc2h1dGRvd24gbW9yZSByb2J1c3Qu
CisKKzMuMQorLi4uCisKKyogQXZvaWRlZCBhIHdhcm5pbmcgd2hlbiBjbG9zaW5nIGEgY29ubmVj
dGlvbiBiZWZvcmUgdGhlIG9wZW5pbmcgaGFuZHNoYWtlLgorCisqIEFkZGVkIGZsb3cgY29udHJv
bCBmb3IgaW5jb21pbmcgZGF0YS4KKworMy4wCisuLi4KKworLi4gd2FybmluZzo6CisKKyAgICAq
KlZlcnNpb24gMy4wIGludHJvZHVjZXMgYSBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZSBp
biB0aGUqKgorICAgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVj
dmAgKipBUEkuKioKKworICAgICoqSWYgeW91J3JlIHVwZ3JhZGluZyBmcm9tIDIueCBvciBlYXJs
aWVyLCBwbGVhc2UgcmVhZCB0aGlzIGNhcmVmdWxseS4qKgorCisgICAgOm1ldGg6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZWN2YCB1c2VkIHRvIHJldHVybiBgYE5vbmVgYAor
ICAgIHdoZW4gdGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZC4gVGhpcyByZXF1aXJlZCBjaGVja2lu
ZyB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgZXZlcnkgY2FsbDo6CisKKyAgICAgICAgbWVzc2Fn
ZSA9IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKyAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgor
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICBOb3cgaXQgcmFpc2VzIGEgOmV4YzpgfmV4Y2VwdGlv
bnMuQ29ubmVjdGlvbkNsb3NlZGAgZXhjZXB0aW9uIGluc3RlYWQuCisgICAgVGhpcyBpcyBtb3Jl
IFB5dGhvbmljLiBUaGUgcHJldmlvdXMgY29kZSBjYW4gYmUgc2ltcGxpZmllZCB0bzo6CisKKyAg
ICAgICAgbWVzc2FnZSA9IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKworICAgIFdoZW4gaW1wbGVt
ZW50aW5nIGEgc2VydmVyLCB3aGljaCBpcyB0aGUgbW9yZSBwb3B1bGFyIHVzZSBjYXNlLCB0aGVy
ZSdzIG5vCisgICAgc3Ryb25nIHJlYXNvbiB0byBoYW5kbGUgc3VjaCBleGNlcHRpb25zLiBMZXQg
dGhlbSBidWJibGUgdXAsIHRlcm1pbmF0ZSB0aGUKKyAgICBoYW5kbGVyIGNvcm91dGluZSwgYW5k
IHRoZSBzZXJ2ZXIgd2lsbCBzaW1wbHkgaWdub3JlIHRoZW0uCisKKyAgICBJbiBvcmRlciB0byBh
dm9pZCBzdHJhbmRpbmcgcHJvamVjdHMgYnVpbHQgdXBvbiBhbiBlYXJsaWVyIHZlcnNpb24sIHRo
ZQorICAgIHByZXZpb3VzIGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZCBieSBwYXNzaW5nIGBgbGVn
YWN5X3JlY3Y9VHJ1ZWBgIHRvCisgICAgOmZ1bmM6YH5zZXJ2ZXIuc2VydmVgLCA6ZnVuYzpgfmNs
aWVudC5jb25uZWN0YCwKKyAgICA6Y2xhc3M6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9j
b2xgLCBvcgorICAgIDpjbGFzczpgfmNsaWVudC5XZWJTb2NrZXRDbGllbnRQcm90b2NvbGAuIGBg
bGVnYWN5X3JlY3ZgYCBpc24ndCBkb2N1bWVudGVkCisgICAgaW4gdGhlaXIgc2lnbmF0dXJlcyBi
dXQgaXNuJ3Qgc2NoZWR1bGVkIGZvciBkZXByZWNhdGlvbiBlaXRoZXIuCisKK0Fsc286CisKKyog
OmZ1bmM6YH5jbGllbnQuY29ubmVjdGAgY2FuIGJlIHVzZWQgYXMgYW4gYXN5bmNocm9ub3VzIGNv
bnRleHQgbWFuYWdlciBvbgorICBQeXRob24g4omlIDMuNS4xLgorCisqIFVwZGF0ZWQgZG9jdW1l
bnRhdGlvbiB3aXRoIGBgYXdhaXRgYCBhbmQgYGBhc3luY2BgIHN5bnRheCBmcm9tIFB5dGhvbiAz
LjUuCisKKyogOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5waW5nYCBh
bmQKKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5wb25nYCBzdXBw
b3J0IGRhdGEgcGFzc2VkIGFzCisgIDpjbGFzczpgc3RyYCBpbiBhZGRpdGlvbiB0byA6Y2xhc3M6
YGJ5dGVzYC4KKworKiBXb3JrZWQgYXJvdW5kIGFuIGFzeW5jaW8gYnVnIGFmZmVjdGluZyBjb25u
ZWN0aW9uIHRlcm1pbmF0aW9uIHVuZGVyIGxvYWQuCisKKyogTWFkZSBgYHN0YXRlX25hbWVgYCBh
dHRyaWJ1dGUgb24gcHJvdG9jb2xzIGEgcHVibGljIEFQSS4KKworKiBJbXByb3ZlZCBkb2N1bWVu
dGF0aW9uLgorCisyLjcKKy4uLgorCisqIEFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24g
My41LgorCisqIFJlZnJlc2hlZCBkb2N1bWVudGF0aW9uLgorCisyLjYKKy4uLgorCisqIEFkZGVk
IGBgbG9jYWxfYWRkcmVzc2BgIGFuZCBgYHJlbW90ZV9hZGRyZXNzYGAgYXR0cmlidXRlcyBvbiBw
cm90b2NvbHMuCisKKyogQ2xvc2VkIG9wZW4gY29ubmVjdGlvbnMgd2l0aCBjb2RlIDEwMDEgd2hl
biBhIHNlcnZlciBzaHV0cyBkb3duLgorCisqIEF2b2lkZWQgVENQIGZyYWdtZW50YXRpb24gb2Yg
c21hbGwgZnJhbWVzLgorCisyLjUKKy4uLgorCisqIEltcHJvdmVkIGRvY3VtZW50YXRpb24uCisK
KyogUHJvdmlkZWQgYWNjZXNzIHRvIGhhbmRzaGFrZSByZXF1ZXN0IGFuZCByZXNwb25zZSBIVFRQ
IGhlYWRlcnMuCisKKyogQWxsb3dlZCBjdXN0b21pemluZyBoYW5kc2hha2UgcmVxdWVzdCBhbmQg
cmVzcG9uc2UgSFRUUCBoZWFkZXJzLgorCisqIFN1cHBvcnRlZCBydW5uaW5nIG9uIGEgbm9uLWRl
ZmF1bHQgZXZlbnQgbG9vcC4KKworKiBSZXR1cm5lZCBhIDQwMyBzdGF0dXMgY29kZSBpbnN0ZWFk
IG9mIDQwMCB3aGVuIHRoZSByZXF1ZXN0IE9yaWdpbiBpc24ndAorICBhbGxvd2VkLgorCisqIENh
bmNlbGluZyA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnJlY3ZgIG5v
IGxvbmdlciBkcm9wcworICB0aGUgbmV4dCBtZXNzYWdlLgorCisqIENsYXJpZmllZCB0aGF0IHRo
ZSBjbG9zaW5nIGhhbmRzaGFrZSBjYW4gYmUgaW5pdGlhdGVkIGJ5IHRoZSBjbGllbnQuCisKKyog
U2V0IHRoZSBjbG9zZSBjb2RlIGFuZCByZWFzb24gbW9yZSBjb25zaXN0ZW50bHkuCisKKyogU3Ry
ZW5ndGhlbmVkIGNvbm5lY3Rpb24gdGVybWluYXRpb24gYnkgc2ltcGxpZnlpbmcgdGhlIGltcGxl
bWVudGF0aW9uLgorCisqIEltcHJvdmVkIHRlc3RzLCBhZGRlZCB0b3ggY29uZmlndXJhdGlvbiwg
YW5kIGVuZm9yY2VkIDEwMCUgYnJhbmNoIGNvdmVyYWdlLgorCisyLjQKKy4uLgorCisqIEFkZGVk
IHN1cHBvcnQgZm9yIHN1YnByb3RvY29scy4KKworKiBTdXBwb3J0ZWQgbm9uLWRlZmF1bHQgZXZl
bnQgbG9vcC4KKworKiBBZGRlZCBgYGxvb3BgYCBhcmd1bWVudCB0byA6ZnVuYzpgfmNsaWVudC5j
b25uZWN0YCBhbmQKKyAgOmZ1bmM6YH5zZXJ2ZXIuc2VydmVgLgorCisyLjMKKy4uLgorCisqIElt
cHJvdmVkIGNvbXBsaWFuY2Ugb2YgY2xvc2UgY29kZXMuCisKKzIuMgorLi4uCisKKyogQWRkZWQg
c3VwcG9ydCBmb3IgbGltaXRpbmcgbWVzc2FnZSBzaXplLgorCisyLjEKKy4uLgorCisqIEFkZGVk
IGBgaG9zdGBgLCBgYHBvcnRgYCBhbmQgYGBzZWN1cmVgYCBhdHRyaWJ1dGVzIG9uIHByb3RvY29s
cy4KKworKiBBZGRlZCBzdXBwb3J0IGZvciBwcm92aWRpbmcgYW5kIGNoZWNraW5nIE9yaWdpbl8u
CisKKy4uIF9PcmlnaW46IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1I3NlY3Rp
b24tMTAuMgorCisyLjAKKy4uLgorCisuLiB3YXJuaW5nOjoKKworICAgICoqVmVyc2lvbiAyLjAg
aW50cm9kdWNlcyBhIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIHRoZSoqCisgICAg
Om1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCwKKyAgICA6bWV0
aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBpbmdgLCBhbmQKKyAgICA6bWV0
aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBvbmdgICoqQVBJcy4qKgorCisg
ICAgKipJZiB5b3UncmUgdXBncmFkaW5nIGZyb20gMS54IG9yIGVhcmxpZXIsIHBsZWFzZSByZWFk
IHRoaXMgY2FyZWZ1bGx5LioqCisKKyAgICBUaGVzZSBBUElzIHVzZWQgdG8gYmUgZnVuY3Rpb25z
LiBOb3cgdGhleSdyZSBjb3JvdXRpbmVzLgorCisgICAgSW5zdGVhZCBvZjo6CisKKyAgICAgICAg
d2Vic29ja2V0LnNlbmQobWVzc2FnZSkKKworICAgIHlvdSBtdXN0IG5vdyB3cml0ZTo6CisKKyAg
ICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmQobWVzc2FnZSkKKworQWxzbzoKKworKiBBZGRlZCBm
bG93IGNvbnRyb2wgZm9yIG91dGdvaW5nIGRhdGEuCisKKzEuMAorLi4uCisKKyogSW5pdGlhbCBw
dWJsaWMgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2NoZWF0c2hl
ZXQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvY2hlYXRzaGVldC5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mODk3MzI2YTZiYTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9jaGVhdHNoZWV0LnJzdApAQCAtMCwwICsxLDEwOSBA
QAorQ2hlYXQgc2hlZXQKKz09PT09PT09PT09CisKKy4uIGN1cnJlbnRtb2R1bGU6OiB3ZWJzb2Nr
ZXRzCisKK1NlcnZlcgorLS0tLS0tCisKKyogV3JpdGUgYSBjb3JvdXRpbmUgdGhhdCBoYW5kbGVz
IGEgc2luZ2xlIGNvbm5lY3Rpb24uIEl0IHJlY2VpdmVzIGEgV2ViU29ja2V0CisgIHByb3RvY29s
IGluc3RhbmNlIGFuZCB0aGUgVVJJIHBhdGggaW4gYXJndW1lbnQuCisKKyAgKiBDYWxsIDptZXRo
OmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVjdmAgYW5kCisgICAgOm1ldGg6
YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCB0byByZWNlaXZlIGFuZCBz
ZW5kCisgICAgbWVzc2FnZXMgYXQgYW55IHRpbWUuCisKKyAgKiBXaGVuIDptZXRoOmB+cHJvdG9j
b2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVjdmAgb3IKKyAgICA6bWV0aDpgfnByb3RvY29s
LldlYlNvY2tldENvbW1vblByb3RvY29sLnNlbmRgIHJhaXNlcworICAgIDpleGM6YH5leGNlcHRp
b25zLkNvbm5lY3Rpb25DbG9zZWRgLCBjbGVhbiB1cCBhbmQgZXhpdC4gSWYgeW91IHN0YXJ0ZWQK
KyAgICBvdGhlciA6Y2xhc3M6YGFzeW5jaW8uVGFza2AsIHRlcm1pbmF0ZSB0aGVtIGJlZm9yZSBl
eGl0aW5nLgorCisgICogSWYgeW91IGFyZW4ndCBhd2FpdGluZyA6bWV0aDpgfnByb3RvY29sLldl
YlNvY2tldENvbW1vblByb3RvY29sLnJlY3ZgLAorICAgIGNvbnNpZGVyIGF3YWl0aW5nIDptZXRo
OmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wud2FpdF9jbG9zZWRgCisgICAgdG8g
ZGV0ZWN0IHF1aWNrbHkgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuCisKKyAgKiBZb3Ug
bWF5IDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucGluZ2Agb3IKKyAg
ICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBvbmdgIGlmIHlvdSB3
aXNoIGJ1dCBpdCBpc24ndAorICAgIG5lZWRlZCBpbiBnZW5lcmFsLgorCisqIENyZWF0ZSBhIHNl
cnZlciB3aXRoIDpmdW5jOmB+c2VydmVyLnNlcnZlYCB3aGljaCBpcyBzaW1pbGFyIHRvIGFzeW5j
aW8ncworICA6bWV0aDpgfmFzeW5jaW8uQWJzdHJhY3RFdmVudExvb3AuY3JlYXRlX3NlcnZlcmAu
IFlvdSBjYW4gYWxzbyB1c2UgaXQgYXMgYW4KKyAgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdl
ci4KKworICAqIFRoZSBzZXJ2ZXIgdGFrZXMgY2FyZSBvZiBlc3RhYmxpc2hpbmcgY29ubmVjdGlv
bnMsIHRoZW4gbGV0cyB0aGUgaGFuZGxlcgorICAgIGV4ZWN1dGUgdGhlIGFwcGxpY2F0aW9uIGxv
Z2ljLCBhbmQgZmluYWxseSBjbG9zZXMgdGhlIGNvbm5lY3Rpb24gYWZ0ZXIgdGhlCisgICAgaGFu
ZGxlciBleGl0cyBub3JtYWxseSBvciB3aXRoIGFuIGV4Y2VwdGlvbi4KKworICAqIEZvciBhZHZh
bmNlZCBjdXN0b21pemF0aW9uLCB5b3UgbWF5IHN1YmNsYXNzCisgICAgOmNsYXNzOmB+c2VydmVy
LldlYlNvY2tldFNlcnZlclByb3RvY29sYCBhbmQgcGFzcyBlaXRoZXIgdGhpcyBzdWJjbGFzcyBv
cgorICAgIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgYGBjcmVhdGVfcHJvdG9jb2xgYCBhcmd1
bWVudC4KKworQ2xpZW50CistLS0tLS0KKworKiBDcmVhdGUgYSBjbGllbnQgd2l0aCA6ZnVuYzpg
fmNsaWVudC5jb25uZWN0YCB3aGljaCBpcyBzaW1pbGFyIHRvIGFzeW5jaW8ncworICA6bWV0aDpg
fmFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfY29ubmVjdGlvbmAuIFlvdSBjYW4gYWxzbyB1
c2UgaXQgYXMgYW4KKyAgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlci4KKworICAqIEZvciBh
ZHZhbmNlZCBjdXN0b21pemF0aW9uLCB5b3UgbWF5IHN1YmNsYXNzCisgICAgOmNsYXNzOmB+c2Vy
dmVyLldlYlNvY2tldENsaWVudFByb3RvY29sYCBhbmQgcGFzcyBlaXRoZXIgdGhpcyBzdWJjbGFz
cyBvcgorICAgIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgYGBjcmVhdGVfcHJvdG9jb2xgYCBh
cmd1bWVudC4KKworKiBDYWxsIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9j
b2wucmVjdmAgYW5kCisgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wu
c2VuZGAgdG8gcmVjZWl2ZSBhbmQgc2VuZCBtZXNzYWdlcworICBhdCBhbnkgdGltZS4KKworKiBZ
b3UgbWF5IDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucGluZ2Agb3IK
KyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5wb25nYCBpZiB5b3Ug
d2lzaCBidXQgaXQgaXNuJ3QKKyAgbmVlZGVkIGluIGdlbmVyYWwuCisKKyogSWYgeW91IGFyZW4n
dCB1c2luZyA6ZnVuYzpgfmNsaWVudC5jb25uZWN0YCBhcyBhIGNvbnRleHQgbWFuYWdlciwgY2Fs
bAorICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlYCB0byB0
ZXJtaW5hdGUgdGhlIGNvbm5lY3Rpb24uCisKKy4uIF9kZWJ1Z2dpbmc6CisKK0RlYnVnZ2luZwor
LS0tLS0tLS0tCisKK0lmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHdoYXQgYGB3ZWJzb2NrZXRzYGAg
aXMgZG9pbmcsIGVuYWJsZSBsb2dnaW5nOjoKKworICAgIGltcG9ydCBsb2dnaW5nCisgICAgbG9n
Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYnNvY2tldHMnKQorICAgIGxvZ2dlci5zZXRMZXZl
bChsb2dnaW5nLklORk8pCisgICAgbG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5k
bGVyKCkpCisKK1RoZSBsb2dzIGNvbnRhaW46CisKKyogRXhjZXB0aW9ucyBpbiB0aGUgY29ubmVj
dGlvbiBoYW5kbGVyIGF0IHRoZSBgYEVSUk9SYGAgbGV2ZWwKKyogRXhjZXB0aW9ucyBpbiB0aGUg
b3BlbmluZyBvciBjbG9zaW5nIGhhbmRzaGFrZSBhdCB0aGUgYGBJTkZPYGAgbGV2ZWwKKyogQWxs
IGZyYW1lcyBhdCB0aGUgYGBERUJVR2BgIGxldmVsIOKAlCB0aGlzIGNhbiBiZSB2ZXJ5IHZlcmJv
c2UKKworSWYgeW91J3JlIG5ldyB0byBgYGFzeW5jaW9gYCwgeW91IHdpbGwgY2VydGFpbmx5IGVu
Y291bnRlciBpc3N1ZXMgdGhhdCBhcmUKK3JlbGF0ZWQgdG8gYXN5bmNocm9ub3VzIHByb2dyYW1t
aW5nIGluIGdlbmVyYWwgcmF0aGVyIHRoYW4gdG8gYGB3ZWJzb2NrZXRzYGAKK2luIHBhcnRpY3Vs
YXIuIEZvcnR1bmF0ZWx5IFB5dGhvbidzIG9mZmljaWFsIGRvY3VtZW50YXRpb24gcHJvdmlkZXMg
YWR2aWNlIHRvCitgZGV2ZWxvcCB3aXRoIGFzeW5jaW9gXy4gQ2hlY2sgaXQgb3V0OiBpdCdzIGlu
dmFsdWFibGUhCisKKy4uIF9kZXZlbG9wIHdpdGggYXN5bmNpbzogaHR0cHM6Ly9kb2NzLnB5dGhv
bi5vcmcvMy9saWJyYXJ5L2FzeW5jaW8tZGV2Lmh0bWwKKworUGFzc2luZyBhZGRpdGlvbmFsIGFy
Z3VtZW50cyB0byB0aGUgY29ubmVjdGlvbiBoYW5kbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiB3cml0aW5nIGEgc2VydmVy
LCBpZiB5b3UgbmVlZCB0byBwYXNzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZQorY29ubmVj
dGlvbiBoYW5kbGVyLCB5b3UgY2FuIGJpbmQgdGhlbSB3aXRoIDpmdW5jOmBmdW5jdG9vbHMucGFy
dGlhbGA6OgorCisgICAgaW1wb3J0IGFzeW5jaW8KKyAgICBpbXBvcnQgZnVuY3Rvb2xzCisgICAg
aW1wb3J0IHdlYnNvY2tldHMKKworICAgIGFzeW5jIGRlZiBoYW5kbGVyKHdlYnNvY2tldCwgcGF0
aCwgZXh0cmFfYXJndW1lbnQpOgorICAgICAgICAuLi4KKworICAgIGJvdW5kX2hhbmRsZXIgPSBm
dW5jdG9vbHMucGFydGlhbChoYW5kbGVyLCBleHRyYV9hcmd1bWVudD0nc3BhbScpCisgICAgc3Rh
cnRfc2VydmVyID0gd2Vic29ja2V0cy5zZXJ2ZShib3VuZF9oYW5kbGVyLCAnMTI3LjAuMC4xJywg
ODc2NSkKKworICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUo
c3RhcnRfc2VydmVyKQorICAgIGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9yZXZlcigp
CisKK0Fub3RoZXIgd2F5IHRvIGFjaGlldmUgdGhpcyByZXN1bHQgaXMgdG8gZGVmaW5lIHRoZSBg
YGhhbmRsZXJgYCBjb3JvdXRpbmUgaW4KK2Egc2NvcGUgd2hlcmUgdGhlIGBgZXh0cmFfYXJndW1l
bnRgYCB2YXJpYWJsZSBleGlzdHMgaW5zdGVhZCBvZiBpbmplY3RpbmcgaXQKK3Rocm91Z2ggYW4g
YXJndW1lbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvZG9jcy9jb25mLnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRp
b24vY29uZi5weQpyZW5hbWUgdG8gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvY29uZi5weQppbmRleCA3
ZTU0Mjg3YTY5ZTAuLjA2NGM2NTdiZjE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2NvbmYucHkKQEAgLTEsNTIgKzEsNjcgQEAKICMg
LSotIGNvZGluZzogdXRmLTggLSotCiAjCi0jIHNpeCBkb2N1bWVudGF0aW9uIGJ1aWxkIGNvbmZp
Z3VyYXRpb24gZmlsZQorIyB3ZWJzb2NrZXRzIGRvY3VtZW50YXRpb24gYnVpbGQgY29uZmlndXJh
dGlvbiBmaWxlLCBjcmVhdGVkIGJ5CisjIHNwaGlueC1xdWlja3N0YXJ0IG9uIFN1biBNYXIgMzEg
MjA6NDg6NDQgMjAxMy4KKyMKKyMgVGhpcyBmaWxlIGlzIGV4ZWNmaWxlKClkIHdpdGggdGhlIGN1
cnJlbnQgZGlyZWN0b3J5IHNldCB0byBpdHMgY29udGFpbmluZyBkaXIuCisjCisjIE5vdGUgdGhh
dCBub3QgYWxsIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGFyZSBwcmVzZW50IGluIHRo
aXMKKyMgYXV0b2dlbmVyYXRlZCBmaWxlLgorIworIyBBbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMg
aGF2ZSBhIGRlZmF1bHQ7IHZhbHVlcyB0aGF0IGFyZSBjb21tZW50ZWQgb3V0CisjIHNlcnZlIHRv
IHNob3cgdGhlIGRlZmF1bHQuCiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cworaW1wb3J0IHN5cywg
b3MsIGRhdGV0aW1lCiAKICMgSWYgZXh0ZW5zaW9ucyAob3IgbW9kdWxlcyB0byBkb2N1bWVudCB3
aXRoIGF1dG9kb2MpIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeSwKICMgYWRkIHRoZXNlIGRpcmVj
dG9yaWVzIHRvIHN5cy5wYXRoIGhlcmUuIElmIHRoZSBkaXJlY3RvcnkgaXMgcmVsYXRpdmUgdG8g
dGhlCiAjIGRvY3VtZW50YXRpb24gcm9vdCwgdXNlIG9zLnBhdGguYWJzcGF0aCB0byBtYWtlIGl0
IGFic29sdXRlLCBsaWtlIHNob3duIGhlcmUuCi0jc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguYWJz
cGF0aCgnLicpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmFic3Bh
dGgoJy4uJyksICdzcmMnKSkKIAogIyAtLSBHZW5lcmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyBJZiB5b3Vy
IGRvY3VtZW50YXRpb24gbmVlZHMgYSBtaW5pbWFsIFNwaGlueCB2ZXJzaW9uLCBzdGF0ZSBpdCBo
ZXJlLgotbmVlZHNfc3BoaW54ID0gIjEuMCIKKyNuZWVkc19zcGhpbnggPSAnMS4wJwogCiAjIEFk
ZCBhbnkgU3BoaW54IGV4dGVuc2lvbiBtb2R1bGUgbmFtZXMgaGVyZSwgYXMgc3RyaW5ncy4gVGhl
eSBjYW4gYmUgZXh0ZW5zaW9ucwogIyBjb21pbmcgd2l0aCBTcGhpbnggKG5hbWVkICdzcGhpbngu
ZXh0LionKSBvciB5b3VyIGN1c3RvbSBvbmVzLgotZXh0ZW5zaW9ucyA9IFsic3BoaW54LmV4dC5p
bnRlcnNwaGlueCJdCitleHRlbnNpb25zID0gWworICAgICdzcGhpbnguZXh0LmF1dG9kb2MnLAor
ICAgICdzcGhpbnguZXh0LmludGVyc3BoaW54JywKKyAgICAnc3BoaW54LmV4dC52aWV3Y29kZScs
CisgICAgJ3NwaGlueF9hdXRvZG9jX3R5cGVoaW50cycsCisgICAgJ3NwaGlueGNvbnRyaWJfdHJp
bycsCisgIF0KKworIyBTcGVsbGluZyBjaGVjayBuZWVkcyBhbiBhZGRpdGlvbmFsIG1vZHVsZSB0
aGF0IGlzIG5vdCBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KKyMgQWRkIGl0IG9ubHkgaWYgc3BlbGxp
bmcgY2hlY2sgaXMgcmVxdWVzdGVkIHNvIGRvY3MgY2FuIGJlIGdlbmVyYXRlZCB3aXRob3V0IGl0
LgoraWYgJ3NwZWxsaW5nJyBpbiBzeXMuYXJndjoKKyAgICBleHRlbnNpb25zLmFwcGVuZCgnc3Bo
aW54Y29udHJpYi5zcGVsbGluZycpCiAKICMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gdGVt
cGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LgotdGVtcGxhdGVzX3BhdGgg
PSBbIl90ZW1wbGF0ZXMiXQordGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQogCiAjIFRo
ZSBzdWZmaXggb2Ygc291cmNlIGZpbGVuYW1lcy4KLXNvdXJjZV9zdWZmaXggPSAiLnJzdCIKK3Nv
dXJjZV9zdWZmaXggPSAnLnJzdCcKIAogIyBUaGUgZW5jb2Rpbmcgb2Ygc291cmNlIGZpbGVzLgot
I3NvdXJjZV9lbmNvZGluZyA9ICJ1dGYtOC1zaWciCisjc291cmNlX2VuY29kaW5nID0gJ3V0Zi04
LXNpZycKIAogIyBUaGUgbWFzdGVyIHRvY3RyZWUgZG9jdW1lbnQuCi1tYXN0ZXJfZG9jID0gImlu
ZGV4IgorbWFzdGVyX2RvYyA9ICdpbmRleCcKIAogIyBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0
IHRoZSBwcm9qZWN0LgotcHJvamVjdCA9IHUic2l4IgotY29weXJpZ2h0ID0gdSIyMDEwLTIwMTQs
IEJlbmphbWluIFBldGVyc29uIgotCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKG9z
LnBhdGguam9pbigiLiIsICIuLiIpKSkKLWZyb20gc2l4IGltcG9ydCBfX3ZlcnNpb25fXyBhcyBz
aXhfdmVyc2lvbgotc3lzLnBhdGgucG9wKCkKK3Byb2plY3QgPSAnd2Vic29ja2V0cycKK2NvcHly
aWdodCA9IGYnMjAxMy17ZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXJ9LCBBeW1lcmljIEF1Z3Vz
dGluIGFuZCBjb250cmlidXRvcnMnCiAKICMgVGhlIHZlcnNpb24gaW5mbyBmb3IgdGhlIHByb2pl
Y3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgogIyB8dmVyc2lv
bnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3RoZXIgcGxhY2VzIHRocm91
Z2hvdXQgdGhlCiAjIGJ1aWx0IGRvY3VtZW50cy4KICMKICMgVGhlIHNob3J0IFguWSB2ZXJzaW9u
LgotdmVyc2lvbiA9IHNpeF92ZXJzaW9uWzotMl0KK3ZlcnNpb24gPSAnOC4xJwogIyBUaGUgZnVs
bCB2ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdzLgotcmVsZWFzZSA9IHNpeF92
ZXJzaW9uCityZWxlYXNlID0gJzguMScKIAogIyBUaGUgbGFuZ3VhZ2UgZm9yIGNvbnRlbnQgYXV0
b2dlbmVyYXRlZCBieSBTcGhpbnguIFJlZmVyIHRvIGRvY3VtZW50YXRpb24KICMgZm9yIGEgbGlz
dCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgpAQCAtNjAsNyArNzUsNyBAQCByZWxlYXNlID0gc2l4
X3ZlcnNpb24KIAogIyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0byBzb3VyY2UgZGlyZWN0
b3J5LCB0aGF0IG1hdGNoIGZpbGVzIGFuZAogIyBkaXJlY3RvcmllcyB0byBpZ25vcmUgd2hlbiBs
b29raW5nIGZvciBzb3VyY2UgZmlsZXMuCi1leGNsdWRlX3BhdHRlcm5zID0gWyJfYnVpbGQiXQor
ZXhjbHVkZV9wYXR0ZXJucyA9IFsnX2J1aWxkJ10KIAogIyBUaGUgcmVTVCBkZWZhdWx0IHJvbGUg
KHVzZWQgZm9yIHRoaXMgbWFya3VwOiBgdGV4dGApIHRvIHVzZSBmb3IgYWxsIGRvY3VtZW50cy4K
ICNkZWZhdWx0X3JvbGUgPSBOb25lCkBAIC03Nyw3ICs5Miw3IEBAIGV4Y2x1ZGVfcGF0dGVybnMg
PSBbIl9idWlsZCJdCiAjc2hvd19hdXRob3JzID0gRmFsc2UKIAogIyBUaGUgbmFtZSBvZiB0aGUg
UHlnbWVudHMgKHN5bnRheCBoaWdobGlnaHRpbmcpIHN0eWxlIHRvIHVzZS4KLXB5Z21lbnRzX3N0
eWxlID0gInNwaGlueCIKK3B5Z21lbnRzX3N0eWxlID0gJ3NwaGlueCcKIAogIyBBIGxpc3Qgb2Yg
aWdub3JlZCBwcmVmaXhlcyBmb3IgbW9kdWxlIGluZGV4IHNvcnRpbmcuCiAjbW9kaW5kZXhfY29t
bW9uX3ByZWZpeCA9IFtdCkBAIC04NywxMiArMTAyLDE5IEBAIHB5Z21lbnRzX3N0eWxlID0gInNw
aGlueCIKIAogIyBUaGUgdGhlbWUgdG8gdXNlIGZvciBIVE1MIGFuZCBIVE1MIEhlbHAgcGFnZXMu
ICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiAjIGEgbGlzdCBvZiBidWlsdGluIHRoZW1lcy4K
LWh0bWxfdGhlbWUgPSAiZGVmYXVsdCIKK2h0bWxfdGhlbWUgPSAnYWxhYmFzdGVyJwogCiAjIFRo
ZW1lIG9wdGlvbnMgYXJlIHRoZW1lLXNwZWNpZmljIGFuZCBjdXN0b21pemUgdGhlIGxvb2sgYW5k
IGZlZWwgb2YgYSB0aGVtZQogIyBmdXJ0aGVyLiAgRm9yIGEgbGlzdCBvZiBvcHRpb25zIGF2YWls
YWJsZSBmb3IgZWFjaCB0aGVtZSwgc2VlIHRoZQogIyBkb2N1bWVudGF0aW9uLgotI2h0bWxfdGhl
bWVfb3B0aW9ucyA9IHt9CitodG1sX3RoZW1lX29wdGlvbnMgPSB7CisgICAgJ2xvZ28nOiAnd2Vi
c29ja2V0cy5zdmcnLAorICAgICdkZXNjcmlwdGlvbic6ICdBIGxpYnJhcnkgZm9yIGJ1aWxkaW5n
IFdlYlNvY2tldCBzZXJ2ZXJzIGFuZCBjbGllbnRzIGluIFB5dGhvbiB3aXRoIGEgZm9jdXMgb24g
Y29ycmVjdG5lc3MgYW5kIHNpbXBsaWNpdHkuJywKKyAgICAnZ2l0aHViX2J1dHRvbic6IFRydWUs
CisgICAgJ2dpdGh1Yl91c2VyJzogJ2FhdWd1c3RpbicsCisgICAgJ2dpdGh1Yl9yZXBvJzogJ3dl
YnNvY2tldHMnLAorICAgICd0aWRlbGlmdF91cmwnOiAnaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vi
c2NyaXB0aW9uL3BrZy9weXBpLXdlYnNvY2tldHM/dXRtX3NvdXJjZT1weXBpLXdlYnNvY2tldHMm
dXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZG9jcycsCit9CiAKICMgQWRkIGFueSBw
YXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHRoZW1lcyBoZXJlLCByZWxhdGl2ZSB0byB0aGlzIGRp
cmVjdG9yeS4KICNodG1sX3RoZW1lX3BhdGggPSBbXQpAQCAtMTE2LDcgKzEzOCw3IEBAIGh0bWxf
dGhlbWUgPSAiZGVmYXVsdCIKICMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHN0
YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCiAjIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0aW4gc3RhdGljIGZp
bGVzLAogIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92ZXJ3cml0ZSB0aGUg
YnVpbHRpbiAiZGVmYXVsdC5jc3MiLgotaHRtbF9zdGF0aWNfcGF0aCA9IFsiX3N0YXRpYyJdCito
dG1sX3N0YXRpY19wYXRoID0gWydfc3RhdGljJ10KIAogIyBJZiBub3QgJycsIGEgJ0xhc3QgdXBk
YXRlZCBvbjonIHRpbWVzdGFtcCBpcyBpbnNlcnRlZCBhdCBldmVyeSBwYWdlIGJvdHRvbSwKICMg
dXNpbmcgdGhlIGdpdmVuIHN0cmZ0aW1lIGZvcm1hdC4KQEAgLTEyNyw3ICsxNDksMTUgQEAgaHRt
bF9zdGF0aWNfcGF0aCA9IFsiX3N0YXRpYyJdCiAjaHRtbF91c2Vfc21hcnR5cGFudHMgPSBUcnVl
CiAKICMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtYXBzIGRvY3VtZW50IG5hbWVzIHRvIHRl
bXBsYXRlIG5hbWVzLgotI2h0bWxfc2lkZWJhcnMgPSB7fQoraHRtbF9zaWRlYmFycyA9IHsKKyAg
ICAnKionOiBbCisgICAgICAgICdhYm91dC5odG1sJywKKyAgICAgICAgJ3NlYXJjaGJveC5odG1s
JywKKyAgICAgICAgJ25hdmlnYXRpb24uaHRtbCcsCisgICAgICAgICdyZWxhdGlvbnMuaHRtbCcs
CisgICAgICAgICdkb25hdGUuaHRtbCcsCisgICAgXQorfQogCiAjIEFkZGl0aW9uYWwgdGVtcGxh
dGVzIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIHRvIHBhZ2VzLCBtYXBzIHBhZ2UgbmFtZXMgdG8K
ICMgdGVtcGxhdGUgbmFtZXMuCkBAIC0xNTYsMjYgKzE4NiwzMSBAQCBodG1sX3N0YXRpY19wYXRo
ID0gWyJfc3RhdGljIl0KICMgYmFzZSBVUkwgZnJvbSB3aGljaCB0aGUgZmluaXNoZWQgSFRNTCBp
cyBzZXJ2ZWQuCiAjaHRtbF91c2Vfb3BlbnNlYXJjaCA9ICcnCiAKLSMgSWYgbm9uZW1wdHksIHRo
aXMgaXMgdGhlIGZpbGUgbmFtZSBzdWZmaXggZm9yIEhUTUwgZmlsZXMgKGUuZy4gIi54aHRtbCIp
LgotI2h0bWxfZmlsZV9zdWZmaXggPSAnJworIyBUaGlzIGlzIHRoZSBmaWxlIG5hbWUgc3VmZml4
IGZvciBIVE1MIGZpbGVzIChlLmcuICIueGh0bWwiKS4KKyNodG1sX2ZpbGVfc3VmZml4ID0gTm9u
ZQogCiAjIE91dHB1dCBmaWxlIGJhc2UgbmFtZSBmb3IgSFRNTCBoZWxwIGJ1aWxkZXIuCi1odG1s
aGVscF9iYXNlbmFtZSA9ICdzaXhkb2MnCitodG1saGVscF9iYXNlbmFtZSA9ICd3ZWJzb2NrZXRz
ZG9jJwogCiAKICMgLS0gT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSMgVGhlIHBhcGVyIHNpemUgKCds
ZXR0ZXInIG9yICdhNCcpLgotI2xhdGV4X3BhcGVyX3NpemUgPSAnbGV0dGVyJworbGF0ZXhfZWxl
bWVudHMgPSB7CisjIFRoZSBwYXBlciBzaXplICgnbGV0dGVycGFwZXInIG9yICdhNHBhcGVyJyku
CisjJ3BhcGVyc2l6ZSc6ICdsZXR0ZXJwYXBlcicsCiAKICMgVGhlIGZvbnQgc2l6ZSAoJzEwcHQn
LCAnMTFwdCcgb3IgJzEycHQnKS4KLSNsYXRleF9mb250X3NpemUgPSAnMTBwdCcKKyMncG9pbnRz
aXplJzogJzEwcHQnLAorCisjIEFkZGl0aW9uYWwgc3R1ZmYgZm9yIHRoZSBMYVRlWCBwcmVhbWJs
ZS4KKyMncHJlYW1ibGUnOiAnJywKK30KIAogIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBp
bnRvIExhVGVYIGZpbGVzLiBMaXN0IG9mIHR1cGxlcwogIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRh
cmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLCBkb2N1bWVudGNsYXNzIFtob3d0by9tYW51YWxdKS4K
IGxhdGV4X2RvY3VtZW50cyA9IFsKLSAgKCJpbmRleCIsICJzaXgudGV4IiwgdSJzaXggRG9jdW1l
bnRhdGlvbiIsCi0gICB1IkJlbmphbWluIFBldGVyc29uIiwgIm1hbnVhbCIpLAorICAoJ2luZGV4
JywgJ3dlYnNvY2tldHMudGV4JywgJ3dlYnNvY2tldHMgRG9jdW1lbnRhdGlvbicsCisgICAnQXlt
ZXJpYyBBdWd1c3RpbicsICdtYW51YWwnKSwKIF0KIAogIyBUaGUgbmFtZSBvZiBhbiBpbWFnZSBm
aWxlIChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkgdG8gcGxhY2UgYXQgdGhlIHRvcCBvZgpA
QCAtMTkyLDkgKzIyNyw2IEBAIGxhdGV4X2RvY3VtZW50cyA9IFsKICMgSWYgdHJ1ZSwgc2hvdyBV
UkwgYWRkcmVzc2VzIGFmdGVyIGV4dGVybmFsIGxpbmtzLgogI2xhdGV4X3Nob3dfdXJscyA9IEZh
bHNlCiAKLSMgQWRkaXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFtYmxlLgotI2xhdGV4
X3ByZWFtYmxlID0gJycKLQogIyBEb2N1bWVudHMgdG8gYXBwZW5kIGFzIGFuIGFwcGVuZGl4IHRv
IGFsbCBtYW51YWxzLgogI2xhdGV4X2FwcGVuZGljZXMgPSBbXQogCkBAIC0yMDcsMTEgKzIzOSwz
NCBAQCBsYXRleF9kb2N1bWVudHMgPSBbCiAjIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExp
c3Qgb2YgdHVwbGVzCiAjIChzb3VyY2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1
dGhvcnMsIG1hbnVhbCBzZWN0aW9uKS4KIG1hbl9wYWdlcyA9IFsKLSAgICAoImluZGV4IiwgInNp
eCIsIHUic2l4IERvY3VtZW50YXRpb24iLAotICAgICBbdSJCZW5qYW1pbiBQZXRlcnNvbiJdLCAx
KQorICAgICgnaW5kZXgnLCAnd2Vic29ja2V0cycsICd3ZWJzb2NrZXRzIERvY3VtZW50YXRpb24n
LAorICAgICBbJ0F5bWVyaWMgQXVndXN0aW4nXSwgMSkKIF0KIAotIyAtLSBJbnRlcnNwaGlueCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgSWYgdHJ1ZSwgc2hvdyBVUkwgYWRkcmVzc2VzIGFmdGVyIGV4dGVybmFsIGxpbmtz
LgorI21hbl9zaG93X3VybHMgPSBGYWxzZQorCisKKyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBv
dXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyMgR3JvdXBpbmcgdGhlIGRvY3VtZW50IHRyZWUgaW50byBUZXhpbmZvIGZpbGVzLiBMaXN0IG9m
IHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9y
LAorIyAgZGlyIG1lbnUgZW50cnksIGRlc2NyaXB0aW9uLCBjYXRlZ29yeSkKK3RleGluZm9fZG9j
dW1lbnRzID0gWworICAoJ2luZGV4JywgJ3dlYnNvY2tldHMnLCAnd2Vic29ja2V0cyBEb2N1bWVu
dGF0aW9uJywKKyAgICdBeW1lcmljIEF1Z3VzdGluJywgJ3dlYnNvY2tldHMnLCAnT25lIGxpbmUg
ZGVzY3JpcHRpb24gb2YgcHJvamVjdC4nLAorICAgJ01pc2NlbGxhbmVvdXMnKSwKK10KKworIyBE
b2N1bWVudHMgdG8gYXBwZW5kIGFzIGFuIGFwcGVuZGl4IHRvIGFsbCBtYW51YWxzLgorI3RleGlu
Zm9fYXBwZW5kaWNlcyA9IFtdCisKKyMgSWYgZmFsc2UsIG5vIG1vZHVsZSBpbmRleCBpcyBnZW5l
cmF0ZWQuCisjdGV4aW5mb19kb21haW5faW5kaWNlcyA9IFRydWUKKworIyBIb3cgdG8gZGlzcGxh
eSBVUkwgYWRkcmVzc2VzOiAnZm9vdG5vdGUnLCAnbm8nLCBvciAnaW5saW5lJy4KKyN0ZXhpbmZv
X3Nob3dfdXJscyA9ICdmb290bm90ZScKKwogCi1pbnRlcnNwaGlueF9tYXBwaW5nID0geyJweTIi
IDogKCJodHRwczovL2RvY3MucHl0aG9uLm9yZy8yLyIsIE5vbmUpLAotICAgICAgICAgICAgICAg
ICAgICAgICAicHkzIiA6ICgiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy8iLCBOb25lKX0KKyMg
RXhhbXBsZSBjb25maWd1cmF0aW9uIGZvciBpbnRlcnNwaGlueDogcmVmZXIgdG8gdGhlIFB5dGhv
biBzdGFuZGFyZCBsaWJyYXJ5LgoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsnaHR0cHM6Ly9kb2Nz
LnB5dGhvbi5vcmcvMy8nOiBOb25lfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3Mv
Y29udHJpYnV0aW5nLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2NvbnRyaWJ1dGluZy5yc3QK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MGYxZGJiNTRhZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9jb250cmlidXRpbmcucnN0CkBA
IC0wLDAgKzEsNjEgQEAKK0NvbnRyaWJ1dGluZworPT09PT09PT09PT09CisKK1RoYW5rcyBmb3Ig
dGFraW5nIHRoZSB0aW1lIHRvIGNvbnRyaWJ1dGUgdG8gd2Vic29ja2V0cyEKKworQ29kZSBvZiBD
b25kdWN0CistLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwcm9qZWN0IGFuZCBldmVyeW9uZSBwYXJ0
aWNpcGF0aW5nIGluIGl0IGlzIGdvdmVybmVkIGJ5IHRoZSBgQ29kZSBvZgorQ29uZHVjdGBfLiBC
eSBwYXJ0aWNpcGF0aW5nLCB5b3UgYXJlIGV4cGVjdGVkIHRvIHVwaG9sZCB0aGlzIGNvZGUuIFBs
ZWFzZQorcmVwb3J0IGluYXBwcm9wcmlhdGUgYmVoYXZpb3IgdG8gYXltZXJpYyBET1QgYXVndXN0
aW4gQVQgZnJhY3RhbGlkZWFzIERPVCBjb20uCisKKy4uIF9Db2RlIG9mIENvbmR1Y3Q6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9ibG9iL21hc3Rlci9DT0RFX09GX0NP
TkRVQ1QubWQKKworKihJZiBJJ20gdGhlIHBlcnNvbiB3aXRoIHRoZSBpbmFwcHJvcHJpYXRlIGJl
aGF2aW9yLCBwbGVhc2UgYWNjZXB0IG15CithcG9sb2dpZXMuIEkga25vdyBJIGNhbiBtZXNzIHVw
LiBJIGNhbid0IGV4cGVjdCB5b3UgdG8gdGVsbCBtZSwgYnV0IGlmIHlvdQorY2hvb3NlIHRvIGRv
IHNvLCBJJ2xsIGRvIG15IGJlc3QgdG8gaGFuZGxlIGNyaXRpY2lzbSBjb25zdHJ1Y3RpdmVseS4K
Ky0tIEF5bWVyaWMpKgorCitDb250cmlidXRpb25zCistLS0tLS0tLS0tLS0tCisKK0J1ZyByZXBv
cnRzLCBwYXRjaGVzIGFuZCBzdWdnZXN0aW9ucyBhcmUgd2VsY29tZSEKKworUGxlYXNlIG9wZW4g
YW4gaXNzdWVfIG9yIHNlbmQgYSBgcHVsbCByZXF1ZXN0YF8uCisKK0ZlZWRiYWNrIGFib3V0IHRo
ZSBkb2N1bWVudGF0aW9uIGlzIGVzcGVjaWFsbHkgdmFsdWFibGUg4oCUIHRoZSBhdXRob3JzIG9m
CitgYHdlYnNvY2tldHNgYCBmZWVsIG1vcmUgY29uZmlkZW50IGFib3V0IHdyaXRpbmcgY29kZSB0
aGFuIHdyaXRpbmcgZG9jcyA6LSkKKworSWYgeW91J3JlIHdvbmRlcmluZyB3aHkgdGhpbmdzIGFy
ZSBkb25lIGluIGEgY2VydGFpbiB3YXksIHRoZSA6ZG9jOmBkZXNpZ24KK2RvY3VtZW50IDxkZXNp
Z24+YCBwcm92aWRlcyBsb3RzIG9mIGRldGFpbHMgYWJvdXQgdGhlIGludGVybmFscyBvZiB3ZWJz
b2NrZXRzLgorCisuLiBfaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29j
a2V0cy9pc3N1ZXMvbmV3CisuLiBfcHVsbCByZXF1ZXN0OiBodHRwczovL2dpdGh1Yi5jb20vYWF1
Z3VzdGluL3dlYnNvY2tldHMvY29tcGFyZS8KKworUXVlc3Rpb25zCistLS0tLS0tLS0KKworR2l0
SHViIGlzc3VlcyBhcmVuJ3QgYSBnb29kIG1lZGl1bSBmb3IgaGFuZGxpbmcgcXVlc3Rpb25zLiBU
aGVyZSBhcmUgYmV0dGVyCitwbGFjZXMgdG8gYXNrIHF1ZXN0aW9ucywgZm9yIGV4YW1wbGUgU3Rh
Y2sgT3ZlcmZsb3cuCisKK0lmIHlvdSB3YW50IHRvIGFzayBhIHF1ZXN0aW9uIGFueXdheSwgcGxl
YXNlIG1ha2Ugc3VyZSB0aGF0OgorCistIGl0J3MgYSBxdWVzdGlvbiBhYm91dCBgYHdlYnNvY2tl
dHNgYCBhbmQgbm90IGFib3V0IDptb2Q6YGFzeW5jaW9gOworLSBpdCBpc24ndCBhbnN3ZXJlZCBi
eSB0aGUgZG9jdW1lbnRhdGlvbjsKKy0gaXQgd2Fzbid0IGFza2VkIGFscmVhZHkuCisKK0EgZ29v
ZCBxdWVzdGlvbiBjYW4gYmUgd3JpdHRlbiBhcyBhIHN1Z2dlc3Rpb24gdG8gaW1wcm92ZSB0aGUg
ZG9jdW1lbnRhdGlvbi4KKworQml0Y29pbiB1c2VycworLS0tLS0tLS0tLS0tLQorCit3ZWJzb2Nr
ZXRzIGFwcGVhcnMgdG8gYmUgcXVpdGUgcG9wdWxhciBmb3IgaW50ZXJmYWNpbmcgd2l0aCBCaXRj
b2luIG9yIG90aGVyCitjcnlwdG9jdXJyZW5jeSB0cmFja2Vycy4gSSdtIHN0cm9uZ2x5IG9wcG9z
ZWQgdG8gQml0Y29pbidzIGNhcmJvbiBmb290cHJpbnQuCisKK1BsZWFzZSBzdG9wIGhlYXRpbmcg
dGhlIHBsYW5ldCB3aGVyZSBteSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8gbGl2ZSwgdGhhbmtz
LgorCitTaW5jZSBgYHdlYnNvY2tldHNgYCBpcyByZWxlYXNlZCB1bmRlciBhbiBvcGVuLXNvdXJj
ZSBsaWNlbnNlLCB5b3UgY2FuIHVzZSBpdAorZm9yIGFueSBwdXJwb3NlIHlvdSBsaWtlLiBIb3dl
dmVyLCBJIHdvbid0IHNwZW5kIGFueSBvZiBteSB0aW1lIHRvIGhlbHAuCisKK0kgd2lsbCBzdW1t
YXJpbHkgY2xvc2UgaXNzdWVzIHJlbGF0ZWQgdG8gQml0Y29pbiBvciBjcnlwdG9jdXJyZW5jeSBp
biBhbnkgd2F5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvZGVwbG95bWVudC5y
c3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9kZXBsb3ltZW50LnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjViMDVhZmZmMTQzZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9kb2NzL2RlcGxveW1lbnQucnN0CkBAIC0wLDAgKzEsMTYyIEBACitE
ZXBsb3ltZW50Cis9PT09PT09PT09CisKKy4uIGN1cnJlbnRtb2R1bGU6OiB3ZWJzb2NrZXRzCisK
K0FwcGxpY2F0aW9uIHNlcnZlcgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBhdXRob3Igb2Yg
YGB3ZWJzb2NrZXRzYGAgaXNuJ3QgYXdhcmUgb2YgYmVzdCBwcmFjdGljZXMgZm9yIGRlcGxveWlu
ZworbmV0d29yayBzZXJ2aWNlcyBiYXNlZCBvbiA6bW9kOmBhc3luY2lvYCwgbGV0IGFsb25lIGFw
cGxpY2F0aW9uIHNlcnZlcnMuCisKK1lvdSBjYW4gcnVuIGEgc2NyaXB0IHNpbWlsYXIgdG8gdGhl
IDpyZWY6YHNlcnZlciBleGFtcGxlIDxzZXJ2ZXItZXhhbXBsZT5gLAoraW5zaWRlIGEgc3VwZXJ2
aXNvciBpZiB5b3UgZGVlbSB0aGF0IHVzZWZ1bC4KKworWW91IGNhbiBhbHNvIGFkZCBhIHdyYXBw
ZXIgdG8gZGFlbW9uaXplIHRoZSBwcm9jZXNzLiBUaGlyZC1wYXJ0eSBsaWJyYXJpZXMKK3Byb3Zp
ZGUgc29sdXRpb25zIGZvciB0aGF0LgorCitJZiB5b3UgY2FuIHNoYXJlIGtub3dsZWRnZSBvbiB0
aGlzIHRvcGljLCBwbGVhc2UgZmlsZSBhbiBpc3N1ZV8uIFRoYW5rcyEKKworLi4gX2lzc3VlOiBo
dHRwczovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMvaXNzdWVzL25ldworCitHcmFj
ZWZ1bCBzaHV0ZG93bgorLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IG1heSB3YW50IHRvIGNsb3Nl
IGNvbm5lY3Rpb25zIGdyYWNlZnVsbHkgd2hlbiBzaHV0dGluZyBkb3duIHRoZSBzZXJ2ZXIsCitw
ZXJoYXBzIGFmdGVyIGV4ZWN1dGluZyBzb21lIGNsZWFudXAgbG9naWMuIFRoZXJlIGFyZSB0d28g
d2F5cyB0byBhY2hpZXZlIHRoaXMKK3dpdGggdGhlIG9iamVjdCByZXR1cm5lZCBieSA6ZnVuYzpg
fnNlcnZlci5zZXJ2ZWA6CisKKy0gdXNpbmcgaXQgYXMgYSBhc3luY2hyb25vdXMgY29udGV4dCBt
YW5hZ2VyLCBvcgorLSBjYWxsaW5nIGl0cyBgYGNsb3NlKClgYCBtZXRob2QsIHRoZW4gd2FpdGlu
ZyBmb3IgaXRzIGBgd2FpdF9jbG9zZWQoKWBgCisgIG1ldGhvZCB0byBjb21wbGV0ZS4KKworT24g
VW5peCBzeXN0ZW1zLCBzaHV0ZG93biBpcyB1c3VhbGx5IHRyaWdnZXJlZCBieSBzZW5kaW5nIGEg
c2lnbmFsLgorCitIZXJlJ3MgYSBmdWxsIGV4YW1wbGUgZm9yIGhhbmRsaW5nIFNJR1RFUk0gb24g
VW5peDoKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9leGFtcGxlL3NodXRkb3duLnB5CisgICAg
OmVtcGhhc2l6ZS1saW5lczogMTMsMTctMTkKKworVGhpcyBleGFtcGxlIGlzIGVhc2lseSBhZGFw
dGVkIHRvIGhhbmRsZSBvdGhlciBzaWduYWxzLiBJZiB5b3Ugb3ZlcnJpZGUgdGhlCitkZWZhdWx0
IGhhbmRsZXIgZm9yIFNJR0lOVCwgd2hpY2ggcmFpc2VzIDpleGM6YEtleWJvYXJkSW50ZXJydXB0
YCwgYmUgYXdhcmUKK3RoYXQgeW91IHdvbid0IGJlIGFibGUgdG8gaW50ZXJydXB0IGEgcHJvZ3Jh
bSB3aXRoIEN0cmwtQyBhbnltb3JlIHdoZW4gaXQncworc3R1Y2sgaW4gYSBsb29wLgorCitJdCdz
IG1vcmUgZGlmZmljdWx0IHRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IG9uIFdpbmRvd3MuIFNv
bWUgdGhpcmQtcGFydHkKK3Byb2plY3RzIHRyeSB0byBoZWxwIHdpdGggdGhpcyBwcm9ibGVtLgor
CitJZiB5b3VyIHNlcnZlciBkb2Vzbid0IHJ1biBpbiB0aGUgbWFpbiB0aHJlYWQsIGxvb2sgYXQK
KzpmdW5jOmB+YXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZWAu
CisKK01lbW9yeSB1c2FnZQorLS0tLS0tLS0tLS0tCisKKy4uIF9tZW1vcnktdXNhZ2U6CisKK0lu
IG1vc3QgY2FzZXMsIG1lbW9yeSB1c2FnZSBvZiBhIFdlYlNvY2tldCBzZXJ2ZXIgaXMgcHJvcG9y
dGlvbmFsIHRvIHRoZQorbnVtYmVyIG9mIG9wZW4gY29ubmVjdGlvbnMuIFdoZW4gYSBzZXJ2ZXIg
aGFuZGxlcyB0aG91c2FuZHMgb2YgY29ubmVjdGlvbnMsCittZW1vcnkgdXNhZ2UgY2FuIGJlY29t
ZSBhIGJvdHRsZW5lY2suCisKK01lbW9yeSB1c2FnZSBvZiBhIHNpbmdsZSBjb25uZWN0aW9uIGlz
IHRoZSBzdW0gb2Y6CisKKzEuIHRoZSBiYXNlbGluZSBhbW91bnQgb2YgbWVtb3J5IGBgd2Vic29j
a2V0c2BgIHJlcXVpcmVzIGZvciBlYWNoIGNvbm5lY3Rpb24sCisyLiB0aGUgYW1vdW50IG9mIGRh
dGEgaGVsZCBpbiBidWZmZXJzIGJlZm9yZSB0aGUgYXBwbGljYXRpb24gcHJvY2Vzc2VzIGl0LAor
My4gYW55IGFkZGl0aW9uYWwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgYXBwbGljYXRpb24gaXRz
ZWxmLgorCitCYXNlbGluZQorLi4uLi4uLi4KKworQ29tcHJlc3Npb24gc2V0dGluZ3MgYXJlIHRo
ZSBtYWluIGZhY3RvciBhZmZlY3RpbmcgdGhlIGJhc2VsaW5lIGFtb3VudCBvZgorbWVtb3J5IHVz
ZWQgYnkgZWFjaCBjb25uZWN0aW9uLgorCitCeSBkZWZhdWx0IGBgd2Vic29ja2V0c2BgIG1heGlt
aXplcyBjb21wcmVzc2lvbiByYXRlIGF0IHRoZSBleHBlbnNlIG9mIG1lbW9yeQordXNhZ2UuIElm
IG1lbW9yeSB1c2FnZSBpcyBhbiBpc3N1ZSwgbG93ZXJpbmcgY29tcHJlc3Npb24gc2V0dGluZ3Mg
Y2FuIGhlbHA6CisKKy0gQ29udGV4dCBUYWtlb3ZlciBpcyBuZWNlc3NhcnkgdG8gZ2V0IGdvb2Qg
cGVyZm9ybWFuY2UgZm9yIGFsbW9zdCBhbGwKKyAgYXBwbGljYXRpb25zLiBJdCBzaG91bGQgcmVt
YWluIGVuYWJsZWQuCistIFdpbmRvdyBCaXRzIGlzIGEgdHJhZGUtb2ZmIGJldHdlZW4gbWVtb3J5
IHVzYWdlIGFuZCBjb21wcmVzc2lvbiByYXRlLgorICBJdCBkZWZhdWx0cyB0byAxNSBhbmQgY2Fu
IGJlIGxvd2VyZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzbid0IG9wdGltYWwKKyAgZm9yIHNtYWxs
LCByZXBldGl0aXZlIG1lc3NhZ2VzIHdoaWNoIGFyZSB0eXBpY2FsIG9mIFdlYlNvY2tldCBzZXJ2
ZXJzLgorLSBNZW1vcnkgTGV2ZWwgaXMgYSB0cmFkZS1vZmYgYmV0d2VlbiBtZW1vcnkgdXNhZ2Ug
YW5kIGNvbXByZXNzaW9uIHNwZWVkLgorICBJdCBkZWZhdWx0cyB0byA4IGFuZCBjYW4gYmUgbG93
ZXJlZC4gQSBsb3dlciBtZW1vcnkgbGV2ZWwgY2FuIGFjdHVhbGx5CisgIGluY3JlYXNlIHNwZWVk
IHRoYW5rcyB0byBtZW1vcnkgbG9jYWxpdHksIGV2ZW4gaWYgdGhlIENQVSBkb2VzIG1vcmUgd29y
ayEKKworU2VlIHRoaXMgOnJlZjpgZXhhbXBsZSA8cGVyLW1lc3NhZ2UtZGVmbGF0ZS1jb25maWd1
cmF0aW9uLWV4YW1wbGU+YCBmb3IgaG93IHRvCitjb25maWd1cmUgY29tcHJlc3Npb24gc2V0dGlu
Z3MuCisKK0hlcmUncyBob3cgdmFyaW91cyBjb21wcmVzc2lvbiBzZXR0aW5ncyBhZmZlY3QgbWVt
b3J5IHVzYWdlIG9mIGEgc2luZ2xlCitjb25uZWN0aW9uIG9uIGEgNjQtYml0IHN5c3RlbSwgYXMg
d2VsbCBhIGJlbmNobWFya18gb2YgY29tcHJlc3NlZCBzaXplIGFuZAorY29tcHJlc3Npb24gdGlt
ZSBmb3IgYSBjb3JwdXMgb2Ygc21hbGwgSlNPTiBkb2N1bWVudHMuCisKKystLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tcHJlc3Npb24gfCBXaW5kb3cgQml0cyB8
IE1lbW9yeSBMZXZlbCB8IE1lbW9yeSB1c2FnZSB8IFNpemUgdnMuIGRlZmF1bHQgfCBUaW1lIHZz
LiBkZWZhdWx0IHwKKys9PT09PT09PT09PT09Kz09PT09PT09PT09PT0rPT09PT09PT09PT09PT0r
PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PSsKK3wg
KmRlZmF1bHQqICAgfCAxNSAgICAgICAgICB8IDggICAgICAgICAgICB8IDMyNcKgS2lCICAgICAg
fCArMCUgICAgICAgICAgICAgIHwgKzAlICAgICAgICAgICAgICArCisrLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICAgIHwgMTQgICAgICAgICAgfCA3
ICAgICAgICAgICAgfCAxODHCoEtpQiAgICAgIHwgKzEuNSUgICAgICAgICAgICB8IC01LjMlICAg
ICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKworfCAg
ICAgICAgICAgICB8IDEzICAgICAgICAgIHwgNiAgICAgICAgICAgIHwgMTEwwqBLaUIgICAgICB8
ICsyLjglICAgICAgICAgICAgfCAtNy41JSAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgICAgfCAxMiAgICAgICAgICB8IDUg
ICAgICAgICAgICB8IDczwqBLaUIgICAgICAgfCArNC40JSAgICAgICAgICAgIHwgLTE4LjklICAg
ICAgICAgICB8CisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAg
ICAgICAgICAgIHwgMTEgICAgICAgICAgfCA0ICAgICAgICAgICAgfCA1NcKgS2lCICAgICAgIHwg
KzguNSUgICAgICAgICAgICB8IC0xOC44JSAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tKworfCAqZGlzYWJsZWQqICB8IE4vQSAgICAgICAgIHwgTi9B
ICAgICAgICAgIHwgMjLCoEtpQiAgICAgICB8IE4vQSAgICAgICAgICAgICAgfCBOL0EgICAgICAg
ICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsKKworKkRv
bid0IGFzc3VtZSB0aGlzIGV4YW1wbGUgaXMgcmVwcmVzZW50YXRpdmUhIENvbXByZXNzZWQgc2l6
ZSBhbmQgY29tcHJlc3Npb24KK3RpbWUgZGVwZW5kIGhlYXZpbHkgb24gdGhlIGtpbmQgb2YgbWVz
c2FnZXMgZXhjaGFuZ2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiEqCisKK1lvdSBjYW4gcnVuIHRoZSBz
YW1lIGJlbmNobWFyayBmb3IgeW91ciBhcHBsaWNhdGlvbiBieSBjcmVhdGluZyBhIGxpc3Qgb2YK
K3R5cGljYWwgbWVzc2FnZXMgYW5kIHBhc3NpbmcgaXQgdG8gdGhlIGBgX2JlbmNobWFya2BgIGZ1
bmN0aW9uXy4KKworLi4gX2JlbmNobWFyazogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWF1Z3Vz
dGluL2ZiZWEwOWNlOGI1YjMwYzRlNTY0NThlYjA4MWZlNTk5CisuLiBfZnVuY3Rpb246IGh0dHBz
Oi8vZ2lzdC5naXRodWIuY29tL2FhdWd1c3Rpbi9mYmVhMDljZThiNWIzMGM0ZTU2NDU4ZWIwODFm
ZTU5OSNmaWxlLWNvbXByZXNzaW9uLXB5LUw0OC1MMTQ0CisKK1RoaXMgYGJsb2cgcG9zdCBieSBJ
bHlhIEdyaWdvcmlrYF8gcHJvdmlkZXMgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBjb21wcmVzc2lv
bgorc2V0dGluZ3MgYWZmZWN0IG1lbW9yeSB1c2FnZSBhbmQgaG93IHRvIG9wdGltaXplIHRoZW0u
CisKKy4uIF9ibG9nIHBvc3QgYnkgSWx5YSBHcmlnb3JpazogaHR0cHM6Ly93d3cuaWd2aXRhLmNv
bS8yMDEzLzExLzI3L2NvbmZpZ3VyaW5nLWFuZC1vcHRpbWl6aW5nLXdlYnNvY2tldC1jb21wcmVz
c2lvbi8KKworVGhpcyBgZXhwZXJpbWVudCBieSBQZXRlciBUaG9yc29uYF8gc3VnZ2VzdHMgV2lu
ZG93IEJpdHMgPSAxMSwgTWVtb3J5IExldmVsID0KKzQgYXMgYSBzd2VldCBzcG90IGZvciBvcHRp
bWl6aW5nIG1lbW9yeSB1c2FnZS4KKworLi4gX2V4cGVyaW1lbnQgYnkgUGV0ZXIgVGhvcnNvbjog
aHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbC1hcmNoaXZlL3dlYi9oeWJpL2N1cnJlbnQvbXNnMTAy
MjIuaHRtbAorCitCdWZmZXJzCisuLi4uLi4uCisKK1VuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2Vz
LCBidWZmZXJzIGFyZSBhbG1vc3QgYWx3YXlzIGVtcHR5LgorCitVbmRlciBoaWdoIGxvYWQsIGlm
IGEgc2VydmVyIHJlY2VpdmVzIG1vcmUgbWVzc2FnZXMgdGhhbiBpdCBjYW4gcHJvY2VzcywKK2J1
ZmZlcmJsb2F0IGNhbiByZXN1bHQgaW4gZXhjZXNzaXZlIG1lbW9yeSB1c2UuCisKK0J5IGRlZmF1
bHQgYGB3ZWJzb2NrZXRzYGAgaGFzIGdlbmVyb3VzIGxpbWl0cy4gSXQgaXMgc3Ryb25nbHkgcmVj
b21tZW5kZWQgdG8KK2FkYXB0IHRoZW0gdG8geW91ciBhcHBsaWNhdGlvbi4gV2hlbiB5b3UgY2Fs
bCA6ZnVuYzpgfnNlcnZlci5zZXJ2ZWA6CisKKy0gU2V0IGBgbWF4X3NpemVgYCAoZGVmYXVsdDog
McKgTWlCLCBVVEYtOCBlbmNvZGVkKSB0byB0aGUgbWF4aW11bSBzaXplIG9mCisgIG1lc3NhZ2Vz
IHlvdXIgYXBwbGljYXRpb24gZ2VuZXJhdGVzLgorLSBTZXQgYGBtYXhfcXVldWVgYCAoZGVmYXVs
dDogMzIpIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZXNzYWdlcyB5b3VyCisgIGFwcGxpY2F0
aW9uIGV4cGVjdHMgdG8gcmVjZWl2ZSBmYXN0ZXIgdGhhbiBpdCBjYW4gcHJvY2VzcyB0aGVtLiBU
aGUgcXVldWUKKyAgcHJvdmlkZXMgYnVyc3QgdG9sZXJhbmNlIHdpdGhvdXQgc2xvd2luZyBkb3du
IHRoZSBUQ1AgY29ubmVjdGlvbi4KKworRnVydGhlcm1vcmUsIHlvdSBjYW4gbG93ZXIgYGByZWFk
X2xpbWl0YGAgYW5kIGBgd3JpdGVfbGltaXRgYCAoZGVmYXVsdDoKKzY0wqBLaUIpIHRvIHJlZHVj
ZSB0aGUgc2l6ZSBvZiBidWZmZXJzIGZvciBpbmNvbWluZyBhbmQgb3V0Z29pbmcgZGF0YS4KKwor
VGhlIGRlc2lnbiBkb2N1bWVudCBwcm92aWRlcyA6cmVmOmBtb3JlIGRldGFpbHMgYWJvdXQgYnVm
ZmVyczxidWZmZXJzPmAuCisKK1BvcnQgc2hhcmluZworLS0tLS0tLS0tLS0tCisKK1RoZSBXZWJT
b2NrZXQgcHJvdG9jb2wgaXMgYW4gZXh0ZW5zaW9uIG9mIEhUVFAvMS4xLiBJdCBjYW4gYmUgdGVt
cHRpbmcgdG8KK3NlcnZlIGJvdGggSFRUUCBhbmQgV2ViU29ja2V0IG9uIHRoZSBzYW1lIHBvcnQu
CisKK1RoZSBhdXRob3Igb2YgYGB3ZWJzb2NrZXRzYGAgZG9lc24ndCB0aGluayB0aGF0J3MgYSBn
b29kIGlkZWEsIGR1ZSB0byB0aGUKK3dpZGVseSBkaWZmZXJlbnQgb3BlcmF0aW9uYWwgY2hhcmFj
dGVyaXN0aWNzIG9mIEhUVFAgYW5kIFdlYlNvY2tldC4KKworYGB3ZWJzb2NrZXRzYGAgcHJvdmlk
ZSBtaW5pbWFsIHN1cHBvcnQgZm9yIHJlc3BvbmRpbmcgdG8gSFRUUCByZXF1ZXN0cyB3aXRoCit0
aGUgOm1ldGg6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wucHJvY2Vzc19yZXF1ZXN0
YCBob29rLiBUeXBpY2FsCit1c2UgY2FzZXMgaW5jbHVkZSBoZWFsdGggY2hlY2tzLiBIZXJlJ3Mg
YW4gZXhhbXBsZToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9leGFtcGxlL2hlYWx0aF9jaGVj
a19zZXJ2ZXIucHkKKyAgICA6ZW1waGFzaXplLWxpbmVzOiA5LTExLDE3LTE5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvZG9jcy9kZXNpZ24ucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3Mv
ZGVzaWduLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc0Mjc5
Yjg3ZjZlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2Rlc2lnbi5y
c3QKQEAgLTAsMCArMSw1NzEgQEAKK0Rlc2lnbgorPT09PT09CisKKy4uIGN1cnJlbnRtb2R1bGU6
OiB3ZWJzb2NrZXRzCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBkZXNpZ24gb2YgYGB3
ZWJzb2NrZXRzYGAuIEl0IGFzc3VtZXMgZmFtaWxpYXJpdHkKK3dpdGggdGhlIHNwZWNpZmljYXRp
b24gb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbCBpbiA6cmZjOmA2NDU1YC4KKworSXQncyBwcmlt
YXJpbHkgaW50ZW5kZWQgYXQgbWFpbnRhaW5lcnMuIEl0IG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Ig
dXNlcnMgd2hvCit3aXNoIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIHVuZGVyIHRoZSBob29k
LgorCisuLiB3YXJuaW5nOjoKKworICAgIEludGVybmFscyBkZXNjcmliZWQgaW4gdGhpcyBkb2N1
bWVudCBtYXkgY2hhbmdlIGF0IGFueSB0aW1lLgorCisgICAgQmFja3dhcmRzIGNvbXBhdGliaWxp
dHkgaXMgb25seSBndWFyYW50ZWVkIGZvciBgcHVibGljIEFQSXMgPGFwaT5gXy4KKworCitMaWZl
Y3ljbGUKKy0tLS0tLS0tLQorCitTdGF0ZQorLi4uLi4KKworV2ViU29ja2V0IGNvbm5lY3Rpb25z
IGdvIHRocm91Z2ggYSB0cml2aWFsIHN0YXRlIG1hY2hpbmU6CisKKy0gYGBDT05ORUNUSU5HYGA6
IGluaXRpYWwgc3RhdGUsCistIGBgT1BFTmBgOiB3aGVuIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBp
cyBjb21wbGV0ZSwKKy0gYGBDTE9TSU5HYGA6IHdoZW4gdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGlz
IHN0YXJ0ZWQsCistIGBgQ0xPU0VEYGA6IHdoZW4gdGhlIFRDUCBjb25uZWN0aW9uIGlzIGNsb3Nl
ZC4KKworVHJhbnNpdGlvbnMgaGFwcGVuIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorCistIGBg
Q09OTkVDVElORyAtPiBPUEVOYGA6IGluCisgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29t
bW9uUHJvdG9jb2wuY29ubmVjdGlvbl9vcGVuYCB3aGljaCBydW5zIHdoZW4KKyAgdGhlIDpyZWY6
YG9wZW5pbmcgaGFuZHNoYWtlIDxvcGVuaW5nLWhhbmRzaGFrZT5gIGNvbXBsZXRlcyBhbmQgdGhl
IFdlYlNvY2tldAorICBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIOKAlCBub3QgdG8gYmUgY29u
ZnVzZWQgd2l0aAorICA6bWV0aDpgfmFzeW5jaW8uUHJvdG9jb2wuY29ubmVjdGlvbl9tYWRlYCB3
aGljaCBydW5zIHdoZW4gdGhlIFRDUCBjb25uZWN0aW9uCisgIGlzIGVzdGFibGlzaGVkOworLSBg
YE9QRU4gLT4gQ0xPU0lOR2BgOiBpbgorICA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1v
blByb3RvY29sLndyaXRlX2ZyYW1lYCBpbW1lZGlhdGVseSBiZWZvcmUKKyAgc2VuZGluZyBhIGNs
b3NlIGZyYW1lOyBzaW5jZSByZWNlaXZpbmcgYSBjbG9zZSBmcmFtZSB0cmlnZ2VycyBzZW5kaW5n
IGEKKyAgY2xvc2UgZnJhbWUsIHRoaXMgZG9lcyB0aGUgcmlnaHQgdGhpbmcgcmVnYXJkbGVzcyBv
ZiB3aGljaCBzaWRlIHN0YXJ0ZWQgdGhlCisgIDpyZWY6YGNsb3NpbmcgaGFuZHNoYWtlIDxjbG9z
aW5nLWhhbmRzaGFrZT5gOyBhbHNvIGluCisgIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29t
bW9uUHJvdG9jb2wuZmFpbF9jb25uZWN0aW9uYCB3aGljaCBkdXBsaWNhdGVzCisgIGEgZmV3IGxp
bmVzIG9mIGNvZGUgZnJvbSBgYHdyaXRlX2Nsb3NlX2ZyYW1lKClgYCBhbmQgYGB3cml0ZV9mcmFt
ZSgpYGA7CistIGBgKiAtPiBDTE9TRURgYDogaW4KKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2Nr
ZXRDb21tb25Qcm90b2NvbC5jb25uZWN0aW9uX2xvc3RgIHdoaWNoIGlzIGFsd2F5cworICBjYWxs
ZWQgZXhhY3RseSBvbmNlIHdoZW4gdGhlIFRDUCBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKworQ29y
b3V0aW5lcworLi4uLi4uLi4uLgorCitUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3Mgd2hpY2gg
Y29yb3V0aW5lcyBhcmUgcnVubmluZyBhdCBlYWNoIHN0YWdlIG9mIHRoZQorY29ubmVjdGlvbiBs
aWZlY3ljbGUgb24gdGhlIGNsaWVudCBzaWRlLgorCisuLiBpbWFnZTo6IGxpZmVjeWNsZS5zdmcK
KyAgIDp0YXJnZXQ6IF9pbWFnZXMvbGlmZWN5Y2xlLnN2ZworCitUaGUgbGlmZWN5Y2xlIGlzIGlk
ZW50aWNhbCBvbiB0aGUgc2VydmVyIHNpZGUsIGV4Y2VwdCBpbnZlcnNpb24gb2YgY29udHJvbAor
bWFrZXMgdGhlIGVxdWl2YWxlbnQgb2YgOm1ldGg6YH5jbGllbnQuY29ubmVjdGAgaW1wbGljaXQu
CisKK0Nvcm91dGluZXMgc2hvd24gaW4gZ3JlZW4gYXJlIGNhbGxlZCBieSB0aGUgYXBwbGljYXRp
b24uIE11bHRpcGxlIGNvcm91dGluZXMKK21heSBpbnRlcmFjdCB3aXRoIHRoZSBXZWJTb2NrZXQg
Y29ubmVjdGlvbiBjb25jdXJyZW50bHkuCisKK0Nvcm91dGluZXMgc2hvd24gaW4gZ3JheSBtYW5h
Z2UgdGhlIGNvbm5lY3Rpb24uIFdoZW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlCitzdWNjZWVkcywg
Om1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jb25uZWN0aW9uX29wZW5g
IHN0YXJ0cwordHdvIHRhc2tzOgorCistIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9u
UHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCBydW5zCisgIDptZXRoOmB+cHJvdG9jb2wuV2Vi
U29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YWAgd2hpY2ggaGFuZGxlcworICBpbmNv
bWluZyBkYXRhIGFuZCBsZXRzIDptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9j
b2wucmVjdmAKKyAgY29uc3VtZSBpdC4gSXQgbWF5IGJlIGNhbmNlbGVkIHRvIHRlcm1pbmF0ZSB0
aGUgY29ubmVjdGlvbi4gSXQgbmV2ZXIgZXhpdHMKKyAgd2l0aCBhbiBleGNlcHRpb24gb3RoZXIg
dGhhbiA6ZXhjOmB+YXN5bmNpby5DYW5jZWxsZWRFcnJvcmAuIFNlZSA6cmVmOmBkYXRhCisgIHRy
YW5zZmVyIDxkYXRhLXRyYW5zZmVyPmAgYmVsb3cuCisKKy0gOmF0dHI6YH5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbC5rZWVwYWxpdmVfcGluZ190YXNrYCBydW5zCisgIDptZXRoOmB+
cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wua2VlcGFsaXZlX3BpbmdgIHdoaWNoIHNl
bmRzIFBpbmcKKyAgZnJhbWVzIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzIGFuZCBlbnN1cmVzIHRoYXQg
Y29ycmVzcG9uZGluZyBQb25nIGZyYW1lcyBhcmUKKyAgcmVjZWl2ZWQuIEl0IGlzIGNhbmNlbGVk
IHdoZW4gdGhlIGNvbm5lY3Rpb24gdGVybWluYXRlcy4gSXQgbmV2ZXIgZXhpdHMKKyAgd2l0aCBh
biBleGNlcHRpb24gb3RoZXIgdGhhbiA6ZXhjOmB+YXN5bmNpby5DYW5jZWxsZWRFcnJvcmAuCisK
Ky0gOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0
aW9uX3Rhc2tgIHJ1bnMKKyAgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2Nv
bC5jbG9zZV9jb25uZWN0aW9uYCB3aGljaCB3YWl0cyBmb3IKKyAgdGhlIGRhdGEgdHJhbnNmZXIg
dG8gdGVybWluYXRlLCB0aGVuIHRha2VzIGNhcmUgb2YgY2xvc2luZyB0aGUgVENQCisgIGNvbm5l
Y3Rpb24uIEl0IG11c3Qgbm90IGJlIGNhbmNlbGVkLiBJdCBuZXZlciBleGl0cyB3aXRoIGFuIGV4
Y2VwdGlvbi4gU2VlCisgIDpyZWY6YGNvbm5lY3Rpb24gdGVybWluYXRpb24gPGNvbm5lY3Rpb24t
dGVybWluYXRpb24+YCBiZWxvdy4KKworQmVzaWRlcywgOm1ldGg6YH5wcm90b2NvbC5XZWJTb2Nr
ZXRDb21tb25Qcm90b2NvbC5mYWlsX2Nvbm5lY3Rpb25gIHN0YXJ0cwordGhlIHNhbWUgOmF0dHI6
YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0aW9uX3Rhc2tg
IHdoZW4KK3RoZSBvcGVuaW5nIGhhbmRzaGFrZSBmYWlscywgaW4gb3JkZXIgdG8gY2xvc2UgdGhl
IFRDUCBjb25uZWN0aW9uLgorCitTcGxpdHRpbmcgdGhlIHJlc3BvbnNpYmlsaXRpZXMgYmV0d2Vl
biB0d28gdGFza3MgbWFrZXMgaXQgZWFzaWVyIHRvIGd1YXJhbnRlZQordGhhdCBgYHdlYnNvY2tl
dHNgYCBjYW4gdGVybWluYXRlIGNvbm5lY3Rpb25zOgorCistIHdpdGhpbiBhIGZpeGVkIHRpbWVv
dXQsCistIHdpdGhvdXQgbGVha2luZyBwZW5kaW5nIHRhc2tzLAorLSB3aXRob3V0IGxlYWtpbmcg
b3BlbiBUQ1AgY29ubmVjdGlvbnMsCisKK3JlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY29ubmVj
dGlvbiB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGFibm9ybWFsbHkuCisKKzphdHRyOmB+cHJvdG9j
b2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCBjb21wbGV0ZXMg
d2hlbiBubworbW9yZSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQgb24gdGhlIGNvbm5lY3Rpb24uIFVu
ZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCBpdAorZXhpdHMgYWZ0ZXIgZXhjaGFuZ2luZyBjbG9z
ZSBmcmFtZXMuCisKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xv
c2VfY29ubmVjdGlvbl90YXNrYCBjb21wbGV0ZXMgd2hlbgordGhlIFRDUCBjb25uZWN0aW9uIGlz
IGNsb3NlZC4KKworCisuLiBfb3BlbmluZy1oYW5kc2hha2U6CisKK09wZW5pbmcgaGFuZHNoYWtl
CistLS0tLS0tLS0tLS0tLS0tLQorCitgYHdlYnNvY2tldHNgYCBwZXJmb3JtcyB0aGUgb3Blbmlu
ZyBoYW5kc2hha2Ugd2hlbiBlc3RhYmxpc2hpbmcgYSBXZWJTb2NrZXQKK2Nvbm5lY3Rpb24uIE9u
IHRoZSBjbGllbnQgc2lkZSwgOm1ldGg6YH5jbGllbnQuY29ubmVjdGAgZXhlY3V0ZXMgaXQgYmVm
b3JlCityZXR1cm5pbmcgdGhlIHByb3RvY29sIHRvIHRoZSBjYWxsZXIuIE9uIHRoZSBzZXJ2ZXIg
c2lkZSwgaXQncyBleGVjdXRlZCBiZWZvcmUKK3Bhc3NpbmcgdGhlIHByb3RvY29sIHRvIHRoZSBg
YHdzX2hhbmRsZXJgYCBjb3JvdXRpbmUgaGFuZGxpbmcgdGhlIGNvbm5lY3Rpb24uCisKK1doaWxl
IHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBpcyBhc3ltbWV0cmljYWwg4oCUIHRoZSBjbGllbnQgc2Vu
ZHMgYW4gSFRUUCBVcGdyYWRlCityZXF1ZXN0IGFuZCB0aGUgc2VydmVyIHJlcGxpZXMgd2l0aCBh
biBIVFRQIFN3aXRjaGluZyBQcm90b2NvbHMgcmVzcG9uc2Ug4oCUCitgYHdlYnNvY2tldHNgYCBh
aW1zIGF0IGtlZXBpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGJvdGggc2lkZXMgY29uc2lzdGVu
dAord2l0aCBvbmUgYW5vdGhlci4KKworT24gdGhlIGNsaWVudCBzaWRlLCA6bWV0aDpgfmNsaWVu
dC5XZWJTb2NrZXRDbGllbnRQcm90b2NvbC5oYW5kc2hha2VgOgorCistIGJ1aWxkcyBhIEhUVFAg
cmVxdWVzdCBiYXNlZCBvbiB0aGUgYGB1cmlgYCBhbmQgcGFyYW1ldGVycyBwYXNzZWQgdG8KKyAg
Om1ldGg6YH5jbGllbnQuY29ubmVjdGA7CistIHdyaXRlcyB0aGUgSFRUUCByZXF1ZXN0IHRvIHRo
ZSBuZXR3b3JrOworLSByZWFkcyBhIEhUVFAgcmVzcG9uc2UgZnJvbSB0aGUgbmV0d29yazsKKy0g
Y2hlY2tzIHRoZSBIVFRQIHJlc3BvbnNlLCB2YWxpZGF0ZXMgYGBleHRlbnNpb25zYGAgYW5kIGBg
c3VicHJvdG9jb2xgYCwgYW5kCisgIGNvbmZpZ3VyZXMgdGhlIHByb3RvY29sIGFjY29yZGluZ2x5
OworLSBtb3ZlcyB0byB0aGUgYGBPUEVOYGAgc3RhdGUuCisKK09uIHRoZSBzZXJ2ZXIgc2lkZSwg
Om1ldGg6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wuaGFuZHNoYWtlYDoKKworLSBy
ZWFkcyBhIEhUVFAgcmVxdWVzdCBmcm9tIHRoZSBuZXR3b3JrOworLSBjYWxscyA6bWV0aDpgfnNl
cnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9jZXNzX3JlcXVlc3RgIHdoaWNoIG1heQor
ICBhYm9ydCB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZSBhbmQgcmV0dXJuIGEgSFRUUCByZXNwb25z
ZSBpbnN0ZWFkOyB0aGlzCisgIGhvb2sgb25seSBtYWtlcyBzZW5zZSBvbiB0aGUgc2VydmVyIHNp
ZGU7CistIGNoZWNrcyB0aGUgSFRUUCByZXF1ZXN0LCBuZWdvdGlhdGVzIGBgZXh0ZW5zaW9uc2Bg
IGFuZCBgYHN1YnByb3RvY29sYGAsIGFuZAorICBjb25maWd1cmVzIHRoZSBwcm90b2NvbCBhY2Nv
cmRpbmdseTsKKy0gYnVpbGRzIGEgSFRUUCByZXNwb25zZSBiYXNlZCBvbiB0aGUgYWJvdmUgYW5k
IHBhcmFtZXRlcnMgcGFzc2VkIHRvCisgIDptZXRoOmB+c2VydmVyLnNlcnZlYDsKKy0gd3JpdGVz
IHRoZSBIVFRQIHJlc3BvbnNlIHRvIHRoZSBuZXR3b3JrOworLSBtb3ZlcyB0byB0aGUgYGBPUEVO
YGAgc3RhdGU7CistIHJldHVybnMgdGhlIGBgcGF0aGBgIHBhcnQgb2YgdGhlIGBgdXJpYGAuCisK
K1RoZSBtb3N0IHNpZ25pZmljYW50IGFzeW1tZXRyeSBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgb2Yg
dGhlIG9wZW5pbmcgaGFuZHNoYWtlCitsaWVzIGluIHRoZSBuZWdvdGlhdGlvbiBvZiBleHRlbnNp
b25zIGFuZCwgdG8gYSBsZXNzZXIgZXh0ZW50LCBvZiB0aGUKK3N1YnByb3RvY29sLiBUaGUgc2Vy
dmVyIGtub3dzIGV2ZXJ5dGhpbmcgYWJvdXQgYm90aCBzaWRlcyBhbmQgZGVjaWRlcyB3aGF0IHRo
ZQorcGFyYW1ldGVycyBzaG91bGQgYmUgZm9yIHRoZSBjb25uZWN0aW9uLiBUaGUgY2xpZW50IG1l
cmVseSBhcHBsaWVzIHRoZW0uCisKK0lmIGFueXRoaW5nIGdvZXMgd3JvbmcgZHVyaW5nIHRoZSBv
cGVuaW5nIGhhbmRzaGFrZSwgYGB3ZWJzb2NrZXRzYGAKKzpyZWY6YGZhaWxzIHRoZSBjb25uZWN0
aW9uIDxjb25uZWN0aW9uLWZhaWx1cmU+YC4KKworCisuLiBfZGF0YS10cmFuc2ZlcjoKKworRGF0
YSB0cmFuc2ZlcgorLS0tLS0tLS0tLS0tLQorCitTeW1tZXRyeQorLi4uLi4uLi4KKworT25jZSB0
aGUgb3BlbmluZyBoYW5kc2hha2UgaGFzIGNvbXBsZXRlZCwgdGhlIFdlYlNvY2tldCBwcm90b2Nv
bCBlbnRlcnMgdGhlCitkYXRhIHRyYW5zZmVyIHBoYXNlLiBUaGlzIHBhcnQgaXMgYWxtb3N0IHN5
bW1ldHJpY2FsLiBUaGVyZSBhcmUgb25seSB0d28KK2RpZmZlcmVuY2VzIGJldHdlZW4gYSBzZXJ2
ZXIgYW5kIGEgY2xpZW50OgorCistIGBjbGllbnQtdG8tc2VydmVyIG1hc2tpbmdgXzogdGhlIGNs
aWVudCBtYXNrcyBvdXRnb2luZyBmcmFtZXM7IHRoZSBzZXJ2ZXIKKyAgdW5tYXNrcyBpbmNvbWlu
ZyBmcmFtZXM7CistIGBjbG9zaW5nIHRoZSBUQ1AgY29ubmVjdGlvbmBfOiB0aGUgc2VydmVyIGNs
b3NlcyB0aGUgY29ubmVjdGlvbiBpbW1lZGlhdGVseTsKKyAgdGhlIGNsaWVudCB3YWl0cyBmb3Ig
dGhlIHNlcnZlciB0byBkbyBpdC4KKworLi4gX2NsaWVudC10by1zZXJ2ZXIgbWFza2luZzogaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjMKKy4uIF9jbG9zaW5n
IHRoZSBUQ1AgY29ubmVjdGlvbjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUj
c2VjdGlvbi01LjUuMQorCitUaGVzZSBkaWZmZXJlbmNlcyBhcmUgc28gbWlub3IgdGhhdCBhbGwg
dGhlIGxvZ2ljIGZvciBgZGF0YSBmcmFtaW5nYF8sIGZvcgorYHNlbmRpbmcgYW5kIHJlY2Vpdmlu
ZyBkYXRhYF8gYW5kIGZvciBgY2xvc2luZyB0aGUgY29ubmVjdGlvbmBfIGlzIGltcGxlbWVudGVk
CitpbiB0aGUgc2FtZSBjbGFzcywgOmNsYXNzOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJv
dG9jb2xgLgorCisuLiBfZGF0YSBmcmFtaW5nOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNjQ1NSNzZWN0aW9uLTUKKy4uIF9zZW5kaW5nIGFuZCByZWNlaXZpbmcgZGF0YTogaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi02CisuLiBfY2xvc2luZyB0aGUg
Y29ubmVjdGlvbjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi03
CisKK1RoZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmlzX2NsaWVu
dGAgYXR0cmlidXRlIHRlbGxzIHdoaWNoCitzaWRlIGEgcHJvdG9jb2wgaW5zdGFuY2UgaXMgbWFu
YWdpbmcuIFRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgb24gdGhlCis6YXR0cjpgfnNlcnZlci5X
ZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgYW5kCis6YXR0cjpgfmNsaWVudC5XZWJTb2NrZXRDbGll
bnRQcm90b2NvbGAgY2xhc3Nlcy4KKworRGF0YSBmbG93CisuLi4uLi4uLi4KKworVGhlIGZvbGxv
d2luZyBkaWFncmFtIHNob3dzIGhvdyBkYXRhIGZsb3dzIGJldHdlZW4gYW4gYXBwbGljYXRpb24g
YnVpbHQgb24gdG9wCitvZiBgYHdlYnNvY2tldHNgYCBhbmQgYSByZW1vdGUgZW5kcG9pbnQuIEl0
IGFwcGxpZXMgcmVnYXJkbGVzcyBvZiB3aGljaCBzaWRlCitpcyB0aGUgc2VydmVyIG9yIHRoZSBj
bGllbnQuCisKKy4uIGltYWdlOjogcHJvdG9jb2wuc3ZnCisgICA6dGFyZ2V0OiBfaW1hZ2VzL3By
b3RvY29sLnN2ZworCitQdWJsaWMgbWV0aG9kcyBhcmUgc2hvd24gaW4gZ3JlZW4sIHByaXZhdGUg
bWV0aG9kcyBpbiB5ZWxsb3csIGFuZCBidWZmZXJzIGluCitvcmFuZ2UuIE1ldGhvZHMgcmVsYXRl
ZCB0byBjb25uZWN0aW9uIHRlcm1pbmF0aW9uIGFyZSBvbWl0dGVkOyBjb25uZWN0aW9uCit0ZXJt
aW5hdGlvbiBpcyBkaXNjdXNzZWQgaW4gYW5vdGhlciBzZWN0aW9uIGJlbG93LgorCitSZWNlaXZp
bmcgZGF0YQorLi4uLi4uLi4uLi4uLi4KKworVGhlIGxlZnQgc2lkZSBvZiB0aGUgZGlhZ3JhbSBz
aG93cyBob3cgYGB3ZWJzb2NrZXRzYGAgcmVjZWl2ZXMgZGF0YS4KKworSW5jb21pbmcgZGF0YSBp
cyB3cml0dGVuIHRvIGEgOmNsYXNzOmB+YXN5bmNpby5TdHJlYW1SZWFkZXJgIGluIG9yZGVyIHRv
CitpbXBsZW1lbnQgZmxvdyBjb250cm9sIGFuZCBwcm92aWRlIGJhY2twcmVzc3VyZSBvbiB0aGUg
VENQIGNvbm5lY3Rpb24uCisKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9j
b2wudHJhbnNmZXJfZGF0YV90YXNrYCwgd2hpY2ggaXMgc3RhcnRlZAord2hlbiB0aGUgV2ViU29j
a2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIHByb2Nlc3NlcyB0aGlzIGRhdGEuCisKK1do
ZW4gaXQgcmVjZWl2ZXMgZGF0YSBmcmFtZXMsIGl0IHJlYXNzZW1ibGVzIGZyYWdtZW50cyBhbmQg
cHV0cyB0aGUgcmVzdWx0aW5nCittZXNzYWdlcyBpbiB0aGUgOmF0dHI6YH5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbC5tZXNzYWdlc2AgcXVldWUuCisKK1doZW4gaXQgZW5jb3VudGVy
cyBhIGNvbnRyb2wgZnJhbWU6CisKKy0gaWYgaXQncyBhIGNsb3NlIGZyYW1lLCBpdCBzdGFydHMg
dGhlIGNsb3NpbmcgaGFuZHNoYWtlOworLSBpZiBpdCdzIGEgcGluZyBmcmFtZSwgaXQgYW5zd2Vy
cyB3aXRoIGEgcG9uZyBmcmFtZTsKKy0gaWYgaXQncyBhIHBvbmcgZnJhbWUsIGl0IGFja25vd2xl
ZGdlcyB0aGUgY29ycmVzcG9uZGluZyBwaW5nICh1bmxlc3MgaXQncyBhbgorICB1bnNvbGljaXRl
ZCBwb25nKS4KKworUnVubmluZyB0aGlzIHByb2Nlc3MgaW4gYSB0YXNrIGd1YXJhbnRlZXMgdGhh
dCBjb250cm9sIGZyYW1lcyBhcmUgcHJvY2Vzc2VkCitwcm9tcHRseS4gV2l0aG91dCBzdWNoIGEg
dGFzaywgYGB3ZWJzb2NrZXRzYGAgd291bGQgZGVwZW5kIG9uIHRoZSBhcHBsaWNhdGlvbgordG8g
ZHJpdmUgdGhlIGNvbm5lY3Rpb24gYnkgaGF2aW5nIGV4YWN0bHkgb25lIGNvcm91dGluZSBhd2Fp
dGluZworOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5yZWN2YCBhdCBh
bnkgdGltZS4gV2hpbGUgdGhpcworaGFwcGVucyBuYXR1cmFsbHkgaW4gbWFueSB1c2UgY2FzZXMs
IGl0IGNhbm5vdCBiZSByZWxpZWQgdXBvbi4KKworVGhlbiA6bWV0aDpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLnJlY3ZgIGZldGNoZXMgdGhlIG5leHQgbWVzc2FnZQorZnJvbSB0
aGUgOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5tZXNzYWdlc2AgcXVl
dWUsIHdpdGggc29tZQorY29tcGxleGl0eSBhZGRlZCBmb3IgaGFuZGxpbmcgYmFja3ByZXNzdXJl
IGFuZCB0ZXJtaW5hdGlvbiBjb3JyZWN0bHkuCisKK1NlbmRpbmcgZGF0YQorLi4uLi4uLi4uLi4u
CisKK1RoZSByaWdodCBzaWRlIG9mIHRoZSBkaWFncmFtIHNob3dzIGhvdyBgYHdlYnNvY2tldHNg
YCBzZW5kcyBkYXRhLgorCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29s
LnNlbmRgIHdyaXRlcyBvbmUgb3Igc2V2ZXJhbCBkYXRhCitmcmFtZXMgY29udGFpbmluZyB0aGUg
bWVzc2FnZS4gV2hpbGUgc2VuZGluZyBhIGZyYWdtZW50ZWQgbWVzc2FnZSwgY29uY3VycmVudAor
Y2FsbHMgdG8gOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCBh
cmUgcHV0IG9uIGhvbGQgdW50aWwKK2FsbCBmcmFnbWVudHMgYXJlIHNlbnQuIFRoaXMgbWFrZXMg
Y29uY3VycmVudCBjYWxscyBzYWZlLgorCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1v
blByb3RvY29sLnBpbmdgIHdyaXRlcyBhIHBpbmcgZnJhbWUgYW5kCit5aWVsZHMgYSA6Y2xhc3M6
YH5hc3luY2lvLkZ1dHVyZWAgd2hpY2ggd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiBhIG1hdGNoaW5n
IHBvbmcKK2ZyYW1lIGlzIHJlY2VpdmVkLgorCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENv
bW1vblByb3RvY29sLnBvbmdgIHdyaXRlcyBhIHBvbmcgZnJhbWUuCisKKzptZXRoOmB+cHJvdG9j
b2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VgIHdyaXRlcyBhIGNsb3NlIGZyYW1lIGFu
ZAord2FpdHMgZm9yIHRoZSBUQ1AgY29ubmVjdGlvbiB0byB0ZXJtaW5hdGUuCisKK091dGdvaW5n
IGRhdGEgaXMgd3JpdHRlbiB0byBhIDpjbGFzczpgfmFzeW5jaW8uU3RyZWFtV3JpdGVyYCBpbiBv
cmRlciB0bworaW1wbGVtZW50IGZsb3cgY29udHJvbCBhbmQgcHJvdmlkZSBiYWNrcHJlc3N1cmUg
ZnJvbSB0aGUgVENQIGNvbm5lY3Rpb24uCisKKy4uIF9jbG9zaW5nLWhhbmRzaGFrZToKKworQ2xv
c2luZyBoYW5kc2hha2UKKy4uLi4uLi4uLi4uLi4uLi4uCisKK1doZW4gdGhlIG90aGVyIHNpZGUg
b2YgdGhlIGNvbm5lY3Rpb24gaW5pdGlhdGVzIHRoZSBjbG9zaW5nIGhhbmRzaGFrZSwKKzptZXRo
OmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVhZF9tZXNzYWdlYCByZWNlaXZl
cyBhIGNsb3NlCitmcmFtZSB3aGlsZSBpbiB0aGUgYGBPUEVOYGAgc3RhdGUuIEl0IG1vdmVzIHRv
IHRoZSBgYENMT1NJTkdgYCBzdGF0ZSwgc2VuZHMgYQorY2xvc2UgZnJhbWUsIGFuZCByZXR1cm5z
IGBgTm9uZWBgLCBjYXVzaW5nCis6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3Rv
Y29sLnRyYW5zZmVyX2RhdGFfdGFza2AgdG8gdGVybWluYXRlLgorCitXaGVuIHRoaXMgc2lkZSBv
ZiB0aGUgY29ubmVjdGlvbiBpbml0aWF0ZXMgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIHdpdGgKKzpt
ZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VgLCBpdCBtb3ZlcyB0
byB0aGUgYGBDTE9TSU5HYGAKK3N0YXRlIGFuZCBzZW5kcyBhIGNsb3NlIGZyYW1lLiBXaGVuIHRo
ZSBvdGhlciBzaWRlIHNlbmRzIGEgY2xvc2UgZnJhbWUsCis6bWV0aDpgfnByb3RvY29sLldlYlNv
Y2tldENvbW1vblByb3RvY29sLnJlYWRfbWVzc2FnZWAgcmVjZWl2ZXMgaXQgaW4gdGhlCitgYENM
T1NJTkdgYCBzdGF0ZSBhbmQgcmV0dXJucyBgYE5vbmVgYCwgYWxzbyBjYXVzaW5nCis6YXR0cjpg
fnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFfdGFza2AgdG8g
dGVybWluYXRlLgorCitJZiB0aGUgb3RoZXIgc2lkZSBkb2Vzbid0IHNlbmQgYSBjbG9zZSBmcmFt
ZSB3aXRoaW4gdGhlIGNvbm5lY3Rpb24ncyBjbG9zZQordGltZW91dCwgYGB3ZWJzb2NrZXRzYGAg
OnJlZjpgZmFpbHMgdGhlIGNvbm5lY3Rpb24gPGNvbm5lY3Rpb24tZmFpbHVyZT5gLgorCitUaGUg
Y2xvc2luZyBoYW5kc2hha2UgY2FuIHRha2UgdXAgdG8gYGAyICogY2xvc2VfdGltZW91dGBgOiBv
bmUKK2BgY2xvc2VfdGltZW91dGBgIHRvIHdyaXRlIGEgY2xvc2UgZnJhbWUgYW5kIG9uZSBgYGNs
b3NlX3RpbWVvdXRgYCB0byByZWNlaXZlCithIGNsb3NlIGZyYW1lLgorCitUaGVuIGBgd2Vic29j
a2V0c2BgIHRlcm1pbmF0ZXMgdGhlIFRDUCBjb25uZWN0aW9uLgorCisKKy4uIF9jb25uZWN0aW9u
LXRlcm1pbmF0aW9uOgorCitDb25uZWN0aW9uIHRlcm1pbmF0aW9uCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2Vf
Y29ubmVjdGlvbl90YXNrYCwgd2hpY2ggaXMKK3N0YXJ0ZWQgd2hlbiB0aGUgV2ViU29ja2V0IGNv
bm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIGlzIHJlc3BvbnNpYmxlIGZvcgorZXZlbnR1YWxseSBj
bG9zaW5nIHRoZSBUQ1AgY29ubmVjdGlvbi4KKworRmlyc3QgOmF0dHI6YH5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0aW9uX3Rhc2tgIHdhaXRzCitmb3IgOmF0
dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tg
IHRvIHRlcm1pbmF0ZSwKK3doaWNoIG1heSBoYXBwZW4gYXMgYSByZXN1bHQgb2Y6CisKKy0gYSBz
dWNjZXNzZnVsIGNsb3NpbmcgaGFuZHNoYWtlOiBhcyBleHBsYWluZWQgYWJvdmUsIHRoaXMgZXhp
dHMgdGhlIGluZmluaXRlCisgIGxvb3AgaW4gOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21t
b25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgOworLSBhIHRpbWVvdXQgd2hpbGUgd2FpdGlu
ZyBmb3IgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIHRvIGNvbXBsZXRlOiB0aGlzIGNhbmNlbHMKKyAg
OmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rh
c2tgOworLSBhIHByb3RvY29sIGVycm9yLCBpbmNsdWRpbmcgY29ubmVjdGlvbiBlcnJvcnM6IGRl
cGVuZGluZyBvbiB0aGUgZXhjZXB0aW9uLAorICA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENv
bW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFfdGFza2AgOnJlZjpgZmFpbHMgdGhlCisgIGNvbm5l
Y3Rpb24gPGNvbm5lY3Rpb24tZmFpbHVyZT5gIHdpdGggYSBzdWl0YWJsZSBjb2RlIGFuZCBleGl0
cy4KKworOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25u
ZWN0aW9uX3Rhc2tgIGlzIHNlcGFyYXRlCitmcm9tIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0
Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCB0byBtYWtlIGl0CitlYXNpZXIgdG8g
aW1wbGVtZW50IHRoZSB0aW1lb3V0IG9uIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4gQ2FuY2VsaW5n
Cis6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFf
dGFza2AgY3JlYXRlcyBubyByaXNrCitvZiBjYW5jZWxpbmcgOmF0dHI6YH5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0aW9uX3Rhc2tgCithbmQgZmFpbGluZyB0
byBjbG9zZSB0aGUgVENQIGNvbm5lY3Rpb24sIHRodXMgbGVha2luZyByZXNvdXJjZXMuCisKK1Ro
ZW4gOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25uZWN0
aW9uX3Rhc2tgIGNhbmNlbHMKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9j
b2wua2VlcGFsaXZlX3BpbmdgLiBUaGlzIHRhc2sgaGFzIG5vCitwcm90b2NvbCBjb21wbGlhbmNl
IHJlc3BvbnNpYmlsaXRpZXMuIFRlcm1pbmF0aW5nIGl0IHRvIGF2b2lkIGxlYWtpbmcgaXQgaXMK
K3RoZSBvbmx5IGNvbmNlcm4uCisKK1Rlcm1pbmF0aW5nIHRoZSBUQ1AgY29ubmVjdGlvbiBjYW4g
dGFrZSB1cCB0byBgYDIgKiBjbG9zZV90aW1lb3V0YGAgb24gdGhlCitzZXJ2ZXIgc2lkZSBhbmQg
YGAzICogY2xvc2VfdGltZW91dGBgIG9uIHRoZSBjbGllbnQgc2lkZS4gQ2xpZW50cyBzdGFydCBi
eQord2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byBjbG9zZSB0aGUgY29ubmVjdGlvbiwgaGVuY2Ug
dGhlIGV4dHJhCitgYGNsb3NlX3RpbWVvdXRgYC4gVGhlbiBib3RoIHNpZGVzIGdvIHRocm91Z2gg
dGhlIGZvbGxvd2luZyBzdGVwcyB1bnRpbCB0aGUKK1RDUCBjb25uZWN0aW9uIGlzIGxvc3Q6IGhh
bGYtY2xvc2luZyB0aGUgY29ubmVjdGlvbiAob25seSBmb3Igbm9uLVRMUworY29ubmVjdGlvbnMp
LCBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLCBhYm9ydGluZyB0aGUgY29ubmVjdGlvbi4gQXQgdGhp
cyBwb2ludAordGhlIGNvbm5lY3Rpb24gZHJvcHMgcmVnYXJkbGVzcyBvZiB3aGF0IGhhcHBlbnMg
b24gdGhlIG5ldHdvcmsuCisKKworLi4gX2Nvbm5lY3Rpb24tZmFpbHVyZToKKworQ29ubmVjdGlv
biBmYWlsdXJlCistLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIG9wZW5pbmcgaGFuZHNoYWtl
IGRvZXNuJ3QgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCBgYHdlYnNvY2tldHNgYCBmYWlscwordGhl
IGNvbm5lY3Rpb24gYnkgY2xvc2luZyB0aGUgVENQIGNvbm5lY3Rpb24uCisKK09uY2UgdGhlIG9w
ZW5pbmcgaGFuZHNoYWtlIGhhcyBjb21wbGV0ZWQsIGBgd2Vic29ja2V0c2BgIGZhaWxzIHRoZSBj
b25uZWN0aW9uCitieSBjYW5jZWxpbmcgOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Q
cm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgIGFuZAorc2VuZGluZyBhIGNsb3NlIGZyYW1lIGlm
IGFwcHJvcHJpYXRlLgorCis6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29s
LnRyYW5zZmVyX2RhdGFfdGFza2AgZXhpdHMsIHVuYmxvY2tpbmcKKzphdHRyOmB+cHJvdG9jb2wu
V2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VfY29ubmVjdGlvbl90YXNrYCwgd2hpY2ggY2xv
c2VzCit0aGUgVENQIGNvbm5lY3Rpb24uCisKKworLi4gX3NlcnZlci1zaHV0ZG93bjoKKworU2Vy
dmVyIHNodXRkb3duCistLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+d2Vic29ja2V0cy5zZXJ2
ZXIuV2ViU29ja2V0U2VydmVyYCBjbG9zZXMgYXN5bmNocm9ub3VzbHkgbGlrZQorOmNsYXNzOmBh
c3luY2lvLlNlcnZlcmAuIFRoZSBzaHV0ZG93biBoYXBwZW4gaW4gdHdvIHN0ZXBzOgorCisxLiBT
dG9wIGxpc3RlbmluZyBhbmQgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9uczsKKzIuIENsb3NlIGVz
dGFibGlzaGVkIGNvbm5lY3Rpb25zIHdpdGggY2xvc2UgY29kZSAxMDAxIChnb2luZyBhd2F5KSBv
ciwgaWYKKyAgIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBpcyBzdGlsbCBpbiBwcm9ncmVzcywgd2l0
aCBIVFRQIHN0YXR1cyBjb2RlIDUwMworICAgKFNlcnZpY2UgVW5hdmFpbGFibGUpLgorCitUaGUg
Zmlyc3QgY2FsbCB0byA6Y2xhc3M6YH53ZWJzb2NrZXRzLnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXIu
Y2xvc2VgIHN0YXJ0cyBhCit0YXNrIHRoYXQgcGVyZm9ybXMgdGhpcyBzZXF1ZW5jZS4gRnVydGhl
ciBjYWxscyBhcmUgaWdub3JlZC4gVGhpcyBpcyB0aGUKK2Vhc2llc3Qgd2F5IHRvIG1ha2UgOmNs
YXNzOmB+d2Vic29ja2V0cy5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyLmNsb3NlYCBhbmQKKzpjbGFz
czpgfndlYnNvY2tldHMuc2VydmVyLldlYlNvY2tldFNlcnZlci53YWl0X2Nsb3NlZGAgaWRlbXBv
dGVudC4KKworCisuLiBfY2FuY2VsbGF0aW9uOgorCitDYW5jZWxsYXRpb24KKy0tLS0tLS0tLS0t
LQorCitVc2VyIGNvZGUKKy4uLi4uLi4uLgorCitgYHdlYnNvY2tldHNgYCBwcm92aWRlcyBhIFdl
YlNvY2tldCBhcHBsaWNhdGlvbiBzZXJ2ZXIuIEl0IG1hbmFnZXMgY29ubmVjdGlvbnMKK2FuZCBw
YXNzZXMgdGhlbSB0byB1c2VyLXByb3ZpZGVkIGNvbm5lY3Rpb24gaGFuZGxlcnMuIFRoaXMgaXMg
YW4gKmludmVyc2lvbiBvZgorY29udHJvbCogc2NlbmFyaW86IGxpYnJhcnkgY29kZSBjYWxscyB1
c2VyIGNvZGUuCisKK0lmIGEgY29ubmVjdGlvbiBkcm9wcywgdGhlIGNvcnJlc3BvbmRpbmcgaGFu
ZGxlciBzaG91bGQgdGVybWluYXRlLiBJZiB0aGUKK3NlcnZlciBzaHV0cyBkb3duLCBhbGwgY29u
bmVjdGlvbiBoYW5kbGVycyBtdXN0IHRlcm1pbmF0ZS4gQ2FuY2VsaW5nCitjb25uZWN0aW9uIGhh
bmRsZXJzIHdvdWxkIHRlcm1pbmF0ZSB0aGVtLgorCitIb3dldmVyLCB1c2luZyBjYW5jZWxsYXRp
b24gZm9yIHRoaXMgcHVycG9zZSB3b3VsZCByZXF1aXJlIGFsbCBjb25uZWN0aW9uCitoYW5kbGVy
cyB0byBoYW5kbGUgaXQgcHJvcGVybHkuIEZvciBleGFtcGxlLCBpZiBhIGNvbm5lY3Rpb24gaGFu
ZGxlciBzdGFydHMKK3NvbWUgdGFza3MsIGl0IHNob3VsZCBjYXRjaCA6ZXhjOmB+YXN5bmNpby5D
YW5jZWxsZWRFcnJvcmAsIHRlcm1pbmF0ZSBvcgorY2FuY2VsIHRoZXNlIHRhc2tzLCBhbmQgdGhl
biByZS1yYWlzZSB0aGUgZXhjZXB0aW9uLgorCitDYW5jZWxsYXRpb24gaXMgdHJpY2t5IGluIDpt
b2Q6YGFzeW5jaW9gIGFwcGxpY2F0aW9ucywgZXNwZWNpYWxseSB3aGVuIGl0CitpbnRlcmFjdHMg
d2l0aCBmaW5hbGl6YXRpb24gbG9naWMuIEluIHRoZSBleGFtcGxlIGFib3ZlLCB3aGF0IGlmIGEg
aGFuZGxlcgorZ2V0cyBpbnRlcnJ1cHRlZCB3aXRoIDpleGM6YH5hc3luY2lvLkNhbmNlbGxlZEVy
cm9yYCB3aGlsZSBpdCdzIGZpbmFsaXppbmcKK3RoZSB0YXNrcyBpdCBzdGFydGVkLCBhZnRlciBk
ZXRlY3RpbmcgdGhhdCB0aGUgY29ubmVjdGlvbiBkcm9wcGVkPworCitgYHdlYnNvY2tldHNgYCBj
b25zaWRlcnMgdGhhdCBjYW5jZWxsYXRpb24gbWF5IG9ubHkgYmUgdHJpZ2dlcmVkIGJ5IHRoZSBj
YWxsZXIKK29mIGEgY29yb3V0aW5lIHdoZW4gaXQgZG9lc24ndCBjYXJlIGFib3V0IHRoZSByZXN1
bHRzIG9mIHRoYXQgY29yb3V0aW5lCithbnltb3JlLiAoU291cmNlOiBgR3VpZG8gdmFuIFJvc3N1
bSA8aHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIW1zZworL3B5dGhvbi10dWxpcC9M
WlFlMzhDUjNiZy83cVoxcF9xNXl5Y0o+YF8pLiBTaW5jZSBjb25uZWN0aW9uIGhhbmRsZXJzIHJ1
bgorYXJiaXRyYXJ5IHVzZXIgY29kZSwgYGB3ZWJzb2NrZXRzYGAgaGFzIG5vIHdheSBvZiBkZWNp
ZGluZyB3aGV0aGVyIHRoYXQgY29kZQoraXMgc3RpbGwgZG9pbmcgc29tZXRoaW5nIHdvcnRoIGNh
cmluZyBhYm91dC4KKworRm9yIHRoZXNlIHJlYXNvbnMsIGBgd2Vic29ja2V0c2BgIG5ldmVyIGNh
bmNlbHMgY29ubmVjdGlvbiBoYW5kbGVycy4gSW5zdGVhZAoraXQgZXhwZWN0cyB0aGVtIHRvIGRl
dGVjdCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwgZXhlY3V0ZSBmaW5hbGl6YXRpb24K
K2xvZ2ljIGlmIG5lZWRlZCwgYW5kIGV4aXQuCisKK0NvbnZlcnNlbHksIGNhbmNlbGxhdGlvbiBp
c24ndCBhIGNvbmNlcm4gZm9yIFdlYlNvY2tldCBjbGllbnRzIGJlY2F1c2UgdGhleQorZG9uJ3Qg
aW52b2x2ZSBpbnZlcnNpb24gb2YgY29udHJvbC4KKworTGlicmFyeQorLi4uLi4uLgorCitNb3N0
IDpkb2M6YHB1YmxpYyBBUElzIDxhcGk+YCBvZiBgYHdlYnNvY2tldHNgYCBhcmUgY29yb3V0aW5l
cy4gVGhleSBtYXkgYmUKK2NhbmNlbGVkLCBmb3IgZXhhbXBsZSBpZiB0aGUgdXNlciBzdGFydHMg
YSB0YXNrIHRoYXQgY2FsbHMgdGhlc2UgY29yb3V0aW5lcworYW5kIGNhbmNlbHMgdGhlIHRhc2sg
bGF0ZXIuIGBgd2Vic29ja2V0c2BgIG11c3QgaGFuZGxlIHRoaXMgc2l0dWF0aW9uLgorCitDYW5j
ZWxsYXRpb24gZHVyaW5nIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBpcyBoYW5kbGVkIGxpa2UgYW55
IG90aGVyIGV4Y2VwdGlvbjoKK3RoZSBUQ1AgY29ubmVjdGlvbiBpcyBjbG9zZWQgYW5kIHRoZSBl
eGNlcHRpb24gaXMgcmUtcmFpc2VkLiBUaGlzIGNhbiBvbmx5CitoYXBwZW4gb24gdGhlIGNsaWVu
dCBzaWRlLiBPbiB0aGUgc2VydmVyIHNpZGUsIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBpcworbWFu
YWdlZCBieSBgYHdlYnNvY2tldHNgYCBhbmQgbm90aGluZyByZXN1bHRzIGluIGEgY2FuY2VsbGF0
aW9uLgorCitPbmNlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgaW50
ZXJuYWwgdGFza3MKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJh
bnNmZXJfZGF0YV90YXNrYCBhbmQKKzphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJv
dG9jb2wuY2xvc2VfY29ubmVjdGlvbl90YXNrYCBtdXN0bid0IGdldAorYWNjaWRlbnRhbGx5IGNh
bmNlbGVkIGlmIGEgY29yb3V0aW5lIHRoYXQgYXdhaXRzIHRoZW0gaXMgY2FuY2VsZWQuIEluIG90
aGVyCit3b3JkcywgdGhleSBtdXN0IGJlIHNoaWVsZGVkIGZyb20gY2FuY2VsbGF0aW9uLgorCis6
bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnJlY3ZgIHdhaXRzIGZvciB0
aGUgbmV4dCBtZXNzYWdlIGluCit0aGUgcXVldWUgb3IgZm9yIDphdHRyOmB+cHJvdG9jb2wuV2Vi
U29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYAordG8gdGVybWluYXRlLCB3
aGljaGV2ZXIgY29tZXMgZmlyc3QuIEl0IHJlbGllcyBvbiA6ZnVuYzpgfmFzeW5jaW8ud2FpdGAg
Zm9yCit3YWl0aW5nIG9uIHR3byBmdXR1cmVzIGluIHBhcmFsbGVsLiBBcyBhIGNvbnNlcXVlbmNl
LCBldmVuIHRob3VnaCBpdCdzIHdhaXRpbmcKK29uIGEgOmNsYXNzOmB+YXN5bmNpby5GdXR1cmVg
IHNpZ25hbGluZyB0aGUgbmV4dCBtZXNzYWdlIGFuZCBvbgorOmF0dHI6YH5wcm90b2NvbC5XZWJT
b2NrZXRDb21tb25Qcm90b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgLCBpdCBkb2Vzbid0Citwcm9w
YWdhdGUgY2FuY2VsbGF0aW9uIHRvIHRoZW0uCisKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0
Q29tbW9uUHJvdG9jb2wuZW5zdXJlX29wZW5gIGlzIGNhbGxlZCBieQorOm1ldGg6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCwKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29j
a2V0Q29tbW9uUHJvdG9jb2wucGluZ2AsIGFuZAorOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRD
b21tb25Qcm90b2NvbC5wb25nYC4gV2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSBpcworYGBDTE9T
SU5HYGAsIGl0IHdhaXRzIGZvcgorOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90
b2NvbC50cmFuc2Zlcl9kYXRhX3Rhc2tgIGJ1dCBzaGllbGRzIGl0IHRvCitwcmV2ZW50IGNhbmNl
bGxhdGlvbi4KKworOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9z
ZWAgd2FpdHMgZm9yIHRoZSBkYXRhIHRyYW5zZmVyCit0YXNrIHRvIHRlcm1pbmF0ZSB3aXRoIDpm
dW5jOmB+YXN5bmNpby53YWl0X2ZvcmAuIElmIGl0J3MgY2FuY2VsZWQgb3IgaWYgdGhlCit0aW1l
b3V0IGVsYXBzZXMsIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJh
bnNmZXJfZGF0YV90YXNrYAoraXMgY2FuY2VsZWQsIHdoaWNoIGlzIGNvcnJlY3QgYXQgdGhpcyBw
b2ludC4KKzptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xvc2VgIHRo
ZW4gd2FpdHMgZm9yCis6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNs
b3NlX2Nvbm5lY3Rpb25fdGFza2AgYnV0IHNoaWVsZHMgaXQKK3RvIHByZXZlbnQgY2FuY2VsbGF0
aW9uLgorCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLmNsb3NlYCBh
bmQKKzpmdW5jOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuZmFpbF9jb25uZWN0
aW9uYCBhcmUgdGhlIG9ubHkKK3BsYWNlcyB3aGVyZSA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tl
dENvbW1vblByb3RvY29sLnRyYW5zZmVyX2RhdGFfdGFza2AgbWF5CitiZSBjYW5jZWxlZC4KKwor
OmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5jbG9zZV9jb25ubmVjdGlv
bl90YXNrYCBzdGFydHMgYnkKK3dhaXRpbmcgZm9yIDphdHRyOmB+cHJvdG9jb2wuV2ViU29ja2V0
Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYC4gSXQKK2NhdGNoZXMgOmV4YzpgfmFz
eW5jaW8uQ2FuY2VsbGVkRXJyb3JgIHRvIHByZXZlbnQgYSBjYW5jZWxsYXRpb24gb2YKKzphdHRy
OmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wudHJhbnNmZXJfZGF0YV90YXNrYCBm
cm9tIHByb3BhZ2F0aW5nCit0byA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3Rv
Y29sLmNsb3NlX2Nvbm5uZWN0aW9uX3Rhc2tgLgorCisuLiBfYmFja3ByZXNzdXJlOgorCitCYWNr
cHJlc3N1cmUKKy0tLS0tLS0tLS0tLQorCisuLiBub3RlOjoKKworICAgIFRoaXMgc2VjdGlvbiBk
aXNjdXNzZXMgYmFja3ByZXNzdXJlIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGEgc2VydmVyIGJ1
dAorICAgIHRoZSBjb25jZXB0IGFwcGxpZXMgdG8gY2xpZW50cyBzeW1tZXRyaWNhbGx5LgorCitX
aXRoIGEgbmFpdmUgaW1wbGVtZW50YXRpb24sIGlmIGEgc2VydmVyIHJlY2VpdmVzIGlucHV0cyBm
YXN0ZXIgdGhhbiBpdCBjYW4KK3Byb2Nlc3MgdGhlbSwgb3IgaWYgaXQgZ2VuZXJhdGVzIG91dHB1
dHMgZmFzdGVyIHRoYW4gaXQgY2FuIHNlbmQgdGhlbSwgZGF0YQorYWNjdW11bGF0ZXMgaW4gYnVm
ZmVycywgZXZlbnR1YWxseSBjYXVzaW5nIHRoZSBzZXJ2ZXIgdG8gcnVuIG91dCBvZiBtZW1vcnkg
YW5kCitjcmFzaC4KKworVGhlIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbSBpcyBiYWNrcHJlc3N1
cmUuIEFueSBwYXJ0IG9mIHRoZSBzZXJ2ZXIgdGhhdAorcmVjZWl2ZXMgaW5wdXRzIGZhc3RlciB0
aGFuIGl0IGNhbiBwcm9jZXNzIHRoZW0gYW5kIHNlbmQgdGhlIG91dHB1dHMKK211c3QgcHJvcGFn
YXRlIHRoYXQgaW5mb3JtYXRpb24gYmFjayB0byB0aGUgcHJldmlvdXMgcGFydCBpbiB0aGUgY2hh
aW4uCisKK2Bgd2Vic29ja2V0c2BgIGlzIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSB0byBnZXQg
YmFja3ByZXNzdXJlIHJpZ2h0LgorCitGb3IgaW5jb21pbmcgZGF0YSwgYGB3ZWJzb2NrZXRzYGAg
YnVpbGRzIHVwb24gOmNsYXNzOmB+YXN5bmNpby5TdHJlYW1SZWFkZXJgCit3aGljaCBwcm9wYWdh
dGVzIGJhY2twcmVzc3VyZSB0byBpdHMgb3duIGJ1ZmZlciBhbmQgdG8gdGhlIFRDUCBzdHJlYW0u
IEZyYW1lcworYXJlIHBhcnNlZCBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gYW5kIGFkZGVkIHRvIGEg
Ym91bmRlZCBxdWV1ZS4gSWYgdGhlIHF1ZXVlCitmaWxscyB1cCwgcGFyc2luZyBoYWx0cyB1bnRp
bCB0aGUgYXBwbGljYXRpb24gcmVhZHMgYSBmcmFtZS4KKworRm9yIG91dGdvaW5nIGRhdGEsIGBg
d2Vic29ja2V0c2BgIGJ1aWxkcyB1cG9uIDpjbGFzczpgfmFzeW5jaW8uU3RyZWFtV3JpdGVyYAor
d2hpY2ggaW1wbGVtZW50cyBmbG93IGNvbnRyb2wuIElmIHRoZSBvdXRwdXQgYnVmZmVycyBncm93
IHRvbyBsYXJnZSwgaXQgd2FpdHMKK3VudGlsIHRoZXkncmUgZHJhaW5lZC4gVGhhdCdzIHdoeSBh
bGwgQVBJcyB0aGF0IHdyaXRlIGZyYW1lcyBhcmUgYXN5bmNocm9ub3VzLgorCitPZiBjb3Vyc2Us
IGl0J3Mgc3RpbGwgcG9zc2libGUgZm9yIGFuIGFwcGxpY2F0aW9uIHRvIGNyZWF0ZSBpdHMgb3du
IHVuYm91bmRlZAorYnVmZmVycyBhbmQgYnJlYWsgdGhlIGJhY2twcmVzc3VyZS4gQmUgY2FyZWZ1
bCB3aXRoIHF1ZXVlcy4KKworCisuLiBfYnVmZmVyczoKKworQnVmZmVycworLS0tLS0tLQorCisu
LiBub3RlOjoKKworICAgIFRoaXMgc2VjdGlvbiBkaXNjdXNzZXMgYnVmZmVycyBmcm9tIHRoZSBw
ZXJzcGVjdGl2ZSBvZiBhIHNlcnZlciBidXQgaXQKKyAgICBhcHBsaWVzIHRvIGNsaWVudHMgYXMg
d2VsbC4KKworQW4gYXN5bmNocm9ub3VzIHN5c3RlbXMgd29ya3MgYmVzdCB3aGVuIGl0cyBidWZm
ZXJzIGFyZSBhbG1vc3QgYWx3YXlzIGVtcHR5LgorCitGb3IgZXhhbXBsZSwgaWYgYSBjbGllbnQg
c2VuZHMgZGF0YSB0b28gZmFzdCBmb3IgYSBzZXJ2ZXIsIHRoZSBxdWV1ZSBvZgoraW5jb21pbmcg
bWVzc2FnZXMgd2lsbCBiZSBjb25zdGFudGx5IGZ1bGwuIFRoZSBzZXJ2ZXIgd2lsbCBhbHdheXMg
YmUgMzIKK21lc3NhZ2VzIChieSBkZWZhdWx0KSBiZWhpbmQgdGhlIGNsaWVudC4gVGhpcyBjb25z
dW1lcyBtZW1vcnkgYW5kIGluY3JlYXNlcworbGF0ZW5jeSBmb3Igbm8gZ29vZCByZWFzb24uIFRo
ZSBwcm9ibGVtIGlzIGNhbGxlZCBidWZmZXJibG9hdC4KKworSWYgYnVmZmVycyBhcmUgYWxtb3N0
IGFsd2F5cyBmdWxsIGFuZCB0aGF0IHByb2JsZW0gY2Fubm90IGJlIHNvbHZlZCBieSBhZGRpbmcK
K2NhcGFjaXR5IOKAlCB0eXBpY2FsbHkgYmVjYXVzZSB0aGUgc3lzdGVtIGlzIGJvdHRsZW5lY2tl
ZCBieSB0aGUgb3V0cHV0IGFuZAorY29uc3RhbnRseSByZWd1bGF0ZWQgYnkgYmFja3ByZXNzdXJl
IOKAlCByZWR1Y2luZyB0aGUgc2l6ZSBvZiBidWZmZXJzIG1pbmltaXplcworbmVnYXRpdmUgY29u
c2VxdWVuY2VzLgorCitCeSBkZWZhdWx0IGBgd2Vic29ja2V0c2BgIGhhcyByYXRoZXIgaGlnaCBs
aW1pdHMuIFlvdSBjYW4gZGVjcmVhc2UgdGhlbQorYWNjb3JkaW5nIHRvIHlvdXIgYXBwbGljYXRp
b24ncyBjaGFyYWN0ZXJpc3RpY3MuCisKK0J1ZmZlcmJsb2F0IGNhbiBoYXBwZW4gYXQgZXZlcnkg
bGV2ZWwgaW4gdGhlIHN0YWNrIHdoZXJlIHRoZXJlIGlzIGEgYnVmZmVyLgorRm9yIGVhY2ggY29u
bmVjdGlvbiwgdGhlIHJlY2VpdmluZyBzaWRlIGNvbnRhaW5zIHRoZXNlIGJ1ZmZlcnM6CisKKy0g
T1MgYnVmZmVyczogdHVuaW5nIHRoZW0gaXMgYW4gYWR2YW5jZWQgb3B0aW1pemF0aW9uLgorLSA6
Y2xhc3M6YH5hc3luY2lvLlN0cmVhbVJlYWRlcmAgYnl0ZXMgYnVmZmVyOiB0aGUgZGVmYXVsdCBs
aW1pdCBpcyA2NMKgS2lCLgorICBZb3UgY2FuIHNldCBhbm90aGVyIGxpbWl0IGJ5IHBhc3Npbmcg
YSBgYHJlYWRfbGltaXRgYCBrZXl3b3JkIGFyZ3VtZW50IHRvCisgIDpmdW5jOmB+Y2xpZW50LmNv
bm5lY3QoKWAgb3IgOmZ1bmM6YH5zZXJ2ZXIuc2VydmVgLgorLSBJbmNvbWluZyBtZXNzYWdlcyA6
Y2xhc3M6YH5jb2xsZWN0aW9ucy5kZXF1ZWA6IGl0cyBzaXplIGRlcGVuZHMgYm90aCBvbgorICB0
aGUgc2l6ZSBhbmQgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBpdCBjb250YWlucy4gQnkgZGVmYXVs
dCB0aGUgbWF4aW11bQorICBVVEYtOCBlbmNvZGVkIHNpemUgaXMgMcKgTWlCIGFuZCB0aGUgbWF4
aW11bSBudW1iZXIgaXMgMzIuIEluIHRoZSB3b3JzdCBjYXNlLAorICBhZnRlciBVVEYtOCBkZWNv
ZGluZywgYSBzaW5nbGUgbWVzc2FnZSBjb3VsZCB0YWtlIHVwIHRvIDTCoE1pQiBvZiBtZW1vcnkg
YW5kCisgIHRoZSBvdmVyYWxsIG1lbW9yeSBjb25zdW1wdGlvbiBjb3VsZCByZWFjaCAxMjjCoE1p
Qi4gWW91IHNob3VsZCBhZGp1c3QgdGhlc2UKKyAgbGltaXRzIGJ5IHNldHRpbmcgdGhlIGBgbWF4
X3NpemVgYCBhbmQgYGBtYXhfcXVldWVgYCBrZXl3b3JkIGFyZ3VtZW50cyBvZgorICA6ZnVuYzpg
fmNsaWVudC5jb25uZWN0KClgIG9yIDpmdW5jOmB+c2VydmVyLnNlcnZlYCBhY2NvcmRpbmcgdG8g
eW91cgorICBhcHBsaWNhdGlvbidzIHJlcXVpcmVtZW50cy4KKworRm9yIGVhY2ggY29ubmVjdGlv
biwgdGhlIHNlbmRpbmcgc2lkZSBjb250YWlucyB0aGVzZSBidWZmZXJzOgorCistIDpjbGFzczpg
fmFzeW5jaW8uU3RyZWFtV3JpdGVyYCBieXRlcyBidWZmZXI6IHRoZSBkZWZhdWx0IHNpemUgaXMg
NjTCoEtpQi4KKyAgWW91IGNhbiBzZXQgYW5vdGhlciBsaW1pdCBieSBwYXNzaW5nIGEgYGB3cml0
ZV9saW1pdGBgIGtleXdvcmQgYXJndW1lbnQgdG8KKyAgOmZ1bmM6YH5jbGllbnQuY29ubmVjdCgp
YCBvciA6ZnVuYzpgfnNlcnZlci5zZXJ2ZWAuCistIE9TIGJ1ZmZlcnM6IHR1bmluZyB0aGVtIGlz
IGFuIGFkdmFuY2VkIG9wdGltaXphdGlvbi4KKworQ29uY3VycmVuY3kKKy0tLS0tLS0tLS0tCisK
K0F3YWl0aW5nIGFueSBjb21iaW5hdGlvbiBvZiA6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENv
bW1vblByb3RvY29sLnJlY3ZgLAorOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90
b2NvbC5zZW5kYCwKKzptZXRoOmB+cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wuY2xv
c2VgCis6bWV0aDpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnBpbmdgLCBvcgor
Om1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5wb25nYCBjb25jdXJyZW50
bHkgaXMgc2FmZSwgaW5jbHVkaW5nCittdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBtZXRob2Qs
IHdpdGggb25lIGV4Y2VwdGlvbiBhbmQgb25lIGxpbWl0YXRpb24uCisKKyogKipPbmx5IG9uZSBj
b3JvdXRpbmUgY2FuIHJlY2VpdmUgbWVzc2FnZXMgYXQgYSB0aW1lLioqIFRoaXMgY29uc3RyYWlu
dAorICBhdm9pZHMgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IgKGFuZCBzaW1wbGlmaWVzIHRo
ZSBpbXBsZW1lbnRhdGlvbikuIElmIGEKKyAgY29yb3V0aW5lIGlzIGF3YWl0aW5nIDptZXRoOmB+
cHJvdG9jb2wuV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wucmVjdmAsCisgIGF3YWl0aW5nIGl0IGFn
YWluIGluIGFub3RoZXIgY29yb3V0aW5lIHJhaXNlcyA6ZXhjOmBSdW50aW1lRXJyb3JgLgorCisq
ICoqU2VuZGluZyBhIGZyYWdtZW50ZWQgbWVzc2FnZSBmb3JjZXMgc2VyaWFsaXphdGlvbi4qKiBJ
bmRlZWQsIHRoZSBXZWJTb2NrZXQKKyAgcHJvdG9jb2wgZG9lc24ndCBzdXBwb3J0IG11bHRpcGxl
eGluZyBtZXNzYWdlcy4gSWYgYSBjb3JvdXRpbmUgaXMgYXdhaXRpbmcKKyAgOm1ldGg6YH5wcm90
b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCB0byBzZW5kIGEgZnJhZ21lbnRlZCBt
ZXNzYWdlLAorICBhd2FpdGluZyBpdCBhZ2FpbiBpbiBhbm90aGVyIGNvcm91dGluZSB3YWl0cyB1
bnRpbCB0aGUgZmlyc3QgY2FsbCBjb21wbGV0ZXMuCisgIFRoaXMgd2lsbCBiZSB0cmFuc3BhcmVu
dCBpbiBtYW55IGNhc2VzLiBJdCBtYXkgYmUgYSBjb25jZXJuIGlmIHRoZQorICBmcmFnbWVudGVk
IG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIHNsb3dseSBieSBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3Iu
CisKK1JlY2VpdmluZyBmcmFtZXMgaXMgaW5kZXBlbmRlbnQgZnJvbSBzZW5kaW5nIGZyYW1lcy4g
VGhpcyBpc29sYXRlcworOm1ldGg6YH5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5y
ZWN2YCwgd2hpY2ggcmVjZWl2ZXMgZnJhbWVzLCBmcm9tCit0aGUgb3RoZXIgbWV0aG9kcywgd2hp
Y2ggc2VuZCBmcmFtZXMuCisKK1doaWxlIHRoZSBjb25uZWN0aW9uIGlzIG9wZW4sIGVhY2ggZnJh
bWUgaXMgc2VudCB3aXRoIGEgc2luZ2xlIHdyaXRlLiBDb21iaW5lZAord2l0aCB0aGUgY29uY3Vy
cmVuY3kgbW9kZWwgb2YgOm1vZDpgYXN5bmNpb2AsIHRoaXMgZW5mb3JjZXMgc2VyaWFsaXphdGlv
bi4gVGhlCitvbmx5IG90aGVyIHJlcXVpcmVtZW50IGlzIHRvIHByZXZlbnQgaW50ZXJsZWF2aW5n
IG90aGVyIGRhdGEgZnJhbWVzIGluIHRoZQorbWlkZGxlIG9mIGEgZnJhZ21lbnRlZCBtZXNzYWdl
LgorCitBZnRlciB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQsIHNlbmRpbmcgYSBmcmFtZSByYWlz
ZXMKKzpleGM6YH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAsIHdoaWNo
IGlzIHNhZmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9leHRlbnNpb25zLnJz
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2V4dGVuc2lvbnMucnN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDAwMDM0MDkwNmFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL2RvY3MvZXh0ZW5zaW9ucy5yc3QKQEAgLTAsMCArMSw4NyBAQAorRXh0
ZW5zaW9ucworPT09PT09PT09PQorCisuLiBjdXJyZW50bW9kdWxlOjogd2Vic29ja2V0cworCitU
aGUgV2ViU29ja2V0IHByb3RvY29sIHN1cHBvcnRzIGV4dGVuc2lvbnNfLgorCitBdCB0aGUgdGlt
ZSBvZiB3cml0aW5nLCB0aGVyZSdzIG9ubHkgb25lIGByZWdpc3RlcmVkIGV4dGVuc2lvbmBfLCBX
ZWJTb2NrZXQKK1Blci1NZXNzYWdlIERlZmxhdGUsIHNwZWNpZmllZCBpbiA6cmZjOmA3NjkyYC4K
KworLi4gX2V4dGVuc2lvbnM6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1I3Nl
Y3Rpb24tOQorLi4gX3JlZ2lzdGVyZWQgZXh0ZW5zaW9uOiBodHRwczovL3d3dy5pYW5hLm9yZy9h
c3NpZ25tZW50cy93ZWJzb2NrZXQvd2Vic29ja2V0LnhodG1sI2V4dGVuc2lvbi1uYW1lCisKK1Bl
ci1NZXNzYWdlIERlZmxhdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmZ1bmM6YH5zZXJ2ZXIu
c2VydmUoKWAgYW5kIDpmdW5jOmB+Y2xpZW50LmNvbm5lY3RgIGVuYWJsZSB0aGUgUGVyLU1lc3Nh
Z2UKK0RlZmxhdGUgZXh0ZW5zaW9uIGJ5IGRlZmF1bHQuIFlvdSBjYW4gZGlzYWJsZSB0aGlzIHdp
dGggYGBjb21wcmVzc2lvbj1Ob25lYGAuCisKK1lvdSBjYW4gYWxzbyBjb25maWd1cmUgdGhlIFBl
ci1NZXNzYWdlIERlZmxhdGUgZXh0ZW5zaW9uIGV4cGxpY2l0bHkgaWYgeW91Cit3YW50IHRvIGN1
c3RvbWl6ZSBpdHMgcGFyYW1ldGVycy4KKworLi4gX3Blci1tZXNzYWdlLWRlZmxhdGUtY29uZmln
dXJhdGlvbi1leGFtcGxlOgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvbiB0aGUgc2VydmVyIHNpZGU6
OgorCisgICAgaW1wb3J0IHdlYnNvY2tldHMKKyAgICBmcm9tIHdlYnNvY2tldHMuZXh0ZW5zaW9u
cyBpbXBvcnQgcGVybWVzc2FnZV9kZWZsYXRlCisKKyAgICB3ZWJzb2NrZXRzLnNlcnZlKAorICAg
ICAgICAuLi4sCisgICAgICAgIGV4dGVuc2lvbnM9WworICAgICAgICAgICAgcGVybWVzc2FnZV9k
ZWZsYXRlLlNlcnZlclBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgKKyAgICAgICAgICAgICAgICBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTExLAorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2lu
ZG93X2JpdHM9MTEsCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2V0dGluZ3M9eydtZW1MZXZl
bCc6IDR9LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXSwKKyAgICApCisKK0hlcmUncyBhbiBl
eGFtcGxlIG9uIHRoZSBjbGllbnQgc2lkZTo6CisKKyAgICBpbXBvcnQgd2Vic29ja2V0cworICAg
IGZyb20gd2Vic29ja2V0cy5leHRlbnNpb25zIGltcG9ydCBwZXJtZXNzYWdlX2RlZmxhdGUKKwor
ICAgIHdlYnNvY2tldHMuY29ubmVjdCgKKyAgICAgICAgLi4uLAorICAgICAgICBleHRlbnNpb25z
PVsKKyAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZS5DbGllbnRQZXJNZXNzYWdlRGVmbGF0
ZUZhY3RvcnkoCisgICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cz0xMSwKKyAg
ICAgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTExLAorICAgICAgICAgICAgICAg
IGNvbXByZXNzX3NldHRpbmdzPXsnbWVtTGV2ZWwnOiA0fSwKKyAgICAgICAgICAgICksCisgICAg
ICAgIF0sCisgICAgKQorCitSZWZlciB0byB0aGUgQVBJIGRvY3VtZW50YXRpb24gb2YKKzpjbGFz
czpgfmV4dGVuc2lvbnMucGVybWVzc2FnZV9kZWZsYXRlLlNlcnZlclBlck1lc3NhZ2VEZWZsYXRl
RmFjdG9yeWAgYW5kCis6Y2xhc3M6YH5leHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0ZS5DbGll
bnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnlgIGZvcgorZGV0YWlscy4KKworV3JpdGluZyBhbiBl
eHRlbnNpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R1cmluZyB0aGUgb3BlbmluZyBoYW5k
c2hha2UsIFdlYlNvY2tldCBjbGllbnRzIGFuZCBzZXJ2ZXJzIG5lZ290aWF0ZSB3aGljaAorZXh0
ZW5zaW9ucyB3aWxsIGJlIHVzZWQgd2l0aCB3aGljaCBwYXJhbWV0ZXJzLiBUaGVuIGVhY2ggZnJh
bWUgaXMgcHJvY2Vzc2VkIGJ5CitleHRlbnNpb25zIGJlZm9yZSBpdCdzIHNlbnQgYW5kIGFmdGVy
IGl0J3MgcmVjZWl2ZWQuCisKK0FzIGEgY29uc2VxdWVuY2Ugd3JpdGluZyBhbiBleHRlbnNpb24g
cmVxdWlyZXMgaW1wbGVtZW50aW5nIHNldmVyYWwgY2xhc3NlczoKKworMS4gRXh0ZW5zaW9uIEZh
Y3Rvcnk6IGl0IG5lZ290aWF0ZXMgcGFyYW1ldGVycyBhbmQgaW5zdGFudGlhdGVzIHRoZSBleHRl
bnNpb24uCisgICBDbGllbnRzIGFuZCBzZXJ2ZXJzIHJlcXVpcmUgc2VwYXJhdGUgZXh0ZW5zaW9u
IGZhY3RvcmllcyB3aXRoIGRpc3RpbmN0IEFQSXMuCisKKzIuIEV4dGVuc2lvbjogaXQgZGVjb2Rl
cyBpbmNvbWluZyBmcmFtZXMgYW5kIGVuY29kZXMgb3V0Z29pbmcgZnJhbWVzLiBJZiB0aGUKKyAg
IGV4dGVuc2lvbiBpcyBzeW1tZXRyaWNhbCwgY2xpZW50cyBhbmQgc2VydmVycyBjYW4gdXNlIHRo
ZSBzYW1lIGNsYXNzLgorCitgYHdlYnNvY2tldHNgYCBwcm92aWRlcyBhYnN0cmFjdCBiYXNlIGNs
YXNzZXMgZm9yIGV4dGVuc2lvbiBmYWN0b3JpZXMgYW5kCitleHRlbnNpb25zLgorCisuLiBhdXRv
Y2xhc3M6OiB3ZWJzb2NrZXRzLmV4dGVuc2lvbnMuYmFzZS5TZXJ2ZXJFeHRlbnNpb25GYWN0b3J5
CisgICAgOm1lbWJlcnM6CisKKy4uIGF1dG9jbGFzczo6IHdlYnNvY2tldHMuZXh0ZW5zaW9ucy5i
YXNlLkNsaWVudEV4dGVuc2lvbkZhY3RvcnkKKyAgICA6bWVtYmVyczoKKworLi4gYXV0b2NsYXNz
Ojogd2Vic29ja2V0cy5leHRlbnNpb25zLmJhc2UuRXh0ZW5zaW9uCisgICAgOm1lbWJlcnM6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9mYXEucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2RvY3MvZmFxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNl
YTNmNTM1ODM5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2ZhcS5y
c3QKQEAgLTAsMCArMSwyNjEgQEAKK0ZBUQorPT09CisKKy4uIGN1cnJlbnRtb2R1bGU6OiB3ZWJz
b2NrZXRzCisKKy4uIG5vdGU6OgorCisgICAgTWFueSBxdWVzdGlvbnMgYXNrZWQgaW4gOm1vZDpg
d2Vic29ja2V0c2AnIGlzc3VlIHRyYWNrZXIgYXJlIGFjdHVhbGx5CisgICAgYWJvdXQgOm1vZDpg
YXN5bmNpb2AuIFB5dGhvbidzIGRvY3VtZW50YXRpb24gYWJvdXQgYGRldmVsb3Bpbmcgd2l0aAor
ICAgIGFzeW5jaW9gXyBpcyBhIGdvb2QgY29tcGxlbWVudC4KKworICAgIC4uIF9kZXZlbG9waW5n
IHdpdGggYXN5bmNpbzogaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2FzeW5jaW8t
ZGV2Lmh0bWwKKworU2VydmVyIHNpZGUKKy0tLS0tLS0tLS0tCisKK1doeSBkb2VzIHRoZSBzZXJ2
ZXIgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYWZ0ZXIgcHJvY2Vzc2luZyBvbmUgbWVzc2FnZT8KKy4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4KKworWW91ciBjb25uZWN0aW9uIGhhbmRsZXIgZXhpdHMgYWZ0ZXIgcHJvY2Vz
c2luZyBvbmUgbWVzc2FnZS4gV3JpdGUgYSBsb29wIHRvCitwcm9jZXNzIG11bHRpcGxlIG1lc3Nh
Z2VzLgorCitGb3IgZXhhbXBsZSwgaWYgeW91ciBoYW5kbGVyIGxvb2tzIGxpa2UgdGhpczo6CisK
KyAgICBhc3luYyBkZWYgaGFuZGxlcih3ZWJzb2NrZXQsIHBhdGgpOgorICAgICAgICBwcmludCh3
ZWJzb2NrZXQucmVjdigpKQorCitjaGFuZ2UgaXQgbGlrZSB0aGlzOjoKKworICAgIGFzeW5jIGRl
ZiBoYW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIGFzeW5jIGZvciBtZXNzYWdlIGlu
IHdlYnNvY2tldDoKKyAgICAgICAgICAgIHByaW50KG1lc3NhZ2UpCisKKypEb24ndCBmZWVsIGJh
ZCBpZiB0aGlzIGhhcHBlbnMgdG8geW91IOKAlCBpdCdzIHRoZSBtb3N0IGNvbW1vbiBxdWVzdGlv
biBpbgord2Vic29ja2V0cycgaXNzdWUgdHJhY2tlciA6LSkqCisKK1doeSBjYW4gb25seSBvbmUg
Y2xpZW50IGNvbm5lY3QgYXQgYSB0aW1lPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uCisKK1lvdXIgY29ubmVjdGlvbiBoYW5kbGVyIGJsb2NrcyB0aGUgZXZlbnQg
bG9vcC4gTG9vayBmb3IgYmxvY2tpbmcgY2FsbHMuCitBbnkgY2FsbCB0aGF0IG1heSB0YWtlIHNv
bWUgdGltZSBtdXN0IGJlIGFzeW5jaHJvbm91cy4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZl
OjoKKworICAgIGFzeW5jIGRlZiBoYW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIHRp
bWUuc2xlZXAoMSkKKworY2hhbmdlIGl0IHRvOjoKKworICAgIGFzeW5jIGRlZiBoYW5kbGVyKHdl
YnNvY2tldCwgcGF0aCk6CisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMSkKKworVGhpcyBp
cyBwYXJ0IG9mIGxlYXJuaW5nIGFzeW5jaW8uIEl0IGlzbid0IHNwZWNpZmljIHRvIHdlYnNvY2tl
dHMuCisKK1NlZSBhbHNvIFB5dGhvbidzIGRvY3VtZW50YXRpb24gYWJvdXQgYHJ1bm5pbmcgYmxv
Y2tpbmcgY29kZWBfLgorCisuLiBfcnVubmluZyBibG9ja2luZyBjb2RlOiBodHRwczovL2RvY3Mu
cHl0aG9uLm9yZy8zL2xpYnJhcnkvYXN5bmNpby1kZXYuaHRtbCNydW5uaW5nLWJsb2NraW5nLWNv
ZGUKKworSG93IGRvIEkgZ2V0IGFjY2VzcyBIVFRQIGhlYWRlcnMsIGZvciBleGFtcGxlIGNvb2tp
ZXM/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4KKworVG8gYWNjZXNzIEhUVFAgaGVhZGVycyBkdXJpbmcgdGhlIFdlYlNvY2tldCBoYW5kc2hh
a2UsIHlvdSBjYW4gb3ZlcnJpZGUKKzphdHRyOmB+c2VydmVyLldlYlNvY2tldFNlcnZlclByb3Rv
Y29sLnByb2Nlc3NfcmVxdWVzdGA6OgorCisgICAgYXN5bmMgZGVmIHByb2Nlc3NfcmVxdWVzdChz
ZWxmLCBwYXRoLCByZXF1ZXN0X2hlYWRlcnMpOgorICAgICAgICBjb29raWVzID0gcmVxdWVzdF9o
ZWFkZXJbIkNvb2tpZSJdCisKK1NlZQorCitPbmNlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlz
aGVkLCB0aGV5J3JlIGF2YWlsYWJsZSBpbgorOmF0dHI6YH5wcm90b2NvbC5XZWJTb2NrZXRTZXJ2
ZXJQcm90b2NvbC5yZXF1ZXN0X2hlYWRlcnNgOjoKKworICAgIGFzeW5jIGRlZiBoYW5kbGVyKHdl
YnNvY2tldCwgcGF0aCk6CisgICAgICAgIGNvb2tpZXMgPSB3ZWJzb2NrZXQucmVxdWVzdF9oZWFk
ZXJzWyJDb29raWUiXQorCitIb3cgZG8gSSBnZXQgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGNsaWVu
dCBjb25uZWN0aW5nIHRvIG15IHNlcnZlcj8KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitJdCdzIGF2YWlsYWJsZSBp
biA6YXR0cjpgfnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sLnJlbW90ZV9hZGRyZXNz
YDo6CisKKyAgICBhc3luYyBkZWYgaGFuZGxlcih3ZWJzb2NrZXQsIHBhdGgpOgorICAgICAgICBy
ZW1vdGVfaXAgPSB3ZWJzb2NrZXQucmVtb3RlX2FkZHJlc3NbMF0KKworSG93IGRvIEkgc2V0IHdo
aWNoIElQIGFkZHJlc3NlcyBteSBzZXJ2ZXIgbGlzdGVucyB0bz8KKy4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK0xvb2sgYXQgdGhlIGBgaG9z
dGBgIGFyZ3VtZW50IG9mIDptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV9zZXJ2ZXJgLgorCis6
ZnVuYzpgc2VydmVgIGFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzIGFzCis6bWV0aDpgfmFzeW5j
aW8ubG9vcC5jcmVhdGVfc2VydmVyYC4KKworSG93IGRvIEkgY2xvc2UgYSBjb25uZWN0aW9uIHBy
b3Blcmx5PworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCit3ZWJzb2Nr
ZXRzIHRha2VzIGNhcmUgb2YgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3aGVuIHRoZSBoYW5kbGVy
IGV4aXRzLgorCitIb3cgZG8gSSBydW4gYSBIVFRQIHNlcnZlciBhbmQgV2ViU29ja2V0IHNlcnZl
ciBvbiB0aGUgc2FtZSBwb3J0PworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworVGhpcyBpc24ndCBzdXBwb3J0ZWQuCisK
K1Byb3ZpZGluZyBhIEhUVFAgc2VydmVyIGlzIG91dCBvZiBzY29wZSBmb3Igd2Vic29ja2V0cy4g
SXQgb25seSBhaW1zIGF0Citwcm92aWRpbmcgYSBXZWJTb2NrZXQgc2VydmVyLgorCitUaGVyZSdz
IGxpbWl0ZWQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIEhUVFAgcmVzcG9uc2VzIHdpdGggdGhlCis6
YXR0cjpgfnNlcnZlci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5wcm9jZXNzX3JlcXVlc3RgIGhv
b2suCitJZiB5b3UgbmVlZCBtb3JlLCBwaWNrIGEgSFRUUCBzZXJ2ZXIgYW5kIHJ1biBpdCBzZXBh
cmF0ZWx5LgorCitDbGllbnQgc2lkZQorLS0tLS0tLS0tLS0KKworSG93IGRvIEkgY2xvc2UgYSBj
b25uZWN0aW9uIHByb3Blcmx5PworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LgorCitUaGUgZWFzaWVzdCBpcyB0byB1c2UgOmZ1bmM6YGNvbm5lY3RgIGFzIGEgY29udGV4dCBt
YW5hZ2VyOjoKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCguLi4pIGFzIHdlYnNvY2tldDoKKyAg
ICAgICAgLi4uCisKK0hvdyBkbyBJIHJlY29ubmVjdCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGNv
bm5lY3Rpb24gZHJvcHM/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLgorCitTZWUgYGlzc3VlIDQxNGBfLgorCisuLiBfaXNzdWUgNDE0
OiBodHRwczovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMvaXNzdWVzLzQxNAorCitI
b3cgZG8gSSBkaXNhYmxlIFRMUy9TU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uPworLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworTG9vayBhdCB0
aGUgYGBzc2xgYCBhcmd1bWVudCBvZiA6bWV0aDpgfmFzeW5jaW8ubG9vcC5jcmVhdGVfY29ubmVj
dGlvbmAuCisKKzpmdW5jOmBjb25uZWN0YCBhY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcwor
Om1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX2Nvbm5lY3Rpb25gLgorCitCb3RoIHNpZGVzCist
LS0tLS0tLS0tCisKK0hvdyBkbyBJIGRvIHR3byB0aGluZ3MgaW4gcGFyYWxsZWw/IEhvdyBkbyBJ
IGludGVncmF0ZSB3aXRoIGFub3RoZXIgY29yb3V0aW5lPworLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
CisKK1lvdSBtdXN0IHN0YXJ0IHR3byB0YXNrcywgd2hpY2ggdGhlIGV2ZW50IGxvb3Agd2lsbCBy
dW4gY29uY3VycmVudGx5LiBZb3UgY2FuCithY2hpZXZlIHRoaXMgd2l0aCA6ZnVuYzpgYXN5bmNp
by5nYXRoZXJgIG9yIDpmdW5jOmBhc3luY2lvLndhaXRgLgorCitUaGlzIGlzIGFsc28gcGFydCBv
ZiBsZWFybmluZyBhc3luY2lvIGFuZCBub3Qgc3BlY2lmaWMgdG8gd2Vic29ja2V0cy4KKworS2Vl
cCB0cmFjayBvZiB0aGUgdGFza3MgYW5kIG1ha2Ugc3VyZSB0aGV5IHRlcm1pbmF0ZSBvciB5b3Ug
Y2FuY2VsIHRoZW0gd2hlbgordGhlIGNvbm5lY3Rpb24gdGVybWluYXRlcy4KKworSG93IGRvIEkg
Y3JlYXRlIGNoYW5uZWxzIG9yIHRvcGljcz8KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uCisKK3dlYnNvY2tldHMgZG9lc24ndCBoYXZlIGJ1aWx0LWluIHB1Ymxpc2ggLyBzdWJz
Y3JpYmUgZm9yIHRoZXNlIHVzZSBjYXNlcy4KKworRGVwZW5kaW5nIG9uIHRoZSBzY2FsZSBvZiB5
b3VyIHNlcnZpY2UsIGEgc2ltcGxlIGluLW1lbW9yeSBpbXBsZW1lbnRhdGlvbiBtYXkKK2RvIHRo
ZSBqb2Igb3IgeW91IG1heSBuZWVkIGFuIGV4dGVybmFsIHB1Ymxpc2ggLyBzdWJzY3JpYmUgY29t
cG9uZW50LgorCitXaGF0IGRvZXMgYGBDb25uZWN0aW9uQ2xvc2VkRXJyb3I6IGNvZGUgPSAxMDA2
YGAgbWVhbj8KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLgorCitJZiB5b3UncmUgc2VlaW5nIHRoaXMgdHJhY2ViYWNrIGluIHRoZSBsb2dzIG9m
IGEgc2VydmVyOgorCisuLiBjb2RlLWJsb2NrOjogcHl0YgorCisgICAgRXJyb3IgaW4gY29ubmVj
dGlvbiBoYW5kbGVyCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAg
ICAgLi4uCisgICAgYXN5bmNpby5zdHJlYW1zLkluY29tcGxldGVSZWFkRXJyb3I6IDAgYnl0ZXMg
cmVhZCBvbiBhIHRvdGFsIG9mIDIgZXhwZWN0ZWQgYnl0ZXMKKworICAgIFRoZSBhYm92ZSBleGNl
cHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246CisK
KyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICB3
ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZEVycm9yOiBjb2RlID0gMTAwNiAo
Y29ubmVjdGlvbiBjbG9zZWQgYWJub3JtYWxseSBbaW50ZXJuYWxdKSwgbm8gcmVhc29uCisKK29y
IGlmIGEgY2xpZW50IGNyYXNoZXMgd2l0aCB0aGlzIHRyYWNlYmFjazoKKworLi4gY29kZS1ibG9j
azo6IHB5dGIKKworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAg
IC4uLgorICAgIENvbm5lY3Rpb25SZXNldEVycm9yOiBbRXJybm8gNTRdIENvbm5lY3Rpb24gcmVz
ZXQgYnkgcGVlcgorCisgICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVz
ZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKworICAgIFRyYWNlYmFjayAobW9zdCByZWNl
bnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIHdlYnNvY2tldHMuZXhjZXB0aW9ucy5Db25u
ZWN0aW9uQ2xvc2VkRXJyb3I6IGNvZGUgPSAxMDA2IChjb25uZWN0aW9uIGNsb3NlZCBhYm5vcm1h
bGx5IFtpbnRlcm5hbF0pLCBubyByZWFzb24KKworaXQgbWVhbnMgdGhhdCB0aGUgVENQIGNvbm5l
Y3Rpb24gd2FzIGxvc3QuIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBXZWJTb2NrZXQKK2Nvbm5lY3Rp
b24gd2FzIGNsb3NlZCB3aXRob3V0IHJlY2VpdmluZyBhIGNsb3NlIGZyYW1lLCB3aGljaCBpcyBh
Ym5vcm1hbC4KKworWW91IGNhbiBjYXRjaCBhbmQgaGFuZGxlIDpleGM6YH5leGNlcHRpb25zLkNv
bm5lY3Rpb25DbG9zZWRgIHRvIHByZXZlbnQgaXQKK2Zyb20gYmVpbmcgbG9nZ2VkLgorCitUaGVy
ZSBhcmUgc2V2ZXJhbCByZWFzb25zIHdoeSBsb25nLWxpdmVkIGNvbm5lY3Rpb25zIG1heSBiZSBs
b3N0OgorCisqIEVuZC11c2VyIGRldmljZXMgdGVuZCB0byBsb3NlIG5ldHdvcmsgY29ubmVjdGl2
aXR5IG9mdGVuIGFuZCB1bnByZWRpY3RhYmx5CisgIGJlY2F1c2UgdGhleSBjYW4gbW92ZSBvdXQg
b2Ygd2lyZWxlc3MgbmV0d29yayBjb3ZlcmFnZSwgZ2V0IHVucGx1Z2dlZCBmcm9tCisgIGEgd2ly
ZWQgbmV0d29yaywgZW50ZXIgYWlycGxhbmUgbW9kZSwgYmUgcHV0IHRvIHNsZWVwLCBldGMuCisq
IEhUVFAgbG9hZCBiYWxhbmNlcnMgb3IgcHJveGllcyB0aGF0IGFyZW4ndCBjb25maWd1cmVkIGZv
ciBsb25nLWxpdmVkCisgIGNvbm5lY3Rpb25zIG1heSB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgYWZ0
ZXIgYSBzaG9ydCBhbW91bnQgb2YgdGltZSwgdXN1YWxseQorICAzMCBzZWNvbmRzLgorCitJZiB5
b3UncmUgZmFjaW5nIGEgcmVwcm9kdWNpYmxlIGlzc3VlLCA6cmVmOmBlbmFibGUgZGVidWcgbG9n
cyA8ZGVidWdnaW5nPmAgdG8KK3NlZSB3aGVuIGFuZCBob3cgY29ubmVjdGlvbnMgYXJlIGNsb3Nl
ZC4KKworQXJlIHRoZXJlIGBgb25vcGVuYGAsIGBgb25tZXNzYWdlYGAsIGBgb25lcnJvcmBgLCBh
bmQgYGBvbmNsb3NlYGAgY2FsbGJhY2tzPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitObywgdGhl
cmUgYXJlbid0LgorCit3ZWJzb2NrZXRzIHByb3ZpZGVzIGhpZ2gtbGV2ZWwsIGNvcm91dGluZS1i
YXNlZCBBUElzLiBDb21wYXJlZCB0byBjYWxsYmFja3MsCitjb3JvdXRpbmVzIG1ha2UgaXQgZWFz
aWVyIHRvIG1hbmFnZSBjb250cm9sIGZsb3cgaW4gY29uY3VycmVudCBjb2RlLgorCitJZiB5b3Ug
cHJlZmVyIGNhbGxiYWNrLWJhc2VkIEFQSXMsIHlvdSBzaG91bGQgdXNlIGFub3RoZXIgbGlicmFy
eS4KKworQ2FuIEkgdXNlIGBgd2Vic29ja2V0c2BgIHN5bmNocm9ub3VzbHksIHdpdGhvdXQgYGBh
c3luY2BgIC8gYGBhd2FpdGBgPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitZb3UgY2FuIGNvbnZlcnQgZXZl
cnkgYXN5bmNocm9ub3VzIGNhbGwgdG8gYSBzeW5jaHJvbm91cyBjYWxsIGJ5IHdyYXBwaW5nIGl0
CitpbiBgYGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUoLi4uKWBg
LgorCitJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBpbXByYWN0aWNhbCwgeW91IHNob3VsZCB1c2Ug
YW5vdGhlciBsaWJyYXJ5LgorCitNaXNjZWxsYW5lb3VzCistLS0tLS0tLS0tLS0tCisKK0hvdyBk
byBJIHNldCBhIHRpbWVvdXQgb24gYGByZWN2KClgYD8KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4KKworVXNlIDpmdW5jOmB+YXN5bmNpby53YWl0X2ZvcmA6OgorCisgICAg
YXdhaXQgYXN5bmNpby53YWl0X2Zvcih3ZWJzb2NrZXQucmVjdigpLCB0aW1lb3V0PTEwKQorCitU
aGlzIHRlY2huaXF1ZSB3b3JrcyBmb3IgbW9zdCBBUElzLCBleGNlcHQgZm9yIGFzeW5jaHJvbm91
cyBjb250ZXh0IG1hbmFnZXJzLgorU2VlIGBpc3N1ZSA1NzRgXy4KKworLi4gX2lzc3VlIDU3NDog
aHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93ZWJzb2NrZXRzL2lzc3Vlcy81NzQKKworSG93
IGRvIEkga2VlcCBpZGxlIGNvbm5lY3Rpb25zIG9wZW4/CisuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4KKword2Vic29ja2V0cyBzZW5kcyBwaW5ncyBhdCAyMCBzZWNvbmRzIGlu
dGVydmFscyB0byBrZWVwIHRoZSBjb25uZWN0aW9uIG9wZW4uCisKK0luIGNsb3NlcyB0aGUgY29u
bmVjdGlvbiBpZiBpdCBkb2Vzbid0IGdldCBhIHBvbmcgd2l0aGluIDIwIHNlY29uZHMuCisKK1lv
dSBjYW4gYWRqdXN0IHRoaXMgYmVoYXZpb3Igd2l0aCBgYHBpbmdfaW50ZXJ2YWxgYCBhbmQgYGBw
aW5nX3RpbWVvdXRgYC4KKworSG93IGRvIEkgcmVzcG9uZCB0byBwaW5ncz8KKy4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uCisKK3dlYnNvY2tldHMgdGFrZXMgY2FyZSBvZiByZXNwb25kaW5nIHRv
IHBpbmdzIHdpdGggcG9uZ3MuCisKK0lzIHRoZXJlIGEgUHl0aG9uIDIgdmVyc2lvbj8KKy4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworTm8sIHRoZXJlIGlzbid0LgorCit3ZWJzb2NrZXRz
IGJ1aWxkcyB1cG9uIGFzeW5jaW8gd2hpY2ggcmVxdWlyZXMgUHl0aG9uIDMuCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2Rv
Y3MvaW5kZXgucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWIy
Zjg1ZjBhNGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvaW5kZXgu
cnN0CkBAIC0wLDAgKzEsOTkgQEAKK3dlYnNvY2tldHMKKz09PT09PT09PT0KKworfHB5cGktdnwg
fHB5cGktcHl2ZXJzaW9uc3wgfHB5cGktbHwgfHB5cGktd2hlZWx8IHxjaXJjbGVjaXwgfGNvZGVj
b3Z8CisKKy4uIHxweXBpLXZ8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yv
d2Vic29ja2V0cy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBp
L3dlYnNvY2tldHMKKworLi4gfHB5cGktcHl2ZXJzaW9uc3wgaW1hZ2U6OiBodHRwczovL2ltZy5z
aGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy93ZWJzb2NrZXRzLnN2ZworICAgIDp0YXJnZXQ6IGh0
dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvd2Vic29ja2V0cworCisuLiB8cHlwaS1sfCBpbWFn
ZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL3dlYnNvY2tldHMuc3ZnCisgICAgOnRh
cmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS93ZWJzb2NrZXRzCisKKy4uIHxweXBp
LXdoZWVsfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS93aGVlbC93ZWJzb2Nr
ZXRzLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvd2Vic29j
a2V0cworCisuLiB8Y2lyY2xlY2l8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jaXJj
bGVjaS9wcm9qZWN0L2dpdGh1Yi9hYXVndXN0aW4vd2Vic29ja2V0cy5zdmcKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL2FhdWd1c3Rpbi93ZWJzb2NrZXRzCisKKy4uIHxjb2Rl
Y292fCBpbWFnZTo6IGh0dHBzOi8vY29kZWNvdi5pby9naC9hYXVndXN0aW4vd2Vic29ja2V0cy9i
cmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNv
di5pby9naC9hYXVndXN0aW4vd2Vic29ja2V0cworCitgYHdlYnNvY2tldHNgYCBpcyBhIGxpYnJh
cnkgZm9yIGJ1aWxkaW5nIFdlYlNvY2tldCBzZXJ2ZXJzXyBhbmQgY2xpZW50c18gaW4KK1B5dGhv
biB3aXRoIGEgZm9jdXMgb24gY29ycmVjdG5lc3MgYW5kIHNpbXBsaWNpdHkuCisKKy4uIF9zZXJ2
ZXJzOiBodHRwczovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMvYmxvYi9tYXN0ZXIv
ZXhhbXBsZS9zZXJ2ZXIucHkKKy4uIF9jbGllbnRzOiBodHRwczovL2dpdGh1Yi5jb20vYWF1Z3Vz
dGluL3dlYnNvY2tldHMvYmxvYi9tYXN0ZXIvZXhhbXBsZS9jbGllbnQucHkKKworQnVpbHQgb24g
dG9wIG9mIDptb2Q6YGFzeW5jaW9gLCBQeXRob24ncyBzdGFuZGFyZCBhc3luY2hyb25vdXMgSS9P
IGZyYW1ld29yaywKK2l0IHByb3ZpZGVzIGFuIGVsZWdhbnQgY29yb3V0aW5lLWJhc2VkIEFQSS4K
KworSGVyZSdzIGhvdyBhIGNsaWVudCBzZW5kcyBhbmQgcmVjZWl2ZXMgbWVzc2FnZXM6CisKKy4u
IGxpdGVyYWxpbmNsdWRlOjogLi4vZXhhbXBsZS9oZWxsby5weQorCitBbmQgaGVyZSdzIGFuIGVj
aG8gc2VydmVyOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2V4YW1wbGUvZWNoby5weQorCitE
byB5b3UgbGlrZSBpdD8gTGV0J3MgZGl2ZSBpbiEKKworVHV0b3JpYWxzCistLS0tLS0tLS0KKwor
SWYgeW91J3JlIG5ldyB0byBgYHdlYnNvY2tldHNgYCwgdGhpcyBpcyB0aGUgcGxhY2UgdG8gc3Rh
cnQuCisKKy4uIHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGludHJvCisgICBmYXEK
KworSG93LXRvIGd1aWRlcworLS0tLS0tLS0tLS0tLQorCitUaGVzZSBndWlkZXMgd2lsbCBoZWxw
IHlvdSBidWlsZCBhbmQgZGVwbG95IGEgYGB3ZWJzb2NrZXRzYGAgYXBwbGljYXRpb24uCisKKy4u
IHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGNoZWF0c2hlZXQKKyAgIGRlcGxveW1l
bnQKKyAgIGV4dGVuc2lvbnMKKworUmVmZXJlbmNlCistLS0tLS0tLS0KKworRmluZCBhbGwgdGhl
IGRldGFpbHMgeW91IGNvdWxkIGFzayBmb3IsIGFuZCB0aGVuIHNvbWUuCisKKy4uIHRvY3RyZWU6
OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGFwaQorCitEaXNjdXNzaW9ucworLS0tLS0tLS0tLS0K
KworR2V0IGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGBgd2Vic29ja2V0c2BgIGlzIGJ1
aWx0IGFuZCB3aHkuCisKKy4uIHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGRlc2ln
bgorICAgbGltaXRhdGlvbnMKKyAgIHNlY3VyaXR5CisKK1Byb2plY3QKKy0tLS0tLS0KKworVGhp
cyBpcyBhYm91dCB3ZWJzb2NrZXRzLXRoZS1wcm9qZWN0IHJhdGhlciB0aGFuIHdlYnNvY2tldHMt
dGhlLXNvZnR3YXJlLgorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMgorCisgICBjaGFu
Z2Vsb2cKKyAgIGNvbnRyaWJ1dGluZworICAgbGljZW5zZQorICAgRm9yIGVudGVycHJpc2UgPHRp
ZGVsaWZ0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvaW50cm8ucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2RvY3MvaW50cm8ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uOGJlNzAwMjM5ZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL2RvY3MvaW50cm8ucnN0CkBAIC0wLDAgKzEsMjA5IEBACitHZXR0aW5nIHN0YXJ0ZWQKKz09
PT09PT09PT09PT09PQorCisuLiBjdXJyZW50bW9kdWxlOjogd2Vic29ja2V0cworCitSZXF1aXJl
bWVudHMKKy0tLS0tLS0tLS0tLQorCitgYHdlYnNvY2tldHNgYCByZXF1aXJlcyBQeXRob24g4oml
IDMuNi4xLgorCitZb3Ugc2hvdWxkIHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIGlm
IHBvc3NpYmxlLiBJZiB5b3UncmUgdXNpbmcgYW4KK29sZGVyIHZlcnNpb24sIGJlIGF3YXJlIHRo
YXQgZm9yIGVhY2ggbWlub3IgdmVyc2lvbiAoMy54KSwgb25seSB0aGUgbGF0ZXN0CitidWdmaXgg
cmVsZWFzZSAoMy54LnkpIGlzIG9mZmljaWFsbHkgc3VwcG9ydGVkLgorCitJbnN0YWxsYXRpb24K
Ky0tLS0tLS0tLS0tLQorCitJbnN0YWxsIGBgd2Vic29ja2V0c2BgIHdpdGg6OgorCisgICAgcGlw
IGluc3RhbGwgd2Vic29ja2V0cworCitCYXNpYyBleGFtcGxlCistLS0tLS0tLS0tLS0tCisKKy4u
IF9zZXJ2ZXItZXhhbXBsZToKKworSGVyZSdzIGEgV2ViU29ja2V0IHNlcnZlciBleGFtcGxlLgor
CitJdCByZWFkcyBhIG5hbWUgZnJvbSB0aGUgY2xpZW50LCBzZW5kcyBhIGdyZWV0aW5nLCBhbmQg
Y2xvc2VzIHRoZSBjb25uZWN0aW9uLgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2V4YW1wbGUv
c2VydmVyLnB5CisgICAgOmVtcGhhc2l6ZS1saW5lczogOCwxNworCisuLiBfY2xpZW50LWV4YW1w
bGU6CisKK09uIHRoZSBzZXJ2ZXIgc2lkZSwgYGB3ZWJzb2NrZXRzYGAgZXhlY3V0ZXMgdGhlIGhh
bmRsZXIgY29yb3V0aW5lIGBgaGVsbG9gYAorb25jZSBmb3IgZWFjaCBXZWJTb2NrZXQgY29ubmVj
dGlvbi4gSXQgY2xvc2VzIHRoZSBjb25uZWN0aW9uIHdoZW4gdGhlIGhhbmRsZXIKK2Nvcm91dGlu
ZSByZXR1cm5zLgorCitIZXJlJ3MgYSBjb3JyZXNwb25kaW5nIFdlYlNvY2tldCBjbGllbnQgZXhh
bXBsZS4KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9leGFtcGxlL2NsaWVudC5weQorICAgIDpl
bXBoYXNpemUtbGluZXM6IDgsMTAKKworVXNpbmcgOmZ1bmM6YGNvbm5lY3RgIGFzIGFuIGFzeW5j
aHJvbm91cyBjb250ZXh0IG1hbmFnZXIgZW5zdXJlcyB0aGUKK2Nvbm5lY3Rpb24gaXMgY2xvc2Vk
IGJlZm9yZSBleGl0aW5nIHRoZSBgYGhlbGxvYGAgY29yb3V0aW5lLgorCisuLiBfc2VjdXJlLXNl
cnZlci1leGFtcGxlOgorCitTZWN1cmUgZXhhbXBsZQorLS0tLS0tLS0tLS0tLS0KKworU2VjdXJl
IFdlYlNvY2tldCBjb25uZWN0aW9ucyBpbXByb3ZlIGNvbmZpZGVudGlhbGl0eSBhbmQgYWxzbyBy
ZWxpYWJpbGl0eQorYmVjYXVzZSB0aGV5IHJlZHVjZSB0aGUgcmlzayBvZiBpbnRlcmZlcmVuY2Ug
YnkgYmFkIHByb3hpZXMuCisKK1RoZSBXU1MgcHJvdG9jb2wgaXMgdG8gV1Mgd2hhdCBIVFRQUyBp
cyB0byBIVFRQOiB0aGUgY29ubmVjdGlvbiBpcyBlbmNyeXB0ZWQKK3dpdGggVHJhbnNwb3J0IExh
eWVyIFNlY3VyaXR5IChUTFMpIOKAlCB3aGljaCBpcyBvZnRlbiByZWZlcnJlZCB0byBhcyBTZWN1
cmUKK1NvY2tldHMgTGF5ZXIgKFNTTCkuIFdTUyByZXF1aXJlcyBUTFMgY2VydGlmaWNhdGVzIGxp
a2UgSFRUUFMuCisKK0hlcmUncyBob3cgdG8gYWRhcHQgdGhlIHNlcnZlciBleGFtcGxlIHRvIHBy
b3ZpZGUgc2VjdXJlIGNvbm5lY3Rpb25zLiBTZWUgdGhlCitkb2N1bWVudGF0aW9uIG9mIHRoZSA6
bW9kOmBzc2xgIG1vZHVsZSBmb3IgY29uZmlndXJpbmcgdGhlIGNvbnRleHQgc2VjdXJlbHkuCisK
Ky4uIGxpdGVyYWxpbmNsdWRlOjogLi4vZXhhbXBsZS9zZWN1cmVfc2VydmVyLnB5CisgICAgOmVt
cGhhc2l6ZS1saW5lczogMTksMjMtMjUKKworSGVyZSdzIGhvdyB0byBhZGFwdCB0aGUgY2xpZW50
LgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2V4YW1wbGUvc2VjdXJlX2NsaWVudC5weQorICAg
IDplbXBoYXNpemUtbGluZXM6IDEwLDE1LTE4CisKK1RoaXMgY2xpZW50IG5lZWRzIGEgY29udGV4
dCBiZWNhdXNlIHRoZSBzZXJ2ZXIgdXNlcyBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLgorCitB
IGNsaWVudCBjb25uZWN0aW5nIHRvIGEgc2VjdXJlIFdlYlNvY2tldCBzZXJ2ZXIgd2l0aCBhIHZh
bGlkIGNlcnRpZmljYXRlCisoaS5lLiBzaWduZWQgYnkgYSBDQSB0aGF0IHlvdXIgUHl0aG9uIGlu
c3RhbGxhdGlvbiB0cnVzdHMpIGNhbiBzaW1wbHkgcGFzcworYGBzc2w9VHJ1ZWBgIHRvIDpmdW5j
OmBjb25uZWN0YCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGEgY29udGV4dC4KKworQnJvd3Nlci1iYXNl
ZCBleGFtcGxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSdzIGFuIGV4YW1wbGUgb2Yg
aG93IHRvIHJ1biBhIFdlYlNvY2tldCBzZXJ2ZXIgYW5kIGNvbm5lY3QgZnJvbSBhIGJyb3dzZXIu
CisKK1J1biB0aGlzIHNjcmlwdCBpbiBhIGNvbnNvbGU6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjog
Li4vZXhhbXBsZS9zaG93X3RpbWUucHkKKworVGhlbiBvcGVuIHRoaXMgSFRNTCBmaWxlIGluIGEg
YnJvd3Nlci4KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9leGFtcGxlL3Nob3dfdGltZS5odG1s
CisgICA6bGFuZ3VhZ2U6IGh0bWwKKworU3luY2hyb25pemF0aW9uIGV4YW1wbGUKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK0EgV2ViU29ja2V0IHNlcnZlciBjYW4gcmVjZWl2ZSBldmVudHMg
ZnJvbSBjbGllbnRzLCBwcm9jZXNzIHRoZW0gdG8gdXBkYXRlIHRoZQorYXBwbGljYXRpb24gc3Rh
dGUsIGFuZCBzeW5jaHJvbml6ZSB0aGUgcmVzdWx0aW5nIHN0YXRlIGFjcm9zcyBjbGllbnRzLgor
CitIZXJlJ3MgYW4gZXhhbXBsZSB3aGVyZSBhbnkgY2xpZW50IGNhbiBpbmNyZW1lbnQgb3IgZGVj
cmVtZW50IGEgY291bnRlci4KK1VwZGF0ZXMgYXJlIHByb3BhZ2F0ZWQgdG8gYWxsIGNvbm5lY3Rl
ZCBjbGllbnRzLgorCitUaGUgY29uY3VycmVuY3kgbW9kZWwgb2YgOm1vZDpgYXN5bmNpb2AgZ3Vh
cmFudGVlcyB0aGF0IHVwZGF0ZXMgYXJlCitzZXJpYWxpemVkLgorCitSdW4gdGhpcyBzY3JpcHQg
aW4gYSBjb25zb2xlOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2V4YW1wbGUvY291bnRlci5w
eQorCitUaGVuIG9wZW4gdGhpcyBIVE1MIGZpbGUgaW4gc2V2ZXJhbCBicm93c2Vycy4KKworLi4g
bGl0ZXJhbGluY2x1ZGU6OiAuLi9leGFtcGxlL2NvdW50ZXIuaHRtbAorICAgOmxhbmd1YWdlOiBo
dG1sCisKK0NvbW1vbiBwYXR0ZXJucworLS0tLS0tLS0tLS0tLS0tCisKK1lvdSB3aWxsIHVzdWFs
bHkgd2FudCB0byBwcm9jZXNzIHNldmVyYWwgbWVzc2FnZXMgZHVyaW5nIHRoZSBsaWZldGltZSBv
ZiBhCitjb25uZWN0aW9uLiBUaGVyZWZvcmUgeW91IG11c3Qgd3JpdGUgYSBsb29wLiBIZXJlIGFy
ZSB0aGUgYmFzaWMgcGF0dGVybnMgZm9yCitidWlsZGluZyBhIFdlYlNvY2tldCBzZXJ2ZXIuCisK
K0NvbnN1bWVyCisuLi4uLi4uLgorCitGb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIGFuZCBwYXNzaW5n
IHRoZW0gdG8gYSBgYGNvbnN1bWVyYGAgY29yb3V0aW5lOjoKKworICAgIGFzeW5jIGRlZiBjb25z
dW1lcl9oYW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIGFzeW5jIGZvciBtZXNzYWdl
IGluIHdlYnNvY2tldDoKKyAgICAgICAgICAgIGF3YWl0IGNvbnN1bWVyKG1lc3NhZ2UpCisKK0lu
IHRoaXMgZXhhbXBsZSwgYGBjb25zdW1lcmBgIHJlcHJlc2VudHMgeW91ciBidXNpbmVzcyBsb2dp
YyBmb3IgcHJvY2Vzc2luZworbWVzc2FnZXMgcmVjZWl2ZWQgb24gdGhlIFdlYlNvY2tldCBjb25u
ZWN0aW9uLgorCitJdGVyYXRpb24gdGVybWluYXRlcyB3aGVuIHRoZSBjbGllbnQgZGlzY29ubmVj
dHMuCisKK1Byb2R1Y2VyCisuLi4uLi4uLgorCitGb3IgZ2V0dGluZyBtZXNzYWdlcyBmcm9tIGEg
YGBwcm9kdWNlcmBgIGNvcm91dGluZSBhbmQgc2VuZGluZyB0aGVtOjoKKworICAgIGFzeW5jIGRl
ZiBwcm9kdWNlcl9oYW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIHdoaWxlIFRydWU6
CisgICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgcHJvZHVjZXIoKQorICAgICAgICAgICAgYXdh
aXQgd2Vic29ja2V0LnNlbmQobWVzc2FnZSkKKworSW4gdGhpcyBleGFtcGxlLCBgYHByb2R1Y2Vy
YGAgcmVwcmVzZW50cyB5b3VyIGJ1c2luZXNzIGxvZ2ljIGZvciBnZW5lcmF0aW5nCittZXNzYWdl
cyB0byBzZW5kIG9uIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKworOm1ldGg6YH5wcm90b2Nv
bC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbC5zZW5kYCByYWlzZXMgYQorOmV4YzpgfmV4Y2VwdGlv
bnMuQ29ubmVjdGlvbkNsb3NlZGAgZXhjZXB0aW9uIHdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0
cywKK3doaWNoIGJyZWFrcyBvdXQgb2YgdGhlIGBgd2hpbGUgVHJ1ZWBgIGxvb3AuCisKK0JvdGgK
Ky4uLi4KKworWW91IGNhbiByZWFkIGFuZCB3cml0ZSBtZXNzYWdlcyBvbiB0aGUgc2FtZSBjb25u
ZWN0aW9uIGJ5IGNvbWJpbmluZyB0aGUgdHdvCitwYXR0ZXJucyBzaG93biBhYm92ZSBhbmQgcnVu
bmluZyB0aGUgdHdvIHRhc2tzIGluIHBhcmFsbGVsOjoKKworICAgIGFzeW5jIGRlZiBoYW5kbGVy
KHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgIGNvbnN1bWVyX3Rhc2sgPSBhc3luY2lvLmVuc3Vy
ZV9mdXR1cmUoCisgICAgICAgICAgICBjb25zdW1lcl9oYW5kbGVyKHdlYnNvY2tldCwgcGF0aCkp
CisgICAgICAgIHByb2R1Y2VyX3Rhc2sgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoCisgICAgICAg
ICAgICBwcm9kdWNlcl9oYW5kbGVyKHdlYnNvY2tldCwgcGF0aCkpCisgICAgICAgIGRvbmUsIHBl
bmRpbmcgPSBhd2FpdCBhc3luY2lvLndhaXQoCisgICAgICAgICAgICBbY29uc3VtZXJfdGFzaywg
cHJvZHVjZXJfdGFza10sCisgICAgICAgICAgICByZXR1cm5fd2hlbj1hc3luY2lvLkZJUlNUX0NP
TVBMRVRFRCwKKyAgICAgICAgKQorICAgICAgICBmb3IgdGFzayBpbiBwZW5kaW5nOgorICAgICAg
ICAgICAgdGFzay5jYW5jZWwoKQorCitSZWdpc3RyYXRpb24KKy4uLi4uLi4uLi4uLgorCitBcyBz
aG93biBpbiB0aGUgc3luY2hyb25pemF0aW9uIGV4YW1wbGUgYWJvdmUsIGlmIHlvdSBuZWVkIHRv
IG1haW50YWluIGEgbGlzdAorb2YgY3VycmVudGx5IGNvbm5lY3RlZCBjbGllbnRzLCB5b3UgbXVz
dCByZWdpc3RlciB0aGVtIHdoZW4gdGhleSBjb25uZWN0IGFuZAordW5yZWdpc3RlciB0aGVtIHdo
ZW4gdGhleSBkaXNjb25uZWN0LgorCis6OgorCisgICAgY29ubmVjdGVkID0gc2V0KCkKKworICAg
IGFzeW5jIGRlZiBoYW5kbGVyKHdlYnNvY2tldCwgcGF0aCk6CisgICAgICAgICMgUmVnaXN0ZXIu
CisgICAgICAgIGNvbm5lY3RlZC5hZGQod2Vic29ja2V0KQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICAjIEltcGxlbWVudCBsb2dpYyBoZXJlLgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53
YWl0KFt3cy5zZW5kKCJIZWxsbyEiKSBmb3Igd3MgaW4gY29ubmVjdGVkXSkKKyAgICAgICAgICAg
IGF3YWl0IGFzeW5jaW8uc2xlZXAoMTApCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAj
IFVucmVnaXN0ZXIuCisgICAgICAgICAgICBjb25uZWN0ZWQucmVtb3ZlKHdlYnNvY2tldCkKKwor
VGhpcyBzaW1wbGlzdGljIGV4YW1wbGUga2VlcHMgdHJhY2sgb2YgY29ubmVjdGVkIGNsaWVudHMg
aW4gbWVtb3J5LiBUaGlzIG9ubHkKK3dvcmtzIGFzIGxvbmcgYXMgeW91IHJ1biBhIHNpbmdsZSBw
cm9jZXNzLiBJbiBhIHByYWN0aWNhbCBhcHBsaWNhdGlvbiwgdGhlCitoYW5kbGVyIG1heSBzdWJz
Y3JpYmUgdG8gc29tZSBjaGFubmVscyBvbiBhIG1lc3NhZ2UgYnJva2VyLCBmb3IgZXhhbXBsZS4K
KworVGhhdCdzIGFsbCEKKy0tLS0tLS0tLS0tCisKK1RoZSBkZXNpZ24gb2YgdGhlIGBgd2Vic29j
a2V0c2BgIEFQSSB3YXMgZHJpdmVuIGJ5IHNpbXBsaWNpdHkuCisKK1lvdSBkb24ndCBoYXZlIHRv
IHdvcnJ5IGFib3V0IHBlcmZvcm1pbmcgdGhlIG9wZW5pbmcgb3IgdGhlIGNsb3NpbmcgaGFuZHNo
YWtlLAorYW5zd2VyaW5nIHBpbmdzLCBvciBhbnkgb3RoZXIgYmVoYXZpb3IgcmVxdWlyZWQgYnkg
dGhlIHNwZWNpZmljYXRpb24uCisKK2Bgd2Vic29ja2V0c2BgIGhhbmRsZXMgYWxsIHRoaXMgdW5k
ZXIgdGhlIGhvb2Qgc28geW91IGRvbid0IGhhdmUgdG8uCisKK09uZSBtb3JlIHRoaW5nLi4uCist
LS0tLS0tLS0tLS0tLS0tLQorCitgYHdlYnNvY2tldHNgYCBwcm92aWRlcyBhbiBpbnRlcmFjdGl2
ZSBjbGllbnQ6OgorCisgICAgJCBweXRob24gLW0gd2Vic29ja2V0cyB3c3M6Ly9lY2hvLndlYnNv
Y2tldC5vcmcvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9saWNlbnNlLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9kb2NzL2xpY2Vuc2UucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uODQyZDNiMDdmYzkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2RvY3MvbGljZW5zZS5yc3QKQEAgLTAsMCArMSw0IEBACitMaWNlbnNlCistLS0t
LS0tCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2RvY3MvbGlmZWN5Y2xlLmdyYWZmbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9s
aWZlY3ljbGUuZ3JhZmZsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGFiN2ZmMDlmNTJhNDFlM2U4YThhYmMyZThh
NTUwM2U0ODFjNDRhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMTM0CnpjbVYtRTQ4aWpzaXdG
UCEwMDAwMzBQUzV7U0t+TW1lamF7Pm14cTFXMXhKITQrM0kxfjZFNCMqTzlNbUZeaUgzZwp6KTVx
OUtAWml7SytpOUJWISsrbkJiTVpBMFpxdn0lNTN5cmFOIyZCaHM/eD5zIygleUplZUh7a1ZsTkRT
UzthYjkKeilud3A9dGBgaGBTJCpJQWI9X00xJipzWDtLWCM2YHlNRystWTlycl42WWNvQCoxYFVe
d3p9U0d3TVFkZ3dwdSZnCno5cXNzRnp0aHpxazUrNTxhOCtBOVBtPEFfUl9wVGVRbndZQT91MGB7
N2BLazJhM3JKVD5Ic29aMkx8MHUrKkslTQp6bDZ5Zk14YSlkT3ZicGxwIylaN3ZZJihoZk1JUDgh
R1RJTVpgRXtlRT9uMHMkQnl1MzVPfDtSUFVDdm1iWXxwVjEKeiRudGNPXlBJXyFCM29WanY9SnV9
Sm58KztzRTVQQTgke3VGcSN3YzYrc04rc2VhU2FrUTw1QXQ9MFliMWgpK3o7CnpJbXdaMXZ9UmRQ
TD5NUHcreD5HS0MtYjZ7WGU/V15eZXgtRFAoPW5WNmdOOGVvSF5PXyp7NVdSQkEldHEjclhDTwp6
dCFlMGJQNVVNWVUoLXgxdUNFSz9EKkEyVGo7cE1sKEQkLTNPRHl8NDhVME1CQihMNUhTdHEmaldr
eHhaYyM7VE4Kemg4SjBDRV9zcl42V04hVVNlYW1sTXxwOFRwTDBkYnVDan1YMjRuZCM0Mk1nIWhp
eUNmViNpMDNIfUpCU0ZqSGwhCnokJFVqLTkzQWczUylyZTZ5dXVVdTw2K1NEeStLZnMzMEd4R3NY
SFV2ZmhefHFrK2w2eWdYdG5ZMm87UGxPTmZuRAp6bmxOTDlLZE5vLSpoeGheZzBRKWMjNSRySCMm
ME5vVntxLT8yIyQpaER3OGxPXlM3XnRHViZhKUpzdj5ZUnE4NlQKej9SZkZYeDM0O20/TmBiTUBX
UD12TCt1eEJlcUdNc1NJP0stdDVKcDcyRWRlUShgTEY4SV4mQFhrfXtJI3N3RVpPCnpQTWRlRWo3
PCZsaXx3QHRsZXMoeFVMYjI9R0pTfEpOY013JXhWVilvaWtlMmdDO2N4bjBvem9fYkJkfjVZZzZ+
cQp6RHB5Wjh0QH1KQ0NMRFh4YntDNn4xOUp8fSFZSlQqTXE3QjhqRzdqUyVMMyQhJFYlV1BDUGlA
XiFtWWZUPWhjejMKellGSm8wQkA3RzNnKDB9Rz0kZDk9dFhtaShmLU9XWEIkIzwhKCVwPWs1VSFn
aD04Tz02eGhZST9KOWxRYVlmVzI0CnpyfTRTJWhMP0Z3V2QheCtaSU9NOz4kMlcoUmBYVyUtSHhK
eTBHVk5qV18yLTUmNmhKX0omKigyeGhuQVdaOWgmTwp6KHd3TWtkO1lAd1FDK3FsSlUyTm5QKX1O
fCZUYEdSJn1eel57Z25kfWl+Q0BWSnI+NEhZZlU0Sj1AP3JXU3RiPlIKekJ7O2hhI3d5JlQhUHMt
aFNTaFp8MSh4TCs8YENAPVZkfnM0TzxeeiFIazJ9PExlRU18Vm5BdT4ySVo2aXlKO2RKCnpJS0lC
RnFJQ2huSkxtUkR4e3JfWD9RazQ8R0NHdSgkRE1jR3JHYnVhMEQzKHJqVCV0Q3ZqPjVeNl9wVCM7
emdLKQp6d0RwQ0Z4RD50Uyk3R25yY2cxNGdeWmxGOTAjUiVoTHpYRWZCeG17THNjdztPRik5IzJe
UHx2fnI8e1goYjRLXnoKekVaQjxIKTdoa3stcVE/RXJJVkVPSD9MVG9WJCZlUnE5I01vM29yeVVr
Oz1YNjJpdj50RmJaVUpWIVBmcnR7UnlNCnpvKjY7X2FGYlhKXlA8aWtYckhEZ1FHUUpwSF5KaylP
UCR2eEQmJD93Qn54VENPOFU1RzJlRnNfSUhMaDNqUCN0KQp6MzJsfGNJRys1OCQ3a0BMQmVlM1oq
OVN8SW9jWDt6PmgqYEFFMkUmLWNoMm83bUk+MUdfR0VvNF54YiNlcFJhKyoKelFENllCcEw+eVgh
N0tJI2soN2JESVA9RjYmTURRdWRoK1lZNHFXTlo+RVY4RldKaGk8YE59d2dVeU1uNTsrOHJRCnpM
ZXJDbClYNllYNTx7ZFVsJV55TXI2ajx1UDhfRXNQLTdefipOWHg+OEFyQz9gfFBNMmk4blk7V1lE
KSY+cTlGbQp6Pk1fckh7Z19hIz1rJD93QT8zKlN5KVd8OTJ2bTR8VGZoN1YzZ0dKUEk7eWVqTV5T
UGY0I0wzcHg5bXViXzYoczwKej8mUD48ISMjRU1YezEpO2VKTHxeTWh5Y3wzY24xWnNVXmF6biVy
WUEkI3M9eVByaT14UHJoYC0ydEhvTmZgaWMhCnowMll2ZS0hOWI2anw1P2E0dEdxJW5TaSowUXIx
TF9pejd5Ym9CVzdMcTR6KmF6NGBBRFdNKU1ed0NpKjhTY0l7dAp6cExDeG43WmFUY2l4TlhIKDt9
M3NSdysxeTI7a3xrVkxfLVhYZDJ8MjtBPjNGZ3U5IypDUU5mcFZfZkhnMDJ5TTgKelZqKWNOY3RM
S2gwa1RBbTBlV0VNXzVlaERTRzMoSEA0RSNZUFptZjdvfVleJVBHI2lVZiZLQyRoYihTej9abm9T
CnoyKDs2ZVFFJW0rX0hndkc9Sj89X2ZgTjdwbDAoekVrYXZ6SjdRPmlndFJyR0BhOENASWYtPCVV
I0BOc2VpJj16WQp6QEw1Sld2aVNHSSpsSitoITEoI1kqYT9GR0k7SWRvX0VyKVo0WlI/cFpoQSFB
Zj5YNlAjfXBlXzVSKmE+YEspbmsKekhuP3FZYH19Ym1qJTRzS1B5NVFJVVFGQFNiRDxYZnlNXyli
cXckNnNqV19odFgjNzJnNGx2YmVKfHwoX1liY0A4CnpvNUV7YU1lc1kjP3taNjVLRXQzRU19IUYw
ajNtNnVrcHY1V3d+PlVKYDcmJSNVQTFVI1FVaFUzT2A+OSVEakh3Owp6ZTM/YT5gTGJvXyVQMS15
V1hidDV5ITduWSVfVEltVzZ5SlQ/RUI3b15gTU5LRFN4ITd1fUNeIXczWmdqej1oTF8KelFvdEZ+
KUhFNlY5ZmomTjtuQzg4RlI0OVp1aTBYezNVIzwobVZ0P3w3K3ZJUSU5Tkp6K0ZjRTlUK0xsdzRT
I1oxCnoheTh4QXhTSDN2eit5VldgaVE9dnR7WU9HV0BvMUk0RipMelcrcFcpISRgWmB1aVpEOHFW
V3lRdmMxTXpHflZMNQp6ZEpFTiZfPnw0Y0VwaSl+OyFtVit0RzZjR1A/MkBzVilwaSs4aCRPa0ly
dkJgIz0qJTVQPTxRemhCNChebmliPFUKenRfTEArcipTPXY+dUZZdXpqUE5oVGxEb3dFZGhKPTMm
emNSelg0bGIrayhNRW1NMlhZdWVDMDdRfFFgTik/ZmQpCnpafDkrVlBtQ1ZoTmRremlvZnBPVWAl
akYlOV57YUZCZ2UzR3dOQXtXaDtScnp4d3NRQFlQY0taR3t8e0QkaWVxVAp6UEhFdyNXbSRKWVA5
MWxIb0NZfkIyUllQdyUpSnpyTUB9N2dnUGIyM0lYQXE+MCMrMXBBfW0xK0RoTiZFZXYwKzkKej9A
cVgoMXxxRFFuU0NNbigrOzg0YHg/fE5pMm5mPSNKfXVlaXNjMy13aHhYdnlFfjZLKE9QK1RjeyFq
eWA0WEkzCnpwemBMJChGVWs1MmRNanBaeXluPG1AIT0tI3hOMkg8ZnJEZE1yIWtKWG9KKzNmeitl
cC1OVk8oRGI7WlNsajFxIQp6UkZEUno0TmhOJU0/RT9gK30tWGo8NVd3VlNIRiFzSCRQZmErPj1f
Um1pOF40JkhkX0Q1c2dfX2RBaFJVJm9IV0cKenBMZ0Y7JjJIMUA7YnBBMkR0bFN+dkQ+TF5WY2lN
clFRUXJlcGY3R0d7ZFZsUkdDbH5NMythfmtDTjh3KzlRQ09lCnpkdVA+c2tXMG0rQk8lQjNLKnA4
NWk+cTR+Pys8fHg4WUEzfG1lQHU1emZ6OTZWUjFMK2BHQ259TGA3fCE5XmJrUAp6dlU+MlVnKUh5
TXQ8biRlcHt5REdRXmpid05gNCZHek9QIVV4QHEwe28rSVBzIzVuY2o8Km5IK1lUekprSThHS2YK
ekBwai0xYkRMYH41RnttYXl2UGFQZEJJTEB1aiQhWGt5VUV7RFEhbXJjSjBEVHdseng+UWhHbFhi
MmtgeEt+KXd2CnpPZSg/ellFTiU5NVBLa2xMMm1lSlI9e2oyM3dUZE56YHhRYGZocXFUMVdZYyZr
KyYzbTVve3BoI1VrYG4hOFRuRwp6YnFEJHcoOT0xV3htOHE/aENmSGV5VV9MZShAejh9KmhieDJO
OUg7YThmST9AZHQ9YzBaUFhfaiR2ZnwoZWkkWmwKemA2b0k4LXhNU1Q5cDdMPkNMNyVeb3craGlU
VG8zR0BlO0hPJjVMbiEqeDNxYEJwa2w4cXVmXmVgTjh2OSlfcCY7CnpsT24zOCpBeTJLb0xRXyUz
NDNBV3tpUi00MmYzI15saVhDMDFEQFdrRW9pSHF7Tj9XYj1LdHtsQmwqOEF8S3Q4JQp6KnJ2YTR7
bDRHWEojVXtNeSs7aDZlZlo2SDJIV3U4SiRqRW5vfWNaVmBmVyh4LWV1aGBgUigoXjR+TTl8fDYj
WT8KemAzeTlfZSlUVzYtYCpfI2YkUyNfUUk5ZXpIfDJpfUY+Tz9eKEtYcG1QUE8/NV9QUV5WKWNm
MzhPa28xMXU5ITV2CnpyalR6TzxMTmdKNWFrQThZWDNEO2tuMzl0Ump1enRzO2BCfThjNGlePk9X
Q0krZiZ3bUh5a31oX0NAPWhSPlY7dAp6bUZaWHpjYnJKdUpxckEqK2lsODhjKTlGSEdrfj1JaXk2
SDVnXmJrcGNmRikpe3c1I3hDPEgxS2p2KWxwc1RrXjgKejZPLV82XjV2TiZxUHZ0PzFwcyM3JFVF
fUI1NF9Kfm5le2JxYz40RlQrems+aHg9SFApXj9fekp2a3pWWFVCfF95CnplMHY7NHBvdnRJKWl9
Sy1PeThhTWZJZHhCb1F2WiEtI2VZXmpTQSl8emJidGxyfFpOaWc9QDwrWXJibHVkSU49LQp6PFpR
UTtkSFR1TiZwZEw0MElLS0F6QWQ+cHtnKmpnUlAqRWp4c0dxMj9NYTMwUVZlN21ySTJhcm1RVW9N
VjdjOzIKejs4ZkBOISVVVUp2OGZ5UiEoN3YtRFQ/PVNqbUdqSCQqRyZnb0QtZWUoNH4hUT9NQlYp
Y01YeWomWFQ1PXZAa0tCClkqe3pDPSQ8RkU1cCpDMGs1QkxudSRGeW55MDdfeyF5OHIrSAoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvbGlm
ZWN5Y2xlLnN2ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL2xpZmVjeWNsZS5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYTk4MThkMjkzMGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9saWZlY3ljbGUuc3ZnCkBAIC0wLDAgKzEsMyBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+
Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8v
d3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9Ii0xNC4zNDY0NTY1IDExMi42NTM1NDMg
NjI0LjY5MjkgMzcyLjY5MjkxIiB3aWR0aD0iNjI0LjY5MjlwdCIgaGVpZ2h0PSIzNzIuNjkyOTFw
dCIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj48bWV0YWRhdGE+
IFByb2R1Y2VkIGJ5IE9tbmlHcmFmZmxlIDYuNi4yIDxkYzpkYXRlPjIwMTgtMDctMjkgMTU6MjU6
MzQgKzAwMDA8L2RjOmRhdGU+PC9tZXRhZGF0YT48ZGVmcz48Zm9udC1mYWNlIGZvbnQtZmFtaWx5
PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgcGFub3NlLTE9IjIgNyA2IDkgMiAyIDUgMiA0
IDQiIHVuaXRzLXBlci1lbT0iMTAwMCIgdW5kZXJsaW5lLXBvc2l0aW9uPSItMjMyLjkxMDE2IiB1
bmRlcmxpbmUtdGhpY2tuZXNzPSIxMDAuMDk3NjU2IiBzbG9wZT0iMCIgeC1oZWlnaHQ9IjQ0My4z
NTkzOCIgY2FwLWhlaWdodD0iNTkxLjc5Njg4IiBhc2NlbnQ9IjgzMi41MTk1MyIgZGVzY2VudD0i
LTMwMC4yOTI5NyIgZm9udC13ZWlnaHQ9ImJvbGQiPjxmb250LWZhY2Utc3JjPjxmb250LWZhY2Ut
bmFtZSBuYW1lPSJDb3VyaWVyTmV3UFMtQm9sZE1UIi8+PC9mb250LWZhY2Utc3JjPjwvZm9udC1m
YWNlPjxmb250LWZhY2UgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBw
YW5vc2UtMT0iMiA3IDMgOSAyIDIgNSAyIDQgNCIgdW5pdHMtcGVyLWVtPSIxMDAwIiB1bmRlcmxp
bmUtcG9zaXRpb249Ii0yMzIuOTEwMTYiIHVuZGVybGluZS10aGlja25lc3M9IjQxLjAxNTYyNSIg
c2xvcGU9IjAiIHgtaGVpZ2h0PSI0MjIuODUxNTYiIGNhcC1oZWlnaHQ9IjU3MS4yODkwNiIgYXNj
ZW50PSI4MzIuNTE5NTMiIGRlc2NlbnQ9Ii0zMDAuMjkyOTciIGZvbnQtd2VpZ2h0PSI1MDAiPjxm
b250LWZhY2Utc3JjPjxmb250LWZhY2UtbmFtZSBuYW1lPSJDb3VyaWVyTmV3UFNNVCIvPjwvZm9u
dC1mYWNlLXNyYz48L2ZvbnQtZmFjZT48bWFya2VyIG9yaWVudD0iYXV0byIgb3ZlcmZsb3c9InZp
c2libGUiIG1hcmtlclVuaXRzPSJzdHJva2VXaWR0aCIgaWQ9IlN0aWNrQXJyb3dfTWFya2VyIiB2
aWV3Qm94PSItMSAtNCA4IDgiIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjgiIGNvbG9y
PSJibGFjayI+PGc+PHBhdGggZD0iTSA1Ljg2NjY2NjcgMCBMIDAgMCBNIDAgLTIuMiBMIDUuODY2
NjY2NyAwIEwgMCAyLjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Ut
d2lkdGg9IjEiLz48L2c+PC9tYXJrZXI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iVmVyZGFuYSIg
Zm9udC1zaXplPSIxMiIgcGFub3NlLTE9IjIgMTEgNiA0IDMgNSA0IDQgMiA0IiB1bml0cy1wZXIt
ZW09IjEwMDAiIHVuZGVybGluZS1wb3NpdGlvbj0iLTg3Ljg5MDYyNSIgdW5kZXJsaW5lLXRoaWNr
bmVzcz0iNTguNTkzNzUiIHNsb3BlPSIwIiB4LWhlaWdodD0iNTQ1LjQxMDE2IiBjYXAtaGVpZ2h0
PSI3MjcuMDUwOCIgYXNjZW50PSIxMDA1LjM3MTEiIGRlc2NlbnQ9Ii0yMDkuOTYwOTQiIGZvbnQt
d2VpZ2h0PSI1MDAiPjxmb250LWZhY2Utc3JjPjxmb250LWZhY2UtbmFtZSBuYW1lPSJWZXJkYW5h
Ii8+PC9mb250LWZhY2Utc3JjPjwvZm9udC1mYWNlPjwvZGVmcz48ZyBzdHJva2U9Im5vbmUiIHN0
cm9rZS1vcGFjaXR5PSIxIiBzdHJva2UtZGFzaGFycmF5PSJub25lIiBmaWxsPSJub25lIiBmaWxs
LW9wYWNpdHk9IjEiPjx0aXRsZT5DYW52YXMgMTwvdGl0bGU+PGc+PHRpdGxlPkxheWVyIDE8L3Rp
dGxlPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDE5LjE3MzIyOCAxNDguOTA1NTEpIiBmaWxs
PSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIg
Zm9udC13ZWlnaHQ9ImJvbGQiIHg9IjEuNTEzODI1NCIgeT0iMTAiIHRleHRMZW5ndGg9IjcyLjAx
MTcyIj5DT05ORUNUSU5HPC90c3Bhbj48L3RleHQ+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo
MTYwLjkwNTUxIDE0OC45MDU1MSkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNv
dXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMjMuMTE3MzQx
IiB5PSIxMCIgdGV4dExlbmd0aD0iMjguODA0Njg4Ij5PUEVOPC90c3Bhbj48L3RleHQ+PHRleHQg
dHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzU5LjMzMDcgMTQ4LjkwNTUxKSIgZmlsbD0iYmxhY2siPjx0
c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0
PSJib2xkIiB4PSIxMi4zMTU1ODMiIHk9IjEwIiB0ZXh0TGVuZ3RoPSI1MC40MDgyMDMiPkNMT1NJ
Tkc8L3RzcGFuPjwvdGV4dD48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDEuMDYzIDE0OC45
MDU1MSkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250
LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMTUuOTE2MTY5IiB5PSIxMCIgdGV4dExl
bmd0aD0iNDMuMjA3MDMiPkNMT1NFRDwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIxOTguNDI1MiIg
eTE9IjE3MC4wNzg3NCIgeDI9IjE5OC40MjUyIiB5Mj0iNDUzLjU0MzMiIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdp
ZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjEsMyIvPjxsaW5lIHgxPSIzOTYuODUwNCIgeTE9
IjE3MC4wNzg3NCIgeDI9IjM5Ni44NTA0IiB5Mj0iNDUzLjU0MzMiIHN0cm9rZT0iYmxhY2siIHN0
cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRo
PSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjEsMyIvPjxsaW5lIHgxPSI1MzguNTgyNjciIHkxPSIx
NzAuMDc4NzQiIHgyPSI1MzguNTgyNjciIHkyPSI0NTMuNTQzMyIgc3Ryb2tlPSJibGFjayIgc3Ry
b2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9
IjEuNSIgc3Ryb2tlLWRhc2hhcnJheT0iMSwzIi8+PGxpbmUgeDE9IjU2LjY5MjkxMyIgeTE9IjE3
MC4wNzg3NCIgeDI9IjU2LjY5MjkxMyIgeTI9IjQ1My41NDMzIiBzdHJva2U9ImJsYWNrIiBzdHJv
a2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0i
MS41IiBzdHJva2UtZGFzaGFycmF5PSIxLDMiLz48cGF0aCBkPSJNIDI0MC45NDQ4OCAyNDAuOTQ0
ODggTCA0MTEuMDIzNjIgMjQwLjk0NDg4IEMgNDE4Ljg1MTI4IDI0MC45NDQ4OCA0MjUuMTk2ODUg
MjQ3LjI5MDQ1IDQyNS4xOTY4NSAyNTUuMTE4MTEgTCA0MjUuMTk2ODUgMjU1LjExODExIEMgNDI1
LjE5Njg1IDI2Mi45NDU3NyA0MTguODUxMjggMjY5LjI5MTM0IDQxMS4wMjM2MiAyNjkuMjkxMzQg
TCAyNDAuOTQ0ODggMjY5LjI5MTM0IEMgMjMzLjExNzIyIDI2OS4yOTEzNCAyMjYuNzcxNjUgMjYy
Ljk0NTc3IDIyNi43NzE2NSAyNTUuMTE4MTEgTCAyMjYuNzcxNjUgMjU1LjExODExIEMgMjI2Ljc3
MTY1IDI0Ny4yOTA0NSAyMzMuMTE3MjIgMjQwLjk0NDg4IDI0MC45NDQ4OCAyNDAuOTQ0ODggWiIg
ZmlsbD0iI2RhZGFkYSIvPjxwYXRoIGQ9Ik0gMjQwLjk0NDg4IDI0MC45NDQ4OCBMIDQxMS4wMjM2
MiAyNDAuOTQ0ODggQyA0MTguODUxMjggMjQwLjk0NDg4IDQyNS4xOTY4NSAyNDcuMjkwNDUgNDI1
LjE5Njg1IDI1NS4xMTgxMSBMIDQyNS4xOTY4NSAyNTUuMTE4MTEgQyA0MjUuMTk2ODUgMjYyLjk0
NTc3IDQxOC44NTEyOCAyNjkuMjkxMzQgNDExLjAyMzYyIDI2OS4yOTEzNCBMIDI0MC45NDQ4OCAy
NjkuMjkxMzQgQyAyMzMuMTE3MjIgMjY5LjI5MTM0IDIyNi43NzE2NSAyNjIuOTQ1NzcgMjI2Ljc3
MTY1IDI1NS4xMTgxMSBMIDIyNi43NzE2NSAyNTUuMTE4MTEgQyAyMjYuNzcxNjUgMjQ3LjI5MDQ1
IDIzMy4xMTcyMiAyNDAuOTQ0ODggMjQwLjk0NDg4IDI0MC45NDQ4OCBaIiBzdHJva2U9ImJsYWNr
IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13
aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjI2Ljc3MTY1IDI0OC4xMTgx
MSkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNp
emU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iNTIuNDA0OTgiIHk9IjEwIiB0ZXh0TGVuZ3Ro
PSI5My42MTUyMzQiPnRyYW5zZmVyX2RhdGE8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDI0MC45
NDQ4OCAzNTQuMzMwNyBMIDU1Mi43NTU5IDM1NC4zMzA3IEMgNTYwLjU4MzU2IDM1NC4zMzA3IDU2
Ni45MjkxMyAzNjAuNjc2MjggNTY2LjkyOTEzIDM2OC41MDM5MyBMIDU2Ni45MjkxMyAzNjguNTAz
OTMgQyA1NjYuOTI5MTMgMzc2LjMzMTYgNTYwLjU4MzU2IDM4Mi42NzcxNiA1NTIuNzU1OSAzODIu
Njc3MTYgTCAyNDAuOTQ0ODggMzgyLjY3NzE2IEMgMjMzLjExNzIyIDM4Mi42NzcxNiAyMjYuNzcx
NjUgMzc2LjMzMTYgMjI2Ljc3MTY1IDM2OC41MDM5MyBMIDIyNi43NzE2NSAzNjguNTAzOTMgQyAy
MjYuNzcxNjUgMzYwLjY3NjI4IDIzMy4xMTcyMiAzNTQuMzMwNyAyNDAuOTQ0ODggMzU0LjMzMDcg
WiIgZmlsbD0iI2RhZGFkYSIvPjxwYXRoIGQ9Ik0gMjQwLjk0NDg4IDM1NC4zMzA3IEwgNTUyLjc1
NTkgMzU0LjMzMDcgQyA1NjAuNTgzNTYgMzU0LjMzMDcgNTY2LjkyOTEzIDM2MC42NzYyOCA1NjYu
OTI5MTMgMzY4LjUwMzkzIEwgNTY2LjkyOTEzIDM2OC41MDM5MyBDIDU2Ni45MjkxMyAzNzYuMzMx
NiA1NjAuNTgzNTYgMzgyLjY3NzE2IDU1Mi43NTU5IDM4Mi42NzcxNiBMIDI0MC45NDQ4OCAzODIu
Njc3MTYgQyAyMzMuMTE3MjIgMzgyLjY3NzE2IDIyNi43NzE2NSAzNzYuMzMxNiAyMjYuNzcxNjUg
MzY4LjUwMzkzIEwgMjI2Ljc3MTY1IDM2OC41MDM5MyBDIDIyNi43NzE2NSAzNjAuNjc2MjggMjMz
LjExNzIyIDM1NC4zMzA3IDI0MC45NDQ4OCAzNTQuMzMwNyBaIiBzdHJva2U9ImJsYWNrIiBzdHJv
a2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0i
MS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjMxLjc3MTY1IDM2MS41MDM5MykiIGZp
bGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEy
IiBmb250LXdlaWdodD0iYm9sZCIgeD0iMTA3LjQ2OTM2NCIgeT0iMTAiIHRleHRMZW5ndGg9IjEx
NS4yMTg3NSI+Y2xvc2VfY29ubmVjdGlvbjwvdHNwYW4+PC90ZXh0PjxwYXRoIGQ9Ik0gOTkuMjEy
NiAxODQuMjUxOTcgTCAxNTUuOTA1NTEgMTg0LjI1MTk3IEMgMTYzLjczMzE3IDE4NC4yNTE5NyAx
NzAuMDc4NzQgMTkwLjU5NzU0IDE3MC4wNzg3NCAxOTguNDI1MiBMIDE3MC4wNzg3NCAxOTguNDI1
MiBDIDE3MC4wNzg3NCAyMDYuMjUyODUgMTYzLjczMzE3IDIxMi41OTg0MiAxNTUuOTA1NTEgMjEy
LjU5ODQyIEwgOTkuMjEyNiAyMTIuNTk4NDIgQyA5MS4zODQ5NCAyMTIuNTk4NDIgODUuMDM5Mzcg
MjA2LjI1Mjg1IDg1LjAzOTM3IDE5OC40MjUyIEwgODUuMDM5MzcgMTk4LjQyNTIgQyA4NS4wMzkz
NyAxOTAuNTk3NTQgOTEuMzg0OTQgMTg0LjI1MTk3IDk5LjIxMjYgMTg0LjI1MTk3IFoiIGZpbGw9
IiM2ZjYiLz48cGF0aCBkPSJNIDk5LjIxMjYgMTg0LjI1MTk3IEwgMTU1LjkwNTUxIDE4NC4yNTE5
NyBDIDE2My43MzMxNyAxODQuMjUxOTcgMTcwLjA3ODc0IDE5MC41OTc1NCAxNzAuMDc4NzQgMTk4
LjQyNTIgTCAxNzAuMDc4NzQgMTk4LjQyNTIgQyAxNzAuMDc4NzQgMjA2LjI1Mjg1IDE2My43MzMx
NyAyMTIuNTk4NDIgMTU1LjkwNTUxIDIxMi41OTg0MiBMIDk5LjIxMjYgMjEyLjU5ODQyIEMgOTEu
Mzg0OTQgMjEyLjU5ODQyIDg1LjAzOTM3IDIwNi4yNTI4NSA4NS4wMzkzNyAxOTguNDI1MiBMIDg1
LjAzOTM3IDE5OC40MjUyIEMgODUuMDM5MzcgMTkwLjU5NzU0IDkxLjM4NDk0IDE4NC4yNTE5NyA5
OS4yMTI2IDE4NC4yNTE5NyBaIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQi
IHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoOTAuMDM5MzcgMTkxLjQyNTIpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZv
bnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9ImJvbGQi
IHg9IjEyLjMxNTU4MyIgeT0iMTAiIHRleHRMZW5ndGg9IjUwLjQwODIwMyI+Y29ubmVjdDwvdHNw
YW4+PC90ZXh0PjxwYXRoIGQ9Ik0gMjQwLjk0NDg4IDE4NC4yNTE5NyBMIDQ5Ni4wNjMgMTg0LjI1
MTk3IEMgNTAzLjg5MDY1IDE4NC4yNTE5NyA1MTAuMjM2MjIgMTkwLjU5NzU0IDUxMC4yMzYyMiAx
OTguNDI1MiBMIDUxMC4yMzYyMiAxOTguNDI1MiBDIDUxMC4yMzYyMiAyMDYuMjUyODUgNTAzLjg5
MDY1IDIxMi41OTg0MiA0OTYuMDYzIDIxMi41OTg0MiBMIDI0MC45NDQ4OCAyMTIuNTk4NDIgQyAy
MzMuMTE3MjIgMjEyLjU5ODQyIDIyNi43NzE2NSAyMDYuMjUyODUgMjI2Ljc3MTY1IDE5OC40MjUy
IEwgMjI2Ljc3MTY1IDE5OC40MjUyIEMgMjI2Ljc3MTY1IDE5MC41OTc1NCAyMzMuMTE3MjIgMTg0
LjI1MTk3IDI0MC45NDQ4OCAxODQuMjUxOTcgWiIgZmlsbD0iIzZmNiIvPjxwYXRoIGQ9Ik0gMjQw
Ljk0NDg4IDE4NC4yNTE5NyBMIDQ5Ni4wNjMgMTg0LjI1MTk3IEMgNTAzLjg5MDY1IDE4NC4yNTE5
NyA1MTAuMjM2MjIgMTkwLjU5NzU0IDUxMC4yMzYyMiAxOTguNDI1MiBMIDUxMC4yMzYyMiAxOTgu
NDI1MiBDIDUxMC4yMzYyMiAyMDYuMjUyODUgNTAzLjg5MDY1IDIxMi41OTg0MiA0OTYuMDYzIDIx
Mi41OTg0MiBMIDI0MC45NDQ4OCAyMTIuNTk4NDIgQyAyMzMuMTE3MjIgMjEyLjU5ODQyIDIyNi43
NzE2NSAyMDYuMjUyODUgMjI2Ljc3MTY1IDE5OC40MjUyIEwgMjI2Ljc3MTY1IDE5OC40MjUyIEMg
MjI2Ljc3MTY1IDE5MC41OTc1NCAyMzMuMTE3MjIgMTg0LjI1MTk3IDI0MC45NDQ4OCAxODQuMjUx
OTcgWiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpv
aW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRl
KDIzMS43NzE2NSAxOTEuNDI1MikiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNv
dXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMTcuOTEyOTQ3
IiB5PSIxMCIgdGV4dExlbmd0aD0iMTAwLjgxNjQwNiI+cmVjdiAvIHNlbmQgLyA8L3RzcGFuPjx0
c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0
PSI1MDAiIHg9IjExOC43MjkzNSIgeT0iMTAiIHRleHRMZW5ndGg9IjkzLjYxNTIzNCI+cGluZyAv
IHBvbmcgLzwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXpl
PSIxMiIgZm9udC13ZWlnaHQ9ImJvbGQiIHg9IjIxMi4zNDQ1OSIgeT0iMTAiIHRleHRMZW5ndGg9
IjUwLjQwODIwMyI+IGNsb3NlIDwvdHNwYW4+PC90ZXh0PjxwYXRoIGQ9Ik0gMTcwLjA3ODc0IDE5
OC40MjUyIEwgMTgzLjk3ODc0IDE5OC40MjUyIEwgMTk4LjQyNTIgMTk4LjQyNTIgTCAxOTguNDI1
MiAyODMuNDY0NTcgTCAxOTguNDI1MiAzNjguNTAzOTMgTCAyMTIuODcxNjUgMzY4LjUwMzkzIEwg
MjE1LjM3MTY1IDM2OC41MDM5MyIgbWFya2VyLWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtlciki
IHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJy
b3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3NS44
NjYxNCA0MTAuMTk2ODUpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJkYW5h
IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSIyNy43NjAyOTYiIHk9IjEyIiB0
ZXh0TGVuZ3RoPSI1Mi4wODM5ODQiPm9wZW5pbmcgPC90c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9
IlZlcmRhbmEiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjE5LjE2NDU5MyIg
eT0iMjciIHRleHRMZW5ndGg9IjU4LjAyNTM5Ij5oYW5kc2hhazwvdHNwYW4+PHRzcGFuIGZvbnQt
ZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSI3Ny4w
NzI3OTYiIHk9IjI3IiB0ZXh0TGVuZ3RoPSI3LjE0ODQzNzUiPmU8L3RzcGFuPjwvdGV4dD48dGV4
dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTYuMDIzNjIgNDEwLjE5Njg1KSIgZmlsbD0iYmxhY2si
Pjx0c3BhbiBmb250LWZhbWlseT0iVmVyZGFuYSIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9
IjUwMCIgeD0iMTkuMTgyMTcxIiB5PSIxMiIgdGV4dExlbmd0aD0iNjUuMDIxNDg0Ij5jb25uZWN0
aW9uPC90c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9IlZlcmRhbmEiIGZvbnQtc2l6ZT0iMTIiIGZv
bnQtd2VpZ2h0PSI1MDAiIHg9IjE2Ljg2MTg1OCIgeT0iMjciIHRleHRMZW5ndGg9IjY5LjY2MjEx
Ij50ZXJtaW5hdGlvbjwvdHNwYW4+PC90ZXh0Pjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDIx
Ny41OTg0MiA0MTAuMTk2ODUpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJk
YW5hIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSI0MS4wMzA1OCIgeT0iMTIi
IHRleHRMZW5ndGg9IjQwLjY4NzUiPmRhdGEgdHI8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0i
VmVyZGFuYSIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iODEuNTA3MTQzIiB5
PSIxMiIgdGV4dExlbmd0aD0iMzcuNTQxMDE2Ij5hbnNmZXI8L3RzcGFuPjx0c3BhbiBmb250LWZh
bWlseT0iVmVyZGFuYSIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMTguMjEx
MjQ1IiB5PSIyNyIgdGV4dExlbmd0aD0iMTE2LjYyNSI+JmFtcDsgY2xvc2luZyBoYW5kc2hhazwv
dHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9IjEyIiBmb250LXdl
aWdodD0iNTAwIiB4PSIxMzQuNzE5MDYiIHk9IjI3IiB0ZXh0TGVuZ3RoPSI3LjE0ODQzNzUiPmU8
L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDQyNS4xOTY4NSAyNTUuMTE4MTEgTCA0MzkuMDk2ODUg
MjU1LjExODExIEwgNDUzLjU0MzMgMjU1LjExODExIEwgNDUzLjU0MzMgMzQyLjkzMDciIG1hcmtl
ci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXIpIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGlu
ZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+
PHBhdGggZD0iTSAyNDAuOTQ0ODggMjk3LjYzNzggTCA0MTEuMDIzNjIgMjk3LjYzNzggQyA0MTgu
ODUxMjggMjk3LjYzNzggNDI1LjE5Njg1IDMwMy45ODMzNiA0MjUuMTk2ODUgMzExLjgxMTAyIEwg
NDI1LjE5Njg1IDMxMS44MTEwMiBDIDQyNS4xOTY4NSAzMTkuNjM4NjggNDE4Ljg1MTI4IDMyNS45
ODQyNSA0MTEuMDIzNjIgMzI1Ljk4NDI1IEwgMjQwLjk0NDg4IDMyNS45ODQyNSBDIDIzMy4xMTcy
MiAzMjUuOTg0MjUgMjI2Ljc3MTY1IDMxOS42Mzg2OCAyMjYuNzcxNjUgMzExLjgxMTAyIEwgMjI2
Ljc3MTY1IDMxMS44MTEwMiBDIDIyNi43NzE2NSAzMDMuOTgzMzYgMjMzLjExNzIyIDI5Ny42Mzc4
IDI0MC45NDQ4OCAyOTcuNjM3OCBaIiBmaWxsPSIjZGFkYWRhIi8+PHBhdGggZD0iTSAyNDAuOTQ0
ODggMjk3LjYzNzggTCA0MTEuMDIzNjIgMjk3LjYzNzggQyA0MTguODUxMjggMjk3LjYzNzggNDI1
LjE5Njg1IDMwMy45ODMzNiA0MjUuMTk2ODUgMzExLjgxMTAyIEwgNDI1LjE5Njg1IDMxMS44MTEw
MiBDIDQyNS4xOTY4NSAzMTkuNjM4NjggNDE4Ljg1MTI4IDMyNS45ODQyNSA0MTEuMDIzNjIgMzI1
Ljk4NDI1IEwgMjQwLjk0NDg4IDMyNS45ODQyNSBDIDIzMy4xMTcyMiAzMjUuOTg0MjUgMjI2Ljc3
MTY1IDMxOS42Mzg2OCAyMjYuNzcxNjUgMzExLjgxMTAyIEwgMjI2Ljc3MTY1IDMxMS44MTEwMiBD
IDIyNi43NzE2NSAzMDMuOTgzMzYgMjMzLjExNzIyIDI5Ny42Mzc4IDI0MC45NDQ4OCAyOTcuNjM3
OCBaIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9p
bj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo
MjI2Ljc3MTY1IDMwNC44MTEwMikiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNv
dXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iNDguODA0Mzk1
IiB5PSIxMCIgdGV4dExlbmd0aD0iMTAwLjgxNjQwNiI+a2VlcGFsaXZlX3Bpbmc8L3RzcGFuPjwv
dGV4dD48bGluZSB4MT0iMTk4LjQyNTIiIHkxPSIyNTUuMTE4MTEiIHgyPSIyMTQuNjIxNjUiIHky
PSIyNTUuMTE4MTEiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXIpIiBzdHJva2U9
ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0
cm9rZS13aWR0aD0iMS41Ii8+PGxpbmUgeDE9IjE5OC40MjUyIiB5MT0iMzExLjgxMTAyIiB4Mj0i
MjE1LjM3MTY1IiB5Mj0iMzExLjgxMTAyIiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFy
a2VyKSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpv
aW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjwvZz48L2c+PC9zdmc+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvZG9jcy9saW1pdGF0aW9ucy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
ZG9jcy9saW1pdGF0aW9ucy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5iZDZkMzJiMmY2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9j
cy9saW1pdGF0aW9ucy5yc3QKQEAgLTAsMCArMSwxMCBAQAorTGltaXRhdGlvbnMKKy0tLS0tLS0t
LS0tCisKK1RoZSBjbGllbnQgZG9lc24ndCBhdHRlbXB0IHRvIGd1YXJhbnRlZSB0aGF0IHRoZXJl
IGlzIG5vIG1vcmUgdGhhbiBvbmUKK2Nvbm5lY3Rpb24gdG8gYSBnaXZlbiBJUCBhZGRyZXNzIGlu
IGEgQ09OTkVDVElORyBzdGF0ZS4KKworVGhlIGNsaWVudCBkb2Vzbid0IHN1cHBvcnQgY29ubmVj
dGluZyB0aHJvdWdoIGEgcHJveHkuCisKK1RoZXJlIGlzIG5vIHdheSB0byBmcmFnbWVudCBvdXRn
b2luZyBtZXNzYWdlcy4gQSBtZXNzYWdlIGlzIGFsd2F5cyBzZW50IGluIGEKK3NpbmdsZSBmcmFt
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3Byb3RvY29sLmdyYWZmbGUgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZG9jcy9wcm90b2NvbC5ncmFmZmxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNzZmNDk2
MDdlNTc0M2I4MDllNmY0MTc4NzI2MjkzMmI2YjA3NDMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDQ3NDAKemNtVi1+NV98MCppd0ZQITAwMDAzMFBTNkNiSzVyN3tAblp1ejReRlgpM183cHJyQnx2
YmR6cUhjdztCb2MwQUxlCnpDME9RJEIyfCkjPDdWPlQtdmRnUGNtWFgrbTlLKV5pRVF4ejFWTm5W
VHlnTl5wST01JUAzVCZgRm99UEJqNkwrWQp6cntqSnkyOzw/OGtLWjV0dj9Ddz9eWGExfXxNJmR1
ez9WQG9GTTh1QiU8fHNCYCk5OVQ/ZWB3PD9DJFEzJEMyTE0KemVTWS0zY2t1ZXY7WllDeip4aH5j
PTVnPXdTKVB4Nyp4ZnhwS2xjSmQ8QEotMUE8VDlVKHF5ZER7TmdvcXdnVX5rCnpLfFhqNHgwJmB7
ODRpM3EyPmJjZE44ZGc5cSVXVENfNER3dmVqUXhzXmlAMzJVIUxybVp7Y0RYPVgkOHFyfDhNPAp6
PColMWI7TkQ/QiRmMyYqKTFLI3pmOzBgeEZXKWBNQClSRVZEVThyZE1zWVl5bGdaZTczJX5zPDRO
Z3haRXVRU28Kek5KYFhMRDM0R1dLSmtTUnEodCYkX3A8Qmg1R0h4REh+OE5xJWpkVncofX5gX3kj
NmZjZT1AZz4yWE1SYlM9Z1ZHCnomN09UbVcrPH1EWXg3fXp7ZmZUdHA+Tjshekc4fm1fZE9WdntQ
d0xmVkFFbmgzYkpQNyF6Mm45Y2RhI2ZeP1g1cAp6SWpme1IhQmV1c3szNmx8JUY4aU5GRzgyZXJe
VklNPD5+ZTNYPmgoNik/IzM5LWo7XzBHZGlEJiVpazhpT3lAQXUKenphYDEyITswN3M7P0ZfJEhW
dWQyVmw3LXdXLSp1TFNHajAkODIrZ25ecmJtKHZgVjdNREJnPzBWY1p4TVpqUCM7CnpKeyQqcT13
ZVF2Pkw3WWJ4dT1SQiFXMVc1RCluVHl4TnpBTnt4SXdOZDV8ey1ORCVnU2tsSTE0aHclPiN8M0Yz
Vwp6PytBVnhxY3hvKlh9JGc0I1ltQE56cWRDVCF1bUI2UiZEaz8lKklpMGFvNyl7Iz1VYG87aXVP
aF4/dk5sZjNKNyYKelF5QSVeaSpjaUkwOENTLUVmKHRZcSgyJHlJSW5aX2R9PkshWmY2VFRHa3t+
XntfMlhZR1JrfkJ1ZnRlZDctallsCnpOdTBsbVBtfWdfWllWNnZ7SDJhUT5tMlpAKCZ2bj9PNiQj
aFNHO29iYmhDRn49ODZXeEY2S2t7Nl8lWSs5d2hLcAp6YDY9aEtRMzRqcWtjWVg/ZGBUKGNTYUpH
Jms0b1lSLV5ZU3Qhak5RS2VYOS1xdk5hPnohJTlmekU2ZkVgM0A+bEoKejA4VDVtRy1mcUIza0p6
fmQ2RV9jYzZAMEFuRFNpT2sqbkdGT0MxZE0oekcmdzErdjBoe1dRQjt6UiNqKmc9YjF7CnoqeUUq
RkpmblpEaGU3fE1MVk94VFNzX0VfTGBPand3VD1oYmhWZH5SPFkmenhBa1ZMaXB9ZndUS3dNe19u
dyU7TAp6RCNvZUQ4S3NDWl8/SWd4endhQExKdD50aGtuJUFTaVpVYjBCPS08aVI0NldDc1ZGSTc9
QElFc0NLd2wtXyYhb2YKejtCVmlXdGt9WjdoaUFjOTQ+ciVoYF5oOD9iXjFvMTl+fU8yKVJ+TFgl
M0xmZ1QpYyFrUFF4Zz1DZj5NSnpVJG9nCnptNWFRX1hWeGA3PDE3Nm9aPWRDZ2ZHQHU/UkRFTUo7
MCo/aSlnVVk1WHg/JGJMQzB4K2lqUlhoM3lYakg7fl4lVAp6OVFUdWM1fH5SSXZGUlYjPE9LZWY2
Z35RU2Q8clchS1olWXsoZWRkaDhSI0BWS0pBfGNYe0t9M3RGR1VGZDt8Sl4KejUreH0jX3tWWG8y
Wlp6RVZYQWQoZW1STEk4YUBsRXphOHJAO3tjVEshSkhueEtPUDZeOzVoJW4xJWlKdUNkRyU0Cno9
N1J2X24tN1cxMmMtb0dSUnN4UzFxcUJGTzxTN31mZVJBaDFCdk4zT3llTSpxKE5sPCVFUkdWdUgp
MDc0X1hVKQp6XnIoMmVqRyozZXt9bEMzKF9vfnRaeCgoOHdaWHtTJG8zK2JsYEEme2JldXwkT0Nv
JVJoK3Q5PztlZ0h0YmokJnIKejEzQ3dFOWY5dVRCRU5RPWR2RiNKd0xyfDxHKFNzKk5nUERhZzRC
M3lNcXBGLU9SWDxtSGE3YWdvVSNaNHMpUSN3CnowNmVEQlM1ej8kSFZ8VC1QWiZjIXlsKks5a2B7
MlVeYDM9ISQ8KTFrQCpQfSReNnFBeDA2fURnNHdDe0FxTD4xYQp6Z05ldExXUH5kMk9UdjhJWDRj
aD5MU01pbUg0TWRXdHFHUCpuXjU4aFlaRj4rdXVpNig7a0J9dHE9TFZzaFFHSUEKejRLRDg0eyR8
Unx4RU1YUmlqT0xHRVU0PyshNHskeSpgejsqVmVCRDcxeStKJVV4QioxaWElI3JZdjwyLShFYzFF
CnpzUnVIUnpAa3V1NUs0YFV1T3srQEctaSUzSldqelBCN3krRzN4JmtDbj5wQ1IjUmlqQmctPkRF
ejhmbVRkP3xvJQp6TjVIPkFRNHNuWkRiaTVOLXo5a3dQcEFvO0hoc1ZUeXZ8czIjQGR6YFlnclRs
QFdVanFsP31IKEpiIykqJEIlQnIKelJyVFBNQWFxa0VvSGJAcVErdEhDVkd8Q1B5Tjl2Rk5jcyMk
MWpBVDlzQ0dTJmshQmMleDM9eVEjSHFKLUhyeUBTCnphNFUkRkhCMzBkeDg1cV9ZRig/Vzg1YU8w
OGYtMSZqb31DaERMX1omWlFSSShARHVATTgqJEZDMHlUVmpZc1pjRQp6aHFYOWEjWENZQkFJZVNm
cH4+cWFDZENoIWl+MHl0IWtEMHxAWnF4N2p0fXBYbi1WKWxUIXw2PU8keDtCQGQreTwKekVAfHg7
QHhqSW13dSV3VyUyOyhlRFpBUjZYSj5BNFF8N21nb3RhPUBaREp7WCNFbFYzezJNbUVaM3U8SUJ2
JnY8CnpqMShkYUY8LTVNUD9qdm40VnZGcXd9djVtZ2JJUnZybGp3eVpIP2g8eGU/RkFfMk8hSzd8
RTg5S3J0KzdqMWo+Uwp6Rl5ORUs3ZHU+aDxSTUBCUkFDX3FoOyh1ZiFibSZNbDQjSTltUT07MFBI
MWU0Mj4laWNXNCNvfjVDQiZqUj1+QkwKeil7RDVkUG97aXJyK0lOejVMcCVeK0JlPykzV3Q7XnJY
KGxqJVg4SSlxM01zOWVPOTdodno5fGtPS2hQX3QjXj5xCnpqeGtvI1V1WlNAVFpYaXw2fk1hWWh9
Nyp3azdtcXdjU0Feal54SS1aQ25qM05YMz9UMyRASTVuVGpKSi1UJSFqeAp6Zzk+Kk9hX2hYYFNq
Wjw8TEYrTV9zMiMzQW58N2pZYU5iNVU0YzNxaipodlFgOWo7M3t0WVlsbkxHZkB1Q0JzNTQKempG
V2hIamJnIVE7I2YoSzczcVMpcTtufnNJPGZFJiF+JHwrIUhFU1k3OU9UcDIoTVF4bjM1TF5kcDsj
WjU8dytyCnpOOz5+YzhgTHU0cHc+YUheVXBrQnw0Z1JpIU9EUjk7Nm5hPC1IPDwxIWI1XjZzUig2
P0ZiWjttM3J8JFRXVVdDaAp6T1kzXzRmVnF1SFAyZlFJd3MkNlYwazdAaEFHUzlDR3tWTyNAc0Zp
LS01RCZVVzF0N092K3V6JTVNNyZyZ3p4IVMKemE3dWpTNlU/WXNpR2VKdz51eGpZQiM+akVkITgk
e1Q4YW8rQmU5SUZ5Xlg/fSswPm5iRXY9ZyM0d28wQEd7UEdkCnpYbCg3PjQwVFZPJnozSWVEO29S
RGRDOVRFZWEhamU4diU0REFKPmBBYnJQP2N6ZlIoSFg/P0QrQHRKdE1UPEBpQAp6M1gkQEJMNDk4
VzM/TlAkOCE0X2teU1Z8cFE0dFA8QkVtRUVxZDNeQzNqWHQzdiFDbjU3Qk58I3g5eENrT1ZYY0wK
eitUVnBZbkVxVH1tQm5yWDdoVVROaVFHbGtUeSlKdipCKT9tRSFGK2MrWjBffU9aVVhyP3djVnVy
aDV8UWRxJk12Cnpscnk5Xzw3UCg/aCZyP0I0LWBEKFYmeSkrMTRWYVdkPipDOU19akxERiFOalk/
YlRiR01fUSkySV5BPGk+Z1V8cgp6KTtyOTZQem9eajBrI0c5eG5FWDJsYG9qIXZkfSNsX2V9anBZ
T28pRzl+VmskISVlaEIxc3ZIdSsqV1p9KnMlX1gKejNlXkZ6Y3N0RlB3dG8/WXBjfHlrX2pUVmkr
R1V6KnlOLSpVTSUhOTVsNU1QSnIxMEBOaXRhSVZgVmRvbCVpOGNyCnpYSVVgUiszYCZzTGVNcldl
MCktX1hnU2ItTyFUVUNFSjE9P2Z4S3EqeXdnISZQSlBAMUR3X3p+S157VFhBQUVUcgp6cTUpY3FO
R2lIKiE5d0NVITA7bW9zcGclbDlPfSN2eURITzNtUXVDSkZxZnFRYj1OcVRYPGZeOF9nJFJwez5R
bjkKemkqcyQxJEB3fT16Ul81QUp6PUIwTFotRUs/Sk5WcTlGeU9GQ1p+P2NIXn02ZVVBSUcjYG5P
cHt0b2h4I3t6VHMrCnpxIWc9RFNneiQ/PzA5SGtUVURgbzZ8ZHpfU2V+QypUd2YzKmwjajUyKXsx
Kz89VW48b2Z7aEdNKSFOIXA0b3g4Qwp6ZnRldk9yO01BZnV8d0V4Ylp0YFJhQ1NBWillU210dW1F
RXtAMnxuITQyIz1MMUVQUkJ7JktgPWNfZX5Saz9ofFkKej9KJVl1OzVeX1Ijejt+blMzKzg9SG84
NWhDcGZJVU81LUI4bTRhbGVgX2UyNj5RYSF9KDNyVXRxYFEpVzxpYXk5Cno7cGlgaVNrQldoKlN7
QWhiOFdEVWlmdm5rI29nPnFnfHtGcWIqSTkrZzloRUhARXMycTkwWWxBTG5qTmEyNnE8Ngp6eU1z
Rm0rK2hjSTQoPVM+YiVlWFMyejFRQEpzaStrZkRTcEpiM29eU3R8UVEkVDsjV2liR0Q2Jl58T1Mx
O29POTYKelVgSmRYUTBGRmVaby1HT0ZFSlNXSzE7e21wcjZvK3YoMlBkaHFHLXM+dm5gWW9PTCsr
ejtNPzFHJmRmU3V8YUo7Cno1NkB8fD9NTz08KG1KR2ROYypzbV85bylxIWVeZD1QUWR8VDhLfD8k
cGUmS3B0MEYyO05gUHEwNnduSXVjI1Bmdwp6bD5NTzdLQGJQbWhwZ0JkMGN6UW05VkxeJiM8eWh1
MWxMPmg/NUgpKjQoNTNmPk5zQj1Caj19UDNGYWZOWVdffHUKeklDZzIwdUZ+WURBYW5qTXB+RFpf
RnJ1eTFTTGB1ZClMfiNnTjFTa0smU0duUF9pYno4STFaeHs3Uzk7K3pJYn1PCno5TzQ4QClPbkpB
K1dLUWYyKVVfVGNTXlhZQnFKUU9HJH13MUBlVWhWdH49TWdvKn0wQUQhSn5xTkFrdEFtPHRodgp6
Tm0kISVpfVJNfG8zcmM5SHtaNG1sak9RTE9jSCFrTk42ai1jSSF4SjhgTHJeeVNmMEkrb2t4Qmta
PXZ0KVYzOUAKelppTERyYiFTbmxqfVI8O1dsRSpoell9VlVRZ15VJnpRMy0lS2VIX3lWT1Nwa1JB
OStTK2BVUiFobkRGWUV3fEx6CnotQX5lM3J8Kko2SUxWcUlHai1eTHMhU0V3WT81UXFKZjclNWRv
UztJYEx3UGtjRz07WHIhYndUSS1RMT5AKncqKAp6RHtSKWdfM349LXRnajsmUmh0KUp2MSQmWXBz
ej18cVIhY0tfU1RTLV59S3pDbl9ISnk7bGoxOzdxXkBwXkMwRXEKeiViJWpxUVlyNCY3bCtNcCto
d1lNNGB1NFRESFJJQjFhVD9ZRUUyYlo1VD1CaFNPdyNNckJ2dWxNdlp8QHQjMFdvCno5aUg1aE9M
fXV8PDQpKTQtSEd5fFdwTjRiXjxpY2Rja3dmaVZhQnElQmtqeU94Y01yZzBGbHJNdU40eGRTNSo9
SAp6T0p6Wj81VmFIbE0rZ2tsT0UzblpYe3dWRDx9c3cwYVooVUw4UkYlZCt8eHVBIUU4MFQ4UUNW
MmwpME1SdHxxc3UKeiQkZD5pKTdoOVMpc0lOO28rV3ZoISVgVDFFSm8pbGIrMihzMjhkdDs3Qkp+
M2w2fCVIQkFHYW0+X29CPyR4YkJTCnpmeX55c0UwVyg4cWpNczt2cS1NKHleemVlPyNDemAoJCg2
V15zZCVpeGJ+YzR6V0dgVWNsYWRJdE1BfkZlTzxFZQp6VTI/KCg8OGNIcVokUHlkQ0J2fTQhVGxG
RHRaWWBJWH5SbE9aUjBKI08yJD9QTzl2WV8zPihjdTtfTnVGOWNjfEUKel9tZSkhbEt2KyF2NW1l
OSVJLSZmYSMoel5wTnZMSGUyXndOJXdjclBOZCt9cl42bHhJVH5zKVh1JDA+WE9aM2pECnphUU5D
aTJ1XzdfRCVeY1MtQmdjflQ9I1Q1N0BLVk5yMyYxXz8+TzUkODRrKnpHay1EanRCMiNENUI8Jkcm
ZGxjYQp6V1l2fmtFUTZWfF4/eWxmWjllelcpe3VPPCs+YFVudnw1bmN2emV5VWFXS3d+a2BEQlhy
IVNzcjUpTzNzK0s4cmsKekxufEFXczZUe1JjKE1Tem1mSUJSU08/fnEpSCRJUUwjSSRYMHp5eSs7
TT1yOGp2TTZ2KV9RIUQ5UUszS0RDWEpuCnooQGdvYExaXiM2Jjs4M2EoUCRvZ25RdnJEYDZkYHl7
TElCfGRibWtga1hwQk9TUUY2PiFTMnZtd18kdDtfNCgzbgp6K1pIJkNIa3N0QE9NRVg1TT90T3wz
I2pIUkdGU1V5K0UwRTc8TDY8UCpWdihhX3x9NTxQeV9vYFR+LXpzVDB0S2IKeiErYTRCIT8tej9M
NlNFSDZZQyZQJS0pRkNJdiRwd2BTSiNyNG1QbHxrVTF4ZSlveGd7VXR4Z3hjYF48PShOfiFiCnpo
V00kQ2R6I0VQaV94cT1wOEB3QXA2T0N4WFMocGBUPTdkWDJ2Mjg1PyhAPXt6VS03QnRhZ3dPfE0h
c21meXk1TQp6U15zV2t1NXF1VHFZfCZxRjdJODhiUTw9MWR6MFpMJWZxPGQ/aFc4YF9hfU9ybiFX
Nm1Ja3hZMXh1a3tfKTQ2ajQKelAwISNwZWFicX04ZzZkcW4+VUJna35+akZ6WGEocEVHPnNwUkJQ
N1hYX04kY204KW1KR2hGNTExITdJX0BHP29tCnpLaDNUIzc8VS1nKT9NPlBlWHo5IykqQyhCJWx7
bV97NWtzZEJTIWthJiFYUjZ5LWZEbGYxZHM0KSF+Yj95fGNJUAp6NXl2TVZlfiRYWWVmV0Z1X0M1
YVg/QndOI1hiLU9NenUtcWw8bVckcmB9aFghejU0aUtAOSs8eGBSUGteelc9WVEKemh5UGxpPTZf
eys0NShieXt7ZmcyWCQ3TSMtQV9OUHtsfiNocjFRS1FGPkpYXyNnZWV5cm5xam8keWI0fnItfm9N
CnoxU01RWkZ0fTg4ITxeLSZYNyM8KHBGeUIkM3JwT0cqWjxEd1pQKXEha0NPM3FiWUkycTt6aGlU
d1NrVG55fkJpJgp6LXAwfHphIWglYm9MNElSVVpMJilYLSMjVU4qY1AqRy1vTyFWRTw4PUh7b3dU
aCg4QmVNTnlmeTc9Y2IqNDh5bj4KenJzfn5aLV44bXJYbT4/cHFXfWJQVSQ1QnFlSHtLVihGK1V2
aWw9e3s9QClTeHJkTGgtaHB2anwkMW55WHZLYDl6CnpDdXNeWlFPc21oUHEoUClGSj5tdUA2I3pS
PjJWOSRKTSZuaTY/al50bj0oS0Z6PTkmPUNrZ3o0ckwyWCs8YHpONAp6RFlEcERKaXE+SzUtcF4x
ZzgqTDlOd0RtNCl4MkVAVHg1QkFWN3RSOElDLWZKZjdrUk5OXjVHPE9mPGpLIXdQeVcKemw2KlhG
NEU3PzhOMHtCNmt9MW5Ie0ZXcjZ4Jj5DZGxPZyNLZmEjaTk7bFBzWFZxdVcpRVdPKSZGSiYtbDBM
UzhVClM5MDh8MWVmMG1SPlkmVz5eOGYoQTJ4SWE5CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9wcm90b2NvbC5zdmcgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvZG9jcy9wcm90b2NvbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi41MWJmZDk4MmJlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
ZG9jcy9wcm90b2NvbC5zdmcKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KKzwhRE9DVFlQRSBzdmcgUFVCTElDICIt
Ly9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8x
LjEvRFREL3N2ZzExLmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIg
dmlld0JveD0iMCAwIDYyNC4zNDY0NiA4MjIuMzQ2NDYiIHdpZHRoPSI2MjQuMzQ2NDZwdCIgaGVp
Z2h0PSI4MjIuMzQ2NDZwdCIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8x
LjEvIj48bWV0YWRhdGE+IFByb2R1Y2VkIGJ5IE9tbmlHcmFmZmxlIDYuNi4yIDxkYzpkYXRlPjIw
MTktMDctMDcgMDg6Mzg6MjQgKzAwMDA8L2RjOmRhdGU+PC9tZXRhZGF0YT48ZGVmcz48Zm9udC1m
YWNlIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9IjEyIiBwYW5vc2UtMT0iMiAxMSA2
IDQgMyA1IDQgNCAyIDQiIHVuaXRzLXBlci1lbT0iMTAwMCIgdW5kZXJsaW5lLXBvc2l0aW9uPSIt
ODcuODkwNjI1IiB1bmRlcmxpbmUtdGhpY2tuZXNzPSI1OC41OTM3NSIgc2xvcGU9IjAiIHgtaGVp
Z2h0PSI1NDUuNDEwMTYiIGNhcC1oZWlnaHQ9IjcyNy4wNTA4IiBhc2NlbnQ9IjEwMDUuMzcxMSIg
ZGVzY2VudD0iLTIwOS45NjA5NCIgZm9udC13ZWlnaHQ9IjUwMCI+PGZvbnQtZmFjZS1zcmM+PGZv
bnQtZmFjZS1uYW1lIG5hbWU9IlZlcmRhbmEiLz48L2ZvbnQtZmFjZS1zcmM+PC9mb250LWZhY2U+
PGZvbnQtZmFjZSBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIHBhbm9z
ZS0xPSIyIDcgMyA5IDIgMiA1IDIgNCA0IiB1bml0cy1wZXItZW09IjEwMDAiIHVuZGVybGluZS1w
b3NpdGlvbj0iLTIzMi45MTAxNiIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iNDEuMDE1NjI1IiBzbG9w
ZT0iMCIgeC1oZWlnaHQ9IjQyMi44NTE1NiIgY2FwLWhlaWdodD0iNTcxLjI4OTA2IiBhc2NlbnQ9
IjgzMi41MTk1MyIgZGVzY2VudD0iLTMwMC4yOTI5NyIgZm9udC13ZWlnaHQ9IjUwMCI+PGZvbnQt
ZmFjZS1zcmM+PGZvbnQtZmFjZS1uYW1lIG5hbWU9IkNvdXJpZXJOZXdQU01UIi8+PC9mb250LWZh
Y2Utc3JjPjwvZm9udC1mYWNlPjxmb250LWZhY2UgZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBm
b250LXNpemU9IjEyIiBwYW5vc2UtMT0iMiA3IDYgOSAyIDIgNSAyIDQgNCIgdW5pdHMtcGVyLWVt
PSIxMDAwIiB1bmRlcmxpbmUtcG9zaXRpb249Ii0yMzIuOTEwMTYiIHVuZGVybGluZS10aGlja25l
c3M9IjEwMC4wOTc2NTYiIHNsb3BlPSIwIiB4LWhlaWdodD0iNDQzLjM1OTM4IiBjYXAtaGVpZ2h0
PSI1OTEuNzk2ODgiIGFzY2VudD0iODMyLjUxOTUzIiBkZXNjZW50PSItMzAwLjI5Mjk3IiBmb250
LXdlaWdodD0iYm9sZCI+PGZvbnQtZmFjZS1zcmM+PGZvbnQtZmFjZS1uYW1lIG5hbWU9IkNvdXJp
ZXJOZXdQUy1Cb2xkTVQiLz48L2ZvbnQtZmFjZS1zcmM+PC9mb250LWZhY2U+PGZvbnQtZmFjZSBm
b250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAiIHBhbm9zZS0xPSIyIDcgMyA5
IDIgMiA1IDIgNCA0IiB1bml0cy1wZXItZW09IjEwMDAiIHVuZGVybGluZS1wb3NpdGlvbj0iLTIz
Mi45MTAxNiIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iNDEuMDE1NjI1IiBzbG9wZT0iMCIgeC1oZWln
aHQ9IjQyMi44NTE1NiIgY2FwLWhlaWdodD0iNTcxLjI4OTA2IiBhc2NlbnQ9IjgzMi41MTk1MyIg
ZGVzY2VudD0iLTMwMC4yOTI5NyIgZm9udC13ZWlnaHQ9IjUwMCI+PGZvbnQtZmFjZS1zcmM+PGZv
bnQtZmFjZS1uYW1lIG5hbWU9IkNvdXJpZXJOZXdQU01UIi8+PC9mb250LWZhY2Utc3JjPjwvZm9u
dC1mYWNlPjxtYXJrZXIgb3JpZW50PSJhdXRvIiBvdmVyZmxvdz0idmlzaWJsZSIgbWFya2VyVW5p
dHM9InN0cm9rZVdpZHRoIiBpZD0iU3RpY2tBcnJvd19NYXJrZXIiIHZpZXdCb3g9Ii0xIC00IDgg
OCIgbWFya2VyV2lkdGg9IjgiIG1hcmtlckhlaWdodD0iOCIgY29sb3I9ImJsYWNrIj48Zz48cGF0
aCBkPSJNIDUuODY2NjY2NyAwIEwgMCAwIE0gMCAtMi4yIEwgNS44NjY2NjY3IDAgTCAwIDIuMiIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48
L21hcmtlcj48cmFkaWFsR3JhZGllbnQgY3g9IjAiIGN5PSIwIiByPSIxIiBpZD0iR3JhZGllbnQi
IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29s
b3I9IndoaXRlIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjYTVhNWE1Ii8+PC9yYWRp
YWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9Ik9ial9HcmFkaWVudCIgeGw6aHJlZj0iI0dy
YWRpZW50IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDMxMS44MTEwMiA3MDguNjYxNCkg
c2NhbGUoMTQ1Ljc1NzAzKSIvPjxtYXJrZXIgb3JpZW50PSJhdXRvIiBvdmVyZmxvdz0idmlzaWJs
ZSIgbWFya2VyVW5pdHM9InN0cm9rZVdpZHRoIiBpZD0iU3RpY2tBcnJvd19NYXJrZXJfMiIgdmll
d0JveD0iLTEgLTYgMTQgMTIiIG1hcmtlcldpZHRoPSIxNCIgbWFya2VySGVpZ2h0PSIxMiIgY29s
b3I9ImJsYWNrIj48Zz48cGF0aCBkPSJNIDEyIDAgTCAwIDAgTSAwIC00LjUgTCAxMiAwIEwgMCA0
LjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiLz48
L2c+PC9tYXJrZXI+PG1hcmtlciBvcmllbnQ9ImF1dG8iIG92ZXJmbG93PSJ2aXNpYmxlIiBtYXJr
ZXJVbml0cz0ic3Ryb2tlV2lkdGgiIGlkPSJTdGlja0Fycm93X01hcmtlcl8zIiB2aWV3Qm94PSIt
MSAtNCA4IDgiIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjgiIGNvbG9yPSJibGFjayI+
PGc+PHBhdGggZD0iTSA1LjkyNTMzMzMgMCBMIDAgMCBNIDAgLTIuMjIyIEwgNS45MjUzMzMzIDAg
TCAwIDIuMjIyIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRo
PSIxIi8+PC9nPjwvbWFya2VyPjwvZGVmcz48ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS1vcGFjaXR5
PSIxIiBzdHJva2UtZGFzaGFycmF5PSJub25lIiBmaWxsPSJub25lIiBmaWxsLW9wYWNpdHk9IjEi
Pjx0aXRsZT5DYW52YXMgMTwvdGl0bGU+PHJlY3QgZmlsbD0id2hpdGUiIHdpZHRoPSIxMzE0IiBo
ZWlnaHQ9IjE2OTgiLz48Zz48dGl0bGU+TGF5ZXIgMTwvdGl0bGU+PHJlY3QgeD0iMjguMzQ2NDU3
IiB5PSI3NjUuMzU0MzMiIHdpZHRoPSI1NjYuOTI5MTMiIGhlaWdodD0iMjguMzQ2NDU3IiBmaWxs
PSIjNmNmIi8+PHJlY3QgeD0iMjguMzQ2NDU3IiB5PSI3NjUuMzU0MzMiIHdpZHRoPSI1NjYuOTI5
MTMiIGhlaWdodD0iMjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91
bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoMzMuMzQ2NDU3IDc3Mi4wMjc1NSkiIGZpbGw9ImJsYWNrIj48dHNw
YW4gZm9udC1mYW1pbHk9IlZlcmRhbmEiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAi
IHg9IjIyOC41MDc1MyIgeT0iMTIiIHRleHRMZW5ndGg9Ijk5LjkxNDA2Ij5yZW1vdGUgZW5kcG9p
bnQ8L3RzcGFuPjwvdGV4dD48cmVjdCB4PSIyOC4zNDY0NTciIHk9Ijg1LjAzOTM3IiB3aWR0aD0i
NTY2LjkyOTEzIiBoZWlnaHQ9IjU2Ni45MjkxMyIgZmlsbD0id2hpdGUiLz48cmVjdCB4PSIyOC4z
NDY0NTciIHk9Ijg1LjAzOTM3IiB3aWR0aD0iNTY2LjkyOTEzIiBoZWlnaHQ9IjU2Ni45MjkxMyIg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDMzLjM0
NjQ1NyA5MC4wMzkzNykiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IlZlcmRhbmEi
IGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjI0My43OTE3MSIgeT0iMTIiIHRl
eHRMZW5ndGg9IjUxLjMzMzk4NCI+d2Vic29jazwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJW
ZXJkYW5hIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSIyOTUuMDA4NTEiIHk9
IjEyIiB0ZXh0TGVuZ3RoPSIxOC4xMjg5MDYiPmV0czwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5
PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMTk1LjY1
MTA5IiB5PSIyNSIgdGV4dExlbmd0aD0iMTY1LjYyNjk1Ij5XZWJTb2NrZXRDb21tb25Qcm90b2Nv
bDwvdHNwYW4+PC90ZXh0PjxyZWN0IHg9IjI4LjM0NjQ1NyIgeT0iMjguMzQ2NDU3IiB3aWR0aD0i
NTY2LjkyOTEzIiBoZWlnaHQ9IjI4LjM0NjQ1NyIgZmlsbD0iIzZmNiIvPjxyZWN0IHg9IjI4LjM0
NjQ1NyIgeT0iMjguMzQ2NDU3IiB3aWR0aD0iNTY2LjkyOTEzIiBoZWlnaHQ9IjI4LjM0NjQ1NyIg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDMzLjM0
NjQ1NyAzNS4wMTk2ODUpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJWZXJkYW5h
IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSIyMzAuMDA0NiIgeT0iMTIiIHRl
eHRMZW5ndGg9Ijk2LjkxOTkyIj5hcHBsaWNhdGlvbiBsb2dpYzwvdHNwYW4+PC90ZXh0PjxwYXRo
IGQ9Ik0gMTAyLjA0NzI0MyA1ODYuNzcxNjUgTCAyMzguMTEwMjMgNTg2Ljc3MTY1IEMgMjQ3LjQ5
ODU4IDU4Ni43NzE2NSAyNTUuMTE4MTEgNTk2LjkzMTAyIDI1NS4xMTgxMSA2MDkuNDQ4OCBDIDI1
NS4xMTgxMSA2MjEuOTY2NiAyNDcuNDk4NTggNjMyLjEyNTk4IDIzOC4xMTAyMyA2MzIuMTI1OTgg
TCAxMDIuMDQ3MjQzIDYzMi4xMjU5OCBDIDkyLjY1ODg5NyA2MzIuMTI1OTggODUuMDM5MzcgNjIx
Ljk2NjYgODUuMDM5MzcgNjA5LjQ0ODggQyA4NS4wMzkzNyA1OTYuOTMxMDIgOTIuNjU4ODk3IDU4
Ni43NzE2NSAxMDIuMDQ3MjQzIDU4Ni43NzE2NSIgZmlsbD0iI2ZjNiIvPjxwYXRoIGQ9Ik0gMTAy
LjA0NzI0MyA1ODYuNzcxNjUgTCAyMzguMTEwMjMgNTg2Ljc3MTY1IEMgMjQ3LjQ5ODU4IDU4Ni43
NzE2NSAyNTUuMTE4MTEgNTk2LjkzMTAyIDI1NS4xMTgxMSA2MDkuNDQ4OCBDIDI1NS4xMTgxMSA2
MjEuOTY2NiAyNDcuNDk4NTggNjMyLjEyNTk4IDIzOC4xMTAyMyA2MzIuMTI1OTggTCAxMDIuMDQ3
MjQzIDYzMi4xMjU5OCBDIDkyLjY1ODg5NyA2MzIuMTI1OTggODUuMDM5MzcgNjIxLjk2NjYgODUu
MDM5MzcgNjA5LjQ0ODggQyA4NS4wMzkzNyA1OTYuOTMxMDIgOTIuNjU4ODk3IDU4Ni43NzE2NSAx
MDIuMDQ3MjQzIDU4Ni43NzE2NSBNIDIzOC4xMTAyMyA1ODYuNzcxNjUgQyAyMjguNzIxODkgNTg2
Ljc3MTY1IDIyMS4xMDIzNiA1OTYuOTMxMDIgMjIxLjEwMjM2IDYwOS40NDg4IEMgMjIxLjEwMjM2
IDYyMS45NjY2IDIyOC43MjE4OSA2MzIuMTI1OTggMjM4LjExMDIzIDYzMi4xMjU5OCIgc3Ryb2tl
PSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBz
dHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyNS4zMzA3MSA1
OTYuOTQ4OCkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBm
b250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMTQuODk2NDg0IiB5PSIxMCIgdGV4
dExlbmd0aD0iNDMuMjA3MDMiPnJlYWRlcjwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3Vy
aWVyIE5ldyIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iLjQ5NDE0MDYyIiB5
PSIyMiIgdGV4dExlbmd0aD0iNzIuMDExNzIiPlN0cmVhbVJlYWRlcjwvdHNwYW4+PC90ZXh0Pjxw
YXRoIGQ9Ik0gMzg1LjUxMTggNTg2Ljc3MTY1IEwgNTIxLjU3NDggNTg2Ljc3MTY1IEMgNTMwLjk2
MzE1IDU4Ni43NzE2NSA1MzguNTgyNjcgNTk2LjkzMTAyIDUzOC41ODI2NyA2MDkuNDQ4OCBDIDUz
OC41ODI2NyA2MjEuOTY2NiA1MzAuOTYzMTUgNjMyLjEyNTk4IDUyMS41NzQ4IDYzMi4xMjU5OCBM
IDM4NS41MTE4IDYzMi4xMjU5OCBDIDM3Ni4xMjM0NiA2MzIuMTI1OTggMzY4LjUwMzkzIDYyMS45
NjY2IDM2OC41MDM5MyA2MDkuNDQ4OCBDIDM2OC41MDM5MyA1OTYuOTMxMDIgMzc2LjEyMzQ2IDU4
Ni43NzE2NSAzODUuNTExOCA1ODYuNzcxNjUiIGZpbGw9IiNmYzYiLz48cGF0aCBkPSJNIDM4NS41
MTE4IDU4Ni43NzE2NSBMIDUyMS41NzQ4IDU4Ni43NzE2NSBDIDUzMC45NjMxNSA1ODYuNzcxNjUg
NTM4LjU4MjY3IDU5Ni45MzEwMiA1MzguNTgyNjcgNjA5LjQ0ODggQyA1MzguNTgyNjcgNjIxLjk2
NjYgNTMwLjk2MzE1IDYzMi4xMjU5OCA1MjEuNTc0OCA2MzIuMTI1OTggTCAzODUuNTExOCA2MzIu
MTI1OTggQyAzNzYuMTIzNDYgNjMyLjEyNTk4IDM2OC41MDM5MyA2MjEuOTY2NiAzNjguNTAzOTMg
NjA5LjQ0ODggQyAzNjguNTAzOTMgNTk2LjkzMTAyIDM3Ni4xMjM0NiA1ODYuNzcxNjUgMzg1LjUx
MTggNTg2Ljc3MTY1IE0gNTIxLjU3NDggNTg2Ljc3MTY1IEMgNTEyLjE4NjQ1IDU4Ni43NzE2NSA1
MDQuNTY2OTMgNTk2LjkzMTAyIDUwNC41NjY5MyA2MDkuNDQ4OCBDIDUwNC41NjY5MyA2MjEuOTY2
NiA1MTIuMTg2NDUgNjMyLjEyNTk4IDUyMS41NzQ4IDYzMi4xMjU5OCIgc3Ryb2tlPSJibGFjayIg
c3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lk
dGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwOC43OTUyNyA1OTYuOTQ4OCki
IGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9
IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMTQuODk2NDg0IiB5PSIxMCIgdGV4dExlbmd0aD0i
NDMuMjA3MDMiPndyaXRlcjwvdHNwYW4+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIg
Zm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iLjQ5NDE0MDYyIiB5PSIyMiIgdGV4
dExlbmd0aD0iNzIuMDExNzIiPlN0cmVhbVdyaXRlcjwvdHNwYW4+PC90ZXh0PjxwYXRoIGQ9Ik0g
NDgxLjg4OTc2IDQxOS41Mjc1NiBMIDQ4MS44ODk3NiAzNzQuMTczMjMgQyA0ODEuODg5NzYgMzcx
LjA0Mzc4IDQ2OS4xOTA1NSAzNjguNTAzOTMgNDUzLjU0MzMgMzY4LjUwMzkzIEMgNDM3Ljg5NjA2
IDM2OC41MDM5MyA0MjUuMTk2ODUgMzcxLjA0Mzc4IDQyNS4xOTY4NSAzNzQuMTczMjMgTCA0MjUu
MTk2ODUgNDE5LjUyNzU2IEMgNDI1LjE5Njg1IDQyMi42NTcgNDM3Ljg5NjA2IDQyNS4xOTY4NSA0
NTMuNTQzMyA0MjUuMTk2ODUgQyA0NjkuMTkwNTUgNDI1LjE5Njg1IDQ4MS44ODk3NiA0MjIuNjU3
IDQ4MS44ODk3NiA0MTkuNTI3NTYiIGZpbGw9IiNmZWNjNjYiLz48cGF0aCBkPSJNIDQ4MS44ODk3
NiA0MTkuNTI3NTYgTCA0ODEuODg5NzYgMzc0LjE3MzIzIEMgNDgxLjg4OTc2IDM3MS4wNDM3OCA0
NjkuMTkwNTUgMzY4LjUwMzkzIDQ1My41NDMzIDM2OC41MDM5MyBDIDQzNy44OTYwNiAzNjguNTAz
OTMgNDI1LjE5Njg1IDM3MS4wNDM3OCA0MjUuMTk2ODUgMzc0LjE3MzIzIEwgNDI1LjE5Njg1IDQx
OS41Mjc1NiBDIDQyNS4xOTY4NSA0MjIuNjU3IDQzNy44OTYwNiA0MjUuMTk2ODUgNDUzLjU0MzMg
NDI1LjE5Njg1IEMgNDY5LjE5MDU1IDQyNS4xOTY4NSA0ODEuODg5NzYgNDIyLjY1NyA0ODEuODg5
NzYgNDE5LjUyNzU2IE0gNDgxLjg4OTc2IDM3NC4xNzMyMyBDIDQ4MS44ODk3NiAzNzcuMzAyNjcg
NDY5LjE5MDU1IDM3OS44NDI1MiA0NTMuNTQzMyAzNzkuODQyNTIgQyA0MzcuODk2MDYgMzc5Ljg0
MjUyIDQyNS4xOTY4NSAzNzcuMzAyNjcgNDI1LjE5Njg1IDM3NC4xNzMyMyIgc3Ryb2tlPSJibGFj
ayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Ut
d2lkdGg9Ii43NSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDQyOS4xOTY4NSAzODcuMTg1
MDQpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1z
aXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iNi4zNDM1MjciIHk9IjEwIiB0ZXh0TGVuZ3Ro
PSIzNi4wMDU4NiI+cGluZ3M8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXci
IGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjEyLjM0NDUwMzQiIHk9IjIyIiB0
ZXh0TGVuZ3RoPSIyNC4wMDM5MDYiPmRpY3Q8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDg1LjAz
OTQxMyAyODMuNDY0NTcgTCAyNTUuMTE4MDYgMjgzLjQ2NDU3IEMgMjcwLjc3MzQgMjgzLjQ2NDU3
IDI4My40NjQ1NyAyOTYuMTU1NzMgMjgzLjQ2NDU3IDMxMS44MTEwNyBMIDI4My40NjQ1NyA0ODEu
ODg5NzIgQyAyODMuNDY0NTcgNDk3LjU0NTA2IDI3MC43NzM0IDUxMC4yMzYyMiAyNTUuMTE4MDYg
NTEwLjIzNjIyIEwgODUuMDM5NDEzIDUxMC4yMzYyMiBDIDY5LjM4NDA3NCA1MTAuMjM2MjIgNTYu
NjkyOTEzIDQ5Ny41NDUwNiA1Ni42OTI5MTMgNDgxLjg4OTcyIEwgNTYuNjkyOTEzIDMxMS44MTEw
NyBDIDU2LjY5MjkxMyAyOTYuMTU1NzMgNjkuMzg0MDc0IDI4My40NjQ1NyA4NS4wMzk0MTMgMjgz
LjQ2NDU3IFoiIGZpbGw9IiNkYWRhZGEiLz48cGF0aCBkPSJNIDg1LjAzOTQxMyAyODMuNDY0NTcg
TCAyNTUuMTE4MDYgMjgzLjQ2NDU3IEMgMjcwLjc3MzQgMjgzLjQ2NDU3IDI4My40NjQ1NyAyOTYu
MTU1NzMgMjgzLjQ2NDU3IDMxMS44MTEwNyBMIDI4My40NjQ1NyA0ODEuODg5NzIgQyAyODMuNDY0
NTcgNDk3LjU0NTA2IDI3MC43NzM0IDUxMC4yMzYyMiAyNTUuMTE4MDYgNTEwLjIzNjIyIEwgODUu
MDM5NDEzIDUxMC4yMzYyMiBDIDY5LjM4NDA3NCA1MTAuMjM2MjIgNTYuNjkyOTEzIDQ5Ny41NDUw
NiA1Ni42OTI5MTMgNDgxLjg4OTcyIEwgNTYuNjkyOTEzIDMxMS44MTEwNyBDIDU2LjY5MjkxMyAy
OTYuMTU1NzMgNjkuMzg0MDc0IDI4My40NjQ1NyA4NS4wMzk0MTMgMjgzLjQ2NDU3IFoiIHN0cm9r
ZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIg
c3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MS42OTI5MTMg
Mjg4LjQ2NDU3KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXci
IGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI0My41NzUyOCIgeT0iMTAiIHRl
eHRMZW5ndGg9IjEyOS42MjEwOSI+dHJhbnNmZXJfZGF0YV90YXNrPC90c3Bhbj48dHNwYW4gZm9u
dC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEwIiBmb250LXdlaWdodD0iNTAwIiB4
PSI5Ni4zODM4NzMiIHk9IjIyIiB0ZXh0TGVuZ3RoPSIyNC4wMDM5MDYiPlRhc2s8L3RzcGFuPjwv
dGV4dD48cGF0aCBkPSJNIDI5Ny42Mzc4IDc2NS4zNTQzMyBMIDI5Ny42Mzc4IDYwOS40NDg4IEwg
MjU1LjExODExIDYwOS40NDg4IEwgMjY5LjAxODExIDYwOS40NDg4IEwgMjY2LjUxODExIDYwOS40
NDg4IiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJibGFjayIg
c3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lk
dGg9IjEuNSIvPjxwYXRoIGQ9Ik0gMzY4LjUwMzkzIDYwOS40NDg4IEwgMzU0LjYwMzkzIDYwOS40
NDg4IEwgMzI1Ljk4NDI1IDYwOS40NDg4IEwgMzI1Ljk4NDI1IDc1My45NTQzMyIgbWFya2VyLWVu
ZD0idXJsKCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2Fw
PSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0
aCBkPSJNIDIwNy4wMzQwMSA3MTIuMzE1NCBDIDE2MS4yMjA0NyA3MDguNjYxNCAxNzkuNDg5NzYg
Njc3LjkwMDk3IDI1Mi41NzI2IDY4My4xNDk2IEMgMjU5LjM1MzA3IDY3Mi45MTgzNSAzNDQuMzM4
NTggNjc0LjU3OSAzNDMuNzgzIDY4My4xNDk2IEMgMzk3LjA3MTUgNjcyLjE4NzcgNDY1LjE3MTAy
IDY5NC4wNDU1MyA0MTkuNDkzNTQgNzA1LjAwNzQ0IEMgNDc0LjMwNDI1IDcxMC4zMjIwNiA0MTgu
ODAxODkgNzM4Ljk1NjUgMzczLjgxODkgNzM0LjE3MzIyIEMgMzcwLjIxODkgNzQyLjE0NTg0IDI4
OS44MDI4MyA3NDQuOTM1OCAyODIuNzQ0NTcgNzM0LjE3MzIyIEMgMjM3LjIwODgyIDc0NS42Njcx
NSAxNDIuMjU5NTMgNzI3Ljk5NDYgMjA3LjAzNDAxIDcxMi4zMTU0IFoiIGZpbGw9InVybCgjT2Jq
X0dyYWRpZW50KSIvPjxwYXRoIGQ9Ik0gMjA3LjAzNDAxIDcxMi4zMTU0IEMgMTYxLjIyMDQ3IDcw
OC42NjE0IDE3OS40ODk3NiA2NzcuOTAwOTcgMjUyLjU3MjYgNjgzLjE0OTYgQyAyNTkuMzUzMDcg
NjcyLjkxODM1IDM0NC4zMzg1OCA2NzQuNTc5IDM0My43ODMgNjgzLjE0OTYgQyAzOTcuMDcxNSA2
NzIuMTg3NyA0NjUuMTcxMDIgNjk0LjA0NTUzIDQxOS40OTM1NCA3MDUuMDA3NDQgQyA0NzQuMzA0
MjUgNzEwLjMyMjA2IDQxOC44MDE4OSA3MzguOTU2NSAzNzMuODE4OSA3MzQuMTczMjIgQyAzNzAu
MjE4OSA3NDIuMTQ1ODQgMjg5LjgwMjgzIDc0NC45MzU4IDI4Mi43NDQ1NyA3MzQuMTczMjIgQyAy
MzcuMjA4ODIgNzQ1LjY2NzE1IDE0Mi4yNTk1MyA3MjcuOTk0NiAyMDcuMDM0MDEgNzEyLjMxNTQg
WiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49
InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDIx
Ny41OTg0MiA3MDEuMTYxNCkiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IlZlcmRh
bmEiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjY5LjgxNDE2IiB5PSIxMiIg
dGV4dExlbmd0aD0iNDguNzk2ODc1Ij5uZXR3b3JrPC90c3Bhbj48L3RleHQ+PHJlY3QgeD0iODUu
MDM5MzciIHk9IjQ1My41NDMzIiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIg
ZmlsbD0iI2ZmNiIvPjxyZWN0IHg9Ijg1LjAzOTM3IiB5PSI0NTMuNTQzMyIgd2lkdGg9IjE3MC4w
Nzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJy
b3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48dGV4dCB0
cmFuc2Zvcm09InRyYW5zbGF0ZSg5MC4wMzkzNyA0NjAuNzE2NTMpIiBmaWxsPSJibGFjayI+PHRz
cGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9
ImJvbGQiIHg9IjQ0LjAzMzUxIiB5PSIxMCIgdGV4dExlbmd0aD0iNzIuMDExNzIiPnJlYWRfZnJh
bWU8L3RzcGFuPjwvdGV4dD48cmVjdCB4PSI4NS4wMzkzNyIgeT0iMzk2Ljg1MDQiIHdpZHRoPSIx
NzAuMDc4NzQiIGhlaWdodD0iMjguMzQ2NDU3IiBmaWxsPSIjZmY2Ii8+PHJlY3QgeD0iODUuMDM5
MzciIHk9IjM5Ni44NTA0IiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIgc3Ry
b2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5k
IiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDkwLjAzOTM3
IDQwNC4wMjM2MikiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3
IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iYm9sZCIgeD0iMjYuMDMwNTgiIHk9IjEwIiB0
ZXh0TGVuZ3RoPSIxMDguMDE3NTgiPnJlYWRfZGF0YV9mcmFtZTwvdHNwYW4+PC90ZXh0PjxyZWN0
IHg9Ijg1LjAzOTM3IiB5PSIzNDAuMTU3NDgiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdodD0iMjgu
MzQ2NDU3IiBmaWxsPSIjZmY2Ii8+PHJlY3QgeD0iODUuMDM5MzciIHk9IjM0MC4xNTc0OCIgd2lk
dGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUi
Lz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5MC4wMzkzNyAzNDcuMzMwNykiIGZpbGw9ImJs
YWNrIj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250
LXdlaWdodD0iYm9sZCIgeD0iMzYuODMyMzM4IiB5PSIxMCIgdGV4dExlbmd0aD0iODYuNDE0MDYi
PnJlYWRfbWVzc2FnZTwvdHNwYW4+PC90ZXh0Pjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3
OC4wNzg3NCA0OTAuNTYzKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmll
ciBOZXciIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjAiIHk9IjgiIHRleHRM
ZW5ndGg9IjMwLjAwNDg4MyI+Ynl0ZXM8L3RzcGFuPjwvdGV4dD48dGV4dCB0cmFuc2Zvcm09InRy
YW5zbGF0ZSgxNzguMDc4NzQgNDMzLjg3MDA4KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZh
bWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjAi
IHk9IjgiIHRleHRMZW5ndGg9IjM2LjAwNTg2Ij5mcmFtZXM8L3RzcGFuPjwvdGV4dD48dGV4dCB0
cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzguMDc4NzQgMzcxLjY3NzE2KSIgZmlsbD0iYmxhY2siPjx0
c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0
PSI1MDAiIHg9IjAiIHk9IjgiIHRleHRMZW5ndGg9IjI0LjAwMzkwNiI+ZGF0YTwvdHNwYW4+PHRz
cGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9
IjUwMCIgeD0iMCIgeT0iMTkiIHRleHRMZW5ndGg9IjM2LjAwNTg2Ij5mcmFtZXM8L3RzcGFuPjwv
dGV4dD48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjUxMC4yMzYyMiIgd2lkdGg9IjE3MC4wNzg3NCIg
aGVpZ2h0PSIyOC4zNDY0NTciIGZpbGw9IiNmZjYiLz48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjUx
MC4yMzYyMiIgd2lkdGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxh
Y2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tl
LXdpZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzMuNTAzOTMgNTE3LjQw
OTQ1KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQt
c2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI0MC40MzI5MjQiIHk9IjEwIiB0ZXh0TGVu
Z3RoPSI3OS4yMTI4OSI+d3JpdGVfZnJhbWU8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDg1LjAz
OTM3IDYwOS40NDg4IEwgNzEuMTM5MzcgNjA5LjQ0ODggTCA1Ni42OTI5MTMgNjA5LjQ0ODggTCA1
Ni42OTI5MTMgNTk1LjI3NTYgTCA1Ni42OTI5MTMgNTY2LjkyOTEzIEwgMTEzLjM4NTgyNiA1NjYu
OTI5MTMgTCAxNzAuMDc4NzQgNTY2LjkyOTEzIEwgMTcwLjA3ODc0IDQ5NS43ODk3NiBMIDE3MC4w
Nzg3NCA0OTQuMDM5NzYiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXIpIiBzdHJv
a2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQi
IHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTSA0NTMuNTQzMyA1MzkuMzMyNjcgTCA0NTMu
NTQzMyA1NTIuNDgyNjcgTCA0NTMuNTQzMyA1NjYuOTI5MTMgTCA1MTAuMjM2MjIgNTY2LjkyOTEz
IEwgNTY5Ljc2Mzc4IDU2Ni45MjkxMyBMIDU2OS43NjM3OCA1OTUuMjc1NiBMIDU2OS43NjM3OCA2
MDkuNDQ4OCBMIDU1Mi40ODI2NyA2MDkuNDQ4OCBMIDU0OS45ODI2NyA2MDkuNDQ4OCIgbWFya2Vy
LWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5l
Y2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48
bGluZSB4MT0iMTcwLjA3ODc0IiB5MT0iNDUzLjU0MzMiIHgyPSIxNzAuMDc4NzQiIHkyPSI0Mzcu
MzQ2ODUiIG1hcmtlci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXIpIiBzdHJva2U9ImJsYWNr
IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13
aWR0aD0iMS41Ii8+PGxpbmUgeDE9IjE3MC4wNzg3NCIgeTE9IjM5Ni44NTA0IiB4Mj0iMTcwLjA3
ODc0IiB5Mj0iMzgwLjY1MzkzIiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIg
c3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik0gMTAyLjA0NzI0MyAyMDQuMDk0NDkg
TCAyMzguMTEwMjMgMjA0LjA5NDQ5IEMgMjQ3LjQ5ODU4IDIwNC4wOTQ0OSAyNTUuMTE4MTEgMjE0
LjI1Mzg2IDI1NS4xMTgxMSAyMjYuNzcxNjUgQyAyNTUuMTE4MTEgMjM5LjI4OTQ1IDI0Ny40OTg1
OCAyNDkuNDQ4ODIgMjM4LjExMDIzIDI0OS40NDg4MiBMIDEwMi4wNDcyNDMgMjQ5LjQ0ODgyIEMg
OTIuNjU4ODk3IDI0OS40NDg4MiA4NS4wMzkzNyAyMzkuMjg5NDUgODUuMDM5MzcgMjI2Ljc3MTY1
IEMgODUuMDM5MzcgMjE0LjI1Mzg2IDkyLjY1ODg5NyAyMDQuMDk0NDkgMTAyLjA0NzI0MyAyMDQu
MDk0NDkiIGZpbGw9IiNmYzYiLz48cGF0aCBkPSJNIDEwMi4wNDcyNDMgMjA0LjA5NDQ5IEwgMjM4
LjExMDIzIDIwNC4wOTQ0OSBDIDI0Ny40OTg1OCAyMDQuMDk0NDkgMjU1LjExODExIDIxNC4yNTM4
NiAyNTUuMTE4MTEgMjI2Ljc3MTY1IEMgMjU1LjExODExIDIzOS4yODk0NSAyNDcuNDk4NTggMjQ5
LjQ0ODgyIDIzOC4xMTAyMyAyNDkuNDQ4ODIgTCAxMDIuMDQ3MjQzIDI0OS40NDg4MiBDIDkyLjY1
ODg5NyAyNDkuNDQ4ODIgODUuMDM5MzcgMjM5LjI4OTQ1IDg1LjAzOTM3IDIyNi43NzE2NSBDIDg1
LjAzOTM3IDIxNC4yNTM4NiA5Mi42NTg4OTcgMjA0LjA5NDQ5IDEwMi4wNDcyNDMgMjA0LjA5NDQ5
IE0gMjM4LjExMDIzIDIwNC4wOTQ0OSBDIDIyOC43MjE4OSAyMDQuMDk0NDkgMjIxLjEwMjM2IDIx
NC4yNTM4NiAyMjEuMTAyMzYgMjI2Ljc3MTY1IEMgMjIxLjEwMjM2IDIzOS4yODk0NSAyMjguNzIx
ODkgMjQ5LjQ0ODgyIDIzOC4xMTAyMyAyNDkuNDQ4ODIiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUi
Lz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIuMzMwNzEgMjE0LjI3MTY1KSIgZmlsbD0i
YmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZv
bnQtd2VpZ2h0PSJib2xkIiB4PSIuMTk1MzEyNSIgeT0iMTAiIHRleHRMZW5ndGg9IjU3LjYwOTM3
NSI+bWVzc2FnZXM8L3RzcGFuPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQt
c2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjEzLjk5NzU1OSIgeT0iMjIiIHRleHRMZW5n
dGg9IjMwLjAwNDg4MyI+ZGVxdWU8L3RzcGFuPjwvdGV4dD48cGF0aCBkPSJNIDI1NS4xMTgxMSAz
NTQuMzMwNyBMIDI2OS4wMTgxMSAzNTQuMzMwNyBMIDI5Ny42Mzc4IDM1NC4zMzA3IEwgMjk3LjYz
NzggMzI4LjgxODkgTCAyOTcuNjM3OCAyMjYuNzcxNjUgTCAyNjkuMDE4MTEgMjI2Ljc3MTY1IEwg
MjY2LjUxODExIDIyNi43NzE2NSIgbWFya2VyLWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtlciki
IHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJy
b3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cmVjdCB4PSI4NS4wMzkzNyIgeT0iMTQxLjczMjI4
IiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIgZmlsbD0iI2NmNiIvPjxyZWN0
IHg9Ijg1LjAzOTM3IiB5PSIxNDEuNzMyMjgiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdodD0iMjgu
MzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5l
am9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xh
dGUoOTAuMDM5MzcgMTQ4LjkwNTUxKSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0i
Q291cmllciBOZXciIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI2NS42Mzcw
MjYiIHk9IjEwIiB0ZXh0TGVuZ3RoPSIyOC44MDQ2ODgiPnJlY3Y8L3RzcGFuPjwvdGV4dD48cGF0
aCBkPSJNIDg1LjAzOTM3IDIyNi43NzE2NSBMIDcxLjEzOTM3IDIyNi43NzE2NSBMIDQyLjUxOTY4
NSAyMjYuNzcxNjUgTCA0Mi41MTk2ODUgMjA5Ljc2Mzc4IEwgNDIuNTE5Njg1IDE1NS45MDU1MSBM
IDcxLjEzOTM3IDE1NS45MDU1MSBMIDczLjYzOTM3IDE1NS45MDU1MSIgbWFya2VyLWVuZD0idXJs
KCNTdGlja0Fycm93X01hcmtlcikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48bGluZSB4MT0i
MTcwLjA3ODc0IiB5MT0iMTQxLjczMjI4IiB4Mj0iMTcwLjA3ODc0IiB5Mj0iNjguMDkyOTEzIiBt
YXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tl
LWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEu
NSIvPjxsaW5lIHgxPSI0NTMuNTQzMyIgeTE9IjU2LjY5MjkxMyIgeDI9IjQ1My41NDMzIiB5Mj0i
MTMwLjMzMjI4IiBtYXJrZXItZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJi
bGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJv
a2Utd2lkdGg9IjEuNSIvPjxsaW5lIHgxPSI0NjcuNzE2NTMiIHkxPSI1Ni42OTI5MTMiIHgyPSI0
NjcuNzE2NTMiIHkyPSIxODcuODc1MiIgbWFya2VyLWVuZD0idXJsKCNTdGlja0Fycm93X01hcmtl
cl8yKSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpv
aW49InJvdW5kIiBzdHJva2Utd2lkdGg9Ii43NSIvPjxsaW5lIHgxPSI0ODEuODg5NzYiIHkxPSI1
Ni42OTI5MTMiIHgyPSI0ODEuODg5NzYiIHkyPSIyNDQuNTY4MTEiIG1hcmtlci1lbmQ9InVybCgj
U3RpY2tBcnJvd19NYXJrZXJfMikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNzUiLz48bGluZSB4MT0i
NDk2LjA2MyIgeTE9IjU2LjY5MjkxMyIgeDI9IjQ5Ni4wNjMiIHkyPSIzMDAuMzIzMDIiIG1hcmtl
ci1lbmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXJfMykiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1s
aW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjUi
Lz48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjE0MS43MzIyOCIgd2lkdGg9IjE3MC4wNzg3NCIgaGVp
Z2h0PSIyOC4zNDY0NTciIGZpbGw9IiNjZjYiLz48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjE0MS43
MzIyOCIgd2lkdGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdp
ZHRoPSIxLjUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzMuNTAzOTMgMTQ4LjkwNTUx
KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6
ZT0iMTIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4PSI2NS42MzcwMjYiIHk9IjEwIiB0ZXh0TGVuZ3Ro
PSIyOC44MDQ2ODgiPnNlbmQ8L3RzcGFuPjwvdGV4dD48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjE5
OC40MjUyIiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIgZmlsbD0iI2NmNiIv
PjxyZWN0IHg9IjM2OC41MDM5MyIgeT0iMTk4LjQyNTIiIHdpZHRoPSIxNzAuMDc4NzQiIGhlaWdo
dD0iMjguMzQ2NDU3IiBzdHJva2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9r
ZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjc1Ii8+PHRleHQgdHJhbnNmb3JtPSJ0
cmFuc2xhdGUoMzczLjUwMzkzIDIwNS41OTg0MikiIGZpbGw9ImJsYWNrIj48dHNwYW4gZm9udC1m
YW1pbHk9IkNvdXJpZXIgTmV3IiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiB4PSI2
NS42MzcwMjYiIHk9IjEwIiB0ZXh0TGVuZ3RoPSIyOC44MDQ2ODgiPnBpbmc8L3RzcGFuPjwvdGV4
dD48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjI1NS4xMTgxMSIgd2lkdGg9IjE3MC4wNzg3NCIgaGVp
Z2h0PSIyOC4zNDY0NTciIGZpbGw9IiNjZjYiLz48cmVjdCB4PSIzNjguNTAzOTMiIHk9IjI1NS4x
MTgxMSIgd2lkdGg9IjE3MC4wNzg3NCIgaGVpZ2h0PSIyOC4zNDY0NTciIHN0cm9rZT0iYmxhY2si
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdp
ZHRoPSIuNzUiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzMuNTAzOTMgMjYyLjI5MTM0
KSIgZmlsbD0iYmxhY2siPjx0c3BhbiBmb250LWZhbWlseT0iQ291cmllciBOZXciIGZvbnQtc2l6
ZT0iMTIiIGZvbnQtd2VpZ2h0PSI1MDAiIHg9IjY1LjYzNzAyNiIgeT0iMTAiIHRleHRMZW5ndGg9
IjI4LjgwNDY4OCI+cG9uZzwvdHNwYW4+PC90ZXh0PjxyZWN0IHg9IjM2OC41MDM5MyIgeT0iMzEx
LjgxMTAyIiB3aWR0aD0iMTcwLjA3ODc0IiBoZWlnaHQ9IjI4LjM0NjQ1NyIgZmlsbD0iI2NmNiIv
PjxyZWN0IHg9IjM2OC41MDM5MyIgeT0iMzExLjgxMTAyIiB3aWR0aD0iMTcwLjA3ODc0IiBoZWln
aHQ9IjI4LjM0NjQ1NyIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJv
a2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0i
dHJhbnNsYXRlKDM3My41MDM5MyAzMTguOTg0MjUpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQt
ZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9ImJvbGQiIHg9
IjYyLjAzNjQ0IiB5PSIxMCIgdGV4dExlbmd0aD0iMzYuMDA1ODYiPmNsb3NlPC90c3Bhbj48L3Rl
eHQ+PHBhdGggZD0iTSA1MzguNTgyNjcgMTU1LjkwNTUxIEwgNTUyLjQ4MjY3IDE1NS45MDU1MSBM
IDU2Ni45MjkxMyAxNTUuOTA1NTEgTCA1NjYuOTI5MTMgNDgxLjg4OTc2IEwgNDUzLjU0MzMgNDgx
Ljg4OTc2IEwgNDUzLjU0MzMgNDk2LjMzNjIyIEwgNDUzLjU0MzMgNDk4LjA4NjIyIiBtYXJrZXIt
ZW5kPSJ1cmwoI1N0aWNrQXJyb3dfTWFya2VyKSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVj
YXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxs
aW5lIHgxPSI1MzguNTgyNjciIHkxPSIyMTIuNTk4NDIiIHgyPSI1NjYuOTI5MTMiIHkyPSIyMTIu
NTk4NDIiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVq
b2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNzUiLz48bGluZSB4MT0iNTM4LjU4MjY3IiB5MT0i
MjY5LjI5MTM0IiB4Mj0iNTY2LjkyOTEzIiB5Mj0iMjY5LjI5MTM0IiBzdHJva2U9ImJsYWNrIiBz
dHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0
aD0iLjc1Ii8+PGxpbmUgeDE9IjUzOC41ODI2NyIgeTE9IjMyNS45ODQyNSIgeDI9IjU2Ni45Mjkx
MyIgeTI9IjMyNS45ODQyNSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBz
dHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik0gMjU1
Ljg2ODExIDQxMS4wMjM2MiBMIDI2Mi42MTgxMSA0MTEuMDIzNjIgTCAzNDAuMTU3NDggNDExLjAy
MzYyIEwgMzQwLjE1NzQ4IDQ4MS44ODk3NiBMIDQ1My41NDMzIDQ4MS44ODk3NiIgc3Ryb2tlPSJi
bGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJv
a2Utd2lkdGg9IjEuNSIvPjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5MS45NDUyNyAzOTku
MDIzNjIpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIgZm9u
dC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMCIgeT0iOCIgdGV4dExlbmd0aD0iNDIu
MDA2ODM2Ij5jb250cm9sPC90c3Bhbj48dHNwYW4gZm9udC1mYW1pbHk9IkNvdXJpZXIgTmV3IiBm
b250LXNpemU9IjEwIiBmb250LXdlaWdodD0iNTAwIiB4PSIwIiB5PSIyMSIgdGV4dExlbmd0aD0i
MzYuMDA1ODYiPmZyYW1lczwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzNDAuMTU3NDgiIHkxPSI0
MTEuMDIzNjIiIHgyPSI0MTQuNjQ2ODUiIHkyPSI0MTEuMDIzNjIiIG1hcmtlci1lbmQ9InVybCgj
U3RpY2tBcnJvd19NYXJrZXJfMikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNzUiLz48cGF0aCBkPSJN
IDM2OC41MDM5MyAyMTIuNTk4NDIgTCAzNjEuNzUzOTMgMjEyLjU5ODQyIEwgMzQwLjE1NzQ4IDIx
Mi41OTg0MiBMIDM0MC4xNTc0OCAzNDAuMTU3NDggTCAzNDAuMTU3NDggMzgyLjY3NzE2IiBzdHJv
a2U9ImJsYWNrIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQi
IHN0cm9rZS13aWR0aD0iLjc1Ii8+PHRleHQgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDYxLjU0MzMg
NTQ3LjI1NTkpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyIg
Zm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMCIgeT0iOCIgdGV4dExlbmd0aD0i
MzAuMDA0ODgzIj5ieXRlczwvdHNwYW4+PC90ZXh0Pjx0ZXh0IHRyYW5zZm9ybT0idHJhbnNsYXRl
KDQ2MS41NDMzIDQ5MC41NjMpIiBmaWxsPSJibGFjayI+PHRzcGFuIGZvbnQtZmFtaWx5PSJDb3Vy
aWVyIE5ldyIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjUwMCIgeD0iMCIgeT0iOCIgdGV4
dExlbmd0aD0iMzYuMDA1ODYiPmZyYW1lczwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzNDAuMTU3
NDgiIHkxPSIzODIuNjc3MTYiIHgyPSI0MTQuNjQ2ODUiIHkyPSIzODIuNjc3MTYiIG1hcmtlci1l
bmQ9InVybCgjU3RpY2tBcnJvd19NYXJrZXJfMikiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5l
Y2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNzUiLz48
L2c+PC9nPjwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3MvcmVxdWlyZW1l
bnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3JlcXVpcmVtZW50cy50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZWFmOTRmYmU4ZjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZG9jcy9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEs
NCBAQAorc3BoaW54CitzcGhpbngtYXV0b2RvYy10eXBlaGludHMKK3NwaGlueGNvbnRyaWItc3Bl
bGxpbmcKK3NwaGlueGNvbnRyaWItdHJpbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2Rv
Y3Mvc2VjdXJpdHkucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3Mvc2VjdXJpdHkucnN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTlhY2YwNjI5YzgzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2RvY3Mvc2VjdXJpdHkucnN0CkBAIC0wLDAgKzEs
MzkgQEAKK1NlY3VyaXR5Cis9PT09PT09PQorCitFbmNyeXB0aW9uCistLS0tLS0tLS0tCisKK0Zv
ciBwcm9kdWN0aW9uIHVzZSwgYSBzZXJ2ZXIgc2hvdWxkIHJlcXVpcmUgZW5jcnlwdGVkIGNvbm5l
Y3Rpb25zLgorCitTZWUgdGhpcyBleGFtcGxlIG9mIDpyZWY6YGVuY3J5cHRpbmcgY29ubmVjdGlv
bnMgd2l0aCBUTFMKKzxzZWN1cmUtc2VydmVyLWV4YW1wbGU+YC4KKworTWVtb3J5IHVzZQorLS0t
LS0tLS0tLQorCisuLiB3YXJuaW5nOjoKKworICAgIEFuIGF0dGFja2VyIHdobyBjYW4gb3BlbiBh
biBhcmJpdHJhcnkgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHdpbGwgYmUgYWJsZQorICAgIHRvIHBl
cmZvcm0gYSBkZW5pYWwgb2Ygc2VydmljZSBieSBtZW1vcnkgZXhoYXVzdGlvbi4gSWYgeW91J3Jl
IGNvbmNlcm5lZAorICAgIGJ5IGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MsIHlvdSBtdXN0IHJl
amVjdCBzdXNwaWNpb3VzIGNvbm5lY3Rpb25zCisgICAgYmVmb3JlIHRoZXkgcmVhY2ggYGB3ZWJz
b2NrZXRzYGAsIHR5cGljYWxseSBpbiBhIHJldmVyc2UgcHJveHkuCisKK1dpdGggdGhlIGRlZmF1
bHQgc2V0dGluZ3MsIG9wZW5pbmcgYSBjb25uZWN0aW9uIHVzZXMgMzI1wqBLaUIgb2YgbWVtb3J5
LgorCitTZW5kaW5nIHNvbWUgaGlnaGx5IGNvbXByZXNzZWQgbWVzc2FnZXMgY291bGQgdXNlIHVw
IHRvIDEyOMKgTWlCIG9mIG1lbW9yeQord2l0aCBhbiBhbXBsaWZpY2F0aW9uIGZhY3RvciBvZiAx
MDAwIGJldHdlZW4gbmV0d29yayB0cmFmZmljIGFuZCBtZW1vcnkgdXNlLgorCitDb25maWd1cmlu
ZyBhIHNlcnZlciB0byA6cmVmOmBvcHRpbWl6ZSBtZW1vcnkgdXNhZ2UgPG1lbW9yeS11c2FnZT5g
IHdpbGwKK2ltcHJvdmUgc2VjdXJpdHkgaW4gYWRkaXRpb24gdG8gaW1wcm92aW5nIHBlcmZvcm1h
bmNlLgorCitPdGhlciBsaW1pdHMKKy0tLS0tLS0tLS0tLQorCitgYHdlYnNvY2tldHNgYCBpbXBs
ZW1lbnRzIGFkZGl0aW9uYWwgbGltaXRzIG9uIHRoZSBhbW91bnQgb2YgZGF0YSBpdCBhY2NlcHRz
CitpbiBvcmRlciB0byBtaW5pbWl6ZSBleHBvc3VyZSB0byBzZWN1cml0eSB2dWxuZXJhYmlsaXRp
ZXMuCisKK0luIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSwgYGB3ZWJzb2NrZXRzYGAgbGltaXRzIHRo
ZSBudW1iZXIgb2YgSFRUUCBoZWFkZXJzIHRvCisyNTYgYW5kIHRoZSBzaXplIG9mIGFuIGluZGl2
aWR1YWwgaGVhZGVyIHRvIDQwOTYgYnl0ZXMuIFRoZXNlIGxpbWl0cyBhcmUgMTAgdG8KKzIwIHRp
bWVzIGxhcmdlciB0aGFuIHdoYXQncyBleHBlY3RlZCBpbiBzdGFuZGFyZCB1c2UgY2FzZXMuIFRo
ZXkncmUgaGFyZC1jb2RlZC4KK0lmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGVtLCBtb25rZXktcGF0
Y2ggdGhlIGNvbnN0YW50cyBpbiBgYHdlYnNvY2tldHMuaHR0cGBgLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2RvY3Mvc3BlbGxpbmdfd29yZGxpc3QudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2RvY3Mvc3BlbGxpbmdfd29yZGxpc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMWVhY2M0OTFkZjdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL2RvY3Mvc3BlbGxpbmdfd29yZGxpc3QudHh0CkBAIC0wLDAgKzEsMzkgQEAKK2F0dHIKK2F1
Z3VzdGluCitBdXRoCithd2FpdGFibGUKK2F5bWVyaWMKK2JhY2twcmVzc3VyZQorQmFja3ByZXNz
dXJlCitCaXRjb2luCitidWZmZXJibG9hdAorQnVmZmVyYmxvYXQKK2J1Z2ZpeAorYnl0ZXN0cmlu
ZworYnl0ZXN0cmluZ3MKK2NoYW5nZWxvZworY3J5cHRvY3VycmVuY3kKK2RhZW1vbml6ZQorZnJh
Y3RhbGlkZWFzCitpdGVyYWJsZQora2VlcGFsaXZlCitLaUIKK2xpZmVjeWNsZQorTGlmZWN5Y2xl
CitNaUIKK25naW54CitwZXJtZXNzYWdlCitwb25nCitwb25ncworUHl0aG9uaWMKK3NlcmlhbGl6
ZXJzCitzdWJjbGFzc2luZworc3VicHJvdG9jb2wKK3N1YnByb3RvY29scworVExTCitVbnBhcnNl
Cit1cGxlCit1c2VybmFtZQord2Vic29ja2V0CitXZWJTb2NrZXQKK3dlYnNvY2tldHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2NzL3RpZGVsaWZ0LnJzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9kb2NzL3RpZGVsaWZ0LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjQzYjQ1N2FhZmE4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9kb2Nz
L3RpZGVsaWZ0LnJzdApAQCAtMCwwICsxLDExMiBAQAord2Vic29ja2V0cyBmb3IgZW50ZXJwcmlz
ZQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitBdmFpbGFibGUgYXMgcGFydCBvZiB0aGUg
VGlkZWxpZnQgU3Vic2NyaXB0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy4uIGltYWdlOjogX3N0YXRpYy90aWRlbGlmdC5wbmcKKyAgIDpoZWln
aHQ6IDE1MHB4CisgICA6d2lkdGg6IDE1MHB4CisgICA6YWxpZ246IGxlZnQKKworVGlkZWxpZnQg
aXMgd29ya2luZyB3aXRoIHRoZSBtYWludGFpbmVycyBvZiB3ZWJzb2NrZXRzIGFuZCB0aG91c2Fu
ZHMgb2Ygb3RoZXIKK29wZW4gc291cmNlIHByb2plY3RzIHRvIGRlbGl2ZXIgY29tbWVyY2lhbCBz
dXBwb3J0IGFuZCBtYWludGVuYW5jZSBmb3IgdGhlCitvcGVuIHNvdXJjZSBkZXBlbmRlbmNpZXMg
eW91IHVzZSB0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4gU2F2ZSB0aW1lLCByZWR1Y2UKK3Jp
c2ssIGFuZCBpbXByb3ZlIGNvZGUgaGVhbHRoLCB3aGlsZSBwYXlpbmcgdGhlIG1haW50YWluZXJz
IG9mIHRoZSBleGFjdAorZGVwZW5kZW5jaWVzIHlvdSB1c2UuCisKKy4uIHJhdzo6IGh0bWwKKwor
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgIC50aWRlbGlmdC1saW5rcyB7CisgICAgICAg
ZGlzcGxheTogZmxleDsKKyAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgIH0KKyAg
IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpICB7CisgICAgICAgLnRp
ZGVsaWZ0LWxpbmtzIHsKKyAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKKyAgICAg
ICB9CisgICB9CisgICAudGlkZWxpZnQtbGlua3MgYSB7CisgICAgICAgYm9yZGVyOiB0aGluIHNv
bGlkICNmNjkxNGQ7CisgICAgICAgYm9yZGVyLXJhZGl1czogMC4yNWVtOworICAgICAgIGZvbnQt
ZmFtaWx5OiBWZXJkYW5hLCBzYW5zLXNlcmlmOworICAgICAgIGZvbnQtc2l6ZTogMTVweDsKKyAg
ICAgICBtYXJnaW46IDAuNWVtIDJlbTsKKyAgICAgICBwYWRkaW5nOiAwLjVlbSAyZW07CisgICAg
ICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAg
ICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworICAgfQorICAgLnRpZGVsaWZ0LWxpbmtz
IGEudGlkZWxpZnQtbGlua3NfX2xlYXJuLW1vcmUgeworICAgICAgIGJhY2tncm91bmQtY29sb3I6
IHdoaXRlOworICAgICAgIGNvbG9yOiAjZjY5MTRkOworICAgfQorICAgLnRpZGVsaWZ0LWxpbmtz
IGEudGlkZWxpZnQtbGlua3NfX3JlcXVlc3QtYS1kZW1vIHsKKyAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjZjY5MTRkOworICAgICAgIGNvbG9yOiB3aGl0ZTsKKyAgIH0KKyAgIDwvc3R5bGU+CisK
KyAgIDxkaXYgY2xhc3M9InRpZGVsaWZ0LWxpbmtzIj4KKyAgIDxhIGNsYXNzPSJ0aWRlbGlmdC1s
aW5rc19fbGVhcm4tbW9yZSIgaHJlZj0iaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9u
L3BrZy9weXBpLXdlYnNvY2tldHM/dXRtX3NvdXJjZT1weXBpLXdlYnNvY2tldHMmdXRtX21lZGl1
bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZSI+TGVhcm4gbW9yZTwvYT4KKyAgIDxh
IGNsYXNzPSJ0aWRlbGlmdC1saW5rc19fcmVxdWVzdC1hLWRlbW8iIGhyZWY9Imh0dHBzOi8vdGlk
ZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9yZXF1ZXN0LWEtZGVtbz91dG1fc291cmNlPXB5cGktd2Vi
c29ja2V0cyZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlIj5SZXF1
ZXN0IGEgZGVtbzwvYT4KKyAgIDwvZGl2PgorCitFbnRlcnByaXNlLXJlYWR5IG9wZW4gc291cmNl
IHNvZnR3YXJl4oCUbWFuYWdlZCBmb3IgeW91CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgVGlkZWxpZnQgU3Vic2NyaXB0aW9uIGlz
IGEgbWFuYWdlZCBvcGVuIHNvdXJjZSBzdWJzY3JpcHRpb24gZm9yCithcHBsaWNhdGlvbiBkZXBl
bmRlbmNpZXMgY292ZXJpbmcgbWlsbGlvbnMgb2Ygb3BlbiBzb3VyY2UgcHJvamVjdHMgYWNyb3Nz
CitKYXZhU2NyaXB0LCBQeXRob24sIEphdmEsIFBIUCwgUnVieSwgLk5FVCwgYW5kIG1vcmUuCisK
K1lvdXIgc3Vic2NyaXB0aW9uIGluY2x1ZGVzOgorCisqICoqU2VjdXJpdHkgdXBkYXRlcyoqCisK
KyAgKiBUaWRlbGlmdOKAmXMgc2VjdXJpdHkgcmVzcG9uc2UgdGVhbSBjb29yZGluYXRlcyBwYXRj
aGVzIGZvciBuZXcgYnJlYWtpbmcKKyAgICBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgYW5kIGFs
ZXJ0cyBpbW1lZGlhdGVseSB0aHJvdWdoIGEgcHJpdmF0ZSBjaGFubmVsLAorICAgIHNvIHlvdXIg
c29mdHdhcmUgc3VwcGx5IGNoYWluIGlzIGFsd2F5cyBzZWN1cmUuCisKKyogKipMaWNlbnNpbmcg
dmVyaWZpY2F0aW9uIGFuZCBpbmRlbW5pZmljYXRpb24qKgorCisgICogVGlkZWxpZnQgdmVyaWZp
ZXMgbGljZW5zZSBpbmZvcm1hdGlvbiB0byBlbmFibGUgZWFzeSBwb2xpY3kgZW5mb3JjZW1lbnQK
KyAgICBhbmQgYWRkcyBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5kZW1uaWZpY2F0aW9uIHRvIGNv
dmVyIGNyZWF0b3JzIGFuZCB1c2VycworICAgIGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3Jvbmcu
IFlvdSBhbHdheXMgaGF2ZSBhIDEwMCUgdXAtdG8tZGF0ZSBiaWxsIG9mCisgICAgbWF0ZXJpYWxz
IGZvciB5b3VyIGRlcGVuZGVuY2llcyB0byBzaGFyZSB3aXRoIHlvdXIgbGVnYWwgdGVhbSwgY3Vz
dG9tZXJzLAorICAgIG9yIHBhcnRuZXJzLgorCisqICoqTWFpbnRlbmFuY2UgYW5kIGNvZGUgaW1w
cm92ZW1lbnQqKgorCisgICogVGlkZWxpZnQgZW5zdXJlcyB0aGUgc29mdHdhcmUgeW91IHJlbHkg
b24ga2VlcHMgd29ya2luZyBhcyBsb25nIGFzIHlvdQorICAgIG5lZWQgaXQgdG8gd29yay4gWW91
ciBtYW5hZ2VkIGRlcGVuZGVuY2llcyBhcmUgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbmQgd2UKKyAg
ICByZWNydWl0IGFkZGl0aW9uYWwgbWFpbnRhaW5lcnMgd2hlcmUgcmVxdWlyZWQuCisKKyogKipQ
YWNrYWdlIHNlbGVjdGlvbiBhbmQgdmVyc2lvbiBndWlkYW5jZSoqCisKKyAgKiBXZSBoZWxwIHlv
dSBjaG9vc2UgdGhlIGJlc3Qgb3BlbiBzb3VyY2UgcGFja2FnZXMgZnJvbSB0aGUgc3RhcnTigJRh
bmQgdGhlbgorICAgIGd1aWRlIHlvdSB0aHJvdWdoIHVwZGF0ZXMgdG8gc3RheSBvbiB0aGUgYmVz
dCByZWxlYXNlcyBhcyBuZXcgaXNzdWVzCisgICAgYXJpc2UuCisKKyogKipSb2FkbWFwIGlucHV0
KioKKworICAqIFRha2UgYSBzZWF0IGF0IHRoZSB0YWJsZSB3aXRoIHRoZSBjcmVhdG9ycyBiZWhp
bmQgdGhlIHNvZnR3YXJlIHlvdSB1c2UuCisgICAgVGlkZWxpZnTigJlzIHBhcnRpY2lwYXRpbmcg
bWFpbnRhaW5lcnMgZWFybiBtb3JlIGluY29tZSBhcyB0aGVpciBzb2Z0d2FyZSBpcworICAgIHVz
ZWQgYnkgbW9yZSBzdWJzY3JpYmVycywgc28gdGhleeKAmXJlIGludGVyZXN0ZWQgaW4ga25vd2lu
ZyB3aGF0IHlvdSBuZWVkLgorCisqICoqVG9vbGluZyBhbmQgY2xvdWQgaW50ZWdyYXRpb24qKgor
CisgICogVGlkZWxpZnQgd29ya3Mgd2l0aCBHaXRIdWIsIEdpdExhYiwgQml0QnVja2V0LCBhbmQg
bW9yZS4gV2Ugc3VwcG9ydCBldmVyeQorICAgIGNsb3VkIHBsYXRmb3JtIChhbmQgb3RoZXIgZGVw
bG95bWVudCB0YXJnZXRzLCB0b28pLgorCitUaGUgZW5kIHJlc3VsdD8gQWxsIG9mIHRoZSBjYXBh
YmlsaXRpZXMgeW91IGV4cGVjdCBmcm9tIGNvbW1lcmNpYWwtZ3JhZGUKK3NvZnR3YXJlLCBmb3Ig
dGhlIGZ1bGwgYnJlYWR0aCBvZiBvcGVuIHNvdXJjZSB5b3UgdXNlLiBUaGF0IG1lYW5zIGxlc3Mg
dGltZQorZ3JhcHBsaW5nIHdpdGggZXNvdGVyaWMgb3BlbiBzb3VyY2UgdHJpdmlhLCBhbmQgbW9y
ZSB0aW1lIGJ1aWxkaW5nIHlvdXIgb3duCithcHBsaWNhdGlvbnPigJRhbmQgeW91ciBidXNpbmVz
cy4KKworLi4gcmF3OjogaHRtbAorCisgICA8ZGl2IGNsYXNzPSJ0aWRlbGlmdC1saW5rcyI+Cisg
ICA8YSBjbGFzcz0idGlkZWxpZnQtbGlua3NfX2xlYXJuLW1vcmUiIGhyZWY9Imh0dHBzOi8vdGlk
ZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcHlwaS13ZWJzb2NrZXRzP3V0bV9zb3VyY2U9cHlw
aS13ZWJzb2NrZXRzJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWVudGVycHJpc2Ui
PkxlYXJuIG1vcmU8L2E+CisgICA8YSBjbGFzcz0idGlkZWxpZnQtbGlua3NfX3JlcXVlc3QtYS1k
ZW1vIiBocmVmPSJodHRwczovL3RpZGVsaWZ0LmNvbS9zdWJzY3JpcHRpb24vcmVxdWVzdC1hLWRl
bW8/dXRtX3NvdXJjZT1weXBpLXdlYnNvY2tldHMmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2Ft
cGFpZ249ZW50ZXJwcmlzZSI+UmVxdWVzdCBhIGRlbW88L2E+CisgICA8L2Rpdj4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2Jhc2ljX2F1dGhfY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2V4YW1wbGUvYmFzaWNfYXV0aF9jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYzk0ZGJlNGI0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZXhhbXBsZS9iYXNpY19hdXRoX2NsaWVudC5weQpAQCAtMCwwICsxLDE0
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBXUyBjbGllbnQgZXhhbXBsZSB3aXRoIEhU
VFAgQmFzaWMgQXV0aGVudGljYXRpb24KKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCB3ZWJzb2Nr
ZXRzCisKK2FzeW5jIGRlZiBoZWxsbygpOgorICAgIHVyaSA9ICJ3czovL21hcnk6cEBzc3cwcmRA
bG9jYWxob3N0Ojg3NjUiCisgICAgYXN5bmMgd2l0aCB3ZWJzb2NrZXRzLmNvbm5lY3QodXJpKSBh
cyB3ZWJzb2NrZXQ6CisgICAgICAgIGdyZWV0aW5nID0gYXdhaXQgd2Vic29ja2V0LnJlY3YoKQor
ICAgICAgICBwcmludChncmVldGluZykKKworYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91
bnRpbF9jb21wbGV0ZShoZWxsbygpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1w
bGUvYmFzaWNfYXV0aF9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9iYXNpY19h
dXRoX3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3
NDBkNTc5ODljOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2Jh
c2ljX2F1dGhfc2VydmVyLnB5CkBAIC0wLDAgKzEsMjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorCisjIFNlcnZlciBleGFtcGxlIHdpdGggSFRUUCBCYXNpYyBBdXRoZW50aWNhdGlvbiBvdmVy
IFRMUworCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IHdlYnNvY2tldHMKKworYXN5bmMgZGVmIGhl
bGxvKHdlYnNvY2tldCwgcGF0aCk6CisgICAgZ3JlZXRpbmcgPSBmIkhlbGxvIHt3ZWJzb2NrZXQu
dXNlcm5hbWV9ISIKKyAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChncmVldGluZykKKworc3RhcnRf
c2VydmVyID0gd2Vic29ja2V0cy5zZXJ2ZSgKKyAgICBoZWxsbywgImxvY2FsaG9zdCIsIDg3NjUs
CisgICAgY3JlYXRlX3Byb3RvY29sPXdlYnNvY2tldHMuYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0
b3J5KAorICAgICAgICByZWFsbT0iZXhhbXBsZSIsIGNyZWRlbnRpYWxzPSgibWFyeSIsICJwQHNz
dzByZCIpCisgICAgKSwKKykKKworYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9j
b21wbGV0ZShzdGFydF9zZXJ2ZXIpCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX2ZvcmV2
ZXIoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvY2xpZW50LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2V4YW1wbGUvY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNGY5NjljNDc4YWRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL2V4YW1wbGUvY2xpZW50LnB5CkBAIC0wLDAgKzEsMTkgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorCisjIFdTIGNsaWVudCBleGFtcGxlCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQg
d2Vic29ja2V0cworCithc3luYyBkZWYgaGVsbG8oKToKKyAgICB1cmkgPSAid3M6Ly9sb2NhbGhv
c3Q6ODc2NSIKKyAgICBhc3luYyB3aXRoIHdlYnNvY2tldHMuY29ubmVjdCh1cmkpIGFzIHdlYnNv
Y2tldDoKKyAgICAgICAgbmFtZSA9IGlucHV0KCJXaGF0J3MgeW91ciBuYW1lPyAiKQorCisgICAg
ICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kKG5hbWUpCisgICAgICAgIHByaW50KGYiPiB7bmFtZX0i
KQorCisgICAgICAgIGdyZWV0aW5nID0gYXdhaXQgd2Vic29ja2V0LnJlY3YoKQorICAgICAgICBw
cmludChmIjwge2dyZWV0aW5nfSIpCisKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50
aWxfY29tcGxldGUoaGVsbG8oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxl
L2NvdW50ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2NvdW50ZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYzMTBjNGExNmQ5YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2NvdW50ZXIuaHRtbApAQCAtMCww
ICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
dGl0bGU+V2ViU29ja2V0IGRlbW88L3RpdGxlPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorICAgICAgICAgICAgYm9keSB7CisgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICJD
b3VyaWVyIE5ldyIsIHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmJ1dHRvbnMgeworICAgICAgICAgICAg
ICAgIGZvbnQtc2l6ZTogNGVtOworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CisgICAg
ICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAuYnV0dG9uLCAudmFsdWUgeworICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAx
OworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJyZW07CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycmVtOworICAgICAgICAgICAgICAgIGJvcmRlcjogbWVkaXVtIHNvbGlkOworICAgICAgICAg
ICAgICAgIG1pbi1oZWlnaHQ6IDFlbTsKKyAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDFlbTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5idXR0b24geworICAgICAgICAgICAgICAgIGN1
cnNvcjogcG9pbnRlcjsKKyAgICAgICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC5taW51cyB7CisgICAgICAgICAgICAgICAgY29sb3I6IHJl
ZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5wbHVzIHsKKyAgICAgICAgICAgICAgICBj
b2xvcjogZ3JlZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmFsdWUgeworICAgICAg
ICAgICAgICAgIG1pbi13aWR0aDogMmVtOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnN0
YXRlIHsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6IDJlbTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgY2xh
c3M9ImJ1dHRvbnMiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWludXMgYnV0dG9uIj4tPC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YWx1ZSI+PzwvZGl2PgorICAgICAgICAgICAg
PGRpdiBjbGFzcz0icGx1cyBidXR0b24iPis8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9InN0YXRlIj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ1c2VycyI+Pzwv
c3Bhbj4gb25saW5lCisgICAgICAgIDwvZGl2PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAg
ICAgdmFyIG1pbnVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1pbnVzJyksCisgICAgICAg
ICAgICAgICAgcGx1cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wbHVzJyksCisgICAgICAg
ICAgICAgICAgdmFsdWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudmFsdWUnKSwKKyAgICAg
ICAgICAgICAgICB1c2VycyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy51c2VycycpLAorICAg
ICAgICAgICAgICAgIHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjY3
ODkvIik7CisgICAgICAgICAgICBtaW51cy5vbmNsaWNrID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgICAgICAgICAgd2Vic29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoe2FjdGlvbjogJ21p
bnVzJ30pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBsdXMub25jbGljayA9IGZ1bmN0
aW9uIChldmVudCkgeworICAgICAgICAgICAgICAgIHdlYnNvY2tldC5zZW5kKEpTT04uc3RyaW5n
aWZ5KHthY3Rpb246ICdwbHVzJ30pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdlYnNv
Y2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkYXRh
ID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEu
dHlwZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0ZSc6CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZS50ZXh0Q29udGVudCA9IGRhdGEudmFsdWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAndXNlcnMnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlcnMudGV4dENvbnRlbnQgPSAoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YS5jb3VudC50b1N0cmluZygpICsgIiB1c2VyIiArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGRhdGEuY291bnQgPT0gMSA/ICIiIDogInMiKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInVuc3VwcG9ydGVkIGV2ZW50IiwgZGF0YSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvY291bnRlci5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
d2Vic29ja2V0cy9leGFtcGxlL2NvdW50ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5kYmJiZTU5MzU4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvZXhhbXBsZS9jb3VudGVyLnB5CkBAIC0wLDAgKzEsNjkgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorCisjIFdTIHNlcnZlciBleGFtcGxlIHRoYXQgc3luY2hyb25pemVzIHN0YXRlIGFj
cm9zcyBjbGllbnRzCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCB3ZWJzb2NrZXRzCisKK2xvZ2dpbmcuYmFzaWNDb25maWcoKQorCitTVEFURSA9
IHsidmFsdWUiOiAwfQorCitVU0VSUyA9IHNldCgpCisKKworZGVmIHN0YXRlX2V2ZW50KCk6Cisg
ICAgcmV0dXJuIGpzb24uZHVtcHMoeyJ0eXBlIjogInN0YXRlIiwgKipTVEFURX0pCisKKworZGVm
IHVzZXJzX2V2ZW50KCk6CisgICAgcmV0dXJuIGpzb24uZHVtcHMoeyJ0eXBlIjogInVzZXJzIiwg
ImNvdW50IjogbGVuKFVTRVJTKX0pCisKKworYXN5bmMgZGVmIG5vdGlmeV9zdGF0ZSgpOgorICAg
IGlmIFVTRVJTOiAgIyBhc3luY2lvLndhaXQgZG9lc24ndCBhY2NlcHQgYW4gZW1wdHkgbGlzdAor
ICAgICAgICBtZXNzYWdlID0gc3RhdGVfZXZlbnQoKQorICAgICAgICBhd2FpdCBhc3luY2lvLndh
aXQoW3VzZXIuc2VuZChtZXNzYWdlKSBmb3IgdXNlciBpbiBVU0VSU10pCisKKworYXN5bmMgZGVm
IG5vdGlmeV91c2VycygpOgorICAgIGlmIFVTRVJTOiAgIyBhc3luY2lvLndhaXQgZG9lc24ndCBh
Y2NlcHQgYW4gZW1wdHkgbGlzdAorICAgICAgICBtZXNzYWdlID0gdXNlcnNfZXZlbnQoKQorICAg
ICAgICBhd2FpdCBhc3luY2lvLndhaXQoW3VzZXIuc2VuZChtZXNzYWdlKSBmb3IgdXNlciBpbiBV
U0VSU10pCisKKworYXN5bmMgZGVmIHJlZ2lzdGVyKHdlYnNvY2tldCk6CisgICAgVVNFUlMuYWRk
KHdlYnNvY2tldCkKKyAgICBhd2FpdCBub3RpZnlfdXNlcnMoKQorCisKK2FzeW5jIGRlZiB1bnJl
Z2lzdGVyKHdlYnNvY2tldCk6CisgICAgVVNFUlMucmVtb3ZlKHdlYnNvY2tldCkKKyAgICBhd2Fp
dCBub3RpZnlfdXNlcnMoKQorCisKK2FzeW5jIGRlZiBjb3VudGVyKHdlYnNvY2tldCwgcGF0aCk6
CisgICAgIyByZWdpc3Rlcih3ZWJzb2NrZXQpIHNlbmRzIHVzZXJfZXZlbnQoKSB0byB3ZWJzb2Nr
ZXQKKyAgICBhd2FpdCByZWdpc3Rlcih3ZWJzb2NrZXQpCisgICAgdHJ5OgorICAgICAgICBhd2Fp
dCB3ZWJzb2NrZXQuc2VuZChzdGF0ZV9ldmVudCgpKQorICAgICAgICBhc3luYyBmb3IgbWVzc2Fn
ZSBpbiB3ZWJzb2NrZXQ6CisgICAgICAgICAgICBkYXRhID0ganNvbi5sb2FkcyhtZXNzYWdlKQor
ICAgICAgICAgICAgaWYgZGF0YVsiYWN0aW9uIl0gPT0gIm1pbnVzIjoKKyAgICAgICAgICAgICAg
ICBTVEFURVsidmFsdWUiXSAtPSAxCisgICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5X3N0YXRl
KCkKKyAgICAgICAgICAgIGVsaWYgZGF0YVsiYWN0aW9uIl0gPT0gInBsdXMiOgorICAgICAgICAg
ICAgICAgIFNUQVRFWyJ2YWx1ZSJdICs9IDEKKyAgICAgICAgICAgICAgICBhd2FpdCBub3RpZnlf
c3RhdGUoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9y
KCJ1bnN1cHBvcnRlZCBldmVudDoge30iLCBkYXRhKQorICAgIGZpbmFsbHk6CisgICAgICAgIGF3
YWl0IHVucmVnaXN0ZXIod2Vic29ja2V0KQorCisKK3N0YXJ0X3NlcnZlciA9IHdlYnNvY2tldHMu
c2VydmUoY291bnRlciwgImxvY2FsaG9zdCIsIDY3ODkpCisKK2FzeW5jaW8uZ2V0X2V2ZW50X2xv
b3AoKS5ydW5fdW50aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQorYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpLnJ1bl9mb3JldmVyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxl
L2VjaG8ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9lY2hvLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjdjYTM4ZDMyMWZmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvZWNoby5weQpAQCAtMCwwICsxLDEzIEBACisjIS91
c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCB3ZWJzb2NrZXRzCisK
K2FzeW5jIGRlZiBlY2hvKHdlYnNvY2tldCwgcGF0aCk6CisgICAgYXN5bmMgZm9yIG1lc3NhZ2Ug
aW4gd2Vic29ja2V0OgorICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChtZXNzYWdlKQorCitz
dGFydF9zZXJ2ZXIgPSB3ZWJzb2NrZXRzLnNlcnZlKGVjaG8sICJsb2NhbGhvc3QiLCA4NzY1KQor
Cithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0X3NlcnZl
cikKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9yZXZlcigpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZXhhbXBsZS9oZWFsdGhfY2hlY2tfc2VydmVyLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL2V4YW1wbGUvaGVhbHRoX2NoZWNrX3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxNzA2M2ZjZTdlZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvd2Vic29ja2V0cy9leGFtcGxlL2hlYWx0aF9jaGVja19zZXJ2ZXIucHkKQEAgLTAsMCArMSwy
MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgV1MgZWNobyBzZXJ2ZXIgd2l0aCBIVFRQ
IGVuZHBvaW50IGF0IC9oZWFsdGgvCisKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgaHR0cAoraW1w
b3J0IHdlYnNvY2tldHMKKworYXN5bmMgZGVmIGhlYWx0aF9jaGVjayhwYXRoLCByZXF1ZXN0X2hl
YWRlcnMpOgorICAgIGlmIHBhdGggPT0gIi9oZWFsdGgvIjoKKyAgICAgICAgcmV0dXJuIGh0dHAu
SFRUUFN0YXR1cy5PSywgW10sIGIiT0tcbiIKKworYXN5bmMgZGVmIGVjaG8od2Vic29ja2V0LCBw
YXRoKToKKyAgICBhc3luYyBmb3IgbWVzc2FnZSBpbiB3ZWJzb2NrZXQ6CisgICAgICAgIGF3YWl0
IHdlYnNvY2tldC5zZW5kKG1lc3NhZ2UpCisKK3N0YXJ0X3NlcnZlciA9IHdlYnNvY2tldHMuc2Vy
dmUoCisgICAgZWNobywgImxvY2FsaG9zdCIsIDg3NjUsIHByb2Nlc3NfcmVxdWVzdD1oZWFsdGhf
Y2hlY2sKKykKKworYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShz
dGFydF9zZXJ2ZXIpCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX2ZvcmV2ZXIoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvaGVsbG8ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvZXhhbXBsZS9oZWxsby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjZjOWM4MzlkODI3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFt
cGxlL2hlbGxvLnB5CkBAIC0wLDAgKzEsMTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitp
bXBvcnQgYXN5bmNpbworaW1wb3J0IHdlYnNvY2tldHMKKworYXN5bmMgZGVmIGhlbGxvKCk6Cisg
ICAgdXJpID0gIndzOi8vbG9jYWxob3N0Ojg3NjUiCisgICAgYXN5bmMgd2l0aCB3ZWJzb2NrZXRz
LmNvbm5lY3QodXJpKSBhcyB3ZWJzb2NrZXQ6CisgICAgICAgIGF3YWl0IHdlYnNvY2tldC5zZW5k
KCJIZWxsbyB3b3JsZCEiKQorICAgICAgICBhd2FpdCB3ZWJzb2NrZXQucmVjdigpCisKK2FzeW5j
aW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUoaGVsbG8oKSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL2xvY2FsaG9zdC5wZW0gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvZXhhbXBsZS9sb2NhbGhvc3QucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZjlhMzBiYThmNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L2V4YW1wbGUvbG9jYWxob3N0LnBlbQpAQCAtMCwwICsxLDQ4IEBACistLS0tLUJFR0lOIFBSSVZB
VEUgS0VZLS0tLS0KK01JSUV2QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktZd2dnU2lBZ0VB
QW9JQkFRREc4aURhazRVQnB1ckkKK1RXalNmcUowWVZHL1M1Nm5oc3dlaHVwQ2FJenUweFE4d3FQ
U3MzNmg1dDFqTWV4SlBaZnZ3eXZGamNWK2hZcGoKK0xNTTB3TUpQeDlvQlFFZTBic21sQzY2ZThh
RjBVcFNRdzFhVmZZb3hBOUJlamdFeXJGTkU3Y1JiUU5ZRkViLzUKKzNIZnFaS2RFUUEyZmdRU2xa
MFJUUm1MckQrbDcyaU81bzJ4bDVidHRYcHFZWkIyWE9reU83OWoveFdkdTl6RkUKK3NnWko1eXNX
YnFvUkFHZ254amRZWXI5REFSZDhiSUUvaE4zU1c3bUR0NXY0THFDSWhHbjFWbXJ3dFQzZDVBdUcK
K1FQejRZRWJtMHQ2R09sbUZqSU1ZSDVZN3BBTFJWZm9KS1JqNkRHTklSMUppY0wrd3FMVjY2a2NW
bmo4V0tibGEKKzIwaTdmUjdOQWdNQkFBRUNnZ0VBRzV5dmdxYkc1eHZMcWxGVUl5TUFXVGJJcWN4
TkVPTmNvVUFJYzM4ZlVHWnIKK2dLTmpLWE5RT0JoYTBkRzBBZFpTcUN4bWZ0eldkR0VFZkE5U2FK
ZjRZQ3BVejZla1RCNjBUZnY1R0laZzZrd3IKKzRvdTZFTFdENEptdTZmQzdxZFRSR2RnR1VNUUc4
RjB1VC9lUmpTNjdLSFhiYmkveC9TTUFFSzdNTytQUmZDYmoKKytKR3pTOVltOW1Vd2VJTlBvdGdq
SGRER3d3ZDAzOVZXWVMrOUErUXVOSzI3cDN6cTRocldSYjR3c2hTQzhmS3kKK29Mb2U0T1F0ODFh
b3dwWDlrNm1BVTZOOHZPbVA4L0VjUUhZQyt5RklJRFpCMkVtRFAwN1IxTFVFSDNLSm56bzcKK3Bs
Q0sxL2tZUGhYMGEwNWNFZFRwWGRLYTc0QWx2U1JrUzExc0dxZlVBUUtCZ1FEajFTUnYwQVVHc0hT
QTBMV3gKK2EwTlQxWkxFWENHMHVxZ2RnaDBzVHFJZWlyUXNQUk93M2t5NGxINU1iamtmUmVBckZr
aEh1M002S295d0VQeEUKK3dhblNSaC90MXFjTmpOTlpVdkZvVXpBS1ZwYjMzUkxrSnBwT1RWRVdQ
dCt3dHlEbGZ6MVpBWHpNVjY2dEFDcngKK0gyYTN2MFpXVXo2Sit4L2RFU0g1VFROTDRRS0JnUURm
aXJta25wNDA4cHdCRStidWxuZ0t5MFF2VTA5RW44SDAKK3V2cXI4cTRqQ1hxSjF0WG9uNHdzSGcy
eUY0RmEzN1NDcFNtdk9OSUR3SnZWV2trWUx5QkhLT25zL2ZXQ2tXM24KK2hJY1l4MHEyamdjb09M
VTB1b2FNOUFyUlhoSXhvV3FWL0tHa1F6TiszeFhDMS9NeFo1T2h5eEJ4ZlBDUElZSU4KK1lOM00x
dC9RYlFLQmdESW1oc0MrRDMwcmRsbXNsM0lZWkZlZDJaS3puUS9GVHFCQU5kKzg1MTdGdFdkUGdu
Z2EKK1Z0VUNpdEtVS0tyRG5OYWZMd1hyTXpBSWtiTm42Yi9ReVdycDJMbG4ySm5ZOStUZnB4Z0p4
N2RlM0Jodloyc2wKK1BDNGtRc2NjeSt5QVF4T0JjS1dZK0RtYXkyNTFiUDVxcFJlcFdQaERscTZV
d3F6TXlxZXY0S3pCQW9HQVdETWkKK0lFTzlaR0s5RHVmTlhDSGVaMVBnS1ZRVG1KMzRKeG1IUWtU
VVZGcXZFS2ZGYXExWTN5ZFVmQW91TGE3S1NDbm0KK2tvNDJ2dWhHRkI0MWJPZGJNdmgvbzlSb0JB
WmhlTkdmaERWTjAwMmlvVW9PcFNsYllVNEEzcTdoT3RmWGVDcGYKK2xMSTNKVDNjRmk2aWM4SE1U
REFVNHRKTEVBNUdoQVRPUHI0aFBOa0NnWUI4alRZR2NMdm9lRmFMRXZlZzBrUzIKK2N6NlpYR0xK
eDVtMUFPUXk1ZzlGd0dhVysxMGxyOFRGMmszQWxkd29pd1gwUjZzSEFmLzk0NWFHVTgzbXM1djkK
K1BCOS94NjZBWXRTUlVvczlNd0I0eTF1cjRnNkZpWFpVQmdUSlVxenoybmVoUEN5R2pZaGg0OVd1
Y2pzenFjalgKK2NoUzFiS1pPWSsxa25XcTh4ajVReWc9PQorLS0tLS1FTkQgUFJJVkFURSBLRVkt
LS0tLQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEVFRDQ0FqV2dBd0lCQWdJSkFP
anRlNmwrMDNqdk1BMEdDU3FHU0liM0RRRUJDd1VBTUV3eEN6QUpCZ05WCitCQVlUQWtaU01RNHdE
QVlEVlFRSERBVlFZWEpwY3pFWk1CY0dBMVVFQ2d3UVFYbHRaWEpwWXlCQmRXZDFjM1JwCitiakVT
TUJBR0ExVUVBd3dKYkc5allXeG9iM04wTUNBWERURTRNRFV3TlRFMk5Ua3lPVm9ZRHpJd05qQXdO
VEEwCitNVFkxT1RJNVdqQk1NUXN3Q1FZRFZRUUdFd0pHVWpFT01Bd0dBMVVFQnd3RlVHRnlhWE14
R1RBWEJnTlZCQW9NCitFRUY1YldWeWFXTWdRWFZuZFhOMGFXNHhFakFRQmdOVkJBTU1DV3h2WTJG
c2FHOXpkRENDQVNJd0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1ieUlO
cVRoUUdtNnNoTmFOSitvblJoVWI5TG5xZUd6QjZHCis2a0pvak83VEZEekNvOUt6ZnFIbTNXTXg3
RWs5bCsvREs4V054WDZGaW1Nc3d6VEF3ay9IMmdGQVI3UnV5YVVMCitycDd4b1hSU2xKRERWcFY5
aWpFRDBGNk9BVEtzVTBUdHhGdEExZ1VSdi9uY2QrcGtwMFJBRForQkJLVm5SRk5HCitZdXNQNlh2
YUk3bWpiR1hsdTIxZW1waGtIWmM2VEk3djJQL0ZaMjczTVVTeUJrbm5LeFp1cWhFQWFDZkdOMWhp
Cit2ME1CRjN4c2dUK0UzZEpidVlPM20vZ3VvSWlFYWZWV2F2QzFQZDNrQzRaQS9QaGdSdWJTM29Z
NldZV01neGdmCitsanVrQXRGVitna3BHUG9NWTBoSFVtSnd2N0NvdFhycVJ4V2VQeFlwdVZyYlNM
dDlIczBDQXdFQUFhTXdNQzR3CitMQVlEVlIwUkJDVXdJNElKYkc5allXeG9iM04waHdSL0FBQUJo
eEFBQUFBQUFBQUFBQUFBQUFBQUFBQUJNQTBHCitDU3FHU0liM0RRRUJDd1VBQTRJQkFRQzlUc1R4
VEV2cUhQVVM2c2Z2Rjc3ZUcwRDZITE9PTlZOOTFKK0w3TGlYCit2M2JGZVMxeGJVUzYvd0l4Wmk1
RW5BdC90ZTV2YUhrLzVRMVV2em5RUDRqMmdOb002bEgvRFJrU0FSdlJpdFZjCitIMHFONFhwMllr
MVI5VkV4NFpnQXJjeU1wSStHaEU0dkpSeDFMRS9oc3VBenc3QkFkc1R0OXppY3NjTmcyZnhPCisz
YW8vZUJjZGFDNm45YUZZZEU2Q0FETXBCMWxDWDJvV05WZGo2SWF2UUx1N1ZNYytXSjNSS25jd0M5
dGgrNU9QCitJU1B2a1ZaV2YyNXJSMlNUbXZ2YjBxRW0zQ1pqazRYZDdOK2d4YktLVXZ6RWdQanJM
U1d6S0tKQVdIakNMdWdJCisva1FxaHBqV1ZsVGJ0S3pXejViVmlxQ2pTYnJJUHBVMk1nRzlBVVY5
eTNpVgorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL2V4YW1wbGUvc2VjdXJlX2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3Nl
Y3VyZV9jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41
NDk3MWI5ODQ3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9z
ZWN1cmVfY2xpZW50LnB5CkBAIC0wLDAgKzEsMjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
CisjIFdTUyAoV1Mgb3ZlciBUTFMpIGNsaWVudCBleGFtcGxlLCB3aXRoIGEgc2VsZi1zaWduZWQg
Y2VydGlmaWNhdGUKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc3Ns
CitpbXBvcnQgd2Vic29ja2V0cworCitzc2xfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5Q
Uk9UT0NPTF9UTFNfQ0xJRU5UKQorbG9jYWxob3N0X3BlbSA9IHBhdGhsaWIuUGF0aChfX2ZpbGVf
Xykud2l0aF9uYW1lKCJsb2NhbGhvc3QucGVtIikKK3NzbF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xv
Y2F0aW9ucyhsb2NhbGhvc3RfcGVtKQorCithc3luYyBkZWYgaGVsbG8oKToKKyAgICB1cmkgPSAi
d3NzOi8vbG9jYWxob3N0Ojg3NjUiCisgICAgYXN5bmMgd2l0aCB3ZWJzb2NrZXRzLmNvbm5lY3Qo
CisgICAgICAgIHVyaSwgc3NsPXNzbF9jb250ZXh0CisgICAgKSBhcyB3ZWJzb2NrZXQ6CisgICAg
ICAgIG5hbWUgPSBpbnB1dCgiV2hhdCdzIHlvdXIgbmFtZT8gIikKKworICAgICAgICBhd2FpdCB3
ZWJzb2NrZXQuc2VuZChuYW1lKQorICAgICAgICBwcmludChmIj4ge25hbWV9IikKKworICAgICAg
ICBncmVldGluZyA9IGF3YWl0IHdlYnNvY2tldC5yZWN2KCkKKyAgICAgICAgcHJpbnQoZiI8IHtn
cmVldGluZ30iKQorCithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRl
KGhlbGxvKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zZWN1cmVfc2Vy
dmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2VjdXJlX3NlcnZlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJhMDBiZGI1MDQyYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3NlY3VyZV9zZXJ2ZXIucHkKQEAgLTAs
MCArMSwyOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgV1NTIChXUyBvdmVyIFRMUykg
c2VydmVyIGV4YW1wbGUsIHdpdGggYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZQorCitpbXBvcnQg
YXN5bmNpbworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBzc2wKK2ltcG9ydCB3ZWJzb2NrZXRzCisK
K2FzeW5jIGRlZiBoZWxsbyh3ZWJzb2NrZXQsIHBhdGgpOgorICAgIG5hbWUgPSBhd2FpdCB3ZWJz
b2NrZXQucmVjdigpCisgICAgcHJpbnQoZiI8IHtuYW1lfSIpCisKKyAgICBncmVldGluZyA9IGYi
SGVsbG8ge25hbWV9ISIKKworICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kKGdyZWV0aW5nKQorICAg
IHByaW50KGYiPiB7Z3JlZXRpbmd9IikKKworc3NsX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChz
c2wuUFJPVE9DT0xfVExTX1NFUlZFUikKK2xvY2FsaG9zdF9wZW0gPSBwYXRobGliLlBhdGgoX19m
aWxlX18pLndpdGhfbmFtZSgibG9jYWxob3N0LnBlbSIpCitzc2xfY29udGV4dC5sb2FkX2NlcnRf
Y2hhaW4obG9jYWxob3N0X3BlbSkKKworc3RhcnRfc2VydmVyID0gd2Vic29ja2V0cy5zZXJ2ZSgK
KyAgICBoZWxsbywgImxvY2FsaG9zdCIsIDg3NjUsIHNzbD1zc2xfY29udGV4dAorKQorCithc3lu
Y2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0X3NlcnZlcikKK2Fz
eW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fZm9yZXZlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvZXhhbXBsZS9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zZXJ2
ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jOGFiNjk5NzFi
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zZXJ2ZXIucHkK
QEAgLTAsMCArMSwyMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgV1Mgc2VydmVyIGV4
YW1wbGUKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCB3ZWJzb2NrZXRzCisKK2FzeW5jIGRlZiBo
ZWxsbyh3ZWJzb2NrZXQsIHBhdGgpOgorICAgIG5hbWUgPSBhd2FpdCB3ZWJzb2NrZXQucmVjdigp
CisgICAgcHJpbnQoZiI8IHtuYW1lfSIpCisKKyAgICBncmVldGluZyA9IGYiSGVsbG8ge25hbWV9
ISIKKworICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kKGdyZWV0aW5nKQorICAgIHByaW50KGYiPiB7
Z3JlZXRpbmd9IikKKworc3RhcnRfc2VydmVyID0gd2Vic29ja2V0cy5zZXJ2ZShoZWxsbywgImxv
Y2FsaG9zdCIsIDg3NjUpCisKK2FzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29t
cGxldGUoc3RhcnRfc2VydmVyKQorYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl9mb3JldmVy
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3Nob3dfdGltZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2hvd190aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MjFmNDQyNjRlZmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZXhhbXBsZS9zaG93X3RpbWUuaHRtbApAQCAtMCwwICsxLDIwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+V2ViU29j
a2V0IGRlbW88L3RpdGxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjU2
NzgvIiksCisgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd1bCcpOworICAgICAgICAgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3VsJylbMF0sCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdsaScpLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoZXZlbnQuZGF0YSk7CisgICAgICAgICAgICAgICAgbWVzc2FnZS5hcHBl
bmRDaGlsZChjb250ZW50KTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmRDaGlsZCht
ZXNzYWdlKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKG1lc3NhZ2VzKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2hvd190aW1lLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2hvd190aW1lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZTVkNmFjOWFhM2IwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL2V4YW1wbGUvc2hvd190aW1lLnB5CkBAIC0wLDAgKzEsMTkgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIFdTIHNlcnZlciB0aGF0IHNlbmRzIG1lc3NhZ2VzIGF0IHJhbmRv
bSBpbnRlcnZhbHMKKworaW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHJh
bmRvbQoraW1wb3J0IHdlYnNvY2tldHMKKworYXN5bmMgZGVmIHRpbWUod2Vic29ja2V0LCBwYXRo
KToKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS51dGNu
b3coKS5pc29mb3JtYXQoKSArICJaIgorICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChub3cp
CisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAocmFuZG9tLnJhbmRvbSgpICogMykKKworc3Rh
cnRfc2VydmVyID0gd2Vic29ja2V0cy5zZXJ2ZSh0aW1lLCAiMTI3LjAuMC4xIiwgNTY3OCkKKwor
YXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIp
Cithc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2V4YW1wbGUvc2h1dGRvd24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBs
ZS9zaHV0ZG93bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2
ODQ2YWJlNzNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3No
dXRkb3duLnB5CkBAIC0wLDAgKzEsMjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBv
cnQgYXN5bmNpbworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHdlYnNvY2tldHMKKworYXN5bmMgZGVm
IGVjaG8od2Vic29ja2V0LCBwYXRoKToKKyAgICBhc3luYyBmb3IgbWVzc2FnZSBpbiB3ZWJzb2Nr
ZXQ6CisgICAgICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kKG1lc3NhZ2UpCisKK2FzeW5jIGRlZiBl
Y2hvX3NlcnZlcihzdG9wKToKKyAgICBhc3luYyB3aXRoIHdlYnNvY2tldHMuc2VydmUoZWNobywg
ImxvY2FsaG9zdCIsIDg3NjUpOgorICAgICAgICBhd2FpdCBzdG9wCisKK2xvb3AgPSBhc3luY2lv
LmdldF9ldmVudF9sb29wKCkKKworIyBUaGUgc3RvcCBjb25kaXRpb24gaXMgc2V0IHdoZW4gcmVj
ZWl2aW5nIFNJR1RFUk0uCitzdG9wID0gbG9vcC5jcmVhdGVfZnV0dXJlKCkKK2xvb3AuYWRkX3Np
Z25hbF9oYW5kbGVyKHNpZ25hbC5TSUdURVJNLCBzdG9wLnNldF9yZXN1bHQsIE5vbmUpCisKKyMg
UnVuIHRoZSBzZXJ2ZXIgdW50aWwgdGhlIHN0b3AgY29uZGl0aW9uIGlzIG1ldC4KK2xvb3AucnVu
X3VudGlsX2NvbXBsZXRlKGVjaG9fc2VydmVyKHN0b3ApKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL2V4YW1wbGUvdW5peF9jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvZXhhbXBsZS91
bml4X2NsaWVudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU3
NzEzNWIzZGJmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9leGFtcGxlL3Vu
aXhfY2xpZW50LnB5CkBAIC0wLDAgKzEsMTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisj
IFdTIGNsaWVudCBleGFtcGxlIGNvbm5lY3RpbmcgdG8gYSBVbml4IHNvY2tldAorCitpbXBvcnQg
YXN5bmNpbworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCB3ZWJzb2NrZXRzCisKK2FzeW5jIGRlZiBo
ZWxsbygpOgorICAgIHNvY2tldF9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICJzb2NrZXQiKQorICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy51bml4X2Nvbm5l
Y3Qoc29ja2V0X3BhdGgpIGFzIHdlYnNvY2tldDoKKyAgICAgICAgbmFtZSA9IGlucHV0KCJXaGF0
J3MgeW91ciBuYW1lPyAiKQorICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChuYW1lKQorICAg
ICAgICBwcmludChmIj4ge25hbWV9IikKKworICAgICAgICBncmVldGluZyA9IGF3YWl0IHdlYnNv
Y2tldC5yZWN2KCkKKyAgICAgICAgcHJpbnQoZiI8IHtncmVldGluZ30iKQorCithc3luY2lvLmdl
dF9ldmVudF9sb29wKCkucnVuX3VudGlsX2NvbXBsZXRlKGhlbGxvKCkpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvZXhhbXBsZS91bml4X3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9l
eGFtcGxlL3VuaXhfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYTZlYzAxNjhhMmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2V4
YW1wbGUvdW5peF9zZXJ2ZXIucHkKQEAgLTAsMCArMSwyMiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisKKyMgV1Mgc2VydmVyIGV4YW1wbGUgbGlzdGVuaW5nIG9uIGEgVW5peCBzb2NrZXQKKwor
aW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgd2Vic29ja2V0cworCithc3lu
YyBkZWYgaGVsbG8od2Vic29ja2V0LCBwYXRoKToKKyAgICBuYW1lID0gYXdhaXQgd2Vic29ja2V0
LnJlY3YoKQorICAgIHByaW50KGYiPCB7bmFtZX0iKQorCisgICAgZ3JlZXRpbmcgPSBmIkhlbGxv
IHtuYW1lfSEiCisKKyAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZChncmVldGluZykKKyAgICBwcmlu
dChmIj4ge2dyZWV0aW5nfSIpCisKK3NvY2tldF9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksICJzb2NrZXQiKQorc3RhcnRfc2VydmVyID0gd2Vic29ja2V0cy51
bml4X3NlcnZlKGhlbGxvLCBzb2NrZXRfcGF0aCkKKworYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgp
LnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCithc3luY2lvLmdldF9ldmVudF9sb29w
KCkucnVuX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vaG9yaXpv
bnRhbC5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvbG9nby9ob3Jpem9udGFsLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVlODcyZGM0Nzg2OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9sb2dvL2hvcml6b250YWwuc3ZnCkBAIC0wLDAgKzEsMzEg
QEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTAyNCIg
aGVpZ2h0PSIyNTYiIHZpZXdCb3g9IjAgMCAxMDI0IDI1NiI+CisgIDxsaW5lYXJHcmFkaWVudCBp
ZD0idyIgeDE9IjAiIHkxPSIwIiB4Mj0iMC4xNjY3IiB5Mj0iMC42NjY3Ij4KKyAgICA8c3RvcCBv
ZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZmZlODczIiAvPgorICAgIDxzdG9wIG9mZnNldD0iMTAw
JSIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIgLz4KKyAgPC9saW5lYXJHcmFkaWVudD4KKyAgPGxpbmVh
ckdyYWRpZW50IGlkPSJzIiB4MT0iMCIgeTE9IjAiIHgyPSIwLjE2NjciIHkyPSIwLjY2NjciPgor
ICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiM1YTlmZDQiIC8+CisgICAgPHN0b3Ag
b2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMzA2OTk4IiAvPgorICA8L2xpbmVhckdyYWRpZW50
PgorPGc+CisgICAgPHBhdGggZmlsbD0idXJsKCN3KSIgZD0ibSAxNTEuNjA3MDgsMTU0LjgxNjE4
IGMgLTAuNDM3MDQsMC4wNzQ3IC0wLjg4NjU2LDAuMTI5NzggLTEuMzU1NzIsMC4xNDkzMyAtMi40
NTgxMywwLjA3NjQgLTQuMjUzNTcsLTAuNTg2NjUgLTUuODIzMzUsLTIuMTUxMDcgbCAtOC44OTI0
NiwtOC44NTk0MiAtMTEuMjM0NjQsLTExLjE5ODA1IC0zNi4wNDA3NTcsLTM1LjkxOTQ1MiBjIC0z
LjQzNTY4LC0zLjQyMjE3IC03LjMzMjQ4NSwtNS4zNDc0NzQgLTExLjU4OTYyNiwtNS43MjM0Njgg
LTIuMjI5ODAzLC0wLjE5ODIxOSAtNC40NzM4NzcsMC4wMzExMSAtNi42NDAzNTQsMC42NzU1NDUg
LTMuMjQyMTMzLDAuOTQ0ODc1IC02LjEzNTUyNiwyLjY2NDg0OCAtOC41OTM2NjIsNS4xMTYzNjYg
LTMuODM0MzY5LDMuODE5NDk5IC01Ljg2MzQ5LDguNDE0OTc5IC01Ljg3NTk3NywxMy4yODc3OTkg
LTAuMDYwNjUsNC45NTI4MSAxLjk1MTUyMyw5LjYwMDc0IDUuODA4MTkyLDEzLjQ0NDI0IGwgNTUu
NjIyODk0LDU1LjQzNjQ4IGMgMS44MjIxOSwxLjg0MTc1IDIuNjU5NzEsMy43OTU0OSAyLjYzMzg0
LDYuMTQ1NjggbCAwLjAwNCwwLjIwOCBjIDAuMDUyNywyLjQzMTk2IC0wLjc1OTkxLDQuMzQ1NzEg
LTIuNjI2Nyw2LjIwNjEyIC0xLjc4MDI4LDEuNzc1OTggLTMuODA5NCwyLjY1MjQxIC02LjMwOTQ1
LDIuNzU1NTIgLTIuNDU4MTQsMC4wNzY0IC00LjI1NDQ2LC0wLjU4ODQ0IC01LjgyNTE0LC0yLjE1
Mjg2IEwgNDguNzAyNTUxLDEzNi4yNjE4IGMgLTUuMjE0MTcyLC01LjE5NDU5IC0xMS43MDI4OTks
LTYuOTg3NDUgLTE4LjIyOTk4LC01LjA0ODgxIC0zLjI0NTcwMSwwLjk0MzEgLTYuMTM1NTI3LDIu
NjYzMDcgLTguNTk1NDQ2LDUuMTE0NTkgLTMuODM0MzcsMy44MjEyNyAtNS44NjUyNzUsOC40MTY3
NiAtNS44NzU5NzgsMTMuMjg5NTcgLTAuMDU2MTksNC45NTI4MSAxLjk1MTUyNCw5LjYwMjUyIDUu
ODA2NDA5LDEzLjQ0NzggbCA1OC4xMDY4OSw1Ny45MDU3NyBjIDguMzE5ODQyLDguMjkxNDMgMTku
MzQwNDIxLDExLjkzNzYgMzIuNzQzMzE0LDEwLjgzODA2IDEyLjU3OTY3LC0xLjAyMDQzIDIzLjAy
MzE3LC01LjU4NDggMzEuMDM0NDEsLTEzLjU3MzEzIDcuNTEyNjUsLTcuNDg2MSAxMS45NjQyMywt
MTYuMzUxNzUgMTMuMjg2OTUsLTI2LjQyNTM3IDEwLjQ3MjA2LC0xLjY4MjY0IDE5LjI5NDk0LC02
LjA0NTI0IDI2LjI3NTEyLC0xMy4wMDE1OCA0LjAxMzY0LC0zLjk5OTk0IDcuMTQ5NjMsLTguMzk3
MiA5LjQwNTMxLC0xMy4xNjE1NyAtMTQuMTU1NjksLTAuMzk5MTEgLTI4LjIzNjQ1LC00LjAwOTcy
IC00MS4wNTI0NywtMTAuODMwOTUgeiIgLz4KKyAgICA8cGF0aCBmaWxsPSJ1cmwoI3MpIiBkPSJt
IDE5Ni45NjAzOCwxNDYuMTE4NTQgYyAwLjEwMjU5LC0xMi44NDUxNCAtNC40MzAxNywtMjMuOTg1
NDEgLTEzLjUwNjM1LC0zMy4xMzQ2IEwgMTQ3LjU3MjkyLDc3LjIyNTM3NCBjIC0wLjI0MzQ5LC0w
LjI0MDg4NSAtMC40NjQ2OSwtMC40ODc5OTIgLTAuNjg2NzgsLTAuNzQ0ODc3IC0xLjQ4NDE2LC0x
LjczOTUyOSAtMi4xODc4OCwtMy41ODMwNTYgLTIuMjEwMTgsLTUuODA3MDIyIC0wLjAyNTksLTIu
NDcwMTg0IDAuODQ5MTEsLTQuNTA4Mzc1IDIuNzYwNSwtNi40MDc5MDIgMS45MTQwNiwtMS45MDkz
MDQgMy44NTMxLC0yLjczNzczNSA2LjM2NTY0LC0yLjY4NDQwMyAyLjUzNjYyLDAuMDI0IDQuNjI3
MjgsMC45NDMwOTcgNi41NzI1NywyLjg4MTczNCBsIDYwLjU5MTc4LDYwLjM4NDg0NiAxMi4xMTQw
OCwtMTIuMDY5MTQgYyAxLjEyMjAzLC0wLjkwNzU1IDEuOTU3NzcsLTEuNzY4ODcgMi44NzgyMywt
Mi45MzQxOCA1LjkxODc5LC03LjUxNTQ0IDUuMjY5NDcsLTE4LjI3MjYwOSAtMS41MTAwMywtMjUu
MDI4OTUgTCAxODcuMjA0NTYsMzcuNzI3MzE0IGMgLTkuMTkzOTMsLTkuMTU3MTkyIC0yMC4zNjcw
MywtMTMuNzc2Njc3IC0zMy4xNjc4OSwtMTMuNzI2OSAtMTIuOTQyNjYsLTAuMDUwNjcgLTI0LjE0
MTYzLDQuNTQ4Mzc1IC0zMy4yODczOSwxMy42NjI5MDEgLTkuMDI4OTIsOC45OTYzMDcgLTEzLjY0
MDE1LDE5LjkzOTI1IC0xMy43MDA4LDMyLjQ4NzUwMSBsIC0wLjAwNCwwLjE0MjIyIGMgLTAuMDAy
LDAuMTY3OTk4IC0wLjAwNSwwLjMzNjg4NCAtMC4wMDUsMC41MDY2NTkgLTAuMDkxLDEyLjIzMjcw
MSA0LjEwNzI5LDIyLjk1Nzg3IDEyLjQ4MTU0LDMxLjg4MTI4NSAwLjQwMjI2LDAuNDMwMjIgMC44
MDI3NCwwLjg1Nzc3IDEuMjIyODMsMS4yNzgyMSBsIDM1Ljc1MDg4LDM1LjYyNjEyIGMgMS44ODkw
OSwxLjg4MTc0IDIuNzE3NjksMy43OTYzOCAyLjY5MzYxLDYuMjA5NjggbCAwLjAwMywwLjIwOTc3
IGMgMC4wNTI3LDIuNDMxOTcgLTAuNzYwODEsNC4zNDU3MSAtMi42Mjc2LDYuMjA3OTEgLTEuNDQ3
NTksMS40MzkwOSAtMy4wNjI4NiwyLjI3ODE4IC00Ljk1NjQsMi42MDI2MiAxMi44MTYwMSw2Ljgy
MTIzIDI2Ljg5Njc3LDEwLjQzMTg0IDQxLjA1MjQ2LDEwLjgzMzYyIDIuODA1OTgsLTUuOTI1MjUg
NC4yNTA5LC0xMi40MTg0OCA0LjI5OTA2LC0xOS40MzUyNiB6IiAvPgorICAgIDxwYXRoIGZpbGw9
IiNmZmZmZmYiIGQ9Im0gMjE1LjY4MDkzLDkzLjE4MTU3NCBjIDIuODQ3MDEsLTIuODM4MTc5IDcu
NDYzNTksLTIuODM2NDAxIDEwLjMwODgzLDAgMi44NDQzMywyLjgzNDYyMyAyLjg0NjEyLDcuNDM1
NDQ2IC0wLjAwMiwxMC4yNzA5NTYgLTIuODQzNDUsMi44MzgxOCAtNy40NjI3MSwyLjgzODE4IC0x
MC4zMDcwNCwwIC0yLjg0NTI0LC0yLjgzNTUxIC0yLjg0NzkxLC03LjQzNTQ0NCAwLC0xMC4yNzA5
NTYgeiIgLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8ZyBmaWxsPSIjZmZkNDNiIj4KKyAgICAgIDxw
YXRoIGQ9Im0gMjcxLjYyMDQ2LDE3Ny4zMzMxMyBjIDAsNC4xNjM3IDEuNDY2MTksNy43MTIyNyA0
LjM5ODU4LDEwLjY0MzYxIDIuOTMyNCwyLjkzNTU2IDYuNDgyMDIsNC40MDA2OSAxMC42NDc4Myw0
LjQwMDY5IDQuMTY0NzUsMCA3LjcxNDM4LC0xLjQ2NTEzIDEwLjY0NTcyLC00LjQwMDY5IDIuOTMz
NDQsLTIuOTMxMzQgNC40MDA2OSwtNi40Nzk5MSA0LjQwMDY5LC0xMC42NDM2MSB2IC0zNS4wMDMz
MiBjIDAsLTIuMTIzNDUgMC43NjQ3LC0zLjk1MTk4IDIuMjk1MTQsLTUuNDgwMzIgMS41MzA0NSwt
MS41MzI1NiAzLjM1NzkzLC0yLjI5ODMxIDUuNDgzNDksLTIuMjk4MzEgaCAwLjEyNzQ1IGMgMi4x
NjY2NCwwIDMuOTcyLDAuNzY1NzUgNS40MTkyMywyLjI5ODMxIDEuNTMwNDUsMS41MjgzNCAyLjI5
NjIsMy4zNTc5MyAyLjI5NjIsNS40ODAzMiB2IDM1LjAwMzMyIGMgMCw0LjE2MzcgMS40NjYyLDcu
NzEyMjcgNC40MDA2OSwxMC42NDM2MSAyLjkzMTM0LDIuOTM1NTYgNi40Nzg4Niw0LjQwMDY5IDEw
LjY0NTcyLDQuNDAwNjkgNC4yMDc5NCwwIDcuNzc3NTgsLTEuNDY1MTMgMTAuNzA5OTcsLTQuNDAw
NjkgMi45MzM0NSwtMi45MzEzNCA0LjQwMDY5LC02LjQ3OTkxIDQuNDAwNjksLTEwLjY0MzYxIHYg
LTM1LjAwMzMyIGMgMCwtMi4xMjM0NSAwLjc2MzY1LC0zLjk1MTk4IDIuMjk1MTUsLTUuNDgwMzIg
MS40NDMwMiwtMS41MzI1NiAzLjI1MDQ5LC0yLjI5ODMxIDUuNDE5MjQsLTIuMjk4MzEgaCAwLjEy
NjQgYyAyLjEyNjYxLDAgMy45NTQwOSwwLjc2NTc1IDUuNDgzNDksMi4yOTgzMSAxLjQ4ODMxLDEu
NTI4MzQgMi4yMzE5NCwzLjM1NzkzIDIuMjMxOTQsNS40ODAzMiB2IDM1LjAwMzMyIGMgMCw4LjQ1
Njk2IC0yLjk5NzcsMTUuNjgyNjEgLTguOTg4ODcsMjEuNjc0ODQgLTUuOTkzMjksNS45OTIyNCAt
MTMuMjE5OTksOC45ODk5MyAtMjEuNjc2OTUsOC45ODk5MyAtMTAuMTE2OTYsMCAtMTcuNzIzOSwt
My4zNTU4MyAtMjIuODI2MDksLTEwLjA3MjcyIC01LjE0MjIyLDYuNzE2ODkgLTEyLjc3MjM0LDEw
LjA3MjcyIC0yMi44ODcxOSwxMC4wNzI3MiAtOC40NTgwMSwwIC0xNS42ODQ3MSwtMi45OTc2OSAt
MjEuNjc2OTUsLTguOTg5OTMgQyAyNTguOTk5OCwxOTMuMDE1NzQgMjU2LDE4NS43OTExMyAyNTYs
MTc3LjMzMzEzIHYgLTM1LjAwMzMyIGMgMCwtMi4xMjM0NSAwLjc2NTc1LC0zLjk1MTk4IDIuMjk2
MTksLTUuNDgwMzIgMS41Mjk0LC0xLjUzMjU2IDMuMzM1ODEsLTIuMjk4MzEgNS40MTkyNCwtMi4y
OTgzMSBoIDAuMTkxNyBjIDIuMDgyMzgsMCAzLjg4Nzc0LDAuNzY1NzUgNS40MjAyOSwyLjI5ODMx
IDEuNTI4MzQsMS41MjgzNCAyLjI5NDA5LDMuMzU3OTMgMi4yOTQwOSw1LjQ4MDMyIHYgMzUuMDAz
MzIgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0gNDQzLjk1MjE2LDE1NS45NzUzNCBjIDAuNTEwODUs
MS4wNjE3MyAwLjc2NjgsMi4xNDM0NiAwLjc2NjgsMy4yNTA0OCAwLDAuODkzMiAtMC4xNjk1Nywx
Ljc4NTM2IC0wLjUwOTc5LDIuNjc4NTQgLTAuNzIzNjMsMS45OTcwNyAtMi4wODM0MywzLjQ0MjIg
LTQuMDgwNSw0LjMzNDM0IC01Ljk1MTE0LDIuNjc4NTQgLTEzLjc3MDg1LDYuMjA3MTEgLTIzLjQ2
MjI4LDEwLjU4NDYzIC0xMi4wMjg3MSw1LjQzOTI0IC0xOS4wODQ3Nyw4LjY0ODY2IC0yMS4xNjcx
NSw5LjYyODIzIDMuMjI5NDMsNC4wNzk0NCA4LjI2NzM3LDYuMTE4NjMgMTUuMTEwNjcsNi4xMTg2
MyA0LjU0NzEsMCA4LjY3MDc3LC0xLjMzNzY5IDEyLjM2Nzg2LC00LjAxNjI1IDMuNjEyODMsLTIu
NjM1MzQgNi4xNDI4NiwtNi4wMzU0MSA3LjU4Nzk4LC0xMC4yMDIyNyAxLjIzMzQyLC0zLjQ4NTM4
IDMuNjk4MTUsLTUuMjI3NTQgNy4zOTUyNCwtNS4yMjc1NCAyLjYzNDMsMCA0LjczODgsMS4xMDcw
MiA2LjMxMTM4LDMuMzEzNjkgMC45Nzc0NiwxLjM2MTkzIDEuNDY2MTksMi43ODU5OCAxLjQ2NjE5
LDQuMjczMjUgMCwwLjg5MzIgLTAuMTY5NTgsMS44MDY0MSAtMC41MDg3NCwyLjc0MDY5IC0yLjUw
NzkxLDcuMjY5ODggLTYuOTA4NjEsMTMuMTM1NzMgLTEzLjE5NjgxLDE3LjU5OTYxIC02LjM3NTYz
LDQuNjMwMzEgLTEzLjUxNzAyLDYuOTQ3NTcgLTIxLjQyMzEsNi45NDc1NyAtMTAuMTE1OTEsMCAt
MTguNzY1NjMsLTMuNTg5NjUgLTI1Ljk0ODA5LC0xMC43NzQyIC03LjE4MzUxLC03LjE4MzUzIC0x
MC43NzUyNywtMTUuODMyMTkgLTEwLjc3NTI3LC0yNS45NTAyIDAsLTEwLjExNTkxIDMuNTkxNzYs
LTE4Ljc2MzUxIDEwLjc3NTI3LC0yNS45NTAxOSA3LjE4MTQyLC03LjE4MTQgMTUuODMyMTgsLTEw
Ljc3NDIyIDI1Ljk0ODA5LC0xMC43NzQyMiA3LjMwODg1LDAgMTMuOTgyNTcsMS45OTkxNiAyMC4w
MTkwNCw1Ljk5MjIzIDUuOTkxMTgsMy45MTUxMiAxMC40MzI5Niw5LjA1NTI0IDEzLjMyMzIxLDE1
LjQzMjk4IHogbSAtMzMuMzQzMzEsLTUuNjc4MzYgYyAtNS44NjU4MywwIC0xMC44NjA1OSwyLjA2
MzQzIC0xNC45ODMyMiw2LjE4NjA0IC00LjA4MDQ5LDQuMTI0NzMgLTYuMTIwNzMsOS4xMTk0OSAt
Ni4xMjA3MywxNC45ODMyMiB2IDAuNDQ2NjEgbCAzNS42Mzk1MSwtMTYuMDAyODIgYyAtMy4xNDQx
LC0zLjczODE3IC03Ljk5MDM1LC01LjYxMzA1IC0xNC41MzU1NiwtNS42MTMwNSB6IiAvPgorICAg
ICAgPHBhdGggZD0ibSA0NjUuMTIxNDEsMTA4LjQxMjQ2IGMgMi4wODIzOCwwIDMuODg3NzUsMC43
NDQ2OSA1LjQxOTI0LDIuMjMxOTQgMS41MzA0NSwxLjUyODM0IDIuMjk2MTksMy4zNTc5MyAyLjI5
NjE5LDUuNDgyNDQgdiAyNC43OTk5OCBjIDQuODAyMDIsLTQuMjQ3OTYgMTEuODM3MDEsLTYuMzc1
NjQgMjEuMTAxODUsLTYuMzc1NjQgMTAuMTE1OTEsMCAxOC43NjU2MSwzLjU5MTc3IDI1Ljk0OTE0
LDEwLjc3NDIyIDcuMTgyNDUsNy4xODU2MyAxMC43NzUyNywxNS44MzQyOSAxMC43NzUyNywyNS45
NTAyIDAsMTAuMTE2OTUgLTMuNTkyODIsMTguNzY1NjEgLTEwLjc3NTI3LDI1Ljk1MDE4IEMgNTEy
LjcwNTM2LDIwNC40MTAzNSA1MDQuMDU1NjYsMjA4IDQ5My45Mzg2OSwyMDggYyAtMTAuMTE2OTYs
MCAtMTguNzQzNDksLTMuNTY5NjQgLTI1Ljg4MzgyLC0xMC43MTIwNyAtNy4xODQ1NywtNy4wOTUw
NCAtMTAuNzk3NCwtMTUuNzAyNjIgLTEwLjgzOTU0LC0yNS44MjA2MyB2IC01NS4zMzk0MSBjIDAs
LTIuMTI1NTYgMC43NjU3NiwtMy45NTQwOSAyLjI5NjIxLC01LjQ4MjQzIDEuNTI5MzksLTEuNDg3
MjcgMy4zMzU4LC0yLjIzMTk2IDUuNDE5MjQsLTIuMjMxOTYgaCAwLjE5MDYzIHogbSAyOC44MTYy
Miw0MS44ODQ1MiBjIC01Ljg2NDc3LDAgLTEwLjg1OTUzLDIuMDYzNDMgLTE0Ljk4MzIsNi4xODYw
NCAtNC4wNzg0LDQuMTI0NzMgLTYuMTE5NjksOS4xMTk0OSAtNi4xMTk2OSwxNC45ODMyMiAwLDUu
ODIzNyAyLjA0MTI5LDEwLjc5NjMzIDYuMTE5NjksMTQuOTE4OTYgNC4xMjM2Nyw0LjEyMjYzIDku
MTE3MzcsNi4xODM5MyAxNC45ODMyLDYuMTgzOTMgNS44MjM3MSwwIDEwLjc5NjM1LC0yLjA2MTMg
MTQuOTIwMDIsLTYuMTgzOTMgNC4xMjA1MSwtNC4xMjI2MyA2LjE4Mjg4LC05LjA5NTI2IDYuMTgy
ODgsLTE0LjkxODk2IDAsLTUuODYyNjcgLTIuMDYyMzcsLTEwLjg1ODQ5IC02LjE4Mjg4LC0xNC45
ODMyMiAtNC4xMjM2NywtNC4xMjI2MSAtOS4wOTUyNSwtNi4xODYwNCAtMTQuOTIwMDIsLTYuMTg2
MDQgeiIgLz4KKyAgICA8L2c+CisgICAgPGcgZmlsbD0iIzMwNjk5OCI+CisgICAgICA8cGF0aCBk
PSJtIDU2MS4yNjQ2NywxNTAuMTczNzUgYyAtMS44NzA2NiwwIC0zLjQ0MzI1LDAuNjM2MiAtNC43
MTc3MywxLjkxMDcgLTEuMjc1NTYsMS4zMTg3MiAtMS45MTI4MSwyLjg5MDI1IC0xLjkxMjgxLDQu
NzE3NzMgMCwyLjU1MTEgMS4yMzIzNyw0LjQ2Mzg5IDMuNjk5MTksNS43MzczMyAwLjg0ODk4LDAu
NDY4NzIgNC4zOTg1OSwxLjUzMDQ1IDEwLjY0Njc4LDMuMTg4MzQgNS4wNTc5NSwxLjQ0NjE5IDgu
ODE4MjUsMy4zMzY4NiAxMS4yODI5Niw1LjY3NDEzIDMuNTI5NjMsMy4zNTg5OCA1LjI5MTc5LDgu
MTQwOTcgNS4yOTE3OSwxNC4zNDcwMyAwLDYuMTE4NjIgLTIuMTY3NjksMTEuMzY4MjkgLTYuNTAy
MDMsMTUuNzQ1ODEgLTQuMzc4NTcsNC4zMzY0NCAtOS42MjgyMyw2LjUwMzA4IC0xNS43NDc5MSw2
LjUwMzA4IGggLTE2LjY0MDA1IGMgLTIuMDg0NDgsMCAtMy44ODg3OSwtMC43NjM2NSAtNS40MjAy
OSwtMi4yOTYyMSAtMS41MzA0NSwtMS40NDQwNyAtMi4yOTYyLC0zLjI1MDQ4IC0yLjI5NjIsLTUu
NDE3MTIgdiAtMC4xMjk1MyBjIDAsLTIuMTIzNDUgMC43NjU3NSwtMy45NTE5OCAyLjI5NjIsLTUu
NDgyNDMgMS41MzA0NCwtMS41MzA0NSAzLjMzNTgxLC0yLjI5NjE5IDUuNDIwMjksLTIuMjk2MTkg
aCAxNy4yNzczIGMgMS44Njk2LDAgMy40NDMyNCwtMC42MzYyIDQuNzE3NzMsLTEuOTEwNyAxLjI3
NTU2LC0xLjI3NTU0IDEuOTEyODEsLTIuODQ3MDcgMS45MTI4MSwtNC43MTc3NCAwLC0yLjMzOTM3
IC0xLjIxMTMxLC00LjEwMzY2IC0zLjYzMjg1LC01LjI5MDczIC0wLjYzNzIzLC0wLjMwMDE4IC00
LjIwODk4LC0xLjM2MTkyIC0xMC43MTIwOCwtMy4xODgzNCAtNS4wNTg5OSwtMS40ODcyNSAtOC44
MjEzOSwtMy40NDUzNSAtMTEuMjg2MTEsLTUuODY2OSAtMy41Mjg1NiwtMy40NDIxNyAtNS4yOTA3
NSwtOC4zMDk0OSAtNS4yOTA3NSwtMTQuNTk5OCAwLC02LjEyMDczIDIuMTY4NzYsLTExLjM0NzIx
IDYuNTA0MTQsLTE1LjY4MjYxIDQuMzc2NDgsLTQuMzc3NTIgOS42MjcxOCwtNi41NjgzOSAxNS43
NDY4NywtNi41NjgzOSBoIDExLjczMTY2IGMgMi4xMjQ1MiwwIDMuOTUzMDQsMC43NjU3NSA1LjQ4
MzQ5LDIuMjk4MzEgMS41MjkzOSwxLjUyODM0IDIuMjk1MTUsMy4zNTc5MyAyLjI5NTE1LDUuNDgw
MzIgdiAwLjEyNzQ1IGMgMCwyLjE2ODc2IC0wLjc2NTc2LDMuOTc2MjIgLTIuMjk1MTUsNS40MjAz
IC0xLjUzMDQ1LDEuNTI4MzQgLTMuMzU4OTcsMi4yOTYxOSAtNS40ODM0OSwyLjI5NjE5IHoiIC8+
CisgICAgICA8cGF0aCBkPSJtIDYzMC41Njc3LDEzNC41NTExOCBjIDEwLjExNTksMCAxOC43NjQ1
NiwzLjU5MTc3IDI1Ljk0OTEyLDEwLjc3NDIyIDcuMTgyNDYsNy4xODU2MyAxMC43NzQyMiwxNS44
MzQyOSAxMC43NzQyMiwyNS45NTAyIDAsMTAuMTE2OTUgLTMuNTkxNzYsMTguNzY1NjEgLTEwLjc3
NDIyLDI1Ljk1MDE4IEMgNjQ5LjMzMzMxLDIwNC40MDkyOSA2NDAuNjgzNiwyMDggNjMwLjU2Nzcs
MjA4IGMgLTEwLjExNTkyLDAgLTE4Ljc2NTYzLC0zLjU4OTY1IC0yNS45NDgxLC0xMC43NzQyMiAt
Ny4xODM1MSwtNy4xODM1MSAtMTAuNzc1MjYsLTE1LjgzMjE3IC0xMC43NzUyNiwtMjUuOTUwMTgg
MCwtMTAuMTE1OTEgMy41OTE3NSwtMTguNzYzNTIgMTAuNzc1MjYsLTI1Ljk1MDIgNy4xODI0Nywt
Ny4xODI0NSAxNS44MzIxOCwtMTAuNzc0MjIgMjUuOTQ4MSwtMTAuNzc0MjIgeiBtIDAsMTUuNzQ1
OCBjIC01Ljg2NTg1LDAgLTEwLjg2MDU5LDIuMDYzNDMgLTE0Ljk4MzIyLDYuMTg2MDQgLTQuMDgx
NTUsNC4xMjQ3MyAtNi4xMjE3OCw5LjExOTQ5IC02LjEyMTc4LDE0Ljk4MzIyIDAsNS44MjM3IDIu
MDQwMjMsMTAuNzk2MzMgNi4xMjE3OCwxNC45MTg5NiA0LjEyMjYzLDQuMTIyNjMgOS4xMTYzMiw2
LjE4MzkzIDE0Ljk4MzIyLDYuMTgzOTMgNS44MjI2NCwwIDEwLjc5NTI3LC0yLjA2MTMgMTQuOTE4
OTYsLTYuMTgzOTMgNC4xMjI2MSwtNC4xMjI2MyA2LjE4MzkzLC05LjA5NTI2IDYuMTgzOTMsLTE0
LjkxODk2IDAsLTUuODYyNjcgLTIuMDYxMzIsLTEwLjg1ODQ5IC02LjE4MzkzLC0xNC45ODMyMiAt
NC4xMjM2OSwtNC4xMjI2MSAtOS4wOTUyNywtNi4xODYwNCAtMTQuOTE4OTYsLTYuMTg2MDQgeiIg
Lz4KKyAgICAgIDxwYXRoIGQ9Im0gNzI0LjAzNDUsMTM2LjI3MzMzIGMgMy42MTM4OCwxLjE0ODEx
IDUuNDIwMywzLjYxMjgyIDUuNDIwMyw3LjM5NTIzIHYgMC4zMjEyNSBjIDAsMi41OTAwOCAtMS4w
NDI3OCw0LjY1MTM4IC0zLjEyNTE2LDYuMTgzOTQgLTEuNDQ1MTIsMS4wMTg1NCAtMi45MzM0Mywx
LjUyODM0IC00LjQ2MTc4LDEuNTI4MzQgLTAuODA4OTQsMCAtMS42Mzc4OSwtMC4xMjc0NSAtMi40
ODY4NCwtMC4zODIzNSAtMi4wODM0NCwtMC42NzkzOCAtNC4yMzAwNywtMS4wMjI3NiAtNi40Mzg4
MywtMS4wMjI3NiAtNS44NjU4NSwwIC0xMC44NjE2NSwyLjA2MzQzIC0xNC45ODMyMiw2LjE4NjA0
IC00LjA4MTU0LDQuMTI0NzMgLTYuMTIwNzQsOS4xMTk0OSAtNi4xMjA3NCwxNC45ODMyMiAwLDUu
ODIzNyAyLjAzOTIsMTAuNzk2MzMgNi4xMjA3NCwxNC45MTg5NiA0LjEyMTU3LDQuMTIyNjMgOS4x
MTYzMyw2LjE4MzkzIDE0Ljk4MzIyLDYuMTgzOTMgMi4yMDk4MiwwIDQuMzU2NDUsLTAuMzM5MTUg
Ni40Mzg4MywtMS4wMjA2NSAwLjgwNjgzLC0wLjI1NDg5IDEuNjE0NzEsLTAuMzgyMzQgMi40MjI1
OSwtMC4zODIzNCAxLjU3MDQ2LDAgMy4wODE5NywwLjUxMTkgNC41MjcwOSwxLjUzMjU0IDIuMDgy
MzgsMS41MjgzNSAzLjEyNTE0LDMuNjEyODMgMy4xMjUxNCw2LjI0ODE5IDAsMy43NDAyNyAtMS44
MDc0Niw2LjIwNSAtNS40MjAyOCw3LjM5NTI0IC0zLjU2OTY0LDEuMTA0OTEgLTcuMjY2NzMsMS42
NTU3OSAtMTEuMDkyMzIsMS42NTU3OSAtMTAuMTE1OTEsMCAtMTguNzY1NjIsLTMuNTg5NjUgLTI1
Ljk1MDE5LC0xMC43NzQyMyAtNy4xODE0LC03LjE4MzUxIC0xMC43NzQyMiwtMTUuODMyMTcgLTEw
Ljc3NDIyLC0yNS45NTAxOCAwLC0xMC4xMTU5MiAzLjU5MTc2LC0xOC43NjM1MiAxMC43NzQyMiwt
MjUuOTUwMiA3LjE4MzUxLC03LjE4MTQgMTUuODMzMjIsLTEwLjc3NDIyIDI1Ljk1MDE5LC0xMC43
NzQyMiAzLjgyMzQ4LDAuMDAyIDcuNTIxNjIsMC41NzgyNyAxMS4wOTEyNiwxLjcyNDI2IHoiIC8+
CisgICAgICA8cGF0aCBkPSJtIDc0OC4xOTgyOSwxMDguNDEyNDYgYyAyLjA4MTMyLDAgMy44ODc3
MywwLjc0NDY5IDUuNDIwMjksMi4yMzE5NCAxLjUyOTQsMS41MjgzNCAyLjI5NTE0LDMuMzU3OTMg
Mi4yOTUxNCw1LjQ4MjQ0IHYgNDQuMTgyODQgaCAyLjQyMjU5IGMgNS40NDAzMSwwIDEwLjE3ODA1
LC0xLjgwNjQyIDE0LjIxODUyLC01LjQyMDMgMy45NTE5OCwtMy42MTI4MyA2LjIwMzk0LC04LjA3
NDYxIDYuNzU2OTMsLTEzLjM4ODUyIDAuMjU0OTEsLTEuOTk3MDUgMS4xMDU5NywtMy42MzQ5NCAy
LjU1MTEsLTQuOTA4MzcgMS40NDQwOCwtMS4zNTk4MiAzLjE2NTE3LC0yLjA0MTMxIDUuMTYzMjgs
LTIuMDQxMzEgaCAwLjE5MDY2IGMgMi4yNTQwNSwwIDQuMTQ1NzgsMC44NTIxMiA1LjY3NTE3LDIu
NTUxMDkgMS4zNjA4NywxLjQ4NzI3IDIuMDQwMjYsMy4yMDk0MiAyLjA0MDI2LDUuMTYzMjkgMCww
LjI1NDkxIC0wLjAyMjIsMC41MzI5OCAtMC4wNjMyLDAuODI4OTUgLTEuMDIwNjQsMTAuNjY4ODkg
LTUuMTAxMTUsMTguNjU5MjMgLTEyLjI0MTQ3LDIzLjk3MTAzIDMuNzM5MjIsMi4yOTgzMSA3LjE4
MjQ2LDYuMTg2MDQgMTAuMzI5NzMsMTEuNjY4NDkgMy4yNzE1NSw1LjY1MzA2IDQuOTA5NDQsMTEu
NzU0ODMgNC45MDk0NCwxOC4yOTY4OCB2IDMuMjU0NzEgYyAwLDIuMTY2NjQgLTAuNzY2OCwzLjk3
MiAtMi4yOTUxNSw1LjQxNzEzIC0xLjUzMjU1LDEuNTMyNTYgLTMuMzM3OTEsMi4yOTYxOSAtNS40
MjAzLDIuMjk2MTkgaCAtMC4xOTE3IGMgLTIuMDgzNDIsMCAtMy44ODg3OSwtMC43NjM2MyAtNS40
MTkyMiwtMi4yOTYxOSAtMS41MzA0NSwtMS40NDQwOCAtMi4yOTUxNCwtMy4yNTA0OSAtMi4yOTUx
NCwtNS40MTcxMyB2IC0zLjI1NDcxIGMgLTAuMDQ0MiwtNS43NzYyOSAtMi4xMDU1NSwtMTAuNzMx
MDIgLTYuMTg1LC0xNC44NTU3NSAtNC4xMjM2NywtNC4wNzk0NCAtOS4wOTczNiwtNi4xMTg2MyAt
MTQuOTE4OTYsLTYuMTE4NjMgaCAtNS4yMjc1NCB2IDI0LjIyODA0IGMgMCwyLjE2NjY0IC0wLjc2
NTc0LDMuOTcxOTkgLTIuMjk1MTQsNS40MTcxMiAtMS41MzE1LDEuNTMyNTYgLTMuMzM4OTcsMi4y
OTYyMSAtNS40MjAyOCwyLjI5NjIxIGggLTAuMTkzODEgYyAtMi4wODIzNywwIC0zLjg4NjY4LC0w
Ljc2MzY1IC01LjQxODE5LC0yLjI5NjIxIC0xLjUyOTM5LC0xLjQ0NDA3IC0yLjI5NTE1LC0zLjI1
MDQ4IC0yLjI5NTE1LC01LjQxNzEyIHYgLTg0LjE1ODc5IGMgMCwtMi4xMjU1NiAwLjc2NTc2LC0z
Ljk1NDA4IDIuMjk1MTUsLTUuNDgyNDMgMS41MzA0NSwtMS40ODcyNyAzLjMzNTgyLC0yLjIzMTk1
IDUuNDE4MTksLTIuMjMxOTUgaCAwLjE5MzgxIHoiIC8+CisgICAgICA8cGF0aCBkPSJtIDg3Ni44
NTgwMSwxNTUuOTc1MzQgYyAwLjUwOTgsMS4wNjE3MyAwLjc2NDY5LDIuMTQzNDYgMC43NjQ2OSwz
LjI1MDQ4IDAsMC44OTMyIC0wLjE3MDYzLDEuNzg1MzYgLTAuNTA4NzQsMi42Nzg1NCAtMC43MjM2
MiwxLjk5NzA3IC0yLjA4MzQyLDMuNDQyMiAtNC4wODA0OSw0LjMzNDM0IC01Ljk1MTE1LDIuNjc4
NTQgLTEzLjc3MTkxLDYuMjA3MTEgLTIzLjQ2MjI5LDEwLjU4NDYzIC0xMi4wMjg2OSw1LjQzOTI0
IC0xOS4wODQ3Niw4LjY0ODY2IC0yMS4xNjcxNSw5LjYyODIzIDMuMjI4MzgsNC4wNzk0NCA4LjI2
NjMyLDYuMTE4NjMgMTUuMTEwNjYsNi4xMTg2MyA0LjU0NjA2LDAgOC42Njk3MywtMS4zMzc2OSAx
Mi4zNjg5MywtNC4wMTYyNSAzLjYxMTc2LC0yLjYzNTM0IDYuMTQwNzUsLTYuMDM1NDEgNy41ODU4
NywtMTAuMjAyMjcgMS4yMzIzOCwtMy40ODUzOCAzLjY5OTIsLTUuMjI3NTQgNy4zOTUyNCwtNS4y
Mjc1NCAyLjYzNTM2LDAgNC43Mzk4NSwxLjEwNzAyIDYuMzEzNDgsMy4zMTM2OSAwLjk3NTM2LDEu
MzYxOTMgMS40NjUxNSwyLjc4NTk4IDEuNDY1MTUsNC4yNzMyNSAwLDAuODkzMiAtMC4xNjk1OCwx
LjgwNjQxIC0wLjUwOTgsMi43NDA2OSAtMi41MDc5MSw3LjI2OTg4IC02LjkwNjUsMTMuMTM1NzMg
LTEzLjE5NjgxLDE3LjU5OTYxIC02LjM3NTYzLDQuNjMwMzEgLTEzLjUxNTk4LDYuOTQ3NTcgLTIx
LjQyMjA2LDYuOTQ3NTcgLTEwLjExNTksMCAtMTguNzY1NjEsLTMuNTg5NjUgLTI1Ljk0ODA4LC0x
MC43NzQyIC03LjE4MzUxLC03LjE4MzUzIC0xMC43NzUyNiwtMTUuODMyMTkgLTEwLjc3NTI2LC0y
NS45NTAyIDAsLTEwLjExNTkxIDMuNTkxNzUsLTE4Ljc2MzUxIDEwLjc3NTI2LC0yNS45NTAxOSA3
LjE4MTQxLC03LjE4MTQgMTUuODMyMTgsLTEwLjc3NDIyIDI1Ljk0ODA4LC0xMC43NzQyMiA3LjMw
ODg3LDAgMTMuOTgzNjQsMS45OTkxNiAyMC4wMTkwNiw1Ljk5MjIzIDUuOTkyMjMsMy45MTUxMiAx
MC40MzI5NCw5LjA1NTI0IDEzLjMyNDI2LDE1LjQzMjk4IHogbSAtMzMuMzQ0MzYsLTUuNjc4MzYg
YyAtNS44NjQ3OSwwIC0xMC44NjA1OSwyLjA2MzQzIC0xNC45ODMyMiw2LjE4NjA0IC00LjA4MDQ5
LDQuMTI0NzMgLTYuMTIwNzQsOS4xMTk0OSAtNi4xMjA3NCwxNC45ODMyMiB2IDAuNDQ2NjEgbCAz
NS42Mzk1MiwtMTYuMDAyODIgYyAtMy4xNDUxNiwtMy43MzgxNyAtNy45OTAzNCwtNS42MTMwNSAt
MTQuNTM1NTYsLTUuNjEzMDUgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0gODk4LjAyNDExLDEwOC40
MTI0NiBjIDIuMDgyMzgsMCAzLjg4ODc5LDAuNzQ0NjkgNS40MjAyOCwyLjIzMTk0IDEuNTI5Mzks
MS41MjgzNCAyLjI5NTE1LDMuMzU3OTMgMi4yOTUxNSw1LjQ4MjQ0IHYgMTguNDI0MzQgaCA5LjU2
Mzk4IGMgMi4wODIzNywwIDMuODg3NzIsMC43NjU3NSA1LjQyMDI4LDIuMjk4MzEgMS41Mjk0LDEu
NTI4MzQgMi4yOTMwNCwzLjM1NzkzIDIuMjkzMDQsNS40ODAzMiB2IDAuMTI3NDUgYyAwLDIuMTY4
NzYgLTAuNzYzNjQsMy45NzYyMSAtMi4yOTMwNCw1LjQyMDMgLTEuNTMxNSwxLjUyODM0IC0zLjMz
NzkxLDIuMjk2MTkgLTUuNDIwMjgsMi4yOTYxOSBoIC05LjU2Mzk4IHYgMzcuODA0MDUgYyAwLDEu
MjM0NDYgMC40MjM0MywyLjI3NzI0IDEuMjc1NTQsMy4xMjUxNCAwLjg1MDAyLDAuODUyMTIgMS45
MTI4LDEuMjc1NTUgMy4xODczLDEuMjc1NTUgaCA1LjEwMTE0IGMgMi4wODIzNywwIDMuODg3NzIs
MC43NjU3NCA1LjQyMDI4LDIuMjk2MTkgMS41Mjk0LDEuNTMwNDUgMi4yOTMwNCwzLjM1ODk4IDIu
MjkzMDQsNS40ODI0MyB2IDAuMTI5NTQgYyAwLDIuMTY2NjQgLTAuNzYzNjQsMy45NzE5OSAtMi4y
OTMwNCw1LjQxNzExIEMgOTE5LjE5MjMsMjA3LjIzNjM1IDkxNy4zODU4OSwyMDggOTE1LjMwMzUy
LDIwOCBoIC01LjEwMTE0IGMgLTUuNTI1NjMsMCAtMTAuMjY0NDIsLTEuOTUzODcgLTE0LjIxNzQ2
LC01Ljg2NDc4IC0zLjkxMTk2LC0zLjk1MTk4IC01Ljg2NDc5LC04LjY3MDc4IC01Ljg2NDc5LC0x
NC4xNTUzMiB2IC03MS44NTA5NSBjIDAsLTIuMTI1NTggMC43NjQ3LC0zLjk1NDEgMi4yOTUxNSwt
NS40ODI0NSAxLjUzMDQ1LC0xLjQ4NzI1IDMuMzM2ODYsLTIuMjMxOTMgNS40MTkyNCwtMi4yMzE5
MyBoIDAuMTg5NTkgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0gOTUxLjcwODc3LDE1MC4xNzM3NSBj
IC0xLjg3MDY2LDAgLTMuNDQzMjQsMC42MzYyIC00LjcxNzczLDEuOTEwNyAtMS4yNzU1NiwxLjMx
ODcyIC0xLjkxMjgxLDIuODkwMjUgLTEuOTEyODEsNC43MTc3MyAwLDIuNTUxMSAxLjIzMjM4LDQu
NDYzODkgMy42OTcxMSw1LjczNzMzIDAuODUyMSwwLjQ2ODcyIDQuNDAwNjcsMS41MzA0NSAxMC42
NDg4NiwzLjE4ODM0IDUuMDU2OTEsMS40NDYxOSA4LjgxODI1LDMuMzM2ODYgMTEuMjg0MDIsNS42
NzQxMyAzLjUyNzUxLDMuMzU4OTggNS4yOTE4LDguMTQwOTcgNS4yOTE4LDE0LjM0NzAzIDAsNi4x
MTg2MiAtMi4xNjg3NiwxMS4zNjgyOSAtNi41MDMxLDE1Ljc0NTgxIC00LjM3NzUyLDQuMzM2NDQg
LTkuNjI4MjIsNi41MDMwOCAtMTUuNzQ3ODksNi41MDMwOCBoIC0xNi42NDAwNyBjIC0yLjA4MzQy
LDAgLTMuODg4NzksLTAuNzYzNjUgLTUuNDIwMjgsLTIuMjk2MjEgLTEuNTMwNDUsLTEuNDQ0MDcg
LTIuMjk0MSwtMy4yNTA0OCAtMi4yOTQxLC01LjQxNzEyIHYgLTAuMTI5NTMgYyAwLC0yLjEyMzQ1
IDAuNzYzNjUsLTMuOTUxOTggMi4yOTQxLC01LjQ4MjQzIDEuNTMwNDUsLTEuNTMwNDUgMy4zMzY4
NiwtMi4yOTYxOSA1LjQyMDI4LC0yLjI5NjE5IGggMTcuMjc3MyBjIDEuODY5NjIsMCAzLjQ0NDMs
LTAuNjM2MiA0LjcxNzc1LC0xLjkxMDcgMS4yNzU1NCwtMS4yNzU1NCAxLjkxMjc5LC0yLjg0NzA3
IDEuOTEyNzksLTQuNzE3NzQgMCwtMi4zMzkzNyAtMS4yMTEzLC00LjEwMzY2IC0zLjYzMjgzLC01
LjI5MDczIC0wLjYzOTM2LC0wLjMwMDE4IC00LjIwOSwtMS4zNjE5MiAtMTAuNzEyMDgsLTMuMTg4
MzQgLTUuMDU5MDEsLTEuNDg3MjUgLTguODIxNCwtMy40NDUzNSAtMTEuMjg2MTMsLTUuODY2OSAt
My41Mjg1NiwtMy40NDIxNyAtNS4yOTA3MywtOC4zMDk0OSAtNS4yOTA3MywtMTQuNTk5OCAwLC02
LjEyMDczIDIuMTY4NzUsLTExLjM0NzIxIDYuNTA0MTMsLTE1LjY4MjYxIDQuMzc2NDcsLTQuMzc3
NTIgOS42MjcxOCwtNi41NjgzOSAxNS43NDc5MSwtNi41NjgzOSBoIDExLjczMDYzIGMgMi4xMjY2
LDAgMy45NTMwNCwwLjc2NTc1IDUuNDgyNDMsMi4yOTgzMSAxLjUzMDQ1LDEuNTI4MzQgMi4yOTUx
NCwzLjM1NzkzIDIuMjk1MTQsNS40ODAzMiB2IDAuMTI3NDUgYyAwLDIuMTY4NzYgLTAuNzY0Njks
My45NzYyMiAtMi4yOTUxNCw1LjQyMDMgLTEuNTI5MzksMS41MjgzNCAtMy4zNTY4NywyLjI5NjE5
IC01LjQ4MjQzLDIuMjk2MTkgeiIgLz4KKyAgICA8L2c+CisgIDwvZz4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vaWNvbi5zdmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvbG9n
by9pY29uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNiNzYw
OTQwYWExOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9sb2dvL2ljb24uc3Zn
CkBAIC0wLDAgKzEsMTUgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiPgorICA8bGlu
ZWFyR3JhZGllbnQgaWQ9InciIHgxPSIwIiB5MT0iMCIgeDI9IjAuNjY2NyIgeTI9IjAuNjY2NyI+
CisgICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIgLz4KKyAgICA8c3Rv
cCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmQ0M2IiIC8+CisgIDwvbGluZWFyR3JhZGll
bnQ+CisgIDxsaW5lYXJHcmFkaWVudCBpZD0icyIgeDE9IjAiIHkxPSIwIiB4Mj0iMC42NjY3IiB5
Mj0iMC42NjY3Ij4KKyAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0IiAv
PgorICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIgLz4KKyAgPC9s
aW5lYXJHcmFkaWVudD4KKyAgPGc+CisgICAgPHBhdGggZmlsbD0idXJsKCN3KSIgZD0ibSAxNTEu
NjA3MDgsMTU0LjgxNjE4IGMgLTAuNDM3MDQsMC4wNzQ3IC0wLjg4NjU2LDAuMTI5NzggLTEuMzU1
NzIsMC4xNDkzMyAtMi40NTgxMywwLjA3NjQgLTQuMjUzNTcsLTAuNTg2NjUgLTUuODIzMzUsLTIu
MTUxMDcgbCAtOC44OTI0NiwtOC44NTk0MiAtMTEuMjM0NjQsLTExLjE5ODA1IC0zNi4wNDA3NTcs
LTM1LjkxOTQ1MiBjIC0zLjQzNTY4LC0zLjQyMjE3IC03LjMzMjQ4NSwtNS4zNDc0NzQgLTExLjU4
OTYyNiwtNS43MjM0NjggLTIuMjI5ODAzLC0wLjE5ODIxOSAtNC40NzM4NzcsMC4wMzExMSAtNi42
NDAzNTQsMC42NzU1NDUgLTMuMjQyMTMzLDAuOTQ0ODc1IC02LjEzNTUyNiwyLjY2NDg0OCAtOC41
OTM2NjIsNS4xMTYzNjYgLTMuODM0MzY5LDMuODE5NDk5IC01Ljg2MzQ5LDguNDE0OTc5IC01Ljg3
NTk3NywxMy4yODc3OTkgLTAuMDYwNjUsNC45NTI4MSAxLjk1MTUyMyw5LjYwMDc0IDUuODA4MTky
LDEzLjQ0NDI0IGwgNTUuNjIyODk0LDU1LjQzNjQ4IGMgMS44MjIxOSwxLjg0MTc1IDIuNjU5NzEs
My43OTU0OSAyLjYzMzg0LDYuMTQ1NjggbCAwLjAwNCwwLjIwOCBjIDAuMDUyNywyLjQzMTk2IC0w
Ljc1OTkxLDQuMzQ1NzEgLTIuNjI2Nyw2LjIwNjEyIC0xLjc4MDI4LDEuNzc1OTggLTMuODA5NCwy
LjY1MjQxIC02LjMwOTQ1LDIuNzU1NTIgLTIuNDU4MTQsMC4wNzY0IC00LjI1NDQ2LC0wLjU4ODQ0
IC01LjgyNTE0LC0yLjE1Mjg2IEwgNDguNzAyNTUxLDEzNi4yNjE4IGMgLTUuMjE0MTcyLC01LjE5
NDU5IC0xMS43MDI4OTksLTYuOTg3NDUgLTE4LjIyOTk4LC01LjA0ODgxIC0zLjI0NTcwMSwwLjk0
MzEgLTYuMTM1NTI3LDIuNjYzMDcgLTguNTk1NDQ2LDUuMTE0NTkgLTMuODM0MzcsMy44MjEyNyAt
NS44NjUyNzUsOC40MTY3NiAtNS44NzU5NzgsMTMuMjg5NTcgLTAuMDU2MTksNC45NTI4MSAxLjk1
MTUyNCw5LjYwMjUyIDUuODA2NDA5LDEzLjQ0NzggbCA1OC4xMDY4OSw1Ny45MDU3NyBjIDguMzE5
ODQyLDguMjkxNDMgMTkuMzQwNDIxLDExLjkzNzYgMzIuNzQzMzE0LDEwLjgzODA2IDEyLjU3OTY3
LC0xLjAyMDQzIDIzLjAyMzE3LC01LjU4NDggMzEuMDM0NDEsLTEzLjU3MzEzIDcuNTEyNjUsLTcu
NDg2MSAxMS45NjQyMywtMTYuMzUxNzUgMTMuMjg2OTUsLTI2LjQyNTM3IDEwLjQ3MjA2LC0xLjY4
MjY0IDE5LjI5NDk0LC02LjA0NTI0IDI2LjI3NTEyLC0xMy4wMDE1OCA0LjAxMzY0LC0zLjk5OTk0
IDcuMTQ5NjMsLTguMzk3MiA5LjQwNTMxLC0xMy4xNjE1NyAtMTQuMTU1NjksLTAuMzk5MTEgLTI4
LjIzNjQ1LC00LjAwOTcyIC00MS4wNTI0NywtMTAuODMwOTUgeiIgLz4KKyAgICA8cGF0aCBmaWxs
PSJ1cmwoI3MpIiBkPSJtIDE5Ni45NjAzOCwxNDYuMTE4NTQgYyAwLjEwMjU5LC0xMi44NDUxNCAt
NC40MzAxNywtMjMuOTg1NDEgLTEzLjUwNjM1LC0zMy4xMzQ2IEwgMTQ3LjU3MjkyLDc3LjIyNTM3
NCBjIC0wLjI0MzQ5LC0wLjI0MDg4NSAtMC40NjQ2OSwtMC40ODc5OTIgLTAuNjg2NzgsLTAuNzQ0
ODc3IC0xLjQ4NDE2LC0xLjczOTUyOSAtMi4xODc4OCwtMy41ODMwNTYgLTIuMjEwMTgsLTUuODA3
MDIyIC0wLjAyNTksLTIuNDcwMTg0IDAuODQ5MTEsLTQuNTA4Mzc1IDIuNzYwNSwtNi40MDc5MDIg
MS45MTQwNiwtMS45MDkzMDQgMy44NTMxLC0yLjczNzczNSA2LjM2NTY0LC0yLjY4NDQwMyAyLjUz
NjYyLDAuMDI0IDQuNjI3MjgsMC45NDMwOTcgNi41NzI1NywyLjg4MTczNCBsIDYwLjU5MTc4LDYw
LjM4NDg0NiAxMi4xMTQwOCwtMTIuMDY5MTQgYyAxLjEyMjAzLC0wLjkwNzU1IDEuOTU3NzcsLTEu
NzY4ODcgMi44NzgyMywtMi45MzQxOCA1LjkxODc5LC03LjUxNTQ0IDUuMjY5NDcsLTE4LjI3MjYw
OSAtMS41MTAwMywtMjUuMDI4OTUgTCAxODcuMjA0NTYsMzcuNzI3MzE0IGMgLTkuMTkzOTMsLTku
MTU3MTkyIC0yMC4zNjcwMywtMTMuNzc2Njc3IC0zMy4xNjc4OSwtMTMuNzI2OSAtMTIuOTQyNjYs
LTAuMDUwNjcgLTI0LjE0MTYzLDQuNTQ4Mzc1IC0zMy4yODczOSwxMy42NjI5MDEgLTkuMDI4OTIs
OC45OTYzMDcgLTEzLjY0MDE1LDE5LjkzOTI1IC0xMy43MDA4LDMyLjQ4NzUwMSBsIC0wLjAwNCww
LjE0MjIyIGMgLTAuMDAyLDAuMTY3OTk4IC0wLjAwNSwwLjMzNjg4NCAtMC4wMDUsMC41MDY2NTkg
LTAuMDkxLDEyLjIzMjcwMSA0LjEwNzI5LDIyLjk1Nzg3IDEyLjQ4MTU0LDMxLjg4MTI4NSAwLjQw
MjI2LDAuNDMwMjIgMC44MDI3NCwwLjg1Nzc3IDEuMjIyODMsMS4yNzgyMSBsIDM1Ljc1MDg4LDM1
LjYyNjEyIGMgMS44ODkwOSwxLjg4MTc0IDIuNzE3NjksMy43OTYzOCAyLjY5MzYxLDYuMjA5Njgg
bCAwLjAwMywwLjIwOTc3IGMgMC4wNTI3LDIuNDMxOTcgLTAuNzYwODEsNC4zNDU3MSAtMi42Mjc2
LDYuMjA3OTEgLTEuNDQ3NTksMS40MzkwOSAtMy4wNjI4NiwyLjI3ODE4IC00Ljk1NjQsMi42MDI2
MiAxMi44MTYwMSw2LjgyMTIzIDI2Ljg5Njc3LDEwLjQzMTg0IDQxLjA1MjQ2LDEwLjgzMzYyIDIu
ODA1OTgsLTUuOTI1MjUgNC4yNTA5LC0xMi40MTg0OCA0LjI5OTA2LC0xOS40MzUyNiB6IiAvPgor
ICAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Im0gMjE1LjY4MDkzLDkzLjE4MTU3NCBjIDIuODQ3
MDEsLTIuODM4MTc5IDcuNDYzNTksLTIuODM2NDAxIDEwLjMwODgzLDAgMi44NDQzMywyLjgzNDYy
MyAyLjg0NjEyLDcuNDM1NDQ2IC0wLjAwMiwxMC4yNzA5NTYgLTIuODQzNDUsMi44MzgxOCAtNy40
NjI3MSwyLjgzODE4IC0xMC4zMDcwNCwwIC0yLjg0NTI0LC0yLjgzNTUxIC0yLjg0NzkxLC03LjQz
NTQ0NCAwLC0xMC4yNzA5NTYgeiIgLz4KKyAgPC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvbG9nby9vbGQuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vb2xkLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwNzMxMzllMzMxMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9sb2dvL29sZC5zdmcKQEAgLTAsMCArMSwx
NCBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNjAi
IGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMjEgNyI+CisgIDxsaW5lYXJHcmFkaWVudCBpZD0i
dyIgeDE9IjAiIHkxPSIwIiB4Mj0iMSIgeTI9IjEiPgorICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0
b3AtY29sb3I9IiM1YTlmZDQiIC8+CisgICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9y
PSIjMzA2OTk4IiAvPgorICA8L2xpbmVhckdyYWRpZW50PgorICA8bGluZWFyR3JhZGllbnQgaWQ9
InMiIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj4KKyAgICA8c3RvcCBvZmZzZXQ9IjAlIiBz
dG9wLWNvbG9yPSIjZmZlODczIiAvPgorICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xv
cj0iI2ZmZDQzYiIgLz4KKyAgPC9saW5lYXJHcmFkaWVudD4KKyAgPHBvbHlsaW5lIGZpbGw9Im5v
bmUiIHN0cm9rZT0idXJsKCN3KSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpv
aW49InJvdW5kIgorICAgICAgICAgICAgcG9pbnRzPSIxLDEgMSw1IDUsNSA1LDEgNSw1IDksNSA5
LDEiLz4KKyAgPHBvbHlsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0idXJsKCNzKSIgc3Ryb2tlLWxp
bmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIgorICAgICAgICAgICAgcG9pbnRz
PSIxOSwxIDExLDEgMTEsMyAxOSwzIDE5LDUgMTEsNSIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvbG9nby90aWRlbGlmdC5wbmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvbG9nby90
aWRlbGlmdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE3ZGM0ZDk4NTJkZjcyYmEzNGUxMGE2ZjYxZDE4Mzhj
YmJkOTY5ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDA2OQp6Y21lSEtYOzQkeTYyNjI4NW9B
K3tDNVdRTDJRekV9dktWJWt6IWUyPzMxSmJVQXxnMDI1ZlVVaVk+cnJoO0Z6I3oKejA2fGRIM1FJ
KGhFa017cktvRyRZV2M0WUVoS0xaMTg7YjcpYldGWGM8NSlIUmQjT3EjX3R0bTU/JGNqKXBGWVBv
Cnp5RXJQeXNtbm5TcXlSZ3UrWDZ1ZGc3fU0pMGRLMVBQeHBoTHh4WUdqZ2hHJl53KWlWYEBQWnUk
ZnxTeldicT9ETwp6X0M2YWg0JVFlXmtHb15CRm45fVd3ZXE9S0wld35PUUFlPmtAeHJ6UnQkSGh+
NVV1K09qQylXblFuMG9fPiNwSkAKeiZDUDFnMUgwbnZYK2ZPZ097WFQ2WmNGe0h3TGJRYTxKIW9F
SD4ten56KCkhcWhFREhCMHlwRiNkIWlKQyh1V2A8Cno4ajl2MUFaNmczXyVVVjxxe1ZffTk9YGA5
VWhfPlIzRDc2Jnw3LTVjcGllRy1eeSF9Z2VjSjN0JDBkQXtGZWQ/JAp6Mz4kRiMrYVFVRTBMUTw9
XnR+Vm5tQjNPLXBDcChoS3dAUW9xP0JMSm9HK14rZWs8WUFtcThNLTcwZEVwQVZIXzgKekhuR3A4
LTRGfDdNS3UpcVYjYkRgI0ViTWhJbUBFUFdQRm5GVVV6LXI7dFVzRHNJfip+aWpvN19xdmBJSTxB
UmlYCnpMKGBwb0NFLTN2UmQzN2Jtfmk7OUQ2NCludWZZfX1VO1JxOWU8ektKRGNVNjY2RWg7PndQ
S2I2X0YmcSlKbz1xbQp6MFM1IXlpNCh+cnZqeSg8TTs3YjZuSCgxRV44Um9GNXdvNW8xMUZ1MzNk
cldjZ141eHo+KXJUNl5NKzAlSkJVclQKenVjSjlSdDFqWG8pJSFjJUZJJWlrUCg4TzdYfT9TYzJW
U2QyWTlseE5UUWVNcVpYRDBvJVR8QHUqfUtxWUhgcGJ8CnpmMzd9fGE2Zl5FUVlOZm9sPWo5VEJB
KTAxPkNBN0h5TTVNezwoc2l8e20wX3slUGgzcnklUCFZcGVPc09BQk9jWQp6Oyo4T0RHNUo2cDNi
SEZ6Q2FAZ1pqaUVVVjRKbHYraUFFJlkzfG1XWXJrenBJVihIZV9wYHpGSFRsUGtDPk96aHsKej4x
TzUjQj5GO2BJVSpZPj9QXykrRUBTRHxoblg7UiU4bG57Kk4pTE1HXjd5O28hO3RGOXJ3JWwrP3Np
QG9TZWxYCnpyTlZfR0M2bm05KkppTXpIKDBRYCpkTkJpZ0g1Pl8oRjVoMWd5empySyhqWXRDWjZo
WlU3d3YlOEUtZ012ZUNySgp6I0J6MXo2VUBfWVUkfUZzRV4yVm8wYjshVUd2bUVoZHFzOCZWWUpB
SXM+S1EqPz5GRXRyUH1VIW9keyVGdlQ8aCEKelRVbUNxVkpTLUx5UEQ3cyZmRmdOUzgoSzY3dTsy
dTliSyo+dkpeQGArY0YlY2J+T2p8cEhFPTg7M2hHZDd6Pn19CnpLPX5FcmFBKDJwSlFCI1oxSzMz
KCtUajtsZkZpb0pRJjBXd3JufSU7XkwoRiNuTih+UHt2NW1yZnNoWmxHPShWdwp6KENxVUdmU21f
WjtveiNATEJUTUYmQUE0KHF3fGZidDVmYmQzb0Z5K0QtLU0meWtxY0pQVVFAVDxrK1Q+OE4mcj4K
enM+JWU4Vk82RkpaZSZHOT5EJX5AaVZlYyQ/UiRXXnA1aUh0OW9NKU1EKztad0FRe1I3VHgkUW5v
fnt6OSUrb2xMCnoteHl9WCYjUmF0cl5TbGFuSXZIc2teOTEmJDVxYWUma20yMj9MbmRSaVNeeGpB
JT9GZSh1PVppTChaWndEKEg1SAp6T1ohJitgbHdCRGRDKnpEY2REOGRAVWdufUlvWjF7QHhmOSgl
MyEoLUFQYnBAIzRnR2w+eHk2JnAkWilHZCEmJSkKemFrVml6VGxXfDchY3B2IU44bmh4dUw4Klph
VEF3cmRZO0Y9OCpAX3hPdHdybHklMzdCTjkkV1JNWjVyWHhZeChCCnpgbVBLOFd6VWdRaEEmI0Ml
fFlxKzkxNmRUQTNUd2BPWiR8V1l2PUokazchUDg2YDlVd3IjUDxNWihmYCNpcUFabQp6MlcwNm5U
NiZUMGNINXY8TjE+cFZhNzd4P2lYc35JPnFMfGslfipLMkV6MmFWUlQrdXkqZk5AOCFOWG5RLWVt
QWoKemk3TkwyRk0xblcoZyQkZUsoKSpwQHRQcHNMRl5KP3A3QSp8Q3ZqOWBJRWVUWHBOUDtzcylf
T1c5JDw0WmI1eCgyCnohJVojZUgqbnB7QGRBI3xMNFJiMmRRQ1VlRH1kcj5LK25qXipsfis/KmhE
Mmo9USt7ZyZEaG89d3NDeVVueEtycAp6I2BhOUhJbVJQSD9uUHUxJmR0eFNaRUkkMGd8UHhLWC1i
SWJPMWtPa3FMYkAwVj94az5OSDReNXA9VFFHKTBuIyQKenE/Y0V6UGxWfnBjcyNDfkpPa0xqZ1Ym
UFk/YnVDaU8hQkpQJXYhbyskJiFzPUcmc1VPR0pFKWM+XjApWEpBMDBkCnp0S3NYWGlEclVWPlJ+
b0s9RlNmdGRlUmA3OCgzSXhne2lCVT1qeFB3TSlYX3dgYlp1VkdAUmA3VyZBdVU7dGdyNwp6KFpy
PnN7TG1zYWthXytDeklDJkheSkpWYS0rfEB8Q3xafkAwTlBBNGF9aSFuTzU0S3JQPyFvR0RGI1dp
JHs9NlMKenk/KXhkZDJ+KDkoT2l1RD84X0J9UjJXU0BwRGZVN182NGd1blF8Y0kobiNicCE/JTtr
JmcwSXVgRWw+QmMqVEpiCnpVRHcxUDB8OyNNdkRDPGZxT0hIUnVwVit7a1o0dlNAYWs+eXtucGVk
clgmMHFBbnIwMUwxejgqa2JmPFNuUVFZVgp6UmYrY1F5ODI2NXBXbmN+VH4qeE87WWpEb2J9eVVt
Ti1vUFRiZno1Zz5IQDJUa0s0fGtkfD01blNiT3BTWGcxP0oKek5aYzFHN0pWPFJYTEImQTRDXlgl
WFZlSiZgP35jZ0gqaXZpbkB6UExKYDIwP0srMXV2bVRINWQoZVQkKXlKPXhsCnpyKUJpKjJ9U2ZE
Wl84YXhOdXEjSkg3bEUzRj0yVGJ7e2w5ST81RlBnTlVKJChtTm5kNHB8ZV9TV3Y3fElfZldGNQp6
N1IjUGM7NkJKVU8td3ZeaFFCcCNyYnYzYSU2aWlQaF9jT2JycSpJQDV9MTwkcCE2P1pNTHAjdmEt
ZzBnOEBTdFAKenVCNT8walhgbW0lTGp4TEd6O1YyTjk0MmJuZD8hJno2fXpZIUw7QExeWlFkcTtP
WExCdkxOVHJtUWAjbDUjQkpVCno5aGtiTns8MH19UTdpfTFxUUk9RGBWUHU9MXRqdz4rd1NReDJJ
VGYwQjx9R1BpJXBiZHpCbTUxRStFXn16fT1WNgp6ezs4SlEqdj02QHc8UiRoWGhSUiErdT1jdjhT
RE50KTskMHdNYT5FJU5uR1EwMygmIUtjakArbUhSV3pWT15TeTUKeiRZc1Q9YnsyX3ZPREI9OD8y
TU9JQGt+LWFkbXF6K3hpZjBhOHgxbXtsNE4kJGFwa29FSGA+dD1hbilVKU47NyZFCnp7Pk01WmAy
WGptYH5PKX1AXmwxRT8kZ0xfe2BmajtHfUdkVj1oejFJeyp5S0RqMz04a0xCKGpjKS02OD1eRDQp
aQp6V01gKmBwNGJRbjl5TiRrYTdJJiRtQ1ojTGlxWnwqNmhVNSVCKT40Y2J4Un5ARUNJKDszcUdu
PztEYjMwRnd0IWwKektpXmptaUcyNnlXY2pfNEtubSE7LUxpT2sqMys9ODtaQXw0Z19TK2c7U2wk
QkR0NDJwLTlBZHpGI0dheiZTXzFTCnpmdHxJcl49WDdeQWp0TVNZU1k2QT0/QkNOellmOzExY3NQ
MkI8WkxORSUtZnxATF9UJnNiKFQ3RCpaIUxMK3loUQp6LSR+aktJaWYrSk5NOV49NVB+US03ayQz
YmZUczVDRzVCd1JCISpYVWQ7QzBeZWRQaXJGfShoZWk5XmdVO2dmX3AKelA7e1NzMD00dkFBY0BQ
MGM8R20hQnRWan17bVpISnlPPDxtYD9vR282NCMhOFIhWjBCUTdQbG9ZNGQpZ2xmYjxsCk5nNGVz
T0RfbGQye1NXWU5CNmFgKAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS93ZWJzb2NrZXRzL2xvZ28vdmVydGljYWwuc3ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vdmVy
dGljYWwuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjA3ZmIy
MjM4NzM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL2xvZ28vdmVydGljYWwu
c3ZnCkBAIC0wLDAgKzEsMzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDQ4MCAzMjAiPgorICA8
bGluZWFyR3JhZGllbnQgaWQ9InciIHgxPSIwLjIzMzMiIHkxPSIwIiB4Mj0iMC41ODg5IiB5Mj0i
MC41MzMzIj4KKyAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZmZlODczIiAvPgor
ICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIgLz4KKyAgPC9saW5l
YXJHcmFkaWVudD4KKyAgPGxpbmVhckdyYWRpZW50IGlkPSJzIiB4MT0iMC4yMzMzIiB5MT0iMCIg
eDI9IjAuNTg4OSIgeTI9IjAuNTMzMyI+CisgICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xv
cj0iIzVhOWZkNCIgLz4KKyAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMzMDY5
OTgiIC8+CisgIDwvbGluZWFyR3JhZGllbnQ+CisgIDxnPgorICAgIDxwYXRoIGZpbGw9InVybCgj
dykiIGQ9Im0gMjYzLjQwNzA4LDE0Ni44MTYxOCBjIC0wLjQzNzA0LDAuMDc0NyAtMC44ODY1Niww
LjEyOTc4IC0xLjM1NTcyLDAuMTQ5MzMgLTIuNDU4MTMsMC4wNzY0IC00LjI1MzU3LC0wLjU4NjY1
IC01LjgyMzM1LC0yLjE1MTA3IGwgLTguODkyNDYsLTguODU5NDIgLTExLjIzNDY0LC0xMS4xOTgw
NSAtMzYuMDQwNzYsLTM1LjkxOTQ1NCBjIC0zLjQzNTY4LC0zLjQyMjE3IC03LjMzMjQ4LC01LjM0
NzQ3NCAtMTEuNTg5NjIsLTUuNzIzNDY4IC0yLjIyOTgxLC0wLjE5ODIxOSAtNC40NzM4OCwwLjAz
MTExIC02LjY0MDM2LDAuNjc1NTQ1IC0zLjI0MjEzLDAuOTQ0ODc1IC02LjEzNTUyLDIuNjY0ODQ4
IC04LjU5MzY2LDUuMTE2MzY2IC0zLjgzNDM3LDMuODE5NDk5IC01Ljg2MzQ5LDguNDE0OTc5IC01
Ljg3NTk4LDEzLjI4NzgwMSAtMC4wNjA3LDQuOTUyODEgMS45NTE1Myw5LjYwMDc0IDUuODA4Miwx
My40NDQyNCBsIDU1LjYyMjg5LDU1LjQzNjQ4IGMgMS44MjIxOSwxLjg0MTc1IDIuNjU5NzEsMy43
OTU0OSAyLjYzMzg0LDYuMTQ1NjggbCAwLjAwNCwwLjIwOCBjIDAuMDUyNywyLjQzMTk2IC0wLjc1
OTkxLDQuMzQ1NzEgLTIuNjI2Nyw2LjIwNjEyIC0xLjc4MDI4LDEuNzc1OTggLTMuODA5NCwyLjY1
MjQxIC02LjMwOTQ1LDIuNzU1NTIgLTIuNDU4MTQsMC4wNzY0IC00LjI1NDQ2LC0wLjU4ODQ0IC01
LjgyNTE0LC0yLjE1Mjg2IEwgMTYwLjUwMjU1LDEyOC4yNjE4IGMgLTUuMjE0MTcsLTUuMTk0NTkg
LTExLjcwMjksLTYuOTg3NDUgLTE4LjIyOTk4LC01LjA0ODgxIC0zLjI0NTcsMC45NDMxIC02LjEz
NTUzLDIuNjYzMDcgLTguNTk1NDUsNS4xMTQ1OSAtMy44MzQzNywzLjgyMTI3IC01Ljg2NTI3LDgu
NDE2NzYgLTUuODc1OTcsMTMuMjg5NTcgLTAuMDU2Miw0Ljk1MjgxIDEuOTUxNTIsOS42MDI1MiA1
LjgwNjQxLDEzLjQ0NzggbCA1OC4xMDY4OSw1Ny45MDU3NyBjIDguMzE5ODQsOC4yOTE0MyAxOS4z
NDA0MiwxMS45Mzc2IDMyLjc0MzMxLDEwLjgzODA2IDEyLjU3OTY3LC0xLjAyMDQzIDIzLjAyMzE3
LC01LjU4NDggMzEuMDM0NDEsLTEzLjU3MzEzIDcuNTEyNjUsLTcuNDg2MSAxMS45NjQyMywtMTYu
MzUxNzUgMTMuMjg2OTUsLTI2LjQyNTM3IDEwLjQ3MjA2LC0xLjY4MjY0IDE5LjI5NDk0LC02LjA0
NTI0IDI2LjI3NTEyLC0xMy4wMDE1OCA0LjAxMzY0LC0zLjk5OTk0IDcuMTQ5NjMsLTguMzk3MiA5
LjQwNTMxLC0xMy4xNjE1NyAtMTQuMTU1NjksLTAuMzk5MTEgLTI4LjIzNjQ1LC00LjAwOTcyIC00
MS4wNTI0NywtMTAuODMwOTUgeiIgLz4KKyAgICA8cGF0aCBmaWxsPSJ1cmwoI3MpIiBkPSJtIDMw
OC43NjAzOCwxMzguMTE4NTQgYyAwLjEwMjU5LC0xMi44NDUxNCAtNC40MzAxNywtMjMuOTg1NDEg
LTEzLjUwNjM1LC0zMy4xMzQ2IEwgMjU5LjM3MjkyLDY5LjIyNTM3MiBjIC0wLjI0MzQ5LC0wLjI0
MDg4NSAtMC40NjQ2OSwtMC40ODc5OTIgLTAuNjg2NzgsLTAuNzQ0ODc3IC0xLjQ4NDE2LC0xLjcz
OTUyOSAtMi4xODc4OCwtMy41ODMwNTYgLTIuMjEwMTgsLTUuODA3MDIyIC0wLjAyNTksLTIuNDcw
MTg0IDAuODQ5MTEsLTQuNTA4Mzc1IDIuNzYwNSwtNi40MDc5MDIgMS45MTQwNiwtMS45MDkzMDQg
My44NTMxLC0yLjczNzczNSA2LjM2NTY0LC0yLjY4NDQwMyAyLjUzNjYyLDAuMDI0IDQuNjI3Mjgs
MC45NDMwOTcgNi41NzI1NywyLjg4MTczNCBsIDYwLjU5MTc4LDYwLjM4NDg0OCAxMi4xMTQwOCwt
MTIuMDY5MTQgYyAxLjEyMjAzLC0wLjkwNzU1IDEuOTU3NzcsLTEuNzY4ODcgMi44NzgyMywtMi45
MzQxOCA1LjkxODc5LC03LjUxNTQ0MiA1LjI2OTQ3LC0xOC4yNzI2MTEgLTEuNTEwMDMsLTI1LjAy
ODk1MiBMIDI5OS4wMDQ1NiwyOS43MjczMTIgYyAtOS4xOTM5MywtOS4xNTcxOTIgLTIwLjM2NzAz
LC0xMy43NzY2NzcgLTMzLjE2Nzg5LC0xMy43MjY5IC0xMi45NDI2NiwtMC4wNTA2NyAtMjQuMTQx
NjMsNC41NDgzNzUgLTMzLjI4NzM5LDEzLjY2MjkwMSAtOS4wMjg5Miw4Ljk5NjMwNyAtMTMuNjQw
MTUsMTkuOTM5MjUgLTEzLjcwMDgsMzIuNDg3NTAxIGwgLTAuMDA0LDAuMTQyMjIgYyAtMC4wMDIs
MC4xNjc5OTggLTAuMDA1LDAuMzM2ODg0IC0wLjAwNSwwLjUwNjY1OSAtMC4wOTEsMTIuMjMyNzAx
IDQuMTA3MjksMjIuOTU3ODcgMTIuNDgxNTQsMzEuODgxMjg1IDAuNDAyMjYsMC40MzAyMiAwLjgw
Mjc0LDAuODU3NzcgMS4yMjI4MywxLjI3ODIxIGwgMzUuNzUwODgsMzUuNjI2MTIyIGMgMS44ODkw
OSwxLjg4MTc0IDIuNzE3NjksMy43OTYzOCAyLjY5MzYxLDYuMjA5NjggbCAwLjAwMywwLjIwOTc3
IGMgMC4wNTI3LDIuNDMxOTcgLTAuNzYwODEsNC4zNDU3MSAtMi42Mjc2LDYuMjA3OTEgLTEuNDQ3
NTksMS40MzkwOSAtMy4wNjI4NiwyLjI3ODE4IC00Ljk1NjQsMi42MDI2MiAxMi44MTYwMSw2Ljgy
MTIzIDI2Ljg5Njc3LDEwLjQzMTg0IDQxLjA1MjQ2LDEwLjgzMzYyIDIuODA1OTgsLTUuOTI1MjUg
NC4yNTA5LC0xMi40MTg0OCA0LjI5OTA2LC0xOS40MzUyNiB6IiAvPgorICAgIDxwYXRoIGZpbGw9
IiNmZmZmZmYiIGQ9Im0gMzI3LjQ4MDkzLDg1LjE4MTU3MiBjIDIuODQ3MDEsLTIuODM4MTc5IDcu
NDYzNTksLTIuODM2NDAxIDEwLjMwODgzLDAgMi44NDQzMywyLjgzNDYyMyAyLjg0NjEyLDcuNDM1
NDQ2IC0wLjAwMiwxMC4yNzA5NTYgLTIuODQzNDUsMi44MzgxOCAtNy40NjI3MSwyLjgzODE4IC0x
MC4zMDcwNCwwIC0yLjg0NTI0LC0yLjgzNTUxIC0yLjg0NzkxLC03LjQzNTQ0NCAwLC0xMC4yNzA5
NTYgeiIgLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8ZyBmaWxsPSIjZmZkNDNiIj4KKyAgICAgIDxw
YXRoIGQ9Im0gMjUuNzE5Mzk4LDI4NC45MTgzOSBjIDAsMi41OTA3NSAwLjkxMjI5OSw0Ljc5ODc1
IDIuNzM2ODk4LDYuNjIyNjkgMS44MjQ1OTksMS44MjY1NyA0LjAzMzI1NSwyLjczODIxIDYuNjI1
MzEzLDIuNzM4MjEgMi41OTE0MDIsMCA0LjgwMDA1OCwtMC45MTE2NCA2LjYyNDAwMiwtMi43Mzgy
MSAxLjgyNTI1NCwtMS44MjM5NCAyLjczODIwOSwtNC4wMzE5NCAyLjczODIwOSwtNi42MjI2OSB2
IC0yMS43Nzk4NCBjIDAsLTEuMzIxMjYgMC40NzU4MTEsLTIuNDU5MDEgMS40MjgwOSwtMy40MDk5
OCAwLjk1MjI3OCwtMC45NTM1OSAyLjA4OTM3NSwtMS40MzAwNiAzLjQxMTk0NywtMS40MzAwNiBo
IDAuMDc5MyBjIDEuMzQ4MTMyLDAgMi40NzE0NjcsMC40NzY0NyAzLjM3MTk2OSwxLjQzMDA2IDAu
OTUyMjc4LDAuOTUwOTcgMS40Mjg3NDUsMi4wODkzOCAxLjQyODc0NSwzLjQwOTk4IHYgMjEuNzc5
ODQgYyAwLDIuNTkwNzUgMC45MTIyOTksNC43OTg3NSAyLjczODIwOSw2LjYyMjY5IDEuODIzOTQ0
LDEuODI2NTcgNC4wMzEyODksMi43MzgyMSA2LjYyNDAwMiwyLjczODIxIDIuNjE4Mjc0LDAgNC44
MzkzODIsLTAuOTExNjQgNi42NjM5ODEsLTIuNzM4MjEgMS44MjUyNTQsLTEuODIzOTQgMi43Mzgy
MDksLTQuMDMxOTQgMi43MzgyMDksLTYuNjIyNjkgdiAtMjEuNzc5ODQgYyAwLC0xLjMyMTI2IDAu
NDc1MTU2LC0yLjQ1OTAxIDEuNDI4MDksLTMuNDA5OTggMC44OTc4ODEsLTAuOTUzNTkgMi4wMjI1
MjYsLTEuNDMwMDYgMy4zNzE5NjksLTEuNDMwMDYgaCAwLjA3ODY1IGMgMS4zMjMyMjgsMCAyLjQ2
MDMyNSwwLjQ3NjQ3IDMuNDExOTQ4LDEuNDMwMDYgMC45MjYwNjIsMC45NTA5NyAxLjM4ODc2Niwy
LjA4OTM4IDEuMzg4NzY2LDMuNDA5OTggdiAyMS43Nzk4NCBjIDAsNS4yNjIxMSAtMS44NjUyMzMs
OS43NTgwNyAtNS41OTMwNzcsMTMuNDg2NTcgLTMuNzI5MTU2LDMuNzI4NSAtOC4yMjU3Nyw1LjU5
MzczIC0xMy40ODc4NzYsNS41OTM3MyAtNi4yOTQ5OTgsMCAtMTEuMDI4MjA3LC0yLjA4ODA3IC0x
NC4yMDI5MDQsLTYuMjY3NDcgLTMuMTk5NjAyLDQuMTc5NCAtNy45NDcyMyw2LjI2NzQ3IC0xNC4y
NDA5MTYsNi4yNjc0NyAtNS4yNjI3NjMsMCAtOS43NTkzNzcsLTEuODY1MjMgLTEzLjQ4Nzg3Niwt
NS41OTM3MyBDIDE3Ljg2NjU0NCwyOTQuNjc2NDYgMTYsMjkwLjE4MTE1IDE2LDI4NC45MTgzOSB2
IC0yMS43Nzk4NCBjIDAsLTEuMzIxMjYgMC40NzY0NjcsLTIuNDU5MDEgMS40Mjg3NDUsLTMuNDA5
OTggMC45NTE2MjMsLTAuOTUzNTkgMi4wNzU2MTIsLTEuNDMwMDYgMy4zNzE5NjksLTEuNDMwMDYg
aCAwLjExOTI4IGMgMS4yOTU3MDIsMCAyLjQxOTAzNiwwLjQ3NjQ3IDMuMzcyNjI1LDEuNDMwMDYg
MC45NTA5NjcsMC45NTA5NyAxLjQyNzQzNCwyLjA4OTM4IDEuNDI3NDM0LDMuNDA5OTggdiAyMS43
Nzk4NCB6IiAvPgorICAgICAgPHBhdGggZD0ibSAxMzIuOTQ4MDEsMjcxLjYyOTEgYyAwLjMxNzg2
LDAuNjYwNjMgMC40NzcxMiwxLjMzMzcxIDAuNDc3MTIsMi4wMjI1MiAwLDAuNTU1NzcgLTAuMTA1
NTEsMS4xMTA4OSAtMC4zMTcyLDEuNjY2NjUgLTAuNDUwMjYsMS4yNDI2MiAtMS4yOTYzNiwyLjE0
MTgxIC0yLjUzODk4LDIuNjk2OTIgLTMuNzAyOTMsMS42NjY2NSAtOC41Njg1MywzLjg2MjIgLTE0
LjU5ODc1LDYuNTg1OTkgLTcuNDg0NTMsMy4zODQ0MiAtMTEuODc0OTcsNS4zODEzOSAtMTMuMTcw
NjcsNS45OTA5IDIuMDA5NDIsMi41MzgzMiA1LjE0NDE0LDMuODA3MTUgOS40MDIxOSwzLjgwNzE1
IDIuODI5MzEsMCA1LjM5NTE1LC0wLjgzMjM0IDcuNjk1NTYsLTIuNDk5IDIuMjQ3OTgsLTEuNjM5
NzcgMy44MjIyMiwtMy43NTUzNyA0LjcyMTQxLC02LjM0ODA4IDAuNzY3NDYsLTIuMTY4NjggMi4z
MDEwNywtMy4yNTI2OSA0LjYwMTQ4LC0zLjI1MjY5IDEuNjM5MTIsMCAyLjk0ODU5LDAuNjg4ODEg
My45MjcwOCwyLjA2MTg1IDAuNjA4MiwwLjg0NzQyIDAuOTEyMywxLjczMzUgMC45MTIzLDIuNjU4
OTEgMCwwLjU1NTc3IC0wLjEwNTUyLDEuMTIzOTkgLTAuMzE2NTUsMS43MDUzMiAtMS41NjA0OCw0
LjUyMzQ4IC00LjI5ODY5LDguMTczMzQgLTguMjExMzUsMTAuOTUwODcgLTMuOTY3MDYsMi44ODEw
OCAtOC40MTA1OSw0LjMyMjkzIC0xMy4zMjk5Myw0LjMyMjkzIC02LjI5NDM0LDAgLTExLjY3NjM5
LC0yLjIzMzU2IC0xNi4xNDU0NzQsLTYuNzAzOTUgLTQuNDY5NzQzLC00LjQ2OTc1IC02LjcwNDYx
NSwtOS44NTExNCAtNi43MDQ2MTUsLTE2LjE0Njc5IDAsLTYuMjk0MzQgMi4yMzQ4NzIsLTExLjY3
NTA3IDYuNzA0NjE1LC0xNi4xNDY3OCA0LjQ2ODQzNCwtNC40Njg0MyA5Ljg1MTEzNCwtNi43MDM5
NiAxNi4xNDU0NzQsLTYuNzAzOTYgNC41NDc3MywwIDguNzAwMjcsMS4yNDM5MiAxMi40NTYyOSwz
LjcyODUgMy43Mjc4NSwyLjQzNjA3IDYuNDkxNjIsNS42MzQzNyA4LjI5LDkuNjAyNzQgeiBtIC0y
MC43NDY5NSwtMy41MzMyIGMgLTMuNjQ5ODUsMCAtNi43NTc3LDEuMjgzOTEgLTkuMzIyODksMy44
NDkwOSAtMi41Mzg5NywyLjU2NjUgLTMuODA4NDUyLDUuNjc0MzUgLTMuODA4NDUyLDkuMzIyODkg
diAwLjI3Nzg5IGwgMjIuMTc1NjkyLC05Ljk1NzMxIGMgLTEuOTU2MzMsLTIuMzI1OTcgLTQuOTcx
NzcsLTMuNDkyNTYgLTkuMDQ0MzUsLTMuNDkyNTYgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0gMTQ2
LjExOTk5LDI0Mi4wMzQ0MiBjIDEuMjk1NywwIDIuNDE5MDQsMC40NjMzNiAzLjM3MTk3LDEuMzg4
NzYgMC45NTIyOCwwLjk1MDk3IDEuNDI4NzQsMi4wODkzOCAxLjQyODc0LDMuNDExMyB2IDE1LjQz
MTEgYyAyLjk4NzkyLC0yLjY0MzE4IDcuMzY1MjUsLTMuOTY3MDcgMTMuMTMwMDQsLTMuOTY3MDcg
Ni4yOTQzNCwwIDExLjY3NjM4LDIuMjM0ODggMTYuMTQ2MTMsNi43MDM5NiA0LjQ2OTA4LDQuNDcx
MDYgNi43MDQ2MSw5Ljg1MjQ1IDYuNzA0NjEsMTYuMTQ2NzkgMCw2LjI5NDk5IC0yLjIzNTUzLDEx
LjY3NjM4IC02LjcwNDYxLDE2LjE0Njc4IC00LjQ2OTA5LDQuNDcwNCAtOS44NTExMyw2LjcwMzk2
IC0xNi4xNDYxMyw2LjcwMzk2IC02LjI5NSwwIC0xMS42NjI2MiwtMi4yMjExMSAtMTYuMTA1NDks
LTYuNjY1MjkgLTQuNDcwNCwtNC40MTQ2OSAtNi43MTgzOCwtOS43NzA1MiAtNi43NDQ2LC0xNi4w
NjYxNyB2IC0zNC40MzM0MSBjIDAsLTEuMzIyNTcgMC40NzY0NywtMi40NjAzMiAxLjQyODc1LC0z
LjQxMTI5IDAuOTUxNjIsLTAuOTI1NDEgMi4wNzU2MSwtMS4zODg3NyAzLjM3MTk3LC0xLjM4ODc3
IGggMC4xMTg2MiB6IG0gMTcuOTMwMDksMjYuMDYxNDggYyAtMy42NDkxOSwwIC02Ljc1NzA0LDEu
MjgzOTEgLTkuMzIyODgsMy44NDkwOSAtMi41Mzc2NywyLjU2NjUgLTMuODA3ODEsNS42NzQzNSAt
My44MDc4MSw5LjMyMjg5IDAsMy42MjM2NCAxLjI3MDE0LDYuNzE3NzIgMy44MDc4MSw5LjI4Mjkx
IDIuNTY1ODQsMi41NjUxOSA1LjY3MzAzLDMuODQ3NzggOS4zMjI4OCwzLjg0Nzc4IDMuNjIzNjQs
MCA2LjcxNzczLC0xLjI4MjU5IDkuMjgzNTcsLTMuODQ3NzggMi41NjM4NywtMi41NjUxOSAzLjg0
NzEyLC01LjY1OTI3IDMuODQ3MTIsLTkuMjgyOTEgMCwtMy42NDc4OCAtMS4yODMyNSwtNi43NTYz
OSAtMy44NDcxMiwtOS4zMjI4OSAtMi41NjU4NCwtMi41NjUxOCAtNS42NTkyNywtMy44NDkwOSAt
OS4yODM1NywtMy44NDkwOSB6IiAvPgorICAgIDwvZz4KKyAgICA8ZyBmaWxsPSIjMzA2OTk4Ij4K
KyAgICAgIDxwYXRoIGQ9Im0gMjA1Ljk0MjQ2LDI2OC4wMTkyMiBjIC0xLjE2Mzk3LDAgLTIuMTQy
NDcsMC4zOTU4NiAtMi45MzU0OCwxLjE4ODg4IC0wLjc5MzY4LDAuODIwNTQgLTEuMTkwMTksMS43
OTgzOCAtMS4xOTAxOSwyLjkzNTQ4IDAsMS41ODczNSAwLjc2NjgxLDIuNzc3NTMgMi4zMDE3Miwz
LjU2OTg5IDAuNTI4MjUsMC4yOTE2NSAyLjczNjksMC45NTIyOCA2LjYyNDY2LDEuOTgzODYgMy4x
NDcxNywwLjg5OTg1IDUuNDg2OTEsMi4wNzYyNyA3LjAyMDUxLDMuNTMwNTcgMi4xOTYyMSwyLjA5
MDAzIDMuMjkyNjcsNS4wNjU0OSAzLjI5MjY3LDguOTI3MDQgMCwzLjgwNzE0IC0xLjM0ODc5LDcu
MDczNiAtNC4wNDU3MSw5Ljc5NzM5IC0yLjcyNDQ0LDIuNjk4MjMgLTUuOTkwOSw0LjA0NjM2IC05
Ljc5ODcsNC4wNDYzNiBoIC0xMC4zNTM4MSBjIC0xLjI5NzAxLDAgLTIuNDE5NjksLTAuNDc1MTYg
LTMuMzcyNjIsLTEuNDI4NzUgLTAuOTUyMjgsLTAuODk4NTMgLTEuNDI4NzUsLTIuMDIyNTIgLTEu
NDI4NzUsLTMuMzcwNjUgdiAtMC4wODA2IGMgMCwtMS4zMjEyNiAwLjQ3NjQ3LC0yLjQ1OTAxIDEu
NDI4NzUsLTMuNDExMjkgMC45NTIyNywtMC45NTIyOCAyLjA3NTYxLC0xLjQyODc0IDMuMzcyNjIs
LTEuNDI4NzQgaCAxMC43NTAzMiBjIDEuMTYzMzEsMCAyLjE0MjQ2LC0wLjM5NTg2IDIuOTM1NDgs
LTEuMTg4ODggMC43OTM2OCwtMC43OTM2NyAxLjE5MDE5LC0xLjc3MTUxIDEuMTkwMTksLTIuOTM1
NDggMCwtMS40NTU2MSAtMC43NTM3LC0yLjU1MzM5IC0yLjI2MDQ0LC0zLjI5MjAxIC0wLjM5NjUs
LTAuMTg2NzggLTIuNjE4OTIsLTAuODQ3NDIgLTYuNjY1MjksLTEuOTgzODYgLTMuMTQ3ODIsLTAu
OTI1NCAtNS40ODg4NywtMi4xNDM3NyAtNy4wMjI0NywtMy42NTA1MSAtMi4xOTU1NSwtMi4xNDE4
IC0zLjI5MjAyLC01LjE3MDM1IC0zLjI5MjAyLC05LjA4NDMyIDAsLTMuODA4NDYgMS4zNDk0NSwt
Ny4wNjA0OSA0LjA0NzAyLC05Ljc1ODA3IDIuNzIzMTQsLTIuNzIzNzkgNS45OTAyNCwtNC4wODcg
OS43OTgwNSwtNC4wODcgaCA3LjI5OTcgYyAxLjMyMTkyLDAgMi40NTk2NywwLjQ3NjQ3IDMuNDEx
OTUsMS40MzAwNiAwLjk1MTYyLDAuOTUwOTcgMS40MjgwOSwyLjA4OTM4IDEuNDI4MDksMy40MDk5
OCB2IDAuMDc5MyBjIDAsMS4zNDk0NSAtMC40NzY0NywyLjQ3NDA5IC0xLjQyODA5LDMuMzcyNjMg
LTAuOTUyMjgsMC45NTA5NyAtMi4wOTAwMywxLjQyODc0IC0zLjQxMTk1LDEuNDI4NzQgeiIgLz4K
KyAgICAgIDxwYXRoIGQ9Im0gMjQ5LjA2NDM0LDI1OC4yOTg1MSBjIDYuMjk0MzQsMCAxMS42NzU3
MywyLjIzNDg4IDE2LjE0NjEyLDYuNzAzOTYgNC40NjkwOSw0LjQ3MTA2IDYuNzAzOTYsOS44NTI0
NSA2LjcwMzk2LDE2LjE0Njc5IDAsNi4yOTQ5OSAtMi4yMzQ4NywxMS42NzYzOCAtNi43MDM5Niwx
Ni4xNDY3OCAtNC40Njk3NCw0LjQ2OTc0IC05Ljg1MTc4LDYuNzAzOTYgLTE2LjE0NjEyLDYuNzAz
OTYgLTYuMjk0MzUsMCAtMTEuNjc2MzksLTIuMjMzNTYgLTE2LjE0NTQ4LC02LjcwMzk2IC00LjQ2
OTc0LC00LjQ2OTc0IC02LjcwNDYxLC05Ljg1MTEzIC02LjcwNDYxLC0xNi4xNDY3OCAwLC02LjI5
NDM0IDIuMjM0ODcsLTExLjY3NTA4IDYuNzA0NjEsLTE2LjE0Njc5IDQuNDY5MDksLTQuNDY5MDgg
OS44NTExMywtNi43MDM5NiAxNi4xNDU0OCwtNi43MDM5NiB6IG0gMCw5Ljc5NzM5IGMgLTMuNjQ5
ODYsMCAtNi43NTc3LDEuMjgzOTEgLTkuMzIyODksMy44NDkwOSAtMi41Mzk2MywyLjU2NjUgLTMu
ODA5MTEsNS42NzQzNSAtMy44MDkxMSw5LjMyMjg5IDAsMy42MjM2NCAxLjI2OTQ4LDYuNzE3NzIg
My44MDkxMSw5LjI4MjkxIDIuNTY1MTksMi41NjUxOSA1LjY3MjM4LDMuODQ3NzggOS4zMjI4OSwz
Ljg0Nzc4IDMuNjIyOTgsMCA2LjcxNzA2LC0xLjI4MjU5IDkuMjgyOTEsLTMuODQ3NzggMi41NjUx
OCwtMi41NjUxOSAzLjg0Nzc4LC01LjY1OTI3IDMuODQ3NzgsLTkuMjgyOTEgMCwtMy42NDc4OCAt
MS4yODI2LC02Ljc1NjM5IC0zLjg0Nzc4LC05LjMyMjg5IC0yLjU2NTg1LC0yLjU2NTE4IC01LjY1
OTI4LC0zLjg0OTA5IC05LjI4MjkxLC0zLjg0OTA5IHoiIC8+CisgICAgICA8cGF0aCBkPSJtIDMw
Ny4yMjE0NiwyNTkuMzcwMDcgYyAyLjI0ODY0LDAuNzE0MzggMy4zNzI2MywyLjI0Nzk4IDMuMzcy
NjMsNC42MDE0OCB2IDAuMTk5ODkgYyAwLDEuNjExNiAtMC42NDg4NCwyLjg5NDE5IC0xLjk0NDU0
LDMuODQ3NzggLTAuODk5MTksMC42MzM3NiAtMS44MjUyNSwwLjk1MDk3IC0yLjc3NjIyLDAuOTUw
OTcgLTAuNTAzMzQsMCAtMS4wMTkxMywtMC4wNzkzIC0xLjU0NzM3LC0wLjIzNzkxIC0xLjI5NjM2
LC0wLjQyMjcyIC0yLjYzMjA0LC0wLjYzNjM4IC00LjAwNjM4LC0wLjYzNjM4IC0zLjY0OTg2LDAg
LTYuNzU4MzYsMS4yODM5MSAtOS4zMjI4OSwzLjg0OTA5IC0yLjUzOTYzLDIuNTY2NSAtMy44MDg0
Niw1LjY3NDM1IC0zLjgwODQ2LDkuMzIyODkgMCwzLjYyMzY0IDEuMjY4ODMsNi43MTc3MiAzLjgw
ODQ2LDkuMjgyOTEgMi41NjQ1MywyLjU2NTE5IDUuNjcyMzgsMy44NDc3OCA5LjMyMjg5LDMuODQ3
NzggMS4zNzUsMCAyLjcxMDY4LC0wLjIxMTAzIDQuMDA2MzgsLTAuNjM1MDcgMC41MDIwMywtMC4x
NTg2IDEuMDA0NzEsLTAuMjM3OSAxLjUwNzM5LC0wLjIzNzkgMC45NzcxOCwwIDEuOTE3NjcsMC4z
MTg1MSAyLjgxNjg2LDAuOTUzNTggMS4yOTU3LDAuOTUwOTcgMS45NDQ1MywyLjI0Nzk4IDEuOTQ0
NTMsMy44ODc3NiAwLDIuMzI3MjggLTEuMTI0NjQsMy44NjA4OSAtMy4zNzI2Miw0LjYwMTQ4IC0y
LjIyMTExLDAuNjg3NSAtNC41MjE1MiwxLjAzMDI3IC02LjkwMTg5LDEuMDMwMjcgLTYuMjk0MzQs
MCAtMTEuNjc2MzgsLTIuMjMzNTYgLTE2LjE0Njc4LC02LjcwMzk2IC00LjQ2ODQzLC00LjQ2OTc0
IC02LjcwMzk2LC05Ljg1MTEzIC02LjcwMzk2LC0xNi4xNDY3OCAwLC02LjI5NDM1IDIuMjM0ODcs
LTExLjY3NTA4IDYuNzAzOTYsLTE2LjE0Njc5IDQuNDY5NzQsLTQuNDY4NDMgOS44NTE3OCwtNi43
MDM5NiAxNi4xNDY3OCwtNi43MDM5NiAyLjM3OTA2LDAuMDAxIDQuNjgwMTIsMC4zNTk4MSA2Ljkw
MTIzLDEuMDcyODcgeiIgLz4KKyAgICAgIDxwYXRoIGQ9Im0gMzIyLjI1NjcxLDI0Mi4wMzQ0MiBj
IDEuMjk1MDQsMCAyLjQxOTAzLDAuNDYzMzYgMy4zNzI2MiwxLjM4ODc2IDAuOTUxNjMsMC45NTA5
NyAxLjQyODA5LDIuMDg5MzggMS40MjgwOSwzLjQxMTMgdiAyNy40OTE1NCBoIDEuNTA3MzkgYyAz
LjM4NTA4LDAgNi4zMzMwMSwtMS4xMjM5OSA4Ljg0NzA4LC0zLjM3MjYzIDIuNDU5MDEsLTIuMjQ3
OTggMy44NjAyMywtNS4wMjQyIDQuMjA0MzEsLTguMzMwNjMgMC4xNTg2MSwtMS4yNDI2MSAwLjY4
ODE2LC0yLjI2MTc0IDEuNTg3MzUsLTMuMDU0MSAwLjg5ODU0LC0wLjg0NjExIDEuOTY5NDQsLTEu
MjcwMTUgMy4yMTI3MSwtMS4yNzAxNSBoIDAuMTE4NjMgYyAxLjQwMjUyLDAgMi41Nzk2LDAuNTMw
MjEgMy41MzEyMiwxLjU4NzM1IDAuODQ2NzYsMC45MjU0MSAxLjI2OTQ5LDEuOTk2OTcgMS4yNjk0
OSwzLjIxMjcxIDAsMC4xNTg2MSAtMC4wMTM4LDAuMzMxNjMgLTAuMDM5MywwLjUxNTc5IC0wLjYz
NTA3LDYuNjM4NDIgLTMuMTc0MDUsMTEuNjEwMTkgLTcuNjE2OTIsMTQuOTE1MzEgMi4zMjY2Mywx
LjQzMDA2IDQuNDY5MDksMy44NDkwOSA2LjQyNzM5LDcuMjYwMzkgMi4wMzU2MywzLjUxNzQ2IDMu
MDU0NzYsNy4zMTQxMiAzLjA1NDc2LDExLjM4NDczIHYgMi4wMjUxNSBjIDAsMS4zNDgxMyAtMC40
NzcxMiwyLjQ3MTQ3IC0xLjQyODA5LDMuMzcwNjYgLTAuOTUzNTksMC45NTM1OSAtMi4wNzY5Miwx
LjQyODc0IC0zLjM3MjYzLDEuNDI4NzQgaCAtMC4xMTkyOCBjIC0xLjI5NjM1LDAgLTIuNDE5Njks
LTAuNDc1MTUgLTMuMzcxOTYsLTEuNDI4NzQgLTAuOTUyMjgsLTAuODk4NTQgLTEuNDI4MDksLTIu
MDIyNTMgLTEuNDI4MDksLTMuMzcwNjYgdiAtMi4wMjUxNSBjIC0wLjAyNzUsLTMuNTk0MTQgLTEu
MzEwMTIsLTYuNjc3MDggLTMuODQ4NDQsLTkuMjQzNTggLTIuNTY1ODQsLTIuNTM4MzIgLTUuNjYw
NTgsLTMuODA3MTUgLTkuMjgyOTEsLTMuODA3MTUgaCAtMy4yNTI2OSB2IDE1LjA3NTIzIGMgMCwx
LjM0ODEzIC0wLjQ3NjQ2LDIuNDcxNDYgLTEuNDI4MDksMy4zNzA2NSAtMC45NTI5MywwLjk1MzU5
IC0yLjA3NzU4LDEuNDI4NzUgLTMuMzcyNjIsMS40Mjg3NSBoIC0wLjEyMDU5IGMgLTEuMjk1Nyww
IC0yLjQxODM4LC0wLjQ3NTE2IC0zLjM3MTMyLC0xLjQyODc1IC0wLjk1MTYyLC0wLjg5ODUzIC0x
LjQyODA5LC0yLjAyMjUyIC0xLjQyODA5LC0zLjM3MDY1IHYgLTUyLjM2NTQ3IGMgMCwtMS4zMjI1
NyAwLjQ3NjQ3LC0yLjQ2MDMyIDEuNDI4MDksLTMuNDExMjkgMC45NTIyOCwtMC45MjU0MSAyLjA3
NTYyLC0xLjM4ODc3IDMuMzcxMzIsLTEuMzg4NzcgaCAwLjEyMDU5IHoiIC8+CisgICAgICA8cGF0
aCBkPSJtIDQwMi4zMTE2NCwyNzEuNjI5MSBjIDAuMzE3MjEsMC42NjA2MyAwLjQ3NTgxLDEuMzMz
NzEgMC40NzU4MSwyLjAyMjUyIDAsMC41NTU3NyAtMC4xMDYxNywxLjExMDg5IC0wLjMxNjU1LDEu
NjY2NjUgLTAuNDUwMjUsMS4yNDI2MiAtMS4yOTYzNSwyLjE0MTgxIC0yLjUzODk3LDIuNjk2OTIg
LTMuNzAyOTQsMS42NjY2NSAtOC41NjkxOSwzLjg2MjIgLTE0LjU5ODc2LDYuNTg1OTkgLTcuNDg0
NTIsMy4zODQ0MiAtMTEuODc0OTYsNS4zODEzOSAtMTMuMTcwNjcsNS45OTA5IDIuMDA4NzcsMi41
MzgzMiA1LjE0MzQ5LDMuODA3MTUgOS40MDIxOSwzLjgwNzE1IDIuODI4NjYsMCA1LjM5NDUsLTAu
ODMyMzQgNy42OTYyMiwtMi40OTkgMi4yNDczMiwtMS42Mzk3NyAzLjgyMDkxLC0zLjc1NTM3IDQu
NzIwMSwtNi4zNDgwOCAwLjc2NjgxLC0yLjE2ODY4IDIuMzAxNzIsLTMuMjUyNjkgNC42MDE0OCwt
My4yNTI2OSAxLjYzOTc4LDAgMi45NDkyNCwwLjY4ODgxIDMuOTI4MzksMi4wNjE4NSAwLjYwNjg5
LDAuODQ3NDIgMC45MTE2NSwxLjczMzUgMC45MTE2NSwyLjY1ODkxIDAsMC41NTU3NyAtMC4xMDU1
MiwxLjEyMzk5IC0wLjMxNzIxLDEuNzA1MzIgLTEuNTYwNDgsNC41MjM0OCAtNC4yOTczOCw4LjE3
MzM0IC04LjIxMTM1LDEwLjk1MDg3IC0zLjk2NzA2LDIuODgxMDggLTguNDA5OTQsNC4zMjI5MyAt
MTMuMzI5MjgsNC4zMjI5MyAtNi4yOTQzNCwwIC0xMS42NzYzOCwtMi4yMzM1NiAtMTYuMTQ1NDcs
LTYuNzAzOTUgLTQuNDY5NzQsLTQuNDY5NzUgLTYuNzA0NjEsLTkuODUxMTQgLTYuNzA0NjEsLTE2
LjE0Njc5IDAsLTYuMjk0MzQgMi4yMzQ4NywtMTEuNjc1MDcgNi43MDQ2MSwtMTYuMTQ2NzggNC40
Njg0MywtNC40Njg0MyA5Ljg1MTEzLC02LjcwMzk2IDE2LjE0NTQ3LC02LjcwMzk2IDQuNTQ3NzQs
MCA4LjcwMDkzLDEuMjQzOTIgMTIuNDU2MywzLjcyODUgMy43Mjg1LDIuNDM2MDcgNi40OTE2MSw1
LjYzNDM3IDguMjkwNjUsOS42MDI3NCB6IG0gLTIwLjc0NzYsLTMuNTMzMiBjIC0zLjY0OTIsMCAt
Ni43NTc3LDEuMjgzOTEgLTkuMzIyODksMy44NDkwOSAtMi41Mzg5NywyLjU2NjUgLTMuODA4NDYs
NS42NzQzNSAtMy44MDg0Niw5LjMyMjg5IHYgMC4yNzc4OSBsIDIyLjE3NTcsLTkuOTU3MzEgYyAt
MS45NTY5OSwtMi4zMjU5NyAtNC45NzE3NywtMy40OTI1NiAtOS4wNDQzNSwtMy40OTI1NiB6IiAv
PgorICAgICAgPHBhdGggZD0ibSA0MTUuNDgxNjYsMjQyLjAzNDQyIGMgMS4yOTU3LDAgMi40MTk2
OSwwLjQ2MzM2IDMuMzcyNjIsMS4zODg3NiAwLjk1MTYyLDAuOTUwOTcgMS40MjgwOSwyLjA4OTM4
IDEuNDI4MDksMy40MTEzIHYgMTEuNDY0MDMgaCA1Ljk1MDkyIGMgMS4yOTU3LDAgMi40MTkwMyww
LjQ3NjQ3IDMuMzcyNjIsMS40MzAwNiAwLjk1MTYzLDAuOTUwOTcgMS40MjY3OCwyLjA4OTM4IDEu
NDI2NzgsMy40MDk5OCB2IDAuMDc5MyBjIDAsMS4zNDk0NSAtMC40NzUxNSwyLjQ3NDA5IC0xLjQy
Njc4LDMuMzcyNjMgLTAuOTUyOTMsMC45NTA5NyAtMi4wNzY5MiwxLjQyODc0IC0zLjM3MjYyLDEu
NDI4NzQgaCAtNS45NTA5MiB2IDIzLjUyMjUyIGMgMCwwLjc2ODExIDAuMjYzNDcsMS40MTY5NSAw
Ljc5MzY3LDEuOTQ0NTMgMC41Mjg5LDAuNTMwMjEgMS4xOTAxOSwwLjc5MzY4IDEuOTgzMjEsMC43
OTM2OCBoIDMuMTc0MDQgYyAxLjI5NTcsMCAyLjQxOTAzLDAuNDc2NDYgMy4zNzI2MiwxLjQyODc0
IDAuOTUxNjMsMC45NTIyOCAxLjQyNjc4LDIuMDkwMDMgMS40MjY3OCwzLjQxMTI5IHYgMC4wODA2
IGMgMCwxLjM0ODEzIC0wLjQ3NTE1LDIuNDcxNDYgLTEuNDI2NzgsMy4zNzA2NSBDIDQyOC42NTI5
OCwzMDMuNTI0ODQgNDI3LjUyODk5LDMwNCA0MjYuMjMzMjksMzA0IGggLTMuMTc0MDQgYyAtMy40
MzgxNywwIC02LjM4Njc1LC0xLjIxNTc0IC04Ljg0NjQyLC0zLjY0OTIgLTIuNDM0MTEsLTIuNDU5
MDEgLTMuNjQ5MiwtNS4zOTUxNSAtMy42NDkyLC04LjgwNzc1IHYgLTQ0LjcwNzI2IGMgMCwtMS4z
MjI1OCAwLjQ3NTgxLC0yLjQ2MDMzIDEuNDI4MDksLTMuNDExMyAwLjk1MjI4LC0wLjkyNTQgMi4w
NzYyNywtMS4zODg3NiAzLjM3MTk3LC0xLjM4ODc2IGggMC4xMTc5NyB6IiAvPgorICAgICAgPHBh
dGggZD0ibSA0NDguODg1NDUsMjY4LjAxOTIyIGMgLTEuMTYzOTcsMCAtMi4xNDI0NiwwLjM5NTg2
IC0yLjkzNTQ4LDEuMTg4ODggLTAuNzkzNjgsMC44MjA1NCAtMS4xOTAxOSwxLjc5ODM4IC0xLjE5
MDE5LDIuOTM1NDggMCwxLjU4NzM1IDAuNzY2ODEsMi43Nzc1MyAyLjMwMDQyLDMuNTY5ODkgMC41
MzAyLDAuMjkxNjUgMi43MzgyLDAuOTUyMjggNi42MjU5NiwxLjk4Mzg2IDMuMTQ2NTIsMC44OTk4
NSA1LjQ4NjkxLDIuMDc2MjcgNy4wMjExNywzLjUzMDU3IDIuMTk0ODksMi4wOTAwMyAzLjI5MjY3
LDUuMDY1NDkgMy4yOTI2Nyw4LjkyNzA0IDAsMy44MDcxNCAtMS4zNDk0NSw3LjA3MzYgLTQuMDQ2
MzcsOS43OTczOSAtMi43MjM3OSwyLjY5ODIzIC01Ljk5MDg5LDQuMDQ2MzYgLTkuNzk4NjksNC4w
NDYzNiBoIC0xMC4zNTM4MiBjIC0xLjI5NjM1LDAgLTIuNDE5NjksLTAuNDc1MTYgLTMuMzcyNjIs
LTEuNDI4NzUgLTAuOTUyMjgsLTAuODk4NTMgLTEuNDI3NDQsLTIuMDIyNTIgLTEuNDI3NDQsLTMu
MzcwNjUgdiAtMC4wODA2IGMgMCwtMS4zMjEyNiAwLjQ3NTE2LC0yLjQ1OTAxIDEuNDI3NDQsLTMu
NDExMjkgMC45NTIyOCwtMC45NTIyOCAyLjA3NjI3LC0xLjQyODc0IDMuMzcyNjIsLTEuNDI4NzQg
aCAxMC43NTAzMiBjIDEuMTYzMzIsMCAyLjE0MzEyLC0wLjM5NTg2IDIuOTM1NDksLTEuMTg4ODgg
MC43OTM2NywtMC43OTM2NyAxLjE5MDE4LC0xLjc3MTUxIDEuMTkwMTgsLTIuOTM1NDggMCwtMS40
NTU2MSAtMC43NTM3LC0yLjU1MzM5IC0yLjI2MDQzLC0zLjI5MjAxIC0wLjM5NzgyLC0wLjE4Njc4
IC0yLjYxODkzLC0wLjg0NzQyIC02LjY2NTI5LC0xLjk4Mzg2IC0zLjE0NzgzLC0wLjkyNTQgLTUu
NDg4ODcsLTIuMTQzNzcgLTcuMDIyNDgsLTMuNjUwNTEgLTIuMTk1NTUsLTIuMTQxOCAtMy4yOTIw
MSwtNS4xNzAzNSAtMy4yOTIwMSwtOS4wODQzMiAwLC0zLjgwODQ2IDEuMzQ5NDQsLTcuMDYwNDkg
NC4wNDcwMSwtOS43NTgwNyAyLjcyMzE0LC0yLjcyMzc5IDUuOTkwMjUsLTQuMDg3IDkuNzk4Nywt
NC4wODcgaCA3LjI5OTA2IGMgMS4zMjMyMiwwIDIuNDU5NjcsMC40NzY0NyAzLjQxMTI5LDEuNDMw
MDYgMC45NTIyOCwwLjk1MDk3IDEuNDI4MDksMi4wODkzOCAxLjQyODA5LDMuNDA5OTggdiAwLjA3
OTMgYyAwLDEuMzQ5NDUgLTAuNDc1ODEsMi40NzQwOSAtMS40MjgwOSwzLjM3MjYzIC0wLjk1MTYy
LDAuOTUwOTcgLTIuMDg4NzIsMS40Mjg3NCAtMy40MTEyOSwxLjQyODc0IHoiIC8+CisgICAgPC9n
PgorICA8L2c+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9wZXJmb3JtYW5j
ZS9tZW1fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3BlcmZvcm1hbmNlL21lbV9jbGllbnQu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OTAyMTZlZGY4MDcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvcGVyZm9ybWFuY2UvbWVtX2NsaWVu
dC5weQpAQCAtMCwwICsxLDU0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGFz
eW5jaW8KK2ltcG9ydCBzdGF0aXN0aWNzCitpbXBvcnQgdHJhY2VtYWxsb2MKKworaW1wb3J0IHdl
YnNvY2tldHMKK2Zyb20gd2Vic29ja2V0cy5leHRlbnNpb25zIGltcG9ydCBwZXJtZXNzYWdlX2Rl
ZmxhdGUKKworCitDTElFTlRTID0gMTAKK0lOVEVSVkFMID0gMSAvIDEwICAjIHNlY29uZHMKKwor
TUVNX1NJWkUgPSBbXQorCisKK2FzeW5jIGRlZiBtZW1fY2xpZW50KGNsaWVudCk6CisgICAgIyBT
cGFjZSBvdXQgY29ubmVjdGlvbnMgdG8gbWFrZSB0aGVtIHNlcXVlbnRpYWwuCisgICAgYXdhaXQg
YXN5bmNpby5zbGVlcChjbGllbnQgKiBJTlRFUlZBTCkKKworICAgIHRyYWNlbWFsbG9jLnN0YXJ0
KCkKKworICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5jb25uZWN0KAorICAgICAgICAid3M6Ly9s
b2NhbGhvc3Q6ODc2NSIsCisgICAgICAgIGV4dGVuc2lvbnM9WworICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlLkNsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgKKyAgICAgICAgICAg
ICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTEwLAorICAgICAgICAgICAgICAgIGNsaWVudF9t
YXhfd2luZG93X2JpdHM9MTAsCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2V0dGluZ3M9eyJt
ZW1MZXZlbCI6IDN9LAorICAgICAgICAgICAgKQorICAgICAgICBdLAorICAgICkgYXMgd3M6Cisg
ICAgICAgIGF3YWl0IHdzLnNlbmQoImhlbGxvIikKKyAgICAgICAgYXdhaXQgd3MucmVjdigpCisK
KyAgICAgICAgYXdhaXQgd3Muc2VuZChiImhlbGxvIikKKyAgICAgICAgYXdhaXQgd3MucmVjdigp
CisKKyAgICAgICAgTUVNX1NJWkUuYXBwZW5kKHRyYWNlbWFsbG9jLmdldF90cmFjZWRfbWVtb3J5
KClbMF0pCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorCisgICAgICAgICMgSG9sZCBjb25u
ZWN0aW9uIG9wZW4gdW50aWwgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICAgICAgYXdhaXQgYXN5
bmNpby5zbGVlcChDTElFTlRTICogSU5URVJWQUwpCisKKworYXN5bmNpby5nZXRfZXZlbnRfbG9v
cCgpLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICBhc3luY2lvLmdhdGhlcigqW21lbV9jbGllbnQo
Y2xpZW50KSBmb3IgY2xpZW50IGluIHJhbmdlKENMSUVOVFMgKyAxKV0pCispCisKKyMgRmlyc3Qg
Y29ubmVjdGlvbiBpbmN1cnMgbm9uLXJlcHJlc2VudGF0aXZlIHNldHVwIGNvc3RzLgorZGVsIE1F
TV9TSVpFWzBdCisKK3ByaW50KGYiwrUgPSB7c3RhdGlzdGljcy5tZWFuKE1FTV9TSVpFKSAvIDEw
MjQ6LjFmfcKgS2lCIikKK3ByaW50KGYiz4MgPSB7c3RhdGlzdGljcy5zdGRldihNRU1fU0laRSkg
LyAxMDI0Oi4xZn3CoEtpQiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvcGVyZm9ybWFu
Y2UvbWVtX3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9wZXJmb3JtYW5jZS9tZW1fc2VydmVy
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGE0YTI5Zjc2YzZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3BlcmZvcm1hbmNlL21lbV9zZXJ2
ZXIucHkKQEAgLTAsMCArMSw2MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2ltcG9ydCBh
c3luY2lvCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3RhdGlzdGljcworaW1wb3J0IHRyYWNlbWFs
bG9jCisKK2ltcG9ydCB3ZWJzb2NrZXRzCitmcm9tIHdlYnNvY2tldHMuZXh0ZW5zaW9ucyBpbXBv
cnQgcGVybWVzc2FnZV9kZWZsYXRlCisKKworQ0xJRU5UUyA9IDEwCitJTlRFUlZBTCA9IDEgLyAx
MCAgIyBzZWNvbmRzCisKK01FTV9TSVpFID0gW10KKworCithc3luYyBkZWYgaGFuZGxlcih3cywg
cGF0aCk6CisgICAgbXNnID0gYXdhaXQgd3MucmVjdigpCisgICAgYXdhaXQgd3Muc2VuZChtc2cp
CisKKyAgICBtc2cgPSBhd2FpdCB3cy5yZWN2KCkKKyAgICBhd2FpdCB3cy5zZW5kKG1zZykKKwor
ICAgIE1FTV9TSVpFLmFwcGVuZCh0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdKQor
ICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorCisgICAgdHJhY2VtYWxsb2Muc3RhcnQoKQorCisgICAg
IyBIb2xkIGNvbm5lY3Rpb24gb3BlbiB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorICAgIGF3
YWl0IGFzeW5jaW8uc2xlZXAoQ0xJRU5UUyAqIElOVEVSVkFMKQorCisKK2FzeW5jIGRlZiBtZW1f
c2VydmVyKHN0b3ApOgorICAgIGFzeW5jIHdpdGggd2Vic29ja2V0cy5zZXJ2ZSgKKyAgICAgICAg
aGFuZGxlciwKKyAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgIDg3NjUsCisgICAgICAgIGV4
dGVuc2lvbnM9WworICAgICAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlLlNlcnZlclBlck1lc3Nh
Z2VEZWZsYXRlRmFjdG9yeSgKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
PTEwLAorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHM9MTAsCisgICAgICAg
ICAgICAgICAgY29tcHJlc3Nfc2V0dGluZ3M9eyJtZW1MZXZlbCI6IDN9LAorICAgICAgICAgICAg
KQorICAgICAgICBdLAorICAgICk6CisgICAgICAgIGF3YWl0IHN0b3AKKworCitsb29wID0gYXN5
bmNpby5nZXRfZXZlbnRfbG9vcCgpCisKK3N0b3AgPSBsb29wLmNyZWF0ZV9mdXR1cmUoKQorbG9v
cC5hZGRfc2lnbmFsX2hhbmRsZXIoc2lnbmFsLlNJR0lOVCwgc3RvcC5zZXRfcmVzdWx0LCBOb25l
KQorCit0cmFjZW1hbGxvYy5zdGFydCgpCisKK2xvb3AucnVuX3VudGlsX2NvbXBsZXRlKG1lbV9z
ZXJ2ZXIoc3RvcCkpCisKKyMgRmlyc3QgY29ubmVjdGlvbiBpbmN1cnMgbm9uLXJlcHJlc2VudGF0
aXZlIHNldHVwIGNvc3RzLgorZGVsIE1FTV9TSVpFWzBdCisKK3ByaW50KGYiwrUgPSB7c3RhdGlz
dGljcy5tZWFuKE1FTV9TSVpFKSAvIDEwMjQ6LjFmfcKgS2lCIikKK3ByaW50KGYiz4MgPSB7c3Rh
dGlzdGljcy5zdGRldihNRU1fU0laRSkgLyAxMDI0Oi4xZn3CoEtpQiIpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NldHVwLmNmZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMzMDZiMmQ0ZmI3ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zZXR1cC5jZmcKQEAgLTAsMCArMSwzMCBAQAor
W2JkaXN0X3doZWVsXQorcHl0aG9uLXRhZyA9IHB5MzYucHkzNworCitbbWV0YWRhdGFdCitsaWNl
bnNlX2ZpbGUgPSBMSUNFTlNFCisKK1tmbGFrZThdCitpZ25vcmUgPSBFNzMxLEY0MDMsRjQwNSxX
NTAzCittYXgtbGluZS1sZW5ndGggPSA4OAorCitbaXNvcnRdCitjb21iaW5lX2FzX2ltcG9ydHMg
PSBUcnVlCitmb3JjZV9ncmlkX3dyYXAgPSAwCitpbmNsdWRlX3RyYWlsaW5nX2NvbW1hID0gVHJ1
ZQora25vd25fc3RhbmRhcmRfbGlicmFyeSA9IGFzeW5jaW8KK2xpbmVfbGVuZ3RoID0gODgKK2xp
bmVzX2FmdGVyX2ltcG9ydHMgPSAyCittdWx0aV9saW5lX291dHB1dCA9IDMKKworW2NvdmVyYWdl
OnJ1bl0KK2JyYW5jaCA9IFRydWUKK29taXQgPSAqL19fbWFpbl9fLnB5Citzb3VyY2UgPQorICAg
IHdlYnNvY2tldHMKKyAgICB0ZXN0cworCitbY292ZXJhZ2U6cGF0aHNdCitzb3VyY2UgPQorICAg
IHNyYy93ZWJzb2NrZXRzCisgICAudG94LyovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy93ZWJz
b2NrZXRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m
MzU4MTkyNDc3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc2V0dXAucHkK
QEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IHBhdGhsaWIKK2ltcG9ydCByZQoraW1wb3J0IHN5cwor
CitpbXBvcnQgc2V0dXB0b29scworCisKK3Jvb3RfZGlyID0gcGF0aGxpYi5QYXRoKF9fZmlsZV9f
KS5wYXJlbnQKKworZGVzY3JpcHRpb24gPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYlNv
Y2tldCBQcm90b2NvbCAoUkZDIDY0NTUgJiA3NjkyKSIKKworbG9uZ19kZXNjcmlwdGlvbiA9IChy
b290X2RpciAvICdSRUFETUUucnN0JykucmVhZF90ZXh0KGVuY29kaW5nPSd1dGYtOCcpCisKKyMg
UHlQSSBkaXNhYmxlcyB0aGUgInJhdyIgZGlyZWN0aXZlLgorbG9uZ19kZXNjcmlwdGlvbiA9IHJl
LnN1YigKKyAgICByIl5cLlwuIHJhdzo6IGh0bWwuKj9eKD89XHcpIiwKKyAgICAiIiwKKyAgICBs
b25nX2Rlc2NyaXB0aW9uLAorICAgIGZsYWdzPXJlLkRPVEFMTCB8IHJlLk1VTFRJTElORSwKKykK
KworZXhlYygocm9vdF9kaXIgLyAnc3JjJyAvICd3ZWJzb2NrZXRzJyAvICd2ZXJzaW9uLnB5Jyku
cmVhZF90ZXh0KGVuY29kaW5nPSd1dGYtOCcpKQorCitpZiBzeXMudmVyc2lvbl9pbmZvWzozXSA8
ICgzLCA2LCAxKToKKyAgICByYWlzZSBFeGNlcHRpb24oIndlYnNvY2tldHMgcmVxdWlyZXMgUHl0
aG9uID49IDMuNi4xLiIpCisKK3BhY2thZ2VzID0gWyd3ZWJzb2NrZXRzJywgJ3dlYnNvY2tldHMv
ZXh0ZW5zaW9ucyddCisKK2V4dF9tb2R1bGVzID0gWworICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9u
KAorICAgICAgICAnd2Vic29ja2V0cy5zcGVlZHVwcycsCisgICAgICAgIHNvdXJjZXM9WydzcmMv
d2Vic29ja2V0cy9zcGVlZHVwcy5jJ10sCisgICAgICAgIG9wdGlvbmFsPW5vdCAocm9vdF9kaXIg
LyAnLmNpYnVpbGR3aGVlbCcpLmV4aXN0cygpLAorICAgICkKK10KKworc2V0dXB0b29scy5zZXR1
cCgKKyAgICBuYW1lPSd3ZWJzb2NrZXRzJywKKyAgICB2ZXJzaW9uPXZlcnNpb24sCisgICAgZGVz
Y3JpcHRpb249ZGVzY3JpcHRpb24sCisgICAgbG9uZ19kZXNjcmlwdGlvbj1sb25nX2Rlc2NyaXB0
aW9uLAorICAgIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2FhdWd1c3Rpbi93ZWJzb2NrZXRzJywK
KyAgICBhdXRob3I9J0F5bWVyaWMgQXVndXN0aW4nLAorICAgIGF1dGhvcl9lbWFpbD0nYXltZXJp
Yy5hdWd1c3RpbkBtNHgub3JnJywKKyAgICBsaWNlbnNlPSdCU0QnLAorICAgIGNsYXNzaWZpZXJz
PVsKKyAgICAgICAgJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUn
LAorICAgICAgICAnRW52aXJvbm1lbnQgOjogV2ViIEVudmlyb25tZW50JywKKyAgICAgICAgJ0lu
dGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLAorICAgICAgICAnTGljZW5zZSA6OiBPU0kg
QXBwcm92ZWQgOjogQlNEIExpY2Vuc2UnLAorICAgICAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBP
UyBJbmRlcGVuZGVudCcsCisgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24n
LAorICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMnLAorICAgICAg
ICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuNicsCisgICAgICAgICdQcm9n
cmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43JywKKyAgICAgICAgJ1Byb2dyYW1taW5n
IExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjgnLAorICAgIF0sCisgICAgcGFja2FnZV9kaXIgPSB7
Jyc6ICdzcmMnfSwKKyAgICBwYWNrYWdlX2RhdGEgPSB7J3dlYnNvY2tldHMnOiBbJ3B5LnR5cGVk
J119LAorICAgIHBhY2thZ2VzPXBhY2thZ2VzLAorICAgIGV4dF9tb2R1bGVzPWV4dF9tb2R1bGVz
LAorICAgIGluY2x1ZGVfcGFja2FnZV9kYXRhPVRydWUsCisgICAgemlwX3NhZmU9RmFsc2UsCisg
ICAgcHl0aG9uX3JlcXVpcmVzPSc+PTMuNi4xJywKKyAgICB0ZXN0X2xvYWRlcj0ndW5pdHRlc3Q6
VGVzdExvYWRlcicsCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tl
dHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvX19pbml0X18u
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYTFkODI5YTMzNWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvX19pbml0
X18ucHkKQEAgLTAsMCArMSw1NSBAQAorIyBUaGlzIHJlbGllcyBvbiBlYWNoIG9mIHRoZSBzdWJt
b2R1bGVzIGhhdmluZyBhbiBfX2FsbF9fIHZhcmlhYmxlLgorCitmcm9tIC5hdXRoIGltcG9ydCAq
ICAjIG5vcWEKK2Zyb20gLmNsaWVudCBpbXBvcnQgKiAgIyBub3FhCitmcm9tIC5leGNlcHRpb25z
IGltcG9ydCAqICAjIG5vcWEKK2Zyb20gLnByb3RvY29sIGltcG9ydCAqICAjIG5vcWEKK2Zyb20g
LnNlcnZlciBpbXBvcnQgKiAgIyBub3FhCitmcm9tIC50eXBpbmcgaW1wb3J0ICogICMgbm9xYQor
ZnJvbSAudXJpIGltcG9ydCAqICAjIG5vcWEKK2Zyb20gLnZlcnNpb24gaW1wb3J0IHZlcnNpb24g
YXMgX192ZXJzaW9uX18gICMgbm9xYQorCisKK19fYWxsX18gPSBbCisgICAgIkFib3J0SGFuZHNo
YWtlIiwKKyAgICAiYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0b3J5IiwKKyAgICAiQmFzaWNBdXRo
V2ViU29ja2V0U2VydmVyUHJvdG9jb2wiLAorICAgICJjb25uZWN0IiwKKyAgICAiQ29ubmVjdGlv
bkNsb3NlZCIsCisgICAgIkNvbm5lY3Rpb25DbG9zZWRFcnJvciIsCisgICAgIkNvbm5lY3Rpb25D
bG9zZWRPSyIsCisgICAgIkRhdGEiLAorICAgICJEdXBsaWNhdGVQYXJhbWV0ZXIiLAorICAgICJF
eHRlbnNpb25IZWFkZXIiLAorICAgICJFeHRlbnNpb25QYXJhbWV0ZXIiLAorICAgICJJbnZhbGlk
SGFuZHNoYWtlIiwKKyAgICAiSW52YWxpZEhlYWRlciIsCisgICAgIkludmFsaWRIZWFkZXJGb3Jt
YXQiLAorICAgICJJbnZhbGlkSGVhZGVyVmFsdWUiLAorICAgICJJbnZhbGlkTWVzc2FnZSIsCisg
ICAgIkludmFsaWRPcmlnaW4iLAorICAgICJJbnZhbGlkUGFyYW1ldGVyTmFtZSIsCisgICAgIklu
dmFsaWRQYXJhbWV0ZXJWYWx1ZSIsCisgICAgIkludmFsaWRTdGF0ZSIsCisgICAgIkludmFsaWRT
dGF0dXNDb2RlIiwKKyAgICAiSW52YWxpZFVwZ3JhZGUiLAorICAgICJJbnZhbGlkVVJJIiwKKyAg
ICAiTmVnb3RpYXRpb25FcnJvciIsCisgICAgIk9yaWdpbiIsCisgICAgInBhcnNlX3VyaSIsCisg
ICAgIlBheWxvYWRUb29CaWciLAorICAgICJQcm90b2NvbEVycm9yIiwKKyAgICAiUmVkaXJlY3RI
YW5kc2hha2UiLAorICAgICJTZWN1cml0eUVycm9yIiwKKyAgICAic2VydmUiLAorICAgICJTdWJw
cm90b2NvbCIsCisgICAgInVuaXhfY29ubmVjdCIsCisgICAgInVuaXhfc2VydmUiLAorICAgICJX
ZWJTb2NrZXRDbGllbnRQcm90b2NvbCIsCisgICAgIldlYlNvY2tldENvbW1vblByb3RvY29sIiwK
KyAgICAiV2ViU29ja2V0RXhjZXB0aW9uIiwKKyAgICAiV2ViU29ja2V0UHJvdG9jb2xFcnJvciIs
CisgICAgIldlYlNvY2tldFNlcnZlciIsCisgICAgIldlYlNvY2tldFNlcnZlclByb3RvY29sIiwK
KyAgICAiV2ViU29ja2V0VVJJIiwKK10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMv
d2Vic29ja2V0cy9fX21haW5fXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9f
X21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM5NGY3
YWM3OTljMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0
cy9fX21haW5fXy5weQpAQCAtMCwwICsxLDIwNiBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQg
YXN5bmNpbworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3lzCitpbXBvcnQgdGhy
ZWFkaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBTZXQKKworZnJvbSAuY2xpZW50IGltcG9y
dCBjb25uZWN0Citmcm9tIC5leGNlcHRpb25zIGltcG9ydCBDb25uZWN0aW9uQ2xvc2VkLCBmb3Jt
YXRfY2xvc2UKKworCitpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKworICAgIGRlZiB3aW5f
ZW5hYmxlX3Z0MTAwKCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEVuYWJsZSBWVC0x
MDAgZm9yIGNvbnNvbGUgb3V0cHV0IG9uIFdpbmRvd3MuCisKKyAgICAgICAgU2VlIGFsc28gaHR0
cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyOTA1OS4KKworICAgICAgICAiIiIKKyAgICAgICAg
aW1wb3J0IGN0eXBlcworCisgICAgICAgIFNURF9PVVRQVVRfSEFORExFID0gY3R5cGVzLmNfdWlu
dCgtMTEpCisgICAgICAgIElOVkFMSURfSEFORExFX1ZBTFVFID0gY3R5cGVzLmNfdWludCgtMSkK
KyAgICAgICAgRU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORyA9IDB4MDA0CisKKyAg
ICAgICAgaGFuZGxlID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5HZXRTdGRIYW5kbGUoU1REX09V
VFBVVF9IQU5ETEUpCisgICAgICAgIGlmIGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRToK
KyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidW5hYmxlIHRvIG9idGFpbiBzdGRvdXQg
aGFuZGxlIikKKworICAgICAgICBjdXJfbW9kZSA9IGN0eXBlcy5jX3VpbnQoKQorICAgICAgICBp
ZiBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkdldENvbnNvbGVNb2RlKGhhbmRsZSwgY3R5cGVzLmJ5
cmVmKGN1cl9tb2RlKSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidW5h
YmxlIHRvIHF1ZXJ5IGN1cnJlbnQgY29uc29sZSBtb2RlIikKKworICAgICAgICAjIGN0eXBlcyBp
bnRzIGxhY2sgc3VwcG9ydCBmb3IgdGhlIHJlcXVpcmVkIGJpdC1PUiBvcGVyYXRpb24uCisgICAg
ICAgICMgVGVtcG9yYXJpbHkgY29udmVydCB0byBQeSBpbnQsIGRvIHRoZSBPUiBhbmQgY29udmVy
dCBiYWNrLgorICAgICAgICBweV9pbnRfbW9kZSA9IGludC5mcm9tX2J5dGVzKGN1cl9tb2RlLCBz
eXMuYnl0ZW9yZGVyKQorICAgICAgICBuZXdfbW9kZSA9IGN0eXBlcy5jX3VpbnQocHlfaW50X21v
ZGUgfCBFTkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HKQorCisgICAgICAgIGlmIGN0
eXBlcy53aW5kbGwua2VybmVsMzIuU2V0Q29uc29sZU1vZGUoaGFuZGxlLCBuZXdfbW9kZSkgPT0g
MDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidW5hYmxlIHRvIHNldCBjb25zb2xl
IG1vZGUiKQorCisKK2RlZiBleGl0X2Zyb21fZXZlbnRfbG9vcF90aHJlYWQoCisgICAgbG9vcDog
YXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcCwgc3RvcDogImFzeW5jaW8uRnV0dXJlW05vbmVdIgor
KSAtPiBOb25lOgorICAgIGxvb3Auc3RvcCgpCisgICAgaWYgbm90IHN0b3AuZG9uZSgpOgorICAg
ICAgICAjIFdoZW4gZXhpdGluZyB0aGUgdGhyZWFkIHRoYXQgcnVucyB0aGUgZXZlbnQgbG9vcCwg
cmFpc2UKKyAgICAgICAgIyBLZXlib2FyZEludGVycnVwdCBpbiB0aGUgbWFpbiB0aHJlYWQgdG8g
ZXhpdCB0aGUgcHJvZ3JhbS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY3RybF9jID0gc2ln
bmFsLkNUUkxfQ19FVkVOVCAgIyBXaW5kb3dzCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJv
cjoKKyAgICAgICAgICAgIGN0cmxfYyA9IHNpZ25hbC5TSUdJTlQgICMgUE9TSVgKKyAgICAgICAg
b3Mua2lsbChvcy5nZXRwaWQoKSwgY3RybF9jKQorCisKK2RlZiBwcmludF9kdXJpbmdfaW5wdXQo
c3RyaW5nOiBzdHIpIC0+IE5vbmU6CisgICAgc3lzLnN0ZG91dC53cml0ZSgKKyAgICAgICAgIyBT
YXZlIGN1cnNvciBwb3NpdGlvbgorICAgICAgICAiXE57RVNDfTciCisgICAgICAgICMgQWRkIGEg
bmV3IGxpbmUKKyAgICAgICAgIlxOe0xJTkUgRkVFRH0iCisgICAgICAgICMgTW92ZSBjdXJzb3Ig
dXAKKyAgICAgICAgIlxOe0VTQ31bQSIKKyAgICAgICAgIyBJbnNlcnQgYmxhbmsgbGluZSwgc2Ny
b2xsIGxhc3QgbGluZSBkb3duCisgICAgICAgICJcTntFU0N9W0wiCisgICAgICAgICMgUHJpbnQg
c3RyaW5nIGluIHRoZSBpbnNlcnRlZCBibGFuayBsaW5lCisgICAgICAgIGYie3N0cmluZ31cTntM
SU5FIEZFRUR9IgorICAgICAgICAjIFJlc3RvcmUgY3Vyc29yIHBvc2l0aW9uCisgICAgICAgICJc
TntFU0N9OCIKKyAgICAgICAgIyBNb3ZlIGN1cnNvciBkb3duCisgICAgICAgICJcTntFU0N9W0Ii
CisgICAgKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisKK2RlZiBwcmludF9vdmVyX2lucHV0
KHN0cmluZzogc3RyKSAtPiBOb25lOgorICAgIHN5cy5zdGRvdXQud3JpdGUoCisgICAgICAgICMg
TW92ZSBjdXJzb3IgdG8gYmVnaW5uaW5nIG9mIGxpbmUKKyAgICAgICAgIlxOe0NBUlJJQUdFIFJF
VFVSTn0iCisgICAgICAgICMgRGVsZXRlIGN1cnJlbnQgbGluZQorICAgICAgICAiXE57RVNDfVtL
IgorICAgICAgICAjIFByaW50IHN0cmluZworICAgICAgICBmIntzdHJpbmd9XE57TElORSBGRUVE
fSIKKyAgICApCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKworYXN5bmMgZGVmIHJ1bl9jbGll
bnQoCisgICAgdXJpOiBzdHIsCisgICAgbG9vcDogYXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcCwK
KyAgICBpbnB1dHM6ICJhc3luY2lvLlF1ZXVlW3N0cl0iLAorICAgIHN0b3A6ICJhc3luY2lvLkZ1
dHVyZVtOb25lXSIsCispIC0+IE5vbmU6CisgICAgdHJ5OgorICAgICAgICB3ZWJzb2NrZXQgPSBh
d2FpdCBjb25uZWN0KHVyaSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAg
cHJpbnRfb3Zlcl9pbnB1dChmIkZhaWxlZCB0byBjb25uZWN0IHRvIHt1cml9OiB7ZXhjfS4iKQor
ICAgICAgICBleGl0X2Zyb21fZXZlbnRfbG9vcF90aHJlYWQobG9vcCwgc3RvcCkKKyAgICAgICAg
cmV0dXJuCisgICAgZWxzZToKKyAgICAgICAgcHJpbnRfZHVyaW5nX2lucHV0KGYiQ29ubmVjdGVk
IHRvIHt1cml9LiIpCisKKyAgICB0cnk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICBpbmNvbWluZzogYXN5bmNpby5GdXR1cmVbQW55XSA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSh3
ZWJzb2NrZXQucmVjdigpKQorICAgICAgICAgICAgb3V0Z29pbmc6IGFzeW5jaW8uRnV0dXJlW0Fu
eV0gPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaW5wdXRzLmdldCgpKQorICAgICAgICAgICAgZG9u
ZTogU2V0W2FzeW5jaW8uRnV0dXJlW0FueV1dCisgICAgICAgICAgICBwZW5kaW5nOiBTZXRbYXN5
bmNpby5GdXR1cmVbQW55XV0KKyAgICAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBhd2FpdCBhc3lu
Y2lvLndhaXQoCisgICAgICAgICAgICAgICAgW2luY29taW5nLCBvdXRnb2luZywgc3RvcF0sIHJl
dHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVECisgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgICMgQ2FuY2VsIHBlbmRpbmcgdGFza3MgdG8gYXZvaWQgbGVha2luZyB0aGVtLgorICAg
ICAgICAgICAgaWYgaW5jb21pbmcgaW4gcGVuZGluZzoKKyAgICAgICAgICAgICAgICBpbmNvbWlu
Zy5jYW5jZWwoKQorICAgICAgICAgICAgaWYgb3V0Z29pbmcgaW4gcGVuZGluZzoKKyAgICAgICAg
ICAgICAgICBvdXRnb2luZy5jYW5jZWwoKQorCisgICAgICAgICAgICBpZiBpbmNvbWluZyBpbiBk
b25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9
IGluY29taW5nLnJlc3VsdCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25DbG9z
ZWQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBzdHIpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRfZHVyaW5nX2lucHV0KCI8ICIgKyBtZXNzYWdlKQorICAgICAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZHVyaW5n
X2lucHV0KCI8IChiaW5hcnkpICIgKyBtZXNzYWdlLmhleCgpKQorCisgICAgICAgICAgICBpZiBv
dXRnb2luZyBpbiBkb25lOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBvdXRnb2luZy5yZXN1
bHQoKQorICAgICAgICAgICAgICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kKG1lc3NhZ2UpCisKKyAg
ICAgICAgICAgIGlmIHN0b3AgaW4gZG9uZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAg
ZmluYWxseToKKyAgICAgICAgYXdhaXQgd2Vic29ja2V0LmNsb3NlKCkKKyAgICAgICAgY2xvc2Vf
c3RhdHVzID0gZm9ybWF0X2Nsb3NlKHdlYnNvY2tldC5jbG9zZV9jb2RlLCB3ZWJzb2NrZXQuY2xv
c2VfcmVhc29uKQorCisgICAgICAgIHByaW50X292ZXJfaW5wdXQoZiJDb25uZWN0aW9uIGNsb3Nl
ZDoge2Nsb3NlX3N0YXR1c30uIikKKworICAgICAgICBleGl0X2Zyb21fZXZlbnRfbG9vcF90aHJl
YWQobG9vcCwgc3RvcCkKKworCitkZWYgbWFpbigpIC0+IE5vbmU6CisgICAgIyBJZiB3ZSdyZSBv
biBXaW5kb3dzLCBlbmFibGUgVlQxMDAgdGVybWluYWwgc3VwcG9ydC4KKyAgICBpZiBzeXMucGxh
dGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2luX2VuYWJsZV92
dDEwMCgpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAgICBmIlVuYWJsZSB0byBzZXQgdGVybWlu
YWwgdG8gVlQxMDAgbW9kZS4gVGhpcyBpcyBvbmx5ICIKKyAgICAgICAgICAgICAgICBmInN1cHBv
cnRlZCBzaW5jZSBXaW4xMCBhbm5pdmVyc2FyeSB1cGRhdGUuIEV4cGVjdCAiCisgICAgICAgICAg
ICAgICAgZiJ3ZWlyZCBzeW1ib2xzIG9uIHRoZSB0ZXJtaW5hbC5cbkVycm9yOiB7ZXhjfVxuIgor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisKKyAgICB0cnk6
CisgICAgICAgIGltcG9ydCByZWFkbGluZSAgIyBub3FhCisgICAgZXhjZXB0IEltcG9ydEVycm9y
OiAgIyBXaW5kb3dzIGhhcyBubyBgcmVhZGxpbmVgIG5vcm1hbGx5CisgICAgICAgIHBhc3MKKwor
ICAgICMgUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKyAgICBwYXJzZXIgPSBhcmdwYXJz
ZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgcHJvZz0icHl0aG9uIC1tIHdlYnNvY2tldHMiLAor
ICAgICAgICBkZXNjcmlwdGlvbj0iSW50ZXJhY3RpdmUgV2ViU29ja2V0IGNsaWVudC4iLAorICAg
ICAgICBhZGRfaGVscD1GYWxzZSwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgidXJp
IiwgbWV0YXZhcj0iPHVyaT4iKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAg
ICAjIENyZWF0ZSBhbiBldmVudCBsb29wIHRoYXQgd2lsbCBydW4gaW4gYSBiYWNrZ3JvdW5kIHRo
cmVhZC4KKyAgICBsb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisKKyAgICAjIENyZWF0
ZSBhIHF1ZXVlIG9mIHVzZXIgaW5wdXRzLiBUaGVyZSdzIG5vIG5lZWQgdG8gbGltaXQgaXRzIHNp
emUuCisgICAgaW5wdXRzOiBhc3luY2lvLlF1ZXVlW3N0cl0gPSBhc3luY2lvLlF1ZXVlKGxvb3A9
bG9vcCkKKworICAgICMgQ3JlYXRlIGEgc3RvcCBjb25kaXRpb24gd2hlbiByZWNlaXZpbmcgU0lH
SU5UIG9yIFNJR1RFUk0uCisgICAgc3RvcDogYXN5bmNpby5GdXR1cmVbTm9uZV0gPSBsb29wLmNy
ZWF0ZV9mdXR1cmUoKQorCisgICAgIyBTY2hlZHVsZSB0aGUgdGFzayB0aGF0IHdpbGwgbWFuYWdl
IHRoZSBjb25uZWN0aW9uLgorICAgIGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShydW5fY2xpZW50KGFy
Z3MudXJpLCBsb29wLCBpbnB1dHMsIHN0b3ApLCBsb29wPWxvb3ApCisKKyAgICAjIFN0YXJ0IHRo
ZSBldmVudCBsb29wIGluIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgdGhyZWFkID0gdGhyZWFk
aW5nLlRocmVhZCh0YXJnZXQ9bG9vcC5ydW5fZm9yZXZlcikKKyAgICB0aHJlYWQuc3RhcnQoKQor
CisgICAgIyBSZWFkIGZyb20gc3RkaW4gaW4gdGhlIG1haW4gdGhyZWFkIGluIG9yZGVyIHRvIHJl
Y2VpdmUgc2lnbmFscy4KKyAgICB0cnk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICAjIFNpbmNlIHRoZXJlJ3Mgbm8gc2l6ZSBsaW1pdCwgcHV0X25vd2FpdCBpcyBpZGVudGljYWwg
dG8gcHV0LgorICAgICAgICAgICAgbWVzc2FnZSA9IGlucHV0KCI+ICIpCisgICAgICAgICAgICBs
b29wLmNhbGxfc29vbl90aHJlYWRzYWZlKGlucHV0cy5wdXRfbm93YWl0LCBtZXNzYWdlKQorICAg
IGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIEVPRkVycm9yKTogICMgXkMsIF5ECisgICAgICAg
IGxvb3AuY2FsbF9zb29uX3RocmVhZHNhZmUoc3RvcC5zZXRfcmVzdWx0LCBOb25lKQorCisgICAg
IyBXYWl0IGZvciB0aGUgZXZlbnQgbG9vcCB0byB0ZXJtaW5hdGUuCisgICAgdGhyZWFkLmpvaW4o
KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvYXV0aC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9zcmMvd2Vic29ja2V0cy9hdXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYWUyMDRiOGQ5Yzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L3NyYy93ZWJzb2NrZXRzL2F1dGgucHkKQEAgLTAsMCArMSwxNjAgQEAKKyIiIgorOm1vZDpgd2Vi
c29ja2V0cy5hdXRoYCBwcm92aWRlcyBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGFjY29yZGlu
ZyB0bworOnJmYzpgNzIzNWAgYW5kIDpyZmM6YDc2MTdgLgorCisiIiIKKworCitpbXBvcnQgZnVu
Y3Rvb2xzCitpbXBvcnQgaHR0cAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQXdhaXRhYmxlLCBD
YWxsYWJsZSwgSXRlcmFibGUsIE9wdGlvbmFsLCBUdXBsZSwgVHlwZSwgVW5pb24KKworZnJvbSAu
ZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEhlYWRlcgorZnJvbSAuaGVhZGVycyBpbXBvcnQgYnVp
bGRfd3d3X2F1dGhlbnRpY2F0ZV9iYXNpYywgcGFyc2VfYXV0aG9yaXphdGlvbl9iYXNpYworZnJv
bSAuaHR0cCBpbXBvcnQgSGVhZGVycworZnJvbSAuc2VydmVyIGltcG9ydCBIVFRQUmVzcG9uc2Us
IFdlYlNvY2tldFNlcnZlclByb3RvY29sCisKKworX19hbGxfXyA9IFsiQmFzaWNBdXRoV2ViU29j
a2V0U2VydmVyUHJvdG9jb2wiLCAiYmFzaWNfYXV0aF9wcm90b2NvbF9mYWN0b3J5Il0KKworQ3Jl
ZGVudGlhbHMgPSBUdXBsZVtzdHIsIHN0cl0KKworCitkZWYgaXNfY3JlZGVudGlhbHModmFsdWU6
IEFueSkgLT4gYm9vbDoKKyAgICB0cnk6CisgICAgICAgIHVzZXJuYW1lLCBwYXNzd29yZCA9IHZh
bHVlCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZSh1c2VybmFtZSwgc3Ry
KSBhbmQgaXNpbnN0YW5jZShwYXNzd29yZCwgc3RyKQorCisKK2NsYXNzIEJhc2ljQXV0aFdlYlNv
Y2tldFNlcnZlclByb3RvY29sKFdlYlNvY2tldFNlcnZlclByb3RvY29sKToKKyAgICAiIiIKKyAg
ICBXZWJTb2NrZXQgc2VydmVyIHByb3RvY29sIHRoYXQgZW5mb3JjZXMgSFRUUCBCYXNpYyBBdXRo
LgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAg
ICphcmdzOiBBbnksCisgICAgICAgIHJlYWxtOiBzdHIsCisgICAgICAgIGNoZWNrX2NyZWRlbnRp
YWxzOiBDYWxsYWJsZVtbc3RyLCBzdHJdLCBBd2FpdGFibGVbYm9vbF1dLAorICAgICAgICAqKmt3
YXJnczogQW55LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5yZWFsbSA9IHJlYWxtCisg
ICAgICAgIHNlbGYuY2hlY2tfY3JlZGVudGlhbHMgPSBjaGVja19jcmVkZW50aWFscworICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGFzeW5jIGRlZiBwcm9j
ZXNzX3JlcXVlc3QoCisgICAgICAgIHNlbGYsIHBhdGg6IHN0ciwgcmVxdWVzdF9oZWFkZXJzOiBI
ZWFkZXJzCisgICAgKSAtPiBPcHRpb25hbFtIVFRQUmVzcG9uc2VdOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ2hlY2sgSFRUUCBCYXNpYyBBdXRoIGFuZCByZXR1cm4gYSBIVFRQIDQwMSBvciA0MDMg
cmVzcG9uc2UgaWYgbmVlZGVkLgorCisgICAgICAgIElmIGF1dGhlbnRpY2F0aW9uIHN1Y2NlZWRz
LCB0aGUgdXNlcm5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlciBpcworICAgICAgICBzdG9y
ZWQgaW4gdGhlIGBgdXNlcm5hbWVgYCBhdHRyaWJ1dGUuCisKKyAgICAgICAgIiIiCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIGF1dGhvcml6YXRpb24gPSByZXF1ZXN0X2hlYWRlcnNbIkF1dGhv
cml6YXRpb24iXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByZXR1cm4g
KAorICAgICAgICAgICAgICAgIGh0dHAuSFRUUFN0YXR1cy5VTkFVVEhPUklaRUQsCisgICAgICAg
ICAgICAgICAgWygiV1dXLUF1dGhlbnRpY2F0ZSIsIGJ1aWxkX3d3d19hdXRoZW50aWNhdGVfYmFz
aWMoc2VsZi5yZWFsbSkpXSwKKyAgICAgICAgICAgICAgICBiIk1pc3NpbmcgY3JlZGVudGlhbHNc
biIsCisgICAgICAgICAgICApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdXNlcm5hbWUs
IHBhc3N3b3JkID0gcGFyc2VfYXV0aG9yaXphdGlvbl9iYXNpYyhhdXRob3JpemF0aW9uKQorICAg
ICAgICBleGNlcHQgSW52YWxpZEhlYWRlcjoKKyAgICAgICAgICAgIHJldHVybiAoCisgICAgICAg
ICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLlVOQVVUSE9SSVpFRCwKKyAgICAgICAgICAgICAgICBb
KCJXV1ctQXV0aGVudGljYXRlIiwgYnVpbGRfd3d3X2F1dGhlbnRpY2F0ZV9iYXNpYyhzZWxmLnJl
YWxtKSldLAorICAgICAgICAgICAgICAgIGIiVW5zdXBwb3J0ZWQgY3JlZGVudGlhbHNcbiIsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IGF3YWl0IHNlbGYuY2hlY2tfY3JlZGVudGlh
bHModXNlcm5hbWUsIHBhc3N3b3JkKToKKyAgICAgICAgICAgIHJldHVybiAoCisgICAgICAgICAg
ICAgICAgaHR0cC5IVFRQU3RhdHVzLlVOQVVUSE9SSVpFRCwKKyAgICAgICAgICAgICAgICBbKCJX
V1ctQXV0aGVudGljYXRlIiwgYnVpbGRfd3d3X2F1dGhlbnRpY2F0ZV9iYXNpYyhzZWxmLnJlYWxt
KSldLAorICAgICAgICAgICAgICAgIGIiSW52YWxpZCBjcmVkZW50aWFsc1xuIiwKKyAgICAgICAg
ICAgICkKKworICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAgICByZXR1
cm4gYXdhaXQgc3VwZXIoKS5wcm9jZXNzX3JlcXVlc3QocGF0aCwgcmVxdWVzdF9oZWFkZXJzKQor
CisKK2RlZiBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnkoCisgICAgcmVhbG06IHN0ciwKKyAg
ICBjcmVkZW50aWFsczogT3B0aW9uYWxbVW5pb25bQ3JlZGVudGlhbHMsIEl0ZXJhYmxlW0NyZWRl
bnRpYWxzXV1dID0gTm9uZSwKKyAgICBjaGVja19jcmVkZW50aWFsczogT3B0aW9uYWxbQ2FsbGFi
bGVbW3N0ciwgc3RyXSwgQXdhaXRhYmxlW2Jvb2xdXV0gPSBOb25lLAorICAgIGNyZWF0ZV9wcm90
b2NvbDogVHlwZVsKKyAgICAgICAgQmFzaWNBdXRoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wKKyAg
ICBdID0gQmFzaWNBdXRoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wsCispIC0+IENhbGxhYmxlW1tB
bnldLCBCYXNpY0F1dGhXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbF06CisgICAgIiIiCisgICAgUHJv
dG9jb2wgZmFjdG9yeSB0aGF0IGVuZm9yY2VzIEhUVFAgQmFzaWMgQXV0aC4KKworICAgIGBgYmFz
aWNfYXV0aF9wcm90b2NvbF9mYWN0b3J5YGAgaXMgZGVzaWduZWQgdG8gaW50ZWdyYXRlIHdpdGgK
KyAgICA6ZnVuYzpgfndlYnNvY2tldHMuc2VydmVyLnNlcnZlYCBsaWtlIHRoaXM6OgorCisgICAg
ICAgIHdlYnNvY2tldHMuc2VydmUoCisgICAgICAgICAgICAuLi4sCisgICAgICAgICAgICBjcmVh
dGVfcHJvdG9jb2w9d2Vic29ja2V0cy5iYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnkoCisgICAg
ICAgICAgICAgICAgcmVhbG09Im15IGRldiBzZXJ2ZXIiLAorICAgICAgICAgICAgICAgIGNyZWRl
bnRpYWxzPSgiaGVsbG8iLCAiaWxvdmV5b3UiKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQor
CisgICAgYGByZWFsbWBgIGluZGljYXRlcyB0aGUgc2NvcGUgb2YgcHJvdGVjdGlvbi4gSXQgc2hv
dWxkIGNvbnRhaW4gb25seSBBU0NJSQorICAgIGNoYXJhY3RlcnMgYmVjYXVzZSB0aGUgZW5jb2Rp
bmcgb2Ygbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaXMgdW5kZWZpbmVkLgorICAgIFJlZmVyIHRvIHNl
Y3Rpb24gMi4yIG9mIDpyZmM6YDcyMzVgIGZvciBkZXRhaWxzLgorCisgICAgYGBjcmVkZW50aWFs
c2BgIGRlZmluZXMgaGFyZCBjb2RlZCBhdXRob3JpemVkIGNyZWRlbnRpYWxzLiBJdCBjYW4gYmUg
YQorICAgIGBgKHVzZXJuYW1lLCBwYXNzd29yZClgYCBwYWlyIG9yIGEgbGlzdCBvZiBzdWNoIHBh
aXJzLgorCisgICAgYGBjaGVja19jcmVkZW50aWFsc2BgIGRlZmluZXMgYSBjb3JvdXRpbmUgdGhh
dCBjaGVja3Mgd2hldGhlciBjcmVkZW50aWFscworICAgIGFyZSBhdXRob3JpemVkLiBUaGlzIGNv
cm91dGluZSByZWNlaXZlcyBgYHVzZXJuYW1lYGAgYW5kIGBgcGFzc3dvcmRgYAorICAgIGFyZ3Vt
ZW50cyBhbmQgcmV0dXJucyBhIDpjbGFzczpgYm9vbGAuCisKKyAgICBPbmUgb2YgYGBjcmVkZW50
aWFsc2BgIG9yIGBgY2hlY2tfY3JlZGVudGlhbHNgYCBtdXN0IGJlIHByb3ZpZGVkIGJ1dCBub3QK
KyAgICBib3RoLgorCisgICAgQnkgZGVmYXVsdCwgYGBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3Rv
cnlgYCBjcmVhdGVzIGEgZmFjdG9yeSBmb3IgYnVpbGRpbmcKKyAgICA6Y2xhc3M6YEJhc2ljQXV0
aFdlYlNvY2tldFNlcnZlclByb3RvY29sYCBpbnN0YW5jZXMuIFlvdSBjYW4gb3ZlcnJpZGUgdGhp
cworICAgIHdpdGggdGhlIGBgY3JlYXRlX3Byb3RvY29sYGAgcGFyYW1ldGVyLgorCisgICAgOnBh
cmFtIHJlYWxtOiBzY29wZSBvZiBwcm90ZWN0aW9uCisgICAgOnBhcmFtIGNyZWRlbnRpYWxzOiBo
YXJkIGNvZGVkIGNyZWRlbnRpYWxzCisgICAgOnBhcmFtIGNoZWNrX2NyZWRlbnRpYWxzOiBjb3Jv
dXRpbmUgdGhhdCB2ZXJpZmllcyBjcmVkZW50aWFscworICAgIDpyYWlzZXMgVHlwZUVycm9yOiBp
ZiB0aGUgY3JlZGVudGlhbHMgYXJndW1lbnQgaGFzIHRoZSB3cm9uZyB0eXBlCisKKyAgICAiIiIK
KyAgICBpZiAoY3JlZGVudGlhbHMgaXMgTm9uZSkgPT0gKGNoZWNrX2NyZWRlbnRpYWxzIGlzIE5v
bmUpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoInByb3ZpZGUgZWl0aGVyIGNyZWRlbnRpYWxz
IG9yIGNoZWNrX2NyZWRlbnRpYWxzIikKKworICAgIGlmIGNyZWRlbnRpYWxzIGlzIG5vdCBOb25l
OgorICAgICAgICBpZiBpc19jcmVkZW50aWFscyhjcmVkZW50aWFscyk6CisKKyAgICAgICAgICAg
IGFzeW5jIGRlZiBjaGVja19jcmVkZW50aWFscyh1c2VybmFtZTogc3RyLCBwYXNzd29yZDogc3Ry
KSAtPiBib29sOgorICAgICAgICAgICAgICAgIHJldHVybiAodXNlcm5hbWUsIHBhc3N3b3JkKSA9
PSBjcmVkZW50aWFscworCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjcmVkZW50aWFscywgSXRl
cmFibGUpOgorICAgICAgICAgICAgY3JlZGVudGlhbHNfbGlzdCA9IGxpc3QoY3JlZGVudGlhbHMp
CisgICAgICAgICAgICBpZiBhbGwoaXNfY3JlZGVudGlhbHMoaXRlbSkgZm9yIGl0ZW0gaW4gY3Jl
ZGVudGlhbHNfbGlzdCk6CisgICAgICAgICAgICAgICAgY3JlZGVudGlhbHNfZGljdCA9IGRpY3Qo
Y3JlZGVudGlhbHNfbGlzdCkKKworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBjaGVja19jcmVk
ZW50aWFscyh1c2VybmFtZTogc3RyLCBwYXNzd29yZDogc3RyKSAtPiBib29sOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY3JlZGVudGlhbHNfZGljdC5nZXQodXNlcm5hbWUpID09IHBhc3N3
b3JkCisKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9y
KGYiaW52YWxpZCBjcmVkZW50aWFscyBhcmd1bWVudDoge2NyZWRlbnRpYWxzfSIpCisKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmImludmFsaWQgY3JlZGVudGlh
bHMgYXJndW1lbnQ6IHtjcmVkZW50aWFsc30iKQorCisgICAgcmV0dXJuIGZ1bmN0b29scy5wYXJ0
aWFsKAorICAgICAgICBjcmVhdGVfcHJvdG9jb2wsIHJlYWxtPXJlYWxtLCBjaGVja19jcmVkZW50
aWFscz1jaGVja19jcmVkZW50aWFscworICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0
cy9zcmMvd2Vic29ja2V0cy9jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tl
dHMvY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWI1
OGY5ZjQ4NDIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2Nr
ZXRzL2NsaWVudC5weQpAQCAtMCwwICsxLDU4NCBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLmNs
aWVudGAgZGVmaW5lcyB0aGUgV2ViU29ja2V0IGNsaWVudCBBUElzLgorCisiIiIKKworaW1wb3J0
IGFzeW5jaW8KK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gdHlwZXMgaW1wb3J0IFRyYWNlYmFja1R5
cGUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIEdlbmVyYXRvciwgTGlzdCwgT3B0aW9uYWwsIFNl
cXVlbmNlLCBUdXBsZSwgVHlwZSwgY2FzdAorCitmcm9tIC5leGNlcHRpb25zIGltcG9ydCAoCisg
ICAgSW52YWxpZEhhbmRzaGFrZSwKKyAgICBJbnZhbGlkSGVhZGVyLAorICAgIEludmFsaWRNZXNz
YWdlLAorICAgIEludmFsaWRTdGF0dXNDb2RlLAorICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAg
UmVkaXJlY3RIYW5kc2hha2UsCisgICAgU2VjdXJpdHlFcnJvciwKKykKK2Zyb20gLmV4dGVuc2lv
bnMuYmFzZSBpbXBvcnQgQ2xpZW50RXh0ZW5zaW9uRmFjdG9yeSwgRXh0ZW5zaW9uCitmcm9tIC5l
eHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0ZSBpbXBvcnQgQ2xpZW50UGVyTWVzc2FnZURlZmxh
dGVGYWN0b3J5Citmcm9tIC5oYW5kc2hha2UgaW1wb3J0IGJ1aWxkX3JlcXVlc3QsIGNoZWNrX3Jl
c3BvbnNlCitmcm9tIC5oZWFkZXJzIGltcG9ydCAoCisgICAgYnVpbGRfYXV0aG9yaXphdGlvbl9i
YXNpYywKKyAgICBidWlsZF9leHRlbnNpb24sCisgICAgYnVpbGRfc3VicHJvdG9jb2wsCisgICAg
cGFyc2VfZXh0ZW5zaW9uLAorICAgIHBhcnNlX3N1YnByb3RvY29sLAorKQorZnJvbSAuaHR0cCBp
bXBvcnQgVVNFUl9BR0VOVCwgSGVhZGVycywgSGVhZGVyc0xpa2UsIHJlYWRfcmVzcG9uc2UKK2Zy
b20gLnByb3RvY29sIGltcG9ydCBXZWJTb2NrZXRDb21tb25Qcm90b2NvbAorZnJvbSAudHlwaW5n
IGltcG9ydCBFeHRlbnNpb25IZWFkZXIsIE9yaWdpbiwgU3VicHJvdG9jb2wKK2Zyb20gLnVyaSBp
bXBvcnQgV2ViU29ja2V0VVJJLCBwYXJzZV91cmkKKworCitfX2FsbF9fID0gWyJjb25uZWN0Iiwg
InVuaXhfY29ubmVjdCIsICJXZWJTb2NrZXRDbGllbnRQcm90b2NvbCJdCisKK2xvZ2dlciA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFdlYlNvY2tldENsaWVudFByb3Rv
Y29sKFdlYlNvY2tldENvbW1vblByb3RvY29sKToKKyAgICAiIiIKKyAgICA6Y2xhc3M6YH5hc3lu
Y2lvLlByb3RvY29sYCBzdWJjbGFzcyBpbXBsZW1lbnRpbmcgYSBXZWJTb2NrZXQgY2xpZW50Lgor
CisgICAgVGhpcyBjbGFzcyBpbmhlcml0cyBtb3N0IG9mIGl0cyBtZXRob2RzIGZyb20KKyAgICA6
Y2xhc3M6YH53ZWJzb2NrZXRzLnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sYC4KKwor
ICAgICIiIgorCisgICAgaXNfY2xpZW50ID0gVHJ1ZQorICAgIHNpZGUgPSAiY2xpZW50IgorCisg
ICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICAqLAorICAgICAgICBvcmln
aW46IE9wdGlvbmFsW09yaWdpbl0gPSBOb25lLAorICAgICAgICBleHRlbnNpb25zOiBPcHRpb25h
bFtTZXF1ZW5jZVtDbGllbnRFeHRlbnNpb25GYWN0b3J5XV0gPSBOb25lLAorICAgICAgICBzdWJw
cm90b2NvbHM6IE9wdGlvbmFsW1NlcXVlbmNlW1N1YnByb3RvY29sXV0gPSBOb25lLAorICAgICAg
ICBleHRyYV9oZWFkZXJzOiBPcHRpb25hbFtIZWFkZXJzTGlrZV0gPSBOb25lLAorICAgICAgICAq
Kmt3YXJnczogQW55LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5vcmlnaW4gPSBvcmln
aW4KKyAgICAgICAgc2VsZi5hdmFpbGFibGVfZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMKKyAgICAg
ICAgc2VsZi5hdmFpbGFibGVfc3VicHJvdG9jb2xzID0gc3VicHJvdG9jb2xzCisgICAgICAgIHNl
bGYuZXh0cmFfaGVhZGVycyA9IGV4dHJhX2hlYWRlcnMKKyAgICAgICAgc3VwZXIoKS5fX2luaXRf
XygqKmt3YXJncykKKworICAgIGRlZiB3cml0ZV9odHRwX3JlcXVlc3Qoc2VsZiwgcGF0aDogc3Ry
LCBoZWFkZXJzOiBIZWFkZXJzKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgV3JpdGUg
cmVxdWVzdCBsaW5lIGFuZCBoZWFkZXJzIHRvIHRoZSBIVFRQIHJlcXVlc3QuCisKKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgc2VsZi5yZXF1ZXN0X2hlYWRl
cnMgPSBoZWFkZXJzCisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyA+IEdFVCAlcyBIVFRQLzEu
MSIsIHNlbGYuc2lkZSwgcGF0aCkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyA+ICVyIiwgc2Vs
Zi5zaWRlLCBoZWFkZXJzKQorCisgICAgICAgICMgU2luY2UgdGhlIHBhdGggYW5kIGhlYWRlcnMg
b25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMsCisgICAgICAgICMgd2UgY2FuIGtlZXAgdGhp
cyBzaW1wbGUuCisgICAgICAgIHJlcXVlc3QgPSBmIkdFVCB7cGF0aH0gSFRUUC8xLjFcclxuIgor
ICAgICAgICByZXF1ZXN0ICs9IHN0cihoZWFkZXJzKQorCisgICAgICAgIHNlbGYudHJhbnNwb3J0
LndyaXRlKHJlcXVlc3QuZW5jb2RlKCkpCisKKyAgICBhc3luYyBkZWYgcmVhZF9odHRwX3Jlc3Bv
bnNlKHNlbGYpIC0+IFR1cGxlW2ludCwgSGVhZGVyc106CisgICAgICAgICIiIgorICAgICAgICBS
ZWFkIHN0YXR1cyBsaW5lIGFuZCBoZWFkZXJzIGZyb20gdGhlIEhUVFAgcmVzcG9uc2UuCisKKyAg
ICAgICAgSWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEgYm9keSwgaXQgbWF5IGJlIHJlYWQgZnJv
bSBgYHNlbGYucmVhZGVyYGAKKyAgICAgICAgYWZ0ZXIgdGhpcyBjb3JvdXRpbmUgcmV0dXJucy4K
KworICAgICAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZE1lc3NhZ2U6
IGlmIHRoZSBIVFRQIG1lc3NhZ2UgaXMKKyAgICAgICAgICAgIG1hbGZvcm1lZCBvciBpc24ndCBh
biBIVFRQLzEuMSBHRVQgcmVzcG9uc2UKKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgc3RhdHVzX2NvZGUsIHJlYXNvbiwgaGVhZGVycyA9IGF3YWl0IHJlYWRfcmVzcG9u
c2Uoc2VsZi5yZWFkZXIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgICAg
ICAgICAgcmFpc2UgSW52YWxpZE1lc3NhZ2UoImRpZCBub3QgcmVjZWl2ZSBhIHZhbGlkIEhUVFAg
cmVzcG9uc2UiKSBmcm9tIGV4YworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgPCBIVFRQLzEu
MSAlZCAlcyIsIHNlbGYuc2lkZSwgc3RhdHVzX2NvZGUsIHJlYXNvbikKKyAgICAgICAgbG9nZ2Vy
LmRlYnVnKCIlcyA8ICVyIiwgc2VsZi5zaWRlLCBoZWFkZXJzKQorCisgICAgICAgIHNlbGYucmVz
cG9uc2VfaGVhZGVycyA9IGhlYWRlcnMKKworICAgICAgICByZXR1cm4gc3RhdHVzX2NvZGUsIHNl
bGYucmVzcG9uc2VfaGVhZGVycworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwcm9jZXNz
X2V4dGVuc2lvbnMoCisgICAgICAgIGhlYWRlcnM6IEhlYWRlcnMsCisgICAgICAgIGF2YWlsYWJs
ZV9leHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVtDbGllbnRFeHRlbnNpb25GYWN0b3J5XV0s
CisgICAgKSAtPiBMaXN0W0V4dGVuc2lvbl06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUg
dGhlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBIVFRQIHJlc3BvbnNlIGhlYWRlci4KKworICAg
ICAgICBDaGVjayB0aGF0IGVhY2ggZXh0ZW5zaW9uIGlzIHN1cHBvcnRlZCwgYXMgd2VsbCBhcyBp
dHMgcGFyYW1ldGVycy4KKworICAgICAgICBSZXR1cm4gdGhlIGxpc3Qgb2YgYWNjZXB0ZWQgZXh0
ZW5zaW9ucy4KKworICAgICAgICBSYWlzZSA6ZXhjOmB+d2Vic29ja2V0cy5leGNlcHRpb25zLklu
dmFsaWRIYW5kc2hha2VgIHRvIGFib3J0IHRoZQorICAgICAgICBjb25uZWN0aW9uLgorCisgICAg
ICAgIDpyZmM6YDY0NTVgIGxlYXZlcyB0aGUgcnVsZXMgdXAgdG8gdGhlIHNwZWNpZmljYXRpb24g
b2YgZWFjaAorICAgICAgICA6ZXh0ZW5zaW9uLgorCisgICAgICAgIFRvIHByb3ZpZGUgdGhpcyBs
ZXZlbCBvZiBmbGV4aWJpbGl0eSwgZm9yIGVhY2ggZXh0ZW5zaW9uIGFjY2VwdGVkIGJ5CisgICAg
ICAgIHRoZSBzZXJ2ZXIsIHdlIGNoZWNrIGZvciBhIG1hdGNoIHdpdGggZWFjaCBleHRlbnNpb24g
YXZhaWxhYmxlIGluIHRoZQorICAgICAgICBjbGllbnQgY29uZmlndXJhdGlvbi4gSWYgbm8gbWF0
Y2ggaXMgZm91bmQsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgICAgICAgSWYgc2V2ZXJh
bCB2YXJpYW50cyBvZiB0aGUgc2FtZSBleHRlbnNpb24gYXJlIGFjY2VwdGVkIGJ5IHRoZSBzZXJ2
ZXIsCisgICAgICAgIGl0IG1heSBiZSBjb25maWd1cmVkIHNldmVyZWwgdGltZXMsIHdoaWNoIHdv
bid0IG1ha2Ugc2Vuc2UgaW4gZ2VuZXJhbC4KKyAgICAgICAgRXh0ZW5zaW9ucyBtdXN0IGltcGxl
bWVudCB0aGVpciBvd24gcmVxdWlyZW1lbnRzLiBGb3IgdGhpcyBwdXJwb3NlLAorICAgICAgICB0
aGUgbGlzdCBvZiBwcmV2aW91c2x5IGFjY2VwdGVkIGV4dGVuc2lvbnMgaXMgcHJvdmlkZWQuCisK
KyAgICAgICAgT3RoZXIgcmVxdWlyZW1lbnRzLCBmb3IgZXhhbXBsZSByZWxhdGVkIHRvIG1hbmRh
dG9yeSBleHRlbnNpb25zIG9yIHRoZQorICAgICAgICBvcmRlciBvZiBleHRlbnNpb25zLCBtYXkg
YmUgaW1wbGVtZW50ZWQgYnkgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZC4KKworICAgICAgICAiIiIK
KyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9uczogTGlzdFtFeHRlbnNpb25dID0gW10KKworICAg
ICAgICBoZWFkZXJfdmFsdWVzID0gaGVhZGVycy5nZXRfYWxsKCJTZWMtV2ViU29ja2V0LUV4dGVu
c2lvbnMiKQorCisgICAgICAgIGlmIGhlYWRlcl92YWx1ZXM6CisKKyAgICAgICAgICAgIGlmIGF2
YWlsYWJsZV9leHRlbnNpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxp
ZEhhbmRzaGFrZSgibm8gZXh0ZW5zaW9ucyBzdXBwb3J0ZWQiKQorCisgICAgICAgICAgICBwYXJz
ZWRfaGVhZGVyX3ZhbHVlczogTGlzdFtFeHRlbnNpb25IZWFkZXJdID0gc3VtKAorICAgICAgICAg
ICAgICAgIFtwYXJzZV9leHRlbnNpb24oaGVhZGVyX3ZhbHVlKSBmb3IgaGVhZGVyX3ZhbHVlIGlu
IGhlYWRlcl92YWx1ZXNdLCBbXQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBmb3IgbmFt
ZSwgcmVzcG9uc2VfcGFyYW1zIGluIHBhcnNlZF9oZWFkZXJfdmFsdWVzOgorCisgICAgICAgICAg
ICAgICAgZm9yIGV4dGVuc2lvbl9mYWN0b3J5IGluIGF2YWlsYWJsZV9leHRlbnNpb25zOgorCisg
ICAgICAgICAgICAgICAgICAgICMgU2tpcCBub24tbWF0Y2hpbmcgZXh0ZW5zaW9ucyBiYXNlZCBv
biB0aGVpciBuYW1lLgorICAgICAgICAgICAgICAgICAgICBpZiBleHRlbnNpb25fZmFjdG9yeS5u
YW1lICE9IG5hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
ICAgICAgICAgICAgICMgU2tpcCBub24tbWF0Y2hpbmcgZXh0ZW5zaW9ucyBiYXNlZCBvbiB0aGVp
ciBwYXJhbXMuCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbl9mYWN0b3J5LnByb2Nlc3NfcmVzcG9uc2VfcGFyYW1z
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX3BhcmFtcywgYWNjZXB0ZWRf
ZXh0ZW5zaW9ucworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg
ICBleGNlcHQgTmVnb3RpYXRpb25FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQgbWF0Y2hpbmcgZXh0ZW5zaW9uIHRvIHRo
ZSBmaW5hbCBsaXN0LgorICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFw
cGVuZChleHRlbnNpb24pCisKKyAgICAgICAgICAgICAgICAgICAgIyBCcmVhayBvdXQgb2YgdGhl
IGxvb3Agb25jZSB3ZSBoYXZlIGEgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisK
KyAgICAgICAgICAgICAgICAjIElmIHdlIGRpZG4ndCBicmVhayBmcm9tIHRoZSBsb29wLCBubyBl
eHRlbnNpb24gaW4gb3VyIGxpc3QKKyAgICAgICAgICAgICAgICAjIG1hdGNoZWQgd2hhdCB0aGUg
c2VydmVyIHNlbnQuIEZhaWwgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmVnb3RpYXRpb25FcnJvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGYiVW5zdXBwb3J0ZWQgZXh0ZW5zaW9uOiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICBmIm5hbWUgPSB7bmFtZX0sIHBhcmFtcyA9IHtyZXNwb25zZV9wYXJhbXN9IgorICAg
ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFjY2VwdGVkX2V4dGVuc2lvbnMK
KworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcHJvY2Vzc19zdWJwcm90b2NvbCgKKyAgICAg
ICAgaGVhZGVyczogSGVhZGVycywgYXZhaWxhYmxlX3N1YnByb3RvY29sczogT3B0aW9uYWxbU2Vx
dWVuY2VbU3VicHJvdG9jb2xdXQorICAgICkgLT4gT3B0aW9uYWxbU3VicHJvdG9jb2xdOgorICAg
ICAgICAiIiIKKyAgICAgICAgSGFuZGxlIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIEhUVFAg
cmVzcG9uc2UgaGVhZGVyLgorCisgICAgICAgIENoZWNrIHRoYXQgaXQgY29udGFpbnMgZXhhY3Rs
eSBvbmUgc3VwcG9ydGVkIHN1YnByb3RvY29sLgorCisgICAgICAgIFJldHVybiB0aGUgc2VsZWN0
ZWQgc3VicHJvdG9jb2wuCisKKyAgICAgICAgIiIiCisgICAgICAgIHN1YnByb3RvY29sOiBPcHRp
b25hbFtTdWJwcm90b2NvbF0gPSBOb25lCisKKyAgICAgICAgaGVhZGVyX3ZhbHVlcyA9IGhlYWRl
cnMuZ2V0X2FsbCgiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIpCisKKyAgICAgICAgaWYgaGVhZGVy
X3ZhbHVlczoKKworICAgICAgICAgICAgaWYgYXZhaWxhYmxlX3N1YnByb3RvY29scyBpcyBOb25l
OgorICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRIYW5kc2hha2UoIm5vIHN1YnByb3RvY29s
cyBzdXBwb3J0ZWQiKQorCisgICAgICAgICAgICBwYXJzZWRfaGVhZGVyX3ZhbHVlczogU2VxdWVu
Y2VbU3VicHJvdG9jb2xdID0gc3VtKAorICAgICAgICAgICAgICAgIFtwYXJzZV9zdWJwcm90b2Nv
bChoZWFkZXJfdmFsdWUpIGZvciBoZWFkZXJfdmFsdWUgaW4gaGVhZGVyX3ZhbHVlc10sIFtdCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmIGxlbihwYXJzZWRfaGVhZGVyX3ZhbHVlcykg
PiAxOgorICAgICAgICAgICAgICAgIHN1YnByb3RvY29scyA9ICIsICIuam9pbihwYXJzZWRfaGVh
ZGVyX3ZhbHVlcykKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkSGFuZHNoYWtlKGYibXVs
dGlwbGUgc3VicHJvdG9jb2xzOiB7c3VicHJvdG9jb2xzfSIpCisKKyAgICAgICAgICAgIHN1YnBy
b3RvY29sID0gcGFyc2VkX2hlYWRlcl92YWx1ZXNbMF0KKworICAgICAgICAgICAgaWYgc3VicHJv
dG9jb2wgbm90IGluIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM6CisgICAgICAgICAgICAgICAgcmFp
c2UgTmVnb3RpYXRpb25FcnJvcihmInVuc3VwcG9ydGVkIHN1YnByb3RvY29sOiB7c3VicHJvdG9j
b2x9IikKKworICAgICAgICByZXR1cm4gc3VicHJvdG9jb2wKKworICAgIGFzeW5jIGRlZiBoYW5k
c2hha2UoCisgICAgICAgIHNlbGYsCisgICAgICAgIHdzdXJpOiBXZWJTb2NrZXRVUkksCisgICAg
ICAgIG9yaWdpbjogT3B0aW9uYWxbT3JpZ2luXSA9IE5vbmUsCisgICAgICAgIGF2YWlsYWJsZV9l
eHRlbnNpb25zOiBPcHRpb25hbFtTZXF1ZW5jZVtDbGllbnRFeHRlbnNpb25GYWN0b3J5XV0gPSBO
b25lLAorICAgICAgICBhdmFpbGFibGVfc3VicHJvdG9jb2xzOiBPcHRpb25hbFtTZXF1ZW5jZVtT
dWJwcm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgZXh0cmFfaGVhZGVyczogT3B0aW9uYWxbSGVh
ZGVyc0xpa2VdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQ
ZXJmb3JtIHRoZSBjbGllbnQgc2lkZSBvZiB0aGUgb3BlbmluZyBoYW5kc2hha2UuCisKKyAgICAg
ICAgOnBhcmFtIG9yaWdpbjogc2V0cyB0aGUgT3JpZ2luIEhUVFAgaGVhZGVyCisgICAgICAgIDpw
YXJhbSBhdmFpbGFibGVfZXh0ZW5zaW9uczogbGlzdCBvZiBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBp
biB0aGUgb3JkZXIKKyAgICAgICAgICAgIGluIHdoaWNoIHRoZXkgc2hvdWxkIGJlIHVzZWQKKyAg
ICAgICAgOnBhcmFtIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM6IGxpc3Qgb2Ygc3VwcG9ydGVkIHN1
YnByb3RvY29scyBpbiBvcmRlcgorICAgICAgICAgICAgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNl
CisgICAgICAgIDpwYXJhbSBleHRyYV9oZWFkZXJzOiBzZXRzIGFkZGl0aW9uYWwgSFRUUCByZXF1
ZXN0IGhlYWRlcnM7IGl0IG11c3QgYmUKKyAgICAgICAgICAgIGEgOmNsYXNzOmB+d2Vic29ja2V0
cy5odHRwLkhlYWRlcnNgIGluc3RhbmNlLCBhCisgICAgICAgICAgICA6Y2xhc3M6YH5jb2xsZWN0
aW9ucy5hYmMuTWFwcGluZ2AsIG9yIGFuIGl0ZXJhYmxlIG9mIGBgKG5hbWUsCisgICAgICAgICAg
ICB2YWx1ZSlgYCBwYWlycworICAgICAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMu
SW52YWxpZEhhbmRzaGFrZTogaWYgdGhlIGhhbmRzaGFrZQorICAgICAgICAgICAgZmFpbHMKKwor
ICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdF9oZWFkZXJzID0gSGVhZGVycygpCisKKyAgICAg
ICAgaWYgd3N1cmkucG9ydCA9PSAoNDQzIGlmIHdzdXJpLnNlY3VyZSBlbHNlIDgwKTogICMgcHJh
Z21hOiBubyBjb3ZlcgorICAgICAgICAgICAgcmVxdWVzdF9oZWFkZXJzWyJIb3N0Il0gPSB3c3Vy
aS5ob3N0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1ZXN0X2hlYWRlcnNbIkhvc3Qi
XSA9IGYie3dzdXJpLmhvc3R9Ont3c3VyaS5wb3J0fSIKKworICAgICAgICBpZiB3c3VyaS51c2Vy
X2luZm86CisgICAgICAgICAgICByZXF1ZXN0X2hlYWRlcnNbIkF1dGhvcml6YXRpb24iXSA9IGJ1
aWxkX2F1dGhvcml6YXRpb25fYmFzaWMoCisgICAgICAgICAgICAgICAgKndzdXJpLnVzZXJfaW5m
bworICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHJlcXVlc3RfaGVhZGVyc1siT3JpZ2luIl0gPSBvcmlnaW4KKworICAgICAgICBrZXkg
PSBidWlsZF9yZXF1ZXN0KHJlcXVlc3RfaGVhZGVycykKKworICAgICAgICBpZiBhdmFpbGFibGVf
ZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0g
YnVpbGRfZXh0ZW5zaW9uKAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
KGV4dGVuc2lvbl9mYWN0b3J5Lm5hbWUsIGV4dGVuc2lvbl9mYWN0b3J5LmdldF9yZXF1ZXN0X3Bh
cmFtcygpKQorICAgICAgICAgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX2ZhY3RvcnkgaW4gYXZh
aWxhYmxlX2V4dGVuc2lvbnMKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApCisgICAg
ICAgICAgICByZXF1ZXN0X2hlYWRlcnNbIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyJdID0gZXh0
ZW5zaW9uc19oZWFkZXIKKworICAgICAgICBpZiBhdmFpbGFibGVfc3VicHJvdG9jb2xzIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gYnVpbGRfc3VicHJvdG9jb2wo
YXZhaWxhYmxlX3N1YnByb3RvY29scykKKyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVyc1siU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCJdID0gcHJvdG9jb2xfaGVhZGVyCisKKyAgICAgICAgaWYgZXh0
cmFfaGVhZGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXh0cmFf
aGVhZGVycywgSGVhZGVycyk6CisgICAgICAgICAgICAgICAgZXh0cmFfaGVhZGVycyA9IGV4dHJh
X2hlYWRlcnMucmF3X2l0ZW1zKCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShleHRyYV9o
ZWFkZXJzLCBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZyk6CisgICAgICAgICAgICAgICAgZXh0cmFf
aGVhZGVycyA9IGV4dHJhX2hlYWRlcnMuaXRlbXMoKQorICAgICAgICAgICAgZm9yIG5hbWUsIHZh
bHVlIGluIGV4dHJhX2hlYWRlcnM6CisgICAgICAgICAgICAgICAgcmVxdWVzdF9oZWFkZXJzW25h
bWVdID0gdmFsdWUKKworICAgICAgICByZXF1ZXN0X2hlYWRlcnMuc2V0ZGVmYXVsdCgiVXNlci1B
Z2VudCIsIFVTRVJfQUdFTlQpCisKKyAgICAgICAgc2VsZi53cml0ZV9odHRwX3JlcXVlc3Qod3N1
cmkucmVzb3VyY2VfbmFtZSwgcmVxdWVzdF9oZWFkZXJzKQorCisgICAgICAgIHN0YXR1c19jb2Rl
LCByZXNwb25zZV9oZWFkZXJzID0gYXdhaXQgc2VsZi5yZWFkX2h0dHBfcmVzcG9uc2UoKQorICAg
ICAgICBpZiBzdGF0dXNfY29kZSBpbiAoMzAxLCAzMDIsIDMwMywgMzA3LCAzMDgpOgorICAgICAg
ICAgICAgaWYgIkxvY2F0aW9uIiBub3QgaW4gcmVzcG9uc2VfaGVhZGVyczoKKyAgICAgICAgICAg
ICAgICByYWlzZSBJbnZhbGlkSGVhZGVyKCJMb2NhdGlvbiIpCisgICAgICAgICAgICByYWlzZSBS
ZWRpcmVjdEhhbmRzaGFrZShyZXNwb25zZV9oZWFkZXJzWyJMb2NhdGlvbiJdKQorICAgICAgICBl
bGlmIHN0YXR1c19jb2RlICE9IDEwMToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRTdGF0dXND
b2RlKHN0YXR1c19jb2RlKQorCisgICAgICAgIGNoZWNrX3Jlc3BvbnNlKHJlc3BvbnNlX2hlYWRl
cnMsIGtleSkKKworICAgICAgICBzZWxmLmV4dGVuc2lvbnMgPSBzZWxmLnByb2Nlc3NfZXh0ZW5z
aW9ucygKKyAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRlcnMsIGF2YWlsYWJsZV9leHRlbnNpb25z
CisgICAgICAgICkKKworICAgICAgICBzZWxmLnN1YnByb3RvY29sID0gc2VsZi5wcm9jZXNzX3N1
YnByb3RvY29sKAorICAgICAgICAgICAgcmVzcG9uc2VfaGVhZGVycywgYXZhaWxhYmxlX3N1YnBy
b3RvY29scworICAgICAgICApCisKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uX29wZW4oKQorCisK
K2NsYXNzIENvbm5lY3Q6CisgICAgIiIiCisgICAgQ29ubmVjdCB0byB0aGUgV2ViU29ja2V0IHNl
cnZlciBhdCB0aGUgZ2l2ZW4gYGB1cmlgYC4KKworICAgIEF3YWl0aW5nIDpmdW5jOmBjb25uZWN0
YCB5aWVsZHMgYSA6Y2xhc3M6YFdlYlNvY2tldENsaWVudFByb3RvY29sYCB3aGljaAorICAgIGNh
biB0aGVuIGJlIHVzZWQgdG8gc2VuZCBhbmQgcmVjZWl2ZSBtZXNzYWdlcy4KKworICAgIDpmdW5j
OmBjb25uZWN0YCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFu
YWdlci4gSW4KKyAgICB0aGF0IGNhc2UsIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCB3aGVuIGV4
aXRpbmcgdGhlIGNvbnRleHQuCisKKyAgICA6ZnVuYzpgY29ubmVjdGAgaXMgYSB3cmFwcGVyIGFy
b3VuZCB0aGUgZXZlbnQgbG9vcCdzCisgICAgOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX2Nv
bm5lY3Rpb25gIG1ldGhvZC4gVW5rbm93biBrZXl3b3JkIGFyZ3VtZW50cworICAgIGFyZSBwYXNz
ZWQgdG8gOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX2Nvbm5lY3Rpb25gLgorCisgICAgRm9y
IGV4YW1wbGUsIHlvdSBjYW4gc2V0IHRoZSBgYHNzbGBgIGtleXdvcmQgYXJndW1lbnQgdG8gYQor
ICAgIDpjbGFzczpgfnNzbC5TU0xDb250ZXh0YCB0byBlbmZvcmNlIHNvbWUgVExTIHNldHRpbmdz
LiBXaGVuIGNvbm5lY3RpbmcgdG8KKyAgICBhIGBgd3NzOi8vYGAgVVJJLCBpZiB0aGlzIGFyZ3Vt
ZW50IGlzbid0IHByb3ZpZGVkIGV4cGxpY2l0bHksCisgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVm
YXVsdF9jb250ZXh0YCBpcyBjYWxsZWQgdG8gY3JlYXRlIGEgY29udGV4dC4KKworICAgIFlvdSBj
YW4gY29ubmVjdCB0byBhIGRpZmZlcmVudCBob3N0IGFuZCBwb3J0IGZyb20gdGhvc2UgZm91bmQg
aW4gYGB1cmlgYAorICAgIGJ5IHNldHRpbmcgYGBob3N0YGAgYW5kIGBgcG9ydGBgIGtleXdvcmQg
YXJndW1lbnRzLiBUaGlzIG9ubHkgY2hhbmdlcyB0aGUKKyAgICBkZXN0aW5hdGlvbiBvZiB0aGUg
VENQIGNvbm5lY3Rpb24uIFRoZSBob3N0IG5hbWUgZnJvbSBgYHVyaWBgIGlzIHN0aWxsCisgICAg
dXNlZCBpbiB0aGUgVExTIGhhbmRzaGFrZSBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zIGFuZCBpbiB0
aGUgYGBIb3N0YGAgSFRUUAorICAgIGhlYWRlci4KKworICAgIFRoZSBgYGNyZWF0ZV9wcm90b2Nv
bGBgIHBhcmFtZXRlciBhbGxvd3MgY3VzdG9taXppbmcgdGhlCisgICAgOmNsYXNzOmB+YXN5bmNp
by5Qcm90b2NvbGAgdGhhdCBtYW5hZ2VzIHRoZSBjb25uZWN0aW9uLiBJdCBzaG91bGQgYmUgYQor
ICAgIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0aGUgc2FtZSBhcmd1bWVudHMgYXMKKyAg
ICA6Y2xhc3M6YFdlYlNvY2tldENsaWVudFByb3RvY29sYCBhbmQgcmV0dXJuaW5nIGFuIGluc3Rh
bmNlIG9mCisgICAgOmNsYXNzOmBXZWJTb2NrZXRDbGllbnRQcm90b2NvbGAgb3IgYSBzdWJjbGFz
cy4gSXQgZGVmYXVsdHMgdG8KKyAgICA6Y2xhc3M6YFdlYlNvY2tldENsaWVudFByb3RvY29sYC4K
KworICAgIFRoZSBiZWhhdmlvciBvZiBgYHBpbmdfaW50ZXJ2YWxgYCwgYGBwaW5nX3RpbWVvdXRg
YCwgYGBjbG9zZV90aW1lb3V0YGAsCisgICAgYGBtYXhfc2l6ZWBgLCBgYG1heF9xdWV1ZWBgLCBg
YHJlYWRfbGltaXRgYCwgYW5kIGBgd3JpdGVfbGltaXRgYCBpcworICAgIGRlc2NyaWJlZCBpbiA6
Y2xhc3M6YH53ZWJzb2NrZXRzLnByb3RvY29sLldlYlNvY2tldENvbW1vblByb3RvY29sYC4KKwor
ICAgIDpmdW5jOmBjb25uZWN0YCBhbHNvIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBh
cmd1bWVudHM6CisKKyAgICAqIGBgY29tcHJlc3Npb25gYCBpcyBhIHNob3J0Y3V0IHRvIGNvbmZp
Z3VyZSBjb21wcmVzc2lvbiBleHRlbnNpb25zOworICAgICAgYnkgZGVmYXVsdCBpdCBlbmFibGVz
IHRoZSAicGVybWVzc2FnZS1kZWZsYXRlIiBleHRlbnNpb247IHNldCBpdCB0bworICAgICAgYGBO
b25lYGAgdG8gZGlzYWJsZSBjb21wcmVzc2lvbgorICAgICogYGBvcmlnaW5gYCBzZXRzIHRoZSBP
cmlnaW4gSFRUUCBoZWFkZXIKKyAgICAqIGBgZXh0ZW5zaW9uc2BgIGlzIGEgbGlzdCBvZiBzdXBw
b3J0ZWQgZXh0ZW5zaW9ucyBpbiBvcmRlciBvZgorICAgICAgZGVjcmVhc2luZyBwcmVmZXJlbmNl
CisgICAgKiBgYHN1YnByb3RvY29sc2BgIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgc3VicHJvdG9j
b2xzIGluIG9yZGVyIG9mCisgICAgICBkZWNyZWFzaW5nIHByZWZlcmVuY2UKKyAgICAqIGBgZXh0
cmFfaGVhZGVyc2BgIHNldHMgYWRkaXRpb25hbCBIVFRQIHJlcXVlc3QgaGVhZGVyczsgaXQgY2Fu
IGJlIGEKKyAgICAgIDpjbGFzczpgfndlYnNvY2tldHMuaHR0cC5IZWFkZXJzYCBpbnN0YW5jZSwg
YQorICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLCBvciBhbiBpdGVyYWJs
ZSBvZiBgYChuYW1lLCB2YWx1ZSlgYAorICAgICAgcGFpcnMKKworICAgIDpyYWlzZXMgfndlYnNv
Y2tldHMudXJpLkludmFsaWRVUkk6IGlmIGBgdXJpYGAgaXMgaW52YWxpZAorICAgIDpyYWlzZXMg
fndlYnNvY2tldHMuaGFuZHNoYWtlLkludmFsaWRIYW5kc2hha2U6IGlmIHRoZSBvcGVuaW5nIGhh
bmRzaGFrZQorICAgICAgICBmYWlscworCisgICAgIiIiCisKKyAgICBNQVhfUkVESVJFQ1RTX0FM
TE9XRUQgPSAxMAorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICB1
cmk6IHN0ciwKKyAgICAgICAgKiwKKyAgICAgICAgcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUs
CisgICAgICAgIGNyZWF0ZV9wcm90b2NvbDogT3B0aW9uYWxbVHlwZVtXZWJTb2NrZXRDbGllbnRQ
cm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgcGluZ19pbnRlcnZhbDogZmxvYXQgPSAyMCwKKyAg
ICAgICAgcGluZ190aW1lb3V0OiBmbG9hdCA9IDIwLAorICAgICAgICBjbG9zZV90aW1lb3V0OiBP
cHRpb25hbFtmbG9hdF0gPSBOb25lLAorICAgICAgICBtYXhfc2l6ZTogaW50ID0gMiAqKiAyMCwK
KyAgICAgICAgbWF4X3F1ZXVlOiBpbnQgPSAyICoqIDUsCisgICAgICAgIHJlYWRfbGltaXQ6IGlu
dCA9IDIgKiogMTYsCisgICAgICAgIHdyaXRlX2xpbWl0OiBpbnQgPSAyICoqIDE2LAorICAgICAg
ICBsb29wOiBPcHRpb25hbFthc3luY2lvLkFic3RyYWN0RXZlbnRMb29wXSA9IE5vbmUsCisgICAg
ICAgIGxlZ2FjeV9yZWN2OiBib29sID0gRmFsc2UsCisgICAgICAgIGtsYXNzOiBPcHRpb25hbFtU
eXBlW1dlYlNvY2tldENsaWVudFByb3RvY29sXV0gPSBOb25lLAorICAgICAgICB0aW1lb3V0OiBP
cHRpb25hbFtmbG9hdF0gPSBOb25lLAorICAgICAgICBjb21wcmVzc2lvbjogT3B0aW9uYWxbc3Ry
XSA9ICJkZWZsYXRlIiwKKyAgICAgICAgb3JpZ2luOiBPcHRpb25hbFtPcmlnaW5dID0gTm9uZSwK
KyAgICAgICAgZXh0ZW5zaW9uczogT3B0aW9uYWxbU2VxdWVuY2VbQ2xpZW50RXh0ZW5zaW9uRmFj
dG9yeV1dID0gTm9uZSwKKyAgICAgICAgc3VicHJvdG9jb2xzOiBPcHRpb25hbFtTZXF1ZW5jZVtT
dWJwcm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgZXh0cmFfaGVhZGVyczogT3B0aW9uYWxbSGVh
ZGVyc0xpa2VdID0gTm9uZSwKKyAgICAgICAgKiprd2FyZ3M6IEFueSwKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICMgQmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IGNsb3NlX3RpbWVvdXQgdXNlZCB0
byBiZSBjYWxsZWQgdGltZW91dC4KKyAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgorICAgICAg
ICAgICAgdGltZW91dCA9IDEwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3YXJuaW5ncy53
YXJuKCJyZW5hbWUgdGltZW91dCB0byBjbG9zZV90aW1lb3V0IiwgRGVwcmVjYXRpb25XYXJuaW5n
KQorICAgICAgICAjIElmIGJvdGggYXJlIHNwZWNpZmllZCwgdGltZW91dCBpcyBpZ25vcmVkLgor
ICAgICAgICBpZiBjbG9zZV90aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICBjbG9zZV90aW1l
b3V0ID0gdGltZW91dAorCisgICAgICAgICMgQmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IGNyZWF0
ZV9wcm90b2NvbCB1c2VkIHRvIGJlIGNhbGxlZCBrbGFzcy4KKyAgICAgICAgaWYga2xhc3MgaXMg
Tm9uZToKKyAgICAgICAgICAgIGtsYXNzID0gV2ViU29ja2V0Q2xpZW50UHJvdG9jb2wKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInJlbmFtZSBrbGFzcyB0byBjcmVh
dGVfcHJvdG9jb2wiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICMgSWYgYm90aCBhcmUg
c3BlY2lmaWVkLCBrbGFzcyBpcyBpZ25vcmVkLgorICAgICAgICBpZiBjcmVhdGVfcHJvdG9jb2wg
aXMgTm9uZToKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbCA9IGtsYXNzCisKKyAgICAgICAg
aWYgbG9vcCBpcyBOb25lOgorICAgICAgICAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xv
b3AoKQorCisgICAgICAgIHdzdXJpID0gcGFyc2VfdXJpKHVyaSkKKyAgICAgICAgaWYgd3N1cmku
c2VjdXJlOgorICAgICAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoInNzbCIsIFRydWUpCisgICAg
ICAgIGVsaWYga3dhcmdzLmdldCgic3NsIikgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJjb25uZWN0KCkgcmVjZWl2ZWQgYSBzc2wg
YXJndW1lbnQgZm9yIGEgd3M6Ly8gVVJJLCAiCisgICAgICAgICAgICAgICAgInVzZSBhIHdzczov
LyBVUkkgdG8gZW5hYmxlIFRMUyIKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBjb21wcmVz
c2lvbiA9PSAiZGVmbGF0ZSI6CisgICAgICAgICAgICBpZiBleHRlbnNpb25zIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucyA9IFtdCisgICAgICAgICAgICBpZiBub3QgYW55KAor
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9mYWN0b3J5Lm5hbWUgPT0gQ2xpZW50UGVyTWVzc2Fn
ZURlZmxhdGVGYWN0b3J5Lm5hbWUKKyAgICAgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX2ZhY3Rv
cnkgaW4gZXh0ZW5zaW9ucworICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBleHRlbnNp
b25zID0gbGlzdChleHRlbnNpb25zKSArIFsKKyAgICAgICAgICAgICAgICAgICAgQ2xpZW50UGVy
TWVzc2FnZURlZmxhdGVGYWN0b3J5KGNsaWVudF9tYXhfd2luZG93X2JpdHM9VHJ1ZSkKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgIGVsaWYgY29tcHJlc3Npb24gaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYidW5zdXBwb3J0ZWQgY29tcHJlc3Npb246IHtjb21w
cmVzc2lvbn0iKQorCisgICAgICAgIGZhY3RvcnkgPSBmdW5jdG9vbHMucGFydGlhbCgKKyAgICAg
ICAgICAgIGNyZWF0ZV9wcm90b2NvbCwKKyAgICAgICAgICAgIHBpbmdfaW50ZXJ2YWw9cGluZ19p
bnRlcnZhbCwKKyAgICAgICAgICAgIHBpbmdfdGltZW91dD1waW5nX3RpbWVvdXQsCisgICAgICAg
ICAgICBjbG9zZV90aW1lb3V0PWNsb3NlX3RpbWVvdXQsCisgICAgICAgICAgICBtYXhfc2l6ZT1t
YXhfc2l6ZSwKKyAgICAgICAgICAgIG1heF9xdWV1ZT1tYXhfcXVldWUsCisgICAgICAgICAgICBy
ZWFkX2xpbWl0PXJlYWRfbGltaXQsCisgICAgICAgICAgICB3cml0ZV9saW1pdD13cml0ZV9saW1p
dCwKKyAgICAgICAgICAgIGxvb3A9bG9vcCwKKyAgICAgICAgICAgIGhvc3Q9d3N1cmkuaG9zdCwK
KyAgICAgICAgICAgIHBvcnQ9d3N1cmkucG9ydCwKKyAgICAgICAgICAgIHNlY3VyZT13c3VyaS5z
ZWN1cmUsCisgICAgICAgICAgICBsZWdhY3lfcmVjdj1sZWdhY3lfcmVjdiwKKyAgICAgICAgICAg
IG9yaWdpbj1vcmlnaW4sCisgICAgICAgICAgICBleHRlbnNpb25zPWV4dGVuc2lvbnMsCisgICAg
ICAgICAgICBzdWJwcm90b2NvbHM9c3VicHJvdG9jb2xzLAorICAgICAgICAgICAgZXh0cmFfaGVh
ZGVycz1leHRyYV9oZWFkZXJzLAorICAgICAgICApCisKKyAgICAgICAgaWYgcGF0aCBpcyBOb25l
OgorICAgICAgICAgICAgaG9zdDogT3B0aW9uYWxbc3RyXQorICAgICAgICAgICAgcG9ydDogT3B0
aW9uYWxbaW50XQorICAgICAgICAgICAgaWYga3dhcmdzLmdldCgic29jayIpIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgaG9zdCwgcG9ydCA9IHdzdXJpLmhvc3QsIHdzdXJpLnBvcnQKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiBzb2NrIGlzIGdpdmVuLCBob3N0IGFu
ZCBwb3J0IHNob3VsZG4ndCBiZSBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgaG9zdCwgcG9y
dCA9IE5vbmUsIE5vbmUKKyAgICAgICAgICAgICMgSWYgaG9zdCBhbmQgcG9ydCBhcmUgZ2l2ZW4s
IG92ZXJyaWRlIHZhbHVlcyBmcm9tIHRoZSBVUkkuCisgICAgICAgICAgICBob3N0ID0ga3dhcmdz
LnBvcCgiaG9zdCIsIGhvc3QpCisgICAgICAgICAgICBwb3J0ID0ga3dhcmdzLnBvcCgicG9ydCIs
IHBvcnQpCisgICAgICAgICAgICBjcmVhdGVfY29ubmVjdGlvbiA9IGZ1bmN0b29scy5wYXJ0aWFs
KAorICAgICAgICAgICAgICAgIGxvb3AuY3JlYXRlX2Nvbm5lY3Rpb24sIGZhY3RvcnksIGhvc3Qs
IHBvcnQsICoqa3dhcmdzCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBjcmVhdGVfY29ubmVjdGlvbiA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAg
IGxvb3AuY3JlYXRlX3VuaXhfY29ubmVjdGlvbiwgZmFjdG9yeSwgcGF0aCwgKiprd2FyZ3MKKyAg
ICAgICAgICAgICkKKworICAgICAgICAjIFRoaXMgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCisg
ICAgICAgIHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uID0gY3JlYXRlX2Nvbm5lY3Rpb24KKyAgICAg
ICAgc2VsZi5fd3N1cmkgPSB3c3VyaQorCisgICAgZGVmIGhhbmRsZV9yZWRpcmVjdChzZWxmLCB1
cmk6IHN0cikgLT4gTm9uZToKKyAgICAgICAgIyBVcGRhdGUgdGhlIHN0YXRlIG9mIHRoaXMgaW5z
dGFuY2UgdG8gY29ubmVjdCB0byBhIG5ldyBVUkkuCisgICAgICAgIG9sZF93c3VyaSA9IHNlbGYu
X3dzdXJpCisgICAgICAgIG5ld193c3VyaSA9IHBhcnNlX3VyaSh1cmkpCisKKyAgICAgICAgIyBG
b3JiaWQgVExTIGRvd25ncmFkZS4KKyAgICAgICAgaWYgb2xkX3dzdXJpLnNlY3VyZSBhbmQgbm90
IG5ld193c3VyaS5zZWN1cmU6CisgICAgICAgICAgICByYWlzZSBTZWN1cml0eUVycm9yKCJyZWRp
cmVjdCBmcm9tIFdTUyB0byBXUyIpCisKKyAgICAgICAgc2FtZV9vcmlnaW4gPSAoCisgICAgICAg
ICAgICBvbGRfd3N1cmkuaG9zdCA9PSBuZXdfd3N1cmkuaG9zdCBhbmQgb2xkX3dzdXJpLnBvcnQg
PT0gbmV3X3dzdXJpLnBvcnQKKyAgICAgICAgKQorCisgICAgICAgICMgUmV3cml0ZSB0aGUgaG9z
dCBhbmQgcG9ydCBhcmd1bWVudHMgZm9yIGNyb3NzLW9yaWdpbiByZWRpcmVjdHMuCisgICAgICAg
ICMgVGhpcyBwcmVzZXJ2ZXMgY29ubmVjdGlvbiBvdmVycmlkZXMgd2l0aCB0aGUgaG9zdCBhbmQg
cG9ydAorICAgICAgICAjIGFyZ3VtZW50cyBpZiB0aGUgcmVkaXJlY3QgcG9pbnRzIHRvIHRoZSBz
YW1lIGhvc3QgYW5kIHBvcnQuCisgICAgICAgIGlmIG5vdCBzYW1lX29yaWdpbjoKKyAgICAgICAg
ICAgICMgUmVwbGFjZSB0aGUgaG9zdCBhbmQgcG9ydCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHBy
b3RvY29sIGZhY3RvcnkuCisgICAgICAgICAgICBmYWN0b3J5ID0gc2VsZi5fY3JlYXRlX2Nvbm5l
Y3Rpb24uYXJnc1swXQorICAgICAgICAgICAgZmFjdG9yeSA9IGZ1bmN0b29scy5wYXJ0aWFsKAor
ICAgICAgICAgICAgICAgIGZhY3RvcnkuZnVuYywKKyAgICAgICAgICAgICAgICAqZmFjdG9yeS5h
cmdzLAorICAgICAgICAgICAgICAgICoqZGljdChmYWN0b3J5LmtleXdvcmRzLCBob3N0PW5ld193
c3VyaS5ob3N0LCBwb3J0PW5ld193c3VyaS5wb3J0KSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICMgUmVwbGFjZSB0aGUgaG9zdCBhbmQgcG9ydCBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRl
X2Nvbm5lY3Rpb24uCisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbiA9IGZ1bmN0
b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uLmZ1
bmMsCisgICAgICAgICAgICAgICAgKihmYWN0b3J5LCBuZXdfd3N1cmkuaG9zdCwgbmV3X3dzdXJp
LnBvcnQpLAorICAgICAgICAgICAgICAgICoqc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24ua2V5d29y
ZHMsCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBTZXQgdGhlIG5ldyBXZWJTb2NrZXQgVVJJ
LiBUaGlzIHN1ZmZpY2VzIGZvciBzYW1lLW9yaWdpbiByZWRpcmVjdHMuCisgICAgICAgIHNlbGYu
X3dzdXJpID0gbmV3X3dzdXJpCisKKyAgICAjIGFzeW5jIHdpdGggY29ubmVjdCguLi4pCisKKyAg
ICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKSAtPiBXZWJTb2NrZXRDbGllbnRQcm90b2NvbDoK
KyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYKKworICAgIGFzeW5jIGRlZiBfX2FleGl0X18oCisg
ICAgICAgIHNlbGYsCisgICAgICAgIGV4Y190eXBlOiBPcHRpb25hbFtUeXBlW0Jhc2VFeGNlcHRp
b25dXSwKKyAgICAgICAgZXhjX3ZhbHVlOiBPcHRpb25hbFtCYXNlRXhjZXB0aW9uXSwKKyAgICAg
ICAgdHJhY2ViYWNrOiBPcHRpb25hbFtUcmFjZWJhY2tUeXBlXSwKKyAgICApIC0+IE5vbmU6Cisg
ICAgICAgIGF3YWl0IHNlbGYud3NfY2xpZW50LmNsb3NlKCkKKworICAgICMgYXdhaXQgY29ubmVj
dCguLi4pCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYpIC0+IEdlbmVyYXRvcltBbnksIE5vbmUs
IFdlYlNvY2tldENsaWVudFByb3RvY29sXToKKyAgICAgICAgIyBDcmVhdGUgYSBzdWl0YWJsZSBp
dGVyYXRvciBieSBjYWxsaW5nIF9fYXdhaXRfXyBvbiBhIGNvcm91dGluZS4KKyAgICAgICAgcmV0
dXJuIHNlbGYuX19hd2FpdF9pbXBsX18oKS5fX2F3YWl0X18oKQorCisgICAgYXN5bmMgZGVmIF9f
YXdhaXRfaW1wbF9fKHNlbGYpIC0+IFdlYlNvY2tldENsaWVudFByb3RvY29sOgorICAgICAgICBm
b3IgcmVkaXJlY3RzIGluIHJhbmdlKHNlbGYuTUFYX1JFRElSRUNUU19BTExPV0VEKToKKyAgICAg
ICAgICAgIHRyYW5zcG9ydCwgcHJvdG9jb2wgPSBhd2FpdCBzZWxmLl9jcmVhdGVfY29ubmVjdGlv
bigpCisgICAgICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwZXNoZWQvcHVs
bC8yNzU2CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uVHJhbnNwb3J0LCB0
cmFuc3BvcnQpCisgICAgICAgICAgICBwcm90b2NvbCA9IGNhc3QoV2ViU29ja2V0Q2xpZW50UHJv
dG9jb2wsIHByb3RvY29sKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5oYW5kc2hha2UoCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl93c3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9y
aWdpbj1wcm90b2NvbC5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVf
ZXh0ZW5zaW9ucz1wcm90b2NvbC5hdmFpbGFibGVfZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM9cHJvdG9jb2wuYXZhaWxhYmxlX3N1YnBy
b3RvY29scywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2hlYWRlcnM9cHJvdG9jb2wu
ZXh0cmFfaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHByb3RvY29sLmZhaWxfY29ubmVj
dGlvbigpCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHByb3RvY29sLndhaXRfY2xvc2VkKCkK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLndzX2NsaWVudCA9IHByb3RvY29sCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwcm90b2NvbAorICAgICAgICAgICAgZXhjZXB0IFJlZGlyZWN0SGFuZHNoYWtl
IGFzIGV4YzoKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9yZWRpcmVjdChleGMudXJpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgU2VjdXJpdHlFcnJvcigidG9vIG1hbnkg
cmVkaXJlY3RzIikKKworICAgICMgeWllbGQgZnJvbSBjb25uZWN0KC4uLikKKworICAgIF9faXRl
cl9fID0gX19hd2FpdF9fCisKKworY29ubmVjdCA9IENvbm5lY3QKKworCitkZWYgdW5peF9jb25u
ZWN0KHBhdGg6IHN0ciwgdXJpOiBzdHIgPSAid3M6Ly9sb2NhbGhvc3QvIiwgKiprd2FyZ3M6IEFu
eSkgLT4gQ29ubmVjdDoKKyAgICAiIiIKKyAgICBTaW1pbGFyIHRvIDpmdW5jOmBjb25uZWN0YCwg
YnV0IGZvciBjb25uZWN0aW5nIHRvIGEgVW5peCBzb2NrZXQuCisKKyAgICBUaGlzIGZ1bmN0aW9u
IGNhbGxzIHRoZSBldmVudCBsb29wJ3MKKyAgICA6bWV0aDpgfmFzeW5jaW8ubG9vcC5jcmVhdGVf
dW5peF9jb25uZWN0aW9uYCBtZXRob2QuCisKKyAgICBJdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBV
bml4LgorCisgICAgSXQncyBtYWlubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgc2VydmVycyBsaXN0
ZW5pbmcgb24gVW5peCBzb2NrZXRzLgorCisgICAgOnBhcmFtIHBhdGg6IGZpbGUgc3lzdGVtIHBh
dGggdG8gdGhlIFVuaXggc29ja2V0CisgICAgOnBhcmFtIHVyaTogV2ViU29ja2V0IFVSSQorCisg
ICAgIiIiCisgICAgcmV0dXJuIGNvbm5lY3QodXJpPXVyaSwgcGF0aD1wYXRoLCAqKmt3YXJncykK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9leGNlcHRpb25zLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2V4Y2VwdGlvbnMucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ODczYTE3MTcwM2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvZXhjZXB0aW9ucy5weQpAQCAt
MCwwICsxLDM2NiBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLmV4Y2VwdGlvbnNgIGRlZmluZXMg
dGhlIGZvbGxvd2luZyBleGNlcHRpb24gaGllcmFyY2h5OgorCisqIDpleGM6YFdlYlNvY2tldEV4
Y2VwdGlvbmAKKyAgICAqIDpleGM6YENvbm5lY3Rpb25DbG9zZWRgCisgICAgICAgICogOmV4Yzpg
Q29ubmVjdGlvbkNsb3NlZEVycm9yYAorICAgICAgICAqIDpleGM6YENvbm5lY3Rpb25DbG9zZWRP
S2AKKyAgICAqIDpleGM6YEludmFsaWRIYW5kc2hha2VgCisgICAgICAgICogOmV4YzpgU2VjdXJp
dHlFcnJvcmAKKyAgICAgICAgKiA6ZXhjOmBJbnZhbGlkTWVzc2FnZWAKKyAgICAgICAgKiA6ZXhj
OmBJbnZhbGlkSGVhZGVyYAorICAgICAgICAgICAgKiA6ZXhjOmBJbnZhbGlkSGVhZGVyRm9ybWF0
YAorICAgICAgICAgICAgKiA6ZXhjOmBJbnZhbGlkSGVhZGVyVmFsdWVgCisgICAgICAgICAgICAq
IDpleGM6YEludmFsaWRPcmlnaW5gCisgICAgICAgICAgICAqIDpleGM6YEludmFsaWRVcGdyYWRl
YAorICAgICAgICAqIDpleGM6YEludmFsaWRTdGF0dXNDb2RlYAorICAgICAgICAqIDpleGM6YE5l
Z290aWF0aW9uRXJyb3JgCisgICAgICAgICAgICAqIDpleGM6YER1cGxpY2F0ZVBhcmFtZXRlcmAK
KyAgICAgICAgICAgICogOmV4YzpgSW52YWxpZFBhcmFtZXRlck5hbWVgCisgICAgICAgICAgICAq
IDpleGM6YEludmFsaWRQYXJhbWV0ZXJWYWx1ZWAKKyAgICAgICAgKiA6ZXhjOmBBYm9ydEhhbmRz
aGFrZWAKKyAgICAgICAgKiA6ZXhjOmBSZWRpcmVjdEhhbmRzaGFrZWAKKyAgICAqIDpleGM6YElu
dmFsaWRTdGF0ZWAKKyAgICAqIDpleGM6YEludmFsaWRVUklgCisgICAgKiA6ZXhjOmBQYXlsb2Fk
VG9vQmlnYAorICAgICogOmV4YzpgUHJvdG9jb2xFcnJvcmAKKworIiIiCisKK2ltcG9ydCBodHRw
Citmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworZnJvbSAuaHR0cCBpbXBvcnQgSGVhZGVy
cywgSGVhZGVyc0xpa2UKKworCitfX2FsbF9fID0gWworICAgICJXZWJTb2NrZXRFeGNlcHRpb24i
LAorICAgICJDb25uZWN0aW9uQ2xvc2VkIiwKKyAgICAiQ29ubmVjdGlvbkNsb3NlZEVycm9yIiwK
KyAgICAiQ29ubmVjdGlvbkNsb3NlZE9LIiwKKyAgICAiSW52YWxpZEhhbmRzaGFrZSIsCisgICAg
IlNlY3VyaXR5RXJyb3IiLAorICAgICJJbnZhbGlkTWVzc2FnZSIsCisgICAgIkludmFsaWRIZWFk
ZXIiLAorICAgICJJbnZhbGlkSGVhZGVyRm9ybWF0IiwKKyAgICAiSW52YWxpZEhlYWRlclZhbHVl
IiwKKyAgICAiSW52YWxpZE9yaWdpbiIsCisgICAgIkludmFsaWRVcGdyYWRlIiwKKyAgICAiSW52
YWxpZFN0YXR1c0NvZGUiLAorICAgICJOZWdvdGlhdGlvbkVycm9yIiwKKyAgICAiRHVwbGljYXRl
UGFyYW1ldGVyIiwKKyAgICAiSW52YWxpZFBhcmFtZXRlck5hbWUiLAorICAgICJJbnZhbGlkUGFy
YW1ldGVyVmFsdWUiLAorICAgICJBYm9ydEhhbmRzaGFrZSIsCisgICAgIlJlZGlyZWN0SGFuZHNo
YWtlIiwKKyAgICAiSW52YWxpZFN0YXRlIiwKKyAgICAiSW52YWxpZFVSSSIsCisgICAgIlBheWxv
YWRUb29CaWciLAorICAgICJQcm90b2NvbEVycm9yIiwKKyAgICAiV2ViU29ja2V0UHJvdG9jb2xF
cnJvciIsCitdCisKKworY2xhc3MgV2ViU29ja2V0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAg
IiIiCisgICAgQmFzZSBjbGFzcyBmb3IgYWxsIGV4Y2VwdGlvbnMgZGVmaW5lZCBieSA6bW9kOmB3
ZWJzb2NrZXRzYC4KKworICAgICIiIgorCisKK0NMT1NFX0NPREVTID0geworICAgIDEwMDA6ICJP
SyIsCisgICAgMTAwMTogImdvaW5nIGF3YXkiLAorICAgIDEwMDI6ICJwcm90b2NvbCBlcnJvciIs
CisgICAgMTAwMzogInVuc3VwcG9ydGVkIHR5cGUiLAorICAgICMgMTAwNCBpcyByZXNlcnZlZAor
ICAgIDEwMDU6ICJubyBzdGF0dXMgY29kZSBbaW50ZXJuYWxdIiwKKyAgICAxMDA2OiAiY29ubmVj
dGlvbiBjbG9zZWQgYWJub3JtYWxseSBbaW50ZXJuYWxdIiwKKyAgICAxMDA3OiAiaW52YWxpZCBk
YXRhIiwKKyAgICAxMDA4OiAicG9saWN5IHZpb2xhdGlvbiIsCisgICAgMTAwOTogIm1lc3NhZ2Ug
dG9vIGJpZyIsCisgICAgMTAxMDogImV4dGVuc2lvbiByZXF1aXJlZCIsCisgICAgMTAxMTogInVu
ZXhwZWN0ZWQgZXJyb3IiLAorICAgIDEwMTU6ICJUTFMgZmFpbHVyZSBbaW50ZXJuYWxdIiwKK30K
KworCitkZWYgZm9ybWF0X2Nsb3NlKGNvZGU6IGludCwgcmVhc29uOiBzdHIpIC0+IHN0cjoKKyAg
ICAiIiIKKyAgICBEaXNwbGF5IGEgaHVtYW4tcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2xvc2Ug
Y29kZSBhbmQgcmVhc29uLgorCisgICAgIiIiCisgICAgaWYgMzAwMCA8PSBjb2RlIDwgNDAwMDoK
KyAgICAgICAgZXhwbGFuYXRpb24gPSAicmVnaXN0ZXJlZCIKKyAgICBlbGlmIDQwMDAgPD0gY29k
ZSA8IDUwMDA6CisgICAgICAgIGV4cGxhbmF0aW9uID0gInByaXZhdGUgdXNlIgorICAgIGVsc2U6
CisgICAgICAgIGV4cGxhbmF0aW9uID0gQ0xPU0VfQ09ERVMuZ2V0KGNvZGUsICJ1bmtub3duIikK
KyAgICByZXN1bHQgPSBmImNvZGUgPSB7Y29kZX0gKHtleHBsYW5hdGlvbn0pLCAiCisKKyAgICBp
ZiByZWFzb246CisgICAgICAgIHJlc3VsdCArPSBmInJlYXNvbiA9IHtyZWFzb259IgorICAgIGVs
c2U6CisgICAgICAgIHJlc3VsdCArPSAibm8gcmVhc29uIgorCisgICAgcmV0dXJuIHJlc3VsdAor
CisKK2NsYXNzIENvbm5lY3Rpb25DbG9zZWQoV2ViU29ja2V0RXhjZXB0aW9uKToKKyAgICAiIiIK
KyAgICBSYWlzZWQgd2hlbiB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCBhIGNsb3NlZCBjb25uZWN0
aW9uLgorCisgICAgUHJvdmlkZXMgdGhlIGNvbm5lY3Rpb24gY2xvc2UgY29kZSBhbmQgcmVhc29u
IGluIGl0cyBgYGNvZGVgYCBhbmQKKyAgICBgYHJlYXNvbmBgIGF0dHJpYnV0ZXMgcmVzcGVjdGl2
ZWx5LgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29kZTogaW50LCByZWFz
b246IHN0cikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jb2RlID0gY29kZQorICAgICAgICBzZWxm
LnJlYXNvbiA9IHJlYXNvbgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGZvcm1hdF9jbG9zZShj
b2RlLCByZWFzb24pKQorCisKK2NsYXNzIENvbm5lY3Rpb25DbG9zZWRFcnJvcihDb25uZWN0aW9u
Q2xvc2VkKToKKyAgICAiIiIKKyAgICBMaWtlIDpleGM6YENvbm5lY3Rpb25DbG9zZWRgLCB3aGVu
IHRoZSBjb25uZWN0aW9uIHRlcm1pbmF0ZWQgd2l0aCBhbiBlcnJvci4KKworICAgIFRoaXMgbWVh
bnMgdGhlIGNsb3NlIGNvZGUgaXMgZGlmZmVyZW50IGZyb20gMTAwMCAoT0spIGFuZCAxMDAxIChn
b2luZyBhd2F5KS4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGU6IGlu
dCwgcmVhc29uOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBjb2RlICE9IDEwMDAgYW5k
IGNvZGUgIT0gMTAwMQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGNvZGUsIHJlYXNvbikKKwor
CitjbGFzcyBDb25uZWN0aW9uQ2xvc2VkT0soQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgIiIiCisg
ICAgTGlrZSA6ZXhjOmBDb25uZWN0aW9uQ2xvc2VkYCwgd2hlbiB0aGUgY29ubmVjdGlvbiB0ZXJt
aW5hdGVkIHByb3Blcmx5LgorCisgICAgVGhpcyBtZWFucyB0aGUgY2xvc2UgY29kZSBpcyAxMDAw
IChPSykgb3IgMTAwMSAoZ29pbmcgYXdheSkuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjb2RlOiBpbnQsIHJlYXNvbjogc3RyKSAtPiBOb25lOgorICAgICAgICBhc3NlcnQg
Y29kZSA9PSAxMDAwIG9yIGNvZGUgPT0gMTAwMQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGNv
ZGUsIHJlYXNvbikKKworCitjbGFzcyBJbnZhbGlkSGFuZHNoYWtlKFdlYlNvY2tldEV4Y2VwdGlv
bik6CisgICAgIiIiCisgICAgUmFpc2VkIGR1cmluZyB0aGUgaGFuZHNoYWtlIHdoZW4gdGhlIFdl
YlNvY2tldCBjb25uZWN0aW9uIGZhaWxzLgorCisgICAgIiIiCisKKworY2xhc3MgU2VjdXJpdHlF
cnJvcihJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIGhhbmRz
aGFrZSByZXF1ZXN0IG9yIHJlc3BvbnNlIGJyZWFrcyBhIHNlY3VyaXR5IHJ1bGUuCisKKyAgICBT
ZWN1cml0eSBsaW1pdHMgYXJlIGhhcmQgY29kZWQuCisKKyAgICAiIiIKKworCitjbGFzcyBJbnZh
bGlkTWVzc2FnZShJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBh
IGhhbmRzaGFrZSByZXF1ZXN0IG9yIHJlc3BvbnNlIGlzIG1hbGZvcm1lZC4KKworICAgICIiIgor
CisKK2NsYXNzIEludmFsaWRIZWFkZXIoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgIiIiCisgICAg
UmFpc2VkIHdoZW4gYSBIVFRQIGhlYWRlciBkb2Vzbid0IGhhdmUgYSB2YWxpZCBmb3JtYXQgb3Ig
dmFsdWUuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHZh
bHVlOiBPcHRpb25hbFtzdHJdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5uYW1lID0g
bmFtZQorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgaWYgdmFsdWUgaXMgTm9u
ZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBmIm1pc3Npbmcge25hbWV9IGhlYWRlciIKKyAgICAg
ICAgZWxpZiB2YWx1ZSA9PSAiIjoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBmImVtcHR5IHtuYW1l
fSBoZWFkZXIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtZXNzYWdlID0gZiJpbnZhbGlk
IHtuYW1lfSBoZWFkZXI6IHt2YWx1ZX0iCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2Fn
ZSkKKworCitjbGFzcyBJbnZhbGlkSGVhZGVyRm9ybWF0KEludmFsaWRIZWFkZXIpOgorICAgICIi
IgorICAgIFJhaXNlZCB3aGVuIGEgSFRUUCBoZWFkZXIgY2Fubm90IGJlIHBhcnNlZC4KKworICAg
IFRoZSBmb3JtYXQgb2YgdGhlIGhlYWRlciBkb2Vzbid0IG1hdGNoIHRoZSBncmFtbWFyIGZvciB0
aGF0IGhlYWRlci4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0
ciwgZXJyb3I6IHN0ciwgaGVhZGVyOiBzdHIsIHBvczogaW50KSAtPiBOb25lOgorICAgICAgICBz
ZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIGVycm9yID0gZiJ7ZXJyb3J9IGF0IHtwb3N9IGluIHto
ZWFkZXJ9IgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGVycm9yKQorCisKK2NsYXNz
IEludmFsaWRIZWFkZXJWYWx1ZShJbnZhbGlkSGVhZGVyKToKKyAgICAiIiIKKyAgICBSYWlzZWQg
d2hlbiBhIEhUVFAgaGVhZGVyIGhhcyBhIHdyb25nIHZhbHVlLgorCisgICAgVGhlIGZvcm1hdCBv
ZiB0aGUgaGVhZGVyIGlzIGNvcnJlY3QgYnV0IGEgdmFsdWUgaXNuJ3QgYWNjZXB0YWJsZS4KKwor
ICAgICIiIgorCisKK2NsYXNzIEludmFsaWRPcmlnaW4oSW52YWxpZEhlYWRlcik6CisgICAgIiIi
CisgICAgUmFpc2VkIHdoZW4gdGhlIE9yaWdpbiBoZWFkZXIgaW4gYSByZXF1ZXN0IGlzbid0IGFs
bG93ZWQuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmlnaW46IE9wdGlv
bmFsW3N0cl0pIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oIk9yaWdpbiIsIG9y
aWdpbikKKworCitjbGFzcyBJbnZhbGlkVXBncmFkZShJbnZhbGlkSGVhZGVyKToKKyAgICAiIiIK
KyAgICBSYWlzZWQgd2hlbiB0aGUgVXBncmFkZSBvciBDb25uZWN0aW9uIGhlYWRlciBpc24ndCBj
b3JyZWN0LgorCisgICAgIiIiCisKKworY2xhc3MgSW52YWxpZFN0YXR1c0NvZGUoSW52YWxpZEhh
bmRzaGFrZSk6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gYSBoYW5kc2hha2UgcmVzcG9uc2Ug
c3RhdHVzIGNvZGUgaXMgaW52YWxpZC4KKworICAgIFRoZSBpbnRlZ2VyIHN0YXR1cyBjb2RlIGlz
IGF2YWlsYWJsZSBpbiB0aGUgYGBzdGF0dXNfY29kZWBgIGF0dHJpYnV0ZS4KKworICAgICIiIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXR1c19jb2RlOiBpbnQpIC0+IE5vbmU6CisgICAg
ICAgIHNlbGYuc3RhdHVzX2NvZGUgPSBzdGF0dXNfY29kZQorICAgICAgICBtZXNzYWdlID0gZiJz
ZXJ2ZXIgcmVqZWN0ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb246IEhUVFAge3N0YXR1c19jb2RlfSIK
KyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlKQorCisKK2NsYXNzIE5lZ290aWF0aW9u
RXJyb3IoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gbmVnb3Rp
YXRpbmcgYW4gZXh0ZW5zaW9uIGZhaWxzLgorCisgICAgIiIiCisKKworY2xhc3MgRHVwbGljYXRl
UGFyYW1ldGVyKE5lZ290aWF0aW9uRXJyb3IpOgorICAgICIiIgorICAgIFJhaXNlZCB3aGVuIGEg
cGFyYW1ldGVyIG5hbWUgaXMgcmVwZWF0ZWQgaW4gYW4gZXh0ZW5zaW9uIGhlYWRlci4KKworICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0cikgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBtZXNzYWdlID0gZiJkdXBsaWNhdGUgcGFyYW1l
dGVyOiB7bmFtZX0iCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworCitjbGFz
cyBJbnZhbGlkUGFyYW1ldGVyTmFtZShOZWdvdGlhdGlvbkVycm9yKToKKyAgICAiIiIKKyAgICBS
YWlzZWQgd2hlbiBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGV4dGVuc2lvbiBoZWFkZXIgaXMgaW52
YWxpZC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0cikgLT4g
Tm9uZToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBtZXNzYWdlID0gZiJpbnZh
bGlkIHBhcmFtZXRlciBuYW1lOiB7bmFtZX0iCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVz
c2FnZSkKKworCitjbGFzcyBJbnZhbGlkUGFyYW1ldGVyVmFsdWUoTmVnb3RpYXRpb25FcnJvcik6
CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gYSBwYXJhbWV0ZXIgdmFsdWUgaW4gYW4gZXh0ZW5z
aW9uIGhlYWRlciBpcyBpbnZhbGlkLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZTogc3RyLCB2YWx1ZTogT3B0aW9uYWxbc3RyXSkgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgaWYgdmFs
dWUgaXMgTm9uZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBmIm1pc3NpbmcgdmFsdWUgZm9yIHBh
cmFtZXRlciB7bmFtZX0iCisgICAgICAgIGVsaWYgdmFsdWUgPT0gIiI6CisgICAgICAgICAgICBt
ZXNzYWdlID0gZiJlbXB0eSB2YWx1ZSBmb3IgcGFyYW1ldGVyIHtuYW1lfSIKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBmImludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciB7
bmFtZX06IHt2YWx1ZX0iCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworCitj
bGFzcyBBYm9ydEhhbmRzaGFrZShJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAiIiIKKyAgICBSYWlz
ZWQgdG8gYWJvcnQgdGhlIGhhbmRzaGFrZSBvbiBwdXJwb3NlIGFuZCByZXR1cm4gYSBIVFRQIHJl
c3BvbnNlLgorCisgICAgVGhpcyBleGNlcHRpb24gaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWls
LgorCisgICAgVGhlIHB1YmxpYyBBUEkgaXMgOm1ldGg6YH5zZXJ2ZXIuV2ViU29ja2V0U2VydmVy
UHJvdG9jb2wucHJvY2Vzc19yZXF1ZXN0YC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f
KAorICAgICAgICBzZWxmLCBzdGF0dXM6IGh0dHAuSFRUUFN0YXR1cywgaGVhZGVyczogSGVhZGVy
c0xpa2UsIGJvZHk6IGJ5dGVzID0gYiIiCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxmLnN0
YXR1cyA9IHN0YXR1cworICAgICAgICBzZWxmLmhlYWRlcnMgPSBIZWFkZXJzKGhlYWRlcnMpCisg
ICAgICAgIHNlbGYuYm9keSA9IGJvZHkKKyAgICAgICAgbWVzc2FnZSA9IGYiSFRUUCB7c3RhdHVz
fSwge2xlbihzZWxmLmhlYWRlcnMpfSBoZWFkZXJzLCB7bGVuKGJvZHkpfSBieXRlcyIKKyAgICAg
ICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlKQorCisKK2NsYXNzIFJlZGlyZWN0SGFuZHNoYWtl
KEludmFsaWRIYW5kc2hha2UpOgorICAgICIiIgorICAgIFJhaXNlZCB3aGVuIGEgaGFuZHNoYWtl
IGdldHMgcmVkaXJlY3RlZC4KKworICAgIFRoaXMgZXhjZXB0aW9uIGlzIGFuIGltcGxlbWVudGF0
aW9uIGRldGFpbC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaTogc3Ry
KSAtPiBOb25lOgorICAgICAgICBzZWxmLnVyaSA9IHVyaQorCisgICAgZGVmIF9fc3RyX18oc2Vs
ZikgLT4gc3RyOgorICAgICAgICByZXR1cm4gZiJyZWRpcmVjdCB0byB7c2VsZi51cml9IgorCisK
K2NsYXNzIEludmFsaWRTdGF0ZShXZWJTb2NrZXRFeGNlcHRpb24sIEFzc2VydGlvbkVycm9yKToK
KyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gaXMgZm9yYmlkZGVuIGluIHRo
ZSBjdXJyZW50IHN0YXRlLgorCisgICAgVGhpcyBleGNlcHRpb24gaXMgYW4gaW1wbGVtZW50YXRp
b24gZGV0YWlsLgorCisgICAgSXQgc2hvdWxkIG5ldmVyIGJlIHJhaXNlZCBpbiBub3JtYWwgY2ly
Y3Vtc3RhbmNlcy4KKworICAgICIiIgorCisKK2NsYXNzIEludmFsaWRVUkkoV2ViU29ja2V0RXhj
ZXB0aW9uKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBjb25uZWN0aW5nIHRvIGFuIFVSSSB0
aGF0IGlzbid0IGEgdmFsaWQgV2ViU29ja2V0IFVSSS4KKworICAgICIiIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHVyaTogc3RyKSAtPiBOb25lOgorICAgICAgICBzZWxmLnVyaSA9IHVyaQor
ICAgICAgICBtZXNzYWdlID0gInt9IGlzbid0IGEgdmFsaWQgVVJJIi5mb3JtYXQodXJpKQorICAg
ICAgICBzdXBlcigpLl9faW5pdF9fKG1lc3NhZ2UpCisKKworY2xhc3MgUGF5bG9hZFRvb0JpZyhX
ZWJTb2NrZXRFeGNlcHRpb24pOgorICAgICIiIgorICAgIFJhaXNlZCB3aGVuIHJlY2VpdmluZyBh
IGZyYW1lIHdpdGggYSBwYXlsb2FkIGV4Y2VlZGluZyB0aGUgbWF4aW11bSBzaXplLgorCisgICAg
IiIiCisKKworY2xhc3MgUHJvdG9jb2xFcnJvcihXZWJTb2NrZXRFeGNlcHRpb24pOgorICAgICIi
IgorICAgIFJhaXNlZCB3aGVuIHRoZSBvdGhlciBzaWRlIGJyZWFrcyB0aGUgcHJvdG9jb2wuCisK
KyAgICAiIiIKKworCitXZWJTb2NrZXRQcm90b2NvbEVycm9yID0gUHJvdG9jb2xFcnJvciAgIyBm
b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9z
cmMvd2Vic29ja2V0cy9leHRlbnNpb25zL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Ny
Yy93ZWJzb2NrZXRzL2V4dGVuc2lvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy9zcmMvd2Vic29ja2V0cy9leHRlbnNpb25zL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
c3JjL3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9iYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYWE1MmE3YWRiZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2V4dGVuc2lvbnMvYmFzZS5weQpAQCAtMCwwICsxLDEx
OSBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLmV4dGVuc2lvbnMuYmFzZWAgZGVmaW5lcyBhYnN0
cmFjdCBjbGFzc2VzIGZvciBpbXBsZW1lbnRpbmcKK2V4dGVuc2lvbnMuCisKK1NlZSBgc2VjdGlv
biA5IG9mIFJGQyA2NDU1YF8uCisKKy4uIF9zZWN0aW9uIDkgb2YgUkZDIDY0NTU6IGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi05CisKKyIiIgorCitmcm9tIHR5cGlu
ZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uZnJhbWlu
ZyBpbXBvcnQgRnJhbWUKK2Zyb20gLi50eXBpbmcgaW1wb3J0IEV4dGVuc2lvbk5hbWUsIEV4dGVu
c2lvblBhcmFtZXRlcgorCisKK19fYWxsX18gPSBbIkV4dGVuc2lvbiIsICJDbGllbnRFeHRlbnNp
b25GYWN0b3J5IiwgIlNlcnZlckV4dGVuc2lvbkZhY3RvcnkiXQorCisKK2NsYXNzIEV4dGVuc2lv
bjoKKyAgICAiIiIKKyAgICBBYnN0cmFjdCBjbGFzcyBmb3IgZXh0ZW5zaW9ucy4KKworICAgICIi
IgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZikgLT4gRXh0ZW5zaW9uTmFtZToK
KyAgICAgICAgIiIiCisgICAgICAgIEV4dGVuc2lvbiBpZGVudGlmaWVyLgorCisgICAgICAgICIi
IgorCisgICAgZGVmIGRlY29kZShzZWxmLCBmcmFtZTogRnJhbWUsICosIG1heF9zaXplOiBPcHRp
b25hbFtpbnRdID0gTm9uZSkgLT4gRnJhbWU6CisgICAgICAgICIiIgorICAgICAgICBEZWNvZGUg
YW4gaW5jb21pbmcgZnJhbWUuCisKKyAgICAgICAgOnBhcmFtIGZyYW1lOiBpbmNvbWluZyBmcmFt
ZQorICAgICAgICA6cGFyYW0gbWF4X3NpemU6IG1heGltdW0gcGF5bG9hZCBzaXplIGluIGJ5dGVz
CisKKyAgICAgICAgIiIiCisKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGZyYW1lOiBGcmFtZSkgLT4g
RnJhbWU6CisgICAgICAgICIiIgorICAgICAgICBFbmNvZGUgYW4gb3V0Z29pbmcgZnJhbWUuCisK
KyAgICAgICAgOnBhcmFtIGZyYW1lOiBvdXRnb2luZyBmcmFtZQorCisgICAgICAgICIiIgorCisK
K2NsYXNzIENsaWVudEV4dGVuc2lvbkZhY3Rvcnk6CisgICAgIiIiCisgICAgQWJzdHJhY3QgY2xh
c3MgZm9yIGNsaWVudC1zaWRlIGV4dGVuc2lvbiBmYWN0b3JpZXMuCisKKyAgICAiIiIKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpIC0+IEV4dGVuc2lvbk5hbWU6CisgICAgICAg
ICIiIgorICAgICAgICBFeHRlbnNpb24gaWRlbnRpZmllci4KKworICAgICAgICAiIiIKKworICAg
IGRlZiBnZXRfcmVxdWVzdF9wYXJhbXMoc2VsZikgLT4gTGlzdFtFeHRlbnNpb25QYXJhbWV0ZXJd
OgorICAgICAgICAiIiIKKyAgICAgICAgQnVpbGQgcmVxdWVzdCBwYXJhbWV0ZXJzLgorCisgICAg
ICAgIFJldHVybiBhIGxpc3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAgcGFpcnMuCisKKyAgICAgICAg
IiIiCisKKyAgICBkZWYgcHJvY2Vzc19yZXNwb25zZV9wYXJhbXMoCisgICAgICAgIHNlbGYsCisg
ICAgICAgIHBhcmFtczogU2VxdWVuY2VbRXh0ZW5zaW9uUGFyYW1ldGVyXSwKKyAgICAgICAgYWNj
ZXB0ZWRfZXh0ZW5zaW9uczogU2VxdWVuY2VbRXh0ZW5zaW9uXSwKKyAgICApIC0+IEV4dGVuc2lv
bjoKKyAgICAgICAgIiIiCisgICAgICAgIFByb2Nlc3MgcmVzcG9uc2UgcGFyYW1ldGVycyByZWNl
aXZlZCBmcm9tIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgOnBhcmFtIHBhcmFtczogbGlzdCBvZiBg
YChuYW1lLCB2YWx1ZSlgYCBwYWlycy4KKyAgICAgICAgOnBhcmFtIGFjY2VwdGVkX2V4dGVuc2lv
bnM6IGxpc3Qgb2YgcHJldmlvdXNseSBhY2NlcHRlZCBleHRlbnNpb25zLgorICAgICAgICA6cmFp
c2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuTmVnb3RpYXRpb25FcnJvcjogaWYgcGFyYW1ldGVy
cyBhcmVuJ3QKKyAgICAgICAgICAgIGFjY2VwdGFibGUKKworICAgICAgICAiIiIKKworCitjbGFz
cyBTZXJ2ZXJFeHRlbnNpb25GYWN0b3J5OgorICAgICIiIgorICAgIEFic3RyYWN0IGNsYXNzIGZv
ciBzZXJ2ZXItc2lkZSBleHRlbnNpb24gZmFjdG9yaWVzLgorCisgICAgIiIiCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgbmFtZShzZWxmKSAtPiBFeHRlbnNpb25OYW1lOgorICAgICAgICAiIiIK
KyAgICAgICAgRXh0ZW5zaW9uIGlkZW50aWZpZXIuCisKKyAgICAgICAgIiIiCisKKyAgICBkZWYg
cHJvY2Vzc19yZXF1ZXN0X3BhcmFtcygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcGFyYW1zOiBT
ZXF1ZW5jZVtFeHRlbnNpb25QYXJhbWV0ZXJdLAorICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25z
OiBTZXF1ZW5jZVtFeHRlbnNpb25dLAorICAgICkgLT4gVHVwbGVbTGlzdFtFeHRlbnNpb25QYXJh
bWV0ZXJdLCBFeHRlbnNpb25dOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvY2VzcyByZXF1ZXN0
IHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSB0aGUgY2xpZW50LgorCisgICAgICAgIFRvIGFjY2Vw
dCB0aGUgb2ZmZXIsIHJldHVybiBhIDItdXBsZSBjb250YWluaW5nOgorCisgICAgICAgIC0gcmVz
cG9uc2UgcGFyYW1ldGVyczogYSBsaXN0IG9mIGBgKG5hbWUsIHZhbHVlKWBgIHBhaXJzCisgICAg
ICAgIC0gYW4gZXh0ZW5zaW9uOiBhbiBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpg
RXh0ZW5zaW9uYAorCisgICAgICAgIDpwYXJhbSBwYXJhbXM6IGxpc3Qgb2YgYGAobmFtZSwgdmFs
dWUpYGAgcGFpcnMuCisgICAgICAgIDpwYXJhbSBhY2NlcHRlZF9leHRlbnNpb25zOiBsaXN0IG9m
IHByZXZpb3VzbHkgYWNjZXB0ZWQgZXh0ZW5zaW9ucy4KKyAgICAgICAgOnJhaXNlcyB+d2Vic29j
a2V0cy5leGNlcHRpb25zLk5lZ290aWF0aW9uRXJyb3I6IHRvIHJlamVjdCB0aGUgb2ZmZXIsCisg
ICAgICAgICAgICBpZiBwYXJhbWV0ZXJzIGFyZW4ndCBhY2NlcHRhYmxlCisKKyAgICAgICAgIiIi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9w
ZXJtZXNzYWdlX2RlZmxhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvZXh0
ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lMzhkOWVkYWJhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvc3JjL3dlYnNvY2tldHMvZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUucHkKQEAg
LTAsMCArMSw1ODggQEAKKyIiIgorOm1vZDpgd2Vic29ja2V0cy5leHRlbnNpb25zLnBlcm1lc3Nh
Z2VfZGVmbGF0ZWAgaW1wbGVtZW50cyB0aGUgQ29tcHJlc3Npb24KK0V4dGVuc2lvbnMgZm9yIFdl
YlNvY2tldCBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgNzY5MmAuCisKKyIiIgorCitpbXBvcnQgemxp
YgorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNl
LCBUdXBsZSwgVW5pb24KKworZnJvbSAuLmV4Y2VwdGlvbnMgaW1wb3J0ICgKKyAgICBEdXBsaWNh
dGVQYXJhbWV0ZXIsCisgICAgSW52YWxpZFBhcmFtZXRlck5hbWUsCisgICAgSW52YWxpZFBhcmFt
ZXRlclZhbHVlLAorICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAgUGF5bG9hZFRvb0JpZywKKykK
K2Zyb20gLi5mcmFtaW5nIGltcG9ydCBDVFJMX09QQ09ERVMsIE9QX0NPTlQsIEZyYW1lCitmcm9t
IC4udHlwaW5nIGltcG9ydCBFeHRlbnNpb25OYW1lLCBFeHRlbnNpb25QYXJhbWV0ZXIKK2Zyb20g
LmJhc2UgaW1wb3J0IENsaWVudEV4dGVuc2lvbkZhY3RvcnksIEV4dGVuc2lvbiwgU2VydmVyRXh0
ZW5zaW9uRmFjdG9yeQorCisKK19fYWxsX18gPSBbCisgICAgIlBlck1lc3NhZ2VEZWZsYXRlIiwK
KyAgICAiQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5IiwKKyAgICAiU2VydmVyUGVyTWVz
c2FnZURlZmxhdGVGYWN0b3J5IiwKK10KKworX0VNUFRZX1VOQ09NUFJFU1NFRF9CTE9DSyA9IGIi
XHgwMFx4MDBceGZmXHhmZiIKKworX01BWF9XSU5ET1dfQklUU19WQUxVRVMgPSBbc3RyKGJpdHMp
IGZvciBiaXRzIGluIHJhbmdlKDgsIDE2KV0KKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZShF
eHRlbnNpb24pOgorICAgICIiIgorICAgIFBlci1NZXNzYWdlIERlZmxhdGUgZXh0ZW5zaW9uLgor
CisgICAgIiIiCisKKyAgICBuYW1lID0gRXh0ZW5zaW9uTmFtZSgicGVybWVzc2FnZS1kZWZsYXRl
IikKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcmVtb3RlX25v
X2NvbnRleHRfdGFrZW92ZXI6IGJvb2wsCisgICAgICAgIGxvY2FsX25vX2NvbnRleHRfdGFrZW92
ZXI6IGJvb2wsCisgICAgICAgIHJlbW90ZV9tYXhfd2luZG93X2JpdHM6IGludCwKKyAgICAgICAg
bG9jYWxfbWF4X3dpbmRvd19iaXRzOiBpbnQsCisgICAgICAgIGNvbXByZXNzX3NldHRpbmdzOiBP
cHRpb25hbFtEaWN0W0FueSwgQW55XV0gPSBOb25lLAorICAgICkgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIENvbmZpZ3VyZSB0aGUgUGVyLU1lc3NhZ2UgRGVmbGF0ZSBleHRlbnNpb24u
CisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNvbXByZXNzX3NldHRpbmdzIGlzIE5vbmU6Cisg
ICAgICAgICAgICBjb21wcmVzc19zZXR0aW5ncyA9IHt9CisKKyAgICAgICAgYXNzZXJ0IHJlbW90
ZV9ub19jb250ZXh0X3Rha2VvdmVyIGluIFtGYWxzZSwgVHJ1ZV0KKyAgICAgICAgYXNzZXJ0IGxv
Y2FsX25vX2NvbnRleHRfdGFrZW92ZXIgaW4gW0ZhbHNlLCBUcnVlXQorICAgICAgICBhc3NlcnQg
OCA8PSByZW1vdGVfbWF4X3dpbmRvd19iaXRzIDw9IDE1CisgICAgICAgIGFzc2VydCA4IDw9IGxv
Y2FsX21heF93aW5kb3dfYml0cyA8PSAxNQorICAgICAgICBhc3NlcnQgIndiaXRzIiBub3QgaW4g
Y29tcHJlc3Nfc2V0dGluZ3MKKworICAgICAgICBzZWxmLnJlbW90ZV9ub19jb250ZXh0X3Rha2Vv
dmVyID0gcmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgc2VsZi5sb2NhbF9ub19j
b250ZXh0X3Rha2VvdmVyID0gbG9jYWxfbm9fY29udGV4dF90YWtlb3ZlcgorICAgICAgICBzZWxm
LnJlbW90ZV9tYXhfd2luZG93X2JpdHMgPSByZW1vdGVfbWF4X3dpbmRvd19iaXRzCisgICAgICAg
IHNlbGYubG9jYWxfbWF4X3dpbmRvd19iaXRzID0gbG9jYWxfbWF4X3dpbmRvd19iaXRzCisgICAg
ICAgIHNlbGYuY29tcHJlc3Nfc2V0dGluZ3MgPSBjb21wcmVzc19zZXR0aW5ncworCisgICAgICAg
IGlmIG5vdCBzZWxmLnJlbW90ZV9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgc2Vs
Zi5kZWNvZGVyID0gemxpYi5kZWNvbXByZXNzb2JqKHdiaXRzPS1zZWxmLnJlbW90ZV9tYXhfd2lu
ZG93X2JpdHMpCisKKyAgICAgICAgaWYgbm90IHNlbGYubG9jYWxfbm9fY29udGV4dF90YWtlb3Zl
cjoKKyAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IHpsaWIuY29tcHJlc3NvYmooCisgICAgICAg
ICAgICAgICAgd2JpdHM9LXNlbGYubG9jYWxfbWF4X3dpbmRvd19iaXRzLCAqKnNlbGYuY29tcHJl
c3Nfc2V0dGluZ3MKKyAgICAgICAgICAgICkKKworICAgICAgICAjIFRvIGhhbmRsZSBjb250aW51
YXRpb24gZnJhbWVzIHByb3Blcmx5LCB3ZSBtdXN0IGtlZXAgdHJhY2sgb2YKKyAgICAgICAgIyB3
aGV0aGVyIHRoYXQgaW5pdGlhbCBmcmFtZSB3YXMgZW5jb2RlZC4KKyAgICAgICAgc2VsZi5kZWNv
ZGVfY29udF9kYXRhID0gRmFsc2UKKyAgICAgICAgIyBUaGVyZSdzIG5vIG5lZWQgZm9yIHNlbGYu
ZW5jb2RlX2NvbnRfZGF0YSBiZWNhdXNlIHdlIGFsd2F5cyBlbmNvZGUKKyAgICAgICAgIyBvdXRn
b2luZyBmcmFtZXMsIHNvIGl0IHdvdWxkIGFsd2F5cyBiZSBUcnVlLgorCisgICAgZGVmIF9fcmVw
cl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIGYiUGVyTWVz
c2FnZURlZmxhdGUoIgorICAgICAgICAgICAgZiJyZW1vdGVfbm9fY29udGV4dF90YWtlb3Zlcj17
c2VsZi5yZW1vdGVfbm9fY29udGV4dF90YWtlb3Zlcn0sICIKKyAgICAgICAgICAgIGYibG9jYWxf
bm9fY29udGV4dF90YWtlb3Zlcj17c2VsZi5sb2NhbF9ub19jb250ZXh0X3Rha2VvdmVyfSwgIgor
ICAgICAgICAgICAgZiJyZW1vdGVfbWF4X3dpbmRvd19iaXRzPXtzZWxmLnJlbW90ZV9tYXhfd2lu
ZG93X2JpdHN9LCAiCisgICAgICAgICAgICBmImxvY2FsX21heF93aW5kb3dfYml0cz17c2VsZi5s
b2NhbF9tYXhfd2luZG93X2JpdHN9KSIKKyAgICAgICAgKQorCisgICAgZGVmIGRlY29kZShzZWxm
LCBmcmFtZTogRnJhbWUsICosIG1heF9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZSkgLT4gRnJh
bWU6CisgICAgICAgICIiIgorICAgICAgICBEZWNvZGUgYW4gaW5jb21pbmcgZnJhbWUuCisKKyAg
ICAgICAgIiIiCisgICAgICAgICMgU2tpcCBjb250cm9sIGZyYW1lcy4KKyAgICAgICAgaWYgZnJh
bWUub3Bjb2RlIGluIENUUkxfT1BDT0RFUzoKKyAgICAgICAgICAgIHJldHVybiBmcmFtZQorCisg
ICAgICAgICMgSGFuZGxlIGNvbnRpbnVhdGlvbiBkYXRhIGZyYW1lczoKKyAgICAgICAgIyAtIHNr
aXAgaWYgdGhlIGluaXRpYWwgZGF0YSBmcmFtZSB3YXNuJ3QgZW5jb2RlZAorICAgICAgICAjIC0g
cmVzZXQgImRlY29kZSBjb250aW51YXRpb24gZGF0YSIgZmxhZyBpZiBpdCdzIGEgZmluYWwgZnJh
bWUKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IE9QX0NPTlQ6CisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5kZWNvZGVfY29udF9kYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZQor
ICAgICAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlX2Nv
bnRfZGF0YSA9IEZhbHNlCisKKyAgICAgICAgIyBIYW5kbGUgdGV4dCBhbmQgYmluYXJ5IGRhdGEg
ZnJhbWVzOgorICAgICAgICAjIC0gc2tpcCBpZiB0aGUgZnJhbWUgaXNuJ3QgZW5jb2RlZAorICAg
ICAgICAjIC0gc2V0ICJkZWNvZGUgY29udGludWF0aW9uIGRhdGEiIGZsYWcgaWYgaXQncyBhIG5v
bi1maW5hbCBmcmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGZyYW1lLnJz
djE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lCisgICAgICAgICAgICBpZiBub3QgZnJh
bWUuZmluOiAgIyBmcmFtZS5yc3YxIGlzIFRydWUgYXQgdGhpcyBwb2ludAorICAgICAgICAgICAg
ICAgIHNlbGYuZGVjb2RlX2NvbnRfZGF0YSA9IFRydWUKKworICAgICAgICAgICAgIyBSZS1pbml0
aWFsaXplIHBlci1tZXNzYWdlIGRlY29kZXIuCisgICAgICAgICAgICBpZiBzZWxmLnJlbW90ZV9u
b19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IHpsaWIu
ZGVjb21wcmVzc29iaih3Yml0cz0tc2VsZi5yZW1vdGVfbWF4X3dpbmRvd19iaXRzKQorCisgICAg
ICAgICMgVW5jb21wcmVzcyBjb21wcmVzc2VkIGZyYW1lcy4gUHJvdGVjdCBhZ2FpbnN0IHppcCBi
b21icyBieQorICAgICAgICAjIHByZXZlbnRpbmcgemxpYiBmcm9tIGRlY29tcHJlc3NpbmcgbW9y
ZSB0aGFuIG1heF9sZW5ndGggYnl0ZXMKKyAgICAgICAgIyAoZXhjZXB0IHdoZW4gdGhlIGxpbWl0
IGlzIGRpc2FibGVkIHdpdGggbWF4X3NpemUgPSBOb25lKS4KKyAgICAgICAgZGF0YSA9IGZyYW1l
LmRhdGEKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgZGF0YSArPSBfRU1QVFlf
VU5DT01QUkVTU0VEX0JMT0NLCisgICAgICAgIG1heF9sZW5ndGggPSAwIGlmIG1heF9zaXplIGlz
IE5vbmUgZWxzZSBtYXhfc2l6ZQorICAgICAgICBkYXRhID0gc2VsZi5kZWNvZGVyLmRlY29tcHJl
c3MoZGF0YSwgbWF4X2xlbmd0aCkKKyAgICAgICAgaWYgc2VsZi5kZWNvZGVyLnVuY29uc3VtZWRf
dGFpbDoKKyAgICAgICAgICAgIHJhaXNlIFBheWxvYWRUb29CaWcoCisgICAgICAgICAgICAgICAg
ZiJVbmNvbXByZXNzZWQgcGF5bG9hZCBsZW5ndGggZXhjZWVkcyBzaXplIGxpbWl0ICg/ID4ge21h
eF9zaXplfSBieXRlcykiCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBBbGxvdyBnYXJiYWdl
IGNvbGxlY3Rpb24gb2YgdGhlIGRlY29kZXIgaWYgaXQgd29uJ3QgYmUgcmV1c2VkLgorICAgICAg
ICBpZiBmcmFtZS5maW4gYW5kIHNlbGYucmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAg
ICAgICAgICBkZWwgc2VsZi5kZWNvZGVyCisKKyAgICAgICAgcmV0dXJuIGZyYW1lLl9yZXBsYWNl
KGRhdGE9ZGF0YSwgcnN2MT1GYWxzZSkKKworICAgIGRlZiBlbmNvZGUoc2VsZiwgZnJhbWU6IEZy
YW1lKSAtPiBGcmFtZToKKyAgICAgICAgIiIiCisgICAgICAgIEVuY29kZSBhbiBvdXRnb2luZyBm
cmFtZS4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBTa2lwIGNvbnRyb2wgZnJhbWVzLgorICAg
ICAgICBpZiBmcmFtZS5vcGNvZGUgaW4gQ1RSTF9PUENPREVTOgorICAgICAgICAgICAgcmV0dXJu
IGZyYW1lCisKKyAgICAgICAgIyBTaW5jZSB3ZSBhbHdheXMgZW5jb2RlIGFuZCBuZXZlciBmcmFn
bWVudCBtZXNzYWdlcywgdGhlcmUncyBubyBsb2dpYworICAgICAgICAjIHNpbWlsYXIgdG8gZGVj
b2RlKCkgaGVyZSBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlICE9IE9Q
X0NPTlQ6CisgICAgICAgICAgICAjIFJlLWluaXRpYWxpemUgcGVyLW1lc3NhZ2UgZGVjb2Rlci4K
KyAgICAgICAgICAgIGlmIHNlbGYubG9jYWxfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAg
ICAgICAgICBzZWxmLmVuY29kZXIgPSB6bGliLmNvbXByZXNzb2JqKAorICAgICAgICAgICAgICAg
ICAgICB3Yml0cz0tc2VsZi5sb2NhbF9tYXhfd2luZG93X2JpdHMsICoqc2VsZi5jb21wcmVzc19z
ZXR0aW5ncworICAgICAgICAgICAgICAgICkKKworICAgICAgICAjIENvbXByZXNzIGRhdGEgZnJh
bWVzLgorICAgICAgICBkYXRhID0gc2VsZi5lbmNvZGVyLmNvbXByZXNzKGZyYW1lLmRhdGEpICsg
c2VsZi5lbmNvZGVyLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBpZiBmcmFtZS5m
aW4gYW5kIGRhdGEuZW5kc3dpdGgoX0VNUFRZX1VOQ09NUFJFU1NFRF9CTE9DSyk6CisgICAgICAg
ICAgICBkYXRhID0gZGF0YVs6LTRdCisKKyAgICAgICAgIyBBbGxvdyBnYXJiYWdlIGNvbGxlY3Rp
b24gb2YgdGhlIGVuY29kZXIgaWYgaXQgd29uJ3QgYmUgcmV1c2VkLgorICAgICAgICBpZiBmcmFt
ZS5maW4gYW5kIHNlbGYubG9jYWxfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgIGRl
bCBzZWxmLmVuY29kZXIKKworICAgICAgICByZXR1cm4gZnJhbWUuX3JlcGxhY2UoZGF0YT1kYXRh
LCByc3YxPVRydWUpCisKKworZGVmIF9idWlsZF9wYXJhbWV0ZXJzKAorICAgIHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyOiBib29sLAorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOiBi
b29sLAorICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHM6IE9wdGlvbmFsW2ludF0sCisgICAgY2xp
ZW50X21heF93aW5kb3dfYml0czogT3B0aW9uYWxbVW5pb25baW50LCBib29sXV0sCispIC0+IExp
c3RbRXh0ZW5zaW9uUGFyYW1ldGVyXToKKyAgICAiIiIKKyAgICBCdWlsZCBhIGxpc3Qgb2YgYGAo
bmFtZSwgdmFsdWUpYGAgcGFpcnMgZm9yIHNvbWUgY29tcHJlc3Npb24gcGFyYW1ldGVycy4KKwor
ICAgICIiIgorICAgIHBhcmFtczogTGlzdFtFeHRlbnNpb25QYXJhbWV0ZXJdID0gW10KKyAgICBp
ZiBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgcGFyYW1zLmFwcGVuZCgoInNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSkpCisgICAgaWYgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXI6CisgICAgICAgIHBhcmFtcy5hcHBlbmQoKCJjbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlciIsIE5vbmUpKQorICAgIGlmIHNlcnZlcl9tYXhfd2luZG93X2JpdHM6CisgICAgICAg
IHBhcmFtcy5hcHBlbmQoKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgc3RyKHNlcnZlcl9tYXhf
d2luZG93X2JpdHMpKSkKKyAgICBpZiBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIFRydWU6ICAj
IG9ubHkgaW4gaGFuZHNoYWtlIHJlcXVlc3RzCisgICAgICAgIHBhcmFtcy5hcHBlbmQoKCJjbGll
bnRfbWF4X3dpbmRvd19iaXRzIiwgTm9uZSkpCisgICAgZWxpZiBjbGllbnRfbWF4X3dpbmRvd19i
aXRzOgorICAgICAgICBwYXJhbXMuYXBwZW5kKCgiY2xpZW50X21heF93aW5kb3dfYml0cyIsIHN0
cihjbGllbnRfbWF4X3dpbmRvd19iaXRzKSkpCisgICAgcmV0dXJuIHBhcmFtcworCisKK2RlZiBf
ZXh0cmFjdF9wYXJhbWV0ZXJzKAorICAgIHBhcmFtczogU2VxdWVuY2VbRXh0ZW5zaW9uUGFyYW1l
dGVyXSwgKiwgaXNfc2VydmVyOiBib29sCispIC0+IFR1cGxlW2Jvb2wsIGJvb2wsIE9wdGlvbmFs
W2ludF0sIE9wdGlvbmFsW1VuaW9uW2ludCwgYm9vbF1dXToKKyAgICAiIiIKKyAgICBFeHRyYWN0
IGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgZnJvbSBhIGxpc3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAg
cGFpcnMuCisKKyAgICBJZiBgYGlzX3NlcnZlcmBgIGlzIGBgVHJ1ZWBgLCBgYGNsaWVudF9tYXhf
d2luZG93X2JpdHNgYCBtYXkgYmUgcHJvdmlkZWQKKyAgICB3aXRob3V0IGEgdmFsdWUuIFRoaXMg
aXMgb25seSBhbGxvdyBpbiBoYW5kc2hha2UgcmVxdWVzdHMuCisKKyAgICAiIiIKKyAgICBzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlcjogYm9vbCA9IEZhbHNlCisgICAgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXI6IGJvb2wgPSBGYWxzZQorICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHM6IE9w
dGlvbmFsW2ludF0gPSBOb25lCisgICAgY2xpZW50X21heF93aW5kb3dfYml0czogT3B0aW9uYWxb
VW5pb25baW50LCBib29sXV0gPSBOb25lCisKKyAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcGFyYW1z
OgorCisgICAgICAgIGlmIG5hbWUgPT0gInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIjoKKyAg
ICAgICAgICAgIGlmIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgICAg
IHJhaXNlIER1cGxpY2F0ZVBhcmFtZXRlcihuYW1lKQorICAgICAgICAgICAgaWYgdmFsdWUgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9IFRydWUK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFBhcmFtZXRl
clZhbHVlKG5hbWUsIHZhbHVlKQorCisgICAgICAgIGVsaWYgbmFtZSA9PSAiY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIiOgorICAgICAgICAgICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXI6CisgICAgICAgICAgICAgICAgcmFpc2UgRHVwbGljYXRlUGFyYW1ldGVyKG5hbWUpCisgICAg
ICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkUGFyYW1ldGVyVmFsdWUobmFtZSwgdmFsdWUpCisKKyAgICAgICAgZWxpZiBu
YW1lID09ICJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIjoKKyAgICAgICAgICAgIGlmIHNlcnZlcl9t
YXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRHVwbGlj
YXRlUGFyYW1ldGVyKG5hbWUpCisgICAgICAgICAgICBpZiB2YWx1ZSBpbiBfTUFYX1dJTkRPV19C
SVRTX1ZBTFVFUzoKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gaW50
KHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlk
UGFyYW1ldGVyVmFsdWUobmFtZSwgdmFsdWUpCisKKyAgICAgICAgZWxpZiBuYW1lID09ICJjbGll
bnRfbWF4X3dpbmRvd19iaXRzIjoKKyAgICAgICAgICAgIGlmIGNsaWVudF9tYXhfd2luZG93X2Jp
dHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRHVwbGljYXRlUGFyYW1ldGVy
KG5hbWUpCisgICAgICAgICAgICBpZiBpc19zZXJ2ZXIgYW5kIHZhbHVlIGlzIE5vbmU6ICAjIG9u
bHkgaW4gaGFuZHNoYWtlIHJlcXVlc3RzCisgICAgICAgICAgICAgICAgY2xpZW50X21heF93aW5k
b3dfYml0cyA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgdmFsdWUgaW4gX01BWF9XSU5ET1dfQklU
U19WQUxVRVM6CisgICAgICAgICAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyA9IGludCh2
YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFBh
cmFtZXRlclZhbHVlKG5hbWUsIHZhbHVlKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkUGFyYW1ldGVyTmFtZShuYW1lKQorCisgICAgcmV0dXJuICgKKyAgICAgICAg
c2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyLAorICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICBjbGllbnRf
bWF4X3dpbmRvd19iaXRzLAorICAgICkKKworCitjbGFzcyBDbGllbnRQZXJNZXNzYWdlRGVmbGF0
ZUZhY3RvcnkoQ2xpZW50RXh0ZW5zaW9uRmFjdG9yeSk6CisgICAgIiIiCisgICAgQ2xpZW50LXNp
ZGUgZXh0ZW5zaW9uIGZhY3RvcnkgZm9yIHRoZSBQZXItTWVzc2FnZSBEZWZsYXRlIGV4dGVuc2lv
bi4KKworICAgIFBhcmFtZXRlcnMgYmVoYXZlIGFzIGRlc2NyaWJlZCBpbiBgc2VjdGlvbiA3LjEg
b2YgUkZDIDc2OTJgXy4gU2V0IHRoZW0gdG8KKyAgICBgYFRydWVgYCB0byBpbmNsdWRlIHRoZW0g
aW4gdGhlIG5lZ290aWF0aW9uIG9mZmVyIHdpdGhvdXQgYSB2YWx1ZSBvciB0byBhbgorICAgIGlu
dGVnZXIgdmFsdWUgdG8gaW5jbHVkZSB0aGVtIHdpdGggdGhpcyB2YWx1ZS4KKworICAgIC4uIF9z
ZWN0aW9uIDcuMSBvZiBSRkMgNzY5MjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2
OTIjc2VjdGlvbi03LjEKKworICAgIDpwYXJhbSBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcjog
ZGVmYXVsdHMgdG8gYGBGYWxzZWBgCisgICAgOnBhcmFtIGNsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyOiBkZWZhdWx0cyB0byBgYEZhbHNlYGAKKyAgICA6cGFyYW0gc2VydmVyX21heF93aW5kb3df
Yml0czogb3B0aW9uYWwsIGRlZmF1bHRzIHRvIGBgTm9uZWBgCisgICAgOnBhcmFtIGNsaWVudF9t
YXhfd2luZG93X2JpdHM6IG9wdGlvbmFsLCBkZWZhdWx0cyB0byBgYE5vbmVgYAorICAgIDpwYXJh
bSBjb21wcmVzc19zZXR0aW5nczogb3B0aW9uYWwsIGtleXdvcmQgYXJndW1lbnRzIGZvcgorICAg
ICAgICA6ZnVuYzpgemxpYi5jb21wcmVzc29iamAsIGV4Y2x1ZGluZyBgYHdiaXRzYGAKKworICAg
ICIiIgorCisgICAgbmFtZSA9IEV4dGVuc2lvbk5hbWUoInBlcm1lc3NhZ2UtZGVmbGF0ZSIpCisK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIHNlcnZlcl9ub19jb250
ZXh0X3Rha2VvdmVyOiBib29sID0gRmFsc2UsCisgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyOiBib29sID0gRmFsc2UsCisgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHM6IE9w
dGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzOiBPcHRp
b25hbFtVbmlvbltpbnQsIGJvb2xdXSA9IE5vbmUsCisgICAgICAgIGNvbXByZXNzX3NldHRpbmdz
OiBPcHRpb25hbFtEaWN0W3N0ciwgQW55XV0gPSBOb25lLAorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgIiIiCisgICAgICAgIENvbmZpZ3VyZSB0aGUgUGVyLU1lc3NhZ2UgRGVmbGF0ZSBleHRlbnNp
b24gZmFjdG9yeS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IChzZXJ2ZXJfbWF4X3dp
bmRvd19iaXRzIGlzIE5vbmUgb3IgOCA8PSBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIDw9IDE1KToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlcnZlcl9tYXhfd2luZG93X2JpdHMgbXVz
dCBiZSBiZXR3ZWVuIDggYW5kIDE1IikKKyAgICAgICAgaWYgbm90ICgKKyAgICAgICAgICAgIGNs
aWVudF9tYXhfd2luZG93X2JpdHMgaXMgTm9uZQorICAgICAgICAgICAgb3IgY2xpZW50X21heF93
aW5kb3dfYml0cyBpcyBUcnVlCisgICAgICAgICAgICBvciA4IDw9IGNsaWVudF9tYXhfd2luZG93
X2JpdHMgPD0gMTUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNs
aWVudF9tYXhfd2luZG93X2JpdHMgbXVzdCBiZSBiZXR3ZWVuIDggYW5kIDE1IikKKyAgICAgICAg
aWYgY29tcHJlc3Nfc2V0dGluZ3MgaXMgbm90IE5vbmUgYW5kICJ3Yml0cyIgaW4gY29tcHJlc3Nf
c2V0dGluZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICJjb21wcmVzc19zZXR0aW5ncyBtdXN0IG5vdCBpbmNsdWRlIHdiaXRzLCAiCisgICAgICAgICAg
ICAgICAgInNldCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGluc3RlYWQiCisgICAgICAgICAgICAp
CisKKyAgICAgICAgc2VsZi5zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9IHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyCisgICAgICAgIHNlbGYuY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIg
PSBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcgorICAgICAgICBzZWxmLnNlcnZlcl9tYXhfd2lu
ZG93X2JpdHMgPSBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzCisgICAgICAgIHNlbGYuY2xpZW50X21h
eF93aW5kb3dfYml0cyA9IGNsaWVudF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgc2VsZi5jb21w
cmVzc19zZXR0aW5ncyA9IGNvbXByZXNzX3NldHRpbmdzCisKKyAgICBkZWYgZ2V0X3JlcXVlc3Rf
cGFyYW1zKHNlbGYpIC0+IExpc3RbRXh0ZW5zaW9uUGFyYW1ldGVyXToKKyAgICAgICAgIiIiCisg
ICAgICAgIEJ1aWxkIHJlcXVlc3QgcGFyYW1ldGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAg
cmV0dXJuIF9idWlsZF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlciwKKyAgICAgICAgICAgIHNlbGYuY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIsCisgICAgICAgICAgICBzZWxmLnNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAg
ICBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICkKKworICAgIGRlZiBwcm9j
ZXNzX3Jlc3BvbnNlX3BhcmFtcygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgcGFyYW1zOiBTZXF1
ZW5jZVtFeHRlbnNpb25QYXJhbWV0ZXJdLAorICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zOiBT
ZXF1ZW5jZVsiRXh0ZW5zaW9uIl0sCisgICAgKSAtPiBQZXJNZXNzYWdlRGVmbGF0ZToKKyAgICAg
ICAgIiIiCisgICAgICAgIFByb2Nlc3MgcmVzcG9uc2UgcGFyYW1ldGVycy4KKworICAgICAgICBS
ZXR1cm4gYW4gZXh0ZW5zaW9uIGluc3RhbmNlLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBh
bnkob3RoZXIubmFtZSA9PSBzZWxmLm5hbWUgZm9yIG90aGVyIGluIGFjY2VwdGVkX2V4dGVuc2lv
bnMpOgorICAgICAgICAgICAgcmFpc2UgTmVnb3RpYXRpb25FcnJvcihmInJlY2VpdmVkIGR1cGxp
Y2F0ZSB7c2VsZi5uYW1lfSIpCisKKyAgICAgICAgIyBSZXF1ZXN0IHBhcmFtZXRlcnMgYXJlIGF2
YWlsYWJsZSBpbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisKKyAgICAgICAgIyBMb2FkIHJlc3BvbnNl
IHBhcmFtZXRlcnMgaW4gbG9jYWwgdmFyaWFibGVzLgorICAgICAgICAoCisgICAgICAgICAgICBz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKKyAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0
X3Rha2VvdmVyLAorICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKKyAgICAgICAg
ICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICkgPSBfZXh0cmFjdF9wYXJhbWV0
ZXJzKHBhcmFtcywgaXNfc2VydmVyPUZhbHNlKQorCisgICAgICAgICMgQWZ0ZXIgY29tcGFyaW5n
IHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UsIHRoZSBmaW5hbAorICAgICAgICAjIGNvbmZp
Z3VyYXRpb24gbXVzdCBiZSBhdmFpbGFibGUgaW4gdGhlIGxvY2FsIHZhcmlhYmxlcy4KKworICAg
ICAgICAjIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgICMKKyAgICAgICAgIyAg
IFJlcS4gICAgUmVzcC4gICBSZXN1bHQKKyAgICAgICAgIyAgIC0tLS0tLSAgLS0tLS0tICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAj
ICAgRmFsc2UgICBGYWxzZSAgIEZhbHNlCisgICAgICAgICMgICBGYWxzZSAgIFRydWUgICAgVHJ1
ZQorICAgICAgICAjICAgVHJ1ZSAgICBGYWxzZSAgIEVycm9yIQorICAgICAgICAjICAgVHJ1ZSAg
ICBUcnVlICAgIFRydWUKKworICAgICAgICBpZiBzZWxmLnNlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyOgorICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOgorICAg
ICAgICAgICAgICAgIHJhaXNlIE5lZ290aWF0aW9uRXJyb3IoImV4cGVjdGVkIHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIikKKworICAgICAgICAjIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
CisgICAgICAgICMKKyAgICAgICAgIyAgIFJlcS4gICAgUmVzcC4gICBSZXN1bHQKKyAgICAgICAg
IyAgIC0tLS0tLSAgLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICAgICAgICAjICAgRmFsc2UgICBGYWxzZSAgIEZhbHNlCisgICAgICAg
ICMgICBGYWxzZSAgIFRydWUgICAgVHJ1ZQorICAgICAgICAjICAgVHJ1ZSAgICBGYWxzZSAgIFRy
dWUgLSBtdXN0IGNoYW5nZSB2YWx1ZQorICAgICAgICAjICAgVHJ1ZSAgICBUcnVlICAgIFRydWUK
KworICAgICAgICBpZiBzZWxmLmNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAg
ICAgaWYgbm90IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgICAgIGNs
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gVHJ1ZQorCisgICAgICAgICMgc2VydmVyX21heF93
aW5kb3dfYml0cworCisgICAgICAgICMgICBSZXEuICAgIFJlc3AuICAgUmVzdWx0CisgICAgICAg
ICMgICAtLS0tLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyAgIE5vbmUgICAgTm9uZSAgICBOb25lCisgICAgICAg
ICMgICBOb25lICAgIDjiiaRN4omkMTUgIE0KKyAgICAgICAgIyAgIDjiiaRO4omkMTUgIE5vbmUg
ICAgRXJyb3IhCisgICAgICAgICMgICA44omkTuKJpDE1ICA44omkTeKJpE4gICBNCisgICAgICAg
ICMgICA44omkTuKJpDE1ICBOPE3iiaQxNSAgRXJyb3IhCisKKyAgICAgICAgaWYgc2VsZi5zZXJ2
ZXJfbWF4X3dpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGlmIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgaXMgTm9uZToKKyAg
ICAgICAgICAgICAgICByYWlzZSBOZWdvdGlhdGlvbkVycm9yKCJleHBlY3RlZCBzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzIikKKyAgICAgICAgICAgIGVsaWYgc2VydmVyX21heF93aW5kb3dfYml0cyA+
IHNlbGYuc2VydmVyX21heF93aW5kb3dfYml0czoKKyAgICAgICAgICAgICAgICByYWlzZSBOZWdv
dGlhdGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIikKKworICAg
ICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMKKworICAgICAgICAjICAgUmVxLiAgICBSZXNw
LiAgIFJlc3VsdAorICAgICAgICAjICAgLS0tLS0tICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMgICBOb25lICAgIE5v
bmUgICAgTm9uZQorICAgICAgICAjICAgTm9uZSAgICA44omkTeKJpDE1ICBFcnJvciEKKyAgICAg
ICAgIyAgIFRydWUgICAgTm9uZSAgICBOb25lCisgICAgICAgICMgICBUcnVlICAgIDjiiaRN4omk
MTUgIE0KKyAgICAgICAgIyAgIDjiiaRO4omkMTUgIE5vbmUgICAgTiAtIG11c3QgY2hhbmdlIHZh
bHVlCisgICAgICAgICMgICA44omkTuKJpDE1ICA44omkTeKJpE4gICBNCisgICAgICAgICMgICA4
4omkTuKJpDE1ICBOPE3iiaQxNSAgRXJyb3IhCisKKyAgICAgICAgaWYgc2VsZi5jbGllbnRfbWF4
X3dpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBjbGllbnRfbWF4X3dpbmRvd19i
aXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIE5lZ290aWF0aW9uRXJyb3Io
InVuZXhwZWN0ZWQgY2xpZW50X21heF93aW5kb3dfYml0cyIpCisKKyAgICAgICAgZWxpZiBzZWxm
LmNsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgVHJ1ZToKKyAgICAgICAgICAgIHBhc3MKKworICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBOb25l
OgorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLmNsaWVudF9t
YXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgIGVsaWYgY2xpZW50X21heF93aW5kb3dfYml0cyA+
IHNlbGYuY2xpZW50X21heF93aW5kb3dfYml0czoKKyAgICAgICAgICAgICAgICByYWlzZSBOZWdv
dGlhdGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIikKKworICAg
ICAgICByZXR1cm4gUGVyTWVzc2FnZURlZmxhdGUoCisgICAgICAgICAgICBzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlciwgICMgcmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAg
IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyLCAgIyBsb2NhbF9ub19jb250ZXh0X3Rha2VvdmVy
CisgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIG9yIDE1LCAgIyByZW1vdGVfbWF4
X3dpbmRvd19iaXRzCisgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIG9yIDE1LCAg
IyBsb2NhbF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgIHNlbGYuY29tcHJlc3Nfc2V0dGlu
Z3MsCisgICAgICAgICkKKworCitjbGFzcyBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3Rvcnko
U2VydmVyRXh0ZW5zaW9uRmFjdG9yeSk6CisgICAgIiIiCisgICAgU2VydmVyLXNpZGUgZXh0ZW5z
aW9uIGZhY3RvcnkgZm9yIHRoZSBQZXItTWVzc2FnZSBEZWZsYXRlIGV4dGVuc2lvbi4KKworICAg
IFBhcmFtZXRlcnMgYmVoYXZlIGFzIGRlc2NyaWJlZCBpbiBgc2VjdGlvbiA3LjEgb2YgUkZDIDc2
OTJgXy4gU2V0IHRoZW0gdG8KKyAgICBgYFRydWVgYCB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIG5l
Z290aWF0aW9uIG9mZmVyIHdpdGhvdXQgYSB2YWx1ZSBvciB0byBhbgorICAgIGludGVnZXIgdmFs
dWUgdG8gaW5jbHVkZSB0aGVtIHdpdGggdGhpcyB2YWx1ZS4KKworICAgIC4uIF9zZWN0aW9uIDcu
MSBvZiBSRkMgNzY5MjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2OTIjc2VjdGlv
bi03LjEKKworICAgIDpwYXJhbSBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjogZGVmYXVsdHMg
dG8gYGBGYWxzZWBgCisgICAgOnBhcmFtIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOiBkZWZh
dWx0cyB0byBgYEZhbHNlYGAKKyAgICA6cGFyYW0gc2VydmVyX21heF93aW5kb3dfYml0czogb3B0
aW9uYWwsIGRlZmF1bHRzIHRvIGBgTm9uZWBgCisgICAgOnBhcmFtIGNsaWVudF9tYXhfd2luZG93
X2JpdHM6IG9wdGlvbmFsLCBkZWZhdWx0cyB0byBgYE5vbmVgYAorICAgIDpwYXJhbSBjb21wcmVz
c19zZXR0aW5nczogb3B0aW9uYWwsIGtleXdvcmQgYXJndW1lbnRzIGZvcgorICAgICAgICA6ZnVu
YzpgemxpYi5jb21wcmVzc29iamAsIGV4Y2x1ZGluZyBgYHdiaXRzYGAKKworICAgICIiIgorCisg
ICAgbmFtZSA9IEV4dGVuc2lvbk5hbWUoInBlcm1lc3NhZ2UtZGVmbGF0ZSIpCisKKyAgICBkZWYg
X19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyOiBib29sID0gRmFsc2UsCisgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOiBi
b29sID0gRmFsc2UsCisgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHM6IE9wdGlvbmFsW2lu
dF0gPSBOb25lLAorICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzOiBPcHRpb25hbFtpbnRd
ID0gTm9uZSwKKyAgICAgICAgY29tcHJlc3Nfc2V0dGluZ3M6IE9wdGlvbmFsW0RpY3Rbc3RyLCBB
bnldXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ29uZmln
dXJlIHRoZSBQZXItTWVzc2FnZSBEZWZsYXRlIGV4dGVuc2lvbiBmYWN0b3J5LgorCisgICAgICAg
ICIiIgorICAgICAgICBpZiBub3QgKHNlcnZlcl9tYXhfd2luZG93X2JpdHMgaXMgTm9uZSBvciA4
IDw9IHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPD0gMTUpOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigic2VydmVyX21heF93aW5kb3dfYml0cyBtdXN0IGJlIGJldHdlZW4gOCBhbmQgMTUi
KQorICAgICAgICBpZiBub3QgKGNsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgTm9uZSBvciA4IDw9
IGNsaWVudF9tYXhfd2luZG93X2JpdHMgPD0gMTUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiY2xpZW50X21heF93aW5kb3dfYml0cyBtdXN0IGJlIGJldHdlZW4gOCBhbmQgMTUiKQor
ICAgICAgICBpZiBjb21wcmVzc19zZXR0aW5ncyBpcyBub3QgTm9uZSBhbmQgIndiaXRzIiBpbiBj
b21wcmVzc19zZXR0aW5nczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAg
ICAgICAgICAgImNvbXByZXNzX3NldHRpbmdzIG11c3Qgbm90IGluY2x1ZGUgd2JpdHMsICIKKyAg
ICAgICAgICAgICAgICAic2V0IHNlcnZlcl9tYXhfd2luZG93X2JpdHMgaW5zdGVhZCIKKyAgICAg
ICAgICAgICkKKworICAgICAgICBzZWxmLnNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyID0gc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgc2VsZi5jbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlciA9IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgIHNlbGYuc2VydmVy
X21heF93aW5kb3dfYml0cyA9IHNlcnZlcl9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgc2VsZi5j
bGllbnRfbWF4X3dpbmRvd19iaXRzID0gY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICBz
ZWxmLmNvbXByZXNzX3NldHRpbmdzID0gY29tcHJlc3Nfc2V0dGluZ3MKKworICAgIGRlZiBwcm9j
ZXNzX3JlcXVlc3RfcGFyYW1zKAorICAgICAgICBzZWxmLAorICAgICAgICBwYXJhbXM6IFNlcXVl
bmNlW0V4dGVuc2lvblBhcmFtZXRlcl0sCisgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnM6IFNl
cXVlbmNlWyJFeHRlbnNpb24iXSwKKyAgICApIC0+IFR1cGxlW0xpc3RbRXh0ZW5zaW9uUGFyYW1l
dGVyXSwgUGVyTWVzc2FnZURlZmxhdGVdOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvY2VzcyBy
ZXF1ZXN0IHBhcmFtZXRlcnMuCisKKyAgICAgICAgUmV0dXJuIHJlc3BvbnNlIHBhcmFtcyBhbmQg
YW4gZXh0ZW5zaW9uIGluc3RhbmNlLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBhbnkob3Ro
ZXIubmFtZSA9PSBzZWxmLm5hbWUgZm9yIG90aGVyIGluIGFjY2VwdGVkX2V4dGVuc2lvbnMpOgor
ICAgICAgICAgICAgcmFpc2UgTmVnb3RpYXRpb25FcnJvcihmInNraXBwZWQgZHVwbGljYXRlIHtz
ZWxmLm5hbWV9IikKKworICAgICAgICAjIExvYWQgcmVxdWVzdCBwYXJhbWV0ZXJzIGluIGxvY2Fs
IHZhcmlhYmxlcy4KKyAgICAgICAgKAorICAgICAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIsCisgICAgICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciwKKyAgICAgICAg
ICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRv
d19iaXRzLAorICAgICAgICApID0gX2V4dHJhY3RfcGFyYW1ldGVycyhwYXJhbXMsIGlzX3NlcnZl
cj1UcnVlKQorCisgICAgICAgICMgQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFi
bGUgaW4gaW5zdGFuY2UgdmFyaWFibGVzLgorCisgICAgICAgICMgQWZ0ZXIgY29tcGFyaW5nIHRo
ZSByZXF1ZXN0IGFuZCB0aGUgY29uZmlndXJhdGlvbiwgdGhlIHJlc3BvbnNlIG11c3QKKyAgICAg
ICAgIyBiZSBhdmFpbGFibGUgaW4gdGhlIGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICAjIHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgICMKKyAgICAgICAgIyAgIENvbmZpZyAg
UmVxLiAgICBSZXNwLgorICAgICAgICAjICAgLS0tLS0tICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMgICBGYWxzZSAg
IEZhbHNlICAgRmFsc2UKKyAgICAgICAgIyAgIEZhbHNlICAgVHJ1ZSAgICBUcnVlCisgICAgICAg
ICMgICBUcnVlICAgIEZhbHNlICAgVHJ1ZSAtIG11c3QgY2hhbmdlIHZhbHVlIHRvIFRydWUKKyAg
ICAgICAgIyAgIFRydWUgICAgVHJ1ZSAgICBUcnVlCisKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlcjoKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9
IFRydWUKKworICAgICAgICAjIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyCisgICAgICAgICMK
KyAgICAgICAgIyAgIENvbmZpZyAgUmVxLiAgICBSZXNwLgorICAgICAgICAjICAgLS0tLS0tICAt
LS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgICAgICAgICMgICBGYWxzZSAgIEZhbHNlICAgRmFsc2UKKyAgICAgICAgIyAgIEZhbHNlICAg
VHJ1ZSAgICBUcnVlIChvciBGYWxzZSkKKyAgICAgICAgIyAgIFRydWUgICAgRmFsc2UgICBUcnVl
IC0gbXVzdCBjaGFuZ2UgdmFsdWUgdG8gVHJ1ZQorICAgICAgICAjICAgVHJ1ZSAgICBUcnVlICAg
IFRydWUgKG9yIEZhbHNlKQorCisgICAgICAgIGlmIHNlbGYuY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXI6CisgICAgICAgICAgICBpZiBub3QgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI6Cisg
ICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBUcnVlCisKKyAgICAg
ICAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzCisKKyAgICAgICAgIyAgIENvbmZpZyAgUmVxLiAg
ICBSZXNwLgorICAgICAgICAjICAgLS0tLS0tICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMgICBOb25lICAgIE5vbmUg
ICAgTm9uZQorICAgICAgICAjICAgTm9uZSAgICA44omkTeKJpDE1ICBNCisgICAgICAgICMgICA4
4omkTuKJpDE1ICBOb25lICAgIE4gLSBtdXN0IGNoYW5nZSB2YWx1ZQorICAgICAgICAjICAgOOKJ
pE7iiaQxNSAgOOKJpE3iiaROICAgTQorICAgICAgICAjICAgOOKJpE7iiaQxNSAgTjxN4omkMTUg
IE4gLSBtdXN0IGNoYW5nZSB2YWx1ZQorCisgICAgICAgIGlmIHNlbGYuc2VydmVyX21heF93aW5k
b3dfYml0cyBpcyBOb25lOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgc2VydmVyX21heF93aW5kb3dfYml0cyA9IHNlbGYuc2VydmVyX21heF93aW5kb3dfYml0cwor
ICAgICAgICAgICAgZWxpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID4gc2VsZi5zZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzOgorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBz
ZWxmLnNlcnZlcl9tYXhfd2luZG93X2JpdHMKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93
X2JpdHMKKworICAgICAgICAjICAgQ29uZmlnICBSZXEuICAgIFJlc3AuCisgICAgICAgICMgICAt
LS0tLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgICAgICAgIyAgIE5vbmUgICAgTm9uZSAgICBOb25lCisgICAgICAgICMgICBO
b25lICAgIFRydWUgICAgTm9uZSAtIG11c3QgY2hhbmdlIHZhbHVlCisgICAgICAgICMgICBOb25l
ICAgIDjiiaRN4omkMTUgIE0gKG9yIE5vbmUpCisgICAgICAgICMgICA44omkTuKJpDE1ICBOb25l
ICAgIEVycm9yIQorICAgICAgICAjICAgOOKJpE7iiaQxNSAgVHJ1ZSAgICBOIC0gbXVzdCBjaGFu
Z2UgdmFsdWUKKyAgICAgICAgIyAgIDjiiaRO4omkMTUgIDjiiaRN4omkTiAgIE0gKG9yIE5vbmUp
CisgICAgICAgICMgICA44omkTuKJpDE1ICBOPE3iiaQxNSAgTgorCisgICAgICAgIGlmIHNlbGYu
Y2xpZW50X21heF93aW5kb3dfYml0cyBpcyBOb25lOgorICAgICAgICAgICAgaWYgY2xpZW50X21h
eF93aW5kb3dfYml0cyBpcyBUcnVlOgorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93
X2JpdHMgPSBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMKKworICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBOb25lOgorICAgICAgICAgICAg
ICAgIHJhaXNlIE5lZ290aWF0aW9uRXJyb3IoInJlcXVpcmVkIGNsaWVudF9tYXhfd2luZG93X2Jp
dHMiKQorICAgICAgICAgICAgZWxpZiBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIFRydWU6Cisg
ICAgICAgICAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuY2xpZW50X21heF93
aW5kb3dfYml0cworICAgICAgICAgICAgZWxpZiBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMg
PCBjbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2lu
ZG93X2JpdHMgPSBzZWxmLmNsaWVudF9tYXhfd2luZG93X2JpdHMKKworICAgICAgICByZXR1cm4g
KAorICAgICAgICAgICAgX2J1aWxkX3BhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgc2VydmVy
X25vX2NvbnRleHRfdGFrZW92ZXIsCisgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXIsCisgICAgICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKKyAgICAg
ICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlKAorICAgICAgICAgICAgICAgIGNsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyLCAgIyByZW1vdGVfbm9fY29udGV4dF90YWtlb3ZlcgorICAgICAgICAgICAg
ICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLCAgIyBsb2NhbF9ub19jb250ZXh0X3Rha2Vv
dmVyCisgICAgICAgICAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyBvciAxNSwgICMgcmVt
b3RlX21heF93aW5kb3dfYml0cworICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2Jp
dHMgb3IgMTUsICAjIGxvY2FsX21heF93aW5kb3dfYml0cworICAgICAgICAgICAgICAgIHNlbGYu
Y29tcHJlc3Nfc2V0dGluZ3MsCisgICAgICAgICAgICApLAorICAgICAgICApCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvZnJhbWluZy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy9zcmMvd2Vic29ja2V0cy9mcmFtaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMjZlNThjZGJmYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL3NyYy93ZWJzb2NrZXRzL2ZyYW1pbmcucHkKQEAgLTAsMCArMSwzNDIgQEAKKyIiIgor
Om1vZDpgd2Vic29ja2V0cy5mcmFtaW5nYCByZWFkcyBhbmQgd3JpdGVzIFdlYlNvY2tldCBmcmFt
ZXMuCisKK0l0IGRlYWxzIHdpdGggYSBzaW5nbGUgZnJhbWUgYXQgYSB0aW1lLiBBbnl0aGluZyB0
aGF0IGRlcGVuZHMgb24gdGhlIHNlcXVlbmNlCitvZiBmcmFtZXMgaXMgaW1wbGVtZW50ZWQgaW4g
Om1vZDpgd2Vic29ja2V0cy5wcm90b2NvbGAuCisKK1NlZSBgc2VjdGlvbiA1IG9mIFJGQyA2NDU1
YF8uCisKKy4uIF9zZWN0aW9uIDUgb2YgUkZDIDY0NTU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUjc2VjdGlvbi01CisKKyIiIgorCitpbXBvcnQgaW8KK2ltcG9ydCByYW5kb20K
K2ltcG9ydCBzdHJ1Y3QKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIEF3YWl0YWJsZSwgQ2FsbGFi
bGUsIE5hbWVkVHVwbGUsIE9wdGlvbmFsLCBTZXF1ZW5jZSwgVHVwbGUKKworZnJvbSAuZXhjZXB0
aW9ucyBpbXBvcnQgUGF5bG9hZFRvb0JpZywgUHJvdG9jb2xFcnJvcgorZnJvbSAudHlwaW5nIGlt
cG9ydCBEYXRhCisKKwordHJ5OgorICAgIGZyb20gLnNwZWVkdXBzIGltcG9ydCBhcHBseV9tYXNr
CitleGNlcHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBmcm9tIC51dGls
cyBpbXBvcnQgYXBwbHlfbWFzaworCisKK19fYWxsX18gPSBbCisgICAgIkRBVEFfT1BDT0RFUyIs
CisgICAgIkNUUkxfT1BDT0RFUyIsCisgICAgIk9QX0NPTlQiLAorICAgICJPUF9URVhUIiwKKyAg
ICAiT1BfQklOQVJZIiwKKyAgICAiT1BfQ0xPU0UiLAorICAgICJPUF9QSU5HIiwKKyAgICAiT1Bf
UE9ORyIsCisgICAgIkZyYW1lIiwKKyAgICAicHJlcGFyZV9kYXRhIiwKKyAgICAiZW5jb2RlX2Rh
dGEiLAorICAgICJwYXJzZV9jbG9zZSIsCisgICAgInNlcmlhbGl6ZV9jbG9zZSIsCitdCisKK0RB
VEFfT1BDT0RFUyA9IE9QX0NPTlQsIE9QX1RFWFQsIE9QX0JJTkFSWSA9IDB4MDAsIDB4MDEsIDB4
MDIKK0NUUkxfT1BDT0RFUyA9IE9QX0NMT1NFLCBPUF9QSU5HLCBPUF9QT05HID0gMHgwOCwgMHgw
OSwgMHgwQQorCisjIENsb3NlIGNvZGUgdGhhdCBhcmUgYWxsb3dlZCBpbiBhIGNsb3NlIGZyYW1l
LgorIyBVc2luZyBhIGxpc3Qgb3B0aW1pemVzIGBjb2RlIGluIEVYVEVSTkFMX0NMT1NFX0NPREVT
YC4KK0VYVEVSTkFMX0NMT1NFX0NPREVTID0gWzEwMDAsIDEwMDEsIDEwMDIsIDEwMDMsIDEwMDcs
IDEwMDgsIDEwMDksIDEwMTAsIDEwMTFdCisKKworIyBDb25zaWRlciBjb252ZXJ0aW5nIHRvIGEg
ZGF0YWNsYXNzIHdoZW4gZHJvcHBpbmcgc3VwcG9ydCBmb3IgUHl0aG9uIDwgMy43LgorCisKK2Ns
YXNzIEZyYW1lKE5hbWVkVHVwbGUpOgorICAgICIiIgorICAgIFdlYlNvY2tldCBmcmFtZS4KKwor
ICAgIDpwYXJhbSBib29sIGZpbjogRklOIGJpdAorICAgIDpwYXJhbSBib29sIHJzdjE6IFJTVjEg
Yml0CisgICAgOnBhcmFtIGJvb2wgcnN2MjogUlNWMiBiaXQKKyAgICA6cGFyYW0gYm9vbCByc3Yz
OiBSU1YzIGJpdAorICAgIDpwYXJhbSBpbnQgb3Bjb2RlOiBvcGNvZGUKKyAgICA6cGFyYW0gYnl0
ZXMgZGF0YTogcGF5bG9hZCBkYXRhCisKKyAgICBPbmx5IHRoZXNlIGZpZWxkcyBhcmUgbmVlZGVk
LiBUaGUgTUFTSyBiaXQsIHBheWxvYWQgbGVuZ3RoIGFuZCBtYXNraW5nLWtleQorICAgIGFyZSBo
YW5kbGVkIG9uIHRoZSBmbHkgYnkgOm1ldGg6YHJlYWRgIGFuZCA6bWV0aDpgd3JpdGVgLgorCisg
ICAgIiIiCisKKyAgICBmaW46IGJvb2wKKyAgICBvcGNvZGU6IGludAorICAgIGRhdGE6IGJ5dGVz
CisgICAgcnN2MTogYm9vbCA9IEZhbHNlCisgICAgcnN2MjogYm9vbCA9IEZhbHNlCisgICAgcnN2
MzogYm9vbCA9IEZhbHNlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBhc3luYyBkZWYgcmVhZCgK
KyAgICAgICAgY2xzLAorICAgICAgICByZWFkZXI6IENhbGxhYmxlW1tpbnRdLCBBd2FpdGFibGVb
Ynl0ZXNdXSwKKyAgICAgICAgKiwKKyAgICAgICAgbWFzazogYm9vbCwKKyAgICAgICAgbWF4X3Np
emU6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBleHRlbnNpb25zOiBPcHRpb25hbFtT
ZXF1ZW5jZVsid2Vic29ja2V0cy5leHRlbnNpb25zLmJhc2UuRXh0ZW5zaW9uIl1dID0gTm9uZSwK
KyAgICApIC0+ICJGcmFtZSI6CisgICAgICAgICIiIgorICAgICAgICBSZWFkIGEgV2ViU29ja2V0
IGZyYW1lLgorCisgICAgICAgIDpwYXJhbSByZWFkZXI6IGNvcm91dGluZSB0aGF0IHJlYWRzIGV4
YWN0bHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YKKyAgICAgICAgICAgIGJ5dGVzLCB1bmxlc3Mg
dGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQKKyAgICAgICAgOnBhcmFtIG1hc2s6IHdoZXRoZXIg
dGhlIGZyYW1lIHNob3VsZCBiZSBtYXNrZWQgaS5lLiB3aGV0aGVyIHRoZSByZWFkCisgICAgICAg
ICAgICBoYXBwZW5zIG9uIHRoZSBzZXJ2ZXIgc2lkZQorICAgICAgICA6cGFyYW0gbWF4X3NpemU6
IG1heGltdW0gcGF5bG9hZCBzaXplIGluIGJ5dGVzCisgICAgICAgIDpwYXJhbSBleHRlbnNpb25z
OiBsaXN0IG9mIGNsYXNzZXMgd2l0aCBhIGBgZGVjb2RlKClgYCBtZXRob2QgdGhhdAorICAgICAg
ICAgICAgdHJhbnNmb3JtcyB0aGUgZnJhbWUgYW5kIHJldHVybiBhIG5ldyBmcmFtZTsgZXh0ZW5z
aW9ucyBhcmUgYXBwbGllZAorICAgICAgICAgICAgaW4gcmV2ZXJzZSBvcmRlcgorICAgICAgICA6
cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuUGF5bG9hZFRvb0JpZzogaWYgdGhlIGZyYW1l
IGV4Y2VlZHMKKyAgICAgICAgICAgIGBgbWF4X3NpemVgYAorICAgICAgICA6cmFpc2VzIH53ZWJz
b2NrZXRzLmV4Y2VwdGlvbnMuUHJvdG9jb2xFcnJvcjogaWYgdGhlIGZyYW1lCisgICAgICAgICAg
ICBjb250YWlucyBpbmNvcnJlY3QgdmFsdWVzCisKKyAgICAgICAgIiIiCisgICAgICAgICMgUmVh
ZCB0aGUgaGVhZGVyLgorICAgICAgICBkYXRhID0gYXdhaXQgcmVhZGVyKDIpCisgICAgICAgIGhl
YWQxLCBoZWFkMiA9IHN0cnVjdC51bnBhY2soIiFCQiIsIGRhdGEpCisKKyAgICAgICAgIyBXaGls
ZSBub3QgUHl0aG9uaWMsIHRoaXMgaXMgbWFyZ2luYWxseSBmYXN0ZXIgdGhhbiBjYWxsaW5nIGJv
b2woKS4KKyAgICAgICAgZmluID0gVHJ1ZSBpZiBoZWFkMSAmIDBiMTAwMDAwMDAgZWxzZSBGYWxz
ZQorICAgICAgICByc3YxID0gVHJ1ZSBpZiBoZWFkMSAmIDBiMDEwMDAwMDAgZWxzZSBGYWxzZQor
ICAgICAgICByc3YyID0gVHJ1ZSBpZiBoZWFkMSAmIDBiMDAxMDAwMDAgZWxzZSBGYWxzZQorICAg
ICAgICByc3YzID0gVHJ1ZSBpZiBoZWFkMSAmIDBiMDAwMTAwMDAgZWxzZSBGYWxzZQorICAgICAg
ICBvcGNvZGUgPSBoZWFkMSAmIDBiMDAwMDExMTEKKworICAgICAgICBpZiAoVHJ1ZSBpZiBoZWFk
MiAmIDBiMTAwMDAwMDAgZWxzZSBGYWxzZSkgIT0gbWFzazoKKyAgICAgICAgICAgIHJhaXNlIFBy
b3RvY29sRXJyb3IoImluY29ycmVjdCBtYXNraW5nIikKKworICAgICAgICBsZW5ndGggPSBoZWFk
MiAmIDBiMDExMTExMTEKKyAgICAgICAgaWYgbGVuZ3RoID09IDEyNjoKKyAgICAgICAgICAgIGRh
dGEgPSBhd2FpdCByZWFkZXIoMikKKyAgICAgICAgICAgIChsZW5ndGgsKSA9IHN0cnVjdC51bnBh
Y2soIiFIIiwgZGF0YSkKKyAgICAgICAgZWxpZiBsZW5ndGggPT0gMTI3OgorICAgICAgICAgICAg
ZGF0YSA9IGF3YWl0IHJlYWRlcig4KQorICAgICAgICAgICAgKGxlbmd0aCwpID0gc3RydWN0LnVu
cGFjaygiIVEiLCBkYXRhKQorICAgICAgICBpZiBtYXhfc2l6ZSBpcyBub3QgTm9uZSBhbmQgbGVu
Z3RoID4gbWF4X3NpemU6CisgICAgICAgICAgICByYWlzZSBQYXlsb2FkVG9vQmlnKAorICAgICAg
ICAgICAgICAgIGYicGF5bG9hZCBsZW5ndGggZXhjZWVkcyBzaXplIGxpbWl0ICh7bGVuZ3RofSA+
IHttYXhfc2l6ZX0gYnl0ZXMpIgorICAgICAgICAgICAgKQorICAgICAgICBpZiBtYXNrOgorICAg
ICAgICAgICAgbWFza19iaXRzID0gYXdhaXQgcmVhZGVyKDQpCisKKyAgICAgICAgIyBSZWFkIHRo
ZSBkYXRhLgorICAgICAgICBkYXRhID0gYXdhaXQgcmVhZGVyKGxlbmd0aCkKKyAgICAgICAgaWYg
bWFzazoKKyAgICAgICAgICAgIGRhdGEgPSBhcHBseV9tYXNrKGRhdGEsIG1hc2tfYml0cykKKwor
ICAgICAgICBmcmFtZSA9IGNscyhmaW4sIG9wY29kZSwgZGF0YSwgcnN2MSwgcnN2MiwgcnN2MykK
KworICAgICAgICBpZiBleHRlbnNpb25zIGlzIE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25z
ID0gW10KKyAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiByZXZlcnNlZChleHRlbnNpb25zKToKKyAg
ICAgICAgICAgIGZyYW1lID0gZXh0ZW5zaW9uLmRlY29kZShmcmFtZSwgbWF4X3NpemU9bWF4X3Np
emUpCisKKyAgICAgICAgZnJhbWUuY2hlY2soKQorCisgICAgICAgIHJldHVybiBmcmFtZQorCisg
ICAgZGVmIHdyaXRlKAorICAgICAgICBmcmFtZSwKKyAgICAgICAgd3JpdGU6IENhbGxhYmxlW1ti
eXRlc10sIEFueV0sCisgICAgICAgICosCisgICAgICAgIG1hc2s6IGJvb2wsCisgICAgICAgIGV4
dGVuc2lvbnM6IE9wdGlvbmFsW1NlcXVlbmNlWyJ3ZWJzb2NrZXRzLmV4dGVuc2lvbnMuYmFzZS5F
eHRlbnNpb24iXV0gPSBOb25lLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IFdyaXRlIGEgV2ViU29ja2V0IGZyYW1lLgorCisgICAgICAgIDpwYXJhbSBmcmFtZTogZnJhbWUg
dG8gd3JpdGUKKyAgICAgICAgOnBhcmFtIHdyaXRlOiBmdW5jdGlvbiB0aGF0IHdyaXRlcyBieXRl
cworICAgICAgICA6cGFyYW0gbWFzazogd2hldGhlciB0aGUgZnJhbWUgc2hvdWxkIGJlIG1hc2tl
ZCBpLmUuIHdoZXRoZXIgdGhlIHdyaXRlCisgICAgICAgICAgICBoYXBwZW5zIG9uIHRoZSBjbGll
bnQgc2lkZQorICAgICAgICA6cGFyYW0gZXh0ZW5zaW9uczogbGlzdCBvZiBjbGFzc2VzIHdpdGgg
YW4gYGBlbmNvZGUoKWBgIG1ldGhvZCB0aGF0CisgICAgICAgICAgICB0cmFuc2Zvcm0gdGhlIGZy
YW1lIGFuZCByZXR1cm4gYSBuZXcgZnJhbWU7IGV4dGVuc2lvbnMgYXJlIGFwcGxpZWQKKyAgICAg
ICAgICAgIGluIG9yZGVyCisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5Q
cm90b2NvbEVycm9yOiBpZiB0aGUgZnJhbWUKKyAgICAgICAgICAgIGNvbnRhaW5zIGluY29ycmVj
dCB2YWx1ZXMKKworICAgICAgICAiIiIKKyAgICAgICAgIyBUaGUgZmlyc3QgcGFyYW1ldGVyIGlz
IGNhbGxlZCBgZnJhbWVgIHJhdGhlciB0aGFuIGBzZWxmYCwKKyAgICAgICAgIyBidXQgaXQncyB0
aGUgaW5zdGFuY2Ugb2YgY2xhc3MgdG8gd2hpY2ggdGhpcyBtZXRob2QgaXMgYm91bmQuCisKKyAg
ICAgICAgZnJhbWUuY2hlY2soKQorCisgICAgICAgIGlmIGV4dGVuc2lvbnMgaXMgTm9uZToKKyAg
ICAgICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVu
c2lvbnM6CisgICAgICAgICAgICBmcmFtZSA9IGV4dGVuc2lvbi5lbmNvZGUoZnJhbWUpCisKKyAg
ICAgICAgb3V0cHV0ID0gaW8uQnl0ZXNJTygpCisKKyAgICAgICAgIyBQcmVwYXJlIHRoZSBoZWFk
ZXIuCisgICAgICAgIGhlYWQxID0gKAorICAgICAgICAgICAgKDBiMTAwMDAwMDAgaWYgZnJhbWUu
ZmluIGVsc2UgMCkKKyAgICAgICAgICAgIHwgKDBiMDEwMDAwMDAgaWYgZnJhbWUucnN2MSBlbHNl
IDApCisgICAgICAgICAgICB8ICgwYjAwMTAwMDAwIGlmIGZyYW1lLnJzdjIgZWxzZSAwKQorICAg
ICAgICAgICAgfCAoMGIwMDAxMDAwMCBpZiBmcmFtZS5yc3YzIGVsc2UgMCkKKyAgICAgICAgICAg
IHwgZnJhbWUub3Bjb2RlCisgICAgICAgICkKKworICAgICAgICBoZWFkMiA9IDBiMTAwMDAwMDAg
aWYgbWFzayBlbHNlIDAKKworICAgICAgICBsZW5ndGggPSBsZW4oZnJhbWUuZGF0YSkKKyAgICAg
ICAgaWYgbGVuZ3RoIDwgMTI2OgorICAgICAgICAgICAgb3V0cHV0LndyaXRlKHN0cnVjdC5wYWNr
KCIhQkIiLCBoZWFkMSwgaGVhZDIgfCBsZW5ndGgpKQorICAgICAgICBlbGlmIGxlbmd0aCA8IDY1
NTM2OgorICAgICAgICAgICAgb3V0cHV0LndyaXRlKHN0cnVjdC5wYWNrKCIhQkJIIiwgaGVhZDEs
IGhlYWQyIHwgMTI2LCBsZW5ndGgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3V0cHV0
LndyaXRlKHN0cnVjdC5wYWNrKCIhQkJRIiwgaGVhZDEsIGhlYWQyIHwgMTI3LCBsZW5ndGgpKQor
CisgICAgICAgIGlmIG1hc2s6CisgICAgICAgICAgICBtYXNrX2JpdHMgPSBzdHJ1Y3QucGFjaygi
IUkiLCByYW5kb20uZ2V0cmFuZGJpdHMoMzIpKQorICAgICAgICAgICAgb3V0cHV0LndyaXRlKG1h
c2tfYml0cykKKworICAgICAgICAjIFByZXBhcmUgdGhlIGRhdGEuCisgICAgICAgIGlmIG1hc2s6
CisgICAgICAgICAgICBkYXRhID0gYXBwbHlfbWFzayhmcmFtZS5kYXRhLCBtYXNrX2JpdHMpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gZnJhbWUuZGF0YQorICAgICAgICBvdXRw
dXQud3JpdGUoZGF0YSkKKworICAgICAgICAjIFNlbmQgdGhlIGZyYW1lLgorCisgICAgICAgICMg
VGhlIGZyYW1lIGlzIHdyaXR0ZW4gaW4gYSBzaW5nbGUgY2FsbCB0byB3cml0ZSBpbiBvcmRlciB0
byBwcmV2ZW50CisgICAgICAgICMgVENQIGZyYWdtZW50YXRpb24uIFNlZSAjNjggZm9yIGRldGFp
bHMuIFRoaXMgYWxzbyBtYWtlcyBpdCBzYWZlIHRvCisgICAgICAgICMgc2VuZCBmcmFtZXMgY29u
Y3VycmVudGx5IGZyb20gbXVsdGlwbGUgY29yb3V0aW5lcy4KKyAgICAgICAgd3JpdGUob3V0cHV0
LmdldHZhbHVlKCkpCisKKyAgICBkZWYgY2hlY2soZnJhbWUpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBDaGVjayB0aGF0IHJlc2VydmVkIGJpdHMgYW5kIG9wY29kZSBoYXZlIGFjY2Vw
dGFibGUgdmFsdWVzLgorCisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5Q
cm90b2NvbEVycm9yOiBpZiBhIHJlc2VydmVkCisgICAgICAgICAgICBiaXQgb3IgdGhlIG9wY29k
ZSBpcyBpbnZhbGlkCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIGZpcnN0IHBhcmFtZXRl
ciBpcyBjYWxsZWQgYGZyYW1lYCByYXRoZXIgdGhhbiBgc2VsZmAsCisgICAgICAgICMgYnV0IGl0
J3MgdGhlIGluc3RhbmNlIG9mIGNsYXNzIHRvIHdoaWNoIHRoaXMgbWV0aG9kIGlzIGJvdW5kLgor
CisgICAgICAgIGlmIGZyYW1lLnJzdjEgb3IgZnJhbWUucnN2MiBvciBmcmFtZS5yc3YzOgorICAg
ICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigicmVzZXJ2ZWQgYml0cyBtdXN0IGJlIDAiKQor
CisgICAgICAgIGlmIGZyYW1lLm9wY29kZSBpbiBEQVRBX09QQ09ERVM6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZWxpZiBmcmFtZS5vcGNvZGUgaW4gQ1RSTF9PUENPREVTOgorICAgICAg
ICAgICAgaWYgbGVuKGZyYW1lLmRhdGEpID4gMTI1OgorICAgICAgICAgICAgICAgIHJhaXNlIFBy
b3RvY29sRXJyb3IoImNvbnRyb2wgZnJhbWUgdG9vIGxvbmciKQorICAgICAgICAgICAgaWYgbm90
IGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICByYWlzZSBQcm90b2NvbEVycm9yKCJmcmFnbWVu
dGVkIGNvbnRyb2wgZnJhbWUiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUHJv
dG9jb2xFcnJvcihmImludmFsaWQgb3Bjb2RlOiB7ZnJhbWUub3Bjb2RlfSIpCisKKworZGVmIHBy
ZXBhcmVfZGF0YShkYXRhOiBEYXRhKSAtPiBUdXBsZVtpbnQsIGJ5dGVzXToKKyAgICAiIiIKKyAg
ICBDb252ZXJ0IGEgc3RyaW5nIG9yIGJ5dGUtbGlrZSBvYmplY3QgdG8gYW4gb3Bjb2RlIGFuZCBh
IGJ5dGVzLWxpa2Ugb2JqZWN0LgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCBmb3Ig
ZGF0YSBmcmFtZXMuCisKKyAgICBJZiBgYGRhdGFgYCBpcyBhIDpjbGFzczpgc3RyYCwgcmV0dXJu
IGBgT1BfVEVYVGBgIGFuZCBhIDpjbGFzczpgYnl0ZXNgCisgICAgb2JqZWN0IGVuY29kaW5nIGBg
ZGF0YWBgIGluIFVURi04LgorCisgICAgSWYgYGBkYXRhYGAgaXMgYSBieXRlcy1saWtlIG9iamVj
dCwgcmV0dXJuIGBgT1BfQklOQVJZYGAgYW5kIGEgYnl0ZXMtbGlrZQorICAgIG9iamVjdC4KKwor
ICAgIDpyYWlzZXMgVHlwZUVycm9yOiBpZiBgYGRhdGFgYCBkb2Vzbid0IGhhdmUgYSBzdXBwb3J0
ZWQgdHlwZQorCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgorICAgICAg
ICByZXR1cm4gT1BfVEVYVCwgZGF0YS5lbmNvZGUoInV0Zi04IikKKyAgICBlbGlmIGlzaW5zdGFu
Y2UoZGF0YSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKKyAgICAgICAgcmV0dXJuIE9QX0JJTkFSWSwg
ZGF0YQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhLCBtZW1vcnl2aWV3KToKKyAgICAgICAgaWYg
ZGF0YS5jX2NvbnRpZ3VvdXM6CisgICAgICAgICAgICByZXR1cm4gT1BfQklOQVJZLCBkYXRhCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gT1BfQklOQVJZLCBkYXRhLnRvYnl0ZXMo
KQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGJ5dGVz
LWxpa2Ugb3Igc3RyIikKKworCitkZWYgZW5jb2RlX2RhdGEoZGF0YTogRGF0YSkgLT4gYnl0ZXM6
CisgICAgIiIiCisgICAgQ29udmVydCBhIHN0cmluZyBvciBieXRlLWxpa2Ugb2JqZWN0IHRvIGJ5
dGVzLgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCBmb3IgcGluZyBhbmQgcG9uZyBm
cmFtZXMuCisKKyAgICBJZiBgYGRhdGFgYCBpcyBhIDpjbGFzczpgc3RyYCwgcmV0dXJuIGEgOmNs
YXNzOmBieXRlc2Agb2JqZWN0IGVuY29kaW5nCisgICAgYGBkYXRhYGAgaW4gVVRGLTguCisKKyAg
ICBJZiBgYGRhdGFgYCBpcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCByZXR1cm4gYSA6Y2xhc3M6YGJ5
dGVzYCBvYmplY3QuCisKKyAgICA6cmFpc2VzIFR5cGVFcnJvcjogaWYgYGBkYXRhYGAgZG9lc24n
dCBoYXZlIGEgc3VwcG9ydGVkIHR5cGUKKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UoZGF0
YSwgc3RyKToKKyAgICAgICAgcmV0dXJuIGRhdGEuZW5jb2RlKCJ1dGYtOCIpCisgICAgZWxpZiBp
c2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgIHJldHVybiBieXRl
cyhkYXRhKQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhLCBtZW1vcnl2aWV3KToKKyAgICAgICAg
cmV0dXJuIGRhdGEudG9ieXRlcygpCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9y
KCJkYXRhIG11c3QgYmUgYnl0ZXMtbGlrZSBvciBzdHIiKQorCisKK2RlZiBwYXJzZV9jbG9zZShk
YXRhOiBieXRlcykgLT4gVHVwbGVbaW50LCBzdHJdOgorICAgICIiIgorICAgIFBhcnNlIHRoZSBw
YXlsb2FkIGZyb20gYSBjbG9zZSBmcmFtZS4KKworICAgIFJldHVybiBgYChjb2RlLCByZWFzb24p
YGAuCisKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuUHJvdG9jb2xFcnJvcjog
aWYgZGF0YSBpcyBpbGwtZm9ybWVkCisgICAgOnJhaXNlcyBVbmljb2RlRGVjb2RlRXJyb3I6IGlm
IHRoZSByZWFzb24gaXNuJ3QgdmFsaWQgVVRGLTgKKworICAgICIiIgorICAgIGxlbmd0aCA9IGxl
bihkYXRhKQorICAgIGlmIGxlbmd0aCA+PSAyOgorICAgICAgICAoY29kZSwpID0gc3RydWN0LnVu
cGFjaygiIUgiLCBkYXRhWzoyXSkKKyAgICAgICAgY2hlY2tfY2xvc2UoY29kZSkKKyAgICAgICAg
cmVhc29uID0gZGF0YVsyOl0uZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIHJldHVybiBjb2RlLCBy
ZWFzb24KKyAgICBlbGlmIGxlbmd0aCA9PSAwOgorICAgICAgICByZXR1cm4gMTAwNSwgIiIKKyAg
ICBlbHNlOgorICAgICAgICBhc3NlcnQgbGVuZ3RoID09IDEKKyAgICAgICAgcmFpc2UgUHJvdG9j
b2xFcnJvcigiY2xvc2UgZnJhbWUgdG9vIHNob3J0IikKKworCitkZWYgc2VyaWFsaXplX2Nsb3Nl
KGNvZGU6IGludCwgcmVhc29uOiBzdHIpIC0+IGJ5dGVzOgorICAgICIiIgorICAgIFNlcmlhbGl6
ZSB0aGUgcGF5bG9hZCBmb3IgYSBjbG9zZSBmcmFtZS4KKworICAgIFRoaXMgaXMgdGhlIHJldmVy
c2Ugb2YgOmZ1bmM6YHBhcnNlX2Nsb3NlYC4KKworICAgICIiIgorICAgIGNoZWNrX2Nsb3NlKGNv
ZGUpCisgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCIhSCIsIGNvZGUpICsgcmVhc29uLmVuY29kZSgi
dXRmLTgiKQorCisKK2RlZiBjaGVja19jbG9zZShjb2RlOiBpbnQpIC0+IE5vbmU6CisgICAgIiIi
CisgICAgQ2hlY2sgdGhhdCB0aGUgY2xvc2UgY29kZSBoYXMgYW4gYWNjZXB0YWJsZSB2YWx1ZSBm
b3IgYSBjbG9zZSBmcmFtZS4KKworICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5Q
cm90b2NvbEVycm9yOiBpZiB0aGUgY2xvc2UgY29kZQorICAgICAgICBpcyBpbnZhbGlkCisKKyAg
ICAiIiIKKyAgICBpZiBub3QgKGNvZGUgaW4gRVhURVJOQUxfQ0xPU0VfQ09ERVMgb3IgMzAwMCA8
PSBjb2RlIDwgNTAwMCk6CisgICAgICAgIHJhaXNlIFByb3RvY29sRXJyb3IoImludmFsaWQgc3Rh
dHVzIGNvZGUiKQorCisKKyMgYXQgdGhlIGJvdHRvbSB0byBhbGxvdyBjaXJjdWxhciBpbXBvcnQs
IGJlY2F1c2UgRXh0ZW5zaW9uIGRlcGVuZHMgb24gRnJhbWUKK2ltcG9ydCB3ZWJzb2NrZXRzLmV4
dGVuc2lvbnMuYmFzZSAgIyBpc29ydDpza2lwICMgbm9xYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJz
b2NrZXRzL3NyYy93ZWJzb2NrZXRzL2hhbmRzaGFrZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMv
d2Vic29ja2V0cy9oYW5kc2hha2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45YmZlMjc3NTRmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
c3JjL3dlYnNvY2tldHMvaGFuZHNoYWtlLnB5CkBAIC0wLDAgKzEsMTg1IEBACisiIiIKKzptb2Q6
YHdlYnNvY2tldHMuaGFuZHNoYWtlYCBwcm92aWRlcyBoZWxwZXJzIGZvciB0aGUgV2ViU29ja2V0
IGhhbmRzaGFrZS4KKworU2VlIGBzZWN0aW9uIDQgb2YgUkZDIDY0NTVgXy4KKworLi4gX3NlY3Rp
b24gNCBvZiBSRkMgNjQ1NTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0
aW9uLTQKKworU29tZSBjaGVja3MgY2Fubm90IGJlIHBlcmZvcm1lZCBiZWNhdXNlIHRoZXkgZGVw
ZW5kIHRvbyBtdWNoIG9uIHRoZQorY29udGV4dDsgaW5zdGVhZCwgdGhleSdyZSBkb2N1bWVudGVk
IGJlbG93LgorCitUbyBhY2NlcHQgYSBjb25uZWN0aW9uLCBhIHNlcnZlciBtdXN0OgorCistIFJl
YWQgdGhlIHJlcXVlc3QsIGNoZWNrIHRoYXQgdGhlIG1ldGhvZCBpcyBHRVQsIGFuZCBjaGVjayB0
aGUgaGVhZGVycyB3aXRoCisgIDpmdW5jOmBjaGVja19yZXF1ZXN0YCwKKy0gU2VuZCBhIDEwMSBy
ZXNwb25zZSB0byB0aGUgY2xpZW50IHdpdGggdGhlIGhlYWRlcnMgY3JlYXRlZCBieQorICA6ZnVu
YzpgYnVpbGRfcmVzcG9uc2VgIGlmIHRoZSByZXF1ZXN0IGlzIHZhbGlkOyBvdGhlcndpc2UsIHNl
bmQgYW4KKyAgYXBwcm9wcmlhdGUgSFRUUCBlcnJvciBjb2RlLgorCitUbyBvcGVuIGEgY29ubmVj
dGlvbiwgYSBjbGllbnQgbXVzdDoKKworLSBTZW5kIGEgR0VUIHJlcXVlc3QgdG8gdGhlIHNlcnZl
ciB3aXRoIHRoZSBoZWFkZXJzIGNyZWF0ZWQgYnkKKyAgOmZ1bmM6YGJ1aWxkX3JlcXVlc3RgLAor
LSBSZWFkIHRoZSByZXNwb25zZSwgY2hlY2sgdGhhdCB0aGUgc3RhdHVzIGNvZGUgaXMgMTAxLCBh
bmQgY2hlY2sgdGhlIGhlYWRlcnMKKyAgd2l0aCA6ZnVuYzpgY2hlY2tfcmVzcG9uc2VgLgorCisi
IiIKKworaW1wb3J0IGJhc2U2NAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgaGFzaGxpYgoraW1w
b3J0IHJhbmRvbQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKworZnJvbSAuZXhjZXB0aW9ucyBp
bXBvcnQgSW52YWxpZEhlYWRlciwgSW52YWxpZEhlYWRlclZhbHVlLCBJbnZhbGlkVXBncmFkZQor
ZnJvbSAuaGVhZGVycyBpbXBvcnQgQ29ubmVjdGlvbk9wdGlvbiwgVXBncmFkZVByb3RvY29sLCBw
YXJzZV9jb25uZWN0aW9uLCBwYXJzZV91cGdyYWRlCitmcm9tIC5odHRwIGltcG9ydCBIZWFkZXJz
LCBNdWx0aXBsZVZhbHVlc0Vycm9yCisKKworX19hbGxfXyA9IFsiYnVpbGRfcmVxdWVzdCIsICJj
aGVja19yZXF1ZXN0IiwgImJ1aWxkX3Jlc3BvbnNlIiwgImNoZWNrX3Jlc3BvbnNlIl0KKworR1VJ
RCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiCisKKworZGVmIGJ1aWxk
X3JlcXVlc3QoaGVhZGVyczogSGVhZGVycykgLT4gc3RyOgorICAgICIiIgorICAgIEJ1aWxkIGEg
aGFuZHNoYWtlIHJlcXVlc3QgdG8gc2VuZCB0byB0aGUgc2VydmVyLgorCisgICAgVXBkYXRlIHJl
cXVlc3QgaGVhZGVycyBwYXNzZWQgaW4gYXJndW1lbnQuCisKKyAgICA6cGFyYW0gaGVhZGVyczog
cmVxdWVzdCBoZWFkZXJzCisgICAgOnJldHVybnM6IGBga2V5YGAgd2hpY2ggbXVzdCBiZSBwYXNz
ZWQgdG8gOmZ1bmM6YGNoZWNrX3Jlc3BvbnNlYAorCisgICAgIiIiCisgICAgcmF3X2tleSA9IGJ5
dGVzKHJhbmRvbS5nZXRyYW5kYml0cyg4KSBmb3IgXyBpbiByYW5nZSgxNikpCisgICAga2V5ID0g
YmFzZTY0LmI2NGVuY29kZShyYXdfa2V5KS5kZWNvZGUoKQorICAgIGhlYWRlcnNbIlVwZ3JhZGUi
XSA9ICJ3ZWJzb2NrZXQiCisgICAgaGVhZGVyc1siQ29ubmVjdGlvbiJdID0gIlVwZ3JhZGUiCisg
ICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXSA9IGtleQorICAgIGhlYWRlcnNbIlNlYy1X
ZWJTb2NrZXQtVmVyc2lvbiJdID0gIjEzIgorICAgIHJldHVybiBrZXkKKworCitkZWYgY2hlY2tf
cmVxdWVzdChoZWFkZXJzOiBIZWFkZXJzKSAtPiBzdHI6CisgICAgIiIiCisgICAgQ2hlY2sgYSBo
YW5kc2hha2UgcmVxdWVzdCByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnQuCisKKyAgICBUaGlzIGZ1
bmN0aW9uIGRvZXNuJ3QgdmVyaWZ5IHRoYXQgdGhlIHJlcXVlc3QgaXMgYW4gSFRUUC8xLjEgb3Ig
aGlnaGVyIEdFVAorICAgIHJlcXVlc3QgYW5kIGRvZXNuJ3QgcGVyZm9ybSBgYEhvc3RgYCBhbmQg
YGBPcmlnaW5gYCBjaGVja3MuIFRoZXNlIGNvbnRyb2xzCisgICAgYXJlIHVzdWFsbHkgcGVyZm9y
bWVkIGVhcmxpZXIgaW4gdGhlIEhUVFAgcmVxdWVzdCBoYW5kbGluZyBjb2RlLiBUaGV5J3JlCisg
ICAgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisKKyAgICA6cGFyYW0gaGVhZGVy
czogcmVxdWVzdCBoZWFkZXJzCisgICAgOnJldHVybnM6IGBga2V5YGAgd2hpY2ggbXVzdCBiZSBw
YXNzZWQgdG8gOmZ1bmM6YGJ1aWxkX3Jlc3BvbnNlYAorICAgIDpyYWlzZXMgfndlYnNvY2tldHMu
ZXhjZXB0aW9ucy5JbnZhbGlkSGFuZHNoYWtlOiBpZiB0aGUgaGFuZHNoYWtlIHJlcXVlc3QKKyAg
ICAgICAgaXMgaW52YWxpZDsgdGhlbiB0aGUgc2VydmVyIG11c3QgcmV0dXJuIDQwMCBCYWQgUmVx
dWVzdCBlcnJvcgorCisgICAgIiIiCisgICAgY29ubmVjdGlvbjogTGlzdFtDb25uZWN0aW9uT3B0
aW9uXSA9IHN1bSgKKyAgICAgICAgW3BhcnNlX2Nvbm5lY3Rpb24odmFsdWUpIGZvciB2YWx1ZSBp
biBoZWFkZXJzLmdldF9hbGwoIkNvbm5lY3Rpb24iKV0sIFtdCisgICAgKQorCisgICAgaWYgbm90
IGFueSh2YWx1ZS5sb3dlcigpID09ICJ1cGdyYWRlIiBmb3IgdmFsdWUgaW4gY29ubmVjdGlvbik6
CisgICAgICAgIHJhaXNlIEludmFsaWRVcGdyYWRlKCJDb25uZWN0aW9uIiwgIiwgIi5qb2luKGNv
bm5lY3Rpb24pKQorCisgICAgdXBncmFkZTogTGlzdFtVcGdyYWRlUHJvdG9jb2xdID0gc3VtKAor
ICAgICAgICBbcGFyc2VfdXBncmFkZSh2YWx1ZSkgZm9yIHZhbHVlIGluIGhlYWRlcnMuZ2V0X2Fs
bCgiVXBncmFkZSIpXSwgW10KKyAgICApCisKKyAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bm9uLXN0cmljdCBpbXBsZW1lbnRhdGlvbnMsIGlnbm9yZSBjYXNlIHdoZW4KKyAgICAjIGNoZWNr
aW5nIHRoZSBVcGdyYWRlIGhlYWRlci4gSXQncyBzdXBwb3NlZCB0byBiZSAnV2ViU29ja2V0Jy4K
KyAgICBpZiBub3QgKGxlbih1cGdyYWRlKSA9PSAxIGFuZCB1cGdyYWRlWzBdLmxvd2VyKCkgPT0g
IndlYnNvY2tldCIpOgorICAgICAgICByYWlzZSBJbnZhbGlkVXBncmFkZSgiVXBncmFkZSIsICIs
ICIuam9pbih1cGdyYWRlKSkKKworICAgIHRyeToKKyAgICAgICAgc193X2tleSA9IGhlYWRlcnNb
IlNlYy1XZWJTb2NrZXQtS2V5Il0KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJhaXNl
IEludmFsaWRIZWFkZXIoIlNlYy1XZWJTb2NrZXQtS2V5IikKKyAgICBleGNlcHQgTXVsdGlwbGVW
YWx1ZXNFcnJvcjoKKyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlcigKKyAgICAgICAgICAgICJT
ZWMtV2ViU29ja2V0LUtleSIsICJtb3JlIHRoYW4gb25lIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRl
ciBmb3VuZCIKKyAgICAgICAgKQorCisgICAgdHJ5OgorICAgICAgICByYXdfa2V5ID0gYmFzZTY0
LmI2NGRlY29kZShzX3dfa2V5LmVuY29kZSgpLCB2YWxpZGF0ZT1UcnVlKQorICAgIGV4Y2VwdCBi
aW5hc2NpaS5FcnJvcjoKKyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlclZhbHVlKCJTZWMtV2Vi
U29ja2V0LUtleSIsIHNfd19rZXkpCisgICAgaWYgbGVuKHJhd19rZXkpICE9IDE2OgorICAgICAg
ICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoIlNlYy1XZWJTb2NrZXQtS2V5Iiwgc193X2tleSkK
KworICAgIHRyeToKKyAgICAgICAgc193X3ZlcnNpb24gPSBoZWFkZXJzWyJTZWMtV2ViU29ja2V0
LVZlcnNpb24iXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcmFpc2UgSW52YWxpZEhl
YWRlcigiU2VjLVdlYlNvY2tldC1WZXJzaW9uIikKKyAgICBleGNlcHQgTXVsdGlwbGVWYWx1ZXNF
cnJvcjoKKyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlcigKKyAgICAgICAgICAgICJTZWMtV2Vi
U29ja2V0LVZlcnNpb24iLCAibW9yZSB0aGFuIG9uZSBTZWMtV2ViU29ja2V0LVZlcnNpb24gaGVh
ZGVyIGZvdW5kIgorICAgICAgICApCisKKyAgICBpZiBzX3dfdmVyc2lvbiAhPSAiMTMiOgorICAg
ICAgICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoIlNlYy1XZWJTb2NrZXQtVmVyc2lvbiIsIHNf
d192ZXJzaW9uKQorCisgICAgcmV0dXJuIHNfd19rZXkKKworCitkZWYgYnVpbGRfcmVzcG9uc2Uo
aGVhZGVyczogSGVhZGVycywga2V5OiBzdHIpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQnVpbGQg
YSBoYW5kc2hha2UgcmVzcG9uc2UgdG8gc2VuZCB0byB0aGUgY2xpZW50LgorCisgICAgVXBkYXRl
IHJlc3BvbnNlIGhlYWRlcnMgcGFzc2VkIGluIGFyZ3VtZW50LgorCisgICAgOnBhcmFtIGhlYWRl
cnM6IHJlc3BvbnNlIGhlYWRlcnMKKyAgICA6cGFyYW0ga2V5OiBjb21lcyBmcm9tIDpmdW5jOmBj
aGVja19yZXF1ZXN0YAorCisgICAgIiIiCisgICAgaGVhZGVyc1siVXBncmFkZSJdID0gIndlYnNv
Y2tldCIKKyAgICBoZWFkZXJzWyJDb25uZWN0aW9uIl0gPSAiVXBncmFkZSIKKyAgICBoZWFkZXJz
WyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdID0gYWNjZXB0KGtleSkKKworCitkZWYgY2hlY2tfcmVz
cG9uc2UoaGVhZGVyczogSGVhZGVycywga2V5OiBzdHIpIC0+IE5vbmU6CisgICAgIiIiCisgICAg
Q2hlY2sgYSBoYW5kc2hha2UgcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgorCisg
ICAgVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHZlcmlmeSB0aGF0IHRoZSByZXNwb25zZSBpcyBhbiBI
VFRQLzEuMSBvciBoaWdoZXIKKyAgICByZXNwb25zZSB3aXRoIGEgMTAxIHN0YXR1cyBjb2RlLiBU
aGVzZSBjb250cm9scyBhcmUgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCisgICAgdGhlIGNhbGxlci4K
KworICAgIDpwYXJhbSBoZWFkZXJzOiByZXNwb25zZSBoZWFkZXJzCisgICAgOnBhcmFtIGtleTog
Y29tZXMgZnJvbSA6ZnVuYzpgYnVpbGRfcmVxdWVzdGAKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRz
LmV4Y2VwdGlvbnMuSW52YWxpZEhhbmRzaGFrZTogaWYgdGhlIGhhbmRzaGFrZSByZXNwb25zZQor
ICAgICAgICBpcyBpbnZhbGlkCisKKyAgICAiIiIKKyAgICBjb25uZWN0aW9uOiBMaXN0W0Nvbm5l
Y3Rpb25PcHRpb25dID0gc3VtKAorICAgICAgICBbcGFyc2VfY29ubmVjdGlvbih2YWx1ZSkgZm9y
IHZhbHVlIGluIGhlYWRlcnMuZ2V0X2FsbCgiQ29ubmVjdGlvbiIpXSwgW10KKyAgICApCisKKyAg
ICBpZiBub3QgYW55KHZhbHVlLmxvd2VyKCkgPT0gInVwZ3JhZGUiIGZvciB2YWx1ZSBpbiBjb25u
ZWN0aW9uKToKKyAgICAgICAgcmFpc2UgSW52YWxpZFVwZ3JhZGUoIkNvbm5lY3Rpb24iLCAiICIu
am9pbihjb25uZWN0aW9uKSkKKworICAgIHVwZ3JhZGU6IExpc3RbVXBncmFkZVByb3RvY29sXSA9
IHN1bSgKKyAgICAgICAgW3BhcnNlX3VwZ3JhZGUodmFsdWUpIGZvciB2YWx1ZSBpbiBoZWFkZXJz
LmdldF9hbGwoIlVwZ3JhZGUiKV0sIFtdCisgICAgKQorCisgICAgIyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIG5vbi1zdHJpY3QgaW1wbGVtZW50YXRpb25zLCBpZ25vcmUgY2FzZSB3aGVuCisgICAg
IyBjaGVja2luZyB0aGUgVXBncmFkZSBoZWFkZXIuIEl0J3Mgc3VwcG9zZWQgdG8gYmUgJ1dlYlNv
Y2tldCcuCisgICAgaWYgbm90IChsZW4odXBncmFkZSkgPT0gMSBhbmQgdXBncmFkZVswXS5sb3dl
cigpID09ICJ3ZWJzb2NrZXQiKToKKyAgICAgICAgcmFpc2UgSW52YWxpZFVwZ3JhZGUoIlVwZ3Jh
ZGUiLCAiLCAiLmpvaW4odXBncmFkZSkpCisKKyAgICB0cnk6CisgICAgICAgIHNfd19hY2NlcHQg
PSBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdCisgICAgZXhjZXB0IEtleUVycm9yOgor
ICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyKCJTZWMtV2ViU29ja2V0LUFjY2VwdCIpCisgICAg
ZXhjZXB0IE11bHRpcGxlVmFsdWVzRXJyb3I6CisgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXIo
CisgICAgICAgICAgICAiU2VjLVdlYlNvY2tldC1BY2NlcHQiLCAibW9yZSB0aGFuIG9uZSBTZWMt
V2ViU29ja2V0LUFjY2VwdCBoZWFkZXIgZm91bmQiCisgICAgICAgICkKKworICAgIGlmIHNfd19h
Y2NlcHQgIT0gYWNjZXB0KGtleSk6CisgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXJWYWx1ZSgi
U2VjLVdlYlNvY2tldC1BY2NlcHQiLCBzX3dfYWNjZXB0KQorCisKK2RlZiBhY2NlcHQoa2V5OiBz
dHIpIC0+IHN0cjoKKyAgICBzaGExID0gaGFzaGxpYi5zaGExKChrZXkgKyBHVUlEKS5lbmNvZGUo
KSkuZGlnZXN0KCkKKyAgICByZXR1cm4gYmFzZTY0LmI2NGVuY29kZShzaGExKS5kZWNvZGUoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2hlYWRlcnMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvaGVhZGVycy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzM2M5NGMwNDY0MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9oZWFkZXJzLnB5CkBAIC0wLDAgKzEsNTE1
IEBACisiIiIKKzptb2Q6YHdlYnNvY2tldHMuaGVhZGVyc2AgcHJvdmlkZXMgcGFyc2VycyBhbmQg
c2VyaWFsaXplcnMgZm9yIEhUVFAgaGVhZGVycwordXNlZCBpbiBXZWJTb2NrZXQgaGFuZHNoYWtl
IG1lc3NhZ2VzLgorCitUaGVzZSBBUElzIGNhbm5vdCBiZSBpbXBvcnRlZCBmcm9tIDptb2Q6YHdl
YnNvY2tldHNgLiBUaGV5IG11c3QgYmUgaW1wb3J0ZWQKK2Zyb20gOm1vZDpgd2Vic29ja2V0cy5o
ZWFkZXJzYC4KKworIiIiCisKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0
IHJlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIExpc3QsIE5ld1R5cGUsIE9wdGlvbmFs
LCBTZXF1ZW5jZSwgVHVwbGUsIFR5cGVWYXIsIGNhc3QKKworZnJvbSAuZXhjZXB0aW9ucyBpbXBv
cnQgSW52YWxpZEhlYWRlckZvcm1hdCwgSW52YWxpZEhlYWRlclZhbHVlCitmcm9tIC50eXBpbmcg
aW1wb3J0IEV4dGVuc2lvbkhlYWRlciwgRXh0ZW5zaW9uTmFtZSwgRXh0ZW5zaW9uUGFyYW1ldGVy
LCBTdWJwcm90b2NvbAorCisKK19fYWxsX18gPSBbCisgICAgInBhcnNlX2Nvbm5lY3Rpb24iLAor
ICAgICJwYXJzZV91cGdyYWRlIiwKKyAgICAicGFyc2VfZXh0ZW5zaW9uIiwKKyAgICAiYnVpbGRf
ZXh0ZW5zaW9uIiwKKyAgICAicGFyc2Vfc3VicHJvdG9jb2wiLAorICAgICJidWlsZF9zdWJwcm90
b2NvbCIsCisgICAgImJ1aWxkX3d3d19hdXRoZW50aWNhdGVfYmFzaWMiLAorICAgICJwYXJzZV9h
dXRob3JpemF0aW9uX2Jhc2ljIiwKKyAgICAiYnVpbGRfYXV0aG9yaXphdGlvbl9iYXNpYyIsCitd
CisKKworVCA9IFR5cGVWYXIoIlQiKQorCitDb25uZWN0aW9uT3B0aW9uID0gTmV3VHlwZSgiQ29u
bmVjdGlvbk9wdGlvbiIsIHN0cikKK1VwZ3JhZGVQcm90b2NvbCA9IE5ld1R5cGUoIlVwZ3JhZGVQ
cm90b2NvbCIsIHN0cikKKworCisjIFRvIGF2b2lkIGEgZGVwZW5kZW5jeSBvbiBhIHBhcnNpbmcg
bGlicmFyeSwgd2UgaW1wbGVtZW50IG1hbnVhbGx5IHRoZSBBQk5GCisjIGRlc2NyaWJlZCBpbiBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTkuMSB3aXRoIHRoZQor
IyBkZWZpbml0aW9ucyBmcm9tIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI2Fw
cGVuZGl4LUIuCisKKworZGVmIHBlZWtfYWhlYWQoaGVhZGVyOiBzdHIsIHBvczogaW50KSAtPiBP
cHRpb25hbFtzdHJdOgorICAgICIiIgorICAgIFJldHVybiB0aGUgbmV4dCBjaGFyYWN0ZXIgZnJv
bSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVybiBgYE5vbmVg
YCBhdCB0aGUgZW5kIG9mIGBgaGVhZGVyYGAuCisKKyAgICBXZSBuZXZlciBuZWVkIHRvIHBlZWsg
bW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgYWhlYWQuCisKKyAgICAiIiIKKyAgICByZXR1cm4gTm9u
ZSBpZiBwb3MgPT0gbGVuKGhlYWRlcikgZWxzZSBoZWFkZXJbcG9zXQorCisKK19PV1NfcmUgPSBy
ZS5jb21waWxlKHIiW1x0IF0qIikKKworCitkZWYgcGFyc2VfT1dTKGhlYWRlcjogc3RyLCBwb3M6
IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFBhcnNlIG9wdGlvbmFsIHdoaXRlc3BhY2UgZnJv
bSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVybiB0aGUgbmV3
IHBvc2l0aW9uLgorCisgICAgVGhlIHdoaXRlc3BhY2UgaXRzZWxmIGlzbid0IHJldHVybmVkIGJl
Y2F1c2UgaXQgaXNuJ3Qgc2lnbmlmaWNhbnQuCisKKyAgICAiIiIKKyAgICAjIFRoZXJlJ3MgYWx3
YXlzIGEgbWF0Y2gsIHBvc3NpYmx5IGVtcHR5LCB3aG9zZSBjb250ZW50IGRvZXNuJ3QgbWF0dGVy
LgorICAgIG1hdGNoID0gX09XU19yZS5tYXRjaChoZWFkZXIsIHBvcykKKyAgICBhc3NlcnQgbWF0
Y2ggaXMgbm90IE5vbmUKKyAgICByZXR1cm4gbWF0Y2guZW5kKCkKKworCitfdG9rZW5fcmUgPSBy
ZS5jb21waWxlKHIiWy0hIyQlJlwnKisuXl9gfH4wLTlhLXpBLVpdKyIpCisKKworZGVmIHBhcnNl
X3Rva2VuKGhlYWRlcjogc3RyLCBwb3M6IGludCwgaGVhZGVyX25hbWU6IHN0cikgLT4gVHVwbGVb
c3RyLCBpbnRdOgorICAgICIiIgorICAgIFBhcnNlIGEgdG9rZW4gZnJvbSBgYGhlYWRlcmBgIGF0
IHRoZSBnaXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVybiB0aGUgdG9rZW4gdmFsdWUgYW5kIHRo
ZSBuZXcgcG9zaXRpb24uCisKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52
YWxpZEhlYWRlckZvcm1hdDogb24gaW52YWxpZCBpbnB1dHMuCisKKyAgICAiIiIKKyAgICBtYXRj
aCA9IF90b2tlbl9yZS5tYXRjaChoZWFkZXIsIHBvcykKKyAgICBpZiBtYXRjaCBpcyBOb25lOgor
ICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0KGhlYWRlcl9uYW1lLCAiZXhwZWN0ZWQg
dG9rZW4iLCBoZWFkZXIsIHBvcykKKyAgICByZXR1cm4gbWF0Y2guZ3JvdXAoKSwgbWF0Y2guZW5k
KCkKKworCitfcXVvdGVkX3N0cmluZ19yZSA9IHJlLmNvbXBpbGUoCisgICAgciciKD86W1x4MDlc
eDIwLVx4MjFceDIzLVx4NWJceDVkLVx4N2VdfFxcW1x4MDlceDIwLVx4N2VceDgwLVx4ZmZdKSoi
JworKQorCisKK191bnF1b3RlX3JlID0gcmUuY29tcGlsZShyIlxcKFtceDA5XHgyMC1ceDdlXHg4
MC1ceGZmXSkiKQorCisKK2RlZiBwYXJzZV9xdW90ZWRfc3RyaW5nKGhlYWRlcjogc3RyLCBwb3M6
IGludCwgaGVhZGVyX25hbWU6IHN0cikgLT4gVHVwbGVbc3RyLCBpbnRdOgorICAgICIiIgorICAg
IFBhcnNlIGEgcXVvdGVkIHN0cmluZyBmcm9tIGBgaGVhZGVyYGAgYXQgdGhlIGdpdmVuIHBvc2l0
aW9uLgorCisgICAgUmV0dXJuIHRoZSB1bnF1b3RlZCB2YWx1ZSBhbmQgdGhlIG5ldyBwb3NpdGlv
bi4KKworICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkSGVhZGVyRm9y
bWF0OiBvbiBpbnZhbGlkIGlucHV0cy4KKworICAgICIiIgorICAgIG1hdGNoID0gX3F1b3RlZF9z
dHJpbmdfcmUubWF0Y2goaGVhZGVyLCBwb3MpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAg
ICAgcmFpc2UgSW52YWxpZEhlYWRlckZvcm1hdChoZWFkZXJfbmFtZSwgImV4cGVjdGVkIHF1b3Rl
ZCBzdHJpbmciLCBoZWFkZXIsIHBvcykKKyAgICByZXR1cm4gX3VucXVvdGVfcmUuc3ViKHIiXDEi
LCBtYXRjaC5ncm91cCgpWzE6LTFdKSwgbWF0Y2guZW5kKCkKKworCitfcXVvdGFibGVfcmUgPSBy
ZS5jb21waWxlKHIiW1x4MDlceDIwLVx4N2VceDgwLVx4ZmZdKiIpCisKKworX3F1b3RlX3JlID0g
cmUuY29tcGlsZShyIihbXHgyMlx4NWNdKSIpCisKKworZGVmIGJ1aWxkX3F1b3RlZF9zdHJpbmco
dmFsdWU6IHN0cikgLT4gc3RyOgorICAgICIiIgorICAgIEZvcm1hdCBgYHZhbHVlYGAgYXMgYSBx
dW90ZWQgc3RyaW5nLgorCisgICAgVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA6ZnVuYzpgcGFyc2Vf
cXVvdGVkX3N0cmluZ2AuCisKKyAgICAiIiIKKyAgICBtYXRjaCA9IF9xdW90YWJsZV9yZS5mdWxs
bWF0Y2godmFsdWUpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiaW52YWxpZCBjaGFyYWN0ZXJzIGZvciBxdW90ZWQtc3RyaW5nIGVuY29kaW5nIikKKyAg
ICByZXR1cm4gJyInICsgX3F1b3RlX3JlLnN1YihyIlxcXDEiLCB2YWx1ZSkgKyAnIicKKworCitk
ZWYgcGFyc2VfbGlzdCgKKyAgICBwYXJzZV9pdGVtOiBDYWxsYWJsZVtbc3RyLCBpbnQsIHN0cl0s
IFR1cGxlW1QsIGludF1dLAorICAgIGhlYWRlcjogc3RyLAorICAgIHBvczogaW50LAorICAgIGhl
YWRlcl9uYW1lOiBzdHIsCispIC0+IExpc3RbVF06CisgICAgIiIiCisgICAgUGFyc2UgYSBjb21t
YS1zZXBhcmF0ZWQgbGlzdCBmcm9tIGBgaGVhZGVyYGAgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLgor
CisgICAgVGhpcyBpcyBhcHByb3ByaWF0ZSBmb3IgcGFyc2luZyB2YWx1ZXMgd2l0aCB0aGUgZm9s
bG93aW5nIGdyYW1tYXI6CisKKyAgICAgICAgMSNpdGVtCisKKyAgICBgYHBhcnNlX2l0ZW1gYCBw
YXJzZXMgb25lIGl0ZW0uCisKKyAgICBgYGhlYWRlcmBgIGlzIGFzc3VtZWQgbm90IHRvIHN0YXJ0
IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UuCisKKyAgICAoVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25l
ZCBmb3IgcGFyc2luZyBhbiBlbnRpcmUgaGVhZGVyIHZhbHVlIGFuZAorICAgIDpmdW5jOmB+d2Vi
c29ja2V0cy5odHRwLnJlYWRfaGVhZGVyc2Agc3RyaXBzIHdoaXRlc3BhY2UgZnJvbSB2YWx1ZXMu
KQorCisgICAgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcy4KKworICAgIDpyYWlzZXMgfndlYnNvY2tl
dHMuZXhjZXB0aW9ucy5JbnZhbGlkSGVhZGVyRm9ybWF0OiBvbiBpbnZhbGlkIGlucHV0cy4KKwor
ICAgICIiIgorICAgICMgUGVyIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3Nl
Y3Rpb24tNywgImEgcmVjaXBpZW50IE1VU1QKKyAgICAjIHBhcnNlIGFuZCBpZ25vcmUgYSByZWFz
b25hYmxlIG51bWJlciBvZiBlbXB0eSBsaXN0IGVsZW1lbnRzIjsgaGVuY2UKKyAgICAjIHdoaWxl
IGxvb3BzIHRoYXQgcmVtb3ZlIGV4dHJhIGRlbGltaXRlcnMuCisKKyAgICAjIFJlbW92ZSBleHRy
YSBkZWxpbWl0ZXJzIGJlZm9yZSB0aGUgZmlyc3QgaXRlbS4KKyAgICB3aGlsZSBwZWVrX2FoZWFk
KGhlYWRlciwgcG9zKSA9PSAiLCI6CisgICAgICAgIHBvcyA9IHBhcnNlX09XUyhoZWFkZXIsIHBv
cyArIDEpCisKKyAgICBpdGVtcyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgIyBMb29w
IGludmFyaWFudDogYSBpdGVtIHN0YXJ0cyBhdCBwb3MgaW4gaGVhZGVyLgorICAgICAgICBpdGVt
LCBwb3MgPSBwYXJzZV9pdGVtKGhlYWRlciwgcG9zLCBoZWFkZXJfbmFtZSkKKyAgICAgICAgaXRl
bXMuYXBwZW5kKGl0ZW0pCisgICAgICAgIHBvcyA9IHBhcnNlX09XUyhoZWFkZXIsIHBvcykKKwor
ICAgICAgICAjIFdlIG1heSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyLgorICAg
ICAgICBpZiBwb3MgPT0gbGVuKGhlYWRlcik6CisgICAgICAgICAgICBicmVhaworCisgICAgICAg
ICMgVGhlcmUgbXVzdCBiZSBhIGRlbGltaXRlciBhZnRlciBlYWNoIGVsZW1lbnQgZXhjZXB0IHRo
ZSBsYXN0IG9uZS4KKyAgICAgICAgaWYgcGVla19haGVhZChoZWFkZXIsIHBvcykgPT0gIiwiOgor
ICAgICAgICAgICAgcG9zID0gcGFyc2VfT1dTKGhlYWRlciwgcG9zICsgMSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXJGb3JtYXQoaGVhZGVyX25hbWUsICJl
eHBlY3RlZCBjb21tYSIsIGhlYWRlciwgcG9zKQorCisgICAgICAgICMgUmVtb3ZlIGV4dHJhIGRl
bGltaXRlcnMgYmVmb3JlIHRoZSBuZXh0IGl0ZW0uCisgICAgICAgIHdoaWxlIHBlZWtfYWhlYWQo
aGVhZGVyLCBwb3MpID09ICIsIjoKKyAgICAgICAgICAgIHBvcyA9IHBhcnNlX09XUyhoZWFkZXIs
IHBvcyArIDEpCisKKyAgICAgICAgIyBXZSBtYXkgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhl
IGhlYWRlci4KKyAgICAgICAgaWYgcG9zID09IGxlbihoZWFkZXIpOgorICAgICAgICAgICAgYnJl
YWsKKworICAgICMgU2luY2Ugd2Ugb25seSBhZHZhbmNlIGluIHRoZSBoZWFkZXIgYnkgb25lIGNo
YXJhY3RlciB3aXRoIHBlZWtfYWhlYWQoKQorICAgICMgb3Igd2l0aCB0aGUgZW5kIHBvc2l0aW9u
IG9mIGEgcmVnZXggbWF0Y2gsIHdlIGNhbid0IG92ZXJzaG9vdCB0aGUgZW5kLgorICAgIGFzc2Vy
dCBwb3MgPT0gbGVuKGhlYWRlcikKKworICAgIHJldHVybiBpdGVtcworCisKK2RlZiBwYXJzZV9j
b25uZWN0aW9uX29wdGlvbigKKyAgICBoZWFkZXI6IHN0ciwgcG9zOiBpbnQsIGhlYWRlcl9uYW1l
OiBzdHIKKykgLT4gVHVwbGVbQ29ubmVjdGlvbk9wdGlvbiwgaW50XToKKyAgICAiIiIKKyAgICBQ
YXJzZSBhIENvbm5lY3Rpb24gb3B0aW9uIGZyb20gYGBoZWFkZXJgYCBhdCB0aGUgZ2l2ZW4gcG9z
aXRpb24uCisKKyAgICBSZXR1cm4gdGhlIHByb3RvY29sIHZhbHVlIGFuZCB0aGUgbmV3IHBvc2l0
aW9uLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIZWFkZXJG
b3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIiCisgICAgaXRlbSwgcG9zID0gcGFy
c2VfdG9rZW4oaGVhZGVyLCBwb3MsIGhlYWRlcl9uYW1lKQorICAgIHJldHVybiBjYXN0KENvbm5l
Y3Rpb25PcHRpb24sIGl0ZW0pLCBwb3MKKworCitkZWYgcGFyc2VfY29ubmVjdGlvbihoZWFkZXI6
IHN0cikgLT4gTGlzdFtDb25uZWN0aW9uT3B0aW9uXToKKyAgICAiIiIKKyAgICBQYXJzZSBhIGBg
Q29ubmVjdGlvbmBgIGhlYWRlci4KKworICAgIFJldHVybiBhIGxpc3Qgb2YgSFRUUCBjb25uZWN0
aW9uIG9wdGlvbnMuCisKKyAgICA6cGFyYW0gaGVhZGVyOiB2YWx1ZSBvZiB0aGUgYGBDb25uZWN0
aW9uYGAgaGVhZGVyCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRI
ZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIiCisgICAgcmV0dXJuIHBh
cnNlX2xpc3QocGFyc2VfY29ubmVjdGlvbl9vcHRpb24sIGhlYWRlciwgMCwgIkNvbm5lY3Rpb24i
KQorCisKK19wcm90b2NvbF9yZSA9IHJlLmNvbXBpbGUoCisgICAgciJbLSEjJCUmXCcqKy5eX2B8
fjAtOWEtekEtWl0rKD86L1stISMkJSZcJyorLl5fYHx+MC05YS16QS1aXSspPyIKKykKKworCitk
ZWYgcGFyc2VfdXBncmFkZV9wcm90b2NvbCgKKyAgICBoZWFkZXI6IHN0ciwgcG9zOiBpbnQsIGhl
YWRlcl9uYW1lOiBzdHIKKykgLT4gVHVwbGVbVXBncmFkZVByb3RvY29sLCBpbnRdOgorICAgICIi
IgorICAgIFBhcnNlIGFuIFVwZ3JhZGUgcHJvdG9jb2wgZnJvbSBgYGhlYWRlcmBgIGF0IHRoZSBn
aXZlbiBwb3NpdGlvbi4KKworICAgIFJldHVybiB0aGUgcHJvdG9jb2wgdmFsdWUgYW5kIHRoZSBu
ZXcgcG9zaXRpb24uCisKKyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxp
ZEhlYWRlckZvcm1hdDogb24gaW52YWxpZCBpbnB1dHMuCisKKyAgICAiIiIKKyAgICBtYXRjaCA9
IF9wcm90b2NvbF9yZS5tYXRjaChoZWFkZXIsIHBvcykKKyAgICBpZiBtYXRjaCBpcyBOb25lOgor
ICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0KGhlYWRlcl9uYW1lLCAiZXhwZWN0ZWQg
cHJvdG9jb2wiLCBoZWFkZXIsIHBvcykKKyAgICByZXR1cm4gY2FzdChVcGdyYWRlUHJvdG9jb2ws
IG1hdGNoLmdyb3VwKCkpLCBtYXRjaC5lbmQoKQorCisKK2RlZiBwYXJzZV91cGdyYWRlKGhlYWRl
cjogc3RyKSAtPiBMaXN0W1VwZ3JhZGVQcm90b2NvbF06CisgICAgIiIiCisgICAgUGFyc2UgYW4g
YGBVcGdyYWRlYGAgaGVhZGVyLgorCisgICAgUmV0dXJuIGEgbGlzdCBvZiBIVFRQIHByb3RvY29s
cy4KKworICAgIDpwYXJhbSBoZWFkZXI6IHZhbHVlIG9mIHRoZSBgYFVwZ3JhZGVgYCBoZWFkZXIK
KyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZEhlYWRlckZvcm1hdDog
b24gaW52YWxpZCBpbnB1dHMuCisKKyAgICAiIiIKKyAgICByZXR1cm4gcGFyc2VfbGlzdChwYXJz
ZV91cGdyYWRlX3Byb3RvY29sLCBoZWFkZXIsIDAsICJVcGdyYWRlIikKKworCitkZWYgcGFyc2Vf
ZXh0ZW5zaW9uX2l0ZW1fcGFyYW0oCisgICAgaGVhZGVyOiBzdHIsIHBvczogaW50LCBoZWFkZXJf
bmFtZTogc3RyCispIC0+IFR1cGxlW0V4dGVuc2lvblBhcmFtZXRlciwgaW50XToKKyAgICAiIiIK
KyAgICBQYXJzZSBhIHNpbmdsZSBleHRlbnNpb24gcGFyYW1ldGVyIGZyb20gYGBoZWFkZXJgYCBh
dCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBSZXR1cm4gYSBgYChuYW1lLCB2YWx1ZSlgYCBw
YWlyIGFuZCB0aGUgbmV3IHBvc2l0aW9uLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNl
cHRpb25zLkludmFsaWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIi
CisgICAgIyBFeHRyYWN0IHBhcmFtZXRlciBuYW1lLgorICAgIG5hbWUsIHBvcyA9IHBhcnNlX3Rv
a2VuKGhlYWRlciwgcG9zLCBoZWFkZXJfbmFtZSkKKyAgICBwb3MgPSBwYXJzZV9PV1MoaGVhZGVy
LCBwb3MpCisgICAgIyBFeHRyYWN0IHBhcmFtZXRlciB2YWx1ZSwgaWYgdGhlcmUgaXMgb25lLgor
ICAgIHZhbHVlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGlmIHBlZWtfYWhlYWQoaGVhZGVy
LCBwb3MpID09ICI9IjoKKyAgICAgICAgcG9zID0gcGFyc2VfT1dTKGhlYWRlciwgcG9zICsgMSkK
KyAgICAgICAgaWYgcGVla19haGVhZChoZWFkZXIsIHBvcykgPT0gJyInOgorICAgICAgICAgICAg
cG9zX2JlZm9yZSA9IHBvcyAgIyBmb3IgcHJvcGVyIGVycm9yIHJlcG9ydGluZyBiZWxvdworICAg
ICAgICAgICAgdmFsdWUsIHBvcyA9IHBhcnNlX3F1b3RlZF9zdHJpbmcoaGVhZGVyLCBwb3MsIGhl
YWRlcl9uYW1lKQorICAgICAgICAgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NjQ1NSNzZWN0aW9uLTkuMSBzYXlzOiB0aGUgdmFsdWUKKyAgICAgICAgICAgICMgYWZ0ZXIgcXVv
dGVkLXN0cmluZyB1bmVzY2FwaW5nIE1VU1QgY29uZm9ybSB0byB0aGUgJ3Rva2VuJyBBQk5GLgor
ICAgICAgICAgICAgaWYgX3Rva2VuX3JlLmZ1bGxtYXRjaCh2YWx1ZSkgaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJfbmFtZSwgImludmFsaWQgcXVvdGVkIGhlYWRlciBjb250ZW50IiwgaGVhZGVyLCBw
b3NfYmVmb3JlCisgICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
dmFsdWUsIHBvcyA9IHBhcnNlX3Rva2VuKGhlYWRlciwgcG9zLCBoZWFkZXJfbmFtZSkKKyAgICAg
ICAgcG9zID0gcGFyc2VfT1dTKGhlYWRlciwgcG9zKQorCisgICAgcmV0dXJuIChuYW1lLCB2YWx1
ZSksIHBvcworCisKK2RlZiBwYXJzZV9leHRlbnNpb25faXRlbSgKKyAgICBoZWFkZXI6IHN0ciwg
cG9zOiBpbnQsIGhlYWRlcl9uYW1lOiBzdHIKKykgLT4gVHVwbGVbRXh0ZW5zaW9uSGVhZGVyLCBp
bnRdOgorICAgICIiIgorICAgIFBhcnNlIGFuIGV4dGVuc2lvbiBkZWZpbml0aW9uIGZyb20gYGBo
ZWFkZXJgYCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBSZXR1cm4gYW4gYGAoZXh0ZW5z
aW9uIG5hbWUsIHBhcmFtZXRlcnMpYGAgcGFpciwgd2hlcmUgYGBwYXJhbWV0ZXJzYGAgaXMgYQor
ICAgIGxpc3Qgb2YgYGAobmFtZSwgdmFsdWUpYGAgcGFpcnMsIGFuZCB0aGUgbmV3IHBvc2l0aW9u
LgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIZWFkZXJGb3Jt
YXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIiCisgICAgIyBFeHRyYWN0IGV4dGVuc2lv
biBuYW1lLgorICAgIG5hbWUsIHBvcyA9IHBhcnNlX3Rva2VuKGhlYWRlciwgcG9zLCBoZWFkZXJf
bmFtZSkKKyAgICBwb3MgPSBwYXJzZV9PV1MoaGVhZGVyLCBwb3MpCisgICAgIyBFeHRyYWN0IGFs
bCBwYXJhbWV0ZXJzLgorICAgIHBhcmFtZXRlcnMgPSBbXQorICAgIHdoaWxlIHBlZWtfYWhlYWQo
aGVhZGVyLCBwb3MpID09ICI7IjoKKyAgICAgICAgcG9zID0gcGFyc2VfT1dTKGhlYWRlciwgcG9z
ICsgMSkKKyAgICAgICAgcGFyYW1ldGVyLCBwb3MgPSBwYXJzZV9leHRlbnNpb25faXRlbV9wYXJh
bShoZWFkZXIsIHBvcywgaGVhZGVyX25hbWUpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKHBh
cmFtZXRlcikKKyAgICByZXR1cm4gKGNhc3QoRXh0ZW5zaW9uTmFtZSwgbmFtZSksIHBhcmFtZXRl
cnMpLCBwb3MKKworCitkZWYgcGFyc2VfZXh0ZW5zaW9uKGhlYWRlcjogc3RyKSAtPiBMaXN0W0V4
dGVuc2lvbkhlYWRlcl06CisgICAgIiIiCisgICAgUGFyc2UgYSBgYFNlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9uc2BgIGhlYWRlci4KKworICAgIFJldHVybiBhIGxpc3Qgb2YgV2ViU29ja2V0IGV4dGVu
c2lvbnMgYW5kIHRoZWlyIHBhcmFtZXRlcnMgaW4gdGhpcyBmb3JtYXQ6OgorCisgICAgICAgIFsK
KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uIG5hbWUnLAorICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgKCdwYXJhbWV0ZXIgbmFtZScsICdwYXJh
bWV0ZXIgdmFsdWUnKSwKKyAgICAgICAgICAgICAgICAgICAgLi4uLgorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICksCisgICAgICAgICAgICAuLi4KKyAgICAgICAgXQorCisgICAgUGFy
YW1ldGVyIHZhbHVlcyBhcmUgYGBOb25lYGAgd2hlbiBubyB2YWx1ZSBpcyBwcm92aWRlZC4KKwor
ICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkSGVhZGVyRm9ybWF0OiBv
biBpbnZhbGlkIGlucHV0cy4KKworICAgICIiIgorICAgIHJldHVybiBwYXJzZV9saXN0KHBhcnNl
X2V4dGVuc2lvbl9pdGVtLCBoZWFkZXIsIDAsICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMiKQor
CisKK3BhcnNlX2V4dGVuc2lvbl9saXN0ID0gcGFyc2VfZXh0ZW5zaW9uICAjIGFsaWFzIGZvciBi
YWNrd2FyZHMgY29tcGF0aWJpbGl0eQorCisKK2RlZiBidWlsZF9leHRlbnNpb25faXRlbSgKKyAg
ICBuYW1lOiBFeHRlbnNpb25OYW1lLCBwYXJhbWV0ZXJzOiBMaXN0W0V4dGVuc2lvblBhcmFtZXRl
cl0KKykgLT4gc3RyOgorICAgICIiIgorICAgIEJ1aWxkIGFuIGV4dGVuc2lvbiBkZWZpbml0aW9u
LgorCisgICAgVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA6ZnVuYzpgcGFyc2VfZXh0ZW5zaW9uX2l0
ZW1gLgorCisgICAgIiIiCisgICAgcmV0dXJuICI7ICIuam9pbigKKyAgICAgICAgW2Nhc3Qoc3Ry
LCBuYW1lKV0KKyAgICAgICAgKyBbCisgICAgICAgICAgICAjIFF1b3RlZCBzdHJpbmdzIGFyZW4n
dCBuZWNlc3NhcnkgYmVjYXVzZSB2YWx1ZXMgYXJlIGFsd2F5cyB0b2tlbnMuCisgICAgICAgICAg
ICBuYW1lIGlmIHZhbHVlIGlzIE5vbmUgZWxzZSBmIntuYW1lfT17dmFsdWV9IgorICAgICAgICAg
ICAgZm9yIG5hbWUsIHZhbHVlIGluIHBhcmFtZXRlcnMKKyAgICAgICAgXQorICAgICkKKworCitk
ZWYgYnVpbGRfZXh0ZW5zaW9uKGV4dGVuc2lvbnM6IFNlcXVlbmNlW0V4dGVuc2lvbkhlYWRlcl0p
IC0+IHN0cjoKKyAgICAiIiIKKyAgICBCdWlsZCBhIGBgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25z
YGAgaGVhZGVyLgorCisgICAgVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA6ZnVuYzpgcGFyc2VfZXh0
ZW5zaW9uYC4KKworICAgICIiIgorICAgIHJldHVybiAiLCAiLmpvaW4oCisgICAgICAgIGJ1aWxk
X2V4dGVuc2lvbl9pdGVtKG5hbWUsIHBhcmFtZXRlcnMpIGZvciBuYW1lLCBwYXJhbWV0ZXJzIGlu
IGV4dGVuc2lvbnMKKyAgICApCisKKworYnVpbGRfZXh0ZW5zaW9uX2xpc3QgPSBidWlsZF9leHRl
bnNpb24gICMgYWxpYXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisKKworZGVmIHBhcnNl
X3N1YnByb3RvY29sX2l0ZW0oCisgICAgaGVhZGVyOiBzdHIsIHBvczogaW50LCBoZWFkZXJfbmFt
ZTogc3RyCispIC0+IFR1cGxlW1N1YnByb3RvY29sLCBpbnRdOgorICAgICIiIgorICAgIFBhcnNl
IGEgc3VicHJvdG9jb2wgZnJvbSBgYGhlYWRlcmBgIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKwor
ICAgIFJldHVybiB0aGUgc3VicHJvdG9jb2wgdmFsdWUgYW5kIHRoZSBuZXcgcG9zaXRpb24uCisK
KyAgICA6cmFpc2VzIH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuSW52YWxpZEhlYWRlckZvcm1hdDog
b24gaW52YWxpZCBpbnB1dHMuCisKKyAgICAiIiIKKyAgICBpdGVtLCBwb3MgPSBwYXJzZV90b2tl
bihoZWFkZXIsIHBvcywgaGVhZGVyX25hbWUpCisgICAgcmV0dXJuIGNhc3QoU3VicHJvdG9jb2ws
IGl0ZW0pLCBwb3MKKworCitkZWYgcGFyc2Vfc3VicHJvdG9jb2woaGVhZGVyOiBzdHIpIC0+IExp
c3RbU3VicHJvdG9jb2xdOgorICAgICIiIgorICAgIFBhcnNlIGEgYGBTZWMtV2ViU29ja2V0LVBy
b3RvY29sYGAgaGVhZGVyLgorCisgICAgUmV0dXJuIGEgbGlzdCBvZiBXZWJTb2NrZXQgc3VicHJv
dG9jb2xzLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRIZWFk
ZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIiCisgICAgcmV0dXJuIHBhcnNl
X2xpc3QocGFyc2Vfc3VicHJvdG9jb2xfaXRlbSwgaGVhZGVyLCAwLCAiU2VjLVdlYlNvY2tldC1Q
cm90b2NvbCIpCisKKworcGFyc2Vfc3VicHJvdG9jb2xfbGlzdCA9IHBhcnNlX3N1YnByb3RvY29s
ICAjIGFsaWFzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorCisKK2RlZiBidWlsZF9zdWJw
cm90b2NvbChwcm90b2NvbHM6IFNlcXVlbmNlW1N1YnByb3RvY29sXSkgLT4gc3RyOgorICAgICIi
IgorICAgIEJ1aWxkIGEgYGBTZWMtV2ViU29ja2V0LVByb3RvY29sYGAgaGVhZGVyLgorCisgICAg
VGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA6ZnVuYzpgcGFyc2Vfc3VicHJvdG9jb2xgLgorCisgICAg
IiIiCisgICAgcmV0dXJuICIsICIuam9pbihwcm90b2NvbHMpCisKKworYnVpbGRfc3VicHJvdG9j
b2xfbGlzdCA9IGJ1aWxkX3N1YnByb3RvY29sICAjIGFsaWFzIGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eQorCisKK2RlZiBidWlsZF93d3dfYXV0aGVudGljYXRlX2Jhc2ljKHJlYWxtOiBzdHIp
IC0+IHN0cjoKKyAgICAiIiIKKyAgICBCdWlsZCBhIGBgV1dXLUF1dGhlbnRpY2F0ZWBgIGhlYWRl
ciBmb3IgSFRUUCBCYXNpYyBBdXRoLgorCisgICAgOnBhcmFtIHJlYWxtOiBhdXRoZW50aWNhdGlv
biByZWFsbQorCisgICAgIiIiCisgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NzYxNyNzZWN0aW9uLTIKKyAgICByZWFsbSA9IGJ1aWxkX3F1b3RlZF9zdHJpbmcocmVhbG0pCisg
ICAgY2hhcnNldCA9IGJ1aWxkX3F1b3RlZF9zdHJpbmcoIlVURi04IikKKyAgICByZXR1cm4gZiJC
YXNpYyByZWFsbT17cmVhbG19LCBjaGFyc2V0PXtjaGFyc2V0fSIKKworCitfdG9rZW42OF9yZSA9
IHJlLmNvbXBpbGUociJbQS1aYS16MC05LS5ffisvXSs9KiIpCisKKworZGVmIHBhcnNlX3Rva2Vu
NjgoaGVhZGVyOiBzdHIsIHBvczogaW50LCBoZWFkZXJfbmFtZTogc3RyKSAtPiBUdXBsZVtzdHIs
IGludF06CisgICAgIiIiCisgICAgUGFyc2UgYSB0b2tlbjY4IGZyb20gYGBoZWFkZXJgYCBhdCB0
aGUgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBSZXR1cm4gdGhlIHRva2VuIHZhbHVlIGFuZCB0aGUg
bmV3IHBvc2l0aW9uLgorCisgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFs
aWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzLgorCisgICAgIiIiCisgICAgbWF0Y2gg
PSBfdG9rZW42OF9yZS5tYXRjaChoZWFkZXIsIHBvcykKKyAgICBpZiBtYXRjaCBpcyBOb25lOgor
ICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRm9ybWF0KGhlYWRlcl9uYW1lLCAiZXhwZWN0ZWQg
dG9rZW42OCIsIGhlYWRlciwgcG9zKQorICAgIHJldHVybiBtYXRjaC5ncm91cCgpLCBtYXRjaC5l
bmQoKQorCisKK2RlZiBwYXJzZV9lbmQoaGVhZGVyOiBzdHIsIHBvczogaW50LCBoZWFkZXJfbmFt
ZTogc3RyKSAtPiBOb25lOgorICAgICIiIgorICAgIENoZWNrIHRoYXQgcGFyc2luZyByZWFjaGVk
IHRoZSBlbmQgb2YgaGVhZGVyLgorCisgICAgIiIiCisgICAgaWYgcG9zIDwgbGVuKGhlYWRlcik6
CisgICAgICAgIHJhaXNlIEludmFsaWRIZWFkZXJGb3JtYXQoaGVhZGVyX25hbWUsICJ0cmFpbGlu
ZyBkYXRhIiwgaGVhZGVyLCBwb3MpCisKKworZGVmIHBhcnNlX2F1dGhvcml6YXRpb25fYmFzaWMo
aGVhZGVyOiBzdHIpIC0+IFR1cGxlW3N0ciwgc3RyXToKKyAgICAiIiIKKyAgICBQYXJzZSBhbiBg
YEF1dGhvcml6YXRpb25gYCBoZWFkZXIgZm9yIEhUVFAgQmFzaWMgQXV0aC4KKworICAgIFJldHVy
biBhIGBgKHVzZXJuYW1lLCBwYXNzd29yZClgYCB0dXBsZS4KKworICAgIDpwYXJhbSBoZWFkZXI6
IHZhbHVlIG9mIHRoZSBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIKKyAgICA6cmFpc2VzIEludmFs
aWRIZWFkZXJGb3JtYXQ6IG9uIGludmFsaWQgaW5wdXRzCisgICAgOnJhaXNlcyBJbnZhbGlkSGVh
ZGVyVmFsdWU6IG9uIHVuc3VwcG9ydGVkIGlucHV0cworCisgICAgIiIiCisgICAgIyBodHRwczov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTIuMQorICAgICMgaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzc2MTcjc2VjdGlvbi0yCisgICAgc2NoZW1lLCBwb3MgPSBw
YXJzZV90b2tlbihoZWFkZXIsIDAsICJBdXRob3JpemF0aW9uIikKKyAgICBpZiBzY2hlbWUubG93
ZXIoKSAhPSAiYmFzaWMiOgorICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoIkF1dGhv
cml6YXRpb24iLCBmInVuc3VwcG9ydGVkIHNjaGVtZToge3NjaGVtZX0iKQorICAgIGlmIHBlZWtf
YWhlYWQoaGVhZGVyLCBwb3MpICE9ICIgIjoKKyAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlckZv
cm1hdCgKKyAgICAgICAgICAgICJBdXRob3JpemF0aW9uIiwgImV4cGVjdGVkIHNwYWNlIGFmdGVy
IHNjaGVtZSIsIGhlYWRlciwgcG9zCisgICAgICAgICkKKyAgICBwb3MgKz0gMQorICAgIGJhc2lj
X2NyZWRlbnRpYWxzLCBwb3MgPSBwYXJzZV90b2tlbjY4KGhlYWRlciwgcG9zLCAiQXV0aG9yaXph
dGlvbiIpCisgICAgcGFyc2VfZW5kKGhlYWRlciwgcG9zLCAiQXV0aG9yaXphdGlvbiIpCisKKyAg
ICB0cnk6CisgICAgICAgIHVzZXJfcGFzcyA9IGJhc2U2NC5iNjRkZWNvZGUoYmFzaWNfY3JlZGVu
dGlhbHMuZW5jb2RlKCkpLmRlY29kZSgpCisgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAg
ICAgICByYWlzZSBJbnZhbGlkSGVhZGVyVmFsdWUoCisgICAgICAgICAgICAiQXV0aG9yaXphdGlv
biIsICJleHBlY3RlZCBiYXNlNjQtZW5jb2RlZCBjcmVkZW50aWFscyIKKyAgICAgICAgKSBmcm9t
IE5vbmUKKyAgICB0cnk6CisgICAgICAgIHVzZXJuYW1lLCBwYXNzd29yZCA9IHVzZXJfcGFzcy5z
cGxpdCgiOiIsIDEpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHJhaXNlIEludmFs
aWRIZWFkZXJWYWx1ZSgKKyAgICAgICAgICAgICJBdXRob3JpemF0aW9uIiwgImV4cGVjdGVkIHVz
ZXJuYW1lOnBhc3N3b3JkIGNyZWRlbnRpYWxzIgorICAgICAgICApIGZyb20gTm9uZQorCisgICAg
cmV0dXJuIHVzZXJuYW1lLCBwYXNzd29yZAorCisKK2RlZiBidWlsZF9hdXRob3JpemF0aW9uX2Jh
c2ljKHVzZXJuYW1lOiBzdHIsIHBhc3N3b3JkOiBzdHIpIC0+IHN0cjoKKyAgICAiIiIKKyAgICBC
dWlsZCBhbiBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIgZm9yIEhUVFAgQmFzaWMgQXV0aC4KKwor
ICAgIFRoaXMgaXMgdGhlIHJldmVyc2Ugb2YgOmZ1bmM6YHBhcnNlX2F1dGhvcml6YXRpb25fYmFz
aWNgLgorCisgICAgIiIiCisgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzYx
NyNzZWN0aW9uLTIKKyAgICBhc3NlcnQgIjoiIG5vdCBpbiB1c2VybmFtZQorICAgIHVzZXJfcGFz
cyA9IGYie3VzZXJuYW1lfTp7cGFzc3dvcmR9IgorICAgIGJhc2ljX2NyZWRlbnRpYWxzID0gYmFz
ZTY0LmI2NGVuY29kZSh1c2VyX3Bhc3MuZW5jb2RlKCkpLmRlY29kZSgpCisgICAgcmV0dXJuICJC
YXNpYyAiICsgYmFzaWNfY3JlZGVudGlhbHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9z
cmMvd2Vic29ja2V0cy9odHRwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL2h0
dHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYTZkMjc0YmYx
NDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvaHR0
cC5weQpAQCAtMCwwICsxLDM2MCBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLmh0dHBgIG1vZHVs
ZSBwcm92aWRlcyBiYXNpYyBIVFRQLzEuMSBzdXBwb3J0LiBJdCBpcyBtZXJlbHkKKzphZGVxdWF0
ZSBmb3IgV2ViU29ja2V0IGhhbmRzaGFrZSBtZXNzYWdlcy4KKworVGhlc2UgQVBJcyBjYW5ub3Qg
YmUgaW1wb3J0ZWQgZnJvbSA6bW9kOmB3ZWJzb2NrZXRzYC4gVGhleSBtdXN0IGJlIGltcG9ydGVk
Citmcm9tIDptb2Q6YHdlYnNvY2tldHMuaHR0cGAuCisKKyIiIgorCitpbXBvcnQgYXN5bmNpbwor
aW1wb3J0IHJlCitpbXBvcnQgc3lzCitmcm9tIHR5cGluZyBpbXBvcnQgKAorICAgIEFueSwKKyAg
ICBEaWN0LAorICAgIEl0ZXJhYmxlLAorICAgIEl0ZXJhdG9yLAorICAgIExpc3QsCisgICAgTWFw
cGluZywKKyAgICBNdXRhYmxlTWFwcGluZywKKyAgICBUdXBsZSwKKyAgICBVbmlvbiwKKykKKwor
ZnJvbSAudmVyc2lvbiBpbXBvcnQgdmVyc2lvbiBhcyB3ZWJzb2NrZXRzX3ZlcnNpb24KKworCitf
X2FsbF9fID0gWworICAgICJyZWFkX3JlcXVlc3QiLAorICAgICJyZWFkX3Jlc3BvbnNlIiwKKyAg
ICAiSGVhZGVycyIsCisgICAgIk11bHRpcGxlVmFsdWVzRXJyb3IiLAorICAgICJVU0VSX0FHRU5U
IiwKK10KKworTUFYX0hFQURFUlMgPSAyNTYKK01BWF9MSU5FID0gNDA5NgorCitVU0VSX0FHRU5U
ID0gZiJQeXRob24ve3N5cy52ZXJzaW9uWzozXX0gd2Vic29ja2V0cy97d2Vic29ja2V0c192ZXJz
aW9ufSIKKworCitkZWYgZCh2YWx1ZTogYnl0ZXMpIC0+IHN0cjoKKyAgICAiIiIKKyAgICBEZWNv
ZGUgYSBieXRlc3RyaW5nIGZvciBpbnRlcnBvbGF0aW5nIGludG8gYW4gZXJyb3IgbWVzc2FnZS4K
KworICAgICIiIgorICAgIHJldHVybiB2YWx1ZS5kZWNvZGUoZXJyb3JzPSJiYWNrc2xhc2hyZXBs
YWNlIikKKworCisjIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNhcHBl
bmRpeC1CLgorCisjIFJlZ2V4IGZvciB2YWxpZGF0aW5nIGhlYWRlciBuYW1lcy4KKworX3Rva2Vu
X3JlID0gcmUuY29tcGlsZShyYiJbLSEjJCUmXCcqKy5eX2B8fjAtOWEtekEtWl0rIikKKworIyBS
ZWdleCBmb3IgdmFsaWRhdGluZyBoZWFkZXIgdmFsdWVzLgorCisjIFdlIGRvbid0IGF0dGVtcHQg
dG8gc3VwcG9ydCBvYnNvbGV0ZSBsaW5lIGZvbGRpbmcuCisKKyMgSW5jbHVkZSBIVEFCIChceDA5
KSwgU1AgKFx4MjApLCBWQ0hBUiAoXHgyMS1ceDdlKSwgb2JzLXRleHQgKFx4ODAtXHhmZikuCisK
KyMgVGhlIEFCTkYgaXMgY29tcGxpY2F0ZWQgYmVjYXVzZSBpdCBhdHRlbXB0cyB0byBleHByZXNz
IHRoYXQgb3B0aW9uYWwKKyMgd2hpdGVzcGFjZSBpcyBpZ25vcmVkLiBXZSBzdHJpcCB3aGl0ZXNw
YWNlIGFuZCBkb24ndCByZXZhbGlkYXRlIHRoYXQuCisKKyMgU2VlIGFsc28gaHR0cHM6Ly93d3cu
cmZjLWVkaXRvci5vcmcvZXJyYXRhX3NlYXJjaC5waHA/cmZjPTcyMzAmZWlkPTQxODkKKworX3Zh
bHVlX3JlID0gcmUuY29tcGlsZShyYiJbXHgwOVx4MjAtXHg3ZVx4ODAtXHhmZl0qIikKKworCith
c3luYyBkZWYgcmVhZF9yZXF1ZXN0KHN0cmVhbTogYXN5bmNpby5TdHJlYW1SZWFkZXIpIC0+IFR1
cGxlW3N0ciwgIkhlYWRlcnMiXToKKyAgICAiIiIKKyAgICBSZWFkIGFuIEhUVFAvMS4xIEdFVCBy
ZXF1ZXN0IGFuZCByZXR1cm4gYGAocGF0aCwgaGVhZGVycylgYC4KKworICAgIGBgcGF0aGBgIGlz
bid0IFVSTC1kZWNvZGVkIG9yIHZhbGlkYXRlZCBpbiBhbnkgd2F5LgorCisgICAgYGBwYXRoYGAg
YW5kIGBgaGVhZGVyc2BgIGFyZSBleHBlY3RlZCB0byBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFj
dGVycy4KKyAgICBPdGhlciBjaGFyYWN0ZXJzIGFyZSByZXByZXNlbnRlZCB3aXRoIHN1cnJvZ2F0
ZSBlc2NhcGVzLgorCisgICAgOmZ1bmM6YHJlYWRfcmVxdWVzdGAgZG9lc24ndCBhdHRlbXB0IHRv
IHJlYWQgdGhlIHJlcXVlc3QgYm9keSBiZWNhdXNlCisgICAgV2ViU29ja2V0IGhhbmRzaGFrZSBy
ZXF1ZXN0cyBkb24ndCBoYXZlIG9uZS4gSWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYQorICAgIGJv
ZHksIGl0IG1heSBiZSByZWFkIGZyb20gYGBzdHJlYW1gYCBhZnRlciB0aGlzIGNvcm91dGluZSBy
ZXR1cm5zLgorCisgICAgOnBhcmFtIHN0cmVhbTogaW5wdXQgdG8gcmVhZCB0aGUgcmVxdWVzdCBm
cm9tCisgICAgOnJhaXNlcyBFT0ZFcnJvcjogaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkIHdp
dGhvdXQgYSBmdWxsIEhUVFAgcmVxdWVzdAorICAgIDpyYWlzZXMgU2VjdXJpdHlFcnJvcjogaWYg
dGhlIHJlcXVlc3QgZXhjZWVkcyBhIHNlY3VyaXR5IGxpbWl0CisgICAgOnJhaXNlcyBWYWx1ZUVy
cm9yOiBpZiB0aGUgcmVxdWVzdCBpc24ndCB3ZWxsIGZvcm1hdHRlZAorCisgICAgIiIiCisgICAg
IyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMS4xCisKKyAg
ICAjIFBhcnNpbmcgaXMgc2ltcGxlIGJlY2F1c2UgZml4ZWQgdmFsdWVzIGFyZSBleHBlY3RlZCBm
b3IgbWV0aG9kIGFuZAorICAgICMgdmVyc2lvbiBhbmQgYmVjYXVzZSBwYXRoIGlzbid0IGNoZWNr
ZWQuIFNpbmNlIFdlYlNvY2tldCBzb2Z0d2FyZSB0ZW5kcworICAgICMgdG8gaW1wbGVtZW50IEhU
VFAvMS4xIHN0cmljdGx5LCB0aGVyZSdzIGxpdHRsZSBuZWVkIGZvciBsZW5pZW50IHBhcnNpbmcu
CisKKyAgICB0cnk6CisgICAgICAgIHJlcXVlc3RfbGluZSA9IGF3YWl0IHJlYWRfbGluZShzdHJl
YW0pCisgICAgZXhjZXB0IEVPRkVycm9yIGFzIGV4YzoKKyAgICAgICAgcmFpc2UgRU9GRXJyb3Io
ImNvbm5lY3Rpb24gY2xvc2VkIHdoaWxlIHJlYWRpbmcgSFRUUCByZXF1ZXN0IGxpbmUiKSBmcm9t
IGV4YworCisgICAgdHJ5OgorICAgICAgICBtZXRob2QsIHJhd19wYXRoLCB2ZXJzaW9uID0gcmVx
dWVzdF9saW5lLnNwbGl0KGIiICIsIDIpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6ICAjIG5vdCBl
bm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgMywgZ290IDEtMikKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcihmImludmFsaWQgSFRUUCByZXF1ZXN0IGxpbmU6IHtkKHJlcXVlc3RfbGlu
ZSl9IikgZnJvbSBOb25lCisKKyAgICBpZiBtZXRob2QgIT0gYiJHRVQiOgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKGYidW5zdXBwb3J0ZWQgSFRUUCBtZXRob2Q6IHtkKG1ldGhvZCl9IikKKyAg
ICBpZiB2ZXJzaW9uICE9IGIiSFRUUC8xLjEiOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYi
dW5zdXBwb3J0ZWQgSFRUUCB2ZXJzaW9uOiB7ZCh2ZXJzaW9uKX0iKQorICAgIHBhdGggPSByYXdf
cGF0aC5kZWNvZGUoImFzY2lpIiwgInN1cnJvZ2F0ZWVzY2FwZSIpCisKKyAgICBoZWFkZXJzID0g
YXdhaXQgcmVhZF9oZWFkZXJzKHN0cmVhbSkKKworICAgIHJldHVybiBwYXRoLCBoZWFkZXJzCisK
KworYXN5bmMgZGVmIHJlYWRfcmVzcG9uc2Uoc3RyZWFtOiBhc3luY2lvLlN0cmVhbVJlYWRlcikg
LT4gVHVwbGVbaW50LCBzdHIsICJIZWFkZXJzIl06CisgICAgIiIiCisgICAgUmVhZCBhbiBIVFRQ
LzEuMSByZXNwb25zZSBhbmQgcmV0dXJuIGBgKHN0YXR1c19jb2RlLCByZWFzb24sIGhlYWRlcnMp
YGAuCisKKyAgICBgYHJlYXNvbmBgIGFuZCBgYGhlYWRlcnNgYCBhcmUgZXhwZWN0ZWQgdG8gY29u
dGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisgICAgT3RoZXIgY2hhcmFjdGVycyBhcmUgcmVw
cmVzZW50ZWQgd2l0aCBzdXJyb2dhdGUgZXNjYXBlcy4KKworICAgIDpmdW5jOmByZWFkX3JlcXVl
c3RgIGRvZXNuJ3QgYXR0ZW1wdCB0byByZWFkIHRoZSByZXNwb25zZSBib2R5IGJlY2F1c2UKKyAg
ICBXZWJTb2NrZXQgaGFuZHNoYWtlIHJlc3BvbnNlcyBkb24ndCBoYXZlIG9uZS4gSWYgdGhlIHJl
c3BvbnNlIGNvbnRhaW5zIGEKKyAgICBib2R5LCBpdCBtYXkgYmUgcmVhZCBmcm9tIGBgc3RyZWFt
YGAgYWZ0ZXIgdGhpcyBjb3JvdXRpbmUgcmV0dXJucy4KKworICAgIDpwYXJhbSBzdHJlYW06IGlu
cHV0IHRvIHJlYWQgdGhlIHJlc3BvbnNlIGZyb20KKyAgICA6cmFpc2VzIEVPRkVycm9yOiBpZiB0
aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQgd2l0aG91dCBhIGZ1bGwgSFRUUCByZXNwb25zZQorICAg
IDpyYWlzZXMgU2VjdXJpdHlFcnJvcjogaWYgdGhlIHJlc3BvbnNlIGV4Y2VlZHMgYSBzZWN1cml0
eSBsaW1pdAorICAgIDpyYWlzZXMgVmFsdWVFcnJvcjogaWYgdGhlIHJlc3BvbnNlIGlzbid0IHdl
bGwgZm9ybWF0dGVkCisKKyAgICAiIiIKKyAgICAjIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM3MjMwI3NlY3Rpb24tMy4xLjIKKworICAgICMgQXMgaW4gcmVhZF9yZXF1ZXN0LCBwYXJz
aW5nIGlzIHNpbXBsZSBiZWNhdXNlIGEgZml4ZWQgdmFsdWUgaXMgZXhwZWN0ZWQKKyAgICAjIGZv
ciB2ZXJzaW9uLCBzdGF0dXNfY29kZSBpcyBhIDMtZGlnaXQgbnVtYmVyLCBhbmQgcmVhc29uIGNh
biBiZSBpZ25vcmVkLgorCisgICAgdHJ5OgorICAgICAgICBzdGF0dXNfbGluZSA9IGF3YWl0IHJl
YWRfbGluZShzdHJlYW0pCisgICAgZXhjZXB0IEVPRkVycm9yIGFzIGV4YzoKKyAgICAgICAgcmFp
c2UgRU9GRXJyb3IoImNvbm5lY3Rpb24gY2xvc2VkIHdoaWxlIHJlYWRpbmcgSFRUUCBzdGF0dXMg
bGluZSIpIGZyb20gZXhjCisKKyAgICB0cnk6CisgICAgICAgIHZlcnNpb24sIHJhd19zdGF0dXNf
Y29kZSwgcmF3X3JlYXNvbiA9IHN0YXR1c19saW5lLnNwbGl0KGIiICIsIDIpCisgICAgZXhjZXB0
IFZhbHVlRXJyb3I6ICAjIG5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgMywg
Z290IDEtMikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmImludmFsaWQgSFRUUCBzdGF0dXMg
bGluZToge2Qoc3RhdHVzX2xpbmUpfSIpIGZyb20gTm9uZQorCisgICAgaWYgdmVyc2lvbiAhPSBi
IkhUVFAvMS4xIjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmInVuc3VwcG9ydGVkIEhUVFAg
dmVyc2lvbjoge2QodmVyc2lvbil9IikKKyAgICB0cnk6CisgICAgICAgIHN0YXR1c19jb2RlID0g
aW50KHJhd19zdGF0dXNfY29kZSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjogICMgaW52YWxpZCBs
aXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgMTAKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihm
ImludmFsaWQgSFRUUCBzdGF0dXMgY29kZToge2QocmF3X3N0YXR1c19jb2RlKX0iKSBmcm9tIE5v
bmUKKyAgICBpZiBub3QgMTAwIDw9IHN0YXR1c19jb2RlIDwgMTAwMDoKKyAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcihmInVuc3VwcG9ydGVkIEhUVFAgc3RhdHVzIGNvZGU6IHtkKHJhd19zdGF0dXNf
Y29kZSl9IikKKyAgICBpZiBub3QgX3ZhbHVlX3JlLmZ1bGxtYXRjaChyYXdfcmVhc29uKToKKyAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcihmImludmFsaWQgSFRUUCByZWFzb24gcGhyYXNlOiB7ZChy
YXdfcmVhc29uKX0iKQorICAgIHJlYXNvbiA9IHJhd19yZWFzb24uZGVjb2RlKCkKKworICAgIGhl
YWRlcnMgPSBhd2FpdCByZWFkX2hlYWRlcnMoc3RyZWFtKQorCisgICAgcmV0dXJuIHN0YXR1c19j
b2RlLCByZWFzb24sIGhlYWRlcnMKKworCithc3luYyBkZWYgcmVhZF9oZWFkZXJzKHN0cmVhbTog
YXN5bmNpby5TdHJlYW1SZWFkZXIpIC0+ICJIZWFkZXJzIjoKKyAgICAiIiIKKyAgICBSZWFkIEhU
VFAgaGVhZGVycyBmcm9tIGBgc3RyZWFtYGAuCisKKyAgICBOb24tQVNDSUkgY2hhcmFjdGVycyBh
cmUgcmVwcmVzZW50ZWQgd2l0aCBzdXJyb2dhdGUgZXNjYXBlcy4KKworICAgICIiIgorICAgICMg
aHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjIKKworICAgICMg
V2UgZG9uJ3QgYXR0ZW1wdCB0byBzdXBwb3J0IG9ic29sZXRlIGxpbmUgZm9sZGluZy4KKworICAg
IGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAgICBmb3IgXyBpbiByYW5nZShNQVhfSEVBREVSUyArIDEp
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsaW5lID0gYXdhaXQgcmVhZF9saW5lKHN0cmVh
bSkKKyAgICAgICAgZXhjZXB0IEVPRkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEVP
RkVycm9yKCJjb25uZWN0aW9uIGNsb3NlZCB3aGlsZSByZWFkaW5nIEhUVFAgaGVhZGVycyIpIGZy
b20gZXhjCisgICAgICAgIGlmIGxpbmUgPT0gYiIiOgorICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICB0cnk6CisgICAgICAgICAgICByYXdfbmFtZSwgcmF3X3ZhbHVlID0gbGluZS5zcGxpdChi
IjoiLCAxKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogICMgbm90IGVub3VnaCB2YWx1ZXMg
dG8gdW5wYWNrIChleHBlY3RlZCAyLCBnb3QgMSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoZiJpbnZhbGlkIEhUVFAgaGVhZGVyIGxpbmU6IHtkKGxpbmUpfSIpIGZyb20gTm9uZQorICAg
ICAgICBpZiBub3QgX3Rva2VuX3JlLmZ1bGxtYXRjaChyYXdfbmFtZSk6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKGYiaW52YWxpZCBIVFRQIGhlYWRlciBuYW1lOiB7ZChyYXdfbmFtZSl9
IikKKyAgICAgICAgcmF3X3ZhbHVlID0gcmF3X3ZhbHVlLnN0cmlwKGIiIFx0IikKKyAgICAgICAg
aWYgbm90IF92YWx1ZV9yZS5mdWxsbWF0Y2gocmF3X3ZhbHVlKToKKyAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoZiJpbnZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlOiB7ZChyYXdfdmFsdWUpfSIp
CisKKyAgICAgICAgbmFtZSA9IHJhd19uYW1lLmRlY29kZSgiYXNjaWkiKSAgIyBndWFyYW50ZWVk
IHRvIGJlIEFTQ0lJIGF0IHRoaXMgcG9pbnQKKyAgICAgICAgdmFsdWUgPSByYXdfdmFsdWUuZGVj
b2RlKCJhc2NpaSIsICJzdXJyb2dhdGVlc2NhcGUiKQorICAgICAgICBoZWFkZXJzW25hbWVdID0g
dmFsdWUKKworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIHdlYnNvY2tldHMuZXhjZXB0aW9ucy5T
ZWN1cml0eUVycm9yKCJ0b28gbWFueSBIVFRQIGhlYWRlcnMiKQorCisgICAgcmV0dXJuIGhlYWRl
cnMKKworCithc3luYyBkZWYgcmVhZF9saW5lKHN0cmVhbTogYXN5bmNpby5TdHJlYW1SZWFkZXIp
IC0+IGJ5dGVzOgorICAgICIiIgorICAgIFJlYWQgYSBzaW5nbGUgbGluZSBmcm9tIGBgc3RyZWFt
YGAuCisKKyAgICBDUkxGIGlzIHN0cmlwcGVkIGZyb20gdGhlIHJldHVybiB2YWx1ZS4KKworICAg
ICIiIgorICAgICMgU2VjdXJpdHk6IHRoaXMgaXMgYm91bmRlZCBieSB0aGUgU3RyZWFtUmVhZGVy
J3MgbGltaXQgKGRlZmF1bHQgPSAzMsKgS2lCKS4KKyAgICBsaW5lID0gYXdhaXQgc3RyZWFtLnJl
YWRsaW5lKCkKKyAgICAjIFNlY3VyaXR5OiB0aGlzIGd1YXJhbnRlZXMgaGVhZGVyIHZhbHVlcyBh
cmUgc21hbGwgKGhhcmQtY29kZWQgPSA0wqBLaUIpCisgICAgaWYgbGVuKGxpbmUpID4gTUFYX0xJ
TkU6CisgICAgICAgIHJhaXNlIHdlYnNvY2tldHMuZXhjZXB0aW9ucy5TZWN1cml0eUVycm9yKCJs
aW5lIHRvbyBsb25nIikKKyAgICAjIE5vdCBtYW5kYXRvcnkgYnV0IHNhZmUgLSBodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuNQorICAgIGlmIG5vdCBsaW5lLmVu
ZHN3aXRoKGIiXHJcbiIpOgorICAgICAgICByYWlzZSBFT0ZFcnJvcigibGluZSB3aXRob3V0IENS
TEYiKQorICAgIHJldHVybiBsaW5lWzotMl0KKworCitjbGFzcyBNdWx0aXBsZVZhbHVlc0Vycm9y
KExvb2t1cEVycm9yKToKKyAgICAiIiIKKyAgICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gOmNsYXNz
OmBIZWFkZXJzYCBoYXMgbW9yZSB0aGFuIG9uZSB2YWx1ZSBmb3IgYSBrZXkuCisKKyAgICAiIiIK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIyBJbXBsZW1lbnQgdGhl
IHNhbWUgbG9naWMgYXMgS2V5RXJyb3Jfc3RyIGluIE9iamVjdHMvZXhjZXB0aW9ucy5jLgorICAg
ICAgICBpZiBsZW4oc2VsZi5hcmdzKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIHJlcHIoc2Vs
Zi5hcmdzWzBdKQorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3N0cl9fKCkKKworCitjbGFzcyBI
ZWFkZXJzKE11dGFibGVNYXBwaW5nW3N0ciwgc3RyXSk6CisgICAgIiIiCisgICAgRWZmaWNpZW50
IGRhdGEgc3RydWN0dXJlIGZvciBtYW5pcHVsYXRpbmcgSFRUUCBoZWFkZXJzLgorCisgICAgQSA6
Y2xhc3M6YGxpc3RgIG9mIGBgKG5hbWUsIHZhbHVlcylgYCBpcyBpbmVmZmljaWVudCBmb3IgbG9v
a3Vwcy4KKworICAgIEEgOmNsYXNzOmBkaWN0YCBkb2Vzbid0IHN1ZmZpY2UgYmVjYXVzZSBoZWFk
ZXIgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICBhbmQgbXVsdGlwbGUgb2NjdXJyZW5j
ZXMgb2YgaGVhZGVycyB3aXRoIHRoZSBzYW1lIG5hbWUgYXJlIHBvc3NpYmxlLgorCisgICAgOmNs
YXNzOmBIZWFkZXJzYCBzdG9yZXMgSFRUUCBoZWFkZXJzIGluIGEgaHlicmlkIGRhdGEgc3RydWN0
dXJlIHRvIHByb3ZpZGUKKyAgICBlZmZpY2llbnQgaW5zZXJ0aW9ucyBhbmQgbG9va3VwcyB3aGls
ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCBkYXRhLgorCisgICAgSW4gb3JkZXIgdG8gYWNjb3Vu
dCBmb3IgbXVsdGlwbGUgdmFsdWVzIHdpdGggbWluaW1hbCBoYXNzbGUsCisgICAgOmNsYXNzOmBI
ZWFkZXJzYCBmb2xsb3dzIHRoaXMgbG9naWM6CisKKyAgICAtIFdoZW4gZ2V0dGluZyBhIGhlYWRl
ciB3aXRoIGBgaGVhZGVyc1tuYW1lXWBgOgorICAgICAgICAtIGlmIHRoZXJlJ3Mgbm8gdmFsdWUs
IDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQ7CisgICAgICAgIC0gaWYgdGhlcmUncyBleGFjdGx5
IG9uZSB2YWx1ZSwgaXQncyByZXR1cm5lZDsKKyAgICAgICAgLSBpZiB0aGVyZSdzIG1vcmUgdGhh
biBvbmUgdmFsdWUsIDpleGM6YE11bHRpcGxlVmFsdWVzRXJyb3JgIGlzIHJhaXNlZC4KKworICAg
IC0gV2hlbiBzZXR0aW5nIGEgaGVhZGVyIHdpdGggYGBoZWFkZXJzW25hbWVdID0gdmFsdWVgYCwg
dGhlIHZhbHVlIGlzCisgICAgICBhcHBlbmRlZCB0byB0aGUgbGlzdCBvZiB2YWx1ZXMgZm9yIHRo
YXQgaGVhZGVyLgorCisgICAgLSBXaGVuIGRlbGV0aW5nIGEgaGVhZGVyIHdpdGggYGBkZWwgaGVh
ZGVyc1tuYW1lXWBgLCBhbGwgdmFsdWVzIGZvciB0aGF0CisgICAgICBoZWFkZXIgYXJlIHJlbW92
ZWQgKHRoaXMgaXMgc2xvdykuCisKKyAgICBPdGhlciBtZXRob2RzIGZvciBtYW5pcHVsYXRpbmcg
aGVhZGVycyBhcmUgY29uc2lzdGVudCB3aXRoIHRoaXMgbG9naWMuCisKKyAgICBBcyBsb25nIGFz
IG5vIGhlYWRlciBvY2N1cnMgbXVsdGlwbGUgdGltZXMsIDpjbGFzczpgSGVhZGVyc2AgYmVoYXZl
cyBsaWtlCisgICAgOmNsYXNzOmBkaWN0YCwgZXhjZXB0IGtleXMgYXJlIGxvd2VyLWNhc2VkIHRv
IHByb3ZpZGUgY2FzZS1pbnNlbnNpdGl2aXR5LgorCisgICAgVHdvIG1ldGhvZHMgc3VwcG9ydCBz
dXBwb3J0IG1hbmlwdWxhdGluZyBtdWx0aXBsZSB2YWx1ZXMgZXhwbGljaXRseToKKworICAgIC0g
Om1ldGg6YGdldF9hbGxgIHJldHVybnMgYSBsaXN0IG9mIGFsbCB2YWx1ZXMgZm9yIGEgaGVhZGVy
OworICAgIC0gOm1ldGg6YHJhd19pdGVtc2AgcmV0dXJucyBhbiBpdGVyYXRvciBvZiBgYChuYW1l
LCB2YWx1ZXMpYGAgcGFpcnMuCisKKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9IFsiX2RpY3Qi
LCAiX2xpc3QiXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzOiBBbnksICoqa3dhcmdz
OiBzdHIpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2RpY3Q6IERpY3Rbc3RyLCBMaXN0W3N0cl1d
ID0ge30KKyAgICAgICAgc2VsZi5fbGlzdDogTGlzdFtUdXBsZVtzdHIsIHN0cl1dID0gW10KKyAg
ICAgICAgIyBNdXRhYmxlTWFwcGluZy51cGRhdGUgY2FsbHMgX19zZXRpdGVtX18gZm9yIGVhY2gg
KG5hbWUsIHZhbHVlKSBwYWlyLgorICAgICAgICBzZWxmLnVwZGF0ZSgqYXJncywgKiprd2FyZ3Mp
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAiIi5qb2lu
KGYie2tleX06IHt2YWx1ZX1cclxuIiBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLl9saXN0KSArICJc
clxuIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuIGYi
e3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSh7c2VsZi5fbGlzdCFyfSkiCisKKyAgICBkZWYgY29w
eShzZWxmKSAtPiAiSGVhZGVycyI6CisgICAgICAgIGNvcHkgPSBzZWxmLl9fY2xhc3NfXygpCisg
ICAgICAgIGNvcHkuX2RpY3QgPSBzZWxmLl9kaWN0LmNvcHkoKQorICAgICAgICBjb3B5Ll9saXN0
ID0gc2VsZi5fbGlzdC5jb3B5KCkKKyAgICAgICAgcmV0dXJuIGNvcHkKKworICAgICMgQ29sbGVj
dGlvbiBtZXRob2RzCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleTogb2JqZWN0KSAt
PiBib29sOgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShrZXksIHN0cikgYW5kIGtleS5sb3dl
cigpIGluIHNlbGYuX2RpY3QKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKSAtPiBJdGVyYXRvcltz
dHJdOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9kaWN0KQorCisgICAgZGVmIF9fbGVuX18o
c2VsZikgLT4gaW50OgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2RpY3QpCisKKyAgICAjIE11
dGFibGVNYXBwaW5nIG1ldGhvZHMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IHN0
cikgLT4gc3RyOgorICAgICAgICB2YWx1ZSA9IHNlbGYuX2RpY3Rba2V5Lmxvd2VyKCldCisgICAg
ICAgIGlmIGxlbih2YWx1ZSkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgTXVsdGlwbGVWYWx1ZXNFcnJvcihrZXkpCisK
KyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBzdHIsIHZhbHVlOiBzdHIpIC0+IE5vbmU6
CisgICAgICAgIHNlbGYuX2RpY3Quc2V0ZGVmYXVsdChrZXkubG93ZXIoKSwgW10pLmFwcGVuZCh2
YWx1ZSkKKyAgICAgICAgc2VsZi5fbGlzdC5hcHBlbmQoKGtleSwgdmFsdWUpKQorCisgICAgZGVm
IF9fZGVsaXRlbV9fKHNlbGYsIGtleTogc3RyKSAtPiBOb25lOgorICAgICAgICBrZXlfbG93ZXIg
PSBrZXkubG93ZXIoKQorICAgICAgICBzZWxmLl9kaWN0Ll9fZGVsaXRlbV9fKGtleV9sb3dlcikK
KyAgICAgICAgIyBUaGlzIGlzIGluZWZmaWNlbnQuIEZvcnR1bmF0ZWx5IGRlbGV0aW5nIEhUVFAg
aGVhZGVycyBpcyB1bmNvbW1vbi4KKyAgICAgICAgc2VsZi5fbGlzdCA9IFsoaywgdikgZm9yIGss
IHYgaW4gc2VsZi5fbGlzdCBpZiBrLmxvd2VyKCkgIT0ga2V5X2xvd2VyXQorCisgICAgZGVmIF9f
ZXFfXyhzZWxmLCBvdGhlcjogQW55KSAtPiBib29sOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShvdGhlciwgSGVhZGVycyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2xpc3QgPT0gb3RoZXIuX2xpc3QKKworICAgIGRlZiBjbGVhcihz
ZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmVtb3ZlIGFsbCBoZWFkZXJzLgor
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9kaWN0ID0ge30KKyAgICAgICAgc2VsZi5fbGlz
dCA9IFtdCisKKyAgICAjIE1ldGhvZHMgZm9yIGhhbmRsaW5nIG11bHRpcGxlIHZhbHVlcworCisg
ICAgZGVmIGdldF9hbGwoc2VsZiwga2V5OiBzdHIpIC0+IExpc3Rbc3RyXToKKyAgICAgICAgIiIi
CisgICAgICAgIFJldHVybiB0aGUgKHBvc3NpYmx5IGVtcHR5KSBsaXN0IG9mIGFsbCB2YWx1ZXMg
Zm9yIGEgaGVhZGVyLgorCisgICAgICAgIDpwYXJhbSBrZXk6IGhlYWRlciBuYW1lCisKKyAgICAg
ICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9kaWN0LmdldChrZXkubG93ZXIoKSwgW10pCisK
KyAgICBkZWYgcmF3X2l0ZW1zKHNlbGYpIC0+IEl0ZXJhdG9yW1R1cGxlW3N0ciwgc3RyXV06Cisg
ICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgYWxsIHZhbHVlcyBhcyBg
YChuYW1lLCB2YWx1ZSlgYCBwYWlycy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGl0
ZXIoc2VsZi5fbGlzdCkKKworCitIZWFkZXJzTGlrZSA9IFVuaW9uW0hlYWRlcnMsIE1hcHBpbmdb
c3RyLCBzdHJdLCBJdGVyYWJsZVtUdXBsZVtzdHIsIHN0cl1dXQorCisKKyMgYXQgdGhlIGJvdHRv
bSB0byBhbGxvdyBjaXJjdWxhciBpbXBvcnQsIGJlY2F1c2UgQWJvcnRIYW5kc2hha2UgZGVwZW5k
cyBvbiBIZWFkZXJzTGlrZQoraW1wb3J0IHdlYnNvY2tldHMuZXhjZXB0aW9ucyAgIyBpc29ydDpz
a2lwICMgbm9xYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3By
b3RvY29sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3Byb3RvY29sLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmMyOWIyYTUyNDAyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3Byb3RvY29sLnB5
CkBAIC0wLDAgKzEsMTQyOSBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLnByb3RvY29sYCBoYW5k
bGVzIFdlYlNvY2tldCBjb250cm9sIGFuZCBkYXRhIGZyYW1lcy4KKworU2VlIGBzZWN0aW9ucyA0
IHRvIDggb2YgUkZDIDY0NTVgXy4KKworLi4gX3NlY3Rpb25zIDQgdG8gOCBvZiBSRkMgNjQ1NTog
aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTQKKworIiIiCisKK2lt
cG9ydCBhc3luY2lvCitpbXBvcnQgY29kZWNzCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBl
bnVtCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cnVjdAoraW1wb3J0
IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHR5cGluZyBpbXBvcnQgKAorICAgIEFueSwKKyAg
ICBBc3luY0l0ZXJhYmxlLAorICAgIEFzeW5jSXRlcmF0b3IsCisgICAgQXdhaXRhYmxlLAorICAg
IERlcXVlLAorICAgIERpY3QsCisgICAgSXRlcmFibGUsCisgICAgTGlzdCwKKyAgICBPcHRpb25h
bCwKKyAgICBVbmlvbiwKKyAgICBjYXN0LAorKQorCitmcm9tIC5leGNlcHRpb25zIGltcG9ydCAo
CisgICAgQ29ubmVjdGlvbkNsb3NlZCwKKyAgICBDb25uZWN0aW9uQ2xvc2VkRXJyb3IsCisgICAg
Q29ubmVjdGlvbkNsb3NlZE9LLAorICAgIEludmFsaWRTdGF0ZSwKKyAgICBQYXlsb2FkVG9vQmln
LAorICAgIFByb3RvY29sRXJyb3IsCispCitmcm9tIC5leHRlbnNpb25zLmJhc2UgaW1wb3J0IEV4
dGVuc2lvbgorZnJvbSAuZnJhbWluZyBpbXBvcnQgKgorZnJvbSAuaGFuZHNoYWtlIGltcG9ydCAq
Citmcm9tIC5odHRwIGltcG9ydCBIZWFkZXJzCitmcm9tIC50eXBpbmcgaW1wb3J0IERhdGEKKwor
CitfX2FsbF9fID0gWyJXZWJTb2NrZXRDb21tb25Qcm90b2NvbCJdCisKK2xvZ2dlciA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKKyMgQSBXZWJTb2NrZXQgY29ubmVjdGlvbiBnb2Vz
IHRocm91Z2ggdGhlIGZvbGxvd2luZyBmb3VyIHN0YXRlcywgaW4gb3JkZXI6CisKKworY2xhc3Mg
U3RhdGUoZW51bS5JbnRFbnVtKToKKyAgICBDT05ORUNUSU5HLCBPUEVOLCBDTE9TSU5HLCBDTE9T
RUQgPSByYW5nZSg0KQorCisKKyMgSW4gb3JkZXIgdG8gZW5zdXJlIGNvbnNpc3RlbmN5LCB0aGUg
Y29kZSBhbHdheXMgY2hlY2tzIHRoZSBjdXJyZW50IHZhbHVlIG9mCisjIFdlYlNvY2tldENvbW1v
blByb3RvY29sLnN0YXRlIGJlZm9yZSBhc3NpZ25pbmcgYSBuZXcgdmFsdWUgYW5kIG5ldmVyIHlp
ZWxkcworIyBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlIGFzc2lnbm1lbnQuCisKKworY2xhc3Mg
V2ViU29ja2V0Q29tbW9uUHJvdG9jb2woYXN5bmNpby5Qcm90b2NvbCk6CisgICAgIiIiCisgICAg
OmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgc3ViY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBkYXRh
IHRyYW5zZmVyIHBoYXNlLgorCisgICAgT25jZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMg
ZXN0YWJsaXNoZWQsIGR1cmluZyB0aGUgZGF0YSB0cmFuc2ZlcgorICAgIHBoYXNlLCB0aGUgcHJv
dG9jb2wgaXMgYWxtb3N0IHN5bW1ldHJpY2FsIGJldHdlZW4gdGhlIHNlcnZlciBzaWRlIGFuZCB0
aGUKKyAgICBjbGllbnQgc2lkZS4gOmNsYXNzOmBXZWJTb2NrZXRDb21tb25Qcm90b2NvbGAgaW1w
bGVtZW50cyBsb2dpYyB0aGF0J3MKKyAgICBzaGFyZWQgYmV0d2VlbiBzZXJ2ZXJzIGFuZCBjbGll
bnRzLi4KKworICAgIFN1YmNsYXNzZXMgc3VjaCBhcyA6Y2xhc3M6YH53ZWJzb2NrZXRzLnNlcnZl
ci5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgYW5kCisgICAgOmNsYXNzOmB+d2Vic29ja2V0cy5j
bGllbnQuV2ViU29ja2V0Q2xpZW50UHJvdG9jb2xgIGltcGxlbWVudCB0aGUgb3BlbmluZworICAg
IGhhbmRzaGFrZSwgd2hpY2ggaXMgZGlmZmVyZW50IGJldHdlZW4gc2VydmVycyBhbmQgY2xpZW50
cy4KKworICAgIDpjbGFzczpgV2ViU29ja2V0Q29tbW9uUHJvdG9jb2xgIHBlcmZvcm1zIGZvdXIg
ZnVuY3Rpb25zOgorCisgICAgKiBJdCBydW5zIGEgdGFzayB0aGF0IHN0b3JlcyBpbmNvbWluZyBk
YXRhIGZyYW1lcyBpbiBhIHF1ZXVlIGFuZCBtYWtlcworICAgICAgdGhlbSBhdmFpbGFibGUgd2l0
aCB0aGUgOm1ldGg6YHJlY3ZgIGNvcm91dGluZS4KKyAgICAqIEl0IHNlbmRzIG91dGdvaW5nIGRh
dGEgZnJhbWVzIHdpdGggdGhlIDptZXRoOmBzZW5kYCBjb3JvdXRpbmUuCisgICAgKiBJdCBkZWFs
cyB3aXRoIGNvbnRyb2wgZnJhbWVzIGF1dG9tYXRpY2FsbHkuCisgICAgKiBJdCBwZXJmb3JtcyB0
aGUgY2xvc2luZyBoYW5kc2hha2UuCisKKyAgICA6Y2xhc3M6YFdlYlNvY2tldENvbW1vblByb3Rv
Y29sYCBzdXBwb3J0cyBhc3luY2hyb25vdXMgaXRlcmF0aW9uOjoKKworICAgICAgICBhc3luYyBm
b3IgbWVzc2FnZSBpbiB3ZWJzb2NrZXQ6CisgICAgICAgICAgICBhd2FpdCBwcm9jZXNzKG1lc3Nh
Z2UpCisKKyAgICBUaGUgaXRlcmF0b3IgeWllbGRzIGluY29taW5nIG1lc3NhZ2VzLiBJdCBleGl0
cyBub3JtYWxseSB3aGVuIHRoZQorICAgIGNvbm5lY3Rpb24gaXMgY2xvc2VkIHdpdGggdGhlIGNs
b3NlIGNvZGUgMTAwMCAoT0spIG9yIDEwMDEgKGdvaW5nIGF3YXkpLgorICAgIEl0IHJhaXNlcyBh
IDpleGM6YH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZEVycm9yYCBleGNl
cHRpb24KKyAgICB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCB3aXRoIGFueSBvdGhlciBj
b2RlLgorCisgICAgT25jZSB0aGUgY29ubmVjdGlvbiBpcyBvcGVuLCBhIGBQaW5nIGZyYW1lYF8g
aXMgc2VudCBldmVyeQorICAgIGBgcGluZ19pbnRlcnZhbGBgIHNlY29uZHMuIFRoaXMgc2VydmVz
IGFzIGEga2VlcGFsaXZlLiBJdCBoZWxwcyBrZWVwaW5nCisgICAgdGhlIGNvbm5lY3Rpb24gb3Bl
biwgZXNwZWNpYWxseSBpbiB0aGUgcHJlc2VuY2Ugb2YgcHJveGllcyB3aXRoIHNob3J0CisgICAg
dGltZW91dHMgb24gaW5hY3RpdmUgY29ubmVjdGlvbnMuIFNldCBgYHBpbmdfaW50ZXJ2YWxgYCB0
byBgYE5vbmVgYCB0bworICAgIGRpc2FibGUgdGhpcyBiZWhhdmlvci4KKworICAgIC4uIF9QaW5n
IGZyYW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuNS4y
CisKKyAgICBJZiB0aGUgY29ycmVzcG9uZGluZyBgUG9uZyBmcmFtZWBfIGlzbid0IHJlY2VpdmVk
IHdpdGhpbiBgYHBpbmdfdGltZW91dGBgCisgICAgc2Vjb25kcywgdGhlIGNvbm5lY3Rpb24gaXMg
Y29uc2lkZXJlZCB1bnVzYWJsZSBhbmQgaXMgY2xvc2VkIHdpdGgKKyAgICBjb2RlIDEwMTEuIFRo
aXMgZW5zdXJlcyB0aGF0IHRoZSByZW1vdGUgZW5kcG9pbnQgcmVtYWlucyByZXNwb25zaXZlLiBT
ZXQKKyAgICBgYHBpbmdfdGltZW91dGBgIHRvIGBgTm9uZWBgIHRvIGRpc2FibGUgdGhpcyBiZWhh
dmlvci4KKworICAgIC4uIF9Qb25nIGZyYW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNjQ1NSNzZWN0aW9uLTUuNS4zCisKKyAgICBUaGUgYGBjbG9zZV90aW1lb3V0YGAgcGFyYW1l
dGVyIGRlZmluZXMgYSBtYXhpbXVtIHdhaXQgdGltZSBpbiBzZWNvbmRzIGZvcgorICAgIGNvbXBs
ZXRpbmcgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCB0ZXJtaW5hdGluZyB0aGUgVENQIGNvbm5l
Y3Rpb24uCisgICAgOm1ldGg6YGNsb3NlYCBjb21wbGV0ZXMgaW4gYXQgbW9zdCBgYDQgKiBjbG9z
ZV90aW1lb3V0YGAgb24gdGhlIHNlcnZlcgorICAgIHNpZGUgYW5kIGBgNSAqIGNsb3NlX3RpbWVv
dXRgYCBvbiB0aGUgY2xpZW50IHNpZGUuCisKKyAgICBgYGNsb3NlX3RpbWVvdXRgYCBuZWVkcyB0
byBiZSBhIHBhcmFtZXRlciBvZiB0aGUgcHJvdG9jb2wgYmVjYXVzZQorICAgIGBgd2Vic29ja2V0
c2BgIHVzdWFsbHkgY2FsbHMgOm1ldGg6YGNsb3NlYCBpbXBsaWNpdGx5OgorCisgICAgLSBvbiB0
aGUgc2VydmVyIHNpZGUsIHdoZW4gdGhlIGNvbm5lY3Rpb24gaGFuZGxlciB0ZXJtaW5hdGVzLAor
ICAgIC0gb24gdGhlIGNsaWVudCBzaWRlLCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgbWFuYWdl
ciBmb3IgdGhlIGNvbm5lY3Rpb24uCisKKyAgICBUbyBhcHBseSBhIHRpbWVvdXQgdG8gYW55IG90
aGVyIEFQSSwgd3JhcCBpdCBpbiA6ZnVuYzpgfmFzeW5jaW8ud2FpdF9mb3JgLgorCisgICAgVGhl
IGBgbWF4X3NpemVgYCBwYXJhbWV0ZXIgZW5mb3JjZXMgdGhlIG1heGltdW0gc2l6ZSBmb3IgaW5j
b21pbmcgbWVzc2FnZXMKKyAgICBpbiBieXRlcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMcKgTWlC
LiBgYE5vbmVgYCBkaXNhYmxlcyB0aGUgbGltaXQuIElmIGEKKyAgICBtZXNzYWdlIGxhcmdlciB0
aGFuIHRoZSBtYXhpbXVtIHNpemUgaXMgcmVjZWl2ZWQsIDptZXRoOmByZWN2YCB3aWxsCisgICAg
cmFpc2UgOmV4YzpgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2VkRXJyb3Jg
IGFuZCB0aGUKKyAgICBjb25uZWN0aW9uIHdpbGwgYmUgY2xvc2VkIHdpdGggY29kZSAxMDA5Lgor
CisgICAgVGhlIGBgbWF4X3F1ZXVlYGAgcGFyYW1ldGVyIHNldHMgdGhlIG1heGltdW0gbGVuZ3Ro
IG9mIHRoZSBxdWV1ZSB0aGF0CisgICAgaG9sZHMgaW5jb21pbmcgbWVzc2FnZXMuIFRoZSBkZWZh
dWx0IHZhbHVlIGlzIGBgMzJgYC4gYGBOb25lYGAgZGlzYWJsZXMKKyAgICB0aGUgbGltaXQuIE1l
c3NhZ2VzIGFyZSBhZGRlZCB0byBhbiBpbi1tZW1vcnkgcXVldWUgd2hlbiB0aGV5J3JlIHJlY2Vp
dmVkOworICAgIHRoZW4gOm1ldGg6YHJlY3ZgIHBvcHMgZnJvbSB0aGF0IHF1ZXVlLiBJbiBvcmRl
ciB0byBwcmV2ZW50IGV4Y2Vzc2l2ZQorICAgIG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIG1lc3Nh
Z2VzIGFyZSByZWNlaXZlZCBmYXN0ZXIgdGhhbiB0aGV5IGNhbiBiZQorICAgIHByb2Nlc3NlZCwg
dGhlIHF1ZXVlIG11c3QgYmUgYm91bmRlZC4gSWYgdGhlIHF1ZXVlIGZpbGxzIHVwLCB0aGUgcHJv
dG9jb2wKKyAgICBzdG9wcyBwcm9jZXNzaW5nIGluY29taW5nIGRhdGEgdW50aWwgOm1ldGg6YHJl
Y3ZgIGlzIGNhbGxlZC4gSW4gdGhpcworICAgIHNpdHVhdGlvbiwgdmFyaW91cyByZWNlaXZlIGJ1
ZmZlcnMgKGF0IGxlYXN0IGluIGBgYXN5bmNpb2BgIGFuZCBpbiB0aGUgT1MpCisgICAgd2lsbCBm
aWxsIHVwLCB0aGVuIHRoZSBUQ1AgcmVjZWl2ZSB3aW5kb3cgd2lsbCBzaHJpbmssIHNsb3dpbmcg
ZG93bgorICAgIHRyYW5zbWlzc2lvbiB0byBhdm9pZCBwYWNrZXQgbG9zcy4KKworICAgIFNpbmNl
IFB5dGhvbiBjYW4gdXNlIHVwIHRvIDQgYnl0ZXMgb2YgbWVtb3J5IHRvIHJlcHJlc2VudCBhIHNp
bmdsZQorICAgIGNoYXJhY3RlciwgZWFjaCBjb25uZWN0aW9uIG1heSB1c2UgdXAgdG8gYGA0ICog
bWF4X3NpemUgKiBtYXhfcXVldWVgYAorICAgIGJ5dGVzIG9mIG1lbW9yeSB0byBzdG9yZSBpbmNv
bWluZyBtZXNzYWdlcy4gQnkgZGVmYXVsdCwgdGhpcyBpcyAxMjjCoE1pQi4KKyAgICBZb3UgbWF5
IHdhbnQgdG8gbG93ZXIgdGhlIGxpbWl0cywgZGVwZW5kaW5nIG9uIHlvdXIgYXBwbGljYXRpb24n
cworICAgIHJlcXVpcmVtZW50cy4KKworICAgIFRoZSBgYHJlYWRfbGltaXRgYCBhcmd1bWVudCBz
ZXRzIHRoZSBoaWdoLXdhdGVyIGxpbWl0IG9mIHRoZSBidWZmZXIgZm9yCisgICAgaW5jb21pbmcg
Ynl0ZXMuIFRoZSBsb3ctd2F0ZXIgbGltaXQgaXMgaGFsZiB0aGUgaGlnaC13YXRlciBsaW1pdC4g
VGhlCisgICAgZGVmYXVsdCB2YWx1ZSBpcyA2NMKgS2lCLCBoYWxmIG9mIGFzeW5jaW8ncyBkZWZh
dWx0IChiYXNlZCBvbiB0aGUgY3VycmVudAorICAgIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpg
fmFzeW5jaW8uU3RyZWFtUmVhZGVyYCkuCisKKyAgICBUaGUgYGB3cml0ZV9saW1pdGBgIGFyZ3Vt
ZW50IHNldHMgdGhlIGhpZ2gtd2F0ZXIgbGltaXQgb2YgdGhlIGJ1ZmZlciBmb3IKKyAgICBvdXRn
b2luZyBieXRlcy4gVGhlIGxvdy13YXRlciBsaW1pdCBpcyBhIHF1YXJ0ZXIgb2YgdGhlIGhpZ2gt
d2F0ZXIgbGltaXQuCisgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgNjTCoEtpQiwgZXF1YWwgdG8g
YXN5bmNpbydzIGRlZmF1bHQgKGJhc2VkIG9uIHRoZQorICAgIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24gb2YgYGBGbG93Q29udHJvbE1peGluYGApLgorCisgICAgQXMgc29vbiBhcyB0aGUgSFRUUCBy
ZXF1ZXN0IGFuZCByZXNwb25zZSBpbiB0aGUgb3BlbmluZyBoYW5kc2hha2UgYXJlCisgICAgcHJv
Y2Vzc2VkOgorCisgICAgKiB0aGUgcmVxdWVzdCBwYXRoIGlzIGF2YWlsYWJsZSBpbiB0aGUgOmF0
dHI6YHBhdGhgIGF0dHJpYnV0ZTsKKyAgICAqIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBIVFRQ
IGhlYWRlcnMgYXJlIGF2YWlsYWJsZSBpbiB0aGUKKyAgICAgIDphdHRyOmByZXF1ZXN0X2hlYWRl
cnNgIGFuZCA6YXR0cjpgcmVzcG9uc2VfaGVhZGVyc2AgYXR0cmlidXRlcywKKyAgICAgIHdoaWNo
IGFyZSA6Y2xhc3M6YH53ZWJzb2NrZXRzLmh0dHAuSGVhZGVyc2AgaW5zdGFuY2VzLgorCisgICAg
SWYgYSBzdWJwcm90b2NvbCB3YXMgbmVnb3RpYXRlZCwgaXQncyBhdmFpbGFibGUgaW4gdGhlIDph
dHRyOmBzdWJwcm90b2NvbGAKKyAgICBhdHRyaWJ1dGUuCisKKyAgICBPbmNlIHRoZSBjb25uZWN0
aW9uIGlzIGNsb3NlZCwgdGhlIGNvZGUgaXMgYXZhaWxhYmxlIGluIHRoZQorICAgIDphdHRyOmBj
bG9zZV9jb2RlYCBhdHRyaWJ1dGUgYW5kIHRoZSByZWFzb24gaW4gOmF0dHI6YGNsb3NlX3JlYXNv
bmAuCisKKyAgICBBbGwgdGhlc2UgYXR0cmlidXRlcyBtdXN0IGJlIHRyZWF0ZWQgYXMgcmVhZC1v
bmx5LgorCisgICAgIiIiCisKKyAgICAjIFRoZXJlIGFyZSBvbmx5IHR3byBkaWZmZXJlbmNlcyBi
ZXR3ZWVuIHRoZSBjbGllbnQtc2lkZSBhbmQgc2VydmVyLXNpZGUKKyAgICAjIGJlaGF2aW9yOiBt
YXNraW5nIHRoZSBwYXlsb2FkIGFuZCBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIFRDUCBjb25uZWN0
aW9uLgorICAgICMgU2V0IGlzX2NsaWVudCA9IFRydWUvRmFsc2UgYW5kIHNpZGUgPSAiY2xpZW50
Ii8ic2VydmVyIiB0byBwaWNrIGEgc2lkZS4KKyAgICBpc19jbGllbnQ6IGJvb2wKKyAgICBzaWRl
OiBzdHIgPSAidW5kZWZpbmVkIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAor
ICAgICAgICAqLAorICAgICAgICBwaW5nX2ludGVydmFsOiBPcHRpb25hbFtmbG9hdF0gPSAyMCwK
KyAgICAgICAgcGluZ190aW1lb3V0OiBPcHRpb25hbFtmbG9hdF0gPSAyMCwKKyAgICAgICAgY2xv
c2VfdGltZW91dDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZSwKKyAgICAgICAgbWF4X3NpemU6IE9w
dGlvbmFsW2ludF0gPSAyICoqIDIwLAorICAgICAgICBtYXhfcXVldWU6IE9wdGlvbmFsW2ludF0g
PSAyICoqIDUsCisgICAgICAgIHJlYWRfbGltaXQ6IGludCA9IDIgKiogMTYsCisgICAgICAgIHdy
aXRlX2xpbWl0OiBpbnQgPSAyICoqIDE2LAorICAgICAgICBsb29wOiBPcHRpb25hbFthc3luY2lv
LkFic3RyYWN0RXZlbnRMb29wXSA9IE5vbmUsCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBhcmd1
bWVudHMgYXJlIGtlcHQgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAgICAg
IGhvc3Q6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBwb3J0OiBPcHRpb25hbFtpbnRd
ID0gTm9uZSwKKyAgICAgICAgc2VjdXJlOiBPcHRpb25hbFtib29sXSA9IE5vbmUsCisgICAgICAg
IGxlZ2FjeV9yZWN2OiBib29sID0gRmFsc2UsCisgICAgICAgIHRpbWVvdXQ6IE9wdGlvbmFsW2Zs
b2F0XSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAjIEJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5OiBjbG9zZV90aW1lb3V0IHVzZWQgdG8gYmUgY2FsbGVkIHRpbWVvdXQuCisgICAgICAg
IGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSAxMAorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigicmVuYW1lIHRpbWVvdXQgdG8gY2xvc2Vf
dGltZW91dCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgIyBJZiBib3RoIGFyZSBzcGVj
aWZpZWQsIHRpbWVvdXQgaXMgaWdub3JlZC4KKyAgICAgICAgaWYgY2xvc2VfdGltZW91dCBpcyBO
b25lOgorICAgICAgICAgICAgY2xvc2VfdGltZW91dCA9IHRpbWVvdXQKKworICAgICAgICBzZWxm
LnBpbmdfaW50ZXJ2YWwgPSBwaW5nX2ludGVydmFsCisgICAgICAgIHNlbGYucGluZ190aW1lb3V0
ID0gcGluZ190aW1lb3V0CisgICAgICAgIHNlbGYuY2xvc2VfdGltZW91dCA9IGNsb3NlX3RpbWVv
dXQKKyAgICAgICAgc2VsZi5tYXhfc2l6ZSA9IG1heF9zaXplCisgICAgICAgIHNlbGYubWF4X3F1
ZXVlID0gbWF4X3F1ZXVlCisgICAgICAgIHNlbGYucmVhZF9saW1pdCA9IHJlYWRfbGltaXQKKyAg
ICAgICAgc2VsZi53cml0ZV9saW1pdCA9IHdyaXRlX2xpbWl0CisKKyAgICAgICAgaWYgbG9vcCBp
cyBOb25lOgorICAgICAgICAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAg
ICAgICBzZWxmLmxvb3AgPSBsb29wCisKKyAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKKyAgICAg
ICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fc2VjdXJlID0gc2VjdXJlCisgICAg
ICAgIHNlbGYubGVnYWN5X3JlY3YgPSBsZWdhY3lfcmVjdgorCisgICAgICAgICMgQ29uZmlndXJl
IHJlYWQgYnVmZmVyIGxpbWl0cy4gVGhlIGhpZ2gtd2F0ZXIgbGltaXQgaXMgZGVmaW5lZCBieQor
ICAgICAgICAjIGBgc2VsZi5yZWFkX2xpbWl0YGAuIFRoZSBgYGxpbWl0YGAgYXJndW1lbnQgY29u
dHJvbHMgdGhlIGxpbmUgbGVuZ3RoCisgICAgICAgICMgbGltaXQgYW5kIGhhbGYgdGhlIGJ1ZmZl
ciBsaW1pdCBvZiA6Y2xhc3M6YH5hc3luY2lvLlN0cmVhbVJlYWRlcmAuCisgICAgICAgICMgVGhh
dCdzIHdoeSBpdCBtdXN0IGJlIHNldCB0byBoYWxmIG9mIGBgc2VsZi5yZWFkX2xpbWl0YGAuCisg
ICAgICAgIHNlbGYucmVhZGVyID0gYXN5bmNpby5TdHJlYW1SZWFkZXIobGltaXQ9cmVhZF9saW1p
dCAvLyAyLCBsb29wPWxvb3ApCisKKyAgICAgICAgIyBDb3BpZWQgZnJvbSBhc3luY2lvLkZsb3dD
b250cm9sTWl4aW4KKyAgICAgICAgc2VsZi5fcGF1c2VkID0gRmFsc2UKKyAgICAgICAgc2VsZi5f
ZHJhaW5fd2FpdGVyOiBPcHRpb25hbFthc3luY2lvLkZ1dHVyZVtOb25lXV0gPSBOb25lCisKKyAg
ICAgICAgc2VsZi5fZHJhaW5fbG9jayA9IGFzeW5jaW8uTG9jaygKKyAgICAgICAgICAgIGxvb3A9
bG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUKKyAgICAgICAg
KQorCisgICAgICAgICMgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBkYXRhIHRyYW5zZmVyIGFu
ZCBjbG9zaW5nIGhhbmRzaGFrZSwgd2hpY2gKKyAgICAgICAgIyBhcmUgc2hhcmVkIGJldHdlZW4g
dGhlIGNsaWVudC1zaWRlIGFuZCB0aGUgc2VydmVyLXNpZGUuCisgICAgICAgICMgU3ViY2xhc3Nl
cyBpbXBsZW1lbnQgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIGFuZCwgb24gc3VjY2VzcywgZXhlY3V0
ZQorICAgICAgICAjIDptZXRoOmBjb25uZWN0aW9uX29wZW5gIHRvIGNoYW5nZSB0aGUgc3RhdGUg
dG8gT1BFTi4KKyAgICAgICAgc2VsZi5zdGF0ZSA9IFN0YXRlLkNPTk5FQ1RJTkcKKyAgICAgICAg
bG9nZ2VyLmRlYnVnKCIlcyAtIHN0YXRlID0gQ09OTkVDVElORyIsIHNlbGYuc2lkZSkKKworICAg
ICAgICAjIEhUVFAgcHJvdG9jb2wgcGFyYW1ldGVycy4KKyAgICAgICAgc2VsZi5wYXRoOiBzdHIK
KyAgICAgICAgc2VsZi5yZXF1ZXN0X2hlYWRlcnM6IEhlYWRlcnMKKyAgICAgICAgc2VsZi5yZXNw
b25zZV9oZWFkZXJzOiBIZWFkZXJzCisKKyAgICAgICAgIyBXZWJTb2NrZXQgcHJvdG9jb2wgcGFy
YW1ldGVycy4KKyAgICAgICAgc2VsZi5leHRlbnNpb25zOiBMaXN0W0V4dGVuc2lvbl0gPSBbXQor
ICAgICAgICBzZWxmLnN1YnByb3RvY29sOiBPcHRpb25hbFtzdHJdID0gTm9uZQorCisgICAgICAg
ICMgVGhlIGNsb3NlIGNvZGUgYW5kIHJlYXNvbiBhcmUgc2V0IHdoZW4gcmVjZWl2aW5nIGEgY2xv
c2UgZnJhbWUgb3IKKyAgICAgICAgIyBsb3NpbmcgdGhlIFRDUCBjb25uZWN0aW9uLgorICAgICAg
ICBzZWxmLmNsb3NlX2NvZGU6IGludAorICAgICAgICBzZWxmLmNsb3NlX3JlYXNvbjogc3RyCisK
KyAgICAgICAgIyBDb21wbGV0ZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSBiZWNvbWVzIENM
T1NFRC4gVHJhbnNsYXRlcyB0aGUKKyAgICAgICAgIyA6bWV0aDpgY29ubmVjdGlvbl9sb3N0YCBj
YWxsYmFjayB0byBhIDpjbGFzczpgfmFzeW5jaW8uRnV0dXJlYAorICAgICAgICAjIHRoYXQgY2Fu
IGJlIGF3YWl0ZWQuIChPdGhlciA6Y2xhc3M6YH5hc3luY2lvLlByb3RvY29sYCBjYWxsYmFja3Mg
YXJlCisgICAgICAgICMgdHJhbnNsYXRlZCBieSBgYHNlbGYuc3RyZWFtX3JlYWRlcmBgKS4KKyAg
ICAgICAgc2VsZi5jb25uZWN0aW9uX2xvc3Rfd2FpdGVyOiBhc3luY2lvLkZ1dHVyZVtOb25lXSA9
IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCisKKyAgICAgICAgIyBRdWV1ZSBvZiByZWNlaXZlZCBtZXNz
YWdlcy4KKyAgICAgICAgc2VsZi5tZXNzYWdlczogRGVxdWVbRGF0YV0gPSBjb2xsZWN0aW9ucy5k
ZXF1ZSgpCisgICAgICAgIHNlbGYuX3BvcF9tZXNzYWdlX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNp
by5GdXR1cmVbTm9uZV1dID0gTm9uZQorICAgICAgICBzZWxmLl9wdXRfbWVzc2FnZV93YWl0ZXI6
IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9IE5vbmUKKworICAgICAgICAjIFByb3Rl
Y3Qgc2VuZGluZyBmcmFnbWVudGVkIG1lc3NhZ2VzLgorICAgICAgICBzZWxmLl9mcmFnbWVudGVk
X21lc3NhZ2Vfd2FpdGVyOiBPcHRpb25hbFthc3luY2lvLkZ1dHVyZVtOb25lXV0gPSBOb25lCisK
KyAgICAgICAgIyBNYXBwaW5nIG9mIHBpbmcgSURzIHRvIHdhaXRlcnMsIGluIGNocm9ub2xvZ2lj
YWwgb3JkZXIuCisgICAgICAgIHNlbGYucGluZ3M6IERpY3RbYnl0ZXMsIGFzeW5jaW8uRnV0dXJl
W05vbmVdXSA9IHt9CisKKyAgICAgICAgIyBUYXNrIHJ1bm5pbmcgdGhlIGRhdGEgdHJhbnNmZXIu
CisgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV90YXNrOiBhc3luY2lvLlRhc2tbTm9uZV0KKwor
ICAgICAgICAjIEV4Y2VwdGlvbiB0aGF0IG9jY3VycmVkIGR1cmluZyBkYXRhIHRyYW5zZmVyLCBp
ZiBhbnkuCisgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV9leGM6IE9wdGlvbmFsW0Jhc2VFeGNl
cHRpb25dID0gTm9uZQorCisgICAgICAgICMgVGFzayBzZW5kaW5nIGtlZXBhbGl2ZSBwaW5ncy4K
KyAgICAgICAgc2VsZi5rZWVwYWxpdmVfcGluZ190YXNrOiBhc3luY2lvLlRhc2tbTm9uZV0KKwor
ICAgICAgICAjIFRhc2sgY2xvc2luZyB0aGUgVENQIGNvbm5lY3Rpb24uCisgICAgICAgIHNlbGYu
Y2xvc2VfY29ubmVjdGlvbl90YXNrOiBhc3luY2lvLlRhc2tbTm9uZV0KKworICAgICMgQ29waWVk
IGZyb20gYXN5bmNpby5GbG93Q29udHJvbE1peGluCisgICAgYXN5bmMgZGVmIF9kcmFpbl9oZWxw
ZXIoc2VsZikgLT4gTm9uZTogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICBpZiBzZWxmLmNv
bm5lY3Rpb25fbG9zdF93YWl0ZXIuZG9uZSgpOgorICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlv
blJlc2V0RXJyb3IoIkNvbm5lY3Rpb24gbG9zdCIpCisgICAgICAgIGlmIG5vdCBzZWxmLl9wYXVz
ZWQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgd2FpdGVyID0gc2VsZi5fZHJhaW5fd2Fp
dGVyCisgICAgICAgIGFzc2VydCB3YWl0ZXIgaXMgTm9uZSBvciB3YWl0ZXIuY2FuY2VsbGVkKCkK
KyAgICAgICAgd2FpdGVyID0gc2VsZi5sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBzZWxm
Ll9kcmFpbl93YWl0ZXIgPSB3YWl0ZXIKKyAgICAgICAgYXdhaXQgd2FpdGVyCisKKyAgICAjIENv
cGllZCBmcm9tIGFzeW5jaW8uU3RyZWFtV3JpdGVyCisgICAgYXN5bmMgZGVmIF9kcmFpbihzZWxm
KSAtPiBOb25lOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgIGlmIHNlbGYucmVhZGVyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgZXhjID0gc2VsZi5yZWFkZXIuZXhjZXB0aW9uKCkKKyAg
ICAgICAgICAgIGlmIGV4YyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBleGMK
KyAgICAgICAgaWYgc2VsZi50cmFuc3BvcnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBz
ZWxmLnRyYW5zcG9ydC5pc19jbG9zaW5nKCk6CisgICAgICAgICAgICAgICAgIyBZaWVsZCB0byB0
aGUgZXZlbnQgbG9vcCBzbyBjb25uZWN0aW9uX2xvc3QoKSBtYXkgYmUKKyAgICAgICAgICAgICAg
ICAjIGNhbGxlZC4gIFdpdGhvdXQgdGhpcywgX2RyYWluX2hlbHBlcigpIHdvdWxkIHJldHVybgor
ICAgICAgICAgICAgICAgICMgaW1tZWRpYXRlbHksIGFuZCBjb2RlIHRoYXQgY2FsbHMKKyAgICAg
ICAgICAgICAgICAjICAgICB3cml0ZSguLi4pOyB5aWVsZCBmcm9tIGRyYWluKCkKKyAgICAgICAg
ICAgICAgICAjIGluIGEgbG9vcCB3b3VsZCBuZXZlciBjYWxsIGNvbm5lY3Rpb25fbG9zdCgpLCBz
byBpdAorICAgICAgICAgICAgICAgICMgd291bGQgbm90IHNlZSBhbiBlcnJvciB3aGVuIHRoZSBz
b2NrZXQgaXMgY2xvc2VkLgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoCisg
ICAgICAgICAgICAgICAgICAgIDAsIGxvb3A9c2VsZi5sb29wIGlmIHN5cy52ZXJzaW9uX2luZm9b
OjJdIDwgKDMsIDgpIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgYXdhaXQg
c2VsZi5fZHJhaW5faGVscGVyKCkKKworICAgIGRlZiBjb25uZWN0aW9uX29wZW4oc2VsZikgLT4g
Tm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gdGhlIFdlYlNvY2tldCBv
cGVuaW5nIGhhbmRzaGFrZSBjb21wbGV0ZXMuCisKKyAgICAgICAgRW50ZXIgdGhlIE9QRU4gc3Rh
dGUgYW5kIHN0YXJ0IHRoZSBkYXRhIHRyYW5zZmVyIHBoYXNlLgorCisgICAgICAgICIiIgorICAg
ICAgICAjIDQuMS4gVGhlIFdlYlNvY2tldCBDb25uZWN0aW9uIGlzIEVzdGFibGlzaGVkLgorICAg
ICAgICBhc3NlcnQgc2VsZi5zdGF0ZSBpcyBTdGF0ZS5DT05ORUNUSU5HCisgICAgICAgIHNlbGYu
c3RhdGUgPSBTdGF0ZS5PUEVOCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgLSBzdGF0ZSA9IE9Q
RU4iLCBzZWxmLnNpZGUpCisgICAgICAgICMgU3RhcnQgdGhlIHRhc2sgdGhhdCByZWNlaXZlcyBp
bmNvbWluZyBXZWJTb2NrZXQgbWVzc2FnZXMuCisgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV90
YXNrID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYudHJhbnNmZXJfZGF0YSgpKQorICAgICAg
ICAjIFN0YXJ0IHRoZSB0YXNrIHRoYXQgc2VuZHMgcGluZ3MgYXQgcmVndWxhciBpbnRlcnZhbHMu
CisgICAgICAgIHNlbGYua2VlcGFsaXZlX3BpbmdfdGFzayA9IHNlbGYubG9vcC5jcmVhdGVfdGFz
ayhzZWxmLmtlZXBhbGl2ZV9waW5nKCkpCisgICAgICAgICMgU3RhcnQgdGhlIHRhc2sgdGhhdCBl
dmVudHVhbGx5IGNsb3NlcyB0aGUgVENQIGNvbm5lY3Rpb24uCisgICAgICAgIHNlbGYuY2xvc2Vf
Y29ubmVjdGlvbl90YXNrID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYuY2xvc2VfY29ubmVj
dGlvbigpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGhvc3Qoc2VsZikgLT4gT3B0aW9uYWxb
c3RyXToKKyAgICAgICAgYWx0ZXJuYXRpdmUgPSAicmVtb3RlX2FkZHJlc3MiIGlmIHNlbGYuaXNf
Y2xpZW50IGVsc2UgImxvY2FsX2FkZHJlc3MiCisgICAgICAgIHdhcm5pbmdzLndhcm4oZiJ1c2Ug
e2FsdGVybmF0aXZlfVswXSBpbnN0ZWFkIG9mIGhvc3QiLCBEZXByZWNhdGlvbldhcm5pbmcpCisg
ICAgICAgIHJldHVybiBzZWxmLl9ob3N0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcG9ydChz
ZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICBhbHRlcm5hdGl2ZSA9ICJyZW1vdGVfYWRk
cmVzcyIgaWYgc2VsZi5pc19jbGllbnQgZWxzZSAibG9jYWxfYWRkcmVzcyIKKyAgICAgICAgd2Fy
bmluZ3Mud2FybihmInVzZSB7YWx0ZXJuYXRpdmV9WzFdIGluc3RlYWQgb2YgcG9ydCIsIERlcHJl
Y2F0aW9uV2FybmluZykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBzZWN1cmUoc2VsZikgLT4gT3B0aW9uYWxbYm9vbF06CisgICAgICAgIHdhcm5p
bmdzLndhcm4oZiJkb24ndCB1c2Ugc2VjdXJlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAg
ICByZXR1cm4gc2VsZi5fc2VjdXJlCisKKyAgICAjIFB1YmxpYyBBUEkKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBsb2NhbF9hZGRyZXNzKHNlbGYpIC0+IEFueToKKyAgICAgICAgIiIiCisgICAg
ICAgIExvY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgVGhpcyBpcyBh
IGBgKGhvc3QsIHBvcnQpYGAgdHVwbGUgb3IgYGBOb25lYGAgaWYgdGhlIGNvbm5lY3Rpb24gaGFz
bid0CisgICAgICAgIGJlZW4gZXN0YWJsaXNoZWQgeWV0LgorCisgICAgICAgICIiIgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBzZWxmLnRyYW5zcG9ydAorICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuIHRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbygic29ja25h
bWUiKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlbW90ZV9hZGRyZXNzKHNlbGYpIC0+IEFu
eToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbW90ZSBhZGRyZXNzIG9mIHRoZSBjb25uZWN0aW9u
LgorCisgICAgICAgIFRoaXMgaXMgYSBgYChob3N0LCBwb3J0KWBgIHR1cGxlIG9yIGBgTm9uZWBg
IGlmIHRoZSBjb25uZWN0aW9uIGhhc24ndAorICAgICAgICBiZWVuIGVzdGFibGlzaGVkIHlldC4K
KworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJhbnNwb3J0ID0gc2Vs
Zi50cmFuc3BvcnQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiB0cmFuc3BvcnQu
Z2V0X2V4dHJhX2luZm8oInBlZXJuYW1lIikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBvcGVu
KHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBgYFRydWVgYCB3aGVuIHRoZSBj
b25uZWN0aW9uIGlzIHVzYWJsZS4KKworICAgICAgICBJdCBtYXkgYmUgdXNlZCB0byBkZXRlY3Qg
ZGlzY29ubmVjdGlvbnMuIEhvd2V2ZXIsIHRoaXMgYXBwcm9hY2ggaXMKKyAgICAgICAgZGlzY291
cmFnZWQgcGVyIHRoZSBFQUZQXyBwcmluY2lwbGUuCisKKyAgICAgICAgV2hlbiBgYG9wZW5gYCBp
cyBgYEZhbHNlYGAsIHVzaW5nIHRoZSBjb25uZWN0aW9uIHJhaXNlcyBhCisgICAgICAgIDpleGM6
YH53ZWJzb2NrZXRzLmV4Y2VwdGlvbnMuQ29ubmVjdGlvbkNsb3NlZGAgZXhjZXB0aW9uLgorCisg
ICAgICAgIC4uIF9FQUZQOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2dsb3NzYXJ5Lmh0bWwj
dGVybS1lYWZwCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnN0YXRlIGlzIFN0
YXRlLk9QRU4gYW5kIG5vdCBzZWxmLnRyYW5zZmVyX2RhdGFfdGFzay5kb25lKCkKKworICAgIEBw
cm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisgICAg
ICAgIGBgVHJ1ZWBgIG9uY2UgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCisgICAgICAgIEJl
IGF3YXJlIHRoYXQgYm90aCA6YXR0cjpgb3BlbmAgYW5kIDphdHRyOmBjbG9zZWRgIGFyZSBgYEZh
bHNlYGAgZHVyaW5nCisgICAgICAgIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIHNlcXVlbmNlcy4K
KworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc3RhdGUgaXMgU3RhdGUuQ0xPU0VE
CisKKyAgICBhc3luYyBkZWYgd2FpdF9jbG9zZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIi
CisgICAgICAgIFdhaXQgdW50aWwgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgorCisgICAgICAg
IFRoaXMgaXMgaWRlbnRpY2FsIHRvIDphdHRyOmBjbG9zZWRgLCBleGNlcHQgaXQgY2FuIGJlIGF3
YWl0ZWQuCisKKyAgICAgICAgVGhpcyBjYW4gbWFrZSBpdCBlYXNpZXIgdG8gaGFuZGxlIGNvbm5l
Y3Rpb24gdGVybWluYXRpb24sIHJlZ2FyZGxlc3MKKyAgICAgICAgb2YgaXRzIGNhdXNlLCBpbiB0
YXNrcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgorCisgICAg
ICAgICIiIgorICAgICAgICBhd2FpdCBhc3luY2lvLnNoaWVsZChzZWxmLmNvbm5lY3Rpb25fbG9z
dF93YWl0ZXIpCisKKyAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpIC0+IEFzeW5jSXRlcmF0
b3JbRGF0YV06CisgICAgICAgICIiIgorICAgICAgICBJdGVyYXRlIG9uIHJlY2VpdmVkIG1lc3Nh
Z2VzLgorCisgICAgICAgIEV4aXQgbm9ybWFsbHkgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9z
ZWQgd2l0aCBjb2RlIDEwMDAgb3IgMTAwMS4KKworICAgICAgICBSYWlzZSBhbiBleGNlcHRpb24g
aW4gb3RoZXIgY2FzZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgeWllbGQgYXdhaXQgc2VsZi5yZWN2KCkKKyAg
ICAgICAgZXhjZXB0IENvbm5lY3Rpb25DbG9zZWRPSzoKKyAgICAgICAgICAgIHJldHVybgorCisg
ICAgYXN5bmMgZGVmIHJlY3Yoc2VsZikgLT4gRGF0YToKKyAgICAgICAgIiIiCisgICAgICAgIFJl
Y2VpdmUgdGhlIG5leHQgbWVzc2FnZS4KKworICAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YHN0cmAg
Zm9yIGEgdGV4dCBmcmFtZSBhbmQgOmNsYXNzOmBieXRlc2AgZm9yIGEgYmluYXJ5CisgICAgICAg
IGZyYW1lLgorCisgICAgICAgIFdoZW4gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSBzdHJlYW0gaXMg
cmVhY2hlZCwgOm1ldGg6YHJlY3ZgIHJhaXNlcworICAgICAgICA6ZXhjOmB+d2Vic29ja2V0cy5l
eGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRgLiBTcGVjaWZpY2FsbHksIGl0CisgICAgICAgIHJh
aXNlcyA6ZXhjOmB+d2Vic29ja2V0cy5leGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRPS2AgYWZ0
ZXIgYSBub3JtYWwKKyAgICAgICAgY29ubmVjdGlvbiBjbG9zdXJlIGFuZAorICAgICAgICA6ZXhj
OmB+d2Vic29ja2V0cy5leGNlcHRpb25zLkNvbm5lY3Rpb25DbG9zZWRFcnJvcmAgYWZ0ZXIgYSBw
cm90b2NvbAorICAgICAgICBlcnJvciBvciBhIG5ldHdvcmsgZmFpbHVyZS4KKworICAgICAgICAu
LiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAorCisgICAgICAgICAgICA6bWV0aDpgcmVjdmAgdXNlZCB0
byByZXR1cm4gYGBOb25lYGAgaW5zdGVhZC4gUmVmZXIgdG8gdGhlCisgICAgICAgICAgICBjaGFu
Z2Vsb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgQ2FuY2VsaW5nIDptZXRoOmByZWN2YCBpcyBz
YWZlLiBUaGVyZSdzIG5vIHJpc2sgb2YgbG9zaW5nIHRoZSBuZXh0CisgICAgICAgIG1lc3NhZ2Uu
IFRoZSBuZXh0IGludm9jYXRpb24gb2YgOm1ldGg6YHJlY3ZgIHdpbGwgcmV0dXJuIGl0LiBUaGlz
CisgICAgICAgIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGVuZm9yY2UgYSB0aW1lb3V0IGJ5IHdyYXBw
aW5nIDptZXRoOmByZWN2YCBpbgorICAgICAgICA6ZnVuYzpgfmFzeW5jaW8ud2FpdF9mb3JgLgor
CisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5Db25uZWN0aW9uQ2xvc2Vk
OiB3aGVuIHRoZQorICAgICAgICAgICAgY29ubmVjdGlvbiBpcyBjbG9zZWQKKyAgICAgICAgOnJh
aXNlcyBSdW50aW1lRXJyb3I6IGlmIHR3byBjb3JvdXRpbmVzIGNhbGwgOm1ldGg6YHJlY3ZgIGNv
bmN1cnJlbnRseQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wb3BfbWVzc2FnZV93
YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAg
ICAgICAgICAgICAgImNhbm5vdCBjYWxsIHJlY3Ygd2hpbGUgYW5vdGhlciBjb3JvdXRpbmUgIgor
ICAgICAgICAgICAgICAgICJpcyBhbHJlYWR5IHdhaXRpbmcgZm9yIHRoZSBuZXh0IG1lc3NhZ2Ui
CisgICAgICAgICAgICApCisKKyAgICAgICAgIyBEb24ndCBhd2FpdCBzZWxmLmVuc3VyZV9vcGVu
KCkgaGVyZToKKyAgICAgICAgIyAtIG1lc3NhZ2VzIGNvdWxkIGJlIGF2YWlsYWJsZSBpbiB0aGUg
cXVldWUgZXZlbiBpZiB0aGUgY29ubmVjdGlvbgorICAgICAgICAjICAgaXMgY2xvc2VkOworICAg
ICAgICAjIC0gbWVzc2FnZXMgY291bGQgYmUgcmVjZWl2ZWQgYmVmb3JlIHRoZSBjbG9zaW5nIGZy
YW1lIGV2ZW4gaWYgdGhlCisgICAgICAgICMgICBjb25uZWN0aW9uIGlzIGNsb3NpbmcuCisKKyAg
ICAgICAgIyBXYWl0IHVudGlsIHRoZXJlJ3MgYSBtZXNzYWdlIGluIHRoZSBxdWV1ZSAoaWYgbmVj
ZXNzYXJ5KSBvciB0aGUKKyAgICAgICAgIyBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKyAgICAgICAg
d2hpbGUgbGVuKHNlbGYubWVzc2FnZXMpIDw9IDA6CisgICAgICAgICAgICBwb3BfbWVzc2FnZV93
YWl0ZXI6IGFzeW5jaW8uRnV0dXJlW05vbmVdID0gc2VsZi5sb29wLmNyZWF0ZV9mdXR1cmUoKQor
ICAgICAgICAgICAgc2VsZi5fcG9wX21lc3NhZ2Vfd2FpdGVyID0gcG9wX21lc3NhZ2Vfd2FpdGVy
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBJZiBhc3luY2lvLndhaXQoKSBp
cyBjYW5jZWxlZCwgaXQgZG9lc24ndCBjYW5jZWwKKyAgICAgICAgICAgICAgICAjIHBvcF9tZXNz
YWdlX3dhaXRlciBhbmQgc2VsZi50cmFuc2Zlcl9kYXRhX3Rhc2suCisgICAgICAgICAgICAgICAg
YXdhaXQgYXN5bmNpby53YWl0KAorICAgICAgICAgICAgICAgICAgICBbcG9wX21lc3NhZ2Vfd2Fp
dGVyLCBzZWxmLnRyYW5zZmVyX2RhdGFfdGFza10sCisgICAgICAgICAgICAgICAgICAgIGxvb3A9
c2VsZi5sb29wIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDgpIGVsc2UgTm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuX3doZW49YXN5bmNpby5GSVJTVF9DT01QTEVURUQsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wb3BfbWVzc2FnZV93YWl0ZXIgPSBOb25lCisKKyAgICAgICAgICAgICMgSWYgYXN5bmNp
by53YWl0KC4uLikgZXhpdGVkIGJlY2F1c2Ugc2VsZi50cmFuc2Zlcl9kYXRhX3Rhc2sKKyAgICAg
ICAgICAgICMgY29tcGxldGVkIGJlZm9yZSByZWNlaXZpbmcgYSBuZXcgbWVzc2FnZSwgcmFpc2Ug
YSBzdWl0YWJsZQorICAgICAgICAgICAgIyBleGNlcHRpb24gKG9yIHJldHVybiBOb25lIGlmIGxl
Z2FjeV9yZWN2IGlzIGVuYWJsZWQpLgorICAgICAgICAgICAgaWYgbm90IHBvcF9tZXNzYWdlX3dh
aXRlci5kb25lKCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5sZWdhY3lfcmVjdjoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUgICMgdHlwZTogaWdub3JlCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBjb25uZWN0aW9u
IGlzIGNsb3NlZCB0byByYWlzZQorICAgICAgICAgICAgICAgICAgICAjIENvbm5lY3Rpb25DbG9z
ZWQgd2l0aCB0aGUgY29ycmVjdCBjb2RlIGFuZCByZWFzb24uCisgICAgICAgICAgICAgICAgICAg
IGF3YWl0IHNlbGYuZW5zdXJlX29wZW4oKQorCisgICAgICAgICMgUG9wIGEgbWVzc2FnZSBmcm9t
IHRoZSBxdWV1ZS4KKyAgICAgICAgbWVzc2FnZSA9IHNlbGYubWVzc2FnZXMucG9wbGVmdCgpCisK
KyAgICAgICAgIyBOb3RpZnkgdHJhbnNmZXJfZGF0YSgpLgorICAgICAgICBpZiBzZWxmLl9wdXRf
bWVzc2FnZV93YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9wdXRfbWVzc2Fn
ZV93YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorICAgICAgICAgICAgc2VsZi5fcHV0X21lc3NhZ2Vf
d2FpdGVyID0gTm9uZQorCisgICAgICAgIHJldHVybiBtZXNzYWdlCisKKyAgICBhc3luYyBkZWYg
c2VuZCgKKyAgICAgICAgc2VsZiwgbWVzc2FnZTogVW5pb25bRGF0YSwgSXRlcmFibGVbRGF0YV0s
IEFzeW5jSXRlcmFibGVbRGF0YV1dCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgU2VuZCBhIG1lc3NhZ2UuCisKKyAgICAgICAgQSBzdHJpbmcgKDpjbGFzczpgc3RyYCkgaXMg
c2VudCBhcyBhIGBUZXh0IGZyYW1lYF8uIEEgYnl0ZXN0cmluZyBvcgorICAgICAgICBieXRlcy1s
aWtlIG9iamVjdCAoOmNsYXNzOmBieXRlc2AsIDpjbGFzczpgYnl0ZWFycmF5YCwgb3IKKyAgICAg
ICAgOmNsYXNzOmBtZW1vcnl2aWV3YCkgaXMgc2VudCBhcyBhIGBCaW5hcnkgZnJhbWVgXy4KKwor
ICAgICAgICAuLiBfVGV4dCBmcmFtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0
NTUjc2VjdGlvbi01LjYKKyAgICAgICAgLi4gX0JpbmFyeSBmcmFtZTogaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjYKKworICAgICAgICA6bWV0aDpgc2VuZGAg
YWxzbyBhY2NlcHRzIGFuIGl0ZXJhYmxlIG9yIGFuIGFzeW5jaHJvbm91cyBpdGVyYWJsZSBvZgor
ICAgICAgICBzdHJpbmdzLCBieXRlc3RyaW5ncywgb3IgYnl0ZXMtbGlrZSBvYmplY3RzLiBJbiB0
aGF0IGNhc2UgdGhlIG1lc3NhZ2UKKyAgICAgICAgaXMgZnJhZ21lbnRlZC4gRWFjaCBpdGVtIGlz
IHRyZWF0ZWQgYXMgYSBtZXNzYWdlIGZyYWdtZW50IGFuZCBzZW50IGluCisgICAgICAgIGl0cyBv
d24gZnJhbWUuIEFsbCBpdGVtcyBtdXN0IGJlIG9mIHRoZSBzYW1lIHR5cGUsIG9yIGVsc2UKKyAg
ICAgICAgOm1ldGg6YHNlbmRgIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGFuZCB0aGUg
Y29ubmVjdGlvbiB3aWxsIGJlCisgICAgICAgIGNsb3NlZC4KKworICAgICAgICBDYW5jZWxpbmcg
Om1ldGg6YHNlbmRgIGlzIGRpc2NvdXJhZ2VkLiBJbnN0ZWFkLCB5b3Ugc2hvdWxkIGNsb3NlIHRo
ZQorICAgICAgICBjb25uZWN0aW9uIHdpdGggOm1ldGg6YGNsb3NlYC4gSW5kZWVkLCB0aGVyZSBv
bmx5IHR3byBzaXR1YXRpb25zIHdoZXJlCisgICAgICAgIDptZXRoOmBzZW5kYCB5aWVsZHMgY29u
dHJvbCB0byB0aGUgZXZlbnQgbG9vcDoKKworICAgICAgICAxLiBUaGUgd3JpdGUgYnVmZmVyIGlz
IGZ1bGwuIElmIHlvdSBkb24ndCB3YW50IHRvIHdhaXQgdW50aWwgZW5vdWdoCisgICAgICAgICAg
IGRhdGEgaXMgc2VudCwgeW91ciBvbmx5IGFsdGVybmF0aXZlIGlzIHRvIGNsb3NlIHRoZSBjb25u
ZWN0aW9uLgorICAgICAgICAgICA6bWV0aDpgY2xvc2VgIHdpbGwgbGlrZWx5IHRpbWUgb3V0IHRo
ZW4gYWJvcnQgdGhlIFRDUCBjb25uZWN0aW9uLgorICAgICAgICAyLiBgYG1lc3NhZ2VgYCBpcyBh
biBhc3luY2hyb25vdXMgaXRlcmF0b3IuIFN0b3BwaW5nIGluIHRoZSBtaWRkbGUgb2YKKyAgICAg
ICAgICAgYSBmcmFnbWVudGVkIG1lc3NhZ2Ugd2lsbCBjYXVzZSBhIHByb3RvY29sIGVycm9yLiBD
bG9zaW5nIHRoZQorICAgICAgICAgICBjb25uZWN0aW9uIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisK
KyAgICAgICAgOnJhaXNlcyBUeXBlRXJyb3I6IGZvciB1bnN1cHBvcnRlZCBpbnB1dHMKKworICAg
ICAgICAiIiIKKyAgICAgICAgYXdhaXQgc2VsZi5lbnN1cmVfb3BlbigpCisKKyAgICAgICAgIyBX
aGlsZSBzZW5kaW5nIGEgZnJhZ21lbnRlZCBtZXNzYWdlLCBwcmV2ZW50IHNlbmRpbmcgb3RoZXIg
bWVzc2FnZXMKKyAgICAgICAgIyB1bnRpbCBhbGwgZnJhZ21lbnRzIGFyZSBzZW50LgorICAgICAg
ICB3aGlsZSBzZWxmLl9mcmFnbWVudGVkX21lc3NhZ2Vfd2FpdGVyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgYXdhaXQgYXN5bmNpby5zaGllbGQoc2VsZi5fZnJhZ21lbnRlZF9tZXNzYWdlX3dh
aXRlcikKKworICAgICAgICAjIFVuZnJhZ21lbnRlZCBtZXNzYWdlIC0tIHRoaXMgY2FzZSBtdXN0
IGJlIGhhbmRsZWQgZmlyc3QgYmVjYXVzZQorICAgICAgICAjIHN0cmluZ3MgYW5kIGJ5dGVzLWxp
a2Ugb2JqZWN0cyBhcmUgaXRlcmFibGUuCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdl
LCAoc3RyLCBieXRlcywgYnl0ZWFycmF5LCBtZW1vcnl2aWV3KSk6CisgICAgICAgICAgICBvcGNv
ZGUsIGRhdGEgPSBwcmVwYXJlX2RhdGEobWVzc2FnZSkKKyAgICAgICAgICAgIGF3YWl0IHNlbGYu
d3JpdGVfZnJhbWUoVHJ1ZSwgb3Bjb2RlLCBkYXRhKQorCisgICAgICAgICMgRnJhZ21lbnRlZCBt
ZXNzYWdlIC0tIHJlZ3VsYXIgaXRlcmF0b3IuCisKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1l
c3NhZ2UsIEl0ZXJhYmxlKToKKworICAgICAgICAgICAgIyBXb3JrIGFyb3VuZCBodHRwczovL2dp
dGh1Yi5jb20vcHl0aG9uL215cHkvaXNzdWVzLzYyMjcKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBj
YXN0KEl0ZXJhYmxlW0RhdGFdLCBtZXNzYWdlKQorCisgICAgICAgICAgICBpdGVyX21lc3NhZ2Ug
PSBpdGVyKG1lc3NhZ2UpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbWVzc2Fn
ZV9jaHVuayA9IG5leHQoaXRlcl9tZXNzYWdlKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVy
YXRpb246CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBvcGNvZGUsIGRhdGEg
PSBwcmVwYXJlX2RhdGEobWVzc2FnZV9jaHVuaykKKworICAgICAgICAgICAgc2VsZi5fZnJhZ21l
bnRlZF9tZXNzYWdlX3dhaXRlciA9IGFzeW5jaW8uRnV0dXJlKCkKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICAjIEZpcnN0IGZyYWdtZW50LgorICAgICAgICAgICAgICAgIGF3YWl0
IHNlbGYud3JpdGVfZnJhbWUoRmFsc2UsIG9wY29kZSwgZGF0YSkKKworICAgICAgICAgICAgICAg
ICMgT3RoZXIgZnJhZ21lbnRzLgorICAgICAgICAgICAgICAgIGZvciBtZXNzYWdlX2NodW5rIGlu
IGl0ZXJfbWVzc2FnZToKKyAgICAgICAgICAgICAgICAgICAgY29uZmlybV9vcGNvZGUsIGRhdGEg
PSBwcmVwYXJlX2RhdGEobWVzc2FnZV9jaHVuaykKKyAgICAgICAgICAgICAgICAgICAgaWYgY29u
ZmlybV9vcGNvZGUgIT0gb3Bjb2RlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCJkYXRhIGNvbnRhaW5zIGluY29uc2lzdGVudCB0eXBlcyIpCisgICAgICAgICAgICAg
ICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoRmFsc2UsIE9QX0NPTlQsIGRhdGEpCisKKyAg
ICAgICAgICAgICAgICAjIEZpbmFsIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIGF3YWl0IHNl
bGYud3JpdGVfZnJhbWUoVHJ1ZSwgT1BfQ09OVCwgYiIiKQorCisgICAgICAgICAgICBleGNlcHQg
RXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICMgV2UncmUgaGFsZi13YXkgdGhyb3VnaCBhIGZy
YWdtZW50ZWQgbWVzc2FnZSBhbmQgd2UgY2FuJ3QKKyAgICAgICAgICAgICAgICAjIGNvbXBsZXRl
IGl0LiBUaGlzIG1ha2VzIHRoZSBjb25uZWN0aW9uIHVudXNhYmxlLgorICAgICAgICAgICAgICAg
IHNlbGYuZmFpbF9jb25uZWN0aW9uKDEwMTEpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAg
ICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVkX21lc3Nh
Z2Vfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9mcmFnbWVu
dGVkX21lc3NhZ2Vfd2FpdGVyID0gTm9uZQorCisgICAgICAgICMgRnJhZ21lbnRlZCBtZXNzYWdl
IC0tIGFzeW5jaHJvbm91cyBpdGVyYXRvcgorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNz
YWdlLCBBc3luY0l0ZXJhYmxlKToKKyAgICAgICAgICAgICMgYWl0ZXJfbWVzc2FnZSA9IGFpdGVy
KG1lc3NhZ2UpIHdpdGhvdXQgYWl0ZXIKKyAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29t
L3B5dGhvbi9teXB5L2lzc3Vlcy81NzM4CisgICAgICAgICAgICBhaXRlcl9tZXNzYWdlID0gdHlw
ZShtZXNzYWdlKS5fX2FpdGVyX18obWVzc2FnZSkgICMgdHlwZTogaWdub3JlCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgIyBtZXNzYWdlX2NodW5rID0gYW5leHQoYWl0ZXJfbWVz
c2FnZSkgd2l0aG91dCBhbmV4dAorICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29t
L3B5dGhvbi9teXB5L2lzc3Vlcy81NzM4CisgICAgICAgICAgICAgICAgbWVzc2FnZV9jaHVuayA9
IGF3YWl0IHR5cGUoYWl0ZXJfbWVzc2FnZSkuX19hbmV4dF9fKCAgIyB0eXBlOiBpZ25vcmUKKyAg
ICAgICAgICAgICAgICAgICAgYWl0ZXJfbWVzc2FnZQorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CisgICAgICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgICAgICBvcGNvZGUsIGRhdGEgPSBwcmVwYXJlX2RhdGEobWVzc2FnZV9jaHVuaykK
KworICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZF9tZXNzYWdlX3dhaXRlciA9IGFzeW5jaW8u
RnV0dXJlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIEZpcnN0IGZyYWdt
ZW50LgorICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYud3JpdGVfZnJhbWUoRmFsc2UsIG9wY29k
ZSwgZGF0YSkKKworICAgICAgICAgICAgICAgICMgT3RoZXIgZnJhZ21lbnRzLgorICAgICAgICAg
ICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5L2lzc3Vlcy81NzM4CisgICAg
ICAgICAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2VfY2h1bmsgaW4gYWl0ZXJfbWVzc2FnZTogICMg
dHlwZTogaWdub3JlCisgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1fb3Bjb2RlLCBkYXRhID0g
cHJlcGFyZV9kYXRhKG1lc3NhZ2VfY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbmZp
cm1fb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcigiZGF0YSBjb250YWlucyBpbmNvbnNpc3RlbnQgdHlwZXMiKQorICAgICAgICAgICAgICAg
ICAgICBhd2FpdCBzZWxmLndyaXRlX2ZyYW1lKEZhbHNlLCBPUF9DT05ULCBkYXRhKQorCisgICAg
ICAgICAgICAgICAgIyBGaW5hbCBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICBhd2FpdCBzZWxm
LndyaXRlX2ZyYW1lKFRydWUsIE9QX0NPTlQsIGIiIikKKworICAgICAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAjIFdlJ3JlIGhhbGYtd2F5IHRocm91Z2ggYSBmcmFn
bWVudGVkIG1lc3NhZ2UgYW5kIHdlIGNhbid0CisgICAgICAgICAgICAgICAgIyBjb21wbGV0ZSBp
dC4gVGhpcyBtYWtlcyB0aGUgY29ubmVjdGlvbiB1bnVzYWJsZS4KKyAgICAgICAgICAgICAgICBz
ZWxmLmZhaWxfY29ubmVjdGlvbigxMDExKQorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZF9tZXNzYWdl
X3dhaXRlci5zZXRfcmVzdWx0KE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRl
ZF9tZXNzYWdlX3dhaXRlciA9IE5vbmUKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYnl0ZXMsIHN0ciwgb3IgaXRlcmFibGUiKQorCisg
ICAgYXN5bmMgZGVmIGNsb3NlKHNlbGYsIGNvZGU6IGludCA9IDEwMDAsIHJlYXNvbjogc3RyID0g
IiIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIHRoZSBjbG9zaW5nIGhh
bmRzaGFrZS4KKworICAgICAgICA6bWV0aDpgY2xvc2VgIHdhaXRzIGZvciB0aGUgb3RoZXIgZW5k
IHRvIGNvbXBsZXRlIHRoZSBoYW5kc2hha2UgYW5kCisgICAgICAgIGZvciB0aGUgVENQIGNvbm5l
Y3Rpb24gdG8gdGVybWluYXRlLiBBcyBhIGNvbnNlcXVlbmNlLCB0aGVyZSdzIG5vIG5lZWQKKyAg
ICAgICAgdG8gYXdhaXQgOm1ldGg6YHdhaXRfY2xvc2VkYDsgOm1ldGg6YGNsb3NlYCBhbHJlYWR5
IGRvZXMgaXQuCisKKyAgICAgICAgOm1ldGg6YGNsb3NlYCBpcyBpZGVtcG90ZW50OiBpdCBkb2Vz
bid0IGRvIGFueXRoaW5nIG9uY2UgdGhlCisgICAgICAgIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgor
CisgICAgICAgIFdyYXBwaW5nIDpmdW5jOmBjbG9zZWAgaW4gOmZ1bmM6YH5hc3luY2lvLmNyZWF0
ZV90YXNrYCBpcyBzYWZlLCBnaXZlbgorICAgICAgICB0aGF0IGVycm9ycyBkdXJpbmcgY29ubmVj
dGlvbiB0ZXJtaW5hdGlvbiBhcmVuJ3QgcGFydGljdWxhcmx5IHVzZWZ1bC4KKworICAgICAgICBD
YW5jZWxpbmcgOm1ldGg6YGNsb3NlYCBpcyBkaXNjb3VyYWdlZC4gSWYgaXQgdGFrZXMgdG9vIGxv
bmcsIHlvdSBjYW4KKyAgICAgICAgc2V0IGEgc2hvcnRlciBgYGNsb3NlX3RpbWVvdXRgYC4gSWYg
eW91IGRvbid0IHdhbnQgdG8gd2FpdCwgbGV0IHRoZQorICAgICAgICBQeXRob24gcHJvY2VzcyBl
eGl0LCB0aGVuIHRoZSBPUyB3aWxsIGNsb3NlIHRoZSBUQ1AgY29ubmVjdGlvbi4KKworICAgICAg
ICA6cGFyYW0gY29kZTogV2ViU29ja2V0IGNsb3NlIGNvZGUKKyAgICAgICAgOnBhcmFtIHJlYXNv
bjogV2ViU29ja2V0IGNsb3NlIHJlYXNvbgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBhd2FpdCBhc3luY2lvLndhaXRfZm9yKAorICAgICAgICAgICAgICAgIHNlbGYu
d3JpdGVfY2xvc2VfZnJhbWUoc2VyaWFsaXplX2Nsb3NlKGNvZGUsIHJlYXNvbikpLAorICAgICAg
ICAgICAgICAgIHNlbGYuY2xvc2VfdGltZW91dCwKKyAgICAgICAgICAgICAgICBsb29wPXNlbGYu
bG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUsCisgICAgICAg
ICAgICApCisgICAgICAgIGV4Y2VwdCBhc3luY2lvLlRpbWVvdXRFcnJvcjoKKyAgICAgICAgICAg
ICMgSWYgdGhlIGNsb3NlIGZyYW1lIGNhbm5vdCBiZSBzZW50IGJlY2F1c2UgdGhlIHNlbmQgYnVm
ZmVycworICAgICAgICAgICAgIyBhcmUgZnVsbCwgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIHdvbid0
IGNvbXBsZXRlIGFueXdheS4KKyAgICAgICAgICAgICMgRmFpbCB0aGUgY29ubmVjdGlvbiB0byBz
aHV0IGRvd24gZmFzdGVyLgorICAgICAgICAgICAgc2VsZi5mYWlsX2Nvbm5lY3Rpb24oKQorCisg
ICAgICAgICMgSWYgbm8gY2xvc2UgZnJhbWUgaXMgcmVjZWl2ZWQgd2l0aGluIHRoZSB0aW1lb3V0
LCB3YWl0X2ZvcigpIGNhbmNlbHMKKyAgICAgICAgIyB0aGUgZGF0YSB0cmFuc2ZlciB0YXNrIGFu
ZCByYWlzZXMgVGltZW91dEVycm9yLgorCisgICAgICAgICMgSWYgY2xvc2UoKSBpcyBjYWxsZWQg
bXVsdGlwbGUgdGltZXMgY29uY3VycmVudGx5IGFuZCBvbmUgb2YgdGhlc2UKKyAgICAgICAgIyBj
YWxscyBoaXRzIHRoZSB0aW1lb3V0LCB0aGUgZGF0YSB0cmFuc2ZlciB0YXNrIHdpbGwgYmUgY2Fu
Y2VsbGVkLgorICAgICAgICAjIE90aGVyIGNhbGxzIHdpbGwgcmVjZWl2ZSBhIENhbmNlbGxlZEVy
cm9yIGhlcmUuCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBJZiBjbG9zZSgpIGlzIGNh
bmNlbGVkIGR1cmluZyB0aGUgd2FpdCwgc2VsZi50cmFuc2Zlcl9kYXRhX3Rhc2sKKyAgICAgICAg
ICAgICMgaXMgY2FuY2VsZWQgYmVmb3JlIHRoZSB0aW1lb3V0IGVsYXBzZXMuCisgICAgICAgICAg
ICBhd2FpdCBhc3luY2lvLndhaXRfZm9yKAorICAgICAgICAgICAgICAgIHNlbGYudHJhbnNmZXJf
ZGF0YV90YXNrLAorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfdGltZW91dCwKKyAgICAgICAg
ICAgICAgICBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBl
bHNlIE5vbmUsCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCAoYXN5bmNpby5UaW1lb3V0
RXJyb3IsIGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAgICAgcGFzcworCisgICAg
ICAgICMgV2FpdCBmb3IgdGhlIGNsb3NlIGNvbm5lY3Rpb24gdGFzayB0byBjbG9zZSB0aGUgVENQ
IGNvbm5lY3Rpb24uCisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHNlbGYuY2xvc2VfY29u
bmVjdGlvbl90YXNrKQorCisgICAgYXN5bmMgZGVmIHBpbmcoc2VsZiwgZGF0YTogT3B0aW9uYWxb
RGF0YV0gPSBOb25lKSAtPiBBd2FpdGFibGVbTm9uZV06CisgICAgICAgICIiIgorICAgICAgICBT
ZW5kIGEgcGluZy4KKworICAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YH5hc3luY2lvLkZ1dHVyZWAg
d2hpY2ggd2lsbCBiZSBjb21wbGV0ZWQgd2hlbiB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBw
b25nIGlzIHJlY2VpdmVkIGFuZCB3aGljaCB5b3UgbWF5IGlnbm9yZSBpZiB5b3UgZG9uJ3QKKyAg
ICAgICAgd2FudCB0byB3YWl0LgorCisgICAgICAgIEEgcGluZyBtYXkgc2VydmUgYXMgYSBrZWVw
YWxpdmUgb3IgYXMgYSBjaGVjayB0aGF0IHRoZSByZW1vdGUgZW5kcG9pbnQKKyAgICAgICAgcmVj
ZWl2ZWQgYWxsIG1lc3NhZ2VzIHVwIHRvIHRoaXMgcG9pbnQ6OgorCisgICAgICAgICAgICBwb25n
X3dhaXRlciA9IGF3YWl0IHdzLnBpbmcoKQorICAgICAgICAgICAgYXdhaXQgcG9uZ193YWl0ZXIg
ICAjIG9ubHkgaWYgeW91IHdhbnQgdG8gd2FpdCBmb3IgdGhlIHBvbmcKKworICAgICAgICBCeSBk
ZWZhdWx0LCB0aGUgcGluZyBjb250YWlucyBmb3VyIHJhbmRvbSBieXRlcy4gVGhpcyBwYXlsb2Fk
IG1heSBiZQorICAgICAgICBvdmVycmlkZGVuIHdpdGggdGhlIG9wdGlvbmFsIGBgZGF0YWBgIGFy
Z3VtZW50IHdoaWNoIG11c3QgYmUgYSBzdHJpbmcKKyAgICAgICAgKHdoaWNoIHdpbGwgYmUgZW5j
b2RlZCB0byBVVEYtOCkgb3IgYSBieXRlcy1saWtlIG9iamVjdC4KKworICAgICAgICBDYW5jZWxp
bmcgOm1ldGg6YHBpbmdgIGlzIGRpc2NvdXJhZ2VkLiBJZiA6bWV0aDpgcGluZ2AgZG9lc24ndCBy
ZXR1cm4KKyAgICAgICAgaW1tZWRpYXRlbHksIGl0IG1lYW5zIHRoZSB3cml0ZSBidWZmZXIgaXMg
ZnVsbC4gSWYgeW91IGRvbid0IHdhbnQgdG8KKyAgICAgICAgd2FpdCwgeW91IHNob3VsZCBjbG9z
ZSB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBDYW5jZWxpbmcgdGhlIDpjbGFzczpgfmFzeW5j
aW8uRnV0dXJlYCByZXR1cm5lZCBieSA6bWV0aDpgcGluZ2AgaGFzIG5vCisgICAgICAgIGVmZmVj
dC4KKworICAgICAgICAiIiIKKyAgICAgICAgYXdhaXQgc2VsZi5lbnN1cmVfb3BlbigpCisKKyAg
ICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRhdGEgPSBlbmNvZGVfZGF0
YShkYXRhKQorCisgICAgICAgICMgUHJvdGVjdCBhZ2FpbnN0IGR1cGxpY2F0ZXMgaWYgYSBwYXls
b2FkIGlzIGV4cGxpY2l0bHkgc2V0LgorICAgICAgICBpZiBkYXRhIGluIHNlbGYucGluZ3M6Cisg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhbHJlYWR5IHdhaXRpbmcgZm9yIGEgcG9uZyB3
aXRoIHRoZSBzYW1lIGRhdGEiKQorCisgICAgICAgICMgR2VuZXJhdGUgYSB1bmlxdWUgcmFuZG9t
IHBheWxvYWQgb3RoZXJ3aXNlLgorICAgICAgICB3aGlsZSBkYXRhIGlzIE5vbmUgb3IgZGF0YSBp
biBzZWxmLnBpbmdzOgorICAgICAgICAgICAgZGF0YSA9IHN0cnVjdC5wYWNrKCIhSSIsIHJhbmRv
bS5nZXRyYW5kYml0cygzMikpCisKKyAgICAgICAgc2VsZi5waW5nc1tkYXRhXSA9IHNlbGYubG9v
cC5jcmVhdGVfZnV0dXJlKCkKKworICAgICAgICBhd2FpdCBzZWxmLndyaXRlX2ZyYW1lKFRydWUs
IE9QX1BJTkcsIGRhdGEpCisKKyAgICAgICAgcmV0dXJuIGFzeW5jaW8uc2hpZWxkKHNlbGYucGlu
Z3NbZGF0YV0pCisKKyAgICBhc3luYyBkZWYgcG9uZyhzZWxmLCBkYXRhOiBEYXRhID0gYiIiKSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBhIHBvbmcuCisKKyAgICAgICAgQW4g
dW5zb2xpY2l0ZWQgcG9uZyBtYXkgc2VydmUgYXMgYSB1bmlkaXJlY3Rpb25hbCBoZWFydGJlYXQu
CisKKyAgICAgICAgVGhlIHBheWxvYWQgbWF5IGJlIHNldCB3aXRoIHRoZSBvcHRpb25hbCBgYGRh
dGFgYCBhcmd1bWVudCB3aGljaCBtdXN0CisgICAgICAgIGJlIGEgc3RyaW5nICh3aGljaCB3aWxs
IGJlIGVuY29kZWQgdG8gVVRGLTgpIG9yIGEgYnl0ZXMtbGlrZSBvYmplY3QuCisKKyAgICAgICAg
Q2FuY2VsaW5nIDptZXRoOmBwb25nYCBpcyBkaXNjb3VyYWdlZCBmb3IgdGhlIHNhbWUgcmVhc29u
IGFzCisgICAgICAgIDptZXRoOmBwaW5nYC4KKworICAgICAgICAiIiIKKyAgICAgICAgYXdhaXQg
c2VsZi5lbnN1cmVfb3BlbigpCisKKyAgICAgICAgZGF0YSA9IGVuY29kZV9kYXRhKGRhdGEpCisK
KyAgICAgICAgYXdhaXQgc2VsZi53cml0ZV9mcmFtZShUcnVlLCBPUF9QT05HLCBkYXRhKQorCisg
ICAgIyBQcml2YXRlIG1ldGhvZHMgLSBubyBndWFyYW50ZWVzLgorCisgICAgZGVmIGNvbm5lY3Rp
b25fY2xvc2VkX2V4YyhzZWxmKSAtPiBDb25uZWN0aW9uQ2xvc2VkOgorICAgICAgICBleGNlcHRp
b246IENvbm5lY3Rpb25DbG9zZWQKKyAgICAgICAgaWYgc2VsZi5jbG9zZV9jb2RlID09IDEwMDAg
b3Igc2VsZi5jbG9zZV9jb2RlID09IDEwMDE6CisgICAgICAgICAgICBleGNlcHRpb24gPSBDb25u
ZWN0aW9uQ2xvc2VkT0soc2VsZi5jbG9zZV9jb2RlLCBzZWxmLmNsb3NlX3JlYXNvbikKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IENvbm5lY3Rpb25DbG9zZWRFcnJvcihz
ZWxmLmNsb3NlX2NvZGUsIHNlbGYuY2xvc2VfcmVhc29uKQorICAgICAgICAjIENoYWluIHRvIHRo
ZSBleGNlcHRpb24gdGhhdCB0ZXJtaW5hdGVkIGRhdGEgdHJhbnNmZXIsIGlmIGFueS4KKyAgICAg
ICAgZXhjZXB0aW9uLl9fY2F1c2VfXyA9IHNlbGYudHJhbnNmZXJfZGF0YV9leGMKKyAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbgorCisgICAgYXN5bmMgZGVmIGVuc3VyZV9vcGVuKHNlbGYpIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IHRoZSBXZWJTb2NrZXQgY29ubmVj
dGlvbiBpcyBvcGVuLgorCisgICAgICAgIFJhaXNlIDpleGM6YH53ZWJzb2NrZXRzLmV4Y2VwdGlv
bnMuQ29ubmVjdGlvbkNsb3NlZGAgaWYgaXQgaXNuJ3QuCisKKyAgICAgICAgIiIiCisgICAgICAg
ICMgSGFuZGxlIGNhc2VzIGZyb20gbW9zdCBjb21tb24gdG8gbGVhc3QgY29tbW9uIGZvciBwZXJm
b3JtYW5jZS4KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSBpcyBTdGF0ZS5PUEVOOgorICAgICAgICAg
ICAgIyBJZiBzZWxmLnRyYW5zZmVyX2RhdGFfdGFzayBleGl0ZWQgd2l0aG91dCBhIGNsb3Npbmcg
aGFuZHNoYWtlLAorICAgICAgICAgICAgIyBzZWxmLmNsb3NlX2Nvbm5lY3Rpb25fdGFzayBtYXkg
YmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiwgZ29pbmcKKyAgICAgICAgICAgICMgc3RyYWlnaHQg
ZnJvbSBPUEVOIHRvIENMT1NFRC4KKyAgICAgICAgICAgIGlmIHNlbGYudHJhbnNmZXJfZGF0YV90
YXNrLmRvbmUoKToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNoaWVsZChzZWxmLmNs
b3NlX2Nvbm5lY3Rpb25fdGFzaykKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmNvbm5lY3Rp
b25fY2xvc2VkX2V4YygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgU3RhdGUuQ0xPU0VEOgorICAgICAgICAgICAg
cmFpc2Ugc2VsZi5jb25uZWN0aW9uX2Nsb3NlZF9leGMoKQorCisgICAgICAgIGlmIHNlbGYuc3Rh
dGUgaXMgU3RhdGUuQ0xPU0lORzoKKyAgICAgICAgICAgICMgSWYgd2Ugc3RhcnRlZCB0aGUgY2xv
c2luZyBoYW5kc2hha2UsIHdhaXQgZm9yIGl0cyBjb21wbGV0aW9uIHRvCisgICAgICAgICAgICAj
IGdldCB0aGUgcHJvcGVyIGNsb3NlIGNvZGUgYW5kIHJlYXNvbi4gc2VsZi5jbG9zZV9jb25uZWN0
aW9uX3Rhc2sKKyAgICAgICAgICAgICMgd2lsbCBjb21wbGV0ZSB3aXRoaW4gNCBvciA1ICogY2xv
c2VfdGltZW91dCBhZnRlciBjbG9zZSgpLiBUaGUKKyAgICAgICAgICAgICMgQ0xPU0lORyBzdGF0
ZSBhbHNvIG9jY3VycyB3aGVuIGZhaWxpbmcgdGhlIGNvbm5lY3Rpb24uIEluIHRoYXQKKyAgICAg
ICAgICAgICMgY2FzZSBzZWxmLmNsb3NlX2Nvbm5lY3Rpb25fdGFzayB3aWxsIGNvbXBsZXRlIGV2
ZW4gZmFzdGVyLgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zaGllbGQoc2VsZi5jbG9zZV9j
b25uZWN0aW9uX3Rhc2spCisgICAgICAgICAgICByYWlzZSBzZWxmLmNvbm5lY3Rpb25fY2xvc2Vk
X2V4YygpCisKKyAgICAgICAgIyBDb250cm9sIG1heSBvbmx5IHJlYWNoIHRoaXMgcG9pbnQgaW4g
YnVnZ3kgdGhpcmQtcGFydHkgc3ViY2xhc3Nlcy4KKyAgICAgICAgYXNzZXJ0IHNlbGYuc3RhdGUg
aXMgU3RhdGUuQ09OTkVDVElORworICAgICAgICByYWlzZSBJbnZhbGlkU3RhdGUoIldlYlNvY2tl
dCBjb25uZWN0aW9uIGlzbid0IGVzdGFibGlzaGVkIHlldCIpCisKKyAgICBhc3luYyBkZWYgdHJh
bnNmZXJfZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmVhZCBpbmNv
bWluZyBtZXNzYWdlcyBhbmQgcHV0IHRoZW0gaW4gYSBxdWV1ZS4KKworICAgICAgICBUaGlzIGNv
cm91dGluZSBydW5zIGluIGEgdGFzayB1bnRpbCB0aGUgY2xvc2luZyBoYW5kc2hha2UgaXMgc3Rh
cnRlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1
ZToKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgc2VsZi5yZWFkX21lc3NhZ2UoKQor
CisgICAgICAgICAgICAgICAgIyBFeGl0IHRoZSBsb29wIHdoZW4gcmVjZWl2aW5nIGEgY2xvc2Ug
ZnJhbWUuCisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAg
ICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZXJlJ3Mgcm9v
bSBpbiB0aGUgcXVldWUgKGlmIG5lY2Vzc2FyeSkuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5t
YXhfcXVldWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxm
Lm1lc3NhZ2VzKSA+PSBzZWxmLm1heF9xdWV1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3B1dF9tZXNzYWdlX3dhaXRlciA9IHNlbGYubG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLnNoaWVsZChzZWxmLl9wdXRfbWVzc2FnZV93YWl0ZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1
dF9tZXNzYWdlX3dhaXRlciA9IE5vbmUKKworICAgICAgICAgICAgICAgICMgUHV0IHRoZSBtZXNz
YWdlIGluIHRoZSBxdWV1ZS4KKyAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZCht
ZXNzYWdlKQorCisgICAgICAgICAgICAgICAgIyBOb3RpZnkgcmVjdigpLgorICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3BvcF9tZXNzYWdlX3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fcG9wX21lc3NhZ2Vfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcG9wX21lc3NhZ2Vfd2FpdGVyID0gTm9uZQorCisgICAgICAg
IGV4Y2VwdCBhc3luY2lvLkNhbmNlbGxlZEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYu
dHJhbnNmZXJfZGF0YV9leGMgPSBleGMKKyAgICAgICAgICAgICMgSWYgZmFpbF9jb25uZWN0aW9u
KCkgY2FuY2VscyB0aGlzIHRhc2ssIGF2b2lkIGxvZ2dpbmcgdGhlIGVycm9yCisgICAgICAgICAg
ICAjIHR3aWNlIGFuZCBmYWlsaW5nIHRoZSBjb25uZWN0aW9uIGFnYWluLgorICAgICAgICAgICAg
cmFpc2UKKworICAgICAgICBleGNlcHQgUHJvdG9jb2xFcnJvciBhcyBleGM6CisgICAgICAgICAg
ICBzZWxmLnRyYW5zZmVyX2RhdGFfZXhjID0gZXhjCisgICAgICAgICAgICBzZWxmLmZhaWxfY29u
bmVjdGlvbigxMDAyKQorCisgICAgICAgIGV4Y2VwdCAoQ29ubmVjdGlvbkVycm9yLCBFT0ZFcnJv
cikgYXMgZXhjOgorICAgICAgICAgICAgIyBSZWFkaW5nIGRhdGEgd2l0aCBzZWxmLnJlYWRlci5y
ZWFkZXhhY3RseSBtYXkgcmFpc2U6CisgICAgICAgICAgICAjIC0gbW9zdCBzdWJjbGFzc2VzIG9m
IENvbm5lY3Rpb25FcnJvciBpZiB0aGUgVENQIGNvbm5lY3Rpb24KKyAgICAgICAgICAgICMgICBi
cmVha3MsIGlzIHJlc2V0LCBvciBpcyBhYm9ydGVkOworICAgICAgICAgICAgIyAtIEluY29tcGxl
dGVSZWFkRXJyb3IsIGEgc3ViY2xhc3Mgb2YgRU9GRXJyb3IsIGlmIGZld2VyCisgICAgICAgICAg
ICAjICAgYnl0ZXMgYXJlIGF2YWlsYWJsZSB0aGFuIHJlcXVlc3RlZC4KKyAgICAgICAgICAgIHNl
bGYudHJhbnNmZXJfZGF0YV9leGMgPSBleGMKKyAgICAgICAgICAgIHNlbGYuZmFpbF9jb25uZWN0
aW9uKDEwMDYpCisKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleGM6Cisg
ICAgICAgICAgICBzZWxmLnRyYW5zZmVyX2RhdGFfZXhjID0gZXhjCisgICAgICAgICAgICBzZWxm
LmZhaWxfY29ubmVjdGlvbigxMDA3KQorCisgICAgICAgIGV4Y2VwdCBQYXlsb2FkVG9vQmlnIGFz
IGV4YzoKKyAgICAgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV9leGMgPSBleGMKKyAgICAgICAg
ICAgIHNlbGYuZmFpbF9jb25uZWN0aW9uKDEwMDkpCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBleGM6CisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBvZnRlbiBiZWNh
dXNlIGV4Y2VwdGlvbnMgZXhwZWN0ZWQgdW5kZXIKKyAgICAgICAgICAgICMgcmVndWxhciBjaXJj
dW1zdGFuY2VzIGFyZSBoYW5kbGVkIGFib3ZlLiBJZiBpdCBkb2VzLCBjb25zaWRlcgorICAgICAg
ICAgICAgIyBjYXRjaGluZyBhbmQgaGFuZGxpbmcgbW9yZSBleGNlcHRpb25zLgorICAgICAgICAg
ICAgbG9nZ2VyLmVycm9yKCJFcnJvciBpbiBkYXRhIHRyYW5zZmVyIiwgZXhjX2luZm89VHJ1ZSkK
KworICAgICAgICAgICAgc2VsZi50cmFuc2Zlcl9kYXRhX2V4YyA9IGV4YworICAgICAgICAgICAg
c2VsZi5mYWlsX2Nvbm5lY3Rpb24oMTAxMSkKKworICAgIGFzeW5jIGRlZiByZWFkX21lc3NhZ2Uo
c2VsZikgLT4gT3B0aW9uYWxbRGF0YV06CisgICAgICAgICIiIgorICAgICAgICBSZWFkIGEgc2lu
Z2xlIG1lc3NhZ2UgZnJvbSB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBSZS1hc3NlbWJsZSBk
YXRhIGZyYW1lcyBpZiB0aGUgbWVzc2FnZSBpcyBmcmFnbWVudGVkLgorCisgICAgICAgIFJldHVy
biBgYE5vbmVgYCB3aGVuIHRoZSBjbG9zaW5nIGhhbmRzaGFrZSBpcyBzdGFydGVkLgorCisgICAg
ICAgICIiIgorICAgICAgICBmcmFtZSA9IGF3YWl0IHNlbGYucmVhZF9kYXRhX2ZyYW1lKG1heF9z
aXplPXNlbGYubWF4X3NpemUpCisKKyAgICAgICAgIyBBIGNsb3NlIGZyYW1lIHdhcyByZWNlaXZl
ZC4KKyAgICAgICAgaWYgZnJhbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IE9QX1RFWFQ6CisgICAgICAgICAgICB0ZXh0ID0g
VHJ1ZQorICAgICAgICBlbGlmIGZyYW1lLm9wY29kZSA9PSBPUF9CSU5BUlk6CisgICAgICAgICAg
ICB0ZXh0ID0gRmFsc2UKKyAgICAgICAgZWxzZTogICMgZnJhbWUub3Bjb2RlID09IE9QX0NPTlQK
KyAgICAgICAgICAgIHJhaXNlIFByb3RvY29sRXJyb3IoInVuZXhwZWN0ZWQgb3Bjb2RlIikKKwor
ICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9uIGNhc2UgLSBubyBmcmFnbWVudGF0aW9u
CisgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5kYXRhLmRl
Y29kZSgidXRmLTgiKSBpZiB0ZXh0IGVsc2UgZnJhbWUuZGF0YQorCisgICAgICAgICMgNS40LiBG
cmFnbWVudGF0aW9uCisgICAgICAgIGNodW5rczogTGlzdFtEYXRhXSA9IFtdCisgICAgICAgIG1h
eF9zaXplID0gc2VsZi5tYXhfc2l6ZQorICAgICAgICBpZiB0ZXh0OgorICAgICAgICAgICAgZGVj
b2Rlcl9mYWN0b3J5ID0gY29kZWNzLmdldGluY3JlbWVudGFsZGVjb2RlcigidXRmLTgiKQorICAg
ICAgICAgICAgZGVjb2RlciA9IGRlY29kZXJfZmFjdG9yeShlcnJvcnM9InN0cmljdCIpCisgICAg
ICAgICAgICBpZiBtYXhfc2l6ZSBpcyBOb25lOgorCisgICAgICAgICAgICAgICAgZGVmIGFwcGVu
ZChmcmFtZTogRnJhbWUpIC0+IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG5vbmxvY2FsIGNo
dW5rcworICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKGRlY29kZXIuZGVjb2RlKGZy
YW1lLmRhdGEsIGZyYW1lLmZpbikpCisKKyAgICAgICAgICAgIGVsc2U6CisKKyAgICAgICAgICAg
ICAgICBkZWYgYXBwZW5kKGZyYW1lOiBGcmFtZSkgLT4gTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgbm9ubG9jYWwgY2h1bmtzLCBtYXhfc2l6ZQorICAgICAgICAgICAgICAgICAgICBjaHVua3Mu
YXBwZW5kKGRlY29kZXIuZGVjb2RlKGZyYW1lLmRhdGEsIGZyYW1lLmZpbikpCisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1heF9zaXplLCBpbnQpCisgICAgICAgICAgICAg
ICAgICAgIG1heF9zaXplIC09IGxlbihmcmFtZS5kYXRhKQorCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBpZiBtYXhfc2l6ZSBpcyBOb25lOgorCisgICAgICAgICAgICAgICAgZGVmIGFwcGVu
ZChmcmFtZTogRnJhbWUpIC0+IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG5vbmxvY2FsIGNo
dW5rcworICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKGZyYW1lLmRhdGEpCisKKyAg
ICAgICAgICAgIGVsc2U6CisKKyAgICAgICAgICAgICAgICBkZWYgYXBwZW5kKGZyYW1lOiBGcmFt
ZSkgLT4gTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbm9ubG9jYWwgY2h1bmtzLCBtYXhfc2l6
ZQorICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKGZyYW1lLmRhdGEpCisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1heF9zaXplLCBpbnQpCisgICAgICAgICAg
ICAgICAgICAgIG1heF9zaXplIC09IGxlbihmcmFtZS5kYXRhKQorCisgICAgICAgIGFwcGVuZChm
cmFtZSkKKworICAgICAgICB3aGlsZSBub3QgZnJhbWUuZmluOgorICAgICAgICAgICAgZnJhbWUg
PSBhd2FpdCBzZWxmLnJlYWRfZGF0YV9mcmFtZShtYXhfc2l6ZT1tYXhfc2l6ZSkKKyAgICAgICAg
ICAgIGlmIGZyYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJv
cigiaW5jb21wbGV0ZSBmcmFnbWVudGVkIG1lc3NhZ2UiKQorICAgICAgICAgICAgaWYgZnJhbWUu
b3Bjb2RlICE9IE9QX0NPTlQ6CisgICAgICAgICAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigi
dW5leHBlY3RlZCBvcGNvZGUiKQorICAgICAgICAgICAgYXBwZW5kKGZyYW1lKQorCisgICAgICAg
ICMgbXlweSBjYW5ub3QgZmlndXJlIG91dCB0aGF0IGNodW5rcyBoYXZlIHRoZSBwcm9wZXIgdHlw
ZS4KKyAgICAgICAgcmV0dXJuICgiIiBpZiB0ZXh0IGVsc2UgYiIiKS5qb2luKGNodW5rcykgICMg
dHlwZTogaWdub3JlCisKKyAgICBhc3luYyBkZWYgcmVhZF9kYXRhX2ZyYW1lKHNlbGYsIG1heF9z
aXplOiBPcHRpb25hbFtpbnRdKSAtPiBPcHRpb25hbFtGcmFtZV06CisgICAgICAgICIiIgorICAg
ICAgICBSZWFkIGEgc2luZ2xlIGRhdGEgZnJhbWUgZnJvbSB0aGUgY29ubmVjdGlvbi4KKworICAg
ICAgICBQcm9jZXNzIGNvbnRyb2wgZnJhbWVzIHJlY2VpdmVkIGJlZm9yZSB0aGUgbmV4dCBkYXRh
IGZyYW1lLgorCisgICAgICAgIFJldHVybiBgYE5vbmVgYCBpZiBhIGNsb3NlIGZyYW1lIGlzIGVu
Y291bnRlcmVkIGJlZm9yZSBhbnkgZGF0YSBmcmFtZS4KKworICAgICAgICAiIiIKKyAgICAgICAg
IyA2LjIuIFJlY2VpdmluZyBEYXRhCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBm
cmFtZSA9IGF3YWl0IHNlbGYucmVhZF9mcmFtZShtYXhfc2l6ZSkKKworICAgICAgICAgICAgIyA1
LjUuIENvbnRyb2wgRnJhbWVzCisgICAgICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gT1BfQ0xP
U0U6CisgICAgICAgICAgICAgICAgIyA3LjEuNS4gIFRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbiBD
bG9zZSBDb2RlCisgICAgICAgICAgICAgICAgIyA3LjEuNi4gIFRoZSBXZWJTb2NrZXQgQ29ubmVj
dGlvbiBDbG9zZSBSZWFzb24KKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX2NvZGUsIHNlbGYu
Y2xvc2VfcmVhc29uID0gcGFyc2VfY2xvc2UoZnJhbWUuZGF0YSkKKyAgICAgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgICAgICMgRWNobyB0aGUgb3JpZ2luYWwgZGF0YSBpbnN0ZWFk
IG9mIHJlLXNlcmlhbGl6aW5nIGl0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgIyBzZXJpYWxp
emVfY2xvc2UoKSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlbiB0aGUgY2xvc2UgZnJhbWUKKyAgICAg
ICAgICAgICAgICAgICAgIyBpcyBlbXB0eSBhbmQgcGFyc2VfY2xvc2UoKSBzeW50aGV0aXplcyBh
IDEwMDUgY2xvc2UgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi53cml0ZV9j
bG9zZV9mcmFtZShmcmFtZS5kYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9u
Q2xvc2VkOgorICAgICAgICAgICAgICAgICAgICAjIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBp
ZiB0aGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkCisgICAgICAgICAgICAgICAgICAgICMgYmVmb3Jl
IHdlIGNvdWxkIHNlbmQgYmFjayBhIGNsb3NlIGZyYW1lLgorICAgICAgICAgICAgICAgICAgICBw
YXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgZWxpZiBmcmFt
ZS5vcGNvZGUgPT0gT1BfUElORzoKKyAgICAgICAgICAgICAgICAjIEFuc3dlciBwaW5ncy4KKyAg
ICAgICAgICAgICAgICBwaW5nX2hleCA9IGZyYW1lLmRhdGEuaGV4KCkgb3IgIltlbXB0eV0iCisg
ICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiJXMgLSBy
ZWNlaXZlZCBwaW5nLCBzZW5kaW5nIHBvbmc6ICVzIiwgc2VsZi5zaWRlLCBwaW5nX2hleAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBhd2FpdCBzZWxmLnBvbmcoZnJhbWUuZGF0
YSkKKworICAgICAgICAgICAgZWxpZiBmcmFtZS5vcGNvZGUgPT0gT1BfUE9ORzoKKyAgICAgICAg
ICAgICAgICAjIEFja25vd2xlZGdlIHBpbmdzIG9uIHNvbGljaXRlZCBwb25ncy4KKyAgICAgICAg
ICAgICAgICBpZiBmcmFtZS5kYXRhIGluIHNlbGYucGluZ3M6CisgICAgICAgICAgICAgICAgICAg
IGxvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyAtIHJlY2VpdmVkIHNv
bGljaXRlZCBwb25nOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5kYXRhLmhleCgpIG9yICJbZW1wdHldIiwKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAjIEFja25vd2xlZGdlIGFs
bCBwaW5ncyB1cCB0byB0aGUgb25lIG1hdGNoaW5nIHRoaXMgcG9uZy4KKyAgICAgICAgICAgICAg
ICAgICAgcGluZ19pZCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcGluZ19pZHMgPSBbXQor
ICAgICAgICAgICAgICAgICAgICBmb3IgcGluZ19pZCwgcGluZyBpbiBzZWxmLnBpbmdzLml0ZW1z
KCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwaW5nX2lkcy5hcHBlbmQocGluZ19pZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwaW5nLmRvbmUoKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaW5nLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIHBpbmdfaWQgPT0gZnJhbWUuZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICJwaW5nX2lkIGlzIGluIHNlbGYu
cGluZ3MiCisgICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIGFja25vd2xlZGdlZCBwaW5ncyBm
cm9tIHNlbGYucGluZ3MuCisgICAgICAgICAgICAgICAgICAgIGZvciBwaW5nX2lkIGluIHBpbmdf
aWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYucGluZ3NbcGluZ19pZF0KKyAg
ICAgICAgICAgICAgICAgICAgcGluZ19pZHMgPSBwaW5nX2lkc1s6LTFdCisgICAgICAgICAgICAg
ICAgICAgIGlmIHBpbmdfaWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcGluZ3NfaGV4ID0g
IiwgIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbmdfaWQuaGV4KCkgb3Ig
IltlbXB0eV0iIGZvciBwaW5nX2lkIGluIHBpbmdfaWRzCisgICAgICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwgPSAicyIgaWYgbGVuKHBpbmdfaWRz
KSA+IDEgZWxzZSAiIgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIlcyAtIGFja25vd2xlZGdlZCBwcmV2aW91cyBwaW5n
JXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGx1cmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBpbmdzX2hleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAg
ICAgICAgICAiJXMgLSByZWNlaXZlZCB1bnNvbGljaXRlZCBwb25nOiAlcyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLnNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5k
YXRhLmhleCgpIG9yICJbZW1wdHldIiwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAg
ICAgICAjIDUuNi4gRGF0YSBGcmFtZXMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lCisKKyAgICBhc3luYyBkZWYgcmVhZF9mcmFtZShzZWxmLCBtYXhfc2l6
ZTogT3B0aW9uYWxbaW50XSkgLT4gRnJhbWU6CisgICAgICAgICIiIgorICAgICAgICBSZWFkIGEg
c2luZ2xlIGZyYW1lIGZyb20gdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgIiIiCisgICAgICAg
IGZyYW1lID0gYXdhaXQgRnJhbWUucmVhZCgKKyAgICAgICAgICAgIHNlbGYucmVhZGVyLnJlYWRl
eGFjdGx5LAorICAgICAgICAgICAgbWFzaz1ub3Qgc2VsZi5pc19jbGllbnQsCisgICAgICAgICAg
ICBtYXhfc2l6ZT1tYXhfc2l6ZSwKKyAgICAgICAgICAgIGV4dGVuc2lvbnM9c2VsZi5leHRlbnNp
b25zLAorICAgICAgICApCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgPCAlciIsIHNlbGYuc2lk
ZSwgZnJhbWUpCisgICAgICAgIHJldHVybiBmcmFtZQorCisgICAgYXN5bmMgZGVmIHdyaXRlX2Zy
YW1lKAorICAgICAgICBzZWxmLCBmaW46IGJvb2wsIG9wY29kZTogaW50LCBkYXRhOiBieXRlcywg
KiwgX2V4cGVjdGVkX3N0YXRlOiBpbnQgPSBTdGF0ZS5PUEVOCisgICAgKSAtPiBOb25lOgorICAg
ICAgICAjIERlZmVuc2l2ZSBhc3NlcnRpb24gZm9yIHByb3RvY29sIGNvbXBsaWFuY2UuCisgICAg
ICAgIGlmIHNlbGYuc3RhdGUgaXMgbm90IF9leHBlY3RlZF9zdGF0ZTogICMgcHJhZ21hOiBubyBj
b3ZlcgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZFN0YXRlKAorICAgICAgICAgICAgICAgIGYi
Q2Fubm90IHdyaXRlIHRvIGEgV2ViU29ja2V0IGluIHRoZSB7c2VsZi5zdGF0ZS5uYW1lfSBzdGF0
ZSIKKyAgICAgICAgICAgICkKKworICAgICAgICBmcmFtZSA9IEZyYW1lKGZpbiwgb3Bjb2RlLCBk
YXRhKQorICAgICAgICBsb2dnZXIuZGVidWcoIiVzID4gJXIiLCBzZWxmLnNpZGUsIGZyYW1lKQor
ICAgICAgICBmcmFtZS53cml0ZSgKKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0LndyaXRlLCBt
YXNrPXNlbGYuaXNfY2xpZW50LCBleHRlbnNpb25zPXNlbGYuZXh0ZW5zaW9ucworICAgICAgICAp
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBkcmFpbigpIGNhbm5vdCBiZSBjYWxsZWQg
Y29uY3VycmVudGx5IGJ5IG11bHRpcGxlIGNvcm91dGluZXM6CisgICAgICAgICAgICAjIGh0dHA6
Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyOTkzMC4gUmVtb3ZlIHRoaXMgbG9jayB3aGVuIG5vCisg
ICAgICAgICAgICAjIHZlcnNpb24gb2YgUHl0aG9uIHdoZXJlIHRoaXMgYnVncyBleGlzdHMgaXMg
c3VwcG9ydGVkIGFueW1vcmUuCisgICAgICAgICAgICBhc3luYyB3aXRoIHNlbGYuX2RyYWluX2xv
Y2s6CisgICAgICAgICAgICAgICAgIyBIYW5kbGUgZmxvdyBjb250cm9sIGF1dG9tYXRpY2FsbHku
CisgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5fZHJhaW4oKQorICAgICAgICBleGNlcHQgQ29u
bmVjdGlvbkVycm9yOgorICAgICAgICAgICAgIyBUZXJtaW5hdGUgdGhlIGNvbm5lY3Rpb24gaWYg
dGhlIHNvY2tldCBkaWVkLgorICAgICAgICAgICAgc2VsZi5mYWlsX2Nvbm5lY3Rpb24oKQorICAg
ICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCB0byByYWlzZSBD
b25uZWN0aW9uQ2xvc2VkCisgICAgICAgICAgICAjIHdpdGggdGhlIGNvcnJlY3QgY29kZSBhbmQg
cmVhc29uLgorICAgICAgICAgICAgYXdhaXQgc2VsZi5lbnN1cmVfb3BlbigpCisKKyAgICBhc3lu
YyBkZWYgd3JpdGVfY2xvc2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMgPSBiIiIpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIGNsb3NlIGZyYW1lIGlmIGFuZCBvbmx5IGlm
IHRoZSBjb25uZWN0aW9uIHN0YXRlIGlzIE9QRU4uCisKKyAgICAgICAgVGhpcyBkZWRpY2F0ZWQg
Y29yb3V0aW5lIG11c3QgYmUgdXNlZCBmb3Igd3JpdGluZyBjbG9zZSBmcmFtZXMgdG8KKyAgICAg
ICAgZW5zdXJlIHRoYXQgYXQgbW9zdCBvbmUgY2xvc2UgZnJhbWUgaXMgc2VudCBvbiBhIGdpdmVu
IGNvbm5lY3Rpb24uCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGVzdCBhbmQgc2V0IHRoZSBj
b25uZWN0aW9uIHN0YXRlIGJlZm9yZSBzZW5kaW5nIHRoZSBjbG9zZSBmcmFtZSB0bworICAgICAg
ICAjIGF2b2lkIHNlbmRpbmcgdHdvIGZyYW1lcyBpbiBjYXNlIG9mIGNvbmN1cnJlbnQgY2FsbHMu
CisgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgU3RhdGUuT1BFTjoKKyAgICAgICAgICAgICMgNy4x
LjMuIFRoZSBXZWJTb2NrZXQgQ2xvc2luZyBIYW5kc2hha2UgaXMgU3RhcnRlZAorICAgICAgICAg
ICAgc2VsZi5zdGF0ZSA9IFN0YXRlLkNMT1NJTkcKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygi
JXMgLSBzdGF0ZSA9IENMT1NJTkciLCBzZWxmLnNpZGUpCisKKyAgICAgICAgICAgICMgNy4xLjIu
IFN0YXJ0IHRoZSBXZWJTb2NrZXQgQ2xvc2luZyBIYW5kc2hha2UKKyAgICAgICAgICAgIGF3YWl0
IHNlbGYud3JpdGVfZnJhbWUoVHJ1ZSwgT1BfQ0xPU0UsIGRhdGEsIF9leHBlY3RlZF9zdGF0ZT1T
dGF0ZS5DTE9TSU5HKQorCisgICAgYXN5bmMgZGVmIGtlZXBhbGl2ZV9waW5nKHNlbGYpIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEgUGluZyBmcmFtZSBhbmQgd2FpdCBmb3Ig
YSBQb25nIGZyYW1lIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzLgorCisgICAgICAgIFRoaXMgY29yb3V0
aW5lIGV4aXRzIHdoZW4gdGhlIGNvbm5lY3Rpb24gdGVybWluYXRlcyBhbmQgb25lIG9mIHRoZQor
ICAgICAgICBmb2xsb3dpbmcgaGFwcGVuczoKKworICAgICAgICAtIDptZXRoOmBwaW5nYCByYWlz
ZXMgOmV4YzpgQ29ubmVjdGlvbkNsb3NlZGAsIG9yCisgICAgICAgIC0gOm1ldGg6YGNsb3NlX2Nv
bm5lY3Rpb25gIGNhbmNlbHMgOmF0dHI6YGtlZXBhbGl2ZV9waW5nX3Rhc2tgLgorCisgICAgICAg
ICIiIgorICAgICAgICBpZiBzZWxmLnBpbmdfaW50ZXJ2YWwgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAg
ICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5w
aW5nX2ludGVydmFsLAorICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCBpZiBzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQor
CisgICAgICAgICAgICAgICAgIyBwaW5nKCkgcmFpc2VzIENhbmNlbGxlZEVycm9yIGlmIHRoZSBj
b25uZWN0aW9uIGlzIGNsb3NlZCwKKyAgICAgICAgICAgICAgICAjIHdoZW4gY2xvc2VfY29ubmVj
dGlvbigpIGNhbmNlbHMgc2VsZi5rZWVwYWxpdmVfcGluZ190YXNrLgorCisgICAgICAgICAgICAg
ICAgIyBwaW5nKCkgcmFpc2VzIENvbm5lY3Rpb25DbG9zZWQgaWYgdGhlIGNvbm5lY3Rpb24gaXMg
bG9zdCwKKyAgICAgICAgICAgICAgICAjIHdoZW4gY29ubmVjdGlvbl9sb3N0KCkgY2FsbHMgYWJv
cnRfcGluZ3MoKS4KKworICAgICAgICAgICAgICAgIHBpbmdfd2FpdGVyID0gYXdhaXQgc2VsZi5w
aW5nKCkKKworICAgICAgICAgICAgICAgIGlmIHNlbGYucGluZ190aW1lb3V0IGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLndhaXRfZm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbmdfd2Fp
dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGluZ190aW1lb3V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wIGlmIHN5cy52ZXJzaW9uX2lu
Zm9bOjJdIDwgKDMsIDgpIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uVGltZW91dEVycm9yOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAhIHRpbWVkIG91dCB3YWl0aW5nIGZvciBw
b25nIiwgc2VsZi5zaWRlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsX2Nvbm5l
Y3Rpb24oMTAxMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgZXhj
ZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CisgICAgICAgICAgICByYWlzZQorCisgICAgICAg
IGV4Y2VwdCBDb25uZWN0aW9uQ2xvc2VkOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiVW5leHBlY3RlZCBl
eGNlcHRpb24gaW4ga2VlcGFsaXZlIHBpbmcgdGFzayIsIGV4Y19pbmZvPVRydWUpCisKKyAgICBh
c3luYyBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgNy4xLjEuIENsb3NlIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbgorCisgICAgICAgIFdo
ZW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHN1Y2NlZWRzLCA6bWV0aDpgY29ubmVjdGlvbl9vcGVu
YCBzdGFydHMKKyAgICAgICAgdGhpcyBjb3JvdXRpbmUgaW4gYSB0YXNrLiBJdCB3YWl0cyBmb3Ig
dGhlIGRhdGEgdHJhbnNmZXIgcGhhc2UgdG8KKyAgICAgICAgY29tcGxldGUgdGhlbiBpdCBjbG9z
ZXMgdGhlIFRDUCBjb25uZWN0aW9uIGNsZWFubHkuCisKKyAgICAgICAgV2hlbiB0aGUgb3Blbmlu
ZyBoYW5kc2hha2UgZmFpbHMsIDptZXRoOmBmYWlsX2Nvbm5lY3Rpb25gIGRvZXMgdGhlCisgICAg
ICAgIHNhbWUuIFRoZXJlJ3Mgbm8gZGF0YSB0cmFuc2ZlciBwaGFzZSBpbiB0aGF0IGNhc2UuCisK
KyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGRh
dGEgdHJhbnNmZXIgcGhhc2UgdG8gY29tcGxldGUuCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNl
bGYsICJ0cmFuc2Zlcl9kYXRhX3Rhc2siKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAg
ICAgICAgICAgICAgIGF3YWl0IHNlbGYudHJhbnNmZXJfZGF0YV90YXNrCisgICAgICAgICAgICAg
ICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBh
c3MKKworICAgICAgICAgICAgIyBDYW5jZWwgdGhlIGtlZXBhbGl2ZSBwaW5nIHRhc2suCisgICAg
ICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJrZWVwYWxpdmVfcGluZ190YXNrIik6CisgICAgICAg
ICAgICAgICAgc2VsZi5rZWVwYWxpdmVfcGluZ190YXNrLmNhbmNlbCgpCisKKyAgICAgICAgICAg
ICMgQSBjbGllbnQgc2hvdWxkIHdhaXQgZm9yIGEgVENQIGNsb3NlIGZyb20gdGhlIHNlcnZlci4K
KyAgICAgICAgICAgIGlmIHNlbGYuaXNfY2xpZW50IGFuZCBoYXNhdHRyKHNlbGYsICJ0cmFuc2Zl
cl9kYXRhX3Rhc2siKToKKyAgICAgICAgICAgICAgICBpZiBhd2FpdCBzZWxmLndhaXRfZm9yX2Nv
bm5lY3Rpb25fbG9zdCgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAg
ICAgICBsb2dnZXIuZGVidWcoIiVzICEgdGltZWQgb3V0IHdhaXRpbmcgZm9yIFRDUCBjbG9zZSIs
IHNlbGYuc2lkZSkKKworICAgICAgICAgICAgIyBIYWxmLWNsb3NlIHRoZSBUQ1AgY29ubmVjdGlv
biBpZiBwb3NzaWJsZSAod2hlbiB0aGVyZSdzIG5vIFRMUykuCisgICAgICAgICAgICBpZiBzZWxm
LnRyYW5zcG9ydC5jYW5fd3JpdGVfZW9mKCk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVn
KCIlcyB4IGhhbGYtY2xvc2luZyBUQ1AgY29ubmVjdGlvbiIsIHNlbGYuc2lkZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZV9lb2YoKQorCisgICAgICAgICAgICAgICAgaWYg
YXdhaXQgc2VsZi53YWl0X2Zvcl9jb25uZWN0aW9uX2xvc3QoKToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAhIHRpbWVkIG91dCB3
YWl0aW5nIGZvciBUQ1AgY2xvc2UiLCBzZWxmLnNpZGUpCisKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgICMgVGhlIHRyeS9maW5hbGx5IGVuc3VyZXMgdGhhdCB0aGUgdHJhbnNwb3J0IG5l
dmVyIHJlbWFpbnMgb3BlbiwKKyAgICAgICAgICAgICMgZXZlbiBpZiB0aGlzIGNvcm91dGluZSBp
cyBjYW5jZWxlZCAoZm9yIGV4YW1wbGUpLgorCisgICAgICAgICAgICAjIElmIGNvbm5lY3Rpb25f
bG9zdCgpIHdhcyBjYWxsZWQsIHRoZSBUQ1AgY29ubmVjdGlvbiBpcyBjbG9zZWQuCisgICAgICAg
ICAgICAjIEhvd2V2ZXIsIGlmIFRMUyBpcyBlbmFibGVkLCB0aGUgdHJhbnNwb3J0IHN0aWxsIG5l
ZWRzIGNsb3NpbmcuCisgICAgICAgICAgICAjIEVsc2UgYXN5bmNpbyBjb21wbGFpbnM6IFJlc291
cmNlV2FybmluZzogdW5jbG9zZWQgdHJhbnNwb3J0LgorICAgICAgICAgICAgaWYgc2VsZi5jb25u
ZWN0aW9uX2xvc3Rfd2FpdGVyLmRvbmUoKSBhbmQgc2VsZi50cmFuc3BvcnQuaXNfY2xvc2luZygp
OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIENsb3NlIHRoZSBUQ1Ag
Y29ubmVjdGlvbi4gQnVmZmVycyBhcmUgZmx1c2hlZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAg
ICAgIGxvZ2dlci5kZWJ1ZygiJXMgeCBjbG9zaW5nIFRDUCBjb25uZWN0aW9uIiwgc2VsZi5zaWRl
KQorICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuY2xvc2UoKQorCisgICAgICAgICAgICBpZiBh
d2FpdCBzZWxmLndhaXRfZm9yX2Nvbm5lY3Rpb25fbG9zdCgpOgorICAgICAgICAgICAgICAgIHJl
dHVybgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAhIHRpbWVkIG91dCB3YWl0aW5nIGZv
ciBUQ1AgY2xvc2UiLCBzZWxmLnNpZGUpCisKKyAgICAgICAgICAgICMgQWJvcnQgdGhlIFRDUCBj
b25uZWN0aW9uLiBCdWZmZXJzIGFyZSBkaXNjYXJkZWQuCisgICAgICAgICAgICBsb2dnZXIuZGVi
dWcoIiVzIHggYWJvcnRpbmcgVENQIGNvbm5lY3Rpb24iLCBzZWxmLnNpZGUpCisgICAgICAgICAg
ICBzZWxmLnRyYW5zcG9ydC5hYm9ydCgpCisKKyAgICAgICAgICAgICMgY29ubmVjdGlvbl9sb3N0
KCkgaXMgY2FsbGVkIHF1aWNrbHkgYWZ0ZXIgYWJvcnRpbmcuCisgICAgICAgICAgICBhd2FpdCBz
ZWxmLndhaXRfZm9yX2Nvbm5lY3Rpb25fbG9zdCgpCisKKyAgICBhc3luYyBkZWYgd2FpdF9mb3Jf
Y29ubmVjdGlvbl9sb3N0KHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBXYWl0
IHVudGlsIHRoZSBUQ1AgY29ubmVjdGlvbiBpcyBjbG9zZWQgb3IgYGBzZWxmLmNsb3NlX3RpbWVv
dXRgYCBlbGFwc2VzLgorCisgICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgY29ubmVjdGlv
biBpcyBjbG9zZWQgYW5kIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKKyAgICAgICAgIiIiCisgICAg
ICAgIGlmIG5vdCBzZWxmLmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIuZG9uZSgpOgorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8ud2FpdF9mb3IoCisgICAgICAg
ICAgICAgICAgICAgIGFzeW5jaW8uc2hpZWxkKHNlbGYuY29ubmVjdGlvbl9sb3N0X3dhaXRlciks
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfdGltZW91dCwKKyAgICAgICAgICAgICAg
ICAgICAgbG9vcD1zZWxmLmxvb3AgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgOCkgZWxz
ZSBOb25lLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBhc3luY2lvLlRp
bWVvdXRFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgUmUtY2hlY2sgc2Vs
Zi5jb25uZWN0aW9uX2xvc3Rfd2FpdGVyLmRvbmUoKSBzeW5jaHJvbm91c2x5IGJlY2F1c2UKKyAg
ICAgICAgIyBjb25uZWN0aW9uX2xvc3QoKSBjb3VsZCBydW4gYmV0d2VlbiB0aGUgbW9tZW50IHRo
ZSB0aW1lb3V0IG9jY3VycworICAgICAgICAjIGFuZCB0aGUgbW9tZW50IHRoaXMgY29yb3V0aW5l
IHJlc3VtZXMgcnVubmluZy4KKyAgICAgICAgcmV0dXJuIHNlbGYuY29ubmVjdGlvbl9sb3N0X3dh
aXRlci5kb25lKCkKKworICAgIGRlZiBmYWlsX2Nvbm5lY3Rpb24oc2VsZiwgY29kZTogaW50ID0g
MTAwNiwgcmVhc29uOiBzdHIgPSAiIikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIDcu
MS43LiBGYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbgorCisgICAgICAgIFRoaXMgcmVxdWly
ZXM6CisKKyAgICAgICAgMS4gU3RvcHBpbmcgYWxsIHByb2Nlc3Npbmcgb2YgaW5jb21pbmcgZGF0
YSwgd2hpY2ggbWVhbnMgY2FuY2VsbGluZworICAgICAgICAgICA6YXR0cjpgdHJhbnNmZXJfZGF0
YV90YXNrYC4gVGhlIGNsb3NlIGNvZGUgd2lsbCBiZSAxMDA2IHVubGVzcyBhCisgICAgICAgICAg
IGNsb3NlIGZyYW1lIHdhcyByZWNlaXZlZCBlYXJsaWVyLgorCisgICAgICAgIDIuIFNlbmRpbmcg
YSBjbG9zZSBmcmFtZSB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvZGUgaWYgdGhlIG9wZW5pbmcKKyAg
ICAgICAgICAgaGFuZHNoYWtlIHN1Y2NlZWRlZCBhbmQgdGhlIG90aGVyIHNpZGUgaXMgbGlrZWx5
IHRvIHByb2Nlc3MgaXQuCisKKyAgICAgICAgMy4gQ2xvc2luZyB0aGUgY29ubmVjdGlvbi4gOm1l
dGg6YGNsb3NlX2Nvbm5lY3Rpb25gIHRha2VzIGNhcmUgb2YKKyAgICAgICAgICAgdGhpcyBvbmNl
IDphdHRyOmB0cmFuc2Zlcl9kYXRhX3Rhc2tgIGV4aXRzIGFmdGVyIGJlaW5nIGNhbmNlbGVkLgor
CisgICAgICAgIChUaGUgc3BlY2lmaWNhdGlvbiBkZXNjcmliZXMgdGhlc2Ugc3RlcHMgaW4gdGhl
IG9wcG9zaXRlIG9yZGVyLikKKworICAgICAgICAiIiIKKyAgICAgICAgbG9nZ2VyLmRlYnVnKAor
ICAgICAgICAgICAgIiVzICEgZmFpbGluZyAlcyBXZWJTb2NrZXQgY29ubmVjdGlvbiB3aXRoIGNv
ZGUgJWQiLAorICAgICAgICAgICAgc2VsZi5zaWRlLAorICAgICAgICAgICAgc2VsZi5zdGF0ZS5u
YW1lLAorICAgICAgICAgICAgY29kZSwKKyAgICAgICAgKQorCisgICAgICAgICMgQ2FuY2VsIHRy
YW5zZmVyX2RhdGFfdGFzayBpZiB0aGUgb3BlbmluZyBoYW5kc2hha2Ugc3VjY2VlZGVkLgorICAg
ICAgICAjIGNhbmNlbCgpIGlzIGlkZW1wb3RlbnQgYW5kIGlnbm9yZWQgaWYgdGhlIHRhc2sgaXMg
ZG9uZSBhbHJlYWR5LgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJ0cmFuc2Zlcl9kYXRhX3Rh
c2siKToKKyAgICAgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YV90YXNrLmNhbmNlbCgpCisKKyAg
ICAgICAgIyBTZW5kIGEgY2xvc2UgZnJhbWUgd2hlbiB0aGUgc3RhdGUgaXMgT1BFTiAoYSBjbG9z
ZSBmcmFtZSB3YXMgYWxyZWFkeQorICAgICAgICAjIHNlbnQgaWYgaXQncyBDTE9TSU5HKSwgZXhj
ZXB0IHdoZW4gZmFpbGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIG9mCisgICAgICAgICMgYW4g
ZXJyb3IgcmVhZGluZyBmcm9tIG9yIHdyaXRpbmcgdG8gdGhlIG5ldHdvcmsuCisgICAgICAgICMg
RG9uJ3Qgc2VuZCBhIGNsb3NlIGZyYW1lIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJyb2tlbi4KKyAg
ICAgICAgaWYgY29kZSAhPSAxMDA2IGFuZCBzZWxmLnN0YXRlIGlzIFN0YXRlLk9QRU46CisKKyAg
ICAgICAgICAgIGZyYW1lX2RhdGEgPSBzZXJpYWxpemVfY2xvc2UoY29kZSwgcmVhc29uKQorCisg
ICAgICAgICAgICAjIFdyaXRlIHRoZSBjbG9zZSBmcmFtZSB3aXRob3V0IGRyYWluaW5nIHRoZSB3
cml0ZSBidWZmZXIuCisKKyAgICAgICAgICAgICMgS2VlcGluZyBmYWlsX2Nvbm5lY3Rpb24oKSBz
eW5jaHJvbm91cyBndWFyYW50ZWVzIGl0IGNhbid0CisgICAgICAgICAgICAjIGdldCBzdHVjayBh
bmQgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhbGxlcnMuCisgICAgICAg
ICAgICAjIE5vdCBkcmFpbmlnIHRoZSB3cml0ZSBidWZmZXIgaXMgYWNjZXB0YWJsZSBpbiB0aGlz
IGNvbnRleHQuCisKKyAgICAgICAgICAgICMgVGhpcyBkdXBsaWNhdGVzIGEgZmV3IGxpbmVzIG9m
IGNvZGUgZnJvbSB3cml0ZV9jbG9zZV9mcmFtZSgpCisgICAgICAgICAgICAjIGFuZCB3cml0ZV9m
cmFtZSgpLgorCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuQ0xPU0lORworICAgICAg
ICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAtIHN0YXRlID0gQ0xPU0lORyIsIHNlbGYuc2lkZSkKKwor
ICAgICAgICAgICAgZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9DTE9TRSwgZnJhbWVfZGF0YSkKKyAg
ICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgPiAlciIsIHNlbGYuc2lkZSwgZnJhbWUpCisgICAg
ICAgICAgICBmcmFtZS53cml0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC53cml0
ZSwgbWFzaz1zZWxmLmlzX2NsaWVudCwgZXh0ZW5zaW9ucz1zZWxmLmV4dGVuc2lvbnMKKyAgICAg
ICAgICAgICkKKworICAgICAgICAjIFN0YXJ0IGNsb3NlX2Nvbm5lY3Rpb25fdGFzayBpZiB0aGUg
b3BlbmluZyBoYW5kc2hha2UgZGlkbid0IHN1Y2NlZWQuCisgICAgICAgIGlmIG5vdCBoYXNhdHRy
KHNlbGYsICJjbG9zZV9jb25uZWN0aW9uX3Rhc2siKToKKyAgICAgICAgICAgIHNlbGYuY2xvc2Vf
Y29ubmVjdGlvbl90YXNrID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYuY2xvc2VfY29ubmVj
dGlvbigpKQorCisgICAgZGVmIGFib3J0X3BpbmdzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBSYWlzZSBDb25uZWN0aW9uQ2xvc2VkIGluIHBlbmRpbmcga2VlcGFsaXZlIHBp
bmdzLgorCisgICAgICAgIFRoZXknbGwgbmV2ZXIgcmVjZWl2ZSBhIHBvbmcgb25jZSB0aGUgY29u
bmVjdGlvbiBpcyBjbG9zZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLnN0
YXRlIGlzIFN0YXRlLkNMT1NFRAorICAgICAgICBleGMgPSBzZWxmLmNvbm5lY3Rpb25fY2xvc2Vk
X2V4YygpCisKKyAgICAgICAgZm9yIHBpbmcgaW4gc2VsZi5waW5ncy52YWx1ZXMoKToKKyAgICAg
ICAgICAgIHBpbmcuc2V0X2V4Y2VwdGlvbihleGMpCisgICAgICAgICAgICAjIElmIHRoZSBleGNl
cHRpb24gaXMgbmV2ZXIgcmV0cmlldmVkLCBpdCB3aWxsIGJlIGxvZ2dlZCB3aGVuIHBpbmcKKyAg
ICAgICAgICAgICMgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQuIFRoaXMgaXMgY29uZnVzaW5nIGZvciB1
c2Vycy4KKyAgICAgICAgICAgICMgR2l2ZW4gdGhhdCBwaW5nIGlzIGRvbmUgKHdpdGggYW4gZXhj
ZXB0aW9uKSwgY2FuY2VsaW5nIGl0IGRvZXMKKyAgICAgICAgICAgICMgbm90aGluZywgYnV0IGl0
IHByZXZlbnRzIGxvZ2dpbmcgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIHBpbmcuY2FuY2Vs
KCkKKworICAgICAgICBpZiBzZWxmLnBpbmdzOgorICAgICAgICAgICAgcGluZ3NfaGV4ID0gIiwg
Ii5qb2luKHBpbmdfaWQuaGV4KCkgb3IgIltlbXB0eV0iIGZvciBwaW5nX2lkIGluIHNlbGYucGlu
Z3MpCisgICAgICAgICAgICBwbHVyYWwgPSAicyIgaWYgbGVuKHNlbGYucGluZ3MpID4gMSBlbHNl
ICIiCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIiVzIC0gYWJv
cnRlZCBwZW5kaW5nIHBpbmclczogJXMiLCBzZWxmLnNpZGUsIHBsdXJhbCwgcGluZ3NfaGV4Cisg
ICAgICAgICAgICApCisKKyAgICAjIGFzeW5jaW8uUHJvdG9jb2wgbWV0aG9kcworCisgICAgZGVm
IGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQ6IGFzeW5jaW8uQmFzZVRyYW5zcG9ydCkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENvbmZpZ3VyZSB3cml0ZSBidWZmZXIgbGlt
aXRzLgorCisgICAgICAgIFRoZSBoaWdoLXdhdGVyIGxpbWl0IGlzIGRlZmluZWQgYnkgYGBzZWxm
LndyaXRlX2xpbWl0YGAuCisKKyAgICAgICAgVGhlIGxvdy13YXRlciBsaW1pdCBjdXJyZW50bHkg
ZGVmYXVsdHMgdG8gYGBzZWxmLndyaXRlX2xpbWl0IC8vIDRgYCBpbgorICAgICAgICA6bWV0aDpg
fmFzeW5jaW8uV3JpdGVUcmFuc3BvcnQuc2V0X3dyaXRlX2J1ZmZlcl9saW1pdHNgLCB3aGljaCBz
aG91bGQKKyAgICAgICAgYmUgYWxsIHJpZ2h0IGZvciByZWFzb25hYmxlIHVzZSBjYXNlcyBvZiB0
aGlzIGxpYnJhcnkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZWFybGllc3QgcG9pbnQgd2hlcmUg
d2UgY2FuIGdldCBob2xkIG9mIHRoZSB0cmFuc3BvcnQsCisgICAgICAgIHdoaWNoIG1lYW5zIGl0
J3MgdGhlIGJlc3QgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIGl0LgorCisgICAgICAgICIiIgorICAg
ICAgICBsb2dnZXIuZGVidWcoIiVzIC0gZXZlbnQgPSBjb25uZWN0aW9uX21hZGUoJXMpIiwgc2Vs
Zi5zaWRlLCB0cmFuc3BvcnQpCisKKyAgICAgICAgdHJhbnNwb3J0ID0gY2FzdChhc3luY2lvLlRy
YW5zcG9ydCwgdHJhbnNwb3J0KQorICAgICAgICB0cmFuc3BvcnQuc2V0X3dyaXRlX2J1ZmZlcl9s
aW1pdHMoc2VsZi53cml0ZV9saW1pdCkKKyAgICAgICAgc2VsZi50cmFuc3BvcnQgPSB0cmFuc3Bv
cnQKKworICAgICAgICAjIENvcGllZCBmcm9tIGFzeW5jaW8uU3RyZWFtUmVhZGVyUHJvdG9jb2wK
KyAgICAgICAgc2VsZi5yZWFkZXIuc2V0X3RyYW5zcG9ydCh0cmFuc3BvcnQpCisKKyAgICBkZWYg
Y29ubmVjdGlvbl9sb3N0KHNlbGYsIGV4YzogT3B0aW9uYWxbRXhjZXB0aW9uXSkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIDcuMS40LiBUaGUgV2ViU29ja2V0IENvbm5lY3Rpb24gaXMg
Q2xvc2VkLgorCisgICAgICAgICIiIgorICAgICAgICBsb2dnZXIuZGVidWcoIiVzIC0gZXZlbnQg
PSBjb25uZWN0aW9uX2xvc3QoJXMpIiwgc2VsZi5zaWRlLCBleGMpCisgICAgICAgIHNlbGYuc3Rh
dGUgPSBTdGF0ZS5DTE9TRUQKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyAtIHN0YXRlID0gQ0xP
U0VEIiwgc2VsZi5zaWRlKQorICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAiY2xvc2VfY29k
ZSIpOgorICAgICAgICAgICAgc2VsZi5jbG9zZV9jb2RlID0gMTAwNgorICAgICAgICBpZiBub3Qg
aGFzYXR0cihzZWxmLCAiY2xvc2VfcmVhc29uIik6CisgICAgICAgICAgICBzZWxmLmNsb3NlX3Jl
YXNvbiA9ICIiCisgICAgICAgIGxvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICIlcyB4IGNvZGUg
PSAlZCwgcmVhc29uID0gJXMiLAorICAgICAgICAgICAgc2VsZi5zaWRlLAorICAgICAgICAgICAg
c2VsZi5jbG9zZV9jb2RlLAorICAgICAgICAgICAgc2VsZi5jbG9zZV9yZWFzb24gb3IgIltubyBy
ZWFzb25dIiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFib3J0X3BpbmdzKCkKKyAgICAgICAg
IyBJZiBzZWxmLmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIgaXNuJ3QgcGVuZGluZywgdGhhdCdzIGEg
YnVnLCBiZWNhdXNlOgorICAgICAgICAjIC0gaXQncyBzZXQgb25seSBoZXJlIGluIGNvbm5lY3Rp
b25fbG9zdCgpIHdoaWNoIGlzIGNhbGxlZCBvbmx5IG9uY2U7CisgICAgICAgICMgLSBpdCBtdXN0
IG5ldmVyIGJlIGNhbmNlbGVkLgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25fbG9zdF93YWl0ZXIu
c2V0X3Jlc3VsdChOb25lKQorCisgICAgICAgIGlmIFRydWU6ICAjIHByYWdtYTogbm8gY292ZXIK
KworICAgICAgICAgICAgIyBDb3BpZWQgZnJvbSBhc3luY2lvLlN0cmVhbVJlYWRlclByb3RvY29s
CisgICAgICAgICAgICBpZiBzZWxmLnJlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBpZiBleGMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWFkZXIuZmVlZF9l
b2YoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVh
ZGVyLnNldF9leGNlcHRpb24oZXhjKQorCisgICAgICAgICAgICAjIENvcGllZCBmcm9tIGFzeW5j
aW8uRmxvd0NvbnRyb2xNaXhpbgorICAgICAgICAgICAgIyBXYWtlIHVwIHRoZSB3cml0ZXIgaWYg
Y3VycmVudGx5IHBhdXNlZC4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYXVzZWQ6CisgICAg
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB3YWl0ZXIgPSBzZWxmLl9kcmFpbl93YWl0
ZXIKKyAgICAgICAgICAgIGlmIHdhaXRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVy
bgorICAgICAgICAgICAgc2VsZi5fZHJhaW5fd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgaWYg
d2FpdGVyLmRvbmUoKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGV4
YyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0KE5vbmUpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfZXhjZXB0aW9uKGV4YykK
KworICAgIGRlZiBwYXVzZV93cml0aW5nKHNlbGYpIC0+IE5vbmU6ICAjIHByYWdtYTogbm8gY292
ZXIKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9wYXVzZWQKKyAgICAgICAgc2VsZi5fcGF1c2Vk
ID0gVHJ1ZQorCisgICAgZGVmIHJlc3VtZV93cml0aW5nKHNlbGYpIC0+IE5vbmU6ICAjIHByYWdt
YTogbm8gY292ZXIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3BhdXNlZAorICAgICAgICBzZWxmLl9w
YXVzZWQgPSBGYWxzZQorCisgICAgICAgIHdhaXRlciA9IHNlbGYuX2RyYWluX3dhaXRlcgorICAg
ICAgICBpZiB3YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kcmFpbl93YWl0
ZXIgPSBOb25lCisgICAgICAgICAgICBpZiBub3Qgd2FpdGVyLmRvbmUoKToKKyAgICAgICAgICAg
ICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorCisgICAgZGVmIGRhdGFfcmVjZWl2ZWQoc2Vs
ZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgLSBldmVu
dCA9IGRhdGFfcmVjZWl2ZWQoPCVkIGJ5dGVzPikiLCBzZWxmLnNpZGUsIGxlbihkYXRhKSkKKyAg
ICAgICAgc2VsZi5yZWFkZXIuZmVlZF9kYXRhKGRhdGEpCisKKyAgICBkZWYgZW9mX3JlY2VpdmVk
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgdHJhbnNwb3J0
IGFmdGVyIHJlY2VpdmluZyBFT0YuCisKKyAgICAgICAgVGhlIFdlYlNvY2tldCBwcm90b2NvbCBo
YXMgaXRzIG93biBjbG9zaW5nIGhhbmRzaGFrZTogZW5kcG9pbnRzIGNsb3NlCisgICAgICAgIHRo
ZSBUQ1Agb3IgVExTIGNvbm5lY3Rpb24gYWZ0ZXIgc2VuZGluZyBhbmQgcmVjZWl2aW5nIGEgY2xv
c2UgZnJhbWUuCisKKyAgICAgICAgQXMgYSBjb25zZXF1ZW5jZSwgdGhleSBuZXZlciBuZWVkIHRv
IHdyaXRlIGFmdGVyIHJlY2VpdmluZyBFT0YsIHNvCisgICAgICAgIHRoZXJlJ3Mgbm8gcmVhc29u
IHRvIGtlZXAgdGhlIHRyYW5zcG9ydCBvcGVuIGJ5IHJldHVybmluZyBgYFRydWVgYC4KKworICAg
ICAgICBCZXNpZGVzLCB0aGF0IGRvZXNuJ3Qgd29yayBvbiBUTFMgY29ubmVjdGlvbnMuCisKKyAg
ICAgICAgIiIiCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXMgLSBldmVudCA9IGVvZl9yZWNlaXZl
ZCgpIiwgc2VsZi5zaWRlKQorICAgICAgICBzZWxmLnJlYWRlci5mZWVkX2VvZigpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcHkudHlwZWQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvc3JjL3dlYnNvY2tldHMvcHkudHlwZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9z
cmMvd2Vic29ja2V0cy9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMv
c2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZTll
MGVmZTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRz
L3NlcnZlci5weQpAQCAtMCwwICsxLDk5NSBAQAorIiIiCis6bW9kOmB3ZWJzb2NrZXRzLnNlcnZl
cmAgZGVmaW5lcyB0aGUgV2ViU29ja2V0IHNlcnZlciBBUElzLgorCisiIiIKKworaW1wb3J0IGFz
eW5jaW8KK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2ltcG9ydCBlbWFpbC51dGlscworaW1wb3J0
IGZ1bmN0b29scworaW1wb3J0IGh0dHAKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc29ja2V0Citp
bXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gdHlwZXMgaW1wb3J0IFRyYWNlYmFja1R5
cGUKK2Zyb20gdHlwaW5nIGltcG9ydCAoCisgICAgQW55LAorICAgIEF3YWl0YWJsZSwKKyAgICBD
YWxsYWJsZSwKKyAgICBHZW5lcmF0b3IsCisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBT
ZXF1ZW5jZSwKKyAgICBTZXQsCisgICAgVHVwbGUsCisgICAgVHlwZSwKKyAgICBVbmlvbiwKKyAg
ICBjYXN0LAorKQorCitmcm9tIC5leGNlcHRpb25zIGltcG9ydCAoCisgICAgQWJvcnRIYW5kc2hh
a2UsCisgICAgSW52YWxpZEhhbmRzaGFrZSwKKyAgICBJbnZhbGlkSGVhZGVyLAorICAgIEludmFs
aWRNZXNzYWdlLAorICAgIEludmFsaWRPcmlnaW4sCisgICAgSW52YWxpZFVwZ3JhZGUsCisgICAg
TmVnb3RpYXRpb25FcnJvciwKKykKK2Zyb20gLmV4dGVuc2lvbnMuYmFzZSBpbXBvcnQgRXh0ZW5z
aW9uLCBTZXJ2ZXJFeHRlbnNpb25GYWN0b3J5Citmcm9tIC5leHRlbnNpb25zLnBlcm1lc3NhZ2Vf
ZGVmbGF0ZSBpbXBvcnQgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5Citmcm9tIC5oYW5k
c2hha2UgaW1wb3J0IGJ1aWxkX3Jlc3BvbnNlLCBjaGVja19yZXF1ZXN0Citmcm9tIC5oZWFkZXJz
IGltcG9ydCBidWlsZF9leHRlbnNpb24sIHBhcnNlX2V4dGVuc2lvbiwgcGFyc2Vfc3VicHJvdG9j
b2wKK2Zyb20gLmh0dHAgaW1wb3J0IFVTRVJfQUdFTlQsIEhlYWRlcnMsIEhlYWRlcnNMaWtlLCBN
dWx0aXBsZVZhbHVlc0Vycm9yLCByZWFkX3JlcXVlc3QKK2Zyb20gLnByb3RvY29sIGltcG9ydCBX
ZWJTb2NrZXRDb21tb25Qcm90b2NvbAorZnJvbSAudHlwaW5nIGltcG9ydCBFeHRlbnNpb25IZWFk
ZXIsIE9yaWdpbiwgU3VicHJvdG9jb2wKKworCitfX2FsbF9fID0gWyJzZXJ2ZSIsICJ1bml4X3Nl
cnZlIiwgIldlYlNvY2tldFNlcnZlclByb3RvY29sIiwgIldlYlNvY2tldFNlcnZlciJdCisKK2xv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK0hlYWRlcnNMaWtlT3JDYWxs
YWJsZSA9IFVuaW9uW0hlYWRlcnNMaWtlLCBDYWxsYWJsZVtbc3RyLCBIZWFkZXJzXSwgSGVhZGVy
c0xpa2VdXQorCitIVFRQUmVzcG9uc2UgPSBUdXBsZVtodHRwLkhUVFBTdGF0dXMsIEhlYWRlcnNM
aWtlLCBieXRlc10KKworCitjbGFzcyBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbChXZWJTb2NrZXRD
b21tb25Qcm90b2NvbCk6CisgICAgIiIiCisgICAgOmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAg
c3ViY2xhc3MgaW1wbGVtZW50aW5nIGEgV2ViU29ja2V0IHNlcnZlci4KKworICAgIFRoaXMgY2xh
c3MgaW5oZXJpdHMgbW9zdCBvZiBpdHMgbWV0aG9kcyBmcm9tCisgICAgOmNsYXNzOmB+d2Vic29j
a2V0cy5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbGAuCisKKyAgICBGb3IgdGhlIHNh
a2Ugb2Ygc2ltcGxpY2l0eSwgaXQgZG9lc24ndCByZWx5IG9uIGEgZnVsbCBIVFRQIGltcGxlbWVu
dGF0aW9uLgorICAgIEl0cyBzdXBwb3J0IGZvciBIVFRQIHJlc3BvbnNlcyBpcyB2ZXJ5IGxpbWl0
ZWQuCisKKyAgICAiIiIKKworICAgIGlzX2NsaWVudCA9IEZhbHNlCisgICAgc2lkZSA9ICJzZXJ2
ZXIiCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIHdzX2hhbmRs
ZXI6IENhbGxhYmxlW1siV2ViU29ja2V0U2VydmVyUHJvdG9jb2wiLCBzdHJdLCBBd2FpdGFibGVb
QW55XV0sCisgICAgICAgIHdzX3NlcnZlcjogIldlYlNvY2tldFNlcnZlciIsCisgICAgICAgICos
CisgICAgICAgIG9yaWdpbnM6IE9wdGlvbmFsW1NlcXVlbmNlW09wdGlvbmFsW09yaWdpbl1dXSA9
IE5vbmUsCisgICAgICAgIGV4dGVuc2lvbnM6IE9wdGlvbmFsW1NlcXVlbmNlW1NlcnZlckV4dGVu
c2lvbkZhY3RvcnldXSA9IE5vbmUsCisgICAgICAgIHN1YnByb3RvY29sczogT3B0aW9uYWxbU2Vx
dWVuY2VbU3VicHJvdG9jb2xdXSA9IE5vbmUsCisgICAgICAgIGV4dHJhX2hlYWRlcnM6IE9wdGlv
bmFsW0hlYWRlcnNMaWtlT3JDYWxsYWJsZV0gPSBOb25lLAorICAgICAgICBwcm9jZXNzX3JlcXVl
c3Q6IE9wdGlvbmFsWworICAgICAgICAgICAgQ2FsbGFibGVbW3N0ciwgSGVhZGVyc10sIEF3YWl0
YWJsZVtPcHRpb25hbFtIVFRQUmVzcG9uc2VdXV0KKyAgICAgICAgXSA9IE5vbmUsCisgICAgICAg
IHNlbGVjdF9zdWJwcm90b2NvbDogT3B0aW9uYWxbCisgICAgICAgICAgICBDYWxsYWJsZVtbU2Vx
dWVuY2VbU3VicHJvdG9jb2xdLCBTZXF1ZW5jZVtTdWJwcm90b2NvbF1dLCBTdWJwcm90b2NvbF0K
KyAgICAgICAgXSA9IE5vbmUsCisgICAgICAgICoqa3dhcmdzOiBBbnksCisgICAgKSAtPiBOb25l
OgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIDYuMCBvciBlYXJs
aWVyLgorICAgICAgICBpZiBvcmlnaW5zIGlzIG5vdCBOb25lIGFuZCAiIiBpbiBvcmlnaW5zOgor
ICAgICAgICAgICAgd2FybmluZ3Mud2FybigidXNlIE5vbmUgaW5zdGVhZCBvZiAnJyBpbiBvcmln
aW5zIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgb3JpZ2lucyA9IFtOb25lIGlm
IG9yaWdpbiA9PSAiIiBlbHNlIG9yaWdpbiBmb3Igb3JpZ2luIGluIG9yaWdpbnNdCisgICAgICAg
IHNlbGYud3NfaGFuZGxlciA9IHdzX2hhbmRsZXIKKyAgICAgICAgc2VsZi53c19zZXJ2ZXIgPSB3
c19zZXJ2ZXIKKyAgICAgICAgc2VsZi5vcmlnaW5zID0gb3JpZ2lucworICAgICAgICBzZWxmLmF2
YWlsYWJsZV9leHRlbnNpb25zID0gZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmF2YWlsYWJsZV9z
dWJwcm90b2NvbHMgPSBzdWJwcm90b2NvbHMKKyAgICAgICAgc2VsZi5leHRyYV9oZWFkZXJzID0g
ZXh0cmFfaGVhZGVycworICAgICAgICBzZWxmLl9wcm9jZXNzX3JlcXVlc3QgPSBwcm9jZXNzX3Jl
cXVlc3QKKyAgICAgICAgc2VsZi5fc2VsZWN0X3N1YnByb3RvY29sID0gc2VsZWN0X3N1YnByb3Rv
Y29sCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCisKKyAgICBkZWYgY29ubmVj
dGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgUmVnaXN0ZXIgY29ubmVjdGlvbiBhbmQgaW5pdGlhbGl6
ZSBhIHRhc2sgdG8gaGFuZGxlIGl0LgorCisgICAgICAgICIiIgorICAgICAgICBzdXBlcigpLmNv
bm5lY3Rpb25fbWFkZSh0cmFuc3BvcnQpCisgICAgICAgICMgUmVnaXN0ZXIgdGhlIGNvbm5lY3Rp
b24gd2l0aCB0aGUgc2VydmVyIGJlZm9yZSBjcmVhdGluZyB0aGUgaGFuZGxlcgorICAgICAgICAj
IHRhc2suIFJlZ2lzdGVyaW5nIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhhbmRsZXIgY29yb3V0
aW5lIHdvdWxkCisgICAgICAgICMgY3JlYXRlIGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB0aGUg
Y3JlYXRpb24gb2YgdGhlIHRhc2ssIHdoaWNoCisgICAgICAgICMgc2NoZWR1bGVzIGl0cyBleGVj
dXRpb24sIGFuZCB0aGUgbW9tZW50IHRoZSBoYW5kbGVyIHN0YXJ0cyBydW5uaW5nLgorICAgICAg
ICBzZWxmLndzX3NlcnZlci5yZWdpc3RlcihzZWxmKQorICAgICAgICBzZWxmLmhhbmRsZXJfdGFz
ayA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhzZWxmLmhhbmRsZXIoKSkKKworICAgIGFzeW5jIGRl
ZiBoYW5kbGVyKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgdGhl
IGxpZmVjeWNsZSBvZiBhIFdlYlNvY2tldCBjb25uZWN0aW9uLgorCisgICAgICAgIFNpbmNlIHRo
aXMgbWV0aG9kIGRvZXNuJ3QgaGF2ZSBhIGNhbGxlciBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25z
LCBpdAorICAgICAgICBhdHRlbXBzIHRvIGxvZyByZWxldmFudCBvbmVzIGFuZCBndWFyYW50ZWVz
IHRoYXQgdGhlIFRDUCBjb25uZWN0aW9uIGlzCisgICAgICAgIGNsb3NlZCBiZWZvcmUgZXhpdGlu
Zy4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgcGF0aCA9IGF3YWl0IHNlbGYuaGFuZHNoYWtlKAorICAgICAgICAgICAgICAg
ICAgICBvcmlnaW5zPXNlbGYub3JpZ2lucywKKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxl
X2V4dGVuc2lvbnM9c2VsZi5hdmFpbGFibGVfZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgYXZhaWxhYmxlX3N1YnByb3RvY29scz1zZWxmLmF2YWlsYWJsZV9zdWJwcm90b2NvbHMsCisg
ICAgICAgICAgICAgICAgICAgIGV4dHJhX2hlYWRlcnM9c2VsZi5leHRyYV9oZWFkZXJzLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uRXJyb3I6CisgICAg
ICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJDb25uZWN0aW9uIGVycm9yIGluIG9wZW5pbmcgaGFu
ZHNoYWtlIiwgZXhjX2luZm89VHJ1ZSkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShleGMsIEFib3J0SGFuZHNoYWtlKToKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBoZWFk
ZXJzLCBib2R5ID0gZXhjLnN0YXR1cywgZXhjLmhlYWRlcnMsIGV4Yy5ib2R5CisgICAgICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV4YywgSW52YWxpZE9yaWdpbik6CisgICAgICAgICAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiSW52YWxpZCBvcmlnaW4iLCBleGNfaW5mbz1UcnVlKQorICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMsIGhlYWRlcnMsIGJvZHkgPSAoCisgICAgICAgICAgICAg
ICAgICAgICAgICBodHRwLkhUVFBTdGF0dXMuRk9SQklEREVOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgSGVhZGVycygpLAorICAgICAgICAgICAgICAgICAgICAgICAgZiJGYWlsZWQgdG8gb3Bl
biBhIFdlYlNvY2tldCBjb25uZWN0aW9uOiB7ZXhjfS5cbiIuZW5jb2RlKCksCisgICAgICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXhjLCBJbnZhbGlk
VXBncmFkZSk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiSW52YWxpZCB1cGdy
YWRlIiwgZXhjX2luZm89VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBoZWFkZXJz
LCBib2R5ID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLlVQR1JB
REVfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJzKFsoIlVwZ3JhZGUi
LCAid2Vic29ja2V0IildKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmIkZhaWxlZCB0byBvcGVuIGEgV2ViU29ja2V0IGNvbm5lY3Rpb246
IHtleGN9LlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZiJZb3UgY2Fubm90IGFjY2VzcyBhIFdlYlNvY2tldCBzZXJ2ZXIg
ZGlyZWN0bHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYid2l0aCBhIGJyb3dzZXIu
IFlvdSBuZWVkIGEgV2ViU29ja2V0IGNsaWVudC5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICkuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbGlm
IGlzaW5zdGFuY2UoZXhjLCBJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAgICAgICAgICAgICAgICAg
bG9nZ2VyLmRlYnVnKCJJbnZhbGlkIGhhbmRzaGFrZSIsIGV4Y19pbmZvPVRydWUpCisgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cywgaGVhZGVycywgYm9keSA9ICgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGh0dHAuSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEhlYWRlcnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYiRmFpbGVkIHRvIG9wZW4g
YSBXZWJTb2NrZXQgY29ubmVjdGlvbjoge2V4Y30uXG4iLmVuY29kZSgpLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbG9n
Z2VyLndhcm5pbmcoIkVycm9yIGluIG9wZW5pbmcgaGFuZHNoYWtlIiwgZXhjX2luZm89VHJ1ZSkK
KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBoZWFkZXJzLCBib2R5ID0gKAorICAgICAgICAg
ICAgICAgICAgICAgICAgaHR0cC5IVFRQU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEhlYWRlcnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIkZhaWxlZCB0byBvcGVuIGEgV2ViU29j
a2V0IGNvbm5lY3Rpb24uXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJTZWUgc2Vy
dmVyIGxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGhlYWRlcnMuc2V0
ZGVmYXVsdCgiRGF0ZSIsIGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUodXNlZ210PVRydWUpKQorICAg
ICAgICAgICAgICAgIGhlYWRlcnMuc2V0ZGVmYXVsdCgiU2VydmVyIiwgVVNFUl9BR0VOVCkKKyAg
ICAgICAgICAgICAgICBoZWFkZXJzLnNldGRlZmF1bHQoIkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGxl
bihib2R5KSkpCisgICAgICAgICAgICAgICAgaGVhZGVycy5zZXRkZWZhdWx0KCJDb250ZW50LVR5
cGUiLCAidGV4dC9wbGFpbiIpCisgICAgICAgICAgICAgICAgaGVhZGVycy5zZXRkZWZhdWx0KCJD
b25uZWN0aW9uIiwgImNsb3NlIikKKworICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfaHR0cF9y
ZXNwb25zZShzdGF0dXMsIGhlYWRlcnMsIGJvZHkpCisgICAgICAgICAgICAgICAgc2VsZi5mYWls
X2Nvbm5lY3Rpb24oKQorICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYud2FpdF9jbG9zZWQoKQor
ICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgYXdhaXQgc2VsZi53c19oYW5kbGVyKHNlbGYsIHBhdGgpCisgICAgICAgICAgICBleGNlcHQg
RXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3IgaW4gY29ubmVj
dGlvbiBoYW5kbGVyIiwgZXhjX2luZm89VHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5jbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbF9jb25uZWN0aW9uKDEwMTEp
CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGF3YWl0IHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25FcnJv
cjoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNvbm5lY3Rpb24gZXJyb3IgaW4gY2xv
c2luZyBoYW5kc2hha2UiLCBleGNfaW5mbz1UcnVlKQorICAgICAgICAgICAgICAgIHJhaXNlCisg
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJu
aW5nKCJFcnJvciBpbiBjbG9zaW5nIGhhbmRzaGFrZSIsIGV4Y19pbmZvPVRydWUpCisgICAgICAg
ICAgICAgICAgcmFpc2UKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAg
IyBMYXN0LWRpdGNoIGF0dGVtcHQgdG8gYXZvaWQgbGVha2luZyBjb25uZWN0aW9ucyBvbiBlcnJv
cnMuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuY2xv
c2UoKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogICMgcHJhZ21hOiBubyBjb3Zlcgor
ICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBV
bnJlZ2lzdGVyIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIHNlcnZlciB3aGVuIHRoZSBoYW5kbGVy
IHRhc2sKKyAgICAgICAgICAgICMgdGVybWluYXRlcy4gUmVnaXN0cmF0aW9uIGlzIHRpZWQgdG8g
dGhlIGxpZmVjeWNsZSBvZiB0aGUgaGFuZGxlcgorICAgICAgICAgICAgIyB0YXNrIGJlY2F1c2Ug
dGhlIHNlcnZlciB3YWl0cyBmb3IgdGFza3MgYXR0YWNoZWQgdG8gcmVnaXN0ZXJlZAorICAgICAg
ICAgICAgIyBjb25uZWN0aW9ucyBiZWZvcmUgdGVybWluYXRpbmcuCisgICAgICAgICAgICBzZWxm
LndzX3NlcnZlci51bnJlZ2lzdGVyKHNlbGYpCisKKyAgICBhc3luYyBkZWYgcmVhZF9odHRwX3Jl
cXVlc3Qoc2VsZikgLT4gVHVwbGVbc3RyLCBIZWFkZXJzXToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlYWQgcmVxdWVzdCBsaW5lIGFuZCBoZWFkZXJzIGZyb20gdGhlIEhUVFAgcmVxdWVzdC4KKwor
ICAgICAgICBJZiB0aGUgcmVxdWVzdCBjb250YWlucyBhIGJvZHksIGl0IG1heSBiZSByZWFkIGZy
b20gYGBzZWxmLnJlYWRlcmBgCisgICAgICAgIGFmdGVyIHRoaXMgY29yb3V0aW5lIHJldHVybnMu
CisKKyAgICAgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLkludmFsaWRNZXNzYWdl
OiBpZiB0aGUgSFRUUCBtZXNzYWdlIGlzCisgICAgICAgICAgICBtYWxmb3JtZWQgb3IgaXNuJ3Qg
YW4gSFRUUC8xLjEgR0VUIHJlcXVlc3QKKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgcGF0aCwgaGVhZGVycyA9IGF3YWl0IHJlYWRfcmVxdWVzdChzZWxmLnJlYWRlcikK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbnZh
bGlkTWVzc2FnZSgiZGlkIG5vdCByZWNlaXZlIGEgdmFsaWQgSFRUUCByZXF1ZXN0IikgZnJvbSBl
eGMKKworICAgICAgICBsb2dnZXIuZGVidWcoIiVzIDwgR0VUICVzIEhUVFAvMS4xIiwgc2VsZi5z
aWRlLCBwYXRoKQorICAgICAgICBsb2dnZXIuZGVidWcoIiVzIDwgJXIiLCBzZWxmLnNpZGUsIGhl
YWRlcnMpCisKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBzZWxmLnJlcXVlc3Rf
aGVhZGVycyA9IGhlYWRlcnMKKworICAgICAgICByZXR1cm4gcGF0aCwgaGVhZGVycworCisgICAg
ZGVmIHdyaXRlX2h0dHBfcmVzcG9uc2UoCisgICAgICAgIHNlbGYsIHN0YXR1czogaHR0cC5IVFRQ
U3RhdHVzLCBoZWFkZXJzOiBIZWFkZXJzLCBib2R5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgV3JpdGUgc3RhdHVzIGxpbmUgYW5k
IGhlYWRlcnMgdG8gdGhlIEhUVFAgcmVzcG9uc2UuCisKKyAgICAgICAgVGhpcyBjb3JvdXRpbmUg
aXMgYWxzbyBhYmxlIHRvIHdyaXRlIGEgcmVzcG9uc2UgYm9keS4KKworICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5yZXNwb25zZV9oZWFkZXJzID0gaGVhZGVycworCisgICAgICAgIGxvZ2dlci5k
ZWJ1ZygiJXMgPiBIVFRQLzEuMSAlZCAlcyIsIHNlbGYuc2lkZSwgc3RhdHVzLnZhbHVlLCBzdGF0
dXMucGhyYXNlKQorICAgICAgICBsb2dnZXIuZGVidWcoIiVzID4gJXIiLCBzZWxmLnNpZGUsIGhl
YWRlcnMpCisKKyAgICAgICAgIyBTaW5jZSB0aGUgc3RhdHVzIGxpbmUgYW5kIGhlYWRlcnMgb25s
eSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMsCisgICAgICAgICMgd2UgY2FuIGtlZXAgdGhpcyBz
aW1wbGUuCisgICAgICAgIHJlc3BvbnNlID0gZiJIVFRQLzEuMSB7c3RhdHVzLnZhbHVlfSB7c3Rh
dHVzLnBocmFzZX1cclxuIgorICAgICAgICByZXNwb25zZSArPSBzdHIoaGVhZGVycykKKworICAg
ICAgICBzZWxmLnRyYW5zcG9ydC53cml0ZShyZXNwb25zZS5lbmNvZGUoKSkKKworICAgICAgICBp
ZiBib2R5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcyA+IGJvZHkg
KCVkIGJ5dGVzKSIsIHNlbGYuc2lkZSwgbGVuKGJvZHkpKQorICAgICAgICAgICAgc2VsZi50cmFu
c3BvcnQud3JpdGUoYm9keSkKKworICAgIGFzeW5jIGRlZiBwcm9jZXNzX3JlcXVlc3QoCisgICAg
ICAgIHNlbGYsIHBhdGg6IHN0ciwgcmVxdWVzdF9oZWFkZXJzOiBIZWFkZXJzCisgICAgKSAtPiBP
cHRpb25hbFtIVFRQUmVzcG9uc2VdOgorICAgICAgICAiIiIKKyAgICAgICAgSW50ZXJjZXB0IHRo
ZSBIVFRQIHJlcXVlc3QgYW5kIHJldHVybiBhbiBIVFRQIHJlc3BvbnNlIGlmIGFwcHJvcHJpYXRl
LgorCisgICAgICAgIElmIGBgcHJvY2Vzc19yZXF1ZXN0YGAgcmV0dXJucyBgYE5vbmVgYCwgdGhl
IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgY29udGludWVzLiBJZiBpdCByZXR1cm5zIDMt
dXBsZSBjb250YWluaW5nIGEgc3RhdHVzIGNvZGUsIHJlc3BvbnNlCisgICAgICAgIGhlYWRlcnMg
YW5kIGEgcmVzcG9uc2UgYm9keSwgdGhhdCBIVFRQIHJlc3BvbnNlIGlzIHNlbnQgYW5kIHRoZQor
ICAgICAgICBjb25uZWN0aW9uIGlzIGNsb3NlZC4gSW4gdGhhdCBjYXNlOgorCisgICAgICAgICog
VGhlIEhUVFAgc3RhdHVzIG11c3QgYmUgYSA6Y2xhc3M6YH5odHRwLkhUVFBTdGF0dXNgLgorICAg
ICAgICAqIEhUVFAgaGVhZGVycyBtdXN0IGJlIGEgOmNsYXNzOmB+d2Vic29ja2V0cy5odHRwLkhl
YWRlcnNgIGluc3RhbmNlLCBhCisgICAgICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1h
cHBpbmdgLCBvciBhbiBpdGVyYWJsZSBvZiBgYChuYW1lLAorICAgICAgICAgIHZhbHVlKWBgIHBh
aXJzLgorICAgICAgICAqIFRoZSBIVFRQIHJlc3BvbnNlIGJvZHkgbXVzdCBiZSA6Y2xhc3M6YGJ5
dGVzYC4gSXQgbWF5IGJlIGVtcHR5LgorCisgICAgICAgIFRoaXMgY29yb3V0aW5lIG1heSBiZSBv
dmVycmlkZGVuIGluIGEgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAKKyAgICAgICAg
c3ViY2xhc3MsIGZvciBleGFtcGxlOgorCisgICAgICAgICogdG8gcmV0dXJuIGEgSFRUUCAyMDAg
T0sgcmVzcG9uc2Ugb24gYSBnaXZlbiBwYXRoOyB0aGVuIGEgbG9hZAorICAgICAgICAgIGJhbGFu
Y2VyIGNhbiB1c2UgdGhpcyBwYXRoIGZvciBhIGhlYWx0aCBjaGVjazsKKyAgICAgICAgKiB0byBh
dXRoZW50aWNhdGUgdGhlIHJlcXVlc3QgYW5kIHJldHVybiBhIEhUVFAgNDAxIFVuYXV0aG9yaXpl
ZCBvciBhCisgICAgICAgICAgSFRUUCA0MDMgRm9yYmlkZGVuIHdoZW4gYXV0aGVudGljYXRpb24g
ZmFpbHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzdWJjbGFzc2luZywgaXQgaXMgcG9zc2libGUg
dG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QgYnkKKyAgICAgICAgcGFzc2luZyBhIGBgcHJvY2Vzc19y
ZXF1ZXN0YGAgYXJndW1lbnQgdG8gdGhlIDpmdW5jOmBzZXJ2ZWAgZnVuY3Rpb24KKyAgICAgICAg
b3IgdGhlIDpjbGFzczpgV2ViU29ja2V0U2VydmVyUHJvdG9jb2xgIGNvbnN0cnVjdG9yLiBUaGlz
IGlzCisgICAgICAgIGVxdWl2YWxlbnQsIGV4Y2VwdCBgYHByb2Nlc3NfcmVxdWVzdGBgIHdvbid0
IGhhdmUgYWNjZXNzIHRvIHRoZQorICAgICAgICBwcm90b2NvbCBpbnN0YW5jZSwgc28gaXQgY2Fu
J3Qgc3RvcmUgaW5mb3JtYXRpb24gZm9yIGxhdGVyIHVzZS4KKworICAgICAgICBgYHByb2Nlc3Nf
cmVxdWVzdGBgIGlzIGV4cGVjdGVkIHRvIGNvbXBsZXRlIHF1aWNrbHkuIElmIGl0IG1heSBydW4g
Zm9yCisgICAgICAgIGEgbG9uZyB0aW1lLCB0aGVuIGl0IHNob3VsZCBhd2FpdCA6bWV0aDpgd2Fp
dF9jbG9zZWRgIGFuZCBleGl0IGlmCisgICAgICAgIDptZXRoOmB3YWl0X2Nsb3NlZGAgY29tcGxl
dGVzLCBvciBlbHNlIGl0IGNvdWxkIHByZXZlbnQgdGhlIHNlcnZlcgorICAgICAgICBmcm9tIHNo
dXR0aW5nIGRvd24uCisKKyAgICAgICAgOnBhcmFtIHBhdGg6IHJlcXVlc3QgcGF0aCwgaW5jbHVk
aW5nIG9wdGlvbmFsIHF1ZXJ5IHN0cmluZworICAgICAgICA6cGFyYW0gcmVxdWVzdF9oZWFkZXJz
OiByZXF1ZXN0IGhlYWRlcnMKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcHJvY2Vz
c19yZXF1ZXN0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9wcm9j
ZXNzX3JlcXVlc3QocGF0aCwgcmVxdWVzdF9oZWFkZXJzKQorICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZShyZXNwb25zZSwgQXdhaXRhYmxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQg
cmVzcG9uc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBGb3IgYmFja3dh
cmRzIGNvbXBhdGliaWxpdHkgd2l0aCA3LjAuCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fy
bigKKyAgICAgICAgICAgICAgICAgICAgImRlY2xhcmUgcHJvY2Vzc19yZXF1ZXN0IGFzIGEgY29y
b3V0aW5lIiwgRGVwcmVjYXRpb25XYXJuaW5nCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXNwb25zZSAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcHJvY2Vzc19vcmlnaW4oCisgICAgICAg
IGhlYWRlcnM6IEhlYWRlcnMsIG9yaWdpbnM6IE9wdGlvbmFsW1NlcXVlbmNlW09wdGlvbmFsW09y
aWdpbl1dXSA9IE5vbmUKKyAgICApIC0+IE9wdGlvbmFsW09yaWdpbl06CisgICAgICAgICIiIgor
ICAgICAgICBIYW5kbGUgdGhlIE9yaWdpbiBIVFRQIHJlcXVlc3QgaGVhZGVyLgorCisgICAgICAg
IDpwYXJhbSBoZWFkZXJzOiByZXF1ZXN0IGhlYWRlcnMKKyAgICAgICAgOnBhcmFtIG9yaWdpbnM6
IG9wdGlvbmFsIGxpc3Qgb2YgYWNjZXB0YWJsZSBvcmlnaW5zCisgICAgICAgIDpyYWlzZXMgfndl
YnNvY2tldHMuZXhjZXB0aW9ucy5JbnZhbGlkT3JpZ2luOiBpZiB0aGUgb3JpZ2luIGlzbid0Cisg
ICAgICAgICAgICBhY2NlcHRhYmxlCisKKyAgICAgICAgIiIiCisgICAgICAgICMgIlRoZSB1c2Vy
IGFnZW50IE1VU1QgTk9UIGluY2x1ZGUgbW9yZSB0aGFuIG9uZSBPcmlnaW4gaGVhZGVyIGZpZWxk
IgorICAgICAgICAjIHBlciBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NCNzZWN0
aW9uLTcuMy4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2luID0gY2FzdChPcmlnaW4s
IGhlYWRlcnMuZ2V0KCJPcmlnaW4iKSkKKyAgICAgICAgZXhjZXB0IE11bHRpcGxlVmFsdWVzRXJy
b3I6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyKCJPcmlnaW4iLCAibW9yZSB0aGFu
IG9uZSBPcmlnaW4gaGVhZGVyIGZvdW5kIikKKyAgICAgICAgaWYgb3JpZ2lucyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGlmIG9yaWdpbiBub3QgaW4gb3JpZ2luczoKKyAgICAgICAgICAgICAg
ICByYWlzZSBJbnZhbGlkT3JpZ2luKG9yaWdpbikKKyAgICAgICAgcmV0dXJuIG9yaWdpbgorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwcm9jZXNzX2V4dGVuc2lvbnMoCisgICAgICAgIGhl
YWRlcnM6IEhlYWRlcnMsCisgICAgICAgIGF2YWlsYWJsZV9leHRlbnNpb25zOiBPcHRpb25hbFtT
ZXF1ZW5jZVtTZXJ2ZXJFeHRlbnNpb25GYWN0b3J5XV0sCisgICAgKSAtPiBUdXBsZVtPcHRpb25h
bFtzdHJdLCBMaXN0W0V4dGVuc2lvbl1dOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIHRo
ZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgSFRUUCByZXF1ZXN0IGhlYWRlci4KKworICAgICAg
ICBBY2NlcHQgb3IgcmVqZWN0IGVhY2ggZXh0ZW5zaW9uIHByb3Bvc2VkIGluIHRoZSBjbGllbnQg
cmVxdWVzdC4KKyAgICAgICAgTmVnb3RpYXRlIHBhcmFtZXRlcnMgZm9yIGFjY2VwdGVkIGV4dGVu
c2lvbnMuCisKKyAgICAgICAgUmV0dXJuIHRoZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgSFRU
UCByZXNwb25zZSBoZWFkZXIgYW5kIHRoZSBsaXN0CisgICAgICAgIG9mIGFjY2VwdGVkIGV4dGVu
c2lvbnMuCisKKyAgICAgICAgOnJmYzpgNjQ1NWAgbGVhdmVzIHRoZSBydWxlcyB1cCB0byB0aGUg
c3BlY2lmaWNhdGlvbiBvZiBlYWNoCisgICAgICAgIDpleHRlbnNpb24uCisKKyAgICAgICAgVG8g
cHJvdmlkZSB0aGlzIGxldmVsIG9mIGZsZXhpYmlsaXR5LCBmb3IgZWFjaCBleHRlbnNpb24gcHJv
cG9zZWQgYnkKKyAgICAgICAgdGhlIGNsaWVudCwgd2UgY2hlY2sgZm9yIGEgbWF0Y2ggd2l0aCBl
YWNoIGV4dGVuc2lvbiBhdmFpbGFibGUgaW4gdGhlCisgICAgICAgIHNlcnZlciBjb25maWd1cmF0
aW9uLiBJZiBubyBtYXRjaCBpcyBmb3VuZCwgdGhlIGV4dGVuc2lvbiBpcyBpZ25vcmVkLgorCisg
ICAgICAgIElmIHNldmVyYWwgdmFyaWFudHMgb2YgdGhlIHNhbWUgZXh0ZW5zaW9uIGFyZSBwcm9w
b3NlZCBieSB0aGUgY2xpZW50LAorICAgICAgICBpdCBtYXkgYmUgYWNjZXB0ZWQgc2V2ZXJlbCB0
aW1lcywgd2hpY2ggd29uJ3QgbWFrZSBzZW5zZSBpbiBnZW5lcmFsLgorICAgICAgICBFeHRlbnNp
b25zIG11c3QgaW1wbGVtZW50IHRoZWlyIG93biByZXF1aXJlbWVudHMuIEZvciB0aGlzIHB1cnBv
c2UsCisgICAgICAgIHRoZSBsaXN0IG9mIHByZXZpb3VzbHkgYWNjZXB0ZWQgZXh0ZW5zaW9ucyBp
cyBwcm92aWRlZC4KKworICAgICAgICBUaGlzIHByb2Nlc3MgZG9lc24ndCBhbGxvdyB0aGUgc2Vy
dmVyIHRvIHJlb3JkZXIgZXh0ZW5zaW9ucy4gSXQgY2FuCisgICAgICAgIG9ubHkgc2VsZWN0IGEg
c3Vic2V0IG9mIHRoZSBleHRlbnNpb25zIHByb3Bvc2VkIGJ5IHRoZSBjbGllbnQuCisKKyAgICAg
ICAgT3RoZXIgcmVxdWlyZW1lbnRzLCBmb3IgZXhhbXBsZSByZWxhdGVkIHRvIG1hbmRhdG9yeSBl
eHRlbnNpb25zIG9yIHRoZQorICAgICAgICBvcmRlciBvZiBleHRlbnNpb25zLCBtYXkgYmUgaW1w
bGVtZW50ZWQgYnkgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZC4KKworICAgICAgICA6cGFyYW0gaGVh
ZGVyczogcmVxdWVzdCBoZWFkZXJzCisgICAgICAgIDpwYXJhbSBleHRlbnNpb25zOiBvcHRpb25h
bCBsaXN0IG9mIHN1cHBvcnRlZCBleHRlbnNpb25zCisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tl
dHMuZXhjZXB0aW9ucy5JbnZhbGlkSGFuZHNoYWtlOiB0byBhYm9ydCB0aGUKKyAgICAgICAgICAg
IGhhbmRzaGFrZSB3aXRoIGFuIEhUVFAgNDAwIGVycm9yIGNvZGUKKworICAgICAgICAiIiIKKyAg
ICAgICAgcmVzcG9uc2VfaGVhZGVyX3ZhbHVlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorCisgICAg
ICAgIGV4dGVuc2lvbl9oZWFkZXJzOiBMaXN0W0V4dGVuc2lvbkhlYWRlcl0gPSBbXQorICAgICAg
ICBhY2NlcHRlZF9leHRlbnNpb25zOiBMaXN0W0V4dGVuc2lvbl0gPSBbXQorCisgICAgICAgIGhl
YWRlcl92YWx1ZXMgPSBoZWFkZXJzLmdldF9hbGwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyIp
CisKKyAgICAgICAgaWYgaGVhZGVyX3ZhbHVlcyBhbmQgYXZhaWxhYmxlX2V4dGVuc2lvbnM6CisK
KyAgICAgICAgICAgIHBhcnNlZF9oZWFkZXJfdmFsdWVzOiBMaXN0W0V4dGVuc2lvbkhlYWRlcl0g
PSBzdW0oCisgICAgICAgICAgICAgICAgW3BhcnNlX2V4dGVuc2lvbihoZWFkZXJfdmFsdWUpIGZv
ciBoZWFkZXJfdmFsdWUgaW4gaGVhZGVyX3ZhbHVlc10sIFtdCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgIGZvciBuYW1lLCByZXF1ZXN0X3BhcmFtcyBpbiBwYXJzZWRfaGVhZGVyX3ZhbHVl
czoKKworICAgICAgICAgICAgICAgIGZvciBleHRfZmFjdG9yeSBpbiBhdmFpbGFibGVfZXh0ZW5z
aW9uczoKKworICAgICAgICAgICAgICAgICAgICAjIFNraXAgbm9uLW1hdGNoaW5nIGV4dGVuc2lv
bnMgYmFzZWQgb24gdGhlaXIgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgZXh0X2ZhY3Rv
cnkubmFtZSAhPSBuYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgICAgICAgICAjIFNraXAgbm9uLW1hdGNoaW5nIGV4dGVuc2lvbnMgYmFzZWQgb24g
dGhlaXIgcGFyYW1zLgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZV9wYXJhbXMsIGV4dGVuc2lvbiA9IGV4dF9mYWN0b3J5LnByb2Nlc3Nf
cmVxdWVzdF9wYXJhbXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9wYXJh
bXMsIGFjY2VwdGVkX2V4dGVuc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0IE5lZ290aWF0aW9uRXJyb3I6CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICMgQWRkIG1hdGNoaW5nIGV4
dGVuc2lvbiB0byB0aGUgZmluYWwgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
X2hlYWRlcnMuYXBwZW5kKChuYW1lLCByZXNwb25zZV9wYXJhbXMpKQorICAgICAgICAgICAgICAg
ICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAgICAg
ICAgICAgICAgIyBCcmVhayBvdXQgb2YgdGhlIGxvb3Agb25jZSB3ZSBoYXZlIGEgbWF0Y2guCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGRpZG4n
dCBicmVhayBmcm9tIHRoZSBsb29wLCBubyBleHRlbnNpb24gaW4gb3VyIGxpc3QKKyAgICAgICAg
ICAgICAgICAjIG1hdGNoZWQgd2hhdCB0aGUgY2xpZW50IHNlbnQuIFRoZSBleHRlbnNpb24gaXMg
ZGVjbGluZWQuCisKKyAgICAgICAgIyBTZXJpYWxpemUgZXh0ZW5zaW9uIGhlYWRlci4KKyAgICAg
ICAgaWYgZXh0ZW5zaW9uX2hlYWRlcnM6CisgICAgICAgICAgICByZXNwb25zZV9oZWFkZXJfdmFs
dWUgPSBidWlsZF9leHRlbnNpb24oZXh0ZW5zaW9uX2hlYWRlcnMpCisKKyAgICAgICAgcmV0dXJu
IHJlc3BvbnNlX2hlYWRlcl92YWx1ZSwgYWNjZXB0ZWRfZXh0ZW5zaW9ucworCisgICAgIyBOb3Qg
QHN0YXRpY21ldGhvZCBiZWNhdXNlIGl0IGNhbGxzIHNlbGYuc2VsZWN0X3N1YnByb3RvY29sKCkK
KyAgICBkZWYgcHJvY2Vzc19zdWJwcm90b2NvbCgKKyAgICAgICAgc2VsZiwgaGVhZGVyczogSGVh
ZGVycywgYXZhaWxhYmxlX3N1YnByb3RvY29sczogT3B0aW9uYWxbU2VxdWVuY2VbU3VicHJvdG9j
b2xdXQorICAgICkgLT4gT3B0aW9uYWxbU3VicHJvdG9jb2xdOgorICAgICAgICAiIiIKKyAgICAg
ICAgSGFuZGxlIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIEhUVFAgcmVxdWVzdCBoZWFkZXIu
CisKKyAgICAgICAgUmV0dXJuIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgSFRUUCByZXNwb25zZSBo
ZWFkZXIsIHdoaWNoIGlzIHRoZSBzYW1lCisgICAgICAgIGFzIHRoZSBzZWxlY3RlZCBzdWJwcm90
b2NvbC4KKworICAgICAgICA6cGFyYW0gaGVhZGVyczogcmVxdWVzdCBoZWFkZXJzCisgICAgICAg
IDpwYXJhbSBhdmFpbGFibGVfc3VicHJvdG9jb2xzOiBvcHRpb25hbCBsaXN0IG9mIHN1cHBvcnRl
ZCBzdWJwcm90b2NvbHMKKyAgICAgICAgOnJhaXNlcyB+d2Vic29ja2V0cy5leGNlcHRpb25zLklu
dmFsaWRIYW5kc2hha2U6IHRvIGFib3J0IHRoZQorICAgICAgICAgICAgaGFuZHNoYWtlIHdpdGgg
YW4gSFRUUCA0MDAgZXJyb3IgY29kZQorCisgICAgICAgICIiIgorICAgICAgICBzdWJwcm90b2Nv
bDogT3B0aW9uYWxbU3VicHJvdG9jb2xdID0gTm9uZQorCisgICAgICAgIGhlYWRlcl92YWx1ZXMg
PSBoZWFkZXJzLmdldF9hbGwoIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2wiKQorCisgICAgICAgIGlm
IGhlYWRlcl92YWx1ZXMgYW5kIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM6CisKKyAgICAgICAgICAg
IHBhcnNlZF9oZWFkZXJfdmFsdWVzOiBMaXN0W1N1YnByb3RvY29sXSA9IHN1bSgKKyAgICAgICAg
ICAgICAgICBbcGFyc2Vfc3VicHJvdG9jb2woaGVhZGVyX3ZhbHVlKSBmb3IgaGVhZGVyX3ZhbHVl
IGluIGhlYWRlcl92YWx1ZXNdLCBbXQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzdWJw
cm90b2NvbCA9IHNlbGYuc2VsZWN0X3N1YnByb3RvY29sKAorICAgICAgICAgICAgICAgIHBhcnNl
ZF9oZWFkZXJfdmFsdWVzLCBhdmFpbGFibGVfc3VicHJvdG9jb2xzCisgICAgICAgICAgICApCisK
KyAgICAgICAgcmV0dXJuIHN1YnByb3RvY29sCisKKyAgICBkZWYgc2VsZWN0X3N1YnByb3RvY29s
KAorICAgICAgICBzZWxmLAorICAgICAgICBjbGllbnRfc3VicHJvdG9jb2xzOiBTZXF1ZW5jZVtT
dWJwcm90b2NvbF0sCisgICAgICAgIHNlcnZlcl9zdWJwcm90b2NvbHM6IFNlcXVlbmNlW1N1YnBy
b3RvY29sXSwKKyAgICApIC0+IE9wdGlvbmFsW1N1YnByb3RvY29sXToKKyAgICAgICAgIiIiCisg
ICAgICAgIFBpY2sgYSBzdWJwcm90b2NvbCBhbW9uZyB0aG9zZSBvZmZlcmVkIGJ5IHRoZSBjbGll
bnQuCisKKyAgICAgICAgSWYgc2V2ZXJhbCBzdWJwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCBieSB0
aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLAorICAgICAgICB0aGUgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbiBzZWxlY3RzIHRoZSBwcmVmZXJyZWQgc3VicHJvdG9jb2xzIGJ5CisgICAgICAgIGdpdmlu
ZyBlcXVhbCB2YWx1ZSB0byB0aGUgcHJpb3JpdGllcyBvZiB0aGUgY2xpZW50IGFuZCB0aGUgc2Vy
dmVyLgorCisgICAgICAgIElmIG5vIHN1YnByb3RvY29sIGlzIHN1cHBvcnRlZCBieSB0aGUgY2xp
ZW50IGFuZCB0aGUgc2VydmVyLCBpdAorICAgICAgICBwcm9jZWVkcyB3aXRob3V0IGEgc3VicHJv
dG9jb2wuCisKKyAgICAgICAgVGhpcyBpcyB1bmxpa2VseSB0byBiZSB0aGUgbW9zdCB1c2VmdWwg
aW1wbGVtZW50YXRpb24gaW4gcHJhY3RpY2UsIGFzCisgICAgICAgIG1hbnkgc2VydmVycyBwcm92
aWRpbmcgYSBzdWJwcm90b2NvbCB3aWxsIHJlcXVpcmUgdGhhdCB0aGUgY2xpZW50IHVzZXMKKyAg
ICAgICAgdGhhdCBzdWJwcm90b2NvbC4gU3VjaCBydWxlcyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4g
YSBzdWJjbGFzcy4KKworICAgICAgICBJbnN0ZWFkIG9mIHN1YmNsYXNzaW5nLCBpdCBpcyBwb3Nz
aWJsZSB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBieQorICAgICAgICBwYXNzaW5nIGEgYGBzZWxl
Y3Rfc3VicHJvdG9jb2xgYCBhcmd1bWVudCB0byB0aGUgOmZ1bmM6YHNlcnZlYAorICAgICAgICBm
dW5jdGlvbiBvciB0aGUgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgY29uc3RydWN0
b3IKKworICAgICAgICA6cGFyYW0gY2xpZW50X3N1YnByb3RvY29sczogbGlzdCBvZiBzdWJwcm90
b2NvbHMgb2ZmZXJlZCBieSB0aGUgY2xpZW50CisgICAgICAgIDpwYXJhbSBzZXJ2ZXJfc3VicHJv
dG9jb2xzOiBsaXN0IG9mIHN1YnByb3RvY29scyBhdmFpbGFibGUgb24gdGhlIHNlcnZlcgorCisg
ICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9zZWxlY3Rfc3VicHJvdG9jb2wgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X3N1YnByb3RvY29sKGNsaWVudF9z
dWJwcm90b2NvbHMsIHNlcnZlcl9zdWJwcm90b2NvbHMpCisKKyAgICAgICAgc3VicHJvdG9jb2xz
ID0gc2V0KGNsaWVudF9zdWJwcm90b2NvbHMpICYgc2V0KHNlcnZlcl9zdWJwcm90b2NvbHMpCisg
ICAgICAgIGlmIG5vdCBzdWJwcm90b2NvbHM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICBwcmlvcml0eSA9IGxhbWJkYSBwOiAoCisgICAgICAgICAgICBjbGllbnRfc3VicHJvdG9j
b2xzLmluZGV4KHApICsgc2VydmVyX3N1YnByb3RvY29scy5pbmRleChwKQorICAgICAgICApCisg
ICAgICAgIHJldHVybiBzb3J0ZWQoc3VicHJvdG9jb2xzLCBrZXk9cHJpb3JpdHkpWzBdCisKKyAg
ICBhc3luYyBkZWYgaGFuZHNoYWtlKAorICAgICAgICBzZWxmLAorICAgICAgICBvcmlnaW5zOiBP
cHRpb25hbFtTZXF1ZW5jZVtPcHRpb25hbFtPcmlnaW5dXV0gPSBOb25lLAorICAgICAgICBhdmFp
bGFibGVfZXh0ZW5zaW9uczogT3B0aW9uYWxbU2VxdWVuY2VbU2VydmVyRXh0ZW5zaW9uRmFjdG9y
eV1dID0gTm9uZSwKKyAgICAgICAgYXZhaWxhYmxlX3N1YnByb3RvY29sczogT3B0aW9uYWxbU2Vx
dWVuY2VbU3VicHJvdG9jb2xdXSA9IE5vbmUsCisgICAgICAgIGV4dHJhX2hlYWRlcnM6IE9wdGlv
bmFsW0hlYWRlcnNMaWtlT3JDYWxsYWJsZV0gPSBOb25lLAorICAgICkgLT4gc3RyOgorICAgICAg
ICAiIiIKKyAgICAgICAgUGVyZm9ybSB0aGUgc2VydmVyIHNpZGUgb2YgdGhlIG9wZW5pbmcgaGFu
ZHNoYWtlLgorCisgICAgICAgIFJldHVybiB0aGUgcGF0aCBvZiB0aGUgVVJJIG9mIHRoZSByZXF1
ZXN0LgorCisgICAgICAgIDpwYXJhbSBvcmlnaW5zOiBsaXN0IG9mIGFjY2VwdGFibGUgdmFsdWVz
IG9mIHRoZSBPcmlnaW4gSFRUUCBoZWFkZXI7CisgICAgICAgICAgICBpbmNsdWRlIGBgTm9uZWBg
IGlmIHRoZSBsYWNrIG9mIGFuIG9yaWdpbiBpcyBhY2NlcHRhYmxlCisgICAgICAgIDpwYXJhbSBh
dmFpbGFibGVfZXh0ZW5zaW9uczogbGlzdCBvZiBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpbiB0aGUg
b3JkZXIKKyAgICAgICAgICAgIGluIHdoaWNoIHRoZXkgc2hvdWxkIGJlIHVzZWQKKyAgICAgICAg
OnBhcmFtIGF2YWlsYWJsZV9zdWJwcm90b2NvbHM6IGxpc3Qgb2Ygc3VwcG9ydGVkIHN1YnByb3Rv
Y29scyBpbiBvcmRlcgorICAgICAgICAgICAgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlCisgICAg
ICAgIDpwYXJhbSBleHRyYV9oZWFkZXJzOiBzZXRzIGFkZGl0aW9uYWwgSFRUUCByZXNwb25zZSBo
ZWFkZXJzIHdoZW4gdGhlCisgICAgICAgICAgICBoYW5kc2hha2Ugc3VjY2VlZHM7IGl0IGNhbiBi
ZSBhIDpjbGFzczpgfndlYnNvY2tldHMuaHR0cC5IZWFkZXJzYAorICAgICAgICAgICAgaW5zdGFu
Y2UsIGEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLCBhbiBpdGVyYWJsZSBvZgor
ICAgICAgICAgICAgYGAobmFtZSwgdmFsdWUpYGAgcGFpcnMsIG9yIGEgY2FsbGFibGUgdGFraW5n
IHRoZSByZXF1ZXN0IHBhdGggYW5kCisgICAgICAgICAgICBoZWFkZXJzIGluIGFyZ3VtZW50cyBh
bmQgcmV0dXJuaW5nIG9uZSBvZiB0aGUgYWJvdmUuCisgICAgICAgIDpyYWlzZXMgfndlYnNvY2tl
dHMuZXhjZXB0aW9ucy5JbnZhbGlkSGFuZHNoYWtlOiBpZiB0aGUgaGFuZHNoYWtlCisgICAgICAg
ICAgICBmYWlscworCisgICAgICAgICIiIgorICAgICAgICBwYXRoLCByZXF1ZXN0X2hlYWRlcnMg
PSBhd2FpdCBzZWxmLnJlYWRfaHR0cF9yZXF1ZXN0KCkKKworICAgICAgICAjIEhvb2sgZm9yIGN1
c3RvbWl6aW5nIHJlcXVlc3QgaGFuZGxpbmcsIGZvciBleGFtcGxlIGNoZWNraW5nCisgICAgICAg
ICMgYXV0aGVudGljYXRpb24gb3IgdHJlYXRpbmcgc29tZSBwYXRocyBhcyBwbGFpbiBIVFRQIGVu
ZHBvaW50cy4KKyAgICAgICAgZWFybHlfcmVzcG9uc2VfYXdhaXRhYmxlID0gc2VsZi5wcm9jZXNz
X3JlcXVlc3QocGF0aCwgcmVxdWVzdF9oZWFkZXJzKQorICAgICAgICBpZiBpc2luc3RhbmNlKGVh
cmx5X3Jlc3BvbnNlX2F3YWl0YWJsZSwgQXdhaXRhYmxlKToKKyAgICAgICAgICAgIGVhcmx5X3Jl
c3BvbnNlID0gYXdhaXQgZWFybHlfcmVzcG9uc2VfYXdhaXRhYmxlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIDcuMC4KKyAgICAg
ICAgICAgIHdhcm5pbmdzLndhcm4oImRlY2xhcmUgcHJvY2Vzc19yZXF1ZXN0IGFzIGEgY29yb3V0
aW5lIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZWFybHlfcmVzcG9uc2UgPSBl
YXJseV9yZXNwb25zZV9hd2FpdGFibGUgICMgdHlwZTogaWdub3JlCisKKyAgICAgICAgIyBDaGFu
Z2UgdGhlIHJlc3BvbnNlIHRvIGEgNTAzIGVycm9yIGlmIHRoZSBzZXJ2ZXIgaXMgc2h1dHRpbmcg
ZG93bi4KKyAgICAgICAgaWYgbm90IHNlbGYud3Nfc2VydmVyLmlzX3NlcnZpbmcoKToKKyAgICAg
ICAgICAgIGVhcmx5X3Jlc3BvbnNlID0gKAorICAgICAgICAgICAgICAgIGh0dHAuSFRUUFN0YXR1
cy5TRVJWSUNFX1VOQVZBSUxBQkxFLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAg
ICAgIGIiU2VydmVyIGlzIHNodXR0aW5nIGRvd24uXG4iLAorICAgICAgICAgICAgKQorCisgICAg
ICAgIGlmIGVhcmx5X3Jlc3BvbnNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgQWJv
cnRIYW5kc2hha2UoKmVhcmx5X3Jlc3BvbnNlKQorCisgICAgICAgIGtleSA9IGNoZWNrX3JlcXVl
c3QocmVxdWVzdF9oZWFkZXJzKQorCisgICAgICAgIHNlbGYub3JpZ2luID0gc2VsZi5wcm9jZXNz
X29yaWdpbihyZXF1ZXN0X2hlYWRlcnMsIG9yaWdpbnMpCisKKyAgICAgICAgZXh0ZW5zaW9uc19o
ZWFkZXIsIHNlbGYuZXh0ZW5zaW9ucyA9IHNlbGYucHJvY2Vzc19leHRlbnNpb25zKAorICAgICAg
ICAgICAgcmVxdWVzdF9oZWFkZXJzLCBhdmFpbGFibGVfZXh0ZW5zaW9ucworICAgICAgICApCisK
KyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5zdWJwcm90b2NvbCA9IHNlbGYucHJvY2Vz
c19zdWJwcm90b2NvbCgKKyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVycywgYXZhaWxhYmxlX3N1
YnByb3RvY29scworICAgICAgICApCisKKyAgICAgICAgcmVzcG9uc2VfaGVhZGVycyA9IEhlYWRl
cnMoKQorCisgICAgICAgIGJ1aWxkX3Jlc3BvbnNlKHJlc3BvbnNlX2hlYWRlcnMsIGtleSkKKwor
ICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJl
c3BvbnNlX2hlYWRlcnNbIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyJdID0gZXh0ZW5zaW9uc19o
ZWFkZXIKKworICAgICAgICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICByZXNwb25zZV9oZWFkZXJzWyJTZWMtV2ViU29ja2V0LVByb3RvY29sIl0gPSBwcm90b2Nv
bF9oZWFkZXIKKworICAgICAgICBpZiBjYWxsYWJsZShleHRyYV9oZWFkZXJzKToKKyAgICAgICAg
ICAgIGV4dHJhX2hlYWRlcnMgPSBleHRyYV9oZWFkZXJzKHBhdGgsIHNlbGYucmVxdWVzdF9oZWFk
ZXJzKQorICAgICAgICBpZiBleHRyYV9oZWFkZXJzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShleHRyYV9oZWFkZXJzLCBIZWFkZXJzKToKKyAgICAgICAgICAgICAgICBl
eHRyYV9oZWFkZXJzID0gZXh0cmFfaGVhZGVycy5yYXdfaXRlbXMoKQorICAgICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKGV4dHJhX2hlYWRlcnMsIGNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nKToKKyAg
ICAgICAgICAgICAgICBleHRyYV9oZWFkZXJzID0gZXh0cmFfaGVhZGVycy5pdGVtcygpCisgICAg
ICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZXh0cmFfaGVhZGVyczoKKyAgICAgICAgICAgICAg
ICByZXNwb25zZV9oZWFkZXJzW25hbWVdID0gdmFsdWUKKworICAgICAgICByZXNwb25zZV9oZWFk
ZXJzLnNldGRlZmF1bHQoIkRhdGUiLCBlbWFpbC51dGlscy5mb3JtYXRkYXRlKHVzZWdtdD1UcnVl
KSkKKyAgICAgICAgcmVzcG9uc2VfaGVhZGVycy5zZXRkZWZhdWx0KCJTZXJ2ZXIiLCBVU0VSX0FH
RU5UKQorCisgICAgICAgIHNlbGYud3JpdGVfaHR0cF9yZXNwb25zZShodHRwLkhUVFBTdGF0dXMu
U1dJVENISU5HX1BST1RPQ09MUywgcmVzcG9uc2VfaGVhZGVycykKKworICAgICAgICBzZWxmLmNv
bm5lY3Rpb25fb3BlbigpCisKKyAgICAgICAgcmV0dXJuIHBhdGgKKworCitjbGFzcyBXZWJTb2Nr
ZXRTZXJ2ZXI6CisgICAgIiIiCisgICAgV2ViU29ja2V0IHNlcnZlciByZXR1cm5lZCBieSA6ZnVu
YzpgfndlYnNvY2tldHMuc2VydmVyLnNlcnZlYC4KKworICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMg
dGhlIHNhbWUgaW50ZXJmYWNlIGFzCisgICAgOmNsYXNzOmB+YXN5bmNpby5BYnN0cmFjdFNlcnZl
cmAsIG5hbWVseSB0aGUKKyAgICA6bWV0aDpgfmFzeW5jaW8uQWJzdHJhY3RTZXJ2ZXIuY2xvc2Vg
IGFuZAorICAgIDptZXRoOmB+YXN5bmNpby5BYnN0cmFjdFNlcnZlci53YWl0X2Nsb3NlZGAgbWV0
aG9kcy4KKworICAgIEl0IGtlZXBzIHRyYWNrIG9mIFdlYlNvY2tldCBjb25uZWN0aW9ucyBpbiBv
cmRlciB0byBjbG9zZSB0aGVtIHByb3Blcmx5CisgICAgd2hlbiBzaHV0dGluZyBkb3duLgorCisg
ICAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIDpjbGFz
czpgfmFzeW5jaW8uU2VydmVyYAorICAgIG9iamVjdCByZXR1cm5lZCBieSA6bWV0aDpgfmFzeW5j
aW8ubG9vcC5jcmVhdGVfc2VydmVyYCByYXRoZXIgdGhhbiBpbmhlcml0CisgICAgZnJvbSA6Y2xh
c3M6YH5hc3luY2lvLlNlcnZlcmAgaW4gcGFydCBiZWNhdXNlCisgICAgOm1ldGg6YH5hc3luY2lv
Lmxvb3AuY3JlYXRlX3NlcnZlcmAgZG9lc24ndCBzdXBwb3J0IHBhc3NpbmcgYSBjdXN0b20KKyAg
ICA6Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAgY2xhc3MuCisKKyAgICAiIiIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb29wOiBhc3luY2lvLkFic3RyYWN0RXZlbnRMb29wKSAtPiBOb25lOgor
ICAgICAgICAjIFN0b3JlIGEgcmVmZXJlbmNlIHRvIGxvb3AgdG8gYXZvaWQgcmVseWluZyBvbiBz
ZWxmLnNlcnZlci5fbG9vcC4KKyAgICAgICAgc2VsZi5sb29wID0gbG9vcAorCisgICAgICAgICMg
S2VlcCB0cmFjayBvZiBhY3RpdmUgY29ubmVjdGlvbnMuCisgICAgICAgIHNlbGYud2Vic29ja2V0
czogU2V0W1dlYlNvY2tldFNlcnZlclByb3RvY29sXSA9IHNldCgpCisKKyAgICAgICAgIyBUYXNr
IHJlc3BvbnNpYmxlIGZvciBjbG9zaW5nIHRoZSBzZXJ2ZXIgYW5kIHRlcm1pbmF0aW5nIGNvbm5l
Y3Rpb25zLgorICAgICAgICBzZWxmLmNsb3NlX3Rhc2s6IE9wdGlvbmFsW2FzeW5jaW8uVGFza1tO
b25lXV0gPSBOb25lCisKKyAgICAgICAgIyBDb21wbGV0ZWQgd2hlbiB0aGUgc2VydmVyIGlzIGNs
b3NlZCBhbmQgY29ubmVjdGlvbnMgYXJlIHRlcm1pbmF0ZWQuCisgICAgICAgIHNlbGYuY2xvc2Vk
X3dhaXRlcjogYXN5bmNpby5GdXR1cmVbTm9uZV0gPSBsb29wLmNyZWF0ZV9mdXR1cmUoKQorCisg
ICAgZGVmIHdyYXAoc2VsZiwgc2VydmVyOiBhc3luY2lvLkFic3RyYWN0U2VydmVyKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgQXR0YWNoIHRvIGEgZ2l2ZW4gOmNsYXNzOmB+YXN5bmNp
by5TZXJ2ZXJgLgorCisgICAgICAgIFNpbmNlIDptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV9z
ZXJ2ZXJgIGRvZXNuJ3Qgc3VwcG9ydCBpbmplY3RpbmcgYQorICAgICAgICBjdXN0b20gYGBTZXJ2
ZXJgYCBjbGFzcywgdGhlIGVhc2llc3Qgc29sdXRpb24gdGhhdCBkb2Vzbid0IHJlbHkgb24KKyAg
ICAgICAgcHJpdmF0ZSA6bW9kOmBhc3luY2lvYCBBUElzIGlzIHRvOgorCisgICAgICAgIC0gaW5z
dGFudGlhdGUgYSA6Y2xhc3M6YFdlYlNvY2tldFNlcnZlcmAKKyAgICAgICAgLSBnaXZlIHRoZSBw
cm90b2NvbCBmYWN0b3J5IGEgcmVmZXJlbmNlIHRvIHRoYXQgaW5zdGFuY2UKKyAgICAgICAgLSBj
YWxsIDptZXRoOmB+YXN5bmNpby5sb29wLmNyZWF0ZV9zZXJ2ZXJgIHdpdGggdGhlIGZhY3RvcnkK
KyAgICAgICAgLSBhdHRhY2ggdGhlIHJlc3VsdGluZyA6Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAg
d2l0aCB0aGlzIG1ldGhvZAorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnNlcnZlciA9IHNl
cnZlcgorCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIHByb3RvY29sOiBXZWJTb2NrZXRTZXJ2ZXJQ
cm90b2NvbCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFJlZ2lzdGVyIGEgY29ubmVj
dGlvbiB3aXRoIHRoaXMgc2VydmVyLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLndlYnNv
Y2tldHMuYWRkKHByb3RvY29sKQorCisgICAgZGVmIHVucmVnaXN0ZXIoc2VsZiwgcHJvdG9jb2w6
IFdlYlNvY2tldFNlcnZlclByb3RvY29sKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAg
VW5yZWdpc3RlciBhIGNvbm5lY3Rpb24gd2l0aCB0aGlzIHNlcnZlci4KKworICAgICAgICAiIiIK
KyAgICAgICAgc2VsZi53ZWJzb2NrZXRzLnJlbW92ZShwcm90b2NvbCkKKworICAgIGRlZiBpc19z
ZXJ2aW5nKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBUZWxsIHdoZXRoZXIg
dGhlIHNlcnZlciBpcyBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zIG9yIHNodXR0aW5nIGRvd24u
CisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUHl0aG9uIOKJpSAz
LjcKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19zZXJ2aW5nKCkKKyAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgICAgICAj
IFB5dGhvbiA8IDMuNworICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLnNvY2tldHMgaXMg
bm90IE5vbmUKKworICAgIGRlZiBjbG9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ2xvc2UgdGhlIHNlcnZlci4KKworICAgICAgICBUaGlzIG1ldGhvZDoKKworICAgICAg
ICAqIGNsb3NlcyB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmA7CisgICAg
ICAgICogcmVqZWN0cyBuZXcgV2ViU29ja2V0IGNvbm5lY3Rpb25zIHdpdGggYW4gSFRUUCA1MDMg
KHNlcnZpY2UKKyAgICAgICAgICB1bmF2YWlsYWJsZSkgZXJyb3I7IHRoaXMgaGFwcGVucyB3aGVu
IHRoZSBzZXJ2ZXIgYWNjZXB0ZWQgdGhlIFRDUAorICAgICAgICAgIGNvbm5lY3Rpb24gYnV0IGRp
ZG4ndCBjb21wbGV0ZSB0aGUgV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByaW9yCisgICAg
ICAgICAgdG8gY2xvc2luZzsKKyAgICAgICAgKiBjbG9zZXMgb3BlbiBXZWJTb2NrZXQgY29ubmVj
dGlvbnMgd2l0aCBjbG9zZSBjb2RlIDEwMDEgKGdvaW5nIGF3YXkpLgorCisgICAgICAgIDptZXRo
OmBjbG9zZWAgaXMgaWRlbXBvdGVudC4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5j
bG9zZV90YXNrIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmNsb3NlX3Rhc2sgPSBzZWxmLmxv
b3AuY3JlYXRlX3Rhc2soc2VsZi5fY2xvc2UoKSkKKworICAgIGFzeW5jIGRlZiBfY2xvc2Uoc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIDptZXRo
OmBjbG9zZWAuCisKKyAgICAgICAgVGhpcyBjYWxscyA6bWV0aDpgfmFzeW5jaW8uU2VydmVyLmNs
b3NlYCBvbiB0aGUgdW5kZXJseWluZworICAgICAgICA6Y2xhc3M6YH5hc3luY2lvLlNlcnZlcmAg
b2JqZWN0IHRvIHN0b3AgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQKKyAgICAgICAgdGhl
biBjbG9zZXMgb3BlbiBjb25uZWN0aW9ucyB3aXRoIGNsb3NlIGNvZGUgMTAwMS4KKworICAgICAg
ICAiIiIKKyAgICAgICAgIyBTdG9wIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMuCisgICAgICAg
IHNlbGYuc2VydmVyLmNsb3NlKCkKKworICAgICAgICAjIFdhaXQgdW50aWwgc2VsZi5zZXJ2ZXIu
Y2xvc2UoKSBjb21wbGV0ZXMuCisgICAgICAgIGF3YWl0IHNlbGYuc2VydmVyLndhaXRfY2xvc2Vk
KCkKKworICAgICAgICAjIFdhaXQgdW50aWwgYWxsIGFjY2VwdGVkIGNvbm5lY3Rpb25zIHJlYWNo
IGNvbm5lY3Rpb25fbWFkZSgpIGFuZCBjYWxsCisgICAgICAgICMgcmVnaXN0ZXIoKS4gU2VlIGh0
dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ4NTIgZm9yIGRldGFpbHMuCisgICAgICAgIGF3
YWl0IGFzeW5jaW8uc2xlZXAoCisgICAgICAgICAgICAwLCBsb29wPXNlbGYubG9vcCBpZiBzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUKKyAgICAgICAgKQorCisgICAgICAg
ICMgQ2xvc2UgT1BFTiBjb25uZWN0aW9ucyB3aXRoIHN0YXR1cyBjb2RlIDEwMDEuIFNpbmNlIHRo
ZSBzZXJ2ZXIgd2FzCisgICAgICAgICMgY2xvc2VkLCBoYW5kc2hha2UoKSBjbG9zZXMgT1BFTklO
RyBjb25lY3Rpb25zIHdpdGggYSBIVFRQIDUwMyBlcnJvci4KKyAgICAgICAgIyBXYWl0IHVudGls
IGFsbCBjb25uZWN0aW9ucyBhcmUgY2xvc2VkLgorCisgICAgICAgICMgYXN5bmNpby53YWl0IGRv
ZXNuJ3QgYWNjZXB0IGFuIGVtcHR5IGZpcnN0IGFyZ3VtZW50CisgICAgICAgIGlmIHNlbGYud2Vi
c29ja2V0czoKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8ud2FpdCgKKyAgICAgICAgICAgICAg
ICBbd2Vic29ja2V0LmNsb3NlKDEwMDEpIGZvciB3ZWJzb2NrZXQgaW4gc2VsZi53ZWJzb2NrZXRz
XSwKKyAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCBpZiBzeXMudmVyc2lvbl9pbmZvWzoy
XSA8ICgzLCA4KSBlbHNlIE5vbmUsCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBXYWl0IHVu
dGlsIGFsbCBjb25uZWN0aW9uIGhhbmRsZXJzIGFyZSBjb21wbGV0ZS4KKworICAgICAgICAjIGFz
eW5jaW8ud2FpdCBkb2Vzbid0IGFjY2VwdCBhbiBlbXB0eSBmaXJzdCBhcmd1bWVudC4KKyAgICAg
ICAgaWYgc2VsZi53ZWJzb2NrZXRzOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0KAor
ICAgICAgICAgICAgICAgIFt3ZWJzb2NrZXQuaGFuZGxlcl90YXNrIGZvciB3ZWJzb2NrZXQgaW4g
c2VsZi53ZWJzb2NrZXRzXSwKKyAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCBpZiBzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA4KSBlbHNlIE5vbmUsCisgICAgICAgICAgICApCisKKyAg
ICAgICAgIyBUZWxsIHdhaXRfY2xvc2VkKCkgdG8gcmV0dXJuLgorICAgICAgICBzZWxmLmNsb3Nl
ZF93YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQorCisgICAgYXN5bmMgZGVmIHdhaXRfY2xvc2VkKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBXYWl0IHVudGlsIHRoZSBzZXJ2ZXIg
aXMgY2xvc2VkLgorCisgICAgICAgIFdoZW4gOm1ldGg6YHdhaXRfY2xvc2VkYCByZXR1cm5zLCBh
bGwgVENQIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQgYW5kCisgICAgICAgIGFsbCBjb25uZWN0aW9u
IGhhbmRsZXJzIGhhdmUgcmV0dXJuZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGF3YWl0IGFz
eW5jaW8uc2hpZWxkKHNlbGYuY2xvc2VkX3dhaXRlcikKKworICAgIEBwcm9wZXJ0eQorICAgIGRl
ZiBzb2NrZXRzKHNlbGYpIC0+IE9wdGlvbmFsW0xpc3Rbc29ja2V0LnNvY2tldF1dOgorICAgICAg
ICAiIiIKKyAgICAgICAgTGlzdCBvZiA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBvYmplY3RzIHRo
ZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIHRvLgorCisgICAgICAgIGBgTm9uZWBgIGlmIHRoZSBzZXJ2
ZXIgaXMgY2xvc2VkLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIu
c29ja2V0cworCisKK2NsYXNzIFNlcnZlOgorICAgICIiIgorCisgICAgQ3JlYXRlLCBzdGFydCwg
YW5kIHJldHVybiBhIFdlYlNvY2tldCBzZXJ2ZXIgb24gYGBob3N0YGAgYW5kIGBgcG9ydGBgLgor
CisgICAgV2hlbmV2ZXIgYSBjbGllbnQgY29ubmVjdHMsIHRoZSBzZXJ2ZXIgYWNjZXB0cyB0aGUg
Y29ubmVjdGlvbiwgY3JlYXRlcyBhCisgICAgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2Nv
bGAsIHBlcmZvcm1zIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSwgYW5kCisgICAgZGVsZWdhdGVzIHRv
IHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgZGVmaW5lZCBieSBgYHdzX2hhbmRsZXJgYC4gT25jZSB0
aGUKKyAgICBoYW5kbGVyIGNvbXBsZXRlcywgZWl0aGVyIG5vcm1hbGx5IG9yIHdpdGggYW4gZXhj
ZXB0aW9uLCB0aGUgc2VydmVyCisgICAgcGVyZm9ybXMgdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGFu
ZCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICBBd2FpdGluZyA6ZnVuYzpgc2VydmVgIHlp
ZWxkcyBhIDpjbGFzczpgV2ViU29ja2V0U2VydmVyYC4gVGhpcyBpbnN0YW5jZQorICAgIHByb3Zp
ZGVzIDptZXRoOmB+d2Vic29ja2V0cy5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyLmNsb3NlYCBhbmQK
KyAgICA6bWV0aDpgfndlYnNvY2tldHMuc2VydmVyLldlYlNvY2tldFNlcnZlci53YWl0X2Nsb3Nl
ZGAgbWV0aG9kcyBmb3IKKyAgICB0ZXJtaW5hdGluZyB0aGUgc2VydmVyIGFuZCBjbGVhbmluZyB1
cCBpdHMgcmVzb3VyY2VzLgorCisgICAgV2hlbiBhIHNlcnZlciBpcyBjbG9zZWQgd2l0aCA6bWV0
aDpgfldlYlNvY2tldFNlcnZlci5jbG9zZWAsIGl0IGNsb3NlcyBhbGwKKyAgICBjb25uZWN0aW9u
cyB3aXRoIGNsb3NlIGNvZGUgMTAwMSAoZ29pbmcgYXdheSkuIENvbm5lY3Rpb25zIGhhbmRsZXJz
LCB3aGljaAorICAgIGFyZSBydW5uaW5nIHRoZSBgYHdzX2hhbmRsZXJgYCBjb3JvdXRpbmUsIHdp
bGwgcmVjZWl2ZSBhCisgICAgOmV4YzpgfndlYnNvY2tldHMuZXhjZXB0aW9ucy5Db25uZWN0aW9u
Q2xvc2VkT0tgIGV4Y2VwdGlvbiBvbiB0aGVpcgorICAgIGN1cnJlbnQgb3IgbmV4dCBpbnRlcmFj
dGlvbiB3aXRoIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKworICAgIDpmdW5jOmBzZXJ2ZWAg
Y2FuIGFsc28gYmUgdXNlZCBhcyBhbiBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyLiBJbgor
ICAgIHRoaXMgY2FzZSwgdGhlIHNlcnZlciBpcyBzaHV0IGRvd24gd2hlbiBleGl0aW5nIHRoZSBj
b250ZXh0LgorCisgICAgOmZ1bmM6YHNlcnZlYCBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBldmVu
dCBsb29wJ3MKKyAgICA6bWV0aDpgfmFzeW5jaW8ubG9vcC5jcmVhdGVfc2VydmVyYCBtZXRob2Qu
IEl0IGNyZWF0ZXMgYW5kIHN0YXJ0cyBhCisgICAgOmNsYXNzOmB+YXN5bmNpby5TZXJ2ZXJgIHdp
dGggOm1ldGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX3NlcnZlcmAuIFRoZW4gaXQKKyAgICB3cmFw
cyB0aGUgOmNsYXNzOmB+YXN5bmNpby5TZXJ2ZXJgIGluIGEgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2
ZXJgICBhbmQKKyAgICByZXR1cm5zIHRoZSA6Y2xhc3M6YFdlYlNvY2tldFNlcnZlcmAuCisKKyAg
ICBUaGUgYGB3c19oYW5kbGVyYGAgYXJndW1lbnQgaXMgdGhlIFdlYlNvY2tldCBoYW5kbGVyLiBJ
dCBtdXN0IGJlIGEKKyAgICBjb3JvdXRpbmUgYWNjZXB0aW5nIHR3byBhcmd1bWVudHM6IGEgOmNs
YXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgYW5kCisgICAgdGhlIHJlcXVlc3QgVVJJLgor
CisgICAgVGhlIGBgaG9zdGBgIGFuZCBgYHBvcnRgYCBhcmd1bWVudHMsIGFzIHdlbGwgYXMgdW5y
ZWNvZ25pemVkIGtleXdvcmQKKyAgICBhcmd1bWVudHMsIGFyZSBwYXNzZWQgYWxvbmcgdG8gOm1l
dGg6YH5hc3luY2lvLmxvb3AuY3JlYXRlX3NlcnZlcmAuCisKKyAgICBGb3IgZXhhbXBsZSwgeW91
IGNhbiBzZXQgdGhlIGBgc3NsYGAga2V5d29yZCBhcmd1bWVudCB0byBhCisgICAgOmNsYXNzOmB+
c3NsLlNTTENvbnRleHRgIHRvIGVuYWJsZSBUTFMuCisKKyAgICBUaGUgYGBjcmVhdGVfcHJvdG9j
b2xgYCBwYXJhbWV0ZXIgYWxsb3dzIGN1c3RvbWl6aW5nIHRoZQorICAgIDpjbGFzczpgfmFzeW5j
aW8uUHJvdG9jb2xgIHRoYXQgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQgc2hvdWxkIGJlIGEK
KyAgICBjYWxsYWJsZSBvciBjbGFzcyBhY2NlcHRpbmcgdGhlIHNhbWUgYXJndW1lbnRzIGFzCisg
ICAgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAgYW5kIHJldHVybmluZyBhbiBpbnN0
YW5jZSBvZgorICAgIDpjbGFzczpgV2ViU29ja2V0U2VydmVyUHJvdG9jb2xgIG9yIGEgc3ViY2xh
c3MuIEl0IGRlZmF1bHRzIHRvCisgICAgOmNsYXNzOmBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbGAu
CisKKyAgICBUaGUgYmVoYXZpb3Igb2YgYGBwaW5nX2ludGVydmFsYGAsIGBgcGluZ190aW1lb3V0
YGAsIGBgY2xvc2VfdGltZW91dGBgLAorICAgIGBgbWF4X3NpemVgYCwgYGBtYXhfcXVldWVgYCwg
YGByZWFkX2xpbWl0YGAsIGFuZCBgYHdyaXRlX2xpbWl0YGAgaXMKKyAgICBkZXNjcmliZWQgaW4g
OmNsYXNzOmB+d2Vic29ja2V0cy5wcm90b2NvbC5XZWJTb2NrZXRDb21tb25Qcm90b2NvbGAuCisK
KyAgICA6ZnVuYzpgc2VydmVgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFy
Z3VtZW50czoKKworICAgICogYGBjb21wcmVzc2lvbmBgIGlzIGEgc2hvcnRjdXQgdG8gY29uZmln
dXJlIGNvbXByZXNzaW9uIGV4dGVuc2lvbnM7CisgICAgICBieSBkZWZhdWx0IGl0IGVuYWJsZXMg
dGhlICJwZXJtZXNzYWdlLWRlZmxhdGUiIGV4dGVuc2lvbjsgc2V0IGl0IHRvCisgICAgICBgYE5v
bmVgYCB0byBkaXNhYmxlIGNvbXByZXNzaW9uCisgICAgKiBgYG9yaWdpbnNgYCBkZWZpbmVzIGFj
Y2VwdGFibGUgT3JpZ2luIEhUVFAgaGVhZGVyczsgaW5jbHVkZSBgYE5vbmVgYCBpZgorICAgICAg
dGhlIGxhY2sgb2YgYW4gb3JpZ2luIGlzIGFjY2VwdGFibGUKKyAgICAqIGBgZXh0ZW5zaW9uc2Bg
IGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBpbiBvcmRlciBvZgorICAgICAgZGVj
cmVhc2luZyBwcmVmZXJlbmNlCisgICAgKiBgYHN1YnByb3RvY29sc2BgIGlzIGEgbGlzdCBvZiBz
dXBwb3J0ZWQgc3VicHJvdG9jb2xzIGluIG9yZGVyIG9mCisgICAgICBkZWNyZWFzaW5nIHByZWZl
cmVuY2UKKyAgICAqIGBgZXh0cmFfaGVhZGVyc2BgIHNldHMgYWRkaXRpb25hbCBIVFRQIHJlc3Bv
bnNlIGhlYWRlcnMgIHdoZW4gdGhlCisgICAgICBoYW5kc2hha2Ugc3VjY2VlZHM7IGl0IGNhbiBi
ZSBhIDpjbGFzczpgfndlYnNvY2tldHMuaHR0cC5IZWFkZXJzYAorICAgICAgaW5zdGFuY2UsIGEg
OmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLCBhbiBpdGVyYWJsZSBvZiBgYChuYW1l
LAorICAgICAgdmFsdWUpYGAgcGFpcnMsIG9yIGEgY2FsbGFibGUgdGFraW5nIHRoZSByZXF1ZXN0
IHBhdGggYW5kIGhlYWRlcnMgaW4KKyAgICAgIGFyZ3VtZW50cyBhbmQgcmV0dXJuaW5nIG9uZSBv
ZiB0aGUgYWJvdmUKKyAgICAqIGBgcHJvY2Vzc19yZXF1ZXN0YGAgYWxsb3dzIGludGVyY2VwdGlu
ZyB0aGUgSFRUUCByZXF1ZXN0OyBpdCBtdXN0IGJlIGEKKyAgICAgIGNvcm91dGluZSB0YWtpbmcg
dGhlIHJlcXVlc3QgcGF0aCBhbmQgaGVhZGVycyBpbiBhcmd1bWVudDsgc2VlCisgICAgICA6bWV0
aDpgfldlYlNvY2tldFNlcnZlclByb3RvY29sLnByb2Nlc3NfcmVxdWVzdGAgZm9yIGRldGFpbHMK
KyAgICAqIGBgc2VsZWN0X3N1YnByb3RvY29sYGAgYWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBsb2dp
YyBmb3Igc2VsZWN0aW5nIGEKKyAgICAgIHN1YnByb3RvY29sOyBpdCBtdXN0IGJlIGEgY2FsbGFi
bGUgdGFraW5nIHRoZSBzdWJwcm90b2NvbHMgb2ZmZXJlZCBieQorICAgICAgdGhlIGNsaWVudCBh
bmQgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIgaW4gYXJndW1lbnQ7IHNlZQorICAgICAgOm1ldGg6
YH5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbC5zZWxlY3Rfc3VicHJvdG9jb2xgIGZvciBkZXRhaWxz
CisKKyAgICBTaW5jZSB0aGVyZSdzIG5vIHVzZWZ1bCB3YXkgdG8gcHJvcGFnYXRlIGV4Y2VwdGlv
bnMgdHJpZ2dlcmVkIGluIGhhbmRsZXJzLAorICAgIHRoZXkncmUgc2VudCB0byB0aGUgYGAnd2Vi
c29ja2V0cy5zZXJ2ZXInYGAgbG9nZ2VyIGluc3RlYWQuIERlYnVnZ2luZyBpcworICAgIG11Y2gg
ZWFzaWVyIGlmIHlvdSBjb25maWd1cmUgbG9nZ2luZyB0byBwcmludCB0aGVtOjoKKworICAgICAg
ICBpbXBvcnQgbG9nZ2luZworICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2Vi
c29ja2V0cy5zZXJ2ZXInKQorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5FUlJPUikK
KyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkpCisKKyAg
ICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgd3NfaGFu
ZGxlcjogQ2FsbGFibGVbW1dlYlNvY2tldFNlcnZlclByb3RvY29sLCBzdHJdLCBBd2FpdGFibGVb
QW55XV0sCisgICAgICAgIGhvc3Q6IE9wdGlvbmFsW1VuaW9uW3N0ciwgU2VxdWVuY2Vbc3RyXV1d
ID0gTm9uZSwKKyAgICAgICAgcG9ydDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgICos
CisgICAgICAgIHBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjcmVhdGVfcHJv
dG9jb2w6IE9wdGlvbmFsW1R5cGVbV2ViU29ja2V0U2VydmVyUHJvdG9jb2xdXSA9IE5vbmUsCisg
ICAgICAgIHBpbmdfaW50ZXJ2YWw6IGZsb2F0ID0gMjAsCisgICAgICAgIHBpbmdfdGltZW91dDog
ZmxvYXQgPSAyMCwKKyAgICAgICAgY2xvc2VfdGltZW91dDogT3B0aW9uYWxbZmxvYXRdID0gTm9u
ZSwKKyAgICAgICAgbWF4X3NpemU6IGludCA9IDIgKiogMjAsCisgICAgICAgIG1heF9xdWV1ZTog
aW50ID0gMiAqKiA1LAorICAgICAgICByZWFkX2xpbWl0OiBpbnQgPSAyICoqIDE2LAorICAgICAg
ICB3cml0ZV9saW1pdDogaW50ID0gMiAqKiAxNiwKKyAgICAgICAgbG9vcDogT3B0aW9uYWxbYXN5
bmNpby5BYnN0cmFjdEV2ZW50TG9vcF0gPSBOb25lLAorICAgICAgICBsZWdhY3lfcmVjdjogYm9v
bCA9IEZhbHNlLAorICAgICAgICBrbGFzczogT3B0aW9uYWxbVHlwZVtXZWJTb2NrZXRTZXJ2ZXJQ
cm90b2NvbF1dID0gTm9uZSwKKyAgICAgICAgdGltZW91dDogT3B0aW9uYWxbZmxvYXRdID0gTm9u
ZSwKKyAgICAgICAgY29tcHJlc3Npb246IE9wdGlvbmFsW3N0cl0gPSAiZGVmbGF0ZSIsCisgICAg
ICAgIG9yaWdpbnM6IE9wdGlvbmFsW1NlcXVlbmNlW09wdGlvbmFsW09yaWdpbl1dXSA9IE5vbmUs
CisgICAgICAgIGV4dGVuc2lvbnM6IE9wdGlvbmFsW1NlcXVlbmNlW1NlcnZlckV4dGVuc2lvbkZh
Y3RvcnldXSA9IE5vbmUsCisgICAgICAgIHN1YnByb3RvY29sczogT3B0aW9uYWxbU2VxdWVuY2Vb
U3VicHJvdG9jb2xdXSA9IE5vbmUsCisgICAgICAgIGV4dHJhX2hlYWRlcnM6IE9wdGlvbmFsW0hl
YWRlcnNMaWtlT3JDYWxsYWJsZV0gPSBOb25lLAorICAgICAgICBwcm9jZXNzX3JlcXVlc3Q6IE9w
dGlvbmFsWworICAgICAgICAgICAgQ2FsbGFibGVbW3N0ciwgSGVhZGVyc10sIEF3YWl0YWJsZVtP
cHRpb25hbFtIVFRQUmVzcG9uc2VdXV0KKyAgICAgICAgXSA9IE5vbmUsCisgICAgICAgIHNlbGVj
dF9zdWJwcm90b2NvbDogT3B0aW9uYWxbCisgICAgICAgICAgICBDYWxsYWJsZVtbU2VxdWVuY2Vb
U3VicHJvdG9jb2xdLCBTZXF1ZW5jZVtTdWJwcm90b2NvbF1dLCBTdWJwcm90b2NvbF0KKyAgICAg
ICAgXSA9IE5vbmUsCisgICAgICAgICoqa3dhcmdzOiBBbnksCisgICAgKSAtPiBOb25lOgorICAg
ICAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBjbG9zZV90aW1lb3V0IHVzZWQgdG8gYmUg
Y2FsbGVkIHRpbWVvdXQuCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAg
IHRpbWVvdXQgPSAxMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2FybmluZ3Mud2Fybigi
cmVuYW1lIHRpbWVvdXQgdG8gY2xvc2VfdGltZW91dCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAg
ICAgICAgIyBJZiBib3RoIGFyZSBzcGVjaWZpZWQsIHRpbWVvdXQgaXMgaWdub3JlZC4KKyAgICAg
ICAgaWYgY2xvc2VfdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgY2xvc2VfdGltZW91dCA9
IHRpbWVvdXQKKworICAgICAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBjcmVhdGVfcHJv
dG9jb2wgdXNlZCB0byBiZSBjYWxsZWQga2xhc3MuCisgICAgICAgIGlmIGtsYXNzIGlzIE5vbmU6
CisgICAgICAgICAgICBrbGFzcyA9IFdlYlNvY2tldFNlcnZlclByb3RvY29sCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJyZW5hbWUga2xhc3MgdG8gY3JlYXRlX3By
b3RvY29sIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAjIElmIGJvdGggYXJlIHNwZWNp
ZmllZCwga2xhc3MgaXMgaWdub3JlZC4KKyAgICAgICAgaWYgY3JlYXRlX3Byb3RvY29sIGlzIE5v
bmU6CisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2wgPSBrbGFzcworCisgICAgICAgIGlmIGxv
b3AgaXMgTm9uZToKKyAgICAgICAgICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkK
KworICAgICAgICB3c19zZXJ2ZXIgPSBXZWJTb2NrZXRTZXJ2ZXIobG9vcCkKKworICAgICAgICBz
ZWN1cmUgPSBrd2FyZ3MuZ2V0KCJzc2wiKSBpcyBub3QgTm9uZQorCisgICAgICAgIGlmIGNvbXBy
ZXNzaW9uID09ICJkZWZsYXRlIjoKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbnMgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICBleHRlbnNpb25zID0gW10KKyAgICAgICAgICAgIGlmIG5vdCBhbnko
CisgICAgICAgICAgICAgICAgZXh0X2ZhY3RvcnkubmFtZSA9PSBTZXJ2ZXJQZXJNZXNzYWdlRGVm
bGF0ZUZhY3RvcnkubmFtZQorICAgICAgICAgICAgICAgIGZvciBleHRfZmFjdG9yeSBpbiBleHRl
bnNpb25zCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBsaXN0
KGV4dGVuc2lvbnMpICsgW1NlcnZlclBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgpXQorICAgICAg
ICBlbGlmIGNvbXByZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcihmInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uOiB7Y29tcHJlc3Npb259IikKKworICAgICAg
ICBmYWN0b3J5ID0gZnVuY3Rvb2xzLnBhcnRpYWwoCisgICAgICAgICAgICBjcmVhdGVfcHJvdG9j
b2wsCisgICAgICAgICAgICB3c19oYW5kbGVyLAorICAgICAgICAgICAgd3Nfc2VydmVyLAorICAg
ICAgICAgICAgaG9zdD1ob3N0LAorICAgICAgICAgICAgcG9ydD1wb3J0LAorICAgICAgICAgICAg
c2VjdXJlPXNlY3VyZSwKKyAgICAgICAgICAgIHBpbmdfaW50ZXJ2YWw9cGluZ19pbnRlcnZhbCwK
KyAgICAgICAgICAgIHBpbmdfdGltZW91dD1waW5nX3RpbWVvdXQsCisgICAgICAgICAgICBjbG9z
ZV90aW1lb3V0PWNsb3NlX3RpbWVvdXQsCisgICAgICAgICAgICBtYXhfc2l6ZT1tYXhfc2l6ZSwK
KyAgICAgICAgICAgIG1heF9xdWV1ZT1tYXhfcXVldWUsCisgICAgICAgICAgICByZWFkX2xpbWl0
PXJlYWRfbGltaXQsCisgICAgICAgICAgICB3cml0ZV9saW1pdD13cml0ZV9saW1pdCwKKyAgICAg
ICAgICAgIGxvb3A9bG9vcCwKKyAgICAgICAgICAgIGxlZ2FjeV9yZWN2PWxlZ2FjeV9yZWN2LAor
ICAgICAgICAgICAgb3JpZ2lucz1vcmlnaW5zLAorICAgICAgICAgICAgZXh0ZW5zaW9ucz1leHRl
bnNpb25zLAorICAgICAgICAgICAgc3VicHJvdG9jb2xzPXN1YnByb3RvY29scywKKyAgICAgICAg
ICAgIGV4dHJhX2hlYWRlcnM9ZXh0cmFfaGVhZGVycywKKyAgICAgICAgICAgIHByb2Nlc3NfcmVx
dWVzdD1wcm9jZXNzX3JlcXVlc3QsCisgICAgICAgICAgICBzZWxlY3Rfc3VicHJvdG9jb2w9c2Vs
ZWN0X3N1YnByb3RvY29sLAorICAgICAgICApCisKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgor
ICAgICAgICAgICAgY3JlYXRlX3NlcnZlciA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAg
ICAgICAgIGxvb3AuY3JlYXRlX3NlcnZlciwgZmFjdG9yeSwgaG9zdCwgcG9ydCwgKiprd2FyZ3MK
KyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdW5peF9zZXJ2ZShw
YXRoKSBtdXN0IG5vdCBzcGVjaWZ5IGhvc3QgYW5kIHBvcnQgcGFyYW1ldGVycy4KKyAgICAgICAg
ICAgIGFzc2VydCBob3N0IGlzIE5vbmUgYW5kIHBvcnQgaXMgTm9uZQorICAgICAgICAgICAgY3Jl
YXRlX3NlcnZlciA9IGZ1bmN0b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIGxvb3AuY3Jl
YXRlX3VuaXhfc2VydmVyLCBmYWN0b3J5LCBwYXRoLCAqKmt3YXJncworICAgICAgICAgICAgKQor
CisgICAgICAgICMgVGhpcyBpcyBhIGNvcm91dGluZSBmdW5jdGlvbi4KKyAgICAgICAgc2VsZi5f
Y3JlYXRlX3NlcnZlciA9IGNyZWF0ZV9zZXJ2ZXIKKyAgICAgICAgc2VsZi53c19zZXJ2ZXIgPSB3
c19zZXJ2ZXIKKworICAgICMgYXN5bmMgd2l0aCBzZXJ2ZSguLi4pCisKKyAgICBhc3luYyBkZWYg
X19hZW50ZXJfXyhzZWxmKSAtPiBXZWJTb2NrZXRTZXJ2ZXI6CisgICAgICAgIHJldHVybiBhd2Fp
dCBzZWxmCisKKyAgICBhc3luYyBkZWYgX19hZXhpdF9fKAorICAgICAgICBzZWxmLAorICAgICAg
ICBleGNfdHlwZTogT3B0aW9uYWxbVHlwZVtCYXNlRXhjZXB0aW9uXV0sCisgICAgICAgIGV4Y192
YWx1ZTogT3B0aW9uYWxbQmFzZUV4Y2VwdGlvbl0sCisgICAgICAgIHRyYWNlYmFjazogT3B0aW9u
YWxbVHJhY2ViYWNrVHlwZV0sCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxmLndzX3NlcnZl
ci5jbG9zZSgpCisgICAgICAgIGF3YWl0IHNlbGYud3Nfc2VydmVyLndhaXRfY2xvc2VkKCkKKwor
ICAgICMgYXdhaXQgc2VydmUoLi4uKQorCisgICAgZGVmIF9fYXdhaXRfXyhzZWxmKSAtPiBHZW5l
cmF0b3JbQW55LCBOb25lLCBXZWJTb2NrZXRTZXJ2ZXJdOgorICAgICAgICAjIENyZWF0ZSBhIHN1
aXRhYmxlIGl0ZXJhdG9yIGJ5IGNhbGxpbmcgX19hd2FpdF9fIG9uIGEgY29yb3V0aW5lLgorICAg
ICAgICByZXR1cm4gc2VsZi5fX2F3YWl0X2ltcGxfXygpLl9fYXdhaXRfXygpCisKKyAgICBhc3lu
YyBkZWYgX19hd2FpdF9pbXBsX18oc2VsZikgLT4gV2ViU29ja2V0U2VydmVyOgorICAgICAgICBz
ZXJ2ZXIgPSBhd2FpdCBzZWxmLl9jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgc2VsZi53c19zZXJ2
ZXIud3JhcChzZXJ2ZXIpCisgICAgICAgIHJldHVybiBzZWxmLndzX3NlcnZlcgorCisgICAgIyB5
aWVsZCBmcm9tIHNlcnZlKC4uLikKKworICAgIF9faXRlcl9fID0gX19hd2FpdF9fCisKKworc2Vy
dmUgPSBTZXJ2ZQorCisKK2RlZiB1bml4X3NlcnZlKAorICAgIHdzX2hhbmRsZXI6IENhbGxhYmxl
W1tXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbCwgc3RyXSwgQXdhaXRhYmxlW0FueV1dLAorICAgIHBh
dGg6IHN0ciwKKyAgICAqKmt3YXJnczogQW55LAorKSAtPiBTZXJ2ZToKKyAgICAiIiIKKyAgICBT
aW1pbGFyIHRvIDpmdW5jOmBzZXJ2ZWAsIGJ1dCBmb3IgbGlzdGVuaW5nIG9uIFVuaXggc29ja2V0
cy4KKworICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIGV2ZW50IGxvb3AncworICAgIDptZXRo
OmB+YXN5bmNpby5sb29wLmNyZWF0ZV91bml4X3NlcnZlcmAgbWV0aG9kLgorCisgICAgSXQgaXMg
b25seSBhdmFpbGFibGUgb24gVW5peC4KKworICAgIEl0J3MgdXNlZnVsIGZvciBkZXBsb3lpbmcg
YSBzZXJ2ZXIgYmVoaW5kIGEgcmV2ZXJzZSBwcm94eSBzdWNoIGFzIG5naW54LgorCisgICAgOnBh
cmFtIHBhdGg6IGZpbGUgc3lzdGVtIHBhdGggdG8gdGhlIFVuaXggc29ja2V0CisKKyAgICAiIiIK
KyAgICByZXR1cm4gc2VydmUod3NfaGFuZGxlciwgcGF0aD1wYXRoLCAqKmt3YXJncykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9zcGVlZHVwcy5jIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3NwZWVkdXBzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kMWMyYjM3ZTYwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvc3BlZWR1cHMuYwpAQCAtMCwwICsxLDIwNiBAQAor
LyogQyBpbXBsZW1lbnRhdGlvbiBvZiBwZXJmb3JtYW5jZSBzZW5zaXRpdmUgZnVuY3Rpb25zLiAq
LworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNs
dWRlIDxzdGRpbnQuaD4gLyogdWludDMyX3QsIHVpbnQ2NF90ICovCisKKyNpZiBfX1NTRTJfXwor
I2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBQeV9zc2l6ZV90
IE1BU0tfTEVOID0gNDsKKworLyogU2ltaWxhciB0byBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZSwg
YnV0IGFjY2VwdHMgbW9yZSB0eXBlcyAqLworCitzdGF0aWMgaW50CitfUHlCeXRlc0xpa2VfQXNT
dHJpbmdBbmRTaXplKFB5T2JqZWN0ICpvYmosIGNoYXIgKipidWZmZXIsIFB5X3NzaXplX3QgKmxl
bmd0aCkKK3sKKyAgICAvLyBUaGlzIHN1cHBvcnRzIGJ5dGVzLCBieXRlYXJyYXlzLCBhbmQgQy1j
b250aWd1b3VzIG1lbW9yeXZpZXcgb2JqZWN0cywKKyAgICAvLyB3aGljaCBhcmUgdGhlIG1vc3Qg
dXNlZnVsIGRhdGEgc3RydWN0dXJlcyBmb3IgaGFuZGxpbmcgYnl0ZSBzdHJlYW1zLgorICAgIC8v
IHdlYnNvY2tldHMuZnJhbWluZy5wcmVwYXJlX2RhdGEoKSByZXR1cm5zIG9ubHkgdmFsdWVzIG9m
IHRoZXNlIHR5cGVzLgorICAgIC8vIEFueSBvYmplY3QgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIg
cHJvdG9jb2wgY291bGQgYmUgc3VwcG9ydGVkLCBob3dldmVyCisgICAgLy8gdGhhdCB3b3VsZCBy
ZXF1aXJlIGFsbG9jYXRpb24gb3IgY29weWluZyBtZW1vcnksIHdoaWNoIGlzIGV4cGVuc2l2ZS4K
KyAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKQorICAgIHsKKyAgICAgICAgKmJ1ZmZlciA9IFB5
Qnl0ZXNfQVNfU1RSSU5HKG9iaik7CisgICAgICAgICpsZW5ndGggPSBQeUJ5dGVzX0dFVF9TSVpF
KG9iaik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKG9iaikpCisgICAg
eworICAgICAgICAqYnVmZmVyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG9iaik7CisgICAgICAg
ICpsZW5ndGggPSBQeUJ5dGVBcnJheV9HRVRfU0laRShvYmopOworICAgIH0KKyAgICBlbHNlIGlm
IChQeU1lbW9yeVZpZXdfQ2hlY2sob2JqKSkKKyAgICB7CisgICAgICAgIFB5X2J1ZmZlciAqbXZf
YnVmOworICAgICAgICBtdl9idWYgPSBQeU1lbW9yeVZpZXdfR0VUX0JVRkZFUihvYmopOworICAg
ICAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKG12X2J1ZiwgJ0MnKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgKmJ1ZmZlciA9IG12X2J1Zi0+YnVmOworICAgICAgICAgICAgKmxlbmd0aCA9
IG12X2J1Zi0+bGVuOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBjb250aWd1b3VzIG1lbW9yeXZpZXciKTsKKyAgICAg
ICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAg
ICAgICAiZXhwZWN0ZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS4yMDBzIGZvdW5kIiwKKyAgICAg
ICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQyBpbXBsZW1lbnRhdGlvbiBvZiB3ZWJzb2NrZXRz
LnV0aWxzLmFwcGx5X21hc2sgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FwcGx5X21hc2soUHlP
YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKworICAgIC8v
IEluIG9yZGVyIHRvIHN1cHBvcnQgdmFyaW91cyBieXRlcy1saWtlIHR5cGVzLCBhY2NlcHQgYW55
IFB5dGhvbiBvYmplY3QuCisKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImRhdGEiLCAi
bWFzayIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1dF9vYmo7CisgICAgUHlPYmplY3QgKm1h
c2tfb2JqOworCisgICAgLy8gQSBwb2ludGVyIHRvIGEgY2hhciAqICsgbGVuZ3RoIHdpbGwgYmUg
ZXh0cmFjdGVkIGZyb20gdGhlIGRhdGEgYW5kIG1hc2sKKyAgICAvLyBhcmd1bWVudHMsIHBvc3Np
Ymx5IHZpYSBhIFB5X2J1ZmZlci4KKworICAgIGNoYXIgKmlucHV0OworICAgIFB5X3NzaXplX3Qg
aW5wdXRfbGVuOworICAgIGNoYXIgKm1hc2s7CisgICAgUHlfc3NpemVfdCBtYXNrX2xlbjsKKwor
ICAgIC8vIEluaXRpYWxpemUgYSBQeUJ5dGVzT2JqZWN0IHRoZW4gZ2V0IGEgcG9pbnRlciB0byB0
aGUgdW5kZXJseWluZyBjaGFyICoKKyAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBhbiBleHRyYSBt
ZW1vcnkgY29weSBpbiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplLgorCisgICAgUHlPYmplY3Qg
KnJlc3VsdDsKKyAgICBjaGFyICpvdXRwdXQ7CisKKyAgICAvLyBPdGhlciB2YXJpYWJsZXMuCisK
KyAgICBQeV9zc2l6ZV90IGkgPSAwOworCisgICAgLy8gUGFyc2UgaW5wdXRzLgorCisgICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCisgICAgICAgICAgICBhcmdzLCBrd2RzLCAi
T08iLCBrd2xpc3QsICZpbnB1dF9vYmosICZtYXNrX29iaikpCisgICAgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoX1B5Qnl0ZXNMaWtlX0FzU3RyaW5nQW5kU2l6ZShp
bnB1dF9vYmosICZpbnB1dCwgJmlucHV0X2xlbikgPT0gLTEpCisgICAgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoX1B5Qnl0ZXNMaWtlX0FzU3RyaW5nQW5kU2l6ZSht
YXNrX29iaiwgJm1hc2ssICZtYXNrX2xlbikgPT0gLTEpCisgICAgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisKKyAgICBpZiAobWFza19sZW4gIT0gTUFTS19MRU4pCisgICAgeworICAg
ICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hc2sgbXVzdCBjb250YWlu
IDQgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLy8gQ3JlYXRl
IG91dHB1dC4KKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwg
aW5wdXRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBTaW5jZSB3ZSBqdXN0ZSBjcmVhdGVkIHJlc3VsdCwg
d2UgZG9uJ3QgbmVlZCBlcnJvciBjaGVja3MuCisgICAgb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJ
TkcocmVzdWx0KTsKKworICAgIC8vIFBlcmZvcm0gdGhlIG1hc2tpbmcgb3BlcmF0aW9uLgorCisg
ICAgLy8gQXBwYXJlbnRseSBHQ0MgY2Fubm90IGZpZ3VyZSBvdXQgdGhlIGZvbGxvd2luZyBvcHRp
bWl6YXRpb25zIGJ5IGl0c2VsZi4KKworICAgIC8vIFdlIG5lZWQgYSBuZXcgc2NvcGUgZm9yIE1T
VkMgMjAxMCAobm9uIEM5OSBmcmllbmRseSkKKyAgICB7CisjaWYgX19TU0UyX18KKworICAgICAg
ICAvLyBXaXRoIFNTRTIgc3VwcG9ydCwgWE9SIGJ5IGJsb2NrcyBvZiAxNiBieXRlcyA9IDEyOCBi
aXRzLgorCisgICAgICAgIC8vIFNpbmNlIHdlIGNhbm5vdCBjb250cm9sIHRoZSAxNi1ieXRlcyBh
bGlnbm1lbnQgb2YgaW5wdXQgYW5kIG91dHB1dAorICAgICAgICAvLyBidWZmZXJzLCB3ZSByZWx5
IG9uIGxvYWR1L3N0b3JldSByYXRoZXIgdGhhbiBsb2FkL3N0b3JlLgorCisgICAgICAgIFB5X3Nz
aXplX3QgaW5wdXRfbGVuXzEyOCA9IGlucHV0X2xlbiAmIH4xNTsKKyAgICAgICAgX19tMTI4aSBt
YXNrXzEyOCA9IF9tbV9zZXQxX2VwaTMyKCoodWludDMyX3QgKiltYXNrKTsKKworICAgICAgICBm
b3IgKDsgaSA8IGlucHV0X2xlbl8xMjg7IGkgKz0gMTYpCisgICAgICAgIHsKKyAgICAgICAgICAg
IF9fbTEyOGkgaW5fMTI4ID0gX21tX2xvYWR1X3NpMTI4KChfX20xMjhpICopKGlucHV0ICsgaSkp
OworICAgICAgICAgICAgX19tMTI4aSBvdXRfMTI4ID0gX21tX3hvcl9zaTEyOChpbl8xMjgsIG1h
c2tfMTI4KTsKKyAgICAgICAgICAgIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkgKikob3V0cHV0
ICsgaSksIG91dF8xMjgpOworICAgICAgICB9CisKKyNlbHNlCisKKyAgICAgICAgLy8gV2l0aG91
dCBTU0UyIHN1cHBvcnQsIFhPUiBieSBibG9ja3Mgb2YgOCBieXRlcyA9IDY0IGJpdHMuCisKKyAg
ICAgICAgLy8gV2UgYXNzdW1lIHRoZSBtZW1vcnkgYWxsb2NhdG9yIGFsaWducyBldmVyeXRoaW5n
IG9uIDggYnl0ZXMgYm91bmRhcmllcy4KKworICAgICAgICBQeV9zc2l6ZV90IGlucHV0X2xlbl82
NCA9IGlucHV0X2xlbiAmIH43OworICAgICAgICB1aW50MzJfdCBtYXNrXzMyID0gKih1aW50MzJf
dCAqKW1hc2s7CisgICAgICAgIHVpbnQ2NF90IG1hc2tfNjQgPSAoKHVpbnQ2NF90KW1hc2tfMzIg
PDwgMzIpIHwgKHVpbnQ2NF90KW1hc2tfMzI7CisKKyAgICAgICAgZm9yICg7IGkgPCBpbnB1dF9s
ZW5fNjQ7IGkgKz0gOCkKKyAgICAgICAgeworICAgICAgICAgICAgKih1aW50NjRfdCAqKShvdXRw
dXQgKyBpKSA9ICoodWludDY0X3QgKikoaW5wdXQgKyBpKSBeIG1hc2tfNjQ7CisgICAgICAgIH0K
KworI2VuZGlmCisgICAgfQorCisgICAgLy8gWE9SIHRoZSByZW1haW5kZXIgb2YgdGhlIGlucHV0
IGJ5dGUgYnkgYnl0ZS4KKworICAgIGZvciAoOyBpIDwgaW5wdXRfbGVuOyBpKyspCisgICAgewor
ICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIG1hc2tbaSAmIChNQVNLX0xFTiAtIDEpXTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworCit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBz
cGVlZHVwc19tZXRob2RzW10gPSB7CisgICAgeworICAgICAgICAiYXBwbHlfbWFzayIsCisgICAg
ICAgIChQeUNGdW5jdGlvbilhcHBseV9tYXNrLAorICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRI
X0tFWVdPUkRTLAorICAgICAgICAiQXBwbHkgbWFza2luZyB0byB3ZWJzb2NrZXQgbWVzc2FnZS4i
LAorICAgIH0sCisgICAge05VTEwsIE5VTEwsIDAsIE5VTEx9LCAgICAgIC8qIFNlbnRpbmVsICov
Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHNwZWVkdXBzX21vZHVsZSA9IHsKKyAg
ICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIndlYnNvY2tldC5zcGVlZHVwcyIsICAgICAg
IC8qIG1fbmFtZSAqLworICAgICJDIGltcGxlbWVudGF0aW9uIG9mIHBlcmZvcm1hbmNlIHNlbnNp
dGl2ZSBmdW5jdGlvbnMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9k
b2MgKi8KKyAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAg
c3BlZWR1cHNfbWV0aG9kcywgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsCisg
ICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUlu
aXRfc3BlZWR1cHModm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZzcGVlZHVw
c19tb2R1bGUpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRz
L3NwZWVkdXBzLnB5aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9zcGVlZHVwcy5w
eWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MjE0MzhhMDY0ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvc3BlZWR1
cHMucHlpCkBAIC0wLDAgKzEgQEAKK2RlZiBhcHBseV9tYXNrKGRhdGE6IGJ5dGVzLCBtYXNrOiBi
eXRlcykgLT4gYnl0ZXM6IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJz
b2NrZXRzL3R5cGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy90eXBpbmcu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40YTYwZjkzZjY0YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvdHlwaW5n
LnB5CkBAIC0wLDAgKzEsNDkgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBOZXdUeXBlLCBP
cHRpb25hbCwgVHVwbGUsIFVuaW9uCisKKworX19hbGxfXyA9IFsiRGF0YSIsICJPcmlnaW4iLCAi
RXh0ZW5zaW9uSGVhZGVyIiwgIkV4dGVuc2lvblBhcmFtZXRlciIsICJTdWJwcm90b2NvbCJdCisK
K0RhdGEgPSBVbmlvbltzdHIsIGJ5dGVzXQorCitEYXRhX19kb2NfXyA9ICIiIgorVHlwZXMgc3Vw
cG9ydGVkIGluIGEgV2ViU29ja2V0IG1lc3NhZ2U6CisKKy0gOmNsYXNzOmBzdHJgIGZvciB0ZXh0
IG1lc3NhZ2VzCistIDpjbGFzczpgYnl0ZXNgIGZvciBiaW5hcnkgbWVzc2FnZXMKKworIiIiCisj
IFJlbW92ZSB0cnkgLyBleGNlcHQgd2hlbiBkcm9wcGluZyBzdXBwb3J0IGZvciBQeXRob24gPCAz
LjcKK3RyeToKKyAgICBEYXRhLl9fZG9jX18gPSBEYXRhX19kb2NfXyAgIyB0eXBlOiBpZ25vcmUK
K2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIHBhc3MKKwor
CitPcmlnaW4gPSBOZXdUeXBlKCJPcmlnaW4iLCBzdHIpCitPcmlnaW4uX19kb2NfXyA9ICIiIlZh
bHVlIG9mIGEgT3JpZ2luIGhlYWRlciIiIgorCisKK0V4dGVuc2lvbk5hbWUgPSBOZXdUeXBlKCJF
eHRlbnNpb25OYW1lIiwgc3RyKQorRXh0ZW5zaW9uTmFtZS5fX2RvY19fID0gIiIiTmFtZSBvZiBh
IFdlYlNvY2tldCBleHRlbnNpb24iIiIKKworCitFeHRlbnNpb25QYXJhbWV0ZXIgPSBUdXBsZVtz
dHIsIE9wdGlvbmFsW3N0cl1dCisKK0V4dGVuc2lvblBhcmFtZXRlcl9fZG9jX18gPSAiIiJQYXJh
bWV0ZXIgb2YgYSBXZWJTb2NrZXQgZXh0ZW5zaW9uIiIiCit0cnk6CisgICAgRXh0ZW5zaW9uUGFy
YW1ldGVyLl9fZG9jX18gPSBFeHRlbnNpb25QYXJhbWV0ZXJfX2RvY19fICAjIHR5cGU6IGlnbm9y
ZQorZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCisgICAgcGFzcwor
CisKK0V4dGVuc2lvbkhlYWRlciA9IFR1cGxlW0V4dGVuc2lvbk5hbWUsIExpc3RbRXh0ZW5zaW9u
UGFyYW1ldGVyXV0KKworRXh0ZW5zaW9uSGVhZGVyX19kb2NfXyA9ICIiIkl0ZW0gcGFyc2VkIGlu
IGEgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciIiIgordHJ5OgorICAgIEV4dGVuc2lv
bkhlYWRlci5fX2RvY19fID0gRXh0ZW5zaW9uSGVhZGVyX19kb2NfXyAgIyB0eXBlOiBpZ25vcmUK
K2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgcHJhZ21hOiBubyBjb3ZlcgorICAgIHBhc3MKKwor
CitTdWJwcm90b2NvbCA9IE5ld1R5cGUoIlN1YnByb3RvY29sIiwgc3RyKQorU3VicHJvdG9jb2wu
X19kb2NfXyA9ICIiIkl0ZW1zIHBhcnNlZCBpbiBhIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVh
ZGVyIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvdXJpLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3VyaS5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2NjllNTY2ODYxMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy91cmkucHkKQEAgLTAsMCArMSw4MSBAQAor
IiIiCis6bW9kOmB3ZWJzb2NrZXRzLnVyaWAgcGFyc2VzIFdlYlNvY2tldCBVUklzLgorCitTZWUg
YHNlY3Rpb24gMyBvZiBSRkMgNjQ1NWBfLgorCisuLiBfc2VjdGlvbiAzIG9mIFJGQyA2NDU1OiBo
dHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1I3NlY3Rpb24tMworCisiIiIKKworaW1w
b3J0IHVybGxpYi5wYXJzZQorZnJvbSB0eXBpbmcgaW1wb3J0IE5hbWVkVHVwbGUsIE9wdGlvbmFs
LCBUdXBsZQorCitmcm9tIC5leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkVVJJCisKKworX19hbGxf
XyA9IFsicGFyc2VfdXJpIiwgIldlYlNvY2tldFVSSSJdCisKKworIyBDb25zaWRlciBjb252ZXJ0
aW5nIHRvIGEgZGF0YWNsYXNzIHdoZW4gZHJvcHBpbmcgc3VwcG9ydCBmb3IgUHl0aG9uIDwgMy43
LgorCisKK2NsYXNzIFdlYlNvY2tldFVSSShOYW1lZFR1cGxlKToKKyAgICAiIiIKKyAgICBXZWJT
b2NrZXQgVVJJLgorCisgICAgOnBhcmFtIGJvb2wgc2VjdXJlOiBzZWN1cmUgZmxhZworICAgIDpw
YXJhbSBzdHIgaG9zdDogbG93ZXItY2FzZSBob3N0CisgICAgOnBhcmFtIGludCBwb3J0OiBwb3J0
LCBhbHdheXMgc2V0IGV2ZW4gaWYgaXQncyB0aGUgZGVmYXVsdAorICAgIDpwYXJhbSBzdHIgcmVz
b3VyY2VfbmFtZTogcGF0aCBhbmQgb3B0aW9uYWwgcXVlcnkKKyAgICA6cGFyYW0gc3RyIHVzZXJf
aW5mbzogYGAodXNlcm5hbWUsIHBhc3N3b3JkKWBgIHR1cGxlIHdoZW4gdGhlIFVSSSBjb250YWlu
cworICAgICAgYFVzZXIgSW5mb3JtYXRpb25gXywgZWxzZSBgYE5vbmVgYC4KKworICAgIC4uIF9V
c2VyIEluZm9ybWF0aW9uOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0
aW9uLTMuMi4xCisgICAgIiIiCisKKyAgICBzZWN1cmU6IGJvb2wKKyAgICBob3N0OiBzdHIKKyAg
ICBwb3J0OiBpbnQKKyAgICByZXNvdXJjZV9uYW1lOiBzdHIKKyAgICB1c2VyX2luZm86IE9wdGlv
bmFsW1R1cGxlW3N0ciwgc3RyXV0KKworCisjIFdvcmsgYXJvdW5kIGh0dHBzOi8vYnVncy5weXRo
b24ub3JnL2lzc3VlMTk5MzEKKworV2ViU29ja2V0VVJJLnNlY3VyZS5fX2RvY19fID0gIiIKK1dl
YlNvY2tldFVSSS5ob3N0Ll9fZG9jX18gPSAiIgorV2ViU29ja2V0VVJJLnBvcnQuX19kb2NfXyA9
ICIiCitXZWJTb2NrZXRVUkkucmVzb3VyY2VfbmFtZS5fX2RvY19fID0gIiIKK1dlYlNvY2tldFVS
SS51c2VyX2luZm8uX19kb2NfXyA9ICIiCisKKworZGVmIHBhcnNlX3VyaSh1cmk6IHN0cikgLT4g
V2ViU29ja2V0VVJJOgorICAgICIiIgorICAgIFBhcnNlIGFuZCB2YWxpZGF0ZSBhIFdlYlNvY2tl
dCBVUkkuCisKKyAgICA6cmFpc2VzIFZhbHVlRXJyb3I6IGlmIGBgdXJpYGAgaXNuJ3QgYSB2YWxp
ZCBXZWJTb2NrZXQgVVJJLgorCisgICAgIiIiCisgICAgcGFyc2VkID0gdXJsbGliLnBhcnNlLnVy
bHBhcnNlKHVyaSkKKyAgICB0cnk6CisgICAgICAgIGFzc2VydCBwYXJzZWQuc2NoZW1lIGluIFsi
d3MiLCAid3NzIl0KKyAgICAgICAgYXNzZXJ0IHBhcnNlZC5wYXJhbXMgPT0gIiIKKyAgICAgICAg
YXNzZXJ0IHBhcnNlZC5mcmFnbWVudCA9PSAiIgorICAgICAgICBhc3NlcnQgcGFyc2VkLmhvc3Ru
YW1lIGlzIG5vdCBOb25lCisgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yIGFzIGV4YzoKKyAgICAg
ICAgcmFpc2UgSW52YWxpZFVSSSh1cmkpIGZyb20gZXhjCisKKyAgICBzZWN1cmUgPSBwYXJzZWQu
c2NoZW1lID09ICJ3c3MiCisgICAgaG9zdCA9IHBhcnNlZC5ob3N0bmFtZQorICAgIHBvcnQgPSBw
YXJzZWQucG9ydCBvciAoNDQzIGlmIHNlY3VyZSBlbHNlIDgwKQorICAgIHJlc291cmNlX25hbWUg
PSBwYXJzZWQucGF0aCBvciAiLyIKKyAgICBpZiBwYXJzZWQucXVlcnk6CisgICAgICAgIHJlc291
cmNlX25hbWUgKz0gIj8iICsgcGFyc2VkLnF1ZXJ5CisgICAgdXNlcl9pbmZvID0gTm9uZQorICAg
IGlmIHBhcnNlZC51c2VybmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgIyB1cmxsaWIucGFyc2Uu
dXJscGFyc2UgYWNjZXB0cyBVUkxzIHdpdGggYSB1c2VybmFtZSBidXQgd2l0aG91dCBhCisgICAg
ICAgICMgcGFzc3dvcmQuIFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlIGZvciBIVFRQIEJhc2ljIEF1
dGggY3JlZGVudGlhbHMuCisgICAgICAgIGlmIHBhcnNlZC5wYXNzd29yZCBpcyBOb25lOgorICAg
ICAgICAgICAgcmFpc2UgSW52YWxpZFVSSSh1cmkpCisgICAgICAgIHVzZXJfaW5mbyA9IChwYXJz
ZWQudXNlcm5hbWUsIHBhcnNlZC5wYXNzd29yZCkKKyAgICByZXR1cm4gV2ViU29ja2V0VVJJKHNl
Y3VyZSwgaG9zdCwgcG9ydCwgcmVzb3VyY2VfbmFtZSwgdXNlcl9pbmZvKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L3NyYy93ZWJzb2NrZXRzL3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNDBhYzg1NTlmZjZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRz
L3NyYy93ZWJzb2NrZXRzL3V0aWxzLnB5CkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBpdGVydG9v
bHMKKworCitfX2FsbF9fID0gWyJhcHBseV9tYXNrIl0KKworCitkZWYgYXBwbHlfbWFzayhkYXRh
OiBieXRlcywgbWFzazogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICIiIgorICAgIEFwcGx5IG1hc2tp
bmcgdG8gdGhlIGRhdGEgb2YgYSBXZWJTb2NrZXQgbWVzc2FnZS4KKworICAgIDpwYXJhbSBkYXRh
OiBEYXRhIHRvIG1hc2sKKyAgICA6cGFyYW0gbWFzazogNC1ieXRlcyBtYXNrCisKKyAgICAiIiIK
KyAgICBpZiBsZW4obWFzaykgIT0gNDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWFzayBt
dXN0IGNvbnRhaW4gNCBieXRlcyIpCisKKyAgICByZXR1cm4gYnl0ZXMoYiBeIG0gZm9yIGIsIG0g
aW4gemlwKGRhdGEsIGl0ZXJ0b29scy5jeWNsZShtYXNrKSkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YnNvY2tldHMvc3JjL3dlYnNvY2tldHMvdmVyc2lvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy9zcmMv
d2Vic29ja2V0cy92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNzM3NzMzMmUxMmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Ny
Yy93ZWJzb2NrZXRzL3ZlcnNpb24ucHkKQEAgLTAsMCArMSBAQAordmVyc2lvbiA9ICI4LjEiCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5kZDc4NjA5ZjViYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMv
dGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgbG9nZ2luZworCisKKyMg
QXZvaWQgZGlzcGxheWluZyBzdGFjayB0cmFjZXMgYXQgdGhlIEVSUk9SIGxvZ2dpbmcgbGV2ZWwu
Citsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuQ1JJVElDQUwpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9ucy9fX2luaXRfXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vi
c29ja2V0cy90ZXN0cy9leHRlbnNpb25zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvdGVzdHMvZXh0ZW5zaW9ucy90ZXN0X2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVz
dHMvZXh0ZW5zaW9ucy90ZXN0X2Jhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5iYTg2NTdiNjU0MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvdGVzdHMvZXh0ZW5zaW9ucy90ZXN0X2Jhc2UucHkKQEAgLTAsMCArMSw0IEBACitmcm9tIHdl
YnNvY2tldHMuZXh0ZW5zaW9ucy5iYXNlIGltcG9ydCAqICAjIG5vcWEKKworCisjIEFic3RyYWN0
IGNsYXNzZXMgZG9uJ3QgcHJvdmlkZSBhbnkgYmVoYXZpb3IgdG8gdGVzdC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2Vic29ja2V0cy90ZXN0cy9leHRlbnNpb25zL3Rlc3RfcGVybWVzc2FnZV9kZWZsYXRl
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL2V4dGVuc2lvbnMvdGVzdF9wZXJtZXNzYWdlX2Rl
ZmxhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZWM0OWM2
YzAyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvZXh0ZW5zaW9u
cy90ZXN0X3Blcm1lc3NhZ2VfZGVmbGF0ZS5weQpAQCAtMCwwICsxLDc5MiBAQAoraW1wb3J0IHVu
aXR0ZXN0CitpbXBvcnQgemxpYgorCitmcm9tIHdlYnNvY2tldHMuZXhjZXB0aW9ucyBpbXBvcnQg
KAorICAgIER1cGxpY2F0ZVBhcmFtZXRlciwKKyAgICBJbnZhbGlkUGFyYW1ldGVyTmFtZSwKKyAg
ICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgTmVnb3RpYXRpb25FcnJvciwKKyAgICBQYXls
b2FkVG9vQmlnLAorKQorZnJvbSB3ZWJzb2NrZXRzLmV4dGVuc2lvbnMucGVybWVzc2FnZV9kZWZs
YXRlIGltcG9ydCAqCitmcm9tIHdlYnNvY2tldHMuZnJhbWluZyBpbXBvcnQgKAorICAgIE9QX0JJ
TkFSWSwKKyAgICBPUF9DTE9TRSwKKyAgICBPUF9DT05ULAorICAgIE9QX1BJTkcsCisgICAgT1Bf
UE9ORywKKyAgICBPUF9URVhULAorICAgIEZyYW1lLAorICAgIHNlcmlhbGl6ZV9jbG9zZSwKKykK
KworCitjbGFzcyBFeHRlbnNpb25UZXN0c01peGluOgorICAgIGRlZiBhc3NlcnRFeHRlbnNpb25F
cXVhbChzZWxmLCBleHRlbnNpb24xLCBleHRlbnNpb24yKToKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbjEucmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXIs
IGV4dGVuc2lvbjIucmVtb3RlX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXh0ZW5zaW9uMS5sb2NhbF9ub19jb250
ZXh0X3Rha2VvdmVyLCBleHRlbnNpb24yLmxvY2FsX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXh0ZW5zaW9uMS5y
ZW1vdGVfbWF4X3dpbmRvd19iaXRzLCBleHRlbnNpb24yLnJlbW90ZV9tYXhfd2luZG93X2JpdHMK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXh0ZW5z
aW9uMS5sb2NhbF9tYXhfd2luZG93X2JpdHMsIGV4dGVuc2lvbjIubG9jYWxfbWF4X3dpbmRvd19i
aXRzCisgICAgICAgICkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3RzKHVuaXR0ZXN0
LlRlc3RDYXNlLCBFeHRlbnNpb25UZXN0c01peGluKToKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgICMgU2V0IHVwIGFuIGluc3RhbmNlIG9mIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0
ZW5zaW9uIHdpdGggdGhlIG1vc3QKKyAgICAgICAgIyBjb21tb24gc2V0dGluZ3MuIFNpbmNlIHRo
ZSBleHRlbnNpb24gaXMgc3ltbWV0cmljYWwsIHRoaXMgaW5zdGFuY2UKKyAgICAgICAgIyBtYXkg
YmUgdXNlZCBmb3IgdGVzdGluZyBib3RoIGVuY29kaW5nIGFuZCBkZWNvZGluZy4KKyAgICAgICAg
c2VsZi5leHRlbnNpb24gPSBQZXJNZXNzYWdlRGVmbGF0ZShGYWxzZSwgRmFsc2UsIDE1LCAxNSkK
KworICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIGFzc2VydCBzZWxmLmV4dGVuc2lv
bi5uYW1lID09ICJwZXJtZXNzYWdlLWRlZmxhdGUiCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydEV4dGVuc2lvbkVxdWFsKGV2YWwocmVwcihzZWxmLmV4dGVu
c2lvbikpLCBzZWxmLmV4dGVuc2lvbikKKworICAgICMgQ29udHJvbCBmcmFtZXMgYXJlbid0IGVu
Y29kZWQgb3IgZGVjb2RlZC4KKworICAgIGRlZiB0ZXN0X25vX2VuY29kZV9kZWNvZGVfcGluZ19m
cmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9QSU5HLCBiIiIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJhbWUpLCBm
cmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXh0ZW5zaW9uLmRlY29kZShm
cmFtZSksIGZyYW1lKQorCisgICAgZGVmIHRlc3Rfbm9fZW5jb2RlX2RlY29kZV9wb25nX2ZyYW1l
KHNlbGYpOgorICAgICAgICBmcmFtZSA9IEZyYW1lKFRydWUsIE9QX1BPTkcsIGIiIikKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXh0ZW5zaW9uLmVuY29kZShmcmFtZSksIGZyYW1l
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5leHRlbnNpb24uZGVjb2RlKGZyYW1l
KSwgZnJhbWUpCisKKyAgICBkZWYgdGVzdF9ub19lbmNvZGVfZGVjb2RlX2Nsb3NlX2ZyYW1lKHNl
bGYpOgorICAgICAgICBmcmFtZSA9IEZyYW1lKFRydWUsIE9QX0NMT1NFLCBzZXJpYWxpemVfY2xv
c2UoMTAwMCwgIiIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5leHRlbnNpb24u
ZW5jb2RlKGZyYW1lKSwgZnJhbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmV4
dGVuc2lvbi5kZWNvZGUoZnJhbWUpLCBmcmFtZSkKKworICAgICMgRGF0YSBmcmFtZXMgYXJlIGVu
Y29kZWQgYW5kIGRlY29kZWQuCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGVjb2RlX3RleHRfZnJh
bWUoc2VsZik6CisgICAgICAgIGZyYW1lID0gRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5l
bmNvZGUoInV0Zi04IikpCisKKyAgICAgICAgZW5jX2ZyYW1lID0gc2VsZi5leHRlbnNpb24uZW5j
b2RlKGZyYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jX2ZyYW1lLCBmcmFtZS5f
cmVwbGFjZShyc3YxPVRydWUsIGRhdGE9YiJKTkw7XHhiY1x4MTJceDAwIikpCisKKyAgICAgICAg
ZGVjX2ZyYW1lID0gc2VsZi5leHRlbnNpb24uZGVjb2RlKGVuY19mcmFtZSkKKworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZSwgZnJhbWUpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVf
ZGVjb2RlX2JpbmFyeV9mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUgPSBGcmFtZShUcnVlLCBP
UF9CSU5BUlksIGIidGVhIikKKworICAgICAgICBlbmNfZnJhbWUgPSBzZWxmLmV4dGVuc2lvbi5l
bmNvZGUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNfZnJhbWUsIGZyYW1l
Ll9yZXBsYWNlKHJzdjE9VHJ1ZSwgZGF0YT1iIipJTVx4MDRceDAwIikpCisKKyAgICAgICAgZGVj
X2ZyYW1lID0gc2VsZi5leHRlbnNpb24uZGVjb2RlKGVuY19mcmFtZSkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRlY19mcmFtZSwgZnJhbWUpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGVj
b2RlX2ZyYWdtZW50ZWRfdGV4dF9mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUxID0gRnJhbWUo
RmFsc2UsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICBmcmFtZTIg
PSBGcmFtZShGYWxzZSwgT1BfQ09OVCwgIiAmICIuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICBm
cmFtZTMgPSBGcmFtZShUcnVlLCBPUF9DT05ULCAiY3JvaXNzYW50cyIuZW5jb2RlKCJ1dGYtOCIp
KQorCisgICAgICAgIGVuY19mcmFtZTEgPSBzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJhbWUxKQor
ICAgICAgICBlbmNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24uZW5jb2RlKGZyYW1lMikKKyAgICAg
ICAgZW5jX2ZyYW1lMyA9IHNlbGYuZXh0ZW5zaW9uLmVuY29kZShmcmFtZTMpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVuY19mcmFtZTEsCisgICAgICAgICAgICBm
cmFtZTEuX3JlcGxhY2UocnN2MT1UcnVlLCBkYXRhPWIiSk5MO1x4YmNceDEyXHgwMFx4MDBceDAw
XHhmZlx4ZmYiKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgZW5jX2ZyYW1lMiwgZnJhbWUyLl9yZXBsYWNlKHJzdjE9VHJ1ZSwgZGF0YT1iIlJQU1x4
MDBceDAwXHgwMFx4MDBceGZmXHhmZiIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGVuY19mcmFtZTMsIGZyYW1lMy5fcmVwbGFjZShyc3YxPVRydWUs
IGRhdGE9YiJKLlx4Y2FceGNmLC5OXHhjYyspXHgwNlx4MDAiKQorICAgICAgICApCisKKyAgICAg
ICAgZGVjX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShlbmNfZnJhbWUxKQorICAgICAg
ICBkZWNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24uZGVjb2RlKGVuY19mcmFtZTIpCisgICAgICAg
IGRlY19mcmFtZTMgPSBzZWxmLmV4dGVuc2lvbi5kZWNvZGUoZW5jX2ZyYW1lMykKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFtZTEsIGZyYW1lMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkZWNfZnJhbWUyLCBmcmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVj
X2ZyYW1lMywgZnJhbWUzKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RlY29kZV9mcmFnbWVudGVk
X2JpbmFyeV9mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUxID0gRnJhbWUoRmFsc2UsIE9QX1RF
WFQsIGIidGVhICIpCisgICAgICAgIGZyYW1lMiA9IEZyYW1lKFRydWUsIE9QX0NPTlQsIGIidGlt
ZSIpCisKKyAgICAgICAgZW5jX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmVuY29kZShmcmFtZTEp
CisgICAgICAgIGVuY19mcmFtZTIgPSBzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJhbWUyKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBlbmNfZnJhbWUxLCBmcmFtZTEu
X3JlcGxhY2UocnN2MT1UcnVlLCBkYXRhPWIiKklNVFx4MDBceDAwXHgwMFx4MDBceGZmXHhmZiIp
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVuY19m
cmFtZTIsIGZyYW1lMi5fcmVwbGFjZShyc3YxPVRydWUsIGRhdGE9YiIqXHhjOVx4Y2NNXHgwNVx4
MDAiKQorICAgICAgICApCisKKyAgICAgICAgZGVjX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmRl
Y29kZShlbmNfZnJhbWUxKQorICAgICAgICBkZWNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24uZGVj
b2RlKGVuY19mcmFtZTIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNfZnJhbWUxLCBm
cmFtZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMiwgZnJhbWUyKQorCisg
ICAgZGVmIHRlc3Rfbm9fZGVjb2RlX3RleHRfZnJhbWUoc2VsZik6CisgICAgICAgIGZyYW1lID0g
RnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpCisKKyAgICAgICAg
IyBUcnkgZGVjb2RpbmcgYSBmcmFtZSB0aGF0IHdhc24ndCBlbmNvZGVkLgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZXh0ZW5zaW9uLmRlY29kZShmcmFtZSksIGZyYW1lKQorCisgICAg
ZGVmIHRlc3Rfbm9fZGVjb2RlX2JpbmFyeV9mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUgPSBG
cmFtZShUcnVlLCBPUF9URVhULCBiInRlYSIpCisKKyAgICAgICAgIyBUcnkgZGVjb2RpbmcgYSBm
cmFtZSB0aGF0IHdhc24ndCBlbmNvZGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
ZXh0ZW5zaW9uLmRlY29kZShmcmFtZSksIGZyYW1lKQorCisgICAgZGVmIHRlc3Rfbm9fZGVjb2Rl
X2ZyYWdtZW50ZWRfdGV4dF9mcmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUxID0gRnJhbWUoRmFs
c2UsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICBmcmFtZTIgPSBG
cmFtZShGYWxzZSwgT1BfQ09OVCwgIiAmICIuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICBmcmFt
ZTMgPSBGcmFtZShUcnVlLCBPUF9DT05ULCAiY3JvaXNzYW50cyIuZW5jb2RlKCJ1dGYtOCIpKQor
CisgICAgICAgIGRlY19mcmFtZTEgPSBzZWxmLmV4dGVuc2lvbi5kZWNvZGUoZnJhbWUxKQorICAg
ICAgICBkZWNfZnJhbWUyID0gc2VsZi5leHRlbnNpb24uZGVjb2RlKGZyYW1lMikKKyAgICAgICAg
ZGVjX2ZyYW1lMyA9IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShmcmFtZTMpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkZWNfZnJhbWUxLCBmcmFtZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGVjX2ZyYW1lMiwgZnJhbWUyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY19mcmFt
ZTMsIGZyYW1lMykKKworICAgIGRlZiB0ZXN0X25vX2RlY29kZV9mcmFnbWVudGVkX2JpbmFyeV9m
cmFtZShzZWxmKToKKyAgICAgICAgZnJhbWUxID0gRnJhbWUoRmFsc2UsIE9QX1RFWFQsIGIidGVh
ICIpCisgICAgICAgIGZyYW1lMiA9IEZyYW1lKFRydWUsIE9QX0NPTlQsIGIidGltZSIpCisKKyAg
ICAgICAgZGVjX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShmcmFtZTEpCisgICAgICAg
IGRlY19mcmFtZTIgPSBzZWxmLmV4dGVuc2lvbi5kZWNvZGUoZnJhbWUyKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMSwgZnJhbWUxKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRlY19mcmFtZTIsIGZyYW1lMikKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfdGFrZW92ZXIo
c2VsZik6CisgICAgICAgIGZyYW1lID0gRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNv
ZGUoInV0Zi04IikpCisKKyAgICAgICAgZW5jX2ZyYW1lMSA9IHNlbGYuZXh0ZW5zaW9uLmVuY29k
ZShmcmFtZSkKKyAgICAgICAgZW5jX2ZyYW1lMiA9IHNlbGYuZXh0ZW5zaW9uLmVuY29kZShmcmFt
ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY19mcmFtZTEuZGF0YSwgYiJKTkw7XHhi
Y1x4MTJceDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNfZnJhbWUyLmRhdGEsIGIi
Slx4MDZceDExXHgwMFx4MDAiKQorCisgICAgZGVmIHRlc3RfcmVtb3RlX25vX2NvbnRleHRfdGFr
ZW92ZXIoc2VsZik6CisgICAgICAgICMgTm8gY29udGV4dCB0YWtlb3ZlciB3aGVuIGRlY29kaW5n
IG1lc3NhZ2VzLgorICAgICAgICBzZWxmLmV4dGVuc2lvbiA9IFBlck1lc3NhZ2VEZWZsYXRlKFRy
dWUsIEZhbHNlLCAxNSwgMTUpCisKKyAgICAgICAgZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9URVhU
LCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSkKKworICAgICAgICBlbmNfZnJhbWUxID0gc2VsZi5l
eHRlbnNpb24uZW5jb2RlKGZyYW1lKQorICAgICAgICBlbmNfZnJhbWUyID0gc2VsZi5leHRlbnNp
b24uZW5jb2RlKGZyYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jX2ZyYW1lMS5k
YXRhLCBiIkpOTDtceGJjXHgxMlx4MDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY19m
cmFtZTIuZGF0YSwgYiJKXHgwNlx4MTFceDAwXHgwMCIpCisKKyAgICAgICAgZGVjX2ZyYW1lMSA9
IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShlbmNfZnJhbWUxKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRlY19mcmFtZTEsIGZyYW1lKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
emxpYi5lcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5leHRlbnNpb24uZGVjb2RlKGVu
Y19mcmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImludmFsaWQgZGlzdGFuY2UgdG9vIGZh
ciBiYWNrIiwgc3RyKGV4Yy5leGNlcHRpb24pKQorCisgICAgZGVmIHRlc3RfbG9jYWxfbm9fY29u
dGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgIyBObyBjb250ZXh0IHRha2VvdmVyIHdoZW4g
ZW5jb2RpbmcgYW5kIGRlY29kaW5nIG1lc3NhZ2VzLgorICAgICAgICBzZWxmLmV4dGVuc2lvbiA9
IFBlck1lc3NhZ2VEZWZsYXRlKFRydWUsIFRydWUsIDE1LCAxNSkKKworICAgICAgICBmcmFtZSA9
IEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQorCisgICAgICAg
IGVuY19mcmFtZTEgPSBzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJhbWUpCisgICAgICAgIGVuY19m
cmFtZTIgPSBzZWxmLmV4dGVuc2lvbi5lbmNvZGUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChlbmNfZnJhbWUxLmRhdGEsIGIiSk5MO1x4YmNceDEyXHgwMCIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZW5jX2ZyYW1lMi5kYXRhLCBiIkpOTDtceGJjXHgxMlx4MDAiKQorCisg
ICAgICAgIGRlY19mcmFtZTEgPSBzZWxmLmV4dGVuc2lvbi5kZWNvZGUoZW5jX2ZyYW1lMSkKKyAg
ICAgICAgZGVjX2ZyYW1lMiA9IHNlbGYuZXh0ZW5zaW9uLmRlY29kZShlbmNfZnJhbWUyKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMSwgZnJhbWUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjX2ZyYW1lMiwgZnJhbWUpCisKKyAgICAjIENvbXByZXNzaW9uIHNldHRp
bmdzIGNhbiBiZSBjdXN0b21pemVkLgorCisgICAgZGVmIHRlc3RfY29tcHJlc3Nfc2V0dGluZ3Mo
c2VsZik6CisgICAgICAgICMgQ29uZmlndXJlIGFuIGV4dGVuc2lvbiBzbyB0aGF0IG5vIGNvbXBy
ZXNzaW9uIGFjdHVhbGx5IG9jY3Vycy4KKyAgICAgICAgZXh0ZW5zaW9uID0gUGVyTWVzc2FnZURl
ZmxhdGUoRmFsc2UsIEZhbHNlLCAxNSwgMTUsIHsibGV2ZWwiOiAwfSkKKworICAgICAgICBmcmFt
ZSA9IEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQorCisgICAg
ICAgIGVuY19mcmFtZSA9IGV4dGVuc2lvbi5lbmNvZGUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVuY19mcmFtZSwKKyAgICAgICAgICAgIGZyYW1lLl9y
ZXBsYWNlKAorICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSwgZGF0YT1iIlx4MDBceDA1XHgwMFx4
ZmFceGZmY2FmXHhjM1x4YTlceDAwIiAgIyBub3QgY29tcHJlc3NlZAorICAgICAgICAgICAgKSwK
KyAgICAgICAgKQorCisgICAgIyBGcmFtZXMgYXJlbid0IGRlY29kZWQgYmV5b25kIG1heF9sZW5n
dGguCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX21heF9zaXplKHNlbGYpOgorICAgICAgICBm
cmFtZSA9IEZyYW1lKFRydWUsIE9QX1RFWFQsICgiYSIgKiAyMCkuZW5jb2RlKCJ1dGYtOCIpKQor
CisgICAgICAgIGVuY19mcmFtZSA9IHNlbGYuZXh0ZW5zaW9uLmVuY29kZShmcmFtZSkKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY19mcmFtZS5kYXRhLCBiIkpMXHhjNFx4MDRceDAwXHgw
MCIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQYXlsb2FkVG9vQmlnKToKKyAg
ICAgICAgICAgIHNlbGYuZXh0ZW5zaW9uLmRlY29kZShlbmNfZnJhbWUsIG1heF9zaXplPTEwKQor
CisKK2NsYXNzIENsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeVRlc3RzKHVuaXR0ZXN0LlRl
c3RDYXNlLCBFeHRlbnNpb25UZXN0c01peGluKToKKyAgICBkZWYgdGVzdF9uYW1lKHNlbGYpOgor
ICAgICAgICBhc3NlcnQgQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5Lm5hbWUgPT0gInBl
cm1lc3NhZ2UtZGVmbGF0ZSIKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGZv
ciBjb25maWcgaW4gWworICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgOCwgTm9uZSksICAjIHNl
cnZlcl9tYXhfd2luZG93X2JpdHMg4omlIDgKKyAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgMTUs
IE5vbmUpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIOKJpCAxNQorICAgICAgICAgICAgKFRy
dWUsIEZhbHNlLCBOb25lLCA4KSwgICMgY2xpZW50X21heF93aW5kb3dfYml0cyDiiaUgOAorICAg
ICAgICAgICAgKFRydWUsIFRydWUsIE5vbmUsIDE1KSwgICMgY2xpZW50X21heF93aW5kb3dfYml0
cyDiiaQgMTUKKyAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIFRydWUpLCAgIyBjbGll
bnRfbWF4X3dpbmRvd19iaXRzCisgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25l
LCB7Im1lbUxldmVsIjogNH0pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1
YlRlc3QoY29uZmlnPWNvbmZpZyk6CisgICAgICAgICAgICAgICAgIyBUaGlzIGRvZXMgbm90IHJh
aXNlIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgICAgICBDbGllbnRQZXJNZXNzYWdlRGVmbGF0
ZUZhY3RvcnkoKmNvbmZpZykKKworICAgIGRlZiB0ZXN0X2luaXRfZXJyb3Ioc2VsZik6CisgICAg
ICAgIGZvciBjb25maWcgaW4gWworICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgNywgOCksICAj
IHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPCA4CisgICAgICAgICAgICAoRmFsc2UsIFRydWUsIDgs
IDcpLCAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIDwgOAorICAgICAgICAgICAgKFRydWUsIEZh
bHNlLCAxNiwgMTUpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID4gMTUKKyAgICAgICAgICAg
IChUcnVlLCBUcnVlLCAxNSwgMTYpLCAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzID4gMTUKKyAg
ICAgICAgICAgIChGYWxzZSwgRmFsc2UsIFRydWUsIE5vbmUpLCAgIyBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzCisgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lLCB7IndiaXRzIjog
MTF9KSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvbmZpZz1j
b25maWcpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
cik6CisgICAgICAgICAgICAgICAgICAgIENsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgq
Y29uZmlnKQorCisgICAgZGVmIHRlc3RfZ2V0X3JlcXVlc3RfcGFyYW1zKHNlbGYpOgorICAgICAg
ICBmb3IgY29uZmlnLCByZXN1bHQgaW4gWworICAgICAgICAgICAgIyBUZXN0IHdpdGhvdXQgYW55
IHBhcmFtZXRlcgorICAgICAgICAgICAgKChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLCBbXSks
CisgICAgICAgICAgICAjIFRlc3Qgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAg
ICAgICgoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLCBbKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciIsIE5vbmUpXSksCisgICAgICAgICAgICAjIFRlc3QgY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXIKKyAgICAgICAgICAgICgoRmFsc2UsIFRydWUsIE5vbmUsIE5vbmUpLCBbKCJjbGllbnRf
bm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSksCisgICAgICAgICAgICAjIFRlc3Qgc2VydmVy
X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgKChGYWxzZSwgRmFsc2UsIDEwLCBOb25lKSwg
Wygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMCIpXSksCisgICAgICAgICAgICAjIFRlc3Qg
Y2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgKChGYWxzZSwgRmFsc2UsIE5vbmUs
IDEwKSwgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMCIpXSksCisgICAgICAgICAgICAo
KEZhbHNlLCBGYWxzZSwgTm9uZSwgVHJ1ZSksIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCBO
b25lKV0pLAorICAgICAgICAgICAgIyBUZXN0IGFsbCBwYXJhbWV0ZXJzIHRvZ2V0aGVyCisgICAg
ICAgICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIFRydWUsIDEyLCAxMiksCisgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAoInNlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICgiY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJfbWF4X3dpbmRvd19i
aXRzIiwgIjEyIiksCisgICAgICAgICAgICAgICAgICAgICgiY2xpZW50X21heF93aW5kb3dfYml0
cyIsICIxMiIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAorICAgICAgICBd
OgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uZmlnPWNvbmZpZyk6CisgICAgICAg
ICAgICAgICAgZmFjdG9yeSA9IENsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgqY29uZmln
KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdG9yeS5nZXRfcmVxdWVzdF9w
YXJhbXMoKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19yZXNwb25zZV9wYXJhbXMo
c2VsZik6CisgICAgICAgIGZvciBjb25maWcsIHJlc3BvbnNlX3BhcmFtcywgcmVzdWx0IGluIFsK
KyAgICAgICAgICAgICMgVGVzdCB3aXRob3V0IGFueSBwYXJhbWV0ZXIKKyAgICAgICAgICAgICgo
RmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwgW10sIChGYWxzZSwgRmFsc2UsIDE1LCAxNSkpLAor
ICAgICAgICAgICAgKChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLCBbKCJ1bmtub3duIiwgTm9u
ZSldLCBJbnZhbGlkUGFyYW1ldGVyTmFtZSksCisgICAgICAgICAgICAjIFRlc3Qgc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2Us
IEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlciIsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIDE1LCAx
NSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKChUcnVlLCBGYWxzZSwgTm9uZSwgTm9u
ZSksIFtdLCBOZWdvdGlhdGlvbkVycm9yKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAgICAgICAgICAgICAgIChUcnVlLCBGYWxz
ZSwgMTUsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgKFRydWUsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSAqIDIsCisgICAgICAgICAgICAgICAgRHVwbGlj
YXRlUGFyYW1ldGVyLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAg
ICAgICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZl
cl9ub19jb250ZXh0X3Rha2VvdmVyIiwgIjQyIildLAorICAgICAgICAgICAgICAgIEludmFsaWRQ
YXJhbWV0ZXJWYWx1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAjIFRlc3QgY2xpZW50
X25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFs
c2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbm9fY29u
dGV4dF90YWtlb3ZlciIsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsIDE1
LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKChGYWxzZSwgVHJ1ZSwgTm9uZSwg
Tm9uZSksIFtdLCAoRmFsc2UsIFRydWUsIDE1LCAxNSkpLAorICAgICAgICAgICAgKAorICAgICAg
ICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygi
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKV0sCisgICAgICAgICAgICAgICAgKEZh
bHNlLCBUcnVlLCAxNSwgMTUpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAoRmFsc2UsIFRydWUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFso
ImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldICogMiwKKyAgICAgICAgICAgICAg
ICBEdXBsaWNhdGVQYXJhbWV0ZXIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAg
WygiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCAiNDIiKV0sCisgICAgICAgICAgICAgICAg
SW52YWxpZFBhcmFtZXRlclZhbHVlLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICMgVGVz
dCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
KEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21h
eF93aW5kb3dfYml0cyIsICI3IildLAorICAgICAgICAgICAgICAgIE5lZ290aWF0aW9uRXJyb3Is
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwg
RmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93
X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTAsIDE1KSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBG
YWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3df
Yml0cyIsICIxNiIpXSwKKyAgICAgICAgICAgICAgICBOZWdvdGlhdGlvbkVycm9yLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICgoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksIFtdLCBOZWdv
dGlhdGlvbkVycm9yKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZh
bHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0
cyIsICIxMCIpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMCwgMTUpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNl
LCAxMiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIs
ICIxMiIpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgMTUpLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAx
MiwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIx
MyIpXSwKKyAgICAgICAgICAgICAgICBOZWdvdGlhdGlvbkVycm9yLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSks
CisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMiIpXSAqIDIs
CisgICAgICAgICAgICAgICAgRHVwbGljYXRlUGFyYW1ldGVyLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksCisg
ICAgICAgICAgICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICI0MiIpXSwKKyAgICAg
ICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUsCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgIyBUZXN0IGNsaWVudF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBb
KCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEwIildLAorICAgICAgICAgICAgICAgIE5lZ290
aWF0aW9uRXJyb3IsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKChGYWxzZSwgRmFsc2Us
IE5vbmUsIFRydWUpLCBbXSwgKEZhbHNlLCBGYWxzZSwgMTUsIDE1KSksCisgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgVHJ1ZSksCisgICAgICAgICAg
ICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICI3IildLAorICAgICAgICAgICAgICAg
IE5lZ290aWF0aW9uRXJyb3IsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAg
ICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIFRydWUpLAorICAgICAgICAgICAgICAgIFso
ImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAgICAgICAgKEZhbHNl
LCBGYWxzZSwgMTUsIDEwKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAg
ICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgVHJ1ZSksCisgICAgICAgICAgICAgICAgWygi
Y2xpZW50X21heF93aW5kb3dfYml0cyIsICIxNiIpXSwKKyAgICAgICAgICAgICAgICBOZWdvdGlh
dGlvbkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgoRmFsc2UsIEZhbHNlLCBO
b25lLCAxMiksIFtdLCAoRmFsc2UsIEZhbHNlLCAxNSwgMTIpKSwKKyAgICAgICAgICAgICgKKyAg
ICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAg
WygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMCIpXSwKKyAgICAgICAgICAgICAgICAoRmFs
c2UsIEZhbHNlLCAxNSwgMTApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAgWygi
Y2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMiIpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2Us
IEZhbHNlLCAxNSwgMTIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xp
ZW50X21heF93aW5kb3dfYml0cyIsICIxMyIpXSwKKyAgICAgICAgICAgICAgICBOZWdvdGlhdGlv
bkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAo
RmFsc2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93
aW5kb3dfYml0cyIsICIxMiIpXSAqIDIsCisgICAgICAgICAgICAgICAgRHVwbGljYXRlUGFyYW1l
dGVyLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFs
c2UsIEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5k
b3dfYml0cyIsICI0MiIpXSwKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUs
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBUZXN0IGFsbCBwYXJhbWV0ZXJzIHRvZ2V0
aGVyCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIFRydWUsIDEyLCAxMiks
CisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAoInNlcnZlcl9ub19jb250
ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICgiY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzIiwgIjEwIiksCisgICAgICAgICAgICAgICAgICAgICgiY2xpZW50X21heF93
aW5kb3dfYml0cyIsICIxMCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
KFRydWUsIFRydWUsIDEwLCAxMCksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIFRydWUpLAorICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5v
bmUpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIiwg
Tm9uZSksCisgICAgICAgICAgICAgICAgICAgICgic2VydmVyX21heF93aW5kb3dfYml0cyIsICIx
MCIpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTAi
KSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIChUcnVlLCBUcnVlLCAxMCwg
MTApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoVHJ1
ZSwgVHJ1ZSwgMTIsIDEyKSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICgic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAg
ICAgKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTIsIDEyKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb25maWc9Y29uZmlnLCBy
ZXNwb25zZV9wYXJhbXM9cmVzcG9uc2VfcGFyYW1zKToKKyAgICAgICAgICAgICAgICBmYWN0b3J5
ID0gQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KCpjb25maWcpCisgICAgICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKHJlc3VsdCwgRXhj
ZXB0aW9uKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZXN1
bHQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeS5wcm9jZXNzX3Jlc3BvbnNlX3Bh
cmFtcyhyZXNwb25zZV9wYXJhbXMsIFtdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGZhY3RvcnkucHJvY2Vzc19yZXNwb25zZV9wYXJhbXMo
cmVzcG9uc2VfcGFyYW1zLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBQZXJN
ZXNzYWdlRGVmbGF0ZSgqcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEV4
dGVuc2lvbkVxdWFsKGV4dGVuc2lvbiwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNz
X3Jlc3BvbnNlX3BhcmFtc19kZWR1cGxpY2F0aW9uKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0g
Q2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSkK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOZWdvdGlhdGlvbkVycm9yKToKKyAgICAg
ICAgICAgIGZhY3RvcnkucHJvY2Vzc19yZXNwb25zZV9wYXJhbXMoCisgICAgICAgICAgICAgICAg
W10sIFtQZXJNZXNzYWdlRGVmbGF0ZShGYWxzZSwgRmFsc2UsIDE1LCAxNSldCisgICAgICAgICAg
ICApCisKKworY2xhc3MgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5VGVzdHModW5pdHRl
c3QuVGVzdENhc2UsIEV4dGVuc2lvblRlc3RzTWl4aW4pOgorICAgIGRlZiB0ZXN0X25hbWUoc2Vs
Zik6CisgICAgICAgIGFzc2VydCBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkubmFtZSA9
PSAicGVybWVzc2FnZS1kZWZsYXRlIgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAg
ICAgZm9yIGNvbmZpZyBpbiBbCisgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCA4LCBOb25lKSwg
ICMgc2VydmVyX21heF93aW5kb3dfYml0cyDiiaUgOAorICAgICAgICAgICAgKEZhbHNlLCBUcnVl
LCAxNSwgTm9uZSksICAjIHNlcnZlcl9tYXhfd2luZG93X2JpdHMg4omkIDE1CisgICAgICAgICAg
ICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIDgpLCAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIOKJpSA4
CisgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgTm9uZSwgMTUpLCAgIyBjbGllbnRfbWF4X3dpbmRv
d19iaXRzIOKJpCAxNQorICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSwgeyJt
ZW1MZXZlbCI6IDR9KSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0
KGNvbmZpZz1jb25maWcpOgorICAgICAgICAgICAgICAgICMgVGhpcyBkb2VzIG5vdCByYWlzZSBh
biBleGNlcHRpb24uCisgICAgICAgICAgICAgICAgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0
b3J5KCpjb25maWcpCisKKyAgICBkZWYgdGVzdF9pbml0X2Vycm9yKHNlbGYpOgorICAgICAgICBm
b3IgY29uZmlnIGluIFsKKyAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDcsIDgpLCAgIyBzZXJ2
ZXJfbWF4X3dpbmRvd19iaXRzIDwgOAorICAgICAgICAgICAgKEZhbHNlLCBUcnVlLCA4LCA3KSwg
ICMgY2xpZW50X21heF93aW5kb3dfYml0cyA8IDgKKyAgICAgICAgICAgIChUcnVlLCBGYWxzZSwg
MTYsIDE1KSwgICMgc2VydmVyX21heF93aW5kb3dfYml0cyA+IDE1CisgICAgICAgICAgICAoVHJ1
ZSwgVHJ1ZSwgMTUsIDE2KSwgICMgY2xpZW50X21heF93aW5kb3dfYml0cyA+IDE1CisgICAgICAg
ICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBUcnVlKSwgICMgY2xpZW50X21heF93aW5kb3dfYml0
cworICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgVHJ1ZSwgTm9uZSksICAjIHNlcnZlcl9tYXhf
d2luZG93X2JpdHMKKyAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUsIHsid2Jp
dHMiOiAxMX0pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29u
ZmlnPWNvbmZpZyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0
b3J5KCpjb25maWcpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX3JlcXVlc3RfcGFyYW1zKHNlbGYp
OgorICAgICAgICAjIFBhcmFtZXRlcnMgaW4gcmVzdWx0IGFwcGVhciBzd2FwcGVkIHZzLiBjb25m
aWcgYmVjYXVzZSB0aGUgb3JkZXIgaXMKKyAgICAgICAgIyAocmVtb3RlLCBsb2NhbCkgdnMuIChz
ZXJ2ZXIsIGNsaWVudCkuCisgICAgICAgIGZvciBjb25maWcsIHJlcXVlc3RfcGFyYW1zLCByZXNw
b25zZV9wYXJhbXMsIHJlc3VsdCBpbiBbCisgICAgICAgICAgICAjIFRlc3Qgd2l0aG91dCBhbnkg
cGFyYW1ldGVyCisgICAgICAgICAgICAoKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksIFtdLCBb
XSwgKEZhbHNlLCBGYWxzZSwgMTUsIDE1KSksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygidW5rbm93
biIsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgIEludmFs
aWRQYXJhbWV0ZXJOYW1lLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICMgVGVzdCBzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3ZlcgorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChG
YWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIiwgTm9uZSldLAorICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwg
MTUsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
KFRydWUsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAg
ICAgICAgICBbKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwKKyAgICAgICAg
ICAgICAgICAoRmFsc2UsIFRydWUsIDE1LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgIChUcnVlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAg
ICAgICAgICAgWygic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKV0sCisgICAgICAg
ICAgICAgICAgWygic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKV0sCisgICAgICAg
ICAgICAgICAgKEZhbHNlLCBUcnVlLCAxNSwgMTUpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICgKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAg
ICAgICAgICAgIFsoInNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSldICogMiwKKyAg
ICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgIER1cGxpY2F0ZVBhcmFtZXRlciwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIEZh
bHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbm9fY29udGV4dF90
YWtlb3ZlciIsICI0MiIpXSwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAg
IEludmFsaWRQYXJhbWV0ZXJWYWx1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAjIFRl
c3QgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIKKyAgICAgICAgICAgICgKKyAgICAgICAgICAg
ICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJjbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICBbKCJjbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSwgICMgZG9lc24ndCBtYXR0ZXIKKyAgICAg
ICAgICAgICAgICAoVHJ1ZSwgRmFsc2UsIDE1LCAxNSksCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9uZSksCisgICAg
ICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgWygiY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXIiLCBOb25lKV0sCisgICAgICAgICAgICAgICAgKFRydWUsIEZhbHNlLCAxNSwgMTUpLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIFRy
dWUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyIiwgTm9uZSldLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyIiwgTm9uZSldLCAgIyBkb2Vzbid0IG1hdHRlcgorICAgICAgICAgICAgICAgIChUcnVl
LCBGYWxzZSwgMTUsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAg
ICAgICAgICAgKEZhbHNlLCBUcnVlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJj
bGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpXSAqIDIsCisgICAgICAgICAgICAgICAg
Tm9uZSwKKyAgICAgICAgICAgICAgICBEdXBsaWNhdGVQYXJhbWV0ZXIsCisgICAgICAgICAgICAp
LAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgTm9uZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIiLCAiNDIi
KV0sCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1l
dGVyVmFsdWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBUZXN0IHNlcnZlcl9tYXhf
d2luZG93X2JpdHMKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNl
LCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
IiwgIjciKV0sCisgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBOZWdvdGlh
dGlvbkVycm9yLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJf
bWF4X3dpbmRvd19iaXRzIiwgIjEwIildLAorICAgICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhf
d2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTUs
IDEwKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZh
bHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgWygic2VydmVyX21heF93
aW5kb3dfYml0cyIsICIxNiIpXSwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAg
ICAgIE5lZ290aWF0aW9uRXJyb3IsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEyLCBOb25lKSwKKyAgICAgICAgICAgICAgICBb
XSwKKyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIildLAor
ICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDE1LCAxMiksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEyLCBOb25lKSwK
KyAgICAgICAgICAgICAgICBbKCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEwIildLAorICAg
ICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAg
ICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTUsIDEwKSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTIsIE5vbmUpLAorICAgICAg
ICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTIiKV0sCisgICAgICAgICAg
ICAgICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMiIpXSwKKyAgICAgICAgICAgICAg
ICAoRmFsc2UsIEZhbHNlLCAxNSwgMTIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMiwgTm9uZSksCisgICAgICAgICAgICAg
ICAgWygic2VydmVyX21heF93aW5kb3dfYml0cyIsICIxMyIpXSwKKyAgICAgICAgICAgICAgICBb
KCJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIildLAorICAgICAgICAgICAgICAgIChGYWxz
ZSwgRmFsc2UsIDE1LCAxMiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAg
ICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEyLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbKCJz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIiwgIjEyIildICogMiwKKyAgICAgICAgICAgICAgICBOb25l
LAorICAgICAgICAgICAgICAgIER1cGxpY2F0ZVBhcmFtZXRlciwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgMTIsIE5vbmUpLAor
ICAgICAgICAgICAgICAgIFsoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiNDIiKV0sCisgICAg
ICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUs
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBUZXN0IGNsaWVudF9tYXhfd2luZG93X2Jp
dHMKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCBO
b25lKSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgTm9uZSld
LAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDE1
LCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChG
YWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhf
d2luZG93X2JpdHMiLCAiNyIpXSwKKyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAg
ICAgIEludmFsaWRQYXJhbWV0ZXJWYWx1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAg
ICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICIxMCIpXSwKKyAgICAgICAgICAgICAg
ICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEwIildLCAgIyBkb2Vzbid0IG1hdHRlcgor
ICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIDEwLCAxNSksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIE5vbmUp
LAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTYiKV0sCisg
ICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFs
dWUsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKChGYWxzZSwgRmFsc2UsIE5vbmUsIDEy
KSwgW10sIE5vbmUsIE5lZ290aWF0aW9uRXJyb3IpLAorICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIDEyKSwKKyAgICAgICAgICAgICAgICBbKCJjbGll
bnRfbWF4X3dpbmRvd19iaXRzIiwgTm9uZSldLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9t
YXhfd2luZG93X2JpdHMiLCAiMTIiKV0sCisgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwg
MTIsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
KEZhbHNlLCBGYWxzZSwgTm9uZSwgMTIpLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhf
d2luZG93X2JpdHMiLCAiMTAiKV0sCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5k
b3dfYml0cyIsICIxMCIpXSwKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCAxMCwgMTUp
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2Us
IEZhbHNlLCBOb25lLCAxMiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3df
Yml0cyIsICIxMiIpXSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRz
IiwgIjEyIildLCAgIyBkb2Vzbid0IG1hdHRlcgorICAgICAgICAgICAgICAgIChGYWxzZSwgRmFs
c2UsIDEyLCAxNSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAg
ICAgIChGYWxzZSwgRmFsc2UsIE5vbmUsIDEyKSwKKyAgICAgICAgICAgICAgICBbKCJjbGllbnRf
bWF4X3dpbmRvd19iaXRzIiwgIjEzIildLAorICAgICAgICAgICAgICAgIFsoImNsaWVudF9tYXhf
d2luZG93X2JpdHMiLCAiMTIiKV0sICAjIGRvZXNuJ3QgbWF0dGVyCisgICAgICAgICAgICAgICAg
KEZhbHNlLCBGYWxzZSwgMTIsIDE1KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisg
ICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgTm9uZSwgMTIpLAorICAgICAgICAgICAgICAg
IFsoImNsaWVudF9tYXhfd2luZG93X2JpdHMiLCAiMTIiKV0gKiAyLAorICAgICAgICAgICAgICAg
IE5vbmUsCisgICAgICAgICAgICAgICAgRHVwbGljYXRlUGFyYW1ldGVyLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBOb25lLCAx
MiksCisgICAgICAgICAgICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsICI0MiIpXSwK
KyAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJW
YWx1ZSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAjICMgVGVzdCBhbGwgcGFyYW1ldGVy
cyB0b2dldGhlcgorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIChUcnVlLCBUcnVlLCAx
MiwgMTIpLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICgic2Vy
dmVyX21heF93aW5kb3dfYml0cyIsICIxMCIpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVu
dF9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgKCJzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zl
ciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyIiwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICgic2VydmVyX21heF93aW5kb3dfYml0
cyIsICIxMCIpLAorICAgICAgICAgICAgICAgICAgICAoImNsaWVudF9tYXhfd2luZG93X2JpdHMi
LCAiMTAiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIChUcnVlLCBUcnVl
LCAxMCwgMTApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAoRmFsc2UsIEZhbHNlLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICgic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAg
ICAgICAgICAgICAgICAgKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAg
ICAgICAgICAgICAgICAgICAoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwKKyAgICAg
ICAgICAgICAgICAgICAgKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEwIiksCisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICgic2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJj
bGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAo
InNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKSwKKyAgICAgICAgICAgICAgICAgICAgKCJj
bGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEwIiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTAsIDEwKSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgKFRydWUsIFRydWUsIDEyLCAxMiksCisgICAgICAgICAg
ICAgICAgWygiY2xpZW50X21heF93aW5kb3dfYml0cyIsIE5vbmUpXSwKKyAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICgic2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIiLCBO
b25lKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciIs
IE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAi
MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgIjEy
IiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSwgMTIs
IDEyKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYu
c3ViVGVzdCgKKyAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLAorICAgICAgICAgICAgICAg
IHJlcXVlc3RfcGFyYW1zPXJlcXVlc3RfcGFyYW1zLAorICAgICAgICAgICAgICAgIHJlc3BvbnNl
X3BhcmFtcz1yZXNwb25zZV9wYXJhbXMsCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAg
IGZhY3RvcnkgPSBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoKmNvbmZpZykKKyAgICAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgdHlwZSkgYW5kIGlzc3ViY2xhc3MocmVz
dWx0LCBFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKHJlc3VsdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3J5LnByb2Nlc3NfcmVx
dWVzdF9wYXJhbXMocmVxdWVzdF9wYXJhbXMsIFtdKQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcywgZXh0ZW5zaW9uID0gZmFjdG9yeS5wcm9jZXNzX3Jl
cXVlc3RfcGFyYW1zKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9wYXJhbXMsIFtd
CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYXJhbXMsIHJlc3BvbnNlX3BhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQgPSBQZXJNZXNzYWdlRGVmbGF0ZSgqcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEV4dGVuc2lvbkVxdWFsKGV4dGVuc2lvbiwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVz
dF9wcm9jZXNzX3Jlc3BvbnNlX3BhcmFtc19kZWR1cGxpY2F0aW9uKHNlbGYpOgorICAgICAgICBm
YWN0b3J5ID0gU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KEZhbHNlLCBGYWxzZSwgTm9u
ZSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOZWdvdGlhdGlvbkVycm9y
KToKKyAgICAgICAgICAgIGZhY3RvcnkucHJvY2Vzc19yZXF1ZXN0X3BhcmFtcygKKyAgICAgICAg
ICAgICAgICBbXSwgW1Blck1lc3NhZ2VEZWZsYXRlKEZhbHNlLCBGYWxzZSwgMTUsIDE1KV0KKyAg
ICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2F1dGgu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9hdXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTdhNDQ4NWEwZmYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfYXV0aC5weQpAQCAtMCwwICsxLDEzOSBAQAoraW1w
b3J0IHVuaXR0ZXN0CitpbXBvcnQgdXJsbGliLmVycm9yCisKK2Zyb20gd2Vic29ja2V0cy5hdXRo
IGltcG9ydCAqCitmcm9tIHdlYnNvY2tldHMuYXV0aCBpbXBvcnQgaXNfY3JlZGVudGlhbHMKK2Zy
b20gd2Vic29ja2V0cy5leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkU3RhdHVzQ29kZQorZnJvbSB3
ZWJzb2NrZXRzLmhlYWRlcnMgaW1wb3J0IGJ1aWxkX2F1dGhvcml6YXRpb25fYmFzaWMKKworZnJv
bSAudGVzdF9jbGllbnRfc2VydmVyIGltcG9ydCBDbGllbnRTZXJ2ZXJUZXN0c01peGluLCB3aXRo
X2NsaWVudCwgd2l0aF9zZXJ2ZXIKK2Zyb20gLnV0aWxzIGltcG9ydCBBc3luY2lvVGVzdENhc2UK
KworCitjbGFzcyBBdXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2lz
X2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY3JlZGVudGlh
bHMoKCJ1c2VybmFtZSIsICJwYXNzd29yZCIpKSkKKworICAgIGRlZiB0ZXN0X2lzX25vdF9jcmVk
ZW50aWFscyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jcmVkZW50aWFscyhO
b25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jcmVkZW50aWFscygidXNlcm5hbWUi
KSkKKworCitjbGFzcyBBdXRoQ2xpZW50U2VydmVyVGVzdHMoQ2xpZW50U2VydmVyVGVzdHNNaXhp
biwgQXN5bmNpb1Rlc3RDYXNlKToKKworICAgIGNyZWF0ZV9wcm90b2NvbCA9IGJhc2ljX2F1dGhf
cHJvdG9jb2xfZmFjdG9yeSgKKyAgICAgICAgcmVhbG09ImF1dGgtdGVzdHMiLCBjcmVkZW50aWFs
cz0oImhlbGxvIiwgImlsb3ZleW91IikKKyAgICApCisKKyAgICBAd2l0aF9zZXJ2ZXIoY3JlYXRl
X3Byb3RvY29sPWNyZWF0ZV9wcm90b2NvbCkKKyAgICBAd2l0aF9jbGllbnQodXNlcl9pbmZvPSgi
aGVsbG8iLCAiaWxvdmV5b3UiKSkKKyAgICBkZWYgdGVzdF9iYXNpY19hdXRoKHNlbGYpOgorICAg
ICAgICByZXFfaGVhZGVycyA9IHNlbGYuY2xpZW50LnJlcXVlc3RfaGVhZGVycworICAgICAgICBy
ZXNwX2hlYWRlcnMgPSBzZWxmLmNsaWVudC5yZXNwb25zZV9oZWFkZXJzCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVxX2hlYWRlcnNbIkF1dGhvcml6YXRpb24iXSwgIkJhc2ljIGFHVnNiRzg2
YVd4dmRtVjViM1U9IikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiV1dXLUF1dGhlbnRpY2F0
ZSIsIHJlc3BfaGVhZGVycykKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRl
KHNlbGYuY2xpZW50LnNlbmQoIkhlbGxvISIpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhf
c2VydmVyX25vX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFR5cGVFcnJvcikgYXMgcmFpc2VkOgorICAgICAgICAgICAgYmFzaWNfYXV0aF9wcm90b2Nv
bF9mYWN0b3J5KHJlYWxtPSJhdXRoLXRlc3RzIiwgY3JlZGVudGlhbHM9Tm9uZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihyYWlzZWQuZXhjZXB0aW9uKSwgInBy
b3ZpZGUgZWl0aGVyIGNyZWRlbnRpYWxzIG9yIGNoZWNrX2NyZWRlbnRpYWxzIgorICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9iYXNpY19hdXRoX3NlcnZlcl9iYWRfY3JlZGVudGlhbHMoc2VsZik6
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyByYWlzZWQ6Cisg
ICAgICAgICAgICBiYXNpY19hdXRoX3Byb3RvY29sX2ZhY3RvcnkocmVhbG09ImF1dGgtdGVzdHMi
LCBjcmVkZW50aWFscz00MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmFpc2VkLmV4
Y2VwdGlvbiksICJpbnZhbGlkIGNyZWRlbnRpYWxzIGFyZ3VtZW50OiA0MiIpCisKKyAgICBjcmVh
dGVfcHJvdG9jb2xfbXVsdGlwbGVfY3JlZGVudGlhbHMgPSBiYXNpY19hdXRoX3Byb3RvY29sX2Zh
Y3RvcnkoCisgICAgICAgIHJlYWxtPSJhdXRoLXRlc3RzIiwKKyAgICAgICAgY3JlZGVudGlhbHM9
WygiaGVsbG8iLCAiaWxvdmV5b3UiKSwgKCJnb29kYnllIiwgInN0aWxsbG92ZXUiKV0sCisgICAg
KQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJvdG9jb2xfbXVs
dGlwbGVfY3JlZGVudGlhbHMpCisgICAgQHdpdGhfY2xpZW50KHVzZXJfaW5mbz0oImhlbGxvIiwg
Imlsb3ZleW91IikpCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9zZXJ2ZXJfbXVsdGlwbGVfY3Jl
ZGVudGlhbHMoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2Vs
Zi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9iYWRf
bXVsdGlwbGVfY3JlZGVudGlhbHMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoVHlwZUVycm9yKSBhcyByYWlzZWQ6CisgICAgICAgICAgICBiYXNpY19hdXRoX3Byb3RvY29s
X2ZhY3RvcnkoCisgICAgICAgICAgICAgICAgcmVhbG09ImF1dGgtdGVzdHMiLCBjcmVkZW50aWFs
cz1bKCJoZWxsbyIsICJpbG92ZXlvdSIpLCA0Ml0KKyAgICAgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihyYWlzZWQuZXhjZXB0aW9uKSwKKyAgICAg
ICAgICAgICJpbnZhbGlkIGNyZWRlbnRpYWxzIGFyZ3VtZW50OiBbKCdoZWxsbycsICdpbG92ZXlv
dScpLCA0Ml0iLAorICAgICAgICApCisKKyAgICBhc3luYyBkZWYgY2hlY2tfY3JlZGVudGlhbHMo
dXNlcm5hbWUsIHBhc3N3b3JkKToKKyAgICAgICAgcmV0dXJuIHBhc3N3b3JkID09ICJpbG92ZXlv
dSIKKworICAgIGNyZWF0ZV9wcm90b2NvbF9jaGVja19jcmVkZW50aWFscyA9IGJhc2ljX2F1dGhf
cHJvdG9jb2xfZmFjdG9yeSgKKyAgICAgICAgcmVhbG09ImF1dGgtdGVzdHMiLCBjaGVja19jcmVk
ZW50aWFscz1jaGVja19jcmVkZW50aWFscworICAgICkKKworICAgIEB3aXRoX3NlcnZlcihjcmVh
dGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sX2NoZWNrX2NyZWRlbnRpYWxzKQorICAgIEB3aXRo
X2NsaWVudCh1c2VyX2luZm89KCJoZWxsbyIsICJpbG92ZXlvdSIpKQorICAgIGRlZiB0ZXN0X2Jh
c2ljX2F1dGhfY2hlY2tfY3JlZGVudGlhbHMoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorCisgICAgQHdpdGhf
c2VydmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJvdG9jb2wpCisgICAgZGVmIHRlc3RfYmFz
aWNfYXV0aF9taXNzaW5nX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRTdGF0dXNDb2RlKSBhcyByYWlzZWQ6CisgICAgICAgICAgICBzZWxm
LnN0YXJ0X2NsaWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlv
bi5zdGF0dXNfY29kZSwgNDAxKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1j
cmVhdGVfcHJvdG9jb2wpCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9taXNzaW5nX2NyZWRlbnRp
YWxzX2RldGFpbHMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGli
LmVycm9yLkhUVFBFcnJvcikgYXMgcmFpc2VkOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLm1ha2VfaHR0cF9yZXF1ZXN0KCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5jb2RlLCA0MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICByYWlzZWQuZXhjZXB0aW9uLmhlYWRlcnNbIldXVy1BdXRoZW50
aWNhdGUiXSwKKyAgICAgICAgICAgICdCYXNpYyByZWFsbT0iYXV0aC10ZXN0cyIsIGNoYXJzZXQ9
IlVURi04IicsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYWlzZWQuZXhj
ZXB0aW9uLnJlYWQoKS5kZWNvZGUoKSwgIk1pc3NpbmcgY3JlZGVudGlhbHNcbiIpCisKKyAgICBA
d2l0aF9zZXJ2ZXIoY3JlYXRlX3Byb3RvY29sPWNyZWF0ZV9wcm90b2NvbCkKKyAgICBkZWYgdGVz
dF9iYXNpY19hdXRoX3Vuc3VwcG9ydGVkX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRTdGF0dXNDb2RlKSBhcyByYWlzZWQ6CisgICAgICAg
ICAgICBzZWxmLnN0YXJ0X2NsaWVudChleHRyYV9oZWFkZXJzPXsiQXV0aG9yaXphdGlvbiI6ICJE
aWdlc3QgLi4uIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5z
dGF0dXNfY29kZSwgNDAxKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVh
dGVfcHJvdG9jb2wpCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF91bnN1cHBvcnRlZF9jcmVkZW50
aWFsc19kZXRhaWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxp
Yi5lcnJvci5IVFRQRXJyb3IpIGFzIHJhaXNlZDoKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoCisgICAgICAgICAgICAgICAgc2VsZi5tYWtlX2h0dHBfcmVxdWVzdCho
ZWFkZXJzPXsiQXV0aG9yaXphdGlvbiI6ICJEaWdlc3QgLi4uIn0pCisgICAgICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5jb2RlLCA0MDEpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByYWlzZWQuZXhjZXB0aW9uLmhlYWRl
cnNbIldXVy1BdXRoZW50aWNhdGUiXSwKKyAgICAgICAgICAgICdCYXNpYyByZWFsbT0iYXV0aC10
ZXN0cyIsIGNoYXJzZXQ9IlVURi04IicsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyYWlzZWQuZXhjZXB0aW9uLnJlYWQoKS5kZWNvZGUoKSwgIlVuc3VwcG9ydGVkIGNyZWRl
bnRpYWxzXG4iKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJv
dG9jb2wpCisgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9pbnZhbGlkX2NyZWRlbnRpYWxzKHNlbGYp
OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRTdGF0dXNDb2RlKSBhcyBy
YWlzZWQ6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCh1c2VyX2luZm89KCJoZWxsbyIs
ICJpaGF0ZXlvdSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24u
c3RhdHVzX2NvZGUsIDQwMSkKKworICAgIEB3aXRoX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3Jl
YXRlX3Byb3RvY29sKQorICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfaW52YWxpZF9jcmVkZW50aWFs
c19kZXRhaWxzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5l
cnJvci5IVFRQRXJyb3IpIGFzIHJhaXNlZDoKKyAgICAgICAgICAgIGF1dGhvcml6YXRpb24gPSBi
dWlsZF9hdXRob3JpemF0aW9uX2Jhc2ljKCJoZWxsbyIsICJpaGF0ZXlvdSIpCisgICAgICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgICAgIHNlbGYubWFr
ZV9odHRwX3JlcXVlc3QoaGVhZGVycz17IkF1dGhvcml6YXRpb24iOiBhdXRob3JpemF0aW9ufSkK
KyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYWlzZWQuZXhjZXB0aW9u
LmNvZGUsIDQwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJhaXNl
ZC5leGNlcHRpb24uaGVhZGVyc1siV1dXLUF1dGhlbnRpY2F0ZSJdLAorICAgICAgICAgICAgJ0Jh
c2ljIHJlYWxtPSJhdXRoLXRlc3RzIiwgY2hhcnNldD0iVVRGLTgiJywKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24ucmVhZCgpLmRlY29kZSgpLCAi
SW52YWxpZCBjcmVkZW50aWFsc1xuIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0
cy90ZXN0X2NsaWVudF9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9jbGll
bnRfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzU5
MTM2NjZjNTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3Rf
Y2xpZW50X3NlcnZlci5weQpAQCAtMCwwICsxLDE1NDYgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBv
cnQgY29udGV4dGxpYgoraW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGh0dHAKK2ltcG9ydCBwYXRo
bGliCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitpbXBvcnQgdGVt
cGZpbGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2ltcG9ydCB1cmxs
aWIuZXJyb3IKK2ltcG9ydCB1cmxsaWIucmVxdWVzdAoraW1wb3J0IHdhcm5pbmdzCisKK2Zyb20g
d2Vic29ja2V0cy5jbGllbnQgaW1wb3J0ICoKK2Zyb20gd2Vic29ja2V0cy5leGNlcHRpb25zIGlt
cG9ydCAoCisgICAgQ29ubmVjdGlvbkNsb3NlZCwKKyAgICBJbnZhbGlkSGFuZHNoYWtlLAorICAg
IEludmFsaWRIZWFkZXIsCisgICAgSW52YWxpZFN0YXR1c0NvZGUsCisgICAgTmVnb3RpYXRpb25F
cnJvciwKKykKK2Zyb20gd2Vic29ja2V0cy5leHRlbnNpb25zLnBlcm1lc3NhZ2VfZGVmbGF0ZSBp
bXBvcnQgKAorICAgIENsaWVudFBlck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSwKKyAgICBQZXJNZXNz
YWdlRGVmbGF0ZSwKKyAgICBTZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnksCispCitmcm9t
IHdlYnNvY2tldHMuaGFuZHNoYWtlIGltcG9ydCBidWlsZF9yZXNwb25zZQorZnJvbSB3ZWJzb2Nr
ZXRzLmh0dHAgaW1wb3J0IFVTRVJfQUdFTlQsIEhlYWRlcnMsIHJlYWRfcmVzcG9uc2UKK2Zyb20g
d2Vic29ja2V0cy5wcm90b2NvbCBpbXBvcnQgU3RhdGUKK2Zyb20gd2Vic29ja2V0cy5zZXJ2ZXIg
aW1wb3J0ICoKK2Zyb20gd2Vic29ja2V0cy51cmkgaW1wb3J0IHBhcnNlX3VyaQorCitmcm9tIC50
ZXN0X3Byb3RvY29sIGltcG9ydCBNUworZnJvbSAudXRpbHMgaW1wb3J0IEFzeW5jaW9UZXN0Q2Fz
ZQorCisKKyMgR2VuZXJhdGUgVExTIGNlcnRpZmljYXRlIHdpdGg6CisjICQgb3BlbnNzbCByZXEg
LXg1MDkgLWNvbmZpZyB0ZXN0X2xvY2FsaG9zdC5jbmYgLWRheXMgMTUzNDAgLW5ld2tleSByc2E6
MjA0OCBcCisjICAgICAgIC1vdXQgdGVzdF9sb2NhbGhvc3QuY3J0IC1rZXlvdXQgdGVzdF9sb2Nh
bGhvc3Qua2V5CisjICQgY2F0IHRlc3RfbG9jYWxob3N0LmtleSB0ZXN0X2xvY2FsaG9zdC5jcnQg
PiB0ZXN0X2xvY2FsaG9zdC5wZW0KKyMgJCBybSB0ZXN0X2xvY2FsaG9zdC5rZXkgdGVzdF9sb2Nh
bGhvc3QuY3J0CisKK3Rlc3RjZXJ0ID0gYnl0ZXMocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS53aXRo
X25hbWUoInRlc3RfbG9jYWxob3N0LnBlbSIpKQorCisKK2FzeW5jIGRlZiBoYW5kbGVyKHdzLCBw
YXRoKToKKyAgICBpZiBwYXRoID09ICIvZGVwcmVjYXRlZF9hdHRyaWJ1dGVzIjoKKyAgICAgICAg
YXdhaXQgd3MucmVjdigpICAjIGRlbGF5IHRoYXQgYWxsb3dzIGNhdGNoaW5nIHdhcm5pbmdzCisg
ICAgICAgIGF3YWl0IHdzLnNlbmQocmVwcigod3MuaG9zdCwgd3MucG9ydCwgd3Muc2VjdXJlKSkp
CisgICAgZWxpZiBwYXRoID09ICIvY2xvc2VfdGltZW91dCI6CisgICAgICAgIGF3YWl0IHdzLnNl
bmQocmVwcih3cy5jbG9zZV90aW1lb3V0KSkKKyAgICBlbGlmIHBhdGggPT0gIi9wYXRoIjoKKyAg
ICAgICAgYXdhaXQgd3Muc2VuZChzdHIod3MucGF0aCkpCisgICAgZWxpZiBwYXRoID09ICIvaGVh
ZGVycyI6CisgICAgICAgIGF3YWl0IHdzLnNlbmQocmVwcih3cy5yZXF1ZXN0X2hlYWRlcnMpKQor
ICAgICAgICBhd2FpdCB3cy5zZW5kKHJlcHIod3MucmVzcG9uc2VfaGVhZGVycykpCisgICAgZWxp
ZiBwYXRoID09ICIvZXh0ZW5zaW9ucyI6CisgICAgICAgIGF3YWl0IHdzLnNlbmQocmVwcih3cy5l
eHRlbnNpb25zKSkKKyAgICBlbGlmIHBhdGggPT0gIi9zdWJwcm90b2NvbCI6CisgICAgICAgIGF3
YWl0IHdzLnNlbmQocmVwcih3cy5zdWJwcm90b2NvbCkpCisgICAgZWxpZiBwYXRoID09ICIvc2xv
d19zdG9wIjoKKyAgICAgICAgYXdhaXQgd3Mud2FpdF9jbG9zZWQoKQorICAgICAgICBhd2FpdCBh
c3luY2lvLnNsZWVwKDIgKiBNUykKKyAgICBlbHNlOgorICAgICAgICBhd2FpdCB3cy5zZW5kKChh
d2FpdCB3cy5yZWN2KCkpKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgdGVt
cF90ZXN0X3NlcnZlcih0ZXN0LCAqKmt3YXJncyk6CisgICAgdGVzdC5zdGFydF9zZXJ2ZXIoKipr
d2FyZ3MpCisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHRl
c3Quc3RvcF9zZXJ2ZXIoKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgdGVt
cF90ZXN0X3JlZGlyZWN0aW5nX3NlcnZlcigKKyAgICB0ZXN0LCBzdGF0dXMsIGluY2x1ZGVfbG9j
YXRpb249VHJ1ZSwgZm9yY2VfaW5zZWN1cmU9RmFsc2UKKyk6CisgICAgdGVzdC5zdGFydF9yZWRp
cmVjdGluZ19zZXJ2ZXIoc3RhdHVzLCBpbmNsdWRlX2xvY2F0aW9uLCBmb3JjZV9pbnNlY3VyZSkK
KyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgdGVzdC5zdG9w
X3JlZGlyZWN0aW5nX3NlcnZlcigpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2Rl
ZiB0ZW1wX3Rlc3RfY2xpZW50KHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgdGVzdC5zdGFy
dF9jbGllbnQoKmFyZ3MsICoqa3dhcmdzKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBm
aW5hbGx5OgorICAgICAgICB0ZXN0LnN0b3BfY2xpZW50KCkKKworCitkZWYgd2l0aF9tYW5hZ2Vy
KG1hbmFnZXIsICphcmdzLCAqKmt3YXJncyk6CisgICAgIiIiCisgICAgUmV0dXJuIGEgZGVjb3Jh
dG9yIHRoYXQgd3JhcHMgYSBmdW5jdGlvbiB3aXRoIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAg
IiIiCisKKyAgICBkZWYgZGVjb3JhdGUoZnVuYyk6CisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMo
ZnVuYykKKyAgICAgICAgZGVmIF9kZWNvcmF0ZShzZWxmLCAqX2FyZ3MsICoqX2t3YXJncyk6Cisg
ICAgICAgICAgICB3aXRoIG1hbmFnZXIoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuYyhzZWxmLCAqX2FyZ3MsICoqX2t3YXJncykKKworICAgICAgICBy
ZXR1cm4gX2RlY29yYXRlCisKKyAgICByZXR1cm4gZGVjb3JhdGUKKworCitkZWYgd2l0aF9zZXJ2
ZXIoKiprd2FyZ3MpOgorICAgICIiIgorICAgIFJldHVybiBhIGRlY29yYXRvciBmb3IgVGVzdENh
c2UgbWV0aG9kcyB0aGF0IHN0YXJ0cyBhbmQgc3RvcHMgYSBzZXJ2ZXIuCisKKyAgICAiIiIKKyAg
ICByZXR1cm4gd2l0aF9tYW5hZ2VyKHRlbXBfdGVzdF9zZXJ2ZXIsICoqa3dhcmdzKQorCisKK2Rl
ZiB3aXRoX2NsaWVudCgqYXJncywgKiprd2FyZ3MpOgorICAgICIiIgorICAgIFJldHVybiBhIGRl
Y29yYXRvciBmb3IgVGVzdENhc2UgbWV0aG9kcyB0aGF0IHN0YXJ0cyBhbmQgc3RvcHMgYSBjbGll
bnQuCisKKyAgICAiIiIKKyAgICByZXR1cm4gd2l0aF9tYW5hZ2VyKHRlbXBfdGVzdF9jbGllbnQs
ICphcmdzLCAqKmt3YXJncykKKworCitkZWYgZ2V0X3NlcnZlcl91cmkoc2VydmVyLCBzZWN1cmU9
RmFsc2UsIHJlc291cmNlX25hbWU9Ii8iLCB1c2VyX2luZm89Tm9uZSk6CisgICAgIiIiCisgICAg
UmV0dXJuIGEgV2ViU29ja2V0IFVSSSBmb3IgY29ubmVjdGluZyB0byB0aGUgZ2l2ZW4gc2VydmVy
LgorCisgICAgIiIiCisgICAgcHJvdG8gPSAid3NzIiBpZiBzZWN1cmUgZWxzZSAid3MiCisKKyAg
ICB1c2VyX2luZm8gPSAiOiIuam9pbih1c2VyX2luZm8pICsgIkAiIGlmIHVzZXJfaW5mbyBlbHNl
ICIiCisKKyAgICAjIFBpY2sgYSByYW5kb20gc29ja2V0IGluIG9yZGVyIHRvIHRlc3QgYm90aCBJ
UHY0IGFuZCBJUHY2IG9uIHN5c3RlbXMKKyAgICAjIHdoZXJlIGJvdGggYXJlIGF2YWlsYWJsZS4g
UmFuZG9taXppbmcgdGVzdHMgaXMgdXN1YWxseSBhIGJhZCBpZGVhLiBJZgorICAgICMgbmVlZGVk
LCBlaXRoZXIgdXNlIHRoZSBmaXJzdCBzb2NrZXQsIG9yIHRlc3Qgc2VwYXJhdGVseSBJUHY0IGFu
ZCBJUHY2LgorICAgIHNlcnZlcl9zb2NrZXQgPSByYW5kb20uY2hvaWNlKHNlcnZlci5zb2NrZXRz
KQorCisgICAgaWYgc2VydmVyX3NvY2tldC5mYW1pbHkgPT0gc29ja2V0LkFGX0lORVQ2OiAgIyBw
cmFnbWE6IG5vIGNvdmVyCisgICAgICAgIGhvc3QsIHBvcnQgPSBzZXJ2ZXJfc29ja2V0LmdldHNv
Y2tuYW1lKClbOjJdICAjIChubyBJUHY2IG9uIENJKQorICAgICAgICBob3N0ID0gZiJbe2hvc3R9
XSIKKyAgICBlbGlmIHNlcnZlcl9zb2NrZXQuZmFtaWx5ID09IHNvY2tldC5BRl9JTkVUOgorICAg
ICAgICBob3N0LCBwb3J0ID0gc2VydmVyX3NvY2tldC5nZXRzb2NrbmFtZSgpCisgICAgZWxzZTog
ICMgcHJhZ21hOiBubyBjb3ZlcgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJleHBlY3RlZCBh
biBJUHY2LCBJUHY0LCBvciBVbml4IHNvY2tldCIpCisKKyAgICByZXR1cm4gZiJ7cHJvdG99Oi8v
e3VzZXJfaW5mb317aG9zdH06e3BvcnR9e3Jlc291cmNlX25hbWV9IgorCisKK2NsYXNzIFVuYXV0
aG9yaXplZFNlcnZlclByb3RvY29sKFdlYlNvY2tldFNlcnZlclByb3RvY29sKToKKyAgICBhc3lu
YyBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHBhdGgsIHJlcXVlc3RfaGVhZGVycyk6CisgICAg
ICAgICMgVGVzdCByZXR1cm5pbmcgaGVhZGVycyBhcyBhIEhlYWRlcnMgaW5zdGFuY2UgKDEvMykK
KyAgICAgICAgcmV0dXJuIGh0dHAuSFRUUFN0YXR1cy5VTkFVVEhPUklaRUQsIEhlYWRlcnMoWygi
WC1BY2Nlc3MiLCAiZGVuaWVkIildKSwgYiIiCisKKworY2xhc3MgRm9yYmlkZGVuU2VydmVyUHJv
dG9jb2woV2ViU29ja2V0U2VydmVyUHJvdG9jb2wpOgorICAgIGFzeW5jIGRlZiBwcm9jZXNzX3Jl
cXVlc3Qoc2VsZiwgcGF0aCwgcmVxdWVzdF9oZWFkZXJzKToKKyAgICAgICAgIyBUZXN0IHJldHVy
bmluZyBoZWFkZXJzIGFzIGEgZGljdCAoMi8zKQorICAgICAgICByZXR1cm4gaHR0cC5IVFRQU3Rh
dHVzLkZPUkJJRERFTiwgeyJYLUFjY2VzcyI6ICJkZW5pZWQifSwgYiIiCisKKworY2xhc3MgSGVh
bHRoQ2hlY2tTZXJ2ZXJQcm90b2NvbChXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbCk6CisgICAgYXN5
bmMgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCBwYXRoLCByZXF1ZXN0X2hlYWRlcnMpOgorICAg
ICAgICAjIFRlc3QgcmV0dXJuaW5nIGhlYWRlcnMgYXMgYSBsaXN0IG9mIHBhaXJzICgzLzMpCisg
ICAgICAgIGlmIHBhdGggPT0gIi9fX2hlYWx0aF9fLyI6CisgICAgICAgICAgICByZXR1cm4gaHR0
cC5IVFRQU3RhdHVzLk9LLCBbKCJYLUFjY2VzcyIsICJPSyIpXSwgYiJzdGF0dXMgPSBncmVlblxu
IgorCisKK2NsYXNzIFNsb3dPcGVuaW5nSGFuZHNoYWtlUHJvdG9jb2woV2ViU29ja2V0U2VydmVy
UHJvdG9jb2wpOgorICAgIGFzeW5jIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcGF0aCwgcmVx
dWVzdF9oZWFkZXJzKToKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxMCAqIE1TKQorCisK
K2NsYXNzIEZvb0NsaWVudFByb3RvY29sKFdlYlNvY2tldENsaWVudFByb3RvY29sKToKKyAgICBw
YXNzCisKKworY2xhc3MgQmFyQ2xpZW50UHJvdG9jb2woV2ViU29ja2V0Q2xpZW50UHJvdG9jb2wp
OgorICAgIHBhc3MKKworCitjbGFzcyBDbGllbnROb09wRXh0ZW5zaW9uRmFjdG9yeToKKyAgICBu
YW1lID0gIngtbm8tb3AiCisKKyAgICBkZWYgZ2V0X3JlcXVlc3RfcGFyYW1zKHNlbGYpOgorICAg
ICAgICByZXR1cm4gW10KKworICAgIGRlZiBwcm9jZXNzX3Jlc3BvbnNlX3BhcmFtcyhzZWxmLCBw
YXJhbXMsIGFjY2VwdGVkX2V4dGVuc2lvbnMpOgorICAgICAgICBpZiBwYXJhbXM6CisgICAgICAg
ICAgICByYWlzZSBOZWdvdGlhdGlvbkVycm9yKCkKKyAgICAgICAgcmV0dXJuIE5vT3BFeHRlbnNp
b24oKQorCisKK2NsYXNzIFNlcnZlck5vT3BFeHRlbnNpb25GYWN0b3J5OgorICAgIG5hbWUgPSAi
eC1uby1vcCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJhbXM9Tm9uZSk6CisgICAgICAg
IHNlbGYucGFyYW1zID0gcGFyYW1zIG9yIFtdCisKKyAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0X3Bh
cmFtcyhzZWxmLCBwYXJhbXMsIGFjY2VwdGVkX2V4dGVuc2lvbnMpOgorICAgICAgICByZXR1cm4g
c2VsZi5wYXJhbXMsIE5vT3BFeHRlbnNpb24oKQorCisKK2NsYXNzIE5vT3BFeHRlbnNpb246Cisg
ICAgbmFtZSA9ICJ4LW5vLW9wIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gIk5vT3BFeHRlbnNpb24oKSIKKworICAgIGRlZiBkZWNvZGUoc2VsZiwgZnJhbWUsICos
IG1heF9zaXplPU5vbmUpOgorICAgICAgICByZXR1cm4gZnJhbWUKKworICAgIGRlZiBlbmNvZGUo
c2VsZiwgZnJhbWUpOgorICAgICAgICByZXR1cm4gZnJhbWUKKworCitjbGFzcyBDbGllbnRTZXJ2
ZXJUZXN0c01peGluOgorCisgICAgc2VjdXJlID0gRmFsc2UKKworICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQor
ICAgICAgICBzZWxmLnJlZGlyZWN0aW5nX3NlcnZlciA9IE5vbmUKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBzZXJ2ZXJfY29udGV4dChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
IGRlZiBzdGFydF9zZXJ2ZXIoc2VsZiwgZGVwcmVjYXRpb25fd2FybmluZ3M9Tm9uZSwgKiprd2Fy
Z3MpOgorICAgICAgICAjIERpc2FibGUgY29tcHJlc3Npb24gYnkgZGVmYXVsdCBpbiB0ZXN0cy4K
KyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoImNvbXByZXNzaW9uIiwgTm9uZSkKKyAgICAgICAg
IyBEaXNhYmxlIHBpbmdzIGJ5IGRlZmF1bHQgaW4gdGVzdHMuCisgICAgICAgIGt3YXJncy5zZXRk
ZWZhdWx0KCJwaW5nX2ludGVydmFsIiwgTm9uZSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNh
dGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByZWNvcmRlZF93YXJuaW5nczoKKyAgICAgICAg
ICAgIHN0YXJ0X3NlcnZlciA9IHNlcnZlKGhhbmRsZXIsICJsb2NhbGhvc3QiLCAwLCAqKmt3YXJn
cykKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShzdGFydF9zZXJ2ZXIpCisKKyAgICAgICAgZXhwZWN0ZWRfd2FybmluZ3MgPSBbXSBpZiBkZXBy
ZWNhdGlvbl93YXJuaW5ncyBpcyBOb25lIGVsc2UgZGVwcmVjYXRpb25fd2FybmluZ3MKKyAgICAg
ICAgc2VsZi5hc3NlcnREZXByZWNhdGlvbldhcm5pbmdzKHJlY29yZGVkX3dhcm5pbmdzLCBleHBl
Y3RlZF93YXJuaW5ncykKKworICAgIGRlZiBzdGFydF9yZWRpcmVjdGluZ19zZXJ2ZXIoCisgICAg
ICAgIHNlbGYsIHN0YXR1cywgaW5jbHVkZV9sb2NhdGlvbj1UcnVlLCBmb3JjZV9pbnNlY3VyZT1G
YWxzZQorICAgICk6CisgICAgICAgIGFzeW5jIGRlZiBwcm9jZXNzX3JlcXVlc3QocGF0aCwgaGVh
ZGVycyk6CisgICAgICAgICAgICBzZXJ2ZXJfdXJpID0gZ2V0X3NlcnZlcl91cmkoc2VsZi5zZXJ2
ZXIsIHNlbGYuc2VjdXJlLCBwYXRoKQorICAgICAgICAgICAgaWYgZm9yY2VfaW5zZWN1cmU6Cisg
ICAgICAgICAgICAgICAgc2VydmVyX3VyaSA9IHNlcnZlcl91cmkucmVwbGFjZSgid3NzOiIsICJ3
czoiKQorICAgICAgICAgICAgaGVhZGVycyA9IHsiTG9jYXRpb24iOiBzZXJ2ZXJfdXJpfSBpZiBp
bmNsdWRlX2xvY2F0aW9uIGVsc2UgW10KKyAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIGhlYWRl
cnMsIGIiIgorCisgICAgICAgIHN0YXJ0X3NlcnZlciA9IHNlcnZlKAorICAgICAgICAgICAgaGFu
ZGxlciwKKyAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgIGNvbXByZXNzaW9uPU5vbmUsCisgICAgICAgICAgICBwaW5nX2ludGVydmFsPU5vbmUsCisg
ICAgICAgICAgICBwcm9jZXNzX3JlcXVlc3Q9cHJvY2Vzc19yZXF1ZXN0LAorICAgICAgICAgICAg
c3NsPXNlbGYuc2VydmVyX2NvbnRleHQsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5yZWRpcmVj
dGluZ19zZXJ2ZXIgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0X3NlcnZlcikK
KworICAgIGRlZiBzdGFydF9jbGllbnQoCisgICAgICAgIHNlbGYsIHJlc291cmNlX25hbWU9Ii8i
LCB1c2VyX2luZm89Tm9uZSwgZGVwcmVjYXRpb25fd2FybmluZ3M9Tm9uZSwgKiprd2FyZ3MKKyAg
ICApOgorICAgICAgICAjIERpc2FibGUgY29tcHJlc3Npb24gYnkgZGVmYXVsdCBpbiB0ZXN0cy4K
KyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoImNvbXByZXNzaW9uIiwgTm9uZSkKKyAgICAgICAg
IyBEaXNhYmxlIHBpbmdzIGJ5IGRlZmF1bHQgaW4gdGVzdHMuCisgICAgICAgIGt3YXJncy5zZXRk
ZWZhdWx0KCJwaW5nX2ludGVydmFsIiwgTm9uZSkKKyAgICAgICAgc2VjdXJlID0ga3dhcmdzLmdl
dCgic3NsIikgaXMgbm90IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyX3Vy
aSA9IGt3YXJncy5wb3AoInVyaSIpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAg
ICAgIHNlcnZlciA9IHNlbGYucmVkaXJlY3Rpbmdfc2VydmVyIGlmIHNlbGYucmVkaXJlY3Rpbmdf
c2VydmVyIGVsc2Ugc2VsZi5zZXJ2ZXIKKyAgICAgICAgICAgIHNlcnZlcl91cmkgPSBnZXRfc2Vy
dmVyX3VyaShzZXJ2ZXIsIHNlY3VyZSwgcmVzb3VyY2VfbmFtZSwgdXNlcl9pbmZvKQorCisgICAg
ICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHJlY29yZGVk
X3dhcm5pbmdzOgorICAgICAgICAgICAgc3RhcnRfY2xpZW50ID0gY29ubmVjdChzZXJ2ZXJfdXJp
LCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuY2xpZW50ID0gc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzdGFydF9jbGllbnQpCisKKyAgICAgICAgZXhwZWN0ZWRfd2FybmluZ3MgPSBb
XSBpZiBkZXByZWNhdGlvbl93YXJuaW5ncyBpcyBOb25lIGVsc2UgZGVwcmVjYXRpb25fd2Fybmlu
Z3MKKyAgICAgICAgc2VsZi5hc3NlcnREZXByZWNhdGlvbldhcm5pbmdzKHJlY29yZGVkX3dhcm5p
bmdzLCBleHBlY3RlZF93YXJuaW5ncykKKworICAgIGRlZiBzdG9wX2NsaWVudChzZWxmKToKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAg
ICAgICAgICAgICAgICBhc3luY2lvLndhaXRfZm9yKHNlbGYuY2xpZW50LmNsb3NlX2Nvbm5lY3Rp
b25fdGFzaywgdGltZW91dD0xKQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgYXN5bmNp
by5UaW1lb3V0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICAgICAgICAgIHNlbGYuZmFp
bCgiQ2xpZW50IGZhaWxlZCB0byBzdG9wIikKKworICAgIGRlZiBzdG9wX3NlcnZlcihzZWxmKToK
KyAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgICAgIGFzeW5jaW8ud2Fp
dF9mb3Ioc2VsZi5zZXJ2ZXIud2FpdF9jbG9zZWQoKSwgdGltZW91dD0xKQorICAgICAgICAgICAg
KQorICAgICAgICBleGNlcHQgYXN5bmNpby5UaW1lb3V0RXJyb3I6ICAjIHByYWdtYTogbm8gY292
ZXIKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiU2VydmVyIGZhaWxlZCB0byBzdG9wIikKKworICAg
IGRlZiBzdG9wX3JlZGlyZWN0aW5nX3NlcnZlcihzZWxmKToKKyAgICAgICAgc2VsZi5yZWRpcmVj
dGluZ19zZXJ2ZXIuY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgICAgIGFzeW5jaW8ud2FpdF9mb3Ioc2Vs
Zi5yZWRpcmVjdGluZ19zZXJ2ZXIud2FpdF9jbG9zZWQoKSwgdGltZW91dD0xKQorICAgICAgICAg
ICAgKQorICAgICAgICBleGNlcHQgYXN5bmNpby5UaW1lb3V0RXJyb3I6ICAjIHByYWdtYTogbm8g
Y292ZXIKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVkaXJlY3Rpbmcgc2VydmVyIGZhaWxlZCB0
byBzdG9wIikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYucmVkaXJlY3Rpbmdf
c2VydmVyID0gTm9uZQorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYg
dGVtcF9zZXJ2ZXIoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHRlbXBfdGVzdF9zZXJ2
ZXIoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgeWllbGQKKworICAgIEBjb250ZXh0bGli
LmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHRlbXBfY2xpZW50KHNlbGYsICphcmdzLCAqKmt3YXJn
cyk6CisgICAgICAgIHdpdGggdGVtcF90ZXN0X2NsaWVudChzZWxmLCAqYXJncywgKiprd2FyZ3Mp
OgorICAgICAgICAgICAgeWllbGQKKworICAgIGRlZiBtYWtlX2h0dHBfcmVxdWVzdChzZWxmLCBw
YXRoPSIvIiwgaGVhZGVycz1Ob25lKToKKyAgICAgICAgaWYgaGVhZGVycyBpcyBOb25lOgorICAg
ICAgICAgICAgaGVhZGVycyA9IHt9CisKKyAgICAgICAgIyBTZXQgdXJsIHRvICdodHRwcz86Ly88
aG9zdD46PHBvcnQ+PHBhdGg+Jy4KKyAgICAgICAgdXJsID0gZ2V0X3NlcnZlcl91cmkoCisgICAg
ICAgICAgICBzZWxmLnNlcnZlciwgcmVzb3VyY2VfbmFtZT1wYXRoLCBzZWN1cmU9c2VsZi5zZWN1
cmUKKyAgICAgICAgKS5yZXBsYWNlKCJ3cyIsICJodHRwIikKKworICAgICAgICByZXF1ZXN0ID0g
dXJsbGliLnJlcXVlc3QuUmVxdWVzdCh1cmw9dXJsLCBoZWFkZXJzPWhlYWRlcnMpCisKKyAgICAg
ICAgaWYgc2VsZi5zZWN1cmU6CisgICAgICAgICAgICBvcGVuX2hlYWx0aF9jaGVjayA9IGZ1bmN0
b29scy5wYXJ0aWFsKAorICAgICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4sIHJl
cXVlc3QsIGNvbnRleHQ9c2VsZi5jbGllbnRfY29udGV4dAorICAgICAgICAgICAgKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgb3Blbl9oZWFsdGhfY2hlY2sgPSBmdW5jdG9vbHMucGFydGlh
bCh1cmxsaWIucmVxdWVzdC51cmxvcGVuLCByZXF1ZXN0KQorCisgICAgICAgIHJldHVybiBzZWxm
Lmxvb3AucnVuX2luX2V4ZWN1dG9yKE5vbmUsIG9wZW5faGVhbHRoX2NoZWNrKQorCisKK2NsYXNz
IFNlY3VyZUNsaWVudFNlcnZlclRlc3RzTWl4aW4oQ2xpZW50U2VydmVyVGVzdHNNaXhpbik6CisK
KyAgICBzZWN1cmUgPSBUcnVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2VydmVyX2NvbnRl
eHQoc2VsZik6CisgICAgICAgIHNzbF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RP
Q09MX1RMU19TRVJWRVIpCisgICAgICAgIHNzbF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbih0ZXN0
Y2VydCkKKyAgICAgICAgcmV0dXJuIHNzbF9jb250ZXh0CisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgY2xpZW50X2NvbnRleHQoc2VsZik6CisgICAgICAgIHNzbF9jb250ZXh0ID0gc3NsLlNTTENv
bnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICAgICAgIHNzbF9jb250ZXh0LmxvYWRf
dmVyaWZ5X2xvY2F0aW9ucyh0ZXN0Y2VydCkKKyAgICAgICAgcmV0dXJuIHNzbF9jb250ZXh0CisK
KyAgICBkZWYgc3RhcnRfc2VydmVyKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAga3dhcmdzLnNl
dGRlZmF1bHQoInNzbCIsIHNlbGYuc2VydmVyX2NvbnRleHQpCisgICAgICAgIHN1cGVyKCkuc3Rh
cnRfc2VydmVyKCoqa3dhcmdzKQorCisgICAgZGVmIHN0YXJ0X2NsaWVudChzZWxmLCBwYXRoPSIv
IiwgKiprd2FyZ3MpOgorICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgic3NsIiwgc2VsZi5jbGll
bnRfY29udGV4dCkKKyAgICAgICAgc3VwZXIoKS5zdGFydF9jbGllbnQocGF0aCwgKiprd2FyZ3Mp
CisKKworY2xhc3MgQ29tbW9uQ2xpZW50U2VydmVyVGVzdHM6CisgICAgIiIiCisgICAgTWl4aW4g
dGhhdCBkZWZpbmVzIG1vc3QgdGVzdHMgYnV0IGRvZXNuJ3QgaW5oZXJpdCB1bml0dGVzdC5UZXN0
Q2FzZS4KKworICAgIFRlc3RzIGFyZSBydW4gYnkgdGhlIENsaWVudFNlcnZlclRlc3RzIGFuZCBT
ZWN1cmVDbGllbnRTZXJ2ZXJUZXN0cyBzdWJjbGFzc2VzLgorCisgICAgIiIiCisKKyAgICBAd2l0
aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgpCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgi
SGVsbG8hIikpCisgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
ZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwbHksICJIZWxs
byEiKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBkZWYgdGVzdF9yZWRpcmVjdChzZWxmKToK
KyAgICAgICAgcmVkaXJlY3Rfc3RhdHVzZXMgPSBbCisgICAgICAgICAgICBodHRwLkhUVFBTdGF0
dXMuTU9WRURfUEVSTUFORU5UTFksCisgICAgICAgICAgICBodHRwLkhUVFBTdGF0dXMuRk9VTkQs
CisgICAgICAgICAgICBodHRwLkhUVFBTdGF0dXMuU0VFX09USEVSLAorICAgICAgICAgICAgaHR0
cC5IVFRQU3RhdHVzLlRFTVBPUkFSWV9SRURJUkVDVCwKKyAgICAgICAgICAgIGh0dHAuSFRUUFN0
YXR1cy5QRVJNQU5FTlRfUkVESVJFQ1QsCisgICAgICAgIF0KKyAgICAgICAgZm9yIHN0YXR1cyBp
biByZWRpcmVjdF9zdGF0dXNlczoKKyAgICAgICAgICAgIHdpdGggdGVtcF90ZXN0X3JlZGlyZWN0
aW5nX3NlcnZlcihzZWxmLCBzdGF0dXMpOgorICAgICAgICAgICAgICAgIHdpdGggdGVtcF90ZXN0
X2NsaWVudChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShzZWxmLmNsaWVudC5zZW5kKCJIZWxsbyEiKSkKKyAgICAgICAgICAgICAgICAgICAg
cmVwbHkgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBseSwgIkhlbGxvISIpCisK
KyAgICBkZWYgdGVzdF9pbmZpbml0ZV9yZWRpcmVjdChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1w
X3Rlc3RfcmVkaXJlY3Rpbmdfc2VydmVyKHNlbGYsIGh0dHAuSFRUUFN0YXR1cy5GT1VORCk6Cisg
ICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlbGYucmVkaXJlY3Rpbmdfc2VydmVyCisgICAgICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIYW5kc2hha2UpOgorICAgICAgICAg
ICAgICAgIHdpdGggdGVtcF90ZXN0X2NsaWVudChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5mYWlsKCJEaWQgbm90IHJhaXNlIikgICMgcHJhZ21hOiBubyBjb3ZlcgorCisgICAgQHdp
dGhfc2VydmVyKCkKKyAgICBkZWYgdGVzdF9yZWRpcmVjdF9taXNzaW5nX2xvY2F0aW9uKHNlbGYp
OgorICAgICAgICB3aXRoIHRlbXBfdGVzdF9yZWRpcmVjdGluZ19zZXJ2ZXIoCisgICAgICAgICAg
ICBzZWxmLCBodHRwLkhUVFBTdGF0dXMuRk9VTkQsIGluY2x1ZGVfbG9jYXRpb249RmFsc2UKKyAg
ICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhlYWRl
cik6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1wX3Rlc3RfY2xpZW50KHNlbGYpOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3QgcmFpc2UiKSAgIyBwcmFnbWE6IG5vIGNv
dmVyCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9ldmVudF9sb29wKHNlbGYpOgorICAgICAgICB3
aXRoIHNlbGYudGVtcF9zZXJ2ZXIobG9vcD1zZWxmLmxvb3ApOgorICAgICAgICAgICAgd2l0aCBz
ZWxmLnRlbXBfY2xpZW50KGxvb3A9c2VsZi5sb29wKToKKyAgICAgICAgICAgICAgICBzZWxmLmxv
b3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnNlbmQoIkhlbGxvISIpKQorICAgICAg
ICAgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVu
dC5yZWN2KCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBseSwgIkhlbGxv
ISIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2hvc3RfcG9y
dChzZWxmKToKKyAgICAgICAgdXJpID0gZ2V0X3NlcnZlcl91cmkoc2VsZi5zZXJ2ZXIsIHNlbGYu
c2VjdXJlKQorICAgICAgICB3c3VyaSA9IHBhcnNlX3VyaSh1cmkpCisKKyAgICAgICAgIyBDaGFu
Z2UgaG9zdCBhbmQgcG9ydCB0byBpbnZhbGlkIHZhbHVlcy4KKyAgICAgICAgY2hhbmdlZF91cmkg
PSB1cmkucmVwbGFjZSh3c3VyaS5ob3N0LCAiZXhhbXBsZS5jb20iKS5yZXBsYWNlKAorICAgICAg
ICAgICAgc3RyKHdzdXJpLnBvcnQpLCBzdHIoNjU1MzUgLSB3c3VyaS5wb3J0KQorICAgICAgICAp
CisKKyAgICAgICAgd2l0aCBzZWxmLnRlbXBfY2xpZW50KHVyaT1jaGFuZ2VkX3VyaSwgaG9zdD13
c3VyaS5ob3N0LCBwb3J0PXdzdXJpLnBvcnQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5zZW5kKCJIZWxsbyEiKSkKKyAgICAgICAgICAgIHJl
cGx5ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGx5LCAiSGVsbG8hIikKKworICAgIEB3aXRo
X3NlcnZlcigpCisgICAgZGVmIHRlc3RfZXhwbGljaXRfc29ja2V0KHNlbGYpOgorICAgICAgICBj
bGFzcyBUcmFja2VkU29ja2V0KHNvY2tldC5zb2NrZXQpOgorICAgICAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi51c2VkX2Zv
cl9yZWFkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLnVzZWRfZm9yX3dyaXRlID0gRmFs
c2UKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKwor
ICAgICAgICAgICAgZGVmIHJlY3Yoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAg
ICAgICBzZWxmLnVzZWRfZm9yX3JlYWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1
cGVyKCkucmVjdigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi51c2VkX2Zvcl93cml0ZSA9
IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5zZW5kKCphcmdzLCAqKmt3YXJn
cykKKworICAgICAgICBzZXJ2ZXJfc29ja2V0ID0gWworICAgICAgICAgICAgc29jayBmb3Igc29j
ayBpbiBzZWxmLnNlcnZlci5zb2NrZXRzIGlmIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9JTkVU
CisgICAgICAgIF1bMF0KKyAgICAgICAgY2xpZW50X3NvY2tldCA9IFRyYWNrZWRTb2NrZXQoc29j
a2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgY2xpZW50X3NvY2tldC5j
b25uZWN0KHNlcnZlcl9zb2NrZXQuZ2V0c29ja25hbWUoKSkKKworICAgICAgICB0cnk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudF9zb2NrZXQudXNlZF9mb3JfcmVhZCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50X3NvY2tldC51c2VkX2Zvcl93cml0ZSkK
KworICAgICAgICAgICAgd2l0aCBzZWxmLnRlbXBfY2xpZW50KAorICAgICAgICAgICAgICAgIHNv
Y2s9Y2xpZW50X3NvY2tldCwKKyAgICAgICAgICAgICAgICAjICJZb3UgbXVzdCBzZXQgc2VydmVy
X2hvc3RuYW1lIHdoZW4gdXNpbmcgc3NsIHdpdGhvdXQgYSBob3N0IgorICAgICAgICAgICAgICAg
IHNlcnZlcl9ob3N0bmFtZT0ibG9jYWxob3N0IiBpZiBzZWxmLnNlY3VyZSBlbHNlIE5vbmUsCisg
ICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgICAgICAgICAgcmVwbHkgPSBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGx5LCAiSGVsbG8hIikKKworICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGNsaWVudF9zb2NrZXQudXNlZF9mb3JfcmVhZCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnRfc29ja2V0LnVzZWRfZm9yX3dyaXRlKQorCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBjbGllbnRfc29ja2V0LmNsb3NlKCkKKworICAgIEB1bml0
dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpLCAidGhpcyB0ZXN0IHJl
cXVpcmVzIFVuaXggc29ja2V0cyIpCisgICAgZGVmIHRlc3RfdW5peF9zb2NrZXQoc2VsZik6Cisg
ICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6Cisg
ICAgICAgICAgICBwYXRoID0gYnl0ZXMocGF0aGxpYi5QYXRoKHRlbXBfZGlyKSAvICJ3ZWJzb2Nr
ZXRzIikKKworICAgICAgICAgICAgIyBMaWtlIHNlbGYuc3RhcnRfc2VydmVyKCkgYnV0IHdpdGgg
dW5peF9zZXJ2ZSgpLgorICAgICAgICAgICAgdW5peF9zZXJ2ZXIgPSB1bml4X3NlcnZlKGhhbmRs
ZXIsIHBhdGgpCisgICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUodW5peF9zZXJ2ZXIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
IyBMaWtlIHNlbGYuc3RhcnRfY2xpZW50KCkgYnV0IHdpdGggdW5peF9jb25uZWN0KCkKKyAgICAg
ICAgICAgICAgICB1bml4X2NsaWVudCA9IHVuaXhfY29ubmVjdChwYXRoKQorICAgICAgICAgICAg
ICAgIHNlbGYuY2xpZW50ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh1bml4X2NsaWVu
dCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgICAg
ICAgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVu
dC5yZWN2KCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwbHksICJI
ZWxsbyEiKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuc3RvcF9jbGllbnQoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBz
ZWxmLnN0b3Bfc2VydmVyKCkKKworICAgIGFzeW5jIGRlZiBwcm9jZXNzX3JlcXVlc3RfT0socGF0
aCwgcmVxdWVzdF9oZWFkZXJzKToKKyAgICAgICAgcmV0dXJuIGh0dHAuSFRUUFN0YXR1cy5PSywg
W10sIGIiT0tcbiIKKworICAgIEB3aXRoX3NlcnZlcihwcm9jZXNzX3JlcXVlc3Q9cHJvY2Vzc19y
ZXF1ZXN0X09LKQorICAgIGRlZiB0ZXN0X3Byb2Nlc3NfcmVxdWVzdF9hcmd1bWVudChzZWxmKToK
KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubWFr
ZV9odHRwX3JlcXVlc3QoIi8iKSkKKworICAgICAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhy
ZXNwb25zZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmNvZGUsIDIw
MCkKKworICAgIGRlZiBsZWdhY3lfcHJvY2Vzc19yZXF1ZXN0X09LKHBhdGgsIHJlcXVlc3RfaGVh
ZGVycyk6CisgICAgICAgIHJldHVybiBodHRwLkhUVFBTdGF0dXMuT0ssIFtdLCBiIk9LXG4iCisK
KyAgICBAd2l0aF9zZXJ2ZXIocHJvY2Vzc19yZXF1ZXN0PWxlZ2FjeV9wcm9jZXNzX3JlcXVlc3Rf
T0spCisgICAgZGVmIHRlc3RfcHJvY2Vzc19yZXF1ZXN0X2FyZ3VtZW50X2JhY2t3YXJkc19jb21w
YXRpYmlsaXR5KHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJl
Y29yZD1UcnVlKSBhcyByZWNvcmRlZF93YXJuaW5nczoKKyAgICAgICAgICAgIHJlc3BvbnNlID0g
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm1ha2VfaHR0cF9yZXF1ZXN0KCIvIikp
CisKKyAgICAgICAgd2l0aCBjb250ZXh0bGliLmNsb3NpbmcocmVzcG9uc2UpOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5jb2RlLCAyMDApCisKKyAgICAgICAgc2VsZi5h
c3NlcnREZXByZWNhdGlvbldhcm5pbmdzKAorICAgICAgICAgICAgcmVjb3JkZWRfd2FybmluZ3Ms
IFsiZGVjbGFyZSBwcm9jZXNzX3JlcXVlc3QgYXMgYSBjb3JvdXRpbmUiXQorICAgICAgICApCisK
KyAgICBjbGFzcyBQcm9jZXNzUmVxdWVzdE9LU2VydmVyUHJvdG9jb2woV2ViU29ja2V0U2VydmVy
UHJvdG9jb2wpOgorICAgICAgICBhc3luYyBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHBhdGgs
IHJlcXVlc3RfaGVhZGVycyk6CisgICAgICAgICAgICByZXR1cm4gaHR0cC5IVFRQU3RhdHVzLk9L
LCBbXSwgYiJPS1xuIgorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1Qcm9jZXNz
UmVxdWVzdE9LU2VydmVyUHJvdG9jb2wpCisgICAgZGVmIHRlc3RfcHJvY2Vzc19yZXF1ZXN0X292
ZXJyaWRlKHNlbGYpOgorICAgICAgICByZXNwb25zZSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5tYWtlX2h0dHBfcmVxdWVzdCgiLyIpKQorCisgICAgICAgIHdpdGggY29udGV4
dGxpYi5jbG9zaW5nKHJlc3BvbnNlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UuY29kZSwgMjAwKQorCisgICAgY2xhc3MgTGVnYWN5UHJvY2Vzc1JlcXVlc3RPS1NlcnZl
clByb3RvY29sKFdlYlNvY2tldFNlcnZlclByb3RvY29sKToKKyAgICAgICAgZGVmIHByb2Nlc3Nf
cmVxdWVzdChzZWxmLCBwYXRoLCByZXF1ZXN0X2hlYWRlcnMpOgorICAgICAgICAgICAgcmV0dXJu
IGh0dHAuSFRUUFN0YXR1cy5PSywgW10sIGIiT0tcbiIKKworICAgIEB3aXRoX3NlcnZlcihjcmVh
dGVfcHJvdG9jb2w9TGVnYWN5UHJvY2Vzc1JlcXVlc3RPS1NlcnZlclByb3RvY29sKQorICAgIGRl
ZiB0ZXN0X3Byb2Nlc3NfcmVxdWVzdF9vdmVycmlkZV9iYWNrd2FyZHNfY29tcGF0aWJpbGl0eShz
ZWxmKToKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkg
YXMgcmVjb3JkZWRfd2FybmluZ3M6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5tYWtlX2h0dHBfcmVxdWVzdCgiLyIpKQorCisgICAgICAg
IHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHJlc3BvbnNlKToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2UuY29kZSwgMjAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RGVwcmVj
YXRpb25XYXJuaW5ncygKKyAgICAgICAgICAgIHJlY29yZGVkX3dhcm5pbmdzLCBbImRlY2xhcmUg
cHJvY2Vzc19yZXF1ZXN0IGFzIGEgY29yb3V0aW5lIl0KKyAgICAgICAgKQorCisgICAgZGVmIHNl
bGVjdF9zdWJwcm90b2NvbF9jaGF0KGNsaWVudF9zdWJwcm90b2NvbHMsIHNlcnZlcl9zdWJwcm90
b2NvbHMpOgorICAgICAgICByZXR1cm4gImNoYXQiCisKKyAgICBAd2l0aF9zZXJ2ZXIoCisgICAg
ICAgIHN1YnByb3RvY29scz1bInN1cGVyY2hhdCIsICJjaGF0Il0sIHNlbGVjdF9zdWJwcm90b2Nv
bD1zZWxlY3Rfc3VicHJvdG9jb2xfY2hhdAorICAgICkKKyAgICBAd2l0aF9jbGllbnQoIi9zdWJw
cm90b2NvbCIsIHN1YnByb3RvY29scz1bInN1cGVyY2hhdCIsICJjaGF0Il0pCisgICAgZGVmIHRl
c3Rfc2VsZWN0X3N1YnByb3RvY29sX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBzZXJ2ZXJfc3Vi
cHJvdG9jb2wgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3Yo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfc3VicHJvdG9jb2wsIHJlcHIoImNo
YXQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5zdWJwcm90b2NvbCwg
ImNoYXQiKQorCisgICAgY2xhc3MgU2VsZWN0U3VicHJvdG9jb2xDaGF0U2VydmVyUHJvdG9jb2wo
V2ViU29ja2V0U2VydmVyUHJvdG9jb2wpOgorICAgICAgICBkZWYgc2VsZWN0X3N1YnByb3RvY29s
KHNlbGYsIGNsaWVudF9zdWJwcm90b2NvbHMsIHNlcnZlcl9zdWJwcm90b2NvbHMpOgorICAgICAg
ICAgICAgcmV0dXJuICJjaGF0IgorCisgICAgQHdpdGhfc2VydmVyKAorICAgICAgICBzdWJwcm90
b2NvbHM9WyJzdXBlcmNoYXQiLCAiY2hhdCJdLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w9U2Vs
ZWN0U3VicHJvdG9jb2xDaGF0U2VydmVyUHJvdG9jb2wsCisgICAgKQorICAgIEB3aXRoX2NsaWVu
dCgiL3N1YnByb3RvY29sIiwgc3VicHJvdG9jb2xzPVsic3VwZXJjaGF0IiwgImNoYXQiXSkKKyAg
ICBkZWYgdGVzdF9zZWxlY3Rfc3VicHJvdG9jb2xfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgIHNl
cnZlcl9zdWJwcm90b2NvbCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGll
bnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9zdWJwcm90b2NvbCwg
cmVwcigiY2hhdCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnN1YnBy
b3RvY29sLCAiY2hhdCIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgi
L2RlcHJlY2F0ZWRfYXR0cmlidXRlcyIpCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfZGVwcmVjYXRl
ZF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIFRoZSB0ZXN0IGNvdWxkIGJlIGNvbm5lY3Rp
bmcgd2l0aCBJUHY2IG9yIElQdjQuCisgICAgICAgIGV4cGVjdGVkX2NsaWVudF9hdHRycyA9IFsK
KyAgICAgICAgICAgIHNlcnZlcl9zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0gKyAoc2VsZi5zZWN1
cmUsKQorICAgICAgICAgICAgZm9yIHNlcnZlcl9zb2NrZXQgaW4gc2VsZi5zZXJ2ZXIuc29ja2V0
cworICAgICAgICBdCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3Jk
PVRydWUpIGFzIHJlY29yZGVkX3dhcm5pbmdzOgorICAgICAgICAgICAgY2xpZW50X2F0dHJzID0g
KHNlbGYuY2xpZW50Lmhvc3QsIHNlbGYuY2xpZW50LnBvcnQsIHNlbGYuY2xpZW50LnNlY3VyZSkK
KyAgICAgICAgc2VsZi5hc3NlcnREZXByZWNhdGlvbldhcm5pbmdzKAorICAgICAgICAgICAgcmVj
b3JkZWRfd2FybmluZ3MsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgInVzZSByZW1v
dGVfYWRkcmVzc1swXSBpbnN0ZWFkIG9mIGhvc3QiLAorICAgICAgICAgICAgICAgICJ1c2UgcmVt
b3RlX2FkZHJlc3NbMV0gaW5zdGVhZCBvZiBwb3J0IiwKKyAgICAgICAgICAgICAgICAiZG9uJ3Qg
dXNlIHNlY3VyZSIsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0SW4oY2xpZW50X2F0dHJzLCBleHBlY3RlZF9jbGllbnRfYXR0cnMpCisKKyAgICAgICAgZXhw
ZWN0ZWRfc2VydmVyX2F0dHJzID0gKCJsb2NhbGhvc3QiLCAwLCBzZWxmLnNlY3VyZSkKKyAgICAg
ICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgcmVjb3JkZWRf
d2FybmluZ3M6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
Y2xpZW50LnNlbmQoIiIpKQorICAgICAgICAgICAgc2VydmVyX2F0dHJzID0gc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RGVwcmVjYXRpb25XYXJuaW5ncygKKyAgICAgICAgICAgIHJlY29yZGVkX3dhcm5pbmdzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJ1c2UgbG9jYWxfYWRkcmVzc1swXSBpbnN0ZWFk
IG9mIGhvc3QiLAorICAgICAgICAgICAgICAgICJ1c2UgbG9jYWxfYWRkcmVzc1sxXSBpbnN0ZWFk
IG9mIHBvcnQiLAorICAgICAgICAgICAgICAgICJkb24ndCB1c2Ugc2VjdXJlIiwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfYXR0cnMs
IHJlcHIoZXhwZWN0ZWRfc2VydmVyX2F0dHJzKSkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAg
QHdpdGhfY2xpZW50KCIvcGF0aCIpCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfcGF0aChzZWxmKToK
KyAgICAgICAgY2xpZW50X3BhdGggPSBzZWxmLmNsaWVudC5wYXRoCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2xpZW50X3BhdGgsICIvcGF0aCIpCisgICAgICAgIHNlcnZlcl9wYXRoID0gc2Vs
Zi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyX3BhdGgsICIvcGF0aCIpCisKKyAgICBAd2l0aF9zZXJ2ZXIo
KQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMiKQorICAgIGRlZiB0ZXN0X3Byb3RvY29sX2hl
YWRlcnMoc2VsZik6CisgICAgICAgIGNsaWVudF9yZXEgPSBzZWxmLmNsaWVudC5yZXF1ZXN0X2hl
YWRlcnMKKyAgICAgICAgY2xpZW50X3Jlc3AgPSBzZWxmLmNsaWVudC5yZXNwb25zZV9oZWFkZXJz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3JlcVsiVXNlci1BZ2VudCJdLCBVU0VS
X0FHRU5UKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF9yZXNwWyJTZXJ2ZXIiXSwg
VVNFUl9BR0VOVCkKKyAgICAgICAgc2VydmVyX3JlcSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZXJ2ZXJfcmVzcCA9IHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlcl9yZXEsIHJlcHIoY2xpZW50X3JlcSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VydmVyX3Jlc3AsIHJlcHIoY2xpZW50X3Jlc3ApKQorCisgICAgQHdpdGhfc2Vy
dmVyKCkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIiwgZXh0cmFfaGVhZGVycz1IZWFkZXJz
KHsiWC1TcGFtIjogIkVnZ3MifSkpCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfY3VzdG9tX3JlcXVl
c3RfaGVhZGVycyhzZWxmKToKKyAgICAgICAgcmVxX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o
IignWC1TcGFtJywgJ0VnZ3MnKSIsIHJlcV9oZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKCkK
KyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIiwgZXh0cmFfaGVhZGVycz17IlgtU3BhbSI6ICJF
Z2dzIn0pCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfY3VzdG9tX3JlcXVlc3RfaGVhZGVyc19kaWN0
KHNlbGYpOgorICAgICAgICByZXFfaGVhZGVycyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdYLVNwYW0n
LCAnRWdncycpIiwgcmVxX2hlYWRlcnMpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRo
X2NsaWVudCgiL2hlYWRlcnMiLCBleHRyYV9oZWFkZXJzPVsoIlgtU3BhbSIsICJFZ2dzIildKQor
ICAgIGRlZiB0ZXN0X3Byb3RvY29sX2N1c3RvbV9yZXF1ZXN0X2hlYWRlcnNfbGlzdChzZWxmKToK
KyAgICAgICAgcmVxX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
Y2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIignWC1TcGFtJywgJ0VnZ3Mn
KSIsIHJlcV9oZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAd2l0aF9jbGllbnQo
Ii9oZWFkZXJzIiwgZXh0cmFfaGVhZGVycz1bKCJVc2VyLUFnZW50IiwgIkVnZ3MiKV0pCisgICAg
ZGVmIHRlc3RfcHJvdG9jb2xfY3VzdG9tX3JlcXVlc3RfdXNlcl9hZ2VudChzZWxmKToKKyAgICAg
ICAgcmVxX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50
LnJlY3YoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVu
dC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxX2hlYWRlcnMuY291bnQoIlVz
ZXItQWdlbnQiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdVc2VyLUFnZW50JywgJ0Vn
Z3MnKSIsIHJlcV9oZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKGV4dHJhX2hlYWRlcnM9bGFt
YmRhIHAsIHI6IEhlYWRlcnMoeyJYLVNwYW0iOiAiRWdncyJ9KSkKKyAgICBAd2l0aF9jbGllbnQo
Ii9oZWFkZXJzIikKKyAgICBkZWYgdGVzdF9wcm90b2NvbF9jdXN0b21fcmVzcG9uc2VfaGVhZGVy
c19jYWxsYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
ZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHJlc3BfaGVhZGVycyA9IHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydElu
KCIoJ1gtU3BhbScsICdFZ2dzJykiLCByZXNwX2hlYWRlcnMpCisKKyAgICBAd2l0aF9zZXJ2ZXIo
ZXh0cmFfaGVhZGVycz1sYW1iZGEgcCwgcjogeyJYLVNwYW0iOiAiRWdncyJ9KQorICAgIEB3aXRo
X2NsaWVudCgiL2hlYWRlcnMiKQorICAgIGRlZiB0ZXN0X3Byb3RvY29sX2N1c3RvbV9yZXNwb25z
ZV9oZWFkZXJzX2NhbGxhYmxlX2RpY3Qoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50
aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICByZXNwX2hlYWRlcnMgPSBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRJbigiKCdYLVNwYW0nLCAnRWdncycpIiwgcmVzcF9oZWFkZXJzKQorCisgICAg
QHdpdGhfc2VydmVyKGV4dHJhX2hlYWRlcnM9bGFtYmRhIHAsIHI6IFsoIlgtU3BhbSIsICJFZ2dz
IildKQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMiKQorICAgIGRlZiB0ZXN0X3Byb3RvY29s
X2N1c3RvbV9yZXNwb25zZV9oZWFkZXJzX2NhbGxhYmxlX2xpc3Qoc2VsZik6CisgICAgICAgIHNl
bGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBy
ZXNwX2hlYWRlcnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJl
Y3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdYLVNwYW0nLCAnRWdncycpIiwgcmVzcF9o
ZWFkZXJzKQorCisgICAgQHdpdGhfc2VydmVyKGV4dHJhX2hlYWRlcnM9bGFtYmRhIHAsIHI6IE5v
bmUpCisgICAgQHdpdGhfY2xpZW50KCIvaGVhZGVycyIpCisgICAgZGVmIHRlc3RfcHJvdG9jb2xf
Y3VzdG9tX3Jlc3BvbnNlX2hlYWRlcnNfY2FsbGFibGVfbm9uZShzZWxmKToKKyAgICAgICAgc2Vs
Zi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpICAjIGRvZXNuJ3Qg
Y3Jhc2gKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5y
ZWN2KCkpICAjIG5vdGhpbmcgdG8gY2hlY2sKKworICAgIEB3aXRoX3NlcnZlcihleHRyYV9oZWFk
ZXJzPUhlYWRlcnMoeyJYLVNwYW0iOiAiRWdncyJ9KSkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFk
ZXJzIikKKyAgICBkZWYgdGVzdF9wcm90b2NvbF9jdXN0b21fcmVzcG9uc2VfaGVhZGVycyhzZWxm
KToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2
KCkpCisgICAgICAgIHJlc3BfaGVhZGVycyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUo
c2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEluKCIoJ1gtU3BhbScsICdF
Z2dzJykiLCByZXNwX2hlYWRlcnMpCisKKyAgICBAd2l0aF9zZXJ2ZXIoZXh0cmFfaGVhZGVycz17
IlgtU3BhbSI6ICJFZ2dzIn0pCisgICAgQHdpdGhfY2xpZW50KCIvaGVhZGVycyIpCisgICAgZGVm
IHRlc3RfcHJvdG9jb2xfY3VzdG9tX3Jlc3BvbnNlX2hlYWRlcnNfZGljdChzZWxmKToKKyAgICAg
ICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAg
ICAgIHJlc3BfaGVhZGVycyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGll
bnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEluKCIoJ1gtU3BhbScsICdFZ2dzJykiLCBy
ZXNwX2hlYWRlcnMpCisKKyAgICBAd2l0aF9zZXJ2ZXIoZXh0cmFfaGVhZGVycz1bKCJYLVNwYW0i
LCAiRWdncyIpXSkKKyAgICBAd2l0aF9jbGllbnQoIi9oZWFkZXJzIikKKyAgICBkZWYgdGVzdF9w
cm90b2NvbF9jdXN0b21fcmVzcG9uc2VfaGVhZGVyc19saXN0KHNlbGYpOgorICAgICAgICBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgcmVz
cF9oZWFkZXJzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2
KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIignWC1TcGFtJywgJ0VnZ3MnKSIsIHJlc3BfaGVh
ZGVycykKKworICAgIEB3aXRoX3NlcnZlcihleHRyYV9oZWFkZXJzPVsoIlNlcnZlciIsICJFZ2dz
IildKQorICAgIEB3aXRoX2NsaWVudCgiL2hlYWRlcnMiKQorICAgIGRlZiB0ZXN0X3Byb3RvY29s
X2N1c3RvbV9yZXNwb25zZV91c2VyX2FnZW50KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgcmVzcF9oZWFkZXJz
ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcF9oZWFkZXJzLmNvdW50KCJTZXJ2ZXIiKSwgMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJbigiKCdTZXJ2ZXInLCAnRWdncycpIiwgcmVzcF9oZWFkZXJzKQor
CisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1IZWFsdGhDaGVja1NlcnZlclByb3Rv
Y29sKQorICAgIGRlZiB0ZXN0X2h0dHBfcmVxdWVzdF9odHRwX2VuZHBvaW50KHNlbGYpOgorICAg
ICAgICAjIE1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBhIEhUVFAgZW5kcG9pbnQgc3VjY2VlZHMu
CisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm1h
a2VfaHR0cF9yZXF1ZXN0KCIvX19oZWFsdGhfXy8iKSkKKworICAgICAgICB3aXRoIGNvbnRleHRs
aWIuY2xvc2luZyhyZXNwb25zZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLmNvZGUsIDIwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UucmVh
ZCgpLCBiInN0YXR1cyA9IGdyZWVuXG4iKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90
b2NvbD1IZWFsdGhDaGVja1NlcnZlclByb3RvY29sKQorICAgIGRlZiB0ZXN0X2h0dHBfcmVxdWVz
dF93c19lbmRwb2ludChzZWxmKToKKyAgICAgICAgIyBNYWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8g
YSBXUyBlbmRwb2ludCBmYWlscy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxs
aWIuZXJyb3IuSFRUUEVycm9yKSBhcyByYWlzZWQ6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYubWFrZV9odHRwX3JlcXVlc3QoKSkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24uY29kZSwgNDI2KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24uaGVhZGVyc1siVXBncmFkZSJdLCAid2Vic29ja2V0
IikKKworICAgIEB3aXRoX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9SGVhbHRoQ2hlY2tTZXJ2ZXJQ
cm90b2NvbCkKKyAgICBkZWYgdGVzdF93c19jb25uZWN0aW9uX2h0dHBfZW5kcG9pbnQoc2VsZik6
CisgICAgICAgICMgTWFraW5nIGEgV1MgY29ubmVjdGlvbiB0byBhIEhUVFAgZW5kcG9pbnQgZmFp
bHMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFN0YXR1c0NvZGUpIGFz
IHJhaXNlZDoKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCIvX19oZWFsdGhfXy8iKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFpc2VkLmV4Y2VwdGlvbi5zdGF0dXNfY29kZSwg
MjAwKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1IZWFsdGhDaGVja1NlcnZl
clByb3RvY29sKQorICAgIGRlZiB0ZXN0X3dzX2Nvbm5lY3Rpb25fd3NfZW5kcG9pbnQoc2VsZik6
CisgICAgICAgICMgTWFraW5nIGEgV1MgY29ubmVjdGlvbiB0byBhIFdTIGVuZHBvaW50IHN1Y2Nl
ZWRzLgorICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxm
LnN0b3BfY2xpZW50KCkKKworICAgIGRlZiBhc3NlcnRfY2xpZW50X3JhaXNlc19jb2RlKHNlbGYs
IHN0YXR1c19jb2RlKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkU3Rh
dHVzQ29kZSkgYXMgcmFpc2VkOgorICAgICAgICAgICAgc2VsZi5zdGFydF9jbGllbnQoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJhaXNlZC5leGNlcHRpb24uc3RhdHVzX2NvZGUsIHN0YXR1
c19jb2RlKQorCisgICAgQHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1VbmF1dGhvcml6ZWRT
ZXJ2ZXJQcm90b2NvbCkKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfY3JlYXRlX3Byb3RvY29sKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9jbGllbnRfcmFpc2VzX2NvZGUoNDAxKQorCisgICAgZGVm
IGNyZWF0ZV91bmF1dGhvcml6ZWRfc2VydmVyX3Byb3RvY29sKCphcmdzLCAqKmt3YXJncyk6Cisg
ICAgICAgIHJldHVybiBVbmF1dGhvcml6ZWRTZXJ2ZXJQcm90b2NvbCgqYXJncywgKiprd2FyZ3Mp
CisKKyAgICBAd2l0aF9zZXJ2ZXIoY3JlYXRlX3Byb3RvY29sPWNyZWF0ZV91bmF1dGhvcml6ZWRf
c2VydmVyX3Byb3RvY29sKQorICAgIGRlZiB0ZXN0X3NlcnZlcl9jcmVhdGVfcHJvdG9jb2xfZnVu
Y3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2NsaWVudF9yYWlzZXNfY29kZSg0MDEp
CisKKyAgICBAd2l0aF9zZXJ2ZXIoCisgICAgICAgIGtsYXNzPVVuYXV0aG9yaXplZFNlcnZlclBy
b3RvY29sLAorICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5ncz1bInJlbmFtZSBrbGFzcyB0byBj
cmVhdGVfcHJvdG9jb2wiXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc2VydmVyX2tsYXNzX2JhY2t3
YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jbGllbnRfcmFp
c2VzX2NvZGUoNDAxKQorCisgICAgQHdpdGhfc2VydmVyKAorICAgICAgICBjcmVhdGVfcHJvdG9j
b2w9Rm9yYmlkZGVuU2VydmVyUHJvdG9jb2wsCisgICAgICAgIGtsYXNzPVVuYXV0aG9yaXplZFNl
cnZlclByb3RvY29sLAorICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5ncz1bInJlbmFtZSBrbGFz
cyB0byBjcmVhdGVfcHJvdG9jb2wiXSwKKyAgICApCisgICAgZGVmIHRlc3Rfc2VydmVyX2NyZWF0
ZV9wcm90b2NvbF9vdmVyX2tsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jbGllbnRf
cmFpc2VzX2NvZGUoNDAzKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAd2l0aF9jbGllbnQo
Ii9wYXRoIiwgY3JlYXRlX3Byb3RvY29sPUZvb0NsaWVudFByb3RvY29sKQorICAgIGRlZiB0ZXN0
X2NsaWVudF9jcmVhdGVfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0
YW5jZShzZWxmLmNsaWVudCwgRm9vQ2xpZW50UHJvdG9jb2wpCisKKyAgICBAd2l0aF9zZXJ2ZXIo
KQorICAgIEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9wYXRoIiwKKyAgICAgICAgY3JlYXRlX3By
b3RvY29sPShsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBGb29DbGllbnRQcm90b2NvbCgqYXJncywg
Kiprd2FyZ3MpKSwKKyAgICApCisgICAgZGVmIHRlc3RfY2xpZW50X2NyZWF0ZV9wcm90b2NvbF9m
dW5jdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYuY2xpZW50
LCBGb29DbGllbnRQcm90b2NvbCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xp
ZW50KAorICAgICAgICAiL3BhdGgiLAorICAgICAgICBrbGFzcz1Gb29DbGllbnRQcm90b2NvbCwK
KyAgICAgICAgZGVwcmVjYXRpb25fd2FybmluZ3M9WyJyZW5hbWUga2xhc3MgdG8gY3JlYXRlX3By
b3RvY29sIl0sCisgICAgKQorICAgIGRlZiB0ZXN0X2NsaWVudF9rbGFzcyhzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYuY2xpZW50LCBGb29DbGllbnRQcm90b2NvbCkK
KworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KAorICAgICAgICAiL3BhdGgi
LAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w9QmFyQ2xpZW50UHJvdG9jb2wsCisgICAgICAgIGts
YXNzPUZvb0NsaWVudFByb3RvY29sLAorICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5ncz1bInJl
bmFtZSBrbGFzcyB0byBjcmVhdGVfcHJvdG9jb2wiXSwKKyAgICApCisgICAgZGVmIHRlc3RfY2xp
ZW50X2NyZWF0ZV9wcm90b2NvbF9vdmVyX2tsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dElzSW5zdGFuY2Uoc2VsZi5jbGllbnQsIEJhckNsaWVudFByb3RvY29sKQorCisgICAgQHdpdGhf
c2VydmVyKGNsb3NlX3RpbWVvdXQ9NykKKyAgICBAd2l0aF9jbGllbnQoIi9jbG9zZV90aW1lb3V0
IikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfY2xvc2VfdGltZW91dChzZWxmKToKKyAgICAgICAgY2xv
c2VfdGltZW91dCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVj
digpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoY2xvc2VfdGltZW91dCksIDcpCisK
KyAgICBAd2l0aF9zZXJ2ZXIodGltZW91dD02LCBkZXByZWNhdGlvbl93YXJuaW5ncz1bInJlbmFt
ZSB0aW1lb3V0IHRvIGNsb3NlX3RpbWVvdXQiXSkKKyAgICBAd2l0aF9jbGllbnQoIi9jbG9zZV90
aW1lb3V0IikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdGltZW91dF9iYWNrd2FyZHNfY29tcGF0aWJp
bGl0eShzZWxmKToKKyAgICAgICAgY2xvc2VfdGltZW91dCA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
YWwoY2xvc2VfdGltZW91dCksIDYpCisKKyAgICBAd2l0aF9zZXJ2ZXIoCisgICAgICAgIGNsb3Nl
X3RpbWVvdXQ9NywKKyAgICAgICAgdGltZW91dD02LAorICAgICAgICBkZXByZWNhdGlvbl93YXJu
aW5ncz1bInJlbmFtZSB0aW1lb3V0IHRvIGNsb3NlX3RpbWVvdXQiXSwKKyAgICApCisgICAgQHdp
dGhfY2xpZW50KCIvY2xvc2VfdGltZW91dCIpCisgICAgZGVmIHRlc3Rfc2VydmVyX2Nsb3NlX3Rp
bWVvdXRfb3Zlcl90aW1lb3V0KHNlbGYpOgorICAgICAgICBjbG9zZV90aW1lb3V0ID0gc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZhbChjbG9zZV90aW1lb3V0KSwgNykKKworICAgIEB3aXRoX3NlcnZlcigp
CisgICAgQHdpdGhfY2xpZW50KCIvY2xvc2VfdGltZW91dCIsIGNsb3NlX3RpbWVvdXQ9NykKKyAg
ICBkZWYgdGVzdF9jbGllbnRfY2xvc2VfdGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLmNsaWVudC5jbG9zZV90aW1lb3V0LCA3KQorCisgICAgQHdpdGhfc2VydmVy
KCkKKyAgICBAd2l0aF9jbGllbnQoCisgICAgICAgICIvY2xvc2VfdGltZW91dCIsCisgICAgICAg
IHRpbWVvdXQ9NiwKKyAgICAgICAgZGVwcmVjYXRpb25fd2FybmluZ3M9WyJyZW5hbWUgdGltZW91
dCB0byBjbG9zZV90aW1lb3V0Il0sCisgICAgKQorICAgIGRlZiB0ZXN0X2NsaWVudF90aW1lb3V0
X2JhY2t3YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYuY2xpZW50LmNsb3NlX3RpbWVvdXQsIDYpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAg
IEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9jbG9zZV90aW1lb3V0IiwKKyAgICAgICAgY2xvc2Vf
dGltZW91dD03LAorICAgICAgICB0aW1lb3V0PTYsCisgICAgICAgIGRlcHJlY2F0aW9uX3dhcm5p
bmdzPVsicmVuYW1lIHRpbWVvdXQgdG8gY2xvc2VfdGltZW91dCJdLAorICAgICkKKyAgICBkZWYg
dGVzdF9jbGllbnRfY2xvc2VfdGltZW91dF9vdmVyX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuY2xvc2VfdGltZW91dCwgNykKKworICAgIEB3aXRo
X3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCIvZXh0ZW5zaW9ucyIpCisgICAgZGVmIHRlc3Rf
bm9fZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtdKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXByKHNlbGYuY2xpZW50LmV4dGVuc2lvbnMpLCByZXByKFtdKSkKKworICAgIEB3
aXRoX3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09wRXh0ZW5zaW9uRmFjdG9yeSgpXSkKKyAg
ICBAd2l0aF9jbGllbnQoIi9leHRlbnNpb25zIiwgZXh0ZW5zaW9ucz1bQ2xpZW50Tm9PcEV4dGVu
c2lvbkZhY3RvcnkoKV0pCisgICAgZGVmIHRlc3RfZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBz
ZXJ2ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGll
bnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9leHRlbnNpb25zLCBy
ZXByKFtOb09wRXh0ZW5zaW9uKCldKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNl
bGYuY2xpZW50LmV4dGVuc2lvbnMpLCByZXByKFtOb09wRXh0ZW5zaW9uKCldKSkKKworICAgIEB3
aXRoX3NlcnZlcigpCisgICAgQHdpdGhfY2xpZW50KCIvZXh0ZW5zaW9ucyIsIGV4dGVuc2lvbnM9
W0NsaWVudE5vT3BFeHRlbnNpb25GYWN0b3J5KCldKQorICAgIGRlZiB0ZXN0X2V4dGVuc2lvbl9u
b3RfYWNjZXB0ZWQoc2VsZik6CisgICAgICAgIHNlcnZlcl9leHRlbnNpb25zID0gc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VydmVyX2V4dGVuc2lvbnMsIHJlcHIoW10pKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcHIoc2VsZi5jbGllbnQuZXh0ZW5zaW9ucyksIHJlcHIoW10pKQorCisgICAgQHdp
dGhfc2VydmVyKGV4dGVuc2lvbnM9W1NlcnZlck5vT3BFeHRlbnNpb25GYWN0b3J5KCldKQorICAg
IEB3aXRoX2NsaWVudCgiL2V4dGVuc2lvbnMiKQorICAgIGRlZiB0ZXN0X2V4dGVuc2lvbl9ub3Rf
cmVxdWVzdGVkKHNlbGYpOgorICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXByKHNlbGYuY2xpZW50LmV4dGVuc2lvbnMpLCByZXByKFtdKSkKKworICAgIEB3aXRo
X3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09wRXh0ZW5zaW9uRmFjdG9yeShbKCJmb28iLCBO
b25lKV0pXSkKKyAgICBkZWYgdGVzdF9leHRlbnNpb25fY2xpZW50X3JlamVjdGlvbihzZWxmKToK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOZWdvdGlhdGlvbkVycm9yKToKKyAgICAg
ICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCIvZXh0ZW5zaW9ucyIsIGV4dGVuc2lvbnM9W0NsaWVu
dE5vT3BFeHRlbnNpb25GYWN0b3J5KCldKQorCisgICAgQHdpdGhfc2VydmVyKAorICAgICAgICBl
eHRlbnNpb25zPVsKKyAgICAgICAgICAgICMgTm8gbWF0Y2ggYmVjYXVzZSB0aGUgY2xpZW50IGRv
ZXNuJ3Qgc2VuZCBjbGllbnRfbWF4X3dpbmRvd19iaXRzLgorICAgICAgICAgICAgU2VydmVyUGVy
TWVzc2FnZURlZmxhdGVGYWN0b3J5KGNsaWVudF9tYXhfd2luZG93X2JpdHM9MTApLAorICAgICAg
ICAgICAgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KCksCisgICAgICAgIF0KKyAgICAp
CisgICAgQHdpdGhfY2xpZW50KCIvZXh0ZW5zaW9ucyIsIGV4dGVuc2lvbnM9W0NsaWVudFBlck1l
c3NhZ2VEZWZsYXRlRmFjdG9yeSgpXSkKKyAgICBkZWYgdGVzdF9leHRlbnNpb25fbm9fbWF0Y2hf
dGhlbl9tYXRjaChzZWxmKToKKyAgICAgICAgIyBUaGUgb3JkZXIgcmVxdWVzdGVkIGJ5IHRoZSBj
bGllbnQgaGFzIHByaW9yaXR5LgorICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9ucyA9IHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgc2VydmVyX2V4dGVuc2lvbnMsIHJlcHIoW1Blck1lc3Nh
Z2VEZWZsYXRlKEZhbHNlLCBGYWxzZSwgMTUsIDE1KV0pCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoc2VsZi5jbGllbnQuZXh0ZW5zaW9ucyks
CisgICAgICAgICAgICByZXByKFtQZXJNZXNzYWdlRGVmbGF0ZShGYWxzZSwgRmFsc2UsIDE1LCAx
NSldKSwKKyAgICAgICAgKQorCisgICAgQHdpdGhfc2VydmVyKGV4dGVuc2lvbnM9W1NlcnZlclBl
ck1lc3NhZ2VEZWZsYXRlRmFjdG9yeSgpXSkKKyAgICBAd2l0aF9jbGllbnQoIi9leHRlbnNpb25z
IiwgZXh0ZW5zaW9ucz1bQ2xpZW50Tm9PcEV4dGVuc2lvbkZhY3RvcnkoKV0pCisgICAgZGVmIHRl
c3RfZXh0ZW5zaW9uX21pc21hdGNoKHNlbGYpOgorICAgICAgICBzZXJ2ZXJfZXh0ZW5zaW9ucyA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtdKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuY2xpZW50LmV4dGVuc2lvbnMpLCByZXByKFtdKSkK
KworICAgIEB3aXRoX3NlcnZlcigKKyAgICAgICAgZXh0ZW5zaW9ucz1bU2VydmVyTm9PcEV4dGVu
c2lvbkZhY3RvcnkoKSwgU2VydmVyUGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KCldCisgICAgKQor
ICAgIEB3aXRoX2NsaWVudCgKKyAgICAgICAgIi9leHRlbnNpb25zIiwKKyAgICAgICAgZXh0ZW5z
aW9ucz1bQ2xpZW50UGVyTWVzc2FnZURlZmxhdGVGYWN0b3J5KCksIENsaWVudE5vT3BFeHRlbnNp
b25GYWN0b3J5KCldLAorICAgICkKKyAgICBkZWYgdGVzdF9leHRlbnNpb25fb3JkZXIoc2VsZik6
CisgICAgICAgICMgVGhlIG9yZGVyIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50IGhhcyBwcmlvcml0
eS4KKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIHNlcnZlcl9leHRlbnNpb25zLAorICAgICAgICAgICAgcmVwcihbUGVyTWVzc2FnZURl
ZmxhdGUoRmFsc2UsIEZhbHNlLCAxNSwgMTUpLCBOb09wRXh0ZW5zaW9uKCldKSwKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihzZWxmLmNsaWVu
dC5leHRlbnNpb25zKSwKKyAgICAgICAgICAgIHJlcHIoW1Blck1lc3NhZ2VEZWZsYXRlKEZhbHNl
LCBGYWxzZSwgMTUsIDE1KSwgTm9PcEV4dGVuc2lvbigpXSksCisgICAgICAgICkKKworICAgIEB3
aXRoX3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09wRXh0ZW5zaW9uRmFjdG9yeSgpXSkKKyAg
ICBAdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wsICJw
cm9jZXNzX2V4dGVuc2lvbnMiKQorICAgIGRlZiB0ZXN0X2V4dGVuc2lvbnNfZXJyb3Ioc2VsZiwg
X3Byb2Nlc3NfZXh0ZW5zaW9ucyk6CisgICAgICAgIF9wcm9jZXNzX2V4dGVuc2lvbnMucmV0dXJu
X3ZhbHVlID0gIngtbm8tb3AiLCBbTm9PcEV4dGVuc2lvbigpXQorCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoTmVnb3RpYXRpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLnN0YXJ0
X2NsaWVudCgKKyAgICAgICAgICAgICAgICAiL2V4dGVuc2lvbnMiLCBleHRlbnNpb25zPVtDbGll
bnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoKV0KKyAgICAgICAgICAgICkKKworICAgIEB3aXRo
X3NlcnZlcihleHRlbnNpb25zPVtTZXJ2ZXJOb09wRXh0ZW5zaW9uRmFjdG9yeSgpXSkKKyAgICBA
dW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wsICJwcm9j
ZXNzX2V4dGVuc2lvbnMiKQorICAgIGRlZiB0ZXN0X2V4dGVuc2lvbnNfZXJyb3Jfbm9fZXh0ZW5z
aW9ucyhzZWxmLCBfcHJvY2Vzc19leHRlbnNpb25zKToKKyAgICAgICAgX3Byb2Nlc3NfZXh0ZW5z
aW9ucy5yZXR1cm5fdmFsdWUgPSAieC1uby1vcCIsIFtOb09wRXh0ZW5zaW9uKCldCisKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAgICAgICAg
IHNlbGYuc3RhcnRfY2xpZW50KCIvZXh0ZW5zaW9ucyIpCisKKyAgICBAd2l0aF9zZXJ2ZXIoY29t
cHJlc3Npb249ImRlZmxhdGUiKQorICAgIEB3aXRoX2NsaWVudCgiL2V4dGVuc2lvbnMiLCBjb21w
cmVzc2lvbj0iZGVmbGF0ZSIpCisgICAgZGVmIHRlc3RfY29tcHJlc3Npb25fZGVmbGF0ZShzZWxm
KToKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIHNlcnZlcl9leHRlbnNpb25zLCByZXByKFtQZXJNZXNzYWdlRGVmbGF0ZShGYWxzZSwg
RmFsc2UsIDE1LCAxNSldKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICByZXByKHNlbGYuY2xpZW50LmV4dGVuc2lvbnMpLAorICAgICAgICAgICAgcmVw
cihbUGVyTWVzc2FnZURlZmxhdGUoRmFsc2UsIEZhbHNlLCAxNSwgMTUpXSksCisgICAgICAgICkK
KworICAgIEB3aXRoX3NlcnZlcigKKyAgICAgICAgZXh0ZW5zaW9ucz1bCisgICAgICAgICAgICBT
ZXJ2ZXJQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoCisgICAgICAgICAgICAgICAgY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXI9VHJ1ZSwgc2VydmVyX21heF93aW5kb3dfYml0cz0xMAorICAgICAg
ICAgICAgKQorICAgICAgICBdLAorICAgICAgICBjb21wcmVzc2lvbj0iZGVmbGF0ZSIsICAjIG92
ZXJyaWRkZW4gYnkgZXhwbGljaXQgY29uZmlnCisgICAgKQorICAgIEB3aXRoX2NsaWVudCgKKyAg
ICAgICAgIi9leHRlbnNpb25zIiwKKyAgICAgICAgZXh0ZW5zaW9ucz1bCisgICAgICAgICAgICBD
bGllbnRQZXJNZXNzYWdlRGVmbGF0ZUZhY3RvcnkoCisgICAgICAgICAgICAgICAgc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXI9VHJ1ZSwgY2xpZW50X21heF93aW5kb3dfYml0cz0xMgorICAgICAg
ICAgICAgKQorICAgICAgICBdLAorICAgICAgICBjb21wcmVzc2lvbj0iZGVmbGF0ZSIsICAjIG92
ZXJyaWRkZW4gYnkgZXhwbGljaXQgY29uZmlnCisgICAgKQorICAgIGRlZiB0ZXN0X2NvbXByZXNz
aW9uX2RlZmxhdGVfYW5kX2V4cGxpY2l0X2NvbmZpZyhzZWxmKToKKyAgICAgICAgc2VydmVyX2V4
dGVuc2lvbnMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3Yo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlcnZlcl9leHRlbnNp
b25zLCByZXByKFtQZXJNZXNzYWdlRGVmbGF0ZShUcnVlLCBUcnVlLCAxMiwgMTApXSkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihzZWxmLmNs
aWVudC5leHRlbnNpb25zKSwgcmVwcihbUGVyTWVzc2FnZURlZmxhdGUoVHJ1ZSwgVHJ1ZSwgMTAs
IDEyKV0pCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2NvbXByZXNzaW9uX3Vuc3VwcG9ydGVk
X3NlcnZlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9y
KToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfc2VydmVyKGNvbXByZXNzaW9uPSJ4eiIpCisKKyAg
ICBAd2l0aF9zZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X2NvbXByZXNzaW9uX3Vuc3VwcG9ydGVkX2Ns
aWVudChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToK
KyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KGNvbXByZXNzaW9uPSJ4eiIpCisKKyAgICBA
d2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgiL3N1YnByb3RvY29sIikKKyAgICBkZWYg
dGVzdF9ub19zdWJwcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VydmVyX3N1YnByb3RvY29sID0g
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3N1YnByb3RvY29sLCByZXByKE5vbmUpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnN1YnByb3RvY29sLCBOb25lKQorCisgICAg
QHdpdGhfc2VydmVyKHN1YnByb3RvY29scz1bInN1cGVyY2hhdCIsICJjaGF0Il0pCisgICAgQHdp
dGhfY2xpZW50KCIvc3VicHJvdG9jb2wiLCBzdWJwcm90b2NvbHM9WyJvdGhlcmNoYXQiLCAiY2hh
dCJdKQorICAgIGRlZiB0ZXN0X3N1YnByb3RvY29sKHNlbGYpOgorICAgICAgICBzZXJ2ZXJfc3Vi
cHJvdG9jb2wgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3Yo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfc3VicHJvdG9jb2wsIHJlcHIoImNo
YXQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5zdWJwcm90b2NvbCwg
ImNoYXQiKQorCisgICAgQHdpdGhfc2VydmVyKHN1YnByb3RvY29scz1bInN1cGVyY2hhdCJdKQor
ICAgIEB3aXRoX2NsaWVudCgiL3N1YnByb3RvY29sIiwgc3VicHJvdG9jb2xzPVsib3RoZXJjaGF0
Il0pCisgICAgZGVmIHRlc3Rfc3VicHJvdG9jb2xfbm90X2FjY2VwdGVkKHNlbGYpOgorICAgICAg
ICBzZXJ2ZXJfc3VicHJvdG9jb2wgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
Y2xpZW50LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfc3VicHJvdG9j
b2wsIHJlcHIoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuc3Vi
cHJvdG9jb2wsIE5vbmUpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB3aXRoX2NsaWVudCgi
L3N1YnByb3RvY29sIiwgc3VicHJvdG9jb2xzPVsib3RoZXJjaGF0IiwgImNoYXQiXSkKKyAgICBk
ZWYgdGVzdF9zdWJwcm90b2NvbF9ub3Rfb2ZmZXJlZChzZWxmKToKKyAgICAgICAgc2VydmVyX3N1
YnByb3RvY29sID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2
KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3N1YnByb3RvY29sLCByZXByKE5v
bmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnN1YnByb3RvY29sLCBO
b25lKQorCisgICAgQHdpdGhfc2VydmVyKHN1YnByb3RvY29scz1bInN1cGVyY2hhdCIsICJjaGF0
Il0pCisgICAgQHdpdGhfY2xpZW50KCIvc3VicHJvdG9jb2wiKQorICAgIGRlZiB0ZXN0X3N1YnBy
b3RvY29sX25vdF9yZXF1ZXN0ZWQoc2VsZik6CisgICAgICAgIHNlcnZlcl9zdWJwcm90b2NvbCA9
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9zdWJwcm90b2NvbCwgcmVwcihOb25lKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5zdWJwcm90b2NvbCwgTm9uZSkKKworICAg
IEB3aXRoX3NlcnZlcihzdWJwcm90b2NvbHM9WyJzdXBlcmNoYXQiXSkKKyAgICBAdW5pdHRlc3Qu
bW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wsICJwcm9jZXNzX3N1YnBy
b3RvY29sIikKKyAgICBkZWYgdGVzdF9zdWJwcm90b2NvbF9lcnJvcihzZWxmLCBfcHJvY2Vzc19z
dWJwcm90b2NvbCk6CisgICAgICAgIF9wcm9jZXNzX3N1YnByb3RvY29sLnJldHVybl92YWx1ZSA9
ICJzdXBlcmNoYXQiCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOZWdvdGlhdGlv
bkVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCIvc3VicHJvdG9jb2wiLCBz
dWJwcm90b2NvbHM9WyJvdGhlcmNoYXQiXSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkK
KworICAgIEB3aXRoX3NlcnZlcihzdWJwcm90b2NvbHM9WyJzdXBlcmNoYXQiXSkKKyAgICBAdW5p
dHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0U2VydmVyUHJvdG9jb2wsICJwcm9jZXNz
X3N1YnByb3RvY29sIikKKyAgICBkZWYgdGVzdF9zdWJwcm90b2NvbF9lcnJvcl9ub19zdWJwcm90
b2NvbHMoc2VsZiwgX3Byb2Nlc3Nfc3VicHJvdG9jb2wpOgorICAgICAgICBfcHJvY2Vzc19zdWJw
cm90b2NvbC5yZXR1cm5fdmFsdWUgPSAic3VwZXJjaGF0IgorCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2Ns
aWVudCgiL3N1YnByb3RvY29sIikKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKworICAg
IEB3aXRoX3NlcnZlcihzdWJwcm90b2NvbHM9WyJzdXBlcmNoYXQiLCAiY2hhdCJdKQorICAgIEB1
bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbCwgInByb2Nl
c3Nfc3VicHJvdG9jb2wiKQorICAgIGRlZiB0ZXN0X3N1YnByb3RvY29sX2Vycm9yX3R3b19zdWJw
cm90b2NvbHMoc2VsZiwgX3Byb2Nlc3Nfc3VicHJvdG9jb2wpOgorICAgICAgICBfcHJvY2Vzc19z
dWJwcm90b2NvbC5yZXR1cm5fdmFsdWUgPSAic3VwZXJjaGF0LCBjaGF0IgorCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgICAgICAgICBzZWxm
LnN0YXJ0X2NsaWVudCgiL3N1YnByb3RvY29sIiwgc3VicHJvdG9jb2xzPVsic3VwZXJjaGF0Iiwg
ImNoYXQiXSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKworICAgIEB3aXRoX3NlcnZl
cigpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndlYnNvY2tldHMuc2VydmVyLnJlYWRfcmVx
dWVzdCIpCisgICAgZGVmIHRlc3Rfc2VydmVyX3JlY2VpdmVzX21hbGZvcm1lZF9yZXF1ZXN0KHNl
bGYsIF9yZWFkX3JlcXVlc3QpOgorICAgICAgICBfcmVhZF9yZXF1ZXN0LnNpZGVfZWZmZWN0ID0g
VmFsdWVFcnJvcigicmVhZF9yZXF1ZXN0IGZhaWxlZCIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhJbnZhbGlkSGFuZHNoYWtlKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xp
ZW50KCkKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndl
YnNvY2tldHMuY2xpZW50LnJlYWRfcmVzcG9uc2UiKQorICAgIGRlZiB0ZXN0X2NsaWVudF9yZWNl
aXZlc19tYWxmb3JtZWRfcmVzcG9uc2Uoc2VsZiwgX3JlYWRfcmVzcG9uc2UpOgorICAgICAgICBf
cmVhZF9yZXNwb25zZS5zaWRlX2VmZmVjdCA9IFZhbHVlRXJyb3IoInJlYWRfcmVzcG9uc2UgZmFp
bGVkIikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIYW5kc2hha2Up
OgorICAgICAgICAgICAgc2VsZi5zdGFydF9jbGllbnQoKQorICAgICAgICBzZWxmLnJ1bl9sb29w
X29uY2UoKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgi
d2Vic29ja2V0cy5jbGllbnQuYnVpbGRfcmVxdWVzdCIpCisgICAgZGVmIHRlc3RfY2xpZW50X3Nl
bmRzX2ludmFsaWRfaGFuZHNoYWtlX3JlcXVlc3Qoc2VsZiwgX2J1aWxkX3JlcXVlc3QpOgorICAg
ICAgICBkZWYgd3JvbmdfYnVpbGRfcmVxdWVzdChoZWFkZXJzKToKKyAgICAgICAgICAgIHJldHVy
biAiNDIiCisKKyAgICAgICAgX2J1aWxkX3JlcXVlc3Quc2lkZV9lZmZlY3QgPSB3cm9uZ19idWls
ZF9yZXF1ZXN0CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkSGFuZHNo
YWtlKToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCkKKworICAgIEB3aXRoX3NlcnZl
cigpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndlYnNvY2tldHMuc2VydmVyLmJ1aWxkX3Jl
c3BvbnNlIikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfc2VuZHNfaW52YWxpZF9oYW5kc2hha2VfcmVz
cG9uc2Uoc2VsZiwgX2J1aWxkX3Jlc3BvbnNlKToKKyAgICAgICAgZGVmIHdyb25nX2J1aWxkX3Jl
c3BvbnNlKGhlYWRlcnMsIGtleSk6CisgICAgICAgICAgICByZXR1cm4gYnVpbGRfcmVzcG9uc2Uo
aGVhZGVycywgIjQyIikKKworICAgICAgICBfYnVpbGRfcmVzcG9uc2Uuc2lkZV9lZmZlY3QgPSB3
cm9uZ19idWlsZF9yZXNwb25zZQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52
YWxpZEhhbmRzaGFrZSk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVudCgpCisKKyAgICBA
d2l0aF9zZXJ2ZXIoKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCJ3ZWJzb2NrZXRzLmNsaWVu
dC5yZWFkX3Jlc3BvbnNlIikKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfZG9lc19ub3Rfc3dpdGNoX3By
b3RvY29scyhzZWxmLCBfcmVhZF9yZXNwb25zZSk6CisgICAgICAgIGFzeW5jIGRlZiB3cm9uZ19y
ZWFkX3Jlc3BvbnNlKHN0cmVhbSk6CisgICAgICAgICAgICBzdGF0dXNfY29kZSwgcmVhc29uLCBo
ZWFkZXJzID0gYXdhaXQgcmVhZF9yZXNwb25zZShzdHJlYW0pCisgICAgICAgICAgICByZXR1cm4g
NDAwLCAiQmFkIFJlcXVlc3QiLCBoZWFkZXJzCisKKyAgICAgICAgX3JlYWRfcmVzcG9uc2Uuc2lk
ZV9lZmZlY3QgPSB3cm9uZ19yZWFkX3Jlc3BvbnNlCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhJbnZhbGlkU3RhdHVzQ29kZSk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X2NsaWVu
dCgpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQor
ICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCJ3ZWJzb2NrZXRzLnNlcnZlci5XZWJTb2NrZXRTZXJ2
ZXJQcm90b2NvbC5wcm9jZXNzX3JlcXVlc3QiKQorICAgIGRlZiB0ZXN0X3NlcnZlcl9lcnJvcl9p
bl9oYW5kc2hha2Uoc2VsZiwgX3Byb2Nlc3NfcmVxdWVzdCk6CisgICAgICAgIF9wcm9jZXNzX3Jl
cXVlc3Quc2lkZV9lZmZlY3QgPSBFeGNlcHRpb24oInByb2Nlc3NfcmVxdWVzdCBjcmFzaGVkIikK
KworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIYW5kc2hha2UpOgorICAg
ICAgICAgICAgc2VsZi5zdGFydF9jbGllbnQoKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBA
dW5pdHRlc3QubW9jay5wYXRjaCgid2Vic29ja2V0cy5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJv
dG9jb2wuc2VuZCIpCisgICAgZGVmIHRlc3Rfc2VydmVyX2hhbmRsZXJfY3Jhc2hlcyhzZWxmLCBz
ZW5kKToKKyAgICAgICAgc2VuZC5zaWRlX2VmZmVjdCA9IFZhbHVlRXJyb3IoInNlbmQgZmFpbGVk
IikKKworICAgICAgICB3aXRoIHNlbGYudGVtcF9jbGllbnQoKToKKyAgICAgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAg
ICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5jbGllbnQucmVjdigp
KQorCisgICAgICAgICMgQ29ubmVjdGlvbiBlbmRzIHdpdGggYW4gdW5leHBlY3RlZCBlcnJvci4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5jbG9zZV9jb2RlLCAxMDExKQor
CisgICAgQHdpdGhfc2VydmVyKCkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgid2Vic29ja2V0
cy5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJvdG9jb2wuY2xvc2UiKQorICAgIGRlZiB0ZXN0X3Nl
cnZlcl9jbG9zZV9jcmFzaGVzKHNlbGYsIGNsb3NlKToKKyAgICAgICAgY2xvc2Uuc2lkZV9lZmZl
Y3QgPSBWYWx1ZUVycm9yKCJjbG9zZSBmYWlsZWQiKQorCisgICAgICAgIHdpdGggc2VsZi50ZW1w
X2NsaWVudCgpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LmNsaWVudC5zZW5kKCJIZWxsbyEiKSkKKyAgICAgICAgICAgIHJlcGx5ID0gc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShzZWxmLmNsaWVudC5yZWN2KCkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcGx5LCAiSGVsbG8hIikKKworICAgICAgICAjIENvbm5lY3Rpb24gZW5kcyB3
aXRoIGFuIGFibm9ybWFsIGNsb3N1cmUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5j
bGllbnQuY2xvc2VfY29kZSwgMTAwNikKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHdpdGhf
Y2xpZW50KCkKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3QoV2ViU29ja2V0Q2xpZW50
UHJvdG9jb2wsICJoYW5kc2hha2UiKQorICAgIGRlZiB0ZXN0X2NsaWVudF9jbG9zZXNfY29ubmVj
dGlvbl9iZWZvcmVfaGFuZHNoYWtlKHNlbGYsIGhhbmRzaGFrZSk6CisgICAgICAgICMgV2UgaGF2
ZSBtb2NrZWQgdGhlIGhhbmRzaGFrZSgpIG1ldGhvZCB0byBwcmV2ZW50IHRoZSBjbGllbnQgZnJv
bQorICAgICAgICAjIHBlcmZvcm1pbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlLiBGb3JjZSBpdCB0
byBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgc2VsZi5jbGllbnQudHJhbnNwb3J0LmNs
b3NlKCkKKyAgICAgICAgIyBUaGUgc2VydmVyIHNob3VsZCBzdG9wIHByb3Blcmx5IGFueXdheS4g
SXQgdXNlZCB0byBoYW5nIGJlY2F1c2UgdGhlCisgICAgICAgICMgdGFzayBoYW5kbGluZyB0aGUg
Y29ubmVjdGlvbiB3YXMgd2FpdGluZyBmb3IgdGhlIG9wZW5pbmcgaGFuZHNoYWtlLgorCisgICAg
QHdpdGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1TbG93T3BlbmluZ0hhbmRzaGFrZVByb3RvY29s
KQorICAgIGRlZiB0ZXN0X3NlcnZlcl9zaHV0c19kb3duX2R1cmluZ19vcGVuaW5nX2hhbmRzaGFr
ZShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoNSAqIE1TLCBzZWxmLnNlcnZl
ci5jbG9zZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkU3RhdHVzQ29k
ZSkgYXMgcmFpc2VkOgorICAgICAgICAgICAgc2VsZi5zdGFydF9jbGllbnQoKQorICAgICAgICBl
eGNlcHRpb24gPSByYWlzZWQuZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBzdHIoZXhjZXB0aW9uKSwgInNlcnZlciByZWplY3RlZCBXZWJTb2NrZXQgY29u
bmVjdGlvbjogSFRUUCA1MDMiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eGNlcHRpb24uc3RhdHVzX2NvZGUsIDUwMykKKworICAgIEB3aXRoX3NlcnZlcigpCisgICAgZGVm
IHRlc3Rfc2VydmVyX3NodXRzX2Rvd25fZHVyaW5nX2Nvbm5lY3Rpb25faGFuZGxpbmcoc2VsZik6
CisgICAgICAgIHdpdGggc2VsZi50ZW1wX2NsaWVudCgpOgorICAgICAgICAgICAgc2VydmVyX3dz
ID0gbmV4dChpdGVyKHNlbGYuc2VydmVyLndlYnNvY2tldHMpKQorICAgICAgICAgICAgc2VsZi5z
ZXJ2ZXIuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0
aW9uQ2xvc2VkKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRl
KHNlbGYuY2xpZW50LnJlY3YoKSkKKworICAgICAgICAjIFdlYnNvY2tldCBjb25uZWN0aW9uIGNs
b3NlcyBwcm9wZXJseSB3aXRoIDEwMDEgR29pbmcgQXdheS4KKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLmNsaWVudC5jbG9zZV9jb2RlLCAxMDAxKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlcnZlcl93cy5jbG9zZV9jb2RlLCAxMDAxKQorCisgICAgQHdpdGhfc2VydmVyKCkKKyAg
ICBkZWYgdGVzdF9zZXJ2ZXJfc2h1dHNfZG93bl93YWl0c191bnRpbF9oYW5kbGVyc190ZXJtaW5h
dGUoc2VsZik6CisgICAgICAgICMgVGhpcyBoYW5kbGVyIHdhaXRzIGEgYml0IGFmdGVyIHRoZSBj
b25uZWN0aW9uIGlzIGNsb3NlZCBpbiBvcmRlcgorICAgICAgICAjIHRvIHRlc3QgdGhhdCB3YWl0
X2Nsb3NlZCgpIHJlYWxseSB3YWl0cyBmb3IgaGFuZGxlcnMgdG8gY29tcGxldGUuCisgICAgICAg
IHNlbGYuc3RhcnRfY2xpZW50KCIvc2xvd19zdG9wIikKKyAgICAgICAgc2VydmVyX3dzID0gbmV4
dChpdGVyKHNlbGYuc2VydmVyLndlYnNvY2tldHMpKQorCisgICAgICAgICMgVGVzdCB0aGF0IHRo
ZSBoYW5kbGVyIHRhc2sga2VlcHMgcnVubmluZyBhZnRlciBjbG9zZSgpLgorICAgICAgICBzZWxm
LnNlcnZlci5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5
bmNpby5zbGVlcChNUykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyX3dzLmhhbmRs
ZXJfdGFzay5kb25lKCkpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIGhhbmRsZXIgdGFzayB0
ZXJtaW5hdGVzIGJlZm9yZSB3YWl0X2Nsb3NlZCgpIHJldHVybnMuCisgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5zZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHNlcnZlcl93cy5oYW5kbGVyX3Rhc2suZG9uZSgpKQorCisgICAgQHdp
dGhfc2VydmVyKGNyZWF0ZV9wcm90b2NvbD1Gb3JiaWRkZW5TZXJ2ZXJQcm90b2NvbCkKKyAgICBk
ZWYgdGVzdF9pbnZhbGlkX3N0YXR1c19lcnJvcl9kdXJpbmdfY2xpZW50X2Nvbm5lY3Qoc2VsZik6
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFN0YXR1c0NvZGUpIGFzIHJh
aXNlZDoKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCkKKyAgICAgICAgZXhjZXB0aW9u
ID0gcmFpc2VkLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgc3RyKGV4Y2VwdGlvbiksICJzZXJ2ZXIgcmVqZWN0ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb246
IEhUVFAgNDAzIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjZXB0aW9u
LnN0YXR1c19jb2RlLCA0MDMpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIEB1bml0dGVzdC5t
b2NrLnBhdGNoKAorICAgICAgICAid2Vic29ja2V0cy5zZXJ2ZXIuV2ViU29ja2V0U2VydmVyUHJv
dG9jb2wud3JpdGVfaHR0cF9yZXNwb25zZSIKKyAgICApCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0
Y2goIndlYnNvY2tldHMuc2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLnJlYWRfaHR0cF9y
ZXF1ZXN0IikKKyAgICBkZWYgdGVzdF9jb25uZWN0aW9uX2Vycm9yX2R1cmluZ19vcGVuaW5nX2hh
bmRzaGFrZSgKKyAgICAgICAgc2VsZiwgX3JlYWRfaHR0cF9yZXF1ZXN0LCBfd3JpdGVfaHR0cF9y
ZXNwb25zZQorICAgICk6CisgICAgICAgIF9yZWFkX2h0dHBfcmVxdWVzdC5zaWRlX2VmZmVjdCA9
IENvbm5lY3Rpb25FcnJvcgorCisgICAgICAgICMgVGhpcyBleGNlcHRpb24gaXMgY3VycmVudGx5
IHBsYXRmb3JtLWRlcGVuZGVudC4gSXQgd2FzIG9ic2VydmVkIHRvCisgICAgICAgICMgYmUgQ29u
bmVjdGlvblJlc2V0RXJyb3Igb24gTGludXggaW4gdGhlIG5vbi1UTFMgY2FzZSwgYW5kCisgICAg
ICAgICMgSW52YWxpZE1lc3NhZ2Ugb3RoZXJ3aXNlIChpbmNsdWRpbmcgYm90aCBMaW51eCBhbmQg
bWFjT1MpLiBUaGlzCisgICAgICAgICMgZG9lc24ndCBtYXR0ZXIgdGhvdWdoIHNpbmNlIHRoaXMg
dGVzdCBpcyBwcmltYXJpbHkgZm9yIHRlc3RpbmcgYQorICAgICAgICAjIGNvZGUgcGF0aCBvbiB0
aGUgc2VydmVyIHNpZGUuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9u
KToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfY2xpZW50KCkKKworICAgICAgICAjIE5vIHJlc3Bv
bnNlIG11c3Qgbm90IGJlIHdyaXR0ZW4gaWYgdGhlIG5ldHdvcmsgY29ubmVjdGlvbiBpcyBicm9r
ZW4uCisgICAgICAgIF93cml0ZV9odHRwX3Jlc3BvbnNlLmFzc2VydF9ub3RfY2FsbGVkKCkKKwor
ICAgIEB3aXRoX3NlcnZlcigpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goIndlYnNvY2tldHMu
c2VydmVyLldlYlNvY2tldFNlcnZlclByb3RvY29sLmNsb3NlIikKKyAgICBkZWYgdGVzdF9jb25u
ZWN0aW9uX2Vycm9yX2R1cmluZ19jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjbG9zZSk6CisgICAg
ICAgIGNsb3NlLnNpZGVfZWZmZWN0ID0gQ29ubmVjdGlvbkVycm9yCisKKyAgICAgICAgd2l0aCBz
ZWxmLnRlbXBfY2xpZW50KCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYuY2xpZW50LnNlbmQoIkhlbGxvISIpKQorICAgICAgICAgICAgcmVwbHkgPSBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYuY2xpZW50LnJlY3YoKSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVwbHksICJIZWxsbyEiKQorCisgICAgICAgICMgQ29ubmVjdGlv
biBlbmRzIHdpdGggYW4gYWJub3JtYWwgY2xvc3VyZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLmNsaWVudC5jbG9zZV9jb2RlLCAxMDA2KQorCisKK2NsYXNzIENsaWVudFNlcnZlclRl
c3RzKAorICAgIENvbW1vbkNsaWVudFNlcnZlclRlc3RzLCBDbGllbnRTZXJ2ZXJUZXN0c01peGlu
LCBBc3luY2lvVGVzdENhc2UKKyk6CisgICAgcGFzcworCisKK2NsYXNzIFNlY3VyZUNsaWVudFNl
cnZlclRlc3RzKAorICAgIENvbW1vbkNsaWVudFNlcnZlclRlc3RzLCBTZWN1cmVDbGllbnRTZXJ2
ZXJUZXN0c01peGluLCBBc3luY2lvVGVzdENhc2UKKyk6CisKKyAgICAjIFRMUyBvdmVyIFVuaXgg
c29ja2V0cyBkb2Vzbid0IG1ha2Ugc2Vuc2UuCisgICAgdGVzdF91bml4X3NvY2tldCA9IE5vbmUK
KworICAgIEB3aXRoX3NlcnZlcigpCisgICAgZGVmIHRlc3Rfd3NfdXJpX2lzX3JlamVjdGVkKHNl
bGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAg
ICAgICAgY29ubmVjdChnZXRfc2VydmVyX3VyaShzZWxmLnNlcnZlciwgc2VjdXJlPUZhbHNlKSwg
c3NsPXNlbGYuY2xpZW50X2NvbnRleHQpCisKKyAgICBAd2l0aF9zZXJ2ZXIoKQorICAgIGRlZiB0
ZXN0X3JlZGlyZWN0X2luc2VjdXJlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBfdGVzdF9yZWRp
cmVjdGluZ19zZXJ2ZXIoCisgICAgICAgICAgICBzZWxmLCBodHRwLkhUVFBTdGF0dXMuRk9VTkQs
IGZvcmNlX2luc2VjdXJlPVRydWUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoSW52YWxpZEhhbmRzaGFrZSk6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1w
X3Rlc3RfY2xpZW50KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBu
b3QgcmFpc2UiKSAgIyBwcmFnbWE6IG5vIGNvdmVyCisKKworY2xhc3MgQ2xpZW50U2VydmVyT3Jp
Z2luVGVzdHMoQXN5bmNpb1Rlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jaGVja2luZ19vcmlnaW5f
c3VjY2VlZHMoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoCisgICAgICAgICAgICBzZXJ2ZShoYW5kbGVyLCAibG9jYWxob3N0IiwgMCwgb3JpZ2lu
cz1bImh0dHA6Ly9sb2NhbGhvc3QiXSkKKyAgICAgICAgKQorICAgICAgICBjbGllbnQgPSBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgY29ubmVjdChnZXRfc2VydmVy
X3VyaShzZXJ2ZXIpLCBvcmlnaW49Imh0dHA6Ly9sb2NhbGhvc3QiKQorICAgICAgICApCisKKyAg
ICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQuc2VuZCgiSGVsbG8hIikp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShj
bGllbnQucmVjdigpKSwgIkhlbGxvISIpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9j
b21wbGV0ZShjbGllbnQuY2xvc2UoKSkKKyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKworICAg
IGRlZiB0ZXN0X2NoZWNraW5nX29yaWdpbl9mYWlscyhzZWxmKToKKyAgICAgICAgc2VydmVyID0g
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHNlcnZlKGhhbmRsZXIs
ICJsb2NhbGhvc3QiLCAwLCBvcmlnaW5zPVsiaHR0cDovL2xvY2FsaG9zdCJdKQorICAgICAgICAp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEludmFs
aWRIYW5kc2hha2UsICJzZXJ2ZXIgcmVqZWN0ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb246IEhUVFAg
NDAzIgorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0
ZSgKKyAgICAgICAgICAgICAgICBjb25uZWN0KGdldF9zZXJ2ZXJfdXJpKHNlcnZlciksIG9yaWdp
bj0iaHR0cDovL290aGVyaG9zdCIpCisgICAgICAgICAgICApCisKKyAgICAgICAgc2VydmVyLmNs
b3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9j
bG9zZWQoKSkKKworICAgIGRlZiB0ZXN0X2NoZWNraW5nX29yaWdpbnNfZmFpbHNfd2l0aF9tdWx0
aXBsZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKAorICAgICAgICAgICAgc2VydmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDAsIG9y
aWdpbnM9WyJodHRwOi8vbG9jYWxob3N0Il0pCisgICAgICAgICkKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgSW52YWxpZEhhbmRzaGFrZSwgInNlcnZl
ciByZWplY3RlZCBXZWJTb2NrZXQgY29ubmVjdGlvbjogSFRUUCA0MDAiCisgICAgICAgICk6Cisg
ICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgICAg
IGNvbm5lY3QoCisgICAgICAgICAgICAgICAgICAgIGdldF9zZXJ2ZXJfdXJpKHNlcnZlciksCisg
ICAgICAgICAgICAgICAgICAgIG9yaWdpbj0iaHR0cDovL2xvY2FsaG9zdCIsCisgICAgICAgICAg
ICAgICAgICAgIGV4dHJhX2hlYWRlcnM9WygiT3JpZ2luIiwgImh0dHA6Ly9vdGhlcmhvc3QiKV0s
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIHNlcnZlci5jbG9z
ZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VydmVyLndhaXRfY2xv
c2VkKCkpCisKKyAgICBkZWYgdGVzdF9jaGVja2luZ19sYWNrX29mX29yaWdpbl9zdWNjZWVkcyhz
ZWxmKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAg
ICAgICAgICAgIHNlcnZlKGhhbmRsZXIsICJsb2NhbGhvc3QiLCAwLCBvcmlnaW5zPVtOb25lXSkK
KyAgICAgICAgKQorICAgICAgICBjbGllbnQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRl
KGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShjbGllbnQuc2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQucmVjdigpKSwgIkhl
bGxvISIpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQuY2xv
c2UoKSkKKyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKworICAgIGRlZiB0ZXN0X2NoZWNraW5n
X2xhY2tfb2Zfb3JpZ2luX3N1Y2NlZWRzX2JhY2t3YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgor
ICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByZWNv
cmRlZF93YXJuaW5nczoKKyAgICAgICAgICAgIHNlcnZlciA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoCisgICAgICAgICAgICAgICAgc2VydmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDAs
IG9yaWdpbnM9WyIiXSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoY29ubmVjdChnZXRfc2VydmVyX3VyaShzZXJ2ZXIpKSkK
KworICAgICAgICBzZWxmLmFzc2VydERlcHJlY2F0aW9uV2FybmluZ3MoCisgICAgICAgICAgICBy
ZWNvcmRlZF93YXJuaW5ncywgWyJ1c2UgTm9uZSBpbnN0ZWFkIG9mICcnIGluIG9yaWdpbnMiXQor
ICAgICAgICApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQu
c2VuZCgiSGVsbG8hIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShjbGllbnQucmVjdigpKSwgIkhlbGxvISIpCisKKyAgICAgICAgc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShjbGllbnQuY2xvc2UoKSkKKyAgICAgICAgc2VydmVyLmNs
b3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9j
bG9zZWQoKSkKKworCitjbGFzcyBZaWVsZEZyb21UZXN0cyhBc3luY2lvVGVzdENhc2UpOgorICAg
IGRlZiB0ZXN0X2NsaWVudChzZWxmKToKKyAgICAgICAgc3RhcnRfc2VydmVyID0gc2VydmUoaGFu
ZGxlciwgImxvY2FsaG9zdCIsIDApCisgICAgICAgIHNlcnZlciA9IHNlbGYubG9vcC5ydW5fdW50
aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQorCisgICAgICAgICMgQGFzeW5jaW8uY29yb3V0aW5l
IGlzIGRlcHJlY2F0ZWQgb24gUHl0aG9uIOKJpSAzLjgKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5j
YXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSk6CisKKyAgICAgICAgICAgIEBhc3luY2lvLmNvcm91
dGluZQorICAgICAgICAgICAgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgICAgICAjIFlp
ZWxkIGZyb20gY29ubmVjdC4KKyAgICAgICAgICAgICAgICBjbGllbnQgPSB5aWVsZCBmcm9tIGNv
bm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuT1BFTikKKyAgICAgICAgICAgICAgICB5aWVsZCBm
cm9tIGNsaWVudC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMT1NFRCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHJ1bl9jbGllbnQoKSkKKworICAgICAgICBzZXJ2ZXIuY2xvc2UoKQorICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlcnZlci53YWl0X2Nsb3NlZCgpKQorCisgICAg
ZGVmIHRlc3Rfc2VydmVyKHNlbGYpOgorICAgICAgICAjIEBhc3luY2lvLmNvcm91dGluZSBpcyBk
ZXByZWNhdGVkIG9uIFB5dGhvbiDiiaUgMy44CisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hf
d2FybmluZ3MocmVjb3JkPVRydWUpOgorCisgICAgICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUK
KyAgICAgICAgICAgIGRlZiBydW5fc2VydmVyKCk6CisgICAgICAgICAgICAgICAgIyBZaWVsZCBm
cm9tIHNlcnZlLgorICAgICAgICAgICAgICAgIHNlcnZlciA9IHlpZWxkIGZyb20gc2VydmUoaGFu
ZGxlciwgImxvY2FsaG9zdCIsIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNl
cnZlci5zb2NrZXRzKQorICAgICAgICAgICAgICAgIHNlcnZlci5jbG9zZSgpCisgICAgICAgICAg
ICAgICAgeWllbGQgZnJvbSBzZXJ2ZXIud2FpdF9jbG9zZWQoKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc2VydmVyLnNvY2tldHMpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShydW5fc2VydmVyKCkpCisKKworY2xhc3MgQXN5bmNBd2FpdFRlc3RzKEFz
eW5jaW9UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY2xpZW50KHNlbGYpOgorICAgICAgICBzdGFy
dF9zZXJ2ZXIgPSBzZXJ2ZShoYW5kbGVyLCAibG9jYWxob3N0IiwgMCkKKyAgICAgICAgc2VydmVy
ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCisKKyAgICAgICAg
YXN5bmMgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgICMgQXdhaXQgY29ubmVjdC4KKyAg
ICAgICAgICAgIGNsaWVudCA9IGF3YWl0IGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5PUEVOKQor
ICAgICAgICAgICAgYXdhaXQgY2xpZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTE9TRUQpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShydW5fY2xpZW50KCkpCisKKyAgICAgICAgc2VydmVyLmNsb3NlKCkK
KyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQo
KSkKKworICAgIGRlZiB0ZXN0X3NlcnZlcihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9z
ZXJ2ZXIoKToKKyAgICAgICAgICAgICMgQXdhaXQgc2VydmUuCisgICAgICAgICAgICBzZXJ2ZXIg
PSBhd2FpdCBzZXJ2ZShoYW5kbGVyLCAibG9jYWxob3N0IiwgMCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzZXJ2ZXIuc29ja2V0cykKKyAgICAgICAgICAgIHNlcnZlci5jbG9zZSgpCisg
ICAgICAgICAgICBhd2FpdCBzZXJ2ZXIud2FpdF9jbG9zZWQoKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuc29ja2V0cykKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKHJ1bl9zZXJ2ZXIoKSkKKworCitjbGFzcyBDb250ZXh0TWFuYWdlclRlc3RzKEFz
eW5jaW9UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY2xpZW50KHNlbGYpOgorICAgICAgICBzdGFy
dF9zZXJ2ZXIgPSBzZXJ2ZShoYW5kbGVyLCAibG9jYWxob3N0IiwgMCkKKyAgICAgICAgc2VydmVy
ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydF9zZXJ2ZXIpCisKKyAgICAgICAg
YXN5bmMgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgICMgVXNlIGNvbm5lY3QgYXMgYW4g
YXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlci4KKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29u
bmVjdChnZXRfc2VydmVyX3VyaShzZXJ2ZXIpKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLk9QRU4pCisKKyAgICAgICAgICAg
ICMgQ2hlY2sgdGhhdCBleGl0aW5nIHRoZSBjb250ZXh0IG1hbmFnZXIgY2xvc2VkIHRoZSBjb25u
ZWN0aW9uLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRl
LkNMT1NFRCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bl9jbGll
bnQoKSkKKworICAgICAgICBzZXJ2ZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlcnZlci53YWl0X2Nsb3NlZCgpKQorCisgICAgZGVmIHRlc3Rfc2VydmVy
KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgcnVuX3NlcnZlcigpOgorICAgICAgICAgICAgIyBV
c2Ugc2VydmUgYXMgYW4gYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlci4KKyAgICAgICAgICAg
IGFzeW5jIHdpdGggc2VydmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDApIGFzIHNlcnZlcjoKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnNvY2tldHMpCisKKyAgICAgICAg
ICAgICMgQ2hlY2sgdGhhdCBleGl0aW5nIHRoZSBjb250ZXh0IG1hbmFnZXIgY2xvc2VkIHRoZSBz
ZXJ2ZXIuCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5zb2NrZXRzKQorCisg
ICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuX3NlcnZlcigpKQorCisgICAg
QHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIiksICJ0aGlzIHRl
c3QgcmVxdWlyZXMgVW5peCBzb2NrZXRzIikKKyAgICBkZWYgdGVzdF91bml4X3NlcnZlcihzZWxm
KToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIocGF0aCk6CisgICAgICAgICAgICBhc3lu
YyB3aXRoIHVuaXhfc2VydmUoaGFuZGxlciwgcGF0aCkgYXMgc2VydmVyOgorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc29ja2V0cykKKworICAgICAgICAgICAgIyBDaGVj
ayB0aGF0IGV4aXRpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBjbG9zZWQgdGhlIHNlcnZlci4KKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLnNvY2tldHMpCisKKyAgICAgICAgd2l0
aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKyAgICAgICAgICAg
IHBhdGggPSBieXRlcyhwYXRobGliLlBhdGgodGVtcF9kaXIpIC8gIndlYnNvY2tldHMiKQorICAg
ICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW5fc2VydmVyKHBhdGgpKQor
CisKK2NsYXNzIEFzeW5jSXRlcmF0b3JUZXN0cyhBc3luY2lvVGVzdENhc2UpOgorCisgICAgIyBU
aGlzIGlzIGEgcHJvdG9jb2wtbGV2ZWwgZmVhdHVyZSwgYnV0IHNpbmNlIGl0J3MgYSBoaWdoLWxl
dmVsIEFQSSwgaXQgaXMKKyAgICAjIG11Y2ggZWFzaWVyIHRvIGV4ZXJjaXNlIGF0IHRoZSBjbGll
bnQgb3Igc2VydmVyIGxldmVsLgorCisgICAgTUVTU0FHRVMgPSBbIjMiLCAiMiIsICIxIiwgIkZp
cmUhIl0KKworICAgIGRlZiB0ZXN0X2l0ZXJhdGVfb25fbWVzc2FnZXMoc2VsZik6CisgICAgICAg
IGFzeW5jIGRlZiBoYW5kbGVyKHdzLCBwYXRoKToKKyAgICAgICAgICAgIGZvciBtZXNzYWdlIGlu
IHNlbGYuTUVTU0FHRVM6CisgICAgICAgICAgICAgICAgYXdhaXQgd3Muc2VuZChtZXNzYWdlKQor
CisgICAgICAgIHN0YXJ0X3NlcnZlciA9IHNlcnZlKGhhbmRsZXIsICJsb2NhbGhvc3QiLCAwKQor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHN0YXJ0X3NlcnZl
cikKKworICAgICAgICBtZXNzYWdlcyA9IFtdCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGll
bnQoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIG1lc3NhZ2VzCisgICAgICAgICAgICBhc3luYyB3
aXRoIGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkgYXMgd3M6CisgICAgICAgICAgICAg
ICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd3M6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vz
LmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUo
cnVuX2NsaWVudCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIHNlbGYu
TUVTU0FHRVMpCisKKyAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShzZXJ2ZXIud2FpdF9jbG9zZWQoKSkKKworICAgIGRlZiB0ZXN0X2l0
ZXJhdGVfb25fbWVzc2FnZXNfZ29pbmdfYXdheV9leGl0X29rKHNlbGYpOgorICAgICAgICBhc3lu
YyBkZWYgaGFuZGxlcih3cywgcGF0aCk6CisgICAgICAgICAgICBmb3IgbWVzc2FnZSBpbiBzZWxm
Lk1FU1NBR0VTOgorICAgICAgICAgICAgICAgIGF3YWl0IHdzLnNlbmQobWVzc2FnZSkKKyAgICAg
ICAgICAgIGF3YWl0IHdzLmNsb3NlKDEwMDEpCisKKyAgICAgICAgc3RhcnRfc2VydmVyID0gc2Vy
dmUoaGFuZGxlciwgImxvY2FsaG9zdCIsIDApCisgICAgICAgIHNlcnZlciA9IHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc3RhcnRfc2VydmVyKQorCisgICAgICAgIG1lc3NhZ2VzID0gW10K
KworICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudCgpOgorICAgICAgICAgICAgbm9ubG9jYWwg
bWVzc2FnZXMKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChnZXRfc2VydmVyX3VyaShz
ZXJ2ZXIpKSBhcyB3czoKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgbWVzc2FnZSBpbiB3czoK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCisKKyAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW5fY2xpZW50KCkpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtZXNzYWdlcywgc2VsZi5NRVNTQUdFUykKKworICAgICAgICBzZXJ2ZXIu
Y2xvc2UoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlcnZlci53YWl0
X2Nsb3NlZCgpKQorCisgICAgZGVmIHRlc3RfaXRlcmF0ZV9vbl9tZXNzYWdlc19pbnRlcm5hbF9l
cnJvcl9leGl0X25vdF9vayhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGhhbmRsZXIod3MsIHBh
dGgpOgorICAgICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gc2VsZi5NRVNTQUdFUzoKKyAgICAgICAg
ICAgICAgICBhd2FpdCB3cy5zZW5kKG1lc3NhZ2UpCisgICAgICAgICAgICBhd2FpdCB3cy5jbG9z
ZSgxMDExKQorCisgICAgICAgIHN0YXJ0X3NlcnZlciA9IHNlcnZlKGhhbmRsZXIsICJsb2NhbGhv
c3QiLCAwKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHN0
YXJ0X3NlcnZlcikKKworICAgICAgICBtZXNzYWdlcyA9IFtdCisKKyAgICAgICAgYXN5bmMgZGVm
IHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIG1lc3NhZ2VzCisgICAgICAgICAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoZ2V0X3NlcnZlcl91cmkoc2VydmVyKSkgYXMgd3M6CisgICAg
ICAgICAgICAgICAgYXN5bmMgZm9yIG1lc3NhZ2UgaW4gd3M6CisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHJ1bl9jbGllbnQoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2Vz
LCBzZWxmLk1FU1NBR0VTKQorCisgICAgICAgIHNlcnZlci5jbG9zZSgpCisgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VydmVyLndhaXRfY2xvc2VkKCkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9leGNlcHRpb25zLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL3Rlc3RzL3Rlc3RfZXhjZXB0aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjdhZDVhZDgzMzU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29j
a2V0cy90ZXN0cy90ZXN0X2V4Y2VwdGlvbnMucHkKQEAgLTAsMCArMSwxNDUgQEAKK2ltcG9ydCB1
bml0dGVzdAorCitmcm9tIHdlYnNvY2tldHMuZXhjZXB0aW9ucyBpbXBvcnQgKgorZnJvbSB3ZWJz
b2NrZXRzLmh0dHAgaW1wb3J0IEhlYWRlcnMKKworCitjbGFzcyBFeGNlcHRpb25zVGVzdHModW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgZm9yIGV4
Y2VwdGlvbiwgZXhjZXB0aW9uX3N0ciBpbiBbCisgICAgICAgICAgICAjIGZtdDogb2ZmCisgICAg
ICAgICAgICAoCisgICAgICAgICAgICAgICAgV2ViU29ja2V0RXhjZXB0aW9uKCJzb21ldGhpbmcg
d2VudCB3cm9uZyIpLAorICAgICAgICAgICAgICAgICJzb21ldGhpbmcgd2VudCB3cm9uZyIsCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIENvbm5lY3Rpb25D
bG9zZWQoMTAwMCwgIiIpLAorICAgICAgICAgICAgICAgICJjb2RlID0gMTAwMCAoT0spLCBubyBy
ZWFzb24iLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBD
b25uZWN0aW9uQ2xvc2VkKDEwMDYsIE5vbmUpLAorICAgICAgICAgICAgICAgICJjb2RlID0gMTAw
NiAoY29ubmVjdGlvbiBjbG9zZWQgYWJub3JtYWxseSBbaW50ZXJuYWxdKSwgbm8gcmVhc29uIgor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBDb25uZWN0aW9u
Q2xvc2VkKDMwMDAsIE5vbmUpLAorICAgICAgICAgICAgICAgICJjb2RlID0gMzAwMCAocmVnaXN0
ZXJlZCksIG5vIHJlYXNvbiIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAg
ICAgICAgICAgQ29ubmVjdGlvbkNsb3NlZCg0MDAwLCBOb25lKSwKKyAgICAgICAgICAgICAgICAi
Y29kZSA9IDQwMDAgKHByaXZhdGUgdXNlKSwgbm8gcmVhc29uIgorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBDb25uZWN0aW9uQ2xvc2VkRXJyb3IoMTAxNiwg
Tm9uZSksCisgICAgICAgICAgICAgICAgImNvZGUgPSAxMDE2ICh1bmtub3duKSwgbm8gcmVhc29u
IgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBDb25uZWN0
aW9uQ2xvc2VkT0soMTAwMSwgImJ5ZSIpLAorICAgICAgICAgICAgICAgICJjb2RlID0gMTAwMSAo
Z29pbmcgYXdheSksIHJlYXNvbiA9IGJ5ZSIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgIEludmFsaWRIYW5kc2hha2UoImludmFsaWQgcmVxdWVzdCIpLAor
ICAgICAgICAgICAgICAgICJpbnZhbGlkIHJlcXVlc3QiLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICgKKyAgICAgICAgICAgICAgICBTZWN1cml0eUVycm9yKCJyZWRpcmVjdCBmcm9tIFdT
UyB0byBXUyIpLAorICAgICAgICAgICAgICAgICJyZWRpcmVjdCBmcm9tIFdTUyB0byBXUyIsCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRNZXNz
YWdlKCJtYWxmb3JtZWQgSFRUUCBtZXNzYWdlIiksCisgICAgICAgICAgICAgICAgIm1hbGZvcm1l
ZCBIVFRQIG1lc3NhZ2UiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICBJbnZhbGlkSGVhZGVyKCJOYW1lIiksCisgICAgICAgICAgICAgICAgIm1pc3Npbmcg
TmFtZSBoZWFkZXIiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAg
ICAgICBJbnZhbGlkSGVhZGVyKCJOYW1lIiwgTm9uZSksCisgICAgICAgICAgICAgICAgIm1pc3Np
bmcgTmFtZSBoZWFkZXIiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICBJbnZhbGlkSGVhZGVyKCJOYW1lIiwgIiIpLAorICAgICAgICAgICAgICAgICJlbXB0
eSBOYW1lIGhlYWRlciIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgIEludmFsaWRIZWFkZXIoIk5hbWUiLCAiVmFsdWUiKSwKKyAgICAgICAgICAgICAgICAi
aW52YWxpZCBOYW1lIGhlYWRlcjogVmFsdWUiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkSGVhZGVyRm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIsICJleHBlY3RlZCB0b2tlbiIsICJhPXwiLCAz
CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBTZWMtV2ViU29j
a2V0LVByb3RvY29sIGhlYWRlcjogIgorICAgICAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBh
dCAzIGluIGE9fCIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAg
ICAgIEludmFsaWRIZWFkZXJWYWx1ZSgiU2VjLVdlYlNvY2tldC1WZXJzaW9uIiwgIjQyIiksCisg
ICAgICAgICAgICAgICAgImludmFsaWQgU2VjLVdlYlNvY2tldC1WZXJzaW9uIGhlYWRlcjogNDIi
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlk
T3JpZ2luKCJodHRwOi8vYmFkLm9yaWdpbiIpLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIE9y
aWdpbiBoZWFkZXI6IGh0dHA6Ly9iYWQub3JpZ2luIiwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgSW52YWxpZFVwZ3JhZGUoIlVwZ3JhZGUiKSwKKyAgICAg
ICAgICAgICAgICAibWlzc2luZyBVcGdyYWRlIGhlYWRlciIsCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRVcGdyYWRlKCJDb25uZWN0aW9uIiwg
IndlYnNvY2tldCIpLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIENvbm5lY3Rpb24gaGVhZGVy
OiB3ZWJzb2NrZXQiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAg
ICAgICBJbnZhbGlkU3RhdHVzQ29kZSg0MDMpLAorICAgICAgICAgICAgICAgICJzZXJ2ZXIgcmVq
ZWN0ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb246IEhUVFAgNDAzIiwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgTmVnb3RpYXRpb25FcnJvcigidW5zdXBwb3J0
ZWQgc3VicHJvdG9jb2w6IHNwYW0iKSwKKyAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgc3Vi
cHJvdG9jb2w6IHNwYW0iLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICBEdXBsaWNhdGVQYXJhbWV0ZXIoImEiKSwKKyAgICAgICAgICAgICAgICAiZHVwbGlj
YXRlIHBhcmFtZXRlcjogYSIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAg
ICAgICAgICAgIEludmFsaWRQYXJhbWV0ZXJOYW1lKCJ8IiksCisgICAgICAgICAgICAgICAgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWU6IHwiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUoImEiLCBOb25lKSwKKyAgICAg
ICAgICAgICAgICAibWlzc2luZyB2YWx1ZSBmb3IgcGFyYW1ldGVyIGEiLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBJbnZhbGlkUGFyYW1ldGVyVmFsdWUo
ImEiLCAiIiksCisgICAgICAgICAgICAgICAgImVtcHR5IHZhbHVlIGZvciBwYXJhbWV0ZXIgYSIs
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEludmFsaWRQ
YXJhbWV0ZXJWYWx1ZSgiYSIsICJ8IiksCisgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUg
Zm9yIHBhcmFtZXRlciBhOiB8IiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAg
ICAgICAgICAgICAgQWJvcnRIYW5kc2hha2UoMjAwLCBIZWFkZXJzKCksIGIiT0tcbiIpLAorICAg
ICAgICAgICAgICAgICJIVFRQIDIwMCwgMCBoZWFkZXJzLCAzIGJ5dGVzIiwKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgUmVkaXJlY3RIYW5kc2hha2UoIndz
czovL2V4YW1wbGUuY29tIiksCisgICAgICAgICAgICAgICAgInJlZGlyZWN0IHRvIHdzczovL2V4
YW1wbGUuY29tIiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgSW52YWxpZFN0YXRlKCJXZWJTb2NrZXQgY29ubmVjdGlvbiBpc24ndCBlc3RhYmxpc2hlZCB5
ZXQiKSwKKyAgICAgICAgICAgICAgICAiV2ViU29ja2V0IGNvbm5lY3Rpb24gaXNuJ3QgZXN0YWJs
aXNoZWQgeWV0IiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgSW52YWxpZFVSSSgifCIpLAorICAgICAgICAgICAgICAgICJ8IGlzbid0IGEgdmFsaWQgVVJJ
IiwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgUGF5bG9h
ZFRvb0JpZygicGF5bG9hZCBsZW5ndGggZXhjZWVkcyBsaW1pdDogMiA+IDEgYnl0ZXMiKSwKKyAg
ICAgICAgICAgICAgICAicGF5bG9hZCBsZW5ndGggZXhjZWVkcyBsaW1pdDogMiA+IDEgYnl0ZXMi
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBQcm90b2Nv
bEVycm9yKCJpbnZhbGlkIG9wY29kZTogNyIpLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIG9w
Y29kZTogNyIsCisgICAgICAgICAgICApLAorICAgICAgICAgICAgIyBmbXQ6IG9uCisgICAgICAg
IF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChleGNlcHRpb249ZXhjZXB0aW9uKToK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleGNlcHRpb24pLCBleGNlcHRp
b25fc3RyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfZXhwb3J0cy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2V4cG9ydHMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZmNiYzgwZTM4OTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9leHBvcnRzLnB5CkBAIC0wLDAgKzEsMjIgQEAK
K2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgd2Vic29ja2V0cworCisKK2NvbWJpbmVkX2V4cG9y
dHMgPSAoCisgICAgd2Vic29ja2V0cy5hdXRoLl9fYWxsX18KKyAgICArIHdlYnNvY2tldHMuY2xp
ZW50Ll9fYWxsX18KKyAgICArIHdlYnNvY2tldHMuZXhjZXB0aW9ucy5fX2FsbF9fCisgICAgKyB3
ZWJzb2NrZXRzLnByb3RvY29sLl9fYWxsX18KKyAgICArIHdlYnNvY2tldHMuc2VydmVyLl9fYWxs
X18KKyAgICArIHdlYnNvY2tldHMudHlwaW5nLl9fYWxsX18KKyAgICArIHdlYnNvY2tldHMudXJp
Ll9fYWxsX18KKykKKworCitjbGFzcyBUZXN0RXhwb3J0c0FsbFN1Ym1vZHVsZXModW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RvcF9sZXZlbF9tb2R1bGVfcmVleHBvcnRzX2FsbF9z
dWJtb2R1bGVfZXhwb3J0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoY29t
YmluZWRfZXhwb3J0cyksIHNldCh3ZWJzb2NrZXRzLl9fYWxsX18pKQorCisgICAgZGVmIHRlc3Rf
c3VibW9kdWxlX2V4cG9ydHNfYXJlX2dsb2JhbGx5X3VuaXF1ZShzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oc2V0KGNvbWJpbmVkX2V4cG9ydHMpKSwgbGVuKGNvbWJpbmVkX2V4
cG9ydHMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfZnJhbWluZy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2ZyYW1pbmcucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZGVmNDE1ZDI4OWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9mcmFtaW5nLnB5CkBAIC0wLDAgKzEsMjQyIEBA
CitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGNvZGVjcworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQg
dW5pdHRlc3QubW9jaworCitmcm9tIHdlYnNvY2tldHMuZXhjZXB0aW9ucyBpbXBvcnQgUGF5bG9h
ZFRvb0JpZywgUHJvdG9jb2xFcnJvcgorZnJvbSB3ZWJzb2NrZXRzLmZyYW1pbmcgaW1wb3J0ICoK
KworZnJvbSAudXRpbHMgaW1wb3J0IEFzeW5jaW9UZXN0Q2FzZQorCisKK2NsYXNzIEZyYW1pbmdU
ZXN0cyhBc3luY2lvVGVzdENhc2UpOgorICAgIGRlZiBkZWNvZGUoc2VsZiwgbWVzc2FnZSwgbWFz
az1GYWxzZSwgbWF4X3NpemU9Tm9uZSwgZXh0ZW5zaW9ucz1Ob25lKToKKyAgICAgICAgc2VsZi5z
dHJlYW0gPSBhc3luY2lvLlN0cmVhbVJlYWRlcihsb29wPXNlbGYubG9vcCkKKyAgICAgICAgc2Vs
Zi5zdHJlYW0uZmVlZF9kYXRhKG1lc3NhZ2UpCisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZW9m
KCkKKyAgICAgICAgZnJhbWUgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgRnJhbWUucmVhZCgKKyAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbS5yZWFkZXhhY3Rs
eSwKKyAgICAgICAgICAgICAgICBtYXNrPW1hc2ssCisgICAgICAgICAgICAgICAgbWF4X3NpemU9
bWF4X3NpemUsCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucz1leHRlbnNpb25zLAorICAgICAg
ICAgICAgKQorICAgICAgICApCisgICAgICAgICMgTWFrZSBzdXJlIGFsbCB0aGUgZGF0YSB3YXMg
Y29uc3VtZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnN0cmVhbS5hdF9lb2YoKSkK
KyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGZyYW1lLCBtYXNr
PUZhbHNlLCBleHRlbnNpb25zPU5vbmUpOgorICAgICAgICB3cml0ZSA9IHVuaXR0ZXN0Lm1vY2su
TW9jaygpCisgICAgICAgIGZyYW1lLndyaXRlKHdyaXRlLCBtYXNrPW1hc2ssIGV4dGVuc2lvbnM9
ZXh0ZW5zaW9ucykKKyAgICAgICAgIyBFbnN1cmUgdGhlIGVudGlyZSBmcmFtZSBpcyBzZW50IHdp
dGggYSBzaW5nbGUgY2FsbCB0byB3cml0ZSgpLgorICAgICAgICAjIE11bHRpcGxlIGNhbGxzIGNh
dXNlIFRDUCBmcmFnbWVudGF0aW9uIGFuZCBkZWdyYWRlIHBlcmZvcm1hbmNlLgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHdyaXRlLmNhbGxfY291bnQsIDEpCisgICAgICAgICMgVGhlIGZyYW1l
IGRhdGEgaXMgdGhlIHNpbmdsZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG9mIHRoYXQgY2FsbC4KKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4od3JpdGUuY2FsbF9hcmdzWzBdKSwgMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4od3JpdGUuY2FsbF9hcmdzWzFdKSwgMCkKKyAgICAgICAg
cmV0dXJuIHdyaXRlLmNhbGxfYXJnc1swXVswXQorCisgICAgZGVmIHJvdW5kX3RyaXAoc2VsZiwg
bWVzc2FnZSwgZXhwZWN0ZWQsIG1hc2s9RmFsc2UsIGV4dGVuc2lvbnM9Tm9uZSk6CisgICAgICAg
IGRlY29kZWQgPSBzZWxmLmRlY29kZShtZXNzYWdlLCBtYXNrLCBleHRlbnNpb25zPWV4dGVuc2lv
bnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgZXhwZWN0ZWQpCisgICAgICAg
IGVuY29kZWQgPSBzZWxmLmVuY29kZShkZWNvZGVkLCBtYXNrLCBleHRlbnNpb25zPWV4dGVuc2lv
bnMpCisgICAgICAgIGlmIG1hc2s6ICAjIG5vbi1kZXRlcm1pbmlzdGljIGVuY29kaW5nCisgICAg
ICAgICAgICBkZWNvZGVkID0gc2VsZi5kZWNvZGUoZW5jb2RlZCwgbWFzaywgZXh0ZW5zaW9ucz1l
eHRlbnNpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBleHBlY3Rl
ZCkKKyAgICAgICAgZWxzZTogICMgZGV0ZXJtaW5pc3RpYyBlbmNvZGluZworICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkLCBtZXNzYWdlKQorCisgICAgZGVmIHJvdW5kX3RyaXBf
Y2xvc2Uoc2VsZiwgZGF0YSwgY29kZSwgcmVhc29uKToKKyAgICAgICAgcGFyc2VkID0gcGFyc2Vf
Y2xvc2UoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZWQsIChjb2RlLCByZWFz
b24pKQorICAgICAgICBzZXJpYWxpemVkID0gc2VyaWFsaXplX2Nsb3NlKGNvZGUsIHJlYXNvbikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBkYXRhKQorCisgICAgZGVmIHRl
c3RfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwKGIiXHg4MVx4MDRTcGFtIiwg
RnJhbWUoVHJ1ZSwgT1BfVEVYVCwgYiJTcGFtIikpCisKKyAgICBkZWYgdGVzdF90ZXh0X21hc2tl
ZChzZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwKAorICAgICAgICAgICAgYiJceDgxXHg4
NFx4NWJceGZiXHhlMVx4YThceDA4XHg4Ylx4ODBceGM1IiwKKyAgICAgICAgICAgIEZyYW1lKFRy
dWUsIE9QX1RFWFQsIGIiU3BhbSIpLAorICAgICAgICAgICAgbWFzaz1UcnVlLAorICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9iaW5hcnkoc2VsZik6CisgICAgICAgIHNlbGYucm91bmRfdHJpcChi
Ilx4ODJceDA0RWdncyIsIEZyYW1lKFRydWUsIE9QX0JJTkFSWSwgYiJFZ2dzIikpCisKKyAgICBk
ZWYgdGVzdF9iaW5hcnlfbWFza2VkKHNlbGYpOgorICAgICAgICBzZWxmLnJvdW5kX3RyaXAoCisg
ICAgICAgICAgICBiIlx4ODJceDg0XHg1M1x4Y2RceGUyXHg4OVx4MTZceGFhXHg4NVx4ZmEiLAor
ICAgICAgICAgICAgRnJhbWUoVHJ1ZSwgT1BfQklOQVJZLCBiIkVnZ3MiKSwKKyAgICAgICAgICAg
IG1hc2s9VHJ1ZSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpX3RleHQoc2Vs
Zik6CisgICAgICAgIHNlbGYucm91bmRfdHJpcCgKKyAgICAgICAgICAgIGIiXHg4MVx4MDVjYWZc
eGMzXHhhOSIsIEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQor
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ub25fYXNjaWlfdGV4dF9tYXNrZWQoc2VsZik6Cisg
ICAgICAgIHNlbGYucm91bmRfdHJpcCgKKyAgICAgICAgICAgIGIiXHg4MVx4ODVceDY0XHhiZVx4
ZWVceDdlXHgwN1x4ZGZceDg4XHhiZFx4Y2QiLAorICAgICAgICAgICAgRnJhbWUoVHJ1ZSwgT1Bf
VEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAgICAgbWFzaz1UcnVlLAor
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5yb3Vu
ZF90cmlwKGIiXHg4OFx4MDAiLCBGcmFtZShUcnVlLCBPUF9DTE9TRSwgYiIiKSkKKworICAgIGRl
ZiB0ZXN0X3Bpbmcoc2VsZik6CisgICAgICAgIHNlbGYucm91bmRfdHJpcChiIlx4ODlceDA0cGlu
ZyIsIEZyYW1lKFRydWUsIE9QX1BJTkcsIGIicGluZyIpKQorCisgICAgZGVmIHRlc3RfcG9uZyhz
ZWxmKToKKyAgICAgICAgc2VsZi5yb3VuZF90cmlwKGIiXHg4YVx4MDRwb25nIiwgRnJhbWUoVHJ1
ZSwgT1BfUE9ORywgYiJwb25nIikpCisKKyAgICBkZWYgdGVzdF9sb25nKHNlbGYpOgorICAgICAg
ICBzZWxmLnJvdW5kX3RyaXAoCisgICAgICAgICAgICBiIlx4ODJceDdlXHgwMFx4N2UiICsgMTI2
ICogYiJhIiwgRnJhbWUoVHJ1ZSwgT1BfQklOQVJZLCAxMjYgKiBiImEiKQorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF92ZXJ5X2xvbmcoc2VsZik6CisgICAgICAgIHNlbGYucm91bmRfdHJpcCgK
KyAgICAgICAgICAgIGIiXHg4Mlx4N2ZceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMCIg
KyA2NTUzNiAqIGIiYSIsCisgICAgICAgICAgICBGcmFtZShUcnVlLCBPUF9CSU5BUlksIDY1NTM2
ICogYiJhIiksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3BheWxvYWRfdG9vX2JpZyhzZWxm
KToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQYXlsb2FkVG9vQmlnKToKKyAgICAg
ICAgICAgIHNlbGYuZGVjb2RlKGIiXHg4Mlx4N2VceDA0XHgwMSIgKyAxMDI1ICogYiJhIiwgbWF4
X3NpemU9MTAyNCkKKworICAgIGRlZiB0ZXN0X2JhZF9yZXNlcnZlZF9iaXRzKHNlbGYpOgorICAg
ICAgICBmb3IgZW5jb2RlZCBpbiBbYiJceGMwXHgwMCIsIGIiXHhhMFx4MDAiLCBiIlx4OTBceDAw
Il06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGVkPWVuY29kZWQpOgorICAg
ICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUHJvdG9jb2xFcnJvcik6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlKGVuY29kZWQpCisKKyAgICBkZWYgdGVzdF9nb29k
X29wY29kZShzZWxmKToKKyAgICAgICAgZm9yIG9wY29kZSBpbiBsaXN0KHJhbmdlKDB4MDAsIDB4
MDMpKSArIGxpc3QocmFuZ2UoMHgwOCwgMHgwQikpOgorICAgICAgICAgICAgZW5jb2RlZCA9IGJ5
dGVzKFsweDgwIHwgb3Bjb2RlLCAwXSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVu
Y29kZWQ9ZW5jb2RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGUoZW5jb2RlZCkgICMg
ZG9lcyBub3QgcmFpc2UgYW4gZXhjZXB0aW9uCisKKyAgICBkZWYgdGVzdF9iYWRfb3Bjb2RlKHNl
bGYpOgorICAgICAgICBmb3Igb3Bjb2RlIGluIGxpc3QocmFuZ2UoMHgwMywgMHgwOCkpICsgbGlz
dChyYW5nZSgweDBCLCAweDEwKSk6CisgICAgICAgICAgICBlbmNvZGVkID0gYnl0ZXMoWzB4ODAg
fCBvcGNvZGUsIDBdKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW5jb2RlZD1lbmNv
ZGVkKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFByb3RvY29sRXJy
b3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmRlY29kZShlbmNvZGVkKQorCisgICAgZGVm
IHRlc3RfbWFza19mbGFnKHNlbGYpOgorICAgICAgICAjIE1hc2sgZmxhZyBjb3JyZWN0bHkgc2V0
LgorICAgICAgICBzZWxmLmRlY29kZShiIlx4ODBceDgwXHgwMFx4MDBceDAwXHgwMCIsIG1hc2s9
VHJ1ZSkKKyAgICAgICAgIyBNYXNrIGZsYWcgaW5jb3JyZWN0bHkgdW5zZXQuCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUHJvdG9jb2xFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRl
Y29kZShiIlx4ODBceDgwXHgwMFx4MDBceDAwXHgwMCIpCisgICAgICAgICMgTWFzayBmbGFnIGNv
cnJlY3RseSB1bnNldC4KKyAgICAgICAgc2VsZi5kZWNvZGUoYiJceDgwXHgwMCIpCisgICAgICAg
ICMgTWFzayBmbGFnIGluY29ycmVjdGx5IHNldC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZGVjb2RlKGIiXHg4MFx4MDAi
LCBtYXNrPVRydWUpCisKKyAgICBkZWYgdGVzdF9jb250cm9sX2ZyYW1lX21heF9sZW5ndGgoc2Vs
Zik6CisgICAgICAgICMgQXQgbWF4aW11bSBhbGxvd2VkIGxlbmd0aC4KKyAgICAgICAgc2VsZi5k
ZWNvZGUoYiJceDg4XHg3ZVx4MDBceDdkIiArIDEyNSAqIGIiYSIpCisgICAgICAgICMgQWJvdmUg
bWF4aW11bSBhbGxvd2VkIGxlbmd0aC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQ
cm90b2NvbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZGVjb2RlKGIiXHg4OFx4N2VceDAwXHg3
ZSIgKyAxMjYgKiBiImEiKQorCisgICAgZGVmIHRlc3RfcHJlcGFyZV9kYXRhX3N0cihzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2RhdGEoImNhZsOpIiksIChPUF9URVhU
LCBiImNhZlx4YzNceGE5IikpCisKKyAgICBkZWYgdGVzdF9wcmVwYXJlX2RhdGFfYnl0ZXMoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9kYXRhKGIidGVhIiksIChPUF9C
SU5BUlksIGIidGVhIikpCisKKyAgICBkZWYgdGVzdF9wcmVwYXJlX2RhdGFfYnl0ZWFycmF5KHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcHJlcGFyZV9kYXRh
KGJ5dGVhcnJheShiInRlYSIpKSwgKE9QX0JJTkFSWSwgYnl0ZWFycmF5KGIidGVhIikpCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X3ByZXBhcmVfZGF0YV9tZW1vcnl2aWV3KHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcHJlcGFyZV9kYXRhKG1lbW9yeXZp
ZXcoYiJ0ZWEiKSksIChPUF9CSU5BUlksIG1lbW9yeXZpZXcoYiJ0ZWEiKSkKKyAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfcHJlcGFyZV9kYXRhX25vbl9jb250aWd1b3VzX21lbW9yeXZpZXcoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9kYXRhKG1lbW9yeXZpZXcoYiJ0
dGVlYWEiKVs6OjJdKSwgKE9QX0JJTkFSWSwgYiJ0ZWEiKSkKKworICAgIGRlZiB0ZXN0X3ByZXBh
cmVfZGF0YV9saXN0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVF
cnJvcik6CisgICAgICAgICAgICBwcmVwYXJlX2RhdGEoW10pCisKKyAgICBkZWYgdGVzdF9wcmVw
YXJlX2RhdGFfbm9uZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBl
RXJyb3IpOgorICAgICAgICAgICAgcHJlcGFyZV9kYXRhKE5vbmUpCisKKyAgICBkZWYgdGVzdF9l
bmNvZGVfZGF0YV9zdHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlX2Rh
dGEoImNhZsOpIiksIGIiY2FmXHhjM1x4YTkiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RhdGFf
Ynl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlX2RhdGEoYiJ0ZWEi
KSwgYiJ0ZWEiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RhdGFfYnl0ZWFycmF5KHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZV9kYXRhKGJ5dGVhcnJheShiInRlYSIpKSwg
YiJ0ZWEiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RhdGFfbWVtb3J5dmlldyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVfZGF0YShtZW1vcnl2aWV3KGIidGVhIikpLCBi
InRlYSIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGF0YV9ub25fY29udGlndW91c19tZW1vcnl2
aWV3KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZV9kYXRhKG1lbW9yeXZp
ZXcoYiJ0dGVlYWEiKVs6OjJdKSwgYiJ0ZWEiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RhdGFf
bGlzdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgor
ICAgICAgICAgICAgZW5jb2RlX2RhdGEoW10pCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGF0YV9u
b25lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Cisg
ICAgICAgICAgICBlbmNvZGVfZGF0YShOb25lKQorCisgICAgZGVmIHRlc3RfZnJhZ21lbnRlZF9j
b250cm9sX2ZyYW1lKHNlbGYpOgorICAgICAgICAjIEZpbiBiaXQgY29ycmVjdGx5IHNldC4KKyAg
ICAgICAgc2VsZi5kZWNvZGUoYiJceDg4XHgwMCIpCisgICAgICAgICMgRmluIGJpdCBpbmNvcnJl
Y3RseSB1bnNldC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQcm90b2NvbEVycm9y
KToKKyAgICAgICAgICAgIHNlbGYuZGVjb2RlKGIiXHgwOFx4MDAiKQorCisgICAgZGVmIHRlc3Rf
cGFyc2VfY2xvc2VfYW5kX3NlcmlhbGl6ZV9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5yb3Vu
ZF90cmlwX2Nsb3NlKGIiXHgwM1x4ZTgiLCAxMDAwLCAiIikKKyAgICAgICAgc2VsZi5yb3VuZF90
cmlwX2Nsb3NlKGIiXHgwM1x4ZThPSyIsIDEwMDAsICJPSyIpCisKKyAgICBkZWYgdGVzdF9wYXJz
ZV9jbG9zZV9lbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZV9jbG9z
ZShiIiIpLCAoMTAwNSwgIiIpKQorCisgICAgZGVmIHRlc3RfcGFyc2VfY2xvc2VfZXJyb3JzKHNl
bGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFByb3RvY29sRXJyb3IpOgorICAg
ICAgICAgICAgcGFyc2VfY2xvc2UoYiJceDAzIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAgIHBhcnNlX2Nsb3NlKGIiXHgwM1x4ZTci
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Cisg
ICAgICAgICAgICBwYXJzZV9jbG9zZShiIlx4MDNceGU4XHhmZlx4ZmYiKQorCisgICAgZGVmIHRl
c3Rfc2VyaWFsaXplX2Nsb3NlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhQcm90b2NvbEVycm9yKToKKyAgICAgICAgICAgIHNlcmlhbGl6ZV9jbG9zZSg5OTks
ICIiKQorCisgICAgZGVmIHRlc3RfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgY2xhc3MgUm90
MTM6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZW5jb2RlKGZy
YW1lKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZnJhbWUub3Bjb2RlID09IE9QX1RFWFQKKyAg
ICAgICAgICAgICAgICB0ZXh0ID0gZnJhbWUuZGF0YS5kZWNvZGUoKQorICAgICAgICAgICAgICAg
IGRhdGEgPSBjb2RlY3MuZW5jb2RlKHRleHQsICJyb3QxMyIpLmVuY29kZSgpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLl9yZXBsYWNlKGRhdGE9ZGF0YSkKKworICAgICAgICAgICAgIyBU
aGlzIGV4dGVuc2lvbnMgaXMgc3ltbWV0cmljYWwuCisgICAgICAgICAgICBAc3RhdGljbWV0aG9k
CisgICAgICAgICAgICBkZWYgZGVjb2RlKGZyYW1lLCAqLCBtYXhfc2l6ZT1Ob25lKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUm90MTMuZW5jb2RlKGZyYW1lKQorCisgICAgICAgIHNlbGYucm91
bmRfdHJpcCgKKyAgICAgICAgICAgIGIiXHg4MVx4MDV1cnl5YiIsIEZyYW1lKFRydWUsIE9QX1RF
WFQsIGIiaGVsbG8iKSwgZXh0ZW5zaW9ucz1bUm90MTMoKV0KKyAgICAgICAgKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaGFuZHNoYWtlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL3Rlc3RzL3Rlc3RfaGFuZHNoYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uN2QwNDc3NzE1MmJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2Nr
ZXRzL3Rlc3RzL3Rlc3RfaGFuZHNoYWtlLnB5CkBAIC0wLDAgKzEsMTkwIEBACitpbXBvcnQgY29u
dGV4dGxpYgoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Vic29ja2V0cy5leGNlcHRpb25zIGlt
cG9ydCAoCisgICAgSW52YWxpZEhhbmRzaGFrZSwKKyAgICBJbnZhbGlkSGVhZGVyLAorICAgIElu
dmFsaWRIZWFkZXJWYWx1ZSwKKyAgICBJbnZhbGlkVXBncmFkZSwKKykKK2Zyb20gd2Vic29ja2V0
cy5oYW5kc2hha2UgaW1wb3J0ICoKK2Zyb20gd2Vic29ja2V0cy5oYW5kc2hha2UgaW1wb3J0IGFj
Y2VwdCAgIyBwcml2YXRlIEFQSQorZnJvbSB3ZWJzb2NrZXRzLmh0dHAgaW1wb3J0IEhlYWRlcnMK
KworCitjbGFzcyBIYW5kc2hha2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRl
c3RfYWNjZXB0KHNlbGYpOgorICAgICAgICAjIFRlc3QgdmVjdG9yIGZyb20gUkZDIDY0NTUKKyAg
ICAgICAga2V5ID0gImRHaGxJSE5oYlhCc1pTQnViMjVqWlE9PSIKKyAgICAgICAgYWNjID0gInMz
cFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz0iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWNj
ZXB0KGtleSksIGFjYykKKworICAgIGRlZiB0ZXN0X3JvdW5kX3RyaXAoc2VsZik6CisgICAgICAg
IHJlcXVlc3RfaGVhZGVycyA9IEhlYWRlcnMoKQorICAgICAgICByZXF1ZXN0X2tleSA9IGJ1aWxk
X3JlcXVlc3QocmVxdWVzdF9oZWFkZXJzKQorICAgICAgICByZXNwb25zZV9rZXkgPSBjaGVja19y
ZXF1ZXN0KHJlcXVlc3RfaGVhZGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0
X2tleSwgcmVzcG9uc2Vfa2V5KQorICAgICAgICByZXNwb25zZV9oZWFkZXJzID0gSGVhZGVycygp
CisgICAgICAgIGJ1aWxkX3Jlc3BvbnNlKHJlc3BvbnNlX2hlYWRlcnMsIHJlc3BvbnNlX2tleSkK
KyAgICAgICAgY2hlY2tfcmVzcG9uc2UocmVzcG9uc2VfaGVhZGVycywgcmVxdWVzdF9rZXkpCisK
KyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhc3NlcnRWYWxpZFJlcXVl
c3RIZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvdmlkZSByZXF1ZXN0IGhl
YWRlcnMgZm9yIG1vZGlmaWNhdGlvbi4KKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgdHJhbnNm
b3JtYXRpb24ga2VwdCB0aGVtIHZhbGlkLgorCisgICAgICAgICIiIgorICAgICAgICBoZWFkZXJz
ID0gSGVhZGVycygpCisgICAgICAgIGJ1aWxkX3JlcXVlc3QoaGVhZGVycykKKyAgICAgICAgeWll
bGQgaGVhZGVycworICAgICAgICBjaGVja19yZXF1ZXN0KGhlYWRlcnMpCisKKyAgICBAY29udGV4
dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhc3NlcnRJbnZhbGlkUmVxdWVzdEhlYWRlcnMo
c2VsZiwgZXhjX3R5cGUpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvdmlkZSByZXF1ZXN0IGhl
YWRlcnMgZm9yIG1vZGlmaWNhdGlvbi4KKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgdHJhbnNm
b3JtYXRpb24gbWFkZSB0aGVtIGludmFsaWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGhlYWRl
cnMgPSBIZWFkZXJzKCkKKyAgICAgICAgYnVpbGRfcmVxdWVzdChoZWFkZXJzKQorICAgICAgICB5
aWVsZCBoZWFkZXJzCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGV4Y190eXBlLCBJbnZhbGlk
SGFuZHNoYWtlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Y190eXBlKToKKyAg
ICAgICAgICAgIGNoZWNrX3JlcXVlc3QoaGVhZGVycykKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Rf
aW52YWxpZF9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxp
ZFJlcXVlc3RIZWFkZXJzKEludmFsaWRVcGdyYWRlKSBhcyBoZWFkZXJzOgorICAgICAgICAgICAg
ZGVsIGhlYWRlcnNbIkNvbm5lY3Rpb24iXQorICAgICAgICAgICAgaGVhZGVyc1siQ29ubmVjdGlv
biJdID0gIkRvd25ncmFkZSIKKworICAgIGRlZiB0ZXN0X3JlcXVlc3RfbWlzc2luZ19jb25uZWN0
aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJz
KEludmFsaWRVcGdyYWRlKSBhcyBoZWFkZXJzOgorICAgICAgICAgICAgZGVsIGhlYWRlcnNbIkNv
bm5lY3Rpb24iXQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRpdGlvbmFsX2Nvbm5lY3Rpb24o
c2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRWYWxpZFJlcXVlc3RIZWFkZXJzKCkgYXMg
aGVhZGVyczoKKyAgICAgICAgICAgIGhlYWRlcnNbIkNvbm5lY3Rpb24iXSA9ICJjbG9zZSIKKwor
ICAgIGRlZiB0ZXN0X3JlcXVlc3RfaW52YWxpZF91cGdyYWRlKHNlbGYpOgorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJzKEludmFsaWRVcGdyYWRlKSBhcyBoZWFk
ZXJzOgorICAgICAgICAgICAgZGVsIGhlYWRlcnNbIlVwZ3JhZGUiXQorICAgICAgICAgICAgaGVh
ZGVyc1siVXBncmFkZSJdID0gInNvY2tldHdlYiIKKworICAgIGRlZiB0ZXN0X3JlcXVlc3RfbWlz
c2luZ191cGdyYWRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVl
c3RIZWFkZXJzKEludmFsaWRVcGdyYWRlKSBhcyBoZWFkZXJzOgorICAgICAgICAgICAgZGVsIGhl
YWRlcnNbIlVwZ3JhZGUiXQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRpdGlvbmFsX3VwZ3Jh
ZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRJbnZhbGlkUmVxdWVzdEhlYWRlcnMo
SW52YWxpZFVwZ3JhZGUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBoZWFkZXJzWyJVcGdyYWRl
Il0gPSAic29ja2V0d2ViIgorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9pbnZhbGlkX2tleV9ub3Rf
YmFzZTY0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFk
ZXJzKEludmFsaWRIZWFkZXJWYWx1ZSkgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGRlbCBoZWFk
ZXJzWyJTZWMtV2ViU29ja2V0LUtleSJdCisgICAgICAgICAgICBoZWFkZXJzWyJTZWMtV2ViU29j
a2V0LUtleSJdID0gIiFAIyQlXiYqKCkiCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ludmFsaWRf
a2V5X25vdF93ZWxsX3BhZGRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFs
aWRSZXF1ZXN0SGVhZGVycyhJbnZhbGlkSGVhZGVyVmFsdWUpIGFzIGhlYWRlcnM6CisgICAgICAg
ICAgICBkZWwgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXQorICAgICAgICAgICAgaGVhZGVy
c1siU2VjLVdlYlNvY2tldC1LZXkiXSA9ICJDU0lSbUw4ZFdZeGVBZHIvWHBFSFJ3IgorCisgICAg
ZGVmIHRlc3RfcmVxdWVzdF9pbnZhbGlkX2tleV9ub3RfMTZfYnl0ZXNfbG9uZyhzZWxmKToKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXF1ZXN0SGVhZGVycyhJbnZhbGlkSGVhZGVy
VmFsdWUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1siU2VjLVdlYlNvY2tl
dC1LZXkiXQorICAgICAgICAgICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXkiXSA9ICJaTHBw
cnB2SzRQRT0iCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X21pc3Npbmdfa2V5KHNlbGYpOgorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlcXVlc3RIZWFkZXJzKEludmFsaWRIZWFkZXIp
IGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1LZXki
XQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRpdGlvbmFsX2tleShzZWxmKToKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXF1ZXN0SGVhZGVycyhJbnZhbGlkSGVhZGVyKSBhcyBo
ZWFkZXJzOgorICAgICAgICAgICAgIyBUaGlzIGR1cGxpY2F0ZXMgdGhlIFNlYy1XZWJTb2NrZXQt
S2V5IGhlYWRlci4KKyAgICAgICAgICAgIGhlYWRlcnNbIlNlYy1XZWJTb2NrZXQtS2V5Il0gPSBo
ZWFkZXJzWyJTZWMtV2ViU29ja2V0LUtleSJdCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ludmFs
aWRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXF1ZXN0
SGVhZGVycyhJbnZhbGlkSGVhZGVyVmFsdWUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwg
aGVhZGVyc1siU2VjLVdlYlNvY2tldC1WZXJzaW9uIl0KKyAgICAgICAgICAgIGhlYWRlcnNbIlNl
Yy1XZWJTb2NrZXQtVmVyc2lvbiJdID0gIjQyIgorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9taXNz
aW5nX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRJbnZhbGlkUmVxdWVz
dEhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGRlbCBoZWFk
ZXJzWyJTZWMtV2ViU29ja2V0LVZlcnNpb24iXQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9hZGRp
dGlvbmFsX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRJbnZhbGlkUmVx
dWVzdEhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVhZGVyczoKKyAgICAgICAgICAgICMgVGhp
cyBkdXBsaWNhdGVzIHRoZSBTZWMtV2ViU29ja2V0LVZlcnNpb24gaGVhZGVyLgorICAgICAgICAg
ICAgaGVhZGVyc1siU2VjLVdlYlNvY2tldC1WZXJzaW9uIl0gPSBoZWFkZXJzWyJTZWMtV2ViU29j
a2V0LVZlcnNpb24iXQorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYg
YXNzZXJ0VmFsaWRSZXNwb25zZUhlYWRlcnMoc2VsZiwga2V5PSJDU0lSbUw4ZFdZeGVBZHIvWHBF
SFJ3PT0iKToKKyAgICAgICAgIiIiCisgICAgICAgIFByb3ZpZGUgcmVzcG9uc2UgaGVhZGVycyBm
b3IgbW9kaWZpY2F0aW9uLgorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlv
biBrZXB0IHRoZW0gdmFsaWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGhlYWRlcnMgPSBIZWFk
ZXJzKCkKKyAgICAgICAgYnVpbGRfcmVzcG9uc2UoaGVhZGVycywga2V5KQorICAgICAgICB5aWVs
ZCBoZWFkZXJzCisgICAgICAgIGNoZWNrX3Jlc3BvbnNlKGhlYWRlcnMsIGtleSkKKworICAgIEBj
b250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFzc2VydEludmFsaWRSZXNwb25zZUhl
YWRlcnMoc2VsZiwgZXhjX3R5cGUsIGtleT0iQ1NJUm1MOGRXWXhlQWRyL1hwRUhSdz09Iik6Cisg
ICAgICAgICIiIgorICAgICAgICBQcm92aWRlIHJlc3BvbnNlIGhlYWRlcnMgZm9yIG1vZGlmaWNh
dGlvbi4KKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gbWFkZSB0aGVt
IGludmFsaWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAg
ICAgICAgYnVpbGRfcmVzcG9uc2UoaGVhZGVycywga2V5KQorICAgICAgICB5aWVsZCBoZWFkZXJz
CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGV4Y190eXBlLCBJbnZhbGlkSGFuZHNoYWtlKQor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Y190eXBlKToKKyAgICAgICAgICAgIGNo
ZWNrX3Jlc3BvbnNlKGhlYWRlcnMsIGtleSkKKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX2ludmFs
aWRfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXNw
b25zZUhlYWRlcnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBkZWwg
aGVhZGVyc1siQ29ubmVjdGlvbiJdCisgICAgICAgICAgICBoZWFkZXJzWyJDb25uZWN0aW9uIl0g
PSAiRG93bmdyYWRlIgorCisgICAgZGVmIHRlc3RfcmVzcG9uc2VfbWlzc2luZ19jb25uZWN0aW9u
KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJlc3BvbnNlSGVhZGVycyhJ
bnZhbGlkVXBncmFkZSkgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGRlbCBoZWFkZXJzWyJDb25u
ZWN0aW9uIl0KKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX2FkZGl0aW9uYWxfY29ubmVjdGlvbihz
ZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFZhbGlkUmVzcG9uc2VIZWFkZXJzKCkgYXMg
aGVhZGVyczoKKyAgICAgICAgICAgIGhlYWRlcnNbIkNvbm5lY3Rpb24iXSA9ICJjbG9zZSIKKwor
ICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX2ludmFsaWRfdXBncmFkZShzZWxmKToKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydEludmFsaWRSZXNwb25zZUhlYWRlcnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhl
YWRlcnM6CisgICAgICAgICAgICBkZWwgaGVhZGVyc1siVXBncmFkZSJdCisgICAgICAgICAgICBo
ZWFkZXJzWyJVcGdyYWRlIl0gPSAic29ja2V0d2ViIgorCisgICAgZGVmIHRlc3RfcmVzcG9uc2Vf
bWlzc2luZ191cGdyYWRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0SW52YWxpZFJl
c3BvbnNlSGVhZGVycyhJbnZhbGlkVXBncmFkZSkgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGRl
bCBoZWFkZXJzWyJVcGdyYWRlIl0KKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX2FkZGl0aW9uYWxf
dXBncmFkZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXNwb25zZUhl
YWRlcnMoSW52YWxpZFVwZ3JhZGUpIGFzIGhlYWRlcnM6CisgICAgICAgICAgICBoZWFkZXJzWyJV
cGdyYWRlIl0gPSAic29ja2V0d2ViIgorCisgICAgZGVmIHRlc3RfcmVzcG9uc2VfaW52YWxpZF9h
Y2NlcHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRJbnZhbGlkUmVzcG9uc2VIZWFk
ZXJzKEludmFsaWRIZWFkZXJWYWx1ZSkgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGRlbCBoZWFk
ZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdCisgICAgICAgICAgICBvdGhlcl9rZXkgPSAiMUVx
NFVERUZRWWczWXNwTmdxeHY1Zz09IgorICAgICAgICAgICAgaGVhZGVyc1siU2VjLVdlYlNvY2tl
dC1BY2NlcHQiXSA9IGFjY2VwdChvdGhlcl9rZXkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV9t
aXNzaW5nX2FjY2VwdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRSZXNw
b25zZUhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVhZGVyczoKKyAgICAgICAgICAgIGRlbCBo
ZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV9h
ZGRpdGlvbmFsX2FjY2VwdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEludmFsaWRS
ZXNwb25zZUhlYWRlcnMoSW52YWxpZEhlYWRlcikgYXMgaGVhZGVyczoKKyAgICAgICAgICAgICMg
VGhpcyBkdXBsaWNhdGVzIHRoZSBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIuCisgICAgICAg
ICAgICBoZWFkZXJzWyJTZWMtV2ViU29ja2V0LUFjY2VwdCJdID0gaGVhZGVyc1siU2VjLVdlYlNv
Y2tldC1BY2NlcHQiXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaGVh
ZGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2hlYWRlcnMucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNmQ4NWZhNWVhYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9oZWFkZXJzLnB5CkBAIC0wLDAgKzEs
MTg1IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJzb2NrZXRzLmV4Y2VwdGlvbnMgaW1w
b3J0IEludmFsaWRIZWFkZXJGb3JtYXQsIEludmFsaWRIZWFkZXJWYWx1ZQorZnJvbSB3ZWJzb2Nr
ZXRzLmhlYWRlcnMgaW1wb3J0ICoKKworCitjbGFzcyBIZWFkZXJzVGVzdHModW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiB0ZXN0X3BhcnNlX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgIGZv
ciBoZWFkZXIsIHBhcnNlZCBpbiBbCisgICAgICAgICAgICAjIFJlYWxpc3RpYyB1c2UgY2FzZXMK
KyAgICAgICAgICAgICgiVXBncmFkZSIsIFsiVXBncmFkZSJdKSwgICMgU2FmYXJpLCBDaHJvbWUK
KyAgICAgICAgICAgICgia2VlcC1hbGl2ZSwgVXBncmFkZSIsIFsia2VlcC1hbGl2ZSIsICJVcGdy
YWRlIl0pLCAgIyBGaXJlZm94CisgICAgICAgICAgICAjIFBhdGhvbG9naWNhbCBleGFtcGxlCisg
ICAgICAgICAgICAoIiwsXHQsICAsICxVcGdyYWRlICAsLCIsIFsiVXBncmFkZSJdKSwKKyAgICAg
ICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGhlYWRlcj1oZWFkZXIpOgorICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VfY29ubmVjdGlvbihoZWFkZXIpLCBw
YXJzZWQpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9jb25uZWN0aW9uX2ludmFsaWRfaGVhZGVyX2Zv
cm1hdChzZWxmKToKKyAgICAgICAgZm9yIGhlYWRlciBpbiBbIj8/PyIsICJrZWVwLWFsaXZlOyBV
cGdyYWRlIl06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoZWFkZXI9aGVhZGVyKToK
KyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIZWFkZXJGb3Jt
YXQpOgorICAgICAgICAgICAgICAgICAgICBwYXJzZV9jb25uZWN0aW9uKGhlYWRlcikKKworICAg
IGRlZiB0ZXN0X3BhcnNlX3VwZ3JhZGUoc2VsZik6CisgICAgICAgIGZvciBoZWFkZXIsIHBhcnNl
ZCBpbiBbCisgICAgICAgICAgICAjIFJlYWxpc3RpYyB1c2UgY2FzZQorICAgICAgICAgICAgKCJ3
ZWJzb2NrZXQiLCBbIndlYnNvY2tldCJdKSwKKyAgICAgICAgICAgICMgU3ludGhldGljIGV4YW1w
bGUKKyAgICAgICAgICAgICgiaHR0cC8zLjAsIHdlYnNvY2tldCIsIFsiaHR0cC8zLjAiLCAid2Vi
c29ja2V0Il0pLAorICAgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgZXhhbXBsZQorICAgICAgICAg
ICAgKCIsLCAgV2ViU29ja2V0LCAgXHQsLCIsIFsiV2ViU29ja2V0Il0pLAorICAgICAgICBdOgor
ICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGVhZGVyPWhlYWRlcik6CisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZV91cGdyYWRlKGhlYWRlciksIHBhcnNlZCkKKwor
ICAgIGRlZiB0ZXN0X3BhcnNlX3VwZ3JhZGVfaW52YWxpZF9oZWFkZXJfZm9ybWF0KHNlbGYpOgor
ICAgICAgICBmb3IgaGVhZGVyIGluIFsiPz8/IiwgIndlYnNvY2tldCAyIiwgImh0dHAvMy4wOyB3
ZWJzb2NrZXQiXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGhlYWRlcj1oZWFkZXIp
OgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZEhlYWRlckZv
cm1hdCk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlX3VwZ3JhZGUoaGVhZGVyKQorCisgICAg
ZGVmIHRlc3RfcGFyc2VfZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBmb3IgaGVhZGVyLCBwYXJz
ZWQgaW4gWworICAgICAgICAgICAgIyBTeW50aGV0aWMgZXhhbXBsZXMKKyAgICAgICAgICAgICgi
Zm9vIiwgWygiZm9vIiwgW10pXSksCisgICAgICAgICAgICAoImZvbywgYmFyIiwgWygiZm9vIiwg
W10pLCAoImJhciIsIFtdKV0pLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICdmb287
IG5hbWU7IHRva2VuPXRva2VuOyBxdW90ZWQtc3RyaW5nPSJxdW90ZWQtc3RyaW5nIiwgJworICAg
ICAgICAgICAgICAgICJiYXI7IHF1dXg7IHF1dXV4IiwKKyAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibmFtZSIs
IE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidG9rZW4iLCAidG9rZW4iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInF1b3RlZC1zdHJpbmciLCAicXVvdGVkLXN0
cmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAgICAgKCJiYXIiLCBbKCJxdXV4IiwgTm9uZSksICgicXV1dXgi
LCBOb25lKV0pLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgIyBQYXRob2xvZ2ljYWwgZXhhbXBsZQorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg
ICIsXHQsICwgICxmb28gIDtiYXIgPSA0MiwsICAgYmF6LCwiLAorICAgICAgICAgICAgICAgIFso
ImZvbyIsIFsoImJhciIsICI0MiIpXSksICgiYmF6IiwgW10pXSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAjIFJlYWxpc3RpYyB1c2UgY2FzZXMgZm9yIHBlcm1lc3NhZ2UtZGVmbGF0ZQor
ICAgICAgICAgICAgKCJwZXJtZXNzYWdlLWRlZmxhdGUiLCBbKCJwZXJtZXNzYWdlLWRlZmxhdGUi
LCBbXSldKSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAicGVybWVzc2FnZS1kZWZs
YXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwKKyAgICAgICAgICAgICAgICBbKCJwZXJtZXNz
YWdlLWRlZmxhdGUiLCBbKCJjbGllbnRfbWF4X3dpbmRvd19iaXRzIiwgTm9uZSldKV0sCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICJwZXJtZXNzYWdlLWRl
ZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTAiLAorICAgICAgICAgICAgICAgIFsoInBl
cm1lc3NhZ2UtZGVmbGF0ZSIsIFsoInNlcnZlcl9tYXhfd2luZG93X2JpdHMiLCAiMTAiKV0pXSwK
KyAgICAgICAgICAgICksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVz
dChoZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNl
X2V4dGVuc2lvbihoZWFkZXIpLCBwYXJzZWQpCisgICAgICAgICAgICAgICAgIyBBbHNvIGVuc3Vy
ZSB0aGF0IGJ1aWxkX2V4dGVuc2lvbiByb3VuZC10cmlwcyBjbGVhbmx5LgorICAgICAgICAgICAg
ICAgIHVucGFyc2VkID0gYnVpbGRfZXh0ZW5zaW9uKHBhcnNlZCkKKyAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhcnNlX2V4dGVuc2lvbih1bnBhcnNlZCksIHBhcnNlZCkKKworICAg
IGRlZiB0ZXN0X3BhcnNlX2V4dGVuc2lvbl9pbnZhbGlkX2hlYWRlcl9mb3JtYXQoc2VsZik6Cisg
ICAgICAgIGZvciBoZWFkZXIgaW4gWworICAgICAgICAgICAgIyBUcnVuY2F0ZWQgZXhhbXBsZXMK
KyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgIixcdCwiLAorICAgICAgICAgICAgImZvbzsi
LAorICAgICAgICAgICAgImZvbzsgYmFyOyIsCisgICAgICAgICAgICAiZm9vOyBiYXI9IiwKKyAg
ICAgICAgICAgICdmb287IGJhcj0iYmF6JywKKyAgICAgICAgICAgICMgV3JvbmcgZGVsaW1pdGVy
CisgICAgICAgICAgICAiZm9vLCBiYXIsIGJhej1xdXV4OyBxdXV1eCIsCisgICAgICAgICAgICAj
IFZhbHVlIGluIHF1b3RlZCBzdHJpbmcgcGFyYW1ldGVyIHRoYXQgaXNuJ3QgYSB0b2tlbgorICAg
ICAgICAgICAgJ2ZvbzsgYmFyPSIgIicsCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNl
bGYuc3ViVGVzdChoZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRIZWFkZXJGb3JtYXQpOgorICAgICAgICAgICAgICAgICAgICBwYXJz
ZV9leHRlbnNpb24oaGVhZGVyKQorCisgICAgZGVmIHRlc3RfcGFyc2Vfc3VicHJvdG9jb2woc2Vs
Zik6CisgICAgICAgIGZvciBoZWFkZXIsIHBhcnNlZCBpbiBbCisgICAgICAgICAgICAjIFN5bnRo
ZXRpYyBleGFtcGxlcworICAgICAgICAgICAgKCJmb28iLCBbImZvbyJdKSwKKyAgICAgICAgICAg
ICgiZm9vLCBiYXIiLCBbImZvbyIsICJiYXIiXSksCisgICAgICAgICAgICAjIFBhdGhvbG9naWNh
bCBleGFtcGxlCisgICAgICAgICAgICAoIixcdCwgLCAgLGZvbyAgLCwgICBiYXIsYmF6LCwiLCBb
ImZvbyIsICJiYXIiLCAiYmF6Il0pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxm
LnN1YlRlc3QoaGVhZGVyPWhlYWRlcik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXJzZV9zdWJwcm90b2NvbChoZWFkZXIpLCBwYXJzZWQpCisgICAgICAgICAgICAgICAgIyBB
bHNvIGVuc3VyZSB0aGF0IGJ1aWxkX3N1YnByb3RvY29sIHJvdW5kLXRyaXBzIGNsZWFubHkuCisg
ICAgICAgICAgICAgICAgdW5wYXJzZWQgPSBidWlsZF9zdWJwcm90b2NvbChwYXJzZWQpCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZV9zdWJwcm90b2NvbCh1bnBhcnNlZCks
IHBhcnNlZCkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3N1YnByb3RvY29sX2ludmFsaWRfaGVhZGVy
KHNlbGYpOgorICAgICAgICBmb3IgaGVhZGVyIGluIFsKKyAgICAgICAgICAgICMgVHJ1bmNhdGVk
IGV4YW1wbGVzCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICIsXHQsIgorICAgICAgICAg
ICAgIyBXcm9uZyBkZWxpbWl0ZXIKKyAgICAgICAgICAgICJmb287IGJhciIsCisgICAgICAgIF06
CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoZWFkZXI9aGVhZGVyKToKKyAgICAgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIZWFkZXJGb3JtYXQpOgorICAg
ICAgICAgICAgICAgICAgICBwYXJzZV9zdWJwcm90b2NvbChoZWFkZXIpCisKKyAgICBkZWYgdGVz
dF9idWlsZF93d3dfYXV0aGVudGljYXRlX2Jhc2ljKHNlbGYpOgorICAgICAgICAjIFRlc3QgdmVj
dG9yIGZyb20gUkZDIDc2MTcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGJ1aWxkX3d3d19hdXRoZW50aWNhdGVfYmFzaWMoImZvbyIpLCAnQmFzaWMgcmVhbG09ImZvbyIs
IGNoYXJzZXQ9IlVURi04IicKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYnVpbGRfd3d3X2F1
dGhlbnRpY2F0ZV9iYXNpY19pbnZhbGlkX3JlYWxtKHNlbGYpOgorICAgICAgICAjIFJlYWxtIGNv
bnRhaW5zIGEgY29udHJvbCBjaGFyYWN0ZXIgZm9yYmlkZGVuIGluIHF1b3RlZC1zdHJpbmcgZW5j
b2RpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAg
ICAgICAgIGJ1aWxkX3d3d19hdXRoZW50aWNhdGVfYmFzaWMoIlx1MDAwNyIpCisKKyAgICBkZWYg
dGVzdF9idWlsZF9hdXRob3JpemF0aW9uX2Jhc2ljKHNlbGYpOgorICAgICAgICAjIFRlc3QgdmVj
dG9yIGZyb20gUkZDIDc2MTcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGJ1aWxkX2F1dGhvcml6YXRpb25fYmFzaWMoIkFsYWRkaW4iLCAib3BlbiBzZXNhbWUiKSwKKyAg
ICAgICAgICAgICJCYXNpYyBRV3hoWkdScGJqcHZjR1Z1SUhObGMyRnRaUT09IiwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfYnVpbGRfYXV0aG9yaXphdGlvbl9iYXNpY191dGY4KHNlbGYpOgor
ICAgICAgICAjIFRlc3QgdmVjdG9yIGZyb20gUkZDIDc2MTcKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGJ1aWxkX2F1dGhvcml6YXRpb25fYmFzaWMoInRlc3QiLCAiMTIz
wqMiKSwgIkJhc2ljIGRHVnpkRG94TWpQQ293PT0iCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X3BhcnNlX2F1dGhvcml6YXRpb25fYmFzaWMoc2VsZik6CisgICAgICAgIGZvciBoZWFkZXIsIHBh
cnNlZCBpbiBbCisgICAgICAgICAgICAoIkJhc2ljIFFXeGhaR1JwYmpwdmNHVnVJSE5sYzJGdFpR
PT0iLCAoIkFsYWRkaW4iLCAib3BlbiBzZXNhbWUiKSksCisgICAgICAgICAgICAjIFBhc3N3b3Jk
IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgiQmFzaWMgZEdWemRE
b3hNalBDb3c9PSIsICgidGVzdCIsICIxMjPCoyIpKSwKKyAgICAgICAgICAgICMgUGFzc3dvcmQg
Y29udGFpbnMgYSBjb2xvbgorICAgICAgICAgICAgKCJCYXNpYyBZV3hoWkdScGJqcHZjR1Z1T25O
bGMyRnRaUT09IiwgKCJhbGFkZGluIiwgIm9wZW46c2VzYW1lIikpLAorICAgICAgICAgICAgIyBT
Y2hlbWUgbmFtZSBtdXN0IGJlIGNhc2UgaW5zZW5zaXRpdmUKKyAgICAgICAgICAgICgiYmFzaWMg
UVd4aFpHUnBianB2Y0dWdUlITmxjMkZ0WlE9PSIsICgiQWxhZGRpbiIsICJvcGVuIHNlc2FtZSIp
KSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGhlYWRlcj1oZWFk
ZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VfYXV0aG9yaXphdGlv
bl9iYXNpYyhoZWFkZXIpLCBwYXJzZWQpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9hdXRob3JpemF0
aW9uX2Jhc2ljX2ludmFsaWRfaGVhZGVyX2Zvcm1hdChzZWxmKToKKyAgICAgICAgZm9yIGhlYWRl
ciBpbiBbCisgICAgICAgICAgICAiLy8gQmFzaWMgUVd4aFpHUnBianB2Y0dWdUlITmxjMkZ0WlE9
PSIsCisgICAgICAgICAgICAiQmFzaWNcdFFXeGhaR1JwYmpwdmNHVnVJSE5sYzJGdFpRPT0iLAor
ICAgICAgICAgICAgIkJhc2ljICoqKioqKioqKioqKioqKioqKioqKioqKioqKioiLAorICAgICAg
ICAgICAgIkJhc2ljIFFXeGhaR1JwYmpwdmNHVnVJSE5sYzJGdFpRPT0gLy8iLAorICAgICAgICBd
OgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGVhZGVyPWhlYWRlcik6CisgICAgICAg
ICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkSGVhZGVyRm9ybWF0KToKKyAg
ICAgICAgICAgICAgICAgICAgcGFyc2VfYXV0aG9yaXphdGlvbl9iYXNpYyhoZWFkZXIpCisKKyAg
ICBkZWYgdGVzdF9wYXJzZV9hdXRob3JpemF0aW9uX2Jhc2ljX2ludmFsaWRfaGVhZGVyX3ZhbHVl
KHNlbGYpOgorICAgICAgICBmb3IgaGVhZGVyIGluIFsKKyAgICAgICAgICAgICJEaWdlc3QgLi4u
IiwKKyAgICAgICAgICAgICJCYXNpYyBRV3hoWkdScGJqcHZjR1Z1SUhObGMyRnRaUSIsCisgICAg
ICAgICAgICAiQmFzaWMgUVd4aFpHTmxjMkZ0WlE9PSIsCisgICAgICAgIF06CisgICAgICAgICAg
ICB3aXRoIHNlbGYuc3ViVGVzdChoZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRIZWFkZXJWYWx1ZSk6CisgICAgICAgICAgICAgICAg
ICAgIHBhcnNlX2F1dGhvcml6YXRpb25fYmFzaWMoaGVhZGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfaHR0cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0
X2h0dHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MWI1MjJj
M2Q1NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9odHRw
LnB5CkBAIC0wLDAgKzEsMjQ5IEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IHVuaXR0ZXN0CisK
K2Zyb20gd2Vic29ja2V0cy5leGNlcHRpb25zIGltcG9ydCBTZWN1cml0eUVycm9yCitmcm9tIHdl
YnNvY2tldHMuaHR0cCBpbXBvcnQgKgorZnJvbSB3ZWJzb2NrZXRzLmh0dHAgaW1wb3J0IHJlYWRf
aGVhZGVycworCitmcm9tIC51dGlscyBpbXBvcnQgQXN5bmNpb1Rlc3RDYXNlCisKKworY2xhc3Mg
SFRUUEFzeW5jVGVzdHMoQXN5bmNpb1Rlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnN0cmVhbSA9IGFzeW5jaW8uU3Ry
ZWFtUmVhZGVyKGxvb3A9c2VsZi5sb29wKQorCisgICAgYXN5bmMgZGVmIHRlc3RfcmVhZF9yZXF1
ZXN0KHNlbGYpOgorICAgICAgICAjIEV4YW1wbGUgZnJvbSB0aGUgcHJvdG9jb2wgb3ZlcnZpZXcg
aW4gUkZDIDY0NTUKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKAorICAgICAgICAgICAg
YiJHRVQgL2NoYXQgSFRUUC8xLjFcclxuIgorICAgICAgICAgICAgYiJIb3N0OiBzZXJ2ZXIuZXhh
bXBsZS5jb21cclxuIgorICAgICAgICAgICAgYiJVcGdyYWRlOiB3ZWJzb2NrZXRcclxuIgorICAg
ICAgICAgICAgYiJDb25uZWN0aW9uOiBVcGdyYWRlXHJcbiIKKyAgICAgICAgICAgIGIiU2VjLVdl
YlNvY2tldC1LZXk6IGRHaGxJSE5oYlhCc1pTQnViMjVqWlE9PVxyXG4iCisgICAgICAgICAgICBi
Ik9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbiIKKyAgICAgICAgICAgIGIiU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbDogY2hhdCwgc3VwZXJjaGF0XHJcbiIKKyAgICAgICAgICAgIGIiU2VjLVdl
YlNvY2tldC1WZXJzaW9uOiAxM1xyXG4iCisgICAgICAgICAgICBiIlxyXG4iCisgICAgICAgICkK
KyAgICAgICAgcGF0aCwgaGVhZGVycyA9IGF3YWl0IHJlYWRfcmVxdWVzdChzZWxmLnN0cmVhbSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCAiL2NoYXQiKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGhlYWRlcnNbIlVwZ3JhZGUiXSwgIndlYnNvY2tldCIpCisKKyAgICBhc3luYyBk
ZWYgdGVzdF9yZWFkX3JlcXVlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZl
ZWRfZW9mKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAg
ICAgRU9GRXJyb3IsICJjb25uZWN0aW9uIGNsb3NlZCB3aGlsZSByZWFkaW5nIEhUVFAgcmVxdWVz
dCBsaW5lIgorICAgICAgICApOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXF1ZXN0KHNlbGYu
c3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfcmVhZF9yZXF1ZXN0X2ludmFsaWRfcmVxdWVz
dF9saW5lKHNlbGYpOgorICAgICAgICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoYiJHRVQgL1xyXG5c
clxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJp
bnZhbGlkIEhUVFAgcmVxdWVzdCBsaW5lOiBHRVQgLyIpOgorICAgICAgICAgICAgYXdhaXQgcmVh
ZF9yZXF1ZXN0KHNlbGYuc3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfcmVhZF9yZXF1ZXN0
X3Vuc3VwcG9ydGVkX21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRh
KGIiT1BUSU9OUyAqIEhUVFAvMS4xXHJcblxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInVuc3VwcG9ydGVkIEhUVFAgbWV0aG9kOiBPUFRJT05T
Iik6CisgICAgICAgICAgICBhd2FpdCByZWFkX3JlcXVlc3Qoc2VsZi5zdHJlYW0pCisKKyAgICBh
c3luYyBkZWYgdGVzdF9yZWFkX3JlcXVlc3RfdW5zdXBwb3J0ZWRfdmVyc2lvbihzZWxmKToKKyAg
ICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKGIiR0VUIC9jaGF0IEhUVFAvMS4wXHJcblxyXG4i
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInVuc3Vw
cG9ydGVkIEhUVFAgdmVyc2lvbjogSFRUUC8xLjAiKToKKyAgICAgICAgICAgIGF3YWl0IHJlYWRf
cmVxdWVzdChzZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVxdWVzdF9p
bnZhbGlkX2hlYWRlcihzZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRhKGIiR0VU
IC9jaGF0IEhUVFAvMS4xXHJcbk9vcHNcclxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJpbnZhbGlkIEhUVFAgaGVhZGVyIGxpbmU6IE9vcHMiKToK
KyAgICAgICAgICAgIGF3YWl0IHJlYWRfcmVxdWVzdChzZWxmLnN0cmVhbSkKKworICAgIGFzeW5j
IGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2Uoc2VsZik6CisgICAgICAgICMgRXhhbXBsZSBmcm9tIHRo
ZSBwcm90b2NvbCBvdmVydmlldyBpbiBSRkMgNjQ1NQorICAgICAgICBzZWxmLnN0cmVhbS5mZWVk
X2RhdGEoCisgICAgICAgICAgICBiIkhUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJc
biIKKyAgICAgICAgICAgIGIiVXBncmFkZTogd2Vic29ja2V0XHJcbiIKKyAgICAgICAgICAgIGIi
Q29ubmVjdGlvbjogVXBncmFkZVxyXG4iCisgICAgICAgICAgICBiIlNlYy1XZWJTb2NrZXQtQWNj
ZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289XHJcbiIKKyAgICAgICAgICAgIGIiU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG4iCisgICAgICAgICAgICBiIlxyXG4iCisgICAg
ICAgICkKKyAgICAgICAgc3RhdHVzX2NvZGUsIHJlYXNvbiwgaGVhZGVycyA9IGF3YWl0IHJlYWRf
cmVzcG9uc2Uoc2VsZi5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzX2Nv
ZGUsIDEwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFzb24sICJTd2l0Y2hpbmcgUHJv
dG9jb2xzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWyJVcGdyYWRlIl0sICJ3
ZWJzb2NrZXQiKQorCisgICAgYXN5bmMgZGVmIHRlc3RfcmVhZF9yZXNwb25zZV9lbXB0eShzZWxm
KToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9lb2YoKQorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBFT0ZFcnJvciwgImNvbm5lY3Rpb24gY2xvc2Vk
IHdoaWxlIHJlYWRpbmcgSFRUUCBzdGF0dXMgbGluZSIKKyAgICAgICAgKToKKyAgICAgICAgICAg
IGF3YWl0IHJlYWRfcmVzcG9uc2Uoc2VsZi5zdHJlYW0pCisKKyAgICBhc3luYyBkZWYgdGVzdF9y
ZWFkX3JlcXVlc3RfaW52YWxpZF9zdGF0dXNfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5zdHJl
YW0uZmVlZF9kYXRhKGIiSGVsbG8hXHJcbiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXNSZWdleChWYWx1ZUVycm9yLCAiaW52YWxpZCBIVFRQIHN0YXR1cyBsaW5lOiBIZWxsbyEiKToK
KyAgICAgICAgICAgIGF3YWl0IHJlYWRfcmVzcG9uc2Uoc2VsZi5zdHJlYW0pCisKKyAgICBhc3lu
YyBkZWYgdGVzdF9yZWFkX3Jlc3BvbnNlX3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6CisgICAg
ICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiIkhUVFAvMS4wIDQwMCBCYWQgUmVxdWVzdFxyXG5c
clxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJ1
bnN1cHBvcnRlZCBIVFRQIHZlcnNpb246IEhUVFAvMS4wIik6CisgICAgICAgICAgICBhd2FpdCBy
ZWFkX3Jlc3BvbnNlKHNlbGYuc3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfcmVhZF9yZXNw
b25zZV9pbnZhbGlkX3N0YXR1cyhzZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0uZmVlZF9kYXRh
KGIiSFRUUC8xLjEgT01HIFdURlxyXG5cclxuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJpbnZhbGlkIEhUVFAgc3RhdHVzIGNvZGU6IE9NRyIpOgor
ICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXNwb25zZShzZWxmLnN0cmVhbSkKKworICAgIGFzeW5j
IGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2VfdW5zdXBwb3J0ZWRfc3RhdHVzKHNlbGYpOgorICAgICAg
ICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoYiJIVFRQLzEuMSAwMDcgTXkgbmFtZSBpcyBCb25kXHJc
blxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwg
InVuc3VwcG9ydGVkIEhUVFAgc3RhdHVzIGNvZGU6IDAwNyIpOgorICAgICAgICAgICAgYXdhaXQg
cmVhZF9yZXNwb25zZShzZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVz
cG9uc2VfaW52YWxpZF9yZWFzb24oc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0
YShiIkhUVFAvMS4xIDIwMCBceDdmXHJcblxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImludmFsaWQgSFRUUCByZWFzb24gcGhyYXNlOiBcXHg3
ZiIpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9yZXNwb25zZShzZWxmLnN0cmVhbSkKKworICAg
IGFzeW5jIGRlZiB0ZXN0X3JlYWRfcmVzcG9uc2VfaW52YWxpZF9oZWFkZXIoc2VsZik6CisgICAg
ICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiIkhUVFAvMS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIg
RXJyb3JcclxuT29wc1xyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgo
VmFsdWVFcnJvciwgImludmFsaWQgSFRUUCBoZWFkZXIgbGluZTogT29wcyIpOgorICAgICAgICAg
ICAgYXdhaXQgcmVhZF9yZXNwb25zZShzZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0
X2hlYWRlcl9uYW1lKHNlbGYpOgorICAgICAgICBzZWxmLnN0cmVhbS5mZWVkX2RhdGEoYiJmb28g
YmFyOiBiYXogcXV4XHJcblxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQor
CisgICAgYXN5bmMgZGVmIHRlc3RfaGVhZGVyX3ZhbHVlKHNlbGYpOgorICAgICAgICBzZWxmLnN0
cmVhbS5mZWVkX2RhdGEoYiJmb286IFx4MDBceDAwXHgwZlxyXG5cclxuIikKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGF3YWl0IHJlYWRf
aGVhZGVycyhzZWxmLnN0cmVhbSkKKworICAgIGFzeW5jIGRlZiB0ZXN0X2hlYWRlcnNfbGltaXQo
c2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiImZvbzogYmFyXHJcbiIgKiAy
NTcgKyBiIlxyXG4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNlY3VyaXR5RXJy
b3IpOgorICAgICAgICAgICAgYXdhaXQgcmVhZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQorCisgICAg
YXN5bmMgZGVmIHRlc3RfbGluZV9saW1pdChzZWxmKToKKyAgICAgICAgIyBIZWFkZXIgbGluZSBj
b250YWlucyA1ICsgNDA5MCArIDIgPSA0MDk3IGJ5dGVzLgorICAgICAgICBzZWxmLnN0cmVhbS5m
ZWVkX2RhdGEoYiJmb286ICIgKyBiImEiICogNDA5MCArIGIiXHJcblxyXG4iKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNlY3VyaXR5RXJyb3IpOgorICAgICAgICAgICAgYXdhaXQg
cmVhZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQorCisgICAgYXN5bmMgZGVmIHRlc3RfbGluZV9lbmRp
bmcoc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtLmZlZWRfZGF0YShiImZvbzogYmFyXG5cbiIp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgorICAgICAgICAgICAg
YXdhaXQgcmVhZF9oZWFkZXJzKHNlbGYuc3RyZWFtKQorCisKK2NsYXNzIEhlYWRlcnNUZXN0cyh1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmhl
YWRlcnMgPSBIZWFkZXJzKFsoIkNvbm5lY3Rpb24iLCAiVXBncmFkZSIpLCAoIlNlcnZlciIsIFVT
RVJfQUdFTlQpXSkKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihzZWxmLmhlYWRlcnMpLCBmIkNvbm5lY3Rpb246IFVw
Z3JhZGVcclxuU2VydmVyOiB7VVNFUl9BR0VOVH1cclxuXHJcbiIKKyAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIHJlcHIoc2VsZi5oZWFkZXJzKSwKKyAgICAgICAgICAgIGYiSGVhZGVycyhbKCdDb25uZWN0
aW9uJywgJ1VwZ3JhZGUnKSwgIiBmIignU2VydmVyJywgJ3tVU0VSX0FHRU5UfScpXSkiLAorICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV92YWx1ZXNfZXJyb3Jfc3RyKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNdWx0aXBsZVZhbHVlc0Vycm9yKCJDb25uZWN0
aW9uIikpLCAiJ0Nvbm5lY3Rpb24nIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXVs
dGlwbGVWYWx1ZXNFcnJvcigpKSwgIiIpCisKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRJbigiU2VydmVyIiwgc2VsZi5oZWFkZXJzKQorCisgICAgZGVm
IHRlc3RfY29udGFpbnNfY2FzZV9pbnNlbnNpdGl2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRJbigic2VydmVyIiwgc2VsZi5oZWFkZXJzKQorCisgICAgZGVmIHRlc3RfY29udGFpbnNfbm90
X2ZvdW5kKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJEYXRlIiwgc2VsZi5oZWFk
ZXJzKQorCisgICAgZGVmIHRlc3RfY29udGFpbnNfbm9uX3N0cmluZ19rZXkoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0Tm90SW4oNDIsIHNlbGYuaGVhZGVycykKKworICAgIGRlZiB0ZXN0X2l0
ZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGl0ZXIoc2VsZi5oZWFkZXJz
KSksIHsiY29ubmVjdGlvbiIsICJzZXJ2ZXIifSkKKworICAgIGRlZiB0ZXN0X2xlbihzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5oZWFkZXJzKSwgMikKKworICAgIGRl
ZiB0ZXN0X2dldGl0ZW0oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFk
ZXJzWyJTZXJ2ZXIiXSwgVVNFUl9BR0VOVCkKKworICAgIGRlZiB0ZXN0X2dldGl0ZW1fY2FzZV9p
bnNlbnNpdGl2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhlYWRlcnNb
InNlcnZlciJdLCBVU0VSX0FHRU5UKQorCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9rZXlfZXJyb3Io
c2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAg
ICAgICAgc2VsZi5oZWFkZXJzWyJVcGdyYWRlIl0KKworICAgIGRlZiB0ZXN0X2dldGl0ZW1fbXVs
dGlwbGVfdmFsdWVzX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRlcnNbIlNlcnZlciJd
ID0gIjIiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTXVsdGlwbGVWYWx1ZXNFcnJv
cik6CisgICAgICAgICAgICBzZWxmLmhlYWRlcnNbIlNlcnZlciJdCisKKyAgICBkZWYgdGVzdF9z
ZXRpdGVtKHNlbGYpOgorICAgICAgICBzZWxmLmhlYWRlcnNbIlVwZ3JhZGUiXSA9ICJ3ZWJzb2Nr
ZXQiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzWyJVcGdyYWRlIl0sICJ3
ZWJzb2NrZXQiKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9jYXNlX2luc2Vuc2l0aXZlKHNlbGYp
OgorICAgICAgICBzZWxmLmhlYWRlcnNbInVwZ3JhZGUiXSA9ICJ3ZWJzb2NrZXQiCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzWyJVcGdyYWRlIl0sICJ3ZWJzb2NrZXQiKQor
CisgICAgZGVmIHRlc3Rfc2V0aXRlbV9tdWx0aXBsZV92YWx1ZXMoc2VsZik6CisgICAgICAgIHNl
bGYuaGVhZGVyc1siQ29ubmVjdGlvbiJdID0gImNsb3NlIgorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKE11bHRpcGxlVmFsdWVzRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5oZWFkZXJz
WyJDb25uZWN0aW9uIl0KKworICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIGRl
bCBzZWxmLmhlYWRlcnNbIkNvbm5lY3Rpb24iXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaGVhZGVyc1siQ29ubmVjdGlvbiJdCisK
KyAgICBkZWYgdGVzdF9kZWxpdGVtX2Nhc2VfaW5zZW5zaXRpdmUoc2VsZik6CisgICAgICAgIGRl
bCBzZWxmLmhlYWRlcnNbImNvbm5lY3Rpb24iXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaGVhZGVyc1siQ29ubmVjdGlvbiJdCisK
KyAgICBkZWYgdGVzdF9kZWxpdGVtX211bHRpcGxlX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5oZWFkZXJzWyJDb25uZWN0aW9uIl0gPSAiY2xvc2UiCisgICAgICAgIGRlbCBzZWxmLmhlYWRl
cnNbIkNvbm5lY3Rpb24iXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9y
KToKKyAgICAgICAgICAgIHNlbGYuaGVhZGVyc1siQ29ubmVjdGlvbiJdCisKKyAgICBkZWYgdGVz
dF9lcShzZWxmKToKKyAgICAgICAgb3RoZXJfaGVhZGVycyA9IHNlbGYuaGVhZGVycy5jb3B5KCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhlYWRlcnMsIG90aGVyX2hlYWRlcnMpCisK
KyAgICBkZWYgdGVzdF9lcV9ub3RfZXF1YWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90
RXF1YWwoc2VsZi5oZWFkZXJzLCBbXSkKKworICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAg
ICAgICBzZWxmLmhlYWRlcnMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYu
aGVhZGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhlYWRlcnMsIEhlYWRlcnMo
KSkKKworICAgIGRlZiB0ZXN0X2dldF9hbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5oZWFkZXJzLmdldF9hbGwoIkNvbm5lY3Rpb24iKSwgWyJVcGdyYWRlIl0pCisKKyAg
ICBkZWYgdGVzdF9nZXRfYWxsX2Nhc2VfaW5zZW5zaXRpdmUoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5oZWFkZXJzLmdldF9hbGwoImNvbm5lY3Rpb24iKSwgWyJVcGdyYWRl
Il0pCisKKyAgICBkZWYgdGVzdF9nZXRfYWxsX25vX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLmhlYWRlcnMuZ2V0X2FsbCgiVXBncmFkZSIpLCBbXSkKKworICAg
IGRlZiB0ZXN0X2dldF9hbGxfbXVsdGlwbGVfdmFsdWVzKHNlbGYpOgorICAgICAgICBzZWxmLmhl
YWRlcnNbIkNvbm5lY3Rpb24iXSA9ICJjbG9zZSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLmhlYWRlcnMuZ2V0X2FsbCgiQ29ubmVjdGlvbiIpLCBbIlVwZ3JhZGUiLCAiY2xvc2UiXSkK
KworICAgIGRlZiB0ZXN0X3Jhd19pdGVtcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGxpc3Qoc2VsZi5oZWFkZXJzLnJhd19pdGVtcygpKSwKKyAgICAgICAg
ICAgIFsoIkNvbm5lY3Rpb24iLCAiVXBncmFkZSIpLCAoIlNlcnZlciIsIFVTRVJfQUdFTlQpXSwK
KyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfbG9jYWxo
b3N0LmNuZiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2xvY2FsaG9zdC5jbmYKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZGMzMzFhYzY5YTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9sb2NhbGhvc3QuY25mCkBAIC0w
LDAgKzEsMjYgQEAKK1sgcmVxIF0KKworZGVmYXVsdF9tZCA9IHNoYTI1NgorZW5jcnlwdF9rZXkg
PSBubworCitwcm9tcHQgPSBubworCitkaXN0aW5ndWlzaGVkX25hbWUgPSBkbgoreDUwOV9leHRl
bnNpb25zID0gZXh0CisKK1sgZG4gXQorCitDID0gIkZSIgorTCA9ICJQYXJpcyIKK08gPSAiQXlt
ZXJpYyBBdWd1c3RpbiIKK0NOID0gImxvY2FsaG9zdCIKKworWyBleHQgXQorCitzdWJqZWN0QWx0
TmFtZSA9IEBzYW4KKworWyBzYW4gXQorCitETlMuMSA9IGxvY2FsaG9zdAorSVAuMiA9IDEyNy4w
LjAuMQorSVAuMyA9IDo6MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3Rf
bG9jYWxob3N0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X2xvY2FsaG9zdC5wZW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iOGE5ZWE5YWIzYWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9sb2NhbGhvc3QucGVt
CkBAIC0wLDAgKzEsNDggQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJRXZnSUJB
REFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFDVWdyUVZrTmJBV1Jsbwor
elpVajE0VWZ6N1lFcDJNWG12bWhkbGZPR0x3ankreFBPOThhSlJ2NS9uWUYyZVdNM2xsY21MZThG
YkJTSytRRgorVG80c3U3WlZuYzZxSVRPSHFjU0RVdzA2V2FyUVVNczk0YmhIVXZRcDF1OCtiMmhO
aU1lR3c2K1FpQkk2T0pSTworaUdwTFJia042VWozQUt3aThTWVZvTHlNaXp0dXdiTnlHZjhmRjNE
RHBIWnRCaXRHdE1TQkNNc1FzZkI0NjVwbAorMlVveUJyV2EybHNiTHQzVnZCWlp2SHFmRXVQanBq
aktONVVTSVhuYWYwTml6YVI2cHMzRXlmZnRXeTRpN3pJUQorTjV1VEV4dmFQRHlQbjluSDNxL2Rr
VDk5bVNNU1UxQXZUVHBYOFBON0RscUU2d1pNYlFzQlBSR1c3R0VsUStPeAorSUtkS09MazVBZ01C
QUFFQ2dnRUFkM2txelFxbmFUaUVzNFpvQzl5UFVVYzFwRXJROGlXUDI3QXI5VFo2N01WYQorQjJn
Z0ZKVjBDMHNGd2JGSTlXblBOQ243N2dqNHZ6Sm1EMHJpSCtTblMvdFhUaERGdHNjQnU3QnR2TnAw
QzRCagorOFJXTXZYeGp4dUVOdVFuQlBGYmtSV3RaNndrOHVLL1p4OUFBeXl0OU0wN1FqejF3UGZB
SWRtL0lIN3pIQkZNQQorZ3Nxam5rTGgxcjBGdmpORWJMaXVHcVlVL0dWeGFaWWQreHkrSlU1Mkl4
akhVVUw5eUQwQlBXYitTemFyNkFNMgorZ1VwbVRYNitCY0Nad3daLy9EekNvV1laOUpiUDhha242
ZWRCZVp5dU1QcVlnTHpaa1B5UStoUlc0NlZQUHc4OQoreWc0TFI5bnpnUWlCSGxhYzBsYUI0TnJX
YStkOVFSUkxpdGwxTzNnVkFRS0JnUUREa3B0eFh1N3c5THBjK0hlRQorTi9wSmZwQ3pVdUY3WkM0
dmF0ZG9EenZmQjVLeTZXODhQb3ErSTdiQjltN1N0WGRGQWJEeVVCeHZpc2pUQk1WQQorT3RZcXBB
ay9yaFg4TWpTQXRqb0ZlMm5IK2VFaVFyaXVabXRBNUNkS0VYUzRoTmJjL0hoRVBXaGs3Wmg4T1Y1
dgoreTdsNHI2bDRVSHFhTjlReUUwdmxGZG1jbVFLQmdRRENaWlIvdHJKMi9nMk9xdWFTK1pkMmgv
M05YdzBOQnE0egorNE9CRVdxTmEvUjM1amRLNldsV0pINyt0S09hY3IreHRzd0xwUGVaSEd3TWRr
NjQvZXJiWVdCdUpXQWpwSDcySgorRE05KzFINWZGSEFOV3BXVE5uOTRlblF4d2Z6WlJ2ZGt4cTRJ
V3pHaGVzcHRZbkhJem9BbWFxQzNsYm4vZTN1MAorRmxuZzMyaEZvUUtCZ1FDRjNENEszaGliMGxZ
UXRueFBnbVVNa3RXRitBK2ZmbFZpWFRXczR1aHU0bWNWa0ZOegorbjdjbEo1cTZyZXJ5ekFRanRt
R2ZxUmVkZlJleDM0MEhSbjQ2VjJhQk1LMlpuZDl6emNadTVDYm1HbkZ2R3MzLworaU5pV1pOTkRq
aWtlOXNWK0lreExJT0RvVy92SDR4aHhXcmJMRlNqZzBlem95NWV3NHFaSzJhYkYyUUtCZ1FDNQor
TTVlZmVRcGJqVHlUVUVSdGYvYUtDWk9HWm1rRG9QcTBHQ2p4Vmp6TlFkcWQxejBOSjJUWVIvUVAz
NmlkWElsdQorRlo3UFlaYVM1YXc1TUdwUXRmT2U5NG44ZG0rKzBldDd0MFd6dW5STzF5VE54Q0Er
YVN4V05xdWVnQWNKWmEvcQorUmRLbHlXUG1TUnF6elpkRHpXQ1B1UVEzQXlGNXdrWWZVeS83cWp3
b0lRS0JnQjJ2OTZCVjcrbElDdmlJS3p6YgorMW8zQTNWekFYNU1HZDk4dUxHamxLNHFzQkMrczdt
azJlUXp0aU5aZ2JBMFc2ZmhRNUR6M0hjWEo1cHB5OE9rYworamVBa3RyTlJ6ejE1aHZpL1hrV2RP
K1ZNcWlIVzRsK3NXWXVramhDeW9kMW9PMUtHSHEwTFlZdnYwNzZzeXhHdwordlJLTHE3SUo0V0lw
MVZ0ZmFCbHJJb2dxCistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIENFUlRJ
RklDQVRFLS0tLS0KK01JSURUVENDQWpXZ0F3SUJBZ0lKQUo2VkcyY1Fsc2VwTUEwR0NTcUdTSWIz
RFFFQkN3VUFNRXd4Q3pBSkJnTlYKK0JBWVRBa1pTTVE0d0RBWURWUVFIREFWUVlYSnBjekVaTUJj
R0ExVUVDZ3dRUVhsdFpYSnBZeUJCZFdkMWMzUnAKK2JqRVNNQkFHQTFVRUF3d0piRzlqWVd4b2Iz
TjBNQ0FYRFRFNE1EVXdOVEUyTlRjMU5sb1lEekl3TmpBd05UQTAKK01UWTFOelUyV2pCTU1Rc3dD
UVlEVlFRR0V3SkdVakVPTUF3R0ExVUVCd3dGVUdGeWFYTXhHVEFYQmdOVkJBb00KK0VFRjViV1Z5
YVdNZ1FYVm5kWE4wYVc0eEVqQVFCZ05WQkFNTUNXeHZZMkZzYUc5emREQ0NBU0l3RFFZSktvWkkK
K2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSlNDdEJXUTFzQlpHV2pObFNQWGhSL1B0Z1Nu
WXhlYSthRjIKK1Y4NFl2Q1BMN0U4NzN4b2xHL24rZGdYWjVZemVXVnlZdDd3VnNGSXI1QVZPaml5
N3RsV2R6cW9oTTRlcHhJTlQKK0RUcFpxdEJReXozaHVFZFM5Q25XN3o1dmFFMkl4NGJEcjVDSUVq
bzRsRTZJYWt0RnVRM3BTUGNBckNMeEpoV2cKK3ZJeUxPMjdCczNJWi94OFhjTU9rZG0wR0swYTB4
SUVJeXhDeDhIanJtbVhaU2pJR3RacmFXeHN1M2RXOEZsbTgKK2VwOFM0K09tT01vM2xSSWhlZHAv
UTJMTnBIcW16Y1RKOSsxYkxpTHZNaEEzbTVNVEc5bzhQSStmMmNmZXI5MlIKK1AzMlpJeEpUVUM5
Tk9sZnc4M3NPV29UckJreHRDd0U5RVpic1lTVkQ0N0VncDBvNHVUa0NBd0VBQWFNd01DNHcKK0xB
WURWUjBSQkNVd0k0SUpiRzlqWVd4b2IzTjBod1IvQUFBQmh4QUFBQUFBQUFBQUFBQUFBQUFBQUFB
Qk1BMEcKK0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBMGltS3AvcmZsZmJEQ0N4NzhOZHNSNXJ0MGpL
ZW0ydDNZUEdUNnRiZVUKKytGUXo2MlNFZGVEMk9IV3hwdmZQZis2aDNpVFhKYmtha3IyUjRsUDN6
N0dIVWU2MWx0M1NvOVZIQXZnYnRQVEgKK2FCMWdPZFRoQTgzbzBmelF0bkl2NjdqQ3ZFOWd3UFFJ
blZpWkxFY20yaVFFWkxqNkF1U3ZCS21sdVRSN3ZOUmoKKzgvZjJSNExzRGZDV0dyemsyVytkZUdS
dlNvdzdpclM4OE5ROEJXOFM4b3RnTWlCeDREMlVsT21Rd3FyNlgrL3IKK2pZSUR1TWI2R0RLUlh0
QlVHRG9rZkU5NGhqajl1Mm1yTlJ3dDh5NHRxdThaTmEvL3lMRVEwT3cya1AzUUpQTFkKKzk0MVZa
cHdSaTJ2LytKdkk3T0JZbHZiT1RGd004bkFrNzlrK0Rndml5Z2Q5CistLS0tLUVORCBDRVJUSUZJ
Q0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF9wcm90b2Nv
bC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X3Byb3RvY29sLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDMyYzFmNzJlN2NiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rlc3RfcHJvdG9jb2wucHkKQEAgLTAsMCArMSwx
NDc1IEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBzeXMKK2lt
cG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2ltcG9ydCB3YXJuaW5ncworCitm
cm9tIHdlYnNvY2tldHMuZXhjZXB0aW9ucyBpbXBvcnQgQ29ubmVjdGlvbkNsb3NlZCwgSW52YWxp
ZFN0YXRlCitmcm9tIHdlYnNvY2tldHMuZnJhbWluZyBpbXBvcnQgKgorZnJvbSB3ZWJzb2NrZXRz
LnByb3RvY29sIGltcG9ydCBTdGF0ZSwgV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wKKworZnJvbSAu
dXRpbHMgaW1wb3J0IE1TLCBBc3luY2lvVGVzdENhc2UKKworCithc3luYyBkZWYgYXN5bmNfaXRl
cmFibGUoaXRlcmFibGUpOgorICAgIGZvciBpdGVtIGluIGl0ZXJhYmxlOgorICAgICAgICB5aWVs
ZCBpdGVtCisKKworY2xhc3MgVHJhbnNwb3J0TW9jayh1bml0dGVzdC5tb2NrLk1vY2spOgorICAg
ICIiIgorICAgIFRyYW5zcG9ydCBtb2NrIHRvIGNvbnRyb2wgdGhlIHByb3RvY29sJ3MgaW5wdXRz
IGFuZCBvdXRwdXRzIGluIHRlc3RzLgorCisgICAgSXQgY2FsbHMgdGhlIHByb3RvY29sJ3MgY29u
bmVjdGlvbl9tYWRlIGFuZCBjb25uZWN0aW9uX2xvc3QgbWV0aG9kcyBsaWtlCisgICAgYWN0dWFs
IHRyYW5zcG9ydHMuCisKKyAgICBJdCBhbHNvIGNhbGxzIHRoZSBwcm90b2NvbCdzIGNvbm5lY3Rp
b25fb3BlbiBtZXRob2QgdG8gYnlwYXNzIHRoZQorICAgIFdlYlNvY2tldCBoYW5kc2hha2UuCisK
KyAgICBUbyBzaW11bGF0ZSBpbmNvbWluZyBkYXRhLCB0ZXN0cyBjYWxsIHRoZSBwcm90b2NvbCdz
IGRhdGFfcmVjZWl2ZWQgYW5kCisgICAgZW9mX3JlY2VpdmVkIG1ldGhvZHMgZGlyZWN0bHkuCisK
KyAgICBUaGV5IGNvdWxkIGFsc28gcGF1c2Vfd3JpdGluZyBhbmQgcmVzdW1lX3dyaXRpbmcgdG8g
dGVzdCBmbG93IGNvbnRyb2wuCisKKyAgICAiIiIKKworICAgICMgVGhpcyBzaG91bGQgaGFwcGVu
IGluIF9faW5pdF9fIGJ1dCBvdmVycmlkaW5nIE1vY2suX19pbml0X18gaXMgaGFyZC4KKyAgICBk
ZWYgc2V0dXBfbW9jayhzZWxmLCBsb29wLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9vcCA9
IGxvb3AKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAgICAgIHNlbGYuX2Vv
ZiA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBGYWxzZQorICAgICAgICAjIFNpbXVs
YXRlIGEgc3VjY2Vzc2Z1bCBUQ1AgaGFuZHNoYWtlLgorICAgICAgICBzZWxmLnByb3RvY29sLmNv
bm5lY3Rpb25fbWFkZShzZWxmKQorICAgICAgICAjIFNpbXVsYXRlIGEgc3VjY2Vzc2Z1bCBXZWJT
b2NrZXQgaGFuZHNoYWtlLgorICAgICAgICBzZWxmLnByb3RvY29sLmNvbm5lY3Rpb25fb3Blbigp
CisKKyAgICBkZWYgY2FuX3dyaXRlX2VvZihzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKwor
ICAgIGRlZiB3cml0ZV9lb2Yoc2VsZik6CisgICAgICAgICMgV2hlbiB0aGUgcHJvdG9jb2wgaGFs
Zi1jbG9zZXMgdGhlIFRDUCBjb25uZWN0aW9uLCBpdCBleHBlY3RzIHRoZQorICAgICAgICAjIG90
aGVyIGVuZCB0byBjbG9zZSBpdC4gU2ltdWxhdGUgdGhhdC4KKyAgICAgICAgaWYgbm90IHNlbGYu
X2VvZjoKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24oc2VsZi5jbG9zZSkKKyAgICAg
ICAgc2VsZi5fZW9mID0gVHJ1ZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAjIFNp
bXVsYXRlIGhvdyBhY3R1YWwgdHJhbnNwb3J0cyBkcm9wIHRoZSBjb25uZWN0aW9uLgorICAgICAg
ICBpZiBub3Qgc2VsZi5fY2xvc2luZzoKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24o
c2VsZi5wcm90b2NvbC5jb25uZWN0aW9uX2xvc3QsIE5vbmUpCisgICAgICAgIHNlbGYuX2Nsb3Np
bmcgPSBUcnVlCisKKyAgICBkZWYgYWJvcnQoc2VsZik6CisgICAgICAgICMgQ2hhbmdlIHRoaXMg
dG8gYW4gYGlmYCBpZiB0ZXN0cyBjYWxsIGFib3J0KCkgbXVsdGlwbGUgdGltZXMuCisgICAgICAg
IGFzc2VydCBzZWxmLnByb3RvY29sLnN0YXRlIGlzIG5vdCBTdGF0ZS5DTE9TRUQKKyAgICAgICAg
c2VsZi5sb29wLmNhbGxfc29vbihzZWxmLnByb3RvY29sLmNvbm5lY3Rpb25fbG9zdCwgTm9uZSkK
KworCitjbGFzcyBDb21tb25UZXN0czoKKyAgICAiIiIKKyAgICBNaXhpbiB0aGF0IGRlZmluZXMg
bW9zdCB0ZXN0cyBidXQgZG9lc24ndCBpbmhlcml0IHVuaXR0ZXN0LlRlc3RDYXNlLgorCisgICAg
VGVzdHMgYXJlIHJ1biBieSB0aGUgU2VydmVyVGVzdHMgYW5kIENsaWVudFRlc3RzIHN1YmNsYXNz
ZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5z
ZXRVcCgpCisgICAgICAgICMgRGlzYWJsZSBwaW5ncyB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0
IHdoYXQgZnJhbWVzIGFyZSBzZW50IGV4YWN0bHkuCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBX
ZWJTb2NrZXRDb21tb25Qcm90b2NvbChwaW5nX2ludGVydmFsPU5vbmUpCisgICAgICAgIHNlbGYu
dHJhbnNwb3J0ID0gVHJhbnNwb3J0TW9jaygpCisgICAgICAgIHNlbGYudHJhbnNwb3J0LnNldHVw
X21vY2soc2VsZi5sb29wLCBzZWxmLnByb3RvY29sKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYp
OgorICAgICAgICBzZWxmLnRyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZSgpKQorICAgICAgICBzdXBlcigpLnRl
YXJEb3duKCkKKworICAgICMgVXRpbGl0aWVzIGZvciB3cml0aW5nIHRlc3RzLgorCisgICAgZGVm
IG1ha2VfZHJhaW5fc2xvdyhzZWxmLCBkZWxheT1NUyk6CisgICAgICAgICMgUHJvY2VzcyBjb25u
ZWN0aW9uX21hZGUgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSBzZWxmLnByb3RvY29sLnRyYW5zcG9y
dC4KKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKworICAgICAgICBvcmlnaW5hbF9kcmFp
biA9IHNlbGYucHJvdG9jb2wuX2RyYWluCisKKyAgICAgICAgYXN5bmMgZGVmIGRlbGF5ZWRfZHJh
aW4oKToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoCisgICAgICAgICAgICAgICAg
ZGVsYXksIGxvb3A9c2VsZi5sb29wIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDgpIGVs
c2UgTm9uZQorICAgICAgICAgICAgKQorICAgICAgICAgICAgYXdhaXQgb3JpZ2luYWxfZHJhaW4o
KQorCisgICAgICAgIHNlbGYucHJvdG9jb2wuX2RyYWluID0gZGVsYXllZF9kcmFpbgorCisgICAg
Y2xvc2VfZnJhbWUgPSBGcmFtZShUcnVlLCBPUF9DTE9TRSwgc2VyaWFsaXplX2Nsb3NlKDEwMDAs
ICJjbG9zZSIpKQorICAgIGxvY2FsX2Nsb3NlID0gRnJhbWUoVHJ1ZSwgT1BfQ0xPU0UsIHNlcmlh
bGl6ZV9jbG9zZSgxMDAwLCAibG9jYWwiKSkKKyAgICByZW1vdGVfY2xvc2UgPSBGcmFtZShUcnVl
LCBPUF9DTE9TRSwgc2VyaWFsaXplX2Nsb3NlKDEwMDAsICJyZW1vdGUiKSkKKworICAgIGRlZiBy
ZWNlaXZlX2ZyYW1lKHNlbGYsIGZyYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIE1ha2UgdGhl
IHByb3RvY29sIHJlY2VpdmUgYSBmcmFtZS4KKworICAgICAgICAiIiIKKyAgICAgICAgd3JpdGUg
PSBzZWxmLnByb3RvY29sLmRhdGFfcmVjZWl2ZWQKKyAgICAgICAgbWFzayA9IG5vdCBzZWxmLnBy
b3RvY29sLmlzX2NsaWVudAorICAgICAgICBmcmFtZS53cml0ZSh3cml0ZSwgbWFzaz1tYXNrKQor
CisgICAgZGVmIHJlY2VpdmVfZW9mKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSB0
aGUgcHJvdG9jb2wgcmVjZWl2ZSB0aGUgZW5kIG9mIHRoZSBkYXRhIHN0cmVhbS4KKworICAgICAg
ICBTaW5jZSBgYFdlYlNvY2tldENvbW1vblByb3RvY29sLmVvZl9yZWNlaXZlZGBgIHJldHVybnMg
YGBOb25lYGAsIGFuCisgICAgICAgIGFjdHVhbCB0cmFuc3BvcnQgd291bGQgY2xvc2UgaXRzZWxm
IGFmdGVyIGNhbGxpbmcgaXQuIFRoaXMgZnVuY3Rpb24KKyAgICAgICAgZW11bGF0ZXMgdGhhdCBi
ZWhhdmlvci4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5wcm90b2NvbC5lb2ZfcmVjZWl2
ZWQoKQorICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29uKHNlbGYudHJhbnNwb3J0LmNsb3NlKQor
CisgICAgZGVmIHJlY2VpdmVfZW9mX2lmX2NsaWVudChzZWxmKToKKyAgICAgICAgIiIiCisgICAg
ICAgIExpa2UgcmVjZWl2ZV9lb2YsIGJ1dCBvbmx5IGlmIHRoaXMgaXMgdGhlIGNsaWVudCBzaWRl
LgorCisgICAgICAgIFNpbmNlIHRoZSBzZXJ2ZXIgaXMgc3VwcG9zZWQgdG8gaW5pdGlhdGUgdGhl
IHRlcm1pbmF0aW9uIG9mIHRoZSBUQ1AKKyAgICAgICAgY29ubmVjdGlvbiwgdGhpcyBtZXRob2Qg
aGVscHMgbWFraW5nIHRlc3RzIHdvcmsgZm9yIGJvdGggc2lkZXMuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfY2xpZW50OgorICAgICAgICAgICAgc2VsZi5yZWNl
aXZlX2VvZigpCisKKyAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPTEwMDAsIHJl
YXNvbj0iY2xvc2UiKToKKyAgICAgICAgIiIiCisgICAgICAgIEV4ZWN1dGUgYSBjbG9zaW5nIGhh
bmRzaGFrZS4KKworICAgICAgICBUaGlzIHB1dHMgdGhlIGNvbm5lY3Rpb24gaW4gdGhlIENMT1NF
RCBzdGF0ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgY2xvc2VfZnJhbWVfZGF0YSA9IHNlcmlh
bGl6ZV9jbG9zZShjb2RlLCByZWFzb24pCisgICAgICAgICMgUHJlcGFyZSB0aGUgcmVzcG9uc2Ug
dG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlIGZyb20gdGhlIHJlbW90ZSBzaWRlLgorICAgICAgICBz
ZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQ0xPU0UsIGNsb3NlX2ZyYW1lX2RhdGEp
KQorICAgICAgICBzZWxmLnJlY2VpdmVfZW9mX2lmX2NsaWVudCgpCisgICAgICAgICMgVHJpZ2dl
ciB0aGUgY2xvc2luZyBoYW5kc2hha2UgZnJvbSB0aGUgbG9jYWwgc2lkZSBhbmQgY29tcGxldGUg
aXQuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5j
bG9zZShjb2RlLCByZWFzb24pKQorICAgICAgICAjIEVtcHR5IHRoZSBvdXRnb2luZyBkYXRhIHN0
cmVhbSBzbyB3ZSBjYW4gbWFrZSBhc3NlcnRpb25zIGxhdGVyIG9uLgorICAgICAgICBzZWxmLmFz
c2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9DTE9TRSwgY2xvc2VfZnJhbWVfZGF0YSkKKworICAg
ICAgICBhc3NlcnQgc2VsZi5wcm90b2NvbC5zdGF0ZSBpcyBTdGF0ZS5DTE9TRUQKKworICAgIGRl
ZiBoYWxmX2Nsb3NlX2Nvbm5lY3Rpb25fbG9jYWwoc2VsZiwgY29kZT0xMDAwLCByZWFzb249ImNs
b3NlIik6CisgICAgICAgICIiIgorICAgICAgICBTdGFydCBhIGNsb3NpbmcgaGFuZHNoYWtlIGJ1
dCBkbyBub3QgY29tcGxldGUgaXQuCisKKyAgICAgICAgVGhlIG1haW4gZGlmZmVyZW5jZSB3aXRo
IGBjbG9zZV9jb25uZWN0aW9uYCBpcyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzCisgICAgICAgIGxl
ZnQgaW4gdGhlIENMT1NJTkcgc3RhdGUgdW50aWwgdGhlIGV2ZW50IGxvb3AgcnVucyBhZ2Fpbi4K
KworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdGFzayB0aGF0
IG11c3QgYmUgYXdhaXRlZCBvcgorICAgICAgICBjYW5jZWxlZCwgZWxzZSBhc3luY2lvIGNvbXBs
YWlucyBhYm91dCBkZXN0cm95aW5nIGEgcGVuZGluZyB0YXNrLgorCisgICAgICAgICIiIgorICAg
ICAgICBjbG9zZV9mcmFtZV9kYXRhID0gc2VyaWFsaXplX2Nsb3NlKGNvZGUsIHJlYXNvbikKKyAg
ICAgICAgIyBUcmlnZ2VyIHRoZSBjbG9zaW5nIGhhbmRzaGFrZSBmcm9tIHRoZSBsb2NhbCBlbmRw
b2ludC4KKyAgICAgICAgY2xvc2VfdGFzayA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhzZWxmLnBy
b3RvY29sLmNsb3NlKGNvZGUsIHJlYXNvbikpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgp
ICAjIHdhaXRfZm9yIGV4ZWN1dGVzCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpICAjIHdy
aXRlX2ZyYW1lIGV4ZWN1dGVzCisgICAgICAgICMgRW1wdHkgdGhlIG91dGdvaW5nIGRhdGEgc3Ry
ZWFtIHNvIHdlIGNhbiBtYWtlIGFzc2VydGlvbnMgbGF0ZXIgb24uCisgICAgICAgIHNlbGYuYXNz
ZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX0NMT1NFLCBjbG9zZV9mcmFtZV9kYXRhKQorCisgICAg
ICAgIGFzc2VydCBzZWxmLnByb3RvY29sLnN0YXRlIGlzIFN0YXRlLkNMT1NJTkcKKworICAgICAg
ICAjIENvbXBsZXRlIHRoZSBjbG9zaW5nIHNlcXVlbmNlIGF0IDFtcyBpbnRlcnZhbHMgc28gdGhl
IHRlc3QgY2FuIHJ1bgorICAgICAgICAjIGF0IGVhY2ggcG9pbnQgZXZlbiBpdCBnb2VzIGJhY2sg
dG8gdGhlIGV2ZW50IGxvb3Agc2V2ZXJhbCB0aW1lcy4KKyAgICAgICAgc2VsZi5sb29wLmNhbGxf
bGF0ZXIoCisgICAgICAgICAgICBNUywgc2VsZi5yZWNlaXZlX2ZyYW1lLCBGcmFtZShUcnVlLCBP
UF9DTE9TRSwgY2xvc2VfZnJhbWVfZGF0YSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmxvb3Au
Y2FsbF9sYXRlcigyICogTVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZfY2xpZW50KQorCisgICAgICAg
ICMgVGhpcyB0YXNrIG11c3QgYmUgYXdhaXRlZCBvciBjYW5jZWxlZCBieSB0aGUgY2FsbGVyLgor
ICAgICAgICByZXR1cm4gY2xvc2VfdGFzaworCisgICAgZGVmIGhhbGZfY2xvc2VfY29ubmVjdGlv
bl9yZW1vdGUoc2VsZiwgY29kZT0xMDAwLCByZWFzb249ImNsb3NlIik6CisgICAgICAgICIiIgor
ICAgICAgICBSZWNlaXZlIGEgY2xvc2luZyBoYW5kc2hha2UgYnV0IGRvIG5vdCBjb21wbGV0ZSBp
dC4KKworICAgICAgICBUaGUgbWFpbiBkaWZmZXJlbmNlIHdpdGggYGNsb3NlX2Nvbm5lY3Rpb25g
IGlzIHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgbGVmdCBpbiB0aGUgQ0xPU0lORyBz
dGF0ZSB1bnRpbCB0aGUgZXZlbnQgbG9vcCBydW5zIGFnYWluLgorCisgICAgICAgICIiIgorICAg
ICAgICAjIE9uIHRoZSBzZXJ2ZXIgc2lkZSwgd2Vic29ja2V0cyBjb21wbGV0ZXMgdGhlIGNsb3Np
bmcgaGFuZHNoYWtlIGFuZAorICAgICAgICAjIGNsb3NlcyB0aGUgVENQIGNvbm5lY3Rpb24gaW1t
ZWRpYXRlbHkuIFlpZWxkIHRvIHRoZSBldmVudCBsb29wIGFmdGVyCisgICAgICAgICMgc2VuZGlu
ZyB0aGUgY2xvc2UgZnJhbWUgdG8gcnVuIHRoZSB0ZXN0IHdoaWxlIHRoZSBjb25uZWN0aW9uIGlz
IGluCisgICAgICAgICMgdGhlIENMT1NJTkcgc3RhdGUuCisgICAgICAgIGlmIG5vdCBzZWxmLnBy
b3RvY29sLmlzX2NsaWVudDoKKyAgICAgICAgICAgIHNlbGYubWFrZV9kcmFpbl9zbG93KCkKKwor
ICAgICAgICBjbG9zZV9mcmFtZV9kYXRhID0gc2VyaWFsaXplX2Nsb3NlKGNvZGUsIHJlYXNvbikK
KyAgICAgICAgIyBUcmlnZ2VyIHRoZSBjbG9zaW5nIGhhbmRzaGFrZSBmcm9tIHRoZSByZW1vdGUg
ZW5kcG9pbnQuCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DTE9T
RSwgY2xvc2VfZnJhbWVfZGF0YSkpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpICAjIHJl
YWRfZnJhbWUgZXhlY3V0ZXMKKyAgICAgICAgIyBFbXB0eSB0aGUgb3V0Z29pbmcgZGF0YSBzdHJl
YW0gc28gd2UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBsYXRlciBvbi4KKyAgICAgICAgc2VsZi5hc3Nl
cnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1BfQ0xPU0UsIGNsb3NlX2ZyYW1lX2RhdGEpCisKKyAgICAg
ICAgYXNzZXJ0IHNlbGYucHJvdG9jb2wuc3RhdGUgaXMgU3RhdGUuQ0xPU0lORworCisgICAgICAg
ICMgQ29tcGxldGUgdGhlIGNsb3Npbmcgc2VxdWVuY2UgYXQgMW1zIGludGVydmFscyBzbyB0aGUg
dGVzdCBjYW4gcnVuCisgICAgICAgICMgYXQgZWFjaCBwb2ludCBldmVuIGl0IGdvZXMgYmFjayB0
byB0aGUgZXZlbnQgbG9vcCBzZXZlcmFsIHRpbWVzLgorICAgICAgICBzZWxmLmxvb3AuY2FsbF9s
YXRlcigyICogTVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZfY2xpZW50KQorCisgICAgZGVmIHByb2Nl
c3NfaW52YWxpZF9mcmFtZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBNYWtlIHRoZSBw
cm90b2NvbCBmYWlsIHF1aWNrbHkgYWZ0ZXIgc2ltdWxhdGluZyBpbnZhbGlkIGRhdGEuCisKKyAg
ICAgICAgVG8gYWNoaWV2ZSB0aGlzLCB0aGlzIGZ1bmN0aW9uIHRyaWdnZXJzIHRoZSBwcm90b2Nv
bCdzIGVvZl9yZWNlaXZlZCwKKyAgICAgICAgd2hpY2ggaW50ZXJydXB0cyBwZW5kaW5nIHJlYWRz
IHdhaXRpbmcgZm9yIG1vcmUgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5ydW5f
bG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2VvZigpCisgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZV9jb25uZWN0aW9uX3Rhc2sp
CisKKyAgICBkZWYgc2VudF9mcmFtZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWFk
IGFsbCBmcmFtZXMgc2VudCB0byB0aGUgdHJhbnNwb3J0LgorCisgICAgICAgICIiIgorICAgICAg
ICBzdHJlYW0gPSBhc3luY2lvLlN0cmVhbVJlYWRlcihsb29wPXNlbGYubG9vcCkKKworICAgICAg
ICBmb3IgKGRhdGEsKSwga3cgaW4gc2VsZi50cmFuc3BvcnQud3JpdGUuY2FsbF9hcmdzX2xpc3Q6
CisgICAgICAgICAgICBzdHJlYW0uZmVlZF9kYXRhKGRhdGEpCisgICAgICAgIHNlbGYudHJhbnNw
b3J0LndyaXRlLmNhbGxfYXJnc19saXN0ID0gW10KKyAgICAgICAgc3RyZWFtLmZlZWRfZW9mKCkK
KworICAgICAgICBmcmFtZXMgPSBbXQorICAgICAgICB3aGlsZSBub3Qgc3RyZWFtLmF0X2VvZigp
OgorICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgICAgICAgICBGcmFtZS5yZWFkKHN0cmVh
bS5yZWFkZXhhY3RseSwgbWFzaz1zZWxmLnByb3RvY29sLmlzX2NsaWVudCkKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBmcmFtZXMKKworICAgIGRlZiBs
YXN0X3NlbnRfZnJhbWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWFkIHRoZSBsYXN0
IGZyYW1lIHNlbnQgdG8gdGhlIHRyYW5zcG9ydC4KKworICAgICAgICBUaGlzIG1ldGhvZCBhc3N1
bWVzIHRoYXQgYXQgbW9zdCBvbmUgZnJhbWUgd2FzIHNlbnQuIEl0IHJhaXNlcyBhbgorICAgICAg
ICBBc3NlcnRpb25FcnJvciBvdGhlcndpc2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZyYW1l
cyA9IHNlbGYuc2VudF9mcmFtZXMoKQorICAgICAgICBpZiBmcmFtZXM6CisgICAgICAgICAgICBh
c3NlcnQgbGVuKGZyYW1lcykgPT0gMQorICAgICAgICAgICAgcmV0dXJuIGZyYW1lc1swXQorCisg
ICAgZGVmIGFzc2VydEZyYW1lc1NlbnQoc2VsZiwgKmZyYW1lcyk6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5zZW50X2ZyYW1lcygpLCBbRnJhbWUoKmFyZ3MpIGZvciBhcmdzIGluIGZy
YW1lc10pCisKKyAgICBkZWYgYXNzZXJ0T25lRnJhbWVTZW50KHNlbGYsICphcmdzKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxhc3Rfc2VudF9mcmFtZSgpLCBGcmFtZSgqYXJncykp
CisKKyAgICBkZWYgYXNzZXJ0Tm9GcmFtZVNlbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
SXNOb25lKHNlbGYubGFzdF9zZW50X2ZyYW1lKCkpCisKKyAgICBkZWYgYXNzZXJ0Q29ubmVjdGlv
bkNsb3NlZChzZWxmLCBjb2RlLCBtZXNzYWdlKToKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGxp
bmUgZ3VhcmFudGVlcyB0aGF0IGNvbm5lY3Rpb25fbG9zdCB3YXMgY2FsbGVkLgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wuc3RhdGUsIFN0YXRlLkNMT1NFRCkKKyAgICAg
ICAgIyBBIGNsb3NlIGZyYW1lIHdhcyByZWNlaXZlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLnByb3RvY29sLmNsb3NlX2NvZGUsIGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5wcm90b2NvbC5jbG9zZV9yZWFzb24sIG1lc3NhZ2UpCisKKyAgICBkZWYgYXNzZXJ0
Q29ubmVjdGlvbkZhaWxlZChzZWxmLCBjb2RlLCBtZXNzYWdlKToKKyAgICAgICAgIyBUaGUgZm9s
bG93aW5nIGxpbmUgZ3VhcmFudGVlcyB0aGF0IGNvbm5lY3Rpb25fbG9zdCB3YXMgY2FsbGVkLgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wuc3RhdGUsIFN0YXRlLkNMT1NF
RCkKKyAgICAgICAgIyBObyBjbG9zZSBmcmFtZSB3YXMgcmVjZWl2ZWQuCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5wcm90b2NvbC5jbG9zZV9jb2RlLCAxMDA2KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wuY2xvc2VfcmVhc29uLCAiIikKKyAgICAgICAgIyBB
IGNsb3NlIGZyYW1lIHdhcyBzZW50IC0tIHVubGVzcyB0aGUgY29ubmVjdGlvbiB3YXMgYWxyZWFk
eSBsb3N0LgorICAgICAgICBpZiBjb2RlID09IDEwMDY6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dE5vRnJhbWVTZW50KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0T25l
RnJhbWVTZW50KFRydWUsIE9QX0NMT1NFLCBzZXJpYWxpemVfY2xvc2UoY29kZSwgbWVzc2FnZSkp
CisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhc3NlcnRDb21wbGV0
ZXNXaXRoaW4oc2VsZiwgbWluX3RpbWUsIG1heF90aW1lKToKKyAgICAgICAgdDAgPSBzZWxmLmxv
b3AudGltZSgpCisgICAgICAgIHlpZWxkCisgICAgICAgIHQxID0gc2VsZi5sb29wLnRpbWUoKQor
ICAgICAgICBkdCA9IHQxIC0gdDAKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQs
IG1pbl90aW1lLCBmIlRvbyBmYXN0OiB7ZHR9IDwge21pbl90aW1lfSIpCisgICAgICAgIHNlbGYu
YXNzZXJ0TGVzcyhkdCwgbWF4X3RpbWUsIGYiVG9vIHNsb3c6IHtkdH0gPj0ge21heF90aW1lfSIp
CisKKyAgICAjIFRlc3QgY29uc3RydWN0b3IuCisKKyAgICBkZWYgdGVzdF90aW1lb3V0X2JhY2t3
YXJkc19jb21wYXRpYmlsaXR5KHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dh
cm5pbmdzKHJlY29yZD1UcnVlKSBhcyByZWNvcmRlZF93YXJuaW5nczoKKyAgICAgICAgICAgIHBy
b3RvY29sID0gV2ViU29ja2V0Q29tbW9uUHJvdG9jb2wodGltZW91dD01KQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocHJvdG9jb2wuY2xvc2VfdGltZW91dCwgNSkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihyZWNvcmRlZF93YXJuaW5ncyksIDEpCisgICAgICAgIHdhcm5pbmcg
PSByZWNvcmRlZF93YXJuaW5nc1swXS5tZXNzYWdlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKHdhcm5pbmcpLCAicmVuYW1lIHRpbWVvdXQgdG8gY2xvc2VfdGltZW91dCIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh3YXJuaW5nKSwgRGVwcmVjYXRpb25XYXJuaW5nKQorCisg
ICAgIyBUZXN0IHB1YmxpYyBhdHRyaWJ1dGVzLgorCisgICAgZGVmIHRlc3RfbG9jYWxfYWRkcmVz
cyhzZWxmKToKKyAgICAgICAgZ2V0X2V4dHJhX2luZm8gPSB1bml0dGVzdC5tb2NrLk1vY2socmV0
dXJuX3ZhbHVlPSgiaG9zdCIsIDQzMTIpKQorICAgICAgICBzZWxmLnRyYW5zcG9ydC5nZXRfZXh0
cmFfaW5mbyA9IGdldF9leHRyYV9pbmZvCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LnByb3RvY29sLmxvY2FsX2FkZHJlc3MsICgiaG9zdCIsIDQzMTIpKQorICAgICAgICBnZXRfZXh0
cmFfaW5mby5hc3NlcnRfY2FsbGVkX3dpdGgoInNvY2tuYW1lIikKKworICAgIGRlZiB0ZXN0X2xv
Y2FsX2FkZHJlc3NfYmVmb3JlX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgICMgRW11bGF0ZSB0
aGUgc2l0dWF0aW9uIGJlZm9yZSBjb25uZWN0aW9uX29wZW4oKSBydW5zLgorICAgICAgICBfdHJh
bnNwb3J0ID0gc2VsZi5wcm90b2NvbC50cmFuc3BvcnQKKyAgICAgICAgZGVsIHNlbGYucHJvdG9j
b2wudHJhbnNwb3J0CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5wcm90b2NvbC5sb2NhbF9hZGRyZXNzLCBOb25lKQorICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgc2VsZi5wcm90b2NvbC50cmFuc3BvcnQgPSBfdHJhbnNwb3J0CisKKyAgICBkZWYg
dGVzdF9yZW1vdGVfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgZ2V0X2V4dHJhX2luZm8gPSB1bml0
dGVzdC5tb2NrLk1vY2socmV0dXJuX3ZhbHVlPSgiaG9zdCIsIDQzMTIpKQorICAgICAgICBzZWxm
LnRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbyA9IGdldF9leHRyYV9pbmZvCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29sLnJlbW90ZV9hZGRyZXNzLCAoImhvc3QiLCA0MzEy
KSkKKyAgICAgICAgZ2V0X2V4dHJhX2luZm8uYXNzZXJ0X2NhbGxlZF93aXRoKCJwZWVybmFtZSIp
CisKKyAgICBkZWYgdGVzdF9yZW1vdGVfYWRkcmVzc19iZWZvcmVfY29ubmVjdGlvbihzZWxmKToK
KyAgICAgICAgIyBFbXVsYXRlIHRoZSBzaXR1YXRpb24gYmVmb3JlIGNvbm5lY3Rpb25fb3Blbigp
IHJ1bnMuCisgICAgICAgIF90cmFuc3BvcnQgPSBzZWxmLnByb3RvY29sLnRyYW5zcG9ydAorICAg
ICAgICBkZWwgc2VsZi5wcm90b2NvbC50cmFuc3BvcnQKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb3RvY29sLnJlbW90ZV9hZGRyZXNzLCBOb25lKQor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC50cmFuc3BvcnQgPSBf
dHJhbnNwb3J0CisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoc2VsZi5wcm90b2NvbC5vcGVuKQorICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24o
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucHJvdG9jb2wub3BlbikKKworICAgIGRl
ZiB0ZXN0X2Nsb3NlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnByb3Rv
Y29sLmNsb3NlZCkKKyAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHNlbGYucHJvdG9jb2wuY2xvc2VkKQorCisgICAgZGVmIHRlc3Rfd2FpdF9j
bG9zZWQoc2VsZik6CisgICAgICAgIHdhaXRfY2xvc2VkID0gc2VsZi5sb29wLmNyZWF0ZV90YXNr
KHNlbGYucHJvdG9jb2wud2FpdF9jbG9zZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3
YWl0X2Nsb3NlZC5kb25lKCkpCisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbigpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YWl0X2Nsb3NlZC5kb25lKCkpCisKKyAgICAjIFRlc3QgdGhl
IHJlY3YgY29yb3V0aW5lLgorCisgICAgZGVmIHRlc3RfcmVjdl90ZXh0KHNlbGYpOgorICAgICAg
ICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUo
InV0Zi04IikpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShz
ZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiY2Fm
w6kiKQorCisgICAgZGVmIHRlc3RfcmVjdl9iaW5hcnkoc2VsZik6CisgICAgICAgIHNlbGYucmVj
ZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9CSU5BUlksIGIidGVhIikpCisgICAgICAgIGRhdGEg
PSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIidGVhIikKKworICAgIGRlZiB0ZXN0X3JlY3Zf
b25fY2xvc2luZ19jb25uZWN0aW9uX2xvY2FsKHNlbGYpOgorICAgICAgICBjbG9zZV90YXNrID0g
c2VsZi5oYWxmX2Nsb3NlX2Nvbm5lY3Rpb25fbG9jYWwoKQorCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQorCisgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoY2xvc2VfdGFzaykgICMgY2xlYW51cAorCisgICAgZGVmIHRl
c3RfcmVjdl9vbl9jbG9zaW5nX2Nvbm5lY3Rpb25fcmVtb3RlKHNlbGYpOgorICAgICAgICBzZWxm
LmhhbGZfY2xvc2VfY29ubmVjdGlvbl9yZW1vdGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQorCisgICAgZGVmIHRlc3RfcmVjdl9v
bl9jbG9zZWRfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9u
KCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgor
ICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJl
Y3YoKSkKKworICAgIGRlZiB0ZXN0X3JlY3ZfcHJvdG9jb2xfZXJyb3Ioc2VsZik6CisgICAgICAg
IHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCAiY2Fmw6kiLmVuY29kZSgi
dXRmLTgiKSkpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbnZhbGlkX2ZyYW1lcygpCisgICAgICAg
IHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkZhaWxlZCgxMDAyLCAiIikKKworICAgIGRlZiB0ZXN0X3Jl
Y3ZfdW5pY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1l
KFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJsYXRpbi0xIikpKQorICAgICAgICBzZWxm
LnByb2Nlc3NfaW52YWxpZF9mcmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25G
YWlsZWQoMTAwNywgIiIpCisKKyAgICBkZWYgdGVzdF9yZWN2X3RleHRfcGF5bG9hZF90b29fYmln
KHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLm1heF9zaXplID0gMTAyNAorICAgICAgICBz
ZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0
Zi04IikgKiAyMDUpKQorICAgICAgICBzZWxmLnByb2Nlc3NfaW52YWxpZF9mcmFtZXMoKQorICAg
ICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25GYWlsZWQoMTAwOSwgIiIpCisKKyAgICBkZWYgdGVz
dF9yZWN2X2JpbmFyeV9wYXlsb2FkX3Rvb19iaWcoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9j
b2wubWF4X3NpemUgPSAxMDI0CisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVl
LCBPUF9CSU5BUlksIGIidGVhIiAqIDM0MikpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbnZhbGlk
X2ZyYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkZhaWxlZCgxMDA5LCAiIikK
KworICAgIGRlZiB0ZXN0X3JlY3ZfdGV4dF9ub19tYXhfc2l6ZShzZWxmKToKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5tYXhfc2l6ZSA9IE5vbmUgICMgZm9yIHRlc3QgY292ZXJhZ2UKKyAgICAgICAg
c2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1
dGYtOCIpICogMjA1KSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwg
ImNhZsOpIiAqIDIwNSkKKworICAgIGRlZiB0ZXN0X3JlY3ZfYmluYXJ5X25vX21heF9zaXplKHNl
bGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLm1heF9zaXplID0gTm9uZSAgIyBmb3IgdGVzdCBj
b3ZlcmFnZQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQklOQVJZ
LCBiInRlYSIgKiAzNDIpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRh
LCBiInRlYSIgKiAzNDIpCisKKyAgICBkZWYgdGVzdF9yZWN2X3F1ZXVlX2VtcHR5KHNlbGYpOgor
ICAgICAgICByZWN2ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYucHJvdG9jb2wucmVjdigp
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uVGltZW91dEVycm9yKToK
KyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICAg
ICAgYXN5bmNpby53YWl0X2Zvcihhc3luY2lvLnNoaWVsZChyZWN2KSwgdGltZW91dD1NUykKKyAg
ICAgICAgICAgICkKKworICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1Bf
VEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShyZWN2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEs
ICJjYWbDqSIpCisKKyAgICBkZWYgdGVzdF9yZWN2X3F1ZXVlX2Z1bGwoc2VsZik6CisgICAgICAg
IHNlbGYucHJvdG9jb2wubWF4X3F1ZXVlID0gMgorICAgICAgICAjIFRlc3QgaW50ZXJuYWxzIGJl
Y2F1c2UgaXQncyBoYXJkIHRvIHZlcmlmeSBidWZmZXJzIGZyb20gdGhlIG91dHNpZGUuCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLnByb3RvY29sLm1lc3NhZ2VzKSwgW10pCisK
KyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1RFWFQsICJjYWbDqSIu
ZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbImNhZsOpIl0p
CisKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX0JJTkFSWSwgYiJ0
ZWEiKSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbImNhZsOpIiwgYiJ0ZWEiXSkKKwor
ICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQklOQVJZLCBiIm1pbGsi
KSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbImNhZsOpIiwgYiJ0ZWEiXSkKKworICAg
ICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQor
ICAgICAgICBzZWxmLnJ1bl9sb29wX29uY2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc2VsZi5wcm90b2NvbC5tZXNzYWdlcyksIFtiInRlYSIsIGIibWlsayJdKQorCisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAg
ICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChz
ZWxmLnByb3RvY29sLm1lc3NhZ2VzKSwgW2IibWlsayJdKQorCisgICAgICAgIHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgIHNlbGYucnVu
X2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLnByb3RvY29s
Lm1lc3NhZ2VzKSwgW10pCisKKyAgICBkZWYgdGVzdF9yZWN2X3F1ZXVlX25vX2xpbWl0KHNlbGYp
OgorICAgICAgICBzZWxmLnByb3RvY29sLm1heF9xdWV1ZSA9IE5vbmUKKworICAgICAgICBmb3Ig
XyBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRy
dWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgICAgIHNlbGYu
cnVuX2xvb3Bfb25jZSgpCisKKyAgICAgICAgIyBJbmNvbWluZyBtZXNzYWdlIHF1ZXVlIGNhbiBj
b250YWluIGF0IGxlYXN0IDEwMCBtZXNzYWdlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbImNhZsOpIl0gKiAxMDApCisKKyAgICAgICAg
Zm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHNlbGYucHJvdG9jb2wubWVzc2FnZXMpLCBbXSkKKworICAgIGRlZiB0ZXN0X3JlY3Zfb3Ro
ZXJfZXJyb3Ioc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiByZWFkX21lc3NhZ2UoKToKKyAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQk9PTSIpCisKKyAgICAgICAgc2VsZi5wcm90b2NvbC5y
ZWFkX21lc3NhZ2UgPSByZWFkX21lc3NhZ2UKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ludmFsaWRf
ZnJhbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uRmFpbGVkKDEwMTEsICIiKQor
CisgICAgZGVmIHRlc3RfcmVjdl9jYW5jZWxlZChzZWxmKToKKyAgICAgICAgcmVjdiA9IHNlbGYu
bG9vcC5jcmVhdGVfdGFzayhzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5sb29w
LmNhbGxfc29vbihyZWN2LmNhbmNlbCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShyZWN2KQorCisgICAgICAgICMgVGhlIG5leHQgZnJhbWUgZG9lc24ndCBkaXNh
cHBlYXIgaW4gYSB2YWN1dW0gKGl0IHVzZWQgdG8pLgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJh
bWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikpKQorICAgICAg
ICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3Yo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiY2Fmw6kiKQorCisgICAgZGVmIHRl
c3RfcmVjdl9jYW5jZWxlZF9yYWNlX2NvbmRpdGlvbihzZWxmKToKKyAgICAgICAgcmVjdiA9IHNl
bGYubG9vcC5jcmVhdGVfdGFzaygKKyAgICAgICAgICAgIGFzeW5jaW8ud2FpdF9mb3Ioc2VsZi5w
cm90b2NvbC5yZWN2KCksIHRpbWVvdXQ9MC4wMDBfMDAxKQorICAgICAgICApCisgICAgICAgIHNl
bGYubG9vcC5jYWxsX3Nvb24oCisgICAgICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUsIEZyYW1l
KFRydWUsIE9QX1RFWFQsICJjYWbDqSIuZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICApCisKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLlRpbWVvdXRFcnJvcik6CisgICAg
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJlY3YpCisKKyAgICAgICAgIyBU
aGUgcHJldmlvdXMgZnJhbWUgZG9lc24ndCBkaXNhcHBlYXIgaW4gYSB2YWN1dW0gKGl0IHVzZWQg
dG8pLgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgInRl
YSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgICMgSWYgd2UncmUgZ2V0dGlu
ZyAidGVhIiB0aGVyZSwgaXQgbWVhbnMgImNhZsOpIiB3YXMgc3dhbGxvd2VkIChoYSwgaGEpLgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJjYWbDqSIpCisKKyAgICBkZWYgdGVzdF9y
ZWN2X3doZW5fdHJhbnNmZXJfZGF0YV9jYW5jZWxsZWQoc2VsZik6CisgICAgICAgICMgQ2xvZyBp
bmNvbWluZyBxdWV1ZS4KKyAgICAgICAgc2VsZi5wcm90b2NvbC5tYXhfcXVldWUgPSAxCisgICAg
ICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9URVhULCAiY2Fmw6kiLmVuY29k
ZSgidXRmLTgiKSkpCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9C
SU5BUlksIGIidGVhIikpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisKKyAgICAgICAg
IyBGbG93IGNvbnRyb2wga2lja3MgaW4gKGNoZWNrIHdpdGggYW4gaW1wbGVtZW50YXRpb24gZGV0
YWlsKS4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnByb3RvY29sLl9wdXRfbWVzc2Fn
ZV93YWl0ZXIuZG9uZSgpKQorCisgICAgICAgICMgU2NoZWR1bGUgcmVjdigpLgorICAgICAgICBy
ZWN2ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHNlbGYucHJvdG9jb2wucmVjdigpKQorCisgICAg
ICAgICMgQ2FuY2VsIHRyYW5zZmVyX2RhdGFfdGFzayAoYWdhaW4sIGltcGxlbWVudGF0aW9uIGRl
dGFpbCkuCisgICAgICAgIHNlbGYucHJvdG9jb2wuZmFpbF9jb25uZWN0aW9uKCkKKyAgICAgICAg
c2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucHJvdG9j
b2wudHJhbnNmZXJfZGF0YV90YXNrLmNhbmNlbGxlZCgpKQorCisgICAgICAgICMgcmVjdigpIGNv
bXBsZXRlcyBwcm9wZXJseS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHJlY3YpLCAiY2Fmw6kiKQorCisgICAgZGVmIHRlc3RfcmVjdl9wcmV2
ZW50c19jb25jdXJyZW50X2NhbGxzKHNlbGYpOgorICAgICAgICByZWN2ID0gc2VsZi5sb29wLmNy
ZWF0ZV90YXNrKHNlbGYucHJvdG9jb2wucmVjdigpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJj
YW5ub3QgY2FsbCByZWN2IHdoaWxlIGFub3RoZXIgY29yb3V0aW5lICIKKyAgICAgICAgICAgICJp
cyBhbHJlYWR5IHdhaXRpbmcgZm9yIHRoZSBuZXh0IG1lc3NhZ2UiLAorICAgICAgICApOgorICAg
ICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3Yo
KSkKKworICAgICAgICByZWN2LmNhbmNlbCgpCisKKyAgICAjIFRlc3QgdGhlIHNlbmQgY29yb3V0
aW5lLgorCisgICAgZGVmIHRlc3Rfc2VuZF90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZCgiY2Fmw6kiKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0
Zi04IikpCisKKyAgICBkZWYgdGVzdF9zZW5kX2JpbmFyeShzZWxmKToKKyAgICAgICAgc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnNlbmQoYiJ0ZWEiKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIpCisKKyAg
ICBkZWYgdGVzdF9zZW5kX2JpbmFyeV9mcm9tX2J5dGVhcnJheShzZWxmKToKKyAgICAgICAgc2Vs
Zi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnNlbmQoYnl0ZWFycmF5KGIi
dGVhIikpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9CSU5BUlks
IGIidGVhIikKKworICAgIGRlZiB0ZXN0X3NlbmRfYmluYXJ5X2Zyb21fbWVtb3J5dmlldyhzZWxm
KToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnNl
bmQobWVtb3J5dmlldyhiInRlYSIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQo
VHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX2JpbmFyeV9mcm9t
X25vbl9jb250aWd1b3VzX21lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5kKG1lbW9yeXZpZXcoYiJ0dGVlYWEiKVs6
OjJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoVHJ1ZSwgT1BfQklOQVJZLCBi
InRlYSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5kKDQyKSkKKyAgICAgICAgc2VsZi5h
c3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9zZW5kX2l0ZXJhYmxlX3RleHQoc2Vs
Zik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5z
ZW5kKFsiY2EiLCAiZsOpIl0pKQorICAgICAgICBzZWxmLmFzc2VydEZyYW1lc1NlbnQoCisgICAg
ICAgICAgICAoRmFsc2UsIE9QX1RFWFQsICJjYSIuZW5jb2RlKCJ1dGYtOCIpKSwKKyAgICAgICAg
ICAgIChGYWxzZSwgT1BfQ09OVCwgImbDqSIuZW5jb2RlKCJ1dGYtOCIpKSwKKyAgICAgICAgICAg
IChUcnVlLCBPUF9DT05ULCAiIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9zZW5kX2l0ZXJhYmxlX2JpbmFyeShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1
bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnNlbmQoW2IidGUiLCBiImEiXSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQklOQVJZ
LCBiInRlIiksIChGYWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9DT05ULCBiIiIpCisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfaXRlcmFibGVfYmluYXJ5X2Zyb21fYnl0ZWFy
cmF5KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgc2VsZi5wcm90b2NvbC5zZW5kKFtieXRlYXJyYXkoYiJ0ZSIpLCBieXRlYXJyYXkoYiJh
IildKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAg
ICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChGYWxzZSwgT1BfQ09OVCwgYiJhIiksIChU
cnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfaXRlcmFi
bGVfYmluYXJ5X2Zyb21fbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZChbbWVtb3J5dmll
dyhiInRlIiksIG1lbW9yeXZpZXcoYiJhIildKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChG
YWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfaXRlcmFibGVfYmluYXJ5X2Zyb21fbm9uX2NvbnRpZ3VvdXNfbWVt
b3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAg
ICAgICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZChbbWVtb3J5dmlldyhiInR0ZWUiKVs6OjJdLCBt
ZW1vcnl2aWV3KGIiYWEiKVs6OjJdXSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEZy
YW1lc1NlbnQoCisgICAgICAgICAgICAoRmFsc2UsIE9QX0JJTkFSWSwgYiJ0ZSIpLCAoRmFsc2Us
IE9QX0NPTlQsIGIiYSIpLCAoVHJ1ZSwgT1BfQ09OVCwgYiIiKQorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9zZW5kX2VtcHR5X2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZChbXSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgZGVmIHRlc3Rfc2VuZF9pdGVyYWJsZV90eXBlX2Vycm9y
KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAg
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZChb
NDJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9z
ZW5kX2l0ZXJhYmxlX21peGVkX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5kKFsiY2Fmw6kiLCBiInRlYSJdKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGcmFtZXNTZW50KAorICAgICAgICAgICAgKEZhbHNlLCBPUF9URVhULCAiY2Fm
w6kiLmVuY29kZSgidXRmLTgiKSksCisgICAgICAgICAgICAoVHJ1ZSwgT1BfQ0xPU0UsIHNlcmlh
bGl6ZV9jbG9zZSgxMDExLCAiIikpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zZW5kX2l0
ZXJhYmxlX3ByZXZlbnRzX2NvbmN1cnJlbnRfc2VuZChzZWxmKToKKyAgICAgICAgc2VsZi5tYWtl
X2RyYWluX3Nsb3coMiAqIE1TKQorCisgICAgICAgIGFzeW5jIGRlZiBzZW5kX2l0ZXJhYmxlKCk6
CisgICAgICAgICAgICBhd2FpdCBzZWxmLnByb3RvY29sLnNlbmQoWyJjYSIsICJmw6kiXSkKKwor
ICAgICAgICBhc3luYyBkZWYgc2VuZF9jb25jdXJyZW50KCk6CisgICAgICAgICAgICBhd2FpdCBh
c3luY2lvLnNsZWVwKE1TKQorICAgICAgICAgICAgYXdhaXQgc2VsZi5wcm90b2NvbC5zZW5kKGIi
dGVhIikKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uZ2F0
aGVyKHNlbmRfaXRlcmFibGUoKSwgc2VuZF9jb25jdXJyZW50KCkpKQorICAgICAgICBzZWxmLmFz
c2VydEZyYW1lc1NlbnQoCisgICAgICAgICAgICAoRmFsc2UsIE9QX1RFWFQsICJjYSIuZW5jb2Rl
KCJ1dGYtOCIpKSwKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQ09OVCwgImbDqSIuZW5jb2RlKCJ1
dGYtOCIpKSwKKyAgICAgICAgICAgIChUcnVlLCBPUF9DT05ULCAiIi5lbmNvZGUoInV0Zi04Iikp
LAorICAgICAgICAgICAgKFRydWUsIE9QX0JJTkFSWSwgYiJ0ZWEiKSwKKyAgICAgICAgKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9hc3luY19pdGVyYWJsZV90ZXh0KHNlbGYpOgorICAgICAgICBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZChhc3luY19pdGVyYWJs
ZShbImNhIiwgImbDqSJdKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAg
ICAgICAgIChGYWxzZSwgT1BfVEVYVCwgImNhIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAg
ICAgKEZhbHNlLCBPUF9DT05ULCAiZsOpIi5lbmNvZGUoInV0Zi04IikpLAorICAgICAgICAgICAg
KFRydWUsIE9QX0NPTlQsICIiLmVuY29kZSgidXRmLTgiKSksCisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3NlbmRfYXN5bmNfaXRlcmFibGVfYmluYXJ5KHNlbGYpOgorICAgICAgICBzZWxmLmxv
b3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZChhc3luY19pdGVyYWJsZShb
YiJ0ZSIsIGIiYSJdKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVzU2VudCgKKyAgICAgICAg
ICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChGYWxzZSwgT1BfQ09OVCwgYiJhIiksIChU
cnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRfYXN5bmNf
aXRlcmFibGVfYmluYXJ5X2Zyb21fYnl0ZWFycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kKGFzeW5j
X2l0ZXJhYmxlKFtieXRlYXJyYXkoYiJ0ZSIpLCBieXRlYXJyYXkoYiJhIildKSkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEZyYW1lc1NlbnQoCisgICAgICAgICAgICAoRmFsc2UsIE9Q
X0JJTkFSWSwgYiJ0ZSIpLCAoRmFsc2UsIE9QX0NPTlQsIGIiYSIpLCAoVHJ1ZSwgT1BfQ09OVCwg
YiIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zZW5kX2FzeW5jX2l0ZXJhYmxlX2JpbmFy
eV9mcm9tX21lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoCisgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlbmQoYXN5bmNfaXRlcmFibGUoW21l
bW9yeXZpZXcoYiJ0ZSIpLCBtZW1vcnl2aWV3KGIiYSIpXSkpCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRGcmFtZXNTZW50KAorICAgICAgICAgICAgKEZhbHNlLCBPUF9CSU5BUlksIGIi
dGUiKSwgKEZhbHNlLCBPUF9DT05ULCBiImEiKSwgKFRydWUsIE9QX0NPTlQsIGIiIikKKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hc3luY19pdGVyYWJsZV9iaW5hcnlfZnJvbV9ub25f
Y29udGlndW91c19tZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKAorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kKAorICAgICAgICAgICAg
ICAgIGFzeW5jX2l0ZXJhYmxlKFttZW1vcnl2aWV3KGIidHRlZSIpWzo6Ml0sIG1lbW9yeXZpZXco
YiJhYSIpWzo6Ml1dKQorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfQklOQVJZLCBiInRlIiksIChG
YWxzZSwgT1BfQ09OVCwgYiJhIiksIChUcnVlLCBPUF9DT05ULCBiIiIpCisgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfZW1wdHlfYXN5bmNfaXRlcmFibGUoc2VsZik6CisgICAgICAgIHNl
bGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5zZW5kKGFzeW5jX2l0ZXJh
YmxlKFtdKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9hc3luY19pdGVyYWJsZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3Vu
dGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZChhc3luY19pdGVyYWJsZShbNDJdKSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hc3lu
Y19pdGVyYWJsZV9taXhlZF90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKAorICAgICAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZChhc3luY19pdGVyYWJs
ZShbImNhZsOpIiwgYiJ0ZWEiXSkpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RnJhbWVzU2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfVEVYVCwgImNhZsOpIi5lbmNvZGUo
InV0Zi04IikpLAorICAgICAgICAgICAgKFRydWUsIE9QX0NMT1NFLCBzZXJpYWxpemVfY2xvc2Uo
MTAxMSwgIiIpKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hc3luY19pdGVyYWJs
ZV9wcmV2ZW50c19jb25jdXJyZW50X3NlbmQoc2VsZik6CisgICAgICAgIHNlbGYubWFrZV9kcmFp
bl9zbG93KDIgKiBNUykKKworICAgICAgICBhc3luYyBkZWYgc2VuZF9hc3luY19pdGVyYWJsZSgp
OgorICAgICAgICAgICAgYXdhaXQgc2VsZi5wcm90b2NvbC5zZW5kKGFzeW5jX2l0ZXJhYmxlKFsi
Y2EiLCAiZsOpIl0pKQorCisgICAgICAgIGFzeW5jIGRlZiBzZW5kX2NvbmN1cnJlbnQoKToKKyAg
ICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoTVMpCisgICAgICAgICAgICBhd2FpdCBzZWxm
LnByb3RvY29sLnNlbmQoYiJ0ZWEiKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoCisgICAgICAgICAgICBhc3luY2lvLmdhdGhlcihzZW5kX2FzeW5jX2l0ZXJhYmxlKCks
IHNlbmRfY29uY3VycmVudCgpKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RnJhbWVz
U2VudCgKKyAgICAgICAgICAgIChGYWxzZSwgT1BfVEVYVCwgImNhIi5lbmNvZGUoInV0Zi04Iikp
LAorICAgICAgICAgICAgKEZhbHNlLCBPUF9DT05ULCAiZsOpIi5lbmNvZGUoInV0Zi04IikpLAor
ICAgICAgICAgICAgKFRydWUsIE9QX0NPTlQsICIiLmVuY29kZSgidXRmLTgiKSksCisgICAgICAg
ICAgICAoVHJ1ZSwgT1BfQklOQVJZLCBiInRlYSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVz
dF9zZW5kX29uX2Nsb3NpbmdfY29ubmVjdGlvbl9sb2NhbChzZWxmKToKKyAgICAgICAgY2xvc2Vf
dGFzayA9IHNlbGYuaGFsZl9jbG9zZV9jb25uZWN0aW9uX2xvY2FsKCkKKworICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnNlbmQoImZvb2JhciIpKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoY2xvc2VfdGFzaykgICMgY2xlYW51cAorCisgICAgZGVmIHRlc3Rfc2Vu
ZF9vbl9jbG9zaW5nX2Nvbm5lY3Rpb25fcmVtb3RlKHNlbGYpOgorICAgICAgICBzZWxmLmhhbGZf
Y2xvc2VfY29ubmVjdGlvbl9yZW1vdGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZCgiZm9vYmFyIikpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9zZW5kX29uX2Nsb3NlZF9jb25uZWN0aW9u
KHNlbGYpOgorICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24oKQorCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBzZWxmLmxv
b3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuc2VuZCgiZm9vYmFyIikpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICAjIFRlc3QgdGhlIHBpbmcgY29y
b3V0aW5lLgorCisgICAgZGVmIHRlc3RfcGluZ19kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxm
Lmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucGluZygpKQorICAgICAgICAj
IFdpdGggb3VyIHRlc3RpbmcgdG9vbHMsIGl0J3MgbW9yZSBjb252ZW5pZW50IHRvIGV4dHJhY3Qg
dGhlIGV4cGVjdGVkCisgICAgICAgICMgcGluZyBkYXRhIGZyb20gdGhlIGxpYnJhcnkncyBpbnRl
cm5hbHMgdGhhbiBmcm9tIHRoZSBmcmFtZSBzZW50LgorICAgICAgICBwaW5nX2RhdGEgPSBuZXh0
KGl0ZXIoc2VsZi5wcm90b2NvbC5waW5ncykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5j
ZShwaW5nX2RhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaW5nX2Rh
dGEpLCA0KQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBw
aW5nX2RhdGEpCisKKyAgICBkZWYgdGVzdF9waW5nX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCJjYWbDqSIpKQorICAg
ICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCAiY2Fmw6kiLmVuY29k
ZSgidXRmLTgiKSkKKworICAgIGRlZiB0ZXN0X3BpbmdfYmluYXJ5KHNlbGYpOgorICAgICAgICBz
ZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucGluZyhiInRlYSIpKQor
ICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBiInRlYSIpCisK
KyAgICBkZWYgdGVzdF9waW5nX2JpbmFyeV9mcm9tX2J5dGVhcnJheShzZWxmKToKKyAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBpbmcoYnl0ZWFycmF5
KGIidGVhIikpKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5H
LCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9waW5nX2JpbmFyeV9mcm9tX21lbW9yeXZpZXcoc2Vs
Zik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5w
aW5nKG1lbW9yeXZpZXcoYiJ0ZWEiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50
KFRydWUsIE9QX1BJTkcsIGIidGVhIikKKworICAgIGRlZiB0ZXN0X3BpbmdfYmluYXJ5X2Zyb21f
bm9uX2NvbnRpZ3VvdXNfbWVtb3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBpbmcobWVtb3J5dmlldyhiInR0ZWVhYSIpWzo6
Ml0pKQorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBiInRl
YSIpCisKKyAgICBkZWYgdGVzdF9waW5nX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKDQyKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYgdGVzdF9waW5nX29uX2Nsb3NpbmdfY29ubmVjdGlv
bl9sb2NhbChzZWxmKToKKyAgICAgICAgY2xvc2VfdGFzayA9IHNlbGYuaGFsZl9jbG9zZV9jb25u
ZWN0aW9uX2xvY2FsKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rp
b25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LnByb3RvY29sLnBpbmcoKSkKKworICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKwor
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGNsb3NlX3Rhc2spICAjIGNsZWFu
dXAKKworICAgIGRlZiB0ZXN0X3Bpbmdfb25fY2xvc2luZ19jb25uZWN0aW9uX3JlbW90ZShzZWxm
KToKKyAgICAgICAgc2VsZi5oYWxmX2Nsb3NlX2Nvbm5lY3Rpb25fcmVtb3RlKCkKKworICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBpbmcoKSkKKworICAg
ICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKworICAgIGRlZiB0ZXN0X3Bpbmdfb25fY2xv
c2VkX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbigpCisK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAg
ICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICAjIFRlc3QgdGhlIHBv
bmcgY29yb3V0aW5lLgorCisgICAgZGVmIHRlc3RfcG9uZ19kZWZhdWx0KHNlbGYpOgorICAgICAg
ICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucG9uZygpKQorICAg
ICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCBiIiIpCisKKyAgICBk
ZWYgdGVzdF9wb25nX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5wcm90b2NvbC5wb25nKCJjYWbDqSIpKQorICAgICAgICBzZWxmLmFzc2VydE9u
ZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSkKKworICAg
IGRlZiB0ZXN0X3BvbmdfYmluYXJ5KHNlbGYpOgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGls
X2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucG9uZyhiInRlYSIpKQorICAgICAgICBzZWxmLmFzc2Vy
dE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCBiInRlYSIpCisKKyAgICBkZWYgdGVzdF9wb25n
X2JpbmFyeV9mcm9tX2J5dGVhcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBvbmcoYnl0ZWFycmF5KGIidGVhIikpKQorICAgICAg
ICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCBiInRlYSIpCisKKyAgICBk
ZWYgdGVzdF9wb25nX2JpbmFyeV9mcm9tX21lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYu
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5wb25nKG1lbW9yeXZpZXcoYiJ0
ZWEiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX1BPTkcsIGIi
dGVhIikKKworICAgIGRlZiB0ZXN0X3BvbmdfYmluYXJ5X2Zyb21fbm9uX2NvbnRpZ3VvdXNfbWVt
b3J5dmlldyhzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LnByb3RvY29sLnBvbmcobWVtb3J5dmlldyhiInR0ZWVhYSIpWzo6Ml0pKQorICAgICAgICBzZWxm
LmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCBiInRlYSIpCisKKyAgICBkZWYgdGVz
dF9wb25nX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2Vs
Zi5wcm90b2NvbC5wb25nKDQyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisK
KyAgICBkZWYgdGVzdF9wb25nX29uX2Nsb3NpbmdfY29ubmVjdGlvbl9sb2NhbChzZWxmKToKKyAg
ICAgICAgY2xvc2VfdGFzayA9IHNlbGYuaGFsZl9jbG9zZV9jb25uZWN0aW9uX2xvY2FsKCkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAg
ICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBvbmcoKSkK
KworICAgICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKworICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKGNsb3NlX3Rhc2spICAjIGNsZWFudXAKKworICAgIGRlZiB0ZXN0
X3Bvbmdfb25fY2xvc2luZ19jb25uZWN0aW9uX3JlbW90ZShzZWxmKToKKyAgICAgICAgc2VsZi5o
YWxmX2Nsb3NlX2Nvbm5lY3Rpb25fcmVtb3RlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRp
bF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnBvbmcoKSkKKworICAgICAgICBzZWxmLmFzc2VydE5v
RnJhbWVTZW50KCkKKworICAgIGRlZiB0ZXN0X3Bvbmdfb25fY2xvc2VkX2Nvbm5lY3Rpb24oc2Vs
Zik6CisgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbigpCisKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5y
dW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5wb25nKCkpCisKKyAgICAgICAgc2VsZi5h
c3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICAjIFRlc3QgdGhlIHByb3RvY29sJ3MgbG9naWMgZm9y
IGFja25vd2xlZGdpbmcgcGluZ3Mgd2l0aCBwb25ncy4KKworICAgIGRlZiB0ZXN0X2Fuc3dlcl9w
aW5nKHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfUElO
RywgYiJ0ZXN0IikpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYu
YXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX1BPTkcsIGIidGVzdCIpCisKKyAgICBkZWYgdGVz
dF9pZ25vcmVfcG9uZyhzZWxmKToKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRy
dWUsIE9QX1BPTkcsIGIidGVzdCIpKQorICAgICAgICBzZWxmLnJ1bl9sb29wX29uY2UoKQorICAg
ICAgICBzZWxmLmFzc2VydE5vRnJhbWVTZW50KCkKKworICAgIGRlZiB0ZXN0X2Fja25vd2xlZGdl
X3Bpbmcoc2VsZik6CisgICAgICAgIHBpbmcgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRl
KHNlbGYucHJvdG9jb2wucGluZygpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBpbmcuZG9u
ZSgpKQorICAgICAgICBwaW5nX2ZyYW1lID0gc2VsZi5sYXN0X3NlbnRfZnJhbWUoKQorICAgICAg
ICBwb25nX2ZyYW1lID0gRnJhbWUoVHJ1ZSwgT1BfUE9ORywgcGluZ19mcmFtZS5kYXRhKQorICAg
ICAgICBzZWxmLnJlY2VpdmVfZnJhbWUocG9uZ19mcmFtZSkKKyAgICAgICAgc2VsZi5ydW5fbG9v
cF9vbmNlKCkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBpbmcuZG9uZSgpKQorCisgICAgZGVmIHRlc3RfYWJvcnRfcGluZyhzZWxmKToKKyAg
ICAgICAgcGluZyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5w
aW5nKCkpCisgICAgICAgICMgUmVtb3ZlIHRoZSBmcmFtZSBmcm9tIHRoZSBidWZmZXIsIGVsc2Ug
Y2xvc2VfY29ubmVjdGlvbigpIGNvbXBsYWlucy4KKyAgICAgICAgc2VsZi5sYXN0X3NlbnRfZnJh
bWUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBpbmcuZG9uZSgpKQorICAgICAgICBzZWxm
LmNsb3NlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGluZy5kb25lKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwaW5nLmV4Y2VwdGlvbigpLCBDb25uZWN0
aW9uQ2xvc2VkKQorCisgICAgZGVmIHRlc3RfYWJvcnRfcGluZ19kb2VzX25vdF9sb2dfZXhjZXB0
aW9uX2lmX25vdF9yZXRyZWl2ZWQoc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCkpCisgICAgICAgICMgR2V0IHRoZSBpbnRlcm5h
bCBGdXR1cmUsIHdoaWNoIGlzbid0IGRpcmVjdGx5IHJldHVybmVkIGJ5IHBpbmcoKS4KKyAgICAg
ICAgKHBpbmcsKSA9IHNlbGYucHJvdG9jb2wucGluZ3MudmFsdWVzKCkKKyAgICAgICAgIyBSZW1v
dmUgdGhlIGZyYW1lIGZyb20gdGhlIGJ1ZmZlciwgZWxzZSBjbG9zZV9jb25uZWN0aW9uKCkgY29t
cGxhaW5zLgorICAgICAgICBzZWxmLmxhc3Rfc2VudF9mcmFtZSgpCisgICAgICAgIHNlbGYuY2xv
c2VfY29ubmVjdGlvbigpCisgICAgICAgICMgQ2hlY2sgYSBwcml2YXRlIGF0dHJpYnV0ZSwgZm9y
IGxhY2sgb2YgYSBiZXR0ZXIgc29sdXRpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGlu
Zy5fbG9nX3RyYWNlYmFjaykKKworICAgIGRlZiB0ZXN0X2Fja25vd2xlZGdlX3ByZXZpb3VzX3Bp
bmdzKHNlbGYpOgorICAgICAgICBwaW5ncyA9IFsKKyAgICAgICAgICAgIChzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucGluZygpKSwgc2VsZi5sYXN0X3NlbnRfZnJh
bWUoKSkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDMpCisgICAgICAgIF0KKyAgICAgICAg
IyBVbnNvbGljaXRlZCBwb25nIGRvZXNuJ3QgYWNrbm93bGVkZ2UgcGluZ3MKKyAgICAgICAgc2Vs
Zi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1BPTkcsIGIiIikpCisgICAgICAgIHNlbGYu
cnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocGluZ3NbMF1bMF0uZG9uZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHBpbmdzWzFdWzBdLmRvbmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwaW5nc1sy
XVswXS5kb25lKCkpCisgICAgICAgICMgUG9uZyBhY2tub3dsZWRnZXMgYWxsIHByZXZpb3VzIHBp
bmdzCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9QT05HLCBwaW5n
c1sxXVsxXS5kYXRhKSkKKyAgICAgICAgc2VsZi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2Vs
Zi5ydW5fbG9vcF9vbmNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBpbmdzWzBdWzBdLmRv
bmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBpbmdzWzFdWzBdLmRvbmUoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShwaW5nc1syXVswXS5kb25lKCkpCisKKyAgICBkZWYgdGVzdF9h
Y2tub3dsZWRnZV9hYm9ydGVkX3Bpbmcoc2VsZik6CisgICAgICAgIHBpbmcgPSBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucGluZygpKQorICAgICAgICBwaW5nX2Zy
YW1lID0gc2VsZi5sYXN0X3NlbnRfZnJhbWUoKQorICAgICAgICAjIENsb2cgaW5jb21pbmcgcXVl
dWUuIFRoaXMgbGV0cyBjb25uZWN0aW9uX2xvc3QoKSBhYm9ydCBwZW5kaW5nIHBpbmdzCisgICAg
ICAgICMgd2l0aCBhIENvbm5lY3Rpb25DbG9zZWQgZXhjZXB0aW9uIGJlZm9yZSB0cmFuc2Zlcl9k
YXRhX3Rhc2sKKyAgICAgICAgIyB0ZXJtaW5hdGVzIGFuZCBjbG9zZV9jb25uZWN0aW9uIGNhbmNl
bHMga2VlcGFsaXZlX3BpbmdfdGFzay4KKyAgICAgICAgc2VsZi5wcm90b2NvbC5tYXhfcXVldWUg
PSAxCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9URVhULCBiIjEi
KSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1RFWFQsIGIiMiIp
KQorICAgICAgICAjIEFkZCBwb25nIGZyYW1lIHRvIHRoZSBxdWV1ZS4KKyAgICAgICAgcG9uZ19m
cmFtZSA9IEZyYW1lKFRydWUsIE9QX1BPTkcsIHBpbmdfZnJhbWUuZGF0YSkKKyAgICAgICAgc2Vs
Zi5yZWNlaXZlX2ZyYW1lKHBvbmdfZnJhbWUpCisgICAgICAgICMgQ29ubmVjdGlvbiBkcm9wcy4K
KyAgICAgICAgc2VsZi5yZWNlaXZlX2VvZigpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC53YWl0X2Nsb3NlZCgpKQorICAgICAgICAjIFBpbmcgcmVj
ZWl2ZXMgYSBDb25uZWN0aW9uQ2xvc2VkIGV4Y2VwdGlvbi4KKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgIHBpbmcucmVzdWx0KCkK
KworICAgICAgICAjIHRyYW5zZmVyX2RhdGEgZG9lc24ndCBjcmFzaCwgd2hpY2ggd291bGQgYmUg
bG9nZ2VkLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Tm9Mb2dzKCk6CisgICAgICAgICAgICAj
IFVuY2xvZyBpbmNvbWluZyBxdWV1ZS4KKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgICAgICBzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKQorCisgICAgZGVmIHRlc3RfY2Fu
Y2VsZWRfcGluZyhzZWxmKToKKyAgICAgICAgcGluZyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5wcm90b2NvbC5waW5nKCkpCisgICAgICAgIHBpbmdfZnJhbWUgPSBzZWxmLmxh
c3Rfc2VudF9mcmFtZSgpCisgICAgICAgIHBpbmcuY2FuY2VsKCkKKyAgICAgICAgcG9uZ19mcmFt
ZSA9IEZyYW1lKFRydWUsIE9QX1BPTkcsIHBpbmdfZnJhbWUuZGF0YSkKKyAgICAgICAgc2VsZi5y
ZWNlaXZlX2ZyYW1lKHBvbmdfZnJhbWUpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisg
ICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwaW5n
LmNhbmNlbGxlZCgpKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX3Bpbmcoc2VsZik6CisgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5nKGIiZm9v
YmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX1BJTkcsIGIi
Zm9vYmFyIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAg
ICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5waW5n
KGIiZm9vYmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgIyBU
ZXN0IHRoZSBwcm90b2NvbCdzIGxvZ2ljIGZvciByZWJ1aWxkaW5nIGZyYWdtZW50ZWQgbWVzc2Fn
ZXMuCisKKyAgICBkZWYgdGVzdF9mcmFnbWVudGVkX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYu
cmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfVEVYVCwgImNhIi5lbmNvZGUoInV0Zi04Iikp
KQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQ09OVCwgImbDqSIu
ZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29t
cGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0
YSwgImNhZsOpIikKKworICAgIGRlZiB0ZXN0X2ZyYWdtZW50ZWRfYmluYXJ5KHNlbGYpOgorICAg
ICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoRmFsc2UsIE9QX0JJTkFSWSwgYiJ0IikpCisg
ICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfQ09OVCwgYiJlIikpCisg
ICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCBiImEiKSkKKyAg
ICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5y
ZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJ0ZWEiKQorCisgICAgZGVm
IHRlc3RfZnJhZ21lbnRlZF90ZXh0X3BheWxvYWRfdG9vX2JpZyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5tYXhfc2l6ZSA9IDEwMjQKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZy
YW1lKEZhbHNlLCBPUF9URVhULCAiY2Fmw6kiLmVuY29kZSgidXRmLTgiKSAqIDEwMCkpCisgICAg
ICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCAiY2Fmw6kiLmVuY29k
ZSgidXRmLTgiKSAqIDEwNSkpCisgICAgICAgIHNlbGYucHJvY2Vzc19pbnZhbGlkX2ZyYW1lcygp
CisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkZhaWxlZCgxMDA5LCAiIikKKworICAgIGRl
ZiB0ZXN0X2ZyYWdtZW50ZWRfYmluYXJ5X3BheWxvYWRfdG9vX2JpZyhzZWxmKToKKyAgICAgICAg
c2VsZi5wcm90b2NvbC5tYXhfc2l6ZSA9IDEwMjQKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1l
KEZyYW1lKEZhbHNlLCBPUF9CSU5BUlksIGIidGVhIiAqIDE3MSkpCisgICAgICAgIHNlbGYucmVj
ZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCBiInRlYSIgKiAxNzEpKQorICAgICAgICBz
ZWxmLnByb2Nlc3NfaW52YWxpZF9mcmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rp
b25GYWlsZWQoMTAwOSwgIiIpCisKKyAgICBkZWYgdGVzdF9mcmFnbWVudGVkX3RleHRfbm9fbWF4
X3NpemUoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wubWF4X3NpemUgPSBOb25lICAjIGZv
ciB0ZXN0IGNvdmVyYWdlCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwg
T1BfVEVYVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04IikgKiAxMDApKQorICAgICAgICBzZWxmLnJl
Y2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfQ09OVCwgImNhZsOpIi5lbmNvZGUoInV0Zi04Iikg
KiAxMDUpKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxm
LnByb3RvY29sLnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiY2Fmw6ki
ICogMjA1KQorCisgICAgZGVmIHRlc3RfZnJhZ21lbnRlZF9iaW5hcnlfbm9fbWF4X3NpemUoc2Vs
Zik6CisgICAgICAgIHNlbGYucHJvdG9jb2wubWF4X3NpemUgPSBOb25lICAjIGZvciB0ZXN0IGNv
dmVyYWdlCisgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfQklOQVJZ
LCBiInRlYSIgKiAxNzEpKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwg
T1BfQ09OVCwgYiJ0ZWEiICogMTcxKSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50
aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGF0YSwgYiJ0ZWEiICogMzQyKQorCisgICAgZGVmIHRlc3RfY29udHJvbF9mcmFtZV93aXRo
aW5fZnJhZ21lbnRlZF90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJh
bWUoRmFsc2UsIE9QX1RFWFQsICJjYSIuZW5jb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgc2VsZi5y
ZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1BJTkcsIGIiIikpCisgICAgICAgIHNlbGYucmVj
ZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DT05ULCAiZsOpIi5lbmNvZGUoInV0Zi04IikpKQor
ICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29s
LnJlY3YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiY2Fmw6kiKQorICAgICAg
ICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QT05HLCBiIiIpCisKKyAgICBkZWYg
dGVzdF91bnRlcm1pbmF0ZWRfZnJhZ21lbnRlZF90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLnJl
Y2VpdmVfZnJhbWUoRnJhbWUoRmFsc2UsIE9QX1RFWFQsICJjYSIuZW5jb2RlKCJ1dGYtOCIpKSkK
KyAgICAgICAgIyBNaXNzaW5nIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZnJhZ21lbnRlZCBmcmFt
ZS4KKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX0JJTkFSWSwgYiJ0
ZWEiKSkKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ludmFsaWRfZnJhbWVzKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRDb25uZWN0aW9uRmFpbGVkKDEwMDIsICIiKQorCisgICAgZGVmIHRlc3RfY2xvc2Vf
aGFuZHNoYWtlX2luX2ZyYWdtZW50ZWRfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5yZWNlaXZl
X2ZyYW1lKEZyYW1lKEZhbHNlLCBPUF9URVhULCAiY2EiLmVuY29kZSgidXRmLTgiKSkpCisgICAg
ICAgIHNlbGYucmVjZWl2ZV9mcmFtZShGcmFtZShUcnVlLCBPUF9DTE9TRSwgYiIiKSkKKyAgICAg
ICAgc2VsZi5wcm9jZXNzX2ludmFsaWRfZnJhbWVzKCkKKyAgICAgICAgIyBUaGUgUkZDIG1heSBo
YXZlIG92ZXJsb29rZWQgdGhpcyBjYXNlOiBpdCBzYXlzIHRoYXQgY29udHJvbCBmcmFtZXMKKyAg
ICAgICAgIyBjYW4gYmUgaW50ZXJqZWN0ZWQgaW4gdGhlIG1pZGRsZSBvZiBhIGZyYWdtZW50ZWQg
bWVzc2FnZSBhbmQgdGhhdCBhCisgICAgICAgICMgY2xvc2UgZnJhbWUgbXVzdCBiZSBlY2hvZWQu
IEV2ZW4gdGhvdWdoIHRoZXJlJ3MgYW4gdW50ZXJtaW5hdGVkCisgICAgICAgICMgbWVzc2FnZSwg
dGVjaG5pY2FsbHksIHRoZSBjbG9zaW5nIGhhbmRzaGFrZSB3YXMgc3VjY2Vzc2Z1bC4KKyAgICAg
ICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEwMDUsICIiKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdGlvbl9jbG9zZV9pbl9mcmFnbWVudGVkX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYu
cmVjZWl2ZV9mcmFtZShGcmFtZShGYWxzZSwgT1BfVEVYVCwgImNhIi5lbmNvZGUoInV0Zi04Iikp
KQorICAgICAgICBzZWxmLnByb2Nlc3NfaW52YWxpZF9mcmFtZXMoKQorICAgICAgICBzZWxmLmFz
c2VydENvbm5lY3Rpb25GYWlsZWQoMTAwNiwgIiIpCisKKyAgICAjIFRlc3QgbWlzY2VsbGFuZW91
cyBjb2RlIHBhdGhzIHRvIGVuc3VyZSBmdWxsIGNvdmVyYWdlLgorCisgICAgZGVmIHRlc3RfY29u
bmVjdGlvbl9sb3N0KHNlbGYpOgorICAgICAgICAjIFRlc3QgY2FsbGluZyBjb25uZWN0aW9uX2xv
c3Qgd2l0aG91dCBnb2luZyB0aHJvdWdoIGNsb3NlX2Nvbm5lY3Rpb24uCisgICAgICAgIHNlbGYu
cHJvdG9jb2wuY29ubmVjdGlvbl9sb3N0KE5vbmUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRDb25u
ZWN0aW9uRmFpbGVkKDEwMDYsICIiKQorCisgICAgZGVmIHRlc3RfZW5zdXJlX29wZW5fYmVmb3Jl
X29wZW5pbmdfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICAjIFNpbXVsYXRlIGEgYnVnIGJ5IGZv
cmNpYmx5IHJldmVydGluZyB0aGUgcHJvdG9jb2wgc3RhdGUuCisgICAgICAgIHNlbGYucHJvdG9j
b2wuc3RhdGUgPSBTdGF0ZS5DT05ORUNUSU5HCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhJbnZhbGlkU3RhdGUpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShzZWxmLnByb3RvY29sLmVuc3VyZV9vcGVuKCkpCisKKyAgICBkZWYgdGVzdF9lbnN1cmVf
b3Blbl9kdXJpbmdfdW5jbGVhbl9jbG9zZShzZWxmKToKKyAgICAgICAgIyBQcm9jZXNzIGNvbm5l
Y3Rpb25fbWFkZSBpbiBvcmRlciB0byBzdGFydCB0cmFuc2Zlcl9kYXRhX3Rhc2suCisgICAgICAg
IHNlbGYucnVuX2xvb3Bfb25jZSgpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIHRlc3QgdGVybWlu
YXRlcyBxdWlja2x5LgorICAgICAgICBzZWxmLmxvb3AuY2FsbF9sYXRlcihNUywgc2VsZi5yZWNl
aXZlX2VvZl9pZl9jbGllbnQpCisKKyAgICAgICAgIyBTaW11bGF0ZSB0aGUgY2FzZSB3aGVuIGNs
b3NlKCkgdGltZXMgb3V0IHNlbmRpbmcgYSBjbG9zZSBmcmFtZS4KKyAgICAgICAgc2VsZi5wcm90
b2NvbC5mYWlsX2Nvbm5lY3Rpb24oKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYucHJvdG9jb2wuZW5zdXJlX29wZW4oKSkKKworICAgIGRlZiB0ZXN0X2xlZ2FjeV9y
ZWN2KHNlbGYpOgorICAgICAgICAjIEJ5IGRlZmF1bHQgbGVnYWN5X3JlY3YgaW4gZGlzYWJsZWQu
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm90b2NvbC5sZWdhY3lfcmVjdiwgRmFs
c2UpCisKKyAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uKCkKKworICAgICAgICAjIEVuYWJs
ZSBsZWdhY3lfcmVjdi4KKyAgICAgICAgc2VsZi5wcm90b2NvbC5sZWdhY3lfcmVjdiA9IFRydWUK
KworICAgICAgICAjIE5vdyByZWN2KCkgcmV0dXJucyBOb25lIGluc3RlYWQgb2YgcmFpc2luZyBD
b25uZWN0aW9uQ2xvc2VkLgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmxvb3AucnVu
X3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wucmVjdigpKSkKKworICAgIGRlZiB0ZXN0X2Nv
bm5lY3Rpb25fY2xvc2VkX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuY2xvc2VfY29u
bmVjdGlvbigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xv
c2VkKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0
ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKworICAgICAgICBjb25uZWN0aW9uX2Nsb3NlZF9leGMg
PSBjb250ZXh0LmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm5lY3Rpb25f
Y2xvc2VkX2V4Yy5jb2RlLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm5lY3Rp
b25fY2xvc2VkX2V4Yy5yZWFzb24sICJjbG9zZSIpCisKKyAgICAjIFRlc3QgdGhlIHByb3RvY29s
IGxvZ2ljIGZvciBzZW5kaW5nIGtlZXBhbGl2ZSBwaW5ncy4KKworICAgIGRlZiByZXN0YXJ0X3By
b3RvY29sX3dpdGhfa2VlcGFsaXZlX3BpbmcoCisgICAgICAgIHNlbGYsIHBpbmdfaW50ZXJ2YWw9
MyAqIE1TLCBwaW5nX3RpbWVvdXQ9MyAqIE1TCisgICAgKToKKyAgICAgICAgaW5pdGlhbF9wcm90
b2NvbCA9IHNlbGYucHJvdG9jb2wKKyAgICAgICAgIyBjb3BpZWQgZnJvbSB0ZWFyRG93bgorICAg
ICAgICBzZWxmLnRyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZSgpKQorICAgICAgICAjIGNvcGllZCBmcm9tIHNl
dFVwLCBidXQgZW5hYmxlcyBrZWVwYWxpdmUgcGluZ3MKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9
IFdlYlNvY2tldENvbW1vblByb3RvY29sKAorICAgICAgICAgICAgcGluZ19pbnRlcnZhbD1waW5n
X2ludGVydmFsLCBwaW5nX3RpbWVvdXQ9cGluZ190aW1lb3V0CisgICAgICAgICkKKyAgICAgICAg
c2VsZi50cmFuc3BvcnQgPSBUcmFuc3BvcnRNb2NrKCkKKyAgICAgICAgc2VsZi50cmFuc3BvcnQu
c2V0dXBfbW9jayhzZWxmLmxvb3AsIHNlbGYucHJvdG9jb2wpCisgICAgICAgIHNlbGYucHJvdG9j
b2wuaXNfY2xpZW50ID0gaW5pdGlhbF9wcm90b2NvbC5pc19jbGllbnQKKyAgICAgICAgc2VsZi5w
cm90b2NvbC5zaWRlID0gaW5pdGlhbF9wcm90b2NvbC5zaWRlCisKKyAgICBkZWYgdGVzdF9rZWVw
YWxpdmVfcGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5yZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2Vl
cGFsaXZlX3BpbmcoKQorCisgICAgICAgICMgUGluZyBpcyBzZW50IGF0IDNtcyBhbmQgYWNrbm93
bGVkZ2VkIGF0IDRtcy4KKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3lu
Y2lvLnNsZWVwKDQgKiBNUykpCisgICAgICAgIChwaW5nXzEsKSA9IHR1cGxlKHNlbGYucHJvdG9j
b2wucGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50KFRydWUsIE9QX1BJTkcs
IHBpbmdfMSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1BPTkcs
IHBpbmdfMSkpCisKKyAgICAgICAgIyBOZXh0IHBpbmcgaXMgc2VudCBhdCA3bXMuCisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICogTVMpKQorICAg
ICAgICAocGluZ18yLCkgPSB0dXBsZShzZWxmLnByb3RvY29sLnBpbmdzKQorICAgICAgICBzZWxm
LmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBwaW5nXzIpCisKKyAgICAgICAgIyBU
aGUga2VlcGFsaXZlIHBpbmcgdGFzayBnb2VzIG9uLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHNlbGYucHJvdG9jb2wua2VlcGFsaXZlX3BpbmdfdGFzay5kb25lKCkpCisKKyAgICBkZWYgdGVz
dF9rZWVwYWxpdmVfcGluZ19ub3RfYWNrbm93bGVkZ2VkX2Nsb3Nlc19jb25uZWN0aW9uKHNlbGYp
OgorICAgICAgICBzZWxmLnJlc3RhcnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZygpCisK
KyAgICAgICAgIyBQaW5nIGlzIHNlbnQgYXQgM21zIGFuZCBub3QgYWNrbm93bGVnZWQuCisgICAg
ICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICogTVMpKQor
ICAgICAgICAocGluZ18xLCkgPSB0dXBsZShzZWxmLnByb3RvY29sLnBpbmdzKQorICAgICAgICBz
ZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBwaW5nXzEpCisKKyAgICAgICAg
IyBDb25uZWN0aW9uIGlzIGNsb3NlZCBhdCA2bXMuCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50
aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICogTVMpKQorICAgICAgICBzZWxmLmFzc2VydE9u
ZUZyYW1lU2VudChUcnVlLCBPUF9DTE9TRSwgc2VyaWFsaXplX2Nsb3NlKDEwMTEsICIiKSkKKwor
ICAgICAgICAjIFRoZSBrZWVwYWxpdmUgcGluZyB0YXNrIGlzIGNvbXBsZXRlLgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvdG9jb2wua2VlcGFsaXZlX3BpbmdfdGFzay5yZXN1bHQo
KSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2tlZXBhbGl2ZV9waW5nX3N0b3BzX3doZW5fY29ubmVj
dGlvbl9jbG9zaW5nKHNlbGYpOgorICAgICAgICBzZWxmLnJlc3RhcnRfcHJvdG9jb2xfd2l0aF9r
ZWVwYWxpdmVfcGluZygpCisgICAgICAgIGNsb3NlX3Rhc2sgPSBzZWxmLmhhbGZfY2xvc2VfY29u
bmVjdGlvbl9sb2NhbCgpCisKKyAgICAgICAgIyBObyBwaW5nIHNlbnQgYXQgM21zIGJlY2F1c2Ug
dGhlIGNsb3NpbmcgaGFuZHNoYWtlIGlzIGluIHByb2dyZXNzLgorICAgICAgICBzZWxmLmxvb3Au
cnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoNCAqIE1TKSkKKyAgICAgICAgc2VsZi5h
c3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICAgICAgIyBUaGUga2VlcGFsaXZlIHBpbmcgdGFzayB0
ZXJtaW5hdGVkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wcm90b2NvbC5rZWVwYWxp
dmVfcGluZ190YXNrLmNhbmNlbGxlZCgpKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoY2xvc2VfdGFzaykgICMgY2xlYW51cAorCisgICAgZGVmIHRlc3Rfa2VlcGFsaXZl
X3Bpbmdfc3RvcHNfd2hlbl9jb25uZWN0aW9uX2Nsb3NlZChzZWxmKToKKyAgICAgICAgc2VsZi5y
ZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2VlcGFsaXZlX3BpbmcoKQorICAgICAgICBzZWxmLmNsb3Nl
X2Nvbm5lY3Rpb24oKQorCisgICAgICAgICMgVGhlIGtlZXBhbGl2ZSBwaW5nIHRhc2sgdGVybWlu
YXRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucHJvdG9jb2wua2VlcGFsaXZlX3Bp
bmdfdGFzay5jYW5jZWxsZWQoKSkKKworICAgIGRlZiB0ZXN0X2tlZXBhbGl2ZV9waW5nX2RvZXNf
bm90X2NyYXNoX3doZW5fY29ubmVjdGlvbl9sb3N0KHNlbGYpOgorICAgICAgICBzZWxmLnJlc3Rh
cnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZygpCisgICAgICAgICMgQ2xvZyBpbmNvbWlu
ZyBxdWV1ZS4gVGhpcyBsZXRzIGNvbm5lY3Rpb25fbG9zdCgpIGFib3J0IHBlbmRpbmcgcGluZ3MK
KyAgICAgICAgIyB3aXRoIGEgQ29ubmVjdGlvbkNsb3NlZCBleGNlcHRpb24gYmVmb3JlIHRyYW5z
ZmVyX2RhdGFfdGFzaworICAgICAgICAjIHRlcm1pbmF0ZXMgYW5kIGNsb3NlX2Nvbm5lY3Rpb24g
Y2FuY2VscyBrZWVwYWxpdmVfcGluZ190YXNrLgorICAgICAgICBzZWxmLnByb3RvY29sLm1heF9x
dWV1ZSA9IDEKKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKEZyYW1lKFRydWUsIE9QX1RFWFQs
IGIiMSIpKQorICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwg
YiIyIikpCisgICAgICAgICMgUGluZyBpcyBzZW50IGF0IDNtcy4KKyAgICAgICAgc2VsZi5sb29w
LnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDQgKiBNUykpCisgICAgICAgIChwaW5n
X3dhaXRlciwpID0gdHVwbGUoc2VsZi5wcm90b2NvbC5waW5ncy52YWx1ZXMoKSkKKyAgICAgICAg
IyBDb25uZWN0aW9uIGRyb3BzLgorICAgICAgICBzZWxmLnJlY2VpdmVfZW9mKCkKKyAgICAgICAg
c2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLndhaXRfY2xvc2VkKCkp
CisKKyAgICAgICAgIyBUaGUgcGluZyB3YWl0ZXIgcmVjZWl2ZXMgYSBDb25uZWN0aW9uQ2xvc2Vk
IGV4Y2VwdGlvbi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uQ2xv
c2VkKToKKyAgICAgICAgICAgIHBpbmdfd2FpdGVyLnJlc3VsdCgpCisgICAgICAgICMgVGhlIGtl
ZXBhbGl2ZSBwaW5nIHRhc2sgdGVybWluYXRlZCBwcm9wZXJseS4KKyAgICAgICAgc2VsZi5hc3Nl
cnRJc05vbmUoc2VsZi5wcm90b2NvbC5rZWVwYWxpdmVfcGluZ190YXNrLnJlc3VsdCgpKQorCisg
ICAgICAgICMgVW5jbG9nIGluY29taW5nIHF1ZXVlIHRvIHRlcm1pbmF0ZSB0aGUgdGVzdCBxdWlj
a2x5LgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wu
cmVjdigpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9j
b2wucmVjdigpKQorCisgICAgZGVmIHRlc3Rfa2VlcGFsaXZlX3Bpbmdfd2l0aF9ub19waW5nX2lu
dGVydmFsKHNlbGYpOgorICAgICAgICBzZWxmLnJlc3RhcnRfcHJvdG9jb2xfd2l0aF9rZWVwYWxp
dmVfcGluZyhwaW5nX2ludGVydmFsPU5vbmUpCisKKyAgICAgICAgIyBObyBwaW5nIGlzIHNlbnQg
YXQgM21zLgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xl
ZXAoNCAqIE1TKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb0ZyYW1lU2VudCgpCisKKyAgICBkZWYg
dGVzdF9rZWVwYWxpdmVfcGluZ193aXRoX25vX3BpbmdfdGltZW91dChzZWxmKToKKyAgICAgICAg
c2VsZi5yZXN0YXJ0X3Byb3RvY29sX3dpdGhfa2VlcGFsaXZlX3BpbmcocGluZ190aW1lb3V0PU5v
bmUpCisKKyAgICAgICAgIyBQaW5nIGlzIHNlbnQgYXQgM21zIGFuZCBub3QgYWNrbm93bGVnZWQu
CisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICog
TVMpKQorICAgICAgICAocGluZ18xLCkgPSB0dXBsZShzZWxmLnByb3RvY29sLnBpbmdzKQorICAg
ICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBwaW5nXzEpCisKKyAg
ICAgICAgIyBOZXh0IHBpbmcgaXMgc2VudCBhdCA3bXMgYW55d2F5LgorICAgICAgICBzZWxmLmxv
b3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoNCAqIE1TKSkKKyAgICAgICAgcGlu
Z18xX2FnYWluLCBwaW5nXzIgPSB0dXBsZShzZWxmLnByb3RvY29sLnBpbmdzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBpbmdfMSwgcGluZ18xX2FnYWluKQorICAgICAgICBzZWxmLmFzc2Vy
dE9uZUZyYW1lU2VudChUcnVlLCBPUF9QSU5HLCBwaW5nXzIpCisKKyAgICAgICAgIyBUaGUga2Vl
cGFsaXZlIHBpbmcgdGFzayBnb2VzIG9uLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYu
cHJvdG9jb2wua2VlcGFsaXZlX3BpbmdfdGFzay5kb25lKCkpCisKKyAgICBkZWYgdGVzdF9rZWVw
YWxpdmVfcGluZ191bmV4cGVjdGVkX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLnJlc3RhcnRf
cHJvdG9jb2xfd2l0aF9rZWVwYWxpdmVfcGluZygpCisKKyAgICAgICAgYXN5bmMgZGVmIHBpbmco
KToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQk9PTSIpCisKKyAgICAgICAgc2VsZi5w
cm90b2NvbC5waW5nID0gcGluZworCisgICAgICAgICMgVGhlIGtlZXBhbGl2ZSBwaW5nIHRhc2sg
ZmFpbHMgd2hlbiBzZW5kaW5nIGEgcGluZyBhdCAzbXMuCisgICAgICAgIHNlbGYubG9vcC5ydW5f
dW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCg0ICogTVMpKQorCisgICAgICAgICMgVGhlIGtl
ZXBhbGl2ZSBwaW5nIHRhc2sgaXMgY29tcGxldGUuCisgICAgICAgICMgSXQgbG9ncyBhbmQgc3dh
bGxvd3MgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb3Rv
Y29sLmtlZXBhbGl2ZV9waW5nX3Rhc2sucmVzdWx0KCksIE5vbmUpCisKKyAgICAjIFRlc3QgdGhl
IHByb3RvY29sIGxvZ2ljIGZvciBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLgorCisgICAgZGVmIHRl
c3RfbG9jYWxfY2xvc2Uoc2VsZik6CisgICAgICAgICMgRW11bGF0ZSBob3cgdGhlIHJlbW90ZSBl
bmRwb2ludCBhbnN3ZXJzIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5sb29w
LmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9mcmFtZSwgc2VsZi5jbG9zZV9mcmFtZSkKKyAg
ICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZfY2xpZW50
KQorCisgICAgICAgICMgUnVuIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5s
b29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLmNsb3NlKHJlYXNvbj0iY2xvc2Ui
KSkKKworICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNsb3NlIikK
KyAgICAgICAgc2VsZi5hc3NlcnRPbmVGcmFtZVNlbnQoKnNlbGYuY2xvc2VfZnJhbWUpCisKKyAg
ICAgICAgIyBDbG9zaW5nIHRoZSBjb25uZWN0aW9uIGFnYWluIGlzIGEgbm8tb3AuCisgICAgICAg
IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249
Im9oIG5vZXMhIikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEwMDAs
ICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9GcmFtZVNlbnQoKQorCisgICAgZGVmIHRl
c3RfcmVtb3RlX2Nsb3NlKHNlbGYpOgorICAgICAgICAjIEVtdWxhdGUgaG93IHRoZSByZW1vdGUg
ZW5kcG9pbnQgaW5pdGlhdGVzIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5s
b29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9mcmFtZSwgc2VsZi5jbG9zZV9mcmFtZSkK
KyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZfY2xp
ZW50KQorCisgICAgICAgICMgV2FpdCBmb3Igc29tZSBkYXRhIGluIG9yZGVyIHRvIHByb2Nlc3Mg
dGhlIGhhbmRzaGFrZS4KKyAgICAgICAgIyBBZnRlciByZWN2KCkgcmFpc2VzIENvbm5lY3Rpb25D
bG9zZWQsIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50
aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5yZWN2KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRD
b25uZWN0aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJh
bWVTZW50KCpzZWxmLmNsb3NlX2ZyYW1lKQorCisgICAgICAgICMgQ2xvc2luZyB0aGUgY29ubmVj
dGlvbiBhZ2FpbiBpcyBhIG5vLW9wLgorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJvaCBub2VzISIpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAwLCAiY2xvc2UiKQorICAgICAgICBzZWxmLmFz
c2VydE5vRnJhbWVTZW50KCkKKworICAgIGRlZiB0ZXN0X3JlbW90ZV9jbG9zZV9hbmRfY29ubmVj
dGlvbl9sb3N0KHNlbGYpOgorICAgICAgICBzZWxmLm1ha2VfZHJhaW5fc2xvdygpCisgICAgICAg
ICMgRHJvcCB0aGUgY29ubmVjdGlvbiByaWdodCBhZnRlciByZWNlaXZpbmcgYSBjbG9zZSBmcmFt
ZSwKKyAgICAgICAgIyB3aGljaCBwcmV2ZW50cyBlY2hvaW5nIHRoZSBjbG9zZSBmcmFtZSBwcm9w
ZXJseS4KKyAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKHNlbGYuY2xvc2VfZnJhbWUpCisgICAg
ICAgIHNlbGYucmVjZWl2ZV9lb2YoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnROb0xvZ3Mo
KToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2Nv
bC5jbG9zZShyZWFzb249Im9oIG5vZXMhIikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0
aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0T25lRnJhbWVTZW50
KCpzZWxmLmNsb3NlX2ZyYW1lKQorCisgICAgZGVmIHRlc3Rfc2ltdWx0YW5lb3VzX2Nsb3NlKHNl
bGYpOgorICAgICAgICAjIFJlY2VpdmUgdGhlIGluY29taW5nIGNsb3NlIGZyYW1lIHJpZ2h0IGFm
dGVyIHNlbGYucHJvdG9jb2wuY2xvc2UoKQorICAgICAgICAjIHN0YXJ0cyBleGVjdXRpbmcuIFRo
aXMgcmVwcm9kdWNlcyB0aGUgZXJyb3IgZGVzY3JpYmVkIGluOgorICAgICAgICAjIGh0dHBzOi8v
Z2l0aHViLmNvbS9hYXVndXN0aW4vd2Vic29ja2V0cy9pc3N1ZXMvMzM5CisgICAgICAgIHNlbGYu
bG9vcC5jYWxsX3Nvb24oc2VsZi5yZWNlaXZlX2ZyYW1lLCBzZWxmLnJlbW90ZV9jbG9zZSkKKyAg
ICAgICAgc2VsZi5sb29wLmNhbGxfc29vbihzZWxmLnJlY2VpdmVfZW9mX2lmX2NsaWVudCkKKwor
ICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2Uo
cmVhc29uPSJsb2NhbCIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgx
MDAwLCAicmVtb3RlIikKKyAgICAgICAgIyBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzZW5k
cyBhIGNsb3NlIGZyYW1lIGluIHJlc3BvbnNlIHRvIHRoZQorICAgICAgICAjIGNsb3NlIGZyYW1l
IHJlY2VpdmVkIGZyb20gdGhlIHJlbW90ZSBlbmQuIEl0IHNraXBzIHRoZSBjbG9zZSBmcmFtZQor
ICAgICAgICAjIHRoYXQgc2hvdWxkIGJlIHNlbnQgYXMgYSByZXN1bHQgb2YgY2FsbGluZyBjbG9z
ZSgpLgorICAgICAgICBzZWxmLmFzc2VydE9uZUZyYW1lU2VudCgqc2VsZi5yZW1vdGVfY2xvc2Up
CisKKyAgICBkZWYgdGVzdF9jbG9zZV9wcmVzZXJ2ZXNfaW5jb21pbmdfZnJhbWVzKHNlbGYpOgor
ICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUoRnJhbWUoVHJ1ZSwgT1BfVEVYVCwgYiJoZWxsbyIp
KQorCisgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKE1TLCBzZWxmLnJlY2VpdmVfZnJhbWUs
IHNlbGYuY2xvc2VfZnJhbWUpCisgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKE1TLCBzZWxm
LnJlY2VpdmVfZW9mX2lmX2NsaWVudCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21w
bGV0ZShzZWxmLnByb3RvY29sLmNsb3NlKHJlYXNvbj0iY2xvc2UiKSkKKworICAgICAgICBzZWxm
LmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNsb3NlIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRPbmVGcmFtZVNlbnQoKnNlbGYuY2xvc2VfZnJhbWUpCisKKyAgICAgICAgbmV4dF9tZXNzYWdl
ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLnJlY3YoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0X21lc3NhZ2UsICJoZWxsbyIpCisKKyAgICBkZWYg
dGVzdF9jbG9zZV9wcm90b2NvbF9lcnJvcihzZWxmKToKKyAgICAgICAgaW52YWxpZF9jbG9zZV9m
cmFtZSA9IEZyYW1lKFRydWUsIE9QX0NMT1NFLCBiIlx4MDAiKQorICAgICAgICBzZWxmLnJlY2Vp
dmVfZnJhbWUoaW52YWxpZF9jbG9zZV9mcmFtZSkKKyAgICAgICAgc2VsZi5yZWNlaXZlX2VvZl9p
Zl9jbGllbnQoKQorICAgICAgICBzZWxmLnJ1bl9sb29wX29uY2UoKQorICAgICAgICBzZWxmLmxv
b3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJjbG9zZSIp
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkZhaWxlZCgxMDAyLCAiIikKKworICAg
IGRlZiB0ZXN0X2Nsb3NlX2Nvbm5lY3Rpb25fbG9zdChzZWxmKToKKyAgICAgICAgc2VsZi5yZWNl
aXZlX2VvZigpCisgICAgICAgIHNlbGYucnVuX2xvb3Bfb25jZSgpCisgICAgICAgIHNlbGYubG9v
cC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uRmFpbGVkKDEwMDYsICIiKQorCisgICAg
ZGVmIHRlc3RfbG9jYWxfY2xvc2VfZHVyaW5nX3JlY3Yoc2VsZik6CisgICAgICAgIHJlY3YgPSBz
ZWxmLmxvb3AuY3JlYXRlX3Rhc2soc2VsZi5wcm90b2NvbC5yZWN2KCkpCisKKyAgICAgICAgc2Vs
Zi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9mcmFtZSwgc2VsZi5jbG9zZV9mcmFt
ZSkKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoTVMsIHNlbGYucmVjZWl2ZV9lb2ZfaWZf
Y2xpZW50KQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5wcm90
b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUocmVjdikKKworICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAw
MCwgImNsb3NlIikKKworICAgICMgVGhlcmUgaXMgbm8gdGVzdF9yZW1vdGVfY2xvc2VfZHVyaW5n
X3JlY3YgYmVjYXVzZSBpdCB3b3VsZCBiZSBpZGVudGljYWwKKyAgICAjIHRvIHRlc3RfcmVtb3Rl
X2Nsb3NlLgorCisgICAgZGVmIHRlc3RfcmVtb3RlX2Nsb3NlX2R1cmluZ19zZW5kKHNlbGYpOgor
ICAgICAgICBzZWxmLm1ha2VfZHJhaW5fc2xvdygpCisgICAgICAgIHNlbmQgPSBzZWxmLmxvb3Au
Y3JlYXRlX3Rhc2soc2VsZi5wcm90b2NvbC5zZW5kKCJoZWxsbyIpKQorCisgICAgICAgIHNlbGYu
cmVjZWl2ZV9mcmFtZShzZWxmLmNsb3NlX2ZyYW1lKQorICAgICAgICBzZWxmLnJlY2VpdmVfZW9m
KCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25DbG9zZWQpOgor
ICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZW5kKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAwLCAiY2xvc2UiKQorCisgICAgIyBUaGVy
ZSBpcyBubyB0ZXN0X2xvY2FsX2Nsb3NlX2R1cmluZ19zZW5kIGJlY2F1c2UgdGhpcyBjYW5ub3Qg
cmVhbGx5CisgICAgIyBoYXBwZW4sIGNvbnNpZGVyaW5nIHRoYXQgd3JpdGVzIGFyZSBzZXJpYWxp
emVkLgorCisKK2NsYXNzIFNlcnZlclRlc3RzKENvbW1vblRlc3RzLCBBc3luY2lvVGVzdENhc2Up
OgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAg
IHNlbGYucHJvdG9jb2wuaXNfY2xpZW50ID0gRmFsc2UKKyAgICAgICAgc2VsZi5wcm90b2NvbC5z
aWRlID0gInNlcnZlciIKKworICAgIGRlZiB0ZXN0X2xvY2FsX2Nsb3NlX3NlbmRfY2xvc2VfZnJh
bWVfdGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5wcm90b2NvbC5jbG9zZV90aW1lb3V0ID0g
MTAgKiBNUworICAgICAgICBzZWxmLm1ha2VfZHJhaW5fc2xvdyg1MCAqIE1TKQorICAgICAgICAj
IElmIHdlIGNhbid0IHNlbmQgYSBjbG9zZSBmcmFtZSwgdGltZSBvdXQgaW4gMTBtcy4KKyAgICAg
ICAgIyBDaGVjayB0aGUgdGltaW5nIHdpdGhpbiAtMS8rOW1zIGZvciByb2J1c3RuZXNzLgorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0Q29tcGxldGVzV2l0aGluKDkgKiBNUywgMTkgKiBNUyk6Cisg
ICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYucHJvdG9jb2wuY2xv
c2UocmVhc29uPSJjbG9zZSIpKQorICAgICAgICBzZWxmLmFzc2VydENvbm5lY3Rpb25DbG9zZWQo
MTAwNiwgIiIpCisKKyAgICBkZWYgdGVzdF9sb2NhbF9jbG9zZV9yZWNlaXZlX2Nsb3NlX2ZyYW1l
X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xvc2VfdGltZW91dCA9IDEw
ICogTVMKKyAgICAgICAgIyBJZiB0aGUgY2xpZW50IGRvZXNuJ3Qgc2VuZCBhIGNsb3NlIGZyYW1l
LCB0aW1lIG91dCBpbiAxMG1zLgorICAgICAgICAjIENoZWNrIHRoZSB0aW1pbmcgd2l0aGluIC0x
Lys5bXMgZm9yIHJvYnVzdG5lc3MuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRDb21wbGV0ZXNX
aXRoaW4oOSAqIE1TLCAxOSAqIE1TKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikpCisgICAgICAgIHNl
bGYuYXNzZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDA2LCAiIikKKworICAgIGRlZiB0ZXN0X2xvY2Fs
X2Nsb3NlX2Nvbm5lY3Rpb25fbG9zdF90aW1lb3V0X2FmdGVyX3dyaXRlX2VvZihzZWxmKToKKyAg
ICAgICAgc2VsZi5wcm90b2NvbC5jbG9zZV90aW1lb3V0ID0gMTAgKiBNUworICAgICAgICAjIElm
IHRoZSBjbGllbnQgZG9lc24ndCBjbG9zZSBpdHMgc2lkZSBvZiB0aGUgVENQIGNvbm5lY3Rpb24g
YWZ0ZXIgd2UKKyAgICAgICAgIyBoYWxmLWNsb3NlIG91ciBzaWRlIHdpdGggd3JpdGVfZW9mKCks
IHRpbWUgb3V0IGluIDEwbXMuCisgICAgICAgICMgQ2hlY2sgdGhlIHRpbWluZyB3aXRoaW4gLTEv
KzltcyBmb3Igcm9idXN0bmVzcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENvbXBsZXRlc1dp
dGhpbig5ICogTVMsIDE5ICogTVMpOgorICAgICAgICAgICAgIyBIQUNLOiBkaXNhYmxlIHdyaXRl
X2VvZiA9PiBvdGhlciBlbmQgZHJvcHMgY29ubmVjdGlvbiBlbXVsYXRpb24uCisgICAgICAgICAg
ICBzZWxmLnRyYW5zcG9ydC5fZW9mID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlX2Zy
YW1lKHNlbGYuY2xvc2VfZnJhbWUpCisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKHNlbGYucHJvdG9jb2wuY2xvc2UocmVhc29uPSJjbG9zZSIpKQorICAgICAgICBzZWxm
LmFzc2VydENvbm5lY3Rpb25DbG9zZWQoMTAwMCwgImNsb3NlIikKKworICAgIGRlZiB0ZXN0X2xv
Y2FsX2Nsb3NlX2Nvbm5lY3Rpb25fbG9zdF90aW1lb3V0X2FmdGVyX2Nsb3NlKHNlbGYpOgorICAg
ICAgICBzZWxmLnByb3RvY29sLmNsb3NlX3RpbWVvdXQgPSAxMCAqIE1TCisgICAgICAgICMgSWYg
dGhlIGNsaWVudCBkb2Vzbid0IGNsb3NlIGl0cyBzaWRlIG9mIHRoZSBUQ1AgY29ubmVjdGlvbiBh
ZnRlciB3ZQorICAgICAgICAjIGhhbGYtY2xvc2Ugb3VyIHNpZGUgd2l0aCB3cml0ZV9lb2YoKSBh
bmQgY2xvc2UgaXQgd2l0aCBjbG9zZSgpLCB0aW1lCisgICAgICAgICMgb3V0IGluIDIwbXMuCisg
ICAgICAgICMgQ2hlY2sgdGhlIHRpbWluZyB3aXRoaW4gLTEvKzltcyBmb3Igcm9idXN0bmVzcy4K
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENvbXBsZXRlc1dpdGhpbigxOSAqIE1TLCAyOSAqIE1T
KToKKyAgICAgICAgICAgICMgSEFDSzogZGlzYWJsZSB3cml0ZV9lb2YgPT4gb3RoZXIgZW5kIGRy
b3BzIGNvbm5lY3Rpb24gZW11bGF0aW9uLgorICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuX2Vv
ZiA9IFRydWUKKyAgICAgICAgICAgICMgSEFDSzogZGlzYWJsZSBjbG9zZSA9PiBvdGhlciBlbmQg
ZHJvcHMgY29ubmVjdGlvbiBlbXVsYXRpb24uCisgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC5f
Y2xvc2luZyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZV9mcmFtZShzZWxmLmNsb3Nl
X2ZyYW1lKQorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnBy
b3RvY29sLmNsb3NlKHJlYXNvbj0iY2xvc2UiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb25uZWN0
aW9uQ2xvc2VkKDEwMDAsICJjbG9zZSIpCisKKworY2xhc3MgQ2xpZW50VGVzdHMoQ29tbW9uVGVz
dHMsIEFzeW5jaW9UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBl
cigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5wcm90b2NvbC5pc19jbGllbnQgPSBUcnVlCisgICAg
ICAgIHNlbGYucHJvdG9jb2wuc2lkZSA9ICJjbGllbnQiCisKKyAgICBkZWYgdGVzdF9sb2NhbF9j
bG9zZV9zZW5kX2Nsb3NlX2ZyYW1lX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9j
b2wuY2xvc2VfdGltZW91dCA9IDEwICogTVMKKyAgICAgICAgc2VsZi5tYWtlX2RyYWluX3Nsb3co
NTAgKiBNUykKKyAgICAgICAgIyBJZiB3ZSBjYW4ndCBzZW5kIGEgY2xvc2UgZnJhbWUsIHRpbWUg
b3V0IGluIDIwbXMuCisgICAgICAgICMgLSAxMG1zIHdhaXRpbmcgZm9yIHNlbmRpbmcgYSBjbG9z
ZSBmcmFtZQorICAgICAgICAjIC0gMTBtcyB3YWl0aW5nIGZvciByZWNlaXZpbmcgYSBoYWxmLWNs
b3NlCisgICAgICAgICMgQ2hlY2sgdGhlIHRpbWluZyB3aXRoaW4gLTEvKzltcyBmb3Igcm9idXN0
bmVzcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENvbXBsZXRlc1dpdGhpbigxOSAqIE1TLCAy
OSAqIE1TKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5w
cm90b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29ubmVj
dGlvbkNsb3NlZCgxMDA2LCAiIikKKworICAgIGRlZiB0ZXN0X2xvY2FsX2Nsb3NlX3JlY2VpdmVf
Y2xvc2VfZnJhbWVfdGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5wcm90b2NvbC5jbG9zZV90
aW1lb3V0ID0gMTAgKiBNUworICAgICAgICAjIElmIHRoZSBzZXJ2ZXIgZG9lc24ndCBzZW5kIGEg
Y2xvc2UgZnJhbWUsIHRpbWUgb3V0IGluIDIwbXM6CisgICAgICAgICMgLSAxMG1zIHdhaXRpbmcg
Zm9yIHJlY2VpdmluZyBhIGNsb3NlIGZyYW1lCisgICAgICAgICMgLSAxMG1zIHdhaXRpbmcgZm9y
IHJlY2VpdmluZyBhIGhhbGYtY2xvc2UKKyAgICAgICAgIyBDaGVjayB0aGUgdGltaW5nIHdpdGhp
biAtMS8rOW1zIGZvciByb2J1c3RuZXNzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Q29tcGxl
dGVzV2l0aGluKDE5ICogTVMsIDI5ICogTVMpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91
bnRpbF9jb21wbGV0ZShzZWxmLnByb3RvY29sLmNsb3NlKHJlYXNvbj0iY2xvc2UiKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRDb25uZWN0aW9uQ2xvc2VkKDEwMDYsICIiKQorCisgICAgZGVmIHRlc3Rf
bG9jYWxfY2xvc2VfY29ubmVjdGlvbl9sb3N0X3RpbWVvdXRfYWZ0ZXJfd3JpdGVfZW9mKHNlbGYp
OgorICAgICAgICBzZWxmLnByb3RvY29sLmNsb3NlX3RpbWVvdXQgPSAxMCAqIE1TCisgICAgICAg
ICMgSWYgdGhlIHNlcnZlciBkb2Vzbid0IGhhbGYtY2xvc2UgaXRzIHNpZGUgb2YgdGhlIFRDUCBj
b25uZWN0aW9uCisgICAgICAgICMgYWZ0ZXIgd2Ugc2VuZCBhIGNsb3NlIGZyYW1lLCB0aW1lIG91
dCBpbiAyMG1zOgorICAgICAgICAjIC0gMTBtcyB3YWl0aW5nIGZvciByZWNlaXZpbmcgYSBoYWxm
LWNsb3NlCisgICAgICAgICMgLSAxMG1zIHdhaXRpbmcgZm9yIHJlY2VpdmluZyBhIGNsb3NlIGFm
dGVyIHdyaXRlX2VvZgorICAgICAgICAjIENoZWNrIHRoZSB0aW1pbmcgd2l0aGluIC0xLys5bXMg
Zm9yIHJvYnVzdG5lc3MuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRDb21wbGV0ZXNXaXRoaW4o
MTkgKiBNUywgMjkgKiBNUyk6CisgICAgICAgICAgICAjIEhBQ0s6IGRpc2FibGUgd3JpdGVfZW9m
ID0+IG90aGVyIGVuZCBkcm9wcyBjb25uZWN0aW9uIGVtdWxhdGlvbi4KKyAgICAgICAgICAgIHNl
bGYudHJhbnNwb3J0Ll9lb2YgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnJlY2VpdmVfZnJhbWUo
c2VsZi5jbG9zZV9mcmFtZSkKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoc2VsZi5wcm90b2NvbC5jbG9zZShyZWFzb249ImNsb3NlIikpCisgICAgICAgIHNlbGYuYXNz
ZXJ0Q29ubmVjdGlvbkNsb3NlZCgxMDAwLCAiY2xvc2UiKQorCisgICAgZGVmIHRlc3RfbG9jYWxf
Y2xvc2VfY29ubmVjdGlvbl9sb3N0X3RpbWVvdXRfYWZ0ZXJfY2xvc2Uoc2VsZik6CisgICAgICAg
IHNlbGYucHJvdG9jb2wuY2xvc2VfdGltZW91dCA9IDEwICogTVMKKyAgICAgICAgIyBJZiB0aGUg
Y2xpZW50IGRvZXNuJ3QgY2xvc2UgaXRzIHNpZGUgb2YgdGhlIFRDUCBjb25uZWN0aW9uIGFmdGVy
IHdlCisgICAgICAgICMgaGFsZi1jbG9zZSBvdXIgc2lkZSB3aXRoIHdyaXRlX2VvZigpIGFuZCBj
bG9zZSBpdCB3aXRoIGNsb3NlKCksIHRpbWUKKyAgICAgICAgIyBvdXQgaW4gMjBtcy4KKyAgICAg
ICAgIyAtIDEwbXMgd2FpdGluZyBmb3IgcmVjZWl2aW5nIGEgaGFsZi1jbG9zZQorICAgICAgICAj
IC0gMTBtcyB3YWl0aW5nIGZvciByZWNlaXZpbmcgYSBjbG9zZSBhZnRlciB3cml0ZV9lb2YKKyAg
ICAgICAgIyAtIDEwbXMgd2FpdGluZyBmb3IgcmVjZWl2aW5nIGEgY2xvc2UgYWZ0ZXIgY2xvc2UK
KyAgICAgICAgIyBDaGVjayB0aGUgdGltaW5nIHdpdGhpbiAtMS8rOW1zIGZvciByb2J1c3RuZXNz
LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Q29tcGxldGVzV2l0aGluKDI5ICogTVMsIDM5ICog
TVMpOgorICAgICAgICAgICAgIyBIQUNLOiBkaXNhYmxlIHdyaXRlX2VvZiA9PiBvdGhlciBlbmQg
ZHJvcHMgY29ubmVjdGlvbiBlbXVsYXRpb24uCisgICAgICAgICAgICBzZWxmLnRyYW5zcG9ydC5f
ZW9mID0gVHJ1ZQorICAgICAgICAgICAgIyBIQUNLOiBkaXNhYmxlIGNsb3NlID0+IG90aGVyIGVu
ZCBkcm9wcyBjb25uZWN0aW9uIGVtdWxhdGlvbi4KKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0
Ll9jbG9zaW5nID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlX2ZyYW1lKHNlbGYuY2xv
c2VfZnJhbWUpCisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYu
cHJvdG9jb2wuY2xvc2UocmVhc29uPSJjbG9zZSIpKQorICAgICAgICBzZWxmLmFzc2VydENvbm5l
Y3Rpb25DbG9zZWQoMTAwMCwgImNsb3NlIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90
ZXN0cy90ZXN0X3VyaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X3VyaS5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU0MTg2MGI4ZTRjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X3VyaS5weQpAQCAtMCwwICsx
LDMzIEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJzb2NrZXRzLmV4Y2VwdGlvbnMgaW1w
b3J0IEludmFsaWRVUkkKK2Zyb20gd2Vic29ja2V0cy51cmkgaW1wb3J0ICoKKworCitWQUxJRF9V
UklTID0gWworICAgICgid3M6Ly9sb2NhbGhvc3QvIiwgKEZhbHNlLCAibG9jYWxob3N0IiwgODAs
ICIvIiwgTm9uZSkpLAorICAgICgid3NzOi8vbG9jYWxob3N0LyIsIChUcnVlLCAibG9jYWxob3N0
IiwgNDQzLCAiLyIsIE5vbmUpKSwKKyAgICAoIndzOi8vbG9jYWxob3N0L3BhdGg/cXVlcnkiLCAo
RmFsc2UsICJsb2NhbGhvc3QiLCA4MCwgIi9wYXRoP3F1ZXJ5IiwgTm9uZSkpLAorICAgICgiV1M6
Ly9MT0NBTEhPU1QvUEFUSD9RVUVSWSIsIChGYWxzZSwgImxvY2FsaG9zdCIsIDgwLCAiL1BBVEg/
UVVFUlkiLCBOb25lKSksCisgICAgKCJ3czovL3VzZXI6cGFzc0Bsb2NhbGhvc3QvIiwgKEZhbHNl
LCAibG9jYWxob3N0IiwgODAsICIvIiwgKCJ1c2VyIiwgInBhc3MiKSkpLAorXQorCitJTlZBTElE
X1VSSVMgPSBbCisgICAgImh0dHA6Ly9sb2NhbGhvc3QvIiwKKyAgICAiaHR0cHM6Ly9sb2NhbGhv
c3QvIiwKKyAgICAid3M6Ly9sb2NhbGhvc3QvcGF0aCNmcmFnbWVudCIsCisgICAgIndzOi8vdXNl
ckBsb2NhbGhvc3QvIiwKK10KKworCitjbGFzcyBVUklUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgZm9yIHVyaSwgcGFyc2VkIGlu
IFZBTElEX1VSSVM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmk9dXJpKToKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlX3VyaSh1cmkpLCBwYXJzZWQpCisK
KyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIHVyaSBpbiBJTlZBTElEX1VS
SVM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmk9dXJpKToKKyAgICAgICAgICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRVUkkpOgorICAgICAgICAgICAgICAg
ICAgICBwYXJzZV91cmkodXJpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3Rlc3RzL3Rl
c3RfdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdGVzdF91dGlscy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1NTcwZjA5OGJhYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90ZXN0cy90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEs
OTIgQEAKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYnNvY2tl
dHMudXRpbHMgaW1wb3J0IGFwcGx5X21hc2sgYXMgcHlfYXBwbHlfbWFzaworCisKK2NsYXNzIFV0
aWxzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
YXBwbHlfbWFzaygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gcHlfYXBwbHlfbWFz
aygqYXJncywgKiprd2FyZ3MpCisKKyAgICBhcHBseV9tYXNrX3R5cGVfY29tYm9zID0gbGlzdChp
dGVydG9vbHMucHJvZHVjdChbYnl0ZXMsIGJ5dGVhcnJheV0sIHJlcGVhdD0yKSkKKworICAgIGFw
cGx5X21hc2tfdGVzdF92YWx1ZXMgPSBbCisgICAgICAgIChiIiIsIGIiMTIzNCIsIGIiIiksCisg
ICAgICAgIChiImFCY0RlIiwgYiJceDAwXHgwMFx4MDBceDAwIiwgYiJhQmNEZSIpLAorICAgICAg
ICAoYiJhYmNkQUJDRCIsIGIiMTIzNCIsIGIiUFBQUHBwcHAiKSwKKyAgICAgICAgKGIiYWJjZEFC
Q0QiICogMTAsIGIiMTIzNCIsIGIiUFBQUHBwcHAiICogMTApLAorICAgIF0KKworICAgIGRlZiB0
ZXN0X2FwcGx5X21hc2soc2VsZik6CisgICAgICAgIGZvciBkYXRhX3R5cGUsIG1hc2tfdHlwZSBp
biBzZWxmLmFwcGx5X21hc2tfdHlwZV9jb21ib3M6CisgICAgICAgICAgICBmb3IgZGF0YV9pbiwg
bWFzaywgZGF0YV9vdXQgaW4gc2VsZi5hcHBseV9tYXNrX3Rlc3RfdmFsdWVzOgorICAgICAgICAg
ICAgICAgIGRhdGFfaW4sIG1hc2sgPSBkYXRhX3R5cGUoZGF0YV9pbiksIG1hc2tfdHlwZShtYXNr
KQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YV9pbj1kYXRhX2luLCBt
YXNrPW1hc2spOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmFwcGx5X21hc2so
ZGF0YV9pbiwgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1
bHQsIGRhdGFfb3V0KQorCisgICAgZGVmIHRlc3RfYXBwbHlfbWFza19tZW1vcnl2aWV3KHNlbGYp
OgorICAgICAgICBmb3IgZGF0YV90eXBlLCBtYXNrX3R5cGUgaW4gc2VsZi5hcHBseV9tYXNrX3R5
cGVfY29tYm9zOgorICAgICAgICAgICAgZm9yIGRhdGFfaW4sIG1hc2ssIGRhdGFfb3V0IGluIHNl
bGYuYXBwbHlfbWFza190ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkYXRhX2luLCBtYXNr
ID0gZGF0YV90eXBlKGRhdGFfaW4pLCBtYXNrX3R5cGUobWFzaykKKyAgICAgICAgICAgICAgICBk
YXRhX2luLCBtYXNrID0gbWVtb3J5dmlldyhkYXRhX2luKSwgbWVtb3J5dmlldyhtYXNrKQorCisg
ICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YV9pbj1kYXRhX2luLCBtYXNrPW1h
c2spOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmFwcGx5X21hc2soZGF0YV9p
biwgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGRh
dGFfb3V0KQorCisgICAgZGVmIHRlc3RfYXBwbHlfbWFza19ub25fY29udGlndW91c19tZW1vcnl2
aWV3KHNlbGYpOgorICAgICAgICBmb3IgZGF0YV90eXBlLCBtYXNrX3R5cGUgaW4gc2VsZi5hcHBs
eV9tYXNrX3R5cGVfY29tYm9zOgorICAgICAgICAgICAgZm9yIGRhdGFfaW4sIG1hc2ssIGRhdGFf
b3V0IGluIHNlbGYuYXBwbHlfbWFza190ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkYXRh
X2luLCBtYXNrID0gZGF0YV90eXBlKGRhdGFfaW4pLCBtYXNrX3R5cGUobWFzaykKKyAgICAgICAg
ICAgICAgICBkYXRhX2luLCBtYXNrID0gbWVtb3J5dmlldyhkYXRhX2luKSwgbWVtb3J5dmlldyht
YXNrKQorICAgICAgICAgICAgICAgIGRhdGFfaW4sIG1hc2sgPSBkYXRhX2luWzo6LTFdLCBtYXNr
Wzo6LTFdCisgICAgICAgICAgICAgICAgZGF0YV9vdXQgPSBkYXRhX291dFs6Oi0xXQorCisgICAg
ICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YV9pbj1kYXRhX2luLCBtYXNrPW1hc2sp
OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmFwcGx5X21hc2soZGF0YV9pbiwg
bWFzaykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGRhdGFf
b3V0KQorCisgICAgZGVmIHRlc3RfYXBwbHlfbWFza19jaGVja19pbnB1dF90eXBlcyhzZWxmKToK
KyAgICAgICAgZm9yIGRhdGFfaW4sIG1hc2sgaW4gWyhOb25lLCBOb25lKSwgKGIiYWJjZCIsIE5v
bmUpLCAoTm9uZSwgYiJhYmNkIildOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0
YV9pbj1kYXRhX2luLCBtYXNrPW1hc2spOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseV9tYXNr
KGRhdGFfaW4sIG1hc2spCisKKyAgICBkZWYgdGVzdF9hcHBseV9tYXNrX2NoZWNrX21hc2tfbGVu
Z3RoKHNlbGYpOgorICAgICAgICBmb3IgZGF0YV9pbiwgbWFzayBpbiBbCisgICAgICAgICAgICAo
YiIiLCBiIiIpLAorICAgICAgICAgICAgKGIiYWJjZCIsIGIiMTIzIiksCisgICAgICAgICAgICAo
YiIiLCBiImFCY0RlIiksCisgICAgICAgICAgICAoYiIxMjM0NTY3OCIsIGIiMTIzNDU2NzgiKSwK
KyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGFfaW49ZGF0YV9p
biwgbWFzaz1tYXNrKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X21hc2soZGF0YV9pbiwg
bWFzaykKKworCit0cnk6CisgICAgZnJvbSB3ZWJzb2NrZXRzLnNwZWVkdXBzIGltcG9ydCBhcHBs
eV9tYXNrIGFzIGNfYXBwbHlfbWFzaworZXhjZXB0IEltcG9ydEVycm9yOiAgIyBwcmFnbWE6IG5v
IGNvdmVyCisgICAgcGFzcworZWxzZToKKworICAgIGNsYXNzIFNwZWVkdXBzVGVzdHMoVXRpbHNU
ZXN0cyk6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGFwcGx5X21hc2soKmFy
Z3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBjX2FwcGx5X21hc2soKmFyZ3MsICoq
a3dhcmdzKQorCisgICAgICAgIGRlZiB0ZXN0X2FwcGx5X21hc2tfbm9uX2NvbnRpZ3VvdXNfbWVt
b3J5dmlldyhzZWxmKToKKyAgICAgICAgICAgIGZvciBkYXRhX3R5cGUsIG1hc2tfdHlwZSBpbiBz
ZWxmLmFwcGx5X21hc2tfdHlwZV9jb21ib3M6CisgICAgICAgICAgICAgICAgZm9yIGRhdGFfaW4s
IG1hc2ssIGRhdGFfb3V0IGluIHNlbGYuYXBwbHlfbWFza190ZXN0X3ZhbHVlczoKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YV9pbiwgbWFzayA9IGRhdGFfdHlwZShkYXRhX2luKSwgbWFza190eXBl
KG1hc2spCisgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sIG1hc2sgPSBtZW1vcnl2aWV3KGRh
dGFfaW4pLCBtZW1vcnl2aWV3KG1hc2spCisgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sIG1h
c2sgPSBkYXRhX2luWzo6LTFdLCBtYXNrWzo6LTFdCisgICAgICAgICAgICAgICAgICAgIGRhdGFf
b3V0ID0gZGF0YV9vdXRbOjotMV0KKworICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3Vi
VGVzdChkYXRhX2luPWRhdGFfaW4sIG1hc2s9bWFzayk6CisgICAgICAgICAgICAgICAgICAgICAg
ICAjIFRoZSBDIGV4dGVuc2lvbiBvbmx5IHN1cHBvcnRzIGNvbnRpZ3VvdXMgbWVtb3J5dmlld3Mu
CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJv
cik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseV9tYXNrKGRhdGFfaW4s
IG1hc2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tldHMvdGVzdHMvdXRpbHMucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3dlYnNvY2tldHMvdGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi45ODNhOTFlZGYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNvY2tl
dHMvdGVzdHMvdXRpbHMucHkKQEAgLTAsMCArMSw5MyBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9y
dCBjb250ZXh0bGliCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9z
CitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgQXN5bmNpb1Rlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciB0ZXN0cyB0
aGF0IHNldHMgdXAgYW4gaXNvbGF0ZWQgZXZlbnQgbG9vcCBmb3IgZWFjaCB0ZXN0LgorCisgICAg
IiIiCisKKyAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAg
ICIiIgorICAgICAgICBDb252ZXJ0IHRlc3QgY29yb3V0aW5lcyB0byB0ZXN0IGZ1bmN0aW9ucy4K
KworICAgICAgICBUaGlzIHN1cHBvcnRzIGFzeWNocm9ub3VzIHRlc3RzIHRyYW5zcGFyZW50bHku
CisKKyAgICAgICAgIiIiCisgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2Fy
Z3MpCisgICAgICAgIGZvciBuYW1lIGluIHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyLmdldFRl
c3RDYXNlTmFtZXMoY2xzKToKKyAgICAgICAgICAgIHRlc3QgPSBnZXRhdHRyKGNscywgbmFtZSkK
KyAgICAgICAgICAgIGlmIGFzeW5jaW8uaXNjb3JvdXRpbmVmdW5jdGlvbih0ZXN0KToKKyAgICAg
ICAgICAgICAgICBzZXRhdHRyKGNscywgbmFtZSwgY2xzLmNvbnZlcnRfYXN5bmNfdG9fc3luYyh0
ZXN0KSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY29udmVydF9hc3luY190b19zeW5j
KHRlc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29udmVydCBhIHRlc3QgY29yb3V0aW5lIHRv
IGEgdGVzdCBmdW5jdGlvbi4KKworICAgICAgICAiIiIKKworICAgICAgICBAZnVuY3Rvb2xzLndy
YXBzKHRlc3QpCisgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRlc3Qoc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKSkKKworICAgICAgICByZXR1cm4gdGVzdF9mdW5jCisKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLmxv
b3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKKyAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRf
bG9vcChzZWxmLmxvb3ApCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYu
bG9vcC5jbG9zZSgpCisgICAgICAgIHN1cGVyKCkudGVhckRvd24oKQorCisgICAgZGVmIHJ1bl9s
b29wX29uY2Uoc2VsZik6CisgICAgICAgICMgUHJvY2VzcyBjYWxsYmFja3Mgc2NoZWR1bGVkIHdp
dGggY2FsbF9zb29uIGJ5IGFwcGVuZGluZyBhIGNhbGxiYWNrCisgICAgICAgICMgdG8gc3RvcCB0
aGUgZXZlbnQgbG9vcCB0aGVuIHJ1bm5pbmcgaXQgdW50aWwgaXQgaGl0cyB0aGF0IGNhbGxiYWNr
LgorICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29uKHNlbGYubG9vcC5zdG9wKQorICAgICAgICBz
ZWxmLmxvb3AucnVuX2ZvcmV2ZXIoKQorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIK
KyAgICBkZWYgYXNzZXJ0Tm9Mb2dzKHNlbGYsIGxvZ2dlcj0id2Vic29ja2V0cyIsIGxldmVsPWxv
Z2dpbmcuRVJST1IpOgorICAgICAgICAiIiIKKyAgICAgICAgTm8gbWVzc2FnZSBpcyBsb2dnZWQg
b24gdGhlIGdpdmVuIGxvZ2dlciB3aXRoIGF0IGxlYXN0IHRoZSBnaXZlbiBsZXZlbC4KKworICAg
ICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydExvZ3MobG9nZ2VyLCBsZXZlbCkgYXMg
bG9nczoKKyAgICAgICAgICAgICMgV2Ugd2FudCB0byB0ZXN0IHRoYXQgbm8gbG9nIG1lc3NhZ2Ug
aXMgZW1pdHRlZAorICAgICAgICAgICAgIyBidXQgYXNzZXJ0TG9ncyBleHBlY3RzIGF0IGxlYXN0
IG9uZSBsb2cgbWVzc2FnZS4KKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlciku
bG9nKGxldmVsLCAiZHVtbXkiKQorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBsZXZlbF9u
YW1lID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUobGV2ZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobG9ncy5vdXRwdXQsIFtmIntsZXZlbF9uYW1lfTp7bG9nZ2VyfTpkdW1teSJdKQorCisgICAg
ZGVmIGFzc2VydERlcHJlY2F0aW9uV2FybmluZ3Moc2VsZiwgcmVjb3JkZWRfd2FybmluZ3MsIGV4
cGVjdGVkX3dhcm5pbmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHJlY29yZGVkIGRl
cHJlY2F0aW9uIHdhcm5pbmdzIG1hdGNoIGEgbGlzdCBvZiBleHBlY3RlZCBtZXNzYWdlcy4KKwor
ICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjb3JkZWRfd2Fybmlu
Z3MpLCBsZW4oZXhwZWN0ZWRfd2FybmluZ3MpKQorICAgICAgICBmb3IgcmVjb3JkZWQsIGV4cGVj
dGVkIGluIHppcChyZWNvcmRlZF93YXJuaW5ncywgZXhwZWN0ZWRfd2FybmluZ3MpOgorICAgICAg
ICAgICAgYWN0dWFsID0gcmVjb3JkZWQubWVzc2FnZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHIoYWN0dWFsKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoYWN0dWFsKSwgRGVwcmVjYXRpb25XYXJuaW5nKQorCisKKyMgVW5pdCBmb3IgdGltZW91
dHMuIE1heSBiZSBpbmNyZWFzZWQgb24gc2xvdyBtYWNoaW5lcyBieSBzZXR0aW5nIHRoZQorIyBX
RUJTT0NLRVRTX1RFU1RTX1RJTUVPVVRfRkFDVE9SIGVudmlyb25tZW50IHZhcmlhYmxlLgorTVMg
PSAwLjAwMSAqIGludChvcy5lbnZpcm9uLmdldCgiV0VCU09DS0VUU19URVNUU19USU1FT1VUX0ZB
Q1RPUiIsIDEpKQorCisjIGFzeW5jaW8ncyBkZWJ1ZyBtb2RlIGhhcyBhIDEweCBwZXJmb3JtYW5j
ZSBwZW5hbHR5IGZvciB0aGlzIHRlc3Qgc3VpdGUuCitpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9O
QVNZTkNJT0RFQlVHIik6ICAjIHByYWdtYTogbm8gY292ZXIKKyAgICBNUyAqPSAxMAorCisjIEVu
c3VyZSB0aGF0IHRpbWVvdXRzIGFyZSBsYXJnZXIgdGhhbiB0aGUgY2xvY2sncyByZXNvbHV0aW9u
IChmb3IgV2luZG93cykuCitNUyA9IG1heChNUywgMi41ICogdGltZS5nZXRfY2xvY2tfaW5mbygi
bW9ub3RvbmljIikucmVzb2x1dGlvbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2Vic29ja2V0cy90b3gu
aW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJzb2NrZXRzL3RveC5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi44MjVlMzQwNjFmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYnNv
Y2tldHMvdG94LmluaQpAQCAtMCwwICsxLDI4IEBACitbdG94XQorZW52bGlzdCA9IHB5MzYscHkz
NyxweTM4LGNvdmVyYWdlLGJsYWNrLGZsYWtlOCxpc29ydCxteXB5CisKK1t0ZXN0ZW52XQorY29t
bWFuZHMgPSBweXRob24gLVcgZGVmYXVsdCAtbSB1bml0dGVzdCB7cG9zYXJnc30KKworW3Rlc3Rl
bnY6Y292ZXJhZ2VdCitjb21tYW5kcyA9CisgICAgcHl0aG9uIC1tIGNvdmVyYWdlIGVyYXNlCisg
ICAgcHl0aG9uIC1XIGRlZmF1bHQgLW0gY292ZXJhZ2UgcnVuIC1tIHVuaXR0ZXN0IHtwb3Nhcmdz
fQorICAgIHB5dGhvbiAtbSBjb3ZlcmFnZSByZXBvcnQgLS1zaG93LW1pc3NpbmcgLS1mYWlsLXVu
ZGVyPTEwMAorZGVwcyA9IGNvdmVyYWdlCisKK1t0ZXN0ZW52OmJsYWNrXQorY29tbWFuZHMgPSBi
bGFjayAtLWNoZWNrIHNyYyB0ZXN0cworZGVwcyA9IGJsYWNrCisKK1t0ZXN0ZW52OmZsYWtlOF0K
K2NvbW1hbmRzID0gZmxha2U4IHNyYyB0ZXN0cworZGVwcyA9IGZsYWtlOAorCitbdGVzdGVudjpp
c29ydF0KK2NvbW1hbmRzID0gaXNvcnQgLS1jaGVjay1vbmx5IC0tcmVjdXJzaXZlIHNyYyB0ZXN0
cworZGVwcyA9IGlzb3J0CisKK1t0ZXN0ZW52Om15cHldCitjb21tYW5kcyA9IG15cHkgLS1zdHJp
Y3Qgc3JjCitkZXBzID0gbXlweQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwLy5mbGFrZTggYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3ppcHAvLmZsYWtlOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc5
MGMxMDlmZGJlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC8uZmxha2U4CkBAIC0wLDAg
KzEsOSBAQAorW2ZsYWtlOF0KK21heC1saW5lLWxlbmd0aCA9IDg4CitpZ25vcmUgPQorCSMgVzUw
MyB2aW9sYXRlcyBzcGVjIGh0dHBzOi8vZ2l0aHViLmNvbS9QeUNRQS9weWNvZGVzdHlsZS9pc3N1
ZXMvNTEzCisJVzUwMworCSMgVzUwNCBoYXMgaXNzdWVzIGh0dHBzOi8vZ2l0aHViLmNvbS9PQ0Ev
bWFpbnRhaW5lci1xdWFsaXR5LXRvb2xzL2lzc3Vlcy81NDUKKwlXNTA0CisJIyBCbGFjayBjcmVh
dGVzIHdoaXRlc3BhY2UgYmVmb3JlIGNvbG9uCisJRTIwMwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBw
Ly5wcmUtY29tbWl0LWNvbmZpZy55YW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwLy5wcmUtY29tbWl0LWNvbmZpZy55
YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTIyZDk0MjQ3YTBk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwLy5wcmUtY29tbWl0LWNvbmZpZy55YW1sCkBA
IC0wLDAgKzEsNSBAQAorcmVwb3M6CistIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWJ2L2Js
YWNrCisgIHJldjogMTguOWIwCisgIGhvb2tzOgorICAtIGlkOiBibGFjawpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwLy5yZWFkdGhlZG9jcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvLnJlYWR0aGVkb2NzLnltbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhhZTQ0Njg0MjhiZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC8ucmVhZHRoZWRvY3MueW1sCkBAIC0wLDAgKzEsNSBA
QAorcHl0aG9uOgorICB2ZXJzaW9uOiAzCisgIGV4dHJhX3JlcXVpcmVtZW50czoKKyAgICAtIGRv
Y3MKKyAgcGlwX2luc3RhbGw6IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC8udHJhdmlzLnlt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvemlwcC8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmI3ZDhmM2FjOWQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC8udHJh
dmlzLnltbApAQCAtMCwwICsxLDI4IEBACitkaXN0OiB4ZW5pYWwKK2xhbmd1YWdlOiBweXRob24K
KworcHl0aG9uOgorLSAyLjcKKy0gMy42CistICZsYXRlc3RfcHkzIDMuOAorCitqb2JzOgorICBm
YXN0X2ZpbmlzaDogdHJ1ZQorICBpbmNsdWRlOgorICAtIHN0YWdlOiBkZXBsb3kKKyAgICBpZjog
dGFnIElTIHByZXNlbnQKKyAgICBweXRob246ICpsYXRlc3RfcHkzCisgICAgYmVmb3JlX3Njcmlw
dDogc2tpcAorICAgIHNjcmlwdDogdG94IC1lIHJlbGVhc2UKKworY2FjaGU6IHBpcAorCitpbnN0
YWxsOgorLSBwaXAgaW5zdGFsbCB0b3ggdG94LXZlbnYKKworYmVmb3JlX3NjcmlwdDoKKyAgIyBE
aXNhYmxlIElQdjYuIFJlZiB0cmF2aXMtY2kvdHJhdmlzLWNpIzgzNjEKKyAgLSBpZiBbICIke1RS
QVZJU19PU19OQU1FfSIgPT0gImxpbnV4IiBdOyB0aGVuCisgICAgICBzdWRvIHNoIC1jICdlY2hv
IDAgPiAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9hbGwvZGlzYWJsZV9pcHY2JzsKKyAgICBmaQor
c2NyaXB0OiB0b3gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9DSEFOR0VTLnJzdCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlw
cC9DSEFOR0VTLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0
NjRhNjMyNGI3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9DSEFOR0VTLnJzdApAQCAt
MCwwICsxLDEwMCBAQAordjEuMi4wCis9PT09PT0KKworIzQ0OiBgYHppcHAuUGF0aC5vcGVuKClg
YCBub3cgc3VwcG9ydHMgYSBjb21wYXRpYmxlIHNpZ25hdHVyZQorYXMgYGBwYXRobGliLlBhdGgu
b3BlbigpYGAsIGFjY2VwdGluZyB0ZXh0IChkZWZhdWx0KSBvciBiaW5hcnkKK21vZGVzIGFuZCBz
b2xpY2l0aW5nIGtleXdvcmQgcGFyYW1ldGVycyBwYXNzZWQgdGhyb3VnaCB0bworYGBpby5UZXh0
SU9XcmFwcGVyYGAgKGVuY29kaW5nLCBuZXdsaW5lLCBldGMpLiBUaGUgc3RyZWFtIGlzCitvcGVu
ZWQgaW4gdGV4dC1tb2RlIGJ5IGRlZmF1bHQgbm93LiBgYG9wZW5gYCBubworbG9uZ2VyIGFjY2Vw
dHMgYGBwd2RgYCBhcyBhIHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kIGRvZXMgbm90CithY2NlcHQg
dGhlIGBgZm9yY2VfemlwNjRgYCBwYXJhbWV0ZXIgYXQgYWxsLiBUaGlzIGNoYW5nZSBpcworYSBi
YWNrd2FyZC1pbmNvbXBhdGlibGUgY2hhbmdlIGZvciB0aGF0IHNpbmdsZSBmdW5jdGlvbi4KKwor
djEuMS4xCis9PT09PT0KKworIzQzOiBSZXN0b3JlZCBwZXJmb3JtYW5jZSBvZiBpbXBsaWNpdCBk
aXIgY29tcHV0YXRpb24uCisKK3YxLjEuMAorPT09PT09CisKKyMzMjogRm9yIHJlYWQtb25seSB6
aXAgZmlsZXMsIGNvbXBsZXhpdHkgb2YgYGAuZXhpc3RzYGAgYW5kCitgYGpvaW5wYXRoYGAgaXMg
bm93IGNvbnN0YW50IHRpbWUgaW5zdGVhZCBvZiBgYE8obilgYCwgcHJldmVudGluZworcXVhZHJh
dGljIHRpbWUgaW4gY29tbW9uIHVzZS1jYXNlcyBhbmQgcmVuZGVyaW5nIGxhcmdlCit6aXAgZmls
ZXMgdW51c2FibGUgZm9yIFBhdGguIEJpZyB0aGFua3MgdG8gQmVuankgV2VpbmJlcmdlcgorZm9y
IHRoZSBidWcgcmVwb3J0IGFuZCBjb250cmlidXRlZCBmaXggKCMzMykuCisKK3YxLjAuMAorPT09
PT09CisKK1JlLXJlbGVhc2Ugb2YgMC42IHRvIGNvcnJlc3BvbmQgd2l0aCByZWxlYXNlIGFzIGZv
dW5kIGluCitQeXRob24gMy44LgorCit2MC42LjAKKz09PT09PQorCisjMTI6IFdoZW4gYWRkaW5n
IGltcGxpY2l0IGRpcnMsIGVuc3VyZSB0aGF0IGFuY2VzdHJhbCBkaXJlY3RvcmllcworYXJlIGFk
ZGVkIGFuZCB0aGF0IGR1cGxpY2F0ZXMgYXJlIGV4Y2x1ZGVkLgorCitUaGUgbGlicmFyeSBub3cg
cmVsaWVzIG9uCitgbW9yZV9pdGVydG9vbHMgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9tb3Jl
X2l0ZXJ0b29scz5gXy4KKwordjAuNS4yCis9PT09PT0KKworIzc6IFBhcmVudCBvZiBhIGRpcmVj
dG9yeSBub3cgYWN0dWFsbHkgcmV0dXJucyB0aGUgcGFyZW50LgorCit2MC41LjEKKz09PT09PQor
CitEZWNsYXJlZCBwYWNrYWdlIGFzIGJhY2twb3J0LgorCit2MC41LjAKKz09PT09PQorCitBZGQg
YGAuam9pbnBhdGgoKWBgIG1ldGhvZCBhbmQgYGAucGFyZW50YGAgcHJvcGVydHkuCisKK05vdyBh
IGJhY2twb3J0IHJlbGVhc2Ugb2YgdGhlIGBgemlwZmlsZS5QYXRoYGAgY2xhc3MuCisKK3YwLjQu
MAorPT09PT09CisKKyM0OiBBZGQgc3VwcG9ydCBmb3IgemlwIGZpbGVzIHdpdGggaW1wbGllZCBk
aXJlY3Rvcmllcy4KKwordjAuMy4zCis9PT09PT0KKworIzM6IEZpeCBpc3N1ZSB3aGVyZSBgYC5u
YW1lYGAgb24gYSBkaXJlY3Rvcnkgd2FzIGVtcHR5LgorCit2MC4zLjIKKz09PT09PQorCisjMjog
Rml4IFR5cGVFcnJvciBvbiBQeXRob24gMi43IHdoZW4gY2xhc3NpYyBkaXZpc2lvbiBpcyB1c2Vk
LgorCit2MC4zLjEKKz09PT09PQorCisjMTogRml4IFR5cGVFcnJvciBvbiBQeXRob24gMy41IHdo
ZW4gam9pbmluZyB0byBhIHBhdGgtbGlrZSBvYmplY3QuCisKK3YwLjMuMAorPT09PT09CisKK0Fk
ZCBzdXBwb3J0IGZvciBjb25zdHJ1Y3RpbmcgYSBgYHppcHAuUGF0aGBgIGZyb20gYW55IHBhdGgt
bGlrZQorb2JqZWN0LgorCitgYHppcHAuUGF0aGBgIGlzIG5vdyBhIG5ldy1zdHlsZSBjbGFzcyBv
biBQeXRob24gMi43LgorCit2MC4yLjEKKz09PT09PQorCitGaXggaXNzdWUgd2l0aCBgYF9fc3Ry
X19gYC4KKwordjAuMi4wCis9PT09PT0KKworRHJvcCByZWxpYW5jZSBvbiBmdXR1cmUtZnN0cmlu
Z3MuCisKK3YwLjEuMAorPT09PT09CisKK0luaXRpYWwgcmVsZWFzZSB3aXRoIGJhc2ljIGZ1bmN0
aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvTElDRU5TRSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9MSUNF
TlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWU3OTVhNjFmMzAy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL0xJQ0VOU0UKQEAgLTAsMCArMSw3IEBACitD
b3B5cmlnaHQgSmFzb24gUi4gQ29vbWJzCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl
IiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy
Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL1BLRy1J
TkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS96aXBwL1BLRy1JTkZPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMzNlZjFjZjAxYzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL1BLRy1J
TkZPCkBAIC0wLDAgKzEsMzkgQEAKK01ldGFkYXRhLVZlcnNpb246IDIuMQorTmFtZTogemlwcAor
VmVyc2lvbjogMS4yLjAKK1N1bW1hcnk6IEJhY2twb3J0IG9mIHBhdGhsaWItY29tcGF0aWJsZSBv
YmplY3Qgd3JhcHBlciBmb3IgemlwIGZpbGVzCitIb21lLXBhZ2U6IGh0dHBzOi8vZ2l0aHViLmNv
bS9qYXJhY28vemlwcAorQXV0aG9yOiBKYXNvbiBSLiBDb29tYnMKK0F1dGhvci1lbWFpbDogamFy
YWNvQGphcmFjby5jb20KK0xpY2Vuc2U6IFVOS05PV04KK0Rlc2NyaXB0aW9uOiAuLiBpbWFnZTo6
IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3ppcHAuc3ZnCisgICAgICAgICAgIDp0YXJn
ZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC96aXBwCisgICAgICAgIAorICAgICAgICAuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL3ppcHAuc3ZnCisg
ICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHJhdmlz
L2phcmFjby96aXBwL21hc3Rlci5zdmcKKyAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2
aXMtY2kub3JnL2phcmFjby96aXBwCisgICAgICAgIAorICAgICAgICAuLiBpbWFnZTo6IGh0dHBz
Oi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAwMDAwMC5zdmcKKyAg
ICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2FtYnYvYmxhY2sKKyAgICAgICAg
ICAgOmFsdDogQ29kZSBzdHlsZTogQmxhY2sKKyAgICAgICAgCisgICAgICAgIC4uIGltYWdlOjog
aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9hcHB2ZXlvci9jaS9qYXJhY28vemlwcC9tYXN0ZXIuc3Zn
CisgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvamFy
YWNvL3ppcHAvYnJhbmNoL21hc3RlcgorICAgICAgICAKKyAgICAgICAgLi4gLi4gaW1hZ2U6OiBo
dHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy96aXBwL2JhZGdlLz92ZXJzaW9uPWxhdGVz
dAorICAgICAgICAuLiAgICA6dGFyZ2V0OiBodHRwczovL3ppcHAucmVhZHRoZWRvY3MuaW8vZW4v
bGF0ZXN0Lz9iYWRnZT1sYXRlc3QKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBBIHBhdGhs
aWItY29tcGF0aWJsZSBaaXBmaWxlIG9iamVjdCB3cmFwcGVyLiBBIGJhY2twb3J0IG9mIHRoZQor
ICAgICAgICBgUGF0aCBvYmplY3QgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuOC9saWJyYXJ5
L3ppcGZpbGUuaHRtbCNwYXRoLW9iamVjdHM+YF8uCisgICAgICAgIAorUGxhdGZvcm06IFVOS05P
V04KK0NsYXNzaWZpZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFi
bGUKK0NsYXNzaWZpZXI6IEludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMKK0NsYXNzaWZp
ZXI6IExpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlCitDbGFzc2lmaWVyOiBQ
cm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43CitDbGFzc2lmaWVyOiBQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworUmVxdWlyZXMtUHl0aG9uOiA+PTIuNworUHJv
dmlkZXMtRXh0cmE6IHRlc3RpbmcKK1Byb3ZpZGVzLUV4dHJhOiBkb2NzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3ppcHAvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2UxMjhhMzJiYTMxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS96aXBwL1JFQURNRS5yc3QKQEAgLTAsMCArMSwyMSBAQAorLi4gaW1hZ2U6OiBodHRw
czovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi96aXBwLnN2ZworICAgOnRhcmdldDogaHR0cHM6Ly9w
eXBpLm9yZy9wcm9qZWN0L3ppcHAKKworLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlv
L3B5cGkvcHl2ZXJzaW9ucy96aXBwLnN2ZworCisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVs
ZHMuaW8vdHJhdmlzL2phcmFjby96aXBwL21hc3Rlci5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8v
dHJhdmlzLWNpLm9yZy9qYXJhY28vemlwcAorCisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVs
ZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAwMDAwMC5zdmcKKyAgIDp0YXJnZXQ6IGh0
dHBzOi8vZ2l0aHViLmNvbS9hbWJ2L2JsYWNrCisgICA6YWx0OiBDb2RlIHN0eWxlOiBCbGFjawor
CisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYXBwdmV5b3IvY2kvamFyYWNvL3pp
cHAvbWFzdGVyLnN2ZworICAgOnRhcmdldDogaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVj
dC9qYXJhY28vemlwcC9icmFuY2gvbWFzdGVyCisKKy4uIC4uIGltYWdlOjogaHR0cHM6Ly9yZWFk
dGhlZG9jcy5vcmcvcHJvamVjdHMvemlwcC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKy4uICAgIDp0
YXJnZXQ6IGh0dHBzOi8vemlwcC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvP2JhZGdlPWxhdGVz
dAorCisKK0EgcGF0aGxpYi1jb21wYXRpYmxlIFppcGZpbGUgb2JqZWN0IHdyYXBwZXIuIEEgYmFj
a3BvcnQgb2YgdGhlCitgUGF0aCBvYmplY3QgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuOC9s
aWJyYXJ5L3ppcGZpbGUuaHRtbCNwYXRoLW9iamVjdHM+YF8uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3pp
cHAvYXBwdmV5b3IueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2FwcHZleW9yLnltbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzNWFhMjdkNjg0MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvemlwcC9hcHB2ZXlvci55bWwKQEAgLTAsMCArMSwyNCBAQAorZW52aXJvbm1lbnQ6CisK
KyAgQVBQVkVZT1I6IHRydWUKKworICBtYXRyaXg6CisgICAgLSBQWVRIT046ICJDOlxcUHl0aG9u
MzYteDY0IgorICAgIC0gUFlUSE9OOiAiQzpcXFB5dGhvbjI3LXg2NCIKKworaW5zdGFsbDoKKyAg
IyBzeW1saW5rIHB5dGhvbiBmcm9tIGEgZGlyZWN0b3J5IHdpdGggYSBzcGFjZQorICAtICJta2xp
bmsgL2QgXCJDOlxcUHJvZ3JhbSBGaWxlc1xcUHl0aG9uXCIgJVBZVEhPTiUiCisgIC0gIlNFVCBQ
WVRIT049XCJDOlxcUHJvZ3JhbSBGaWxlc1xcUHl0aG9uXCIiCisgIC0gIlNFVCBQQVRIPSVQWVRI
T04lOyVQWVRIT04lXFxTY3JpcHRzOyVQQVRIJSIKKworYnVpbGQ6IG9mZgorCitjYWNoZToKKyAg
LSAnJUxPQ0FMQVBQREFUQSVccGlwXENhY2hlJworCit0ZXN0X3NjcmlwdDoKKyAgLSAicHl0aG9u
IC1tIHBpcCBpbnN0YWxsIC1VIHRveCB0b3gtdmVudiB2aXJ0dWFsZW52IgorICAtICJ0b3giCisK
K3ZlcnNpb246ICd7YnVpbGR9JwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2NvbmZ0ZXN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwL2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZTY5ZGUyOWJiMmQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvZG9jcy9jb25mLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwL2RvY3MvY29uZi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQxYjUzNTU3ZmIyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9kb2NzL2Nv
bmYucHkKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAtKi0gY29k
aW5nOiB1dGYtOCAtKi0KKworZXh0ZW5zaW9ucyA9IFsnc3BoaW54LmV4dC5hdXRvZG9jJywgJ2ph
cmFjby5wYWNrYWdpbmcuc3BoaW54JywgJ3JzdC5saW5rZXInXQorCittYXN0ZXJfZG9jID0gImlu
ZGV4IgorCitsaW5rX2ZpbGVzID0geworICAgICcuLi9DSEFOR0VTLnJzdCc6IGRpY3QoCisgICAg
ICAgIHVzaW5nPWRpY3QoR0g9J2h0dHBzOi8vZ2l0aHViLmNvbScpLAorICAgICAgICByZXBsYWNl
PVsKKyAgICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgICAgcGF0dGVybj1yJyhJc3N1ZSAj
fFxCIykoP1A8aXNzdWU+XGQrKScsCisgICAgICAgICAgICAgICAgdXJsPSd7cGFja2FnZV91cmx9
L2lzc3Vlcy97aXNzdWV9JywKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBkaWN0KAorICAg
ICAgICAgICAgICAgIHBhdHRlcm49cideKD9tKSgoP1A8c2NtX3ZlcnNpb24+dj9cZCsoXC5cZCsp
ezEsMn0pKVxuWy09XStcbicsCisgICAgICAgICAgICAgICAgd2l0aF9zY209J3t0ZXh0fVxue3Jl
dlt0aW1lc3RhbXBdOiVkICViICVZfVxuJywKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBk
aWN0KAorICAgICAgICAgICAgICAgIHBhdHRlcm49cidQRVBbLSBdKD9QPHBlcF9udW1iZXI+XGQr
KScsCisgICAgICAgICAgICAgICAgdXJsPSdodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBz
L3BlcC17cGVwX251bWJlcjowPjR9LycsCisgICAgICAgICAgICApLAorICAgICAgICBdLAorICAg
ICkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC9kb2NzL2hpc3RvcnkucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBw
L2RvY3MvaGlzdG9yeS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li44ZTIxNzUwM2JhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvZG9jcy9oaXN0b3J5
LnJzdApAQCAtMCwwICsxLDggQEAKKzp0b2NkZXB0aDogMgorCisuLiBfY2hhbmdlczoKKworSGlz
dG9yeQorKioqKioqKgorCisuLiBpbmNsdWRlOjogLi4vQ0hBTkdFUyAobGlua3MpLnJzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS96aXBwL2RvY3MvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2RvY3MvaW5kZXgu
cnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmY0OWJmOWRjNzA2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL2RvY3MvaW5kZXgucnN0CkBAIC0wLDAgKzEs
MjIgQEAKK1dlbGNvbWUgdG8gemlwcCBkb2N1bWVudGF0aW9uIQorPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMQor
CisgICBoaXN0b3J5CisKKworLi4gYXV0b21vZHVsZTo6IHppcHAKKyAgICA6bWVtYmVyczoKKyAg
ICA6dW5kb2MtbWVtYmVyczoKKyAgICA6c2hvdy1pbmhlcml0YW5jZToKKworCitJbmRpY2VzIGFu
ZCB0YWJsZXMKKz09PT09PT09PT09PT09PT09PQorCisqIDpyZWY6YGdlbmluZGV4YAorKiA6cmVm
OmBtb2RpbmRleGAKKyogOnJlZjpgc2VhcmNoYAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvcHlw
cm9qZWN0LnRvbWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvcHlwcm9qZWN0LnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYWZjOGMzM2I3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3ppcHAvcHlwcm9qZWN0LnRvbWwKQEAgLTAsMCArMSw2IEBACitbYnVpbGQtc3lzdGVtXQor
cmVxdWlyZXMgPSBbInNldHVwdG9vbHM+PTM0LjQiLCAid2hlZWwiLCAic2V0dXB0b29sc19zY20+
PTEuMTUiXQorYnVpbGQtYmFja2VuZCA9ICJzZXR1cHRvb2xzLmJ1aWxkX21ldGEiCisKK1t0b29s
LmJsYWNrXQorc2tpcC1zdHJpbmctbm9ybWFsaXphdGlvbiA9IHRydWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvemlwcC9zZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvc2V0dXAuY2ZnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWY0YWJkMjQ4YTQzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwL3NldHVwLmNmZwpAQCAtMCwwICsxLDQ1IEBACitbYmRpc3Rfd2hlZWxdCit1bml2
ZXJzYWwgPSAxCisKK1ttZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKK25hbWUgPSB6
aXBwCithdXRob3IgPSBKYXNvbiBSLiBDb29tYnMKK2F1dGhvcl9lbWFpbCA9IGphcmFjb0BqYXJh
Y28uY29tCitkZXNjcmlwdGlvbiA9IEJhY2twb3J0IG9mIHBhdGhsaWItY29tcGF0aWJsZSBvYmpl
Y3Qgd3JhcHBlciBmb3IgemlwIGZpbGVzCitsb25nX2Rlc2NyaXB0aW9uID0gZmlsZTpSRUFETUUu
cnN0Cit1cmwgPSBodHRwczovL2dpdGh1Yi5jb20vamFyYWNvL3ppcHAKK2NsYXNzaWZpZXJzID0g
CisJRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJsZQorCUludGVuZGVk
IEF1ZGllbmNlIDo6IERldmVsb3BlcnMKKwlMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQg
TGljZW5zZQorCVByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcKKwlQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworCitbb3B0aW9uc10KK3B5X21vZHVsZXMgPSB6
aXBwCitwYWNrYWdlcyA9IGZpbmQ6CitpbmNsdWRlX3BhY2thZ2VfZGF0YSA9IHRydWUKK3B5dGhv
bl9yZXF1aXJlcyA9ID49Mi43CitpbnN0YWxsX3JlcXVpcmVzID0gCisJY29udGV4dGxpYjI7IHB5
dGhvbl92ZXJzaW9uIDwgIjMuNCIKK3NldHVwX3JlcXVpcmVzID0gc2V0dXB0b29sc19zY20gPj0g
MS4xNS4wCisKK1tvcHRpb25zLmV4dHJhc19yZXF1aXJlXQordGVzdGluZyA9IAorCQorCXBhdGhs
aWIyCisJdW5pdHRlc3QyCisJamFyYWNvLml0ZXJ0b29scworCWZ1bmMtdGltZW91dAorZG9jcyA9
IAorCXNwaGlueAorCWphcmFjby5wYWNrYWdpbmcgPj0gMy4yCisJcnN0LmxpbmtlciA+PSAxLjkK
KworW29wdGlvbnMuZW50cnlfcG9pbnRzXQorCitbZWdnX2luZm9dCit0YWdfYnVpbGQgPSAKK3Rh
Z19kYXRlID0gMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAv
c2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MjdlOTU1
ZmNkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvc2V0dXAucHkKQEAgLTAsMCArMSw2
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IHNldHVwdG9vbHMKKworaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzZXR1cHRvb2xzLnNldHVwKHVzZV9zY21fdmVyc2lv
bj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3NrZWxldG9uLm1kIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3Nr
ZWxldG9uLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTJiOTdm
MDliNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3NrZWxldG9uLm1kCkBAIC0wLDAg
KzEsMTM3IEBACisjIE92ZXJ2aWV3CisKK1RoaXMgcHJvamVjdCBpcyBtZXJnZWQgd2l0aCBbc2tl
bGV0b25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vc2tlbGV0b24pLiBXaGF0IGlzIHNrZWxl
dG9uPyBJdCdzIHRoZSBzY2FmZm9sZGluZyBvZiBhIFB5dGhvbiBwcm9qZWN0IGphcmFjbyBbaW50
cm9kdWNlZCBpbiBoaXMgYmxvZ10oaHR0cHM6Ly9ibG9nLmphcmFjby5jb20vYS1wcm9qZWN0LXNr
ZWxldG9uLWZvci1weXRob24tcHJvamVjdHMvKS4gSXQgc2Vla3MgdG8gcHJvdmlkZSBhIG1lYW5z
IHRvIHJlLXVzZSB0ZWNobmlxdWVzIGFuZCBpbmhlcml0IGFkdmFuY2VzIHdoZW4gbWFuYWdpbmcg
cHJvamVjdHMgZm9yIGRpc3RyaWJ1dGlvbi4KKworIyMgQW4gU0NNIE1hbmFnZWQgQXBwcm9hY2gK
KworV2hpbGUgbWFpbnRhaW5pbmcgZG96ZW5zIG9mIHByb2plY3RzIGluIFB5UEksIGphcmFjbyBk
ZXJpdmVzIGJlc3QgcHJhY3RpY2VzIGZvciBwcm9qZWN0IGRpc3RyaWJ1dGlvbiBhbmQgcHVibGlz
aGVzIHRoZW0gaW4gdGhlIFtza2VsZXRvbiByZXBvXShodHRwczovL2dpdGh1Yi5jb20vamFyYWNv
L3NrZWxldG9uKSwgYSBnaXQgcmVwbyBjYXB0dXJpbmcgdGhlIGV2b2x1dGlvbiBhbmQgY3VsbWlu
YXRpb24gb2YgdGhlc2UgYmVzdCBwcmFjdGljZXMuCisKK0l0J3MgaW50ZW5kZWQgdG8gYmUgdXNl
ZCBieSBhIG5ldyBvciBleGlzdGluZyBwcm9qZWN0IHRvIGFkb3B0IHRoZXNlIHByYWN0aWNlcyBh
bmQgaG9uZWQgYW5kIHByb3ZlbiB0ZWNobmlxdWVzLiBBZG9wdGVycyBhcmUgZW5jb3VyYWdlZCB0
byB1c2UgdGhlIHByb2plY3QgZGlyZWN0bHkgYW5kIG1haW50YWluIGEgc21hbGwgZGV2aWF0aW9u
IGZyb20gdGhlIHRlY2huaXF1ZSwgbWFrZSB0aGVpciBvd24gZm9yayBmb3IgbW9yZSBzdWJzdGFu
dGlhbCBjaGFuZ2VzIHVuaXF1ZSB0byB0aGVpciBlbnZpcm9ubWVudCBvciBwcmVmZXJlbmNlcywg
b3Igc2ltcGx5IGFkb3B0IHRoZSBza2VsZXRvbiBvbmNlIGFuZCBhYmFuZG9uIGl0IHRoZXJlYWZ0
ZXIuCisKK1RoZSBwcmltYXJ5IGFkdmFudGFnZSB0byB1c2luZyBhbiBTQ00gZm9yIG1haW50YWlu
aW5nIHRoZXNlIHRlY2huaXF1ZXMgaXMgdGhhdCB0aG9zZSB0b29scyBoZWxwIGZhY2lsaXRhdGUg
dGhlIG1lcmdlIGJldHdlZW4gdGhlIHRlbXBsYXRlIGFuZCBpdHMgYWRvcHRpbmcgcHJvamVjdHMu
CisKK0Fub3RoZXIgYWR2YW50YWdlIHRvIHVzaW5nIGFuIFNDTS1tYW5hZ2VkIGFwcHJvYWNoIGlz
IHRoYXQgdG9vbHMgbGlrZSBHaXRIdWIgcmVjb2duaXplIHRoYXQgYSBjaGFuZ2UgaW4gdGhlIHNr
ZWxldG9uIGlzIHRoZSBfc2FtZSBjaGFuZ2VfIGFjcm9zcyBhbGwgcHJvamVjdHMgdGhhdCBtZXJn
ZSB3aXRoIHRoYXQgc2tlbGV0b24uIFdpdGhvdXQgdGhlIGFuY2VzdHJ5LCB3aXRoIGEgdHJhZGl0
aW9uYWwgY29weS9wYXN0ZSBhcHByb2FjaCwgYSBbY29tbWl0IGxpa2UgdGhpc10oaHR0cHM6Ly9n
aXRodWIuY29tL2phcmFjby9za2VsZXRvbi9jb21taXQvMTJlZWQxMzI2ZTFiYzI2Y2UyNTZlN2Iz
ZjhjZDhkM2E1YmVhYjJkNSkgd291bGQgcHJvZHVjZSBub3RpZmljYXRpb25zIGluIHRoZSB1cHN0
cmVhbSBwcm9qZWN0IGlzc3VlIGZvciBlYWNoIGFuZCBldmVyeSBhcHBsaWNhdGlvbiwgYnV0IGJl
Y2F1c2UgaXQncyBjZW50cmFsaXplZCwgR2l0SHViIHByb3ZpZGVzIGp1c3QgdGhlIG9uZSBub3Rp
ZmljYXRpb24gd2hlbiB0aGUgY2hhbmdlIGlzIGFkZGVkIHRvIHRoZSBza2VsZXRvbi4KKworIyBV
c2FnZQorCisjIyBuZXcgcHJvamVjdHMKKworVG8gdXNlIHNrZWxldG9uIGZvciBhIG5ldyBwcm9q
ZWN0LCBzaW1wbHkgcHVsbCB0aGUgc2tlbGV0b24gaW50byBhIG5ldyBwcm9qZWN0OgorCitgYGAK
KyQgZ2l0IGluaXQgbXktbmV3LXByb2plY3QKKyQgY2QgbXktbmV3LXByb2plY3QKKyQgZ2l0IHB1
bGwgZ2g6Ly9qYXJhY28vc2tlbGV0b24KK2BgYAorCitOb3cgY3VzdG9taXplIHRoZSBwcm9qZWN0
IHRvIHN1aXQgeW91ciBpbmRpdmlkdWFsIHByb2plY3QgbmVlZHMuCisKKyMjIGV4aXN0aW5nIHBy
b2plY3RzCisKK0lmIHlvdSBoYXZlIGFuIGV4aXN0aW5nIHByb2plY3QsIHlvdSBjYW4gc3RpbGwg
aW5jb3Jwb3JhdGUgdGhlIHNrZWxldG9uIGJ5IG1lcmdpbmcgaXQgaW50byB0aGUgY29kZWJhc2Uu
CisKK2BgYAorJCBnaXQgbWVyZ2Ugc2tlbGV0b24gLS1hbGxvdy11bnJlbGF0ZWQtaGlzdG9yaWVz
CitgYGAKKworVGhlIGAtLWFsbG93LXVucmVsYXRlZC1oaXN0b3JpZXNgIGlzIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZSBoaXN0b3J5IGZyb20gdGhlIHNrZWxldG9uIHdhcyBwcmV2aW91c2x5IHVucmVs
YXRlZCB0byB0aGUgZXhpc3RpbmcgY29kZWJhc2UuIFJlc29sdmUgYW55IG1lcmdlIGNvbmZsaWN0
cyBhbmQgY29tbWl0IHRvIHRoZSBtYXN0ZXIsIGFuZCBub3cgdGhlIHByb2plY3QgaXMgYmFzZWQg
b24gdGhlIHNoYXJlZCBza2VsZXRvbi4KKworIyMgVXBkYXRpbmcKKworV2hlbmV2ZXIgYSBjaGFu
Z2UgaXMgbmVlZGVkIG9yIGRlc2lyZWQgZm9yIHRoZSBnZW5lcmFsIHRlY2huaXF1ZSBmb3IgcGFj
a2FnaW5nLCBpdCBjYW4gYmUgbWFkZSBpbiB0aGUgc2tlbGV0b24gcHJvamVjdCBhbmQgdGhlbiBt
ZXJnZWQgaW50byBlYWNoIG9mIHRoZSBkZXJpdmVkIHByb2plY3RzIGFzIG5lZWRlZCwgcmVjb21t
ZW5kZWQgYmVmb3JlIGVhY2ggcmVsZWFzZS4gQXMgYSByZXN1bHQsIGZlYXR1cmVzIGFuZCBiZXN0
IHByYWN0aWNlcyBmb3IgcGFja2FnaW5nIGFyZSBjZW50cmFsbHkgbWFpbnRhaW5lZCBhbmQgcmVh
ZGlseSB0cmlja2xlIGludG8gYSB3aG9sZSBzdWl0ZSBvZiBwYWNrYWdlcy4gVGhpcyB0ZWNobmlx
dWUgbG93ZXJzIHRoZSBhbW91bnQgb2YgdGVkaW91cyB3b3JrIG5lY2Vzc2FyeSB0byBjcmVhdGUg
b3IgbWFpbnRhaW4gYSBwcm9qZWN0LCBhbmQgY291cGxlZCB3aXRoIG90aGVyIHRlY2huaXF1ZXMg
bGlrZSBjb250aW51b3VzIGludGVncmF0aW9uIGFuZCBkZXBsb3ltZW50LCBsb3dlcnMgdGhlIGNv
c3Qgb2YgY3JlYXRpbmcgYW5kIG1haW50YWluaW5nIHJlZmluZWQgUHl0aG9uIHByb2plY3RzIHRv
IGp1c3QgYSBmZXcsIGZhbWlsaWFyIGdpdCBvcGVyYXRpb25zLgorCitUaGVyZWFmdGVyLCB0aGUg
dGFyZ2V0IHByb2plY3QgY2FuIG1ha2Ugd2hhdGV2ZXIgY3VzdG9taXphdGlvbnMgaXQgZGVlbXMg
cmVsZXZhbnQgdG8gdGhlIHNjYWZmb2xkaW5nLiBUaGUgcHJvamVjdCBtYXkgZXZlbiBhdCBzb21l
IHBvaW50IGRlY2lkZSB0aGF0IHRoZSBkaXZlcmdlbmNlIGlzIHRvbyBncmVhdCB0byBtZXJpdCBy
ZW5ld2VkIG1lcmdpbmcgd2l0aCB0aGUgb3JpZ2luYWwgc2tlbGV0b24uIFRoaXMgYXBwcm9hY2gg
YXBwbGllcyBtYXhpbWFsIGd1aWRhbmNlIHdoaWxlIGNyZWF0aW5nIG1pbmltYWwgY29uc3RyYWlu
dHMuCisKKyMgRmVhdHVyZXMKKworVGhlIGZlYXR1cmVzL3RlY2huaXF1ZXMgZW1wbG95ZWQgYnkg
dGhlIHNrZWxldG9uIGluY2x1ZGU6CisKKy0gUEVQIDUxNy81MTggYmFzZWQgYnVpbGQgcmVseWlu
ZyBvbiBzZXR1cHRvb2xzIGFzIHRoZSBidWlsZCB0b29sCistIHNldHVwdG9vbHMgZGVjbGFyYXRp
dmUgY29uZmlndXJhdGlvbiB1c2luZyBzZXR1cC5jZmcKKy0gdG94IGZvciBydW5uaW5nIHRlc3Rz
CistIEEgUkVBRE1FLnJzdCBhcyByZVN0cnVjdHVyZWRUZXh0IHdpdGggc29tZSBwb3B1bGFyIGJh
ZGdlcywgYnV0IHdpdGggcmVhZHRoZWRvY3MgYW5kIGFwcHZleW9yIGJhZGdlcyBjb21tZW50ZWQg
b3V0CistIEEgQ0hBTkdFUy5yc3QgZmlsZSBpbnRlbmRlZCBmb3IgcHVibGlzaGluZyByZWxlYXNl
IG5vdGVzIGFib3V0IHRoZSBwcm9qZWN0CistIFVzZSBvZiBbYmxhY2tdKGh0dHBzOi8vYmxhY2su
cmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlLykgZm9yIGNvZGUgZm9ybWF0dGluZyAoZGlzYWJsZWQg
b24gdW5zdXBwb3J0ZWQgUHl0aG9uIDMuNSBhbmQgZWFybGllcikKKworIyMgUGFja2FnaW5nIENv
bnZlbnRpb25zCisKK0EgcHlwcm9qZWN0LnRvbWwgaXMgaW5jbHVkZWQgdG8gZW5hYmxlIFBFUCA1
MTcgYW5kIFBFUCA1MTggY29tcGF0aWJpbGl0eSBhbmQgZGVjbGFyZXMgdGhlIHJlcXVpcmVtZW50
cyBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlIHByb2plY3Qgb24gc2V0dXB0b29scyAoYSBtaW5pbXVt
IHZlcnNpb24gY29tcGF0aWJsZSB3aXRoIHNldHVwLmNmZyBkZWNsYXJhdGl2ZSBjb25maWcpLgor
CitUaGUgc2V0dXAuY2ZnIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgor
CistIEFzc3VtZXMgdW5pdmVyc2FsIHdoZWVsIGZvciByZWxlYXNlCistIEFkdmVydGlzZXMgdGhl
IHByb2plY3QncyBMSUNFTlNFIGZpbGUgKE1JVCBieSBkZWZhdWx0KQorLSBSZWFkcyB0aGUgUkVB
RE1FLnJzdCBmaWxlIGludG8gdGhlIGxvbmcgZGVzY3JpcHRpb24KKy0gU29tZSBjb21tb24gVHJv
dmUgY2xhc3NpZmllcnMKKy0gSW5jbHVkZXMgYWxsIHBhY2thZ2VzIGRpc2NvdmVyZWQgaW4gdGhl
IHJlcG8KKy0gRGF0YSBmaWxlcyBpbiB0aGUgcGFja2FnZSBhcmUgYWxzbyBpbmNsdWRlZCAobm90
IGp1c3QgUHl0aG9uIGZpbGVzKQorLSBEZWNsYXJlcyB0aGUgcmVxdWlyZWQgUHl0aG9uIHZlcnNp
b25zCistIERlY2xhcmVzIGluc3RhbGwgcmVxdWlyZW1lbnRzIChlbXB0eSBieSBkZWZhdWx0KQor
LSBEZWNsYXJlcyBzZXR1cCByZXF1aXJlbWVudHMgZm9yIGxlZ2FjeSBlbnZpcm9ubWVudHMKKy0g
U3VwcGxpZXMgdHdvICdleHRyYXMnOgorICAtIHRlc3Rpbmc6IHJlcXVpcmVtZW50cyBmb3IgcnVu
bmluZyB0ZXN0cworICAtIGRvY3M6IHJlcXVpcmVtZW50cyBmb3IgYnVpbGRpbmcgZG9jcworICAt
IHRoZXNlIGV4dHJhcyBzcGxpdCB0aGUgZGVjbGFyYXRpb24gaW50byAidXBzdHJlYW0iIChyZXF1
aXJlbWVudHMgYXMgZGVjbGFyZWQgYnkgdGhlIHNrZWxldG9uKSBhbmQgImxvY2FsIiAodGhvc2Ug
c3BlY2lmaWMgdG8gdGhlIGxvY2FsIHByb2plY3QpOyB0aGVzZSBtYXJrZXJzIGhlbHAgYXZvaWQg
bWVyZ2UgY29uZmxpY3RzCistIFBsYWNlaG9sZGVyIGZvciBkZWZpbmluZyBlbnRyeSBwb2ludHMK
KworQWRkaXRpb25hbGx5LCB0aGUgc2V0dXAucHkgZmlsZSBkZWNsYXJlcyBgdXNlX3NjbV92ZXJz
aW9uYCB3aGljaCByZWxpZXMgb24gW3NldHVwdG9vbHNfc2NtXShodHRwczovL3B5cGkub3JnL3By
b2plY3Qvc2V0dXB0b29sc19zY20pIHRvIGRvIHR3byB0aGluZ3M6CisKKy0gZGVyaXZlIHRoZSBw
cm9qZWN0IHZlcnNpb24gZnJvbSBTQ00gdGFncworLSBlbnN1cmUgdGhhdCBhbGwgZmlsZXMgY29t
bWl0dGVkIHRvIHRoZSByZXBvIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGluIHJlbGVhc2Vz
CisKKyMjIFJ1bm5pbmcgVGVzdHMKKworVGhlIHNrZWxldG9uIGFzc3VtZXMgdGhlIGRldmVsb3Bl
ciBoYXMgW3RveF0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3RveCkgaW5zdGFsbGVkLiBUaGUg
ZGV2ZWxvcGVyIGlzIGV4cGVjdGVkIHRvIHJ1biBgdG94YCB0byBydW4gdGVzdHMgb24gdGhlIGN1
cnJlbnQgUHl0aG9uIHZlcnNpb24gdXNpbmcgW3B5dGVzdF0oaHR0cHM6Ly9weXBpLm9yZy9wcm9q
ZWN0L3B5dGVzdCkuCisKK090aGVyIGVudmlyb25tZW50cyAoaW52b2tlZCB3aXRoIGB0b3ggLWUg
e25hbWV9YCkgc3VwcGxpZWQgaW5jbHVkZToKKworICAtIGEgYGJ1aWxkLWRvY3NgIGVudmlyb25t
ZW50IHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCisgIC0gYSBgcmVsZWFzZWAgZW52aXJvbm1l
bnQgdG8gcHVibGlzaCB0aGUgcGFja2FnZSB0byBQeVBJCisKK0EgcHl0ZXN0LmluaSBpcyBpbmNs
dWRlZCB0byBkZWZpbmUgY29tbW9uIG9wdGlvbnMgYXJvdW5kIHJ1bm5pbmcgdGVzdHMuIEluIHBh
cnRpY3VsYXI6CisKKy0gcmVseSBvbiBkZWZhdWx0IHRlc3QgZGlzY292ZXJ5IGluIHRoZSBjdXJy
ZW50IGRpcmVjdG9yeQorLSBhdm9pZCByZWN1cnNpbmcgaW50byBjb21tb24gZGlyZWN0b3JpZXMg
bm90IGNvbnRhaW5pbmcgdGVzdHMKKy0gcnVuIGRvY3Rlc3RzIG9uIG1vZHVsZXMgYW5kIGludm9r
ZSBmbGFrZTggdGVzdHMKKy0gaW4gZG9jdGVzdHMsIGFsbG93IHVuaWNvZGUgbGl0ZXJhbHMgYW5k
IHJlZ3VsYXIgbGl0ZXJhbHMgdG8gbWF0Y2gsIGFsbG93aW5nIGZvciBkb2N0ZXN0cyB0byBydW4g
b24gUHl0aG9uIDIgYW5kIDMuIEFsc28gZW5hYmxlIEVMTElQU0VTLCBhIGRlZmF1bHQgdGhhdCB3
b3VsZCBiZSB1bmRvbmUgYnkgc3VwcGx5aW5nIHRoZSBwcmlvciBvcHRpb24uCistIGZpbHRlcnMg
b3V0IGtub3duIHdhcm5pbmdzIGNhdXNlZCBieSBsaWJyYXJpZXMvZnVuY3Rpb25hbGl0eSBpbmNs
dWRlZCBieSB0aGUgc2tlbGV0b24KKworUmVsaWVzIGEgLmZsYWtlOCBmaWxlIHRvIGNvcnJlY3Qg
c29tZSBkZWZhdWx0IGJlaGF2aW9yczoKKworLSBkaXNhYmxlIG11dHVhbGx5IGluY29tcGF0aWJs
ZSBydWxlcyBXNTAzIGFuZCBXNTA0CistIHN1cHBvcnQgZm9yIGJsYWNrIGZvcm1hdAorCisjIyBD
b250aW51b3VzIEludGVncmF0aW9uCisKK1RoZSBwcm9qZWN0IGlzIHByZS1jb25maWd1cmVkIHRv
IHJ1biB0ZXN0cyBpbiBbVHJhdmlzLUNJXShodHRwczovL3RyYXZpcy1jaS5vcmcpICgudHJhdmlz
LnltbCkuIEFueSBuZXcgcHJvamVjdCBtdXN0IGJlIGVuYWJsZWQgZWl0aGVyIHRocm91Z2ggdGhl
aXIgd2ViIHNpdGUgb3Igd2l0aCB0aGUgYHRyYXZpcyBlbmFibGVgIGNvbW1hbmQuCisKK0ZlYXR1
cmVzIGluY2x1ZGU6CistIHRlc3QgYWdhaW5zdCBQeXRob24gMiBhbmQgMworLSBydW4gb24gVWJ1
bnR1IFhlbmlhbAorLSBjb3JyZWN0IGZvciBicm9rZW4gSVB2NgorCitBbHNvIHByb3ZpZGVkIGlz
IGEgbWluaW1hbCB0ZW1wbGF0ZSBmb3IgcnVubmluZyB1bmRlciBBcHB2ZXlvciAoV2luZG93cyku
CisKKyMjIyBDb250aW51b3VzIERlcGxveW1lbnRzCisKK0luIGFkZGl0aW9uIHRvIHJ1bm5pbmcg
dGVzdHMsIGFuIGFkZGl0aW9uYWwgZGVwbG95IHN0YWdlIGlzIGNvbmZpZ3VyZWQgdG8gYXV0b21h
dGljYWxseSByZWxlYXNlIHRhZ2dlZCBjb21taXRzIHRvIFB5UEkgdXNpbmcgW0FQSSB0b2tlbnNd
KGh0dHBzOi8vcHlwaS5vcmcvaGVscC8jYXBpdG9rZW4pLiBUaGUgcmVsZWFzZSBwcm9jZXNzIGV4
cGVjdHMgYW4gYXV0aG9yaXplZCB0b2tlbiB0byBiZSBjb25maWd1cmVkIHdpdGggVHJhdmlzIGFz
IHRoZSBUV0lORV9QQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gQWZ0ZXIgdGhlIFRyYXZp
cyBwcm9qZWN0IGlzIGNyZWF0ZWQsIGNvbmZpZ3VyZSB0aGUgdG9rZW4gdGhyb3VnaCB0aGUgd2Vi
IFVJIG9yIHdpdGggYSBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZyAoYmFzaCBzeW50YXgpOgor
CitgYGAKK1RXSU5FX1BBU1NXT1JEPXt0b2tlbn0gdHJhdmlzIGVudiBjb3B5IFRXSU5FX1BBU1NX
T1JECitgYGAKKworIyMgQnVpbGRpbmcgRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudGF0aW9uIGlz
IGF1dG9tYXRpY2FsbHkgYnVpbHQgYnkgW1JlYWQgdGhlIERvY3NdKGh0dHBzOi8vcmVhZHRoZWRv
Y3Mub3JnKSB3aGVuIHRoZSBwcm9qZWN0IGlzIHJlZ2lzdGVyZWQgd2l0aCBpdCwgYnkgd2F5IG9m
IHRoZSAucmVhZHRoZWRvY3MueW1sIGZpbGUuIFRvIHRlc3QgdGhlIGRvY3MgYnVpbGQgbWFudWFs
bHksIGEgdG94IGVudiBtYXkgYmUgaW52b2tlZCBhcyBgdG94IC1lIGJ1aWxkLWRvY3NgLiBCb3Ro
IHRlY2huaXF1ZXMgcmVseSBvbiB0aGUgZGVwZW5kZW5jaWVzIGRlY2xhcmVkIGluIGBzZXR1cC5j
Zmcvb3B0aW9ucy5leHRyYXNfcmVxdWlyZS5kb2NzYC4KKworSW4gYWRkaXRpb24gdG8gYnVpbGRp
bmcgdGhlIHNwaGlueCBkb2NzIHNjYWZmb2xkZWQgaW4gYGRvY3MvYCwgdGhlIGRvY3MgYnVpbGQg
YSBgaGlzdG9yeS5odG1sYCBmaWxlIHRoYXQgZmlyc3QgaW5qZWN0cyByZWxlYXNlIGRhdGVzIGFu
ZCBoeXBlcmxpbmtzIGludG8gdGhlIENIQU5HRVMucnN0IGJlZm9yZSBpbmNvcnBvcmF0aW5nIGl0
IGFzIGhpc3RvcnkgaW4gdGhlIGRvY3MuCisKKyMjIEN1dHRpbmcgcmVsZWFzZXMKKworQnkgZGVm
YXVsdCwgdGFnZ2VkIGNvbW1pdHMgYXJlIHJlbGVhc2VkIHRocm91Z2ggdGhlIGNvbnRpbnVvdXMg
aW50ZWdyYXRpb24gZGVwbG95IHN0YWdlLgorCitSZWxlYXNlcyBtYXkgYWxzbyBiZSBjdXQgbWFu
dWFsbHkgYnkgaW52b2tpbmcgdGhlIHRveCBlbnZpcm9ubWVudCBgcmVsZWFzZWAgd2l0aCB0aGUg
UHlQSSB0b2tlbiBzZXQgYXMgdGhlIFRXSU5FX1BBU1NXT1JEOgorCitgYGAKK1RXSU5FX1BBU1NX
T1JEPXt0b2tlbn0gdG94IC1lIHJlbGVhc2UKK2BgYApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3Rl
c3RfemlwcC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvemlwcC90ZXN0X3ppcHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi44MTBkMTBiZDY4ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3ppcHAvdGVzdF96aXBwLnB5CkBAIC0wLDAgKzEsMjQ1IEBACisjIGNvZGluZzogdXRmLTgKKwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscworCitpbXBv
cnQgaW8KK2ltcG9ydCB6aXBmaWxlCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHRlbXBmaWxl
CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RyaW5nCisKK3RyeToKKyAgICBpbXBvcnQgcGF0aGxp
YgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBwYXRobGliMiBhcyBwYXRobGliCisK
K2lmIG5vdCBoYXNhdHRyKGNvbnRleHRsaWIsICdFeGl0U3RhY2snKToKKyAgICBpbXBvcnQgY29u
dGV4dGxpYjIKKyAgICBjb250ZXh0bGliLkV4aXRTdGFjayA9IGNvbnRleHRsaWIyLkV4aXRTdGFj
aworCit0cnk6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICB1bml0dGVzdC5UZXN0Q2FzZS5z
dWJUZXN0CitleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgaW1wb3J0IHVuaXR0ZXN0MiBhcyB1
bml0dGVzdAorCitpbXBvcnQgamFyYWNvLml0ZXJ0b29scworaW1wb3J0IGZ1bmNfdGltZW91dAor
CitpbXBvcnQgemlwcAorCitfX21ldGFjbGFzc19fID0gdHlwZQorY29uc3VtZSA9IHR1cGxlCisK
KworZGVmIGFkZF9kaXJzKHpmKToKKyAgICAiIiIKKyAgICBHaXZlbiBhIHdyaXRhYmxlIHppcCBm
aWxlIHpmLCBpbmplY3QgZGlyZWN0b3J5IGVudHJpZXMgZm9yCisgICAgYW55IGRpcmVjdG9yaWVz
IGltcGxpZWQgYnkgdGhlIHByZXNlbmNlIG9mIGNoaWxkcmVuLgorICAgICIiIgorICAgIGZvciBu
YW1lIGluIHppcHAuQ29tcGxldGVEaXJzLl9pbXBsaWVkX2RpcnMoemYubmFtZWxpc3QoKSk6Cisg
ICAgICAgIHpmLndyaXRlc3RyKG5hbWUsIGIiIikKKyAgICByZXR1cm4gemYKKworCitkZWYgYnVp
bGRfYWxwaGFyZXBfZml4dHVyZSgpOgorICAgICIiIgorICAgIENyZWF0ZSBhIHppcCBmaWxlIHdp
dGggdGhpcyBzdHJ1Y3R1cmU6CisKKyAgICAuCisgICAg4pSc4pSA4pSAIGEudHh0CisgICAg4pSc
4pSA4pSAIGIKKyAgICDilIIgICDilJzilIDilIAgYy50eHQKKyAgICDilIIgICDilJzilIDilIAg
ZAorICAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBlLnR4dAorICAgIOKUgiAgIOKUlOKUgOKUgCBm
LnR4dAorICAgIOKUlOKUgOKUgCBnCisgICAgICAgIOKUlOKUgOKUgCBoCisgICAgICAgICAgICDi
lJTilIDilIAgaS50eHQKKworICAgIFRoaXMgZml4dHVyZSBoYXMgdGhlIGZvbGxvd2luZyBrZXkg
Y2hhcmFjdGVyaXN0aWNzOgorCisgICAgLSBhIGZpbGUgYXQgdGhlIHJvb3QgKGEpCisgICAgLSBh
IGZpbGUgdHdvIGxldmVscyBkZWVwIChiL2QvZSkKKyAgICAtIG11bHRpcGxlIGZpbGVzIGluIGEg
ZGlyZWN0b3J5IChiL2MsIGIvZikKKyAgICAtIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25seSBh
IGRpcmVjdG9yeSAoZy9oKQorCisgICAgImFscGhhIiBiZWNhdXNlIGl0IHVzZXMgYWxwaGFiZXQK
KyAgICAicmVwIiBiZWNhdXNlIGl0J3MgYSByZXByZXNlbnRhdGl2ZSBleGFtcGxlCisgICAgIiIi
CisgICAgZGF0YSA9IGlvLkJ5dGVzSU8oKQorICAgIHpmID0gemlwZmlsZS5aaXBGaWxlKGRhdGEs
ICJ3IikKKyAgICB6Zi53cml0ZXN0cigiYS50eHQiLCBiImNvbnRlbnQgb2YgYSIpCisgICAgemYu
d3JpdGVzdHIoImIvYy50eHQiLCBiImNvbnRlbnQgb2YgYyIpCisgICAgemYud3JpdGVzdHIoImIv
ZC9lLnR4dCIsIGIiY29udGVudCBvZiBlIikKKyAgICB6Zi53cml0ZXN0cigiYi9mLnR4dCIsIGIi
Y29udGVudCBvZiBmIikKKyAgICB6Zi53cml0ZXN0cigiZy9oL2kudHh0IiwgYiJjb250ZW50IG9m
IGkiKQorICAgIHpmLmZpbGVuYW1lID0gImFscGhhcmVwLnppcCIKKyAgICByZXR1cm4gemYKKwor
CitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHRlbXBfZGlyKCk6CisgICAgdG1wZGly
ID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgdHJ5OgorICAgICAgICB5aWVsZCBwYXRobGliLlBh
dGgodG1wZGlyKQorICAgIGZpbmFsbHk6CisgICAgICAgIHNodXRpbC5ybXRyZWUodG1wZGlyKQor
CisKK2NsYXNzIFRlc3RQYXRoKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2Vs
Zik6CisgICAgICAgIHNlbGYuZml4dHVyZXMgPSBjb250ZXh0bGliLkV4aXRTdGFjaygpCisgICAg
ICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmZpeHR1cmVzLmNsb3NlKQorCisgICAgZGVmIHppcGZp
bGVfYWxwaGFyZXAoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAg
ICAgICB5aWVsZCBidWlsZF9hbHBoYXJlcF9maXh0dXJlKCkKKyAgICAgICAgd2l0aCBzZWxmLnN1
YlRlc3QoKToKKyAgICAgICAgICAgIHlpZWxkIGFkZF9kaXJzKGJ1aWxkX2FscGhhcmVwX2ZpeHR1
cmUoKSkKKworICAgIGRlZiB6aXBmaWxlX29uZGlzayhzZWxmKToKKyAgICAgICAgdG1wZGlyID0g
cGF0aGxpYi5QYXRoKHNlbGYuZml4dHVyZXMuZW50ZXJfY29udGV4dCh0ZW1wX2RpcigpKSkKKyAg
ICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAg
ICAgYnVmZmVyID0gYWxwaGFyZXAuZnAKKyAgICAgICAgICAgIGFscGhhcmVwLmNsb3NlKCkKKyAg
ICAgICAgICAgIHBhdGggPSB0bXBkaXIgLyBhbHBoYXJlcC5maWxlbmFtZQorICAgICAgICAgICAg
d2l0aCBwYXRoLm9wZW4oIndiIikgYXMgc3RybToKKyAgICAgICAgICAgICAgICBzdHJtLndyaXRl
KGJ1ZmZlci5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgeWllbGQgcGF0aAorCisgICAgZGVmIHRl
c3RfaXRlcmRpcl9hbmRfdHlwZXMoc2VsZik6CisgICAgICAgIGZvciBhbHBoYXJlcCBpbiBzZWxm
LnppcGZpbGVfYWxwaGFyZXAoKToKKyAgICAgICAgICAgIHJvb3QgPSB6aXBwLlBhdGgoYWxwaGFy
ZXApCisgICAgICAgICAgICBhc3NlcnQgcm9vdC5pc19kaXIoKQorICAgICAgICAgICAgYSwgYiwg
ZyA9IHJvb3QuaXRlcmRpcigpCisgICAgICAgICAgICBhc3NlcnQgYS5pc19maWxlKCkKKyAgICAg
ICAgICAgIGFzc2VydCBiLmlzX2RpcigpCisgICAgICAgICAgICBhc3NlcnQgZy5pc19kaXIoKQor
ICAgICAgICAgICAgYywgZiwgZCA9IGIuaXRlcmRpcigpCisgICAgICAgICAgICBhc3NlcnQgYy5p
c19maWxlKCkgYW5kIGYuaXNfZmlsZSgpCisgICAgICAgICAgICBlLCA9IGQuaXRlcmRpcigpCisg
ICAgICAgICAgICBhc3NlcnQgZS5pc19maWxlKCkKKyAgICAgICAgICAgIGgsID0gZy5pdGVyZGly
KCkKKyAgICAgICAgICAgIGksID0gaC5pdGVyZGlyKCkKKyAgICAgICAgICAgIGFzc2VydCBpLmlz
X2ZpbGUoKQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgZm9yIGFscGhhcmVw
IGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAgICAgcm9vdCA9IHppcHAuUGF0
aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGEsIGIsIGcgPSByb290Lml0ZXJkaXIoKQorICAgICAg
ICAgICAgd2l0aCBhLm9wZW4oKSBhcyBzdHJtOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzdHJt
LnJlYWQoKQorICAgICAgICAgICAgYXNzZXJ0IGRhdGEgPT0gImNvbnRlbnQgb2YgYSIKKworICAg
IGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIGZvciBhbHBoYXJlcCBpbiBzZWxmLnppcGZp
bGVfYWxwaGFyZXAoKToKKyAgICAgICAgICAgIHJvb3QgPSB6aXBwLlBhdGgoYWxwaGFyZXApCisg
ICAgICAgICAgICBhLCBiLCBnID0gcm9vdC5pdGVyZGlyKCkKKyAgICAgICAgICAgIGFzc2VydCBh
LnJlYWRfdGV4dCgpID09ICJjb250ZW50IG9mIGEiCisgICAgICAgICAgICBhc3NlcnQgYS5yZWFk
X2J5dGVzKCkgPT0gYiJjb250ZW50IG9mIGEiCisKKyAgICBkZWYgdGVzdF9qb2lucGF0aChzZWxm
KToKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAg
ICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGEgPSByb290
LmpvaW5wYXRoKCJhIikKKyAgICAgICAgICAgIGFzc2VydCBhLmlzX2ZpbGUoKQorICAgICAgICAg
ICAgZSA9IHJvb3Quam9pbnBhdGgoImIiKS5qb2lucGF0aCgiZCIpLmpvaW5wYXRoKCJlLnR4dCIp
CisgICAgICAgICAgICBhc3NlcnQgZS5yZWFkX3RleHQoKSA9PSAiY29udGVudCBvZiBlIgorCisg
ICAgZGVmIHRlc3RfdHJhdmVyc2VfdHJ1ZWRpdihzZWxmKToKKyAgICAgICAgZm9yIGFscGhhcmVw
IGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAgICAgcm9vdCA9IHppcHAuUGF0
aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGEgPSByb290IC8gImEiCisgICAgICAgICAgICBhc3Nl
cnQgYS5pc19maWxlKCkKKyAgICAgICAgICAgIGUgPSByb290IC8gImIiIC8gImQiIC8gImUudHh0
IgorICAgICAgICAgICAgYXNzZXJ0IGUucmVhZF90ZXh0KCkgPT0gImNvbnRlbnQgb2YgZSIKKwor
ICAgIGRlZiB0ZXN0X3RyYXZlcnNlX3NpbXBsZWRpdihzZWxmKToKKyAgICAgICAgIiIiCisgICAg
ICAgIERpc2FibGUgdGhlIF9fZnV0dXJlX18uZGl2aXNpb24gd2hlbiB0ZXN0aW5nIHRyYXZlcnNh
bC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBhbHBoYXJlcCBpbiBzZWxmLnppcGZpbGVfYWxw
aGFyZXAoKToKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKAorICAgICAgICAgICAgICAgIHNv
dXJjZT0iemlwcC5QYXRoKGFscGhhcmVwKSAvICdhJyIsCisgICAgICAgICAgICAgICAgZmlsZW5h
bWU9Iih0ZXN0KSIsCisgICAgICAgICAgICAgICAgbW9kZT0iZXZhbCIsCisgICAgICAgICAgICAg
ICAgZG9udF9pbmhlcml0PVRydWUsCisgICAgICAgICAgICApCisgICAgICAgICAgICBldmFsKGNv
ZGUpCisKKyAgICBkZWYgdGVzdF9wYXRobGlrZV9jb25zdHJ1Y3Rpb24oc2VsZik6CisgICAgICAg
ICIiIgorICAgICAgICB6aXBwLlBhdGggc2hvdWxkIGJlIGNvbnN0cnVjdGFibGUgZnJvbSBhIHBh
dGgtbGlrZSBvYmplY3QKKyAgICAgICAgIiIiCisgICAgICAgIGZvciB6aXBmaWxlX29uZGlzayBp
biBzZWxmLnppcGZpbGVfb25kaXNrKCk6CisgICAgICAgICAgICBwYXRobGlrZSA9IHBhdGhsaWIu
UGF0aChzdHIoemlwZmlsZV9vbmRpc2spKQorICAgICAgICAgICAgemlwcC5QYXRoKHBhdGhsaWtl
KQorCisgICAgZGVmIHRlc3RfdHJhdmVyc2VfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgIGZvciBh
bHBoYXJlcCBpbiBzZWxmLnppcGZpbGVfYWxwaGFyZXAoKToKKyAgICAgICAgICAgIHJvb3QgPSB6
aXBwLlBhdGgoYWxwaGFyZXApCisgICAgICAgICAgICByb290IC8gcGF0aGxpYi5QYXRoKCJhIikK
KworICAgIGRlZiB0ZXN0X3BhcmVudChzZWxmKToKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNl
bGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAgICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBo
YXJlcCkKKyAgICAgICAgICAgIGFzc2VydCAocm9vdCAvICdhJykucGFyZW50LmF0ID09ICcnCisg
ICAgICAgICAgICBhc3NlcnQgKHJvb3QgLyAnYScgLyAnYicpLnBhcmVudC5hdCA9PSAnYS8nCisK
KyAgICBkZWYgdGVzdF9kaXJfcGFyZW50KHNlbGYpOgorICAgICAgICBmb3IgYWxwaGFyZXAgaW4g
c2VsZi56aXBmaWxlX2FscGhhcmVwKCk6CisgICAgICAgICAgICByb290ID0gemlwcC5QYXRoKGFs
cGhhcmVwKQorICAgICAgICAgICAgYXNzZXJ0IChyb290IC8gJ2InKS5wYXJlbnQuYXQgPT0gJycK
KyAgICAgICAgICAgIGFzc2VydCAocm9vdCAvICdiLycpLnBhcmVudC5hdCA9PSAnJworCisgICAg
ZGVmIHRlc3RfbWlzc2luZ19kaXJfcGFyZW50KHNlbGYpOgorICAgICAgICBmb3IgYWxwaGFyZXAg
aW4gc2VsZi56aXBmaWxlX2FscGhhcmVwKCk6CisgICAgICAgICAgICByb290ID0gemlwcC5QYXRo
KGFscGhhcmVwKQorICAgICAgICAgICAgYXNzZXJ0IChyb290IC8gJ21pc3NpbmcgZGlyLycpLnBh
cmVudC5hdCA9PSAnJworCisgICAgZGVmIHRlc3RfbXV0YWJpbGl0eShzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIElmIHRoZSB1bmRlcmx5aW5nIHppcGZpbGUgaXMgY2hhbmdlZCwgdGhlIFBh
dGggb2JqZWN0IHNob3VsZAorICAgICAgICByZWZsZWN0IHRoYXQgY2hhbmdlLgorICAgICAgICAi
IiIKKyAgICAgICAgZm9yIGFscGhhcmVwIGluIHNlbGYuemlwZmlsZV9hbHBoYXJlcCgpOgorICAg
ICAgICAgICAgcm9vdCA9IHppcHAuUGF0aChhbHBoYXJlcCkKKyAgICAgICAgICAgIGEsIGIsIGcg
PSByb290Lml0ZXJkaXIoKQorICAgICAgICAgICAgYWxwaGFyZXAud3JpdGVzdHIoJ2Zvby50eHQn
LCBiJ2ZvbycpCisgICAgICAgICAgICBhbHBoYXJlcC53cml0ZXN0cignYmFyL2Jhei50eHQnLCBi
J2JheicpCisgICAgICAgICAgICBhc3NlcnQgYW55KAorICAgICAgICAgICAgICAgIGNoaWxkLm5h
bWUgPT0gJ2Zvby50eHQnCisgICAgICAgICAgICAgICAgZm9yIGNoaWxkIGluIHJvb3QuaXRlcmRp
cigpKQorICAgICAgICAgICAgYXNzZXJ0IChyb290IC8gJ2Zvby50eHQnKS5yZWFkX3RleHQoKSA9
PSAnZm9vJworICAgICAgICAgICAgYmF6LCA9IChyb290IC8gJ2JhcicpLml0ZXJkaXIoKQorICAg
ICAgICAgICAgYXNzZXJ0IGJhei5yZWFkX3RleHQoKSA9PSAnYmF6JworCisgICAgSFVHRV9aSVBG
SUxFX05VTV9FTlRSSUVTID0gMiAqKiAxMworCisgICAgZGVmIGh1Z2VfemlwZmlsZShzZWxmKToK
KyAgICAgICAgIiIiQ3JlYXRlIGEgcmVhZC1vbmx5IHppcGZpbGUgd2l0aCBhIGh1Z2UgbnVtYmVy
IG9mIGVudHJpZXMgZW50cmllcy4iIiIKKyAgICAgICAgc3RybSA9IGlvLkJ5dGVzSU8oKQorICAg
ICAgICB6ZiA9IHppcGZpbGUuWmlwRmlsZShzdHJtLCAidyIpCisgICAgICAgIGZvciBlbnRyeSBp
biBtYXAoc3RyLCByYW5nZShzZWxmLkhVR0VfWklQRklMRV9OVU1fRU5UUklFUykpOgorICAgICAg
ICAgICAgemYud3JpdGVzdHIoZW50cnksIGVudHJ5KQorICAgICAgICB6Zi5tb2RlID0gJ3InCisg
ICAgICAgIHJldHVybiB6ZgorCisgICAgZGVmIHRlc3Rfam9pbnBhdGhfY29uc3RhbnRfdGltZShz
ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSBqb2lucGF0aCBvbiBpdGVtcyBpbiB6
aXBmaWxlIGlzIGxpbmVhciB0aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgcm9vdCA9IHppcHAu
UGF0aChzZWxmLmh1Z2VfemlwZmlsZSgpKQorICAgICAgICBlbnRyaWVzID0gamFyYWNvLml0ZXJ0
b29scy5Db3VudGVyKHJvb3QuaXRlcmRpcigpKQorICAgICAgICBmb3IgZW50cnkgaW4gZW50cmll
czoKKyAgICAgICAgICAgIGVudHJ5LmpvaW5wYXRoKCdzdWZmaXgnKQorICAgICAgICAjIENoZWNr
IHRoZSBmaWxlIGl0ZXJhdGVkIGFsbCBpdGVtcworICAgICAgICBhc3NlcnQgZW50cmllcy5jb3Vu
dCA9PSBzZWxmLkhVR0VfWklQRklMRV9OVU1fRU5UUklFUworCisgICAgQGZ1bmNfdGltZW91dC5m
dW5jX3NldF90aW1lb3V0KDMpCisgICAgZGVmIHRlc3RfaW1wbGllZF9kaXJzX3BlcmZvcm1hbmNl
KHNlbGYpOgorICAgICAgICBkYXRhID0gWycvJy5qb2luKHN0cmluZy5hc2NpaV9sb3dlcmNhc2Ug
KyBzdHIobikpIGZvciBuIGluIHJhbmdlKDEwMDAwKV0KKyAgICAgICAgemlwcC5Db21wbGV0ZURp
cnMuX2ltcGxpZWRfZGlycyhkYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3RveC5pbmkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3ppcHAvdG94LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmNiNTQyYzEzNmMzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC90b3guaW5pCkBAIC0w
LDAgKzEsMzYgQEAKK1t0b3hdCitlbnZsaXN0ID0gcHl0aG9uCittaW52ZXJzaW9uID0gMy4yCisj
IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vc2tlbGV0b24vaXNzdWVzLzYKK3RveF9waXBfZXh0
ZW5zaW9uc19leHRfdmVudl91cGRhdGUgPSB0cnVlCisKK1t0ZXN0ZW52XQorZGVwcyA9CisJc2V0
dXB0b29scz49MzEuMC4xCitjb21tYW5kcyA9CisJcHl0aG9uIC1tIHVuaXR0ZXN0IGRpc2NvdmVy
Cit1c2VkZXZlbG9wID0gVHJ1ZQorZXh0cmFzID0gdGVzdGluZworCitbdGVzdGVudjpidWlsZC1k
b2NzXQorZXh0cmFzID0KKyAgICBkb2NzCisgICAgdGVzdGluZworY2hhbmdlZGlyID0gZG9jcwor
Y29tbWFuZHMgPQorICAgIHB5dGhvbiAtbSBzcGhpbnggLiB7dG94aW5pZGlyfS9idWlsZC9odG1s
CisKK1t0ZXN0ZW52OnJlbGVhc2VdCitza2lwX2luc3RhbGwgPSBUcnVlCitkZXBzID0KKwlwZXA1
MTc+PTAuNQorCXR3aW5lPj0xLjEzCisJcGF0aC5weQorcGFzc2VudiA9CisJVFdJTkVfUEFTU1dP
UkQKK3NldGVudiA9CisJVFdJTkVfVVNFUk5BTUUgPSB7ZW52OlRXSU5FX1VTRVJOQU1FOl9fdG9r
ZW5fX30KK2NvbW1hbmRzID0KKwlweXRob24gLWMgImltcG9ydCBwYXRoOyBwYXRoLlBhdGgoJ2Rp
c3QnKS5ybXRyZWVfcCgpIgorCXB5dGhvbiAtbSBwZXA1MTcuYnVpbGQgLgorCXB5dGhvbiAtbSB0
d2luZSB1cGxvYWQgZGlzdC8qCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvemlwcC5lZ2ctaW5mby9Q
S0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL1BLRy1JTkZPCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzNlZjFjZjAxYzRiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWluZm8vUEtHLUlORk8KQEAgLTAsMCArMSwzOSBAQAorTWV0
YWRhdGEtVmVyc2lvbjogMi4xCitOYW1lOiB6aXBwCitWZXJzaW9uOiAxLjIuMAorU3VtbWFyeTog
QmFja3BvcnQgb2YgcGF0aGxpYi1jb21wYXRpYmxlIG9iamVjdCB3cmFwcGVyIGZvciB6aXAgZmls
ZXMKK0hvbWUtcGFnZTogaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby96aXBwCitBdXRob3I6IEph
c29uIFIuIENvb21icworQXV0aG9yLWVtYWlsOiBqYXJhY29AamFyYWNvLmNvbQorTGljZW5zZTog
VU5LTk9XTgorRGVzY3JpcHRpb246IC4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9w
eXBpL3YvemlwcC5zdmcKKyAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9q
ZWN0L3ppcHAKKyAgICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9weXBpL3B5dmVyc2lvbnMvemlwcC5zdmcKKyAgICAgICAgCisgICAgICAgIC4uIGltYWdl
OjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvamFyYWNvL3ppcHAvbWFzdGVyLnN2Zwor
ICAgICAgICAgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvamFyYWNvL3ppcHAKKyAg
ICAgICAgCisgICAgICAgIC4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9j
b2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZworICAgICAgICAgICA6dGFyZ2V0OiBodHRwczov
L2dpdGh1Yi5jb20vYW1idi9ibGFjaworICAgICAgICAgICA6YWx0OiBDb2RlIHN0eWxlOiBCbGFj
aworICAgICAgICAKKyAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2Fw
cHZleW9yL2NpL2phcmFjby96aXBwL21hc3Rlci5zdmcKKyAgICAgICAgICAgOnRhcmdldDogaHR0
cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9qYXJhY28vemlwcC9icmFuY2gvbWFzdGVyCisg
ICAgICAgIAorICAgICAgICAuLiAuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3By
b2plY3RzL3ppcHAvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0CisgICAgICAgIC4uICAgIDp0YXJnZXQ6
IGh0dHBzOi8vemlwcC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvP2JhZGdlPWxhdGVzdAorICAg
ICAgICAKKyAgICAgICAgCisgICAgICAgIEEgcGF0aGxpYi1jb21wYXRpYmxlIFppcGZpbGUgb2Jq
ZWN0IHdyYXBwZXIuIEEgYmFja3BvcnQgb2YgdGhlCisgICAgICAgIGBQYXRoIG9iamVjdCA8aHR0
cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy44L2xpYnJhcnkvemlwZmlsZS5odG1sI3BhdGgtb2JqZWN0
cz5gXy4KKyAgICAgICAgCitQbGF0Zm9ybTogVU5LTk9XTgorQ2xhc3NpZmllcjogRGV2ZWxvcG1l
bnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJsZQorQ2xhc3NpZmllcjogSW50ZW5kZWQg
QXVkaWVuY2UgOjogRGV2ZWxvcGVycworQ2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBwcm92
ZWQgOjogTUlUIExpY2Vuc2UKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5
dGhvbiA6OiAyLjcKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6
OiAzCitSZXF1aXJlcy1QeXRob246ID49Mi43CitQcm92aWRlcy1FeHRyYTogdGVzdGluZworUHJv
dmlkZXMtRXh0cmE6IGRvY3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL1NP
VVJDRVMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWluZm8vU09VUkNFUy50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDViMzQyY2VmYzQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3ppcHAvemlwcC5lZ2ctaW5mby9TT1VSQ0VTLnR4dApAQCAtMCwwICsxLDI0
IEBACisuZmxha2U4CisucHJlLWNvbW1pdC1jb25maWcueWFtbAorLnJlYWR0aGVkb2NzLnltbAor
LnRyYXZpcy55bWwKK0NIQU5HRVMucnN0CitMSUNFTlNFCitSRUFETUUucnN0CithcHB2ZXlvci55
bWwKK2NvbmZ0ZXN0LnB5CitweXByb2plY3QudG9tbAorc2V0dXAuY2ZnCitzZXR1cC5weQorc2tl
bGV0b24ubWQKK3Rlc3RfemlwcC5weQordG94LmluaQoremlwcC5weQorZG9jcy9jb25mLnB5Citk
b2NzL2hpc3RvcnkucnN0Citkb2NzL2luZGV4LnJzdAoremlwcC5lZ2ctaW5mby9QS0ctSU5GTwor
emlwcC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAoremlwcC5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtz
LnR4dAoremlwcC5lZ2ctaW5mby9yZXF1aXJlcy50eHQKK3ppcHAuZWdnLWluZm8vdG9wX2xldmVs
LnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96
aXBwLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3ppcHAuZWdnLWlu
Zm8vZGVwZW5kZW5jeV9saW5rcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi44YjEzNzg5MTc5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvemlwcC5l
Z2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvemlwcC96aXBwLmVnZy1pbmZvL3JlcXVpcmVzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVn
Zy1pbmZvL3JlcXVpcmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjkwYmFiNDZhYzQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1p
bmZvL3JlcXVpcmVzLnR4dApAQCAtMCwwICsxLDE0IEBACisKK1s6cHl0aG9uX3ZlcnNpb24gPCAi
My40Il0KK2NvbnRleHRsaWIyCisKK1tkb2NzXQorc3BoaW54CitqYXJhY28ucGFja2FnaW5nPj0z
LjIKK3JzdC5saW5rZXI+PTEuOQorCitbdGVzdGluZ10KK3BhdGhsaWIyCit1bml0dGVzdDIKK2ph
cmFjby5pdGVydG9vbHMKK2Z1bmMtdGltZW91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS96aXBwL3ppcHAu
ZWdnLWluZm8vdG9wX2xldmVsLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLmVnZy1pbmZvL3RvcF9sZXZl
bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lODJmNjc2Zjgy
YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvemlwcC5lZ2ctaW5mby90b3BfbGV2ZWwu
dHh0CkBAIC0wLDAgKzEgQEAKK3ppcHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvemlwcC96aXBwLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS96aXBwL3ppcHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li44OTIyMDU4MzRhYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3ppcHAvemlwcC5weQpAQCAt
MCwwICsxLDI4NiBAQAorIyBjb2Rpbmc6IHV0Zi04CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
ZGl2aXNpb24KKworaW1wb3J0IGlvCitpbXBvcnQgc3lzCitpbXBvcnQgcG9zaXhwYXRoCitpbXBv
cnQgemlwZmlsZQoraW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGl0ZXJ0b29scworZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKwordHJ5OgorICAgIGZyb20gY29udGV4dGxpYiBp
bXBvcnQgc3VwcHJlc3MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbnRleHRsaWIy
IGltcG9ydCBzdXBwcmVzcworCitfX21ldGFjbGFzc19fID0gdHlwZQorCisKK2RlZiBfcGFyZW50
cyhwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiBhIHBhdGggd2l0aCBlbGVtZW50cyBzZXBhcmF0
ZWQgYnkKKyAgICBwb3NpeHBhdGguc2VwLCBnZW5lcmF0ZSBhbGwgcGFyZW50cyBvZiB0aGF0IHBh
dGguCisKKyAgICA+Pj4gbGlzdChfcGFyZW50cygnYi9kJykpCisgICAgWydiJ10KKyAgICA+Pj4g
bGlzdChfcGFyZW50cygnL2IvZC8nKSkKKyAgICBbJy9iJ10KKyAgICA+Pj4gbGlzdChfcGFyZW50
cygnYi9kL2YvJykpCisgICAgWydiL2QnLCAnYiddCisgICAgPj4+IGxpc3QoX3BhcmVudHMoJ2In
KSkKKyAgICBbXQorICAgID4+PiBsaXN0KF9wYXJlbnRzKCcnKSkKKyAgICBbXQorICAgICIiIgor
ICAgIHJldHVybiBpdGVydG9vbHMuaXNsaWNlKF9hbmNlc3RyeShwYXRoKSwgMSwgTm9uZSkKKwor
CitkZWYgX2FuY2VzdHJ5KHBhdGgpOgorICAgICIiIgorICAgIEdpdmVuIGEgcGF0aCB3aXRoIGVs
ZW1lbnRzIHNlcGFyYXRlZCBieQorICAgIHBvc2l4cGF0aC5zZXAsIGdlbmVyYXRlIGFsbCBlbGVt
ZW50cyBvZiB0aGF0IHBhdGgKKworICAgID4+PiBsaXN0KF9hbmNlc3RyeSgnYi9kJykpCisgICAg
WydiL2QnLCAnYiddCisgICAgPj4+IGxpc3QoX2FuY2VzdHJ5KCcvYi9kLycpKQorICAgIFsnL2Iv
ZCcsICcvYiddCisgICAgPj4+IGxpc3QoX2FuY2VzdHJ5KCdiL2QvZi8nKSkKKyAgICBbJ2IvZC9m
JywgJ2IvZCcsICdiJ10KKyAgICA+Pj4gbGlzdChfYW5jZXN0cnkoJ2InKSkKKyAgICBbJ2InXQor
ICAgID4+PiBsaXN0KF9hbmNlc3RyeSgnJykpCisgICAgW10KKyAgICAiIiIKKyAgICBwYXRoID0g
cGF0aC5yc3RyaXAocG9zaXhwYXRoLnNlcCkKKyAgICB3aGlsZSBwYXRoIGFuZCBwYXRoICE9IHBv
c2l4cGF0aC5zZXA6CisgICAgICAgIHlpZWxkIHBhdGgKKyAgICAgICAgcGF0aCwgdGFpbCA9IHBv
c2l4cGF0aC5zcGxpdChwYXRoKQorCisKK2NsYXNzIENvbXBsZXRlRGlycyh6aXBmaWxlLlppcEZp
bGUpOgorICAgICIiIgorICAgIEEgWmlwRmlsZSBzdWJjbGFzcyB0aGF0IGVuc3VyZXMgdGhhdCBp
bXBsaWVkIGRpcmVjdG9yaWVzCisgICAgYXJlIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgbmFtZWxp
c3QuCisgICAgIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9pbXBsaWVkX2RpcnMo
bmFtZXMpOgorICAgICAgICBwYXJlbnRzID0gaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUo
bWFwKF9wYXJlbnRzLCBuYW1lcykpCisgICAgICAgICMgQ2FzdCBuYW1lcyB0byBhIHNldCBmb3Ig
TygxKSBsb29rdXBzCisgICAgICAgIGV4aXN0aW5nID0gc2V0KG5hbWVzKQorICAgICAgICAjIERl
ZHVwbGljYXRlIGVudHJpZXMgaW4gb3JpZ2luYWwgb3JkZXIKKyAgICAgICAgaW1wbGllZF9kaXJz
ID0gT3JkZXJlZERpY3QuZnJvbWtleXMoCisgICAgICAgICAgICBwICsgcG9zaXhwYXRoLnNlcCBm
b3IgcCBpbiBwYXJlbnRzCisgICAgICAgICAgICBpZiBwICsgcG9zaXhwYXRoLnNlcCBub3QgaW4g
ZXhpc3RpbmcKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gaW1wbGllZF9kaXJzCisKKyAgICBk
ZWYgbmFtZWxpc3Qoc2VsZik6CisgICAgICAgIG5hbWVzID0gc3VwZXIoQ29tcGxldGVEaXJzLCBz
ZWxmKS5uYW1lbGlzdCgpCisgICAgICAgIHJldHVybiBuYW1lcyArIGxpc3Qoc2VsZi5faW1wbGll
ZF9kaXJzKG5hbWVzKSkKKworICAgIGRlZiBfbmFtZV9zZXQoc2VsZik6CisgICAgICAgIHJldHVy
biBzZXQoc2VsZi5uYW1lbGlzdCgpKQorCisgICAgZGVmIHJlc29sdmVfZGlyKHNlbGYsIG5hbWUp
OgorICAgICAgICAiIiIKKyAgICAgICAgSWYgdGhlIG5hbWUgcmVwcmVzZW50cyBhIGRpcmVjdG9y
eSwgcmV0dXJuIHRoYXQgbmFtZQorICAgICAgICBhcyBhIGRpcmVjdG9yeSAod2l0aCB0aGUgdHJh
aWxpbmcgc2xhc2gpLgorICAgICAgICAiIiIKKyAgICAgICAgbmFtZXMgPSBzZWxmLl9uYW1lX3Nl
dCgpCisgICAgICAgIGRpcm5hbWUgPSBuYW1lICsgJy8nCisgICAgICAgIGRpcl9tYXRjaCA9IG5h
bWUgbm90IGluIG5hbWVzIGFuZCBkaXJuYW1lIGluIG5hbWVzCisgICAgICAgIHJldHVybiBkaXJu
YW1lIGlmIGRpcl9tYXRjaCBlbHNlIG5hbWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBt
YWtlKGNscywgc291cmNlKToKKyAgICAgICAgIiIiCisgICAgICAgIEdpdmVuIGEgc291cmNlIChm
aWxlbmFtZSBvciB6aXBmaWxlKSwgcmV0dXJuIGFuCisgICAgICAgIGFwcHJvcHJpYXRlIENvbXBs
ZXRlRGlycyBzdWJjbGFzcy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc291
cmNlLCBDb21wbGV0ZURpcnMpOgorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZQorCisgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKHNvdXJjZSwgemlwZmlsZS5aaXBGaWxlKToKKyAgICAgICAgICAg
IHJldHVybiBjbHMoX3BhdGhsaWJfY29tcGF0KHNvdXJjZSkpCisKKyAgICAgICAgIyBPbmx5IGFs
bG93IGZvciBGYXN0UGF0aCB3aGVuIHN1cHBsaWVkIHppcGZpbGUgaXMgcmVhZC1vbmx5CisgICAg
ICAgIGlmICdyJyBub3QgaW4gc291cmNlLm1vZGU6CisgICAgICAgICAgICBjbHMgPSBDb21wbGV0
ZURpcnMKKworICAgICAgICByZXMgPSBjbHMuX19uZXdfXyhjbHMpCisgICAgICAgIHZhcnMocmVz
KS51cGRhdGUodmFycyhzb3VyY2UpKQorICAgICAgICByZXR1cm4gcmVzCisKKworY2xhc3MgRmFz
dExvb2t1cChDb21wbGV0ZURpcnMpOgorICAgICIiIgorICAgIFppcEZpbGUgc3ViY2xhc3MgdG8g
ZW5zdXJlIGltcGxpY2l0CisgICAgZGlycyBleGlzdCBhbmQgYXJlIHJlc29sdmVkIHJhcGlkbHku
CisgICAgIiIiCisgICAgZGVmIG5hbWVsaXN0KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHByZXNz
KEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fbmFtZXMKKyAgICAg
ICAgc2VsZi5fX25hbWVzID0gc3VwZXIoRmFzdExvb2t1cCwgc2VsZikubmFtZWxpc3QoKQorICAg
ICAgICByZXR1cm4gc2VsZi5fX25hbWVzCisKKyAgICBkZWYgX25hbWVfc2V0KHNlbGYpOgorICAg
ICAgICB3aXRoIHN1cHByZXNzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLl9fbG9va3VwCisgICAgICAgIHNlbGYuX19sb29rdXAgPSBzdXBlcihGYXN0TG9va3VwLCBz
ZWxmKS5fbmFtZV9zZXQoKQorICAgICAgICByZXR1cm4gc2VsZi5fX2xvb2t1cAorCisKK2RlZiBf
cGF0aGxpYl9jb21wYXQocGF0aCk6CisgICAgIiIiCisgICAgRm9yIHBhdGgtbGlrZSBvYmplY3Rz
LCBjb252ZXJ0IHRvIGEgZmlsZW5hbWUgZm9yIGNvbXBhdGliaWxpdHkKKyAgICBvbiBQeXRob24g
My42LjEgYW5kIGVhcmxpZXIuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gcGF0
aC5fX2ZzcGF0aF9fKCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHJldHVy
biBzdHIocGF0aCkKKworCitjbGFzcyBQYXRoOgorICAgICIiIgorICAgIEEgcGF0aGxpYi1jb21w
YXRpYmxlIGludGVyZmFjZSBmb3IgemlwIGZpbGVzLgorCisgICAgQ29uc2lkZXIgYSB6aXAgZmls
ZSB3aXRoIHRoaXMgc3RydWN0dXJlOjoKKworICAgICAgICAuCisgICAgICAgIOKUnOKUgOKUgCBh
LnR4dAorICAgICAgICDilJTilIDilIAgYgorICAgICAgICAgICAg4pSc4pSA4pSAIGMudHh0Cisg
ICAgICAgICAgICDilJTilIDilIAgZAorICAgICAgICAgICAgICAgIOKUlOKUgOKUgCBlLnR4dAor
CisgICAgPj4+IGRhdGEgPSBpby5CeXRlc0lPKCkKKyAgICA+Pj4gemYgPSB6aXBmaWxlLlppcEZp
bGUoZGF0YSwgJ3cnKQorICAgID4+PiB6Zi53cml0ZXN0cignYS50eHQnLCAnY29udGVudCBvZiBh
JykKKyAgICA+Pj4gemYud3JpdGVzdHIoJ2IvYy50eHQnLCAnY29udGVudCBvZiBjJykKKyAgICA+
Pj4gemYud3JpdGVzdHIoJ2IvZC9lLnR4dCcsICdjb250ZW50IG9mIGUnKQorICAgID4+PiB6Zi5m
aWxlbmFtZSA9ICdhYmNkZS56aXAnCisKKyAgICBQYXRoIGFjY2VwdHMgdGhlIHppcGZpbGUgb2Jq
ZWN0IGl0c2VsZiBvciBhIGZpbGVuYW1lCisKKyAgICA+Pj4gcm9vdCA9IFBhdGgoemYpCisKKyAg
ICBGcm9tIHRoZXJlLCBzZXZlcmFsIHBhdGggb3BlcmF0aW9ucyBhcmUgYXZhaWxhYmxlLgorCisg
ICAgRGlyZWN0b3J5IGl0ZXJhdGlvbiAoaW5jbHVkaW5nIHRoZSB6aXAgZmlsZSBpdHNlbGYpOgor
CisgICAgPj4+IGEsIGIgPSByb290Lml0ZXJkaXIoKQorICAgID4+PiBhCisgICAgUGF0aCgnYWJj
ZGUuemlwJywgJ2EudHh0JykKKyAgICA+Pj4gYgorICAgIFBhdGgoJ2FiY2RlLnppcCcsICdiLycp
CisKKyAgICBuYW1lIHByb3BlcnR5OgorCisgICAgPj4+IGIubmFtZQorICAgICdiJworCisgICAg
am9pbiB3aXRoIGRpdmlkZSBvcGVyYXRvcjoKKworICAgID4+PiBjID0gYiAvICdjLnR4dCcKKyAg
ICA+Pj4gYworICAgIFBhdGgoJ2FiY2RlLnppcCcsICdiL2MudHh0JykKKyAgICA+Pj4gYy5uYW1l
CisgICAgJ2MudHh0JworCisgICAgUmVhZCB0ZXh0OgorCisgICAgPj4+IGMucmVhZF90ZXh0KCkK
KyAgICAnY29udGVudCBvZiBjJworCisgICAgZXhpc3RlbmNlOgorCisgICAgPj4+IGMuZXhpc3Rz
KCkKKyAgICBUcnVlCisgICAgPj4+IChiIC8gJ21pc3NpbmcudHh0JykuZXhpc3RzKCkKKyAgICBG
YWxzZQorCisgICAgQ29lcmNpb24gdG8gc3RyaW5nOgorCisgICAgPj4+IHN0cihjKQorICAgICdh
YmNkZS56aXAvYi9jLnR4dCcKKyAgICAiIiIKKworICAgIF9fcmVwciA9ICJ7c2VsZi5fX2NsYXNz
X18uX19uYW1lX199KHtzZWxmLnJvb3QuZmlsZW5hbWUhcn0sIHtzZWxmLmF0IXJ9KSIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByb290LCBhdD0iIik6CisgICAgICAgIHNlbGYucm9vdCA9IEZh
c3RMb29rdXAubWFrZShyb290KQorICAgICAgICBzZWxmLmF0ID0gYXQKKworICAgIGRlZiBvcGVu
KHNlbGYsIG1vZGU9J3InLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAg
T3BlbiB0aGlzIGVudHJ5IGFzIHRleHQgb3IgYmluYXJ5IGZvbGxvd2luZyB0aGUgc2VtYW50aWNz
CisgICAgICAgIG9mIGBgcGF0aGxpYi5QYXRoLm9wZW4oKWBgIGJ5IHBhc3NpbmcgYXJndW1lbnRz
IHRocm91Z2gKKyAgICAgICAgdG8gaW8uVGV4dElPV3JhcHBlcigpLgorICAgICAgICAiIiIKKyAg
ICAgICAgcHdkID0ga3dhcmdzLnBvcCgncHdkJywgTm9uZSkKKyAgICAgICAgemlwX21vZGUgPSBt
b2RlWzBdCisgICAgICAgIHN0cmVhbSA9IHNlbGYucm9vdC5vcGVuKHNlbGYuYXQsIHppcF9tb2Rl
LCBwd2Q9cHdkKQorICAgICAgICBpZiAnYicgaW4gbW9kZToKKyAgICAgICAgICAgIGlmIGFyZ3Mg
b3Iga3dhcmdzOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVuY29kaW5nIGFy
Z3MgaW52YWxpZCBmb3IgYmluYXJ5IG9wZXJhdGlvbiIpCisgICAgICAgICAgICByZXR1cm4gc3Ry
ZWFtCisgICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFwcGVyKHN0cmVhbSwgKmFyZ3MsICoqa3dh
cmdzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVy
biBwb3NpeHBhdGguYmFzZW5hbWUoc2VsZi5hdC5yc3RyaXAoIi8iKSkKKworICAgIGRlZiByZWFk
X3RleHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oJ3In
LCAqYXJncywgKiprd2FyZ3MpIGFzIHN0cm06CisgICAgICAgICAgICByZXR1cm4gc3RybS5yZWFk
KCkKKworICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYub3Blbign
cmInKSBhcyBzdHJtOgorICAgICAgICAgICAgcmV0dXJuIHN0cm0ucmVhZCgpCisKKyAgICBkZWYg
X2lzX2NoaWxkKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcG9zaXhwYXRoLmRpcm5hbWUo
cGF0aC5hdC5yc3RyaXAoIi8iKSkgPT0gc2VsZi5hdC5yc3RyaXAoIi8iKQorCisgICAgZGVmIF9u
ZXh0KHNlbGYsIGF0KToKKyAgICAgICAgcmV0dXJuIFBhdGgoc2VsZi5yb290LCBhdCkKKworICAg
IGRlZiBpc19kaXIoc2VsZik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5hdCBvciBzZWxmLmF0
LmVuZHN3aXRoKCIvIikKKworICAgIGRlZiBpc19maWxlKHNlbGYpOgorICAgICAgICByZXR1cm4g
bm90IHNlbGYuaXNfZGlyKCkKKworICAgIGRlZiBleGlzdHMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLmF0IGluIHNlbGYucm9vdC5fbmFtZV9zZXQoKQorCisgICAgZGVmIGl0ZXJkaXIoc2Vs
Zik6CisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2RpcigpOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigiQ2FuJ3QgbGlzdGRpciBhIGZpbGUiKQorICAgICAgICBzdWJzID0gbWFwKHNlbGYu
X25leHQsIHNlbGYucm9vdC5uYW1lbGlzdCgpKQorICAgICAgICByZXR1cm4gZmlsdGVyKHNlbGYu
X2lzX2NoaWxkLCBzdWJzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVy
biBwb3NpeHBhdGguam9pbihzZWxmLnJvb3QuZmlsZW5hbWUsIHNlbGYuYXQpCisKKyAgICBkZWYg
X19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmVwci5mb3JtYXQoc2VsZj1z
ZWxmKQorCisgICAgZGVmIGpvaW5wYXRoKHNlbGYsIGFkZCk6CisgICAgICAgIG5leHQgPSBwb3Np
eHBhdGguam9pbihzZWxmLmF0LCBfcGF0aGxpYl9jb21wYXQoYWRkKSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX25leHQoc2VsZi5yb290LnJlc29sdmVfZGlyKG5leHQpKQorCisgICAgX190cnVlZGl2
X18gPSBqb2lucGF0aAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmVudChzZWxmKToKKyAg
ICAgICAgcGFyZW50X2F0ID0gcG9zaXhwYXRoLmRpcm5hbWUoc2VsZi5hdC5yc3RyaXAoJy8nKSkK
KyAgICAgICAgaWYgcGFyZW50X2F0OgorICAgICAgICAgICAgcGFyZW50X2F0ICs9ICcvJworICAg
ICAgICByZXR1cm4gc2VsZi5fbmV4dChwYXJlbnRfYXQpCisKKyAgICBpZiBzeXMudmVyc2lvbl9p
bmZvIDwgKDMsKToKKyAgICAgICAgX19kaXZfXyA9IF9fdHJ1ZWRpdl9fCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RveC5pbmkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RveC5p
bmkKaW5kZXggMWE5NGVjMzQwMjE2Li5mM2IwYzRkZDNlZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94LmluaQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RveC5pbmkK
QEAgLTEsMTEgKzEsMTIgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxw
eTM4LHtweTI3LHB5MzUscHkzNixweTM3LHB5Mzh9LWZsYWtlOCxweTM4LW15cHkyLHtweTM1LHB5
Mzh9LW15cHkzCitlbnZsaXN0ID0gcHkzNixweTM3LHB5Mzgse3B5MzYscHkzNyxweTM4fS1mbGFr
ZTgse3B5MzYscHkzOH0tbXlweTMKIHNraXBzZGlzdD1UcnVlCiBza2lwX21pc3NpbmdfaW50ZXJw
cmV0ZXJzID0gRmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBzID0KLSAgcHl0ZXN0CisgICMgU2FtZSBh
cyB0b29scy90aGlyZF9wYXJ0eS9weXRlc3QsIGFsc28gdGhlIGxhc3QgdmVyc2lvbiB0aGF0IHN1
cHBvcnRzIFB5dGhvbiAyCisgIHB5dGVzdD09NC42LjExCiAgIHB5dGVzdC1jb3YKICAgIyBtb2Nr
IG5vIGxvbmdlciBzdXBwb3J0cyBQeXRob24gMiBzaW5jZSB2NAogICBtb2NrPT0zLioKQEAgLTIz
LDE0ICsyNCw2IEBAIHBhc3NlbnYgPQogICBQWV9DT0xPUlMKICAgVEFTS0NMVVNURVJfUk9PVF9V
UkwKIAotW3Rlc3RlbnY6cHkyNy1mbGFrZThdCi1kZXBzID0gLXJyZXF1aXJlbWVudHNfZmxha2U4
LnR4dAotY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5Mjct
Zmxha2U4LmluaSB7cG9zYXJnc30KLQotW3Rlc3RlbnY6cHkzNS1mbGFrZThdCi1kZXBzID0gLXJy
ZXF1aXJlbWVudHNfZmxha2U4LnR4dAotY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmln
PXt0b3hpbmlkaXJ9L3B5My1mbGFrZTguaW5pIHtwb3NhcmdzfQotCiBbdGVzdGVudjpweTM2LWZs
YWtlOF0KIGRlcHMgPSAtcnJlcXVpcmVtZW50c19mbGFrZTgudHh0CiBjb21tYW5kcyA9IGZsYWtl
OCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CkBA
IC00MywxOCArMzYsNiBAQCBjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGlu
aWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiBkZXBzID0gLXJyZXF1aXJlbWVudHNfZmxh
a2U4LnR4dAogY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5
My1mbGFrZTguaW5pIHtwb3NhcmdzfQogCi1bdGVzdGVudjpweTM4LW15cHkyXQotZGVwcyA9IC1y
cmVxdWlyZW1lbnRzX215cHkudHh0Ci1jaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgotY29tbWFu
ZHMgPQotICBteXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNy
ZW1lbnRhbCAtLXB5MiAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdp
dGlnbm9yZQotCi1bdGVzdGVudjpweTM1LW15cHkzXQotZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215
cHkudHh0Ci1jaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgotY29tbWFuZHMgPQotICBteXB5IC0t
Y29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAtcCB0b29s
cy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQotCiBbdGVzdGVudjpw
eTM4LW15cHkzXQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CiBjaGFuZ2VkaXIgPSB7
dG94aW5pZGlyfS8uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGM2NzIyOTQwNmJhYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY29uZnRlc3Qu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xv
Y2FscGF0aHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL215cHkuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTI3LWZsYWtlOC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXRlc3QuaW5pCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4
LnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cmVxdWlyZW1lbnRzX215cHkudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90b3guaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvX19pbml0X18u
cHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9fX2luaXRfXy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9fX2lu
aXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEv
X19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RhdGEvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1v
ZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvZXhjZXB0
aW9ucy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS9kYXRhL2V4Y2VwdGlvbnMvX19pbml0X18ucHkKaW5kZXggYTY4MzRi
ODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kYXRhL2V4Y2VwdGlvbnMvX19pbml0X18u
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL2RhdGEvZXhjZXB0aW9ucy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNl
cHRpb25zL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvZXhjZXB0aW9ucy93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRmOWMwNjAxODU5Li4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L2RhdGEvZXhjZXB0aW9ucy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9kYXRhL2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNlcHRpb25z
L2R1cGxpY2F0ZV9leGNlcHRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNlcHRpb25zL2ludmFsaWRfZGF0YV9leGNl
cHRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvZGF0YS9leGNlcHRpb25zL25vdF9mb3VuZF9leGNlcHRpb24ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9leGNl
cHRpb25zL3Blcm1pc3Npb25fZGVuaWVkX2V4Y2VwdGlvbi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZGF0YS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjQzYmI0YmQ5MmNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RhdGEvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9fX2luaXRfXy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9k
YXRhL2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9kYXRhL2h0dHBfcG9sbGluZ19jbGllbnQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZGF0YS9zZXNzaW9uLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZG9jcy9yZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZThjMDQ1ZTNlZS4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS9kb2NzL3Jlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMyICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9jb25maWd1cmF0aW9uX3BhZ2VfYm90dG9tLmpwZwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2Nz
L3Jlcy9jb25maWd1cmF0aW9uX3BhZ2VfZXhjbHVkZV9hZGRfbWFsZnVuY3Rpb25pbmcuanBnCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2Rv
Y3MvcmVzL2NvbmZpZ3VyYXRpb25fcGFnZV9leGNsdWRlX2FkZF9wcmV2X2V4Y2x1ZGVkLmpwZwot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9k
b2NzL3Jlcy9jb25maWd1cmF0aW9uX3BhZ2VfZXhjbHVkZV9hZGRfcmF3LmpwZwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9j
b25maWd1cmF0aW9uX3BhZ2VfdG9wLmpwZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9sYW5kaW5nX3BhZ2UuanBnCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3Mv
cmVzL292ZXJ2aWV3X3BhZ2Vfc2Vzc2lvbnMuanBnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzL292ZXJ2aWV3X3BhZ2Vfc2Vz
c2lvbnNfZmlsdGVyZWQuanBnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzL292ZXJ2aWV3X3BhZ2Vfc2Vzc2lvbnNfcGlubmVk
X3JlY2VudC5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZG9jcy9yZXMvb3ZlcnZpZXdfcGFnZV90b3AuanBnCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzL3Jlc3Vs
dHNfcGFnZV9hcGlfcmVzdWx0cy5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVzdWx0c19wYWdlX2FwaV9yZXN1bHRz
X2V4cG9ydC5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVzdWx0c19wYWdlX2JvdHRvbS5qcGcKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVz
dWx0c19wYWdlX2xhc3RfdGltZWRfb3V0LmpwZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlcy9yZXN1bHRzX3BhZ2VfbWFsZnVu
Y3Rpb25pbmdfbGlzdC5qcGcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXMvcmVzdWx0c19wYWdlX3RvcC5qcGcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS9kb2NzL3Jlc3QtYXBpL3Jlc3VsdHMtYXBpL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkv
cmVzdWx0cy1hcGkvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGIzYjU4YWM3YThhMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Jlc3VsdHMtYXBp
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2Rv
Y3MvcmVzdC1hcGkvcmVzdWx0cy1hcGkvY29uZmlnLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvcmVzdWx0cy1h
cGkvY3JlYXRlLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvcmVzdWx0cy1hcGkvZG93bmxvYWQubWQKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9y
ZXN0LWFwaS9yZXN1bHRzLWFwaS9pbXBvcnQubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9yZXN1bHRzLWFwaS9y
ZWFkLWNvbXBhY3QubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9yZXN1bHRzLWFwaS9yZWFkLm1kCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVz
dC1hcGkvcmVzdWx0cy1hcGkvdmlldy5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvc2Vzc2lv
bnMtYXBpL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvc2Vzc2lvbnMtYXBpL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjBhMGUwNjFhYjcuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9zZXNzaW9ucy1hcGkvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS9zZXNzaW9u
cy1hcGkvY29udHJvbC5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS9jcmVhdGUubWQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9j
cy9yZXN0LWFwaS9zZXNzaW9ucy1hcGkvZGVsZXRlLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvc2Vzc2lvbnMt
YXBpL2V2ZW50cy5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS9maW5kLm1kCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVz
dC1hcGkvc2Vzc2lvbnMtYXBpL2xhYmVscy5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS9y
ZWFkLXB1YmxpYy5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS9yZWFkLm1kCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVz
dC1hcGkvc2Vzc2lvbnMtYXBpL3N0YXR1cy5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Nlc3Npb25zLWFwaS91
cGRhdGUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Rlc3RzLWFwaS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS9kb2NzL3Jlc3QtYXBpL3Rlc3RzLWFwaS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzhkMGExZTkzZTVmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1h
cGkvdGVzdHMtYXBpL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL2RvY3MvcmVzdC1hcGkvdGVzdHMtYXBpL3JlYWQtYWxsLm1kCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1h
cGkvdGVzdHMtYXBpL3JlYWQtYXZhaWxhYmxlLWFwaXMubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS90ZXN0cy1h
cGkvcmVhZC1sYXN0LWNvbXBsZXRlZC5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3Rlc3RzLWFwaS9yZWFkLW1h
bGZ1bmN0aW9uaW5nLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RvY3MvcmVzdC1hcGkvdGVzdHMtYXBpL3JlYWQtbmV4dC5tZAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9kb2Nz
L3Jlc3QtYXBpL3Rlc3RzLWFwaS9yZWFkLXNlc3Npb24ubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS90ZXN0cy1h
cGkvdXBkYXRlLW1hbGZ1bmN0aW9uaW5nLm1kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFwaS93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd2F2ZS9kb2NzL3Jlc3QtYXBpL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYTc5MmMwNTNkNDguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy9yZXN0LWFw
aS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9k
b2NzL3Jlc3QtYXBpL1JFQURNRS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvdXNhZ2UvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvZG9jcy91c2FnZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjgzMDRjZDhiMTJhLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2RvY3MvdXNhZ2UvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy91c2FnZS91c2Fn
ZS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL2RvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZG9jcy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE5ODUxYmUwOTFjLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvZG9jcy9SRUFETUUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvY3NzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L2V4cG9ydC9jc3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg5ODhkMGRjMTlmMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvY3NzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC9jc3MvYnVsbWEu
bWluLmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS9leHBvcnQvY3NzL3Jlc3VsdC5jc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvbGliL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL2V4cG9ydC9saWIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ2MzgxNWM1ZmRmZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvbGliL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC9s
aWIvdWkuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvZXhwb3J0L2xpYi91dGlscy5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC9yZXMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvZXhwb3J0L3Jlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzk3MmUzNWQ5OGU4Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC9yZXMvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZXhwb3J0L3Jl
cy93YXZlbG9nb18yMDE2LmpwZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL2V4cG9ydC93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBv
cnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0N2UyMWY1
N2U3Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9leHBvcnQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvZXhwb3J0L2luZGV4Lmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9u
ZXR3b3JrL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1
Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL19faW5pdF9fLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3Jr
L19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQ
eXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3Jr
L2FwaS9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL25ldHdvcmsvYXBpL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9fX2luaXRfXy5weQpA
QCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJj
aCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvbmV0d29yay9hcGkvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvbmV0d29yay9hcGkvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNDA0OWU0MzI3Ni4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2Fw
aS9hcGlfaGFuZGxlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL2FwaS9yZXN1bHRzX2FwaV9oYW5kbGVyLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25ldHdv
cmsvYXBpL3Nlc3Npb25zX2FwaV9oYW5kbGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvYXBpL3Rlc3RzX2FwaV9oYW5k
bGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvbmV0d29yay93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTlmZmU5MjMxOTkuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvbmV0d29yay93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS9uZXR3b3JrL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL25ldHdvcmsvaHR0cF9oYW5kbGVy
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL25ldHdvcmsvc3RhdGljX2hhbmRsZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9yZXNvdXJjZXMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvcmVzb3VyY2VzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZjY1YTU2MGZkY2MuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvcmVzb3VyY2VzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RpbmcvX19pbml0X18ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGlu
Zy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L3Rlc3RpbmcvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RpbmcvX19pbml0X18ucHkKQEAgLTEgKzAsMCBA
QAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJl
Y3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiZTIzMzFlMGRlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3Rp
bmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUv
dGVzdGluZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS90ZXN0aW5nL2V2ZW50X2Rpc3BhdGNoZXIucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy9y
ZXN1bHRzX21hbmFnZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvdGVzdGluZy9zZXNzaW9uc19tYW5hZ2VyLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RpbmcvdGVz
dF9sb2FkZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dhdmUvdGVzdGluZy90ZXN0c19tYW5hZ2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3Rpbmcvd3B0X3JlcG9ydC5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWFkZjg5NTc2MTkuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvdGVzdHMvV0FWRSBMb2NhbC5wb3N0bWFuX2Vudmlyb25tZW50Lmpzb24KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdHMvV0FW
RSBTZXJ2ZXIgUkVTVCBBUEkgVGVzdHMucG9zdG1hbl9jb2xsZWN0aW9uLmpzb24KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdGVzdHMvdGVz
dF93YXZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dhdmUvdG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS90b3guaW5pCmluZGV4IDhlM2UyNmUxMzViNC4u
YzcwYTQ2Y2MzYzk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdG94LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdG94LmluaQpAQCAtMSwxMSArMSwx
MiBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3LHB5MzUscHkzNixweTM3LHB5MzgKK2Vudmxpc3Qg
PSBweTM2LHB5MzcscHkzOAogc2tpcHNkaXN0PVRydWUKIHNraXBfbWlzc2luZ19pbnRlcnByZXRl
cnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQotICBweXRlc3QKKyAgIyBTYW1lIGFzIHRv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdCwgYWxzbyB0aGUgbGFzdCB2ZXJzaW9uIHRoYXQgc3VwcG9y
dHMgUHl0aG9uIDIKKyAgcHl0ZXN0PT00LjYuMTEKICAgcHl0ZXN0LWNvdgogICBoeXBvdGhlc2lz
CiAgIG1vY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy9fX2luaXRfXy5weQpp
bmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3V0aWxzL19faW5pdF9f
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS91dGlscy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdXRpbHMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvdXRpbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4
OTM1MzMzNGNjMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy9k
ZXNlcmlhbGl6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvdXRpbHMvc2VyaWFsaXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS91dGlscy91c2VyX2FnZW50X3BhcnNl
ci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyNzFmNDA3ZDZjNGIuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dh
dmUvY29uZmlnLmRlZmF1bHQuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9jb25maWd1cmF0aW9uX2xvYWRlci5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS9yZXF1aXJlbWVu
dHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL3RveC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dhdmUvd2F2ZV9zZXJ2ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAu
Ny41L2J1bG1hLmNzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAuNy41L2J1bG1hLmNzcwppbmRleCBmOTk0ODRi
YzRhMjkuLjE1MGJiZmQzNGEzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvYnVsbWEtMC43LjUvYnVsbWEu
Y3NzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS93d3cvY3NzL2J1bG1hLTAuNy41L2J1bG1hLmNzcwpAQCAtMjYsOSArMjYsOSBAQAog
LnBhZ2luYXRpb24tZWxsaXBzaXMsIC50YWJzIHsKICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBu
b25lOwogICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworICB1c2VyLXNlbGVjdDogbm9uZTsKICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwot
ICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICB1c2VyLXNlbGVjdDogbm9uZTsKIH0KIAog
LnNlbGVjdDpub3QoLmlzLW11bHRpcGxlKTpub3QoLmlzLWxvYWRpbmcpOjphZnRlciwgLm5hdmJh
ci1saW5rOm5vdCguaXMtYXJyb3dsZXNzKTo6YWZ0ZXIgewpAQCAtMzM4LDcgKzMzOCw3IEBAIGh0
bWwgewogICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgIC1tb3otdGV4dC1z
aXplLWFkanVzdDogMTAwJTsKICAgICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwotICAg
ICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKKyAgICAgICAgICB0ZXh0LXNp
emUtYWRqdXN0OiAxMDAlOwogfQogCiBhcnRpY2xlLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvYnVsbWEt
MC43LjUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2Nzcy9idWxtYS0wLjcuNS93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEwODk4ZmNmNjdmLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL3d3dy9jc3MvYnVsbWEtMC43LjUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci11c2VyLXNlbGVj
dAotdGV4dC1zaXplLWFkanVzdAotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvYnVs
bWEtMC43LjUvYnVsbWEuY3NzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvYnVsbWEtMC43LjUvYnVsbWEuY3NzLm1hcAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cv
Y3NzL2J1bG1hLTAuNy41L2J1bG1hLm1pbi5jc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93YXZlL3d3dy9jc3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ4NmNiZjA0M2RiMy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9jc3MvZm9udGF3ZXNv
bWUtNS43LjIubWluLmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2F2ZS93d3cvY3NzL2ZvbnRhd2Vzb21lLm1pbi5jc3MKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2Nzcy9tYWlu
LmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2F2ZS93d3cvY3NzL3Jlc3VsdC5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2Nzcy9zdHlsZS5jc3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cv
bGliL2Rhdmlkc2hpbWpzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9saWIvZGF2aWRzaGltanMvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZjIwMzExYmFiMS4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS93d3cvbGliL2Rhdmlkc2hpbWpzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9saWIvZGF2aWRzaGltanMvTElDRU5T
RQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS93d3cvbGliL2Rhdmlkc2hpbWpzL3FyY29kZS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9saWIvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvd3d3L2xpYi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjM1ZjRkOTA5ZGQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9saWIvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2xpYi9rZXljb2Rl
cy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2F2ZS93d3cvbGliL3VpLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL3d3dy9saWIvdXRpbHMuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2xpYi93YXZlLXNlcnZpY2Uu
anMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2F2ZS93d3cvcmVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9yZXMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTgwNTJjNmU5Ni4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS93d3cvcmVzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3d3dy9yZXMvc3Bpbm5lci1zb2xpZC5zdmcKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3Jlcy93YXZlbG9nb18y
MDE2LmpwZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93YXZlL3d3dy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMmIwMTVhMDFlZC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2F2ZS93d3cvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dhdmUvd3d3L2NvbXBhcmlzb24uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvY29uZmlndXJhdGlvbi5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9mYXZp
Y29uLmljbwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS93d3cvZmluaXNoLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L2luZGV4Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L25ld3Nlc3Npb24uaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2
ZS93d3cvbmV4dC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93YXZlL3d3dy9vdmVydmlldy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9wYXVzZS5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy9yZXN1
bHRzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dhdmUvd3d3L3N1Ym1pdHJlc3VsdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3dlYmZvbnRzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93YXZlL3d3dy93ZWJmb250cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDc2OTRkNGZkODFmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93
d3cvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAu
c3ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
YXZlL3d3dy93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtYnJhbmRz
LTQwMC53b2ZmCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93YXZlL3d3dy93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYyCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250cy9m
YS1yZWd1bGFyLTQwMC5lb3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnN2ZwotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2Vi
Zm9udHMvZmEtcmVndWxhci00MDAudHRmCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93YXZlL3d3dy93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2Zm
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93YXZl
L3d3dy93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtc29saWQt
OTAwLmVvdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtc29s
aWQtOTAwLnR0ZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd2F2ZS93d3cvd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dhdmUvd3d3L3dlYmZvbnRzL2Zh
LXNvbGlkLTkwMC53b2ZmMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvLmdpdGlnbm9yZSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyLy5naXRpZ25v
cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lODQxM2UwZWU0NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dlYmRyaXZlci8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAord2ViZHJp
dmVyLmVnZy1pbmZvLworKi5weWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NWRiYzczMmVm
ZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2ViZHJpdmVyL3dlYmRyaXZlci9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9fX2luaXRfXy5w
eQppbmRleCBkODYwYjllYTI1MzMuLmE4MTc1MTQwN2U3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJp
dmVyL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9fX2luaXRfXy5weQpAQCAtNiw2ICs2
LDcgQEAgZnJvbSAuY2xpZW50IGltcG9ydCAoCiAgICAgRmluZCwKICAgICBGcmFtZSwKICAgICBT
ZXNzaW9uLAorICAgIFNoYWRvd1Jvb3QsCiAgICAgVGltZW91dHMsCiAgICAgV2luZG93KQogZnJv
bSAuZXJyb3IgaW1wb3J0ICgKQEAgLTM0LDMgKzM1LDUgQEAgZnJvbSAuZXJyb3IgaW1wb3J0ICgK
ICAgICBVbmtub3duTWV0aG9kRXhjZXB0aW9uLAogICAgIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhj
ZXB0aW9uLAogICAgIFdlYkRyaXZlckV4Y2VwdGlvbikKK2Zyb20gLmJpZGkgaW1wb3J0ICgKKyAg
ICBCaWRpU2Vzc2lvbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9iaWRpLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2Vi
ZHJpdmVyL2JpZGkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4w
YmNkNDg5Y2QzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvYmlkaS5weQpAQCAt
MCwwICsxLDU2IEBACitpbXBvcnQgY29weQoraW1wb3J0IHdlYnNvY2tldHMKKworZnJvbSAuIGlt
cG9ydCBjbGllbnQKKworY2xhc3MgQmlkaVNlc3Npb24oY2xpZW50LlNlc3Npb24pOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICBob3N0LAorICAgICAgICAgICAgICAg
ICBwb3J0LAorICAgICAgICAgICAgICAgICB1cmxfcHJlZml4PSIvIiwKKyAgICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGV4dGVuc2lvbj1Ob25lKToK
KyAgICAgICAgIiIiCisgICAgICAgIEFkZCBhIGNhcGFiaWxpdHkgb2YgIndlYlNvY2tldFVybCI6
IFRydWUgdG8gZW5hYmxlCisgICAgICAgIEJpZGlyZWN0aW9uYWwgY29ubmVjdGlvbiBpbiBzZXNz
aW9uIGNyZWF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi53ZWJzb2NrZXRfdHJhbnNw
b3J0ID0gTm9uZQorICAgICAgICBjYXBhYmlsaXRpZXMgPSBzZWxmLl9lbmFibGVfd2Vic29ja2V0
KGNhcGFiaWxpdGllcykKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhob3N0LCBwb3J0LCB1cmxf
cHJlZml4LCBjYXBhYmlsaXRpZXMsIGV4dGVuc2lvbikKKworICAgIGRlZiBfZW5hYmxlX3dlYnNv
Y2tldChzZWxmLCBjYXBzKToKKyAgICAgICAgaWYgY2FwczoKKyAgICAgICAgICAgIGNhcHMuc2V0
ZGVmYXVsdCgiYWx3YXlzTWF0Y2giLCB7fSkudXBkYXRlKHsid2ViU29ja2V0VXJsIjogVHJ1ZX0p
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXBzID0geyJhbHdheXNNYXRjaCI6IHsid2Vi
U29ja2V0VXJsIjogVHJ1ZX19CisgICAgICAgIHJldHVybiBjYXBzCisKKyAgICBkZWYgbWF0Y2go
c2VsZiwgY2FwYWJpbGl0aWVzKToKKyAgICAgICAgIiIiRXhwZW5zaXZlIG1hdGNoIHRvIHNlZSBp
ZiBjYXBhYmlsaXRpZXMgaXMgdGhlIHNhbWUgYXMgcHJldmlvdXNseQorICAgICAgICByZXF1ZXN0
ZWQgY2FwYWJpbGl0aWVzIGlmIHdlYnNvY2tldCB3b3VsZCBiZSBlbmFibGVkLgorCisgICAgICAg
IDpyZXR1cm4gQm9vbGVhbi4KKyAgICAgICAgIiIiCisgICAgICAgIGNhcHMgPSBjb3B5LmRlZXBj
b3B5KGNhcGFiaWxpdGllcykKKyAgICAgICAgY2FwcyA9IHNlbGYuX2VuYWJsZV93ZWJzb2NrZXQo
Y2FwcykKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubWF0Y2goY2FwcykKKworICAgIGFzeW5jIGRl
ZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiU3RhcnQgYSBuZXcgV2ViRHJpdmVyIEJpZGlyZWN0
aW9uYWwgc2Vzc2lvbgorICAgICAgICB3aXRoIHdlYnNvY2tldCBjb25uZWN0ZWQuCisKKyAgICAg
ICAgOnJldHVybjogRGljdGlvbmFyeSB3aXRoIGBjYXBhYmlsaXRpZXNgIGFuZCBgc2Vzc2lvbklk
YC4KKyAgICAgICAgIiIiCisgICAgICAgIHZhbHVlID0gc3VwZXIoKS5zdGFydCgpCisKKyAgICAg
ICAgaWYgbm90IHNlbGYud2Vic29ja2V0X3RyYW5zcG9ydCBvciBub3Qgc2VsZi53ZWJzb2NrZXRf
dHJhbnNwb3J0Lm9wZW46CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldF90cmFuc3BvcnQgPSBh
d2FpdCB3ZWJzb2NrZXRzLmNvbm5lY3Qoc2VsZi5jYXBhYmlsaXRpZXNbIndlYlNvY2tldFVybCJd
KQorICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGFzeW5jIGRlZiBlbmQoc2VsZik6CisgICAg
ICAgICIiIkNsb3NlIHdlYnNvY2tldCBjb25uZWN0aW9uIGZpcnN0IGJlZm9yZSBjbG9zaW5nIHNl
c3Npb24uCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLndlYnNvY2tldF90cmFuc3BvcnQ6
CisgICAgICAgICAgICBhd2FpdCBzZWxmLndlYnNvY2tldF90cmFuc3BvcnQuY2xvc2UoKQorICAg
ICAgICAgICAgc2VsZi53ZWJzb2NrZXRfdHJhbnNwb3J0ID0gTm9uZQorICAgICAgICBzdXBlcigp
LmVuZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVy
L2NsaWVudC5weQppbmRleCBmNGUzYzc2Mzc5NWUuLjIyNTMzNDA5ZmZkMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2
ZXIvd2ViZHJpdmVyL2NsaWVudC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50LnB5CkBAIC0y
LDggKzIsNyBAQCBmcm9tIC4gaW1wb3J0IGVycm9yCiBmcm9tIC4gaW1wb3J0IHByb3RvY29sCiBm
cm9tIC4gaW1wb3J0IHRyYW5zcG9ydAogCi1mcm9tIHNpeCBpbXBvcnQgc3RyaW5nX3R5cGVzCi1m
cm9tIHNpeC5tb3Zlcy51cmxsaWIgaW1wb3J0IHBhcnNlIGFzIHVybHBhcnNlCitmcm9tIHVybGxp
YiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UKIAogCiBkZWYgY29tbWFuZChmdW5jKToKQEAgLTEx
NiwxNCArMTE1LDQ5IEBAIGNsYXNzIEFjdGlvblNlcXVlbmNlKG9iamVjdCk6CiAgICAgZGVmIF9r
ZXlfYWN0aW9uKHNlbGYsIHN1YnR5cGUsIHZhbHVlKToKICAgICAgICAgc2VsZi5fYWN0aW9ucy5h
cHBlbmQoeyJ0eXBlIjogc3VidHlwZSwgInZhbHVlIjogdmFsdWV9KQogCi0gICAgZGVmIF9wb2lu
dGVyX2FjdGlvbihzZWxmLCBzdWJ0eXBlLCBidXR0b24pOgotICAgICAgICBzZWxmLl9hY3Rpb25z
LmFwcGVuZCh7InR5cGUiOiBzdWJ0eXBlLCAiYnV0dG9uIjogYnV0dG9ufSkKKyAgICBkZWYgX3Bv
aW50ZXJfYWN0aW9uKHNlbGYsIHN1YnR5cGUsIGJ1dHRvbj1Ob25lLCB4PU5vbmUsIHk9Tm9uZSwg
ZHVyYXRpb249Tm9uZSwgb3JpZ2luPU5vbmUsIHdpZHRoPU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQ9Tm9uZSwgcHJlc3N1cmU9Tm9uZSwgdGFuZ2VudGlhbF9wcmVzc3VyZT1O
b25lLCB0aWx0X3g9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbHRfeT1Ob25lLCB0
d2lzdD1Ob25lLCBhbHRpdHVkZV9hbmdsZT1Ob25lLCBhemltdXRoX2FuZ2xlPU5vbmUpOgorICAg
ICAgICBhY3Rpb24gPSB7CisgICAgICAgICAgICAidHlwZSI6IHN1YnR5cGUKKyAgICAgICAgfQor
ICAgICAgICBpZiBidXR0b24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rpb25bImJ1dHRv
biJdID0gYnV0dG9uCisgICAgICAgIGlmIHggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rp
b25bIngiXSA9IHgKKyAgICAgICAgaWYgeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlv
blsieSJdID0geQorICAgICAgICBpZiBkdXJhdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGFjdGlvblsiZHVyYXRpb24iXSA9IGR1cmF0aW9uCisgICAgICAgIGlmIG9yaWdpbiBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGFjdGlvblsib3JpZ2luIl0gPSBvcmlnaW4KKyAgICAgICAgaWYg
d2lkdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rpb25bIndpZHRoIl0gPSB3aWR0aAor
ICAgICAgICBpZiBoZWlnaHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rpb25bImhlaWdo
dCJdID0gaGVpZ2h0CisgICAgICAgIGlmIHByZXNzdXJlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgYWN0aW9uWyJwcmVzc3VyZSJdID0gcHJlc3N1cmUKKyAgICAgICAgaWYgdGFuZ2VudGlhbF9w
cmVzc3VyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlvblsidGFuZ2VudGlhbFByZXNz
dXJlIl0gPSB0YW5nZW50aWFsX3ByZXNzdXJlCisgICAgICAgIGlmIHRpbHRfeCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGFjdGlvblsidGlsdFgiXSA9IHRpbHRfeAorICAgICAgICBpZiB0aWx0
X3kgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rpb25bInRpbHRZIl0gPSB0aWx0X3kKKyAg
ICAgICAgaWYgdHdpc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhY3Rpb25bInR3aXN0Il0g
PSB0d2lzdAorICAgICAgICBpZiBhbHRpdHVkZV9hbmdsZSBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGFjdGlvblsiYWx0aXR1ZGVBbmdsZSJdID0gYWx0aXR1ZGVfYW5nbGUKKyAgICAgICAgaWYg
YXppbXV0aF9hbmdsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjdGlvblsiYXppbXV0aEFu
Z2xlIl0gPSBhemltdXRoX2FuZ2xlCisgICAgICAgIHNlbGYuX2FjdGlvbnMuYXBwZW5kKGFjdGlv
bikKIAogICAgIGRlZiBwYXVzZShzZWxmLCBkdXJhdGlvbik6CiAgICAgICAgIHNlbGYuX2FjdGlv
bnMuYXBwZW5kKHsidHlwZSI6ICJwYXVzZSIsICJkdXJhdGlvbiI6IGR1cmF0aW9ufSkKICAgICAg
ICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiBwb2ludGVyX21vdmUoc2VsZiwgeCwgeSwgZHVyYXRp
b249Tm9uZSwgb3JpZ2luPU5vbmUpOgorICAgIGRlZiBwb2ludGVyX21vdmUoc2VsZiwgeCwgeSwg
ZHVyYXRpb249Tm9uZSwgb3JpZ2luPU5vbmUsIHdpZHRoPU5vbmUsIGhlaWdodD1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICAgcHJlc3N1cmU9Tm9uZSwgdGFuZ2VudGlhbF9wcmVzc3VyZT1Ob25l
LCB0aWx0X3g9Tm9uZSwgdGlsdF95PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICB0d2lzdD1O
b25lLCBhbHRpdHVkZV9hbmdsZT1Ob25lLCBhemltdXRoX2FuZ2xlPU5vbmUpOgogICAgICAgICAi
IiJRdWV1ZSBhIHBvaW50ZXJNb3ZlIGFjdGlvbi4KIAogICAgICAgICA6cGFyYW0geDogRGVzdGlu
YXRpb24geC1heGlzIGNvb3JkaW5hdGUgb2YgcG9pbnRlciBpbiBDU1MgcGl4ZWxzLgpAQCAtMTMz
LDE2ICsxNjcsMTAgQEAgY2xhc3MgQWN0aW9uU2VxdWVuY2Uob2JqZWN0KToKICAgICAgICAgOnBh
cmFtIG9yaWdpbjogT3JpZ2luIG9mIGNvb3JkaW5hdGVzLCBlaXRoZXIgInZpZXdwb3J0IiwgInBv
aW50ZXIiIG9yCiAgICAgICAgICAgICAgICAgICAgICAgIGFuIEVsZW1lbnQuIElmIE5vbmUsIHJl
bW90ZSBlbmQgZGVmYXVsdHMgdG8gInZpZXdwb3J0Ii4KICAgICAgICAgIiIiCi0gICAgICAgIGFj
dGlvbiA9IHsKLSAgICAgICAgICAgICJ0eXBlIjogInBvaW50ZXJNb3ZlIiwKLSAgICAgICAgICAg
ICJ4IjogeCwKLSAgICAgICAgICAgICJ5IjogeQotICAgICAgICB9Ci0gICAgICAgIGlmIGR1cmF0
aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYWN0aW9uWyJkdXJhdGlvbiJdID0gZHVyYXRp
b24KLSAgICAgICAgaWYgb3JpZ2luIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYWN0aW9uWyJv
cmlnaW4iXSA9IG9yaWdpbgotICAgICAgICBzZWxmLl9hY3Rpb25zLmFwcGVuZChhY3Rpb24pCisg
ICAgICAgIHNlbGYuX3BvaW50ZXJfYWN0aW9uKCJwb2ludGVyTW92ZSIsIHg9eCwgeT15LCBkdXJh
dGlvbj1kdXJhdGlvbiwgb3JpZ2luPW9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGg9d2lkdGgsIGhlaWdodD1oZWlnaHQsIHByZXNzdXJlPXByZXNzdXJlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YW5nZW50aWFsX3ByZXNzdXJlPXRhbmdlbnRpYWxfcHJl
c3N1cmUsIHRpbHRfeD10aWx0X3gsIHRpbHRfeT10aWx0X3ksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR3aXN0PXR3aXN0LCBhbHRpdHVkZV9hbmdsZT1hbHRpdHVkZV9hbmdsZSwgYXpp
bXV0aF9hbmdsZT1hemltdXRoX2FuZ2xlKQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVm
IHBvaW50ZXJfdXAoc2VsZiwgYnV0dG9uPTApOgpAQCAtMTUxLDE2ICsxNzksMjEgQEAgY2xhc3Mg
QWN0aW9uU2VxdWVuY2Uob2JqZWN0KToKICAgICAgICAgOnBhcmFtIGJ1dHRvbjogUG9pbnRlciBi
dXR0b24gdG8gcGVyZm9ybSBhY3Rpb24gd2l0aC4KICAgICAgICAgICAgICAgICAgICAgICAgRGVm
YXVsdDogMCwgd2hpY2ggcmVwcmVzZW50cyBtYWluIGRldmljZSBidXR0b24uCiAgICAgICAgICIi
IgotICAgICAgICBzZWxmLl9wb2ludGVyX2FjdGlvbigicG9pbnRlclVwIiwgYnV0dG9uKQorICAg
ICAgICBzZWxmLl9wb2ludGVyX2FjdGlvbigicG9pbnRlclVwIiwgYnV0dG9uPWJ1dHRvbikKICAg
ICAgICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiBwb2ludGVyX2Rvd24oc2VsZiwgYnV0dG9uPTAp
OgorICAgIGRlZiBwb2ludGVyX2Rvd24oc2VsZiwgYnV0dG9uPTAsIHdpZHRoPU5vbmUsIGhlaWdo
dD1Ob25lLCBwcmVzc3VyZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgdGFuZ2VudGlhbF9w
cmVzc3VyZT1Ob25lLCB0aWx0X3g9Tm9uZSwgdGlsdF95PU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgICB0d2lzdD1Ob25lLCBhbHRpdHVkZV9hbmdsZT1Ob25lLCBhemltdXRoX2FuZ2xlPU5vbmUp
OgogICAgICAgICAiIiJRdWV1ZSBhIHBvaW50ZXJEb3duIGFjdGlvbiBmb3IgYGJ1dHRvbmAuCiAK
ICAgICAgICAgOnBhcmFtIGJ1dHRvbjogUG9pbnRlciBidXR0b24gdG8gcGVyZm9ybSBhY3Rpb24g
d2l0aC4KICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogMCwgd2hpY2ggcmVwcmVzZW50
cyBtYWluIGRldmljZSBidXR0b24uCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9wb2ludGVy
X2FjdGlvbigicG9pbnRlckRvd24iLCBidXR0b24pCisgICAgICAgIHNlbGYuX3BvaW50ZXJfYWN0
aW9uKCJwb2ludGVyRG93biIsIGJ1dHRvbj1idXR0b24sIHdpZHRoPXdpZHRoLCBoZWlnaHQ9aGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZT1wcmVzc3VyZSwgdGFu
Z2VudGlhbF9wcmVzc3VyZT10YW5nZW50aWFsX3ByZXNzdXJlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aWx0X3g9dGlsdF94LCB0aWx0X3k9dGlsdF95LCB0d2lzdD10d2lzdCwgYWx0
aXR1ZGVfYW5nbGU9YWx0aXR1ZGVfYW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF6aW11dGhfYW5nbGU9YXppbXV0aF9hbmdsZSkKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAg
IGRlZiBjbGljayhzZWxmLCBlbGVtZW50PU5vbmUsIGJ1dHRvbj0wKToKQEAgLTMzOCw2ICszNzEs
NDIgQEAgY2xhc3MgRnJhbWUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIGNscyh1dWlkLCBzZXNz
aW9uKQogCiAKK2NsYXNzIFNoYWRvd1Jvb3Qob2JqZWN0KToKKyAgICBpZGVudGlmaWVyID0gInNo
YWRvdy0wNzViLTRkYTEtYjZiYS1lNTc5YzJkMzIzMGEiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc2Vzc2lvbiwgaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29uc3RydWN0IGEgbmV3IHNo
YWRvdyByb290IHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgIDpwYXJhbSBpZDogU2hhZG93IHJv
b3QgVVVJRCB3aGljaCBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MKKyAgICAgICAgICAgIGFsbCBicm93
c2luZyBjb250ZXh0cy4KKyAgICAgICAgOnBhcmFtIHNlc3Npb246IEN1cnJlbnQgYGB3ZWJkcml2
ZXIuU2Vzc2lvbmBgLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5pZCA9IGlkCisgICAgICAg
IHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9t
X2pzb24oY2xzLCBqc29uLCBzZXNzaW9uKToKKyAgICAgICAgdXVpZCA9IGpzb25bU2hhZG93Um9v
dC5pZGVudGlmaWVyXQorICAgICAgICByZXR1cm4gY2xzKHV1aWQsIHNlc3Npb24pCisKKyAgICBk
ZWYgc2VuZF9zaGFkb3dfY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1Ob25lKToKKyAg
ICAgICAgdXJsID0gInNoYWRvdy97fS97fSIuZm9ybWF0KHNlbGYuaWQsIHVyaSkKKyAgICAgICAg
cmV0dXJuIHNlbGYuc2Vzc2lvbi5zZW5kX3Nlc3Npb25fY29tbWFuZChtZXRob2QsIHVybCwgYm9k
eSkKKworICAgIEBjb21tYW5kCisgICAgZGVmIGZpbmRfZWxlbWVudChzZWxmLCBzdHJhdGVneSwg
c2VsZWN0b3IpOgorICAgICAgICBib2R5ID0geyJ1c2luZyI6IHN0cmF0ZWd5LAorICAgICAgICAg
ICAgICAgICJ2YWx1ZSI6IHNlbGVjdG9yfQorICAgICAgICByZXR1cm4gc2VsZi5zZW5kX3NoYWRv
d19jb21tYW5kKCJQT1NUIiwgImVsZW1lbnQiLCBib2R5KQorCisgICAgQGNvbW1hbmQKKyAgICBk
ZWYgZmluZF9lbGVtZW50cyhzZWxmLCBzdHJhdGVneSwgc2VsZWN0b3IpOgorICAgICAgICBib2R5
ID0geyJ1c2luZyI6IHN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICJ2YWx1ZSI6IHNlbGVjdG9y
fQorICAgICAgICByZXR1cm4gc2VsZi5zZW5kX3NoYWRvd19jb21tYW5kKCJQT1NUIiwgImVsZW1l
bnRzIiwgYm9keSkKKworCiBjbGFzcyBGaW5kKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHNlc3Npb24pOgogICAgICAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uCkBAIC0zNjUsNyAr
NDM0LDcgQEAgY2xhc3MgQ29va2llcyhvYmplY3QpOgogICAgICAgICBjb29raWUgPSB7Im5hbWUi
OiBuYW1lLAogICAgICAgICAgICAgICAgICAgInZhbHVlIjogTm9uZX0KIAotICAgICAgICBpZiBp
c2luc3RhbmNlKG5hbWUsIHN0cmluZ190eXBlcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobmFt
ZSwgc3RyKToKICAgICAgICAgICAgIGNvb2tpZVsidmFsdWUiXSA9IHZhbHVlCiAgICAgICAgIGVs
aWYgaGFzYXR0cih2YWx1ZSwgInZhbHVlIik6CiAgICAgICAgICAgICBjb29raWVbInZhbHVlIl0g
PSB2YWx1ZS52YWx1ZQpAQCAtNDM2LDYgKzUwNSw5IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToK
ICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgc2VsZi5lbmQoKQogCisgICAgZGVmIG1h
dGNoKHNlbGYsIGNhcGFiaWxpdGllcyk6CisgICAgICAgIHJldHVybiBzZWxmLnJlcXVlc3RlZF9j
YXBhYmlsaXRpZXMgPT0gY2FwYWJpbGl0aWVzCisKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAg
ICAgICIiIlN0YXJ0IGEgbmV3IFdlYkRyaXZlciBzZXNzaW9uLgogCkBAIC00NzAsNyArNTQyLDcg
QEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNl
bGYuc2VuZF9jb21tYW5kKCJERUxFVEUiLCAic2Vzc2lvbi8lcyIgJSBzZWxmLnNlc3Npb25faWQp
Ci0gICAgICAgIGV4Y2VwdCBlcnJvci5JbnZhbGlkU2Vzc2lvbklkRXhjZXB0aW9uOgorICAgICAg
ICBleGNlcHQgKE9TRXJyb3IsIGVycm9yLkludmFsaWRTZXNzaW9uSWRFeGNlcHRpb24pOgogICAg
ICAgICAgICAgcGFzcwogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5zZXNzaW9u
X2lkID0gTm9uZQpAQCAtNjgzLDcgKzc1NSw2IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAg
ICBkZWYgc2NyZWVuc2hvdChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9zZXNzaW9u
X2NvbW1hbmQoIkdFVCIsICJzY3JlZW5zaG90IikKIAotCiBjbGFzcyBFbGVtZW50KG9iamVjdCk6
CiAgICAgIiIiCiAgICAgUmVwcmVzZW50YXRpb24gb2YgYSB3ZWIgZWxlbWVudC4KQEAgLTc3MCw2
ICs4NDEsMTEgQEAgY2xhc3MgRWxlbWVudChvYmplY3QpOgogICAgIGRlZiBzY3JlZW5zaG90KHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5zZW5kX2VsZW1lbnRfY29tbWFuZCgiR0VUIiwgInNj
cmVlbnNob3QiKQogCisgICAgQHByb3BlcnR5CisgICAgQGNvbW1hbmQKKyAgICBkZWYgc2hhZG93
X3Jvb3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21tYW5kKCJH
RVQiLCAic2hhZG93IikKKwogICAgIEBjb21tYW5kCiAgICAgZGVmIGF0dHJpYnV0ZShzZWxmLCBu
YW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIsICJh
dHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9lcnJvci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci9lcnJvci5weQppbmRleCA4Mzc5NjU2ZDczZGQuLjgwN2M1OTI1ZTE0ZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2Vycm9yLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9lcnJv
ci5weQpAQCAtMSw4ICsxLDYgQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGpzb24KIAot
ZnJvbSBzaXggaW1wb3J0IGl0ZXJ2YWx1ZXMKLQogCiBjbGFzcyBXZWJEcml2ZXJFeGNlcHRpb24o
RXhjZXB0aW9uKToKICAgICBodHRwX3N0YXR1cyA9IE5vbmUKQEAgLTM0LDYgKzMyLDExIEBAIGNs
YXNzIFdlYkRyaXZlckV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgICAgICByZXR1cm4gbWVzc2Fn
ZQogCiAKK2NsYXNzIERldGFjaGVkU2hhZG93Um9vdEV4Y2VwdGlvbihXZWJEcml2ZXJFeGNlcHRp
b24pOgorICAgIGh0dHBfc3RhdHVzID0gNDA0CisgICAgc3RhdHVzX2NvZGUgPSAiZGV0YWNoZWQg
c2hhZG93IHJvb3QiCisKKwogY2xhc3MgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWRFeGNlcHRpb24o
V2ViRHJpdmVyRXhjZXB0aW9uKToKICAgICBodHRwX3N0YXR1cyA9IDQwMAogICAgIHN0YXR1c19j
b2RlID0gImVsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQiCkBAIC0xMTQsNiArMTE3LDExIEBAIGNs
YXNzIE5vU3VjaEZyYW1lRXhjZXB0aW9uKFdlYkRyaXZlckV4Y2VwdGlvbik6CiAgICAgc3RhdHVz
X2NvZGUgPSAibm8gc3VjaCBmcmFtZSIKIAogCitjbGFzcyBOb1N1Y2hTaGFkb3dSb290RXhjZXB0
aW9uKFdlYkRyaXZlckV4Y2VwdGlvbik6CisgICAgaHR0cF9zdGF0dXMgPSA0MDQKKyAgICBzdGF0
dXNfY29kZSA9ICJubyBzdWNoIHNoYWRvdyByb290IgorCisKIGNsYXNzIE5vU3VjaFdpbmRvd0V4
Y2VwdGlvbihXZWJEcml2ZXJFeGNlcHRpb24pOgogICAgIGh0dHBfc3RhdHVzID0gNDA0CiAgICAg
c3RhdHVzX2NvZGUgPSAibm8gc3VjaCB3aW5kb3ciCkBAIC0yMTAsNiArMjE4LDYgQEAgZGVmIGdl
dChlcnJvcl9jb2RlKToKIAogCiBfZXJyb3JzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QoKQot
Zm9yIGl0ZW0gaW4gbGlzdChpdGVydmFsdWVzKGxvY2FscygpKSk6Citmb3IgaXRlbSBpbiBsaXN0
KGxvY2FscygpLnZhbHVlcygpKToKICAgICBpZiB0eXBlKGl0ZW0pID09IHR5cGUgYW5kIGlzc3Vi
Y2xhc3MoaXRlbSwgV2ViRHJpdmVyRXhjZXB0aW9uKToKICAgICAgICAgX2Vycm9yc1tpdGVtLnN0
YXR1c19jb2RlXSA9IGl0ZW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCBjODExZjZmMjZkYjcuLmU3MWUwMWQ2MjA4
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3Byb3RvY29sLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci9wcm90b2NvbC5weQpAQCAtMiw4ICsyLDYgQEAgaW1wb3J0IGpzb24KIAogaW1wb3J0IHdlYmRy
aXZlcgogCi1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCi0KIAogIiIiV2ViRHJpdmVyIHdpcmUg
cHJvdG9jb2wgY29kZWNzLiIiIgogCkBAIC0yMiw2ICsyMCw4IEBAIGNsYXNzIEVuY29kZXIoanNv
bi5KU09ORW5jb2Rlcik6CiAgICAgICAgICAgICByZXR1cm4ge3dlYmRyaXZlci5GcmFtZS5pZGVu
dGlmaWVyOiBvYmouaWR9CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHdlYmRyaXZlci5X
aW5kb3cpOgogICAgICAgICAgICAgcmV0dXJuIHt3ZWJkcml2ZXIuRnJhbWUuaWRlbnRpZmllcjog
b2JqLmlkfQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCB3ZWJkcml2ZXIuU2hhZG93Um9v
dCk6CisgICAgICAgICAgICByZXR1cm4ge3dlYmRyaXZlci5TaGFkb3dSb290LmlkZW50aWZpZXI6
IG9iai5pZH0KICAgICAgICAgcmV0dXJuIHN1cGVyKEVuY29kZXIsIHNlbGYpLmRlZmF1bHQob2Jq
KQogCiAKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgRGVjb2Rlcihqc29uLkpTT05EZWNvZGVyKToK
ICAgICAgICAgICAgIHJldHVybiB3ZWJkcml2ZXIuRnJhbWUuZnJvbV9qc29uKHBheWxvYWQsIHNl
bGYuc2Vzc2lvbikKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBheWxvYWQsIGRpY3QpIGFuZCB3
ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5bG9hZDoKICAgICAgICAgICAgIHJldHVy
biB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXlsb2FkLCBzZWxmLnNlc3Npb24pCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KSBhbmQgd2ViZHJpdmVyLlNoYWRvd1Jv
b3QuaWRlbnRpZmllciBpbiBwYXlsb2FkOgorICAgICAgICAgICAgcmV0dXJuIHdlYmRyaXZlci5T
aGFkb3dSb290LmZyb21fanNvbihwYXlsb2FkLCBzZWxmLnNlc3Npb24pCiAgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAgICAgICAgICAgIHJldHVybiB7azogc2VsZi5v
YmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMocGF5bG9hZCl9CisgICAgICAgICAg
ICByZXR1cm4ge2s6IHNlbGYub2JqZWN0X2hvb2sodikgZm9yIGssIHYgaW4gcGF5bG9hZC5pdGVt
cygpfQogICAgICAgICByZXR1cm4gcGF5bG9hZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3Ry
YW5zcG9ydC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKaW5kZXggZTgzNmIxOWExNThk
Li4xNWJhNmI4ZmVlMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJk
cml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAtMSwxMCArMSw5IEBACiBpbXBvcnQganNv
bgogaW1wb3J0IHNlbGVjdAogCi1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlLCBQWTMKLWZyb20g
c2l4Lm1vdmVzLmNvbGxlY3Rpb25zX2FiYyBpbXBvcnQgTWFwcGluZwotZnJvbSBzaXgubW92ZXMu
aHR0cF9jbGllbnQgaW1wb3J0IEhUVFBDb25uZWN0aW9uCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIg
aW1wb3J0IHBhcnNlIGFzIHVybHBhcnNlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFw
cGluZworZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KK2Zyb20gdXJsbGli
IGltcG9ydCBwYXJzZSBhcyB1cmxwYXJzZQogCiBmcm9tIC4gaW1wb3J0IGVycm9yCiAKQEAgLTE0
NSwxNSArMTQ0LDE4IEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0KToKICAgICBkZWYg
Y2xvc2Uoc2VsZik6CiAgICAgICAgICIiIkNsb3NlcyB0aGUgY3VycmVudCBIVFRQIGNvbm5lY3Rp
b24sIGlmIHRoZXJlIGlzIG9uZS4iIiIKICAgICAgICAgaWYgc2VsZi5fY29ubjoKLSAgICAgICAg
ICAgIHNlbGYuX2Nvbm4uY2xvc2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
IHNlbGYuX2Nvbm4uY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAg
ICAgICAgICAgIyBUaGUgcmVtb3RlIGNsb3NlZCB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgc2VsZi5fY29ubiA9IE5vbmUKIAogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBjb25uZWN0aW9uKHNlbGYpOgogICAgICAgICAiIiJHZXRzIHRoZSBjdXJyZW50IEhUVFAg
Y29ubmVjdGlvbiwgb3IgbGF6aWx5IGNyZWF0ZXMgb25lLiIiIgogICAgICAgICBpZiBub3Qgc2Vs
Zi5fY29ubjoKICAgICAgICAgICAgIGNvbm5fa3dhcmdzID0ge30KLSAgICAgICAgICAgIGlmIG5v
dCBQWTM6Ci0gICAgICAgICAgICAgICAgY29ubl9rd2FyZ3NbInN0cmljdCJdID0gVHJ1ZQogICAg
ICAgICAgICAgIyBXZSBhcmUgbm90IHNldHRpbmcgYW4gSFRUUCB0aW1lb3V0IG90aGVyIHRoYW4g
dGhlIGRlZmF1bHQgd2hlbiB0aGUKICAgICAgICAgICAgICMgY29ubmVjdGlvbiBpdHMgY3JlYXRl
ZC4gVGhlIHNlbmQgbWV0aG9kIGhhcyBhIHRpbWVvdXQgdmFsdWUgaWYgbmVlZGVkLgogICAgICAg
ICAgICAgc2VsZi5fY29ubiA9IEhUVFBDb25uZWN0aW9uKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCAq
KmNvbm5fa3dhcmdzKQpAQCAtMjM1LDcgKzIzNyw3IEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmZyb21faHR0cChyZXNwb25zZSwgZGVj
b2Rlcj1kZWNvZGVyLCAqKmNvZGVjX2t3YXJncykKIAogICAgIGRlZiBfcmVxdWVzdChzZWxmLCBt
ZXRob2QsIHVyaSwgcGF5bG9hZCwgaGVhZGVycz1Ob25lLCB0aW1lb3V0PU5vbmUpOgotICAgICAg
ICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIHRleHRfdHlwZSk6CisgICAgICAgIGlmIGlzaW5zdGFu
Y2UocGF5bG9hZCwgc3RyKToKICAgICAgICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgi
dXRmLTgiKQogCiAgICAgICAgIGlmIGhlYWRlcnMgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dl
YmRyaXZlci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlMzg1MTNmMWZjLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJk
cml2ZXIvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2Ns
aWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2ViZHJpdmVyL3dlYmRyaXZlci9lcnJvci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvX19pbml0
X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9f
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2FuZHJvaWQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CmluZGV4
IDc0NGUxMzRkMzgyNi4uOGRlZDZlMWE2MDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2FuZHJv
aWQucHkKQEAgLTg5LDggKzg5LDggQEAgZGVmIGluc3RhbGxfYW5kcm9pZF9wYWNrYWdlcyhsb2dn
ZXIsIHNka19wYXRoLCBub19wcm9tcHQ9RmFsc2UpOgogCiAgICAgI1RPRE86IE5vdCBzdXJlIHdo
YXQncyByZWFsbHkgbmVlZGVkIGhlcmUKICAgICBwYWNrYWdlcyA9IFsicGxhdGZvcm0tdG9vbHMi
LAotICAgICAgICAgICAgICAgICJidWlsZC10b29sczsyOS4wLjMiLAotICAgICAgICAgICAgICAg
ICJwbGF0Zm9ybXM7YW5kcm9pZC0yOSIsCisgICAgICAgICAgICAgICAgImJ1aWxkLXRvb2xzOzMw
LjAuMiIsCisgICAgICAgICAgICAgICAgInBsYXRmb3JtczthbmRyb2lkLTMwIiwKICAgICAgICAg
ICAgICAgICAiZW11bGF0b3IiXQogCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgd29yayBub24taW50
ZXJuYWN0aXZlbHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5CmluZGV4IDcyNmQ1NTk4
ZjUyNC4uMjk5NWQ1MmRjYWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkKQEAg
LTksNyArOSw3IEBAIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogZnJv
bSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQogZnJvbSBkaXN0dXRpbHMuc3Bh
d24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQogCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2Ug
aW1wb3J0IHVybHNwbGl0Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQKIGltcG9y
dCByZXF1ZXN0cwogCiBmcm9tIC51dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCBybXRyZWUsIHVudGFy
LCB1bnppcCwgZ2V0X2Rvd25sb2FkX3RvX2Rlc2NyaXB0b3IsIHNoYTI1NnN1bQpAQCAtNTYxLDcg
KzU2MSw3IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlu
ZF9uaWdodGx5X2JpbmFyeShkZXN0KQogCiAgICAgZGVmIGluc3RhbGxfbW9qb2pzKHNlbGYsIGRl
c3QsIGNoYW5uZWwsIGJyb3dzZXJfYmluYXJ5KToKLSAgICAgICAgaWYgY2hhbm5lbCA9PSAibmln
aHRseSI6CisgICAgICAgIGlmIGNoYW5uZWwgPT0gIm5pZ2h0bHkiIG9yIGNoYW5uZWwgPT0gImNh
bmFyeSI6CiAgICAgICAgICAgICB1cmwgPSBzZWxmLl9sYXRlc3RfY2hyb21pdW1fc25hcHNob3Rf
dXJsKCkgKyAibW9qb2pzLnppcCIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNocm9tZV92
ZXJzaW9uID0gc2VsZi52ZXJzaW9uKGJpbmFyeT1icm93c2VyX2JpbmFyeSkKQEAgLTY0NiwxMCAr
NjQ2LDEwIEBAIGNsYXNzIENocm9tZShCcm93c2VyKToKICAgICAgICAgICAgICMgTm8gQ2FuYXJ5
IG9uIExpbnV4LgogICAgICAgICAgICAgcmV0dXJuIGZpbmRfZXhlY3V0YWJsZShuYW1lKQogICAg
ICAgICBpZiB1bmFtZVswXSA9PSAiRGFyd2luIjoKLSAgICAgICAgICAgIGlmIGNoYW5uZWwgPT0g
ImNhbmFyeSI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIvQXBwbGljYXRpb25zL0dvb2dsZSBD
aHJvbWUgQ2FuYXJ5LmFwcC9Db250ZW50cy9NYWNPUy9Hb29nbGUgQ2hyb21lIENhbmFyeSIKLSAg
ICAgICAgICAgICMgQWxsIG90aGVyIGNoYW5uZWxzIHNoYXJlIHRoZSBzYW1lIHBhdGggb24gbWFj
T1MuCi0gICAgICAgICAgICByZXR1cm4gIi9BcHBsaWNhdGlvbnMvR29vZ2xlIENocm9tZS5hcHAv
Q29udGVudHMvTWFjT1MvR29vZ2xlIENocm9tZSIKKyAgICAgICAgICAgIHN1ZmZpeCA9ICIiCisg
ICAgICAgICAgICBpZiBjaGFubmVsIGluICgiYmV0YSIsICJkZXYiLCAiY2FuYXJ5Iik6CisgICAg
ICAgICAgICAgICAgc3VmZml4ID0gIiAiICsgY2hhbm5lbC5jYXBpdGFsaXplKCkKKyAgICAgICAg
ICAgIHJldHVybiAiL0FwcGxpY2F0aW9ucy9Hb29nbGUgQ2hyb21lJXMuYXBwL0NvbnRlbnRzL01h
Y09TL0dvb2dsZSBDaHJvbWUlcyIgJSAoc3VmZml4LCBzdWZmaXgpCiAgICAgICAgIGlmIHVuYW1l
WzBdID09ICJXaW5kb3dzIjoKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmV4cGFuZHZhcnMo
ciIkU1lTVEVNRFJJVkVcUHJvZ3JhbSBGaWxlcyAoeDg2KVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0
aW9uXGNocm9tZS5leGUiKQogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgp
OgpAQCAtNzg1LDggKzc4NSw4IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToKIAogICAgICAgICB0
cnk6CiAgICAgICAgICAgICB2ZXJzaW9uX3N0cmluZyA9IGNhbGwoYmluYXJ5LCAiLS12ZXJzaW9u
Iikuc3RyaXAoKQotICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6
Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gY2FsbCAlcyIgJSBi
aW5hcnkpCisgICAgICAgIGV4Y2VwdCAoc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IsIE9T
RXJyb3IpIGFzIGU6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8g
Y2FsbCAlczogJXMiICUgKGJpbmFyeSwgZSkpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAg
ICAgICBtID0gcmUubWF0Y2gociIoPzpHb29nbGUgQ2hyb21lfENocm9taXVtKSAoLiopIiwgdmVy
c2lvbl9zdHJpbmcpCiAgICAgICAgIGlmIG5vdCBtOgpAQCAtODAwLDggKzgwMCw4IEBAIGNsYXNz
IENocm9tZShCcm93c2VyKToKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2ZXJzaW9uX3N0
cmluZyA9IGNhbGwod2ViZHJpdmVyX2JpbmFyeSwgIi0tdmVyc2lvbiIpLnN0cmlwKCkKLSAgICAg
ICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGNhbGwgJXMiICUgd2ViZHJpdmVyX2JpbmFyeSkK
KyAgICAgICAgZXhjZXB0IChzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciwgT1NFcnJvcikg
YXMgZToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkZhaWxlZCB0byBjYWxsICVz
OiAlcyIgJSAod2ViZHJpdmVyX2JpbmFyeSwgZSkpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQog
ICAgICAgICBtID0gcmUubWF0Y2gociJDaHJvbWVEcml2ZXIgKFswLTldWzAtOS5dKikiLCB2ZXJz
aW9uX3N0cmluZykKICAgICAgICAgaWYgbm90IG06CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0YWxsLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFs
bC5weQppbmRleCA2MzgwNjVhNTMwMTQuLjhiYTVjN2E4NTkxNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9pbnN0YWxsLnB5CkBAIC0yLDYgKzIsOCBAQCBpbXBvcnQgYXJncGFyc2UKIGZyb20gLiBp
bXBvcnQgYnJvd3NlcgogCiBsYXRlc3RfY2hhbm5lbHMgPSB7CisgICAgJ2FuZHJvaWRfd2VibGF5
ZXInOiAnZGV2JywKKyAgICAnYW5kcm9pZF93ZWJ2aWV3JzogJ2RldicsCiAgICAgJ2ZpcmVmb3gn
OiAnbmlnaHRseScsCiAgICAgJ2Nocm9tZSc6ICduaWdodGx5JywKICAgICAnY2hyb21lX2FuZHJv
aWQnOiAnZGV2JywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0Cmlu
ZGV4IDkwZDBjYjZjZGM4Ny4uYTM4NzU0NGYzNDc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L3JlcXVpcmVtZW50cy50eHQKQEAgLTEsMiArMSwyIEBACi1yZXF1ZXN0cz09Mi4yNC4wCity
ZXF1ZXN0cz09Mi4yNS4xCiBtb3ppbmZvPT0xLjIuMSAgIyBodHRwczovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjI2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKaW5k
ZXggNTYxYjhlODVhYTczLi4xZGNiMWQ0NjJlZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkK
QEAgLTMsNyArMyw2IEBAIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3lzCiBm
cm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi1mcm9tIHNpeC5tb3Zl
cyBpbXBvcnQgaW5wdXQKIAogd3B0X3Jvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIHN5cy5w
YXRoLmluc2VydCgwLCBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHdwdF9yb290LCAidG9v
bHMiKSkpCkBAIC0yNDgsNyArMjQ3LDcgQEAgQ29uc2lkZXIgaW5zdGFsbGluZyBjZXJ0dXRpbCB2
aWEgeW91ciBPUyBwYWNrYWdlIG1hbmFnZXIgb3IgZGlyZWN0bHkuIiIiKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw9a3dhcmdzWyJi
cm93c2VyX2NoYW5uZWwiXSkKICAgICAgICAgICAgIGt3YXJnc1sicHJlZnNfcm9vdCJdID0gcHJl
ZnNfcm9vdAogCi0gICAgICAgIGlmIGt3YXJnc1siaGVhZGxlc3MiXSBpcyBOb25lOgorICAgICAg
ICBpZiBrd2FyZ3NbImhlYWRsZXNzIl0gaXMgTm9uZSBhbmQgbm90IGt3YXJnc1siZGVidWdfdGVz
dCJdOgogICAgICAgICAgICAga3dhcmdzWyJoZWFkbGVzcyJdID0gVHJ1ZQogICAgICAgICAgICAg
bG9nZ2VyLmluZm8oIlJ1bm5pbmcgaW4gaGVhZGxlc3MgbW9kZSwgcGFzcyAtLW5vLWhlYWRsZXNz
IHRvIGRpc2FibGUiKQogCkBAIC00MjcsMTAgKzQyNiwxMiBAQCBjbGFzcyBDaHJvbWVpT1MoQnJv
d3NlclNldHVwKToKIGNsYXNzIEFuZHJvaWRXZWJsYXllcihCcm93c2VyU2V0dXApOgogICAgIG5h
bWUgPSAiYW5kcm9pZF93ZWJsYXllciIKICAgICBicm93c2VyX2NscyA9IGJyb3dzZXIuQW5kcm9p
ZFdlYmxheWVyCisgICAgZXhwZXJpbWVudGFsX2NoYW5uZWxzID0gKCJkZXYiLCAiY2FuYXJ5IikK
IAogICAgIGRlZiBzZXR1cF9rd2FyZ3Moc2VsZiwga3dhcmdzKToKICAgICAgICAgaWYga3dhcmdz
LmdldCgiZGV2aWNlX3NlcmlhbCIpOgogICAgICAgICAgICAgc2VsZi5icm93c2VyLmRldmljZV9z
ZXJpYWwgPSBrd2FyZ3NbImRldmljZV9zZXJpYWwiXQorICAgICAgICBicm93c2VyX2NoYW5uZWwg
PSBrd2FyZ3NbImJyb3dzZXJfY2hhbm5lbCJdCiAgICAgICAgIGlmIGt3YXJnc1sid2ViZHJpdmVy
X2JpbmFyeSJdIGlzIE5vbmU6CiAgICAgICAgICAgICB3ZWJkcml2ZXJfYmluYXJ5ID0gTm9uZQog
ICAgICAgICAgICAgaWYgbm90IGt3YXJnc1siaW5zdGFsbF93ZWJkcml2ZXIiXToKQEAgLTQ0Myw3
ICs0NDQsNyBAQCBjbGFzcyBBbmRyb2lkV2VibGF5ZXIoQnJvd3NlclNldHVwKToKICAgICAgICAg
ICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIGNocm9tZWRyaXZlciIpCiAgICAg
ICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnkgPSBzZWxmLmJyb3dzZXIuaW5zdGFsbF93
ZWJkcml2ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PXNlbGYudmVudi5iaW5fcGF0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw9a3dhcmdzWyJicm93c2VyX2NoYW5u
ZWwiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw9YnJvd3Nlcl9jaGFubmVsKQog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVXNpbmcgd2Vi
ZHJpdmVyIGJpbmFyeSAlcyIgJSB3ZWJkcml2ZXJfYmluYXJ5KQogCkBAIC00NTEsNiArNDUyLDkg
QEAgY2xhc3MgQW5kcm9pZFdlYmxheWVyKEJyb3dzZXJTZXR1cCk6CiAgICAgICAgICAgICAgICAg
a3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0gPSB3ZWJkcml2ZXJfYmluYXJ5CiAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFdwdHJ1bkVycm9yKCJVbmFibGUgdG8gbG9j
YXRlIG9yIGluc3RhbGwgY2hyb21lZHJpdmVyIGJpbmFyeSIpCisgICAgICAgIGlmIGJyb3dzZXJf
Y2hhbm5lbCBpbiBzZWxmLmV4cGVyaW1lbnRhbF9jaGFubmVsczoKKyAgICAgICAgICAgIGxvZ2dl
ci5pbmZvKCJBdXRvbWF0aWNhbGx5IHR1cm5pbmcgb24gZXhwZXJpbWVudGFsIGZlYXR1cmVzIGZv
ciBXZWJMYXllciBEZXYvQ2FuYXJ5IikKKyAgICAgICAgICAgIGt3YXJnc1siYmluYXJ5X2FyZ3Mi
XS5hcHBlbmQoIi0tZW5hYmxlLWV4cGVyaW1lbnRhbC13ZWItcGxhdGZvcm0tZmVhdHVyZXMiKQog
CiAKIGNsYXNzIEFuZHJvaWRXZWJ2aWV3KEJyb3dzZXJTZXR1cCk6CkBAIC03NTIsOSArNzU2LDgg
QEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZz1Ob25lLCBmb3JtYXR0
ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93cHRydW5uZXIodmVudiwgKiprd2FyZ3Mp
OgogICAgIGZyb20gd3B0cnVubmVyIGltcG9ydCB3cHRjb21tYW5kbGluZQotICAgIGZyb20gc2l4
IGltcG9ydCBpdGVyaXRlbXMKIAotICAgIGt3YXJncyA9IHV0aWxzLkt3YXJncyhpdGVyaXRlbXMo
a3dhcmdzKSkKKyAgICBrd2FyZ3MgPSB1dGlscy5Ld2FyZ3Moa3dhcmdzLml0ZW1zKCkpCiAKICAg
ICBrd2FyZ3NbInByb2R1Y3QiXSA9IGt3YXJnc1sicHJvZHVjdCJdLnJlcGxhY2UoIi0iLCAiXyIp
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weQppbmRleCA0ZDEwODc4ZDlkNWYu
LjVjMzk4NTg4MTc0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdGZpbGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weQpAQCAt
MiwxMCArMiwxMSBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MK
IGltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIAogZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKLWZyb20gc2l4IGltcG9ydCBlbnN1cmVfdGV4dCwgZW5z
dXJlX3N0ciwgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQsIGVuc3VyZV9z
dHIKIAogdHJ5OgogICAgIGZyb20gLi5tYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QKQEAgLTc2LDgg
Kzc3LDE5IEBAIGRlZiBicmFuY2hfcG9pbnQoKToKICAgICAgICAgICAgICAgICAgICAgIGlmIGl0
ZW0gYW5kIGl0ZW0gIT0gIl4lcyIgJSBoZWFkXQogCiAgICAgICAgICMgZ2V0IGFsbCBjb21taXRz
IG9uIEhFQUQgYnV0IG5vdCByZWFjaGFibGUgZnJvbSBhbnl0aGluZyBpbiBub3RfaGVhZHMKLSAg
ICAgICAgY29tbWl0cyA9IGdpdCgicmV2LWxpc3QiLCAiLS10b3BvLW9yZGVyIiwgIi0tcGFyZW50
cyIsICJIRUFEIiwgKm5vdF9oZWFkcykKKyAgICAgICAgY21kID0gWyJnaXQiLCAicmV2LWxpc3Qi
LCAiLS10b3BvLW9yZGVyIiwgIi0tcGFyZW50cyIsICItLXN0ZGluIiwgIkhFQUQiXQorICAgICAg
ICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3dkPXdwdF9yb290KQorICAgICAgICBjb21taXRzX2J5dGVzLCBfID0gcHJvYy5jb21t
dW5pY2F0ZShiIlxuIi5qb2luKGl0ZW0uZW5jb2RlKCJhc2NpaSIpIGZvciBpdGVtIGluIG5vdF9o
ZWFkcykpCisgICAgICAgIGlmIHByb2MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAgICAgcmFp
c2Ugc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IocHJvYy5yZXR1cm5jb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0c19ieXRlcykKKwog
ICAgICAgICBjb21taXRfcGFyZW50cyA9IE9yZGVyZWREaWN0KCkgICMgdHlwZTogRGljdFtUZXh0
LCBMaXN0W1RleHRdXQorICAgICAgICBjb21taXRzID0gY29tbWl0c19ieXRlcy5kZWNvZGUoImFz
Y2lpIikKICAgICAgICAgaWYgY29tbWl0czoKICAgICAgICAgICAgIGZvciBsaW5lIGluIGNvbW1p
dHMuc3BsaXQoIlxuIik6CiAgICAgICAgICAgICAgICAgbGluZV9jb21taXRzID0gbGluZS5zcGxp
dCgiICIpCkBAIC04Niw3ICs5OCw3IEBAIGRlZiBicmFuY2hfcG9pbnQoKToKICAgICAgICAgYnJh
bmNoX3BvaW50ID0gTm9uZQogCiAgICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBjb21taXRzLCB0
YWtlIHRoZSBmaXJzdCBwYXJlbnQgdGhhdCBpcyBub3QgaW4gY29tbWl0cwotICAgICAgICBmb3Ig
Y29tbWl0LCBwYXJlbnRzIGluIGl0ZXJpdGVtcyhjb21taXRfcGFyZW50cyk6CisgICAgICAgIGZv
ciBjb21taXQsIHBhcmVudHMgaW4gY29tbWl0X3BhcmVudHMuaXRlbXMoKToKICAgICAgICAgICAg
IGZvciBwYXJlbnQgaW4gcGFyZW50czoKICAgICAgICAgICAgICAgICBpZiBwYXJlbnQgbm90IGlu
IGNvbW1pdF9wYXJlbnRzOgogICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBwYXJl
bnQKQEAgLTIzOSw3ICsyNTEsNyBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5n
ZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgbm9udGVzdHNfY2hhbmdlZCA9IHNldChm
aWxlc19jaGFuZ2VkKQogICAgIHdwdF9tYW5pZmVzdCA9IGxvYWRfbWFuaWZlc3QobWFuaWZlc3Rf
cGF0aCwgbWFuaWZlc3RfdXBkYXRlKQogCi0gICAgdGVzdF90eXBlcyA9IFsiY3Jhc2h0ZXN0Iiwg
InRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIl0KKyAgICB0ZXN0X3R5cGVzID0gWyJj
cmFzaHRlc3QiLCAicHJpbnQtcmVmdGVzdCIsICJyZWZ0ZXN0IiwgInRlc3RoYXJuZXNzIiwgIndk
c3BlYyJdCiAgICAgc3VwcG9ydF9maWxlcyA9IHtvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHBhdGgp
CiAgICAgICAgICAgICAgICAgICAgICBmb3IgXywgcGF0aCwgXyBpbiB3cHRfbWFuaWZlc3QuaXRl
cnR5cGVzKCJzdXBwb3J0Iil9CiAgICAgd2RzcGVjX3Rlc3RfZmlsZXMgPSB7b3MucGF0aC5qb2lu
KHdwdF9yb290LCBwYXRoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVz
dF9icm93c2VyLnB5CmluZGV4IDNkNWYyZDNhZTZmYS4uNTkxYjAyODNlODU0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90
ZXN0cy90ZXN0X2Jyb3dzZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CkBAIC0xLDkgKzEs
OSBAQAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBpbnNwZWN0CiBpbXBvcnQgbW9jaworaW1wb3J0
IHB5dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCi1p
bXBvcnQgcHl0ZXN0Ci1pbXBvcnQgaW5zcGVjdAogCiBmcm9tIHRvb2xzLndwdCBpbXBvcnQgYnJv
d3NlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5CmluZGV4
IDc0MjQ2ZmFmZGQ3Ny4uMzJlM2UyYTcwYjlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC90ZXN0cy90ZXN0X3dwdC5weQpAQCAtMTUsMTAgKzE1LDggQEAgZXhjZXB0IEltcG9ydEVycm9y
OgogCiBpbXBvcnQgcHl0ZXN0CiAKLWZyb20gdG9vbHMud3B0IGltcG9ydCB1dGlscywgd3B0Ci0K
LQogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorZnJv
bSB0b29scy53cHQgaW1wb3J0IHV0aWxzLCB3cHQKIAogCiBkZWYgaXNfcG9ydF84MDAwX2luX3Vz
ZSgpOgpAQCAtMTgzLDggKzE4MSw2IEBAIGRlZiB0ZXN0X3J1bl96ZXJvX3Rlc3RzKCk6CiAKIEBw
eXRlc3QubWFyay5zbG93CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKLUBweXRlc3QubWFy
ay5za2lwaWYoc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCkgYW5kIHN5cy5wbGF0Zm9ybSA9PSAn
ZGFyd2luJywKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtdWx0aXByb2Nlc3NpbmcgdGVz
dCBoYW5ncyBpbiBQeXRob24gMy44IG9uIG1hY09TICgjMjQ4ODApIikKIGRlZiB0ZXN0X3J1bl9m
YWlsaW5nX3Rlc3QoKToKICAgICAiIiJGYWlsaW5nIHRlc3RzIHNob3VsZCBiZSByZXBvcnRlZCB3
aXRoIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMgdW5sZXNzIHRoZQogICAgIGAtLW5vLWZhaWwtb24t
dW5leHBlY3RlZGAgb3B0aW9uIGhhcyBiZWVuIHNwZWNpZmllZC4iIiIKQEAgLTIwNyw4ICsyMDMs
NiBAQCBkZWYgdGVzdF9ydW5fZmFpbGluZ190ZXN0KCk6CiAKIEBweXRlc3QubWFyay5zbG93CiBA
cHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKLUBweXRlc3QubWFyay5za2lwaWYoc3lzLnZlcnNp
b25faW5mbyA+PSAoMywgOCkgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywKLSAgICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtdWx0aXByb2Nlc3NpbmcgdGVzdCBoYW5ncyBpbiBQeXRob24g
My44IG9uIG1hY09TICgjMjQ4ODApIikKIGRlZiB0ZXN0X3J1bl92ZXJpZnlfdW5zdGFibGUodGVt
cF90ZXN0KToKICAgICAiIiJVbnN0YWJsZSB0ZXN0cyBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aCBh
IG5vbi16ZXJvIGV4aXQgc3RhdHVzLiBTdGFibGUKICAgICB0ZXN0cyBzaG91bGQgYmUgcmVwb3J0
ZWQgd2l0aCBhIHplcm8gZXhpdCBzdGF0dXMuIiIiCkBAIC0zMjMsNiArMzE3LDcgQEAgZGVmIHRl
c3RfdGVzdHNfYWZmZWN0ZWRfaWRsaGFybmVzcyhjYXBzeXMsIG1hbmlmZXN0X2Rpcik6CiAgICAg
YXNzZXJ0ICgid2VicnRjLWlkZW50aXR5L2lkbGhhcm5lc3MuaHR0cHMud2luZG93LmpzXG4iICsK
ICAgICAgICAgICAgICJ3ZWJydGMtaW5zZXJ0YWJsZS1zdHJlYW1zL2lkbGhhcm5lc3MuaHR0cHMu
d2luZG93LmpzXG4iICsKICAgICAgICAgICAgICJ3ZWJydGMtc3RhdHMvaWRsaGFybmVzcy53aW5k
b3cuanNcbiIgKworICAgICAgICAgICAgIndlYnJ0Yy1zdGF0cy9zdXBwb3J0ZWQtc3RhdHMuaHRt
bFxuIiArCiAgICAgICAgICAgICAid2VicnRjL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LmpzXG4i
KSA9PSBvdXQKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzg2MGFiZWIzYTkuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI0ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Rlc3RzL2xhdGVzdF9tb3ppbGxhX2NlbnRyYWwudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9i
cm93c2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvdGVzdHMvdGVzdF9pbnN0YWxsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3Rz
L3Rlc3RfcmV2bGlzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcnVuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90
ZXN0cy90ZXN0X3dwdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKaW5kZXggNTA3MTcxMzU1
Mzk0Li5jMmY3NDViNTcwNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQpAQCAtMSwxMSAr
MSwxMiBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3LHB5MzUscHkzNixweTM3LHB5MzgKK2Vudmxp
c3QgPSBweTM2LHB5MzcscHkzOAogc2tpcHNkaXN0PVRydWUKIHNraXBfbWlzc2luZ19pbnRlcnBy
ZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQotICBweXRlc3QKKyAgIyBTYW1lIGFz
IHRvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdCwgYWxzbyB0aGUgbGFzdCB2ZXJzaW9uIHRoYXQgc3Vw
cG9ydHMgUHl0aG9uIDIKKyAgcHl0ZXN0PT00LjYuMTEKICAgcHl0ZXN0LWNvdgogICBoeXBvdGhl
c2lzCiAgICMgbW9jayBubyBsb25nZXIgc3VwcG9ydHMgUHl0aG9uIDIgc2luY2UgdjQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdXRpbHMucHkKaW5kZXggNjFkY2RhNTQ3MGNiLi4zMGU5NTc0ZWMwYTAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3V0aWxzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3V0aWxzLnB5CkBAIC05LDcgKzksNyBAQCBpbXBvcnQgdGltZQog
aW1wb3J0IHppcGZpbGUKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGZyb20gc29ja2V0IGltcG9y
dCBlcnJvciBhcyBTb2NrZXRFcnJvciAgIyBOT1FBOiBOODEyCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJs
b3BlbgogCiBNWVBZID0gRmFsc2UKIGlmIE1ZUFk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmly
dHVhbGVudi5weQppbmRleCA1MWI5N2NlYWQ4ZGMuLjFjZmIxNTA2Y2ZiNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmly
dHVhbGVudi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CkBAIC01NSwxMyArNTUsOSBAQCBjbGFzcyBWaXJ0
dWFsZW52KG9iamVjdCk6CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgcGlwX3BhdGgoc2VsZik6
Ci0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPj0gMzoKLSAgICAgICAgICAgIHBp
cF9leGVjdXRhYmxlID0gInBpcDMiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwaXBfZXhl
Y3V0YWJsZSA9ICJwaXAyIgotICAgICAgICBwYXRoID0gZmluZF9leGVjdXRhYmxlKHBpcF9leGVj
dXRhYmxlLCBzZWxmLmJpbl9wYXRoKQorICAgICAgICBwYXRoID0gZmluZF9leGVjdXRhYmxlKCJw
aXAzIiwgc2VsZi5iaW5fcGF0aCkKICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgotICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbm90IGZvdW5kIiAlIHBpcF9leGVjdXRhYmxlKQorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicGlwMyBub3QgZm91bmQiKQogICAgICAgICByZXR1
cm4gcGF0aAogCiAgICAgQHByb3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTA5MDI5Yzc3OTQuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvYW5kcm9pZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvY3JlYXRl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvaW5zdGFsbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L21hY2gtZW11bGF0b3IubWFuaWZlc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9tYXJrZG93bi5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVxdWly
ZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Jldmxpc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0ZmlsZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXBkYXRlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRp
bHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC92aXJ0dWFsZW52LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvd3B0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKaW5kZXggZWZh
OTg1YzdjYzE3Li4xZmFmN2Q3YWY3MzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3dwdC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKQEAgLTYs
NyArNiw2IEBAIGltcG9ydCBzeXMKIAogZnJvbSB0b29scyBpbXBvcnQgbG9jYWxwYXRocyAgIyBu
b3FhOiBGNDAxCiAKLWZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIGZyb20gLiBpbXBvcnQgdmly
dHVhbGVudgogCiAKQEAgLTIzLDcgKzIyLDcgQEAgZGVmIGxvYWRfY29tbWFuZHMoKToKICAgICAg
ICAgYmFzZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoYWJzX3BhdGgpCiAgICAgICAgIHdpdGggb3Bl
bihhYnNfcGF0aCwgInIiKSBhcyBmOgogICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChmKQot
ICAgICAgICAgICAgZm9yIGNvbW1hbmQsIHByb3BzIGluIGl0ZXJpdGVtcyhkYXRhKToKKyAgICAg
ICAgICAgIGZvciBjb21tYW5kLCBwcm9wcyBpbiBkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0ICJwYXRoIiBpbiBwcm9wcwogICAgICAgICAgICAgICAgIGFzc2VydCAic2NyaXB0
IiBpbiBwcm9wcwogICAgICAgICAgICAgICAgIHJ2W2NvbW1hbmRdID0gewpAQCAtMzEsNyArMzAs
NiBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAgICAgICAgICAgICAgICAic2NyaXB0Ijog
cHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAgICAgICAicGFyc2VyIjogcHJvcHMuZ2V0
KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgInBhcnNlX2tub3duIjogcHJvcHMuZ2V0
KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgInB5M29ubHkiOiBw
cm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAgICAgICAgICAgICAgICAgICJoZWxwIjog
cHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsZW52IjogcHJv
cHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxs
IjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAtNTAsOSArNDgsOCBAQCBkZWYgcGFyc2Vf
YXJncyhhcmd2LCBjb21tYW5kcz1sb2FkX2NvbW1hbmRzKCkpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0ic2tpcF92ZW52X3NldHVwIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9IldoZXRoZXIgdG8gdXNlIHRoZSB2aXJ0dWFsZW52IGFzLWlzLiBNdXN0IHNldCAtLXZlbnYg
YXMgd2VsbCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1kZWJ1ZyIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9IlJ1biB0aGUgZGVidWdnZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24i
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcHkzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwg
aGVscD0iUnVuIHdpdGggcHl0aG9uMyIpCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3Vi
cGFyc2VycyhkZXN0PSJjb21tYW5kIikKLSAgICBmb3IgY29tbWFuZCwgcHJvcHMgaW4gaXRlcml0
ZW1zKGNvbW1hbmRzKToKKyAgICBmb3IgY29tbWFuZCwgcHJvcHMgaW4gY29tbWFuZHMuaXRlbXMo
KToKICAgICAgICAgc3VicGFyc2Vycy5hZGRfcGFyc2VyKGNvbW1hbmQsIGhlbHA9cHJvcHNbImhl
bHAiXSwgYWRkX2hlbHA9RmFsc2UpCiAKICAgICBhcmdzLCBleHRyYSA9IHBhcnNlci5wYXJzZV9r
bm93bl9hcmdzKGFyZ3YpCkBAIC05Nyw4ICs5NCw3IEBAIGRlZiBjcmVhdGVfY29tcGxldGVfcGFy
c2VyKCk6CiAgICAgZm9yIGNvbW1hbmQgaW4gY29tbWFuZHM6CiAgICAgICAgIHByb3BzID0gY29t
bWFuZHNbY29tbWFuZF0KIAotICAgICAgICBpZiAocHJvcHNbInZpcnR1YWxlbnYiXSBhbmQKLSAg
ICAgICAgICAgIChub3QgcHJvcHNbInB5M29ubHkiXSBvciBzeXMudmVyc2lvbl9pbmZvLm1ham9y
ID09IDMpKToKKyAgICAgICAgaWYgcHJvcHNbInZpcnR1YWxlbnYiXToKICAgICAgICAgICAgIHNl
dHVwX3ZpcnR1YWxlbnYoTm9uZSwgRmFsc2UsIHByb3BzKQogCiAgICAgICAgIHN1YnBhcnNlciA9
IGltcG9ydF9jb21tYW5kKCd3cHQnLCBjb21tYW5kLCBwcm9wcylbMV0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
Ly5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNDk1NjE2ZWYxZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvLmdpdGlnbm9y
ZQpAQCAtMCwwICsxLDggQEAKKyoucHlbY29dCisqfgorKiMKK1wjKgorX3ZpcnR1YWxlbnYKK3Rl
c3QvdGVzdC5jZmcKK3Rlc3QvbWV0YWRhdGEvTUFOSUZFU1QuanNvbgord3B0cnVubmVyLmVnZy1p
bmZvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhhZmMwMWFlMDgwLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvYXJjaGl0ZWN0dXJlLnN2ZwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3Mv
ZGVzaWduLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL2RvY3MvZXhwZWN0YXRpb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy9pbnRlcm5hbHMu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvZG9jcy91c2FnZS5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9yZXF1aXJlbWVudHMudHh0CmluZGV4IDQ4OTNkN2JkNjI4OS4uMDU5ZjIxMWVhZTBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQK
QEAgLTEsMTAgKzEsMTAgQEAKIGh0bWw1bGliPT0xLjEKIG1vemluZm89PTEuMi4xICAjIGh0dHBz
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEyMjYKLW1vemxvZz09
Ni4xCittb3psb2c9PTcuMS4wCiBtb3pkZWJ1Zz09MC4yCiAjIFBpbGxvdyA3IHJlcXVpcmVzIFB5
dGhvbiAzCiBwaWxsb3c9PTYuMi4yOyBweXRob25fdmVyc2lvbiA8PSAnMi43JyAgIyBweXVwOiA8
Ny4wCi1waWxsb3c9PTguMC4xOyBweXRob25fdmVyc2lvbiA+PSAnMy4wJwotdXJsbGliM1tzZWN1
cmVdPT0xLjI1LjExCi1yZXF1ZXN0cz09Mi4yNC4wCitwaWxsb3c9PTguMS4xOyBweXRob25fdmVy
c2lvbiA+PSAnMy4wJwordXJsbGliM1tzZWN1cmVdPT0xLjI2LjIKK3JlcXVlc3RzPT0yLjI1LjEK
IHNpeD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfYW5kcm9pZF93ZWJ2aWV3
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3JlcXVpcmVtZW50c19hbmRyb2lkX3dlYnZpZXcudHh0CmluZGV4IGU3ZTcxNjFi
MTQyNi4uODc0OTgwYjMzOGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfYW5kcm9pZF93
ZWJ2aWV3LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfYW5kcm9pZF93ZWJ2aWV3LnR4dApAQCAt
MSArMSBAQAotbW96cHJvY2Vzcz09MS4yLjAKK21venByb2Nlc3M9PTEuMi4xCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWUudHh0
CmluZGV4IGU3ZTcxNjFiMTQyNi4uODc0OTgwYjMzOGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHNfY2hyb21lLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dApAQCAtMSAr
MSBAQAotbW96cHJvY2Vzcz09MS4yLjAKK21venByb2Nlc3M9PTEuMi4xCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHNfY2hyb21lX2FuZHJvaWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9t
ZV9hbmRyb2lkLnR4dAppbmRleCBlN2U3MTYxYjE0MjYuLjg3NDk4MGIzMzhhNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9tZV9hbmRyb2lkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVu
dHNfY2hyb21lX2FuZHJvaWQudHh0CkBAIC0xICsxIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96
cHJvY2Vzcz09MS4yLjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWVfaW9zLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWVfaW9zLnR4dAppbmRleCBlN2U3MTYxYjE0MjYuLjg3
NDk4MGIzMzhhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9tZV9pb3MudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWVfaW9zLnR4dApAQCAtMSArMSBAQAotbW96cHJvY2Vz
cz09MS4yLjAKK21venByb2Nlc3M9PTEuMi4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNf
ZWRnZS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZS50eHQKaW5kZXggMGE2MTIwOGQ3N2MxLi4w
ZWY2NGMyMzJiY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19lZGdlLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHNfZWRnZS50eHQKQEAgLTEsMiArMSwyIEBACi1tb3pwcm9jZXNzPT0xLjIu
MAorbW96cHJvY2Vzcz09MS4yLjEKIHNlbGVuaXVtPT0zLjE0MS4wCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZV9jaHJv
bWl1bS50eHQKaW5kZXggM2YxZWUxZjZiMjBhLi44NzQ5ODBiMzM4YTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50c19lZGdlX2Nocm9taXVtLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRn
ZV9jaHJvbWl1bS50eHQKQEAgLTEgKzEgQEAKLW1venByb2Nlc3M9PTEuMi4wDQorbW96cHJvY2Vz
cz09MS4yLjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19lcGlwaGFueS50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZXBpcGhhbnkudHh0CmluZGV4IGU3ZTcxNjFiMTQyNi4uODc0OTgwYjMzOGE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZXBpcGhhbnkudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVp
cmVtZW50c19lcGlwaGFueS50eHQKQEAgLTEgKzEgQEAKLW1venByb2Nlc3M9PTEuMi4wCittb3pw
cm9jZXNzPT0xLjIuMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CmluZGV4IDhiNDU3MDNhNTU5Ni4uNDMyNDVmOTky
ZDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZveC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVx
dWlyZW1lbnRzX2ZpcmVmb3gudHh0CkBAIC0xLDEwICsxLDEwIEBACiBtYXJpb25ldHRlX2RyaXZl
cj09My4xLjAKIG1vemNyYXNoPT0yLjAuMAotbW96aW5zdGFsbD09Mi4wLjAKK21vemluc3RhbGw9
PTIuMC4xCiBtb3psZWFrPT0wLjIKIG1vem5ldHdvcms9PTEuMS4wCi1tb3pwcm9jZXNzPT0xLjIu
MAorbW96cHJvY2Vzcz09MS4yLjEKIG1venByb2ZpbGU9PTIuNS4wCi1tb3pydW5uZXI9PTguMC4w
Cittb3pydW5uZXI9PTguMS4wCiBtb3p2ZXJzaW9uPT0yLjMuMAotcHN1dGlsPT01LjcuMgorcHN1
dGlsPT01LjguMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2llLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVp
cmVtZW50c19pZS50eHQKaW5kZXggMGE2MTIwOGQ3N2MxLi4wZWY2NGMyMzJiY2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50c19pZS50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2llLnR4dApA
QCAtMSwyICsxLDIgQEAKLW1venByb2Nlc3M9PTEuMi4wCittb3pwcm9jZXNzPT0xLjIuMQogc2Vs
ZW5pdW09PTMuMTQxLjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19vcGVyYS50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHNfb3BlcmEudHh0CmluZGV4IDBhNjEyMDhkNzdjMS4uMGVmNjRjMjMyYmNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfb3BlcmEudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19vcGVyYS50eHQKQEAgLTEsMiArMSwyIEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJv
Y2Vzcz09MS4yLjEKIHNlbGVuaXVtPT0zLjE0MS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVu
dHNfc2FmYXJpLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19zYWZhcmkudHh0CmluZGV4IGU3ZTcxNjFi
MTQyNi4uNTViNDc0YmE5MTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4dApAQCAtMSArMSwyIEBACi1tb3pwcm9j
ZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKK3BzdXRpbD09NS44LjAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2UudHh0Cmlu
ZGV4IDM0YzY2ZWUyMzhiNi4uZWFlN2VmM2YwMDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVu
dHNfc2F1Y2UudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQKQEAgLTEsMyArMSwz
IEBACi1tb3pwcm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKIHNlbGVuaXVtPT0zLjE0
MS4wCi1yZXF1ZXN0cz09Mi4yNC4wCityZXF1ZXN0cz09Mi4yNS4xCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfc2Vydm8udHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NlcnZvLnR4dAppbmRleCBl
N2U3MTYxYjE0MjYuLjg3NDk4MGIzMzhhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3Nl
cnZvLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2Vydm8udHh0CkBAIC0xICsxIEBACi1tb3pw
cm9jZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c193ZWJraXQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3dlYmtpdC50eHQKaW5kZXggZTdlNzE2
MWIxNDI2Li44NzQ5ODBiMzM4YTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0CkBAIC0xICsxIEBACi1tb3pwcm9j
ZXNzPT0xLjIuMAorbW96cHJvY2Vzcz09MS4yLjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWwuaHRtbC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgxYWVmMDQ5Y2QxMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwuaW5pCisrKyAvZGV2L251bGwKQEAgLTEsMyAr
MCwwIEBACi1bcmVmdGVzdF9hbmRfZmFpbC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVj
dGVkOiBGQUlMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9j
eWNsZV9mYWlsLmh0bWwuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3lj
bGVfZmFpbC5odG1sLmluaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcyYjMzZjc3
NjRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
Y3ljbGVfZmFpbC5odG1sLmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3JlZnRl
c3RfY3ljbGVfZmFpbC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVjdGVkOiBGQUlMCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaF9mYWlsLmh0
bWwuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1s
LmluaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNkYzMzNjJmYWM0Li4wMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5o
dG1sLmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3JlZnRlc3RfbWF0Y2hfZmFp
bC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVjdGVkOiBGQUlMCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLmh0bWwuaW5pIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sLmluaQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA1NTMzN2UyZDY1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1s
LmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3JlZnRlc3RfbWlzbWF0Y2hfZmFp
bC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVjdGVkOiBGQUlMCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC5odG1sLmluaSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwuaW5pCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTM2MjQxYWQyOWMuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC5odG1sLmluaQor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbF0K
LSAgdHlwZTogcmVmdGVzdAotICBleHBlY3RlZDogVElNRU9VVApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfdGltZW91dC5odG1sLmluaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0
YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBkMWI5YmFkZTk1ZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0
YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbC5pbmkKKysrIC9kZXYvbnVsbApAQCAt
MSwzICswLDAgQEAKLVtyZWZ0ZXN0X3RpbWVvdXQuaHRtbF0KLSAgdHlwZTogcmVmdGVzdAotICBl
eHBlY3RlZDogVElNRU9VVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWU0ZmJiNzYzOTYuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVm
dGVzdF9hbmRfZmFpbC5odG1sLmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X2N5Y2xlX2ZhaWwuaHRtbC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9t
YXRjaF9mYWlsLmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlz
bWF0Y2hfZmFpbC5odG1sLmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3Jl
Zl90aW1lb3V0Lmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfdGlt
ZW91dC5odG1sLmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9m
aXJlZm94L3N1YmRpci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5l
c3MvZmlyZWZveC9zdWJkaXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY1MmRjMDlkZTU1Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEv
dGVzdGhhcm5lc3MvZmlyZWZveC9zdWJkaXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2Zp
cmVmb3gvc3ViZGlyL3Rlc3RfcHJlZl9yZXNldC5odG1sLmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC9tZXRhZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9t
ZXRhZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3YjFiYjE4MzJhOTEuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNz
L2ZpcmVmb3gvX19kaXJfXy5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVm
b3gvdGVzdF9wcmVmX3NldC5odG1sLmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90
ZXN0aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3Ro
YXJuZXNzL3N1YmRpci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNWZiZDg5ZWZlZmE5Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0
aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL3N1YmRpci9fX2Rpcl9f
LmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3Mvc3ViZGlyL3Rlc3RoYXJuZXNzXzEu
aHRtbC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzRlYTI1Mzk3MjUuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFy
bmVzcy90ZXN0aGFybmVzc18wLmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVz
cy90ZXN0aGFybmVzc19lcnJvci5odG1sLmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5l
c3MvdGVzdGhhcm5lc3NfdGltZW91dC5odG1sLmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0LnB5CmluZGV4IDQyZTdhYmJiYWI0OS4uZmQzM2M5YWUyZWEyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CkBAIC0zLDEx
ICszLDExIEBAIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKK2Zyb20g
Y29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKKwogZnJvbSBtb3psb2cgaW1wb3J0IHN0
cnVjdHVyZWRsb2cKIGZyb20gbW96bG9nLmhhbmRsZXJzIGltcG9ydCBCYXNlSGFuZGxlciwgU3Ry
ZWFtSGFuZGxlcgogZnJvbSBtb3psb2cuZm9ybWF0dGVycyBpbXBvcnQgTWFjaEZvcm1hdHRlcgot
ZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwotZnJvbSBzaXgubW92ZXMuY29uZmlncGFyc2VyIGlt
cG9ydCBDb25maWdQYXJzZXIKIGZyb20gd3B0cnVubmVyIGltcG9ydCB3cHRjb21tYW5kbGluZSwg
d3B0cnVubmVyCiAKIGhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSkKQEAgLTg0LDcgKzg0LDcgQEAgZGVmIHJ1bl90ZXN0cyhwcm9kdWN0LCBrd2FyZ3MpOgog
CiBkZWYgc2V0dGluZ3NfdG9fYXJndihzZXR0aW5ncyk6CiAgICAgcnYgPSBbXQotICAgIGZvciBu
YW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3MpOgorICAgIGZvciBuYW1lLCB2YWx1ZSBp
biBzZXR0aW5ncy5pdGVtcygpOgogICAgICAgICBrZXkgPSAiLS0lcyIgJSBuYW1lCiAgICAgICAg
IGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJ2LmFwcGVuZChrZXkpCkBAIC0xMTAsNyArMTEw
LDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3MpOgogCiAgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KHRl
c3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0dGluZ3MgaW4gaXRlcml0ZW1z
KGNvbmZpZ1sicHJvZHVjdHMiXSk6CisgICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0dGluZ3Mg
aW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZW1zKCk6CiAgICAgICAgIGlmIGFyZ3MucHJvZHVjdCBh
bmQgcHJvZHVjdCBub3QgaW4gYXJncy5wcm9kdWN0OgogICAgICAgICAgICAgY29udGludWUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4tZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGUxNDVkNjBiNTViLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0ICswLDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBocmVmPWdyZWVuLmh0bWw+Ci08c3R5bGU+
Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVu
LXJlZi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJlZi1l
eHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE2N2JiNThkNTcu
LjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4tcmVmLWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTxzdHlsZT4KLTpyb290
IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4tcmVmLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4tcmVmLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBlMTQ1ZDYwYjU1Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1yZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotPGxpbmsgcmVsPW1hdGNoIGhyZWY9Z3JlZW4uaHRtbD4KLTxzdHlsZT4KLTpyb290
IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4uaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzODE2N2JiNThkNTcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvZ3JlZW4uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0
eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpyZWR9Ci08L3N0eWxlPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0Lmh0dHBzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdC5odHRwcy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzODE2N2JiNThkNTcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRl
c3QvcmVmdGVzdC5odHRwcy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0Lmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNDVmMTBmMzVl
Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0Lmh0
dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBo
cmVmPWdyZWVuLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpyZWR9Ci08
L3N0eWxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT09ICJodHRw
czoiKSB7Ci0gICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9y
ID0gImdyZWVuIjsKLX0KLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGZiOWFhMTUxNzYuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFp
bC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVm
dGVzdCBjaGFpbiB0aGF0IHNob3VsZCBmYWlsPC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVm
PXJlZC5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0
eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyOTYwMTk1MzU2MjMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRl
c3QvcmVmdGVzdF9hbmRfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08
dGl0bGU+UmVmdGVzdCBjaGFpbiB0aGF0IHNob3VsZCBmYWlsPC90aXRsZT4KLTxsaW5rIHJlbD1t
YXRjaCBocmVmPXJlZnRlc3RfYW5kX2ZhaWxfMC1yZWYuaHRtbD4KLTxzdHlsZT4KLTpyb290IHti
YWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFp
bF8wLXJlZi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
YW5kX2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmI2NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6cmVkfQotPC9z
dHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbF8wLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDRmYjlhYTE1MTc2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPlJlZnRlc3QgY2hhaW4gdGhhdCBzaG91bGQgZmFpbDwv
dGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWQuaHRtbD4KLTxzdHlsZT4KLTpyb290IHti
YWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGUtZXhw
ZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE4YmZkODg0NDdiLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGUt
ZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPk9SIG1h
dGNoIHRoYXQgc2hvdWxkIHBhc3M8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVz
dF9jeWNsZV8xLXJlZi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3Jl
ZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0YTg0YTNiNjc0MWUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVmdGVzdF9jeWNsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08
dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBhbGwgbWF0Y2g8L3RpdGxlPgotPGxpbmsgcmVsPW1h
dGNoIGhyZWY9cmVmdGVzdF9jeWNsZV8wLXJlZi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tn
cm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVm
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8w
LXJlZi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWJlMGI2
NDFkZWYuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVz
dF9jeWNsZV8wLXJlZi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBhbGwgbWF0Y2g8L3RpdGxlPgotPGxpbmsgcmVs
PW1hdGNoIGhyZWY9cmVmdGVzdF9jeWNsZS5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91
bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVmLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8wLXJlZi5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMThiZmQ4ODQ0N2IuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8wLXJlZi5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+T1IgbWF0Y2ggdGhhdCBzaG91bGQg
cGFzczwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0
bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1yZWYtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRhODRhM2I2NzQxZS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLWV4cGVjdGVkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGFs
bCBtYXRjaDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlXzAtcmVm
Lmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU5YmUwYjY0MWRlZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAg
QEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGFsbCBtYXRjaDwvdGl0bGU+Ci08bGluayBy
ZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dy
b3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFp
bC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGU1NDhjNDYy
MjUuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9j
eWNsZV9mYWlsLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0
aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGZhaWxzPC90aXRsZT4KLTxsaW5rIHJlbD1taXNtYXRj
aCBocmVmPXJlZnRlc3RfY3ljbGVfZmFpbC5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91
bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWwuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWwuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc1ZTc2YzRjYzliLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBmYWls
czwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1yZWYu
aHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NWU3NmM0Y2M5Yi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1yZWYt
ZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPlJlZnRl
c3Qgd2l0aCBjeWNsZSwgZmFpbHM8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVz
dF9jeWNsZV9mYWlsXzAtcmVmLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xv
cjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbF8wLXJlZi5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbF8wLXJlZi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGU1NDhjNDYyMjUuLjAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVm
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGgg
Y3ljbGUsIGZhaWxzPC90aXRsZT4KLTxsaW5rIHJlbD1taXNtYXRjaCBocmVmPXJlZnRlc3RfY3lj
bGVfZmFpbC5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08
L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzODE2N2JiNThkNTcuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVl
bn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMzM2NjNmMxZWNkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X21hdGNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0
aXRsZT5yZWw9bWF0Y2ggdGhhdCBzaG91bGQgcGFzczwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2gg
aHJlZj1ncmVlbi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59
Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08c3R5bGU+Ci06cm9vdCB7YmFj
a2dyb3VuZC1jb2xvcjpyZWR9Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkyNzJlZjc0ZGE4Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+cmVsPW1hdGNoIHRoYXQgc2hvdWxk
IGZhaWw8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVkLmh0bWw+Ci08c3R5bGU+Ci06
cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
bWlzbWF0Y2gtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X21pc21hdGNoLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJi
Njc3ZTAwNjM0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0X21pc21hdGNoLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAg
QEAKLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH0KLTwvc3R5bGU+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfbWlzbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X21pc21hdGNoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNWZhMDc1
MGQ4My4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X21pc21hdGNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5yZWw9
bWlzbWF0Y2ggdGhhdCBzaG91bGQgcGFzczwvdGl0bGU+Ci08bGluayByZWw9bWlzbWF0Y2ggaHJl
Zj1yZWQuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9z
dHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLWV4cGVjdGVkLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MTY3YmI1OGQ1Ny4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoX2ZhaWwtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qg
e2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21h
dGNoX2ZhaWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNo
X2ZhaWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQxNjBjNGZjMjAwLi4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0
Y2hfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+cmVsPW1p
c21hdGNoIHRoYXQgc2hvdWxkIGZhaWw8L3RpdGxlPgotPGxpbmsgcmVsPW1pc21hdGNoIGhyZWY9
Z3JlZW4uaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9z
dHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJiNjc3ZTAwNjM0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X29yXzAtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6cmVkfQotPC9z
dHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRl
c3QvcmVmdGVzdF9vcl8wLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNTFk
ZTIxNjQ0MS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X29yXzAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotPHRpdGxlPk9SIG1h
dGNoIHRoYXQgc2hvdWxkIHBhc3M8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVkLmh0
bWw+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1ncmVlbi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2Jh
Y2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1l
b3V0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZf
dGltZW91dC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGNi
YjcxZTBjM2MuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVm
dGVzdF9yZWZfdGltZW91dC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi08aHRtbCBjbGFzcz0icmVmdGVzdC13YWl0Ij4KLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBz
aG91bGQgdGltZSBvdXQgaW4gdGhlIHJlZjwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1y
ZWZ0ZXN0X3JlZl90aW1lb3V0LXJlZi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQt
Y29sb3I6Z3JlZW59Ci08L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFh
ZjY4ZjVjYjVmYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTxo
dG1sPgotPHRpdGxlPnJlbD1tYXRjaCB0aGF0IHNob3VsZCB0aW1lIG91dCBpbiB0aGUgcmVmPC90
aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZnRlc3RfcmVmX3RpbWVvdXQtcmVmLmh0bWw+
Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF90aW1lb3V0LWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF90aW1lb3V0LWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MTY3YmI1OGQ1Ny4uMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQtZXhw
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qg
e2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVv
dXQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEwZTY3NmJmMDA1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfdGltZW91dC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08aHRtbCBjbGFzcz0icmVmdGVzdC13YWl0Ij4KLTx0
aXRsZT5yZWw9bWF0Y2ggdGhhdCBzaG91bGQgdGltZW91dDwvdGl0bGU+Ci08bGluayByZWw9bWF0
Y2ggaHJlZj1ncmVlbi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3Jl
ZW59Ci08L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3Rfd2FpdF8wLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVz
dF93YWl0XzAtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2
NzdlMDA2MzRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3Rfd2FpdF8wLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH0KLTwvc3R5bGU+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0
L3JlZnRlc3Rfd2FpdF8wLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF93
YWl0XzAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5MjcxNWM2MWU3Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8w
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08aHRtbCBjbGFzcz0icmVmdGVz
dC13YWl0Ij4KLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBzaG91bGQgZmFpbDwvdGl0bGU+Ci08bGlu
ayByZWw9bWF0Y2ggaHJlZj1yZWQuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNv
bG9yOnJlZH0KLTwvc3R5bGU+Ci08c2NyaXB0Pgotc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVlbiI7
Ci0gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUgPSAiIjsKLX0sIDIwMDApOwot
PC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDEwMDgxNDFlYy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDUzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9n
cmVlbi1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJlZi1l
eHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJlZi5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdC5odHRwcy1l
eHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3QuaHR0cHMuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLWV4cGVjdGVkLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsXzAtcmVmLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS1leHBlY3RlZC5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGUuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVmLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8wLXJlZi5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1yZWYtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2guaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0X21pc21hdGNoLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRl
c3QvcmVmdGVzdF9taXNtYXRjaC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3RfbWlzbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0
L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3Rfb3JfMC1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3Rfb3JfMC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVv
dXQtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90
aW1lb3V0Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF90aW1lb3V0LWV4
cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF90aW1lb3V0Lmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF93YWl0XzAtZXhwZWN0ZWQuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3dhaXRfMC5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvc3ViZGlyL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3N1YmRpci93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjZjVjNzFjNjk4Li4w
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3N1
YmRpci93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC9zdWJkaXIvdGVzdF9wcmVm
X2luaGVyaXQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC9zdWJk
aXIvdGVzdF9wcmVmX3Jlc2V0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVz
dGhhcm5lc3MvZmlyZWZveC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhh
cm5lc3MvZmlyZWZveC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmIzNjA2ZWRiM2JlLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0
aGFybmVzcy9maXJlZm94L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3Rlc3Rf
cHJlZl9kaXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC90ZXN0
X3ByZWZfc2V0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3Mv
c3ViZGlyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9zdWJk
aXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4N2Y4NWVh
NzliNS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3Mvc3Vi
ZGlyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdGVzdGhhcm5lc3NfMS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxOGFkYWI0MDNmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvdGVz
dGhhcm5lc3MuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvdGVzdGhh
cm5lc3NfMC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy90ZXN0aGFybmVzc19l
cnJvci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy90ZXN0aGFybmVzc19sb25n
X3RpbWVvdXQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvdGVzdGhhcm5lc3Nf
dGltZW91dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIwMTFiNmIw
NGZkLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5jZmcuZXhhbXBsZQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdG94LmluaSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkKaW5k
ZXggNzk4ZjY0YTNlNDIyLi4yYjliY2ExN2ZhNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdG94LmluaQpAQCAtMiwxMiArMiwxMyBAQAogeGZhaWxfc3RyaWN0PXRydWUKIAogW3Rv
eF0KLWVudmxpc3QgPSBweTI3LXtiYXNlLGNocm9tZSxlZGdlLGZpcmVmb3gsaWUsb3BlcmEsc2Fm
YXJpLHNhdWNlLHNlcnZvLHdlYmtpdCx3ZWJraXRndGtfbWluaWJyb3dzZXIsZXBpcGhhbnl9LHtw
eTM1LHB5MzYscHkzNyxweTM4fS1iYXNlCitlbnZsaXN0ID0gcHkzOC17YmFzZSxjaHJvbWUsZWRn
ZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21p
bmlicm93c2VyLGVwaXBoYW55fSx7cHkzNixweTM3fS1iYXNlCiBza2lwX21pc3NpbmdfaW50ZXJw
cmV0ZXJzID0gRmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBzID0KLSAgICAgcHl0ZXN0Pj0yLjkKKyAg
ICAgIyBTYW1lIGFzIHRvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdCwgYWxzbyB0aGUgbGFzdCB2ZXJz
aW9uIHRoYXQgc3VwcG9ydHMgUHl0aG9uIDIKKyAgICAgcHl0ZXN0PT00LjYuMTEKICAgICAgcHl0
ZXN0LWNvdgogICAgICBweXRlc3QteGRpc3QKICAgICAgIyBtb2NrIG5vIGxvbmdlciBzdXBwb3J0
cyBQeXRob24gMiBzaW5jZSB2NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThlOTcwYTBlZGY2
Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwzNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURNRS5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2FuZHJvaWRfd2Vidmlldy50eHQK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19jaHJvbWVfYW5k
cm9pZC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lX2lvcy50eHQKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVu
dHNfZWRnZS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1
aXJlbWVudHNfZXBpcGhhbnkudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
cmVxdWlyZW1lbnRzX2llLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19vcGVyYS50eHQKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1
aXJlbWVudHNfc2FmYXJpLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1
aXJlbWVudHNfc2Vydm8udHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3dlYmtpdC50eHQKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9zZXR1
cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3RveC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIuZGVmYXVsdC5pbmkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9fX2luaXRfXy5weQppbmRl
eCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL19f
aW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0j
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJsYXllci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CmluZGV4IDYxMTA0NTBiNzI4Mi4uZWMwNWM3Njhm
ZmNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJsYXllci5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJsYXllci5weQpAQCAtMSw5
ICsxLDcgQEAKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIs
IEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKK2Zyb20gLmJhc2UgaW1wb3J0IHJlcXVpcmVf
YXJnCiBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVyICAgIyBub3FhOiBG
NDAxCiBmcm9tIC5jaHJvbWUgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBjaHJvbWVfZXhlY3V0
b3Jfa3dhcmdzCi1mcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgQ2hyb21lRHJpdmVyU2Vy
dmVyCitmcm9tIC5jaHJvbWVfYW5kcm9pZCBpbXBvcnQgQ2hyb21lQW5kcm9pZEJyb3dzZXJCYXNl
CiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVz
dGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQw
MQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcmNocm9tZSBpbXBvcnQgQ2hyb21lRHJpdmVyV2Rz
cGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQpAQCAtMjgsMTQgKzI2LDE2IEBAIGRlZiBjaGVja19h
cmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5
IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25m
aWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVu
X2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dh
cmdzWyJiaW5hcnkiXSwKICAgICAgICAgICAgICJkZXZpY2Vfc2VyaWFsIjoga3dhcmdzWyJkZXZp
Y2Vfc2VyaWFsIl0sCiAgICAgICAgICAgICAid2ViZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1sid2Vi
ZHJpdmVyX2JpbmFyeSJdLAotICAgICAgICAgICAgIndlYmRyaXZlcl9hcmdzIjoga3dhcmdzLmdl
dCgid2ViZHJpdmVyX2FyZ3MiKX0KKyAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJn
cy5nZXQoIndlYmRyaXZlcl9hcmdzIiksCisgICAgICAgICAgICAic3RhY2twYXJzZXJfc2NyaXB0
Ijoga3dhcmdzLmdldCgic3RhY2twYXJzZXJfc2NyaXB0IiksCisgICAgICAgICAgICAib3V0cHV0
X2RpcmVjdG9yeSI6IGt3YXJncy5nZXQoIm91dHB1dF9kaXJlY3RvcnkiKX0KIAogCi1kZWYgZXhl
Y3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVu
X2luZm9fZGF0YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZl
cl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICoqa3dhcmdzKToKICAgICAjIFVzZSB1cGRhdGUoKSB0byBtb2RpZnkgdGhlIGdsb2JhbCBs
aXN0IGluIHBsYWNlLgogICAgIF93cHRzZXJ2ZV9wb3J0cy51cGRhdGUoc2V0KApAQCAtNDMsNyAr
NDMsNyBAQCBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2Fj
aGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgc2VydmVyX2NvbmZpZ1sncG9ydHMn
XVsnd3MnXSArIHNlcnZlcl9jb25maWdbJ3BvcnRzJ11bJ3dzcyddCiAgICAgKSkKIAotICAgIGV4
ZWN1dG9yX2t3YXJncyA9IGNocm9tZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJf
Y29uZmlnLAorICAgIGV4ZWN1dG9yX2t3YXJncyA9IGNocm9tZV9leGVjdXRvcl9rd2FyZ3MobG9n
Z2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAgICAgZGVs
IGV4ZWN1dG9yX2t3YXJnc1siY2FwYWJpbGl0aWVzIl1bImdvb2c6Y2hyb21lT3B0aW9ucyJdWyJw
cmVmcyJdCkBAIC03NCw2MSArNzQsMjIgQEAgZGVmIGVudl9vcHRpb25zKCk6CiAgICAgcmV0dXJu
IHsic2VydmVyX2hvc3QiOiAiMTI3LjAuMC4xIn0KIAogCi0jVE9ETzogcmVmYWN0b3IgY29tbW9u
IGVsZW1lbnRzIG9mIFdlYmxheWVyU2hlbGwgYW5kIENocm9tZUFuZHJvaWRCcm93c2VyCi1jbGFz
cyBXZWJsYXllclNoZWxsKEJyb3dzZXIpOgorY2xhc3MgV2VibGF5ZXJTaGVsbChDaHJvbWVBbmRy
b2lkQnJvd3NlckJhc2UpOgogICAgICIiIkNocm9tZSBpcyBiYWNrZWQgYnkgY2hyb21lZHJpdmVy
LCB3aGljaCBpcyBzdXBwbGllZCB0aHJvdWdoCiAgICAgYGB3cHRydW5uZXIud2ViZHJpdmVyLkNo
cm9tZURyaXZlclNlcnZlcmBgLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxv
Z2dlciwgYmluYXJ5LCB3ZWJkcml2ZXJfYmluYXJ5PSJjaHJvbWVkcml2ZXIiLAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwKKyAgICAgICAgICAgICAgICAgd2ViZHJpdmVy
X2JpbmFyeT0iY2hyb21lZHJpdmVyIiwKKyAgICAgICAgICAgICAgICAgcmVtb3RlX3F1ZXVlPU5v
bmUsCiAgICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgd2ViZHJpdmVyX2FyZ3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdz
PU5vbmUsCisgICAgICAgICAgICAgICAgIHN0YWNrcGFyc2VyX3NjcmlwdD1Ob25lLAorICAgICAg
ICAgICAgICAgICBvdXRwdXRfZGlyZWN0b3J5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGVzIGEg
bmV3IHJlcHJlc2VudGF0aW9uIG9mIENocm9tZS4gIFRoZSBgYmluYXJ5YCBhcmd1bWVudCBnaXZl
cwogICAgICAgICB0aGUgYnJvd3NlciBiaW5hcnkgdG8gdXNlIGZvciB0ZXN0aW5nLiIiIgotICAg
ICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKKyAgICAgICAgc3VwZXIoV2VibGF5
ZXJTaGVsbCwgc2VsZikuX19pbml0X18obG9nZ2VyLAorICAgICAgICAgICAgICAgIHdlYmRyaXZl
cl9iaW5hcnksIHJlbW90ZV9xdWV1ZSwgZGV2aWNlX3NlcmlhbCwKKyAgICAgICAgICAgICAgICB3
ZWJkcml2ZXJfYXJncywgc3RhY2twYXJzZXJfc2NyaXB0LCBvdXRwdXRfZGlyZWN0b3J5KQogICAg
ICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQotICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBk
ZXZpY2Vfc2VyaWFsCi0gICAgICAgIHNlbGYuc2VydmVyID0gQ2hyb21lRHJpdmVyU2VydmVyKHNl
bGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5h
cnk9d2ViZHJpdmVyX2JpbmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz13ZWJkcml2ZXJfYXJncykKLSAgICAgICAgc2VsZi5zZXR1cF9hZGJfcmV2ZXJz
ZSgpCi0KLSAgICBkZWYgX2FkYl9ydW4oc2VsZiwgYXJncyk6Ci0gICAgICAgIGNtZCA9IFsnYWRi
J10KLSAgICAgICAgaWYgc2VsZi5kZXZpY2Vfc2VyaWFsOgotICAgICAgICAgICAgY21kLmV4dGVu
ZChbJy1zJywgc2VsZi5kZXZpY2Vfc2VyaWFsXSkKLSAgICAgICAgY21kLmV4dGVuZChhcmdzKQot
ICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCcgJy5qb2luKGNtZCkpCi0gICAgICAgIHN1YnByb2Nl
c3MuY2hlY2tfY2FsbChjbWQpCi0KLSAgICBkZWYgc2V0dXBfYWRiX3JldmVyc2Uoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX2FkYl9ydW4oWyd3YWl0LWZvci1kZXZpY2UnXSkKLSAgICAgICAgc2VsZi5f
YWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAgIHNlbGYuX2FkYl9y
dW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFsbCddKQotICAgICAgICAjICJhZGIgcmV2ZXJzZSIg
YmFzaWNhbGx5IGZvcndhcmRzIG5ldHdvcmsgY29ubmVjdGlvbiBmcm9tIGRldmljZSB0bwotICAg
ICAgICAjIGhvc3QuCi0gICAgICAgIGZvciBwb3J0IGluIF93cHRzZXJ2ZV9wb3J0czoKLSAgICAg
ICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJ3RjcDolZCcgJSBwb3J0LCAndGNwOiVk
JyAlIHBvcnRdKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2Vs
Zi5zZXJ2ZXIuc3RhcnQoYmxvY2s9RmFsc2UpCi0KLSAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1G
YWxzZSk6Ci0gICAgICAgIHNlbGYuc2VydmVyLnN0b3AoZm9yY2U9Zm9yY2UpCi0KLSAgICBkZWYg
cGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIucGlkCi0KLSAgICBkZWYgaXNf
YWxpdmUoc2VsZik6Ci0gICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRo
ZSBkcml2ZXIgaXMgYWxpdmUsCi0gICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFi
b3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KLSAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAg
ICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCi0KLSAgICBkZWYgY2xlYW51cChzZWxm
KToKLSAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQn
LCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJy0t
cmVtb3ZlLWFsbCddKQotCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0gICAgICAg
IHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsid2ViZHJpdmVyX3VybCI6IHNlbGYuc2VydmVyLnVy
bH0KKyAgICAgICAgc2VsZi53cHRzZXJ2ZXJfcG9ydHMgPSBfd3B0c2VydmVfcG9ydHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5CmluZGV4IGQwNzczODczNTA4Zi4uNTRk
ZDEyODFmZDhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2
aWV3LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKQEAg
LTEsOSArMSw3IEBACi1pbXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIC5iYXNlIGltcG9ydCBCcm93
c2VyLCBFeGVjdXRvckJyb3dzZXIsIHJlcXVpcmVfYXJnCitmcm9tIC5iYXNlIGltcG9ydCByZXF1
aXJlX2FyZwogZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9x
YTogRjQwMQogZnJvbSAuY2hyb21lIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgY2hyb21lX2V4
ZWN1dG9yX2t3YXJncwotZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IENocm9tZURyaXZl
clNlcnZlcgorZnJvbSAuY2hyb21lX2FuZHJvaWQgaW1wb3J0IENocm9tZUFuZHJvaWRCcm93c2Vy
QmFzZQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZl
clRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6
IEY0MDEKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JjaHJvbWUgaW1wb3J0IENocm9tZURyaXZl
cldkc3BlY0V4ZWN1dG9yICAjIG5vcWE6IEY0MDEKQEAgLTI4LDE0ICsyNiwxNiBAQCBkZWYgY2hl
Y2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJpdmVyX2Jp
bmFyeSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwg
Y29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUs
IHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7ImJpbmFyeSI6
IGt3YXJnc1siYmluYXJ5Il0sCiAgICAgICAgICAgICAiZGV2aWNlX3NlcmlhbCI6IGt3YXJnc1si
ZGV2aWNlX3NlcmlhbCJdLAogICAgICAgICAgICAgIndlYmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3Nb
IndlYmRyaXZlcl9iaW5hcnkiXSwKLSAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJn
cy5nZXQoIndlYmRyaXZlcl9hcmdzIil9CisgICAgICAgICAgICAid2ViZHJpdmVyX2FyZ3MiOiBr
d2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpLAorICAgICAgICAgICAgInN0YWNrcGFyc2VyX3Nj
cmlwdCI6IGt3YXJncy5nZXQoInN0YWNrcGFyc2VyX3NjcmlwdCIpLAorICAgICAgICAgICAgIm91
dHB1dF9kaXJlY3RvcnkiOiBrd2FyZ3MuZ2V0KCJvdXRwdXRfZGlyZWN0b3J5Iil9CiAKIAotZGVm
IGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIs
IHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBz
ZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAg
ICAgICAgICAqKmt3YXJncyk6CiAgICAgIyBVc2UgdXBkYXRlKCkgdG8gbW9kaWZ5IHRoZSBnbG9i
YWwgbGlzdCBpbiBwbGFjZS4KICAgICBfd3B0c2VydmVfcG9ydHMudXBkYXRlKHNldCgKQEAgLTQz
LDcgKzQzLDcgQEAgZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcs
IGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgIHNlcnZlcl9jb25maWdbJ3Bv
cnRzJ11bJ3dzJ10gKyBzZXJ2ZXJfY29uZmlnWydwb3J0cyddWyd3c3MnXQogICAgICkpCiAKLSAg
ICBleGVjdXRvcl9rd2FyZ3MgPSBjaHJvbWVfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2Vy
dmVyX2NvbmZpZywKKyAgICBleGVjdXRvcl9rd2FyZ3MgPSBjaHJvbWVfZXhlY3V0b3Jfa3dhcmdz
KGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAg
IGRlbCBleGVjdXRvcl9rd2FyZ3NbImNhcGFiaWxpdGllcyJdWyJnb29nOmNocm9tZU9wdGlvbnMi
XVsicHJlZnMiXQpAQCAtNTEsMTAgKzUxLDExIEBAIGRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90
eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICMg
Tm90ZSB0aGF0IGZvciBXZWJWaWV3LCB3ZSBsYXVuY2ggYSB0ZXN0IHNoZWxsIGFuZCBoYXZlIHRo
ZSB0ZXN0IHNoZWxsIHVzZSBXZWJWaWV3LgogICAgICMgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL0hFQUQvYW5kcm9pZF93ZWJ2aWV3L2RvY3Mvd2Vidmll
dy1zaGVsbC5tZAogICAgIGNhcGFiaWxpdGllc1siZ29vZzpjaHJvbWVPcHRpb25zIl1bImFuZHJv
aWRQYWNrYWdlIl0gPSBcCi0gICAgICAgICJvcmcuY2hyb21pdW0ud2Vidmlld19zaGVsbCIKLSAg
ICBjYXBhYmlsaXRpZXNbImdvb2c6Y2hyb21lT3B0aW9ucyJdWyJhbmRyb2lkQWN0aXZpdHkiXSA9
ICIuV2ViUGxhdGZvcm1UZXN0c0FjdGl2aXR5IgotICAgIGlmIGt3YXJncy5nZXQoJ2RldmljZV9z
ZXJpYWwnKToKLSAgICAgICAgY2FwYWJpbGl0aWVzWyJnb29nOmNocm9tZU9wdGlvbnMiXVsiYW5k
cm9pZERldmljZVNlcmlhbCJdID0ga3dhcmdzWydkZXZpY2Vfc2VyaWFsJ10KKyAgICAgICAga3dh
cmdzLmdldCgicGFja2FnZV9uYW1lIiwgIm9yZy5jaHJvbWl1bS53ZWJ2aWV3X3NoZWxsIikKKyAg
ICBjYXBhYmlsaXRpZXNbImdvb2c6Y2hyb21lT3B0aW9ucyJdWyJhbmRyb2lkQWN0aXZpdHkiXSA9
IFwKKyAgICAgICAgIm9yZy5jaHJvbWl1bS53ZWJ2aWV3X3NoZWxsLldlYlBsYXRmb3JtVGVzdHNB
Y3Rpdml0eSIKKyAgICBpZiBrd2FyZ3MuZ2V0KCJkZXZpY2Vfc2VyaWFsIik6CisgICAgICAgIGNh
cGFiaWxpdGllc1siZ29vZzpjaHJvbWVPcHRpb25zIl1bImFuZHJvaWREZXZpY2VTZXJpYWwiXSA9
IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdCiAKICAgICAjIFdvcmthcm91bmQ6IGRyaXZlci5xdWl0
KCkgY2Fubm90IHF1aXQgU3lzdGVtV2ViVmlld1NoZWxsLgogICAgIGV4ZWN1dG9yX2t3YXJnc1si
cGF1c2VfYWZ0ZXJfdGVzdCJdID0gRmFsc2UKQEAgLTczLDYxICs3NCwyMSBAQCBkZWYgZW52X29w
dGlvbnMoKToKICAgICByZXR1cm4geyJzZXJ2ZXJfaG9zdCI6ICIxMjcuMC4wLjEifQogCiAKLSNU
T0RPOiByZWZhY3RvciBjb21tb24gZWxlbWVudHMgb2YgU3lzdGVtV2ViVmlld1NoZWxsIGFuZCBD
aHJvbWVBbmRyb2lkQnJvd3NlcgotY2xhc3MgU3lzdGVtV2ViVmlld1NoZWxsKEJyb3dzZXIpOgor
Y2xhc3MgU3lzdGVtV2ViVmlld1NoZWxsKENocm9tZUFuZHJvaWRCcm93c2VyQmFzZSk6CiAgICAg
IiIiQ2hyb21lIGlzIGJhY2tlZCBieSBjaHJvbWVkcml2ZXIsIHdoaWNoIGlzIHN1cHBsaWVkIHRo
cm91Z2gKICAgICBgYHdwdHJ1bm5lci53ZWJkcml2ZXIuQ2hyb21lRHJpdmVyU2VydmVyYGAuCiAg
ICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZl
cl9iaW5hcnk9ImNocm9tZWRyaXZlciIsCisgICAgICAgICAgICAgICAgIHJlbW90ZV9xdWV1ZT1O
b25lLAogICAgICAgICAgICAgICAgICBkZXZpY2Vfc2VyaWFsPU5vbmUsCi0gICAgICAgICAgICAg
ICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgorICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJn
cz1Ob25lLAorICAgICAgICAgICAgICAgICBzdGFja3BhcnNlcl9zY3JpcHQ9Tm9uZSwKKyAgICAg
ICAgICAgICAgICAgb3V0cHV0X2RpcmVjdG9yeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlcyBh
IG5ldyByZXByZXNlbnRhdGlvbiBvZiBDaHJvbWUuICBUaGUgYGJpbmFyeWAgYXJndW1lbnQgZ2l2
ZXMKICAgICAgICAgdGhlIGJyb3dzZXIgYmluYXJ5IHRvIHVzZSBmb3IgdGVzdGluZy4iIiIKLSAg
ICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCisgICAgICAgIHN1cGVyKFN5c3Rl
bVdlYlZpZXdTaGVsbCwgc2VsZikuX19pbml0X18obG9nZ2VyLAorICAgICAgICAgICAgICAgIHdl
YmRyaXZlcl9iaW5hcnksIHJlbW90ZV9xdWV1ZSwgZGV2aWNlX3NlcmlhbCwKKyAgICAgICAgICAg
ICAgICB3ZWJkcml2ZXJfYXJncywgc3RhY2twYXJzZXJfc2NyaXB0LCBvdXRwdXRfZGlyZWN0b3J5
KQogICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQotICAgICAgICBzZWxmLmRldmljZV9zZXJp
YWwgPSBkZXZpY2Vfc2VyaWFsCi0gICAgICAgIHNlbGYuc2VydmVyID0gQ2hyb21lRHJpdmVyU2Vy
dmVyKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5hcnk9d2ViZHJpdmVyX2JpbmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJncz13ZWJkcml2ZXJfYXJncykKLSAgICAgICAgc2VsZi5zZXR1cF9hZGJf
cmV2ZXJzZSgpCi0KLSAgICBkZWYgX2FkYl9ydW4oc2VsZiwgYXJncyk6Ci0gICAgICAgIGNtZCA9
IFsnYWRiJ10KLSAgICAgICAgaWYgc2VsZi5kZXZpY2Vfc2VyaWFsOgotICAgICAgICAgICAgY21k
LmV4dGVuZChbJy1zJywgc2VsZi5kZXZpY2Vfc2VyaWFsXSkKLSAgICAgICAgY21kLmV4dGVuZChh
cmdzKQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCcgJy5qb2luKGNtZCkpCi0gICAgICAgIHN1
YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQpCi0KLSAgICBkZWYgc2V0dXBfYWRiX3JldmVyc2Uoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX2FkYl9ydW4oWyd3YWl0LWZvci1kZXZpY2UnXSkKLSAgICAgICAg
c2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAgIHNlbGYu
X2FkYl9ydW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFsbCddKQotICAgICAgICAjICJhZGIgcmV2
ZXJzZSIgYmFzaWNhbGx5IGZvcndhcmRzIG5ldHdvcmsgY29ubmVjdGlvbiBmcm9tIGRldmljZSB0
bwotICAgICAgICAjIGhvc3QuCi0gICAgICAgIGZvciBwb3J0IGluIF93cHRzZXJ2ZV9wb3J0czoK
LSAgICAgICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJ3RjcDolZCcgJSBwb3J0LCAn
dGNwOiVkJyAlIHBvcnRdKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAg
ICAgc2VsZi5zZXJ2ZXIuc3RhcnQoYmxvY2s9RmFsc2UpCi0KLSAgICBkZWYgc3RvcChzZWxmLCBm
b3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc2VydmVyLnN0b3AoZm9yY2U9Zm9yY2UpCi0KLSAg
ICBkZWYgcGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIucGlkCi0KLSAgICBk
ZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNh
dGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCi0gICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRo
aW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KLSAgICAgICAgIyBpcyBhY3RpdmUu
Ci0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCi0KLSAgICBkZWYgY2xlYW51
cChzZWxmKToKLSAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2Zv
cndhcmQnLCAnLS1yZW1vdmUtYWxsJ10pCi0gICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNl
JywgJy0tcmVtb3ZlLWFsbCddKQotCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsid2ViZHJpdmVyX3VybCI6IHNlbGYuc2Vy
dmVyLnVybH0KKyAgICAgICAgc2VsZi53cHRzZXJ2ZXJfcG9ydHMgPSBfd3B0c2VydmVfcG9ydHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggZjIyMDViMTYwZjYxLi5mNzM4OGFkN2U2ZjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9iYXNlLnB5CkBAIC0zLDcgKzMsNiBAQCBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBz
b2NrZXQKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogZnJvbSBjb3B5
IGltcG9ydCBkZWVwY29weQotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC4ud3B0
Y29tbWFuZGxpbmUgaW1wb3J0IHJlcXVpcmVfYXJnICAjIG5vcWE6IEY0MDEKIApAQCAtMTYzLDYg
KzE2MiwxMCBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgICAgIHdpdGggd2hpY2ggaXQg
c2hvdWxkIGJlIGluc3RhbnRpYXRlZCIiIgogICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2Vy
LCB7fQogCisgICAgZGVmIG1heWJlX3BhcnNlX3RvbWJzdG9uZShzZWxmKToKKyAgICAgICAgIiIi
UG9zc2libHkgcGFyc2UgdG9tYnN0b25lcyBvbiBBbmRyb2lkIGRldmljZSBmb3IgQW5kcm9pZCB0
YXJnZXQiIiIKKyAgICAgICAgcGFzcworCiAgICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nl
c3MsIHRlc3QpOgogICAgICAgICAiIiJDaGVjayBpZiBhIGNyYXNoIG9jY3VyZWQgYW5kIG91dHB1
dCBhbnkgdXNlZnVsIGluZm9ybWF0aW9uIHRvIHRoZQogICAgICAgICBsb2cuIFJldHVybnMgYSBi
b29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhIGNyYXNoIG9jY3VyZWQuIiIiCkBAIC0yMDIsNSAr
MjA1LDUgQEAgY2xhc3MgRXhlY3V0b3JCcm93c2VyKG9iamVjdCk6CiAgICAgdXAgdGhlIGJyb3dz
ZXIgZnJvbSB0aGUgcnVubmVyIHByb2Nlc3MuCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsICoqa3dhcmdzKToKLSAgICAgICAgZm9yIGssIHYgaW4gaXRlcml0ZW1zKGt3YXJncyk6Cisg
ICAgICAgIGZvciBrLCB2IGluIGt3YXJncy5pdGVtcygpOgogICAgICAgICAgICAgc2V0YXR0cihz
ZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKaW5kZXggZmQyNTFhNDMxYzMwLi4wNGFj
MzcyNmZiYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5weQpAQCAtMjgsMTMgKzI4LDEzIEBAIGRl
ZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJ3ZWJkcml2
ZXJfYmluYXJ5IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19k
YXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3Rf
dHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIHsiYmlu
YXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgICAgICJ3ZWJkcml2ZXJfYmluYXJ5Ijog
a3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0sCiAgICAgICAgICAgICAid2ViZHJpdmVyX2FyZ3Mi
OiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpfQogCiAKLWRlZiBleGVjdXRvcl9rd2FyZ3Mo
dGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAor
ZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2Fj
aGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3Mp
OgogICAgIGV4ZWN1dG9yX2t3YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwg
c2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNz
IENocm9tZUJyb3dzZXIoQnJvd3Nlcik6CiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9ImNocm9tZWRyaXZlciIsCi0gICAg
ICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgorICAgICAgICAgICAgICAgICB3ZWJk
cml2ZXJfYXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgcmVw
cmVzZW50YXRpb24gb2YgQ2hyb21lLiAgVGhlIGBiaW5hcnlgIGFyZ3VtZW50IGdpdmVzCiAgICAg
ICAgIHRoZSBicm93c2VyIGJpbmFyeSB0byB1c2UgZm9yIHRlc3RpbmcuIiIiCiAgICAgICAgIEJy
b3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9h
bmRyb2lkLnB5CmluZGV4IDQ4NWI5NmYzMWU3ZC4uNzU4MGJlZGRkYjAwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IG1venBy
b2Nlc3MKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4
ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKQEAgLTI5LDE0ICszMCwxNiBAQCBkZWYgY2hlY2tf
YXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJpdmVyX2JpbmFy
eSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29u
ZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1
bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7InBhY2thZ2VfbmFt
ZSI6IGt3YXJnc1sicGFja2FnZV9uYW1lIl0sCiAgICAgICAgICAgICAiZGV2aWNlX3NlcmlhbCI6
IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdLAogICAgICAgICAgICAgIndlYmRyaXZlcl9iaW5hcnki
OiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKLSAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJn
cyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9CisgICAgICAgICAgICAid2ViZHJpdmVy
X2FyZ3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJfYXJncyIpLAorICAgICAgICAgICAgInN0YWNr
cGFyc2VyX3NjcmlwdCI6IGt3YXJncy5nZXQoInN0YWNrcGFyc2VyX3NjcmlwdCIpLAorICAgICAg
ICAgICAgIm91dHB1dF9kaXJlY3RvcnkiOiBrd2FyZ3MuZ2V0KCJvdXRwdXRfZGlyZWN0b3J5Iil9
CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hl
X21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVz
dF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAg
ICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgIyBVc2UgdXBkYXRlKCkgdG8gbW9kaWZ5
IHRoZSBnbG9iYWwgbGlzdCBpbiBwbGFjZS4KICAgICBfd3B0c2VydmVfcG9ydHMudXBkYXRlKHNl
dCgKQEAgLTQ0LDcgKzQ3LDcgQEAgZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZl
cl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgIHNlcnZlcl9j
b25maWdbJ3BvcnRzJ11bJ3dzJ10gKyBzZXJ2ZXJfY29uZmlnWydwb3J0cyddWyd3c3MnXQogICAg
ICkpCiAKLSAgICBleGVjdXRvcl9rd2FyZ3MgPSBjaHJvbWVfZXhlY3V0b3Jfa3dhcmdzKHRlc3Rf
dHlwZSwgc2VydmVyX2NvbmZpZywKKyAgICBleGVjdXRvcl9rd2FyZ3MgPSBjaHJvbWVfZXhlY3V0
b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9f
ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKQogICAgICMgUmVtb3ZlIHVuc3VwcG9ydGVkIG9wdGlvbnMgb24gbW9iaWxlLgpAQCAtNjgs
MjEgKzcxLDgwIEBAIGRlZiBlbnZfb3B0aW9ucygpOgogICAgICMgYWxsb3cgdGhlIHVzZSBvZiBo
b3N0LXJlc29sdmVyLXJ1bGVzIGluIGxpZXUgb2YgbW9kaWZ5aW5nIC9ldGMvaG9zdHMgZmlsZQog
ICAgIHJldHVybiB7InNlcnZlcl9ob3N0IjogIjEyNy4wLjAuMSJ9CiAKK2NsYXNzIExvZ2NhdFJ1
bm5lcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHJl
bW90ZV9xdWV1ZSk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYu
YnJvd3NlciA9IGJyb3dzZXIKKyAgICAgICAgc2VsZi5yZW1vdGVfcXVldWUgPSByZW1vdGVfcXVl
dWUKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs
Zi5fcnVuKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAg
c2VsZi5zdG9wKCkKKworICAgIGRlZiBfcnVuKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICAjIFRPRE86IGFkYiBsb2djYXQgLWMgZmFpbCByYW5kb21seSB3aXRoIG1lc3NhZ2UKKyAg
ICAgICAgICAgICMgImZhaWxlZCB0byBjbGVhciB0aGUgJ21haW4nIGxvZyIKKyAgICAgICAgICAg
IHNlbGYuYnJvd3Nlci5jbGVhcl9sb2coKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxs
ZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRmFpbGVkIHRv
IGNsZWFyIGxvZ2NhdCBidWZmZXIiKQorCisgICAgICAgIHNlbGYuX2NtZCA9IHNlbGYuYnJvd3Nl
ci5sb2djYXRfY21kKCkKKyAgICAgICAgc2VsZi5fcHJvYyA9IG1venByb2Nlc3MuUHJvY2Vzc0hh
bmRsZXIoCisgICAgICAgICAgICBzZWxmLl9jbWQsCisgICAgICAgICAgICBwcm9jZXNzT3V0cHV0
TGluZT1zZWxmLm9uX291dHB1dCwKKyAgICAgICAgICAgIHN0b3JlT3V0cHV0PUZhbHNlKQorICAg
ICAgICBzZWxmLl9wcm9jLnJ1bigpCisKKyAgICBkZWYgX3NlbmRfbWVzc2FnZShzZWxmLCBjb21t
YW5kLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucmVtb3RlX3F1ZXVl
LnB1dCgoY29tbWFuZCwgYXJncykpCisgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKKyAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkVycm9yIHdoZW4gc2VuZCB0byByZW1vdGUg
cXVldWUiKQogCi1jbGFzcyBDaHJvbWVBbmRyb2lkQnJvd3NlcihCcm93c2VyKToKLSAgICAiIiJD
aHJvbWUgaXMgYmFja2VkIGJ5IGNocm9tZWRyaXZlciwgd2hpY2ggaXMgc3VwcGxpZWQgdGhyb3Vn
aAotICAgIGBgd3B0cnVubmVyLndlYmRyaXZlci5DaHJvbWVEcml2ZXJTZXJ2ZXJgYC4KLSAgICAi
IiIKKyAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuaXNf
YWxpdmUoKToKKyAgICAgICAgICAgIGtpbGxfcmVzdWx0ID0gc2VsZi5fcHJvYy5raWxsKCkKKyAg
ICAgICAgICAgIGlmIGZvcmNlIGFuZCBraWxsX3Jlc3VsdCAhPSAwOgorICAgICAgICAgICAgICAg
IHNlbGYuX3Byb2Mua2lsbCg5KQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcGFj
a2FnZV9uYW1lLCB3ZWJkcml2ZXJfYmluYXJ5PSJjaHJvbWVkcml2ZXIiLAotICAgICAgICAgICAg
ICAgICBkZXZpY2Vfc2VyaWFsPU5vbmUsIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgotICAgICAgICBC
cm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKLSAgICAgICAgc2VsZi5wYWNrYWdlX25hbWUg
PSBwYWNrYWdlX25hbWUKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAgICAgIHJldHVybiBo
YXNhdHRyKHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUK
KworICAgIGRlZiBvbl9vdXRwdXQoc2VsZiwgbGluZSk6CisgICAgICAgIGRhdGEgPSB7CisgICAg
ICAgICAgICAicHJvY2VzcyI6ICJMT0dDQVQiLAorICAgICAgICAgICAgImNvbW1hbmQiOiAibG9n
Y2F0IiwKKyAgICAgICAgICAgICJkYXRhIjogbGluZQorICAgICAgICB9CisgICAgICAgIHNlbGYu
X3NlbmRfbWVzc2FnZSgibG9nIiwgInByb2Nlc3Nfb3V0cHV0IiwgZGF0YSkKKworY2xhc3MgQ2hy
b21lQW5kcm9pZEJyb3dzZXJCYXNlKEJyb3dzZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2dnZXIsCisgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnk9ImNocm9tZWRyaXZlciIs
CisgICAgICAgICAgICAgICAgIHJlbW90ZV9xdWV1ZSA9IE5vbmUsCisgICAgICAgICAgICAgICAg
IGRldmljZV9zZXJpYWw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3M9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgc3RhY2twYXJzZXJfc2NyaXB0PU5vbmUsCisgICAgICAgICAg
ICAgICAgIG91dHB1dF9kaXJlY3Rvcnk9Tm9uZSk6CisgICAgICAgIHN1cGVyKENocm9tZUFuZHJv
aWRCcm93c2VyQmFzZSwgc2VsZikuX19pbml0X18obG9nZ2VyKQogICAgICAgICBzZWxmLmRldmlj
ZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFsCisgICAgICAgIHNlbGYuc3RhY2twYXJzZXJfc2NyaXB0
ID0gc3RhY2twYXJzZXJfc2NyaXB0CisgICAgICAgIHNlbGYub3V0cHV0X2RpcmVjdG9yeSA9IG91
dHB1dF9kaXJlY3RvcnkKKyAgICAgICAgc2VsZi5yZW1vdGVfcXVldWUgPSByZW1vdGVfcXVldWUK
ICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBDaHJvbWVEcml2ZXJTZXJ2ZXIoc2VsZi5sb2dnZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT13ZWJkcml2ZXJf
YmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPXdl
YmRyaXZlcl9hcmdzKQorICAgICAgICBpZiBzZWxmLnJlbW90ZV9xdWV1ZSBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIHNlbGYubG9nY2F0X3J1bm5lciA9IExvZ2NhdFJ1bm5lcihzZWxmLmxvZ2dl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHNlbGYu
cmVtb3RlX3F1ZXVlKQorCisgICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgICBzZWxmLnNldHVw
X2FkYl9yZXZlcnNlKCkKKyAgICAgICAgaWYgc2VsZi5yZW1vdGVfcXVldWUgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBzZWxmLmxvZ2NhdF9ydW5uZXIuc3RhcnQoKQogCiAgICAgZGVmIF9hZGJf
cnVuKHNlbGYsIGFyZ3MpOgogICAgICAgICBjbWQgPSBbJ2FkYiddCkBAIC05MiwxNCArMTU0LDYg
QEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYubG9n
Z2VyLmluZm8oJyAnLmpvaW4oY21kKSkKICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNt
ZCkKIAotICAgIGRlZiBzZXR1cF9hZGJfcmV2ZXJzZShzZWxmKToKLSAgICAgICAgc2VsZi5fYWRi
X3J1bihbJ3dhaXQtZm9yLWRldmljZSddKQotICAgICAgICBzZWxmLl9hZGJfcnVuKFsnZm9yd2Fy
ZCcsICctLXJlbW92ZS1hbGwnXSkKLSAgICAgICAgc2VsZi5fYWRiX3J1bihbJ3JldmVyc2UnLCAn
LS1yZW1vdmUtYWxsJ10pCi0gICAgICAgICMgImFkYiByZXZlcnNlIiBmb3J3YXJkcyBuZXR3b3Jr
IGNvbm5lY3Rpb24gZnJvbSBkZXZpY2UgdG8gaG9zdC4KLSAgICAgICAgZm9yIHBvcnQgaW4gX3dw
dHNlcnZlX3BvcnRzOgotICAgICAgICAgICAgc2VsZi5fYWRiX3J1bihbJ3JldmVyc2UnLCAndGNw
OiVkJyAlIHBvcnQsICd0Y3A6JWQnICUgcG9ydF0pCi0KICAgICBkZWYgc3RhcnQoc2VsZiwgKipr
d2FyZ3MpOgogICAgICAgICBzZWxmLnNlcnZlci5zdGFydChibG9jaz1GYWxzZSkKIApAQCAtMTE5
LDYgKzE3Myw1NCBAQCBjbGFzcyBDaHJvbWVBbmRyb2lkQnJvd3NlcihCcm93c2VyKToKICAgICAg
ICAgc2VsZi5zdG9wKCkKICAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2ZvcndhcmQnLCAnLS1yZW1v
dmUtYWxsJ10pCiAgICAgICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJy0tcmVtb3ZlLWFs
bCddKQorICAgICAgICBpZiBzZWxmLnJlbW90ZV9xdWV1ZSBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYubG9nY2F0X3J1bm5lci5zdG9wKGZvcmNlPVRydWUpCiAKICAgICBkZWYgZXhlY3V0
b3JfYnJvd3NlcihzZWxmKToKICAgICAgICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJ3ZWJk
cml2ZXJfdXJsIjogc2VsZi5zZXJ2ZXIudXJsfQorCisgICAgZGVmIGNsZWFyX2xvZyhzZWxmKToK
KyAgICAgICAgc2VsZi5fYWRiX3J1bihbJ2xvZ2NhdCcsICctYyddKQorCisgICAgZGVmIGxvZ2Nh
dF9jbWQoc2VsZik6CisgICAgICAgIGNtZCA9IFsnYWRiJ10KKyAgICAgICAgaWYgc2VsZi5kZXZp
Y2Vfc2VyaWFsOgorICAgICAgICAgICAgY21kLmV4dGVuZChbJy1zJywgc2VsZi5kZXZpY2Vfc2Vy
aWFsXSkKKyAgICAgICAgY21kLmV4dGVuZChbJ2xvZ2NhdCcsICcqOkQnXSkKKyAgICAgICAgcmV0
dXJuIGNtZAorCisgICAgZGVmIG1heWJlX3BhcnNlX3RvbWJzdG9uZShzZWxmLCBsb2dnZXIpOgor
ICAgICAgICBpZiBzZWxmLnN0YWNrcGFyc2VyX3NjcmlwdDoKKyAgICAgICAgICAgIGNtZCA9IFtz
ZWxmLnN0YWNrcGFyc2VyX3NjcmlwdCwgIi1hIiwgIi13Il0KKyAgICAgICAgICAgIGlmIHNlbGYu
ZGV2aWNlX3NlcmlhbDoKKyAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsiLS1kZXZpY2UiLCBz
ZWxmLmRldmljZV9zZXJpYWxdKQorICAgICAgICAgICAgY21kLmV4dGVuZChbIi0tb3V0cHV0LWRp
cmVjdG9yeSIsIHNlbGYub3V0cHV0X2RpcmVjdG9yeV0pCisgICAgICAgICAgICByYXdfb3V0cHV0
ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4g
cmF3X291dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnByb2Nlc3Nf
b3V0cHV0KCJUUkFDRSIsIGxpbmUsICJsb2djYXQiKQorCisgICAgZGVmIHNldHVwX2FkYl9yZXZl
cnNlKHNlbGYpOgorICAgICAgICBzZWxmLl9hZGJfcnVuKFsnd2FpdC1mb3ItZGV2aWNlJ10pCisg
ICAgICAgIHNlbGYuX2FkYl9ydW4oWydmb3J3YXJkJywgJy0tcmVtb3ZlLWFsbCddKQorICAgICAg
ICBzZWxmLl9hZGJfcnVuKFsncmV2ZXJzZScsICctLXJlbW92ZS1hbGwnXSkKKyAgICAgICAgIyAi
YWRiIHJldmVyc2UiIGZvcndhcmRzIG5ldHdvcmsgY29ubmVjdGlvbiBmcm9tIGRldmljZSB0byBo
b3N0LgorICAgICAgICBmb3IgcG9ydCBpbiBzZWxmLndwdHNlcnZlcl9wb3J0czoKKyAgICAgICAg
ICAgIHNlbGYuX2FkYl9ydW4oWydyZXZlcnNlJywgJ3RjcDolZCcgJSBwb3J0LCAndGNwOiVkJyAl
IHBvcnRdKQorCitjbGFzcyBDaHJvbWVBbmRyb2lkQnJvd3NlcihDaHJvbWVBbmRyb2lkQnJvd3Nl
ckJhc2UpOgorICAgICIiIkNocm9tZSBpcyBiYWNrZWQgYnkgY2hyb21lZHJpdmVyLCB3aGljaCBp
cyBzdXBwbGllZCB0aHJvdWdoCisgICAgYGB3cHRydW5uZXIud2ViZHJpdmVyLkNocm9tZURyaXZl
clNlcnZlcmBgLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcGFj
a2FnZV9uYW1lLAorICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYmluYXJ5PSJjaHJvbWVkcml2
ZXIiLAorICAgICAgICAgICAgICAgICByZW1vdGVfcXVldWUgPSBOb25lLAorICAgICAgICAgICAg
ICAgICBkZXZpY2Vfc2VyaWFsPU5vbmUsCisgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdz
PU5vbmUsCisgICAgICAgICAgICAgICAgIHN0YWNrcGFyc2VyX3NjcmlwdD1Ob25lLAorICAgICAg
ICAgICAgICAgICBvdXRwdXRfZGlyZWN0b3J5PU5vbmUpOgorICAgICAgICBzdXBlcihDaHJvbWVB
bmRyb2lkQnJvd3Nlciwgc2VsZikuX19pbml0X18obG9nZ2VyLAorICAgICAgICAgICAgICAgIHdl
YmRyaXZlcl9iaW5hcnksIHJlbW90ZV9xdWV1ZSwgZGV2aWNlX3NlcmlhbCwKKyAgICAgICAgICAg
ICAgICB3ZWJkcml2ZXJfYXJncywgc3RhY2twYXJzZXJfc2NyaXB0LCBvdXRwdXRfZGlyZWN0b3J5
KQorICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9IHBhY2thZ2VfbmFtZQorICAgICAgICBzZWxm
LndwdHNlcnZlcl9wb3J0cyA9IF93cHRzZXJ2ZV9wb3J0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21l
X2lvcy5weQppbmRleCA2ZGIwMTg4ZTU1ZWIuLmYzNDliMTk0MTljZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2Nocm9tZV9pb3MucHkKQEAgLTIyLDEyICsyMiwxMiBAQCBkZWYgY2hlY2tfYXJncygqKmt3
YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJpdmVyX2JpbmFyeSIpCiAKIAot
ZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3
YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2Rh
dGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7IndlYmRyaXZlcl9iaW5hcnkiOiBr
d2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKICAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6
IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJncyh0
ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCitk
ZWYgZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNo
ZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6
CiAgICAgZXhlY3V0b3Jfa3dhcmdzID0gYmFzZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBz
ZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQpAQCAtNTEsNyArNTEsNyBA
QCBjbGFzcyBDaHJvbWVpT1NCcm93c2VyKEJyb3dzZXIpOgogCiAgICAgaW5pdF90aW1lb3V0ID0g
MTIwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJkcml2ZXJfYmluYXJ5LCB3
ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJk
cml2ZXJfYmluYXJ5LCB3ZWJkcml2ZXJfYXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgICIi
IkNyZWF0ZXMgYSBuZXcgcmVwcmVzZW50YXRpb24gb2YgQ2hyb21lLiIiIgogICAgICAgICBCcm93
c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBDV1RDaHJv
bWVEcml2ZXJTZXJ2ZXIoc2VsZi5sb2dnZXIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvY2hyb21lX3Nwa2lfY2VydHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21l
X3Nwa2lfY2VydHMucHkKaW5kZXggYzZlNTgzNTgxODgyLi41ZWU1MTc5NDJiZTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfc3BraV9jZXJ0cy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX3Nwa2lfY2VydHMucHkKQEAgLTIsNyArMiw3IEBACiAj
IERPIE5PVCBFRElUIE1BTlVBTExZLgogCiAjIHRvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0
LnBlbQotV1BUX0ZJTkdFUlBSSU5UID0gJ0hhR2pjbWZXamNVUkRFbmtVRVdaMjhZQWtZbzV0TTEy
aHhBTVEyWjM3NTA9JworV1BUX0ZJTkdFUlBSSU5UID0gJ09YYjRPOHBjREk4Tnd4M0t6cU51VGJK
MVpuZjUyVmpFVldpWVlDakhjSU09JwogCiAjIHNpZ25lZC1leGNoYW5nZS9yZXNvdXJjZXMvMTI3
LjAuMC4xLnN4Zy5wZW0KIFNYR19XUFRfRklOR0VSUFJJTlQgPSAnMFJ0NG1UNlNKWG9qRU1IVG5L
bmxKL2hCS01CY0k0a3RlQmxoUjFlVFRkaz0nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvZWRnZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlLnB5CmluZGV4IGJkYjM3
YjNmODRjMi4uZGI0Nzk1Y2U1ZDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
ZWRnZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weQpAQCAtMzQsNyArMzQs
NyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAi
d2ViZHJpdmVyX2JpbmFyeSIpCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVu
X2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2Vy
LCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVy
biB7IndlYmRyaXZlcl9iaW5hcnkiOiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKICAgICAg
ICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIiksCiAg
ICAgICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0
ZXN0X3R5cGUsCkBAIC00Miw3ICs0Miw3IEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUs
IHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpfQogCiAKLWRlZiBl
eGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBy
dW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2Vy
dmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgKiprd2FyZ3MpOgogICAgIGV4ZWN1dG9yX2t3YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dh
cmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLCAqKmt3YXJncykK
QEAgLTY4LDcgKzY4LDggQEAgY2xhc3MgRWRnZUJyb3dzZXIoQnJvd3Nlcik6CiAgICAgdXNlZF9w
b3J0cyA9IHNldCgpCiAgICAgaW5pdF90aW1lb3V0ID0gNjAKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIHdlYmRyaXZlcl9iaW5hcnksIHRpbWVvdXRfbXVsdGlwbGllcj1Ob25lLCB3
ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJk
cml2ZXJfYmluYXJ5LAorICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPU5vbmUsIHdlYmRy
aXZlcl9hcmdzPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxm
LCBsb2dnZXIpCiAgICAgICAgIHNlbGYuc2VydmVyID0gRWRnZURyaXZlclNlcnZlcihzZWxmLmxv
Z2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT13ZWJk
cml2ZXJfYmluYXJ5LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJv
bWl1bS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKaW5kZXggMGJj
YjE4Y2RjMGNjLi5jMjI3NWJkMTY4NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJvbWl1
bS5weQpAQCAtMSwxMTYgKzEsMTE2IEBACi1mcm9tIC5iYXNlIGltcG9ydCBCcm93c2VyLCBFeGVj
dXRvckJyb3dzZXIsIHJlcXVpcmVfYXJnDQotZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRf
bXVsdGlwbGllciAgICMgbm9xYTogRjQwMQ0KLWZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9y
dCBFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXINCi1mcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVj
dXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MNCi1mcm9tIC4uZXhlY3V0b3JzLmV4
ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMg
bm9xYTogRjQwMQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDENCi1mcm9tIC4uZXhlY3V0b3Jz
LmV4ZWN1dG9yZWRnZWNocm9taXVtIGltcG9ydCBFZGdlQ2hyb21pdW1Ecml2ZXJXZHNwZWNFeGVj
dXRvciAgIyBub3FhOiBGNDAxDQotDQotDQotX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJl
ZGdlY2hyb21pdW0iLA0KLSAgICAgICAgICAgICAgICAgImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJn
cyIsDQotICAgICAgICAgICAgICAgICAiYnJvd3NlciI6ICJFZGdlQ2hyb21pdW1Ccm93c2VyIiwN
Ci0gICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5lc3MiOiAiV2ViRHJpdmVy
VGVzdGhhcm5lc3NFeGVjdXRvciIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJl
ZnRlc3QiOiAiV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yIiwNCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAid2RzcGVjIjogIkVkZ2VDaHJvbWl1bURyaXZlcldkc3BlY0V4ZWN1dG9yIn0s
DQotICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLA0K
LSAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLA0K
LSAgICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIsDQotICAgICAgICAg
ICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMiLA0KLSAgICAgICAgICAgICAgICAg
InRpbWVvdXRfbXVsdGlwbGllciI6ICJnZXRfdGltZW91dF9tdWx0aXBsaWVyIix9DQotDQotDQot
ZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOg0KLSAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJ3ZWJk
cml2ZXJfYmluYXJ5IikNCi0NCi0NCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5f
aW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToNCi0gICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dh
cmdzWyJiaW5hcnkiXSwNCi0gICAgICAgICAgICAid2ViZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1si
d2ViZHJpdmVyX2JpbmFyeSJdLA0KLSAgICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJn
cy5nZXQoIndlYmRyaXZlcl9hcmdzIil9DQotDQotDQotZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0
X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsDQotICAg
ICAgICAgICAgICAgICAgICAqKmt3YXJncyk6DQotICAgIGV4ZWN1dG9yX2t3YXJncyA9IGJhc2Vf
ZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywNCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0
YSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3Mp
DQotICAgIGV4ZWN1dG9yX2t3YXJnc1siY2xvc2VfYWZ0ZXJfZG9uZSJdID0gVHJ1ZQ0KLSAgICBl
eGVjdXRvcl9rd2FyZ3NbInN1cHBvcnRzX2VhZ2VyX3BhZ2Vsb2FkIl0gPSBGYWxzZQ0KLQ0KLSAg
ICBjYXBhYmlsaXRpZXMgPSB7DQotICAgICAgICAibXM6ZWRnZU9wdGlvbnMiOiB7DQotICAgICAg
ICAgICAgInByZWZzIjogew0KLSAgICAgICAgICAgICAgICAicHJvZmlsZSI6IHsNCi0gICAgICAg
ICAgICAgICAgICAgICJkZWZhdWx0X2NvbnRlbnRfc2V0dGluZ192YWx1ZXMiOiB7DQotICAgICAg
ICAgICAgICAgICAgICAgICAgInBvcHVwcyI6IDENCi0gICAgICAgICAgICAgICAgICAgIH0NCi0g
ICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0sDQotICAgICAgICAgICAgInVzZUF1dG9t
YXRpb25FeHRlbnNpb24iOiBGYWxzZSwNCi0gICAgICAgICAgICAiZXhjbHVkZVN3aXRjaGVzIjog
WyJlbmFibGUtYXV0b21hdGlvbiJdLA0KLSAgICAgICAgICAgICJ3M2MiOiBUcnVlDQotICAgICAg
ICB9DQotICAgIH0NCi0NCi0gICAgaWYgdGVzdF90eXBlID09ICJ0ZXN0aGFybmVzcyI6DQotICAg
ICAgICBjYXBhYmlsaXRpZXNbInBhZ2VMb2FkU3RyYXRlZ3kiXSA9ICJub25lIg0KLQ0KLSAgICBm
b3IgKGt3YXJnLCBjYXBhYmlsaXR5KSBpbiBbKCJiaW5hcnkiLCAiYmluYXJ5IiksICgiYmluYXJ5
X2FyZ3MiLCAiYXJncyIpXToNCi0gICAgICAgIGlmIGt3YXJnc1trd2FyZ10gaXMgbm90IE5vbmU6
DQotICAgICAgICAgICAgY2FwYWJpbGl0aWVzWyJtczplZGdlT3B0aW9ucyJdW2NhcGFiaWxpdHld
ID0ga3dhcmdzW2t3YXJnXQ0KLQ0KLSAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06DQotICAgICAg
ICBpZiAiYXJncyIgbm90IGluIGNhcGFiaWxpdGllc1sibXM6ZWRnZU9wdGlvbnMiXToNCi0gICAg
ICAgICAgICBjYXBhYmlsaXRpZXNbIm1zOmVkZ2VPcHRpb25zIl1bImFyZ3MiXSA9IFtdDQotICAg
ICAgICBpZiAiLS1oZWFkbGVzcyIgbm90IGluIGNhcGFiaWxpdGllc1sibXM6ZWRnZU9wdGlvbnMi
XVsiYXJncyJdOg0KLSAgICAgICAgICAgIGNhcGFiaWxpdGllc1sibXM6ZWRnZU9wdGlvbnMiXVsi
YXJncyJdLmFwcGVuZCgiLS1oZWFkbGVzcyIpDQotDQotICAgIGV4ZWN1dG9yX2t3YXJnc1siY2Fw
YWJpbGl0aWVzIl0gPSBjYXBhYmlsaXRpZXMNCi0NCi0gICAgcmV0dXJuIGV4ZWN1dG9yX2t3YXJn
cw0KLQ0KLQ0KLWRlZiBlbnZfZXh0cmFzKCoqa3dhcmdzKToNCi0gICAgcmV0dXJuIFtdDQotDQot
DQotZGVmIGVudl9vcHRpb25zKCk6DQotICAgIHJldHVybiB7fQ0KLQ0KLQ0KLWNsYXNzIEVkZ2VD
aHJvbWl1bUJyb3dzZXIoQnJvd3Nlcik6DQotICAgICIiIk1pY3Jvc29mdEVkZ2UgaXMgYmFja2Vk
IGJ5IE1TRWRnZURyaXZlciwgd2hpY2ggaXMgc3VwcGxpZWQgdGhyb3VnaA0KLSAgICBgYHdwdHJ1
bm5lci53ZWJkcml2ZXIuRWRnZUNocm9taXVtRHJpdmVyU2VydmVyYGAuDQotICAgICIiIg0KLQ0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9
Im1zZWRnZWRyaXZlciIsDQotICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25lKToN
Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgcmVwcmVzZW50YXRpb24gb2YgTWljcm9zb2Z0RWRn
ZS4gIFRoZSBgYmluYXJ5YCBhcmd1bWVudCBnaXZlcw0KLSAgICAgICAgdGhlIGJyb3dzZXIgYmlu
YXJ5IHRvIHVzZSBmb3IgdGVzdGluZy4iIiINCi0gICAgICAgIEJyb3dzZXIuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyKQ0KLSAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkNCi0gICAgICAgIHNlbGYu
c2VydmVyID0gRWRnZUNocm9taXVtRHJpdmVyU2VydmVyKHNlbGYubG9nZ2VyLA0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PXdlYmRyaXZlcl9iaW5hcnks
DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPXdlYmRyaXZl
cl9hcmdzKQ0KLQ0KLSAgICBkZWYgc3RhcnQoc2VsZiwgKiprd2FyZ3MpOg0KLSAgICAgICAgc2Vs
Zi5zZXJ2ZXIuc3RhcnQoYmxvY2s9RmFsc2UpDQotDQotICAgIGRlZiBzdG9wKHNlbGYsIGZvcmNl
PUZhbHNlKToNCi0gICAgICAgIHNlbGYuc2VydmVyLnN0b3AoZm9yY2U9Zm9yY2UpDQotDQotICAg
IGRlZiBwaWQoc2VsZik6DQotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIucGlkDQotDQotICAg
IGRlZiBpc19hbGl2ZShzZWxmKToNCi0gICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5k
aWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsDQotICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBh
bnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uDQotICAgICAgICAjIGlzIGFj
dGl2ZS4NCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpDQotDQotICAgIGRl
ZiBjbGVhbnVwKHNlbGYpOg0KLSAgICAgICAgc2VsZi5zdG9wKCkNCi0NCi0gICAgZGVmIGV4ZWN1
dG9yX2Jyb3dzZXIoc2VsZik6DQotICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7Indl
YmRyaXZlcl91cmwiOiBzZWxmLnNlcnZlci51cmx9DQorZnJvbSAuYmFzZSBpbXBvcnQgQnJvd3Nl
ciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZworZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3Rp
bWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQorZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIg
aW1wb3J0IEVkZ2VDaHJvbWl1bURyaXZlclNlcnZlcgorZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQg
ZXhlY3V0b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCitmcm9tIC4uZXhlY3V0b3Jz
LmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwg
ICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorZnJvbSAuLmV4ZWN1dG9y
cy5leGVjdXRvcmVkZ2VjaHJvbWl1bSBpbXBvcnQgRWRnZUNocm9taXVtRHJpdmVyV2RzcGVjRXhl
Y3V0b3IgICMgbm9xYTogRjQwMQorCisKK19fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZWRn
ZWNocm9taXVtIiwKKyAgICAgICAgICAgICAgICAgImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIs
CisgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkVkZ2VDaHJvbWl1bUJyb3dzZXIiLAorICAg
ICAgICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3Ro
YXJuZXNzRXhlY3V0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3Qi
OiAiV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3ZHNwZWMiOiAiRWRnZUNocm9taXVtRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAg
ICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKKyAgICAgICAg
ICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAorICAgICAgICAg
ICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKKyAgICAgICAgICAgICAgICAgImVu
dl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKKyAgICAgICAgICAgICAgICAgInRpbWVvdXRfbXVs
dGlwbGllciI6ICJnZXRfdGltZW91dF9tdWx0aXBsaWVyIix9CisKKworZGVmIGNoZWNrX2FyZ3Mo
Kiprd2FyZ3MpOgorICAgIHJlcXVpcmVfYXJnKGt3YXJncywgIndlYmRyaXZlcl9iaW5hcnkiKQor
CisKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwg
Y29uZmlnLCAqKmt3YXJncyk6CisgICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnki
XSwKKyAgICAgICAgICAgICJ3ZWJkcml2ZXJfYmluYXJ5Ijoga3dhcmdzWyJ3ZWJkcml2ZXJfYmlu
YXJ5Il0sCisgICAgICAgICAgICAid2ViZHJpdmVyX2FyZ3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2
ZXJfYXJncyIpfQorCisKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNl
cnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCisgICAgICAgICAgICAg
ICAgICAgICoqa3dhcmdzKToKKyAgICBleGVjdXRvcl9rd2FyZ3MgPSBiYXNlX2V4ZWN1dG9yX2t3
YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKKyAgICBleGVjdXRv
cl9rd2FyZ3NbImNsb3NlX2FmdGVyX2RvbmUiXSA9IFRydWUKKyAgICBleGVjdXRvcl9rd2FyZ3Nb
InN1cHBvcnRzX2VhZ2VyX3BhZ2Vsb2FkIl0gPSBGYWxzZQorCisgICAgY2FwYWJpbGl0aWVzID0g
eworICAgICAgICAibXM6ZWRnZU9wdGlvbnMiOiB7CisgICAgICAgICAgICAicHJlZnMiOiB7Cisg
ICAgICAgICAgICAgICAgInByb2ZpbGUiOiB7CisgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0
X2NvbnRlbnRfc2V0dGluZ192YWx1ZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAicG9w
dXBzIjogMQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICJ1c2VBdXRvbWF0aW9uRXh0ZW5zaW9uIjogRmFsc2UsCisg
ICAgICAgICAgICAiZXhjbHVkZVN3aXRjaGVzIjogWyJlbmFibGUtYXV0b21hdGlvbiJdLAorICAg
ICAgICAgICAgInczYyI6IFRydWUKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIHRlc3RfdHlw
ZSA9PSAidGVzdGhhcm5lc3MiOgorICAgICAgICBjYXBhYmlsaXRpZXNbInBhZ2VMb2FkU3RyYXRl
Z3kiXSA9ICJub25lIgorCisgICAgZm9yIChrd2FyZywgY2FwYWJpbGl0eSkgaW4gWygiYmluYXJ5
IiwgImJpbmFyeSIpLCAoImJpbmFyeV9hcmdzIiwgImFyZ3MiKV06CisgICAgICAgIGlmIGt3YXJn
c1trd2FyZ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjYXBhYmlsaXRpZXNbIm1zOmVkZ2VP
cHRpb25zIl1bY2FwYWJpbGl0eV0gPSBrd2FyZ3Nba3dhcmddCisKKyAgICBpZiBrd2FyZ3NbImhl
YWRsZXNzIl06CisgICAgICAgIGlmICJhcmdzIiBub3QgaW4gY2FwYWJpbGl0aWVzWyJtczplZGdl
T3B0aW9ucyJdOgorICAgICAgICAgICAgY2FwYWJpbGl0aWVzWyJtczplZGdlT3B0aW9ucyJdWyJh
cmdzIl0gPSBbXQorICAgICAgICBpZiAiLS1oZWFkbGVzcyIgbm90IGluIGNhcGFiaWxpdGllc1si
bXM6ZWRnZU9wdGlvbnMiXVsiYXJncyJdOgorICAgICAgICAgICAgY2FwYWJpbGl0aWVzWyJtczpl
ZGdlT3B0aW9ucyJdWyJhcmdzIl0uYXBwZW5kKCItLWhlYWRsZXNzIikKKworICAgIGV4ZWN1dG9y
X2t3YXJnc1siY2FwYWJpbGl0aWVzIl0gPSBjYXBhYmlsaXRpZXMKKworICAgIHJldHVybiBleGVj
dXRvcl9rd2FyZ3MKKworCitkZWYgZW52X2V4dHJhcygqKmt3YXJncyk6CisgICAgcmV0dXJuIFtd
CisKKworZGVmIGVudl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHt9CisKKworY2xhc3MgRWRnZUNo
cm9taXVtQnJvd3NlcihCcm93c2VyKToKKyAgICAiIiJNaWNyb3NvZnRFZGdlIGlzIGJhY2tlZCBi
eSBNU0VkZ2VEcml2ZXIsIHdoaWNoIGlzIHN1cHBsaWVkIHRocm91Z2gKKyAgICBgYHdwdHJ1bm5l
ci53ZWJkcml2ZXIuRWRnZUNocm9taXVtRHJpdmVyU2VydmVyYGAuCisgICAgIiIiCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9Im1zZWRn
ZWRyaXZlciIsCisgICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUsICoqa3dhcmdz
KToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyByZXByZXNlbnRhdGlvbiBvZiBNaWNyb3NvZnRF
ZGdlLiAgVGhlIGBiaW5hcnlgIGFyZ3VtZW50IGdpdmVzCisgICAgICAgIHRoZSBicm93c2VyIGJp
bmFyeSB0byB1c2UgZm9yIHRlc3RpbmcuIiIiCisgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyKQorICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQorICAgICAgICBzZWxmLnNl
cnZlciA9IEVkZ2VDaHJvbWl1bURyaXZlclNlcnZlcihzZWxmLmxvZ2dlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PXdlYmRyaXZlcl9iaW5hcnksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9d2ViZHJpdmVyX2Fy
Z3MpCisKKyAgICBkZWYgc3RhcnQoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLnNlcnZl
ci5zdGFydChibG9jaz1GYWxzZSkKKworICAgIGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlKToK
KyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcChmb3JjZT1mb3JjZSkKKworICAgIGRlZiBwaWQoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5waWQKKworICAgIGRlZiBpc19hbGl2ZShz
ZWxmKToKKyAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZl
ciBpcyBhbGl2ZSwKKyAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hl
dGhlciBhIGJyb3dzZXIgc2Vzc2lvbgorICAgICAgICAjIGlzIGFjdGl2ZS4KKyAgICAgICAgcmV0
dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAg
ICAgICBzZWxmLnN0b3AoKQorCisgICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6CisgICAg
ICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsid2ViZHJpdmVyX3VybCI6IHNlbGYuc2VydmVy
LnVybH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weQppbmRleCBmNmM0YzYwMmEzOGMuLmYzNzgx
NzBmMzNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weQpAQCAtMjUsNyArMjUsNyBAQCBk
ZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcGFzcwogCiAKLWRlZiBicm93c2VyX2t3YXJn
cyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgorZGVmIGJyb3dz
ZXJfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dh
cmdzKToKICAgICAjIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9N
RS9saWJzb3VwL2lzc3Vlcy8xNzIKICAgICB3ZWJkcml2ZXJfcmVxdWlyZWRfYXJncyA9IFsiLS1o
b3N0PTEyNy4wLjAuMSJdCiAgICAgd2ViZHJpdmVyX2FyZ3MgPSBtYXliZV9hZGRfYXJncyh3ZWJk
cml2ZXJfcmVxdWlyZWRfYXJncywga3dhcmdzLmdldCgid2ViZHJpdmVyX2FyZ3MiKSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgZGVmIGNhcGFiaWxpdGllcyhzZXJ2ZXJfY29uZmlnLCAqKmt3YXJncyk6CiAg
ICAgICAgICAgICAiY2VydGlmaWNhdGVzIjogY2VydGlmaWNhdGVfZG9tYWluX2xpc3Qoc2VydmVy
X2NvbmZpZy5kb21haW5zX3NldCwga3dhcmdzWyJob3N0X2NlcnRfcGF0aCJdKX19CiAKIAotZGVm
IGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIs
IHJ1bl9pbmZvX2RhdGEsCitkZWYgZXhlY3V0b3Jfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBz
ZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAg
ICAgICAgICAqKmt3YXJncyk6CiAgICAgZXhlY3V0b3Jfa3dhcmdzID0gYmFzZV9leGVjdXRvcl9r
d2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsICoqa3dhcmdz
KQpAQCAtNzIsNiArNzIsNiBAQCBkZWYgcnVuX2luZm9fZXh0cmFzKCoqa3dhcmdzKToKIAogY2xh
c3MgRXBpcGhhbnlCcm93c2VyKFdlYktpdEJyb3dzZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBsb2dnZXIsIGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJfYmluYXJ5PU5vbmUsCi0gICAgICAgICAg
ICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgorICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJf
YXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIFdlYktpdEJyb3dzZXIuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3MpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvZmlyZWZveC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5CmluZGV4
IDc1Y2ViYjlmN2YxMC4uM2E0MjI5ODQxZjg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvZmlyZWZveC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weQpA
QCAtNTMsMTEgKzUzLDExIEBAIGRlZiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwg
cnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpOgogICAgIGlmIGt3YXJnc1sidGltZW91dF9tdWx0aXBs
aWVyIl0gaXMgbm90IE5vbmU6CiAgICAgICAgIHJldHVybiBrd2FyZ3NbInRpbWVvdXRfbXVsdGlw
bGllciJdCiAgICAgaWYgdGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKLSAgICAgICAgaWYgcnVuX2lu
Zm9fZGF0YVsiZGVidWciXSBvciBydW5faW5mb19kYXRhLmdldCgiYXNhbiIpOgorICAgICAgICBp
ZiBydW5faW5mb19kYXRhWyJkZWJ1ZyJdIG9yIHJ1bl9pbmZvX2RhdGEuZ2V0KCJhc2FuIikgb3Ig
cnVuX2luZm9fZGF0YS5nZXQoInRzYW4iKToKICAgICAgICAgICAgIHJldHVybiA0CiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gMgotICAgIGVsaWYgcnVuX2luZm9fZGF0YVsiZGVi
dWciXSBvciBydW5faW5mb19kYXRhLmdldCgiYXNhbiIpOgorICAgIGVsaWYgcnVuX2luZm9fZGF0
YVsiZGVidWciXSBvciBydW5faW5mb19kYXRhLmdldCgiYXNhbiIpIG9yIHJ1bl9pbmZvX2RhdGEu
Z2V0KCJ0c2FuIik6CiAgICAgICAgIGlmIHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292Iik6CiAgICAg
ICAgICAgICByZXR1cm4gNAogICAgICAgICBlbHNlOgpAQCAtNzYsNyArNzYsNyBAQCBkZWYgY2hl
Y2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAiYmluYXJ5IikKIAog
Ci1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoq
a3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9f
ZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJi
aW5hcnkiXSwKICAgICAgICAgICAgICJwcmVmc19yb290Ijoga3dhcmdzWyJwcmVmc19yb290Il0s
CiAgICAgICAgICAgICAiZXh0cmFfcHJlZnMiOiBrd2FyZ3NbImV4dHJhX3ByZWZzIl0sCkBAIC0x
MDEsMTEgKzEwMSwxMSBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19k
YXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJjb25maWciOiBjb25maWcsCiAg
ICAgICAgICAgICAiYnJvd3Nlcl9jaGFubmVsIjoga3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSwK
ICAgICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJnc1siaGVhZGxlc3MiXSwKLSAgICAgICAgICAg
ICJwcmVsb2FkX2Jyb3dzZXIiOiBrd2FyZ3NbInByZWxvYWRfYnJvd3NlciJdLAorICAgICAgICAg
ICAgInByZWxvYWRfYnJvd3NlciI6IGt3YXJnc1sicHJlbG9hZF9icm93c2VyIl0gYW5kIG5vdCBr
d2FyZ3NbInBhdXNlX2FmdGVyX3Rlc3QiXSBhbmQgbm90IGt3YXJnc1sibnVtX3Rlc3RfZ3JvdXBz
Il0gPT0gMSwKICAgICAgICAgICAgICJzcGVjaWFscG93ZXJzX3BhdGgiOiBrd2FyZ3NbInNwZWNp
YWxwb3dlcnNfcGF0aCJdfQogCiAKLWRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2
ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3
YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVu
X2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgIGV4ZWN1dG9y
X2t3YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2Vy
LCBydW5faW5mb19kYXRhLApAQCAtMTM4LDYgKzEzOCwxOSBAQCBkZWYgZXhlY3V0b3Jfa3dhcmdz
KHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwK
ICAgICAgICAgZm9yIHByZWYsIHZhbHVlIGluIGt3YXJnc1siZXh0cmFfcHJlZnMiXToKICAgICAg
ICAgICAgIG9wdGlvbnNbInByZWZzIl0udXBkYXRlKHtwcmVmOiBQcmVmZXJlbmNlcy5jYXN0KHZh
bHVlKX0pCiAgICAgICAgIGNhcGFiaWxpdGllc1sibW96OmZpcmVmb3hPcHRpb25zIl0gPSBvcHRp
b25zCisKKyAgICAgICAgIyBUaGlzIGdldHMgcmV1c2VkIGZvciBmaXJlZm94X2FuZHJvaWQsIGJ1
dCB0aGUgZW52aXJvbm1lbnQgc2V0dXAKKyAgICAgICAgIyBpc24ndCByZXF1aXJlZCBpbiB0aGF0
IGNhc2UKKyAgICAgICAgaWYga3dhcmdzWyJiaW5hcnkiXToKKyAgICAgICAgICAgIGVudmlyb24g
PSBnZXRfZW52aXJvbihsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJiaW5hcnkiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2Fy
Z3NbImRlYnVnX2luZm8iXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2Fy
Z3NbInN0eWxvX3RocmVhZHMiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
d2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dh
cmdzWyJlbmFibGVfd2VicmVuZGVyIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga3dhcmdzWyJjaGFvc19tb2RlX2ZsYWdzIl0pCisKKyAgICAgICAgICAgIGV4ZWN1dG9yX2t3
YXJnc1siZW52aXJvbiJdID0gZW52aXJvbgogICAgIGlmIGt3YXJnc1siY2VydHV0aWxfYmluYXJ5
Il0gaXMgTm9uZToKICAgICAgICAgY2FwYWJpbGl0aWVzWyJhY2NlcHRJbnNlY3VyZUNlcnRzIl0g
PSBUcnVlCiAgICAgaWYgY2FwYWJpbGl0aWVzOgpAQCAtMTQ1LDYgKzE1OCw3IEBAIGRlZiBleGVj
dXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5f
aW5mb19kYXRhLAogICAgIGV4ZWN1dG9yX2t3YXJnc1siZGVidWciXSA9IHJ1bl9pbmZvX2RhdGFb
ImRlYnVnIl0KICAgICBleGVjdXRvcl9rd2FyZ3NbImNjb3YiXSA9IHJ1bl9pbmZvX2RhdGEuZ2V0
KCJjY292IiwgRmFsc2UpCiAgICAgZXhlY3V0b3Jfa3dhcmdzWyJicm93c2VyX3ZlcnNpb24iXSA9
IHJ1bl9pbmZvX2RhdGEuZ2V0KCJicm93c2VyX3ZlcnNpb24iKQorICAgIGV4ZWN1dG9yX2t3YXJn
c1siZGVidWdfdGVzdCJdID0ga3dhcmdzWyJkZWJ1Z190ZXN0Il0KICAgICByZXR1cm4gZXhlY3V0
b3Jfa3dhcmdzCiAKIApAQCAtMTc5LDcgKzE5MywxMSBAQCBkZWYgcnVuX2luZm9fZXh0cmFzKCoq
a3dhcmdzKToKICAgICAgICAgICAidmVyaWZ5Ijoga3dhcmdzWyJ2ZXJpZnkiXSwKICAgICAgICAg
ICAiaGVhZGxlc3MiOiBrd2FyZ3MuZ2V0KCJoZWFkbGVzcyIsIEZhbHNlKSBvciAiTU9aX0hFQURM
RVNTIiBpbiBvcy5lbnZpcm9uLAogICAgICAgICAgICJzdy1lMTBzIjogVHJ1ZSwKLSAgICAgICAg
ICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVuYWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJl
ZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KKyAgICAgICAgICAiZmlzc2lvbiI6IGt3YXJncy5nZXQo
ImVuYWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKSwK
KyAgICAgICAgICAic2Vzc2lvbkhpc3RvcnlJblBhcmVudCI6IChrd2FyZ3MuZ2V0KCJlbmFibGVf
Zmlzc2lvbiIpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Jv
b2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldF9ib29sX3ByZWYoImZpc3Npb24uc2Vzc2lvbkhpc3RvcnlJblBhcmVu
dCIpKSwKKyAgICAgICAgICAic3dnbCI6IGdldF9ib29sX3ByZWYoImdmeC53ZWJyZW5kZXIuc29m
dHdhcmUiKX0KIAogICAgICMgVGhlIHZhbHVlIG9mIGBzdy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0
aGVyIHRoZSAicGFyZW50X2ludGVyY2VwdCIKICAgICAjIGltcGxlbWVudGF0aW9uIGlzIGVuYWJs
ZWQgZm9yIHRoZSBjdXJyZW50IGJ1aWxkLiBUaGlzIHZhbHVlLCBob3dldmVyLApAQCAtMjA5LDEw
ICsyMjcsMzAgQEAgZGVmIHJ1bl9pbmZvX2Jyb3dzZXJfdmVyc2lvbigqKmt3YXJncyk6CiAKIAog
ZGVmIHVwZGF0ZV9wcm9wZXJ0aWVzKCk6Ci0gICAgcmV0dXJuIChbIm9zIiwgImRlYnVnIiwgIndl
YnJlbmRlciIsICJmaXNzaW9uIiwgImUxMHMiLCAic3ctZTEwcyIsICJwcm9jZXNzb3IiXSwKKyAg
ICByZXR1cm4gKFsib3MiLCAiZGVidWciLCAid2VicmVuZGVyIiwgImZpc3Npb24iLCAiZTEwcyIs
ICJzdy1lMTBzIiwgInByb2Nlc3NvciIsICJzd2dsIl0sCiAgICAgICAgICAgICB7Im9zIjogWyJ2
ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJpdHMiXX0pCiAKIAorZGVmIGdldF9lbnZpcm9uKGxv
Z2dlciwgYmluYXJ5LCBkZWJ1Z19pbmZvLCBzdHlsb190aHJlYWRzLCBoZWFkbGVzcywgZW5hYmxl
X3dlYnJlbmRlciwKKyAgICAgICAgICAgICAgICBjaGFvc19tb2RlX2ZsYWdzPU5vbmUpOgorICAg
IGVudiA9IHRlc3RfZW52aXJvbm1lbnQoeHJlUGF0aD1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5k
aXJuYW1lKGJpbmFyeSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI9ZGVi
dWdfaW5mbyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUxTYW49
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz1sb2dnZXIpCisKKyAgICBlbnZb
IlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzdHlsb190aHJlYWRzKQorICAgIGlmIGNoYW9zX21vZGVf
ZmxhZ3MgaXMgbm90IE5vbmU6CisgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKGNo
YW9zX21vZGVfZmxhZ3MpCisgICAgaWYgaGVhZGxlc3M6CisgICAgICAgIGVudlsiTU9aX0hFQURM
RVNTIl0gPSAiMSIKKyAgICBpZiBlbmFibGVfd2VicmVuZGVyOgorICAgICAgICBlbnZbIk1PWl9X
RUJSRU5ERVIiXSA9ICIxIgorICAgICAgICBlbnZbIk1PWl9BQ0NFTEVSQVRFRCJdID0gIjEiCisg
ICAgZWxzZToKKyAgICAgICAgZW52WyJNT1pfV0VCUkVOREVSIl0gPSAiMCIKKyAgICByZXR1cm4g
ZW52CisKKwogY2xhc3MgRmlyZWZveEluc3RhbmNlTWFuYWdlcihvYmplY3QpOgogICAgIF9fbWV0
YWNsYXNzX18gPSBBQkNNZXRhCiAKQEAgLTI2OCwyMCArMzA2LDggQEAgY2xhc3MgRmlyZWZveElu
c3RhbmNlTWFuYWdlcihvYmplY3QpOgogICAgICAgICBtYXJpb25ldHRlX3BvcnQgPSBnZXRfZnJl
ZV9wb3J0KCkKICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJtYXJpb25ldHRlLnBv
cnQiOiBtYXJpb25ldHRlX3BvcnR9KQogCi0gICAgICAgIGVudiA9IHRlc3RfZW52aXJvbm1lbnQo
eHJlUGF0aD1vcy5wYXRoLmRpcm5hbWUoc2VsZi5iaW5hcnkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlYnVnZ2VyPXNlbGYuZGVidWdfaW5mbyBpcyBub3QgTm9uZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VMU2FuPVRydWUsIGxvZz1zZWxmLmxvZ2dlcikK
LQotICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3RocmVhZHMp
Ci0gICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFncykKLSAg
ICAgICAgaWYgc2VsZi5oZWFkbGVzczoKLSAgICAgICAgICAgIGVudlsiTU9aX0hFQURMRVNTIl0g
PSAiMSIKLSAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgotICAgICAgICAgICAgZW52
WyJNT1pfV0VCUkVOREVSIl0gPSAiMSIKLSAgICAgICAgICAgIGVudlsiTU9aX0FDQ0VMRVJBVEVE
Il0gPSAiMSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJd
ID0gIjAiCisgICAgICAgIGVudiA9IGdldF9lbnZpcm9uKHNlbGYubG9nZ2VyLCBzZWxmLmJpbmFy
eSwgc2VsZi5kZWJ1Z19pbmZvLCBzZWxmLnN0eWxvX3RocmVhZHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuaGVhZGxlc3MsIHNlbGYuZW5hYmxlX3dlYnJlbmRlciwgc2VsZi5jaGFv
c19tb2RlX2ZsYWdzKQogCiAgICAgICAgIGFyZ3MgPSBzZWxmLmJpbmFyeV9hcmdzWzpdIGlmIHNl
bGYuYmluYXJ5X2FyZ3MgZWxzZSBbXQogICAgICAgICBhcmdzICs9IFtjbWRfYXJnKCJtYXJpb25l
dHRlIiksICJhYm91dDpibGFuayJdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
ZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5kcm9p
ZC5weQppbmRleCBiZWEwZDlmNGVlMzMuLjVlOWRlNTY0OTYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CkBAIC0zOCw4ICszOCw5IEBAIGRlZiBjaGVja19hcmdz
KCoqa3dhcmdzKToKICAgICBwYXNzCiAKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwg
cnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIHsicGFja2FnZV9u
YW1lIjoga3dhcmdzWyJwYWNrYWdlX25hbWUiXSwKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIs
IHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CisgICAgcmV0dXJu
IHsiYWRiX2JpbmFyeSI6IGt3YXJnc1siYWRiX2JpbmFyeSJdLAorICAgICAgICAgICAgInBhY2th
Z2VfbmFtZSI6IGt3YXJnc1sicGFja2FnZV9uYW1lIl0sCiAgICAgICAgICAgICAiZGV2aWNlX3Nl
cmlhbCI6IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdLAogICAgICAgICAgICAgInByZWZzX3Jvb3Qi
OiBrd2FyZ3NbInByZWZzX3Jvb3QiXSwKICAgICAgICAgICAgICJleHRyYV9wcmVmcyI6IGt3YXJn
c1siZXh0cmFfcHJlZnMiXSwKQEAgLTg3LDEwICs4OCwxMCBAQCBkZWYgZW52X29wdGlvbnMoKToK
IAogCiBjbGFzcyBQcm9maWxlQ3JlYXRvcihGaXJlZm94UHJvZmlsZUNyZWF0b3IpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jvb3QsIGNvbmZpZywgdGVzdF90eXBlLCBl
eHRyYV9wcmVmcywgZTEwcywKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcmVmc19y
b290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsCiAgICAgICAgICAgICAgICAgIGVu
YWJsZV9maXNzaW9uLCBicm93c2VyX2NoYW5uZWwsIGNlcnR1dGlsX2JpbmFyeSwgY2FfY2VydGlm
aWNhdGVfcGF0aCk6CiAgICAgICAgIHN1cGVyKFByb2ZpbGVDcmVhdG9yLCBzZWxmKS5fX2luaXRf
Xyhsb2dnZXIsIHByZWZzX3Jvb3QsIGNvbmZpZywgdGVzdF90eXBlLCBleHRyYV9wcmVmcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxMHMsIGVuYWJsZV9m
aXNzaW9uLCBicm93c2VyX2NoYW5uZWwsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUcnVlLCBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVs
LCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Vy
dHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQogCiAgICAgZGVmIF9zZXRfcmVxdWly
ZWRfcHJlZnMoc2VsZiwgcHJvZmlsZSk6CkBAIC0xMDAsMTEgKzEwMSw5IEBAIGNsYXNzIFByb2Zp
bGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3JlYXRvcik6CiAgICAgICAgICAgICAicGxhY2VzLmhp
c3RvcnkuZW5hYmxlZCI6IEZhbHNlLAogICAgICAgICAgICAgImRvbS5zZW5kX2FmdGVyX3BhaW50
X3RvX2NvbnRlbnQiOiBUcnVlLAogICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUs
CisgICAgICAgICAgICAiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRvc3RhcnQiOiBUcnVlLAogICAg
ICAgICB9KQogCi0gICAgICAgIGlmIHNlbGYuZTEwczoKLSAgICAgICAgICAgIHByb2ZpbGUuc2V0
X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRvc3RhcnQiOiBUcnVlfSkKLQog
ICAgICAgICBpZiBzZWxmLnRlc3RfdHlwZSA9PSAicmVmdGVzdCI6CiAgICAgICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCJTZXR0aW5nIGFuZHJvaWQgcmVmdGVzdCBwcmVmZXJlbmNlcyIpCiAgICAg
ICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7CkBAIC0xMzAsNyArMTI5LDggQEAgY2xh
c3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAgICAgICAgICBjYV9j
ZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93ZWJyZW5kZXI9RmFsc2Us
IHN0YWNrZml4X2Rpcj1Ob25lLAogICAgICAgICAgICAgICAgICBiaW5hcnlfYXJncz1Ob25lLCB0
aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1GYWxzZSwgYXNhbj1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2RlX2ZsYWdzPU5vbmUsIGNv
bmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLAotICAgICAgICAgICAgICAgICBp
bnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290PU5vbmUsIHNwZWNpYWxwb3dlcnNfcGF0aD1O
b25lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIGluc3RhbGxfZm9udHM9RmFsc2UsIHRl
c3RzX3Jvb3Q9Tm9uZSwgc3BlY2lhbHBvd2Vyc19wYXRoPU5vbmUsIGFkYl9iaW5hcnk9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogCiAgICAgICAgIHN1cGVyKEZpcmVmb3hBbmRy
b2lkQnJvd3Nlciwgc2VsZikuX19pbml0X18obG9nZ2VyKQogICAgICAgICBzZWxmLnByZWZzX3Jv
b3QgPSBwcmVmc19yb290CkBAIC0xNDIsNyArMTQyLDcgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRC
cm93c2VyKEJyb3dzZXIpOgogICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBzdGFja3dh
bGtfYmluYXJ5CiAgICAgICAgIHNlbGYuY2VydHV0aWxfYmluYXJ5ID0gY2VydHV0aWxfYmluYXJ5
CiAgICAgICAgIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgK
LSAgICAgICAgc2VsZi5lMTBzID0gZTEwcworICAgICAgICBzZWxmLmUxMHMgPSBUcnVlCiAgICAg
ICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5kZXIKICAgICAgICAgc2Vs
Zi5zdGFja2ZpeF9kaXIgPSBzdGFja2ZpeF9kaXIKICAgICAgICAgc2VsZi5iaW5hcnlfYXJncyA9
IGJpbmFyeV9hcmdzCkBAIC0xNTYsMTMgKzE1NiwxMyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJy
b3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYuaW5zdGFsbF9mb250cyA9IGluc3RhbGxfZm9u
dHMKICAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAogICAgICAgICBzZWxmLnNw
ZWNpYWxwb3dlcnNfcGF0aCA9IHNwZWNpYWxwb3dlcnNfcGF0aAorICAgICAgICBzZWxmLmFkYl9i
aW5hcnkgPSBhZGJfYmluYXJ5CiAKICAgICAgICAgc2VsZi5wcm9maWxlX2NyZWF0b3IgPSBQcm9m
aWxlQ3JlYXRvcihsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlZnNfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dHJhX3ByZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGUxMHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJvd3Nlcl9jaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlcnR1dGlsX2JpbmFyeSwKQEAgLTIyNSw3ICsyMjUsOSBAQCBjbGFzcyBG
aXJlZm94QW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbD1zZWxmLmRldmljZV9z
ZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUT0RP
IC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dkaXI9b3MuZ2V0Y3dkKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nZGlyPW9zLmdldGN3ZCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYl9wYXRoPXNlbGYuYWRiX2JpbmFyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdF9jbGVh
bnVwPVRydWUpCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0YXJ0aW5nICVzIiAlIHNl
bGYucGFja2FnZV9uYW1lKQogICAgICAgICAjIGNvbm5lY3QgdG8gYSBydW5uaW5nIGVtdWxhdG9y
CkBAIC0yNTcsNyArMjU5LDcgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEJyb3dzZXIp
OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gcmVt
b3ZlIGZvcndhcmRlZCBvciByZXZlcnNlZCBwb3J0czogJXMiICUgZSkKICAgICAgICAgICAgICMg
V2UgYXNzdW1lIHRoYXQgc3RvcHBpbmcgdGhlIHJ1bm5lciBwcm9tcHRzIHRoZQogICAgICAgICAg
ICAgIyBicm93c2VyIHRvIHNodXQgZG93bi4KLSAgICAgICAgICAgIHNlbGYucnVubmVyLnN0b3Ao
KQorICAgICAgICAgICAgc2VsZi5ydW5uZXIuY2xlYW51cCgpCiAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJzdG9wcGVkIikKIAogICAgIGRlZiBwaWQoc2VsZik6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKaW5k
ZXggNzhjMjJiOTA5YWNmLi41ZmNlMjlhNDc3MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9pZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKQEAgLTE4LDEx
ICsxOCwxMSBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImllIiwKIGRlZiBjaGVja19h
cmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJ3ZWJkcml2ZXJfYmluYXJ5
IikKIAotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmln
LCAqKmt3YXJncyk6CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9p
bmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7IndlYmRyaXZlcl9iaW5h
cnkiOiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSwKICAgICAgICAgICAgICJ3ZWJkcml2ZXJf
YXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIil9CiAKLWRlZiBleGVjdXRvcl9rd2Fy
Z3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRh
LAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywg
Y2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2Fy
Z3MpOgogICAgIG9wdGlvbnMgPSB7fQogICAgIG9wdGlvbnNbInJlcXVpcmVXaW5kb3dGb2N1cyJd
ID0gVHJ1ZQpAQCAtNDMsNyArNDMsNyBAQCBkZWYgZW52X29wdGlvbnMoKToKIGNsYXNzIEludGVy
bmV0RXhwbG9yZXJCcm93c2VyKEJyb3dzZXIpOgogICAgIHVzZWRfcG9ydHMgPSBzZXQoKQogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgd2ViZHJpdmVyX2JpbmFyeSwgd2ViZHJpdmVy
X2FyZ3M9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgd2ViZHJpdmVyX2Jp
bmFyeSwgd2ViZHJpdmVyX2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBCcm93c2VyLl9f
aW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBJbnRlcm5ldEV4cGxv
cmVyRHJpdmVyU2VydmVyKHNlbGYubG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PXdlYmRyaXZlcl9iaW5hcnksCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvb3BlcmEucHkKaW5kZXggODA1ZmVkZWU2MzZjLi44MGU1YTMxNGM4M2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvb3BlcmEucHkKQEAgLTI0LDEzICsyNCwxMyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6
CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJpdmVyX2JpbmFyeSIpCiAKIAotZGVmIGJy
b3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6
CitkZWYgYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNv
bmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiB7ImJpbmFyeSI6IGt3YXJnc1siYmluYXJ5Il0s
CiAgICAgICAgICAgICAid2ViZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1sid2ViZHJpdmVyX2JpbmFy
eSJdLAogICAgICAgICAgICAgIndlYmRyaXZlcl9hcmdzIjoga3dhcmdzLmdldCgid2ViZHJpdmVy
X2FyZ3MiKX0KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZp
ZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9n
Z2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2Rh
dGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICBmcm9tIHNlbGVuaXVtLndl
YmRyaXZlciBpbXBvcnQgRGVzaXJlZENhcGFiaWxpdGllcwogCkBAIC03MSw3ICs3MSw3IEBAIGNs
YXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIGJpbmFyeSwgd2ViZHJpdmVyX2JpbmFyeT0ib3BlcmFkcml2ZXIiLAotICAg
ICAgICAgICAgICAgICB3ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICAgICAgICAgICAgICAgd2Vi
ZHJpdmVyX2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IHJl
cHJlc2VudGF0aW9uIG9mIE9wZXJhLiAgVGhlIGBiaW5hcnlgIGFyZ3VtZW50IGdpdmVzCiAgICAg
ICAgIHRoZSBicm93c2VyIGJpbmFyeSB0byB1c2UgZm9yIHRlc3RpbmcuIiIiCiAgICAgICAgIEJy
b3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3NhZmFyaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkKaW5kZXgg
Y2IyYjE3NWQ0ZGZiLi45NTY1ZjFjMzAyZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFyaS5weQpAQCAt
MSwzICsxLDkgQEAKK2ltcG9ydCBvcworaW1wb3J0IHBsaXN0bGliCitmcm9tIGRpc3R1dGlscy5z
cGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCisKK2ltcG9ydCBwc3V0aWwKKwogZnJvbSAuYmFz
ZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZwogZnJvbSAuYmFz
ZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLndl
YmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFyaURyaXZlclNlcnZlcgpAQCAtMjYsMTIgKzMyLDEz
IEBAIGRlZiBjaGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJ3
ZWJkcml2ZXJfYmluYXJ5IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5f
aW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIs
IHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0dXJu
IHsid2ViZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdLAotICAgICAg
ICAgICAgIndlYmRyaXZlcl9hcmdzIjoga3dhcmdzLmdldCgid2ViZHJpdmVyX2FyZ3MiKX0KKyAg
ICAgICAgICAgICJ3ZWJkcml2ZXJfYXJncyI6IGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIiks
CisgICAgICAgICAgICAia2lsbF9zYWZhcmkiOiBrd2FyZ3MuZ2V0KCJraWxsX3NhZmFyaSIsIEZh
bHNlKX0KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywg
Y2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2Vy
LCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEs
CiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICBleGVjdXRvcl9rd2FyZ3MgPSBi
YXNlX2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9f
ZGF0YSwgKiprd2FyZ3MpCkBAIC01OCwxNSArNjUsNjAgQEAgY2xhc3MgU2FmYXJpQnJvd3NlcihC
cm93c2VyKToKICAgICBgYHdwdHJ1bm5lci53ZWJkcml2ZXIuU2FmYXJpRHJpdmVyU2VydmVyYGAu
CiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCB3ZWJkcml2ZXJfYmlu
YXJ5LCB3ZWJkcml2ZXJfYXJncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCB3ZWJkcml2ZXJfYmluYXJ5LCB3ZWJkcml2ZXJfYXJncz1Ob25lLCBraWxsX3NhZmFyaT1GYWxz
ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IHJlcHJlc2VudGF0aW9uIG9m
IFNhZmFyaS4gIFRoZSBgd2ViZHJpdmVyX2JpbmFyeWAKICAgICAgICAgYXJndW1lbnQgZ2l2ZXMg
dGhlIFdlYkRyaXZlciBiaW5hcnkgdG8gdXNlIGZvciB0ZXN0aW5nLiAoVGhlIGJyb3dzZXIKICAg
ICAgICAgYmluYXJ5IGxvY2F0aW9uIGNhbm5vdCBiZSBzcGVjaWZpZWQsIGFzIFNhZmFyaSBhbmQg
U2FmYXJpRHJpdmVyIGFyZQotICAgICAgICBjb3VwbGVkLikiIiIKKyAgICAgICAgY291cGxlZC4p
IElmIGBraWxsX3NhZmFyaWAgaXMgVHJ1ZSwgdGhlbiBgQnJvd3Nlci5zdG9wYCB3aWxsIHN0b3Ag
U2FmYXJpLiIiIgogICAgICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAg
ICAgc2VsZi5zZXJ2ZXIgPSBTYWZhcmlEcml2ZXJTZXJ2ZXIoc2VsZi5sb2dnZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT13ZWJkcml2ZXJfYmluYXJ5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPXdlYmRyaXZl
cl9hcmdzKQorICAgICAgICBpZiAiLyIgbm90IGluIHdlYmRyaXZlcl9iaW5hcnk6CisgICAgICAg
ICAgICB3ZF9wYXRoID0gZmluZF9leGVjdXRhYmxlKHdlYmRyaXZlcl9iaW5hcnkpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICB3ZF9wYXRoID0gd2ViZHJpdmVyX2JpbmFyeQorICAgICAgICBz
ZWxmLnNhZmFyaV9wYXRoID0gc2VsZi5fZmluZEFzc29jaWF0ZWRTYWZhcmlFeGVjdXRhYmxlKHdk
X3BhdGgpCisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJXZWJEcml2ZXIgZXhlY3V0YWJsZSBwYXRo
OiAlcyIgJSB3ZF9wYXRoKQorICAgICAgICBsb2dnZXIuZGVidWcoIlNhZmFyaSBleGVjdXRhYmxl
IHBhdGg6ICVzIiAlIHNlbGYuc2FmYXJpX3BhdGgpCisKKyAgICAgICAgc2VsZi5raWxsX3NhZmFy
aSA9IGtpbGxfc2FmYXJpCisKKyAgICBkZWYgX2ZpbmRBc3NvY2lhdGVkU2FmYXJpRXhlY3V0YWJs
ZShzZWxmLCB3ZF9wYXRoKToKKyAgICAgICAgYnVuZGxlX3BhdGhzID0gWworICAgICAgICAgICAg
b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZSh3ZF9wYXRoKSwgIi4uIiwgIi4uIiksICAjIGJ1
bmRsZWQgU2FmYXJpIChlLmcuIFNUUCkKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUod2RfcGF0aCksICJTYWZhcmkuYXBwIiksICAjIGxvY2FsIFNhZmFyaSBidWlsZAor
ICAgICAgICAgICAgIi9BcHBsaWNhdGlvbnMvU2FmYXJpLmFwcCIsICAjIHN5c3RlbSBTYWZhcmkK
KyAgICAgICAgXQorCisgICAgICAgIGZvciBidW5kbGVfcGF0aCBpbiBidW5kbGVfcGF0aHM6Cisg
ICAgICAgICAgICBpbmZvX3BhdGggPSBvcy5wYXRoLmpvaW4oYnVuZGxlX3BhdGgsICJDb250ZW50
cyIsICJJbmZvLnBsaXN0IikKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShpbmZv
X3BhdGgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggb3Bl
bihpbmZvX3BhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIGluZm8gPSBwbGlzdGxp
Yi5sb2FkKGZwKQorCisgICAgICAgICAgICAjIGNoZWNrIHdlIGhhdmUgYSBTYWZhcmkgZmFtaWx5
IGJ1bmRsZQorICAgICAgICAgICAgaWYgIkNGQnVuZGxlSWRlbnRpZmllciIgbm90IGluIGluZm86
CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlkZW50ID0gaW5mb1siQ0ZC
dW5kbGVJZGVudGlmaWVyIl0KKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGlkZW50LCBz
dHIpIG9yIG5vdCBpZGVudC5zdGFydHN3aXRoKCJjb20uYXBwbGUuU2FmYXJpIik6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBnZXQgdGhlIGV4ZWN1dGFibGUgbmFt
ZQorICAgICAgICAgICAgaWYgIkNGQnVuZGxlRXhlY3V0YWJsZSIgbm90IGluIGluZm86CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4ZSA9IGluZm9bIkNGQnVuZGxlRXhl
Y3V0YWJsZSJdCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGUsIHN0cik6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZXhlX3BhdGggPSBvcy5wYXRoLmpv
aW4oYnVuZGxlX3BhdGgsICJDb250ZW50cyIsICJNYWNPUyIsIGV4ZSkKKyAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShleGVfcGF0aCk6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgcmV0dXJuIGV4ZV9wYXRoCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgKipr
d2FyZ3MpOgogICAgICAgICBzZWxmLnNlcnZlci5zdGFydChibG9jaz1GYWxzZSkKQEAgLTc0LDYg
KzEyNiwyMCBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJyb3dzZXIpOgogICAgIGRlZiBzdG9wKHNl
bGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcChmb3JjZT1mb3JjZSkK
IAorICAgICAgICBpZiBzZWxmLmtpbGxfc2FmYXJpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIu
ZGVidWcoIkdvaW5nIHRvIHN0b3AgU2FmYXJpIikKKyAgICAgICAgICAgIGZvciBwcm9jIGluIHBz
dXRpbC5wcm9jZXNzX2l0ZXIoYXR0cnM9WyJleGUiXSk6CisgICAgICAgICAgICAgICAgaWYgcHJv
Yy5pbmZvWyJleGUiXSBpcyBub3QgTm9uZSBhbmQgb3MucGF0aC5zYW1lZmlsZShwcm9jLmluZm9b
ImV4ZSJdLCBzZWxmLnNhZmFyaV9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIlN0b3BwaW5nIFNhZmFyaSAlcyIgJSBwcm9jLnBpZCkKKyAgICAgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvYy50ZXJtaW5hdGUoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Mud2FpdCgxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBwc3V0aWwuVGltZW91
dEV4cGlyZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYy5raWxsKCkKKyAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0IHBzdXRpbC5Ob1N1Y2hQcm9jZXNzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcGFzcworCiAgICAgZGVmIHBpZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYuc2VydmVyLnBpZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Uu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKaW5kZXggYzU3YWM5NDJlZDRlLi45
OWVjZTg5ZDQ1NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKQEAgLTEyLDcgKzEyLDcgQEAgaW1w
b3J0IHRpbWUKIAogaW1wb3J0IHJlcXVlc3RzCiAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBjU3Ry
aW5nSU8gYXMgU3RyaW5nSU8KK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gLmJhc2Ug
aW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2Ug
aW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIgICAjIG5vcWE6IEY0MDEKQEAgLTk1LDEzICs5
NSwxMyBAQCBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdz
LCAic2F1Y2Vfa2V5IikKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5m
b19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRl
c3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgc2F1Y2VfY29u
ZmlnID0gZ2V0X3NhdWNlX2NvbmZpZygqKmt3YXJncykKIAogICAgIHJldHVybiB7InNhdWNlX2Nv
bmZpZyI6IHNhdWNlX2NvbmZpZ30KIAogCi1kZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwg
c2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKK2RlZiBleGVjdXRv
cl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIs
IHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICBleGVj
dXRvcl9rd2FyZ3MgPSBiYXNlX2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25m
aWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFu
YWdlciwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCkBAIC0yMjgsNyArMjI4LDcgQEAgY2xhc3Mg
U2F1Y2VFeGNlcHRpb24oRXhjZXB0aW9uKToKIGNsYXNzIFNhdWNlQnJvd3NlcihCcm93c2VyKToK
ICAgICBpbml0X3RpbWVvdXQgPSAzMDAKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHNhdWNlX2NvbmZpZyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgc2F1Y2VfY29u
ZmlnLCAqKmt3YXJncyk6CiAgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQog
ICAgICAgICBzZWxmLnNhdWNlX2NvbmZpZyA9IHNhdWNlX2NvbmZpZwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Vfc2V0dXAvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvc2F1Y2Vfc2V0dXAvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUxNTJlMTI2YjRlMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYXVjZV9zZXR1cC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZV9zZXR1
cC9lZGdlLXByZXJ1bi5iYXQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Vfc2V0dXAvc2Fm
YXJpLXByZXJ1bi5zaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5CmluZGV4IGI5NDc2NTQwYWM3Yy4uNGY5
MzRhZWRmY2Q2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm8ucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5CkBAIC0zMyw3ICszMyw3IEBAIGRlZiBj
aGVja19hcmdzKCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJiaW5hcnkiKQog
CiAKLWRlZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywg
Kiprd2FyZ3MpOgorZGVmIGJyb3dzZXJfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBydW5faW5m
b19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICByZXR1cm4gewogICAgICAgICAiYmluYXJ5
Ijoga3dhcmdzWyJiaW5hcnkiXSwKICAgICAgICAgImRlYnVnX2luZm8iOiBrd2FyZ3NbImRlYnVn
X2luZm8iXSwKQEAgLTQzLDcgKzQzLDcgQEAgZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwg
cnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgfQogCiAKLWRlZiBleGVjdXRv
cl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5m
b19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2VydmVyX2Nv
bmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
Kiprd2FyZ3MpOgogICAgIHJ2ID0gYmFzZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2
ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdlciwg
cnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCkBAIC03MSw3ICs3MSw3IEBAIGRlZiB1cGRhdGVfcHJv
cGVydGllcygpOgogCiBjbGFzcyBTZXJ2b0Jyb3dzZXIoTnVsbEJyb3dzZXIpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgZGVidWdfaW5mbz1Ob25lLCBiaW5hcnlfYXJn
cz1Ob25lLAotICAgICAgICAgICAgICAgICB1c2VyX3N0eWxlc2hlZXRzPU5vbmUsIGNhX2NlcnRp
ZmljYXRlX3BhdGg9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHVzZXJfc3R5bGVzaGVldHM9Tm9u
ZSwgY2FfY2VydGlmaWNhdGVfcGF0aD1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIE51bGxCcm93
c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKICAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkK
ICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdfaW5mbwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3Nl
cnZvZHJpdmVyLnB5CmluZGV4IDQzNzk0ZTQxNzA2ZC4uODNiOTQyM2JhNzFhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5CkBAIC0zNiw3ICszNiw3IEBAIGRlZiBjaGVja19hcmdz
KCoqa3dhcmdzKToKICAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJiaW5hcnkiKQogCiAKLWRlZiBi
cm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3Mp
OgorZGVmIGJyb3dzZXJfa3dhcmdzKGxvZ2dlciwgdGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBj
b25maWcsICoqa3dhcmdzKToKICAgICByZXR1cm4gewogICAgICAgICAiYmluYXJ5Ijoga3dhcmdz
WyJiaW5hcnkiXSwKICAgICAgICAgImJpbmFyeV9hcmdzIjoga3dhcmdzWyJiaW5hcnlfYXJncyJd
LApAQCAtNDcsNyArNDcsNyBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5m
b19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICB9CiAKIAotZGVmIGV4ZWN1dG9yX2t3YXJn
cyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEs
ICoqa3dhcmdzKToKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZl
cl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsICoqa3dhcmdzKToKICAgICBy
diA9IGJhc2VfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsICoq
a3dhcmdzKQogICAgIHJldHVybiBydgpAQCAtNzcsNyArNzcsOCBAQCBjbGFzcyBTZXJ2b1dlYkRy
aXZlckJyb3dzZXIoQnJvd3Nlcik6CiAgICAgaW5pdF90aW1lb3V0ID0gMzAwICAjIExhcmdlIHRp
bWVvdXQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIGJvb3RpbmcgYW4gQW5kcm9pZCBlbXVsYXRvcgog
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBkZWJ1Z19pbmZvPU5vbmUs
IHdlYmRyaXZlcl9ob3N0PSIxMjcuMC4wLjEiLAotICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29u
ZmlnPU5vbmUsIGJpbmFyeV9hcmdzPU5vbmUsIHVzZXJfc3R5bGVzaGVldHM9Tm9uZSwgaGVhZGxl
c3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWc9Tm9uZSwgYmluYXJ5X2Fy
Z3M9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdXNlcl9zdHlsZXNoZWV0cz1Ob25lLCBoZWFkbGVz
cz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2Vy
KQogICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQogICAgICAgICBzZWxmLmJpbmFyeV9hcmdz
ID0gYmluYXJ5X2FyZ3Mgb3IgW10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY4M2RiZjMxZjFjLi4wMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMzggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2VibGF5ZXIucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jh
c2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9p
b3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX3Nwa2lfY2VydHMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlX3dl
YmRyaXZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmly
ZWZveC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L3NhdWNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXQucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvd2Via2l0LnB5CmluZGV4IGRhOTNjZjE2NDM5OS4uZjgzZGUyOTk2YTk4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy93ZWJraXQucHkKQEAgLTI5LDcgKzI5LDcgQEAgZGVmIGNoZWNrX2FyZ3MoKiprd2Fy
Z3MpOgogICAgIHJlcXVpcmVfYXJnKGt3YXJncywgIndlYmtpdF9wb3J0IikKIAogCi1kZWYgYnJv
d3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToK
K2RlZiBicm93c2VyX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29u
ZmlnLCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIHsiYmluYXJ5Ijoga3dhcmdzWyJiaW5hcnkiXSwK
ICAgICAgICAgICAgICJ3ZWJkcml2ZXJfYmluYXJ5Ijoga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5
Il0sCiAgICAgICAgICAgICAid2ViZHJpdmVyX2FyZ3MiOiBrd2FyZ3MuZ2V0KCJ3ZWJkcml2ZXJf
YXJncyIpfQpAQCAtNTQsNyArNTQsNyBAQCBkZWYgY2FwYWJpbGl0aWVzX2Zvcl9wb3J0KHNlcnZl
cl9jb25maWcsICoqa3dhcmdzKToKICAgICByZXR1cm4ge30KIAogCi1kZWYgZXhlY3V0b3Jfa3dh
cmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0
YSwKK2RlZiBleGVjdXRvcl9rd2FyZ3MobG9nZ2VyLCB0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcs
IGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKToKICAgICBleGVjdXRvcl9rd2FyZ3MgPSBiYXNlX2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5
cGUsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCkBAIC04Miw3ICs4
Miw3IEBAIGNsYXNzIFdlYktpdEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgIiIiCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHdl
YmRyaXZlcl9hcmdzPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhz
ZWxmLCBsb2dnZXIpCiAgICAgICAgIHNlbGYuYmluYXJ5ID0gYmluYXJ5CiAgICAgICAgIHNlbGYu
c2VydmVyID0gV2ViS2l0RHJpdmVyU2VydmVyKHNlbGYubG9nZ2VyLCBiaW5hcnk9d2ViZHJpdmVy
X2JpbmFyeSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXRndGtfbWlu
aWJyb3dzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2Vy
LnB5CmluZGV4IGQ4Yjk3NDRiZDc0My4uNmMxMDAxZTJkNzBkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkKQEAgLTI1LDcgKzI1LDcgQEAgZGVm
IGNoZWNrX2FyZ3MoKiprd2FyZ3MpOgogICAgIHBhc3MKIAogCi1kZWYgYnJvd3Nlcl9rd2FyZ3Mo
dGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKK2RlZiBicm93c2Vy
X2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJn
cyk6CiAgICAgIyBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUv
bGlic291cC9pc3N1ZXMvMTcyCiAgICAgd2ViZHJpdmVyX3JlcXVpcmVkX2FyZ3MgPSBbIi0taG9z
dD0xMjcuMC4wLjEiXQogICAgIHdlYmRyaXZlcl9hcmdzID0gbWF5YmVfYWRkX2FyZ3Mod2ViZHJp
dmVyX3JlcXVpcmVkX2FyZ3MsIGt3YXJncy5nZXQoIndlYmRyaXZlcl9hcmdzIikpCkBAIC01Myw3
ICs1Myw3IEBAIGRlZiBjYXBhYmlsaXRpZXMoc2VydmVyX2NvbmZpZywgKiprd2FyZ3MpOgogICAg
ICAgICAgICAgImNlcnRpZmljYXRlcyI6IGNlcnRpZmljYXRlX2RvbWFpbl9saXN0KHNlcnZlcl9j
b25maWcuZG9tYWluc19zZXQsIGt3YXJnc1siaG9zdF9jZXJ0X3BhdGgiXSl9fQogCiAKLWRlZiBl
eGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBy
dW5faW5mb19kYXRhLAorZGVmIGV4ZWN1dG9yX2t3YXJncyhsb2dnZXIsIHRlc3RfdHlwZSwgc2Vy
dmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgKiprd2FyZ3MpOgogICAgIGV4ZWN1dG9yX2t3YXJncyA9IGJhc2VfZXhlY3V0b3Jfa3dh
cmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLCAqKmt3YXJncykK
QEAgLTc2LDYgKzc2LDYgQEAgZGVmIHJ1bl9pbmZvX2V4dHJhcygqKmt3YXJncyk6CiAKIGNsYXNz
IFdlYktpdEdUS01pbmlCcm93c2VyKFdlYktpdEJyb3dzZXIpOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJfYmluYXJ5PU5vbmUsCi0gICAgICAg
ICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgorICAgICAgICAgICAgICAgICB3ZWJkcml2
ZXJfYXJncz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIFdlYktpdEJyb3dzZXIuX19pbml0X18o
c2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3MpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Y29uZmlnLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2NvbmZpZy5weQppbmRleCBkNDZiZWI4ZTcxZGIuLjNm
NWU5MzQxZGNmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2NvbmZpZy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvY29uZmlnLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSBzaXgubW92ZXMuY29uZmln
cGFyc2VyIGltcG9ydCBTYWZlQ29uZmlnUGFyc2VyCitmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQg
U2FmZUNvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBPcmRlcmVkRGljdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CmluZGV4IDI1MjdkMjZkMzkxZC4uODZk
Y2I5M2RlZjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC0xLDE0ICsxLDE0IEBACiBpbXBvcnQganNv
bgogaW1wb3J0IG9zCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisKIGltcG9ydCBzaWduYWwKIGlt
cG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1mcm9tIHNpeCBpbXBvcnQgaXRl
cml0ZW1zCiAKIGZyb20gbW96bG9nIGltcG9ydCBnZXRfZGVmYXVsdF9sb2dnZXIsIGhhbmRsZXJz
LCBwcm94eQogCitmcm9tIC4gaW1wb3J0IG1wY29udGV4dAogZnJvbSAud3B0bG9nZ2luZyBpbXBv
cnQgTG9nTGV2ZWxSZXdyaXRlcgogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQpA
QCAtNTQsNyArNTQsNyBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAiIiJD
b250ZXh0IG1hbmFnZXIgdGhhdCBvd25zIHRoZSB0ZXN0IGVudmlyb25tZW50IGkuZS4gdGhlIGh0
dHAgYW5kCiAgICAgd2Vic29ja2V0cyBzZXJ2ZXJzIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHRlc3RfcGF0aHMsIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyLAotICAgICAgICAgICAg
ICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZvLCBvcHRpb25zLCBzc2xfY29uZmlnLCBl
bnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z190ZXN0
LCBkZWJ1Z19pbmZvLCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAogICAgICAgICAg
ICAgICAgICBlbmFibGVfcXVpYz1GYWxzZSwgbW9qb2pzX3BhdGg9Tm9uZSk6CiAgICAgICAgIHNl
bGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCkBA
IC02MiwxMiArNjIsMTQgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
IHNlbGYuY29uZmlnID0gTm9uZQogICAgICAgICBzZWxmLnRlc3RoYXJuZXNzX3RpbWVvdXRfbXVs
dGlwbGVyID0gdGVzdGhhcm5lc3NfdGltZW91dF9tdWx0aXBsZXIKICAgICAgICAgc2VsZi5wYXVz
ZV9hZnRlcl90ZXN0ID0gcGF1c2VfYWZ0ZXJfdGVzdAorICAgICAgICBzZWxmLmRlYnVnX3Rlc3Qg
PSBkZWJ1Z190ZXN0CiAgICAgICAgIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydCA9IG9wdGlvbnMucG9w
KCJ0ZXN0X3NlcnZlcl9wb3J0IiwgVHJ1ZSkKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVi
dWdfaW5mbwogICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zIGlmIG9wdGlvbnMgaXMgbm90
IE5vbmUgZWxzZSB7fQogCi0gICAgICAgIHNlbGYuY2FjaGVfbWFuYWdlciA9IG11bHRpcHJvY2Vz
c2luZy5NYW5hZ2VyKCkKLSAgICAgICAgc2VsZi5zdGFzaCA9IHNlcnZlLnN0YXNoLlN0YXNoU2Vy
dmVyKCkKKyAgICAgICAgbXBfY29udGV4dCA9IG1wY29udGV4dC5nZXRfY29udGV4dCgpCisgICAg
ICAgIHNlbGYuY2FjaGVfbWFuYWdlciA9IG1wX2NvbnRleHQuTWFuYWdlcigpCisgICAgICAgIHNl
bGYuc3Rhc2ggPSBzZXJ2ZS5zdGFzaC5TdGFzaFNlcnZlcihtcF9jb250ZXh0PW1wX2NvbnRleHQp
CiAgICAgICAgIHNlbGYuZW52X2V4dHJhcyA9IGVudl9leHRyYXMKICAgICAgICAgc2VsZi5lbnZf
ZXh0cmFzX2NtcyA9IE5vbmUKICAgICAgICAgc2VsZi5zc2xfY29uZmlnID0gc3NsX2NvbmZpZwpA
QCAtOTUsNyArOTcsOCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAg
ICAgIHNlbGYuZW52X2V4dHJhc19jbXMuYXBwZW5kKGNtKQogCiAgICAgICAgIHNlbGYuc2VydmVy
cyA9IHNlcnZlLnN0YXJ0KHNlbGYuY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmdldF9yb3V0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5nZXRfcm91dGVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1wX2NvbnRleHQ9bXBjb250ZXh0LmdldF9jb250ZXh0KCkpCiAKICAgICAgICAgaWYgc2Vs
Zi5vcHRpb25zLmdldCgic3VwcG9ydHNfZGVidWdnZXIiKSBhbmQgc2VsZi5kZWJ1Z19pbmZvIGFu
ZCBzZWxmLmRlYnVnX2luZm8uaW50ZXJhY3RpdmU6CiAgICAgICAgICAgICBzZWxmLmlnbm9yZV9p
bnRlcnJ1cHRzKCkKQEAgLTEwNCw3ICsxMDcsNyBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2Jq
ZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6
CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRzKCkKIAotICAgICAgICBmb3Igc2NoZW1l
LCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxmLnNlcnZlcnMpOgorICAgICAgICBmb3Igc2NoZW1l
LCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVtcygpOgogICAgICAgICAgICAgZm9yIHBvcnQs
IHNlcnZlciBpbiBzZXJ2ZXJzOgogICAgICAgICAgICAgICAgIHNlcnZlci5raWxsKCkKICAgICAg
ICAgZm9yIGNtIGluIHNlbGYuZW52X2V4dHJhc19jbXM6CkBAIC0xNjgsNyArMTcxLDggQEAgY2xh
c3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAgIGxvZ19maWx0ZXIgPSBMb2dMZXZl
bFJld3JpdGVyKGxvZ19maWx0ZXIsIFsiZXJyb3IiXSwgIndhcm5pbmciKQogICAgICAgICBzZXJ2
ZXJfbG9nZ2VyLmNvbXBvbmVudF9maWx0ZXIgPSBsb2dfZmlsdGVyCiAKLSAgICAgICAgc2VydmVy
X2xvZ2dlciA9IHByb3h5LlF1ZXVlZFByb3h5TG9nZ2VyKHNlcnZlcl9sb2dnZXIpCisgICAgICAg
IHNlcnZlcl9sb2dnZXIgPSBwcm94eS5RdWV1ZWRQcm94eUxvZ2dlcihzZXJ2ZXJfbG9nZ2VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBjb250ZXh0
LmdldF9jb250ZXh0KCkpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBTZXQgYXMgdGhl
IGRlZmF1bHQgbG9nZ2VyIGZvciB3cHRzZXJ2ZQpAQCAtMTkxLDcgKzE5NSw4IEBAIGNsYXNzIFRl
c3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICAgICAgICAgIChzZWxmLm9wdGlvbnMuZ2V0
KCJ0ZXN0aGFybmVzc3JlcG9ydCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyIpLAogICAgICAgICAg
ICAgICAgICB7Im91dHB1dCI6IHNlbGYucGF1c2VfYWZ0ZXJfdGVzdCwKICAgICAgICAgICAgICAg
ICAgICJ0aW1lb3V0X211bHRpcGxpZXIiOiBzZWxmLnRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlw
bGVyLAotICAgICAgICAgICAgICAgICAgImV4cGxpY2l0X3RpbWVvdXQiOiAidHJ1ZSIgaWYgc2Vs
Zi5kZWJ1Z19pbmZvIGlzIG5vdCBOb25lIGVsc2UgImZhbHNlIn0sCisgICAgICAgICAgICAgICAg
ICAiZXhwbGljaXRfdGltZW91dCI6ICJ0cnVlIiBpZiBzZWxmLmRlYnVnX2luZm8gaXMgbm90IE5v
bmUgZWxzZSAiZmFsc2UiLAorICAgICAgICAgICAgICAgICAgImRlYnVnIjogInRydWUiIGlmIHNl
bGYuZGVidWdfdGVzdCBlbHNlICJmYWxzZSJ9LAogICAgICAgICAgICAgICAgICAidGV4dC9qYXZh
c2NyaXB0O2NoYXJzZXQ9dXRmOCIsCiAgICAgICAgICAgICAgICAgICIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIildOgogICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgo
b3MucGF0aC5qb2luKGhlcmUsIHBhdGgpKQpAQCAtMjA5LDcgKzIxNCw3IEBAIGNsYXNzIFRlc3RF
bnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVyKCJH
RVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0ZXh0L2phdmFzY3JpcHQiKSkKIAotICAg
ICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMpOgor
ICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRocy5pdGVtcygpOgog
ICAgICAgICAgICAgaWYgdXJsX2Jhc2UgPT0gIi8iOgogICAgICAgICAgICAgICAgIGNvbnRpbnVl
CiAgICAgICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9tb3VudF9wb2ludCh1cmxfYmFzZSwgcGF0
aHNbInRlc3RzX3BhdGgiXSkKQEAgLTI0MSwxMyArMjQ2LDEzIEBAIGNsYXNzIFRlc3RFbnZpcm9u
bWVudChvYmplY3QpOgogICAgICAgICBmYWlsZWQgPSBbXQogICAgICAgICBwZW5kaW5nID0gW10K
ICAgICAgICAgaG9zdCA9IHNlbGYuY29uZmlnWyJzZXJ2ZXJfaG9zdCJdCi0gICAgICAgIGZvciBz
Y2hlbWUsIHNlcnZlcnMgaW4gaXRlcml0ZW1zKHNlbGYuc2VydmVycyk6CisgICAgICAgIGZvciBz
Y2hlbWUsIHNlcnZlcnMgaW4gc2VsZi5zZXJ2ZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3Ig
cG9ydCwgc2VydmVyIGluIHNlcnZlcnM6CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlcnZlci5p
c19hbGl2ZSgpOgogICAgICAgICAgICAgICAgICAgICBmYWlsZWQuYXBwZW5kKChzY2hlbWUsIHBv
cnQpKQogCiAgICAgICAgIGlmIG5vdCBmYWlsZWQgYW5kIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoK
LSAgICAgICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gaXRlcml0ZW1zKHNlbGYuc2VydmVy
cyk6CisgICAgICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVt
cygpOgogICAgICAgICAgICAgICAgICMgVE9ETyhIZXhjbGVzKTogRmluZCBhIHdheSB0byB0ZXN0
IFFVSUMncyBVRFAgcG9ydC4KICAgICAgICAgICAgICAgICBpZiBzY2hlbWUgPT0gInF1aWMtdHJh
bnNwb3J0IjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvYWN0aW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0
aW9ucy5weQppbmRleCBiMTFkMzBiYjk0YWEuLjk2M2VkMzM3ZmRlNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvYWN0aW9ucy5weQpAQCAtMTMsNiArMTMsMTggQEAgY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0
KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50KGVsZW1lbnQpCiAKIAorY2xh
c3MgRGVsZXRlQWxsQ29va2llc0FjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiZGVsZXRlX2Fs
bF9jb29raWVzIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgor
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJv
dG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoIkRlbGV0aW5nIGFsbCBjb29raWVzIikKKyAgICAgICAgc2VsZi5wcm90b2Nv
bC5jb29raWVzLmRlbGV0ZV9hbGxfY29va2llcygpCisKKwogY2xhc3MgU2VuZEtleXNBY3Rpb24o
b2JqZWN0KToKICAgICBuYW1lID0gInNlbmRfa2V5cyIKIApAQCAtMTcxLDYgKzE4Myw3IEBAIGNs
YXNzIFNldFVzZXJWZXJpZmllZEFjdGlvbihvYmplY3QpOgogCiAKIGFjdGlvbnMgPSBbQ2xpY2tB
Y3Rpb24sCisgICAgICAgICAgIERlbGV0ZUFsbENvb2tpZXNBY3Rpb24sCiAgICAgICAgICAgIFNl
bmRLZXlzQWN0aW9uLAogICAgICAgICAgICBBY3Rpb25TZXF1ZW5jZUFjdGlvbiwKICAgICAgICAg
ICAgR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5CmluZGV4IDU1
NTE4Njg1NDk0ZS4uYjQ3ZDBhZDI2Zjk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2Jhc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5CkBAIC04LDE3
ICs4LDE2IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGZy
b20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAotZnJvbSBzaXggaW1wb3J0IHRl
eHRfdHlwZQotZnJvbSBzaXgubW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEhUVFBDb25uZWN0aW9u
Ci1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1
cmx1bnNwbGl0Citmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQQ29ubmVjdGlvbgorZnJvbSB1
cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0CiAKLWZyb20g
Li50ZXN0cnVubmVyIGltcG9ydCBTdG9wCiBmcm9tIC5hY3Rpb25zIGltcG9ydCBhY3Rpb25zCiBm
cm9tIC5wcm90b2NvbCBpbXBvcnQgUHJvdG9jb2wsIEJhc2VQcm90b2NvbFBhcnQKIAogaGVyZSA9
IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIAogCisKIGRlZiBleGVjdXRvcl9rd2FyZ3ModGVz
dF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAg
ICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgdGltZW91dF9tdWx0aXBsaWVyID0ga3dh
cmdzWyJ0aW1lb3V0X211bHRpcGxpZXIiXQpAQCAtNDIsNyArNDEsNyBAQCBkZWYgZXhlY3V0b3Jf
a3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9f
ZGF0YSwKICAgICAjIHdhbnQgdG8gdmlldyB0aGUgcmVzdWx0cywgaG93ZXZlciwgdGhlIGV4ZWN1
dG9yIGhhcyB0byBza2lwIHRoYXQgY2xlYW51cC4KICAgICBpZiBrd2FyZ3NbInBhdXNlX2FmdGVy
X3Rlc3QiXSBvciBrd2FyZ3NbInBhdXNlX29uX3VuZXhwZWN0ZWQiXToKICAgICAgICAgZXhlY3V0
b3Jfa3dhcmdzWyJjbGVhbnVwX2FmdGVyX3Rlc3QiXSA9IEZhbHNlCi0KKyAgICBleGVjdXRvcl9r
d2FyZ3NbImRlYnVnX3Rlc3QiXSA9IGt3YXJnc1siZGVidWdfdGVzdCJdCiAgICAgcmV0dXJuIGV4
ZWN1dG9yX2t3YXJncwogCiAKQEAgLTE4MCwxMSArMTc5LDExIEBAIGNsYXNzIFRpbWVkUnVubmVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYucmVzdWx0X2ZsYWcgPSB0aHJlYWRpbmcuRXZlbnQoKQog
CiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zZXRfdGltZW91dCgpIGlzIFN0
b3A6Ci0gICAgICAgICAgICByZXR1cm4gU3RvcAotCi0gICAgICAgIGlmIHNlbGYuYmVmb3JlX3J1
bigpIGlzIFN0b3A6Ci0gICAgICAgICAgICByZXR1cm4gU3RvcAorICAgICAgICBmb3Igc2V0dXBf
Zm4gaW4gW3NlbGYuc2V0X3RpbWVvdXQsIHNlbGYuYmVmb3JlX3J1bl06CisgICAgICAgICAgICBl
cnIgPSBzZXR1cF9mbigpCisgICAgICAgICAgICBpZiBlcnI6CisgICAgICAgICAgICAgICAgc2Vs
Zi5yZXN1bHQgPSAoRmFsc2UsIGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1
bHQKIAogICAgICAgICBleGVjdXRvciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYucnVu
X2Z1bmMpCiAgICAgICAgIGV4ZWN1dG9yLnN0YXJ0KCkKQEAgLTI4NywxOCArMjg2LDE1IEBAIGNs
YXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgICAgICAiIiJSdW4gYSBwYXJ0aWN1bGFyIHRl
c3QuCiAKICAgICAgICAgOnBhcmFtIHRlc3Q6IFRoZSB0ZXN0IHRvIHJ1biIiIgotICAgICAgICBp
ZiB0ZXN0LmVudmlyb25tZW50ICE9IHNlbGYubGFzdF9lbnZpcm9ubWVudDoKLSAgICAgICAgICAg
IHNlbGYub25fZW52aXJvbm1lbnRfY2hhbmdlKHRlc3QuZW52aXJvbm1lbnQpCiAgICAgICAgIHRy
eToKKyAgICAgICAgICAgIGlmIHRlc3QuZW52aXJvbm1lbnQgIT0gc2VsZi5sYXN0X2Vudmlyb25t
ZW50OgorICAgICAgICAgICAgICAgIHNlbGYub25fZW52aXJvbm1lbnRfY2hhbmdlKHRlc3QuZW52
aXJvbm1lbnQpCiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmRvX3Rlc3QodGVzdCkKICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgZXhjZXB0aW9uX3N0cmluZyA9
IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
ZXhjZXB0aW9uX3N0cmluZykKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucmVzdWx0X2Zyb21f
ZXhjZXB0aW9uKHRlc3QsIGUsIGV4Y2VwdGlvbl9zdHJpbmcpCiAKLSAgICAgICAgaWYgcmVzdWx0
IGlzIFN0b3A6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KICAgICAgICAgIyBsb2cgcmVz
dWx0IG9mIHBhcmVudCB0ZXN0CiAgICAgICAgIGlmIHJlc3VsdFswXS5zdGF0dXMgPT0gIkVSUk9S
IjoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKHJlc3VsdFswXS5tZXNzYWdlKQpAQCAt
MzM2LDcgKzMzMiw3IEBAIGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgICAgICAgICAg
c3RhdHVzID0gZS5zdGF0dXMKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN0YXR1cyA9ICJJ
TlRFUk5BTC1FUlJPUiIKLSAgICAgICAgbWVzc2FnZSA9IHRleHRfdHlwZShnZXRhdHRyKGUsICJt
ZXNzYWdlIiwgIiIpKQorICAgICAgICBtZXNzYWdlID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2Ui
LCAiIikpCiAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIK
ICAgICAgICAgbWVzc2FnZSArPSBleGNlcHRpb25fc3RyaW5nCkBAIC01OTgsNyArNTk0LDcgQEAg
Y2xhc3MgV2RzcGVjRXhlY3V0b3IoVGVzdEV4ZWN1dG9yKToKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCiAg
ICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgY2Fw
YWJpbGl0aWVzPU5vbmUsCi0gICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2Fy
Z3MpOgorICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIGVudmlyb249Tm9uZSwgKipr
d2FyZ3MpOgogICAgICAgICBzZWxmLmRvX2RlbGF5ZWRfaW1wb3J0cygpCiAgICAgICAgIFRlc3RF
eGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9t
dWx0aXBsaWVyLApAQCAtNjA3LDYgKzYwMyw3IEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RF
eGVjdXRvcik6CiAgICAgICAgIHNlbGYud2ViZHJpdmVyX2FyZ3MgPSB3ZWJkcml2ZXJfYXJncwog
ICAgICAgICBzZWxmLnRpbWVvdXRfbXVsdGlwbGllciA9IHRpbWVvdXRfbXVsdGlwbGllcgogICAg
ICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdGllcworICAgICAgICBzZWxmLmVudmly
b24gPSBlbnZpcm9uIGlmIGVudmlyb24gaXMgbm90IE5vbmUgZWxzZSB7fQogICAgICAgICBzZWxm
LnByb3RvY29sID0gc2VsZi5wcm90b2NvbF9jbHMoc2VsZiwgYnJvd3NlcikKIAogICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKQEAgLTYzMiw3ICs2MjksOCBAQCBjbGFzcyBXZHNwZWNFeGVjdXRvcihU
ZXN0RXhlY3V0b3IpOgogICAgICAgICByZXR1cm4gcHl0ZXN0cnVubmVyLnJ1bihwYXRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jb25maWcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fY29uZmlnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52aXJvbj1zZWxmLmVudmlyb24pCiAKICAgICBkZWYgZG9fZGVsYXllZF9pbXBvcnRzKHNl
bGYpOgogICAgICAgICBnbG9iYWwgcHl0ZXN0cnVubmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9l
eGVjdXRvcmNocm9tZS5weQppbmRleCAzYTcwNDc1NDEzN2YuLjQzMWQzOThlYmQyNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmNocm9tZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1w
b3J0IG9zCiBpbXBvcnQgdHJhY2ViYWNrCiAKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBp
bXBvcnQgdXJsam9pbgorZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIAogZnJvbSAu
YmFzZSBpbXBvcnQgV2RzcGVjUHJvdG9jb2wsIFdkc3BlY0V4ZWN1dG9yLCBnZXRfcGFnZXMKIGZy
b20gLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCBXZWJEcml2ZXJQcm90b2NvbCwgV2ViRHJpdmVy
UmVmVGVzdEV4ZWN1dG9yLCBXZWJEcml2ZXJSdW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JlZGdlY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yZWRnZWNocm9taXVtLnB5CmluZGV4IGEwMjYzYWY2ODAzNC4uZWJiYTA2YTllMWFi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yZWRnZWNocm9taXVt
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JlZGdlY2hyb21pdW0ucHkK
QEAgLTEsMTAgKzEsMTAgQEAKLWZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBFZGdlQ2hy
b21pdW1Ecml2ZXJTZXJ2ZXINCi1mcm9tIC5iYXNlIGltcG9ydCBXZHNwZWNFeGVjdXRvciwgV2Rz
cGVjUHJvdG9jb2wNCi0NCi0NCi1jbGFzcyBFZGdlQ2hyb21pdW1Ecml2ZXJQcm90b2NvbChXZHNw
ZWNQcm90b2NvbCk6DQotICAgIHNlcnZlcl9jbHMgPSBFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXIN
Ci0NCi0NCi1jbGFzcyBFZGdlQ2hyb21pdW1Ecml2ZXJXZHNwZWNFeGVjdXRvcihXZHNwZWNFeGVj
dXRvcik6DQotICAgIHByb3RvY29sX2NscyA9IEVkZ2VDaHJvbWl1bURyaXZlclByb3RvY29sDQor
ZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IEVkZ2VDaHJvbWl1bURyaXZlclNlcnZlcgor
ZnJvbSAuYmFzZSBpbXBvcnQgV2RzcGVjRXhlY3V0b3IsIFdkc3BlY1Byb3RvY29sCisKKworY2xh
c3MgRWRnZUNocm9taXVtRHJpdmVyUHJvdG9jb2woV2RzcGVjUHJvdG9jb2wpOgorICAgIHNlcnZl
cl9jbHMgPSBFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXIKKworCitjbGFzcyBFZGdlQ2hyb21pdW1E
cml2ZXJXZHNwZWNFeGVjdXRvcihXZHNwZWNFeGVjdXRvcik6CisgICAgcHJvdG9jb2xfY2xzID0g
RWRnZUNocm9taXVtRHJpdmVyUHJvdG9jb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVj
dXRvcm1hcmlvbmV0dGUucHkKaW5kZXggZGE4OTQxYjY5ZTMzLi5lYTRjYmUxMmIyNGUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC01LDggKzUs
NyBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHV1aWQKIAotZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJz
ZSBpbXBvcnQgdXJsam9pbgorZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIAogZXJy
b3JzID0gTm9uZQogbWFyaW9uZXR0ZSA9IE5vbmUKQEAgLTMzLDE0ICszMiwxNSBAQCBmcm9tIC5w
cm90b2NvbCBpbXBvcnQgKEFjdGlvblNlcXVlbmNlUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAg
ICAgICAgICAgICBTdG9yYWdlUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBT
ZWxlY3RvclByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2tQcm90b2Nv
bFBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZXNQcm90b2NvbFBhcnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIFNlbmRLZXlzUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0RHJpdmVyUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBD
b3ZlcmFnZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVUZXN0
UmVwb3J0UHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsQXV0aGVu
dGljYXRvclByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgU2V0UGVybWlzc2lv
blByb3RvY29sUGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRQcm90b2NvbFBhcnQp
Ci1mcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorICAgICAgICAgICAgICAgICAgICAgICBQ
cmludFByb3RvY29sUGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgRGVidWdQcm90b2NvbFBh
cnQpCiBmcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgR2Vja29Ecml2ZXJTZXJ2ZXIKIAog
CkBAIC00MzYsNiArNDM2LDE1IEBAIGNsYXNzIE1hcmlvbmV0dGVDbGlja1Byb3RvY29sUGFydChD
bGlja1Byb3RvY29sUGFydCk6CiAgICAgICAgIHJldHVybiBlbGVtZW50LmNsaWNrKCkKIAogCitj
bGFzcyBNYXJpb25ldHRlQ29va2llc1Byb3RvY29sUGFydChDb29raWVzUHJvdG9jb2xQYXJ0KToK
KyAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgIHNlbGYubWFyaW9uZXR0ZSA9IHNlbGYucGFy
ZW50Lm1hcmlvbmV0dGUKKworICAgIGRlZiBkZWxldGVfYWxsX2Nvb2tpZXMoc2VsZik6CisgICAg
ICAgIHNlbGYubG9nZ2VyLmluZm8oIkRlbGV0aW5nIGFsbCBjb29raWVzIikKKyAgICAgICAgcmV0
dXJuIHNlbGYubWFyaW9uZXR0ZS5kZWxldGVfYWxsX2Nvb2tpZXMoKQorCisKIGNsYXNzIE1hcmlv
bmV0dGVTZW5kS2V5c1Byb3RvY29sUGFydChTZW5kS2V5c1Byb3RvY29sUGFydCk6CiAgICAgZGVm
IHNldHVwKHNlbGYpOgogICAgICAgICBzZWxmLm1hcmlvbmV0dGUgPSBzZWxmLnBhcmVudC5tYXJp
b25ldHRlCkBAIC02MTYsNiArNjI1LDQzIEBAIHJlbmRlcignJXMnKS50aGVuKHJlc3VsdCA9PiBj
YWxsYmFjayhyZXN1bHQpKSIiIiAlIHBkZl9iYXNlNjQsIG5ld19zYW5kYm94PUZhbHNlCiAgICAg
ICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBfc3dpdGNoX3RvX3dpbmRvdyhzZWxmLm1hcmlvbmV0
dGUsIGhhbmRsZSkKIAorCitjbGFzcyBNYXJpb25ldHRlRGVidWdQcm90b2NvbFBhcnQoRGVidWdQ
cm90b2NvbFBhcnQpOgorICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgc2VsZi5tYXJpb25l
dHRlID0gc2VsZi5wYXJlbnQubWFyaW9uZXR0ZQorCisgICAgZGVmIGxvYWRfZGV2dG9vbHMoc2Vs
Zik6CisgICAgICAgIHdpdGggc2VsZi5tYXJpb25ldHRlLnVzaW5nX2NvbnRleHQoc2VsZi5tYXJp
b25ldHRlLkNPTlRFWFRfQ0hST01FKToKKyAgICAgICAgICAgIHNlbGYucGFyZW50LmJhc2UuZXhl
Y3V0ZV9zY3JpcHQoIiIiCitjb25zdCBEZXZUb29sc1NoaW0gPSBDaHJvbWVVdGlscy5pbXBvcnQo
CisgICJjaHJvbWU6Ly9kZXZ0b29scy1zdGFydHVwL2NvbnRlbnQvRGV2VG9vbHNTaGltLmpzbSIK
Kyk7CisKK2NvbnN0IGNhbGxiYWNrID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsK
KworYXN5bmMgZnVuY3Rpb24gbG9hZERldlRvb2xzKCkgeworICAgIGNvbnN0IHRhYiA9IHdpbmRv
dy5nQnJvd3Nlci5zZWxlY3RlZFRhYjsKKyAgICAvLyBzaG93VG9vbGJveEZvclRhYiBpcyBhdmFp
bGFibGUgZm9yIEZpcmVmb3ggODcgb3IgbmV3ZXIuCisgICAgaWYgKHR5cGVvZiBEZXZUb29sc1No
aW0uc2hvd1Rvb2xib3hGb3JUYWIgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgYXdhaXQgc2hv
d1Rvb2xib3hGb3JUYWIodGFiLCB7CisgICAgICAgICAgdG9vbElkOiAid2ViY29uc29sZSIsCisg
ICAgICAgICAgaG9zdFR5cGU6ICJ3aW5kb3ciCisgICAgICAgIH0pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIFRoaXMgYnJhbmNoIGNhbiBiZSByZW1vdmVkIHdoZSB3cHRydW5uZXIgY2FuIG9u
bHkgYmUgdXNlZCB3aXRoCisgICAgICAgIC8vIEZpcmVmb3ggODcgb3IgbmV3ZXIuCisgICAgICAg
IGNvbnN0IHsgVGFyZ2V0RmFjdG9yeSB9ID0gcmVxdWlyZSgiZGV2dG9vbHMvY2xpZW50L2ZyYW1l
d29yay90YXJnZXQiKTsKKyAgICAgICAgY29uc3QgeyBnRGV2VG9vbHMgfSA9IHJlcXVpcmUoImRl
dnRvb2xzL2NsaWVudC9mcmFtZXdvcmsvZGV2dG9vbHMiKTsKKyAgICAgICAgY29uc3QgdGFyZ2V0
ID0gYXdhaXQgVGFyZ2V0RmFjdG9yeS5mb3JUYWIodGFiKTsKKyAgICAgICAgYXdhaXQgZ0RldlRv
b2xzLnNob3dUb29sYm94KHRhcmdldCwgIndlYmNvbnNvbGUiLCAid2luZG93Iik7CisgICAgfQor
fQorCitsb2FkRGV2VG9vbHMoKS5jYXRjaCgoKSA9PiBkdW1wKCJEZXZ0b29scyBmYWlsZWQgdG8g
bG9hZCIpKQorICAgICAgICAgICAgICAudGhlbihjYWxsYmFjayk7CisiIiIsIGFzeW5jaHJvbm91
cz1UcnVlKQorCisKIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6CiAgICAgaW1w
bGVtZW50cyA9IFtNYXJpb25ldHRlQmFzZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAg
IE1hcmlvbmV0dGVUZXN0aGFybmVzc1Byb3RvY29sUGFydCwKQEAgLTYyMyw2ICs2NjksNyBAQCBj
bGFzcyBNYXJpb25ldHRlUHJvdG9jb2woUHJvdG9jb2wpOgogICAgICAgICAgICAgICAgICAgTWFy
aW9uZXR0ZVN0b3JhZ2VQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICBNYXJpb25ldHRl
U2VsZWN0b3JQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlQ2xpY2tQ
cm90b2NvbFBhcnQsCisgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlQ29va2llc1Byb3RvY29s
UGFydCwKICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVTZW5kS2V5c1Byb3RvY29sUGFydCwK
ICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVBY3Rpb25TZXF1ZW5jZVByb3RvY29sUGFydCwK
ICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVUZXN0RHJpdmVyUHJvdG9jb2xQYXJ0LApAQCAt
NjMxLDcgKzY3OCw4IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6CiAgICAg
ICAgICAgICAgICAgICBNYXJpb25ldHRlR2VuZXJhdGVUZXN0UmVwb3J0UHJvdG9jb2xQYXJ0LAog
ICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVZpcnR1YWxBdXRoZW50aWNhdG9yUHJvdG9jb2xQ
YXJ0LAogICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVNldFBlcm1pc3Npb25Qcm90b2NvbFBh
cnQsCi0gICAgICAgICAgICAgICAgICBNYXJpb25ldHRlUHJpbnRQcm90b2NvbFBhcnRdCisgICAg
ICAgICAgICAgICAgICBNYXJpb25ldHRlUHJpbnRQcm90b2NvbFBhcnQsCisgICAgICAgICAgICAg
ICAgICBNYXJpb25ldHRlRGVidWdQcm90b2NvbFBhcnRdCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZXhlY3V0b3IsIGJyb3dzZXIsIGNhcGFiaWxpdGllcz1Ob25lLCB0aW1lb3V0X211bHRpcGxp
ZXI9MSwgZTEwcz1UcnVlLCBjY292PUZhbHNlKToKICAgICAgICAgZG9fZGVsYXllZF9pbXBvcnRz
KCkKQEAgLTY5MSwxNCArNzM5LDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2Nv
bCk6CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG9sZF9lbnZpcm9ubWVu
dCwgbmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vuc2V0IGFsbCB0aGUgb2xkIHByZWZzCi0g
ICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9lbnZpcm9ubWVudC5nZXQoInByZWZzIiwg
e30pKToKKyAgICAgICAgZm9yIG5hbWUgaW4gb2xkX2Vudmlyb25tZW50LmdldCgicHJlZnMiLCB7
fSkua2V5cygpOgogICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3By
ZWZfdmFsdWVzW25hbWVdCiAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAg
ICAgICAgIHNlbGYucHJlZnMuY2xlYXIobmFtZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgc2VsZi5wcmVmcy5zZXQobmFtZSwgdmFsdWUpCiAKLSAgICAgICAgZm9yIG5hbWUs
IHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KSk6Cisg
ICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9
KS5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5leGVjdXRvci5vcmlnaW5hbF9wcmVmX3ZhbHVl
c1tuYW1lXSA9IHNlbGYucHJlZnMuZ2V0KG5hbWUpCiAgICAgICAgICAgICBzZWxmLnByZWZzLnNl
dChuYW1lLCB2YWx1ZSkKIApAQCAtNzE2LDggKzc2NCw5IEBAIGNsYXNzIEV4ZWN1dGVBc3luY1Nj
cmlwdFJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICAgICAgIyB0aW1lb3V0IGlzIHNldCB0
b28gaGlnaC4gVGhpcyB3b3JrcyBhdCBsZWFzdC4KICAgICAgICAgICAgICAgICBzZWxmLnByb3Rv
Y29sLmJhc2Uuc2V0X3RpbWVvdXQoMioqMjggLSAxKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoK
LSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJMb3N0IG1hcmlvbmV0dGUgY29ubmVjdGlv
biBiZWZvcmUgc3RhcnRpbmcgdGVzdCIpCi0gICAgICAgICAgICByZXR1cm4gU3RvcAorICAgICAg
ICAgICAgbXNnID0gIkxvc3QgbWFyaW9uZXR0ZSBjb25uZWN0aW9uIGJlZm9yZSBzdGFydGluZyB0
ZXN0IgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IobXNnKQorICAgICAgICAgICAgcmV0
dXJuICgiSU5URVJOQUwtRVJST1IiLCBtc2cpCiAKICAgICBkZWYgYmVmb3JlX3J1bihzZWxmKToK
ICAgICAgICAgaW5kZXggPSBzZWxmLnVybC5yZmluZCgiL3N0b3JhZ2UvIikKQEAgLTc1OSw3ICs4
MDgsNyBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4
ZWN1dG9yKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZl
cl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9h
ZnRlcl9kb25lPVRydWUsIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsCi0gICAg
ICAgICAgICAgICAgIGRlYnVnPUZhbHNlLCBjY292PUZhbHNlLCAqKmt3YXJncyk6CisgICAgICAg
ICAgICAgICAgIGRlYnVnPUZhbHNlLCBjY292PUZhbHNlLCBkZWJ1Z190ZXN0PUZhbHNlLCAqKmt3
YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJu
ZXNzLmpzIHRlc3RzIiIiCiAgICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBA
IC03NzUsNiArODI0LDcgQEAgY2xhc3MgTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVz
dGhhcm5lc3NFeGVjdXRvcik6CiAgICAgICAgIHNlbGYuY2xvc2VfYWZ0ZXJfZG9uZSA9IGNsb3Nl
X2FmdGVyX2RvbmUKICAgICAgICAgc2VsZi53aW5kb3dfaWQgPSBzdHIodXVpZC51dWlkNCgpKQog
ICAgICAgICBzZWxmLmRlYnVnID0gZGVidWcKKyAgICAgICAgc2VsZi5kZWJ1Z190ZXN0ID0gZGVi
dWdfdGVzdAogCiAgICAgICAgIHNlbGYuaW5zdGFsbF9leHRlbnNpb25zID0gYnJvd3Nlci5leHRl
bnNpb25zCiAKQEAgLTg0Myw2ICs4OTMsOSBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NF
eGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICAgICAgc2VsZi5wcm90b2NvbC5iYXNl
LnNldF93aW5kb3codGVzdF93aW5kb3cpCiAgICAgICAgIHByb3RvY29sLnRlc3RoYXJuZXNzLnRl
c3Rfd2luZG93X2xvYWRlZCgpCiAKKyAgICAgICAgaWYgc2VsZi5kZWJ1Z190ZXN0OgorICAgICAg
ICAgICAgc2VsZi5wcm90b2NvbC5kZWJ1Zy5sb2FkX2RldnRvb2xzKCkKKwogICAgICAgICBoYW5k
bGVyID0gQ2FsbGJhY2tIYW5kbGVyKHNlbGYubG9nZ2VyLCBwcm90b2NvbCwgdGVzdF93aW5kb3cp
CiAgICAgICAgIHByb3RvY29sLm1hcmlvbmV0dGUubmF2aWdhdGUodXJsKQogICAgICAgICB3aGls
ZSBUcnVlOgpAQCAtODY5LDcgKzkyMiw3IEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0
b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBy
ZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAogICAgICAgICAgICAgICAgICByZWZ0ZXN0X3NjcmVlbnNo
b3Q9InVuZXhwZWN0ZWQiLCBjY292PUZhbHNlLAogICAgICAgICAgICAgICAgICBncm91cF9tZXRh
ZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgIGJyb3dzZXJfdmVyc2lvbj1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIGJy
b3dzZXJfdmVyc2lvbj1Ob25lLCBkZWJ1Z190ZXN0PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAg
ICIiIk1hcmlvbmV0dGUtYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJl
ZlRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VyLApAQCAtODkyLDYgKzk0NSw3IEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZUZXN0
RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgc2VsZi5vcmlnaW5hbF9wcmVmX3Zh
bHVlcyA9IHt9CiAgICAgICAgIHNlbGYuZ3JvdXBfbWV0YWRhdGEgPSBncm91cF9tZXRhZGF0YQog
ICAgICAgICBzZWxmLmRlYnVnID0gZGVidWcKKyAgICAgICAgc2VsZi5kZWJ1Z190ZXN0ID0gZGVi
dWdfdGVzdAogCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInJlZnRlc3Qu
anMiKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuc2NyaXB0ID0gZi5yZWFkKCkKQEAgLTk1NCw3
ICsxMDA4LDEyIEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1
dG9yKToKICAgICAgICAgICAgIGFzc2VydGlvbl9jb3VudCA9IHNlbGYucHJvdG9jb2wuYXNzZXJ0
cy5nZXQoKQogICAgICAgICAgICAgaWYgImV4dHJhIiBub3QgaW4gcmVzdWx0OgogICAgICAgICAg
ICAgICAgIHJlc3VsdFsiZXh0cmEiXSA9IHt9Ci0gICAgICAgICAgICByZXN1bHRbImV4dHJhIl1b
ImFzc2VydGlvbl9jb3VudCJdID0gYXNzZXJ0aW9uX2NvdW50CisgICAgICAgICAgICBpZiBhc3Nl
cnRpb25fY291bnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmVzdWx0WyJleHRyYSJd
WyJhc3NlcnRpb25fY291bnQiXSA9IGFzc2VydGlvbl9jb3VudAorCisgICAgICAgIGlmIHNlbGYu
ZGVidWdfdGVzdCBhbmQgcmVzdWx0WyJzdGF0dXMiXSBpbiBbIlBBU1MiLCAiRkFJTCIsICJFUlJP
UiJdIGFuZCAiZXh0cmEiIGluIHJlc3VsdDoKKyAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuYmFz
ZS5zZXRfd2luZG93KHNlbGYucHJvdG9jb2wuYmFzZS53aW5kb3dfaGFuZGxlcygpWzBdKQorICAg
ICAgICAgICAgc2VsZi5wcm90b2NvbC5kZWJ1Zy5sb2FkX3JlZnRlc3RfYW5hbHl6ZXIodGVzdCwg
cmVzdWx0KQogCiAgICAgICAgIHJldHVybiBzZWxmLmNvbnZlcnRfcmVzdWx0KHRlc3QsIHJlc3Vs
dCkKIApAQCAtMTAwMSw4ICsxMDYwLDcgQEAgY2xhc3MgSW50ZXJuYWxSZWZUZXN0SW1wbGVtZW50
YXRpb24oUmVmVGVzdEltcGxlbWVudGF0aW9uKToKICAgICAgICAgZGF0YSA9IHsic2NyZWVuc2hv
dCI6IHNjcmVlbnNob3QsICJpc1ByaW50Ijogc2VsZi5leGVjdXRvci5pc19wcmludH0KICAgICAg
ICAgaWYgc2VsZi5leGVjdXRvci5ncm91cF9tZXRhZGF0YSBpcyBub3QgTm9uZToKICAgICAgICAg
ICAgIGRhdGFbInVybENvdW50Il0gPSB7dXJsam9pbihzZWxmLmV4ZWN1dG9yLnNlcnZlcl91cmwo
a2V5WzBdKSwga2V5WzFdKTp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRhLmdldCgidXJsX2NvdW50Iiwge30p
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxm
LmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRhLmdldCgidXJsX2NvdW50Iiwge30pLml0ZW1zKCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgPiAxfQogICAgICAgICBzZWxm
LmNocm9tZV9zY29wZSA9IGNocm9tZV9zY29wZQogICAgICAgICBpZiBjaHJvbWVfc2NvcGU6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKaW5kZXggZmYyNjM1MWY4
NGVkLi43ODM5MDNiOWJiZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhl
Y3V0b3JzZWxlbml1bS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vs
ZW5pdW0ucHkKQEAgLTYsNyArNiw3IEBAIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBp
bXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdXVpZAotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNl
IGltcG9ydCB1cmxqb2luCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgogCiBmcm9t
IC5iYXNlIGltcG9ydCAoQ2FsbGJhY2tIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgIFJlZlRl
c3RFeGVjdXRvciwKQEAgLTE5LDEwICsxOSwxMCBAQCBmcm9tIC5wcm90b2NvbCBpbXBvcnQgKEJh
c2VQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sLAogICAgICAg
ICAgICAgICAgICAgICAgICBTZWxlY3RvclByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAg
ICAgICAgQ2xpY2tQcm90b2NvbFBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZXNQ
cm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRLZXlzUHJvdG9jb2xQYXJ0
LAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb25TZXF1ZW5jZVByb3RvY29sUGFydCwKICAg
ICAgICAgICAgICAgICAgICAgICAgVGVzdERyaXZlclByb3RvY29sUGFydCkKLWZyb20gLi50ZXN0
cnVubmVyIGltcG9ydCBTdG9wCiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCiAK
QEAgLTE4Myw2ICsxODMsMTUgQEAgY2xhc3MgU2VsZW5pdW1DbGlja1Byb3RvY29sUGFydChDbGlj
a1Byb3RvY29sUGFydCk6CiAgICAgICAgIHJldHVybiBlbGVtZW50LmNsaWNrKCkKIAogCitjbGFz
cyBTZWxlbml1bUNvb2tpZXNQcm90b2NvbFBhcnQoQ29va2llc1Byb3RvY29sUGFydCk6CisgICAg
ZGVmIHNldHVwKHNlbGYpOgorICAgICAgICBzZWxmLndlYmRyaXZlciA9IHNlbGYucGFyZW50Lndl
YmRyaXZlcgorCisgICAgZGVmIGRlbGV0ZV9hbGxfY29va2llcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5sb2dnZXIuaW5mbygiRGVsZXRpbmcgYWxsIGNvb2tpZXMiKQorICAgICAgICByZXR1cm4gc2Vs
Zi53ZWJkcml2ZXIuZGVsZXRlX2FsbF9jb29raWVzKCkKKworCiBjbGFzcyBTZWxlbml1bVNlbmRL
ZXlzUHJvdG9jb2xQYXJ0KFNlbmRLZXlzUHJvdG9jb2xQYXJ0KToKICAgICBkZWYgc2V0dXAoc2Vs
Zik6CiAgICAgICAgIHNlbGYud2ViZHJpdmVyID0gc2VsZi5wYXJlbnQud2ViZHJpdmVyCkBAIC0y
MTksNiArMjI4LDcgQEAgY2xhc3MgU2VsZW5pdW1Qcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAg
ICAgICAgICAgICBTZWxlbml1bVRlc3RoYXJuZXNzUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAg
ICAgICAgU2VsZW5pdW1TZWxlY3RvclByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFNl
bGVuaXVtQ2xpY2tQcm90b2NvbFBhcnQsCisgICAgICAgICAgICAgICAgICBTZWxlbml1bUNvb2tp
ZXNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICBTZWxlbml1bVNlbmRLZXlzUHJvdG9j
b2xQYXJ0LAogICAgICAgICAgICAgICAgICAgU2VsZW5pdW1UZXN0RHJpdmVyUHJvdG9jb2xQYXJ0
LAogICAgICAgICAgICAgICAgICAgU2VsZW5pdW1BY3Rpb25TZXF1ZW5jZVByb3RvY29sUGFydF0K
QEAgLTI2Nyw4ICsyNzcsOSBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuYmFzZS5zZXRfdGltZW91dCh0aW1l
b3V0ICsgc2VsZi5leHRyYV90aW1lb3V0KQogICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5FcnJv
ckluUmVzcG9uc2VFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiTG9z
dCBXZWJEcml2ZXIgY29ubmVjdGlvbiIpCi0gICAgICAgICAgICByZXR1cm4gU3RvcAorICAgICAg
ICAgICAgbXNnID0gIkxvc3QgV2ViRHJpdmVyIGNvbm5lY3Rpb24iCisgICAgICAgICAgICBzZWxm
LmxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICByZXR1cm4gKCJJTlRFUk5BTC1FUlJPUiIs
IG1zZykKIAogICAgIGRlZiBydW5fZnVuYyhzZWxmKToKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CmluZGV4IGVmZTkzYWJjNjljNy4uNTk3Yzg3OWNk
MTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CkBAIC03LDcgKzcs
NyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sK
IGltcG9ydCB1dWlkCi1mcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3N0ciwgaXRlcml0ZW1zCitmcm9t
IHNpeCBpbXBvcnQgZW5zdXJlX3N0cgogCiBmcm9tIG1venByb2Nlc3MgaW1wb3J0IFByb2Nlc3NI
YW5kbGVyCiAKQEAgLTQ4LDcgKzQ4LDcgQEAgZGVmIGJ1aWxkX3NlcnZvX2NvbW1hbmQodGVzdCwg
dGVzdF91cmxfZnVuYywgYnJvd3NlciwgYmluYXJ5LCBwYXVzZV9hZnRlcl90ZXN0LAogICAgICAg
ICBhcmdzICs9IFsiLVoiLCBkZWJ1Z19vcHRzXQogICAgIGZvciBzdHlsZXNoZWV0IGluIGJyb3dz
ZXIudXNlcl9zdHlsZXNoZWV0czoKICAgICAgICAgYXJncyArPSBbIi0tdXNlci1zdHlsZXNoZWV0
Iiwgc3R5bGVzaGVldF0KLSAgICBmb3IgcHJlZiwgdmFsdWUgaW4gaXRlcml0ZW1zKHRlc3QuZW52
aXJvbm1lbnQuZ2V0KCdwcmVmcycsIHt9KSk6CisgICAgZm9yIHByZWYsIHZhbHVlIGluIHRlc3Qu
ZW52aXJvbm1lbnQuZ2V0KCdwcmVmcycsIHt9KS5pdGVtcygpOgogICAgICAgICBhcmdzICs9IFsi
LS1wcmVmIiwgIiVzPSVzIiAlIChwcmVmLCB2YWx1ZSldCiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0
aWZpY2F0ZV9wYXRoOgogICAgICAgICBhcmdzICs9IFsiLS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJv
d3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVj
dXRvcnNlcnZvZHJpdmVyLnB5CmluZGV4IDJjZDFkYmYzYWQwNi4uMDM5YmNkMTRlMmJlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9kcml2ZXIucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5CkBAIC0xMCw3
ICsxMCw2IEBAIGZyb20gLmJhc2UgaW1wb3J0IChQcm90b2NvbCwKICAgICAgICAgICAgICAgICAg
ICBUZXN0aGFybmVzc0V4ZWN1dG9yLAogICAgICAgICAgICAgICAgICAgIFRpbWVkUnVubmVyLAog
ICAgICAgICAgICAgICAgICAgIHN0cmlwX3NlcnZlcikKLWZyb20gLi50ZXN0cnVubmVyIGltcG9y
dCBTdG9wCiBmcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgd2FpdF9mb3Jfc2VydmljZQog
CiB3ZWJkcml2ZXIgPSBOb25lCkBAIC0xODQsOCArMTgzLDkgQEAgY2xhc3MgU2Vydm9XZWJEcml2
ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhlY3V0b3IpOgogICAgICAgICAgICAg
ICAgIHNlbGYucHJvdG9jb2wuc2Vzc2lvbi50aW1lb3V0cy5zY3JpcHQgPSB0aW1lb3V0CiAgICAg
ICAgICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICAgICAgZXhjZXB0IElP
RXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkxvc3Qgd2ViZHJpdmVy
IGNvbm5lY3Rpb24iKQotICAgICAgICAgICAgICAgIHJldHVybiBTdG9wCisgICAgICAgICAgICAg
ICAgbXNnID0gIkxvc3QgV2ViRHJpdmVyIGNvbm5lY3Rpb24iCisgICAgICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZXJyb3IobXNnKQorICAgICAgICAgICAgICAgIHJldHVybiAoIklOVEVSTkFMLUVS
Uk9SIiwgbXNnKQogCiAgICAgICAgIHN1Y2Nlc3MsIGRhdGEgPSBTZXJ2b1dlYkRyaXZlclJ1bihz
ZWxmLmxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZG9fdGVzdGhhcm5lc3MsCkBAIC0yNzYsOCArMjc2LDkgQEAgY2xhc3MgU2Vydm9XZWJEcml2
ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgICAgICBzZWxm
LnByb3RvY29sLnNlc3Npb24udGltZW91dHMuc2NyaXB0ID0gdGltZW91dAogICAgICAgICAgICAg
ICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgot
ICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJMb3N0IHdlYmRyaXZlciBjb25uZWN0
aW9uIikKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RvcAorICAgICAgICAgICAgICAgIG1zZyA9
ICJMb3N0IHdlYmRyaXZlciBjb25uZWN0aW9uIgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmVycm9yKG1zZykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCJJTlRFUk5BTC1FUlJPUiIsIG1z
ZykKIAogICAgICAgICByZXR1cm4gU2Vydm9XZWJEcml2ZXJSdW4oc2VsZi5sb2dnZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zY3JlZW5zaG90LApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndlYmRyaXZlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKaW5kZXggYmFkNWZkMDcyMjM3Li5h
MDRhNTVhNmYwMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3
ZWJkcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndlYmRyaXZl
ci5weQpAQCAtNiw3ICs2LDcgQEAgaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIGltcG9y
dCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1w
b3J0IHVybGpvaW4KK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLmJh
c2UgaW1wb3J0IChDYWxsYmFja0hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0
RXhlY3V0b3IsCkBAIC0yMCwxMyArMjAsMTQgQEAgZnJvbSAucHJvdG9jb2wgaW1wb3J0IChCYXNl
UHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgU2VsZWN0b3JQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIENsaWNrUHJvdG9jb2xQYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzUHJv
dG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBTZW5kS2V5c1Byb3RvY29sUGFydCwK
ICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uU2VxdWVuY2VQcm90b2NvbFBhcnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIFRlc3REcml2ZXJQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlVGVzdFJlcG9ydFByb3RvY29sUGFydCwKICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0UGVybWlzc2lvblByb3RvY29sUGFydCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbEF1dGhlbnRpY2F0b3JQcm90b2NvbFBhcnQpCi1mcm9tIC4udGVzdHJ1bm5lciBp
bXBvcnQgU3RvcAorICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsQXV0aGVudGljYXRvclBy
b3RvY29sUGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgRGVidWdQcm90b2NvbFBhcnQpCiAK
IGltcG9ydCB3ZWJkcml2ZXIgYXMgY2xpZW50CiBmcm9tIHdlYmRyaXZlciBpbXBvcnQgZXJyb3IK
QEAgLTE5MCw2ICsxOTEsMTUgQEAgY2xhc3MgV2ViRHJpdmVyQ2xpY2tQcm90b2NvbFBhcnQoQ2xp
Y2tQcm90b2NvbFBhcnQpOgogICAgICAgICByZXR1cm4gZWxlbWVudC5jbGljaygpCiAKIAorY2xh
c3MgV2ViRHJpdmVyQ29va2llc1Byb3RvY29sUGFydChDb29raWVzUHJvdG9jb2xQYXJ0KToKKyAg
ICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgIHNlbGYud2ViZHJpdmVyID0gc2VsZi5wYXJlbnQu
d2ViZHJpdmVyCisKKyAgICBkZWYgZGVsZXRlX2FsbF9jb29raWVzKHNlbGYpOgorICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCJEZWxldGluZyBhbGwgY29va2llcyIpCisgICAgICAgIHJldHVybiBz
ZWxmLndlYmRyaXZlci5zZW5kX3Nlc3Npb25fY29tbWFuZCgiREVMRVRFIiwgImNvb2tpZSIpCisK
KwogY2xhc3MgV2ViRHJpdmVyU2VuZEtleXNQcm90b2NvbFBhcnQoU2VuZEtleXNQcm90b2NvbFBh
cnQpOgogICAgIGRlZiBzZXR1cChzZWxmKToKICAgICAgICAgc2VsZi53ZWJkcml2ZXIgPSBzZWxm
LnBhcmVudC53ZWJkcml2ZXIKQEAgLTI4MywxNyArMjkzLDI0IEBAIGNsYXNzIFdlYkRyaXZlclZp
cnR1YWxBdXRoZW50aWNhdG9yUHJvdG9jb2xQYXJ0KFZpcnR1YWxBdXRoZW50aWNhdG9yUHJvdG9j
b2xQYXJ0CiAgICAgICAgIHJldHVybiBzZWxmLndlYmRyaXZlci5zZW5kX3Nlc3Npb25fY29tbWFu
ZCgiUE9TVCIsICJ3ZWJhdXRobi9hdXRoZW50aWNhdG9yLyVzL3V2IiAlIGF1dGhlbnRpY2F0b3Jf
aWQsIHV2KQogCiAKK2NsYXNzIFdlYkRyaXZlckRlYnVnUHJvdG9jb2xQYXJ0KERlYnVnUHJvdG9j
b2xQYXJ0KToKKyAgICBkZWYgbG9hZF9kZXZ0b29scyhzZWxmKToKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigpCisKKwogY2xhc3MgV2ViRHJpdmVyUHJvdG9jb2woUHJvdG9jb2wp
OgogICAgIGltcGxlbWVudHMgPSBbV2ViRHJpdmVyQmFzZVByb3RvY29sUGFydCwKICAgICAgICAg
ICAgICAgICAgIFdlYkRyaXZlclRlc3RoYXJuZXNzUHJvdG9jb2xQYXJ0LAogICAgICAgICAgICAg
ICAgICAgV2ViRHJpdmVyU2VsZWN0b3JQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICBX
ZWJEcml2ZXJDbGlja1Byb3RvY29sUGFydCwKKyAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNv
b2tpZXNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJTZW5kS2V5c1By
b3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckFjdGlvblNlcXVlbmNlUHJv
dG9jb2xQYXJ0LAogICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyVGVzdERyaXZlclByb3RvY29s
UGFydCwKICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckdlbmVyYXRlVGVzdFJlcG9ydFByb3Rv
Y29sUGFydCwKICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclNldFBlcm1pc3Npb25Qcm90b2Nv
bFBhcnQsCi0gICAgICAgICAgICAgICAgICBXZWJEcml2ZXJWaXJ0dWFsQXV0aGVudGljYXRvclBy
b3RvY29sUGFydF0KKyAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclZpcnR1YWxBdXRoZW50aWNh
dG9yUHJvdG9jb2xQYXJ0LAorICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyRGVidWdQcm90b2Nv
bFBhcnRdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhlY3V0b3IsIGJyb3dzZXIsIGNhcGFi
aWxpdGllcywgKiprd2FyZ3MpOgogICAgICAgICBzdXBlcihXZWJEcml2ZXJQcm90b2NvbCwgc2Vs
ZikuX19pbml0X18oZXhlY3V0b3IsIGJyb3dzZXIpCkBAIC0zNDQsOCArMzYxLDkgQEAgY2xhc3Mg
V2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2Vs
Zi5wcm90b2NvbC5iYXNlLnNldF90aW1lb3V0KHNlbGYudGltZW91dCArIHNlbGYuZXh0cmFfdGlt
ZW91dCkKICAgICAgICAgZXhjZXB0IGNsaWVudC5Vbmtub3duRXJyb3JFeGNlcHRpb246Ci0gICAg
ICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiTG9zdCBXZWJEcml2ZXIgY29ubmVjdGlvbiIpCi0g
ICAgICAgICAgICByZXR1cm4gU3RvcAorICAgICAgICAgICAgbXNnID0gIkxvc3QgV2ViRHJpdmVy
IGNvbm5lY3Rpb24iCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihtc2cpCisgICAgICAg
ICAgICByZXR1cm4gKCJJTlRFUk5BTC1FUlJPUiIsIG1zZykKIAogICAgIGRlZiBydW5fZnVuYyhz
ZWxmKToKICAgICAgICAgdHJ5OgpAQCAtNDk3LDcgKzUxNSw3IEBAIGNsYXNzIFdlYkRyaXZlclJl
ZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAg
ICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgY2xvc2VfYWZ0ZXJfZG9uZT1U
cnVlLAotICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIGNhcGFiaWxpdGllcz1Ob25l
LCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0
aWVzPU5vbmUsIGRlYnVnX3Rlc3Q9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJp
dmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAgICBSZWZUZXN0RXhlY3V0
b3IuX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dl
ciwKQEAgLTUxMiw2ICs1MzAsNyBAQCBjbGFzcyBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVm
VGVzdEV4ZWN1dG9yKToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbiA9IFJlZlRlc3RJbXBs
ZW1lbnRhdGlvbihzZWxmKQogICAgICAgICBzZWxmLmNsb3NlX2FmdGVyX2RvbmUgPSBjbG9zZV9h
ZnRlcl9kb25lCiAgICAgICAgIHNlbGYuaGFzX3dpbmRvdyA9IEZhbHNlCisgICAgICAgIHNlbGYu
ZGVidWdfdGVzdCA9IGRlYnVnX3Rlc3QKIAogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2lu
KGhlcmUsICJ0ZXN0LXdhaXQuanMiKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYud2FpdF9zY3Jp
cHQgPSBmLnJlYWQoKSAlIHsiY2xhc3NuYW1lIjogInJlZnRlc3Qtd2FpdCJ9CkBAIC01MzYsNiAr
NTU1LDkgQEAgY2xhc3MgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6
CiAKICAgICAgICAgcmVzdWx0ID0gc2VsZi5pbXBsZW1lbnRhdGlvbi5ydW5fdGVzdCh0ZXN0KQog
CisgICAgICAgIGlmIHNlbGYuZGVidWdfdGVzdCBhbmQgcmVzdWx0WyJzdGF0dXMiXSBpbiBbIlBB
U1MiLCAiRkFJTCIsICJFUlJPUiJdIGFuZCAiZXh0cmEiIGluIHJlc3VsdDoKKyAgICAgICAgICAg
IHNlbGYucHJvdG9jb2wuZGVidWcubG9hZF9yZWZ0ZXN0X2FuYWx5emVyKHRlc3QsIHJlc3VsdCkK
KwogICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0ZXN0LCByZXN1bHQpCiAKICAg
ICBkZWYgc2NyZWVuc2hvdChzZWxmLCB0ZXN0LCB2aWV3cG9ydF9zaXplLCBkcGksIHBhZ2VfcmFu
Z2VzKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHJvdG9jb2wucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CmluZGV4IGJkNzY4YjEwNzNjNy4uYWIx
NmIwZWZkMGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHJvdG9jb2wucHkKQEAgLTI4MSw2ICsyODEs
MTggQEAgY2xhc3MgQ2xpY2tQcm90b2NvbFBhcnQoUHJvdG9jb2xQYXJ0KToKICAgICAgICAgcGFz
cwogCiAKK2NsYXNzIENvb2tpZXNQcm90b2NvbFBhcnQoUHJvdG9jb2xQYXJ0KToKKyAgICAiIiJQ
cm90b2NvbCBwYXJ0IGZvciBtYW5hZ2luZyBjb29raWVzIiIiCisgICAgX19tZXRhY2xhc3NfXyA9
IEFCQ01ldGEKKworICAgIG5hbWUgPSAiY29va2llcyIKKworICAgIEBhYnN0cmFjdG1ldGhvZAor
ICAgIGRlZiBkZWxldGVfYWxsX2Nvb2tpZXMoc2VsZik6CisgICAgICAgICIiIkRlbGV0ZSBhbGwg
Y29va2llcy4iIiIKKyAgICAgICAgcGFzcworCisKIGNsYXNzIFNlbmRLZXlzUHJvdG9jb2xQYXJ0
KFByb3RvY29sUGFydCk6CiAgICAgIiIiUHJvdG9jb2wgcGFydCBmb3IgcGVyZm9ybWluZyB0cnVz
dGVkIGNsaWNrcyIiIgogICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCkBAIC01MDMsMyArNTE1
LDMyIEBAIGNsYXNzIFByaW50UHJvdG9jb2xQYXJ0KFByb3RvY29sUGFydCk6CiAgICAgZGVmIHJl
bmRlcl9hc19wZGYoc2VsZiwgd2lkdGgsIGhlaWdodCk6CiAgICAgICAgICIiIk91dHB1dCBkb2N1
bWVudCBhcyBQREYiIiIKICAgICAgICAgcGFzcworCisKK2NsYXNzIERlYnVnUHJvdG9jb2xQYXJ0
KFByb3RvY29sUGFydCk6CisgICAgIiIiUHJvdG9jb2wgcGFydCBmb3IgZGVidWdnaW5nIHRlc3Qg
ZmFpbHVyZXMuIiIiCisgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKKworICAgIG5hbWUgPSAi
ZGVidWciCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgbG9hZF9kZXZ0b29scyhzZWxm
KToKKyAgICAgICAgIiIiTG9hZCBkZXZ0b29scyBpbiB0aGUgY3VycmVudCB3aW5kb3ciIiIKKyAg
ICAgICAgcGFzcworCisgICAgZGVmIGxvYWRfcmVmdGVzdF9hbmFseXplcihzZWxmLCB0ZXN0LCBy
ZXN1bHQpOgorICAgICAgICBpbXBvcnQgaW8KKyAgICAgICAgaW1wb3J0IG1vemxvZworICAgICAg
ICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGUsIHVybGpvaW4KKworICAgICAgICBkZWJ1
Z190ZXN0X2xvZ2dlciA9IG1vemxvZy5zdHJ1Y3R1cmVkbG9nLlN0cnVjdHVyZWRMb2dnZXIoImRl
YnVnX3Rlc3QiKQorICAgICAgICBvdXRwdXQgPSBpby5TdHJpbmdJTygpCisgICAgICAgIGRlYnVn
X3Rlc3RfbG9nZ2VyLnN1aXRlX3N0YXJ0KFtdKQorICAgICAgICBkZWJ1Z190ZXN0X2xvZ2dlci5h
ZGRfaGFuZGxlcihtb3psb2cuaGFuZGxlcnMuU3RyZWFtSGFuZGxlcihvdXRwdXQsIGZvcm1hdHRl
cj1tb3psb2cuZm9ybWF0dGVycy5UYnBsRm9ybWF0dGVyKCkpKQorICAgICAgICBkZWJ1Z190ZXN0
X2xvZ2dlci50ZXN0X3N0YXJ0KHRlc3QuaWQpCisgICAgICAgICMgQWx3YXlzIHVzZSBQQVNTIGFz
IHRoZSBleHBlY3RlZCB2YWx1ZSBzbyB3ZSBnZXQgb3V0cHV0IGV2ZW4gZm9yIGV4cGVjdGVkIGZh
aWx1cmVzCisgICAgICAgIGRlYnVnX3Rlc3RfbG9nZ2VyLnRlc3RfZW5kKHRlc3QuaWQsIHJlc3Vs
dFsic3RhdHVzIl0sICJQQVNTIiwgZXh0cmE9cmVzdWx0LmdldCgiZXh0cmEiKSkKKworICAgICAg
ICBzZWxmLnBhcmVudC5iYXNlLmxvYWQodXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2
ZXJfdXJsKCJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jb21tb24v
dGhpcmRfcGFydHkvcmVmdGVzdC1hbmFseXplci54aHRtbCNsb2c9JXMiICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBxdW90ZShvdXRwdXQuZ2V0dmFsdWUoKSkpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVubmVyLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVubmVyLnB5CmluZGV4IDNkMzI5MTc2NTli
My4uMTEzZWZmOTlmZWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVz
dHJ1bm5lci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5u
ZXIvcnVubmVyLnB5CkBAIC0yNCw3ICsyNCw3IEBAIGRlZiBkb19kZWxheWVkX2ltcG9ydHMoKToK
ICAgICBpbXBvcnQgcHl0ZXN0CiAKIAotZGVmIHJ1bihwYXRoLCBzZXJ2ZXJfY29uZmlnLCBzZXNz
aW9uX2NvbmZpZywgdGltZW91dD0wKToKK2RlZiBydW4ocGF0aCwgc2VydmVyX2NvbmZpZywgc2Vz
c2lvbl9jb25maWcsIHRpbWVvdXQ9MCwgZW52aXJvbj1Ob25lKToKICAgICAiIiIKICAgICBSdW4g
UHl0aG9uIHRlc3QgYXQgYGBwYXRoYGAgaW4gcHl0ZXN0LiAgVGhlIHByb3ZpZGVkIGBgc2Vzc2lv
bmBgCiAgICAgaXMgZXhwb3NlZCBhcyBhIGZpeHR1cmUgYXZhaWxhYmxlIGluIHRoZSBzY29wZSBv
ZiB0aGUgdGVzdCBmdW5jdGlvbnMuCkBAIC00MSwyOCArNDEsMzUgQEAgZGVmIHJ1bihwYXRoLCBz
ZXJ2ZXJfY29uZmlnLCBzZXNzaW9uX2NvbmZpZywgdGltZW91dD0wKToKICAgICBpZiBweXRlc3Qg
aXMgTm9uZToKICAgICAgICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAotICAgIG9zLmVudmlyb25b
IldEX0hPU1QiXSA9IHNlc3Npb25fY29uZmlnWyJob3N0Il0KLSAgICBvcy5lbnZpcm9uWyJXRF9Q
T1JUIl0gPSBzdHIoc2Vzc2lvbl9jb25maWdbInBvcnQiXSkKLSAgICBvcy5lbnZpcm9uWyJXRF9D
QVBBQklMSVRJRVMiXSA9IGpzb24uZHVtcHMoc2Vzc2lvbl9jb25maWdbImNhcGFiaWxpdGllcyJd
KQotICAgIG9zLmVudmlyb25bIldEX1NFUlZFUl9DT05GSUciXSA9IGpzb24uZHVtcHMoc2VydmVy
X2NvbmZpZy5hc19kaWN0X2Zvcl93ZF9lbnZfdmFyaWFibGUoKSkKLQotICAgIGhhcm5lc3MgPSBI
YXJuZXNzUmVzdWx0UmVjb3JkZXIoKQotICAgIHN1YnRlc3RzID0gU3VidGVzdFJlc3VsdFJlY29y
ZGVyKCkKLQotICAgIHdpdGggVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgY2FjaGU6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHB5dGVzdC5tYWluKFsiLS1zdHJpY3QiLCAgIyB0dXJuIHdhcm5p
bmdzIGludG8gZXJyb3JzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi12diIsICAjIHNob3cg
ZWFjaCBpbmRpdmlkdWFsIHN1YnRlc3QgYW5kIGZ1bGwgZmFpbHVyZSBsb2dzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tY2FwdHVyZSIsICJubyIsICAjIGVuYWJsZSBzdGRvdXQvc3RkZXJy
IGZyb20gdGVzdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAiLS1iYXNldGVtcCIsIGNhY2hl
LCAgIyB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIi0tc2hv
d2xvY2FscyIsICAjIGRpc3BsYXkgY29udGVudHMgb2YgdmFyaWFibGVzIGluIGxvY2FsIHNjb3Bl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIi1wIiwgIm5vOm1vemxvZyIsICAjIHVzZSB0aGUg
V1BUIHJlc3VsdCByZWNvcmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICItcCIsICJubzpj
YWNoZXByb3ZpZGVyIiwgICMgZGlzYWJsZSBzdGF0ZSBwcmVzZXJ2YXRpb24gYWNyb3NzIGludm9j
YXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi1vPWNvbnNvbGVfb3V0cHV0X3N0eWxl
PWNsYXNzaWMiLCAgIyBkaXNhYmxlIHRlc3QgcHJvZ3Jlc3MgYmFyCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgcGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5zPVtoYXJuZXNz
LCBzdWJ0ZXN0c10pCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAg
IGhhcm5lc3Mub3V0Y29tZSA9ICgiSU5URVJOQUwtRVJST1IiLCBzdHIoZSkpCisgICAgb2xkX2Vu
dmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgIHRyeToKKyAgICAgICAgb3MuZW52aXJvblsi
V0RfSE9TVCJdID0gc2Vzc2lvbl9jb25maWdbImhvc3QiXQorICAgICAgICBvcy5lbnZpcm9uWyJX
RF9QT1JUIl0gPSBzdHIoc2Vzc2lvbl9jb25maWdbInBvcnQiXSkKKyAgICAgICAgb3MuZW52aXJv
blsiV0RfQ0FQQUJJTElUSUVTIl0gPSBqc29uLmR1bXBzKHNlc3Npb25fY29uZmlnWyJjYXBhYmls
aXRpZXMiXSkKKyAgICAgICAgb3MuZW52aXJvblsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5k
dW1wcyhzZXJ2ZXJfY29uZmlnLmFzX2RpY3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQorICAgICAg
ICBpZiBlbnZpcm9uOgorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoZW52aXJvbikKKwor
ICAgICAgICBoYXJuZXNzID0gSGFybmVzc1Jlc3VsdFJlY29yZGVyKCkKKyAgICAgICAgc3VidGVz
dHMgPSBTdWJ0ZXN0UmVzdWx0UmVjb3JkZXIoKQorCisgICAgICAgIHdpdGggVGVtcG9yYXJ5RGly
ZWN0b3J5KCkgYXMgY2FjaGU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcHl0
ZXN0Lm1haW4oWyItLXN0cmljdCIsICAjIHR1cm4gd2FybmluZ3MgaW50byBlcnJvcnMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi12diIsICAjIHNob3cgZWFjaCBpbmRpdmlkdWFsIHN1
YnRlc3QgYW5kIGZ1bGwgZmFpbHVyZSBsb2dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICItLWNhcHR1cmUiLCAibm8iLCAgIyBlbmFibGUgc3Rkb3V0L3N0ZGVyciBmcm9tIHRlc3RzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWJhc2V0ZW1wIiwgY2FjaGUsICAjIHRlbXBv
cmFyeSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tc2hvd2xvY2Fs
cyIsICAjIGRpc3BsYXkgY29udGVudHMgb2YgdmFyaWFibGVzIGluIGxvY2FsIHNjb3BlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICItcCIsICJubzptb3psb2ciLCAgIyB1c2UgdGhlIFdQ
VCByZXN1bHQgcmVjb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1wIiwgIm5v
OmNhY2hlcHJvdmlkZXIiLCAgIyBkaXNhYmxlIHN0YXRlIHByZXNlcnZhdGlvbiBhY3Jvc3MgaW52
b2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vPWNvbnNvbGVfb3V0cHV0
X3N0eWxlPWNsYXNzaWMiLCAgIyBkaXNhYmxlIHRlc3QgcHJvZ3Jlc3MgYmFyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhdGhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBs
dWdpbnM9W2hhcm5lc3MsIHN1YnRlc3RzXSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgICAgICBoYXJuZXNzLm91dGNvbWUgPSAoIklOVEVSTkFMLUVSUk9S
Iiwgc3RyKGUpKQorCisgICAgZmluYWxseToKKyAgICAgICAgb3MuZW52aXJvbiA9IG9sZF9lbnZp
cm9uCiAKICAgICByZXR1cm4gKGhhcm5lc3Mub3V0Y29tZSwgc3VidGVzdHMucmVzdWx0cykKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODkxZGYwYTIzYzU5Li4wMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZjg1MDZjMjgwMi4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwzOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL19f
aW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmNo
cm9tZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JlZGdlLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2VjaHJvbWl1bS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JpbnRlcm5ldGV4cGxvcmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9leGVjdXRvcm1hcmlvbmV0dGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1
dG9yb3BlcmEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2FmYXJpLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlbGVuaXVtLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVj
dXRvcnNlcnZvZHJpdmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndlYmRy
aXZlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJraXQucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL3Byb2Nlc3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3By
b3RvY29sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9yZWZ0ZXN0LmpzCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9ydW5uZXIuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2Fp
dC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdGhhcm5lc3Nfc2Vydm9kcml2ZXIuanMK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJuZXNzX3dlYmRyaXZlcl9yZXN1bWUuanMK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3dpbmRvdy1sb2FkZWQuanMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5
CmluZGV4IDc1MjFmMjViMTM0NC4uNzZhZGU5NWYwN2Y3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhwZWN0ZWR0cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkKQEAg
LTEsNiArMSw1IEBACiBmcm9tIG1hdGggaW1wb3J0IGxvZwogZnJvbSBjb2xsZWN0aW9ucyBpbXBv
cnQgZGVmYXVsdGRpY3QKLWZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMKIAog
Y2xhc3MgTm9kZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wLCB2YWx1ZSk6
CkBAIC0zNCw3ICszMyw3IEBAIGRlZiBlbnRyb3B5KHJlc3VsdHMpOgogCiAgICAgcmVzdWx0X2Nv
dW50cyA9IGRlZmF1bHRkaWN0KGludCkKICAgICB0b3RhbCA9IGZsb2F0KGxlbihyZXN1bHRzKSkK
LSAgICBmb3IgdmFsdWVzIGluIGl0ZXJ2YWx1ZXMocmVzdWx0cyk6CisgICAgZm9yIHZhbHVlcyBp
biByZXN1bHRzLnZhbHVlcygpOgogICAgICAgICAjIE5vdCBzdXJlIHRoaXMgaXMgcmlnaHQsIHBv
c3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFsdWVzIGFzCiAgICAgICAgICMgZGlzdGlu
Y3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1ZT8KICAgICAgICAgZm9yIHZhbHVlIGlu
IHZhbHVlczoKQEAgLTQyLDcgKzQxLDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICBl
bnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBpbiBpdGVydmFsdWVzKHJlc3VsdF9jb3Vu
dHMpOgorICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291bnRzLnZhbHVlcygpOgogICAgICAgICBw
cm9wID0gZmxvYXQoY291bnQpIC8gdG90YWwKICAgICAgICAgZW50cm9weV9zdW0gLT0gcHJvcCAq
IGxvZyhwcm9wLCAyKQogCkBAIC01Myw3ICs1Miw3IEBAIGRlZiBzcGxpdF9yZXN1bHRzKHByb3As
IHJlc3VsdHMpOgogICAgICIiIlNwbGl0IGEgZGljdGlvbmFyeSBvZiByZXN1bHRzIGludG8gYSBk
aWN0aW9uYXJ5IG9mIGRpY3Rpb25hcmllcyB3aGVyZQogICAgIGVhY2ggc3ViLWRpY3Rpb25hcnkg
aGFzIGEgc3BlY2lmaWMgdmFsdWUgb2YgdGhlIGdpdmVuIHByb3BlcnR5IiIiCiAgICAgYnlfcHJv
cCA9IGRlZmF1bHRkaWN0KGRpY3QpCi0gICAgZm9yIHJ1bl9pbmZvLCB2YWx1ZSBpbiBpdGVyaXRl
bXMocmVzdWx0cyk6CisgICAgZm9yIHJ1bl9pbmZvLCB2YWx1ZSBpbiByZXN1bHRzLml0ZW1zKCk6
CiAgICAgICAgIGJ5X3Byb3BbcnVuX2luZm9bcHJvcF1dW3J1bl9pbmZvXSA9IHZhbHVlCiAKICAg
ICByZXR1cm4gYnlfcHJvcApAQCAtNzgsMTMgKzc3LDEzIEBAIGRlZiBidWlsZF90cmVlKHByb3Bl
cnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKICAgICBwcm9wX2lu
ZGV4ID0ge3Byb3A6IGkgZm9yIGksIHByb3AgaW4gZW51bWVyYXRlKHByb3BlcnRpZXMpfQogCiAg
ICAgYWxsX3Jlc3VsdHMgPSBkZWZhdWx0ZGljdChpbnQpCi0gICAgZm9yIHJlc3VsdF92YWx1ZXMg
aW4gaXRlcnZhbHVlcyhyZXN1bHRzKToKLSAgICAgICAgZm9yIHJlc3VsdF92YWx1ZSwgY291bnQg
aW4gaXRlcml0ZW1zKHJlc3VsdF92YWx1ZXMpOgorICAgIGZvciByZXN1bHRfdmFsdWVzIGluIHJl
c3VsdHMudmFsdWVzKCk6CisgICAgICAgIGZvciByZXN1bHRfdmFsdWUsIGNvdW50IGluIHJlc3Vs
dF92YWx1ZXMuaXRlbXMoKToKICAgICAgICAgICAgIGFsbF9yZXN1bHRzW3Jlc3VsdF92YWx1ZV0g
Kz0gY291bnQKIAogICAgICMgSWYgdGhlcmUgaXMgb25seSBvbmUgcmVzdWx0IHdlIGFyZSBkb25l
CiAgICAgaWYgbm90IHByb3BlcnRpZXMgb3IgbGVuKGFsbF9yZXN1bHRzKSA9PSAxOgotICAgICAg
ICBmb3IgdmFsdWUsIGNvdW50IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CisgICAgICAgIGZv
ciB2YWx1ZSwgY291bnQgaW4gYWxsX3Jlc3VsdHMuaXRlbXMoKToKICAgICAgICAgICAgIHRyZWUu
cmVzdWx0X3ZhbHVlc1t2YWx1ZV0gKz0gY291bnQKICAgICAgICAgdHJlZS5ydW5faW5mbyB8PSBz
ZXQocmVzdWx0cy5rZXlzKCkpCiAgICAgICAgIHJldHVybiB0cmVlCkBAIC0xMDAsNyArOTksNyBA
QCBkZWYgYnVpbGRfdHJlZShwcm9wZXJ0aWVzLCBkZXBlbmRlbnRfcHJvcHMsIHJlc3VsdHMsIHRy
ZWU9Tm9uZSk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBuZXdfZW50cm9weSA9IDAu
CiAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5ID0gW10KLSAgICAgICAgZm9yIHByb3BfdmFs
dWUsIHJlc3VsdF9zZXQgaW4gaXRlcml0ZW1zKHJlc3VsdF9zZXRzKToKKyAgICAgICAgZm9yIHBy
b3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gcmVzdWx0X3NldHMuaXRlbXMoKToKICAgICAgICAgICAg
IHJlc3VsdHNfc2V0c19lbnRyb3B5LmFwcGVuZCgoZW50cm9weShyZXN1bHRfc2V0KSwgcHJvcF92
YWx1ZSwgcmVzdWx0X3NldCkpCiAgICAgICAgICAgICBuZXdfZW50cm9weSArPSAoZmxvYXQobGVu
KHJlc3VsdF9zZXQpKSAvIGxlbihyZXN1bHRzKSkgKiByZXN1bHRzX3NldHNfZW50cm9weVstMV1b
MF0KIApAQCAtMTEwLDcgKzEwOSw3IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVu
ZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKIAogICAgICMgSW4gdGhlIGNhc2UgdGhh
dCBubyBwcm9wZXJ0aWVzIHBhcnRpdGlvbiB0aGUgc3BhY2UKICAgICBpZiBub3QgcmVzdWx0c19w
YXJ0aXRpb25zOgotICAgICAgICBmb3IgdmFsdWUsIGNvdW50IGluIGl0ZXJpdGVtcyhhbGxfcmVz
dWx0cyk6CisgICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gYWxsX3Jlc3VsdHMuaXRlbXMoKToK
ICAgICAgICAgICAgIHRyZWUucmVzdWx0X3ZhbHVlc1t2YWx1ZV0gKz0gY291bnQKICAgICAgICAg
dHJlZS5ydW5faW5mbyB8PSBzZXQocmVzdWx0cy5rZXlzKCkpCiAgICAgICAgIHJldHVybiB0cmVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5
CmluZGV4IDkxMDM1OGY1MTU5Ni4uOTdkNzRkYTRlNDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZm9udC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQpAQCAtODAsMTAgKzgwLDEwIEBA
IGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAgICAgZm9udHMgPSBjaGVja19vdXRw
dXQoWycvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyJywgJy14bWwnLCAnU1BGb250c0RhdGFUeXBl
J10pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgaWYgcHkzCi0gICAgICAgICAgICByZWFk
UGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tQnl0ZXMKKyAgICAgICAgICAg
IGxvYWRfcGxpc3QgPSBwbGlzdGxpYi5sb2FkcwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJy
b3I6Ci0gICAgICAgICAgICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RG
cm9tU3RyaW5nCi0gICAgICAgIGZvbnRzID0gcmVhZFBsaXN0RnJvbUJ5dGVzKGZvbnRzKQorICAg
ICAgICAgICAgbG9hZF9wbGlzdCA9IHBsaXN0bGliLnJlYWRQbGlzdEZyb21TdHJpbmcKKyAgICAg
ICAgZm9udHMgPSBsb2FkX3BsaXN0KGZvbnRzKQogICAgICAgICBhc3NlcnQgbGVuKGZvbnRzKSA9
PSAxCiAgICAgICAgIGZvciBmb250IGluIGZvbnRzWzBdWydfaXRlbXMnXToKICAgICAgICAgICAg
IGlmIGZvbnRbJ3BhdGgnXSA9PSBpbnN0YWxsZWRfZm9udF9wYXRoOgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Zvcm1hdHRlcnMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVy
cy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Zvcm1hdHRlcnMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1h
dHRlcnMvY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy9jaHJvbWl1bS5weQpp
bmRleCBjZWYwMWM0ZmZjNWQuLmFlOGQ5NmExMTcwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hy
b21pdW0ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQganNvbgogaW1wb3J0IHRpbWUKLWltcG9y
dCBzaXgKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIGZyb20gbW96bG9n
LmZvcm1hdHRlcnMgaW1wb3J0IGJhc2UKQEAgLTMxLDQ4ICszMCw1NSBAQCBjbGFzcyBDaHJvbWl1
bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAjIHRoZSB0cmllIGFuZCB0
aGUgbGVhZiBjb250YWlucyB0aGUgZGljdCBvZiBwZXItdGVzdCBkYXRhLgogICAgICAgICBzZWxm
LnRlc3RzID0ge30KIAotICAgICAgICAjIE1lc3NhZ2UgZGljdGlvbmFyeSwga2V5ZWQgYnkgdGVz
dCBuYW1lLiBWYWx1ZSBpcyBhIGxpc3Qgb2Ygc3RyaW5nczoKLSAgICAgICAgIyBzZWUgX2FwcGVu
ZF90ZXN0X21lc3NhZ2UgZm9yIHRoZSBmb3JtYXQuCisgICAgICAgICMgVHdvIGRpY3Rpb25hcmll
cyBrZXllZCBieSB0ZXN0IG5hbWUuIFZhbHVlcyBhcmUgbGlzdHMgb2Ygc3RyaW5nczoKKyAgICAg
ICAgIyBhY3R1YWwgbWV0YWRhdGEgY29udGVudCBhbmQgb3RoZXIgbWVzc2FnZXMsIHJlc3BlY3Rp
dmVseS4KKyAgICAgICAgIyBTZWUgX2FwcGVuZF90ZXN0X21lc3NhZ2UgZm9yIGV4YW1wbGVzLgor
ICAgICAgICBzZWxmLmFjdHVhbF9tZXRhZGF0YSA9IGRlZmF1bHRkaWN0KGxpc3QpCiAgICAgICAg
IHNlbGYubWVzc2FnZXMgPSBkZWZhdWx0ZGljdChsaXN0KQogCiAgICAgICAgICMgTGlzdCBvZiB0
ZXN0cyB0aGF0IGhhdmUgZmFpbGluZyBzdWJ0ZXN0cy4KICAgICAgICAgc2VsZi50ZXN0c193aXRo
X3N1YnRlc3RfZmFpbHMgPSBzZXQoKQogCiAgICAgICAgICMgQnJvd3NlciBsb2cgZm9yIHRoZSBj
dXJyZW50IHRlc3QgdW5kZXIgZXhlY3V0aW9uLgotICAgICAgICBzZWxmLnRlc3RfbG9nID0gW10K
KyAgICAgICAgIyBUaGVzZSBsb2dzIGFyZSBmcm9tIENocm9tZURyaXZlcidzIHN0ZG91dC9lcnIs
IHNvIHdlIGNhbm5vdCBzYXkgZm9yCisgICAgICAgICMgc3VyZSB3aGljaCB0ZXN0IGEgbWVzc2Fn
ZSBpcyBmcm9tLCBidXQgaW5zdGVhZCB3ZSBjb3JyZWxhdGUgdGhlbSBiYXNlZAorICAgICAgICAj
IG9uIHRpbWluZy4KKyAgICAgICAgc2VsZi5icm93c2VyX2xvZyA9IFtdCiAKICAgICBkZWYgX2Fw
cGVuZF90ZXN0X21lc3NhZ2Uoc2VsZiwgdGVzdCwgc3VidGVzdCwgd3B0X2FjdHVhbF9zdGF0dXMs
IG1lc3NhZ2UpOgotICAgICAgICAiIiIKKyAgICAgICAgciIiIgogICAgICAgICBBcHBlbmRzIHRo
ZSBtZXNzYWdlIGRhdGEgZm9yIGEgdGVzdCBvciBzdWJ0ZXN0LgorCiAgICAgICAgIDpwYXJhbSBz
dHIgdGVzdDogdGhlIG5hbWUgb2YgdGhlIHRlc3QKICAgICAgICAgOnBhcmFtIHN0ciBzdWJ0ZXN0
OiB0aGUgbmFtZSBvZiB0aGUgc3VidGVzdCB3aXRoIHRoZSBtZXNzYWdlLiBXaWxsIGJlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGlzIGlzIGNhbGxlZCBmb3IgYSB0ZXN0
LgogICAgICAgICA6cGFyYW0gc3RyIHdwdF9hY3R1YWxfc3RhdHVzOiB0aGUgdGVzdCBzdGF0dXMg
YXMgcmVwb3J0ZWQgYnkgV1BUCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGhlIHN0cmlu
ZyB0byBhcHBlbmQgdG8gdGhlIG1lc3NhZ2UgZm9yIHRoaXMgdGVzdAogCi0gICAgICAgIEV4YW1w
bGU6Ci0gICAgICAgICAgW3Rlc3Rfb3Jfc3VidGVzdF9uYW1lXQotICAgICAgICAgICAgZXhwZWN0
ZWQ6IEZBSUwKLSAgICAgICAgICAgIG1lc3NhZ2U6IHNvbWUgdGVzdCBtZXNzYWdlIGVnIGFzc2Vy
dCBmYWlsdXJlCisgICAgICAgIEV4YW1wbGUgYWN0dWFsX21ldGFkYXRhIG9mIGEgdGVzdCB3aXRo
IGEgc3VidGVzdDoKKyAgICAgICAgICAgICJbdGVzdF9uYW1lXVxuICBleHBlY3RlZDogT0tcbiIK
KyAgICAgICAgICAgICIgIFtzdWJ0ZXN0X25hbWVdXG4gICAgZXhwZWN0ZWQ6IEZBSUxcbiIKKwor
ICAgICAgICBOT1RFOiB0aHJvdWdob3V0IHRoaXMgZnVuY3Rpb24gd2Ugb3V0cHV0IGEga2V5IGNh
bGxlZCAiZXhwZWN0ZWQiIGJ1dAorICAgICAgICBmaWxsIGl0IGluIHdpdGggdGhlIGFjdHVhbCBz
dGF0dXMuIFRoaXMgaXMgYnkgZGVzaWduLiBUaGUgZ29hbCBvZiB0aGlzCisgICAgICAgIG91dHB1
dCBpcyB0byBsb29rIGV4YWN0bHkgbGlrZSBXUFQncyBleHBlY3RhdGlvbiBtZXRhZGF0YSBzbyB0
aGF0IGl0CisgICAgICAgIGNhbiBiZSBlYXNpbHkgZGlmZi1lZC4KKworICAgICAgICBNZXNzYWdl
cyBhcmUgYXBwZW5kZWQgdmVyYmF0aW0gdG8gc2VsZi5tZXNzYWdlc1t0ZXN0XS4KICAgICAgICAg
IiIiCi0gICAgICAgICMgTk9URTogdGhyb3VnaG91dCB0aGlzIGZ1bmN0aW9uIHdlIG91dHB1dCBh
IGtleSBjYWxsZWQgImV4cGVjdGVkIiBidXQKLSAgICAgICAgIyBmaWxsIGl0IGluIHdpdGggdGhl
IGFjdHVhbCBzdGF0dXMuIFRoaXMgaXMgYnkgZGVzaWduLiBUaGUgZ29hbCBvZiB0aGlzCi0gICAg
ICAgICMgb3V0cHV0IGlzIHRvIGxvb2sgZXhhY3RseSBsaWtlIFdQVCdzIGV4cGVjdGF0aW9uIG1l
dGFkYXRhIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4gYmUgZWFzaWx5IGRpZmYtZWQuCiAgICAg
ICAgIGlmIHN1YnRlc3Q6CiAgICAgICAgICAgICByZXN1bHQgPSAiICBbJXNdXG4gICAgZXhwZWN0
ZWQ6ICVzXG4iICUgKHN1YnRlc3QsIHdwdF9hY3R1YWxfc3RhdHVzKQorICAgICAgICAgICAgc2Vs
Zi5hY3R1YWxfbWV0YWRhdGFbdGVzdF0uYXBwZW5kKHJlc3VsdCkKICAgICAgICAgICAgIGlmIG1l
c3NhZ2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgICAgbWVzc2FnZTogJXNcbiIgJSBt
ZXNzYWdlCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2VzW3Rlc3RdLmFwcGVuZChyZXN1bHQpCisg
ICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0XS5hcHBlbmQoIiVzOiAlc1xuIiAlIChz
dWJ0ZXN0LCBtZXNzYWdlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgTm8gc3VidGVz
dCwgc28gdGhpcyBpcyB0aGUgdG9wLWxldmVsIHRlc3QuIFRoZSByZXN1bHQgbXVzdCBiZQotICAg
ICAgICAgICAgIyBwcmVwZW5kZWQgdG8gdGhlIGxpc3Qgb2YgbWVzc2FnZXMsIHNvIHRoYXQgdGhl
IG1lc3NhZ2UgZm9yIHRoZQotICAgICAgICAgICAgIyB0ZXN0IGNvbWVzIGJlZm9yZSBhbnkgc3Vi
dGVzdCBtZXNzYWdlcy4KKyAgICAgICAgICAgICMgcHJlcGVuZGVkIHRvIHRoZSBsaXN0LCBzbyB0
aGF0IGl0IGNvbWVzIGJlZm9yZSBhbnkgc3VidGVzdC4KICAgICAgICAgICAgIHRlc3RfbmFtZV9s
YXN0X3BhcnQgPSB0ZXN0LnNwbGl0KCIvIilbLTFdCiAgICAgICAgICAgICByZXN1bHQgPSAiWyVz
XVxuICBleHBlY3RlZDogJXNcbiIgJSAodGVzdF9uYW1lX2xhc3RfcGFydCwgd3B0X2FjdHVhbF9z
dGF0dXMpCisgICAgICAgICAgICBzZWxmLmFjdHVhbF9tZXRhZGF0YVt0ZXN0XS5pbnNlcnQoMCwg
cmVzdWx0KQogICAgICAgICAgICAgaWYgbWVzc2FnZToKLSAgICAgICAgICAgICAgICByZXN1bHQg
Kz0gIiAgbWVzc2FnZTogJXNcbiIgJSBtZXNzYWdlCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2Vz
W3Rlc3RdLmluc2VydCgwLCByZXN1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0
ZXN0XS5pbnNlcnQoMCwgIkhhcm5lc3M6ICVzXG4iICUgbWVzc2FnZSkKIAogICAgIGRlZiBfYXBw
ZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0LCBhcnRpZmFjdF9uYW1lLCBhcnRpZmFjdF92YWx1
ZSk6CiAgICAgICAgICIiIgpAQCAtODEsMTggKzg3LDIxIEBAIGNsYXNzIENocm9taXVtRm9ybWF0
dGVyKGJhc2UuQmFzZUZvcm1hdHRlcik6CiAgICAgICAgIDpwYXJhbSBzdHIgYXJ0aWZhY3RfbmFt
ZTogdGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0CiAgICAgICAgIDpwYXJhbSBzdHIgYXJ0aWZhY3Rf
dmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgYXJ0aWZhY3QKICAgICAgICAgIiIiCi0gICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKGFydGlmYWN0X3ZhbHVlLCBzaXguc3RyaW5nX3R5cGVzKSwgImFydGlm
YWN0X3ZhbHVlIG11c3QgYmUgYSBzdHIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFydGlm
YWN0X3ZhbHVlLCBzdHIpLCAiYXJ0aWZhY3RfdmFsdWUgbXVzdCBiZSBhIHN0ciIKICAgICAgICAg
aWYgImFydGlmYWN0cyIgbm90IGluIGN1cl9kaWN0LmtleXMoKToKICAgICAgICAgICAgIGN1cl9k
aWN0WyJhcnRpZmFjdHMiXSA9IGRlZmF1bHRkaWN0KGxpc3QpCiAgICAgICAgIGN1cl9kaWN0WyJh
cnRpZmFjdHMiXVthcnRpZmFjdF9uYW1lXS5hcHBlbmQoYXJ0aWZhY3RfdmFsdWUpCiAKLSAgICBk
ZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2VzLCB3cHRfYWN0dWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGVzdF9mYWls
dXJlLCByZWZ0ZXN0X3NjcmVlbnNob3RzKToKKyAgICBkZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNl
bGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIGFjdHVhbF9tZXRhZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2VzLCB3cHRfYWN0dWFsLCBzdWJ0ZXN0X2ZhaWx1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X3NjcmVlbnNob3RzPU5vbmUpOgogICAg
ICAgICAiIiIKICAgICAgICAgU3RvcmVzIHRoZSByZXN1bHQgb2YgYSBzaW5nbGUgdGVzdCBpbiB8
c2VsZi50ZXN0c3wKKwogICAgICAgICA6cGFyYW0gc3RyIG5hbWU6IG5hbWUgb2YgdGhlIHRlc3Qu
CiAgICAgICAgIDpwYXJhbSBzdHIgYWN0dWFsOiBhY3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0Lgog
ICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiBleHBlY3RlZCBzdGF0dXNlcyBvZiB0aGUgdGVz
dC4KKyAgICAgICAgOnBhcmFtIGxpc3QgYWN0dWFsX21ldGFkYXRhOiBhIGxpc3Qgb2YgbWV0YWRh
dGEgaXRlbXMuCiAgICAgICAgIDpwYXJhbSBsaXN0IG1lc3NhZ2VzOiBhIGxpc3Qgb2YgdGVzdCBt
ZXNzYWdlcy4KICAgICAgICAgOnBhcmFtIHN0ciB3cHRfYWN0dWFsOiBhY3R1YWwgc3RhdHVzIHJl
cG9ydGVkIGJ5IHdwdCwgbWF5IGRpZmZlciBmcm9tIHxhY3R1YWx8LgogICAgICAgICA6cGFyYW0g
Ym9vbCBzdWJ0ZXN0X2ZhaWx1cmU6IHdoZXRoZXIgdGhpcyB0ZXN0IGZhaWxlZCBiZWNhdXNlIG9m
IHN1YnRlc3RzLgpAQCAtMTEyLDEwICsxMjEsMTIgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIo
YmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgaWYgd3B0X2FjdHVhbCAhPSBhY3R1YWw6CiAg
ICAgICAgICAgICBzZWxmLl9hcHBlbmRfYXJ0aWZhY3QoY3VyX2RpY3QsICJ3cHRfYWN0dWFsX3N0
YXR1cyIsIHdwdF9hY3R1YWwpCiAgICAgICAgIGlmIHdwdF9hY3R1YWwgPT0gJ0NSQVNIJzoKLSAg
ICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYudGVzdF9sb2c6CisgICAgICAgICAgICBmb3IgbGlu
ZSBpbiBzZWxmLmJyb3dzZXJfbG9nOgogICAgICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF9hcnRp
ZmFjdChjdXJfZGljdCwgIndwdF9jcmFzaF9sb2ciLCBsaW5lKQorICAgICAgICBmb3IgbWV0YWRh
dGEgaW4gYWN0dWFsX21ldGFkYXRhOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0
KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9tZXRhZGF0YSIsIG1ldGFkYXRhKQogICAgICAgICBmb3Ig
bWVzc2FnZSBpbiBtZXNzYWdlczoKLSAgICAgICAgICAgIHNlbGYuX2FwcGVuZF9hcnRpZmFjdChj
dXJfZGljdCwgImxvZyIsIG1lc3NhZ2UpCisgICAgICAgICAgICBzZWxmLl9hcHBlbmRfYXJ0aWZh
Y3QoY3VyX2RpY3QsICJ3cHRfbG9nIiwgbWVzc2FnZSkKIAogICAgICAgICAjIFN0b3JlIHNjcmVl
bnNob3RzIChpZiBhbnkpLgogICAgICAgICBmb3IgaXRlbSBpbiByZWZ0ZXN0X3NjcmVlbnNob3Rz
IG9yIFtdOgpAQCAtMTcyLDcgKzE4Myw3IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2Uu
QmFzZUZvcm1hdHRlcik6CiAgICAgICAgIHRvIHRoZSBhY3R1YWwgc3RhdHVzIGlmIGl0J3Mgbm90
LgogCiAgICAgICAgIElmIHRoZSB0ZXN0IGhhcyBtdWx0aXBsZSBzdGF0dXNlcywgaXQgd2lsbCBo
YXZlIG90aGVyIHN0YXR1c2VzIGxpc3RlZCBhcwotICAgICAgICAia25vd25faW50ZXJtaXR0ZW50
IiBpbiB8ZGF0YXwuIElmIHRoZXNlIGV4aXN0LCB0aGV5IHdpbGwgYmUgYXBwZW5kZWQgdG8KKyAg
ICAgICAgImtub3duX2ludGVybWl0dGVudCIgaW4gfGRhdGF8LiBJZiB0aGVzZSBleGlzdCwgdGhl
eSB3aWxsIGJlIGFkZGVkIHRvCiAgICAgICAgIHRoZSByZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFj
ZWQgaW4gYmV0d2Vlbi4KIAogICAgICAgICA6cGFyYW0gc3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBh
Y3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0CkBAIC0xODEsOCArMTkyLDkgQEAgY2xhc3MgQ2hyb21p
dW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgIiIiCiAgICAgICAgIGV4
cGVjdGVkX3N0YXR1c2VzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRhdGFbImV4cGVjdGVkIl0p
IGlmICJleHBlY3RlZCIgaW4gZGF0YSBlbHNlIGFjdHVhbF9zdGF0dXMKICAgICAgICAgaWYgZGF0
YS5nZXQoImtub3duX2ludGVybWl0dGVudCIpOgotICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVz
ZXMgKz0gIiAiICsgIiAiLmpvaW4oCi0gICAgICAgICAgICAgICAgW3NlbGYuX21hcF9zdGF0dXNf
bmFtZShvdGhlcl9zdGF0dXMpIGZvciBvdGhlcl9zdGF0dXMgaW4gZGF0YVsia25vd25faW50ZXJt
aXR0ZW50Il1dKQorICAgICAgICAgICAgYWxsX3N0YXRzdWVzID0ge3NlbGYuX21hcF9zdGF0dXNf
bmFtZShvdGhlcl9zdGF0dXMpIGZvciBvdGhlcl9zdGF0dXMgaW4gZGF0YVsia25vd25faW50ZXJt
aXR0ZW50Il19CisgICAgICAgICAgICBhbGxfc3RhdHN1ZXMuYWRkKGV4cGVjdGVkX3N0YXR1c2Vz
KQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSAiICIuam9pbihzb3J0ZWQoYWxsX3N0
YXRzdWVzKSkKICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX3N0YXR1c2VzCiAKICAgICBkZWYgc3Vp
dGVfc3RhcnQoc2VsZiwgZGF0YSk6CkBAIC0yMjksMTkgKzI0MSwyMSBAQCBjbGFzcyBDaHJvbWl1
bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICBzZWxmLl9zdG9yZV90ZXN0
X3Jlc3VsdCh0ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVh
bF9zdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0YXR1
c2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdHVhbF9tZXRhZGF0
YVt0ZXN0X25hbWVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3Nh
Z2VzW3Rlc3RfbmFtZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdwdF9hY3R1
YWxfc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0ZXN0X2ZhaWx1
cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZ2V0KCJleHRyYSIsIHt9
KS5nZXQoInJlZnRlc3Rfc2NyZWVuc2hvdHMiKSkKIAotICAgICAgICAjIFJlbW92ZSB0aGUgdGVz
dCBmcm9tIG1lc3NhZ2VzIGRpY3QgdG8gYXZvaWQgYWNjdW11bGF0aW5nIHRvbyBtYW55LgorICAg
ICAgICAjIFJlbW92ZSB0aGUgdGVzdCBmcm9tIGRpY3RzIHRvIGF2b2lkIGFjY3VtdWxhdGluZyB0
b28gbWFueS4KKyAgICAgICAgc2VsZi5hY3R1YWxfbWV0YWRhdGEucG9wKHRlc3RfbmFtZSkKICAg
ICAgICAgc2VsZi5tZXNzYWdlcy5wb3AodGVzdF9uYW1lKQogCiAgICAgICAgICMgVXBkYXRlIHRo
ZSBjb3VudCBvZiBob3cgbWFueSB0ZXN0cyByYW4gd2l0aCBlYWNoIHN0YXR1cy4KICAgICAgICAg
c2VsZi5udW1fZmFpbHVyZXNfYnlfc3RhdHVzW2FjdHVhbF9zdGF0dXNdICs9IDEKIAogICAgICAg
ICAjIE5ldyB0ZXN0LCBuZXcgYnJvd3NlciBsb2dzLgotICAgICAgICBzZWxmLnRlc3RfbG9nID0g
W10KKyAgICAgICAgc2VsZi5icm93c2VyX2xvZyA9IFtdCiAKICAgICBkZWYgc3VpdGVfZW5kKHNl
bGYsIGRhdGEpOgogICAgICAgICAjIENyZWF0ZSB0aGUgZmluYWwgcmVzdWx0IGRpY3Rpb25hcnkK
QEAgLTI1Nyw1ICsyNzEsNiBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3Jt
YXR0ZXIpOgogICAgICAgICByZXR1cm4ganNvbi5kdW1wcyhmaW5hbF9yZXN1bHQpCiAKICAgICBk
ZWYgcHJvY2Vzc19vdXRwdXQoc2VsZiwgZGF0YSk6Ci0gICAgICAgIGlmICdjb21tYW5kJyBpbiBk
YXRhIGFuZCAnY2hyb21lZHJpdmVyJyBpbiBkYXRhWydjb21tYW5kJ106Ci0gICAgICAgICAgICBz
ZWxmLnRlc3RfbG9nLmFwcGVuZChkYXRhWydkYXRhJ10pCisgICAgICAgIGNtZCA9IGRhdGEuZ2V0
KCJjb21tYW5kIiwgIiIpCisgICAgICAgIGlmIGFueShjIGluIGNtZCBmb3IgYyBpbiBbImNocm9t
ZWRyaXZlciIsICJsb2djYXQiXSk6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXJfbG9nLmFwcGVu
ZChkYXRhWydkYXRhJ10pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0
cy90ZXN0X2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9j
aHJvbWl1bS5weQppbmRleCA4ZjhlNzMyZDQ3MzYuLjUzZDY0ZGY3MGYwZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90ZXN0X2Nocm9taXVtLnB5CkBAIC0xLDcgKzEsNyBA
QAogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIGZyb20gb3MucGF0aCBpbXBvcnQgZGlybmFtZSwg
am9pbgotZnJvbSBzaXgubW92ZXMgaW1wb3J0IGNTdHJpbmdJTyBhcyBTdHJpbmdJTworZnJvbSBp
byBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSBtb3psb2cgaW1wb3J0IGhhbmRsZXJzLCBzdHJ1Y3R1
cmVkbG9nCiAKQEAgLTE1NywxNyArMTU3LDI0IEBAIGRlZiB0ZXN0X3N1YnRlc3RfbWVzc2FnZXMo
Y2FwZmQpOgogICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKIAogICAgIHQxX2Fy
dGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdWyJhcnRpZmFjdHMiXQotICAgIGFz
c2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsKKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3
cHRfYWN0dWFsX21ldGFkYXRhIl0gPT0gWwogICAgICAgICAiW3QxXVxuICBleHBlY3RlZDogUEFT
U1xuIiwKLSAgICAgICAgIiAgW3QxX2FdXG4gICAgZXhwZWN0ZWQ6IEZBSUxcbiAgICBtZXNzYWdl
OiB0MV9hX21lc3NhZ2VcbiIsCi0gICAgICAgICIgIFt0MV9iXVxuICAgIGV4cGVjdGVkOiBQQVNT
XG4gICAgbWVzc2FnZTogdDFfYl9tZXNzYWdlXG4iLAorICAgICAgICAiICBbdDFfYV1cbiAgICBl
eHBlY3RlZDogRkFJTFxuIiwKKyAgICAgICAgIiAgW3QxX2JdXG4gICAgZXhwZWN0ZWQ6IFBBU1Nc
biIsCisgICAgXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9sb2ciXSA9PSBbCisgICAg
ICAgICJ0MV9hOiB0MV9hX21lc3NhZ2VcbiIsCisgICAgICAgICJ0MV9iOiB0MV9iX21lc3NhZ2Vc
biIsCiAgICAgXQogICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUi
XSA9PSBbInRydWUiXQogICAgIHQyX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0
MiJdWyJhcnRpZmFjdHMiXQotICAgIGFzc2VydCB0Ml9hcnRpZmFjdHNbImxvZyJdID09IFsKLSAg
ICAgICAgIlt0Ml1cbiAgZXhwZWN0ZWQ6IFRJTUVPVVRcbiAgbWVzc2FnZTogdDJfbWVzc2FnZVxu
IiwKKyAgICBhc3NlcnQgdDJfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX21ldGFkYXRhIl0gPT0gWwor
ICAgICAgICAiW3QyXVxuICBleHBlY3RlZDogVElNRU9VVFxuIiwKICAgICAgICAgIiAgW3QyX2Fd
XG4gICAgZXhwZWN0ZWQ6IFBBU1NcbiIsCiAgICAgXQorICAgIGFzc2VydCB0Ml9hcnRpZmFjdHNb
IndwdF9sb2ciXSA9PSBbCisgICAgICAgICJIYXJuZXNzOiB0Ml9tZXNzYWdlXG4iCisgICAgXQog
ICAgIGFzc2VydCAid3B0X3N1YnRlc3RfZmFpbHVyZSIgbm90IGluIHQyX2FydGlmYWN0cy5rZXlz
KCkKIAogCkBAIC0yMTAsMTEgKzIxNywxNyBAQCBkZWYgdGVzdF9zdWJ0ZXN0X2ZhaWx1cmUoY2Fw
ZmQpOgogCiAgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXQogICAgIHQx
X2FydGlmYWN0cyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXQotICAgIGFzc2VydCB0MV9hcnRpZmFj
dHNbImxvZyJdID09IFsKLSAgICAgICAgIlt0MV1cbiAgZXhwZWN0ZWQ6IFBBU1NcbiAgbWVzc2Fn
ZTogdG9wX21lc3NhZ2VcbiIsCi0gICAgICAgICIgIFt0MV9hXVxuICAgIGV4cGVjdGVkOiBGQUlM
XG4gICAgbWVzc2FnZTogdDFfYV9tZXNzYWdlXG4iLAotICAgICAgICAiICBbdDFfYl1cbiAgICBl
eHBlY3RlZDogUEFTU1xuICAgIG1lc3NhZ2U6IHQxX2JfbWVzc2FnZVxuIiwKLSAgICAgICAgIiAg
W3QxX2NdXG4gICAgZXhwZWN0ZWQ6IFRJTUVPVVRcbiAgICBtZXNzYWdlOiB0MV9jX21lc3NhZ2Vc
biIsCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X2FjdHVhbF9tZXRhZGF0YSJdID09IFsK
KyAgICAgICAgIlt0MV1cbiAgZXhwZWN0ZWQ6IFBBU1NcbiIsCisgICAgICAgICIgIFt0MV9hXVxu
ICAgIGV4cGVjdGVkOiBGQUlMXG4iLAorICAgICAgICAiICBbdDFfYl1cbiAgICBleHBlY3RlZDog
UEFTU1xuIiwKKyAgICAgICAgIiAgW3QxX2NdXG4gICAgZXhwZWN0ZWQ6IFRJTUVPVVRcbiIsCisg
ICAgXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9sb2ciXSA9PSBbCisgICAgICAgICJI
YXJuZXNzOiB0b3BfbWVzc2FnZVxuIiwKKyAgICAgICAgInQxX2E6IHQxX2FfbWVzc2FnZVxuIiwK
KyAgICAgICAgInQxX2I6IHQxX2JfbWVzc2FnZVxuIiwKKyAgICAgICAgInQxX2M6IHQxX2NfbWVz
c2FnZVxuIiwKICAgICBdCiAgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFp
bHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBv
dXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVzdHMgZmFpbGVkLApAQCAtMjY2LDEzICsy
NzksMTYgQEAgZGVmIHRlc3RfZXhwZWN0ZWRfc3VidGVzdF9mYWlsdXJlKGNhcGZkKToKICAgICBv
dXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKICAgICB0ZXN0X29iaiA9IG91dHB1dF9q
c29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAgdDFfbG9nID0gdGVzdF9vYmpbImFydGlmYWN0cyJdWyJs
b2ciXQotICAgIHByaW50KCJMcHogdDFsb2c9JXMiICUgdDFfbG9nKQotICAgIGFzc2VydCB0MV9s
b2cgPT0gWworICAgIGFzc2VydCB0ZXN0X29ialsiYXJ0aWZhY3RzIl1bIndwdF9hY3R1YWxfbWV0
YWRhdGEiXSA9PSBbCiAgICAgICAgICJbdDFdXG4gIGV4cGVjdGVkOiBPS1xuIiwKLSAgICAgICAg
IiAgW3QxX2FdXG4gICAgZXhwZWN0ZWQ6IEZBSUxcbiAgICBtZXNzYWdlOiB0MV9hX21lc3NhZ2Vc
biIsCi0gICAgICAgICIgIFt0MV9iXVxuICAgIGV4cGVjdGVkOiBQQVNTXG4gICAgbWVzc2FnZTog
dDFfYl9tZXNzYWdlXG4iLAotICAgICAgICAiICBbdDFfY11cbiAgICBleHBlY3RlZDogVElNRU9V
VFxuICAgIG1lc3NhZ2U6IHQxX2NfbWVzc2FnZVxuIiwKKyAgICAgICAgIiAgW3QxX2FdXG4gICAg
ZXhwZWN0ZWQ6IEZBSUxcbiIsCisgICAgICAgICIgIFt0MV9iXVxuICAgIGV4cGVjdGVkOiBQQVNT
XG4iLAorICAgICAgICAiICBbdDFfY11cbiAgICBleHBlY3RlZDogVElNRU9VVFxuIiwKKyAgICBd
CisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsid3B0X2xvZyJdID09IFsKKyAgICAg
ICAgInQxX2E6IHQxX2FfbWVzc2FnZVxuIiwKKyAgICAgICAgInQxX2I6IHQxX2JfbWVzc2FnZVxu
IiwKKyAgICAgICAgInQxX2M6IHQxX2NfbWVzc2FnZVxuIiwKICAgICBdCiAgICAgIyBUaGUgc3Rh
dHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBwYXNzIGJlY2F1c2UgdGhlIHN1YnRl
c3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVjdGVkLgpAQCAtMzE2LDkgKzMzMiwxMiBA
QCBkZWYgdGVzdF91bmV4cGVjdGVkX3N1YnRlc3RfcGFzcyhjYXBmZCk6CiAKICAgICB0ZXN0X29i
aiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgdDFfYXJ0aWZhY3RzID0gdGVzdF9v
YmpbImFydGlmYWN0cyJdCi0gICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sibG9nIl0gPT0gWworICAg
IGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxfbWV0YWRhdGEiXSA9PSBbCiAgICAgICAg
ICJbdDFdXG4gIGV4cGVjdGVkOiBQQVNTXG4iLAotICAgICAgICAiICBbdDFfYV1cbiAgICBleHBl
Y3RlZDogUEFTU1xuICAgIG1lc3NhZ2U6IHQxX2FfbWVzc2FnZVxuIiwKKyAgICAgICAgIiAgW3Qx
X2FdXG4gICAgZXhwZWN0ZWQ6IFBBU1NcbiIsCisgICAgXQorICAgIGFzc2VydCB0MV9hcnRpZmFj
dHNbIndwdF9sb2ciXSA9PSBbCisgICAgICAgICJ0MV9hOiB0MV9hX21lc3NhZ2VcbiIsCiAgICAg
XQogICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRy
dWUiXQogICAgICMgU2luY2UgdGhlIHN1YnRlc3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZh
aWwgdGhlIHRlc3QuIEJ1dCB3ZSByZXBvcnQKQEAgLTQyNiw4ICs0NDUsOCBAQCBkZWYgdGVzdF9m
bGFreV90ZXN0X2V4cGVjdGVkKGNhcGZkKToKICAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0
ZXN0cyJdWyJ0MSJdCiAgICAgIyBUaGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBj
aGFuZ2luZyBFUlJPUi0+RkFJTCBhbmQgT0stPlBBU1MKICAgICBhc3NlcnQgdGVzdF9vYmpbImFj
dHVhbCJdID09ICJGQUlMIgotICAgICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29u
Y2F0ZW5hdGVkIHRvZ2V0aGVyIGludG8gZXhwZWN0ZWQuCi0gICAgYXNzZXJ0IHRlc3Rfb2JqWyJl
eHBlY3RlZCJdID09ICJQQVNTIEZBSUwgVElNRU9VVCIKKyAgICAjIEFsbCB0aGUgcG9zc2libGUg
c3RhdHVzZXMgYXJlIG1lcmdlZCBhbmQgc29ydGVkIHRvZ2V0aGVyIGludG8gZXhwZWN0ZWQuCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJGQUlMIFBBU1MgVElNRU9VVCIKICAg
ICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lvbiBvciB1bmV4cGVjdGVkIGJlY2F1c2UgdGhl
IGFjdHVhbCBzdGF0dXMgaXMgb25lCiAgICAgIyBvZiB0aGUgZXhwZWN0ZWQgb25lcwogICAgIGFz
c2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRlc3Rfb2JqCkBAIC00NjIsNyArNDgxLDcgQEAg
ZGVmIHRlc3RfZmxha3lfdGVzdF91bmV4cGVjdGVkKGNhcGZkKToKICAgICB0ZXN0X29iaiA9IG91
dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgIyBUaGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBh
bGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBhbmQgT0stPlBBU1MKICAgICBhc3NlcnQg
dGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgotICAgICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0
dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGludG8gZXhwZWN0ZWQuCisgICAgIyBBbGwg
dGhlIHBvc3NpYmxlIHN0YXR1c2VzIGFyZSBtZXJnZWQgYW5kIHNvcnRlZCB0b2dldGhlciBpbnRv
IGV4cGVjdGVkLgogICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFTUyBUSU1F
T1VUIgogICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jlc3Npb24gYW5kIHVuZXhwZWN0ZWQgYmVjYXVz
ZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKICAgICAjIG9uZSBvZiB0aGUgZXhwZWN0ZWQgb25l
cwpAQCAtNTM2LDYgKzU1NSwzOSBAQCBkZWYgdGVzdF9rbm93bl9pbnRlcm1pdHRlbnRfZW1wdHko
Y2FwZmQpOgogICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFTUyIKIAogCitk
ZWYgdGVzdF9rbm93bl9pbnRlcm1pdHRlbnRfZHVwbGljYXRlKGNhcGZkKToKKyAgICAjIFdlIGRv
bid0IHdhbnQgdG8gaGF2ZSBkdXBsaWNhdGUgc3RhdHVzZXMgaW4gdGhlIGZpbmFsICJleHBlY3Rl
ZCIgZmllbGQuCisKKyAgICAjIFNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJp
bmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0
X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1
dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFRoZXJlIGFyZSB0d28gZHVwbGljYXRp
b25zIGluIHRoaXMgaW5wdXQ6CisgICAgIyAxLiBrbm93bl9pbnRlcm1pdHRlbnQgYWxyZWFkeSBj
b250YWlucyBleHBlY3RlZDsKKyAgICAjIDIuIGJvdGggc3RhdHVzZXMgaW4ga25vd25faW50ZXJt
aXR0ZW50IG1hcCB0byBGQUlMIGluIENocm9taXVtLgorICAgICMgSW4gdGhlIGVuZCwgd2Ugc2hv
dWxkIG9ubHkgZ2V0IG9uZSBGQUlMIGluIENocm9taXVtICJleHBlY3RlZCIuCisgICAgbG9nZ2Vy
LnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dlci50
ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1Ii
LCBleHBlY3RlZD0iRVJST1IiLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJGQUlMIiwgIkVSUk9SIl0p
CisgICAgbG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIENoZWNrIG5vdGhpbmcgZ290IG91dHB1
dCB0byBzdGRvdXQvc3RkZXJyLgorICAgICMgKE5vdGUgdGhhdCBtb3psb2cgb3V0cHV0cyBleGNl
cHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0gY2FwZmQu
cmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFzc2VydCBj
YXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgQ2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQgb2YgdGhl
IGZvcm1hdHRlci4KKyAgICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNvbi5s
b2FkKG91dHB1dCkKKworICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0K
KyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgICMgTm8gZHVwbGlj
YXRlICJGQUlMIiBpbiAiZXhwZWN0ZWQiLgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQi
XSA9PSAiRkFJTCIKKworCiBkZWYgdGVzdF9yZWZ0ZXN0X3NjcmVlbnNob3RzKGNhcGZkKToKICAg
ICAjIHJlZnRlc3Rfc2NyZWVuc2hvdHMsIGlmIHByZXNlbnQsIHNob3VsZCBiZSBwbHVtYmVkIGlu
dG8gYXJ0aWZhY3RzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0
cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzJjZjRmZTc0YTMuLjAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9m
b3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9mb3JtYXR0ZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MWFiMGIwOTZlMS4u
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
cm1hdHRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy9jaHJvbWl1bS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3dwdHJlcG9ydC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9m
b3JtYXR0ZXJzL3dwdHNjcmVlbnNob3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0
cnVtZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0cnVtZW50cy5weQppbmRleCBhODg3Y2Y0ZmRh
NzIuLjRlM2UwMTNhZWM0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0cnVtZW50cy5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9y
dCB0aW1lCiBpbXBvcnQgdGhyZWFkaW5nCi1mcm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgUXVl
dWUKK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAKICIiIkluc3RydW1lbnRhdGlvbiBmb3IgbWVh
c3VyaW5nIGhpZ2gtbGV2ZWwgdGltZSBzcGVudCBvbiB2YXJpb3VzIHRhc2tzIGluc2lkZSB0aGUg
cnVubmVyLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IDMxYzU3ZTljYjczNC4uMmY3
ZjUzMzliNmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weQpAQCAtMSw4ICsxLDYgQEAKIGlt
cG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWZyb20gc2l4IGltcG9ydCBz
dHJpbmdfdHlwZXMsIHRleHRfdHlwZQotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9y
dCB1cmxqb2luCi0KK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLndw
dG1hbmlmZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKIGZyb20gLndwdG1hbmlmZXN0LmJhY2tl
bmRzLmJhc2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAtNDksNyArNDcsNyBAQCBkZWYgbGlzdF9w
cm9wKG5hbWUsIG5vZGUpOgogICAgICIiIkxpc3QgcHJvcGVydHkiIiIKICAgICB0cnk6CiAgICAg
ICAgIGxpc3RfcHJvcCA9IG5vZGUuZ2V0KG5hbWUpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGlz
dF9wcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwg
c3RyKToKICAgICAgICAgICAgIHJldHVybiBbbGlzdF9wcm9wXQogICAgICAgICByZXR1cm4gbGlz
dChsaXN0X3Byb3ApCiAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNTksNyArNTcsNyBAQCBkZWYg
bGlzdF9wcm9wKG5hbWUsIG5vZGUpOgogZGVmIHN0cl9wcm9wKG5hbWUsIG5vZGUpOgogICAgIHRy
eToKICAgICAgICAgcHJvcCA9IG5vZGUuZ2V0KG5hbWUpCi0gICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKHByb3AsIHN0cmluZ190eXBlcyk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHByb3As
IHN0cik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIHJldHVybiBwcm9w
CiAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNzAsNyArNjgsNyBAQCBkZWYgdGFncyhub2RlKToK
ICAgICAiIiJTZXQgb2YgdGFncyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIi
CiAgICAgdHJ5OgogICAgICAgICB2YWx1ZSA9IG5vZGUuZ2V0KCJ0YWdzIikKLSAgICAgICAgaWYg
aXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1
ZSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiB7dmFsdWV9CiAgICAgICAgIHJldHVybiBzZXQo
dmFsdWUpCiAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNzksNyArNzcsNyBAQCBkZWYgdGFncyhu
b2RlKToKIAogZGVmIHByZWZzKG5vZGUpOgogICAgIGRlZiB2YWx1ZShpbmlfdmFsdWUpOgotICAg
ICAgICBpZiBpc2luc3RhbmNlKGluaV92YWx1ZSwgdGV4dF90eXBlKToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShpbmlfdmFsdWUsIHN0cik6CiAgICAgICAgICAgICByZXR1cm4gdHVwbGUocHJlZl9w
aWVjZS5zdHJpcCgpIGZvciBwcmVmX3BpZWNlIGluIGluaV92YWx1ZS5zcGxpdCgnOicsIDEpKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBiZSB0aGluZ3MgbGlrZSBA
UmVzZXQsIHdoaWNoIGFyZSBhcHBhcmVudGx5IHR5cGUgJ29iamVjdCcKQEAgLTg3LDcgKzg1LDcg
QEAgZGVmIHByZWZzKG5vZGUpOgogCiAgICAgdHJ5OgogICAgICAgICBub2RlX3ByZWZzID0gbm9k
ZS5nZXQoInByZWZzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX3ByZWZzLCB0ZXh0X3R5
cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfcHJlZnMsIHN0cik6CiAgICAgICAgICAg
ICBydiA9IGRpY3QodmFsdWUobm9kZV9wcmVmcykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBydiA9IGRpY3QodmFsdWUoaXRlbSkgZm9yIGl0ZW0gaW4gbm9kZV9wcmVmcykKQEAgLTk5LDcg
Kzk3LDcgQEAgZGVmIHByZWZzKG5vZGUpOgogZGVmIHNldF9wcm9wKG5hbWUsIG5vZGUpOgogICAg
IHRyeToKICAgICAgICAgbm9kZV9pdGVtcyA9IG5vZGUuZ2V0KG5hbWUpCi0gICAgICAgIGlmIGlz
aW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShu
b2RlX2l0ZW1zLCBzdHIpOgogICAgICAgICAgICAgcnYgPSB7bm9kZV9pdGVtc30KICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHJ2ID0gc2V0KG5vZGVfaXRlbXMpCkBAIC0xMTIsNyArMTEwLDcg
QEAgZGVmIGxlYWtfdGhyZXNob2xkKG5vZGUpOgogICAgIHJ2ID0ge30KICAgICB0cnk6CiAgICAg
ICAgIG5vZGVfaXRlbXMgPSBub2RlLmdldCgibGVhay10aHJlc2hvbGQiKQotICAgICAgICBpZiBp
c2luc3RhbmNlKG5vZGVfaXRlbXMsIHRleHRfdHlwZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bm9kZV9pdGVtcywgc3RyKToKICAgICAgICAgICAgIG5vZGVfaXRlbXMgPSBbbm9kZV9pdGVtc10K
ICAgICAgICAgZm9yIGl0ZW0gaW4gbm9kZV9pdGVtczoKICAgICAgICAgICAgIHByb2Nlc3MsIHZh
bHVlID0gaXRlbS5yc3BsaXQoIjoiLCAxKQpAQCAtMTY5LDcgKzE2Nyw3IEBAIGRlZiBmdXp6eV9w
cm9wKG5vZGUpOgogICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAg
dmFsdWUgPSBbdmFsdWVdCiAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6Ci0gICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKGl0ZW0sIHRleHRfdHlwZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0
ZW0sIHN0cik6CiAgICAgICAgICAgICBydi5hcHBlbmQoaXRlbSkKICAgICAgICAgICAgIGNvbnRp
bnVlCiAgICAgICAgIHBhcnRzID0gaXRlbS5yc3BsaXQoIjoiLCAxKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1
ZGUucHkKaW5kZXggNzliNWIxOWIzYTNmLi45NzM0OGU2ZDUyZjkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5j
bHVkZS5weQpAQCAtNiw4ICs2LDcgQEAgYmUgaW5jbHVkZWQgb3IgZXhjbHVkZWQuCiAiIiIKIGlt
cG9ydCBnbG9iCiBpbXBvcnQgb3MKLWZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKLWZyb20gc2l4
Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHVybHNwbGl0Citmcm9tIHVybGxp
Yi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHVybHNwbGl0CiAKIGZyb20gLndwdG1hbmlmZXN0Lm5v
ZGUgaW1wb3J0IERhdGFOb2RlCiBmcm9tIC53cHRtYW5pZmVzdC5iYWNrZW5kcyBpbXBvcnQgY29u
ZGl0aW9uYWwKQEAgLTk1LDcgKzk0LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0
SXRlbSk6CiAgICAgICAgIGlmIHBhdGhzOgogICAgICAgICAgICAgdXJscyA9IFtdCiAgICAgICAg
ICAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRh
dGEgaW4gaXRlcml0ZW1zKHRlc3RfbWFuaWZlc3RzKToKKyAgICAgICAgICAgICAgICBmb3IgbWFu
aWZlc3QsIGRhdGEgaW4gdGVzdF9tYW5pZmVzdHMuaXRlbXMoKToKICAgICAgICAgICAgICAgICAg
ICAgZm91bmQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICByZWxfcGF0aCA9IG9zLnBhdGgu
cmVscGF0aChwYXRoLCBkYXRhWyJ0ZXN0c19wYXRoIl0pCiAgICAgICAgICAgICAgICAgICAgIGl0
ZXJhdG9yID0gbWFuaWZlc3QuaXRlcnBhdGggaWYgb3MucGF0aC5pc2ZpbGUocGF0aCkgZWxzZSBt
YW5pZmVzdC5pdGVyZGlyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKaW5kZXggMTI5NDU3YjNmZDEyLi41
YmNjYWEyZDJhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdHVwZGF0ZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKQEAgLTEsOSArMSw4IEBACiBmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgb3MKLWZyb20gc2l4Lm1v
dmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbiwgdXJsc3BsaXQKK2Zyb20gdXJsbGliLnBh
cnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFt
ZWR0dXBsZSwgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG1hdGggaW1wb3J0IGNlaWwKLWZyb20g
c2l4IGltcG9ydCBpbnRlZ2VyX3R5cGVzLCBpdGVya2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1z
LCBzdHJpbmdfdHlwZXMsIHRleHRfdHlwZQogCiBmcm9tIC53cHRtYW5pZmVzdCBpbXBvcnQgc2Vy
aWFsaXplCiBmcm9tIC53cHRtYW5pZmVzdC5ub2RlIGltcG9ydCAoRGF0YU5vZGUsIENvbmRpdGlv
bmFsTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUsCkBAIC03Niw3ICs3NSw3IEBAIGNsYXNzIFVw
ZGF0ZVByb3BlcnRpZXMob2JqZWN0KToKICAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fY2xh
c3NlcwogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICBmb3IgbmFtZSBpbiBpdGVy
a2V5cyhzZWxmLl9jbGFzc2VzKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fY2xhc3Nlcy5r
ZXlzKCk6CiAgICAgICAgICAgICB5aWVsZCBnZXRhdHRyKHNlbGYsIG5hbWUpCiAKIApAQCAtMzEz
LDggKzMxMiw4IEBAIGRlZiBidWlsZF9jb25kaXRpb25hbF90cmVlKF8sIHJ1bl9pbmZvX3Byb3Bl
cnRpZXMsIHJlc3VsdHMpOgogCiBkZWYgYnVpbGRfdW5jb25kaXRpb25hbF90cmVlKF8sIHJ1bl9p
bmZvX3Byb3BlcnRpZXMsIHJlc3VsdHMpOgogICAgIHJvb3QgPSBleHBlY3RlZHRyZWUuTm9kZShO
b25lLCBOb25lKQotICAgIGZvciBydW5faW5mbywgdmFsdWVzIGluIGl0ZXJpdGVtcyhyZXN1bHRz
KToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXModmFsdWVzKToKKyAgICBm
b3IgcnVuX2luZm8sIHZhbHVlcyBpbiByZXN1bHRzLml0ZW1zKCk6CisgICAgICAgIGZvciB2YWx1
ZSwgY291bnQgaW4gdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgICAgICByb290LnJlc3VsdF92YWx1
ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHJvb3QucnVuX2luZm8uYWRkKHJ1bl9pbmZvKQog
ICAgIHJldHVybiByb290CkBAIC00MTEsNyArNDEwLDcgQEAgY2xhc3MgUHJvcGVydHlVcGRhdGUo
b2JqZWN0KToKICAgICAgICAgZm9yIGUgaW4gZXJyb3JzOgogICAgICAgICAgICAgaWYgZGlzYWJs
ZV9pbnRlcm1pdHRlbnQ6CiAgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gZS5jb25kLmNoaWxk
cmVuWzBdIGlmIGUuY29uZCBlbHNlIE5vbmUKLSAgICAgICAgICAgICAgICBtc2cgPSBkaXNhYmxl
X2ludGVybWl0dGVudCBpZiBpc2luc3RhbmNlKGRpc2FibGVfaW50ZXJtaXR0ZW50LCBzdHJpbmdf
dHlwZXMrKHRleHRfdHlwZSwpKSBlbHNlICJ1bnN0YWJsZSIKKyAgICAgICAgICAgICAgICBtc2cg
PSBkaXNhYmxlX2ludGVybWl0dGVudCBpZiBpc2luc3RhbmNlKGRpc2FibGVfaW50ZXJtaXR0ZW50
LCBzdHIpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQoImRp
c2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5ld19k
aXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6CkBAIC00OTksNyArNDk4LDcgQEAgY2xh
c3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IHJ1bl9pbmZvIGluIG5vZGUucnVuX2luZm99CiAKICAgICAgICAgbm9kZV9ieV9ydW5faW5mbyA9
IHtydW5faW5mbzogbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocnVuX2lu
Zm8sIG5vZGUpIGluIGl0ZXJpdGVtcyhydW5faW5mb19pbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKHJ1bl9pbmZvLCBub2RlKSBpbiBydW5faW5mb19pbmRleC5pdGVtcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5yZXN1bHRfdmFsdWVzfQogCiAg
ICAgICAgIHJ1bl9pbmZvX2J5X2NvbmRpdGlvbiA9IHNlbGYucnVuX2luZm9fYnlfY29uZGl0aW9u
KHJ1bl9pbmZvX2luZGV4LApAQCAtNTEyLDcgKzUxMSw3IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRl
KG9iamVjdCk6CiAgICAgICAgICAgICAjIHVzaW5nIHRoZSBwcm9wZXJ0aWVzIHdlJ3ZlIHNwZWNp
ZmllZCBhbmQgbm90IG1hdGNoaW5nIGFueSBydW5faW5mbwogICAgICAgICAgICAgdG9wX2xldmVs
X3Byb3BzLCBkZXBlbmRlbnRfcHJvcHMgPSBzZWxmLm5vZGUucm9vdC5ydW5faW5mb19wcm9wZXJ0
aWVzCiAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGllcyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMp
Ci0gICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKGRlcGVuZGVudF9wcm9wcyk6Cisg
ICAgICAgICAgICBmb3IgaXRlbSBpbiBkZXBlbmRlbnRfcHJvcHMudmFsdWVzKCk6CiAgICAgICAg
ICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCiAgICAgICAgICAgICBmb3Ig
Y29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoKICAgICAgICAgICAgICAgICBpZiAoKG5v
dCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9wZXJ0aWVzKSBhbmQKQEAg
LTY5NSw3ICs2OTQsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZShQcm9wZXJ0eVVwZGF0ZSk6CiAg
ICAgICAgICAgICByYWlzZSBDb25kaXRpb25FcnJvcgogCiAgICAgICAgIGNvdW50cyA9IHt9Ci0g
ICAgICAgIGZvciBzdGF0dXMsIGNvdW50IGluIGl0ZXJpdGVtcyhuZXcpOgorICAgICAgICBmb3Ig
c3RhdHVzLCBjb3VudCBpbiBuZXcuaXRlbXMoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
c3RhdHVzLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAgY291bnRzW3N0YXR1c1swXV0gPSBjb3Vu
dAogICAgICAgICAgICAgICAgIGNvdW50cy51cGRhdGUoe2ludGVybWl0dGVudDogMCBmb3IgaW50
ZXJtaXR0ZW50IGluIHN0YXR1c1sxOl0gaWYgaW50ZXJtaXR0ZW50IG5vdCBpbiBjb3VudHN9KQpA
QCAtNzA5LDI0ICs3MDgsMjcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGUoUHJvcGVydHlVcGRhdGUp
OgogICAgICAgICAjIENvdW50cyB3aXRoIDAgYXJlIGNvbnNpZGVyZWQgaW50ZXJtaXR0ZW50Lgog
ICAgICAgICBzdGF0dXNlcyA9IFsiT0siLCAiUEFTUyIsICJGQUlMIiwgIkVSUk9SIiwgIlRJTUVP
VVQiLCAiQ1JBU0giXQogICAgICAgICBzdGF0dXNfcHJpb3JpdHkgPSB7dmFsdWU6IGkgZm9yIGks
IHZhbHVlIGluIGVudW1lcmF0ZShzdGF0dXNlcyl9Ci0gICAgICAgIHNvcnRlZF9uZXcgPSBzb3J0
ZWQoaXRlcml0ZW1zKGNvdW50cyksIGtleT1sYW1iZGEgeDooLTEgKiB4WzFdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNf
cHJpb3JpdHkuZ2V0KHhbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlbihzdGF0dXNfcHJpb3JpdHkpKSkpCisgICAgICAgIHNv
cnRlZF9uZXcgPSBzb3J0ZWQoY291bnRzLml0ZW1zKCksIGtleT1sYW1iZGEgeDooLTEgKiB4WzFd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNfcHJpb3JpdHkuZ2V0KHhbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzdGF0dXNfcHJpb3JpdHkpKSkpCiAgICAg
ICAgIGV4cGVjdGVkID0gW10KICAgICAgICAgZm9yIHN0YXR1cywgY291bnQgaW4gc29ydGVkX25l
dzoKICAgICAgICAgICAgICMgSWYgd2UgYXJlIG5vdCByZW1vdmluZyBleGlzdGluZyByZWNvcmRl
ZCBpbnRlcm1pdHRlbnRzLCB3aXRoIGEgY291bnQgb2YgMCwKICAgICAgICAgICAgICMgYWRkIHRo
ZW0gaW4gdG8gZXhwZWN0ZWQuCiAgICAgICAgICAgICBpZiBjb3VudCA+IDAgb3Igbm90IHNlbGYu
cmVtb3ZlX2ludGVybWl0dGVudDoKICAgICAgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoc3Rh
dHVzKQorCisgICAgICAgICMgSWYgdGhlIG5ldyBpbnRlcm1pdHRlbnQgaXMgYSBzdWJzZXQgb2Yg
dGhlIGV4aXN0aW5nIG9uZSwganVzdCB1c2UgdGhlIGV4aXN0aW5nIG9uZQorICAgICAgICAjIFRo
aXMgcHJldmVudHMgZnJlcXVlbnQgZmxpcC1mbG9wcGluZyBvZiByZXN1bHRzIGJldHdlZW4gZS5n
LiBbT0ssIFRJTUVPVVRdIGFuZAorICAgICAgICAjIFtUSU1FT1VULCBPS10KKyAgICAgICAgaWYg
Y3VycmVudCBhbmQgc2V0KGV4cGVjdGVkKS5pc3N1YnNldChzZXQoY3VycmVudCkpOgorICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnQKKwogICAgICAgICBpZiBzZWxmLnVwZGF0ZV9pbnRlcm1pdHRl
bnQ6CiAgICAgICAgICAgICBpZiBsZW4oZXhwZWN0ZWQpID09IDE6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4cGVjdGVkWzBdCiAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWQKIAotICAgICAg
ICAjIElmIG5vdGhpbmcgaGFzIGNoYW5nZWQgYW5kIG5vdCBzZWxmLnVwZGF0ZV9pbnRlcm1pdHRl
bnQsIHByZXNlcnZlIGV4aXN0aW5nCi0gICAgICAgICMgaW50ZXJtaXR0ZW50LgotICAgICAgICBp
ZiBzZXQoZXhwZWN0ZWQpLmlzc3Vic2V0KHNldChjdXJyZW50KSk6Ci0gICAgICAgICAgICByZXR1
cm4gY3VycmVudAogICAgICAgICAjIElmIHdlIGFyZSBub3QgdXBkYXRpbmcgaW50ZXJtaXR0ZW50
cywgcmV0dXJuIHRoZSBzdGF0dXMgd2l0aCB0aGUgaGlnaGVzdCBvY2N1cmVuY2UuCiAgICAgICAg
IHJldHVybiBleHBlY3RlZFswXQogCkBAIC03NzQsNyArNzc2LDcgQEAgY2xhc3MgQXBwZW5kT25s
eUxpc3RVcGRhdGUoUHJvcGVydHlVcGRhdGUpOgogICAgICAgICBmb3IgaXRlbSBpbiBuZXc6CiAg
ICAgICAgICAgICBpZiBpdGVtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShpdGVtLCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKGl0ZW0sIHN0cik6CiAgICAgICAgICAgICAgICAgcnYuYWRkKGl0ZW0p
CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJ2IHw9IGl0ZW0KQEAgLTgyMiw3
ICs4MjQsNyBAQCBjbGFzcyBMZWFrVGhyZXNob2xkVXBkYXRlKFByb3BlcnR5VXBkYXRlKToKICAg
ICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHRvX2luaV92YWx1ZShzZWxmLCBkYXRhKToK
LSAgICAgICAgcmV0dXJuIFsiJXM6JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBzb3J0ZWQoaXRlcml0
ZW1zKGRhdGEpKV0KKyAgICAgICAgcmV0dXJuIFsiJXM6JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBz
b3J0ZWQoZGF0YS5pdGVtcygpKV0KIAogICAgIGRlZiBmcm9tX2luaV92YWx1ZShzZWxmLCBkYXRh
KToKICAgICAgICAgcnYgPSB7fQpAQCAtODk3LDEwICs4OTksMTAgQEAgZGVmIG1ha2VfZXhwcihw
cm9wX3NldCwgcmhzKToKIAogCiBkZWYgbWFrZV9ub2RlKHZhbHVlKToKLSAgICBpZiBpc2luc3Rh
bmNlKHZhbHVlLCBpbnRlZ2VyX3R5cGVzKyhmbG9hdCwpKToKKyAgICBpZiBpc2luc3RhbmNlKHZh
bHVlLCAoaW50LCBmbG9hdCwpKToKICAgICAgICAgbm9kZSA9IE51bWJlck5vZGUodmFsdWUpCi0g
ICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUpOgotICAgICAgICBub2RlID0gU3Ry
aW5nTm9kZSh0ZXh0X3R5cGUodmFsdWUpKQorICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3Ry
KToKKyAgICAgICAgbm9kZSA9IFN0cmluZ05vZGUoc3RyKHZhbHVlKSkKICAgICBlbGlmIGhhc2F0
dHIodmFsdWUsICJfX2l0ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQogICAgICAg
ICBmb3IgaXRlbSBpbiB2YWx1ZToKQEAgLTkwOSwxMCArOTExLDEwIEBAIGRlZiBtYWtlX25vZGUo
dmFsdWUpOgogCiAKIGRlZiBtYWtlX3ZhbHVlX25vZGUodmFsdWUpOgotICAgIGlmIGlzaW5zdGFu
Y2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkpOgorICAgIGlmIGlzaW5zdGFuY2UodmFs
dWUsIChpbnQsIGZsb2F0LCkpOgogICAgICAgICBub2RlID0gVmFsdWVOb2RlKHZhbHVlKQotICAg
IGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90eXBlKToKLSAgICAgICAgbm9kZSA9IFZhbHVl
Tm9kZSh0ZXh0X3R5cGUodmFsdWUpKQorICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToK
KyAgICAgICAgbm9kZSA9IFZhbHVlTm9kZShzdHIodmFsdWUpKQogICAgIGVsaWYgaGFzYXR0cih2
YWx1ZSwgIl9faXRlcl9fIik6CiAgICAgICAgIG5vZGUgPSBMaXN0Tm9kZSgpCiAgICAgICAgIGZv
ciBpdGVtIGluIHZhbHVlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CmluZGV4IGFiOGQ0NzQwZjNmYy4uZGRjNDMzZDhhYTkz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L21ldGFkYXRhLnB5CkBAIC01LDggKzUsOCBAQCBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBkZWZhdWx0ZGljdCwgbmFtZWR0dXBsZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3Ry
dWN0dXJlZGxvZwotZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9zdHIsIGVuc3VyZV90ZXh0LCBpdGVy
aXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0ZXh0X3R5cGUKLWZyb20gc2l4Lm1vdmVzIGlt
cG9ydCBpbnRlcm4sIHJhbmdlCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3N0ciwgZW5zdXJlX3Rl
eHQKK2Zyb20gc3lzIGltcG9ydCBpbnRlcm4KIAogZnJvbSAuIGltcG9ydCBtYW5pZmVzdHVwZGF0
ZQogZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgUnVu
SW5mbyhvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxfcmVwciA9PSBvdGhl
ci5jYW5vbmljYWxfcmVwcgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CisgICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuZGF0YS5pdGVtcygpOgogICAgICAgICAgICAgeWllbGQga2V5LCB2YWx1ZQog
CiAgICAgZGVmIGl0ZW1zKHNlbGYpOgotICAgICAgICByZXR1cm4gbGlzdChpdGVyaXRlbXMoc2Vs
ZikpCisgICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRlbXMoKSkKIAogCiBkZWYgdXBkYXRlX2V4
cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3QsIGxvZ19maWxlX25hbWVzLApAQCAtMTI5LDcg
KzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5nZXMobWFuaWZlc3RzLCBjaGFuZ2VfZGF0YSwg
ZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hhbmdlZCA9IHNldChmaWxlc19jaGFuZ2VkKQog
CiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAgICBmb3IgbWFuaWZlc3QsIHBhdGhzIGluIGl0
ZXJpdGVtcyhtYW5pZmVzdHMpOgorICAgIGZvciBtYW5pZmVzdCwgcGF0aHMgaW4gbWFuaWZlc3Rz
Lml0ZW1zKCk6CiAgICAgICAgIGlmIHBhdGhzWyJ1cmxfYmFzZSJdID09ICIvIjoKICAgICAgICAg
ICAgIHJvb3RfbWFuaWZlc3QgPSBtYW5pZmVzdAogICAgICAgICAgICAgYnJlYWsKQEAgLTI0MCw3
ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQoZGF0YSk6CiBkZWYgdW5wYWNrX3Jlc3VsdChkYXRh
KToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGludCk6CiAgICAgICAgIHJldHVybiAoc3RhdHVz
X2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0gICAgaWYgaXNpbnN0YW5jZShkYXRhLCB0ZXh0X3R5
cGUpOgorICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKICAgICAgICAgcmV0dXJuIChkYXRh
LCBOb25lKQogICAgICMgVW5wYWNrIG11bHRpcGxlIHN0YXR1c2VzIGludG8gYSB0dXBsZSB0byBi
ZSB1c2VkIGluIHRoZSBSZXN1bHRzIG5hbWVkIHR1cGxlIGJlbG93LAogICAgICMgc2VwYXJhdGlu
ZyBgc3RhdHVzYCBhbmQgYGtub3duX2ludGVybWl0dGVudGAuCkBAIC0yNTksNyArMjU5LDcgQEAg
ZGVmIGxvYWRfdGVzdF9kYXRhKHRlc3RfcGF0aHMpOgogICAgIG1hbmlmZXN0cyA9IG1hbmlmZXN0
X2xvYWRlci5sb2FkKCkKIAogICAgIGlkX3Rlc3RfbWFwID0ge30KLSAgICBmb3IgdGVzdF9tYW5p
ZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0cyk6CisgICAgZm9yIHRlc3RfbWFuaWZl
c3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVtcygpOgogICAgICAgICBpZF90ZXN0X21hcC51cGRh
dGUoY3JlYXRlX3Rlc3RfdHJlZShwYXRoc1sibWV0YWRhdGFfcGF0aCJdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21hbmlmZXN0KSkKICAgICByZXR1
cm4gaWRfdGVzdF9tYXAKQEAgLTI4NywxMCArMjg3LDEwIEBAIGRlZiB1cGRhdGVfcmVzdWx0cyhp
ZF90ZXN0X21hcCwKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2ludGVybWl0dGVudCwKICAg
ICAgICAgICAgICAgICAgICB1cGRhdGVfaW50ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAg
IHJlbW92ZV9pbnRlcm1pdHRlbnQpOgotICAgIHRlc3RfZmlsZV9pdGVtcyA9IHNldChpdGVydmFs
dWVzKGlkX3Rlc3RfbWFwKSkKKyAgICB0ZXN0X2ZpbGVfaXRlbXMgPSBzZXQoaWRfdGVzdF9tYXAu
dmFsdWVzKCkpCiAKICAgICBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUgPSB7fQotICAgIGZvciB0
ZXN0X3R5cGUsIHRlc3RfY2xzIGluIGl0ZXJpdGVtcyh3cHR0ZXN0Lm1hbmlmZXN0X3Rlc3RfY2xz
KToKKyAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X2NscyBpbiB3cHR0ZXN0Lm1hbmlmZXN0X3Rlc3Rf
Y2xzLml0ZW1zKCk6CiAgICAgICAgIGlmIHRlc3RfY2xzLnJlc3VsdF9jbHM6CiAgICAgICAgICAg
ICBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGVbKHRlc3RfdHlwZSwgRmFsc2UpXSA9IHRlc3RfY2xz
LnJlc3VsdF9jbHMuZGVmYXVsdF9leHBlY3RlZAogICAgICAgICBpZiB0ZXN0X2Nscy5zdWJ0ZXN0
X3Jlc3VsdF9jbHM6CkBAIC00MzEsNyArNDMxLDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9i
amVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJsc2FuX2xlYWsiXShpdGVtKQogCiAgICAg
ICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3psZWFrIiwge30pCi0gICAgICAgIGZvciBz
Y29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMobW96bGVha19kYXRhKToKKyAgICAgICAgZm9y
IHNjb3BlLCBzY29wZV9kYXRhIGluIG1vemxlYWtfZGF0YS5pdGVtcygpOgogICAgICAgICAgICAg
Zm9yIGtleSwgYWN0aW9uIGluIFsoIm9iamVjdHMiLCAibW96bGVha19vYmplY3QiKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0b3RhbCIsICJtb3psZWFrX3RvdGFsIildOgog
ICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNjb3BlX2RhdGEuZ2V0KGtleSwgW10pOgpAQCAt
NjY4LDExICs2NjgsMTEgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9iamVjdCk6CiAgICAgICAgICMg
UmV0dXJuIHN1YnRlc3Qgbm9kZXMgcHJlc2VudCBpbiB0aGUgZXhwZWN0ZWQgZmlsZSwgYnV0IG1p
c3NpbmcgZnJvbSB0aGUgZGF0YQogICAgICAgICBydiA9IFtdCiAKLSAgICAgICAgZm9yIHRlc3Rf
aWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEpOgorICAgICAgICBmb3IgdGVzdF9p
ZCwgc3VidGVzdHMgaW4gc2VsZi5kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICB0ZXN0ID0gZXhw
ZWN0ZWQuZ2V0X3Rlc3QoZW5zdXJlX3RleHQodGVzdF9pZCkpCiAgICAgICAgICAgICBpZiBub3Qg
dGVzdDoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgc2Vlbl9zdWJ0ZXN0
cyA9IHNldChlbnN1cmVfdGV4dChpdGVtKSBmb3IgaXRlbSBpbiBpdGVya2V5cyhzdWJ0ZXN0cykg
aWYgaXRlbSBpcyBub3QgTm9uZSkKKyAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoZW5z
dXJlX3RleHQoaXRlbSkgZm9yIGl0ZW0gaW4gc3VidGVzdHMua2V5cygpIGlmIGl0ZW0gaXMgbm90
IE5vbmUpCiAgICAgICAgICAgICBtaXNzaW5nX3N1YnRlc3RzID0gc2V0KHRlc3Quc3VidGVzdHMu
a2V5cygpKSAtIHNlZW5fc3VidGVzdHMKICAgICAgICAgICAgIGZvciBpdGVtIGluIG1pc3Npbmdf
c3VidGVzdHM6CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3VidGVzdCA9IHRlc3QuZ2V0X3N1
YnRlc3QoaXRlbSkKQEAgLTY5MSw3ICs2OTEsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0
KToKICAgICAgICAgIyBzaW5jZSByZW1vdmluZyB0aGVzZSBtYXkgYmUgaW5hcHByb3ByaWF0ZQog
ICAgICAgICB0b3BfbGV2ZWxfcHJvcHMsIGRlcGVuZGVudF9wcm9wcyA9IHVwZGF0ZV9wcm9wZXJ0
aWVzCiAgICAgICAgIGFsbF9wcm9wZXJ0aWVzID0gc2V0KHRvcF9sZXZlbF9wcm9wcykKLSAgICAg
ICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJvcHMpOgorICAgICAgICBmb3Ig
aXRlbSBpbiBkZXBlbmRlbnRfcHJvcHMudmFsdWVzKCk6CiAgICAgICAgICAgICBhbGxfcHJvcGVy
dGllcyB8PSBzZXQoaXRlbSkKIAogICAgICAgICBmaWx0ZXJlZCA9IFtdCkBAIC03NDEsOSArNzQx
LDkgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X2V4cGVj
dGVkID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZCkKICAgICAgICAgICAgIGV4cGVjdGVkX2J5
X3Rlc3RbdGVzdF9pZF0gPSB0ZXN0X2V4cGVjdGVkCiAKLSAgICAgICAgZm9yIHRlc3RfaWQsIHRl
c3RfZGF0YSBpbiBpdGVyaXRlbXMoc2VsZi5kYXRhKToKKyAgICAgICAgZm9yIHRlc3RfaWQsIHRl
c3RfZGF0YSBpbiBzZWxmLmRhdGEuaXRlbXMoKToKICAgICAgICAgICAgIHRlc3RfaWQgPSBlbnN1
cmVfc3RyKHRlc3RfaWQpCi0gICAgICAgICAgICBmb3Igc3VidGVzdF9pZCwgcmVzdWx0c19saXN0
IGluIGl0ZXJpdGVtcyh0ZXN0X2RhdGEpOgorICAgICAgICAgICAgZm9yIHN1YnRlc3RfaWQsIHJl
c3VsdHNfbGlzdCBpbiB0ZXN0X2RhdGEuaXRlbXMoKToKICAgICAgICAgICAgICAgICBmb3IgcHJv
cCwgcnVuX2luZm8sIHZhbHVlIGluIHJlc3VsdHNfbGlzdDoKICAgICAgICAgICAgICAgICAgICAg
IyBTcGVjaWFsIGNhc2UgZGlyZWN0b3J5IG1ldGFkYXRhCiAgICAgICAgICAgICAgICAgICAgIGlm
IHN1YnRlc3RfaWQgaXMgTm9uZSBhbmQgdGVzdF9pZC5lbmRzd2l0aCgiX19kaXJfXyIpOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21wY29udGV4dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tcGNvbnRl
eHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNTBjMDQ3ODJh
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbXBjb250ZXh0LnB5CkBAIC0wLDAg
KzEsMTEgQEAKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKworX2NvbnRleHQgPSBOb25lCisKKwor
ZGVmIGdldF9jb250ZXh0KCk6CisgICAgZ2xvYmFsIF9jb250ZXh0CisKKyAgICBpZiBfY29udGV4
dCBpcyBOb25lOgorICAgICAgICBfY29udGV4dCA9IG11bHRpcHJvY2Vzc2luZy5nZXRfY29udGV4
dCgic3Bhd24iKQorICAgIHJldHVybiBfY29udGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Byb2Nlc3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQppbmRleCA4YTJiODk0Y2I3NGQu
LmQzZmYzODBhZDA4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKQEAgLTEsMTEgKzEsOCBAQAotaW1wb3J0IHN5cwotCiBp
bXBvcnQgc2l4CiAKIAogZGVmIGNhc3RfZW52KGVudik6Ci0gICAgIiIiRW5jb2RlIGFsbCB0aGUg
ZW52aXJvbm1lbnQgdmFsdWVzIGFzIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGZvciBlYWNoIFB5dGhv
biB2ZXJzaW9uCisgICAgIiIiRW5jb2RlIGFsbCB0aGUgZW52aXJvbm1lbnQgdmFsdWVzIGFzIHRo
ZSBhcHByb3ByaWF0ZSB0eXBlLgogICAgIFRoaXMgYXNzdW1lcyB0aGF0IGFsbCB0aGUgZGF0YSBp
cyBvciBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgVVRGOCIiIgogCi0gICAgZW52X3R5cGUgPSBzaXgu
ZW5zdXJlX2JpbmFyeSBpZiBzeXMudmVyc2lvbl9pbmZvWzBdIDwgMyBlbHNlIHNpeC5lbnN1cmVf
c3RyCi0gICAgcmV0dXJuIHtlbnZfdHlwZShrZXkpOiBlbnZfdHlwZSh2YWx1ZSkgZm9yIGtleSwg
dmFsdWUgaW4gc2l4Lml0ZXJpdGVtcyhlbnYpfQorICAgIHJldHVybiB7c2l4LmVuc3VyZV9zdHIo
a2V5KTogc2l4LmVuc3VyZV9zdHIodmFsdWUpIGZvciBrZXksIHZhbHVlIGluIGVudi5pdGVtcygp
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3By
b2R1Y3RzLnB5CmluZGV4IGFiZDg0MDk0YmIzMy4uN2JhMzA1Mzc5MDc4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvcHJvZHVjdHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBA
IC0xLDYgKzEsNSBAQAogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcAotZnJvbSBzaXggaW1w
b3J0IGl0ZXJpdGVtcwogCiBmcm9tIC5icm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKQEAg
LTQ1LDcgKzQ0LDcgQEAgY2xhc3MgUHJvZHVjdChvYmplY3QpOgogICAgICAgICBzZWxmLmdldF90
aW1lb3V0X211bHRpcGxpZXIgPSBnZXRhdHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBs
aWVyIl0pCiAKICAgICAgICAgc2VsZi5leGVjdXRvcl9jbGFzc2VzID0ge30KLSAgICAgICAgZm9y
IHRlc3RfdHlwZSwgY2xzX25hbWUgaW4gaXRlcml0ZW1zKGRhdGFbImV4ZWN1dG9yIl0pOgorICAg
ICAgICBmb3IgdGVzdF90eXBlLCBjbHNfbmFtZSBpbiBkYXRhWyJleGVjdXRvciJdLml0ZW1zKCk6
CiAgICAgICAgICAgICBjbHMgPSBnZXRhdHRyKG1vZHVsZSwgY2xzX25hbWUpCiAgICAgICAgICAg
ICBzZWxmLmV4ZWN1dG9yX2NsYXNzZXNbdGVzdF90eXBlXSA9IGNscwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvc3RhYmlsaXR5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQppbmRl
eCA4OGQxYzIzMmJmYjUuLjIyNjU1MjNlY2M4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0
YWJpbGl0eS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC01LDcgKzUsNiBA
QCBpbXBvcnQgaW8KIGltcG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERp
Y3QsIGRlZmF1bHRkaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQotZnJvbSBzaXgg
aW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgcmVhZGVyCiBmcm9tIG1vemxv
Zy5mb3JtYXR0ZXJzIGltcG9ydCBKU09ORm9ybWF0dGVyCkBAIC0xNDIsMTAgKzE0MSwxMCBAQCBk
ZWYgcHJvY2Vzc19yZXN1bHRzKGxvZywgaXRlcmF0aW9ucyk6CiAgICAgaGFuZGxlciA9IExvZ0hh
bmRsZXIoKQogICAgIHJlYWRlci5oYW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIp
CiAgICAgcmVzdWx0cyA9IGhhbmRsZXIucmVzdWx0cwotICAgIGZvciB0ZXN0X25hbWUsIHRlc3Qg
aW4gaXRlcml0ZW1zKHJlc3VsdHMpOgorICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0
cy5pdGVtcygpOgogICAgICAgICBpZiBpc19pbmNvbnNpc3RlbnQodGVzdFsic3RhdHVzIl0sIGl0
ZXJhdGlvbnMpOgogICAgICAgICAgICAgaW5jb25zaXN0ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBO
b25lLCB0ZXN0WyJzdGF0dXMiXSwgW10pKQotICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0
ZXN0IGluIGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJdKToKKyAgICAgICAgZm9yIHN1YnRlc3Rf
bmFtZSwgc3VidGVzdCBpbiB0ZXN0WyJzdWJ0ZXN0cyJdLml0ZW1zKCk6CiAgICAgICAgICAgICBp
ZiBpc19pbmNvbnNpc3RlbnQoc3VidGVzdFsic3RhdHVzIl0sIGl0ZXJhdGlvbnMpOgogICAgICAg
ICAgICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgc3VidGVzdF9uYW1lLCBz
dWJ0ZXN0WyJzdGF0dXMiXSwgc3VidGVzdFsibWVzc2FnZXMiXSkpCiAKQEAgLTIzNSw3ICsyMzQs
NyBAQCBkZWYgd3JpdGVfcmVzdWx0cyhsb2csIHJlc3VsdHMsIGl0ZXJhdGlvbnMsIHByX251bWJl
cj1Ob25lLCB1c2VfZGV0YWlscz1GYWxzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0cyIgaWYgbGVuKHJlc3VsdHMpID4gMQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICJ0ZXN0Iikp
CiAKLSAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKKyAgICBm
b3IgdGVzdF9uYW1lLCB0ZXN0IGluIHJlc3VsdHMuaXRlbXMoKToKICAgICAgICAgYmFzZXVybCA9
ICJodHRwOi8vdzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgogICAgICAgICBpZiAiaHR0cHMiIGlu
IG9zLnBhdGguc3BsaXRleHQodGVzdF9uYW1lKVswXS5zcGxpdCgiLiIpWzE6XToKICAgICAgICAg
ICAgIGJhc2V1cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCkBAIC0zMDUs
NyArMzA0LDcgQEAgZGVmIGdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCByZXBlYXRfcmVz
dGFydCwga3dhcmdzX2V4dHJhcyk6CiAgICAgZm9yIGt3YXJnc19leHRyYSBpbiBrd2FyZ3NfZXh0
cmFzOgogICAgICAgICBpZiBrd2FyZ3NfZXh0cmE6CiAgICAgICAgICAgICBmbGFnc19zdHJpbmcg
PSAiIHdpdGggZmxhZ3MgJXMiICUgIiAiLmpvaW4oCi0gICAgICAgICAgICAgICAgIiVzPSVzIiAl
IGl0ZW0gZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKGt3YXJnc19leHRyYSkpCisgICAgICAgICAgICAg
ICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4ga3dhcmdzX2V4dHJhLml0ZW1zKCkpCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBmbGFnc19zdHJpbmcgPSAiIgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0ZHJpdmVy
LWV4dHJhLmpzCmluZGV4IDljMGM2OWFmM2EzZi4uZTE1NjUyZGNkZmI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRy
aXZlci1leHRyYS5qcwpAQCAtMzQsNyArMzQsNyBAQAogICAgICAgICB9IGVsc2UgaWYgKGRhdGEu
dHlwZSA9PT0gInRlc3Rkcml2ZXItY29tcGxldGUiKSB7CiAgICAgICAgICAgICBjb25zdCBjbWRf
aWQgPSBkYXRhLmNtZF9pZDsKICAgICAgICAgICAgIGNvbnN0IFtvbl9zdWNjZXNzLCBvbl9mYWls
dXJlXSA9IHBlbmRpbmcuZ2V0KGNtZF9pZCk7Ci0gICAgICAgICAgICBwZW5kaW5nLmNsZWFyKGNt
ZF9pZCk7CisgICAgICAgICAgICBwZW5kaW5nLmRlbGV0ZShjbWRfaWQpOwogICAgICAgICAgICAg
Y29uc3QgcmVzb2x2ZXIgPSBkYXRhLnN0YXR1cyA9PT0gInN1Y2Nlc3MiID8gb25fc3VjY2VzcyA6
IG9uX2ZhaWx1cmU7CiAgICAgICAgICAgICByZXNvbHZlcihkYXRhKTsKICAgICAgICAgICAgIGlm
IChpc190ZXN0X2NvbnRleHQpIHsKQEAgLTE2OSw2ICsxNjksMTAgQEAKICAgICAgICAgcmV0dXJu
IGNyZWF0ZV9hY3Rpb24oImNsaWNrIiwge3NlbGVjdG9yLCBjb250ZXh0fSk7CiAgICAgfTsKIAor
ICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5kZWxldGVfYWxsX2Nvb2tpZXMgPSBmdW5j
dGlvbihjb250ZXh0PW51bGwpIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZV9hY3Rpb24oImRlbGV0
ZV9hbGxfY29va2llcyIsIHtjb250ZXh0fSk7CisgICAgfTsKKwogICAgIHdpbmRvdy50ZXN0X2Ry
aXZlcl9pbnRlcm5hbC5zZW5kX2tleXMgPSBmdW5jdGlvbihlbGVtZW50LCBrZXlzKSB7CiAgICAg
ICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0X3NlbGVjdG9yKGVsZW1lbnQpOwogICAgICAgICBjb25z
dCBjb250ZXh0ID0gZ2V0X2NvbnRleHQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm8uanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3Ny
ZXBvcnQtc2Vydm8uanMKaW5kZXggYTEwYjY5ZGY1NTA0Li40YTI3ZGMyN2VmNmYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC1zZXJ2by5qcworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm8uanMKQEAgLTEsNCArMSw0IEBACi12YXIgcHJv
cHMgPSB7b3V0cHV0OiUob3V0cHV0KWR9OwordmFyIHByb3BzID0ge291dHB1dDolKG91dHB1dClk
LCBkZWJ1ZzogJShkZWJ1ZylzfTsKIHZhciBzdGFydF9sb2MgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdhJyk7CiBzdGFydF9sb2MuaHJlZiA9IGxvY2F0aW9uLmhyZWY7CiBzZXR1cChwcm9wcyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm9kcml2ZXIu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm9kcml2ZXIuanMKaW5kZXgg
Yzg4ODQxMzYwNDcwLi43ODE5NTM4ZGJiOGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
aGFybmVzc3JlcG9ydC1zZXJ2b2RyaXZlci5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5l
c3NyZXBvcnQtc2Vydm9kcml2ZXIuanMKQEAgLTEsNCArMSw0IEBACi1zZXR1cCh7b3V0cHV0OiUo
b3V0cHV0KWR9KTsKK3NldHVwKHtvdXRwdXQ6JShvdXRwdXQpZCwgZGVidWc6ICUoZGVidWcpc30p
OwogCiBhZGRfY29tcGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbigpIHsKICAgICBhZGRfY29tcGxl
dGlvbl9jYWxsYmFjayhmdW5jdGlvbiAodGVzdHMsIHN0YXR1cykgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzCmluZGV4IDljZDY4MGUxNGFlZC4uZDM4NTY5MjQ0NWM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzCkBAIC03Myw2ICs3Myw3IEBAIHdpbmRvdy5fX3dwdHJ1bm5lcl9wcm9j
ZXNzX25leHRfZXZlbnQgPSBmdW5jdGlvbigpIHsKICAgdmFyIHByb3BzID0ge291dHB1dDogJShv
dXRwdXQpZCwKICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcjogJSh0aW1lb3V0X211
bHRpcGxpZXIpcywKICAgICAgICAgICAgICAgIGV4cGxpY2l0X3RpbWVvdXQ6ICUoZXhwbGljaXRf
dGltZW91dClzLAorICAgICAgICAgICAgICAgZGVidWc6ICUoZGVidWcpcywKICAgICAgICAgICAg
ICAgIG1lc3NhZ2VfZXZlbnRzOiBbImNvbXBsZXRpb24iXX07CiAKICAgYWRkX2NvbXBsZXRpb25f
Y2FsbGJhY2soZnVuY3Rpb24odGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdGxvYWRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5Cmlu
ZGV4IDRhM2ZhNDI3MzY1NC4uMzQ2ZmUyYTI3MjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdGxvYWRlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weQpAQCAtMSwxNiAr
MSwxNSBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKLWZyb20gc2l4
Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQKK2Zyb20gdXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxzcGxpdAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCi1m
cm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgRW1wdHkKK2Zyb20gcXVldWUgaW1wb3J0IEVtcHR5
CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdCwgZGVxdWUKLWZyb20gbXVsdGlw
cm9jZXNzaW5nIGltcG9ydCBRdWV1ZQotZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9iaW5hcnksIGl0
ZXJpdGVtcwotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCitmcm9tIHNpeCBpbXBvcnQgZW5z
dXJlX2JpbmFyeQogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0aW5jbHVkZQogZnJvbSAuIGltcG9y
dCBtYW5pZmVzdGV4cGVjdGVkCitmcm9tIC4gaW1wb3J0IG1wY29udGV4dAogZnJvbSAuIGltcG9y
dCB3cHR0ZXN0CiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZAogCkBAIC00MSw3ICs0MCw3
IEBAIGNsYXNzIFRlc3RHcm91cHNGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZQogCiAg
ICAgICAgIHNlbGYuZ3JvdXBfYnlfdGVzdCA9IHt9Ci0gICAgICAgIGZvciBncm91cCwgdGVzdF9p
ZHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpOgorICAgICAgICBmb3IgZ3JvdXAsIHRlc3RfaWRz
IGluIHNlbGYuX2RhdGEuaXRlbXMoKToKICAgICAgICAgICAgIGZvciB0ZXN0X2lkIGluIHRlc3Rf
aWRzOgogICAgICAgICAgICAgICAgIHNlbGYuZ3JvdXBfYnlfdGVzdFt0ZXN0X2lkXSA9IGdyb3Vw
CiAKQEAgLTUxLDYgKzUwLDE2IEBAIGNsYXNzIFRlc3RHcm91cHNGaWxlKG9iamVjdCk6CiAgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9kYXRhW2tl
eV0KIAorZGVmIHJlYWRfaW5jbHVkZV9mcm9tX2ZpbGUoZmlsZSk6CisgICAgbmV3X2luY2x1ZGUg
PSBbXQorICAgIHdpdGggb3BlbihmaWxlKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmOgor
ICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgIyBBbGxvdyB3aG9s
ZS1saW5lIGNvbW1lbnRzOworICAgICAgICAgICAgIyBmcmFnbWVudHMgbWVhbiB3ZSBjYW4ndCBo
YXZlIHBhcnRpYWwgbGluZSAjLWJhc2VkIGNvbW1lbnRzCisgICAgICAgICAgICBpZiBsZW4obGlu
ZSkgPiAwIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCIjIik6CisgICAgICAgICAgICAgICAgbmV3
X2luY2x1ZGUuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJuIG5ld19pbmNsdWRlCiAKIGRlZiB1cGRh
dGVfaW5jbHVkZV9mb3JfZ3JvdXBzKHRlc3RfZ3JvdXBzLCBpbmNsdWRlKToKICAgICBpZiBpbmNs
dWRlIGlzIE5vbmU6CkBAIC0xNzMsNyArMTgyLDcgQEAgY2xhc3MgTWFuaWZlc3RMb2FkZXIob2Jq
ZWN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICBydiA9IHt9Ci0gICAgICAgIGZv
ciB1cmxfYmFzZSwgcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYudGVzdF9wYXRocyk6CisgICAgICAg
IGZvciB1cmxfYmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0X3BhdGhzLml0ZW1zKCk6CiAgICAgICAg
ICAgICBtYW5pZmVzdF9maWxlID0gc2VsZi5sb2FkX21hbmlmZXN0KHVybF9iYXNlPXVybF9iYXNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnBhdGhz
KQogICAgICAgICAgICAgcGF0aF9kYXRhID0geyJ1cmxfYmFzZSI6IHVybF9iYXNlfQpAQCAtMzkw
LDcgKzM5OSw4IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2UoVGVzdFNvdXJjZSk6CiAKICAgICBAY2xh
c3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCisgICAgICAgIG1wID0gbXBjb250ZXh0LmdldF9jb250
ZXh0KCkKKyAgICAgICAgdGVzdF9xdWV1ZSA9IG1wLlF1ZXVlKCkKICAgICAgICAgZ3JvdXBzID0g
W10KIAogICAgICAgICBzdGF0ZSA9IHt9CkBAIC00MjMsNyArNDMzLDggQEAgY2xhc3MgR3JvdXBl
ZFNvdXJjZShUZXN0U291cmNlKToKIGNsYXNzIFNpbmdsZVRlc3RTb3VyY2UoVGVzdFNvdXJjZSk6
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG1ha2VfcXVldWUoY2xzLCB0ZXN0cywgKiprd2Fy
Z3MpOgotICAgICAgICB0ZXN0X3F1ZXVlID0gUXVldWUoKQorICAgICAgICBtcCA9IG1wY29udGV4
dC5nZXRfY29udGV4dCgpCisgICAgICAgIHRlc3RfcXVldWUgPSBtcC5RdWV1ZSgpCiAgICAgICAg
IHByb2Nlc3NlcyA9IGt3YXJnc1sicHJvY2Vzc2VzIl0KICAgICAgICAgcXVldWVzID0gW2RlcXVl
KFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQogICAgICAgICBtZXRhZGF0YXMgPSBbY2xz
Lmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJhbmdlKHByb2Nlc3NlcyldCkBAIC00Njcs
OSArNDc4LDEwIEBAIGNsYXNzIEdyb3VwRmlsZVRlc3RTb3VyY2UoVGVzdFNvdXJjZSk6CiAKICAg
ICAgICAgaWRzX3RvX3Rlc3RzID0ge3Rlc3QuaWQ6IHRlc3QgZm9yIHRlc3QgaW4gdGVzdHN9CiAK
LSAgICAgICAgdGVzdF9xdWV1ZSA9IFF1ZXVlKCkKKyAgICAgICAgbXAgPSBtcGNvbnRleHQuZ2V0
X2NvbnRleHQoKQorICAgICAgICB0ZXN0X3F1ZXVlID0gbXAuUXVldWUoKQogCi0gICAgICAgIGZv
ciBncm91cF9uYW1lLCB0ZXN0X2lkcyBpbiBpdGVyaXRlbXModGVzdHNfYnlfZ3JvdXApOgorICAg
ICAgICBmb3IgZ3JvdXBfbmFtZSwgdGVzdF9pZHMgaW4gdGVzdHNfYnlfZ3JvdXAuaXRlbXMoKToK
ICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhID0geyJzY29wZSI6IGdyb3VwX25hbWV9CiAgICAg
ICAgICAgICBncm91cCA9IGRlcXVlKCkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Ry
dW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQppbmRleCA5NjFjNDBmYzViODAu
LmUyMTdmOGQ0M2Q2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkKQEAgLTEsMTQgKzEsMTQgQEAKIGZyb20gX19m
dXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5n
CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIHNpeC5tb3Zlcy5xdWV1
ZSBpbXBvcnQgRW1wdHkKK2Zyb20gcXVldWUgaW1wb3J0IEVtcHR5CiBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2Vzcywg
Y3VycmVudF9wcm9jZXNzLCBRdWV1ZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxv
ZywgY2FwdHVyZQogCitmcm9tIC4gaW1wb3J0IG1wY29udGV4dAorCiAjIFNwZWNpYWwgdmFsdWUg
dXNlZCBhcyBhIHNlbnRpbmFsIGluIHZhcmlvdXMgY29tbWFuZHMKIFN0b3AgPSBvYmplY3QoKQog
CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5yZXN1bHRfcXVldWUgPSByZXN1bHRfcXVldWUKIAogICAgICAgICBzZWxmLmV4ZWN1dG9yID0g
ZXhlY3V0b3IKLSAgICAgICAgc2VsZi5uYW1lID0gY3VycmVudF9wcm9jZXNzKCkubmFtZQorICAg
ICAgICBzZWxmLm5hbWUgPSBtcGNvbnRleHQuZ2V0X2NvbnRleHQoKS5jdXJyZW50X3Byb2Nlc3Mo
KS5uYW1lCiAgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKICAgICBkZWYgX19lbnRlcl9f
KHNlbGYpOgpAQCAtMzExLDkgKzMxMSwxMSBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJl
YWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5leGVjdXRvcl9jbHMgPSBleGVjdXRvcl9jbHMK
ICAgICAgICAgc2VsZi5leGVjdXRvcl9rd2FyZ3MgPSBleGVjdXRvcl9rd2FyZ3MKIAorICAgICAg
ICBtcCA9IG1wY29udGV4dC5nZXRfY29udGV4dCgpCisKICAgICAgICAgIyBGbGFncyB1c2VkIHRv
IHNodXQgZG93biB0aGlzIHRocmVhZCBpZiB3ZSBnZXQgYSBzaWdpbnQKICAgICAgICAgc2VsZi5w
YXJlbnRfc3RvcF9mbGFnID0gc3RvcF9mbGFnCi0gICAgICAgIHNlbGYuY2hpbGRfc3RvcF9mbGFn
ID0gbXVsdGlwcm9jZXNzaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5jaGlsZF9zdG9wX2ZsYWcg
PSBtcC5FdmVudCgpCiAKICAgICAgICAgc2VsZi5yZXJ1biA9IHJlcnVuCiAgICAgICAgIHNlbGYu
cnVuX2NvdW50ID0gMApAQCAtMzI2LDggKzMyOCw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2Vy
KHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBhc3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25l
CiAgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVjb3JkaW5nCiAKLSAgICAgICAgc2VsZi5jb21t
YW5kX3F1ZXVlID0gUXVldWUoKQotICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkK
KyAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gbXAuUXVldWUoKQorICAgICAgICBzZWxmLnJl
bW90ZV9xdWV1ZSA9IG1wLlF1ZXVlKCkKIAogICAgICAgICBzZWxmLnRlc3RfcnVubmVyX3Byb2Mg
PSBOb25lCiAKQEAgLTM1OSw3ICszNjEsOCBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJl
YWRpbmcuVGhyZWFkKToKICAgICAgICAgc3BpbnMuIiIiCiAgICAgICAgIHNlbGYucmVjb3JkaW5n
LnNldChbInRlc3RydW5uZXIiLCAic3RhcnR1cCJdKQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0
cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcihzZWxmLnN1aXRlX25hbWUpCi0gICAgICAgIHdp
dGggc2VsZi5icm93c2VyX2NscyhzZWxmLmxvZ2dlciwgKipzZWxmLmJyb3dzZXJfa3dhcmdzKSBh
cyBicm93c2VyOgorICAgICAgICB3aXRoIHNlbGYuYnJvd3Nlcl9jbHMoc2VsZi5sb2dnZXIsIHJl
bW90ZV9xdWV1ZT1zZWxmLmNvbW1hbmRfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqKnNlbGYuYnJvd3Nlcl9rd2FyZ3MpIGFzIGJyb3dzZXI6CiAgICAgICAgICAgICBzZWxm
LmJyb3dzZXIgPSBCcm93c2VyTWFuYWdlcihzZWxmLmxvZ2dlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUsCkBAIC01MTksOSArNTIyLDEx
IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAg
ICAgICAgIGV4ZWN1dG9yX2Jyb3dzZXJfa3dhcmdzLAogICAgICAgICAgICAgICAgIHNlbGYuY2Fw
dHVyZV9zdGRpbywKICAgICAgICAgICAgICAgICBzZWxmLmNoaWxkX3N0b3BfZmxhZykKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lcl9wcm9jID0gUHJvY2Vzcyh0YXJnZXQ9c3RhcnRfcnVubmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJUZXN0UnVubmVyLSVpIiAl
IHNlbGYubWFuYWdlcl9udW1iZXIpCisKKyAgICAgICAgbXAgPSBtcGNvbnRleHQuZ2V0X2NvbnRl
eHQoKQorICAgICAgICBzZWxmLnRlc3RfcnVubmVyX3Byb2MgPSBtcC5Qcm9jZXNzKHRhcmdldD1z
dGFydF9ydW5uZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJncz1hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU9IlRlc3RSdW5uZXItJWkiICUgc2VsZi5tYW5hZ2VyX251bWJlcikKICAgICAgICAgc2VsZi50
ZXN0X3J1bm5lcl9wcm9jLnN0YXJ0KCkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlc3Qg
cnVubmVyIHN0YXJ0ZWQiKQogICAgICAgICAjIE5vdyB3ZSB3YWl0IGZvciBlaXRoZXIgYW4gaW5p
dF9zdWNjZWVkZWQgZXZlbnQgb3IgYW4gaW5pdF9mYWlsZWQgZXZlbnQKQEAgLTYxMCw2ICs2MTUs
OSBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAg
ICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLnRpbWVyIGlzIG5vdCBOb25lOgogICAgICAgICAg
ICAgc2VsZi50aW1lci5jYW5jZWwoKQorCisgICAgICAgIHNlbGYuYnJvd3Nlci5icm93c2VyLm1h
eWJlX3BhcnNlX3RvbWJzdG9uZSgpCisKICAgICAgICAgIyBXcml0ZSB0aGUgcmVzdWx0IG9mIGVh
Y2ggc3VidGVzdAogICAgICAgICBmaWxlX3Jlc3VsdCwgdGVzdF9yZXN1bHRzID0gcmVzdWx0cwog
ICAgICAgICBzdWJ0ZXN0X3VuZXhwZWN0ZWQgPSBGYWxzZQpAQCAtNjY0LDggKzY3Miw4IEBAIGNs
YXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIlVuZXhwZWN0ZWQgY291bnQgaW4gdGhpcyB0aHJlYWQgJWkiICUgc2Vs
Zi51bmV4cGVjdGVkX2NvdW50KQogCiAgICAgICAgIGlmICJhc3NlcnRpb25fY291bnQiIGluIGZp
bGVfcmVzdWx0LmV4dHJhOgotICAgICAgICAgICAgYXNzZXJ0aW9uX2NvdW50ID0gZmlsZV9yZXN1
bHQuZXh0cmEucG9wKCJhc3NlcnRpb25fY291bnQiKQotICAgICAgICAgICAgaWYgYXNzZXJ0aW9u
X2NvdW50ID4gMDoKKyAgICAgICAgICAgIGFzc2VydGlvbl9jb3VudCA9IGZpbGVfcmVzdWx0LmV4
dHJhWyJhc3NlcnRpb25fY291bnQiXQorICAgICAgICAgICAgaWYgYXNzZXJ0aW9uX2NvdW50IGlz
IG5vdCBOb25lIGFuZCBhc3NlcnRpb25fY291bnQgPiAwOgogICAgICAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmFzc2VydGlvbl9jb3VudCh0ZXN0LmlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQoYXNzZXJ0aW9uX2NvdW50KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5taW5fYXNzZXJ0aW9uX2NvdW50LApA
QCAtNzY2LDIwICs3NzQsMjYgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ3YWl0aW5nIGZvciBydW5uZXIgcHJv
Y2VzcyB0byBlbmQiKQogICAgICAgICBzZWxmLnRlc3RfcnVubmVyX3Byb2Muam9pbigxMCkKICAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFmdGVyIGpvaW4iKQorICAgICAgICBtcCA9IG1wY29u
dGV4dC5nZXRfY29udGV4dCgpCiAgICAgICAgIGlmIHNlbGYudGVzdF9ydW5uZXJfcHJvYy5pc19h
bGl2ZSgpOgogICAgICAgICAgICAgIyBUaGlzIG1pZ2h0IGxlYWsgYSBmaWxlIGhhbmRsZSBmcm9t
IHRoZSBxdWV1ZQogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRm9yY2libHkgdGVy
bWluYXRpbmcgcnVubmVyIHByb2Nlc3MiKQogICAgICAgICAgICAgc2VsZi50ZXN0X3J1bm5lcl9w
cm9jLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQWZ0ZXIgdGVy
bWluYXRpbmcgcnVubmVyIHByb2Nlc3MiKQogCiAgICAgICAgICAgICAjIE11bHRpcHJvY2Vzc2lu
ZyBxdWV1ZXMgYXJlIGJhY2tlZCBieSBvcGVyYXRpbmcgc3lzdGVtIHBpcGVzLiBJZgogICAgICAg
ICAgICAgIyB0aGUgcGlwZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyBoYWQgYnVmZmVyZWQgZGF0YSBh
dCB0aGUgdGltZSBvZgogICAgICAgICAgICAgIyBmb3JjZWQgdGVybWluYXRpb24sIHRoZSBxdWV1
ZSBpcyBubyBsb25nZXIgaW4gYSB1c2FibGUgc3RhdGUKICAgICAgICAgICAgICMgKHN1YnNlcXVl
bnQgYXR0ZW1wdHMgdG8gcmV0cmlldmUgaXRlbXMgbWF5IGJsb2NrIGluZGVmaW5pdGVseSkuCiAg
ICAgICAgICAgICAjIERpc2NhcmQgdGhlIHBvdGVudGlhbGx5LWNvcnJ1cHRlZCBxdWV1ZSBhbmQg
Y3JlYXRlIGEgbmV3IG9uZS4KKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZWNyZWF0
aW5nIGNvbW1hbmQgcXVldWUiKQorICAgICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlLmNhbmNl
bF9qb2luX3RocmVhZCgpCiAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUuY2xvc2UoKQot
ICAgICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQorICAgICAgICAgICAgc2Vs
Zi5jb21tYW5kX3F1ZXVlID0gbXAuUXVldWUoKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoIlJlY3JlYXRpbmcgcmVtb3RlIHF1ZXVlIikKKyAgICAgICAgICAgIHNlbGYucmVtb3RlX3F1
ZXVlLmNhbmNlbF9qb2luX3RocmVhZCgpCiAgICAgICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZS5j
bG9zZSgpCi0gICAgICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKKyAgICAgICAg
ICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gbXAuUXVldWUoKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJ1bm5lciBwcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUg
JWkiICUgc2VsZi50ZXN0X3J1bm5lcl9wcm9jLmV4aXRjb2RlKQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMv
YnJvd3NlcnMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1Li5lNjlkZTI5YmIyZDEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy9fX2luaXRfXy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBU
aGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3Rvcnkg
Zm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfd2Via2l0Z3RrLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfd2Via2l0Z3RrLnB5CmluZGV4IDYxNTBkNTBhY2Y5My4uOThj
Mjk4OGRlZWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF93
ZWJraXRndGsucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfd2Via2l0
Z3RrLnB5CkBAIC00MSwxMiArNDEsMTMgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX2NlcnRpZmljYXRl
X2RvbWFpbl9saXN0KHByb2R1Y3QpOgogICAgIGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdID0g
Tm9uZQogICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdID0gRmFsc2UKICAgICBrd2FyZ3Nb
InBhdXNlX29uX3VuZXhwZWN0ZWQiXSA9IEZhbHNlCisgICAga3dhcmdzWyJkZWJ1Z190ZXN0Il0g
PSBGYWxzZQogICAgIHdpdGggQ29uZmlnQnVpbGRlcihicm93c2VyX2hvc3Q9ImV4YW1wbGUubmV0
IiwKICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRlX2hvc3RzPXsiYWx0IjogImV4YW1w
bGUub3JnIn0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRvbWFpbnM9eyJhIiwgImIifSwK
ICAgICAgICAgICAgICAgICAgICAgICAgbm90X3N1YmRvbWFpbnM9eyJ4IiwgInkifSkgYXMgZW52
X2NvbmZpZzoKIAotICAgICAgICBleGVjdXRvcl9hcmdzID0gZ2V0X2V4ZWN1dG9yX2t3YXJncyhO
b25lLCBlbnZfY29uZmlnLCBOb25lLCBOb25lLCAqKmt3YXJncykKKyAgICAgICAgZXhlY3V0b3Jf
YXJncyA9IGdldF9leGVjdXRvcl9rd2FyZ3MoTm9uZSwgTm9uZSwgZW52X2NvbmZpZywgTm9uZSwg
Tm9uZSwgKiprd2FyZ3MpCiAgICAgICAgIGFzc2VydCgnY2FwYWJpbGl0aWVzJyBpbiBleGVjdXRv
cl9hcmdzKQogICAgICAgICBhc3NlcnQoJ3dlYmtpdGd0azpicm93c2VyT3B0aW9ucycgaW4gZXhl
Y3V0b3JfYXJnc1snY2FwYWJpbGl0aWVzJ10pCiAgICAgICAgIGFzc2VydCgnY2VydGlmaWNhdGVz
JyBpbiBleGVjdXRvcl9hcmdzWydjYXBhYmlsaXRpZXMnXVsnd2Via2l0Z3RrOmJyb3dzZXJPcHRp
b25zJ10pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1Njk4NzczMTI3Yy4uMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy9f
X2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfd2Via2l0Z3RrLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA2MGIxYjBhNWE4NzguLjlhYTU1MDJiYjZiZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0dGVycy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1w
b3J0IGpzb24KIGltcG9ydCB0aW1lCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgY1N0cmluZ0lPIGFz
IFN0cmluZ0lPCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCiBpbXBvcnQgbW9jawogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9wcm9kdWN0cy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0cy90ZXN0X3Byb2R1Y3RzLnB5CmluZGV4IDVkMmJjZjA3NWQwZi4uNzU3OTRkNDgxMzEz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9wcm9kdWN0cy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9wcm9kdWN0cy5weQpAQCAtNDIsNiArNDIsNyBAQCBkZWYg
dGVzdF9zZXJ2ZXJfc3RhcnRfY29uZmlnKHByb2R1Y3QpOgogICAgICAgICB3aXRoIGVudmlyb25t
ZW50LlRlc3RFbnZpcm9ubWVudCh0ZXN0X3BhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFs
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9vcHRpb25zLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7InR5cGUiOiAibm9uZSJ9LApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkKaW5kZXggMzk0ZDJhMDAxNzdiLi5mNjhiYjVm
YjMzYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weQpAQCAtOCw2ICs4LDcg
QEAgaW1wb3J0IHB5dGVzdAogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZAogZnJvbSAu
LnRlc3Rsb2FkZXIgaW1wb3J0IFRlc3RGaWx0ZXIgYXMgRmlsdGVyLCBUZXN0TG9hZGVyIGFzIExv
YWRlcgorZnJvbSAuLnRlc3Rsb2FkZXIgaW1wb3J0IHJlYWRfaW5jbHVkZV9mcm9tX2ZpbGUKIGZy
b20gLnRlc3Rfd3B0dGVzdCBpbXBvcnQgbWFrZV9tb2NrX21hbmlmZXN0CiAKIGhlcmUgPSBvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pCkBAIC01OCw2ICs1OSwyOCBAQCBkZWYgdGVzdF9sb2FkZXJf
aDJfdGVzdHMoKToKICAgICBhc3NlcnQgbGVuKGxvYWRlci5kaXNhYmxlZF90ZXN0c1sidGVzdGhh
cm5lc3MiXSkgPT0gMQogICAgIGFzc2VydCBsb2FkZXIuZGlzYWJsZWRfdGVzdHNbInRlc3RoYXJu
ZXNzIl1bMF0udXJsID09ICIvYS9iYXIuaDIuaHRtbCIKIAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iTmFtZWRU
ZW1wb3JhcnlGaWxlIGNhbm5vdCBiZSByZW9wZW5lZCBvbiBXaW4zMiIpCitkZWYgdGVzdF9pbmNs
dWRlX2ZpbGUoKToKKyAgICB0ZXN0X2Nhc2VzID0gIiIiCisjIFRoaXMgaXMgYSBjb21tZW50Cisv
Zm9vL2Jhci1lcnJvci5odHRwcy5odG1sCisvZm9vL2Jhci1zdWNjZXNzLmh0dHBzLmh0bWwKKy9m
b28vaWRsaGFybmVzcy5odHRwcy5hbnkuaHRtbAorL2Zvby9pZGxoYXJuZXNzLmh0dHBzLmFueS53
b3JrZXIuaHRtbAorICAgICIiIgorCisgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZp
bGUobW9kZT0id3QiKSBhcyBmOgorICAgICAgICBmLndyaXRlKHRlc3RfY2FzZXMpCisgICAgICAg
IGYuZmx1c2goKQorCisgICAgICAgIGluY2x1ZGUgPSByZWFkX2luY2x1ZGVfZnJvbV9maWxlKGYu
bmFtZSkKKworICAgICAgICBhc3NlcnQgbGVuKGluY2x1ZGUpID09IDQKKyAgICAgICAgYXNzZXJ0
ICIvZm9vL2Jhci1lcnJvci5odHRwcy5odG1sIiBpbiBpbmNsdWRlCisgICAgICAgIGFzc2VydCAi
L2Zvby9iYXItc3VjY2Vzcy5odHRwcy5odG1sIiBpbiBpbmNsdWRlCisgICAgICAgIGFzc2VydCAi
L2Zvby9pZGxoYXJuZXNzLmh0dHBzLmFueS5odG1sIiBpbiBpbmNsdWRlCisgICAgICAgIGFzc2Vy
dCAiL2Zvby9pZGxoYXJuZXNzLmh0dHBzLmFueS53b3JrZXIuaHRtbCIgaW4gaW5jbHVkZQogCiBA
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUgY2Fubm90IGJlIHJlb3BlbmVkIG9uIFdp
bjMyIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQppbmRleCBhMWJhOGRlMjg3ODAuLjc3MDQz
ODM5ODIxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQpAQCAtNDQyLDcgKzQ0Miw3IEBA
IGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6CiAKICAgICBhc3NlcnQgbm90IG5l
d19tYW5pZmVzdC5pc19lbXB0eQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVz
dF9pZCkuY2hpbGRyZW5bMF0uZ2V0KAotICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9p
bmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCisgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVu
X2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0KIAogCiBkZWYgdGVzdF91cGRhdGVfYW5kX3ByZXNl
cnZlX3VuY2hhbmdlZF9leHBlY3RlZF9pbnRlcm1pdHRlbnQoKToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVlMjdjNGQzMGJjLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL19faW5p
dF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMv
dGVzdF9leGVjdXRvcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9leHBlY3RlZHRyZWUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0
X3Byb2R1Y3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfc3RhYmlsaXR5LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X3VwZGF0ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N0YXRlLnB5CmluZGV4IGJkYjIzZmVkOTllMS4uYTUyNmMyNGM5NTlmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdXBkYXRlL3N0YXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3Rh
dGUucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgb3MKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBj
UGlja2xlIGFzIHBpY2tsZSAgIyBub3FhOiBOODEzCitpbXBvcnQgcGlja2xlCiAKIGhlcmUgPSBv
cy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIApAQCAtOTcsNyArOTcs
NyBAQCBjbGFzcyBTYXZlZFN0YXRlKEJhc2VTdGF0ZSk6CiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjbHMuZmlsZW5hbWUpOgogICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCi0gICAgICAgICAgICB3aXRoIG9wZW4oY2xzLmZpbGVuYW1lKSBhcyBmOgor
ICAgICAgICAgICAgd2l0aCBvcGVuKGNscy5maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAg
ICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ2ID0gcGlja2xlLmxvYWQoZikKICAg
ICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJMb2FkaW5nIGRhdGEgJXIiICUgKHJ2Ll9k
YXRhLCkpCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgU2F2ZWRTdGF0ZShCYXNlU3RhdGUpOgog
CiAgICAgZGVmIHNhdmUoc2VsZik6CiAgICAgICAgICIiIldyaXRlIHRoZSBzdGF0ZSB0byBkaXNr
IiIiCi0gICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGY6CisgICAgICAg
IHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgcGlja2xl
LmR1bXAoc2VsZiwgZikKIAogICAgIGRlZiBjbGVhcihzZWxmKToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci91cGRhdGUvc3luYy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3luYy5weQppbmRl
eCBmODc4NzUyZjQ1MTQuLjRhY2UyOGY0NDNjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Vw
ZGF0ZS9zeW5jLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3luYy5weQpAQCAtNjcsNyAr
NjcsNyBAQCBjbGFzcyBVcGRhdGVDaGVja291dChTdGVwKToKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS5sb2NhbF9icmFuY2gpCiAgICAgICAgIHN5bmNfcGF0aCA9IG9zLnBhdGguYWJz
cGF0aChzeW5jX3RyZWUucm9vdCkKICAgICAgICAgaWYgc3luY19wYXRoIG5vdCBpbiBzeXMucGF0
aDoKLSAgICAgICAgICAgIGZyb20gdXBkYXRlIGltcG9ydCBzZXR1cF9wYXRocworICAgICAgICAg
ICAgZnJvbSAudXBkYXRlIGltcG9ydCBzZXR1cF9wYXRocwogICAgICAgICAgICAgc2V0dXBfcGF0
aHMoc3luY19wYXRoKQogCiAgICAgZGVmIHJlc3RvcmUoc2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVl
LnB5CmluZGV4IGYzNjI3NzBmZjE2ZC4uMmY0M2JhY2QxNWJmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3RyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CkBA
IC0zLDggKzMsNiBAQCBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZp
bGUKIAotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCi0KIGZyb20gLi4gaW1wb3J0IHZjcwog
ZnJvbSAuLnZjcyBpbXBvcnQgZ2l0LCBoZwogCkBAIC04Nyw3ICs4NSw3IEBAIGNsYXNzIEhnVHJl
ZShvYmplY3QpOgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2NsZWFuKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5oZygic3RhdHVzIikuc3RyaXAoKSA9PSAiIgorICAgICAgICByZXR1
cm4gc2VsZi5oZygic3RhdHVzIikuc3RyaXAoKSA9PSBiIiIKIAogICAgIGRlZiBhZGRfbmV3KHNl
bGYsIHByZWZpeD1Ob25lKToKICAgICAgICAgaWYgcHJlZml4IGlzIG5vdCBOb25lOgpAQCAtMTA1
LDcgKzEwMyw3IEBAIGNsYXNzIEhnVHJlZShvYmplY3QpOgogICAgICAgICBleGNlcHQgc3VicHJv
Y2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgcGF0
Y2hfbmFtZXMgPSBbaXRlbS5zdHJpcCgpIGZvciBpdGVtIGluIHNlbGYuaGcoInFzZXJpZXMiKS5z
cGxpdCgiXG4iKSBpZiBpdGVtLnN0cmlwKCldCisgICAgICAgIHBhdGNoX25hbWVzID0gW2l0ZW0u
c3RyaXAoKSBmb3IgaXRlbSBpbiBzZWxmLmhnKCJxc2VyaWVzIikuc3BsaXQoYiJcbiIpIGlmIGl0
ZW0uc3RyaXAoKV0KIAogICAgICAgICBzdWZmaXggPSAwCiAgICAgICAgIHRlc3RfbmFtZSA9IHBh
dGNoX25hbWUKQEAgLTE0Miw3ICsxNDAsNyBAQCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6CiAKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgcm9vdD1Ob25lLCBsb2dfZXJyb3I9VHJ1ZSk6CiAgICAgICAg
IGlmIHJvb3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJvb3QgPSBnaXQoInJldi1wYXJzZSIsICIt
LXNob3ctdG9wbGV2ZWwiLCBsb2dfZXJyb3I9bG9nX2Vycm9yKS5zdHJpcCgpCisgICAgICAgICAg
ICByb290ID0gZ2l0KCJyZXYtcGFyc2UiLCAiLS1zaG93LXRvcGxldmVsIiwgbG9nX2Vycm9yPWxv
Z19lcnJvcikuc3RyaXAoKS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgc2VsZi5yb290ID0gcm9v
dAogICAgICAgICBzZWxmLmdpdCA9IHZjcy5iaW5kX3RvX3JlcG8oZ2l0LCBzZWxmLnJvb3QsIGxv
Z19lcnJvcj1sb2dfZXJyb3IpCiAgICAgICAgIHNlbGYubWVzc2FnZSA9IE5vbmUKQEAgLTE3OCw3
ICsxNzYsNyBAQCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6CiAKICAgICBAcHJvcGVydHkKICAgICBk
ZWYgaXNfY2xlYW4oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmdpdCgic3RhdHVzIikuc3Ry
aXAoKSA9PSAiIgorICAgICAgICByZXR1cm4gc2VsZi5naXQoInN0YXR1cyIpLnN0cmlwKCkgPT0g
YiIiCiAKICAgICBkZWYgYWRkX25ldyhzZWxmLCBwcmVmaXg9Tm9uZSk6CiAgICAgICAgICIiIkFk
ZCBmaWxlcyB0byB0aGUgc3RhZ2luZyBhcmVhLgpAQCAtMjAzLDcgKzIwMSw3IEBAIGNsYXNzIEdp
dFRyZWUob2JqZWN0KToKICAgICAgICAgICAgIGYuc2VlaygwKQogICAgICAgICAgICAgaWdub3Jl
ZF9maWxlcyA9IHN5bmNfdHJlZS5naXQoImNoZWNrLWlnbm9yZSIsICItLW5vLWluZGV4IiwgIi0t
c3RkaW4iLCAiLXoiLCBzdGRpbj1mKQogICAgICAgICBhcmdzID0gW10KLSAgICAgICAgZm9yIGVu
dHJ5IGluIGlnbm9yZWRfZmlsZXMuc3BsaXQoJ1wwJyk6CisgICAgICAgIGZvciBlbnRyeSBpbiBp
Z25vcmVkX2ZpbGVzLmRlY29kZSgndXRmLTgnKS5zcGxpdCgnXDAnKToKICAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIGVudHJ5KSkKICAgICAgICAgaWYgYXJnczoK
ICAgICAgICAgICAgIHNlbGYuZ2l0KCJhZGQiLCAiLS1mb3JjZSIsICphcmdzKQpAQCAtMjE5LDcg
KzIxNyw3IEBAIGNsYXNzIEdpdFRyZWUob2JqZWN0KToKICAgICAgICAgICAgIGFyZ3MuYXBwZW5k
KHJlZl9maWx0ZXIpCiAgICAgICAgIGRhdGEgPSBzZWxmLmdpdCgic2hvdy1yZWYiLCAqYXJncykK
ICAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KCJcbiIpOgor
ICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KGIiXG4iKToKICAgICAgICAgICAgIGlmIG5v
dCBsaW5lLnN0cmlwKCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNo
YTEsIHJlZiA9IGxpbmUuc3BsaXQoKQpAQCAtMjM3LDcgKzIzNSw3IEBAIGNsYXNzIEdpdFRyZWUo
b2JqZWN0KToKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHJlZl9maWx0ZXIpCiAgICAgICAgIGRh
dGEgPSBzZWxmLmdpdCgibHMtcmVtb3RlIiwgcmVtb3RlLCAqYXJncykKICAgICAgICAgcnYgPSBb
XQotICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KCJcbiIpOgorICAgICAgICBmb3IgbGlu
ZSBpbiBkYXRhLnNwbGl0KGIiXG4iKToKICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0cmlwKCk6
CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNoYTEsIHJlZiA9IGxpbmUu
c3BsaXQoKQpAQCAtMjUwLDggKzI0OCw4IEBAIGNsYXNzIEdpdFRyZWUob2JqZWN0KToKICAgICAg
ICAgOnBhcmFtIHJlbW90ZTogdGhlIHJlbW90ZSBVUkwKICAgICAgICAgOnBhcmFtIGJyYW5jaDog
dGhlIGJyYW5jaCBuYW1lIiIiCiAgICAgICAgIGZvciBzaGExLCByZWYgaW4gc2VsZi5saXN0X3Jl
bW90ZShyZW1vdGUsIGJyYW5jaCk6Ci0gICAgICAgICAgICBpZiByZWYgPT0gInJlZnMvaGVhZHMv
JXMiICUgYnJhbmNoOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdF9jbHMoc2Vs
Ziwgc2hhMSkKKyAgICAgICAgICAgIGlmIHJlZi5kZWNvZGUoJ3V0Zi04JykgPT0gInJlZnMvaGVh
ZHMvJXMiICUgYnJhbmNoOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdF9jbHMo
c2VsZiwgc2hhMS5kZWNvZGUoJ3V0Zi04JykpCiAgICAgICAgIGFzc2VydCBGYWxzZQogCiAgICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBwYXRjaF9uYW1lLCBtZXNzYWdlKToKQEAgLTI5OSw4ICsy
OTcsOCBAQCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6CiAKICAgICAgICAgYXJncyA9IFtdCiAgICAg
ICAgIGlmIGJyYW5jaDoKLSAgICAgICAgICAgIGJyYW5jaGVzID0gW3JlZltsZW4oInJlZnMvaGVh
ZHMvIik6XSBmb3Igc2hhMSwgcmVmIGluIHNlbGYubGlzdF9yZWZzKCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHJlZi5zdGFydHN3aXRoKCJyZWZzL2hlYWRzLyIpXQorICAgICAgICAgICAg
YnJhbmNoZXMgPSBbcmVmW2xlbigicmVmcy9oZWFkcy8iKTpdLmRlY29kZSgndXRmLTgnKSBmb3Ig
c2hhMSwgcmVmIGluIHNlbGYubGlzdF9yZWZzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IHJlZi5zdGFydHN3aXRoKGIicmVmcy9oZWFkcy8iKV0KICAgICAgICAgICAgIGJyYW5jaCA9IGdl
dF91bmlxdWVfbmFtZShicmFuY2hlcywgYnJhbmNoKQogCiAgICAgICAgICAgICBhcmdzICs9IFsi
LWIiLCBicmFuY2hdCkBAIC0zMzYsOCArMzM0LDggQEAgY2xhc3MgR2l0VHJlZShvYmplY3QpOgog
ICAgICAgICBydiA9IFtdCiAKICAgICAgICAgZm9yIHJlcG9fcGF0aCBpbiByZXBvX3BhdGhzOgot
ICAgICAgICAgICAgcGF0aHMgPSB2Y3MuZ2l0KCJscy10cmVlIiwgIi1yIiwgIi0tbmFtZS1vbmx5
IiwgIkhFQUQiLCByZXBvPXJlcG9fcGF0aCkuc3BsaXQoIlxuIikKLSAgICAgICAgICAgIHJ2LmV4
dGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJlcG9fcGF0aCwgaXRlbSksIHNlbGYu
cm9vdCkgZm9yIGl0ZW0gaW4gcGF0aHMKKyAgICAgICAgICAgIHBhdGhzID0gdmNzLmdpdCgibHMt
dHJlZSIsICItciIsICItLW5hbWUtb25seSIsICJIRUFEIiwgcmVwbz1yZXBvX3BhdGgpLnNwbGl0
KGIiXG4iKQorICAgICAgICAgICAgcnYuZXh0ZW5kKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpv
aW4ocmVwb19wYXRoLCBpdGVtLmRlY29kZSgndXRmLTgnKSksIHNlbGYucm9vdCkgZm9yIGl0ZW0g
aW4gcGF0aHMKICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLnN0cmlwKCkpCiAgICAgICAg
IHJldHVybiBydgogCkBAIC0zNDUsMTEgKzM0MywxMSBAQCBjbGFzcyBHaXRUcmVlKG9iamVjdCk6
CiAgICAgICAgICIiIkxpc3Qgc3VibW9kdWxlIGRpcmVjdG9yaWVzIiIiCiAgICAgICAgIG91dHB1
dCA9IHNlbGYuZ2l0KCJzdWJtb2R1bGUiLCAic3RhdHVzIiwgIi0tcmVjdXJzaXZlIikKICAgICAg
ICAgcnYgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXQoIlxuIik6CisgICAg
ICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdChiIlxuIik6CiAgICAgICAgICAgICBsaW5lID0g
bGluZS5zdHJpcCgpCiAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCIgIikKKyAgICAgICAgICAg
IHBhcnRzID0gbGluZS5zcGxpdChiIiAiKQogICAgICAgICAgICAgcnYuYXBwZW5kKHBhcnRzWzFd
KQogICAgICAgICByZXR1cm4gcnYKIApAQCAtNDAzLDUgKzQwMSw1IEBAIGNsYXNzIENvbW1pdChv
YmplY3QpOgogICAgICAgICBzZWxmLmdpdCA9IHNlbGYudHJlZS5naXQKIAogICAgIGRlZiBfZ2V0
X21ldGEoc2VsZik6Ci0gICAgICAgIGF1dGhvciwgZW1haWwsIG1lc3NhZ2UgPSBzZWxmLmdpdCgi
c2hvdyIsICItcyIsICItLWZvcm1hdD1mb3JtYXQ6JWFuXG4lYWVcbiVCIiwgc2VsZi5zaGExKS5z
cGxpdCgiXG4iLCAyKQorICAgICAgICBhdXRob3IsIGVtYWlsLCBtZXNzYWdlID0gc2VsZi5naXQo
InNob3ciLCAiLXMiLCAiLS1mb3JtYXQ9Zm9ybWF0OiVhblxuJWFlXG4lQiIsIHNlbGYuc2hhMSku
ZGVjb2RlKCd1dGYtOCcpLnNwbGl0KCJcbiIsIDIpCiAgICAgICAgIHJldHVybiBhdXRob3IsIGVt
YWlsLCBzZWxmLm1zZ19jbHMobWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRh
dGUvdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkKaW5kZXggODBlNTA5
ZGQzODNiLi4yNjVhMzMxMWJlYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBk
YXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CkBAIC0xLDggKzEsNiBA
QAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gc2l4IGltcG9ydCBpdGVydmFsdWVzCi0K
IGZyb20gLm1ldGFkYXRhIGltcG9ydCBNZXRhZGF0YVVwZGF0ZVJ1bm5lcgogZnJvbSAuc3luYyBp
bXBvcnQgU3luY0Zyb21VcHN0cmVhbVJ1bm5lcgogZnJvbSAudHJlZSBpbXBvcnQgR2l0VHJlZSwg
SGdUcmVlLCBOb1ZDU1RyZWUKQEAgLTExMSw3ICsxMDksNyBAQCBjbGFzcyBSZW1vdmVPYnNvbGV0
ZShTdGVwKToKICAgICAgICAgc3RhdGUudGVzdHNfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bInRl
c3RzX3BhdGgiXQogICAgICAgICBzdGF0ZS5tZXRhZGF0YV9wYXRoID0gc3RhdGUucGF0aHNbIi8i
XVsibWV0YWRhdGFfcGF0aCJdCiAKLSAgICAgICAgZm9yIHVybF9wYXRocyBpbiBpdGVydmFsdWVz
KHBhdGhzKToKKyAgICAgICAgZm9yIHVybF9wYXRocyBpbiBwYXRocy52YWx1ZXMoKToKICAgICAg
ICAgICAgIHRlc3RzX3BhdGggPSB1cmxfcGF0aHNbInRlc3RzX3BhdGgiXQogICAgICAgICAgICAg
bWV0YWRhdGFfcGF0aCA9IHVybF9wYXRoc1sibWV0YWRhdGFfcGF0aCJdCiAgICAgICAgICAgICBm
b3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKG1ldGFkYXRhX3BhdGgp
OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci91cGRhdGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGIwOWEzOWFhMDlhZi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9iYXNl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9tZXRhZGF0YS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRh
dGUvc3RhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dXBkYXRlL3RyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWUxN2Y0Y2IyNjUuLjAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvX19pbml0X18ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4cGVjdGVkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9mb250LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L21hbmlmZXN0ZXhwZWN0ZWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3ByaW50X3JlZnRlc3RfcnVubmVyLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
cHJvY2Vzcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9zdGFi
aWxpdHkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0ZHJpdmVyLXZlbmRvci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc19ydW5uZXIu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC1zZXJ2by5qcwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0aGFybmVzc3JlcG9ydC1zZXJ2b2RyaXZlci5qcwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
aGFybmVzc3JlcG9ydC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Rlc3RydW5uZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdmNzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dl
YmRyaXZlcl9zZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0bG9nZ2luZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0dGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRs
aW5lLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CmluZGV4IDE1ZDIzMjI0OTRk
Yi4uN2Q0MDc0ZTRiNzE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CkBAIC01LDcgKzUsNyBAQCBp
bXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBkaXN0
dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQogZnJvbSBkYXRldGltZSBpbXBvcnQg
dGltZWRlbHRhCi1mcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQsIGl0ZXJrZXlzLCBpdGVydmFs
dWVzLCBpdGVyaXRlbXMKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfdGV4dAogCiBmcm9tIC4gaW1w
b3J0IGNvbmZpZwogZnJvbSAuIGltcG9ydCB3cHR0ZXN0CkBAIC0xNiw3ICsxNiw3IEBAIGRlZiBh
YnNfcGF0aChwYXRoKToKIAogCiBkZWYgdXJsX29yX3BhdGgocGF0aCk6Ci0gICAgZnJvbSBzaXgu
bW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorICAgIGZyb20gdXJsbGliLnBhcnNl
IGltcG9ydCB1cmxwYXJzZQogCiAgICAgcGFyc2VkID0gdXJscGFyc2UocGF0aCkKICAgICBpZiBs
ZW4ocGFyc2VkLnNjaGVtZSkgPiAyOgpAQCAtMTMxLDYgKzEzMSw4IEBAIHNjaGVtZSBob3N0IGFu
ZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
VGVzdCB0eXBlcyB0byBydW4iKQogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVu
dCgiLS1pbmNsdWRlIiwgYWN0aW9uPSJhcHBlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJVUkwgcHJlZml4IHRvIGluY2x1ZGUiKQorICAgIHRlc3Rfc2Vs
ZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1pbmNsdWRlLWZpbGUiLCBhY3Rpb249InN0b3Jl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQSBmaWxlIGxp
c3RpbmcgVVJMIHByZWZpeCBmb3IgdGVzdHMiKQogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFk
ZF9hcmd1bWVudCgiLS1leGNsdWRlIiwgYWN0aW9uPSJhcHBlbmQiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJVUkwgcHJlZml4IHRvIGV4Y2x1ZGUiKQogICAg
IHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1pbmNsdWRlLW1hbmlmZXN0Iiwg
dHlwZT1hYnNfcGF0aCwKQEAgLTE3MCw2ICsxNzIsOCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4i
IiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJIYWx0IHRoZSB0ZXN0
IHJ1bm5lciBhZnRlciBlYWNoIHRlc3QgKHRoaXMgaGFwcGVucyBieSBkZWZhdWx0IGlmIG9ubHkg
YSBzaW5nbGUgdGVzdCBpcyBydW4pIikKICAgICBkZWJ1Z2dpbmdfZ3JvdXAuYWRkX2FyZ3VtZW50
KCctLW5vLXBhdXNlLWFmdGVyLXRlc3QnLCBkZXN0PSJwYXVzZV9hZnRlcl90ZXN0IiwgYWN0aW9u
PSJzdG9yZV9mYWxzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJE
b24ndCBoYWx0IHRoZSB0ZXN0IHJ1bm5lciBpcnJlc3BlY3RpdmUgb2YgdGhlIG51bWJlciBvZiB0
ZXN0cyBydW4iKQorICAgIGRlYnVnZ2luZ19ncm91cC5hZGRfYXJndW1lbnQoJy0tZGVidWctdGVz
dCcsIGRlc3Q9ImRlYnVnX3Rlc3QiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRlc3RzIHdpdGggYWRkaXRpb25hbCBkZWJ1
Z2dpbmcgZmVhdHVyZXMgZW5hYmxlZCIpCiAKICAgICBkZWJ1Z2dpbmdfZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCctLXBhdXNlLW9uLXVuZXhwZWN0ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iSGFsdCB0aGUgdGVzdCBydW5uZXIgd2hl
biBhbiB1bmV4cGVjdGVkIHJlc3VsdCBpcyBlbmNvdW50ZXJlZCIpCkBAIC0xODEsNyArMTg1LDEw
IEBAIHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlBhdGggb3IgdXJsIHRvIHN5bWJvbHMgZmlsZSB1c2VkIHRvIGFuYWx5c2Ug
Y3Jhc2ggbWluaWR1bXBzLiIpCiAgICAgZGVidWdnaW5nX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1z
dGFja3dhbGstYmluYXJ5IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIHN0YWNrd2Fsa2VyIHByb2dy
YW0gdXNlZCB0byBhbmFseXNlIG1pbmlkdW1wcy4iKQotCisgICAgZGVidWdnaW5nX2dyb3VwLmFk
ZF9hcmd1bWVudCgiLS1vdXRwdXQtZGlyZWN0b3J5IiwgYWN0aW9uPSJzdG9yZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNocm9taXVtIG91dHB1dCBk
aXJlY3RvcnkuIikKKyAgICBkZWJ1Z2dpbmdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXN0YWNrcGFy
c2VyLXNjcmlwdCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPWFic19wYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byBzdGFjayBwYXJzZXIgc2NyaXB0IHVz
ZWQgdG8gYW5hbHlzZSB0b21ic3RvbmVzLiIpCiAgICAgZGVidWdnaW5nX2dyb3VwLmFkZF9hcmd1
bWVudCgiLS1wZGIiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0iRHJvcCBpbnRvIHBkYiBvbiBweXRob24gZXhjZXB0aW9uIikKIApA
QCAtMTk2LDYgKzIwMyw4IEBAIHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICBjb25maWdf
Z3JvdXAuYWRkX2FyZ3VtZW50KCctLXdlYmRyaXZlci1hcmcnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1bXSwgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJ3ZWJkcml2ZXJf
YXJncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFeHRyYSBhcmd1bWVu
dCBmb3IgdGhlIFdlYkRyaXZlciBiaW5hcnkiKQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1l
bnQoIi0tYWRiLWJpbmFyeSIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iUGF0aCB0byBhZGIgYmluYXJ5IHRvIHVzZSIpCiAgICAgY29uZmlnX2dy
b3VwLmFkZF9hcmd1bWVudCgiLS1wYWNrYWdlLW5hbWUiLCBhY3Rpb249InN0b3JlIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkFuZHJvaWQgcGFja2FnZSBuYW1lIHRvIHJ1
biB0ZXN0cyBhZ2FpbnN0IikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWRldmlj
ZS1zZXJpYWwiLCBhY3Rpb249InN0b3JlIiwKQEAgLTM2Myw2ICszNzIsMTAgQEAgc2NoZW1lIGhv
c3QgYW5kIHBvcnQuIiIiKQogICAgIHdlYmtpdF9ncm91cC5hZGRfYXJndW1lbnQoIi0td2Via2l0
LXBvcnQiLCBkZXN0PSJ3ZWJraXRfcG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJXZWJLaXQgcG9ydCIpCiAKKyAgICBzYWZhcmlfZ3JvdXAgPSBwYXJzZXIuYWRkX2Fy
Z3VtZW50X2dyb3VwKCJTYWZhcmktc3BlY2lmaWMiKQorICAgIHNhZmFyaV9ncm91cC5hZGRfYXJn
dW1lbnQoIi0ta2lsbC1zYWZhcmkiLCBkZXN0PSJraWxsX3NhZmFyaSIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJLaWxsIFNhZmFyaSB3aGVuIHN0b3BwaW5nIHRoZSBicm93c2VyIikKKwogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoInRlc3RfbGlzdCIsIG5hcmdzPSIqIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9Ikxpc3Qgb2YgVVJMcyBmb3IgdGVzdHMgdG8gcnVuLCBvciBwYXRocyBpbmNsdWRp
bmcgdGVzdHMgdG8gcnVuLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoZXF1aXZh
bGVudCB0byAtLWluY2x1ZGUpIikKQEAgLTQwNCw3ICs0MTcsNyBAQCBkZWYgc2V0X2Zyb21fY29u
ZmlnKGt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICgiaG9zdF9jZXJ0X3BhdGgiLCAiaG9z
dF9jZXJ0X3BhdGgiLCBUcnVlKSwKICAgICAgICAgICAgICAgICAgICAgKCJob3N0X2tleV9wYXRo
IiwgImhvc3Rfa2V5X3BhdGgiLCBUcnVlKV19CiAKLSAgICBmb3Igc2VjdGlvbiwgdmFsdWVzIGlu
IGl0ZXJpdGVtcyhrZXlzKToKKyAgICBmb3Igc2VjdGlvbiwgdmFsdWVzIGluIGtleXMuaXRlbXMo
KToKICAgICAgICAgZm9yIGNvbmZpZ192YWx1ZSwga3dfdmFsdWUsIGlzX3BhdGggaW4gdmFsdWVz
OgogICAgICAgICAgICAgaWYga3dfdmFsdWUgaW4ga3dhcmdzIGFuZCBrd2FyZ3Nba3dfdmFsdWVd
IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX3BhdGg6CkBAIC00NDAsNyArNDUz
LDcgQEAgZGVmIGdldF90ZXN0X3BhdGhzKGNvbmZpZyk6CiAgICAgIyBTZXQgdXAgdGVzdF9wYXRo
cwogICAgIHRlc3RfcGF0aHMgPSBPcmRlcmVkRGljdCgpCiAKLSAgICBmb3Igc2VjdGlvbiBpbiBp
dGVya2V5cyhjb25maWcpOgorICAgIGZvciBzZWN0aW9uIGluIGNvbmZpZy5rZXlzKCk6CiAgICAg
ICAgIGlmIHNlY3Rpb24uc3RhcnRzd2l0aCgibWFuaWZlc3Q6Iik6CiAgICAgICAgICAgICBtYW5p
ZmVzdF9vcHRzID0gY29uZmlnLmdldChzZWN0aW9uKQogICAgICAgICAgICAgdXJsX2Jhc2UgPSBt
YW5pZmVzdF9vcHRzLmdldCgidXJsX2Jhc2UiLCAiLyIpCkBAIC00NjYsNyArNDc5LDcgQEAgZGVm
IGV4ZV9wYXRoKG5hbWUpOgogCiAKIGRlZiBjaGVja19wYXRocyhrd2FyZ3MpOgotICAgIGZvciB0
ZXN0X3BhdGhzIGluIGl0ZXJ2YWx1ZXMoa3dhcmdzWyJ0ZXN0X3BhdGhzIl0pOgorICAgIGZvciB0
ZXN0X3BhdGhzIGluIGt3YXJnc1sidGVzdF9wYXRocyJdLnZhbHVlcygpOgogICAgICAgICBpZiBu
b3QgKCJ0ZXN0c19wYXRoIiBpbiB0ZXN0X3BhdGhzIGFuZAogICAgICAgICAgICAgICAgICJtZXRh
ZGF0YV9wYXRoIiBpbiB0ZXN0X3BhdGhzKToKICAgICAgICAgICAgIHByaW50KCJGYXRhbDogbXVz
dCBzcGVjaWZ5IGJvdGggYSB0ZXN0IHBhdGggYW5kIG1ldGFkYXRhIHBhdGgiKQpAQCAtNDc0LDcg
KzQ4Nyw3IEBAIGRlZiBjaGVja19wYXRocyhrd2FyZ3MpOgogICAgICAgICBpZiAibWFuaWZlc3Rf
cGF0aCIgbm90IGluIHRlc3RfcGF0aHM6CiAgICAgICAgICAgICB0ZXN0X3BhdGhzWyJtYW5pZmVz
dF9wYXRoIl0gPSBvcy5wYXRoLmpvaW4odGVzdF9wYXRoc1sibWV0YWRhdGFfcGF0aCJdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNQU5J
RkVTVC5qc29uIikKLSAgICAgICAgZm9yIGtleSwgcGF0aCBpbiBpdGVyaXRlbXModGVzdF9wYXRo
cyk6CisgICAgICAgIGZvciBrZXksIHBhdGggaW4gdGVzdF9wYXRocy5pdGVtcygpOgogICAgICAg
ICAgICAgbmFtZSA9IGtleS5zcGxpdCgiXyIsIDEpWzBdCiAKICAgICAgICAgICAgIGlmIG5hbWUg
PT0gIm1hbmlmZXN0IjoKQEAgLTU5MCw3ICs2MDMsNyBAQCBkZWYgY2hlY2tfYXJncyhrd2FyZ3Mp
OgogICAgICAgICBrd2FyZ3NbInJlZnRlc3RfaW50ZXJuYWwiXSA9IFRydWUKIAogICAgIGlmIGt3
YXJnc1sicmVmdGVzdF9zY3JlZW5zaG90Il0gaXMgTm9uZToKLSAgICAgICAga3dhcmdzWyJyZWZ0
ZXN0X3NjcmVlbnNob3QiXSA9ICJ1bmV4cGVjdGVkIgorICAgICAgICBrd2FyZ3NbInJlZnRlc3Rf
c2NyZWVuc2hvdCJdID0gInVuZXhwZWN0ZWQiIGlmIG5vdCBrd2FyZ3NbImRlYnVnX3Rlc3QiXSBl
bHNlICJhbHdheXMiCiAKICAgICBpZiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSBpcyBOb25l
OgogICAgICAgICBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSA9IEZhbHNlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1
Li5lNjlkZTI5YmIyZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNr
ZW5kcy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMv
X19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5
dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tl
bmRzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weQpp
bmRleCBjNTM5ZDQzNjdlOTQuLjMwNjllNGNmZThkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L2JhY2tlbmRzL2Jhc2UucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgYWJjCi1mcm9tIHNp
eCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcwogCiBmcm9tIC4ubm9kZSBp
bXBvcnQgTm9kZVZpc2l0b3IKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBAIC0xODcsMjEg
KzE4NiwyMSBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAgICBkZWYgX2ZsYXR0ZW4o
c2VsZik6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG5vZGUgaW4gW3NlbGYsIHNlbGYu
cm9vdF06Ci0gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2Rh
dGEpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlbXMoKToK
ICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBydjoKICAgICAgICAgICAgICAgICAgICAg
cnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBpdGVyaXRlbXMo
c2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIGl0ZXJpdGVtcyhzZWxmLl9mbGF0dGVuKCkpOgor
ICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9mbGF0dGVuKCkuaXRlbXMoKToKICAgICAgICAgICAg
IHlpZWxkIGl0ZW0KIAogICAgIGRlZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0g
aW4gaXRlcmtleXMoc2VsZi5fZmxhdHRlbigpKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5f
ZmxhdHRlbigpLmtleXMoKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRlZiBpdGVy
dmFsdWVzKHNlbGYpOgotICAgICAgICBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKHNlbGYuX2ZsYXR0
ZW4oKSk6CisgICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS52YWx1ZXMoKToKICAg
ICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRlZiBhcHBlbmQoc2VsZiwgY2hpbGQpOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CmluZGV4
IDNiMTFlODMwMTJhYi4uMzBkZDE0NDkxNTZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IG9w
ZXJhdG9yCi1mcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQsIGl0ZXJpdGVtcywgaXRlcmtleXMs
IHRleHRfdHlwZQorZnJvbSBzaXggaW1wb3J0IGVuc3VyZV90ZXh0CiAKIGZyb20gLi5ub2RlIGlt
cG9ydCBOb2RlVmlzaXRvciwgRGF0YU5vZGUsIENvbmRpdGlvbmFsTm9kZSwgS2V5VmFsdWVOb2Rl
LCBMaXN0Tm9kZSwgVmFsdWVOb2RlLCBCaW5hcnlFeHByZXNzaW9uTm9kZSwgVmFyaWFibGVOb2Rl
CiBmcm9tIC4ucGFyc2VyIGltcG9ydCBwYXJzZQpAQCAtMzAwLDkgKzMwMCw5IEBAIGNsYXNzIE1h
bmlmZXN0SXRlbShvYmplY3QpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToK
ICAgICAgICAgICAgIHZhbHVlX25vZGUgPSBMaXN0Tm9kZSgpCiAgICAgICAgICAgICBmb3IgaXRl
bSBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUo
dGV4dF90eXBlKGl0ZW0pKSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1
ZU5vZGUoc3RyKGl0ZW0pKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlX25vZGUg
PSBWYWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKKyAgICAgICAgICAgIHZhbHVlX25vZGUgPSBW
YWx1ZU5vZGUoc3RyKHZhbHVlKSkKICAgICAgICAgaWYgY29uZGl0aW9uIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29uZGl0aW9uLCBDb25kaXRpb25hbE5vZGUp
OgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsX25vZGUgPSBDb25kaXRpb25hbE5vZGUoKQpA
QCAtMzY4LDE3ICszNjgsMTcgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKG9iamVjdCk6CiAgICAgZGVm
IF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9CiAgICAgICAgIGZvciBub2RlIGluIFtz
ZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVt
cyhub2RlLl9kYXRhKToKKyAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRh
Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gcnY6CiAgICAgICAgICAg
ICAgICAgICAgIHJ2W25hbWVdID0gdmFsdWUKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYg
aXRlcml0ZW1zKHNlbGYpOgotICAgICAgICBmb3IgaXRlbSBpbiBpdGVyaXRlbXMoc2VsZi5fZmxh
dHRlbigpKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZW1zKCk6CiAg
ICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcmtleXMoc2VsZik6Ci0gICAgICAg
IGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0ZW4oKSk6CisgICAgICAgIGZvciBpdGVt
IGluIHNlbGYuX2ZsYXR0ZW4oKS5rZXlzKCk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAg
ICBkZWYgaXRlcl9wcm9wZXJ0aWVzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dG1hbmlmZXN0L2JhY2tlbmRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L2JhY2tlbmRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyZDIwZmFlMDIzMjguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZl
c3QvYmFja2VuZHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC9iYWNrZW5kcy9jb25kaXRpb25hbC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC9iYWNrZW5kcy9zdGF0aWMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC9ub2RlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkKaW5kZXgg
MGY4MmQ3MDA2YjY5Li41ZTlkMmI2NDI3NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC9ub2RlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5CkBA
IC0xLDUgKzEsMyBAQAotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCi0KIGNsYXNzIE5vZGVW
aXNpdG9yKG9iamVjdCk6CiAgICAgZGVmIHZpc2l0KHNlbGYsIG5vZGUpOgogICAgICAgICAjIFRo
aXMgaXMgdWdseSBhcyBoZWxsLCBidXQgd2UgZG9uJ3QgaGF2ZSBtdWx0aW1ldGhvZHMgYW5kCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3BhcnNlci5weQppbmRleCA5MTFlZmFjODBmMjcuLmY2YWUxZTI5NDBl
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3BhcnNlci5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CkBAIC0xNCw4ICsxNCw3IEBACiAKIGZy
b20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogCi1mcm9tIHNpeCBpbXBvcnQg
YmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTywgdW5pY2hyCi1mcm9tIHNpeC5tb3ZlcyBp
bXBvcnQgcmFuZ2UKK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAogZnJvbSAubm9kZSBpbXBvcnQg
KE5vZGUsIEF0b21Ob2RlLCBCaW5hcnlFeHByZXNzaW9uTm9kZSwgQmluYXJ5T3BlcmF0b3JOb2Rl
LAogICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbmFsTm9kZSwgRGF0YU5vZGUsIEluZGV4Tm9k
ZSwgS2V5VmFsdWVOb2RlLCBMaXN0Tm9kZSwKQEAgLTUwLDcgKzQ5LDcgQEAgYXRvbXMgPSB7IlRy
dWUiOiBUcnVlLAogICAgICAgICAgIlJlc2V0Ijogb2JqZWN0KCl9CiAKIGRlZiBkZWNvZGUocyk6
Ci0gICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgdGV4dF90eXBlKQorICAgIGFzc2VydCBpc2luc3Rh
bmNlKHMsIHN0cikKICAgICByZXR1cm4gcwogCiAKQEAgLTc5LDcgKzc4LDcgQEAgY2xhc3MgVG9r
ZW5pemVyKG9iamVjdCk6CiAKICAgICBkZWYgdG9rZW5pemUoc2VsZiwgc3RyZWFtKToKICAgICAg
ICAgc2VsZi5yZXNldCgpCi0gICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShzdHJlYW0sIHRl
eHRfdHlwZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKHN0cmVhbSwgc3RyKQogICAg
ICAgICBpZiBpc2luc3RhbmNlKHN0cmVhbSwgYnl0ZXMpOgogICAgICAgICAgICAgc3RyZWFtID0g
Qnl0ZXNJTyhzdHJlYW0pCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHN0cmVhbSwgIm5hbWUiKToK
QEAgLTg5LDcgKzg4LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAKICAgICAgICAgc2Vs
Zi5uZXh0X2xpbmVfc3RhdGUgPSBzZWxmLmxpbmVfc3RhcnRfc3RhdGUKICAgICAgICAgZm9yIGks
IGxpbmUgaW4gZW51bWVyYXRlKHN0cmVhbSk6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShsaW5lLCBiaW5hcnlfdHlwZSkKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmUs
IGJ5dGVzKQogICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYubmV4dF9saW5lX3N0YXRlCiAg
ICAgICAgICAgICBhc3NlcnQgc2VsZi5zdGF0ZSBpcyBub3QgTm9uZQogICAgICAgICAgICAgc3Rh
dGVzID0gW10KQEAgLTk3LDcgKzk2LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAgICAg
ICAgICAgICBzZWxmLmxpbmVfbnVtYmVyID0gaSArIDEKICAgICAgICAgICAgIHNlbGYuaW5kZXgg
PSAwCiAgICAgICAgICAgICBzZWxmLmxpbmUgPSBsaW5lLmRlY29kZSgndXRmLTgnKS5yc3RyaXAo
KQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2VsZi5saW5lLCB0ZXh0X3R5cGUpCisg
ICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLmxpbmUsIHN0cikKICAgICAgICAgICAg
IHdoaWxlIHNlbGYuc3RhdGUgIT0gc2VsZi5lb2xfc3RhdGU6CiAgICAgICAgICAgICAgICAgc3Rh
dGVzLmFwcGVuZChzZWxmLnN0YXRlKQogICAgICAgICAgICAgICAgIHRva2VucyA9IHNlbGYuc3Rh
dGUoKQpAQCAtNTA1LDcgKzUwNCw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAg
ICAgICAgdmFsdWUgKz0gc2VsZi5lc2NhcGVfdmFsdWUoYykKICAgICAgICAgICAgIHNlbGYuY29u
c3VtZSgpCiAKLSAgICAgICAgcmV0dXJuIHVuaWNocih2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGNo
cih2YWx1ZSkKIAogICAgIGRlZiBlc2NhcGVfdmFsdWUoc2VsZiwgYyk6CiAgICAgICAgIGlmICcw
JyA8PSBjIDw9ICc5JzoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5w
eQppbmRleCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
bWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYzdm
MmZmMGExMi4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dG1hbmlmZXN0L3Rlc3RzL3Rlc3RfcGFyc2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X3N0YXRpYy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Rv
a2VuaXplci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTNlM2RkNWQwOWMuLjAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC9wYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvc2VyaWFsaXplci5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRydW5uZXIucHkKaW5kZXggZTFkOWVmOGIxYTkxLi4wMjk0ZTg3MjBhYzIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5w
eQpAQCAtMywxMyArMywxMyBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
LCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1m
cm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVydmFsdWVzCiAKIGltcG9ydCB3cHRzZXJ2ZQog
ZnJvbSB3cHRzZXJ2ZSBpbXBvcnQgc3NsdXRpbHMKIAogZnJvbSAuIGltcG9ydCBlbnZpcm9ubWVu
dCBhcyBlbnYKIGZyb20gLiBpbXBvcnQgaW5zdHJ1bWVudHMKK2Zyb20gLiBpbXBvcnQgbXBjb250
ZXh0CiBmcm9tIC4gaW1wb3J0IHByb2R1Y3RzCiBmcm9tIC4gaW1wb3J0IHRlc3Rsb2FkZXIKIGZy
b20gLiBpbXBvcnQgd3B0Y29tbWFuZGxpbmUKQEAgLTY1LDYgKzY1LDggQEAgZGVmIGdldF9sb2Fk
ZXIodGVzdF9wYXRocywgcHJvZHVjdCwgZGVidWc9Tm9uZSwgcnVuX2luZm9fZXh0cmFzPU5vbmUs
IGNodW5rZXJfa3cKICAgICBtYW5pZmVzdF9maWx0ZXJzID0gW10KIAogICAgIGluY2x1ZGUgPSBr
d2FyZ3NbImluY2x1ZGUiXQorICAgIGlmIGt3YXJnc1siaW5jbHVkZV9maWxlIl06CisgICAgICAg
IGluY2x1ZGUuZXh0ZW5kKHRlc3Rsb2FkZXIucmVhZF9pbmNsdWRlX2Zyb21fZmlsZShrd2FyZ3Nb
ImluY2x1ZGVfZmlsZSJdKSkKICAgICBpZiB0ZXN0X2dyb3VwczoKICAgICAgICAgaW5jbHVkZSA9
IHRlc3Rsb2FkZXIudXBkYXRlX2luY2x1ZGVfZm9yX2dyb3Vwcyh0ZXN0X2dyb3VwcywgaW5jbHVk
ZSkKIApAQCAtMTE1LDcgKzExNyw3IEBAIGRlZiBsaXN0X2Rpc2FibGVkKHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKICAgICBydW5faW5mbywgdGVzdF9sb2FkZXIgPSBnZXRfbG9hZGVy
KHRlc3RfcGF0aHMsIHByb2R1Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydW5faW5mb19leHRyYXM9cnVuX2luZm9fZXh0cmFzLCAqKmt3YXJncykKIAotICAgIGZv
ciB0ZXN0X3R5cGUsIHRlc3RzIGluIGl0ZXJpdGVtcyh0ZXN0X2xvYWRlci5kaXNhYmxlZF90ZXN0
cyk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gdGVzdF9sb2FkZXIuZGlzYWJsZWRfdGVz
dHMuaXRlbXMoKToKICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CiAgICAgICAgICAgICBydi5h
cHBlbmQoeyJ0ZXN0IjogdGVzdC5pZCwgInJlYXNvbiI6IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAg
cHJpbnQoanNvbi5kdW1wcyhydiwgaW5kZW50PTIpKQpAQCAtMTM5LDggKzE0MSwxMCBAQCBkZWYg
Z2V0X3BhdXNlX2FmdGVyX3Rlc3QodGVzdF9sb2FkZXIsICoqa3dhcmdzKToKICAgICAgICAgICAg
IHJldHVybiBGYWxzZQogICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CiAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYga3dhcmdzWyJkZWJ1Z190ZXN0Il06CisgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQogICAgICAgICB0ZXN0cyA9IHRlc3RfbG9hZGVyLnRlc3RzCi0gICAg
ICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChzdW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJ2YWx1ZXModGVzdHMpKSA9PSAxIGFuZAorICAgICAgICBpc19zaW5nbGVfdGVzdGhhcm5lc3Mg
PSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiB0ZXN0cy52YWx1ZXMoKSkgPT0gMSBhbmQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbih0ZXN0cy5nZXQoInRlc3RoYXJuZXNz
IiwgW10pKSA9PSAxKQogICAgICAgICBpZiBrd2FyZ3NbInJlcGVhdCJdID09IDEgYW5kIGt3YXJn
c1sicmVydW4iXSA9PSAxIGFuZCBpc19zaW5nbGVfdGVzdGhhcm5lc3M6CiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQpAQCAtMTUxLDExICsxNTUsMTQgQEAgZGVmIGdldF9wYXVzZV9hZnRlcl90ZXN0
KHRlc3RfbG9hZGVyLCAqKmt3YXJncyk6CiBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRo
cywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICIiIlNldCB1cCB0aGUgdGVzdCBlbnZpcm9ubWVu
dCwgbG9hZCB0aGUgbGlzdCBvZiB0ZXN0cyB0byBiZSBleGVjdXRlZCwgYW5kCiAgICAgaW52b2tl
IHRoZSByZW1haW5kZXIgb2YgdGhlIGNvZGUgdG8gZXhlY3V0ZSB0ZXN0cyIiIgorICAgIG1wID0g
bXBjb250ZXh0LmdldF9jb250ZXh0KCkKICAgICBpZiBrd2FyZ3NbImluc3RydW1lbnRfdG9fZmls
ZSJdIGlzIE5vbmU6CiAgICAgICAgIHJlY29yZGVyID0gaW5zdHJ1bWVudHMuTnVsbEluc3RydW1l
bnQoKQogICAgIGVsc2U6CiAgICAgICAgIHJlY29yZGVyID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVu
dChrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdKQotICAgIHdpdGggcmVjb3JkZXIgYXMgcmVj
b3JkaW5nLCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVf
c3RkaW8iXSk6CisgICAgd2l0aCByZWNvcmRlciBhcyByZWNvcmRpbmcsIGNhcHR1cmUuQ2FwdHVy
ZUlPKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm90IGt3YXJnc1sibm9fY2FwdHVyZV9zdGRpbyJdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcF9jb250ZXh0PW1wKToKICAgICAgICAg
cmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKICAgICAgICAgZW52LmRvX2RlbGF5ZWRfaW1wb3J0
cyhsb2dnZXIsIHRlc3RfcGF0aHMpCiAKQEAgLTIxOSw2ICsyMjYsNyBAQCBkZWYgcnVuX3Rlc3Rz
KGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICAgICB3aXRoIGVu
di5UZXN0RW52aXJvbm1lbnQodGVzdF9wYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga3dhcmdzWyJwYXVzZV9hZnRlcl90ZXN0Il0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImRlYnVnX3Rlc3QiXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5mbyJdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZHVjdC5lbnZfb3B0aW9ucywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNzbF9jb25maWcsCkBAIC0yNzUsMTMgKzI4MywxNiBAQCBkZWYgcnVu
X3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICAgICAg
ICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jbHMgPSBw
cm9kdWN0LmJyb3dzZXJfY2xzCiAKLSAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9rd2FyZ3Mg
PSBwcm9kdWN0LmdldF9icm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAg
ICAgIGJyb3dzZXJfa3dhcmdzID0gcHJvZHVjdC5nZXRfYnJvd3Nlcl9rd2FyZ3MobG9nZ2VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9dGVzdF9l
bnZpcm9ubWVudC5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3Rlc3RfZ3JvdXBzPWxlbih0ZXN0X2dyb3Vw
cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiprd2FyZ3MpCiAKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0b3JfY2xz
ID0gcHJvZHVjdC5leGVjdXRvcl9jbGFzc2VzLmdldCh0ZXN0X3R5cGUpCi0gICAgICAgICAgICAg
ICAgICAgIGV4ZWN1dG9yX2t3YXJncyA9IHByb2R1Y3QuZ2V0X2V4ZWN1dG9yX2t3YXJncyh0ZXN0
X3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dG9yX2t3YXJncyA9IHByb2R1Y3QuZ2V0
X2V4ZWN1dG9yX2t3YXJncyhsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3R5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X2Vudmlyb25tZW50LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZW52aXJvbm1lbnQuY2FjaGVf
bWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0dGVzdC5weQppbmRleCBlMjEwNDFiNjQzMGEuLmI3
YTdjZWMxOTc3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsOSArMSw4IEBACiBpbXBvcnQgb3MKIGltcG9ydCBz
dWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Ci1mcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1
cmxqb2luCiAKIGZyb20gLndwdG1hbmlmZXN0LnBhcnNlciBpbXBvcnQgYXRvbXMKIApAQCAtMzA3
LDcgKzMwNiw3IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICAgICAgcnYgPSB7fQogICAgICAg
ICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKE5vbmUpOgogICAgICAgICAgICAgdGhyZXNob2xk
ID0gbWV0YS5sZWFrX3RocmVzaG9sZAotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRl
cml0ZW1zKHRocmVzaG9sZCk6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0aHJlc2hv
bGQuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIHJ2OgogICAgICAgICAg
ICAgICAgICAgICBydltrZXldID0gdmFsdWUKICAgICAgICAgcmV0dXJuIHJ2CkBAIC0zNDksNyAr
MzQ4LDcgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IGV4cGVjdGVkID0gbWV0YWRhdGEuZ2V0KCJleHBlY3RlZCIpCi0gICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGV4cGVjdGVkLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShleHBlY3RlZCwgc3RyKToKICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWQKICAgICAg
ICAgICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgbGlzdCk6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4cGVjdGVkWzBdCkBAIC00NjQsOSArNDYzLDkgQEAgY2xhc3MgUmVmdGVzdFRlc3Qo
VGVzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsX2Jhc2UsIHRlc3RzX3Jvb3QsIHVy
bCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwgcmVmZXJlbmNlcywKICAgICAgICAg
ICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHZpZXdwb3J0X3NpemU9Tm9uZSwgZHBp
PU5vbmUsIGZ1enp5PU5vbmUsCi0gICAgICAgICAgICAgICAgIHByb3RvY29sPSJodHRwIiwgcXVp
Yz1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHByb3RvY29sPSJodHRwIiwgc3ViZG9tYWluPUZh
bHNlLCBxdWljPUZhbHNlKToKICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB1cmxfYmFzZSwg
dGVzdHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLCB0aW1lb3V0
LAotICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHByb3RvY29sLCBxdWljKQorICAgICAgICAg
ICAgICAgICAgICAgIHBhdGgsIHByb3RvY29sLCBzdWJkb21haW4sIHF1aWMpCiAKICAgICAgICAg
Zm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAgICAgICAgICAgICBpZiByZWZfdHlwZSBu
b3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNTA0LDYgKzUwMyw3IEBAIGNsYXNzIFJlZnRlc3RUZXN0
KFRlc3QpOgogICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgIHRpbWVv
dXQ9dGltZW91dCwKICAgICAgICAgICAgICAgICAgICBwYXRoPW1hbmlmZXN0X3Rlc3QucGF0aCwK
KyAgICAgICAgICAgICAgICAgICBzdWJkb21haW49bWFuaWZlc3RfdGVzdC5zdWJkb21haW4sCiAg
ICAgICAgICAgICAgICAgICAgcXVpYz1xdWljLAogICAgICAgICAgICAgICAgICAgICoqY2xzLmNs
c19rd2FyZ3MobWFuaWZlc3RfdGVzdCkpCiAKQEAgLTYyMiwxMCArNjIyLDEwIEBAIGNsYXNzIFBy
aW50UmVmdGVzdFRlc3QoUmVmdGVzdFRlc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVy
bF9iYXNlLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEs
IHJlZmVyZW5jZXMsCiAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2
aWV3cG9ydF9zaXplPU5vbmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLAotICAgICAgICAgICAgICAg
ICBwYWdlX3Jhbmdlcz1Ob25lLCBwcm90b2NvbD0iaHR0cCIsIHF1aWM9RmFsc2UpOgorICAgICAg
ICAgICAgICAgICBwYWdlX3Jhbmdlcz1Ob25lLCBwcm90b2NvbD0iaHR0cCIsIHN1YmRvbWFpbj1G
YWxzZSwgcXVpYz1GYWxzZSk6CiAgICAgICAgIHN1cGVyKFByaW50UmVmdGVzdFRlc3QsIHNlbGYp
Ll9faW5pdF9fKHVybF9iYXNlLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRl
c3RfbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZXMsIHRpbWVvdXQsIHBhdGgsIHZpZXdwb3J0X3NpemUsIGRwaSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnV6enksIHByb3RvY29s
LCBxdWljPXF1aWMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1enp5LCBwcm90b2NvbCwgc3ViZG9tYWluPXN1YmRvbWFpbiwgcXVpYz1xdWljKQogICAg
ICAgICBzZWxmLl9wYWdlX3JhbmdlcyA9IHBhZ2VfcmFuZ2VzCiAKICAgICBAY2xhc3NtZXRob2QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlLy5jb3ZlcmFnZXJjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGUwMGMwNzlmNjRjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS8uY292ZXJhZ2VyYwpAQCAtMCwwICsxLDExIEBACitbcnVuXQorYnJhbmNoID0gVHJ1ZQor
cGFyYWxsZWwgPSBUcnVlCitvbWl0ID0KKyAgKi9zaXRlLXBhY2thZ2VzLyoKKyAgKi9saWJfcHlw
eS8qCisKK1twYXRoc10KK3dwdHNlcnZlID0KKyAgd3B0c2VydmUKKyAgLnRveC8qKi9zaXRlLXBh
Y2thZ2VzL3dwdHNlcnZlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlLy5naXRpZ25vcmUK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZTg3ZDM4ODQ4OGIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlLy5naXRpZ25vcmUKQEAgLTAsMCArMSw0MCBAQAorKi5weVtjb2Rd
CisqfgorXCMqCisKK2RvY3MvX2J1aWxkLworCisjIEMgZXh0ZW5zaW9ucworKi5zbworCisjIFBh
Y2thZ2VzCisqLmVnZworKi5lZ2ctaW5mbworZGlzdAorYnVpbGQKK2VnZ3MKK3BhcnRzCitiaW4K
K3Zhcgorc2Rpc3QKK2RldmVsb3AtZWdncworLmluc3RhbGxlZC5jZmcKK2xpYgorbGliNjQKKwor
IyBJbnN0YWxsZXIgbG9ncworcGlwLWxvZy50eHQKKworIyBVbml0IHRlc3QgLyBjb3ZlcmFnZSBy
ZXBvcnRzCisuY292ZXJhZ2UKKy50b3gKK25vc2V0ZXN0cy54bWwKK3Rlc3RzL2Z1bmN0aW9uYWwv
aHRtbC8qCisKKyMgVHJhbnNsYXRpb25zCisqLm1vCisKKyMgTXIgRGV2ZWxvcGVyCisubXIuZGV2
ZWxvcGVyLmNmZworLnByb2plY3QKKy5weWRldnByb2plY3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2QxNmM3MzJjYWJmLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2Nz
L01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS9kb2NzL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3MvaGFuZGxlcnMucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2Nz
L2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvZG9jcy9pbnRyb2R1Y3Rpb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL21ha2UuYmF0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS9kb2NzL3BpcGVzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9yZXF1ZXN0LnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9yZXNwb25zZS5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL2RvY3Mvcm91dGVyLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9zZXJ2ZXIucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3N0YXNo
LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAucHkKaW5kZXggNzU5Y2I0OGQx
ZjY1Li5mZGQ4NTY2NDM1YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5w
eQpAQCAtMSw3ICsxLDcgQEAKIGZyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAKIAogUEFDS0FH
RV9WRVJTSU9OID0gJzMuMCcKLWRlcHMgPSBbInNpeD49MS44IiwgImgyPT0zLjAuMSJdCitkZXBz
ID0gWyJzaXg+PTEuMTMuMCIsICJoMj49My4wLjEiXQogCiBzZXR1cChuYW1lPSd3cHRzZXJ2ZScs
CiAgICAgICB2ZXJzaW9uPVBBQ0tBR0VfVkVSU0lPTiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9fX2luaXRfXy5weQppbmRl
eCBhNjgzNGI4Mjg1YTUuLmU2OWRlMjliYjJkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlv
bmFsL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9fX2luaXRfXy5weQpAQCAt
MSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC9iYXNlLnB5CmluZGV4IDdjZTUzYTU5MGI2NS4uMmU3ZmE0NDNjMzZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5w
eQpAQCAtNiwxMCArNiw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHB5dGVzdAogaW1wb3J0IHVuaXR0
ZXN0CiAKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsZW5jb2RlLCB1cmx1
bnNwbGl0Ci1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdCBpbXBvcnQgUmVxdWVzdCBhcyBC
YXNlUmVxdWVzdAotZnJvbSBzaXgubW92ZXMudXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4K
LWZyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgaXRlcml0ZW1zLCBQWTMKK2Zyb20gdXJsbGli
LnBhcnNlIGltcG9ydCB1cmxlbmNvZGUsIHVybHVuc3BsaXQKK2Zyb20gdXJsbGliLnJlcXVlc3Qg
aW1wb3J0IFJlcXVlc3QgYXMgQmFzZVJlcXVlc3QKK2Zyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0
IHVybG9wZW4KIAogZnJvbSBoeXBlciBpbXBvcnQgSFRUUDIwQ29ubmVjdGlvbiwgdGxzCiBpbXBv
cnQgc3NsCkBAIC0zNyw3ICszNiw3IEBAIGNsYXNzIFJlcXVlc3QoQmFzZVJlcXVlc3QpOgogICAg
ICAgICBpZiBoYXNhdHRyKGRhdGEsICJpdGVtcyIpOgogICAgICAgICAgICAgZGF0YSA9IHVybGVu
Y29kZShkYXRhKS5lbmNvZGUoImFzY2lpIikKIAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShk
YXRhLCBiaW5hcnlfdHlwZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGF0YSwgYnl0ZXMp
CiAKICAgICAgICAgaWYgaGFzYXR0cihCYXNlUmVxdWVzdCwgImFkZF9kYXRhIik6CiAgICAgICAg
ICAgICBCYXNlUmVxdWVzdC5hZGRfZGF0YShzZWxmLCBkYXRhKQpAQCAtNjgsNyArNjcsNyBAQCBj
bGFzcyBUZXN0VXNpbmdTZXJ2ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBpZiBoZWFk
ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJzID0ge30KIAotICAgICAgICBmb3IgbmFt
ZSwgdmFsdWUgaW4gaXRlcml0ZW1zKGhlYWRlcnMpOgorICAgICAgICBmb3IgbmFtZSwgdmFsdWUg
aW4gaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgcmVxLmFkZF9oZWFkZXIobmFtZSwgdmFs
dWUpCiAKICAgICAgICAgaWYgYm9keSBpcyBub3QgTm9uZToKQEAgLTgwLDEwICs3OSw3IEBAIGNs
YXNzIFRlc3RVc2luZ1NlcnZlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJldHVybiB1
cmxvcGVuKHJlcSkKIAogICAgIGRlZiBhc3NlcnRfbXVsdGlwbGVfaGVhZGVycyhzZWxmLCByZXNw
LCBuYW1lLCB2YWx1ZXMpOgotICAgICAgICBpZiBQWTM6Ci0gICAgICAgICAgICBhc3NlcnQgcmVz
cC5pbmZvKCkuZ2V0X2FsbChuYW1lKSA9PSB2YWx1ZXMKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGFzc2VydCByZXNwLmluZm8oKVtuYW1lXSA9PSAiLCAiLmpvaW4odmFsdWVzKQorICAgICAg
ICBhc3NlcnQgcmVzcC5pbmZvKCkuZ2V0X2FsbChuYW1lKSA9PSB2YWx1ZXMKIAogCiBAcHl0ZXN0
Lm1hcmsuc2tpcGlmKG5vdCB3cHRzZXJ2ZS51dGlscy5odHRwMl9jb21wYXRpYmxlKCksIHJlYXNv
bj0iaDIgc2VydmVyIG9ubHkgd29ya3MgaW4gcHl0aG9uIDIuNy4xMCsgYW5kIFB5dGhvbiAzLjYr
IikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2Jhci5hbnkud29ya2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9iYXIuYW55Lndvcmtlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzgyOTEzNTI4ZTYuLjAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9iYXIuYW55Lndvcmtlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L2RvY3Jvb3Qvc3ViZGlyL2ltcG9ydF9oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Rv
Y3Jvb3Qvc3ViZGlyL2ltcG9ydF9oYW5kbGVyLnB5CmluZGV4IDNiNDJiMjliZTk1MS4uZTYzMzk1
ZTI3Mzc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJkaXIvaW1w
b3J0X2hhbmRsZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViZGlyL2lt
cG9ydF9oYW5kbGVyLnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IGV4YW1wbGVfbW9kdWxlCitm
cm9tIHN1YmRpciBpbXBvcnQgZXhhbXBsZV9tb2R1bGUKIAogCiBkZWYgbWFpbihyZXF1ZXN0LCBy
ZXNwb25zZSk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJkaXIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJkaXIvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzI4MzMyYTQ1Ny4uMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci9leGFtcGxlX21vZHVsZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC9kb2Nyb290L3N1YmRpci9maWxlLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Ny
b290L3N1YmRpci9pbXBvcnRfaGFuZGxlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290
L3N1YmRpci9zdWJfcGF0aC5zdWIudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
ZG9jcm9vdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDMxNmY0MzE1OGUuLjAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rp
b25hbC9kb2Nyb290L2Jhci5hbnkud29ya2VyLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jv
b3QvZG9jdW1lbnQudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvZm9vLmFueS5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvZm9vLmFueS5zZXJ2aWNld29ya2VyLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9mb28uYW55LnNoYXJlZHdvcmtlci5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvZm9vLmFueS53b3JrZXIuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L2Zvby53aW5kb3cuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9k
b2Nyb290L2Zvby53b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2ludmFs
aWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9ub19tYWluLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL2RvY3Jvb3Qvc3ViLnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9v
dC9zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX2ZpbGVfaGFzaC5zdWIu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX2ZpbGVfaGFzaF9zdWJqZWN0LnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9maWxlX2hhc2hfdW5yZWNvZ25pemVk
LnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfaGVhZGVyX29yX2RlZmF1
bHQuc3ViLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9oZWFkZXJzLnN1Yi50
eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfaGVhZGVycy50eHQKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3Rz
L2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfbG9jYXRpb24uc3ViLnR4dAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rp
b25hbC9kb2Nyb290L3N1Yl9wYXJhbXMuc3ViLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Ny
b290L3N1Yl9wYXJhbXMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX3VybF9i
YXNlLnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfdXVpZC5zdWIudHh0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX3Zhci5zdWIudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL2RvY3Jvb3QvdGVzdC5hc2lzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qv
dGVzdF9oMl9kYXRhLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvdGVzdF9oMl9oZWFk
ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvdGVzdF9oMl9oZWFkZXJzX2RhdGEu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC90ZXN0X3N0cmluZy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L3Rlc3RfdHVwbGVfMi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9k
b2Nyb290L3Rlc3RfdHVwbGVfMy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3dpdGhf
aGVhZGVycy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC93aXRoX2hlYWRlcnMudHh0
LnN1Yi5oZWFkZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVy
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2hhbmRsZXJzLnB5CmluZGV4IDI2MWJmM2Jl
MmMyZi4uMWRjMmE5YmE3YmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9o
YW5kbGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVycy5weQpAQCAt
NSw3ICs1LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXVpZAogCiBpbXBvcnQgcHl0ZXN0
Ci1mcm9tIHNpeC5tb3Zlcy51cmxsaWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgorZnJvbSB1cmxs
aWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgogCiB3cHRzZXJ2ZSA9IHB5dGVzdC5pbXBvcnRvcnNr
aXAoIndwdHNlcnZlIikKIGZyb20gLmJhc2UgaW1wb3J0IFRlc3RVc2luZ1NlcnZlciwgVGVzdFVz
aW5nSDJTZXJ2ZXIsIGRvY19yb290CkBAIC00MzYsMTIgKzQzNiwxMiBAQCBjbGFzcyBUZXN0U2Vy
dmljZVdvcmtlcnNIYW5kbGVyKFRlc3RXcmFwcGVySGFuZGxlclVzaW5nU2VydmVyKToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0bWwnLCBzZXJ2ZS5TZXJ2aWNlV29ya2Vy
c0hhbmRsZXIpCiAKIAotY2xhc3MgVGVzdEFueVdvcmtlckhhbmRsZXIoVGVzdFdyYXBwZXJIYW5k
bGVyVXNpbmdTZXJ2ZXIpOgorY2xhc3MgVGVzdENsYXNzaWNXb3JrZXJIYW5kbGVyKFRlc3RXcmFw
cGVySGFuZGxlclVzaW5nU2VydmVyKToKICAgICBkdW1teV9maWxlcyA9IHsnYmFyLmFueS5qcyc6
IGInJ30KIAogICAgIGRlZiB0ZXN0X2FueV93b3JrX2pzKHNlbGYpOgogICAgICAgICBzZWxmLnJ1
bl93cmFwcGVyX3Rlc3QoJ2Jhci5hbnkud29ya2VyLmpzJywgJ3RleHQvamF2YXNjcmlwdCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZS5BbnlXb3JrZXJIYW5kbGVyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmUuQ2xhc3NpY1dvcmtlckhhbmRsZXIpCiAK
IAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rp
b25hbC90ZXN0X2lucHV0X2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9m
aWxlLnB5CmluZGV4IDk4MTc2ZTU4Mzg2Mi4uOTNkYjYyYzg0MjI4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9maWxlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC90ZXN0X2lucHV0X2ZpbGUucHkKQEAgLTEsOCArMSw2IEBACi1pbXBvcnQgc3lzCiBmcm9tIGlv
IGltcG9ydCBCeXRlc0lPCiAKIGltcG9ydCBweXRlc3QKLWZyb20gc2l4IGltcG9ydCBQWTIKIAog
ZnJvbSB3cHRzZXJ2ZS5yZXF1ZXN0IGltcG9ydCBJbnB1dEZpbGUKIApAQCAtMTIxLDggKzExOSw2
IEBAIGRlZiB0ZXN0X3JlYWRsaW5lcygpOgogICAgIGFzc2VydCBpbnB1dF9maWxlLnJlYWRsaW5l
cygpID09IHRlc3RfZmlsZS5yZWFkbGluZXMoKQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
cGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgUFkyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzEyOTQ5IikK
IGRlZiB0ZXN0X3JlYWRsaW5lc19maWxlX2JpZ2dlcl90aGFuX2J1ZmZlcigpOgogICAgIG9sZF9t
YXhfYnVmID0gSW5wdXRGaWxlLm1heF9idWZmZXJfc2l6ZQogICAgIElucHV0RmlsZS5tYXhfYnVm
ZmVyX3NpemUgPSAxMApAQCAtMTQwLDggKzEzNiw2IEBAIGRlZiB0ZXN0X2l0ZXIoKToKICAgICAg
ICAgYXNzZXJ0IGEgPT0gYgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0g
IndpbjMyIiBhbmQgUFkyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzEyOTQ5IikKIGRlZiB0ZXN0X2l0
ZXJfZmlsZV9iaWdnZXJfdGhhbl9idWZmZXIoKToKICAgICBvbGRfbWF4X2J1ZiA9IElucHV0Rmls
ZS5tYXhfYnVmZmVyX3NpemUKICAgICBJbnB1dEZpbGUubWF4X2J1ZmZlcl9zaXplID0gMTAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3BpcGVzLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5j
dGlvbmFsL3Rlc3RfcGlwZXMucHkKaW5kZXggYTAwZGU3MWQ3OTY4Li44YjQwZTFjODRmZjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3BpcGVzLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC90ZXN0X3BpcGVzLnB5CkBAIC0yLDkgKzIsNyBAQCBpbXBvcnQgb3MKIGltcG9y
dCB1bml0dGVzdAogaW1wb3J0IHRpbWUKIGltcG9ydCBqc29uCi0KLWZyb20gc2l4IGltcG9ydCBh
c3NlcnRSZWdleAotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgoraW1wb3J0IHVybGxpYgog
CiBpbXBvcnQgcHl0ZXN0CiAKQEAgLTEyMSw3ICsxMTksNyBAQCBzZXJ2ZXI6IGh0dHA6Ly9sb2Nh
bGhvc3Q6ezB9IiIiLmZvcm1hdChzZWxmLnNlcnZlci5wb3J0KS5lbmNvZGUoImFzY2lpIikKIAog
ICAgIGRlZiB0ZXN0X3N1Yl91dWlkKHNlbGYpOgogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0
KCIvc3ViX3V1aWQuc3ViLnR4dCIpCi0gICAgICAgIGFzc2VydFJlZ2V4KHNlbGYsIHJlc3AucmVh
ZCgpLnJzdHJpcCgpLCBiIkJlZm9yZSBbYS1mMC05LV0rIEFmdGVyIikKKyAgICAgICAgc2VsZi5h
c3NlcnRSZWdleChyZXNwLnJlYWQoKS5yc3RyaXAoKSwgYiJCZWZvcmUgW2EtZjAtOS1dKyBBZnRl
ciIpCiAKICAgICBkZWYgdGVzdF9zdWJfdmFyKHNlbGYpOgogICAgICAgICByZXNwID0gc2VsZi5y
ZXF1ZXN0KCIvc3ViX3Zhci5zdWIudHh0IikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC90ZXN0X3JlcXVlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXF1ZXN0LnB5Cmlu
ZGV4IGIzMGU2YzRjYjY0NS4uOTM3MWNkMGUyNDlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0
aW9uYWwvdGVzdF9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3JlcXVl
c3QucHkKQEAgLTEsNiArMSw3IEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogaW1wb3J0IHB5
dGVzdAotZnJvbSBzaXggaW1wb3J0IFBZMworCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVv
dGVfZnJvbV9ieXRlcwogCiB3cHRzZXJ2ZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIndwdHNlcnZl
IikKIGZyb20gLmJhc2UgaW1wb3J0IFRlc3RVc2luZ1NlcnZlcgpAQCAtMTQ0LDEyICsxNDUsNyBA
QCBjbGFzcyBUZXN0UmVxdWVzdChUZXN0VXNpbmdTZXJ2ZXIpOgogCiAgICAgICAgICMgV2UgaW50
ZW50aW9uYWxseSBjaG9vc2UgYW4gZW5jb2RpbmcgdGhhdCdzIG5vdCB0aGUgZGVmYXVsdCBVVEYt
OC4KICAgICAgICAgZW5jb2RlZF90ZXh0ID0gdSLjganjgYbjgoIiLmVuY29kZSgic2hpZnQtamlz
IikKLSAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0
IHF1b3RlX2Zyb21fYnl0ZXMKLSAgICAgICAgICAgIHF1b3RlZCA9IHF1b3RlX2Zyb21fYnl0ZXMo
ZW5jb2RlZF90ZXh0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbSB1cmxsaWIgaW1w
b3J0IHF1b3RlCi0gICAgICAgICAgICBxdW90ZWQgPSBxdW90ZShlbmNvZGVkX3RleHQpCisgICAg
ICAgIHF1b3RlZCA9IHF1b3RlX2Zyb21fYnl0ZXMoZW5jb2RlZF90ZXh0KQogICAgICAgICByZXNw
ID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBxdWVyeT0iZm9vPSIrcXVvdGVkKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGVuY29kZWRfdGV4dCwgcmVzcC5yZWFkKCkpCiAKQEAgLTE2MywxMyAr
MTU5LDggQEAgY2xhc3MgVGVzdFJlcXVlc3QoVGVzdFVzaW5nU2VydmVyKToKIAogICAgICAgICAj
IFdlIGludGVudGlvbmFsbHkgY2hvb3NlIGFuIGVuY29kaW5nIHRoYXQncyBub3QgdGhlIGRlZmF1
bHQgVVRGLTguCiAgICAgICAgIGVuY29kZWRfdGV4dCA9IHUi44Gp44GG44KCIi5lbmNvZGUoInNo
aWZ0LWppcyIpCi0gICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgIGZyb20gdXJsbGliLnBhcnNl
IGltcG9ydCBxdW90ZV9mcm9tX2J5dGVzCi0gICAgICAgICAgICAjIEFmdGVyIHVybGVuY29kaW5n
LCB0aGUgc3RyaW5nIHNob3VsZCBvbmx5IGNvbnRhaW4gQVNDSUkuCi0gICAgICAgICAgICBxdW90
ZWQgPSBxdW90ZV9mcm9tX2J5dGVzKGVuY29kZWRfdGV4dCkuZW5jb2RlKCJhc2NpaSIpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBmcm9tIHVybGxpYiBpbXBvcnQgcXVvdGUKLSAgICAgICAg
ICAgIHF1b3RlZCA9IHF1b3RlKGVuY29kZWRfdGV4dCkKKyAgICAgICAgIyBBZnRlciB1cmxlbmNv
ZGluZywgdGhlIHN0cmluZyBzaG91bGQgb25seSBjb250YWluIEFTQ0lJLgorICAgICAgICBxdW90
ZWQgPSBxdW90ZV9mcm9tX2J5dGVzKGVuY29kZWRfdGV4dCkuZW5jb2RlKCJhc2NpaSIpCiAgICAg
ICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVbMV0sIG1ldGhvZD0iUE9TVCIsIGJvZHk9YiJm
b289IitxdW90ZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZF90ZXh0LCByZXNw
LnJlYWQoKSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2Uu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXNwb25zZS5weQppbmRleCBjYzc0MGJiOTlk
ZjkuLjIzZjEzZjg2ZDExZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVz
cG9uc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEs
MTEgKzEsMTIgQEAKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQganNvbgoraW1w
b3J0IHR5cGVzCisKK2Zyb20gaHR0cC5jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIGZyb20g
aW8gaW1wb3J0IEJ5dGVzSU8KIAogaW1wb3J0IHB5dGVzdAotZnJvbSBzaXggaW1wb3J0IGNyZWF0
ZV9ib3VuZF9tZXRob2QsIFBZMwotZnJvbSBzaXgubW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJh
ZFN0YXR1c0xpbmUKIAogd3B0c2VydmUgPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIp
CiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdTZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBk
b2Nfcm9vdApAQCAtMjIsOCArMjMsOCBAQCBjbGFzcyBUZXN0UmVzcG9uc2UoVGVzdFVzaW5nU2Vy
dmVyKToKICAgICBkZWYgdGVzdF9oZWFkX3dpdGhvdXRfYm9keShzZWxmKToKICAgICAgICAgQHdw
dHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVz
cG9uc2UpOgotICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVyLmVuZF9oZWFkZXJzID0gY3JlYXRl
X2JvdW5kX21ldGhvZChzZW5kX2JvZHlfYXNfaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZXIp
CisgICAgICAgICAgICByZXNwb25zZS53cml0ZXIuZW5kX2hlYWRlcnMgPSB0eXBlcy5NZXRob2RU
eXBlKHNlbmRfYm9keV9hc19oZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlcikKICAgICAgICAgICAg
IHJldHVybiBbKCJYLVRlc3QiLCAiVEVTVCIpXSwgImJvZHlcclxuIgogCiAgICAgICAgIHJvdXRl
ID0gKCJHRVQiLCAiL3Rlc3QvdGVzdF9oZWFkX3dpdGhvdXRfYm9keSIsIGhhbmRsZXIpCkBAIC0z
Nyw4ICszOCw4IEBAIGNsYXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAg
ICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0
LCByZXNwb25zZSk6CiAgICAgICAgICAgICByZXNwb25zZS5zZW5kX2JvZHlfZm9yX2hlYWRfcmVx
dWVzdCA9IFRydWUKLSAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlci5lbmRfaGVhZGVycyA9IGNy
ZWF0ZV9ib3VuZF9tZXRob2Qoc2VuZF9ib2R5X2FzX2hlYWRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uud3Jp
dGVyKQorICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVyLmVuZF9oZWFkZXJzID0gdHlwZXMuTWV0
aG9kVHlwZShzZW5kX2JvZHlfYXNfaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZXIpCiAgICAgICAg
ICAgICByZXR1cm4gWygiWC1UZXN0IiwgIlRFU1QiKV0sICJib2R5XHJcbiIKIAogICAgICAgICBy
b3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3Rlc3RfaGVhZF93aXRoX2JvZHkiLCBoYW5kbGVyKQpAQCAt
MTc3LDEzICsxNzgsOSBAQCBjbGFzcyBUZXN0UmVzcG9uc2UoVGVzdFVzaW5nU2VydmVyKToKICAg
ICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC90ZXN0X3dyaXRlX3Jhd19jb250ZW50IiwgaGFu
ZGxlcikKICAgICAgICAgc2VsZi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKIAotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdKQotICAg
ICAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJlc3BfY29udGVudAotICAgICAgICBleGNl
cHQgQmFkU3RhdHVzTGluZSBhcyBlOgotICAgICAgICAgICAgIyBJbiBQeXRob24zLCBhbiBpbnZh
bGlkIEhUVFAgcmVxdWVzdCBzaG91bGQgdGhyb3cgQmFkU3RhdHVzTGluZS4KLSAgICAgICAgICAg
IGFzc2VydCBQWTMKLSAgICAgICAgICAgIGFzc2VydCBzdHIoZSkgPT0gcmVzcF9jb250ZW50LmRl
Y29kZSgndXRmLTgnKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoQmFkU3RhdHVzTGluZSkg
YXMgZToKKyAgICAgICAgICAgIHNlbGYucmVxdWVzdChyb3V0ZVsxXSkKKyAgICAgICAgYXNzZXJ0
IHN0cihlLnZhbHVlKSA9PSByZXNwX2NvbnRlbnQuZGVjb2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRl
c3RIMlJlc3BvbnNlKFRlc3RVc2luZ0gyU2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV93aXRo
b3V0X2VuZGluZ19zdHJlYW0oc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
dGVzdF9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zZXJ2ZXIucHkKaW5kZXgg
MDUxZGMzZjFkZWZhLi5mM2IwOTVjZmJmMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC90ZXN0X3NlcnZlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zZXJ2ZXIucHkK
QEAgLTEsNyArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IHB5dGVzdAotZnJvbSBz
aXgubW92ZXMudXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJyb3IKK2Zyb20gdXJsbGliLmVycm9y
IGltcG9ydCBIVFRQRXJyb3IKIAogd3B0c2VydmUgPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRz
ZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdTZXJ2ZXIsIFRlc3RVc2luZ0gyU2Vy
dmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4IDBiOTYwYzFlOWY4Ni4uMWM0YzlhZDkz
M2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQpAQCAtMSw0ICsxLDMgQEAKLWltcG9ydCBz
eXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHV1aWQKIApAQCAtMTAsOCArOSw2IEBAIGZyb20g
d3B0c2VydmUuc3Rhc2ggaW1wb3J0IFN0YXNoU2VydmVyCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0
VXNpbmdTZXJ2ZXIKIAogCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy52ZXJzaW9uX2luZm8gPj0g
KDMsIDgpIGFuZCBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsCi0gICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0ibXVsdGlwcm9jZXNzaW5nIHRlc3QgaGFuZ3MgaW4gUHl0aG9uIDMuOCBvbiBtYWNP
UyAoIzI0ODgwKSIpCiBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVy
KToKICAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdD1Ob25lKToKICAgICAgICAgd2l0aCBTdGFzaFNl
cnZlcihOb25lLCBhdXRoa2V5PXN0cih1dWlkLnV1aWQ0KCkpKToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgwNjUyMDU3ZTllLi4wMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL19faW5p
dF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
dGVzdF9jb29raWVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaGFuZGxlcnMucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9maWxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcGlwZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXF1ZXN0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90
ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVz
dF9zZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfcmVxdWVzdC5weQppbmRl
eCA5MTM5MGIyOGU0MTUuLmY2OTQ3MGQ0YjZkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3Jl
cXVlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKQEAgLTEsNSArMSw0IEBACiBp
bXBvcnQgbW9jawotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlCiAKIGZyb20gd3B0c2VydmUu
cmVxdWVzdCBpbXBvcnQgUmVxdWVzdCwgUmVxdWVzdEhlYWRlcnMsIE11bHRpRGljdAogCkBAIC00
OSw5ICs0OCw5IEBAIGRlZiB0ZXN0X3JlcXVlc3RfaGVhZGVyc19lbmNvZGluZygpOgogICAgICAg
ICAneC1iYXInOiBbJ2JhcjEnLCAnYmFyMiddLAogICAgIH0pCiAgICAgaGVhZGVycyA9IFJlcXVl
c3RIZWFkZXJzKHJhd19oZWFkZXJzKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gt
Zm9vJ10sIGJpbmFyeV90eXBlKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gtYmFy
J10sIGJpbmFyeV90eXBlKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnMuZ2V0X2xpc3Qo
J3gtYmFyJylbMF0sIGJpbmFyeV90eXBlKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnNb
J3gtZm9vJ10sIGJ5dGVzKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gtYmFyJ10s
IGJ5dGVzKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnMuZ2V0X2xpc3QoJ3gtYmFyJylb
MF0sIGJ5dGVzKQogCiAKIGRlZiB0ZXN0X3JlcXVlc3RfdXJsX2Zyb21fc2VydmVyX2FkZHJlc3Mo
KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXNwb25zZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9y
ZXNwb25zZS5weQppbmRleCBmODA0OGFjMWNlNTUuLjE2NDQwZGEyYjI3NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy90ZXN0X3Jlc3BvbnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXNwb25zZS5weQpA
QCAtMSw1ICsxLDUgQEAKIGltcG9ydCBtb2NrCi1mcm9tIHNpeCBpbXBvcnQgQnl0ZXNJTworZnJv
bSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBmcm9tIHdwdHNlcnZlLnJlc3BvbnNlIGltcG9ydCBSZXNw
b25zZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rf
c3Rhc2gucHkKaW5kZXggMzFhZjE1NThiMGNjLi40MTU3ZGI1NzI2ZDQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
dGVzdHMvdGVzdF9zdGFzaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKQEAgLTEsMTAg
KzEsMTAgQEAKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWltcG9ydCBzeXMKIGltcG9ydCB0aHJl
YWRpbmcKK2ltcG9ydCBzeXMKKwogZnJvbSBtdWx0aXByb2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0
IEJhc2VNYW5hZ2VyCiAKIGltcG9ydCBweXRlc3QKLWZyb20gc2l4IGltcG9ydCBQWTMKIAogU3Rh
c2ggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTIw
LDYgKzIwLDcgQEAgZGVmIGFkZF9jbGVhbnVwKCk6CiAgICAgZm9yIGZuIGluIGZuczoKICAgICAg
ICAgZm4oKQogCisKIGRlZiBydW4ocHJvY2Vzc19xdWV1ZSwgcmVxdWVzdF9sb2NrLCByZXNwb25z
ZV9sb2NrKToKICAgICAiIiJDcmVhdGUgdHdvIFN0YXNoIGluc3RhbmNlcyBpbiBwYXJhbGxlbCB0
aHJlYWRzLiBVc2UgdGhlIHByb3ZpZGVkIGxvY2tzCiAgICAgdG8gZW5zdXJlIHRoZSBmaXJzdCB0
aHJlYWQgaXMgYWN0aXZlbHkgZXN0YWJsaXNoaW5nIGFuIGludGVycHJvY2VzcwpAQCAtNTgsMTYg
KzU5LDE5IEBAIGRlZiBydW4ocHJvY2Vzc19xdWV1ZSwgcmVxdWVzdF9sb2NrLCByZXNwb25zZV9s
b2NrKToKICAgICBwcm9jZXNzX3F1ZXVlLnB1dCh0aHJlYWRfcXVldWUuZ2V0KCkpCiAKIAorY2xh
c3MgU2xvd0xvY2soQmFzZU1hbmFnZXIpOgorICAgICMgVGhpcyBjYW4gb25seSBiZSB1c2VkIGlu
IHRlc3RfZGVsYXllZF9sb2NrIHNpbmNlIHRoYXQgdGVzdCBtb2RpZmllcyB0aGUKKyAgICAjIGNs
YXNzIGJvZHksIGJ1dCBpdCBoYXMgdG8gYmUgYSBnbG9iYWwgZm9yIG11bHRpcHJvY2Vzc2luZwor
ICAgIHBhc3MKKworCiBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIg
b3IKLSAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRf
bWV0aG9kKCkgPT0gInNwYXduIiwKKyAgICAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3Npbmcu
Z2V0X3N0YXJ0X21ldGhvZCgpID09ICJzcGF3biIsCiAgICAgICAgICAgICAgICAgICAgcmVhc29u
PSJodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMTY5Mzgi
KQogZGVmIHRlc3RfZGVsYXllZF9sb2NrKGFkZF9jbGVhbnVwKToKICAgICAiIiJFbnN1cmUgdGhh
dCBkZWxheXMgaW4gcHJveGllZCBMb2NrIHJldHJpZXZhbCBkbyBub3QgaW50ZXJmZXJlIHdpdGgK
ICAgICBpbml0aWFsaXphdGlvbiBpbiBwYXJhbGxlbCB0aHJlYWRzLiIiIgogCi0gICAgY2xhc3Mg
U2xvd0xvY2soQmFzZU1hbmFnZXIpOgotICAgICAgICBwYXNzCi0KICAgICByZXF1ZXN0X2xvY2sg
PSBtdWx0aXByb2Nlc3NpbmcuTG9jaygpCiAgICAgcmVzcG9uc2VfbG9jayA9IG11bHRpcHJvY2Vz
c2luZy5Mb2NrKCkKIApAQCAtOTgsMTYgKzEwMiwxOSBAQCBkZWYgdGVzdF9kZWxheWVkX2xvY2so
YWRkX2NsZWFudXApOgogICAgICAgICAiYm90aCBpbnN0YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikK
IAogCitjbGFzcyBTbG93RGljdChCYXNlTWFuYWdlcik6CisgICAgIyBUaGlzIGNhbiBvbmx5IGJl
IHVzZWQgaW4gdGVzdF9kZWxheWVkX2RpY3Qgc2luY2UgdGhhdCB0ZXN0IG1vZGlmaWVzIHRoZQor
ICAgICMgY2xhc3MgYm9keSwgYnV0IGl0IGhhcyB0byBiZSBhIGdsb2JhbCBmb3IgbXVsdGlwcm9j
ZXNzaW5nCisgICAgcGFzcworCisKIEBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0g
IndpbjMyIiBvcgotICAgICAgICAgICAgICAgICAgIFBZMyBhbmQgbXVsdGlwcm9jZXNzaW5nLmdl
dF9zdGFydF9tZXRob2QoKSA9PSAic3Bhd24iLAorICAgICAgICAgICAgICAgICAgIG11bHRpcHJv
Y2Vzc2luZy5nZXRfc3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAg
ICByZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vl
cy8xNjkzOCIpCiBkZWYgdGVzdF9kZWxheWVkX2RpY3QoYWRkX2NsZWFudXApOgogICAgICIiIkVu
c3VyZSB0aGF0IGRlbGF5cyBpbiBwcm94aWVkIGBkaWN0YCByZXRyaWV2YWwgZG8gbm90IGludGVy
ZmVyZSB3aXRoCiAgICAgaW5pdGlhbGl6YXRpb24gaW4gcGFyYWxsZWwgdGhyZWFkcy4iIiIKIAot
ICAgIGNsYXNzIFNsb3dEaWN0KEJhc2VNYW5hZ2VyKToKLSAgICAgICAgcGFzcwotCiAgICAgcmVx
dWVzdF9sb2NrID0gbXVsdGlwcm9jZXNzaW5nLkxvY2soKQogICAgIHJlc3BvbnNlX2xvY2sgPSBt
dWx0aXByb2Nlc3NpbmcuTG9jaygpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYzcwOTI0YzA0ZWMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X2Nv
bmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXBsYWNlbWVudF90b2tlbml6ZXIucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3Rz
L3Rlc3RfcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXNwb25zZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVz
dF9zdGFzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWFmNjdlOTg1OC4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9SRUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3NldHVwLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29uZmlnLnB5CmluZGV4
IDRkNjUzZjUyMmEwNS4uODQzZjZlNjY0ZTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZp
Zy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQpAQCAtMiw5ICsyLDcgQEAgaW1wb3J0IGNv
cHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRl
ZmF1bHRkaWN0Ci0KLWZyb20gc2l4Lm1vdmVzLmNvbGxlY3Rpb25zX2FiYyBpbXBvcnQgTWFwcGlu
ZwotZnJvbSBzaXggaW1wb3J0IGludGVnZXJfdHlwZXMsIGl0ZXJpdGVtcywgaXRlcnZhbHVlcywg
c3RyaW5nX3R5cGVzCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZwogCiBmcm9t
IC4gaW1wb3J0IHNzbHV0aWxzCiBmcm9tIC51dGlscyBpbXBvcnQgZ2V0X3BvcnQKQEAgLTIwLDcg
KzE4LDcgQEAgX3JlbmFtZWRfcHJvcHMgPSB7CiAKIGRlZiBfbWVyZ2VfZGljdChiYXNlX2RpY3Qs
IG92ZXJyaWRlX2RpY3QpOgogICAgIHJ2ID0gYmFzZV9kaWN0LmNvcHkoKQotICAgIGZvciBrZXks
IHZhbHVlIGluIGl0ZXJpdGVtcyhiYXNlX2RpY3QpOgorICAgIGZvciBrZXksIHZhbHVlIGluIGJh
c2VfZGljdC5pdGVtcygpOgogICAgICAgICBpZiBrZXkgaW4gb3ZlcnJpZGVfZGljdDoKICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgogICAgICAgICAgICAgICAgIHJ2W2tl
eV0gPSBfbWVyZ2VfZGljdCh2YWx1ZSwgb3ZlcnJpZGVfZGljdFtrZXldKQpAQCAtODksNyArODcs
NyBAQCBjbGFzcyBDb25maWcoTWFwcGluZyk6CiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFy
Z2V0W3BhcnRdCiAgICAgICAgICAgICB2YWx1ZSA9IHRhcmdldFtrZXlbLTFdXQogICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6Ci0gICAgICAgICAgICAgICAgdGFyZ2V0W2tl
eVstMV1dID0ge2s6diBmb3IgKGssdikgaW4gaXRlcml0ZW1zKHZhbHVlKSBpZiBub3Qgay5zdGFy
dHN3aXRoKCJvcCIpfQorICAgICAgICAgICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IHtrOnYgZm9y
IChrLHYpIGluIHZhbHVlLml0ZW1zKCkgaWYgbm90IGsuc3RhcnRzd2l0aCgib3AiKX0KICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0gW3ggZm9yIHgg
aW4gdmFsdWUgaWYgbm90IHguc3RhcnRzd2l0aCgib3AiKV0KIApAQCAtOTgsOSArOTYsOSBAQCBj
bGFzcyBDb25maWcoTWFwcGluZyk6CiAKIGRlZiBqc29uX3R5cGVzKG9iaik6CiAgICAgaWYgaXNp
bnN0YW5jZShvYmosIGRpY3QpOgotICAgICAgICByZXR1cm4ge2tleToganNvbl90eXBlcyh2YWx1
ZSkgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKG9iail9Ci0gICAgaWYgKGlzaW5zdGFuY2Uo
b2JqLCBzdHJpbmdfdHlwZXMpIG9yCi0gICAgICAgIGlzaW5zdGFuY2Uob2JqLCBpbnRlZ2VyX3R5
cGVzKSBvcgorICAgICAgICByZXR1cm4ge2tleToganNvbl90eXBlcyh2YWx1ZSkgZm9yIGtleSwg
dmFsdWUgaW4gb2JqLml0ZW1zKCl9CisgICAgaWYgKGlzaW5zdGFuY2Uob2JqLCBzdHIpIG9yCisg
ICAgICAgIGlzaW5zdGFuY2Uob2JqLCBpbnQpIG9yCiAgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBm
bG9hdCkgb3IKICAgICAgICAgaXNpbnN0YW5jZShvYmosIGJvb2wpIG9yCiAgICAgICAgIG9iaiBp
cyBOb25lKToKQEAgLTIwMywxMyArMjAxLDEzIEBAIGNsYXNzIENvbmZpZ0J1aWxkZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICBzZWxmLmxvZ19sZXZlbCA9IGxldmVsX25hbWUKICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlcl9uYW1lID0gbG9nZ2VyLm5hbWUKIAotICAgICAgICBmb3IgaywgdiBp
biBpdGVyaXRlbXMoc2VsZi5fZGVmYXVsdCk6CisgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2Rl
ZmF1bHQuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYuX2RhdGFba10gPSBrd2FyZ3MucG9wKGss
IHYpCiAKICAgICAgICAgc2VsZi5fZGF0YVsic3ViZG9tYWlucyJdID0gc3ViZG9tYWlucwogICAg
ICAgICBzZWxmLl9kYXRhWyJub3Rfc3ViZG9tYWlucyJdID0gbm90X3N1YmRvbWFpbnMKIAotICAg
ICAgICBmb3IgaywgbmV3X2sgaW4gaXRlcml0ZW1zKF9yZW5hbWVkX3Byb3BzKToKKyAgICAgICAg
Zm9yIGssIG5ld19rIGluIF9yZW5hbWVkX3Byb3BzLml0ZW1zKCk6CiAgICAgICAgICAgICBpZiBr
IGluIGt3YXJnczoKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKAogICAgICAg
ICAgICAgICAgICAgICAiJXMgaW4gY29uZmlnIGlzIGRlcHJlY2F0ZWQ7IHVzZSAlcyBpbnN0ZWFk
IiAlICgKQEAgLTI0Miw3ICsyNDAsNyBAQCBjbGFzcyBDb25maWdCdWlsZGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICBpZiBrIGluIG92ZXJyaWRlOgogICAgICAgICAgICAgICAgIHNlbGYuX3NldF9v
dmVycmlkZShrLCBvdmVycmlkZS5wb3AoaykpCiAKLSAgICAgICAgZm9yIGssIG5ld19rIGluIGl0
ZXJpdGVtcyhfcmVuYW1lZF9wcm9wcyk6CisgICAgICAgIGZvciBrLCBuZXdfayBpbiBfcmVuYW1l
ZF9wcm9wcy5pdGVtcygpOgogICAgICAgICAgICAgaWYgayBpbiBvdmVycmlkZToKICAgICAgICAg
ICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKAogICAgICAgICAgICAgICAgICAgICAiJXMgaW4g
Y29uZmlnIGlzIGRlcHJlY2F0ZWQ7IHVzZSAlcyBpbnN0ZWFkIiAlICgKQEAgLTI4Nyw3ICsyODUs
NyBAQCBjbGFzcyBDb25maWdCdWlsZGVyKG9iamVjdCk6CiAKICAgICBkZWYgX2dldF9wb3J0cyhz
ZWxmLCBkYXRhKToKICAgICAgICAgbmV3X3BvcnRzID0gZGVmYXVsdGRpY3QobGlzdCkKLSAgICAg
ICAgZm9yIHNjaGVtZSwgcG9ydHMgaW4gaXRlcml0ZW1zKGRhdGFbInBvcnRzIl0pOgorICAgICAg
ICBmb3Igc2NoZW1lLCBwb3J0cyBpbiBkYXRhWyJwb3J0cyJdLml0ZW1zKCk6CiAgICAgICAgICAg
ICBpZiBzY2hlbWUgaW4gWyJ3c3MiLCAiaHR0cHMiXSBhbmQgbm90IHNzbHV0aWxzLmdldF9jbHMo
ZGF0YVsic3NsIl1bInR5cGUiXSkuc3NsX2VuYWJsZWQ6CiAgICAgICAgICAgICAgICAgY29udGlu
dWUKICAgICAgICAgICAgIGZvciBpLCBwb3J0IGluIGVudW1lcmF0ZShwb3J0cyk6CkBAIC0zMDEs
NyArMjk5LDcgQEAgY2xhc3MgQ29uZmlnQnVpbGRlcihvYmplY3QpOgogICAgICAgICBob3N0c1si
Il0gPSBkYXRhWyJicm93c2VyX2hvc3QiXQogCiAgICAgICAgIHJ2ID0ge30KLSAgICAgICAgZm9y
IG5hbWUsIGhvc3QgaW4gaXRlcml0ZW1zKGhvc3RzKToKKyAgICAgICAgZm9yIG5hbWUsIGhvc3Qg
aW4gaG9zdHMuaXRlbXMoKToKICAgICAgICAgICAgIHJ2W25hbWVdID0ge3N1YmRvbWFpbjogKHN1
YmRvbWFpbi5lbmNvZGUoImlkbmEiKS5kZWNvZGUoImFzY2lpIikgKyB1Ii4iICsgaG9zdCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWJkb21haW4gaW4gZGF0YVsic3ViZG9tYWlucyJd
fQogICAgICAgICAgICAgcnZbbmFtZV1bIiJdID0gaG9zdApAQCAtMzEzLDcgKzMxMSw3IEBAIGNs
YXNzIENvbmZpZ0J1aWxkZXIob2JqZWN0KToKICAgICAgICAgaG9zdHNbIiJdID0gZGF0YVsiYnJv
d3Nlcl9ob3N0Il0KIAogICAgICAgICBydiA9IHt9Ci0gICAgICAgIGZvciBuYW1lLCBob3N0IGlu
IGl0ZXJpdGVtcyhob3N0cyk6CisgICAgICAgIGZvciBuYW1lLCBob3N0IGluIGhvc3RzLml0ZW1z
KCk6CiAgICAgICAgICAgICBydltuYW1lXSA9IHtzdWJkb21haW46IChzdWJkb21haW4uZW5jb2Rl
KCJpZG5hIikuZGVjb2RlKCJhc2NpaSIpICsgdSIuIiArIGhvc3QpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3Igc3ViZG9tYWluIGluIGRhdGFbIm5vdF9zdWJkb21haW5zIl19CiAgICAgICAg
IHJldHVybiBydgpAQCAtMzI3LDEzICszMjUsMTMgQEAgY2xhc3MgQ29uZmlnQnVpbGRlcihvYmpl
Y3QpOgogCiAgICAgZGVmIF9nZXRfZG9tYWluc19zZXQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHJl
dHVybiB7ZG9tYWluCi0gICAgICAgICAgICAgICAgZm9yIHBlcl9ob3N0X2RvbWFpbnMgaW4gaXRl
cnZhbHVlcyhkYXRhWyJkb21haW5zIl0pCi0gICAgICAgICAgICAgICAgZm9yIGRvbWFpbiBpbiBp
dGVydmFsdWVzKHBlcl9ob3N0X2RvbWFpbnMpfQorICAgICAgICAgICAgICAgIGZvciBwZXJfaG9z
dF9kb21haW5zIGluIGRhdGFbImRvbWFpbnMiXS52YWx1ZXMoKQorICAgICAgICAgICAgICAgIGZv
ciBkb21haW4gaW4gcGVyX2hvc3RfZG9tYWlucy52YWx1ZXMoKX0KIAogICAgIGRlZiBfZ2V0X25v
dF9kb21haW5zX3NldChzZWxmLCBkYXRhKToKICAgICAgICAgcmV0dXJuIHtkb21haW4KLSAgICAg
ICAgICAgICAgICBmb3IgcGVyX2hvc3RfZG9tYWlucyBpbiBpdGVydmFsdWVzKGRhdGFbIm5vdF9k
b21haW5zIl0pCi0gICAgICAgICAgICAgICAgZm9yIGRvbWFpbiBpbiBpdGVydmFsdWVzKHBlcl9o
b3N0X2RvbWFpbnMpfQorICAgICAgICAgICAgICAgIGZvciBwZXJfaG9zdF9kb21haW5zIGluIGRh
dGFbIm5vdF9kb21haW5zIl0udmFsdWVzKCkKKyAgICAgICAgICAgICAgICBmb3IgZG9tYWluIGlu
IHBlcl9ob3N0X2RvbWFpbnMudmFsdWVzKCl9CiAKICAgICBkZWYgX2dldF9hbGxfZG9tYWluc19z
ZXQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHJldHVybiBkYXRhWyJkb21haW5zX3NldCJdIHwgZGF0
YVsibm90X2RvbWFpbnNfc2V0Il0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5CmluZGV4IGQxZTk2MTRjMDMxMi4uOWViNGE0NGMxOTk4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFu
ZGxlcnMucHkKQEAgLTEsMTEgKzEsOSBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBvcwotaW1wb3J0
IHN5cwogaW1wb3J0IHRyYWNlYmFjawogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRp
Y3QKIAotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZSwgdW5xdW90ZSwg
dXJsam9pbgotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcworZnJvbSB1cmxsaWIucGFyc2UgaW1w
b3J0IHF1b3RlLCB1bnF1b3RlLCB1cmxqb2luCiAKIGZyb20gLmNvbnN0YW50cyBpbXBvcnQgY29u
dGVudF90eXBlcwogZnJvbSAucGlwZXMgaW1wb3J0IFBpcGVsaW5lLCB0ZW1wbGF0ZQpAQCAtOTks
NyArOTcsOSBAQCBjbGFzcyBEaXJlY3RvcnlIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgeyJsaW5rIjogbGluaywgIm5hbWUiOiAiLi4ifSkKICAgICAgICAgaXRlbXMgPSBbXQog
ICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCi0gICAgICAgIGZvciBpdGVtIGluIHNvcnRlZChvcy5s
aXN0ZGlyKHBhdGgpKToKKyAgICAgICAgIyBUaGlzIGVuc3VyZXMgdGhhdCAuaGVhZGVycyBhbHdh
eXMgc29ydHMgYWZ0ZXIgdGhlIGZpbGUgaXQgcHJvdmlkZXMgdGhlIGhlYWRlcnMgZm9yLiBFLmcu
LAorICAgICAgICAjIGlmIHdlIGhhdmUgeCwgeC15LCBhbmQgeC5oZWFkZXJzLCB0aGUgb3JkZXIg
d2lsbCBiZSB4LCB4LmhlYWRlcnMsIGFuZCB0aGVuIHgteS4KKyAgICAgICAgZm9yIGl0ZW0gaW4g
c29ydGVkKG9zLmxpc3RkaXIocGF0aCksIGtleT1sYW1iZGEgeDogKHhbOi1sZW4oIi5oZWFkZXJz
IildLCB4KSBpZiB4LmVuZHN3aXRoKCIuaGVhZGVycyIpIGVsc2UgKHgsIHgpKToKICAgICAgICAg
ICAgIGlmIHByZXZfaXRlbSBhbmQgcHJldl9pdGVtICsgIi5oZWFkZXJzIiA9PSBpdGVtOgogICAg
ICAgICAgICAgICAgIGl0ZW1zWy0xXVsxXSA9IGl0ZW0KICAgICAgICAgICAgICAgICBwcmV2X2l0
ZW0gPSBOb25lCkBAIC0yODcsOSArMjg3LDkgQEAgY2xhc3MgUHl0aG9uU2NyaXB0SGFuZGxlcihv
YmplY3QpOgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICI8JXMgYmFz
ZV9wYXRoOiVzIHVybF9iYXNlOiVzPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYu
YmFzZV9wYXRoLCBzZWxmLnVybF9iYXNlKQogCi0gICAgZGVmIF9zZXRfcGF0aF9hbmRfbG9hZF9m
aWxlKHNlbGYsIHJlcXVlc3QsIHJlc3BvbnNlLCBmdW5jKToKKyAgICBkZWYgX2xvYWRfZmlsZShz
ZWxmLCByZXF1ZXN0LCByZXNwb25zZSwgZnVuYyk6CiAgICAgICAgICIiIgotICAgICAgICBUaGlz
IG1vZGlmaWVzIHRoZSBgc3lzLnBhdGhgIGFuZCBsb2FkcyB0aGUgcmVxdWVzdGVkIHB5dGhvbiBm
aWxlIGFzIGFuIGVudmlyb24gdmFyaWFibGUuCisgICAgICAgIFRoaXMgbG9hZHMgdGhlIHJlcXVl
c3RlZCBweXRob24gZmlsZSBhcyBhbiBlbnZpcm9uIHZhcmlhYmxlLgogCiAgICAgICAgIE9uY2Ug
dGhlIGVudmlyb24gaXMgbG9hZGVkLCB0aGUgcGFzc2VkIGBmdW5jYCBpcyBydW4gd2l0aCB0aGlz
IGxvYWRlZCBlbnZpcm9uLgogCkBAIC0zMDAsMTEgKzMwMCw4IEBAIGNsYXNzIFB5dGhvblNjcmlw
dEhhbmRsZXIob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHBhdGggPSBmaWxlc3lzdGVt
X3BhdGgoc2VsZi5iYXNlX3BhdGgsIHJlcXVlc3QsIHNlbGYudXJsX2Jhc2UpCiAKLSAgICAgICAg
c3lzX3BhdGggPSBzeXMucGF0aFs6XQotICAgICAgICBzeXNfbW9kdWxlcyA9IHN5cy5tb2R1bGVz
LmNvcHkoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlbnZpcm9uID0geyJfX2ZpbGVfXyI6
IHBhdGh9Ci0gICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5kaXJuYW1lKHBh
dGgpKQogICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGY6CiAgICAgICAgICAg
ICAgICAgZXhlYyhjb21waWxlKGYucmVhZCgpLCBwYXRoLCAnZXhlYycpLCBlbnZpcm9uLCBlbnZp
cm9uKQogCkBAIC0zMTMsOSArMzEwLDYgQEAgY2xhc3MgUHl0aG9uU2NyaXB0SGFuZGxlcihvYmpl
Y3QpOgogCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgcmFpc2UgSFRUUEV4
Y2VwdGlvbig0MDQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMucGF0aCA9IHN5
c19wYXRoCi0gICAgICAgICAgICBzeXMubW9kdWxlcyA9IHN5c19tb2R1bGVzCiAKICAgICBkZWYg
X19jYWxsX18oc2VsZiwgcmVxdWVzdCwgcmVzcG9uc2UpOgogICAgICAgICBkZWYgZnVuYyhyZXF1
ZXN0LCByZXNwb25zZSwgZW52aXJvbiwgcGF0aCk6CkBAIC0zMjYsNyArMzIwLDcgQEAgY2xhc3Mg
UHl0aG9uU2NyaXB0SGFuZGxlcihvYmplY3QpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICByYWlzZSBIVFRQRXhjZXB0aW9uKDUwMCwgIk5vIG1haW4gZnVuY3Rpb24gaW4gc2Ny
aXB0ICVzIiAlIHBhdGgpCiAKLSAgICAgICAgc2VsZi5fc2V0X3BhdGhfYW5kX2xvYWRfZmlsZShy
ZXF1ZXN0LCByZXNwb25zZSwgZnVuYykKKyAgICAgICAgc2VsZi5fbG9hZF9maWxlKHJlcXVlc3Qs
IHJlc3BvbnNlLCBmdW5jKQogCiAgICAgZGVmIGZyYW1lX2hhbmRsZXIoc2VsZiwgcmVxdWVzdCk6
CiAgICAgICAgICIiIgpAQCAtMzUzLDcgKzM0Nyw3IEBAIGNsYXNzIFB5dGhvblNjcmlwdEhhbmRs
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICByYWlzZSBIVFRQRXhjZXB0aW9uKDUwMCwgIk5v
IG1haW4gZnVuY3Rpb24gb3IgaGFuZGxlcnMgaW4gc2NyaXB0ICVzIiAlIHBhdGgpCiAKICAgICAg
ICAgICAgIHJldHVybiBoYW5kbGVyCi0gICAgICAgIHJldHVybiBzZWxmLl9zZXRfcGF0aF9hbmRf
bG9hZF9maWxlKHJlcXVlc3QsIE5vbmUsIGZ1bmMpCisgICAgICAgIHJldHVybiBzZWxmLl9sb2Fk
X2ZpbGUocmVxdWVzdCwgTm9uZSwgZnVuYykKIAogCiBweXRob25fc2NyaXB0X2hhbmRsZXIgPSBQ
eXRob25TY3JpcHRIYW5kbGVyKCkKQEAgLTQ4Nyw3ICs0ODEsNyBAQCBjbGFzcyBTdHJpbmdIYW5k
bGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKIAogICAgICAgICBzZWxmLnJl
c3BfaGVhZGVycyA9IFsoIkNvbnRlbnQtVHlwZSIsIGNvbnRlbnRfdHlwZSldCi0gICAgICAgIGZv
ciBrLCB2IGluIGl0ZXJpdGVtcyhoZWFkZXJzKToKKyAgICAgICAgZm9yIGssIHYgaW4gaGVhZGVy
cy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5yZXNwX2hlYWRlcnMuYXBwZW5kKChrLnJlcGxh
Y2UoIl8iLCAiLSIpLCB2KSkKIAogICAgICAgICBzZWxmLmhhbmRsZXIgPSBoYW5kbGVyKHNlbGYu
aGFuZGxlX3JlcXVlc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRz
ZXJ2ZS9waXBlcy5weQppbmRleCBiYmYyNWU2ZmUxMTEuLjJhYTBhYWFlZThkNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CkBAIC03LDgg
KzcsNyBAQCBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiBpbXBvcnQgdXVpZAogCi1mcm9tIHNpeC5t
b3ZlcyBpbXBvcnQgU3RyaW5nSU8KLWZyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUsIGJpbmFyeV90
eXBlCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCiB0cnk6CiAgICAgZnJvbSBodG1sIGltcG9y
dCBlc2NhcGUKQEAgLTMwNSw3ICszMDQsNyBAQCBjbGFzcyBSZXBsYWNlbWVudFRva2VuaXplcihv
YmplY3QpOgogICAgICAgICByZXR1cm4gKCJ2YXIiLCB0b2tlbikKIAogICAgIGRlZiB0b2tlbml6
ZShzZWxmLCBzdHJpbmcpOgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzdHJpbmcsIGJpbmFy
eV90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzdHJpbmcsIGJ5dGVzKQogICAgICAg
ICByZXR1cm4gc2VsZi5zY2FubmVyLnNjYW4oc3RyaW5nKVswXQogCiAgICAgc2Nhbm5lciA9IHJl
LlNjYW5uZXIoWyhiciJcJFx3KzoiLCB2YXIpLApAQCAtMzIwLDcgKzMxOSw3IEBAIGNsYXNzIEZp
cnN0V3JhcHBlcihvYmplY3QpOgogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgor
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICAgICAga2V5
ID0ga2V5LmVuY29kZSgnaXNvLTg4NTktMScpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXJh
bXMuZmlyc3Qoa2V5KQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00MDgsNyArNDA3LDcg
QEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ZGVmIGZpbGVfaGFzaChyZXF1ZXN0LCBhbGdvcml0aG0sIHBhdGgpOgotICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShhbGdvcml0aG0sIHRleHRfdHlwZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoYWxnb3JpdGhtLCBzdHIpCiAgICAgICAgIGlmIGFsZ29yaXRobSBub3QgaW4gU3ViRnVuY3Rp
b25zLnN1cHBvcnRlZF9hbGdvcml0aG1zOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
VW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG06ICclcyciICUgYWxnb3JpdGhtKQogCkBA
IC00NjAsMTIgKzQ1OSwxMiBAQCBkZWYgdGVtcGxhdGUocmVxdWVzdCwgY29udGVudCwgZXNjYXBl
X3R5cGU9Imh0bWwiKToKICAgICAgICAgdG9rZW5zID0gZGVxdWUodG9rZW5zKQogCiAgICAgICAg
IHRva2VuX3R5cGUsIGZpZWxkID0gdG9rZW5zLnBvcGxlZnQoKQotICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShmaWVsZCwgdGV4dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWVs
ZCwgc3RyKQogCiAgICAgICAgIGlmIHRva2VuX3R5cGUgPT0gInZhciI6CiAgICAgICAgICAgICB2
YXJpYWJsZSA9IGZpZWxkCiAgICAgICAgICAgICB0b2tlbl90eXBlLCBmaWVsZCA9IHRva2Vucy5w
b3BsZWZ0KCkKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpZWxkLCB0ZXh0X3R5cGUp
CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWVsZCwgc3RyKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgdmFyaWFibGUgPSBOb25lCiAKQEAgLTUxNiw3ICs1MTUsNyBAQCBkZWYg
dGVtcGxhdGUocmVxdWVzdCwgY29udGVudCwgZXNjYXBlX3R5cGU9Imh0bWwiKToKICAgICAgICAg
ICAgICAgICAgICAgInVuZXhwZWN0ZWQgdG9rZW4gdHlwZSAlcyAodG9rZW4gJyVyJyksIGV4cGVj
dGVkIGlkZW50IG9yIGFyZ3VtZW50cyIgJSAodHR5cGUsIGZpZWxkKQogICAgICAgICAgICAgICAg
ICkKIAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgKGludCwgKGJpbmFyeV90eXBl
LCB0ZXh0X3R5cGUpKSksIHRva2VucworICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwg
KGludCwgKGJ5dGVzLCBzdHIpKSksIHRva2VucwogCiAgICAgICAgIGlmIHZhcmlhYmxlIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgdmFyaWFibGVzW3ZhcmlhYmxlXSA9IHZhbHVlCkBAIC01Mjcs
MTAgKzUyNiwxMCBAQCBkZWYgdGVtcGxhdGUocmVxdWVzdCwgY29udGVudCwgZXNjYXBlX3R5cGU9
Imh0bWwiKToKICAgICAgICAgIyBTaG91bGQgcG9zc2libHkgc3VwcG9ydCBlc2NhcGluZyBmb3Ig
b3RoZXIgY29udGV4dHMgZS5nLiBzY3JpcHQKICAgICAgICAgIyBUT0RPOiByZWFkIHRoZSBlbmNv
ZGluZyBvZiB0aGUgcmVzcG9uc2UKICAgICAgICAgIyBjZ2kuZXNjYXBlKCkgb25seSB0YWtlcyB0
ZXh0IHN0cmluZ3MgaW4gUHl0aG9uIDMuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGJp
bmFyeV90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYnl0ZXMpOgogICAgICAg
ICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKHZhbHVlLCBpbnQpOgotICAgICAgICAgICAgdmFsdWUgPSB0ZXh0X3R5cGUodmFsdWUpCisg
ICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKICAgICAgICAgcmV0dXJuIGVzY2FwZV9mdW5j
KHZhbHVlKS5lbmNvZGUoInV0Zi04IikKIAogICAgIHRlbXBsYXRlX3JlZ2V4cCA9IHJlLmNvbXBp
bGUoYnIie3soW159XSopfX0iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CmluZGV4IGRiZmUwNjdiYTdmZi4uNzY2NDRjYzQ5Njk3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0
LnB5CkBAIC0yLDkgKzIsOSBAQCBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgY2dpCiBpbXBvcnQgdGVt
cGZpbGUKIAotZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8sIGJpbmFyeV90eXBlLCBpdGVyaXRlbXMs
IFBZMwotZnJvbSBzaXgubW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCi1mcm9t
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHBhcnNlX3FzbCwgdXJsc3BsaXQKK2Zyb20g
aHR0cC5jb29raWVzIGltcG9ydCBCYXNlQ29va2llCitmcm9tIGlvIGltcG9ydCBCeXRlc0lPCitm
cm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNsLCB1cmxzcGxpdAogCiBmcm9tIC4gaW1w
b3J0IHN0YXNoCiBmcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbiwgaXNvbW9ycGhpY19l
bmNvZGUsIGlzb21vcnBoaWNfZGVjb2RlCkBAIC0zMDEsOSArMzAxLDggQEAgY2xhc3MgUmVxdWVz
dChvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl9HRVQgaXMgTm9uZToKICAgICAgICAgICAgIGt3
YXJncyA9IHsKICAgICAgICAgICAgICAgICAia2VlcF9ibGFua192YWx1ZXMiOiBUcnVlLAorICAg
ICAgICAgICAgICAgICJlbmNvZGluZyI6ICJpc28tODg1OS0xIiwKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAgICBrd2FyZ3NbImVuY29kaW5nIl0gPSAi
aXNvLTg4NTktMSIKICAgICAgICAgICAgIHBhcmFtcyA9IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0
cy5xdWVyeSwgKiprd2FyZ3MpCiAgICAgICAgICAgICBzZWxmLl9HRVQgPSBNdWx0aURpY3QoKQog
ICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcGFyYW1zOgpAQCAtMzIxLDkgKzMyMCw4IEBA
IGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAgICAgICAgICAgICAgICAiZW52aXJvbiI6IHsiUkVR
VUVTVF9NRVRIT0QiOiBzZWxmLm1ldGhvZH0sCiAgICAgICAgICAgICAgICAgImhlYWRlcnMiOiBz
ZWxmLnJhd19oZWFkZXJzLAogICAgICAgICAgICAgICAgICJrZWVwX2JsYW5rX3ZhbHVlcyI6IFRy
dWUsCisgICAgICAgICAgICAgICAgImVuY29kaW5nIjogImlzby04ODU5LTEiLAogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIGt3YXJnc1siZW5jb2Rp
bmciXSA9ICJpc28tODg1OS0xIgogICAgICAgICAgICAgZnMgPSBjZ2kuRmllbGRTdG9yYWdlKCoq
a3dhcmdzKQogICAgICAgICAgICAgc2VsZi5fUE9TVCA9IE11bHRpRGljdC5mcm9tX2ZpZWxkX3N0
b3JhZ2UoZnMpCiAgICAgICAgICAgICBzZWxmLnJhd19pbnB1dC5zZWVrKHBvcykKQEAgLTMzNiw3
ICszMzQsNyBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6CiAgICAgICAgICAgICBjb29raWVfaGVh
ZGVycyA9IHNlbGYuaGVhZGVycy5nZXQoImNvb2tpZSIsIGIiIikKICAgICAgICAgICAgIHBhcnNl
ci5sb2FkKGNvb2tpZV9oZWFkZXJzKQogICAgICAgICAgICAgY29va2llcyA9IENvb2tpZXMoKQot
ICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHBhcnNlcik6CisgICAgICAg
ICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJzZXIuaXRlbXMoKToKICAgICAgICAgICAgICAgICBj
b29raWVzW2lzb21vcnBoaWNfZW5jb2RlKGtleSldID0gQ29va2llVmFsdWUodmFsdWUpCiAgICAg
ICAgICAgICBzZWxmLl9jb29raWVzID0gY29va2llcwogICAgICAgICByZXR1cm4gc2VsZi5fY29v
a2llcwpAQCAtNjMwLDExICs2MjgsOSBAQCBjbGFzcyBCaW5hcnlDb29raWVQYXJzZXIoQmFzZUNv
b2tpZSk6CiAgICAgICAgIFRoaXMgb3ZlcnJpZGVzIGFuZCBjYWxscyBCYXNlQ29va2llLmxvYWQu
IFVubGlrZSBCYXNlQ29va2llLmxvYWQsIGl0CiAgICAgICAgIGRvZXMgbm90IGFjY2VwdCBkaWN0
aW9uYXJpZXMuCiAgICAgICAgICIiIgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyYXdkYXRh
LCBiaW5hcnlfdHlwZSkKLSAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgIyBCYXNlQ29va2ll
LmxvYWQgZXhwZWN0cyBhIG5hdGl2ZSBzdHJpbmcsIHdoaWNoIGluIFB5dGhvbiAzIGlzIHRleHQu
Ci0gICAgICAgICAgICByYXdkYXRhID0gaXNvbW9ycGhpY19kZWNvZGUocmF3ZGF0YSkKLSAgICAg
ICAgc3VwZXIoQmluYXJ5Q29va2llUGFyc2VyLCBzZWxmKS5sb2FkKHJhd2RhdGEpCisgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKHJhd2RhdGEsIGJ5dGVzKQorICAgICAgICAjIEJhc2VDb29raWUu
bG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZworICAgICAgICBzdXBlcihCaW5hcnlDb29raWVQ
YXJzZXIsIHNlbGYpLmxvYWQoaXNvbW9ycGhpY19kZWNvZGUocmF3ZGF0YSkpCiAKIAogY2xhc3Mg
Q29va2llcyhNdWx0aURpY3QpOgpAQCAtNjc1LDcgKzY3MSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0
aW9uKG9iamVjdCk6CiAKICAgICAgICAgaWYgImF1dGhvcml6YXRpb24iIGluIGhlYWRlcnM6CiAg
ICAgICAgICAgICBoZWFkZXIgPSBoZWFkZXJzLmdldCgiYXV0aG9yaXphdGlvbiIpCi0gICAgICAg
ICAgICBhc3NlcnQgaXNpbnN0YW5jZShoZWFkZXIsIGJpbmFyeV90eXBlKQorICAgICAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyLCBieXRlcykKICAgICAgICAgICAgIGF1dGhfdHlwZSwg
ZGF0YSA9IGhlYWRlci5zcGxpdChiIiAiLCAxKQogICAgICAgICAgICAgaWYgYXV0aF90eXBlIGlu
IGF1dGhfc2NoZW1lczoKICAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3
b3JkID0gYXV0aF9zY2hlbWVzW2F1dGhfdHlwZV0oZGF0YSkKQEAgLTY4Myw2ICs2NzksNiBAQCBj
bGFzcyBBdXRoZW50aWNhdGlvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIEhUVFBF
eGNlcHRpb24oNDAwLCAiVW5zdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gc2NoZW1lICVzIiAlIGF1
dGhfdHlwZSkKIAogICAgIGRlZiBkZWNvZGVfYmFzaWMoc2VsZiwgZGF0YSk6Ci0gICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKGRhdGEsIGJpbmFyeV90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShkYXRhLCBieXRlcykKICAgICAgICAgZGVjb2RlZF9kYXRhID0gYmFzZTY0LmI2NGRlY29k
ZShkYXRhKQogICAgICAgICByZXR1cm4gZGVjb2RlZF9kYXRhLnNwbGl0KGIiOiIsIDEpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQpp
bmRleCAxNTE5ZWQ3OGYzOTcuLjg3NjNjY2E5MDM2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9y
ZXNwb25zZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5CkBAIC02LDkgKzYsOCBAQCBp
bXBvcnQgc29ja2V0CiBpbXBvcnQgdXVpZAogCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVh
ZGVyVHVwbGUKK2Zyb20gaHR0cC5jb29raWVzIGltcG9ydCBCYXNlQ29va2llLCBNb3JzZWwKIGZy
b20gaHlwZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRp
bnVhdGlvbkZyYW1lCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50
ZWdlcl90eXBlcywgaXRlcnZhbHVlcywgUFkzCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMg
aW1wb3J0IEJhc2VDb29raWUsIE1vcnNlbAogCiBmcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3Bv
bnNlX2NvZGVzLCBoMl9oZWFkZXJzCiBmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKQEAg
LTQxLDExICs0MCw2IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgQm9vbGVhbiwg
ZGVmYXVsdCBGYWxzZSwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBib2R5IGNvbnRlbnQgc2hvdWxk
IGJlCiAgICAgICAgc2VudCB3aGVuIHRoZSByZXF1ZXN0IG1ldGhvZCBpcyBIRUFELgogCi0gICAg
Li4gYXR0cmlidXRlOjogZXhwbGljaXRfZmx1c2gKLQotICAgICAgIEJvb2xlYW4gaW5kaWNhdGlu
ZyB3aGV0aGVyIG91dHB1dCBzaG91bGQgYmUgZmx1c2hlZCBhdXRvbWF0aWNhbGx5IG9yIG9ubHkK
LSAgICAgICB3aGVuIHJlcXVlc3RlZC4KLQogICAgIC4uIGF0dHJpYnV0ZTo6IHdyaXRlcgogCiAg
ICAgICAgVGhlIFJlc3BvbnNlV3JpdGVyIGZvciB0aGlzIHJlc3BvbnNlCkBAIC03Myw3ICs2Nyw2
IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5hZGRfcmVxdWlyZWRf
aGVhZGVycyA9IFRydWUKICAgICAgICAgc2VsZi5zZW5kX2JvZHlfZm9yX2hlYWRfcmVxdWVzdCA9
IEZhbHNlCi0gICAgICAgIHNlbGYuZXhwbGljaXRfZmx1c2ggPSBGYWxzZQogICAgICAgICBzZWxm
LmNsb3NlX2Nvbm5lY3Rpb24gPSBGYWxzZQogCiAgICAgICAgIHNlbGYubG9nZ2VyID0gZ2V0X2xv
Z2dlcigpCkBAIC05Nyw3ICs5MCw3IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgbWVzc2FnZSA9IHZhbHVlWzFdCiAgICAgICAgICAgICAgICAgIyBPbmx5IGNhbGwg
c3RyKCkgaWYgbWVzc2FnZSBpcyBub3QgYSBzdHJpbmcgdHlwZSwgc28gdGhhdCB3ZQogICAgICAg
ICAgICAgICAgICMgZG9uJ3QgZ2V0IGBzdHIoYiJmb28iKSA9PSAiYidmb28nImAgaW4gUHl0aG9u
IDMuCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWVzc2FnZSwgKGJpbmFyeV90
eXBlLCB0ZXh0X3R5cGUpKToKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtZXNz
YWdlLCAoYnl0ZXMsIHN0cikpOgogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gc3RyKG1l
c3NhZ2UpCiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdHVzID0gKGNvZGUsIG1lc3NhZ2UpCiAg
ICAgICAgIGVsc2U6CkBAIC0xMjgsOSArMTIxLDggQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToK
ICAgICAgICAgICAgIG1heF9hZ2UgPSAwCiAgICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRh
KGRheXM9LTEpCiAKLSAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgbmFtZSA9IGlzb21vcnBo
aWNfZGVjb2RlKG5hbWUpCi0gICAgICAgICAgICB2YWx1ZSA9IGlzb21vcnBoaWNfZGVjb2RlKHZh
bHVlKQorICAgICAgICBuYW1lID0gaXNvbW9ycGhpY19kZWNvZGUobmFtZSkKKyAgICAgICAgdmFs
dWUgPSBpc29tb3JwaGljX2RlY29kZSh2YWx1ZSkKIAogICAgICAgICBkYXlzID0ge2krMTogbmFt
ZSBmb3IgaSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4iLCAiZmViIiwgIm1hciIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwciIsICJtYXki
LCAianVuIiwKQEAgLTE2OSwxNSArMTYxLDExIEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAK
ICAgICBkZWYgdW5zZXRfY29va2llKHNlbGYsIG5hbWUpOgogICAgICAgICAiIiJSZW1vdmUgYSBj
b29raWUgZnJvbSB0aG9zZSB0aGF0IGFyZSBiZWluZyBzZW50IHdpdGggdGhlIHJlc3BvbnNlIiIi
Ci0gICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgIG5hbWUgPSBpc29tb3JwaGljX2RlY29kZShu
YW1lKQorICAgICAgICBuYW1lID0gaXNvbW9ycGhpY19kZWNvZGUobmFtZSkKICAgICAgICAgY29v
a2llcyA9IHNlbGYuaGVhZGVycy5nZXQoIlNldC1Db29raWUiKQogICAgICAgICBwYXJzZXIgPSBC
YXNlQ29va2llKCkKICAgICAgICAgZm9yIGNvb2tpZSBpbiBjb29raWVzOgotICAgICAgICAgICAg
aWYgUFkzOgotICAgICAgICAgICAgICAgICMgQmFzZUNvb2tpZS5sb2FkIGV4cGVjdHMgYSB0ZXh0
IHN0cmluZy4KLSAgICAgICAgICAgICAgICBjb29raWUgPSBpc29tb3JwaGljX2RlY29kZShjb29r
aWUpCi0gICAgICAgICAgICBwYXJzZXIubG9hZChjb29raWUpCisgICAgICAgICAgICBwYXJzZXIu
bG9hZChpc29tb3JwaGljX2RlY29kZShjb29raWUpKQogCiAgICAgICAgIGlmIG5hbWUgaW4gcGFy
c2VyLmtleXMoKToKICAgICAgICAgICAgIGRlbCBzZWxmLmhlYWRlcnNbIlNldC1Db29raWUiXQpA
QCAtMjA1LDkgKzE5Myw5IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmluZyBmYWNpbGl0YXRpbmcgbm9uLXN0cmVhbWluZyBvcGVyYXRpb25z
IGxpa2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgc3Vic3RpdHV0aW9uLgog
ICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNvbnRlbnQsIGJpbmFyeV90
eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNvbnRlbnQsIGJ5dGVzKToKICAgICAg
ICAgICAgIHlpZWxkIHNlbGYuY29udGVudAotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZi5j
b250ZW50LCB0ZXh0X3R5cGUpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZi5jb250ZW50
LCBzdHIpOgogICAgICAgICAgICAgeWllbGQgc2VsZi5jb250ZW50LmVuY29kZShzZWxmLmVuY29k
aW5nKQogICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZi5jb250ZW50LCAicmVhZCIpOgogICAgICAg
ICAgICAgaWYgcmVhZF9maWxlOgpAQCAtMjYyLDcgKzI1MCw3IEBAIGNsYXNzIE11bHRpcGFydENv
bnRlbnQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYm91bmRhcnk9Tm9uZSwgZGVm
YXVsdF9jb250ZW50X3R5cGU9Tm9uZSk6CiAgICAgICAgIHNlbGYuaXRlbXMgPSBbXQogICAgICAg
ICBpZiBib3VuZGFyeSBpcyBOb25lOgotICAgICAgICAgICAgYm91bmRhcnkgPSB0ZXh0X3R5cGUo
dXVpZC51dWlkNCgpKQorICAgICAgICAgICAgYm91bmRhcnkgPSBzdHIodXVpZC51dWlkNCgpKQog
ICAgICAgICBzZWxmLmJvdW5kYXJ5ID0gYm91bmRhcnkKICAgICAgICAgc2VsZi5kZWZhdWx0X2Nv
bnRlbnRfdHlwZSA9IGRlZmF1bHRfY29udGVudF90eXBlCiAKQEAgLTI5MCw3ICsyNzgsNyBAQCBj
bGFzcyBNdWx0aXBhcnRDb250ZW50KG9iamVjdCk6CiAKIGNsYXNzIE11bHRpcGFydFBhcnQob2Jq
ZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSwgY29udGVudF90eXBlPU5vbmUsIGhl
YWRlcnM9Tm9uZSk6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRhdGEsIGJpbmFyeV90eXBl
KSwgZGF0YQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkYXRhLCBieXRlcyksIGRhdGEKICAg
ICAgICAgc2VsZi5oZWFkZXJzID0gUmVzcG9uc2VIZWFkZXJzKCkKIAogICAgICAgICBpZiBjb250
ZW50X3R5cGUgaXMgbm90IE5vbmU6CkBAIC0zMDksOCArMjk3LDggQEAgY2xhc3MgTXVsdGlwYXJ0
UGFydChvYmplY3QpOgogICAgIGRlZiB0b19ieXRlcyhzZWxmKToKICAgICAgICAgcnYgPSBbXQog
ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmhlYWRlcnM6Ci0gICAgICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZShrZXksIGJpbmFyeV90eXBlKQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UodmFsdWUsIGJpbmFyeV90eXBlKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
a2V5LCBieXRlcykKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCBieXRlcykK
ICAgICAgICAgICAgIHJ2LmFwcGVuZChiIiVzOiAlcyIgJSAoa2V5LCB2YWx1ZSkpCiAgICAgICAg
IHJ2LmFwcGVuZChiIiIpCiAgICAgICAgIHJ2LmFwcGVuZChzZWxmLmRhdGEpCkBAIC0zMTksNyAr
MzA3LDcgQEAgY2xhc3MgTXVsdGlwYXJ0UGFydChvYmplY3QpOgogCiBkZWYgX21heWJlX2VuY29k
ZShzKToKICAgICAiIiJFbmNvZGUgYSBzdHJpbmcgb3IgYW4gaW50IGludG8gYmluYXJ5IGRhdGEg
dXNpbmcgaXNvbW9ycGhpY19lbmNvZGUoKS4iIiIKLSAgICBpZiBpc2luc3RhbmNlKHMsIGludGVn
ZXJfdHlwZXMpOgorICAgIGlmIGlzaW5zdGFuY2UocywgaW50KToKICAgICAgICAgcmV0dXJuIGIi
JWkiICUgKHMsKQogICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZShzKQogCkBAIC0zODMsNyAr
MzcxLDcgQEAgY2xhc3MgUmVzcG9uc2VIZWFkZXJzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuc2V0
KGtleSwgdmFsdWUpCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIGZvciBrZXks
IHZhbHVlcyBpbiBpdGVydmFsdWVzKHNlbGYuZGF0YSk6CisgICAgICAgIGZvciBrZXksIHZhbHVl
cyBpbiBzZWxmLmRhdGEudmFsdWVzKCk6CiAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVz
OgogICAgICAgICAgICAgICAgIHlpZWxkIGtleSwgdmFsdWUKIApAQCAtNDUzLDEwICs0NDEsMTAg
QEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmplY3QpOgogICAgICAgICBmb3IgaGVhZGVyLCB2
YWx1ZSBpbiBoZWFkZXJzOgogICAgICAgICAgICAgIyBoMl9oZWFkZXJzIGFyZSBuYXRpdmUgc3Ry
aW5ncwogICAgICAgICAgICAgIyBoZWFkZXIgZmllbGQgbmFtZXMgYXJlIHN0cmluZ3Mgb2YgQVND
SUkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaGVhZGVyLCBiaW5hcnlfdHlwZSk6CisgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKGhlYWRlciwgYnl0ZXMpOgogICAgICAgICAgICAgICAgIGhl
YWRlciA9IGhlYWRlci5kZWNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICMgdmFsdWUgaW4gaGVh
ZGVycyBjYW4gYmUgZWl0aGVyIHN0cmluZyBvciBpbnRlZ2VyCi0gICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZh
bHVlLCBieXRlcyk6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmRlY29kZSh2YWx1ZSkK
ICAgICAgICAgICAgIGlmIGhlYWRlciBpbiBoMl9oZWFkZXJzOgogICAgICAgICAgICAgICAgIGhl
YWRlciA9ICc6JyArIGhlYWRlcgpAQCAtNDg4LDcgKzQ3Niw3IEBAIGNsYXNzIEgyUmVzcG9uc2VX
cml0ZXIob2JqZWN0KToKICAgICAgICAgOnBhcmFtIGxhc3Q6IEZsYWcgdG8gc2lnbmFsIGlmIHRo
aXMgaXMgdGhlIGxhc3QgZnJhbWUgaW4gc3RyZWFtLgogICAgICAgICA6cGFyYW0gc3RyZWFtX2lk
OiBJZCBvZiBzdHJlYW0gdG8gc2VuZCBmcmFtZSBvbi4gV2lsbCB1c2UgdGhlIHJlcXVlc3Qgc3Ry
ZWFtIElEIGlmIE5vbmUKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwg
KHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCAo
c3RyLCBieXRlcykpOgogICAgICAgICAgICAgZGF0YSA9IEJ5dGVzSU8oc2VsZi5lbmNvZGUoaXRl
bSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gaXRlbQpAQCAtNjQ0LDE4ICs2
MzIsMTggQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmplY3QpOgogCiAgICAgZGVmIGRlY29k
ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiQ29udmVydCBieXRlcyB0byB1bmljb2RlIGFjY29y
ZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRh
LCBiaW5hcnlfdHlwZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgYnl0ZXMpOgogICAg
ICAgICAgICAgcmV0dXJuIGRhdGEuZGVjb2RlKHNlbGYuX3Jlc3BvbnNlLmVuY29kaW5nKQotICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YSwgdGV4dF90eXBlKToKKyAgICAgICAgZWxpZiBpc2lu
c3RhbmNlKGRhdGEsIHN0cik6CiAgICAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcih0eXBlKGRhdGEpKQogCiAgICAgZGVmIGVu
Y29kZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiQ29udmVydCB1bmljb2RlIHRvIGJ5dGVzIGFj
Y29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShk
YXRhLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgYnl0ZXMpOgog
ICAgICAgICAgICAgcmV0dXJuIGRhdGEKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGEsIHRl
eHRfdHlwZSk6CisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgogICAgICAgICAg
ICAgcmV0dXJuIGRhdGEuZW5jb2RlKHNlbGYuX3Jlc3BvbnNlLmVuY29kaW5nKQogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgpAQCAtNjY1LDExICs2NTMsNyBAQCBj
bGFzcyBSZXNwb25zZVdyaXRlcihvYmplY3QpOgogICAgICIiIk9iamVjdCBwcm92aWRpbmcgYW4g
QVBJIHRvIHdyaXRlIG91dCBhIEhUVFAgcmVzcG9uc2UuCiAKICAgICA6cGFyYW0gaGFuZGxlcjog
VGhlIFJlcXVlc3RIYW5kbGVyIGJlaW5nIHVzZWQuCi0gICAgOnBhcmFtIHJlc3BvbnNlOiBUaGUg
UmVzcG9uc2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd3JpdGVyLgotCi0gICAgQWZ0ZXIgZWFjaCBw
YXJ0IG9mIHRoZSByZXNwb25zZSBpcyB3cml0dGVuLCB0aGUgb3V0cHV0IGlzCi0gICAgZmx1c2hl
ZCB1bmxlc3MgcmVzcG9uc2UuZXhwbGljaXRfZmx1c2ggaXMgRmFsc2UsIGluIHdoaWNoIGNhc2UK
LSAgICB0aGUgdXNlciBtdXN0IGNhbGwgLmZsdXNoKCkgZXhwbGljaXRseS4iIiIKKyAgICA6cGFy
YW0gcmVzcG9uc2U6IFRoZSBSZXNwb25zZSBhc3NvY2lhdGVkIHdpdGggdGhpcyB3cml0ZXIuIiIi
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHJlc3BvbnNlKToKICAgICAgICAgc2Vs
Zi5fd2ZpbGUgPSBoYW5kbGVyLndmaWxlCiAgICAgICAgIHNlbGYuX3Jlc3BvbnNlID0gcmVzcG9u
c2UKQEAgLTcwNyw1MiArNjkxLDY1IEBAIGNsYXNzIFJlc3BvbnNlV3JpdGVyKG9iamVjdCk6CiAK
ICAgICAgICAgOnBhcmFtIG5hbWU6IE5hbWUgb2YgdGhlIGhlYWRlciBmaWVsZAogICAgICAgICA6
cGFyYW0gdmFsdWU6IFZhbHVlIG9mIHRoZSBoZWFkZXIgZmllbGQKKyAgICAgICAgOnJldHVybjog
QSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgd3JpdGUgc3VjY2VlZHMKICAgICAgICAg
IiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zdGF0dXNfd3JpdHRlbjoKICAgICAgICAgICAgIHNl
bGYud3JpdGVfc3RhdHVzKHNlbGYuZGVmYXVsdF9zdGF0dXMpCiAgICAgICAgIHNlbGYuX2hlYWRl
cnNfc2Vlbi5hZGQoc2VsZi5lbmNvZGUobmFtZS5sb3dlcigpKSkKLSAgICAgICAgc2VsZi53cml0
ZShuYW1lKQotICAgICAgICBzZWxmLndyaXRlKGIiOiAiKQorICAgICAgICBpZiBub3Qgc2VsZi53
cml0ZShuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBub3Qgc2Vs
Zi53cml0ZShiIjogIik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgaXNp
bnN0YW5jZSh2YWx1ZSwgaW50KToKLSAgICAgICAgICAgIHNlbGYud3JpdGUodGV4dF90eXBlKHZh
bHVlKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYud3JpdGUodmFsdWUpCi0gICAg
ICAgIHNlbGYud3JpdGUoYiJcclxuIikKLSAgICAgICAgaWYgbm90IHNlbGYuX3Jlc3BvbnNlLmV4
cGxpY2l0X2ZsdXNoOgotICAgICAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi53cml0ZShzdHIodmFsdWUpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgZWxpZiBub3Qgc2VsZi53cml0ZSh2YWx1ZSk6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYud3JpdGUoYiJcclxuIikKIAogICAgIGRlZiB3cml0
ZV9kZWZhdWx0X2hlYWRlcnMoc2VsZik6CiAgICAgICAgIGZvciBuYW1lLCBmIGluIFsoIlNlcnZl
ciIsIHNlbGYuX2hhbmRsZXIudmVyc2lvbl9zdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgKCJEYXRlIiwgc2VsZi5faGFuZGxlci5kYXRlX3RpbWVfc3RyaW5nKV06CiAgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fc2Vlbl9oZWFkZXIobmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi53
cml0ZV9oZWFkZXIobmFtZSwgZigpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLndyaXRl
X2hlYWRlcihuYW1lLCBmKCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAot
ICAgICAgICBpZiAoaXNpbnN0YW5jZShzZWxmLl9yZXNwb25zZS5jb250ZW50LCAoYmluYXJ5X3R5
cGUsIHRleHRfdHlwZSkpIGFuZAorICAgICAgICBpZiAoaXNpbnN0YW5jZShzZWxmLl9yZXNwb25z
ZS5jb250ZW50LCAoYnl0ZXMsIHN0cikpIGFuZAogICAgICAgICAgICAgbm90IHNlbGYuX3NlZW5f
aGVhZGVyKCJjb250ZW50LWxlbmd0aCIpKToKICAgICAgICAgICAgICNXb3VsZCBiZSBuaWNlIHRv
IGF2b2lkIGRvdWJsZS1lbmNvZGluZyBoZXJlCi0gICAgICAgICAgICBzZWxmLndyaXRlX2hlYWRl
cigiQ29udGVudC1MZW5ndGgiLCBsZW4oc2VsZi5lbmNvZGUoc2VsZi5fcmVzcG9uc2UuY29udGVu
dCkpKQorICAgICAgICAgICAgaWYgbm90IHNlbGYud3JpdGVfaGVhZGVyKCJDb250ZW50LUxlbmd0
aCIsIGxlbihzZWxmLmVuY29kZShzZWxmLl9yZXNwb25zZS5jb250ZW50KSkpOgorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgZW5k
X2hlYWRlcnMoc2VsZik6CiAgICAgICAgICIiIkZpbmlzaCB3cml0aW5nIGhlYWRlcnMgYW5kIHdy
aXRlIHRoZSBzZXBhcmF0b3IuCiAKICAgICAgICAgVW5sZXNzIGFkZF9yZXF1aXJlZF9oZWFkZXJz
IG9uIHRoZSByZXNwb25zZSBpcyBGYWxzZSwKICAgICAgICAgdGhpcyB3aWxsIGFsc28gYWRkIEhU
VFAtbWFuZGF0ZWQgaGVhZGVycyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHN1cHBsaWVkCi0gICAg
ICAgIHRvIHRoZSByZXNwb25zZSBoZWFkZXJzIiIiCisgICAgICAgIHRvIHRoZSByZXNwb25zZSBo
ZWFkZXJzLgorICAgICAgICA6cmV0dXJuOiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRo
ZSB3cml0ZSBzdWNjZWVkcworICAgICAgICAiIiIKIAogICAgICAgICBpZiBzZWxmLl9yZXNwb25z
ZS5hZGRfcmVxdWlyZWRfaGVhZGVyczoKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZGVmYXVsdF9o
ZWFkZXJzKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLndyaXRlX2RlZmF1bHRfaGVhZGVycygp
OgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHNlbGYud3JpdGUoIlxy
XG4iKQorICAgICAgICBpZiBub3Qgc2VsZi53cml0ZSgiXHJcbiIpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zZWVuX2hlYWRlcigiY29udGVudC1sZW5n
dGgiKToKICAgICAgICAgICAgIHNlbGYuX3Jlc3BvbnNlLmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVl
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9yZXNwb25zZS5leHBsaWNpdF9mbHVzaDoKLSAgICAgICAg
ICAgIHNlbGYuZmx1c2goKQogICAgICAgICBzZWxmLl9oZWFkZXJzX2NvbXBsZXRlID0gVHJ1ZQog
CisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgd3JpdGVfY29udGVudChzZWxmLCBkYXRh
KToKICAgICAgICAgIiIiV3JpdGUgdGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlLgogCi0gICAgICAg
IEhUVFAtbWFuZGF0ZWQgaGVhZGVycyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2l0aCBz
dGF0dXMgZGVmYXVsdCB0byAyMDAgaWYgdGhleSBoYXZlIG5vdCBiZWVuIGV4cGxpY2l0bHkgc2V0
LiIiIgorICAgICAgICBIVFRQLW1hbmRhdGVkIGhlYWRlcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5
IGFkZGVkIHdpdGggc3RhdHVzIGRlZmF1bHQgdG8gMjAwIGlmIHRoZXkgaGF2ZQorICAgICAgICBu
b3QgYmVlbiBleHBsaWNpdGx5IHNldC4KKyAgICAgICAgOnJldHVybjogQSBib29sZWFuIGluZGlj
YXRpbmcgd2hldGhlciB0aGUgd3JpdGUgc3VjY2VlZHMKKyAgICAgICAgIiIiCiAgICAgICAgIGlm
IG5vdCBzZWxmLl9zdGF0dXNfd3JpdHRlbjoKICAgICAgICAgICAgIHNlbGYud3JpdGVfc3RhdHVz
KHNlbGYuZGVmYXVsdF9zdGF0dXMpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9oZWFkZXJzX2NvbXBs
ZXRlOgpAQCAtNzY0LDcgKzc2MSw3IEBAIGNsYXNzIFJlc3BvbnNlV3JpdGVyKG9iamVjdCk6CiAg
ICAgICAgICIiIldyaXRlcyB0aGUgZGF0YSAnYXMgaXMnIiIiCiAgICAgICAgIGlmIGRhdGEgaXMg
Tm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RhdGEgY2Fubm90IGJlIE5vbmUn
KQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsICh0ZXh0X3R5cGUsIGJpbmFyeV90eXBlKSk6
CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAg
ICMgRGVsaWJlcmF0ZWx5IGFsbG93cyBib3RoIHRleHQgYW5kIGJpbmFyeSB0eXBlcy4gU2VlIGBz
ZWxmLmVuY29kZWAuCiAgICAgICAgICAgICByZXR1cm4gc2VsZi53cml0ZShkYXRhKQogICAgICAg
ICBlbHNlOgpAQCAtNzcyLDcgKzc2OSw5IEBAIGNsYXNzIFJlc3BvbnNlV3JpdGVyKG9iamVjdCk6
CiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIldyaXRlIGRpcmVjdGx5
IHRvIHRoZSByZXNwb25zZSwgY29udmVydGluZyB1bmljb2RlIHRvIGJ5dGVzCi0gICAgICAgIGFj
Y29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4gRG9lcyBub3QgZmx1c2guIiIiCisgICAgICAg
IGFjY29yZGluZyB0byByZXNwb25zZS5lbmNvZGluZy4KKyAgICAgICAgOnJldHVybjogQSBib29s
ZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgd3JpdGUgc3VjY2VlZHMKKyAgICAgICAgIiIiCiAg
ICAgICAgIHNlbGYuY29udGVudF93cml0dGVuID0gVHJ1ZQogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBzZWxmLl93ZmlsZS53cml0ZShzZWxmLmVuY29kZShkYXRhKSkKQEAgLTc4Miw4ICs3ODEs
NyBAQCBjbGFzcyBSZXNwb25zZVdyaXRlcihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKICAgICBkZWYgd3JpdGVfY29udGVudF9maWxlKHNlbGYsIGRhdGEpOgotICAgICAgICAi
IiJXcml0ZSBhIGZpbGUtbGlrZSBvYmplY3QgZGlyZWN0bHkgdG8gdGhlIHJlc3BvbnNlIGluIGNo
dW5rcy4KLSAgICAgICAgRG9lcyBub3QgZmx1c2guIiIiCisgICAgICAgICIiIldyaXRlIGEgZmls
ZS1saWtlIG9iamVjdCBkaXJlY3RseSB0byB0aGUgcmVzcG9uc2UgaW4gY2h1bmtzLiIiIgogICAg
ICAgICBzZWxmLmNvbnRlbnRfd3JpdHRlbiA9IFRydWUKICAgICAgICAgc3VjY2VzcyA9IFRydWUK
ICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTgwMSwxOSArNzk5LDkgQEAgY2xhc3MgUmVzcG9uc2VX
cml0ZXIob2JqZWN0KToKIAogICAgIGRlZiBlbmNvZGUoc2VsZiwgZGF0YSk6CiAgICAgICAgICIi
IkNvbnZlcnQgdW5pY29kZSB0byBieXRlcyBhY2NvcmRpbmcgdG8gcmVzcG9uc2UuZW5jb2Rpbmcu
IiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgYmluYXJ5X3R5cGUpOgorICAgICAgICBp
ZiBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKICAgICAgICAgICAgIHJldHVybiBkYXRhCi0gICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhLCB0ZXh0X3R5cGUpOgorICAgICAgICBlbGlmIGlzaW5z
dGFuY2UoZGF0YSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBkYXRhLmVuY29kZShzZWxmLl9y
ZXNwb25zZS5lbmNvZGluZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoImRhdGEgJXIgc2hvdWxkIGJlIHRleHQgb3IgYmluYXJ5LCBidXQgaXMgJXMiICUgKGRh
dGEsIHR5cGUoZGF0YSkpKQotCi0gICAgZGVmIGZsdXNoKHNlbGYpOgotICAgICAgICAiIiJGbHVz
aCB0aGUgb3V0cHV0LiBSZXR1cm5zIEZhbHNlIGlmIHRoZSBmbHVzaCBmYWlsZWQgZHVlIHRvCi0g
ICAgICAgIHRoZSBzb2NrZXQgYmVpbmcgY2xvc2VkIGJ5IHRoZSByZW1vdGUgZW5kLiIiIgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl93ZmlsZS5mbHVzaCgpCi0gICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAgIyBU
aGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNvY2tldCBnb3QgY2xvc2VkIGJ5IHRoZSByZW1vdGUgZW5k
Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcm91dGVy
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9yb3V0ZXIucHkKaW5kZXggNWI4NjBiNTk0MjU0Li41YTkxZGUzMDU3
NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcm91dGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcm91
dGVyLnB5CkBAIC0xLDggKzEsOCBAQAogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHJlCitpbXBv
cnQgc3lzCiAKIGZyb20gLmxvZ2dlciBpbXBvcnQgZ2V0X2xvZ2dlcgotZnJvbSBzaXggaW1wb3J0
IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKIAogYW55X21ldGhvZCA9IG9iamVjdCgpCiAKQEAgLTk4
LDYgKzk4LDE2IEBAIGNsYXNzIFJvdXRlcihvYmplY3QpOgogICAgICAgICBzZWxmLmRvY19yb290
ID0gZG9jX3Jvb3QKICAgICAgICAgc2VsZi5yb3V0ZXMgPSBbXQogICAgICAgICBzZWxmLmxvZ2dl
ciA9IGdldF9sb2dnZXIoKQorCisgICAgICAgICMgQWRkIHRoZSBkb2Nfcm9vdCB0byB0aGUgUHl0
aG9uIHBhdGgsIHNvIHRoYXQgYW55IFB5dGhvbiBoYW5kbGVyIGNhbgorICAgICAgICAjIGNvcnJl
Y3RseSBsb2NhdGUgaGVscGVyIHNjcmlwdHMgKHNlZSBSRkNfVE9fQkVfTElOS0VEKS4KKyAgICAg
ICAgIworICAgICAgICAjIFRPRE86IEluIGEgcGVyZmVjdCB3b3JsZCwgUm91dGVyIHdvdWxkIG5v
dCBuZWVkIHRvIGtub3cgYWJvdXQgdGhpcworICAgICAgICAjIGFuZCB0aGUgaGFuZGxlciBpdHNl
bGYgd291bGQgdGFrZSBjYXJlIG9mIGl0LiBDdXJyZW50bHksIGhvd2V2ZXIsIHdlCisgICAgICAg
ICMgdHJlYXQgaGFuZGxlcnMgbGlrZSBmdW5jdGlvbnMgYW5kIHNvIHRoZXJlJ3Mgbm8gZWFzeSB3
YXkgdG8gZG8gdGhhdC4KKyAgICAgICAgaWYgc2VsZi5kb2Nfcm9vdCBub3QgaW4gc3lzLnBhdGg6
CisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2VsZi5kb2Nfcm9vdCkKKwogICAgICAg
ICBmb3Igcm91dGUgaW4gcmV2ZXJzZWQocm91dGVzKToKICAgICAgICAgICAgIHNlbGYucmVnaXN0
ZXIoKnJvdXRlKQogCkBAIC0xMzUsNyArMTQ1LDcgQEAgY2xhc3MgUm91dGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QgYW5kIHRoZSByZXNwb25zZSBvYmplY3QuCiAK
ICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobWV0aG9kcywgKGJpbmFyeV90eXBl
LCB0ZXh0X3R5cGUpKSBvciBtZXRob2RzIGlzIGFueV9tZXRob2Q6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UobWV0aG9kcywgKGJ5dGVzLCBzdHIpKSBvciBtZXRob2RzIGlzIGFueV9tZXRob2Q6CiAg
ICAgICAgICAgICBtZXRob2RzID0gW21ldGhvZHNdCiAgICAgICAgIGZvciBtZXRob2QgaW4gbWV0
aG9kczoKICAgICAgICAgICAgIHNlbGYucm91dGVzLmFwcGVuZCgobWV0aG9kLCBjb21waWxlX3Bh
dGhfbWF0Y2gocGF0aCksIGhhbmRsZXIpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3NlcnZlci5weQppbmRleCBkNmM2MTk2NWQ5NmQuLmNmYTg2Zjk5M2Fh
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2
ZXIucHkKQEAgLTEsMjQgKzEsMjggQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBCYXNlSFRUUFNl
cnZlcgogaW1wb3J0IGVycm5vCitpbXBvcnQgaHR0cC5zZXJ2ZXIKIGltcG9ydCBvcwogaW1wb3J0
IHNvY2tldAotZnJvbSBzaXgubW92ZXMuc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdNaXhJ
bgorZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ01peEluCiBpbXBvcnQgc3NsCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKIGltcG9ydCB1dWlkCiBm
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotCi1mcm9tIHNpeC5tb3Zlcy5xdWV1
ZSBpbXBvcnQgUXVldWUKK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAKIGZyb20gaDIuY29uZmln
IGltcG9ydCBIMkNvbmZpZ3VyYXRpb24KIGZyb20gaDIuY29ubmVjdGlvbiBpbXBvcnQgSDJDb25u
ZWN0aW9uCiBmcm9tIGgyLmV2ZW50cyBpbXBvcnQgUmVxdWVzdFJlY2VpdmVkLCBDb25uZWN0aW9u
VGVybWluYXRlZCwgRGF0YVJlY2VpdmVkLCBTdHJlYW1SZXNldCwgU3RyZWFtRW5kZWQKK2Zyb20g
aDIuZXhjZXB0aW9ucyBpbXBvcnQgU3RyZWFtQ2xvc2VkRXJyb3IsIFByb3RvY29sRXJyb3IKK2Zy
b20gaDIuc2V0dGluZ3MgaW1wb3J0IFNldHRpbmdDb2RlcworZnJvbSBoMi51dGlsaXRpZXMgaW1w
b3J0IGV4dHJhY3RfbWV0aG9kX2hlYWRlcgorCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
c3BsaXQsIHVybHVuc3BsaXQKIAotZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1
cmxzcGxpdCwgdXJsdW5zcGxpdAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNo
Citmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlv
bgogCiBmcm9tIC4gaW1wb3J0IHJvdXRlcyBhcyBkZWZhdWx0X3JvdXRlcwogZnJvbSAuY29uZmln
IGltcG9ydCBDb25maWdCdWlsZGVyCkBAIC0yNiwxOCArMzAsMTggQEAgZnJvbSAubG9nZ2VyIGlt
cG9ydCBnZXRfbG9nZ2VyCiBmcm9tIC5yZXF1ZXN0IGltcG9ydCBTZXJ2ZXIsIFJlcXVlc3QsIEgy
UmVxdWVzdAogZnJvbSAucmVzcG9uc2UgaW1wb3J0IFJlc3BvbnNlLCBIMlJlc3BvbnNlCiBmcm9t
IC5yb3V0ZXIgaW1wb3J0IFJvdXRlcgotZnJvbSAudXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24s
IGlzb21vcnBoaWNfZGVjb2RlCitmcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbiwgaXNv
bW9ycGhpY19kZWNvZGUsIGlzb21vcnBoaWNfZW5jb2RlCiBmcm9tIC5jb25zdGFudHMgaW1wb3J0
IGgyX2hlYWRlcnMKK2Zyb20gLndzX2gyX2hhbmRzaGFrZSBpbXBvcnQgV3NIMkhhbmRzaGFrZXIK
IAogIyBXZSBuZWVkIHRvIHN0cmVzcyB0ZXN0IHRoYXQgYnJvd3NlcnMgY2FuIHNlbmQvcmVjZWl2
ZSBtYW55IGhlYWRlcnMgKHRoZXJlIGlzCiAjIG5vIHNwZWNpZmllZCBsaW1pdCksIGJ1dCB0aGUg
UHl0aG9uIHN0ZGxpYiBoYXMgYW4gYXJiaXRyYXJ5IGxpbWl0IG9mIDEwMAotIyBoZWFkZXJzLiBI
aXR0aW5nIHRoZSBsaW1pdCB3b3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbiB0aGF0IGlzIHNpbGVu
dGx5IGNhdWdodAotIyBpbiBQeXRob24gMiBidXQgbGVhZHMgdG8gSFRUUCA0MzEgaW4gUHl0aG9u
IDMsIHNvIHdlIG1vbmtleSBwYXRjaCBpdCBoaWdoZXIuCisjIGhlYWRlcnMuIEhpdHRpbmcgdGhl
IGxpbWl0IGxlYWRzIHRvIEhUVFAgNDMxLCBzbyB3ZSBtb25rZXkgcGF0Y2ggaXQgaGlnaGVyLgog
IyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2NTg2CiAjIGh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L3B1bGwvMjQ0NTEKLWZyb20gc2l4Lm1vdmVzIGltcG9y
dCBodHRwX2NsaWVudAotYXNzZXJ0IGlzaW5zdGFuY2UoZ2V0YXR0cihodHRwX2NsaWVudCwgJ19N
QVhIRUFERVJTJyksIGludCkKLXNldGF0dHIoaHR0cF9jbGllbnQsICdfTUFYSEVBREVSUycsIDUx
MikKK2ltcG9ydCBodHRwLmNsaWVudAorYXNzZXJ0IGlzaW5zdGFuY2UoZ2V0YXR0cihodHRwLmNs
aWVudCwgJ19NQVhIRUFERVJTJyksIGludCkKK3NldGF0dHIoaHR0cC5jbGllbnQsICdfTUFYSEVB
REVSUycsIDUxMikKIAogIiIiCiBIVFRQIHNlcnZlciBkZXNpZ25lZCBmb3IgdGVzdGluZyBwdXJw
b3Nlcy4KQEAgLTk5LDcgKzEwMyw3IEBAIGNsYXNzIFJlcXVlc3RSZXdyaXRlcihvYmplY3QpOgog
ICAgICAgICA6cGFyYW0gb3V0cHV0X3BhdGg6IFBhdGggdG8gcmVwbGFjZSB0aGUgaW5wdXQgcGF0
aCB3aXRoIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlcXVlc3QuCiAgICAg
ICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKG1ldGhvZHMsIChiaW5hcnlfdHlwZSwgdGV4
dF90eXBlKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobWV0aG9kcywgKGJ5dGVzLCBzdHIpKToK
ICAgICAgICAgICAgIG1ldGhvZHMgPSBbbWV0aG9kc10KICAgICAgICAgc2VsZi5ydWxlc1tpbnB1
dF9wYXRoXSA9IChtZXRob2RzLCBvdXRwdXRfcGF0aCkKIApAQCAtMTIyLDcgKzEyNiw3IEBAIGNs
YXNzIFJlcXVlc3RSZXdyaXRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJlcXVlc3RfaGFu
ZGxlci5wYXRoID0gbmV3X3VybAogCiAKLWNsYXNzIFdlYlRlc3RTZXJ2ZXIoVGhyZWFkaW5nTWl4
SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgorY2xhc3MgV2ViVGVzdFNlcnZlcihUaHJl
YWRpbmdNaXhJbiwgaHR0cC5zZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgYWxsb3dfcmV1c2VfYWRk
cmVzcyA9IFRydWUKICAgICBhY2NlcHRhYmxlX2Vycm9ycyA9IChlcnJuby5FUElQRSwgZXJybm8u
RUNPTk5BQk9SVEVEKQogICAgIHJlcXVlc3RfcXVldWVfc2l6ZSA9IDIwMDAKQEAgLTEzMSw3ICsx
MzUsNyBAQCBjbGFzcyBXZWJUZXN0U2VydmVyKFRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZl
ci5IVFRQU2VydmVyKToKICAgICBkYWVtb25fdGhyZWFkcyA9IFRydWUKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBzZXJ2ZXJfYWRkcmVzcywgcmVxdWVzdF9oYW5kbGVyX2NscywKLSAgICAgICAg
ICAgICAgICAgcm91dGVyLCByZXdyaXRlciwgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAg
ICByb3V0ZXIsIHJld3JpdGVyLCBiaW5kX2FkZHJlc3MsIHdzX2RvY19yb290PU5vbmUsCiAgICAg
ICAgICAgICAgICAgIGNvbmZpZz1Ob25lLCB1c2Vfc3NsPUZhbHNlLCBrZXlfZmlsZT1Ob25lLCBj
ZXJ0aWZpY2F0ZT1Ob25lLAogICAgICAgICAgICAgICAgICBlbmNyeXB0X2FmdGVyX2Nvbm5lY3Q9
RmFsc2UsIGxhdGVuY3k9Tm9uZSwgaHR0cDI9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIi
U2VydmVyIGZvciBIVFRQKHMpIFJlcXVlc3RzCkBAIC0xNTYsNiArMTYwLDggQEAgY2xhc3MgV2Vi
VGVzdFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAK
ICAgICAgICAgOnBhcmFtIGNlcnRpZmljYXRlOiBQYXRoIHRvIGNlcnRpZmljYXRlIHRvIHVzZSBp
ZiBTU0wgaXMgZW5hYmxlZC4KIAorICAgICAgICA6cGFyYW0gd3NfZG9jX3Jvb3Q6IERvY3VtZW50
IHJvb3QgZm9yIHdlYnNvY2tldHMKKwogICAgICAgICA6cGFyYW0gZW5jcnlwdF9hZnRlcl9jb25u
ZWN0OiBGb3IgZWFjaCBjb25uZWN0aW9uLCBkb24ndCBzdGFydCBlbmNyeXB0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsIGEgQ09OTkVDVCBtZXNzYWdlIGhh
cyBiZWVuIHJlY2VpdmVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
aGlzIGVuYWJsZXMgdGhlIHNlcnZlciB0byBhY3QgYXMgYQpAQCAtMTgxLDggKzE4Nyw3IEBAIGNs
YXNzIFdlYlRlc3RTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2
ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaG9zdG5hbWVfcG9ydCA9ICgiIixzZXJ2
ZXJfYWRkcmVzc1sxXSkKIAotICAgICAgICAjc3VwZXIgZG9lc24ndCB3b3JrIGhlcmUgYmVjYXVz
ZSBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyIGlzIG9sZC1zdHlsZQotICAgICAgICBCYXNlSFRU
UFNlcnZlci5IVFRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGhvc3RuYW1lX3BvcnQsIHJlcXVlc3Rf
aGFuZGxlcl9jbHMsICoqa3dhcmdzKQorICAgICAgICBodHRwLnNlcnZlci5IVFRQU2VydmVyLl9f
aW5pdF9fKHNlbGYsIGhvc3RuYW1lX3BvcnQsIHJlcXVlc3RfaGFuZGxlcl9jbHMsICoqa3dhcmdz
KQogCiAgICAgICAgIGlmIGNvbmZpZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIFNlcnZlci5j
b25maWcgPSBjb25maWcKQEAgLTE5NSw2ICsyMDAsNyBAQCBjbGFzcyBXZWJUZXN0U2VydmVyKFRo
cmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKIAogCiAKKyAgICAgICAg
c2VsZi53c19kb2Nfcm9vdCA9IHdzX2RvY19yb290CiAgICAgICAgIHNlbGYua2V5X2ZpbGUgPSBr
ZXlfZmlsZQogICAgICAgICBzZWxmLmNlcnRpZmljYXRlID0gY2VydGlmaWNhdGUKICAgICAgICAg
c2VsZi5lbmNyeXB0X2FmdGVyX2Nvbm5lY3QgPSB1c2Vfc3NsIGFuZCBlbmNyeXB0X2FmdGVyX2Nv
bm5lY3QKQEAgLTIyNiwxMiArMjMyLDEyIEBAIGNsYXNzIFdlYlRlc3RTZXJ2ZXIoVGhyZWFkaW5n
TWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKIAogCi1jbGFzcyBCYXNlV2ViVGVzdFJl
cXVlc3RIYW5kbGVyKEJhc2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorY2xh
c3MgQmFzZVdlYlRlc3RSZXF1ZXN0SGFuZGxlcihodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RI
YW5kbGVyKToKICAgICAiIiJSZXF1ZXN0SGFuZGxlciBmb3IgV2ViVGVzdEh0dHBkIiIiCiAKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5sb2dn
ZXIgPSBnZXRfbG9nZ2VyKCkKLSAgICAgICAgQmFzZUhUVFBTZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0
SGFuZGxlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGh0dHAuc2Vy
dmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KQogCiAgICAgZGVmIGZpbmlzaF9oYW5kbGluZ19oMShzZWxmLCByZXF1ZXN0X2xpbmVfaXNfdmFs
aWQpOgogCkBAIC0zNTMsNiArMzU5LDE0IEBAIGNsYXNzIEh0dHAyV2ViVGVzdFJlcXVlc3RIYW5k
bGVyKEJhc2VXZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1
ZygnKCVzKSBJbml0aWF0aW5nIGgyIENvbm5lY3Rpb24nICUgc2VsZi51aWQpCiAKICAgICAgICAg
d2l0aCBzZWxmLmNvbm4gYXMgY29ubmVjdGlvbjoKKyAgICAgICAgICAgICMgQm9vdHN0cmFwcGlu
ZyBXZWJTb2NrZXRzIHdpdGggSFRUUC8yIHNwZWNpZmljYXRpb24gcmVxdWlyZXMKKyAgICAgICAg
ICAgICMgRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0wgdG8gYmUgc2V0IGluIG9yZGVyIHRvIGVuYWJs
ZSBXZWJTb2NrZXQKKyAgICAgICAgICAgICMgb3ZlciBIVFRQLzIKKyAgICAgICAgICAgIG5ld19z
ZXR0aW5ncyA9IGRpY3QoY29ubmVjdGlvbi5sb2NhbF9zZXR0aW5ncykKKyAgICAgICAgICAgIG5l
d19zZXR0aW5nc1tTZXR0aW5nQ29kZXMuRU5BQkxFX0NPTk5FQ1RfUFJPVE9DT0xdID0gMQorICAg
ICAgICAgICAgY29ubmVjdGlvbi5sb2NhbF9zZXR0aW5ncy51cGRhdGUobmV3X3NldHRpbmdzKQor
ICAgICAgICAgICAgY29ubmVjdGlvbi5sb2NhbF9zZXR0aW5ncy5hY2tub3dsZWRnZSgpCisKICAg
ICAgICAgICAgIGNvbm5lY3Rpb24uaW5pdGlhdGVfY29ubmVjdGlvbigpCiAgICAgICAgICAgICBk
YXRhID0gY29ubmVjdGlvbi5kYXRhX3RvX3NlbmQoKQogICAgICAgICAgICAgd2luZG93X3NpemUg
PSBjb25uZWN0aW9uLnJlbW90ZV9zZXR0aW5ncy5pbml0aWFsX3dpbmRvd19zaXplCkBAIC00MDYs
NiArNDIwLDI0IEBAIGNsYXNzIEh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyKEJhc2VXZWJUZXN0
UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgZm9yIHN0cmVhbV9pZCwgKHRocmVhZCwgcXVl
dWUpIGluIHN0cmVhbV9xdWV1ZXMuaXRlbXMoKToKICAgICAgICAgICAgICAgICB0aHJlYWQuam9p
bigpCiAKKyAgICBkZWYgX2lzX2V4dGVuZGVkX2Nvbm5lY3RfZnJhbWUoc2VsZiwgZnJhbWUpOgor
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmcmFtZSwgUmVxdWVzdFJlY2VpdmVkKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG1ldGhvZCA9IGV4dHJhY3RfbWV0aG9kX2hl
YWRlcihmcmFtZS5oZWFkZXJzKQorICAgICAgICBpZiBtZXRob2QgIT0gYiJDT05ORUNUIjoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHByb3RvY29sID0gIiIKKyAgICAgICAg
Zm9yIGtleSwgdmFsdWUgaW4gZnJhbWUuaGVhZGVyczoKKyAgICAgICAgICAgIGlmIGtleSBpbiAo
Yic6cHJvdG9jb2wnLCB1Jzpwcm90b2NvbCcpOgorICAgICAgICAgICAgICAgIHByb3RvY29sID0g
aXNvbW9ycGhpY19lbmNvZGUodmFsdWUpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
aWYgcHJvdG9jb2wgIT0gYiJ3ZWJzb2NrZXQiOgorICAgICAgICAgICAgcmFpc2UgUHJvdG9jb2xF
cnJvcigiSW52YWxpZCBwcm90b2NvbCAlcyB3aXRoIENPTk5FQ1QgTUVUSE9EIiAlIChwcm90b2Nv
bCwpKQorCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgc3RhcnRfc3RyZWFtX3RocmVh
ZChzZWxmLCBmcmFtZSwgcXVldWUpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBzdGFydHMg
YSBuZXcgdGhyZWFkIHRvIGhhbmRsZSBmcmFtZXMgZm9yIGEgc3BlY2lmaWMgc3RyZWFtLgpAQCAt
NDEzLDEzICs0NDUsMTAyIEBAIGNsYXNzIEh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyKEJhc2VX
ZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICA6cGFyYW0gcXVldWU6IEEgcXVldWUgb2Jq
ZWN0IHRoYXQgdGhlIHRocmVhZCB3aWxsIHVzZSB0byBjaGVjayBmb3IgbmV3IGZyYW1lcwogICAg
ICAgICA6cmV0dXJuOiBUaGUgdGhyZWFkIG9iamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc3Rh
cnRlZAogICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfZXh0ZW5kZWRfY29ubmVjdF9m
cmFtZShmcmFtZSk6CisgICAgICAgICAgICB0YXJnZXQgPSBIdHRwMldlYlRlc3RSZXF1ZXN0SGFu
ZGxlci5fc3RyZWFtX3dzX3RocmVhZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGFyZ2V0
ID0gSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIuX3N0cmVhbV90aHJlYWQKICAgICAgICAgdCA9
IHRocmVhZGluZy5UaHJlYWQoCi0gICAgICAgICAgICB0YXJnZXQ9SHR0cDJXZWJUZXN0UmVxdWVz
dEhhbmRsZXIuX3N0cmVhbV90aHJlYWQsCisgICAgICAgICAgICB0YXJnZXQ9dGFyZ2V0LAogICAg
ICAgICAgICAgYXJncz0oc2VsZiwgZnJhbWUuc3RyZWFtX2lkLCBxdWV1ZSkKICAgICAgICAgKQog
ICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgcmV0dXJuIHQKIAorICAgIGRlZiBfc3RyZWFtX3dz
X3RocmVhZChzZWxmLCBzdHJlYW1faWQsIHF1ZXVlKToKKyAgICAgICAgZnJhbWUgPSBxdWV1ZS5n
ZXQoVHJ1ZSwgTm9uZSkKKworICAgICAgICByZmlsZSwgd2ZpbGUgPSBvcy5waXBlKCkKKyAgICAg
ICAgcmZpbGUsIHdmaWxlID0gb3MuZmRvcGVuKHJmaWxlLCAncmInKSwgb3MuZmRvcGVuKHdmaWxl
LCAnd2InLCAwKSAgIyBuZWVkcyB0byBiZSB1bmJ1ZmZlciBmb3Igd2Vic29ja2V0cworICAgICAg
ICBzdHJlYW1faGFuZGxlciA9IEgySGFuZGxlckNvcHkoc2VsZiwgZnJhbWUsIHJmaWxlKQorCisg
ICAgICAgIGgycmVxdWVzdCA9IEgyUmVxdWVzdChzdHJlYW1faGFuZGxlcikKKyAgICAgICAgaDJy
ZXNwb25zZSA9IEgyUmVzcG9uc2Uoc3RyZWFtX2hhbmRsZXIsIGgycmVxdWVzdCkKKworICAgICAg
ICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihzZWxmLnNlcnZlci53c19kb2Nfcm9v
dCwgTm9uZSwgRmFsc2UpCisgICAgICAgIGlmIG5vdCBkaXNwYXRjaGVyLmdldF9oYW5kbGVyX3N1
aXRlKHN0cmVhbV9oYW5kbGVyLnBhdGgpOgorICAgICAgICAgICAgaDJyZXNwb25zZS5zZXRfZXJy
b3IoNDA0KQorICAgICAgICAgICAgaDJyZXNwb25zZS53cml0ZSgpCisgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICByZXF1ZXN0X3dyYXBwZXIgPSBfV2ViU29ja2V0UmVxdWVzdChzdHJlYW1f
aGFuZGxlciwgaDJyZXNwb25zZSkKKworICAgICAgICBoYW5kc2hha2VyID0gV3NIMkhhbmRzaGFr
ZXIocmVxdWVzdF93cmFwcGVyLCBkaXNwYXRjaGVyKQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWls
ZWQgZm9yIGVycm9yOiAlcycgJSBlKQorICAgICAgICAgICAgaDJyZXNwb25zZS5zZXRfZXJyb3Io
ZS5zdGF0dXMpCisgICAgICAgICAgICBoMnJlc3BvbnNlLndyaXRlKCkKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgICMgaDIgSGFuZHNoYWtlciBwcmVwYXJlcyB0aGUgaGVhZGVycyBidXQg
ZG9lcyBub3Qgc2VuZCB0aGVtIGRvd24gdGhlCisgICAgICAgICMgd2lyZS4gRmx1c2ggdGhlIGhl
YWRlcnMgaGVyZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaDJyZXNwb25zZS53cml0ZV9z
dGF0dXNfaGVhZGVycygpCisgICAgICAgIGV4Y2VwdCBTdHJlYW1DbG9zZWRFcnJvcjoKKyAgICAg
ICAgICAgICMgd29yayBhcm91bmQgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvaXNzdWVzLzI3Nzg2CisgICAgICAgICAgICAjIFRoZSBzdHJlYW0gd2FzIGFscmVhZHkg
Y2xvc2VkLgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgcmVxdWVzdF93cmFwcGVyLl9k
aXNwYXRjaGVyID0gZGlzcGF0Y2hlcgorCisgICAgICAgICMgd2UgbmVlZCB0d28gdGhyZWFkczoK
KyAgICAgICAgIyAtIG9uZSB0byBoYW5kbGUgdGhlIGZyYW1lIHF1ZXVlCisgICAgICAgICMgLSBv
bmUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0IChkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEgaXMgYmxv
Y2tpbmcpCisgICAgICAgICMgdGhlIGFsdGVybmF0aXZlIGlzIHRvIGhhdmUgb25seSBvbmUgKGJs
b2NraW5nKSB0aHJlYWQuIFRoYXQgdGhyZWFkCisgICAgICAgICMgd2lsbCBjYWxsIHRyYW5zZmVy
X2RhdGEuIFRoYXQgd291bGQgcmVxdWlyZSBhIHNwZWNpYWwgY2FzZSBpbgorICAgICAgICAjIGhh
bmRsZV9vbmVfcmVxdWVzdCwgdG8gYnlwYXNzIHRoZSBxdWV1ZSBhbmQgd3JpdGUgZGF0YSB0byB3
ZmlsZQorICAgICAgICAjIGRpcmVjdGx5LgorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCgK
KyAgICAgICAgICAgIHRhcmdldD1IdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlci5fc3RyZWFtX3dz
X3N1Yl90aHJlYWQsCisgICAgICAgICAgICBhcmdzPShzZWxmLCByZXF1ZXN0X3dyYXBwZXIsIHN0
cmVhbV9oYW5kbGVyLCBxdWV1ZSkKKyAgICAgICAgKQorICAgICAgICB0LnN0YXJ0KCkKKworICAg
ICAgICB3aGlsZSBub3Qgc2VsZi5jbG9zZV9jb25uZWN0aW9uOgorICAgICAgICAgICAgZnJhbWUg
PSBxdWV1ZS5nZXQoVHJ1ZSwgTm9uZSkKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmcmFt
ZSwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgICAgICB3ZmlsZS53cml0ZShmcmFtZS5kYXRh
KQorICAgICAgICAgICAgICAgIGlmIGZyYW1lLnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiZnJhbWUuc3RyZWFtX2VuZGVkIikKKyAg
ICAgICAgICAgICAgICAgICAgd2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZWxpZiBmcmFtZSBp
cyBOb25lIG9yIGlzaW5zdGFuY2UoZnJhbWUsIChTdHJlYW1SZXNldCwgU3RyZWFtRW5kZWQsIENv
bm5lY3Rpb25UZXJtaW5hdGVkKSk6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
JyglcyAtICVzKSBTdHJlYW0gUmVzZXQsIFRocmVhZCBDbG9zaW5nJyAlIChzZWxmLnVpZCwgc3Ry
ZWFtX2lkKSkKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHQuam9pbigpCisKKyAg
ICBkZWYgX3N0cmVhbV93c19zdWJfdGhyZWFkKHNlbGYsIHJlcXVlc3QsIHN0cmVhbV9oYW5kbGVy
LCBxdWV1ZSk6CisgICAgICAgIGRpc3BhdGNoZXIgPSByZXF1ZXN0Ll9kaXNwYXRjaGVyCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQor
ICAgICAgICBleGNlcHQgU3RyZWFtQ2xvc2VkRXJyb3I6CisgICAgICAgICAgICAjIHdvcmsgYXJv
dW5kIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8yNzc4
NgorICAgICAgICAgICAgIyBUaGUgc3RyZWFtIHdhcyBhbHJlYWR5IGNsb3NlZC4KKyAgICAgICAg
ICAgIHF1ZXVlLnB1dChOb25lKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc3RyZWFt
X2lkID0gc3RyZWFtX2hhbmRsZXIuaDJfc3RyZWFtX2lkCisgICAgICAgIHdpdGggc3RyZWFtX2hh
bmRsZXIuY29ubiBhcyBjb25uZWN0aW9uOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uZW5kX3N0cmVhbShzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgZGF0
YSA9IGNvbm5lY3Rpb24uZGF0YV90b19zZW5kKCkKKyAgICAgICAgICAgICAgICBzdHJlYW1faGFu
ZGxlci5yZXF1ZXN0LnNlbmRhbGwoZGF0YSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdHJlYW1DbG9z
ZWRFcnJvcjogICMgbWF5YmUgdGhlIHN0cmVhbSBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZAorICAg
ICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcXVldWUucHV0KE5vbmUpCisKICAgICBkZWYgX3N0
cmVhbV90aHJlYWQoc2VsZiwgc3RyZWFtX2lkLCBxdWV1ZSk6CiAgICAgICAgICIiIgogICAgICAg
ICBUaGlzIHRocmVhZCBwcm9jZXNzZXMgZnJhbWVzIGZvciBhIHNwZWNpZmljIHN0cmVhbS4gSXQg
d2FpdHMgZm9yIGZyYW1lcyB0byBiZSBwbGFjZWQKQEAgLTU5OSw2ICs3MjAsNyBAQCBjbGFzcyBX
ZWJUZXN0SHR0cGQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLXByb3h5LgogICAgIDpwYXJhbSByb3V0ZXJfY2xzOiBSb3V0ZXIgY2xhc3MgdG8gdXNlIHdo
ZW4gbWF0Y2hpbmcgVVJMcyB0byBoYW5kbGVycwogICAgIDpwYXJhbSBkb2Nfcm9vdDogRG9jdW1l
bnQgcm9vdCBmb3Igc2VydmluZyBmaWxlcworICAgIDpwYXJhbSB3c19kb2Nfcm9vdDogRG9jdW1l
bnQgcm9vdCBmb3Igd2Vic29ja2V0cwogICAgIDpwYXJhbSByb3V0ZXM6IExpc3Qgb2Ygcm91dGVz
IHdpdGggd2hpY2ggdG8gaW5pdGlhbGl6ZSB0aGUgcm91dGVyCiAgICAgOnBhcmFtIHJld3JpdGVy
X2NsczogQ2xhc3MgdG8gdXNlIGZvciByZXF1ZXN0IHJld3JpdGVyCiAgICAgOnBhcmFtIHJld3Jp
dGVzOiBMaXN0IG9mIHJld3JpdGVzIHdpdGggd2hpY2ggdG8gaW5pdGlhbGl6ZSB0aGUgcmV3cml0
ZXJfY2xzCkBAIC02NDEsNyArNzYzLDcgQEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9IjEyNy4wLjAuMSIsIHBvcnQ9ODAwMCwKICAgICAg
ICAgICAgICAgICAgc2VydmVyX2Nscz1Ob25lLCBoYW5kbGVyX2Nscz1IdHRwMVdlYlRlc3RSZXF1
ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxzZSwga2V5X2ZpbGU9Tm9u
ZSwgY2VydGlmaWNhdGU9Tm9uZSwgZW5jcnlwdF9hZnRlcl9jb25uZWN0PUZhbHNlLAotICAgICAg
ICAgICAgICAgICByb3V0ZXJfY2xzPVJvdXRlciwgZG9jX3Jvb3Q9b3MuY3VyZGlyLCByb3V0ZXM9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgcm91dGVyX2Nscz1Sb3V0ZXIsIGRvY19yb290PW9zLmN1
cmRpciwgd3NfZG9jX3Jvb3Q9Tm9uZSwgcm91dGVzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHJl
d3JpdGVyX2Nscz1SZXF1ZXN0UmV3cml0ZXIsIGJpbmRfYWRkcmVzcz1UcnVlLCByZXdyaXRlcz1O
b25lLAogICAgICAgICAgICAgICAgICBsYXRlbmN5PU5vbmUsIGNvbmZpZz1Ob25lLCBodHRwMj1G
YWxzZSk6CiAKQEAgLTY3Myw2ICs3OTUsNyBAQCBjbGFzcyBXZWJUZXN0SHR0cGQob2JqZWN0KToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmV3cml0ZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdzX2RvY19yb290PXdzX2RvY19yb290
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD11c2Vfc3NsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9a2V5X2ZpbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0
ZSwKQEAgLTcyNywzICs4NTAsNTQgQEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAgICAg
ICAgIHJldHVybiB1cmx1bnNwbGl0KCgiaHR0cCIgaWYgbm90IHNlbGYudXNlX3NzbCBlbHNlICJo
dHRwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6JXMiICUgKHNlbGYuaG9zdCwg
c2VsZi5wb3J0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHF1ZXJ5LCBmcmFn
bWVudCkpCisKKworY2xhc3MgX1dlYlNvY2tldENvbm5lY3Rpb24ob2JqZWN0KToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyLCByZXNwb25zZSk6CisgICAgICAgICIiIk1p
bWljIG1vZF9weXRob24gbXBfY29ubi4KKworICAgICAgICA6cGFyYW0gcmVxdWVzdF9oYW5kbGVy
OiBBIEgySGFuZGxlckNvcHkgaW5zdGFuY2UuCisKKyAgICAgICAgOnBhcmFtIHJlc3BvbnNlOiBB
IEgyUmVzcG9uc2UgaW5zdGFuY2UuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3JlcXVl
c3RfaGFuZGxlciA9IHJlcXVlc3RfaGFuZGxlcgorICAgICAgICBzZWxmLl9yZXNwb25zZSA9IHJl
c3BvbnNlCisKKyAgICAgICAgc2VsZi5yZW1vdGVfYWRkciA9IHNlbGYuX3JlcXVlc3RfaGFuZGxl
ci5jbGllbnRfYWRkcmVzcworCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBz
ZWxmLl9yZXNwb25zZS53cml0ZXIud3JpdGVfZGF0YShkYXRhLCBGYWxzZSkKKworICAgIGRlZiBy
ZWFkKHNlbGYsIGxlbmd0aCk6CisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIu
cmZpbGUucmVhZChsZW5ndGgpCisKKworY2xhc3MgX1dlYlNvY2tldFJlcXVlc3Qob2JqZWN0KToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyLCByZXNwb25zZSk6CisgICAg
ICAgICIiIk1pbWljIG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAgICA6cGFyYW0gcmVxdWVz
dF9oYW5kbGVyOiBBIEgySGFuZGxlckNvcHkgaW5zdGFuY2UuCisKKyAgICAgICAgOnBhcmFtIHJl
c3BvbnNlOiBBIEgyUmVzcG9uc2UgaW5zdGFuY2UuCisgICAgICAgICIiIgorCisgICAgICAgIHNl
bGYuY29ubmVjdGlvbiA9IF9XZWJTb2NrZXRDb25uZWN0aW9uKHJlcXVlc3RfaGFuZGxlciwgcmVz
cG9uc2UpCisgICAgICAgIHNlbGYuX3Jlc3BvbnNlID0gcmVzcG9uc2UKKworICAgICAgICBzZWxm
LnVyaSA9IHJlcXVlc3RfaGFuZGxlci5wYXRoCisgICAgICAgIHNlbGYudW5wYXJzZWRfdXJpID0g
cmVxdWVzdF9oYW5kbGVyLnBhdGgKKyAgICAgICAgc2VsZi5tZXRob2QgPSByZXF1ZXN0X2hhbmRs
ZXIuY29tbWFuZAorICAgICAgICAjIHJlYWQgaGVhZGVycyBmcm9tIHJlcXVlc3RfaGFuZGxlcgor
ICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycworICAgICAg
ICAjIHdyaXRlIGhlYWRlcnMgZGlyZWN0bHkgaW50byBIMlJlc3BvbnNlCisgICAgICAgIHNlbGYu
aGVhZGVyc19vdXQgPSByZXNwb25zZS5oZWFkZXJzCisKKyAgICAjIHByb3hpZXMgc3RhdHVzIHRv
IEgyUmVzcG9uc2UKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RhdHVzKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fcmVzcG9uc2Uuc3RhdHVzCisKKyAgICBAc3RhdHVzLnNldHRlcgorICAg
IGRlZiBzdGF0dXMoc2VsZiwgc3RhdHVzKToKKyAgICAgICAgc2VsZi5fcmVzcG9uc2Uuc3RhdHVz
ID0gc3RhdHVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKaW5kZXggNjRmNmQ1ZmIyZGIyLi44N2E4Y2M5
Y2M3ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKQEAgLTYsOCArNiw2IEBAIGltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0
aW1lZGVsdGEKIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgUFkyCi0KICMgQW1vdW50IG9m
IHRpbWUgYmV5b25kIHRoZSBwcmVzZW50IHRvIGNvbnNpZGVyIGNlcnRpZmljYXRlcyAiZXhwaXJl
ZC4iIFRoaXMKICMgYWxsb3dzIGNlcnRpZmljYXRlcyB0byBiZSBwcm9hY3RpdmVseSByZS1nZW5l
cmF0ZWQgaW4gdGhlICJidWZmZXIiIHBlcmlvZAogIyBwcmlvciB0byB0aGVpciBleGFjdCBleHBp
cmF0aW9uIHRpbWUuCkBAIC0xOCwxMSArMTYsNyBAQCBkZWYgX2Vuc3VyZV9zdHIocywgZW5jb2Rp
bmcpOgogICAgICIiIm1ha2VzIHN1cmUgcyBpcyBhbiBpbnN0YW5jZSBvZiBzdHIsIGNvbnZlcnRp
bmcgd2l0aCBlbmNvZGluZyBpZiBuZWVkZWQiIiIKICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6
CiAgICAgICAgIHJldHVybiBzCi0KLSAgICBpZiBQWTI6Ci0gICAgICAgIHJldHVybiBzLmVuY29k
ZShlbmNvZGluZykKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gcy5kZWNvZGUoZW5jb2Rpbmcp
CisgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nKQogCiAKIGNsYXNzIE9wZW5TU0wob2JqZWN0
KToKQEAgLTc5LDcgKzczLDcgQEAgY2xhc3MgT3BlblNTTChvYmplY3QpOgogICAgICAgICAjIENv
cHkgdGhlIGVudmlyb25tZW50LCBjb252ZXJ0aW5nIHRvIHBsYWluIHN0cmluZ3MuIFdpbjMyIFN0
YXJ0UHJvY2VzcwogICAgICAgICAjIGlzIHBpY2t5IGFib3V0IGFsbCB0aGUga2V5cy92YWx1ZXMg
YmVpbmcgc3RyIChvbiBib3RoIFB5Mi8zKS4KICAgICAgICAgZW52ID0ge30KLSAgICAgICAgZm9y
IGssIHYgaW4gaXRlcml0ZW1zKG9zLmVudmlyb24pOgorICAgICAgICBmb3IgaywgdiBpbiBvcy5l
bnZpcm9uLml0ZW1zKCk6CiAgICAgICAgICAgICBlbnZbX2Vuc3VyZV9zdHIoaywgInV0ZjgiKV0g
PSBfZW5zdXJlX3N0cih2LCAidXRmOCIpCiAKICAgICAgICAgaWYgc2VsZi5iYXNlX2NvbmZfcGF0
aCBpcyBub3QgTm9uZToKQEAgLTMyNCw3ICszMTgsNyBAQCBjbGFzcyBPcGVuU1NMRW52aXJvbm1l
bnQob2JqZWN0KToKICAgICAgICAgICAgIGVuZF9kYXRlX3N0ciA9IG9wZW5zc2woIng1MDkiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5vb3V0IiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi1lbmRkYXRlIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi1pbiIsIGNlcnRfcGF0aCkuc3BsaXQoIj0iLCAxKVsxXS5zdHJpcCgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItaW4iLCBjZXJ0X3BhdGgpLmRl
Y29kZSgidXRmOCIpLnNwbGl0KCI9IiwgMSlbMV0uc3RyaXAoKQogICAgICAgICAgICAgIyBOb3Qg
c3VyZSBpZiB0aGlzIHdvcmtzIGluIG90aGVyIGxvY2FsZXMKICAgICAgICAgICAgIGVuZF9kYXRl
ID0gZGF0ZXRpbWUuc3RycHRpbWUoZW5kX2RhdGVfc3RyLCAiJWIgJWQgJUg6JU06JVMgJVkgJVoi
KQogICAgICAgICAgICAgdGltZV9idWZmZXIgPSB0aW1lZGVsdGEoKipDRVJUX0VYUElSWV9CVUZG
RVIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93
cHRzZXJ2ZS9zc2x1dGlscy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODc3NWJiYjYwMjM2Li4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGls
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvc3NsdXRpbHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL2Jh
c2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL3ByZWdlbmVyYXRlZC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc3Rhc2gucHkKaW5kZXggNmIzNTE4NDc0OTFiLi42NmMyNzEzMTkxMzAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQpAQCAt
MSwxMCArMSwxMCBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGpzb24KIGltcG9ydCBvcwotaW1w
b3J0IHV1aWQKIGltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB1dWlkCisKIGZyb20gbXVsdGlwcm9j
ZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJlclByb3h5LCBCYXNlTWFuYWdlciwgRGljdFBy
b3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQogCiBmcm9tIC51dGls
cyBpbXBvcnQgaXNvbW9ycGhpY19lbmNvZGUKIApAQCAtMzIsMTMgKzMyLDE2IEBAIENsaWVudERp
Y3RNYW5hZ2VyLnJlZ2lzdGVyKCJMb2NrIikKIAogCiBjbGFzcyBTdGFzaFNlcnZlcihvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzPU5vbmUsIGF1dGhrZXk9Tm9uZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3M9Tm9uZSwgYXV0aGtleT1Ob25lLCBtcF9jb250
ZXh0PU5vbmUpOgogICAgICAgICBzZWxmLmFkZHJlc3MgPSBhZGRyZXNzCiAgICAgICAgIHNlbGYu
YXV0aGtleSA9IGF1dGhrZXkKICAgICAgICAgc2VsZi5tYW5hZ2VyID0gTm9uZQorICAgICAgICBz
ZWxmLm1wX2NvbnRleHQgPSBtcF9jb250ZXh0CiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgot
ICAgICAgICBzZWxmLm1hbmFnZXIsIHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5ID0gc3RhcnRf
c2VydmVyKHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5KQorICAgICAgICBzZWxmLm1hbmFnZXIs
IHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5ID0gc3RhcnRfc2VydmVyKHNlbGYuYWRkcmVzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmF1dGhrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tcF9jb250ZXh0KQogICAgICAgICBz
dG9yZV9lbnZfY29uZmlnKHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5KQogCiAgICAgZGVmIF9f
ZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CkBAIC02MSwxMyArNjQsMTkgQEAgZGVmIHN0
b3JlX2Vudl9jb25maWcoYWRkcmVzcywgYXV0aGtleSk6CiAgICAgb3MuZW52aXJvblsiV1BUX1NU
QVNIX0NPTkZJRyJdID0ganNvbi5kdW1wcygoYWRkcmVzcywgYXV0aGtleS5kZWNvZGUoImFzY2lp
IikpKQogCiAKLWRlZiBzdGFydF9zZXJ2ZXIoYWRkcmVzcz1Ob25lLCBhdXRoa2V5PU5vbmUpOgot
ICAgIGlmIGlzaW5zdGFuY2UoYXV0aGtleSwgdGV4dF90eXBlKToKK2RlZiBzdGFydF9zZXJ2ZXIo
YWRkcmVzcz1Ob25lLCBhdXRoa2V5PU5vbmUsIG1wX2NvbnRleHQ9Tm9uZSk6CisgICAgaWYgaXNp
bnN0YW5jZShhdXRoa2V5LCBzdHIpOgogICAgICAgICBhdXRoa2V5ID0gYXV0aGtleS5lbmNvZGUo
ImFzY2lpIikKLSAgICBtYW5hZ2VyID0gU2VydmVyRGljdE1hbmFnZXIoYWRkcmVzcywgYXV0aGtl
eSkKKyAgICBrd2FyZ3MgPSB7fQorICAgIGlmIG1wX2NvbnRleHQgaXMgbm90IE5vbmU6CisgICAg
ICAgIGt3YXJnc1siY3R4Il0gPSBtcF9jb250ZXh0CisgICAgbWFuYWdlciA9IFNlcnZlckRpY3RN
YW5hZ2VyKGFkZHJlc3MsIGF1dGhrZXksICoqa3dhcmdzKQogICAgIG1hbmFnZXIuc3RhcnQoKQog
Ci0gICAgcmV0dXJuIChtYW5hZ2VyLCBtYW5hZ2VyLl9hZGRyZXNzLCBtYW5hZ2VyLl9hdXRoa2V5
KQorICAgIGFkZHJlc3MgPSBtYW5hZ2VyLl9hZGRyZXNzCisgICAgaWYgaXNpbnN0YW5jZShhZGRy
ZXNzLCBieXRlcyk6CisgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzLmRlY29kZSgiYXNjaWkiKQor
ICAgIHJldHVybiAobWFuYWdlciwgYWRkcmVzcywgbWFuYWdlci5fYXV0aGtleSkKIAogCiBjbGFz
cyBMb2NrV3JhcHBlcihvYmplY3QpOgpAQCAtMTQ5LDcgKzE1OCw3IEBAIGNsYXNzIFN0YXNoKG9i
amVjdCk6CiAgICAgICAgICMgVGhpcyBrZXkgZm9ybWF0IGlzIHJlcXVpcmVkIHRvIHN1cHBvcnQg
dXNpbmcgdGhlIHBhdGguIFNpbmNlIHRoZSBkYXRhCiAgICAgICAgICMgcGFzc2VkIGludG8gdGhl
IHN0YXNoIGNhbiBiZSBhIERpY3RQcm94eSB3aGljaCB3b3VsZG4ndCBkZXRlY3QKICAgICAgICAg
IyBjaGFuZ2VzIHdoZW4gd3JpdGluZyB0byBhIHN1YmRpY3QuCi0gICAgICAgIGlmIGlzaW5zdGFu
Y2Uoa2V5LCBiaW5hcnlfdHlwZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBieXRlcyk6
CiAgICAgICAgICAgICAjIFVVSURzIGFyZSB3aXRoaW4gdGhlIEFTQ0lJIGNoYXJzZXQuCiAgICAg
ICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdhc2NpaScpCiAgICAgICAgIHJldHVybiAoaXNvbW9y
cGhpY19lbmNvZGUocGF0aCksIHV1aWQuVVVJRChrZXkpLmJ5dGVzKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93
cHRzZXJ2ZS91dGlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKaW5kZXggMDkxZTljMjZiN2Y2
Li5mMWY3ZGQyODZiYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93
cHRzZXJ2ZS91dGlscy5weQpAQCAtMSwyNCArMSwyNCBAQAogaW1wb3J0IHNvY2tldAotaW1wb3J0
IHN5cwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZQorCitmcm9tIC5s
b2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKIAogCiBkZWYgaXNvbW9ycGhpY19kZWNvZGUocyk6CiAg
ICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50byBhIHRleHQgc3RyaW5nIHVzaW5nIGlz
by04ODU5LTEuCiAKLSAgICBSZXR1cm5zIGB1bmljb2RlYCBpbiBQeXRob24gMiBhbmQgYHN0cmAg
aW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCi0gICAgbm8tb3AgaWYgdGhlIGFyZ3VtZW50
IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1OS0xIGlzIGNob3NlbiBiZWNhdXNlCi0g
ICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2UgY29kZSBwb2ludHMgcmFuZ2UgZnJvbSAw
eDAgdG8gMHhGRiBhbmQgdGhlCi0gICAgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0aGUgYmluYXJ5
IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJpbmcgY2FuCi0gICAgYmUgZGVjb2Rl
ZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTktMSB3aXRob3V0IGFueSBlcnJvcnMgb3Ig
ZGF0YQotICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNlcyBpc28tODg1OS0xIChvciBsYXRpbi0x
KSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIFJldHVybnMgYHN0cmAuIFRoZSBmdW5jdGlvbiBp
cyBhIG5vLW9wIGlmIHRoZSBhcmd1bWVudCBhbHJlYWR5IGhhcyBhIHRleHQKKyAgICB0eXBlLiBp
c28tODg1OS0xIGlzIGNob3NlbiBiZWNhdXNlIGl0IGlzIGFuIDgtYml0IGVuY29kaW5nIHdob3Nl
IGNvZGUKKyAgICBwb2ludHMgcmFuZ2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlIHZhbHVlcyBh
cmUgdGhlIHNhbWUgYXMgdGhlIGJpbmFyeQorICAgIHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJp
bmFyeSBzdHJpbmcgY2FuIGJlIGRlY29kZWQgaW50byBhbmQgZW5jb2RlZCBmcm9tCisgICAgaXNv
LTg4NTktMSB3aXRob3V0IGFueSBlcnJvcnMgb3IgZGF0YSBsb3NzLiBQeXRob24gMyBhbHNvIHVz
ZXMgaXNvLTg4NTktMQorICAgIChvciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgogICAg
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0
M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKICAgICAiIiIK
LSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgaWYgaXNpbnN0YW5jZShzLCBz
dHIpOgogICAgICAgICByZXR1cm4gcwogCi0gICAgaWYgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlw
ZSk6CisgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CiAgICAgICAgIHJldHVybiBzLmRlY29k
ZSgiaXNvLTg4NTktMSIpCiAKICAgICByYWlzZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUg
KGV4cGVjdGluZyBzdHJpbmctbGlrZSk6ICVyIiAlIHMpCkBAIC0yNywxNCArMjcsMTMgQEAgZGVm
IGlzb21vcnBoaWNfZGVjb2RlKHMpOgogZGVmIGlzb21vcnBoaWNfZW5jb2RlKHMpOgogICAgICIi
IkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcgaXNvLTg4
NTktMS4KIAotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2AgaW4gUHl0
aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0gICAgaWYgdGhlIGFyZ3VtZW50IGFscmVh
ZHkgaGFzIGEgYmluYXJ5IHR5cGUuIFRoaXMgaXMgdGhlIGNvdW50ZXJwYXJ0IG9mCi0gICAgaXNv
bW9ycGhpY19kZWNvZGUuCisgICAgUmV0dXJucyBgYnl0ZXNgLiBUaGUgZnVuY3Rpb24gaXMgYSBu
by1vcCBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMgYQorICAgIGJpbmFyeSB0eXBlLiBUaGlz
IGlzIHRoZSBjb3VudGVycGFydCBvZiBpc29tb3JwaGljX2RlY29kZS4KICAgICAiIiIKLSAgICBp
ZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVz
KToKICAgICAgICAgcmV0dXJuIHMKIAotICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToK
KyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CiAgICAgICAgIHJldHVybiBzLmVuY29kZSgiaXNv
LTg4NTktMSIpCiAKICAgICByYWlzZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgKGV4cGVj
dGluZyBzdHJpbmctbGlrZSk6ICVyIiAlIHMpCkBAIC0xMjAsNiArMTE5LDcgQEAgZGVmIGlzX2Jh
ZF9wb3J0KHBvcnQpOgogICAgICAgICA1MzIsICAgIyBuZXRuZXdzCiAgICAgICAgIDU0MCwgICAj
IHV1Y3AKICAgICAgICAgNTQ4LCAgICMgYWZwCisgICAgICAgIDU1NCwgICAjIHJ0c3AKICAgICAg
ICAgNTU2LCAgICMgcmVtb3RlZnMKICAgICAgICAgNTYzLCAgICMgbm50cCtzc2wKICAgICAgICAg
NTg3LCAgICMgc210cCAob3V0Z29pbmcpCkBAIC0xMjcsNiArMTI3LDggQEAgZGVmIGlzX2JhZF9w
b3J0KHBvcnQpOgogICAgICAgICA2MzYsICAgIyBsZGFwK3NzbAogICAgICAgICA5OTMsICAgIyBs
ZGFwK3NzbAogICAgICAgICA5OTUsICAgIyBwb3AzK3NzbAorICAgICAgICAxNzIwLCAgIyBoMzIz
aG9zdGNhbGwKKyAgICAgICAgMTcyMywgICMgcHB0cAogICAgICAgICAyMDQ5LCAgIyBuZnMKICAg
ICAgICAgMzY1OSwgICMgYXBwbGUtc2FzbAogICAgICAgICA0MDQ1LCAgIyBsb2NrZApAQCAtMTU0
LDkgKzE1NiwxOCBAQCBkZWYgZ2V0X3BvcnQoaG9zdD0nJyk6CiAgICAgcmV0dXJuIHBvcnQKIAog
ZGVmIGh0dHAyX2NvbXBhdGlibGUoKToKLSAgICAjIEN1cnJlbnRseSwgdGhlIEhUVFAvMi4wIHNl
cnZlciBpcyBvbmx5IHdvcmtpbmcgaW4gcHl0aG9uIDIuNy4xMCsgb3IgMy42KyBhbmQgT3BlblNT
TCAxLjAuMisKKyAgICAjIFRoZSBIVFRQLzIuMCBzZXJ2ZXIgcmVxdWlyZXMgT3BlblNTTCAxLjAu
MisgKGFuZCBQeXRob24gMy42KywgYnV0IFdQVAorICAgICMgcmVxdWlyZXMgdGhhdCBhbnl3YXkg
c28gd2UgZG9uJ3QgY2hlY2sgdGhhdCBoZXJlLikKKyAgICAjCisgICAgIyBGb3Igc3lzdGVtcyB1
c2luZyBvdGhlciBTU0wgbGlicmFyaWVzIChlLmcuIExpYnJlU1NMKSwgd2UgYXNzdW1lIHRoZXkK
KyAgICAjIGhhdmUgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0LgogICAgIGltcG9ydCBzc2wKKyAgICBp
ZiBub3Qgc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3aXRoKCJPcGVuU1NMIik6CisgICAgICAg
IGxvZ2dlciA9IGdldF9sb2dnZXIoKQorICAgICAgICBsb2dnZXIud2FybmluZygKKyAgICAgICAg
ICAgICdTa2lwcGluZyBIVFRQLzIuMCBjb21wYXRpYmlsaXR5IGNoZWNrIGFzIHN5c3RlbSBpcyBu
b3QgdXNpbmcgJworICAgICAgICAgICAgJ09wZW5TU0wgKGZvdW5kOiAlcyknICUgc3NsLk9QRU5T
U0xfVkVSU0lPTikKKyAgICAgICAgcmV0dXJuIFRydWUKKwogICAgIHNzbF92ID0gc3NsLk9QRU5T
U0xfVkVSU0lPTl9JTkZPCi0gICAgcHlfdiA9IHN5cy52ZXJzaW9uX2luZm8KLSAgICByZXR1cm4g
KCgocHlfdlswXSA9PSAyIGFuZCBweV92WzFdID09IDcgYW5kIHB5X3ZbMl0gPj0gMTApIG9yIChw
eV92WzBdID09IDMgYW5kIHB5X3ZbMV0gPj0gNikpIGFuZAotICAgICAgICAoc3NsX3ZbMF0gPT0g
MSBhbmQgKHNzbF92WzFdID09IDEgb3IgKHNzbF92WzFdID09IDAgYW5kIHNzbF92WzJdID49IDIp
KSkpCisgICAgcmV0dXJuIHNzbF92WzBdID09IDEgYW5kIChzc2xfdlsxXSA9PSAxIG9yIChzc2xf
dlsxXSA9PSAwIGFuZCBzc2xfdlsyXSA+PSAyKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2MjM0MmY5MmMxZjguLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZl
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29uZmlnLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2
ZS9jb25zdGFudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9sb2dn
ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yYW5nZXMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL3JlcXVlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9y
b3V0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JvdXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc2VydmVyLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zdGFzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3dw
dHNlcnZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3dzX2gyX2hhbmRzaGFrZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvd3NfaDJfaGFuZHNoYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYzgxM2VjYjVhMGIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS93
c19oMl9oYW5kc2hha2UucHkKQEAgLTAsMCArMSwyNDUgQEAKKyIiIlRoaXMgZmlsZSBwcm92aWRl
cyB0aGUgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgQm9vdHN0cmFwcGluZwor
V2ViU29ja2V0cyB3aXRoIEhUVFAvMiBwcm90b2NvbCAoUkZDIDg0NDEpLgorCitTcGVjaWZpY2F0
aW9uOgoraHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzg0NDEKKyIiIgorCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbQor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCisjIFRPRE86IFdlIGFyZSB1c2luZyAicHJpdmF0
ZSIgbWV0aG9kcyBvZiBweXdlYnNvY2tldC4gV2UgbWlnaHQgd2FudCB0bworIyByZWZhY3RvciBw
eXdlYnNvY2tldCB0byBleHBvc2UgdGhvc2UgbWV0aG9kcyBwdWJsaWNseS4gQWxzbywgX2dldF9v
cmlnaW4KKyMgX2NoZWNrX3ZlcnNpb24gX3NldF9wcm90b2NvbCBfcGFyc2VfZXh0ZW5zaW9ucyBh
bmQgYSBsYXJnZSBwYXJ0IG9mIGRvX2hhbmRzaGFrZQorIyBhcmUgaWRlbnRpY2FsIHdpdGggaHli
aSBoYW5kc2hha2UuIFdlIG5lZWQgc29tZSByZWZhY3RvcmluZyB0byBnZXQgcmVtb3ZlIHRoYXQK
KyMgY29kZSBkdXBsaWNhdGlvbi4KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IGdldF9leHRlbnNpb25fcHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hh
a2UuX2Jhc2UgaW1wb3J0IGdldF9tYW5kYXRvcnlfaGVhZGVyCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV90b2tlbl9saXN0Citmcm9tIG1v
ZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX21hbmRhdG9yeV9o
ZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRh
dGVfc3VicHJvdG9jb2wKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgVmVyc2lvbkV4Y2VwdGlvbgorCisjIERlZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2Vk
IGZyZXF1ZW50bHkuCitfVkVSU0lPTl9MQVRFU1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVT
VAorX1ZFUlNJT05fTEFURVNUX1NUUklORyA9IHN0cihfVkVSU0lPTl9MQVRFU1QpCitfU1VQUE9S
VEVEX1ZFUlNJT05TID0gWworICAgIF9WRVJTSU9OX0xBVEVTVCwKK10KKworCitkZWYgY2hlY2tf
Y29ubmVjdF9tZXRob2QocmVxdWVzdCk6CisgICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gdSdDT05O
RUNUJzoKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdNZXRob2QgaXMgbm90IENP
Tk5FQ1Q6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisKK2NsYXNzIFdzSDJIYW5kc2hha2VyKG9i
amVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNoZXIpOgorICAg
ICAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJv
dG9jb2wgKFJGQyA2NDU1KS4KKworICAgICAgICA6cGFyYW0gcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgorCisgICAgICAgIDpwYXJhbSBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRj
aC5EaXNwYXRjaGVyKS4KKworICAgICAgICBXc0gySGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1
dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgZHVyaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9
IGRpc3BhdGNoZXIKKworICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3JzX3JlcXVlc3Rl
ZChzZWxmKToKKyAgICAgICAgcHJvY2Vzc29ycyA9IFtdCisgICAgICAgIGlmIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3Ig
ZXh0ZW5zaW9uX3JlcXVlc3QgaW4gc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9u
czoKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgPSBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihl
eHRlbnNpb25fcmVxdWVzdCkKKyAgICAgICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJl
cXVlc3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNz
b3IpCisgICAgICAgIHJldHVybiBwcm9jZXNzb3JzCisKKyAgICBkZWYgZG9faGFuZHNoYWtlKHNl
bGYpOgorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVhc29uID0gTm9uZQorCisgICAgICAgICMgUGFyc2lu
Zy4KKworICAgICAgICBjaGVja19jb25uZWN0X21ldGhvZChzZWxmLl9yZXF1ZXN0KQorCisgICAg
ICAgIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgJzpwcm90b2NvbCcs
ICd3ZWJzb2NrZXQnKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVzb3VyY2UgPSBzZWxm
Ll9yZXF1ZXN0LnVyaQorCisgICAgICAgIGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVl
c3QsICdhdXRob3JpdHknKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNl
bGYuX2NoZWNrX3ZlcnNpb24oKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2dl
dF9vcmlnaW4oKQorICAgICAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29sKCkKKyAgICAgICAgICAg
IHNlbGYuX3BhcnNlX2V4dGVuc2lvbnMoKQorCisgICAgICAgICAgICAjIFNldHVwIGV4dGVuc2lv
biBwcm9jZXNzb3JzLgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25fcHJv
Y2Vzc29ycyA9IHNlbGYuX2dldF9leHRlbnNpb25fcHJvY2Vzc29yc19yZXF1ZXN0ZWQoKQorCisg
ICAgICAgICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVycy4gVGhlIGV4dHJhIGhhbmRzaGFrZSBo
YW5kbGVyIG1heSBhZGQgaGVhZGVyCisgICAgICAgICAgICAjIGRhdGEgYXMgbmFtZS92YWx1ZSBw
YWlycyB0byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0IGFwcGVuZHMKKyAgICAgICAgICAgICMg
dGhlbSB0byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4KKyAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3QuZXh0cmFfaGVhZGVycyA9IFtdCisKKyAgICAgICAgICAgICMgRXh0cmEgaGFuZHNoYWtlIGhh
bmRsZXIgbWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29ycy4KKyAgICAgICAgICAgIHNlbGYuX2Rp
c3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBw
cm9jZXNzb3JzID0gWworICAgICAgICAgICAgICAgIHByb2Nlc3NvcgorICAgICAgICAgICAgICAg
IGZvciBwcm9jZXNzb3IgaW4gc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycwor
ICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBpcyBub3QgTm9uZQorICAgICAgICAgICAgXQor
CisgICAgICAgICAgICAjIEFzayBlYWNoIHByb2Nlc3NvciBpZiB0aGVyZSBhcmUgZXh0ZW5zaW9u
cyBvbiB0aGUgcmVxdWVzdCB3aGljaAorICAgICAgICAgICAgIyBjYW5ub3QgY28tZXhpc3QuIFdo
ZW4gcHJvY2Vzc29yIGRlY2lkZWQgb3RoZXIgcHJvY2Vzc29ycyBjYW5ub3QKKyAgICAgICAgICAg
ICMgY28tZXhpc3Qgd2l0aCBpdCwgdGhlIHByb2Nlc3NvciBtYXJrcyB0aGVtIChvciBpdHNlbGYp
IGFzCisgICAgICAgICAgICAjICJpbmFjdGl2ZSIuIFRoZSBmaXJzdCBleHRlbnNpb24gcHJvY2Vz
c29yIGhhcyB0aGUgcmlnaHQgdG8KKyAgICAgICAgICAgICMgbWFrZSB0aGUgZmluYWwgY2FsbC4K
KyAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcmV2ZXJzZWQocHJvY2Vzc29ycyk6CisgICAg
ICAgICAgICAgICAgaWYgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzb3IuY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9jZXNzb3JzKAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykKKyAgICAgICAgICAgIHByb2Nlc3NvcnMg
PSBbCisgICAgICAgICAgICAgICAgcHJvY2Vzc29yIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29y
cyBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCkKKyAgICAgICAgICAgIF0KKworICAgICAgICAgICAg
YWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisKKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb25zID0g
U3RyZWFtT3B0aW9ucygpCisKKyAgICAgICAgICAgIGZvciBpbmRleCwgcHJvY2Vzc29yIGluIGVu
dW1lcmF0ZShwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlz
X2FjdGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2Uo
KQorICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgICAgICAjIFJlamVjdGVkLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uX3Jl
c3BvbnNlKQorCisgICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25z
KHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICAgICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0
aGUgZm9sbG93aW5nIGNvbXByZXNzaW9uIGV4dGVuc2lvbnMuCisgICAgICAgICAgICAgICAgZm9y
IGogaW4gcmFuZ2UoaW5kZXggKyAxLCBsZW4ocHJvY2Vzc29ycykpOgorICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFsc2UpCisKKyAgICAgICAgICAgIGlmIGxl
bihhY2NlcHRlZF9leHRlbnNpb25zKSA+IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC53c19leHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5zaW9ucworICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgJ0V4dGVuc2lvbnMgYWNjZXB0
ZWQ6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcChjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyLm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucykpKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBOb25lCisKKyAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfc3RyZWFtID0gc2VsZi5fY3JlYXRlX3N0cmVhbShzdHJl
YW1fb3B0aW9ucykKKworICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRf
cHJvdG9jb2xzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qu
d3NfcHJvdG9jb2wgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2V4dHJhX2hhbmRzaGFrZSBt
dXN0IGNob29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAnd3NfcmVxdWVzdGVkX3Byb3RvY29scyBhbmQgc2V0IGl0IHRvIHdzX3Byb3RvY29sJykKKyAg
ICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmLl9yZXF1ZXN0LndzX3Byb3Rv
Y29sKQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdWJwcm90b2NvbCBh
Y2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX3Byb3RvY29sKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAn
d3NfcHJvdG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhlIGNsaWVudCBkaWRuXCd0ICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBzdWJwcm90b2NvbCcpCisKKyAgICAgICAg
ICAgIHNlbGYuX3ByZXBhcmVfaGFuZHNoYWtlX3Jlc3BvbnNlKCkKKyAgICAgICAgZXhjZXB0IEhh
bmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgbm90IGUuc3RhdHVzOgorICAg
ICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJhZCByZXF1ZXN0IGJ5IGRlZmF1bHQuCisg
ICAgICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QK
KyAgICAgICAgICAgIHJhaXNlIGUKKworICAgIGRlZiBfZ2V0X29yaWdpbihzZWxmKToKKyAgICAg
ICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgnb3JpZ2luJykKKyAgICAg
ICAgaWYgb3JpZ2luIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Ns
aWVudCByZXF1ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2luIGhlYWRlcicpCisgICAgICAgIHNlbGYu
X3JlcXVlc3Qud3Nfb3JpZ2luID0gb3JpZ2luCisKKyAgICBkZWYgX2NoZWNrX3ZlcnNpb24oc2Vs
Zik6CisgICAgICAgIHNlY193ZWJzb2NrZXRfdmVyc2lvbl9oZWFkZXIgPSAnc2VjLXdlYnNvY2tl
dC12ZXJzaW9uJworICAgICAgICB2ZXJzaW9uID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5f
cmVxdWVzdCwgc2VjX3dlYnNvY2tldF92ZXJzaW9uX2hlYWRlcikKKyAgICAgICAgaWYgdmVyc2lv
biA9PSBfVkVSU0lPTl9MQVRFU1RfU1RSSU5HOgorICAgICAgICAgICAgcmV0dXJuIF9WRVJTSU9O
X0xBVEVTVAorCisgICAgICAgIGlmIHZlcnNpb24uZmluZCgnLCcpID49IDA6CisgICAgICAgICAg
ICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ011bHRpcGxlIHZl
cnNpb25zICglcikgYXJlIG5vdCBhbGxvd2VkIGZvciBoZWFkZXIgJXMnICUKKyAgICAgICAgICAg
ICAgICAodmVyc2lvbiwgc2VjX3dlYnNvY2tldF92ZXJzaW9uX2hlYWRlciksCisgICAgICAgICAg
ICAgICAgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKyAgICAgICAgcmFp
c2UgVmVyc2lvbkV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgdmVyc2lvbiAlciBmb3IgaGVhZGVyICVz
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHNlY193ZWJzb2Nr
ZXRfdmVyc2lvbl9oZWFkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBv
cnRlZF92ZXJzaW9ucz0nLCAnLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hcChzdHIsIF9TVVBQT1JURURfVkVSU0lPTlMpKSkKKworICAgIGRlZiBfc2V0X3Byb3Rv
Y29sKHNlbGYpOgorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQorCisg
ICAgICAgIHByb3RvY29sX2hlYWRlciA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoJ3Nl
Yy13ZWJzb2NrZXQtcHJvdG9jb2wnKQorCisgICAgICAgIGlmIHByb3RvY29sX2hlYWRlciBpcyBO
b25lOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzID0g
Tm9uZQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1
ZXN0ZWRfcHJvdG9jb2xzID0gcGFyc2VfdG9rZW5fbGlzdCgKKyAgICAgICAgICAgIHByb3RvY29s
X2hlYWRlcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdWJwcm90b2NvbHMgcmVxdWVz
dGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Jl
cXVlc3RlZF9wcm90b2NvbHMpCisKKyAgICBkZWYgX3BhcnNlX2V4dGVuc2lvbnMoc2VsZik6Cisg
ICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgn
c2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVh
ZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9
IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5z
aW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKKyAgICAgICAgZXhjZXB0
IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBz
ZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAor
ICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX2NyZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFt
X29wdGlvbnMpOgorICAgICAgICByZXR1cm4gU3RyZWFtKHNlbGYuX3JlcXVlc3QsIHN0cmVhbV9v
cHRpb25zKQorCisgICAgZGVmIF9wcmVwYXJlX2hhbmRzaGFrZV9yZXNwb25zZShzZWxmKToKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC5zdGF0dXMgPSAyMDAKKworICAgICAgICBzZWxmLl9yZXF1ZXN0
LmhlYWRlcnNfb3V0Wyd1cGdyYWRlJ10gPSBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRQor
ICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfb3V0Wydjb25uZWN0aW9uJ10gPSBjb21tb24u
VVBHUkFERV9DT05ORUNUSU9OX1RZUEUKKworICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3By
b3RvY29sIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5oZWFkZXJzX291
dFsnc2VjLXdlYnNvY2tldC1wcm90b2NvbCddID0gc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbAor
CisgICAgICAgIGlmIChzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5k
CisgICAgICAgICAgICAgICAgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykgIT0gMCk6
CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfb3V0WydzZWMtd2Vic29ja2V0LWV4
dGVuc2lvbnMnXSA9IGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbnMpCisKKyAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0
CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6
CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfb3V0W25hbWVdID0gdmFsdWUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5Cmlu
ZGV4IDVhY2Q3ODEyYTc3ZC4uNmRmNTUzNWVmMzQyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkKQEAgLTQ5OSw2ICs0OTksOCBAQCBj
bGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAgICAgICAgIGV4Y2Vw
dCBJT0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICAgICAgcHJpbnQoYXJn
cykKKwogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgYWx3YXlzIGJlIHN0cmluZ2lmeWluZyB0
aGUgYXJncywgYnV0IGNhbGxlcnMgd2hvIHBhc3Mgc2hlbGw9VHJ1ZQogICAgICAgICAjIGV4cGVj
dCB0aGF0IHRoZSBleGFjdCBieXRlcyBwYXNzZWQgd2lsbCBnZXQgcGFzc2VkIHRvIHRoZSBzaGVs
bCAoZXZlbiBpZiB0aGV5J3JlIHdyb25nbHkgZW5jb2RlZCkuCiAgICAgICAgICMgc2hlbGw9VHJ1
ZSBpcyB3cm9uZyBmb3IgbWFueSBvdGhlciByZWFzb25zLCBhbmQgd2Ugc2hvdWxkIHJlbW92ZSB0
aGlzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2
ZXJzL3dlYnNvY2tldF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2ZXIucHkKaW5kZXggMmMwMWM4ZDcxYzY5Li5mYTk1
NmQyMDgzMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2ZXIucHkKQEAgLTExOCwxNyArMTE4
LDEyIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAgICAg
b3V0cHV0X2xvZyA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9vdXRwdXRfZGlyLCBsb2df
ZmlsZV9uYW1lICsgIi1vdXQudHh0IikKICAgICAgICAgc2VsZi5fd3NvdXQgPSBzZWxmLl9maWxl
c3lzdGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKG91dHB1dF9sb2cpCiAKLSAgICAgICAg
IyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTQ2OiBT
aG91bGQgYmUgdXNpbmcgdGhlIHNhbWUgdmVyc2lvbiBvZiBQeXRob24gcnVuLXdlYmtpdC10ZXN0
cyBpcwotICAgICAgICBweXRob25faW50ZXJwID0gc3lzLmV4ZWN1dGFibGUKLSAgICAgICAgaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICAgICAgICAgIHB5dGhvbl9pbnRlcnAgPSAn
cHl0aG9uMicKLQogICAgICAgICB3cHRfdG9vbHNfYmFzZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLl9sYXlvdXRfdGVzdHMsICJpbXBvcnRlZCIsICJ3M2MiLCAid2ViLXBsYXRmb3JtLXRl
c3RzIiwgInRvb2xzIikKLSAgICAgICAgcHl3ZWJzb2NrZXRfYmFzZSA9IHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbih3cHRfdG9vbHNfYmFzZSwgInB5d2Vic29ja2V0IikKKyAgICAgICAgcHl3ZWJzb2Nr
ZXRfYmFzZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbih3cHRfdG9vbHNfYmFzZSwgInRoaXJkX3Bh
cnR5IiwgInB5d2Vic29ja2V0MyIpCiAgICAgICAgIHB5d2Vic29ja2V0X2RlcHMgPSBbc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKHdwdF90b29sc19iYXNlLCAidGhpcmRfcGFydHkiLCAic2l4IildCiAg
ICAgICAgIHB5d2Vic29ja2V0X3NjcmlwdCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihweXdlYnNv
Y2tldF9iYXNlLCAnbW9kX3B5d2Vic29ja2V0JywgJ3N0YW5kYWxvbmUucHknKQogICAgICAgICBz
dGFydF9jbWQgPSBbCi0gICAgICAgICAgICBweXRob25faW50ZXJwLCAnLXUnLCBweXdlYnNvY2tl
dF9zY3JpcHQsCisgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwgJy11JywgcHl3ZWJzb2NrZXRf
c2NyaXB0LAogICAgICAgICAgICAgJy0tc2VydmVyLWhvc3QnLCAnbG9jYWxob3N0JywKICAgICAg
ICAgICAgICctLXBvcnQnLCBzdHIoc2VsZi5fcG9ydCksCiAgICAgICAgICAgICAjIEZJWE1FOiBE
b24ndCB3ZSBoYXZlIGEgc2VsZi5fcG9ydF9vYmoubGF5b3V0X3Rlc3RfcGF0aD8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422172</attachid>
            <date>2021-03-03 19:07:37 -0800</date>
            <delta_ts>2021-03-03 19:07:37 -0800</delta_ts>
            <desc>Patch for webkitpy</desc>
            <filename>bug-222703-webkitpy.diff</filename>
            <type>text/plain</type>
            <size>1583</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMv
d2Vic29ja2V0X3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5weQppbmRleCAyYzAxYzhkNzFjNjkuLmZhOTU2ZDIw
ODMyOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2Vy
dmVycy93ZWJzb2NrZXRfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5weQpAQCAtMTE4LDE3ICsxMTgsMTIg
QEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBvdXRw
dXRfbG9nID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxvZ19maWxl
X25hbWUgKyAiLW91dC50eHQiKQogICAgICAgICBzZWxmLl93c291dCA9IHNlbGYuX2ZpbGVzeXN0
ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcob3V0cHV0X2xvZykKIAotICAgICAgICAjIEZJ
WE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NDY6IFNob3Vs
ZCBiZSB1c2luZyB0aGUgc2FtZSB2ZXJzaW9uIG9mIFB5dGhvbiBydW4td2Via2l0LXRlc3RzIGlz
Ci0gICAgICAgIHB5dGhvbl9pbnRlcnAgPSBzeXMuZXhlY3V0YWJsZQotICAgICAgICBpZiBzeXMu
dmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAgICAgICAgICAgcHl0aG9uX2ludGVycCA9ICdweXRo
b24yJwotCiAgICAgICAgIHdwdF90b29sc19iYXNlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNl
bGYuX2xheW91dF90ZXN0cywgImltcG9ydGVkIiwgInczYyIsICJ3ZWItcGxhdGZvcm0tdGVzdHMi
LCAidG9vbHMiKQotICAgICAgICBweXdlYnNvY2tldF9iYXNlID0gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHdwdF90b29sc19iYXNlLCAicHl3ZWJzb2NrZXQiKQorICAgICAgICBweXdlYnNvY2tldF9i
YXNlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHdwdF90b29sc19iYXNlLCAidGhpcmRfcGFydHki
LCAicHl3ZWJzb2NrZXQzIikKICAgICAgICAgcHl3ZWJzb2NrZXRfZGVwcyA9IFtzZWxmLl9maWxl
c3lzdGVtLmpvaW4od3B0X3Rvb2xzX2Jhc2UsICJ0aGlyZF9wYXJ0eSIsICJzaXgiKV0KICAgICAg
ICAgcHl3ZWJzb2NrZXRfc2NyaXB0ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHB5d2Vic29ja2V0
X2Jhc2UsICdtb2RfcHl3ZWJzb2NrZXQnLCAnc3RhbmRhbG9uZS5weScpCiAgICAgICAgIHN0YXJ0
X2NtZCA9IFsKLSAgICAgICAgICAgIHB5dGhvbl9pbnRlcnAsICctdScsIHB5d2Vic29ja2V0X3Nj
cmlwdCwKKyAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLCAnLXUnLCBweXdlYnNvY2tldF9zY3Jp
cHQsCiAgICAgICAgICAgICAnLS1zZXJ2ZXItaG9zdCcsICdsb2NhbGhvc3QnLAogICAgICAgICAg
ICAgJy0tcG9ydCcsIHN0cihzZWxmLl9wb3J0KSwKICAgICAgICAgICAgICMgRklYTUU6IERvbid0
IHdlIGhhdmUgYSBzZWxmLl9wb3J0X29iai5sYXlvdXRfdGVzdF9wYXRoPwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>